ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGVkNGZjOTIuLjk0YWQxM2IgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQogMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgogODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMwpAQCAtMTY1LDMgKzE2NiwxMCBAQAogMzdhMDdjZWU1OTY5ZTZkMzY3MjU4MzE4N2E3M2NmNjM2ZmYyOGUxYiB2My41LjEKIDY4ZmVlYzY0ODhiMjYzMjdhODVhNjM0NjA1ZGQyOGVjYTRkYWE1ZjEgdjMuNS4ycmMxCiA0ZGVmMmEyOTAxYTU2MThlYTQ1YmNjOGYyYTE0MTFlZjMzYWYxOGFkIHYzLjUuMgorNTg5NmRhMzcyZmIwNDRlMzg1OTVmYjc0NDk1ZGUxZTFlN2M4ZmIzYyB2My42LjBhMQorMzc4ODkzNDIzNTUyMjNlMmZjMTQzOGRlM2RjN2ZmY2Q2MjVjNjBmNyB2My42LjBhMgorZjNlZGYxM2RjMzM5Yjg5NDJhZTZiMzA5NzcxYWIxOTdkZDhjZTZmYSB2My42LjBhMworMDE3Y2YyNjA5MzZiNDQ0Nzg4YzliNjcxZDE5NWI3YmZkODNkYmQyNSB2My42LjBhNAorNWIwY2E0ZWQ1ZTJmMDY2OWQ3NmVjZTdlZjk3NWM1NDQ1ODBmMTJiNCB2My42LjBiMQorYjlmYWRjN2QxYzNmOWMzYzc3ZjMyZjM1YWZiZTFhMWNjMzgwNzBlNiB2My42LjBiMgorODM0NWUwNjZjMGVkNzEzYzNlNTEwY2JjOGZhZmMxYzM4ZDZkMzA2YiB2My42LjBiMwpkaWZmIC0tZ2l0IGEvRG9jL01ha2VmaWxlIGIvRG9jL01ha2VmaWxlCmluZGV4IDEwYzMyODguLjkxZjkzN2YgMTAwNjQ0Ci0tLSBhL0RvYy9NYWtlZmlsZQorKysgYi9Eb2MvTWFrZWZpbGUKQEAgLTE1Myw3ICsxNTMsNyBAQAogCWNwIC1wUFIgYnVpbGQvZXB1Yi9QeXRob24uZXB1YiBkaXN0L3B5dGhvbi0kKERJU1RWRVJTSU9OKS1kb2NzLmVwdWIKIAogY2hlY2s6Ci0JJChQWVRIT04pIHRvb2xzL3JzdGxpbnQucHkgLWkgdG9vbHMKKwkkKFBZVEhPTikgdG9vbHMvcnN0bGludC5weSAtaSB0b29scyAtaSB2ZW52CiAKIHNlcnZlOgogCS4uL1Rvb2xzL3NjcmlwdHMvc2VydmUucHkgYnVpbGQvaHRtbApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2FyZy5yc3QgYi9Eb2MvYy1hcGkvYXJnLnJzdAppbmRleCAxMTIzOTcyLi5lOGU3ZTBkIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvYXJnLnJzdAorKysgYi9Eb2MvYy1hcGkvYXJnLnJzdApAQCAtMjIzLDggKzIyMyw3IEBACiAgICA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlYCB3aWxsIHVzZSB0aGlzIGxvY2F0aW9uIGFzIHRoZSBidWZmZXIgYW5kIGludGVycHJldCB0aGUKICAgIGluaXRpYWwgdmFsdWUgb2YgKlwqYnVmZmVyX2xlbmd0aCogYXMgdGhlIGJ1ZmZlciBzaXplLiAgSXQgd2lsbCB0aGVuIGNvcHkgdGhlCiAgICBlbmNvZGVkIGRhdGEgaW50byB0aGUgYnVmZmVyIGFuZCBOVUwtdGVybWluYXRlIGl0LiAgSWYgdGhlIGJ1ZmZlciBpcyBub3QgbGFyZ2UKLSAgIGVub3VnaCwgYSA6ZXhjOmBUeXBlRXJyb3JgIHdpbGwgYmUgc2V0LgotICAgTm90ZTogc3RhcnRpbmcgZnJvbSBQeXRob24gMy42IGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSBzZXQuCisgICBlbm91Z2gsIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSBzZXQuCiAKICAgIEluIGJvdGggY2FzZXMsICpcKmJ1ZmZlcl9sZW5ndGgqIGlzIHNldCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBlbmNvZGVkIGRhdGEKICAgIHdpdGhvdXQgdGhlIHRyYWlsaW5nIE5VTCBieXRlLgpAQCAtMjY2LDE1ICsyNjUsMTIgQEAKICAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZ2Agd2l0aG91dAogICAgb3ZlcmZsb3cgY2hlY2tpbmcuCiAKLWBgTGBgICg6Y2xhc3M6YGludGApIFtQWV9MT05HX0xPTkddCi0gICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AuICBUaGlzIGZvcm1hdCBpcyBvbmx5Ci0gICBhdmFpbGFibGUgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmBfaW50NjRgIG9uCi0gICBXaW5kb3dzKS4KK2BgTGBgICg6Y2xhc3M6YGludGApIFtsb25nIGxvbmddCisgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AuCiAKLWBgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBQWV9MT05HX0xPTkddCitgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZyBsb25nXQogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgCi0gICB3aXRob3V0IG92ZXJmbG93IGNoZWNraW5nLiAgVGhpcyBmb3JtYXQgaXMgb25seSBhdmFpbGFibGUgb24gcGxhdGZvcm1zIHRoYXQKLSAgIHN1cHBvcnQgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCAob3IgOmM6dHlwZTpgdW5zaWduZWQgX2ludDY0YCBvbiBXaW5kb3dzKS4KKyAgIHdpdGhvdXQgb3ZlcmZsb3cgY2hlY2tpbmcuCiAKIGBgbmBgICg6Y2xhc3M6YGludGApIFtQeV9zc2l6ZV90XQogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmBQeV9zc2l6ZV90YC4KQEAgLTQyNCw4ICs0MjAsMTUgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNvbnN0IGNoYXIgKmZvcm1hdCwgY2hhciAqa2V5d29yZHNbXSwgLi4uKQogCiAgICBQYXJzZSB0aGUgcGFyYW1ldGVycyBvZiBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYm90aCBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkCi0gICBwYXJhbWV0ZXJzIGludG8gbG9jYWwgdmFyaWFibGVzLiAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M7IG9uIGZhaWx1cmUsIGl0Ci0gICByZXR1cm5zIGZhbHNlIGFuZCByYWlzZXMgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKyAgIHBhcmFtZXRlcnMgaW50byBsb2NhbCB2YXJpYWJsZXMuICBUaGUgKmtleXdvcmRzKiBhcmd1bWVudCBpcyBhCisgICAqTlVMTCotdGVybWluYXRlZCBhcnJheSBvZiBrZXl3b3JkIHBhcmFtZXRlciBuYW1lcy4gIEVtcHR5IG5hbWVzIGRlbm90ZQorICAgOnJlZjpgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgPHBvc2l0aW9uYWwtb25seV9wYXJhbWV0ZXI+YC4KKyAgIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzOyBvbiBmYWlsdXJlLCBpdCByZXR1cm5zIGZhbHNlIGFuZCByYWlzZXMgdGhlCisgICBhcHByb3ByaWF0ZSBleGNlcHRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciA6cmVmOmBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycworICAgICAgPHBvc2l0aW9uYWwtb25seV9wYXJhbWV0ZXI+YC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNvbnN0IGNoYXIgKmZvcm1hdCwgY2hhciAqa2V5d29yZHNbXSwgdmFfbGlzdCB2YXJncykKQEAgLTU4OCwxNSArNTkxLDExIEBACiAgICBgYGtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZ10KICAgICAgIENvbnZlcnQgYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCi0gICBgYExgYCAoOmNsYXNzOmBpbnRgKSBbUFlfTE9OR19MT05HXQotICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4gT25seSBhdmFpbGFibGUKLSAgICAgIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgbG9uZyBsb25nYCAob3IgOmM6dHlwZTpgX2ludDY0YCBvbgotICAgICAgV2luZG93cykuCisgICBgYExgYCAoOmNsYXNzOmBpbnRgKSBbbG9uZyBsb25nXQorICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAotICAgYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIFBZX0xPTkdfTE9OR10KLSAgICAgIENvbnZlcnQgYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuIE9ubHkKLSAgICAgIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgKG9yCi0gICAgICA6Yzp0eXBlOmB1bnNpZ25lZCBfaW50NjRgIG9uIFdpbmRvd3MpLgorICAgYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIGxvbmcgbG9uZ10KKyAgICAgIENvbnZlcnQgYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKICAgIGBgbmBgICg6Y2xhc3M6YGludGApIFtQeV9zc2l6ZV90XQogICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgUHlfc3NpemVfdGAgdG8gYSBQeXRob24gaW50ZWdlci4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdCBiL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAppbmRleCAxOWNiYjNiLi5lZTUxNzkxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CkBAIC0zMDYsNiArMzA2LDEzIEBACiAgICA6bW9kOmB3YXJuaW5nc2AgbW9kdWxlIGFuZCB0aGUgOm9wdGlvbjpgLVdgIG9wdGlvbiBpbiB0aGUgY29tbWFuZCBsaW5lCiAgICBkb2N1bWVudGF0aW9uLiAgVGhlcmUgaXMgbm8gQyBBUEkgZm9yIHdhcm5pbmcgY29udHJvbC4KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKKworICAgTXVjaCBsaWtlIDpjOmZ1bmM6YFB5RXJyX1NldEltcG9ydEVycm9yYCBidXQgdGhpcyBmdW5jdGlvbiBhbGxvd3MgZm9yCisgICBzcGVjaWZ5aW5nIGEgc3ViY2xhc3Mgb2YgOmV4YzpgSW1wb3J0RXJyb3JgIHRvIHJhaXNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdChQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICptZXNzYWdlLCBQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSkKIApAQCAtMzM0LDYgKzM0MSwxNCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gYzpmdW5jdGlvbjo6IGludCBQeUVycl9SZXNvdXJjZVdhcm5pbmcoUHlPYmplY3QgKnNvdXJjZSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCisKKyAgIEZ1bmN0aW9uIHNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlFcnJfV2FybkZvcm1hdGAsIGJ1dCAqY2F0ZWdvcnkqIGlzCisgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGFuZCBwYXNzICpzb3VyY2UqIHRvIDpmdW5jOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFF1ZXJ5aW5nIHRoZSBlcnJvciBpbmRpY2F0b3IKID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtNzc0LDYgKzc4OSw4IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX0ltcG9ydEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YEltcG9ydEVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX01vZHVsZU5vdEZvdW5kRXJyb3JgICAgICB8IDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX0luZGV4RXJyb3JgICAgICAgICAgICAgICB8IDpleGM6YEluZGV4RXJyb3JgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCiB8IDpjOmRhdGE6YFB5RXhjX0ludGVycnVwdGVkRXJyb3JgICAgICAgICB8IDpleGM6YEludGVycnVwdGVkRXJyb3JgICAgICAgICAgfCAgICAgICAgICB8CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW5pdC5yc3QgYi9Eb2MvYy1hcGkvaW5pdC5yc3QKaW5kZXggNzBiOThhZS4uMjk2NWJjOSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2luaXQucnN0CisrKyBiL0RvYy9jLWFwaS9pbml0LnJzdApAQCAtMjUsNyArMjUsNyBAQAogICAgICAgdHJpcGxlOiBtb2R1bGU7IHNlYXJjaDsgcGF0aAogICAgICAgc2luZ2xlOiBQeVN5c19TZXRBcmd2KCkKICAgICAgIHNpbmdsZTogUHlTeXNfU2V0QXJndkV4KCkKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKIAogICAgSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGludGVycHJldGVyLiAgSW4gYW4gYXBwbGljYXRpb24gZW1iZWRkaW5nICBQeXRob24sIHRoaXMKICAgIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHVzaW5nIGFueSBvdGhlciBQeXRob24vQyBBUEkgZnVuY3Rpb25zOyB3aXRoIHRoZQpAQCAtMzQsNyArMzQsNyBAQAogICAgbW9kdWxlcyA6bW9kOmBidWlsdGluc2AsIDptb2Q6YF9fbWFpbl9fYCBhbmQgOm1vZDpgc3lzYC4gIEl0IGFsc28gaW5pdGlhbGl6ZXMKICAgIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGggKGBgc3lzLnBhdGhgYCkuIEl0IGRvZXMgbm90IHNldCBgYHN5cy5hcmd2YGA7IHVzZQogICAgOmM6ZnVuYzpgUHlTeXNfU2V0QXJndkV4YCBmb3IgdGhhdC4gIFRoaXMgaXMgYSBuby1vcCB3aGVuIGNhbGxlZCBmb3IgYSBzZWNvbmQgdGltZQotICAgKHdpdGhvdXQgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlOyBpdCBpcyBhCisgICAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGZpcnN0KS4gIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZTsgaXQgaXMgYQogICAgZmF0YWwgZXJyb3IgaWYgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxzLgogCiAgICAuLiBub3RlOjoKQEAgLTUyLDE5ICs1MiwyMCBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeV9Jc0luaXRpYWxpemVkKCkKIAogICAgUmV0dXJuIHRydWUgKG5vbnplcm8pIHdoZW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciBoYXMgYmVlbiBpbml0aWFsaXplZCwgZmFsc2UKLSAgICh6ZXJvKSBpZiBub3QuICBBZnRlciA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgaXMgY2FsbGVkLCB0aGlzIHJldHVybnMgZmFsc2UgdW50aWwKKyAgICh6ZXJvKSBpZiBub3QuICBBZnRlciA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBpcyBjYWxsZWQsIHRoaXMgcmV0dXJucyBmYWxzZSB1bnRpbAogICAgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgaXMgY2FsbGVkIGFnYWluLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0ZpbmFsaXplKCkKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfRmluYWxpemVFeCgpCiAKICAgIFVuZG8gYWxsIGluaXRpYWxpemF0aW9ucyBtYWRlIGJ5IDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgIGFuZCBzdWJzZXF1ZW50IHVzZSBvZgogICAgUHl0aG9uL0MgQVBJIGZ1bmN0aW9ucywgYW5kIGRlc3Ryb3kgYWxsIHN1Yi1pbnRlcnByZXRlcnMgKHNlZQogICAgOmM6ZnVuYzpgUHlfTmV3SW50ZXJwcmV0ZXJgIGJlbG93KSB0aGF0IHdlcmUgY3JlYXRlZCBhbmQgbm90IHlldCBkZXN0cm95ZWQgc2luY2UKICAgIHRoZSBsYXN0IGNhbGwgdG8gOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAuICBJZGVhbGx5LCB0aGlzIGZyZWVzIGFsbCBtZW1vcnkKICAgIGFsbG9jYXRlZCBieSB0aGUgUHl0aG9uIGludGVycHJldGVyLiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gY2FsbGVkIGZvciBhIHNlY29uZAotICAgdGltZSAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgIGFnYWluIGZpcnN0KS4gIFRoZXJlIGlzIG5vIHJldHVybgotICAgdmFsdWU7IGVycm9ycyBkdXJpbmcgZmluYWxpemF0aW9uIGFyZSBpZ25vcmVkLgorICAgdGltZSAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgIGFnYWluIGZpcnN0KS4gIE5vcm1hbGx5IHRoZQorICAgcmV0dXJuIHZhbHVlIGlzIDAuICBJZiB0aGVyZSB3ZXJlIGVycm9ycyBkdXJpbmcgZmluYWxpemF0aW9uCisgICAoZmx1c2hpbmcgYnVmZmVyZWQgZGF0YSksIC0xIGlzIHJldHVybmVkLgogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGZvciBhIG51bWJlciBvZiByZWFzb25zLiAgQW4gZW1iZWRkaW5nIGFwcGxpY2F0aW9uCiAgICBtaWdodCB3YW50IHRvIHJlc3RhcnQgUHl0aG9uIHdpdGhvdXQgaGF2aW5nIHRvIHJlc3RhcnQgdGhlIGFwcGxpY2F0aW9uIGl0c2VsZi4KQEAgLTgzLDcgKzg0LDE1IEBACiAgICBmcmVlZC4gIFNvbWUgbWVtb3J5IGFsbG9jYXRlZCBieSBleHRlbnNpb24gbW9kdWxlcyBtYXkgbm90IGJlIGZyZWVkLiAgU29tZQogICAgZXh0ZW5zaW9ucyBtYXkgbm90IHdvcmsgcHJvcGVybHkgaWYgdGhlaXIgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBjYWxsZWQgbW9yZQogICAgdGhhbiBvbmNlOyB0aGlzIGNhbiBoYXBwZW4gaWYgYW4gYXBwbGljYXRpb24gY2FsbHMgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYW5kCi0gICA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgbW9yZSB0aGFuIG9uY2UuCisgICA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBtb3JlIHRoYW4gb25jZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRmluYWxpemUoKQorCisgICBUaGlzIGlzIGEgYmFja3dhcmRzLWNvbXBhdGlibGUgdmVyc2lvbiBvZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCB0aGF0CisgICBkaXNyZWdhcmRzIHRoZSByZXR1cm4gdmFsdWUuCiAKIAogUHJvY2Vzcy13aWRlIHBhcmFtZXRlcnMKQEAgLTExMSw3ICsxMjAsNyBAQAogICAgTm90ZSB0aGF0IDpkYXRhOmBzeXMuc3RkZXJyYCBhbHdheXMgdXNlcyB0aGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yCiAgICBoYW5kbGVyLCByZWdhcmRsZXNzIG9mIHRoaXMgKG9yIGFueSBvdGhlcikgc2V0dGluZy4KIAotICAgSWYgOmM6ZnVuYzpgUHlfRmluYWxpemVgIGlzIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgdG8gYmUgY2FsbGVkCisgICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBpcyBjYWxsZWQsIHRoaXMgZnVuY3Rpb24gd2lsbCBuZWVkIHRvIGJlIGNhbGxlZAogICAgYWdhaW4gaW4gb3JkZXIgdG8gYWZmZWN0IHN1YnNlcXVlbnQgY2FsbHMgdG8gOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAuCiAKICAgIFJldHVybnMgYGAwYGAgaWYgc3VjY2Vzc2Z1bCwgYSBub256ZXJvIHZhbHVlIG9uIGVycm9yIChlLmcuIGNhbGxpbmcgYWZ0ZXIgdGhlCkBAIC05MjIsNyArOTMxLDcgQEAKICAgIGVudHJ5LikKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBQeV9Jbml0aWFsaXplKCkKIAogICAgRXh0ZW5zaW9uIG1vZHVsZXMgYXJlIHNoYXJlZCBiZXR3ZWVuIChzdWItKWludGVycHJldGVycyBhcyBmb2xsb3dzOiB0aGUgZmlyc3QKQEAgLTkzMiw3ICs5NDEsNyBAQAogICAgYW5kIGZpbGxlZCB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGlzIGNvcHk7IHRoZSBleHRlbnNpb24ncyBgYGluaXRgYCBmdW5jdGlvbiBpcwogICAgbm90IGNhbGxlZC4gIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHdoYXQgaGFwcGVucyB3aGVuIGFuIGV4dGVuc2lvbiBpcwogICAgaW1wb3J0ZWQgYWZ0ZXIgdGhlIGludGVycHJldGVyIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmUtaW5pdGlhbGl6ZWQgYnkgY2FsbGluZwotICAgOmM6ZnVuYzpgUHlfRmluYWxpemVgIGFuZCA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYDsgaW4gdGhhdCBjYXNlLCB0aGUgZXh0ZW5zaW9uJ3MKKyAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGFuZCA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYDsgaW4gdGhhdCBjYXNlLCB0aGUgZXh0ZW5zaW9uJ3MKICAgIGBgaW5pdG1vZHVsZWBgIGZ1bmN0aW9uICppcyogY2FsbGVkIGFnYWluLgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogY2xvc2UoKSAoaW4gbW9kdWxlIG9zKQpAQCAtOTQwLDE0ICs5NDksMTQgQEAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRW5kSW50ZXJwcmV0ZXIoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKQogCi0gICAuLiBpbmRleDo6IHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgLi4gaW5kZXg6OiBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogCiAgICBEZXN0cm95IHRoZSAoc3ViLSlpbnRlcnByZXRlciByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gdGhyZWFkIHN0YXRlLiBUaGUgZ2l2ZW4KICAgIHRocmVhZCBzdGF0ZSBtdXN0IGJlIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZS4gIFNlZSB0aGUgZGlzY3Vzc2lvbiBvZiB0aHJlYWQKICAgIHN0YXRlcyBiZWxvdy4gIFdoZW4gdGhlIGNhbGwgcmV0dXJucywgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlIGlzICpOVUxMKi4gIEFsbAogICAgdGhyZWFkIHN0YXRlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnRlcnByZXRlciBhcmUgZGVzdHJveWVkLiAgKFRoZSBnbG9iYWwKICAgIGludGVycHJldGVyIGxvY2sgbXVzdCBiZSBoZWxkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYW5kIGlzIHN0aWxsIGhlbGQKLSAgIHdoZW4gaXQgcmV0dXJucy4pICA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgd2lsbCBkZXN0cm95IGFsbCBzdWItaW50ZXJwcmV0ZXJzIHRoYXQKKyAgIHdoZW4gaXQgcmV0dXJucy4pICA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCB3aWxsIGRlc3Ryb3kgYWxsIHN1Yi1pbnRlcnByZXRlcnMgdGhhdAogICAgaGF2ZW4ndCBiZWVuIGV4cGxpY2l0bHkgZGVzdHJveWVkIGF0IHRoYXQgcG9pbnQuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2ludHJvLnJzdCBiL0RvYy9jLWFwaS9pbnRyby5yc3QKaW5kZXggYmMzYTc1Mi4uNzQ2ODFkMiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2ludHJvLnJzdAorKysgYi9Eb2MvYy1hcGkvaW50cm8ucnN0CkBAIC02NCw5ICs2NCwxMCBAQAogbG9jYXRlZCBpbiB0aGUgZGlyZWN0b3JpZXMgOmZpbGU6YHtwcmVmaXh9L2luY2x1ZGUvcHl0aG9udmVyc2lvbi9gIGFuZAogOmZpbGU6YHtleGVjX3ByZWZpeH0vaW5jbHVkZS9weXRob252ZXJzaW9uL2AsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgYW5kCiA6ZW52dmFyOmBleGVjX3ByZWZpeGAgYXJlIGRlZmluZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycyB0byBQeXRob24ncwotOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0IGFuZCAqdmVyc2lvbiogaXMgYGBzeXMudmVyc2lvbls6M11gYC4gIE9uIFdpbmRvd3MsCi10aGUgaGVhZGVycyBhcmUgaW5zdGFsbGVkIGluIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlYCwgd2hlcmUgOmVudnZhcjpgcHJlZml4YCBpcwotdGhlIGluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgc3BlY2lmaWVkIHRvIHRoZSBpbnN0YWxsZXIuCis6cHJvZ3JhbTpgY29uZmlndXJlYCBzY3JpcHQgYW5kICp2ZXJzaW9uKiBpcworYGAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml1gYC4gIE9uIFdpbmRvd3MsIHRoZSBoZWFkZXJzIGFyZSBpbnN0YWxsZWQKK2luIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlYCwgd2hlcmUgOmVudnZhcjpgcHJlZml4YCBpcyB0aGUgaW5zdGFsbGF0aW9uCitkaXJlY3Rvcnkgc3BlY2lmaWVkIHRvIHRoZSBpbnN0YWxsZXIuCiAKIFRvIGluY2x1ZGUgdGhlIGhlYWRlcnMsIHBsYWNlIGJvdGggZGlyZWN0b3JpZXMgKGlmIGRpZmZlcmVudCkgb24geW91ciBjb21waWxlcidzCiBzZWFyY2ggcGF0aCBmb3IgaW5jbHVkZXMuICBEbyAqbm90KiBwbGFjZSB0aGUgcGFyZW50IGRpcmVjdG9yaWVzIG9uIHRoZSBzZWFyY2gKQEAgLTU3OCw5ICs1NzksOSBAQAogYXBwbGljYXRpb24gbWF5IHdhbnQgdG8gc3RhcnQgb3ZlciAobWFrZSBhbm90aGVyIGNhbGwgdG8KIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgKSBvciB0aGUgYXBwbGljYXRpb24gaXMgc2ltcGx5IGRvbmUgd2l0aCBpdHMgIHVzZSBvZgogUHl0aG9uIGFuZCB3YW50cyB0byBmcmVlIG1lbW9yeSBhbGxvY2F0ZWQgYnkgUHl0aG9uLiAgVGhpcyBjYW4gYmUgYWNjb21wbGlzaGVkCi1ieSBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYC4gIFRoZSBmdW5jdGlvbiA6YzpmdW5jOmBQeV9Jc0luaXRpYWxpemVkYCByZXR1cm5zCitieSBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgLiAgVGhlIGZ1bmN0aW9uIDpjOmZ1bmM6YFB5X0lzSW5pdGlhbGl6ZWRgIHJldHVybnMKIHRydWUgaWYgUHl0aG9uIGlzIGN1cnJlbnRseSBpbiB0aGUgaW5pdGlhbGl6ZWQgc3RhdGUuICBNb3JlIGluZm9ybWF0aW9uIGFib3V0Ci10aGVzZSBmdW5jdGlvbnMgaXMgZ2l2ZW4gaW4gYSBsYXRlciBjaGFwdGVyLiBOb3RpY2UgdGhhdCA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAKK3RoZXNlIGZ1bmN0aW9ucyBpcyBnaXZlbiBpbiBhIGxhdGVyIGNoYXB0ZXIuIE5vdGljZSB0aGF0IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgCiBkb2VzICpub3QqIGZyZWUgYWxsIG1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgZS5nLiBtZW1vcnkKIGFsbG9jYXRlZCBieSBleHRlbnNpb24gbW9kdWxlcyBjdXJyZW50bHkgY2Fubm90IGJlIHJlbGVhc2VkLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbG9uZy5yc3QgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKaW5kZXggNjhmNmE4ZS4uZjU5MmNiNiAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2xvbmcucnN0CisrKyBiL0RvYy9jLWFwaS9sb25nLnJzdApAQCAtNjIsMTMgKzYyLDEzIEBACiAgICAqTlVMTCogb24gZmFpbHVyZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HIHYpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tTG9uZ0xvbmcobG9uZyBsb25nIHYpCiAKICAgIFJldHVybiBhIG5ldyA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgIG9iamVjdCBmcm9tIGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgLCBvciAqTlVMTCoKICAgIG9uIGZhaWx1cmUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgUFlfTE9OR19MT05HIHYpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBsb25nIGxvbmcgdikKIAogICAgUmV0dXJuIGEgbmV3IDpjOnR5cGU6YFB5TG9uZ09iamVjdGAgb2JqZWN0IGZyb20gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AsCiAgICBvciAqTlVMTCogb24gZmFpbHVyZS4KQEAgLTE0OCw3ICsxNDgsNyBAQAogICAgb2NjdXJzIHNldCAqXCpvdmVyZmxvdyogdG8gYGAwYGAgYW5kIHJldHVybiBgYC0xYGAgYXMgdXN1YWwuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqb2JqKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IE92ZXJmbG93RXJyb3IgKGJ1aWx0LWluIGV4Y2VwdGlvbikKQEAgLTE2MSw3ICsxNjEsNyBAQAogICAgOmM6dHlwZTpgbG9uZ2AuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICpvYmosIGludCAqb3ZlcmZsb3cpCisuLiBjOmZ1bmN0aW9uOjogbG9uZyBsb25nIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKm9iaiwgaW50ICpvdmVyZmxvdykKIAogICAgUmV0dXJuIGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHJlcHJlc2VudGF0aW9uIG9mICpvYmoqLiAgSWYgKm9iaiogaXMgbm90IGFuCiAgICBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgLCBmaXJzdCBjYWxsIGl0cyA6bWV0aDpgX19pbnRfX2AgbWV0aG9kCkBAIC0yMTAsMTYgKzIxMCwxNiBAQAogICAgOmM6dHlwZTpgc2l6ZV90YC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgUFlfTE9OR19MT05HIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnB5bG9uZykKKy4uIGM6ZnVuY3Rpb246OiB1bnNpZ25lZCBsb25nIGxvbmcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqcHlsb25nKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IE92ZXJmbG93RXJyb3IgKGJ1aWx0LWluIGV4Y2VwdGlvbikKIAotICAgUmV0dXJuIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBQWV9MT05HX0xPTkdgIHJlcHJlc2VudGF0aW9uIG9mICpweWxvbmcqLgotICAgKnB5bG9uZyogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgLgorICAgUmV0dXJuIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIHJlcHJlc2VudGF0aW9uIG9mICpweWxvbmcqLiAgKnB5bG9uZyoKKyAgIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YC4KIAogICAgUmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaWYgdGhlIHZhbHVlIG9mICpweWxvbmcqIGlzIG91dCBvZiByYW5nZSBmb3IgYW4KLSAgIDpjOnR5cGU6YHVuc2lnbmVkIFBZX0xPTkdfTE9OR2AuCisgICA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgICAgQSBuZWdhdGl2ZSAqcHlsb25nKiBub3cgcmFpc2VzIDpleGM6YE92ZXJmbG93RXJyb3JgLCBub3QgOmV4YzpgVHlwZUVycm9yYC4KQEAgLTIzNSw3ICsyMzUsNyBAQAogICAgcmV0dXJuIHRoZSByZWR1Y3Rpb24gb2YgdGhhdCB2YWx1ZSBtb2R1bG8gYGBVTE9OR19NQVggKyAxYGAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIGxvbmcgbG9uZyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQogCiAgICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKm9iaiouICBJZiAqb2JqKgogICAgaXMgbm90IGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAsIGZpcnN0IGNhbGwgaXRzIDptZXRoOmBfX2ludF9fYApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeS5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdAppbmRleCAyOTBlZjA5Li4zZmY1NDUyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdApAQCAtODUsOSArODUsMTIgQEAKIAogLi4gc2VlYWxzbzo6CiAKKyAgIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZQorICAgdGhlIG1lbW9yeSBhbGxvY2F0b3JzIHVzZWQgYnkgUHl0aG9uLgorCiAgICBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHByaW50Ci0gICBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZAotICAgb24gc2h1dGRvd24uCisgICBzdGF0aXN0aWNzIG9mIHRoZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGV2ZXJ5IHRpbWUgYQorICAgbmV3IHB5bWFsbG9jIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCiAKIAogUmF3IE1lbW9yeSBJbnRlcmZhY2UKQEAgLTE2MiwxNSArMTY1LDE3IEBACiBiZWhhdmlvciB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcywgYXJlIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGluZyBhbmQgcmVsZWFzaW5nCiBtZW1vcnkgZnJvbSB0aGUgUHl0aG9uIGhlYXAuCiAKLVRoZSBkZWZhdWx0IG1lbW9yeSBibG9jayBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLTpjOmZ1bmM6YG1hbGxvY2AsIDpjOmZ1bmM6YGNhbGxvY2AsIDpjOmZ1bmM6YHJlYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYDsgY2FsbAotYGBtYWxsb2MoMSlgYCAob3IgYGBjYWxsb2MoMSwgMSlgYCkgd2hlbiByZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCitCeSBkZWZhdWx0LCB0aGVzZSBmdW5jdGlvbnMgdXNlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAuCiAKIC4uIHdhcm5pbmc6OgogCiAgICBUaGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBtdXN0IGJlIGhlbGQgd2hlbiB1c2luZyB0aGVzZQogICAgZnVuY3Rpb25zLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBUaGUgZGVmYXVsdCBhbGxvY2F0b3IgaXMgbm93IHB5bWFsbG9jIGluc3RlYWQgb2Ygc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9NYWxsb2Moc2l6ZV90IG4pCiAKICAgIEFsbG9jYXRlcyAqbiogYnl0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIG9mIHR5cGUgOmM6dHlwZTpgdm9pZFwqYCB0byB0aGUKQEAgLTI5MiwxNSArMjk3LDMyIEBACiAKICAgIEVudW0gdXNlZCB0byBpZGVudGlmeSBhbiBhbGxvY2F0b3IgZG9tYWluLiBEb21haW5zOgogCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9SQVcKIAorICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAorCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9NRU0KKworICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fRnJlZWAKKworICAgLi4gYzp2YXI6OiBQWU1FTV9ET01BSU5fT0JKCisKKyAgICAgIEZ1bmN0aW9uczoKKworICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCkBAIC0zMjUsNDMgKzM0Nyw2MiBAQAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIAotICAgU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgotICAgZnVuY3Rpb25zOgotCi0gICAtIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAotICAgLSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKLSAgIC0gOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgZnVuY3Rpb25zLgogCiAgICBOZXdseSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhDQmBgLCBmcmVlZCBtZW1vcnkgaXMKLSAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLiBBZGRpdGlvbmFsIGNoZWNrczoKKyAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLgogCi0gICAtIGRldGVjdCBBUEkgdmlvbGF0aW9ucywgZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIGJ1ZmZlcgorICAgUnVudGltZSBjaGVja3M6CisKKyAgIC0gRGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgYnVmZmVyCiAgICAgIGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgCi0gICAtIGRldGVjdCB3cml0ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKGJ1ZmZlciB1bmRlcmZsb3cpCi0gICAtIGRldGVjdCB3cml0ZSBhZnRlciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKGJ1ZmZlciBvdmVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorICAgLSBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbgorICAgICBhbGxvY2F0b3IgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDoKKyAgICAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDoKKyAgICAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkCiAKLSAgIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBjb21waWxlZCBpcyBkZWJ1ZyBtb2RlLgorICAgT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyB1c2UgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZQorICAgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSB0cmFjZWJhY2sgaXMgb25seQorICAgZGlzcGxheWVkIGlmIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIHRoZQorICAgbWVtb3J5IGJsb2NrIHdhcyB0cmFjZWQuCisKKyAgIFRoZXNlIGhvb2tzIGFyZSBpbnN0YWxsZWQgYnkgZGVmYXVsdCBpZiBQeXRob24gaXMgY29tcGlsZWQgaW4gZGVidWcKKyAgIG1vZGUuIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGluc3RhbGwKKyAgIGRlYnVnIGhvb2tzIG9uIGEgUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGFsc28gd29ya3Mgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgIE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgbm93IHVzZSA6bW9kOmB0cmFjZW1hbGxvY2AgdG8gZ2V0IHRoZSB0cmFjZWJhY2sKKyAgICAgIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSBkZWJ1ZyBob29rcyBub3cgYWxzbyBjaGVjaworICAgICAgaWYgdGhlIEdJTCBpcyBoZWxkIHdoZW4gZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGFuZAorICAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgZG9tYWlucyBhcmUgY2FsbGVkLgogCiAKLUN1c3RvbWl6ZSBQeU9iamVjdCBBcmVuYSBBbGxvY2F0b3IKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy4uIF9weW1hbGxvYzoKIAotUHl0aG9uIGhhcyBhICpweW1hbGxvYyogYWxsb2NhdG9yIGZvciBhbGxvY2F0aW9ucyBzbWFsbGVyIHRoYW4gNTEyIGJ5dGVzLiBUaGlzCi1hbGxvY2F0b3IgaXMgb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkKLW1hcHBpbmdzIGNhbGxlZCAiYXJlbmFzIiB3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8KLTpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIKLXRoYW4gNTEyIGJ5dGVzLiAgKnB5bWFsbG9jKiBpcyB0aGUgZGVmYXVsdCBhbGxvY2F0b3IgdXNlZCBieQotOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYC4KK1RoZSBweW1hbGxvYyBhbGxvY2F0b3IKKz09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIGRlZmF1bHQgYXJlbmEgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CitQeXRob24gaGFzIGEgKnB5bWFsbG9jKiBhbGxvY2F0b3Igb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIChzbWFsbGVyIG9yIGVxdWFsCit0byA1MTIgYnl0ZXMpIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkgbWFwcGluZ3MgY2FsbGVkICJhcmVuYXMiCit3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCBhbmQKKzpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIgdGhhbiA1MTIgYnl0ZXMuCisKKypweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9mIHRoZSA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6Cis6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OgorOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgZG9tYWlucy4KKworVGhlIGFyZW5hIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAqIDpjOmZ1bmM6YFZpcnR1YWxBbGxvY2AgYW5kIDpjOmZ1bmM6YFZpcnR1YWxGcmVlYCBvbiBXaW5kb3dzLAogKiA6YzpmdW5jOmBtbWFwYCBhbmQgOmM6ZnVuYzpgbXVubWFwYCBpZiBhdmFpbGFibGUsCiAqIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgIG90aGVyd2lzZS4KIAorQ3VzdG9taXplIHB5bWFsbG9jIEFyZW5hIEFsbG9jYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gYzp0eXBlOjogUHlPYmplY3RBcmVuYUFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0IGIvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CmluZGV4IDNlOGE5MGMuLjgzN2FjN2QgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKQEAgLTE1MCw4ICsxNTAsOSBAQAogVGhlIDphdHRyOmBtbF9mbGFnc2AgZmllbGQgaXMgYSBiaXRmaWVsZCB3aGljaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGZsYWdzLgogVGhlIGluZGl2aWR1YWwgZmxhZ3MgaW5kaWNhdGUgZWl0aGVyIGEgY2FsbGluZyBjb252ZW50aW9uIG9yIGEgYmluZGluZwogY29udmVudGlvbi4gIE9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gZmxhZ3MsIG9ubHkgOmNvbnN0OmBNRVRIX1ZBUkFSR1NgIGFuZAotOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBjYW4gYmUgY29tYmluZWQuIEFueSBvZiB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZsYWdzCi1jYW4gYmUgY29tYmluZWQgd2l0aCBhIGJpbmRpbmcgZmxhZy4KKzpjb25zdDpgTUVUSF9LRVlXT1JEU2AgY2FuIGJlIGNvbWJpbmVkIChidXQgbm90ZSB0aGF0IDpjb25zdDpgTUVUSF9LRVlXT1JEU2AKK2Fsb25lIGlzIGVxdWl2YWxlbnQgdG8gYGBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTYGApLiBBbnkgb2YgdGhlIGNhbGxpbmcKK2NvbnZlbnRpb24gZmxhZ3MgY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBiaW5kaW5nIGZsYWcuCiAKIAogLi4gZGF0YTo6IE1FVEhfVkFSQVJHUwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N5cy5yc3QgYi9Eb2MvYy1hcGkvc3lzLnJzdAppbmRleCAzZDgzYjI3Li4wMzVjZGMxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvc3lzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3lzLnJzdApAQCAtNSw2ICs1LDE3IEBACiBPcGVyYXRpbmcgU3lzdGVtIFV0aWxpdGllcwogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBmb3IgKnBhdGgqLiBJZiB0aGUgb2JqZWN0IGlzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsIHRoZW4gaXRzIHJlZmVyZW5jZSBjb3VudCBpcworICAgaW5jcmVtZW50ZWQuIElmIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLAorICAgdGhlbiA6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIGlzIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gT3RoZXJ3aXNlIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkCisgICBhbmQgYGBOVUxMYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIApAQCAtMjEyLDIwICsyMjMsMjQgQEAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0V4aXQoaW50IHN0YXR1cykKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBleGl0KCkKIAotICAgRXhpdCB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjYWxscyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgYW5kIHRoZW4gY2FsbHMgdGhlCi0gICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4KKyAgIEV4aXQgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgY2FsbHMgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgYW5kIHRoZW4gY2FsbHMgdGhlCisgICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4gIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgCisgICBpbmRpY2F0ZXMgYW4gZXJyb3IsIHRoZSBleGl0IHN0YXR1cyBpcyBzZXQgdG8gMTIwLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgRXJyb3JzIGZyb20gZmluYWxpemF0aW9uIG5vIGxvbmdlciBpZ25vcmVkLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSAoKSkKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBjbGVhbnVwIGZ1bmN0aW9ucwogCi0gICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplYC4gIFRoZSBjbGVhbnVwCisgICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgLiAgVGhlIGNsZWFudXAKICAgIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0dXJuIG5vIHZhbHVlLiAgQXQgbW9zdAogICAgMzIgY2xlYW51cCBmdW5jdGlvbnMgY2FuIGJlIHJlZ2lzdGVyZWQuICBXaGVuIHRoZSByZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCwKICAgIDpjOmZ1bmM6YFB5X0F0RXhpdGAgcmV0dXJucyBgYDBgYDsgb24gZmFpbHVyZSwgaXQgcmV0dXJucyBgYC0xYGAuICBUaGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGNjMjMwNjAuLjlkZWEyZDUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTQ0MCw3ICs0NDAsNiBAQAogICAgLi4gJSBiZWNhdXNlIG5vdCBhbGwgY29tcGlsZXJzIHN1cHBvcnQgdGhlICV6IHdpZHRoIG1vZGlmaWVyIC0tIHdlIGZha2UgaXQKICAgIC4uICUgd2hlbiBuZWNlc3NhcnkgdmlhIGludGVycG9sYXRpbmcgUFlfRk9STUFUX1NJWkVfVC4KICAgIC4uICUgU2ltaWxhciBjb21tZW50cyBhcHBseSB0byB0aGUgJWxsIHdpZHRoIG1vZGlmaWVyIGFuZAotICAgLi4gJSBQWV9GT1JNQVRfTE9OR19MT05HLgogCiAgICAuLiB0YWJ1bGFyY29sdW1uczo6IHxsfGx8THwKIApAQCAtNTI1LDExICs1MjQsNiBAQAogICAgY29waWVkIGFzLWlzIHRvIHRoZSByZXN1bHQgc3RyaW5nLCBhbmQgYW55IGV4dHJhIGFyZ3VtZW50cyBkaXNjYXJkZWQuCiAKICAgIC4uIG5vdGU6OgotCi0gICAgICBUaGUgYCIlbGxkImAgYW5kIGAiJWxsdSJgIGZvcm1hdCBzcGVjaWZpZXJzIGFyZSBvbmx5IGF2YWlsYWJsZQotICAgICAgd2hlbiA6Y29uc3Q6YEhBVkVfTE9OR19MT05HYCBpcyBkZWZpbmVkLgotCi0gICAuLiBub3RlOjoKICAgICAgIFRoZSB3aWR0aCBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgY2hhcmFjdGVycyByYXRoZXIgdGhhbiBieXRlcy4KICAgICAgIFRoZSBwcmVjaXNpb24gZm9ybWF0dGVyIHVuaXQgaXMgbnVtYmVyIG9mIGJ5dGVzIGZvciBgYCIlcyJgYCBhbmQKICAgICAgIGBgIiVWImBgIChpZiB0aGUgYGBQeU9iamVjdCpgYCBhcmd1bWVudCBpcyBOVUxMKSwgYW5kIGEgbnVtYmVyIG9mCkBAIC04MTEsMzggKzgwNSw0NyBAQAogIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogVG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZSBuYW1lcyBhbmQgb3RoZXIgZW52aXJvbm1lbnQgc3RyaW5ncywKLTpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1FbmNvZGluZ2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVuY29kaW5nLCBhbmQKLWBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkuIFRvCi1lbmNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKKzpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlbmNvZGluZywgYW5kCis6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVycm9yIGhhbmRsZXIKKyg6cGVwOmAzODNgIGFuZCA6cGVwOmA1MjlgKS4gVG8gZW5jb2RlIGZpbGUgbmFtZXMgdG8gOmNsYXNzOmBieXRlc2AgZHVyaW5nCithcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nCis6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogb2JqLCB2b2lkKiByZXN1bHQpCiAKLSAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgdG8gOmNsYXNzOmBieXRlc2AgdXNpbmcKKyAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgLS0gb2J0YWluZWQgZGlyZWN0bHkgb3IKKyAgIHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0byA6Y2xhc3M6YGJ5dGVzYCB1c2luZwogICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGA7IDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KICAgICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeUJ5dGVzT2JqZWN0KmAgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzCiAgICBubyBsb25nZXIgdXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCi1UbyBkZWNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246CitUbyBkZWNvZGUgZmlsZSBuYW1lcyB0byA6Y2xhc3M6YHN0cmAgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYAorY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0RlY29kZXJgIGFzIHRoZQorY29udmVyc2lvbiBmdW5jdGlvbjoKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBvYmosIHZvaWQqIHJlc3VsdCkKIAotICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGRlY29kZSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzIHRvIDpjbGFzczpgc3RyYCB1c2luZwotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgOyA6Y2xhc3M6YHN0cmAgb2JqZWN0cyBhcmUgb3V0cHV0Ci0gICBhcy1pcy4gKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdCpgIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQKLSAgIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisgICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZGVjb2RlIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgLS0gb2J0YWluZWQgZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0bworICAgOmNsYXNzOmBzdHJgIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYDsgOmNsYXNzOmBzdHJgCisgICBvYmplY3RzIGFyZSBvdXRwdXQgYXMtaXMuICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3QqYCB3aGljaAorICAgbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKICAgIERlY29kZSBhIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBhbmQgdGhlCi0gICBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MuCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgpAQCAtODU2LDI4ICs4NTksMjggQEAKIAogICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNvbnN0IGNoYXIgKnMpCiAKICAgIERlY29kZSBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdXNpbmcgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AKLSAgIGFuZCB0aGUgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgorICAgYW5kIHRoZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCiAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGlmIHlvdSBrbm93IHRoZSBzdHJpbmcgbGVuZ3RoLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agd2l0aCB0aGUKLSAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cywgYW5kIHJldHVybgorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIsIGFuZCByZXR1cm4KICAgIDpjbGFzczpgYnl0ZXNgLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgbWF5IGNvbnRhaW4KICAgIG51bGwgYnl0ZXMuCiAKQEAgLTg5NCw2ICs4OTcsOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogd2NoYXJfdCBTdXBwb3J0CiAiIiIiIiIiIiIiIiIiIiIKZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IGUzODgxOTUuLjhiNDY5ZjQgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtOTIxLDYgKzkyMSw5IEBACiBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yOmludDo6OgogUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcjpQeU9iamVjdCo6bzowOgogCitQeU9TX0ZTUGF0aDpQeU9iamVjdCo6OisxOgorUHlPU19GU1BhdGg6UHlPYmplY3QqOnBhdGg6MDoKKwogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6OisxOgogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6Y2FsbGFibGVfb2JqZWN0OjA6CiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0KjphcmdzOjA6CmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggNjQwMzNkYy4uYWIyZjYxNiAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtNjcsNyArNjcsOSBAQAogICAgICAgIFB5X0luaXRpYWxpemUoKTsKICAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbnQoJ1RvZGF5IGlzJywgY3RpbWUodGltZSgpKSlcbiIpOwotICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgICAgZXhpdCgxMjApOworICAgICAgIH0KICAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOwogICAgICAgIHJldHVybiAwOwogICAgfQpAQCAtNzYsNyArNzgsNyBAQAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgdG8gaW5mb3JtIHRoZSBpbnRlcnByZXRlciBhYm91dCBwYXRocyB0byBQeXRob24gcnVuLXRpbWUKIGxpYnJhcmllcy4gIE5leHQsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAsIGZvbGxvd2VkIGJ5IHRoZSBleGVjdXRpb24gb2YgYSBoYXJkLWNvZGVkIFB5dGhvbiBzY3JpcHQKLXRoYXQgcHJpbnRzIHRoZSBkYXRlIGFuZCB0aW1lLiAgQWZ0ZXJ3YXJkcywgdGhlIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBjYWxsIHNodXRzCit0aGF0IHByaW50cyB0aGUgZGF0ZSBhbmQgdGltZS4gIEFmdGVyd2FyZHMsIHRoZSA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBjYWxsIHNodXRzCiB0aGUgaW50ZXJwcmV0ZXIgZG93biwgZm9sbG93ZWQgYnkgdGhlIGVuZCBvZiB0aGUgcHJvZ3JhbS4gIEluIGEgcmVhbCBwcm9ncmFtLAogeW91IG1heSB3YW50IHRvIGdldCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIGFub3RoZXIgc291cmNlLCBwZXJoYXBzIGEgdGV4dC1lZGl0b3IKIHJvdXRpbmUsIGEgZmlsZSwgb3IgYSBkYXRhYmFzZS4gIEdldHRpbmcgdGhlIFB5dGhvbiBjb2RlIGZyb20gYSBmaWxlIGNhbiBiZXR0ZXIKZGlmZiAtLWdpdCBhL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0IGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKaW5kZXggNjk0NzUzZS4uOWM1ZTIwZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKKysrIGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKQEAgLTgzOCw3ICs4MzgsOCBAQAogVG8gY29udmVydCwgZS5nLiwgdGhlIG51bWJlciAxNDQgdG8gdGhlIHN0cmluZyAnMTQ0JywgdXNlIHRoZSBidWlsdC1pbiB0eXBlCiBjb25zdHJ1Y3RvciA6ZnVuYzpgc3RyYC4gIElmIHlvdSB3YW50IGEgaGV4YWRlY2ltYWwgb3Igb2N0YWwgcmVwcmVzZW50YXRpb24sIHVzZQogdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgaGV4YCBvciA6ZnVuYzpgb2N0YC4gIEZvciBmYW5jeSBmb3JtYXR0aW5nLCBzZWUKLXRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLCBlLmcuIGBgIns6MDRkfSIuZm9ybWF0KDE0NClgYCB5aWVsZHMKK3RoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9ucywKK2UuZy4gYGAiezowNGR9Ii5mb3JtYXQoMTQ0KWBgIHlpZWxkcwogYGAnMDE0NCdgYCBhbmQgYGAiezouM2Z9Ii5mb3JtYXQoMS4wLzMuMClgYCB5aWVsZHMgYGAnMC4zMzMnYGAuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggNDViNzk0Zi4uZjgwYjZkZiAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC03MTgsNiArNzE4LDggQEAKIAogICAgICAgICAgICBkZWYgZnVuYyhmb28sIGJhcj1Ob25lKTogLi4uCiAKKyAgICAgIC4uIF9wb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyOgorCiAgICAgICAqIDpkZm46YHBvc2l0aW9uYWwtb25seWA6IHNwZWNpZmllcyBhbiBhcmd1bWVudCB0aGF0IGNhbiBiZSBzdXBwbGllZCBvbmx5CiAgICAgICAgIGJ5IHBvc2l0aW9uLiAgUHl0aG9uIGhhcyBubyBzeW50YXggZm9yIGRlZmluaW5nIHBvc2l0aW9uYWwtb25seQogICAgICAgICBwYXJhbWV0ZXJzLiAgSG93ZXZlciwgc29tZSBidWlsdC1pbiBmdW5jdGlvbnMgaGF2ZSBwb3NpdGlvbmFsLW9ubHkKQEAgLTc3Niw2ICs3NzgsMTYgQEAKICAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAogICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KIAorICAgcGF0aC1saWtlIG9iamVjdAorICAgICAgQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgc3lzdGVtIHBhdGguIEEgcGF0aC1saWtlIG9iamVjdCBpcyBlaXRoZXIKKyAgICAgIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgYSBwYXRoLCBvciBhbiBvYmplY3QKKyAgICAgIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wuIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzCisgICAgICB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wgY2FuIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgc3RyYCBvcgorICAgICAgOmNsYXNzOmBieXRlc2AgZmlsZSBzeXN0ZW0gcGF0aCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgb3MuZnNwYXRoYCBmdW5jdGlvbjsKKyAgICAgIDpmdW5jOmBvcy5mc2RlY29kZWAgYW5kIDpmdW5jOmBvcy5mc2VuY29kZWAgY2FuIGJlIHVzZWQgdG8gZ3VhcmFudGVlIGEKKyAgICAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCByZXN1bHQgaW5zdGVhZCwgcmVzcGVjdGl2ZWx5LiBJbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA1MTlgLgorCiAgICBwb3J0aW9uCiAgICAgICBBIHNldCBvZiBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkgKHBvc3NpYmx5IHN0b3JlZCBpbiBhIHppcCBmaWxlKQogICAgICAgdGhhdCBjb250cmlidXRlIHRvIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFzIGRlZmluZWQgaW4gOnBlcDpgNDIwYC4KQEAgLTk1MiwxMyArOTY0LDI1IEBACiAgICAgICBgYCdccidgYC4gIFNlZSA6cGVwOmAyNzhgIGFuZCA6cGVwOmAzMTE2YCwgYXMgd2VsbCBhcwogICAgICAgOmZ1bmM6YGJ5dGVzLnNwbGl0bGluZXNgIGZvciBhbiBhZGRpdGlvbmFsIHVzZS4KIAorICAgdmFyaWFibGUgYW5ub3RhdGlvbgorICAgICAgQSB0eXBlIG1ldGFkYXRhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIG1vZHVsZSBnbG9iYWwgdmFyaWFibGUgb3IKKyAgICAgIGEgY2xhc3MgYXR0cmlidXRlLiBJdHMgc3ludGF4IGlzIGV4cGxhaW5lZCBpbiBzZWN0aW9uIDpyZWY6YGFubmFzc2lnbmAuCisgICAgICBBbm5vdGF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCBzcGVjaWFsCisgICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyBvciBtb2R1bGUgb2JqZWN0IGFuZCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcKKyAgICAgIDpmdW5jOmB0eXBpbmcuZ2V0X3R5cGVfaGludHNgLgorCisgICAgICBQeXRob24gaXRzZWxmIGRvZXMgbm90IGFzc2lnbiBhbnkgcGFydGljdWxhciBtZWFuaW5nIHRvIHZhcmlhYmxlCisgICAgICBhbm5vdGF0aW9ucy4gVGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgaW50ZXJwcmV0ZWQgYnkgdGhpcmQtcGFydHkgbGlicmFyaWVzCisgICAgICBvciB0eXBlIGNoZWNraW5nIHRvb2xzLiBTZWUgOnBlcDpgNTI2YCwgOnBlcDpgNDg0YCB3aGljaCBkZXNjcmliZQorICAgICAgc29tZSBvZiB0aGVpciBwb3RlbnRpYWwgdXNlcy4KKwogICAgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgQSBjb29wZXJhdGl2ZWx5IGlzb2xhdGVkIHJ1bnRpbWUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgUHl0aG9uIHVzZXJzCiAgICAgICBhbmQgYXBwbGljYXRpb25zIHRvIGluc3RhbGwgYW5kIHVwZ3JhZGUgUHl0aG9uIGRpc3RyaWJ1dGlvbiBwYWNrYWdlcwogICAgICAgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBiZWhhdmlvdXIgb2Ygb3RoZXIgUHl0aG9uIGFwcGxpY2F0aW9ucwogICAgICAgcnVubmluZyBvbiB0aGUgc2FtZSBzeXN0ZW0uCiAKLSAgICAgIFNlZSBhbHNvIDpyZWY6YHNjcmlwdHMtcHl2ZW52YC4KKyAgICAgIFNlZSBhbHNvIDptb2Q6YHZlbnZgLgogCiAgICB2aXJ0dWFsIG1hY2hpbmUKICAgICAgIEEgY29tcHV0ZXIgZGVmaW5lZCBlbnRpcmVseSBpbiBzb2Z0d2FyZS4gIFB5dGhvbidzIHZpcnR1YWwgbWFjaGluZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdCBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKaW5kZXggM2I3OWI5Mi4uN2UxNjFhNSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAorKysgYi9Eb2MvaG93dG8vYXJncGFyc2UucnN0CkBAIC01NDcsNyArNTQ3LDggQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAicHJvZy5weSIsIGxpbmUgMTEsIGluIDxtb2R1bGU+CiAgICAgICAgaWYgYXJncy52ZXJib3NpdHkgPj0gMjoKLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IE5vbmVUeXBlKCkgPj0gaW50KCkKKyAgIFR5cGVFcnJvcjogJz49JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdOb25lVHlwZScgYW5kICdpbnQnCisKIAogKiBGaXJzdCBvdXRwdXQgd2VudCB3ZWxsLCBhbmQgZml4ZXMgdGhlIGJ1ZyB3ZSBoYWQgYmVmb3JlLgogICBUaGF0IGlzLCB3ZSB3YW50IGFueSB2YWx1ZSA+PSAyIHRvIGJlIGFzIHZlcmJvc2UgYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vY2xpbmljLnJzdCBiL0RvYy9ob3d0by9jbGluaWMucnN0CmluZGV4IGNhYTQ5NzUuLmY0MzU4ODQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9jbGluaWMucnN0CisrKyBiL0RvYy9ob3d0by9jbGluaWMucnN0CkBAIC04MjcsOSArODI3LDkgQEAKIGBgJ2knYGAgICAgIGBgaW50YGAKIGBgJ0knYGAgICAgIGBgdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSlgYAogYGAnaydgYCAgICAgYGB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSlgYAotYGAnSydgYCAgICAgYGB1bnNpZ25lZF9QWV9MT05HX0xPTkcoYml0d2lzZT1UcnVlKWBgCitgYCdLJ2BgICAgICBgYHVuc2lnbmVkX2xvbmdfbG9uZyhiaXR3aXNlPVRydWUpYGAKIGBgJ2wnYGAgICAgIGBgbG9uZ2BgCi1gYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCitgYCdMJ2BgICAgICBgYGxvbmcgbG9uZ2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAogYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggZGU2NTk1MC4uNTkzMzQxYyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICBhcmdwYXJzZS5yc3QKICAgIGlwYWRkcmVzcy5yc3QKICAgIGNsaW5pYy5yc3QKKyAgIGluc3RydW1lbnRhdGlvbi5yc3QKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QgYi9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmNhOWFhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QKQEAgLTAsMCArMSw0MDggQEAKKy4uIGhpZ2hsaWdodDo6IHNoZWxsLXNlc3Npb24KKworLi4gX2luc3RydW1lbnRhdGlvbjoKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0luc3RydW1lbnRpbmcgQ1B5dGhvbiB3aXRoIERUcmFjZSBhbmQgU3lzdGVtVGFwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis6YXV0aG9yOiBEYXZpZCBNYWxjb2xtCis6YXV0aG9yOiDFgXVrYXN6IExhbmdhCisKK0RUcmFjZSBhbmQgU3lzdGVtVGFwIGFyZSBtb25pdG9yaW5nIHRvb2xzLCBlYWNoIHByb3ZpZGluZyBhIHdheSB0byBpbnNwZWN0Cit3aGF0IHRoZSBwcm9jZXNzZXMgb24gYSBjb21wdXRlciBzeXN0ZW0gYXJlIGRvaW5nLiAgVGhleSBib3RoIHVzZQorZG9tYWluLXNwZWNpZmljIGxhbmd1YWdlcyBhbGxvd2luZyBhIHVzZXIgdG8gd3JpdGUgc2NyaXB0cyB3aGljaDoKKworICAtIGZpbHRlciB3aGljaCBwcm9jZXNzZXMgYXJlIHRvIGJlIG9ic2VydmVkCisgIC0gZ2F0aGVyIGRhdGEgZnJvbSB0aGUgcHJvY2Vzc2VzIG9mIGludGVyZXN0CisgIC0gZ2VuZXJhdGUgcmVwb3J0cyBvbiB0aGUgZGF0YQorCitBcyBvZiBQeXRob24gMy42LCBDUHl0aG9uIGNhbiBiZSBidWlsdCB3aXRoIGVtYmVkZGVkICJtYXJrZXJzIiwgYWxzbwora25vd24gYXMgInByb2JlcyIsIHRoYXQgY2FuIGJlIG9ic2VydmVkIGJ5IGEgRFRyYWNlIG9yIFN5c3RlbVRhcCBzY3JpcHQsCittYWtpbmcgaXQgZWFzaWVyIHRvIG1vbml0b3Igd2hhdCB0aGUgQ1B5dGhvbiBwcm9jZXNzZXMgb24gYSBzeXN0ZW0gYXJlCitkb2luZy4KKworLi4gaW1wbC1kZXRhaWw6OgorCisgICBEVHJhY2UgbWFya2VycyBhcmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgQ1B5dGhvbiBpbnRlcnByZXRlci4KKyAgIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgcHJvYmUgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHZlcnNpb25zIG9mCisgICBDUHl0aG9uLiBEVHJhY2Ugc2NyaXB0cyBjYW4gc3RvcCB3b3JraW5nIG9yIHdvcmsgaW5jb3JyZWN0bHkgd2l0aG91dAorICAgd2FybmluZyB3aGVuIGNoYW5naW5nIENQeXRob24gdmVyc2lvbnMuCisKKworRW5hYmxpbmcgdGhlIHN0YXRpYyBtYXJrZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbWFjT1MgY29tZXMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBEVHJhY2UuICBPbiBMaW51eCwgaW4gb3JkZXIgdG8KK2J1aWxkIENQeXRob24gd2l0aCB0aGUgZW1iZWRkZWQgbWFya2VycyBmb3IgU3lzdGVtVGFwLCB0aGUgU3lzdGVtVGFwCitkZXZlbG9wbWVudCB0b29scyBtdXN0IGJlIGluc3RhbGxlZC4KKworT24gYSBMaW51eCBtYWNoaW5lLCB0aGlzIGNhbiBiZSBkb25lIHZpYTo6CisKKyAgICQgeXVtIGluc3RhbGwgc3lzdGVtdGFwLXNkdC1kZXZlbAorCitvcjo6CisKKyAgICQgc3VkbyBhcHQtZ2V0IGluc3RhbGwgc3lzdGVtdGFwLXNkdC1kZXYKKworCitDUHl0aG9uIG11c3QgdGhlbiBiZSBjb25maWd1cmVkIGBgLS13aXRoLWR0cmFjZWBgOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICBjaGVja2luZyBmb3IgLS13aXRoLWR0cmFjZS4uLiB5ZXMKKworT24gbWFjT1MsIHlvdSBjYW4gbGlzdCBhdmFpbGFibGUgRFRyYWNlIHByb2JlcyBieSBydW5uaW5nIGEgUHl0aG9uCitwcm9jZXNzIGluIHRoZSBiYWNrZ3JvdW5kIGFuZCBsaXN0aW5nIGFsbCBwcm9iZXMgbWFkZSBhdmFpbGFibGUgYnkgdGhlCitQeXRob24gcHJvdmlkZXI6OgorCisgICAkIHB5dGhvbjMuNiAtcSAmCisgICAkIHN1ZG8gZHRyYWNlIC1sIC1QIHB5dGhvbiQhICAjIG9yOiBkdHJhY2UgLWwgLW0gcHl0aG9uMy42CisKKyAgICAgIElEICAgUFJPVklERVIgICAgICAgICAgICBNT0RVTEUgICAgICAgICAgICAgICAgICAgICAgICAgIEZVTkNUSU9OIE5BTUUKKyAgIDI5NTY0IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGZ1bmN0aW9uLWVudHJ5CisgICAyOTU2NSBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgICAgIGR0cmFjZV9mdW5jdGlvbl9lbnRyeSBmdW5jdGlvbi1lbnRyeQorICAgMjk1NjYgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgZnVuY3Rpb24tcmV0dXJuCisgICAyOTU2NyBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX3JldHVybiBmdW5jdGlvbi1yZXR1cm4KKyAgIDI5NTY4IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGdjLWRvbmUKKyAgIDI5NTY5IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0IGdjLXN0YXJ0CisgICAyOTU3MCBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBsaW5lCisgICAyOTU3MSBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgICAgICAgICBtYXliZV9kdHJhY2VfbGluZSBsaW5lCisKK09uIExpbnV4LCB5b3UgY2FuIHZlcmlmeSBpZiB0aGUgU3lzdGVtVGFwIHN0YXRpYyBtYXJrZXJzIGFyZSBwcmVzZW50IGluCit0aGUgYnVpbHQgYmluYXJ5IGJ5IHNlZWluZyBpZiBpdCBjb250YWlucyBhICIubm90ZS5zdGFwc2R0IiBzZWN0aW9uLgorCis6OgorCisgICAkIHJlYWRlbGYgLVMgLi9weXRob24gfCBncmVwIC5ub3RlLnN0YXBzZHQKKyAgIFszMF0gLm5vdGUuc3RhcHNkdCAgICAgICAgTk9URSAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAzMDhkNzgKKworSWYgeW91J3ZlIGJ1aWx0IFB5dGhvbiBhcyBhIHNoYXJlZCBsaWJyYXJ5ICh3aXRoIC0tZW5hYmxlLXNoYXJlZCksIHlvdQorbmVlZCB0byBsb29rIGluc3RlYWQgd2l0aGluIHRoZSBzaGFyZWQgbGlicmFyeS4gIEZvciBleGFtcGxlOjoKKworICAgJCByZWFkZWxmIC1TIGxpYnB5dGhvbjMuM2RtLnNvLjEuMCB8IGdyZXAgLm5vdGUuc3RhcHNkdAorICAgWzI5XSAubm90ZS5zdGFwc2R0ICAgICAgICBOT1RFICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMDM2NWI2OAorCitTdWZmaWNpZW50bHkgbW9kZXJuIHJlYWRlbGYgY2FuIHByaW50IHRoZSBtZXRhZGF0YTo6CisKKyAgICAkIHJlYWRlbGYgLW4gLi9weXRob24KKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI1NCB3aXRoIGxlbmd0aCAweDAwMDAwMDIwOgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgICAgICAgICAgTlRfR05VX0FCSV9UQUcgKEFCSSB2ZXJzaW9uIHRhZykKKyAgICAgICAgICAgIE9TOiBMaW51eCwgQUJJOiAyLjYuMzIKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI3NCB3aXRoIGxlbmd0aCAweDAwMDAwMDI0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQgICAgICAgICAgTlRfR05VX0JVSUxEX0lEICh1bmlxdWUgYnVpbGQgSUQgYml0c3RyaW5nKQorICAgICAgICAgICAgQnVpbGQgSUQ6IGRmOTI0YTJiMDhhN2U4OWY2ZTExMjUxZDQ2MDIwMjI5NzdhZjI2NzAKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDJkNmMzMCB3aXRoIGxlbmd0aCAweDAwMDAwMTQ0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwMzEgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZ2NfX3N0YXJ0CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNDM3MWMzLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmY2CisgICAgICAgICAgICBBcmd1bWVudHM6IC00QCVlYngKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBnY19fZG9uZQorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDQzNzRlMSwgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJmOAorICAgICAgICAgICAgQXJndW1lbnRzOiAtOEAlcmF4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwNDUgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZnVuY3Rpb25fX2VudHJ5CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNTNkYjZjLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmU4CisgICAgICAgICAgICBBcmd1bWVudHM6IDhAJXJicCA4QCVyMTIgLTRAJWVheAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDQ2ICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGZ1bmN0aW9uX19yZXR1cm4KKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA1M2RiYTgsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZWEKKyAgICAgICAgICAgIEFyZ3VtZW50czogOEAlcmJwIDhAJXIxMiAtNEAlZWF4CisKK1RoZSBhYm92ZSBtZXRhZGF0YSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgU3lzdGVtVGFwIGRlc2NyaWJpbmcgaG93IGl0CitjYW4gcGF0Y2ggc3RyYXRlZ2ljYWxseS1wbGFjZWQgbWFjaGluZSBjb2RlIGluc3RydWN0aW9ucyB0byBlbmFibGUgdGhlCit0cmFjaW5nIGhvb2tzIHVzZWQgYnkgYSBTeXN0ZW1UYXAgc2NyaXB0LgorCisKK1N0YXRpYyBEVHJhY2UgcHJvYmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgRFRyYWNlIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSBjYWxsL3JldHVybgoraGllcmFyY2h5IG9mIGEgUHl0aG9uIHNjcmlwdCwgb25seSB0cmFjaW5nIHdpdGhpbiB0aGUgaW52b2NhdGlvbiBvZgorYSBmdW5jdGlvbiBjYWxsZWQgInN0YXJ0Ii4gSW4gb3RoZXIgd29yZHMsIGltcG9ydC10aW1lIGZ1bmN0aW9uCitpbnZvY2F0aW9ucyBhcmUgbm90IGdvaW5nIHRvIGJlIGxpc3RlZDoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIHNlbGYgaW50IGluZGVudDsKKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorICAgIC9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KKyAgICB7CisgICAgICAgICAgICBzZWxmLT50cmFjZSA9IDE7CisgICAgfQorCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgICAgICAgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgICAgICAgICBzZWxmLT5pbmRlbnQrKzsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPmluZGVudC0tOworICAgICAgICAgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOworICAgICAgICAgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPnRyYWNlID0gMDsKKyAgICB9CisKK0l0IGNhbiBiZSBpbnZva2VkIGxpa2UgdGhpczo6CisKKyAgJCBzdWRvIGR0cmFjZSAtcSAtcyBjYWxsX3N0YWNrLmQgLWMgInB5dGhvbjMuNiBzY3JpcHQucHkiCisKK1RoZSBvdXRwdXQgbG9va3MgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCisgICAgMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyAgICAxNTY2NDEzNjA1MzI3OTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA1NDY4MDcgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyAgICAxNTY2NDEzNjA1NzgzNjUgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorICAgIDE1NjY0MTM2MDU5MTc1NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorICAgIDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2MTc0ODIgZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDYyOTgxNCBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorICAgIDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgICAgMTU2NjQxMzYwNjU2NzcwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2Njk3MDcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKKyAgICAxNTY2NDEzNjA3MDA3MTkgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKKyAgICAxNTY2NDEzNjA3MTk2NDAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKKyAgICAxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKKyAgICAxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKKworCitTdGF0aWMgU3lzdGVtVGFwIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbG93LWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgdGhlIHN0YXRpYworbWFya2VycyBkaXJlY3RseS4gIFRoaXMgcmVxdWlyZXMgeW91IHRvIGV4cGxpY2l0bHkgc3RhdGUgdGhlIGJpbmFyeSBmaWxlCitjb250YWluaW5nIHRoZW0uCisKK0ZvciBleGFtcGxlLCB0aGlzIFN5c3RlbVRhcCBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgY2FsbC9yZXR1cm4KK2hpZXJhcmNoeSBvZiBhIFB5dGhvbiBzY3JpcHQ6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgIHByb2JlIHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXFxuIiwKKyAgICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgIH0KKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX3JldHVybiIpIHsKKyAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgIHByaW50ZigiJXMgPD0gJXMgaW4gJXM6JWRcXG4iLAorICAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgfQorCitJdCBjYW4gYmUgaW52b2tlZCBsaWtlIHRoaXM6OgorCisgICAkIHN0YXAgXAorICAgICBzaG93LWNhbGwtaGllcmFyY2h5LnN0cCBcCisgICAgIC1jICIuL3B5dGhvbiB0ZXN0LnB5IgorCitUaGUgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgMTE0MDggcHl0aG9uKDgyNzQpOiAgICAgICAgPT4gX19jb250YWluc19fIGluIExpYi9fYWJjb2xsLnB5OjM2MgorICAgMTE0MTQgcHl0aG9uKDgyNzQpOiAgICAgICAgID0+IF9fZ2V0aXRlbV9fIGluIExpYi9vcy5weTo0MjUKKyAgIDExNDE4IHB5dGhvbig4Mjc0KTogICAgICAgICAgPT4gZW5jb2RlIGluIExpYi9vcy5weTo0OTAKKyAgIDExNDI0IHB5dGhvbig4Mjc0KTogICAgICAgICAgPD0gZW5jb2RlIGluIExpYi9vcy5weTo0OTMKKyAgIDExNDI4IHB5dGhvbig4Mjc0KTogICAgICAgICA8PSBfX2dldGl0ZW1fXyBpbiBMaWIvb3MucHk6NDI2CisgICAxMTQzMyBweXRob24oODI3NCk6ICAgICAgICA8PSBfX2NvbnRhaW5zX18gaW4gTGliL19hYmNvbGwucHk6MzY2CisKK3doZXJlIHRoZSBjb2x1bW5zIGFyZToKKworICAtIHRpbWUgaW4gbWljcm9zZWNvbmRzIHNpbmNlIHN0YXJ0IG9mIHNjcmlwdAorCisgIC0gbmFtZSBvZiBleGVjdXRhYmxlCisKKyAgLSBQSUQgb2YgcHJvY2VzcworCithbmQgdGhlIHJlbWFpbmRlciBpbmRpY2F0ZXMgdGhlIGNhbGwvcmV0dXJuIGhpZXJhcmNoeSBhcyB0aGUgc2NyaXB0IGV4ZWN1dGVzLgorCitGb3IgYSBgLS1lbmFibGUtc2hhcmVkYCBidWlsZCBvZiBDUHl0aG9uLCB0aGUgbWFya2VycyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUKK2xpYnB5dGhvbiBzaGFyZWQgbGlicmFyeSwgYW5kIHRoZSBwcm9iZSdzIGRvdHRlZCBwYXRoIG5lZWRzIHRvIHJlZmxlY3QgdGhpcy4gRm9yCitleGFtcGxlLCB0aGlzIGxpbmUgZnJvbSB0aGUgYWJvdmUgZXhhbXBsZTo6CisKKyAgIHByb2JlIHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKworc2hvdWxkIGluc3RlYWQgcmVhZDo6CisKKyAgIHByb2JlIHByb2Nlc3MoInB5dGhvbiIpLmxpYnJhcnkoImxpYnB5dGhvbjMuNmRtLnNvLjEuMCIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKworKGFzc3VtaW5nIGEgZGVidWcgYnVpbGQgb2YgQ1B5dGhvbiAzLjYpCisKKworQXZhaWxhYmxlIHN0YXRpYyBtYXJrZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gSSdtIHJldXNpbmcgdGhlICJjOmZ1bmN0aW9uIiB0eXBlIGZvciBtYXJrZXJzCisKKy4uIGM6ZnVuY3Rpb246OiBmdW5jdGlvbl9fZW50cnkoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgYmVndW4uCisgICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1QeXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKyAgIFRoZSBmaWxlbmFtZSwgZnVuY3Rpb24gbmFtZSwgYW5kIGxpbmUgbnVtYmVyIGFyZSBwcm92aWRlZCBiYWNrIHRvIHRoZQorICAgdHJhY2luZyBzY3JpcHQgYXMgcG9zaXRpb25hbCBhcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcKKyAgIGBgJGFyZzFgYCwgYGAkYXJnMmBgLCBgYCRhcmczYGA6CisKKyAgICAgICAqIGBgJGFyZzFgYCA6IGBgKGNvbnN0IGNoYXIgKilgYCBmaWxlbmFtZSwgYWNjZXNzaWJsZSB1c2luZyBgYHVzZXJfc3RyaW5nKCRhcmcxKWBgCisKKyAgICAgICAqIGBgJGFyZzJgYCA6IGBgKGNvbnN0IGNoYXIgKilgYCBmdW5jdGlvbiBuYW1lLCBhY2Nlc3NpYmxlIHVzaW5nCisgICAgICAgICBgYHVzZXJfc3RyaW5nKCRhcmcyKWBgCisKKyAgICAgICAqIGBgJGFyZzNgYCA6IGBgaW50YGAgbGluZSBudW1iZXIKKworLi4gYzpmdW5jdGlvbjo6IGZ1bmN0aW9uX19yZXR1cm4oc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGlzIHRoZSBjb252ZXJzZSBvZiA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgLCBhbmQgaW5kaWNhdGVzIHRoYXQKKyAgIGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgZW5kZWQgKGVpdGhlciB2aWEgYGByZXR1cm5gYCwgb3IgdmlhIGFuCisgICBleGNlcHRpb24pLiAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtUHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YAorCisuLiBjOmZ1bmN0aW9uOjogbGluZShzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubykKKworICAgVGhpcyBtYXJrZXIgaW5kaWNhdGVzIGEgUHl0aG9uIGxpbmUgaXMgYWJvdXQgdG8gYmUgZXhlY3V0ZWQuICBJdCBpcworICAgdGhlIGVxdWl2YWxlbnQgb2YgbGluZS1ieS1saW5lIHRyYWNpbmcgd2l0aCBhIFB5dGhvbiBwcm9maWxlci4gIEl0IGlzCisgICBub3QgdHJpZ2dlcmVkIHdpdGhpbiBDIGZ1bmN0aW9ucy4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAuCisKKy4uIGM6ZnVuY3Rpb246OiBnY19fc3RhcnQoaW50IGdlbmVyYXRpb24pCisKKyAgIEZpcmVzIHdoZW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciBzdGFydHMgYSBnYXJiYWdlIGNvbGxlY3Rpb24gY3ljbGUuCisgICBgYGFyZzBgYCBpcyB0aGUgZ2VuZXJhdGlvbiB0byBzY2FuLCBsaWtlIDpmdW5jOmBnYy5jb2xsZWN0KClgLgorCisuLiBjOmZ1bmN0aW9uOjogZ2NfX2RvbmUobG9uZyBjb2xsZWN0ZWQpCisKKyAgIEZpcmVzIHdoZW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciBmaW5pc2hlcyBhIGdhcmJhZ2UgY29sbGVjdGlvbgorICAgY3ljbGUuIGBgYXJnMGBgIGlzIHRoZSBudW1iZXIgb2YgY29sbGVjdGVkIG9iamVjdHMuCisKKworU3lzdGVtVGFwIFRhcHNldHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBoaWdoZXItbGV2ZWwgd2F5IHRvIHVzZSB0aGUgU3lzdGVtVGFwIGludGVncmF0aW9uIGlzIHRvIHVzZSBhICJ0YXBzZXQiOgorU3lzdGVtVGFwJ3MgZXF1aXZhbGVudCBvZiBhIGxpYnJhcnksIHdoaWNoIGhpZGVzIHNvbWUgb2YgdGhlIGxvd2VyLWxldmVsCitkZXRhaWxzIG9mIHRoZSBzdGF0aWMgbWFya2Vycy4KKworSGVyZSBpcyBhIHRhcHNldCBmaWxlLCBiYXNlZCBvbiBhIG5vbi1zaGFyZWQgYnVpbGQgb2YgQ1B5dGhvbjoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIC8qCisgICAgICAgUHJvdmlkZSBhIGhpZ2hlci1sZXZlbCB3cmFwcGluZyBhcm91bmQgdGhlIGZ1bmN0aW9uX19lbnRyeSBhbmQKKyAgICAgICBmdW5jdGlvbl9fcmV0dXJuIG1hcmtlcnM6CisgICAgIFwqLworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeSA9IHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpCisgICAgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworICAgICAgICBmcmFtZXB0ciA9ICRhcmc0CisgICAgfQorICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5yZXR1cm4gPSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKKyAgICB7CisgICAgICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICAgbGluZW5vID0gJGFyZzM7CisgICAgICAgIGZyYW1lcHRyID0gJGFyZzQKKyAgICB9CisKK0lmIHRoaXMgZmlsZSBpcyBpbnN0YWxsZWQgaW4gU3lzdGVtVGFwJ3MgdGFwc2V0IGRpcmVjdG9yeSAoZS5nLgorYGAvdXNyL3NoYXJlL3N5c3RlbXRhcC90YXBzZXRgYCksIHRoZW4gdGhlc2UgYWRkaXRpb25hbCBwcm9iZXBvaW50cyBiZWNvbWUKK2F2YWlsYWJsZToKKworLi4gYzpmdW5jdGlvbjo6IHB5dGhvbi5mdW5jdGlvbi5lbnRyeShzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubywgZnJhbWVwdHIpCisKKyAgIFRoaXMgcHJvYmUgcG9pbnQgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBiZWd1bi4KKyAgIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLXB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworLi4gYzpmdW5jdGlvbjo6IHB5dGhvbi5mdW5jdGlvbi5yZXR1cm4oc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8sIGZyYW1lcHRyKQorCisgICBUaGlzIHByb2JlIHBvaW50IGlzIHRoZSBjb252ZXJzZSBvZiA6YzpmdW5jOmBweXRob24uZnVuY3Rpb24ucmV0dXJuYCwgYW5kCisgICBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGVuZGVkIChlaXRoZXIgdmlhCisgICBgYHJldHVybmBgLCBvciB2aWEgYW4gZXhjZXB0aW9uKS4gIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLXB5dGhvbgorICAgKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCitUaGlzIFN5c3RlbVRhcCBzY3JpcHQgdXNlcyB0aGUgdGFwc2V0IGFib3ZlIHRvIG1vcmUgY2xlYW5seSBpbXBsZW1lbnQgdGhlCitleGFtcGxlIGdpdmVuIGFib3ZlIG9mIHRyYWNpbmcgdGhlIFB5dGhvbiBmdW5jdGlvbi1jYWxsIGhpZXJhcmNoeSwgd2l0aG91dAorbmVlZGluZyB0byBkaXJlY3RseSBuYW1lIHRoZSBzdGF0aWMgbWFya2VyczoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeQorICAgIHsKKyAgICAgIHByaW50ZigiJXMgPT4gJXMgaW4gJXM6JWRcbiIsCisgICAgICAgICAgICAgdGhyZWFkX2luZGVudCgxKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgIH0KKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5yZXR1cm4KKyAgICB7CisgICAgICBwcmludGYoIiVzIDw9ICVzIGluICVzOiVkXG4iLAorICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoLTEpLCBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubyk7CisgICAgfQorCisKK1RoZSBmb2xsb3dpbmcgc2NyaXB0IHVzZXMgdGhlIHRhcHNldCBhYm92ZSB0byBwcm92aWRlIGEgdG9wLWxpa2UgdmlldyBvZiBhbGwKK3J1bm5pbmcgQ1B5dGhvbiBjb2RlLCBzaG93aW5nIHRoZSB0b3AgMjAgbW9zdCBmcmVxdWVudGx5LWVudGVyZWQgYnl0ZWNvZGUKK2ZyYW1lcywgZWFjaCBzZWNvbmQsIGFjcm9zcyB0aGUgd2hvbGUgc3lzdGVtOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgZ2xvYmFsIGZuX2NhbGxzOworCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLmVudHJ5CisgICAgeworICAgICAgICBmbl9jYWxsc1twaWQoKSwgZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm9dICs9IDE7CisgICAgfQorCisgICAgcHJvYmUgdGltZXIubXMoMTAwMCkgeworICAgICAgICBwcmludGYoIlwwMzNbMkpcMDMzWzE7MUgiKSAvKiBjbGVhciBzY3JlZW4gXCovCisgICAgICAgIHByaW50ZigiJTZzICU4MHMgJTZzICUzMHMgJTZzXG4iLAorICAgICAgICAgICAgICAgIlBJRCIsICJGSUxFTkFNRSIsICJMSU5FIiwgIkZVTkNUSU9OIiwgIkNBTExTIikKKyAgICAgICAgZm9yZWFjaCAoW3BpZCwgZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm9dIGluIGZuX2NhbGxzLSBsaW1pdCAyMCkgeworICAgICAgICAgICAgcHJpbnRmKCIlNmQgJTgwcyAlNmQgJTMwcyAlNmRcbiIsCisgICAgICAgICAgICAgICAgcGlkLCBmaWxlbmFtZSwgbGluZW5vLCBmdW5jbmFtZSwKKyAgICAgICAgICAgICAgICBmbl9jYWxsc1twaWQsIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSk7CisgICAgICAgIH0KKyAgICAgICAgZGVsZXRlIGZuX2NhbGxzOworICAgIH0KKwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzIxZjcyNy4uMDAwMDAwMAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLQotaW1wb3J0IHNtdHBsaWIKLQotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKLWZyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEFkZHJlc3MKLWZyb20gZW1haWwudXRpbHMgaW1wb3J0IG1ha2VfbXNnaWQKLQotIyBDcmVhdGUgdGhlIGJhc2UgdGV4dCBtZXNzYWdlLgotbXNnID0gRW1haWxNZXNzYWdlKCkKLW1zZ1snU3ViamVjdCddID0gIkF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyIgotbXNnWydGcm9tJ10gPSBBZGRyZXNzKCJQZXDDqSBMZSBQZXciLCAicGVwZSIsICJleGFtcGxlLmNvbSIpCi1tc2dbJ1RvJ10gPSAoQWRkcmVzcygiUGVuZWxvcGUgUHVzc3ljYXQiLCAicGVuZWxvcGUiLCAiZXhhbXBsZS5jb20iKSwKLSAgICAgICAgICAgICBBZGRyZXNzKCJGYWJyZXR0ZSBQdXNzeWNhdCIsICJmYWJyZXR0ZSIsICJleGFtcGxlLmNvbSIpKQotbXNnLnNldF9jb250ZW50KCIiIlwKLVNhbHV0IQotCi1DZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCi0KLVsxXSBodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4Ci0KLS0tUGVww6kKLSIiIikKLQotIyBBZGQgdGhlIGh0bWwgdmVyc2lvbi4gIFRoaXMgY29udmVydHMgdGhlIG1lc3NhZ2UgaW50byBhIG11bHRpcGFydC9hbHRlcm5hdGl2ZQotIyBjb250YWluZXIsIHdpdGggdGhlIG9yaWdpbmFsIHRleHQgbWVzc2FnZSBhcyB0aGUgZmlyc3QgcGFydCBhbmQgdGhlIG5ldyBodG1sCi0jIG1lc3NhZ2UgYXMgdGhlIHNlY29uZCBwYXJ0LgotYXNwYXJhZ3VzX2NpZCA9IG1ha2VfbXNnaWQoKQotbXNnLmFkZF9hbHRlcm5hdGl2ZSgiIiJcCi08aHRtbD4KLSAgPGhlYWQ+PC9oZWFkPgotICA8Ym9keT4KLSAgICA8cD5TYWx1dCE8XHA+Ci0gICAgPHA+Q2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50Ci0gICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTg+Ci0gICAgICAgICAgICByZWNpcGllCi0gICAgICAgIDwvYT4gZMOpamV1bmVyLgotICAgIDwvcD4KLSAgICA8aW1nIHNyYz0iY2lkOnthc3BhcmFndXNfY2lkfSIgXD4KLSAgPC9ib2R5PgotPC9odG1sPgotIiIiLmZvcm1hdChhc3BhcmFndXNfY2lkPWFzcGFyYWd1c19jaWRbMTotMV0pLCBzdWJ0eXBlPSdodG1sJykKLSMgbm90ZSB0aGF0IHdlIG5lZWRlZCB0byBwZWVsIHRoZSA8PiBvZmYgdGhlIG1zZ2lkIGZvciB1c2UgaW4gdGhlIGh0bWwuCi0KLSMgTm93IGFkZCB0aGUgcmVsYXRlZCBpbWFnZSB0byB0aGUgaHRtbCBwYXJ0Lgotd2l0aCBvcGVuKCJyb2FzdGVkLWFzcGFyYWd1cy5qcGciLCAncmInKSBhcyBpbWc6Ci0gICAgbXNnLmdldF9wYXlsb2FkKClbMV0uYWRkX3JlbGF0ZWQoaW1nLnJlYWQoKSwgJ2ltYWdlJywgJ2pwZWcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1hc3BhcmFndXNfY2lkKQotCi0jIE1ha2UgYSBsb2NhbCBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQuCi13aXRoIG9wZW4oJ291dGdvaW5nLm1zZycsICd3YicpIGFzIGY6Ci0gICAgZi53cml0ZShieXRlcyhtc2cpKQotCi0jIFNlbmQgdGhlIG1lc3NhZ2UgdmlhIGxvY2FsIFNNVFAgc2VydmVyLgotd2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6Ci0gICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggODUwNzBmMy4uMmUxNDJiMQotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CkBAIC0yLDQ3ICsyLDU1IEBACiAKIGltcG9ydCBzbXRwbGliCiAKLWZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKLWZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKK2Zyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEFkZHJlc3MKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IG1ha2VfbXNnaWQKIAotIyBtZSA9PSBteSBlbWFpbCBhZGRyZXNzCi0jIHlvdSA9PSByZWNpcGllbnQncyBlbWFpbCBhZGRyZXNzCi1tZSA9ICJteUBlbWFpbC5jb20iCi15b3UgPSAieW91ckBlbWFpbC5jb20iCisjIENyZWF0ZSB0aGUgYmFzZSB0ZXh0IG1lc3NhZ2UuCittc2cgPSBFbWFpbE1lc3NhZ2UoKQorbXNnWydTdWJqZWN0J10gPSAiQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIiCittc2dbJ0Zyb20nXSA9IEFkZHJlc3MoIlBlcMOpIExlIFBldyIsICJwZXBlIiwgImV4YW1wbGUuY29tIikKK21zZ1snVG8nXSA9IChBZGRyZXNzKCJQZW5lbG9wZSBQdXNzeWNhdCIsICJwZW5lbG9wZSIsICJleGFtcGxlLmNvbSIpLAorICAgICAgICAgICAgIEFkZHJlc3MoIkZhYnJldHRlIFB1c3N5Y2F0IiwgImZhYnJldHRlIiwgImV4YW1wbGUuY29tIikpCittc2cuc2V0X2NvbnRlbnQoIiIiXAorU2FsdXQhCiAKLSMgQ3JlYXRlIG1lc3NhZ2UgY29udGFpbmVyIC0gdGhlIGNvcnJlY3QgTUlNRSB0eXBlIGlzIG11bHRpcGFydC9hbHRlcm5hdGl2ZS4KLW1zZyA9IE1JTUVNdWx0aXBhcnQoJ2FsdGVybmF0aXZlJykKLW1zZ1snU3ViamVjdCddID0gIkxpbmsiCi1tc2dbJ0Zyb20nXSA9IG1lCi1tc2dbJ1RvJ10gPSB5b3UKK0NlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KIAotIyBDcmVhdGUgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UgKGEgcGxhaW4tdGV4dCBhbmQgYW4gSFRNTCB2ZXJzaW9uKS4KLXRleHQgPSAiSGkhXG5Ib3cgYXJlIHlvdT9cbkhlcmUgaXMgdGhlIGxpbmsgeW91IHdhbnRlZDpcbmh0dHBzOi8vd3d3LnB5dGhvbi5vcmciCi1odG1sID0gIiIiXAorWzFdIGh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTgKKworLS1QZXDDqQorIiIiKQorCisjIEFkZCB0aGUgaHRtbCB2ZXJzaW9uLiAgVGhpcyBjb252ZXJ0cyB0aGUgbWVzc2FnZSBpbnRvIGEgbXVsdGlwYXJ0L2FsdGVybmF0aXZlCisjIGNvbnRhaW5lciwgd2l0aCB0aGUgb3JpZ2luYWwgdGV4dCBtZXNzYWdlIGFzIHRoZSBmaXJzdCBwYXJ0IGFuZCB0aGUgbmV3IGh0bWwKKyMgbWVzc2FnZSBhcyB0aGUgc2Vjb25kIHBhcnQuCithc3BhcmFndXNfY2lkID0gbWFrZV9tc2dpZCgpCittc2cuYWRkX2FsdGVybmF0aXZlKCIiIlwKIDxodG1sPgogICA8aGVhZD48L2hlYWQ+CiAgIDxib2R5PgotICAgIDxwPkhpITxicj4KLSAgICAgICBIb3cgYXJlIHlvdT88YnI+Ci0gICAgICAgSGVyZSBpcyB0aGUgPGEgaHJlZj0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZyI+bGluazwvYT4geW91IHdhbnRlZC4KKyAgICA8cD5TYWx1dCE8L3A+CisgICAgPHA+Q2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50CisgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTg+CisgICAgICAgICAgICByZWNpcGllCisgICAgICAgIDwvYT4gZMOpamV1bmVyLgogICAgIDwvcD4KKyAgICA8aW1nIHNyYz0iY2lkOnthc3BhcmFndXNfY2lkfSIgLz4KICAgPC9ib2R5PgogPC9odG1sPgotIiIiCisiIiIuZm9ybWF0KGFzcGFyYWd1c19jaWQ9YXNwYXJhZ3VzX2NpZFsxOi0xXSksIHN1YnR5cGU9J2h0bWwnKQorIyBub3RlIHRoYXQgd2UgbmVlZGVkIHRvIHBlZWwgdGhlIDw+IG9mZiB0aGUgbXNnaWQgZm9yIHVzZSBpbiB0aGUgaHRtbC4KIAotIyBSZWNvcmQgdGhlIE1JTUUgdHlwZXMgb2YgYm90aCBwYXJ0cyAtIHRleHQvcGxhaW4gYW5kIHRleHQvaHRtbC4KLXBhcnQxID0gTUlNRVRleHQodGV4dCwgJ3BsYWluJykKLXBhcnQyID0gTUlNRVRleHQoaHRtbCwgJ2h0bWwnKQorIyBOb3cgYWRkIHRoZSByZWxhdGVkIGltYWdlIHRvIHRoZSBodG1sIHBhcnQuCit3aXRoIG9wZW4oInJvYXN0ZWQtYXNwYXJhZ3VzLmpwZyIsICdyYicpIGFzIGltZzoKKyAgICBtc2cuZ2V0X3BheWxvYWQoKVsxXS5hZGRfcmVsYXRlZChpbWcucmVhZCgpLCAnaW1hZ2UnLCAnanBlZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWFzcGFyYWd1c19jaWQpCiAKLSMgQXR0YWNoIHBhcnRzIGludG8gbWVzc2FnZSBjb250YWluZXIuCi0jIEFjY29yZGluZyB0byBSRkMgMjA0NiwgdGhlIGxhc3QgcGFydCBvZiBhIG11bHRpcGFydCBtZXNzYWdlLCBpbiB0aGlzIGNhc2UKLSMgdGhlIEhUTUwgbWVzc2FnZSwgaXMgYmVzdCBhbmQgcHJlZmVycmVkLgotbXNnLmF0dGFjaChwYXJ0MSkKLW1zZy5hdHRhY2gocGFydDIpCisjIE1ha2UgYSBsb2NhbCBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQuCit3aXRoIG9wZW4oJ291dGdvaW5nLm1zZycsICd3YicpIGFzIGY6CisgICAgZi53cml0ZShieXRlcyhtc2cpKQogCiAjIFNlbmQgdGhlIG1lc3NhZ2UgdmlhIGxvY2FsIFNNVFAgc2VydmVyLgotcyA9IHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykKLSMgc2VuZG1haWwgZnVuY3Rpb24gdGFrZXMgMyBhcmd1bWVudHM6IHNlbmRlcidzIGFkZHJlc3MsIHJlY2lwaWVudCdzIGFkZHJlc3MKLSMgYW5kIG1lc3NhZ2UgdG8gc2VuZCAtIGhlcmUgaXQgaXMgc2VudCBhcyBvbmUgc3RyaW5nLgotcy5zZW5kbWFpbChtZSwgeW91LCBtc2cuYXNfc3RyaW5nKCkpCi1zLnF1aXQoKQord2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6CisgICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKaW5kZXggM2M3Yzc3MC4uMGRjZmJmYiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CkBAIC0zLDIyICszLDE0IEBACiAiIiJTZW5kIHRoZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhIE1JTUUgbWVzc2FnZS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc210cGxpYgogIyBGb3IgZ3Vlc3NpbmcgTUlNRSB0eXBlIGJhc2VkIG9uIGZpbGUgbmFtZSBleHRlbnNpb24KIGltcG9ydCBtaW1ldHlwZXMKIAogZnJvbSBhcmdwYXJzZSBpbXBvcnQgQXJndW1lbnRQYXJzZXIKIAotZnJvbSBlbWFpbCBpbXBvcnQgZW5jb2RlcnMKLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQotZnJvbSBlbWFpbC5taW1lLmF1ZGlvIGltcG9ydCBNSU1FQXVkaW8KLWZyb20gZW1haWwubWltZS5iYXNlIGltcG9ydCBNSU1FQmFzZQotZnJvbSBlbWFpbC5taW1lLmltYWdlIGltcG9ydCBNSU1FSW1hZ2UKLWZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKLWZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAotCi1DT01NQVNQQUNFID0gJywgJworZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKK2Zyb20gZW1haWwucG9saWN5IGltcG9ydCBTTVRQCiAKIAogZGVmIG1haW4oKToKQEAgLTQ3LDEyICszOSwxMiBAQAogICAgIGRpcmVjdG9yeSA9IGFyZ3MuZGlyZWN0b3J5CiAgICAgaWYgbm90IGRpcmVjdG9yeToKICAgICAgICAgZGlyZWN0b3J5ID0gJy4nCi0gICAgIyBDcmVhdGUgdGhlIGVuY2xvc2luZyAob3V0ZXIpIG1lc3NhZ2UKLSAgICBvdXRlciA9IE1JTUVNdWx0aXBhcnQoKQotICAgIG91dGVyWydTdWJqZWN0J10gPSAnQ29udGVudHMgb2YgZGlyZWN0b3J5ICVzJyAlIG9zLnBhdGguYWJzcGF0aChkaXJlY3RvcnkpCi0gICAgb3V0ZXJbJ1RvJ10gPSBDT01NQVNQQUNFLmpvaW4oYXJncy5yZWNpcGllbnRzKQotICAgIG91dGVyWydGcm9tJ10gPSBhcmdzLnNlbmRlcgotICAgIG91dGVyLnByZWFtYmxlID0gJ1lvdSB3aWxsIG5vdCBzZWUgdGhpcyBpbiBhIE1JTUUtYXdhcmUgbWFpbCByZWFkZXIuXG4nCisgICAgIyBDcmVhdGUgdGhlIG1lc3NhZ2UKKyAgICBtc2cgPSBFbWFpbE1lc3NhZ2UoKQorICAgIG1zZ1snU3ViamVjdCddID0gJ0NvbnRlbnRzIG9mIGRpcmVjdG9yeSAlcycgJSBvcy5wYXRoLmFic3BhdGgoZGlyZWN0b3J5KQorICAgIG1zZ1snVG8nXSA9ICcsICcuam9pbihhcmdzLnJlY2lwaWVudHMpCisgICAgbXNnWydGcm9tJ10gPSBhcmdzLnNlbmRlcgorICAgIG1zZy5wcmVhbWJsZSA9ICdZb3Ugd2lsbCBub3Qgc2VlIHRoaXMgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyLlxuJwogCiAgICAgZm9yIGZpbGVuYW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIGZpbGVuYW1lKQpAQCAtNjcsMzMgKzU5LDE4IEBACiAgICAgICAgICAgICAjIHVzZSBhIGdlbmVyaWMgYmFnLW9mLWJpdHMgdHlwZS4KICAgICAgICAgICAgIGN0eXBlID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScKICAgICAgICAgbWFpbnR5cGUsIHN1YnR5cGUgPSBjdHlwZS5zcGxpdCgnLycsIDEpCi0gICAgICAgIGlmIG1haW50eXBlID09ICd0ZXh0JzoKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAjIE5vdGU6IHdlIHNob3VsZCBoYW5kbGUgY2FsY3VsYXRpbmcgdGhlIGNoYXJzZXQKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FVGV4dChmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsaWYgbWFpbnR5cGUgPT0gJ2ltYWdlJzoKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FSW1hZ2UoZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbGlmIG1haW50eXBlID09ICdhdWRpbyc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUF1ZGlvKGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FQmFzZShtYWludHlwZSwgc3VidHlwZSkKLSAgICAgICAgICAgICAgICBtc2cuc2V0X3BheWxvYWQoZnAucmVhZCgpKQotICAgICAgICAgICAgIyBFbmNvZGUgdGhlIHBheWxvYWQgdXNpbmcgQmFzZTY0Ci0gICAgICAgICAgICBlbmNvZGVycy5lbmNvZGVfYmFzZTY0KG1zZykKLSAgICAgICAgIyBTZXQgdGhlIGZpbGVuYW1lIHBhcmFtZXRlcgotICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywgZmlsZW5hbWU9ZmlsZW5hbWUpCi0gICAgICAgIG91dGVyLmF0dGFjaChtc2cpCisgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIG1zZy5hZGRfYXR0YWNobWVudChmcC5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnR5cGU9bWFpbnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZT1zdWJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPWZpbGVuYW1lKQogICAgICMgTm93IHNlbmQgb3Igc3RvcmUgdGhlIG1lc3NhZ2UKLSAgICBjb21wb3NlZCA9IG91dGVyLmFzX3N0cmluZygpCiAgICAgaWYgYXJncy5vdXRwdXQ6Ci0gICAgICAgIHdpdGggb3BlbihhcmdzLm91dHB1dCwgJ3cnKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGNvbXBvc2VkKQorICAgICAgICB3aXRoIG9wZW4oYXJncy5vdXRwdXQsICd3YicpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUobXNnLmFzX2J5dGVzKHBvbGljeT1TTVRQKSkKICAgICBlbHNlOgogICAgICAgICB3aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKLSAgICAgICAgICAgIHMuc2VuZG1haWwoYXJncy5zZW5kZXIsIGFyZ3MucmVjaXBpZW50cywgY29tcG9zZWQpCisgICAgICAgICAgICBzLnNlbmRfbWVzc2FnZShtc2cpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKaW5kZXggODljOGYzYS4uMmM0MjE0NSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKQEAgLTEsMTggKzEsMjQgQEAKICMgSW1wb3J0IHRoZSBlbWFpbCBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwucGFyc2VyIGltcG9ydCBQYXJzZXIKK2Zyb20gZW1haWwucGFyc2VyIGltcG9ydCBCeXRlc1BhcnNlciwgUGFyc2VyCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAogCiAjIElmIHRoZSBlLW1haWwgaGVhZGVycyBhcmUgaW4gYSBmaWxlLCB1bmNvbW1lbnQgdGhlc2UgdHdvIGxpbmVzOgotIyB3aXRoIG9wZW4obWVzc2FnZWZpbGUpIGFzIGZwOgotIyAgICAgaGVhZGVycyA9IFBhcnNlcigpLnBhcnNlKGZwKQorIyB3aXRoIG9wZW4obWVzc2FnZWZpbGUsICdyYicpIGFzIGZwOgorIyAgICAgaGVhZGVycyA9IEJ5dGVzUGFyc2VyKHBvbGljeT1kZWZhdWx0KS5wYXJzZShmcCkKIAotIyAgT3IgZm9yIHBhcnNpbmcgaGVhZGVycyBpbiBhIHN0cmluZywgdXNlOgotaGVhZGVycyA9IFBhcnNlcigpLnBhcnNlc3RyKCdGcm9tOiA8dXNlckBleGFtcGxlLmNvbT5cbicKKyMgIE9yIGZvciBwYXJzaW5nIGhlYWRlcnMgaW4gYSBzdHJpbmcgKHRoaXMgaXMgYW4gdW5jb21tb24gb3BlcmF0aW9uKSwgdXNlOgoraGVhZGVycyA9IFBhcnNlcihwb2xpY3k9ZGVmYXVsdCkucGFyc2VzdHIoCisgICAgICAgICdGcm9tOiBGb28gQmFyIDx1c2VyQGV4YW1wbGUuY29tPlxuJwogICAgICAgICAnVG86IDxzb21lb25lX2Vsc2VAZXhhbXBsZS5jb20+XG4nCiAgICAgICAgICdTdWJqZWN0OiBUZXN0IG1lc3NhZ2VcbicKICAgICAgICAgJ1xuJwogICAgICAgICAnQm9keSB3b3VsZCBnbyBoZXJlXG4nKQogCiAjICBOb3cgdGhlIGhlYWRlciBpdGVtcyBjYW4gYmUgYWNjZXNzZWQgYXMgYSBkaWN0aW9uYXJ5OgotcHJpbnQoJ1RvOiAlcycgJSBoZWFkZXJzWyd0byddKQotcHJpbnQoJ0Zyb206ICVzJyAlIGhlYWRlcnNbJ2Zyb20nXSkKLXByaW50KCdTdWJqZWN0OiAlcycgJSBoZWFkZXJzWydzdWJqZWN0J10pCitwcmludCgnVG86IHt9Jy5mb3JtYXQoaGVhZGVyc1sndG8nXSkpCitwcmludCgnRnJvbToge30nLmZvcm1hdChoZWFkZXJzWydmcm9tJ10pKQorcHJpbnQoJ1N1YmplY3Q6IHt9Jy5mb3JtYXQoaGVhZGVyc1snc3ViamVjdCddKSkKKworIyBZb3UgY2FuIGFsc28gYWNjZXNzIHRoZSBwYXJ0cyBvZiB0aGUgYWRkcmVzc2VzOgorcHJpbnQoJ1JlY2lwaWVudCB1c2VybmFtZToge30nLmZvcm1hdChoZWFkZXJzWyd0byddLmFkZHJlc3Nlc1swXS51c2VybmFtZSkpCitwcmludCgnU2VuZGVyIG5hbWU6IHt9Jy5mb3JtYXQoaGVhZGVyc1snZnJvbSddLmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUpKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weQppbmRleCA2MWQwODMwLi5jNjEwMjQyIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weQpAQCAtMSwzMCArMSwyOSBAQAogIyBJbXBvcnQgc210cGxpYiBmb3IgdGhlIGFjdHVhbCBzZW5kaW5nIGZ1bmN0aW9uCiBpbXBvcnQgc210cGxpYgogCisjIEFuZCBpbWdoZHIgdG8gZmluZCB0aGUgdHlwZXMgb2Ygb3VyIGltYWdlcworaW1wb3J0IGltZ2hkcgorCiAjIEhlcmUgYXJlIHRoZSBlbWFpbCBwYWNrYWdlIG1vZHVsZXMgd2UnbGwgbmVlZAotZnJvbSBlbWFpbC5taW1lLmltYWdlIGltcG9ydCBNSU1FSW1hZ2UKLWZyb20gZW1haWwubWltZS5tdWx0aXBhcnQgaW1wb3J0IE1JTUVNdWx0aXBhcnQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAKLUNPTU1BU1BBQ0UgPSAnLCAnCi0KLSMgQ3JlYXRlIHRoZSBjb250YWluZXIgKG91dGVyKSBlbWFpbCBtZXNzYWdlLgotbXNnID0gTUlNRU11bHRpcGFydCgpCisjIENyZWF0ZSB0aGUgY29udGFpbmVyIGVtYWlsIG1lc3NhZ2UuCittc2cgPSBFbWFpbE1lc3NhZ2UoKQogbXNnWydTdWJqZWN0J10gPSAnT3VyIGZhbWlseSByZXVuaW9uJwogIyBtZSA9PSB0aGUgc2VuZGVyJ3MgZW1haWwgYWRkcmVzcwogIyBmYW1pbHkgPSB0aGUgbGlzdCBvZiBhbGwgcmVjaXBpZW50cycgZW1haWwgYWRkcmVzc2VzCiBtc2dbJ0Zyb20nXSA9IG1lCi1tc2dbJ1RvJ10gPSBDT01NQVNQQUNFLmpvaW4oZmFtaWx5KQorbXNnWydUbyddID0gJywgJy5qb2luKGZhbWlseSkKIG1zZy5wcmVhbWJsZSA9ICdPdXIgZmFtaWx5IHJldW5pb24nCiAKLSMgQXNzdW1lIHdlIGtub3cgdGhhdCB0aGUgaW1hZ2UgZmlsZXMgYXJlIGFsbCBpbiBQTkcgZm9ybWF0CisjIE9wZW4gdGhlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAgVXNlIGltZ2hkciB0byBmaWd1cmUgb3V0IHRoZQorIyBNSU1FIHN1YnR5cGUgZm9yIGVhY2ggc3BlY2lmaWMgaW1hZ2UuCiBmb3IgZmlsZSBpbiBwbmdmaWxlczoKLSAgICAjIE9wZW4gdGhlIGZpbGVzIGluIGJpbmFyeSBtb2RlLiAgTGV0IHRoZSBNSU1FSW1hZ2UgY2xhc3MgYXV0b21hdGljYWxseQotICAgICMgZ3Vlc3MgdGhlIHNwZWNpZmljIGltYWdlIHR5cGUuCiAgICAgd2l0aCBvcGVuKGZpbGUsICdyYicpIGFzIGZwOgotICAgICAgICBpbWcgPSBNSU1FSW1hZ2UoZnAucmVhZCgpKQotICAgIG1zZy5hdHRhY2goaW1nKQorICAgICAgICBpbWdfZGF0YSA9IGZwLnJlYWQoKQorICAgIG1zZy5hZGRfYXR0YWNobWVudChpbWdfZGF0YSwgbWFpbnR5cGU9J2ltYWdlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGU9aW1naGRyLndoYXQoTm9uZSwgaW1nX2RhdGEpKQogCiAjIFNlbmQgdGhlIGVtYWlsIHZpYSBvdXIgb3duIFNNVFAgc2VydmVyLgotcyA9IHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykKLXMuc2VuZF9tZXNzYWdlKG1zZykKLXMucXVpdCgpCit3aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKKyAgICBzLnNlbmRfbWVzc2FnZShtc2cpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIERvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKcmVuYW1lIHRvIERvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQppbmRleCBiOWI4YjQxLi5mNjllZjQwIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKQEAgLTIsMTMgKzIsMTMgQEAKIGltcG9ydCBzbXRwbGliCiAKICMgSW1wb3J0IHRoZSBlbWFpbCBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwubWltZS50ZXh0IGltcG9ydCBNSU1FVGV4dAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIAotIyBPcGVuIGEgcGxhaW4gdGV4dCBmaWxlIGZvciByZWFkaW5nLiAgRm9yIHRoaXMgZXhhbXBsZSwgYXNzdW1lIHRoYXQKLSMgdGhlIHRleHQgZmlsZSBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisjIE9wZW4gdGhlIHBsYWluIHRleHQgZmlsZSB3aG9zZSBuYW1lIGlzIGluIHRleHRmaWxlIGZvciByZWFkaW5nLgogd2l0aCBvcGVuKHRleHRmaWxlKSBhcyBmcDoKICAgICAjIENyZWF0ZSBhIHRleHQvcGxhaW4gbWVzc2FnZQotICAgIG1zZyA9IE1JTUVUZXh0KGZwLnJlYWQoKSkKKyAgICBtc2cgPSBFbWFpbE1lc3NhZ2UoKQorICAgIG1zZy5zZXRfY29udGVudChmcC5yZWFkKCkpCiAKICMgbWUgPT0gdGhlIHNlbmRlcidzIGVtYWlsIGFkZHJlc3MKICMgeW91ID09IHRoZSByZWNpcGllbnQncyBlbWFpbCBhZGRyZXNzCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQppbmRleCA1NzRhMGI2Li5lMGE3ZjAxIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKQEAgLTMsMTEgKzMsMTEgQEAKICIiIlVucGFjayBhIE1JTUUgbWVzc2FnZSBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBlbWFpbAotaW1wb3J0IGVycm5vCiBpbXBvcnQgbWltZXR5cGVzCiAKK2Zyb20gZW1haWwucG9saWN5IGltcG9ydCBkZWZhdWx0CisKIGZyb20gYXJncGFyc2UgaW1wb3J0IEFyZ3VtZW50UGFyc2VyCiAKIApAQCAtMjIsOCArMjIsOCBAQAogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ21zZ2ZpbGUnKQogICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCiAKLSAgICB3aXRoIG9wZW4oYXJncy5tc2dmaWxlKSBhcyBmcDoKLSAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZnApCisgICAgd2l0aCBvcGVuKGFyZ3MubXNnZmlsZSwgJ3JiJykgYXMgZnA6CisgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmcCwgcG9saWN5PWRlZmF1bHQpCiAKICAgICB0cnk6CiAgICAgICAgIG9zLm1rZGlyKGFyZ3MuZGlyZWN0b3J5KQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMgYi9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYwppbmRleCA5ODZkNjcwLi5lYWQ3YmRkIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYworKysgYi9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYwpAQCAtNjMsNiArNjMsOCBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2FkIFwiJXNcIlxuIiwgYXJndlsxXSk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHJldHVybiAxMjA7CisgICAgfQogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3Rlc3QucHkgYi9Eb2MvaW5jbHVkZXMvdGVzdC5weQppbmRleCA3ZWJmNDZhLi45ZTlkNGE2IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvdGVzdC5weQorKysgYi9Eb2MvaW5jbHVkZXMvdGVzdC5weQpAQCAtMjA0LDcgKzIwNCw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGZyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGdldF9wbGF0Zm9ybQotUExBVF9TUEVDID0gIiVzLSVzIiAlIChnZXRfcGxhdGZvcm0oKSwgc3lzLnZlcnNpb25bMDozXSkKK1BMQVRfU1BFQyA9ICIlcy0lZC4lZCIgJSAoZ2V0X3BsYXRmb3JtKCksICpzeXMudmVyc2lvbl9pbmZvWzoyXSkKIHNyYyA9IG9zLnBhdGguam9pbigiYnVpbGQiLCAibGliLiVzIiAlIFBMQVRfU1BFQykKIHN5cy5wYXRoLmFwcGVuZChzcmMpCiAKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkgYi9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CmluZGV4IDNhOGNmNDcuLmFlNWE1MDkgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKKysrIGIvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQpAQCAtMSw0NiArMSwxMyBAQAotZnJvbSBkYXRldGltZSBpbXBvcnQgdHppbmZvLCB0aW1lZGVsdGEsIGRhdGV0aW1lCitmcm9tIGRhdGV0aW1lIGltcG9ydCB0emluZm8sIHRpbWVkZWx0YSwgZGF0ZXRpbWUsIHRpbWV6b25lCiAKIFpFUk8gPSB0aW1lZGVsdGEoMCkKIEhPVVIgPSB0aW1lZGVsdGEoaG91cnM9MSkKLQotIyBBIFVUQyBjbGFzcy4KLQotY2xhc3MgVVRDKHR6aW5mbyk6Ci0gICAgIiIiVVRDIiIiCi0KLSAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KLQotICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gIlVUQyIKLQotICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gWkVSTwotCi11dGMgPSBVVEMoKQotCi0jIEEgY2xhc3MgYnVpbGRpbmcgdHppbmZvIG9iamVjdHMgZm9yIGZpeGVkLW9mZnNldCB0aW1lIHpvbmVzLgotIyBOb3RlIHRoYXQgRml4ZWRPZmZzZXQoMCwgIlVUQyIpIGlzIGEgZGlmZmVyZW50IHdheSB0byBidWlsZCBhCi0jIFVUQyB0emluZm8gb2JqZWN0LgotCi1jbGFzcyBGaXhlZE9mZnNldCh0emluZm8pOgotICAgICIiIkZpeGVkIG9mZnNldCBpbiBtaW51dGVzIGVhc3QgZnJvbSBVVEMuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb2Zmc2V0LCBuYW1lKToKLSAgICAgICAgc2VsZi5fX29mZnNldCA9IHRpbWVkZWx0YShtaW51dGVzPW9mZnNldCkKLSAgICAgICAgc2VsZi5fX25hbWUgPSBuYW1lCi0KLSAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19vZmZzZXQKLQotICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gc2VsZi5fX25hbWUKLQotICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gWkVSTworU0VDT05EID0gdGltZWRlbHRhKHNlY29uZHM9MSkKIAogIyBBIGNsYXNzIGNhcHR1cmluZyB0aGUgcGxhdGZvcm0ncyBpZGVhIG9mIGxvY2FsIHRpbWUuCi0KKyMgKE1heSByZXN1bHQgaW4gd3JvbmcgdmFsdWVzIG9uIGhpc3RvcmljYWwgdGltZXMgaW4KKyMgIHRpbWV6b25lcyB3aGVyZSBVVEMgb2Zmc2V0IGFuZC9vciB0aGUgRFNUIHJ1bGVzIGhhZAorIyAgY2hhbmdlZCBpbiB0aGUgcGFzdC4pCiBpbXBvcnQgdGltZSBhcyBfdGltZQogCiBTVERPRkZTRVQgPSB0aW1lZGVsdGEoc2Vjb25kcyA9IC1fdGltZS50aW1lem9uZSkKQEAgLTUzLDYgKzIwLDE2IEBACiAKIGNsYXNzIExvY2FsVGltZXpvbmUodHppbmZvKToKIAorICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIHN0YW1wID0gKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvPXNlbGYpKSAvLyBTRUNPTkQKKyAgICAgICAgYXJncyA9IF90aW1lLmxvY2FsdGltZShzdGFtcClbOjZdCisgICAgICAgIGRzdF9kaWZmID0gRFNURElGRiAvLyBTRUNPTkQKKyAgICAgICAgIyBEZXRlY3QgZm9sZAorICAgICAgICBmb2xkID0gKGFyZ3MgPT0gX3RpbWUubG9jYWx0aW1lKHN0YW1wIC0gZHN0X2RpZmYpKQorICAgICAgICByZXR1cm4gZGF0ZXRpbWUoKmFyZ3MsIG1pY3Jvc2Vjb25kPWR0Lm1pY3Jvc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvPXNlbGYsIGZvbGQ9Zm9sZCkKKwogICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgogICAgICAgICBpZiBzZWxmLl9pc2RzdChkdCk6CiAgICAgICAgICAgICByZXR1cm4gRFNUT0ZGU0VUCkBAIC05OSwyMCArNzYsMzcgQEAKICMgSW4gdGhlIFVTLCBzaW5jZSAyMDA3LCBEU1Qgc3RhcnRzIGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIHNlY29uZAogIyBTdW5kYXkgaW4gTWFyY2gsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkgb24gb3IgYWZ0ZXIgTWFyIDguCiBEU1RTVEFSVF8yMDA3ID0gZGF0ZXRpbWUoMSwgMywgOCwgMikKLSMgYW5kIGVuZHMgYXQgMmFtIChEU1QgdGltZTsgMWFtIHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBmaXJzdCBTdW5kYXkgb2YgTm92LgotRFNURU5EXzIwMDcgPSBkYXRldGltZSgxLCAxMSwgMSwgMSkKKyMgYW5kIGVuZHMgYXQgMmFtIChEU1QgdGltZSkgb24gdGhlIGZpcnN0IFN1bmRheSBvZiBOb3YuCitEU1RFTkRfMjAwNyA9IGRhdGV0aW1lKDEsIDExLCAxLCAyKQogIyBGcm9tIDE5ODcgdG8gMjAwNiwgRFNUIHVzZWQgdG8gc3RhcnQgYXQgMmFtIChzdGFuZGFyZCB0aW1lKSBvbiB0aGUgZmlyc3QKLSMgU3VuZGF5IGluIEFwcmlsIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZTsgMWFtIHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0CisjIFN1bmRheSBpbiBBcHJpbCBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWUpIG9uIHRoZSBsYXN0CiAjIFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5IG9uIG9yIGFmdGVyIE9jdCAyNS4KIERTVFNUQVJUXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDQsIDEsIDIpCi1EU1RFTkRfMTk4N18yMDA2ID0gZGF0ZXRpbWUoMSwgMTAsIDI1LCAxKQorRFNURU5EXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDEwLCAyNSwgMikKICMgRnJvbSAxOTY3IHRvIDE5ODYsIERTVCB1c2VkIHRvIHN0YXJ0IGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QKLSMgU3VuZGF5IGluIEFwcmlsICh0aGUgb25lIG9uIG9yIGFmdGVyIEFwcmlsIDI0KSBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWU7Ci0jIDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdCBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheQorIyBTdW5kYXkgaW4gQXByaWwgKHRoZSBvbmUgb24gb3IgYWZ0ZXIgQXByaWwgMjQpIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZSkKKyMgb24gdGhlIGxhc3QgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkKICMgb24gb3IgYWZ0ZXIgT2N0IDI1LgogRFNUU1RBUlRfMTk2N18xOTg2ID0gZGF0ZXRpbWUoMSwgNCwgMjQsIDIpCiBEU1RFTkRfMTk2N18xOTg2ID0gRFNURU5EXzE5ODdfMjAwNgogCitkZWYgdXNfZHN0X3JhbmdlKHllYXIpOgorICAgICMgRmluZCBzdGFydCBhbmQgZW5kIHRpbWVzIGZvciBVUyBEU1QuIEZvciB5ZWFycyBiZWZvcmUgMTk2NywgcmV0dXJuCisgICAgIyBzdGFydCA9IGVuZCBmb3Igbm8gRFNULgorICAgIGlmIDIwMDYgPCB5ZWFyOgorICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMjAwNywgRFNURU5EXzIwMDcKKyAgICBlbGlmIDE5ODYgPCB5ZWFyIDwgMjAwNzoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5ODdfMjAwNiwgRFNURU5EXzE5ODdfMjAwNgorICAgIGVsaWYgMTk2NiA8IHllYXIgPCAxOTg3OgorICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk2N18xOTg2LCBEU1RFTkRfMTk2N18xOTg2CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIChkYXRldGltZSh5ZWFyLCAxLCAxKSwgKSAqIDIKKworICAgIHN0YXJ0ID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdHN0YXJ0LnJlcGxhY2UoeWVhcj15ZWFyKSkKKyAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0ZW5kLnJlcGxhY2UoeWVhcj15ZWFyKSkKKyAgICByZXR1cm4gc3RhcnQsIGVuZAorCisKIGNsYXNzIFVTVGltZVpvbmUodHppbmZvKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3VycywgcmVwcm5hbWUsIHN0ZG5hbWUsIGRzdG5hbWUpOgpAQCAtMTQxLDI3ICsxMzUsMzkgQEAKICAgICAgICAgICAgICMgaW1wbGVtZW50YXRpb24pIHBhc3NlcyBhIGRhdGV0aW1lIHdpdGggZHQudHppbmZvIGlzIHNlbGYuCiAgICAgICAgICAgICByZXR1cm4gWkVSTwogICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKLQotICAgICAgICAjIEZpbmQgc3RhcnQgYW5kIGVuZCB0aW1lcyBmb3IgVVMgRFNULiBGb3IgeWVhcnMgYmVmb3JlIDE5NjcsIHJldHVybgotICAgICAgICAjIFpFUk8gZm9yIG5vIERTVC4KLSAgICAgICAgaWYgMjAwNiA8IGR0LnllYXI6Ci0gICAgICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMjAwNywgRFNURU5EXzIwMDcKLSAgICAgICAgZWxpZiAxOTg2IDwgZHQueWVhciA8IDIwMDc6Ci0gICAgICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk4N18yMDA2LCBEU1RFTkRfMTk4N18yMDA2Ci0gICAgICAgIGVsaWYgMTk2NiA8IGR0LnllYXIgPCAxOTg3OgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5NjdfMTk4NiwgRFNURU5EXzE5NjdfMTk4NgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFpFUk8KLQotICAgICAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RzdGFydC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCi0gICAgICAgIGVuZCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RlbmQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQotCisgICAgICAgIHN0YXJ0LCBlbmQgPSB1c19kc3RfcmFuZ2UoZHQueWVhcikKICAgICAgICAgIyBDYW4ndCBjb21wYXJlIG5haXZlIHRvIGF3YXJlIG9iamVjdHMsIHNvIHN0cmlwIHRoZSB0aW1lem9uZSBmcm9tCiAgICAgICAgICMgZHQgZmlyc3QuCi0gICAgICAgIGlmIHN0YXJ0IDw9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpIDwgZW5kOgorICAgICAgICBkdCA9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpCisgICAgICAgIGlmIHN0YXJ0ICsgSE9VUiA8PSBkdCA8IGVuZCAtIEhPVVI6CisgICAgICAgICAgICAjIERTVCBpcyBpbiBlZmZlY3QuCiAgICAgICAgICAgICByZXR1cm4gSE9VUgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFpFUk8KKyAgICAgICAgaWYgZW5kIC0gSE9VUiA8PSBkdCA8IGVuZDoKKyAgICAgICAgICAgICMgRm9sZCAoYW4gYW1iaWd1b3VzIGhvdXIpOiB1c2UgZHQuZm9sZCB0byBkaXNhbWJpZ3VhdGUuCisgICAgICAgICAgICByZXR1cm4gWkVSTyBpZiBkdC5mb2xkIGVsc2UgSE9VUgorICAgICAgICBpZiBzdGFydCA8PSBkdCA8IHN0YXJ0ICsgSE9VUjoKKyAgICAgICAgICAgICMgR2FwIChhIG5vbi1leGlzdGVudCBob3VyKTogcmV2ZXJzZSB0aGUgZm9sZCBydWxlLgorICAgICAgICAgICAgcmV0dXJuIEhPVVIgaWYgZHQuZm9sZCBlbHNlIFpFUk8KKyAgICAgICAgIyBEU1QgaXMgb2ZmLgorICAgICAgICByZXR1cm4gWkVSTworCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKyAgICAgICAgc3RhcnQsIGVuZCA9IHVzX2RzdF9yYW5nZShkdC55ZWFyKQorICAgICAgICBzdGFydCA9IHN0YXJ0LnJlcGxhY2UodHppbmZvPXNlbGYpCisgICAgICAgIGVuZCA9IGVuZC5yZXBsYWNlKHR6aW5mbz1zZWxmKQorICAgICAgICBzdGRfdGltZSA9IGR0ICsgc2VsZi5zdGRvZmZzZXQKKyAgICAgICAgZHN0X3RpbWUgPSBzdGRfdGltZSArIEhPVVIKKyAgICAgICAgaWYgZW5kIDw9IGRzdF90aW1lIDwgZW5kICsgSE9VUjoKKyAgICAgICAgICAgICMgUmVwZWF0ZWQgaG91cgorICAgICAgICAgICAgcmV0dXJuIHN0ZF90aW1lLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBpZiBzdGRfdGltZSA8IHN0YXJ0IG9yIGRzdF90aW1lID49IGVuZDoKKyAgICAgICAgICAgICMgU3RhbmRhcmQgdGltZQorICAgICAgICAgICAgcmV0dXJuIHN0ZF90aW1lCisgICAgICAgIGlmIHN0YXJ0IDw9IHN0ZF90aW1lIDwgZW5kIC0gSE9VUjoKKyAgICAgICAgICAgICMgRGF5bGlnaHQgc2F2aW5nIHRpbWUKKyAgICAgICAgICAgIHJldHVybiBkc3RfdGltZQorCiAKIEVhc3Rlcm4gID0gVVNUaW1lWm9uZSgtNSwgIkVhc3Rlcm4iLCAgIkVTVCIsICJFRFQiKQogQ2VudHJhbCAgPSBVU1RpbWVab25lKC02LCAiQ2VudHJhbCIsICAiQ1NUIiwgIkNEVCIpCmRpZmYgLS1naXQgYS9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QgYi9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKaW5kZXggMWVmMzE0OS4uYjIyNDY1ZCAxMDA2NDQKLS0tIGEvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CisrKyBiL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdApAQCAtMiw5ICsyLDkgQEAKIAogLi4gX2luc3RhbGxpbmctaW5kZXg6CiAKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gIEluc3RhbGxpbmcgUHl0aG9uIE1vZHVsZXMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqKioqKioqKioqKioqKioqKioqKioqKioqCitJbnN0YWxsaW5nIFB5dGhvbiBNb2R1bGVzCisqKioqKioqKioqKioqKioqKioqKioqKioqCiAKIDpFbWFpbDogZGlzdHV0aWxzLXNpZ0BweXRob24ub3JnCiAKQEAgLTM0LDI0ICszNCwyNCBAQAogCiAqIGBgcGlwYGAgaXMgdGhlIHByZWZlcnJlZCBpbnN0YWxsZXIgcHJvZ3JhbS4gU3RhcnRpbmcgd2l0aCBQeXRob24gMy40LCBpdAogICBpcyBpbmNsdWRlZCBieSBkZWZhdWx0IHdpdGggdGhlIFB5dGhvbiBiaW5hcnkgaW5zdGFsbGVycy4KLSogYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGEgc2VtaS1pc29sYXRlZCBQeXRob24gZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MKKyogQSAqdmlydHVhbCBlbnZpcm9ubWVudCogaXMgYSBzZW1pLWlzb2xhdGVkIFB5dGhvbiBlbnZpcm9ubWVudCB0aGF0IGFsbG93cwogICBwYWNrYWdlcyB0byBiZSBpbnN0YWxsZWQgZm9yIHVzZSBieSBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24sIHJhdGhlciB0aGFuCi0gIGJlaW5nIGluc3RhbGxlZCBzeXN0ZW0gd2lkZQotKiBgYHB5dmVudmBgIGlzIHRoZSBzdGFuZGFyZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cywgYW5kIGhhcworICBiZWluZyBpbnN0YWxsZWQgc3lzdGVtIHdpZGUuCisqIGBgdmVudmBgIGlzIHRoZSBzdGFuZGFyZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cywgYW5kIGhhcwogICBiZWVuIHBhcnQgb2YgUHl0aG9uIHNpbmNlIFB5dGhvbiAzLjMuIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgaXQKLSAgZGVmYXVsdHMgdG8gaW5zdGFsbGluZyBgYHBpcGBgIGludG8gYWxsIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudHMKKyAgZGVmYXVsdHMgdG8gaW5zdGFsbGluZyBgYHBpcGBgIGludG8gYWxsIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudHMuCiAqIGBgdmlydHVhbGVudmBgIGlzIGEgdGhpcmQgcGFydHkgYWx0ZXJuYXRpdmUgKGFuZCBwcmVkZWNlc3NvcikgdG8KLSAgYGBweXZlbnZgYC4gSXQgYWxsb3dzIHZpcnR1YWwgZW52aXJvbm1lbnRzIHRvIGJlIHVzZWQgb24gdmVyc2lvbnMgb2YKLSAgUHl0aG9uIHByaW9yIHRvIDMuNCwgd2hpY2ggZWl0aGVyIGRvbid0IHByb3ZpZGUgYGBweXZlbnZgYCBhdCBhbGwsIG9yCisgIGBgdmVudmBgLiBJdCBhbGxvd3MgdmlydHVhbCBlbnZpcm9ubWVudHMgdG8gYmUgdXNlZCBvbiB2ZXJzaW9ucyBvZgorICBQeXRob24gcHJpb3IgdG8gMy40LCB3aGljaCBlaXRoZXIgZG9uJ3QgcHJvdmlkZSBgYHZlbnZgYCBhdCBhbGwsIG9yCiAgIGFyZW4ndCBhYmxlIHRvIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCBgYHBpcGBgIGludG8gY3JlYXRlZCBlbnZpcm9ubWVudHMuCi0qIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBJbmRleCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gX18gaXMgYSBwdWJsaWMKKyogVGhlIGBQeXRob24gUGFja2FnaW5nIEluZGV4IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfXyBpcyBhIHB1YmxpYwogICByZXBvc2l0b3J5IG9mIG9wZW4gc291cmNlIGxpY2Vuc2VkIHBhY2thZ2VzIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UgYnkKLSAgb3RoZXIgUHl0aG9uIHVzZXJzCisgIG90aGVyIFB5dGhvbiB1c2Vycy4KICogdGhlIGBQeXRob24gUGFja2FnaW5nIEF1dGhvcml0eQogICA8aHR0cHM6Ly93d3cucHlwYS5pby9lbi9sYXRlc3QvPmBfXyBhcmUgdGhlIGdyb3VwIG9mCiAgIGRldmVsb3BlcnMgYW5kIGRvY3VtZW50YXRpb24gYXV0aG9ycyByZXNwb25zaWJsZSBmb3IgdGhlIG1haW50ZW5hbmNlIGFuZAogICBldm9sdXRpb24gb2YgdGhlIHN0YW5kYXJkIHBhY2thZ2luZyB0b29scyBhbmQgdGhlIGFzc29jaWF0ZWQgbWV0YWRhdGEgYW5kCi0gIGZpbGUgZm9ybWF0IHN0YW5kYXJkcy4gVGhleSBtYWludGFpbiBhIHZhcmlldHkgb2YgdG9vbHMsIGRvY3VtZW50YXRpb24KKyAgZmlsZSBmb3JtYXQgc3RhbmRhcmRzLiBUaGV5IG1haW50YWluIGEgdmFyaWV0eSBvZiB0b29scywgZG9jdW1lbnRhdGlvbiwKICAgYW5kIGlzc3VlIHRyYWNrZXJzIG9uIGJvdGggYEdpdEh1YiA8aHR0cHM6Ly9naXRodWIuY29tL3B5cGE+YF9fIGFuZAogICBgQml0QnVja2V0IDxodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS8+YF9fLgogKiBgYGRpc3R1dGlsc2BgIGlzIHRoZSBvcmlnaW5hbCBidWlsZCBhbmQgZGlzdHJpYnV0aW9uIHN5c3RlbSBmaXJzdCBhZGRlZCB0bwpAQCAtNjIsNiArNjIsMTkgQEAKICAgb2YgdGhlIG1haWxpbmcgbGlzdCB1c2VkIHRvIGNvb3JkaW5hdGUgUHl0aG9uIHBhY2thZ2luZyBzdGFuZGFyZHMKICAgZGV2ZWxvcG1lbnQpLgogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBgYHB5dmVudmBgIHdhcyB0aGUgcmVjb21tZW5kZWQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMgZm9yCisgICBQeXRob24gMy4zIGFuZCAzLjQsIGFuZCBpcyBgZGVwcmVjYXRlZCBpbiBQeXRob24gMy42CisgICA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2L3doYXRzbmV3LzMuNi5odG1sI2RlcHJlY2F0ZWQtZmVhdHVyZXM+YF8uCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy41CisgICBUaGUgdXNlIG9mIGBgdmVudmBgIGlzIG5vdyByZWNvbW1lbmRlZCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMuCisKKy4uIHNlZWFsc286OgorCisgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBDcmVhdGluZyBhbmQgdXNpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI2NyZWF0aW5nLXZpcnR1YWwtZW52aXJvbm1lbnRzPmBfXworCiAKIEJhc2ljIHVzYWdlCiA9PT09PT09PT09PQpAQCAtMTAwLDEzICsxMTMsMTQgQEAKIE1vcmUgaW5mb3JtYXRpb24gYW5kIHJlc291cmNlcyByZWdhcmRpbmcgYGBwaXBgYCBhbmQgaXRzIGNhcGFiaWxpdGllcyBjYW4gYmUKIGZvdW5kIGluIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnPmBfXy4KIAotYGBweXZlbnZgYCBoYXMgaXRzIG93biBkb2N1bWVudGF0aW9uIGF0IDpyZWY6YHNjcmlwdHMtcHl2ZW52YC4gSW5zdGFsbGluZwotaW50byBhbiBhY3RpdmUgdmlydHVhbCBlbnZpcm9ubWVudCB1c2VzIHRoZSBjb21tYW5kcyBzaG93biBhYm92ZS4KK0NyZWF0aW9uIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzIGlzIGRvbmUgdGhyb3VnaCB0aGUgOm1vZDpgdmVudmAgbW9kdWxlLgorSW5zdGFsbGluZyBwYWNrYWdlcyBpbnRvIGFuIGFjdGl2ZSB2aXJ0dWFsIGVudmlyb25tZW50IHVzZXMgdGhlIGNvbW1hbmRzIHNob3duCithYm92ZS4KIAogLi4gc2VlYWxzbzo6CiAKICAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBJbnN0YWxsaW5nIFB5dGhvbiBEaXN0cmlidXRpb24gUGFja2FnZXMKLSAgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvaW5zdGFsbGluZy8+YF9fCisgICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8+YF9fCiAKIAogSG93IGRvIEkgLi4uPwpAQCAtMTI0LDcgKzEzOCw3IEBACiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogUmVxdWlyZW1lbnRzIGZvciBJbnN0YWxsaW5nIFBhY2thZ2VzCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvaW5zdGFsbGluZy8jcmVxdWlyZW1lbnRzLWZvci1pbnN0YWxsaW5nLXBhY2thZ2VzPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8jcmVxdWlyZW1lbnRzLWZvci1pbnN0YWxsaW5nLXBhY2thZ2VzPmBfXwogCiAKIC4uIGluc3RhbGxpbmctcGVyLXVzZXItaW5zdGFsbGF0aW9uOgpAQCAtMTQyLDIwICsxNTYsMTkgQEAKIEEgbnVtYmVyIG9mIHNjaWVudGlmaWMgUHl0aG9uIHBhY2thZ2VzIGhhdmUgY29tcGxleCBiaW5hcnkgZGVwZW5kZW5jaWVzLCBhbmQKIGFyZW4ndCBjdXJyZW50bHkgZWFzeSB0byBpbnN0YWxsIHVzaW5nIGBgcGlwYGAgZGlyZWN0bHkuIEF0IHRoaXMgcG9pbnQgaW4KIHRpbWUsIGl0IHdpbGwgb2Z0ZW4gYmUgZWFzaWVyIGZvciB1c2VycyB0byBpbnN0YWxsIHRoZXNlIHBhY2thZ2VzIGJ5Ci1gb3RoZXIgbWVhbnMKLTxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KK2BvdGhlciBtZWFucyA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KIHJhdGhlciB0aGFuIGF0dGVtcHRpbmcgdG8gaW5zdGFsbCB0aGVtIHdpdGggYGBwaXBgYC4KIAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEluc3RhbGxpbmcgU2NpZW50aWZpYyBQYWNrYWdlcwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NjaWVuY2UvPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCiAKIAogLi4uIHdvcmsgd2l0aCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gaW5zdGFsbGVkIGluIHBhcmFsbGVsPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PbiBMaW51eCwgTWFjIE9TIFggYW5kIG90aGVyIFBPU0lYIHN5c3RlbXMsIHVzZSB0aGUgdmVyc2lvbmVkIFB5dGhvbiBjb21tYW5kcworT24gTGludXgsIE1hYyBPUyBYLCBhbmQgb3RoZXIgUE9TSVggc3lzdGVtcywgdXNlIHRoZSB2ZXJzaW9uZWQgUHl0aG9uIGNvbW1hbmRzCiBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgYC1tYGAgc3dpdGNoIHRvIHJ1biB0aGUgYXBwcm9wcmlhdGUgY29weSBvZgogYGBwaXBgYDo6CiAKQEAgLTE2NCw3ICsxNzcsNyBAQAogICAgcHl0aG9uMyAgIC1tIHBpcCBpbnN0YWxsIFNvbWVQYWNrYWdlICAjIGRlZmF1bHQgUHl0aG9uIDMKICAgIHB5dGhvbjMuNCAtbSBwaXAgaW5zdGFsbCBTb21lUGFja2FnZSAgIyBzcGVjaWZpY2FsbHkgUHl0aG9uIDMuNAogCi0oYXBwcm9wcmlhdGVseSB2ZXJzaW9uZWQgYGBwaXBgYCBjb21tYW5kcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUpCitBcHByb3ByaWF0ZWx5IHZlcnNpb25lZCBgYHBpcGBgIGNvbW1hbmRzIG1heSBhbHNvIGJlIGF2YWlsYWJsZS4KIAogT24gV2luZG93cywgdXNlIHRoZSBgYHB5YGAgUHl0aG9uIGxhdW5jaGVyIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGBgLW1gYAogc3dpdGNoOjoKQEAgLTIxMiwxMSArMjI1LDExIEBACiB0aGFuIG5lZWRpbmcgdG8gYnVpbGQgdGhlbSB0aGVtc2VsdmVzLgogCiBTb21lIG9mIHRoZSBzb2x1dGlvbnMgZm9yIGluc3RhbGxpbmcgYHNjaWVudGlmaWMgc29mdHdhcmUKLTxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KLXRoYXQgaXMgbm90IHlldCBhdmFpbGFibGUgYXMgcHJlLWJ1aWx0IGBgd2hlZWxgYCBmaWxlcyBtYXkgYWxzbyBoZWxwIHdpdGgKKzxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwordGhhdCBhcmUgbm90IHlldCBhdmFpbGFibGUgYXMgcHJlLWJ1aWx0IGBgd2hlZWxgYCBmaWxlcyBtYXkgYWxzbyBoZWxwIHdpdGgKIG9idGFpbmluZyBvdGhlciBiaW5hcnkgZXh0ZW5zaW9ucyB3aXRob3V0IG5lZWRpbmcgdG8gYnVpbGQgdGhlbSBsb2NhbGx5LgogCiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQmluYXJ5IEV4dGVuc2lvbnMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9leHRlbnNpb25zLz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2V4dGVuc2lvbnMvPmBfXwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CmluZGV4IGFlNzJkMjYuLjllNTE0MTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKQEAgLTksNiArOSw5IEBACiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2FzeW5jaGF0LnB5YAogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBQbGVhc2UgdXNlIDptb2Q6YGFzeW5jaW9gIGluc3RlYWQuCisKIC0tLS0tLS0tLS0tLS0tCiAKIC4uIG5vdGU6OgpAQCAtNTgsMTMgKzYxLDEzIEBACiAgICAgICBUaGUgYXN5bmNocm9ub3VzIG91dHB1dCBidWZmZXIgc2l6ZSAoZGVmYXVsdCBgYDQwOTZgYCkuCiAKICAgIFVubGlrZSA6Y2xhc3M6YGFzeW5jb3JlLmRpc3BhdGNoZXJgLCA6Y2xhc3M6YGFzeW5jX2NoYXRgIGFsbG93cyB5b3UgdG8KLSAgIGRlZmluZSBhIGZpcnN0LWluLWZpcnN0LW91dCBxdWV1ZSAoZmlmbykgb2YgKnByb2R1Y2VycyouIEEgcHJvZHVjZXIgbmVlZAorICAgZGVmaW5lIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSBvZiAqcHJvZHVjZXJzKi4gQSBwcm9kdWNlciBuZWVkCiAgICBoYXZlIG9ubHkgb25lIG1ldGhvZCwgOm1ldGg6YG1vcmVgLCB3aGljaCBzaG91bGQgcmV0dXJuIGRhdGEgdG8gYmUKICAgIHRyYW5zbWl0dGVkIG9uIHRoZSBjaGFubmVsLgogICAgVGhlIHByb2R1Y2VyIGluZGljYXRlcyBleGhhdXN0aW9uICgqaS5lLiogdGhhdCBpdCBjb250YWlucyBubyBtb3JlIGRhdGEpIGJ5CiAgICBoYXZpbmcgaXRzIDptZXRoOmBtb3JlYCBtZXRob2QgcmV0dXJuIHRoZSBlbXB0eSBieXRlcyBvYmplY3QuIEF0IHRoaXMgcG9pbnQKLSAgIHRoZSA6Y2xhc3M6YGFzeW5jX2NoYXRgIG9iamVjdCByZW1vdmVzIHRoZSBwcm9kdWNlciBmcm9tIHRoZSBmaWZvIGFuZCBzdGFydHMKLSAgIHVzaW5nIHRoZSBuZXh0IHByb2R1Y2VyLCBpZiBhbnkuIFdoZW4gdGhlIHByb2R1Y2VyIGZpZm8gaXMgZW1wdHkgdGhlCisgICB0aGUgOmNsYXNzOmBhc3luY19jaGF0YCBvYmplY3QgcmVtb3ZlcyB0aGUgcHJvZHVjZXIgZnJvbSB0aGUgcXVldWUgYW5kIHN0YXJ0cworICAgdXNpbmcgdGhlIG5leHQgcHJvZHVjZXIsIGlmIGFueS4gV2hlbiB0aGUgcHJvZHVjZXIgcXVldWUgaXMgZW1wdHkgdGhlCiAgICA6bWV0aDpgaGFuZGxlX3dyaXRlYCBtZXRob2QgZG9lcyBub3RoaW5nLiBZb3UgdXNlIHRoZSBjaGFubmVsIG9iamVjdCdzCiAgICA6bWV0aDpgc2V0X3Rlcm1pbmF0b3JgIG1ldGhvZCB0byBkZXNjcmliZSBob3cgdG8gcmVjb2duaXplIHRoZSBlbmQgb2YsIG9yCiAgICBhbiBpbXBvcnRhbnQgYnJlYWtwb2ludCBpbiwgYW4gaW5jb21pbmcgdHJhbnNtaXNzaW9uIGZyb20gdGhlIHJlbW90ZQpAQCAtNzgsOCArODEsOCBAQAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmNsb3NlX3doZW5fZG9uZSgpCiAKLSAgIFB1c2hlcyBhIGBgTm9uZWBgIG9uIHRvIHRoZSBwcm9kdWNlciBmaWZvLiBXaGVuIHRoaXMgcHJvZHVjZXIgaXMgcG9wcGVkIG9mZgotICAgdGhlIGZpZm8gaXQgY2F1c2VzIHRoZSBjaGFubmVsIHRvIGJlIGNsb3NlZC4KKyAgIFB1c2hlcyBhIGBgTm9uZWBgIG9uIHRvIHRoZSBwcm9kdWNlciBxdWV1ZS4gV2hlbiB0aGlzIHByb2R1Y2VyIGlzIHBvcHBlZCBvZmYKKyAgIHRoZSBxdWV1ZSBpdCBjYXVzZXMgdGhlIGNoYW5uZWwgdG8gYmUgY2xvc2VkLgogCiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuY29sbGVjdF9pbmNvbWluZ19kYXRhKGRhdGEpCkBAIC05Miw3ICs5NSw3IEBACiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmRpc2NhcmRfYnVmZmVycygpCiAKICAgIEluIGVtZXJnZW5jaWVzIHRoaXMgbWV0aG9kIHdpbGwgZGlzY2FyZCBhbnkgZGF0YSBoZWxkIGluIHRoZSBpbnB1dCBhbmQvb3IKLSAgIG91dHB1dCBidWZmZXJzIGFuZCB0aGUgcHJvZHVjZXIgZmlmby4KKyAgIG91dHB1dCBidWZmZXJzIGFuZCB0aGUgcHJvZHVjZXIgcXVldWUuCiAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5mb3VuZF90ZXJtaW5hdG9yKCkKQEAgLTExMCw3ICsxMTMsNyBAQAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LnB1c2goZGF0YSkKIAotICAgUHVzaGVzIGRhdGEgb24gdG8gdGhlIGNoYW5uZWwncyBmaWZvIHRvIGVuc3VyZSBpdHMgdHJhbnNtaXNzaW9uLgorICAgUHVzaGVzIGRhdGEgb24gdG8gdGhlIGNoYW5uZWwncyBxdWV1ZSB0byBlbnN1cmUgaXRzIHRyYW5zbWlzc2lvbi4KICAgIFRoaXMgaXMgYWxsIHlvdSBuZWVkIHRvIGRvIHRvIGhhdmUgdGhlIGNoYW5uZWwgd3JpdGUgdGhlIGRhdGEgb3V0IHRvIHRoZQogICAgbmV0d29yaywgYWx0aG91Z2ggaXQgaXMgcG9zc2libGUgdG8gdXNlIHlvdXIgb3duIHByb2R1Y2VycyBpbiBtb3JlIGNvbXBsZXgKICAgIHNjaGVtZXMgdG8gaW1wbGVtZW50IGVuY3J5cHRpb24gYW5kIGNodW5raW5nLCBmb3IgZXhhbXBsZS4KQEAgLTExOCw3ICsxMjEsNyBAQAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LnB1c2hfd2l0aF9wcm9kdWNlcihwcm9kdWNlcikKIAotICAgVGFrZXMgYSBwcm9kdWNlciBvYmplY3QgYW5kIGFkZHMgaXQgdG8gdGhlIHByb2R1Y2VyIGZpZm8gYXNzb2NpYXRlZCB3aXRoCisgICBUYWtlcyBhIHByb2R1Y2VyIG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGUgcHJvZHVjZXIgcXVldWUgYXNzb2NpYXRlZCB3aXRoCiAgICB0aGUgY2hhbm5lbC4gIFdoZW4gYWxsIGN1cnJlbnRseS1wdXNoZWQgcHJvZHVjZXJzIGhhdmUgYmVlbiBleGhhdXN0ZWQgdGhlCiAgICBjaGFubmVsIHdpbGwgY29uc3VtZSB0aGlzIHByb2R1Y2VyJ3MgZGF0YSBieSBjYWxsaW5nIGl0cyA6bWV0aDpgbW9yZWAKICAgIG1ldGhvZCBhbmQgc2VuZCB0aGUgZGF0YSB0byB0aGUgcmVtb3RlIGVuZHBvaW50LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CmluZGV4IGQ3MjAxNjAuLmJiNjAyYzYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKQEAgLTExMCw4ICsxMTAsOSBAQAogICAgY2FsbGVkIGFmdGVyIDptZXRoOmBjYWxsX3Nvb25gIHJldHVybnMsIHdoZW4gY29udHJvbCByZXR1cm5zIHRvIHRoZSBldmVudAogICAgbG9vcC4KIAotICAgVGhpcyBvcGVyYXRlcyBhcyBhIEZJRk8gcXVldWUsIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBpbgotICAgd2hpY2ggdGhleSBhcmUgcmVnaXN0ZXJlZC4gIEVhY2ggY2FsbGJhY2sgd2lsbCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgorICAgVGhpcyBvcGVyYXRlcyBhcyBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUsIGNhbGxiYWNrcworICAgYXJlIGNhbGxlZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgcmVnaXN0ZXJlZC4gIEVhY2ggY2FsbGJhY2sKKyAgIHdpbGwgYmUgY2FsbGVkIGV4YWN0bHkgb25jZS4KIAogICAgQW55IHBvc2l0aW9uYWwgYXJndW1lbnRzIGFmdGVyIHRoZSBjYWxsYmFjayB3aWxsIGJlIHBhc3NlZCB0byB0aGUKICAgIGNhbGxiYWNrIHdoZW4gaXQgaXMgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0IGIvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CmluZGV4IGM4MzhiZTcuLjExZDM2MTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKQEAgLTEyLDYgKzEyLDkgQEAKIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvYXN5bmNvcmUucHlgCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIFBsZWFzZSB1c2UgOm1vZDpgYXN5bmNpb2AgaW5zdGVhZC4KKwogLS0tLS0tLS0tLS0tLS0KIAogLi4gbm90ZTo6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKaW5kZXggODc4ZDhkYi4uNGY1ZjBmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdApAQCAtNTMsMTMgKzUzLDE0IEBACiAgICB0aGFuIG9uZSBsaW5lIG1heSBiZSBwYXNzZWQgYXQgYSB0aW1lLgogCiAKLS4uIGZ1bmN0aW9uOjogYjJhX2Jhc2U2NChkYXRhKQorLi4gZnVuY3Rpb246OiBiMmFfYmFzZTY0KGRhdGEsIFwqLCBuZXdsaW5lPVRydWUpCiAKICAgIENvbnZlcnQgYmluYXJ5IGRhdGEgdG8gYSBsaW5lIG9mIEFTQ0lJIGNoYXJhY3RlcnMgaW4gYmFzZTY0IGNvZGluZy4gVGhlIHJldHVybgotICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIuICBUaGUgbmV3bGluZSBpcwotICAgYWRkZWQgYmVjYXVzZSB0aGUgb3JpZ2luYWwgdXNlIGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gd2FzIHRvIGZlZWQgaXQgYQotICAgc2VyaWVzIG9mIDU3IGJ5dGUgaW5wdXQgbGluZXMgdG8gZ2V0IG91dHB1dCBsaW5lcyB0aGF0IGNvbmZvcm0gdG8gdGhlCi0gICBNSU1FLWJhc2U2NCBzdGFuZGFyZC4gIE90aGVyd2lzZSB0aGUgb3V0cHV0IGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIgaWYgKm5ld2xpbmUqIGlzCisgICB0cnVlLiAgVGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uIGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICpuZXdsaW5lKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBhMmJfcXAoZGF0YSwgaGVhZGVyPUZhbHNlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggNmM0OWQ5Zi4uZDVmNjIyNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC02MSw2ICs2MSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIGBgJ3gnYGAgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZSB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogQloyRmlsZShmaWxlbmFtZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpCiAKQEAgLTEyOCw2ICsxMzEsOSBAQAogICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCiAgICAgICBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogSW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdCBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAppbmRleCA2MmRkYjZiLi5kOTM1YzQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CkBAIC0yNTMsNiArMjUzLDQwIEBACiAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgKmUqLCBhcyBhIGZsb2F0LgogCisuLiBkYXRhOjogdGF1CisKKyAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgKs+EKiwgYXMgYSBmbG9hdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBpbmYKKworICAgRmxvYXRpbmctcG9pbnQgcG9zaXRpdmUgaW5maW5pdHkuIEVxdWl2YWxlbnQgdG8gYGBmbG9hdCgnaW5mJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBpbmZqCisKKyAgIENvbXBsZXggbnVtYmVyIHdpdGggemVybyByZWFsIHBhcnQgYW5kIHBvc2l0aXZlIGluZmluaXR5IGltYWdpbmFyeQorICAgcGFydC4gRXF1aXZhbGVudCB0byBgYGNvbXBsZXgoMC4wLCBmbG9hdCgnaW5mJykpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogbmFuCisKKyAgIEEgZmxvYXRpbmctcG9pbnQgIm5vdCBhIG51bWJlciIgKE5hTikgdmFsdWUuICBFcXVpdmFsZW50IHRvCisgICBgYGZsb2F0KCduYW4nKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IG5hbmoKKworICAgQ29tcGxleCBudW1iZXIgd2l0aCB6ZXJvIHJlYWwgcGFydCBhbmQgTmFOIGltYWdpbmFyeSBwYXJ0LiBFcXVpdmFsZW50IHRvCisgICBgYGNvbXBsZXgoMC4wLCBmbG9hdCgnbmFuJykpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIGluZGV4OjogbW9kdWxlOiBtYXRoCiAKIE5vdGUgdGhhdCB0aGUgc2VsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpcyBzaW1pbGFyLCBidXQgbm90IGlkZW50aWNhbCwgdG8gdGhhdCBpbgpAQCAtMjc2LDUgKzMxMCwzIEBACiAgICBLYWhhbiwgVzogIEJyYW5jaCBjdXRzIGZvciBjb21wbGV4IGVsZW1lbnRhcnkgZnVuY3Rpb25zOyBvciwgTXVjaCBhZG8gYWJvdXQKICAgIG5vdGhpbmcncyBzaWduIGJpdC4gIEluIElzZXJsZXMsIEEuLCBhbmQgUG93ZWxsLCBNLiAoZWRzLiksIFRoZSBzdGF0ZSBvZiB0aGUgYXJ0CiAgICBpbiBudW1lcmljYWwgYW5hbHlzaXMuIENsYXJlbmRvbiBQcmVzcyAoMTk4NykgcHAxNjUtMjExLgotCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGUucnN0IGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKaW5kZXggNDQzYWY2OS4uZTJjNDdiYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKQEAgLTMwLDE1ICszMCwxOSBAQAogICAgYGBzeXMucHMxYGAgYW5kIGBgc3lzLnBzMmBgLCBhbmQgaW5wdXQgYnVmZmVyaW5nLgogCiAKLS4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUpCisuLiBmdW5jdGlvbjo6IGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lLCBleGl0bXNnPU5vbmUpCiAKICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJ1biBhIHJlYWQtZXZhbC1wcmludCBsb29wLiAgVGhpcyBjcmVhdGVzIGEgbmV3CiAgICBpbnN0YW5jZSBvZiA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgYW5kIHNldHMgKnJlYWRmdW5jKiB0byBiZSB1c2VkIGFzCiAgICB0aGUgOm1ldGg6YEludGVyYWN0aXZlQ29uc29sZS5yYXdfaW5wdXRgIG1ldGhvZCwgaWYgcHJvdmlkZWQuICBJZiAqbG9jYWwqIGlzCiAgICBwcm92aWRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgY29uc3RydWN0b3IgZm9yCiAgICB1c2UgYXMgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgbG9vcC4gIFRoZSA6bWV0aDpgaW50ZXJhY3RgCi0gICBtZXRob2Qgb2YgdGhlIGluc3RhbmNlIGlzIHRoZW4gcnVuIHdpdGggKmJhbm5lciogcGFzc2VkIGFzIHRoZSBiYW5uZXIgdG8KLSAgIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkIGFmdGVyIHVzZS4KKyAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBhbmQgKmV4aXRtc2cqIHBhc3NlZCBhcyB0aGUKKyAgIGJhbm5lciBhbmQgZXhpdCBtZXNzYWdlIHRvIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkCisgICBhZnRlciB1c2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqZXhpdG1zZyogcGFyYW1ldGVyLgogCiAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9jb21tYW5kKHNvdXJjZSwgZmlsZW5hbWU9IjxpbnB1dD4iLCBzeW1ib2w9InNpbmdsZSIpCkBAIC0xMzYsNyArMTQwLDcgQEAKIGludGVycHJldGVyIG9iamVjdHMgYXMgd2VsbCBhcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9ucy4KIAogCi0uLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUpCisuLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4gVGhlIG9wdGlvbmFsICpiYW5uZXIqIGFyZ3VtZW50CiAgICBzcGVjaWZ5IHRoZSBiYW5uZXIgdG8gcHJpbnQgYmVmb3JlIHRoZSBmaXJzdCBpbnRlcmFjdGlvbjsgYnkgZGVmYXVsdCBpdCBwcmludHMgYQpAQCAtMTQ0LDkgKzE0OCwxNiBAQAogICAgYnkgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIGNvbnNvbGUgb2JqZWN0IGluIHBhcmVudGhlc2VzIChzbyBhcyBub3QgdG8gY29uZnVzZQogICAgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28gY2xvc2UhKS4KIAorICAgVGhlIG9wdGlvbmFsICpleGl0bXNnKiBhcmd1bWVudCBzcGVjaWZpZXMgYW4gZXhpdCBtZXNzYWdlIHByaW50ZWQgd2hlbiBleGl0aW5nLgorICAgUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzIHRoZSBleGl0IG1lc3NhZ2UuIElmICpleGl0bXNnKiBpcyBub3QgZ2l2ZW4gb3IKKyAgIGBgTm9uZWBgLCBhIGRlZmF1bHQgbWVzc2FnZSBpcyBwcmludGVkLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVG8gc3VwcHJlc3MgcHJpbnRpbmcgYW55IGJhbm5lciwgcGFzcyBhbiBlbXB0eSBzdHJpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBQcmludCBhbiBleGl0IG1lc3NhZ2Ugd2hlbiBleGl0aW5nLgorCiAKIC4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5wdXNoKGxpbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CmluZGV4IDAzZjAyMjguLmFhMWQxMjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdApAQCAtMTI2MywxMCArMTI2MywxNiBAQAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgT25seSBgYGVycm9ycz0nc3RyaWN0J2BgICB8CiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBpcyBzdXBwb3J0ZWQuICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBtYmNzICAgICAgICAgICAgICAgfCBkYmNzICAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKK3wgbWJjcyAgICAgICAgICAgICAgIHwgYW5zaSwgICB8IFdpbmRvd3Mgb25seTogRW5jb2RlICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCBkYmNzICAgIHwgb3BlcmFuZCBhY2NvcmRpbmcgdG8gdGhlICB8CiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBvZW0gICAgICAgICAgICAgICAgfCAgICAgICAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IE9FTSBjb2RlcGFnZSAoQ1BfT0VNQ1ApICAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBwYWxtb3MgICAgICAgICAgICAgfCAgICAgICAgIHwgRW5jb2Rpbmcgb2YgUGFsbU9TIDMuNSAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgcHVueWNvZGUgICAgICAgICAgIHwgICAgICAgICB8IEltcGxlbWVudHMgOnJmYzpgMzQ5MmAuICAgfApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKaW5kZXggYWViNmE3My4uZTRiNzVhMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CkBAIC00MSwxMyArNDEsMTYgQEAKIDpjbGFzczpgSGFzaGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2hhc2hfX2BgCiA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAogOmNsYXNzOmBJdGVyYXRvcmAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fbmV4dF9fYGAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgUmV2ZXJzaWJsZWAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX3JldmVyc2VkX19gYAogOmNsYXNzOmBHZW5lcmF0b3JgICAgICAgICAgOmNsYXNzOmBJdGVyYXRvcmAgICAgICBgYHNlbmRgYCwgYGB0aHJvd2BgICAgICBgYGNsb3NlYGAsIGBgX19pdGVyX19gYCwgYGBfX25leHRfX2BgCiA6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCiA6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAorOmNsYXNzOmBDb2xsZWN0aW9uYCAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICBgYF9faXRlcl9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgIGBgX19sZW5fX2BgCiAKLTpjbGFzczpgU2VxdWVuY2VgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYGluZGV4YGAsIGFuZCBgYGNvdW50YGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYAorOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBSZXZlcnNpYmxlYCwgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbGxlY3Rpb25gICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAogCiA6Y2xhc3M6YE11dGFibGVTZXF1ZW5jZWAgICA6Y2xhc3M6YFNlcXVlbmNlYCAgICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNlcXVlbmNlYCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBgYGFwcGVuZGBgLCBgYHJldmVyc2VgYCwgYGBleHRlbmRgYCwgYGBwb3BgYCwKQEAgLTU4LDkgKzYxLDkgQEAKIDpjbGFzczpgQnl0ZVN0cmluZ2AgICAgICAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIAotOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKKzpjbGFzczpgU2V0YCAgICAgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2NvbnRhaW5zX19gYCwgICAgICAgYGBfX2xlX19gYCwgYGBfX2x0X19gYCwgYGBfX2VxX19gYCwgYGBfX25lX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBfX2d0X19gYCwgYGBfX2dlX19gYCwgYGBfX2FuZF9fYGAsIGBgX19vcl9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgX19zdWJfX2BgLCBgYF9feG9yX19gYCwgYW5kIGBgaXNkaXNqb2ludGBgCiAKIDpjbGFzczpgTXV0YWJsZVNldGAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2V0YCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYGNsZWFyYGAsIGBgcG9wYGAsIGBgcmVtb3ZlYGAsIGBgX19pb3JfX2BgLApAQCAtNjgsOSArNzEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGFkZGBgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGRpc2NhcmRgYAogCi06Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YE1hcHBpbmdgICAgICAgICAgICA6Y2xhc3M6YENvbGxlY3Rpb25gICAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBga2V5c2BgLCBgYGl0ZW1zYGAsIGBgdmFsdWVzYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgZ2V0YGAsIGBgX19lcV9fYGAsIGFuZCBgYF9fbmVfX2BgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCiAKIDpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKQEAgLTEwNSwxMiArMTA4LDI1IEBACiAgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KICAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCiAKKy4uIGNsYXNzOjogQ29sbGVjdGlvbgorCisgICBBQkMgZm9yIHNpemVkIGl0ZXJhYmxlIGNvbnRhaW5lciBjbGFzc2VzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBJdGVyYXRvcgogCiAgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgfml0ZXJhdG9yLl9faXRlcl9fYCBhbmQKICAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gIG1ldGhvZHMuICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZgogICAgOnRlcm06YGl0ZXJhdG9yYC4KIAorLi4gY2xhc3M6OiBSZXZlcnNpYmxlCisKKyAgIEFCQyBmb3IgaXRlcmFibGUgY2xhc3NlcyB0aGF0IGFsc28gcHJvdmlkZSB0aGUgOm1ldGg6YF9fcmV2ZXJzZWRfX2AKKyAgIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGNsYXNzOjogR2VuZXJhdG9yCiAKICAgIEFCQyBmb3IgZ2VuZXJhdG9yIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQgdGhlIHByb3RvY29sIGRlZmluZWQgaW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAppbmRleCBkMGFhNjJlLi45ZjNmNWRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CkBAIC03NjMsNyArNzYzLDcgQEAKIHNlbGYtZG9jdW1lbnRpbmcgY29kZS4gIFRoZXkgY2FuIGJlIHVzZWQgd2hlcmV2ZXIgcmVndWxhciB0dXBsZXMgYXJlIHVzZWQsIGFuZAogdGhleSBhZGQgdGhlIGFiaWxpdHkgdG8gYWNjZXNzIGZpZWxkcyBieSBuYW1lIGluc3RlYWQgb2YgcG9zaXRpb24gaW5kZXguCiAKLS4uIGZ1bmN0aW9uOjogbmFtZWR0dXBsZSh0eXBlbmFtZSwgZmllbGRfbmFtZXMsIHZlcmJvc2U9RmFsc2UsIHJlbmFtZT1GYWxzZSkKKy4uIGZ1bmN0aW9uOjogbmFtZWR0dXBsZSh0eXBlbmFtZSwgZmllbGRfbmFtZXMsICosIHZlcmJvc2U9RmFsc2UsIHJlbmFtZT1GYWxzZSwgbW9kdWxlPU5vbmUpCiAKICAgICBSZXR1cm5zIGEgbmV3IHR1cGxlIHN1YmNsYXNzIG5hbWVkICp0eXBlbmFtZSouICBUaGUgbmV3IHN1YmNsYXNzIGlzIHVzZWQgdG8KICAgICBjcmVhdGUgdHVwbGUtbGlrZSBvYmplY3RzIHRoYXQgaGF2ZSBmaWVsZHMgYWNjZXNzaWJsZSBieSBhdHRyaWJ1dGUgbG9va3VwIGFzCkBAIC03OTAsMTIgKzc5MCwyMSBAQAogICAgIGJ1aWx0LiAgVGhpcyBvcHRpb24gaXMgb3V0ZGF0ZWQ7IGluc3RlYWQsIGl0IGlzIHNpbXBsZXIgdG8gcHJpbnQgdGhlCiAgICAgOmF0dHI6YF9zb3VyY2VgIGF0dHJpYnV0ZS4KIAorICAgIElmICptb2R1bGUqIGlzIGRlZmluZWQsIHRoZSBgYF9fbW9kdWxlX19gYCBhdHRyaWJ1dGUgb2YgdGhlIG5hbWVkIHR1cGxlIGlzCisgICAgc2V0IHRvIHRoYXQgdmFsdWUuCisKICAgICBOYW1lZCB0dXBsZSBpbnN0YW5jZXMgZG8gbm90IGhhdmUgcGVyLWluc3RhbmNlIGRpY3Rpb25hcmllcywgc28gdGhleSBhcmUKICAgICBsaWdodHdlaWdodCBhbmQgcmVxdWlyZSBubyBtb3JlIG1lbW9yeSB0aGFuIHJlZ3VsYXIgdHVwbGVzLgogCiAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKLSAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgKnJlbmFtZSouCisgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgKnJlbmFtZSouCiAKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgIFRoZSAqdmVyYm9zZSogYW5kICpyZW5hbWUqIHBhcmFtZXRlcnMgYmVjYW1lCisgICAgICAgOnJlZjpga2V5d29yZC1vbmx5IGFyZ3VtZW50cyA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgorCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICBBZGRlZCB0aGUgKm1vZHVsZSogcGFyYW1ldGVyLgogCiAuLiBkb2N0ZXN0OjoKICAgICA6b3B0aW9uczogK05PUk1BTElaRV9XSElURVNQQUNFCkBAIC04NDYsNyArODU1LDkgQEAKIC4uIG1ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9hc2RpY3QoKQogCiAgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgT3JkZXJlZERpY3RgIHdoaWNoIG1hcHMgZmllbGQgbmFtZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZwotICAgIHZhbHVlczo6CisgICAgdmFsdWVzOgorCisgICAgLi4gZG9jdGVzdDo6CiAKICAgICAgICAgPj4+IHAgPSBQb2ludCh4PTExLCB5PTIyKQogICAgICAgICA+Pj4gcC5fYXNkaWN0KCkKQEAgLTkwOCw3ICs5MTksOSBAQAogZnVuY3Rpb25hbGl0eSB3aXRoIGEgc3ViY2xhc3MuICBIZXJlIGlzIGhvdyB0byBhZGQgYSBjYWxjdWxhdGVkIGZpZWxkIGFuZAogYSBmaXhlZC13aWR0aCBwcmludCBmb3JtYXQ6CiAKLSAgICA+Pj4gY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgorLi4gZG9jdGVzdDo6CisKKyAgICA+Pj4gY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKSk6CiAgICAgLi4uICAgICBfX3Nsb3RzX18gPSAoKQogICAgIC4uLiAgICAgQHByb3BlcnR5CiAgICAgLi4uICAgICBkZWYgaHlwb3Qoc2VsZik6CkBAIC05NTksNiArOTcyLDExIEBACiAgICAgICBjb25zdHJ1Y3RvciB0aGF0IGlzIGNvbnZlbmllbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSBuYW1lZCB0dXBsZXMgYXJlIGJlaW5nCiAgICAgICBzdWJjbGFzc2VkLgogCisgICAgKiBTZWUgOm1ldGg6YHR5cGVzLlNpbXBsZU5hbWVzcGFjZWAgZm9yIGEgbXV0YWJsZSBuYW1lc3BhY2UgYmFzZWQgb24gYW4KKyAgICAgIHVuZGVybHlpbmcgZGljdGlvbmFyeSBpbnN0ZWFkIG9mIGEgdHVwbGUuCisKKyAgICAqIFNlZSA6bWV0aDpgdHlwaW5nLk5hbWVkVHVwbGVgIGZvciBhIHdheSB0byBhZGQgdHlwZSBoaW50cyBmb3IgbmFtZWQgdHVwbGVzLgorCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIG9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk4MCw4ICs5OTgsOSBAQAogICAgIC4uIG1ldGhvZDo6IHBvcGl0ZW0obGFzdD1UcnVlKQogCiAgICAgICAgIFRoZSA6bWV0aDpgcG9waXRlbWAgbWV0aG9kIGZvciBvcmRlcmVkIGRpY3Rpb25hcmllcyByZXR1cm5zIGFuZCByZW1vdmVzIGEKLSAgICAgICAgKGtleSwgdmFsdWUpIHBhaXIuICBUaGUgcGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgKmxhc3QqIGlzIHRydWUKLSAgICAgICAgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KKyAgICAgICAgKGtleSwgdmFsdWUpIHBhaXIuICBUaGUgcGFpcnMgYXJlIHJldHVybmVkIGluCisgICAgICAgIDphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQorICAgICAgICBvciA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIG9yZGVyIGlmIGZhbHNlLgogCiAgICAgLi4gbWV0aG9kOjogbW92ZV90b19lbmQoa2V5LCBsYXN0PVRydWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbXBpbGVhbGwucnN0IGIvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKaW5kZXggNTExYzU4MS4uYzFhZjAyYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QKQEAgLTEwMiw3ICsxMDIsOCBAQAogLi4gZnVuY3Rpb246OiBjb21waWxlX2RpcihkaXIsIG1heGxldmVscz0xMCwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSwgd29ya2Vycz0xKQogCiAgICBSZWN1cnNpdmVseSBkZXNjZW5kIHRoZSBkaXJlY3RvcnkgdHJlZSBuYW1lZCBieSAqZGlyKiwgY29tcGlsaW5nIGFsbCA6ZmlsZTpgLnB5YAotICAgZmlsZXMgYWxvbmcgdGhlIHdheS4KKyAgIGZpbGVzIGFsb25nIHRoZSB3YXkuIFJldHVybiBhIHRydWUgdmFsdWUgaWYgYWxsIHRoZSBmaWxlcyBjb21waWxlZCBzdWNjZXNzZnVsbHksCisgICBhbmQgYSBmYWxzZSB2YWx1ZSBvdGhlcndpc2UuCiAKICAgIFRoZSAqbWF4bGV2ZWxzKiBwYXJhbWV0ZXIgaXMgdXNlZCB0byBsaW1pdCB0aGUgZGVwdGggb2YgdGhlIHJlY3Vyc2lvbjsgaXQKICAgIGRlZmF1bHRzIHRvIGBgMTBgYC4KQEAgLTE1Miw5ICsxNTMsMTMgQEAKICAgICAgIFRoZSAqbGVnYWN5KiBwYXJhbWV0ZXIgb25seSB3cml0ZXMgb3V0IGBgLnB5Y2BgIGZpbGVzLCBub3QgYGAucHlvYGAgZmlsZXMKICAgICAgIG5vIG1hdHRlciB3aGF0IHRoZSB2YWx1ZSBvZiAqb3B0aW1pemUqIGlzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gZnVuY3Rpb246OiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKLSAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouCisgICBDb21waWxlIHRoZSBmaWxlIHdpdGggcGF0aCAqZnVsbG5hbWUqLiBSZXR1cm4gYSB0cnVlIHZhbHVlIGlmIHRoZSBmaWxlCisgICBjb21waWxlZCBzdWNjZXNzZnVsbHksIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KIAogICAgSWYgKmRkaXIqIGlzIGdpdmVuLCBpdCBpcyBwcmVwZW5kZWQgdG8gdGhlIHBhdGggdG8gdGhlIGZpbGUgYmVpbmcgY29tcGlsZWQKICAgIGZvciB1c2UgaW4gY29tcGlsYXRpb24gdGltZSB0cmFjZWJhY2tzLCBhbmQgaXMgYWxzbyBjb21waWxlZCBpbiB0byB0aGUKQEAgLTE5MCw4ICsxOTUsMTAgQEAKIAogLi4gZnVuY3Rpb246OiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9VHJ1ZSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xKQogCi0gICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIElmCi0gICAqc2tpcF9jdXJkaXIqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZAorICAgQnl0ZS1jb21waWxlIGFsbCB0aGUgOmZpbGU6YC5weWAgZmlsZXMgZm91bmQgYWxvbmcgYGBzeXMucGF0aGBgLiBSZXR1cm4gYQorICAgdHJ1ZSB2YWx1ZSBpZiBhbGwgdGhlIGZpbGVzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgorCisgICBJZiAqc2tpcF9jdXJkaXIqIGlzIHRydWUgKHRoZSBkZWZhdWx0KSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG5vdCBpbmNsdWRlZAogICAgaW4gdGhlIHNlYXJjaC4gIEFsbCBvdGhlciBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gdGhlIDpmdW5jOmBjb21waWxlX2RpcmAKICAgIGZ1bmN0aW9uLiAgTm90ZSB0aGF0IHVubGlrZSB0aGUgb3RoZXIgY29tcGlsZSBmdW5jdGlvbnMsIGBgbWF4bGV2ZWxzYGAKICAgIGRlZmF1bHRzIHRvIGBgMGBgLgpAQCAtMjE3LDYgKzIyNCw5IEBACiAgICBpbXBvcnQgcmUKICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoJ0xpYi8nLCByeD1yZS5jb21waWxlKHInWy9cXF1bLl1zdm4nKSwgZm9yY2U9VHJ1ZSkKIAorICAgIyBwYXRobGliLlBhdGggb2JqZWN0cyBjYW4gYWxzbyBiZSB1c2VkLgorICAgaW1wb3J0IHBhdGhsaWIKKyAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIocGF0aGxpYi5QYXRoKCdMaWIvJyksIGZvcmNlPVRydWUpCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAppbmRleCBhZTAzZjRiLi5kODU1NzZiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgZXhlY3V0b3Iuc3VibWl0KHdhaXRfb25fZnV0dXJlKQogCiAKLS4uIGNsYXNzOjogVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPU5vbmUpCisuLiBjbGFzczo6IFRocmVhZFBvb2xFeGVjdXRvcihtYXhfd29ya2Vycz1Ob25lLCB0aHJlYWRfbmFtZV9wcmVmaXg9JycpCiAKICAgIEFuIDpjbGFzczpgRXhlY3V0b3JgIHN1YmNsYXNzIHRoYXQgdXNlcyBhIHBvb2wgb2YgYXQgbW9zdCAqbWF4X3dvcmtlcnMqCiAgICB0aHJlYWRzIHRvIGV4ZWN1dGUgY2FsbHMgYXN5bmNocm9ub3VzbHkuCkBAIC0xMzcsNiArMTM3LDEwIEBACiAgICAgICBzaG91bGQgYmUgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZiB3b3JrZXJzCiAgICAgICBmb3IgOmNsYXNzOmBQcm9jZXNzUG9vbEV4ZWN1dG9yYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBUaGUgKnRocmVhZF9uYW1lX3ByZWZpeCogYXJndW1lbnQgd2FzIGFkZGVkIHRvIGFsbG93IHVzZXJzIHRvCisgICAgICBjb250cm9sIHRoZSB0aHJlYWRpbmcuVGhyZWFkIG5hbWVzIGZvciB3b3JrZXIgdGhyZWFkcyBjcmVhdGVkIGJ5CisgICAgICB0aGUgcG9vbCBmb3IgZWFzaWVyIGRlYnVnZ2luZy4KIAogLi4gX3RocmVhZHBvb2xleGVjdXRvci1leGFtcGxlOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0IGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdAppbmRleCBkNWEwZjA5Li5mMDc0MmNlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKQEAgLTMzLDE2ICszMywyMiBAQAogICAgKGUuZy4gOm1ldGg6YF9faW11bF9fYCwgOm1ldGg6YF9faWFuZF9fYCwgZXRjLikgZm9yIHRoZSBzYW1lIHB1cnBvc2UuCiAgICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS4KIAotLi4gbm90ZTo6CisgICAuLiBub3RlOjoKIAotICAgV2hlbiBgYE5vdEltcGxlbWVudGVkYGAgaXMgcmV0dXJuZWQsIHRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZQotICAgcmVmbGVjdGVkIG9wZXJhdGlvbiBvbiB0aGUgb3RoZXIgdHlwZSwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nCi0gICBvbiB0aGUgb3BlcmF0b3IuICBJZiBhbGwgYXR0ZW1wdGVkIG9wZXJhdGlvbnMgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYCwgdGhlCi0gICBpbnRlcnByZXRlciB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKyAgICAgIFdoZW4gYSBiaW5hcnkgKG9yIGluLXBsYWNlKSBtZXRob2QgcmV0dXJucyBgYE5vdEltcGxlbWVudGVkYGAgdGhlCisgICAgICBpbnRlcnByZXRlciB3aWxsIHRyeSB0aGUgcmVmbGVjdGVkIG9wZXJhdGlvbiBvbiB0aGUgb3RoZXIgdHlwZSAob3Igc29tZQorICAgICAgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IpLiAgSWYgYWxsIGF0dGVtcHRzIHJldHVybgorICAgICAgYGBOb3RJbXBsZW1lbnRlZGBgLCB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSBleGNlcHRpb24uCisgICAgICBJbmNvcnJlY3RseSByZXR1cm5pbmcgYGBOb3RJbXBsZW1lbnRlZGBgIHdpbGwgcmVzdWx0IGluIGEgbWlzbGVhZGluZworICAgICAgZXJyb3IgbWVzc2FnZSBvciB0aGUgYGBOb3RJbXBsZW1lbnRlZGBgIHZhbHVlIGJlaW5nIHJldHVybmVkIHRvIFB5dGhvbiBjb2RlLgogCi0gICBTZWUKLSAgIDpyZWY6YGltcGxlbWVudGluZy10aGUtYXJpdGhtZXRpYy1vcGVyYXRpb25zYAotICAgZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgIFNlZSA6cmVmOmBpbXBsZW1lbnRpbmctdGhlLWFyaXRobWV0aWMtb3BlcmF0aW9uc2AgZm9yIGV4YW1wbGVzLgorCisgICAuLiBub3RlOjoKKworICAgICAgYGBOb3RJbXBsZW50ZWRFcnJvcmBgIGFuZCBgYE5vdEltcGxlbWVudGVkYGAgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUsCisgICAgICBldmVuIHRob3VnaCB0aGV5IGhhdmUgc2ltaWxhciBuYW1lcyBhbmQgcHVycG9zZXMuCisgICAgICBTZWUgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZm9yIGRldGFpbHMgb24gd2hlbiB0byB1c2UgaXQuCiAKIAogLi4gZGF0YTo6IEVsbGlwc2lzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CmluZGV4IGNmODVmY2QuLmRkMzRjOTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CkBAIC0xOCw2ICsxOCwxOCBAQAogCiBGdW5jdGlvbnMgYW5kIGNsYXNzZXMgcHJvdmlkZWQ6CiAKKy4uIGNsYXNzOjogQWJzdHJhY3RDb250ZXh0TWFuYWdlcgorCisgICBBbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnQKKyAgIDptZXRoOmBvYmplY3QuX19lbnRlcl9fYCBhbmQgOm1ldGg6YG9iamVjdC5fX2V4aXRfX2AuIEEgZGVmYXVsdAorICAgaW1wbGVtZW50YXRpb24gZm9yIDptZXRoOmBvYmplY3QuX19lbnRlcl9fYCBpcyBwcm92aWRlZCB3aGljaCByZXR1cm5zCisgICBgYHNlbGZgYCB3aGlsZSA6bWV0aDpgb2JqZWN0Ll9fZXhpdF9fYCBpcyBhbiBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggYnkgZGVmYXVsdAorICAgcmV0dXJucyBgYE5vbmVgYC4gU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworCiAuLiBkZWNvcmF0b3I6OiBjb250ZXh0bWFuYWdlcgogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIGEgOnRlcm06YGRlY29yYXRvcmAgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYSBmYWN0b3J5CkBAIC00NDcsOSArNDU5LDkgQEAKIGFjcXVpc2l0aW9uIGFuZCByZWxlYXNlIGZ1bmN0aW9ucywgYWxvbmcgd2l0aCBhbiBvcHRpb25hbCB2YWxpZGF0aW9uIGZ1bmN0aW9uLAogYW5kIG1hcHMgdGhlbSB0byB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sOjoKIAotICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlciwgRXhpdFN0YWNrCisgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyLCBFeGl0U3RhY2sKIAotICAgY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOgorICAgY2xhc3MgUmVzb3VyY2VNYW5hZ2VyKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogCiAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFjcXVpcmVfcmVzb3VyY2UsIHJlbGVhc2VfcmVzb3VyY2UsIGNoZWNrX3Jlc291cmNlX29rPU5vbmUpOgogICAgICAgICAgICBzZWxmLmFjcXVpcmVfcmVzb3VyY2UgPSBhY3F1aXJlX3Jlc291cmNlCkBAIC01NzgsMTAgKzU5MCwxMCBAQAogICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogCiAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0VudGVyaW5nOiB7fScuZm9ybWF0KHNlbGYubmFtZSkpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0VudGVyaW5nOiAlcycsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4YywgZXhjX3RiKToKLSAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzoge30nLmZvcm1hdChzZWxmLm5hbWUpKQorICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiAlcycsIHNlbGYubmFtZSkKIAogSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgYXMgYm90aCBhIGNvbnRleHQgbWFuYWdlcjo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAppbmRleCBhMjFjMWU3Li5kYmQ0Mjc0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CkBAIC02OCw3ICs2OCw3IEBACiAKICAgIEEgbGlzdCBvZiBhdmFpbGFibGUgcGFzc3dvcmQgaGFzaGluZyBhbGdvcml0aG1zLCBhcwogICAgYGBjcnlwdC5NRVRIT0RfKmBgIG9iamVjdHMuICBUaGlzIGxpc3QgaXMgc29ydGVkIGZyb20gc3Ryb25nZXN0IHRvCi0gICB3ZWFrZXN0LCBhbmQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IGBgY3J5cHQuTUVUSE9EX0NSWVBUYGAuCisgICB3ZWFrZXN0LgogCiAKIE1vZHVsZSBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CmluZGV4IDFlZGRmZGMuLjhlYjRiODEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdApAQCAtMTUsNCArMTUsNiBAQAogLi4gdG9jdHJlZTo6CiAKICAgIGhhc2hsaWIucnN0CisgICBoYXNobGliLWJsYWtlMi5yc3QKICAgIGhtYWMucnN0CisgICBzZWNyZXRzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggN2ZiNGZjOC4uZjkxNjU3MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC0xNDksMTggKzE0OSwyNSBAQAogLi4gY2xhc3M6OiBEaWN0UmVhZGVyKGNzdmZpbGUsIGZpZWxkbmFtZXM9Tm9uZSwgcmVzdGtleT1Ob25lLCByZXN0dmFsPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICBkaWFsZWN0PSdleGNlbCcsICphcmdzLCAqKmt3ZHMpCiAKLSAgIENyZWF0ZSBhbiBvYmplY3Qgd2hpY2ggb3BlcmF0ZXMgbGlrZSBhIHJlZ3VsYXIgcmVhZGVyIGJ1dCBtYXBzIHRoZQotICAgaW5mb3JtYXRpb24gcmVhZCBpbnRvIGEgZGljdCB3aG9zZSBrZXlzIGFyZSBnaXZlbiBieSB0aGUgb3B0aW9uYWwKLSAgICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIuICBUaGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBhIDptb2Q6YHNlcXVlbmNlCi0gICA8Y29sbGVjdGlvbnMuYWJjPmAgd2hvc2UgZWxlbWVudHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGRzIG9mIHRoZQotICAgaW5wdXQgZGF0YSBpbiBvcmRlci4gVGhlc2UgZWxlbWVudHMgYmVjb21lIHRoZSBrZXlzIG9mIHRoZSByZXN1bHRpbmcKLSAgIGRpY3Rpb25hcnkuICBJZiB0aGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBvbWl0dGVkLCB0aGUgdmFsdWVzIGluIHRoZQotICAgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZSBmaWVsZG5hbWVzLiAgSWYgdGhlIHJvdyByZWFkCi0gICBoYXMgbW9yZSBmaWVsZHMgdGhhbiB0aGUgZmllbGRuYW1lcyBzZXF1ZW5jZSwgdGhlIHJlbWFpbmluZyBkYXRhIGlzIGFkZGVkIGFzCi0gICBhIHNlcXVlbmNlIGtleWVkIGJ5IHRoZSB2YWx1ZSBvZiAqcmVzdGtleSouICBJZiB0aGUgcm93IHJlYWQgaGFzIGZld2VyCi0gICBmaWVsZHMgdGhhbiB0aGUgZmllbGRuYW1lcyBzZXF1ZW5jZSwgdGhlIHJlbWFpbmluZyBrZXlzIHRha2UgdGhlIHZhbHVlIG9mCi0gICB0aGUgb3B0aW9uYWwgKnJlc3R2YWwqIHBhcmFtZXRlci4gIEFueSBvdGhlciBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cwotICAgYXJlIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YHJlYWRlcmAgaW5zdGFuY2UuCisgICBDcmVhdGUgYW4gb2JqZWN0IHRoYXQgb3BlcmF0ZXMgbGlrZSBhIHJlZ3VsYXIgcmVhZGVyIGJ1dCBtYXBzIHRoZQorICAgaW5mb3JtYXRpb24gaW4gZWFjaCByb3cgdG8gYW4gOm1vZDpgT3JkZXJlZERpY3QgPGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0PmAKKyAgIHdob3NlIGtleXMgYXJlIGdpdmVuIGJ5IHRoZSBvcHRpb25hbCAqZmllbGRuYW1lcyogcGFyYW1ldGVyLgorCisgICBUaGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBhIDp0ZXJtOmBzZXF1ZW5jZWAuICBJZiAqZmllbGRuYW1lcyogaXMKKyAgIG9taXR0ZWQsIHRoZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IHJvdyBvZiB0aGUgKmNzdmZpbGUqIHdpbGwgYmUgdXNlZCBhcyB0aGUKKyAgIGZpZWxkbmFtZXMuICBSZWdhcmRsZXNzIG9mIGhvdyB0aGUgZmllbGRuYW1lcyBhcmUgZGV0ZXJtaW5lZCwgdGhlIG9yZGVyZWQKKyAgIGRpY3Rpb25hcnkgcHJlc2VydmVzIHRoZWlyIG9yaWdpbmFsIG9yZGVyaW5nLgorCisgICBJZiBhIHJvdyBoYXMgbW9yZSBmaWVsZHMgdGhhbiBmaWVsZG5hbWVzLCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgcHV0IGluIGEKKyAgIGxpc3QgYW5kIHN0b3JlZCB3aXRoIHRoZSBmaWVsZG5hbWUgc3BlY2lmaWVkIGJ5ICpyZXN0a2V5KiAod2hpY2ggZGVmYXVsdHMKKyAgIHRvIGBgTm9uZWBgKS4gIElmIGEgbm9uLWJsYW5rIHJvdyBoYXMgZmV3ZXIgZmllbGRzIHRoYW4gZmllbGRuYW1lcywgdGhlCisgICBtaXNzaW5nIHZhbHVlcyBhcmUgZmlsbGVkLWluIHdpdGggYGBOb25lYGAuCisKKyAgIEFsbCBvdGhlciBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nCisgICA6Y2xhc3M6YHJlYWRlcmAgaW5zdGFuY2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBSZXR1cm5lZCByb3dzIGFyZSBub3cgb2YgdHlwZSA6Y2xhc3M6YE9yZGVyZWREaWN0YC4KIAogICAgQSBzaG9ydCB1c2FnZSBleGFtcGxlOjoKIApAQCAtMTcwLDkgKzE3NywxMSBAQAogICAgICAgIC4uLiAgICAgZm9yIHJvdyBpbiByZWFkZXI6CiAgICAgICAgLi4uICAgICAgICAgcHJpbnQocm93WydmaXJzdF9uYW1lJ10sIHJvd1snbGFzdF9uYW1lJ10pCiAgICAgICAgLi4uCi0gICAgICAgQmFrZWQgQmVhbnMKLSAgICAgICBMb3ZlbHkgU3BhbQotICAgICAgIFdvbmRlcmZ1bCBTcGFtCisgICAgICAgRXJpYyBJZGxlCisgICAgICAgSm9obiBDbGVlc2UKKworICAgICAgID4+PiBwcmludChyb3cpCisgICAgICAgT3JkZXJlZERpY3QoWygnZmlyc3RfbmFtZScsICdKb2huJyksICgnbGFzdF9uYW1lJywgJ0NsZWVzZScpXSkKIAogCiAuLiBjbGFzczo6IERpY3RXcml0ZXIoY3N2ZmlsZSwgZmllbGRuYW1lcywgcmVzdHZhbD0nJywgZXh0cmFzYWN0aW9uPSdyYWlzZScsIFwKQEAgLTE4NiwxMCArMTk1LDEyIEBACiAgICB3cml0dGVuIGlmIHRoZSBkaWN0aW9uYXJ5IGlzIG1pc3NpbmcgYSBrZXkgaW4gKmZpZWxkbmFtZXMqLiAgSWYgdGhlCiAgICBkaWN0aW9uYXJ5IHBhc3NlZCB0byB0aGUgOm1ldGg6YHdyaXRlcm93YCBtZXRob2QgY29udGFpbnMgYSBrZXkgbm90IGZvdW5kIGluCiAgICAqZmllbGRuYW1lcyosIHRoZSBvcHRpb25hbCAqZXh0cmFzYWN0aW9uKiBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdoYXQgYWN0aW9uIHRvCi0gICB0YWtlLiAgSWYgaXQgaXMgc2V0IHRvIGBgJ3JhaXNlJ2BgIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgaXQgaXMKLSAgIHNldCB0byBgYCdpZ25vcmUnYGAsIGV4dHJhIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeSBhcmUgaWdub3JlZC4gIEFueSBvdGhlcgotICAgb3B0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YHdyaXRlcmAKLSAgIGluc3RhbmNlLgorICAgdGFrZS4KKyAgIElmIGl0IGlzIHNldCB0byBgYCdyYWlzZSdgYCwgdGhlIGRlZmF1bHQgdmFsdWUsIGEgOmV4YzpgVmFsdWVFcnJvcmAKKyAgIGlzIHJhaXNlZC4KKyAgIElmIGl0IGlzIHNldCB0byBgYCdpZ25vcmUnYGAsIGV4dHJhIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeSBhcmUgaWdub3JlZC4KKyAgIEFueSBvdGhlciBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nCisgICA6Y2xhc3M6YHdyaXRlcmAgaW5zdGFuY2UuCiAKICAgIE5vdGUgdGhhdCB1bmxpa2UgdGhlIDpjbGFzczpgRGljdFJlYWRlcmAgY2xhc3MsIHRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyCiAgICBvZiB0aGUgOmNsYXNzOmBEaWN0V3JpdGVyYCBpcyBub3Qgb3B0aW9uYWwuICBTaW5jZSBQeXRob24ncyA6Y2xhc3M6YGRpY3RgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAppbmRleCBiMjVmYmJiLi4zODQwOTM1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKQEAgLTEyMzksOSArMTIzOSwxMCBAQAogY29tcGlsaW5nL2xpbmtpbmcgYSBwcm9ncmFtLCBhbmQgd2hlbiB0aGUgcHJvZ3JhbSBpcyBydW4uCiAKIFRoZSBwdXJwb3NlIG9mIHRoZSA6ZnVuYzpgZmluZF9saWJyYXJ5YCBmdW5jdGlvbiBpcyB0byBsb2NhdGUgYSBsaWJyYXJ5IGluIGEgd2F5Ci1zaW1pbGFyIHRvIHdoYXQgdGhlIGNvbXBpbGVyIGRvZXMgKG9uIHBsYXRmb3JtcyB3aXRoIHNldmVyYWwgdmVyc2lvbnMgb2YgYQotc2hhcmVkIGxpYnJhcnkgdGhlIG1vc3QgcmVjZW50IHNob3VsZCBiZSBsb2FkZWQpLCB3aGlsZSB0aGUgY3R5cGVzIGxpYnJhcnkKLWxvYWRlcnMgYWN0IGxpa2Ugd2hlbiBhIHByb2dyYW0gaXMgcnVuLCBhbmQgY2FsbCB0aGUgcnVudGltZSBsb2FkZXIgZGlyZWN0bHkuCitzaW1pbGFyIHRvIHdoYXQgdGhlIGNvbXBpbGVyIG9yIHJ1bnRpbWUgbG9hZGVyIGRvZXMgKG9uIHBsYXRmb3JtcyB3aXRoIHNldmVyYWwKK3ZlcnNpb25zIG9mIGEgc2hhcmVkIGxpYnJhcnkgdGhlIG1vc3QgcmVjZW50IHNob3VsZCBiZSBsb2FkZWQpLCB3aGlsZSB0aGUgY3R5cGVzCitsaWJyYXJ5IGxvYWRlcnMgYWN0IGxpa2Ugd2hlbiBhIHByb2dyYW0gaXMgcnVuLCBhbmQgY2FsbCB0aGUgcnVudGltZSBsb2FkZXIKK2RpcmVjdGx5LgogCiBUaGUgOm1vZDpgY3R5cGVzLnV0aWxgIG1vZHVsZSBwcm92aWRlcyBhIGZ1bmN0aW9uIHdoaWNoIGNhbiBoZWxwIHRvIGRldGVybWluZQogdGhlIGxpYnJhcnkgdG8gbG9hZC4KQEAgLTEyNTksOCArMTI2MCwxNCBAQAogVGhlIGV4YWN0IGZ1bmN0aW9uYWxpdHkgaXMgc3lzdGVtIGRlcGVuZGVudC4KIAogT24gTGludXgsIDpmdW5jOmBmaW5kX2xpYnJhcnlgIHRyaWVzIHRvIHJ1biBleHRlcm5hbCBwcm9ncmFtcwotKGBgL3NiaW4vbGRjb25maWdgYCwgYGBnY2NgYCwgYW5kIGBgb2JqZHVtcGBgKSB0byBmaW5kIHRoZSBsaWJyYXJ5IGZpbGUuICBJdAotcmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGxpYnJhcnkgZmlsZS4gIEhlcmUgYXJlIHNvbWUgZXhhbXBsZXM6OgorKGBgL3NiaW4vbGRjb25maWdgYCwgYGBnY2NgYCwgYGBvYmpkdW1wYGAgYW5kIGBgbGRgYCkgdG8gZmluZCB0aGUgbGlicmFyeSBmaWxlLgorSXQgcmV0dXJucyB0aGUgZmlsZW5hbWUgb2YgdGhlIGxpYnJhcnkgZmlsZS4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIE9uIExpbnV4LCB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgTERfTElCUkFSWV9QQVRIYGAgaXMgdXNlZAorICAgd2hlbiBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcywgaWYgYSBsaWJyYXJ5IGNhbm5vdCBiZSBmb3VuZCBieSBhbnkgb3RoZXIgbWVhbnMuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXM6OgogCiAgICA+Pj4gZnJvbSBjdHlwZXMudXRpbCBpbXBvcnQgZmluZF9saWJyYXJ5CiAgICA+Pj4gZmluZF9saWJyYXJ5KCJtIikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAppbmRleCA5MjU0YWU4Li5lY2FhZDA2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CkBAIC01MjIsNyArNTIyLDcgQEAKIAogSW5zdGFuY2UgbWV0aG9kczoKIAotLi4gbWV0aG9kOjogZGF0ZS5yZXBsYWNlKHllYXIsIG1vbnRoLCBkYXkpCisuLiBtZXRob2Q6OiBkYXRlLnJlcGxhY2UoeWVhcj1zZWxmLnllYXIsIG1vbnRoPXNlbGYubW9udGgsIGRheT1zZWxmLmRheSkKIAogICAgUmV0dXJuIGEgZGF0ZSB3aXRoIHRoZSBzYW1lIHZhbHVlLCBleGNlcHQgZm9yIHRob3NlIHBhcmFtZXRlcnMgZ2l2ZW4gbmV3CiAgICB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBGb3IgZXhhbXBsZSwgaWYgYGBkID09CkBAIC02MTAsNyArNjEwLDggQEAKIC4uIG1ldGhvZDo6IGRhdGUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC5kYXRlLnN0cmZ0aW1lYC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0Ci0gICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiBGb3IgYQorICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC02ODIsMjIgKzY4MywyNiBAQAogCiBDb25zdHJ1Y3RvcjoKIAotLi4gY2xhc3M6OiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpCisuLiBjbGFzczo6IGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKQogCiAgICBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiAgKnR6aW5mbyogbWF5IGJlIGBgTm9uZWBgLCBvciBhbgogICAgaW5zdGFuY2Ugb2YgYSA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50ZWdlcnMsCiAgICBpbiB0aGUgZm9sbG93aW5nIHJhbmdlczoKIAotICAgKiBgYE1JTllFQVIgPD0geWVhciA8PSBNQVhZRUFSYGAKLSAgICogYGAxIDw9IG1vbnRoIDw9IDEyYGAKLSAgICogYGAxIDw9IGRheSA8PSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGggYW5kIHllYXJgYAotICAgKiBgYDAgPD0gaG91ciA8IDI0YGAKLSAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAKLSAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAKLSAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgCisgICAqIGBgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVJgYCwKKyAgICogYGAxIDw9IG1vbnRoIDw9IDEyYGAsCisgICAqIGBgMSA8PSBkYXkgPD0gbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyYGAsCisgICAqIGBgMCA8PSBob3VyIDwgMjRgYCwKKyAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAsCisgICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgLAorICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAsCisgICAqIGBgZm9sZCBpbiBbMCwgMV1gYC4KIAogICAgSWYgYW4gYXJndW1lbnQgb3V0c2lkZSB0aG9zZSByYW5nZXMgaXMgZ2l2ZW4sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgYGBmb2xkYGAgYXJndW1lbnQuCisKIE90aGVyIGNvbnN0cnVjdG9ycywgYWxsIGNsYXNzIG1ldGhvZHM6CiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudG9kYXkoKQpAQCAtNzU3LDYgKzc2Miw4IEBACiAgICAgICBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IgOmM6ZnVuYzpgZ210aW1lYAogICAgICAgZmFpbHVyZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBmcm9tdGltZXN0YW1wYCBtYXkgcmV0dXJuIGluc3RhbmNlcyB3aXRoIDphdHRyOmAuZm9sZGAgc2V0IHRvIDEuCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKQEAgLTc5MywxNiArODAwLDIzIEBACiAgICBtaWNyb3NlY29uZCBvZiB0aGUgcmVzdWx0IGFyZSBhbGwgMCwgYW5kIDphdHRyOmAudHppbmZvYCBpcyBgYE5vbmVgYC4KIAogCi0uLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLmNvbWJpbmUoZGF0ZSwgdGltZSkKKy4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuY29tYmluZShkYXRlLCB0aW1lLCB0emluZm89c2VsZi50emluZm8pCiAKICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdob3NlIGRhdGUgY29tcG9uZW50cyBhcmUgZXF1YWwgdG8gdGhlCi0gICBnaXZlbiA6Y2xhc3M6YGRhdGVgIG9iamVjdCdzLCBhbmQgd2hvc2UgdGltZSBjb21wb25lbnRzIGFuZCA6YXR0cjpgLnR6aW5mb2AKLSAgIGF0dHJpYnV0ZXMgYXJlIGVxdWFsIHRvIHRoZSBnaXZlbiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qncy4gRm9yIGFueQotICAgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCAqZCosCi0gICBgYGQgPT0gZGF0ZXRpbWUuY29tYmluZShkLmRhdGUoKSwgZC50aW1ldHooKSlgYC4gIElmIGRhdGUgaXMgYQorICAgZ2l2ZW4gOmNsYXNzOmBkYXRlYCBvYmplY3QncywgYW5kIHdob3NlIHRpbWUgY29tcG9uZW50cworICAgYXJlIGVxdWFsIHRvIHRoZSBnaXZlbiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qncy4gIElmIHRoZSAqdHppbmZvKgorICAgYXJndW1lbnQgaXMgcHJvdmlkZWQsIGl0cyB2YWx1ZSBpcyB1c2VkIHRvIHNldCB0aGUgOmF0dHI6YC50emluZm9gIGF0dHJpYnV0ZQorICAgb2YgdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHRoZSA6YXR0cjpgfi50aW1lLnR6aW5mb2AgYXR0cmlidXRlIG9mIHRoZSAqdGltZSogYXJndW1lbnQKKyAgIGlzIHVzZWQuCisKKyAgIEZvciBhbnkgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCAqZCosCisgICBgYGQgPT0gZGF0ZXRpbWUuY29tYmluZShkLmRhdGUoKSwgZC50aW1lKCksIGQudHppbmZvKWBgLiAgSWYgZGF0ZSBpcyBhCiAgICA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0LCBpdHMgdGltZSBjb21wb25lbnRzIGFuZCA6YXR0cjpgLnR6aW5mb2AgYXR0cmlidXRlcwogICAgYXJlIGlnbm9yZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnR6aW5mbyogYXJndW1lbnQuCisKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5zdHJwdGltZShkYXRlX3N0cmluZywgZm9ybWF0KQogCkBAIC04NzgsNiArODkyLDE2IEBACiAgICBvciBgYE5vbmVgYCBpZiBub25lIHdhcyBwYXNzZWQuCiAKIAorLi4gYXR0cmlidXRlOjogZGF0ZXRpbWUuZm9sZAorCisgICBJbiBgYFswLCAxXWBgLiAgVXNlZCB0byBkaXNhbWJpZ3VhdGUgd2FsbCB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4gIChBCisgICByZXBlYXRlZCBpbnRlcnZhbCBvY2N1cnMgd2hlbiBjbG9ja3MgYXJlIHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQgb2YgZGF5bGlnaHQgc2F2aW5nCisgICB0aW1lIG9yIHdoZW4gdGhlIFVUQyBvZmZzZXQgZm9yIHRoZSBjdXJyZW50IHpvbmUgaXMgZGVjcmVhc2VkIGZvciBwb2xpdGljYWwgcmVhc29ucy4pCisgICBUaGUgdmFsdWUgMCAoMSkgcmVwcmVzZW50cyB0aGUgZWFybGllciAobGF0ZXIpIG9mIHRoZSB0d28gbW9tZW50cyB3aXRoIHRoZSBzYW1lIHdhbGwKKyAgIHRpbWUgcmVwcmVzZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiBTdXBwb3J0ZWQgb3BlcmF0aW9uczoKIAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTk2NiwyMyArOTkwLDM0IEBACiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWUoKQogCi0gICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCBhbmQgbWljcm9zZWNvbmQuCisgICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgYW5kIGZvbGQuCiAgICA6YXR0cjpgLnR6aW5mb2AgaXMgYGBOb25lYGAuICBTZWUgYWxzbyBtZXRob2QgOm1ldGg6YHRpbWV0emAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgZm9sZCB2YWx1ZSBpcyBjb3BpZWQgdG8gdGhlIHJldHVybmVkIDpjbGFzczpgLnRpbWVgIG9iamVjdC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS50aW1ldHooKQogCi0gICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGFuZAorICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkLCBhbmQKICAgIHR6aW5mbyBhdHRyaWJ1dGVzLiAgU2VlIGFsc28gbWV0aG9kIDptZXRoOmB0aW1lYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSBmb2xkIHZhbHVlIGlzIGNvcGllZCB0byB0aGUgcmV0dXJuZWQgOmNsYXNzOmAudGltZWAgb2JqZWN0LgogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5yZXBsYWNlKFt5ZWFyWywgbW9udGhbLCBkYXlbLCBob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXV1dXSkKKworLi4gbWV0aG9kOjogZGF0ZXRpbWUucmVwbGFjZSh5ZWFyPXNlbGYueWVhciwgbW9udGg9c2VsZi5tb250aCwgZGF5PXNlbGYuZGF5LCBcCisgICBob3VyPXNlbGYuaG91ciwgbWludXRlPXNlbGYubWludXRlLCBzZWNvbmQ9c2VsZi5zZWNvbmQsIG1pY3Jvc2Vjb25kPXNlbGYubWljcm9zZWNvbmQsIFwKKyAgIHR6aW5mbz1zZWxmLnR6aW5mbywgKiBmb2xkPTApCiAKICAgIFJldHVybiBhIGRhdGV0aW1lIHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcywgZXhjZXB0IGZvciB0aG9zZSBhdHRyaWJ1dGVzIGdpdmVuCiAgICBuZXcgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgTm90ZSB0aGF0CiAgICBgYHR6aW5mbz1Ob25lYGAgY2FuIGJlIHNwZWNpZmllZCB0byBjcmVhdGUgYSBuYWl2ZSBkYXRldGltZSBmcm9tIGFuIGF3YXJlCiAgICBkYXRldGltZSB3aXRoIG5vIGNvbnZlcnNpb24gb2YgZGF0ZSBhbmQgdGltZSBkYXRhLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6PU5vbmUpCiAKQEAgLTk5MSwyMyArMTAyNiwyMCBAQAogICAgKnNlbGYqLCBidXQgaW4gKnR6KidzIGxvY2FsIHRpbWUuCiAKICAgIElmIHByb3ZpZGVkLCAqdHoqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MsIGFuZCBpdHMKLSAgIDptZXRoOmB1dGNvZmZzZXRgIGFuZCA6bWV0aDpgZHN0YCBtZXRob2RzIG11c3Qgbm90IHJldHVybiBgYE5vbmVgYC4gICpzZWxmKiBtdXN0Ci0gICBiZSBhd2FyZSAoYGBzZWxmLnR6aW5mb2BgIG11c3Qgbm90IGJlIGBgTm9uZWBgLCBhbmQgYGBzZWxmLnV0Y29mZnNldCgpYGAgbXVzdAotICAgbm90IHJldHVybiBgYE5vbmVgYCkuCisgICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICBJZiAqc2VsZioKKyAgIGlzIG5haXZlIChgYHNlbGYudHppbmZvIGlzIE5vbmVgYCksIGl0IGlzIHByZXN1bWVkIHRvIHJlcHJlc2VudCB0aW1lIGluIHRoZQorICAgc3lzdGVtIHRpbWV6b25lLgogCiAgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgKG9yIHdpdGggYGB0ej1Ob25lYGApIHRoZSBzeXN0ZW0gbG9jYWwKLSAgIHRpbWV6b25lIGlzIGFzc3VtZWQuICBUaGUgYGAudHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKKyAgIHRpbWV6b25lIGlzIGFzc3VtZWQgZm9yIHRoZSB0YXJnZXQgdGltZXpvbmUuICBUaGUgYGAudHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKICAgIGRhdGV0aW1lIGluc3RhbmNlIHdpbGwgYmUgc2V0IHRvIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZXpvbmVgCiAgICB3aXRoIHRoZSB6b25lIG5hbWUgYW5kIG9mZnNldCBvYnRhaW5lZCBmcm9tIHRoZSBPUy4KIAogICAgSWYgYGBzZWxmLnR6aW5mb2BgIGlzICp0eiosIGBgc2VsZi5hc3RpbWV6b25lKHR6KWBgIGlzIGVxdWFsIHRvICpzZWxmKjogIG5vCiAgICBhZGp1c3RtZW50IG9mIGRhdGUgb3IgdGltZSBkYXRhIGlzIHBlcmZvcm1lZC4gRWxzZSB0aGUgcmVzdWx0IGlzIGxvY2FsCi0gICB0aW1lIGluIHRpbWUgem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKLSAgIGBgYXN0eiA9IGR0LmFzdGltZXpvbmUodHopYGAsIGBgYXN0eiAtIGFzdHoudXRjb2Zmc2V0KClgYCB3aWxsIHVzdWFsbHkgaGF2ZQotICAgdGhlIHNhbWUgZGF0ZSBhbmQgdGltZSBkYXRhIGFzIGBgZHQgLSBkdC51dGNvZmZzZXQoKWBgLiBUaGUgZGlzY3Vzc2lvbgotICAgb2YgY2xhc3MgOmNsYXNzOmB0emluZm9gIGV4cGxhaW5zIHRoZSBjYXNlcyBhdCBEYXlsaWdodCBTYXZpbmcgVGltZSB0cmFuc2l0aW9uCi0gICBib3VuZGFyaWVzIHdoZXJlIHRoaXMgY2Fubm90IGJlIGFjaGlldmVkIChhbiBpc3N1ZSBvbmx5IGlmICp0eiogbW9kZWxzIGJvdGgKLSAgIHN0YW5kYXJkIGFuZCBkYXlsaWdodCB0aW1lKS4KKyAgIHRpbWUgaW4gdGhlIHRpbWV6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgorICAgYGBhc3R6ID0gZHQuYXN0aW1lem9uZSh0eilgYCwgYGBhc3R6IC0gYXN0ei51dGNvZmZzZXQoKWBgIHdpbGwgaGF2ZQorICAgdGhlIHNhbWUgZGF0ZSBhbmQgdGltZSBkYXRhIGFzIGBgZHQgLSBkdC51dGNvZmZzZXQoKWBgLgogCiAgICBJZiB5b3UgbWVyZWx5IHdhbnQgdG8gYXR0YWNoIGEgdGltZSB6b25lIG9iamVjdCAqdHoqIHRvIGEgZGF0ZXRpbWUgKmR0KiB3aXRob3V0CiAgICBhZGp1c3RtZW50IG9mIGRhdGUgYW5kIHRpbWUgZGF0YSwgdXNlIGBgZHQucmVwbGFjZSh0emluZm89dHopYGAuICBJZiB5b3UKQEAgLTEwMjksNiArMTA2MSwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgICp0eiogbm93IGNhbiBiZSBvbWl0dGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIDptZXRoOmBhc3RpbWV6b25lYCBtZXRob2QgY2FuIG5vdyBiZSBjYWxsZWQgb24gbmFpdmUgaW5zdGFuY2VzIHRoYXQKKyAgICAgIGFyZSBwcmVzdW1lZCB0byByZXByZXNlbnQgc3lzdGVtIGxvY2FsIHRpbWUuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudXRjb2Zmc2V0KCkKIApAQCAtMTEwNSw2ICsxMTQxLDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIDptZXRoOmB0aW1lc3RhbXBgIG1ldGhvZCB1c2VzIHRoZSA6YXR0cjpgLmZvbGRgIGF0dHJpYnV0ZSB0bworICAgICAgZGlzYW1iaWd1YXRlIHRoZSB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIFRoZXJlIGlzIG5vIG1ldGhvZCB0byBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBkaXJlY3RseSBmcm9tIGEKQEAgLTExMzgsNyArMTE3OCw3IEBACiAgICBgYHNlbGYuZGF0ZSgpLmlzb2NhbGVuZGFyKClgYC4KIAogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5pc29mb3JtYXQoc2VwPSdUJykKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLmlzb2Zvcm1hdChzZXA9J1QnLCB0aW1lc3BlYz0nYXV0bycpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGRhdGUgYW5kIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LAogICAgWVlZWS1NTS1ERFRISDpNTTpTUy5tbW1tbW0gb3IsIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKQEAgLTExNTksNiArMTE5OSwzNyBAQAogICAgICAgPj4+IGRhdGV0aW1lKDIwMDIsIDEyLCAyNSwgdHppbmZvPVRaKCkpLmlzb2Zvcm1hdCgnICcpCiAgICAgICAnMjAwMi0xMi0yNSAwMDowMDowMC0wNjozOScKIAorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICp0aW1lc3BlYyogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlICh0aGUgZGVmYXVsdCBpcyBgYCdhdXRvJ2BgKS4KKyAgIEl0IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgLSBgYCdhdXRvJ2BgOiBTYW1lIGFzIGBgJ3NlY29uZHMnYGAgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLAorICAgICBzYW1lIGFzIGBgJ21pY3Jvc2Vjb25kcydgYCBvdGhlcndpc2UuCisgICAtIGBgJ2hvdXJzJ2BgOiBJbmNsdWRlIHRoZSA6YXR0cjpgaG91cmAgaW4gdGhlIHR3by1kaWdpdCBISCBmb3JtYXQuCisgICAtIGBgJ21pbnV0ZXMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgIGFuZCA6YXR0cjpgbWludXRlYCBpbiBISDpNTSBmb3JtYXQuCisgICAtIGBgJ3NlY29uZHMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgLCA6YXR0cjpgbWludXRlYCwgYW5kIDphdHRyOmBzZWNvbmRgCisgICAgIGluIEhIOk1NOlNTIGZvcm1hdC4KKyAgIC0gYGAnbWlsbGlzZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSwgYnV0IHRydW5jYXRlIGZyYWN0aW9uYWwgc2Vjb25kCisgICAgIHBhcnQgdG8gbWlsbGlzZWNvbmRzLiBISDpNTTpTUy5zc3MgZm9ybWF0LgorICAgLSBgYCdtaWNyb3NlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lIGluIEhIOk1NOlNTLm1tbW1tbSBmb3JtYXQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBFeGNsdWRlZCB0aW1lIGNvbXBvbmVudHMgYXJlIHRydW5jYXRlZCwgbm90IHJvdW5kZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIG9uIGFuIGludmFsaWQgKnRpbWVzcGVjKiBhcmd1bWVudC4KKworCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKyAgICAgID4+PiBkYXRldGltZS5ub3coKS5pc29mb3JtYXQodGltZXNwZWM9J21pbnV0ZXMnKQorICAgICAgJzIwMDItMTItMjVUMDA6MDAnCisgICAgICA+Pj4gZHQgPSBkYXRldGltZSgyMDE1LCAxLCAxLCAxMiwgMzAsIDU5LCAwKQorICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJykKKyAgICAgICcyMDE1LTAxLTAxVDEyOjMwOjU5LjAwMDAwMCcKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnRpbWVzcGVjKiBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS5fX3N0cl9fKCkKIApAQCAtMTE4NSw3ICsxMjU2LDggQEAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAuZGF0ZXRpbWUuc3RyZnRpbWVgLiAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0Ci0gICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCisgICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKICAgIGNvbXBsZXRlIGxpc3Qgb2YgZm9ybWF0dGluZyBkaXJlY3RpdmVzLCBzZWUKICAgIDpyZWY6YHN0cmZ0aW1lLXN0cnB0aW1lLWJlaGF2aW9yYC4KIApAQCAtMTMwMiwxNiArMTM3NCwxNyBAQAogQSB0aW1lIG9iamVjdCByZXByZXNlbnRzIGEgKGxvY2FsKSB0aW1lIG9mIGRheSwgaW5kZXBlbmRlbnQgb2YgYW55IHBhcnRpY3VsYXIKIGRheSwgYW5kIHN1YmplY3QgdG8gYWRqdXN0bWVudCB2aWEgYSA6Y2xhc3M6YHR6aW5mb2Agb2JqZWN0LgogCi0uLiBjbGFzczo6IHRpbWUoaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKQorLi4gY2xhc3M6OiB0aW1lKGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKQogCiAgICBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gICp0emluZm8qIG1heSBiZSBgYE5vbmVgYCwgb3IgYW4gaW5zdGFuY2Ugb2YgYQogICAgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgbWF5IGJlIGludGVnZXJzLCBpbiB0aGUKICAgIGZvbGxvd2luZyByYW5nZXM6CiAKLSAgICogYGAwIDw9IGhvdXIgPCAyNGBgCi0gICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgCi0gICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgCi0gICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYC4KKyAgICogYGAwIDw9IGhvdXIgPCAyNGBgLAorICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYCwKKyAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAsCisgICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYCwKKyAgICogYGBmb2xkIGluIFswLCAxXWBgLgogCiAgICBJZiBhbiBhcmd1bWVudCBvdXRzaWRlIHRob3NlIHJhbmdlcyBpcyBnaXZlbiwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiAgQWxsCiAgICBkZWZhdWx0IHRvIGBgMGBgIGV4Y2VwdCAqdHppbmZvKiwgd2hpY2ggZGVmYXVsdHMgdG8gOmNvbnN0OmBOb25lYC4KQEAgLTEzNjQsNiArMTQzNywxNyBAQAogICAgYGBOb25lYGAgaWYgbm9uZSB3YXMgcGFzc2VkLgogCiAKKy4uIGF0dHJpYnV0ZTo6IHRpbWUuZm9sZAorCisgICBJbiBgYFswLCAxXWBgLiAgVXNlZCB0byBkaXNhbWJpZ3VhdGUgd2FsbCB0aW1lcyBkdXJpbmcgYSByZXBlYXRlZCBpbnRlcnZhbC4gIChBCisgICByZXBlYXRlZCBpbnRlcnZhbCBvY2N1cnMgd2hlbiBjbG9ja3MgYXJlIHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQgb2YgZGF5bGlnaHQgc2F2aW5nCisgICB0aW1lIG9yIHdoZW4gdGhlIFVUQyBvZmZzZXQgZm9yIHRoZSBjdXJyZW50IHpvbmUgaXMgZGVjcmVhc2VkIGZvciBwb2xpdGljYWwgcmVhc29ucy4pCisgICBUaGUgdmFsdWUgMCAoMSkgcmVwcmVzZW50cyB0aGUgZWFybGllciAobGF0ZXIpIG9mIHRoZSB0d28gbW9tZW50cyB3aXRoIHRoZSBzYW1lIHdhbGwKKyAgIHRpbWUgcmVwcmVzZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFN1cHBvcnRlZCBvcGVyYXRpb25zOgogCiAqIGNvbXBhcmlzb24gb2YgOmNsYXNzOmAudGltZWAgdG8gOmNsYXNzOmAudGltZWAsIHdoZXJlICphKiBpcyBjb25zaWRlcmVkIGxlc3MKQEAgLTEzOTksMjEgKzE0ODMsNTggQEAKIAogSW5zdGFuY2UgbWV0aG9kczoKIAotLi4gbWV0aG9kOjogdGltZS5yZXBsYWNlKFtob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLCB0emluZm9dXV1dXSkKKy4uIG1ldGhvZDo6IHRpbWUucmVwbGFjZShob3VyPXNlbGYuaG91ciwgbWludXRlPXNlbGYubWludXRlLCBzZWNvbmQ9c2VsZi5zZWNvbmQsIFwKKyAgIG1pY3Jvc2Vjb25kPXNlbGYubWljcm9zZWNvbmQsIHR6aW5mbz1zZWxmLnR6aW5mbywgKiBmb2xkPTApCiAKICAgIFJldHVybiBhIDpjbGFzczpgLnRpbWVgIHdpdGggdGhlIHNhbWUgdmFsdWUsIGV4Y2VwdCBmb3IgdGhvc2UgYXR0cmlidXRlcyBnaXZlbgogICAgbmV3IHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIE5vdGUgdGhhdAogICAgYGB0emluZm89Tm9uZWBgIGNhbiBiZSBzcGVjaWZpZWQgdG8gY3JlYXRlIGEgbmFpdmUgOmNsYXNzOmAudGltZWAgZnJvbSBhbgogICAgYXdhcmUgOmNsYXNzOmAudGltZWAsIHdpdGhvdXQgY29udmVyc2lvbiBvZiB0aGUgdGltZSBkYXRhLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KIAotLi4gbWV0aG9kOjogdGltZS5pc29mb3JtYXQoKQorCisuLiBtZXRob2Q6OiB0aW1lLmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpCiAKICAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRpbWUgaW4gSVNPIDg2MDEgZm9ybWF0LCBISDpNTTpTUy5tbW1tbW0gb3IsIGlmCi0gICBzZWxmLm1pY3Jvc2Vjb25kIGlzIDAsIEhIOk1NOlNTIElmIDptZXRoOmB1dGNvZmZzZXRgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgYQorICAgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLCBISDpNTTpTUyBJZiA6bWV0aDpgdXRjb2Zmc2V0YCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIGEKICAgIDYtY2hhcmFjdGVyIHN0cmluZyBpcyBhcHBlbmRlZCwgZ2l2aW5nIHRoZSBVVEMgb2Zmc2V0IGluIChzaWduZWQpIGhvdXJzIGFuZAogICAgbWludXRlczogSEg6TU06U1MubW1tbW1tK0hIOk1NIG9yLCBpZiBzZWxmLm1pY3Jvc2Vjb25kIGlzIDAsIEhIOk1NOlNTK0hIOk1NCiAKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqdGltZXNwZWMqIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgIGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZSAodGhlIGRlZmF1bHQgaXMgYGAnYXV0bydgYCkuCisgICBJdCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIC0gYGAnYXV0bydgYDogU2FtZSBhcyBgYCdzZWNvbmRzJ2BgIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKKyAgICAgc2FtZSBhcyBgYCdtaWNyb3NlY29uZHMnYGAgb3RoZXJ3aXNlLgorICAgLSBgYCdob3VycydgYDogSW5jbHVkZSB0aGUgOmF0dHI6YGhvdXJgIGluIHRoZSB0d28tZGlnaXQgSEggZm9ybWF0LgorICAgLSBgYCdtaW51dGVzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCBhbmQgOmF0dHI6YG1pbnV0ZWAgaW4gSEg6TU0gZm9ybWF0LgorICAgLSBgYCdzZWNvbmRzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCwgOmF0dHI6YG1pbnV0ZWAsIGFuZCA6YXR0cjpgc2Vjb25kYAorICAgICBpbiBISDpNTTpTUyBmb3JtYXQuCisgICAtIGBgJ21pbGxpc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUsIGJ1dCB0cnVuY2F0ZSBmcmFjdGlvbmFsIHNlY29uZAorICAgICBwYXJ0IHRvIG1pbGxpc2Vjb25kcy4gSEg6TU06U1Muc3NzIGZvcm1hdC4KKyAgIC0gYGAnbWljcm9zZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSBpbiBISDpNTTpTUy5tbW1tbW0gZm9ybWF0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRXhjbHVkZWQgdGltZSBjb21wb25lbnRzIGFyZSB0cnVuY2F0ZWQsIG5vdCByb3VuZGVkLgorCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBvbiBhbiBpbnZhbGlkICp0aW1lc3BlYyogYXJndW1lbnQuCisKKworICAgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWUKKyAgICAgID4+PiB0aW1lKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0xMjM0NTYpLmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpCisgICAgICAnMTI6MzQnCisgICAgICA+Pj4gZHQgPSB0aW1lKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0wKQorICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJykKKyAgICAgICcxMjozNDo1Ni4wMDAwMDAnCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJykKKyAgICAgICcxMjozNDo1NicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgKnRpbWVzcGVjKiBhcmd1bWVudC4KKwogCiAuLiBtZXRob2Q6OiB0aW1lLl9fc3RyX18oKQogCkBAIC0xNDMwLDcgKzE1NTEsOCBAQAogLi4gbWV0aG9kOjogdGltZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLnRpbWUuc3RyZnRpbWVgLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQgc3RyaW5nCi0gICBmb3IgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQorICAgZm9yIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC0xNjgwLDkgKzE4MDIsMTkgQEAKIFdoZW4gRFNUIHN0YXJ0cyAodGhlICJzdGFydCIgbGluZSksIHRoZSBsb2NhbCB3YWxsIGNsb2NrIGxlYXBzIGZyb20gMTo1OSB0bwogMzowMC4gIEEgd2FsbCB0aW1lIG9mIHRoZSBmb3JtIDI6TU0gZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSBvbiB0aGF0IGRheSwgc28KIGBgYXN0aW1lem9uZShFYXN0ZXJuKWBgIHdvbid0IGRlbGl2ZXIgYSByZXN1bHQgd2l0aCBgYGhvdXIgPT0gMmBgIG9uIHRoZSBkYXkgRFNUCi1iZWdpbnMuICBJbiBvcmRlciBmb3IgOm1ldGg6YGFzdGltZXpvbmVgIHRvIG1ha2UgdGhpcyBndWFyYW50ZWUsIHRoZQotOm1ldGg6YHR6aW5mby5kc3RgIG1ldGhvZCBtdXN0IGNvbnNpZGVyIHRpbWVzIGluIHRoZSAibWlzc2luZyBob3VyIiAoMjpNTSBmb3IKLUVhc3Rlcm4pIHRvIGJlIGluIGRheWxpZ2h0IHRpbWUuCitiZWdpbnMuICBGb3IgZXhhbXBsZSwgYXQgdGhlIFNwcmluZyBmb3J3YXJkIHRyYW5zaXRpb24gb2YgMjAxNiwgd2UgZ2V0CisKKyAgICA+Pj4gdTAgPSBkYXRldGltZSgyMDE2LCAzLCAxMywgNSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgLi4uICAgICB1ID0gdTAgKyBpKkhPVVIKKyAgICAuLi4gICAgIHQgPSB1LmFzdGltZXpvbmUoRWFzdGVybikKKyAgICAuLi4gICAgIHByaW50KHUudGltZSgpLCAnVVRDID0nLCB0LnRpbWUoKSwgdC50em5hbWUoKSkKKyAgICAuLi4KKyAgICAwNTowMDowMCBVVEMgPSAwMDowMDowMCBFU1QKKyAgICAwNjowMDowMCBVVEMgPSAwMTowMDowMCBFU1QKKyAgICAwNzowMDowMCBVVEMgPSAwMzowMDowMCBFRFQKKyAgICAwODowMDowMCBVVEMgPSAwNDowMDowMCBFRFQKKwogCiBXaGVuIERTVCBlbmRzICh0aGUgImVuZCIgbGluZSksIHRoZXJlJ3MgYSBwb3RlbnRpYWxseSB3b3JzZSBwcm9ibGVtOiB0aGVyZSdzIGFuCiBob3VyIHRoYXQgY2FuJ3QgYmUgc3BlbGxlZCB1bmFtYmlndW91c2x5IGluIGxvY2FsIHdhbGwgdGltZTogdGhlIGxhc3QgaG91ciBvZgpAQCAtMTY5MSwyOCArMTgyMyw0MSBAQAogdG8gMTowMCAoc3RhbmRhcmQgdGltZSkgYWdhaW4uIExvY2FsIHRpbWVzIG9mIHRoZSBmb3JtIDE6TU0gYXJlIGFtYmlndW91cy4KIDptZXRoOmBhc3RpbWV6b25lYCBtaW1pY3MgdGhlIGxvY2FsIGNsb2NrJ3MgYmVoYXZpb3IgYnkgbWFwcGluZyB0d28gYWRqYWNlbnQgVVRDCiBob3VycyBpbnRvIHRoZSBzYW1lIGxvY2FsIGhvdXIgdGhlbi4gIEluIHRoZSBFYXN0ZXJuIGV4YW1wbGUsIFVUQyB0aW1lcyBvZiB0aGUKLWZvcm0gNTpNTSBhbmQgNjpNTSBib3RoIG1hcCB0byAxOk1NIHdoZW4gY29udmVydGVkIHRvIEVhc3Rlcm4uICBJbiBvcmRlciBmb3IKLTptZXRoOmBhc3RpbWV6b25lYCB0byBtYWtlIHRoaXMgZ3VhcmFudGVlLCB0aGUgOm1ldGg6YHR6aW5mby5kc3RgIG1ldGhvZCBtdXN0Ci1jb25zaWRlciB0aW1lcyBpbiB0aGUgInJlcGVhdGVkIGhvdXIiIHRvIGJlIGluIHN0YW5kYXJkIHRpbWUuICBUaGlzIGlzIGVhc2lseQotYXJyYW5nZWQsIGFzIGluIHRoZSBleGFtcGxlLCBieSBleHByZXNzaW5nIERTVCBzd2l0Y2ggdGltZXMgaW4gdGhlIHRpbWUgem9uZSdzCi1zdGFuZGFyZCBsb2NhbCB0aW1lLgorZm9ybSA1Ok1NIGFuZCA2Ok1NIGJvdGggbWFwIHRvIDE6TU0gd2hlbiBjb252ZXJ0ZWQgdG8gRWFzdGVybiwgYnV0IGVhcmxpZXIgdGltZXMKK2hhdmUgdGhlIDphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIHNldCB0byAwIGFuZCB0aGUgbGF0ZXIgdGltZXMgaGF2ZSBpdCBzZXQgdG8gMS4KK0ZvciBleGFtcGxlLCBhdCB0aGUgRmFsbCBiYWNrIHRyYW5zaXRpb24gb2YgMjAxNiwgd2UgZ2V0CiAKLUFwcGxpY2F0aW9ucyB0aGF0IGNhbid0IGJlYXIgc3VjaCBhbWJpZ3VpdGllcyBzaG91bGQgYXZvaWQgdXNpbmcgaHlicmlkCisgICAgPj4+IHUwID0gZGF0ZXRpbWUoMjAxNiwgMTEsIDYsIDQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgdSA9IHUwICsgaSpIT1VSCisgICAgLi4uICAgICB0ID0gdS5hc3RpbWV6b25lKEVhc3Rlcm4pCisgICAgLi4uICAgICBwcmludCh1LnRpbWUoKSwgJ1VUQyA9JywgdC50aW1lKCksIHQudHpuYW1lKCksIHQuZm9sZCkKKyAgICAuLi4KKyAgICAwNDowMDowMCBVVEMgPSAwMDowMDowMCBFRFQgMAorICAgIDA1OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVEVCAwCisgICAgMDY6MDA6MDAgVVRDID0gMDE6MDA6MDAgRVNUIDEKKyAgICAwNzowMDowMCBVVEMgPSAwMjowMDowMCBFU1QgMAorCitOb3RlIHRoYXQgdGhlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcyB0aGF0IGRpZmZlciBvbmx5IGJ5IHRoZSB2YWx1ZSBvZiB0aGUKKzphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIGFyZSBjb25zaWRlcmVkIGVxdWFsIGluIGNvbXBhcmlzb25zLgorCitBcHBsaWNhdGlvbnMgdGhhdCBjYW4ndCBiZWFyIHdhbGwtdGltZSBhbWJpZ3VpdGllcyBzaG91bGQgZXhwbGljaXRseSBjaGVjayB0aGUKK3ZhbHVlIG9mIHRoZSA6YXR0cjpgfmRhdGV0aW1lLmZvbGRgIGF0dHJpYnV0ZSBvciBhdm9pZCB1c2luZyBoeWJyaWQKIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzc2VzOyB0aGVyZSBhcmUgbm8gYW1iaWd1aXRpZXMgd2hlbiB1c2luZyA6Y2xhc3M6YHRpbWV6b25lYCwKIG9yIGFueSBvdGhlciBmaXhlZC1vZmZzZXQgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzIChzdWNoIGFzIGEgY2xhc3MgcmVwcmVzZW50aW5nCiBvbmx5IEVTVCAoZml4ZWQgb2Zmc2V0IC01IGhvdXJzKSwgb3Igb25seSBFRFQgKGZpeGVkIG9mZnNldCAtNCBob3VycykpLgogCiAuLiBzZWVhbHNvOjoKIAotICAgYHB5dHogPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ei8+YF8KKyAgIGBkYXRldHVpbC50eiA8aHR0cHM6Ly9kYXRldXRpbC5yZWFkdGhlZG9jcy5pby9lbi9zdGFibGUvdHouaHRtbD5gXwogICAgICAgVGhlIHN0YW5kYXJkIGxpYnJhcnkgaGFzIDpjbGFzczpgdGltZXpvbmVgIGNsYXNzIGZvciBoYW5kbGluZyBhcmJpdHJhcnkKICAgICAgIGZpeGVkIG9mZnNldHMgZnJvbSBVVEMgYW5kIDphdHRyOmB0aW1lem9uZS51dGNgIGFzIFVUQyB0aW1lem9uZSBpbnN0YW5jZS4KIAotICAgICAgKnB5dHoqIGxpYnJhcnkgYnJpbmdzIHRoZSAqSUFOQSB0aW1lem9uZSBkYXRhYmFzZSogKGFsc28ga25vd24gYXMgdGhlCisgICAgICAqZGF0ZXR1aWwudHoqIGxpYnJhcnkgYnJpbmdzIHRoZSAqSUFOQSB0aW1lem9uZSBkYXRhYmFzZSogKGFsc28ga25vd24gYXMgdGhlCiAgICAgICBPbHNvbiBkYXRhYmFzZSkgdG8gUHl0aG9uIGFuZCBpdHMgdXNhZ2UgaXMgcmVjb21tZW5kZWQuCiAKICAgIGBJQU5BIHRpbWV6b25lIGRhdGFiYXNlIDxodHRwczovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzPmBfCi0gICAgICBUaGUgVGltZSBab25lIERhdGFiYXNlIChvZnRlbiBjYWxsZWQgdHogb3Igem9uZWluZm8pIGNvbnRhaW5zIGNvZGUgYW5kCisgICAgICBUaGUgVGltZSBab25lIERhdGFiYXNlIChvZnRlbiBjYWxsZWQgdHosIHR6ZGF0YSBvciB6b25laW5mbykgY29udGFpbnMgY29kZSBhbmQKICAgICAgIGRhdGEgdGhhdCByZXByZXNlbnQgdGhlIGhpc3Rvcnkgb2YgbG9jYWwgdGltZSBmb3IgbWFueSByZXByZXNlbnRhdGl2ZQogICAgICAgbG9jYXRpb25zIGFyb3VuZCB0aGUgZ2xvYmUuIEl0IGlzIHVwZGF0ZWQgcGVyaW9kaWNhbGx5IHRvIHJlZmxlY3QgY2hhbmdlcwogICAgICAgbWFkZSBieSBwb2xpdGljYWwgYm9kaWVzIHRvIHRpbWUgem9uZSBib3VuZGFyaWVzLCBVVEMgb2Zmc2V0cywgYW5kCkBAIC0xNzMyLDcgKzE4NzcsNyBAQAogbWFkZSB0byBjaXZpbCB0aW1lLgogCiAKLS4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0WywgbmFtZV0pCisuLiBjbGFzczo6IHRpbWV6b25lKG9mZnNldCwgbmFtZT1Ob25lKQogCiAgIFRoZSAqb2Zmc2V0KiBhcmd1bWVudCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIDpjbGFzczpgdGltZWRlbHRhYAogICBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxvY2FsIHRpbWUgYW5kIFVUQy4gIEl0IG11c3QKQEAgLTE3NDEsMTAgKzE4ODYsNyBAQAogICBvdGhlcndpc2UgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgIFRoZSAqbmFtZSogYXJndW1lbnQgaXMgb3B0aW9uYWwuICBJZiBzcGVjaWZpZWQgaXQgbXVzdCBiZSBhIHN0cmluZyB0aGF0Ci0gIGlzIHVzZWQgYXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBgYHR6bmFtZShkdClgYCBtZXRob2QuICBPdGhlcndpc2UsCi0gIGBgdHpuYW1lKGR0KWBgIHJldHVybnMgYSBzdHJpbmcgJ1VUQ3NISDpNTScsIHdoZXJlIHMgaXMgdGhlIHNpZ24gb2YKLSAgKm9mZnNldCosIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAotICBgYG9mZnNldC5taW51dGVzYGAgcmVzcGVjdGl2ZWx5LgorICB3aWxsIGJlIHVzZWQgYXMgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZSA6bWV0aDpgZGF0ZXRpbWUudHpuYW1lYCBtZXRob2QuCiAKICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTE3NTcsMTEgKzE4OTksMTkgQEAKIAogLi4gbWV0aG9kOjogdGltZXpvbmUudHpuYW1lKGR0KQogCi0gIFJldHVybiB0aGUgZml4ZWQgdmFsdWUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgdGltZXpvbmVgIGluc3RhbmNlIGlzCi0gIGNvbnN0cnVjdGVkIG9yIGEgc3RyaW5nICdVVENzSEg6TU0nLCB3aGVyZSBzIGlzIHRoZSBzaWduIG9mCi0gICpvZmZzZXQqLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKKyAgUmV0dXJuIHRoZSBmaXhlZCB2YWx1ZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmB0aW1lem9uZWAgaW5zdGFuY2UKKyAgaXMgY29uc3RydWN0ZWQuICBJZiAqbmFtZSogaXMgbm90IHByb3ZpZGVkIGluIHRoZSBjb25zdHJ1Y3RvciwgdGhlCisgIG5hbWUgcmV0dXJuZWQgYnkgYGB0em5hbWUoZHQpYGAgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIHZhbHVlIG9mIHRoZQorICBgYG9mZnNldGBgIGFzIGZvbGxvd3MuICBJZiAqb2Zmc2V0KiBpcyBgYHRpbWVkZWx0YSgwKWBgLCB0aGUgbmFtZQorICBpcyAiVVRDIiwgb3RoZXJ3aXNlIGl0IGlzIGEgc3RyaW5nICdVVEPCsUhIOk1NJywgd2hlcmUgwrEgaXMgdGhlIHNpZ24KKyAgb2YgYGBvZmZzZXRgYCwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCiAgIGBgb2Zmc2V0Lm1pbnV0ZXNgYCByZXNwZWN0aXZlbHkuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgTmFtZSBnZW5lcmF0ZWQgZnJvbSBgYG9mZnNldD10aW1lZGVsdGEoMClgYCBpcyBub3cgcGxhaW4gJ1VUQycsIG5vdAorICAgICAnVVRDKzAwOjAwJy4KKworCiAuLiBtZXRob2Q6OiB0aW1lem9uZS5kc3QoZHQpCiAKICAgQWx3YXlzIHJldHVybnMgYGBOb25lYGAuCkBAIC0xOTExLDYgKzIwNjEsMzQgQEAKIHwgYGAlJWBgICAgIHwgQSBsaXRlcmFsIGBgJyUnYGAgY2hhcmFjdGVyLiAgIHwgJSAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAorU2V2ZXJhbCBhZGRpdGlvbmFsIGRpcmVjdGl2ZXMgbm90IHJlcXVpcmVkIGJ5IHRoZSBDODkgc3RhbmRhcmQgYXJlIGluY2x1ZGVkIGZvcgorY29udmVuaWVuY2UuIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGNvcnJlc3BvbmQgdG8gSVNPIDg2MDEgZGF0ZSB2YWx1ZXMuIFRoZXNlCittYXkgbm90IGJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHdoZW4gdXNlZCB3aXRoIHRoZSA6bWV0aDpgc3RyZnRpbWVgCittZXRob2QuIFRoZSBJU08gODYwMSB5ZWFyIGFuZCBJU08gODYwMSB3ZWVrIGRpcmVjdGl2ZXMgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUKK3dpdGggdGhlIHllYXIgYW5kIHdlZWsgbnVtYmVyIGRpcmVjdGl2ZXMgYWJvdmUuIENhbGxpbmcgOm1ldGg6YHN0cnB0aW1lYCB3aXRoCitpbmNvbXBsZXRlIG9yIGFtYmlndW91cyBJU08gODYwMSBkaXJlY3RpdmVzIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKworKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBEaXJlY3RpdmUgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgfCBFeGFtcGxlICAgICAgICAgICAgICAgIHwgTm90ZXMgfAorKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09KworfCBgYCVHYGAgICAgfCBJU08gODYwMSB5ZWFyIHdpdGggY2VudHVyeSAgICAgfCAwMDAxLCAwMDAyLCAuLi4sIDIwMTMsIHwgXCg4KSAgfAorfCAgICAgICAgICAgfCByZXByZXNlbnRpbmcgdGhlIHllYXIgdGhhdCAgICAgfCAyMDE0LCAuLi4sIDk5OTgsIDk5OTkgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBjb250YWlucyB0aGUgZ3JlYXRlciBwYXJ0IG9mICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCB0aGUgSVNPIHdlZWsgKGBgJVZgYCkuICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCV1YGAgICAgfCBJU08gODYwMSB3ZWVrZGF5IGFzIGEgZGVjaW1hbCAgfCAxLCAyLCAuLi4sIDcgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBudW1iZXIgd2hlcmUgMSBpcyBNb25kYXkuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCVWYGAgICAgfCBJU08gODYwMSB3ZWVrIGFzIGEgZGVjaW1hbCAgICAgfCAwMSwgMDIsIC4uLiwgNTMgICAgICAgIHwgXCg4KSAgfAorfCAgICAgICAgICAgfCBudW1iZXIgd2l0aCBNb25kYXkgYXMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBXZWVrIDAxIGlzIHRoZSB3ZWVrIGNvbnRhaW5pbmcgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorfCAgICAgICAgICAgfCBKYW4gNC4gICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgIGBgJUdgYCwgYGAldWBgIGFuZCBgYCVWYGAgd2VyZSBhZGRlZC4KKwogTm90ZXM6CiAKICgxKQpAQCAtMTk3NSw3ICsyMTUzLDE0IEBACiAKICg3KQogICAgV2hlbiB1c2VkIHdpdGggdGhlIDptZXRoOmBzdHJwdGltZWAgbWV0aG9kLCBgYCVVYGAgYW5kIGBgJVdgYCBhcmUgb25seSB1c2VkCi0gICBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgorICAgaW4gY2FsY3VsYXRpb25zIHdoZW4gdGhlIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIGNhbGVuZGFyIHllYXIgKGBgJVlgYCkKKyAgIGFyZSBzcGVjaWZpZWQuCisKKyg4KQorICAgU2ltaWxhciB0byBgYCVVYGAgYW5kIGBgJVdgYCwgYGAlVmBgIGlzIG9ubHkgdXNlZCBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUKKyAgIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIElTTyB5ZWFyIChgYCVHYGApIGFyZSBzcGVjaWZpZWQgaW4gYQorICAgOm1ldGg6YHN0cnB0aW1lYCBmb3JtYXQgc3RyaW5nLiBBbHNvIG5vdGUgdGhhdCBgYCVHYGAgYW5kIGBgJVlgYCBhcmUgbm90CisgICBpbnRlcmNoYW5nZWFibGUuCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYm0ucnN0IGIvRG9jL2xpYnJhcnkvZGJtLnJzdAppbmRleCAyYTFkYjkxLi4zMmU4MGIyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYm0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RibS5yc3QKQEAgLTM1MSw2ICszNTEsMTAgQEAKICAgICAgIDpmdW5jOmAub3BlbmAgYWx3YXlzIGNyZWF0ZXMgYSBuZXcgZGF0YWJhc2Ugd2hlbiB0aGUgZmxhZyBoYXMgdGhlIHZhbHVlCiAgICAgICBgYCduJ2BgLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjYgMy44CisgICAgICBDcmVhdGluZyBkYXRhYmFzZSBpbiBgYCdyJ2BgIGFuZCBgYCd3J2BgIG1vZGVzLiAgTW9kaWZ5aW5nIGRhdGFiYXNlIGluCisgICAgICBgYCdyJ2BgIG1vZGUuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBtZXRob2RzIHByb3ZpZGVkIGJ5IHRoZQogICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgIGNsYXNzLCA6Y2xhc3M6YGR1bWJkYm1gIG9iamVjdHMKICAgIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCBiNWNlMGIxLi5lOTg0ZWRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtMzQ1LDcgKzM0NSw3IEBACiAgICAqdmFsdWUqIGNhbiBiZSBhbiBpbnRlZ2VyLCBzdHJpbmcsIHR1cGxlLCA6Y2xhc3M6YGZsb2F0YCwgb3IgYW5vdGhlciA6Y2xhc3M6YERlY2ltYWxgCiAgICBvYmplY3QuIElmIG5vICp2YWx1ZSogaXMgZ2l2ZW4sIHJldHVybnMgYGBEZWNpbWFsKCcwJylgYC4gIElmICp2YWx1ZSogaXMgYQogICAgc3RyaW5nLCBpdCBzaG91bGQgY29uZm9ybSB0byB0aGUgZGVjaW1hbCBudW1lcmljIHN0cmluZyBzeW50YXggYWZ0ZXIgbGVhZGluZwotICAgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBhcmUgcmVtb3ZlZDo6CisgICBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLCBhcyB3ZWxsIGFzIHVuZGVyc2NvcmVzIHRocm91Z2hvdXQsIGFyZSByZW1vdmVkOjoKIAogICAgICAgc2lnbiAgICAgICAgICAgOjo9ICAnKycgfCAnLScKICAgICAgIGRpZ2l0ICAgICAgICAgIDo6PSAgJzAnIHwgJzEnIHwgJzInIHwgJzMnIHwgJzQnIHwgJzUnIHwgJzYnIHwgJzcnIHwgJzgnIHwgJzknCkBAIC0zOTQsNiArMzk0LDEwIEBACiAgICAgICA6Y2xhc3M6YGZsb2F0YCBhcmd1bWVudHMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSA6ZXhjOmBGbG9hdE9wZXJhdGlvbmAKICAgICAgIHRyYXAgaXMgc2V0LiBCeSBkZWZhdWx0IHRoZSB0cmFwIGlzIG9mZi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGZvciBncm91cGluZywgYXMgd2l0aCBpbnRlZ3JhbCBhbmQgZmxvYXRpbmctcG9pbnQKKyAgICAgIGxpdGVyYWxzIGluIGNvZGUuCisKICAgIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQgb2JqZWN0cyBzaGFyZSBtYW55IHByb3BlcnRpZXMgd2l0aCB0aGUgb3RoZXIgYnVpbHQtaW4KICAgIG51bWVyaWMgdHlwZXMgc3VjaCBhcyA6Y2xhc3M6YGZsb2F0YCBhbmQgOmNsYXNzOmBpbnRgLiAgQWxsIG9mIHRoZSB1c3VhbCBtYXRoCiAgICBvcGVyYXRpb25zIGFuZCBzcGVjaWFsIG1ldGhvZHMgYXBwbHkuICBMaWtld2lzZSwgZGVjaW1hbCBvYmplY3RzIGNhbiBiZQpAQCAtNDQ3LDYgKzQ1MSwxOSBAQAogICAgICAgYGBEZWNpbWFsKCczMjFlKzUnKS5hZGp1c3RlZCgpYGAgcmV0dXJucyBzZXZlbi4gIFVzZWQgZm9yIGRldGVybWluaW5nIHRoZQogICAgICAgcG9zaXRpb24gb2YgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgd2l0aCByZXNwZWN0IHRvIHRoZSBkZWNpbWFsIHBvaW50LgogCisgICAuLiBtZXRob2Q6OiBhc19pbnRlZ2VyX3JhdGlvKCkKKworICAgICAgUmV0dXJuIGEgcGFpciBgYChuLCBkKWBgIG9mIGludGVnZXJzIHRoYXQgcmVwcmVzZW50IHRoZSBnaXZlbgorICAgICAgOmNsYXNzOmBEZWNpbWFsYCBpbnN0YW5jZSBhcyBhIGZyYWN0aW9uLCBpbiBsb3dlc3QgdGVybXMgYW5kCisgICAgICB3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3I6OgorCisgICAgICAgICAgPj4+IERlY2ltYWwoJy0zLjE0JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICAgKC0xNTcsIDUwKQorCisgICAgICBUaGUgY29udmVyc2lvbiBpcyBleGFjdC4gIFJhaXNlIE92ZXJmbG93RXJyb3Igb24gaW5maW5pdGllcyBhbmQgVmFsdWVFcnJvcgorICAgICAgb24gTmFOcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKICAgIC4uIG1ldGhvZDo6IGFzX3R1cGxlKCkKIApAQCAtMTA2Miw4ICsxMDc5LDggQEAKICAgICAgICAgIERlY2ltYWwoJzQuNDQnKQogCiAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZSBJQk0gc3BlY2lmaWNhdGlvbi4KLSAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBhIHN0cmluZywgbm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIGlzCi0gICAgICBwZXJtaXR0ZWQuCisgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcsIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBvcgorICAgICAgdW5kZXJzY29yZXMgYXJlIHBlcm1pdHRlZC4KIAogICAgLi4gbWV0aG9kOjogY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChmKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCBmODY3MjViLi5hMTU2OTBiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTMxLDkgKzMxLDkgQEAKIAogICAgPj4+IGRpcy5kaXMobXlmdW5jKQogICAgICAyICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChsZW4pCi0gICAgICAgICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGFsaXN0KQotICAgICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCi0gICAgICAgICAgICAgICAgIDkgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGFsaXN0KQorICAgICAgICAgICAgICAgICA0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgIDYgUkVUVVJOX1ZBTFVFCiAKIChUaGUgIjIiIGlzIGEgbGluZSBudW1iZXIpLgogCkBAIC02MDcsNiArNjA3LDE0IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBvcGNvZGU6OiBTRVRVUF9BTk5PVEFUSU9OUworCisgICBDaGVja3Mgd2hldGhlciBgYF9fYW5ub3RhdGlvbnNfX2BgIGlzIGRlZmluZWQgaW4gYGBsb2NhbHMoKWBgLCBpZiBub3QgaXQgaXMKKyAgIHNldCB1cCB0byBhbiBlbXB0eSBgYGRpY3RgYC4gVGhpcyBvcGNvZGUgaXMgb25seSBlbWl0dGVkIGlmIGEgY2xhc3MKKyAgIG9yIG1vZHVsZSBib2R5IGNvbnRhaW5zIDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9ucyA8dmFyaWFibGUgYW5ub3RhdGlvbj5gCisgICBzdGF0aWNhbGx5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gb3Bjb2RlOjogSU1QT1JUX1NUQVIKIApAQCAtNjgyLDggKzY5MCw3IEBACiAgICAuLiBYWFggZXhwbGFpbiB0aGUgV0hZIHN0dWZmIQogCiAKLUFsbCBvZiB0aGUgZm9sbG93aW5nIG9wY29kZXMgZXhwZWN0IGFyZ3VtZW50cy4gIEFuIGFyZ3VtZW50IGlzIHR3byBieXRlcywgd2l0aAotdGhlIG1vcmUgc2lnbmlmaWNhbnQgYnl0ZSBsYXN0LgorQWxsIG9mIHRoZSBmb2xsb3dpbmcgb3Bjb2RlcyB1c2UgdGhlaXIgYXJndW1lbnRzLgogCiAuLiBvcGNvZGU6OiBTVE9SRV9OQU1FIChuYW1laSkKIApAQCAtNzY5LDYgKzc3NiwyMyBAQAogICAgdG8gaG9sZCAqY291bnQqIGVudHJpZXMuCiAKIAorLi4gb3Bjb2RlOjogQlVJTERfQ09OU1RfS0VZX01BUCAoY291bnQpCisKKyAgIFRoZSB2ZXJzaW9uIG9mIDpvcGNvZGU6YEJVSUxEX01BUGAgc3BlY2lhbGl6ZWQgZm9yIGNvbnN0YW50IGtleXMuICAqY291bnQqCisgICB2YWx1ZXMgYXJlIGNvbnN1bWVkIGZyb20gdGhlIHN0YWNrLiAgVGhlIHRvcCBlbGVtZW50IG9uIHRoZSBzdGFjayBjb250YWlucworICAgYSB0dXBsZSBvZiBrZXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBvcGNvZGU6OiBCVUlMRF9TVFJJTkcgKGNvdW50KQorCisgICBDb25jYXRlbmF0ZXMgKmNvdW50KiBzdHJpbmdzIGZyb20gdGhlIHN0YWNrIGFuZCBwdXNoZXMgdGhlIHJlc3VsdGluZyBzdHJpbmcKKyAgIG9udG8gdGhlIHN0YWNrLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBvcGNvZGU6OiBMT0FEX0FUVFIgKG5hbWVpKQogCiAgICBSZXBsYWNlcyBUT1Mgd2l0aCBgYGdldGF0dHIoVE9TLCBjb19uYW1lc1tuYW1laV0pYGAuCkBAIC04NzQsNiArODk4LDEzIEBACiAgICBEZWxldGVzIGxvY2FsIGBgY29fdmFybmFtZXNbdmFyX251bV1gYC4KIAogCisuLiBvcGNvZGU6OiBTVE9SRV9BTk5PVEFUSU9OIChuYW1laSkKKworICAgU3RvcmVzIFRPUyBhcyBgYGxvY2FscygpWydfX2Fubm90YXRpb25zX18nXVtjb19uYW1lc1tuYW1laV1dID0gVE9TYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IExPQURfQ0xPU1VSRSAoaSkKIAogICAgUHVzaGVzIGEgcmVmZXJlbmNlIHRvIHRoZSBjZWxsIGNvbnRhaW5lZCBpbiBzbG90ICppKiBvZiB0aGUgY2VsbCBhbmQgZnJlZQpAQCAtOTI5LDI3ICs5NjAsMTYgQEAKIC4uIG9wY29kZTo6IE1BS0VfRlVOQ1RJT04gKGFyZ2MpCiAKICAgIFB1c2hlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3Qgb24gdGhlIHN0YWNrLiAgRnJvbSBib3R0b20gdG8gdG9wLCB0aGUgY29uc3VtZWQKLSAgIHN0YWNrIG11c3QgY29uc2lzdCBvZgorICAgc3RhY2sgbXVzdCBjb25zaXN0IG9mIHZhbHVlcyBpZiB0aGUgYXJndW1lbnQgY2FycmllcyBhIHNwZWNpZmllZCBmbGFnIHZhbHVlCiAKLSAgICogYGBhcmdjICYgMHhGRmBgIGRlZmF1bHQgYXJndW1lbnQgb2JqZWN0cyBpbiBwb3NpdGlvbmFsIG9yZGVyCi0gICAqIGBgKGFyZ2MgPj4gOCkgJiAweEZGYGAgcGFpcnMgb2YgbmFtZSBhbmQgZGVmYXVsdCBhcmd1bWVudCwgd2l0aCB0aGUgbmFtZQotICAgICBqdXN0IGJlbG93IHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrLCBmb3Iga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMKLSAgICogYGAoYXJnYyA+PiAxNikgJiAweDdGRkZgYCBwYXJhbWV0ZXIgYW5ub3RhdGlvbiBvYmplY3RzCi0gICAqIGEgdHVwbGUgbGlzdGluZyB0aGUgcGFyYW1ldGVyIG5hbWVzIGZvciB0aGUgYW5ub3RhdGlvbnMgKG9ubHkgaWYgdGhlcmUgYXJlCi0gICAgIG9ueSBhbm5vdGF0aW9uIG9iamVjdHMpCisgICAqIGBgMHgwMWBgIGEgdHVwbGUgb2YgZGVmYXVsdCBhcmd1bWVudCBvYmplY3RzIGluIHBvc2l0aW9uYWwgb3JkZXIKKyAgICogYGAweDAyYGAgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzJyBkZWZhdWx0IHZhbHVlcworICAgKiBgYDB4MDRgYCBhbiBhbm5vdGF0aW9uIGRpY3Rpb25hcnkKKyAgICogYGAweDA4YGAgYSB0dXBsZSBjb250YWluaW5nIGNlbGxzIGZvciBmcmVlIHZhcmlhYmxlcywgbWFraW5nIGEgY2xvc3VyZQogICAgKiB0aGUgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bmN0aW9uIChhdCBUT1MxKQogICAgKiB0aGUgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgZnVuY3Rpb24gKGF0IFRPUykKIAogCi0uLiBvcGNvZGU6OiBNQUtFX0NMT1NVUkUgKGFyZ2MpCi0KLSAgIENyZWF0ZXMgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LCBzZXRzIGl0cyAqX19jbG9zdXJlX18qIHNsb3QsIGFuZCBwdXNoZXMgaXQgb24KLSAgIHRoZSBzdGFjay4gIFRPUyBpcyB0aGUgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgZnVuY3Rpb24sIFRPUzEgaXMgdGhlCi0gICBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24sIGFuZCBUT1MyIGlzIHRoZSB0dXBsZSBjb250YWluaW5nIGNlbGxzIGZvcgotICAgdGhlIGNsb3N1cmUncyBmcmVlIHZhcmlhYmxlcy4gICphcmdjKiBpcyBpbnRlcnByZXRlZCBhcyBpbiBgYE1BS0VfRlVOQ1RJT05gYDsKLSAgIHRoZSBhbm5vdGF0aW9ucyBhbmQgZGVmYXVsdHMgYXJlIGFsc28gaW4gdGhlIHNhbWUgb3JkZXIgYmVsb3cgVE9TMi4KLQotCiAuLiBvcGNvZGU6OiBCVUlMRF9TTElDRSAoYXJnYykKIAogICAgLi4gaW5kZXg6OiBidWlsdGluOiBzbGljZQpAQCAtOTg5LDYgKzEwMDksMjggQEAKICAgIGFyZ3VtZW50cy4KIAogCisuLiBvcGNvZGU6OiBGT1JNQVRfVkFMVUUgKGZsYWdzKQorCisgICBVc2VkIGZvciBpbXBsZW1lbnRpbmcgZm9ybWF0dGVkIGxpdGVyYWwgc3RyaW5ncyAoZi1zdHJpbmdzKS4gIFBvcHMKKyAgIGFuIG9wdGlvbmFsICpmbXRfc3BlYyogZnJvbSB0aGUgc3RhY2ssIHRoZW4gYSByZXF1aXJlZCAqdmFsdWUqLgorICAgKmZsYWdzKiBpcyBpbnRlcnByZXRlZCBhcyBmb2xsb3dzOgorCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwMGBgOiAqdmFsdWUqIGlzIGZvcm1hdHRlZCBhcy1pcy4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAxYGA6IGNhbGwgOmZ1bmM6YHN0cmAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAyYGA6IGNhbGwgOmZ1bmM6YHJlcHJgIG9uICp2YWx1ZSogYmVmb3JlCisgICAgIGZvcm1hdHRpbmcgaXQuCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwM2BgOiBjYWxsIDpmdW5jOmBhc2NpaWAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDA0KSA9PSAweDA0YGA6IHBvcCAqZm10X3NwZWMqIGZyb20gdGhlIHN0YWNrIGFuZCB1c2UKKyAgICAgaXQsIGVsc2UgdXNlIGFuIGVtcHR5ICpmbXRfc3BlYyouCisKKyAgIEZvcm1hdHRpbmcgaXMgcGVyZm9ybWVkIHVzaW5nIDpjOmZ1bmM6YFB5T2JqZWN0X0Zvcm1hdGAuICBUaGUKKyAgIHJlc3VsdCBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBvcGNvZGU6OiBIQVZFX0FSR1VNRU5UCiAKICAgIFRoaXMgaXMgbm90IHJlYWxseSBhbiBvcGNvZGUuICBJdCBpZGVudGlmaWVzIHRoZSBkaXZpZGluZyBsaW5lIGJldHdlZW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5M2I1Yy4uMDAwMDAwMAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC1leGFtcGxlcy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0uLiBfZW1haWwtZXhhbXBsZXM6Ci0KLTptb2Q6YGVtYWlsYDogRXhhbXBsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSGVyZSBhcmUgYSBmZXcgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgdG8gcmVhZCwgd3JpdGUsCi1hbmQgc2VuZCBzaW1wbGUgZW1haWwgbWVzc2FnZXMsIGFzIHdlbGwgYXMgbW9yZSBjb21wbGV4IE1JTUUgbWVzc2FnZXMuCi0KLUZpcnN0LCBsZXQncyBzZWUgaG93IHRvIGNyZWF0ZSBhbmQgc2VuZCBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2U6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5Ci0KLQotQW5kIHBhcnNpbmcgUkZDODIyIGhlYWRlcnMgY2FuIGVhc2lseSBiZSBkb25lIGJ5IHRoZSBwYXJzZShmaWxlbmFtZSkgb3IKLXBhcnNlc3RyKG1lc3NhZ2VfYXNfc3RyaW5nKSBtZXRob2RzIG9mIHRoZSBQYXJzZXIoKSBjbGFzczoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgYSBNSU1FIG1lc3NhZ2UgY29udGFpbmluZyBhIGJ1bmNoIG9mIGZhbWlseQotcGljdHVyZXMgdGhhdCBtYXkgYmUgcmVzaWRpbmcgaW4gYSBkaXJlY3Rvcnk6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtbWltZS5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIHRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYW4gZW1haWwKLW1lc3NhZ2U6IFsxXV8KLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1kaXIucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gdW5wYWNrIGEgTUlNRSBtZXNzYWdlIGxpa2UgdGhlIG9uZQotYWJvdmUsIGludG8gYSBkaXJlY3Rvcnkgb2YgZmlsZXM6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5Ci0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBjcmVhdGUgYW4gSFRNTCBtZXNzYWdlIHdpdGggYW4gYWx0ZXJuYXRpdmUgcGxhaW4KLXRleHQgdmVyc2lvbjogWzJdXwotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5Ci0KLQotLi4gX2VtYWlsLWNvbnRlbnRtYW5hZ2VyLWFwaS1leGFtcGxlczoKLQotRXhhbXBsZXMgdXNpbmcgdGhlIFByb3Zpc2lvbmFsIEFQSQotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotSGVyZSBpcyBhIHJld29ya2luZyBvZiB0aGUgbGFzdCBleGFtcGxlIHVzaW5nIHRoZSBwcm92aXNpb25hbCBBUEkuICBUbyBtYWtlCi10aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgd2UgaW5jbHVkZSBhIHJlbGF0ZWQgaW1hZ2UgaW4gdGhlIGh0bWwgcGFydCwgYW5kCi13ZSBzYXZlIGEgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kIHRvIGRpc2ssIGFzIHdlbGwgYXMgc2VuZGluZyBpdC4KLQotVGhpcyBleGFtcGxlIGFsc28gc2hvd3MgaG93IGVhc3kgaXQgaXMgdG8gaW5jbHVkZSBub24tQVNDSUksIGFuZCBzaW1wbGlmaWVzIHRoZQotc2VuZGluZyBvZiB0aGUgbWVzc2FnZSB1c2luZyB0aGUgOm1ldGg6YC5zZW5kX21lc3NhZ2VgIG1ldGhvZCBvZiB0aGUKLTptb2Q6YHNtdHBsaWJgIG1vZHVsZS4KLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5Ci0KLUlmIHdlIHdlcmUgaW5zdGVhZCBzZW50IHRoZSBtZXNzYWdlIGZyb20gdGhlIGxhc3QgZXhhbXBsZSwgaGVyZSBpcyBvbmUKLXdheSB3ZSBjb3VsZCBwcm9jZXNzIGl0OgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQotCi1VcCB0byB0aGUgcHJvbXB0LCB0aGUgb3V0cHV0IGZyb20gdGhlIGFib3ZlIGlzOgotCi0uLiBjb2RlLWJsb2NrOjogbm9uZQotCi0gICAgVG86IFBlbmVsb3BlIFB1c3N5Y2F0IDxwZW5lbG9wZUBleGFtcGxlLmNvbT4sIEZhYnJldHRlIFB1c3N5Y2F0IDxmYWJyZXR0ZUBleGFtcGxlLmNvbT4KLSAgICBGcm9tOiBQZXDDqSBMZSBQZXcgPHBlcGVAZXhhbXBsZS5jb20+Ci0gICAgU3ViamVjdDogQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIKLQotICAgIFNhbHV0IQotCi0gICAgQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgotCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbMV0gVGhhbmtzIHRvIE1hdHRoZXcgRGl4b24gQ293bGVzIGZvciB0aGUgb3JpZ2luYWwgaW5zcGlyYXRpb24gYW5kIGV4YW1wbGVzLgotLi4gWzJdIENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBNYXRlamVrLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdAppbmRleCAxNjFkODZhLi4wNTM0NjNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdApAQCAtOCw2ICs4LDExIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJbiB0aGUgbmV3CitBUEkgb25seSB0aGUgYWxpYXNlcyB0YWJsZSBpcyB1c2VkLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgOmNsYXNzOmBDaGFyc2V0YCBmb3IgcmVwcmVzZW50aW5nIGNoYXJhY3RlciBzZXRzCiBhbmQgY2hhcmFjdGVyIHNldCBjb252ZXJzaW9ucyBpbiBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBhIGNoYXJhY3RlciBzZXQKIHJlZ2lzdHJ5IGFuZCBzZXZlcmFsIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIG1hbmlwdWxhdGluZyB0aGlzIHJlZ2lzdHJ5LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzY1MDc5Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QKQEAgLTAsMCArMSw3NTQgQEAKKy4uIF9jb21wYXQzMl9tZXNzYWdlOgorCis6bW9kOmBlbWFpbC5tZXNzYWdlLk1lc3NhZ2VgOiBSZXByZXNlbnRpbmcgYW4gZW1haWwgbWVzc2FnZSB1c2luZyB0aGUgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gbW9kdWxlOjogZW1haWwubWVzc2FnZQorICAgOnN5bm9wc2lzOiBUaGUgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgZW1haWwgbWVzc2FnZXMgaW4gYSBmYXNoaW9uCisgICAgICAgICAgICAgIGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCBweXRob24zLjIKKworCitUaGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzcyBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MsIHdpdGhvdXQgdGhlIG1ldGhvZHMgYWRkZWQgYnkgdGhhdAorY2xhc3MsIGFuZCB3aXRoIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGNlcnRhaW4gb3RoZXIgbWV0aG9kcyBiZWluZyBzbGlnaHRseQorZGlmZmVyZW50LiAgV2UgYWxzbyBkb2N1bWVudCBoZXJlIHNvbWUgbWV0aG9kcyB0aGF0LCB3aGlsZSBzdXBwb3J0ZWQgYnkgdGhlCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MsIGFyZSBub3QgcmVjb21tZW5kZWQgdW5sZXNzIHlvdSBhcmUKK2RlYWxpbmcgd2l0aCBsZWdhY3kgY29kZS4KKworVGhlIHBoaWxvc29waHkgYW5kIHN0cnVjdHVyZSBvZiB0aGUgdHdvIGNsYXNzZXMgaXMgb3RoZXJ3aXNlIHRoZSBzYW1lLgorCitUaGlzIGRvY3VtZW50IGRlc2NyaWJlcyB0aGUgYmVoYXZpb3IgdW5kZXIgdGhlIGRlZmF1bHQgKGZvciA6Y2xhc3M6YE1lc3NhZ2VgKQorcG9saWN5IDphdHRyOmB+ZW1haWwucG9saWN5LkNvbXBhdDMyYC4gIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIGFub3RoZXIgcG9saWN5LAoreW91IHNob3VsZCBiZSB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGluc3RlYWQuCisKK0FuIGVtYWlsIG1lc3NhZ2UgY29uc2lzdHMgb2YgKmhlYWRlcnMqIGFuZCBhICpwYXlsb2FkKi4gIEhlYWRlcnMgbXVzdCBiZQorOnJmYzpgNTIzM2Agc3R5bGUgbmFtZXMgYW5kIHZhbHVlcywgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kIHZhbHVlIGFyZQorc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24gaXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9yIHRoZQorZmllbGQgdmFsdWUuICBUaGUgcGF5bG9hZCBtYXkgYmUgYSBzaW1wbGUgdGV4dCBtZXNzYWdlLCBvciBhIGJpbmFyeSBvYmplY3QsIG9yCithIHN0cnVjdHVyZWQgc2VxdWVuY2Ugb2Ygc3ViLW1lc3NhZ2VzIGVhY2ggd2l0aCB0aGVpciBvd24gc2V0IG9mIGhlYWRlcnMgYW5kCit0aGVpciBvd24gcGF5bG9hZC4gIFRoZSBsYXR0ZXIgdHlwZSBvZiBwYXlsb2FkIGlzIGluZGljYXRlZCBieSB0aGUgbWVzc2FnZQoraGF2aW5nIGEgTUlNRSB0eXBlIHN1Y2ggYXMgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIG9yCis6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4KKworVGhlIGNvbmNlcHR1YWwgbW9kZWwgcHJvdmlkZWQgYnkgYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCBpcyB0aGF0IG9mIGFuCitvcmRlcmVkIGRpY3Rpb25hcnkgb2YgaGVhZGVycyB3aXRoIGFkZGl0aW9uYWwgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGJvdGgKK3NwZWNpYWxpemVkIGluZm9ybWF0aW9uIGZyb20gdGhlIGhlYWRlcnMsIGZvciBhY2Nlc3NpbmcgdGhlIHBheWxvYWQsIGZvcgorZ2VuZXJhdGluZyBhIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbXNzYWdlLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcgb3ZlcgordGhlIG9iamVjdCB0cmVlLiAgTm90ZSB0aGF0IGR1cGxpY2F0ZSBoZWFkZXJzIGFyZSBzdXBwb3J0ZWQgYnV0IHNwZWNpYWwgbWV0aG9kcworbXVzdCBiZSB1c2VkIHRvIGFjY2VzcyB0aGVtLgorCitUaGUgOmNsYXNzOmBNZXNzYWdlYCBwc3VlZG8tZGljdGlvbmFyeSBpcyBpbmRleGVkIGJ5IHRoZSBoZWFkZXIgbmFtZXMsIHdoaWNoCittdXN0IGJlIEFTQ0lJIHZhbHVlcy4gIFRoZSB2YWx1ZXMgb2YgdGhlIGRpY3Rpb25hcnkgYXJlIHN0cmluZ3MgdGhhdCBhcmUKK3N1cHBvc2VkIHRvIGNvbnRhaW4gb25seSBBU0NJSSBjaGFyYWN0ZXJzOyB0aGVyZSBpcyBzb21lIHNwZWNpYWwgaGFuZGxpbmcgZm9yCitub24tQVNDSUkgaW5wdXQsIGJ1dCBpdCBkb2Vzbid0IGFsd2F5cyBwcm9kdWNlIHRoZSBjb3JyZWN0IHJlc3VsdHMuICBIZWFkZXJzCithcmUgc3RvcmVkIGFuZCByZXR1cm5lZCBpbiBjYXNlLXByZXNlcnZpbmcgZm9ybSwgYnV0IGZpZWxkIG5hbWVzIGFyZSBtYXRjaGVkCitjYXNlLWluc2Vuc2l0aXZlbHkuICBUaGVyZSBtYXkgYWxzbyBiZSBhIHNpbmdsZSBlbnZlbG9wZSBoZWFkZXIsIGFsc28ga25vd24gYXMKK3RoZSAqVW5peC1Gcm9tKiBoZWFkZXIgb3IgdGhlIGBgRnJvbV9gYCBoZWFkZXIuICBUaGUgKnBheWxvYWQqIGlzIGVpdGhlciBhCitzdHJpbmcgb3IgYnl0ZXMsIGluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlIG9iamVjdHMsIG9yIGEgbGlzdCBvZgorOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLCBmb3IgTUlNRSBjb250YWluZXIgZG9jdW1lbnRzIChlLmcuCis6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKS4KKworSGVyZSBhcmUgdGhlIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3M6CisKKworLi4gY2xhc3M6OiBNZXNzYWdlKHBvbGljeT1jb21wYXQzMikKKworICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKKyAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KKyAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCisgICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCisgICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgVGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPTAsIHBvbGljeT1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwgKnVuaXhmcm9tKgorICAgICAgaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgorICAgICAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGb3IgYmFja3dhcmQgY29tcGFiaXRpbGl0eSByZWFzb25zLAorICAgICAgKm1heGhlYWRlcmxlbiogZGVmYXVsdHMgdG8gYGAwYGAsIHNvIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IHZhbHVlIHlvdQorICAgICAgbXVzdCBvdmVycmlkZSBpdCBleHBsaWNpdGx5ICh0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciAqbWF4X2xpbmVfbGVuZ3RoKiBpbgorICAgICAgdGhlIHBvbGljeSB3aWxsIGJlIGlnbm9yZWQgYnkgdGhpcyBtZXRob2QpLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQorICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KKyAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgYEdlbmVyYXRvcmBgLgorCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKKyAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZworICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cworICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCisgICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCisgICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cworICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4gIEZvciBleGFtcGxlOjoKKworICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IKKyAgICAgICAgIGZwID0gU3RyaW5nSU8oKQorICAgICAgICAgZyA9IEdlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKKyAgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZCBhY2NvcmRpbmcKKyAgICAgIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieSB1bmljb2RlCisgICAgICAidW5rbm93biBjaGFyYWN0ZXIiIGNvZGUgcG9pbnRzLiAgKFNlZSBhbHNvIDptZXRoOmAuYXNfYnl0ZXNgIGFuZAorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4pCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKKworICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX3N0cmluZygpYC4gIEFsbG93cyBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhCisgICAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisKKworICAgLi4gbWV0aG9kOjogYXNfYnl0ZXModW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIGJ5dGVzIG9iamVjdC4gIFdoZW4gb3B0aW9uYWwKKyAgICAgICp1bml4ZnJvbSogaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZy4gICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQorICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KKyAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQorICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQorICAgICAgYGBCeXRlc0dlbmVyYXRvcmBgLgorCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKKyAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZworICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cworICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCisgICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCisgICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuCisgICAgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KKyAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgorICAgICAgICAgZnAgPSBCeXRlc0lPKCkKKyAgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKKyAgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCisgICAuLiBtZXRob2Q6OiBfX2J5dGVzX18oKQorCisgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfYnl0ZXMoKWAuICBBbGxvd3MgYGBieXRlcyhtc2cpYGAgdG8gcHJvZHVjZSBhCisgICAgICBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKKyAgIC4uIG1ldGhvZDo6IGlzX211bHRpcGFydCgpCisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaXMgYSBsaXN0IG9mIHN1Yi1cCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgV2hlbgorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJucyBgYEZhbHNlYGAsIHRoZSBwYXlsb2FkIHNob3VsZCBiZSBhIHN0cmluZworICAgICAgb2JqZWN0ICh3aGljaCBtaWdodCBiZSBhIENURSBlbmNvZGVkIGJpbmFyeSBwYXlsb2FkLiAgKE5vdGUgdGhhdAorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJuaW5nIGBgVHJ1ZWBgIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdAorICAgICAgIm1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIiB3aWxsIHJldHVybiB0aGUgYGBUcnVlYGAuCisgICAgICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYCB3aGVuIHRoZQorICAgICAgOmNsYXNzOmBNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4pCisKKworICAgLi4gbWV0aG9kOjogc2V0X3VuaXhmcm9tKHVuaXhmcm9tKQorCisgICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEgc3RyaW5nLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF91bml4ZnJvbSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlci4gIERlZmF1bHRzIHRvIGBgTm9uZWBgIGlmIHRoZQorICAgICAgZW52ZWxvcGUgaGVhZGVyIHdhcyBuZXZlciBzZXQuCisKKworICAgLi4gbWV0aG9kOjogYXR0YWNoKHBheWxvYWQpCisKKyAgICAgIEFkZCB0aGUgZ2l2ZW4gKnBheWxvYWQqIHRvIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIG11c3QgYmUgYGBOb25lYGAgb3IKKyAgICAgIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgYmVmb3JlIHRoZSBjYWxsLiBBZnRlciB0aGUgY2FsbCwgdGhlCisgICAgICBwYXlsb2FkIHdpbGwgYWx3YXlzIGJlIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMuICBJZiB5b3Ugd2FudCB0bworICAgICAgc2V0IHRoZSBwYXlsb2FkIHRvIGEgc2NhbGFyIG9iamVjdCAoZS5nLiBhIHN0cmluZyksIHVzZQorICAgICAgOm1ldGg6YHNldF9wYXlsb2FkYCBpbnN0ZWFkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGFuZCB0aGUKKyAgICAgIHJlYWx0ZWQgYGBtYWtlYGAgYW5kIGBgYWRkYGAgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfcGF5bG9hZChpPU5vbmUsIGRlY29kZT1GYWxzZSkKKworICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIHdpbGwgYmUgYSBsaXN0IG9mCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYFRydWVgYCwgb3IgYQorICAgICAgc3RyaW5nIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgLiAgSWYgdGhlIHBheWxvYWQgaXMgYSBsaXN0CisgICAgICBhbmQgeW91IG11dGF0ZSB0aGUgbGlzdCBvYmplY3QsIHlvdSBtb2RpZnkgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGluIHBsYWNlLgorCisgICAgICBXaXRoIG9wdGlvbmFsIGFyZ3VtZW50ICppKiwgOm1ldGg6YGdldF9wYXlsb2FkYCB3aWxsIHJldHVybiB0aGUgKmkqLXRoCisgICAgICBlbGVtZW50IG9mIHRoZSBwYXlsb2FkLCBjb3VudGluZyBmcm9tIHplcm8sIGlmIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzCisgICAgICBgYFRydWVgYC4gIEFuIDpleGM6YEluZGV4RXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcyBsZXNzIHRoYW4gMCBvcgorICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHBheWxvYWQuICBJZiB0aGUKKyAgICAgIHBheWxvYWQgaXMgYSBzdHJpbmcgKGkuZS4gIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYCkgYW5kICppKiBpcworICAgICAgZ2l2ZW4sIGEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIE9wdGlvbmFsICpkZWNvZGUqIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBheWxvYWQgc2hvdWxkIGJlCisgICAgICBkZWNvZGVkIG9yIG5vdCwgYWNjb3JkaW5nIHRvIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgIGhlYWRlci4gV2hlbiBgYFRydWVgYCBhbmQgdGhlIG1lc3NhZ2UgaXMgbm90IGEgbXVsdGlwYXJ0LCB0aGUgcGF5bG9hZCB3aWxsCisgICAgICBiZSBkZWNvZGVkIGlmIHRoaXMgaGVhZGVyJ3MgdmFsdWUgaXMgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IgYGBiYXNlNjRgYC4KKyAgICAgIElmIHNvbWUgb3RoZXIgZW5jb2RpbmcgaXMgdXNlZCwgb3IgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICBoZWFkZXIgaXMgbWlzc2luZywgdGhlIHBheWxvYWQgaXMKKyAgICAgIHJldHVybmVkIGFzLWlzICh1bmRlY29kZWQpLiAgSW4gYWxsIGNhc2VzIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBiaW5hcnkKKyAgICAgIGRhdGEuICBJZiB0aGUgbWVzc2FnZSBpcyBhIG11bHRpcGFydCBhbmQgdGhlICpkZWNvZGUqIGZsYWcgaXMgYGBUcnVlYGAsCisgICAgICB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgSWYgdGhlIHBheWxvYWQgaXMgYmFzZTY0IGFuZCBpdCB3YXMgbm90CisgICAgICBwZXJmZWN0bHkgZm9ybWVkIChtaXNzaW5nIHBhZGRpbmcsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0CisgICAgICBhbHBoYWJldCksIHRoZW4gYW4gYXBwcm9wcmlhdGUgZGVmZWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UncworICAgICAgZGVmZWN0IHByb3BlcnR5ICg6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RgIG9yCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RgLCByZXNwZWN0aXZlbHkpLgorCisgICAgICBXaGVuICpkZWNvZGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBib2R5IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nCisgICAgICB3aXRob3V0IGRlY29kaW5nIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBIb3dldmVyLAorICAgICAgZm9yIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQsIGFuIGF0dGVtcHQgaXMgbWFkZQorICAgICAgdG8gZGVjb2RlIHRoZSBvcmlnaW5hbCBieXRlcyB1c2luZyB0aGUgYGBjaGFyc2V0YGAgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCB1c2luZyB0aGUgYGByZXBsYWNlYGAgZXJyb3IgaGFuZGxlci4KKyAgICAgIElmIG5vIGBgY2hhcnNldGBgIGlzIHNwZWNpZmllZCwgb3IgaWYgdGhlIGBgY2hhcnNldGBgIGdpdmVuIGlzIG5vdAorICAgICAgcmVjb2duaXplZCBieSB0aGUgZW1haWwgcGFja2FnZSwgdGhlIGJvZHkgaXMgZGVjb2RlZCB1c2luZyB0aGUgZGVmYXVsdAorICAgICAgQVNDSUkgY2hhcnNldC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9jb250ZW50YCBhbmQKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2AuCisKKworICAgLi4gbWV0aG9kOjogc2V0X3BheWxvYWQocGF5bG9hZCwgY2hhcnNldD1Ob25lKQorCisgICAgICBTZXQgdGhlIGVudGlyZSBtZXNzYWdlIG9iamVjdCdzIHBheWxvYWQgdG8gKnBheWxvYWQqLiAgSXQgaXMgdGhlIGNsaWVudCdzCisgICAgICByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhlIHBheWxvYWQgaW52YXJpYW50cy4gIE9wdGlvbmFsICpjaGFyc2V0KiBzZXRzCisgICAgICB0aGUgbWVzc2FnZSdzIGRlZmF1bHQgY2hhcmFjdGVyIHNldDsgc2VlIDptZXRoOmBzZXRfY2hhcnNldGAgZm9yIGRldGFpbHMuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2NoYXJzZXQoY2hhcnNldCkKKworICAgICAgU2V0IHRoZSBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBwYXlsb2FkIHRvICpjaGFyc2V0Kiwgd2hpY2ggY2FuIGVpdGhlciBiZSBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIChzZWUgOm1vZDpgZW1haWwuY2hhcnNldGApLCBhCisgICAgICBzdHJpbmcgbmFtaW5nIGEgY2hhcmFjdGVyIHNldCwgb3IgYGBOb25lYGAuICBJZiBpdCBpcyBhIHN0cmluZywgaXQgd2lsbAorICAgICAgYmUgY29udmVydGVkIHRvIGEgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZS4gIElmICpjaGFyc2V0KgorICAgICAgaXMgYGBOb25lYGAsIHRoZSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgKHRoZSBtZXNzYWdlIHdpbGwgbm90IGJlIG90aGVyd2lzZQorICAgICAgbW9kaWZpZWQpLiAgQW55dGhpbmcgZWxzZSB3aWxsIGdlbmVyYXRlIGEgOmV4YzpgVHlwZUVycm9yYC4KKworICAgICAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVyIG9uZSB3aWxsIGJlCisgICAgICBhZGRlZC4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb25lCisgICAgICB3aWxsIGJlIGFkZGVkIHdpdGggYSB2YWx1ZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLiAgV2hldGhlciB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbHJlYWR5IGV4aXN0cyBvciBub3QsIGl0cyBgYGNoYXJzZXRgYAorICAgICAgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHRvICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0Ki4gICBJZgorICAgICAgKmNoYXJzZXQuaW5wdXRfY2hhcnNldCogYW5kICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0KiBkaWZmZXIsIHRoZSBwYXlsb2FkCisgICAgICB3aWxsIGJlIHJlLWVuY29kZWQgdG8gdGhlICpvdXRwdXRfY2hhcnNldCouICBJZiB0aGVyZSBpcyBubyBleGlzdGluZworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciwgdGhlbiB0aGUgcGF5bG9hZCB3aWxsIGJlCisgICAgICB0cmFuc2Zlci1lbmNvZGVkLCBpZiBuZWVkZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAsIGFuZCBhIGhlYWRlciB3aXRoIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZQorICAgICAgd2lsbCBiZSBhZGRlZC4gIElmIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcgorICAgICAgYWxyZWFkeSBleGlzdHMsIHRoZSBwYXlsb2FkIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBjb3JyZWN0bHkgZW5jb2RlZAorICAgICAgdXNpbmcgdGhhdCA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgYW5kIGlzIG5vdCBtb2RpZmllZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKmNoYXJzZXQqIHBhcmFtZXRlciBvZiB0aGUKKyAgICAgIDptZXRoOmBlbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2QuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXQoKQorCisgICAgICBSZXR1cm4gdGhlIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgICAgbWVzc2FnZSdzIHBheWxvYWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdCBhbHdheXMgcmV0dXJucworICAgICAgYGBOb25lYGAuCisKKworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBhIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKKyAgIG1lc3NhZ2UncyA6cmZjOmAyODIyYCBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCisgICBiZXR3ZWVuIHRoZXNlIG1ldGhvZHMgYW5kIGEgbm9ybWFsIG1hcHBpbmcgKGkuZS4gZGljdGlvbmFyeSkgaW50ZXJmYWNlLiAgRm9yCisgICBleGFtcGxlLCBpbiBhIGRpY3Rpb25hcnkgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzLCBidXQgaGVyZSB0aGVyZSBtYXkgYmUKKyAgIGR1cGxpY2F0ZSBtZXNzYWdlIGhlYWRlcnMuICBBbHNvLCBpbiBkaWN0aW9uYXJpZXMgdGhlcmUgaXMgbm8gZ3VhcmFudGVlZAorICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCwKKyAgIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUgb3JpZ2luYWwKKyAgIG1lc3NhZ2UsIG9yIHdlcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgbGF0ZXIuICBBbnkgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4KKyAgIHJlLWFkZGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgaGVhZGVyIGxpc3QuCisKKyAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQgbWF4aW1hbAorICAgY29udmVuaWVuY2UuCisKKyAgIE5vdGUgdGhhdCBpbiBhbGwgY2FzZXMsIGFueSBlbnZlbG9wZSBoZWFkZXIgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBpcyBub3QKKyAgIGluY2x1ZGVkIGluIHRoZSBtYXBwaW5nIGludGVyZmFjZS4KKworICAgSW4gYSBtb2RlbCBnZW5lcmF0ZWQgZnJvbSBieXRlcywgYW55IGhlYWRlciB2YWx1ZXMgdGhhdCAoaW4gY29udHJhdmVudGlvbiBvZgorICAgdGhlIFJGQ3MpIGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzIHdpbGwsIHdoZW4gcmV0cmlldmVkIHRocm91Z2ggdGhpcworICAgaW50ZXJmYWNlLCBiZSByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3RzIHdpdGgKKyAgIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KKworCisgICAuLiBtZXRob2Q6OiBfX2xlbl9fKCkKKworICAgICAgUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgaGVhZGVycywgaW5jbHVkaW5nIGR1cGxpY2F0ZXMuCisKKworICAgLi4gbWV0aG9kOjogX19jb250YWluc19fKG5hbWUpCisKKyAgICAgIFJldHVybiB0cnVlIGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgYSBmaWVsZCBuYW1lZCAqbmFtZSouIE1hdGNoaW5nIGlzCisgICAgICBkb25lIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcgY29sb24uCisgICAgICBVc2VkIGZvciB0aGUgYGBpbmBgIG9wZXJhdG9yLCBlLmcuOjoKKworICAgICAgICAgICBpZiAnbWVzc2FnZS1pZCcgaW4gbXlNZXNzYWdlOgorICAgICAgICAgICAgICBwcmludCgnTWVzc2FnZS1JRDonLCBteU1lc3NhZ2VbJ21lc3NhZ2UtaWQnXSkKKworCisgICAuLiBtZXRob2Q6OiBfX2dldGl0ZW1fXyhuYW1lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZQorICAgICAgY29sb24gZmllbGQgc2VwYXJhdG9yLiAgSWYgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCBgYE5vbmVgYCBpcyByZXR1cm5lZDsgYQorICAgICAgOmV4YzpgS2V5RXJyb3JgIGlzIG5ldmVyIHJhaXNlZC4KKworICAgICAgTm90ZSB0aGF0IGlmIHRoZSBuYW1lZCBmaWVsZCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGhlYWRlcnMsIGV4YWN0bHkgd2hpY2ggb2YgdGhvc2UgZmllbGQgdmFsdWVzIHdpbGwgYmUgcmV0dXJuZWQgaXMKKyAgICAgIHVuZGVmaW5lZC4gIFVzZSB0aGUgOm1ldGg6YGdldF9hbGxgIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlcyBvZiBhbGwgdGhlCisgICAgICBleHRhbnQgbmFtZWQgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBfX3NldGl0ZW1fXyhuYW1lLCB2YWwpCisKKyAgICAgIEFkZCBhIGhlYWRlciB0byB0aGUgbWVzc2FnZSB3aXRoIGZpZWxkIG5hbWUgKm5hbWUqIGFuZCB2YWx1ZSAqdmFsKi4gIFRoZQorICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGZpZWxkcy4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyAqbm90KiBvdmVyd3JpdGUgb3IgZGVsZXRlIGFueSBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZQorICAgICAgbmFtZS4gIElmIHlvdSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgaGVhZGVyIGlzIHRoZSBvbmx5IG9uZSBwcmVzZW50IGluIHRoZQorICAgICAgbWVzc2FnZSB3aXRoIGZpZWxkIG5hbWUgKm5hbWUqLCBkZWxldGUgdGhlIGZpZWxkIGZpcnN0LCBlLmcuOjoKKworICAgICAgICAgZGVsIG1zZ1snc3ViamVjdCddCisgICAgICAgICBtc2dbJ3N1YmplY3QnXSA9ICdQeXRob24gcm9vbHohJworCisKKyAgIC4uIG1ldGhvZDo6IF9fZGVsaXRlbV9fKG5hbWUpCisKKyAgICAgIERlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgdGhlIGZpZWxkIHdpdGggbmFtZSAqbmFtZSogZnJvbSB0aGUgbWVzc2FnZSdzCisgICAgICBoZWFkZXJzLiAgTm8gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGUgbmFtZWQgZmllbGQgaXNuJ3QgcHJlc2VudCBpbiB0aGUKKyAgICAgIGhlYWRlcnMuCisKKworICAgLi4gbWV0aG9kOjoga2V5cygpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBtZXNzYWdlJ3MgaGVhZGVyIGZpZWxkIG5hbWVzLgorCisKKyAgIC4uIG1ldGhvZDo6IHZhbHVlcygpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSBtZXNzYWdlJ3MgZmllbGQgdmFsdWVzLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZW1zKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiAyLXR1cGxlcyBjb250YWluaW5nIGFsbCB0aGUgbWVzc2FnZSdzIGZpZWxkIGhlYWRlcnMgYW5kCisgICAgICB2YWx1ZXMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0KG5hbWUsIGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgVGhpcyBpcyBpZGVudGljYWwgdG8KKyAgICAgIDptZXRoOmBfX2dldGl0ZW1fX2AgZXhjZXB0IHRoYXQgb3B0aW9uYWwgKmZhaWxvYmoqIGlzIHJldHVybmVkIGlmIHRoZQorICAgICAgbmFtZWQgaGVhZGVyIGlzIG1pc3NpbmcgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KKworICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBtZXRob2RzOgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9hbGwobmFtZSwgZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgdmFsdWVzIGZvciB0aGUgZmllbGQgbmFtZWQgKm5hbWUqLiBJZiB0aGVyZSBhcmUKKyAgICAgIG5vIHN1Y2ggbmFtZWQgaGVhZGVycyBpbiB0aGUgbWVzc2FnZSwgKmZhaWxvYmoqIGlzIHJldHVybmVkIChkZWZhdWx0cyB0bworICAgICAgYGBOb25lYGApLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9oZWFkZXIoX25hbWUsIF92YWx1ZSwgKipfcGFyYW1zKQorCisgICAgICBFeHRlbmRlZCBoZWFkZXIgc2V0dGluZy4gIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gOm1ldGg6YF9fc2V0aXRlbV9fYAorICAgICAgZXhjZXB0IHRoYXQgYWRkaXRpb25hbCBoZWFkZXIgcGFyYW1ldGVycyBjYW4gYmUgcHJvdmlkZWQgYXMga2V5d29yZAorICAgICAgYXJndW1lbnRzLiAgKl9uYW1lKiBpcyB0aGUgaGVhZGVyIGZpZWxkIHRvIGFkZCBhbmQgKl92YWx1ZSogaXMgdGhlCisgICAgICAqcHJpbWFyeSogdmFsdWUgZm9yIHRoZSBoZWFkZXIuCisKKyAgICAgIEZvciBlYWNoIGl0ZW0gaW4gdGhlIGtleXdvcmQgYXJndW1lbnQgZGljdGlvbmFyeSAqX3BhcmFtcyosIHRoZSBrZXkgaXMKKyAgICAgIHRha2VuIGFzIHRoZSBwYXJhbWV0ZXIgbmFtZSwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gZGFzaGVzIChzaW5jZQorICAgICAgZGFzaGVzIGFyZSBpbGxlZ2FsIGluIFB5dGhvbiBpZGVudGlmaWVycykuICBOb3JtYWxseSwgdGhlIHBhcmFtZXRlciB3aWxsCisgICAgICBiZSBhZGRlZCBhcyBgYGtleT0idmFsdWUiYGAgdW5sZXNzIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQorICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCisgICAgICBpdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgdGhyZWUgdHVwbGUgaW4gdGhlIGZvcm1hdAorICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLCB3aGVyZSBgYENIQVJTRVRgYCBpcyBhIHN0cmluZyBuYW1pbmcgdGhlCisgICAgICBjaGFyc2V0IHRvIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSB2YWx1ZSwgYGBMQU5HVUFHRWBgIGNhbiB1c3VhbGx5IGJlIHNldAorICAgICAgdG8gYGBOb25lYGAgb3IgdGhlIGVtcHR5IHN0cmluZyAoc2VlIDpyZmM6YDIyMzFgIGZvciBvdGhlciBwb3NzaWJpbGl0aWVzKSwKKyAgICAgIGFuZCBgYFZBTFVFYGAgaXMgdGhlIHN0cmluZyB2YWx1ZSBjb250YWluaW5nIG5vbi1BU0NJSSBjb2RlIHBvaW50cy4gIElmCisgICAgICBhIHRocmVlIHR1cGxlIGlzIG5vdCBwYXNzZWQgYW5kIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKKyAgICAgIGl0IGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBpbiA6cmZjOmAyMjMxYCBmb3JtYXQgdXNpbmcgYSBgYENIQVJTRVRgYAorICAgICAgb2YgYGB1dGYtOGBgIGFuZCBhIGBgTEFOR1VBR0VgYCBvZiBgYE5vbmVgYC4KKworICAgICAgSGVyZSdzIGFuIGV4YW1wbGU6OgorCisgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywgZmlsZW5hbWU9J2J1ZC5naWYnKQorCisgICAgICBUaGlzIHdpbGwgYWRkIGEgaGVhZGVyIHRoYXQgbG9va3MgbGlrZSA6OgorCisgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iYnVkLmdpZiIKKworICAgICAgQW4gZXhhbXBsZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKKworICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0oJ2lzby04ODU5LTEnLCAnJywgJ0Z1w59iYWxsZXIucHB0JykpCisKKyAgICAgIFdoaWNoIHByb2R1Y2VzIDo6CisKKyAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj0iaXNvLTg4NTktMScnRnUlREZiYWxsZXIucHB0IgorCisKKyAgIC4uIG1ldGhvZDo6IHJlcGxhY2VfaGVhZGVyKF9uYW1lLCBfdmFsdWUpCisKKyAgICAgIFJlcGxhY2UgYSBoZWFkZXIuICBSZXBsYWNlIHRoZSBmaXJzdCBoZWFkZXIgZm91bmQgaW4gdGhlIG1lc3NhZ2UgdGhhdAorICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2UuICBJZiBubworICAgICAgbWF0Y2hpbmcgaGVhZGVyIHdhcyBmb3VuZCwgYSA6ZXhjOmBLZXlFcnJvcmAgaXMgcmFpc2VkLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3R5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUuICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGNvZXJjZWQgdG8KKyAgICAgIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIHdhcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHRoZSBkZWZhdWx0IHR5cGUgYXMgZ2l2ZW4KKyAgICAgIGJ5IDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYCB3aWxsIGJlIHJldHVybmVkLiAgU2luY2UgYWNjb3JkaW5nIHRvCisgICAgICA6cmZjOmAyMDQ1YCwgbWVzc2FnZXMgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHR5cGUsIDptZXRoOmBnZXRfY29udGVudF90eXBlYAorICAgICAgd2lsbCBhbHdheXMgcmV0dXJuIGEgdmFsdWUuCisKKyAgICAgIDpyZmM6YDIwNDVgIGRlZmluZXMgYSBtZXNzYWdlJ3MgZGVmYXVsdCB0eXBlIHRvIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAKKyAgICAgIHVubGVzcyBpdCBhcHBlYXJzIGluc2lkZSBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVyLCBpbgorICAgICAgd2hpY2ggY2FzZSBpdCB3b3VsZCBiZSA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4gIElmIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGhhcyBhbiBpbnZhbGlkIHR5cGUgc3BlY2lmaWNhdGlvbiwKKyAgICAgIDpyZmM6YDIwNDVgIG1hbmRhdGVzIHRoYXQgdGhlIGRlZmF1bHQgdHlwZSBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X21haW50eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgbWFpbiBjb250ZW50IHR5cGUuICBUaGlzIGlzIHRoZSA6bWltZXR5cGU6YG1haW50eXBlYAorICAgICAgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IDptZXRoOmBnZXRfY29udGVudF90eXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9zdWJ0eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3Mgc3ViLWNvbnRlbnQgdHlwZS4gIFRoaXMgaXMgdGhlIDptaW1ldHlwZTpgc3VidHlwZWAKKyAgICAgIHBhcnQgb2YgdGhlIHN0cmluZyByZXR1cm5lZCBieSA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2RlZmF1bHRfdHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUuICBNb3N0IG1lc3NhZ2VzIGhhdmUgYSBkZWZhdWx0IGNvbnRlbnQKKyAgICAgIHR5cGUgb2YgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCwgZXhjZXB0IGZvciBtZXNzYWdlcyB0aGF0IGFyZSBzdWJwYXJ0cyBvZgorICAgICAgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXJzLiAgU3VjaCBzdWJwYXJ0cyBoYXZlIGEgZGVmYXVsdAorICAgICAgY29udGVudCB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9kZWZhdWx0X3R5cGUoY3R5cGUpCisKKyAgICAgIFNldCB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUuICAqY3R5cGUqIHNob3VsZCBlaXRoZXIgYmUKKyAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAsIGFsdGhvdWdoIHRoaXMgaXMgbm90CisgICAgICBlbmZvcmNlZC4gIFRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RvcmVkIGluIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbXMoZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgcGFyYW1ldGVycywgYXMgYSBsaXN0LgorICAgICAgVGhlIGVsZW1lbnRzIG9mIHRoZSByZXR1cm5lZCBsaXN0IGFyZSAyLXR1cGxlcyBvZiBrZXkvdmFsdWUgcGFpcnMsIGFzCisgICAgICBzcGxpdCBvbiB0aGUgYGAnPSdgYCBzaWduLiAgVGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBgYCc9J2BgIGlzIHRoZSBrZXksCisgICAgICB3aGlsZSB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHRoZSB2YWx1ZS4gIElmIHRoZXJlIGlzIG5vIGBgJz0nYGAgc2lnbiBpbgorICAgICAgdGhlIHBhcmFtZXRlciB0aGUgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBhcworICAgICAgZGVzY3JpYmVkIGluIDptZXRoOmBnZXRfcGFyYW1gIGFuZCBpcyB1bnF1b3RlZCBpZiBvcHRpb25hbCAqdW5xdW90ZSogaXMKKyAgICAgIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkuCisKKyAgICAgIE9wdGlvbmFsICpmYWlsb2JqKiBpcyB0aGUgb2JqZWN0IHRvIHJldHVybiBpZiB0aGVyZSBpcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgT3B0aW9uYWwgKmhlYWRlciogaXMgdGhlIGhlYWRlciB0bworICAgICAgc2VhcmNoIGluc3RlYWQgb2YgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlICpwYXJhbXMqIHByb3BlcnR5IG9mIHRoZSBpbmRpdmlkdWFsIGhlYWRlciBvYmplY3RzCisgICAgICByZXR1cm5lZCBieSB0aGUgaGVhZGVyIGFjY2VzcyBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbShwYXJhbSwgZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyJ3MgcGFyYW1ldGVyCisgICAgICAqcGFyYW0qIGFzIGEgc3RyaW5nLiAgSWYgdGhlIG1lc3NhZ2UgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkCisgICAgICAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorCisgICAgICBPcHRpb25hbCAqaGVhZGVyKiBpZiBnaXZlbiwgc3BlY2lmaWVzIHRoZSBtZXNzYWdlIGhlYWRlciB0byB1c2UgaW5zdGVhZCBvZgorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisKKyAgICAgIFBhcmFtZXRlciBrZXlzIGFyZSBhbHdheXMgY29tcGFyZWQgY2FzZSBpbnNlbnNpdGl2ZWx5LiAgVGhlIHJldHVybiB2YWx1ZQorICAgICAgY2FuIGVpdGhlciBiZSBhIHN0cmluZywgb3IgYSAzLXR1cGxlIGlmIHRoZSBwYXJhbWV0ZXIgd2FzIDpyZmM6YDIyMzFgCisgICAgICBlbmNvZGVkLiAgV2hlbiBpdCdzIGEgMy10dXBsZSwgdGhlIGVsZW1lbnRzIG9mIHRoZSB2YWx1ZSBhcmUgb2YgdGhlIGZvcm0KKyAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYC4gIE5vdGUgdGhhdCBib3RoIGBgQ0hBUlNFVGBgIGFuZAorICAgICAgYGBMQU5HVUFHRWBgIGNhbiBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZSB5b3Ugc2hvdWxkIGNvbnNpZGVyIGBgVkFMVUVgYAorICAgICAgdG8gYmUgZW5jb2RlZCBpbiB0aGUgYGB1cy1hc2NpaWBgIGNoYXJzZXQuICBZb3UgY2FuIHVzdWFsbHkgaWdub3JlCisgICAgICBgYExBTkdVQUdFYGAuCisKKyAgICAgIElmIHlvdXIgYXBwbGljYXRpb24gZG9lc24ndCBjYXJlIHdoZXRoZXIgdGhlIHBhcmFtZXRlciB3YXMgZW5jb2RlZCBhcyBpbgorICAgICAgOnJmYzpgMjIzMWAsIHlvdSBjYW4gY29sbGFwc2UgdGhlIHBhcmFtZXRlciB2YWx1ZSBieSBjYWxsaW5nCisgICAgICA6ZnVuYzpgZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZWAsIHBhc3NpbmcgaW4gdGhlIHJldHVybiB2YWx1ZQorICAgICAgZnJvbSA6bWV0aDpgZ2V0X3BhcmFtYC4gIFRoaXMgd2lsbCByZXR1cm4gYSBzdWl0YWJseSBkZWNvZGVkIFVuaWNvZGUKKyAgICAgIHN0cmluZyB3aGVuIHRoZSB2YWx1ZSBpcyBhIHR1cGxlLCBvciB0aGUgb3JpZ2luYWwgc3RyaW5nIHVucXVvdGVkIGlmIGl0CisgICAgICBpc24ndC4gIEZvciBleGFtcGxlOjoKKworICAgICAgICAgcmF3cGFyYW0gPSBtc2cuZ2V0X3BhcmFtKCdmb28nKQorICAgICAgICAgcGFyYW0gPSBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlKHJhd3BhcmFtKQorCisgICAgICBJbiBhbnkgY2FzZSwgdGhlIHBhcmFtZXRlciB2YWx1ZSAoZWl0aGVyIHRoZSByZXR1cm5lZCBzdHJpbmcsIG9yIHRoZQorICAgICAgYGBWQUxVRWBgIGl0ZW0gaW4gdGhlIDMtdHVwbGUpIGlzIGFsd2F5cyB1bnF1b3RlZCwgdW5sZXNzICp1bnF1b3RlKiBpcyBzZXQKKyAgICAgIHRvIGBgRmFsc2VgYC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKnBhcmFtcyogcHJvcGVydHkgb2YgdGhlIGluZGl2aWR1YWwgaGVhZGVyIG9iamVjdHMKKyAgICAgIHJldHVybmVkIGJ5IHRoZSBoZWFkZXIgYWNjZXNzIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogc2V0X3BhcmFtKHBhcmFtLCB2YWx1ZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PU5vbmUsIGxhbmd1YWdlPScnLCByZXBsYWNlPUZhbHNlKQorCisgICAgICBTZXQgYSBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmIHRoZQorICAgICAgcGFyYW1ldGVyIGFscmVhZHkgZXhpc3RzIGluIHRoZSBoZWFkZXIsIGl0cyB2YWx1ZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGgKKyAgICAgICp2YWx1ZSouICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFzIG5vdCB5ZXQgYmVlbiBkZWZpbmVkCisgICAgICBmb3IgdGhpcyBtZXNzYWdlLCBpdCB3aWxsIGJlIHNldCB0byA6bWltZXR5cGU6YHRleHQvcGxhaW5gIGFuZCB0aGUgbmV3CisgICAgICBwYXJhbWV0ZXIgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCBhcyBwZXIgOnJmYzpgMjA0NWAuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBoZWFkZXIgdG8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLCBhbmQgYWxsIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5CisgICAgICB1bmxlc3Mgb3B0aW9uYWwgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLgorCisgICAgICBJZiBvcHRpb25hbCAqY2hhcnNldCogaXMgc3BlY2lmaWVkLCB0aGUgcGFyYW1ldGVyIHdpbGwgYmUgZW5jb2RlZAorICAgICAgYWNjb3JkaW5nIHRvIDpyZmM6YDIyMzFgLiBPcHRpb25hbCAqbGFuZ3VhZ2UqIHNwZWNpZmllcyB0aGUgUkZDIDIyMzEKKyAgICAgIGxhbmd1YWdlLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBCb3RoICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKgorICAgICAgc2hvdWxkIGJlIHN0cmluZ3MuCisKKyAgICAgIElmICpyZXBsYWNlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgaGVhZGVyIGlzIG1vdmVkIHRvIHRoZQorICAgICAgZW5kIG9mIHRoZSBsaXN0IG9mIGhlYWRlcnMuICBJZiAqcmVwbGFjZSogaXMgYGBUcnVlYGAsIHRoZSBoZWFkZXIKKyAgICAgIHdpbGwgYmUgdXBkYXRlZCBpbiBwbGFjZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgYGByZXBsYWNlYGAga2V5d29yZCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogZGVsX3BhcmFtKHBhcmFtLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHJlcXVvdGU9VHJ1ZSkKKworICAgICAgUmVtb3ZlIHRoZSBnaXZlbiBwYXJhbWV0ZXIgY29tcGxldGVseSBmcm9tIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLiAgVGhlIGhlYWRlciB3aWxsIGJlIHJlLXdyaXR0ZW4gaW4gcGxhY2Ugd2l0aG91dCB0aGUgcGFyYW1ldGVyIG9yCisgICAgICBpdHMgdmFsdWUuICBBbGwgdmFsdWVzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeSB1bmxlc3MgKnJlcXVvdGUqIGlzCisgICAgICBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbgorICAgICAgYWx0ZXJuYXRpdmUgdG8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X3R5cGUodHlwZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUpCisKKyAgICAgIFNldCB0aGUgbWFpbiB0eXBlIGFuZCBzdWJ0eXBlIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlci4gKnR5cGUqIG11c3QgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYCwKKyAgICAgIG90aGVyd2lzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwga2VlcGluZyBhbGwKKyAgICAgIHRoZSBwYXJhbWV0ZXJzIGluIHBsYWNlLiAgSWYgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCwgdGhpcyBsZWF2ZXMgdGhlCisgICAgICBleGlzdGluZyBoZWFkZXIncyBxdW90aW5nIGFzIGlzLCBvdGhlcndpc2UgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQKKyAgICAgICh0aGUgZGVmYXVsdCkuCisKKyAgICAgIEFuIGFsdGVybmF0aXZlIGhlYWRlciBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSAqaGVhZGVyKiBhcmd1bWVudC4gV2hlbiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBzZXQgYSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAorICAgICAgaGVhZGVyIGlzIGFsc28gYWRkZWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlIGBgbWFrZV9gYCBhbmQgYGBhZGRfYGAgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBgYGZpbGVuYW1lYGAgcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciBvZiB0aGUgbWVzc2FnZS4gIElmIHRoZSBoZWFkZXIKKyAgICAgIGRvZXMgbm90IGhhdmUgYSBgYGZpbGVuYW1lYGAgcGFyYW1ldGVyLCB0aGlzIG1ldGhvZCBmYWxscyBiYWNrIHRvIGxvb2tpbmcKKyAgICAgIGZvciB0aGUgYGBuYW1lYGAgcGFyYW1ldGVyIG9uIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBJZgorICAgICAgbmVpdGhlciBpcyBmb3VuZCwgb3IgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCB0aGVuICpmYWlsb2JqKiBpcyByZXR1cm5lZC4KKyAgICAgIFRoZSByZXR1cm5lZCBzdHJpbmcgd2lsbCBhbHdheXMgYmUgdW5xdW90ZWQgYXMgcGVyCisgICAgICA6ZnVuYzpgZW1haWwudXRpbHMudW5xdW90ZWAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2JvdW5kYXJ5KGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYGBib3VuZGFyeWBgIHBhcmFtZXRlciBvZiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBvZiB0aGUgbWVzc2FnZSwgb3IgKmZhaWxvYmoqIGlmIGVpdGhlcgorICAgICAgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCBvciBoYXMgbm8gYGBib3VuZGFyeWBgIHBhcmFtZXRlci4gIFRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nIHdpbGwgYWx3YXlzIGJlIHVucXVvdGVkIGFzIHBlciA6ZnVuYzpgZW1haWwudXRpbHMudW5xdW90ZWAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2JvdW5kYXJ5KGJvdW5kYXJ5KQorCisgICAgICBTZXQgdGhlIGBgYm91bmRhcnlgYCBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciB0bworICAgICAgKmJvdW5kYXJ5Ki4gIDptZXRoOmBzZXRfYm91bmRhcnlgIHdpbGwgYWx3YXlzIHF1b3RlICpib3VuZGFyeSogaWYKKyAgICAgIG5lY2Vzc2FyeS4gIEEgOmV4YzpgfmVtYWlsLmVycm9ycy5IZWFkZXJQYXJzZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlCisgICAgICBtZXNzYWdlIG9iamVjdCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisgICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCB0aGFuIGRlbGV0aW5nIHRoZSBvbGQKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbmQgYWRkaW5nIGEgbmV3IG9uZSB3aXRoIHRoZSBuZXcKKyAgICAgIGJvdW5kYXJ5IHZpYSA6bWV0aDpgYWRkX2hlYWRlcmAsIGJlY2F1c2UgOm1ldGg6YHNldF9ib3VuZGFyeWAgcHJlc2VydmVzCisgICAgICB0aGUgb3JkZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbGlzdCBvZgorICAgICAgaGVhZGVycy4gSG93ZXZlciwgaXQgZG9lcyAqbm90KiBwcmVzZXJ2ZSBhbnkgY29udGludWF0aW9uIGxpbmVzIHdoaWNoIG1heQorICAgICAgaGF2ZSBiZWVuIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9jaGFyc2V0KGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwKKyAgICAgIGNvZXJjZWQgdG8gbG93ZXIgY2FzZS4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb3IgaWYKKyAgICAgIHRoYXQgaGVhZGVyIGhhcyBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsICpmYWlsb2JqKiBpcyByZXR1cm5lZC4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSA6bWV0aDpgZ2V0X2NoYXJzZXRgIHdoaWNoIHJldHVybnMgdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGZvciB0aGUgZGVmYXVsdCBlbmNvZGluZyBvZiB0aGUgbWVzc2FnZSBib2R5LgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0cyhmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIHNldCBuYW1lcyBpbiB0aGUgbWVzc2FnZS4gIElmIHRoZQorICAgICAgbWVzc2FnZSBpcyBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCwgdGhlbiB0aGUgbGlzdCB3aWxsIGNvbnRhaW4gb25lIGVsZW1lbnQKKyAgICAgIGZvciBlYWNoIHN1YnBhcnQgaW4gdGhlIHBheWxvYWQsIG90aGVyd2lzZSwgaXQgd2lsbCBiZSBhIGxpc3Qgb2YgbGVuZ3RoIDEuCisKKyAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCB3aWxsIGJlIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgIGBgY2hhcnNldGBgIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGZvciB0aGUKKyAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBIb3dldmVyLCBpZiB0aGUgc3VicGFydCBoYXMgbm8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YKKyAgICAgIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4gTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdAorICAgICAgd2lsbCBiZSAqZmFpbG9iaiouCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKQorCisgICAgICBSZXR1cm4gdGhlIGxvd2VyY2FzZWQgdmFsdWUgKHdpdGhvdXQgcGFyYW1ldGVycykgb2YgdGhlIG1lc3NhZ2UncworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciBpZiBpdCBoYXMgb25lLCBvciBgYE5vbmVgYC4gIFRoZQorICAgICAgcG9zc2libGUgdmFsdWVzIGZvciB0aGlzIG1ldGhvZCBhcmUgKmlubGluZSosICphdHRhY2htZW50KiBvciBgYE5vbmVgYAorICAgICAgaWYgdGhlIG1lc3NhZ2UgZm9sbG93cyA6cmZjOmAyMTgzYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CisKKyAgIC4uIG1ldGhvZDo6IHdhbGsoKQorCisgICAgICBUaGUgOm1ldGg6YHdhbGtgIG1ldGhvZCBpcyBhbiBhbGwtcHVycG9zZSBnZW5lcmF0b3Igd2hpY2ggY2FuIGJlIHVzZWQgdG8KKyAgICAgIGl0ZXJhdGUgb3ZlciBhbGwgdGhlIHBhcnRzIGFuZCBzdWJwYXJ0cyBvZiBhIG1lc3NhZ2Ugb2JqZWN0IHRyZWUsIGluCisgICAgICBkZXB0aC1maXJzdCB0cmF2ZXJzYWwgb3JkZXIuICBZb3Ugd2lsbCB0eXBpY2FsbHkgdXNlIDptZXRoOmB3YWxrYCBhcyB0aGUKKyAgICAgIGl0ZXJhdG9yIGluIGEgYGBmb3JgYCBsb29wOyBlYWNoIGl0ZXJhdGlvbiByZXR1cm5zIHRoZSBuZXh0IHN1YnBhcnQuCisKKyAgICAgIEhlcmUncyBhbiBleGFtcGxlIHRoYXQgcHJpbnRzIHRoZSBNSU1FIHR5cGUgb2YgZXZlcnkgcGFydCBvZiBhIG11bHRpcGFydAorICAgICAgbWVzc2FnZSBzdHJ1Y3R1cmU6CisKKyAgICAgIC4uIHRlc3RzZXR1cDo6CisKKyAgICAgICAgID4+PiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUKKyAgICAgICAgID4+PiB3aXRoIG9wZW4oJ0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTYudHh0JywgJ3JiJykgYXMgZjoKKyAgICAgICAgIC4uLiAgICAgbXNnID0gbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYpCisgICAgICAgICA+Pj4gZnJvbSBlbWFpbC5pdGVyYXRvcnMgaW1wb3J0IF9zdHJ1Y3R1cmUKKworICAgICAgLi4gZG9jdGVzdDo6CisKKyAgICAgICAgID4+PiBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgLi4uICAgICBwcmludChwYXJ0LmdldF9jb250ZW50X3R5cGUoKSkKKyAgICAgICAgIG11bHRpcGFydC9yZXBvcnQKKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzCisgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAgdGV4dC9wbGFpbgorCisgICAgICBgYHdhbGtgYCBpdGVyYXRlcyBvdmVyIHRoZSBzdWJwYXJ0cyBvZiBhbnkgcGFydCB3aGVyZQorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJucyBgYFRydWVgYCwgZXZlbiB0aG91Z2gKKyAgICAgIGBgbXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCdgYCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4gIFdlCisgICAgICBjYW4gc2VlIHRoaXMgaW4gb3VyIGV4YW1wbGUgYnkgbWFraW5nIHVzZSBvZiB0aGUgYGBfc3RydWN0dXJlYGAgZGVidWcKKyAgICAgIGhlbHBlciBmdW5jdGlvbjoKKworICAgICAgLi4gZG9jdGVzdDo6CisKKyAgICAgICAgID4+PiBmb3IgcGFydCBpbiBtc2cud2FsaygpOgorICAgICAgICAgLi4uICAgICBwcmludChwYXJ0LmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCcpLAorICAgICAgICAgLi4uICAgICAgICAgICBwYXJ0LmlzX211bHRpcGFydCgpKQorICAgICAgICAgVHJ1ZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgVHJ1ZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgPj4+IF9zdHJ1Y3R1cmUobXNnKQorICAgICAgICAgbXVsdGlwYXJ0L3JlcG9ydAorICAgICAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvcmZjODIyCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorCisgICAgICBIZXJlIHRoZSBgYG1lc3NhZ2VgYCBwYXJ0cyBhcmUgbm90IGBgbXVsdGlwYXJ0c2BgLCBidXQgdGhleSBkbyBjb250YWluCisgICAgICBzdWJwYXJ0cy4gYGBpc19tdWx0aXBhcnQoKWBgIHJldHVybnMgYGBUcnVlYGAgYW5kIGBgd2Fsa2BgIGRlc2NlbmRzCisgICAgICBpbnRvIHRoZSBzdWJwYXJ0cy4KKworCisgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgY2FuIGFsc28gb3B0aW9uYWxseSBjb250YWluIHR3byBpbnN0YW5jZSBhdHRyaWJ1dGVzLAorICAgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBwbGFpbiB0ZXh0IG9mIGEgTUlNRSBtZXNzYWdlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHByZWFtYmxlCisKKyAgICAgIFRoZSBmb3JtYXQgb2YgYSBNSU1FIGRvY3VtZW50IGFsbG93cyBmb3Igc29tZSB0ZXh0IGJldHdlZW4gdGhlIGJsYW5rIGxpbmUKKyAgICAgIGZvbGxvd2luZyB0aGUgaGVhZGVycywgYW5kIHRoZSBmaXJzdCBtdWx0aXBhcnQgYm91bmRhcnkgc3RyaW5nLiBOb3JtYWxseSwKKyAgICAgIHRoaXMgdGV4dCBpcyBuZXZlciB2aXNpYmxlIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlciBiZWNhdXNlIGl0IGZhbGxzCisgICAgICBvdXRzaWRlIHRoZSBzdGFuZGFyZCBNSU1FIGFybW9yLiAgSG93ZXZlciwgd2hlbiB2aWV3aW5nIHRoZSByYXcgdGV4dCBvZgorICAgICAgdGhlIG1lc3NhZ2UsIG9yIHdoZW4gdmlld2luZyB0aGUgbWVzc2FnZSBpbiBhIG5vbi1NSU1FIGF3YXJlIHJlYWRlciwgdGhpcworICAgICAgdGV4dCBjYW4gYmVjb21lIHZpc2libGUuCisKKyAgICAgIFRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSBjb250YWlucyB0aGlzIGxlYWRpbmcgZXh0cmEtYXJtb3IgdGV4dCBmb3IgTUlNRQorICAgICAgZG9jdW1lbnRzLiAgV2hlbiB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgZGlzY292ZXJzIHNvbWUgdGV4dAorICAgICAgYWZ0ZXIgdGhlIGhlYWRlcnMgYnV0IGJlZm9yZSB0aGUgZmlyc3QgYm91bmRhcnkgc3RyaW5nLCBpdCBhc3NpZ25zIHRoaXMKKyAgICAgIHRleHQgdG8gdGhlIG1lc3NhZ2UncyAqcHJlYW1ibGUqIGF0dHJpYnV0ZS4gIFdoZW4gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpcyB3cml0aW5nIG91dCB0aGUgcGxhaW4gdGV4dAorICAgICAgcmVwcmVzZW50YXRpb24gb2YgYSBNSU1FIG1lc3NhZ2UsIGFuZCBpdCBmaW5kcyB0aGUKKyAgICAgIG1lc3NhZ2UgaGFzIGEgKnByZWFtYmxlKiBhdHRyaWJ1dGUsIGl0IHdpbGwgd3JpdGUgdGhpcyB0ZXh0IGluIHRoZSBhcmVhCisgICAgICBiZXR3ZWVuIHRoZSBoZWFkZXJzIGFuZCB0aGUgZmlyc3QgYm91bmRhcnkuICBTZWUgOm1vZDpgZW1haWwucGFyc2VyYCBhbmQKKyAgICAgIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgZm9yIGRldGFpbHMuCisKKyAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbWVzc2FnZSBvYmplY3QgaGFzIG5vIHByZWFtYmxlLCB0aGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUKKyAgICAgIHdpbGwgYmUgYGBOb25lYGAuCisKKworICAgLi4gYXR0cmlidXRlOjogZXBpbG9ndWUKKworICAgICAgVGhlICplcGlsb2d1ZSogYXR0cmlidXRlIGFjdHMgdGhlIHNhbWUgd2F5IGFzIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwKKyAgICAgIGV4Y2VwdCB0aGF0IGl0IGNvbnRhaW5zIHRleHQgdGhhdCBhcHBlYXJzIGJldHdlZW4gdGhlIGxhc3QgYm91bmRhcnkgYW5kCisgICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLgorCisgICAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSBlcGlsb2d1ZSB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIGZvciB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHRvIHByaW50IGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgZmlsZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBkZWZlY3RzCisKKyAgICAgIFRoZSAqZGVmZWN0cyogYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgdGhlIHByb2JsZW1zIGZvdW5kIHdoZW4KKyAgICAgIHBhcnNpbmcgdGhpcyBtZXNzYWdlLiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24KKyAgICAgIG9mIHRoZSBwb3NzaWJsZSBwYXJzaW5nIGRlZmVjdHMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKaW5kZXggYTljMDc4Yi4uNTc3NDNkNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdApAQCAtNywyNTEgKzcsMTIgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKLSAgIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgotCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weWAKIAotLi4gbm90ZTo6CistLS0tLS0tLS0tLS0KIAotICAgVGhlIGNvbnRlbnRtYW5hZ2VyIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBtb2R1bGUpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCi0tLS0tLS0tLS0tLS0tLQotCi1UaGUgOm1vZDpgfmVtYWlsLm1lc3NhZ2VgIG1vZHVsZSBwcm92aWRlcyBhIGNsYXNzIHRoYXQgY2FuIHJlcHJlc2VudCBhbgotYXJiaXRyYXJ5IGVtYWlsIG1lc3NhZ2UuICBUaGF0IGJhc2ljIG1lc3NhZ2UgbW9kZWwgaGFzIGEgdXNlZnVsIGFuZCBmbGV4aWJsZQotQVBJLCBidXQgaXQgcHJvdmlkZXMgb25seSBhIGxvd2VyLWxldmVsIEFQSSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZ2VuZXJpYwotcGFydHMgb2YgYSBtZXNzYWdlICh0aGUgaGVhZGVycywgZ2VuZXJpYyBoZWFkZXIgcGFyYW1ldGVycywgYW5kIHRoZSBwYXlsb2FkLAotd2hpY2ggbWF5IGJlIGEgbGlzdCBvZiBzdWItcGFydHMpLiAgVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgdG9vbHMKLXRoYXQgcHJvdmlkZSBhbiBlbmhhbmNlZCBhbmQgZXh0ZW5zaWJsZSBBUEkgZm9yIGRlYWxpbmcgd2l0aCB2YXJpb3VzIHNwZWNpZmljCi10eXBlcyBvZiBjb250ZW50LCBpbmNsdWRpbmcgdGhlIGFiaWxpdHkgdG8gcmV0cmlldmUgdGhlIGNvbnRlbnQgb2YgdGhlIG1lc3NhZ2UKLWFzIGEgc3BlY2lhbGl6ZWQgb2JqZWN0IHR5cGUgcmF0aGVyIHRoYW4gYXMgYSBzaW1wbGUgYnl0ZXMgb2JqZWN0LiAgVGhlIG1vZHVsZQotYXV0b21hdGljYWxseSB0YWtlcyBjYXJlIG9mIHRoZSBSRkMtc3BlY2lmaWVkIE1JTUUgZGV0YWlscyAocmVxdWlyZWQgaGVhZGVycwotYW5kIHBhcmFtZXRlcnMsIGV0Yy4pIGZvciB0aGUgY2VydGFpbiBjb21tb24gY29udGVudCB0eXBlcyBjb250ZW50IHByb3BlcnRpZXMsCi1hbmQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbCB0eXBlcyBjYW4gYmUgYWRkZWQgYnkgYW4gYXBwbGljYXRpb24gdXNpbmcgdGhlCi1leHRlbnNpb24gbWVjaGFuaXNtcy4KLQotVGhpcyBtb2R1bGUgZGVmaW5lcyB0aGUgZXBvbnltb3VzICJDb250ZW50IE1hbmFnZXIiIGNsYXNzZXMuICBUaGUgYmFzZQotOmNsYXNzOmAuQ29udGVudE1hbmFnZXJgIGNsYXNzIGRlZmluZXMgYW4gQVBJIGZvciByZWdpc3RlcmluZyBjb250ZW50Ci1tYW5hZ2VtZW50IGZ1bmN0aW9ucyB3aGljaCBleHRyYWN0IGRhdGEgZnJvbSBgYE1lc3NhZ2VgYCBvYmplY3RzIG9yIGluc2VydCBkYXRhCi1hbmQgaGVhZGVycyBpbnRvIGBgTWVzc2FnZWBgIG9iamVjdHMsIHRodXMgcHJvdmlkaW5nIGEgd2F5IG9mIGNvbnZlcnRpbmcKLWJldHdlZW4gYGBNZXNzYWdlYGAgb2JqZWN0cyBjb250YWluaW5nIGRhdGEgYW5kIG90aGVyIHJlcHJlc2VudGF0aW9ucyBvZiB0aGF0Ci1kYXRhIChQeXRob24gZGF0YSB0eXBlcywgc3BlY2lhbGl6ZWQgUHl0aG9uIG9iamVjdHMsIGV4dGVybmFsIGZpbGVzLCBldGMpLiAgVGhlCi1tb2R1bGUgYWxzbyBkZWZpbmVzIG9uZSBjb25jcmV0ZSBjb250ZW50IG1hbmFnZXI6IDpkYXRhOmByYXdfZGF0YV9tYW5hZ2VyYAotY29udmVydHMgYmV0d2VlbiBNSU1FIGNvbnRlbnQgdHlwZXMgYW5kIGBgc3RyYGAgb3IgYGBieXRlc2BgIGRhdGEuICBJdCBhbHNvCi1wcm92aWRlcyBhIGNvbnZlbmllbnQgQVBJIGZvciBtYW5hZ2luZyB0aGUgTUlNRSBwYXJhbWV0ZXJzIHdoZW4gaW5zZXJ0aW5nCi1jb250ZW50IGludG8gYGBNZXNzYWdlYGBcIHMuICBJdCBhbHNvIGhhbmRsZXMgaW5zZXJ0aW5nIGFuZCBleHRyYWN0aW5nCi1gYE1lc3NhZ2VgYCBvYmplY3RzIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBgYG1lc3NhZ2UvcmZjODIyYGAgY29udGVudCB0eXBlLgotCi1Bbm90aGVyIHBhcnQgb2YgdGhlIGVuaGFuY2VkIGludGVyZmFjZSBpcyBzdWJjbGFzc2VzIG9mCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIHRoYXQgcHJvdmlkZSBuZXcgY29udmVuaWVuY2UgQVBJIGZ1bmN0aW9ucywKLWluY2x1ZGluZyBjb252ZW5pZW5jZSBtZXRob2RzIGZvciBjYWxsaW5nIHRoZSBDb250ZW50IE1hbmFnZXJzIGRlcml2ZWQgZnJvbQotdGhpcyBtb2R1bGUuCi0KLS4uIG5vdGU6OgotCi0gICBBbHRob3VnaCA6Y2xhc3M6YC5FbWFpbE1lc3NhZ2VgIGFuZCA6Y2xhc3M6YC5NSU1FUGFydGAgYXJlIGN1cnJlbnRseQotICAgZG9jdW1lbnRlZCBpbiB0aGlzIG1vZHVsZSBiZWNhdXNlIG9mIHRoZSBwcm92aXNpb25hbCBuYXR1cmUgb2YgdGhlIGNvZGUsIHRoZQotICAgaW1wbGVtZW50YXRpb24gbGl2ZXMgaW4gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4KLQotLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKLQotLi4gY2xhc3M6OiBFbWFpbE1lc3NhZ2UocG9saWN5PWRlZmF1bHQpCi0KLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdWRwYXRlIGFuZCBzZXJpYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uCi0gICBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLnBvbGljeS5kZWZhdWx0YCBwb2xpY3ksIHdoaWNoIGZvbGxvd3MgdGhlIHJ1bGVzIG9mIHRoZSBlbWFpbAotICAgUkZDcyBleGNlcHQgZm9yIGxpbmUgZW5kaW5ncyAoaW5zdGVhZCBvZiB0aGUgUkZDIG1hbmRhdGVkIGBgXHJcbmBgLCBpdCB1c2VzCi0gICB0aGUgUHl0aG9uIHN0YW5kYXJkIGBgXG5gYCBsaW5lIGVuZGluZ3MpLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KLQotICAgVGhpcyBjbGFzcyBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAuICBJdCBhZGRzCi0gICB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0KLQotICAgLi4gbWV0aG9kOjogaXNfYXR0YWNobWVudAotCi0gICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlcmUgaXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyCi0gICAgICBhbmQgaXRzIChjYXNlIGluc2Vuc2l0aXZlKSB2YWx1ZSBpcyBgYGF0dGFjaG1lbnRgYCwgYGBGYWxzZWBgIG90aGVyd2lzZS4KLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMgotICAgICAgICAgaXNfYXR0YWNobWVudCBpcyBub3cgYSBtZXRob2QgaW5zdGVhZCBvZiBhIHByb3BlcnR5LCBmb3IgY29uc2lzdGVuY3kKLSAgICAgICAgIHdpdGggOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfYm9keShwcmVmZXJlbmNlbGlzdD0oJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpKQotCi0gICAgICBSZXR1cm4gdGhlIE1JTUUgcGFydCB0aGF0IGlzIHRoZSBiZXN0IGNhbmRpZGF0ZSB0byBiZSB0aGUgImJvZHkiIG9mIHRoZQotICAgICAgbWVzc2FnZS4KLQotICAgICAgKnByZWZlcmVuY2VsaXN0KiBtdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBmcm9tIHRoZSBzZXQgYGByZWxhdGVkYGAsCi0gICAgICBgYGh0bWxgYCwgYW5kIGBgcGxhaW5gYCwgYW5kIGluZGljYXRlcyB0aGUgb3JkZXIgb2YgcHJlZmVyZW5jZSBmb3IgdGhlCi0gICAgICBjb250ZW50IHR5cGUgb2YgdGhlIHBhcnQgcmV0dXJuZWQuCi0KLSAgICAgIFN0YXJ0IGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCB0aGUKLSAgICAgIGBgZ2V0X2JvZHlgYCBtZXRob2QgaXMgY2FsbGVkLgotCi0gICAgICBJZiBgYHJlbGF0ZWRgYCBpcyBub3QgaW5jbHVkZWQgaW4gKnByZWZlcmVuY2VsaXN0KiwgY29uc2lkZXIgdGhlIHJvb3QKLSAgICAgIHBhcnQgKG9yIHN1YnBhcnQgb2YgdGhlIHJvb3QgcGFydCkgb2YgYW55IHJlbGF0ZWQgZW5jb3VudGVyZWQgYXMgYQotICAgICAgY2FuZGlkYXRlIGlmIHRoZSAoc3ViLSlwYXJ0IG1hdGNoZXMgYSBwcmVmZXJlbmNlLgotCi0gICAgICBXaGVuIGVuY291bnRlcmluZyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2hlY2sgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIKLSAgICAgIGFuZCBpZiBhIHBhcnQgd2l0aCBhIG1hdGNoaW5nIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBpcyBmb3VuZCwgY29uc2lkZXIKLSAgICAgIG9ubHkgaXQgd2hlbiBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcy4gIE90aGVyd2lzZSBjb25zaWRlciBvbmx5IHRoZQotICAgICAgZmlyc3QgKGRlZmF1bHQgcm9vdCkgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLgotCi0gICAgICBJZiBhIHBhcnQgaGFzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgb25seSBjb25zaWRlcgotICAgICAgdGhlIHBhcnQgYSBjYW5kaWRhdGUgbWF0Y2ggaWYgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgYGBpbmxpbmVgYC4KLQotICAgICAgSWYgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBtYXRjaGVzIGFueSBvZiB0aGUgcHJlZmVyZW5jZXMgaW4KLSAgICAgICpwcmVmZXJuZWNsaXN0KiwgcmV0dXJuIGBgTm9uZWBgLgotCi0gICAgICBOb3RlczogKDEpIEZvciBtb3N0IGFwcGxpY2F0aW9ucyB0aGUgb25seSAqcHJlZmVyZW5jZWxpc3QqIGNvbWJpbmF0aW9ucwotICAgICAgdGhhdCByZWFsbHkgbWFrZSBzZW5zZSBhcmUgYGAoJ3BsYWluJywpYGAsIGBgKCdodG1sJywgJ3BsYWluJylgYCwgYW5kIHRoZQotICAgICAgZGVmYXVsdCwgYGAoJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpYGAuICAoMikgQmVjYXVzZSBtYXRjaGluZyBzdGFydHMKLSAgICAgIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCBgYGdldF9ib2R5YGAgaXMgY2FsbGVkLCBjYWxsaW5nIGBgZ2V0X2JvZHlgYCBvbgotICAgICAgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgd2lsbCByZXR1cm4gdGhlIG9iamVjdCBpdHNlbGYgdW5sZXNzCi0gICAgICAqcHJlZmVyZW5jZWxpc3QqIGhhcyBhIG5vbi1kZWZhdWx0IHZhbHVlLiAoMykgTWVzc2FnZXMgKG9yIG1lc3NhZ2UgcGFydHMpCi0gICAgICB0aGF0IGRvIG5vdCBzcGVjaWZ5IGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgb3Igd2hvc2UKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBpbnZhbGlkIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiB0aGV5Ci0gICAgICBhcmUgb2YgdHlwZSBgYHRleHQvcGxhaW5gYCwgd2hpY2ggbWF5IG9jY2FzaW9uYWxseSBjYXVzZSBgYGdldF9ib2R5YGAgdG8KLSAgICAgIHJldHVybiB1bmV4cGVjdGVkIHJlc3VsdHMuCi0KLQotICAgLi4gbWV0aG9kOjogaXRlcl9hdHRhY2htZW50cygpCi0KLSAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgcGFydHMgb2YgdGhlIG1lc3NhZ2UgdGhhdCBhcmUgbm90Ci0gICAgICBjYW5kaWRhdGUgImJvZHkiIHBhcnRzLiAgVGhhdCBpcywgc2tpcCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBlYWNoIG9mCi0gICAgICBgYHRleHQvcGxhaW5gYCwgYGB0ZXh0L2h0bWxgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgotICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCAodW5sZXNzIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFya2VkIGFzCi0gICAgICBhdHRhY2htZW50cyB2aWEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgKSwgYW5kCi0gICAgICByZXR1cm4gYWxsIHJlbWFpbmluZyBwYXJ0cy4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhCi0gICAgICBgYG11bHRpcGFydC9yZWxhdGVkYGAsIHJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBhbGwgdGhlIHJlbGF0ZWQgcGFydHMKLSAgICAgIGV4Y2VwdCB0aGUgcm9vdCBwYXJ0IChpZTogdGhlIHBhcnQgcG9pbnRlZCB0byBieSB0aGUgYGBzdGFydGBgIHBhcmFtZXRlciwKLSAgICAgIG9yIHRoZSBmaXJzdCBwYXJ0IGlmIHRoZXJlIGlzIG5vIGBgc3RhcnRgYCBwYXJhbWV0ZXIgb3IgdGhlIGBgc3RhcnRgYAotICAgICAgcGFyYW1ldGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBvZiBhbnkgb2YgdGhlCi0gICAgICBwYXJ0cykuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgIG9yIGEKLSAgICAgIG5vbi1gYG11bHRpcGFydGBgLCByZXR1cm4gYW4gZW1wdHkgaXRlcmF0b3IuCi0KLQotICAgLi4gbWV0aG9kOjogaXRlcl9wYXJ0cygpCi0KLSAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgaW1tZWRpYXRlIHN1Yi1wYXJ0cyBvZiB0aGUgbWVzc2FnZSwKLSAgICAgIHdoaWNoIHdpbGwgYmUgZW1wdHkgZm9yIGEgbm9uLWBgbXVsdGlwYXJ0YGAuICAoU2VlIGFsc28KLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS53YWxrYC4pCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBDYWxsIHRoZSBgYGdldF9jb250ZW50YGAgbWV0aG9kIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmCi0gICAgICBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMKLSAgICAgIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCi0gICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0KLQotICAgLi4gbWV0aG9kOjogc2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBDYWxsIHRoZSBgYHNldF9jb250ZW50YGAgbWV0aG9kIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmCi0gICAgICBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMKLSAgICAgIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCi0gICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9yZWxhdGVkKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBtZXNzYWdlIGludG8gYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgbWVzc2FnZSwKLSAgICAgIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYQotICAgICAgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UKLSAgICAgIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeQotICAgICAgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUKLSAgICAgIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9hbHRlcm5hdGl2ZShib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgaW50byBhCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAKLSAgICAgIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgotICAgICAgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsCi0gICAgICBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzCi0gICAgICBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IG1ha2VfbWl4ZWQoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgLCBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IgYQotICAgICAgYGBtdWx0aXBhcnQtYWx0ZXJuYXRpdmVgYCBpbnRvIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgbW92aW5nIGFueSBleGlzdGluZwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZQotICAgICAgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZwotICAgICAgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5Ci0gICAgICBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfcmVsYXRlZCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQotICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwKLSAgICAgIGFuZCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKLSAgICAgIHRoZSBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGNhbGwgOm1ldGg6YG1ha2VfcmVsYXRlZGAgYW5kIHRoZW4KLSAgICAgIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcyBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLAotICAgICAgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLSAgICAgIElmIHRoZSBhZGRlZCBwYXJ0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLAotICAgICAgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZSBgYGlubGluZWBgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9hbHRlcm5hdGl2ZSgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKLSAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQotICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2FsbAotICAgICAgOm1ldGg6YG1ha2VfYWx0ZXJuYXRpdmVgIGFuZCB0aGVuIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcwotICAgICAgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZgotICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAotICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX2F0dGFjaG1lbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iamVjdCwKLSAgICAgIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKLSAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgotICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY2FsbCA6bWV0aDpgbWFrZV9taXhlZGAgYW5kIHRoZW4gcHJvY2VlZCBhcwotICAgICAgYWJvdmUuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYAotICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLiAgSWYgdGhlIGFkZGVkIHBhcnQKLSAgICAgIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBhZGQgb25lIHdpdGggdGhlIHZhbHVlCi0gICAgICBgYGF0dGFjaG1lbnRgYC4gIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIGJvdGggZm9yIGV4cGxpY2l0IGF0dGFjaG1lbnRzCi0gICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgIGFuZCBgYGlubGluZWBgIGF0dGFjaG1lbnRzCi0gICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZWApLCBieSBwYXNzaW5nIGFwcHJvcHJpYXRlCi0gICAgICBvcHRpb25zIHRvIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKLQotICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIGhlYWRlcnMuCi0KLQotICAgLi4gbWV0aG9kOjogY2xlYXJfY29udGVudCgpCi0KLSAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSA6ZXhjOmBDb250ZW50LWAgaGVhZGVycywgbGVhdmluZwotICAgICAgYWxsIG90aGVyIGhlYWRlcnMgaW50YWN0IGFuZCBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4KLQotCi0uLiBjbGFzczo6IE1JTUVQYXJ0KHBvbGljeT1kZWZhdWx0KQotCi0gICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc3VicGFydCBvZiBhIE1JTUUgbWVzc2FnZS4gIEl0IGlzIGlkZW50aWNhbCB0bwotICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCwgZXhjZXB0IHRoYXQgbm8gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycyBhcmUKLSAgICBhZGRlZCB3aGVuIDptZXRoOmB+RW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBpcyBjYWxsZWQsIHNpbmNlIHN1Yi1wYXJ0cyBkbwotICAgIG5vdCBuZWVkIHRoZWlyIG93biA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzLgotCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXwogCi0uLiBjdXJyZW50bW9kdWxlOjogZW1haWwuY29udGVudG1hbmFnZXIKIAogLi4gY2xhc3M6OiBDb250ZW50TWFuYWdlcigpCiAKQEAgLTM2Miw3ICsxMjMsNyBAQAogICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J2J5dGVzJz4sIG1haW50eXBlLCBzdWJ0eXBlLCBjdGU9ImJhc2U2NCIsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bvc2l0aW9uPU5vbmUsIGZpbGVuYW1lPU5vbmUsIGNpZD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM9Tm9uZSwgaGVhZGVycz1Ob25lKQotICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J01lc3NhZ2UnPiwgY3RlPU5vbmUsIFwKKyAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdFbWFpbE1lc3NhZ2UnPiwgY3RlPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bvc2l0aW9uPU5vbmUsIGZpbGVuYW1lPU5vbmUsIGNpZD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM9Tm9uZSwgaGVhZGVycz1Ob25lKQogICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J2xpc3QnPiwgc3VidHlwZT0nbWl4ZWQnLCBcCkBAIC0zNzgsMTQgKzEzOSwxNCBAQAogICAgICAgICAgICAgIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzIHNwZWNpZmllZCwgb3IgYGBwbGFpbmBgIGlmIGl0IGlzIG5vdC4KICAgICAgICAgICAgKiBGb3IgYGBieXRlc2BgLCB1c2UgdGhlIHNwZWNpZmllZCAqbWFpbnR5cGUqIGFuZCAqc3VidHlwZSosIG9yCiAgICAgICAgICAgICAgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZXkgYXJlIG5vdCBzcGVjaWZpZWQuCi0gICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBtYWludHlwZSB0bwotICAgICAgICAgICAgIGBgbWVzc2FnZWBgLCBhbmQgc2V0IHRoZSBzdWJ0eXBlIHRvICpzdWJ0eXBlKiBpZiBpdCBpcyBzcGVjaWZpZWQKLSAgICAgICAgICAgICBvciBgYHJmYzgyMmBgIGlmIGl0IGlzIG5vdC4gIElmICpzdWJ0eXBlKiBpcyBgYHBhcnRpYWxgYCwgcmFpc2UgYW4KLSAgICAgICAgICAgICBlcnJvciAoYGBieXRlc2BgIG9iamVjdHMgbXVzdCBiZSB1c2VkIHRvIGNvbnN0cnVjdAotICAgICAgICAgICAgIGBgbWVzc2FnZS9wYXJ0aWFsYGAgcGFydHMpLgorICAgICAgICAgICAqIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBtYWludHlwZQorICAgICAgICAgICAgIHRvIGBgbWVzc2FnZWBgLCBhbmQgc2V0IHRoZSBzdWJ0eXBlIHRvICpzdWJ0eXBlKiBpZiBpdCBpcworICAgICAgICAgICAgIHNwZWNpZmllZCBvciBgYHJmYzgyMmBgIGlmIGl0IGlzIG5vdC4gIElmICpzdWJ0eXBlKiBpcworICAgICAgICAgICAgIGBgcGFydGlhbGBgLCByYWlzZSBhbiBlcnJvciAoYGBieXRlc2BgIG9iamVjdHMgbXVzdCBiZSB1c2VkIHRvCisgICAgICAgICAgICAgY29uc3RydWN0IGBgbWVzc2FnZS9wYXJ0aWFsYGAgcGFydHMpLgogICAgICAgICAgICAqIEZvciAqPCdsaXN0Jz4qLCB3aGljaCBzaG91bGQgYmUgYSBsaXN0IG9mCi0gICAgICAgICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIGBgbWFpbnR5cGVgYCB0bwotICAgICAgICAgICAgIGBgbXVsdGlwYXJ0YGAsIGFuZCB0aGUgYGBzdWJ0eXBlYGAgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCisgICAgICAgICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgYGBtYWludHlwZWBgCisgICAgICAgICAgICAgdG8gYGBtdWx0aXBhcnRgYCwgYW5kIHRoZSBgYHN1YnR5cGVgYCB0byAqc3VidHlwZSogaWYgaXQgaXMKICAgICAgICAgICAgICBzcGVjaWZpZWQsIGFuZCBgYG1peGVkYGAgaWYgaXQgaXMgbm90LiAgSWYgdGhlIG1lc3NhZ2UgcGFydHMgaW4KICAgICAgICAgICAgICB0aGUgKjwnbGlzdCc+KiBoYXZlIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMsIHJlbW92ZQogICAgICAgICAgICAgIHRoZW0uCkBAIC0zOTcsMzIgKzE1OCwzNSBAQAogCiAgICAgICAgSWYgKmN0ZSogaXMgc2V0LCBlbmNvZGUgdGhlIHBheWxvYWQgdXNpbmcgdGhlIHNwZWNpZmllZCBjb250ZW50IHRyYW5zZmVyCiAgICAgICAgZW5jb2RpbmcsIGFuZCBzZXQgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuZGNvZGluZ2AgaGVhZGVyIHRvCi0gICAgICAgdGhhdCB2YWx1ZS4gIEZvciBgYHN0cmBgIG9iamVjdHMsIGlmIGl0IGlzIG5vdCBzZXQgdXNlIGhldXJpc3RpY3MgdG8KLSAgICAgICBkZXRlcm1pbmUgdGhlIG1vc3QgY29tcGFjdCBlbmNvZGluZy4gIFBvc3NpYmxlIHZhbHVlcyBmb3IgKmN0ZSogYXJlCi0gICAgICAgYGBxdW90ZWQtcHJpbnRhYmxlYGAsIGBgYmFzZTY0YGAsIGBgN2JpdGBgLCBgYDhiaXRgYCwgYW5kIGBgYmluYXJ5YGAuCi0gICAgICAgSWYgdGhlIGlucHV0IGNhbm5vdCBiZSBlbmNvZGVkIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgKGVnOiBgYDdiaXRgYCksCi0gICAgICAgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgLCBwZXIKLSAgICAgICA6cmZjOmAyMDQ2YCwgcmFpc2UgYW4gZXJyb3IgaWYgYSAqY3RlKiBvZiBgYHF1b3RlZC1wcmludGFibGVgYCBvcgotICAgICAgIGBgYmFzZTY0YGAgaXMgcmVxdWVzdGVkIGZvciAqc3VidHlwZSogYGByZmM4MjJgYCwgYW5kIGZvciBhbnkgKmN0ZSoKLSAgICAgICBvdGhlciB0aGFuIGBgN2JpdGBgIGZvciAqc3VidHlwZSogYGBleHRlcm5hbC1ib2R5YGAuICBGb3IKLSAgICAgICBgYG1lc3NhZ2UvcmZjODIyYGAsIHVzZSBgYDhiaXRgYCBpZiAqY3RlKiBpcyBub3Qgc3BlY2lmaWVkLiAgRm9yIGFsbAotICAgICAgIG90aGVyIHZhbHVlcyBvZiAqc3VidHlwZSosIHVzZSBgYDdiaXRgYC4KKyAgICAgICB0aGF0IHZhbHVlLiAgUG9zc2libGUgdmFsdWVzIGZvciAqY3RlKiBhcmUgYGBxdW90ZWQtcHJpbnRhYmxlYGAsCisgICAgICAgYGBiYXNlNjRgYCwgYGA3Yml0YGAsIGBgOGJpdGBgLCBhbmQgYGBiaW5hcnlgYC4gIElmIHRoZSBpbnB1dCBjYW5ub3QgYmUKKyAgICAgICBlbmNvZGVkIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgKGZvciBleGFtcGxlLCBzcGVjaWZ5aW5nIGEgKmN0ZSogb2YKKyAgICAgICBgYDdiaXRgYCBmb3IgYW4gaW5wdXQgdGhhdCBjb250YWlucyBub24tQVNDSUkgdmFsdWVzKSwgcmFpc2UgYQorICAgICAgIDpleGM6YFZhbHVlRXJyb3JgLgorCisgICAgICAgICAgICAqIEZvciBgYHN0cmBgIG9iamVjdHMsIGlmICpjdGUqIGlzIG5vdCBzZXQgdXNlIGhldXJpc3RpY3MgdG8KKyAgICAgICAgICAgICAgZGV0ZXJtaW5lIHRoZSBtb3N0IGNvbXBhY3QgZW5jb2RpbmcuCisgICAgICAgICAgICAqIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAsIHBlciA6cmZjOmAyMDQ2YCwgcmFpc2UKKyAgICAgICAgICAgICAgYW4gZXJyb3IgaWYgYSAqY3RlKiBvZiBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgIGlzCisgICAgICAgICAgICAgIHJlcXVlc3RlZCBmb3IgKnN1YnR5cGUqIGBgcmZjODIyYGAsIGFuZCBmb3IgYW55ICpjdGUqIG90aGVyIHRoYW4KKyAgICAgICAgICAgICAgYGA3Yml0YGAgZm9yICpzdWJ0eXBlKiBgYGV4dGVybmFsLWJvZHlgYC4gIEZvcgorICAgICAgICAgICAgICBgYG1lc3NhZ2UvcmZjODIyYGAsIHVzZSBgYDhiaXRgYCBpZiAqY3RlKiBpcyBub3Qgc3BlY2lmaWVkLiAgRm9yCisgICAgICAgICAgICAgIGFsbCBvdGhlciB2YWx1ZXMgb2YgKnN1YnR5cGUqLCB1c2UgYGA3Yml0YGAuCiAKICAgICAgICAuLiBub3RlOjogQSAqY3RlKiBvZiBgYGJpbmFyeWBgIGRvZXMgbm90IGFjdHVhbGx5IHdvcmsgY29ycmVjdGx5IHlldC4KLSAgICAgICAgICBUaGUgYGBNZXNzYWdlYGAgb2JqZWN0IGFzIG1vZGlmaWVkIGJ5IGBgc2V0X2NvbnRlbnRgYCBpcyBjb3JyZWN0LCBidXQKLSAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGRvZXMgbm90IHNlcmlhbGl6ZSBpdAotICAgICAgICAgIGNvcnJlY3RseS4KKyAgICAgICAgICBUaGUgYGBFbWFpbE1lc3NhZ2VgYCBvYmplY3QgYXMgbW9kaWZpZWQgYnkgYGBzZXRfY29udGVudGBgIGlzCisgICAgICAgICAgY29ycmVjdCwgYnV0IDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZG9lcyBub3QKKyAgICAgICAgICBzZXJpYWxpemUgaXQgY29ycmVjdGx5LgogCiAgICAgICAgSWYgKmRpc3Bvc2l0aW9uKiBpcyBzZXQsIHVzZSBpdCBhcyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4gIElmIG5vdCBzcGVjaWZpZWQsIGFuZAogICAgICAgICpmaWxlbmFtZSogaXMgc3BlY2lmaWVkLCBhZGQgdGhlIGhlYWRlciB3aXRoIHRoZSB2YWx1ZSBgYGF0dGFjaG1lbnRgYC4KLSAgICAgICBJZiBpdCBpcyBub3Qgc3BlY2lmaWVkIGFuZCAqZmlsZW5hbWUqIGlzIGFsc28gbm90IHNwZWNpZmllZCwgZG8gbm90IGFkZAotICAgICAgIHRoZSBoZWFkZXIuICBUaGUgb25seSB2YWxpZCB2YWx1ZXMgZm9yICpkaXNwb3NpdGlvbiogYXJlIGBgYXR0YWNobWVudGBgCi0gICAgICAgYW5kIGBgaW5saW5lYGAuCisgICAgICAgSWYgKmRpc3Bvc2l0aW9uKiBpcyBub3Qgc3BlY2lmaWVkIGFuZCAqZmlsZW5hbWUqIGlzIGFsc28gbm90IHNwZWNpZmllZCwKKyAgICAgICBkbyBub3QgYWRkIHRoZSBoZWFkZXIuICBUaGUgb25seSB2YWxpZCB2YWx1ZXMgZm9yICpkaXNwb3NpdGlvbiogYXJlCisgICAgICAgYGBhdHRhY2htZW50YGAgYW5kIGBgaW5saW5lYGAuCiAKICAgICAgICBJZiAqZmlsZW5hbWUqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGUgYGBmaWxlbmFtZWBgCi0gICAgICAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLiAgVGhlcmUgaXMgbm8KLSAgICAgICBkZWZhdWx0LgorICAgICAgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4KIAogICAgICAgIElmICpjaWQqIGlzIHNwZWNpZmllZCwgYWRkIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGhlYWRlciB3aXRoCiAgICAgICAgKmNpZCogYXMgaXRzIHZhbHVlLgpAQCAtNDM1LDMgKzE5OSw5IEBACiAgICAgICAgYGBoZWFkZXJuYW1lOiBoZWFkZXJ2YWx1ZWBgIG9yIGEgbGlzdCBvZiBgYGhlYWRlcmBgIG9iamVjdHMKICAgICAgICAoZGlzdGluZ3Vpc2hlZCBmcm9tIHN0cmluZ3MgYnkgaGF2aW5nIGEgYGBuYW1lYGAgYXR0cmlidXRlKSwgYWRkIHRoZQogICAgICAgIGhlYWRlcnMgdG8gKm1zZyouCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy40IGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdAppbmRleCA5ZDdmOWJmLi5lMjRhYzdiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CkBAIC04LDYgKzgsMTIgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZQorbmV3IEFQSSB0aGUgZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSB0aGUgKmN0ZSogcGFyYW1ldGVyIG9mCit0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIFdoZW4gY3JlYXRpbmcgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzIGZyb20gc2NyYXRjaCwgeW91IG9mdGVuCiBuZWVkIHRvIGVuY29kZSB0aGUgcGF5bG9hZHMgZm9yIHRyYW5zcG9ydCB0aHJvdWdoIGNvbXBsaWFudCBtYWlsIHNlcnZlcnMuIFRoaXMKIGlzIGVzcGVjaWFsbHkgdHJ1ZSBmb3IgOm1pbWV0eXBlOmBpbWFnZS9cKmAgYW5kIDptaW1ldHlwZTpgdGV4dC9cKmAgdHlwZSBtZXNzYWdlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKaW5kZXggODQ3MDc4My4uMmQwZDE5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CkBAIC0yMCwzMyArMjAsMjcgQEAKIAogLi4gZXhjZXB0aW9uOjogTWVzc2FnZVBhcnNlRXJyb3IoKQogCi0gICBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAKLSAgIGNsYXNzLiAgSXQgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VFcnJvcmAuCisgICBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIGZvciBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzLiAgSXQgaXMgZGVyaXZlZCBmcm9tCisgICA6ZXhjOmBNZXNzYWdlRXJyb3JgLiAgVGhpcyBjbGFzcyBpcyBhbHNvIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgcGFyc2VyIHVzZWQKKyAgIGJ5IDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAuCiAKIAogLi4gZXhjZXB0aW9uOjogSGVhZGVyUGFyc2VFcnJvcigpCiAKLSAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmAyODIyYCBoZWFkZXJzIG9mIGEKLSAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gSXQgY2FuIGJlIHJhaXNlZAotICAgZnJvbSB0aGUgOm1ldGg6YFBhcnNlci5wYXJzZSA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZT5gIG9yCi0gICA6bWV0aDpgUGFyc2VyLnBhcnNlc3RyIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlc3RyPmAgbWV0aG9kcy4KLQotICAgU2l0dWF0aW9ucyB3aGVyZSBpdCBjYW4gYmUgcmFpc2VkIGluY2x1ZGUgZmluZGluZyBhbiBlbnZlbG9wZSBoZWFkZXIgYWZ0ZXIgdGhlCi0gICBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgb2YgdGhlIG1lc3NhZ2UsIGZpbmRpbmcgYSBjb250aW51YXRpb24gbGluZSBiZWZvcmUgdGhlCi0gICBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgaXMgZm91bmQsIG9yIGZpbmRpbmcgYSBsaW5lIGluIHRoZSBoZWFkZXJzIHdoaWNoIGlzCi0gICBuZWl0aGVyIGEgaGVhZGVyIG9yIGEgY29udGludWF0aW9uIGxpbmUuCisgICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgNTMyMmAgaGVhZGVycyBvZiBhCisgICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuICBUaGUKKyAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2JvdW5kYXJ5YCBtZXRob2Qgd2lsbCByYWlzZSB0aGlzCisgICBlcnJvciBpZiB0aGUgY29udGVudCB0eXBlIGlzIHVua25vd24gd2hlbiB0aGUgbWV0aG9kIGlzIGNhbGxlZC4KKyAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG1heSByYWlzZSB0aGlzIGVycm9yIGZvciBjZXJ0YWluIGJhc2U2NAorICAgZGVjb2RpbmcgZXJyb3JzLCBhbmQgd2hlbiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gY3JlYXRlIGEgaGVhZGVyIHRoYXQgYXBwZWFycworICAgdG8gY29udGFpbiBhbiBlbWJlZGRlZCBoZWFkZXIgKHRoYXQgaXMsIHRoZXJlIGlzIHdoYXQgaXMgc3VwcG9zZWQgdG8gYmUgYQorICAgY29udGludWF0aW9uIGxpbmUgdGhhdCBoYXMgbm8gbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBsb29rcyBsaWtlIGEgaGVhZGVyKS4KIAogCiAuLiBleGNlcHRpb246OiBCb3VuZGFyeUVycm9yKCkKIAotICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDI4MjJgIGhlYWRlcnMgb2YgYQotICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiBJdCBjYW4gYmUgcmFpc2VkCi0gICBmcm9tIHRoZSA6bWV0aDpgUGFyc2VyLnBhcnNlIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlPmAgb3IKLSAgIDptZXRoOmBQYXJzZXIucGFyc2VzdHIgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHI+YCBtZXRob2RzLgotCi0gICBTaXR1YXRpb25zIHdoZXJlIGl0IGNhbiBiZSByYWlzZWQgaW5jbHVkZSBub3QgYmVpbmcgYWJsZSB0byBmaW5kIHRoZSBzdGFydGluZyBvcgotICAgdGVybWluYXRpbmcgYm91bmRhcnkgaW4gYSA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgbWVzc2FnZSB3aGVuIHN0cmljdCBwYXJzaW5nCi0gICBpcyB1c2VkLgorICAgRGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIHVzZWQuCiAKIAogLi4gZXhjZXB0aW9uOjogTXVsdGlwYXJ0Q29udmVyc2lvbkVycm9yKCkKQEAgLTY0LDE0ICs1OCwxNCBAQAogICAgOmNsYXNzOmB+ZW1haWwubWltZS5ub25tdWx0aXBhcnQuTUlNRU5vbk11bHRpcGFydGAgKGUuZy4KICAgIDpjbGFzczpgfmVtYWlsLm1pbWUuaW1hZ2UuTUlNRUltYWdlYCkuCiAKLUhlcmUncyB0aGUgbGlzdCBvZiB0aGUgZGVmZWN0cyB0aGF0IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAKKworSGVyZSBpcyB0aGUgbGlzdCBvZiB0aGUgZGVmZWN0cyB0aGF0IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAKIGNhbiBmaW5kIHdoaWxlIHBhcnNpbmcgbWVzc2FnZXMuICBOb3RlIHRoYXQgdGhlIGRlZmVjdHMgYXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlCiB3aGVyZSB0aGUgcHJvYmxlbSB3YXMgZm91bmQsIHNvIGZvciBleGFtcGxlLCBpZiBhIG1lc3NhZ2UgbmVzdGVkIGluc2lkZSBhCiA6bWltZXR5cGU6YG11bHRpcGFydC9hbHRlcm5hdGl2ZWAgaGFkIGEgbWFsZm9ybWVkIGhlYWRlciwgdGhhdCBuZXN0ZWQgbWVzc2FnZQogb2JqZWN0IHdvdWxkIGhhdmUgYSBkZWZlY3QsIGJ1dCB0aGUgY29udGFpbmluZyBtZXNzYWdlcyB3b3VsZCBub3QuCiAKLUFsbCBkZWZlY3QgY2xhc3NlcyBhcmUgc3ViY2xhc3NlZCBmcm9tIDpjbGFzczpgZW1haWwuZXJyb3JzLk1lc3NhZ2VEZWZlY3RgLCBidXQKLXRoaXMgY2xhc3MgaXMgKm5vdCogYW4gZXhjZXB0aW9uIQorQWxsIGRlZmVjdCBjbGFzc2VzIGFyZSBzdWJjbGFzc2VkIGZyb20gOmNsYXNzOmBlbWFpbC5lcnJvcnMuTWVzc2FnZURlZmVjdGAuCiAKICogOmNsYXNzOmBOb0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3RgIC0tIEEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEgbXVsdGlwYXJ0LAogICBidXQgaGFkIG5vIDptaW1ldHlwZTpgYm91bmRhcnlgIHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmV4YW1wbGVzLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmV4YW1wbGVzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGU5YWVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0CkBAIC0wLDAgKzEsNjcgQEAKKy4uIF9lbWFpbC1leGFtcGxlczoKKworOm1vZDpgZW1haWxgOiBFeGFtcGxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIZXJlIGFyZSBhIGZldyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB0byByZWFkLCB3cml0ZSwKK2FuZCBzZW5kIHNpbXBsZSBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBtb3JlIGNvbXBsZXggTUlNRSBtZXNzYWdlcy4KKworRmlyc3QsIGxldCdzIHNlZSBob3cgdG8gY3JlYXRlIGFuZCBzZW5kIGEgc2ltcGxlIHRleHQgbWVzc2FnZSAoYm90aCB0aGUKK3RleHQgY29udGVudCBhbmQgdGhlIGFkZHJlc3NlcyBtYXkgY29udGFpbiB1bmljb2RlIGNoYXJhY3RlcnMpOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQorCisKK1BhcnNpbmcgUkZDODIyIGhlYWRlcnMgY2FuIGVhc2lseSBiZSBkb25lIGJ5IHRoZSB1c2luZyB0aGUgY2xhc3NlcworZnJvbSB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgbW9kdWxlOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCBhIE1JTUUgbWVzc2FnZSBjb250YWluaW5nIGEgYnVuY2ggb2YgZmFtaWx5CitwaWN0dXJlcyB0aGF0IG1heSBiZSByZXNpZGluZyBpbiBhIGRpcmVjdG9yeToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhbiBlbWFpbAorbWVzc2FnZTogWzFdXworCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWRpci5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byB1bnBhY2sgYSBNSU1FIG1lc3NhZ2UgbGlrZSB0aGUgb25lCithYm92ZSwgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlczoKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gY3JlYXRlIGFuIEhUTUwgbWVzc2FnZSB3aXRoIGFuIGFsdGVybmF0aXZlIHBsYWluCit0ZXh0IHZlcnNpb24uICBUbyBtYWtlIHRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLCB3ZSBpbmNsdWRlIGEgcmVsYXRlZAoraW1hZ2UgaW4gdGhlIGh0bWwgcGFydCwgYW5kIHdlIHNhdmUgYSBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQgdG8KK2Rpc2ssIGFzIHdlbGwgYXMgc2VuZGluZyBpdC4KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQorCisKK0lmIHdlIHdlcmUgc2VudCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBsYXN0IGV4YW1wbGUsIGhlcmUgaXMgb25lIHdheSB3ZSBjb3VsZAorcHJvY2VzcyBpdDoKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CisKK1VwIHRvIHRoZSBwcm9tcHQsIHRoZSBvdXRwdXQgZnJvbSB0aGUgYWJvdmUgaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyAgICBUbzogUGVuZWxvcGUgUHVzc3ljYXQgPHBlbmVsb3BlQGV4YW1wbGUuY29tPiwgRmFicmV0dGUgUHVzc3ljYXQgPGZhYnJldHRlQGV4YW1wbGUuY29tPgorICAgIEZyb206IFBlcMOpIExlIFBldyA8cGVwZUBleGFtcGxlLmNvbT4KKyAgICBTdWJqZWN0OiBBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lcgorCisgICAgU2FsdXQhCisKKyAgICBDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBUaGFua3MgdG8gTWF0dGhldyBEaXhvbiBDb3dsZXMgZm9yIHRoZSBvcmlnaW5hbCBpbnNwaXJhdGlvbiBhbmQgZXhhbXBsZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdAppbmRleCBkNTk2ZWQ4Li5hYjBmYmMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKQEAgLTgsMjEwICs4LDI0NCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1PbmUgb2YgdGhlIG1vc3QgY29tbW9uIHRhc2tzIGlzIHRvIGdlbmVyYXRlIHRoZSBmbGF0IHRleHQgb2YgdGhlIGVtYWlsIG1lc3NhZ2UKLXJlcHJlc2VudGVkIGJ5IGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlLiAgWW91IHdpbGwgbmVlZCB0byBkbyB0aGlzIGlmIHlvdSB3YW50Ci10byBzZW5kIHlvdXIgbWVzc2FnZSB2aWEgdGhlIDptb2Q6YHNtdHBsaWJgIG1vZHVsZSBvciB0aGUgOm1vZDpgbm50cGxpYmAgbW9kdWxlLAotb3IgcHJpbnQgdGhlIG1lc3NhZ2Ugb24gdGhlIGNvbnNvbGUuICBUYWtpbmcgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYW5kCi1wcm9kdWNpbmcgYSBmbGF0IHRleHQgZG9jdW1lbnQgaXMgdGhlIGpvYiBvZiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzLgorT25lIG9mIHRoZSBtb3N0IGNvbW1vbiB0YXNrcyBpcyB0byBnZW5lcmF0ZSB0aGUgZmxhdCAoc2VyaWFsaXplZCkgdmVyc2lvbiBvZgordGhlIGVtYWlsIG1lc3NhZ2UgcmVwcmVzZW50ZWQgYnkgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUuICBZb3Ugd2lsbCBuZWVkIHRvCitkbyB0aGlzIGlmIHlvdSB3YW50IHRvIHNlbmQgeW91ciBtZXNzYWdlIHZpYSA6bWV0aDpgc210cGxpYi5TTVRQLnNlbmRtYWlsYCBvcgordGhlIDptb2Q6YG5udHBsaWJgIG1vZHVsZSwgb3IgcHJpbnQgdGhlIG1lc3NhZ2Ugb24gdGhlIGNvbnNvbGUuICBUYWtpbmcgYQorbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGFuZCBwcm9kdWNpbmcgYSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIGlzIHRoZSBqb2IKK29mIHRoZSBnZW5lcmF0b3IgY2xhc3Nlcy4KIAotQWdhaW4sIGFzIHdpdGggdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLCB5b3UgYXJlbid0IGxpbWl0ZWQgdG8gdGhlCi1mdW5jdGlvbmFsaXR5IG9mIHRoZSBidW5kbGVkIGdlbmVyYXRvcjsgeW91IGNvdWxkIHdyaXRlIG9uZSBmcm9tIHNjcmF0Y2gKLXlvdXJzZWxmLiAgSG93ZXZlciB0aGUgYnVuZGxlZCBnZW5lcmF0b3Iga25vd3MgaG93IHRvIGdlbmVyYXRlIG1vc3QgZW1haWwgaW4gYQotc3RhbmRhcmRzLWNvbXBsaWFudCB3YXksIHNob3VsZCBoYW5kbGUgTUlNRSBhbmQgbm9uLU1JTUUgZW1haWwgbWVzc2FnZXMganVzdAotZmluZSwgYW5kIGlzIGRlc2lnbmVkIHNvIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZmxhdCB0ZXh0LCB0byBhIG1lc3NhZ2UKLXN0cnVjdHVyZSB2aWEgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzLCBhbmQgYmFjayB0byBmbGF0IHRleHQsCi1pcyBpZGVtcG90ZW50ICh0aGUgaW5wdXQgaXMgaWRlbnRpY2FsIHRvIHRoZSBvdXRwdXQpIFsjXV8uICBPbiB0aGUgb3RoZXIgaGFuZCwKLXVzaW5nIHRoZSBHZW5lcmF0b3Igb24gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNvbnN0cnVjdGVkIGJ5IHByb2dyYW0KLW1heSByZXN1bHQgaW4gY2hhbmdlcyB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgYXMgZGVmYXVsdHMKLWFyZSBmaWxsZWQgaW4uCitBcyB3aXRoIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwgeW91IGFyZW4ndCBsaW1pdGVkIHRvIHRoZSBmdW5jdGlvbmFsaXR5CitvZiB0aGUgYnVuZGxlZCBnZW5lcmF0b3I7IHlvdSBjb3VsZCB3cml0ZSBvbmUgZnJvbSBzY3JhdGNoIHlvdXJzZWxmLiAgSG93ZXZlcgordGhlIGJ1bmRsZWQgZ2VuZXJhdG9yIGtub3dzIGhvdyB0byBnZW5lcmF0ZSBtb3N0IGVtYWlsIGluIGEgc3RhbmRhcmRzLWNvbXBsaWFudAord2F5LCBzaG91bGQgaGFuZGxlIE1JTUUgYW5kIG5vbi1NSU1FIGVtYWlsIG1lc3NhZ2VzIGp1c3QgZmluZSwgYW5kIGlzIGRlc2lnbmVkCitzbyB0aGF0IHRoZSBieXRlcy1vcmllbnRlZCBwYXJzaW5nIGFuZCBnZW5lcmF0aW9uIG9wZXJhdGlvbnMgYXJlIGludmVyc2VzLAorYXNzdW1pbmcgdGhlIHNhbWUgbm9uLXRyYW5zZm9ybWluZyA6bW9kOmB+ZW1haWwucG9saWN5YCBpcyB1c2VkIGZvciBib3RoLiAgVGhhdAoraXMsIHBhcnNpbmcgdGhlIHNlcmlhbGl6ZWQgYnl0ZSBzdHJlYW0gdmlhIHRoZQorOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBjbGFzcyBhbmQgdGhlbiByZWdlbmVyYXRpbmcgdGhlIHNlcmlhbGl6ZWQKK2J5dGUgc3RyZWFtIHVzaW5nIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIHNob3VsZCBwcm9kdWNlIG91dHB1dCBpZGVudGljYWwgdG8KK3RoZSBpbnB1dCBbI11fLiAgKE9uIHRoZSBvdGhlciBoYW5kLCB1c2luZyB0aGUgZ2VuZXJhdG9yIG9uIGFuCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY29uc3RydWN0ZWQgYnkgcHJvZ3JhbSBtYXkgcmVzdWx0IGluCitjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0IGFzIGRlZmF1bHRzIGFyZQorZmlsbGVkIGluLikKIAotOmNsYXNzOmBieXRlc2Agb3V0cHV0IGNhbiBiZSBnZW5lcmF0ZWQgdXNpbmcgdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGNsYXNzLgotSWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBjb250YWlucyBub24tQVNDSUkgYnl0ZXMsIHRoaXMgZ2VuZXJhdG9yJ3MKLTptZXRoOmB+Qnl0ZXNHZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIHdpbGwgZW1pdCB0aGUgb3JpZ2luYWwgYnl0ZXMuICBQYXJzaW5nIGEKLWJpbmFyeSBtZXNzYWdlIGFuZCB0aGVuIGZsYXR0ZW5pbmcgaXQgd2l0aCA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBzaG91bGQgYmUKLWlkZW1wb3RlbnQgZm9yIHN0YW5kYXJkcyBjb21wbGlhbnQgbWVzc2FnZXMuCi0KLUhlcmUgYXJlIHRoZSBwdWJsaWMgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZQotOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGU6CitUaGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzIGNhbiBiZSB1c2VkIHRvIGZsYXR0ZW4gYSBtZXNzYWdlIGludG8gYSB0ZXh0IChhcworb3Bwb3NlZCB0byBiaW5hcnkpIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24sIGJ1dCBzaW5jZSBVbmljb2RlIGNhbm5vdAorcmVwcmVzZW50IGJpbmFyeSBkYXRhIGRpcmVjdGx5LCB0aGUgbWVzc2FnZSBpcyBvZiBuZWNlc3NpdHkgdHJhbnNmb3JtZWQgaW50bworc29tZXRoaW5nIHRoYXQgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLCB1c2luZyB0aGUgc3RhbmRhcmQgZW1haWwgUkZDCitDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIHRlY2huaXF1ZXMgZm9yIGVuY29kaW5nIGVtYWlsIG1lc3NhZ2VzIGZvciB0cmFuc3BvcnQKK292ZXIgY2hhbm5lbHMgdGhhdCBhcmUgbm90ICI4IGJpdCBjbGVhbiIuCiAKIAotLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsICosIHBvbGljeT1Ob25lKQotCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgdGFrZXMgYSA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAKLSAgIGNhbGxlZCAqb3V0ZnAqIGZvciBhbiBhcmd1bWVudC4gICpvdXRmcCogbXVzdCBzdXBwb3J0IHRoZSA6bWV0aDpgd3JpdGVgIG1ldGhvZAotICAgYW5kIGJlIHVzYWJsZSBhcyB0aGUgb3V0cHV0IGZpbGUgZm9yIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi0gICBPcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBhIGZsYWcgdGhhdCwgd2hlbiBgYFRydWVgYCwgcHV0cyBhIGBgPmBgIGNoYXJhY3RlciBpbgotICAgZnJvbnQgb2YgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgZXhhY3RseSBhcyBgYEZyb21gYCwgaS5lLiBgYEZyb21gYAotICAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiAgVGhpcyBpcyB0aGUgb25seSBndWFyYW50ZWVkCi0gICBwb3J0YWJsZSB3YXkgdG8gYXZvaWQgaGF2aW5nIHN1Y2ggbGluZXMgYmUgbWlzdGFrZW4gZm9yIGEgVW5peCBtYWlsYm94IGZvcm1hdAotICAgZW52ZWxvcGUgaGVhZGVyIHNlcGFyYXRvciAoc2VlIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RIIEZPUk1BVCBJUyBCQUQKLSAgIDxodHRwczovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfIGZvciBkZXRhaWxzKS4gICptYW5nbGVfZnJvbV8qCi0gICBkZWZhdWx0cyB0byBgYFRydWVgYCwgYnV0IHlvdSBtaWdodCB3YW50IHRvIHNldCB0aGlzIHRvIGBgRmFsc2VgYCBpZiB5b3UgYXJlIG5vdAotICAgd3JpdGluZyBVbml4IG1haWxib3ggZm9ybWF0IGZpbGVzLgotCi0gICBPcHRpb25hbCAqbWF4aGVhZGVybGVuKiBzcGVjaWZpZXMgdGhlIGxvbmdlc3QgbGVuZ3RoIGZvciBhIG5vbi1jb250aW51ZWQgaGVhZGVyLgotICAgV2hlbiBhIGhlYWRlciBsaW5lIGlzIGxvbmdlciB0aGFuICptYXhoZWFkZXJsZW4qIChpbiBjaGFyYWN0ZXJzLCB3aXRoIHRhYnMKLSAgIGV4cGFuZGVkIHRvIDggc3BhY2VzKSwgdGhlIGhlYWRlciB3aWxsIGJlIHNwbGl0IGFzIGRlZmluZWQgaW4gdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBjbGFzcy4gIFNldCB0byB6ZXJvIHRvIGRpc2FibGUgaGVhZGVyIHdyYXBwaW5nLgotICAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKSBieSA6cmZjOmAyODIyYC4KLQotICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQotICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIElmIG5vICpwb2xpY3kqIGlzIHNwZWNpZmllZCwKLSAgIHRoZW4gdGhlICpwb2xpY3kqIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlIG9iamVjdCBwYXNzZWQgdG8gOmF0dHI6YGZsYXR0ZW5gCi0gICBpcyB1c2VkLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YEdlbmVyYXRvcmAgbWV0aG9kcyBhcmU6Ci0KLQotICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCi0KLSAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkIGF0Ci0gICAgICAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZQotICAgICAgd2FzIGNyZWF0ZWQuICBTdWJwYXJ0cyBhcmUgdmlzaXRlZCBkZXB0aC1maXJzdCBhbmQgdGhlIHJlc3VsdGluZyB0ZXh0IHdpbGwKLSAgICAgIGJlIHByb3Blcmx5IE1JTUUgZW5jb2RlZC4KLQotICAgICAgT3B0aW9uYWwgKnVuaXhmcm9tKiBpcyBhIGZsYWcgdGhhdCBmb3JjZXMgdGhlIHByaW50aW5nIG9mIHRoZSBlbnZlbG9wZQotICAgICAgaGVhZGVyIGRlbGltaXRlciBiZWZvcmUgdGhlIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgcm9vdCBtZXNzYWdlCi0gICAgICBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzIG5vIGVudmVsb3BlIGhlYWRlciwgYSBzdGFuZGFyZCBvbmUgaXMKLSAgICAgIGNyYWZ0ZWQuICBCeSBkZWZhdWx0LCB0aGlzIGlzIHNldCB0byBgYEZhbHNlYGAgdG8gaW5oaWJpdCB0aGUgcHJpbnRpbmcgb2YKLSAgICAgIHRoZSBlbnZlbG9wZSBkZWxpbWl0ZXIuCi0KLSAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCi0KLSAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIElmIHNwZWNpZmllZCBpdCBvdmVycmlkZXMgdGhlIHZhbHVlCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlICptc2cqXCdzIG9yIGBgR2VuZXJhdG9yYGBcJ3MgYGBwb2xpY3lgYC4KLQotICAgICAgQmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgbm9uLUFTQ0lJIGJ5dGVzLCBpZiB0aGUgcG9saWN5IHRoYXQKLSAgICAgIGFwcGxpZXMgd2hlbiBgYGZsYXR0ZW5gYCBpcyBydW4gaGFzIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKLSAgICAgIHNldCB0byBgYDhiaXRgYCwgYGBHZW5lcmF0b3JgYCB3aWxsIG9wZXJhdGUgYXMgaWYgaXQgd2VyZSBzZXQgdG8KLSAgICAgIGBgN2JpdGBgLiAgVGhpcyBtZWFucyB0aGF0IG1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZQotICAgICAgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYGA4Yml0YGAgd2lsbCBiZSBjb252ZXJ0ZWQKLSAgICAgIHRvIGEgdXNlIGEgYGA3Yml0YGAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZy4gIE5vbi1BU0NJSSBieXRlcyBpbiB0aGUKLSAgICAgIGhlYWRlcnMgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkIHdpdGggYSBjaGFyc2V0IG9mIGBgdW5rbm93bi04Yml0YGAuCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciByZS1lbmNvZGluZyBgYDhiaXRgYCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZQotICAgICAgICAgKmxpbmVzZXAqIGFyZ3VtZW50LgotCi0gICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKLQotICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGggdGhlCi0gICAgICBleGFjdCBzYW1lIG9wdGlvbnMuCi0KLSAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCi0KLSAgICAgIFdyaXRlIHRoZSBzdHJpbmcgKnMqIHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LCBpLmUuICpvdXRmcCogcGFzc2VkIHRvCi0gICAgICA6Y2xhc3M6YEdlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4gIFRoaXMgcHJvdmlkZXMganVzdCBlbm91Z2ggZmlsZS1saWtlIEFQSQotICAgICAgZm9yIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZXMgdG8gYmUgdXNlZCBpbiB0aGUgOmZ1bmM6YHByaW50YCBmdW5jdGlvbi4KLQotQXMgYSBjb252ZW5pZW5jZSwgc2VlIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG1ldGhvZHMKLTptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AgYW5kIGBgc3RyKGFNZXNzYWdlKWBgLCBhLmsuYS4KLTptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLl9fc3RyX19gLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZiBhCi1mb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWVzc2FnZSBvYmplY3QuICBGb3IgbW9yZSBkZXRhaWwsIHNlZQotOm1vZDpgZW1haWwubWVzc2FnZWAuCi0KLS4uIGNsYXNzOjogQnl0ZXNHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsICosIFwKKy4uIGNsYXNzOjogQnl0ZXNHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSkKIAotICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgY2xhc3MgdGFrZXMgYSBiaW5hcnkKLSAgIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCBjYWxsZWQgKm91dGZwKiBmb3IgYW4gYXJndW1lbnQuICAqb3V0ZnAqIG11c3QKLSAgIHN1cHBvcnQgYSA6bWV0aDpgd3JpdGVgIG1ldGhvZCB0aGF0IGFjY2VwdHMgYmluYXJ5IGRhdGEuCisgICBSZXR1cm4gYSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBvYmplY3QgdGhhdCB3aWxsIHdyaXRlIGFueSBtZXNzYWdlIHByb3ZpZGVkCisgICB0byB0aGUgOm1ldGg6YGZsYXR0ZW5gIG1ldGhvZCwgb3IgYW55IHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGVkIHRleHQgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgd3JpdGVgIG1ldGhvZCwgdG8gdGhlIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCAqb3V0ZnAqLgorICAgKm91dGZwKiBtdXN0IHN1cHBvcnQgYSBgYHdyaXRlYGAgbWV0aG9kIHRoYXQgYWNjZXB0cyBiaW5hcnkgZGF0YS4KIAotICAgT3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYSBmbGFnIHRoYXQsIHdoZW4gYGBUcnVlYGAsIHB1dHMgYSBgYD5gYAotICAgY2hhcmFjdGVyIGluIGZyb250IG9mIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIGV4YWN0bHkgYXMgYGBGcm9tYGAsCi0gICBpLmUuIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4gIFRoaXMgaXMgdGhlCi0gICBvbmx5IGd1YXJhbnRlZWQgcG9ydGFibGUgd2F5IHRvIGF2b2lkIGhhdmluZyBzdWNoIGxpbmVzIGJlIG1pc3Rha2VuIGZvciBhCi0gICBVbml4IG1haWxib3ggZm9ybWF0IGVudmVsb3BlIGhlYWRlciBzZXBhcmF0b3IgKHNlZSBgV0hZIFRIRSBDT05URU5ULUxFTkdUSAotICAgRk9STUFUIElTIEJBRCA8aHR0cHM6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXyBmb3IgZGV0YWlscykuCi0gICAqbWFuZ2xlX2Zyb21fKiBkZWZhdWx0cyB0byBgYFRydWVgYCwgYnV0IHlvdSBtaWdodCB3YW50IHRvIHNldCB0aGlzIHRvCi0gICBgYEZhbHNlYGAgaWYgeW91IGFyZSBub3Qgd3JpdGluZyBVbml4IG1haWxib3ggZm9ybWF0IGZpbGVzLgorICAgSWYgb3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYGBUcnVlYGAsIHB1dCBhIGBgPmBgIGNoYXJhY3RlciBpbiBmcm9udCBvZgorICAgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZXhhY3Qgc3RyaW5nIGBgIkZyb20gImBgLCB0aGF0IGlzCisgICBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLiAgKm1hbmdsZV9mcm9tXyoKKyAgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1hbmdsZV9mcm9tX2AKKyAgIHNldHRpbmcgb2YgdGhlICpwb2xpY3kqICh3aGljaCBpcyBgYFRydWVgYCBmb3IgdGhlCisgICA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlcnMpLgorICAgKm1hbmdsZV9mcm9tXyogaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdW5peCBtYm94CisgICBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCBhbmQgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAorICAgPGh0dHA6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXykuCiAKLSAgIE9wdGlvbmFsICptYXhoZWFkZXJsZW4qIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZAotICAgaGVhZGVyLiAgV2hlbiBhIGhlYWRlciBsaW5lIGlzIGxvbmdlciB0aGFuICptYXhoZWFkZXJsZW4qIChpbiBjaGFyYWN0ZXJzLAotICAgd2l0aCB0YWJzIGV4cGFuZGVkIHRvIDggc3BhY2VzKSwgdGhlIGhlYWRlciB3aWxsIGJlIHNwbGl0IGFzIGRlZmluZWQgaW4gdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBjbGFzcy4gIFNldCB0byB6ZXJvIHRvIGRpc2FibGUgaGVhZGVyCi0gICB3cmFwcGluZy4gIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkgYnkKLSAgIDpyZmM6YDI4MjJgLgorICAgSWYgKm1heGhlYWRlcmxlbiogaXMgbm90IGBgTm9uZWBgLCByZWZvbGQgYW55IGhlYWRlciBsaW5lcyB0aGF0IGFyZSBsb25nZXIKKyAgIHRoYW4gKm1heGhlYWRlcmxlbiosIG9yIGlmIGBgMGBgLCBkbyBub3QgcmV3cmFwIGFueSBoZWFkZXJzLiAgSWYKKyAgICptYW5oZWFkZXJsZW4qIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHdyYXAgaGVhZGVycyBhbmQgb3RoZXIgbWVzc2FnZQorICAgbGluZXMgYWNjb3JkaW5nIHRvIHRoZSAqcG9saWN5KiBzZXR0aW5ncy4KIAorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkLCB1c2UgdGhhdCBwb2xpY3kgdG8gY29udHJvbCBtZXNzYWdlIGdlbmVyYXRpb24uICBJZgorICAgKnBvbGljeSogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdXNlIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKKyAgIG9iamVjdCBwYXNzZWQgdG8gYGBmbGF0dGVuYGAgdG8gY29udHJvbCB0aGUgbWVzc2FnZSBnZW5lcmF0aW9uLiAgU2VlCisgICA6bW9kOmBlbWFpbC5wb2xpY3lgIGZvciBkZXRhaWxzIG9uIHdoYXQgKnBvbGljeSogY29udHJvbHMuCiAKLSAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKLSAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBJZiBubyAqcG9saWN5KiBpcyBzcGVjaWZpZWQsCi0gICB0aGVuIHRoZSAqcG9saWN5KiBhdHRhY2hlZCB0byB0aGUgbWVzc2FnZSBvYmplY3QgcGFzc2VkIHRvIDphdHRyOmBmbGF0dGVuYAotICAgaXMgdXNlZC4KKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAotICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSAqbWFuZ2xlX2Zyb21fKgorICAgICAgYW5kICptYXhoZWFkZXJsZW4qIHBhcmFtZXRlcnMgaXMgdG8gZm9sbG93IHRoZSBwb2xpY3kuCiAKIAogICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCiAKICAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkCiAgICAgICBhdCAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgCi0gICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0IHdpbGwgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLiAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbgotICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBpcyBgYDhiaXRgYCAodGhlIGRlZmF1bHQpLAotICAgICAgdGhlbiBhbnkgYnl0ZXMgd2l0aCB0aGUgaGlnaCBiaXQgc2V0IGluIHRoZSBvcmlnaW5hbCBwYXJzZWQgbWVzc2FnZSB0aGF0Ci0gICAgICBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkIHdpbGwgYmUgY29waWVkIGZhaXRoZnVsbHkgdG8gdGhlIG91dHB1dC4gIElmCi0gICAgICBgYGN0ZV90eXBlYGAgaXMgYGA3Yml0YGAsIHRoZSBieXRlcyB3aWxsIGJlIGNvbnZlcnRlZCBhcyBuZWVkZWQKLSAgICAgIHVzaW5nIGFuIEFTQ0lJLWNvbXBhdGlibGUgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZy4gIEluIHBhcnRpY3VsYXIsCi0gICAgICBSRkMtaW52YWxpZCBub24tQVNDSUkgYnl0ZXMgaW4gaGVhZGVycyB3aWxsIGJlIGVuY29kZWQgdXNpbmcgdGhlIE1JTUUKLSAgICAgIGBgdW5rbm93bi04Yml0YGAgY2hhcmFjdGVyIHNldCwgdGh1cyByZW5kZXJpbmcgdGhlbSBSRkMtY29tcGxpYW50LgorICAgICAgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuCiAKLSAgICAgIC4uIFhYWDogVGhlcmUgc2hvdWxkIGJlIGEgY29tcGxlbWVudGFyeSBvcHRpb24gdGhhdCBqdXN0IGRvZXMgdGhlIFJGQwotICAgICAgICAgY29tcGxpYW5jZSB0cmFuc2Zvcm1hdGlvbiBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgorICAgICAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBpcyBgYDhiaXRgYCAodGhlIGRlZmF1bHQpLCBjb3B5IGFueSBoZWFkZXJzIGluIHRoZSBvcmlnaW5hbCBwYXJzZWQKKyAgICAgIG1lc3NhZ2UgdGhhdCBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkIHRvIHRoZSBvdXRwdXQgd2l0aCBhbnkgYnl0ZXMgd2l0aCB0aGUKKyAgICAgIGhpZ2ggYml0IHNldCByZXByb2R1Y2VkIGFzIGluIHRoZSBvcmlnaW5hbCwgYW5kIHByZXNlcnZlIHRoZSBub24tQVNDSUkKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiBhbnkgYm9keSBwYXJ0cyB0aGF0IGhhdmUgdGhlbS4KKyAgICAgIElmIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgY29udmVydCB0aGUgYnl0ZXMgd2l0aCB0aGUgaGlnaCBiaXQgc2V0IGFzCisgICAgICBuZWVkZWQgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuCisgICAgICBUaGF0IGlzLCB0cmFuc2Zvcm0gcGFydHMgd2l0aCBub24tQVNDSUkKKyAgICAgIDptYWlsaGVhZGVyOmBDb3RuZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0YCkgdG8gYW4gQVNDSUkgY29tcGF0aWJpbGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCwgYW5kIGVuY29kZSBSRkMtaW52YWxpZCBub24tQVNDSUkKKyAgICAgIGJ5dGVzIGluIGhlYWRlcnMgdXNpbmcgdGhlIE1JTUUgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzCisgICAgICByZW5kZXJpbmcgdGhlbSBSRkMtY29tcGxpYW50LgogCi0gICAgICBNZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUgYQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQgd2lsbCBiZSByZWNvbnN0cnVjdGVkCi0gICAgICBhcyA4Yml0IGlmIHRoZXkgaGF2ZSBub3QgYmVlbiBtb2RpZmllZC4KKyAgICAgIC4uIFhYWDogVGhlcmUgc2hvdWxkIGJlIGFuIG9wdGlvbiB0aGF0IGp1c3QgZG9lcyB0aGUgUkZDCisgICAgICAgICBjb21wbGlhbmNlIHRyYW5zZm9ybWF0aW9uIG9uIGhlYWRlcnMgYnV0IGxlYXZlcyBDVEUgOGJpdCBwYXJ0cyBhbG9uZS4KIAotICAgICAgT3B0aW9uYWwgKnVuaXhmcm9tKiBpcyBhIGZsYWcgdGhhdCBmb3JjZXMgdGhlIHByaW50aW5nIG9mIHRoZSBlbnZlbG9wZQotICAgICAgaGVhZGVyIGRlbGltaXRlciBiZWZvcmUgdGhlIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgcm9vdCBtZXNzYWdlCi0gICAgICBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzIG5vIGVudmVsb3BlIGhlYWRlciwgYSBzdGFuZGFyZCBvbmUgaXMKLSAgICAgIGNyYWZ0ZWQuICBCeSBkZWZhdWx0LCB0aGlzIGlzIHNldCB0byBgYEZhbHNlYGAgdG8gaW5oaWJpdCB0aGUgcHJpbnRpbmcgb2YKLSAgICAgIHRoZSBlbnZlbG9wZSBkZWxpbWl0ZXIuCi0KKyAgICAgIElmICp1bml4ZnJvbSogaXMgYGBUcnVlYGAsIHByaW50IHRoZSBlbnZlbG9wZSBoZWFkZXIgZGVsaW1pdGVyIHVzZWQgYnkKKyAgICAgIHRoZSBVbml4IG1haWxib3ggZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGApIGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhlCisgICAgICA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcworICAgICAgbm8gZW52ZWxvcGUgaGVhZGVyLCBjcmFmdCBhIHN0YW5kYXJkIG9uZS4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KICAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCiAKLSAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIElmIHNwZWNpZmllZCBpdCBvdmVycmlkZXMgdGhlIHZhbHVlCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlIGBgR2VuZXJhdG9yYGBcIG9yICptc2cqXCAncyBgYHBvbGljeWBgLgorICAgICAgSWYgKmxpbmVzZXAqIGlzIG5vdCBgYE5vbmVgYCwgdXNlIGl0IGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyIGJldHdlZW4KKyAgICAgIGFsbCB0aGUgbGluZXMgb2YgdGhlIGZsYXR0ZW5lZCBtZXNzYWdlLiAgSWYgKmxpbmVzZXAqIGlzIGBgTm9uZWBgICh0aGUKKyAgICAgIGRlZmF1bHQpLCB1c2UgdGhlIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgKnBvbGljeSouCisKKyAgICAgIC4uIFhYWDogZmxhdHRlbiBzaG91bGQgdGFrZSBhICpwb2xpY3kqIGtleXdvcmQuCisKIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKICAgICAgIFJldHVybiBhbiBpbmRlcGVuZGVudCBjbG9uZSBvZiB0aGlzIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGgKLSAgICAgIHRoZSBleGFjdCBzYW1lIG9wdGlvbnMuCisgICAgICB0aGUgZXhhY3Qgc2FtZSBvcHRpb24gc2V0dGluZ3MsIGFuZCAqZnAqIGFzIHRoZSBuZXcgKm91dGZwKi4KKwogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShzKQogCi0gICAgICBXcml0ZSB0aGUgc3RyaW5nICpzKiB0byB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdC4gICpzKiBpcyBlbmNvZGVkIHVzaW5nCi0gICAgICB0aGUgYGBBU0NJSWBgIGNvZGVjIGFuZCB3cml0dGVuIHRvIHRoZSAqd3JpdGUqIG1ldGhvZCBvZiB0aGUgICpvdXRmcCoKLSAgICAgICpvdXRmcCogcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcwotICAgICAgcHJvdmlkZXMganVzdCBlbm91Z2ggZmlsZS1saWtlIEFQSSBmb3IgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2VzCi0gICAgICB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQotVGhlIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIGFsc28gcHJvdmlkZXMgYSBkZXJpdmVkIGNsYXNzLCBjYWxsZWQKLTpjbGFzczpgRGVjb2RlZEdlbmVyYXRvcmAgd2hpY2ggaXMgbGlrZSB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MsCi1leGNlcHQgdGhhdCBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnRzIGFyZSBzdWJzdGl0dXRlZCB3aXRoIGEgZm9ybWF0IHN0cmluZwotcmVwcmVzZW50aW5nIHRoZSBwYXJ0LgorICAgICAgRW5jb2RlICpzKiB1c2luZyB0aGUgYGBBU0NJSWBgIGNvZGVjIGFuZCB0aGUgYGBzdXJyb2dhdGVlc2NhcGVgYCBlcnJvcgorICAgICAgaGFuZGxlciwgYW5kIHBhc3MgaXQgdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAqb3V0ZnAqIHBhc3NlZCB0byB0aGUKKyAgICAgIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuCiAKIAotLi4gY2xhc3M6OiBEZWNvZGVkR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCBmbXQ9Tm9uZSkKK0FzIGEgY29udmVuaWVuY2UsIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBwcm92aWRlcyB0aGUgbWV0aG9kcworOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5hc19ieXRlc2AgYW5kIGBgYnl0ZXMoYU1lc3NhZ2UpYGAgKGEuay5hLgorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5fX2J5dGVzX19gKSwgd2hpY2ggc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YKK2Egc2VyaWFsaXplZCBiaW5hcnkgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCis6bW9kOmBlbWFpbC5tZXNzYWdlYC4KIAotICAgVGhpcyBjbGFzcywgZGVyaXZlZCBmcm9tIDpjbGFzczpgR2VuZXJhdG9yYCB3YWxrcyB0aHJvdWdoIGFsbCB0aGUgc3VicGFydHMgb2YgYQotICAgbWVzc2FnZS4gIElmIHRoZSBzdWJwYXJ0IGlzIG9mIG1haW4gdHlwZSA6bWltZXR5cGU6YHRleHRgLCB0aGVuIGl0IHByaW50cyB0aGUKLSAgIGRlY29kZWQgcGF5bG9hZCBvZiB0aGUgc3VicGFydC4gT3B0aW9uYWwgKl9tYW5nbGVfZnJvbV8qIGFuZCAqbWF4aGVhZGVybGVuKiBhcmUKLSAgIGFzIHdpdGggdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLgogCi0gICBJZiB0aGUgc3VicGFydCBpcyBub3Qgb2YgbWFpbiB0eXBlIDptaW1ldHlwZTpgdGV4dGAsIG9wdGlvbmFsICpmbXQqIGlzIGEgZm9ybWF0Ci0gICBzdHJpbmcgdGhhdCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG1lc3NhZ2UgcGF5bG9hZC4gKmZtdCogaXMgZXhwYW5kZWQgd2l0aCB0aGUKLSAgIGZvbGxvd2luZyBrZXl3b3JkcywgYGAlKGtleXdvcmQpc2BgIGZvcm1hdDoKK0JlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IGJpbmFyeSBkYXRhLCB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzIG11c3QKK2NvbnZlcnQgYW55IGJpbmFyeSBkYXRhIGluIGFueSBtZXNzYWdlIGl0IGZsYXR0ZW5zIHRvIGFuIEFTQ0lJIGNvbXBhdGlibGUKK2Zvcm1hdCwgYnkgY29udmVydGluZyB0aGVtIHRvIGFuIEFTQ0lJIGNvbXBhdGlibGUKKzptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyX0VuY29kaW5nYC4gIFVzaW5nIHRoZSB0ZXJtaW5vbG9neSBvZiB0aGUgZW1haWwKK1JGQ3MsIHlvdSBjYW4gdGhpbmsgb2YgdGhpcyBhcyA6Y2xhc3M6YEdlbmVyYXRvcmAgc2VyaWFsaXppbmcgdG8gYW4gSS9PIHN0cmVhbQordGhhdCBpcyBub3QgIjggYml0IGNsZWFuIi4gIEluIG90aGVyIHdvcmRzLCBtb3N0IGFwcGxpY2F0aW9ucyB3aWxsIHdhbnQKK3RvIGJlIHVzaW5nIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgLCBhbmQgbm90IDpjbGFzczpgR2VuZXJhdG9yYC4KKworLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpCisKKyAgIFJldHVybiBhIDpjbGFzczpgR2VuZXJhdG9yYCBvYmplY3QgdGhhdCB3aWxsIHdyaXRlIGFueSBtZXNzYWdlIHByb3ZpZGVkCisgICB0byB0aGUgOm1ldGg6YGZsYXR0ZW5gIG1ldGhvZCwgb3IgYW55IHRleHQgcHJvdmlkZWQgdG8gdGhlIDptZXRoOmB3cml0ZWAKKyAgIG1ldGhvZCwgdG8gdGhlIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YCAqb3V0ZnAqLiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgYQorICAgYGB3cml0ZWBgIG1ldGhvZCB0aGF0IGFjY2VwdHMgc3RyaW5nIGRhdGEuCisKKyAgIElmIG9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGBgVHJ1ZWBgLCBwdXQgYSBgYD5gYCBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YKKyAgIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGV4YWN0IHN0cmluZyBgYCJGcm9tICJgYCwgdGhhdCBpcworICAgYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZS4gICptYW5nbGVfZnJvbV8qCisgICBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tYW5nbGVfZnJvbV9gCisgICBzZXR0aW5nIG9mIHRoZSAqcG9saWN5KiAod2hpY2ggaXMgYGBUcnVlYGAgZm9yIHRoZQorICAgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSBhbmQgYGBGYWxzZWBgIGZvciBhbGwgb3RoZXJzKS4KKyAgICptYW5nbGVfZnJvbV8qIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHVuaXggbWJveAorICAgZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGAgYW5kIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RIIEZPUk1BVCBJUyBCQUQKKyAgIDxodHRwOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8pLgorCisgICBJZiAqbWF4aGVhZGVybGVuKiBpcyBub3QgYGBOb25lYGAsIHJlZm9sZCBhbnkgaGVhZGVyIGxpbmVzIHRoYXQgYXJlIGxvbmdlcgorICAgdGhhbiAqbWF4aGVhZGVybGVuKiwgb3IgaWYgYGAwYGAsIGRvIG5vdCByZXdyYXAgYW55IGhlYWRlcnMuICBJZgorICAgKm1hbmhlYWRlcmxlbiogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgd3JhcCBoZWFkZXJzIGFuZCBvdGhlciBtZXNzYWdlCisgICBsaW5lcyBhY2NvcmRpbmcgdG8gdGhlICpwb2xpY3kqIHNldHRpbmdzLgorCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHBvbGljeSB0byBjb250cm9sIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIElmCisgICAqcG9saWN5KiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB1c2UgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgb2JqZWN0IHBhc3NlZCB0byBgYGZsYXR0ZW5gYCB0byBjb250cm9sIHRoZSBtZXNzYWdlIGdlbmVyYXRpb24uICBTZWUKKyAgIDptb2Q6YGVtYWlsLnBvbGljeWAgZm9yIGRldGFpbHMgb24gd2hhdCAqcG9saWN5KiBjb250cm9scy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSAqbWFuZ2xlX2Zyb21fKgorICAgICAgYW5kICptYXhoZWFkZXJsZW4qIHBhcmFtZXRlcnMgaXMgdG8gZm9sbG93IHRoZSBwb2xpY3kuCisKKworICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCisKKyAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkCisgICAgICBhdCAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgR2VuZXJhdG9yYAorICAgICAgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuCisKKyAgICAgIElmIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBvcHRpb24gOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAorICAgICAgaXMgYGA4Yml0YGAsIGdlbmVyYXRlIHRoZSBtZXNzYWdlIGFzIGlmIHRoZSBvcHRpb24gd2VyZSBzZXQgdG8gYGA3Yml0YGAuCisgICAgICAoVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBub24tQVNDSUkgYnl0ZXMuKQorICAgICAgQ29udmVydCBhbnkgYnl0ZXMgd2l0aCB0aGUgaGlnaCBiaXQgc2V0IGFzIG5lZWRlZCB1c2luZyBhbgorICAgICAgQVNDSUktY29tcGF0aWJsZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBUaGF0IGlzLAorICAgICAgdHJhbnNmb3JtIHBhcnRzIHdpdGggbm9uLUFTQ0lJIDptYWlsaGVhZGVyOmBDb3RuZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0YCkgdG8gYW4gQVNDSUkgY29tcGF0aWJpbGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCwgYW5kIGVuY29kZSBSRkMtaW52YWxpZCBub24tQVNDSUkKKyAgICAgIGJ5dGVzIGluIGhlYWRlcnMgdXNpbmcgdGhlIE1JTUUgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzCisgICAgICByZW5kZXJpbmcgdGhlbSBSRkMtY29tcGxpYW50LgorCisgICAgICBJZiAqdW5peGZyb20qIGlzIGBgVHJ1ZWBgLCBwcmludCB0aGUgZW52ZWxvcGUgaGVhZGVyIGRlbGltaXRlciB1c2VkIGJ5CisgICAgICB0aGUgVW5peCBtYWlsYm94IGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgKSBiZWZvcmUgdGhlIGZpcnN0IG9mIHRoZQorICAgICAgOnJmYzpgNTMyMmAgaGVhZGVycyBvZiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMKKyAgICAgIG5vIGVudmVsb3BlIGhlYWRlciwgY3JhZnQgYSBzdGFuZGFyZCBvbmUuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgorCisgICAgICBJZiAqbGluZXNlcCogaXMgbm90IGBgTm9uZWBgLCB1c2UgaXQgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIgYmV0d2VlbgorICAgICAgYWxsIHRoZSBsaW5lcyBvZiB0aGUgZmxhdHRlbmVkIG1lc3NhZ2UuICBJZiAqbGluZXNlcCogaXMgYGBOb25lYGAgKHRoZQorICAgICAgZGVmYXVsdCksIHVzZSB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSAqcG9saWN5Ki4KKworICAgICAgLi4gWFhYOiBmbGF0dGVuIHNob3VsZCB0YWtlIGEgKnBvbGljeSoga2V5d29yZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlLWVuY29kaW5nIGBgOGJpdGBgIG1lc3NhZ2UgYm9kaWVzLCBhbmQgdGhlCisgICAgICAgICAqbGluZXNlcCogYXJndW1lbnQuCisKKworICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCisKKyAgICAgIFJldHVybiBhbiBpbmRlcGVuZGVudCBjbG9uZSBvZiB0aGlzIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZSB3aXRoIHRoZQorICAgICAgZXhhY3Qgc2FtZSBvcHRpb25zLCBhbmQgKmZwKiBhcyB0aGUgbmV3ICpvdXRmcCouCisKKworICAgLi4gbWV0aG9kOjogd3JpdGUocykKKworICAgICAgV3JpdGUgKnMqIHRvIHRoZSAqd3JpdGUqIG1ldGhvZCBvZiB0aGUgKm91dGZwKiBwYXNzZWQgdG8gdGhlCisgICAgICA6Y2xhc3M6YEdlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4gIFRoaXMgcHJvdmlkZXMganVzdCBlbm91Z2ggZmlsZS1saWtlCisgICAgICBBUEkgZm9yIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZXMgdG8gYmUgdXNlZCBpbiB0aGUgOmZ1bmM6YHByaW50YAorICAgICAgZnVuY3Rpb24uCisKKworQXMgYSBjb252ZW5pZW5jZSwgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBtZXRob2RzCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmFzX3N0cmluZ2AgYW5kIGBgc3RyKGFNZXNzYWdlKWBgIChhLmsuYS4KKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuX19zdHJfX2ApLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorYSBmb3JtYXR0ZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgbWVzc2FnZSBvYmplY3QuICBGb3IgbW9yZSBkZXRhaWwsIHNlZQorOm1vZDpgZW1haWwubWVzc2FnZWAuCisKKworVGhlIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIGFsc28gcHJvdmlkZXMgYSBkZXJpdmVkIGNsYXNzLAorOmNsYXNzOmBEZWNvZGVkR2VuZXJhdG9yYCwgd2hpY2ggaXMgbGlrZSB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MsCitleGNlcHQgdGhhdCBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnRzIGFyZSBub3Qgc2VyaWFsaXplZCwgYnV0IGFyZSBpbnN0ZWFkCityZXByZXNlbnRlZCBpbiB0aGUgb3V0cHV0IHN0cmVhbSBieSBhIHN0cmluZyBkZXJpdmVkIGZyb20gYSB0ZW1wbGF0ZSBmaWxsZWQKK2luIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIHBhcnQuCisKKy4uIGNsYXNzOjogRGVjb2RlZEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10PU5vbmUsICosIHBvbGljeT1Ob25lKQorCisgICBBY3QgbGlrZSA6Y2xhc3M6YEdlbmVyYXRvcmAsIGV4Y2VwdCB0aGF0IGZvciBhbnkgc3VicGFydCBvZiB0aGUgbWVzc2FnZQorICAgcGFzc2VkIHRvIDptZXRoOmBHZW5lcmF0b3IuZmxhdHRlbmAsIGlmIHRoZSBzdWJwYXJ0IGlzIG9mIG1haW4gdHlwZQorICAgOm1pbWV0eXBlOmB0ZXh0YCwgcHJpbnQgdGhlIGRlY29kZWQgcGF5bG9hZCBvZiB0aGUgc3VicGFydCwgYW5kIGlmIHRoZSBtYWluCisgICB0eXBlIGlzIG5vdCA6bWltZXR5cGU6YHRleHRgLCBpbnN0ZWFkIG9mIHByaW50aW5nIGl0IGZpbGwgaW4gdGhlIHN0cmluZworICAgKmZtdCogdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFydCBhbmQgcHJpbnQgdGhlIHJlc3VsdGluZworICAgZmlsbGVkLWluIHN0cmluZy4KKworICAgVG8gZmlsbCBpbiAqZm10KiwgZXhlY3V0ZSBgYGZtdCAlIHBhcnRfaW5mb2BgLCB3aGVyZSBgYHBhcnRfaW5mb2BgCisgICBpcyBhIGRpY3Rpb25hcnkgY29tcG9zZWQgb2YgdGhlIGZvbGxvd2luZyBrZXlzIGFuZCB2YWx1ZXM6CiAKICAgICogYGB0eXBlYGAgLS0gRnVsbCBNSU1FIHR5cGUgb2YgdGhlIG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydAogCkBAIC0yMjUsMTUgKzI1OSwyMSBAQAogCiAgICAqIGBgZW5jb2RpbmdgYCAtLSBDb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIG9mIHRoZSBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnQKIAotICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yICpmbXQqIGlzIGBgTm9uZWBgLCBtZWFuaW5nIDo6CisgICBJZiAqZm10KiBpcyBgYE5vbmVgYCwgdXNlIHRoZSBmb2xsb3dpbmcgZGVmYXVsdCAqZm10KjoKIAotICAgICAgW05vbi10ZXh0ICglKHR5cGUpcykgcGFydCBvZiBtZXNzYWdlIG9taXR0ZWQsIGZpbGVuYW1lICUoZmlsZW5hbWUpc10KKyAgICAgICJbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXSIKKworICAgT3B0aW9uYWwgKl9tYW5nbGVfZnJvbV8qIGFuZCAqbWF4aGVhZGVybGVuKiBhcmUgYXMgd2l0aCB0aGUKKyAgIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLgogCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gVGhpcyBzdGF0ZW1lbnQgYXNzdW1lcyB0aGF0IHlvdSB1c2UgdGhlIGFwcHJvcHJpYXRlIHNldHRpbmcgZm9yIHRoZQotICAgICAgIGBgdW5peGZyb21gYCBhcmd1bWVudCwgYW5kIHRoYXQgeW91IHNldCBtYXhoZWFkZXJsZW49MCAod2hpY2ggd2lsbAotICAgICAgIHByZXNlcnZlIHdoYXRldmVyIHRoZSBpbnB1dCBsaW5lIGxlbmd0aHMgd2VyZSkuICBJdCBpcyBhbHNvIG5vdCBzdHJpY3RseQotICAgICAgIHRydWUsIHNpbmNlIGluIG1hbnkgY2FzZXMgcnVucyBvZiB3aGl0ZXNwYWNlIGluIGhlYWRlcnMgYXJlIGNvbGxhcHNlZAotICAgICAgIGludG8gc2luZ2xlIGJsYW5rcy4gIFRoZSBsYXR0ZXIgaXMgYSBidWcgdGhhdCB3aWxsIGV2ZW50dWFsbHkgYmUgZml4ZWQuCisuLiBbI10gVGhpcyBzdGF0ZW1lbnQgYXNzdW1lcyB0aGF0IHlvdSB1c2UgdGhlIGFwcHJvcHJpYXRlIHNldHRpbmcgZm9yCisgICAgICAgYGB1bml4ZnJvbWBgLCBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gOm1vZDpgcG9saWN5YCBzZXR0aW5ncyBjYWxsaW5nIGZvcgorICAgICAgIGF1dG9tYXRpYyBhZGp1c3RtZW50cyAoZm9yIGV4YW1wbGUsCisgICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LnJlZm9sZF9zb3VyY2VgIG11c3QgYmUgYGBub25lYGAsIHdoaWNoIGlzCisgICAgICAgKm5vdCogdGhlIGRlZmF1bHQpLiAgSXQgaXMgYWxzbyBub3QgMTAwJSB0cnVlLCBzaW5jZSBpZiB0aGUgbWVzc2FnZQorICAgICAgIGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIFJGQyBzdGFuZGFyZHMgb2NjYXNpb25hbGx5IGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgICAgIGV4YWN0IG9yaWdpbmFsIHRleHQgaXMgbG9zdCBkdXJpbmcgcGFyc2luZyBlcnJvciByZWNvdmVyeS4gIEl0IGlzIGEgZ29hbAorICAgICAgIHRvIGZpeCB0aGVzZSBsYXR0ZXIgZWRnZSBjYXNlcyB3aGVuIHBvc3NpYmxlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKaW5kZXggZTk0ODM3Yy4uMDcxNTJjMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CkBAIC04LDYgKzgsMTQgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZSBjdXJyZW50IEFQSQorZW5jb2RpbmcgYW5kIGRlY29kaW5nIG9mIGhlYWRlcnMgaXMgaGFuZGxlZCB0cmFuc3BhcmVudGx5IGJ5IHRoZQorZGljdGlvbmFyeS1saWtlIEFQSSBvZiB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzLiAgSW4KK2FkZGl0aW9uIHRvIHVzZXMgaW4gbGVnYWN5IGNvZGUsIHRoaXMgbW9kdWxlIGNhbiBiZSB1c2VmdWwgaW4gYXBwbGljYXRpb25zIHRoYXQKK25lZWQgdG8gY29tcGxldGVseSBjb250cm9sIHRoZSBjaGFyYWN0ZXIgc2V0cyB1c2VkIHdoZW4gZW5jb2RpbmcgaGVhZGVycy4KKworVGhlIHJlbWFpbmluZyB0ZXh0IGluIHRoaXMgc2VjdGlvbiBpcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kdWxlLgorCiA6cmZjOmAyODIyYCBpcyB0aGUgYmFzZSBzdGFuZGFyZCB0aGF0IGRlc2NyaWJlcyB0aGUgZm9ybWF0IG9mIGVtYWlsIG1lc3NhZ2VzLgogSXQgZGVyaXZlcyBmcm9tIHRoZSBvbGRlciA6cmZjOmA4MjJgIHN0YW5kYXJkIHdoaWNoIGNhbWUgaW50byB3aWRlc3ByZWFkIHVzZSBhdAogYSB0aW1lIHdoZW4gbW9zdCBlbWFpbCB3YXMgY29tcG9zZWQgb2YgQVNDSUkgY2hhcmFjdGVycyBvbmx5LiAgOnJmYzpgMjgyMmAgaXMgYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CmluZGV4IDA3MDdiZDguLjJjODMwY2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKQEAgLTcsMjAgKzcsMTIgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLSAgIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgotCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weWAKIAotLi4gbm90ZTo6Ci0KLSAgIFRoZSBoZWFkZXJyZWdpc3RyeSBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQotICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKLSAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgbW9kdWxlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQogLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KKwogSGVhZGVycyBhcmUgcmVwcmVzZW50ZWQgYnkgY3VzdG9taXplZCBzdWJjbGFzc2VzIG9mIDpjbGFzczpgc3RyYC4gIFRoZQogcGFydGljdWxhciBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBhIGdpdmVuIGhlYWRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZQogOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuaGVhZGVyX2ZhY3RvcnlgIG9mIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBpbgpAQCAtODYsMTAgKzc4LDExIEBACiAgICAuLiBtZXRob2Q6OiBmb2xkKCosIHBvbGljeSkKIAogICAgICAgUmV0dXJuIGEgc3RyaW5nIGNvbnRhaW5pbmcgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmxpbmVzZXBgCi0gICAgICBjaGFyYWN0ZXJzIGFzIHJlcXVpcmVkIHRvIGNvcnJlY3RseSBmb2xkIHRoZSBoZWFkZXIgYWNjb3JkaW5nCi0gICAgICB0byAqcG9saWN5Ki4gIEEgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBvZgotICAgICAgYGA4Yml0YGAgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgYGA3Yml0YGAsIHNpbmNlIHN0cmluZ3MKLSAgICAgIG1heSBub3QgY29udGFpbiBiaW5hcnkgZGF0YS4KKyAgICAgIGNoYXJhY3RlcnMgYXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IGZvbGQgdGhlIGhlYWRlciBhY2NvcmRpbmcgdG8KKyAgICAgICpwb2xpY3kqLiAgQSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIG9mIGBgOGJpdGBgIHdpbGwgYmUKKyAgICAgIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBgYDdiaXRgYCwgc2luY2UgaGVhZGVycyBtYXkgbm90IGNvbnRhaW4gYXJiaXRyYXJ5CisgICAgICBiaW5hcnkgZGF0YS4gIElmIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgRmFsc2VgYCwKKyAgICAgIG5vbi1BU0NJSSBkYXRhIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZC4KIAogCiAgICBgYEJhc2VIZWFkZXJgYCBieSBpdHNlbGYgY2Fubm90IGJlIHVzZWQgdG8gY3JlYXRlIGEgaGVhZGVyIG9iamVjdC4gIEl0CkBAIC0xMDYsNyArOTksNyBAQAogICAgdmFsdWVzIGZvciBhdCBsZWFzdCB0aGUga2V5cyBgYGRlY29kZWRgYCBhbmQgYGBkZWZlY3RzYGAuICBgYGRlY29kZWRgYAogICAgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdmFsdWUgZm9yIHRoZSBoZWFkZXIgKHRoYXQgaXMsIHRoZSBoZWFkZXIgdmFsdWUgZnVsbHkKICAgIGRlY29kZWQgdG8gdW5pY29kZSkuICBUaGUgcGFyc2UgbWV0aG9kIHNob3VsZCBhc3N1bWUgdGhhdCAqc3RyaW5nKiBtYXkKLSAgIGNvbnRhaW4gdHJhbnNwb3J0IGVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKKyAgIGNvbnRhaW4gY29udGVudC10cmFuc2Zlci1lbmNvZGVkIHBhcnRzLCBidXQgc2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgYWxsIHZhbGlkCiAgICB1bmljb2RlIGNoYXJhY3RlcnMgYXMgd2VsbCBzbyB0aGF0IGl0IGNhbiBwYXJzZSB1bi1lbmNvZGVkIGhlYWRlciB2YWx1ZXMuCiAKICAgIGBgQmFzZUhlYWRlcmBgJ3MgYGBfX25ld19fYGAgdGhlbiBjcmVhdGVzIHRoZSBoZWFkZXIgaW5zdGFuY2UsIGFuZCBjYWxscyBpdHMKQEAgLTEzNSwxMSArMTI4LDEwIEBACiAgICBtZWNoYW5pc20gZm9yIGVuY29kaW5nIG5vbi1BU0NJSSB0ZXh0IGFzIEFTQ0lJIGNoYXJhY3RlcnMgd2l0aGluIGEgaGVhZGVyCiAgICB2YWx1ZS4gIFdoZW4gYSAqdmFsdWUqIGNvbnRhaW5pbmcgZW5jb2RlZCB3b3JkcyBpcyBwYXNzZWQgdG8gdGhlCiAgICBjb25zdHJ1Y3RvciwgdGhlIGBgVW5zdHJ1Y3R1cmVkSGVhZGVyYGAgcGFyc2VyIGNvbnZlcnRzIHN1Y2ggZW5jb2RlZCB3b3JkcwotICAgYmFjayBpbiB0byB0aGUgb3JpZ2luYWwgdW5pY29kZSwgZm9sbG93aW5nIHRoZSA6cmZjOmAyMDQ3YCBydWxlcyBmb3IKLSAgIHVuc3RydWN0dXJlZCB0ZXh0LiAgVGhlIHBhcnNlciB1c2VzIGhldXJpc3RpY3MgdG8gYXR0ZW1wdCB0byBkZWNvZGUgY2VydGFpbgotICAgbm9uLWNvbXBsaWFudCBlbmNvZGVkIHdvcmRzLiAgRGVmZWN0cyBhcmUgcmVnaXN0ZXJlZCBpbiBzdWNoIGNhc2VzLCBhcyB3ZWxsCi0gICBhcyBkZWZlY3RzIGZvciBpc3N1ZXMgc3VjaCBhcyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBlbmNvZGVkIHdvcmRzIG9yCi0gICB0aGUgbm9uLWVuY29kZWQgdGV4dC4KKyAgIGludG8gdW5pY29kZSwgZm9sbG93aW5nIHRoZSA6cmZjOmAyMDQ3YCBydWxlcyBmb3IgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUKKyAgIHBhcnNlciB1c2VzIGhldXJpc3RpY3MgdG8gYXR0ZW1wdCB0byBkZWNvZGUgY2VydGFpbiBub24tY29tcGxpYW50IGVuY29kZWQKKyAgIHdvcmRzLiAgRGVmZWN0cyBhcmUgcmVnaXN0ZXJlZCBpbiBzdWNoIGNhc2VzLCBhcyB3ZWxsIGFzIGRlZmVjdHMgZm9yIGlzc3VlcworICAgc3VjaCBhcyBpbnZhbGlkIGNoYXJhY3RlcnMgd2l0aGluIHRoZSBlbmNvZGVkIHdvcmRzIG9yIHRoZSBub24tZW5jb2RlZCB0ZXh0LgogCiAgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIG5vIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KIApAQCAtMjEzLDE1ICsyMDUsMTYgQEAKICAgICAgIHRoZSBsaXN0IG9mIGFkZHJlc3NlcyBpcyAiZmxhdHRlbmVkIiBpbnRvIGEgb25lIGRpbWVuc2lvbmFsIGxpc3QpLgogCiAgICBUaGUgYGBkZWNvZGVkYGAgdmFsdWUgb2YgdGhlIGhlYWRlciB3aWxsIGhhdmUgYWxsIGVuY29kZWQgd29yZHMgZGVjb2RlZCB0bwotICAgdW5pY29kZS4gIDpjbGFzczpgfmVuY29kaW5ncy5pZG5hYCBlbmNvZGVkIGRvbWFpbiBuYW1lcyBhcmUgYWxzbyBkZWNvZGVkIHRvIHVuaWNvZGUuICBUaGUKLSAgIGBgZGVjb2RlZGBgIHZhbHVlIGlzIHNldCBieSA6YXR0cjpgfnN0ci5qb2luYFwgaW5nIHRoZSA6Y2xhc3M6YHN0cmAgdmFsdWUgb2YKLSAgIHRoZSBlbGVtZW50cyBvZiB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgd2l0aCBgYCcsICdgYC4KKyAgIHVuaWNvZGUuICA6Y2xhc3M6YH5lbmNvZGluZ3MuaWRuYWAgZW5jb2RlZCBkb21haW4gbmFtZXMgYXJlIGFsc28gZGVjb2RlZCB0bworICAgdW5pY29kZS4gIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBpcyBzZXQgYnkgOmF0dHI6YH5zdHIuam9pbmBcIGluZyB0aGUKKyAgIDpjbGFzczpgc3RyYCB2YWx1ZSBvZiB0aGUgZWxlbWVudHMgb2YgdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIHdpdGggYGAnLAorICAgJ2BgLgogCiAgICBBIGxpc3Qgb2YgOmNsYXNzOmAuQWRkcmVzc2AgYW5kIDpjbGFzczpgLkdyb3VwYCBvYmplY3RzIGluIGFueSBjb21iaW5hdGlvbgogICAgbWF5IGJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBvZiBhbiBhZGRyZXNzIGhlYWRlci4gIGBgR3JvdXBgYCBvYmplY3RzIHdob3NlCiAgICBgYGRpc3BsYXlfbmFtZWBgIGlzIGBgTm9uZWBgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgc2luZ2xlIGFkZHJlc3Nlcywgd2hpY2gKICAgIGFsbG93cyBhbiBhZGRyZXNzIGxpc3QgdG8gYmUgY29waWVkIHdpdGggZ3JvdXBzIGludGFjdCBieSB1c2luZyB0aGUgbGlzdAotICAgb2J0YWluZWQgYGBncm91cHNgYCBhdHRyaWJ1dGUgb2YgdGhlIHNvdXJjZSBoZWFkZXIuCisgICBvYnRhaW5lZCBmcm9tIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSBvZiB0aGUgc291cmNlIGhlYWRlci4KIAogCiAuLiBjbGFzczo6IFNpbmdsZUFkZHJlc3NIZWFkZXIKQEAgLTI2Nyw3ICsyNjAsNyBAQAogCiAuLiBjbGFzczo6IFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyCiAKLSAgICBNT01FIGhlYWRlcnMgYWxsIHN0YXJ0IHdpdGggdGhlIHByZWZpeCAnQ29udGVudC0nLiAgRWFjaCBzcGVjaWZpYyBoZWFkZXIgaGFzCisgICAgTUlNRSBoZWFkZXJzIGFsbCBzdGFydCB3aXRoIHRoZSBwcmVmaXggJ0NvbnRlbnQtJy4gIEVhY2ggc3BlY2lmaWMgaGVhZGVyIGhhcwogICAgIGEgY2VydGFpbiB2YWx1ZSwgZGVzY3JpYmVkIHVuZGVyIHRoZSBjbGFzcyBmb3IgdGhhdCBoZWFkZXIuICBTb21lIGNhbgogICAgIGFsc28gdGFrZSBhIGxpc3Qgb2Ygc3VwcGxlbWVudGFsIHBhcmFtZXRlcnMsIHdoaWNoIGhhdmUgYSBjb21tb24gZm9ybWF0LgogICAgIFRoaXMgY2xhc3Mgc2VydmVzIGFzIGEgYmFzZSBmb3IgYWxsIHRoZSBNSU1FIGhlYWRlcnMgdGhhdCB0YWtlIHBhcmFtZXRlcnMuCkBAIC00NTQsMyArNDQ3LDkgQEAKICAgICAgIGBgZGlzcGxheV9uYW1lYGAgaXMgbm9uZSBhbmQgdGhlcmUgaXMgYSBzaW5nbGUgYGBBZGRyZXNzYGAgaW4gdGhlCiAgICAgICBgYGFkZHJlc3Nlc2BgIGxpc3QsIHRoZSBgYHN0cmBgIHZhbHVlIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGBgc3RyYGAgb2YKICAgICAgIHRoYXQgc2luZ2xlIGBgQWRkcmVzc2BgLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuMyBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsCisgICAgICAgcGFja2FnZT5gCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CmluZGV4IDI5MDc5NzUuLjk1MTM2ZDIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0CkBAIC0zLDkxICszLDEwMiBAQAogCiAuLiBtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCiAgICA6c3lub3BzaXM6IFRoZSBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBlbWFpbCBtZXNzYWdlcy4KKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPiwKKyAgICAgICAgICAgICAgICAgICBCYXJyeSBBLiBXYXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+CiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL21lc3NhZ2UucHlgCiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZSBjZW50cmFsIGNsYXNzIGluIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzcywKLWltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4gIEl0IGlzIHRoZSBiYXNlIGNsYXNzIGZvciB0aGUKLTptb2Q6YGVtYWlsYCBvYmplY3QgbW9kZWwuICA6Y2xhc3M6YE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yCi1zZXR0aW5nIGFuZCBxdWVyeWluZyBoZWFkZXIgZmllbGRzLCBhbmQgZm9yIGFjY2Vzc2luZyBtZXNzYWdlIGJvZGllcy4KKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCiAKLUNvbmNlcHR1YWxseSwgYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kICpwYXlsb2FkcyouCi1IZWFkZXJzIGFyZSA6cmZjOmAyODIyYCBzdHlsZSBmaWVsZCBuYW1lcyBhbmQgdmFsdWVzIHdoZXJlIHRoZSBmaWVsZCBuYW1lIGFuZAotdmFsdWUgYXJlIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uIGlzIG5vdCBwYXJ0IG9mIGVpdGhlciB0aGUgZmllbGQgbmFtZQotb3IgdGhlIGZpZWxkIHZhbHVlLgorVGhlIGNlbnRyYWwgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKK2NsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCBtb2R1bGUuICBJdCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IKK3RoZSA6bW9kOmBlbWFpbGAgb2JqZWN0IG1vZGVsLiAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBjb3JlCitmdW5jdGlvbmFsaXR5IGZvciBzZXR0aW5nIGFuZCBxdWVyeWluZyBoZWFkZXIgZmllbGRzLCBmb3IgYWNjZXNzaW5nIG1lc3NhZ2UKK2JvZGllcywgYW5kIGZvciBjcmVhdGluZyBvciBtb2RpZnlpbmcgc3RydWN0dXJlZCBtZXNzYWdlcy4KIAotSGVhZGVycyBhcmUgc3RvcmVkIGFuZCByZXR1cm5lZCBpbiBjYXNlLXByZXNlcnZpbmcgZm9ybSBidXQgYXJlIG1hdGNoZWQKLWNhc2UtaW5zZW5zaXRpdmVseS4gIFRoZXJlIG1heSBhbHNvIGJlIGEgc2luZ2xlIGVudmVsb3BlIGhlYWRlciwgYWxzbyBrbm93biBhcwotdGhlICpVbml4LUZyb20qIGhlYWRlciBvciB0aGUgYGBGcm9tX2BgIGhlYWRlci4gIFRoZSBwYXlsb2FkIGlzIGVpdGhlciBhIHN0cmluZwotaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2Ugb2JqZWN0cyBvciBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGZvcgotTUlNRSBjb250YWluZXIgZG9jdW1lbnRzIChlLmcuIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQKLTptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKS4KK0FuIGVtYWlsIG1lc3NhZ2UgY29uc2lzdHMgb2YgKmhlYWRlcnMqIGFuZCBhICpwYXlsb2FkKiAod2hpY2ggaXMgYWxzbyByZWZlcnJlZAordG8gYXMgdGhlICpjb250ZW50KikuICBIZWFkZXJzIGFyZSA6cmZjOmA1MzIyYCBvciA6cmZjOmA2NTMyYCBzdHlsZSBmaWVsZCBuYW1lcworYW5kIHZhbHVlcywgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kIHZhbHVlIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbgoraXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9yIHRoZSBmaWVsZCB2YWx1ZS4gIFRoZSBwYXlsb2FkIG1heSBiZSBhCitzaW1wbGUgdGV4dCBtZXNzYWdlLCBvciBhIGJpbmFyeSBvYmplY3QsIG9yIGEgc3RydWN0dXJlZCBzZXF1ZW5jZSBvZgorc3ViLW1lc3NhZ2VzIGVhY2ggd2l0aCB0aGVpciBvd24gc2V0IG9mIGhlYWRlcnMgYW5kIHRoZWlyIG93biBwYXlsb2FkLiAgVGhlCitsYXR0ZXIgdHlwZSBvZiBwYXlsb2FkIGlzIGluZGljYXRlZCBieSB0aGUgbWVzc2FnZSBoYXZpbmcgYSBNSU1FIHR5cGUgc3VjaCBhcworOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgogCi06Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgcHJvdmlkZSBhIG1hcHBpbmcgc3R5bGUgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCi1tZXNzYWdlIGhlYWRlcnMsIGFuZCBhbiBleHBsaWNpdCBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyBib3RoIHRoZSBoZWFkZXJzIGFuZAotdGhlIHBheWxvYWQuICBJdCBwcm92aWRlcyBjb252ZW5pZW5jZSBtZXRob2RzIGZvciBnZW5lcmF0aW5nIGEgZmxhdCB0ZXh0Ci1yZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3QgdHJlZSwgZm9yIGFjY2Vzc2luZyBjb21tb25seSB1c2VkIGhlYWRlcgotcGFyYW1ldGVycywgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nIG92ZXIgdGhlIG9iamVjdCB0cmVlLgorVGhlIGNvbmNlcHR1YWwgbW9kZWwgcHJvdmlkZWQgYnkgYW4gOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdCBpcyB0aGF0IG9mIGFuCitvcmRlcmVkIGRpY3Rpb25hcnkgb2YgaGVhZGVycyBjb3VwbGVkIHdpdGggYSAqcGF5bG9hZCogdGhhdCByZXByZXNlbnRzIHRoZQorOnJmYzpgNTMyMmAgYm9keSBvZiB0aGUgbWVzc2FnZSwgd2hpY2ggbWlnaHQgYmUgYSBsaXN0IG9mIHN1Yi1gYEVtYWlsTWVzc2FnZWBgCitvYmplY3RzLiAgSW4gYWRkaXRpb24gdG8gdGhlIG5vcm1hbCBkaWN0aW9uYXJ5IG1ldGhvZHMgZm9yIGFjY2Vzc2luZyB0aGUgaGVhZGVyCituYW1lcyBhbmQgdmFsdWVzLCB0aGVyZSBhcmUgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIHNwZWNpYWxpemVkIGluZm9ybWF0aW9uIGZyb20KK3RoZSBoZWFkZXJzIChmb3IgZXhhbXBsZSB0aGUgTUlNRSBjb250ZW50IHR5cGUpLCBmb3Igb3BlcmF0aW5nIG9uIHRoZSBwYXlsb2FkLAorZm9yIGdlbmVyYXRpbmcgYSBzZXJpYWxpemVkIHZlcnNpb24gb2YgdGhlIG1lc3NhZ2UsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZworb3ZlciB0aGUgb2JqZWN0IHRyZWUuCiAKLUhlcmUgYXJlIHRoZSBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzOgorVGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYCBkaWN0aW9uYXJ5LWxpa2UgaW50ZXJmYWNlIGlzIGluZGV4ZWQgYnkgdGhlIGhlYWRlcgorbmFtZXMsIHdoaWNoIG11c3QgYmUgQVNDSUkgdmFsdWVzLiAgVGhlIHZhbHVlcyBvZiB0aGUgZGljdGlvbmFyeSBhcmUgc3RyaW5ncword2l0aCBzb21lIGV4dHJhIG1ldGhvZHMuICBIZWFkZXJzIGFyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZworZm9ybSwgYnV0IGZpZWxkIG5hbWVzIGFyZSBtYXRjaGVkIGNhc2UtaW5zZW5zaXRpdmVseS4gIFVubGlrZSBhIHJlYWwgZGljdCwKK3RoZXJlIGlzIGFuIG9yZGVyaW5nIHRvIHRoZSBrZXlzLCBhbmQgdGhlcmUgY2FuIGJlIGR1cGxpY2F0ZSBrZXlzLiAgQWRkaXRpb25hbAorbWV0aG9kcyBhcmUgcHJvdmlkZWQgZm9yIHdvcmtpbmcgd2l0aCBoZWFkZXJzIHRoYXQgaGF2ZSBkdXBsaWNhdGUga2V5cy4KKworVGhlICpwYXlsb2FkKiBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0LCBpbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZQorb2JqZWN0cywgb3IgYSBsaXN0IG9mIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzLCBmb3IgTUlNRSBjb250YWluZXIKK2RvY3VtZW50cyBzdWNoIGFzIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAKK21lc3NhZ2Ugb2JqZWN0cy4KIAogCi0uLiBjbGFzczo6IE1lc3NhZ2UocG9saWN5PWNvbXBhdDMyKQorLi4gY2xhc3M6OiBFbWFpbE1lc3NhZ2UocG9saWN5PWRlZmF1bHQpCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIGFuZCBzZXJpYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uCi0gICBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1ZHBhdGUgYW5kIHNlcmlhbGl6ZQorICAgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQorICAgOmNsYXNzOmB+ZW1haWwucG9saWN5LmRlZmF1bHRgIHBvbGljeSwgd2hpY2ggZm9sbG93cyB0aGUgcnVsZXMgb2YgdGhlIGVtYWlsCisgICBSRkNzIGV4Y2VwdCBmb3IgbGluZSBlbmRpbmdzIChpbnN0ZWFkIG9mIHRoZSBSRkMgbWFuZGF0ZWQgYGBcclxuYGAsIGl0IHVzZXMKKyAgIHRoZSBQeXRob24gc3RhbmRhcmQgYGBcbmBgIGxpbmUgZW5kaW5ncykuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCiAgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBUaGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAuLiBtZXRob2Q6OiBhc19zdHJpbmcodW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj1Ob25lLCBwb2xpY3k9Tm9uZSkKIAorICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsCisgICAgICAqdW5peGZyb20qIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkCisgICAgICBzdHJpbmcuICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5CisgICAgICB3aXRoIHRoZSBiYXNlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgKm1heGhlYWRlcmxlbiogaXMKKyAgICAgIGFjY2VwdGVkLCBidXQgZGVmYXVsdHMgdG8gYGBOb25lYGAsIHdoaWNoIG1lYW5zIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGluZQorICAgICAgbGVuZ3RoIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5tYXhfbGluZV9sZW5ndGhgIG9mIHRoZSBwb2xpY3kuICBUaGUKKyAgICAgICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZAorICAgICAgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZQorICAgICAgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUKKyAgICAgIHBhc3NlZCB0byB0aGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAuCiAKLSAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPTAsIHBvbGljeT1Ob25lKQorICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgICAgIGlmIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhCisgICAgICBzdHJpbmcgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCiAKLSAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbCAqdW5peGZyb20qCi0gICAgICBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBzdHJpbmcuCi0gICAgICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5IHJlYXNvbnMsCi0gICAgICAqbWF4aGVhZGVybGVuKiBkZWZhdWx0cyB0byBgYDBgYCwgc28gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgdmFsdWUgeW91Ci0gICAgICBtdXN0IG92ZXJyaWRlIGl0IGV4cGxpY2l0bHkgKHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICptYXhfbGluZV9sZW5ndGgqIGluCi0gICAgICB0aGUgcG9saWN5IHdpbGwgYmUgaWdub3JlZCBieSB0aGlzIG1ldGhvZCkuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCi0gICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgotICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCi0gICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBgR2VuZXJhdG9yYGAuCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBiZSB0aGUKKyAgICAgIG1vc3QgdXNlZnVsIHdheSB0byBzZXJpYWxpemUgbWVzc2FnZXMgaW4geW91ciBhcHBsaWNhdGlvbiwgZXNwZWNpYWxseSBpZgorICAgICAgeW91IGFyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgbWVzc2FnZXMuICBTZWUKKyAgICAgIDpjbGFzczpgZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgZm9yIGEgbW9yZSBmbGV4aWJsZSBBUEkgZm9yCisgICAgICBzZXJpYWxpemluZyBtZXNzYWdlcy4gIE5vdGUgYWxzbyB0aGF0IHRoaXMgbWV0aG9kIGlzIHJlc3RyaWN0ZWQgdG8KKyAgICAgIHByb2R1Y2luZyBtZXNzYWdlcyBzZXJpYWxpemVkIGFzICI3IGJpdCBjbGVhbiIgd2hlbgorICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kudXRmOGAgaXMgYGBGYWxzZWBgLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4KIAotICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCi0gICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKLSAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgotCi0gICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKLSAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcwotICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcwotICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKLSAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCi0gICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCi0gICAgICAgICBmcCA9IFN0cmluZ0lPKCkKLSAgICAgICAgIGcgPSBHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCi0gICAgICAgICBnLmZsYXR0ZW4obXNnKQotICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKLQotICAgICAgSWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5zIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90IGVuY29kZWQgYWNjb3JkaW5nCi0gICAgICB0byBSRkMgc3RhbmRhcmRzLCB0aGUgbm9uLWNvbXBsaWFudCBkYXRhIHdpbGwgYmUgcmVwbGFjZWQgYnkgdW5pY29kZQotICAgICAgInVua25vd24gY2hhcmFjdGVyIiBjb2RlIHBvaW50cy4gIChTZWUgYWxzbyA6bWV0aDpgLmFzX2J5dGVzYCBhbmQKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAuKQotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiB0aGUgZGVmYXVsdCBiZWhhdmlvciB3aGVuICptYXhoZWFkZXJsZW4qCisgICAgICAgICBpcyBub3Qgc3BlY2lmaWVkIHdhcyBjaGFuZ2VkIGZyb20gZGVmYXVsdGluZyB0byAwIHRvIGRlZmF1bHRpbmcKKyAgICAgICAgIHRvIHRoZSB2YWx1ZSBvZiAqbWF4X2xpbmVfbGVuZ3RoKiBmcm9tIHRoZSBwb2xpY3kuCiAKIAogICAgLi4gbWV0aG9kOjogX19zdHJfXygpCiAKLSAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19zdHJpbmcoKWAuICBBbGxvd3MgYGBzdHIobXNnKWBgIHRvIHByb2R1Y2UgYQotICAgICAgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgorICAgICAgRXF1aXZhbGVudCB0byBgYXNfc3RyaW5nKHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZSh1dGY4PVRydWUpYC4gIEFsbG93cworICAgICAgYGBzdHIobXNnKWBgIHRvIHByb2R1Y2UgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlIGluIGEKKyAgICAgIHJlYWRhYmxlIGZvcm1hdC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlIG1ldGhvZCB3YXMgY2hhbmdlZCB0byB1c2UgYGB1dGY4PVRydWVgYCwKKyAgICAgICAgIHRodXMgcHJvZHVjaW5nIGFuIDpyZmM6YDY1MzFgLWxpa2UgbWVzc2FnZSByZXByZXNlbnRhdGlvbiwgaW5zdGVhZCBvZgorICAgICAgICAgYmVpbmcgYSBkaXJlY3QgYWxpYXMgZm9yIDptZXRoOmBhc19zdHJpbmdgLgogCiAKICAgIC4uIG1ldGhvZDo6IGFzX2J5dGVzKHVuaXhmcm9tPUZhbHNlLCBwb2xpY3k9Tm9uZSkKQEAgLTk4LDUyICsxMDksNDIgQEAKICAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCiAgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKICAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUKLSAgICAgIGBgQnl0ZXNHZW5lcmF0b3JgYC4KKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAuCiAKLSAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgotICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCi0gICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICAgICBpZiBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYQorICAgICAgc3RyaW5nIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgogCi0gICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKLSAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcwotICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcwotICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cwotICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LgotICAgICAgRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCi0gICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgQnl0ZXNHZW5lcmF0b3IKLSAgICAgICAgIGZwID0gQnl0ZXNJTygpCi0gICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCi0gICAgICAgICBnLmZsYXR0ZW4obXNnKQotICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBiZSB0aGUKKyAgICAgIG1vc3QgdXNlZnVsIHdheSB0byBzZXJpYWxpemUgbWVzc2FnZXMgaW4geW91ciBhcHBsaWNhdGlvbiwgZXNwZWNpYWxseSBpZgorICAgICAgeW91IGFyZSBkZWFsaW5nIHdpdGggbXVsdGlwbGUgbWVzc2FnZXMuICBTZWUKKyAgICAgIDpjbGFzczpgZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBmb3IgYSBtb3JlIGZsZXhpYmxlIEFQSSBmb3IKKyAgICAgIHNlcmlhbGl6aW5nIG1lc3NhZ2VzLgogCiAKICAgIC4uIG1ldGhvZDo6IF9fYnl0ZXNfXygpCiAKICAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19ieXRlcygpYC4gIEFsbG93cyBgYGJ5dGVzKG1zZylgYCB0byBwcm9kdWNlIGEKLSAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisgICAgICBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgc2VyaWFsaXplZCBtZXNzYWdlLgogCiAKICAgIC4uIG1ldGhvZDo6IGlzX211bHRpcGFydCgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaXMgYSBsaXN0IG9mIHN1Yi1cCi0gICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgV2hlbgorICAgICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMsIG90aGVyd2lzZSByZXR1cm4gYGBGYWxzZWBgLiAgV2hlbgogICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJucyBgYEZhbHNlYGAsIHRoZSBwYXlsb2FkIHNob3VsZCBiZSBhIHN0cmluZwotICAgICAgb2JqZWN0LiAgKE5vdGUgdGhhdCA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QKLSAgICAgIG5lY2Vzc2FyaWx5IG1lYW4gdGhhdCAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwKLSAgICAgIHJldHVybiB0aGUgYGBUcnVlYGAuICAgRm9yIGV4YW1wbGUsIGBgaXNfbXVsdGlwYXJ0YGAgd2lsbCByZXR1cm4gYGBUcnVlYGAKLSAgICAgIHdoZW4gdGhlIDpjbGFzczpgTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuKQorICAgICAgb2JqZWN0ICh3aGljaCBtaWdodCBiZSBhIENURSBlbmNvZGVkIGJpbmFyeSBwYXlsb2FkKS4gIE5vdGUgdGhhdAorICAgICAgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJuaW5nIGBgVHJ1ZWBgIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhhdAorICAgICAgIm1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIiB3aWxsIHJldHVybiB0aGUgYGBUcnVlYGAuCisgICAgICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYCB3aGVuIHRoZQorICAgICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLgogCiAKICAgIC4uIG1ldGhvZDo6IHNldF91bml4ZnJvbSh1bml4ZnJvbSkKIAotICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhIHN0cmluZy4KKyAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYQorICAgICAgc3RyaW5nLiAgKFNlZSA6Y2xhc3M6YH5tYWlsYm94Lm1ib3hNZXNzYWdlYCBmb3IgYSBicmllZiBkZXNjcmlwdGlvbiBvZgorICAgICAgdGhpcyBoZWFkZXIuKQogCiAKICAgIC4uIG1ldGhvZDo6IGdldF91bml4ZnJvbSgpCkBAIC0xNTIsMTA5ICsxNTMsMjMgQEAKICAgICAgIGVudmVsb3BlIGhlYWRlciB3YXMgbmV2ZXIgc2V0LgogCiAKLSAgIC4uIG1ldGhvZDo6IGF0dGFjaChwYXlsb2FkKQotCi0gICAgICBBZGQgdGhlIGdpdmVuICpwYXlsb2FkKiB0byB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCBtdXN0IGJlIGBgTm9uZWBgIG9yCi0gICAgICBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGJlZm9yZSB0aGUgY2FsbC4gQWZ0ZXIgdGhlIGNhbGwsIHRoZQotICAgICAgcGF5bG9hZCB3aWxsIGFsd2F5cyBiZSBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLiAgSWYgeW91IHdhbnQgdG8KLSAgICAgIHNldCB0aGUgcGF5bG9hZCB0byBhIHNjYWxhciBvYmplY3QgKGUuZy4gYSBzdHJpbmcpLCB1c2UKLSAgICAgIDptZXRoOmBzZXRfcGF5bG9hZGAgaW5zdGVhZC4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfcGF5bG9hZChpPU5vbmUsIGRlY29kZT1GYWxzZSkKLQotICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIHdpbGwgYmUgYSBsaXN0IG9mCi0gICAgICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYFRydWVgYCwgb3IgYQotICAgICAgc3RyaW5nIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgLiAgSWYgdGhlIHBheWxvYWQgaXMgYSBsaXN0Ci0gICAgICBhbmQgeW91IG11dGF0ZSB0aGUgbGlzdCBvYmplY3QsIHlvdSBtb2RpZnkgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGluIHBsYWNlLgotCi0gICAgICBXaXRoIG9wdGlvbmFsIGFyZ3VtZW50ICppKiwgOm1ldGg6YGdldF9wYXlsb2FkYCB3aWxsIHJldHVybiB0aGUgKmkqLXRoCi0gICAgICBlbGVtZW50IG9mIHRoZSBwYXlsb2FkLCBjb3VudGluZyBmcm9tIHplcm8sIGlmIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzCi0gICAgICBgYFRydWVgYC4gIEFuIDpleGM6YEluZGV4RXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcyBsZXNzIHRoYW4gMCBvcgotICAgICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHBheWxvYWQuICBJZiB0aGUKLSAgICAgIHBheWxvYWQgaXMgYSBzdHJpbmcgKGkuZS4gIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYCkgYW5kICppKiBpcwotICAgICAgZ2l2ZW4sIGEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCi0KLSAgICAgIE9wdGlvbmFsICpkZWNvZGUqIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHBheWxvYWQgc2hvdWxkIGJlCi0gICAgICBkZWNvZGVkIG9yIG5vdCwgYWNjb3JkaW5nIHRvIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKLSAgICAgIGhlYWRlci4gV2hlbiBgYFRydWVgYCBhbmQgdGhlIG1lc3NhZ2UgaXMgbm90IGEgbXVsdGlwYXJ0LCB0aGUgcGF5bG9hZCB3aWxsCi0gICAgICBiZSBkZWNvZGVkIGlmIHRoaXMgaGVhZGVyJ3MgdmFsdWUgaXMgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IgYGBiYXNlNjRgYC4KLSAgICAgIElmIHNvbWUgb3RoZXIgZW5jb2RpbmcgaXMgdXNlZCwgb3IgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCi0gICAgICBoZWFkZXIgaXMgbWlzc2luZywgdGhlIHBheWxvYWQgaXMKLSAgICAgIHJldHVybmVkIGFzLWlzICh1bmRlY29kZWQpLiAgSW4gYWxsIGNhc2VzIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBiaW5hcnkKLSAgICAgIGRhdGEuICBJZiB0aGUgbWVzc2FnZSBpcyBhIG11bHRpcGFydCBhbmQgdGhlICpkZWNvZGUqIGZsYWcgaXMgYGBUcnVlYGAsCi0gICAgICB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgSWYgdGhlIHBheWxvYWQgaXMgYmFzZTY0IGFuZCBpdCB3YXMgbm90Ci0gICAgICBwZXJmZWN0bHkgZm9ybWVkIChtaXNzaW5nIHBhZGRpbmcsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0Ci0gICAgICBhbHBoYWJldCksIHRoZW4gYW4gYXBwcm9wcmlhdGUgZGVmZWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UncwotICAgICAgZGVmZWN0IHByb3BlcnR5ICg6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RgIG9yCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RgLCByZXNwZWN0aXZlbHkpLgotCi0gICAgICBXaGVuICpkZWNvZGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBib2R5IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nCi0gICAgICB3aXRob3V0IGRlY29kaW5nIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBIb3dldmVyLAotICAgICAgZm9yIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQsIGFuIGF0dGVtcHQgaXMgbWFkZQotICAgICAgdG8gZGVjb2RlIHRoZSBvcmlnaW5hbCBieXRlcyB1c2luZyB0aGUgYGBjaGFyc2V0YGAgc3BlY2lmaWVkIGJ5IHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCB1c2luZyB0aGUgYGByZXBsYWNlYGAgZXJyb3IgaGFuZGxlci4KLSAgICAgIElmIG5vIGBgY2hhcnNldGBgIGlzIHNwZWNpZmllZCwgb3IgaWYgdGhlIGBgY2hhcnNldGBgIGdpdmVuIGlzIG5vdAotICAgICAgcmVjb2duaXplZCBieSB0aGUgZW1haWwgcGFja2FnZSwgdGhlIGJvZHkgaXMgZGVjb2RlZCB1c2luZyB0aGUgZGVmYXVsdAotICAgICAgQVNDSUkgY2hhcnNldC4KLQotCi0gICAuLiBtZXRob2Q6OiBzZXRfcGF5bG9hZChwYXlsb2FkLCBjaGFyc2V0PU5vbmUpCi0KLSAgICAgIFNldCB0aGUgZW50aXJlIG1lc3NhZ2Ugb2JqZWN0J3MgcGF5bG9hZCB0byAqcGF5bG9hZCouICBJdCBpcyB0aGUgY2xpZW50J3MKLSAgICAgIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGUgcGF5bG9hZCBpbnZhcmlhbnRzLiAgT3B0aW9uYWwgKmNoYXJzZXQqIHNldHMKLSAgICAgIHRoZSBtZXNzYWdlJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0OyBzZWUgOm1ldGg6YHNldF9jaGFyc2V0YCBmb3IgZGV0YWlscy4KLQotICAgLi4gbWV0aG9kOjogc2V0X2NoYXJzZXQoY2hhcnNldCkKLQotICAgICAgU2V0IHRoZSBjaGFyYWN0ZXIgc2V0IG9mIHRoZSBwYXlsb2FkIHRvICpjaGFyc2V0Kiwgd2hpY2ggY2FuIGVpdGhlciBiZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIChzZWUgOm1vZDpgZW1haWwuY2hhcnNldGApLCBhCi0gICAgICBzdHJpbmcgbmFtaW5nIGEgY2hhcmFjdGVyIHNldCwgb3IgYGBOb25lYGAuICBJZiBpdCBpcyBhIHN0cmluZywgaXQgd2lsbAotICAgICAgYmUgY29udmVydGVkIHRvIGEgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZS4gIElmICpjaGFyc2V0KgotICAgICAgaXMgYGBOb25lYGAsIHRoZSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgKHRoZSBtZXNzYWdlIHdpbGwgbm90IGJlIG90aGVyd2lzZQotICAgICAgbW9kaWZpZWQpLiAgQW55dGhpbmcgZWxzZSB3aWxsIGdlbmVyYXRlIGEgOmV4YzpgVHlwZUVycm9yYC4KLQotICAgICAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVyIG9uZSB3aWxsIGJlCi0gICAgICBhZGRlZC4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb25lCi0gICAgICB3aWxsIGJlIGFkZGVkIHdpdGggYSB2YWx1ZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLiAgV2hldGhlciB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbHJlYWR5IGV4aXN0cyBvciBub3QsIGl0cyBgYGNoYXJzZXRgYAotICAgICAgcGFyYW1ldGVyIHdpbGwgYmUgc2V0IHRvICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0Ki4gICBJZgotICAgICAgKmNoYXJzZXQuaW5wdXRfY2hhcnNldCogYW5kICpjaGFyc2V0Lm91dHB1dF9jaGFyc2V0KiBkaWZmZXIsIHRoZSBwYXlsb2FkCi0gICAgICB3aWxsIGJlIHJlLWVuY29kZWQgdG8gdGhlICpvdXRwdXRfY2hhcnNldCouICBJZiB0aGVyZSBpcyBubyBleGlzdGluZwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciwgdGhlbiB0aGUgcGF5bG9hZCB3aWxsIGJlCi0gICAgICB0cmFuc2Zlci1lbmNvZGVkLCBpZiBuZWVkZWQsIHVzaW5nIHRoZSBzcGVjaWZpZWQKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAsIGFuZCBhIGhlYWRlciB3aXRoIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZQotICAgICAgd2lsbCBiZSBhZGRlZC4gIElmIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcgotICAgICAgYWxyZWFkeSBleGlzdHMsIHRoZSBwYXlsb2FkIGlzIGFzc3VtZWQgdG8gYWxyZWFkeSBiZSBjb3JyZWN0bHkgZW5jb2RlZAotICAgICAgdXNpbmcgdGhhdCA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgYW5kIGlzIG5vdCBtb2RpZmllZC4KLQotICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXQoKQotCi0gICAgICBSZXR1cm4gdGhlIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgICAgbWVzc2FnZSdzIHBheWxvYWQuCi0KLSAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgYSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCi0gICBtZXNzYWdlJ3MgOnJmYzpgMjgyMmAgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCB0aGUgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQorICAgbWVzc2FnZSdzIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKICAgIGJldHdlZW4gdGhlc2UgbWV0aG9kcyBhbmQgYSBub3JtYWwgbWFwcGluZyAoaS5lLiBkaWN0aW9uYXJ5KSBpbnRlcmZhY2UuICBGb3IKICAgIGV4YW1wbGUsIGluIGEgZGljdGlvbmFyeSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXMsIGJ1dCBoZXJlIHRoZXJlIG1heSBiZQogICAgZHVwbGljYXRlIG1lc3NhZ2UgaGVhZGVycy4gIEFsc28sIGluIGRpY3Rpb25hcmllcyB0aGVyZSBpcyBubyBndWFyYW50ZWVkCi0gICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0LAotICAgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbAotICAgbWVzc2FnZSwgb3Igd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueSBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbgotICAgcmUtYWRkZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgbGlzdC4KKyAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGFuIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgb2JqZWN0LCBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlCisgICBvcmlnaW5hbCBtZXNzYWdlLCBvciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgbGF0ZXIuICBBbnkKKyAgIGhlYWRlciBkZWxldGVkIGFuZCB0aGVuIHJlLWFkZGVkIGlzIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZQorICAgaGVhZGVyIGxpc3QuCiAKLSAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQgbWF4aW1hbAotICAgY29udmVuaWVuY2UuCisgICBUaGVzZSBzZW1hbnRpYyBkaWZmZXJlbmNlcyBhcmUgaW50ZW50aW9uYWwgYW5kIGFyZSBiaWFzZWQgdG93YXJkCisgICBjb252ZW5pZW5jZSBpbiB0aGUgbW9zdCBjb21tb24gdXNlIGNhc2VzLgogCiAgICBOb3RlIHRoYXQgaW4gYWxsIGNhc2VzLCBhbnkgZW52ZWxvcGUgaGVhZGVyIHByZXNlbnQgaW4gdGhlIG1lc3NhZ2UgaXMgbm90CiAgICBpbmNsdWRlZCBpbiB0aGUgbWFwcGluZyBpbnRlcmZhY2UuCiAKLSAgIEluIGEgbW9kZWwgZ2VuZXJhdGVkIGZyb20gYnl0ZXMsIGFueSBoZWFkZXIgdmFsdWVzIHRoYXQgKGluIGNvbnRyYXZlbnRpb24gb2YKLSAgIHRoZSBSRkNzKSBjb250YWluIG5vbi1BU0NJSSBieXRlcyB3aWxsLCB3aGVuIHJldHJpZXZlZCB0aHJvdWdoIHRoaXMKLSAgIGludGVyZmFjZSwgYmUgcmVwcmVzZW50ZWQgYXMgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0cyB3aXRoCi0gICBhIGNoYXJzZXQgb2YgYHVua25vd24tOGJpdGAuCi0KIAogICAgLi4gbWV0aG9kOjogX19sZW5fXygpCiAKQEAgLTI2NCw4ICsxNzksOCBAQAogICAgLi4gbWV0aG9kOjogX19jb250YWluc19fKG5hbWUpCiAKICAgICAgIFJldHVybiB0cnVlIGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgYSBmaWVsZCBuYW1lZCAqbmFtZSouIE1hdGNoaW5nIGlzCi0gICAgICBkb25lIGNhc2UtaW5zZW5zaXRpdmVseSBhbmQgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcgY29sb24uCi0gICAgICBVc2VkIGZvciB0aGUgYGBpbmBgIG9wZXJhdG9yLCBlLmcuOjoKKyAgICAgIGRvbmUgd2l0aG91dCByZWdhcmQgdG8gY2FzZSBhbmQgKm5hbWUqIGRvZXMgbm90IGluY2x1ZGUgdGhlIHRyYWlsaW5nCisgICAgICBjb2xvbi4gIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IuICBGb3IgZXhhbXBsZTo6CiAKICAgICAgICAgICAgaWYgJ21lc3NhZ2UtaWQnIGluIG15TWVzc2FnZToKICAgICAgICAgICAgICAgcHJpbnQoJ01lc3NhZ2UtSUQ6JywgbXlNZXNzYWdlWydtZXNzYWdlLWlkJ10pCkBAIC0yNzMsMjAgKzE4OCwyMyBAQAogCiAgICAuLiBtZXRob2Q6OiBfX2dldGl0ZW1fXyhuYW1lKQogCi0gICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZQorICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgKm5hbWUqIGRvZXMgbm90IGluY2x1ZGUgdGhlCiAgICAgICBjb2xvbiBmaWVsZCBzZXBhcmF0b3IuICBJZiB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIGBgTm9uZWBgIGlzIHJldHVybmVkOyBhCiAgICAgICA6ZXhjOmBLZXlFcnJvcmAgaXMgbmV2ZXIgcmFpc2VkLgogCiAgICAgICBOb3RlIHRoYXQgaWYgdGhlIG5hbWVkIGZpZWxkIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1lc3NhZ2UncwogICAgICAgaGVhZGVycywgZXhhY3RseSB3aGljaCBvZiB0aG9zZSBmaWVsZCB2YWx1ZXMgd2lsbCBiZSByZXR1cm5lZCBpcwogICAgICAgdW5kZWZpbmVkLiAgVXNlIHRoZSA6bWV0aDpgZ2V0X2FsbGAgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUKLSAgICAgIGV4dGFudCBuYW1lZCBoZWFkZXJzLgorICAgICAgZXh0YW50IGhlYWRlcnMgbmFtZWQgKm5hbWUqLgorCisgICAgICBVc2luZyB0aGUgc3RhbmRhcmQgKG5vbi1gYGNvbXBhdDMyYGApIHBvbGljaWVzLCB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYW4KKyAgICAgIGluc3RhbmNlIG9mIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBlbWFpbC5oZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyYC4KIAogCiAgICAuLiBtZXRob2Q6OiBfX3NldGl0ZW1fXyhuYW1lLCB2YWwpCiAKICAgICAgIEFkZCBhIGhlYWRlciB0byB0aGUgbWVzc2FnZSB3aXRoIGZpZWxkIG5hbWUgKm5hbWUqIGFuZCB2YWx1ZSAqdmFsKi4gIFRoZQotICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGZpZWxkcy4KKyAgICAgIGZpZWxkIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UncyBleGlzdGluZyBoZWFkZXJzLgogCiAgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzICpub3QqIG92ZXJ3cml0ZSBvciBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlciB3aXRoIHRoZSBzYW1lCiAgICAgICBuYW1lLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBoZWFkZXIgaXMgdGhlIG9ubHkgb25lIHByZXNlbnQgaW4gdGhlCkBAIC0yOTUsNiArMjEzLDEzIEBACiAgICAgICAgICBkZWwgbXNnWydzdWJqZWN0J10KICAgICAgICAgIG1zZ1snc3ViamVjdCddID0gJ1B5dGhvbiByb29seiEnCiAKKyAgICAgIElmIHRoZSA6bW9kOmBwb2xpY3lgIGRlZmluZXMgY2VydGFpbiBoYWRlcnMgdG8gYmUgdW5pcXVlIChhcyB0aGUgc3RhbmRhcmQKKyAgICAgIHBvbGljaWVzIGRvKSwgdGhpcyBtZXRob2QgbWF5IHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiBhbiBhdHRlbXB0CisgICAgICBpcyBtYWRlIHRvIGFzc2lnbiBhIHZhbHVlIHRvIHN1Y2ggYSBoZWFkZXIgd2hlbiBvbmUgYWxyZWFkeSBleGlzdHMuICBUaGlzCisgICAgICBiZWhhdmlvciBpcyBpbnRlbnRpb25hbCBmb3IgY29uc2lzdGVuY3kncyBzYWtlLCBidXQgZG8gbm90IGRlcGVuZCBvbiBpdAorICAgICAgYXMgd2UgbWF5IGNob29zZSB0byBtYWtlIHN1Y2ggYXNzaWdubWVudHMgZG8gYW4gYXV0b21hdGljIGRlbGV0aW9uIG9mIHRoZQorICAgICAgZXhpc3RpbmcgaGVhZGVyIGluIHRoZSBmdXR1cmUuCisKIAogICAgLi4gbWV0aG9kOjogX19kZWxpdGVtX18obmFtZSkKIApAQCAtMzIzLDkgKzI0OCwxMCBAQAogCiAgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICBUaGlzIGlzIGlkZW50aWNhbCB0bwogICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCBleGNlcHQgdGhhdCBvcHRpb25hbCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgaWYgdGhlCi0gICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorICAgICAgbmFtZWQgaGVhZGVyIGlzIG1pc3NpbmcgKCpmYWlsb2JqKiBkZWZhdWx0cyB0byBgYE5vbmVgYCkuCiAKLSAgIEhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB1c2VmdWwgbWV0aG9kczoKKworICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBoZWFkZXIgcmVsYXRlZCBtZXRob2RzOgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9hbGwobmFtZSwgZmFpbG9iaj1Ob25lKQpAQCAtMzQ2LDE3ICsyNzIsMTkgQEAKICAgICAgIHRha2VuIGFzIHRoZSBwYXJhbWV0ZXIgbmFtZSwgd2l0aCB1bmRlcnNjb3JlcyBjb252ZXJ0ZWQgdG8gZGFzaGVzIChzaW5jZQogICAgICAgZGFzaGVzIGFyZSBpbGxlZ2FsIGluIFB5dGhvbiBpZGVudGlmaWVycykuICBOb3JtYWxseSwgdGhlIHBhcmFtZXRlciB3aWxsCiAgICAgICBiZSBhZGRlZCBhcyBgYGtleT0idmFsdWUiYGAgdW5sZXNzIHRoZSB2YWx1ZSBpcyBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZQotICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCi0gICAgICBpdCBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgdGhyZWUgdHVwbGUgaW4gdGhlIGZvcm1hdAotICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLCB3aGVyZSBgYENIQVJTRVRgYCBpcyBhIHN0cmluZyBuYW1pbmcgdGhlCi0gICAgICBjaGFyc2V0IHRvIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSB2YWx1ZSwgYGBMQU5HVUFHRWBgIGNhbiB1c3VhbGx5IGJlIHNldAotICAgICAgdG8gYGBOb25lYGAgb3IgdGhlIGVtcHR5IHN0cmluZyAoc2VlIDpyZmM6YDIyMzFgIGZvciBvdGhlciBwb3NzaWJpbGl0aWVzKSwKLSAgICAgIGFuZCBgYFZBTFVFYGAgaXMgdGhlIHN0cmluZyB2YWx1ZSBjb250YWluaW5nIG5vbi1BU0NJSSBjb2RlIHBvaW50cy4gIElmCi0gICAgICBhIHRocmVlIHR1cGxlIGlzIG5vdCBwYXNzZWQgYW5kIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKLSAgICAgIGl0IGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBpbiA6cmZjOmAyMjMxYCBmb3JtYXQgdXNpbmcgYSBgYENIQVJTRVRgYAotICAgICAgb2YgYGB1dGYtOGBgIGFuZCBhIGBgTEFOR1VBR0VgYCBvZiBgYE5vbmVgYC4KKyAgICAgIG9ubHkgdGhlIGtleSB3aWxsIGJlIGFkZGVkLgogCi0gICAgICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIHRoZSBjaGFyc2V0IGFuZCBsYW5ndWFnZSBtYXkKKyAgICAgIGJlIGV4cGxpY2l0bHkgY29udHJvbGxlZCBieSBzcGVjaWZpbmcgdGhlIHZhbHVlIGFzIGEgdGhyZWUgdHVwbGUgaW4gdGhlCisgICAgICBmb3JtYXQgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLCB3aGVyZSBgYENIQVJTRVRgYCBpcyBhIHN0cmluZworICAgICAgbmFtaW5nIHRoZSBjaGFyc2V0IHRvIGJlIHVzZWQgdG8gZW5jb2RlIHRoZSB2YWx1ZSwgYGBMQU5HVUFHRWBgIGNhbgorICAgICAgdXN1YWxseSBiZSBzZXQgdG8gYGBOb25lYGAgb3IgdGhlIGVtcHR5IHN0cmluZyAoc2VlIDpyZmM6YDIyMzFgIGZvciBvdGhlcgorICAgICAgcG9zc2liaWxpdGllcyksIGFuZCBgYFZBTFVFYGAgaXMgdGhlIHN0cmluZyB2YWx1ZSBjb250YWluaW5nIG5vbi1BU0NJSQorICAgICAgY29kZSBwb2ludHMuICBJZiBhIHRocmVlIHR1cGxlIGlzIG5vdCBwYXNzZWQgYW5kIHRoZSB2YWx1ZSBjb250YWlucworICAgICAgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIGl0IGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBpbiA6cmZjOmAyMjMxYCBmb3JtYXQKKyAgICAgIHVzaW5nIGEgYGBDSEFSU0VUYGAgb2YgYGB1dGYtOGBgIGFuZCBhIGBgTEFOR1VBR0VgYCBvZiBgYE5vbmVgYC4KKworICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOjoKIAogICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPSdidWQuZ2lmJykKIApAQCAtMzY0LDM3ICsyOTIsMzUgQEAKIAogICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ImJ1ZC5naWYiCiAKLSAgICAgIEFuIGV4YW1wbGUgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVyczo6CisgICAgICBBbiBleGFtcGxlIG9mIHRoZSBleHRlbmRlZCBpbnRlcmZhY2Ugd2l0aCBub24tQVNDSUkgY2hhcmFjdGVyczo6CiAKICAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9KCdpc28tODg1OS0xJywgJycsICdGdcOfYmFsbGVyLnBwdCcpKQogCi0gICAgICBXaGljaCBwcm9kdWNlcyA6OgotCi0gICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZSo9Imlzby04ODU5LTEnJ0Z1JURGYmFsbGVyLnBwdCIKLQogCiAgICAuLiBtZXRob2Q6OiByZXBsYWNlX2hlYWRlcihfbmFtZSwgX3ZhbHVlKQogCiAgICAgICBSZXBsYWNlIGEgaGVhZGVyLiAgUmVwbGFjZSB0aGUgZmlyc3QgaGVhZGVyIGZvdW5kIGluIHRoZSBtZXNzYWdlIHRoYXQKLSAgICAgIG1hdGNoZXMgKl9uYW1lKiwgcmV0YWluaW5nIGhlYWRlciBvcmRlciBhbmQgZmllbGQgbmFtZSBjYXNlLiAgSWYgbm8KLSAgICAgIG1hdGNoaW5nIGhlYWRlciB3YXMgZm91bmQsIGEgOmV4YzpgS2V5RXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIG1hdGNoZXMgKl9uYW1lKiwgcmV0YWluaW5nIGhlYWRlciBvcmRlciBhbmQgZmllbGQgbmFtZSBjYXNlIG9mIHRoZQorICAgICAgb3JpZ2luYWwgaGVhZGVyLiAgSWYgbm8gbWF0Y2hpbmcgaGVhZGVyIGlzIGZvdW5kLCByYWlzZSBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfdHlwZSgpCiAKLSAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgY29lcmNlZCB0bwotICAgICAgbG93ZXIgY2FzZSBvZiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgd2FzIG5vCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgdGhlIGRlZmF1bHQgdHlwZSBhcyBnaXZlbgotICAgICAgYnkgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgIHdpbGwgYmUgcmV0dXJuZWQuICBTaW5jZSBhY2NvcmRpbmcgdG8KLSAgICAgIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgCi0gICAgICB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4KKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZSwgY29lcmNlZCB0byBsb3dlciBjYXNlIG9mIHRoZSBmb3JtCisgICAgICA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBpbiB0aGUgbWVzc2FnZSByZXR1cm4gdGhlIHZhbHVlIHJldHVybmVkIGJ5CisgICAgICA6bWV0aDpgZ2V0X2RlZmF1bHRfdHlwZWAuICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzCisgICAgICBpbnZhbGlkLCByZXR1cm4gYGB0ZXh0L3BsYWluYGAuCiAKLSAgICAgIDpyZmM6YDIwNDVgIGRlZmluZXMgYSBtZXNzYWdlJ3MgZGVmYXVsdCB0eXBlIHRvIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAKLSAgICAgIHVubGVzcyBpdCBhcHBlYXJzIGluc2lkZSBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVyLCBpbgotICAgICAgd2hpY2ggY2FzZSBpdCB3b3VsZCBiZSA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4gIElmIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGhhcyBhbiBpbnZhbGlkIHR5cGUgc3BlY2lmaWNhdGlvbiwKLSAgICAgIDpyZmM6YDIwNDVgIG1hbmRhdGVzIHRoYXQgdGhlIGRlZmF1bHQgdHlwZSBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gLgorICAgICAgKEFjY29yZGluZyB0byA6cmZjOmAyMDQ1YCwgbWVzc2FnZXMgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHR5cGUsCisgICAgICA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAgd2lsbCBhbHdheXMgcmV0dXJuIGEgdmFsdWUuICA6cmZjOmAyMDQ1YCBkZWZpbmVzCisgICAgICBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCB1bmxlc3MgaXQgYXBwZWFycworICAgICAgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluIHdoaWNoIGNhc2UgaXQgd291bGQKKyAgICAgIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcgorICAgICAgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLCA6cmZjOmAyMDQ1YCBtYW5kYXRlcyB0aGF0IHRoZSBkZWZhdWx0CisgICAgICB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuKQogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X21haW50eXBlKCkKQEAgLTQyMCw4MSArMzQ2LDQxIEBACiAgICAuLiBtZXRob2Q6OiBzZXRfZGVmYXVsdF90eXBlKGN0eXBlKQogCiAgICAgICBTZXQgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlLiAgKmN0eXBlKiBzaG91bGQgZWl0aGVyIGJlCi0gICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLCBhbHRob3VnaCB0aGlzIGlzIG5vdAotICAgICAgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfcGFyYW1zKGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCi0KLSAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIHBhcmFtZXRlcnMsIGFzIGEgbGlzdC4KLSAgICAgIFRoZSBlbGVtZW50cyBvZiB0aGUgcmV0dXJuZWQgbGlzdCBhcmUgMi10dXBsZXMgb2Yga2V5L3ZhbHVlIHBhaXJzLCBhcwotICAgICAgc3BsaXQgb24gdGhlIGBgJz0nYGAgc2lnbi4gIFRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGUgYGAnPSdgYCBpcyB0aGUga2V5LAotICAgICAgd2hpbGUgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyB0aGUgdmFsdWUuICBJZiB0aGVyZSBpcyBubyBgYCc9J2BgIHNpZ24gaW4KLSAgICAgIHRoZSBwYXJhbWV0ZXIgdGhlIHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgYXMKLSAgICAgIGRlc2NyaWJlZCBpbiA6bWV0aDpgZ2V0X3BhcmFtYCBhbmQgaXMgdW5xdW90ZWQgaWYgb3B0aW9uYWwgKnVucXVvdGUqIGlzCi0gICAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpLgotCi0gICAgICBPcHRpb25hbCAqZmFpbG9iaiogaXMgdGhlIG9iamVjdCB0byByZXR1cm4gaWYgdGhlcmUgaXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIE9wdGlvbmFsICpoZWFkZXIqIGlzIHRoZSBoZWFkZXIgdG8KLSAgICAgIHNlYXJjaCBpbnN0ZWFkIG9mIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbShwYXJhbSwgZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKLQotICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyJ3MgcGFyYW1ldGVyCi0gICAgICAqcGFyYW0qIGFzIGEgc3RyaW5nLiAgSWYgdGhlIG1lc3NhZ2UgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCi0gICAgICBoZWFkZXIgb3IgaWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkCi0gICAgICAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyKiBpZiBnaXZlbiwgc3BlY2lmaWVzIHRoZSBtZXNzYWdlIGhlYWRlciB0byB1c2UgaW5zdGVhZCBvZgotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCi0KLSAgICAgIFBhcmFtZXRlciBrZXlzIGFyZSBhbHdheXMgY29tcGFyZWQgY2FzZSBpbnNlbnNpdGl2ZWx5LiAgVGhlIHJldHVybiB2YWx1ZQotICAgICAgY2FuIGVpdGhlciBiZSBhIHN0cmluZywgb3IgYSAzLXR1cGxlIGlmIHRoZSBwYXJhbWV0ZXIgd2FzIDpyZmM6YDIyMzFgCi0gICAgICBlbmNvZGVkLiAgV2hlbiBpdCdzIGEgMy10dXBsZSwgdGhlIGVsZW1lbnRzIG9mIHRoZSB2YWx1ZSBhcmUgb2YgdGhlIGZvcm0KLSAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYC4gIE5vdGUgdGhhdCBib3RoIGBgQ0hBUlNFVGBgIGFuZAotICAgICAgYGBMQU5HVUFHRWBgIGNhbiBiZSBgYE5vbmVgYCwgaW4gd2hpY2ggY2FzZSB5b3Ugc2hvdWxkIGNvbnNpZGVyIGBgVkFMVUVgYAotICAgICAgdG8gYmUgZW5jb2RlZCBpbiB0aGUgYGB1cy1hc2NpaWBgIGNoYXJzZXQuICBZb3UgY2FuIHVzdWFsbHkgaWdub3JlCi0gICAgICBgYExBTkdVQUdFYGAuCi0KLSAgICAgIElmIHlvdXIgYXBwbGljYXRpb24gZG9lc24ndCBjYXJlIHdoZXRoZXIgdGhlIHBhcmFtZXRlciB3YXMgZW5jb2RlZCBhcyBpbgotICAgICAgOnJmYzpgMjIzMWAsIHlvdSBjYW4gY29sbGFwc2UgdGhlIHBhcmFtZXRlciB2YWx1ZSBieSBjYWxsaW5nCi0gICAgICA6ZnVuYzpgZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZWAsIHBhc3NpbmcgaW4gdGhlIHJldHVybiB2YWx1ZQotICAgICAgZnJvbSA6bWV0aDpgZ2V0X3BhcmFtYC4gIFRoaXMgd2lsbCByZXR1cm4gYSBzdWl0YWJseSBkZWNvZGVkIFVuaWNvZGUKLSAgICAgIHN0cmluZyB3aGVuIHRoZSB2YWx1ZSBpcyBhIHR1cGxlLCBvciB0aGUgb3JpZ2luYWwgc3RyaW5nIHVucXVvdGVkIGlmIGl0Ci0gICAgICBpc24ndC4gIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgcmF3cGFyYW0gPSBtc2cuZ2V0X3BhcmFtKCdmb28nKQotICAgICAgICAgcGFyYW0gPSBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlKHJhd3BhcmFtKQotCi0gICAgICBJbiBhbnkgY2FzZSwgdGhlIHBhcmFtZXRlciB2YWx1ZSAoZWl0aGVyIHRoZSByZXR1cm5lZCBzdHJpbmcsIG9yIHRoZQotICAgICAgYGBWQUxVRWBgIGl0ZW0gaW4gdGhlIDMtdHVwbGUpIGlzIGFsd2F5cyB1bnF1b3RlZCwgdW5sZXNzICp1bnF1b3RlKiBpcyBzZXQKLSAgICAgIHRvIGBgRmFsc2VgYC4KKyAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAsIGFsdGhvdWdoIHRoaXMgaXMKKyAgICAgIG5vdCBlbmZvcmNlZC4gIFRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RvcmVkIGluIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBzbyBpdCBvbmx5IGFmZmVjdHMgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgdGhlIGBgZ2V0X2NvbnRlbnRfdHlwZWBgIG1ldGhvZHMgd2hlbiBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyIGlzIHByZXNlbnQgaW4gdGhlIG1lc3NhZ2UuCiAKIAogICAgLi4gbWV0aG9kOjogc2V0X3BhcmFtKHBhcmFtLCB2YWx1ZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0PU5vbmUsIGxhbmd1YWdlPScnLCByZXBsYWNlPUZhbHNlKQogCiAgICAgICBTZXQgYSBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmIHRoZQotICAgICAgcGFyYW1ldGVyIGFscmVhZHkgZXhpc3RzIGluIHRoZSBoZWFkZXIsIGl0cyB2YWx1ZSB3aWxsIGJlIHJlcGxhY2VkIHdpdGgKLSAgICAgICp2YWx1ZSouICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFzIG5vdCB5ZXQgYmVlbiBkZWZpbmVkCi0gICAgICBmb3IgdGhpcyBtZXNzYWdlLCBpdCB3aWxsIGJlIHNldCB0byA6bWltZXR5cGU6YHRleHQvcGxhaW5gIGFuZCB0aGUgbmV3Ci0gICAgICBwYXJhbWV0ZXIgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCBhcyBwZXIgOnJmYzpgMjA0NWAuCisgICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgcmVwbGFjZSBpdHMgdmFsdWUgd2l0aCAqdmFsdWUqLgorICAgICAgV2hlbiAqaGVhZGVyKiBpcyBgYENvbnRlbnQtVHlwZWBgICh0aGUgZGVmYXVsdCkgYW5kIHRoZSBoZWFkZXIgZG9lcyBub3QKKyAgICAgIHlldCBleGlzdCBpbiB0aGUgbWVzc2FnZSwgYWRkIGl0LCBzZXQgaXRzIHZhbHVlIHRvCisgICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gLCBhbmQgYXBwZW5kIHRoZSBuZXcgcGFyYW1ldGVyIHZhbHVlLiAgT3B0aW9uYWwKKyAgICAgICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBoZWFkZXIgdG8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCiAKLSAgICAgIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSBoZWFkZXIgdG8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLCBhbmQgYWxsIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5Ci0gICAgICB1bmxlc3Mgb3B0aW9uYWwgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLgotCi0gICAgICBJZiBvcHRpb25hbCAqY2hhcnNldCogaXMgc3BlY2lmaWVkLCB0aGUgcGFyYW1ldGVyIHdpbGwgYmUgZW5jb2RlZAotICAgICAgYWNjb3JkaW5nIHRvIDpyZmM6YDIyMzFgLiBPcHRpb25hbCAqbGFuZ3VhZ2UqIHNwZWNpZmllcyB0aGUgUkZDIDIyMzEKLSAgICAgIGxhbmd1YWdlLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBCb3RoICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKgotICAgICAgc2hvdWxkIGJlIHN0cmluZ3MuCisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsIHRoZSBjaGFyc2V0IGFuZCBsYW5ndWFnZSBtYXkKKyAgICAgIGJlIGV4cGxpY2l0eSBzcGVjaWZpZWQgdXNpbmcgdGhlIG9wdGlvbmFsICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKgorICAgICAgcGFyYW1ldGVycy4gIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSA6cmZjOmAyMjMxYCBsYW5ndWFnZSwKKyAgICAgIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqIHNob3VsZCBiZQorICAgICAgc3RyaW5ncy4gIFRoZSBkZWZhdWx0IGlzIHRvIHVzZSB0aGUgYGB1dGY4YGAgKmNoYXJzZXQqIGFuZCBgYE5vbmVgYCBmb3IKKyAgICAgIHRoZSAqbGFuZ3VhZ2UqLgogCiAgICAgICBJZiAqcmVwbGFjZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGhlYWRlciBpcyBtb3ZlZCB0byB0aGUKICAgICAgIGVuZCBvZiB0aGUgbGlzdCBvZiBoZWFkZXJzLiAgSWYgKnJlcGxhY2UqIGlzIGBgVHJ1ZWBgLCB0aGUgaGVhZGVyCiAgICAgICB3aWxsIGJlIHVwZGF0ZWQgaW4gcGxhY2UuCiAKKyAgICAgIFVzZSBvZiB0aGUgKnJlcXVvdGUqIHBhcmFtZXRlciB3aXRoIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzIGlzCisgICAgICBkZXByZWNhdGVkLgorCisgICAgICBOb3RlIHRoYXQgZXhpc3RpbmcgcGFyYW1ldGVyIHZhbHVlcyBvZiBoZWFkZXJzIG1heSBiZSBhY2Nlc3NlZCB0aHJvdWdoCisgICAgICB0aGUgOmF0dHI6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyLnBhcmFtc2AgYXR0cmlidXRlIG9mIHRoZQorICAgICAgaGVhZGVyIHZhbHVlIChmb3IgZXhhbXBsZSwgYGBtc2dbJ0NvbnRlbnQtVHlwZSddLnBhcmFtc1snY2hhcnNldCddYGAuCisKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IGBgcmVwbGFjZWBgIGtleXdvcmQgd2FzIGFkZGVkLgogCiAKQEAgLTUwMiwyNSArMzg4LDExIEBACiAKICAgICAgIFJlbW92ZSB0aGUgZ2l2ZW4gcGFyYW1ldGVyIGNvbXBsZXRlbHkgZnJvbSB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKICAgICAgIGhlYWRlci4gIFRoZSBoZWFkZXIgd2lsbCBiZSByZS13cml0dGVuIGluIHBsYWNlIHdpdGhvdXQgdGhlIHBhcmFtZXRlciBvcgotICAgICAgaXRzIHZhbHVlLiAgQWxsIHZhbHVlcyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkgdW5sZXNzICpyZXF1b3RlKiBpcwotICAgICAgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4KLSAgICAgIGFsdGVybmF0aXZlIHRvIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorICAgICAgaXRzIHZhbHVlLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIHRvCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KIAotCi0gICAuLiBtZXRob2Q6OiBzZXRfdHlwZSh0eXBlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSkKLQotICAgICAgU2V0IHRoZSBtYWluIHR5cGUgYW5kIHN1YnR5cGUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAotICAgICAgaGVhZGVyLiAqdHlwZSogbXVzdCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLAotICAgICAgb3RoZXJ3aXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgotCi0gICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBrZWVwaW5nIGFsbAotICAgICAgdGhlIHBhcmFtZXRlcnMgaW4gcGxhY2UuICBJZiAqcmVxdW90ZSogaXMgYGBGYWxzZWBgLCB0aGlzIGxlYXZlcyB0aGUKLSAgICAgIGV4aXN0aW5nIGhlYWRlcidzIHF1b3RpbmcgYXMgaXMsIG90aGVyd2lzZSB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZAotICAgICAgKHRoZSBkZWZhdWx0KS4KLQotICAgICAgQW4gYWx0ZXJuYXRpdmUgaGVhZGVyIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlICpoZWFkZXIqIGFyZ3VtZW50LiBXaGVuIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIHNldCBhIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gCi0gICAgICBoZWFkZXIgaXMgYWxzbyBhZGRlZC4KKyAgICAgIFVzZSBvZiB0aGUgKnJlcXVvdGUqIHBhcmFtZXRlciB3aXRoIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzIGlzCisgICAgICBkZXByZWNhdGVkLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmYWlsb2JqPU5vbmUpCkBAIC01NDksMTIgKzQyMSwxMSBAQAogICAgICAgbmVjZXNzYXJ5LiAgQSA6ZXhjOmB+ZW1haWwuZXJyb3JzLkhlYWRlclBhcnNlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUKICAgICAgIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCiAKLSAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IHRoYW4gZGVsZXRpbmcgdGhlIG9sZAorICAgICAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgbWV0aG9kIGlzIHN1YnRseSBkaWZmZXJlbnQgZnJvbSBkZWxldGluZyB0aGUgb2xkCiAgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYW5kIGFkZGluZyBhIG5ldyBvbmUgd2l0aCB0aGUgbmV3CiAgICAgICBib3VuZGFyeSB2aWEgOm1ldGg6YGFkZF9oZWFkZXJgLCBiZWNhdXNlIDptZXRoOmBzZXRfYm91bmRhcnlgIHByZXNlcnZlcwogICAgICAgdGhlIG9yZGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIGxpc3Qgb2YKLSAgICAgIGhlYWRlcnMuIEhvd2V2ZXIsIGl0IGRvZXMgKm5vdCogcHJlc2VydmUgYW55IGNvbnRpbnVhdGlvbiBsaW5lcyB3aGljaCBtYXkKLSAgICAgIGhhdmUgYmVlbiBwcmVzZW50IGluIHRoZSBvcmlnaW5hbCA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisgICAgICBoZWFkZXJzLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaj1Ob25lKQpAQCAtNTYzLDkgKzQzNCw2IEBACiAgICAgICBjb2VyY2VkIHRvIGxvd2VyIGNhc2UuICBJZiB0aGVyZSBpcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9yIGlmCiAgICAgICB0aGF0IGhlYWRlciBoYXMgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQuCiAKLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gOm1ldGg6YGdldF9jaGFyc2V0YCB3aGljaCByZXR1cm5zIHRoZQotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBmb3IgdGhlIGRlZmF1bHQgZW5jb2Rpbmcgb2YgdGhlIG1lc3NhZ2UgYm9keS4KLQogCiAgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldHMoZmFpbG9iaj1Ob25lKQogCkBAIC01NzUsMTAgKzQ0MywxOSBAQAogCiAgICAgICBFYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgd2lsbCBiZSBhIHN0cmluZyB3aGljaCBpcyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBmb3IgdGhlCi0gICAgICByZXByZXNlbnRlZCBzdWJwYXJ0LiAgSG93ZXZlciwgaWYgdGhlIHN1YnBhcnQgaGFzIG5vCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgb3IgaXMgbm90IG9mCi0gICAgICB0aGUgOm1pbWV0eXBlOmB0ZXh0YCBtYWluIE1JTUUgdHlwZSwgdGhlbiB0aGF0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxpc3QKLSAgICAgIHdpbGwgYmUgKmZhaWxvYmoqLgorICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIElmIHRoZSBzdWJwYXJ0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZiB0aGUgOm1pbWV0eXBlOmB0ZXh0YCBtYWluCisgICAgICBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0IHdpbGwgYmUgKmZhaWxvYmoqLgorCisKKyAgIC4uIG1ldGhvZDo6IGlzX2F0dGFjaG1lbnQKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZXJlIGlzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlcgorICAgICAgYW5kIGl0cyAoY2FzZSBpbnNlbnNpdGl2ZSkgdmFsdWUgaXMgYGBhdHRhY2htZW50YGAsIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjIKKyAgICAgICAgIGlzX2F0dGFjaG1lbnQgaXMgbm93IGEgbWV0aG9kIGluc3RlYWQgb2YgYSBwcm9wZXJ0eSwgZm9yIGNvbnNpc3RlbmN5CisgICAgICAgICB3aXRoIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfZGlzcG9zaXRpb24oKQpAQCAtNTkwLDYgKzQ2NywxMSBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgcmVsYXRlIHRvIGludGVycm9nYXRpbmcgYW5kIG1hbmlwdWxhdGluZyB0aGUgY29udGVudAorICAgKHBheWxvYWQpIG9mIHRoZSBtZXNzYWdlLgorCisKICAgIC4uIG1ldGhvZDo6IHdhbGsoKQogCiAgICAgICBUaGUgOm1ldGg6YHdhbGtgIG1ldGhvZCBpcyBhbiBhbGwtcHVycG9zZSBnZW5lcmF0b3Igd2hpY2ggY2FuIGJlIHVzZWQgdG8KQEAgLTY1MSw4ICs1MzMsMTY5IEBACiAgICAgICBpbnRvIHRoZSBzdWJwYXJ0cy4KIAogCi0gICA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgY2FuIGFsc28gb3B0aW9uYWxseSBjb250YWluIHR3byBpbnN0YW5jZSBhdHRyaWJ1dGVzLAotICAgd2hpY2ggY2FuIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBwbGFpbiB0ZXh0IG9mIGEgTUlNRSBtZXNzYWdlLgorICAgLi4gbWV0aG9kOjogZ2V0X2JvZHkocHJlZmVyZW5jZWxpc3Q9KCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKSkKKworICAgICAgUmV0dXJuIHRoZSBNSU1FIHBhcnQgdGhhdCBpcyB0aGUgYmVzdCBjYW5kaWRhdGUgdG8gYmUgdGhlICJib2R5IiBvZiB0aGUKKyAgICAgIG1lc3NhZ2UuCisKKyAgICAgICpwcmVmZXJlbmNlbGlzdCogbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MgZnJvbSB0aGUgc2V0IGBgcmVsYXRlZGBgLAorICAgICAgYGBodG1sYGAsIGFuZCBgYHBsYWluYGAsIGFuZCBpbmRpY2F0ZXMgdGhlIG9yZGVyIG9mIHByZWZlcmVuY2UgZm9yIHRoZQorICAgICAgY29udGVudCB0eXBlIG9mIHRoZSBwYXJ0IHJldHVybmVkLgorCisgICAgICBTdGFydCBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcyB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlCisgICAgICBgYGdldF9ib2R5YGAgbWV0aG9kIGlzIGNhbGxlZC4KKworICAgICAgSWYgYGByZWxhdGVkYGAgaXMgbm90IGluY2x1ZGVkIGluICpwcmVmZXJlbmNlbGlzdCosIGNvbnNpZGVyIHRoZSByb290CisgICAgICBwYXJ0IChvciBzdWJwYXJ0IG9mIHRoZSByb290IHBhcnQpIG9mIGFueSByZWxhdGVkIGVuY291bnRlcmVkIGFzIGEKKyAgICAgIGNhbmRpZGF0ZSBpZiB0aGUgKHN1Yi0pcGFydCBtYXRjaGVzIGEgcHJlZmVyZW5jZS4KKworICAgICAgV2hlbiBlbmNvdW50ZXJpbmcgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNoZWNrIHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyCisgICAgICBhbmQgaWYgYSBwYXJ0IHdpdGggYSBtYXRjaGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaXMgZm91bmQsIGNvbnNpZGVyCisgICAgICBvbmx5IGl0IHdoZW4gbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMuICBPdGhlcndpc2UgY29uc2lkZXIgb25seSB0aGUKKyAgICAgIGZpcnN0IChkZWZhdWx0IHJvb3QpIHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYC4KKworICAgICAgSWYgYSBwYXJ0IGhhcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIG9ubHkgY29uc2lkZXIKKyAgICAgIHRoZSBwYXJ0IGEgY2FuZGlkYXRlIG1hdGNoIGlmIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIGlzIGBgaW5saW5lYGAuCisKKyAgICAgIElmIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgbWF0Y2hlcyBhbnkgb2YgdGhlIHByZWZlcmVuY2VzIGluCisgICAgICAqcHJlZmVybmVjbGlzdCosIHJldHVybiBgYE5vbmVgYC4KKworICAgICAgTm90ZXM6ICgxKSBGb3IgbW9zdCBhcHBsaWNhdGlvbnMgdGhlIG9ubHkgKnByZWZlcmVuY2VsaXN0KiBjb21iaW5hdGlvbnMKKyAgICAgIHRoYXQgcmVhbGx5IG1ha2Ugc2Vuc2UgYXJlIGBgKCdwbGFpbicsKWBgLCBgYCgnaHRtbCcsICdwbGFpbicpYGAsIGFuZCB0aGUKKyAgICAgIGRlZmF1bHQgYGAoJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpYGAuICAoMikgQmVjYXVzZSBtYXRjaGluZyBzdGFydHMKKyAgICAgIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCBgYGdldF9ib2R5YGAgaXMgY2FsbGVkLCBjYWxsaW5nIGBgZ2V0X2JvZHlgYCBvbgorICAgICAgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgd2lsbCByZXR1cm4gdGhlIG9iamVjdCBpdHNlbGYgdW5sZXNzCisgICAgICAqcHJlZmVyZW5jZWxpc3QqIGhhcyBhIG5vbi1kZWZhdWx0IHZhbHVlLiAoMykgTWVzc2FnZXMgKG9yIG1lc3NhZ2UgcGFydHMpCisgICAgICB0aGF0IGRvIG5vdCBzcGVjaWZ5IGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgb3Igd2hvc2UKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBpbnZhbGlkIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiB0aGV5CisgICAgICBhcmUgb2YgdHlwZSBgYHRleHQvcGxhaW5gYCwgd2hpY2ggbWF5IG9jY2FzaW9uYWxseSBjYXVzZSBgYGdldF9ib2R5YGAgdG8KKyAgICAgIHJldHVybiB1bmV4cGVjdGVkIHJlc3VsdHMuCisKKworICAgLi4gbWV0aG9kOjogaXRlcl9hdHRhY2htZW50cygpCisKKyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgaW1tZWRpYXRlIHN1Yi1wYXJ0cyBvZiB0aGUgbWVzc2FnZQorICAgICAgdGhhdCBhcmUgbm90IGNhbmRpZGF0ZSAiYm9keSIgcGFydHMuICBUaGF0IGlzLCBza2lwIHRoZSBmaXJzdCBvY2N1cnJlbmNlCisgICAgICBvZiBlYWNoIG9mIGBgdGV4dC9wbGFpbmBgLCBgYHRleHQvaHRtbGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCisgICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgICh1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMKKyAgICAgIGF0dGFjaG1lbnRzIHZpYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGApLCBhbmQKKyAgICAgIHJldHVybiBhbGwgcmVtYWluaW5nIHBhcnRzLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEKKyAgICAgIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgcmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGFsbCB0aGUgcmVsYXRlZCBwYXJ0cworICAgICAgZXhjZXB0IHRoZSByb290IHBhcnQgKGllOiB0aGUgcGFydCBwb2ludGVkIHRvIGJ5IHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyLAorICAgICAgb3IgdGhlIGZpcnN0IHBhcnQgaWYgdGhlcmUgaXMgbm8gYGBzdGFydGBgIHBhcmFtZXRlciBvciB0aGUgYGBzdGFydGBgCisgICAgICBwYXJhbWV0ZXIgZG9lc24ndCBtYXRjaCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIG9mIGFueSBvZiB0aGUKKyAgICAgIHBhcnRzKS4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgb3IgYQorICAgICAgbm9uLWBgbXVsdGlwYXJ0YGAsIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvci4KKworCisgICAuLiBtZXRob2Q6OiBpdGVyX3BhcnRzKCkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlLAorICAgICAgd2hpY2ggd2lsbCBiZSBlbXB0eSBmb3IgYSBub24tYGBtdWx0aXBhcnRgYC4gIChTZWUgYWxzbworICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS53YWxrYC4pCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBDYWxsIHRoZSA6bWV0aDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyLkNvbnRlbnRNYW5hZ2VyLmdldF9jb250ZW50YCBtZXRob2QKKyAgICAgIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcKKyAgICAgIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZgorICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAorICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2NvbnRlbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBDYWxsIHRoZSA6bWV0aDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyLkNvbnRlbnRNYW5hZ2VyLnNldF9jb250ZW50YCBtZXRob2QKKyAgICAgIG9mIHRoZSAqY29udGVudF9tYW5hZ2VyKiwgcGFzc2luZyBzZWxmIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcKKyAgICAgIGFsb25nIGFueSBvdGhlciBhcmd1bWVudHMgb3Iga2V5d29yZHMgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZgorICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAorICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisKKworICAgLi4gbWV0aG9kOjogbWFrZV9yZWxhdGVkKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBtZXNzYWdlIGludG8gYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgbWVzc2FnZSwKKyAgICAgIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYQorICAgICAgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UKKyAgICAgIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeQorICAgICAgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogbWFrZV9hbHRlcm5hdGl2ZShib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAgaW50byBhCisgICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAKKyAgICAgIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgorICAgICAgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsCisgICAgICBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzCisgICAgICBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfbWl4ZWQoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgLCBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IgYQorICAgICAgYGBtdWx0aXBhcnQtYWx0ZXJuYXRpdmVgYCBpbnRvIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgbW92aW5nIGFueSBleGlzdGluZworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtYCBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZQorICAgICAgYGBtdWx0aXBhcnRgYC4gIElmICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZworICAgICAgaW4gdGhlIG11bHRpcGFydCwgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5CisgICAgICBjcmVhdGVkIHdoZW4gaXQgaXMgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfcmVsYXRlZCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQorICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwKKyAgICAgIGFuZCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKKyAgICAgIHRoZSBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGNhbGwgOm1ldGg6YG1ha2VfcmVsYXRlZGAgYW5kIHRoZW4KKyAgICAgIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcyBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLAorICAgICAgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKKyAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKyAgICAgIElmIHRoZSBhZGRlZCBwYXJ0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLAorICAgICAgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZSBgYGlubGluZWBgLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9hbHRlcm5hdGl2ZSgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKKyAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQorICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2FsbAorICAgICAgOm1ldGg6YG1ha2VfYWx0ZXJuYXRpdmVgIGFuZCB0aGVuIHByb2NlZWQgYXMgYWJvdmUuICBJZiB0aGUgbWVzc2FnZSBpcworICAgICAgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiBJZgorICAgICAgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZAorICAgICAgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2F0dGFjaG1lbnQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlIG9iamVjdCwKKyAgICAgIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgY2FsbCA6bWV0aDpgbWFrZV9taXhlZGAgYW5kIHRoZW4gcHJvY2VlZCBhcworICAgICAgYWJvdmUuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYAorICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLiAgSWYgdGhlIGFkZGVkIHBhcnQKKyAgICAgIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBhZGQgb25lIHdpdGggdGhlIHZhbHVlCisgICAgICBgYGF0dGFjaG1lbnRgYC4gIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIGJvdGggZm9yIGV4cGxpY2l0IGF0dGFjaG1lbnRzCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgIGFuZCBgYGlubGluZWBgIGF0dGFjaG1lbnRzCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZWApLCBieSBwYXNzaW5nIGFwcHJvcHJpYXRlCisgICAgICBvcHRpb25zIHRvIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgLgorCisKKyAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKKworICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIGhlYWRlcnMuCisKKworICAgLi4gbWV0aG9kOjogY2xlYXJfY29udGVudCgpCisKKyAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSA6ZXhjOmBDb250ZW50LWAgaGVhZGVycywgbGVhdmluZworICAgICAgYWxsIG90aGVyIGhlYWRlcnMgaW50YWN0IGFuZCBpbiB0aGVpciBvcmlnaW5hbCBvcmRlci4KKworCisgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgYXR0cmlidXRlczoKIAogCiAgICAuLiBhdHRyaWJ1dGU6OiBwcmVhbWJsZQpAQCAtNjgyLDExICs3MjUsOCBAQAogCiAgICAgICBUaGUgKmVwaWxvZ3VlKiBhdHRyaWJ1dGUgYWN0cyB0aGUgc2FtZSB3YXkgYXMgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlLAogICAgICAgZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgdGV4dCB0aGF0IGFwcGVhcnMgYmV0d2VlbiB0aGUgbGFzdCBib3VuZGFyeSBhbmQKLSAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuCi0KLSAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGVwaWxvZ3VlIHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgZm9yIHRoZQotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgdG8gcHJpbnQgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlCi0gICAgICBmaWxlLgorICAgICAgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZS4gIEFzIHdpdGggdGhlIDphdHRyOmB+RW1haWxNZXNzYWdlLnByZWFtYmxlYCwKKyAgICAgIGlmIHRoZXJlIGlzIG5vIGVwaWxvZyB0ZXh0IHRoaXMgYXR0cmlidXRlIHdpbGwgYmUgYGBOb25lYGAuCiAKIAogICAgLi4gYXR0cmlidXRlOjogZGVmZWN0cwpAQCAtNjk0LDMgKzczNCwxOCBAQAogICAgICAgVGhlICpkZWZlY3RzKiBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIGFsbCB0aGUgcHJvYmxlbXMgZm91bmQgd2hlbgogICAgICAgcGFyc2luZyB0aGlzIG1lc3NhZ2UuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbgogICAgICAgb2YgdGhlIHBvc3NpYmxlIHBhcnNpbmcgZGVmZWN0cy4KKworCisuLiBjbGFzczo6IE1JTUVQYXJ0KHBvbGljeT1kZWZhdWx0KQorCisgICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc3VicGFydCBvZiBhIE1JTUUgbWVzc2FnZS4gIEl0IGlzIGlkZW50aWNhbCB0bworICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCwgZXhjZXB0IHRoYXQgbm8gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycyBhcmUKKyAgICBhZGRlZCB3aGVuIDptZXRoOmB+RW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBpcyBjYWxsZWQsIHNpbmNlIHN1Yi1wYXJ0cyBkbworICAgIG5vdCBuZWVkIHRoZWlyIG93biA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuNCBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsCisgICAgICAgcGFja2FnZT5gLiAgRG9jcyBmb3IgbGVnYWN5IG1lc3NhZ2UgY2xhc3MgbW92ZWQgdG8KKyAgICAgICA6cmVmOmBjb21wYXQzMl9tZXNzYWdlYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKaW5kZXggODI5N2RlYS4uZDlkYWU5ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKQEAgLTgsNiArOCwxMSBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSXRzIGZ1bmN0aW9uYWxpdHkKK2lzIHBhcnRpYWxseSByZXBsYWNlZCBieSB0aGUgOm1vZDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyYCBpbiB0aGUgbmV3IEFQSSwgYnV0CitpbiBjZXJ0YWluIGFwcGxpY2F0aW9ucyB0aGVzZSBjbGFzc2VzIG1heSBzdGlsbCBiZSB1c2VmdWwsIGV2ZW4gaW4gbm9uLWxlZ2FjeQorY29kZS4KKwogT3JkaW5hcmlseSwgeW91IGdldCBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBieSBwYXNzaW5nIGEgZmlsZSBvciBzb21lIHRleHQgdG8KIGEgcGFyc2VyLCB3aGljaCBwYXJzZXMgdGhlIHRleHQgYW5kIHJldHVybnMgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBIb3dldmVyCiB5b3UgY2FuIGFsc28gYnVpbGQgYSBjb21wbGV0ZSBtZXNzYWdlIHN0cnVjdHVyZSBmcm9tIHNjcmF0Y2gsIG9yIGV2ZW4gaW5kaXZpZHVhbApAQCAtMjUsNyArMzAsNyBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5iYXNlCiAKLS4uIGNsYXNzOjogTUlNRUJhc2UoX21haW50eXBlLCBfc3VidHlwZSwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FQmFzZShfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmJhc2VgCiAKQEAgLTQxLDEwICs0NiwxNyBAQAogICAga2V5L3ZhbHVlIGRpY3Rpb25hcnkgYW5kIGlzIHBhc3NlZCBkaXJlY3RseSB0byA6bWV0aDpgTWVzc2FnZS5hZGRfaGVhZGVyCiAgICA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFkZF9oZWFkZXI+YC4KIAorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkLCAoZGVmYXVsdHMgdG8gdGhlCisgICA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3kpIGl0IHdpbGwgYmUgcGFzc2VkIHRvCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgLgorCiAgICBUaGUgOmNsYXNzOmBNSU1FQmFzZWAgY2xhc3MgYWx3YXlzIGFkZHMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIKICAgIChiYXNlZCBvbiAqX21haW50eXBlKiwgKl9zdWJ0eXBlKiwgYW5kICpfcGFyYW1zKiksIGFuZCBhCiAgICA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgKGFsd2F5cyBzZXQgdG8gYGAxLjBgYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgorCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLm5vbm11bHRpcGFydAogCkBAIC02Miw3ICs3NCw4IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLm11bHRpcGFydAogCi0uLiBjbGFzczo6IE1JTUVNdWx0aXBhcnQoX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRU11bHRpcGFydChfc3VidHlwZT0nbWl4ZWQnLCBib3VuZGFyeT1Ob25lLCBfc3VicGFydHM9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUubXVsdGlwYXJ0YAogCkBAIC04MiwxNCArOTUsMjAgQEAKICAgIHRvIHRoZSBtZXNzYWdlIGJ5IHVzaW5nIHRoZSA6bWV0aDpgTWVzc2FnZS5hdHRhY2gKICAgIDxlbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoPmAgbWV0aG9kLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFyZSB0YWtlbiBmcm9tCiAgICB0aGUga2V5d29yZCBhcmd1bWVudHMsIG9yIHBhc3NlZCBpbnRvIHRoZSAqX3BhcmFtcyogYXJndW1lbnQsIHdoaWNoIGlzIGEga2V5d29yZAogICAgZGljdGlvbmFyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmFwcGxpY2F0aW9uCiAKLS4uIGNsYXNzOjogTUlNRUFwcGxpY2F0aW9uKF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FQXBwbGljYXRpb24oX2RhdGEsIF9zdWJ0eXBlPSdvY3RldC1zdHJlYW0nLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmFwcGxpY2F0aW9uYAogCkBAIC0xMDksMTIgKzEyOCwxOCBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYXVkaW8KIAotLi4gY2xhc3M6OiBNSU1FQXVkaW8oX2F1ZGlvZGF0YSwgX3N1YnR5cGU9Tm9uZSwgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FQXVkaW8oX2F1ZGlvZGF0YSwgX3N1YnR5cGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5hdWRpb2AKIApAQCAtMTM3LDEyICsxNjIsMTggQEAKICAgIG9iamVjdCBhcyBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBiYXNlNjQuICBTZWUgdGhlCiAgICA6bW9kOmBlbWFpbC5lbmNvZGVyc2AgbW9kdWxlIGZvciBhIGxpc3Qgb2YgdGhlIGJ1aWx0LWluIGVuY29kZXJzLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgKl9wYXJhbXMqIGFyZSBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmltYWdlCiAKLS4uIGNsYXNzOjogTUlNRUltYWdlKF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUltYWdlKF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5pbWFnZWAKIApAQCAtMTY1LDEzICsxOTYsMTcgQEAKICAgIG9iamVjdCBhcyBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBiYXNlNjQuICBTZWUgdGhlCiAgICA6bW9kOmBlbWFpbC5lbmNvZGVyc2AgbW9kdWxlIGZvciBhIGxpc3Qgb2YgdGhlIGJ1aWx0LWluIGVuY29kZXJzLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgKl9wYXJhbXMqIGFyZSBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWltZS5iYXNlLk1JTUVCYXNlYAogICAgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5tZXNzYWdlCiAKLS4uIGNsYXNzOjogTUlNRU1lc3NhZ2UoX21zZywgX3N1YnR5cGU9J3JmYzgyMicpCisuLiBjbGFzczo6IE1JTUVNZXNzYWdlKF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInLCAqLCBwb2xpY3k9Y29tcGF0MzIpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5tZXNzYWdlYAogCkBAIC0xODQsMTAgKzIxOSwxNCBAQAogICAgT3B0aW9uYWwgKl9zdWJ0eXBlKiBzZXRzIHRoZSBzdWJ0eXBlIG9mIHRoZSBtZXNzYWdlOyBpdCBkZWZhdWx0cyB0bwogICAgOm1pbWV0eXBlOmByZmM4MjJgLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLnRleHQKIAotLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSkKKy4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUsICosIHBvbGljeT1jb21wYXQzMikKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLnRleHRgCiAKQEAgLTIxMSw1ICsyNTAsMTAgQEAKICAgIHdpbGwgYXV0b21hdGljYWxseSBlbmNvZGUgdGhlIG5ldyBwYXlsb2FkIChhbmQgYWRkIGEgbmV3CiAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyKS4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICAqX2NoYXJzZXQqIGFsc28gYWNjZXB0cyA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlcy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdAppbmRleCBiOGViN2M1Li5jMzIzZWJjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKQEAgLTgsMTkwICs4LDE1OCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1NZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmVzIGNhbiBiZSBjcmVhdGVkIGluIG9uZSBvZiB0d28gd2F5czogdGhleSBjYW4gYmUgY3JlYXRlZAotZnJvbSB3aG9sZSBjbG90aCBieSBpbnN0YW50aWF0aW5nIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cyBhbmQKLXN0cmluZ2luZyB0aGVtIHRvZ2V0aGVyIHZpYSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGFuZAotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X3BheWxvYWRgIGNhbGxzLCBvciB0aGV5Ci1jYW4gYmUgY3JlYXRlZCBieSBwYXJzaW5nIGEgZmxhdCB0ZXh0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbWFpbCBtZXNzYWdlLgorTWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlcyBjYW4gYmUgY3JlYXRlZCBpbiBvbmUgb2YgdHdvIHdheXM6IHRoZXkgY2FuIGJlCitjcmVhdGVkIGZyb20gd2hvbGUgY2xvdGggYnkgY3JlYXRpbmcgYW4gOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitvYmplY3QsIGFkZGluZyBoZWFkZXJzIHVzaW5nIHRoZSBkaWN0aW9uYXJ5IGludGVyZmFjZSwgYW5kIGFkZGluZyBwYXlsb2FkKHMpCit1c2luZyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBhbmQgcmVsYXRlZCBtZXRob2RzLCBvcgordGhleSBjYW4gYmUgY3JlYXRlZCBieSBwYXJzaW5nIGEgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW1haWwKK21lc3NhZ2UuCiAKIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBwcm92aWRlcyBhIHN0YW5kYXJkIHBhcnNlciB0aGF0IHVuZGVyc3RhbmRzIG1vc3QgZW1haWwKLWRvY3VtZW50IHN0cnVjdHVyZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4gIFlvdSBjYW4gcGFzcyB0aGUgcGFyc2VyIGEgc3RyaW5nCi1vciBhIGZpbGUgb2JqZWN0LCBhbmQgdGhlIHBhcnNlciB3aWxsIHJldHVybiB0byB5b3UgdGhlIHJvb3QKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBzdHJ1Y3R1cmUuICBGb3Igc2ltcGxlLAotbm9uLU1JTUUgbWVzc2FnZXMgdGhlIHBheWxvYWQgb2YgdGhpcyByb290IG9iamVjdCB3aWxsIGxpa2VseSBiZSBhIHN0cmluZwotY29udGFpbmluZyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gIEZvciBNSU1FIG1lc3NhZ2VzLCB0aGUgcm9vdCBvYmplY3Qgd2lsbAotcmV0dXJuIGBgVHJ1ZWBgIGZyb20gaXRzIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kLCBhbmQKLXRoZSBzdWJwYXJ0cyBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAKLWFuZCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS53YWxrYCBtZXRob2RzLgorZG9jdW1lbnQgc3RydWN0dXJlcywgaW5jbHVkaW5nIE1JTUUgZG9jdW1lbnRzLiAgWW91IGNhbiBwYXNzIHRoZSBwYXJzZXIgYQorYnl0ZXMsIHN0cmluZyBvciBmaWxlIG9iamVjdCwgYW5kIHRoZSBwYXJzZXIgd2lsbCByZXR1cm4gdG8geW91IHRoZSByb290Cis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaW5zdGFuY2Ugb2YgdGhlIG9iamVjdCBzdHJ1Y3R1cmUuICBGb3IKK3NpbXBsZSwgbm9uLU1JTUUgbWVzc2FnZXMgdGhlIHBheWxvYWQgb2YgdGhpcyByb290IG9iamVjdCB3aWxsIGxpa2VseSBiZSBhCitzdHJpbmcgY29udGFpbmluZyB0aGUgdGV4dCBvZiB0aGUgbWVzc2FnZS4gIEZvciBNSU1FIG1lc3NhZ2VzLCB0aGUgcm9vdCBvYmplY3QKK3dpbGwgcmV0dXJuIGBgVHJ1ZWBgIGZyb20gaXRzIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YAorbWV0aG9kLCBhbmQgdGhlIHN1YnBhcnRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIHBheWxvYWQgbWFuaXB1bGF0aW9uIG1ldGhvZHMsCitzdWNoIGFzIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZ2V0X2JvZHlgLAorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCwgYW5kCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLndhbGtgLgogCi1UaGVyZSBhcmUgYWN0dWFsbHkgdHdvIHBhcnNlciBpbnRlcmZhY2VzIGF2YWlsYWJsZSBmb3IgdXNlLCB0aGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBhbmQgdGhlIGluY3JlbWVudGFsIDpjbGFzczpgRmVlZFBhcnNlcmAgQVBJLiAgVGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgaXMgZmluZSBpZiB5b3UgaGF2ZSB0aGUgZW50aXJlIHRleHQgb2YgdGhlIG1lc3NhZ2UgaW4gbWVtb3J5Ci1hcyBhIHN0cmluZywgb3IgaWYgdGhlIGVudGlyZSBtZXNzYWdlIGxpdmVzIGluIGEgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uCi06Y2xhc3M6YEZlZWRQYXJzZXJgIGlzIG1vcmUgYXBwcm9wcmlhdGUgZm9yIHdoZW4geW91J3JlIHJlYWRpbmcgdGhlIG1lc3NhZ2UgZnJvbQotYSBzdHJlYW0gd2hpY2ggbWlnaHQgYmxvY2sgd2FpdGluZyBmb3IgbW9yZSBpbnB1dCAoZS5nLiByZWFkaW5nIGFuIGVtYWlsIG1lc3NhZ2UKLWZyb20gYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIGNvbnN1bWUgYW5kIHBhcnNlIHRoZSBtZXNzYWdlCi1pbmNyZW1lbnRhbGx5LCBhbmQgb25seSByZXR1cm5zIHRoZSByb290IG9iamVjdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFyc2VyIFsjXV8uCitUaGVyZSBhcmUgYWN0dWFsbHkgdHdvIHBhcnNlciBpbnRlcmZhY2VzIGF2YWlsYWJsZSBmb3IgdXNlLCB0aGUgOmNsYXNzOmBQYXJzZXJgCitBUEkgYW5kIHRoZSBpbmNyZW1lbnRhbCA6Y2xhc3M6YEZlZWRQYXJzZXJgIEFQSS4gIFRoZSA6Y2xhc3M6YFBhcnNlcmAgQVBJIGlzCittb3N0IHVzZWZ1bCBpZiB5b3UgaGF2ZSB0aGUgZW50aXJlIHRleHQgb2YgdGhlIG1lc3NhZ2UgaW4gbWVtb3J5LCBvciBpZiB0aGUKK2VudGlyZSBtZXNzYWdlIGxpdmVzIGluIGEgZmlsZSBvbiB0aGUgZmlsZSBzeXN0ZW0uICA6Y2xhc3M6YEZlZWRQYXJzZXJgIGlzIG1vcmUKK2FwcHJvcHJpYXRlIHdoZW4geW91IGFyZSByZWFkaW5nIHRoZSBtZXNzYWdlIGZyb20gYSBzdHJlYW0gd2hpY2ggbWlnaHQgYmxvY2sKK3dhaXRpbmcgZm9yIG1vcmUgaW5wdXQgKHN1Y2ggYXMgcmVhZGluZyBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYSBzb2NrZXQpLiAgVGhlCis6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBjb25zdW1lIGFuZCBwYXJzZSB0aGUgbWVzc2FnZSBpbmNyZW1lbnRhbGx5LCBhbmQgb25seQorcmV0dXJucyB0aGUgcm9vdCBvYmplY3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhcnNlci4KIAogTm90ZSB0aGF0IHRoZSBwYXJzZXIgY2FuIGJlIGV4dGVuZGVkIGluIGxpbWl0ZWQgd2F5cywgYW5kIG9mIGNvdXJzZSB5b3UgY2FuCi1pbXBsZW1lbnQgeW91ciBvd24gcGFyc2VyIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgVGhlcmUgaXMgbm8gbWFnaWNhbAotY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSdzIGJ1bmRsZWQgcGFyc2VyIGFuZCB0aGUKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MsIHNvIHlvdXIgY3VzdG9tIHBhcnNlciBjYW4gY3JlYXRlIG1lc3NhZ2UKLW9iamVjdCB0cmVlcyBhbnkgd2F5IGl0IGZpbmRzIG5lY2Vzc2FyeS4KK2ltcGxlbWVudCB5b3VyIG93biBwYXJzZXIgY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBBbGwgb2YgdGhlIGxvZ2ljIHRoYXQKK2Nvbm5lY3RzIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSdzIGJ1bmRsZWQgcGFyc2VyIGFuZCB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpcyBlbWJvZGllZCBpbiB0aGUgOm1vZDpgcG9saWN5YAorY2xhc3MsIHNvIGEgY3VzdG9tIHBhcnNlciBjYW4gY3JlYXRlIG1lc3NhZ2Ugb2JqZWN0IHRyZWVzIGFueSB3YXkgaXQgZmluZHMKK25lY2Vzc2FyeSBieSBpbXBsZW1lbnRpbmcgY3VzdG9tIHZlcnNpb25zIG9mIHRoZSBhcHByb3ByaWF0ZSA6bW9kOmBwb2xpY3lgCittZXRob2RzLgogCiAKIEZlZWRQYXJzZXIgQVBJCiBeXl5eXl5eXl5eXl5eXgogCi1UaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCwgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwuZmVlZHBhcnNlcmAgbW9kdWxlLAotcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgY29uZHVjaXZlIHRvIGluY3JlbWVudGFsIHBhcnNpbmcgb2YgZW1haWwgbWVzc2FnZXMsIHN1Y2gKLWFzIHdvdWxkIGJlIG5lY2Vzc2FyeSB3aGVuIHJlYWRpbmcgdGhlIHRleHQgb2YgYW4gZW1haWwgbWVzc2FnZSBmcm9tIGEgc291cmNlCi10aGF0IGNhbiBibG9jayAoZS5nLiBhIHNvY2tldCkuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gb2YgY291cnNlIGJlIHVzZWQKLXRvIHBhcnNlIGFuIGVtYWlsIG1lc3NhZ2UgZnVsbHkgY29udGFpbmVkIGluIGEgc3RyaW5nIG9yIGEgZmlsZSwgYnV0IHRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIG1heSBiZSBtb3JlIGNvbnZlbmllbnQgZm9yIHN1Y2ggdXNlIGNhc2VzLiAgVGhlIHNlbWFudGljcwotYW5kIHJlc3VsdHMgb2YgdGhlIHR3byBwYXJzZXIgQVBJcyBhcmUgaWRlbnRpY2FsLgorVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCwgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwuZmVlZHBhcnNlcmAgbW9kdWxlLAorcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgY29uZHVjaXZlIHRvIGluY3JlbWVudGFsIHBhcnNpbmcgb2YgZW1haWwgbWVzc2FnZXMsCitzdWNoIGFzIHdvdWxkIGJlIG5lY2Vzc2FyeSB3aGVuIHJlYWRpbmcgdGhlIHRleHQgb2YgYW4gZW1haWwgbWVzc2FnZSBmcm9tIGEKK3NvdXJjZSB0aGF0IGNhbiBibG9jayAoc3VjaCBhcyBhIHNvY2tldCkuICBUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGNhbiBvZgorY291cnNlIGJlIHVzZWQgdG8gcGFyc2UgYW4gZW1haWwgbWVzc2FnZSBmdWxseSBjb250YWluZWQgaW4gYSA6dGVybTpgYnl0ZXMtbGlrZQorb2JqZWN0YCwgc3RyaW5nLCBvciBmaWxlLCBidXQgdGhlIDpjbGFzczpgQnl0ZXNQYXJzZXJgIEFQSSBtYXkgYmUgbW9yZQorY29udmVuaWVudCBmb3Igc3VjaCB1c2UgY2FzZXMuICBUaGUgc2VtYW50aWNzIGFuZCByZXN1bHRzIG9mIHRoZSB0d28gcGFyc2VyCitBUElzIGFyZSBpZGVudGljYWwuCiAKLVRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgJ3MgQVBJIGlzIHNpbXBsZTsgeW91IGNyZWF0ZSBhbiBpbnN0YW5jZSwgZmVlZCBpdCBhIGJ1bmNoCi1vZiB0ZXh0IHVudGlsIHRoZXJlJ3Mgbm8gbW9yZSB0byBmZWVkIGl0LCB0aGVuIGNsb3NlIHRoZSBwYXJzZXIgdG8gcmV0cmlldmUgdGhlCi1yb290IG1lc3NhZ2Ugb2JqZWN0LiAgVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgaXMgZXh0cmVtZWx5IGFjY3VyYXRlIHdoZW4gcGFyc2luZwotc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcywgYW5kIGl0IGRvZXMgYSB2ZXJ5IGdvb2Qgam9iIG9mIHBhcnNpbmcKLW5vbi1jb21wbGlhbnQgbWVzc2FnZXMsIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBob3cgYSBtZXNzYWdlIHdhcyBkZWVtZWQKLWJyb2tlbi4gIEl0IHdpbGwgcG9wdWxhdGUgYSBtZXNzYWdlIG9iamVjdCdzICpkZWZlY3RzKiBhdHRyaWJ1dGUgd2l0aCBhIGxpc3Qgb2YKLWFueSBwcm9ibGVtcyBpdCBmb3VuZCBpbiBhIG1lc3NhZ2UuICBTZWUgdGhlIDptb2Q6YGVtYWlsLmVycm9yc2AgbW9kdWxlIGZvciB0aGUKK1RoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAncyBBUEkgaXMgc2ltcGxlOyB5b3UgY3JlYXRlIGFuIGluc3RhbmNlLCBmZWVkIGl0IGEKK2J1bmNoIG9mIGJ5dGVzIHVudGlsIHRoZXJlJ3Mgbm8gbW9yZSB0byBmZWVkIGl0LCB0aGVuIGNsb3NlIHRoZSBwYXJzZXIgdG8KK3JldHJpZXZlIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBpcyBleHRyZW1lbHkKK2FjY3VyYXRlIHdoZW4gcGFyc2luZyBzdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzLCBhbmQgaXQgZG9lcyBhIHZlcnkgZ29vZCBqb2IKK29mIHBhcnNpbmcgbm9uLWNvbXBsaWFudCBtZXNzYWdlcywgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGhvdyBhIG1lc3NhZ2UKK3dhcyBkZWVtZWQgYnJva2VuLiAgSXQgd2lsbCBwb3B1bGF0ZSBhIG1lc3NhZ2Ugb2JqZWN0J3MKKzphdHRyOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZGVmZWN0c2AgYXR0cmlidXRlIHdpdGggYSBsaXN0IG9mIGFueQorcHJvYmxlbXMgaXQgZm91bmQgaW4gYSBtZXNzYWdlLiAgU2VlIHRoZSA6bW9kOmBlbWFpbC5lcnJvcnNgIG1vZHVsZSBmb3IgdGhlCiBsaXN0IG9mIGRlZmVjdHMgdGhhdCBpdCBjYW4gZmluZC4KIAotSGVyZSBpcyB0aGUgQVBJIGZvciB0aGUgOmNsYXNzOmBGZWVkUGFyc2VyYDoKK0hlcmUgaXMgdGhlIEFQSSBmb3IgdGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYDoKIAogCi0uLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorLi4gY2xhc3M6OiBCeXRlc0ZlZWRQYXJzZXIoX2ZhY3Rvcnk9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgQ3JlYXRlIGEgOmNsYXNzOmBGZWVkUGFyc2VyYCBpbnN0YW5jZS4gIE9wdGlvbmFsICpfZmFjdG9yeSogaXMgYSBuby1hcmd1bWVudAotICAgY2FsbGFibGUgdGhhdCB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBhIG5ldyBtZXNzYWdlIG9iamVjdCBpcyBuZWVkZWQuICBJdAotICAgZGVmYXVsdHMgdG8gdGhlIDpjbGFzczpgZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcy4KKyAgIENyZWF0ZSBhIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBpbnN0YW5jZS4gIE9wdGlvbmFsICpfZmFjdG9yeSogaXMgYQorICAgbm8tYXJndW1lbnQgY2FsbGFibGU7IGlmIG5vdCBzcGVjaWZpZWQgdXNlIHRoZQorICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1lc3NhZ2VfZmFjdG9yeWAgZnJvbSB0aGUgKnBvbGljeSouICBDYWxsCisgICAqX2ZhY3RvcnkqIHdoZW5ldmVyIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0IGlzIG5lZWRlZC4KIAotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlCisgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUKKyAgIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkCisgICBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZSBhbmQgcHJvdmlkZXMKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgYXMgdGhlIGRlZmF1bHQgZmFjdG9yeS4gIEFsbCBvdGhlciBwb2xpY2llcworICAgcHJvdmlkZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgYXMgdGhlIGRlZmF1bHQgKl9mYWN0b3J5Ki4gRm9yCisgICBtb3JlIGluZm9ybWF0aW9uIG9uIHdoYXQgZWxzZSAqcG9saWN5KiBjb250cm9scywgc2VlIHRoZQogICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLSAgIC4uIG1ldGhvZDo6IGZlZWQoZGF0YSkKLQotICAgICAgRmVlZCB0aGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBzb21lIG1vcmUgZGF0YS4gICpkYXRhKiBzaG91bGQgYmUgYSBzdHJpbmcKLSAgICAgIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgbGluZXMuICBUaGUgbGluZXMgY2FuIGJlIHBhcnRpYWwgYW5kIHRoZQotICAgICAgOmNsYXNzOmBGZWVkUGFyc2VyYCB3aWxsIHN0aXRjaCBzdWNoIHBhcnRpYWwgbGluZXMgdG9nZXRoZXIgcHJvcGVybHkuICBUaGUKLSAgICAgIGxpbmVzIGluIHRoZSBzdHJpbmcgY2FuIGhhdmUgYW55IG9mIHRoZSBjb21tb24gdGhyZWUgbGluZSBlbmRpbmdzLAotICAgICAgY2FycmlhZ2UgcmV0dXJuLCBuZXdsaW5lLCBvciBjYXJyaWFnZSByZXR1cm4gYW5kIG5ld2xpbmUgKHRoZXkgY2FuIGV2ZW4gYmUKLSAgICAgIG1peGVkKS4KLQotICAgLi4gbWV0aG9kOjogY2xvc2UoKQotCi0gICAgICBDbG9zaW5nIGEgOmNsYXNzOmBGZWVkUGFyc2VyYCBjb21wbGV0ZXMgdGhlIHBhcnNpbmcgb2YgYWxsIHByZXZpb3VzbHkgZmVkCi0gICAgICBkYXRhLCBhbmQgcmV0dXJucyB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIEl0IGlzIHVuZGVmaW5lZCB3aGF0IGhhcHBlbnMKLSAgICAgIGlmIHlvdSBmZWVkIG1vcmUgZGF0YSB0byBhIGNsb3NlZCA6Y2xhc3M6YEZlZWRQYXJzZXJgLgotCi0KLS4uIGNsYXNzOjogQnl0ZXNGZWVkUGFyc2VyKF9mYWN0b3J5PWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSkKLQotICAgV29ya3MgZXhhY3RseSBsaWtlIDpjbGFzczpgRmVlZFBhcnNlcmAgZXhjZXB0IHRoYXQgdGhlIGlucHV0IHRvIHRoZQotICAgOm1ldGg6YH5GZWVkUGFyc2VyLmZlZWRgIG1ldGhvZCBtdXN0IGJlIGJ5dGVzIGFuZCBub3Qgc3RyaW5nLgorICAgTm90ZTogKipUaGUgcG9saWN5IGtleXdvcmQgc2hvdWxkIGFsd2F5cyBiZSBzcGVjaWZpZWQqKjsgVGhlIGRlZmF1bHQgd2lsbAorICAgY2hhbmdlIHRvIDpkYXRhOmBlbWFpbC5wb2xpY3kuZGVmYXVsdGAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42ICpfZmFjdG9yeSogZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgogCi1QYXJzZXIgY2xhc3MgQVBJCi1eXl5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLAorICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQorCisgICAgICBGZWVkIHRoZSBwYXJzZXIgc29tZSBtb3JlIGRhdGEuICAqZGF0YSogc2hvdWxkIGJlIGEgOnRlcm06YGJ5dGVzLWxpa2UKKyAgICAgIG9iamVjdGAgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsaW5lcy4gIFRoZSBsaW5lcyBjYW4gYmUgcGFydGlhbCBhbmQgdGhlCisgICAgICBwYXJzZXIgd2lsbCBzdGl0Y2ggc3VjaCBwYXJ0aWFsIGxpbmVzIHRvZ2V0aGVyIHByb3Blcmx5LiAgVGhlIGxpbmVzIGNhbgorICAgICAgaGF2ZSBhbnkgb2YgdGhlIHRocmVlIGNvbW1vbiBsaW5lIGVuZGluZ3M6IGNhcnJpYWdlIHJldHVybiwgbmV3bGluZSwgb3IKKyAgICAgIGNhcnJpYWdlIHJldHVybiBhbmQgbmV3bGluZSAodGhleSBjYW4gZXZlbiBiZSBtaXhlZCkuCisKKworICAgLi4gbWV0aG9kOjogY2xvc2UoKQorCisgICAgICBDb21wbGV0ZSB0aGUgcGFyc2luZyBvZiBhbGwgcHJldmlvdXNseSBmZWQgZGF0YSBhbmQgcmV0dXJuIHRoZSByb290CisgICAgICBtZXNzYWdlIG9iamVjdC4gIEl0IGlzIHVuZGVmaW5lZCB3aGF0IGhhcHBlbnMgaWYgOm1ldGg6YH5mZWVkYCBpcyBjYWxsZWQKKyAgICAgIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KKworCisuLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgV29ya3MgbGlrZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgZXhjZXB0IHRoYXQgdGhlIGlucHV0IHRvIHRoZQorICAgOm1ldGg6YH5CeXRlc0ZlZWRQYXJzZXIuZmVlZGAgbWV0aG9kIG11c3QgYmUgYSBzdHJpbmcuICBUaGlzIGlzIG9mIGxpbWl0ZWQKKyAgIHV0aWxpdHksIHNpbmNlIHRoZSBvbmx5IHdheSBmb3Igc3VjaCBhIG1lc3NhZ2UgdG8gYmUgdmFsaWQgaXMgZm9yIGl0IHRvCisgICBjb250YWluIG9ubHkgQVNDSUkgdGV4dCBvciwgaWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LnV0ZjhgIGlzCisgICBgYFRydWVgYCwgbm8gYmluYXJ5IGF0dGFjaG1lbnRzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCitQYXJzZXIgQVBJCiteXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCiBwcm92aWRlcyBhbiBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXJzZSBhIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcGxldGUgY29udGVudHMKLW9mIHRoZSBtZXNzYWdlIGFyZSBhdmFpbGFibGUgaW4gYSBzdHJpbmcgb3IgZmlsZS4gIFRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgCi1tb2R1bGUgYWxzbyBwcm92aWRlcyBoZWFkZXItb25seSBwYXJzZXJzLCBjYWxsZWQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZAotOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAsIHdoaWNoIGNhbiBiZSB1c2VkIGlmIHlvdSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlCi1oZWFkZXJzIG9mIHRoZSBtZXNzYWdlLiAgOmNsYXNzOmBIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYAorb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgb3IgZmlsZS4gIFRoZQorOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUgYWxzbyBwcm92aWRlcyA6Y2xhc3M6YFBhcnNlcmAgZm9yIHBhcnNpbmcgc3RyaW5ncywKK2FuZCBoZWFkZXItb25seSBwYXJzZXJzLCA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCBhbmQKKzpjbGFzczpgSGVhZGVyUGFyc2VyYCwgd2hpY2ggY2FuIGJlIHVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUKK2hlYWRlcnMgb2YgdGhlIG1lc3NhZ2UuICA6Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCBhbmQgOmNsYXNzOmBIZWFkZXJQYXJzZXJgCiBjYW4gYmUgbXVjaCBmYXN0ZXIgaW4gdGhlc2Ugc2l0dWF0aW9ucywgc2luY2UgdGhleSBkbyBub3QgYXR0ZW1wdCB0byBwYXJzZSB0aGUKLW1lc3NhZ2UgYm9keSwgaW5zdGVhZCBzZXR0aW5nIHRoZSBwYXlsb2FkIHRvIHRoZSByYXcgYm9keSBhcyBhIHN0cmluZy4gIFRoZXkKLWhhdmUgdGhlIHNhbWUgQVBJIGFzIHRoZSA6Y2xhc3M6YFBhcnNlcmAgYW5kIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGNsYXNzZXMuCi0KLS4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgVGhlIEJ5dGVzSGVhZGVyUGFyc2VyIGNsYXNzLgorbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5LgogCiAKLS4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQKLSAgICpfY2xhc3MqLiAgVGhpcyBtdXN0IGJlIGEgY2FsbGFibGUgZmFjdG9yeSAoc3VjaCBhcyBhIGZ1bmN0aW9uIG9yIGEgY2xhc3MpLCBhbmQKLSAgIGl0IGlzIHVzZWQgd2hlbmV2ZXIgYSBzdWItbWVzc2FnZSBvYmplY3QgbmVlZHMgdG8gYmUgY3JlYXRlZC4gIEl0IGRlZmF1bHRzIHRvCi0gICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIChzZWUgOm1vZDpgZW1haWwubWVzc2FnZWApLiAgVGhlIGZhY3Rvcnkgd2lsbAotICAgYmUgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLgorICAgQ3JlYXRlIGEgOmNsYXNzOmBCeXRlc1BhcnNlcmAgaW5zdGFuY2UuICBUaGUgKl9jbGFzcyogYW5kICpwb2xpY3kqCisgICBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFuZCBzZW1hdG5pY3MgYXMgdGhlICpfZmFjdG9yeSoKKyAgIGFuZCAqcG9saWN5KiBhcmd1bWVudHMgb2YgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgLgogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KKyAgIE5vdGU6ICoqVGhlIHBvbGljeSBrZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkKio7IFRoZSBkZWZhdWx0IHdpbGwKKyAgIGNoYW5nZSB0byA6ZGF0YTpgZW1haWwucG9saWN5LmRlZmF1bHRgIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQgdGhhdCB3YXMgZGVwcmVjYXRlZCBpbiAyLjQuICBBZGRlZCB0aGUKICAgICAgICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiAqX2NsYXNzKiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBQYXJzZXJgIG1ldGhvZHMgYXJlOgotCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKLQotICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0LCBhbmQgcmV0dXJuIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQgYm90aCB0aGUKLSAgICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAKLSAgICAgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCi0KLSAgICAgIFRoZSB0ZXh0IGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgMjgyMmAKLSAgICAgIHN0eWxlIGhlYWRlcnMgYW5kIGhlYWRlciBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYW4KLSAgICAgIGVudmVsb3BlIGhlYWRlci4gIFRoZSBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUKLSAgICAgIGRhdGEgb3IgYnkgYSBibGFuayBsaW5lLiAgRm9sbG93aW5nIHRoZSBoZWFkZXIgYmxvY2sgaXMgdGhlIGJvZHkgb2YgdGhlCi0gICAgICBtZXNzYWdlICh3aGljaCBtYXkgY29udGFpbiBNSU1FLWVuY29kZWQgc3VicGFydHMpLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgdG8gc3RvcCBwYXJzaW5nIGFmdGVyCi0gICAgICByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYCwgbWVhbmluZyBpdCBwYXJzZXMKLSAgICAgIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQotCi0gICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgc3RyaW5nIG9iamVjdAotICAgICAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgc3RyaW5nIGlzIGV4YWN0bHkKLSAgICAgIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uU3RyaW5nSU9gIGluc3RhbmNlIGZpcnN0IGFuZAotICAgICAgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgotCi0KLS4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKLQotICAgVGhpcyBjbGFzcyBpcyBleGFjdGx5IHBhcmFsbGVsIHRvIDpjbGFzczpgUGFyc2VyYCwgYnV0IGhhbmRsZXMgYnl0ZXMgaW5wdXQuCi0gICBUaGUgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgotICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4KLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCiAgICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCiAKICAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGJpbmFyeSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZQogICAgICAgcmVzdWx0aW5nIGJ5dGVzLCBhbmQgcmV0dXJuIHRoZSBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0CiAgICAgICBib3RoIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkYAotICAgICAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KKyAgICAgIG1ldGhvZHMuCiAKLSAgICAgIFRoZSBieXRlcyBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDI4MjJgCisgICAgICBUaGUgYnl0ZXMgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmA1MzIyYAorICAgICAgKG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMgYGBUcnVlYGAsIDpyZmM6YDY1MzJgKQogICAgICAgc3R5bGUgaGVhZGVycyBhbmQgaGVhZGVyIGNvbnRpbnVhdGlvbiBsaW5lcywgb3B0aW9uYWxseSBwcmVjZWRlZCBieSBhbgogICAgICAgZW52ZWxvcGUgaGVhZGVyLiAgVGhlIGhlYWRlciBibG9jayBpcyB0ZXJtaW5hdGVkIGVpdGhlciBieSB0aGUgZW5kIG9mIHRoZQogICAgICAgZGF0YSBvciBieSBhIGJsYW5rIGxpbmUuICBGb2xsb3dpbmcgdGhlIGhlYWRlciBibG9jayBpcyB0aGUgYm9keSBvZiB0aGUKQEAgLTIwMiw3MyArMTcwLDEyMSBAQAogICAgICAgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAsIG1lYW5pbmcgaXQgcGFyc2VzCiAgICAgICB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgogCi0gICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKGJ5dGVzLCBoZWFkZXJzb25seT1GYWxzZSkKIAogICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIDp0ZXJtOmBieXRlcy1saWtlCi0gICAgICBvYmplY3RgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50Ci0gICAgICB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5CeXRlc0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQgY2FsbGluZwotICAgICAgOm1ldGg6YHBhcnNlYC4KKyAgICAgIG9iamVjdGAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEKKyAgICAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqYnl0ZXMqIGluIGEKKyAgICAgIDpjbGFzczpgfmlvLkJ5dGVzSU9gIGluc3RhbmNlIGZpcnN0IGFuZCBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCiAKICAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGNsYXNzOjogQnl0ZXNIZWFkZXJQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIEV4YWN0bHkgbGlrZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCwgZXhjZXB0IHRoYXQgKmhlYWRlcnNvbmx5KgorICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBUaGlzIGNsYXNzIGlzIHBhcmFsbGVsIHRvIDpjbGFzczpgQnl0ZXNQYXJzZXJgLCBidXQgaGFuZGxlcyBzdHJpbmcgaW5wdXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgKl9jbGFzcyogZGVmYXVsdHMgdG8gdGhlIHBvbGljeSBgYG1lc3NhZ2VfZmFjdG9yeWBgLgorCisKKyAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKKworICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgdGV4dC1tb2RlIGZpbGUtbGlrZSBvYmplY3QgKmZwKiwgcGFyc2UgdGhlCisgICAgICByZXN1bHRpbmcgdGV4dCwgYW5kIHJldHVybiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0CisgICAgICBib3RoIHRoZSA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIGFuZCB0aGUKKyAgICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkYCBtZXRob2RzIG9uIGZpbGUtbGlrZSBvYmplY3RzLgorCisgICAgICBPdGhlciB0aGFuIHRoZSB0ZXh0IG1vZGUgcmVxdWlyZW1lbnQsIHRoaXMgbWV0aG9kIG9wZXJhdGVzIGxpa2UKKyAgICAgIDptZXRoOmBCeXRlc1BhcnNlci5wYXJzZWAuCisKKworICAgLi4gbWV0aG9kOjogcGFyc2VzdHIodGV4dCwgaGVhZGVyc29ubHk9RmFsc2UpCisKKyAgICAgIFNpbWlsYXIgdG8gdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLCBleGNlcHQgaXQgdGFrZXMgYSBzdHJpbmcgb2JqZWN0CisgICAgICBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBzdHJpbmcgaXMKKyAgICAgIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uU3RyaW5nSU9gIGluc3RhbmNlIGZpcnN0CisgICAgICBhbmQgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgorCisgICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgorCisKKy4uIGNsYXNzOjogSGVhZGVyUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBFeGFjdGx5IGxpa2UgOmNsYXNzOmBQYXJzZXJgLCBleGNlcHQgdGhhdCAqaGVhZGVyc29ubHkqCisgICBkZWZhdWx0cyB0byBgYFRydWVgYC4KKworCiBTaW5jZSBjcmVhdGluZyBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nIG9yIGEgZmlsZSBvYmplY3QgaXMgc3VjaAogYSBjb21tb24gdGFzaywgZm91ciBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UuICBUaGV5IGFyZSBhdmFpbGFibGUKIGluIHRoZSB0b3AtbGV2ZWwgOm1vZDpgZW1haWxgIHBhY2thZ2UgbmFtZXNwYWNlLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwKIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZy4gIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLiAgVGhpcyBpcworICAgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2VieXRlcyhzKWBgLiAgT3B0aW9uYWwgKl9jbGFzcyogYW5kCisgICAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBjbGFzcworICAgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1Ob25lLCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHRyZWUgZnJvbSBhbiBvcGVuIGJpbmFyeSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKiBhbmQKKyAgICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzCisgICBjb25zdHJ1Y3Rvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCiAgICBgYFBhcnNlcigpLnBhcnNlc3RyKHMpYGAuICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzCiAgICB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2J5dGVzKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4gIFRoaXMgaXMgZXhhY3RseQotICAgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2VieXRlcyhzKWBgLiAgT3B0aW9uYWwgKl9jbGFzcyogYW5kCi0gICAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MKLSAgIGNvbnN0cnVjdG9yLgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9maWxlKGZwLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAogICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHRyZWUgZnJvbSBhbiBvcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAuCi0gICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYFBhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyoKLSAgIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MKLSAgIGNvbnN0cnVjdG9yLgorICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlCisgICBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiAqX2NsYXNzKiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gYmluYXJ5IDp0ZXJtOmBmaWxlCi0gICBvYmplY3RgLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlKGZwKWBgLgotICAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIHRoaXMgYXQgYW4gaW50ZXJhY3RpdmUgUHl0aG9uIHByb21wdDo6CitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSA6ZnVuYzpgbWVzc2FnZV9mcm9tX2J5dGVzYCBhdCBhbgoraW50ZXJhY3RpdmUgUHl0aG9uIHByb21wdDo6CiAKICAgID4+PiBpbXBvcnQgZW1haWwKLSAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG15U3RyaW5nKSAgIyBkb2N0ZXN0OiArU0tJUAorICAgPj4+IG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhteUJ5dGVzKSAgIyBkb2N0ZXN0OiArU0tJUAogCiAKIEFkZGl0aW9uYWwgbm90ZXMKQEAgLTI3OCwzNSArMjk0LDI3IEBACiAKICogTW9zdCBub24tXCA6bWltZXR5cGU6YG11bHRpcGFydGAgdHlwZSBtZXNzYWdlcyBhcmUgcGFyc2VkIGFzIGEgc2luZ2xlIG1lc3NhZ2UKICAgb2JqZWN0IHdpdGggYSBzdHJpbmcgcGF5bG9hZC4gIFRoZXNlIG9iamVjdHMgd2lsbCByZXR1cm4gYGBGYWxzZWBgIGZvcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLiAgVGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZCB3aWxsIHJldHVybiBhIHN0cmluZyBvYmplY3QuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2Agd2lsbCB5aWVsZCBhbiBlbXB0eSBsaXN0LgogCiAqIEFsbCA6bWltZXR5cGU6YG11bHRpcGFydGAgdHlwZSBtZXNzYWdlcyB3aWxsIGJlIHBhcnNlZCBhcyBhIGNvbnRhaW5lciBtZXNzYWdlCiAgIG9iamVjdCB3aXRoIGEgbGlzdCBvZiBzdWItbWVzc2FnZSBvYmplY3RzIGZvciB0aGVpciBwYXlsb2FkLiAgVGhlIG91dGVyCiAgIGNvbnRhaW5lciBtZXNzYWdlIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIGZvcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIGFuZCB0aGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBsaXN0IG9mCi0gIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgc3VicGFydHMuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2Agd2lsbCB5aWVsZCBhIGxpc3Qgb2Ygc3VicGFydHMuCiAKLSogTW9zdCBtZXNzYWdlcyB3aXRoIGEgY29udGVudCB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9cKmAgKGUuZy4KLSAgOm1pbWV0eXBlOmBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1c2AgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgKSB3aWxsIGFsc28gYmUKLSAgcGFyc2VkIGFzIGNvbnRhaW5lciBvYmplY3QgY29udGFpbmluZyBhIGxpc3QgcGF5bG9hZCBvZiBsZW5ndGggMS4gIFRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLgotICBUaGUgc2luZ2xlIGVsZW1lbnQgaW4gdGhlIGxpc3QgcGF5bG9hZCB3aWxsIGJlIGEgc3ViLW1lc3NhZ2Ugb2JqZWN0LgorKiBNb3N0IG1lc3NhZ2VzIHdpdGggYSBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL1wqYCAoc3VjaCBhcworICA6bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApIHdpbGwgYWxzbworICBiZSBwYXJzZWQgYXMgY29udGFpbmVyIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBwYXlsb2FkIG9mIGxlbmd0aCAxLiAgVGhlaXIKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCB3aWxsIHJldHVybiBgYFRydWVgYC4KKyAgVGhlIHNpbmdsZSBlbGVtZW50IHlpZWxkZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYAorICB3aWxsIGJlIGEgc3ViLW1lc3NhZ2Ugb2JqZWN0LgogCi0qIFNvbWUgbm9uLXN0YW5kYXJkcyBjb21wbGlhbnQgbWVzc2FnZXMgbWF5IG5vdCBiZSBpbnRlcm5hbGx5IGNvbnNpc3RlbnQgYWJvdXQKKyogU29tZSBub24tc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcyBtYXkgbm90IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBhYm91dAogICB0aGVpciA6bWltZXR5cGU6YG11bHRpcGFydGBcIC1lZG5lc3MuICBTdWNoIG1lc3NhZ2VzIG1heSBoYXZlIGEKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIG9mIHR5cGUgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgdGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBgYEZhbHNlYGAuCisgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBgYEZhbHNlYGAuCiAgIElmIHN1Y2ggbWVzc2FnZXMgd2VyZSBwYXJzZWQgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgLAogICB0aGV5IHdpbGwgaGF2ZSBhbiBpbnN0YW5jZSBvZiB0aGUKICAgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdGAgY2xhc3MgaW4gdGhlaXIKICAgKmRlZmVjdHMqIGF0dHJpYnV0ZSBsaXN0LiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGRldGFpbHMuCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gQXMgb2YgZW1haWwgcGFja2FnZSB2ZXJzaW9uIDMuMCwgaW50cm9kdWNlZCBpbiBQeXRob24gMi40LCB0aGUgY2xhc3NpYwotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgd2FzIHJlLWltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgLCBzbyB0aGUgc2VtYW50aWNzIGFuZCByZXN1bHRzIGFyZQotICAgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHR3byBwYXJzZXJzLgotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdAppbmRleCAyYTYwNDdkLi44YTQxODc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKQEAgLTE4LDkgKzE4LDEyIEBACiBlbWFpbCBtZXNzYWdlcyAoYSBibG9jayBvZiBoZWFkZXIgZmllbGRzIGVhY2ggY29uc2lzdGluZyBvZiBhIG5hbWUgZm9sbG93ZWQgYnkKIGEgY29sb24gZm9sbG93ZWQgYnkgYSB2YWx1ZSwgdGhlIHdob2xlIGJsb2NrIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgYW4KIGFyYml0cmFyeSAnYm9keScpLCBpcyBhIGZvcm1hdCB0aGF0IGhhcyBmb3VuZCB1dGlsaXR5IG91dHNpZGUgb2YgdGhlIHJlYWxtIG9mCi1lbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIFJGQ3MsIHNvbWUgZG8KLW5vdC4gIEFuZCBldmVuIHdoZW4gd29ya2luZyB3aXRoIGVtYWlsLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8KLWJyZWFrIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MuCitlbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIGVtYWlsIFJGQ3MsIHNvbWUKK2RvIG5vdC4gIEV2ZW4gd2hlbiB3b3JraW5nIHdpdGggZW1haWwsIHRoZXJlIGFyZSB0aW1lcyB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0bworYnJlYWsgc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcywgc3VjaCBhcyBnZW5lcmF0aW5nIGVtYWlscyB0aGF0CitpbnRlcm9wZXJhdGUgd2l0aCBlbWFpbCBzZXJ2ZXJzIHRoYXQgZG8gbm90IHRoZW1zZWx2ZXMgZm9sbG93IHRoZSBzdGFuZGFyZHMsIG9yCit0aGF0IGltcGxlbWVudCBleHRlbnNpb25zIHlvdSB3YW50IHRvIHVzZSBpbiB3YXlzIHRoYXQgdmlvbGF0ZSB0aGUKK3N0YW5kYXJkcy4KIAogUG9saWN5IG9iamVjdHMgZ2l2ZSB0aGUgZW1haWwgcGFja2FnZSB0aGUgZmxleGliaWxpdHkgdG8gaGFuZGxlIGFsbCB0aGVzZQogZGlzcGFyYXRlIHVzZSBjYXNlcy4KQEAgLTMxLDI3ICszNCw0MCBAQAogZW1haWwgcGFja2FnZSB0byBhbHRlciB0aGUgZGVmYXVsdCBiZWhhdmlvci4gIFRoZSBzZXR0YWJsZSB2YWx1ZXMgYW5kIHRoZWlyCiBkZWZhdWx0cyBhcmUgZGVzY3JpYmVkIGJlbG93LgogCi1UaGVyZSBpcyBhIGRlZmF1bHQgcG9saWN5IHVzZWQgYnkgYWxsIGNsYXNzZXMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuICBUaGlzCi1wb2xpY3kgaXMgbmFtZWQgOmNsYXNzOmBDb21wYXQzMmAsIHdpdGggYSBjb3JyZXNwb25kaW5nIHByZS1kZWZpbmVkIGluc3RhbmNlCi1uYW1lZCA6Y29uc3Q6YGNvbXBhdDMyYC4gIEl0IHByb3ZpZGVzIGZvciBjb21wbGV0ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IChpbgotc29tZSBjYXNlcywgaW5jbHVkaW5nIGJ1ZyBjb21wYXRpYmlsaXR5KSB3aXRoIHRoZSBwcmUtUHl0aG9uMy4zIHZlcnNpb24gb2YgdGhlCi1lbWFpbCBwYWNrYWdlLgorVGhlcmUgaXMgYSBkZWZhdWx0IHBvbGljeSB1c2VkIGJ5IGFsbCBjbGFzc2VzIGluIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIGFsbCBvZgordGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGNsYXNzZXMgYW5kIHRoZSByZWxhdGVkIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgYW5kIGZvcgordGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MsIHRoaXMgaXMgdGhlIDpjbGFzczpgQ29tcGF0MzJgCitwb2xpY3ksIHZpYSBpdHMgY29ycmVzcG9uZGluZyBwcmUtZGVmaW5lZCBpbnN0YW5jZSA6Y29uc3Q6YGNvbXBhdDMyYC4gIFRoaXMKK3BvbGljeSBwcm92aWRlcyBmb3IgY29tcGxldGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoaW4gc29tZSBjYXNlcywgaW5jbHVkaW5nCitidWcgY29tcGF0aWJpbGl0eSkgd2l0aCB0aGUgcHJlLVB5dGhvbjMuMyB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLgorCitUaGlzIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAqcG9saWN5KiBrZXl3b3JkIHRvCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgdGhlIDpjbGFzczpgRW1haWxQb2xpY3lgIHBvbGljeSwgdmlhCitpdHMgcHJlLWRlZmluZWQgaW5zdGFuY2UgOmRhdGE6YH5kZWZhdWx0YC4KKworV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitvYmplY3QgaXMgY3JlYXRlZCwgaXQgYWNxdWlyZXMgYSBwb2xpY3kuICBJZiB0aGUgbWVzc2FnZSBpcyBjcmVhdGVkIGJ5IGEKKzptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeSBwYXNzZWQgdG8gdGhlIHBhcnNlciB3aWxsIGJlIHRoZSBwb2xpY3kgdXNlZCBieQordGhlIG1lc3NhZ2UgaXQgY3JlYXRlcy4gIElmIHRoZSBtZXNzYWdlIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlCitwb2xpY3kgY2FuIGJlIHNwZWNpZmllZCB3aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgbWVzc2FnZSBpcyBwYXNzZWQgdG8gYQorOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsIHRoZSBnZW5lcmF0b3IgdXNlcyB0aGUgcG9saWN5IGZyb20gdGhlIG1lc3NhZ2UgYnkKK2RlZmF1bHQsIGJ1dCB5b3UgY2FuIGFsc28gcGFzcyBhIHNwZWNpZmljIHBvbGljeSB0byB0aGUgZ2VuZXJhdG9yIHRoYXQgd2lsbAorb3ZlcnJpZGUgdGhlIG9uZSBzdG9yZWQgb24gdGhlIG1lc3NhZ2Ugb2JqZWN0LgorCitUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICpwb2xpY3kqIGtleXdvcmQgZm9yIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIGNsYXNzZXMKK2FuZCB0aGUgcGFyc2VyIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKndpbGwgYmUgY2hhbmdpbmcqKiBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mCitQeXRob24uICBUaGVyZWZvcmUgeW91IHNob3VsZCAqKmFsd2F5cyBzcGVjaWZ5IGV4cGxpY2l0bHkgd2hpY2ggcG9saWN5IHlvdSB3YW50Cit0byB1c2UqKiB3aGVuIGNhbGxpbmcgYW55IG9mIHRoZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgZGVzY3JpYmVkIGluIHRoZQorOm1vZDpgfmVtYWlsLnBhcnNlcmAgbW9kdWxlLgogCiBUaGUgZmlyc3QgcGFydCBvZiB0aGlzIGRvY3VtZW50YXRpb24gY292ZXJzIHRoZSBmZWF0dXJlcyBvZiA6Y2xhc3M6YFBvbGljeWAsIGFuCi06dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgIHRoYXQgZGVmaW5lcyB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAorOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIHRoYXQgZGVmaW5lcyB0aGUgZmVhdHVyZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAogcG9saWN5IG9iamVjdHMsIGluY2x1ZGluZyA6Y29uc3Q6YGNvbXBhdDMyYC4gIFRoaXMgaW5jbHVkZXMgY2VydGFpbiBob29rCiBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB3aGljaCBhIGN1c3RvbSBwb2xpY3kKLWNvdWxkIG92ZXJyaWRlIHRvIG9idGFpbiBkaWZmZXJlbnQgYmVoYXZpb3IuCi0KLVdoZW4gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBpcyBjcmVhdGVkLCBpdCBhY3F1aXJlcyBhIHBvbGljeS4KLUJ5IGRlZmF1bHQgdGhpcyB3aWxsIGJlIDpjb25zdDpgY29tcGF0MzJgLCBidXQgYSBkaWZmZXJlbnQgcG9saWN5IGNhbiBiZQotc3BlY2lmaWVkLiAgSWYgdGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgYSA6bW9kOmB+ZW1haWwucGFyc2VyYCwgYSBwb2xpY3kKLXBhc3NlZCB0byB0aGUgcGFyc2VyIHdpbGwgYmUgdGhlIHBvbGljeSB1c2VkIGJ5IHRoZSBgYE1lc3NhZ2VgYCBpdCBjcmVhdGVzLiAgSWYKLXRoZSBgYE1lc3NhZ2VgYCBpcyBjcmVhdGVkIGJ5IHRoZSBwcm9ncmFtLCB0aGVuIHRoZSBwb2xpY3kgY2FuIGJlIHNwZWNpZmllZAotd2hlbiBpdCBpcyBjcmVhdGVkLiAgV2hlbiBhIGBgTWVzc2FnZWBgIGlzIHBhc3NlZCB0byBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLAotdGhlIGdlbmVyYXRvciB1c2VzIHRoZSBwb2xpY3kgZnJvbSB0aGUgYGBNZXNzYWdlYGAgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gYWxzbwotcGFzcyBhIHNwZWNpZmljIHBvbGljeSB0byB0aGUgZ2VuZXJhdG9yIHRoYXQgd2lsbCBvdmVycmlkZSB0aGUgb25lIHN0b3JlZCBvbgotdGhlIGBgTWVzc2FnZWBgIG9iamVjdC4KK2NvdWxkIG92ZXJyaWRlIHRvIG9idGFpbiBkaWZmZXJlbnQgYmVoYXZpb3IuICBUaGUgc2Vjb25kIHBhcnQgZGVzY3JpYmVzIHRoZQorY29uY3JldGUgY2xhc3NlcyA6Y2xhc3M6YEVtYWlsUG9saWN5YCBhbmQgOmNsYXNzOmBDb21wYXQzMmAsIHdoaWNoIGltcGxlbWVudAordGhlIGhvb2tzIHRoYXQgcHJvdmlkZSB0aGUgc3RhbmRhcmQgYmVoYXZpb3IgYW5kIHRoZSBiYWNrd2FyZCBjb21wYXRpYmxlCitiZWhhdmlvciBhbmQgZmVhdHVyZXMsIHJlc3BlY3RpdmVseS4KIAogOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlcyBhcmUgaW1tdXRhYmxlLCBidXQgdGhleSBjYW4gYmUgY2xvbmVkLCBhY2NlcHRpbmcgdGhlCiBzYW1lIGtleXdvcmQgYXJndW1lbnRzIGFzIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBhbmQgcmV0dXJuaW5nIGEgbmV3CkBAIC0xNDcsNiArMTYzLDcgQEAKICAgIFRoaXMgY2xhc3MgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMsIGFuZCB0aHVzIHZhbHVlcyBmb3IgdGhlCiAgICBmb2xsb3dpbmcgbWF5IGJlIHBhc3NlZCBpbiB0aGUgY29uc3RydWN0b3Igb2YgYW55IHBvbGljeSBjbGFzczoKIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBtYXhfbGluZV9sZW5ndGgKIAogICAgICAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFueSBsaW5lIGluIHRoZSBzZXJpYWxpemVkIG91dHB1dCwgbm90IGNvdW50aW5nIHRoZQpAQCAtMTU0LDEyICsxNzEsMTQgQEAKICAgICAgIGBgMGBgIG9yIDpjb25zdDpgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbGluZSB3cmFwcGluZyBzaG91bGQgYmUKICAgICAgIGRvbmUgYXQgYWxsLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IGxpbmVzZXAKIAogICAgICAgVGhlIHN0cmluZyB0byBiZSB1c2VkIHRvIHRlcm1pbmF0ZSBsaW5lcyBpbiBzZXJpYWxpemVkIG91dHB1dC4gIFRoZQogICAgICAgZGVmYXVsdCBpcyBgYFxuYGAgYmVjYXVzZSB0aGF0J3MgdGhlIGludGVybmFsIGVuZC1vZi1saW5lIGRpc2NpcGxpbmUgdXNlZAogICAgICAgYnkgUHl0aG9uLCB0aG91Z2ggYGBcclxuYGAgaXMgcmVxdWlyZWQgYnkgdGhlIFJGQ3MuCiAKKwogICAgLi4gYXR0cmlidXRlOjogY3RlX3R5cGUKIAogICAgICAgQ29udHJvbHMgdGhlIHR5cGUgb2YgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MgdGhhdCBtYXkgYmUgb3IgYXJlCkBAIC0xNzQsOCArMTkzLDggQEAKIAogICAgICAgYGA4Yml0YGAgIGRhdGEgaXMgbm90IGNvbnN0cmFpbmVkIHRvIGJlIDcgYml0IGNsZWFuLiAgRGF0YSBpbiBoZWFkZXJzIGlzCiAgICAgICAgICAgICAgICAgc3RpbGwgcmVxdWlyZWQgdG8gYmUgQVNDSUktb25seSBhbmQgc28gd2lsbCBiZSBlbmNvZGVkIChzZWUKLSAgICAgICAgICAgICAgICAnYmluYXJ5X2ZvbGQnIGJlbG93IGZvciBhbiBleGNlcHRpb24pLCBidXQgYm9keSBwYXJ0cyBtYXkgdXNlCi0gICAgICAgICAgICAgICAgdGhlIGBgOGJpdGBgIENURS4KKyAgICAgICAgICAgICAgICA6bWV0aDpgZm9sZF9iaW5hcnlgIGFuZCA6YXR0cjpgfkVtYWlsUG9saWN5LnV0ZjhgIGJlbG93IGZvcgorICAgICAgICAgICAgICAgIGV4Y2VwdGlvbnMpLCBidXQgYm9keSBwYXJ0cyBtYXkgdXNlIHRoZSBgYDhiaXRgYCBDVEUuCiAgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICAgICAgIEEgYGBjdGVfdHlwZWBgIHZhbHVlIG9mIGBgOGJpdGBgIG9ubHkgd29ya3Mgd2l0aCBgYEJ5dGVzR2VuZXJhdG9yYGAsIG5vdApAQCAtMTgzLDYgKzIwMiw3IEBACiAgICAgICBgYEdlbmVyYXRvcmBgIGlzIG9wZXJhdGluZyB1bmRlciBhIHBvbGljeSB0aGF0IHNwZWNpZmllcwogICAgICAgYGBjdGVfdHlwZT04Yml0YGAsIGl0IHdpbGwgYWN0IGFzIGlmIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYC4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiByYWlzZV9vbl9kZWZlY3QKIAogICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgYW55IGRlZmVjdHMgZW5jb3VudGVyZWQgd2lsbCBiZSByYWlzZWQgYXMgZXJyb3JzLiAgSWYKQEAgLTE5MCw3ICsyMTAsNiBAQAogICAgICAgOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAgbWV0aG9kLgogCiAKLQogICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21cXwogCiAgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBsaW5lcyBzdGFydGluZyB3aXRoICoiRnJvbSAiKiBpbiB0aGUgYm9keSBhcmUKQEAgLTIwMSwxOSArMjIwLDMxIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKICAgICAgICAgIFRoZSAqbWFuZ2xlX2Zyb21fKiBwYXJhbWV0ZXIuCiAKKworICAgLi4gYXR0cmlidXRlOjogbWVzc2FnZV9mYWN0b3J5CisKKyAgICAgIEEgZmFjdG9yeSBmdW5jdGlvbiBmb3IgY29uc3RydWN0aW5nIGEgbmV3IGVtcHR5IG1lc3NhZ2Ugb2JqZWN0LiAgVXNlZAorICAgICAgYnkgdGhlIHBhcnNlciB3aGVuIGJ1aWxkaW5nIG1lc3NhZ2VzLiAgRGVmYXVsdHMgdG8gYGBOb25lYGAsIGluCisgICAgICB3aGljaCBjYXNlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXMgdXNlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKICAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZwogICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CiAKKwogICAgLi4gbWV0aG9kOjogY2xvbmUoKiprdykKIAogICAgICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgUG9saWN5YCBpbnN0YW5jZSB3aG9zZSBhdHRyaWJ1dGVzIGhhdmUgdGhlIHNhbWUKICAgICAgIHZhbHVlcyBhcyB0aGUgY3VycmVudCBpbnN0YW5jZSwgZXhjZXB0IHdoZXJlIHRob3NlIGF0dHJpYnV0ZXMgYXJlCiAgICAgICBnaXZlbiBuZXcgdmFsdWVzIGJ5IHRoZSBrZXl3b3JkIGFyZ3VtZW50cy4KIAorCiAgICBUaGUgcmVtYWluaW5nIDpjbGFzczpgUG9saWN5YCBtZXRob2RzIGFyZSBjYWxsZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UgY29kZSwKICAgIGFuZCBhcmUgbm90IGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBhbiBhcHBsaWNhdGlvbiB1c2luZyB0aGUgZW1haWwgcGFja2FnZS4KICAgIEEgY3VzdG9tIHBvbGljeSBtdXN0IGltcGxlbWVudCBhbGwgb2YgdGhlc2UgbWV0aG9kcy4KIAorCiAgICAuLiBtZXRob2Q6OiBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQogCiAgICAgICBIYW5kbGUgYSAqZGVmZWN0KiBmb3VuZCBvbiAqb2JqKi4gIFdoZW4gdGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcwpAQCAtMjI0LDYgKzI1NSw3IEBACiAgICAgICBpdCBpcyBgYFRydWVgYCwgKmRlZmVjdCogaXMgcmFpc2VkIGFzIGFuIGV4Y2VwdGlvbi4gIElmIGl0IGlzIGBgRmFsc2VgYAogICAgICAgKHRoZSBkZWZhdWx0KSwgKm9iaiogYW5kICpkZWZlY3QqIGFyZSBwYXNzZWQgdG8gOm1ldGg6YHJlZ2lzdGVyX2RlZmVjdGAuCiAKKwogICAgLi4gbWV0aG9kOjogcmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQogCiAgICAgICBSZWdpc3RlciBhICpkZWZlY3QqIG9uICpvYmoqLiAgSW4gdGhlIGVtYWlsIHBhY2thZ2UsICpkZWZlY3QqIHdpbGwgYWx3YXlzCkBAIC0yMzYsMTQgKzI2OCwxNiBAQAogICAgICAgY3VzdG9tIGBgTWVzc2FnZWBgIG9iamVjdHMpIHNob3VsZCBhbHNvIHByb3ZpZGUgc3VjaCBhbiBhdHRyaWJ1dGUsCiAgICAgICBvdGhlcndpc2UgZGVmZWN0cyBpbiBwYXJzZWQgbWVzc2FnZXMgd2lsbCByYWlzZSB1bmV4cGVjdGVkIGVycm9ycy4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfbWF4X2NvdW50KG5hbWUpCiAKICAgICAgIFJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICpuYW1lKi4KIAotICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgCi0gICAgICBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90IGBgMGBgIG9yIGBgTm9uZWBgLCBhbmQgdGhlcmUgYXJlCi0gICAgICBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUgbmFtZSAqbmFtZSogZXF1YWwgdG8gdGhlIHZhbHVlCi0gICAgICByZXR1cm5lZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisgICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKKyAgICAgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0LiAgSWYgdGhlIHJldHVybmVkIHZhbHVlIGlzIG5vdAorICAgICAgYGAwYGAgb3IgYGBOb25lYGAsIGFuZCB0aGVyZSBhcmUgYWxyZWFkeSBhIG51bWJlciBvZiBoZWFkZXJzIHdpdGggdGhlCisgICAgICBuYW1lICpuYW1lKiBncmVhdGhlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCwgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAgICBCZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGBgTWVzc2FnZS5fX3NldGl0ZW1fX2BgIGlzIHRvIGFwcGVuZCB0aGUKICAgICAgIHZhbHVlIHRvIHRoZSBsaXN0IG9mIGhlYWRlcnMsIGl0IGlzIGVhc3kgdG8gY3JlYXRlIGR1cGxpY2F0ZSBoZWFkZXJzCkBAIC0yNTUsNiArMjg5LDcgQEAKIAogICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgYE5vbmVgYCBmb3IgYWxsIGhlYWRlciBuYW1lcy4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIGEgbGlzdCBvZiBzdHJpbmdzLCBlYWNoIHN0cmluZwpAQCAtMjc0LDYgKzMwOSw3IEBACiAKICAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlIG5hbWUgYW5kIHZhbHVlIHByb3ZpZGVkIGJ5CkBAIC0yODksNiArMzI1LDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGN1cnJlbnRseQpAQCAtMzA0LDYgKzM0MSw3IEBACiAKICAgICAgIFRoZXJlIGlzIG5vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSAqbmFtZSogYW5kICp2YWx1ZSogY3VycmVudGx5CkBAIC0zMTYsNiArMzU0LDcgQEAKICAgICAgICp2YWx1ZSogbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4gIFRoZXJlIHNob3VsZCBiZSBubwogICAgICAgc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpbiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IHRoZSBtZXRob2QuCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBiZSBhCkBAIC0zMjUsNzMgKzM2NCw2IEBACiAgICAgICBjb252ZXJ0ZWQgYmFjayBpbnRvIGJpbmFyeSBkYXRhIGluIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QuCiAKIAotLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQotCi0gICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAotICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgbW9kdWxlIGFsc28gZGVmaW5lcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLAotICAgOmNvbnN0OmBjb21wYXQzMmAsIHRoYXQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBwb2xpY3kuICBUaHVzIHRoZSBkZWZhdWx0Ci0gICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMi4KLQotICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGhhdmUgdmFsdWVzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQotICAgOmNsYXNzOmBQb2xpY3lgIGRlZmF1bHQ6Ci0KLSAgIC4uIGF0dHJpYnV0ZTo6IG1hbmdsZV9mcm9tXwotCi0gICAgICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYC4KLQotICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZQotICAgYWJzdHJhY3QgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6Ci0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCi0KLSAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAotICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCi0gICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAotICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCi0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKLQotICAgICAgVGhlIG5hbWUgYW5kIHZhbHVlIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCi0KLSAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYQotICAgICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0IHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCi0gICAgICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KLQotICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKLQotICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCi0gICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcwotICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUKLSAgICAgIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCi0KLSAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQotCi0gICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKLSAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCi0gICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgSWYgYGBjdGVfdHlwZWBgIGlzCi0gICAgICBgYDdiaXRgYCwgbm9uLWFzY2lpIGJpbmFyeSBkYXRhIGlzIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgCi0gICAgICBjaGFyc2V0LiAgT3RoZXJ3aXNlIHRoZSBvcmlnaW5hbCBzb3VyY2UgaGVhZGVyIGlzIHVzZWQsIHdpdGggaXRzIGV4aXN0aW5nCi0gICAgICBsaW5lIGJyZWFrcyBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCi0KLQotQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAgaXMgcHJvdmlkZWQgYXMgYSBtb2R1bGUgY29uc3RhbnQ6Ci0KLS4uIGRhdGE6OiBjb21wYXQzMgotCi0gICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCi0gICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgotCi0KLS4uIG5vdGU6OgotCi0gICBUaGUgZG9jdW1lbnRhdGlvbiBiZWxvdyBkZXNjcmliZXMgbmV3IHBvbGljaWVzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHRoZQotICAgc3RhbmRhcmQgbGlicmFyeSBvbiBhIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLgotICAgQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIGZlYXR1cmUpCi0gICBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAKIC4uIGNsYXNzOjogRW1haWxQb2xpY3koKiprdykKIApAQCAtNDA0LDkgKzM3NiwxNSBAQAogICAgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5IGltcGxlbWVudAogICAgOnJmYzpgMjA0N2AgYW5kIDpyZmM6YDUzMjJgLgogCisgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgCisgICBhdHRyaWJ1dGUgaXMgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0byBhbGwKICAgIHBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXworCisKICAgIC4uIGF0dHJpYnV0ZTo6IHV0ZjgKIAogICAgICAgSWYgYGBGYWxzZWBgLCBmb2xsb3cgOnJmYzpgNTMyMmAsIHN1cHBvcnRpbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4KQEAgLTQxNSwxMyArMzkzLDE0IEBACiAgICAgICBmb3JtYXR0ZWQgaW4gdGhpcyB3YXkgbWF5IGJlIHBhc3NlZCB0byBTTVRQIHNlcnZlcnMgdGhhdCBzdXBwb3J0CiAgICAgICB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoOnJmYzpgNjUzMWApLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJlZm9sZF9zb3VyY2UKIAogICAgICAgSWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgYGBNZXNzYWdlYGAgb2JqZWN0IG9yaWdpbmF0ZWQgZnJvbSBhCiAgICAgICA6bW9kOmB+ZW1haWwucGFyc2VyYCAoYXMgb3Bwb3NlZCB0byBiZWluZyBzZXQgYnkgYSBwcm9ncmFtKSwgdGhpcwogICAgICAgYXR0cmlidXRlIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkIHRoYXQgdmFsdWUKLSAgICAgIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50byBzdHJlYW0gZm9ybS4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMKLSAgICAgIGFyZToKKyAgICAgIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50byBzZXJpYWxpemVkIGZvcm0uICBUaGUgcG9zc2libGUKKyAgICAgIHZhbHVlcyBhcmU6CiAKICAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgIGBgbm9uZWBgICBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZwpAQCAtNDM0LDIzICs0MTMsMjQgQEAKIAogICAgICAgVGhlIGRlZmF1bHQgaXMgYGBsb25nYGAuCiAKKwogICAgLi4gYXR0cmlidXRlOjogaGVhZGVyX2ZhY3RvcnkKIAogICAgICAgQSBjYWxsYWJsZSB0aGF0IHRha2VzIHR3byBhcmd1bWVudHMsIGBgbmFtZWBgIGFuZCBgYHZhbHVlYGAsIHdoZXJlCiAgICAgICBgYG5hbWVgYCBpcyBhIGhlYWRlciBmaWVsZCBuYW1lIGFuZCBgYHZhbHVlYGAgaXMgYW4gdW5mb2xkZWQgaGVhZGVyIGZpZWxkCiAgICAgICB2YWx1ZSwgYW5kIHJldHVybnMgYSBzdHJpbmcgc3ViY2xhc3MgdGhhdCByZXByZXNlbnRzIHRoYXQgaGVhZGVyLiAgQQogICAgICAgZGVmYXVsdCBgYGhlYWRlcl9mYWN0b3J5YGAgKHNlZSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgKSBpcyBwcm92aWRlZAotICAgICAgdGhhdCB1bmRlcnN0YW5kcyBzb21lIG9mIHRoZSA6UkZDOmA1MzIyYCBoZWFkZXIgZmllbGQgdHlwZXMuICAoQ3VycmVudGx5Ci0gICAgICBhZGRyZXNzIGZpZWxkcyBhbmQgZGF0ZSBmaWVsZHMgaGF2ZSBzcGVjaWFsIHRyZWF0bWVudCwgd2hpbGUgYWxsIG90aGVyCi0gICAgICBmaWVsZHMgYXJlIHRyZWF0ZWQgYXMgdW5zdHJ1Y3R1cmVkLiAgVGhpcyBsaXN0IHdpbGwgYmUgY29tcGxldGVkIGJlZm9yZQotICAgICAgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKKyAgICAgIHRoYXQgc3VwcG9ydHMgY3VzdG9tIHBhcnNpbmcgZm9yIHRoZSB2YXJpb3VzIGFkZHJlc3MgYW5kIGRhdGUgOlJGQzpgNTMyMmAKKyAgICAgIGhlYWRlciBmaWVsZCB0eXBlcywgYW5kIHRoZSBtYWpvciBNSU1FIGhlYWRlciBmaWVsZCBzdHlwZXMuICBTdXBwb3J0IGZvcgorICAgICAgYWRkaXRpb25hbCBjdXN0b20gcGFyc2luZyB3aWxsIGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisKIAogICAgLi4gYXR0cmlidXRlOjogY29udGVudF9tYW5hZ2VyCiAKICAgICAgIEFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IHR3byBtZXRob2RzOiBnZXRfY29udGVudCBhbmQgc2V0X2NvbnRlbnQuICBXaGVuCi0gICAgICB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X2NvbnRlbnRgIG9yCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kIG9mIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNhbGxlZCwgaXQgY2FsbHMgdGhlCisgICAgICB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfY29udGVudGAgb3IKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZCBvZiBhbgorICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdCBpcyBjYWxsZWQsIGl0IGNhbGxzIHRoZQogICAgICAgY29ycmVzcG9uZGluZyBtZXRob2Qgb2YgdGhpcyBvYmplY3QsIHBhc3NpbmcgaXQgdGhlIG1lc3NhZ2Ugb2JqZWN0IGFzIGl0cwogICAgICAgZmlyc3QgYXJndW1lbnQsIGFuZCBhbnkgYXJndW1lbnRzIG9yIGtleXdvcmRzIHRoYXQgd2VyZSBwYXNzZWQgdG8gaXQgYXMKICAgICAgIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgQnkgZGVmYXVsdCBgYGNvbnRlbnRfbWFuYWdlcmBgIGlzIHNldCB0bwpAQCAtNDYyLDE2ICs0NDIsMjIgQEAKICAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgYWJzdHJhY3QKICAgIG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKIAogICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlCiAgICAgICA6YXR0cjpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIubWF4X2NvdW50YCBhdHRyaWJ1dGUgb2YgdGhlCiAgICAgICBzcGVjaWFsaXplZCBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaGVhZGVyIHdpdGggdGhlIGdpdmVuIG5hbWUuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKIAotICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIHRoYXQgZm9yIHRoZQotICAgICAgOmNsYXNzOmBDb21wYXQzMmAgcG9saWN5LgorCisgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJ2BgOmBgJyBhbmQgcmV0dXJuZWQKKyAgICAgIHVubW9kaWZpZWQuICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZgorICAgICAgdGhlIHJlbWFpbmRlciBvZiB0aGUgZmlyc3QgbGluZSwgam9pbmluZyBhbGwgc3Vic2VxdWVudCBsaW5lcyB0b2dldGhlciwKKyAgICAgIGFuZCBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLgorCiAKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKIApAQCAtNDgyLDYgKzQ2OCw3IEBACiAgICAgICB0aGUgdmFsdWUuICBJbiB0aGlzIGNhc2UgYSBgYFZhbHVlRXJyb3JgYCBpcyByYWlzZWQgaWYgdGhlIGlucHV0IHZhbHVlCiAgICAgICBjb250YWlucyBDUiBvciBMRiBjaGFyYWN0ZXJzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSwgaXQgaXMgcmV0dXJuZWQgdG8gdW5tb2RpZmllZC4KQEAgLTQ5MCw2ICs0NzcsNyBAQAogICAgICAgaGVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gIEFueSBzdXJyb2dhdGVlc2NhcGVkIGJ5dGVzIGdldCB0dXJuZWQgaW50bwogICAgICAgdGhlIHVuaWNvZGUgdW5rbm93bi1jaGFyYWN0ZXIgZ2x5cGguCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKIAogICAgICAgSGVhZGVyIGZvbGRpbmcgaXMgY29udHJvbGxlZCBieSB0aGUgOmF0dHI6YHJlZm9sZF9zb3VyY2VgIHBvbGljeSBzZXR0aW5nLgpAQCAtNTA4LDYgKzQ5Niw3IEBACiAgICAgICByZWdhcmRsZXNzIG9mIHRoZSBgYHJlZm9sZF9zb3VyY2VgYCBzZXR0aW5nLCB3aGljaCBjYXVzZXMgdGhlIGJpbmFyeSBkYXRhCiAgICAgICB0byBiZSBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGRfYmluYXJ5KG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgc2FtZSBhcyA6bWV0aDpgZm9sZGAgaWYgOmF0dHI6YH5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgN2JpdGBgLCBleGNlcHQKQEAgLTUxOSwyMyArNTA4LDI3IEBACiAgICAgICBgYHJlZm9sZF9oZWFkZXJgYCBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZQogICAgICAgYmluYXJ5IGRhdGEgY29uc2lzdHMgb2Ygc2luZ2xlIGJ5dGUgY2hhcmFjdGVycyBvciBtdWx0aWJ5dGUgY2hhcmFjdGVycy4KIAorCiBUaGUgZm9sbG93aW5nIGluc3RhbmNlcyBvZiA6Y2xhc3M6YEVtYWlsUG9saWN5YCBwcm92aWRlIGRlZmF1bHRzIHN1aXRhYmxlIGZvcgogc3BlY2lmaWMgYXBwbGljYXRpb24gZG9tYWlucy4gIE5vdGUgdGhhdCBpbiB0aGUgZnV0dXJlIHRoZSBiZWhhdmlvciBvZiB0aGVzZQogaW5zdGFuY2VzIChpbiBwYXJ0aWN1bGFyIHRoZSBgYEhUVFBgYCBpbnN0YW5jZSkgbWF5IGJlIGFkanVzdGVkIHRvIGNvbmZvcm0gZXZlbgogbW9yZSBjbG9zZWx5IHRvIHRoZSBSRkNzIHJlbGV2YW50IHRvIHRoZWlyIGRvbWFpbnMuCiAKKwogLi4gZGF0YTo6IGRlZmF1bHQKIAogICAgQW4gaW5zdGFuY2Ugb2YgYGBFbWFpbFBvbGljeWBgIHdpdGggYWxsIGRlZmF1bHRzIHVuY2hhbmdlZC4gIFRoaXMgcG9saWN5CiAgICB1c2VzIHRoZSBzdGFuZGFyZCBQeXRob24gYGBcbmBgIGxpbmUgZW5kaW5ncyByYXRoZXIgdGhhbiB0aGUgUkZDLWNvcnJlY3QKICAgIGBgXHJcbmBgLgogCisKIC4uIGRhdGE6OiBTTVRQCiAKICAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBtZXNzYWdlcyBpbiBjb25mb3JtYW5jZSB3aXRoIHRoZSBlbWFpbCBSRkNzLgogICAgTGlrZSBgYGRlZmF1bHRgYCwgYnV0IHdpdGggYGBsaW5lc2VwYGAgc2V0IHRvIGBgXHJcbmBgLCB3aGljaCBpcyBSRkMKICAgIGNvbXBsaWFudC4KIAorCiAuLiBkYXRhOjogU01UUFVURjgKIAogICAgVGhlIHNhbWUgYXMgYGBTTVRQYGAgZXhjZXB0IHRoYXQgOmF0dHI6YH5FbWFpbFBvbGljeS51dGY4YCBpcyBgYFRydWVgYC4KQEAgLTU0NCwxMSArNTM3LDEzIEBACiAgICBzZW5kZXIgb3IgcmVjaXBpZW50IGFkZHJlc3NlcyBoYXZlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzICh0aGUKICAgIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlYCBtZXRob2QgaGFuZGxlcyB0aGlzIGF1dG9tYXRpY2FsbHkpLgogCisKIC4uIGRhdGE6OiBIVFRQCiAKICAgIFN1aXRhYmxlIGZvciBzZXJpYWxpemluZyBoZWFkZXJzIHdpdGggZm9yIHVzZSBpbiBIVFRQIHRyYWZmaWMuICBMaWtlCiAgICBgYFNNVFBgYCBleGNlcHQgdGhhdCBgYG1heF9saW5lX2xlbmd0aGBgIGlzIHNldCB0byBgYE5vbmVgYCAodW5saW1pdGVkKS4KIAorCiAuLiBkYXRhOjogc3RyaWN0CiAKICAgIENvbnZlbmllbmNlIGluc3RhbmNlLiAgVGhlIHNhbWUgYXMgYGBkZWZhdWx0YGAgZXhjZXB0IHRoYXQKQEAgLTU1Nyw2ICs1NTIsNyBAQAogCiAgICAgICAgIHNvbWVwb2xpY3kgKyBwb2xpY3kuc3RyaWN0CiAKKwogV2l0aCBhbGwgb2YgdGhlc2UgOmNsYXNzOmBFbWFpbFBvbGljaWVzIDwuRW1haWxQb2xpY3k+YCwgdGhlIGVmZmVjdGl2ZSBBUEkgb2YKIHRoZSBlbWFpbCBwYWNrYWdlIGlzIGNoYW5nZWQgZnJvbSB0aGUgUHl0aG9uIDMuMiBBUEkgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgogCkBAIC01NzMsNyArNTY5LDcgQEAKICAgICAgYW5kIGFsbG93ZWQuCiAKIEZyb20gdGhlIGFwcGxpY2F0aW9uIHZpZXcsIHRoaXMgbWVhbnMgdGhhdCBhbnkgaGVhZGVyIG9idGFpbmVkIHRocm91Z2ggdGhlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGlzIGEgaGVhZGVyIG9iamVjdCB3aXRoIGV4dHJhCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgYSBoZWFkZXIgb2JqZWN0IHdpdGggZXh0cmEKIGF0dHJpYnV0ZXMsIHdob3NlIHN0cmluZyB2YWx1ZSBpcyB0aGUgZnVsbHkgZGVjb2RlZCB1bmljb2RlIHZhbHVlIG9mIHRoZQogaGVhZGVyLiAgTGlrZXdpc2UsIGEgaGVhZGVyIG1heSBiZSBhc3NpZ25lZCBhIG5ldyB2YWx1ZSwgb3IgYSBuZXcgaGVhZGVyCiBjcmVhdGVkLCB1c2luZyBhIHVuaWNvZGUgc3RyaW5nLCBhbmQgdGhlIHBvbGljeSB3aWxsIHRha2UgY2FyZSBvZiBjb252ZXJ0aW5nCkBAIC01ODEsMyArNTc3LDc1IEBACiAKIFRoZSBoZWFkZXIgb2JqZWN0cyBhbmQgdGhlaXIgYXR0cmlidXRlcyBhcmUgZGVzY3JpYmVkIGluCiA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgorCisKKworLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAorICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQorICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgbW9kdWxlIGFsc28gZGVmaW5lcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLAorICAgOmNvbnN0OmBjb21wYXQzMmAsIHRoYXQgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBwb2xpY3kuICBUaHVzIHRoZSBkZWZhdWx0CisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpcyB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMi4KKworICAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGhhdmUgdmFsdWVzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZQorICAgOmNsYXNzOmBQb2xpY3lgIGRlZmF1bHQ6CisKKworICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21fCisKKyAgICAgIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgLgorCisKKyAgIFRoZSBjbGFzcyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUKKyAgIGFic3RyYWN0IG1ldGhvZHMgb2YgOmNsYXNzOmBQb2xpY3lgOgorCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCisKKyAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAorICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCisgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAorICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBJZiB0aGUgdmFsdWUgY29udGFpbnMgYmluYXJ5IGRhdGEsIGl0IGlzIGNvbnZlcnRlZCBpbnRvIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYCBjaGFyc2V0LgorICAgICAgT3RoZXJ3aXNlIGl0IGlzIHJldHVybmVkIHVubW9kaWZpZWQuCisKKworICAgLi4gbWV0aG9kOjogZm9sZChuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCisgICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcworICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUKKyAgICAgIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCisKKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKKyAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKKyAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKKyAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbnkgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpdCBtYXkgY29udGFpbi4KKworCisuLiBkYXRhOjogY29tcGF0MzIKKworICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBDb21wYXQzMmAsIHByb3ZpZGluZyAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQorICAgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjMgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgZmVhdHVyZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKaW5kZXggZThiYjAyYi4uYzQxODdkZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnJzdApAQCAtMyw1MCArMywxMDQgQEAKIAogLi4gbW9kdWxlOjogZW1haWwKICAgIDpzeW5vcHNpczogUGFja2FnZSBzdXBwb3J0aW5nIHRoZSBwYXJzaW5nLCBtYW5pcHVsYXRpbmcsIGFuZCBnZW5lcmF0aW5nCi0gICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2VzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuCi0KLS4uIG1vZHVsZWF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KLS4uIHNlY3Rpb25hdXRob3I6OiBCYXJyeSBBLiBXYXJzYXcgPGJhcnJ5QHB5dGhvbi5vcmc+Ci0uLiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxMCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICBlbWFpbCBtZXNzYWdlcy4KKy4uIG1vZHVsZWF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4sCisgICAgICAgICAgICAgICAgICBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvX19pbml0X18ucHlgCiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyBhIGxpYnJhcnkgZm9yIG1hbmFnaW5nIGVtYWlsIG1lc3NhZ2VzLCBpbmNsdWRpbmcKLU1JTUUgYW5kIG90aGVyIDpyZmM6YDI4MjJgXCAtYmFzZWQgbWVzc2FnZSBkb2N1bWVudHMuICBJdCBpcyBzcGVjaWZpY2FsbHkgKm5vdCoKLWRlc2lnbmVkIHRvIGRvIGFueSBzZW5kaW5nIG9mIGVtYWlsIG1lc3NhZ2VzIHRvIFNNVFAgKDpyZmM6YDI4MjFgKSwgTk5UUCwgb3IKLW90aGVyIHNlcnZlcnM7IHRob3NlIGFyZSBmdW5jdGlvbnMgb2YgbW9kdWxlcyBzdWNoIGFzIDptb2Q6YHNtdHBsaWJgIGFuZAotOm1vZDpgbm50cGxpYmAuIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBhdHRlbXB0cyB0byBiZSBhcyBSRkMtY29tcGxpYW50IGFzCi1wb3NzaWJsZSwgc3VwcG9ydGluZyBpbiBhZGRpdGlvbiB0byA6cmZjOmAyODIyYCwgc3VjaCBNSU1FLXJlbGF0ZWQgUkZDcyBhcwotOnJmYzpgMjA0NWAsIDpyZmM6YDIwNDZgLCA6cmZjOmAyMDQ3YCwgYW5kIDpyZmM6YDIyMzFgLgorVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIGEgbGlicmFyeSBmb3IgbWFuYWdpbmcgZW1haWwgbWVzc2FnZXMuICBJdCBpcworc3BlY2lmaWNhbGx5ICpub3QqIGRlc2lnbmVkIHRvIGRvIGFueSBzZW5kaW5nIG9mIGVtYWlsIG1lc3NhZ2VzIHRvIFNNVFAKKyg6cmZjOmAyODIxYCksIE5OVFAsIG9yIG90aGVyIHNlcnZlcnM7IHRob3NlIGFyZSBmdW5jdGlvbnMgb2YgbW9kdWxlcyBzdWNoIGFzCis6bW9kOmBzbXRwbGliYCBhbmQgOm1vZDpgbm50cGxpYmAuICBUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgYXR0ZW1wdHMgdG8gYmUgYXMKK1JGQy1jb21wbGlhbnQgYXMgcG9zc2libGUsIHN1cHBvcnRpbmcgOnJmYzpgNTIzM2AgYW5kIDpyZmM6YDY1MzJgLCBhcyB3ZWxsIGFzCitzdWNoIE1JTUUtcmVsYXRlZCBSRkNzIGFzIDpyZmM6YDIwNDVgLCA6cmZjOmAyMDQ2YCwgOnJmYzpgMjA0N2AsIDpyZmM6YDIxODNgLAorYW5kIDpyZmM6YDIyMzFgLgogCi1UaGUgcHJpbWFyeSBkaXN0aW5ndWlzaGluZyBmZWF0dXJlIG9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyB0aGF0IGl0IHNwbGl0cwotdGhlIHBhcnNpbmcgYW5kIGdlbmVyYXRpbmcgb2YgZW1haWwgbWVzc2FnZXMgZnJvbSB0aGUgaW50ZXJuYWwgKm9iamVjdCBtb2RlbCoKLXJlcHJlc2VudGF0aW9uIG9mIGVtYWlsLiAgQXBwbGljYXRpb25zIHVzaW5nIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBkZWFsCi1wcmltYXJpbHkgd2l0aCBvYmplY3RzOyB5b3UgY2FuIGFkZCBzdWItb2JqZWN0cyB0byBtZXNzYWdlcywgcmVtb3ZlIHN1Yi1vYmplY3RzCi1mcm9tIG1lc3NhZ2VzLCBjb21wbGV0ZWx5IHJlLWFycmFuZ2UgdGhlIGNvbnRlbnRzLCBldGMuICBUaGVyZSBpcyBhIHNlcGFyYXRlCi1wYXJzZXIgYW5kIGEgc2VwYXJhdGUgZ2VuZXJhdG9yIHdoaWNoIGhhbmRsZXMgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZmxhdCB0ZXh0Ci10byB0aGUgb2JqZWN0IG1vZGVsLCBhbmQgdGhlbiBiYWNrIHRvIGZsYXQgdGV4dCBhZ2Fpbi4gIFRoZXJlIGFyZSBhbHNvIGhhbmR5Ci1zdWJjbGFzc2VzIGZvciBzb21lIGNvbW1vbiBNSU1FIG9iamVjdCB0eXBlcywgYW5kIGEgZmV3IG1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzCi10aGF0IGhlbHAgd2l0aCBzdWNoIGNvbW1vbiB0YXNrcyBhcyBleHRyYWN0aW5nIGFuZCBwYXJzaW5nIG1lc3NhZ2UgZmllbGQgdmFsdWVzLAotY3JlYXRpbmcgUkZDLWNvbXBsaWFudCBkYXRlcywgZXRjLgorVGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGNhbiBiZSBkaXZpZGVkIGludG8gdGhyZWUgbWFqb3IKK2NvbXBvbmVudHMsIHBsdXMgYSBmb3VydGggY29tcG9uZW50IHRoYXQgY29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZSBvdGhlcgorY29tcG9uZW50cy4KKworVGhlIGNlbnRyYWwgY29tcG9uZW50IG9mIHRoZSBwYWNrYWdlIGlzIGFuICJvYmplY3QgbW9kZWwiIHRoYXQgcmVwcmVzZW50cyBlbWFpbAorbWVzc2FnZXMuICBBbiBhcHBsaWNhdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgcGFja2FnZSBwcmltYXJpbHkgdGhyb3VnaCB0aGUKK29iamVjdCBtb2RlbCBpbnRlcmZhY2UgZGVmaW5lZCBpbiB0aGUgOm1vZDpgfmVtYWlsLm1lc3NhZ2VgIHN1Yi1tb2R1bGUuICBUaGUKK2FwcGxpY2F0aW9uIGNhbiB1c2UgdGhpcyBBUEkgdG8gYXNrIHF1ZXN0aW9ucyBhYm91dCBhbiBleGlzdGluZyBlbWFpbCwgdG8KK2NvbnN0cnVjdCBhIG5ldyBlbWFpbCwgb3IgdG8gYWRkIG9yIHJlbW92ZSBlbWFpbCBzdWJjb21wb25lbnRzIHRoYXQgdGhlbXNlbHZlcwordXNlIHRoZSBzYW1lIG9iamVjdCBtb2RlbCBpbnRlcmZhY2UuICBUaGF0IGlzLCBmb2xsb3dpbmcgdGhlIG5hdHVyZSBvZiBlbWFpbAorbWVzc2FnZXMgYW5kIHRoZWlyIE1JTUUgc3ViY29tcG9uZW50cywgdGhlIGVtYWlsIG9iamVjdCBtb2RlbCBpcyBhIHRyZWUKK3N0cnVjdHVyZSBvZiBvYmplY3RzIHRoYXQgYWxsIHByb3ZpZGUgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorQVBJLgorCitUaGUgb3RoZXIgdHdvIG1ham9yIGNvbXBvbmVudHMgb2YgdGhlIHBhY2thZ2UgYXJlIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBhbmQKK3RoZSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4gIFRoZSBwYXJzZXIgdGFrZXMgdGhlIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiBhbgorZW1haWwgbWVzc2FnZSAoYSBzdHJlYW0gb2YgYnl0ZXMpIGFuZCBjb252ZXJ0cyBpdCBpbnRvIGEgdHJlZSBvZgorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdHMuICBUaGUgZ2VuZXJhdG9yIHRha2VzIGFuCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgYW5kIHR1cm5zIGl0IGJhY2sgaW50byBhIHNlcmlhbGl6ZWQgYnl0ZQorc3RyZWFtLiAgKFRoZSBwYXJzZXIgYW5kIGdlbmVyYXRvciBhbHNvIGhhbmRsZSBzdHJlYW1zIG9mIHRleHQgY2hhcmFjdGVycywgYnV0Cit0aGlzIHVzYWdlIGlzIGRpc2NvdXJhZ2VkIGFzIGl0IGlzIHRvbyBlYXN5IHRvIGVuZCB1cCB3aXRoIG1lc3NhZ2VzIHRoYXQgYXJlCitub3QgdmFsaWQgaW4gb25lIHdheSBvciBhbm90aGVyLikKKworVGhlIGNvbnRyb2wgY29tcG9uZW50IGlzIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUuICBFdmVyeQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLCBldmVyeSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwgYW5kIGV2ZXJ5Cis6bW9kOmB+ZW1haWwucGFyc2VyYCBoYXMgYW4gYXNzb2NpYXRlZCA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdAorY29udHJvbHMgaXRzIGJlaGF2aW9yLiAgVXN1YWxseSBhbiBhcHBsaWNhdGlvbiBvbmx5IG5lZWRzIHRvIHNwZWNpZnkgdGhlIHBvbGljeQord2hlbiBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgaXMgY3JlYXRlZCwgZWl0aGVyIGJ5IGRpcmVjdGx5CitpbnN0YW50aWF0aW5nIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCAgdG8gY3JlYXRlIGEgbmV3IGVtYWlsLAorb3IgYnkgcGFyc2luZyBhbiBpbnB1dCBzdHJlYW0gdXNpbmcgYSA6bW9kOmB+ZW1haWwucGFyc2VyYC4gIEJ1dCB0aGUgcG9saWN5IGNhbgorYmUgY2hhbmdlZCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQgdXNpbmcgYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4KK1RoaXMgYWxsb3dzLCBmb3IgZXhhbXBsZSwgYSBnZW5lcmljIGVtYWlsIG1lc3NhZ2UgdG8gYmUgcGFyc2VkIGZyb20gZGlzaywgYnV0Cit0byBzZXJpYWxpemUgaXQgdXNpbmcgc3RhbmRhcmQgU01UUCBzZXR0aW5ncyB3aGVuIHNlbmRpbmcgaXQgdG8gYW4gZW1haWwKK3NlcnZlci4KKworVGhlIGVtYWlsIHBhY2thZ2UgZG9lcyBpdHMgYmVzdCB0byBoaWRlIHRoZSBkZXRhaWxzIG9mIHRoZSB2YXJpb3VzIGdvdmVybmluZworUkZDcyBmcm9tIHRoZSBhcHBsaWNhdGlvbi4gIENvbmNlcHR1YWxseSB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGJlIGFibGUgdG8KK3RyZWF0IHRoZSBlbWFpbCBtZXNzYWdlIGFzIGEgc3RydWN0dXJlZCB0cmVlIG9mIHVuaWNvZGUgdGV4dCBhbmQgYmluYXJ5CithdHRhY2htZW50cywgd2l0aG91dCBoYXZpbmcgdG8gd29ycnkgYWJvdXQgaG93IHRoZXNlIGFyZSByZXByZXNlbnRlZCB3aGVuCitzZXJpYWxpemVkLiAgSW4gcHJhY3RpY2UsIGhvd2V2ZXIsIGl0IGlzIG9mdGVuIG5lY2Vzc2FyeSB0byBiZSBhd2FyZSBvZiBhdAorbGVhc3Qgc29tZSBvZiB0aGUgcnVsZXMgZ292ZXJuaW5nIE1JTUUgbWVzc2FnZXMgYW5kIHRoZWlyIHN0cnVjdHVyZSwKK3NwZWNpZmljYWxseSB0aGUgbmFtZXMgYW5kIG5hdHVyZSBvZiB0aGUgTUlNRSAiY29udGVudCB0eXBlcyIgYW5kIGhvdyB0aGV5CitpZGVudGlmeSBtdWx0aXBhcnQgZG9jdW1lbnRzLiAgRm9yIHRoZSBtb3N0IHBhcnQgdGhpcyBrbm93bGVkZ2Ugc2hvdWxkIG9ubHkgYmUKK3JlcXVpcmVkIGZvciBtb3JlIGNvbXBsZXggYXBwbGljYXRpb25zLCBhbmQgZXZlbiB0aGVuIGl0IHNob3VsZCBvbmx5IGJlIHRoZQoraGlnaCBsZXZlbCBzdHJ1Y3R1cmUgaW4gcXVlc3Rpb24sIGFuZCBub3QgdGhlIGRldGFpbHMgb2YgaG93IHRob3NlIHN0cnVjdHVyZXMKK2FyZSByZXByZXNlbnRlZC4gIFNpbmNlIE1JTUUgY29udGVudCB0eXBlcyBhcmUgdXNlZCB3aWRlbHkgaW4gbW9kZXJuIGludGVybmV0Citzb2Z0d2FyZSAobm90IGp1c3QgZW1haWwpLCB0aGlzIHdpbGwgYmUgYSBmYW1pbGlhciBjb25jZXB0IHRvIG1hbnkgcHJvZ3JhbW1lcnMuCiAKIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlLgotVGhlIG9yZGVyaW5nIGZvbGxvd3MgYSBwcm9ncmVzc2lvbiB0aGF0IHNob3VsZCBiZSBjb21tb24gaW4gYXBwbGljYXRpb25zOiBhbgotZW1haWwgbWVzc2FnZSBpcyByZWFkIGFzIGZsYXQgdGV4dCBmcm9tIGEgZmlsZSBvciBvdGhlciBzb3VyY2UsIHRoZSB0ZXh0IGlzCi1wYXJzZWQgdG8gcHJvZHVjZSB0aGUgb2JqZWN0IHN0cnVjdHVyZSBvZiB0aGUgZW1haWwgbWVzc2FnZSwgdGhpcyBzdHJ1Y3R1cmUgaXMKLW1hbmlwdWxhdGVkLCBhbmQgZmluYWxseSwgdGhlIG9iamVjdCB0cmVlIGlzIHJlbmRlcmVkIGJhY2sgaW50byBmbGF0IHRleHQuCitXZSBzdGFydCB3aXRoIHRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgb2JqZWN0IG1vZGVsLCB3aGljaCBpcyB0aGUgcHJpbWFyeQoraW50ZXJmYWNlIGFuIGFwcGxpY2F0aW9uIHdpbGwgdXNlLCBhbmQgZm9sbG93IHRoYXQgd2l0aCB0aGUKKzptb2Q6YH5lbWFpbC5wYXJzZXJgIGFuZCA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCBjb21wb25lbnRzLiAgVGhlbiB3ZSBjb3ZlciB0aGUKKzptb2Q6YH5lbWFpbC5wb2xpY3lgIGNvbnRyb2xzLCB3aGljaCBjb21wbGV0ZXMgdGhlIHRyZWF0bWVudCBvZiB0aGUgbWFpbgorY29tcG9uZW50cyBvZiB0aGUgbGlicmFyeS4KIAotSXQgaXMgcGVyZmVjdGx5IGZlYXNpYmxlIHRvIGNyZWF0ZSB0aGUgb2JqZWN0IHN0cnVjdHVyZSBvdXQgb2Ygd2hvbGUgY2xvdGggLS0tCi1pLmUuIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgRnJvbSB0aGVyZSwgYSBzaW1pbGFyIHByb2dyZXNzaW9uIGNhbiBiZSB0YWtlbiBhcwotYWJvdmUuCitUaGUgbmV4dCB0aHJlZSBzZWN0aW9ucyBjb3ZlciB0aGUgZXhjZXB0aW9ucyB0aGUgcGFja2FnZSBtYXkgcmFpc2UgYW5kIHRoZQorZGVmZWN0cyAobm9uLWNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcykgdGhhdCB0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgbWF5CitkZXRlY3QuICBUaGVuIHdlIGNvdmVyIHRoZSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgIGFuZCB0aGUKKzptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgc3ViLWNvbXBvbmVudHMsIHdoaWNoIHByb3ZpZGUgdG9vbHMgZm9yIGRvaW5nIG1vcmUKK2RldGFpbGVkIG1hbmlwdWxhdGlvbiBvZiBoZWFkZXJzIGFuZCBwYXlsb2FkcywgcmVzcGVjdGl2ZWx5LiAgQm90aCBvZiB0aGVzZQorY29tcG9uZW50cyBjb250YWluIGZlYXR1cmVzIHJlbGV2YW50IHRvIGNvbnN1bWluZyBhbmQgcHJvZHVjaW5nIG5vbi10cml2aWFsCittZXNzYWdlcywgYnV0IGFsc28gZG9jdW1lbnQgdGhlaXIgZXh0ZW5zaWJpbGl0eSBBUElzLCB3aGljaCB3aWxsIGJlIG9mIGludGVyZXN0Cit0byBhZHZhbmNlZCBhcHBsaWNhdGlvbnMuCiAKLUFsc28gaW5jbHVkZWQgYXJlIGRldGFpbGVkIHNwZWNpZmljYXRpb25zIG9mIGFsbCB0aGUgY2xhc3NlcyBhbmQgbW9kdWxlcyB0aGF0Ci10aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgcHJvdmlkZXMsIHRoZSBleGNlcHRpb24gY2xhc3NlcyB5b3UgbWlnaHQgZW5jb3VudGVyCi13aGlsZSB1c2luZyB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UsIHNvbWUgYXV4aWxpYXJ5IHV0aWxpdGllcywgYW5kIGEgZmV3Ci1leGFtcGxlcy4gIEZvciB1c2VycyBvZiB0aGUgb2xkZXIgOm1vZDpgbWltZWxpYmAgcGFja2FnZSwgb3IgcHJldmlvdXMgdmVyc2lvbnMKLW9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSwgYSBzZWN0aW9uIG9uIGRpZmZlcmVuY2VzIGFuZCBwb3J0aW5nIGlzIHByb3ZpZGVkLgorRm9sbG93aW5nIHRob3NlIGlzIGEgc2V0IG9mIGV4YW1wbGVzIG9mIHVzaW5nIHRoZSBmdW5kYW1lbnRhbCBwYXJ0cyBvZiB0aGUgQVBJcworY292ZXJlZCBpbiB0aGUgcHJlY2VkaW5nIHNlY3Rpb25zLgorCitUaGUgZm9yZ29pbmcgcmVwcmVzZW50IHRoZSBtb2Rlcm4gKHVuaWNvZGUgZnJpZW5kbHkpIEFQSSBvZiB0aGUgZW1haWwgcGFja2FnZS4KK1RoZSByZW1haW5pbmcgc2VjdGlvbnMsIHN0YXJ0aW5nIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAKK2NsYXNzLCBjb3ZlciB0aGUgbGVnYWN5IDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBBUEkgdGhhdCBkZWFscyBtdWNoIG1vcmUKK2RpcmVjdGx5IHdpdGggdGhlIGRldGFpbHMgb2YgaG93IGVtYWlsIG1lc3NhZ2VzIGFyZSByZXByZXNlbnRlZC4gIFRoZQorOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSBkb2VzICpub3QqIGhpZGUgdGhlIGRldGFpbHMgb2YgdGhlIFJGQ3MgZnJvbQordGhlIGFwcGxpY2F0aW9uLCBidXQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IG5lZWQgdG8gb3BlcmF0ZSBhdCB0aGF0IGxldmVsLCB0aGV5CitjYW4gYmUgdXNlZnVsIHRvb2xzLiAgVGhpcyBkb2N1bWVudGF0aW9uIGlzIGFsc28gcmVsZXZhbnQgZm9yIGFwcGxpY2F0aW9ucyB0aGF0CithcmUgc3RpbGwgdXNpbmcgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSBmb3IgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgcmVhc29ucy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIERvY3MgcmVvcmdhbml6ZWQgYW5kIHJld3JpdHRlbiB0byBwcm9tb3RlIHRoZSBuZXcKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYC86Y2xhc3M6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3lgCisgICBBUEkuCiAKIENvbnRlbnRzIG9mIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBkb2N1bWVudGF0aW9uOgogCkBAIC01NiwzMzUgKzExMCw0MyBAQAogICAgZW1haWwucGFyc2VyLnJzdAogICAgZW1haWwuZ2VuZXJhdG9yLnJzdAogICAgZW1haWwucG9saWN5LnJzdAorCisgICBlbWFpbC5lcnJvcnMucnN0CiAgICBlbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKICAgIGVtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAorCisgICBlbWFpbC5leGFtcGxlcy5yc3QKKworTGVnYWN5IEFQSToKKworLi4gdG9jdHJlZTo6CisKKyAgIGVtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0CiAgICBlbWFpbC5taW1lLnJzdAogICAgZW1haWwuaGVhZGVyLnJzdAogICAgZW1haWwuY2hhcnNldC5yc3QKICAgIGVtYWlsLmVuY29kZXJzLnJzdAotICAgZW1haWwuZXJyb3JzLnJzdAogICAgZW1haWwudXRpbC5yc3QKICAgIGVtYWlsLml0ZXJhdG9ycy5yc3QKLSAgIGVtYWlsLWV4YW1wbGVzLnJzdAogCiAKIC4uIHNlZWFsc286OgogCiAgICBNb2R1bGUgOm1vZDpgc210cGxpYmAKLSAgICAgIFNNVFAgcHJvdG9jb2wgY2xpZW50CisgICAgICBTTVRQIChTaW1wbGUgTWFpbCBUcmFuc3BvcnQgUHJvdGNvbCkgY2xpZW50CisKKyAgIE1vZHVsZSA6bW9kOmBwb3BsaWJgCisgICAgICBQT1AgKFBvc3QgT2ZmaWNlIFByb3RvY29sKSBjbGllbnQKKworICAgTW9kdWxlIDptb2Q6YGltYXBsaWJgCisgICAgICBJTUFQIChJbnRlcm5ldCBNZXNzYWdlIEFjY2VzcyBQcm90b2NvbCkgY2xpZW50CiAKICAgIE1vZHVsZSA6bW9kOmBubnRwbGliYAotICAgICAgTk5UUCBwcm90b2NvbCBjbGllbnQKKyAgICAgIE5OVFAgKE5ldCBOZXdzIFRyYW5zcG9ydCBQcm90b2NvbCkgY2xpZW50CiAKKyAgIE1vZHVsZSA6bW9kOmBtYWlsYm94YAorICAgICAgVG9vbHMgZm9yIGNyZWF0aW5nLCByZWFkaW5nLCBhbmQgbWFuYWdpbmcgY29sbGVjdGlvbnMgb2YgbWVzc2FnZXMgb24gZGlzaworICAgICAgdXNpbmcgYSB2YXJpZXR5IHN0YW5kYXJkIGZvcm1hdHMuCiAKLS4uIF9lbWFpbC1wa2ctaGlzdG9yeToKLQotUGFja2FnZSBIaXN0b3J5Ci0tLS0tLS0tLS0tLS0tLS0KLQotVGhpcyB0YWJsZSBkZXNjcmliZXMgdGhlIHJlbGVhc2UgaGlzdG9yeSBvZiB0aGUgZW1haWwgcGFja2FnZSwgY29ycmVzcG9uZGluZyB0bwotdGhlIHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgdGhlIHBhY2thZ2Ugd2FzIHJlbGVhc2VkIHdpdGguICBGb3IgcHVycG9zZXMgb2YgdGhpcwotZG9jdW1lbnQsIHdoZW4geW91IHNlZSBhIG5vdGUgYWJvdXQgY2hhbmdlIG9yIGFkZGVkIHZlcnNpb25zLCB0aGVzZSByZWZlciB0byB0aGUKLVB5dGhvbiB2ZXJzaW9uIHRoZSBjaGFuZ2Ugd2FzIG1hZGUgaW4sICpub3QqIHRoZSBlbWFpbCBwYWNrYWdlIHZlcnNpb24uICBUaGlzCi10YWJsZSBhbHNvIGRlc2NyaWJlcyB0aGUgUHl0aG9uIGNvbXBhdGliaWxpdHkgb2YgZWFjaCB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlLgotCi0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgZW1haWwgdmVyc2lvbiB8IGRpc3RyaWJ1dGVkIHdpdGggICAgICAgICAgICAgfCBjb21wYXRpYmxlIHdpdGggICAgICAgfAotKz09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi18IDpjb25zdDpgMS54YCAgfCBQeXRob24gMi4yLjAgdG8gUHl0aG9uIDIuMi4xIHwgKm5vIGxvbmdlciBzdXBwb3J0ZWQqIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDIuNWAgIHwgUHl0aG9uIDIuMi4yKyBhbmQgUHl0aG9uIDIuMyB8IFB5dGhvbiAyLjEgdG8gMi41ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmAzLjBgICB8IFB5dGhvbiAyLjQgYW5kIFB5dGhvbiAyLjUgICAgfCBQeXRob24gMi4zIHRvIDIuNiAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgNC4wYCAgfCBQeXRob24gMi41IHRvIFB5dGhvbiAyLjcgICAgIHwgUHl0aG9uIDIuMyB0byAyLjcgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDUuMGAgIHwgUHl0aG9uIDMuMCBhbmQgUHl0aG9uIDMuMSAgICB8IFB5dGhvbiAzLjAgdG8gMy4yICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmA1LjFgICB8IFB5dGhvbiAzLjIgICAgICAgICAgICAgICAgICAgfCBQeXRob24gMy4yICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0KLUFmdGVyIFZlcnNpb24gNS4xIChQeXRob24gMy4yKSwgdGhlIGVtYWlsIHBhY2thZ2Ugbm8gbG9uZ2VyIGhhcyBhIHZlcnNpb24gdGhhdAotaXMgc2VwYXJhdGUgZnJvbSB0aGUgUHl0aG9uIHZlcnNpb24uICAoU2VlIHRoZSA6cmVmOmB3aGF0c25ldy1pbmRleGAgZG9jdW1lbnRzCi1mb3IgdGhlIHJlc3BlY3RpdmUgUHl0aG9uIHZlcnNpb25zIGZvciBkZXRhaWxzIG9uIGNoYW5nZXMuKQotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA1LjEgYW5kCi12ZXJzaW9uIDUuMDoKLQotKiBJdCBpcyBvbmNlIGFnYWluIHBvc3NpYmxlIHRvIHBhcnNlIG1lc3NhZ2VzIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGJ5dGVzLAotICBhbmQgdG8gcmVwcm9kdWNlIHN1Y2ggbWVzc2FnZXMgaWYgdGhlIGRhdGEgY29udGFpbmluZyB0aGUgbm9uLUFTQ0lJCi0gIGJ5dGVzIGlzIG5vdCBtb2RpZmllZC4KLQotKiBOZXcgZnVuY3Rpb25zIDpmdW5jOmBtZXNzYWdlX2Zyb21fYnl0ZXNgIGFuZCA6ZnVuYzpgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlYCwKLSAgYW5kIG5ldyBjbGFzc2VzIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc0ZlZWRQYXJzZXJgIGFuZAotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGFsbG93IGJpbmFyeSBtZXNzYWdlIGRhdGEgdG8gYmUgcGFyc2VkCi0gIGludG8gbW9kZWwgb2JqZWN0cy4KLQotKiBHaXZlbiBieXRlcyBpbnB1dCB0byB0aGUgbW9kZWwsIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYAotICB3aWxsIGJ5IGRlZmF1bHQgZGVjb2RlIGEgbWVzc2FnZSBib2R5IHRoYXQgaGFzIGEKLSAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHVzaW5nIHRoZSBjaGFyc2V0Ci0gIHNwZWNpZmllZCBpbiB0aGUgTUlNRSBoZWFkZXJzIGFuZCByZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJpbmcuCi0KLSogR2l2ZW4gYnl0ZXMgaW5wdXQgdG8gdGhlIG1vZGVsLCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB3aWxsCi0gIGNvbnZlcnQgbWVzc2FnZSBib2RpZXMgdGhhdCBoYXZlIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mCi0gIDhiaXQgdG8gaW5zdGVhZCBoYXZlIGEgN2JpdCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLgotCi0qIE5ldyBjbGFzcyA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIHByb2R1Y2VzIGJ5dGVzCi0gIGFzIG91dHB1dCwgcHJlc2VydmluZyBhbnkgdW5jaGFuZ2VkIG5vbi1BU0NJSSBkYXRhIHRoYXQgd2FzCi0gIHByZXNlbnQgaW4gdGhlIGlucHV0IHVzZWQgdG8gYnVpbGQgdGhlIG1vZGVsLCBpbmNsdWRpbmcgbWVzc2FnZSBib2RpZXMKLSAgd2l0aCBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0LgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA1LjAgYW5kIHZlcnNpb24gNDoKLQotKiBBbGwgb3BlcmF0aW9ucyBhcmUgb24gdW5pY29kZSBzdHJpbmdzLiAgVGV4dCBpbnB1dHMgbXVzdCBiZSBzdHJpbmdzLAotICB0ZXh0IG91dHB1dHMgYXJlIHN0cmluZ3MuICBPdXRwdXRzIGFyZSBsaW1pdGVkIHRvIHRoZSBBU0NJSSBjaGFyYWN0ZXIKLSAgc2V0IGFuZCBzbyBjYW4gYmUgZW5jb2RlZCB0byBBU0NJSSBmb3IgdHJhbnNtaXNzaW9uLiAgSW5wdXRzIGFyZSBhbHNvCi0gIGxpbWl0ZWQgdG8gQVNDSUk7IHRoaXMgaXMgYW4gYWNrbm93bGVkZ2VkIGxpbWl0YXRpb24gb2YgZW1haWwgNS4wIGFuZAotICBtZWFucyBpdCBjYW4gb25seSBiZSB1c2VkIHRvIHBhcnNlIGVtYWlsIHRoYXQgaXMgN2JpdCBjbGVhbi4KLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gNCBhbmQgdmVyc2lvbiAzOgotCi0qIEFsbCBtb2R1bGVzIGhhdmUgYmVlbiByZW5hbWVkIGFjY29yZGluZyB0byA6cGVwOmA4YCBzdGFuZGFyZHMuICBGb3IgZXhhbXBsZSwKLSAgdGhlIHZlcnNpb24gMyBtb2R1bGUgOm1vZDpgZW1haWwuTWVzc2FnZWAgd2FzIHJlbmFtZWQgdG8gOm1vZDpgZW1haWwubWVzc2FnZWAgaW4KLSAgdmVyc2lvbiA0LgotCi0qIEEgbmV3IHN1YnBhY2thZ2UgOm1vZDpgZW1haWwubWltZWAgd2FzIGFkZGVkIGFuZCBhbGwgdGhlIHZlcnNpb24gMwotICA6bW9kOmBlbWFpbC5NSU1FXCpgIG1vZHVsZXMgd2VyZSByZW5hbWVkIGFuZCBzaXR1YXRlZCBpbnRvIHRoZSA6bW9kOmBlbWFpbC5taW1lYAotICBzdWJwYWNrYWdlLiAgRm9yIGV4YW1wbGUsIHRoZSB2ZXJzaW9uIDMgbW9kdWxlIDptb2Q6YGVtYWlsLk1JTUVUZXh0YCB3YXMgcmVuYW1lZAotICB0byA6bW9kOmBlbWFpbC5taW1lLnRleHRgLgotCi0gICpOb3RlIHRoYXQgdGhlIHZlcnNpb24gMyBuYW1lcyB3aWxsIGNvbnRpbnVlIHRvIHdvcmsgdW50aWwgUHl0aG9uIDIuNiouCi0KLSogVGhlIDptb2Q6YGVtYWlsLm1pbWUuYXBwbGljYXRpb25gIG1vZHVsZSB3YXMgYWRkZWQsIHdoaWNoIGNvbnRhaW5zIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5taW1lLmFwcGxpY2F0aW9uLk1JTUVBcHBsaWNhdGlvbmAgY2xhc3MuCi0KLSogTWV0aG9kcyB0aGF0IHdlcmUgZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDMgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGVzZSBpbmNsdWRlCi0gIDptZXRoOmBHZW5lcmF0b3IuX19jYWxsX19gLCA6bWV0aDpgTWVzc2FnZS5nZXRfdHlwZWAsCi0gIDptZXRoOmBNZXNzYWdlLmdldF9tYWluX3R5cGVgLCA6bWV0aDpgTWVzc2FnZS5nZXRfc3VidHlwZWAuCi0KLSogRml4ZXMgaGF2ZSBiZWVuIGFkZGVkIGZvciA6cmZjOmAyMjMxYCBzdXBwb3J0IHdoaWNoIGNhbiBjaGFuZ2Ugc29tZSBvZiB0aGUKLSAgcmV0dXJuIHR5cGVzIGZvciA6ZnVuYzpgTWVzc2FnZS5nZXRfcGFyYW0gPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW0+YAotICBhbmQgZnJpZW5kcy4gIFVuZGVyIHNvbWUKLSAgY2lyY3Vtc3RhbmNlcywgdmFsdWVzIHdoaWNoIHVzZWQgdG8gcmV0dXJuIGEgMy10dXBsZSBub3cgcmV0dXJuIHNpbXBsZSBzdHJpbmdzCi0gIChzcGVjaWZpY2FsbHksIGlmIGFsbCBleHRlbmRlZCBwYXJhbWV0ZXIgc2VnbWVudHMgd2VyZSB1bmVuY29kZWQsIHRoZXJlIGlzIG5vCi0gIGxhbmd1YWdlIGFuZCBjaGFyc2V0IGRlc2lnbmF0aW9uIGV4cGVjdGVkLCBzbyB0aGUgcmV0dXJuIHR5cGUgaXMgbm93IGEgc2ltcGxlCi0gIHN0cmluZykuICBBbHNvLCAlLWRlY29kaW5nIHVzZWQgdG8gYmUgZG9uZSBmb3IgYm90aCBlbmNvZGVkIGFuZCB1bmVuY29kZWQKLSAgc2VnbWVudHM7IHRoaXMgZGVjb2RpbmcgaXMgbm93IGRvbmUgb25seSBmb3IgZW5jb2RlZCBzZWdtZW50cy4KLQotSGVyZSBhcmUgdGhlIG1ham9yIGRpZmZlcmVuY2VzIGJldHdlZW4gOm1vZDpgZW1haWxgIHZlcnNpb24gMyBhbmQgdmVyc2lvbiAyOgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAgY2xhc3Mgd2FzIGludHJvZHVjZWQsIGFuZCB0aGUKLSAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3Mgd2FzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAuICBBbGwgcGFyc2luZyB0aGVyZWZvcmUgaXMKLSAgbm9uLXN0cmljdCwgYW5kIHBhcnNpbmcgd2lsbCBtYWtlIGEgYmVzdCBlZmZvcnQgbmV2ZXIgdG8gcmFpc2UgYW4gZXhjZXB0aW9uLgotICBQcm9ibGVtcyBmb3VuZCB3aGlsZSBwYXJzaW5nIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdGhlIG1lc3NhZ2UncyAqZGVmZWN0KgotICBhdHRyaWJ1dGUuCi0KLSogQWxsIGFzcGVjdHMgb2YgdGhlIEFQSSB3aGljaCByYWlzZWQgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYFwgcyBpbiB2ZXJzaW9uIDIKLSAgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGVzZSBpbmNsdWRlIHRoZSAqX2VuY29kZXIqIGFyZ3VtZW50IHRvIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5taW1lLnRleHQuTUlNRVRleHRgIGNvbnN0cnVjdG9yLCB0aGUKLSAgOm1ldGg6YE1lc3NhZ2UuYWRkX3BheWxvYWRgIG1ldGhvZCwgdGhlIDpmdW5jOmBVdGlscy5kdW1wX2FkZHJlc3NfcGFpcmAKLSAgZnVuY3Rpb24sIGFuZCB0aGUgZnVuY3Rpb25zIDpmdW5jOmBVdGlscy5kZWNvZGVgIGFuZCA6ZnVuYzpgVXRpbHMuZW5jb2RlYC4KLQotKiBOZXcgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYFwgcyBoYXZlIGJlZW4gYWRkZWQgdG86Ci0gIDptZXRoOmBHZW5lcmF0b3IuX19jYWxsX19gLCA6bWV0aDpgTWVzc2FnZS5nZXRfdHlwZWAsCi0gIDptZXRoOmBNZXNzYWdlLmdldF9tYWluX3R5cGVgLCA6bWV0aDpgTWVzc2FnZS5nZXRfc3VidHlwZWAsIGFuZCB0aGUgKnN0cmljdCoKLSAgYXJndW1lbnQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzLiAgVGhlc2UgYXJlIGV4cGVjdGVkIHRvCi0gIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgotCi0qIFN1cHBvcnQgZm9yIFB5dGhvbnMgZWFybGllciB0aGFuIDIuMyBoYXMgYmVlbiByZW1vdmVkLgotCi1IZXJlIGFyZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAyIGFuZCB2ZXJzaW9uIDE6Ci0KLSogVGhlIDptb2Q6YGVtYWlsLkhlYWRlcmAgYW5kIDptb2Q6YGVtYWlsLkNoYXJzZXRgIG1vZHVsZXMgaGF2ZSBiZWVuIGFkZGVkLgotCi0qIFRoZSBwaWNrbGUgZm9ybWF0IGZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcyBoYXMgY2hhbmdlZC4KLSAgU2luY2UgdGhpcyB3YXMgbmV2ZXIgKGFuZCBzdGlsbCBpc24ndCkgZm9ybWFsbHkgZGVmaW5lZCwgdGhpcyBpc24ndAotICBjb25zaWRlcmVkIGEgYmFja3dhcmQgaW5jb21wYXRpYmlsaXR5LiAgSG93ZXZlciBpZiB5b3VyIGFwcGxpY2F0aW9uIHBpY2tsZXMKLSAgYW5kIHVucGlja2xlcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcywgYmUgYXdhcmUgdGhhdCBpbgotICA6bW9kOmBlbWFpbGAgdmVyc2lvbiAyLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlcyBub3cgaGF2ZQotICBwcml2YXRlIHZhcmlhYmxlcyAqX2NoYXJzZXQqIGFuZCAqX2RlZmF1bHRfdHlwZSouCi0KLSogU2V2ZXJhbCBtZXRob2RzIGluIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzIGhhdmUgYmVlbgotICBkZXByZWNhdGVkLCBvciB0aGVpciBzaWduYXR1cmVzIGNoYW5nZWQuICBBbHNvLCBtYW55IG5ldyBtZXRob2RzIGhhdmUgYmVlbgotICBhZGRlZC4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MKLSAgZm9yIGRldGFpbHMuICBUaGUgY2hhbmdlcyBzaG91bGQgYmUgY29tcGxldGVseSBiYWNrd2FyZCBjb21wYXRpYmxlLgotCi0qIFRoZSBvYmplY3Qgc3RydWN0dXJlIGhhcyBjaGFuZ2VkIGluIHRoZSBmYWNlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgCi0gIGNvbnRlbnQgdHlwZXMuICBJbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAxLCBzdWNoIGEgdHlwZSB3b3VsZCBiZSByZXByZXNlbnRlZAotICBieSBhIHNjYWxhciBwYXlsb2FkLCBpLmUuIHRoZSBjb250YWluZXIgbWVzc2FnZSdzCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgcmV0dXJuZWQgZmFsc2UsCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCB3YXMgbm90IGEgbGlzdCBvYmplY3QsIGJ1dCBhCi0gIHNpbmdsZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlLgotCi0gIFRoaXMgc3RydWN0dXJlIHdhcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgcGFja2FnZSwgc28gdGhlIG9iamVjdAotICByZXByZXNlbnRhdGlvbiBmb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAgY29udGVudCB0eXBlcyB3YXMgY2hhbmdlZC4gIEluCi0gIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIsIHRoZSBjb250YWluZXIgKmRvZXMqIHJldHVybiBgYFRydWVgYCBmcm9tCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAsIGFuZAotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhIHNpbmdsZQotICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGl0ZW0uCi0KLSAgTm90ZSB0aGF0IHRoaXMgaXMgb25lIHBsYWNlIHRoYXQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBjb3VsZCBub3QgYmUKLSAgY29tcGxldGVseSBtYWludGFpbmVkLiAgSG93ZXZlciwgaWYgeW91J3JlIGFscmVhZHkgdGVzdGluZyB0aGUgcmV0dXJuIHR5cGUgb2YKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgLCB5b3Ugc2hvdWxkIGJlIGZpbmUuICBZb3UganVzdCBuZWVkCi0gIHRvIG1ha2Ugc3VyZSB5b3VyIGNvZGUgZG9lc24ndCBkbyBhIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9wYXlsb2FkYAotICB3aXRoIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBvbiBhIGNvbnRhaW5lciB3aXRoIGEgY29udGVudAotICB0eXBlIG9mIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjb25zdHJ1Y3RvcidzICpzdHJpY3QqIGFyZ3VtZW50IHdhcyBhZGRlZCwKLSAgYW5kIGl0cyA6bWV0aDpgfmVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VgIGFuZAotICA6bWV0aDpgfmVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHJgIG1ldGhvZHMgZ3JldyBhICpoZWFkZXJzb25seSogYXJndW1lbnQuCi0gIFRoZSAqc3RyaWN0KiBmbGFnIHdhcyBhbHNvIGFkZGVkIHRvIGZ1bmN0aW9ucyA6ZnVuYzpgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGVgCi0gIGFuZCA6ZnVuYzpgZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZ2AuCi0KLSogOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AgaXMgZGVwcmVjYXRlZDsgdXNlIDptZXRoOmBHZW5lcmF0b3IuZmxhdHRlbgotICA8ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5mbGF0dGVuPmAgaW5zdGVhZC4gIFRoZQotICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBjbGFzcyBoYXMgYWxzbyBncm93biB0aGUKLSAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmNsb25lYCBtZXRob2QuCi0KLSogVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBjbGFzcyBpbiB0aGUKLSAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgd2FzIGFkZGVkLgotCi0qIFRoZSBpbnRlcm1lZGlhdGUgYmFzZSBjbGFzc2VzCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIGFuZAotICA6Y2xhc3M6YH5lbWFpbC5taW1lLm11bHRpcGFydC5NSU1FTXVsdGlwYXJ0YCBoYXZlIGJlZW4gYWRkZWQsIGFuZCBpbnRlcnBvc2VkCi0gIGluIHRoZSBjbGFzcyBoaWVyYXJjaHkgZm9yIG1vc3Qgb2YgdGhlIG90aGVyIE1JTUUtcmVsYXRlZCBkZXJpdmVkIGNsYXNzZXMuCi0KLSogVGhlICpfZW5jb2RlciogYXJndW1lbnQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dGAgY29uc3RydWN0b3IKLSAgaGFzIGJlZW4gZGVwcmVjYXRlZC4gIEVuY29kaW5nICBub3cgaGFwcGVucyBpbXBsaWNpdGx5IGJhc2VkIG9uIHRoZQotICAqX2NoYXJzZXQqIGFyZ3VtZW50LgotCi0qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBlbWFpbC5VdGlsc2AgbW9kdWxlIGhhdmUgYmVlbiBkZXByZWNhdGVkOgotICA6ZnVuYzpgZHVtcF9hZGRyZXNzX3BhaXJzYCwgOmZ1bmM6YGRlY29kZWAsIGFuZCA6ZnVuYzpgZW5jb2RlYC4gIFRoZSBmb2xsb3dpbmcKLSAgZnVuY3Rpb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgbW9kdWxlOiA6ZnVuYzpgbWFrZV9tc2dpZGAsCi0gIDpmdW5jOmBkZWNvZGVfcmZjMjIzMWAsIDpmdW5jOmBlbmNvZGVfcmZjMjIzMWAsIGFuZCA6ZnVuYzpgZGVjb2RlX3BhcmFtc2AuCi0KLSogVGhlIG5vbi1wdWJsaWMgZnVuY3Rpb24gOmZ1bmM6YGVtYWlsLkl0ZXJhdG9ycy5fc3RydWN0dXJlYCB3YXMgYWRkZWQuCi0KLQotRGlmZmVyZW5jZXMgZnJvbSA6bW9kOmBtaW1lbGliYAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgOm1vZDpgZW1haWxgIHBhY2thZ2Ugd2FzIG9yaWdpbmFsbHkgcHJvdG90eXBlZCBhcyBhIHNlcGFyYXRlIGxpYnJhcnkgY2FsbGVkCi1gbWltZWxpYiA8aHR0cDovL21pbWVsaWIuc291cmNlZm9yZ2UubmV0Lz5gXy4gQ2hhbmdlcyBoYXZlIGJlZW4gbWFkZSBzbyB0aGF0IG1ldGhvZCBuYW1lcwotYXJlIG1vcmUgY29uc2lzdGVudCwgYW5kIHNvbWUgbWV0aG9kcyBvciBtb2R1bGVzIGhhdmUgZWl0aGVyIGJlZW4gYWRkZWQgb3IKLXJlbW92ZWQuICBUaGUgc2VtYW50aWNzIG9mIHNvbWUgb2YgdGhlIG1ldGhvZHMgaGF2ZSBhbHNvIGNoYW5nZWQuICBGb3IgdGhlIG1vc3QKLXBhcnQsIGFueSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiA6bW9kOmBtaW1lbGliYCBpcyBzdGlsbCBhdmFpbGFibGUgaW4gdGhlCi06bW9kOmBlbWFpbGAgcGFja2FnZSwgYWxiZWl0IG9mdGVuIGluIGEgZGlmZmVyZW50IHdheS4gIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLWJldHdlZW4gdGhlIDptb2Q6YG1pbWVsaWJgIHBhY2thZ2UgYW5kIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB3YXMgbm90IGEKLXByaW9yaXR5LgotCi1IZXJlIGlzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIDptb2Q6YG1pbWVsaWJgIGFuZAotdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlcywgYWxvbmcgd2l0aCBoaW50cyBvbiBob3cgdG8gcG9ydCB5b3VyIGFwcGxpY2F0aW9ucy4KLQotT2YgY291cnNlLCB0aGUgbW9zdCB2aXNpYmxlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIHBhY2thZ2VzIGlzIHRoYXQgdGhlCi1wYWNrYWdlIG5hbWUgaGFzIGJlZW4gY2hhbmdlZCB0byA6bW9kOmBlbWFpbGAuICBJbiBhZGRpdGlvbiwgdGhlIHRvcC1sZXZlbAotcGFja2FnZSBoYXMgdGhlIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKLQotKiA6ZnVuYzpgbWVzc2FnZUZyb21TdHJpbmdgIGhhcyBiZWVuIHJlbmFtZWQgdG8gOmZ1bmM6YG1lc3NhZ2VfZnJvbV9zdHJpbmdgLgotCi0qIDpmdW5jOmBtZXNzYWdlRnJvbUZpbGVgIGhhcyBiZWVuIHJlbmFtZWQgdG8gOmZ1bmM6YG1lc3NhZ2VfZnJvbV9maWxlYC4KLQotVGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgZGlmZmVyZW5jZXM6Ci0KLSogVGhlIG1ldGhvZCA6bWV0aDpgYXNTdHJpbmdgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgaXNtdWx0aXBhcnRgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuCi0KLSogVGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2QgaGFzIGdyb3duIGEgKmRlY29kZSoKLSAgb3B0aW9uYWwgYXJndW1lbnQuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0YWxsYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfYWxsYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBhZGRoZWFkZXJgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFkZF9oZWFkZXJgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfdHlwZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0bWFpbnR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfbWFpbl90eXBlYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRzdWJ0eXBlYCB3YXMgcmVuYW1lZCB0byA6bWV0aDpgZ2V0X3N1YnR5cGVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHBhcmFtc2Agd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtc2AuIEFsc28sIHdoZXJlYXMgOm1ldGg6YGdldHBhcmFtc2AKLSAgcmV0dXJuZWQgYSBsaXN0IG9mIHN0cmluZ3MsIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbXNgIHJldHVybnMKLSAgYSBsaXN0IG9mIDItdHVwbGVzLCBlZmZlY3RpdmVseSB0aGUga2V5L3ZhbHVlIHBhaXJzIG9mIHRoZSBwYXJhbWV0ZXJzLCBzcGxpdAotICBvbiB0aGUgYGAnPSdgYCBzaWduLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHBhcmFtYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW1gLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGNoYXJzZXRzYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfY2hhcnNldHNgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGZpbGVuYW1lYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfZmlsZW5hbWVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGJvdW5kYXJ5YCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfYm91bmRhcnlgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YHNldGJvdW5kYXJ5YCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfYm91bmRhcnlgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGRlY29kZWRwYXlsb2FkYCB3YXMgcmVtb3ZlZC4gIFRvIGdldCBzaW1pbGFyCi0gIGZ1bmN0aW9uYWxpdHksIHBhc3MgdGhlIHZhbHVlIDEgdG8gdGhlICpkZWNvZGUqIGZsYWcgb2YgdGhlCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2QuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGF5bG9hZGFzdGV4dGAgd2FzIHJlbW92ZWQuICBTaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMKLSAgc3VwcG9ydGVkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgY2xhc3MgaW4gdGhlCi0gIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldGJvZHlhc3RleHRgIHdhcyByZW1vdmVkLiAgWW91IGNhbiBnZXQgc2ltaWxhcgotICBmdW5jdGlvbmFsaXR5IGJ5IGNyZWF0aW5nIGFuIGl0ZXJhdG9yIHdpdGgKLSAgOmZ1bmM6YH5lbWFpbC5pdGVyYXRvcnMudHlwZWRfc3VicGFydF9pdGVyYXRvcmAgaW4gdGhlIDptb2Q6YGVtYWlsLml0ZXJhdG9yc2AKLSAgbW9kdWxlLgotCi1UaGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgaGFzIG5vIGRpZmZlcmVuY2VzIGluIGl0cyBwdWJsaWMKLWludGVyZmFjZS4gSXQgZG9lcyBoYXZlIHNvbWUgYWRkaXRpb25hbCBzbWFydHMgdG8gcmVjb2duaXplCi06bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCB0eXBlIG1lc3NhZ2VzLCB3aGljaCBpdCByZXByZXNlbnRzIGFzIGEKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2UgY29udGFpbmluZyBzZXBhcmF0ZQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBzdWJwYXJ0cyBmb3IgZWFjaCBoZWFkZXIgYmxvY2sgaW4gdGhlIGRlbGl2ZXJ5Ci1zdGF0dXMgbm90aWZpY2F0aW9uIFsjXV8uCi0KLVRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBjbGFzcyBoYXMgbm8gZGlmZmVyZW5jZXMgaW4gaXRzIHB1YmxpYwotaW50ZXJmYWNlLiAgVGhlcmUgaXMgYSBuZXcgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlIHRob3VnaCwKLWNhbGxlZCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvcmAgd2hpY2ggcHJvdmlkZXMgbW9zdCBvZiB0aGUKLWZ1bmN0aW9uYWxpdHkgcHJldmlvdXNseSBhdmFpbGFibGUgaW4gdGhlIDptZXRoOmBNZXNzYWdlLmdldHBheWxvYWRhc3RleHRgCi1tZXRob2QuCi0KLVRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhbmQgY2xhc3NlcyBoYXZlIGJlZW4gY2hhbmdlZDoKLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwubWltZS5iYXNlLk1JTUVCYXNlYCBjbGFzcyBjb25zdHJ1Y3RvciBhcmd1bWVudHMgKl9tYWpvcioKLSAgYW5kICpfbWlub3IqIGhhdmUgY2hhbmdlZCB0byAqX21haW50eXBlKiBhbmQgKl9zdWJ0eXBlKiByZXNwZWN0aXZlbHkuCi0KLSogVGhlIGBgSW1hZ2VgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVJbWFnZWBgLiAgVGhlICpfbWlub3IqCi0gIGFyZ3VtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gKl9zdWJ0eXBlKi4KLQotKiBUaGUgYGBUZXh0YGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBNSU1FVGV4dGBgLiAgVGhlICpfbWlub3IqCi0gIGFyZ3VtZW50IGhhcyBiZWVuIHJlbmFtZWQgdG8gKl9zdWJ0eXBlKi4KLQotKiBUaGUgYGBNZXNzYWdlUkZDODIyYGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGBNSU1FTWVzc2FnZWBgLiAgTm90ZQotICB0aGF0IGFuIGVhcmxpZXIgdmVyc2lvbiBvZiA6bW9kOmBtaW1lbGliYCBjYWxsZWQgdGhpcyBjbGFzcy9tb2R1bGUgYGBSRkM4MjJgYCwKLSAgYnV0IHRoYXQgY2xhc2hlZCB3aXRoIHRoZSBQeXRob24gc3RhbmRhcmQgbGlicmFyeSBtb2R1bGUgOm1vZDpgcmZjODIyYCBvbiBzb21lCi0gIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgotCi0gIEFsc28sIHRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLm1lc3NhZ2UuTUlNRU1lc3NhZ2VgIGNsYXNzIG5vdyByZXByZXNlbnRzIGFueQotICBraW5kIG9mIE1JTUUgbWVzc2FnZQotICB3aXRoIG1haW4gdHlwZSA6bWltZXR5cGU6YG1lc3NhZ2VgLiAgSXQgdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgKl9zdWJ0eXBlKgotICB3aGljaCBpcyB1c2VkIHRvIHNldCB0aGUgTUlNRSBzdWJ0eXBlLiAgKl9zdWJ0eXBlKiBkZWZhdWx0cyB0bwotICA6bWltZXR5cGU6YHJmYzgyMmAuCi0KLTptb2Q6YG1pbWVsaWJgIHByb3ZpZGVkIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgaW4gaXRzIDptb2Q6YGFkZHJlc3NgIGFuZAotOm1vZDpgZGF0ZWAgbW9kdWxlcy4gIEFsbCBvZiB0aGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1vdmVkIHRvIHRoZQotOm1vZDpgZW1haWwudXRpbHNgIG1vZHVsZS4KLQotVGhlIGBgTXNnUmVhZGVyYGAgY2xhc3MvbW9kdWxlIGhhcyBiZWVuIHJlbW92ZWQuICBJdHMgZnVuY3Rpb25hbGl0eSBpcyBtb3N0Ci1jbG9zZWx5IHN1cHBvcnRlZCBpbiB0aGUgOmZ1bmM6YH5lbWFpbC5pdGVyYXRvcnMuYm9keV9saW5lX2l0ZXJhdG9yYCBmdW5jdGlvbgotaW4gdGhlIDptb2Q6YGVtYWlsLml0ZXJhdG9yc2AgbW9kdWxlLgotCi0uLiBydWJyaWM6OiBGb290bm90ZXMKLQotLi4gWyNdIERlbGl2ZXJ5IFN0YXR1cyBOb3RpZmljYXRpb25zIChEU04pIGFyZSBkZWZpbmVkIGluIDpyZmM6YDE4OTRgLgorICAgTW9kdWxlIDptb2Q6YHNtdHBkYAorICAgICAgU01UUCBzZXJ2ZXIgZnJhbWV3b3JrIChwcmltYXJpbHkgdXNlZnVsIGZvciB0ZXN0aW5nKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAppbmRleCA1Y2ZmNzQ2Li42M2ZhZTJhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdApAQCAtOCw3ICs4LDQzIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoZXJlIGFyZSBzZXZlcmFsIHVzZWZ1bCB1dGlsaXRpZXMgcHJvdmlkZWQgaW4gdGhlIDptb2Q6YGVtYWlsLnV0aWxzYCBtb2R1bGU6CitUaGVyZSBhcmUgYSBjb3VwbGUgb2YgdXNlZnVsIHV0aWxpdGllcyBwcm92aWRlZCBpbiB0aGUgOm1vZDpgZW1haWwudXRpbHNgCittb2R1bGU6CisKKy4uIGZ1bmN0aW9uOjogbG9jYWx0aW1lKGR0PU5vbmUpCisKKyAgICBSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuICBJZiBjYWxsZWQgd2l0aG91dAorICAgIGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqIGFyZ3VtZW50IHNob3VsZCBiZSBhCisgICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZSBsb2NhbCB0aW1lCisgICAgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzIG5haXZlICh0aGF0CisgICAgaXMsIGBgZHQudHppbmZvYGAgaXMgYGBOb25lYGApLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuICBJbiB0aGlzCisgICAgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBgYGxvY2FsdGltZWBgIHRvIHByZXN1bWUKKyAgICBpbml0aWFsbHkgdGhhdCBzdW1tZXIgdGltZSAoZm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZyBUaW1lKSBpcyBvciBpcyBub3QKKyAgICAocmVzcGVjdGl2ZWx5KSBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gIEEgbmVnYXRpdmUgdmFsdWUgZm9yCisgICAgKmlzZHN0KiBjYXVzZXMgdGhlIGBgbG9jYWx0aW1lYGAgdG8gYXR0ZW1wdCB0byBkaXZpbmUgd2hldGhlciBzdW1tZXIgdGltZQorICAgIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKQorCisgICBSZXR1cm5zIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhbiA6cmZjOmAyODIyYFwgLWNvbXBsaWFudAorICAgOm1haWxoZWFkZXI6YE1lc3NhZ2UtSURgIGhlYWRlci4gIE9wdGlvbmFsICppZHN0cmluZyogaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nCisgICB1c2VkIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgaWQuICBPcHRpb25hbCAqZG9tYWluKiBpZgorICAgZ2l2ZW4gcHJvdmlkZXMgdGhlIHBvcnRpb24gb2YgdGhlIG1zZ2lkIGFmdGVyIHRoZSAnQCcuICBUaGUgZGVmYXVsdCBpcyB0aGUKKyAgIGxvY2FsIGhvc3RuYW1lLiAgSXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBvdmVycmlkZSB0aGlzIGRlZmF1bHQsIGJ1dAorICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CisgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCB0aGUgKmRvbWFpbioga2V5d29yZC4KKworCitUaGUgcmVtYWluaW5nIGZ1bmN0aW9ucyBhcmUgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIFRoZXJlCitpcyBubyBuZWVkIHRvIGRpcmVjdGx5IHVzZSB0aGVzZSB3aXRoIHRoZSBuZXcgQVBJLCBzaW5jZSB0aGUgcGFyc2luZyBhbmQKK2Zvcm1hdHRpbmcgdGhleSBwcm92aWRlIGlzIGRvbmUgYXV0b21hdGljYWxseSBieSB0aGUgaGVhZGVyIHBhcnNpbmcgbWFjaGluZXJ5CitvZiB0aGUgbmV3IEFQSS4KIAogCiAuLiBmdW5jdGlvbjo6IHF1b3RlKHN0cikKQEAgLTE0MSwzNiArMTc3LDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGZ1bmN0aW9uOjogbG9jYWx0aW1lKGR0PU5vbmUpCi0KLSAgICBSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuICBJZiBjYWxsZWQgd2l0aG91dAotICAgIGFyZ3VtZW50cywgcmV0dXJuIGN1cnJlbnQgdGltZS4gIE90aGVyd2lzZSAqZHQqIGFyZ3VtZW50IHNob3VsZCBiZSBhCi0gICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZSBsb2NhbCB0aW1lCi0gICAgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzIG5haXZlICh0aGF0Ci0gICAgaXMsIGBgZHQudHppbmZvYGAgaXMgYGBOb25lYGApLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGluIGxvY2FsIHRpbWUuICBJbiB0aGlzCi0gICAgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBgYGxvY2FsdGltZWBgIHRvIHByZXN1bWUKLSAgICBpbml0aWFsbHkgdGhhdCBzdW1tZXIgdGltZSAoZm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZyBUaW1lKSBpcyBvciBpcyBub3QKLSAgICAocmVzcGVjdGl2ZWx5KSBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4gIEEgbmVnYXRpdmUgdmFsdWUgZm9yCi0gICAgKmlzZHN0KiBjYXVzZXMgdGhlIGBgbG9jYWx0aW1lYGAgdG8gYXR0ZW1wdCB0byBkaXZpbmUgd2hldGhlciBzdW1tZXIgdGltZQotICAgIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgotCi0gICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0KLQotLi4gZnVuY3Rpb246OiBtYWtlX21zZ2lkKGlkc3RyaW5nPU5vbmUsIGRvbWFpbj1Ob25lKQotCi0gICBSZXR1cm5zIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhbiA6cmZjOmAyODIyYFwgLWNvbXBsaWFudAotICAgOm1haWxoZWFkZXI6YE1lc3NhZ2UtSURgIGhlYWRlci4gIE9wdGlvbmFsICppZHN0cmluZyogaWYgZ2l2ZW4sIGlzIGEgc3RyaW5nCi0gICB1c2VkIHRvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgaWQuICBPcHRpb25hbCAqZG9tYWluKiBpZgotICAgZ2l2ZW4gcHJvdmlkZXMgdGhlIHBvcnRpb24gb2YgdGhlIG1zZ2lkIGFmdGVyIHRoZSAnQCcuICBUaGUgZGVmYXVsdCBpcyB0aGUKLSAgIGxvY2FsIGhvc3RuYW1lLiAgSXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBvdmVycmlkZSB0aGlzIGRlZmF1bHQsIGJ1dAotICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0Ci0gICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBBZGRlZCB0aGUgKmRvbWFpbioga2V5d29yZC4KLQotCiAuLiBmdW5jdGlvbjo6IGRlY29kZV9yZmMyMjMxKHMpCiAKICAgIERlY29kZSB0aGUgc3RyaW5nICpzKiBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbnVtLnJzdCBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CmluZGV4IGEzZDVhZmMuLjg3YWE4YjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VudW0ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VudW0ucnN0CkBAIC0yMyw5ICsyMywxMCBAQAogTW9kdWxlIENvbnRlbnRzCiAtLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgZGVmaW5lcyB0d28gZW51bWVyYXRpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUKLXNldHMgb2YgbmFtZXMgYW5kIHZhbHVlczogOmNsYXNzOmBFbnVtYCBhbmQgOmNsYXNzOmBJbnRFbnVtYC4gIEl0IGFsc28gZGVmaW5lcwotb25lIGRlY29yYXRvciwgOmZ1bmM6YHVuaXF1ZWAuCitUaGlzIG1vZHVsZSBkZWZpbmVzIGZvdXIgZW51bWVyYXRpb24gY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB1bmlxdWUKK3NldHMgb2YgbmFtZXMgYW5kIHZhbHVlczogOmNsYXNzOmBFbnVtYCwgOmNsYXNzOmBJbnRFbnVtYCwgYW5kCis6Y2xhc3M6YEludEZsYWdzYC4gIEl0IGFsc28gZGVmaW5lcyBvbmUgZGVjb3JhdG9yLCA6ZnVuYzpgdW5pcXVlYCwgYW5kIG9uZQoraGVscGVyLCA6Y2xhc3M6YGF1dG9gLgogCiAuLiBjbGFzczo6IEVudW0KIApAQCAtMzcsMTAgKzM4LDI3IEBACiAgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBhcmUgYWxzbwogICAgIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBpbnRgLgogCisuLiBjbGFzczo6IEludEZsYWcKKworICAgIEJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGVudW1lcmF0ZWQgY29uc3RhbnRzIHRoYXQgY2FuIGJlIGNvbWJpbmVkIHVzaW5nCisgICAgdGhlIGJpdHdpc2Ugb3BlcmF0b3JzIHdpdGhvdXQgbG9zaW5nIHRoZWlyIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVyc2hpcC4KKyAgICA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgYXJlIGFsc28gc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAuCisKKy4uIGNsYXNzOjogRmxhZworCisgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBjYW4gYmUgY29tYmluZWQgdXNpbmcKKyAgICB0aGUgYml0d2lzZSBvcGVyYXRpb25zIHdpdGhvdXQgbG9zaW5nIHRoZWlyIDpjbGFzczpgRmxhZ2AgbWVtYmVyc2hpcC4KKwogLi4gZnVuY3Rpb246OiB1bmlxdWUKIAogICAgIEVudW0gY2xhc3MgZGVjb3JhdG9yIHRoYXQgZW5zdXJlcyBvbmx5IG9uZSBuYW1lIGlzIGJvdW5kIHRvIGFueSBvbmUgdmFsdWUuCiAKKy4uIGNsYXNzOjogYXV0bworCisgICAgSW5zdGFuY2VzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGZvciBFbnVtIG1lbWJlcnMuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNiAgYGBGbGFnYGAsIGBgSW50RmxhZ2BgLCBgYGF1dG9gYAorCiAKIENyZWF0aW5nIGFuIEVudW0KIC0tLS0tLS0tLS0tLS0tLS0KQEAgLTU3LDYgKzc1LDEzIEBACiAgICAgLi4uICAgICBibHVlID0gMwogICAgIC4uLgogCisuLiBub3RlOjogRW51bSBtZW1iZXIgdmFsdWVzCisKKyAgICBNZW1iZXIgdmFsdWVzIGNhbiBiZSBhbnl0aGluZzogOmNsYXNzOmBpbnRgLCA6Y2xhc3M6YHN0cmAsIGV0Yy4uICBJZgorICAgIHRoZSBleGFjdCB2YWx1ZSBpcyB1bmltcG9ydGFudCB5b3UgbWF5IHVzZSA6Y2xhc3M6YGF1dG9gIGluc3RhbmNlcyBhbmQgYW4KKyAgICBhcHByb3ByaWF0ZSB2YWx1ZSB3aWxsIGJlIGNob3NlbiBmb3IgeW91LiAgQ2FyZSBtdXN0IGJlIHRha2VuIGlmIHlvdSBtaXgKKyAgICA6Y2xhc3M6YGF1dG9gIHdpdGggb3RoZXIgdmFsdWVzLgorCiAuLiBub3RlOjogTm9tZW5jbGF0dXJlCiAKICAgLSBUaGUgY2xhc3MgOmNsYXNzOmBDb2xvcmAgaXMgYW4gKmVudW1lcmF0aW9uKiAob3IgKmVudW0qKQpAQCAtMjEyLDYgKzIzNyw0MiBAQAogICAgIFZhbHVlRXJyb3I6IGR1cGxpY2F0ZSB2YWx1ZXMgZm91bmQgaW4gPGVudW0gJ01pc3Rha2UnPjogZm91ciAtPiB0aHJlZQogCiAKK1VzaW5nIGF1dG9tYXRpYyB2YWx1ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIGV4YWN0IHZhbHVlIGlzIHVuaW1wb3J0YW50IHlvdSBjYW4gdXNlIDpjbGFzczpgYXV0b2A6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRW51bSwgYXV0bworICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChDb2xvcikKKyAgICBbPENvbG9yLnJlZDogMT4sIDxDb2xvci5ibHVlOiAyPiwgPENvbG9yLmdyZWVuOiAzPl0KKworVGhlIHZhbHVlcyBhcmUgY2hvc2VuIGJ5IDpmdW5jOmBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gLCB3aGljaCBjYW4gYmUKK292ZXJyaWRkZW46OgorCisgICAgPj4+IGNsYXNzIEF1dG9OYW1lKEVudW0pOgorICAgIC4uLiAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gbmFtZQorICAgIC4uLgorICAgID4+PiBjbGFzcyBPcmRpbmFsKEF1dG9OYW1lKToKKyAgICAuLi4gICAgIG5vcnRoID0gYXV0bygpCisgICAgLi4uICAgICBzb3V0aCA9IGF1dG8oKQorICAgIC4uLiAgICAgZWFzdCA9IGF1dG8oKQorICAgIC4uLiAgICAgd2VzdCA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KE9yZGluYWwpCisgICAgWzxPcmRpbmFsLm5vcnRoOiAnbm9ydGgnPiwgPE9yZGluYWwuc291dGg6ICdzb3V0aCc+LCA8T3JkaW5hbC5lYXN0OiAnZWFzdCc+LCA8T3JkaW5hbC53ZXN0OiAnd2VzdCc+XQorCisuLiBub3RlOjoKKworICAgIFRoZSBnb2FsIG9mIHRoZSBkZWZhdWx0IDptZXRoOmBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gIG1ldGhvZHMgaXMgdG8gcHJvdmlkZQorICAgIHRoZSBuZXh0IDpjbGFzczpgaW50YCBpbiBzZXF1ZW5jZSB3aXRoIHRoZSBsYXN0IDpjbGFzczpgaW50YCBwcm92aWRlZCwgYnV0CisgICAgdGhlIHdheSBpdCBkb2VzIHRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGFuZCBtYXkgY2hhbmdlLgorCiBJdGVyYXRpb24KIC0tLS0tLS0tLQogCkBAIC0yNTcsNyArMzE4LDcgQEAKICAgICA+Pj4gQ29sb3IucmVkIDwgQ29sb3IuYmx1ZQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICAgVHlwZUVycm9yOiB1bm9yZGVyYWJsZSB0eXBlczogQ29sb3IoKSA8IENvbG9yKCkKKyAgICBUeXBlRXJyb3I6ICc8JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdDb2xvcicgYW5kICdDb2xvcicKIAogRXF1YWxpdHkgY29tcGFyaXNvbnMgYXJlIGRlZmluZWQgdGhvdWdoOjoKIApAQCAtNDc4LDcgKzUzOSw3IEBACiBJbnRFbnVtCiBeXl5eXl5eCiAKLUEgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgaXMgcHJvdmlkZWQgd2hpY2ggaXMgYWxzbyBhIHN1YmNsYXNzIG9mCitUaGUgZmlyc3QgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgdGhhdCBpcyBwcm92aWRlZCBpcyBhbHNvIGEgc3ViY2xhc3Mgb2YKIDpjbGFzczpgaW50YC4gIE1lbWJlcnMgb2YgYW4gOmNsYXNzOmBJbnRFbnVtYCBjYW4gYmUgY29tcGFyZWQgdG8gaW50ZWdlcnM7CiBieSBleHRlbnNpb24sIGludGVnZXIgZW51bWVyYXRpb25zIG9mIGRpZmZlcmVudCB0eXBlcyBjYW4gYWxzbyBiZSBjb21wYXJlZAogdG8gZWFjaCBvdGhlcjo6CkBAIC01MjEsMTMgKzU4MiwxMjQgQEAKICAgICA+Pj4gW2kgZm9yIGkgaW4gcmFuZ2UoU2hhcGUuc3F1YXJlKV0KICAgICBbMCwgMV0KIAotRm9yIHRoZSB2YXN0IG1ham9yaXR5IG9mIGNvZGUsIDpjbGFzczpgRW51bWAgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQsCi1zaW5jZSA6Y2xhc3M6YEludEVudW1gIGJyZWFrcyBzb21lIHNlbWFudGljIHByb21pc2VzIG9mIGFuIGVudW1lcmF0aW9uIChieQotYmVpbmcgY29tcGFyYWJsZSB0byBpbnRlZ2VycywgYW5kIHRodXMgYnkgdHJhbnNpdGl2aXR5IHRvIG90aGVyCi11bnJlbGF0ZWQgZW51bWVyYXRpb25zKS4gIEl0IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gc3BlY2lhbCBjYXNlcyB3aGVyZQotdGhlcmUncyBubyBvdGhlciBjaG9pY2U7IGZvciBleGFtcGxlLCB3aGVuIGludGVnZXIgY29uc3RhbnRzIGFyZQotcmVwbGFjZWQgd2l0aCBlbnVtZXJhdGlvbnMgYW5kIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGlzIHJlcXVpcmVkIHdpdGggY29kZQotdGhhdCBzdGlsbCBleHBlY3RzIGludGVnZXJzLgorCitJbnRGbGFnCiteXl5eXl5eCisKK1RoZSBuZXh0IHZhcmlhdGlvbiBvZiA6Y2xhc3M6YEVudW1gIHByb3ZpZGVkLCA6Y2xhc3M6YEludEZsYWdgLCBpcyBhbHNvIGJhc2VkCitvbiA6Y2xhc3M6YGludGAuICBUaGUgZGlmZmVyZW5jZSBiZWluZyA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgY2FuIGJlIGNvbWJpbmVkCit1c2luZyB0aGUgYml0d2lzZSBvcGVyYXRvcnMgKCYsIFx8LCBeLCB+KSBhbmQgdGhlIHJlc3VsdCBpcyBzdGlsbCBhbgorOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXIuICBIb3dldmVyLCBhcyB0aGUgbmFtZSBpbXBsaWVzLCA6Y2xhc3M6YEludEZsYWdgCittZW1iZXJzIGFsc28gc3ViY2xhc3MgOmNsYXNzOmBpbnRgIGFuZCBjYW4gYmUgdXNlZCB3aGVyZXZlciBhbiA6Y2xhc3M6YGludGAgaXMKK3VzZWQuICBBbnkgb3BlcmF0aW9uIG9uIGFuIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVyIGJlc2lkZXMgdGhlIGJpdC13aXNlCitvcGVyYXRpb25zIHdpbGwgbG9zZSB0aGUgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzaGlwLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworU2FtcGxlIDpjbGFzczpgSW50RmxhZ2AgY2xhc3M6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgSW50RmxhZworICAgID4+PiBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgIC4uLiAgICAgUiA9IDQKKyAgICAuLi4gICAgIFcgPSAyCisgICAgLi4uICAgICBYID0gMQorICAgIC4uLgorICAgID4+PiBQZXJtLlIgfCBQZXJtLlcKKyAgICA8UGVybS5SfFc6IDY+CisgICAgPj4+IFBlcm0uUiArIFBlcm0uVworICAgIDYKKyAgICA+Pj4gUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICA+Pj4gUGVybS5SIGluIFJXCisgICAgVHJ1ZQorCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIG5hbWUgdGhlIGNvbWJpbmF0aW9uczo6CisKKyAgICA+Pj4gY2xhc3MgUGVybShJbnRGbGFnKToKKyAgICAuLi4gICAgIFIgPSA0CisgICAgLi4uICAgICBXID0gMgorICAgIC4uLiAgICAgWCA9IDEKKyAgICAuLi4gICAgIFJXWCA9IDcKKyAgICA+Pj4gUGVybS5SV1gKKyAgICA8UGVybS5SV1g6IDc+CisgICAgPj4+IH5QZXJtLlJXWAorICAgIDxQZXJtLi04OiAtOD4KKworQW5vdGhlciBpbXBvcnRhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIDpjbGFzczpgSW50RmxhZ2AgYW5kIDpjbGFzczpgRW51bWAgaXMgdGhhdAoraWYgbm8gZmxhZ3MgYXJlIHNldCAodGhlIHZhbHVlIGlzIDApLCBpdHMgYm9vbGVhbiBldmFsdWF0aW9uIGlzIDpkYXRhOmBGYWxzZWA6OgorCisgICAgPj4+IFBlcm0uUiAmIFBlcm0uWAorICAgIDxQZXJtLjA6IDA+CisgICAgPj4+IGJvb2woUGVybS5SICYgUGVybS5YKQorICAgIEZhbHNlCisKK0JlY2F1c2UgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzIGFyZSBhbHNvIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBpbnRgIHRoZXkgY2FuCitiZSBjb21iaW5lZCB3aXRoIHRoZW06OgorCisgICAgPj4+IFBlcm0uWCB8IDgKKyAgICA8UGVybS44fFg6IDk+CisKKworRmxhZworXl5eXgorCitUaGUgbGFzdCB2YXJpYXRpb24gaXMgOmNsYXNzOmBGbGFnYC4gIExpa2UgOmNsYXNzOmBJbnRGbGFnYCwgOmNsYXNzOmBGbGFnYAorbWVtYmVycyBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2Ugb3BlcmF0b3JzICgmLCBcfCwgXiwgfikuICBVbmxpa2UKKzpjbGFzczpgSW50RmxhZ2AsIHRoZXkgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGgsIG5vciBjb21wYXJlZCBhZ2FpbnN0LCBhbnkKK290aGVyIDpjbGFzczpgRmxhZ2AgZW51bWVyYXRpb24sIG5vciA6Y2xhc3M6YGludGAuICBXaGlsZSBpdCBpcyBwb3NzaWJsZSB0bworc3BlY2lmeSB0aGUgdmFsdWVzIGRpcmVjdGx5IGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSA6Y2xhc3M6YGF1dG9gIGFzIHRoZQordmFsdWUgYW5kIGxldCA6Y2xhc3M6YEZsYWdgIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSB2YWx1ZS4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0xpa2UgOmNsYXNzOmBJbnRGbGFnYCwgaWYgYSBjb21iaW5hdGlvbiBvZiA6Y2xhc3M6YEZsYWdgIG1lbWJlcnMgcmVzdWx0cyBpbiBubworZmxhZ3MgYmVpbmcgc2V0LCB0aGUgYm9vbGVhbiBldmFsdWF0aW9uIGlzIDpkYXRhOmBGYWxzZWA6OgorCisgICAgPj4+IGZyb20gZW51bSBpbXBvcnQgRmxhZworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IucmVkICYgQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuMDogMD4KKyAgICA+Pj4gYm9vbChDb2xvci5yZWQgJiBDb2xvci5ncmVlbikKKyAgICBGYWxzZQorCitJbmRpdmlkdWFsIGZsYWdzIHNob3VsZCBoYXZlIHZhbHVlcyB0aGF0IGFyZSBwb3dlcnMgb2YgdHdvICgxLCAyLCA0LCA4LCAuLi4pLAord2hpbGUgY29tYmluYXRpb25zIG9mIGZsYWdzIHdvbid0OjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4gICAgIHdoaXRlID0gcmVkIHwgYmx1ZSB8IGdyZWVuCisgICAgLi4uCisgICAgPj4+IENvbG9yLndoaXRlCisgICAgPENvbG9yLndoaXRlOiA3PgorCitHaXZpbmcgYSBuYW1lIHRvIHRoZSAibm8gZmxhZ3Mgc2V0IiBjb25kaXRpb24gZG9lcyBub3QgY2hhbmdlIGl0cyBib29sZWFuCit2YWx1ZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgLi4uICAgICBibGFjayA9IDAKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuYmxhY2sKKyAgICA8Q29sb3IuYmxhY2s6IDA+CisgICAgPj4+IGJvb2woQ29sb3IuYmxhY2spCisgICAgRmFsc2UKKworLi4gbm90ZTo6CisKKyAgICBGb3IgdGhlIG1ham9yaXR5IG9mIG5ldyBjb2RlLCA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEZsYWdgIGFyZSBzdHJvbmdseQorICAgIHJlY29tbWVuZGVkLCBzaW5jZSA6Y2xhc3M6YEludEVudW1gIGFuZCA6Y2xhc3M6YEludEZsYWdgIGJyZWFrIHNvbWUKKyAgICBzZW1hbnRpYyBwcm9taXNlcyBvZiBhbiBlbnVtZXJhdGlvbiAoYnkgYmVpbmcgY29tcGFyYWJsZSB0byBpbnRlZ2VycywgYW5kCisgICAgdGh1cyBieSB0cmFuc2l0aXZpdHkgdG8gb3RoZXIgdW5yZWxhdGVkIGVudW1lcmF0aW9ucykuICA6Y2xhc3M6YEludEVudW1gCisgICAgYW5kIDpjbGFzczpgSW50RmxhZ2Agc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjYXNlcyB3aGVyZSA6Y2xhc3M6YEVudW1gIGFuZAorICAgIDpjbGFzczpgRmxhZ2Agd2lsbCBub3QgZG87IGZvciBleGFtcGxlLCB3aGVuIGludGVnZXIgY29uc3RhbnRzIGFyZSByZXBsYWNlZAorICAgIHdpdGggZW51bWVyYXRpb25zLCBvciBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG90aGVyIHN5c3RlbXMuCiAKIAogT3RoZXJzCkBAIC01NTgsNyArNzMwLDggQEAKIDQuICUtc3R5bGUgZm9ybWF0dGluZzogIGAlc2AgYW5kIGAlcmAgY2FsbCB0aGUgOmNsYXNzOmBFbnVtYCBjbGFzcydzCiAgICA6bWV0aDpgX19zdHJfX2AgYW5kIDptZXRoOmBfX3JlcHJfX2AgcmVzcGVjdGl2ZWx5OyBvdGhlciBjb2RlcyAoc3VjaCBhcwogICAgYCVpYCBvciBgJWhgIGZvciBJbnRFbnVtKSB0cmVhdCB0aGUgZW51bSBtZW1iZXIgYXMgaXRzIG1peGVkLWluIHR5cGUuCi01LiA6bWV0aDpgc3RyLmZvcm1hdGAgKG9yIDpmdW5jOmBmb3JtYXRgKSB3aWxsIHVzZSB0aGUgbWl4ZWQtaW4KKzUuIDpyZWY6YEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gLCA6bWV0aDpgc3RyLmZvcm1hdGAsCisgICBhbmQgOmZ1bmM6YGZvcm1hdGAgd2lsbCB1c2UgdGhlIG1peGVkLWluCiAgICB0eXBlJ3MgOm1ldGg6YF9fZm9ybWF0X19gLiAgSWYgdGhlIDpjbGFzczpgRW51bWAgY2xhc3MncyA6ZnVuYzpgc3RyYCBvcgogICAgOmZ1bmM6YHJlcHJgIGlzIGRlc2lyZWQsIHVzZSB0aGUgYCFzYCBvciBgIXJgIGZvcm1hdCBjb2Rlcy4KIApAQCAtNTY2LDE4ICs3MzksODcgQEAKIEludGVyZXN0aW5nIGV4YW1wbGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGlsZSA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEludEVudW1gIGFyZSBleHBlY3RlZCB0byBjb3ZlciB0aGUgbWFqb3JpdHkgb2YKLXVzZS1jYXNlcywgdGhleSBjYW5ub3QgY292ZXIgdGhlbSBhbGwuICBIZXJlIGFyZSByZWNpcGVzIGZvciBzb21lIGRpZmZlcmVudAotdHlwZXMgb2YgZW51bWVyYXRpb25zIHRoYXQgY2FuIGJlIHVzZWQgZGlyZWN0bHksIG9yIGFzIGV4YW1wbGVzIGZvciBjcmVhdGluZwotb25lJ3Mgb3duLgorV2hpbGUgOmNsYXNzOmBFbnVtYCwgOmNsYXNzOmBJbnRFbnVtYCwgOmNsYXNzOmBJbnRGbGFnYCwgYW5kIDpjbGFzczpgRmxhZ2AgYXJlCitleHBlY3RlZCB0byBjb3ZlciB0aGUgbWFqb3JpdHkgb2YgdXNlLWNhc2VzLCB0aGV5IGNhbm5vdCBjb3ZlciB0aGVtIGFsbC4gIEhlcmUKK2FyZSByZWNpcGVzIGZvciBzb21lIGRpZmZlcmVudCB0eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBkaXJlY3RseSwKK29yIGFzIGV4YW1wbGVzIGZvciBjcmVhdGluZyBvbmUncyBvd24uCiAKIAotQXV0b051bWJlcgotXl5eXl5eXl5eXgorT21pdHRpbmcgdmFsdWVzCiteXl5eXl5eXl5eXl5eXl4KIAotQXZvaWRzIGhhdmluZyB0byBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgZWFjaCBlbnVtZXJhdGlvbiBtZW1iZXI6OgorSW4gbWFueSB1c2UtY2FzZXMgb25lIGRvZXNuJ3QgY2FyZSB3aGF0IHRoZSBhY3R1YWwgdmFsdWUgb2YgYW4gZW51bWVyYXRpb24KK2lzLiBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRlZmluZSB0aGlzIHR5cGUgb2Ygc2ltcGxlIGVudW1lcmF0aW9uOgogCi0gICAgPj4+IGNsYXNzIEF1dG9OdW1iZXIoRW51bSk6CistIHVzZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmBhdXRvYCBmb3IgdGhlIHZhbHVlCistIHVzZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmBvYmplY3RgIGFzIHRoZSB2YWx1ZQorLSB1c2UgYSBkZXNjcmlwdGl2ZSBzdHJpbmcgYXMgdGhlIHZhbHVlCistIHVzZSBhIHR1cGxlIGFzIHRoZSB2YWx1ZSBhbmQgYSBjdXN0b20gOm1ldGg6YF9fbmV3X19gIHRvIHJlcGxhY2UgdGhlCisgIHR1cGxlIHdpdGggYW4gOmNsYXNzOmBpbnRgIHZhbHVlCisKK1VzaW5nIGFueSBvZiB0aGVzZSBtZXRob2RzIHNpZ25pZmllcyB0byB0aGUgdXNlciB0aGF0IHRoZXNlIHZhbHVlcyBhcmUgbm90CitpbXBvcnRhbnQsIGFuZCBhbHNvIGVuYWJsZXMgb25lIHRvIGFkZCwgcmVtb3ZlLCBvciByZW9yZGVyIG1lbWJlcnMgd2l0aG91dAoraGF2aW5nIHRvIHJlbnVtYmVyIHRoZSByZW1haW5pbmcgbWVtYmVycy4KKworV2hpY2hldmVyIG1ldGhvZCB5b3UgY2hvb3NlLCB5b3Ugc2hvdWxkIHByb3ZpZGUgYSA6bWV0aDpgcmVwcmAgdGhhdCBhbHNvIGhpZGVzCit0aGUgKHVuaW1wb3J0YW50KSB2YWx1ZTo6CisKKyAgICA+Pj4gY2xhc3MgTm9WYWx1ZShFbnVtKToKKyAgICAuLi4gICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gJzwlcy4lcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUpCisgICAgLi4uCisKKworVXNpbmcgOmNsYXNzOmBhdXRvYAorIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyA6Y2xhc3M6YG9iamVjdGAgd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihOb1ZhbHVlKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisKKworVXNpbmcgOmNsYXNzOmBvYmplY3RgCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgOmNsYXNzOmBvYmplY3RgIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQ29sb3IoTm9WYWx1ZSk6CisgICAgLi4uICAgICByZWQgPSBvYmplY3QoKQorICAgIC4uLiAgICAgZ3JlZW4gPSBvYmplY3QoKQorICAgIC4uLiAgICAgYmx1ZSA9IG9iamVjdCgpCisgICAgLi4uCisgICAgPj4+IENvbG9yLmdyZWVuCisgICAgPENvbG9yLmdyZWVuPgorCisKK1VzaW5nIGEgZGVzY3JpcHRpdmUgc3RyaW5nCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyBhIHN0cmluZyBhcyB0aGUgdmFsdWUgd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihOb1ZhbHVlKToKKyAgICAuLi4gICAgIHJlZCA9ICdzdG9wJworICAgIC4uLiAgICAgZ3JlZW4gPSAnZ28nCisgICAgLi4uICAgICBibHVlID0gJ3RvbyBmYXN0IScKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisgICAgPj4+IENvbG9yLmdyZWVuLnZhbHVlCisgICAgJ2dvJworCisKK1VzaW5nIGEgY3VzdG9tIDptZXRoOmBfX25ld19fYAorIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIGFuIGF1dG8tbnVtYmVyaW5nIDptZXRoOmBfX25ld19fYCB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIEF1dG9OdW1iZXIoTm9WYWx1ZSk6CiAgICAgLi4uICAgICBkZWYgX19uZXdfXyhjbHMpOgogICAgIC4uLiAgICAgICAgIHZhbHVlID0gbGVuKGNscy5fX21lbWJlcnNfXykgKyAxCiAgICAgLi4uICAgICAgICAgb2JqID0gb2JqZWN0Ll9fbmV3X18oY2xzKQpAQCAtNTg5LDggKzgzMSwxMSBAQAogICAgIC4uLiAgICAgZ3JlZW4gPSAoKQogICAgIC4uLiAgICAgYmx1ZSA9ICgpCiAgICAgLi4uCi0gICAgPj4+IENvbG9yLmdyZWVuLnZhbHVlID09IDIKLSAgICBUcnVlCisgICAgPj4+IENvbG9yLmdyZWVuCisgICAgPENvbG9yLmdyZWVuPgorICAgID4+PiBDb2xvci5ncmVlbi52YWx1ZQorICAgIDIKKwogCiAuLiBub3RlOjoKIApAQCAtNzMwLDEwICs5NzUsNjAgQEAKIEZpbmVyIFBvaW50cwogXl5eXl5eXl5eXl5eCiAKLTpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgaW5zdGFuY2VzIG9mIGFuIDpjbGFzczpgRW51bWAgY2xhc3MsIGFuZCBldmVuCi10aG91Z2ggdGhleSBhcmUgYWNjZXNzaWJsZSBhcyBgRW51bUNsYXNzLm1lbWJlcmAsIHRoZXkgc2hvdWxkIG5vdCBiZSBhY2Nlc3NlZAotZGlyZWN0bHkgZnJvbSB0aGUgbWVtYmVyIGFzIHRoYXQgbG9va3VwIG1heSBmYWlsIG9yLCB3b3JzZSwgcmV0dXJuIHNvbWV0aGluZwotYmVzaWRlcyB0aGUgOmNsYXNzOmBFbnVtYCBtZW1iZXIgeW91IGxvb2tpbmcgZm9yOjoKK1N1cHBvcnRlZCBgYF9fZHVuZGVyX19gYCBuYW1lcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKzphdHRyOmBfX21lbWJlcnNfX2AgaXMgYW4gOmNsYXNzOmBPcmRlcmVkRGljdGAgb2YgYGBtZW1iZXJfbmFtZWBgOmBgbWVtYmVyYGAKK2l0ZW1zLiAgSXQgaXMgb25seSBhdmFpbGFibGUgb24gdGhlIGNsYXNzLgorCis6bWV0aDpgX19uZXdfX2AsIGlmIHNwZWNpZmllZCwgbXVzdCBjcmVhdGUgYW5kIHJldHVybiB0aGUgZW51bSBtZW1iZXJzOyBpdCBpcworYWxzbyBhIHZlcnkgZ29vZCBpZGVhIHRvIHNldCB0aGUgbWVtYmVyJ3MgOmF0dHI6YF92YWx1ZV9gIGFwcHJvcHJpYXRlbHkuICBPbmNlCithbGwgdGhlIG1lbWJlcnMgYXJlIGNyZWF0ZWQgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisKKworU3VwcG9ydGVkIGBgX3N1bmRlcl9gYCBuYW1lcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCistIGBgX25hbWVfYGAgLS0gbmFtZSBvZiB0aGUgbWVtYmVyCistIGBgX3ZhbHVlX2BgIC0tIHZhbHVlIG9mIHRoZSBtZW1iZXI7IGNhbiBiZSBzZXQgLyBtb2RpZmllZCBpbiBgYF9fbmV3X19gYAorCistIGBgX21pc3NpbmdfYGAgLS0gYSBsb29rdXAgZnVuY3Rpb24gdXNlZCB3aGVuIGEgdmFsdWUgaXMgbm90IGZvdW5kOyBtYXkgYmUKKyAgb3ZlcnJpZGRlbgorLSBgYF9vcmRlcl9gYCAtLSB1c2VkIGluIFB5dGhvbiAyLzMgY29kZSB0byBlbnN1cmUgbWVtYmVyIG9yZGVyIGlzIGNvbnNpc3RlbnQKKyAgKGNsYXNzIGF0dHJpYnV0ZSwgcmVtb3ZlZCBkdXJpbmcgY2xhc3MgY3JlYXRpb24pCistIGBgX2dlbmVyYXRlX25leHRfdmFsdWVfYGAgLS0gdXNlZCBieSB0aGUgYEZ1bmN0aW9uYWwgQVBJYF8gYW5kIGJ5CisgIDpjbGFzczpgYXV0b2AgdG8gZ2V0IGFuIGFwcHJvcHJpYXRlIHZhbHVlIGZvciBhbiBlbnVtIG1lbWJlcjsgbWF5IGJlCisgIG92ZXJyaWRkZW4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42IGBgX21pc3NpbmdfYGAsIGBgX29yZGVyX2BgLCBgYF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2BgCisKK1RvIGhlbHAga2VlcCBQeXRob24gMiAvIFB5dGhvbiAzIGNvZGUgaW4gc3luYyBhbiA6YXR0cjpgX29yZGVyX2AgYXR0cmlidXRlIGNhbgorYmUgcHJvdmlkZWQuICBJdCB3aWxsIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgYWN0dWFsIG9yZGVyIG9mIHRoZSBlbnVtZXJhdGlvbgorYW5kIHJhaXNlIGFuIGVycm9yIGlmIHRoZSB0d28gZG8gbm90IG1hdGNoOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAuLi4gICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgLi4uICAgICByZWQgPSAxCisgICAgLi4uICAgICBibHVlID0gMworICAgIC4uLiAgICAgZ3JlZW4gPSAyCisgICAgLi4uCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgIC4uLgorICAgIFR5cGVFcnJvcjogbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8KKworLi4gbm90ZTo6CisKKyAgICBJbiBQeXRob24gMiBjb2RlIHRoZSA6YXR0cjpgX29yZGVyX2AgYXR0cmlidXRlIGlzIG5lY2Vzc2FyeSBhcyBkZWZpbml0aW9uCisgICAgb3JkZXIgaXMgbG9zdCBiZWZvcmUgaXQgY2FuIGJlIHJlY29yZGVkLgorCitgYEVudW1gYCBtZW1iZXIgdHlwZQorIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBpbnN0YW5jZXMgb2YgdGhlaXIgOmNsYXNzOmBFbnVtYCBjbGFzcywgYW5kIGFyZQorbm9ybWFsbHkgYWNjZXNzZWQgYXMgYGBFbnVtQ2xhc3MubWVtYmVyYGAuICBVbmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgdGhleQorY2FuIGFsc28gYmUgYWNjZXNzZWQgYXMgYGBFbnVtQ2xhc3MubWVtYmVyLm1lbWJlcmBgLCBidXQgeW91IHNob3VsZCBuZXZlciBkbwordGhpcyBhcyB0aGF0IGxvb2t1cCBtYXkgZmFpbCBvciwgd29yc2UsIHJldHVybiBzb21ldGhpbmcgYmVzaWRlcyB0aGUKKzpjbGFzczpgRW51bWAgbWVtYmVyIHlvdSBhcmUgbG9va2luZyBmb3I6OgogCiAgICAgPj4+IGNsYXNzIEZpZWxkVHlwZXMoRW51bSk6CiAgICAgLi4uICAgICBuYW1lID0gMApAQCAtNzQ3LDcgKzEwNDIsMjQgQEAKIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKIAotVGhlIDphdHRyOmBfX21lbWJlcnNfX2AgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIG9uIHRoZSBjbGFzcy4KKworQm9vbGVhbiB2YWx1ZSBvZiBgYEVudW1gYCBjbGFzc2VzIGFuZCBtZW1iZXJzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmNsYXNzOmBFbnVtYCBtZW1iZXJzIHRoYXQgYXJlIG1peGVkIHdpdGggbm9uLTpjbGFzczpgRW51bWAgdHlwZXMgKHN1Y2ggYXMKKzpjbGFzczpgaW50YCwgOmNsYXNzOmBzdHJgLCBldGMuKSBhcmUgZXZhbHVhdGVkIGFjY29yZGluZyB0byB0aGUgbWl4ZWQtaW4KK3R5cGUncyBydWxlczsgb3RoZXJ3aXNlLCBhbGwgbWVtYmVycyBldmFsdWF0ZSBhcyA6ZGF0YTpgVHJ1ZWAuICBUbyBtYWtlIHlvdXIKK293biBFbnVtJ3MgYm9vbGVhbiBldmFsdWF0aW9uIGRlcGVuZCBvbiB0aGUgbWVtYmVyJ3MgdmFsdWUgYWRkIHRoZSBmb2xsb3dpbmcgdG8KK3lvdXIgY2xhc3M6OgorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLnZhbHVlKQorCis6Y2xhc3M6YEVudW1gIGNsYXNzZXMgYWx3YXlzIGV2YWx1YXRlIGFzIDpkYXRhOmBUcnVlYC4KKworCitgYEVudW1gYCBjbGFzc2VzIHdpdGggbWV0aG9kcworIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogSWYgeW91IGdpdmUgeW91ciA6Y2xhc3M6YEVudW1gIHN1YmNsYXNzIGV4dHJhIG1ldGhvZHMsIGxpa2UgdGhlIGBQbGFuZXRgXwogY2xhc3MgYWJvdmUsIHRob3NlIG1ldGhvZHMgd2lsbCBzaG93IHVwIGluIGEgOmZ1bmM6YGRpcmAgb2YgdGhlIG1lbWJlciwKQEAgLTc1OCwxMSArMTA3MCwyMyBAQAogICAgID4+PiBkaXIoUGxhbmV0LkVBUlRIKQogICAgIFsnX19jbGFzc19fJywgJ19fZG9jX18nLCAnX19tb2R1bGVfXycsICduYW1lJywgJ3N1cmZhY2VfZ3Jhdml0eScsICd2YWx1ZSddCiAKLVRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHdpbGwgb25seSBiZSB1c2VkIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlCi06Y2xhc3M6YEVudW1gIG1lbWJlcnMgLS0gYWZ0ZXIgdGhhdCBpdCBpcyByZXBsYWNlZC4gIEFueSBjdXN0b20gOm1ldGg6YF9fbmV3X19gCi1tZXRob2QgbXVzdCBjcmVhdGUgdGhlIG9iamVjdCBhbmQgc2V0IHRoZSA6YXR0cjpgX3ZhbHVlX2AgYXR0cmlidXRlCi1hcHByb3ByaWF0ZWx5LgogCi1JZiB5b3Ugd2lzaCB0byBjaGFuZ2UgaG93IDpjbGFzczpgRW51bWAgbWVtYmVycyBhcmUgbG9va2VkIHVwIHlvdSBzaG91bGQgZWl0aGVyCi13cml0ZSBhIGhlbHBlciBmdW5jdGlvbiBvciBhIDpmdW5jOmBjbGFzc21ldGhvZGAgZm9yIHRoZSA6Y2xhc3M6YEVudW1gCi1zdWJjbGFzcy4KK0NvbWJpbmluZyBtZW1iZXJzIG9mIGBgRmxhZ2BgCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitJZiBhIGNvbWJpbmF0aW9uIG9mIEZsYWcgbWVtYmVycyBpcyBub3QgbmFtZWQsIHRoZSA6ZnVuYzpgcmVwcmAgd2lsbCBpbmNsdWRlCithbGwgbmFtZWQgZmxhZ3MgYW5kIGFsbCBuYW1lZCBjb21iaW5hdGlvbnMgb2YgZmxhZ3MgdGhhdCBhcmUgaW4gdGhlIHZhbHVlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIHJlZCA9IGF1dG8oKQorICAgIC4uLiAgICAgZ3JlZW4gPSBhdXRvKCkKKyAgICAuLi4gICAgIGJsdWUgPSBhdXRvKCkKKyAgICAuLi4gICAgIG1hZ2VudGEgPSByZWQgfCBibHVlCisgICAgLi4uICAgICB5ZWxsb3cgPSByZWQgfCBncmVlbgorICAgIC4uLiAgICAgY3lhbiA9IGdyZWVuIHwgYmx1ZQorICAgIC4uLgorICAgID4+PiBDb2xvcigzKSAgIyBuYW1lZCBjb21iaW5hdGlvbgorICAgIDxDb2xvci55ZWxsb3c6IDM+CisgICAgPj4+IENvbG9yKDcpICAgICAgIyBub3QgbmFtZWQgY29tYmluYXRpb24KKyAgICA8Q29sb3IuY3lhbnxtYWdlbnRhfGJsdWV8eWVsbG93fGdyZWVufHJlZDogNz4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCA1YTcxOTMzLi5hNDI4ZjUxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMTcwLDggKzE3MCw5IEBACiAKIC4uIGV4Y2VwdGlvbjo6IEltcG9ydEVycm9yCiAKLSAgIFJhaXNlZCB3aGVuIGFuIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBmYWlscyB0byBmaW5kIHRoZSBtb2R1bGUgZGVmaW5pdGlvbgotICAgb3Igd2hlbiBhIGBgZnJvbSAuLi4gaW1wb3J0YGAgZmFpbHMgdG8gZmluZCBhIG5hbWUgdGhhdCBpcyB0byBiZSBpbXBvcnRlZC4KKyAgIFJhaXNlZCB3aGVuIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgaGFzIHRyb3VibGVzIHRyeWluZyB0bworICAgbG9hZCBhIG1vZHVsZS4gIEFsc28gcmFpc2VkIHdoZW4gdGhlICJmcm9tIGxpc3QiIGluIGBgZnJvbSAuLi4gaW1wb3J0YGAKKyAgIGhhcyBhIG5hbWUgdGhhdCBjYW5ub3QgYmUgZm91bmQuCiAKICAgIFRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgdXNpbmcga2V5d29yZC1vbmx5CiAgICBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVjdG9yLiBXaGVuIHNldCB0aGV5IHJlcHJlc2VudCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlCkBAIC0xODEsNiArMTgyLDE0IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlIDphdHRyOmBuYW1lYCBhbmQgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZXMuCiAKKy4uIGV4Y2VwdGlvbjo6IE1vZHVsZU5vdEZvdW5kRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgd2hpY2ggaXMgcmFpc2VkIGJ5IDprZXl3b3JkOmBpbXBvcnRgCisgICB3aGVuIGEgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLiAgSXQgaXMgYWxzbyByYWlzZWQgd2hlbiBgYE5vbmVgYAorICAgaXMgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogLi4gZXhjZXB0aW9uOjogSW5kZXhFcnJvcgogCkBAIC0yMjgsOSArMjM3LDIxIEBACiAuLiBleGNlcHRpb246OiBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgSW4gdXNlciBkZWZpbmVkIGJhc2UKLSAgIGNsYXNzZXMsIGFic3RyYWN0IG1ldGhvZHMgc2hvdWxkIHJhaXNlIHRoaXMgZXhjZXB0aW9uIHdoZW4gdGhleSByZXF1aXJlIGRlcml2ZWQKLSAgIGNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZC4KKyAgIGNsYXNzZXMsIGFic3RyYWN0IG1ldGhvZHMgc2hvdWxkIHJhaXNlIHRoaXMgZXhjZXB0aW9uIHdoZW4gdGhleSByZXF1aXJlCisgICBkZXJpdmVkIGNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIG1ldGhvZCwgb3Igd2hpbGUgdGhlIGNsYXNzIGlzIGJlaW5nCisgICBkZXZlbG9wZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVhbCBpbXBsZW1lbnRhdGlvbiBzdGlsbCBuZWVkcyB0byBiZSBhZGRlZC4KIAorICAgLi4gbm90ZTo6CisKKyAgICAgIEl0IHNob3VsZCBub3QgYmUgdXNlZCB0byBpbmRpY2F0ZSB0aGF0IGFuIG9wZXJhdGVyIG9yIG1ldGhvZCBpcyBub3QKKyAgICAgIG1lYW50IHRvIGJlIHN1cHBvcnRlZCBhdCBhbGwgLS0gaW4gdGhhdCBjYXNlIGVpdGhlciBsZWF2ZSB0aGUgb3BlcmF0b3IgLworICAgICAgbWV0aG9kIHVuZGVmaW5lZCBvciwgaWYgYSBzdWJjbGFzcywgc2V0IGl0IHRvIDpkYXRhOmBOb25lYC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIGBgTm90SW1wbGVtZW50ZWRFcnJvcmBgIGFuZCBgYE5vdEltcGxlbWVudGVkYGAgYXJlIG5vdCBpbnRlcmNoYW5nZWFibGUsCisgICAgICBldmVuIHRob3VnaCB0aGV5IGhhdmUgc2ltaWxhciBuYW1lcyBhbmQgcHVycG9zZXMuICBTZWUKKyAgICAgIDpkYXRhOmBOb3RJbXBsZW1lbnRlZGAgZm9yIGRldGFpbHMgb24gd2hlbiB0byB1c2UgaXQuCiAKIC4uIGV4Y2VwdGlvbjo6IE9TRXJyb3IoW2FyZ10pCiAgICAgICAgICAgICAgICBPU0Vycm9yKGVycm5vLCBzdHJlcnJvclssIGZpbGVuYW1lWywgd2luZXJyb3JbLCBmaWxlbmFtZTJdXV0pCkBAIC00MzYsNiArNDU3LDE1IEBACiAgICBSYWlzZWQgd2hlbiBhbiBvcGVyYXRpb24gb3IgZnVuY3Rpb24gaXMgYXBwbGllZCB0byBhbiBvYmplY3Qgb2YgaW5hcHByb3ByaWF0ZQogICAgdHlwZS4gIFRoZSBhc3NvY2lhdGVkIHZhbHVlIGlzIGEgc3RyaW5nIGdpdmluZyBkZXRhaWxzIGFib3V0IHRoZSB0eXBlIG1pc21hdGNoLgogCisgICBUaGlzIGV4Y2VwdGlvbiBtYXkgYmUgcmFpc2VkIGJ5IHVzZXIgY29kZSB0byBpbmRpY2F0ZSB0aGF0IGFuIGF0dGVtcHRlZAorICAgb3BlcmF0aW9uIG9uIGFuIG9iamVjdCBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgaXMgbm90IG1lYW50IHRvIGJlLiBJZiBhbiBvYmplY3QKKyAgIGlzIG1lYW50IHRvIHN1cHBvcnQgYSBnaXZlbiBvcGVyYXRpb24gYnV0IGhhcyBub3QgeWV0IHByb3ZpZGVkIGFuCisgICBpbXBsZW1lbnRhdGlvbiwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgdGhlIHByb3BlciBleGNlcHRpb24gdG8gcmFpc2UuCisKKyAgIFBhc3NpbmcgYXJndW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlIChlLmcuIHBhc3NpbmcgYSA6Y2xhc3M6YGxpc3RgIHdoZW4gYW4KKyAgIDpjbGFzczpgaW50YCBpcyBleHBlY3RlZCkgc2hvdWxkIHJlc3VsdCBpbiBhIDpleGM6YFR5cGVFcnJvcmAsIGJ1dCBwYXNzaW5nCisgICBhcmd1bWVudHMgd2l0aCB0aGUgd3JvbmcgdmFsdWUgKGUuZy4gYSBudW1iZXIgb3V0c2lkZSBleHBlY3RlZCBib3VuZGFyaWVzKQorICAgc2hvdWxkIHJlc3VsdCBpbiBhIDpleGM6YFZhbHVlRXJyb3JgLgogCiAuLiBleGNlcHRpb246OiBVbmJvdW5kTG9jYWxFcnJvcgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0IGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdAppbmRleCBkZWVkZWExLi5kMGM0Y2QwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTcwLDYgKzcwLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvciB0byB0aGlzIGZ1bmN0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT24gV2luZG93cywgYSBoYW5kbGVyIGZvciBXaW5kb3dzIGV4Y2VwdGlvbiBpcyBhbHNvIGluc3RhbGxlZC4KKwogLi4gZnVuY3Rpb246OiBkaXNhYmxlKCkKIAogICAgRGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlcjogdW5pbnN0YWxsIHRoZSBzaWduYWwgaGFuZGxlcnMgaW5zdGFsbGVkIGJ5CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAppbmRleCBhYTRjNTI5Li41ODgxZmVmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKQEAgLTcyLDkgKzcyLDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBDYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMgotICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCi0KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyLgogCiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB1c2UgdGhlIGdsb2JhbCBzdGF0ZSBjcmVhdGVkIGJ5IDpmdW5jOmBmaWxlaW5wdXQuaW5wdXRgOwogaWYgdGhlcmUgaXMgbm8gYWN0aXZlIHN0YXRlLCA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4KQEAgLTE2Nyw4ICsxNjYsOCBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAogICAgICAgVGhlIGBgJ3JVJ2BgIGFuZCBgYCdVJ2BgIG1vZGVzLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyLgogCiAKICoqT3B0aW9uYWwgaW4tcGxhY2UgZmlsdGVyaW5nOioqIGlmIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGBgaW5wbGFjZT1UcnVlYGAgaXMKQEAgLTE5NSwxMCArMTk0LDE0IEBACiAgICBVc2FnZSBleGFtcGxlOiAgYGBmaSA9IGZpbGVpbnB1dC5GaWxlSW5wdXQob3Blbmhvb2s9ZmlsZWlucHV0Lmhvb2tfY29tcHJlc3NlZClgYAogCiAKLS4uIGZ1bmN0aW9uOjogaG9va19lbmNvZGVkKGVuY29kaW5nKQorLi4gZnVuY3Rpb246OiBob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1Ob25lKQogCiAgICBSZXR1cm5zIGEgaG9vayB3aGljaCBvcGVucyBlYWNoIGZpbGUgd2l0aCA6ZnVuYzpgb3BlbmAsIHVzaW5nIHRoZSBnaXZlbgotICAgKmVuY29kaW5nKiB0byByZWFkIHRoZSBmaWxlLgorICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogdG8gcmVhZCB0aGUgZmlsZS4KIAogICAgVXNhZ2UgZXhhbXBsZTogYGBmaSA9Ci0gICBmaWxlaW5wdXQuRmlsZUlucHV0KG9wZW5ob29rPWZpbGVpbnB1dC5ob29rX2VuY29kZWQoImlzby04ODU5LTEiKSlgYAorICAgZmlsZWlucHV0LkZpbGVJbnB1dChvcGVuaG9vaz1maWxlaW5wdXQuaG9va19lbmNvZGVkKCJ1dGYtOCIsCisgICAic3Vycm9nYXRlZXNjYXBlIikpYGAKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCAqZXJyb3JzKiBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mbm1hdGNoLnJzdCBiL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0CmluZGV4IDlmYzljN2MuLmMwM2E5ZDMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0CkBAIC04Myw3ICs4Myw3IEBACiAgICAgICA+Pj4KICAgICAgID4+PiByZWdleCA9IGZubWF0Y2gudHJhbnNsYXRlKCcqLnR4dCcpCiAgICAgICA+Pj4gcmVnZXgKLSAgICAgICcuKlxcLnR4dFxcWig/bXMpJworICAgICAgJyg/czouKlxcLnR4dClcXFonCiAgICAgICA+Pj4gcmVvYmogPSByZS5jb21waWxlKHJlZ2V4KQogICAgICAgPj4+IHJlb2JqLm1hdGNoKCdmb29iYXIudHh0JykKICAgICAgIDxfc3JlLlNSRV9NYXRjaCBvYmplY3Q7IHNwYW49KDAsIDEwKSwgbWF0Y2g9J2Zvb2Jhci50eHQnPgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggMWUzNWYzNy4uYjhjMWRjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC05Nyw2ICs5NywxMyBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKwogICAgSGVyZSdzIGEgc2FtcGxlIHNlc3Npb24gdXNpbmcgdGhlIDpjbGFzczpgRlRQX1RMU2AgY2xhc3M6OgogCiAgICAgICA+Pj4gZnRwcyA9IEZUUF9UTFMoJ2Z0cC5wdXJlZnRwZC5vcmcnKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggNWFmOWZlNC4uYzRmY2Q5OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0yNzEsNiArMjcxLDkgQEAKIAogICAgVGhlIGNvbXBsZXggdHlwZSBpcyBkZXNjcmliZWQgaW4gOnJlZjpgdHlwZXNudW1lcmljYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEdyb3VwaW5nIGRpZ2l0cyB3aXRoIHVuZGVyc2NvcmVzIGFzIGluIGNvZGUgbGl0ZXJhbHMgaXMgYWxsb3dlZC4KKwogCiAuLiBmdW5jdGlvbjo6IGRlbGF0dHIob2JqZWN0LCBuYW1lKQogCkBAIC01MzEsMTEgKzUzNCwxNCBAQAogCiAgICBUaGUgZmxvYXQgdHlwZSBpcyBkZXNjcmliZWQgaW4gOnJlZjpgdHlwZXNudW1lcmljYC4KIAotICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBfX2Zvcm1hdF9fCi0gICAgICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0KCkgKGJ1aWx0LWluIGZ1bmN0aW9uKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEdyb3VwaW5nIGRpZ2l0cyB3aXRoIHVuZGVyc2NvcmVzIGFzIGluIGNvZGUgbGl0ZXJhbHMgaXMgYWxsb3dlZC4KIAogCisuLiBpbmRleDo6CisgICBzaW5nbGU6IF9fZm9ybWF0X18KKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXQoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCisKIC4uIGZ1bmN0aW9uOjogZm9ybWF0KHZhbHVlWywgZm9ybWF0X3NwZWNdKQogCiAgICBDb252ZXJ0IGEgKnZhbHVlKiB0byBhICJmb3JtYXR0ZWQiIHJlcHJlc2VudGF0aW9uLCBhcyBjb250cm9sbGVkIGJ5CkBAIC03MDIsNiArNzA4LDEwIEBACiAgICAgICA6bWV0aDpgYmFzZS5fX2ludF9fIDxvYmplY3QuX19pbnRfXz5gIGluc3RlYWQgb2YgOm1ldGg6YGJhc2UuX19pbmRleF9fCiAgICAgICA8b2JqZWN0Ll9faW5kZXhfXz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgorCisKIC4uIGZ1bmN0aW9uOjogaXNpbnN0YW5jZShvYmplY3QsIGNsYXNzaW5mbykKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlICpvYmplY3QqIGFyZ3VtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSAqY2xhc3NpbmZvKgpAQCAtODc4LDExICs4ODgsMTEgQEAKICAgIE9wZW4gKmZpbGUqIGFuZCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIDp0ZXJtOmBmaWxlIG9iamVjdGAuICBJZiB0aGUgZmlsZQogICAgY2Fubm90IGJlIG9wZW5lZCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAqZmlsZSogaXMgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgotICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvcgotICAgYW4gaW50ZWdlciBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gYmUgd3JhcHBlZC4gIChJZiBhIGZpbGUgZGVzY3JpcHRvcgotICAgaXMgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZSByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzCi0gICAqY2xvc2VmZCogaXMgc2V0IHRvIGBgRmFsc2VgYC4pCisgICAqZmlsZSogaXMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZ2l2aW5nIHRoZSBwYXRobmFtZSAoYWJzb2x1dGUgb3IKKyAgIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5KSBvZiB0aGUgZmlsZSB0byBiZSBvcGVuZWQgb3IgYW4KKyAgIGludGVnZXIgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBmaWxlIHRvIGJlIHdyYXBwZWQuICAoSWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMKKyAgIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGUgcmV0dXJuZWQgSS9PIG9iamVjdCBpcyBjbG9zZWQsIHVubGVzcyAqY2xvc2VmZCoKKyAgIGlzIHNldCB0byBgYEZhbHNlYGAuKQogCiAgICAqbW9kZSogaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlIGlzCiAgICBvcGVuZWQuICBJdCBkZWZhdWx0cyB0byBgYCdyJ2BgIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dCBtb2RlLgpAQCAtMTA1NSwyNyArMTA2NSwzOCBAQAogICAgKHdoZXJlIDpmdW5jOmBvcGVuYCBpcyBkZWNsYXJlZCksIDptb2Q6YG9zYCwgOm1vZDpgb3MucGF0aGAsIDptb2Q6YHRlbXBmaWxlYCwKICAgIGFuZCA6bW9kOmBzaHV0aWxgLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCi0gICAgICBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KLSAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCi0gICAgICA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQotICAgICAgY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAgICAzLjMKIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKLSAgICAgIFRoZSBmaWxlIGlzIG5vdyBub24taW5oZXJpdGFibGUuCisgICAgICAgICAqIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgICAgKiBUaGUgYGAneCdgYCBtb2RlIHdhcyBhZGRlZC4KKyAgICAgICAgICogOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKyAgICAgICAgICogOmV4YzpgRmlsZUV4aXN0c0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIHRoZSBmaWxlIG9wZW5lZCBpbiBleGNsdXNpdmUKKyAgICAgICAgICogY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNAorCisgICAgICAgICAqIFRoZSBmaWxlIGlzIG5vdyBub24taW5oZXJpdGFibGUuCiAKICAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNCA0LjAKIAogICAgICAgVGhlIGBgJ1UnYGAgbW9kZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCi0gICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCi0gICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgVGhlIGBgJ25hbWVyZXBsYWNlJ2BgIGVycm9yIGhhbmRsZXIgd2FzIGFkZGVkLgorICAgICAgICAgKiBJZiB0aGUgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYW5kIHRoZSBzaWduYWwgaGFuZGxlciBkb2VzIG5vdCByYWlzZSBhbgorICAgICAgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCisgICAgICAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorICAgICAgICAgKiBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlciB3YXMgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuNgorCisgICAgICAgICAqIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIDpjbGFzczpgb3MuUGF0aExpa2VgLgorICAgICAgICAgKiBPbiBXaW5kb3dzLCBvcGVuaW5nIGEgY29uc29sZSBidWZmZXIgbWF5IHJldHVybiBhIHN1YmNsYXNzIG9mCisgICAgICAgICAgIDpjbGFzczpgaW8uUmF3SU9CYXNlYCBvdGhlciB0aGFuIDpjbGFzczpgaW8uRmlsZUlPYC4KIAogLi4gZnVuY3Rpb246OiBvcmQoYykKIApAQCAtMTQ2MCw2ICsxNDgxLDkgQEAKIAogICAgU2VlIGFsc28gOnJlZjpgYmx0aW4tdHlwZS1vYmplY3RzYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1YmNsYXNzZXMgb2YgOmNsYXNzOmB0eXBlYCB3aGljaCBkb24ndCBvdmVycmlkZSBgYHR5cGUuX19uZXdfX2BgIG1heSBubworICAgICAgbG9uZ2VyIHVzZSB0aGUgb25lLWFyZ3VtZW50IGZvcm0gdG8gZ2V0IHRoZSB0eXBlIG9mIGFuIG9iamVjdC4KIAogLi4gZnVuY3Rpb246OiB2YXJzKFtvYmplY3RdKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nbG9iLnJzdCBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CmluZGV4IDMyOGVlZjMuLmE4YTVhNTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dsb2IucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dsb2IucnN0CkBAIC0xNCw3ICsxNCw3IEBACiBhY2NvcmRpbmcgdG8gdGhlIHJ1bGVzIHVzZWQgYnkgdGhlIFVuaXggc2hlbGwsIGFsdGhvdWdoIHJlc3VsdHMgYXJlIHJldHVybmVkIGluCiBhcmJpdHJhcnkgb3JkZXIuICBObyB0aWxkZSBleHBhbnNpb24gaXMgZG9uZSwgYnV0IGBgKmBgLCBgYD9gYCwgYW5kIGNoYXJhY3RlcgogcmFuZ2VzIGV4cHJlc3NlZCB3aXRoIGBgW11gYCB3aWxsIGJlIGNvcnJlY3RseSBtYXRjaGVkLiAgVGhpcyBpcyBkb25lIGJ5IHVzaW5nCi10aGUgOmZ1bmM6YG9zLmxpc3RkaXJgIGFuZCA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbnMgaW4gY29uY2VydCwgYW5kCit0aGUgOmZ1bmM6YG9zLnNjYW5kaXJgIGFuZCA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCBmdW5jdGlvbnMgaW4gY29uY2VydCwgYW5kCiBub3QgYnkgYWN0dWFsbHkgaW52b2tpbmcgYSBzdWJzaGVsbC4gIE5vdGUgdGhhdCB1bmxpa2UgOmZ1bmM6YGZubWF0Y2guZm5tYXRjaGAsCiA6bW9kOmBnbG9iYCB0cmVhdHMgZmlsZW5hbWVzIGJlZ2lubmluZyB3aXRoIGEgZG90IChgYC5gYCkgYXMgc3BlY2lhbCBjYXNlcy4KIChGb3IgdGlsZGUgYW5kIHNoZWxsIHZhcmlhYmxlIGV4cGFuc2lvbiwgdXNlIDpmdW5jOmBvcy5wYXRoLmV4cGFuZHVzZXJgIGFuZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3JwLnJzdCBiL0RvYy9saWJyYXJ5L2dycC5yc3QKaW5kZXggYTMwZTYyMi4uNzRkZTNmOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3JwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9ncnAucnN0CkBAIC00Myw2ICs0Myw5IEBACiAgICBSZXR1cm4gdGhlIGdyb3VwIGRhdGFiYXNlIGVudHJ5IGZvciB0aGUgZ2l2ZW4gbnVtZXJpYyBncm91cCBJRC4gOmV4YzpgS2V5RXJyb3JgCiAgICBpcyByYWlzZWQgaWYgdGhlIGVudHJ5IGFza2VkIGZvciBjYW5ub3QgYmUgZm91bmQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgICAgIFNpbmNlIFB5dGhvbiAzLjYgdGhlIHN1cHBvcnQgb2Ygbm9uLWludGVnZXIgYXJndW1lbnRzIGxpa2UgZmxvYXRzIG9yCisgICAgICBzdHJpbmdzIGluIDpmdW5jOmBnZXRncmdpZGAgaXMgZGVwcmVjYXRlZC4KIAogLi4gZnVuY3Rpb246OiBnZXRncm5hbShuYW1lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nemlwLnJzdCBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CmluZGV4IDc5MmQ1N2EuLjljNmI3MjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2d6aXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2d6aXAucnN0CkBAIC01Niw2ICs1Niw4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAsIGBgJ3hiJ2BgIGFuZCBgYCd4dCdgYCBtb2Rlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIC4uIGNsYXNzOjogR3ppcEZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT1Ob25lLCBjb21wcmVzc2xldmVsPTksIGZpbGVvYmo9Tm9uZSwgbXRpbWU9Tm9uZSkKIApAQCAtMTUxLDYgKzE1Myw5IEBACiAgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKICAgICAgIGBgTm9uZWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTItdHJlZS5wbmcgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTBkY2JhCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTItdHJlZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIucnN0IGIvRG9jL2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNWU0NDEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QKQEAgLTAsMCArMSw0NDQgQEAKKy4uIF9oYXNobGliLWJsYWtlMjoKKworOm1vZDpgaGFzaGxpYmAgLS0tIEJMQUtFMiBoYXNoIGZ1bmN0aW9ucworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBoYXNobGliCisgICA6c3lub3BzaXM6IEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGZvciBQeXRob24KKy4uIHNlY3Rpb25hdXRob3I6OiBEbWl0cnkgQ2hlc3RueWtoCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogYmxha2UyYiwgYmxha2UycworCitCTEFLRTJfIGlzIGEgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uIGRlZmluZWQgaW4gUkZDLTc2OTNfIHRoYXQgY29tZXMgaW4gdHdvCitmbGF2b3JzOgorCisqICoqQkxBS0UyYioqLCBvcHRpbWl6ZWQgZm9yIDY0LWJpdCBwbGF0Zm9ybXMgYW5kIHByb2R1Y2VzIGRpZ2VzdHMgb2YgYW55IHNpemUKKyAgYmV0d2VlbiAxIGFuZCA2NCBieXRlcywKKworKiAqKkJMQUtFMnMqKiwgb3B0aW1pemVkIGZvciA4LSB0byAzMi1iaXQgcGxhdGZvcm1zIGFuZCBwcm9kdWNlcyBkaWdlc3RzIG9mIGFueQorICBzaXplIGJldHdlZW4gMSBhbmQgMzIgYnl0ZXMuCisKK0JMQUtFMiBzdXBwb3J0cyAqKmtleWVkIG1vZGUqKiAoYSBmYXN0ZXIgYW5kIHNpbXBsZXIgcmVwbGFjZW1lbnQgZm9yIEhNQUNfKSwKKyoqc2FsdGVkIGhhc2hpbmcqKiwgKipwZXJzb25hbGl6YXRpb24qKiwgYW5kICoqdHJlZSBoYXNoaW5nKiouCisKK0hhc2ggb2JqZWN0cyBmcm9tIHRoaXMgbW9kdWxlIGZvbGxvdyB0aGUgQVBJIG9mIHN0YW5kYXJkIGxpYnJhcnkncworOm1vZDpgaGFzaGxpYmAgb2JqZWN0cy4KKworCitNb2R1bGUKKz09PT09PQorCitDcmVhdGluZyBoYXNoIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOZXcgaGFzaCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGNhbGxpbmcgY29uc3RydWN0b3IgZnVuY3Rpb25zOgorCisKKy4uIGZ1bmN0aW9uOjogYmxha2UyYihkYXRhPWInJywgZGlnZXN0X3NpemU9NjQsIGtleT1iJycsIHNhbHQ9YicnLCBcCisgICAgICAgICAgICAgICAgcGVyc29uPWInJywgZmFub3V0PTEsIGRlcHRoPTEsIGxlYWZfc2l6ZT0wLCBub2RlX29mZnNldD0wLCAgXAorICAgICAgICAgICAgICAgIG5vZGVfZGVwdGg9MCwgaW5uZXJfc2l6ZT0wLCBsYXN0X25vZGU9RmFsc2UpCisKKy4uIGZ1bmN0aW9uOjogYmxha2UycyhkYXRhPWInJywgZGlnZXN0X3NpemU9MzIsIGtleT1iJycsIHNhbHQ9YicnLCBcCisgICAgICAgICAgICAgICAgcGVyc29uPWInJywgZmFub3V0PTEsIGRlcHRoPTEsIGxlYWZfc2l6ZT0wLCBub2RlX29mZnNldD0wLCAgXAorICAgICAgICAgICAgICAgIG5vZGVfZGVwdGg9MCwgaW5uZXJfc2l6ZT0wLCBsYXN0X25vZGU9RmFsc2UpCisKKworVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBoYXNoIG9iamVjdHMgZm9yIGNhbGN1bGF0aW5nCitCTEFLRTJiIG9yIEJMQUtFMnMuIFRoZXkgb3B0aW9uYWxseSB0YWtlIHRoZXNlIGdlbmVyYWwgcGFyYW1ldGVyczoKKworKiAqZGF0YSo6IGluaXRpYWwgY2h1bmsgb2YgZGF0YSB0byBoYXNoLCB3aGljaCBtdXN0IGJlIGludGVycHJldGFibGUgYXMgYnVmZmVyCisgIG9mIGJ5dGVzLgorCisqICpkaWdlc3Rfc2l6ZSo6IHNpemUgb2Ygb3V0cHV0IGRpZ2VzdCBpbiBieXRlcy4KKworKiAqa2V5Kjoga2V5IGZvciBrZXllZCBoYXNoaW5nICh1cCB0byA2NCBieXRlcyBmb3IgQkxBS0UyYiwgdXAgdG8gMzIgYnl0ZXMgZm9yCisgIEJMQUtFMnMpLgorCisqICpzYWx0Kjogc2FsdCBmb3IgcmFuZG9taXplZCBoYXNoaW5nICh1cCB0byAxNiBieXRlcyBmb3IgQkxBS0UyYiwgdXAgdG8gOAorICBieXRlcyBmb3IgQkxBS0UycykuCisKKyogKnBlcnNvbio6IHBlcnNvbmFsaXphdGlvbiBzdHJpbmcgKHVwIHRvIDE2IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byA4IGJ5dGVzCisgIGZvciBCTEFLRTJzKS4KKworVGhlIGZvbGxvd2luZyB0YWJsZSBzaG93cyBsaW1pdHMgZm9yIGdlbmVyYWwgcGFyYW1ldGVycyAoaW4gYnl0ZXMpOgorCis9PT09PT09ID09PT09PT09PT09ID09PT09PT09ID09PT09PT09PSA9PT09PT09PT09PQorSGFzaCAgICBkaWdlc3Rfc2l6ZSBsZW4oa2V5KSBsZW4oc2FsdCkgbGVuKHBlcnNvbikKKz09PT09PT0gPT09PT09PT09PT0gPT09PT09PT0gPT09PT09PT09ID09PT09PT09PT09CitCTEFLRTJiICAgICA2NCAgICAgICAgIDY0ICAgICAgIDE2ICAgICAgICAxNgorQkxBS0UycyAgICAgMzIgICAgICAgICAzMiAgICAgICA4ICAgICAgICAgOAorPT09PT09PSA9PT09PT09PT09PSA9PT09PT09PSA9PT09PT09PT0gPT09PT09PT09PT0KKworLi4gbm90ZTo6CisKKyAgICBCTEFLRTIgc3BlY2lmaWNhdGlvbiBkZWZpbmVzIGNvbnN0YW50IGxlbmd0aHMgZm9yIHNhbHQgYW5kIHBlcnNvbmFsaXphdGlvbgorICAgIHBhcmFtZXRlcnMsIGhvd2V2ZXIsIGZvciBjb252ZW5pZW5jZSwgdGhpcyBpbXBsZW1lbnRhdGlvbiBhY2NlcHRzIGJ5dGUKKyAgICBzdHJpbmdzIG9mIGFueSBzaXplIHVwIHRvIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLiBJZiB0aGUgbGVuZ3RoIG9mIHRoZQorICAgIHBhcmFtZXRlciBpcyBsZXNzIHRoYW4gc3BlY2lmaWVkLCBpdCBpcyBwYWRkZWQgd2l0aCB6ZXJvcywgdGh1cywgZm9yCisgICAgZXhhbXBsZSwgYGBiJ3NhbHQnYGAgYW5kIGBgYidzYWx0XHgwMCdgYCBpcyB0aGUgc2FtZSB2YWx1ZS4gKFRoaXMgaXMgbm90CisgICAgdGhlIGNhc2UgZm9yICprZXkqLikKKworVGhlc2Ugc2l6ZXMgYXJlIGF2YWlsYWJsZSBhcyBtb2R1bGUgYGNvbnN0YW50c2BfIGRlc2NyaWJlZCBiZWxvdy4KKworQ29uc3RydWN0b3IgZnVuY3Rpb25zIGFsc28gYWNjZXB0IHRoZSBmb2xsb3dpbmcgdHJlZSBoYXNoaW5nIHBhcmFtZXRlcnM6CisKKyogKmZhbm91dCo6IGZhbm91dCAoMCB0byAyNTUsIDAgaWYgdW5saW1pdGVkLCAxIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmRlcHRoKjogbWF4aW1hbCBkZXB0aCBvZiB0cmVlICgxIHRvIDI1NSwgMjU1IGlmIHVubGltaXRlZCwgMSBpbgorICBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpsZWFmX3NpemUqOiBtYXhpbWFsIGJ5dGUgbGVuZ3RoIG9mIGxlYWYgKDAgdG8gMioqMzItMSwgMCBpZiB1bmxpbWl0ZWQgb3IgaW4KKyAgc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbm9kZV9vZmZzZXQqOiBub2RlIG9mZnNldCAoMCB0byAyKio2NC0xIGZvciBCTEFLRTJiLCAwIHRvIDIqKjQ4LTEgZm9yCisgIEJMQUtFMnMsIDAgZm9yIHRoZSBmaXJzdCwgbGVmdG1vc3QsIGxlYWYsIG9yIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKm5vZGVfZGVwdGgqOiBub2RlIGRlcHRoICgwIHRvIDI1NSwgMCBmb3IgbGVhdmVzLCBvciBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICppbm5lcl9zaXplKjogaW5uZXIgZGlnZXN0IHNpemUgKDAgdG8gNjQgZm9yIEJMQUtFMmIsIDAgdG8gMzIgZm9yCisgIEJMQUtFMnMsIDAgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbGFzdF9ub2RlKjogYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHByb2Nlc3NlZCBub2RlIGlzIHRoZSBsYXN0CisgIG9uZSAoYEZhbHNlYCBmb3Igc2VxdWVudGlhbCBtb2RlKS4KKworLi4gZmlndXJlOjogaGFzaGxpYi1ibGFrZTItdHJlZS5wbmcKKyAgIDphbHQ6IEV4cGxhbmF0aW9uIG9mIHRyZWUgbW9kZSBwYXJhbWV0ZXJzLgorCitTZWUgc2VjdGlvbiAyLjEwIGluIGBCTEFLRTIgc3BlY2lmaWNhdGlvbgorPGh0dHBzOi8vYmxha2UyLm5ldC9ibGFrZTJfMjAxMzAxMjkucGRmPmBfIGZvciBjb21wcmVoZW5zaXZlIHJldmlldyBvZiB0cmVlCitoYXNoaW5nLgorCisKK0NvbnN0YW50cworLS0tLS0tLS0tCisKKy4uIGRhdGE6OiBibGFrZTJiLlNBTFRfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuU0FMVF9TSVpFCisKK1NhbHQgbGVuZ3RoIChtYXhpbXVtIGxlbmd0aCBhY2NlcHRlZCBieSBjb25zdHJ1Y3RvcnMpLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLlBFUlNPTl9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5QRVJTT05fU0laRQorCitQZXJzb25hbGl6YXRpb24gc3RyaW5nIGxlbmd0aCAobWF4aW11bSBsZW5ndGggYWNjZXB0ZWQgYnkgY29uc3RydWN0b3JzKS4KKworCisuLiBkYXRhOjogYmxha2UyYi5NQVhfS0VZX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLk1BWF9LRVlfU0laRQorCitNYXhpbXVtIGtleSBzaXplLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLk1BWF9ESUdFU1RfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuTUFYX0RJR0VTVF9TSVpFCisKK01heGltdW0gZGlnZXN0IHNpemUgdGhhdCB0aGUgaGFzaCBmdW5jdGlvbiBjYW4gb3V0cHV0LgorCisKK0V4YW1wbGVzCis9PT09PT09PQorCitTaW1wbGUgaGFzaGluZworLS0tLS0tLS0tLS0tLS0KKworVG8gY2FsY3VsYXRlIGhhc2ggb2Ygc29tZSBkYXRhLCB5b3Ugc2hvdWxkIGZpcnN0IGNvbnN0cnVjdCBhIGhhc2ggb2JqZWN0IGJ5CitjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSBjb25zdHJ1Y3RvciBmdW5jdGlvbiAoOmZ1bmM6YGJsYWtlMmJgIG9yCis6ZnVuYzpgYmxha2Uyc2ApLCB0aGVuIHVwZGF0ZSBpdCB3aXRoIHRoZSBkYXRhIGJ5IGNhbGxpbmcgOm1ldGg6YHVwZGF0ZWAgb24gdGhlCitvYmplY3QsIGFuZCwgZmluYWxseSwgZ2V0IHRoZSBkaWdlc3Qgb3V0IG9mIHRoZSBvYmplY3QgYnkgY2FsbGluZworOm1ldGg6YGRpZ2VzdGAgKG9yIDptZXRoOmBoZXhkaWdlc3RgIGZvciBoZXgtZW5jb2RlZCBzdHJpbmcpLgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBoID0gYmxha2UyYigpCisgICAgPj4+IGgudXBkYXRlKGInSGVsbG8gd29ybGQnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzZmZjg0M2JhNjg1ODQyYWE4MjAzMWQzZjUzYzQ4YjY2MzI2ZGY3NjM5YTYzZDEyODk3NGM1YzE0ZjMxYTBmMzMzNDNhOGM2NTU1MTEzNGVkMWFlMGYyYjBkZDJiYjQ5NWRjODEwMzllM2VlYjBhYTFiYjAzODhiYmVhYzI5MTgzJworCisKK0FzIGEgc2hvcnRjdXQsIHlvdSBjYW4gcGFzcyB0aGUgZmlyc3QgY2h1bmsgb2YgZGF0YSB0byB1cGRhdGUgZGlyZWN0bHkgdG8gdGhlCitjb25zdHJ1Y3RvciBhcyB0aGUgZmlyc3QgYXJndW1lbnQgKG9yIGFzICpkYXRhKiBrZXl3b3JkIGFyZ3VtZW50KToKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gYmxha2UyYihiJ0hlbGxvIHdvcmxkJykuaGV4ZGlnZXN0KCkKKyAgICAnNmZmODQzYmE2ODU4NDJhYTgyMDMxZDNmNTNjNDhiNjYzMjZkZjc2MzlhNjNkMTI4OTc0YzVjMTRmMzFhMGYzMzM0M2E4YzY1NTUxMTM0ZWQxYWUwZjJiMGRkMmJiNDk1ZGM4MTAzOWUzZWViMGFhMWJiMDM4OGJiZWFjMjkxODMnCisKK1lvdSBjYW4gY2FsbCA6bWV0aDpgaGFzaC51cGRhdGVgIGFzIG1hbnkgdGltZXMgYXMgeW91IG5lZWQgdG8gaXRlcmF0aXZlbHkKK3VwZGF0ZSB0aGUgaGFzaDoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gaXRlbXMgPSBbYidIZWxsbycsIGInICcsIGInd29ybGQnXQorICAgID4+PiBoID0gYmxha2UyYigpCisgICAgPj4+IGZvciBpdGVtIGluIGl0ZW1zOgorICAgIC4uLiAgICAgaC51cGRhdGUoaXRlbSkKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICc2ZmY4NDNiYTY4NTg0MmFhODIwMzFkM2Y1M2M0OGI2NjMyNmRmNzYzOWE2M2QxMjg5NzRjNWMxNGYzMWEwZjMzMzQzYThjNjU1NTExMzRlZDFhZTBmMmIwZGQyYmI0OTVkYzgxMDM5ZTNlZWIwYWExYmIwMzg4YmJlYWMyOTE4MycKKworCitVc2luZyBkaWZmZXJlbnQgZGlnZXN0IHNpemVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0JMQUtFMiBoYXMgY29uZmlndXJhYmxlIHNpemUgb2YgZGlnZXN0cyB1cCB0byA2NCBieXRlcyBmb3IgQkxBS0UyYiBhbmQgdXAgdG8gMzIKK2J5dGVzIGZvciBCTEFLRTJzLiBGb3IgZXhhbXBsZSwgdG8gcmVwbGFjZSBTSEEtMSB3aXRoIEJMQUtFMmIgd2l0aG91dCBjaGFuZ2luZwordGhlIHNpemUgb2Ygb3V0cHV0LCB3ZSBjYW4gdGVsbCBCTEFLRTJiIHRvIHByb2R1Y2UgMjAtYnl0ZSBkaWdlc3RzOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBoID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0yMCkKKyAgICA+Pj4gaC51cGRhdGUoYidSZXBsYWNpbmcgU0hBMSB3aXRoIHRoZSBtb3JlIHNlY3VyZSBmdW5jdGlvbicpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnZDI0ZjI2Y2Y4ZGU2NjQ3MmQ1OGQ0ZTFiMTc3NGI0YzkxNThiMWY0YycKKyAgICA+Pj4gaC5kaWdlc3Rfc2l6ZQorICAgIDIwCisgICAgPj4+IGxlbihoLmRpZ2VzdCgpKQorICAgIDIwCisKK0hhc2ggb2JqZWN0cyB3aXRoIGRpZmZlcmVudCBkaWdlc3Qgc2l6ZXMgaGF2ZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXRzCisoc2hvcnRlciBoYXNoZXMgYXJlICpub3QqIHByZWZpeGVzIG9mIGxvbmdlciBoYXNoZXMpOyBCTEFLRTJiIGFuZCBCTEFLRTJzCitwcm9kdWNlIGRpZmZlcmVudCBvdXRwdXRzIGV2ZW4gaWYgdGhlIG91dHB1dCBsZW5ndGggaXMgdGhlIHNhbWU6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiLCBibGFrZTJzCisgICAgPj4+IGJsYWtlMmIoZGlnZXN0X3NpemU9MTApLmhleGRpZ2VzdCgpCisgICAgJzZmYTFkOGZjZmQ3MTkwNDZkNzYyJworICAgID4+PiBibGFrZTJiKGRpZ2VzdF9zaXplPTExKS5oZXhkaWdlc3QoKQorICAgICdlYjZlYzE1ZGFmOTU0NjI1NGYwODA5JworICAgID4+PiBibGFrZTJzKGRpZ2VzdF9zaXplPTEwKS5oZXhkaWdlc3QoKQorICAgICcxYmYyMWE5OGM3OGExYzM3NmFlOScKKyAgICA+Pj4gYmxha2UycyhkaWdlc3Rfc2l6ZT0xMSkuaGV4ZGlnZXN0KCkKKyAgICAnNTY3MDA0YmY5NmU0YTI1NzczZWJmNCcKKworCitLZXllZCBoYXNoaW5nCistLS0tLS0tLS0tLS0tCisKK0tleWVkIGhhc2hpbmcgY2FuIGJlIHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uIGFzIGEgZmFzdGVyIGFuZCBzaW1wbGVyCityZXBsYWNlbWVudCBmb3IgYEhhc2gtYmFzZWQgbWVzc2FnZSBhdXRoZW50aWNhdGlvbiBjb2RlCis8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXNoLWJhc2VkX21lc3NhZ2VfYXV0aGVudGljYXRpb25fY29kZT5gXyAoSE1BQykuCitCTEFLRTIgY2FuIGJlIHNlY3VyZWx5IHVzZWQgaW4gcHJlZml4LU1BQyBtb2RlIHRoYW5rcyB0byB0aGUKK2luZGlmZmVyZW50aWFiaWxpdHkgcHJvcGVydHkgaW5oZXJpdGVkIGZyb20gQkxBS0UuCisKK1RoaXMgZXhhbXBsZSBzaG93cyBob3cgdG8gZ2V0IGEgKGhleC1lbmNvZGVkKSAxMjgtYml0IGF1dGhlbnRpY2F0aW9uIGNvZGUgZm9yCittZXNzYWdlIGBgYidtZXNzYWdlIGRhdGEnYGAgd2l0aCBrZXkgYGBiJ3BzZXVkb3JhbmRvbSBrZXknYGA6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBoID0gYmxha2UyYihrZXk9Yidwc2V1ZG9yYW5kb20ga2V5JywgZGlnZXN0X3NpemU9MTYpCisgICAgPj4+IGgudXBkYXRlKGInbWVzc2FnZSBkYXRhJykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICczZDM2M2ZmNzQwMWUwMjAyNmY0YTQ2ODdkNDg2M2NlZCcKKworCitBcyBhIHByYWN0aWNhbCBleGFtcGxlLCBhIHdlYiBhcHBsaWNhdGlvbiBjYW4gc3ltbWV0cmljYWxseSBzaWduIGNvb2tpZXMgc2VudAordG8gdXNlcnMgYW5kIGxhdGVyIHZlcmlmeSB0aGVtIHRvIG1ha2Ugc3VyZSB0aGV5IHdlcmVuJ3QgdGFtcGVyZWQgd2l0aDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGZyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QKKyAgICA+Pj4KKyAgICA+Pj4gU0VDUkVUX0tFWSA9IGIncHNldWRvcmFuZG9tbHkgZ2VuZXJhdGVkIHNlcnZlciBzZWNyZXQga2V5JworICAgID4+PiBBVVRIX1NJWkUgPSAxNgorICAgID4+PgorICAgID4+PiBkZWYgc2lnbihjb29raWUpOgorICAgIC4uLiAgICAgaCA9IGJsYWtlMmIoZGF0YT1jb29raWUsIGRpZ2VzdF9zaXplPUFVVEhfU0laRSwga2V5PVNFQ1JFVF9LRVkpCisgICAgLi4uICAgICByZXR1cm4gaC5oZXhkaWdlc3QoKQorICAgID4+PgorICAgID4+PiBjb29raWUgPSBiJ3VzZXI6dmF0cm9nYXNhYycKKyAgICA+Pj4gc2lnID0gc2lnbihjb29raWUpCisgICAgPj4+IHByaW50KCJ7MH0sezF9Ii5mb3JtYXQoY29va2llLmRlY29kZSgndXRmLTgnKSwgc2lnKSkKKyAgICB1c2VyOnZhdHJvZ2FzYWMsMzQ5Y2Y5MDQ1MzM3NjdlZDJkNzU1Mjc5YThkZjg0ZDAKKyAgICA+Pj4gY29tcGFyZV9kaWdlc3QoY29va2llLCBzaWcpCisgICAgVHJ1ZQorICAgID4+PiBjb21wYXJlX2RpZ2VzdChiJ3VzZXI6cG9saWNhamFjJywgc2lnKQorICAgIEZhbHNlCisgICAgPj4+IGNvbXBhcmVfZGlnZXN0eShjb29raWUsICcwMTAyMDMwNDA1MDYwNzA4MDkwYTBiMGMwZDBlMGYwMCcpCisgICAgRmFsc2UKKworRXZlbiB0aG91Z2ggdGhlcmUncyBhIG5hdGl2ZSBrZXllZCBoYXNoaW5nIG1vZGUsIEJMQUtFMiBjYW4sIG9mIGNvdXJzZSwgYmUgdXNlZAoraW4gSE1BQyBjb25zdHJ1Y3Rpb24gd2l0aCA6bW9kOmBobWFjYCBtb2R1bGU6OgorCisgICAgPj4+IGltcG9ydCBobWFjLCBoYXNobGliCisgICAgPj4+IG0gPSBobWFjLm5ldyhiJ3NlY3JldCBrZXknLCBkaWdlc3Rtb2Q9aGFzaGxpYi5ibGFrZTJzKQorICAgID4+PiBtLnVwZGF0ZShiJ21lc3NhZ2UnKQorICAgID4+PiBtLmhleGRpZ2VzdCgpCisgICAgJ2UzYzgxMDI4NjhkMjhiNWZmODVmYzM1ZGRhMDczMjk5NzBkMWEwMWUyNzNjMzc0ODEzMjZmZTBjODYxYzgxNDInCisKKworUmFuZG9taXplZCBoYXNoaW5nCistLS0tLS0tLS0tLS0tLS0tLS0KKworQnkgc2V0dGluZyAqc2FsdCogcGFyYW1ldGVyIHVzZXJzIGNhbiBpbnRyb2R1Y2UgcmFuZG9taXphdGlvbiB0byB0aGUgaGFzaAorZnVuY3Rpb24uIFJhbmRvbWl6ZWQgaGFzaGluZyBpcyB1c2VmdWwgZm9yIHByb3RlY3RpbmcgYWdhaW5zdCBjb2xsaXNpb24gYXR0YWNrcworb24gdGhlIGhhc2ggZnVuY3Rpb24gdXNlZCBpbiBkaWdpdGFsIHNpZ25hdHVyZXMuCisKKyAgICBSYW5kb21pemVkIGhhc2hpbmcgaXMgZGVzaWduZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgb25lIHBhcnR5LCB0aGUgbWVzc2FnZQorICAgIHByZXBhcmVyLCBnZW5lcmF0ZXMgYWxsIG9yIHBhcnQgb2YgYSBtZXNzYWdlIHRvIGJlIHNpZ25lZCBieSBhIHNlY29uZAorICAgIHBhcnR5LCB0aGUgbWVzc2FnZSBzaWduZXIuIElmIHRoZSBtZXNzYWdlIHByZXBhcmVyIGlzIGFibGUgdG8gZmluZAorICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbiBjb2xsaXNpb25zIChpLmUuLCB0d28gbWVzc2FnZXMgcHJvZHVjaW5nIHRoZQorICAgIHNhbWUgaGFzaCB2YWx1ZSksIHRoZW4gc2hlIG1pZ2h0IHByZXBhcmUgbWVhbmluZ2Z1bCB2ZXJzaW9ucyBvZiB0aGUgbWVzc2FnZQorICAgIHRoYXQgd291bGQgcHJvZHVjZSB0aGUgc2FtZSBoYXNoIHZhbHVlIGFuZCBkaWdpdGFsIHNpZ25hdHVyZSwgYnV0IHdpdGgKKyAgICBkaWZmZXJlbnQgcmVzdWx0cyAoZS5nLiwgdHJhbnNmZXJyaW5nICQxLDAwMCwwMDAgdG8gYW4gYWNjb3VudCwgcmF0aGVyIHRoYW4KKyAgICAkMTApLiBDcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb25zIGhhdmUgYmVlbiBkZXNpZ25lZCB3aXRoIGNvbGxpc2lvbgorICAgIHJlc2lzdGFuY2UgYXMgYSBtYWpvciBnb2FsLCBidXQgdGhlIGN1cnJlbnQgY29uY2VudHJhdGlvbiBvbiBhdHRhY2tpbmcKKyAgICBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb25zIG1heSByZXN1bHQgaW4gYSBnaXZlbiBjcnlwdG9ncmFwaGljIGhhc2gKKyAgICBmdW5jdGlvbiBwcm92aWRpbmcgbGVzcyBjb2xsaXNpb24gcmVzaXN0YW5jZSB0aGFuIGV4cGVjdGVkLiBSYW5kb21pemVkCisgICAgaGFzaGluZyBvZmZlcnMgdGhlIHNpZ25lciBhZGRpdGlvbmFsIHByb3RlY3Rpb24gYnkgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2QKKyAgICB0aGF0IGEgcHJlcGFyZXIgY2FuIGdlbmVyYXRlIHR3byBvciBtb3JlIG1lc3NhZ2VzIHRoYXQgdWx0aW1hdGVseSB5aWVsZCB0aGUKKyAgICBzYW1lIGhhc2ggdmFsdWUgZHVyaW5nIHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBnZW5lcmF0aW9uIHByb2Nlc3Mg4oCTIGV2ZW4gaWYKKyAgICBpdCBpcyBwcmFjdGljYWwgdG8gZmluZCBjb2xsaXNpb25zIGZvciB0aGUgaGFzaCBmdW5jdGlvbi4gSG93ZXZlciwgdGhlIHVzZQorICAgIG9mIHJhbmRvbWl6ZWQgaGFzaGluZyBtYXkgcmVkdWNlIHRoZSBhbW91bnQgb2Ygc2VjdXJpdHkgcHJvdmlkZWQgYnkgYQorICAgIGRpZ2l0YWwgc2lnbmF0dXJlIHdoZW4gYWxsIHBvcnRpb25zIG9mIHRoZSBtZXNzYWdlIGFyZSBwcmVwYXJlZAorICAgIGJ5IHRoZSBzaWduZXIuCisKKyAgICAoYE5JU1QgU1AtODAwLTEwNiAiUmFuZG9taXplZCBIYXNoaW5nIGZvciBEaWdpdGFsIFNpZ25hdHVyZXMiCisgICAgPGh0dHA6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9uaXN0cHVicy84MDAtMTA2L05JU1QtU1AtODAwLTEwNi5wZGY+YF8pCisKK0luIEJMQUtFMiB0aGUgc2FsdCBpcyBwcm9jZXNzZWQgYXMgYSBvbmUtdGltZSBpbnB1dCB0byB0aGUgaGFzaCBmdW5jdGlvbiBkdXJpbmcKK2luaXRpYWxpemF0aW9uLCByYXRoZXIgdGhhbiBhcyBhbiBpbnB1dCB0byBlYWNoIGNvbXByZXNzaW9uIGZ1bmN0aW9uLgorCisuLiB3YXJuaW5nOjoKKworICAgICpTYWx0ZWQgaGFzaGluZyogKG9yIGp1c3QgaGFzaGluZykgd2l0aCBCTEFLRTIgb3IgYW55IG90aGVyIGdlbmVyYWwtcHVycG9zZQorICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbiwgc3VjaCBhcyBTSEEtMjU2LCBpcyBub3Qgc3VpdGFibGUgZm9yIGhhc2hpbmcKKyAgICBwYXNzd29yZHMuICBTZWUgYEJMQUtFMiBGQVEgPGh0dHBzOi8vYmxha2UyLm5ldC8jcWE+YF8gZm9yIG1vcmUKKyAgICBpbmZvcm1hdGlvbi4KKy4uCisKKyAgICA+Pj4gaW1wb3J0IG9zCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBtc2cgPSBiJ3NvbWUgbWVzc2FnZScKKyAgICA+Pj4gIyBDYWxjdWxhdGUgdGhlIGZpcnN0IGhhc2ggd2l0aCBhIHJhbmRvbSBzYWx0LgorICAgID4+PiBzYWx0MSA9IG9zLnVyYW5kb20oYmxha2UyYi5TQUxUX1NJWkUpCisgICAgPj4+IGgxID0gYmxha2UyYihzYWx0PXNhbHQxKQorICAgID4+PiBoMS51cGRhdGUobXNnKQorICAgID4+PiAjIENhbGN1bGF0ZSB0aGUgc2Vjb25kIGhhc2ggd2l0aCBhIGRpZmZlcmVudCByYW5kb20gc2FsdC4KKyAgICA+Pj4gc2FsdDIgPSBvcy51cmFuZG9tKGJsYWtlMmIuU0FMVF9TSVpFKQorICAgID4+PiBoMiA9IGJsYWtlMmIoc2FsdD1zYWx0MikKKyAgICA+Pj4gaDIudXBkYXRlKG1zZykKKyAgICA+Pj4gIyBUaGUgZGlnZXN0cyBhcmUgZGlmZmVyZW50LgorICAgID4+PiBoMS5kaWdlc3QoKSAhPSBoMi5kaWdlc3QoKQorICAgIFRydWUKKworCitQZXJzb25hbGl6YXRpb24KKy0tLS0tLS0tLS0tLS0tLQorCitTb21ldGltZXMgaXQgaXMgdXNlZnVsIHRvIGZvcmNlIGhhc2ggZnVuY3Rpb24gdG8gcHJvZHVjZSBkaWZmZXJlbnQgZGlnZXN0cyBmb3IKK3RoZSBzYW1lIGlucHV0IGZvciBkaWZmZXJlbnQgcHVycG9zZXMuIFF1b3RpbmcgdGhlIGF1dGhvcnMgb2YgdGhlIFNrZWluIGhhc2gKK2Z1bmN0aW9uOgorCisgICAgV2UgcmVjb21tZW5kIHRoYXQgYWxsIGFwcGxpY2F0aW9uIGRlc2lnbmVycyBzZXJpb3VzbHkgY29uc2lkZXIgZG9pbmcgdGhpczsKKyAgICB3ZSBoYXZlIHNlZW4gbWFueSBwcm90b2NvbHMgd2hlcmUgYSBoYXNoIHRoYXQgaXMgY29tcHV0ZWQgaW4gb25lIHBhcnQgb2YKKyAgICB0aGUgcHJvdG9jb2wgY2FuIGJlIHVzZWQgaW4gYW4gZW50aXJlbHkgZGlmZmVyZW50IHBhcnQgYmVjYXVzZSB0d28gaGFzaAorICAgIGNvbXB1dGF0aW9ucyB3ZXJlIGRvbmUgb24gc2ltaWxhciBvciByZWxhdGVkIGRhdGEsIGFuZCB0aGUgYXR0YWNrZXIgY2FuCisgICAgZm9yY2UgdGhlIGFwcGxpY2F0aW9uIHRvIG1ha2UgdGhlIGhhc2ggaW5wdXRzIHRoZSBzYW1lLiBQZXJzb25hbGl6aW5nIGVhY2gKKyAgICBoYXNoIGZ1bmN0aW9uIHVzZWQgaW4gdGhlIHByb3RvY29sIHN1bW1hcmlseSBzdG9wcyB0aGlzIHR5cGUgb2YgYXR0YWNrLgorCisgICAgKGBUaGUgU2tlaW4gSGFzaCBGdW5jdGlvbiBGYW1pbHkKKyAgICA8aHR0cDovL3d3dy5za2Vpbi1oYXNoLmluZm8vc2l0ZXMvZGVmYXVsdC9maWxlcy9za2VpbjEuMy5wZGY+YF8sCisgICAgcC4gMjEpCisKK0JMQUtFMiBjYW4gYmUgcGVyc29uYWxpemVkIGJ5IHBhc3NpbmcgYnl0ZXMgdG8gdGhlICpwZXJzb24qIGFyZ3VtZW50OjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gRklMRVNfSEFTSF9QRVJTT04gPSBiJ015QXBwIEZpbGVzIEhhc2gnCisgICAgPj4+IEJMT0NLX0hBU0hfUEVSU09OID0gYidNeUFwcCBCbG9jayBIYXNoJworICAgID4+PiBoID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0zMiwgcGVyc29uPUZJTEVTX0hBU0hfUEVSU09OKQorICAgID4+PiBoLnVwZGF0ZShiJ3RoZSBzYW1lIGNvbnRlbnQnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzIwZDljZDAyNGQ0ZmIwODZhYWU4MTlhMTQzMmRkMjQ2NmRlMTI5NDc4MzFiNzVjNWEzMGNmMjY3NjA5NWQzYjQnCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTMyLCBwZXJzb249QkxPQ0tfSEFTSF9QRVJTT04pCisgICAgPj4+IGgudXBkYXRlKGIndGhlIHNhbWUgY29udGVudCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnY2Y2OGZiNTc2MWI5YzQ0ZTc4NzhiZmIyYzRjOWFlYTUyMjY0YTgwYjc1MDA1ZTY1NjE5Nzc4ZGU1OWYzODNhMycKKworUGVyc29uYWxpemF0aW9uIHRvZ2V0aGVyIHdpdGggdGhlIGtleWVkIG1vZGUgY2FuIGFsc28gYmUgdXNlZCB0byBkZXJpdmUgZGlmZmVyZW50CitrZXlzIGZyb20gYSBzaW5nbGUgb25lLgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UycworICAgID4+PiBmcm9tIGJhc2U2NCBpbXBvcnQgYjY0ZGVjb2RlLCBiNjRlbmNvZGUKKyAgICA+Pj4gb3JpZ19rZXkgPSBiNjRkZWNvZGUoYidSbTVFUEphaTcycWNLM1JHQnBXM3ZQTmZaeTVPWm90aFkra0hZNmgyMUtNPScpCisgICAgPj4+IGVuY19rZXkgPSBibGFrZTJzKGtleT1vcmlnX2tleSwgcGVyc29uPWIna0VuY3J5cHQnKS5kaWdlc3QoKQorICAgID4+PiBtYWNfa2V5ID0gYmxha2UycyhrZXk9b3JpZ19rZXksIHBlcnNvbj1iJ2tNQUMnKS5kaWdlc3QoKQorICAgID4+PiBwcmludChiNjRlbmNvZGUoZW5jX2tleSkuZGVjb2RlKCd1dGYtOCcpKQorICAgIHJiUGIxNVMvWjl0K2FnZmZubzV3dWhCNzdWYlJpNkY5SXYycUl4VTdXSHc9CisgICAgPj4+IHByaW50KGI2NGVuY29kZShtYWNfa2V5KS5kZWNvZGUoJ3V0Zi04JykpCisgICAgRzlHdEhGRTFZbHVYWTF6V1BsWWsxZS9uV2Z1MFdTRWIwS1JjamhEZVAvbz0KKworVHJlZSBtb2RlCistLS0tLS0tLS0KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaGFzaGluZyBhIG1pbmltYWwgdHJlZSB3aXRoIHR3byBsZWFmIG5vZGVzOjoKKworICAgICAgIDEwCisgICAgICAvICBcCisgICAgIDAwICAwMQorCitUaGlzIGV4YW1wbGUgdXNlcyA2NC1ieXRlIGludGVybmFsIGRpZ2VzdHMsIGFuZCByZXR1cm5zIHRoZSAzMi1ieXRlIGZpbmFsCitkaWdlc3Q6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PgorICAgID4+PiBGQU5PVVQgPSAyCisgICAgPj4+IERFUFRIID0gMgorICAgID4+PiBMRUFGX1NJWkUgPSA0MDk2CisgICAgPj4+IElOTkVSX1NJWkUgPSA2NAorICAgID4+PgorICAgID4+PiBidWYgPSBieXRlYXJyYXkoNjAwMCkKKyAgICA+Pj4KKyAgICA+Pj4gIyBMZWZ0IGxlYWYKKyAgICAuLi4gaDAwID0gYmxha2UyYihidWZbMDpMRUFGX1NJWkVdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwKKyAgICAuLi4gICAgICAgICAgICAgICBsZWFmX3NpemU9TEVBRl9TSVpFLCBpbm5lcl9zaXplPUlOTkVSX1NJWkUsCisgICAgLi4uICAgICAgICAgICAgICAgbm9kZV9vZmZzZXQ9MCwgbm9kZV9kZXB0aD0wLCBsYXN0X25vZGU9RmFsc2UpCisgICAgPj4+ICMgUmlnaHQgbGVhZgorICAgIC4uLiBoMDEgPSBibGFrZTJiKGJ1ZltMRUFGX1NJWkU6XSwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsCisgICAgLi4uICAgICAgICAgICAgICAgbGVhZl9zaXplPUxFQUZfU0laRSwgaW5uZXJfc2l6ZT1JTk5FUl9TSVpFLAorICAgIC4uLiAgICAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTEsIG5vZGVfZGVwdGg9MCwgbGFzdF9ub2RlPVRydWUpCisgICAgPj4+ICMgUm9vdCBub2RlCisgICAgLi4uIGgxMCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MzIsIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILAorICAgIC4uLiAgICAgICAgICAgICAgIGxlYWZfc2l6ZT1MRUFGX1NJWkUsIGlubmVyX3NpemU9SU5ORVJfU0laRSwKKyAgICAuLi4gICAgICAgICAgICAgICBub2RlX29mZnNldD0wLCBub2RlX2RlcHRoPTEsIGxhc3Rfbm9kZT1UcnVlKQorICAgID4+PiBoMTAudXBkYXRlKGgwMC5kaWdlc3QoKSkKKyAgICA+Pj4gaDEwLnVwZGF0ZShoMDEuZGlnZXN0KCkpCisgICAgPj4+IGgxMC5oZXhkaWdlc3QoKQorICAgICczYWQyYTliMzdjNjA3MGUzNzRjN2E4YzUwOGZlMjBjYTg2YjZlZDU0ZTI4NmU5M2EwMzE4ZTk1ZTg4MWRiNWFhJworCitDcmVkaXRzCis9PT09PT09CisKK0JMQUtFMl8gd2FzIGRlc2lnbmVkIGJ5ICpKZWFuLVBoaWxpcHBlIEF1bWFzc29uKiwgKlNhbXVlbCBOZXZlcyosICpab29rbworV2lsY294LU8nSGVhcm4qLCBhbmQgKkNocmlzdGlhbiBXaW5uZXJsZWluKiBiYXNlZCBvbiBTSEEtM18gZmluYWxpc3QgQkxBS0VfCitjcmVhdGVkIGJ5ICpKZWFuLVBoaWxpcHBlIEF1bWFzc29uKiwgKkx1Y2EgSGVuemVuKiwgKldpbGxpIE1laWVyKiwgYW5kCisqUmFwaGFlbCBDLi1XLiBQaGFuKi4KKworSXQgdXNlcyBjb3JlIGFsZ29yaXRobSBmcm9tIENoYUNoYV8gY2lwaGVyIGRlc2lnbmVkIGJ5ICpEYW5pZWwgSi4gIEJlcm5zdGVpbiouCisKK1RoZSBzdGRsaWIgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gcHlibGFrZTJfIG1vZHVsZS4gSXQgd2FzIHdyaXR0ZW4gYnkKKypEbWl0cnkgQ2hlc3RueWtoKiBiYXNlZCBvbiBDIGltcGxlbWVudGF0aW9uIHdyaXR0ZW4gYnkgKlNhbXVlbCBOZXZlcyouIFRoZQorZG9jdW1lbnRhdGlvbiB3YXMgY29waWVkIGZyb20gcHlibGFrZTJfIGFuZCB3cml0dGVuIGJ5ICpEbWl0cnkgQ2hlc3RueWtoKi4KKworVGhlIEMgY29kZSB3YXMgcGFydGx5IHJld3JpdHRlbiBmb3IgUHl0aG9uIGJ5ICpDaHJpc3RpYW4gSGVpbWVzKi4KKworVGhlIGZvbGxvd2luZyBwdWJsaWMgZG9tYWluIGRlZGljYXRpb24gYXBwbGllcyBmb3IgYm90aCBDIGhhc2ggZnVuY3Rpb24KK2ltcGxlbWVudGF0aW9uLCBleHRlbnNpb24gY29kZSwgYW5kIHRoaXMgZG9jdW1lbnRhdGlvbjoKKworICAgVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBhdXRob3IocykgaGF2ZSBkZWRpY2F0ZWQgYWxsIGNvcHlyaWdodAorICAgYW5kIHJlbGF0ZWQgYW5kIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGlzIHNvZnR3YXJlIHRvIHRoZSBwdWJsaWMgZG9tYWluCisgICB3b3JsZHdpZGUuIFRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgd2l0aG91dCBhbnkgd2FycmFudHkuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIENDMCBQdWJsaWMgRG9tYWluIERlZGljYXRpb24gYWxvbmcKKyAgIHdpdGggdGhpcyBzb2Z0d2FyZS4gSWYgbm90LCBzZWUKKyAgIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8uCisKK1RoZSBmb2xsb3dpbmcgcGVvcGxlIGhhdmUgaGVscGVkIHdpdGggZGV2ZWxvcG1lbnQgb3IgY29udHJpYnV0ZWQgdGhlaXIgY2hhbmdlcwordG8gdGhlIHByb2plY3QgYW5kIHRoZSBwdWJsaWMgZG9tYWluIGFjY29yZGluZyB0byB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBQdWJsaWMKK0RvbWFpbiBEZWRpY2F0aW9uIDEuMCBVbml2ZXJzYWw6CisKKyogKkFsZXhhbmRyIFNva29sb3Zza2l5KgorCisuLiBzZWVhbHNvOjogT2ZmaWNpYWwgQkxBS0UyIHdlYnNpdGU6IGh0dHBzOi8vYmxha2UyLm5ldAorCisuLiBfUkZDLTc2OTM6IGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NjkzCisuLiBfQkxBS0UyOiBodHRwczovL2JsYWtlMi5uZXQKKy4uIF9ITUFDOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYXNoLWJhc2VkX21lc3NhZ2VfYXV0aGVudGljYXRpb25fY29kZQorLi4gX0JMQUtFOiBodHRwczovLzEzMTAwMi5uZXQvYmxha2UvCisuLiBfU0hBLTM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL05JU1RfaGFzaF9mdW5jdGlvbl9jb21wZXRpdGlvbgorLi4gX0NoYUNoYTogaHR0cHM6Ly9jci55cC50by9jaGFjaGEuaHRtbAorLi4gX3B5Ymxha2UyOiBodHRwczovL3B5dGhvbmhvc3RlZC5vcmcvcHlibGFrZTIvCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2hhc2hsaWIucnN0IGIvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QKaW5kZXggYTJlOTZjYS4uMmNiM2M3OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QKQEAgLTQ0LDggKzQ0LDggQEAKIC0tLS0tLS0tLS0tLS0tLQogCiBUaGVyZSBpcyBvbmUgY29uc3RydWN0b3IgbWV0aG9kIG5hbWVkIGZvciBlYWNoIHR5cGUgb2YgOmRmbjpgaGFzaGAuICBBbGwgcmV0dXJuCi1hIGhhc2ggb2JqZWN0IHdpdGggdGhlIHNhbWUgc2ltcGxlIGludGVyZmFjZS4gRm9yIGV4YW1wbGU6IHVzZSA6ZnVuYzpgc2hhMWAgdG8KLWNyZWF0ZSBhIFNIQTEgaGFzaCBvYmplY3QuIFlvdSBjYW4gbm93IGZlZWQgdGhpcyBvYmplY3Qgd2l0aCA6dGVybTpgYnl0ZXMtbGlrZQorYSBoYXNoIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNpbXBsZSBpbnRlcmZhY2UuIEZvciBleGFtcGxlOiB1c2UgOmZ1bmM6YHNoYTI1NmAgdG8KK2NyZWF0ZSBhIFNIQS0yNTYgaGFzaCBvYmplY3QuIFlvdSBjYW4gbm93IGZlZWQgdGhpcyBvYmplY3Qgd2l0aCA6dGVybTpgYnl0ZXMtbGlrZQogb2JqZWN0cyA8Ynl0ZXMtbGlrZSBvYmplY3Q+YCAobm9ybWFsbHkgOmNsYXNzOmBieXRlc2ApIHVzaW5nIHRoZSA6bWV0aDpgdXBkYXRlYCBtZXRob2QuCiBBdCBhbnkgcG9pbnQgeW91IGNhbiBhc2sgaXQgZm9yIHRoZSA6ZGZuOmBkaWdlc3RgIG9mIHRoZQogY29uY2F0ZW5hdGlvbiBvZiB0aGUgZGF0YSBmZWQgdG8gaXQgc28gZmFyIHVzaW5nIHRoZSA6bWV0aDpgZGlnZXN0YCBvcgpAQCAtNjQsMjEgKzY0LDMzIEBACiAuLiBpbmRleDo6IHNpbmdsZTogT3BlblNTTDsgKHVzZSBpbiBtb2R1bGUgaGFzaGxpYikKIAogQ29uc3RydWN0b3JzIGZvciBoYXNoIGFsZ29yaXRobXMgdGhhdCBhcmUgYWx3YXlzIHByZXNlbnQgaW4gdGhpcyBtb2R1bGUgYXJlCi06ZnVuYzpgbWQ1YCwgOmZ1bmM6YHNoYTFgLCA6ZnVuYzpgc2hhMjI0YCwgOmZ1bmM6YHNoYTI1NmAsIDpmdW5jOmBzaGEzODRgLAotYW5kIDpmdW5jOmBzaGE1MTJgLiBBZGRpdGlvbmFsIGFsZ29yaXRobXMgbWF5IGFsc28gYmUgYXZhaWxhYmxlIGRlcGVuZGluZyB1cG9uCi10aGUgT3BlblNTTCBsaWJyYXJ5IHRoYXQgUHl0aG9uIHVzZXMgb24geW91ciBwbGF0Zm9ybS4KKzpmdW5jOmBzaGExYCwgOmZ1bmM6YHNoYTIyNGAsIDpmdW5jOmBzaGEyNTZgLCA6ZnVuYzpgc2hhMzg0YCwKKzpmdW5jOmBzaGE1MTJgLCA6ZnVuYzpgYmxha2UyYmAsIGFuZCA6ZnVuYzpgYmxha2Uyc2AuCis6ZnVuYzpgbWQ1YCBpcyBub3JtYWxseSBhdmFpbGFibGUgYXMgd2VsbCwgdGhvdWdoIGl0CittYXkgYmUgbWlzc2luZyBpZiB5b3UgYXJlIHVzaW5nIGEgcmFyZSAiRklQUyBjb21wbGlhbnQiIGJ1aWxkIG9mIFB5dGhvbi4KK0FkZGl0aW9uYWwgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUgZGVwZW5kaW5nIHVwb24gdGhlIE9wZW5TU0wKK2xpYnJhcnkgdGhhdCBQeXRob24gdXNlcyBvbiB5b3VyIHBsYXRmb3JtLiBPbiBtb3N0IHBsYXRmb3JtcyB0aGUKKzpmdW5jOmBzaGEzXzIyNGAsIDpmdW5jOmBzaGEzXzI1NmAsIDpmdW5jOmBzaGEzXzM4NGAsIDpmdW5jOmBzaGEzXzUxMmAsCis6ZnVuYzpgc2hha2VfMTI4YCwgOmZ1bmM6YHNoYWtlXzI1NmAgYXJlIGFsc28gYXZhaWxhYmxlLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgIFNIQTMgKEtlY2NhaykgYW5kIFNIQUtFIGNvbnN0cnVjdG9ycyA6ZnVuYzpgc2hhM18yMjRgLCA6ZnVuYzpgc2hhM18yNTZgLAorICAgOmZ1bmM6YHNoYTNfMzg0YCwgOmZ1bmM6YHNoYTNfNTEyYCwgOmZ1bmM6YHNoYWtlXzEyOGAsIDpmdW5jOmBzaGFrZV8yNTZgLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgIDpmdW5jOmBibGFrZTJiYCBhbmQgOmZ1bmM6YGJsYWtlMnNgIHdlcmUgYWRkZWQuCiAKIEZvciBleGFtcGxlLCB0byBvYnRhaW4gdGhlIGRpZ2VzdCBvZiB0aGUgYnl0ZSBzdHJpbmcgYGBiJ05vYm9keSBpbnNwZWN0cyB0aGUKIHNwYW1taXNoIHJlcGV0aXRpb24nYGA6OgogCiAgICA+Pj4gaW1wb3J0IGhhc2hsaWIKLSAgID4+PiBtID0gaGFzaGxpYi5tZDUoKQorICAgPj4+IG0gPSBoYXNobGliLnNoYTI1NigpCiAgICA+Pj4gbS51cGRhdGUoYiJOb2JvZHkgaW5zcGVjdHMiKQogICAgPj4+IG0udXBkYXRlKGIiIHRoZSBzcGFtbWlzaCByZXBldGl0aW9uIikKICAgID4+PiBtLmRpZ2VzdCgpCi0gICBiJ1x4YmJkXHg5Y1x4ODNceGRkXHgxZVx4YTVceGM5XHhkOVx4ZGVceGM5XHhhMVx4OGRceGYwXHhmZlx4ZTknCisgICBiJ1x4MDNceDFlXHhkZH1BZVx4MTVceDkzXHhjNVx4ZmVcXFx4MDBvXHhhNXUrN1x4ZmRceGRmXHhmN1x4YmNOXHg4NDpceGE2XHhhZlx4MGNceDk1XHgwZktceDk0XHgwNicKICAgID4+PiBtLmRpZ2VzdF9zaXplCi0gICAxNgorICAgMzIKICAgID4+PiBtLmJsb2NrX3NpemUKICAgIDY0CiAKQEAgLTEwNyw3ICsxMTksOSBAQAogLi4gZGF0YTo6IGFsZ29yaXRobXNfZ3VhcmFudGVlZAogCiAgICBBIHNldCBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgaGFzaCBhbGdvcml0aG1zIGd1YXJhbnRlZWQgdG8gYmUgc3VwcG9ydGVkCi0gICBieSB0aGlzIG1vZHVsZSBvbiBhbGwgcGxhdGZvcm1zLgorICAgYnkgdGhpcyBtb2R1bGUgb24gYWxsIHBsYXRmb3Jtcy4gIE5vdGUgdGhhdCAnbWQ1JyBpcyBpbiB0aGlzIGxpc3QgZGVzcGl0ZQorICAgc29tZSB1cHN0cmVhbSB2ZW5kb3JzIG9mZmVyaW5nIGFuIG9kZCAiRklQUyBjb21wbGlhbnQiIFB5dGhvbiBidWlsZCB0aGF0CisgICBleGNsdWRlcyBpdC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTE4MSw2ICsxOTUsMjggQEAKICAgIGNvbXB1dGUgdGhlIGRpZ2VzdHMgb2YgZGF0YSBzaGFyaW5nIGEgY29tbW9uIGluaXRpYWwgc3Vic3RyaW5nLgogCiAKK1NIQUtFIHZhcmlhYmxlIGxlbmd0aCBkaWdlc3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmZ1bmM6YHNoYWtlXzEyOGAgYW5kIDpmdW5jOmBzaGFrZV8yNTZgIGFsZ29yaXRobXMgcHJvdmlkZSB2YXJpYWJsZQorbGVuZ3RoIGRpZ2VzdHMgd2l0aCBsZW5ndGhfaW5fYml0cy8vMiB1cCB0byAxMjggb3IgMjU2IGJpdHMgb2Ygc2VjdXJpdHkuCitBcyBzdWNoLCB0aGVpciBkaWdlc3QgbWV0aG9kcyByZXF1aXJlIGEgbGVuZ3RoLiBNYXhpbXVtIGxlbmd0aCBpcyBub3QgbGltaXRlZAorYnkgdGhlIFNIQUtFIGFsZ29yaXRobS4KKworLi4gbWV0aG9kOjogc2hha2UuZGlnZXN0KGxlbmd0aCkKKworICAgUmV0dXJuIHRoZSBkaWdlc3Qgb2YgdGhlIGRhdGEgcGFzc2VkIHRvIHRoZSA6bWV0aDpgdXBkYXRlYCBtZXRob2Qgc28gZmFyLgorICAgVGhpcyBpcyBhIGJ5dGVzIG9iamVjdCBvZiBzaXplIGBgbGVuZ3RoYGAgd2hpY2ggbWF5IGNvbnRhaW4gYnl0ZXMgaW4KKyAgIHRoZSB3aG9sZSByYW5nZSBmcm9tIDAgdG8gMjU1LgorCisKKy4uIG1ldGhvZDo6IHNoYWtlLmhleGRpZ2VzdChsZW5ndGgpCisKKyAgIExpa2UgOm1ldGg6YGRpZ2VzdGAgZXhjZXB0IHRoZSBkaWdlc3QgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcgb2JqZWN0IG9mCisgICBkb3VibGUgbGVuZ3RoLCBjb250YWluaW5nIG9ubHkgaGV4YWRlY2ltYWwgZGlnaXRzLiAgVGhpcyBtYXkgYmUgdXNlZCB0bworICAgZXhjaGFuZ2UgdGhlIHZhbHVlIHNhZmVseSBpbiBlbWFpbCBvciBvdGhlciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KKworCiBLZXkgZGVyaXZhdGlvbgogLS0tLS0tLS0tLS0tLS0KIApAQCAtMjIxLDYgKzI1NywyOSBAQAogICAgICAgUHl0aG9uIGltcGxlbWVudGF0aW9uIHVzZXMgYW4gaW5saW5lIHZlcnNpb24gb2YgOm1vZDpgaG1hY2AuIEl0IGlzIGFib3V0CiAgICAgICB0aHJlZSB0aW1lcyBzbG93ZXIgYW5kIGRvZXNuJ3QgcmVsZWFzZSB0aGUgR0lMLgogCisuLiBmdW5jdGlvbjo6IHNjcnlwdChwYXNzd29yZCwgKiwgc2FsdCwgbiwgciwgcCwgbWF4bWVtPTAsIGRrbGVuPTY0KQorCisgICBUaGUgZnVuY3Rpb24gcHJvdmlkZXMgc2NyeXB0IHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGFzCisgICBkZWZpbmVkIGluIDpyZmM6YDc5MTRgLgorCisgICAqcGFzc3dvcmQqIGFuZCAqc2FsdCogbXVzdCBiZSBieXRlcy1saWtlIG9iamVjdHMuIEFwcGxpY2F0aW9ucyBhbmQKKyAgIGxpYnJhcmllcyBzaG91bGQgbGltaXQgKnBhc3N3b3JkKiB0byBhIHNlbnNpYmxlIGxlbmd0aCAoZS5nLiAxMDI0KS4gKnNhbHQqCisgICBzaG91bGQgYmUgYWJvdXQgMTYgb3IgbW9yZSBieXRlcyBmcm9tIGEgcHJvcGVyIHNvdXJjZSwgZS5nLiA6ZnVuYzpgb3MudXJhbmRvbWAuCisKKyAgICpuKiBpcyB0aGUgQ1BVL01lbW9yeSBjb3N0IGZhY3RvciwgKnIqIHRoZSBibG9jayBzaXplLCAqcCogcGFyYWxsZWxpemF0aW9uCisgICBmYWN0b3IgYW5kICptYXhtZW0qIGxpbWl0cyBtZW1vcnkgKE9wZW5TU0wgMS4xLjAgZGVmYXVsdHMgdG8gMzIgTUIpLgorICAgKmRrbGVuKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBkZXJpdmVkIGtleS4KKworICAgQXZhaWxhYmlsaXR5OiBPcGVuU1NMIDEuMSsKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworQkxBS0UyCistLS0tLS0KKworQkxBS0UyIHRha2VzIGFkZGl0aW9uYWwgYXJndW1lbnRzLCBzZWUgOnJlZjpgaGFzaGxpYi1ibGFrZTJgLgorCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMzAsNiArMjg5LDggQEAKICAgIE1vZHVsZSA6bW9kOmBiYXNlNjRgCiAgICAgICBBbm90aGVyIHdheSB0byBlbmNvZGUgYmluYXJ5IGhhc2hlcyBmb3Igbm9uLWJpbmFyeSBlbnZpcm9ubWVudHMuCiAKKyAgIFNlZSA6cmVmOmBoYXNobGliLWJsYWtlMmAuCisKICAgIGh0dHA6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9maXBzL2ZpcHMxODAtMi9maXBzMTgwLTIucGRmCiAgICAgICBUaGUgRklQUyAxODAtMiBwdWJsaWNhdGlvbiBvbiBTZWN1cmUgSGFzaCBBbGdvcml0aG1zLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKaW5kZXggZTFhY2Y5Mi4uMmY1OWVjZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdApAQCAtNjksMTMgKzY5LDYgQEAKICAgIG11c3QgYmUgYSA6Y2xhc3M6YHNzbC5TU0xDb250ZXh0YCBpbnN0YW5jZSBkZXNjcmliaW5nIHRoZSB2YXJpb3VzIFNTTAogICAgb3B0aW9ucy4KIAotICAgKmtleV9maWxlKiBhbmQgKmNlcnRfZmlsZSogYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UKLSAgIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAotICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKLSAgIGNlcnRpZmljYXRlcyBmb3IgeW91LiAgVGhlICpjaGVja19ob3N0bmFtZSogcGFyYW1ldGVyIGlzIGFsc28gZGVwcmVjYXRlZDsgdGhlCi0gICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGF0dHJpYnV0ZSBvZiAqY29udGV4dCogc2hvdWxkIGJlIHVzZWQKLSAgIGluc3RlYWQuCi0KICAgIFBsZWFzZSByZWFkIDpyZWY6YHNzbC1zZWN1cml0eWAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gYmVzdCBwcmFjdGljZXMuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCkBAIC05NSw2ICs4OCwxNyBAQAogICAgICAgOmZ1bmM6YHNzbC5fY3JlYXRlX3VudmVyaWZpZWRfY29udGV4dGAgY2FuIGJlIHBhc3NlZCB0byB0aGUgKmNvbnRleHQqCiAgICAgICBwYXJhbWV0ZXIuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlfZmlsZSogYW5kICpjZXJ0X2ZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKyAgICAgICBUaGUgKmNoZWNrX2hvc3RuYW1lKiBwYXJhbWV0ZXIgaXMgYWxzbyBkZXByZWNhdGVkOyB0aGUKKyAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGF0dHJpYnV0ZSBvZiAqY29udGV4dCogc2hvdWxkCisgICAgICAgYmUgdXNlZCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogSFRUUFJlc3BvbnNlKHNvY2ssIGRlYnVnbGV2ZWw9MCwgbWV0aG9kPU5vbmUsIHVybD1Ob25lKQogCkBAIC0yMTcsMzkgKzIyMSw2MSBAQAogOmNsYXNzOmBIVFRQQ29ubmVjdGlvbmAgaW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOgogCiAKLS4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSkKKy4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnJlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSwgKiwgXAorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9RmFsc2UpCiAKICAgIFRoaXMgd2lsbCBzZW5kIGEgcmVxdWVzdCB0byB0aGUgc2VydmVyIHVzaW5nIHRoZSBIVFRQIHJlcXVlc3QKICAgIG1ldGhvZCAqbWV0aG9kKiBhbmQgdGhlIHNlbGVjdG9yICp1cmwqLgogCiAgICBJZiAqYm9keSogaXMgc3BlY2lmaWVkLCB0aGUgc3BlY2lmaWVkIGRhdGEgaXMgc2VudCBhZnRlciB0aGUgaGVhZGVycyBhcmUKLSAgIGZpbmlzaGVkLiAgSXQgbWF5IGJlIGEgc3RyaW5nLCBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAsIGFuIG9wZW4KLSAgIDp0ZXJtOmBmaWxlIG9iamVjdGAsIG9yIGFuIGl0ZXJhYmxlIG9mIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGBccy4gIElmCi0gICAqYm9keSogaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgdGhlIGRlZmF1bHQgZm9yIEhUVFAuICBJZgotICAgaXQgaXMgYSBieXRlcy1saWtlIG9iamVjdCB0aGUgYnl0ZXMgYXJlIHNlbnQgYXMgaXMuICBJZiBpdCBpcyBhIDp0ZXJtOmBmaWxlCi0gICBvYmplY3RgLCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgaXMgc2VudDsgdGhpcyBmaWxlIG9iamVjdCBzaG91bGQgc3VwcG9ydAotICAgYXQgbGVhc3QgdGhlIGBgcmVhZCgpYGAgbWV0aG9kLiAgSWYgdGhlIGZpbGUgb2JqZWN0IGhhcyBhIGBgbW9kZWBgCi0gICBhdHRyaWJ1dGUsIHRoZSBkYXRhIHJldHVybmVkIGJ5IHRoZSBgYHJlYWQoKWBgIG1ldGhvZCB3aWxsIGJlIGVuY29kZWQgYXMKLSAgIElTTy04ODU5LTEgdW5sZXNzIHRoZSBgYG1vZGVgYCBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHN1YnN0cmluZyBgYGJgYCwKLSAgIG90aGVyd2lzZSB0aGUgZGF0YSByZXR1cm5lZCBieSBgYHJlYWQoKWBgIGlzIHNlbnQgYXMgaXMuICBJZiAqYm9keSogaXMgYW4KLSAgIGl0ZXJhYmxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIGl0ZXJhYmxlIGFyZSBzZW50IGFzIGlzIHVudGlsIHRoZSBpdGVyYWJsZSBpcwotICAgZXhoYXVzdGVkLgorICAgZmluaXNoZWQuICBJdCBtYXkgYmUgYSA6Y2xhc3M6YHN0cmAsIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgYW4KKyAgIG9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3IgYW4gaXRlcmFibGUgb2YgOmNsYXNzOmBieXRlc2AuICBJZiAqYm9keSoKKyAgIGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkIGFzIElTTy04ODU5LTEsIHRoZSBkZWZhdWx0IGZvciBIVFRQLiAgSWYgaXQKKyAgIGlzIGEgYnl0ZXMtbGlrZSBvYmplY3QsIHRoZSBieXRlcyBhcmUgc2VudCBhcyBpcy4gIElmIGl0IGlzIGEgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBpcyBzZW50OyB0aGlzIGZpbGUgb2JqZWN0IHNob3VsZAorICAgc3VwcG9ydCBhdCBsZWFzdCB0aGUgYGByZWFkKClgYCBtZXRob2QuICBJZiB0aGUgZmlsZSBvYmplY3QgaXMgYW4KKyAgIGluc3RhbmNlIG9mIDpjbGFzczpgaW8uVGV4dElPQmFzZWAsIHRoZSBkYXRhIHJldHVybmVkIGJ5IHRoZSBgYHJlYWQoKWBgCisgICBtZXRob2Qgd2lsbCBiZSBlbmNvZGVkIGFzIElTTy04ODU5LTEsIG90aGVyd2lzZSB0aGUgZGF0YSByZXR1cm5lZCBieQorICAgYGByZWFkKClgYCBpcyBzZW50IGFzIGlzLiAgSWYgKmJvZHkqIGlzIGFuIGl0ZXJhYmxlLCB0aGUgZWxlbWVudHMgb2YgdGhlCisgICBpdGVyYWJsZSBhcmUgc2VudCBhcyBpcyB1bnRpbCB0aGUgaXRlcmFibGUgaXMgZXhoYXVzdGVkLgogCi0gICBUaGUgKmhlYWRlcnMqIGFyZ3VtZW50IHNob3VsZCBiZSBhIG1hcHBpbmcgb2YgZXh0cmEgSFRUUAotICAgaGVhZGVycyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuCisgICBUaGUgKmhlYWRlcnMqIGFyZ3VtZW50IHNob3VsZCBiZSBhIG1hcHBpbmcgb2YgZXh0cmEgSFRUUCBoZWFkZXJzIHRvIHNlbmQKKyAgIHdpdGggdGhlIHJlcXVlc3QuCiAKLSAgIElmICpoZWFkZXJzKiBkb2VzIG5vdCBjb250YWluIGEgQ29udGVudC1MZW5ndGggaXRlbSwgb25lIGlzIGFkZGVkCi0gICBhdXRvbWF0aWNhbGx5IGlmIHBvc3NpYmxlLiAgSWYgKmJvZHkqIGlzIGBgTm9uZWBgLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyCi0gICBpcyBzZXQgdG8gYGAwYGAgZm9yIG1ldGhvZHMgdGhhdCBleHBlY3QgYSBib2R5IChgYFBVVGBgLCBgYFBPU1RgYCwgYW5kCi0gICBgYFBBVENIYGApLiAgSWYgKmJvZHkqIGlzIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCwgdGhlIENvbnRlbnQtTGVuZ3RoCi0gICBoZWFkZXIgaXMgc2V0IHRvIGl0cyBsZW5ndGguICBJZiAqYm9keSogaXMgYSA6dGVybTpgZmlsZSBvYmplY3RgIGFuZCBpdAotICAgd29ya3MgdG8gY2FsbCA6ZnVuYzpgfm9zLmZzdGF0YCBvbiB0aGUgcmVzdWx0IG9mIGl0cyBgYGZpbGVubygpYGAgbWV0aG9kLAotICAgdGhlbiB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzIHNldCB0byB0aGUgYGBzdF9zaXplYGAgcmVwb3J0ZWQgYnkgdGhlCi0gICBgYGZzdGF0YGAgY2FsbC4gIE90aGVyd2lzZSBubyBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgYWRkZWQuCisgICBJZiAqaGVhZGVycyogY29udGFpbnMgbmVpdGhlciBDb250ZW50LUxlbmd0aCBub3IgVHJhbnNmZXItRW5jb2RpbmcsCisgICBidXQgdGhlcmUgaXMgYSByZXF1ZXN0IGJvZHksIG9uZSBvZiB0aG9zZQorICAgaGVhZGVyIGZpZWxkcyB3aWxsIGJlIGFkZGVkIGF1dG9tYXRpY2FsbHkuICBJZgorICAgKmJvZHkqIGlzIGBgTm9uZWBgLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzIHNldCB0byBgYDBgYCBmb3IKKyAgIG1ldGhvZHMgdGhhdCBleHBlY3QgYSBib2R5IChgYFBVVGBgLCBgYFBPU1RgYCwgYW5kIGBgUEFUQ0hgYCkuICBJZgorICAgKmJvZHkqIGlzIGEgc3RyaW5nIG9yIGEgYnl0ZXMtbGlrZSBvYmplY3QgdGhhdCBpcyBub3QgYWxzbyBhCisgICA6dGVybTpgZmlsZSA8ZmlsZSBvYmplY3Q+YCwgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcworICAgc2V0IHRvIGl0cyBsZW5ndGguICBBbnkgb3RoZXIgdHlwZSBvZiAqYm9keSogKGZpbGVzCisgICBhbmQgaXRlcmFibGVzIGluIGdlbmVyYWwpIHdpbGwgYmUgY2h1bmstZW5jb2RlZCwgYW5kIHRoZQorICAgVHJhbnNmZXItRW5jb2RpbmcgaGVhZGVyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZXQgaW5zdGVhZCBvZgorICAgQ29udGVudC1MZW5ndGguCisKKyAgIFRoZSAqZW5jb2RlX2NodW5rZWQqIGFyZ3VtZW50IGlzIG9ubHkgcmVsZXZhbnQgaWYgVHJhbnNmZXItRW5jb2RpbmcgaXMKKyAgIHNwZWNpZmllZCBpbiAqaGVhZGVycyouICBJZiAqZW5jb2RlX2NodW5rZWQqIGlzIGBgRmFsc2VgYCwgdGhlCisgICBIVFRQQ29ubmVjdGlvbiBvYmplY3QgYXNzdW1lcyB0aGF0IGFsbCBlbmNvZGluZyBpcyBoYW5kbGVkIGJ5IHRoZQorICAgY2FsbGluZyBjb2RlLiAgSWYgaXQgaXMgYGBUcnVlYGAsIHRoZSBib2R5IHdpbGwgYmUgY2h1bmstZW5jb2RlZC4KKworICAgLi4gbm90ZTo6CisgICAgICBDaHVua2VkIHRyYW5zZmVyIGVuY29kaW5nIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBIVFRQIHByb3RvY29sCisgICAgICB2ZXJzaW9uIDEuMS4gIFVubGVzcyB0aGUgSFRUUCBzZXJ2ZXIgaXMga25vd24gdG8gaGFuZGxlIEhUVFAgMS4xLAorICAgICAgdGhlIGNhbGxlciBtdXN0IGVpdGhlciBzcGVjaWZ5IHRoZSBDb250ZW50LUxlbmd0aCwgb3IgbXVzdCBwYXNzIGEKKyAgICAgIDpjbGFzczpgc3RyYCBvciBieXRlcy1saWtlIG9iamVjdCB0aGF0IGlzIG5vdCBhbHNvIGEgZmlsZSBhcyB0aGUKKyAgICAgIGJvZHkgcmVwcmVzZW50YXRpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgKmJvZHkqIGNhbiBub3cgYmUgYW4gaXRlcmFibGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBJZiBuZWl0aGVyIENvbnRlbnQtTGVuZ3RoIG5vciBUcmFuc2Zlci1FbmNvZGluZyBhcmUgc2V0IGluCisgICAgICAqaGVhZGVycyosIGZpbGUgYW5kIGl0ZXJhYmxlICpib2R5KiBvYmplY3RzIGFyZSBub3cgY2h1bmstZW5jb2RlZC4KKyAgICAgIFRoZSAqZW5jb2RlX2NodW5rZWQqIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgICAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBkZXRlcm1pbmUgdGhlIENvbnRlbnQtTGVuZ3RoIGZvciBmaWxlCisgICAgICBvYmplY3RzLgorCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5nZXRyZXNwb25zZSgpCiAKICAgIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgYSByZXF1ZXN0IGlzIHNlbnQgdG8gZ2V0IHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuCkBAIC0zMzUsMTMgKzM2MSwzMiBAQAogICAgYW4gYXJndW1lbnQuCiAKIAotLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVycyhtZXNzYWdlX2JvZHk9Tm9uZSkKKy4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnMobWVzc2FnZV9ib2R5PU5vbmUsICosIGVuY29kZV9jaHVua2VkPUZhbHNlKQogCiAgICBTZW5kIGEgYmxhbmsgbGluZSB0byB0aGUgc2VydmVyLCBzaWduYWxsaW5nIHRoZSBlbmQgb2YgdGhlIGhlYWRlcnMuIFRoZQogICAgb3B0aW9uYWwgKm1lc3NhZ2VfYm9keSogYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcGFzcyBhIG1lc3NhZ2UgYm9keQotICAgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LiAgVGhlIG1lc3NhZ2UgYm9keSB3aWxsIGJlIHNlbnQgaW4gdGhlIHNhbWUKLSAgIHBhY2tldCBhcyB0aGUgbWVzc2FnZSBoZWFkZXJzIGlmIGl0IGlzIHN0cmluZywgb3RoZXJ3aXNlIGl0IGlzIHNlbnQgaW4gYQotICAgc2VwYXJhdGUgcGFja2V0LgorICAgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LgorCisgICBJZiAqZW5jb2RlX2NodW5rZWQqIGlzIGBgVHJ1ZWBgLCB0aGUgcmVzdWx0IG9mIGVhY2ggaXRlcmF0aW9uIG9mCisgICAqbWVzc2FnZV9ib2R5KiB3aWxsIGJlIGNodW5rLWVuY29kZWQgYXMgc3BlY2lmaWVkIGluIDpyZmM6YDcyMzBgLAorICAgU2VjdGlvbiAzLjMuMS4gIEhvdyB0aGUgZGF0YSBpcyBlbmNvZGVkIGlzIGRlcGVuZGVudCBvbiB0aGUgdHlwZSBvZgorICAgKm1lc3NhZ2VfYm9keSouICBJZiAqbWVzc2FnZV9ib2R5KiBpbXBsZW1lbnRzIHRoZSA6cmVmOmBidWZmZXIgaW50ZXJmYWNlCisgICA8YnVmZmVyb2JqZWN0cz5gIHRoZSBlbmNvZGluZyB3aWxsIHJlc3VsdCBpbiBhIHNpbmdsZSBjaHVuay4KKyAgIElmICptZXNzYWdlX2JvZHkqIGlzIGEgOmNsYXNzOmBjb2xsZWN0aW9ucy5JdGVyYWJsZWAsIGVhY2ggaXRlcmF0aW9uCisgICBvZiAqbWVzc2FnZV9ib2R5KiB3aWxsIHJlc3VsdCBpbiBhIGNodW5rLiAgSWYgKm1lc3NhZ2VfYm9keSogaXMgYQorICAgOnRlcm06YGZpbGUgb2JqZWN0YCwgZWFjaCBjYWxsIHRvIGBgLnJlYWQoKWBgIHdpbGwgcmVzdWx0IGluIGEgY2h1bmsuCisgICBUaGUgbWV0aG9kIGF1dG9tYXRpY2FsbHkgc2lnbmFscyB0aGUgZW5kIG9mIHRoZSBjaHVuay1lbmNvZGVkIGRhdGEKKyAgIGltbWVkaWF0ZWx5IGFmdGVyICptZXNzYWdlX2JvZHkqLgorCisgICAuLiBub3RlOjogRHVlIHRvIHRoZSBjaHVua2VkIGVuY29kaW5nIHNwZWNpZmljYXRpb24sIGVtcHR5IGNodW5rcworICAgICAgeWllbGRlZCBieSBhbiBpdGVyYXRvciBib2R5IHdpbGwgYmUgaWdub3JlZCBieSB0aGUgY2h1bmstZW5jb2Rlci4KKyAgICAgIFRoaXMgaXMgdG8gYXZvaWQgcHJlbWF0dXJlIHRlcm1pbmF0aW9uIG9mIHRoZSByZWFkIG9mIHRoZSByZXF1ZXN0IGJ5CisgICAgICB0aGUgdGFyZ2V0IHNlcnZlciBkdWUgdG8gbWFsZm9ybWVkIGVuY29kaW5nLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIENodW5rZWQgZW5jb2Rpbmcgc3VwcG9ydC4gIFRoZSAqZW5jb2RlX2NodW5rZWQqIHBhcmFtZXRlciB3YXMKKyAgICAgIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLnNlbmQoZGF0YSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CmluZGV4IGFlN2ZiOTcuLmZiNWMxZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKQEAgLTk4LDggKzk4LDggQEAKIAogICAgLi4gYXR0cmlidXRlOjogcmZpbGUKIAotICAgICAgQ29udGFpbnMgYW4gaW5wdXQgc3RyZWFtLCBwb3NpdGlvbmVkIGF0IHRoZSBzdGFydCBvZiB0aGUgb3B0aW9uYWwgaW5wdXQKLSAgICAgIGRhdGEuCisgICAgICBBbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBpbnB1dCBzdHJlYW0sIHJlYWR5IHRvIHJlYWQgZnJvbQorICAgICAgdGhlIHN0YXJ0IG9mIHRoZSBvcHRpb25hbCBpbnB1dCBkYXRhLgogCiAgICAuLiBhdHRyaWJ1dGU6OiB3ZmlsZQogCkBAIC0xMDcsNiArMTA3LDkgQEAKICAgICAgIGNsaWVudC4gUHJvcGVyIGFkaGVyZW5jZSB0byB0aGUgSFRUUCBwcm90b2NvbCBtdXN0IGJlIHVzZWQgd2hlbiB3cml0aW5nIHRvCiAgICAgICB0aGlzIHN0cmVhbS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIFRoaXMgaXMgYW4gOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgc3RyZWFtLgorCiAgICA6Y2xhc3M6YEJhc2VIVFRQUmVxdWVzdEhhbmRsZXJgIGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IHNlcnZlcl92ZXJzaW9uCkBAIC0zNjksMTAgKzM3Miw5IEBACiAKICAgIEhhbmRsZXIgPSBodHRwLnNlcnZlci5TaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIKIAotICAgaHR0cGQgPSBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKCgiIiwgUE9SVCksIEhhbmRsZXIpCi0KLSAgIHByaW50KCJzZXJ2aW5nIGF0IHBvcnQiLCBQT1JUKQotICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKCIiLCBQT1JUKSwgSGFuZGxlcikgYXMgaHR0cGQ6CisgICAgICAgcHJpbnQoInNlcnZpbmcgYXQgcG9ydCIsIFBPUlQpCisgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKIC4uIF9odHRwLXNlcnZlci1jbGk6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKaW5kZXggNzcxY2E0My4uMTYzMmViNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QKQEAgLTEwMyw2ICsxMDMsMTQgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpzc2xfY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCisKIFRoZSBzZWNvbmQgc3ViY2xhc3MgYWxsb3dzIGZvciBjb25uZWN0aW9ucyBjcmVhdGVkIGJ5IGEgY2hpbGQgcHJvY2VzczoKIAogCkBAIC01MDAsNiArNTA4LDE3IEBACiAgICAgICAgICBNLnN0b3JlKG51bSwgJytGTEFHUycsICdcXERlbGV0ZWQnKQogICAgICAgTS5leHB1bmdlKCkKIAorICAgLi4gbm90ZTo6CisKKyAgICAgIENyZWF0aW5nIGZsYWdzIGNvbnRhaW5pbmcgJ10nIChmb3IgZXhhbXBsZTogIlt0ZXN0XSIpIHZpb2xhdGVzCisgICAgICA6cmZjOmAzNTAxYCAodGhlIElNQVAgcHJvdG9jb2wpLiAgSG93ZXZlciwgaW1hcGxpYiBoYXMgaGlzdG9yaWNhbGx5CisgICAgICBhbGxvd2VkIGNyZWF0aW9uIG9mIHN1Y2ggdGFncywgYW5kIHBvcHVsYXIgSU1BUCBzZXJ2ZXJzLCBzdWNoIGFzIEdtYWlsLAorICAgICAgYWNjZXB0IGFuZCBwcm9kdWNlIHN1Y2ggZmxhZ3MuICBUaGVyZSBhcmUgbm9uLVB5dGhvbiBwcm9ncmFtcyB3aGljaCBhbHNvCisgICAgICBjcmVhdGUgc3VjaCB0YWdzLiAgQWx0aG91Z2ggaXQgaXMgYW4gUkZDIHZpb2xhdGlvbiBhbmQgSU1BUCBjbGllbnRzIGFuZAorICAgICAgc2VydmVycyBhcmUgc3VwcG9zZWQgdG8gYmUgc3RyaWN0LCBpbWFwbGliIG5vbmV0aGVsZXNzIGNvbnRpbnVlcyB0byBhbGxvdworICAgICAgc3VjaCB0YWdzIHRvIGJlIGNyZWF0ZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYW5kIGFzIG9mCisgICAgICBweXRob24gMy42LCBoYW5kbGVzIHRoZW0gaWYgdGhleSBhcmUgc2VudCBmcm9tIHRoZSBzZXJ2ZXIsIHNpbmNlIHRoaXMKKyAgICAgIGltcHJvdmVzIHJlYWwtd29ybGQgY29tcGF0aWJpbGl0eS4KIAogLi4gbWV0aG9kOjogSU1BUDQuc3Vic2NyaWJlKG1haWxib3gpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QgYi9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CmluZGV4IGYxMWY2ZGMuLjgwMGU5MTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1naGRyLnJzdApAQCAtMjAsNiArMjAsOSBAQAogICAgc3RyaW5nIGRlc2NyaWJpbmcgdGhlIGltYWdlIHR5cGUuICBJZiBvcHRpb25hbCAqaCogaXMgcHJvdmlkZWQsIHRoZSAqZmlsZW5hbWUqCiAgICBpcyBpZ25vcmVkIGFuZCAqaCogaXMgYXNzdW1lZCB0byBjb250YWluIHRoZSBieXRlIHN0cmVhbSB0byB0ZXN0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogVGhlIGZvbGxvd2luZyBpbWFnZSB0eXBlcyBhcmUgcmVjb2duaXplZCwgYXMgbGlzdGVkIGJlbG93IHdpdGggdGhlIHJldHVybiB2YWx1ZQogZnJvbSA6ZnVuYzpgd2hhdGA6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcC5yc3QgYi9Eb2MvbGlicmFyeS9pbXAucnN0CmluZGV4IDk4MjhiYTYuLmNjZjVmOTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wLnJzdApAQCAtODUsNyArODUsOSBAQAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWNgIGluc3RlYWQgdW5sZXNzIFB5dGhvbiAzLjMKICAgICAgIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQsIGluIHdoaWNoIGNhc2UgdXNlCi0gICAgICA6ZnVuYzpgaW1wb3J0bGliLmZpbmRfbG9hZGVyYC4KKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgLiBGb3IgZXhhbXBsZSB1c2FnZSBvZiB0aGUgZm9ybWVyIGNhc2UsCisgICAgICBzZWUgdGhlIDpyZWY6YGltcG9ydGxpYi1leGFtcGxlc2Agc2VjdGlvbiBvZiB0aGUgOm1vZDpgaW1wb3J0bGliYAorICAgICAgZG9jdW1lbnRhdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IGxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIHBhdGhuYW1lLCBkZXNjcmlwdGlvbikKQEAgLTExMiw5ICsxMTQsMTIgQEAKICAgICAgIElmIHByZXZpb3VzbHkgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIDpmdW5jOmBpbXAuZmluZF9tb2R1bGVgIHRoZW4KICAgICAgIGNvbnNpZGVyIHVzaW5nIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAsIG90aGVyd2lzZSB1c2UgdGhlIGxvYWRlcgogICAgICAgcmV0dXJuZWQgYnkgdGhlIHJlcGxhY2VtZW50IHlvdSBjaG9zZSBmb3IgOmZ1bmM6YGltcC5maW5kX21vZHVsZWAuIElmIHlvdQotICAgICAgY2FsbGVkIDpmdW5jOmBpbXAubG9hZF9tb2R1bGVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSB0aGVuIHVzZSB0aGUKLSAgICAgIGNsYXNzZXMgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAsIGUuZy4KLSAgICAgIGBgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKG5hbWUsIHBhdGgpLmxvYWRfbW9kdWxlKClgYC4KKyAgICAgIGNhbGxlZCA6ZnVuYzpgaW1wLmxvYWRfbW9kdWxlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgZGlyZWN0bHkgd2l0aCBmaWxlCisgICAgICBwYXRoIGFyZ3VtZW50cyB0aGVuIHVzZSBhIGNvbWJpbmF0aW9uIG9mCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb25gIGFuZAorICAgICAgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgLiBTZWUgdGhlIDpyZWY6YGltcG9ydGxpYi1leGFtcGxlc2AKKyAgICAgIHNlY3Rpb24gb2YgdGhlIDptb2Q6YGltcG9ydGxpYmAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyBvZiB0aGUgdmFyaW91cworICAgICAgYXBwcm9hY2hlcy4KIAogCiAuLiBmdW5jdGlvbjo6IG5ld19tb2R1bGUobmFtZSkKQEAgLTEyMyw3ICsxMjgsNyBAQAogICAgaW4gYGBzeXMubW9kdWxlc2BgLgogCiAgICAuLiBkZXByZWNhdGVkOjogMy40Ci0gICAgICBVc2UgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYCBpbnN0ZWFkLgorICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVsb2FkKG1vZHVsZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CmluZGV4IGNiNTJmNzQuLmY2M2ExOGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdApAQCAtMjY3LDcgKzI2Nyw3IEBACiAgICAgICBtb2R1bGUgYW5kICpwYXRoKiB3aWxsIGJlIHRoZSB2YWx1ZSBvZiA6YXR0cjpgX19wYXRoX19gIGZyb20gdGhlCiAgICAgICBwYXJlbnQgcGFja2FnZS4gSWYgYSBzcGVjIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCiAgICAgICBXaGVuIHBhc3NlZCBpbiwgYGB0YXJnZXRgYCBpcyBhIG1vZHVsZSBvYmplY3QgdGhhdCB0aGUgZmluZGVyIG1heQotICAgICAgdXNlIHRvIG1ha2UgYSBtb3JlIGVkdWNhdGVkIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCisgICAgICB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQgZ3Vlc3MgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKQEAgLTMxNyw3ICszMTcsNyBAQAogICAgICAgd2l0aGluIHRoZSA6dGVybTpgcGF0aCBlbnRyeWAgdG8gd2hpY2ggaXQgaXMgYXNzaWduZWQuICBJZiBhIHNwZWMKICAgICAgIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuICBXaGVuIHBhc3NlZCBpbiwgYGB0YXJnZXRgYAogICAgICAgaXMgYSBtb2R1bGUgb2JqZWN0IHRoYXQgdGhlIGZpbmRlciBtYXkgdXNlIHRvIG1ha2UgYSBtb3JlIGVkdWNhdGVkCi0gICAgICBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgorICAgICAgZ3Vlc3MgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKQEAgLTM3OSwxMCArMzc5LDE0IEBACiAKICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgdGhhdCBleGVjdXRlcyB0aGUgbW9kdWxlIGluIGl0cyBvd24gbmFtZXNwYWNlCiAgICAgICAgd2hlbiBhIG1vZHVsZSBpcyBpbXBvcnRlZCBvciByZWxvYWRlZC4gIFRoZSBtb2R1bGUgc2hvdWxkIGFscmVhZHkKLSAgICAgICBiZSBpbml0aWFsaXplZCB3aGVuIGV4ZWNfbW9kdWxlKCkgaXMgY2FsbGVkLgorICAgICAgIGJlIGluaXRpYWxpemVkIHdoZW4gYGBleGVjX21vZHVsZSgpYGAgaXMgY2FsbGVkLiBXaGVuIHRoaXMgbWV0aG9kIGV4aXN0cywKKyAgICAgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG11c3QgYmUgZGVmaW5lZC4KIAogICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG11c3QgYWxzbyBiZSBkZWZpbmVkLgorCiAgICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICAgICAgQSBsZWdhY3kgbWV0aG9kIGZvciBsb2FkaW5nIGEgbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGNhbm5vdCBiZQpAQCAtOTM2LDYgKzk0MCwxMCBAQAogICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB3aGVyZQogICAgICAgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIGxvYWQgaXMgb3B0aW9uYWwuCiAKKyAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICAgVXNlIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgaW5zdGVhZC4KKwogCiAuLiBjbGFzczo6IFNvdXJjZWxlc3NGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQogCkBAIC05NzUsNiArOTgzLDEwIEBACiAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHdoZXJlCiAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCBpcyBvcHRpb25hbC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICBVc2UgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKIApAQCAtMTEzNyw2ICsxMTQ5LDkgQEAKICAgICAgIFRoZSAqb3B0aW1pemF0aW9uKiBwYXJhbWV0ZXIgd2FzIGFkZGVkIGFuZCB0aGUgKmRlYnVnX292ZXJyaWRlKiBwYXJhbWV0ZXIKICAgICAgIHdhcyBkZXByZWNhdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCiAKQEAgLTExNTAsNiArMTE2NSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gZnVuY3Rpb246OiBkZWNvZGVfc291cmNlKHNvdXJjZV9ieXRlcykKIAogICAgRGVjb2RlIHRoZSBnaXZlbiBieXRlcyByZXByZXNlbnRpbmcgc291cmNlIGNvZGUgYW5kIHJldHVybiBpdCBhcyBhIHN0cmluZwpAQCAtMTE5MiwxMiArMTIxMCwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IG1vZHVsZV9mcm9tX3NwZWMoc3BlYykKIAotICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYC4KKyAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgYmFzZWQgb24gKipzcGVjKiogYW5kCisgICA6bWV0aDpgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSA8aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZT5gLgogCi0gICBJZiBgYHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoKWBgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgdGhlbiBhbnkKLSAgIHByZS1leGlzdGluZyBhdHRyaWJ1dGVzIHdpbGwgbm90IGJlIHJlc2V0LiBBbHNvLCBubyA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAKLSAgIHdpbGwgYmUgcmFpc2VkIGlmIHRyaWdnZXJlZCB3aGlsZSBhY2Nlc3NpbmcgKipzcGVjKiogb3Igc2V0dGluZyBhbiBhdHRyaWJ1dGUKLSAgIG9uIHRoZSBtb2R1bGUuCisgICBJZiA6bWV0aDpgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSA8aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZT5gCisgICBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIHRoZW4gYW55IHByZS1leGlzdGluZyBhdHRyaWJ1dGVzIHdpbGwgbm90IGJlIHJlc2V0LgorICAgQWxzbywgbm8gOmV4YzpgQXR0cmlidXRlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmIHRyaWdnZXJlZCB3aGlsZSBhY2Nlc3NpbmcKKyAgICoqc3BlYyoqIG9yIHNldHRpbmcgYW4gYXR0cmlidXRlIG9uIHRoZSBtb2R1bGUuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJlZmVycmVkIG92ZXIgdXNpbmcgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYCB0byBjcmVhdGUgYQogICAgbmV3IG1vZHVsZSBhcyAqKnNwZWMqKiBpcyB1c2VkIHRvIHNldCBhcyBtYW55IGltcG9ydC1jb250cm9sbGVkIGF0dHJpYnV0ZXMgb24KQEAgLTEyNTksNyArMTI3OCw4IEBACiAKIC4uIGRlY29yYXRvcjo6IHNldF9wYWNrYWdlCiAKLSAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgdG8gc2V0IHRoZSA6YXR0cjpgX19wYWNrYWdlX19gIGF0dHJpYnV0ZSBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiBJZiA6YXR0cjpgX19wYWNrYWdlX19gCisgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHRvIHNldCB0aGUKKyAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYXR0cmlidXRlIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIElmIDphdHRyOmBfX3BhY2thZ2VfX2AKICAgIGlzIHNldCBhbmQgaGFzIGEgdmFsdWUgb3RoZXIgdGhhbiBgYE5vbmVgYCBpdCB3aWxsIG5vdCBiZSBjaGFuZ2VkLgogCiAgICAuLiBkZXByZWNhdGVkOjogMy40CkBAIC0xMjg0LDYgKzEzMDQsOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGNsYXNzOjogTGF6eUxvYWRlcihsb2FkZXIpCiAKICAgIEEgY2xhc3Mgd2hpY2ggcG9zdHBvbmVzIHRoZSBleGVjdXRpb24gb2YgdGhlIGxvYWRlciBvZiBhIG1vZHVsZSB1bnRpbCB0aGUKQEAgLTEyOTIsMTMgKzEzMTUsMTIgQEAKICAgIFRoaXMgY2xhc3MgKipvbmx5Kiogd29ya3Mgd2l0aCBsb2FkZXJzIHRoYXQgZGVmaW5lCiAgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBhcyBjb250cm9sIG92ZXIgd2hhdCBtb2R1bGUgdHlwZQogICAgaXMgdXNlZCBmb3IgdGhlIG1vZHVsZSBpcyByZXF1aXJlZC4gRm9yIHRob3NlIHNhbWUgcmVhc29ucywgdGhlIGxvYWRlcidzCi0gICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG1ldGhvZCB3aWxsIGJlIGlnbm9yZWQgKGkuZS4sIHRoZQotICAgbG9hZGVyJ3MgbWV0aG9kIHNob3VsZCBvbmx5IHJldHVybiBgYE5vbmVgYDsgdGhpcyBleGNsdWRlcwotICAgOmNsYXNzOmBCdWlsdGluSW1wb3J0ZXJgIGFuZCA6Y2xhc3M6YEV4dGVuc2lvbkZpbGVMb2FkZXJgKS4gRmluYWxseSwKLSAgIG1vZHVsZXMgd2hpY2ggc3Vic3RpdHV0ZSB0aGUgb2JqZWN0IHBsYWNlZCBpbnRvIDphdHRyOmBzeXMubW9kdWxlc2Agd2lsbAotICAgbm90IHdvcmsgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHByb3Blcmx5IHJlcGxhY2UgdGhlIG1vZHVsZSByZWZlcmVuY2VzCi0gICB0aHJvdWdob3V0IHRoZSBpbnRlcnByZXRlciBzYWZlbHk7IDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBzdWNoIGEKLSAgIHN1YnN0aXR1dGlvbiBpcyBkZXRlY3RlZC4KKyAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIG11c3QgcmV0dXJuIGBgTm9uZWBgIG9yIGEKKyAgIHR5cGUgZm9yIHdoaWNoIGl0cyBgYF9fY2xhc3NfX2BgIGF0dHJpYnV0ZSBjYW4gYmUgbXV0YXRlZCBhbG9uZyB3aXRoIG5vdAorICAgdXNpbmcgOnRlcm06YHNsb3RzIDxfX3Nsb3RzX18+YC4gRmluYWxseSwgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QKKyAgIHBsYWNlZCBpbnRvIDphdHRyOmBzeXMubW9kdWxlc2Agd2lsbCBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkKKyAgIHJlcGxhY2UgdGhlIG1vZHVsZSByZWZlcmVuY2VzIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBzdWNoIGEgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgogCiAgICAuLiBub3RlOjoKICAgICAgIEZvciBwcm9qZWN0cyB3aGVyZSBzdGFydHVwIHRpbWUgaXMgY3JpdGljYWwsIHRoaXMgY2xhc3MgYWxsb3dzIGZvcgpAQCAtMTMwOSw2ICsxMzMxLDExIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQmVnYW4gY2FsbGluZyA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgLCByZW1vdmluZyB0aGUKKyAgICAgIGNvbXBhdGliaWxpdHkgd2FybmluZyBmb3IgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcmAgYW5kCisgICAgICA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcmAuCisKICAgIC4uIGNsYXNzbWV0aG9kOjogZmFjdG9yeShsb2FkZXIpCiAKICAgICAgIEEgc3RhdGljIG1ldGhvZCB3aGljaCByZXR1cm5zIGEgY2FsbGFibGUgdGhhdCBjcmVhdGVzIGEgbGF6eSBsb2FkZXIuIFRoaXMKQEAgLTEzMjAsMyArMTM0NywxMzkgQEAKICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAgICAgICAgIGxhenlfbG9hZGVyID0gaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlci5mYWN0b3J5KGxvYWRlcikKICAgICAgICAgZmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKHBhdGgsIChsYXp5X2xvYWRlciwgc3VmZml4ZXMpKQorCisuLiBfaW1wb3J0bGliLWV4YW1wbGVzOgorCitFeGFtcGxlcworLS0tLS0tLS0KKworSW1wb3J0aW5nIHByb2dyYW1tYXRpY2FsbHkKKycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK1RvIHByb2dyYW1tYXRpY2FsbHkgaW1wb3J0IGEgbW9kdWxlLCB1c2UgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYC4KKzo6CisKKyAgaW1wb3J0IGltcG9ydGxpYgorCisgIGl0ZXJ0b29scyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdpdGVydG9vbHMnKQorCisKK0NoZWNraW5nIGlmIGEgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZAorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK0lmIHlvdSBuZWVkIHRvIGZpbmQgb3V0IGlmIGEgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZCB3aXRob3V0IGFjdHVhbGx5IGRvaW5nIHRoZQoraW1wb3J0LCB0aGVuIHlvdSBzaG91bGQgdXNlIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWNgLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3Nlcy4KKyAgbmFtZSA9ICdpdGVydG9vbHMnCisKKyAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICBwcmludCgiY2FuJ3QgZmluZCB0aGUgaXRlcnRvb2xzIG1vZHVsZSIpCisgIGVsc2U6CisgICAgICAjIElmIHlvdSBjaG9zZSB0byBwZXJmb3JtIHRoZSBhY3R1YWwgaW1wb3J0IC4uLgorICAgICAgbW9kdWxlID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAgICAgIyBBZGRpbmcgdGhlIG1vZHVsZSB0byBzeXMubW9kdWxlcyBpcyBvcHRpb25hbC4KKyAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisKKworSW1wb3J0aW5nIGEgc291cmNlIGZpbGUgZGlyZWN0bHkKKycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK1RvIGltcG9ydCBhIFB5dGhvbiBzb3VyY2UgZmlsZSBkaXJlY3RseSwgdXNlIHRoZSBmb2xsb3dpbmcgcmVjaXBlCisoUHl0aG9uIDMuNCBhbmQgbmV3ZXIgb25seSk6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzLgorICBpbXBvcnQgdG9rZW5pemUKKyAgZmlsZV9wYXRoID0gdG9rZW5pemUuX19maWxlX18KKyAgbW9kdWxlX25hbWUgPSB0b2tlbml6ZS5fX25hbWVfXworCisgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihtb2R1bGVfbmFtZSwgZmlsZV9wYXRoKQorICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgIyBPcHRpb25hbDsgb25seSBuZWNlc3NhcnkgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBpbXBvcnQgdGhlIG1vZHVsZQorICAjIGJ5IG5hbWUgbGF0ZXIuCisgIHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXSA9IG1vZHVsZQorCisKK1NldHRpbmcgdXAgYW4gaW1wb3J0ZXIKKycnJycnJycnJycnJycnJycnJycnJycKKworRm9yIGRlZXAgY3VzdG9taXphdGlvbnMgb2YgaW1wb3J0LCB5b3UgdHlwaWNhbGx5IHdhbnQgdG8gaW1wbGVtZW50IGFuCis6dGVybTpgaW1wb3J0ZXJgLiBUaGlzIG1lYW5zIG1hbmFnaW5nIGJvdGggdGhlIDp0ZXJtOmBmaW5kZXJgIGFuZCA6dGVybTpgbG9hZGVyYAorc2lkZSBvZiB0aGluZ3MuIEZvciBmaW5kZXJzIHRoZXJlIGFyZSB0d28gZmxhdm91cnMgdG8gY2hvb3NlIGZyb20gZGVwZW5kaW5nIG9uCit5b3VyIG5lZWRzOiBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCBvciBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAuIFRoZQorZm9ybWVyIGlzIHdoYXQgeW91IHdvdWxkIHB1dCBvbiA6YXR0cjpgc3lzLm1ldGFfcGF0aGAgd2hpbGUgdGhlIGxhdHRlciBpcyB3aGF0Cit5b3UgY3JlYXRlIHVzaW5nIGEgOnRlcm06YHBhdGggZW50cnkgaG9va2Agb24gOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCB3aGljaCB3b3Jrcword2l0aCA6YXR0cjpgc3lzLnBhdGhgIGVudHJpZXMgdG8gcG90ZW50aWFsbHkgY3JlYXRlIGEgZmluZGVyLiBUaGlzIGV4YW1wbGUgd2lsbAorc2hvdyB5b3UgaG93IHRvIHJlZ2lzdGVyIHlvdXIgb3duIGltcG9ydGVycyBzbyB0aGF0IGltcG9ydCB3aWxsIHVzZSB0aGVtIChmb3IKK2NyZWF0aW5nIGFuIGltcG9ydGVyIGZvciB5b3Vyc2VsZiwgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFwcHJvcHJpYXRlCitjbGFzc2VzIGRlZmluZWQgd2l0aGluIHRoaXMgcGFja2FnZSk6OgorCisgIGltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMgb25seS4KKyAgU3BhbU1ldGFQYXRoRmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyCisgIFNwYW1QYXRoRW50cnlGaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIKKyAgbG9hZGVyX2RldGFpbHMgPSAoaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykKKworICAjIFNldHRpbmcgdXAgYSBtZXRhIHBhdGggZmluZGVyLgorICAjIE1ha2Ugc3VyZSB0byBwdXQgdGhlIGZpbmRlciBpbiB0aGUgcHJvcGVyIGxvY2F0aW9uIGluIHRoZSBsaXN0IGluIHRlcm1zIG9mCisgICMgcHJpb3JpdHkuCisgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFNwYW1NZXRhUGF0aEZpbmRlcikKKworICAjIFNldHRpbmcgdXAgYSBwYXRoIGVudHJ5IGZpbmRlci4KKyAgIyBNYWtlIHN1cmUgdG8gcHV0IHRoZSBwYXRoIGhvb2sgaW4gdGhlIHByb3BlciBsb2NhdGlvbiBpbiB0aGUgbGlzdCBpbiB0ZXJtcworICAjIG9mIHByaW9yaXR5LgorICBzeXMucGF0aF9ob29rcy5hcHBlbmQoU3BhbVBhdGhFbnRyeUZpbmRlci5wYXRoX2hvb2sobG9hZGVyX2RldGFpbHMpKQorCisKK0FwcHJveGltYXRpbmcgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYAorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnCisKK0ltcG9ydCBpdHNlbGYgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uIGNvZGUsIG1ha2luZyBpdCBwb3NzaWJsZSB0bworZXhwb3NlIG1vc3Qgb2YgdGhlIGltcG9ydCBtYWNoaW5lcnkgdGhyb3VnaCBpbXBvcnRsaWIuIFRoZSBmb2xsb3dpbmcKK2hlbHBzIGlsbHVzdHJhdGUgdGhlIHZhcmlvdXMgQVBJcyB0aGF0IGltcG9ydGxpYiBleHBvc2VzIGJ5IHByb3ZpZGluZyBhbgorYXBwcm94aW1hdGUgaW1wbGVtZW50YXRpb24gb2YKKzpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgKFB5dGhvbiAzLjQgYW5kIG5ld2VyIGZvciB0aGUgaW1wb3J0bGliIHVzYWdlLAorUHl0aG9uIDMuNiBhbmQgbmV3ZXIgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlKS4KKzo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICBkZWYgaW1wb3J0X21vZHVsZShuYW1lLCBwYWNrYWdlPU5vbmUpOgorICAgICAgIiIiQW4gYXBwcm94aW1hdGUgaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LiIiIgorICAgICAgYWJzb2x1dGVfbmFtZSA9IGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKQorICAgICAgdHJ5OgorICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1thYnNvbHV0ZV9uYW1lXQorICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgIHBhc3MKKworICAgICAgcGF0aCA9IE5vbmUKKyAgICAgIGlmICcuJyBpbiBhYnNvbHV0ZV9uYW1lOgorICAgICAgICAgIHBhcmVudF9uYW1lLCBfLCBjaGlsZF9uYW1lID0gYWJzb2x1dGVfbmFtZS5ycGFydGl0aW9uKCcuJykKKyAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gaW1wb3J0X21vZHVsZShwYXJlbnRfbmFtZSkKKyAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5zcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zCisgICAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgICAgICAgc3BlYyA9IGZpbmRlci5maW5kX3NwZWMoYWJzb2x1dGVfbmFtZSwgcGF0aCkKKyAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICBicmVhaworICAgICAgZWxzZToKKyAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihmJ05vIG1vZHVsZSBuYW1lZCB7YWJzb2x1dGVfbmFtZSFyfScpCisgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICBzeXMubW9kdWxlc1thYnNvbHV0ZV9uYW1lXSA9IG1vZHVsZQorICAgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIGNoaWxkX25hbWUsIG1vZHVsZSkKKyAgICAgIHJldHVybiBtb2R1bGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0IGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKaW5kZXggNjJhMzk4OC4uZmM4MTVhNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QKQEAgLTIzNSwyNCArMjM1LDYgQEAKICAgICAgIGxpc3RlZCBpbiB0aGUgbWV0YWNsYXNzJyBjdXN0b20gOm1ldGg6YF9fZGlyX19gLgogCiAKLS4uIGZ1bmN0aW9uOjogZ2V0bW9kdWxlaW5mbyhwYXRoKQotCi0gICBSZXR1cm5zIGEgOnRlcm06YG5hbWVkIHR1cGxlYCBgYE1vZHVsZUluZm8obmFtZSwgc3VmZml4LCBtb2RlLCBtb2R1bGVfdHlwZSlgYAotICAgb2YgdmFsdWVzIHRoYXQgZGVzY3JpYmUgaG93IFB5dGhvbiB3aWxsIGludGVycHJldCB0aGUgZmlsZSBpZGVudGlmaWVkIGJ5Ci0gICAqcGF0aCogaWYgaXQgaXMgYSBtb2R1bGUsIG9yIGBgTm9uZWBgIGlmIGl0IHdvdWxkIG5vdCBiZSBpZGVudGlmaWVkIGFzIGEKLSAgIG1vZHVsZS4gIEluIHRoYXQgdHVwbGUsICpuYW1lKiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHdpdGhvdXQgdGhlIG5hbWUgb2YKLSAgIGFueSBlbmNsb3NpbmcgcGFja2FnZSwgKnN1ZmZpeCogaXMgdGhlIHRyYWlsaW5nIHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAod2hpY2gKLSAgIG1heSBub3QgYmUgYSBkb3QtZGVsaW1pdGVkIGV4dGVuc2lvbiksICptb2RlKiBpcyB0aGUgOmZ1bmM6YG9wZW5gIG1vZGUgdGhhdAotICAgd291bGQgYmUgdXNlZCAoYGAncidgYCBvciBgYCdyYidgYCksIGFuZCAqbW9kdWxlX3R5cGUqIGlzIGFuIGludGVnZXIgZ2l2aW5nCi0gICB0aGUgdHlwZSBvZiB0aGUgbW9kdWxlLiAgKm1vZHVsZV90eXBlKiB3aWxsIGhhdmUgYSB2YWx1ZSB3aGljaCBjYW4gYmUKLSAgIGNvbXBhcmVkIHRvIHRoZSBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgOm1vZDpgaW1wYCBtb2R1bGU7IHNlZSB0aGUKLSAgIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIG1vZHVsZSB0eXBlcy4KLQotICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotICAgICAgWW91IG1heSBjaGVjayB0aGUgZmlsZSBwYXRoJ3Mgc3VmZml4IGFnYWluc3QgdGhlIHN1cHBvcnRlZCBzdWZmaXhlcwotICAgICAgbGlzdGVkIGluIDptb2Q6YGltcG9ydGxpYi5tYWNoaW5lcnlgIHRvIGluZmVyIHRoZSBzYW1lIGluZm9ybWF0aW9uLgotCi0KIC4uIGZ1bmN0aW9uOjogZ2V0bW9kdWxlbmFtZShwYXRoKQogCiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBuYW1lZCBieSB0aGUgZmlsZSAqcGF0aCosIHdpdGhvdXQgaW5jbHVkaW5nIHRoZQpAQCAtMjY2LDggKzI0OCw3IEBACiAgICBzdGlsbCByZXR1cm4gYGBOb25lYGAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHRoZQotICAgICAgZGVwcmVjYXRlZCA6ZnVuYzpgZ2V0bW9kdWxlaW5mb2AuCisgICAgICBUaGUgZnVuY3Rpb24gaXMgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYC4KIAogCiAuLiBmdW5jdGlvbjo6IGlzbW9kdWxlKG9iamVjdCkKQEAgLTY0Niw2ICs2MjcsMTYgQEAKICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuICBUaGUgbmFtZSBtdXN0IGJlIGEgdmFsaWQKICAgICAgIFB5dGhvbiBpZGVudGlmaWVyLgogCisgICAgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgICAgIENQeXRob24gZ2VuZXJhdGVzIGltcGxpY2l0IHBhcmFtZXRlciBuYW1lcyBvZiB0aGUgZm9ybSBgYC4wYGAgb24gdGhlCisgICAgICAgICBjb2RlIG9iamVjdHMgdXNlZCB0byBpbXBsZW1lbnQgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvcgorICAgICAgICAgZXhwcmVzc2lvbnMuCisKKyAgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICAgICBUaGVzZSBwYXJhbWV0ZXIgbmFtZXMgYXJlIGV4cG9zZWQgYnkgdGhpcyBtb2R1bGUgYXMgbmFtZXMgbGlrZQorICAgICAgICAgICAgYGBpbXBsaWNpdDBgYC4KKwogICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmRlZmF1bHQKIAogICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwYXJhbWV0ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBkZWZhdWx0CkBAIC04NTQsOCArODQ1LDYgQEAKICAgIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4gICphbm5vdGF0aW9ucyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgYXJndW1lbnQKICAgIG5hbWVzIHRvIGFubm90YXRpb25zLgogCi0gICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byA6ZnVuYzpgZ2V0YXJnc3BlY2AuCi0KICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBiYXNlZCBvbiA6ZnVuYzpgc2lnbmF0dXJlYCwgYnV0IHN0aWxsIGlnbm9yZXMKICAgICAgIGBgX193cmFwcGVkX19gYCBhdHRyaWJ1dGVzIGFuZCBpbmNsdWRlcyB0aGUgYWxyZWFkeSBib3VuZCBmaXJzdApAQCAtODg0LDcgKzg3Myw3IEBACiAuLiBmdW5jdGlvbjo6IGZvcm1hdGFyZ3NwZWMoYXJnc1ssIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zWywgZm9ybWF0YXJnLCBmb3JtYXR2YXJhcmdzLCBmb3JtYXR2YXJrdywgZm9ybWF0dmFsdWUsIGZvcm1hdHJldHVybnMsIGZvcm1hdGFubm90YXRpb25zXV0pCiAKICAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQotICAgOmZ1bmM6YGdldGFyZ3NwZWNgIG9yIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCisgICA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgLgogCiAgICBUaGUgZmlyc3Qgc2V2ZW4gYXJndW1lbnRzIGFyZSAoYGBhcmdzYGAsIGBgdmFyYXJnc2BgLCBgYHZhcmt3YGAsCiAgICBgYGRlZmF1bHRzYGAsIGBga3dvbmx5YXJnc2BgLCBgYGt3b25seWRlZmF1bHRzYGAsIGBgYW5ub3RhdGlvbnNgYCkuCkBAIC0xMjY0LDIwICsxMjUzLDI5IEBACiAKIC4uIGRhdGE6OiBDT19DT1JPVVRJTkUKIAotICAgVGhlIGZsYWcgaXMgc2V0IHdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLCBpLmUuCi0gICBhIGNvcm91dGluZSBvYmplY3QgaXMgcmV0dXJuZWQgd2hlbiB0aGUgY29kZSBvYmplY3QgaXMgZXhlY3V0ZWQuICBTZWUKLSAgIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KKyAgIFRoZSBmbGFnIGlzIHNldCB3aGVuIHRoZSBjb2RlIG9iamVjdCBpcyBhIGNvcm91dGluZSBmdW5jdGlvbi4KKyAgIFdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGV4ZWN1dGVkIGl0IHJldHVybnMgYSBjb3JvdXRpbmUgb2JqZWN0LgorICAgU2VlIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIC4uIGRhdGE6OiBDT19JVEVSQUJMRV9DT1JPVVRJTkUKIAotICAgVXNlZCB0byB0dXJuIGdlbmVyYXRvcnMgaW50byBnZW5lcmF0b3ItYmFzZWQgY29yb3V0aW5lcy4gIEdlbmVyYXRvcgotICAgb2JqZWN0cyB3aXRoIHRoaXMgZmxhZyBjYW4gYmUgdXNlZCBpbiBgYGF3YWl0YGAgZXhwcmVzc2lvbiwgYW5kIGNhbgotICAgYGB5aWVsZCBmcm9tYGAgY29yb3V0aW5lIG9iamVjdHMuICBTZWUgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgorICAgVGhlIGZsYWcgaXMgdXNlZCB0byB0cmFuc2Zvcm0gZ2VuZXJhdG9ycyBpbnRvIGdlbmVyYXRvci1iYXNlZAorICAgY29yb3V0aW5lcy4gIEdlbmVyYXRvciBvYmplY3RzIHdpdGggdGhpcyBmbGFnIGNhbiBiZSB1c2VkIGluCisgICBgYGF3YWl0YGAgZXhwcmVzc2lvbiwgYW5kIGNhbiBgYHlpZWxkIGZyb21gYCBjb3JvdXRpbmUgb2JqZWN0cy4KKyAgIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisuLiBkYXRhOjogQ09fQVNZTkNfR0VORVJBVE9SCisKKyAgIFRoZSBmbGFnIGlzIHNldCB3aGVuIHRoZSBjb2RlIG9iamVjdCBpcyBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yCisgICBmdW5jdGlvbi4gIFdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGV4ZWN1dGVkIGl0IHJldHVybnMgYW4KKyAgIGFzeW5jaHJvbm91cyBnZW5lcmF0b3Igb2JqZWN0LiAgU2VlIDpwZXA6YDUyNWAgZm9yIG1vcmUgZGV0YWlscy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIG5vdGU6OgogICAgVGhlIGZsYWdzIGFyZSBzcGVjaWZpYyB0byBDUHl0aG9uLCBhbmQgbWF5IG5vdCBiZSBkZWZpbmVkIGluIG90aGVyCiAgICBQeXRob24gaW1wbGVtZW50YXRpb25zLiAgRnVydGhlcm1vcmUsIHRoZSBmbGFncyBhcmUgYW4gaW1wbGVtZW50YXRpb24KQEAgLTEyODYsNyArMTI4NCw2IEBACiAgICBmb3IgYW55IGludHJvc3BlY3Rpb24gbmVlZHMuCiAKIAotCiAuLiBfaW5zcGVjdC1tb2R1bGUtY2xpOgogCiBDb21tYW5kIExpbmUgSW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCBkZmMxZGRjLi5iMGQwYThjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTU5MSw3ICs1OTEsMTMgQEAKIAogLi4gZnVuY3Rpb246OiB0ZWUoaXRlcmFibGUsIG49MikKIAotICAgUmV0dXJuICpuKiBpbmRlcGVuZGVudCBpdGVyYXRvcnMgZnJvbSBhIHNpbmdsZSBpdGVyYWJsZS4gIFJvdWdobHkgZXF1aXZhbGVudCB0bzo6CisgICBSZXR1cm4gKm4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyBmcm9tIGEgc2luZ2xlIGl0ZXJhYmxlLgorCisgICBUaGUgZm9sbG93aW5nIFB5dGhvbiBjb2RlIGhlbHBzIGV4cGxhaW4gd2hhdCAqdGVlKiBkb2VzIChhbHRob3VnaCB0aGUgYWN0dWFsCisgICBpbXBsZW1lbnRhdGlvbiBpcyBtb3JlIGNvbXBsZXggYW5kIHVzZXMgb25seSBhIHNpbmdsZSB1bmRlcmx5aW5nCisgICA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlKS4KKworICAgUm91Z2hseSBlcXVpdmFsZW50IHRvOjoKIAogICAgICAgICBkZWYgdGVlKGl0ZXJhYmxlLCBuPTIpOgogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvanNvbi5yc3QgYi9Eb2MvbGlicmFyeS9qc29uLnJzdAppbmRleCA4NThhNTllLi4yMDBmYTE0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9qc29uLnJzdAorKysgYi9Eb2MvbGlicmFyeS9qc29uLnJzdApAQCAtMTI2LDcgKzEyNiw3IEBACiBCYXNpYyBVc2FnZQogLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBkdW1wKG9iaiwgZnAsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAorLi4gZnVuY3Rpb246OiBkdW1wKG9iaiwgZnAsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgIHNvcnRfa2V5cz1GYWxzZSwgKiprdykKQEAgLTE4Nyw4ICsxODcsMTEgQEAKICAgIDptZXRoOmBkZWZhdWx0YCBtZXRob2QgdG8gc2VyaWFsaXplIGFkZGl0aW9uYWwgdHlwZXMpLCBzcGVjaWZ5IGl0IHdpdGggdGhlCiAgICAqY2xzKiBrd2FyZzsgb3RoZXJ3aXNlIDpjbGFzczpgSlNPTkVuY29kZXJgIGlzIHVzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgogCi0uLiBmdW5jdGlvbjo6IGR1bXBzKG9iaiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCisKKy4uIGZ1bmN0aW9uOjogZHVtcHMob2JqLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKICAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9RmFsc2UsICoqa3cpCkBAIC0yMTIsNyArMjE1LDcgQEAKICAgICAgIHRoZSBvcmlnaW5hbCBvbmUuIFRoYXQgaXMsIGBgbG9hZHMoZHVtcHMoeCkpICE9IHhgYCBpZiB4IGhhcyBub24tc3RyaW5nCiAgICAgICBrZXlzLgogCi0uLiBmdW5jdGlvbjo6IGxvYWQoZnAsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKy4uIGZ1bmN0aW9uOjogbG9hZChmcCwgKiwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQogCiAgICBEZXNlcmlhbGl6ZSAqZnAqIChhIGBgLnJlYWQoKWBgLXN1cHBvcnRpbmcgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgCiAgICBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMgOnJlZjpgY29udmVyc2lvbgpAQCAtMjYwLDEwICsyNjMsMTQgQEAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCiAgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCi0uLiBmdW5jdGlvbjo6IGxvYWRzKHMsIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgogCi0gICBEZXNlcmlhbGl6ZSAqcyogKGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhCi0gICBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMgOnJlZjpgY29udmVyc2lvbiB0YWJsZSA8anNvbi10by1weS10YWJsZT5gLgorLi4gZnVuY3Rpb246OiBsb2FkcyhzLCAqLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCisKKyAgIERlc2VyaWFsaXplICpzKiAoYSA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgIG9yIDpjbGFzczpgYnl0ZWFycmF5YAorICAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdCB1c2luZyB0aGlzCisgICA6cmVmOmBjb252ZXJzaW9uIHRhYmxlIDxqc29uLXRvLXB5LXRhYmxlPmAuCiAKICAgIFRoZSBvdGhlciBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGluIDpmdW5jOmBsb2FkYCwgZXhjZXB0CiAgICAqZW5jb2RpbmcqIHdoaWNoIGlzIGlnbm9yZWQgYW5kIGRlcHJlY2F0ZWQuCkBAIC0yNzQsNyArMjgxLDcgQEAKIEVuY29kZXJzIGFuZCBEZWNvZGVycwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS4uIGNsYXNzOjogSlNPTkRlY29kZXIob2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIHN0cmljdD1UcnVlLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQorLi4gY2xhc3M6OiBKU09ORGVjb2RlcigqLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCiAKICAgIFNpbXBsZSBKU09OIGRlY29kZXIuCiAKQEAgLTM0NCw2ICszNTEsOSBAQAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKICAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgorCiAgICAuLiBtZXRob2Q6OiBkZWNvZGUocykKIAogICAgICAgUmV0dXJuIHRoZSBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgKnMqIChhIDpjbGFzczpgc3RyYCBpbnN0YW5jZQpAQCAtMzYyLDcgKzM3Miw3IEBACiAgICAgICBleHRyYW5lb3VzIGRhdGEgYXQgdGhlIGVuZC4KIAogCi0uLiBjbGFzczo6IEpTT05FbmNvZGVyKHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKQorLi4gY2xhc3M6OiBKU09ORW5jb2RlcigqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBzb3J0X2tleXM9RmFsc2UsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSkKIAogICAgRXh0ZW5zaWJsZSBKU09OIGVuY29kZXIgZm9yIFB5dGhvbiBkYXRhIHN0cnVjdHVyZXMuCiAKQEAgLTQ0Myw2ICs0NTMsOSBAQAogICAgdGhlIG9iamVjdCBvciByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuICBJZiBub3Qgc3BlY2lmaWVkLCA6ZXhjOmBUeXBlRXJyb3JgCiAgICBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBbGwgcGFyYW1ldGVycyBhcmUgbm93IDpyZWY6YGtleXdvcmQtb25seSA8a2V5d29yZC1vbmx5X3BhcmFtZXRlcj5gLgorCiAKICAgIC4uIG1ldGhvZDo6IGRlZmF1bHQobykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAppbmRleCAwYzAyZDNkLi42YmUzMjc5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdApAQCAtODQsNiArODQsOSBAQAogICAgd2l0aCB0aGF0IGVuY29kaW5nLiAgSWYgKmRlbGF5KiBpcyB0cnVlLCB0aGVuIGZpbGUgb3BlbmluZyBpcyBkZWZlcnJlZCB1bnRpbCB0aGUKICAgIGZpcnN0IGNhbGwgdG8gOm1ldGg6YGVtaXRgLiBCeSBkZWZhdWx0LCB0aGUgZmlsZSBncm93cyBpbmRlZmluaXRlbHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTE2MCwxMiArMTYzLDIzIEBACiAgICB3aXRoIHRoYXQgZW5jb2RpbmcuICBJZiAqZGVsYXkqIGlzIHRydWUsIHRoZW4gZmlsZSBvcGVuaW5nIGlzIGRlZmVycmVkIHVudGlsIHRoZQogICAgZmlyc3QgY2FsbCB0byA6bWV0aDpgZW1pdGAuICBCeSBkZWZhdWx0LCB0aGUgZmlsZSBncm93cyBpbmRlZmluaXRlbHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgorCisgICAuLiBtZXRob2Q6OiByZW9wZW5JZk5lZWRlZCgpCisKKyAgICAgIENoZWNrcyB0byBzZWUgaWYgdGhlIGZpbGUgaGFzIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMKKyAgICAgIGZsdXNoZWQgYW5kIGNsb3NlZCBhbmQgdGhlIGZpbGUgb3BlbmVkIGFnYWluLCB0eXBpY2FsbHkgYXMgYSBwcmVjdXJzb3IgdG8KKyAgICAgIG91dHB1dHRpbmcgdGhlIHJlY29yZCB0byB0aGUgZmlsZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogICAgLi4gbWV0aG9kOjogZW1pdChyZWNvcmQpCiAKLSAgICAgIE91dHB1dHMgdGhlIHJlY29yZCB0byB0aGUgZmlsZSwgYnV0IGZpcnN0IGNoZWNrcyB0byBzZWUgaWYgdGhlIGZpbGUgaGFzCi0gICAgICBjaGFuZ2VkLiAgSWYgaXQgaGFzLCB0aGUgZXhpc3Rpbmcgc3RyZWFtIGlzIGZsdXNoZWQgYW5kIGNsb3NlZCBhbmQgdGhlCi0gICAgICBmaWxlIG9wZW5lZCBhZ2FpbiwgYmVmb3JlIG91dHB1dHRpbmcgdGhlIHJlY29yZCB0byB0aGUgZmlsZS4KKyAgICAgIE91dHB1dHMgdGhlIHJlY29yZCB0byB0aGUgZmlsZSwgYnV0IGZpcnN0IGNhbGxzIDptZXRoOmByZW9wZW5JZk5lZWRlZGAgdG8KKyAgICAgIHJlb3BlbiB0aGUgZmlsZSBpZiBpdCBoYXMgY2hhbmdlZC4KIAogLi4gX2Jhc2Utcm90YXRpbmctaGFuZGxlcjoKIApAQCAtMjc5LDYgKzI5Myw5IEBACiAgICA6ZmlsZTpgYXBwLmxvZy4yYCwgZXRjLiAgZXhpc3QsIHRoZW4gdGhleSBhcmUgcmVuYW1lZCB0byA6ZmlsZTpgYXBwLmxvZy4yYCwKICAgIDpmaWxlOmBhcHAubG9nLjNgIGV0Yy4gIHJlc3BlY3RpdmVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCiAKICAgIC4uIG1ldGhvZDo6IGRvUm9sbG92ZXIoKQogCkBAIC0zMTAsMjEgKzMyNywyNCBAQAogICAgWW91IGNhbiB1c2UgdGhlICp3aGVuKiB0byBzcGVjaWZ5IHRoZSB0eXBlIG9mICppbnRlcnZhbCouIFRoZSBsaXN0IG9mIHBvc3NpYmxlCiAgICB2YWx1ZXMgaXMgYmVsb3cuICBOb3RlIHRoYXQgdGhleSBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLgogCi0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgVmFsdWUgICAgICAgICAgfCBUeXBlIG9mIGludGVydmFsICAgICAgfAotICAgKz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rCi0gICB8IGBgJ1MnYGAgICAgICAgIHwgU2Vjb25kcyAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdNJ2BgICAgICAgICB8IE1pbnV0ZXMgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnSCdgYCAgICAgICAgfCBIb3VycyAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ0QnYGAgICAgICAgIHwgRGF5cyAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdXMCctJ1c2J2BgICB8IFdlZWtkYXkgKDA9TW9uZGF5KSAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnbWlkbmlnaHQnYGAgfCBSb2xsIG92ZXIgYXQgbWlkbmlnaHQgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IFZhbHVlICAgICAgICAgIHwgVHlwZSBvZiBpbnRlcnZhbCAgICAgICAgICAgfCBJZi9ob3cgKmF0VGltZSogaXMgdXNlZCB8CisgICArPT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICB8IGBgJ1MnYGAgICAgICAgIHwgU2Vjb25kcyAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ00nYGAgICAgICAgIHwgTWludXRlcyAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ0gnYGAgICAgICAgIHwgSG91cnMgICAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ0QnYGAgICAgICAgIHwgRGF5cyAgICAgICAgICAgICAgICAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ1cwJy0nVzYnYGAgIHwgV2Vla2RheSAoMD1Nb25kYXkpICAgICAgICAgfCBVc2VkIHRvIGNvbXB1dGUgaW5pdGlhbCB8CisgICB8ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByb2xsb3ZlciB0aW1lICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ21pZG5pZ2h0J2BgIHwgUm9sbCBvdmVyIGF0IG1pZG5pZ2h0LCBpZiAgfCBVc2VkIHRvIGNvbXB1dGUgaW5pdGlhbCB8CisgICB8ICAgICAgICAgICAgICAgIHwgKmF0VGltZSogbm90IHNwZWNpZmllZCwgICAgfCByb2xsb3ZlciB0aW1lICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgIHwgZWxzZSBhdCB0aW1lICphdFRpbWUqICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFdoZW4gdXNpbmcgd2Vla2RheS1iYXNlZCByb3RhdGlvbiwgc3BlY2lmeSAnVzAnIGZvciBNb25kYXksICdXMScgZm9yCiAgICBUdWVzZGF5LCBhbmQgc28gb24gdXAgdG8gJ1c2JyBmb3IgU3VuZGF5LiBJbiB0aGlzIGNhc2UsIHRoZSB2YWx1ZSBwYXNzZWQgZm9yCkBAIC0zNTIsMTYgKzM3MiwzNSBAQAogCiAgICBJZiAqYXRUaW1lKiBpcyBub3QgYGBOb25lYGAsIGl0IG11c3QgYmUgYSBgYGRhdGV0aW1lLnRpbWVgYCBpbnN0YW5jZSB3aGljaAogICAgc3BlY2lmaWVzIHRoZSB0aW1lIG9mIGRheSB3aGVuIHJvbGxvdmVyIG9jY3VycywgZm9yIHRoZSBjYXNlcyB3aGVyZSByb2xsb3ZlcgotICAgaXMgc2V0IHRvIGhhcHBlbiAiYXQgbWlkbmlnaHQiIG9yICJvbiBhIHBhcnRpY3VsYXIgd2Vla2RheSIuCisgICBpcyBzZXQgdG8gaGFwcGVuICJhdCBtaWRuaWdodCIgb3IgIm9uIGEgcGFydGljdWxhciB3ZWVrZGF5Ii4gTm90ZSB0aGF0IGluCisgICB0aGVzZSBjYXNlcywgdGhlICphdFRpbWUqIHZhbHVlIGlzIGVmZmVjdGl2ZWx5IHVzZWQgdG8gY29tcHV0ZSB0aGUgKmluaXRpYWwqCisgICByb2xsb3ZlciwgYW5kIHN1YnNlcXVlbnQgcm9sbG92ZXJzIHdvdWxkIGJlIGNhbGN1bGF0ZWQgdmlhIHRoZSBub3JtYWwKKyAgIGludGVydmFsIGNhbGN1bGF0aW9uLgorCisgICAuLiBub3RlOjogQ2FsY3VsYXRpb24gb2YgdGhlIGluaXRpYWwgcm9sbG92ZXIgdGltZSBpcyBkb25lIHdoZW4gdGhlIGhhbmRsZXIKKyAgICAgIGlzIGluaXRpYWxpc2VkLiBDYWxjdWxhdGlvbiBvZiBzdWJzZXF1ZW50IHJvbGxvdmVyIHRpbWVzIGlzIGRvbmUgb25seQorICAgICAgd2hlbiByb2xsb3ZlciBvY2N1cnMsIGFuZCByb2xsb3ZlciBvY2N1cnMgb25seSB3aGVuIGVtaXR0aW5nIG91dHB1dC4gSWYKKyAgICAgIHRoaXMgaXMgbm90IGtlcHQgaW4gbWluZCwgaXQgbWlnaHQgbGVhZCB0byBzb21lIGNvbmZ1c2lvbi4gRm9yIGV4YW1wbGUsCisgICAgICBpZiBhbiBpbnRlcnZhbCBvZiAiZXZlcnkgbWludXRlIiBpcyBzZXQsIHRoYXQgZG9lcyBub3QgbWVhbiB5b3Ugd2lsbAorICAgICAgYWx3YXlzIHNlZSBsb2cgZmlsZXMgd2l0aCB0aW1lcyAoaW4gdGhlIGZpbGVuYW1lKSBzZXBhcmF0ZWQgYnkgYSBtaW51dGU7CisgICAgICBpZiwgZHVyaW5nIGFwcGxpY2F0aW9uIGV4ZWN1dGlvbiwgbG9nZ2luZyBvdXRwdXQgaXMgZ2VuZXJhdGVkIG1vcmUKKyAgICAgIGZyZXF1ZW50bHkgdGhhbiBvbmNlIGEgbWludXRlLCAqdGhlbiogeW91IGNhbiBleHBlY3QgdG8gc2VlIGxvZyBmaWxlcworICAgICAgd2l0aCB0aW1lcyBzZXBhcmF0ZWQgYnkgYSBtaW51dGUuIElmLCBvbiB0aGUgb3RoZXIgaGFuZCwgbG9nZ2luZyBtZXNzYWdlcworICAgICAgYXJlIG9ubHkgb3V0cHV0IG9uY2UgZXZlcnkgZml2ZSBtaW51dGVzIChzYXkpLCB0aGVuIHRoZXJlIHdpbGwgYmUgZ2FwcyBpbgorICAgICAgdGhlIGZpbGUgdGltZXMgY29ycmVzcG9uZGluZyB0byB0aGUgbWludXRlcyB3aGVyZSBubyBvdXRwdXQgKGFuZCBoZW5jZSBubworICAgICAgcm9sbG92ZXIpIG9jY3VycmVkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgKmF0VGltZSogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IGRvUm9sbG92ZXIoKQogCiAgICAgICBEb2VzIGEgcm9sbG92ZXIsIGFzIGRlc2NyaWJlZCBhYm92ZS4KIAotCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAogICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBjYXRlcmluZyBmb3Igcm9sbG92ZXIgYXMgZGVzY3JpYmVkIGFib3ZlLgpAQCAtNzk4LDEyICs4MzcsMTggQEAKICAgICAgIG92ZXJyaWRkZW4gdG8gaW1wbGVtZW50IGN1c3RvbSBmbHVzaGluZyBzdHJhdGVnaWVzLgogCiAKLS4uIGNsYXNzOjogTWVtb3J5SGFuZGxlcihjYXBhY2l0eSwgZmx1c2hMZXZlbD1FUlJPUiwgdGFyZ2V0PU5vbmUpCisuLiBjbGFzczo6IE1lbW9yeUhhbmRsZXIoY2FwYWNpdHksIGZsdXNoTGV2ZWw9RVJST1IsIHRhcmdldD1Ob25lLCBmbHVzaE9uQ2xvc2U9VHJ1ZSkKIAogICAgUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgOmNsYXNzOmBNZW1vcnlIYW5kbGVyYCBjbGFzcy4gVGhlIGluc3RhbmNlIGlzCiAgICBpbml0aWFsaXplZCB3aXRoIGEgYnVmZmVyIHNpemUgb2YgKmNhcGFjaXR5Ki4gSWYgKmZsdXNoTGV2ZWwqIGlzIG5vdCBzcGVjaWZpZWQsCiAgICA6Y29uc3Q6YEVSUk9SYCBpcyB1c2VkLiBJZiBubyAqdGFyZ2V0KiBpcyBzcGVjaWZpZWQsIHRoZSB0YXJnZXQgd2lsbCBuZWVkIHRvIGJlCi0gICBzZXQgdXNpbmcgOm1ldGg6YHNldFRhcmdldGAgYmVmb3JlIHRoaXMgaGFuZGxlciBkb2VzIGFueXRoaW5nIHVzZWZ1bC4KKyAgIHNldCB1c2luZyA6bWV0aDpgc2V0VGFyZ2V0YCBiZWZvcmUgdGhpcyBoYW5kbGVyIGRvZXMgYW55dGhpbmcgdXNlZnVsLiBJZgorICAgKmZsdXNoT25DbG9zZSogaXMgc3BlY2lmaWVkIGFzIGBgRmFsc2VgYCwgdGhlbiB0aGUgYnVmZmVyIGlzICpub3QqIGZsdXNoZWQgd2hlbgorICAgdGhlIGhhbmRsZXIgaXMgY2xvc2VkLiBJZiBub3Qgc3BlY2lmaWVkIG9yIHNwZWNpZmllZCBhcyBgYFRydWVgYCwgdGhlIHByZXZpb3VzCisgICBiZWhhdmlvdXIgb2YgZmx1c2hpbmcgdGhlIGJ1ZmZlciB3aWxsIG9jY3VyIHdoZW4gdGhlIGhhbmRsZXIgaXMgY2xvc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpmbHVzaE9uQ2xvc2UqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbHptYS5yc3QgYi9Eb2MvbGlicmFyeS9sem1hLnJzdAppbmRleCA2MWIzYmEzLi41ZWRiMjNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sem1hLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApAQCAtMzksOCArMzksOSBAQAogICAgb2JqZWN0YC4KIAogICAgVGhlICpmaWxlbmFtZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhCi0gICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcwotICAgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCBvciA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgb2JqZWN0KSwgaW4KKyAgIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QKKyAgIHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KIAogICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgYW55IG9mIGBgInIiYGAsIGBgInJiImBgLCBgYCJ3ImBgLCBgYCJ3YiJgYCwKICAgIGBgIngiYGAsIGBgInhiImBgLCBgYCJhImBgIG9yIGBgImFiImBgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAicnQiYGAsCkBAIC02NCw2ICs2NSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgIngiYGAsIGBgInhiImBgIGFuZCBgYCJ4dCJgYCBtb2Rlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBMWk1BRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPSJyIiwgXCosIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSkKIApAQCAtNzEsOSArNzUsMTAgQEAKIAogICAgQW4gOmNsYXNzOmBMWk1BRmlsZWAgY2FuIHdyYXAgYW4gYWxyZWFkeS1vcGVuIDp0ZXJtOmBmaWxlIG9iamVjdGAsIG9yIG9wZXJhdGUKICAgIGRpcmVjdGx5IG9uIGEgbmFtZWQgZmlsZS4gVGhlICpmaWxlbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIGVpdGhlciB0aGUgZmlsZQotICAgb2JqZWN0IHRvIHdyYXAsIG9yIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIG9wZW4gKGFzIGEgOmNsYXNzOmBzdHJgIG9yCi0gICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLiBXaGVuIHdyYXBwaW5nIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCB0aGUgd3JhcHBlZAotICAgZmlsZSB3aWxsIG5vdCBiZSBjbG9zZWQgd2hlbiB0aGUgOmNsYXNzOmBMWk1BRmlsZWAgaXMgY2xvc2VkLgorICAgb2JqZWN0IHRvIHdyYXAsIG9yIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIG9wZW4gKGFzIGEgOmNsYXNzOmBzdHJgLAorICAgOmNsYXNzOmBieXRlc2Agb3IgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4KKyAgIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCB0aGUgd3JhcHBlZCBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZQorICAgOmNsYXNzOmBMWk1BRmlsZWAgaXMgY2xvc2VkLgogCiAgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYGAiciJgYCBmb3IgcmVhZGluZyAoZGVmYXVsdCksIGBgInciYGAgZm9yCiAgICBvdmVyd3JpdGluZywgYGAieCJgYCBmb3IgZXhjbHVzaXZlIGNyZWF0aW9uLCBvciBgYCJhImBgIGZvciBhcHBlbmRpbmcuIFRoZXNlCkBAIC0xMTgsNiArMTIzLDkgQEAKICAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgogICAgICAgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIENvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdAppbmRleCAzZmRlYTE4Li5kYTJiOGNjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXRoLnJzdApAQCAtNDI2LDYgKzQyNiwxNSBAQAogCiAgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IGUgPSAyLjcxODI4MS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KIAorLi4gZGF0YTo6IHRhdQorCisgICBUaGUgbWF0aGVtYXRpY2FsIGNvbnN0YW50IM+EID0gNi4yODMxODUuLi4sIHRvIGF2YWlsYWJsZSBwcmVjaXNpb24uCisgICBUYXUgaXMgYSBjaXJjbGUgY29uc3RhbnQgZXF1YWwgdG8gMs+ALCB0aGUgcmF0aW8gb2YgYSBjaXJjbGUncyBjaXJjdW1mZXJlbmNlIHRvCisgICBpdHMgcmFkaXVzLiBUbyBsZWFybiBtb3JlIGFib3V0IFRhdSwgY2hlY2sgb3V0IFZpIEhhcnQncyB2aWRlbyBgUGkgaXMgKHN0aWxsKQorICAgV3JvbmcgPGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9akc3dmhNTVhhZ1E+YF8sIGFuZCBzdGFydCBjZWxlYnJhdGluZworICAgYFRhdSBkYXkgPGh0dHA6Ly90YXVkYXkuY29tLz5gXyBieSBlYXRpbmcgdHdpY2UgYXMgbXVjaCBwaWUhCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBkYXRhOjogaW5mCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21tYXAucnN0IGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKaW5kZXggZjRhNmY1My4uNmU2ZTI5MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKQEAgLTI2NCwxMyArMjY0LDE4IEBACiAgICAuLiBtZXRob2Q6OiB3cml0ZShieXRlcykKIAogICAgICAgV3JpdGUgdGhlIGJ5dGVzIGluICpieXRlcyogaW50byBtZW1vcnkgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlCi0gICAgICBmaWxlIHBvaW50ZXI7IHRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQKLSAgICAgIHdlcmUgd3JpdHRlbi4gSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgorICAgICAgZmlsZSBwb2ludGVyIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIChuZXZlciBsZXNzIHRoYW4KKyAgICAgIGBgbGVuKGJ5dGVzKWBgLCBzaW5jZSBpZiB0aGUgd3JpdGUgZmFpbHMsIGEgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZQorICAgICAgcmFpc2VkKS4gIFRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQKKyAgICAgIHdlcmUgd3JpdHRlbi4gIElmIHRoZSBtbWFwIHdhcyBjcmVhdGVkIHdpdGggOmNvbnN0OmBBQ0NFU1NfUkVBRGAsIHRoZW4KICAgICAgIHdyaXRpbmcgdG8gaXQgd2lsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgZXhjZXB0aW9uLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgICAgV3JpdGFibGUgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBub3cgYWNjZXB0ZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gaXMgbm93IHJldHVybmVkLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlX2J5dGUoYnl0ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggZDQ1YmMyMC4uOTZkMTQyNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC02NTAsOCArNjUwLDkgQEAKIEZvciBwYXNzaW5nIG1lc3NhZ2VzIG9uZSBjYW4gdXNlIDpmdW5jOmBQaXBlYCAoZm9yIGEgY29ubmVjdGlvbiBiZXR3ZWVuIHR3bwogcHJvY2Vzc2VzKSBvciBhIHF1ZXVlICh3aGljaCBhbGxvd3MgbXVsdGlwbGUgcHJvZHVjZXJzIGFuZCBjb25zdW1lcnMpLgogCi1UaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKLW11bHRpLWNvbnN1bWVyIEZJRk8gcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKK1RoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBTaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMKK2FyZSBtdWx0aS1wcm9kdWNlciwgbXVsdGktY29uc3VtZXIgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYAorcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKIHN0YW5kYXJkIGxpYnJhcnkuICBUaGV5IGRpZmZlciBpbiB0aGF0IDpjbGFzczpgUXVldWVgIGxhY2tzIHRoZQogOm1ldGg6YH5xdWV1ZS5RdWV1ZS50YXNrX2RvbmVgIGFuZCA6bWV0aDpgfnF1ZXVlLlF1ZXVlLmpvaW5gIG1ldGhvZHMgaW50cm9kdWNlZAogaW50byBQeXRob24gMi41J3MgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MuCkBAIC04ODksOCArODkwLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogY3B1X2NvdW50KCkKIAotICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLiAgTWF5IHJhaXNlCi0gICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4KKworICAgVGhpcyBudW1iZXIgaXMgbm90IGVxdWl2YWxlbnQgdG8gdGhlIG51bWJlciBvZiBDUFVzIHRoZSBjdXJyZW50IHByb2Nlc3MgY2FuCisgICB1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoCisgICBgYGxlbihvcy5zY2hlZF9nZXRhZmZpbml0eSgwKSlgYAorCisgICBNYXkgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCiAKICAgIC4uIHNlZWFsc286OgogICAgICAgOmZ1bmM6YG9zLmNwdV9jb3VudGAKQEAgLTE2NzksNyArMTY4NSw5IEBACiAgICBvZiBwcm9jZXNzZXMuICBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgcmV0dXJuZWQgYnkKICAgIDpmdW5jOmBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcmAuCiAKLSAgIEl0IGFsc28gc3VwcG9ydHMgY3JlYXRpb24gb2Ygc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCisgICBJdHMgbWV0aG9kcyBjcmVhdGUgYW5kIHJldHVybiA6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2AgZm9yIGEKKyAgIG51bWJlciBvZiBjb21tb25seSB1c2VkIGRhdGEgdHlwZXMgdG8gYmUgc3luY2hyb25pemVkIGFjcm9zcyBwcm9jZXNzZXMuCisgICBUaGlzIG5vdGFibHkgaW5jbHVkZXMgc2hhcmVkIGxpc3RzIGFuZCBkaWN0aW9uYXJpZXMuCiAKICAgIC4uIG1ldGhvZDo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKIApAQCAtMTc0MiwzMSArMTc1MCwxNyBAQAogICAgICAgICAgICAgICAgZGljdChtYXBwaW5nKQogICAgICAgICAgICAgICAgZGljdChzZXF1ZW5jZSkKIAotICAgICAgQ3JlYXRlIGEgc2hhcmVkIGBgZGljdGBgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgorICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgZGljdGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCiAKICAgIC4uIG1ldGhvZDo6IGxpc3QoKQogICAgICAgICAgICAgICAgbGlzdChzZXF1ZW5jZSkKIAotICAgICAgQ3JlYXRlIGEgc2hhcmVkIGBgbGlzdGBgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgorICAgICAgQ3JlYXRlIGEgc2hhcmVkIDpjbGFzczpgbGlzdGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBNb2RpZmljYXRpb25zIHRvIG11dGFibGUgdmFsdWVzIG9yIGl0ZW1zIGluIGRpY3QgYW5kIGxpc3QgcHJveGllcyB3aWxsIG5vdAotICAgICAgYmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBtYW5hZ2VyLCBiZWNhdXNlIHRoZSBwcm94eSBoYXMgbm8gd2F5IG9mIGtub3dpbmcKLSAgICAgIHdoZW4gaXRzIHZhbHVlcyBvciBpdGVtcyBhcmUgbW9kaWZpZWQuICBUbyBtb2RpZnkgc3VjaCBhbiBpdGVtLCB5b3UgY2FuCi0gICAgICByZS1hc3NpZ24gdGhlIG1vZGlmaWVkIG9iamVjdCB0byB0aGUgY29udGFpbmVyIHByb3h5OjoKLQotICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHByb3h5IGFuZCBhcHBlbmQgYSBtdXRhYmxlIG9iamVjdCAoYSBkaWN0aW9uYXJ5KQotICAgICAgICAgbHByb3h5ID0gbWFuYWdlci5saXN0KCkKLSAgICAgICAgIGxwcm94eS5hcHBlbmQoe30pCi0gICAgICAgICAjIG5vdyBtdXRhdGUgdGhlIGRpY3Rpb25hcnkKLSAgICAgICAgIGQgPSBscHJveHlbMF0KLSAgICAgICAgIGRbJ2EnXSA9IDEKLSAgICAgICAgIGRbJ2InXSA9IDIKLSAgICAgICAgICMgYXQgdGhpcyBwb2ludCwgdGhlIGNoYW5nZXMgdG8gZCBhcmUgbm90IHlldCBzeW5jZWQsIGJ1dCBieQotICAgICAgICAgIyByZWFzc2lnbmluZyB0aGUgZGljdGlvbmFyeSwgdGhlIHByb3h5IGlzIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2UKLSAgICAgICAgIGxwcm94eVswXSA9IGQKLQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFNoYXJlZCBvYmplY3RzIGFyZSBjYXBhYmxlIG9mIGJlaW5nIG5lc3RlZC4gIEZvciBleGFtcGxlLCBhIHNoYXJlZAorICAgICAgY29udGFpbmVyIG9iamVjdCBzdWNoIGFzIGEgc2hhcmVkIGxpc3QgY2FuIGNvbnRhaW4gb3RoZXIgc2hhcmVkIG9iamVjdHMKKyAgICAgIHdoaWNoIHdpbGwgYWxsIGJlIG1hbmFnZWQgYW5kIHN5bmNocm9uaXplZCBieSB0aGUgOmNsYXNzOmBTeW5jTWFuYWdlcmAuCiAKIC4uIGNsYXNzOjogTmFtZXNwYWNlCiAKQEAgLTE4NzgsNiArMTg3Miw4IEBACiAgICAgPj4+IHMgPSBtLmdldF9zZXJ2ZXIoKQogICAgID4+PiBzLnNlcnZlX2ZvcmV2ZXIoKQogCisuLiBfbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHM6CisKIFByb3h5IE9iamVjdHMKIH5+fn5+fn5+fn5+fn4KIApAQCAtMTg4Nyw4ICsxODgzLDcgQEAKIAogQSBwcm94eSBvYmplY3QgaGFzIG1ldGhvZHMgd2hpY2ggaW52b2tlIGNvcnJlc3BvbmRpbmcgbWV0aG9kcyBvZiBpdHMgcmVmZXJlbnQKIChhbHRob3VnaCBub3QgZXZlcnkgbWV0aG9kIG9mIHRoZSByZWZlcmVudCB3aWxsIG5lY2Vzc2FyaWx5IGJlIGF2YWlsYWJsZSB0aHJvdWdoCi10aGUgcHJveHkpLiAgQSBwcm94eSBjYW4gdXN1YWxseSBiZSB1c2VkIGluIG1vc3Qgb2YgdGhlIHNhbWUgd2F5cyB0aGF0IGl0cwotcmVmZXJlbnQgY2FuOgordGhlIHByb3h5KS4gIEluIHRoaXMgd2F5LCBhIHByb3h5IGNhbiBiZSB1c2VkIGp1c3QgbGlrZSBpdHMgcmVmZXJlbnQgY2FuOgogCiAuLiBkb2N0ZXN0OjoKIApAQCAtMTkwOSw5ICsxOTA0LDkgQEAKIHRoZSBwcm94eS4KIAogQW4gaW1wb3J0YW50IGZlYXR1cmUgb2YgcHJveHkgb2JqZWN0cyBpcyB0aGF0IHRoZXkgYXJlIHBpY2tsYWJsZSBzbyB0aGV5IGNhbiBiZQotcGFzc2VkIGJldHdlZW4gcHJvY2Vzc2VzLiAgTm90ZSwgaG93ZXZlciwgdGhhdCBpZiBhIHByb3h5IGlzIHNlbnQgdG8gdGhlCi1jb3JyZXNwb25kaW5nIG1hbmFnZXIncyBwcm9jZXNzIHRoZW4gdW5waWNrbGluZyBpdCB3aWxsIHByb2R1Y2UgdGhlIHJlZmVyZW50Ci1pdHNlbGYuICBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCBvbmUgc2hhcmVkIG9iamVjdCBjYW4gY29udGFpbiBhIHNlY29uZDoKK3Bhc3NlZCBiZXR3ZWVuIHByb2Nlc3Nlcy4gIEFzIHN1Y2gsIGEgcmVmZXJlbnQgY2FuIGNvbnRhaW4KKzpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYC4gIFRoaXMgcGVybWl0cyBuZXN0aW5nIG9mIHRoZXNlIG1hbmFnZWQKK2xpc3RzLCBkaWN0cywgYW5kIG90aGVyIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYDoKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE5MTksMTAgKzE5MTQsNDYgQEAKICAgID4+PiBiID0gbWFuYWdlci5saXN0KCkKICAgID4+PiBhLmFwcGVuZChiKSAgICAgICAgICMgcmVmZXJlbnQgb2YgYSBub3cgY29udGFpbnMgcmVmZXJlbnQgb2YgYgogICAgPj4+IHByaW50KGEsIGIpCi0gICBbW11dIFtdCisgICBbPExpc3RQcm94eSBvYmplY3QsIHR5cGVpZCAnbGlzdCcgYXQgLi4uPl0gW10KICAgID4+PiBiLmFwcGVuZCgnaGVsbG8nKQotICAgPj4+IHByaW50KGEsIGIpCi0gICBbWydoZWxsbyddXSBbJ2hlbGxvJ10KKyAgID4+PiBwcmludChhWzBdLCBiKQorICAgWydoZWxsbyddIFsnaGVsbG8nXQorCitTaW1pbGFybHksIGRpY3QgYW5kIGxpc3QgcHJveGllcyBtYXkgYmUgbmVzdGVkIGluc2lkZSBvbmUgYW5vdGhlcjo6CisKKyAgID4+PiBsX291dGVyID0gbWFuYWdlci5saXN0KFsgbWFuYWdlci5kaWN0KCkgZm9yIGkgaW4gcmFuZ2UoMikgXSkKKyAgID4+PiBkX2ZpcnN0X2lubmVyID0gbF9vdXRlclswXQorICAgPj4+IGRfZmlyc3RfaW5uZXJbJ2EnXSA9IDEKKyAgID4+PiBkX2ZpcnN0X2lubmVyWydiJ10gPSAyCisgICA+Pj4gbF9vdXRlclsxXVsnYyddID0gMworICAgPj4+IGxfb3V0ZXJbMV1bJ3onXSA9IDI2CisgICA+Pj4gcHJpbnQobF9vdXRlclswXSkKKyAgIHsnYSc6IDEsICdiJzogMn0KKyAgID4+PiBwcmludChsX291dGVyWzFdKQorICAgeydjJzogMywgJ3onOiAyNn0KKworSWYgc3RhbmRhcmQgKG5vbi1wcm94eSkgOmNsYXNzOmBsaXN0YCBvciA6Y2xhc3M6YGRpY3RgIG9iamVjdHMgYXJlIGNvbnRhaW5lZAoraW4gYSByZWZlcmVudCwgbW9kaWZpY2F0aW9ucyB0byB0aG9zZSBtdXRhYmxlIHZhbHVlcyB3aWxsIG5vdCBiZSBwcm9wYWdhdGVkCit0aHJvdWdoIHRoZSBtYW5hZ2VyIGJlY2F1c2UgdGhlIHByb3h5IGhhcyBubyB3YXkgb2Yga25vd2luZyB3aGVuIHRoZSB2YWx1ZXMKK2NvbnRhaW5lZCB3aXRoaW4gYXJlIG1vZGlmaWVkLiAgSG93ZXZlciwgc3RvcmluZyBhIHZhbHVlIGluIGEgY29udGFpbmVyIHByb3h5Cisod2hpY2ggdHJpZ2dlcnMgYSBgYF9fc2V0aXRlbV9fYGAgb24gdGhlIHByb3h5IG9iamVjdCkgZG9lcyBwcm9wYWdhdGUgdGhyb3VnaAordGhlIG1hbmFnZXIgYW5kIHNvIHRvIGVmZmVjdGl2ZWx5IG1vZGlmeSBzdWNoIGFuIGl0ZW0sIG9uZSBjb3VsZCByZS1hc3NpZ24gdGhlCittb2RpZmllZCB2YWx1ZSB0byB0aGUgY29udGFpbmVyIHByb3h5OjoKKworICAgIyBjcmVhdGUgYSBsaXN0IHByb3h5IGFuZCBhcHBlbmQgYSBtdXRhYmxlIG9iamVjdCAoYSBkaWN0aW9uYXJ5KQorICAgbHByb3h5ID0gbWFuYWdlci5saXN0KCkKKyAgIGxwcm94eS5hcHBlbmQoe30pCisgICAjIG5vdyBtdXRhdGUgdGhlIGRpY3Rpb25hcnkKKyAgIGQgPSBscHJveHlbMF0KKyAgIGRbJ2EnXSA9IDEKKyAgIGRbJ2InXSA9IDIKKyAgICMgYXQgdGhpcyBwb2ludCwgdGhlIGNoYW5nZXMgdG8gZCBhcmUgbm90IHlldCBzeW5jZWQsIGJ1dCBieQorICAgIyB1cGRhdGluZyB0aGUgZGljdGlvbmFyeSwgdGhlIHByb3h5IGlzIG5vdGlmaWVkIG9mIHRoZSBjaGFuZ2UKKyAgIGxwcm94eVswXSA9IGQKKworVGhpcyBhcHByb2FjaCBpcyBwZXJoYXBzIGxlc3MgY29udmVuaWVudCB0aGFuIGVtcGxveWluZyBuZXN0ZWQKKzpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYCBmb3IgbW9zdCB1c2UgY2FzZXMgYnV0IGFsc28KK2RlbW9uc3RyYXRlcyBhIGxldmVsIG9mIGNvbnRyb2wgb3ZlciB0aGUgc3luY2hyb25pemF0aW9uLgogCiAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAppbmRleCBiZjBkZmFjLi40MDYwNTRlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdApAQCAtNjEsNiArNjEsOSBAQAogICAgcGxhdGZvcm1zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyB0aGUgZnVuY3Rpb24gOmZ1bmM6YG5vcm1wYXRoYCBhcwogICAgZm9sbG93czogYGBub3JtcGF0aChqb2luKG9zLmdldGN3ZCgpLCBwYXRoKSlgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBiYXNlbmFtZShwYXRoKQogCkBAIC03MSw2ICs3NCw5IEBACiAgICBgYCcvZm9vL2Jhci8nYGAgcmV0dXJucyBgYCdiYXInYGAsIHRoZSA6ZnVuYzpgYmFzZW5hbWVgIGZ1bmN0aW9uIHJldHVybnMgYW4KICAgIGVtcHR5IHN0cmluZyAoYGAnJ2BgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjb21tb25wYXRoKHBhdGhzKQogCkBAIC04Myw2ICs4OSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIHNlcXVlbmNlIG9mIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tbW9ucHJlZml4KGxpc3QpCiAKQEAgLTEwNCwxMiArMTEzLDE4IEBACiAgICAgICAgID4+PiBvcy5wYXRoLmNvbW1vbnBhdGgoWycvdXNyL2xpYicsICcvdXNyL2xvY2FsL2xpYiddKQogICAgICAgICAnL3VzcicKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBkaXJuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgZGlyZWN0b3J5IG5hbWUgb2YgcGF0aG5hbWUgKnBhdGgqLiAgVGhpcyBpcyB0aGUgZmlyc3QgZWxlbWVudCBvZgogICAgdGhlIHBhaXIgcmV0dXJuZWQgYnkgcGFzc2luZyAqcGF0aCogdG8gdGhlIGZ1bmN0aW9uIDpmdW5jOmBzcGxpdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhpc3RzKHBhdGgpCiAKQEAgLTEyMyw2ICsxMzgsOSBAQAogICAgICAgKnBhdGgqIGNhbiBub3cgYmUgYW4gaW50ZWdlcjogYGBUcnVlYGAgaXMgcmV0dXJuZWQgaWYgaXQgaXMgYW4KICAgICAgICBvcGVuIGZpbGUgZGVzY3JpcHRvciwgYGBGYWxzZWBgIG90aGVyd2lzZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsZXhpc3RzKHBhdGgpCiAKQEAgLTEzMCw2ICsxNDgsOSBAQAogICAgYnJva2VuIHN5bWJvbGljIGxpbmtzLiAgIEVxdWl2YWxlbnQgdG8gOmZ1bmM6YGV4aXN0c2Agb24gcGxhdGZvcm1zIGxhY2tpbmcKICAgIDpmdW5jOmBvcy5sc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhwYW5kdXNlcihwYXRoKQogCkBAIC0xNTEsNiArMTcyLDkgQEAKICAgIElmIHRoZSBleHBhbnNpb24gZmFpbHMgb3IgaWYgdGhlIHBhdGggZG9lcyBub3QgYmVnaW4gd2l0aCBhIHRpbGRlLCB0aGUgcGF0aCBpcwogICAgcmV0dXJuZWQgdW5jaGFuZ2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGV4cGFuZHZhcnMocGF0aCkKIApAQCAtMTYyLDYgKzE4Niw5IEBACiAgICBPbiBXaW5kb3dzLCBgYCVuYW1lJWBgIGV4cGFuc2lvbnMgYXJlIHN1cHBvcnRlZCBpbiBhZGRpdGlvbiB0byBgYCRuYW1lYGAgYW5kCiAgICBgYCR7bmFtZX1gYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhdGltZShwYXRoKQogCkBAIC0xODIsNiArMjA5LDkgQEAKICAgIElmIDpmdW5jOmBvcy5zdGF0X2Zsb2F0X3RpbWVzYCByZXR1cm5zIGBgVHJ1ZWBgLCB0aGUgcmVzdWx0IGlzIGEgZmxvYXRpbmcgcG9pbnQKICAgIG51bWJlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRjdGltZShwYXRoKQogCkBAIC0xOTEsMTIgKzIyMSwxOCBAQAogICAgdGhlICA6bW9kOmB0aW1lYCBtb2R1bGUpLiAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IKICAgIGlzIGluYWNjZXNzaWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRzaXplKHBhdGgpCiAKICAgIFJldHVybiB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mICpwYXRoKi4gIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMKICAgIG5vdCBleGlzdCBvciBpcyBpbmFjY2Vzc2libGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNhYnMocGF0aCkKIApAQCAtMjA0LDI0ICsyNDAsMzYgQEAKICAgIGJlZ2lucyB3aXRoIGEgc2xhc2gsIG9uIFdpbmRvd3MgdGhhdCBpdCBiZWdpbnMgd2l0aCBhIChiYWNrKXNsYXNoIGFmdGVyIGNob3BwaW5nCiAgICBvZmYgYSBwb3RlbnRpYWwgZHJpdmUgbGV0dGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzZmlsZShwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIGlzIGFuIGV4aXN0aW5nIHJlZ3VsYXIgZmlsZS4gIFRoaXMgZm9sbG93cyBzeW1ib2xpYwogICAgbGlua3MsIHNvIGJvdGggOmZ1bmM6YGlzbGlua2AgYW5kIDpmdW5jOmBpc2ZpbGVgIGNhbiBiZSB0cnVlIGZvciB0aGUgc2FtZSBwYXRoLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzZGlyKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogaXMgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiAgVGhpcyBmb2xsb3dzIHN5bWJvbGljCiAgICBsaW5rcywgc28gYm90aCA6ZnVuYzpgaXNsaW5rYCBhbmQgOmZ1bmM6YGlzZGlyYCBjYW4gYmUgdHJ1ZSBmb3IgdGhlIHNhbWUgcGF0aC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2xpbmsocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiByZWZlcnMgdG8gYSBkaXJlY3RvcnkgZW50cnkgdGhhdCBpcyBhIHN5bWJvbGljIGxpbmsuCiAgICBBbHdheXMgYGBGYWxzZWBgIGlmIHN5bWJvbGljIGxpbmtzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBQeXRob24gcnVudGltZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc21vdW50KHBhdGgpCiAKQEAgLTIzNyw2ICsyODUsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICAgICBTdXBwb3J0IGZvciBkZXRlY3Rpbmcgbm9uLXJvb3QgbW91bnQgcG9pbnRzIG9uIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogam9pbihwYXRoLCAqcGF0aHMpCiAKQEAgLTI1NSwxMyArMzA2LDIwIEBACiAgICBgYG9zLnBhdGguam9pbigiYzoiLCAiZm9vIilgYCByZXByZXNlbnRzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgY3VycmVudAogICAgZGlyZWN0b3J5IG9uIGRyaXZlIDpmaWxlOmBDOmAgKDpmaWxlOmBjOmZvb2ApLCBub3QgOmZpbGU6YGM6XFxmb29gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnBhdGgqIGFuZCAqcGF0aHMqLgorCiAKIC4uIGZ1bmN0aW9uOjogbm9ybWNhc2UocGF0aCkKIAogICAgTm9ybWFsaXplIHRoZSBjYXNlIG9mIGEgcGF0aG5hbWUuICBPbiBVbml4IGFuZCBNYWMgT1MgWCwgdGhpcyByZXR1cm5zIHRoZQogICAgcGF0aCB1bmNoYW5nZWQ7IG9uIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMsIGl0IGNvbnZlcnRzIHRoZSBwYXRoIHRvCiAgICBsb3dlcmNhc2UuICBPbiBXaW5kb3dzLCBpdCBhbHNvIGNvbnZlcnRzIGZvcndhcmQgc2xhc2hlcyB0byBiYWNrd2FyZCBzbGFzaGVzLgotICAgUmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhlIHR5cGUgb2YgKnBhdGgqIGlzIG5vdCBgYHN0cmBgIG9yIGBgYnl0ZXNgYC4KKyAgIFJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZSB0eXBlIG9mICpwYXRoKiBpcyBub3QgYGBzdHJgYCBvciBgYGJ5dGVzYGAgKGRpcmVjdGx5CisgICBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCiAKIC4uIGZ1bmN0aW9uOjogbm9ybXBhdGgocGF0aCkKQEAgLTI3MiwxMiArMzMwLDE4IEBACiAgICB0aGF0IGNvbnRhaW5zIHN5bWJvbGljIGxpbmtzLiAgT24gV2luZG93cywgaXQgY29udmVydHMgZm9yd2FyZCBzbGFzaGVzIHRvCiAgICBiYWNrd2FyZCBzbGFzaGVzLiBUbyBub3JtYWxpemUgY2FzZSwgdXNlIDpmdW5jOmBub3JtY2FzZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVhbHBhdGgocGF0aCkKIAogICAgUmV0dXJuIHRoZSBjYW5vbmljYWwgcGF0aCBvZiB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLCBlbGltaW5hdGluZyBhbnkgc3ltYm9saWMKICAgIGxpbmtzIGVuY291bnRlcmVkIGluIHRoZSBwYXRoIChpZiB0aGV5IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0pLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbHBhdGgocGF0aCwgc3RhcnQ9b3MuY3VyZGlyKQogCkBAIC0yOTAsNiArMzU0LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVmaWxlKHBhdGgxLCBwYXRoMikKIApAQCAtMzA1LDYgKzM3Miw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgV2luZG93cyBub3cgdXNlcyB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbiBhcyBhbGwgb3RoZXIgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVvcGVuZmlsZShmcDEsIGZwMikKIApAQCAtMzE1LDYgKzM4NSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNhbWVzdGF0KHN0YXQxLCBzdGF0MikKIApAQCAtMzI4LDYgKzQwMSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0KHBhdGgpCiAKQEAgLTM0MSw2ICs0MTcsOSBAQAogICAgKGJ1dCB0aGUgc3RyaW5ncyBtYXkgZGlmZmVyKS4gIEFsc28gc2VlIHRoZSBmdW5jdGlvbnMgOmZ1bmM6YGRpcm5hbWVgIGFuZAogICAgOmZ1bmM6YGJhc2VuYW1lYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdGRyaXZlKHBhdGgpCiAKQEAgLTM1OSw2ICs0MzgsOSBAQAogICAgYW5kIHNoYXJlLCB1cCB0byBidXQgbm90IGluY2x1ZGluZyB0aGUgZm91cnRoIHNlcGFyYXRvci4KICAgIGUuZy4gYGBzcGxpdGRyaXZlKCIvL2hvc3QvY29tcHV0ZXIvZGlyIilgYCByZXR1cm5zIGBgKCIvL2hvc3QvY29tcHV0ZXIiLCAiL2RpciIpYGAKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdGV4dChwYXRoKQogCkBAIC0zNjcsNiArNDQ5LDkgQEAKICAgIHBlcmlvZC4gTGVhZGluZyBwZXJpb2RzIG9uIHRoZSBiYXNlbmFtZSBhcmUgIGlnbm9yZWQ7IGBgc3BsaXRleHQoJy5jc2hyYycpYGAKICAgIHJldHVybnMgIGBgKCcuY3NocmMnLCAnJylgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdHVuYyhwYXRoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggNWE2N2Y5My4uMzI2MGNkYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtNTcsNyArNTcsNyBAQAogCiAgICBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIGltcG9ydGVkLiAgVGhlIGZvbGxvd2luZwogICAgbmFtZXMgaGF2ZSBjdXJyZW50bHkgYmVlbiByZWdpc3RlcmVkOiBgYCdwb3NpeCdgYCwgYGAnbnQnYGAsCi0gICBgYCdjZSdgYCwgYGAnamF2YSdgYC4KKyAgIGBgJ2phdmEnYGAuCiAKICAgIC4uIHNlZWFsc286OgogICAgICAgOmF0dHI6YHN5cy5wbGF0Zm9ybWAgaGFzIGEgZmluZXIgZ3JhbnVsYXJpdHkuICA6ZnVuYzpgb3MudW5hbWVgIGdpdmVzCkBAIC0xNzEsMjMgKzE3MSw2MCBAQAogCiAuLiBmdW5jdGlvbjo6IGZzZW5jb2RlKGZpbGVuYW1lKQogCi0gICBFbmNvZGUgKmZpbGVuYW1lKiB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYAotICAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YGJ5dGVzYCB1bmNoYW5nZWQuCisgICBFbmNvZGUgOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gICpmaWxlbmFtZSogdG8gdGhlIGZpbGVzeXN0ZW0KKyAgIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbgorICAgV2luZG93czsgcmV0dXJuIDpjbGFzczpgYnl0ZXNgIHVuY2hhbmdlZC4KIAogICAgOmZ1bmM6YGZzZGVjb2RlYCBpcyB0aGUgcmV2ZXJzZSBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGFkZGVkIHRvIGFjY2VwdCBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAKKyAgICAgIGludGVyZmFjZS4KKwogCiAuLiBmdW5jdGlvbjo6IGZzZGVjb2RlKGZpbGVuYW1lKQogCi0gICBEZWNvZGUgKmZpbGVuYW1lKiBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgCi0gICBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgc3RyYCB1bmNoYW5nZWQuCisgICBEZWNvZGUgdGhlIDp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCAqZmlsZW5hbWUqIGZyb20gdGhlCisgICBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYAorICAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgc3RyYCB1bmNoYW5nZWQuCiAKICAgIDpmdW5jOmBmc2VuY29kZWAgaXMgdGhlIHJldmVyc2UgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgCisgICAgICBpbnRlcmZhY2UuCisKKworLi4gZnVuY3Rpb246OiBmc3BhdGgocGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aC4KKworICAgSWYgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIGlzIHBhc3NlZCBpbiwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgorICAgT3RoZXJ3aXNlIDptZXRoOmB+b3MuUGF0aExpa2UuX19mc3BhdGhfX2AgaXMgY2FsbGVkIGFuZCBpdHMgdmFsdWUgaXMKKyAgIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorICAgSW4gYWxsIG90aGVyIGNhc2VzLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gY2xhc3M6OiBQYXRoTGlrZQorCisgICBBbiA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yIG9iamVjdHMgcmVwcmVzZW50aW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCwKKyAgIGUuZy4gOmNsYXNzOmBwYXRobGliLlB1cmVQYXRoYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIGFic3RyYWN0bWV0aG9kOjogX19mc3BhdGhfXygpCisKKyAgICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCisgICAgICBUaGUgbWV0aG9kIHNob3VsZCBvbmx5IHJldHVybiBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsCisgICAgICB3aXRoIHRoZSBwcmVmZXJlbmNlIGJlaW5nIGZvciA6Y2xhc3M6YHN0cmAuCisKIAogLi4gZnVuY3Rpb246OiBnZXRlbnYoa2V5LCBkZWZhdWx0PU5vbmUpCiAKQEAgLTg5Niw2ICs5MzMsOSBAQAogICAgICAgZXhjZXB0aW9uLCB0aGUgZnVuY3Rpb24gbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZyBhbgogICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgb3B0aW9ucyBmb3IgdGhlICpmbGFncyogcGFyYW1ldGVyIHRvIHRoZQogOmZ1bmM6YH5vcy5vcGVuYCBmdW5jdGlvbi4gIFRoZXkgY2FuIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBiaXR3aXNlIE9SIG9wZXJhdG9yCiBgYHxgYC4gIFNvbWUgb2YgdGhlbSBhcmUgbm90IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLiAgRm9yIGRlc2NyaXB0aW9ucyBvZgpAQCAtMTM5Miw2ICsxNDMyLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCosICplZmZlY3RpdmVfaWRzKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBGX09LCiAgICAgICAgICAgUl9PSwpAQCAtMTQxNiw2ICsxNDU5LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yCiAgICAgICBvbiBzb21lIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTQ0Miw2ICsxNDg4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTQ4Myw2ICsxNTMyLDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgKnBhdGgqIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNob3duKHBhdGgsIHVpZCwgZ2lkLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE1MDIsNiArMTU1NCw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCiAgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNocm9vdChwYXRoKQogCkBAIC0xNTA5LDYgKzE1NjQsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZmNoZGlyKGZkKQogCkBAIC0xNTM3LDYgKzE1OTUsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGNobW9kKHBhdGgsIG1vZGUpCiAKQEAgLTE1NDcsNiArMTYwOCw4IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIC4uIGZ1bmN0aW9uOjogbGNob3duKHBhdGgsIHVpZCwgZ2lkKQogCkBAIC0xNTU2LDYgKzE2MTksOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNTczLDYgKzE2MzksOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKnNyY19kaXJfZmQqLCAqZHN0X2Rpcl9mZCosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0ZGlyKHBhdGg9Jy4nKQogCkBAIC0xNTgwLDggKzE2NDksOSBAQAogICAgKnBhdGgqLiAgVGhlIGxpc3QgaXMgaW4gYXJiaXRyYXJ5IG9yZGVyLCBhbmQgZG9lcyBub3QgaW5jbHVkZSB0aGUgc3BlY2lhbAogICAgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4KIAotICAgKnBhdGgqIG1heSBiZSBlaXRoZXIgb2YgdHlwZSBgYHN0cmBgIG9yIG9mIHR5cGUgYGBieXRlc2BgLiAgSWYgKnBhdGgqCi0gICBpcyBvZiB0eXBlIGBgYnl0ZXNgYCwgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CisgICAqcGF0aCogbWF5IGJlIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLiAgSWYgKnBhdGgqIGlzIG9mIHR5cGUgYGBieXRlc2BgCisgICAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLAorICAgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CiAgICBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcywgdGhleSB3aWxsIGJlIG9mIHR5cGUgYGBzdHJgYC4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKQEAgLTE2MDIsNiArMTY3Miw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE2MjgsNiArMTcwMSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNjUyLDYgKzE3MjgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWFrZWRpcnMobmFtZSwgbW9kZT0wbzc3NywgZXhpc3Rfb2s9RmFsc2UpCiAKQEAgLTE2ODUsNiArMTc2NCw5IEBACiAgICAgICBtb2RlIG9mIHRoZSBleGlzdGluZyBkaXJlY3RvcnkuIFNpbmNlIHRoaXMgYmVoYXZpb3Igd2FzIGltcG9zc2libGUgdG8KICAgICAgIGltcGxlbWVudCBzYWZlbHksIGl0IHdhcyByZW1vdmVkIGluIFB5dGhvbiAzLjQuMS4gU2VlIDppc3N1ZTpgMjEwODJgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1rZmlmbyhwYXRoLCBtb2RlPTBvNjY2LCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTcwNSw2ICsxNzg3LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1rbm9kKHBhdGgsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTcyNCw2ICsxODA5LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1ham9yKGRldmljZSkKIApAQCAtMTc2Miw2ICsxODUwLDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBkYXRhOjogcGF0aGNvbmZfbmFtZXMKIApAQCAtMTc3OSw5ICsxODcwLDEwIEBACiAgICBtYXkgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nCiAgICBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksIHJlc3VsdClgYC4KIAotICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKKyAgIElmIHRoZSAqcGF0aCogaXMgYSBzdHJpbmcgb2JqZWN0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggYQorICAgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKSwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAogICAgYW5kIHRoZSBjYWxsIG1heSByYWlzZSBhIFVuaWNvZGVEZWNvZGVFcnJvci4gSWYgdGhlICpwYXRoKiBpcyBhIGJ5dGVzCi0gICBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KKyAgIG9iamVjdCAoZGlyZWN0IG9yIGluZGlyZWN0bHkpLCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKICAgIDxkaXJfZmQ+YC4KQEAgLTE3OTQsNiArMTg4Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmUocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE4MTIsNiArMTkwNyw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmVkaXJzKG5hbWUpCiAKQEAgLTE4MjYsNiArMTkyNCw5IEBACiAgICB0aGV5IGFyZSBlbXB0eS4gUmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBsZWFmIGRpcmVjdG9yeSBjb3VsZCBub3QgYmUKICAgIHN1Y2Nlc3NmdWxseSByZW1vdmVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKQEAgLTE4NDUsNiArMTk0Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqc3JjX2Rpcl9mZCogYW5kICpkc3RfZGlyX2ZkKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWVzKG9sZCwgbmV3KQogCkBAIC0xODU4LDYgKzE5NjIsOSBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gZmFpbCB3aXRoIHRoZSBuZXcgZGlyZWN0b3J5IHN0cnVjdHVyZSBtYWRlIGlmIHlvdSBsYWNrCiAgICAgICBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gcmVtb3ZlIHRoZSBsZWFmIGRpcmVjdG9yeSBvciBmaWxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKm9sZCogYW5kICpuZXcqLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKQEAgLTE4NzIsNiArMTk3OSw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE4ODUsMzggKzE5OTUsNTggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzY2FuZGlyKHBhdGg9Jy4nKQogCi0gICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbnRyaWVzCi0gICBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5ICpwYXRoKi4gVGhlIGVudHJpZXMgYXJlIHlpZWxkZWQgaW4gYXJiaXRyYXJ5Ci0gICBvcmRlciwgYW5kIHRoZSBzcGVjaWFsIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgYXJlIG5vdCBpbmNsdWRlZC4KKyAgIFJldHVybiBhbiBpdGVyYXRvciBvZiA6Y2xhc3M6YG9zLkRpckVudHJ5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICBlbnRyaWVzIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiBUaGUgZW50cmllcyBhcmUgeWllbGRlZCBpbgorICAgYXJiaXRyYXJ5IG9yZGVyLCBhbmQgdGhlIHNwZWNpYWwgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBhcmUgbm90CisgICBpbmNsdWRlZC4KIAogICAgVXNpbmcgOmZ1bmM6YHNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YGxpc3RkaXJgIGNhbiBzaWduaWZpY2FudGx5CiAgICBpbmNyZWFzZSB0aGUgcGVyZm9ybWFuY2Ugb2YgY29kZSB0aGF0IGFsc28gbmVlZHMgZmlsZSB0eXBlIG9yIGZpbGUKLSAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCisgICBhdHRyaWJ1dGUgaW5mb3JtYXRpb24sIGJlY2F1c2UgOmNsYXNzOmBvcy5EaXJFbnRyeWAgb2JqZWN0cyBleHBvc2UgdGhpcwogICAgaW5mb3JtYXRpb24gaWYgdGhlIG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMgaXQgd2hlbiBzY2FubmluZyBhIGRpcmVjdG9yeS4KLSAgIEFsbCA6Y2xhc3M6YERpckVudHJ5YCBtZXRob2RzIG1heSBwZXJmb3JtIGEgc3lzdGVtIGNhbGwsIGJ1dAotICAgOmZ1bmM6YH5EaXJFbnRyeS5pc19kaXJgIGFuZCA6ZnVuYzpgfkRpckVudHJ5LmlzX2ZpbGVgIHVzdWFsbHkgb25seQotICAgcmVxdWlyZSBhIHN5c3RlbSBjYWxsIGZvciBzeW1ib2xpYyBsaW5rczsgOmZ1bmM6YERpckVudHJ5LnN0YXRgCisgICBBbGwgOmNsYXNzOmBvcy5EaXJFbnRyeWAgbWV0aG9kcyBtYXkgcGVyZm9ybSBhIHN5c3RlbSBjYWxsLCBidXQKKyAgIDpmdW5jOmB+b3MuRGlyRW50cnkuaXNfZGlyYCBhbmQgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19maWxlYCB1c3VhbGx5IG9ubHkKKyAgIHJlcXVpcmUgYSBzeXN0ZW0gY2FsbCBmb3Igc3ltYm9saWMgbGlua3M7IDpmdW5jOmBvcy5EaXJFbnRyeS5zdGF0YAogICAgYWx3YXlzIHJlcXVpcmVzIGEgc3lzdGVtIGNhbGwgb24gVW5peCBidXQgb25seSByZXF1aXJlcyBvbmUgZm9yCiAgICBzeW1ib2xpYyBsaW5rcyBvbiBXaW5kb3dzLgogCi0gICBPbiBVbml4LCAqcGF0aCogY2FuIGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgICh1c2UKKyAgIE9uIFVuaXgsICpwYXRoKiBjYW4gYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgKGVpdGhlcgorICAgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2U7IHVzZQogICAgOmZ1bmM6YH5vcy5mc2VuY29kZWAgYW5kIDpmdW5jOmB+b3MuZnNkZWNvZGVgIHRvIGVuY29kZSBhbmQgZGVjb2RlCiAgICA6Y2xhc3M6YGJ5dGVzYCBwYXRocykuIE9uIFdpbmRvd3MsICpwYXRoKiBtdXN0IGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgLgotICAgT24gYm90aCBzeXN0ZW1zLCB0aGUgdHlwZSBvZiB0aGUgOmF0dHI6YH5EaXJFbnRyeS5uYW1lYCBhbmQKLSAgIDphdHRyOmB+RGlyRW50cnkucGF0aGAgYXR0cmlidXRlcyBvZiBlYWNoIDpjbGFzczpgRGlyRW50cnlgIHdpbGwgYmUgb2YKKyAgIE9uIGJvdGggc3lzdGVtcywgdGhlIHR5cGUgb2YgdGhlIDphdHRyOmB+b3MuRGlyRW50cnkubmFtZWAgYW5kCisgICA6YXR0cjpgfm9zLkRpckVudHJ5LnBhdGhgIGF0dHJpYnV0ZXMgb2YgZWFjaCA6Y2xhc3M6YG9zLkRpckVudHJ5YCB3aWxsIGJlIG9mCiAgICB0aGUgc2FtZSB0eXBlIGFzICpwYXRoKi4KIAorICAgVGhlIDpmdW5jOmBzY2FuZGlyYCBpdGVyYXRvciBzdXBwb3J0cyB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wKKyAgIGFuZCBoYXMgdGhlIGZvbGxvd2luZyBtZXRob2Q6CisKKyAgIC4uIG1ldGhvZDo6IHNjYW5kaXIuY2xvc2UoKQorCisgICAgICBDbG9zZSB0aGUgaXRlcmF0b3IgYW5kIGZyZWUgYWNxdWlyZWQgcmVzb3VyY2VzLgorCisgICAgICBUaGlzIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCBvciBnYXJiYWdlCisgICAgICBjb2xsZWN0ZWQsIG9yIHdoZW4gYW4gZXJyb3IgaGFwcGVucyBkdXJpbmcgaXRlcmF0aW5nLiAgSG93ZXZlciBpdAorICAgICAgaXMgYWR2aXNhYmxlIHRvIGNhbGwgaXQgZXhwbGljaXRseSBvciB1c2UgdGhlIDprZXl3b3JkOmB3aXRoYAorICAgICAgc3RhdGVtZW50LgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHNob3dzIGEgc2ltcGxlIHVzZSBvZiA6ZnVuYzpgc2NhbmRpcmAgdG8gZGlzcGxheSBhbGwKICAgIHRoZSBmaWxlcyAoZXhjbHVkaW5nIGRpcmVjdG9yaWVzKSBpbiB0aGUgZ2l2ZW4gKnBhdGgqIHRoYXQgZG9uJ3Qgc3RhcnQgd2l0aAogICAgYGAnLidgYC4gVGhlIGBgZW50cnkuaXNfZmlsZSgpYGAgY2FsbCB3aWxsIGdlbmVyYWxseSBub3QgbWFrZSBhbiBhZGRpdGlvbmFsCiAgICBzeXN0ZW0gY2FsbDo6CiAKLSAgICAgIGZvciBlbnRyeSBpbiBvcy5zY2FuZGlyKHBhdGgpOgotICAgICAgICAgaWYgbm90IGVudHJ5Lm5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBlbnRyeS5pc19maWxlKCk6Ci0gICAgICAgICAgICAgcHJpbnQoZW50cnkubmFtZSkKKyAgICAgIHdpdGggb3Muc2NhbmRpcihwYXRoKSBhcyBpdDoKKyAgICAgICAgICBmb3IgZW50cnkgaW4gaXQ6CisgICAgICAgICAgICAgIGlmIG5vdCBlbnRyeS5uYW1lLnN0YXJ0c3dpdGgoJy4nKSBhbmQgZW50cnkuaXNfZmlsZSgpOgorICAgICAgICAgICAgICAgICAgcHJpbnQoZW50cnkubmFtZSkKIAogICAgLi4gbm90ZTo6CiAKQEAgLTE5MzIsNiArMjA2MiwxNCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wgYW5kIHRoZQorICAgICAgOmZ1bmM6YH5zY2FuZGlyLmNsb3NlKClgIG1ldGhvZC4gIElmIGEgOmZ1bmM6YHNjYW5kaXJgIGl0ZXJhdG9yIGlzIG5laXRoZXIKKyAgICAgIGV4aGF1c3RlZCBub3IgZXhwbGljaXRseSBjbG9zZWQgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHdpbGwgYmUgZW1pdHRlZAorICAgICAgaW4gaXRzIGRlc3RydWN0b3IuCisKKyAgICAgIFRoZSBmdW5jdGlvbiBhY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogRGlyRW50cnkKIApAQCAtMTk0MCwxOSArMjA3OCwyMiBAQAogCiAgICA6ZnVuYzpgc2NhbmRpcmAgd2lsbCBwcm92aWRlIGFzIG11Y2ggb2YgdGhpcyBpbmZvcm1hdGlvbiBhcyBwb3NzaWJsZSB3aXRob3V0CiAgICBtYWtpbmcgYWRkaXRpb25hbCBzeXN0ZW0gY2FsbHMuIFdoZW4gYSBgYHN0YXQoKWBgIG9yIGBgbHN0YXQoKWBgIHN5c3RlbSBjYWxsCi0gICBpcyBtYWRlLCB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCB3aWxsIGNhY2hlIHRoZSByZXN1bHQuCisgICBpcyBtYWRlLCB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdCB3aWxsIGNhY2hlIHRoZSByZXN1bHQuCiAKLSAgIGBgRGlyRW50cnlgYCBpbnN0YW5jZXMgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gbG9uZy1saXZlZCBkYXRhCisgICBgYG9zLkRpckVudHJ5YGAgaW5zdGFuY2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgc3RvcmVkIGluIGxvbmctbGl2ZWQgZGF0YQogICAgc3RydWN0dXJlczsgaWYgeW91IGtub3cgdGhlIGZpbGUgbWV0YWRhdGEgaGFzIGNoYW5nZWQgb3IgaWYgYSBsb25nIHRpbWUgaGFzCiAgICBlbGFwc2VkIHNpbmNlIGNhbGxpbmcgOmZ1bmM6YHNjYW5kaXJgLCBjYWxsIGBgb3Muc3RhdChlbnRyeS5wYXRoKWBgIHRvIGZldGNoCiAgICB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCi0gICBCZWNhdXNlIHRoZSBgYERpckVudHJ5YGAgbWV0aG9kcyBjYW4gbWFrZSBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzLCB0aGV5IG1heQorICAgQmVjYXVzZSB0aGUgYGBvcy5EaXJFbnRyeWBgIG1ldGhvZHMgY2FuIG1ha2Ugb3BlcmF0aW5nIHN5c3RlbSBjYWxscywgdGhleSBtYXkKICAgIGFsc28gcmFpc2UgOmV4YzpgT1NFcnJvcmAuIElmIHlvdSBuZWVkIHZlcnkgZmluZS1ncmFpbmVkCiAgICBjb250cm9sIG92ZXIgZXJyb3JzLCB5b3UgY2FuIGNhdGNoIDpleGM6YE9TRXJyb3JgIHdoZW4gY2FsbGluZyBvbmUgb2YgdGhlCi0gICBgYERpckVudHJ5YGAgbWV0aG9kcyBhbmQgaGFuZGxlIGFzIGFwcHJvcHJpYXRlLgorICAgYGBvcy5EaXJFbnRyeWBgIG1ldGhvZHMgYW5kIGhhbmRsZSBhcyBhcHByb3ByaWF0ZS4KIAotICAgQXR0cmlidXRlcyBhbmQgbWV0aG9kcyBvbiBhIGBgRGlyRW50cnlgYCBpbnN0YW5jZSBhcmUgYXMgZm9sbG93czoKKyAgIFRvIGJlIGRpcmVjdGx5IHVzYWJsZSBhcyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCwgYGBvcy5EaXJFbnRyeWBgCisgICBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UuCisKKyAgIEF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgb24gYSBgYG9zLkRpckVudHJ5YGAgaW5zdGFuY2UgYXJlIGFzIGZvbGxvd3M6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKIApAQCAtMTk3OCw4ICsyMTE5LDkgQEAKIAogICAgICAgUmV0dXJuIHRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIGVudHJ5LgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gVXNlIGBgb3Muc3RhdChlbnRyeS5wYXRoLAotICAgICAgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm9gYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIFVzZQorICAgICAgYGBvcy5zdGF0KGVudHJ5LnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuc3RfaW5vYGAgdG8gZmV0Y2ggdXAtdG8tZGF0ZQorICAgICAgaW5mb3JtYXRpb24uCiAKICAgICAgIE9uIHRoZSBmaXJzdCwgdW5jYWNoZWQgY2FsbCwgYSBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZCBvbiBXaW5kb3dzIGJ1dAogICAgICAgbm90IG9uIFVuaXguCkBAIC0xOTk0LDcgKzIxMzYsNyBAQAogICAgICAgaXMgYSBkaXJlY3RvcnkgKHdpdGhvdXQgZm9sbG93aW5nIHN5bWxpbmtzKTsgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUKICAgICAgIGVudHJ5IGlzIGFueSBvdGhlciBraW5kIG9mIGZpbGUgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCiAgICAgICBmb3IgKmZvbGxvd19zeW1saW5rcyogYGBUcnVlYGAgYW5kIGBgRmFsc2VgYC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgYWxvbmcKICAgICAgIHdpdGggOmZ1bmM6YHN0YXQuU19JU0RJUmAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIApAQCAtMjAxOCw4ICsyMTYwLDggQEAKICAgICAgIGlzIGEgZmlsZSAod2l0aG91dCBmb2xsb3dpbmcgc3ltbGlua3MpOyByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZSBlbnRyeSBpcwogICAgICAgYSBkaXJlY3Rvcnkgb3Igb3RoZXIgbm9uLWZpbGUgZW50cnksIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhY2hpbmcsIHN5c3RlbSBjYWxscwotICAgICAgbWFkZSwgYW5kIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBhcyBwZXIgOmZ1bmM6YH5EaXJFbnRyeS5pc19kaXJgLgorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIENhY2hpbmcsIHN5c3RlbSBjYWxscworICAgICAgbWFkZSwgYW5kIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBhcyBwZXIgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19kaXJgLgogCiAgICAuLiBtZXRob2Q6OiBpc19zeW1saW5rKCkKIApAQCAtMjAyNyw3ICsyMTY5LDcgQEAKICAgICAgIHJldHVybiBgYEZhbHNlYGAgaWYgdGhlIGVudHJ5IHBvaW50cyB0byBhIGRpcmVjdG9yeSBvciBhbnkga2luZCBvZiBmaWxlLAogICAgICAgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FsbAorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QuIENhbGwKICAgICAgIDpmdW5jOmBvcy5wYXRoLmlzbGlua2AgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAogICAgICAgT24gdGhlIGZpcnN0LCB1bmNhY2hlZCBjYWxsLCBubyBzeXN0ZW0gY2FsbCBpcyByZXF1aXJlZCBpbiBtb3N0IGNhc2VzLgpAQCAtMjA1MiwyMyArMjE5NCwyOCBAQAogICAgICAgOmNsYXNzOmBzdGF0X3Jlc3VsdGAgYXJlIGFsd2F5cyBzZXQgdG8gemVyby4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgdG8KICAgICAgIGdldCB0aGVzZSBhdHRyaWJ1dGVzLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdCwgd2l0aCBhIHNlcGFyYXRlIGNhY2hlCiAgICAgICBmb3IgKmZvbGxvd19zeW1saW5rcyogYGBUcnVlYGAgYW5kIGBgRmFsc2VgYC4gQ2FsbCA6ZnVuYzpgb3Muc3RhdGAgdG8KICAgICAgIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKICAgIE5vdGUgdGhhdCB0aGVyZSBpcyBhIG5pY2UgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBzZXZlcmFsIGF0dHJpYnV0ZXMKLSAgIGFuZCBtZXRob2RzIG9mIGBgRGlyRW50cnlgYCBhbmQgb2YgOmNsYXNzOmBwYXRobGliLlBhdGhgLiAgSW4KLSAgIHBhcnRpY3VsYXIsIHRoZSBgYG5hbWVgYCBhdHRyaWJ1dGUgaGFzIHRoZSBzYW1lIG1lYW5pbmcsIGFzIGRvIHRoZQotICAgYGBpc19kaXIoKWBgLCBgYGlzX2ZpbGUoKWBgLCBgYGlzX3N5bWxpbmsoKWBgIGFuZCBgYHN0YXQoKWBgIG1ldGhvZHMuCisgICBhbmQgbWV0aG9kcyBvZiBgYG9zLkRpckVudHJ5YGAgYW5kIG9mIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4gIEluCisgICBwYXJ0aWN1bGFyLCB0aGUgYGBuYW1lYGAgYXR0cmlidXRlIGhhcyB0aGUgc2FtZQorICAgbWVhbmluZywgYXMgZG8gdGhlIGBgaXNfZGlyKClgYCwgYGBpc19maWxlKClgYCwgYGBpc19zeW1saW5rKClgYAorICAgYW5kIGBgc3RhdCgpYGAgbWV0aG9kcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgOmNsYXNzOmB+b3MuUGF0aExpa2VgIGludGVyZmFjZS4KKwogCiAuLiBmdW5jdGlvbjo6IHN0YXQocGF0aCwgXCosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgR2V0IHRoZSBzdGF0dXMgb2YgYSBmaWxlIG9yIGEgZmlsZSBkZXNjcmlwdG9yLiBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGEKICAgIDpjOmZ1bmM6YHN0YXRgIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBwYXRoLiAqcGF0aCogbWF5IGJlIHNwZWNpZmllZCBhcwotICAgZWl0aGVyIGEgc3RyaW5nIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiBSZXR1cm4gYSA6Y2xhc3M6YHN0YXRfcmVzdWx0YAorICAgZWl0aGVyIGEgc3RyaW5nIC0tIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBQYXRoTGlrZWAKKyAgIGludGVyZmFjZSAtLSBvciBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4gUmV0dXJuIGEgOmNsYXNzOmBzdGF0X3Jlc3VsdGAKICAgIG9iamVjdC4KIAogICAgVGhpcyBmdW5jdGlvbiBub3JtYWxseSBmb2xsb3dzIHN5bWxpbmtzOyB0byBzdGF0IGEgc3ltbGluayBhZGQgdGhlIGFyZ3VtZW50CkBAIC0yMDk4LDYgKzIyNDUsOSBAQAogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMsIHNwZWNpZnlpbmcgYSBmaWxlCiAgICAgICBkZXNjcmlwdG9yIGluc3RlYWQgb2YgYSBwYXRoLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IHN0YXRfcmVzdWx0CiAKQEAgLTIzMTksMTkgKzI0NjksMjIgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCiAKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSA6Y29uc3Q6YFNUX1JET05MWWAgYW5kIDpjb25zdDpgU1RfTk9TVUlEYCBjb25zdGFudHMgd2VyZSBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgOmNvbnN0OmBTVF9OT0RFVmAsIDpjb25zdDpgU1RfTk9FWEVDYCwgOmNvbnN0OmBTVF9TWU5DSFJPTk9VU2AsCiAgICAgICA6Y29uc3Q6YFNUX01BTkRMT0NLYCwgOmNvbnN0OmBTVF9XUklURWAsIDpjb25zdDpgU1RfQVBQRU5EYCwKICAgICAgIDpjb25zdDpgU1RfSU1NVVRBQkxFYCwgOmNvbnN0OmBTVF9OT0FUSU1FYCwgOmNvbnN0OmBTVF9OT0RJUkFUSU1FYCwKICAgICAgIGFuZCA6Y29uc3Q6YFNUX1JFTEFUSU1FYCBjb25zdGFudHMgd2VyZSBhZGRlZC4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LgotCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLSAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCiAKIC4uIGRhdGE6OiBzdXBwb3J0c19kaXJfZmQKQEAgLTI0NTIsNiArMjYwNSw5IEBACiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYXJndW1lbnQsIGFuZCBub3cgYWxsb3cgKnRhcmdldF9pc19kaXJlY3RvcnkqCiAgICAgICBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBzeW5jKCkKIApAQCAtMjQ3Niw2ICsyNjMyLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKworCiAuLiBmdW5jdGlvbjo6IHVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgUmVtb3ZlIChkZWxldGUpIHRoZSBmaWxlICpwYXRoKi4gIFRoaXMgZnVuY3Rpb24gaXMgc2VtYW50aWNhbGx5CkBAIC0yNDg2LDYgKzI2NDYsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICpbLCBuc10sIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMjUyMyw2ICsyNjg2LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCosICpmb2xsb3dfc3ltbGlua3MqLCBhbmQgKm5zKiBwYXJhbWV0ZXJzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHdhbGsodG9wLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgZm9sbG93bGlua3M9RmFsc2UpCiAKQEAgLTI2MTMsNiArMjc3OSw5IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIG5vdyBjYWxscyA6ZnVuYzpgb3Muc2NhbmRpcmAgaW5zdGVhZCBvZiA6ZnVuYzpgb3MubGlzdGRpcmAsCiAgICAgICBtYWtpbmcgaXQgZmFzdGVyIGJ5IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gOmZ1bmM6YG9zLnN0YXRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGZ3YWxrKHRvcD0nLicsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKQogCkBAIC0yNjY5LDYgKzI4MzgsOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogTGludXggZXh0ZW5kZWQgYXR0cmlidXRlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtMjY4MCwxMiArMjg1MiwxNiBAQAogLi4gZnVuY3Rpb246OiBnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmb3IKLSAgICpwYXRoKi4gKmF0dHJpYnV0ZSogY2FuIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgc3RyLCBpdCBpcyBlbmNvZGVkCi0gICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgorICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbQorICAgZW5jb2RpbmcuCiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAogICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZwciAqcGF0aCogYW5kICphdHRyaWJ1dGUqLgorCiAKIC4uIGZ1bmN0aW9uOjogbGlzdHhhdHRyKHBhdGg9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTI2OTcsMjEgKzI4NzMsMjkgQEAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAogICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZleGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgUmVtb3ZlcyB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogZnJvbSAqcGF0aCouCi0gICAqYXR0cmlidXRlKiBzaG91bGQgYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZAorICAgKmF0dHJpYnV0ZSogc2hvdWxkIGJlIGJ5dGVzIG9yIHN0ciAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZQorICAgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKS4gSWYgaXQgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQKICAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAogICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqcGF0aCogYW5kICphdHRyaWJ1dGUqLgorCiAKIC4uIGZ1bmN0aW9uOjogc2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFNldCB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogb24gKnBhdGgqIHRvICp2YWx1ZSouCi0gICAqYXR0cmlidXRlKiBtdXN0IGJlIGEgYnl0ZXMgb3Igc3RyIHdpdGggbm8gZW1iZWRkZWQgTlVMcy4gSWYgaXQgaXMgYSBzdHIsCisgICAqYXR0cmlidXRlKiBtdXN0IGJlIGEgYnl0ZXMgb3Igc3RyIHdpdGggbm8gZW1iZWRkZWQgTlVMcyAoZGlyZWN0bHkgb3IKKyAgIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKS4gSWYgaXQgaXMgYSBzdHIsCiAgICBpdCBpcyBlbmNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuICAqZmxhZ3MqIG1heSBiZQogICAgOmRhdGE6YFhBVFRSX1JFUExBQ0VgIG9yIDpkYXRhOmBYQVRUUl9DUkVBVEVgLiBJZiA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgaXMKICAgIGdpdmVuIGFuZCB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LCBgYEVFWElTVFNgYCB3aWxsIGJlIHJhaXNlZC4KQEAgLTI3MjYsNiArMjkxMCw5IEBACiAgICAgICBBIGJ1ZyBpbiBMaW51eCBrZXJuZWwgdmVyc2lvbnMgbGVzcyB0aGFuIDIuNi4zOSBjYXVzZWQgdGhlIGZsYWdzIGFyZ3VtZW50CiAgICAgICB0byBiZSBpZ25vcmVkIG9uIHNvbWUgZmlsZXN5c3RlbXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqcGF0aCogYW5kICphdHRyaWJ1dGUqLgorCiAKIC4uIGRhdGE6OiBYQVRUUl9TSVpFX01BWAogCkBAIC0yODI3LDYgKzMwMTQsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqCiAgICAgICBmb3IgOmZ1bmM6YGV4ZWN2ZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IF9leGl0KG4pCiAKICAgIEV4aXQgdGhlIHByb2Nlc3Mgd2l0aCBzdGF0dXMgKm4qLCB3aXRob3V0IGNhbGxpbmcgY2xlYW51cCBoYW5kbGVycywgZmx1c2hpbmcKQEAgLTMxMzcsNiArMzMyNyw5IEBACiAgICA6ZnVuYzpgc3Bhd252ZWAgYXJlIG5vdCB0aHJlYWQtc2FmZSBvbiBXaW5kb3dzOyB3ZSBhZHZpc2UgeW91IHRvIHVzZSB0aGUKICAgIDptb2Q6YHN1YnByb2Nlc3NgIG1vZHVsZSBpbnN0ZWFkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBkYXRhOjogUF9OT1dBSVQKICAgICAgICAgICBQX05PV0FJVE8KQEAgLTM2MjMsNiArMzgxNiwxMSBAQAogCiAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0uIFJldHVybnMgYGBOb25lYGAgaWYgdW5kZXRlcm1pbmVkLgogCisgICBUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW4KKyAgIHVzZS4gIFRoZSBudW1iZXIgb2YgdXNhYmxlIENQVXMgY2FuIGJlIG9idGFpbmVkIHdpdGgKKyAgIGBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgCisKKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIApAQCAtMzczOCwzNSArMzkzNiw4OSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotLi4gX29zLW1pc2NmdW5jOgogCi1NaXNjZWxsYW5lb3VzIEZ1bmN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JhbmRvbSBudW1iZXJzCistLS0tLS0tLS0tLS0tLQogCiAKLS4uIGZ1bmN0aW9uOjogdXJhbmRvbShuKQorLi4gZnVuY3Rpb246OiBnZXRyYW5kb20oc2l6ZSwgZmxhZ3M9MCkKIAotICAgUmV0dXJuIGEgc3RyaW5nIG9mICpuKiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLgorICAgR2V0IHVwIHRvICpzaXplKiByYW5kb20gYnl0ZXMuIFRoZSBmdW5jdGlvbiBjYW4gcmV0dXJuIGxlc3MgYnl0ZXMgdGhhbgorICAgcmVxdWVzdGVkLgorCisgICBUaGVzZSBieXRlcyBjYW4gYmUgdXNlZCB0byBzZWVkIHVzZXItc3BhY2UgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JzIG9yIGZvcgorICAgY3J5cHRvZ3JhcGhpYyBwdXJwb3Nlcy4KKworICAgYGBnZXRyYW5kb20oKWBgIHJlbGllcyBvbiBlbnRyb3B5IGdhdGhlcmVkIGZyb20gZGV2aWNlIGRyaXZlcnMgYW5kIG90aGVyCisgICBzb3VyY2VzIG9mIGVudmlyb25tZW50YWwgbm9pc2UuIFVubmVjZXNzYXJpbHkgcmVhZGluZyBsYXJnZSBxdWFudGl0aWVzIG9mCisgICBkYXRhIHdpbGwgaGF2ZSBhIG5lZ2F0aXZlIGltcGFjdCBvbiAgb3RoZXIgdXNlcnMgIG9mIHRoZSBgYC9kZXYvcmFuZG9tYGAgYW5kCisgICBgYC9kZXYvdXJhbmRvbWBgIGRldmljZXMuCisKKyAgIFRoZSBmbGFncyBhcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGNvbnRhaW4gemVybyBvciBtb3JlIG9mIHRoZQorICAgZm9sbG93aW5nIHZhbHVlcyBPUmVkIHRvZ2V0aGVyOiA6cHk6ZGF0YTpgb3MuR1JORF9SQU5ET01gIGFuZAorICAgOnB5OmRhdGE6YEdSTkRfTk9OQkxPQ0tgLgorCisgICBTZWUgYWxzbyB0aGUgYExpbnV4IGdldHJhbmRvbSgpIG1hbnVhbCBwYWdlCisgICA8aHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4yL2dldHJhbmRvbS4yLmh0bWw+YF8uCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggMy4xNyBhbmQgbmV3ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBmdW5jdGlvbjo6IHVyYW5kb20oc2l6ZSkKKworICAgUmV0dXJuIGEgc3RyaW5nIG9mICpzaXplKiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLgogCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgcmFuZG9tIGJ5dGVzIGZyb20gYW4gT1Mtc3BlY2lmaWMgcmFuZG9tbmVzcyBzb3VyY2UuICBUaGUKICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIHVucHJlZGljdGFibGUgZW5vdWdoIGZvciBjcnlwdG9ncmFwaGljIGFwcGxpY2F0aW9ucywKICAgIHRob3VnaCBpdHMgZXhhY3QgcXVhbGl0eSBkZXBlbmRzIG9uIHRoZSBPUyBpbXBsZW1lbnRhdGlvbi4KIAotICAgT24gTGludXgsIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIHVzZWQgaWYgYXZhaWxhYmxlIGFuZCB0aGUgdXJhbmRvbQotICAgZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkIChgYGdldHJhbmRvbSgpYGAgZG9lcyBub3QgYmxvY2spLgotICAgT24gYSBVbml4LWxpa2Ugc3lzdGVtIHRoaXMgd2lsbCBxdWVyeSBgYC9kZXYvdXJhbmRvbWBgLiBPbiBXaW5kb3dzLCBpdAotICAgd2lsbCB1c2UgYGBDcnlwdEdlblJhbmRvbSgpYGAuICBJZiBhIHJhbmRvbW5lc3Mgc291cmNlIGlzIG5vdCBmb3VuZCwKLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgT24gTGludXgsIGlmIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyBhdmFpbGFibGUsIGl0IGlzIHVzZWQgaW4KKyAgIGJsb2NraW5nIG1vZGU6IGJsb2NrIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQKKyAgICgxMjggYml0cyBvZiBlbnRyb3B5IGFyZSBjb2xsZWN0ZWQgYnkgdGhlIGtlcm5lbCkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IKKyAgIHRoZSByYXRpb25hbGUuIE9uIExpbnV4LCB0aGUgOmZ1bmM6YGdldHJhbmRvbWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZ2V0CisgICByYW5kb20gYnl0ZXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgKHVzaW5nIHRoZSA6ZGF0YTpgR1JORF9OT05CTE9DS2AgZmxhZykgb3IKKyAgIHRvIHBvbGwgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZC4KIAotICAgRm9yIGFuIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKLSAgIHByb3ZpZGVkIGJ5IHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBzZWUgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYC4KKyAgIE9uIGEgVW5peC1saWtlIHN5c3RlbSwgcmFuZG9tIGJ5dGVzIGFyZSByZWFkIGZyb20gdGhlIGBgL2Rldi91cmFuZG9tYGAKKyAgIGRldmljZS4gSWYgdGhlIGBgL2Rldi91cmFuZG9tYGAgZGV2aWNlIGlzIG5vdCBhdmFpbGFibGUgb3Igbm90IHJlYWRhYmxlLCB0aGUKKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIE9uIFdpbmRvd3MsIGl0IHdpbGwgdXNlIGBgQ3J5cHRHZW5SYW5kb20oKWBgLgorCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIFRoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgaGlnaGVyIGxldmVsIGZ1bmN0aW9ucy4gRm9yIGFuCisgICAgICBlYXN5LXRvLXVzZSBpbnRlcmZhY2UgdG8gdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHByb3ZpZGVkIGJ5IHlvdXIKKyAgICAgIHBsYXRmb3JtLCBwbGVhc2Ugc2VlIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42LjAKKyAgICAgIE9uIExpbnV4LCBgYGdldHJhbmRvbSgpYGAgaXMgbm93IHVzZWQgaW4gYmxvY2tpbmcgbW9kZSB0byBpbmNyZWFzZSB0aGUKKyAgICAgIHNlY3VyaXR5LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBPbiBMaW51eCwgaWYgYGBnZXRyYW5kb20oKWBgIGJsb2NrcyAodGhlIHVyYW5kb20gZW50cm9weSBwb29sIGlzIG5vdAotICAgICAgaW5pdGlhbGl6ZWQgeWV0KSwgZmFsbCBiYWNrIG9uIHJlYWRpbmcgYGAvZGV2L3VyYW5kb21gYC4KKyAgICAgIE9uIExpbnV4LCBpZiB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgYmxvY2tzICh0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgICAgIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQpLCBmYWxsIGJhY2sgb24gcmVhZGluZyBgYC9kZXYvdXJhbmRvbWBgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIsIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyBub3cgdXNlZAogICAgICAgd2hlbiBhdmFpbGFibGUuICBPbiBPcGVuQlNEIDUuNiBhbmQgbmV3ZXIsIHRoZSBDIGBgZ2V0ZW50cm9weSgpYGAKICAgICAgIGZ1bmN0aW9uIGlzIG5vdyB1c2VkLiBUaGVzZSBmdW5jdGlvbnMgYXZvaWQgdGhlIHVzYWdlIG9mIGFuIGludGVybmFsIGZpbGUKICAgICAgIGRlc2NyaXB0b3IuCisKKy4uIGRhdGE6OiBHUk5EX05PTkJMT0NLCisKKyAgIEJ5ICBkZWZhdWx0LCB3aGVuIHJlYWRpbmcgZnJvbSBgYC9kZXYvcmFuZG9tYGAsIDpmdW5jOmBnZXRyYW5kb21gIGJsb2NrcyBpZgorICAgbm8gcmFuZG9tIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGFuZCB3aGVuIHJlYWRpbmcgZnJvbSBgYC9kZXYvdXJhbmRvbWBgLCBpdCBibG9ja3MKKyAgIGlmIHRoZSBlbnRyb3B5IHBvb2wgaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZC4KKworICAgSWYgdGhlIDpweTpkYXRhOmBHUk5EX05PTkJMT0NLYCBmbGFnIGlzIHNldCwgdGhlbiA6ZnVuYzpgZ2V0cmFuZG9tYCBkb2VzIG5vdAorICAgYmxvY2sgaW4gdGhlc2UgY2FzZXMsIGJ1dCBpbnN0ZWFkIGltbWVkaWF0ZWx5IHJhaXNlcyA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IEdSTkRfUkFORE9NCisKKyAgIElmICB0aGlzICBiaXQgIGlzICBzZXQsICB0aGVuICByYW5kb20gYnl0ZXMgYXJlIGRyYXduIGZyb20gdGhlCisgICBgYC9kZXYvcmFuZG9tYGAgcG9vbCBpbnN0ZWFkIG9mIHRoZSBgYC9kZXYvdXJhbmRvbWBgIHBvb2wuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9wYXRobGliLnJzdAppbmRleCA3YjkwYTFmLi4zNGFiM2I4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wYXRobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wYXRobGliLnJzdApAQCAtMzUsMTIgKzM1LDYgQEAKICAgIGFjY2Vzc2luZyB0aGUgT1MuIEluIHRoaXMgY2FzZSwgaW5zdGFudGlhdGluZyBvbmUgb2YgdGhlIHB1cmUgY2xhc3NlcyBtYXkgYmUKICAgIHVzZWZ1bCBzaW5jZSB0aG9zZSBzaW1wbHkgZG9uJ3QgaGF2ZSBhbnkgT1MtYWNjZXNzaW5nIG9wZXJhdGlvbnMuCiAKLS4uIG5vdGU6OgotICAgVGhpcyBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQotICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKLSAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgcGFja2FnZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIC4uIHNlZWFsc286OgogICAgOnBlcDpgNDI4YDogVGhlIHBhdGhsaWIgbW9kdWxlIC0tIG9iamVjdC1vcmllbnRlZCBmaWxlc3lzdGVtIHBhdGhzLgogCkBAIC0xMTEsNyArMTA1LDggQEAKICAgICAgIFB1cmVQb3NpeFBhdGgoJ3NldHVwLnB5JykKIAogICAgRWFjaCBlbGVtZW50IG9mICpwYXRoc2VnbWVudHMqIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEKLSAgIHBhdGggc2VnbWVudCwgb3IgYW5vdGhlciBwYXRoIG9iamVjdDo6CisgICBwYXRoIHNlZ21lbnQsIGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZQorICAgd2hpY2ggcmV0dXJucyBhIHN0cmluZywgb3IgYW5vdGhlciBwYXRoIG9iamVjdDo6CiAKICAgICAgID4+PiBQdXJlUGF0aCgnZm9vJywgJ3NvbWUvcGF0aCcsICdiYXInKQogICAgICAgUHVyZVBvc2l4UGF0aCgnZm9vL3NvbWUvcGF0aC9iYXInKQpAQCAtMTUyLDYgKzE0NywxMiBAQAogICAgdG8gYGBQdXJlUG9zaXhQYXRoKCdiYXInKWBgLCB3aGljaCBpcyB3cm9uZyBpZiBgYGZvb2BgIGlzIGEgc3ltYm9saWMgbGluawogICAgdG8gYW5vdGhlciBkaXJlY3RvcnkpCiAKKyAgIFB1cmUgcGF0aCBvYmplY3RzIGltcGxlbWVudCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLCBhbGxvd2luZyB0aGVtCisgICB0byBiZSB1c2VkIGFueXdoZXJlIHRoZSBpbnRlcmZhY2UgaXMgYWNjZXB0ZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLgorCiAuLiBjbGFzczo6IFB1cmVQb3NpeFBhdGgoKnBhdGhzZWdtZW50cykKIAogICAgQSBzdWJjbGFzcyBvZiA6Y2xhc3M6YFB1cmVQYXRoYCwgdGhpcyBwYXRoIGZsYXZvdXIgcmVwcmVzZW50cyBub24tV2luZG93cwpAQCAtMTk5LDcgKzIwMCw3IEBACiAgICA+Pj4gUHVyZVdpbmRvd3NQYXRoKCdmb28nKSA8IFB1cmVQb3NpeFBhdGgoJ2ZvbycpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICBUeXBlRXJyb3I6IHVub3JkZXJhYmxlIHR5cGVzOiBQdXJlV2luZG93c1BhdGgoKSA8IFB1cmVQb3NpeFBhdGgoKQorICAgVHlwZUVycm9yOiAnPCcgbm90IHN1cHBvcnRlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiAnUHVyZVdpbmRvd3NQYXRoJyBhbmQgJ1B1cmVQb3NpeFBhdGgnCiAKIAogT3BlcmF0b3JzCkBAIC0yMTYsNiArMjE3LDE0IEBACiAgICA+Pj4gJy91c3InIC8gcQogICAgUHVyZVBvc2l4UGF0aCgnL3Vzci9iaW4nKQogCitBIHBhdGggb2JqZWN0IGNhbiBiZSB1c2VkIGFueXdoZXJlIGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgOmNsYXNzOmBvcy5QYXRoTGlrZWAKK2lzIGFjY2VwdGVkOjoKKworICAgPj4+IGltcG9ydCBvcworICAgPj4+IHAgPSBQdXJlUGF0aCgnL2V0YycpCisgICA+Pj4gb3MuZnNwYXRoKHApCisgICAnL2V0YycKKwogVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGggaXMgdGhlIHJhdyBmaWxlc3lzdGVtIHBhdGggaXRzZWxmCiAoaW4gbmF0aXZlIGZvcm0sIGUuZy4gd2l0aCBiYWNrc2xhc2hlcyB1bmRlciBXaW5kb3dzKSwgd2hpY2ggeW91IGNhbgogcGFzcyB0byBhbnkgZnVuY3Rpb24gdGFraW5nIGEgZmlsZSBwYXRoIGFzIGEgc3RyaW5nOjoKQEAgLTkxMCw3ICs5MTksNyBAQAogICAgdG8gYW4gZXhpc3RpbmcgZmlsZSBvciBkaXJlY3RvcnksIGl0IHdpbGwgYmUgdW5jb25kaXRpb25hbGx5IHJlcGxhY2VkLgogCiAKLS4uIG1ldGhvZDo6IFBhdGgucmVzb2x2ZSgpCisuLiBtZXRob2Q6OiBQYXRoLnJlc29sdmUoc3RyaWN0PUZhbHNlKQogCiAgICBNYWtlIHRoZSBwYXRoIGFic29sdXRlLCByZXNvbHZpbmcgYW55IHN5bWxpbmtzLiAgQSBuZXcgcGF0aCBvYmplY3QgaXMKICAgIHJldHVybmVkOjoKQEAgLTkyNywxMCArOTM2LDE0IEBACiAgICAgICA+Pj4gcC5yZXNvbHZlKCkKICAgICAgIFBvc2l4UGF0aCgnL2hvbWUvYW50b2luZS9wYXRobGliL3NldHVwLnB5JykKIAotICAgSWYgdGhlIHBhdGggZG9lc24ndCBleGlzdCwgOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIElmIGFuCi0gICBpbmZpbml0ZSBsb29wIGlzIGVuY291bnRlcmVkIGFsb25nIHRoZSByZXNvbHV0aW9uIHBhdGgsCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4KKyAgIElmIHRoZSBwYXRoIGRvZXNuJ3QgZXhpc3QgYW5kICpzdHJpY3QqIGlzIGBgVHJ1ZWBgLCA6ZXhjOmBGaWxlTm90Rm91bmRFcnJvcmAKKyAgIGlzIHJhaXNlZC4gIElmICpzdHJpY3QqIGlzIGBgRmFsc2VgYCwgdGhlIHBhdGggaXMgcmVzb2x2ZWQgYXMgZmFyIGFzIHBvc3NpYmxlCisgICBhbmQgYW55IHJlbWFpbmRlciBpcyBhcHBlbmRlZCB3aXRob3V0IGNoZWNraW5nIHdoZXRoZXIgaXQgZXhpc3RzLiAgSWYgYW4KKyAgIGluZmluaXRlIGxvb3AgaXMgZW5jb3VudGVyZWQgYWxvbmcgdGhlIHJlc29sdXRpb24gcGF0aCwgOmV4YzpgUnVudGltZUVycm9yYAorICAgaXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSAqc3RyaWN0KiBhcmd1bWVudC4KIAogLi4gbWV0aG9kOjogUGF0aC5yZ2xvYihwYXR0ZXJuKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wZGIucnN0IGIvRG9jL2xpYnJhcnkvcGRiLnJzdAppbmRleCBkNzdkZTJlLi41MmJlZjY4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wZGIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKQEAgLTE0NCw3ICsxNDQsNyBAQAogYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6CiAKIC4uIGNsYXNzOjogUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBcCi0gICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSkKKyAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSkKIAogICAgOmNsYXNzOmBQZGJgIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy4KIApAQCAtMTYwLDYgKzE2MCw5IEBACiAgICBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgYWdhaW4gYnkgcHJlc3NpbmcgOmtiZDpgQ3RybC1DYC4gIElmIHlvdQogICAgd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlQgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG8gdHJ1ZS4KIAorICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgUGRiIHdpbGwgbG9hZAorICAgLnBkYnJjIGZpbGVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisKICAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjo6CiAKICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ2RqYW5nby4qJ10pLnNldF90cmFjZSgpCkBAIC0xNzEsNiArMTc0LDkgQEAKICAgICAgIFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlQgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5CiAgICAgICBQZGIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKnJlYWRyYyogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpCiAgICAgICAgICAgICAgICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggMGQ2NDE5MS4uNmU4NDMwZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC00OTIsNyArNDkyLDcgQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19leF9fKCkKIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50cyB0aGUKKyAgIEluIHByb3RvY29scyAyIGFuZCBuZXdlciwgY2xhc3NlcyB0aGF0IGltcGxlbWVudHMgdGhlCiAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIG1ldGhvZCBjYW4gZGljdGF0ZSB0aGUgdmFsdWVzIHBhc3NlZCB0byB0aGUKICAgIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLiAgVGhlIG1ldGhvZCBtdXN0IHJldHVybiBhIHBhaXIKICAgIGBgKGFyZ3MsIGt3YXJncylgYCB3aGVyZSAqYXJncyogaXMgYSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cwpAQCAtNTA0LDE1ICs1MDQsMjIgQEAKICAgIGNsYXNzIHJlcXVpcmVzIGtleXdvcmQtb25seSBhcmd1bWVudHMuICBPdGhlcndpc2UsIGl0IGlzIHJlY29tbWVuZGVkIGZvcgogICAgY29tcGF0aWJpbGl0eSB0byBpbXBsZW1lbnQgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgaXMgbm93IHVzZWQgaW4gcHJvdG9jb2xzIDIgYW5kIDMuCisKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19fKCkKIAotICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBidXQKLSAgIGZvciBwcm90b2NvbHMgMiBhbmQgbmV3ZXIuICBJdCBtdXN0IHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cyBgYGFyZ3NgYAotICAgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLgorICAgVGhpcyBtZXRob2Qgc2VydmUgYSBzaW1pbGFyIHB1cnBvc2UgYXMgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCwgYnV0CisgICBzdXBwb3J0cyBvbmx5IHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgSXQgbXVzdCByZXR1cm4gYSB0dXBsZSBvZiBhcmd1bWVudHMKKyAgIGBgYXJnc2BgIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHVwb24gdW5waWNrbGluZy4KIAotICAgSW4gcHJvdG9jb2xzIDQgYW5kIG5ld2VyLCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdpbGwgbm90IGJlIGNhbGxlZCBpZgotICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcyBkZWZpbmVkLgorICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYCB3aWxsIG5vdCBiZSBjYWxsZWQgaWYgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcworICAgZGVmaW5lZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEJlZm9yZSBQeXRob24gMy42LCA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdhcyBjYWxsZWQgaW5zdGVhZCBvZgorICAgICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpbiBwcm90b2NvbHMgMiBhbmQgMy4KIAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRzdGF0ZV9fKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggYWJlYWM2Mi4uOTBkNjllNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTExLDYgKzExLDExIEBACiBUaGlzIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMgZm9yIHRoZSBpbXBvcnQgc3lzdGVtLCBpbiBwYXJ0aWN1bGFyIHBhY2thZ2UKIHN1cHBvcnQuCiAKKy4uIGNsYXNzOjogTW9kdWxlSW5mbyhtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykKKworICAgIEEgbmFtZWR0dXBsZSB0aGF0IGhvbGRzIGEgYnJpZWYgc3VtbWFyeSBvZiBhIG1vZHVsZSdzIGluZm8uCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZnVuY3Rpb246OiBleHRlbmRfcGF0aChwYXRoLCBuYW1lKQogCkBAIC0xMzksNyArMTQ0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBpdGVyX21vZHVsZXMocGF0aD1Ob25lLCBwcmVmaXg9JycpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKKyAgIFlpZWxkcyA6Y2xhc3M6YE1vZHVsZUluZm9gIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgogICAgKnBhdGgqIGlzIGBgTm9uZWBgLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gYGBzeXMucGF0aGBgLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KQEAgLTE2MCw3ICsxNjUsNyBAQAogCiAuLiBmdW5jdGlvbjo6IHdhbGtfcGFja2FnZXMocGF0aD1Ob25lLCBwcmVmaXg9JycsIG9uZXJyb3I9Tm9uZSkKIAotICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseSBvbgorICAgWWllbGRzIDpjbGFzczpgTW9kdWxlSW5mb2AgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCiAgICAqcGF0aCosIG9yLCBpZiAqcGF0aCogaXMgYGBOb25lYGAsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdCBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKaW5kZXggZmZhYmMzMi4uZDcyYjY2MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CkBAIC02Miw2ICs2MiwxMyBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKwogT25lIGV4Y2VwdGlvbiBpcyBkZWZpbmVkIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGUgOm1vZDpgcG9wbGliYCBtb2R1bGU6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcXVldWUucnN0IGIvRG9jL2xpYnJhcnkvcXVldWUucnN0CmluZGV4IDkyNGJlNWEuLmJkMGZjMmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKQEAgLTE2LDggKzE2LDkgQEAKIG1vZHVsZS4KIAogVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRocmVlIHR5cGVzIG9mIHF1ZXVlLCB3aGljaCBkaWZmZXIgb25seSBpbiB0aGUgb3JkZXIgaW4KLXdoaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIEZJRk8gcXVldWUsIHRoZSBmaXJzdCB0YXNrcyBhZGRlZCBhcmUKLXRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEgTElGTyBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKK3doaWNoIHRoZSBlbnRyaWVzIGFyZSByZXRyaWV2ZWQuICBJbiBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAKK3F1ZXVlLCB0aGUgZmlyc3QgdGFza3MgYWRkZWQgYXJlIHRoZSBmaXJzdCByZXRyaWV2ZWQuIEluIGEKKzphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgZW50cnkgaXMKIHRoZSBmaXJzdCByZXRyaWV2ZWQgKG9wZXJhdGluZyBsaWtlIGEgc3RhY2spLiAgV2l0aCBhIHByaW9yaXR5IHF1ZXVlLAogdGhlIGVudHJpZXMgYXJlIGtlcHQgc29ydGVkICh1c2luZyB0aGUgOm1vZDpgaGVhcHFgIG1vZHVsZSkgYW5kIHRoZQogbG93ZXN0IHZhbHVlZCBlbnRyeSBpcyByZXRyaWV2ZWQgZmlyc3QuCkBAIC0yOSwxNCArMzAsMTYgQEAKIAogLi4gY2xhc3M6OiBRdWV1ZShtYXhzaXplPTApCiAKLSAgIENvbnN0cnVjdG9yIGZvciBhIEZJRk8gcXVldWUuICAqbWF4c2l6ZSogaXMgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKKyAgIENvbnN0cnVjdG9yIGZvciBhIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUuICAqbWF4c2l6ZSogaXMKKyAgIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCiAgICBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUgcXVldWUuICBJbnNlcnRpb24gd2lsbAogICAgYmxvY2sgb25jZSB0aGlzIHNpemUgaGFzIGJlZW4gcmVhY2hlZCwgdW50aWwgcXVldWUgaXRlbXMgYXJlIGNvbnN1bWVkLiAgSWYKICAgICptYXhzaXplKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuCiAKIC4uIGNsYXNzOjogTGlmb1F1ZXVlKG1heHNpemU9MCkKIAotICAgQ29uc3RydWN0b3IgZm9yIGEgTElGTyBxdWV1ZS4gICptYXhzaXplKiBpcyBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAorICAgQ29uc3RydWN0b3IgZm9yIGEgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLiAgKm1heHNpemUqIGlzCisgICBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAogICAgbGltaXQgb24gdGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IGNhbiBiZSBwbGFjZWQgaW4gdGhlIHF1ZXVlLiAgSW5zZXJ0aW9uIHdpbGwKICAgIGJsb2NrIG9uY2UgdGhpcyBzaXplIGhhcyBiZWVuIHJlYWNoZWQsIHVudGlsIHF1ZXVlIGl0ZW1zIGFyZSBjb25zdW1lZC4gIElmCiAgICAqbWF4c2l6ZSogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8sIHRoZSBxdWV1ZSBzaXplIGlzIGluZmluaXRlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKaW5kZXggMjJmMThhMC4uZWRmNzZkNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CkBAIC00Niw3ICs0Niw4IEBACiAuLiB3YXJuaW5nOjoKIAogICAgVGhlIHBzZXVkby1yYW5kb20gZ2VuZXJhdG9ycyBvZiB0aGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHVzZWQgZm9yCi0gICBzZWN1cml0eSBwdXJwb3Nlcy4KKyAgIHNlY3VyaXR5IHB1cnBvc2VzLiAgRm9yIHNlY3VyaXR5IG9yIGNyeXB0b2dyYXBoaWMgdXNlcywgc2VlIHRoZQorICAgOm1vZDpgc2VjcmV0c2AgbW9kdWxlLgogCiAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKQEAgLTEyMyw2ICsxMjQsMzEgQEAKICAgIFJldHVybiBhIHJhbmRvbSBlbGVtZW50IGZyb20gdGhlIG5vbi1lbXB0eSBzZXF1ZW5jZSAqc2VxKi4gSWYgKnNlcSogaXMgZW1wdHksCiAgICByYWlzZXMgOmV4YzpgSW5kZXhFcnJvcmAuCiAKKy4uIGZ1bmN0aW9uOjogY2hvaWNlcyhwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSkKKworICAgUmV0dXJuIGEgKmsqIHNpemVkIGxpc3Qgb2YgZWxlbWVudHMgY2hvc2VuIGZyb20gdGhlICpwb3B1bGF0aW9uKiB3aXRoIHJlcGxhY2VtZW50LgorICAgSWYgdGhlICpwb3B1bGF0aW9uKiBpcyBlbXB0eSwgcmFpc2VzIDpleGM6YEluZGV4RXJyb3JgLgorCisgICBJZiBhICp3ZWlnaHRzKiBzZXF1ZW5jZSBpcyBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUgYWNjb3JkaW5nIHRvIHRoZQorICAgcmVsYXRpdmUgd2VpZ2h0cy4gIEFsdGVybmF0aXZlbHksIGlmIGEgKmN1bV93ZWlnaHRzKiBzZXF1ZW5jZSBpcyBnaXZlbiwgdGhlCisgICBzZWxlY3Rpb25zIGFyZSBtYWRlIGFjY29yZGluZyB0byB0aGUgY3VtdWxhdGl2ZSB3ZWlnaHRzIChwZXJoYXBzIGNvbXB1dGVkCisgICB1c2luZyA6ZnVuYzpgaXRlcnRvb2xzLmFjY3VtdWxhdGVgKS4gIEZvciBleGFtcGxlLCB0aGUgcmVsYXRpdmUgd2VpZ2h0cworICAgYGBbMTAsIDUsIDMwLCA1XWBgIGFyZSBlcXVpdmFsZW50IHRvIHRoZSBjdW11bGF0aXZlIHdlaWdodHMKKyAgIGBgWzEwLCAxNSwgNDUsIDUwXWBgLiAgSW50ZXJuYWxseSwgdGhlIHJlbGF0aXZlIHdlaWdodHMgYXJlIGNvbnZlcnRlZCB0bworICAgY3VtdWxhdGl2ZSB3ZWlnaHRzIGJlZm9yZSBtYWtpbmcgc2VsZWN0aW9ucywgc28gc3VwcGx5aW5nIHRoZSBjdW11bGF0aXZlCisgICB3ZWlnaHRzIHNhdmVzIHdvcmsuCisKKyAgIElmIG5laXRoZXIgKndlaWdodHMqIG5vciAqY3VtX3dlaWdodHMqIGFyZSBzcGVjaWZpZWQsIHNlbGVjdGlvbnMgYXJlIG1hZGUKKyAgIHdpdGggZXF1YWwgcHJvYmFiaWxpdHkuICBJZiBhIHdlaWdodHMgc2VxdWVuY2UgaXMgc3VwcGxpZWQsIGl0IG11c3QgYmUKKyAgIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgKnBvcHVsYXRpb24qIHNlcXVlbmNlLiAgSXQgaXMgYSA6ZXhjOmBUeXBlRXJyb3JgCisgICB0byBzcGVjaWZ5IGJvdGggKndlaWdodHMqIGFuZCAqY3VtX3dlaWdodHMqLgorCisgICBUaGUgKndlaWdodHMqIG9yICpjdW1fd2VpZ2h0cyogY2FuIHVzZSBhbnkgbnVtZXJpYyB0eXBlIHRoYXQgaW50ZXJvcGVyYXRlcworICAgd2l0aCB0aGUgOmNsYXNzOmBmbG9hdGAgdmFsdWVzIHJldHVybmVkIGJ5IDpmdW5jOmByYW5kb21gICh0aGF0IGluY2x1ZGVzCisgICBpbnRlZ2VycywgZmxvYXRzLCBhbmQgZnJhY3Rpb25zIGJ1dCBleGNsdWRlcyBkZWNpbWFscykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGZ1bmN0aW9uOjogc2h1ZmZsZSh4WywgcmFuZG9tXSkKIApAQCAtMzEzLDM2ICszMzksMzUgQEAKICAgID4+PiByYW5kb20uY2hvaWNlKCdhYmNkZWZnaGlqJykgICAgICAgICAgIyBTaW5nbGUgcmFuZG9tIGVsZW1lbnQKICAgICdjJwogCi0gICA+Pj4gaXRlbXMgPSBbMSwgMiwgMywgNCwgNSwgNiwgN10KLSAgID4+PiByYW5kb20uc2h1ZmZsZShpdGVtcykKLSAgID4+PiBpdGVtcwotICAgWzcsIDMsIDIsIDUsIDYsIDQsIDFdCisgICA+Pj4gZGVjayA9IFsnamFjaycsICdxdWVlbicsICdraW5nJywgJ2FjZSddCisgICA+Pj4gc2h1ZmZsZShkZWNrKQorICAgPj4+IGRlY2sKKyAgIFsna2luZycsICdxdWVlbicsICdhY2UnLCAnamFjayddCiAKICAgID4+PiByYW5kb20uc2FtcGxlKFsxLCAyLCAzLCA0LCA1XSwgIDMpICAgIyBUaHJlZSBzYW1wbGVzIHdpdGhvdXQgcmVwbGFjZW1lbnQKICAgIFs0LCAxLCA1XQogCi1BIGNvbW1vbiB0YXNrIGlzIHRvIG1ha2UgYSA6ZnVuYzpgcmFuZG9tLmNob2ljZWAgd2l0aCB3ZWlnaHRlZCBwcm9iYWJpbGl0aWVzLgorICAgPj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNpeCB3ZWlnaHRlZCBzYW1wbGVzIHdpdGggcmVwbGFjZW1lbnQKKyAgID4+PiBjaG9pY2VzKFsncmVkJywgJ2JsYWNrJywgJ2dyZWVuJ10sIFsxOCwgMTgsIDJdLCBrPTYpCisgICBbJ3JlZCcsICdncmVlbicsICdibGFjaycsICdibGFjaycsICdyZWQnLCAnYmxhY2snXQogCi1JZiB0aGUgd2VpZ2h0cyBhcmUgc21hbGwgaW50ZWdlciByYXRpb3MsIGEgc2ltcGxlIHRlY2huaXF1ZSBpcyB0byBidWlsZCBhIHNhbXBsZQotcG9wdWxhdGlvbiB3aXRoIHJlcGVhdHM6OgorICAgIyBQcm9iYWJpbGl0eSBvZiBnZXR0aW5nIDUgb3IgbW9yZSBoZWFkcyBmcm9tIDcgc3BpbnMgb2YgYSBiaWFzZWQgY29pbgorICAgIyB0aGF0IHNldHRsZXMgb24gaGVhZHMgNjAlIG9mIHRoZSB0aW1lLgorICAgPj4+IG4gPSAxMDAwMAorICAgPj4+IGN3ID0gWzAuNjAsIDEuMDBdCisgICA+Pj4gc3VtKGNob2ljZXMoJ0hUJywgY3VtX3dlaWdodHM9Y3csIGs9NykuY291bnQoJ0gnKSA+PSA1IGZvciBpIGluIHJhbmdlKG4pKSAvIG4KKyAgIDAuNDE2OQogCi0gICAgPj4+IHdlaWdodGVkX2Nob2ljZXMgPSBbKCdSZWQnLCAzKSwgKCdCbHVlJywgMiksICgnWWVsbG93JywgMSksICgnR3JlZW4nLCA0KV0KLSAgICA+Pj4gcG9wdWxhdGlvbiA9IFt2YWwgZm9yIHZhbCwgY250IGluIHdlaWdodGVkX2Nob2ljZXMgZm9yIGkgaW4gcmFuZ2UoY250KV0KLSAgICA+Pj4gcG9wdWxhdGlvbgotICAgIFsnUmVkJywgJ1JlZCcsICdSZWQnLCAnQmx1ZScsICdCbHVlJywgJ1llbGxvdycsICdHcmVlbicsICdHcmVlbicsICdHcmVlbicsICdHcmVlbiddCitFeGFtcGxlIG9mIGBzdGF0aXN0aWNhbCBib290c3RyYXBwaW5nCis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQm9vdHN0cmFwcGluZ18oc3RhdGlzdGljcyk+YF8gdXNpbmcgcmVzYW1wbGluZword2l0aCByZXBsYWNlbWVudCB0byBlc3RpbWF0ZSBhIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIHRoZSBtZWFuIG9mIGEgc21hbGwKK3NhbXBsZSBvZiBzaXplIGZpdmU6OgogCi0gICAgPj4+IHJhbmRvbS5jaG9pY2UocG9wdWxhdGlvbikKLSAgICAnR3JlZW4nCisgICAjIGh0dHA6Ly9zdGF0aXN0aWNzLmFib3V0LmNvbS9vZC9BcHBsaWNhdGlvbnMvYS9FeGFtcGxlLU9mLUJvb3RzdHJhcHBpbmcuaHRtCisgICBmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4KKyAgIGZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2VzCiAKLUEgbW9yZSBnZW5lcmFsIGFwcHJvYWNoIGlzIHRvIGFycmFuZ2UgdGhlIHdlaWdodHMgaW4gYSBjdW11bGF0aXZlIGRpc3RyaWJ1dGlvbgotd2l0aCA6ZnVuYzpgaXRlcnRvb2xzLmFjY3VtdWxhdGVgLCBhbmQgdGhlbiBsb2NhdGUgdGhlIHJhbmRvbSB2YWx1ZSB3aXRoCi06ZnVuYzpgYmlzZWN0LmJpc2VjdGA6OgotCi0gICAgPj4+IGNob2ljZXMsIHdlaWdodHMgPSB6aXAoKndlaWdodGVkX2Nob2ljZXMpCi0gICAgPj4+IGN1bWRpc3QgPSBsaXN0KGl0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQotICAgID4+PiBjdW1kaXN0ICAgICAgICAgICAgIyBbMywgMysyLCAzKzIrMSwgMysyKzErNF0KLSAgICBbMywgNSwgNiwgMTBdCi0KLSAgICA+Pj4geCA9IHJhbmRvbS5yYW5kb20oKSAqIGN1bWRpc3RbLTFdCi0gICAgPj4+IGNob2ljZXNbYmlzZWN0LmJpc2VjdChjdW1kaXN0LCB4KV0KLSAgICAnQmx1ZScKKyAgIGRhdGEgPSAxLCAyLCA0LCA0LCAxMAorICAgbWVhbnMgPSBzb3J0ZWQobWVhbihjaG9pY2VzKGRhdGEsIGs9NSkpIGZvciBpIGluIHJhbmdlKDIwKSkKKyAgIHByaW50KCdUaGUgc2FtcGxlIG1lYW4gb2YgezouMWZ9IGhhcyBhIDkwJSBjb25maWRlbmNlIGludGVydmFsICcKKyAgICAgICAgICdmcm9tIHs6LjFmfSB0byB7Oi4xZn0nLmZvcm1hdChtZWFuKGRhdGEpLCBtZWFuc1sxXSwgbWVhbnNbLTJdKSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlLnJzdCBiL0RvYy9saWJyYXJ5L3JlLnJzdAppbmRleCAxY2E2MjFlLi5jOWYyMjYzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmUucnN0CkBAIC0yMzAsMTIgKzIzMCw4IEBACiAgICBmbGFncyBhcmUgZGVzY3JpYmVkIGluIDpyZWY6YGNvbnRlbnRzLW9mLW1vZHVsZS1yZWAuKSBUaGlzCiAgICBpcyB1c2VmdWwgaWYgeW91IHdpc2ggdG8gaW5jbHVkZSB0aGUgZmxhZ3MgYXMgcGFydCBvZiB0aGUgcmVndWxhcgogICAgZXhwcmVzc2lvbiwgaW5zdGVhZCBvZiBwYXNzaW5nIGEgKmZsYWcqIGFyZ3VtZW50IHRvIHRoZQotICAgOmZ1bmM6YHJlLmNvbXBpbGVgIGZ1bmN0aW9uLgotCi0gICBOb3RlIHRoYXQgdGhlIGBgKD94KWBgIGZsYWcgY2hhbmdlcyBob3cgdGhlIGV4cHJlc3Npb24gaXMgcGFyc2VkLiBJdCBzaG91bGQgYmUKLSAgIHVzZWQgZmlyc3QgaW4gdGhlIGV4cHJlc3Npb24gc3RyaW5nLCBvciBhZnRlciBvbmUgb3IgbW9yZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuCi0gICBJZiB0aGVyZSBhcmUgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZsYWcsIHRoZSByZXN1bHRzIGFyZQotICAgdW5kZWZpbmVkLgorICAgOmZ1bmM6YHJlLmNvbXBpbGVgIGZ1bmN0aW9uLiAgRmxhZ3Mgc2hvdWxkIGJlIHVzZWQgZmlyc3QgaW4gdGhlCisgICBleHByZXNzaW9uIHN0cmluZy4KIAogYGAoPzouLi4pYGAKICAgIEEgbm9uLWNhcHR1cmluZyB2ZXJzaW9uIG9mIHJlZ3VsYXIgcGFyZW50aGVzZXMuICBNYXRjaGVzIHdoYXRldmVyIHJlZ3VsYXIKQEAgLTI0Myw2ICsyMzksMTYgQEAKICAgICpjYW5ub3QqIGJlIHJldHJpZXZlZCBhZnRlciBwZXJmb3JtaW5nIGEgbWF0Y2ggb3IgcmVmZXJlbmNlZCBsYXRlciBpbiB0aGUKICAgIHBhdHRlcm4uCiAKK2BgKD9pbXN4LWltc3g6Li4uKWBgCisgICAoWmVybyBvciBtb3JlIGxldHRlcnMgZnJvbSB0aGUgc2V0IGBgJ2knYGAsIGBgJ20nYGAsIGBgJ3MnYGAsIGBgJ3gnYGAsCisgICBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGBgJy0nYGAgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgbGV0dGVycyBmcm9tIHRoZQorICAgc2FtZSBzZXQuKSAgVGhlIGxldHRlcnMgc2V0IG9yIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZ3M6CisgICA6Y29uc3Q6YHJlLklgIChpZ25vcmUgY2FzZSksIDpjb25zdDpgcmUuTWAgKG11bHRpLWxpbmUpLCA6Y29uc3Q6YHJlLlNgCisgICAoZG90IG1hdGNoZXMgYWxsKSwgYW5kIDpjb25zdDpgcmUuWGAgKHZlcmJvc2UpLCBmb3IgdGhlIHBhcnQgb2YgdGhlCisgICBleHByZXNzaW9uLiAgKFRoZSBmbGFncyBhcmUgZGVzY3JpYmVkIGluIDpyZWY6YGNvbnRlbnRzLW9mLW1vZHVsZS1yZWAuKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogYGAoP1A8bmFtZT4uLi4pYGAKICAgIFNpbWlsYXIgdG8gcmVndWxhciBwYXJlbnRoZXNlcywgYnV0IHRoZSBzdWJzdHJpbmcgbWF0Y2hlZCBieSB0aGUgZ3JvdXAgaXMKICAgIGFjY2Vzc2libGUgdmlhIHRoZSBzeW1ib2xpYyBncm91cCBuYW1lICpuYW1lKi4gIEdyb3VwIG5hbWVzIG11c3QgYmUgdmFsaWQKQEAgLTMyNyw4ICszMzMsOSBAQAogCiAKIFRoZSBzcGVjaWFsIHNlcXVlbmNlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIGEgY2hhcmFjdGVyIGZyb20gdGhlIGxpc3QgYmVsb3cuCi1JZiB0aGUgb3JkaW5hcnkgY2hhcmFjdGVyIGlzIG5vdCBvbiB0aGUgbGlzdCwgdGhlbiB0aGUgcmVzdWx0aW5nIFJFIHdpbGwgbWF0Y2gKLXRoZSBzZWNvbmQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsIGBgXCRgYCBtYXRjaGVzIHRoZSBjaGFyYWN0ZXIgYGAnJCdgYC4KK0lmIHRoZSBvcmRpbmFyeSBjaGFyYWN0ZXIgaXMgbm90IGFuIEFTQ0lJIGRpZ2l0IG9yIGFuIEFTQ0lJIGxldHRlciwgdGhlbiB0aGUKK3Jlc3VsdGluZyBSRSB3aWxsIG1hdGNoIHRoZSBzZWNvbmQgY2hhcmFjdGVyLiAgRm9yIGV4YW1wbGUsIGBgXCRgYCBtYXRjaGVzIHRoZQorY2hhcmFjdGVyIGBgJyQnYGAuCiAKIGBgXG51bWJlcmBgCiAgICBNYXRjaGVzIHRoZSBjb250ZW50cyBvZiB0aGUgZ3JvdXAgb2YgdGhlIHNhbWUgbnVtYmVyLiAgR3JvdXBzIGFyZSBudW1iZXJlZApAQCAtNDQ4LDkgKzQ1NSw4IEBACiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgVGhlIGBgJ1x1J2BgIGFuZCBgYCdcVSdgYCBlc2NhcGUgc2VxdWVuY2VzIGhhdmUgYmVlbiBhZGRlZC4KIAotLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgotICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhCi0gICBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlciBub3cgYXJlIGVycm9ycy4KIAogCiAuLiBzZWVhbHNvOjoKQEAgLTUzOCwxMSArNTQ0LDExIEBACiAgICBjdXJyZW50IGxvY2FsZS4gVGhlIHVzZSBvZiB0aGlzIGZsYWcgaXMgZGlzY291cmFnZWQgYXMgdGhlIGxvY2FsZSBtZWNoYW5pc20KICAgIGlzIHZlcnkgdW5yZWxpYWJsZSwgYW5kIGl0IG9ubHkgaGFuZGxlcyBvbmUgImN1bHR1cmUiIGF0IGEgdGltZSBhbnl3YXk7CiAgICB5b3Ugc2hvdWxkIHVzZSBVbmljb2RlIG1hdGNoaW5nIGluc3RlYWQsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGluIFB5dGhvbiAzCi0gICBmb3IgVW5pY29kZSAoc3RyKSBwYXR0ZXJucy4gVGhpcyBmbGFnIG1ha2VzIHNlbnNlIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KKyAgIGZvciBVbmljb2RlIChzdHIpIHBhdHRlcm5zLiBUaGlzIGZsYWcgY2FuIGJlIHVzZWQgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICAgICBEZXByZWNhdGVkIHRoZSB1c2Ugb2YgIDpjb25zdDpgcmUuTE9DQUxFYCB3aXRoIHN0cmluZyBwYXR0ZXJucyBvcgotICAgICAgOmNvbnN0OmByZS5BU0NJSWAuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmNvbnN0OmByZS5MT0NBTEVgIGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucyBhbmQgaXMKKyAgICAgIG5vdCBjb21wYXRpYmxlIHdpdGggOmNvbnN0OmByZS5BU0NJSWAuCiAKIAogLi4gZGF0YTo6IE0KQEAgLTc0OCw5ICs3NTQsOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFVubWF0Y2hlZCBncm91cHMgYXJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkgc3RyaW5nLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICAgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEKLSAgICAgIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjYuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyIG5vdyBhcmUgZXJyb3JzLgogCiAKIC4uIGZ1bmN0aW9uOjogc3VibihwYXR0ZXJuLCByZXBsLCBzdHJpbmcsIGNvdW50PTAsIGZsYWdzPTApCkBAIC0xMDE2LDYgKzEwMjEsMjIgQEAKICAgICAgICdjMycKIAogCisuLiBtZXRob2Q6OiBtYXRjaC5fX2dldGl0ZW1fXyhnKQorCisgICBUaGlzIGlzIGlkZW50aWNhbCB0byBgYG0uZ3JvdXAoZylgYC4gIFRoaXMgYWxsb3dzIGVhc2llciBhY2Nlc3MgdG8KKyAgIGFuIGluZGl2aWR1YWwgZ3JvdXAgZnJvbSBhIG1hdGNoOgorCisgICAgICA+Pj4gbSA9IHJlLm1hdGNoKHIiKFx3KykgKFx3KykiLCAiSXNhYWMgTmV3dG9uLCBwaHlzaWNpc3QiKQorICAgICAgPj4+IG1bMF0gICAgICAgIyBUaGUgZW50aXJlIG1hdGNoCisgICAgICAnSXNhYWMgTmV3dG9uJworICAgICAgPj4+IG1bMV0gICAgICAgIyBUaGUgZmlyc3QgcGFyZW50aGVzaXplZCBzdWJncm91cC4KKyAgICAgICdJc2FhYycKKyAgICAgID4+PiBtWzJdICAgICAgICMgVGhlIHNlY29uZCBwYXJlbnRoZXNpemVkIHN1Ymdyb3VwLgorICAgICAgJ05ld3RvbicKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gbWV0aG9kOjogbWF0Y2guZ3JvdXBzKGRlZmF1bHQ9Tm9uZSkKIAogICAgUmV0dXJuIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIHN1Ymdyb3VwcyBvZiB0aGUgbWF0Y2gsIGZyb20gMSB1cCB0byBob3dldmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggNGQzYzA5OS4uNTRjNTRiNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtMTY3LDYgKzE2NywyMCBAQAogICAgVGhpcyBjYWxscyA6YzpmdW5jOmBhZGRfaGlzdG9yeWAgaW4gdGhlIHVuZGVybHlpbmcgbGlicmFyeS4KIAogCisuLiBmdW5jdGlvbjo6IHNldF9hdXRvX2hpc3RvcnkoZW5hYmxlZCkKKworICAgRW5hYmxlIG9yIGRpc2FibGUgYXV0b21hdGljIGNhbGxzIHRvIDpjOmZ1bmM6YGFkZF9oaXN0b3J5YCB3aGVuIHJlYWRpbmcKKyAgIGlucHV0IHZpYSByZWFkbGluZS4gIFRoZSAqZW5hYmxlZCogYXJndW1lbnQgc2hvdWxkIGJlIGEgQm9vbGVhbiB2YWx1ZQorICAgdGhhdCB3aGVuIHRydWUsIGVuYWJsZXMgYXV0byBoaXN0b3J5LCBhbmQgdGhhdCB3aGVuIGZhbHNlLCBkaXNhYmxlcworICAgYXV0byBoaXN0b3J5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gaW1wbC1kZXRhaWw6OgorICAgICAgQXV0byBoaXN0b3J5IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGNoYW5nZXMgdG8gdGhpcyBkbyBub3QgcGVyc2lzdAorICAgICAgYWNyb3NzIG11bHRpcGxlIHNlc3Npb25zLgorCisKIFN0YXJ0dXAgaG9va3MKIC0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VjcmV0cy5yc3QgYi9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmY4NDhmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvc2VjcmV0cy5yc3QKQEAgLTAsMCArMSwxOTggQEAKKzptb2Q6YHNlY3JldHNgIC0tLSBHZW5lcmF0ZSBzZWN1cmUgcmFuZG9tIG51bWJlcnMgZm9yIG1hbmFnaW5nIHNlY3JldHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogc2VjcmV0cworICAgOnN5bm9wc2lzOiBHZW5lcmF0ZSBzZWN1cmUgcmFuZG9tIG51bWJlcnMgZm9yIG1hbmFnaW5nIHNlY3JldHMuCisKKy4uIG1vZHVsZWF1dGhvcjo6IFN0ZXZlbiBEJ0FwcmFubyA8c3RldmUrcHl0aG9uQHBlYXJ3b29kLmluZm8+CisuLiBzZWN0aW9uYXV0aG9yOjogU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4KKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiB0ZXN0c2V0dXA6OgorCisgICBmcm9tIHNlY3JldHMgaW1wb3J0ICoKKyAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvc2VjcmV0cy5weWAKKworLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIGlzIHVzZWQgZm9yIGdlbmVyYXRpbmcgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nCityYW5kb20gbnVtYmVycyBzdWl0YWJsZSBmb3IgbWFuYWdpbmcgZGF0YSBzdWNoIGFzIHBhc3N3b3JkcywgYWNjb3VudAorYXV0aGVudGljYXRpb24sIHNlY3VyaXR5IHRva2VucywgYW5kIHJlbGF0ZWQgc2VjcmV0cy4KKworSW4gcGFydGljdWxhcmx5LCA6bW9kOmBzZWNyZXRzYCBzaG91bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZQorZGVmYXVsdCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgaW4gdGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlLCB3aGljaAoraXMgZGVzaWduZWQgZm9yIG1vZGVsbGluZyBhbmQgc2ltdWxhdGlvbiwgbm90IHNlY3VyaXR5IG9yIGNyeXB0b2dyYXBoeS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUwNmAKKworCitSYW5kb20gbnVtYmVycworLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIG1vc3Qgc2VjdXJlIHNvdXJjZSBvZgorcmFuZG9tbmVzcyB0aGF0IHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcy4KKworLi4gY2xhc3M6OiBTeXN0ZW1SYW5kb20KKworICAgQSBjbGFzcyBmb3IgZ2VuZXJhdGluZyByYW5kb20gbnVtYmVycyB1c2luZyB0aGUgaGlnaGVzdC1xdWFsaXR5CisgICBzb3VyY2VzIHByb3ZpZGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgU2VlCisgICA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuCisKKy4uIGZ1bmN0aW9uOjogY2hvaWNlKHNlcXVlbmNlKQorCisgICBSZXR1cm4gYSByYW5kb21seS1jaG9zZW4gZWxlbWVudCBmcm9tIGEgbm9uLWVtcHR5IHNlcXVlbmNlLgorCisuLiBmdW5jdGlvbjo6IHJhbmRiZWxvdyhuKQorCisgICBSZXR1cm4gYSByYW5kb20gaW50IGluIHRoZSByYW5nZSBbMCwgKm4qKS4KKworLi4gZnVuY3Rpb246OiByYW5kYml0cyhrKQorCisgICBSZXR1cm4gYW4gaW50IHdpdGggKmsqIHJhbmRvbSBiaXRzLgorCisKK0dlbmVyYXRpbmcgdG9rZW5zCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgZ2VuZXJhdGluZyBzZWN1cmUKK3Rva2Vucywgc3VpdGFibGUgZm9yIGFwcGxpY2F0aW9ucyBzdWNoIGFzIHBhc3N3b3JkIHJlc2V0cywKK2hhcmQtdG8tZ3Vlc3MgVVJMcywgYW5kIHNpbWlsYXIuCisKKy4uIGZ1bmN0aW9uOjogdG9rZW5fYnl0ZXMoW25ieXRlcz1Ob25lXSkKKworICAgUmV0dXJuIGEgcmFuZG9tIGJ5dGUgc3RyaW5nIGNvbnRhaW5pbmcgKm5ieXRlcyogbnVtYmVyIG9mIGJ5dGVzLgorICAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcworICAgdXNlZC4KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiB0b2tlbl9ieXRlcygxNikgICNkb2N0ZXN0OitTS0lQCisgICAgICBiJ1x4ZWJyXHgxN0QqdFx4YWVceGQ0XHhlM1NceGI2XHhlMlx4ZWJQMVx4OGInCisKKworLi4gZnVuY3Rpb246OiB0b2tlbl9oZXgoW25ieXRlcz1Ob25lXSkKKworICAgUmV0dXJuIGEgcmFuZG9tIHRleHQgc3RyaW5nLCBpbiBoZXhhZGVjaW1hbC4gIFRoZSBzdHJpbmcgaGFzICpuYnl0ZXMqCisgICByYW5kb20gYnl0ZXMsIGVhY2ggYnl0ZSBjb252ZXJ0ZWQgdG8gdHdvIGhleCBkaWdpdHMuICBJZiAqbmJ5dGVzKiBpcworICAgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX2hleCgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgICAnZjliZjc4YjlhMThjZTZkNDZhMGNkMmIwYjg2ZGY5ZGEnCisKKy4uIGZ1bmN0aW9uOjogdG9rZW5fdXJsc2FmZShbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gVVJMLXNhZmUgdGV4dCBzdHJpbmcsIGNvbnRhaW5pbmcgKm5ieXRlcyogcmFuZG9tCisgICBieXRlcy4gIFRoZSB0ZXh0IGlzIEJhc2U2NCBlbmNvZGVkLCBzbyBvbiBhdmVyYWdlIGVhY2ggYnl0ZSByZXN1bHRzCisgICBpbiBhcHByb3hpbWF0ZWx5IDEuMyBjaGFyYWN0ZXJzLiAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90CisgICBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiB0b2tlbl91cmxzYWZlKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgICdEcm1oemU2RVBjdjBmTl84MUJqLW5BJworCisKK0hvdyBtYW55IGJ5dGVzIHNob3VsZCB0b2tlbnMgdXNlPworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RvIGJlIHNlY3VyZSBhZ2FpbnN0CitgYnJ1dGUtZm9yY2UgYXR0YWNrcyA8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQnJ1dGUtZm9yY2VfYXR0YWNrPmBfLAordG9rZW5zIG5lZWQgdG8gaGF2ZSBzdWZmaWNpZW50IHJhbmRvbW5lc3MuICBVbmZvcnR1bmF0ZWx5LCB3aGF0IGlzCitjb25zaWRlcmVkIHN1ZmZpY2llbnQgd2lsbCBuZWNlc3NhcmlseSBpbmNyZWFzZSBhcyBjb21wdXRlcnMgZ2V0IG1vcmUKK3Bvd2VyZnVsIGFuZCBhYmxlIHRvIG1ha2UgbW9yZSBndWVzc2VzIGluIGEgc2hvcnRlciBwZXJpb2QuICBBcyBvZiAyMDE1LAoraXQgaXMgYmVsaWV2ZWQgdGhhdCAzMiBieXRlcyAoMjU2IGJpdHMpIG9mIHJhbmRvbW5lc3MgaXMgc3VmZmljaWVudCBmb3IKK3RoZSB0eXBpY2FsIHVzZS1jYXNlIGV4cGVjdGVkIGZvciB0aGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlLgorCitGb3IgdGhvc2Ugd2hvIHdhbnQgdG8gbWFuYWdlIHRoZWlyIG93biB0b2tlbiBsZW5ndGgsIHlvdSBjYW4gZXhwbGljaXRseQorc3BlY2lmeSBob3cgbXVjaCByYW5kb21uZXNzIGlzIHVzZWQgZm9yIHRva2VucyBieSBnaXZpbmcgYW4gOmNsYXNzOmBpbnRgCithcmd1bWVudCB0byB0aGUgdmFyaW91cyBgYHRva2VuXypgYCBmdW5jdGlvbnMuICBUaGF0IGFyZ3VtZW50IGlzIHRha2VuCithcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIG9mIHJhbmRvbW5lc3MgdG8gdXNlLgorCitPdGhlcndpc2UsIGlmIG5vIGFyZ3VtZW50IGlzIHByb3ZpZGVkLCBvciBpZiB0aGUgYXJndW1lbnQgaXMgYGBOb25lYGAsCit0aGUgYGB0b2tlbl8qYGAgZnVuY3Rpb25zIHdpbGwgdXNlIGEgcmVhc29uYWJsZSBkZWZhdWx0IGluc3RlYWQuCisKKy4uIG5vdGU6OgorCisgICBUaGF0IGRlZmF1bHQgaXMgc3ViamVjdCB0byBjaGFuZ2UgYXQgYW55IHRpbWUsIGluY2x1ZGluZyBkdXJpbmcKKyAgIG1haW50ZW5hbmNlIHJlbGVhc2VzLgorCisKK090aGVyIGZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogY29tcGFyZV9kaWdlc3QoYSwgYikKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZ3MgKmEqIGFuZCAqYiogYXJlIGVxdWFsLCBvdGhlcndpc2UgYGBGYWxzZWBgLAorICAgaW4gc3VjaCBhIHdheSBhcyB0byByZWR1Y2UgdGhlIHJpc2sgb2YKKyAgIGB0aW1pbmcgYXR0YWNrcyA8aHR0cDovL2NvZGFoYWxlLmNvbS9hLWxlc3Nvbi1pbi10aW1pbmctYXR0YWNrcy8+YF8uCisgICBTZWUgOmZ1bmM6YGhtYWMuY29tcGFyZV9kaWdlc3RgIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuCisKKworUmVjaXBlcyBhbmQgYmVzdCBwcmFjdGljZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBzaG93cyByZWNpcGVzIGFuZCBiZXN0IHByYWN0aWNlcyBmb3IgdXNpbmcgOm1vZDpgc2VjcmV0c2AKK3RvIG1hbmFnZSBhIGJhc2ljIGxldmVsIG9mIHNlY3VyaXR5LgorCitHZW5lcmF0ZSBhbiBlaWdodC1jaGFyYWN0ZXIgYWxwaGFudW1lcmljIHBhc3N3b3JkOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgIGltcG9ydCBzdHJpbmcKKyAgIGFscGhhYmV0ID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzCisgICBwYXNzd29yZCA9ICcnLmpvaW4oY2hvaWNlKGFscGhhYmV0KSBmb3IgaSBpbiByYW5nZSg4KSkKKworCisuLiBub3RlOjoKKworICAgQXBwbGljYXRpb25zIHNob3VsZCBub3QKKyAgIGBzdG9yZSBwYXNzd29yZHMgaW4gYSByZWNvdmVyYWJsZSBmb3JtYXQgPGh0dHA6Ly9jd2UubWl0cmUub3JnL2RhdGEvZGVmaW5pdGlvbnMvMjU3Lmh0bWw+YF8sCisgICB3aGV0aGVyIHBsYWluIHRleHQgb3IgZW5jcnlwdGVkLiAgVGhleSBzaG91bGQgYmUgc2FsdGVkIGFuZCBoYXNoZWQKKyAgIHVzaW5nIGEgY3J5cHRvZ3JhcGhpY2FsbHktc3Ryb25nIG9uZS13YXkgKGlycmV2ZXJzaWJsZSkgaGFzaCBmdW5jdGlvbi4KKworCitHZW5lcmF0ZSBhIHRlbi1jaGFyYWN0ZXIgYWxwaGFudW1lcmljIHBhc3N3b3JkIHdpdGggYXQgbGVhc3Qgb25lCitsb3dlcmNhc2UgY2hhcmFjdGVyLCBhdCBsZWFzdCBvbmUgdXBwZXJjYXNlIGNoYXJhY3RlciwgYW5kIGF0IGxlYXN0Cit0aHJlZSBkaWdpdHM6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgaW1wb3J0IHN0cmluZworICAgYWxwaGFiZXQgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgIHdoaWxlIFRydWU6CisgICAgICAgcGFzc3dvcmQgPSAnJy5qb2luKGNob2ljZShhbHBoYWJldCkgZm9yIGkgaW4gcmFuZ2UoMTApKQorICAgICAgIGlmIChhbnkoYy5pc2xvd2VyKCkgZm9yIGMgaW4gcGFzc3dvcmQpCisgICAgICAgICAgICAgICBhbmQgYW55KGMuaXN1cHBlcigpIGZvciBjIGluIHBhc3N3b3JkKQorICAgICAgICAgICAgICAgYW5kIHN1bShjLmlzZGlnaXQoKSBmb3IgYyBpbiBwYXNzd29yZCkgPj0gMyk6CisgICAgICAgICAgIGJyZWFrCisKKworR2VuZXJhdGUgYW4gYFhLQ0Qtc3R5bGUgcGFzc3BocmFzZSA8aHR0cDovL3hrY2QuY29tLzkzNi8+YF86CisKKy4uIHRlc3Rjb2RlOjoKKworICAgIyBPbiBzdGFuZGFyZCBMaW51eCBzeXN0ZW1zLCB1c2UgYSBjb252ZW5pZW50IGRpY3Rpb25hcnkgZmlsZS4KKyAgICMgT3RoZXIgcGxhdGZvcm1zIG1heSBuZWVkIHRvIHByb3ZpZGUgdGhlaXIgb3duIHdvcmQtbGlzdC4KKyAgIHdpdGggb3BlbignL3Vzci9zaGFyZS9kaWN0L3dvcmRzJykgYXMgZjoKKyAgICAgICB3b3JkcyA9IFt3b3JkLnN0cmlwKCkgZm9yIHdvcmQgaW4gZl0KKyAgICAgICBwYXNzd29yZCA9ICcgJy5qb2luKGNob2ljZSh3b3JkcykgZm9yIGkgaW4gcmFuZ2UoNCkpCisKKworR2VuZXJhdGUgYSBoYXJkLXRvLWd1ZXNzIHRlbXBvcmFyeSBVUkwgY29udGFpbmluZyBhIHNlY3VyaXR5IHRva2VuCitzdWl0YWJsZSBmb3IgcGFzc3dvcmQgcmVjb3ZlcnkgYXBwbGljYXRpb25zOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgIHVybCA9ICdodHRwczovL215ZG9tYWluLmNvbS9yZXNldD0nICsgdG9rZW5fdXJsc2FmZSgpCisKKworCisuLgorICAgIyBUaGlzIG1vZGVsaW5lIG11c3QgYXBwZWFyIHdpdGhpbiB0aGUgbGFzdCB0ZW4gbGluZXMgb2YgdGhlIGZpbGUuCisgICBrYXRlOiBpbmRlbnQtd2lkdGggMzsgcmVtb3ZlLXRyYWlsaW5nLXNwYWNlIG9uOyByZXBsYWNlLXRhYnMgb247IGVuY29kaW5nIHV0Zi04OwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdCBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKaW5kZXggYTgxMzg2YS4uZjk3MTE4ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CkBAIC0yNjgsMzUgKzI2OCw0MyBAQAogCiAgICAqZXZlbnRtYXNrKgogCi0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IENvbnN0YW50ICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCi0gICB8IDpjb25zdDpgRVBPTExJTmAgICAgICB8IEF2YWlsYWJsZSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExPVVRgICAgICB8IEF2YWlsYWJsZSBmb3Igd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExQUklgICAgICB8IFVyZ2VudCBkYXRhIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExFUlJgICAgICB8IEVycm9yIGNvbmRpdGlvbiBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExIVVBgICAgICB8IEhhbmcgdXAgaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExFVGAgICAgICB8IFNldCBFZGdlIFRyaWdnZXIgYmVoYXZpb3IsIHRoZSBkZWZhdWx0IGlzICAgICB8Ci0gICB8ICAgICAgICAgICAgICAgICAgICAgICB8IExldmVsIFRyaWdnZXIgYmVoYXZpb3IgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExPTkVTSE9UYCB8IFNldCBvbmUtc2hvdCBiZWhhdmlvci4gQWZ0ZXIgb25lIGV2ZW50IGlzICAgICB8Ci0gICB8ICAgICAgICAgICAgICAgICAgICAgICB8IHB1bGxlZCBvdXQsIHRoZSBmZCBpcyBpbnRlcm5hbGx5IGRpc2FibGVkICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExSRE5PUk1gICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTElOYCAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExSREJBTkRgICB8IFByaW9yaXR5IGRhdGEgYmFuZCBjYW4gYmUgcmVhZC4gICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExXUk5PUk1gICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExXUkJBTkRgICB8IFByaW9yaXR5IGRhdGEgbWF5IGJlIHdyaXR0ZW4uICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgRVBPTExNU0dgICAgICB8IElnbm9yZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICB8IDpjb25zdDpgRVBPTExJTmAgICAgICAgIHwgQXZhaWxhYmxlIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICB8IEF2YWlsYWJsZSBmb3Igd3JpdGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFBSSWAgICAgICAgfCBVcmdlbnQgZGF0YSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExFUlJgICAgICAgIHwgRXJyb3IgY29uZGl0aW9uIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMSFVQYCAgICAgICB8IEhhbmcgdXAgaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVUYCAgICAgICAgfCBTZXQgRWRnZSBUcmlnZ2VyIGJlaGF2aW9yLCB0aGUgZGVmYXVsdCBpcyAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IExldmVsIFRyaWdnZXIgYmVoYXZpb3IgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTE9ORVNIT1RgICAgfCBTZXQgb25lLXNob3QgYmVoYXZpb3IuIEFmdGVyIG9uZSBldmVudCBpcyAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHB1bGxlZCBvdXQsIHRoZSBmZCBpcyBpbnRlcm5hbGx5IGRpc2FibGVkICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVYQ0xVU0lWRWAgfCBXYWtlIG9ubHkgb25lIGVwb2xsIG9iamVjdCB3aGVuIHRoZSAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzc29jaWF0ZWQgZmQgaGFzIGFuIGV2ZW50LiBUaGUgZGVmYXVsdCAoaWYgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhpcyBmbGFnIGlzIG5vdCBzZXQpIGlzIHRvIHdha2UgYWxsIGVwb2xsICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBvYmplY3RzIHBvbGxpbmcgb24gb24gYSBmZC4gICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSREhVUGAgICAgIHwgU3RyZWFtIHNvY2tldCBwZWVyIGNsb3NlZCBjb25uZWN0aW9uIG9yIHNodXQgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBkb3duIHdyaXRpbmcgaGFsZiBvZiBjb25uZWN0aW9uLiAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSRE5PUk1gICAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUkRCQU5EYCAgICB8IFByaW9yaXR5IGRhdGEgYmFuZCBjYW4gYmUgcmVhZC4gICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFdSTk9STWAgICAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExPVVRgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExXUkJBTkRgICAgIHwgUHJpb3JpdHkgZGF0YSBtYXkgYmUgd3JpdHRlbi4gICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMTVNHYCAgICAgICB8IElnbm9yZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogCiAuLiBtZXRob2Q6OiBlcG9sbC5jbG9zZSgpCkBAIC0zODUsNiArMzkzLDkgQEAKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmNvbnN0OmBQT0xMSFVQYCAgfCBIdW5nIHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBQT0xMUkRIVVBgfCBTdHJlYW0gc29ja2V0IHBlZXIgY2xvc2VkIGNvbm5lY3Rpb24sIG9yIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCBzaHV0IGRvd24gd3JpdGluZyBoYWxmIG9mIGNvbm5lY3Rpb24gICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmNvbnN0OmBQT0xMTlZBTGAgfCBJbnZhbGlkIHJlcXVlc3Q6IGRlc2NyaXB0b3Igbm90IG9wZW4gICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0IGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CmluZGV4IGU4MWY5ODIuLjFhODliZjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKQEAgLTczLDExICs3MywxMSBAQAogVGhlIDptb2Q6YHNobGV4YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzOgogCiAKLS4uIGNsYXNzOjogc2hsZXgoaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlKQorLi4gY2xhc3M6OiBzaGxleChpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UsIHB1bmN0dWF0aW9uX2NoYXJzPUZhbHNlKQogCiAgICBBIDpjbGFzczpgfnNobGV4LnNobGV4YCBpbnN0YW5jZSBvciBzdWJjbGFzcyBpbnN0YW5jZSBpcyBhIGxleGljYWwgYW5hbHl6ZXIKICAgIG9iamVjdC4gIFRoZSBpbml0aWFsaXphdGlvbiBhcmd1bWVudCwgaWYgcHJlc2VudCwgc3BlY2lmaWVzIHdoZXJlIHRvIHJlYWQKLSAgIGNoYXJhY3RlcnMgZnJvbS4gSXQgbXVzdCBiZSBhIGZpbGUtL3N0cmVhbS1saWtlIG9iamVjdCB3aXRoCisgICBjaGFyYWN0ZXJzIGZyb20uICBJdCBtdXN0IGJlIGEgZmlsZS0vc3RyZWFtLWxpa2Ugb2JqZWN0IHdpdGgKICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkYCBhbmQgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYCBtZXRob2RzLCBvcgogICAgYSBzdHJpbmcuICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgaW5wdXQgd2lsbCBiZSB0YWtlbiBmcm9tIGBgc3lzLnN0ZGluYGAuCiAgICBUaGUgc2Vjb25kIG9wdGlvbmFsIGFyZ3VtZW50IGlzIGEgZmlsZW5hbWUgc3RyaW5nLCB3aGljaCBzZXRzIHRoZSBpbml0aWFsCkBAIC04Nyw4ICs4NywxOSBAQAogICAgd2hlbiAqcG9zaXgqIGlzIG5vdCB0cnVlIChkZWZhdWx0KSwgdGhlIDpjbGFzczpgfnNobGV4LnNobGV4YCBpbnN0YW5jZSB3aWxsCiAgICBvcGVyYXRlIGluIGNvbXBhdGliaWxpdHkgbW9kZS4gIFdoZW4gb3BlcmF0aW5nIGluIFBPU0lYIG1vZGUsCiAgICA6Y2xhc3M6YH5zaGxleC5zaGxleGAgd2lsbCB0cnkgdG8gYmUgYXMgY2xvc2UgYXMgcG9zc2libGUgdG8gdGhlIFBPU0lYIHNoZWxsCi0gICBwYXJzaW5nIHJ1bGVzLgorICAgcGFyc2luZyBydWxlcy4gIFRoZSAqcHVuY3R1YXRpb25fY2hhcnMqIGFyZ3VtZW50IHByb3ZpZGVzIGEgd2F5IHRvIG1ha2UgdGhlCisgICBiZWhhdmlvdXIgZXZlbiBjbG9zZXIgdG8gaG93IHJlYWwgc2hlbGxzIHBhcnNlLiAgVGhpcyBjYW4gdGFrZSBhIG51bWJlciBvZgorICAgdmFsdWVzOiB0aGUgZGVmYXVsdCB2YWx1ZSwgYGBGYWxzZWBgLCBwcmVzZXJ2ZXMgdGhlIGJlaGF2aW91ciBzZWVuIHVuZGVyCisgICBQeXRob24gMy41IGFuZCBlYXJsaWVyLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHBhcnNpbmcgb2YgdGhlIGNoYXJhY3RlcnMKKyAgIGBgKCk7PD58JmBgIGlzIGNoYW5nZWQ6IGFueSBydW4gb2YgdGhlc2UgY2hhcmFjdGVycyAoY29uc2lkZXJlZCBwdW5jdHVhdGlvbgorICAgY2hhcmFjdGVycykgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uICBJZiBzZXQgdG8gYSBub24tZW1wdHkgc3RyaW5nIG9mCisgICBjaGFyYWN0ZXJzLCB0aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBhcyB0aGUgcHVuY3R1YXRpb24gY2hhcmFjdGVycy4gIEFueQorICAgY2hhcmFjdGVycyBpbiB0aGUgOmF0dHI6YHdvcmRjaGFyc2AgYXR0cmlidXRlIHRoYXQgYXBwZWFyIGluCisgICAqcHVuY3R1YXRpb25fY2hhcnMqIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIDphdHRyOmB3b3JkY2hhcnNgLiAgU2VlCisgICA6cmVmOmBpbXByb3ZlZC1zaGVsbC1jb21wYXRpYmlsaXR5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSAqcHVuY3R1YXRpb25fY2hhcnMqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKIC4uIHNlZWFsc286OgogCkBAIC0xOTEsNyArMjAyLDEzIEBACiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53b3JkY2hhcnMKIAogICAgVGhlIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBhY2N1bXVsYXRlIGludG8gbXVsdGktY2hhcmFjdGVyIHRva2Vucy4gIEJ5Ci0gICBkZWZhdWx0LCBpbmNsdWRlcyBhbGwgQVNDSUkgYWxwaGFudW1lcmljcyBhbmQgdW5kZXJzY29yZS4KKyAgIGRlZmF1bHQsIGluY2x1ZGVzIGFsbCBBU0NJSSBhbHBoYW51bWVyaWNzIGFuZCB1bmRlcnNjb3JlLiAgSW4gUE9TSVggbW9kZSwgdGhlCisgICBhY2NlbnRlZCBjaGFyYWN0ZXJzIGluIHRoZSBMYXRpbi0xIHNldCBhcmUgYWxzbyBpbmNsdWRlZC4gIElmCisgICA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgIGlzIG5vdCBlbXB0eSwgdGhlIGNoYXJhY3RlcnMgYGB+LS4vKj89YGAsIHdoaWNoIGNhbgorICAgYXBwZWFyIGluIGZpbGVuYW1lIHNwZWNpZmljYXRpb25zIGFuZCBjb21tYW5kIGxpbmUgcGFyYW1ldGVycywgd2lsbCBhbHNvIGJlCisgICBpbmNsdWRlZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIGFueSBjaGFyYWN0ZXJzIHdoaWNoIGFwcGVhciBpbgorICAgYGBwdW5jdHVhdGlvbl9jaGFyc2BgIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGBgd29yZGNoYXJzYGAgaWYgdGhleSBhcmUgcHJlc2VudAorICAgdGhlcmUuCiAKIAogLi4gYXR0cmlidXRlOjogc2hsZXgud2hpdGVzcGFjZQpAQCAtMjIyLDkgKzIzOSwxMyBAQAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53aGl0ZXNwYWNlX3NwbGl0CiAKLSAgIElmIGBgVHJ1ZWBgLCB0b2tlbnMgd2lsbCBvbmx5IGJlIHNwbGl0IGluIHdoaXRlc3BhY2VzLiBUaGlzIGlzIHVzZWZ1bCwgZm9yCisgICBJZiBgYFRydWVgYCwgdG9rZW5zIHdpbGwgb25seSBiZSBzcGxpdCBpbiB3aGl0ZXNwYWNlcy4gIFRoaXMgaXMgdXNlZnVsLCBmb3IKICAgIGV4YW1wbGUsIGZvciBwYXJzaW5nIGNvbW1hbmQgbGluZXMgd2l0aCA6Y2xhc3M6YH5zaGxleC5zaGxleGAsIGdldHRpbmcKLSAgIHRva2VucyBpbiBhIHNpbWlsYXIgd2F5IHRvIHNoZWxsIGFyZ3VtZW50cy4KKyAgIHRva2VucyBpbiBhIHNpbWlsYXIgd2F5IHRvIHNoZWxsIGFyZ3VtZW50cy4gIElmIHRoaXMgYXR0cmlidXRlIGlzIGBgVHJ1ZWBgLAorICAgOmF0dHI6YHB1bmN0dWF0aW9uX2NoYXJzYCB3aWxsIGhhdmUgbm8gZWZmZWN0LCBhbmQgc3BsaXR0aW5nIHdpbGwgaGFwcGVuCisgICBvbmx5IG9uIHdoaXRlc3BhY2VzLiAgV2hlbiB1c2luZyA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgLCB3aGljaCBpcworICAgaW50ZW5kZWQgdG8gcHJvdmlkZSBwYXJzaW5nIGNsb3NlciB0byB0aGF0IGltcGxlbWVudGVkIGJ5IHNoZWxscywgaXQgaXMKKyAgIGFkdmlzYWJsZSB0byBsZWF2ZSBgYHdoaXRlc3BhY2Vfc3BsaXRgYCBhcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IHZhbHVlKS4KIAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC5pbmZpbGUKQEAgLTI0NSwxMCArMjY2LDkgQEAKICAgIFRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgIGJ5IGRlZmF1bHQuICBJZiB5b3UgYXNzaWduIGEgc3RyaW5nIHRvIGl0LCB0aGF0CiAgICBzdHJpbmcgd2lsbCBiZSByZWNvZ25pemVkIGFzIGEgbGV4aWNhbC1sZXZlbCBpbmNsdXNpb24gcmVxdWVzdCBzaW1pbGFyIHRvIHRoZQogICAgYGBzb3VyY2VgYCBrZXl3b3JkIGluIHZhcmlvdXMgc2hlbGxzLiAgVGhhdCBpcywgdGhlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0b2tlbgotICAgd2lsbCBiZSBvcGVuZWQgYXMgYSBmaWxlbmFtZSBhbmQgaW5wdXQgd2lsbAotICAgYmUgdGFrZW4gZnJvbSB0aGF0IHN0cmVhbSB1bnRpbCBFT0YsIGF0IHdoaWNoCi0gICBwb2ludCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UuY2xvc2VgIG1ldGhvZCBvZiB0aGF0IHN0cmVhbSB3aWxsIGJlIGNhbGxlZCBhbmQKLSAgIHRoZSBpbnB1dCBzb3VyY2Ugd2lsbCBhZ2FpbiBiZWNvbWUgdGhlIG9yaWdpbmFsIGlucHV0IHN0cmVhbS4gIFNvdXJjZQorICAgd2lsbCBiZSBvcGVuZWQgYXMgYSBmaWxlbmFtZSBhbmQgaW5wdXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoYXQgc3RyZWFtIHVudGlsCisgICBFT0YsIGF0IHdoaWNoIHBvaW50IHRoZSA6bWV0aDpgfmlvLklPQmFzZS5jbG9zZWAgbWV0aG9kIG9mIHRoYXQgc3RyZWFtIHdpbGwgYmUKKyAgIGNhbGxlZCBhbmQgdGhlIGlucHV0IHNvdXJjZSB3aWxsIGFnYWluIGJlY29tZSB0aGUgb3JpZ2luYWwgaW5wdXQgc3RyZWFtLiAgU291cmNlCiAgICByZXF1ZXN0cyBtYXkgYmUgc3RhY2tlZCBhbnkgbnVtYmVyIG9mIGxldmVscyBkZWVwLgogCiAKQEAgLTI3NSw2ICsyOTUsMTYgQEAKICAgIChgYCcnYGApLCBpbiBub24tUE9TSVggbW9kZSwgYW5kIHRvIGBgTm9uZWBgIGluIFBPU0lYIG1vZGUuCiAKIAorLi4gYXR0cmlidXRlOjogc2hsZXgucHVuY3R1YXRpb25fY2hhcnMKKworICAgQ2hhcmFjdGVycyB0aGF0IHdpbGwgYmUgY29uc2lkZXJlZCBwdW5jdHVhdGlvbi4gUnVucyBvZiBwdW5jdHVhdGlvbgorICAgY2hhcmFjdGVycyB3aWxsIGJlIHJldHVybmVkIGFzIGEgc2luZ2xlIHRva2VuLiBIb3dldmVyLCBub3RlIHRoYXQgbm8KKyAgIHNlbWFudGljIHZhbGlkaXR5IGNoZWNraW5nIHdpbGwgYmUgcGVyZm9ybWVkOiBmb3IgZXhhbXBsZSwgJz4+PicgY291bGQgYmUKKyAgIHJldHVybmVkIGFzIGEgdG9rZW4sIGV2ZW4gdGhvdWdoIGl0IG1heSBub3QgYmUgcmVjb2duaXNlZCBhcyBzdWNoIGJ5IHNoZWxscy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gX3NobGV4LXBhcnNpbmctcnVsZXM6CiAKIFBhcnNpbmcgUnVsZXMKQEAgLTMyNywzICszNTcsNjIgQEAKICogRU9GIGlzIHNpZ25hbGVkIHdpdGggYSA6Y29uc3Q6YE5vbmVgIHZhbHVlOwogCiAqIFF1b3RlZCBlbXB0eSBzdHJpbmdzIChgYCcnYGApIGFyZSBhbGxvd2VkLgorCisuLiBfaW1wcm92ZWQtc2hlbGwtY29tcGF0aWJpbGl0eToKKworSW1wcm92ZWQgQ29tcGF0aWJpbGl0eSB3aXRoIFNoZWxscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworVGhlIDpjbGFzczpgc2hsZXhgIGNsYXNzIHByb3ZpZGVzIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgcGFyc2luZyBwZXJmb3JtZWQgYnkKK2NvbW1vbiBVbml4IHNoZWxscyBsaWtlIGBgYmFzaGBgLCBgYGRhc2hgYCwgYW5kIGBgc2hgYC4gIFRvIHRha2UgYWR2YW50YWdlIG9mCit0aGlzIGNvbXBhdGliaWxpdHksIHNwZWNpZnkgdGhlIGBgcHVuY3R1YXRpb25fY2hhcnNgYCBhcmd1bWVudCBpbiB0aGUKK2NvbnN0cnVjdG9yLiAgVGhpcyBkZWZhdWx0cyB0byBgYEZhbHNlYGAsIHdoaWNoIHByZXNlcnZlcyBwcmUtMy42IGJlaGF2aW91ci4KK0hvd2V2ZXIsIGlmIGl0IGlzIHNldCB0byBgYFRydWVgYCwgdGhlbiBwYXJzaW5nIG9mIHRoZSBjaGFyYWN0ZXJzIGBgKCk7PD58JmBgCitpcyBjaGFuZ2VkOiBhbnkgcnVuIG9mIHRoZXNlIGNoYXJhY3RlcnMgaXMgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uICBXaGlsZQordGhpcyBpcyBzaG9ydCBvZiBhIGZ1bGwgcGFyc2VyIGZvciBzaGVsbHMgKHdoaWNoIHdvdWxkIGJlIG91dCBvZiBzY29wZSBmb3IgdGhlCitzdGFuZGFyZCBsaWJyYXJ5LCBnaXZlbiB0aGUgbXVsdGlwbGljaXR5IG9mIHNoZWxscyBvdXQgdGhlcmUpLCBpdCBkb2VzIGFsbG93Cit5b3UgdG8gcGVyZm9ybSBwcm9jZXNzaW5nIG9mIGNvbW1hbmQgbGluZXMgbW9yZSBlYXNpbHkgdGhhbiB5b3UgY291bGQKK290aGVyd2lzZS4gIFRvIGlsbHVzdHJhdGUsIHlvdSBjYW4gc2VlIHRoZSBkaWZmZXJlbmNlIGluIHRoZSBmb2xsb3dpbmcgc25pcHBldDo6CisKKyAgICBpbXBvcnQgc2hsZXgKKworICAgIGZvciBwdW5jdCBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICBpZiBwdW5jdDoKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnT2xkJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWVzc2FnZSA9ICdOZXcnCisgICAgICAgIHRleHQgPSAiYSAmJiBiOyBjICYmIGQgfHwgZTsgZiA+J2FiYyc7IChkZWYgXCJnaGlcIikiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCh0ZXh0LCBwdW5jdHVhdGlvbl9jaGFycz1wdW5jdCkKKyAgICAgICAgcHJpbnQoJyVzOiAlcycgJSAobWVzc2FnZSwgbGlzdChzKSkpCisKK3doaWNoIHByaW50cyBvdXQ6OgorCisgICAgT2xkOiBbJ2EnLCAnJicsICcmJywgJ2InLCAnOycsICdjJywgJyYnLCAnJicsICdkJywgJ3wnLCAnfCcsICdlJywgJzsnLCAnZicsICc+JywgIidhYmMnIiwgJzsnLCAnKCcsICdkZWYnLCAnImdoaSInLCAnKSddCisgICAgTmV3OiBbJ2EnLCAnJiYnLCAnYicsICc7JywgJ2MnLCAnJiYnLCAnZCcsICd8fCcsICdlJywgJzsnLCAnZicsICc+JywgIidhYmMnIiwgJzsnLCAnKCcsICdkZWYnLCAnImdoaSInLCAnKSddCisKK09mIGNvdXJzZSwgdG9rZW5zIHdpbGwgYmUgcmV0dXJuZWQgd2hpY2ggYXJlIG5vdCB2YWxpZCBmb3Igc2hlbGxzLCBhbmQgeW91J2xsCituZWVkIHRvIGltcGxlbWVudCB5b3VyIG93biBlcnJvciBjaGVja3Mgb24gdGhlIHJldHVybmVkIHRva2Vucy4KKworSW5zdGVhZCBvZiBwYXNzaW5nIGBgVHJ1ZWBgIGFzIHRoZSB2YWx1ZSBmb3IgdGhlIHB1bmN0dWF0aW9uX2NoYXJzIHBhcmFtZXRlciwKK3lvdSBjYW4gcGFzcyBhIHN0cmluZyB3aXRoIHNwZWNpZmljIGNoYXJhY3RlcnMsIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUKK3doaWNoIGNoYXJhY3RlcnMgY29uc3RpdHV0ZSBwdW5jdHVhdGlvbi4gRm9yIGV4YW1wbGU6OgorCisgICAgPj4+IGltcG9ydCBzaGxleAorICAgID4+PiBzID0gc2hsZXguc2hsZXgoImEgJiYgYiB8fCBjIiwgcHVuY3R1YXRpb25fY2hhcnM9InwiKQorICAgID4+PiBsaXN0KHMpCisgICAgWydhJywgJyYnLCAnJicsICdiJywgJ3x8JywgJ2MnXQorCisuLiBub3RlOjogV2hlbiBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgaXMgc3BlY2lmaWVkLCB0aGUgOmF0dHI6YH5zaGxleC53b3JkY2hhcnNgCisgICBhdHRyaWJ1dGUgaXMgYXVnbWVudGVkIHdpdGggdGhlIGNoYXJhY3RlcnMgYGB+LS4vKj89YGAuICBUaGF0IGlzIGJlY2F1c2UgdGhlc2UKKyAgIGNoYXJhY3RlcnMgY2FuIGFwcGVhciBpbiBmaWxlIG5hbWVzIChpbmNsdWRpbmcgd2lsZGNhcmRzKSBhbmQgY29tbWFuZC1saW5lCisgICBhcmd1bWVudHMgKGUuZy4gYGAtLWNvbG9yPWF1dG9gYCkuIEhlbmNlOjoKKworICAgICAgPj4+IGltcG9ydCBzaGxleAorICAgICAgPj4+IHMgPSBzaGxleC5zaGxleCgnfi9hICYmIGItYyAtLWNvbG9yPWF1dG8gfHwgZCAqLnB5PycsCisgICAgICAuLi4gICAgICAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICA+Pj4gbGlzdChzKQorICAgICAgWyd+L2EnLCAnJiYnLCAnYi1jJywgJy0tY29sb3I9YXV0bycsICd8fCcsICdkJywgJyoucHk/J10KKworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0IGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAppbmRleCBhMWNmMjQxLi5mZWZkNmFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKQEAgLTQyNSw3ICs0MjUsNyBAQAogICAgaW1wb3J0IGxvZ2dpbmcKIAogICAgZGVmIF9sb2dwYXRoKHBhdGgsIG5hbWVzKToKLSAgICAgICBsb2dnaW5nLmluZm8oJ1dvcmtpbmcgaW4gJXMnICUgcGF0aCkKKyAgICAgICBsb2dnaW5nLmluZm8oJ1dvcmtpbmcgaW4gJXMnLCBwYXRoKQogICAgICAgIHJldHVybiBbXSAgICMgbm90aGluZyB3aWxsIGJlIGlnbm9yZWQKIAogICAgY29weXRyZWUoc291cmNlLCBkZXN0aW5hdGlvbiwgaWdub3JlPV9sb2dwYXRoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QgYi9Eb2MvbGlicmFyeS9zaXRlLnJzdAppbmRleCAwYTczZjVhLi40M2RhZjc5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaXRlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaXRlLnJzdApAQCAtNTIsNyArNTIsOCBAQAogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0gOmZpbGU6YHtuYW1lfS5wdGhgCiBhbmQgZXhpc3RzIGluIG9uZSBvZiB0aGUgZm91ciBkaXJlY3RvcmllcyBtZW50aW9uZWQgYWJvdmU7IGl0cyBjb250ZW50cyBhcmUKIGFkZGl0aW9uYWwgaXRlbXMgKG9uZSBwZXIgbGluZSkgdG8gYmUgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm9uLWV4aXN0aW5nIGl0ZW1zCi1hcmUgbmV2ZXIgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm8gaXRlbSBpcyBhZGRlZCB0byBgYHN5cy5wYXRoYGAgbW9yZSB0aGFuCithcmUgbmV2ZXIgYWRkZWQgdG8gYGBzeXMucGF0aGBgLCBhbmQgbm8gY2hlY2sgaXMgbWFkZSB0aGF0IHRoZSBpdGVtIHJlZmVycyB0byBhCitkaXJlY3RvcnkgcmF0aGVyIHRoYW4gYSBmaWxlLiAgTm8gaXRlbSBpcyBhZGRlZCB0byBgYHN5cy5wYXRoYGAgbW9yZSB0aGFuCiBvbmNlLiAgQmxhbmsgbGluZXMgYW5kIGxpbmVzIGJlZ2lubmluZyB3aXRoIGBgI2BgIGFyZSBza2lwcGVkLiAgTGluZXMgc3RhcnRpbmcKIHdpdGggYGBpbXBvcnRgYCAoZm9sbG93ZWQgYnkgc3BhY2Ugb3IgdGFiKSBhcmUgZXhlY3V0ZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAppbmRleCBhMDk2ZGUwLi5lMzgzMjAxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGQucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAKIAogLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQU2VydmVyYCBvYmplY3QsIHdoaWNoIGJpbmRzIHRvIGxvY2FsIGFkZHJlc3MKICAgICpsb2NhbGFkZHIqLiAgSXQgd2lsbCB0cmVhdCAqcmVtb3RlYWRkciogYXMgYW4gdXBzdHJlYW0gU01UUCByZWxheWVyLiAgQm90aApAQCAtNDYsMjAgKzQ2LDE5IEBACiAgICBnbG9iYWwgc29ja2V0IG1hcCBpcyB1c2VkLgogCiAgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKGFzIGRlZmluZWQKLSAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4gIElmIHNldCB0bwotICAgYGBUcnVlYGAsICpkZWNvZGVfZGF0YSogbXVzdCBiZSBgYEZhbHNlYGAgKG90aGVyd2lzZSBhbiBlcnJvciBpcyByYWlzZWQpLgorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgogICAgV2hlbiBgYFRydWVgYCwgYGBTTVRQVVRGOGBgIGlzIGFjY2VwdGVkIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBgYE1BSUxgYAogICAgY29tbWFuZCBhbmQgd2hlbiBwcmVzZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYCBpbiB0aGUKLSAgIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisgICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LiAgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCoKKyAgIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KIAogICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCi0gICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAotICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjY7IHNwZWNpZnkKLSAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBXaGVuCi0gICAqZGVjb2RlX2RhdGEqIGlzIHNldCB0byBgYEZhbHNlYGAgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKKyAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgV2hlbiAqZGVjb2RlX2RhdGEqIGlzIGBgRmFsc2VgYCAodGhlCisgICBkZWZhdWx0KSwgdGhlIHNlcnZlciBhZHZlcnRpc2VzIHRoZSBgYDhCSVRNSU1FYGAKICAgIGV4dGVuc2lvbiAoOnJmYzpgNjE1MmApLCBhY2NlcHRzIHRoZSBgYEJPRFk9OEJJVE1JTUVgYCBwYXJhbWV0ZXIgdG8KICAgIHRoZSBgYE1BSUxgYCBjb21tYW5kLCBhbmQgd2hlbiBwcmVzZW50IHBhc3NlcyBpdCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYAotICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuCisgICBpbiB0aGUgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4gKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCoKKyAgIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KIAogICAgLi4gbWV0aG9kOjogcHJvY2Vzc19tZXNzYWdlKHBlZXIsIG1haWxmcm9tLCByY3B0dG9zLCBkYXRhLCAqKmt3YXJncykKIApAQCAtNzYsOSArNzUsOCBAQAogICAgICAgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KIAogICAgICAgKmt3YXJncyogaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gSXQgaXMgZW1wdHkKLSAgICAgIHVubGVzcyBhdCBsZWFzdCBvbmUgb2YgYGBkZWNvZGVfZGF0YT1GYWxzZWBgIG9yIGBgZW5hYmxlX1NNVFBVVEY4PVRydWVgYAotICAgICAgd2FzIGdpdmVuIGFzIGFuIGluaXQgcGFyYW1ldGVyLCBpbiB3aGljaCBjYXNlIGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKLSAgICAgIGtleXM6CisgICAgICBpZiBgYGRlY29kZV9kYXRhPVRydWVgYCB3YXMgZ2l2ZW4gYXMgYW4gaW5pdCBhcmd1bWVudCwgb3RoZXJ3aXNlCisgICAgICBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nIGtleXM6CiAKICAgICAgICAgICAqbWFpbF9vcHRpb25zKjoKICAgICAgICAgICAgICBhIGxpc3Qgb2YgYWxsIHJlY2VpdmVkIHBhcmFtZXRlcnMgdG8gdGhlIGBgTUFJTGBgCkBAIC0xMDksOSArMTA3LDEyIEBACiAgICAgICAqbG9jYWxhZGRyKiBhbmQgKnJlbW90ZWFkZHIqIG1heSBub3cgY29udGFpbiBJUHY2IGFkZHJlc3Nlcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41Ci0gICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY29uc3RydWN0b3IgYXJndW1lbnRzLCBhbmQgdGhlCi0gICAgICAqa3dhcmdzKiBhcmd1bWVudCB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYCB3aGVuIG9uZSBvciBtb3JlIG9mIHRoZXNlIGlzCi0gICAgICBzcGVjaWZpZWQuCisgICAgICBUaGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY29uc3RydWN0b3IgcGFyYW1ldGVycywgYW5kIHRoZQorICAgICAgKmt3YXJncyogcGFyYW1ldGVyIHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gKmRlY29kZV9kYXRhKiBpcworICAgICAgYGBGYWxzZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmRlY29kZV9kYXRhKiBpcyBub3cgYGBGYWxzZWBgIGJ5IGRlZmF1bHQuCiAKIAogRGVidWdnaW5nU2VydmVyIE9iamVjdHMKQEAgLTE1MSw3ICsxNTIsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBjbGFzczo6IFNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PTMzNTU0NDMyLFwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNNVFBDaGFubmVsYCBvYmplY3Qgd2hpY2ggbWFuYWdlcyB0aGUgY29tbXVuaWNhdGlvbgogICAgYmV0d2VlbiB0aGUgc2VydmVyIGFuZCBhIHNpbmdsZSBTTVRQIGNsaWVudC4KQEAgLTE2MywyMiArMTY0LDI1IEBACiAgICBsaW1pdC4KIAogICAgKmVuYWJsZV9TTVRQVVRGOCogZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCi0gICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBBCi0gICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgYm90aCAqZW5hYmxlX1NNVFBVVEY4KiBhbmQgKmRlY29kZV9kYXRhKiBhcmUKLSAgIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgorICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgorICAgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZQorICAgdGltZS4KIAogICAgQSBkaWN0aW9uYXJ5IGNhbiBiZSBzcGVjaWZpZWQgaW4gKm1hcCogdG8gYXZvaWQgdXNpbmcgYSBnbG9iYWwgc29ja2V0IG1hcC4KIAogICAgKmRlY29kZV9kYXRhKiBzcGVjaWZpZXMgd2hldGhlciB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSBTTVRQIHRyYW5zYWN0aW9uCi0gICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgIGZvciBiYWNrd2FyZAotICAgY29tcGF0aWJpbGl0eSByZWFzb25zLCBidXQgd2lsbCBjaGFuZ2UgdG8gYGBGYWxzZWBgIGluIFB5dGhvbiAzLjYuICBTcGVjaWZ5Ci0gICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLgorICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lCisgICB0aW1lLgogCiAgICBUbyB1c2UgYSBjdXN0b20gU01UUENoYW5uZWwgaW1wbGVtZW50YXRpb24geW91IG5lZWQgdG8gb3ZlcnJpZGUgdGhlCiAgICA6YXR0cjpgU01UUFNlcnZlci5jaGFubmVsX2NsYXNzYCBvZiB5b3VyIDpjbGFzczpgU01UUFNlcnZlcmAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41Ci0gICAgICB0aGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogYXJndW1lbnRzIHdlcmUgYWRkZWQuCisgICAgICBUaGUgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogcGFyYW1ldGVycyB3ZXJlIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmRlY29kZV9kYXRhKiBpcyBub3cgYGBGYWxzZWBgIGJ5IGRlZmF1bHQuCiAKICAgIFRoZSA6Y2xhc3M6YFNNVFBDaGFubmVsYCBoYXMgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKaW5kZXggOGI5OGNjZi4uODZlNzY5ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QKQEAgLTk1LDYgKzk1LDE0IEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCisKIC4uIGNsYXNzOjogTE1UUChob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgVGhlIExNVFAgcHJvdG9jb2wsIHdoaWNoIGlzIHZlcnkgc2ltaWxhciB0byBFU01UUCwgaXMgaGVhdmlseSBiYXNlZCBvbiB0aGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CmluZGV4IDc5Yzc2MDkuLjk2NzE4NTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdApAQCAtMTMzLDYgKzEzMywyMiBAQAogICAgIHN0cmluZyBmb3JtYXQuIChleC4gYGBiJzEyOjIzOjM0OjQ1OjU2OjY3J2BgKSBUaGlzIHByb3RvY29sIGlzIG5vdAogICAgIHN1cHBvcnRlZCB1bmRlciBGcmVlQlNELgogCistIDpjb25zdDpgQUZfQUxHYCBpcyBhIExpbnV4LW9ubHkgc29ja2V0IGJhc2VkIGludGVyZmFjZSB0byBLZXJuZWwKKyAgY3J5cHRvZ3JhcGh5LiBBbiBhbGdvcml0aG0gc29ja2V0IGlzIGNvbmZpZ3VyZWQgd2l0aCBhIHR1cGxlIG9mIHR3byB0byBmb3VyCisgIGVsZW1lbnRzIGBgKHR5cGUsIG5hbWUgWywgZmVhdCBbLCBtYXNrXV0pYGAsIHdoZXJlOgorCisgIC0gKnR5cGUqIGlzIHRoZSBhbGdvcml0aG0gdHlwZSBhcyBzdHJpbmcsIGUuZy4gYGBhZWFkYGAsIGBgaGFzaGBgLAorICAgIGBgc2tjaXBoZXJgYCBvciBgYHJuZ2BgLgorCisgIC0gKm5hbWUqIGlzIHRoZSBhbGdvcml0aG0gbmFtZSBhbmQgb3BlcmF0aW9uIG1vZGUgYXMgc3RyaW5nLCBlLmcuCisgICAgYGBzaGEyNTZgYCwgYGBobWFjKHNoYTI1NilgYCwgYGBjYmMoYWVzKWBgIG9yIGBgZHJiZ19ub3ByX2N0cl9hZXMyNTZgYC4KKworICAtICpmZWF0KiBhbmQgKm1hc2sqIGFyZSB1bnNpZ25lZCAzMmJpdCBpbnRlZ2Vycy4KKworICBBdmFpbGFiaWxpdHkgTGludXggMi42LjM4LCBzb21lIGFsZ29yaXRobSB0eXBlcyByZXF1aXJlIG1vcmUgcmVjZW50IEtlcm5lbHMuCisKKyAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC0gQ2VydGFpbiBvdGhlciBhZGRyZXNzIGZhbWlsaWVzICg6Y29uc3Q6YEFGX1BBQ0tFVGAsIDpjb25zdDpgQUZfQ0FOYCkKICAgc3VwcG9ydCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuCiAKQEAgLTI4Myw2ICsyOTksMTAgQEAKICAgIGluIHRoZSBVbml4IGhlYWRlciBmaWxlcyBhcmUgZGVmaW5lZDsgZm9yIGEgZmV3IHN5bWJvbHMsIGRlZmF1bHQgdmFsdWVzIGFyZQogICAgcHJvdmlkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNPX0RPTUFJTmBgLCBgYFNPX1BST1RPQ09MYGAsIGBgU09fUEVFUlNFQ2BgLCBgYFNPX1BBU1NTRUNgYAorICAgICAgd2VyZSBhZGRlZC4KKwogLi4gZGF0YTo6IEFGX0NBTgogICAgICAgICAgIFBGX0NBTgogICAgICAgICAgIFNPTF9DQU5fKgpAQCAtMzMxLDE4ICszNTEsMzMgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGRhdGE6OiBTSU9fKgorLi4gZGF0YTo6IFNJT19SQ1ZBTEwKKyAgICAgICAgICBTSU9fS0VFUEFMSVZFX1ZBTFMKKyAgICAgICAgICBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRICiAgICAgICAgICAgUkNWQUxMXyoKIAogICAgQ29uc3RhbnRzIGZvciBXaW5kb3dzJyBXU0FJb2N0bCgpLiBUaGUgY29uc3RhbnRzIGFyZSB1c2VkIGFzIGFyZ3VtZW50cyB0byB0aGUKICAgIDptZXRoOmB+c29ja2V0LnNvY2tldC5pb2N0bGAgbWV0aG9kIG9mIHNvY2tldCBvYmplY3RzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAgd2FzIGFkZGVkLgorCiAKIC4uIGRhdGE6OiBUSVBDXyoKIAogICAgVElQQyByZWxhdGVkIGNvbnN0YW50cywgbWF0Y2hpbmcgdGhlIG9uZXMgZXhwb3J0ZWQgYnkgdGhlIEMgc29ja2V0IEFQSS4gU2VlCiAgICB0aGUgVElQQyBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCisuLiBkYXRhOjogQUZfQUxHCisgICAgICAgICAgU09MX0FMRworICAgICAgICAgIEFMR18qCisKKyAgIENvbnN0YW50cyBmb3IgTGludXggS2VybmVsIGNyeXB0b2dyYXBoeS4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCA+PSAyLjYuMzguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogQUZfTElOSwogCiAgIEF2YWlsYWJpbGl0eTogQlNELCBPU1guCkBAIC04NzQsNiArOTA5LDEwIEBACiAgICBpdCBpcyByZWNvbW1lbmRlZCB0byA6bWV0aDpgY2xvc2VgIHRoZW0gZXhwbGljaXRseSwgb3IgdG8gdXNlIGEKICAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYXJvdW5kIHRoZW0uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyBub3cgcmFpc2VkIGlmIGFuIGVycm9yIG9jY3VycyB3aGVuIHRoZSB1bmRlcmx5aW5nCisgICAgICA6YzpmdW5jOmBjbG9zZWAgY2FsbCBpcyBtYWRlLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgOm1ldGg6YGNsb3NlKClgIHJlbGVhc2VzIHRoZSByZXNvdXJjZSBhc3NvY2lhdGVkIHdpdGggYSBjb25uZWN0aW9uIGJ1dApAQCAtOTk0LDYgKzEwMzMsMTIgQEAKICAgIE9uIG90aGVyIHBsYXRmb3JtcywgdGhlIGdlbmVyaWMgOmZ1bmM6YGZjbnRsLmZjbnRsYCBhbmQgOmZ1bmM6YGZjbnRsLmlvY3RsYAogICAgZnVuY3Rpb25zIG1heSBiZSB1c2VkOyB0aGV5IGFjY2VwdCBhIHNvY2tldCBvYmplY3QgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuCiAKKyAgIEN1cnJlbnRseSBvbmx5IHRoZSBmb2xsb3dpbmcgY29udHJvbCBjb2RlcyBhcmUgc3VwcG9ydGVkOgorICAgYGBTSU9fUkNWQUxMYGAsIGBgU0lPX0tFRVBBTElWRV9WQUxTYGAsIGFuZCBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgIHdhcyBhZGRlZC4KKwogLi4gbWV0aG9kOjogc29ja2V0Lmxpc3RlbihbYmFja2xvZ10pCiAKICAgIEVuYWJsZSBhIHNlcnZlciB0byBhY2NlcHQgY29ubmVjdGlvbnMuICBJZiAqYmFja2xvZyogaXMgc3BlY2lmaWVkLCBpdCBtdXN0CkBAIC0xMjc3LDYgKzEzMjIsMTUgQEAKICAgICAgIGFuIGV4Y2VwdGlvbiwgdGhlIG1ldGhvZCBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nCiAgICAgICBhbiA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KIAorLi4gbWV0aG9kOjogc29ja2V0LnNlbmRtc2dfYWZhbGcoW21zZ10sICosIG9wWywgaXZbLCBhc3NvY2xlblssIGZsYWdzXV1dKQorCisgICBTcGVjaWFsaXplZCB2ZXJzaW9uIG9mIDptZXRoOmB+c29ja2V0LnNlbmRtc2dgIGZvciA6Y29uc3Q6YEFGX0FMR2Agc29ja2V0LgorICAgU2V0IG1vZGUsIElWLCBBRUFEIGFzc29jaWF0ZWQgZGF0YSBsZW5ndGggYW5kIGZsYWdzIGZvciA6Y29uc3Q6YEFGX0FMR2Agc29ja2V0LgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4zOAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbWV0aG9kOjogc29ja2V0LnNlbmRmaWxlKGZpbGUsIG9mZnNldD0wLCBjb3VudD1Ob25lKQogCiAgICBTZW5kIGEgZmlsZSB1bnRpbCBFT0YgaXMgcmVhY2hlZCBieSB1c2luZyBoaWdoLXBlcmZvcm1hbmNlCkBAIC0xMzI1LDIxICsxMzc5LDI5IEBACiAgICBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnN1bHQgdGhlIDpyZWY6YG5vdGVzIG9uIHNvY2tldCB0aW1lb3V0cyA8c29ja2V0LXRpbWVvdXRzPmAuCiAKIAotLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlKQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlOiBpbnQpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWU6IGJ1ZmZlcikKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCBOb25lLCBvcHRsZW46IGludCkKIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IHN0cnVjdAogCiAgICBTZXQgdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBzb2NrZXQgb3B0aW9uIChzZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UKICAgIDptYW5wYWdlOmBzZXRzb2Nrb3B0KDIpYCkuICBUaGUgbmVlZGVkIHN5bWJvbGljIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiB0aGUKLSAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciBvcgotICAgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIHJlcHJlc2VudGluZyBhIGJ1ZmZlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSBpdCBpcwotICAgdXAgdG8gdGhlIGNhbGxlciB0bwotICAgZW5zdXJlIHRoYXQgdGhlIGJ5dGVzdHJpbmcgY29udGFpbnMgdGhlIHByb3BlciBiaXRzIChzZWUgdGhlIG9wdGlvbmFsIGJ1aWx0LWluCi0gICBtb2R1bGUgOm1vZDpgc3RydWN0YCBmb3IgYSB3YXkgdG8gZW5jb2RlIEMgc3RydWN0dXJlcyBhcyBieXRlc3RyaW5ncykuCisgICA6bW9kOmBzb2NrZXRgIG1vZHVsZSAoOmNvbnN0OmBTT19cKmAgZXRjLikuICBUaGUgdmFsdWUgY2FuIGJlIGFuIGludGVnZXIsCisgICBgYE5vbmVgYCBvciBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiBJbiB0aGUgbGF0ZXIKKyAgIGNhc2UgaXQgaXMgdXAgdG8gdGhlIGNhbGxlciB0byBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUKKyAgIHByb3BlciBiaXRzIChzZWUgdGhlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0bworICAgZW5jb2RlIEMgc3RydWN0dXJlcyBhcyBieXRlc3RyaW5ncykuIFdoZW4gdmFsdWUgaXMgc2V0IHRvIGBgTm9uZWBgLAorICAgb3B0bGVuIGFyZ3VtZW50IGlzIHJlcXVpcmVkLiBJdCdzIGVxdWl2YWxlbnQgdG8gY2FsbCBzZXRzb2Nrb3B0IEMKKyAgIGZ1bmN0aW9uIHdpdGggb3B0dmFsPU5VTEwgYW5kIG9wdGxlbj1vcHRsZW4uCisKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgTm9uZSwgb3B0bGVuOiBpbnQpIGZvcm0gYWRkZWQuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNodXRkb3duKGhvdykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggMDg3ZjRlMC4uMjE4YTMxYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC01MiwxMSArNTIsMTIgQEAKIG92ZXJyaWRpbmcgaXRzIDptZXRoOmB+QmFzZVJlcXVlc3RIYW5kbGVyLmhhbmRsZWAgbWV0aG9kOwogdGhpcyBtZXRob2Qgd2lsbCBwcm9jZXNzIGluY29taW5nCiByZXF1ZXN0cy4gIFNlY29uZCwgeW91IG11c3QgaW5zdGFudGlhdGUgb25lIG9mIHRoZSBzZXJ2ZXIgY2xhc3NlcywgcGFzc2luZyBpdAotdGhlIHNlcnZlcidzIGFkZHJlc3MgYW5kIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MuICBUaGVuIGNhbGwgdGhlCit0aGUgc2VydmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlCit0aGUgc2VydmVyIGluIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlbiBjYWxsIHRoZQogOm1ldGg6YH5CYXNlU2VydmVyLmhhbmRsZV9yZXF1ZXN0YCBvcgogOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXJgIG1ldGhvZCBvZiB0aGUgc2VydmVyIG9iamVjdCB0bwogcHJvY2VzcyBvbmUgb3IgbWFueSByZXF1ZXN0cy4gIEZpbmFsbHksIGNhbGwgOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlcl9jbG9zZWAKLXRvIGNsb3NlIHRoZSBzb2NrZXQuCit0byBjbG9zZSB0aGUgc29ja2V0ICh1bmxlc3MgeW91IHVzZWQgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4KIAogV2hlbiBpbmhlcml0aW5nIGZyb20gOmNsYXNzOmBUaHJlYWRpbmdNaXhJbmAgZm9yIHRocmVhZGVkIGNvbm5lY3Rpb24gYmVoYXZpb3IsCiB5b3Ugc2hvdWxkIGV4cGxpY2l0bHkgZGVjbGFyZSBob3cgeW91IHdhbnQgeW91ciB0aHJlYWRzIHRvIGJlaGF2ZSBvbiBhbiBhYnJ1cHQKQEAgLTExMSw2ICsxMTIsOCBAQAogICAgOmNsYXNzOmBVRFBTZXJ2ZXJgLiAgU2V0dGluZyB0aGUgdmFyaW91cyBhdHRyaWJ1dGVzIGFsc28gY2hhbmdlcyB0aGUKICAgIGJlaGF2aW9yIG9mIHRoZSB1bmRlcmx5aW5nIHNlcnZlciBtZWNoYW5pc20uCiAKKyAgIDpjbGFzczpgRm9ya2luZ01peEluYCBhbmQgdGhlIEZvcmtpbmcgY2xhc3NlcyBtZW50aW9uZWQgYmVsb3cgYXJlCisgICBvbmx5IGF2YWlsYWJsZSBvbiBQT1NJWCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpmdW5jOmB+b3MuZm9ya2AuCiAKIC4uIGNsYXNzOjogRm9ya2luZ1RDUFNlcnZlcgogICAgICAgICAgICBGb3JraW5nVURQU2VydmVyCkBAIC0zMDQsNyArMzA3LDExIEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpZiB0aGUgOm1ldGg6YH5CYXNlUmVxdWVzdEhhbmRsZXIuaGFuZGxlYAogICAgICAgbWV0aG9kIG9mIGEgOmF0dHI6YFJlcXVlc3RIYW5kbGVyQ2xhc3NgIGluc3RhbmNlIHJhaXNlcwogICAgICAgYW4gZXhjZXB0aW9uLiAgVGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIHByaW50IHRoZSB0cmFjZWJhY2sgdG8KLSAgICAgIHN0YW5kYXJkIG91dHB1dCBhbmQgY29udGludWUgaGFuZGxpbmcgZnVydGhlciByZXF1ZXN0cy4KKyAgICAgIHN0YW5kYXJkIGVycm9yIGFuZCBjb250aW51ZSBoYW5kbGluZyBmdXJ0aGVyIHJlcXVlc3RzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTm93IG9ubHkgY2FsbGVkIGZvciBleGNlcHRpb25zIGRlcml2ZWQgZnJvbSB0aGUgOmV4YzpgRXhjZXB0aW9uYAorICAgICAgICAgY2xhc3MuCiAKIAogICAgLi4gbWV0aG9kOjogaGFuZGxlX3RpbWVvdXQoKQpAQCAtMzQ5LDYgKzM1NiwxMSBAQAogICAgICAgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyA6Y29uc3Q6YFRydWVgLgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGZvciB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wgd2FzIGFkZGVkLiAgRXhpdGluZyB0aGUKKyAgICAgIGNvbnRleHQgbWFuYWdlciBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgOm1ldGg6YHNlcnZlcl9jbG9zZWAuCisKKwogUmVxdWVzdCBIYW5kbGVyIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTM5Nyw2ICs0MDksMTUgQEAKICAgIHJlYWQgb3Igd3JpdHRlbiwgcmVzcGVjdGl2ZWx5LCB0byBnZXQgdGhlIHJlcXVlc3QgZGF0YSBvciByZXR1cm4gZGF0YQogICAgdG8gdGhlIGNsaWVudC4KIAorICAgVGhlIDphdHRyOmByZmlsZWAgYXR0cmlidXRlcyBvZiBib3RoIGNsYXNzZXMgc3VwcG9ydCB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHJlYWRhYmxlIGludGVyZmFjZSwgYW5kCisgICA6YXR0cjpgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgc3VwcG9ydHMgdGhlCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGFsc28gc3VwcG9ydHMgdGhlCisgICAgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKIAogRXhhbXBsZXMKIC0tLS0tLS0tCkBAIC00MjksMTEgKzQ1MCwxMCBAQAogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQogCiAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciwgYmluZGluZyB0byBsb2NhbGhvc3Qgb24gcG9ydCA5OTk5Ci0gICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VENQSGFuZGxlcikKLQotICAgICAgICMgQWN0aXZhdGUgdGhlIHNlcnZlcjsgdGhpcyB3aWxsIGtlZXAgcnVubmluZyB1bnRpbCB5b3UKLSAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQwotICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVRDUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIyBBY3RpdmF0ZSB0aGUgc2VydmVyOyB0aGlzIHdpbGwga2VlcCBydW5uaW5nIHVudGlsIHlvdQorICAgICAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQworICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIEFuIGFsdGVybmF0aXZlIHJlcXVlc3QgaGFuZGxlciBjbGFzcyB0aGF0IG1ha2VzIHVzZSBvZiBzdHJlYW1zIChmaWxlLWxpa2UKIG9iamVjdHMgdGhhdCBzaW1wbGlmeSBjb21tdW5pY2F0aW9uIGJ5IHByb3ZpZGluZyB0aGUgc3RhbmRhcmQgZmlsZSBpbnRlcmZhY2UpOjoKQEAgLTUyNSw4ICs1NDUsOCBAQAogCiAgICBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQotICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5VRFBTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVVEUEhhbmRsZXIpCi0gICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgIHdpdGggc29ja2V0c2VydmVyLlVEUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VURQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIFRoaXMgaXMgdGhlIGNsaWVudCBzaWRlOjoKIApAQCAtNTg1LDIyICs2MDUsMjIgQEAKICAgICAgICBIT1NULCBQT1JUID0gImxvY2FsaG9zdCIsIDAKIAogICAgICAgIHNlcnZlciA9IFRocmVhZGVkVENQU2VydmVyKChIT1NULCBQT1JUKSwgVGhyZWFkZWRUQ1BSZXF1ZXN0SGFuZGxlcikKLSAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcworICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcwogCi0gICAgICAgIyBTdGFydCBhIHRocmVhZCB3aXRoIHRoZSBzZXJ2ZXIgLS0gdGhhdCB0aHJlYWQgd2lsbCB0aGVuIHN0YXJ0IG9uZQotICAgICAgICMgbW9yZSB0aHJlYWQgZm9yIGVhY2ggcmVxdWVzdAotICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKLSAgICAgICAjIEV4aXQgdGhlIHNlcnZlciB0aHJlYWQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdGVybWluYXRlcwotICAgICAgIHNlcnZlcl90aHJlYWQuZGFlbW9uID0gVHJ1ZQotICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQotICAgICAgIHByaW50KCJTZXJ2ZXIgbG9vcCBydW5uaW5nIGluIHRocmVhZDoiLCBzZXJ2ZXJfdGhyZWFkLm5hbWUpCisgICAgICAgICAgICMgU3RhcnQgYSB0aHJlYWQgd2l0aCB0aGUgc2VydmVyIC0tIHRoYXQgdGhyZWFkIHdpbGwgdGhlbiBzdGFydCBvbmUKKyAgICAgICAgICAgIyBtb3JlIHRocmVhZCBmb3IgZWFjaCByZXF1ZXN0CisgICAgICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKKyAgICAgICAgICAgIyBFeGl0IHRoZSBzZXJ2ZXIgdGhyZWFkIHdoZW4gdGhlIG1haW4gdGhyZWFkIHRlcm1pbmF0ZXMKKyAgICAgICAgICAgc2VydmVyX3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICBwcmludCgiU2VydmVyIGxvb3AgcnVubmluZyBpbiB0aHJlYWQ6Iiwgc2VydmVyX3RocmVhZC5uYW1lKQogCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMSIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMiIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDEiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAyIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCiAKLSAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQotICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQogCiAKIFRoZSBvdXRwdXQgb2YgdGhlIGV4YW1wbGUgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKQEAgLTYxNiwzICs2MzYsNSBAQAogCiBUaGUgOmNsYXNzOmBGb3JraW5nTWl4SW5gIGNsYXNzIGlzIHVzZWQgaW4gdGhlIHNhbWUgd2F5LCBleGNlcHQgdGhhdCB0aGUgc2VydmVyCiB3aWxsIHNwYXduIGEgbmV3IHByb2Nlc3MgZm9yIGVhY2ggcmVxdWVzdC4KK0F2YWlsYWJsZSBvbmx5IG9uIFBPU0lYIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmZ1bmM6YH5vcy5mb3JrYC4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3B3ZC5yc3QgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdAppbmRleCBmZDNjOWFkLi5jNmNhZDJhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcHdkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdApAQCAtNTUsNiArNTUsOSBAQAogCiAgICBSZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJhaXNlcyBhIDpleGM6YFBlcm1pc3Npb25FcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlIHVzZXIKKyAgICAgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgogCiAuLiBmdW5jdGlvbjo6IGdldHNwYWxsKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCA4NGE0NzgzLi41NjM1NTc3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdApAQCAtNjI5LDkgKzYyOSwxNiBAQAogICAgLi4gYXR0cmlidXRlOjogbGFzdHJvd2lkCiAKICAgICAgIFRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSBwcm92aWRlcyB0aGUgcm93aWQgb2YgdGhlIGxhc3QgbW9kaWZpZWQgcm93LiBJdCBpcwotICAgICAgb25seSBzZXQgaWYgeW91IGlzc3VlZCBhbiBgYElOU0VSVGBgIHN0YXRlbWVudCB1c2luZyB0aGUgOm1ldGg6YGV4ZWN1dGVgCi0gICAgICBtZXRob2QuIEZvciBvcGVyYXRpb25zIG90aGVyIHRoYW4gYGBJTlNFUlRgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMKLSAgICAgIGNhbGxlZCwgOmF0dHI6YGxhc3Ryb3dpZGAgaXMgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisgICAgICBvbmx5IHNldCBpZiB5b3UgaXNzdWVkIGFuIGBgSU5TRVJUYGAgb3IgYSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQgdXNpbmcgdGhlCisgICAgICA6bWV0aDpgZXhlY3V0ZWAgbWV0aG9kLiAgRm9yIG9wZXJhdGlvbnMgb3RoZXIgdGhhbiBgYElOU0VSVGBgIG9yCisgICAgICBgYFJFUExBQ0VgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMgY2FsbGVkLCA6YXR0cjpgbGFzdHJvd2lkYCBpcworICAgICAgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisKKyAgICAgIElmIHRoZSBgYElOU0VSVGBgIG9yIGBgUkVQTEFDRWBgIHN0YXRlbWVudCBmYWlsZWQgdG8gaW5zZXJ0IHRoZSBwcmV2aW91cworICAgICAgc3VjY2Vzc2Z1bCByb3dpZCBpcyByZXR1cm5lZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGRlc2NyaXB0aW9uCiAKQEAgLTkxOCw5ICs5MjUsNyBAQAogCiBCeSBkZWZhdWx0LCB0aGUgOm1vZDpgc3FsaXRlM2AgbW9kdWxlIG9wZW5zIHRyYW5zYWN0aW9ucyBpbXBsaWNpdGx5IGJlZm9yZSBhCiBEYXRhIE1vZGlmaWNhdGlvbiBMYW5ndWFnZSAoRE1MKSAgc3RhdGVtZW50IChpLmUuCi1gYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCksIGFuZCBjb21taXRzIHRyYW5zYWN0aW9ucwotaW1wbGljaXRseSBiZWZvcmUgYSBub24tRE1MLCBub24tcXVlcnkgc3RhdGVtZW50IChpLiBlLgotYW55dGhpbmcgb3RoZXIgdGhhbiBgYFNFTEVDVGBgIG9yIHRoZSBhZm9yZW1lbnRpb25lZCkuCitgYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCkuCiAKIFNvIGlmIHlvdSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24gYW5kIGlzc3VlIGEgY29tbWFuZCBsaWtlIGBgQ1JFQVRFIFRBQkxFCiAuLi5gYCwgYGBWQUNVVU1gYCwgYGBQUkFHTUFgYCwgdGhlIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZSB3aWxsIGNvbW1pdCBpbXBsaWNpdGx5CkBAIC05NDAsNiArOTQ1LDkgQEAKIHN0YXRlbWVudCwgb3Igc2V0IGl0IHRvIG9uZSBvZiBTUUxpdGUncyBzdXBwb3J0ZWQgaXNvbGF0aW9uIGxldmVsczogIkRFRkVSUkVEIiwKICJJTU1FRElBVEUiIG9yICJFWENMVVNJVkUiLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgOm1vZDpgc3FsaXRlM2AgdXNlZCB0byBpbXBsaWNpdGx5IGNvbW1pdCBhbiBvcGVuIHRyYW5zYWN0aW9uIGJlZm9yZSBEREwKKyAgIHN0YXRlbWVudHMuICBUaGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4KIAogCiBVc2luZyA6bW9kOmBzcWxpdGUzYCBlZmZpY2llbnRseQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggYTJmMDA4My4uZWVlNDg0OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC00OSw2ICs0OSwxMiBAQAogaGVscHMgbWFuYWdlIHNldHRpbmdzIGFuZCBjZXJ0aWZpY2F0ZXMsIHdoaWNoIGNhbiB0aGVuIGJlIGluaGVyaXRlZAogYnkgU1NMIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBPcGVuU1NMIDAuOS44LCAxLjAuMCBhbmQgMS4wLjEgYXJlIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICBJbiB0aGUgZnV0dXJlIHRoZSBzc2wgbW9kdWxlIHdpbGwgcmVxdWlyZSBhdCBsZWFzdCBPcGVuU1NMIDEuMC4yIG9yCisgICAxLjEuMC4KKwogCiBGdW5jdGlvbnMsIENvbnN0YW50cywgYW5kIEV4Y2VwdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTg2LDE2ICsxOTIsMjAgQEAKIAogICAgICAuLiB0YWJsZTo6CiAKLSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQotICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAqKlNTTHYzKiogICoqVExTKiogICAgICoqVExTdjEqKiAgKipUTFN2MS4xKiogICoqVExTdjEuMioqCi0gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0KLSAgICAgICAgKlNTTHYyKiAgICAgICAgICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqU1NMdjMqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpUTFMqICgqU1NMdjIzKikgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgeWVzCi0gICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubwotICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcwotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICAgKmNsaWVudCogLyAqKnNlcnZlcioqICAgICoqU1NMdjIqKiAgICAgKipTU0x2MyoqICAgICAqKlRMUyoqICAgICAgICAqKlRMU3YxKiogICoqVExTdjEuMSoqICAqKlRMU3YxLjIqKgorICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tCisgICAgICAgICpTU0x2MiogICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgICAgbm8gICAgICAgICAgICBubyBbMV1fICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgIG5vIFsyXV8gICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqVExTKiAoKlNTTHYyMyopICAgICAgICAgICBubyBbMV1fICAgICAgIG5vIFsyXV8gICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgIHllcworICAgICAgICAqVExTdjEqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFN2MS4xKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjIqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMKKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorCisgICAuLiBydWJyaWM6OiBGb290bm90ZXMKKyAgIC4uIFsxXSA6Y2xhc3M6YFNTTENvbnRleHRgIGRpc2FibGVzIFNTTHYyIHdpdGggOmRhdGE6YE9QX05PX1NTTHYyYCBieSBkZWZhdWx0LgorICAgLi4gWzJdIDpjbGFzczpgU1NMQ29udGV4dGAgZGlzYWJsZXMgU1NMdjMgd2l0aCA6ZGF0YTpgT1BfTk9fU1NMdjNgIGJ5IGRlZmF1bHQuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yMjQsNyArMjM0LDYgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBOZXcgb3B0aW9uYWwgYXJndW1lbnQgKmNpcGhlcnMqLgogCi0KIENvbnRleHQgY3JlYXRpb24KIF5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMjc5LDcgKzI4OCw3IEBACiAKICAgICAgUkM0IHdhcyBkcm9wcGVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAogICAgICBDaGFDaGEyMC9Qb2x5MTMwNSB3YXMgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIApAQCAtMzIyLDcgKzMzMSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCA6ZnVuYzpgc3NsLlJBTkRfcHNldWRvX2J5dGVzYCwgdXNlCiAgICAgICA6ZnVuYzpgc3NsLlJBTkRfYnl0ZXNgIGluc3RlYWQuCkBAIC01MDksNiArNTE4LDEwIEBACiBDb25zdGFudHMKIF5eXl5eXl5eXgogCisgICBBbGwgY29uc3RhbnRzIGFyZSBub3cgOmNsYXNzOmBlbnVtLkludEVudW1gIG9yIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBDRVJUX05PTkUKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCwgb3IgdGhlIGBgY2VydF9yZXFzYGAKQEAgLTU0Miw2ICs1NTUsMTIgQEAKICAgIGJlIHBhc3NlZCwgZWl0aGVyIHRvIDptZXRoOmBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9uc2Agb3IgYXMgYQogICAgdmFsdWUgb2YgdGhlIGBgY2FfY2VydHNgYCBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHdyYXBfc29ja2V0YC4KIAorLi4gY2xhc3M6OiBWZXJpZnlNb2RlCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIENFUlRfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogVkVSSUZZX0RFRkFVTFQKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AuIEluIHRoaXMgbW9kZSwgY2VydGlmaWNhdGUKQEAgLTU4MiwxOCArNjAxLDQwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNC40CiAKKy4uIGNsYXNzOjogVmVyaWZ5RmxhZ3MKKworICAgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb24gb2YgVkVSSUZZXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFBST1RPQ09MX1RMUwogCiAgICBTZWxlY3RzIHRoZSBoaWdoZXN0IHByb3RvY29sIHZlcnNpb24gdGhhdCBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzdXBwb3J0LgogICAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBvcHRpb24gY2FuIHNlbGVjdCAiVExTIiBwcm90b2NvbHMgYXMgd2VsbCBhcyAiU1NMIi4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy41LjMKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX0NMSUVOVAorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBjbGllbnQtc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuIFRoZSBwcm90b2NvbAorICAgZW5hYmxlcyA6ZGF0YTpgQ0VSVF9SRVFVSVJFRGAgYW5kIDphdHRyOmB+U1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYnkKKyAgIGRlZmF1bHQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX1NFUlZFUgorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBzZXJ2ZXItc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBkYXRhOjogUFJPVE9DT0xfU1NMdjIzCiAKICAgIEFsaWFzIGZvciBkYXRhOmBQUk9UT0NPTF9UTFNgLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgVXNlIGRhdGE6YFBST1RPQ09MX1RMU2AgaW5zdGVhZC4KIApAQCAtNjA4LDcgKzY0OSw3IEBACiAKICAgICAgIFNTTCB2ZXJzaW9uIDIgaXMgaW5zZWN1cmUuICBJdHMgdXNlIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIHJlbW92ZWQgc3VwcG9ydCBmb3IgU1NMdjIuCiAKQEAgLTYyMyw3ICs2NjQsNyBAQAogCiAgICAgICBTU0wgdmVyc2lvbiAzIGlzIGluc2VjdXJlLiAgSXRzIHVzZSBpcyBoaWdobHkgZGlzY291cmFnZWQuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTYzMiw3ICs2NzMsNyBAQAogCiAgICBTZWxlY3RzIFRMUyB2ZXJzaW9uIDEuMCBhcyB0aGUgY2hhbm5lbCBlbmNyeXB0aW9uIHByb3RvY29sLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NDQsNyArNjg1LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY1Nyw3ICs2OTgsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjc4LDcgKzcxOSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgU1NMdjIgaXMgZGVwcmVjYXRlZAogCkBAIC02OTEsNyArNzMyLDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBTU0x2MyBpcyBkZXByZWNhdGVkCiAKQEAgLTc1MSw2ICs3OTIsMTYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIGNsYXNzOjogT3B0aW9ucworCisgICA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbiBvZiBPUF8qIGNvbnN0YW50cy4KKworLi4gZGF0YTo6IE9QX05PX1RJQ0tFVAorCisgICBQcmV2ZW50IGNsaWVudCBzaWRlIGZyb20gcmVxdWVzdGluZyBhIHNlc3Npb24gdGlja2V0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IEhBU19BTFBOCiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpBcHBsaWNhdGlvbi1MYXllcgpAQCAtODMzLDYgKzg4NCwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gY2xhc3M6OiBBbGVydERlc2NyaXB0aW9uCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIEFMRVJUX0RFU0NSSVBUSU9OXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFB1cnBvc2UuU0VSVkVSX0FVVEgKIAogICAgT3B0aW9uIGZvciA6ZnVuYzpgY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgYW5kCkBAIC04NTEsNiArOTA4LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBjbGFzczo6IFNTTEVycm9yTnVtYmVyCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIFNTTF9FUlJPUl8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIFNvY2tldHMKIC0tLS0tLS0tLS0tCkBAIC04ODUsNyArOTQ4LDcgQEAKICAgIDpyZWY6YG5vdGVzIG9uIG5vbi1ibG9ja2luZyBzb2NrZXRzIDxzc2wtbm9uYmxvY2tpbmc+YC4KIAogICAgVXN1YWxseSwgOmNsYXNzOmBTU0xTb2NrZXRgIGFyZSBub3QgY3JlYXRlZCBkaXJlY3RseSwgYnV0IHVzaW5nIHRoZQotICAgOmZ1bmM6YHdyYXBfc29ja2V0YCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KKyAgIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgVGhlIDptZXRoOmBzZW5kZmlsZWAgbWV0aG9kIHdhcyBhZGRlZC4KQEAgLTg5NSw2ICs5NTgsMTAgQEAKICAgICAgIGFyZSByZWNlaXZlZCBvciBzZW50LiBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24KICAgICAgIG9mIHRoZSBzaHV0ZG93bi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgSXQgaXMgZGVwcmVjYXRlZCB0byBjcmVhdGUgYSA6Y2xhc3M6YFNTTFNvY2tldGAgaW5zdGFuY2UgZGlyZWN0bHksIHVzZQorICAgICAgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIHRvIHdyYXAgYSBzb2NrZXQuCisKIAogU1NMIHNvY2tldHMgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCkBAIC05MTUsNiArOTgyLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byByZWFkIHVwIHRvICpsZW4qCiAgICAgICBieXRlcy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnJlY3ZgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAuCisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC53cml0ZShidWYpCiAKICAgIFdyaXRlICpidWYqIHRvIHRoZSBTU0wgc29ja2V0IGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiBUaGUKQEAgLTkzMCw2ICsxMDAwLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byB3cml0ZSAqYnVmKi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnNlbmRgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgLgorCiAuLiBub3RlOjoKIAogICAgVGhlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIGFuZCA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAgbWV0aG9kcyBhcmUgdGhlCkBAIC0xMTI3LDYgKzEyMDAsMTkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5zZXNzaW9uCisKKyAgIFRoZSA6Y2xhc3M6YFNTTFNlc3Npb25gIGZvciB0aGlzIFNTTCBjb25uZWN0aW9uLiBUaGUgc2Vzc2lvbiBpcyBhdmFpbGFibGUKKyAgIGZvciBjbGllbnQgYW5kIHNlcnZlciBzaWRlIHNvY2tldHMgYWZ0ZXIgdGhlIFRMUyBoYW5kc2hha2UgaGFzIGJlZW4KKyAgIHBlcmZvcm1lZC4gRm9yIGNsaWVudCBzb2NrZXRzIHRoZSBzZXNzaW9uIGNhbiBiZSBzZXQgYmVmb3JlCisgICA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgIGhhcyBiZWVuIGNhbGxlZCB0byByZXVzZSBhIHNlc3Npb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIENvbnRleHRzCiAtLS0tLS0tLS0tLS0KQEAgLTExNDksOSArMTIzNSwxNiBAQAogICAgICAgOmZ1bmM6YGNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIGxldHMgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGNob29zZQogICAgICAgc2VjdXJpdHkgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gcHVycG9zZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAotICAgICAgOmRhdGE6YFBST1RPQ09MX1RMU2AgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisgICAgICBUaGUgY29udGV4dCBpcyBjcmVhdGVkIHdpdGggc2VjdXJlIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucworICAgICAgOmRhdGE6YE9QX05PX0NPTVBSRVNTSU9OYCwgOmRhdGE6YE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRWAsCisgICAgICA6ZGF0YTpgT1BfU0lOR0xFX0RIX1VTRWAsIDpkYXRhOmBPUF9TSU5HTEVfRUNESF9VU0VgLAorICAgICAgOmRhdGE6YE9QX05PX1NTTHYyYCAoZXhjZXB0IGZvciA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKSwKKyAgICAgIGFuZCA6ZGF0YTpgT1BfTk9fU1NMdjNgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2M2ApIGFyZQorICAgICAgc2V0IGJ5IGRlZmF1bHQuIFRoZSBpbml0aWFsIGNpcGhlciBzdWl0ZSBsaXN0IGNvbnRhaW5zIG9ubHkgYGBISUdIYGAKKyAgICAgIGNpcGhlcnMsIG5vIGBgTlVMTGBgIGNpcGhlcnMgYW5kIG5vIGBgTUQ1YGAgY2lwaGVycyAoZXhjZXB0IGZvcgorICAgICAgOmRhdGE6YFBST1RPQ09MX1NTTHYyYCkuCiAKIAogOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgpAQCAtMTI1OSw2ICsxMzUyLDYyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmdldF9jaXBoZXJzKCkKKworICAgR2V0IGEgbGlzdCBvZiBlbmFibGVkIGNpcGhlcnMuIFRoZSBsaXN0IGlzIGluIG9yZGVyIG9mIGNpcGhlciBwcmlvcml0eS4KKyAgIFNlZSA6bWV0aDpgU1NMQ29udGV4dC5zZXRfY2lwaGVyc2AuCisKKyAgIEV4YW1wbGU6OgorCisgICAgICAgPj4+IGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgPj4+IGN0eC5zZXRfY2lwaGVycygnRUNESEUrQUVTR0NNOiFFQ0RTQScpCisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4wLngKKyAgICAgICBbeydhbGdfYml0cyc6IDI1NiwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDI1NikgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDgsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMjU2fSwKKyAgICAgICAgeydhbGdfYml0cyc6IDEyOCwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDEyOCkgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMTI4fV0KKworICAgT24gT3BlblNTTCAxLjEgYW5kIG5ld2VyIHRoZSBjaXBoZXIgZGljdCBjb250YWlucyBhZGRpdGlvbmFsIGZpZWxkczo6CisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4xKworICAgICAgIFt7J2FlYWQnOiBUcnVlLAorICAgICAgICAgJ2FsZ19iaXRzJzogMjU2LAorICAgICAgICAgJ2F1dGgnOiAnYXV0aC1yc2EnLAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRCcsCisgICAgICAgICAnZGlnZXN0JzogTm9uZSwKKyAgICAgICAgICdpZCc6IDUwMzgwODQ4LAorICAgICAgICAgJ2tlYSc6ICdreC1lY2RoZScsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxLjInLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAyNTYsCisgICAgICAgICAnc3ltbWV0cmljJzogJ2Flcy0yNTYtZ2NtJ30sCisgICAgICAgIHsnYWVhZCc6IFRydWUsCisgICAgICAgICAnYWxnX2JpdHMnOiAxMjgsCisgICAgICAgICAnYXV0aCc6ICdhdXRoLXJzYScsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgxMjgpIE1hYz1BRUFEJywKKyAgICAgICAgICdkaWdlc3QnOiBOb25lLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAna2VhJzogJ2t4LWVjZGhlJywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NicsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEuMicsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDEyOCwKKyAgICAgICAgICdzeW1tZXRyaWMnOiAnYWVzLTEyOC1nY20nfV0KKworICAgQXZhaWxhYmlsaXR5OiBPcGVuU1NMIDEuMC4yKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCiAgICBMb2FkIGEgc2V0IG9mIGRlZmF1bHQgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyBmcm9tCkBAIC0xMzk3LDcgKzE1NDYsNyBAQAogCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLCBcCiAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBcCi0gICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKKyAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIFdyYXAgYW4gZXhpc3RpbmcgUHl0aG9uIHNvY2tldCAqc29jayogYW5kIHJldHVybiBhbiA6Y2xhc3M6YFNTTFNvY2tldGAKICAgIG9iamVjdC4gICpzb2NrKiBtdXN0IGJlIGEgOmRhdGE6YH5zb2NrZXQuU09DS19TVFJFQU1gIHNvY2tldDsgb3RoZXIgc29ja2V0CkBAIC0xNDE0LDE5ICsxNTYzLDI3IEBACiAgICBxdWl0ZSBzaW1pbGFybHkgdG8gSFRUUCB2aXJ0dWFsIGhvc3RzLiBTcGVjaWZ5aW5nICpzZXJ2ZXJfaG9zdG5hbWUqIHdpbGwKICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKnNlcnZlcl9zaWRlKiBpcyB0cnVlLgogCisgICAqc2Vzc2lvbiosIHNlZSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFsd2F5cyBhbGxvdyBhIHNlcnZlcl9ob3N0bmFtZSB0byBiZSBwYXNzZWQsIGV2ZW4gaWYgT3BlblNTTCBkb2VzIG5vdAogICAgICAgaGF2ZSBTTkkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqc2Vzc2lvbiogYXJndW1lbnQgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYnkgd3JhcHBpbmcgdGhlIEJJTyBvYmplY3RzCiAgICAqaW5jb21pbmcqIGFuZCAqb3V0Z29pbmcqLiBUaGUgU1NMIHJvdXRpbmVzIHdpbGwgcmVhZCBpbnB1dCBkYXRhIGZyb20gdGhlCiAgICBpbmNvbWluZyBCSU8gYW5kIHdyaXRlIGRhdGEgdG8gdGhlIG91dGdvaW5nIEJJTy4KIAotICAgVGhlICpzZXJ2ZXJfc2lkZSogYW5kICpzZXJ2ZXJfaG9zdG5hbWUqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzCi0gICBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisgICBUaGUgKnNlcnZlcl9zaWRlKiwgKnNlcnZlcl9ob3N0bmFtZSogYW5kICpzZXNzaW9uKiBwYXJhbWV0ZXJzIGhhdmUgdGhlCisgICBzYW1lIG1lYW5pbmcgYXMgaW4gOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKnNlc3Npb24qIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXNzaW9uX3N0YXRzKCkKIApAQCAtMTQ3OCw2ICsxNjM1LDEyIEBACiAgICAgICB0byBzZXQgb3B0aW9ucywgbm90IHRvIGNsZWFyIHRoZW0uICBBdHRlbXB0aW5nIHRvIGNsZWFyIGFuIG9wdGlvbgogICAgICAgKGJ5IHJlc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBiaXRzKSB3aWxsIHJhaXNlIGEgYGBWYWx1ZUVycm9yYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU1NMQ29udGV4dC5vcHRpb25zYCByZXR1cm5zIDpjbGFzczpgT3B0aW9uc2AgZmxhZ3M6CisKKyAgICAgICAgID4+PiBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLm9wdGlvbnMKKyAgICAgICAgIDxPcHRpb25zLk9QX0FMTHxPUF9OT19TU0x2M3xPUF9OT19TU0x2MnxPUF9OT19DT01QUkVTU0lPTjogMjE5Nzk0NzM5MT4KKwogLi4gYXR0cmlidXRlOjogU1NMQ29udGV4dC5wcm90b2NvbAogCiAgICBUaGUgcHJvdG9jb2wgdmVyc2lvbiBjaG9zZW4gd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQuICBUaGlzIGF0dHJpYnV0ZQpAQCAtMTQ5MiwxMiArMTY1NSwyMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AgcmV0dXJucyA6Y2xhc3M6YFZlcmlmeUZsYWdzYCBmbGFnczoKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X2ZsYWdzCisgICAgICAgICA8VmVyaWZ5RmxhZ3MuVkVSSUZZX1g1MDlfVFJVU1RFRF9GSVJTVDogMzI3Njg+CisKIC4uIGF0dHJpYnV0ZTo6IFNTTENvbnRleHQudmVyaWZ5X21vZGUKIAogICAgV2hldGhlciB0byB0cnkgdG8gdmVyaWZ5IG90aGVyIHBlZXJzJyBjZXJ0aWZpY2F0ZXMgYW5kIGhvdyB0byBiZWhhdmUKICAgIGlmIHZlcmlmaWNhdGlvbiBmYWlscy4gIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgb25lIG9mCiAgICA6ZGF0YTpgQ0VSVF9OT05FYCwgOmRhdGE6YENFUlRfT1BUSU9OQUxgIG9yIDpkYXRhOmBDRVJUX1JFUVVJUkVEYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCByZXR1cm5zIDpjbGFzczpgVmVyaWZ5TW9kZWAgZW51bToKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X21vZGUKKyAgICAgICAgIDxWZXJpZnlNb2RlLkNFUlRfUkVRVUlSRUQ6IDI+CiAKIC4uIGluZGV4Ojogc2luZ2xlOiBjZXJ0aWZpY2F0ZXMKIApAQCAtMTkxNiw2ICsyMDkwLDggQEAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuY29udGV4dGAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX3NpZGVgCiAgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlcnZlcl9ob3N0bmFtZWAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYAogICAgLSA6bWV0aDpgflNTTFNvY2tldC5nZXRwZWVyY2VydGAKQEAgLTE5OTcsNiArMjE3MywyMiBAQAogICAgICAgYmVjb21lIHRydWUgYWZ0ZXIgYWxsIGRhdGEgY3VycmVudGx5IGluIHRoZSBidWZmZXIgaGFzIGJlZW4gcmVhZC4KIAogCitTU0wgc2Vzc2lvbgorLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGNsYXNzOjogU1NMU2Vzc2lvbgorCisgICBTZXNzaW9uIG9iamVjdCB1c2VkIGJ5IDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpZAorICAgLi4gYXR0cmlidXRlOjogdGltZQorICAgLi4gYXR0cmlidXRlOjogdGltZW91dAorICAgLi4gYXR0cmlidXRlOjogdGlja2V0X2xpZmV0aW1lX2hpbnQKKyAgIC4uIGF0dHJpYnV0ZTo6IGhhc190aWNrZXQKKworCiAuLiBfc3NsLXNlY3VyaXR5OgogCiBTZWN1cml0eSBjb25zaWRlcmF0aW9ucwpAQCAtMjA2MywxOCArMjI1NSwyMCBAQAogCiBTU0wgdmVyc2lvbnMgMiBhbmQgMyBhcmUgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgYXJlIHRoZXJlZm9yZSBkYW5nZXJvdXMgdG8KIHVzZS4gIElmIHlvdSB3YW50IG1heGltdW0gY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGNsaWVudHMgYW5kIHNlcnZlcnMsIGl0IGlzCi1yZWNvbW1lbmRlZCB0byB1c2UgOmNvbnN0OmBQUk9UT0NPTF9UTFNgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGFuZCB0aGVuCi1kaXNhYmxlIFNTTHYyIGFuZCBTU0x2MyBleHBsaWNpdGx5IHVzaW5nIHRoZSA6ZGF0YTpgU1NMQ29udGV4dC5vcHRpb25zYAotYXR0cmlidXRlOjoKK3JlY29tbWVuZGVkIHRvIHVzZSA6Y29uc3Q6YFBST1RPQ09MX1RMU19DTElFTlRgIG9yCis6Y29uc3Q6YFBST1RPQ09MX1RMU19TRVJWRVJgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBTU0x2MiBhbmQgU1NMdjMgYXJlCitkaXNhYmxlZCBieSBkZWZhdWx0LgogCi0gICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMUykKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjIKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjMKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMQorICAgPj4+IGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICA+Pj4gY2xpZW50X2NvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKKyAgID4+PiBjbGllbnRfY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8xCisKIAogVGhlIFNTTCBjb250ZXh0IGNyZWF0ZWQgYWJvdmUgd2lsbCBvbmx5IGFsbG93IFRMU3YxLjIgYW5kIGxhdGVyIChpZgotc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtKSBjb25uZWN0aW9ucy4KK3N1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSkgY29ubmVjdGlvbnMgdG8gYSBzZXJ2ZXIuIDpjb25zdDpgUFJPVE9DT0xfVExTX0NMSUVOVGAKK2ltcGxpZXMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBhbmQgaG9zdG5hbWUgY2hlY2tzIGJ5IGRlZmF1bHQuIFlvdSBoYXZlIHRvCitsb2FkIGNlcnRpZmljYXRlcyBpbnRvIHRoZSBjb250ZXh0LgorCiAKIENpcGhlciBzZWxlY3Rpb24KICcnJycnJycnJycnJycnJycKQEAgLTIwODUsOCArMjI3OSw5IEBACiBzc2wgbW9kdWxlIGRpc2FibGVzIGNlcnRhaW4gd2VhayBjaXBoZXJzIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgbWF5IHdhbnQKIHRvIGZ1cnRoZXIgcmVzdHJpY3QgdGhlIGNpcGhlciBjaG9pY2UuIEJlIHN1cmUgdG8gcmVhZCBPcGVuU1NMJ3MgZG9jdW1lbnRhdGlvbgogYWJvdXQgdGhlIGBjaXBoZXIgbGlzdCBmb3JtYXQgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvYXBwcy9jaXBoZXJzLmh0bWwjQ0lQSEVSLUxJU1QtRk9STUFUPmBfLgotSWYgeW91IHdhbnQgdG8gY2hlY2sgd2hpY2ggY2lwaGVycyBhcmUgZW5hYmxlZCBieSBhIGdpdmVuIGNpcGhlciBsaXN0LCB1c2UgdGhlCi1gYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91ciBzeXN0ZW0uCitJZiB5b3Ugd2FudCB0byBjaGVjayB3aGljaCBjaXBoZXJzIGFyZSBlbmFibGVkIGJ5IGEgZ2l2ZW4gY2lwaGVyIGxpc3QsIHVzZQorOm1ldGg6YFNTTENvbnRleHQuZ2V0X2NpcGhlcnNgIG9yIHRoZSBgYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91cgorc3lzdGVtLgogCiBNdWx0aS1wcm9jZXNzaW5nCiBeXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdCBiL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CmluZGV4IGVhM2Q3ZGEuLmMwMjBhMzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CkBAIC0zOSw2ICszOSw3IEBACiAKID09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpmdW5jOmBtZWFuYCAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKCJhdmVyYWdlIikgb2YgZGF0YS4KKzpmdW5jOmBoYXJtb25pY19tZWFuYCAgICBIYXJtb25pYyBtZWFuIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuYCAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuX2xvd2AgICAgICAgTG93IG1lZGlhbiBvZiBkYXRhLgogOmZ1bmM6YG1lZGlhbl9oaWdoYCAgICAgIEhpZ2ggbWVkaWFuIG9mIGRhdGEuCkBAIC0xMTEsNiArMTEyLDM4IEBACiAgICAgICBgYG1lYW4oZGF0YSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHRoZSB0cnVlIHBvcHVsYXRpb24gbWVhbiDOvC4KIAogCisuLiBmdW5jdGlvbjo6IGhhcm1vbmljX21lYW4oZGF0YSkKKworICAgUmV0dXJuIHRoZSBoYXJtb25pYyBtZWFuIG9mICpkYXRhKiwgYSBzZXF1ZW5jZSBvciBpdGVyYXRvciBvZgorICAgcmVhbC12YWx1ZWQgbnVtYmVycy4KKworICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgcmVjaXByb2NhbCBvZiB0aGUgYXJpdGhtZXRpYyA6ZnVuYzpgbWVhbmAgb2YgdGhlIHJlY2lwcm9jYWxzIG9mIHRoZQorICAgZGF0YS4gRm9yIGV4YW1wbGUsIHRoZSBoYXJtb25pYyBtZWFuIG9mIHRocmVlIHZhbHVlcyAqYSosICpiKiBhbmQgKmMqCisgICB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gYGAzLygxL2EgKyAxL2IgKyAxL2MpYGAuCisKKyAgIFRoZSBoYXJtb25pYyBtZWFuIGlzIGEgdHlwZSBvZiBhdmVyYWdlLCBhIG1lYXN1cmUgb2YgdGhlIGNlbnRyYWwKKyAgIGxvY2F0aW9uIG9mIHRoZSBkYXRhLiAgSXQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgd2hlbiBhdmVyYWdpbmcgcXVhbnRpdGllcworICAgd2hpY2ggYXJlIHJhdGVzIG9yIHJhdGlvcywgZm9yIGV4YW1wbGUgc3BlZWRzLiBGb3IgZXhhbXBsZToKKworICAgU3VwcG9zZSBhbiBpbnZlc3RvciBwdXJjaGFzZXMgYW4gZXF1YWwgdmFsdWUgb2Ygc2hhcmVzIGluIGVhY2ggb2YKKyAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgV2hhdCBpcyB0aGUgYXZlcmFnZSBQL0UgcmF0aW8gZm9yIHRoZSBpbnZlc3RvcidzIHBvcnRmb2xpbz8KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiBoYXJtb25pY19tZWFuKFsyLjUsIDMsIDEwXSkgICMgRm9yIGFuIGVxdWFsIGludmVzdG1lbnQgcG9ydGZvbGlvLgorICAgICAgMy42CisKKyAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgaXMgdG9vIGhpZ2guCisKKyAgIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkIGlmICpkYXRhKiBpcyBlbXB0eSwgb3IgYW55IGVsZW1lbnQKKyAgIGlzIGxlc3MgdGhhbiB6ZXJvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBmdW5jdGlvbjo6IG1lZGlhbihkYXRhKQogCiAgICBSZXR1cm4gdGhlIG1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBudW1lcmljIGRhdGEsIHVzaW5nIHRoZSBjb21tb24gIm1lYW4gb2YKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAppbmRleCA1OTM2YzY4Li4xMjJlZDAwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CkBAIC0xMzYzLDYgKzEzNjMsMTEgQEAKICAgIFRoZSA6YXR0cjpgfnJhbmdlLnN0YXJ0YCwgOmF0dHI6YH5yYW5nZS5zdG9wYCBhbmQgOmF0dHI6YH5yYW5nZS5zdGVwYAogICAgYXR0cmlidXRlcy4KIAorLi4gc2VlYWxzbzo6CisKKyAgICogVGhlIGBsaW5zcGFjZSByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3OTAwMC8+YF8KKyAgICAgc2hvd3MgaG93IHRvIGltcGxlbWVudCBhIGxhenkgdmVyc2lvbiBvZiByYW5nZSB0aGF0IHN1aXRhYmxlIGZvciBmbG9hdGluZworICAgICBwb2ludCBhcHBsaWNhdGlvbnMuCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogc3RyaW5nOyB0ZXh0IHNlcXVlbmNlIHR5cGUKQEAgLTE0NTMsOCArMTQ1OCw4IEBACiAKICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBgYHN0cmBgIGNsYXNzIGFuZCBpdHMgbWV0aG9kcywgc2VlCiAgICA6cmVmOmB0ZXh0c2VxYCBhbmQgdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uIGJlbG93LiAgVG8gb3V0cHV0Ci0gICBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLiAgSW4gYWRkaXRpb24sCi0gICBzZWUgdGhlIDpyZWY6YHN0cmluZ3NlcnZpY2VzYCBzZWN0aW9uLgorICAgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgZi1zdHJpbmdzYCBhbmQgOnJlZjpgZm9ybWF0c3RyaW5nc2AKKyAgIHNlY3Rpb25zLiAgSW4gYWRkaXRpb24sIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCiAKIAogLi4gaW5kZXg6OgpAQCAtMjA1Niw4ICsyMDYxLDggQEAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogZm9ybWF0dGluZywgc3RyaW5nICglKQogICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBzdHJpbmcgKCUpCi0gICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0dGluZwotICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0aW5nLCBwcmludGYKKyAgIHNpbmdsZTogc3RyaW5nOyBpbnRlcnBvbGF0aW9uLCBwcmludGYKICAgIHNpbmdsZTogcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogc3ByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgZm9ybWF0dGluZwpAQCAtMjA2Nyw5ICsyMDcyLDEwIEBACiAKICAgIFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgZXhoaWJpdCBhIHZhcmlldHkgb2YgcXVpcmtzIHRoYXQKICAgIGxlYWQgdG8gYSBudW1iZXIgb2YgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBmYWlsaW5nIHRvIGRpc3BsYXkgdHVwbGVzIGFuZAotICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOm1ldGg6YHN0ci5mb3JtYXRgIGludGVyZmFjZQotICAgaGVscHMgYXZvaWQgdGhlc2UgZXJyb3JzLCBhbmQgYWxzbyBwcm92aWRlcyBhIGdlbmVyYWxseSBtb3JlIHBvd2VyZnVsLAotICAgZmxleGlibGUgYW5kIGV4dGVuc2libGUgYXBwcm9hY2ggdG8gZm9ybWF0dGluZyB0ZXh0LgorICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOnJlZjpgZm9ybWF0dGVkCisgICBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIG9yIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgaW50ZXJmYWNlCisgICBoZWxwcyBhdm9pZCB0aGVzZSBlcnJvcnMuICBUaGVzZSBhbHRlcm5hdGl2ZXMgYWxzbyBwcm92aWRlIG1vcmUgcG93ZXJmdWwsCisgICBmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBhcHByb2FjaGVzIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KQEAgLTI2MzAsOCArMjYzNiw4IEBACiAgICBUaGUgcHJlZml4KGVzKSB0byBzZWFyY2ggZm9yIG1heSBiZSBhbnkgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KIAogCi0uLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGVbLCBkZWxldGVdKQotICAgICAgICAgICAgYnl0ZWFycmF5LnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pCisuLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGUsIGRlbGV0ZT1iJycpCisgICAgICAgICAgICBieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlLCBkZWxldGU9YicnKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0IHdoZXJlIGFsbCBieXRlcyBvY2N1cnJpbmcgaW4KICAgIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlKiBhcmUgcmVtb3ZlZCwgYW5kIHRoZSByZW1haW5pbmcgYnl0ZXMgaGF2ZQpAQCAtMjY0Nyw2ICsyNjUzLDkgQEAKICAgICAgID4+PiBiJ3JlYWQgdGhpcyBzaG9ydCB0ZXh0Jy50cmFuc2xhdGUoTm9uZSwgYidhZWlvdScpCiAgICAgICBiJ3JkIHRocyBzaHJ0IHR4dCcKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWxldGUqIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgorCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgaGF2ZSBkZWZhdWx0IGJlaGF2aW91cnMKIHRoYXQgYXNzdW1lIHRoZSB1c2Ugb2YgQVNDSUkgY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cywgYnV0IGNhbiBzdGlsbCBiZSB1c2VkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0IGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAppbmRleCAwNTQxOGE5Li5hMDk3N2I2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKQEAgLTE4OCw3ICsxODgsOSBAQAogCiBUaGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBhbmQgdGhlIDpjbGFzczpgRm9ybWF0dGVyYCBjbGFzcyBzaGFyZSB0aGUgc2FtZQogc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgOmNsYXNzOmBGb3JtYXR0ZXJgLAotc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuCitzdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4gIFRoZSBzeW50YXggaXMKK3JlbGF0ZWQgdG8gdGhhdCBvZiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCwgYnV0Cit0aGVyZSBhcmUgZGlmZmVyZW5jZXMuCiAKIEZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXMgYGB7fWBgLgogQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWwgdGV4dCwgd2hpY2ggaXMKQEAgLTI4Myw3ICsyODUsOCBAQAogCiAiRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gYQogZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWQgKHNlZQotOnJlZjpgZm9ybWF0c3RyaW5nc2ApLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWx0LWluCis6cmVmOmBmb3JtYXRzdHJpbmdzYCBhbmQgOnJlZjpgZi1zdHJpbmdzYCkuCitUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4KIDpmdW5jOmBmb3JtYXRgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93IHRoZSBmb3JtYXQKIHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuCiAKQEAgLTI5NywxOCArMzAwLDIwIEBACiBUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6IHNmCi0gICBmb3JtYXRfc3BlYzogW1tgZmlsbGBdYGFsaWduYF1bYHNpZ25gXVsjXVswXVtgd2lkdGhgXVssXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KKyAgIGZvcm1hdF9zcGVjOiBbW2BmaWxsYF1gYWxpZ25gXVtgc2lnbmBdWyNdWzBdW2B3aWR0aGBdW2Bncm91cGluZ19vcHRpb25gXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KICAgIGZpbGw6IDxhbnkgY2hhcmFjdGVyPgogICAgYWxpZ246ICI8IiB8ICI+IiB8ICI9IiB8ICJeIgogICAgc2lnbjogIisiIHwgIi0iIHwgIiAiCiAgICB3aWR0aDogYGludGVnZXJgCisgICBncm91cGluZ19vcHRpb246ICJfIiB8ICIsIgogICAgcHJlY2lzaW9uOiBgaW50ZWdlcmAKICAgIHR5cGU6ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIgogCiBJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgYnkgYSAqZmlsbCoKIGNoYXJhY3RlciB0aGF0IGNhbiBiZSBhbnkgY2hhcmFjdGVyIGFuZCBkZWZhdWx0cyB0byBhIHNwYWNlIGlmIG9taXR0ZWQuCiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAoImBge2BgIiBvciAiYGB9YGAiKSBhcwotdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgCit0aGUgKmZpbGwqIGNoYXJhY3RlciBpbiBhIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbAorPGYtc3RyaW5ncz5gIG9yIHdoZW4gdXNpbmcgdGhlIDptZXRoOmBzdHIuZm9ybWF0YAogbWV0aG9kLiAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2UKIHdpdGggYSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc24ndAogYWZmZWN0IHRoZSA6ZnVuYzpgZm9ybWF0YCBmdW5jdGlvbi4KQEAgLTM3NCw2ICszNzksMTYgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICBBZGRlZCB0aGUgYGAnLCdgYCBvcHRpb24gKHNlZSBhbHNvIDpwZXA6YDM3OGApLgogCitUaGUgYGAnXydgYCBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGFuIHVuZGVyc2NvcmUgZm9yIGEgdGhvdXNhbmRzCitzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yIGludGVnZXIKK3ByZXNlbnRhdGlvbiB0eXBlIGBgJ2QnYGAuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYGAnYidgYCwKK2BgJ28nYGAsIGBgJ3gnYGAsIGFuZCBgYCdYJ2BgLCB1bmRlcnNjb3JlcyB3aWxsIGJlIGluc2VydGVkIGV2ZXJ5IDQKK2RpZ2l0cy4gIEZvciBvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4KK2Vycm9yLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgQWRkZWQgdGhlIGBgJ18nYGAgb3B0aW9uIChzZWUgYWxzbyA6cGVwOmA1MTVgKS4KKwogKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdAogc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CmluZGV4IGFlMmUzOGYuLmNjMzAxN2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdApAQCAtMjE2LDYgKzIxNiw4IEBACiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgTmBgICB8IDpjOnR5cGU6YHNpemVfdGAgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IGBgZWBgICB8IFwoNykgICAgICAgICAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CisrLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZmBgICB8IDpjOnR5cGU6YGZsb2F0YCAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZGBgICB8IDpjOnR5cGU6YGRvdWJsZWAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CkBAIC0yMzAsNiArMjMyLDEwIEBACiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ24nYGAgYW5kIGBgJ04nYGAgZm9ybWF0cy4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCdlJ2BgIGZvcm1hdC4KKworCiBOb3RlczoKIAogKDEpCkBAIC0yNTcsOSArMjYzLDEwIEBACiAgICBmaXRzIHlvdXIgYXBwbGljYXRpb24uCiAKICg1KQotICAgRm9yIHRoZSBgYCdmJ2BgIGFuZCBgYCdkJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQgcmVwcmVzZW50YXRpb24gdXNlcwotICAgdGhlIElFRUUgNzU0IGJpbmFyeTMyIChmb3IgYGAnZidgYCkgb3IgYmluYXJ5NjQgKGZvciBgYCdkJ2BgKSBmb3JtYXQsCi0gICByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCisgICBGb3IgdGhlIGBgJ2YnYGAsIGBgJ2QnYGAgYW5kIGBgJ2UnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZAorICAgcmVwcmVzZW50YXRpb24gdXNlcyB0aGUgSUVFRSA3NTQgYmluYXJ5MzIsIGJpbmFyeTY0IG9yIGJpbmFyeTE2IGZvcm1hdCAoZm9yCisgICBgYCdmJ2BgLCBgYCdkJ2BgIG9yIGBgJ2UnYGAgcmVzcGVjdGl2ZWx5KSwgcmVnYXJkbGVzcyBvZiB0aGUgZmxvYXRpbmctcG9pbnQKKyAgIGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KIAogKDYpCiAgICBUaGUgYGAnUCdgYCBmb3JtYXQgY2hhcmFjdGVyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlIGJ5dGUgb3JkZXJpbmcKQEAgLTI2OCw2ICsyNzUsMTYgQEAKICAgIG9uIHRoZSBob3N0IHN5c3RlbS4gVGhlIHN0cnVjdCBtb2R1bGUgZG9lcyBub3QgaW50ZXJwcmV0IHRoaXMgYXMgbmF0aXZlCiAgICBvcmRlcmluZywgc28gdGhlIGBgJ1AnYGAgZm9ybWF0IGlzIG5vdCBhdmFpbGFibGUuCiAKKyg3KQorICAgVGhlIElFRUUgNzU0IGJpbmFyeTE2ICJoYWxmIHByZWNpc2lvbiIgdHlwZSB3YXMgaW50cm9kdWNlZCBpbiB0aGUgMjAwOAorICAgcmV2aXNpb24gb2YgdGhlIGBJRUVFIDc1NCBzdGFuZGFyZCA8aWVlZSA3NTQgc3RhbmRhcmRfPmBfLiBJdCBoYXMgYSBzaWduCisgICBiaXQsIGEgNS1iaXQgZXhwb25lbnQgYW5kIDExLWJpdCBwcmVjaXNpb24gKHdpdGggMTAgYml0cyBleHBsaWNpdGx5IHN0b3JlZCksCisgICBhbmQgY2FuIHJlcHJlc2VudCBudW1iZXJzIGJldHdlZW4gYXBwcm94aW1hdGVseSBgYDYuMWUtMDVgYCBhbmQgYGA2LjVlKzA0YGAKKyAgIGF0IGZ1bGwgcHJlY2lzaW9uLiBUaGlzIHR5cGUgaXMgbm90IHdpZGVseSBzdXBwb3J0ZWQgYnkgQyBjb21waWxlcnM6IG9uIGEKKyAgIHR5cGljYWwgbWFjaGluZSwgYW4gdW5zaWduZWQgc2hvcnQgY2FuIGJlIHVzZWQgZm9yIHN0b3JhZ2UsIGJ1dCBub3QgZm9yIG1hdGgKKyAgIG9wZXJhdGlvbnMuIFNlZSB0aGUgV2lraXBlZGlhIHBhZ2Ugb24gdGhlIGBoYWxmLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludAorICAgZm9ybWF0IDxoYWxmIHByZWNpc2lvbiBmb3JtYXRfPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCiAKIEEgZm9ybWF0IGNoYXJhY3RlciBtYXkgYmUgcHJlY2VkZWQgYnkgYW4gaW50ZWdyYWwgcmVwZWF0IGNvdW50LiAgRm9yIGV4YW1wbGUsCiB0aGUgZm9ybWF0IHN0cmluZyBgYCc0aCdgYCBtZWFucyBleGFjdGx5IHRoZSBzYW1lIGFzIGBgJ2hoaGgnYGAuCkBAIC00MzAsMyArNDQ3LDcgQEAKICAgICAgIFRoZSBjYWxjdWxhdGVkIHNpemUgb2YgdGhlIHN0cnVjdCAoYW5kIGhlbmNlIG9mIHRoZSBieXRlcyBvYmplY3QgcHJvZHVjZWQKICAgICAgIGJ5IHRoZSA6bWV0aDpgcGFja2AgbWV0aG9kKSBjb3JyZXNwb25kaW5nIHRvIDphdHRyOmBmb3JtYXRgLgogCisKKy4uIF9oYWxmIHByZWNpc2lvbiBmb3JtYXQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGYtcHJlY2lzaW9uX2Zsb2F0aW5nLXBvaW50X2Zvcm1hdAorCisuLiBfaWVlZSA3NTQgc3RhbmRhcmQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVfZmxvYXRpbmdfcG9pbnQjSUVFRV83NTQtMjAwOApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCBjMWIyOGY4Li5hZDJhYmU4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMzgsNyArMzgsOCBAQAogCiAKIC4uIGZ1bmN0aW9uOjogcnVuKGFyZ3MsICosIHN0ZGluPU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSxcCi0gICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCiAgICByZXR1cm4gYSA6Y2xhc3M6YENvbXBsZXRlZFByb2Nlc3NgIGluc3RhbmNlLgpAQCAtNjAsMTUgKzYxLDIwIEBACiAKICAgIFRoZSAqaW5wdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4uY29tbXVuaWNhdGVgIGFuZCB0aHVzIHRvIHRoZQogICAgc3VicHJvY2VzcydzIHN0ZGluLiAgSWYgdXNlZCBpdCBtdXN0IGJlIGEgYnl0ZSBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gIFdoZW4gdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdAotICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGggYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkKLSAgIG5vdCBiZSB1c2VkIGFzIHdlbGwuCisgICAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIHNwZWNpZmllZCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyB0cnVlLiAgV2hlbgorICAgdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2l0aAorICAgYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkgbm90IGJlIHVzZWQgYXMgd2VsbC4KIAogICAgSWYgKmNoZWNrKiBpcyB0cnVlLCBhbmQgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSwgYQogICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuIEF0dHJpYnV0ZXMgb2YgdGhhdAogICAgZXhjZXB0aW9uIGhvbGQgdGhlIGFyZ3VtZW50cywgdGhlIGV4aXQgY29kZSwgYW5kIHN0ZG91dCBhbmQgc3RkZXJyIGlmIHRoZXkKICAgIHdlcmUgY2FwdHVyZWQuCiAKKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgb3IgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgdHJ1ZSwKKyAgIGZpbGUgb2JqZWN0cyBmb3Igc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHVzaW5nIHRoZQorICAgc3BlY2lmaWVkICplbmNvZGluZyogYW5kICplcnJvcnMqIG9yIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGRlZmF1bHQuCisgICBPdGhlcndpc2UsIGZpbGUgb2JqZWN0cyBhcmUgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgorCiAgICBFeGFtcGxlczo6CiAKICAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIl0pICAjIGRvZXNuJ3QgY2FwdHVyZSBvdXRwdXQKQEAgLTg1LDYgKzkxLDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICAgICBBZGRlZCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzCisKIC4uIGNsYXNzOjogQ29tcGxldGVkUHJvY2VzcwogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gOmZ1bmM6YHJ1bmAsIHJlcHJlc2VudGluZyBhIHByb2Nlc3MgdGhhdCBoYXMgZmluaXNoZWQuCkBAIC0xMDQsOCArMTE0LDggQEAKICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAogCiAgICAgICBDYXB0dXJlZCBzdGRvdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIGBgTm9uZWBgIGlmIHN0ZG91dAotICAgICAgd2FzIG5vdCBjYXB0dXJlZC4KKyAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBhbiBlbmNvZGluZyBvciBlcnJvcnMuIGBgTm9uZWBgIGlmIHN0ZG91dCB3YXMgbm90CisgICAgICBjYXB0dXJlZC4KIAogICAgICAgSWYgeW91IHJhbiB0aGUgcHJvY2VzcyB3aXRoIGBgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUYGAsIHN0ZG91dCBhbmQKICAgICAgIHN0ZGVyciB3aWxsIGJlIGNvbWJpbmVkIGluIHRoaXMgYXR0cmlidXRlLCBhbmQgOmF0dHI6YHN0ZGVycmAgd2lsbCBiZQpAQCAtMTE0LDggKzEyNCw4IEBACiAgICAuLiBhdHRyaWJ1dGU6OiBzdGRlcnIKIAogICAgICAgQ2FwdHVyZWQgc3RkZXJyIGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIEEgYnl0ZXMgc2VxdWVuY2UsIG9yIGEgc3RyaW5nIGlmCi0gICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiBgYE5vbmVgYCBpZiBzdGRlcnIKLSAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisgICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYW4gZW5jb2Rpbmcgb3IgZXJyb3JzLiBgYE5vbmVgYCBpZiBzdGRlcnIgd2FzIG5vdAorICAgICAgY2FwdHVyZWQuCiAKICAgIC4uIG1ldGhvZDo6IGNoZWNrX3JldHVybmNvZGUoKQogCkBAIC0yNDksMTkgKzI1OSwyMiBAQAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IHN1YnByb2Nlc3MgbW9kdWxlCiAKLSAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgRmFsc2VgYCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqIGFuZAotICAgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgYXMgYmluYXJ5IHN0cmVhbXMsIGFuZCBubyBsaW5lIGVuZGluZyBjb252ZXJzaW9uIGlzCi0gICBkb25lLgorICAgSWYgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmUgc3BlY2lmaWVkLCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyB0cnVlLAorICAgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgaW4gdGV4dAorICAgbW9kZSB1c2luZyB0aGUgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogc3BlY2lmaWVkIGluIHRoZSBjYWxsIG9yIHRoZQorICAgZGVmYXVsdHMgZm9yIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAuCiAKLSAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGVzZSBmaWxlIG9iamVjdHMKLSAgIHdpbGwgYmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlCi0gICB1c2luZyB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKLSAgIDxsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2Rpbmc+YC4gIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzCi0gICBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IKLSAgIDpkYXRhOmBvcy5saW5lc2VwYC4gIEZvciAqc3Rkb3V0KiBhbmQgKnN0ZGVyciosIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlCi0gICBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzIHdoZW4gdGhlICpuZXdsaW5lKgotICAgYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgorICAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkCisgICB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvciA6ZGF0YTpgb3MubGluZXNlcGAuIEZvciAqc3Rkb3V0KiBhbmQgKnN0ZGVyciosCisgICBhbGwgbGluZSBlbmRpbmdzIGluIHRoZSBvdXRwdXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYGAnXG4nYGAuICBGb3IgbW9yZQorICAgaW5mb3JtYXRpb24gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGNsYXNzCisgICB3aGVuIHRoZSAqbmV3bGluZSogYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgorCisgICBJZiB0ZXh0IG1vZGUgaXMgbm90IHVzZWQsICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcworICAgYmluYXJ5IHN0cmVhbXMuIE5vIGVuY29kaW5nIG9yIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkICplbmNvZGluZyogYW5kICplcnJvcnMqIHBhcmFtZXRlcnMuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0zMDYsNyArMzE5LDggQEAKICAgICAgICAgICAgICAgICAgc3RkZXJyPU5vbmUsIHByZWV4ZWNfZm49Tm9uZSwgY2xvc2VfZmRzPVRydWUsIHNoZWxsPUZhbHNlLCBcCiAgICAgICAgICAgICAgICAgIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCBcCiAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvPU5vbmUsIGNyZWF0aW9uZmxhZ3M9MCwgcmVzdG9yZV9zaWduYWxzPVRydWUsIFwKLSAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X3Nlc3Npb249RmFsc2UsIHBhc3NfZmRzPSgpKQorICAgICAgICAgICAgICAgICBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCksICosIFwKKyAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCiAKICAgIEV4ZWN1dGUgYSBjaGlsZCBwcm9ncmFtIGluIGEgbmV3IHByb2Nlc3MuICBPbiBQT1NJWCwgdGhlIGNsYXNzIHVzZXMKICAgIDptZXRoOmBvcy5leGVjdnBgLWxpa2UgYmVoYXZpb3IgdG8gZXhlY3V0ZSB0aGUgY2hpbGQgcHJvZ3JhbS4gIE9uIFdpbmRvd3MsCkBAIC00ODIsMTAgKzQ5NiwxNCBAQAogCiAgICAuLiBfc2lkZS1ieS1zaWRlIGFzc2VtYmx5OiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TaWRlLWJ5LVNpZGVfQXNzZW1ibHkKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCoKLSAgIGFuZCAqc3RkZXJyKiBhcmUgb3BlbmVkIGFzIHRleHQgc3RyZWFtcyBpbiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSwgYXMKLSAgIGRlc2NyaWJlZCBhYm92ZSBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCwgb3RoZXJ3aXNlIHRoZXkgYXJlCi0gICBvcGVuZWQgYXMgYmluYXJ5IHN0cmVhbXMuCisgICBJZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZSBzcGVjaWZpZWQsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCoKKyAgIGFuZCAqc3RkZXJyKiBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcgYW5kCisgICAqZXJyb3JzKiwgYXMgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLiBJZgorICAgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZXkgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgd2l0aCBkZWZhdWx0CisgICBlbmNvZGluZy4gT3RoZXJ3aXNlLCB0aGV5IGFyZSBvcGVuZWQgYXMgYmluYXJ5IHN0cmVhbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogd2VyZSBhZGRlZC4KIAogICAgSWYgZ2l2ZW4sICpzdGFydHVwaW5mbyogd2lsbCBiZSBhIDpjbGFzczpgU1RBUlRVUElORk9gIG9iamVjdCwgd2hpY2ggaXMKICAgIHBhc3NlZCB0byB0aGUgdW5kZXJseWluZyBgYENyZWF0ZVByb2Nlc3NgYCBmdW5jdGlvbi4KQEAgLTUwMiw2ICs1MjAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBjb250ZXh0IG1hbmFnZXIgc3VwcG9ydC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFBvcGVuIGRlc3RydWN0b3Igbm93IGVtaXRzIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nIGlmIHRoZSBjaGlsZAorICAgICAgcHJvY2VzcyBpcyBzdGlsbCBydW5uaW5nLgorCiAKIEV4Y2VwdGlvbnMKIF5eXl5eXl5eXl4KQEAgLTU5NywxMSArNjE5LDEyIEBACiAgICBJbnRlcmFjdCB3aXRoIHByb2Nlc3M6IFNlbmQgZGF0YSB0byBzdGRpbi4gIFJlYWQgZGF0YSBmcm9tIHN0ZG91dCBhbmQgc3RkZXJyLAogICAgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgVGhlIG9wdGlvbmFsCiAgICAqaW5wdXQqIGFyZ3VtZW50IHNob3VsZCBiZSBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlIGNoaWxkIHByb2Nlc3MsIG9yCi0gICBgYE5vbmVgYCwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuICBUaGUgdHlwZSBvZiAqaW5wdXQqCi0gICBtdXN0IGJlIGJ5dGVzIG9yLCBpZiAqdW5pdmVyc2FsX25ld2xpbmVzKiB3YXMgYGBUcnVlYGAsIGEgc3RyaW5nLgorICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgSWYgc3RyZWFtcyB3ZXJlIG9wZW5lZCBpbgorICAgdGV4dCBtb2RlLCAqaW5wdXQqIG11c3QgYmUgYSBzdHJpbmcuICBPdGhlcndpc2UsIGl0IG11c3QgYmUgYnl0ZXMuCiAKICAgIDptZXRoOmBjb21tdW5pY2F0ZWAgcmV0dXJucyBhIHR1cGxlIGBgKHN0ZG91dF9kYXRhLCBzdGRlcnJfZGF0YSlgYC4KLSAgIFRoZSBkYXRhIHdpbGwgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgc3RyaW5ncy4KKyAgIFRoZSBkYXRhIHdpbGwgYmUgc3RyaW5ncyBpZiBzdHJlYW1zIHdlcmUgb3BlbmVkIGluIHRleHQgbW9kZTsgb3RoZXJ3aXNlLAorICAgYnl0ZXMuCiAKICAgIE5vdGUgdGhhdCBpZiB5b3Ugd2FudCB0byBzZW5kIGRhdGEgdG8gdGhlIHByb2Nlc3MncyBzdGRpbiwgeW91IG5lZWQgdG8gY3JlYXRlCiAgICB0aGUgUG9wZW4gb2JqZWN0IHdpdGggYGBzdGRpbj1QSVBFYGAuICBTaW1pbGFybHksIHRvIGdldCBhbnl0aGluZyBvdGhlciB0aGFuCkBAIC02NjgsMjggKzY5MSwzMCBAQAogLi4gYXR0cmlidXRlOjogUG9wZW4uc3RkaW4KIAogICAgSWYgdGhlICpzdGRpbiogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSB3cml0ZWFibGUKLSAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBJZiB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyoKLSAgIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlCi0gICBzdHJlYW0uIElmIHRoZSAqc3RkaW4qIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcwotICAgYGBOb25lYGAuCisgICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gSWYgdGhlICplbmNvZGluZyogb3IgKmVycm9ycyoKKyAgIGFyZ3VtZW50cyB3ZXJlIHNwZWNpZmllZCBvciB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLAorICAgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlICpzdGRpbioKKyAgIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KIAogCiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRvdXQKIAogICAgSWYgdGhlICpzdGRvdXQqIGFyZ3VtZW50IHdhcyA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGEgcmVhZGFibGUKICAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBSZWFkaW5nIGZyb20gdGhlIHN0cmVhbSBwcm92aWRlcwotICAgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMKLSAgIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUKLSAgICpzdGRvdXQqIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KKyAgIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmd1bWVudHMgd2VyZQorICAgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYQorICAgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZG91dCogYXJndW1lbnQgd2FzIG5vdAorICAgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KIAogCiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRlcnIKIAogICAgSWYgdGhlICpzdGRlcnIqIGFyZ3VtZW50IHdhcyA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGEgcmVhZGFibGUKICAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBSZWFkaW5nIGZyb20gdGhlIHN0cmVhbSBwcm92aWRlcwotICAgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMKLSAgIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUKLSAgICpzdGRlcnIqIGFyZ3VtZW50IHdhcyBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KKyAgIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmd1bWVudHMKKyAgIHdlcmUgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsIHRoZSBzdHJlYW0KKyAgIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZGVyciogYXJndW1lbnQgd2FzCisgICBub3QgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYC4KIAogLi4gd2FybmluZzo6CiAKQEAgLTg4Miw3ICs5MDcsOSBAQAogICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAogCi0uLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQorLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCiAKICAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dC4KIApAQCAtMTEzOCw3ICsxMTY1LDcgQEAKICAgIFJldHVybiBgYChzdGF0dXMsIG91dHB1dClgYCBvZiBleGVjdXRpbmcgKmNtZCogaW4gYSBzaGVsbC4KIAogICAgRXhlY3V0ZSB0aGUgc3RyaW5nICpjbWQqIGluIGEgc2hlbGwgd2l0aCA6bWV0aDpgUG9wZW4uY2hlY2tfb3V0cHV0YCBhbmQKLSAgIHJldHVybiBhIDItdHVwbGUgYGAoc3RhdHVzLCBvdXRwdXQpYGAuIFVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzIHVzZWQ7CisgICByZXR1cm4gYSAyLXR1cGxlIGBgKHN0YXR1cywgb3V0cHV0KWBgLiBUaGUgbG9jYWxlIGVuY29kaW5nIGlzIHVzZWQ7CiAgICBzZWUgdGhlIG5vdGVzIG9uIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIGZvciBtb3JlIGRldGFpbHMuCiAKICAgIEEgdHJhaWxpbmcgbmV3bGluZSBpcyBzdHJpcHBlZCBmcm9tIHRoZSBvdXRwdXQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXMucnN0IGIvRG9jL2xpYnJhcnkvc3lzLnJzdAppbmRleCA3YWVkNzVkLi4yZDE0YTFkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgKGRlZmF1bHRpbmcgdG8gemVybyksIG9yIGFub3RoZXIgdHlwZSBvZiBvYmplY3QuICBJZiBpdCBpcyBhbiBpbnRlZ2VyLCB6ZXJvCiAgICBpcyBjb25zaWRlcmVkICJzdWNjZXNzZnVsIHRlcm1pbmF0aW9uIiBhbmQgYW55IG5vbnplcm8gdmFsdWUgaXMgY29uc2lkZXJlZAogICAgImFibm9ybWFsIHRlcm1pbmF0aW9uIiBieSBzaGVsbHMgYW5kIHRoZSBsaWtlLiAgTW9zdCBzeXN0ZW1zIHJlcXVpcmUgaXQgdG8gYmUKLSAgIGluIHRoZSByYW5nZSAwLTEyNywgYW5kIHByb2R1Y2UgdW5kZWZpbmVkIHJlc3VsdHMgb3RoZXJ3aXNlLiAgU29tZSBzeXN0ZW1zCisgICBpbiB0aGUgcmFuZ2UgMC0tMTI3LCBhbmQgcHJvZHVjZSB1bmRlZmluZWQgcmVzdWx0cyBvdGhlcndpc2UuICBTb21lIHN5c3RlbXMKICAgIGhhdmUgYSBjb252ZW50aW9uIGZvciBhc3NpZ25pbmcgc3BlY2lmaWMgbWVhbmluZ3MgdG8gc3BlY2lmaWMgZXhpdCBjb2RlcywgYnV0CiAgICB0aGVzZSBhcmUgZ2VuZXJhbGx5IHVuZGVyZGV2ZWxvcGVkOyBVbml4IHByb2dyYW1zIGdlbmVyYWxseSB1c2UgMiBmb3IgY29tbWFuZAogICAgbGluZSBzeW50YXggZXJyb3JzIGFuZCAxIGZvciBhbGwgb3RoZXIga2luZCBvZiBlcnJvcnMuICBJZiBhbm90aGVyIHR5cGUgb2YKQEAgLTI2OSw2ICsyNjksMTEgQEAKICAgIHRoZSBwcm9jZXNzIHdoZW4gY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLCBhbmQgdGhlIGV4Y2VwdGlvbiBpcyBub3QKICAgIGludGVyY2VwdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgSWYgYW4gZXJyb3Igb2NjdXJzIGluIHRoZSBjbGVhbnVwIGFmdGVyIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKKyAgICAgIGhhcyBjYXVnaHQgOmV4YzpgU3lzdGVtRXhpdGAgKHN1Y2ggYXMgYW4gZXJyb3IgZmx1c2hpbmcgYnVmZmVyZWQgZGF0YQorICAgICAgaW4gdGhlIHN0YW5kYXJkIHN0cmVhbXMpLCB0aGUgZXhpdCBzdGF0dXMgaXMgY2hhbmdlZCB0byAxMjAuCisKIAogLi4gZGF0YTo6IGZsYWdzCiAKQEAgLTQyMywyNSArNDI4LDQyIEBACiAKIC4uIGZ1bmN0aW9uOjogZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKIAotICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZSBmaWxlbmFtZXMgaW50bwotICAgc3lzdGVtIGZpbGUgbmFtZXMuIFRoZSByZXN1bHQgdmFsdWUgZGVwZW5kcyBvbiB0aGUgb3BlcmF0aW5nIHN5c3RlbToKKyAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gVW5pY29kZQorICAgZmlsZW5hbWVzIGFuZCBieXRlcyBmaWxlbmFtZXMuIEZvciBiZXN0IGNvbXBhdGliaWxpdHksIHN0ciBzaG91bGQgYmUKKyAgIHVzZWQgZm9yIGZpbGVuYW1lcyBpbiBhbGwgY2FzZXMsIGFsdGhvdWdoIHJlcHJlc2VudGluZyBmaWxlbmFtZXMgYXMgYnl0ZXMKKyAgIGlzIGFsc28gc3VwcG9ydGVkLiBGdW5jdGlvbnMgYWNjZXB0aW5nIG9yIHJldHVybmluZyBmaWxlbmFtZXMgc2hvdWxkIHN1cHBvcnQKKyAgIGVpdGhlciBzdHIgb3IgYnl0ZXMgYW5kIGludGVybmFsbHkgY29udmVydCB0byB0aGUgc3lzdGVtJ3MgcHJlZmVycmVkCisgICByZXByZXNlbnRhdGlvbi4KKworICAgVGhpcyBlbmNvZGluZyBpcyBhbHdheXMgQVNDSUktY29tcGF0aWJsZS4KKworICAgOmZ1bmM6YG9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YG9zLmZzZGVjb2RlYCBzaG91bGQgYmUgdXNlZCB0byBlbnN1cmUgdGhhdAorICAgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlIGFyZSB1c2VkLgogCiAgICAqIE9uIE1hYyBPUyBYLCB0aGUgZW5jb2RpbmcgaXMgYGAndXRmLTgnYGAuCiAKLSAgICogT24gVW5peCwgdGhlIGVuY29kaW5nIGlzIHRoZSB1c2VyJ3MgcHJlZmVyZW5jZSBhY2NvcmRpbmcgdG8gdGhlIHJlc3VsdCBvZgotICAgICBubF9sYW5naW5mbyhDT0RFU0VUKS4KKyAgICogT24gVW5peCwgdGhlIGVuY29kaW5nIGlzIHRoZSBsb2NhbGUgZW5jb2RpbmcuCiAKLSAgICogT24gV2luZG93cyBOVCssIGZpbGUgbmFtZXMgYXJlIFVuaWNvZGUgbmF0aXZlbHksIHNvIG5vIGNvbnZlcnNpb24gaXMKLSAgICAgcGVyZm9ybWVkLiA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCBzdGlsbCByZXR1cm5zIGBgJ21iY3MnYGAsIGFzCi0gICAgIHRoaXMgaXMgdGhlIGVuY29kaW5nIHRoYXQgYXBwbGljYXRpb25zIHNob3VsZCB1c2Ugd2hlbiB0aGV5IGV4cGxpY2l0bHkKLSAgICAgd2FudCB0byBjb252ZXJ0IFVuaWNvZGUgc3RyaW5ncyB0byBieXRlIHN0cmluZ3MgdGhhdCBhcmUgZXF1aXZhbGVudCB3aGVuCi0gICAgIHVzZWQgYXMgZmlsZSBuYW1lcy4KLQotICAgKiBPbiBXaW5kb3dzIDl4LCB0aGUgZW5jb2RpbmcgaXMgYGAnbWJjcydgYC4KKyAgICogT24gV2luZG93cywgdGhlIGVuY29kaW5nIG1heSBiZSBgYCd1dGYtOCdgYCBvciBgYCdtYmNzJ2BgLCBkZXBlbmRpbmcKKyAgICAgb24gdXNlciBjb25maWd1cmF0aW9uLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgOmZ1bmM6YGdldGZpbGVzeXN0ZW1lbmNvZGluZ2AgcmVzdWx0IGNhbm5vdCBiZSBgYE5vbmVgYCBhbnltb3JlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgV2luZG93cyBpcyBubyBsb25nZXIgZ3VhcmFudGVlZCB0byByZXR1cm4gYGAnbWJjcydgYC4gU2VlIDpwZXA6YDUyOWAKKyAgICAgIGFuZCA6ZnVuYzpgX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLi4gZnVuY3Rpb246OiBnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkKKworICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlcnJvciBtb2RlIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIFVuaWNvZGUgZmlsZW5hbWVzCisgICBhbmQgYnl0ZXMgZmlsZW5hbWVzLiBUaGUgZW5jb2RpbmcgbmFtZSBpcyByZXR1cm5lZCBmcm9tCisgICA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYC4KKworICAgOmZ1bmM6YG9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YG9zLmZzZGVjb2RlYCBzaG91bGQgYmUgdXNlZCB0byBlbnN1cmUgdGhhdAorICAgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlIGFyZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZnVuY3Rpb246OiBnZXRyZWZjb3VudChvYmplY3QpCiAKQEAgLTUzMCwyNiArNTUyLDE1IEBACiAgICBSZXR1cm4gYSBuYW1lZCB0dXBsZSBkZXNjcmliaW5nIHRoZSBXaW5kb3dzIHZlcnNpb24KICAgIGN1cnJlbnRseSBydW5uaW5nLiAgVGhlIG5hbWVkIGVsZW1lbnRzIGFyZSAqbWFqb3IqLCAqbWlub3IqLAogICAgKmJ1aWxkKiwgKnBsYXRmb3JtKiwgKnNlcnZpY2VfcGFjayosICpzZXJ2aWNlX3BhY2tfbWlub3IqLAotICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgYW5kICpwcm9kdWN0X3R5cGUqLgotICAgKnNlcnZpY2VfcGFjayogY29udGFpbnMgYSBzdHJpbmcgd2hpbGUgYWxsIG90aGVyIHZhbHVlcyBhcmUKKyAgICpzZXJ2aWNlX3BhY2tfbWFqb3IqLCAqc3VpdGVfbWFzayosICpwcm9kdWN0X3R5cGUqIGFuZAorICAgKnBsYXRmb3JtX3ZlcnNpb24qLiAqc2VydmljZV9wYWNrKiBjb250YWlucyBhIHN0cmluZywKKyAgICpwbGF0Zm9ybV92ZXJzaW9uKiBhIDMtdHVwbGUgYW5kIGFsbCBvdGhlciB2YWx1ZXMgYXJlCiAgICBpbnRlZ2Vycy4gVGhlIGNvbXBvbmVudHMgY2FuIGFsc28gYmUgYWNjZXNzZWQgYnkgbmFtZSwgc28KICAgIGBgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbMF1gYCBpcyBlcXVpdmFsZW50IHRvCiAgICBgYHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yYGAuIEZvciBjb21wYXRpYmlsaXR5IHdpdGggcHJpb3IKICAgIHZlcnNpb25zLCBvbmx5IHRoZSBmaXJzdCA1IGVsZW1lbnRzIGFyZSByZXRyaWV2YWJsZSBieSBpbmRleGluZy4KIAotICAgKnBsYXRmb3JtKiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgotCi0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGxhdGZvcm0gICAgICAgICAgICAgICAgfAotICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT0rCi0gICB8IDpjb25zdDpgMCAoVkVSX1BMQVRGT1JNX1dJTjMycylgICAgICAgICB8IFdpbjMycyBvbiBXaW5kb3dzIDMuMSAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDEgKFZFUl9QTEFURk9STV9XSU4zMl9XSU5ET1dTKWAgfCBXaW5kb3dzIDk1Lzk4L01FICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAyIChWRVJfUExBVEZPUk1fV0lOMzJfTlQpYCAgICAgIHwgV2luZG93cyBOVC8yMDAwL1hQL3g2NCAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMyAoVkVSX1BMQVRGT1JNX1dJTjMyX0NFKWAgICAgICB8IFdpbmRvd3MgQ0UgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgKnBsYXRmb3JtKiB3aWxsIGJlIDpjb25zdDpgMiAoVkVSX1BMQVRGT1JNX1dJTjMyX05UKWAuCiAKICAgICpwcm9kdWN0X3R5cGUqIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6CiAKQEAgLTU2NSwxNyArNTc2LDIzIEBACiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRvbWFpbiBjb250cm9sbGVyLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0KICAgIFRoaXMgZnVuY3Rpb24gd3JhcHMgdGhlIFdpbjMyIDpjOmZ1bmM6YEdldFZlcnNpb25FeGAgZnVuY3Rpb247IHNlZSB0aGUKICAgIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIG9uIDpjOmZ1bmM6YE9TVkVSU0lPTklORk9FWGAgZm9yIG1vcmUgaW5mb3JtYXRpb24KICAgIGFib3V0IHRoZXNlIGZpZWxkcy4KIAorICAgKnBsYXRmb3JtX3ZlcnNpb24qIHJldHVybnMgdGhlIGFjY3VyYXRlIG1ham9yIHZlcnNpb24sIG1pbm9yIHZlcnNpb24gYW5kCisgICBidWlsZCBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbSwgcmF0aGVyIHRoYW4gdGhlIHZlcnNpb24gdGhhdAorICAgaXMgYmVpbmcgZW11bGF0ZWQgZm9yIHRoZSBwcm9jZXNzLiBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGxvZ2dpbmcgcmF0aGVyCisgICB0aGFuIGZvciBmZWF0dXJlIGRldGVjdGlvbi4KKwogICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQ2hhbmdlZCB0byBhIG5hbWVkIHR1cGxlIGFuZCBhZGRlZCAqc2VydmljZV9wYWNrX21pbm9yKiwKICAgICAgICpzZXJ2aWNlX3BhY2tfbWFqb3IqLCAqc3VpdGVfbWFzayosIGFuZCAqcHJvZHVjdF90eXBlKi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwbGF0Zm9ybV92ZXJzaW9uKgogCiAuLiBmdW5jdGlvbjo6IGdldF9jb3JvdXRpbmVfd3JhcHBlcigpCiAKQEAgLTEwODIsMTggKzEwOTksNiBAQAogICAgICAgdGh1cyBtYXkgbm90IGJlIGF2YWlsYWJsZSBpbiBhbGwgUHl0aG9uIGltcGxlbWVudGF0aW9ucy4KIAogCi0uLiBmdW5jdGlvbjo6IHNldHRzY2R1bXAob25fZmxhZykKLQotICAgQWN0aXZhdGUgZHVtcGluZyBvZiBWTSBtZWFzdXJlbWVudHMgdXNpbmcgdGhlIFBlbnRpdW0gdGltZXN0YW1wIGNvdW50ZXIsIGlmCi0gICAqb25fZmxhZyogaXMgdHJ1ZS4gRGVhY3RpdmF0ZSB0aGVzZSBkdW1wcyBpZiAqb25fZmxhZyogaXMgb2ZmLiBUaGUgZnVuY3Rpb24gaXMKLSAgIGF2YWlsYWJsZSBvbmx5IGlmIFB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBgYC0td2l0aC10c2NgYC4gVG8gdW5kZXJzdGFuZAotICAgdGhlIG91dHB1dCBvZiB0aGlzIGR1bXAsIHJlYWQgOmZpbGU6YFB5dGhvbi9jZXZhbC5jYCBpbiB0aGUgUHl0aG9uIHNvdXJjZXMuCi0KLSAgIC4uIGltcGwtZGV0YWlsOjoKLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgaW50aW1hdGVseSBib3VuZCB0byBDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kCi0gICAgICB0aHVzIG5vdCBsaWtlbHkgdG8gYmUgaW1wbGVtZW50ZWQgZWxzZXdoZXJlLgotCi0KIC4uIGZ1bmN0aW9uOjogc2V0X2Nvcm91dGluZV93cmFwcGVyKHdyYXBwZXIpCiAKICAgIEFsbG93cyBpbnRlcmNlcHRpbmcgY3JlYXRpb24gb2YgOnRlcm06YGNvcm91dGluZWAgb2JqZWN0cyAob25seSBvbmVzIHRoYXQKQEAgLTExMzMsNiArMTEzOCwxOCBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCBvbiBhIHByb3Zpc2lvbmFsIGJhc2lzIChzZWUgOnBlcDpgNDExYAogICAgICAgZm9yIGRldGFpbHMuKSAgVXNlIGl0IG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KIAorLi4gZnVuY3Rpb246OiBfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKQorCisgICBDaGFuZ2VzIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlIHRvICdtYmNzJyBhbmQKKyAgICdyZXBsYWNlJyByZXNwZWN0aXZlbHksIGZvciBjb25zaXN0ZW5jeSB3aXRoIHZlcnNpb25zIG9mIFB5dGhvbiBwcmlvciB0byAzLjYuCisKKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBkZWZpbmluZyB0aGUgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkdgCisgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgbGF1bmNoaW5nIFB5dGhvbi4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgU2VlIDpwZXA6YDUyOWAgZm9yIG1vcmUgZGV0YWlscy4KIAogLi4gZGF0YTo6IHN0ZGluCiAgICAgICAgICAgc3Rkb3V0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0IGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdAppbmRleCAwMmFhYWIzLi4wOGI3NGE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKQEAgLTE2NCw3ICsxNjQsNyBAQAogLi4gZnVuY3Rpb246OiBnZXRfcHl0aG9uX3ZlcnNpb24oKQogCiAgICBSZXR1cm4gdGhlIGBgTUFKT1IuTUlOT1JgYCBQeXRob24gdmVyc2lvbiBudW1iZXIgYXMgYSBzdHJpbmcuICBTaW1pbGFyIHRvCi0gICBgYHN5cy52ZXJzaW9uWzozXWBgLgorICAgYGAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml1gYC4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF9wbGF0Zm9ybSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0IGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAppbmRleCBiOTUwZTQxLi5mOWM1MTUzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKQEAgLTQzLDYgKzQzLDE3IEBACiAgICA6ZXhjOmBFT0ZFcnJvcmAgd2hlbiB0aGUgZW5kIG9mIHRoZSBjb25uZWN0aW9uIGlzIHJlYWQsIGJlY2F1c2UgdGhleSBjYW4gcmV0dXJuCiAgICBhbiBlbXB0eSBzdHJpbmcgZm9yIG90aGVyIHJlYXNvbnMuICBTZWUgdGhlIGluZGl2aWR1YWwgZGVzY3JpcHRpb25zIGJlbG93LgogCisgICBBIDpjbGFzczpgVGVsbmV0YCBvYmplY3QgaXMgYSBjb250ZXh0IG1hbmFnZXIgYW5kIGNhbiBiZSB1c2VkIGluIGEKKyAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuICBXaGVuIHRoZSA6a2V5d29yZDpgd2l0aGAgYmxvY2sgZW5kcywgdGhlCisgICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBpcyBjYWxsZWQ6OgorCisgICAgICAgPj4+IGZyb20gdGVsbmV0bGliIGltcG9ydCBUZWxuZXQKKyAgICAgICA+Pj4gd2l0aCBUZWxuZXQoJ2xvY2FsaG9zdCcsIDIzKSBhcyB0bjoKKyAgICAgICAuLi4gICAgIHRuLmludGVyYWN0KCkKKyAgICAgICAuLi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgQ29udGV4dCBtYW5hZ2VyIHN1cHBvcnQgYWRkZWQKKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdAppbmRleCA1OTU3N2YwLi5mYWIzZTFmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXN0LnJzdApAQCAtNTgyLDYgKzU4Miw0OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIAorLi4gZnVuY3Rpb246OiBjaGVja19fYWxsX18odGVzdF9jYXNlLCBtb2R1bGUsIG5hbWVfb2ZfbW9kdWxlPU5vbmUsIGV4dHJhPSgpLCBibGFja2xpc3Q9KCkpCisKKyAgIEFzc2VydCB0aGF0IHRoZSBgYF9fYWxsX19gYCB2YXJpYWJsZSBvZiAqbW9kdWxlKiBjb250YWlucyBhbGwgcHVibGljIG5hbWVzLgorCisgICBUaGUgbW9kdWxlJ3MgcHVibGljIG5hbWVzIChpdHMgQVBJKSBhcmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseQorICAgYmFzZWQgb24gd2hldGhlciB0aGV5IG1hdGNoIHRoZSBwdWJsaWMgbmFtZSBjb252ZW50aW9uIGFuZCB3ZXJlIGRlZmluZWQgaW4KKyAgICptb2R1bGUqLgorCisgICBUaGUgKm5hbWVfb2ZfbW9kdWxlKiBhcmd1bWVudCBjYW4gc3BlY2lmeSAoYXMgYSBzdHJpbmcgb3IgdHVwbGUgdGhlcmVvZikgd2hhdAorICAgbW9kdWxlKHMpIGFuIEFQSSBjb3VsZCBiZSBkZWZpbmVkIGluIGluIG9yZGVyIHRvIGJlIGRldGVjdGVkIGFzIGEgcHVibGljCisgICBBUEkuIE9uZSBjYXNlIGZvciB0aGlzIGlzIHdoZW4gKm1vZHVsZSogaW1wb3J0cyBwYXJ0IG9mIGl0cyBwdWJsaWMgQVBJIGZyb20KKyAgIG90aGVyIG1vZHVsZXMsIHBvc3NpYmx5IGEgQyBiYWNrZW5kIChsaWtlIGBgY3N2YGAgYW5kIGl0cyBgYF9jc3ZgYCkuCisKKyAgIFRoZSAqZXh0cmEqIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IHdvdWxkbid0IG90aGVyd2lzZSBiZSBhdXRvbWF0aWNhbGx5CisgICBkZXRlY3RlZCBhcyAicHVibGljIiwgbGlrZSBvYmplY3RzIHdpdGhvdXQgYSBwcm9wZXIgYGBfX21vZHVsZV9fYGAKKyAgIGF0dHJpYnV0ZS4gSWYgcHJvdmlkZWQsIGl0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgb25lcy4KKworICAgVGhlICpibGFja2xpc3QqIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IG11c3Qgbm90IGJlIHRyZWF0ZWQgYXMgcGFydCBvZgorICAgdGhlIHB1YmxpYyBBUEkgZXZlbiB0aG91Z2ggdGhlaXIgbmFtZXMgaW5kaWNhdGUgb3RoZXJ3aXNlLgorCisgICBFeGFtcGxlIHVzZTo6CisKKyAgICAgIGltcG9ydCBiYXIKKyAgICAgIGltcG9ydCBmb28KKyAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgIGNsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmb28pCisKKyAgICAgIGNsYXNzIE90aGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgZXh0cmEgPSB7J0JBUl9DT05TVCcsICdGT09fQ09OU1QnfQorICAgICAgICAgICAgICBibGFja2xpc3QgPSB7J2Jheid9ICAjIFVuZG9jdW1lbnRlZCBuYW1lLgorICAgICAgICAgICAgICAjIGJhciBpbXBvcnRzIHBhcnQgb2YgaXRzIEFQSSBmcm9tIF9iYXIuCisgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGJhciwgKCdiYXInLCAnX2JhcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4YywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1lLnJzdCBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CmluZGV4IGU2NjI2ZjIuLmFlMTdmNmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWUucnN0CkBAIC04Myw2ICs4MywxMCBAQAogICAgICBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgd2hlbiBwbGF0Zm9ybSBzdXBwb3J0cyBjb3JyZXNwb25kaW5nCiAgICAgIGBgc3RydWN0IHRtYGAgbWVtYmVycy4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICBUaGUgOmNsYXNzOmBzdHJ1Y3RfdGltZWAgYXR0cmlidXRlcyA6YXR0cjpgdG1fZ210b2ZmYCBhbmQgOmF0dHI6YHRtX3pvbmVgCisgICAgIGFyZSBub3cgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuCisKICogVXNlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGNvbnZlcnQgYmV0d2VlbiB0aW1lIHJlcHJlc2VudGF0aW9uczoKIAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC01NjYsMTAgKzU3MCw2IEBACiAgICA6Y2xhc3M6YHN0cnVjdF90aW1lYCwgb3IgaGF2aW5nIGVsZW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlLCBhCiAgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KIAotICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICA6YXR0cjpgdG1fZ210b2ZmYCBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMKLSAgICAgd2l0aCBDIGxpYnJhcnkgc3VwcG9ydGluZyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4gYGBzdHJ1Y3QgdG1gYC4KLQogLi4gZnVuY3Rpb246OiB0aW1lKCkKIAogICAgUmV0dXJuIHRoZSB0aW1lIGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIGFzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgpAQCAtNjM3LDExICs2MzcsMTEgQEAKICAgICAgICAgIGl0IGlzIHBvc3NpYmxlIHRvIHJlZmVyIHRvIEZlYnJ1YXJ5IDI5LgogCiAgICAgICA6c2FtcDpgTXttfS57bn0ue2R9YAotICAgICAgICAgVGhlICpkKid0aCBkYXkgKDAgPD0gKmQqIDw9IDYpIG9yIHdlZWsgKm4qIG9mIG1vbnRoICptKiBvZiB0aGUgeWVhciAoMQorICAgICAgICAgVGhlICpkKid0aCBkYXkgKDAgPD0gKmQqIDw9IDYpIG9mIHdlZWsgKm4qIG9mIG1vbnRoICptKiBvZiB0aGUgeWVhciAoMQogICAgICAgICAgPD0gKm4qIDw9IDUsIDEgPD0gKm0qIDw9IDEyLCB3aGVyZSB3ZWVrIDUgbWVhbnMgInRoZSBsYXN0ICpkKiBkYXkgaW4KICAgICAgICAgIG1vbnRoICptKiIgd2hpY2ggbWF5IG9jY3VyIGluIGVpdGhlciB0aGUgZm91cnRoIG9yIHRoZSBmaWZ0aAogICAgICAgICAgd2VlaykuIFdlZWsgMSBpcyB0aGUgZmlyc3Qgd2VlayBpbiB3aGljaCB0aGUgKmQqJ3RoIGRheSBvY2N1cnMuIERheQotICAgICAgICAgemVybyBpcyBTdW5kYXkuCisgICAgICAgICB6ZXJvIGlzIGEgU3VuZGF5LgogCiAgICAgICBgYHRpbWVgYCBoYXMgdGhlIHNhbWUgZm9ybWF0IGFzIGBgb2Zmc2V0YGAgZXhjZXB0IHRoYXQgbm8gbGVhZGluZyBzaWduCiAgICAgICAoJy0nIG9yICcrJykgaXMgYWxsb3dlZC4gVGhlIGRlZmF1bHQsIGlmIHRpbWUgaXMgbm90IGdpdmVuLCBpcyAwMjowMDowMC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CmluZGV4IDU3YTQ4MzQuLjNiNzcyNzYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdApAQCAtMTAwLDggKzEwMCw4IEBACiAgICBjYW4gYmUgY29udHJvbGxlZCBieSBwYXNzaW5nIGEgbmFtZXNwYWNlIHRvICpnbG9iYWxzKi4KIAogICAgVG8gbWVhc3VyZSB0aGUgZXhlY3V0aW9uIHRpbWUgb2YgdGhlIGZpcnN0IHN0YXRlbWVudCwgdXNlIHRoZSA6bWV0aDpgLnRpbWVpdGAKLSAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgbWV0aG9kIGlzIGEgY29udmVuaWVuY2UgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAKLSAgIG11bHRpcGxlIHRpbWVzIGFuZCByZXR1cm4gYSBsaXN0IG9mIHJlc3VsdHMuCisgICBtZXRob2QuICBUaGUgOm1ldGg6YC5yZXBlYXRgIGFuZCA6bWV0aDpgLmF1dG9yYW5nZWAgbWV0aG9kcyBhcmUgY29udmVuaWVuY2UKKyAgIG1ldGhvZHMgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAgbXVsdGlwbGUgdGltZXMuCiAKICAgIFRoZSBleGVjdXRpb24gdGltZSBvZiAqc2V0dXAqIGlzIGV4Y2x1ZGVkIGZyb20gdGhlIG92ZXJhbGwgdGltZWQgZXhlY3V0aW9uIHJ1bi4KIApAQCAtMTM0LDYgKzEzNCwyMyBAQAogICAgICAgICAgICAgdGltZWl0LlRpbWVyKCdmb3IgaSBpbiByYW5nZSgxMCk6IG9jdChpKScsICdnYy5lbmFibGUoKScpLnRpbWVpdCgpCiAKIAorICAgIC4uIG1ldGhvZDo6IFRpbWVyLmF1dG9yYW5nZShjYWxsYmFjaz1Ob25lKQorCisgICAgICAgQXV0b21hdGljYWxseSBkZXRlcm1pbmUgaG93IG1hbnkgdGltZXMgdG8gY2FsbCA6bWV0aDpgLnRpbWVpdGAuCisKKyAgICAgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjYWxscyA6bWV0aDpgLnRpbWVpdGAgcmVwZWF0ZWRseQorICAgICAgIHNvIHRoYXQgdGhlIHRvdGFsIHRpbWUgPj0gMC4yIHNlY29uZCwgcmV0dXJuaW5nIHRoZSBldmVudHVhbAorICAgICAgIChudW1iZXIgb2YgbG9vcHMsIHRpbWUgdGFrZW4gZm9yIHRoYXQgbnVtYmVyIG9mIGxvb3BzKS4gSXQgY2FsbHMKKyAgICAgICA6bWV0aDpgLnRpbWVpdGAgd2l0aCAqbnVtYmVyKiBzZXQgdG8gc3VjY2Vzc2l2ZSBwb3dlcnMgb2YgdGVuICgxMCwKKyAgICAgICAxMDAsIDEwMDAsIC4uLikgdXAgdG8gYSBtYXhpbXVtIG9mIG9uZSBiaWxsaW9uLCB1bnRpbCB0aGUgdGltZSB0YWtlbgorICAgICAgIGlzIGF0IGxlYXN0IDAuMiBzZWNvbmQsIG9yIHRoZSBtYXhpbXVtIGlzIHJlYWNoZWQuCisKKyAgICAgICAgSWYgKmNhbGxiYWNrKiBpcyBnaXZlbiBhbmQgaXMgbm90IGBgTm9uZWBgLCBpdCB3aWxsIGJlIGNhbGxlZCBhZnRlcgorICAgICAgICBlYWNoIHRyaWFsIHdpdGggdHdvIGFyZ3VtZW50czogYGBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogICAgLi4gbWV0aG9kOjogVGltZXIucmVwZWF0KHJlcGVhdD0zLCBudW1iZXI9MTAwMDAwMCkKIAogICAgICAgQ2FsbCA6bWV0aDpgLnRpbWVpdGAgYSBmZXcgdGltZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QgYi9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKaW5kZXggNDFmMjBkZC4uMTFlZDc1NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdApAQCAtMTAsNiArMTAsMTAgQEAKIAogLi4gaW5kZXg6OiBzaW5nbGU6IFRpeAogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBUaGlzIFRrIGV4dGVuc2lvbiBpcyB1bm1haW50YWluZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBuZXcgY29kZS4gIFVzZQorICAgOm1vZDpgdGtpbnRlci50dGtgIGluc3RlYWQuCisKIC0tLS0tLS0tLS0tLS0tCiAKIFRoZSA6bW9kOmB0a2ludGVyLnRpeGAgKFRrIEludGVyZmFjZSBFeHRlbnNpb24pIG1vZHVsZSBwcm92aWRlcyBhbiBhZGRpdGlvbmFsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0IGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAppbmRleCAzYzFkOWJiLi4wNjZlZTk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKQEAgLTI5MSw2ICsyOTEsMjAgQEAKICAgICAgIG9mIHR1cGxlcy4gRWFjaCB0dXBsZSBzaG91bGQgYmUgYSA0LXR1cGxlIHdpdGggZmlsZW5hbWUsIGxpbmVubywgbmFtZSwKICAgICAgIGxpbmUgYXMgdGhlIGVsZW1lbnRzLgogCisgICAuLiBtZXRob2Q6OiBmb3JtYXQoKQorCisgICAgICBSZXR1cm5zIGEgbGlzdCBvZiBzdHJpbmdzIHJlYWR5IGZvciBwcmludGluZy4gIEVhY2ggc3RyaW5nIGluIHRoZQorICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCisgICAgICBFYWNoIHN0cmluZyBlbmRzIGluIGEgbmV3bGluZTsgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcyB3aXRoIHNvdXJjZSB0ZXh0IGxpbmVzLgorCisgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgIHJlcGV0aXRpb25zIGFyZSBzaG93biwgZm9sbG93ZWQgYnkgYSBzdW1tYXJ5IGxpbmUgc3RhdGluZyB0aGUgZXhhY3QKKyAgICAgIG51bWJlciBvZiBmdXJ0aGVyIHJlcGV0aXRpb25zLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgZnJhbWVzIGFyZSBub3cgYWJicmV2aWF0ZWQuCisKIAogOmNsYXNzOmBGcmFtZVN1bW1hcnlgIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKaW5kZXggM2EwYjFlMC4uZjU2ZjI3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdApAQCAtMzU5LDEwICszNTksMzIgQEAKICAgIFNlZSBhbHNvIHRoZSA6ZnVuYzpgZ2V0X29iamVjdF90cmFjZWJhY2tgIGZ1bmN0aW9uLgogCiAKK0RvbWFpbkZpbHRlcgorXl5eXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogRG9tYWluRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZG9tYWluOiBpbnQpCisKKyAgIEZpbHRlciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBieSB0aGVpciBhZGRyZXNzIHNwYWNlIChkb21haW4pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCisKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgbWF0Y2ggbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYEZhbHNlYGAgKGV4Y2x1ZGUpLCBtYXRjaCBtZW1vcnkgYmxvY2tzIG5vdCBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBkb21haW4KKworICAgICAgQWRkcmVzcyBzcGFjZSBvZiBhIG1lbW9yeSBibG9jayAoYGBpbnRgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KKworCiBGaWx0ZXIKIF5eXl5eXgogCi0uLiBjbGFzczo6IEZpbHRlcihpbmNsdXNpdmU6IGJvb2wsIGZpbGVuYW1lX3BhdHRlcm46IHN0ciwgbGluZW5vOiBpbnQ9Tm9uZSwgYWxsX2ZyYW1lczogYm9vbD1GYWxzZSkKKy4uIGNsYXNzOjogRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZmlsZW5hbWVfcGF0dGVybjogc3RyLCBsaW5lbm86IGludD1Ob25lLCBhbGxfZnJhbWVzOiBib29sPUZhbHNlLCBkb21haW46IGludD1Ob25lKQogCiAgICBGaWx0ZXIgb24gdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MuCiAKQEAgLTM4Miw5ICs0MDQsMTcgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgYGAnLnB5bydgYCBmaWxlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVwbGFjZWQgd2l0aCBgYCcucHknYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgOmF0dHI6YGRvbWFpbmAgYXR0cmlidXRlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRvbWFpbgorCisgICAgICBBZGRyZXNzIHNwYWNlIG9mIGEgbWVtb3J5IGJsb2NrIChgYGludGBgIG9yIGBgTm9uZWBgKS4KKwogICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCiAKLSAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgb25seSB0cmFjZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IG1hdGNoIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCiAgICAgICBpbiBhIGZpbGUgd2l0aCBhIG5hbWUgbWF0Y2hpbmcgOmF0dHI6YGZpbGVuYW1lX3BhdHRlcm5gIGF0IGxpbmUgbnVtYmVyCiAgICAgICA6YXR0cjpgbGluZW5vYC4KIApAQCAtMzk5LDcgKzQyOSw3IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IGZpbGVuYW1lX3BhdHRlcm4KIAotICAgICAgRmlsZW5hbWUgcGF0dGVybiBvZiB0aGUgZmlsdGVyIChgYHN0cmBgKS4KKyAgICAgIEZpbGVuYW1lIHBhdHRlcm4gb2YgdGhlIGZpbHRlciAoYGBzdHJgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KIAogICAgLi4gYXR0cmlidXRlOjogYWxsX2ZyYW1lcwogCkBAIC00NjIsMTQgKzQ5MiwxNyBAQAogICAgLi4gbWV0aG9kOjogZmlsdGVyX3RyYWNlcyhmaWx0ZXJzKQogCiAgICAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGZpbHRlcmVkIDphdHRyOmB0cmFjZXNgCi0gICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqCi0gICAgICBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YKLSAgICAgIHRoZSB0cmFjZXMuCisgICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YERvbWFpbkZpbHRlcmAgYW5kCisgICAgICA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhIG5ldworICAgICAgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KIAogICAgICAgQWxsIGluY2x1c2l2ZSBmaWx0ZXJzIGFyZSBhcHBsaWVkIGF0IG9uY2UsIGEgdHJhY2UgaXMgaWdub3JlZCBpZiBubwogICAgICAgaW5jbHVzaXZlIGZpbHRlcnMgbWF0Y2ggaXQuIEEgdHJhY2UgaXMgaWdub3JlZCBpZiBhdCBsZWFzdCBvbmUgZXhjbHVzaXZlCiAgICAgICBmaWx0ZXIgbWF0Y2hlcyBpdC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIDpjbGFzczpgRG9tYWluRmlsdGVyYCBpbnN0YW5jZXMgYXJlIG5vdyBhbHNvIGFjY2VwdGVkIGluICpmaWx0ZXJzKi4KKwogCiAgICAuLiBjbGFzc21ldGhvZDo6IGxvYWQoZmlsZW5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAppbmRleCAxMThiYzRjLi44OThiOTVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CkBAIC01NSw2ICs1NSwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBgYG5hbWVzcGFjZWBgIGVsZW1lbnQgb2YgdGhlIHJldHVybmVkCisgICAgICB0dXBsZSBoYXMgY2hhbmdlZC4gIE5vdyBhbiBpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nIGlzCisgICAgICB1c2VkIHdoZW4gdGhlIG1ldGFjbGFzcyBkb2VzIG5vdCBoYXZlIGEgYGBfX3ByZXBhcmVfX2BgIG1ldGhvZCwKKwogLi4gc2VlYWxzbzo6CiAKICAgIDpyZWY6YG1ldGFjbGFzc2VzYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKaW5kZXggZGRlNzA1ZS4uMTZlN2I4MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBpbmcucnN0CkBAIC0xMCw4ICsxMCw4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAuICBUaGUgbW9zdAotZnVuZGFtZW50YWwgc3VwcG9ydCBjb25zaXN0cyBvZiB0aGUgdHlwZXMgOmRhdGE6YEFueWAsIDpkYXRhOmBVbmlvbmAsCitUaGlzIG1vZHVsZSBzdXBwb3J0cyB0eXBlIGhpbnRzIGFzIHNwZWNpZmllZCBieSA6cGVwOmA0ODRgIGFuZCA6cGVwOmA1MjZgLgorVGhlIG1vc3QgZnVuZGFtZW50YWwgc3VwcG9ydCBjb25zaXN0cyBvZiB0aGUgdHlwZXMgOmRhdGE6YEFueWAsIDpkYXRhOmBVbmlvbmAsCiA6ZGF0YTpgVHVwbGVgLCA6ZGF0YTpgQ2FsbGFibGVgLCA6Y2xhc3M6YFR5cGVWYXJgLCBhbmQKIDpjbGFzczpgR2VuZXJpY2AuICBGb3IgZnVsbCBzcGVjaWZpY2F0aW9uIHBsZWFzZSBzZWUgOnBlcDpgNDg0YC4gIEZvcgogYSBzaW1wbGlmaWVkIGludHJvZHVjdGlvbiB0byB0eXBlIGhpbnRzIHNlZSA6cGVwOmA0ODNgLgpAQCAtNTIzLDcgKzUyMywxMyBAQAogCiAgICBBbiBhbGlhcyB0byA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TaXplZGAKIAotLi4gY2xhc3M6OiBBYnN0cmFjdFNldChTaXplZCwgSXRlcmFibGVbVF9jb10sIENvbnRhaW5lcltUX2NvXSkKKy4uIGNsYXNzOjogQ29sbGVjdGlvbihTaXplZCwgSXRlcmFibGVbVF9jb10sIENvbnRhaW5lcltUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuQ29sbGVjdGlvbmAKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGNsYXNzOjogQWJzdHJhY3RTZXQoU2l6ZWQsIENvbGxlY3Rpb25bVF9jb10pCiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXRgLgogCkBAIC01MzEsNyArNTM3LDcgQEAKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXRgLgogCi0uLiBjbGFzczo6IE1hcHBpbmcoU2l6ZWQsIEl0ZXJhYmxlW0tUXSwgQ29udGFpbmVyW0tUXSwgR2VuZXJpY1tWVF9jb10pCisuLiBjbGFzczo6IE1hcHBpbmcoU2l6ZWQsIENvbGxlY3Rpb25bS1RdLCBHZW5lcmljW1ZUX2NvXSkKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk1hcHBpbmdgLgogCkBAIC01MzksNyArNTQ1LDcgQEAKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYC4KIAotLi4gY2xhc3M6OiBTZXF1ZW5jZShTaXplZCwgSXRlcmFibGVbVF9jb10sIENvbnRhaW5lcltUX2NvXSkKKy4uIGNsYXNzOjogU2VxdWVuY2UoUmV2ZXJzaWJsZVtUX2NvXSwgQ29sbGVjdGlvbltUX2NvXSkKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlYC4KIApAQCAtNjE5LDYgKzYyNSwxMiBAQAogCiAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkFzeW5jSXRlcmF0b3JgLgogCisuLiBjbGFzczo6IENvbnRleHRNYW5hZ2VyKEdlbmVyaWNbVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGNsYXNzOjogRGljdChkaWN0LCBNdXRhYmxlTWFwcGluZ1tLVCwgVlRdKQogCiAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGRpY3RgLgpAQCAtNjk0LDIzICs3MDYsMzIgQEAKICAgIGBgUGF0dGVybltzdHJdYGAsIGBgUGF0dGVybltieXRlc11gYCwgYGBNYXRjaFtzdHJdYGAsIG9yCiAgICBgYE1hdGNoW2J5dGVzXWBgLgogCi0uLiBmdW5jdGlvbjo6IE5hbWVkVHVwbGUodHlwZW5hbWUsIGZpZWxkcykKKy4uIGNsYXNzOjogTmFtZWRUdXBsZQogCiAgICBUeXBlZCB2ZXJzaW9uIG9mIG5hbWVkdHVwbGUuCiAKICAgIFVzYWdlOjoKIAotICAgICAgIEVtcGxveWVlID0gdHlwaW5nLk5hbWVkVHVwbGUoJ0VtcGxveWVlJywgWygnbmFtZScsIHN0ciksICgnaWQnLCBpbnQpXSkKKyAgICAgICBjbGFzcyBFbXBsb3llZShOYW1lZFR1cGxlKToKKyAgICAgICAgICAgbmFtZTogc3RyCisgICAgICAgICAgIGlkOiBpbnQKIAogICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvOjoKIAogICAgICAgIEVtcGxveWVlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnRW1wbG95ZWUnLCBbJ25hbWUnLCAnaWQnXSkKIAotICAgVGhlIHJlc3VsdGluZyBjbGFzcyBoYXMgb25lIGV4dHJhIGF0dHJpYnV0ZTogX2ZpZWxkX3R5cGVzLAorICAgVGhlIHJlc3VsdGluZyBjbGFzcyBoYXMgb25lIGV4dHJhIGF0dHJpYnV0ZTogYGBfZmllbGRfdHlwZXNgYCwKICAgIGdpdmluZyBhIGRpY3QgbWFwcGluZyBmaWVsZCBuYW1lcyB0byB0eXBlcy4gIChUaGUgZmllbGQgbmFtZXMKLSAgIGFyZSBpbiB0aGUgX2ZpZWxkcyBhdHRyaWJ1dGUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIG5hbWVkdHVwbGUKKyAgIGFyZSBpbiB0aGUgYGBfZmllbGRzYGAgYXR0cmlidXRlLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBuYW1lZHR1cGxlCiAgICBBUEkuKQogCisgICBCYWNrd2FyZC1jb21wYXRpYmxlIHVzYWdlOjoKKworICAgICAgIEVtcGxveWVlID0gTmFtZWRUdXBsZSgnRW1wbG95ZWUnLCBbKCduYW1lJywgc3RyKSwgKCdpZCcsIGludCldKQorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgOnBlcDpgNTI2YCB2YXJpYWJsZSBhbm5vdGF0aW9uIHN5bnRheC4KKwogLi4gZnVuY3Rpb246OiBOZXdUeXBlKHR5cCkKIAogICAgQSBoZWxwZXIgZnVuY3Rpb24gdG8gaW5kaWNhdGUgYSBkaXN0aW5jdCB0eXBlcyB0byBhIHR5cGVjaGVja2VyLApAQCAtODgwLDggKzkwMSw4IEBACiAgICBhbmQgc2hvdWxkIG5vdCBiZSBzZXQgb24gaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MuIFVzYWdlOjoKIAogICAgICAgY2xhc3MgU3RhcnNoaXA6Ci0gICAgICAgICAgc3RhdHMgPSB7fSAgIyB0eXBlOiBDbGFzc1ZhcltEaWN0W3N0ciwgaW50XV0gIyBjbGFzcyB2YXJpYWJsZQotICAgICAgICAgIGRhbWFnZSA9IDEwICMgdHlwZTogaW50ICAgICAgICAgICAgICAgICAgICAgICMgaW5zdGFuY2UgdmFyaWFibGUKKyAgICAgICAgICBzdGF0czogQ2xhc3NWYXJbRGljdFtzdHIsIGludF1dID0ge30gIyBjbGFzcyB2YXJpYWJsZQorICAgICAgICAgIGRhbWFnZTogaW50ID0gMTAgICAgICAgICAgICAgICAgICAgICAjIGluc3RhbmNlIHZhcmlhYmxlCiAKICAgIDpkYXRhOmBDbGFzc1ZhcmAgYWNjZXB0cyBvbmx5IHR5cGVzIGFuZCBjYW5ub3QgYmUgZnVydGhlciBzdWJzY3JpYmVkLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmRvYy5yc3QgYi9Eb2MvbGlicmFyeS91bmRvYy5yc3QKaW5kZXggMjA4MzBlMi4uMjQ0NDA4MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5kb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuZG9jLnJzdApAQCAtMjAsNyArMjAsNyBAQAogZG9jdW1lbnRlZCBiZXlvbmQgdGhpcyBtZW50aW9uLiAgVGhlcmUncyBsaXR0bGUgbmVlZCB0byBkb2N1bWVudCB0aGVzZS4KIAogOm1vZDpgbnRwYXRoYAotICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFdpbjMyLCBXaW42NCwgYW5kIFdpbkNFIHBsYXRmb3Jtcy4KKyAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBXaW4zMiBhbmQgV2luNjQgcGxhdGZvcm1zLgogCiA6bW9kOmBwb3NpeHBhdGhgCiAgICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gUE9TSVguCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggNmNkODEzMi4uNjQzMTgwOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTcsOCArMTcsOCBAQAogCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIChVQ0QpIHdoaWNoCiBkZWZpbmVzIGNoYXJhY3RlciBwcm9wZXJ0aWVzIGZvciBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLiBUaGUgZGF0YSBjb250YWluZWQgaW4KLXRoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDguMC4wCi08aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkPmBfLgordGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOS4wLjAKKzxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2Q+YF8uCiAKIFRoZSBtb2R1bGUgdXNlcyB0aGUgc2FtZSBuYW1lcyBhbmQgc3ltYm9scyBhcyBkZWZpbmVkIGJ5IFVuaWNvZGUKIFN0YW5kYXJkIEFubmV4ICM0NCwgYCJVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSIKQEAgLTE2OCw2ICsxNjgsNiBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOS4wLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAppbmRleCBlZjMwYzAxLi4zY2MyMmZkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdApAQCAtMjYyLDYgKzI2MiwzNCBAQAogICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4gU2VlIHRoZQogICAgIDptZXRoOmBjb25maWd1cmVfbW9ja2AgbWV0aG9kIGZvciBkZXRhaWxzLgogCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBhdCBsZWFzdCBvbmNlLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWQoKQorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF9vbmNlKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZC5hc3NlcnRfY2FsbGVkX29uY2UoKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yOiBFeHBlY3RlZCAnbWV0aG9kJyB0byBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKICAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQogCkBAIC0zMzksNyArMzY3LDcgQEAKICAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKIAotICAgIC4uIG1ldGhvZDo6IHJlc2V0X21vY2soKQorICAgIC4uIG1ldGhvZDo6IHJlc2V0X21vY2soKiwgcmV0dXJuX3ZhbHVlPUZhbHNlLCBzaWRlX2VmZmVjdD1GYWxzZSkKIAogICAgICAgICBUaGUgcmVzZXRfbW9jayBtZXRob2QgcmVzZXRzIGFsbCB0aGUgY2FsbCBhdHRyaWJ1dGVzIG9uIGEgbW9jayBvYmplY3Q6CiAKQEAgLTM1MSwxMiArMzc5LDIwIEBACiAgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKICAgICAgICAgICAgIEZhbHNlCiAKKyAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICAgQWRkZWQgdHdvIGtleXdvcmQgb25seSBhcmd1bWVudCB0byB0aGUgcmVzZXRfbW9jayBmdW5jdGlvbi4KKwogICAgICAgICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlcmUgeW91IHdhbnQgdG8gbWFrZSBhIHNlcmllcyBvZiBhc3NlcnRpb25zIHRoYXQKICAgICAgICAgcmV1c2UgdGhlIHNhbWUgb2JqZWN0LiBOb3RlIHRoYXQgOm1ldGg6YHJlc2V0X21vY2tgICpkb2Vzbid0KiBjbGVhciB0aGUKICAgICAgICAgcmV0dXJuIHZhbHVlLCA6YXR0cjpgc2lkZV9lZmZlY3RgIG9yIGFueSBjaGlsZCBhdHRyaWJ1dGVzIHlvdSBoYXZlCi0gICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudC4gQ2hpbGQgbW9ja3MgYW5kIHRoZSByZXR1cm4gdmFsdWUgbW9jaworICAgICAgICBzZXQgdXNpbmcgbm9ybWFsIGFzc2lnbm1lbnQgYnkgZGVmYXVsdC4gSW4gY2FzZSB5b3Ugd2FudCB0byByZXNldAorICAgICAgICAqcmV0dXJuX3ZhbHVlKiBvciA6YXR0cjpgc2lkZV9lZmZlY3RgLCB0aGVuIHBhc3MgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgcGFyYW1ldGVyIGFzIGBgVHJ1ZWBgLiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCiAgICAgICAgIChpZiBhbnkpIGFyZSByZXNldCBhcyB3ZWxsLgogCisgICAgICAgIC4uIG5vdGU6OiAqcmV0dXJuX3ZhbHVlKiwgYW5kIDphdHRyOmBzaWRlX2VmZmVjdGAgYXJlIGtleXdvcmQgb25seQorICAgICAgICAgICAgICAgICAgYXJndW1lbnQuCisKIAogICAgIC4uIG1ldGhvZDo6IG1vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQ9RmFsc2UpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCBhYzEyMjRjLi5jMTNhNzMxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC0xMzkxLDkgKzEzOTEsOSBAQAogCiAgICAgICBBZGQgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYWZ0ZXIgOm1ldGg6YHRlYXJEb3duYCB0byBjbGVhbnVwIHJlc291cmNlcwogICAgICAgdXNlZCBkdXJpbmcgdGhlIHRlc3QuIEZ1bmN0aW9ucyB3aWxsIGJlIGNhbGxlZCBpbiByZXZlcnNlIG9yZGVyIHRvIHRoZQotICAgICAgb3JkZXIgdGhleSBhcmUgYWRkZWQgKExJRk8pLiBUaGV5IGFyZSBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzIGFuZAotICAgICAga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8gOm1ldGg6YGFkZENsZWFudXBgIHdoZW4gdGhleSBhcmUKLSAgICAgIGFkZGVkLgorICAgICAgb3JkZXIgdGhleSBhcmUgYWRkZWQgKDphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCkuICBUaGV5CisgICAgICBhcmUgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cyBhbmQga2V5d29yZCBhcmd1bWVudHMgcGFzc2VkIGludG8KKyAgICAgIDptZXRoOmBhZGRDbGVhbnVwYCB3aGVuIHRoZXkgYXJlIGFkZGVkLgogCiAgICAgICBJZiA6bWV0aDpgc2V0VXBgIGZhaWxzLCBtZWFuaW5nIHRoYXQgOm1ldGg6YHRlYXJEb3duYCBpcyBub3QgY2FsbGVkLAogICAgICAgdGhlbiBhbnkgY2xlYW51cCBmdW5jdGlvbnMgYWRkZWQgd2lsbCBzdGlsbCBiZSBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAppbmRleCA0OTliMjExLi42NzYzMjFiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKQEAgLTExNCw4ICsxMTQsOSBAQAogICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgfCBpZiBwcmVzZW50ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotICAgU2VlIHNlY3Rpb24gOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdAotICAgb2JqZWN0LgorICAgUmVhZGluZyB0aGUgOmF0dHI6YHBvcnRgIGF0dHJpYnV0ZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYKKyAgIGFuIGludmFsaWQgcG9ydCBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSTC4gIFNlZSBzZWN0aW9uCisgICA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0IG9iamVjdC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIElQdjYgVVJMIHBhcnNpbmcgY2FwYWJpbGl0aWVzLgpAQCAtMTI1LDYgKzEyNiwxMCBAQAogICAgICAgZmFsc2UpLCBpbiBhY2NvcmRhbmNlIHdpdGggOnJmYzpgMzk4NmAuICBQcmV2aW91c2x5LCBhIHdoaXRlbGlzdCBvZgogICAgICAgc2NoZW1lcyB0aGF0IHN1cHBvcnQgZnJhZ21lbnRzIGV4aXN0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPdXQtb2YtcmFuZ2UgcG9ydCBudW1iZXJzIG5vdyByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwgaW5zdGVhZCBvZgorICAgICAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuCisKIAogLi4gZnVuY3Rpb246OiBwYXJzZV9xcyhxcywga2VlcF9ibGFua192YWx1ZXM9RmFsc2UsIHN0cmljdF9wYXJzaW5nPUZhbHNlLCBlbmNvZGluZz0ndXRmLTgnLCBlcnJvcnM9J3JlcGxhY2UnKQogCkBAIC0yMjcsOCArMjMyLDEzIEBACiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICB8IGlmIHByZXNlbnQgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotICAgU2VlIHNlY3Rpb24gOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdAotICAgb2JqZWN0LgorICAgUmVhZGluZyB0aGUgOmF0dHI6YHBvcnRgIGF0dHJpYnV0ZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYKKyAgIGFuIGludmFsaWQgcG9ydCBpcyBzcGVjaWZpZWQgaW4gdGhlIFVSTC4gIFNlZSBzZWN0aW9uCisgICA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0IG9iamVjdC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE91dC1vZi1yYW5nZSBwb3J0IG51bWJlcnMgbm93IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpbnN0ZWFkIG9mCisgICAgICByZXR1cm5pbmcgOmNvbnN0OmBOb25lYC4KIAogCiAuLiBmdW5jdGlvbjo6IHVybHVuc3BsaXQocGFydHMpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKaW5kZXggNjE4YzY5ZC4uNDczZWZmYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdApAQCAtMzAsMTggKzMwLDkgQEAKICAgIE9wZW4gdGhlIFVSTCAqdXJsKiwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhCiAgICA6Y2xhc3M6YFJlcXVlc3RgIG9iamVjdC4KIAotICAgKmRhdGEqIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKLSAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gKmRhdGEqIG1heSBhbHNvIGJlIGFuCi0gICBpdGVyYWJsZSBvYmplY3QgYW5kIGluIHRoYXQgY2FzZSBDb250ZW50LUxlbmd0aCB2YWx1ZSBtdXN0IGJlIHNwZWNpZmllZCBpbgotICAgdGhlIGhlYWRlcnMuIEN1cnJlbnRseSBIVFRQIHJlcXVlc3RzIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKjsgdGhlCi0gICBIVFRQIHJlcXVlc3Qgd2lsbCBiZSBhIFBPU1QgaW5zdGVhZCBvZiBhIEdFVCB3aGVuIHRoZSAqZGF0YSogcGFyYW1ldGVyIGlzCi0gICBwcm92aWRlZC4KLQotICAgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUgc3RhbmRhcmQKLSAgIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuICBUaGUKLSAgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2Ugb2YKLSAgIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHRleHQgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQKLSAgIGJlIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCisgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gYmUgc2VudCB0byB0aGUKKyAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIFNlZSA6Y2xhc3M6YFJlcXVlc3RgCisgICBmb3IgZGV0YWlscy4KIAogICAgdXJsbGliLnJlcXVlc3QgbW9kdWxlIHVzZXMgSFRUUC8xLjEgYW5kIGluY2x1ZGVzIGBgQ29ubmVjdGlvbjpjbG9zZWBgIGhlYWRlcgogICAgaW4gaXRzIEhUVFAgcmVxdWVzdHMuCkBAIC0xMjAsNiArMTExLDEyIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4zCiAgICAgICAqY29udGV4dCogd2FzIGFkZGVkLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqY2FmaWxlKiwgKmNhcGF0aCogYW5kICpjYWRlZmF1bHQqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCiAKIC4uIGZ1bmN0aW9uOjogaW5zdGFsbF9vcGVuZXIob3BlbmVyKQogCkBAIC0xOTIsMTQgKzE4OSwyMSBAQAogCiAgICAqdXJsKiBzaG91bGQgYmUgYSBzdHJpbmcgY29udGFpbmluZyBhIHZhbGlkIFVSTC4KIAotICAgKmRhdGEqIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gc2VuZCB0byB0aGUKLSAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIEN1cnJlbnRseSBIVFRQIHJlcXVlc3RzIGFyZQotICAgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSo7IHRoZSBIVFRQIHJlcXVlc3Qgd2lsbCBiZSBhIFBPU1QgaW5zdGVhZCBvZiBhCi0gICBHRVQgd2hlbiB0aGUgKmRhdGEqIHBhcmFtZXRlciBpcyBwcm92aWRlZC4gICpkYXRhKiBzaG91bGQgYmUgYSBidWZmZXIgaW4gdGhlCi0gICBzdGFuZGFyZCA6bWltZXR5cGU6YGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgZm9ybWF0LgotICAgVGhlIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2Ugb2YKLSAgIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkIGJlCi0gICBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgorICAgKmRhdGEqIG11c3QgYmUgYW4gb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIHNlbmQgdG8gdGhlCisgICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBDdXJyZW50bHkgSFRUUAorICAgcmVxdWVzdHMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqLiAgVGhlIHN1cHBvcnRlZCBvYmplY3QKKyAgIHR5cGVzIGluY2x1ZGUgYnl0ZXMsIGZpbGUtbGlrZSBvYmplY3RzLCBhbmQgaXRlcmFibGVzLiAgSWYgbm8KKyAgIGBgQ29udGVudC1MZW5ndGhgYCBub3IgYGBUcmFuc2Zlci1FbmNvZGluZ2BgIGhlYWRlciBmaWVsZAorICAgaGFzIGJlZW4gcHJvdmlkZWQsIDpjbGFzczpgSFRUUEhhbmRsZXJgIHdpbGwgc2V0IHRoZXNlIGhlYWRlcnMgYWNjb3JkaW5nCisgICB0byB0aGUgdHlwZSBvZiAqZGF0YSouICBgYENvbnRlbnQtTGVuZ3RoYGAgd2lsbCBiZSB1c2VkIHRvIHNlbmQKKyAgIGJ5dGVzIG9iamVjdHMsIHdoaWxlIGBgVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRgYCBhcyBzcGVjaWZpZWQgaW4KKyAgIDpyZmM6YDcyMzBgLCBTZWN0aW9uIDMuMy4xIHdpbGwgYmUgdXNlZCB0byBzZW5kIGZpbGVzIGFuZCBvdGhlciBpdGVyYWJsZXMuCisKKyAgIEZvciBhbiBIVFRQIFBPU1QgcmVxdWVzdCBtZXRob2QsICpkYXRhKiBzaG91bGQgYmUgYSBidWZmZXIgaW4gdGhlCisgICBzdGFuZGFyZCA6bWltZXR5cGU6YGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgZm9ybWF0LiAgVGhlCisgICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gdGFrZXMgYSBtYXBwaW5nIG9yIHNlcXVlbmNlCisgICBvZiAyLXR1cGxlcyBhbmQgcmV0dXJucyBhbiBBU0NJSSBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZAorICAgYmUgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KIAogICAgKmhlYWRlcnMqIHNob3VsZCBiZSBhIGRpY3Rpb25hcnksIGFuZCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYKICAgIDptZXRoOmBhZGRfaGVhZGVyYCB3YXMgY2FsbGVkIHdpdGggZWFjaCBrZXkgYW5kIHZhbHVlIGFzIGFyZ3VtZW50cy4KQEAgLTIxMSw4ICsyMTUsMTAgQEAKICAgIDptb2Q6YHVybGxpYmAncyBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nIGlzCiAgICBgYCJQeXRob24tdXJsbGliLzIuNiJgYCAob24gUHl0aG9uIDIuNikuCiAKLSAgIEFuIGV4YW1wbGUgb2YgdXNpbmcgYGBDb250ZW50LVR5cGVgYCBoZWFkZXIgd2l0aCAqZGF0YSogYXJndW1lbnQgd291bGQgYmUKLSAgIHNlbmRpbmcgYSBkaWN0aW9uYXJ5IGxpa2UgYGB7IkNvbnRlbnQtVHlwZSI6ICJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQifWBgLgorICAgQW4gYXBwcm9wcmlhdGUgYGBDb250ZW50LVR5cGVgYCBoZWFkZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGlmIHRoZSAqZGF0YSoKKyAgIGFyZ3VtZW50IGlzIHByZXNlbnQuICBJZiB0aGlzIGhlYWRlciBoYXMgbm90IGJlZW4gcHJvdmlkZWQgYW5kICpkYXRhKgorICAgaXMgbm90IE5vbmUsIGBgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgYCB3aWxsCisgICBiZSBhZGRlZCBhcyBhIGRlZmF1bHQuCiAKICAgIFRoZSBmaW5hbCB0d28gYXJndW1lbnRzIGFyZSBvbmx5IG9mIGludGVyZXN0IGZvciBjb3JyZWN0IGhhbmRsaW5nCiAgICBvZiB0aGlyZC1wYXJ0eSBIVFRQIGNvb2tpZXM6CkBAIC0yMzUsMTUgKzI0MSwyOCBAQAogICAgKm1ldGhvZCogc2hvdWxkIGJlIGEgc3RyaW5nIHRoYXQgaW5kaWNhdGVzIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIHRoYXQKICAgIHdpbGwgYmUgdXNlZCAoZS5nLiBgYCdIRUFEJ2BgKS4gIElmIHByb3ZpZGVkLCBpdHMgdmFsdWUgaXMgc3RvcmVkIGluIHRoZQogICAgOmF0dHI6YH5SZXF1ZXN0Lm1ldGhvZGAgYXR0cmlidXRlIGFuZCBpcyB1c2VkIGJ5IDptZXRoOmBnZXRfbWV0aG9kKClgLgotICAgU3ViY2xhc3NlcyBtYXkgaW5kaWNhdGUgYSBkZWZhdWx0IG1ldGhvZCBieSBzZXR0aW5nIHRoZQorICAgVGhlIGRlZmF1bHQgaXMgYGAnR0VUJ2BgIGlmICpkYXRhKiBpcyBgYE5vbmVgYCBvciBgYCdQT1NUJ2BgIG90aGVyd2lzZS4KKyAgIFN1YmNsYXNzZXMgbWF5IGluZGljYXRlIGEgZGlmZmVyZW50IGRlZmF1bHQgbWV0aG9kIGJ5IHNldHRpbmcgdGhlCiAgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgaW4gdGhlIGNsYXNzIGl0c2VsZi4KIAorICAgLi4gbm90ZTo6CisgICAgICBUaGUgcmVxdWVzdCB3aWxsIG5vdCB3b3JrIGFzIGV4cGVjdGVkIGlmIHRoZSBkYXRhIG9iamVjdCBpcyB1bmFibGUKKyAgICAgIHRvIGRlbGl2ZXIgaXRzIGNvbnRlbnQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gYSBmaWxlIG9yIGFuIGl0ZXJhYmxlCisgICAgICB0aGF0IGNhbiBwcm9kdWNlIHRoZSBjb250ZW50IG9ubHkgb25jZSkgYW5kIHRoZSByZXF1ZXN0IGlzIHJldHJpZWQKKyAgICAgIGZvciBIVFRQIHJlZGlyZWN0cyBvciBhdXRoZW50aWNhdGlvbi4gIFRoZSAqZGF0YSogaXMgc2VudCB0byB0aGUKKyAgICAgIEhUVFAgc2VydmVyIHJpZ2h0IGF3YXkgYWZ0ZXIgdGhlIGhlYWRlcnMuICBUaGVyZSBpcyBubyBzdXBwb3J0IGZvcgorICAgICAgYSAxMDAtY29udGludWUgZXhwZWN0YXRpb24gaW4gdGhlIGxpYnJhcnkuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIGFyZ3VtZW50IGlzIGFkZGVkIHRvIHRoZSBSZXF1ZXN0IGNsYXNzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgRGVmYXVsdCA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIG1heSBiZSBpbmRpY2F0ZWQgYXQgdGhlIGNsYXNzIGxldmVsLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgRG8gbm90IHJhaXNlIGFuIGVycm9yIGlmIHRoZSBgYENvbnRlbnQtTGVuZ3RoYGAgaGFzIG5vdCBiZWVuCisgICAgICBwcm92aWRlZCBhbmQgKmRhdGEqIGlzIG5laXRoZXIgYGBOb25lYGAgbm9yIGEgYnl0ZXMgb2JqZWN0LgorICAgICAgRmFsbCBiYWNrIHRvIHVzZSBjaHVua2VkIHRyYW5zZmVyIGVuY29kaW5nIGluc3RlYWQuCiAKIC4uIGNsYXNzOjogT3BlbmVyRGlyZWN0b3IoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdAppbmRleCBiYTcwMWMzLi43ZDMxOTMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKQEAgLTU3LDE1ICs1Nyw0MSBAQAogICAgICAgU2V0cyB0aGUgdGltZSB0aGUgYGByb2JvdHMudHh0YGAgZmlsZSB3YXMgbGFzdCBmZXRjaGVkIHRvIHRoZSBjdXJyZW50CiAgICAgICB0aW1lLgogCisgICAuLiBtZXRob2Q6OiBjcmF3bF9kZWxheSh1c2VyYWdlbnQpCiAKLVRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgYmFzaWMgdXNlIG9mIHRoZSBSb2JvdEZpbGVQYXJzZXIgY2xhc3MuCisgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgYGBDcmF3bC1kZWxheWBgIHBhcmFtZXRlciBmcm9tIGBgcm9ib3RzLnR4dGBgCisgICAgICBmb3IgdGhlICp1c2VyYWdlbnQqIGluIHF1ZXN0aW9uLiAgSWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIgb3IgaXQKKyAgICAgIGRvZXNuJ3QgYXBwbHkgdG8gdGhlICp1c2VyYWdlbnQqIHNwZWNpZmllZCBvciB0aGUgYGByb2JvdHMudHh0YGAgZW50cnkKKyAgICAgIGZvciB0aGlzIHBhcmFtZXRlciBoYXMgaW52YWxpZCBzeW50YXgsIHJldHVybiBgYE5vbmVgYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIG1ldGhvZDo6IHJlcXVlc3RfcmF0ZSh1c2VyYWdlbnQpCisKKyAgICAgIFJldHVybnMgdGhlIGNvbnRlbnRzIG9mIHRoZSBgYFJlcXVlc3QtcmF0ZWBgIHBhcmFtZXRlciBmcm9tCisgICAgICBgYHJvYm90cy50eHRgYCBpbiB0aGUgZm9ybSBvZiBhIDpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAKKyAgICAgIGBgKHJlcXVlc3RzLCBzZWNvbmRzKWBgLiAgSWYgdGhlcmUgaXMgbm8gc3VjaCBwYXJhbWV0ZXIgb3IgaXQgZG9lc24ndAorICAgICAgYXBwbHkgdG8gdGhlICp1c2VyYWdlbnQqIHNwZWNpZmllZCBvciB0aGUgYGByb2JvdHMudHh0YGAgZW50cnkgZm9yIHRoaXMKKyAgICAgIHBhcmFtZXRlciBoYXMgaW52YWxpZCBzeW50YXgsIHJldHVybiBgYE5vbmVgYC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBiYXNpYyB1c2Ugb2YgdGhlIDpjbGFzczpgUm9ib3RGaWxlUGFyc2VyYAorY2xhc3M6OgogCiAgICA+Pj4gaW1wb3J0IHVybGxpYi5yb2JvdHBhcnNlcgogICAgPj4+IHJwID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCiAgICA+Pj4gcnAuc2V0X3VybCgiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vcm9ib3RzLnR4dCIpCiAgICA+Pj4gcnAucmVhZCgpCisgICA+Pj4gcnJhdGUgPSBycC5yZXF1ZXN0X3JhdGUoIioiKQorICAgPj4+IHJyYXRlLnJlcXVlc3RzCisgICAzCisgICA+Pj4gcnJhdGUuc2Vjb25kcworICAgMjAKKyAgID4+PiBycC5jcmF3bF9kZWxheSgiKiIpCisgICA2CiAgICA+Pj4gcnAuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cubXVzaS1jYWwuY29tL2NnaS1iaW4vc2VhcmNoP2NpdHk9U2FuK0ZyYW5jaXNjbyIpCiAgICBGYWxzZQogICAgPj4+IHJwLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS8iKQogICAgVHJ1ZQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS92ZW52LnJzdCBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CmluZGV4IDAzMjc3MzcuLjE3YzgwYzggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0CkBAIC0zNyw0NCArMzcsNTAgQEAKIAogLi4gX3ZlbnYtZGVmOgogCi0uLiBub3RlOjogQSB2aXJ0dWFsIGVudmlyb25tZW50IChhbHNvIGNhbGxlZCBhIGBgdmVudmBgKSBpcyBhIFB5dGhvbgotICAgZW52aXJvbm1lbnQgc3VjaCB0aGF0IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGxpYnJhcmllcyBhbmQgc2NyaXB0cwotICAgaW5zdGFsbGVkIGludG8gaXQgYXJlIGlzb2xhdGVkIGZyb20gdGhvc2UgaW5zdGFsbGVkIGluIG90aGVyIHZpcnR1YWwKLSAgIGVudmlyb25tZW50cywgYW5kIChieSBkZWZhdWx0KSBhbnkgbGlicmFyaWVzIGluc3RhbGxlZCBpbiBhICJzeXN0ZW0iIFB5dGhvbiwKLSAgIGkuZS4gb25lIHdoaWNoIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4KKy4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBQeXRob24gZW52aXJvbm1lbnQgc3VjaCB0aGF0IHRoZSBQeXRob24KKyAgIGludGVycHJldGVyLCBsaWJyYXJpZXMgYW5kIHNjcmlwdHMgaW5zdGFsbGVkIGludG8gaXQgYXJlIGlzb2xhdGVkIGZyb20gdGhvc2UKKyAgIGluc3RhbGxlZCBpbiBvdGhlciB2aXJ0dWFsIGVudmlyb25tZW50cywgYW5kIChieSBkZWZhdWx0KSBhbnkgbGlicmFyaWVzCisgICBpbnN0YWxsZWQgaW4gYSAic3lzdGVtIiBQeXRob24sIGkuZS4sIG9uZSB3aGljaCBpcyBpbnN0YWxsZWQgYXMgcGFydCBvZiB5b3VyCisgICBvcGVyYXRpbmcgc3lzdGVtLgogCi0gICBBIHZlbnYgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZSBmaWxlcyBhbmQKLSAgIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2ZW52LgorICAgQSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGEgZGlyZWN0b3J5IHRyZWUgd2hpY2ggY29udGFpbnMgUHl0aG9uIGV4ZWN1dGFibGUKKyAgIGZpbGVzIGFuZCBvdGhlciBmaWxlcyB3aGljaCBpbmRpY2F0ZSB0aGF0IGl0IGlzIGEgdmlydHVhbCBlbnZpcm9ubWVudC4KIAogICAgQ29tbW9uIGluc3RhbGxhdGlvbiB0b29scyBzdWNoIGFzIGBgU2V0dXB0b29sc2BgIGFuZCBgYHBpcGBgIHdvcmsgYXMKLSAgIGV4cGVjdGVkIHdpdGggdmVudnMgLSBpLmUuIHdoZW4gYSB2ZW52IGlzIGFjdGl2ZSwgdGhleSBpbnN0YWxsIFB5dGhvbgotICAgcGFja2FnZXMgaW50byB0aGUgdmVudiB3aXRob3V0IG5lZWRpbmcgdG8gYmUgdG9sZCB0byBkbyBzbyBleHBsaWNpdGx5LgorICAgZXhwZWN0ZWQgd2l0aCB2aXJ0dWFsIGVudmlyb25tZW50cy4gSW4gb3RoZXIgd29yZHMsIHdoZW4gYSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCBpcyBhY3RpdmUsIHRoZXkgaW5zdGFsbCBQeXRob24gcGFja2FnZXMgaW50byB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQgd2l0aG91dCBuZWVkaW5nIHRvIGJlIHRvbGQgdG8gZG8gc28gZXhwbGljaXRseS4KIAotICAgV2hlbiBhIHZlbnYgaXMgYWN0aXZlIChpLmUuIHRoZSB2ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUKLSAgIGF0dHJpYnV0ZXMgOmF0dHI6YHN5cy5wcmVmaXhgIGFuZCA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZQotICAgZGlyZWN0b3J5IG9mIHRoZSB2ZW52LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAotICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbgotICAgd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2ZW52LiBJZiBhIHZlbnYgaXMgbm90IGFjdGl2ZSwgdGhlbgotICAgOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAotICAgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCAodGhleQotICAgYWxsIHBvaW50IHRvIGEgbm9uLXZlbnYgUHl0aG9uIGluc3RhbGxhdGlvbikuCisgICBXaGVuIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmUgKGkuZS4sIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgUHl0aG9uCisgICBpbnRlcnByZXRlciBpcyBydW5uaW5nKSwgdGhlIGF0dHJpYnV0ZXMgOmF0dHI6YHN5cy5wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCwgd2hlcmVhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIG5vbi12aXJ0dWFsIGVudmlyb25tZW50IFB5dGhvbgorICAgaW5zdGFsbGF0aW9uIHdoaWNoIHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gSWYgYSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCBpcyBub3QgYWN0aXZlLCB0aGVuIDphdHRyOmBzeXMucHJlZml4YCBpcyB0aGUgc2FtZSBhcworICAgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIGlzIHRoZSBzYW1lIGFzCisgICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgICh0aGV5IGFsbCBwb2ludCB0byBhIG5vbi12aXJ0dWFsIGVudmlyb25tZW50CisgICBQeXRob24gaW5zdGFsbGF0aW9uKS4KIAotICAgV2hlbiBhIHZlbnYgaXMgYWN0aXZlLCBhbnkgb3B0aW9ucyB0aGF0IGNoYW5nZSB0aGUgaW5zdGFsbGF0aW9uIHBhdGggd2lsbCBiZQotICAgaWdub3JlZCBmcm9tIGFsbCBkaXN0dXRpbHMgY29uZmlndXJhdGlvbiBmaWxlcyB0byBwcmV2ZW50IHByb2plY3RzIGJlaW5nCi0gICBpbmFkdmVydGVudGx5IGluc3RhbGxlZCBvdXRzaWRlIG9mIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgV2hlbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZlLCBhbnkgb3B0aW9ucyB0aGF0IGNoYW5nZSB0aGUKKyAgIGluc3RhbGxhdGlvbiBwYXRoIHdpbGwgYmUgaWdub3JlZCBmcm9tIGFsbCBkaXN0dXRpbHMgY29uZmlndXJhdGlvbiBmaWxlcyB0bworICAgcHJldmVudCBwcm9qZWN0cyBiZWluZyBpbmFkdmVydGVudGx5IGluc3RhbGxlZCBvdXRzaWRlIG9mIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudC4KIAotICAgV2hlbiB3b3JraW5nIGluIGEgY29tbWFuZCBzaGVsbCwgdXNlcnMgY2FuIG1ha2UgYSB2ZW52IGFjdGl2ZSBieSBydW5uaW5nIGFuCi0gICBgYGFjdGl2YXRlYGAgc2NyaXB0IGluIHRoZSB2ZW52J3MgZXhlY3V0YWJsZXMgZGlyZWN0b3J5ICh0aGUgcHJlY2lzZSBmaWxlbmFtZQotICAgaXMgc2hlbGwtZGVwZW5kZW50KSwgd2hpY2ggcHJlcGVuZHMgdGhlIHZlbnYncyBkaXJlY3RvcnkgZm9yIGV4ZWN1dGFibGVzIHRvCi0gICB0aGUgYGBQQVRIYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoZSBydW5uaW5nIHNoZWxsLiBUaGVyZSBzaG91bGQgYmUgbm8KLSAgIG5lZWQgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcyB0byBhY3RpdmF0ZSBhIHZlbnYgLS0gc2NyaXB0cyBpbnN0YWxsZWQgaW50bwotICAgdmVudnMgaGF2ZSBhIHNoZWJhbmcgbGluZSB3aGljaCBwb2ludHMgdG8gdGhlIHZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIuIFRoaXMKLSAgIG1lYW5zIHRoYXQgdGhlIHNjcmlwdCB3aWxsIHJ1biB3aXRoIHRoYXQgaW50ZXJwcmV0ZXIgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUKLSAgIG9mIGBgUEFUSGBgLiBPbiBXaW5kb3dzLCBzaGViYW5nIGxpbmUgcHJvY2Vzc2luZyBpcyBzdXBwb3J0ZWQgaWYgeW91IGhhdmUgdGhlCi0gICBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MgaW5zdGFsbGVkICh0aGlzIHdhcyBhZGRlZCB0byBQeXRob24gaW4gMy4zIC0gc2VlCi0gICA6cGVwOmAzOTdgIGZvciBtb3JlIGRldGFpbHMpLiBUaHVzLCBkb3VibGUtY2xpY2tpbmcgYW4gaW5zdGFsbGVkIHNjcmlwdCBpbgotICAgYSBXaW5kb3dzIEV4cGxvcmVyIHdpbmRvdyBzaG91bGQgcnVuIHRoZSBzY3JpcHQgd2l0aCB0aGUgY29ycmVjdCBpbnRlcnByZXRlcgotICAgd2l0aG91dCB0aGVyZSBuZWVkaW5nIHRvIGJlIGFueSByZWZlcmVuY2UgdG8gaXRzIHZlbnYgaW4gYGBQQVRIYGAuCisgICBXaGVuIHdvcmtpbmcgaW4gYSBjb21tYW5kIHNoZWxsLCB1c2VycyBjYW4gbWFrZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgYWN0aXZlCisgICBieSBydW5uaW5nIGFuIGBgYWN0aXZhdGVgYCBzY3JpcHQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBleGVjdXRhYmxlcworICAgZGlyZWN0b3J5ICh0aGUgcHJlY2lzZSBmaWxlbmFtZSBpcyBzaGVsbC1kZXBlbmRlbnQpLCB3aGljaCBwcmVwZW5kcyB0aGUKKyAgIHZpcnR1YWwgZW52aXJvbm1lbnQncyBkaXJlY3RvcnkgZm9yIGV4ZWN1dGFibGVzIHRvIHRoZSBgYFBBVEhgYCBlbnZpcm9ubWVudAorICAgdmFyaWFibGUgZm9yIHRoZSBydW5uaW5nIHNoZWxsLiBUaGVyZSBzaG91bGQgYmUgbm8gbmVlZCBpbiBvdGhlcgorICAgY2lyY3Vtc3RhbmNlcyB0byBhY3RpdmF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnTigJRzY3JpcHRzIGluc3RhbGxlZCBpbnRvCisgICB2aXJ0dWFsIGVudmlyb25tZW50cyBoYXZlIGEgInNoZWJhbmciIGxpbmUgd2hpY2ggcG9pbnRzIHRvIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCdzIFB5dGhvbiBpbnRlcnByZXRlci4gVGhpcyBtZWFucyB0aGF0IHRoZSBzY3JpcHQgd2lsbCBydW4gd2l0aAorICAgdGhhdCBpbnRlcnByZXRlciByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiBgYFBBVEhgYC4gT24gV2luZG93cywgInNoZWJhbmciCisgICBsaW5lIHByb2Nlc3NpbmcgaXMgc3VwcG9ydGVkIGlmIHlvdSBoYXZlIHRoZSBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKyAgIGluc3RhbGxlZCAodGhpcyB3YXMgYWRkZWQgdG8gUHl0aG9uIGluIDMuMyAtIHNlZSA6cGVwOmAzOTdgIGZvciBtb3JlCisgICBkZXRhaWxzKS4gVGh1cywgZG91YmxlLWNsaWNraW5nIGFuIGluc3RhbGxlZCBzY3JpcHQgaW4gYSBXaW5kb3dzIEV4cGxvcmVyCisgICB3aW5kb3cgc2hvdWxkIHJ1biB0aGUgc2NyaXB0IHdpdGggdGhlIGNvcnJlY3QgaW50ZXJwcmV0ZXIgd2l0aG91dCB0aGVyZQorICAgbmVlZGluZyB0byBiZSBhbnkgcmVmZXJlbmNlIHRvIGl0cyB2aXJ0dWFsIGVudmlyb25tZW50IGluIGBgUEFUSGBgLgogCiAKIC4uIF92ZW52LWFwaToKQEAgLTg5LDcgKzk1LDggQEAKIGNyZWF0aW9uIGFjY29yZGluZyB0byB0aGVpciBuZWVkcywgdGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MuCiAKIC4uIGNsYXNzOjogRW52QnVpbGRlcihzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIFwKLSAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UsIHdpdGhfcGlwPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PU5vbmUpCiAKICAgICBUaGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcyBhY2NlcHRzIHRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgb24KICAgICBpbnN0YW50aWF0aW9uOgpAQCAtMTEzLDkgKzEyMCwxNiBAQAogICAgICAgaW5zdGFsbGVkIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBUaGlzIHVzZXMgOm1vZDpgZW5zdXJlcGlwYCB3aXRoCiAgICAgICB0aGUgYGAtLWRlZmF1bHQtcGlwYGAgb3B0aW9uLgogCisgICAgKiBgYHByb21wdGBgIC0tIGEgU3RyaW5nIHRvIGJlIHVzZWQgYWZ0ZXIgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmF0ZWQKKyAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCB3aGljaCBtZWFucyBkaXJlY3RvcnkgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQgd291bGQKKyAgICAgIGJlIHVzZWQpLgorCiAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgICBBZGRlZCB0aGUgYGB3aXRoX3BpcGBgIHBhcmFtZXRlcgogCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICAgQWRkZWQgdGhlIGBgcHJvbXB0YGAgcGFyYW1ldGVyCisKIAogICAgIENyZWF0b3JzIG9mIHRoaXJkLXBhcnR5IHZpcnR1YWwgZW52aXJvbm1lbnQgdG9vbHMgd2lsbCBiZSBmcmVlIHRvIHVzZSB0aGUKICAgICBwcm92aWRlZCBgYEVudkJ1aWxkZXJgYCBjbGFzcyBhcyBhIGJhc2UgY2xhc3MuCkBAIC0yMjUsNyArMjM5LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFRoZSBmb2xsb3dpbmcgc2NyaXB0IHNob3dzIGhvdyB0byBleHRlbmQgOmNsYXNzOmBFbnZCdWlsZGVyYCBieSBpbXBsZW1lbnRpbmcgYQotc3ViY2xhc3Mgd2hpY2ggaW5zdGFsbHMgc2V0dXB0b29scyBhbmQgcGlwIGludG8gYSBjcmVhdGVkIHZlbnY6Ogorc3ViY2xhc3Mgd2hpY2ggaW5zdGFsbHMgc2V0dXB0b29scyBhbmQgcGlwIGludG8gYSBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnQ6OgogCiAgICAgaW1wb3J0IG9zCiAgICAgaW1wb3J0IG9zLnBhdGgKQEAgLTIzOSwxMiArMjUzLDEyIEBACiAgICAgY2xhc3MgRXh0ZW5kZWRFbnZCdWlsZGVyKHZlbnYuRW52QnVpbGRlcik6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGJ1aWxkZXIgaW5zdGFsbHMgc2V0dXB0b29scyBhbmQgcGlwIHNvIHRoYXQgeW91IGNhbiBwaXAgb3IKLSAgICAgICAgZWFzeV9pbnN0YWxsIG90aGVyIHBhY2thZ2VzIGludG8gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisgICAgICAgIGVhc3lfaW5zdGFsbCBvdGhlciBwYWNrYWdlcyBpbnRvIHRoZSBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKICAgICAgICAgOnBhcmFtIG5vZGlzdDogSWYgVHJ1ZSwgc2V0dXB0b29scyBhbmQgcGlwIGFyZSBub3QgaW5zdGFsbGVkIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudC4KICAgICAgICAgOnBhcmFtIG5vcGlwOiBJZiBUcnVlLCBwaXAgaXMgbm90IGluc3RhbGxlZCBpbnRvIHRoZSBjcmVhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KICAgICAgICAgOnBhcmFtIHByb2dyZXNzOiBJZiBzZXR1cHRvb2xzIG9yIHBpcCBhcmUgaW5zdGFsbGVkLCB0aGUgcHJvZ3Jlc3Mgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uIGNhbiBiZSBtb25pdG9yZWQgYnkgcGFzc2luZyBhIHByb2dyZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGUuIElmIHNwZWNpZmllZCwgaXQgaXMgY2FsbGVkIHdpdGggdHdvCkBAIC0yNzAsMTAgKzI4NCwxMCBAQAogICAgICAgICBkZWYgcG9zdF9zZXR1cChzZWxmLCBjb250ZXh0KToKICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgU2V0IHVwIGFueSBwYWNrYWdlcyB3aGljaCBuZWVkIHRvIGJlIHByZS1pbnN0YWxsZWQgaW50byB0aGUKLSAgICAgICAgICAgIGVudmlyb25tZW50IGJlaW5nIGNyZWF0ZWQuCisgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50IGJlaW5nIGNyZWF0ZWQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgb3MuZW52aXJvblsnVklSVFVBTF9FTlYnXSA9IGNvbnRleHQuZW52X2RpcgogICAgICAgICAgICAgaWYgbm90IHNlbGYubm9kaXN0OgpAQCAtMzA3LDcgKzMyMSw3IEBACiAgICAgICAgICAgICBmbiA9IG9zLnBhdGguc3BsaXQocGF0aClbLTFdCiAgICAgICAgICAgICBiaW5wYXRoID0gY29udGV4dC5iaW5fcGF0aAogICAgICAgICAgICAgZGlzdHBhdGggPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZm4pCi0gICAgICAgICAgICAjIERvd25sb2FkIHNjcmlwdCBpbnRvIHRoZSBlbnYncyBiaW5hcmllcyBmb2xkZXIKKyAgICAgICAgICAgICMgRG93bmxvYWQgc2NyaXB0IGludG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBiaW5hcmllcyBmb2xkZXIKICAgICAgICAgICAgIHVybHJldHJpZXZlKHVybCwgZGlzdHBhdGgpCiAgICAgICAgICAgICBwcm9ncmVzcyA9IHNlbGYucHJvZ3Jlc3MKICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZToKQEAgLTMxOSw3ICszMzMsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdJbnN0YWxsaW5nICVzIC4uLiVzJyAlIChuYW1lLCB0ZXJtKSkKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgICAgICMgSW5zdGFsbCBpbiB0aGUgZW52CisgICAgICAgICAgICAjIEluc3RhbGwgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKICAgICAgICAgICAgIGFyZ3MgPSBbY29udGV4dC5lbnZfZXhlLCBmbl0KICAgICAgICAgICAgIHAgPSBQb3BlbihhcmdzLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIGN3ZD1iaW5wYXRoKQogICAgICAgICAgICAgdDEgPSBUaHJlYWQodGFyZ2V0PXNlbGYucmVhZGVyLCBhcmdzPShwLnN0ZG91dCwgJ3N0ZG91dCcpKQpAQCAtMzM4LDEwICszNTIsMTAgQEAKIAogICAgICAgICBkZWYgaW5zdGFsbF9zZXR1cHRvb2xzKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJbnN0YWxsIHNldHVwdG9vbHMgaW4gdGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgSW5zdGFsbCBzZXR1cHRvb2xzIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgogCi0gICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHVybCA9ICdodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2Rvd25sb2Fkcy9lel9zZXR1cC5weScKICAgICAgICAgICAgIHNlbGYuaW5zdGFsbF9zY3JpcHQoY29udGV4dCwgJ3NldHVwdG9vbHMnLCB1cmwpCkBAIC0zNTQsMTAgKzM2OCwxMCBAQAogCiAgICAgICAgIGRlZiBpbnN0YWxsX3BpcChzZWxmLCBjb250ZXh0KToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgSW5zdGFsbCBwaXAgaW4gdGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgSW5zdGFsbCBwaXAgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzOi8vcmF3LmdpdGh1Yi5jb20vcHlwYS9waXAvbWFzdGVyL2NvbnRyaWIvZ2V0LXBpcC5weScKICAgICAgICAgICAgIHNlbGYuaW5zdGFsbF9zY3JpcHQoY29udGV4dCwgJ3BpcCcsIHVybCkKQEAgLTM4MCw3ICszOTQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vcmUgdGFyZ2V0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3Rvcmllcy4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZGlycycsIG1ldGF2YXI9J0VOVl9ESVInLCBuYXJncz0nKycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0EgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXJ0dWFsIGVudmlyb25tZW50LicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLW5vLXNldHVwdG9vbHMnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdub2Rpc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEb24ndCBpbnN0YWxsIHNldHVwdG9vbHMgb3IgcGlwIGluIHRoZSAiCkBAIC00MDQsMTQgKzQxOSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgcGxhdGZvcm0uJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tY2xlYXInLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdjbGVhcicsIGhlbHA9J0RlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FscmVhZHkgZXhpc3RzLCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSBpZiBpdCBhbHJlYWR5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGlzdHMsIGJlZm9yZSB2aXJ0dWFsICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBjcmVhdGlvbi4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS11cGdyYWRlJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIGVudmlyb25tZW50ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VwZ3JhZGUnLCBoZWxwPSdVcGdyYWRlIHRoZSB2aXJ0dWFsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGRpcmVjdG9yeSB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2UgdGhpcyB2ZXJzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiwgYXNzdW1pbmcgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhcyBiZWVuIHVwZ3JhZGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luLXBsYWNlLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcmJvc2UnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2ZXJib3NlJywgaGVscD0nRGlzcGxheSB0aGUgb3V0cHV0ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tIHRoZSBzY3JpcHRzIHdoaWNoICcKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdCBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAppbmRleCBjZWM1NWYxLi5mNjdmNGJjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CkBAIC0zMDEsNyArMzAxLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi0uLiBmdW5jdGlvbjo6IHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xKQorLi4gZnVuY3Rpb246OiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSwgc291cmNlPU5vbmUpCiAKICAgIElzc3VlIGEgd2FybmluZywgb3IgbWF5YmUgaWdub3JlIGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFRoZSAqY2F0ZWdvcnkqCiAgICBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYSB3YXJuaW5nIGNhdGVnb3J5IGNsYXNzIChzZWUgYWJvdmUpOyBpdCBkZWZhdWx0cyB0bwpAQCAtMzE5LDggKzMxOSwxNCBAQAogICAgc291cmNlIG9mIDpmdW5jOmBkZXByZWNhdGlvbmAgaXRzZWxmIChzaW5jZSB0aGUgbGF0dGVyIHdvdWxkIGRlZmVhdCB0aGUgcHVycG9zZQogICAgb2YgdGhlIHdhcm5pbmcgbWVzc2FnZSkuCiAKKyAgICpzb3VyY2UqLCBpZiBzdXBwbGllZCwgaXMgdGhlIGRlc3Ryb3llZCBvYmplY3Qgd2hpY2ggZW1pdHRlZCBhCisgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgLgogCi0uLiBmdW5jdGlvbjo6IHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpzb3VyY2UqIHBhcmFtZXRlci4KKworCisuLiBmdW5jdGlvbjo6IHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZT1Ob25lLCByZWdpc3RyeT1Ob25lLCBtb2R1bGVfZ2xvYmFscz1Ob25lLCBzb3VyY2U9Tm9uZSkKIAogICAgVGhpcyBpcyBhIGxvdy1sZXZlbCBpbnRlcmZhY2UgdG8gdGhlIGZ1bmN0aW9uYWxpdHkgb2YgOmZ1bmM6YHdhcm5gLCBwYXNzaW5nIGluCiAgICBleHBsaWNpdGx5IHRoZSBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyLCBhbmQgb3B0aW9uYWxseSB0aGUKQEAgLTMzNiw2ICszNDIsMTIgQEAKICAgIHNvdXJjZSBmb3IgbW9kdWxlcyBmb3VuZCBpbiB6aXBmaWxlcyBvciBvdGhlciBub24tZmlsZXN5c3RlbSBpbXBvcnQKICAgIHNvdXJjZXMpLgogCisgICAqc291cmNlKiwgaWYgc3VwcGxpZWQsIGlzIHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorICAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZCB0aGUgKnNvdXJjZSogcGFyYW1ldGVyLgorCiAKIC4uIGZ1bmN0aW9uOjogc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0IGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAppbmRleCA1MmQ1OTFhLi40OGJkZjE0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93aW5yZWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKQEAgLTYzNSw3ICs2MzUsNyBAQAogCiAuLiBkYXRhOjogUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4KIAotICAgQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LgorICAgQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIDpjb25zdDpgUkVHX0RXT1JEYC4KIAogLi4gZGF0YTo6IFJFR19EV09SRF9CSUdfRU5ESUFOCiAKQEAgLTY1OSw2ICs2NTksMTggQEAKIAogICAgTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLgogCisuLiBkYXRhOjogUkVHX1FXT1JECisKKyAgIEEgNjQtYml0IG51bWJlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBSRUdfUVdPUkRfTElUVExFX0VORElBTgorCisgICBBIDY0LWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBSRUdfUVdPUkRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFJFR19SRVNPVVJDRV9MSVNUCiAKICAgIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2luc291bmQucnN0IGIvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CmluZGV4IGQyYzQyMTAuLjM3MmY3OTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdAorKysgYi9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKQEAgLTI1LDcgKzI1LDggQEAKIC4uIGZ1bmN0aW9uOjogUGxheVNvdW5kKHNvdW5kLCBmbGFncykKIAogICAgQ2FsbCB0aGUgdW5kZXJseWluZyA6YzpmdW5jOmBQbGF5U291bmRgIGZ1bmN0aW9uIGZyb20gdGhlIFBsYXRmb3JtIEFQSS4gIFRoZQotICAgKnNvdW5kKiBwYXJhbWV0ZXIgbWF5IGJlIGEgZmlsZW5hbWUsIGF1ZGlvIGRhdGEgYXMgYSBzdHJpbmcsIG9yIGBgTm9uZWBgLiAgSXRzCisgICAqc291bmQqIHBhcmFtZXRlciBtYXkgYmUgYSBmaWxlbmFtZSwgYSBzeXN0ZW0gc291bmQgYWxpYXMsIGF1ZGlvIGRhdGEgYXMgYQorICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgb3IgYGBOb25lYGAuICBJdHMKICAgIGludGVycHJldGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mICpmbGFncyosIHdoaWNoIGNhbiBiZSBhIGJpdHdpc2UgT1JlZAogICAgY29tYmluYXRpb24gb2YgdGhlIGNvbnN0YW50cyBkZXNjcmliZWQgYmVsb3cuIElmIHRoZSAqc291bmQqIHBhcmFtZXRlciBpcwogICAgYGBOb25lYGAsIGFueSBjdXJyZW50bHkgcGxheWluZyB3YXZlZm9ybSBzb3VuZCBpcyBzdG9wcGVkLiBJZiB0aGUgc3lzdGVtCkBAIC0zOSw3ICs0MCw4IEBACiAgICBzb3VuZCB0byBwbGF5OyBwb3NzaWJsZSB2YWx1ZXMgYXJlIGBgLTFgYCwgYGBNQl9JQ09OQVNURVJJU0tgYCwKICAgIGBgTUJfSUNPTkVYQ0xBTUFUSU9OYGAsIGBgTUJfSUNPTkhBTkRgYCwgYGBNQl9JQ09OUVVFU1RJT05gYCwgYW5kIGBgTUJfT0tgYCwgYWxsCiAgICBkZXNjcmliZWQgYmVsb3cuICBUaGUgdmFsdWUgYGAtMWBgIHByb2R1Y2VzIGEgInNpbXBsZSBiZWVwIjsgdGhpcyBpcyB0aGUgZmluYWwKLSAgIGZhbGxiYWNrIGlmIGEgc291bmQgY2Fubm90IGJlIHBsYXllZCBvdGhlcndpc2UuCisgICBmYWxsYmFjayBpZiBhIHNvdW5kIGNhbm5vdCBiZSBwbGF5ZWQgb3RoZXJ3aXNlLiAgSWYgdGhlIHN5c3RlbSBpbmRpY2F0ZXMgYW4KKyAgIGVycm9yLCA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4KIAogCiAuLiBkYXRhOjogU05EX0ZJTEVOQU1FCkBAIC05Miw3ICs5NCw3IEBACiAuLiBkYXRhOjogU05EX01FTU9SWQogCiAgICBUaGUgKnNvdW5kKiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YFBsYXlTb3VuZGAgaXMgYSBtZW1vcnkgaW1hZ2Ugb2YgYSBXQVYgZmlsZSwgYXMgYQotICAgc3RyaW5nLgorICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KIAogICAgLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0IGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKaW5kZXggYWFkMjdhOC4uYTFkNDQ2OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QKQEAgLTEzMyw5ICsxMzMsOSBAQAogICAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBlbnZpcm9uLml0ZW1zKCldCiAgICAgICAgICAgcmV0dXJuIHJldAogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBzaW1wbGVfYXBwKQotICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgc2ltcGxlX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogCiBJbiBhZGRpdGlvbiB0byB0aGUgZW52aXJvbm1lbnQgZnVuY3Rpb25zIGFib3ZlLCB0aGUgOm1vZDpgd3NnaXJlZi51dGlsYCBtb2R1bGUKQEAgLTI4NSwxNCArMjg1LDE0IEBACiAKICAgICAgIGZyb20gd3NnaXJlZi5zaW1wbGVfc2VydmVyIGltcG9ydCBtYWtlX3NlcnZlciwgZGVtb19hcHAKIAotICAgICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApCi0gICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIHBvcnQgODAwMC4uLiIpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiBwb3J0IDgwMDAuLi4iKQogCi0gICAgICAjIFJlc3BvbmQgdG8gcmVxdWVzdHMgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICAgICMgUmVzcG9uZCB0byByZXF1ZXN0cyB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCi0gICAgICAjIEFsdGVybmF0aXZlOiBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0Ci0gICAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgICAgIyBBbHRlcm5hdGl2ZTogc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdAorICAgICAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkKIAogCiAuLiBmdW5jdGlvbjo6IGRlbW9fYXBwKGVudmlyb24sIHN0YXJ0X3Jlc3BvbnNlKQpAQCAtNDMyLDkgKzQzMiw5IEBACiAgICAgICAjIFRoaXMgaXMgdGhlIGFwcGxpY2F0aW9uIHdyYXBwZWQgaW4gYSB2YWxpZGF0b3IKICAgICAgIHZhbGlkYXRvcl9hcHAgPSB2YWxpZGF0b3Ioc2ltcGxlX2FwcCkKIAotICAgICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgdmFsaWRhdG9yX2FwcCkKLSAgICAgIHByaW50KCJMaXN0ZW5pbmcgb24gcG9ydCA4MDAwLi4uLiIpCi0gICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHZhbGlkYXRvcl9hcHApIGFzIGh0dHBkOgorICAgICAgICAgIHByaW50KCJMaXN0ZW5pbmcgb24gcG9ydCA4MDAwLi4uLiIpCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKIAogOm1vZDpgd3NnaXJlZi5oYW5kbGVyc2AgLS0gc2VydmVyL2dhdGV3YXkgYmFzZSBjbGFzc2VzCkBAIC03NzQsOCArNzc0LDggQEAKICAgICAgICAjIFRoZSByZXR1cm5lZCBvYmplY3QgaXMgZ29pbmcgdG8gYmUgcHJpbnRlZAogICAgICAgIHJldHVybiBbYiJIZWxsbyBXb3JsZCJdCiAKLSAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGhlbGxvX3dvcmxkX2FwcCkKLSAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCisgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBoZWxsb193b3JsZF9hcHApIGFzIGh0dHBkOgorICAgICAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCiAKLSAgICMgU2VydmUgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKLSAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICMgU2VydmUgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKKyAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKaW5kZXggZGFkN2EwMi4uMzkwODI4ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKQEAgLTg4LDkgKzg4LDEzIEBACiAgICArPT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwogICAgfCBgYGJvb2xlYW5gYCAgICAgICAgICB8IDpjbGFzczpgYm9vbGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgaW50YGAgb3IgYGBpNGBgICAgIHwgOmNsYXNzOmBpbnRgIGluIHJhbmdlIGZyb20gLTIxNDc0ODM2NDggdG8gMjE0NzQ4MzY0Ny4gfAorICAgfCBgYGludGBgLCBgYGkxYGAsICAgICB8IDpjbGFzczpgaW50YCBpbiByYW5nZSBmcm9tIC0yMTQ3NDgzNjQ4IHRvIDIxNDc0ODM2NDcuIHwKKyAgIHwgYGBpMmBgLCAgYGBpNGBgLCAgICAgfCBWYWx1ZXMgZ2V0IHRoZSBgYDxpbnQ+YGAgdGFnLiAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgaThgYCBvciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCBgYGJpZ2ludGVnZXJgYCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgZG91YmxlYGAgICAgICAgICAgIHwgOmNsYXNzOmBmbG9hdGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCBgYGRvdWJsZWBgIG9yICAgICAgICB8IDpjbGFzczpgZmxvYXRgLiAgVmFsdWVzIGdldCB0aGUgYGA8ZG91YmxlPmBgIHRhZy4gICAgIHwKKyAgIHwgYGBmbG9hdGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYHN0cmluZ2BgICAgICAgICAgICB8IDpjbGFzczpgc3RyYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC0xMTQsNiArMTE4LDggQEAKICAgIHwgYGBuaWxgYCAgICAgICAgICAgICAgfCBUaGUgYGBOb25lYGAgY29uc3RhbnQuICBQYXNzaW5nIGlzIGFsbG93ZWQgb25seSBpZiAgICB8CiAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwgKmFsbG93X25vbmUqIGlzIHRydWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGBiaWdkZWNpbWFsYGAgICAgICAgfCA6Y2xhc3M6YGRlY2ltYWwuRGVjaW1hbGAuICBSZXR1cm5lZCB0eXBlIG9ubHkuICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBUaGlzIGlzIHRoZSBmdWxsIHNldCBvZiBkYXRhIHR5cGVzIHN1cHBvcnRlZCBieSBYTUwtUlBDLiAgTWV0aG9kIGNhbGxzIG1heSBhbHNvCiAgICByYWlzZSBhIHNwZWNpYWwgOmV4YzpgRmF1bHRgIGluc3RhbmNlLCB1c2VkIHRvIHNpZ25hbCBYTUwtUlBDIHNlcnZlciBlcnJvcnMsIG9yCkBAIC0xMzcsNiArMTQzLDEzIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgQWRkZWQgdGhlICpjb250ZXh0KiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdHlwZSB0YWdzIHdpdGggcHJlZml4ZXMgKGUuZy4gYGBleDpuaWxgYCkuCisgICAgICBBZGRlZCBzdXBwb3J0IG9mIHVubWFyc2FsbGluZyBhZGRpdGlvbmFsIHR5cGVzIHVzZWQgYnkgQXBhY2hlIFhNTC1SUEMKKyAgICAgIGltcGxlbWVudGF0aW9uIGZvciBudW1lcmljczogYGBpMWBgLCBgYGkyYGAsIGBgaThgYCwgYGBiaWdpbnRlZ2VyYGAsCisgICAgICBgYGZsb2F0YGAgYW5kIGBgYmlnZGVjaW1hbGBgLgorICAgICAgU2VlIGh0dHA6Ly93cy5hcGFjaGUub3JnL3htbHJwYy90eXBlcy5odG1sIGZvciBhIGRlc2NyaXB0aW9uLgorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0CmluZGV4IDFjNzdlODQuLjA1MTFkZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0CkBAIC0xNDgsMjkgKzE0OCwyOSBAQAogICAgICAgIHJwY19wYXRocyA9ICgnL1JQQzInLCkKIAogICAgIyBDcmVhdGUgc2VydmVyCi0gICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcj1SZXF1ZXN0SGFuZGxlcikKLSAgIHNlcnZlci5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCisgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXI9UmVxdWVzdEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9mdW5jdGlvbnMoKQogCi0gICAjIFJlZ2lzdGVyIHBvdygpIGZ1bmN0aW9uOyB0aGlzIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZgotICAgIyBwb3cuX19uYW1lX18gYXMgdGhlIG5hbWUsIHdoaWNoIGlzIGp1c3QgJ3BvdycuCi0gICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQorICAgICAgICMgUmVnaXN0ZXIgcG93KCkgZnVuY3Rpb247IHRoaXMgd2lsbCB1c2UgdGhlIHZhbHVlIG9mCisgICAgICAgIyBwb3cuX19uYW1lX18gYXMgdGhlIG5hbWUsIHdoaWNoIGlzIGp1c3QgJ3BvdycuCisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKIAotICAgIyBSZWdpc3RlciBhIGZ1bmN0aW9uIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUKLSAgIGRlZiBhZGRlcl9mdW5jdGlvbih4LHkpOgotICAgICAgIHJldHVybiB4ICsgeQotICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGFkZGVyX2Z1bmN0aW9uLCAnYWRkJykKKyAgICAgICAjIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdW5kZXIgYSBkaWZmZXJlbnQgbmFtZQorICAgICAgIGRlZiBhZGRlcl9mdW5jdGlvbih4LHkpOgorICAgICAgICAgICByZXR1cm4geCArIHkKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24oYWRkZXJfZnVuY3Rpb24sICdhZGQnKQogCi0gICAjIFJlZ2lzdGVyIGFuIGluc3RhbmNlOyBhbGwgdGhlIG1ldGhvZHMgb2YgdGhlIGluc3RhbmNlIGFyZQotICAgIyBwdWJsaXNoZWQgYXMgWE1MLVJQQyBtZXRob2RzIChpbiB0aGlzIGNhc2UsIGp1c3QgJ211bCcpLgotICAgY2xhc3MgTXlGdW5jczoKLSAgICAgICBkZWYgbXVsKHNlbGYsIHgsIHkpOgotICAgICAgICAgICByZXR1cm4geCAqIHkKKyAgICAgICAjIFJlZ2lzdGVyIGFuIGluc3RhbmNlOyBhbGwgdGhlIG1ldGhvZHMgb2YgdGhlIGluc3RhbmNlIGFyZQorICAgICAgICMgcHVibGlzaGVkIGFzIFhNTC1SUEMgbWV0aG9kcyAoaW4gdGhpcyBjYXNlLCBqdXN0ICdtdWwnKS4KKyAgICAgICBjbGFzcyBNeUZ1bmNzOgorICAgICAgICAgICBkZWYgbXVsKHNlbGYsIHgsIHkpOgorICAgICAgICAgICAgICAgcmV0dXJuIHggKiB5CiAKLSAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShNeUZ1bmNzKCkpCisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKE15RnVuY3MoKSkKIAotICAgIyBSdW4gdGhlIHNlcnZlcidzIG1haW4gbG9vcAotICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICMgUnVuIHRoZSBzZXJ2ZXIncyBtYWluIGxvb3AKKyAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIFRoZSBmb2xsb3dpbmcgY2xpZW50IGNvZGUgd2lsbCBjYWxsIHRoZSBtZXRob2RzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZSBwcmVjZWRpbmcKIHNlcnZlcjo6CkBAIC0yMDcsMTggKzIwNywxNyBAQAogICAgICAgICAgICAgZGVmIGdldEN1cnJlbnRUaW1lKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCiAKLSAgICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQotICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCi0gICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKLSAgICB0cnk6Ci0gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQotICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc3lzLmV4aXQoMCkKKyAgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKSBhcyBzZXJ2ZXI6CisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKKyAgICAgICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKKyAgICAgICAgICAgIHN5cy5leGl0KDApCiAKIFRoaXMgRXhhbXBsZVNlcnZpY2UgZGVtbyBjYW4gYmUgaW52b2tlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CmluZGV4IGJmNDgyZDIuLjkwNTY0ODkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CkBAIC0xNDcsMTAgKzE0NywxMCBAQAogICAgKmNvbXByZXNzaW9uKiBpcyB0aGUgWklQIGNvbXByZXNzaW9uIG1ldGhvZCB0byB1c2Ugd2hlbiB3cml0aW5nIHRoZSBhcmNoaXZlLAogICAgYW5kIHNob3VsZCBiZSA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCiAgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWA7IHVucmVjb2duaXplZAotICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgUnVudGltZUVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCisgICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsCiAgICA6Y29uc3Q6YFpJUF9CWklQMmAgb3IgOmNvbnN0OmBaSVBfTFpNQWAgaXMgc3BlY2lmaWVkIGJ1dCB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUKICAgICg6bW9kOmB6bGliYCwgOm1vZDpgYnoyYCBvciA6bW9kOmBsem1hYCkgaXMgbm90IGF2YWlsYWJsZSwgOmV4YzpgUnVudGltZUVycm9yYAotICAgaXMgYWxzbyByYWlzZWQuIFRoZSBkZWZhdWx0IGlzIDpjb25zdDpgWklQX1NUT1JFRGAuICBJZiAqYWxsb3daaXA2NCogaXMKKyAgIGlzIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcwogICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KSB6aXBmaWxlIHdpbGwgY3JlYXRlIFpJUCBmaWxlcyB0aGF0IHVzZSB0aGUgWklQNjQKICAgIGV4dGVuc2lvbnMgd2hlbiB0aGUgemlwZmlsZSBpcyBsYXJnZXIgdGhhbiAyIEdpQi4gSWYgaXQgaXMgIGZhbHNlIDptb2Q6YHppcGZpbGVgCiAgICB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBaSVAgZmlsZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMuCkBAIC0xNzksNiArMTc5LDEwIEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB3cml0aW5nIHRvIHVuc2Vla2FibGUgc3RyZWFtcy4KICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCd4J2BgIG1vZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBQcmV2aW91c2x5LCBhIHBsYWluIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZCBmb3IgdW5yZWNvZ25pemVkCisgICAgICBjb21wcmVzc2lvbiB2YWx1ZXMuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5jbG9zZSgpCiAKQEAgLTIwNSwxOCArMjA5LDEyIEBACiAgICBSZXR1cm4gYSBsaXN0IG9mIGFyY2hpdmUgbWVtYmVycyBieSBuYW1lLgogCiAKLS4uIGluZGV4OjoKLSAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyB6aXBmaWxlLlppcEZpbGUub3BlbiBtZXRob2QKKy4uIG1ldGhvZDo6IFppcEZpbGUub3BlbihuYW1lLCBtb2RlPSdyJywgcHdkPU5vbmUsICosIGZvcmNlX3ppcDY0PUZhbHNlKQogCi0uLiBtZXRob2Q6OiBaaXBGaWxlLm9wZW4obmFtZSwgbW9kZT0ncicsIHB3ZD1Ob25lKQotCi0gICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlLWxpa2Ugb2JqZWN0IChaaXBFeHRGaWxlKS4gKm5hbWUqCi0gICBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gVGhlCi0gICAqbW9kZSogcGFyYW1ldGVyLCBpZiBpbmNsdWRlZCwgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogYGAncidgYCAodGhlCi0gICBkZWZhdWx0KSwgYGAnVSdgYCwgb3IgYGAnclUnYGAuIENob29zaW5nIGBgJ1UnYGAgb3IgIGBgJ3JVJ2BgIHdpbGwgZW5hYmxlCi0gICA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBzdXBwb3J0IGluIHRoZSByZWFkLW9ubHkgb2JqZWN0LiAgKnB3ZCogaXMgdGhlCi0gICBwYXNzd29yZCB1c2VkIGZvciBlbmNyeXB0ZWQgZmlsZXMuICBDYWxsaW5nICA6bWV0aDpgLm9wZW5gIG9uIGEgY2xvc2VkCi0gICBaaXBGaWxlIHdpbGwgcmFpc2UgYSAgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIEFjY2VzcyBhIG1lbWJlciBvZiB0aGUgYXJjaGl2ZSBhcyBhIGJpbmFyeSBmaWxlLWxpa2Ugb2JqZWN0LiAgKm5hbWUqCisgICBjYW4gYmUgZWl0aGVyIHRoZSBuYW1lIG9mIGEgZmlsZSB3aXRoaW4gdGhlIGFyY2hpdmUgb3IgYSA6Y2xhc3M6YFppcEluZm9gCisgICBvYmplY3QuICBUaGUgKm1vZGUqIHBhcmFtZXRlciwgaWYgaW5jbHVkZWQsIG11c3QgYmUgYGAncidgYCAodGhlIGRlZmF1bHQpCisgICBvciBgYCd3J2BgLiAgKnB3ZCogaXMgdGhlIHBhc3N3b3JkIHVzZWQgdG8gZGVjcnlwdCBlbmNyeXB0ZWQgWklQIGZpbGVzLgogCiAgICA6bWV0aDpgflppcEZpbGUub3BlbmAgaXMgYWxzbyBhIGNvbnRleHQgbWFuYWdlciBhbmQgdGhlcmVmb3JlIHN1cHBvcnRzIHRoZQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudDo6CkBAIC0yMjUsMTcgKzIyMywyMyBAQAogICAgICAgICAgIHdpdGggbXl6aXAub3BlbignZWdncy50eHQnKSBhcyBteWZpbGU6CiAgICAgICAgICAgICAgIHByaW50KG15ZmlsZS5yZWFkKCkpCiAKLSAgIC4uIG5vdGU6OgorICAgV2l0aCAqbW9kZSogYGAncidgYCB0aGUgZmlsZS1saWtlIG9iamVjdAorICAgKGBgWmlwRXh0RmlsZWBgKSBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKyAgIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAsIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lYCwKKyAgIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lc2AsIDptZXRoOmBfX2l0ZXJfX2AsCisgICA6bWV0aDpgfml0ZXJhdG9yLl9fbmV4dF9fYC4gIFRoZXNlIG9iamVjdHMgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZgorICAgdGhlIFppcEZpbGUuCiAKLSAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJlYWQtb25seSBhbmQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotICAgICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCwgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgLAotICAgICAgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVzYCwgOm1ldGg6YF9faXRlcl9fYCwKLSAgICAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gLgorICAgV2l0aCBgYG1vZGU9J3cnYGAsIGEgd3JpdGFibGUgZmlsZSBoYW5kbGUgaXMgcmV0dXJuZWQsIHdoaWNoIHN1cHBvcnRzIHRoZQorICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS53cml0ZWAgbWV0aG9kLiAgV2hpbGUgYSB3cml0YWJsZSBmaWxlIGhhbmRsZSBpcyBvcGVuLAorICAgYXR0ZW1wdGluZyB0byByZWFkIG9yIHdyaXRlIG90aGVyIGZpbGVzIGluIHRoZSBaSVAgZmlsZSB3aWxsIHJhaXNlIGEKKyAgIDpleGM6YFZhbHVlRXJyb3JgLgogCi0gICAuLiBub3RlOjoKLQotICAgICAgT2JqZWN0cyByZXR1cm5lZCBieSA6bWV0aDpgLm9wZW5gIGNhbiBvcGVyYXRlIGluZGVwZW5kZW50bHkgb2YgdGhlCi0gICAgICBaaXBGaWxlLgorICAgV2hlbiB3cml0aW5nIGEgZmlsZSwgaWYgdGhlIGZpbGUgc2l6ZSBpcyBub3Qga25vd24gaW4gYWR2YW5jZSBidXQgbWF5IGV4Y2VlZAorICAgMiBHaUIsIHBhc3MgYGBmb3JjZV96aXA2ND1UcnVlYGAgdG8gZW5zdXJlIHRoYXQgdGhlIGhlYWRlciBmb3JtYXQgaXMKKyAgIGNhcGFibGUgb2Ygc3VwcG9ydGluZyBsYXJnZSBmaWxlcy4gIElmIHRoZSBmaWxlIHNpemUgaXMga25vd24gaW4gYWR2YW5jZSwKKyAgIGNvbnN0cnVjdCBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0IHdpdGggOmF0dHI6YH5aaXBJbmZvLmZpbGVfc2l6ZWAgc2V0LCBhbmQKKyAgIHVzZSB0aGF0IGFzIHRoZSAqbmFtZSogcGFyYW1ldGVyLgogCiAgICAuLiBub3RlOjoKIApAQCAtMjQzLDEwICsyNDcsMTkgQEAKICAgICAgIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3QuICBZb3Ugd2lsbCBhcHByZWNpYXRlIHRoaXMgd2hlbiB0cnlpbmcgdG8gcmVhZCBhCiAgICAgICBaSVAgZmlsZSB0aGF0IGNvbnRhaW5zIG1lbWJlcnMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNCAzLjYKLSAgICAgIFRoZSBgYCdVJ2BgIG9yICBgYCdyVSdgYCBtb2RlLiAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBSZW1vdmVkIHN1cHBvcnQgb2YgYGBtb2RlPSdVJ2BgLiAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcKICAgICAgIGNvbXByZXNzZWQgdGV4dCBmaWxlcyBpbiA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YG9wZW5gIGNhbiBub3cgYmUgdXNlZCB0byB3cml0ZSBmaWxlcyBpbnRvIHRoZSBhcmNoaXZlIHdpdGggdGhlCisgICAgICBgYG1vZGU9J3cnYGAgb3B0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgLm9wZW5gIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorICAgICAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogLi4gbWV0aG9kOjogWmlwRmlsZS5leHRyYWN0KG1lbWJlciwgcGF0aD1Ob25lLCBwd2Q9Tm9uZSkKIAogICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5OyAqbWVtYmVyKgpAQCAtMjY3LDYgKzI4MCwxMCBAQAogICAgICAgY2hhcmFjdGVycyAoYGA6YGAsIGBgPGBgLCBgYD5gYCwgYGB8YGAsIGBgImBgLCBgYD9gYCwgYW5kIGBgKmBgKQogICAgICAgcmVwbGFjZWQgYnkgdW5kZXJzY29yZSAoYGBfYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgZXh0cmFjdGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5leHRyYWN0YWxsKHBhdGg9Tm9uZSwgbWVtYmVycz1Ob25lLCBwd2Q9Tm9uZSkKIApAQCAtMjgzLDYgKzMwMCwxMCBAQAogICAgICAgZG90cyBgYCIuLiJgYC4gIFRoaXMgbW9kdWxlIGF0dGVtcHRzIHRvIHByZXZlbnQgdGhhdC4KICAgICAgIFNlZSA6bWV0aDpgZXh0cmFjdGAgbm90ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YGV4dHJhY3RhbGxgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUucHJpbnRkaXIoKQogCkBAIC0zMDAsMTggKzMyMSwyNCBAQAogICAgZmlsZSBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiBmb3IKICAgIHJlYWQgb3IgYXBwZW5kLiAqcHdkKiBpcyB0aGUgcGFzc3dvcmQgdXNlZCBmb3IgZW5jcnlwdGVkICBmaWxlcyBhbmQsIGlmIHNwZWNpZmllZCwKICAgIGl0IHdpbGwgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcGFzc3dvcmQgc2V0IHdpdGggOm1ldGg6YHNldHBhc3N3b3JkYC4gIENhbGxpbmcKLSAgIDptZXRoOmByZWFkYCBvbiBhIGNsb3NlZCBaaXBGaWxlICB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4gQ2FsbGluZwogICAgOm1ldGg6YHJlYWRgIG9uIGEgWmlwRmlsZSB0aGF0IHVzZXMgYSBjb21wcmVzc2lvbiBtZXRob2Qgb3RoZXIgdGhhbgogICAgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLCA6Y29uc3Q6YFpJUF9CWklQMmAgb3IKICAgIDpjb25zdDpgWklQX0xaTUFgIHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4gQW4gZXJyb3Igd2lsbCBhbHNvCiAgICBiZSByYWlzZWQgaWYgdGhlIGNvcnJlc3BvbmRpbmcgY29tcHJlc3Npb24gbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmByZWFkYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgICAgIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUudGVzdHppcCgpCiAKICAgIFJlYWQgYWxsIHRoZSBmaWxlcyBpbiB0aGUgYXJjaGl2ZSBhbmQgY2hlY2sgdGhlaXIgQ1JDJ3MgYW5kIGZpbGUgaGVhZGVycy4KLSAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgYmFkIGZpbGUsIG9yIGVsc2UgcmV0dXJuIGBgTm9uZWBgLiBDYWxsaW5nCi0gICA6bWV0aDpgdGVzdHppcGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgYmFkIGZpbGUsIG9yIGVsc2UgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgdGVzdGZpbGVgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgogCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUud3JpdGUoZmlsZW5hbWUsIGFyY25hbWU9Tm9uZSwgY29tcHJlc3NfdHlwZT1Ob25lKQpAQCAtMzIxLDEwICszNDgsNyBAQAogICAgbGV0dGVyIGFuZCB3aXRoIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQpLiAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKgogICAgb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbiogcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IKICAgIHRoZSBuZXcgZW50cnkuCi0gICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCi0gICA6bWV0aDpgd3JpdGVgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgIDptZXRoOmB3cml0ZWAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYC4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTM0MywxNiArMzY3LDE5IEBACiAgICAgICBJZiBgYGFyY25hbWVgYCAob3IgYGBmaWxlbmFtZWBgLCBpZiBgYGFyY25hbWVgYCBpcyAgbm90IGdpdmVuKSBjb250YWlucyBhIG51bGwKICAgICAgIGJ5dGUsIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlIHdpbGwgYmUgdHJ1bmNhdGVkIGF0IHRoZSBudWxsIGJ5dGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgb3IKKyAgICAgIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwKKyAgICAgIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIC4uIG1ldGhvZDo6IFppcEZpbGUud3JpdGVzdHIoemluZm9fb3JfYXJjbmFtZSwgZGF0YVssIGNvbXByZXNzX3R5cGVdKQogCiAgICBXcml0ZSB0aGUgc3RyaW5nICpkYXRhKiB0byB0aGUgYXJjaGl2ZTsgKnppbmZvX29yX2FyY25hbWUqIGlzIGVpdGhlciB0aGUgZmlsZQogICAgbmFtZSBpdCB3aWxsIGJlIGdpdmVuIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UuICBJZiBpdCdzCiAgICBhbiBpbnN0YW5jZSwgYXQgbGVhc3QgdGhlIGZpbGVuYW1lLCBkYXRlLCBhbmQgdGltZSBtdXN0IGJlIGdpdmVuLiAgSWYgaXQncyBhCiAgICBuYW1lLCB0aGUgZGF0ZSBhbmQgdGltZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZS4KLSAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZwotICAgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBDYWxsaW5nIDptZXRoOmB3cml0ZXN0cmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsCi0gICByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLgogCiAgICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qCiAgICBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgbmV3IGVudHJ5LCBvciBpbiB0aGUgKnppbmZvX29yX2FyY25hbWUqCkBAIC0zNjgsNiArMzk1LDEyIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlICpjb21wcmVzc190eXBlKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCBvcgorICAgICAgYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LAorICAgICAgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogVGhlIGZvbGxvd2luZyBkYXRhIGF0dHJpYnV0ZXMgYXJlIGFsc28gYXZhaWxhYmxlOgogCiAKQEAgLTQ2NSw3ICs0OTgsMzEgQEAKIDptZXRoOmAuaW5mb2xpc3RgIG1ldGhvZHMgb2YgOmNsYXNzOmBaaXBGaWxlYCBvYmplY3RzLiAgRWFjaCBvYmplY3Qgc3RvcmVzCiBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBtZW1iZXIgb2YgdGhlIFpJUCBhcmNoaXZlLgogCi1JbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CitUaGVyZSBpcyBvbmUgY2xhc3NtZXRob2QgdG8gbWFrZSBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UgZm9yIGEgZmlsZXN5c3RlbQorZmlsZToKKworLi4gY2xhc3NtZXRob2Q6OiBaaXBJbmZvLmZyb21fZmlsZShmaWxlbmFtZSwgYXJjbmFtZT1Ob25lKQorCisgICBDb25zdHJ1Y3QgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlIGZvciBhIGZpbGUgb24gdGhlIGZpbGVzeXN0ZW0sIGluCisgICBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIGl0IHRvIGEgemlwIGZpbGUuCisKKyAgICpmaWxlbmFtZSogc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBvciBkaXJlY3Rvcnkgb24gdGhlIGZpbGVzeXN0ZW0uCisKKyAgIElmICphcmNuYW1lKiBpcyBzcGVjaWZpZWQsIGl0IGlzIHVzZWQgYXMgdGhlIG5hbWUgd2l0aGluIHRoZSBhcmNoaXZlLgorICAgSWYgKmFyY25hbWUqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBuYW1lIHdpbGwgYmUgdGhlIHNhbWUgYXMgKmZpbGVuYW1lKiwgYnV0CisgICB3aXRoIGFueSBkcml2ZSBsZXR0ZXIgYW5kIGxlYWRpbmcgcGF0aCBzZXBhcmF0b3JzIHJlbW92ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitJbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CisKKy4uIG1ldGhvZDo6IFppcEluZm8uaXNfZGlyKCkKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoaXMgYXJjaGl2ZSBtZW1iZXIgaXMgYSBkaXJlY3RvcnkuCisKKyAgIFRoaXMgdXNlcyB0aGUgZW50cnkncyBuYW1lOiBkaXJlY3RvcmllcyBzaG91bGQgYWx3YXlzIGVuZCB3aXRoIGBgL2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogCiAuLiBhdHRyaWJ1dGU6OiBaaXBJbmZvLmZpbGVuYW1lCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96bGliLnJzdCBiL0RvYy9saWJyYXJ5L3psaWIucnN0CmluZGV4IDFkZTdiYWUuLjNkNzQyYWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3psaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3psaWIucnN0CkBAIC00NywxNCArNDcsMTkgQEAKICAgICAgIHBsYXRmb3JtcywgdXNlIGBgYWRsZXIzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGFbLCBsZXZlbF0pCisuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGxldmVsPS0xKQogCiAgICBDb21wcmVzc2VzIHRoZSBieXRlcyBpbiAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YS4KLSAgICpsZXZlbCogaXMgYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgIGNvbnRyb2xsaW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsKKyAgICpsZXZlbCogaXMgYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgIG9yIGBgLTFgYCBjb250cm9sbGluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb247CiAgICBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sIGBgOWBgIGlzIHNsb3dlc3QgYW5kCi0gICBwcm9kdWNlcyB0aGUgbW9zdC4gIGBgMGBgIGlzIG5vIGNvbXByZXNzaW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGA2YGAuCisgICBwcm9kdWNlcyB0aGUgbW9zdC4gIGBgMGBgIGlzIG5vIGNvbXByZXNzaW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAtMWBgCisgICAoWl9ERUZBVUxUX0NPTVBSRVNTSU9OKS4gIFpfREVGQVVMVF9DT01QUkVTU0lPTiByZXByZXNlbnRzIGEgZGVmYXVsdAorICAgY29tcHJvbWlzZSBiZXR3ZWVuIHNwZWVkIGFuZCBjb21wcmVzc2lvbiAoY3VycmVudGx5IGVxdWl2YWxlbnQgdG8gbGV2ZWwgNikuCiAgICBSYWlzZXMgdGhlIDpleGM6YGVycm9yYCBleGNlcHRpb24gaWYgYW55IGVycm9yIG9jY3Vycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpsZXZlbCogY2FuIG5vdyBiZSB1c2VkIGFzIGEga2V5d29yZCBwYXJhbWV0ZXIuCisKIAogLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtTGV2ZWw9OCwgc3RyYXRlZ3k9Wl9ERUZBVUxUX1NUUkFURUdZWywgemRpY3RdKQogCkBAIC0xMjQsNyArMTI5LDcgQEAKICAgICAgIHBsYXRmb3JtcywgdXNlIGBgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmYGAuCiAKIAotLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGFbLCB3Yml0c1ssIGJ1ZnNpemVdXSkKKy4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhLCB3Yml0cz1NQVhfV0JJVFMsIGJ1ZnNpemU9REVGX0JVRl9TSVpFKQogCiAgICBEZWNvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlCiAgICB1bmNvbXByZXNzZWQgZGF0YS4gIFRoZSAqd2JpdHMqIHBhcmFtZXRlciBkZXBlbmRzIG9uCkBAIC0xNTksMTQgKzE2NCwxNiBAQAogICAgV2hlbiBkZWNvbXByZXNzaW5nIGEgc3RyZWFtLCB0aGUgd2luZG93IHNpemUgbXVzdCBub3QgYmUgc21hbGxlcgogICAgdGhhbiB0aGUgc2l6ZSBvcmlnaW5hbGx5IHVzZWQgdG8gY29tcHJlc3MgdGhlIHN0cmVhbTsgdXNpbmcgYSB0b28tc21hbGwKICAgIHZhbHVlIG1heSByZXN1bHQgaW4gYW4gOmV4YzpgZXJyb3JgIGV4Y2VwdGlvbi4gVGhlIGRlZmF1bHQgKndiaXRzKiB2YWx1ZQotICAgaXMgMTUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBsYXJnZXN0IHdpbmRvdyBzaXplIGFuZCByZXF1aXJlcyBhIHpsaWIKLSAgIGhlYWRlciBhbmQgdHJhaWxlciB0byBiZSBpbmNsdWRlZC4KKyAgIGNvcnJlc3BvbmRzIHRvIHRoZSBsYXJnZXN0IHdpbmRvdyBzaXplIGFuZCByZXF1aXJlcyBhIHpsaWIgaGVhZGVyIGFuZAorICAgdHJhaWxlciB0byBiZSBpbmNsdWRlZC4KIAogICAgKmJ1ZnNpemUqIGlzIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGhvbGQgZGVjb21wcmVzc2VkIGRhdGEuICBJZgogICAgbW9yZSBzcGFjZSBpcyByZXF1aXJlZCwgdGhlIGJ1ZmZlciBzaXplIHdpbGwgYmUgaW5jcmVhc2VkIGFzIG5lZWRlZCwgc28geW91CiAgICBkb24ndCBoYXZlIHRvIGdldCB0aGlzIHZhbHVlIGV4YWN0bHkgcmlnaHQ7IHR1bmluZyBpdCB3aWxsIG9ubHkgc2F2ZSBhIGZldyBjYWxscwotICAgdG8gOmM6ZnVuYzpgbWFsbG9jYC4gIFRoZSBkZWZhdWx0IHNpemUgaXMgMTYzODQuCisgICB0byA6YzpmdW5jOmBtYWxsb2NgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKndiaXRzKiBhbmQgKmJ1ZnNpemUqIGNhbiBiZSB1c2VkIGFzIGtleXdvcmQgYXJndW1lbnRzLgogCiAuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3NvYmood2JpdHM9MTVbLCB6ZGljdF0pCiAKQEAgLTI1Miw3ICsyNTksNyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGFbLCBtYXhfbGVuZ3RoXSkKKy4uIG1ldGhvZDo6IERlY29tcHJlc3MuZGVjb21wcmVzcyhkYXRhLCBtYXhfbGVuZ3RoPTApCiAKICAgIERlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEKICAgIGNvcnJlc3BvbmRpbmcgdG8gYXQgbGVhc3QgcGFydCBvZiB0aGUgZGF0YSBpbiAqc3RyaW5nKi4gIFRoaXMgZGF0YSBzaG91bGQgYmUKQEAgLTI2NCw5ICsyNzEsMTEgQEAKICAgIG5vIGxvbmdlciB0aGFuICptYXhfbGVuZ3RoKi4gVGhpcyBtYXkgbWVhbiB0aGF0IG5vdCBhbGwgb2YgdGhlIGNvbXByZXNzZWQgaW5wdXQKICAgIGNhbiBiZSBwcm9jZXNzZWQ7IGFuZCB1bmNvbnN1bWVkIGRhdGEgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGF0dHJpYnV0ZQogICAgOmF0dHI6YHVuY29uc3VtZWRfdGFpbGAuIFRoaXMgYnl0ZXN0cmluZyBtdXN0IGJlIHBhc3NlZCB0byBhIHN1YnNlcXVlbnQgY2FsbCB0bwotICAgOm1ldGg6YGRlY29tcHJlc3NgIGlmIGRlY29tcHJlc3Npb24gaXMgdG8gY29udGludWUuICBJZiAqbWF4X2xlbmd0aCogaXMgbm90Ci0gICBzdXBwbGllZCB0aGVuIHRoZSB3aG9sZSBpbnB1dCBpcyBkZWNvbXByZXNzZWQsIGFuZCA6YXR0cjpgdW5jb25zdW1lZF90YWlsYCBpcwotICAgZW1wdHkuCisgICA6bWV0aDpgZGVjb21wcmVzc2AgaWYgZGVjb21wcmVzc2lvbiBpcyB0byBjb250aW51ZS4gIElmICptYXhfbGVuZ3RoKiBpcyB6ZXJvCisgICB0aGVuIHRoZSB3aG9sZSBpbnB1dCBpcyBkZWNvbXByZXNzZWQsIGFuZCA6YXR0cjpgdW5jb25zdW1lZF90YWlsYCBpcyBlbXB0eS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICptYXhfbGVuZ3RoKiBjYW4gYmUgdXNlZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCiAKIAogLi4gbWV0aG9kOjogRGVjb21wcmVzcy5mbHVzaChbbGVuZ3RoXSkKZGlmZiAtLWdpdCBhL0RvYy9tYWtlLmJhdCBiL0RvYy9tYWtlLmJhdAppbmRleCA1YWI4MDg1Li5kYTFmODc2IDEwMDY0NAotLS0gYS9Eb2MvbWFrZS5iYXQKKysrIGIvRG9jL21ha2UuYmF0CkBAIC00MCw3ICs0MCw3IEBACiAgICAgZ290byBlbmQNCiApDQogDQotJVNQSElOWEJVSUxEJSAyPiBudWwNCislU1BISU5YQlVJTEQlID5udWwgMj4gbnVsDQogaWYgZXJyb3JsZXZlbCA5MDA5ICgNCiAgICAgZWNoby4NCiAgICAgZWNoby5UaGUgJ3NwaGlueC1idWlsZCcgY29tbWFuZCB3YXMgbm90IGZvdW5kLiBNYWtlIHN1cmUgeW91IGhhdmUgU3BoaW54DQpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdAppbmRleCA4OGI5NGVhLi40ZmM2YWYwIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdApAQCAtNDcxLDEwICs0NzEsMTAgQEAKICAgIGRlY29yYXRvcnM6IGBkZWNvcmF0b3JgKwogICAgZGVjb3JhdG9yOiAiQCIgYGRvdHRlZF9uYW1lYCBbIigiIFtgYXJndW1lbnRfbGlzdGAgWyIsIl1dICIpIl0gTkVXTElORQogICAgZG90dGVkX25hbWU6IGBpZGVudGlmaWVyYCAoIi4iIGBpZGVudGlmaWVyYCkqCi0gICBwYXJhbWV0ZXJfbGlzdDogKGBkZWZwYXJhbWV0ZXJgICIsIikqCi0gICAgICAgICAgICAgICAgIDogfCAiKiIgW2BwYXJhbWV0ZXJgXSAoIiwiIGBkZWZwYXJhbWV0ZXJgKSogWyIsIiAiKioiIGBwYXJhbWV0ZXJgXQotICAgICAgICAgICAgICAgICA6IHwgIioqIiBgcGFyYW1ldGVyYAotICAgICAgICAgICAgICAgICA6IHwgYGRlZnBhcmFtZXRlcmAgWyIsIl0gKQorICAgcGFyYW1ldGVyX2xpc3Q6IGBkZWZwYXJhbWV0ZXJgICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiIFtgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NgXV0KKyAgICAgICAgICAgICAgICAgOiB8IGBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc2AKKyAgIHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzOiAiKiIgW2BwYXJhbWV0ZXJgXSAoIiwiIGBkZWZwYXJhbWV0ZXJgKSogWyIsIiBbIioqIiBgcGFyYW1ldGVyYCBbIiwiXV1dCisgICAgICAgICAgICAgICAgICAgICAgICAgOiB8ICIqKiIgYHBhcmFtZXRlcmAgWyIsIl0KICAgIHBhcmFtZXRlcjogYGlkZW50aWZpZXJgIFsiOiIgYGV4cHJlc3Npb25gXQogICAgZGVmcGFyYW1ldGVyOiBgcGFyYW1ldGVyYCBbIj0iIGBleHByZXNzaW9uYF0KICAgIGZ1bmNuYW1lOiBgaWRlbnRpZmllcmAKQEAgLTU0NiwxMSArNTQ2LDEyIEBACiBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVycyBtZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlcgogbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tIGtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQKIHZhbHVlcy4gIElmIHRoZSBmb3JtICJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUKLXJlY2VpdmluZyBhbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZgotdGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IGRpY3Rpb25hcnkKLXJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuCi1QYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZAotbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuCityZWNlaXZpbmcgYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLgorSWYgdGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3CitvcmRlcmVkIG1hcHBpbmcgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYQorbmV3IGVtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvcgorImBgKmlkZW50aWZpZXJgYCIgYXJlIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQKK3VzZWQga2V5d29yZCBhcmd1bWVudHMuCiAKIC4uIGluZGV4OjogcGFpcjogZnVuY3Rpb247IGFubm90YXRpb25zCiAKQEAgLTYzMiw2ICs2MzMsMTEgQEAKIGRpY3Rpb25hcnkuICBUaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWwKIG5hbWVzcGFjZS4KIAorVGhlIG9yZGVyIGluIHdoaWNoIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIGJvZHkgaXMgcHJlc2VydmVkCitpbiB0aGUgbmV3IGNsYXNzJ3MgYGBfX2RpY3RfX2BgLiAgTm90ZSB0aGF0IHRoaXMgaXMgcmVsaWFibGUgb25seSByaWdodAorYWZ0ZXIgdGhlIGNsYXNzIGlzIGNyZWF0ZWQgYW5kIG9ubHkgZm9yIGNsYXNzZXMgdGhhdCB3ZXJlIGRlZmluZWQgdXNpbmcKK3RoZSBkZWZpbml0aW9uIHN5bnRheC4KKwogQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyA6cmVmOmBtZXRhY2xhc3NlcyA8bWV0YWNsYXNzZXM+YC4KIAogQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLCA6OgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0IGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CmluZGV4IGI3NjNmMTAuLjk2MTllNTMgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKQEAgLTY4NiwxMCArNjg2LDI4IEBACiAgICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSwgZS5nLiwKICAgIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuCiAKKyAgIC4uIGluZGV4OjoKKyAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fZG9jX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fZmlsZV9fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2Fubm90YXRpb25zX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBwYWlyOiBtb2R1bGU7IG5hbWVzcGFjZQorCisgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogOmF0dHI6YF9fbmFtZV9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZTsKKyAgIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmCisgICB1bmF2YWlsYWJsZTsgOmF0dHI6YF9fYW5ub3RhdGlvbnNfX2AgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZworICAgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAgY29sbGVjdGVkIGR1cmluZyBtb2R1bGUKKyAgIGJvZHkgZXhlY3V0aW9uOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZQorICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gCisgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDIG1vZHVsZXMKKyAgIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKKyAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkCisgICBsaWJyYXJ5IGZpbGUuCisKICAgIC4uIGluZGV4Ojogc2luZ2xlOiBfX2RpY3RfXyAobW9kdWxlIGF0dHJpYnV0ZSkKIAotICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBhcyBhCi0gICBkaWN0aW9uYXJ5IG9iamVjdC4KKyAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGlzIHRoZSBtb2R1bGUncworICAgbmFtZXNwYWNlIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuCiAKICAgIC4uIGltcGwtZGV0YWlsOjoKIApAQCAtNjk4LDIxICs3MTYsNiBAQAogICAgICAgZGljdGlvbmFyeSBzdGlsbCBoYXMgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeQogICAgICAgb3Iga2VlcCB0aGUgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS4KIAotICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBfX25hbWVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHNpbmdsZTogX19kb2NfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHNpbmdsZTogX19maWxlX18gKG1vZHVsZSBhdHRyaWJ1dGUpCi0gICAgICBwYWlyOiBtb2R1bGU7IG5hbWVzcGFjZQotCi0gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogOmF0dHI6YF9fbmFtZV9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZTsKLSAgIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmCi0gICB1bmF2YWlsYWJsZTsgOmF0dHI6YF9fZmlsZV9fYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUKLSAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgOmF0dHI6YF9fZmlsZV9fYAotICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQyBtb2R1bGVzCi0gICB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzCi0gICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZAotICAgbGlicmFyeSBmaWxlLgotCiBDdXN0b20gY2xhc3NlcwogICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlIHNlY3Rpb24KICAgIDpyZWY6YGNsYXNzYCkuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LgpAQCAtNzYxLDEzICs3NjQsMTcgQEAKICAgICAgIHNpbmdsZTogX19kaWN0X18gKGNsYXNzIGF0dHJpYnV0ZSkKICAgICAgIHNpbmdsZTogX19iYXNlc19fIChjbGFzcyBhdHRyaWJ1dGUpCiAgICAgICBzaW5nbGU6IF9fZG9jX18gKGNsYXNzIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19hbm5vdGF0aW9uc19fIChjbGFzcyBhdHRyaWJ1dGUpCiAKICAgIFNwZWNpYWwgYXR0cmlidXRlczogOmF0dHI6YH5kZWZpbml0aW9uLl9fbmFtZV9fYCBpcyB0aGUgY2xhc3MgbmFtZTsgOmF0dHI6YF9fbW9kdWxlX19gIGlzCiAgICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlCiAgICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzJ3MgbmFtZXNwYWNlOyA6YXR0cjpgfmNsYXNzLl9fYmFzZXNfX2AgaXMgYQogICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsIGluIHRoZQogICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyA6YXR0cjpgX19kb2NfX2AgaXMgdGhlCi0gICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmRlZmluZWQuCisgICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmRlZmluZWQ7CisgICA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YCBjb2xsZWN0ZWQgZHVyaW5nCisgICBjbGFzcyBib2R5IGV4ZWN1dGlvbi4KIAogQ2xhc3MgaW5zdGFuY2VzCiAgICAuLiBpbmRleDo6CkBAIC0xMDYzLDYgKzEwNzAsMTIgQEAKIG9wZXJhdGlvbiByYWlzZSBhbiBleGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5CiA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgb3IgOmV4YzpgVHlwZUVycm9yYCkuCiAKK1NldHRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBgYE5vbmVgYCBpbmRpY2F0ZXMgdGhhdCB0aGUgY29ycmVzcG9uZGluZworb3BlcmF0aW9uIGlzIG5vdCBhdmFpbGFibGUuICBGb3IgZXhhbXBsZSwgaWYgYSBjbGFzcyBzZXRzCis6bWV0aDpgX19pdGVyX19gIHRvIGBgTm9uZWBgLCB0aGUgY2xhc3MgaXMgbm90IGl0ZXJhYmxlLCBzbyBjYWxsaW5nCis6ZnVuYzpgaXRlcmAgb24gaXRzIGluc3RhbmNlcyB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCAod2l0aG91dAorZmFsbGluZyBiYWNrIHRvIDptZXRoOmBfX2dldGl0ZW1fX2ApLiBbI11fCisKIFdoZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgaXQgaXMgaW1wb3J0YW50IHRoYXQKIHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgZGVncmVlIHRoYXQgaXQgbWFrZXMgc2Vuc2UgZm9yIHRoZQogb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsIHNvbWUgc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwKQEAgLTEyMzMsOCArMTI0Niw5IEBACiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKQogCi0gICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBmb3JtYXRgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGUKLSAgIDptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2Qgb2YgY2xhc3MgOmNsYXNzOmBzdHJgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIKKyAgIENhbGxlZCBieSB0aGUgOmZ1bmM6YGZvcm1hdGAgYnVpbHQtaW4gZnVuY3Rpb24sCisgICBhbmQgYnkgZXh0ZW5zaW9uLCBldmFsdWF0aW9uIG9mIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMKKyAgIDxmLXN0cmluZ3M+YCBhbmQgdGhlIDptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2QsIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIgogICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcwogICAgYSBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgZGVzaXJlZC4KICAgIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzIHVwIHRvIHRoZSB0eXBlCkBAIC0xNDkxLDYgKzE1MDUsMTQgQEAKICAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lciBjbGFzcy4KIAogCisuLiBtZXRob2Q6OiBvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKQorCisgICBDYWxsZWQgYXQgdGhlIHRpbWUgdGhlIG93bmluZyBjbGFzcyAqb3duZXIqIGlzIGNyZWF0ZWQuIFRoZQorICAgZGVzY3JpcHRvciBoYXMgYmVlbiBhc3NpZ25lZCB0byAqbmFtZSouCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFRoZSBhdHRyaWJ1dGUgOmF0dHI6YF9fb2JqY2xhc3NfX2AgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlIDptb2Q6YGluc3BlY3RgIG1vZHVsZQogYXMgc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpcwogYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzIGF0dHJpYnV0ZXMpLgpAQCAtMTYyOCwxMSArMTY1MCw1NiBAQAogKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWUgKl9fc2xvdHNfXyouCiAKIAotLi4gX21ldGFjbGFzc2VzOgorLi4gX2NsYXNzLWN1c3RvbWl6YXRpb246CiAKIEN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitXaGVuZXZlciBhIGNsYXNzIGluaGVyaXRzIGZyb20gYW5vdGhlciBjbGFzcywgKl9faW5pdF9zdWJjbGFzc19fKiBpcworY2FsbGVkIG9uIHRoYXQgY2xhc3MuIFRoaXMgd2F5LCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSBjbGFzc2VzIHdoaWNoCitjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHN1YmNsYXNzZXMuIFRoaXMgaXMgY2xvc2VseSByZWxhdGVkIHRvIGNsYXNzCitkZWNvcmF0b3JzLCBidXQgd2hlcmUgY2xhc3MgZGVjb3JhdG9ycyBvbmx5IGFmZmVjdCB0aGUgc3BlY2lmaWMgY2xhc3MgdGhleSdyZQorYXBwbGllZCB0bywgYGBfX2luaXRfc3ViY2xhc3NfX2BgIHNvbGVseSBhcHBsaWVzIHRvIGZ1dHVyZSBzdWJjbGFzc2VzIG9mIHRoZQorY2xhc3MgZGVmaW5pbmcgdGhlIG1ldGhvZC4KKworLi4gY2xhc3NtZXRob2Q6OiBvYmplY3QuX19pbml0X3N1YmNsYXNzX18oY2xzKQorCisgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbnRhaW5pbmcgY2xhc3MgaXMgc3ViY2xhc3NlZC4KKyAgICpjbHMqIGlzIHRoZW4gdGhlIG5ldyBzdWJjbGFzcy4gSWYgZGVmaW5lZCBhcyBhIG5vcm1hbCBpbnN0YW5jZSBtZXRob2QsCisgICB0aGlzIG1ldGhvZCBpcyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhIGNsYXNzIG1ldGhvZC4KKworICAgS2V5d29yZCBhcmd1bWVudHMgd2hpY2ggYXJlIGdpdmVuIHRvIGEgbmV3IGNsYXNzIGFyZSBwYXNzZWQgdG8KKyAgIHRoZSBwYXJlbnQncyBjbGFzcyBgYF9faW5pdF9zdWJjbGFzc19fYGAuIEZvciBjb21wYXRpYmlsaXR5IHdpdGgKKyAgIG90aGVyIGNsYXNzZXMgdXNpbmcgYGBfX2luaXRfc3ViY2xhc3NfX2BgLCBvbmUgc2hvdWxkIHRha2Ugb3V0IHRoZQorICAgbmVlZGVkIGtleXdvcmQgYXJndW1lbnRzIGFuZCBwYXNzIHRoZSBvdGhlcnMgb3ZlciB0byB0aGUgYmFzZQorICAgY2xhc3MsIGFzIGluOjoKKworICAgICAgIGNsYXNzIFBoaWxvc29waGVyOgorICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCBkZWZhdWx0X25hbWUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICBjbHMuZGVmYXVsdF9uYW1lID0gZGVmYXVsdF9uYW1lCisKKyAgICAgICBjbGFzcyBBdXN0cmFsaWFuUGhpbG9zb3BoZXIoUGhpbG9zb3BoZXIsIGRlZmF1bHRfbmFtZT0iQnJ1Y2UiKToKKyAgICAgICAgICAgcGFzcworCisgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBgYG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2BgIGRvZXMKKyAgIG5vdGhpbmcsIGJ1dCByYWlzZXMgYW4gZXJyb3IgaWYgaXQgaXMgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoZSBtZXRhY2xhc3MgaGludCBgYG1ldGFjbGFzc2BgIGlzIGNvbnN1bWVkIGJ5IHRoZSByZXN0IG9mIHRoZSB0eXBlCisgICAgICBtYWNoaW5lcnksIGFuZCBpcyBuZXZlciBwYXNzZWQgdG8gYGBfX2luaXRfc3ViY2xhc3NfX2BgIGltcGxlbWVudGF0aW9ucy4KKyAgICAgIFRoZSBhY3R1YWwgbWV0YWNsYXNzIChyYXRoZXIgdGhhbiB0aGUgZXhwbGljaXQgaGludCkgY2FuIGJlIGFjY2Vzc2VkIGFzCisgICAgICBgYHR5cGUoY2xzKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBfbWV0YWNsYXNzZXM6CisKK01ldGFjbGFzc2VzCiteXl5eXl5eXl5eXgorCiBCeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyA6ZnVuYzpgdHlwZWAuIFRoZSBjbGFzcyBib2R5IGlzCiBleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG8gdGhlCiByZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuCkBAIC0xNjkwLDcgKzE3NTcsNyBAQAogYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLgogCiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzcyBuYW1lc3BhY2UKLWlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IDpmdW5jOmBkaWN0YCBpbnN0YW5jZS4KK2lzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IG9yZGVyZWQgbWFwcGluZy4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE3MzQsOSArMTgwMSw5IEBACiBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLgogCiBXaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgYGB0eXBlLl9fbmV3X19gYCwgdGhlIG9iamVjdCBwcm92aWRlZCBhcyB0aGUKLW5hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgc3RhbmRhcmQgUHl0aG9uIGRpY3Rpb25hcnkgYW5kIHRoZSBvcmlnaW5hbAotb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGJlY29tZXMgdGhlIDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBhdHRyaWJ1dGUKLW9mIHRoZSBjbGFzcyBvYmplY3QuCituYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIG5ldyBvcmRlcmVkIG1hcHBpbmcgYW5kIHRoZSBvcmlnaW5hbAorb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGlzIHdyYXBwZWQgaW4gYSByZWFkLW9ubHkgcHJveHksIHdoaWNoCitiZWNvbWVzIHRoZSA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgYXR0cmlidXRlIG9mIHRoZSBjbGFzcyBvYmplY3QuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMDU5LDcgKzIxMjYsNyBAQAogICAgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgQGBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCwgOmZ1bmM6YGRpdm1vZGAsCiAgICA6ZnVuYzpgcG93YCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLCBgYHxgYCkgd2l0aCByZWZsZWN0ZWQKICAgIChzd2FwcGVkKSBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzCi0gICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50CisgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gWyNdXyBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQKICAgIHR5cGVzLiBbI11fIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMKICAgIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gOm1ldGg6YF9fcnN1Yl9fYCBtZXRob2QsIGBgeS5fX3JzdWJfXyh4KWBgCiAgICBpcyBjYWxsZWQgaWYgYGB4Ll9fc3ViX18oeSlgYCByZXR1cm5zICpOb3RJbXBsZW1lbnRlZCouCkBAIC0yNDc1LDYgKzI1NDIsMTcgQEAKICAgIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzbid0IGEgZ29vZCBpZGVhIHRob3VnaCwgc2luY2UgaXQgY2FuCiAgICBsZWFkIHRvIHNvbWUgdmVyeSBzdHJhbmdlIGJlaGF2aW91ciBpZiBpdCBpcyBoYW5kbGVkIGluY29ycmVjdGx5LgogCisuLiBbI10gVGhlIDptZXRoOmBfX2hhc2hfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIDptZXRoOmBfX3JldmVyc2VkX19gLCBhbmQKKyAgIDptZXRoOmBfX2NvbnRhaW5zX19gIG1ldGhvZHMgaGF2ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGlzOyBvdGhlcnMKKyAgIHdpbGwgc3RpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLCBidXQgbWF5IGRvIHNvIGJ5IHJlbHlpbmcgb24KKyAgIHRoZSBiZWhhdmlvciB0aGF0IGBgTm9uZWBgIGlzIG5vdCBjYWxsYWJsZS4KKworLi4gWyNdICJEb2VzIG5vdCBzdXBwb3J0IiBoZXJlIG1lYW5zIHRoYXQgdGhlIGNsYXNzIGhhcyBubyBzdWNoIG1ldGhvZCwgb3IKKyAgIHRoZSBtZXRob2QgcmV0dXJucyBgYE5vdEltcGxlbWVudGVkYGAuICBEbyBub3Qgc2V0IHRoZSBtZXRob2QgdG8KKyAgIGBgTm9uZWBgIGlmIHlvdSB3YW50IHRvIGZvcmNlIGZhbGxiYWNrIHRvIHRoZSByaWdodCBvcGVyYW5kJ3MgcmVmbGVjdGVkCisgICBtZXRob2QtLXRoYXQgd2lsbCBpbnN0ZWFkIGhhdmUgdGhlIG9wcG9zaXRlIGVmZmVjdCBvZiBleHBsaWNpdGx5CisgICAqYmxvY2tpbmcqIHN1Y2ggZmFsbGJhY2suCisKIC4uIFsjXSBGb3Igb3BlcmFuZHMgb2YgdGhlIHNhbWUgdHlwZSwgaXQgaXMgYXNzdW1lZCB0aGF0IGlmIHRoZSBub24tcmVmbGVjdGVkIG1ldGhvZAogICAgKHN1Y2ggYXMgOm1ldGg6YF9fYWRkX19gKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUKICAgIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdCBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAppbmRleCA2NDMwMmI4Li41ZTJjMWM4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CkBAIC0zNiw3ICszNiw3IEBACiAKIFdoZW4gYSBtb2R1bGUgaXMgZmlyc3QgaW1wb3J0ZWQsIFB5dGhvbiBzZWFyY2hlcyBmb3IgdGhlIG1vZHVsZSBhbmQgaWYgZm91bmQsCiBpdCBjcmVhdGVzIGEgbW9kdWxlIG9iamVjdCBbI2ZubW9dXywgaW5pdGlhbGl6aW5nIGl0LiAgSWYgdGhlIG5hbWVkIG1vZHVsZQotY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgUHl0aG9uIGltcGxlbWVudHMgdmFyaW91cworY2Fubm90IGJlIGZvdW5kLCBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCiBzdHJhdGVnaWVzIHRvIHNlYXJjaCBmb3IgdGhlIG5hbWVkIG1vZHVsZSB3aGVuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGlzCiBpbnZva2VkLiAgVGhlc2Ugc3RyYXRlZ2llcyBjYW4gYmUgbW9kaWZpZWQgYW5kIGV4dGVuZGVkIGJ5IHVzaW5nIHZhcmlvdXMgaG9va3MKIGRlc2NyaWJlZCBpbiB0aGUgc2VjdGlvbnMgYmVsb3cuCkBAIC0xNjcsNyArMTY3LDcgQEAKIFRoaXMgbmFtZSB3aWxsIGJlIHVzZWQgaW4gdmFyaW91cyBwaGFzZXMgb2YgdGhlIGltcG9ydCBzZWFyY2gsIGFuZCBpdCBtYXkgYmUKIHRoZSBkb3R0ZWQgcGF0aCB0byBhIHN1Ym1vZHVsZSwgZS5nLiBgYGZvby5iYXIuYmF6YGAuICBJbiB0aGlzIGNhc2UsIFB5dGhvbgogZmlyc3QgdHJpZXMgdG8gaW1wb3J0IGBgZm9vYGAsIHRoZW4gYGBmb28uYmFyYGAsIGFuZCBmaW5hbGx5IGBgZm9vLmJhci5iYXpgYC4KLUlmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KK0lmIGFueSBvZiB0aGUgaW50ZXJtZWRpYXRlIGltcG9ydHMgZmFpbCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLgogCiAKIFRoZSBtb2R1bGUgY2FjaGUKQEAgLTE4Niw3ICsxODYsNyBAQAogRHVyaW5nIGltcG9ydCwgdGhlIG1vZHVsZSBuYW1lIGlzIGxvb2tlZCB1cCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGFuZCBpZgogcHJlc2VudCwgdGhlIGFzc29jaWF0ZWQgdmFsdWUgaXMgdGhlIG1vZHVsZSBzYXRpc2Z5aW5nIHRoZSBpbXBvcnQsIGFuZCB0aGUKIHByb2Nlc3MgY29tcGxldGVzLiAgSG93ZXZlciwgaWYgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCB0aGVuIGFuCi06ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIG1pc3NpbmcsIFB5dGhvbiB3aWxsCis6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZywgUHl0aG9uIHdpbGwKIGNvbnRpbnVlIHNlYXJjaGluZyBmb3IgdGhlIG1vZHVsZS4KIAogOmRhdGE6YHN5cy5tb2R1bGVzYCBpcyB3cml0YWJsZS4gIERlbGV0aW5nIGEga2V5IG1heSBub3QgZGVzdHJveSB0aGUKQEAgLTE5NCw3ICsxOTQsNyBAQAogYnV0IGl0IHdpbGwgaW52YWxpZGF0ZSB0aGUgY2FjaGUgZW50cnkgZm9yIHRoZSBuYW1lZCBtb2R1bGUsIGNhdXNpbmcKIFB5dGhvbiB0byBzZWFyY2ggYW5ldyBmb3IgdGhlIG5hbWVkIG1vZHVsZSB1cG9uIGl0cyBuZXh0CiBpbXBvcnQuIFRoZSBrZXkgY2FuIGFsc28gYmUgYXNzaWduZWQgdG8gYGBOb25lYGAsIGZvcmNpbmcgdGhlIG5leHQgaW1wb3J0Ci1vZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAuCitvZiB0aGUgbW9kdWxlIHRvIHJlc3VsdCBpbiBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYC4KIAogQmV3YXJlIHRob3VnaCwgYXMgaWYgeW91IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsCiBpbnZhbGlkYXRlIGl0cyBjYWNoZSBlbnRyeSBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBhbmQgdGhlbiByZS1pbXBvcnQgdGhlCkBAIC0yODgsOCArMjg4LDggQEAKIElmIHRoZSBtZXRhIHBhdGggZmluZGVyIGtub3dzIGhvdyB0byBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBhCiBzcGVjIG9iamVjdC4gIElmIGl0IGNhbm5vdCBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBgYE5vbmVgYC4gIElmCiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgcHJvY2Vzc2luZyByZWFjaGVzIHRoZSBlbmQgb2YgaXRzIGxpc3Qgd2l0aG91dCByZXR1cm5pbmcKLWEgc3BlYywgdGhlbiBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMgcmFpc2VkCi1hcmUgc2ltcGx5IHByb3BhZ2F0ZWQgdXAsIGFib3J0aW5nIHRoZSBpbXBvcnQgcHJvY2Vzcy4KK2Egc3BlYywgdGhlbiBhIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIEFueSBvdGhlciBleGNlcHRpb25zCityYWlzZWQgYXJlIHNpbXBseSBwcm9wYWdhdGVkIHVwLCBhYm9ydGluZyB0aGUgaW1wb3J0IHByb2Nlc3MuCiAKIFRoZSA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXIuZmluZF9zcGVjKClgIG1ldGhvZCBvZiBtZXRhIHBhdGgKIGZpbmRlcnMgaXMgY2FsbGVkIHdpdGggdHdvIG9yIHRocmVlIGFyZ3VtZW50cy4gIFRoZSBmaXJzdCBpcyB0aGUgZnVsbHkKQEAgLTI5OCw5ICsyOTgsOSBAQAogdG9wLWxldmVsIG1vZHVsZXMsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYGBOb25lYGAsIGJ1dCBmb3Igc3VibW9kdWxlcyBvcgogc3VicGFja2FnZXMsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJlbnQgcGFja2FnZSdzCiBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLiBJZiB0aGUgYXBwcm9wcmlhdGUgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBjYW5ub3QKLWJlIGFjY2Vzc2VkLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgVGhlIHRoaXJkIGFyZ3VtZW50IGlzIGFuCi1leGlzdGluZyBtb2R1bGUgb2JqZWN0IHRoYXQgd2lsbCBiZSB0aGUgdGFyZ2V0IG9mIGxvYWRpbmcgbGF0ZXIuICBUaGUKLWltcG9ydCBzeXN0ZW0gcGFzc2VzIGluIGEgdGFyZ2V0IG1vZHVsZSBvbmx5IGR1cmluZyByZWxvYWQuCitiZSBhY2Nlc3NlZCwgYW4gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgVGhlIHRoaXJkIGFyZ3VtZW50CitpcyBhbiBleGlzdGluZyBtb2R1bGUgb2JqZWN0IHRoYXQgd2lsbCBiZSB0aGUgdGFyZ2V0IG9mIGxvYWRpbmcgbGF0ZXIuCitUaGUgaW1wb3J0IHN5c3RlbSBwYXNzZXMgaW4gYSB0YXJnZXQgbW9kdWxlIG9ubHkgZHVyaW5nIHJlbG9hZC4KIAogVGhlIG1ldGEgcGF0aCBtYXkgYmUgdHJhdmVyc2VkIG11bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBpbXBvcnQgcmVxdWVzdC4KIEZvciBleGFtcGxlLCBhc3N1bWluZyBub25lIG9mIHRoZSBtb2R1bGVzIGludm9sdmVkIGhhcyBhbHJlYWR5IGJlZW4gY2FjaGVkLApAQCAtNTU0LDE5ICs1NTQsMzAgQEAKICAgIGRldGFpbHMuCiAKICAgIFRoaXMgYXR0cmlidXRlIGlzIHVzZWQgaW5zdGVhZCBvZiBgYF9fbmFtZV9fYGAgdG8gY2FsY3VsYXRlIGV4cGxpY2l0Ci0gICByZWxhdGl2ZSBpbXBvcnRzIGZvciBtYWluIG1vZHVsZXMsIGFzIGRlZmluZWQgaW4gOnBlcDpgMzY2YC4KKyAgIHJlbGF0aXZlIGltcG9ydHMgZm9yIG1haW4gbW9kdWxlcywgYXMgZGVmaW5lZCBpbiA6cGVwOmAzNjZgLiBJdCBpcworICAgZXhwZWN0ZWQgdG8gaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyBgYF9fc3BlY19fLnBhcmVudGBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIHZhbHVlIG9mIGBgX19wYWNrYWdlX19gYCBpcyBleHBlY3RlZCB0byBiZSB0aGUgc2FtZSBhcworICAgICAgYGBfX3NwZWNfXy5wYXJlbnRgYC4KIAogLi4gYXR0cmlidXRlOjogX19zcGVjX18KIAogICAgVGhlIGBgX19zcGVjX19gYCBhdHRyaWJ1dGUgbXVzdCBiZSBzZXQgdG8gdGhlIG1vZHVsZSBzcGVjIHRoYXQgd2FzCi0gICB1c2VkIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUuICBUaGlzIGlzIHVzZWQgcHJpbWFyaWx5IGZvcgotICAgaW50cm9zcGVjdGlvbiBhbmQgZHVyaW5nIHJlbG9hZGluZy4gIFNldHRpbmcgYGBfX3NwZWNfX2BgCisgICB1c2VkIHdoZW4gaW1wb3J0aW5nIHRoZSBtb2R1bGUuIFNldHRpbmcgYGBfX3NwZWNfX2BgCiAgICBhcHByb3ByaWF0ZWx5IGFwcGxpZXMgZXF1YWxseSB0byA6cmVmOmBtb2R1bGVzIGluaXRpYWxpemVkIGR1cmluZwogICAgaW50ZXJwcmV0ZXIgc3RhcnR1cCA8cHJvZ3JhbXM+YC4gIFRoZSBvbmUgZXhjZXB0aW9uIGlzIGBgX19tYWluX19gYCwKICAgIHdoZXJlIGBgX19zcGVjX19gYCBpcyA6cmVmOmBzZXQgdG8gTm9uZSBpbiBzb21lIGNhc2VzIDxtYWluX3NwZWM+YC4KIAorICAgV2hlbiBgYF9fcGFja2FnZV9fYGAgaXMgbm90IGRlZmluZWQsIGBgX19zcGVjX18ucGFyZW50YGAgaXMgdXNlZCBhcworICAgYSBmYWxsYmFjay4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYF9fc3BlY19fLnBhcmVudGBgIGlzIHVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIGBgX19wYWNrYWdlX19gYCBpcworICAgICAgbm90IGRlZmluZWQuCisKIC4uIGF0dHJpYnV0ZTo6IF9fcGF0aF9fCiAKICAgIElmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIChlaXRoZXIgcmVndWxhciBvciBuYW1lc3BhY2UpLCB0aGUgbW9kdWxlCkBAIC04NzYsNyArODg3LDcgQEAKIAogVG8gc2VsZWN0aXZlbHkgcHJldmVudCBpbXBvcnQgb2Ygc29tZSBtb2R1bGVzIGZyb20gYSBob29rIGVhcmx5IG9uIHRoZQogbWV0YSBwYXRoIChyYXRoZXIgdGhhbiBkaXNhYmxpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0gZW50aXJlbHkpLAotaXQgaXMgc3VmZmljaWVudCB0byByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZGlyZWN0bHkgZnJvbQoraXQgaXMgc3VmZmljaWVudCB0byByYWlzZSA6ZXhjOmBNb2R1bGVOb0ZvdW5kRXJyb3JgIGRpcmVjdGx5IGZyb20KIDptZXRoOmB+aW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlci5maW5kX3NwZWNgIGluc3RlYWQgb2YgcmV0dXJuaW5nCiBgYE5vbmVgYC4gVGhlIGxhdHRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgbWV0YSBwYXRoIHNlYXJjaCBzaG91bGQgY29udGludWUsCiB3aGlsZSByYWlzaW5nIGFuIGV4Y2VwdGlvbiB0ZXJtaW5hdGVzIGl0IGltbWVkaWF0ZWx5LgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKaW5kZXggMzdmMjVmMS4uZGE3MDE3YSAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CkBAIC00MDUsNyArNDA1LDggQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgc3RyaW5nbGl0ZXJhbDogW2BzdHJpbmdwcmVmaXhgXShgc2hvcnRzdHJpbmdgIHwgYGxvbmdzdHJpbmdgKQotICAgc3RyaW5ncHJlZml4OiAiciIgfCAidSIgfCAiUiIgfCAiVSIKKyAgIHN0cmluZ3ByZWZpeDogInIiIHwgInUiIHwgIlIiIHwgIlUiIHwgImYiIHwgIkYiCisgICAgICAgICAgICAgICA6IHwgImZyIiB8ICJGciIgfCAiZlIiIHwgIkZSIiB8ICJyZiIgfCAickYiIHwgIlJmIiB8ICJSRiIKICAgIHNob3J0c3RyaW5nOiAiJyIgYHNob3J0c3RyaW5naXRlbWAqICInIiB8ICciJyBgc2hvcnRzdHJpbmdpdGVtYCogJyInCiAgICBsb25nc3RyaW5nOiAiJycnIiBgbG9uZ3N0cmluZ2l0ZW1gKiAiJycnIiB8ICciIiInIGBsb25nc3RyaW5naXRlbWAqICciIiInCiAgICBzaG9ydHN0cmluZ2l0ZW06IGBzaG9ydHN0cmluZ2NoYXJgIHwgYHN0cmluZ2VzY2FwZXNlcWAKQEAgLTQ2NCw2ICs0NjUsMTEgQEAKICAgIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsIFB5dGhvbiAyLnggYW5kIDMueCBjb2RlYmFzZXMuCiAgICBTZWUgOnBlcDpgNDE0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAorQSBzdHJpbmcgbGl0ZXJhbCB3aXRoIGBgJ2YnYGAgb3IgYGAnRidgYCBpbiBpdHMgcHJlZml4IGlzIGEKKzpkZm46YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbGA7IHNlZSA6cmVmOmBmLXN0cmluZ3NgLiAgVGhlIGBgJ2YnYGAgbWF5IGJlCitjb21iaW5lZCB3aXRoIGBgJ3InYGAsIGJ1dCBub3Qgd2l0aCBgYCdiJ2BgIG9yIGBgJ3UnYGAsIHRoZXJlZm9yZSByYXcKK2Zvcm1hdHRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSwgYnV0IGZvcm1hdHRlZCBieXRlcyBsaXRlcmFscyBhcmUgbm90LgorCiBJbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZCAoYW5kIGFyZQogcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93IHRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gIChBCiAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZSBsaXRlcmFsLCBpLmUuIGVpdGhlciBgYCdgYCBvciBgYCJgYC4pCkBAIC01NTQsNiArNTYwLDEwIEBACiBlc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZgogdW5yZWNvZ25pemVkIGVzY2FwZXMgZm9yIGJ5dGVzIGxpdGVyYWxzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgcHJvZHVjZSBhIERlcHJlY2F0aW9uV2FybmluZy4gIEluCisgICAgICBzb21lIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbiB0aGV5IHdpbGwgYmUgYSBTeW50YXhFcnJvci4KKwogRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgYnV0IHRoZQogYmFja3NsYXNoIHJlbWFpbnMgaW4gdGhlIHJlc3VsdDsgZm9yIGV4YW1wbGUsIGBgciJcIiJgYCBpcyBhIHZhbGlkIHN0cmluZwogbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSBkb3VibGUgcXVvdGU7IGBgciJcImBgCkBAIC01ODMsNyArNTkzLDExMSBAQAogTm90ZSB0aGF0IHRoaXMgZmVhdHVyZSBpcyBkZWZpbmVkIGF0IHRoZSBzeW50YWN0aWNhbCBsZXZlbCwgYnV0IGltcGxlbWVudGVkIGF0CiBjb21waWxlIHRpbWUuICBUaGUgJysnIG9wZXJhdG9yIG11c3QgYmUgdXNlZCB0byBjb25jYXRlbmF0ZSBzdHJpbmcgZXhwcmVzc2lvbnMKIGF0IHJ1biB0aW1lLiAgQWxzbyBub3RlIHRoYXQgbGl0ZXJhbCBjb25jYXRlbmF0aW9uIGNhbiB1c2UgZGlmZmVyZW50IHF1b3RpbmcKLXN0eWxlcyBmb3IgZWFjaCBjb21wb25lbnQgKGV2ZW4gbWl4aW5nIHJhdyBzdHJpbmdzIGFuZCB0cmlwbGUgcXVvdGVkIHN0cmluZ3MpLgorc3R5bGVzIGZvciBlYWNoIGNvbXBvbmVudCAoZXZlbiBtaXhpbmcgcmF3IHN0cmluZ3MgYW5kIHRyaXBsZSBxdW90ZWQgc3RyaW5ncyksCithbmQgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBtYXkgYmUgY29uY2F0ZW5hdGVkIHdpdGggcGxhaW4gc3RyaW5nIGxpdGVyYWxzLgorCisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsCisgICBzaW5nbGU6IGludGVycG9sYXRlZCBzdHJpbmcgbGl0ZXJhbAorICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdHRlZCBsaXRlcmFsCisgICBzaW5nbGU6IHN0cmluZzsgaW50ZXJwb2xhdGVkIGxpdGVyYWwKKyAgIHNpbmdsZTogZi1zdHJpbmcKKy4uIF9mLXN0cmluZ3M6CisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0EgOmRmbjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsYCBvciA6ZGZuOmBmLXN0cmluZ2AgaXMgYSBzdHJpbmcgbGl0ZXJhbAordGhhdCBpcyBwcmVmaXhlZCB3aXRoIGBgJ2YnYGAgb3IgYGAnRidgYC4gIFRoZXNlIHN0cmluZ3MgbWF5IGNvbnRhaW4KK3JlcGxhY2VtZW50IGZpZWxkcywgd2hpY2ggYXJlIGV4cHJlc3Npb25zIGRlbGltaXRlZCBieSBjdXJseSBicmFjZXMgYGB7fWBgLgorV2hpbGUgb3RoZXIgc3RyaW5nIGxpdGVyYWxzIGFsd2F5cyBoYXZlIGEgY29uc3RhbnQgdmFsdWUsIGZvcm1hdHRlZCBzdHJpbmdzCithcmUgcmVhbGx5IGV4cHJlc3Npb25zIGV2YWx1YXRlZCBhdCBydW4gdGltZS4KKworRXNjYXBlIHNlcXVlbmNlcyBhcmUgZGVjb2RlZCBsaWtlIGluIG9yZGluYXJ5IHN0cmluZyBsaXRlcmFscyAoZXhjZXB0IHdoZW4KK2EgbGl0ZXJhbCBpcyBhbHNvIG1hcmtlZCBhcyBhIHJhdyBzdHJpbmcpLiAgQWZ0ZXIgZGVjb2RpbmcsIHRoZSBncmFtbWFyCitmb3IgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJpbmcgaXM6CisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGZfc3RyaW5nOiAoYGxpdGVyYWxfY2hhcmAgfCAie3siIHwgIn19IiB8IGByZXBsYWNlbWVudF9maWVsZGApKgorICAgcmVwbGFjZW1lbnRfZmllbGQ6ICJ7IiBgZl9leHByZXNzaW9uYCBbIiEiIGBjb252ZXJzaW9uYF0gWyI6IiBgZm9ybWF0X3NwZWNgXSAifSIKKyAgIGZfZXhwcmVzc2lvbjogKGBjb25kaXRpb25hbF9leHByZXNzaW9uYCB8ICIqIiBgb3JfZXhwcmApCisgICAgICAgICAgICAgICA6ICAgKCIsIiBgY29uZGl0aW9uYWxfZXhwcmVzc2lvbmAgfCAiLCIgIioiIGBvcl9leHByYCkqIFsiLCJdCisgICAgICAgICAgICAgICA6IHwgYHlpZWxkX2V4cHJlc3Npb25gCisgICBjb252ZXJzaW9uOiAicyIgfCAiciIgfCAiYSIKKyAgIGZvcm1hdF9zcGVjOiAoYGxpdGVyYWxfY2hhcmAgfCBOVUxMIHwgYHJlcGxhY2VtZW50X2ZpZWxkYCkqCisgICBsaXRlcmFsX2NoYXI6IDxhbnkgY29kZSBwb2ludCBleGNlcHQgInsiLCAifSIgb3IgTlVMTD4KKworVGhlIHBhcnRzIG9mIHRoZSBzdHJpbmcgb3V0c2lkZSBjdXJseSBicmFjZXMgYXJlIHRyZWF0ZWQgbGl0ZXJhbGx5LAorZXhjZXB0IHRoYXQgYW55IGRvdWJsZWQgY3VybHkgYnJhY2VzIGBgJ3t7J2BgIG9yIGBgJ319J2BgIGFyZSByZXBsYWNlZAord2l0aCB0aGUgY29ycmVzcG9uZGluZyBzaW5nbGUgY3VybHkgYnJhY2UuICBBIHNpbmdsZSBvcGVuaW5nIGN1cmx5CiticmFja2V0IGBgJ3snYGAgbWFya3MgYSByZXBsYWNlbWVudCBmaWVsZCwgd2hpY2ggc3RhcnRzIHdpdGggYQorUHl0aG9uIGV4cHJlc3Npb24uICBBZnRlciB0aGUgZXhwcmVzc2lvbiwgdGhlcmUgbWF5IGJlIGEgY29udmVyc2lvbiBmaWVsZCwKK2ludHJvZHVjZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgYGAnISdgYC4gIEEgZm9ybWF0IHNwZWNpZmllciBtYXkgYWxzbworYmUgYXBwZW5kZWQsIGludHJvZHVjZWQgYnkgYSBjb2xvbiBgYCc6J2BgLiAgQSByZXBsYWNlbWVudCBmaWVsZCBlbmRzCit3aXRoIGEgY2xvc2luZyBjdXJseSBicmFja2V0IGBgJ30nYGAuCisKK0V4cHJlc3Npb25zIGluIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYXJlIHRyZWF0ZWQgbGlrZSByZWd1bGFyCitQeXRob24gZXhwcmVzc2lvbnMgc3Vycm91bmRlZCBieSBwYXJlbnRoZXNlcywgd2l0aCBhIGZldyBleGNlcHRpb25zLgorQW4gZW1wdHkgZXhwcmVzc2lvbiBpcyBub3QgYWxsb3dlZCwgYW5kIGEgOmtleXdvcmQ6YGxhbWJkYWAgZXhwcmVzc2lvbgorbXVzdCBiZSBzdXJyb3VuZGVkIGJ5IGV4cGxpY2l0IHBhcmVudGhlc2VzLiAgUmVwbGFjZW1lbnQgZXhwcmVzc2lvbnMKK2NhbiBjb250YWluIGxpbmUgYnJlYWtzIChlLmcuIGluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncyksIGJ1dCB0aGV5CitjYW5ub3QgY29udGFpbiBjb21tZW50cy4gIEVhY2ggZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQKK3doZXJlIHRoZSBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwgYXBwZWFycywgaW4gb3JkZXIgZnJvbSBsZWZ0IHRvIHJpZ2h0LgorCitJZiBhIGNvbnZlcnNpb24gaXMgc3BlY2lmaWVkLCB0aGUgcmVzdWx0IG9mIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24KK2lzIGNvbnZlcnRlZCBiZWZvcmUgZm9ybWF0dGluZy4gIENvbnZlcnNpb24gYGAnIXMnYGAgY2FsbHMgOmZ1bmM6YHN0cmAgb24KK3RoZSByZXN1bHQsIGBgJyFyJ2BgIGNhbGxzIDpmdW5jOmByZXByYCwgYW5kIGBgJyFhJ2BgIGNhbGxzIDpmdW5jOmBhc2NpaWAuCisKK1RoZSByZXN1bHQgaXMgdGhlbiBmb3JtYXR0ZWQgdXNpbmcgdGhlIDpmdW5jOmBmb3JtYXRgIHByb3RvY29sLiAgVGhlCitmb3JtYXQgc3BlY2lmaWVyIGlzIHBhc3NlZCB0byB0aGUgOm1ldGg6YF9fZm9ybWF0X19gIG1ldGhvZCBvZiB0aGUKK2V4cHJlc3Npb24gb3IgY29udmVyc2lvbiByZXN1bHQuICBBbiBlbXB0eSBzdHJpbmcgaXMgcGFzc2VkIHdoZW4gdGhlCitmb3JtYXQgc3BlY2lmaWVyIGlzIG9taXR0ZWQuICBUaGUgZm9ybWF0dGVkIHJlc3VsdCBpcyB0aGVuIGluY2x1ZGVkIGluCit0aGUgZmluYWwgdmFsdWUgb2YgdGhlIHdob2xlIHN0cmluZy4KKworVG9wLWxldmVsIGZvcm1hdCBzcGVjaWZpZXJzIG1heSBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMuCitUaGVzZSBuZXN0ZWQgZmllbGRzIG1heSBpbmNsdWRlIHRoZWlyIG93biBjb252ZXJzaW9uIGZpZWxkcyBhbmQKK2Zvcm1hdCBzcGVjaWZpZXJzLCBidXQgbWF5IG5vdCBpbmNsdWRlIG1vcmUgZGVlcGx5LW5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMuCisKK0Zvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgbWF5IGJlIGNvbmNhdGVuYXRlZCwgYnV0IHJlcGxhY2VtZW50IGZpZWxkcworY2Fubm90IGJlIHNwbGl0IGFjcm9zcyBsaXRlcmFscy4KKworU29tZSBleGFtcGxlcyBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzOjoKKworICAgPj4+IG5hbWUgPSAiRnJlZCIKKyAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge25hbWUhcn0uIgorICAgIkhlIHNhaWQgaGlzIG5hbWUgaXMgJ0ZyZWQnLiIKKyAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge3JlcHIobmFtZSl9LiIgICMgcmVwcigpIGlzIGVxdWl2YWxlbnQgdG8gIXIKKyAgICJIZSBzYWlkIGhpcyBuYW1lIGlzICdGcmVkJy4iCisgICA+Pj4gd2lkdGggPSAxMAorICAgPj4+IHByZWNpc2lvbiA9IDQKKyAgID4+PiB2YWx1ZSA9IGRlY2ltYWwuRGVjaW1hbCgiMTIuMzQ1NjciKQorICAgPj4+IGYicmVzdWx0OiB7dmFsdWU6e3dpZHRofS57cHJlY2lzaW9ufX0iICAjIG5lc3RlZCBmaWVsZHMKKyAgICdyZXN1bHQ6ICAgICAgMTIuMzUnCisKK0EgY29uc2VxdWVuY2Ugb2Ygc2hhcmluZyB0aGUgc2FtZSBzeW50YXggYXMgcmVndWxhciBzdHJpbmcgbGl0ZXJhbHMgaXMKK3RoYXQgY2hhcmFjdGVycyBpbiB0aGUgcmVwbGFjZW1lbnQgZmllbGRzIG11c3Qgbm90IGNvbmZsaWN0IHdpdGggdGhlCitxdW90aW5nIHVzZWQgaW4gdGhlIG91dGVyIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbDo6CisKKyAgIGYiYWJjIHthWyJ4Il19IGRlZiIgICAgIyBlcnJvcjogb3V0ZXIgc3RyaW5nIGxpdGVyYWwgZW5kZWQgcHJlbWF0dXJlbHkKKyAgIGYiYWJjIHthWyd4J119IGRlZiIgICAgIyB3b3JrYXJvdW5kOiB1c2UgZGlmZmVyZW50IHF1b3RpbmcKKworQmFja3NsYXNoZXMgYXJlIG5vdCBhbGxvd2VkIGluIGZvcm1hdCBleHByZXNzaW9ucyBhbmQgd2lsbCByYWlzZQorYW4gZXJyb3I6OgorCisgICBmIm5ld2xpbmU6IHtvcmQoJ1xuJyl9IiAgIyByYWlzZXMgU3ludGF4RXJyb3IKKworVG8gaW5jbHVkZSBhIHZhbHVlIGluIHdoaWNoIGEgYmFja3NsYXNoIGVzY2FwZSBpcyByZXF1aXJlZCwgY3JlYXRlCithIHRlbXBvcmFyeSB2YXJpYWJsZS4KKworICAgPj4+IG5ld2xpbmUgPSBvcmQoJ1xuJykKKyAgID4+PiBmIm5ld2xpbmU6IHtuZXdsaW5lfSIKKyAgICduZXdsaW5lOiAxMCcKKworU2VlIGFsc28gOnBlcDpgNDk4YCBmb3IgdGhlIHByb3Bvc2FsIHRoYXQgYWRkZWQgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscywKK2FuZCA6bWV0aDpgc3RyLmZvcm1hdGAsIHdoaWNoIHVzZXMgYSByZWxhdGVkIGZvcm1hdCBzdHJpbmcgbWVjaGFuaXNtLgogCiAKIC4uIF9udW1iZXJzOgpAQCAtNjEyLDIwICs3MjYsMjQgQEAKIEludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIGludGVnZXI6IGBkZWNpbWFsaW50ZWdlcmAgfCBgb2N0aW50ZWdlcmAgfCBgaGV4aW50ZWdlcmAgfCBgYmluaW50ZWdlcmAKLSAgIGRlY2ltYWxpbnRlZ2VyOiBgbm9uemVyb2RpZ2l0YCBgZGlnaXRgKiB8ICIwIisKKyAgIGludGVnZXI6IGBkZWNpbnRlZ2VyYCB8IGBiaW5pbnRlZ2VyYCB8IGBvY3RpbnRlZ2VyYCB8IGBoZXhpbnRlZ2VyYAorICAgZGVjaW50ZWdlcjogYG5vbnplcm9kaWdpdGAgKFsiXyJdIGBkaWdpdGApKiB8ICIwIisgKFsiXyJdICIwIikqCisgICBiaW5pbnRlZ2VyOiAiMCIgKCJiIiB8ICJCIikgKFsiXyJdIGBiaW5kaWdpdGApKworICAgb2N0aW50ZWdlcjogIjAiICgibyIgfCAiTyIpIChbIl8iXSBgb2N0ZGlnaXRgKSsKKyAgIGhleGludGVnZXI6ICIwIiAoIngiIHwgIlgiKSAoWyJfIl0gYGhleGRpZ2l0YCkrCiAgICBub256ZXJvZGlnaXQ6ICIxIi4uLiI5IgogICAgZGlnaXQ6ICIwIi4uLiI5IgotICAgb2N0aW50ZWdlcjogIjAiICgibyIgfCAiTyIpIGBvY3RkaWdpdGArCi0gICBoZXhpbnRlZ2VyOiAiMCIgKCJ4IiB8ICJYIikgYGhleGRpZ2l0YCsKLSAgIGJpbmludGVnZXI6ICIwIiAoImIiIHwgIkIiKSBgYmluZGlnaXRgKworICAgYmluZGlnaXQ6ICIwIiB8ICIxIgogICAgb2N0ZGlnaXQ6ICIwIi4uLiI3IgogICAgaGV4ZGlnaXQ6IGBkaWdpdGAgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiIKLSAgIGJpbmRpZ2l0OiAiMCIgfCAiMSIKIAogVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXQgY2FuIGJlCiBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS4KIAorVW5kZXJzY29yZXMgYXJlIGlnbm9yZWQgZm9yIGRldGVybWluaW5nIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBsaXRlcmFsLiAgVGhleQorY2FuIGJlIHVzZWQgdG8gZ3JvdXAgZGlnaXRzIGZvciBlbmhhbmNlZCByZWFkYWJpbGl0eS4gIE9uZSB1bmRlcnNjb3JlIGNhbiBvY2N1cgorYmV0d2VlbiBkaWdpdHMsIGFuZCBhZnRlciBiYXNlIHNwZWNpZmllcnMgbGlrZSBgYDB4YGAuCisKIE5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLiBUaGlzIGlzCiBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob24gdXNlZCBiZWZvcmUgdmVyc2lvbgogMy4wLgpAQCAtNjM0LDYgKzc1MiwxMCBAQAogCiAgICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTEKICAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweGRlYWRiZWVmCisgICAgICAgICAxMDBfMDAwXzAwMF8wMDAgICAgICAgICAgICAgICAgICAgMGJfMTExMF8wMTAxCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yIGdyb3VwaW5nIHB1cnBvc2VzIGluIGxpdGVyYWxzLgogCiAKIC4uIF9mbG9hdGluZzoKQEAgLTY0NSwyMyArNzY3LDI4IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIGZsb2F0bnVtYmVyOiBgcG9pbnRmbG9hdGAgfCBgZXhwb25lbnRmbG9hdGAKLSAgIHBvaW50ZmxvYXQ6IFtgaW50cGFydGBdIGBmcmFjdGlvbmAgfCBgaW50cGFydGAgIi4iCi0gICBleHBvbmVudGZsb2F0OiAoYGludHBhcnRgIHwgYHBvaW50ZmxvYXRgKSBgZXhwb25lbnRgCi0gICBpbnRwYXJ0OiBgZGlnaXRgKwotICAgZnJhY3Rpb246ICIuIiBgZGlnaXRgKwotICAgZXhwb25lbnQ6ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGBkaWdpdGArCisgICBwb2ludGZsb2F0OiBbYGRpZ2l0cGFydGBdIGBmcmFjdGlvbmAgfCBgZGlnaXRwYXJ0YCAiLiIKKyAgIGV4cG9uZW50ZmxvYXQ6IChgZGlnaXRwYXJ0YCB8IGBwb2ludGZsb2F0YCkgYGV4cG9uZW50YAorICAgZGlnaXRwYXJ0OiBgZGlnaXRgIChbIl8iXSBgZGlnaXRgKSoKKyAgIGZyYWN0aW9uOiAiLiIgYGRpZ2l0cGFydGAKKyAgIGV4cG9uZW50OiAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBgZGlnaXRwYXJ0YAogCiBOb3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIGFyZSBhbHdheXMgaW50ZXJwcmV0ZWQgdXNpbmcgcmFkaXggMTAuCiBGb3IgZXhhbXBsZSwgYGAwNzdlMDEwYGAgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlciBhcyBgYDc3ZTEwYGAuIFRoZQotYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpcyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUKLWV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOjoKK2FsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgQXMgaW4KK2ludGVnZXIgbGl0ZXJhbHMsIHVuZGVyc2NvcmVzIGFyZSBzdXBwb3J0ZWQgZm9yIGRpZ2l0IGdyb3VwaW5nLgogCi0gICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMAorU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczo6CisKKyAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwICAgIDMuMTRfMTVfOTMKIAogTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlIGBgLTFgYCBpcwogYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgYGAtYGAgYW5kIHRoZSBsaXRlcmFsCiBgYDFgYC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgZ3JvdXBpbmcgcHVycG9zZXMgaW4gbGl0ZXJhbHMuCisKIAogLi4gX2ltYWdpbmFyeToKIApAQCAtNjcxLDcgKzc5OCw3IEBACiBJbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6CiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKLSAgIGltYWdudW1iZXI6IChgZmxvYXRudW1iZXJgIHwgYGludHBhcnRgKSAoImoiIHwgIkoiKQorICAgaW1hZ251bWJlcjogKGBmbG9hdG51bWJlcmAgfCBgZGlnaXRwYXJ0YCkgKCJqIiB8ICJKIikKIAogQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuICBDb21wbGV4CiBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhbmQgaGF2ZSB0aGUgc2FtZQpAQCAtNjc5LDcgKzgwNiw3IEBACiBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsIGUuZy4sIGBgKDMrNGopYGAuICBTb21lIGV4YW1wbGVzIG9mCiBpbWFnaW5hcnkgbGl0ZXJhbHM6OgogCi0gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqCisgICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgIDMuMTRlLTEwaiAgIDMuMTRfMTVfOTNqCiAKIAogLi4gX29wZXJhdG9yczoKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAppbmRleCBkNDAzYzRkLi4zZGM0NDE4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICAgIDogfCBgYXNzZXJ0X3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgYXNzaWdubWVudF9zdG10YAogICAgICAgICAgICAgICA6IHwgYGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXRgCisgICAgICAgICAgICAgIDogfCBgYW5ub3RhdGVkX2Fzc2lnbm1lbnRfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBwYXNzX3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgZGVsX3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgcmV0dXJuX3N0bXRgCkBAIC04NCw3ICs4NSw3IEBACiAgICBhc3NpZ25tZW50X3N0bXQ6IChgdGFyZ2V0X2xpc3RgICI9IikrIChgc3RhcnJlZF9leHByZXNzaW9uYCB8IGB5aWVsZF9leHByZXNzaW9uYCkKICAgIHRhcmdldF9saXN0OiBgdGFyZ2V0YCAoIiwiIGB0YXJnZXRgKSogWyIsIl0KICAgIHRhcmdldDogYGlkZW50aWZpZXJgCi0gICAgICAgICA6IHwgIigiIGB0YXJnZXRfbGlzdGAgIikiCisgICAgICAgICA6IHwgIigiIFtgdGFyZ2V0X2xpc3RgXSAiKSIKICAgICAgICAgIDogfCAiWyIgW2B0YXJnZXRfbGlzdGBdICJdIgogICAgICAgICAgOiB8IGBhdHRyaWJ1dGVyZWZgCiAgICAgICAgICA6IHwgYHN1YnNjcmlwdGlvbmAKQEAgLTMxMiw2ICszMTMsNTAgQEAKIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzIDxhdHRyLXRhcmdldC1ub3RlPmAgYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy4KIAogCisuLiBfYW5uYXNzaWduOgorCitBbm5vdGF0ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgIHBhaXI6IGFubm90YXRlZDsgYXNzaWdubWVudAorICAgc2luZ2xlOiBzdGF0ZW1lbnQ7IGFzc2lnbm1lbnQsIGFubm90YXRlZAorCitBbm5vdGF0aW9uIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsCitvZiBhIHZhcmlhYmxlIG9yIGF0dHJpYnV0ZSBhbm5vdGF0aW9uIGFuZCBhbiBvcHRpb25hbCBhc3NpZ25tZW50IHN0YXRlbWVudDoKKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgYW5ub3RhdGVkX2Fzc2lnbm1lbnRfc3RtdDogYGF1Z3RhcmdldGAgIjoiIGBleHByZXNzaW9uYCBbIj0iIGBleHByZXNzaW9uYF0KKworVGhlIGRpZmZlcmVuY2UgZnJvbSBub3JtYWwgOnJlZjpgYXNzaWdubWVudGAgaXMgdGhhdCBvbmx5IHNpbmdsZSB0YXJnZXQgYW5kCitvbmx5IHNpbmdsZSByaWdodCBoYW5kIHNpZGUgdmFsdWUgaXMgYWxsb3dlZC4KKworRm9yIHNpbXBsZSBuYW1lcyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIGlmIGluIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwKK3RoZSBhbm5vdGF0aW9ucyBhcmUgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gYSBzcGVjaWFsIGNsYXNzIG9yIG1vZHVsZQorYXR0cmlidXRlIDphdHRyOmBfX2Fubm90YXRpb25zX19gCit0aGF0IGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gdmFyaWFibGUgbmFtZXMgKG1hbmdsZWQgaWYgcHJpdmF0ZSkgdG8KK2V2YWx1YXRlZCBhbm5vdGF0aW9ucy4gVGhpcyBhdHRyaWJ1dGUgaXMgd3JpdGFibGUgYW5kIGlzIGF1dG9tYXRpY2FsbHkKK2NyZWF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGNsYXNzIG9yIG1vZHVsZSBib2R5IGV4ZWN1dGlvbiwgaWYgYW5ub3RhdGlvbnMKK2FyZSBmb3VuZCBzdGF0aWNhbGx5LgorCitGb3IgZXhwcmVzc2lvbnMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCB0aGUgYW5ub3RhdGlvbnMgYXJlIGV2YWx1YXRlZCBpZgoraW4gY2xhc3Mgb3IgbW9kdWxlIHNjb3BlLCBidXQgbm90IHN0b3JlZC4KKworSWYgYSBuYW1lIGlzIGFubm90YXRlZCBpbiBhIGZ1bmN0aW9uIHNjb3BlLCB0aGVuIHRoaXMgbmFtZSBpcyBsb2NhbCBmb3IKK3RoYXQgc2NvcGUuIEFubm90YXRpb25zIGFyZSBuZXZlciBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBmdW5jdGlvbiBzY29wZXMuCisKK0lmIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgcHJlc2VudCwgYW4gYW5ub3RhdGVkCithc3NpZ25tZW50IHBlcmZvcm1zIHRoZSBhY3R1YWwgYXNzaWdubWVudCBiZWZvcmUgZXZhbHVhdGluZyBhbm5vdGF0aW9ucworKHdoZXJlIGFwcGxpY2FibGUpLiBJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIG5vdCBwcmVzZW50IGZvciBhbiBleHByZXNzaW9uCit0YXJnZXQsIHRoZW4gdGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgdGFyZ2V0IGV4Y2VwdCBmb3IgdGhlIGxhc3QKKzptZXRoOmBfX3NldGl0ZW1fX2Agb3IgOm1ldGg6YF9fc2V0YXR0cl9fYCBjYWxsLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI2YCAtIFZhcmlhYmxlIGFuZCBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBzeW50YXgKKyAgIDpwZXA6YDQ4NGAgLSBUeXBlIGhpbnRzCisKKwogLi4gX2Fzc2VydDoKIAogVGhlIDprZXl3b3JkOmBhc3NlcnRgIHN0YXRlbWVudApAQCAtODU5LDExICs5MDQsMTIgQEAKIAogTmFtZXMgbGlzdGVkIGluIGEgOmtleXdvcmQ6YGdsb2JhbGAgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgZm9ybWFsCiBwYXJhbWV0ZXJzIG9yIGluIGEgOmtleXdvcmQ6YGZvcmAgbG9vcCBjb250cm9sIHRhcmdldCwgOmtleXdvcmQ6YGNsYXNzYAotZGVmaW5pdGlvbiwgZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LgorZGVmaW5pdGlvbiwgZnVuY3Rpb24gZGVmaW5pdGlvbiwgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50LCBvciB2YXJpYWJsZQorYW5ub3RhdGlvbi4KIAogLi4gaW1wbC1kZXRhaWw6OgogCi0gICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBlbmZvcmNlIHRoZSB0d28gcmVzdHJpY3Rpb25zLCBidXQKKyAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGVuZm9yY2Ugc29tZSBvZiB0aGVzZSByZXN0cmljdGlvbiwgYnV0CiAgICBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlIHRoaXMgZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZQogICAgdGhlbSBvciBzaWxlbnRseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uCiAKZGlmZiAtLWdpdCBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CmluZGV4IDYzMTEyODMuLjI3MzE5MWIgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKKysrIGIvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQpAQCAtMzQsNyArMzQsNyBAQAogCiAKIElTU1VFX1VSSSA9ICdodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZSVzJwotU09VUkNFX1VSSSA9ICdodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi9maWxlLzMuNS8lcycKK1NPVVJDRV9VUkkgPSAnaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjYvJXMnCiAKICMgbW9ua2V5LXBhdGNoIHJlU1QgcGFyc2VyIHRvIGRpc2FibGUgYWxwaGFiZXRpYyBhbmQgcm9tYW4gZW51bWVyYXRlZCBsaXN0cwogZnJvbSBkb2N1dGlscy5wYXJzZXJzLnJzdC5zdGF0ZXMgaW1wb3J0IEJvZHkKZGlmZiAtLWdpdCBhL0RvYy90b29scy9yc3RsaW50LnB5IGIvRG9jL3Rvb2xzL3JzdGxpbnQucHkKaW5kZXggZGU3ODA0MS4uMmMxODE2ZSAxMDA3NTUKLS0tIGEvRG9jL3Rvb2xzL3JzdGxpbnQucHkKKysrIGIvRG9jL3Rvb2xzL3JzdGxpbnQucHkKQEAgLTksOCArOSw2IEBACiAjIFRPRE86IC0gd3JvbmcgdmVyc2lvbnMgaW4gdmVyc2lvbmFkZGVkL2NoYW5nZWQKICMgICAgICAgLSB3cm9uZyBtYXJrdXAgYWZ0ZXIgdmVyc2lvbmNoYW5nZWQgZGlyZWN0aXZlCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKaW5kZXggZGJhOTNiZi4uY2IwMWM4NSAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKKysrIGIvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YKQEAgLTI1LDYgKzI1LDMwIEBACiBob3d0by9jdXJzZXMsLDptYWdlbnRhLCIyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIDc6d2hpdGUuICBUaGUiCiBob3d0by9jdXJzZXMsLDpjeWFuLCIyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIDc6d2hpdGUuICBUaGUiCiBob3d0by9jdXJzZXMsLDp3aGl0ZSwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6OixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6OixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpjYWxsLDE1NjY0MTM2MDUwMjI4MCAgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworaG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6c3RhcnQsMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1MTg4MDQgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTMyNzk3ICBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1NDY4MDcgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1NjMzNjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTc4MzY1ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU5MTc1NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjA1NTU2ICBmdW5jdGlvbi1lbnRyeTogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjE3NDgyIGZ1bmN0aW9uLXJldHVybjogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYyOTgxNCBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjQyMjg1IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY1Njc3MCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2Njk3MDcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY4Nzg1MyAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxMworaG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNzAwNzE5IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA3MTk2NDAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDczMjU2NyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6Y2FsbCwxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOnN0YXJ0LDE1NjY0MTM2MDc0NzM3MCBmdW5jdGlvbi1yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOAogaG93dG8vaXBhZGRyZXNzLCw6REI4LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQogaG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKIGhvd3RvL2lwYWRkcmVzcywsOmRiOCxJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQpAQCAtMTA2LDYgKzEzMCwxMCBAQAogbGlicmFyeS9mdW5jdGlvbnMsLDpzdGVwLGFbc3RhcnQ6c3RvcDpzdGVwXQogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLCJhW3N0YXJ0OnN0b3AsIGldIgogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLGFbc3RhcnQ6c3RvcDpzdGVwXQorbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOnZhdHJvZ2FzYWMsPj4+IGNvb2tpZSA9IGIndXNlcjp2YXRyb2dhc2FjJworbGlicmFyeS9oYXNobGliLWJsYWtlMiwsOnZhdHJvZ2FzYWMsInVzZXI6dmF0cm9nYXNhYywzNDljZjkwNDUzMzc2N2VkMmQ3NTUyNzlhOGRmODRkMCIKK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDpwb2xpY2FqYWMsIj4+PiBjb21wYXJlX2RpZ2VzdChiJ3VzZXI6cG9saWNhamFjJywgc2lnKSIKK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDpMRUFGLCJoMDAgPSBibGFrZTJiKGJ1ZlswOkxFQUZfU0laRV0sIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILCIKIGxpYnJhcnkvaHR0cC5jbGllbnQsLDpwb3J0LGhvc3Q6cG9ydAogbGlicmFyeS9odHRwLmNvb2tpZXMsLGAsISMkJSYnKistLl5fYHx+OgogbGlicmFyeS9pbWFwbGliLCw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCkBAIC0yMDUsNyArMjMzLDggQEAKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBzZXR1cHRvb2xzIGFuZCBwaXAgYXJlIG5vdCBpbnN0YWxsZWQgaW50byB0aGUiCiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIHByb2dyZXNzOiBJZiBzZXR1cHRvb2xzIG9yIHBpcCBhcmUgaW5zdGFsbGVkLCB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIgogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBub3BpcDogSWYgVHJ1ZSwgcGlwIGlzIG5vdCBpbnN0YWxsZWQgaW50byB0aGUgY3JlYXRlZCIKLWxpYnJhcnkvdmVudiwsOnBhcmFtLDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CitsaWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorbGlicmFyeS94bWxycGMuY2xpZW50LCw6bmlsLGV4Om5pbAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCiBsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLHVzZXI6cGFzcwogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cG9ydCxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCkBAIC0yMzksNyArMjY4LDcgQEAKIHVzaW5nL2NtZGxpbmUsLDptZXNzYWdlLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCiB1c2luZy9jbWRsaW5lLCw6bW9kdWxlLGFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCiB1c2luZy91bml4LCw6UGFja2FnaW5nLGh0dHBzOi8vZW4ub3BlbnN1c2Uub3JnL1BvcnRhbDpQYWNrYWdpbmcKLXdoYXRzbmV3LzIuMCw0MTgsOmxlbiwKK3doYXRzbmV3LzIuMCwsOmxlbiwKIHdoYXRzbmV3LzIuMywsOjosCiB3aGF0c25ldy8yLjMsLDpjb25maWcsCiB3aGF0c25ldy8yLjMsLDpDcml0aWNhbCwKQEAgLTI3MiwyNyArMzAxLDI4IEBACiB3aGF0c25ldy8zLjIsLDpneiwiPj4+IHdpdGggdGFyZmlsZS5vcGVuKG5hbWU9J215YXJjaGl2ZS50YXIuZ3onLCBtb2RlPSd3Omd6JykgYXMgdGY6Igogd2hhdHNuZXcvMy4yLCw6bG9jYXRpb24sem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQogd2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgotd2hhdHNuZXcvY2hhbmdlbG9nLCw6Z3osIjogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAiInc6Z3oiIiBtb2RlIGRpZG4ndCIKLXdoYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKLWxpYnJhcnkvdGFyZmlsZSwxNDksOnh6LCd4Onh6JwotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMjkwLDpzb21ldGFnLHByZWZpeDpzb21ldGFnCi1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmZpY3Rpb25hbCwiPGFjdG9ycyB4bWxuczpmaWN0aW9uYWw9IiJodHRwOi8vY2hhcmFjdGVycy5leGFtcGxlLmNvbSIiIgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+TGFuY2Vsb3Q8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5BcmNoaWUgTGVhY2g8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5TaXIgUm9iaW48L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+Ci1saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwzMDEsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5HdW50aGVyPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+Q29tbWFuZGVyIENsZW1lbnQ8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwneDp4eicKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZworbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgogbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDphY3RvciwiZm9yIGFjdG9yIGluIHJvb3QuZmluZGFsbCgncmVhbF9wZXJzb246YWN0b3InLCBucyk6IgogbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsLDpuYW1lLCJuYW1lID0gYWN0b3IuZmluZCgncmVhbF9wZXJzb246bmFtZScsIG5zKSIKIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLCJmb3IgY2hhciBpbiBhY3Rvci5maW5kYWxsKCdyb2xlOmNoYXJhY3RlcicsIG5zKToiCi1saWJyYXJ5L3ppcGFwcCwzMSw6bWFpbiwiJCBweXRob24gLW0gemlwYXBwIG15YXBwIC1tICIibXlhcHA6bWFpbiIiIgotbGlicmFyeS96aXBhcHAsODIsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKLWxpYnJhcnkvemlwYXBwLDE1NSw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCitsaWJyYXJ5L3ppcGFwcCwsOm1haW4sIiQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtbSAiIm15YXBwOm1haW4iIiIKK2xpYnJhcnkvemlwYXBwLCw6Zm4sImFyZ3VtZW50IHNob3VsZCBoYXZlIHRoZSBmb3JtICIicGtnLm1vZDpmbiIiLCB3aGVyZSAiInBrZy5tb2QiIiBpcyBhIgorbGlicmFyeS96aXBhcHAsLDpjYWxsYWJsZSwiIiJwa2cubW9kdWxlOmNhbGxhYmxlIiIgYW5kIHRoZSBhcmNoaXZlIHdpbGwgYmUgcnVuIGJ5IGltcG9ydGluZyIKIGxpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBtWzo6Ml0udG9saXN0KCkKIGxpYnJhcnkvc3lzLCxgLCMgYGB3cmFwcGVyYGAgY3JlYXRlcyBhIGBgd3JhcChjb3JvKWBgIGNvcm91dGluZToKLXR1dG9yaWFsL3ZlbnYsNzcsOmM3Yjk2NDVhNmYzNSwiUHl0aG9uIDMuNC4zKyAoMy40OmM3Yjk2NDVhNmYzNSssIE1heSAyMiAyMDE1LCAwOTozMToyNSkiCiB3aGF0c25ldy8zLjUsLDpyb290LCdXQVJOSU5HOnJvb3Q6d2FybmluZ1xuJwogd2hhdHNuZXcvMy41LCw6d2FybmluZywnV0FSTklORzpyb290Ondhcm5pbmdcbicKIHdoYXRzbmV3LzMuNSwsOjosPj4+IGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKQogd2hhdHNuZXcvMy41LCw6cm9vdCxFUlJPUjpyb290OmV4Y2VwdGlvbgogd2hhdHNuZXcvMy41LCw6ZXhjZXB0aW9uLEVSUk9SOnJvb3Q6ZXhjZXB0aW9uCit3aGF0c25ldy9jaGFuZ2Vsb2csLDp2ZXJzaW9uLGltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCit3aGF0c25ldy9jaGFuZ2Vsb2csLDpneiwiOiBUYXJGaWxlIG9wZW5lZCB3aXRoIGV4dGVybmFsIGZpbGVvYmogYW5kICIidzpneiIiIG1vZGUgZGlkbid0Igord2hhdHNuZXcvY2hhbmdlbG9nLCw6OiwiOiBVc2UgIiIxMjcuMC4wLjEiIiBvciAiIjo6MSIiIGluc3RlYWQgb2YgIiJsb2NhbGhvc3QiIiBhcyBtdWNoIGFzIgord2hhdHNuZXcvY2hhbmdlbG9nLCxgLCJmb3IgcmVhZGFiaWxpdHkgKHdhcyAiImAiIikuIgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdCBiL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKaW5kZXggMTI5ODliMi4uZDQzNDYxOCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CkBAIC03OCw2ICs3OCw5IEBACiAgICA+Pj4gd29yZHMKICAgIFsnZGVmZW5lc3RyYXRlJywgJ2NhdCcsICd3aW5kb3cnLCAnZGVmZW5lc3RyYXRlJ10KIAorV2l0aCBgYGZvciB3IGluIHdvcmRzOmBgLCB0aGUgZXhhbXBsZSB3b3VsZCBhdHRlbXB0IHRvIGNyZWF0ZSBhbiBpbmZpbml0ZSBsaXN0LAoraW5zZXJ0aW5nIGBgZGVmZW5lc3RyYXRlYGAgb3ZlciBhbmQgb3ZlciBhZ2Fpbi4KKwogCiAuLiBfdHV0LXJhbmdlOgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0IGIvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdAppbmRleCBkZDljN2NkLi5iZWVhYWMzIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKQEAgLTI1LDcgKzI1LDggQEAKIGNvbmNhdGVuYXRpb24gb3BlcmF0aW9ucyB5b3UgY2FuIGNyZWF0ZSBhbnkgbGF5b3V0IHlvdSBjYW4gaW1hZ2luZS4gIFRoZQogc3RyaW5nIHR5cGUgaGFzIHNvbWUgbWV0aG9kcyB0aGF0IHBlcmZvcm0gdXNlZnVsIG9wZXJhdGlvbnMgZm9yIHBhZGRpbmcKIHN0cmluZ3MgdG8gYSBnaXZlbiBjb2x1bW4gd2lkdGg7IHRoZXNlIHdpbGwgYmUgZGlzY3Vzc2VkIHNob3J0bHkuICBUaGUgc2Vjb25kCi13YXkgaXMgdG8gdXNlIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kLgord2F5IGlzIHRvIHVzZSA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCwgb3IgdGhlCis6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kLgogCiBUaGUgOm1vZDpgc3RyaW5nYCBtb2R1bGUgY29udGFpbnMgYSA6Y2xhc3M6YH5zdHJpbmcuVGVtcGxhdGVgIGNsYXNzIHdoaWNoIG9mZmVycwogeWV0IGFub3RoZXIgd2F5IHRvIHN1YnN0aXR1dGUgdmFsdWVzIGludG8gc3RyaW5ncy4KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CmluZGV4IGU4ZDhlMmIuLmZhZjU3YTMgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdApAQCAtMTAsMTMgKzEwLDEzIEBACiBJbnZva2luZyB0aGUgSW50ZXJwcmV0ZXIKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjVgCitUaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjZgCiBvbiB0aG9zZSBtYWNoaW5lcyB3aGVyZSBpdCBpcyBhdmFpbGFibGU7IHB1dHRpbmcgOmZpbGU6YC91c3IvbG9jYWwvYmluYCBpbiB5b3VyCiBVbml4IHNoZWxsJ3Mgc2VhcmNoIHBhdGggbWFrZXMgaXQgcG9zc2libGUgdG8gc3RhcnQgaXQgYnkgdHlwaW5nIHRoZSBjb21tYW5kOgogCiAuLiBjb2RlLWJsb2NrOjogdGV4dAogCi0gICBweXRob24zLjUKKyAgIHB5dGhvbjMuNgogCiB0byB0aGUgc2hlbGwuIFsjXV8gU2luY2UgdGhlIGNob2ljZSBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbnRlcnByZXRlciBsaXZlcwogaXMgYW4gaW5zdGFsbGF0aW9uIG9wdGlvbiwgb3RoZXIgcGxhY2VzIGFyZSBwb3NzaWJsZTsgY2hlY2sgd2l0aCB5b3VyIGxvY2FsCkBAIC0yNCwxMSArMjQsMTEgQEAKIHBvcHVsYXIgYWx0ZXJuYXRpdmUgbG9jYXRpb24uKQogCiBPbiBXaW5kb3dzIG1hY2hpbmVzLCB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyB1c3VhbGx5IHBsYWNlZCBpbgotOmZpbGU6YEM6XFxQeXRob24zNWAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCis6ZmlsZTpgQzpcXFB5dGhvbjM2YCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKIGluc3RhbGxlci4gIFRvIGFkZCB0aGlzIGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsICB5b3UgY2FuIHR5cGUgdGhlIGZvbGxvd2luZwogY29tbWFuZCBpbnRvIHRoZSBjb21tYW5kIHByb21wdCBpbiBhIERPUyBib3g6OgogCi0gICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzUKKyAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zNgogCiBUeXBpbmcgYW4gZW5kLW9mLWZpbGUgY2hhcmFjdGVyICg6a2JkOmBDb250cm9sLURgIG9uIFVuaXgsIDprYmQ6YENvbnRyb2wtWmAgb24KIFdpbmRvd3MpIGF0IHRoZSBwcmltYXJ5IHByb21wdCBjYXVzZXMgdGhlIGludGVycHJldGVyIHRvIGV4aXQgd2l0aCBhIHplcm8gZXhpdApAQCAtOTgsOCArOTgsOCBAQAogCiAuLiBjb2RlLWJsb2NrOjogc2hlbGwtc2Vzc2lvbgogCi0gICAkIHB5dGhvbjMuNQotICAgUHl0aG9uIDMuNSAoZGVmYXVsdCwgU2VwIDE2IDIwMTUsIDA5OjI1OjA0KQorICAgJCBweXRob24zLjYKKyAgIFB5dGhvbiAzLjYgKGRlZmF1bHQsIFNlcCAxNiAyMDE1LCAwOToyNTowNCkKICAgIFtHQ0MgNC44LjJdIG9uIGxpbnV4CiAgICBUeXBlICJoZWxwIiwgImNvcHlyaWdodCIsICJjcmVkaXRzIiBvciAibGljZW5zZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICA+Pj4KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0IGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKaW5kZXggMjE0MDMyOS4uN2U4ZWUzZSAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QKQEAgLTM1Miw2ICszNTIsOSBAQAogICAgICAgU3RyaW5ncyBzdXBwb3J0IGEgbGFyZ2UgbnVtYmVyIG9mIG1ldGhvZHMgZm9yCiAgICAgICBiYXNpYyB0cmFuc2Zvcm1hdGlvbnMgYW5kIHNlYXJjaGluZy4KIAorICAgOnJlZjpgZi1zdHJpbmdzYAorICAgICAgU3RyaW5nIGxpdGVyYWxzIHRoYXQgaGF2ZSBlbWJlZGRlZCBleHByZXNzaW9ucy4KKwogICAgOnJlZjpgZm9ybWF0c3RyaW5nc2AKICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHN0cmluZyBmb3JtYXR0aW5nIHdpdGggOm1ldGg6YHN0ci5mb3JtYXRgLgogCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CmluZGV4IDUyZmZkYmUuLjFkZDA2YzIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0CkBAIC0xNSw3ICsxNSw3IEBACiAKICAgID4+PiBpbXBvcnQgb3MKICAgID4+PiBvcy5nZXRjd2QoKSAgICAgICMgUmV0dXJuIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5Ci0gICAnQzpcXFB5dGhvbjM1JworICAgJ0M6XFxQeXRob24zNicKICAgID4+PiBvcy5jaGRpcignL3NlcnZlci9hY2Nlc3Nsb2dzJykgICAjIENoYW5nZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CiAgICA+Pj4gb3Muc3lzdGVtKCdta2RpciB0b2RheScpICAgIyBSdW4gdGhlIGNvbW1hbmQgbWtkaXIgaW4gdGhlIHN5c3RlbSBzaGVsbAogICAgMApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CmluZGV4IDM3MTQzODQuLmJmNGNmODcgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKQEAgLTI3OCw3ICsyNzgsNyBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGRbJ3ByaW1hcnknXSAgICAgICAgICAgICAgICAjIGVudHJ5IHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQKLSAgICAgRmlsZSAiQzovcHl0aG9uMzUvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXworICAgICBGaWxlICJDOi9weXRob24zNi9saWIvd2Vha3JlZi5weSIsIGxpbmUgNDYsIGluIF9fZ2V0aXRlbV9fCiAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgIEtleUVycm9yOiAncHJpbWFyeScKIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3ZlbnYucnN0IGIvRG9jL3R1dG9yaWFsL3ZlbnYucnN0CmluZGV4IDNiMmVlMmUuLmUyZGQ1N2QgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC92ZW52LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvdmVudi5yc3QKQEAgLTIwLDE1ICsyMCwxNCBAQAogdGhlIHJlcXVpcmVtZW50cyBhcmUgaW4gY29uZmxpY3QgYW5kIGluc3RhbGxpbmcgZWl0aGVyIHZlcnNpb24gMS4wIG9yIDIuMAogd2lsbCBsZWF2ZSBvbmUgYXBwbGljYXRpb24gdW5hYmxlIHRvIHJ1bi4KIAotVGhlIHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gaXMgdG8gY3JlYXRlIGEgOnRlcm06YHZpcnR1YWwKLWVudmlyb25tZW50YCAob2Z0ZW4gc2hvcnRlbmVkIHRvICJ2aXJ0dWFsZW52IiksIGEgc2VsZi1jb250YWluZWQKLWRpcmVjdG9yeSB0cmVlIHRoYXQgY29udGFpbnMgYSBQeXRob24gaW5zdGFsbGF0aW9uIGZvciBhIHBhcnRpY3VsYXIKLXZlcnNpb24gb2YgUHl0aG9uLCBwbHVzIGEgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcGFja2FnZXMuCitUaGUgc29sdXRpb24gZm9yIHRoaXMgcHJvYmxlbSBpcyB0byBjcmVhdGUgYSA6dGVybTpgdmlydHVhbCBlbnZpcm9ubWVudGAsIGEKK3NlbGYtY29udGFpbmVkIGRpcmVjdG9yeSB0cmVlIHRoYXQgY29udGFpbnMgYSBQeXRob24gaW5zdGFsbGF0aW9uIGZvciBhCitwYXJ0aWN1bGFyIHZlcnNpb24gb2YgUHl0aG9uLCBwbHVzIGEgbnVtYmVyIG9mIGFkZGl0aW9uYWwgcGFja2FnZXMuCiAKIERpZmZlcmVudCBhcHBsaWNhdGlvbnMgY2FuIHRoZW4gdXNlIGRpZmZlcmVudCB2aXJ0dWFsIGVudmlyb25tZW50cy4KIFRvIHJlc29sdmUgdGhlIGVhcmxpZXIgZXhhbXBsZSBvZiBjb25mbGljdGluZyByZXF1aXJlbWVudHMsCiBhcHBsaWNhdGlvbiBBIGNhbiBoYXZlIGl0cyBvd24gdmlydHVhbCBlbnZpcm9ubWVudCB3aXRoIHZlcnNpb24gMS4wCi1pbnN0YWxsZWQgd2hpbGUgYXBwbGljYXRpb24gQiBoYXMgYW5vdGhlciB2aXJ0dWFsZW52IHdpdGggdmVyc2lvbiAyLjAuCitpbnN0YWxsZWQgd2hpbGUgYXBwbGljYXRpb24gQiBoYXMgYW5vdGhlciB2aXJ0dWFsIGVudmlyb25tZW50IHdpdGggdmVyc2lvbiAyLjAuCiBJZiBhcHBsaWNhdGlvbiBCIHJlcXVpcmVzIGEgbGlicmFyeSBiZSB1cGdyYWRlZCB0byB2ZXJzaW9uIDMuMCwgdGhpcyB3aWxsCiBub3QgYWZmZWN0IGFwcGxpY2F0aW9uIEEncyBlbnZpcm9ubWVudC4KIApAQCAtMzYsMjkgKzM1LDI2IEBACiBDcmVhdGluZyBWaXJ0dWFsIEVudmlyb25tZW50cwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIHNjcmlwdCB1c2VkIHRvIGNyZWF0ZSBhbmQgbWFuYWdlIHZpcnR1YWwgZW52aXJvbm1lbnRzIGlzIGNhbGxlZAotOnByb2dyYW06YHB5dmVudmAuICA6cHJvZ3JhbTpgcHl2ZW52YCB3aWxsIHVzdWFsbHkgaW5zdGFsbCB0aGUgbW9zdAotcmVjZW50IHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgeW91IGhhdmUgYXZhaWxhYmxlOyB0aGUgc2NyaXB0IGlzIGFsc28KLWluc3RhbGxlZCB3aXRoIGEgdmVyc2lvbiBudW1iZXIsIHNvIGlmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mCi1QeXRob24gb24geW91ciBzeXN0ZW0geW91IGNhbiBzZWxlY3QgYSBzcGVjaWZpYyBQeXRob24gdmVyc2lvbiBieQotcnVubmluZyBgYHB5dmVudi0zLjRgYCBvciB3aGljaGV2ZXIgdmVyc2lvbiB5b3Ugd2FudC4KK1RoZSBtb2R1bGUgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBjYWxsZWQKKzptb2Q6YHZlbnZgLiAgOm1vZDpgdmVudmAgd2lsbCB1c3VhbGx5IGluc3RhbGwgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YKK1B5dGhvbiB0aGF0IHlvdSBoYXZlIGF2YWlsYWJsZS4gSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIG9uIHlvdXIKK3N5c3RlbSwgeW91IGNhbiBzZWxlY3QgYSBzcGVjaWZpYyBQeXRob24gdmVyc2lvbiBieSBydW5uaW5nIGBgcHl0aG9uM2BgIG9yCit3aGljaGV2ZXIgdmVyc2lvbiB5b3Ugd2FudC4KIAotVG8gY3JlYXRlIGEgdmlydHVhbGVudiwgZGVjaWRlIHVwb24gYSBkaXJlY3RvcnkKLXdoZXJlIHlvdSB3YW50IHRvIHBsYWNlIGl0IGFuZCBydW4gOnByb2dyYW06YHB5dmVudmAgd2l0aCB0aGUKLWRpcmVjdG9yeSBwYXRoOjoKK1RvIGNyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIGRlY2lkZSB1cG9uIGEgZGlyZWN0b3J5IHdoZXJlIHlvdSB3YW50IHRvCitwbGFjZSBpdCwgYW5kIHJ1biB0aGUgOm1vZDpgdmVudmAgbW9kdWxlIGFzIGEgc2NyaXB0IHdpdGggdGhlIGRpcmVjdG9yeSBwYXRoOjoKIAotICAgcHl2ZW52IHR1dG9yaWFsLWVudgorICAgcHl0aG9uMyAtbSB2ZW52IHR1dG9yaWFsLWVudgogCiBUaGlzIHdpbGwgY3JlYXRlIHRoZSBgYHR1dG9yaWFsLWVudmBgIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0LAogYW5kIGFsc28gY3JlYXRlIGRpcmVjdG9yaWVzIGluc2lkZSBpdCBjb250YWluaW5nIGEgY29weSBvZiB0aGUgUHl0aG9uCiBpbnRlcnByZXRlciwgdGhlIHN0YW5kYXJkIGxpYnJhcnksIGFuZCB2YXJpb3VzIHN1cHBvcnRpbmcgZmlsZXMuCiAKLU9uY2UgeW91J3ZlIGNyZWF0ZWQgYSB2aXJ0dWFsIGVudmlyb25tZW50LCB5b3UgbmVlZCB0bwotYWN0aXZhdGUgaXQuCitPbmNlIHlvdSd2ZSBjcmVhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IG1heSBhY3RpdmF0ZSBpdC4KIAogT24gV2luZG93cywgcnVuOjoKIAotICB0dXRvcmlhbC1lbnYvU2NyaXB0cy9hY3RpdmF0ZQorICB0dXRvcmlhbC1lbnZcU2NyaXB0c1xhY3RpdmF0ZS5iYXQKIAogT24gVW5peCBvciBNYWNPUywgcnVuOjoKIApAQCAtNjksMzMgKzY1LDM2IEBACiBgYGFjdGl2YXRlLmNzaGBgIGFuZCBgYGFjdGl2YXRlLmZpc2hgYCBzY3JpcHRzIHlvdSBzaG91bGQgdXNlCiBpbnN0ZWFkLikKIAotQWN0aXZhdGluZyB0aGUgdmlydHVhbGVudiB3aWxsIGNoYW5nZSB5b3VyIHNoZWxsJ3MgcHJvbXB0IHRvIHNob3cgd2hhdAotdmlydHVhbGVudiB5b3UncmUgdXNpbmcsIGFuZCBtb2RpZnkgdGhlIGVudmlyb25tZW50IHNvIHRoYXQgcnVubmluZwotYGBweXRob25gYCB3aWxsIGdldCB5b3UgdGhhdCBwYXJ0aWN1bGFyIHZlcnNpb24gYW5kIGluc3RhbGxhdGlvbiBvZgotUHl0aG9uLiAgRm9yIGV4YW1wbGU6OgorQWN0aXZhdGluZyB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3aWxsIGNoYW5nZSB5b3VyIHNoZWxsJ3MgcHJvbXB0IHRvIHNob3cgd2hhdAordmlydHVhbCBlbnZpcm9ubWVudCB5b3UncmUgdXNpbmcsIGFuZCBtb2RpZnkgdGhlIGVudmlyb25tZW50IHNvIHRoYXQgcnVubmluZworYGBweXRob25gYCB3aWxsIGdldCB5b3UgdGhhdCBwYXJ0aWN1bGFyIHZlcnNpb24gYW5kIGluc3RhbGxhdGlvbiBvZiBQeXRob24uCitGb3IgZXhhbXBsZToKIAotICAtPiBzb3VyY2Ugfi9lbnZzL3R1dG9yaWFsLWVudi9iaW4vYWN0aXZhdGUKLSAgKHR1dG9yaWFsLWVudikgLT4gcHl0aG9uCi0gIFB5dGhvbiAzLjQuMysgKDMuNDpjN2I5NjQ1YTZmMzUrLCBNYXkgMjIgMjAxNSwgMDk6MzE6MjUpCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICQgc291cmNlIH4vZW52cy90dXRvcmlhbC1lbnYvYmluL2FjdGl2YXRlCisgICh0dXRvcmlhbC1lbnYpICQgcHl0aG9uCisgIFB5dGhvbiAzLjUuMSAoZGVmYXVsdCwgTWF5ICA2IDIwMTYsIDEwOjU5OjM2KQogICAgIC4uLgogICA+Pj4gaW1wb3J0IHN5cwogICA+Pj4gc3lzLnBhdGgKLSAgWycnLCAnL3Vzci9sb2NhbC9saWIvcHl0aG9uMzQuemlwJywgLi4uLAotICAnfi9lbnZzL3R1dG9yaWFsLWVudi9saWIvcHl0aG9uMy40L3NpdGUtcGFja2FnZXMnXQorICBbJycsICcvdXNyL2xvY2FsL2xpYi9weXRob24zNS56aXAnLCAuLi4sCisgICd+L2VudnMvdHV0b3JpYWwtZW52L2xpYi9weXRob24zLjUvc2l0ZS1wYWNrYWdlcyddCiAgID4+PgogCiAKIE1hbmFnaW5nIFBhY2thZ2VzIHdpdGggcGlwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1PbmNlIHlvdSd2ZSBhY3RpdmF0ZWQgYSB2aXJ0dWFsIGVudmlyb25tZW50LCB5b3UgY2FuIGluc3RhbGwsIHVwZ3JhZGUsCi1hbmQgcmVtb3ZlIHBhY2thZ2VzIHVzaW5nIGEgcHJvZ3JhbSBjYWxsZWQgOnByb2dyYW06YHBpcGAuICBCeSBkZWZhdWx0Ci1gYHBpcGBgIHdpbGwgaW5zdGFsbCBwYWNrYWdlcyBmcm9tIHRoZSBQeXRob24gUGFja2FnZSBJbmRleCwKLTxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPi4gIFlvdSBjYW4gYnJvd3NlIHRoZSBQeXRob24gUGFja2FnZSBJbmRleAotYnkgZ29pbmcgdG8gaXQgaW4geW91ciB3ZWIgYnJvd3Nlciwgb3IgeW91IGNhbiB1c2UgYGBwaXBgYCdzCi1saW1pdGVkIHNlYXJjaCBmZWF0dXJlOjoKK1lvdSBjYW4gaW5zdGFsbCwgdXBncmFkZSwgYW5kIHJlbW92ZSBwYWNrYWdlcyB1c2luZyBhIHByb2dyYW0gY2FsbGVkCis6cHJvZ3JhbTpgcGlwYC4gIEJ5IGRlZmF1bHQgYGBwaXBgYCB3aWxsIGluc3RhbGwgcGFja2FnZXMgZnJvbSB0aGUgUHl0aG9uCitQYWNrYWdlIEluZGV4LCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT4uICBZb3UgY2FuIGJyb3dzZSB0aGUgUHl0aG9uCitQYWNrYWdlIEluZGV4IGJ5IGdvaW5nIHRvIGl0IGluIHlvdXIgd2ViIGJyb3dzZXIsIG9yIHlvdSBjYW4gdXNlIGBgcGlwYGAncworbGltaXRlZCBzZWFyY2ggZmVhdHVyZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgc2VhcmNoIGFzdHJvbm9teQorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBzZWFyY2ggYXN0cm9ub215CiAgIHNreWZpZWxkICAgICAgICAgICAgICAgLSBFbGVnYW50IGFzdHJvbm9teSBmb3IgUHl0aG9uCiAgIGdhcnkgICAgICAgICAgICAgICAgICAgLSBHYWxhY3RpYyBhc3Ryb25vbXkgYW5kIGdyYXZpdGF0aW9uYWwgZHluYW1pY3MuCiAgIG5vdmFzICAgICAgICAgICAgICAgICAgLSBUaGUgVW5pdGVkIFN0YXRlcyBOYXZhbCBPYnNlcnZhdG9yeSBOT1ZBUyBhc3Ryb25vbXkgbGlicmFyeQpAQCAtMTA3LDkgKzEwNiwxMSBAQAogImZyZWV6ZSIsIGV0Yy4gIChDb25zdWx0IHRoZSA6cmVmOmBpbnN0YWxsaW5nLWluZGV4YCBndWlkZSBmb3IKIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gZm9yIGBgcGlwYGAuKQogCi1Zb3UgY2FuIGluc3RhbGwgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgcGFja2FnZSBieSBzcGVjaWZ5aW5nIGEgcGFja2FnZSdzIG5hbWU6OgorWW91IGNhbiBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHBhY2thZ2UgYnkgc3BlY2lmeWluZyBhIHBhY2thZ2UncyBuYW1lOgogCi0gIC0+IHBpcCBpbnN0YWxsIG5vdmFzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgbm92YXMKICAgQ29sbGVjdGluZyBub3ZhcwogICAgIERvd25sb2FkaW5nIG5vdmFzLTMuMS4xLjMudGFyLmd6ICgxMzZrQikKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IG5vdmFzCkBAIC0xMTcsOSArMTE4LDExIEBACiAgIFN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgbm92YXMtMy4xLjEuMwogCiBZb3UgY2FuIGFsc28gaW5zdGFsbCBhIHNwZWNpZmljIHZlcnNpb24gb2YgYSBwYWNrYWdlIGJ5IGdpdmluZyB0aGUKLXBhY2thZ2UgbmFtZSAgZm9sbG93ZWQgYnkgYGA9PWBgIGFuZCB0aGUgdmVyc2lvbiBudW1iZXI6OgorcGFja2FnZSBuYW1lICBmb2xsb3dlZCBieSBgYD09YGAgYW5kIHRoZSB2ZXJzaW9uIG51bWJlcjoKIAotICAtPiBwaXAgaW5zdGFsbCByZXF1ZXN0cz09Mi42LjAKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCByZXF1ZXN0cz09Mi42LjAKICAgQ29sbGVjdGluZyByZXF1ZXN0cz09Mi42LjAKICAgICBVc2luZyBjYWNoZWQgcmVxdWVzdHMtMi42LjAtcHkyLnB5My1ub25lLWFueS53aGwKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IHJlcXVlc3RzCkBAIC0xMjgsOSArMTMxLDExIEBACiBJZiB5b3UgcmUtcnVuIHRoaXMgY29tbWFuZCwgYGBwaXBgYCB3aWxsIG5vdGljZSB0aGF0IHRoZSByZXF1ZXN0ZWQKIHZlcnNpb24gaXMgYWxyZWFkeSBpbnN0YWxsZWQgYW5kIGRvIG5vdGhpbmcuICBZb3UgY2FuIHN1cHBseSBhCiBkaWZmZXJlbnQgdmVyc2lvbiBudW1iZXIgdG8gZ2V0IHRoYXQgdmVyc2lvbiwgb3IgeW91IGNhbiBydW4gYGBwaXAKLWluc3RhbGwgLS11cGdyYWRlYGAgdG8gdXBncmFkZSB0aGUgcGFja2FnZSB0byB0aGUgbGF0ZXN0IHZlcnNpb246OgoraW5zdGFsbCAtLXVwZ3JhZGVgYCB0byB1cGdyYWRlIHRoZSBwYWNrYWdlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbjoKIAotICAtPiBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcmVxdWVzdHMKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgcmVxdWVzdHMKICAgQ29sbGVjdGluZyByZXF1ZXN0cwogICBJbnN0YWxsaW5nIGNvbGxlY3RlZCBwYWNrYWdlczogcmVxdWVzdHMKICAgICBGb3VuZCBleGlzdGluZyBpbnN0YWxsYXRpb246IHJlcXVlc3RzIDIuNi4wCkBAIC0xNDEsOSArMTQ2LDExIEBACiBgYHBpcCB1bmluc3RhbGxgYCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBwYWNrYWdlIG5hbWVzIHdpbGwgcmVtb3ZlIHRoZQogcGFja2FnZXMgZnJvbSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotYGBwaXAgc2hvd2BgIHdpbGwgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcGFja2FnZTo6CitgYHBpcCBzaG93YGAgd2lsbCBkaXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IGEgcGFydGljdWxhciBwYWNrYWdlOgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBzaG93IHJlcXVlc3RzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIHNob3cgcmVxdWVzdHMKICAgLS0tCiAgIE1ldGFkYXRhLVZlcnNpb246IDIuMAogICBOYW1lOiByZXF1ZXN0cwpAQCAtMTU3LDkgKzE2NCwxMSBAQAogICBSZXF1aXJlczoKIAogYGBwaXAgbGlzdGBgIHdpbGwgZGlzcGxheSBhbGwgb2YgdGhlIHBhY2thZ2VzIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbAotZW52aXJvbm1lbnQ6OgorZW52aXJvbm1lbnQ6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIGxpc3QKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgbGlzdAogICBub3ZhcyAoMy4xLjEuMykKICAgbnVtcHkgKDEuOS4yKQogICBwaXAgKDcuMC4zKQpAQCAtMTY4LDE5ICsxNzcsMjMgQEAKIAogYGBwaXAgZnJlZXplYGAgd2lsbCBwcm9kdWNlIGEgc2ltaWxhciBsaXN0IG9mIHRoZSBpbnN0YWxsZWQgcGFja2FnZXMsCiBidXQgdGhlIG91dHB1dCB1c2VzIHRoZSBmb3JtYXQgdGhhdCBgYHBpcCBpbnN0YWxsYGAgZXhwZWN0cy4KLUEgY29tbW9uIGNvbnZlbnRpb24gaXMgdG8gcHV0IHRoaXMgbGlzdCBpbiBhIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGZpbGU6OgorQSBjb21tb24gY29udmVudGlvbiBpcyB0byBwdXQgdGhpcyBsaXN0IGluIGEgYGByZXF1aXJlbWVudHMudHh0YGAgZmlsZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgZnJlZXplID4gcmVxdWlyZW1lbnRzLnR4dAotICAodHV0b3JpYWwtZW52KSAtPiBjYXQgcmVxdWlyZW1lbnRzLnR4dAorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBmcmVlemUgPiByZXF1aXJlbWVudHMudHh0CisgICh0dXRvcmlhbC1lbnYpICQgY2F0IHJlcXVpcmVtZW50cy50eHQKICAgbm92YXM9PTMuMS4xLjMKICAgbnVtcHk9PTEuOS4yCiAgIHJlcXVlc3RzPT0yLjcuMAogCiBUaGUgYGByZXF1aXJlbWVudHMudHh0YGAgY2FuIHRoZW4gYmUgY29tbWl0dGVkIHRvIHZlcnNpb24gY29udHJvbCBhbmQKIHNoaXBwZWQgYXMgcGFydCBvZiBhbiBhcHBsaWNhdGlvbi4gIFVzZXJzIGNhbiB0aGVuIGluc3RhbGwgYWxsIHRoZQotbmVjZXNzYXJ5IHBhY2thZ2VzIHdpdGggYGBpbnN0YWxsIC1yYGA6OgorbmVjZXNzYXJ5IHBhY2thZ2VzIHdpdGggYGBpbnN0YWxsIC1yYGA6CiAKLSAgLT4gcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLnR4dAorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKICAgQ29sbGVjdGluZyBub3Zhcz09My4xLjEuMyAoZnJvbSAtciByZXF1aXJlbWVudHMudHh0IChsaW5lIDEpKQogICAgIC4uLgogICBDb2xsZWN0aW5nIG51bXB5PT0xLjkuMiAoZnJvbSAtciByZXF1aXJlbWVudHMudHh0IChsaW5lIDIpKQpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0IGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CmluZGV4IDYxMTc3OTYuLjgxYjA4MjMgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9jbWRsaW5lLnJzdAorKysgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKQEAgLTM5Niw2ICszOTYsOCBAQAogICAgICBzdG9yZWQgaW4gYSB0cmFjZWJhY2sgb2YgYSB0cmFjZS4gVXNlIGBgLVggdHJhY2VtYWxsb2M9TkZSQU1FYGAgdG8gc3RhcnQKICAgICAgdHJhY2luZyB3aXRoIGEgdHJhY2ViYWNrIGxpbWl0IG9mICpORlJBTUUqIGZyYW1lcy4gU2VlIHRoZQogICAgICA6ZnVuYzpgdHJhY2VtYWxsb2Muc3RhcnRgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgKiBgYC1YIHNob3dhbGxvY2NvdW50YGAgdG8gZW5hYmxlIHRoZSBvdXRwdXQgb2YgdGhlIHRvdGFsIGNvdW50IG9mIGFsbG9jYXRlZAorICAgICBvYmplY3RzIGZvciBlYWNoIHR5cGUgKG9ubHkgd29ya3Mgd2hlbiBidWlsdCB3aXRoIGBgQ09VTlRfQUxMT0NTYGAgZGVmaW5lZCk7CiAKICAgIEl0IGFsc28gYWxsb3dzIHBhc3NpbmcgYXJiaXRyYXJ5IHZhbHVlcyBhbmQgcmV0cmlldmluZyB0aGVtIHRocm91Z2ggdGhlCiAgICA6ZGF0YTpgc3lzLl94b3B0aW9uc2AgZGljdGlvbmFyeS4KQEAgLTQwOSw2ICs0MTEsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICAgICBUaGUgYGAtWCBzaG93cmVmY291bnRgYCBhbmQgYGAtWCB0cmFjZW1hbGxvY2BgIG9wdGlvbnMuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgVGhlIGBgLVggc2hvd2FsbG9jY291bnRgYCBvcHRpb24uCisKIAogT3B0aW9ucyB5b3Ugc2hvdWxkbid0IHVzZQogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpAQCAtNTU1LDYgKzU2MCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSBgYGVuY29kaW5nbmFtZWBgIHBhcnQgaXMgbm93IG9wdGlvbmFsLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT24gV2luZG93cywgdGhlIGVuY29kaW5nIHNwZWNpZmllZCBieSB0aGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIGludGVyYWN0aXZlCisgICAgICBjb25zb2xlIGJ1ZmZlcnMgdW5sZXNzIDplbnZ2YXI6YFBZVEhPTkxFR0FDWVdJTkRPV1NJT0VOQ09ESU5HYCBpcyBhbHNvIHNwZWNpZmllZC4KKyAgICAgIEZpbGVzIGFuZCBwaXBlcyByZWRpcmVjdGVkIHRocm91Z2ggdGhlIHN0YW5kYXJkIHN0cmVhbXMgYXJlIG5vdCBhZmZlY3RlZC4KIAogLi4gZW52dmFyOjogUFlUSE9OTk9VU0VSU0lURQogCkBAIC02MjAsNiArNjI5LDgxIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCisuLiBlbnZ2YXI6OiBQWVRIT05NQUxMT0MKKworICAgU2V0IHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3MuCisKKyAgIFNldCB0aGUgZmFtaWx5IG9mIG1lbW9yeSBhbGxvY2F0b3JzIHVzZWQgYnkgUHl0aG9uOgorCisgICAqIGBgbWFsbG9jYGA6IHVzZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBmdW5jdGlvbiBvZiB0aGUgQyBsaWJyYXJ5CisgICAgIGZvciBhbGwgZG9tYWlucyAoOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX1JBV2AsIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gLAorICAgICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCkuCisgICAqIGBgcHltYWxsb2NgYDogdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBhbGxvY2F0b3IgPHB5bWFsbG9jPmAgZm9yCisgICAgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIGFuZCA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCBkb21haW5zIGFuZCB1c2UKKyAgICAgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgZnVuY3Rpb24gZm9yIHRoZSA6YzpkYXRhOmBQWU1FTV9ET01BSU5fUkFXYCBkb21haW4uCisKKyAgIEluc3RhbGwgZGVidWcgaG9va3M6CisKKyAgICogYGBkZWJ1Z2BgOiBpbnN0YWxsIGRlYnVnIGhvb2tzIG9uIHRvcCBvZiB0aGUgZGVmYXVsdCBtZW1vcnkgYWxsb2NhdG9yCisgICAqIGBgbWFsbG9jX2RlYnVnYGA6IHNhbWUgYXMgYGBtYWxsb2NgYCBidXQgYWxzbyBpbnN0YWxsIGRlYnVnIGhvb2tzCisgICAqIGBgcHltYWxsb2NfZGVidWdgYDogc2FtZSBhcyBgYHB5bWFsbG9jYGAgYnV0IGFsc28gaW5zdGFsbCBkZWJ1ZyBob29rcworCisgICBXaGVuIFB5dGhvbiBpcyBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUsIHRoZSBkZWZhdWx0IGlzIGBgcHltYWxsb2NgYC4gV2hlbgorICAgY29tcGlsZWQgaW4gZGVidWcgbW9kZSwgdGhlIGRlZmF1bHQgaXMgYGBweW1hbGxvY19kZWJ1Z2BgIGFuZCB0aGUgZGVidWcgaG9va3MKKyAgIGFyZSB1c2VkIGF1dG9tYXRpY2FsbHkuCisKKyAgIElmIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgYGBweW1hbGxvY2BgIHN1cHBvcnQsIGBgcHltYWxsb2NgYCBhbmQKKyAgIGBgcHltYWxsb2NfZGVidWdgYCBhcmUgbm90IGF2YWlsYWJsZSwgdGhlIGRlZmF1bHQgaXMgYGBtYWxsb2NgYCBpbiByZWxlYXNlCisgICBtb2RlIGFuZCBgYG1hbGxvY19kZWJ1Z2BgIGluIGRlYnVnIG1vZGUuCisKKyAgIFNlZSB0aGUgOmM6ZnVuYzpgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzYCBmdW5jdGlvbiBmb3IgZGVidWcgaG9va3Mgb24gUHl0aG9uCisgICBtZW1vcnkgYWxsb2NhdG9ycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gZW52dmFyOjogUFlUSE9OTUFMTE9DU1RBVFMKKworICAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgUHl0aG9uIHdpbGwgcHJpbnQgc3RhdGlzdGljcyBvZiB0aGUKKyAgIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAgZXZlcnkgdGltZSBhIG5ldyBweW1hbGxvYyBvYmplY3QKKyAgIGFyZW5hIGlzIGNyZWF0ZWQsIGFuZCBvbiBzaHV0ZG93bi4KKworICAgVGhpcyB2YXJpYWJsZSBpcyBpZ25vcmVkIGlmIHRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlCisgICBpcyB1c2VkIHRvIGZvcmNlIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGFsbG9jYXRvciBvZiB0aGUgQyBsaWJyYXJ5LCBvciBpZgorICAgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBgYHB5bWFsbG9jYGAgc3VwcG9ydC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgdmFyaWFibGUgY2FuIG5vdyBhbHNvIGJlIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgIEl0IG5vdyBoYXMgbm8gZWZmZWN0IGlmIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuCisKKworLi4gZW52dmFyOjogUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkcKKworICAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUKKyAgIHdpbGwgcmV2ZXJ0IHRvIHRoZWlyIHByZS0zLjYgdmFsdWVzIG9mICdtYmNzJyBhbmQgJ3JlcGxhY2UnLCByZXNwZWN0aXZlbHkuCisgICBPdGhlcndpc2UsIHRoZSBuZXcgZGVmYXVsdHMgJ3V0Zi04JyBhbmQgJ3N1cnJvZ2F0ZXBhc3MnIGFyZSB1c2VkLgorCisgICBUaGlzIG1heSBhbHNvIGJlIGVuYWJsZWQgYXQgcnVudGltZSB3aXRoCisgICA6ZnVuYzpgc3lzLl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpYC4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgU2VlIDpwZXA6YDUyOWAgZm9yIG1vcmUgZGV0YWlscy4KKworLi4gZW52dmFyOjogUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkcKKworICAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZywgZG9lcyBub3QgdXNlIHRoZSBuZXcgY29uc29sZSByZWFkZXIgYW5kCisgICB3cml0ZXIuIFRoaXMgbWVhbnMgdGhhdCBVbmljb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBlbmNvZGVkIGFjY29yZGluZyB0bworICAgdGhlIGFjdGl2ZSBjb25zb2xlIGNvZGUgcGFnZSwgcmF0aGVyIHRoYW4gdXNpbmcgdXRmLTguCisKKyAgIFRoaXMgdmFyaWFibGUgaXMgaWdub3JlZCBpZiB0aGUgc3RhbmRhcmQgc3RyZWFtcyBhcmUgcmVkaXJlY3RlZCAodG8gZmlsZXMKKyAgIG9yIHBpcGVzKSByYXRoZXIgdGhhbiByZWZlcnJpbmcgdG8gY29uc29sZSBidWZmZXJzLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIERlYnVnLW1vZGUgdmFyaWFibGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fgogCkBAIC02MzUsOSArNzE5LDMgQEAKIAogICAgSWYgc2V0LCBQeXRob24gd2lsbCBkdW1wIG9iamVjdHMgYW5kIHJlZmVyZW5jZSBjb3VudHMgc3RpbGwgYWxpdmUgYWZ0ZXIKICAgIHNodXR0aW5nIGRvd24gdGhlIGludGVycHJldGVyLgotCi0KLS4uIGVudnZhcjo6IFBZVEhPTk1BTExPQ1NUQVRTCi0KLSAgIElmIHNldCwgUHl0aG9uIHdpbGwgcHJpbnQgbWVtb3J5IGFsbG9jYXRpb24gc3RhdGlzdGljcyBldmVyeSB0aW1lIGEgbmV3Ci0gICBvYmplY3QgYXJlbmEgaXMgY3JlYXRlZCwgYW5kIG9uIHNodXRkb3duLgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2luZGV4LnJzdCBiL0RvYy91c2luZy9pbmRleC5yc3QKaW5kZXggNTAyYWZhOS4uYTVkZjcxMyAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CkBAIC0xNyw0ICsxNywzIEBACiAgICB1bml4LnJzdAogICAgd2luZG93cy5yc3QKICAgIG1hYy5yc3QKLSAgIHNjcmlwdHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvbWFjLnJzdCBiL0RvYy91c2luZy9tYWMucnN0CmluZGV4IDA1YzkxYmIuLjhmMWFjM2YgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9tYWMucnN0CisrKyBiL0RvYy91c2luZy9tYWMucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAKIFdoYXQgeW91IGdldCBhZnRlciBpbnN0YWxsaW5nIGlzIGEgbnVtYmVyIG9mIHRoaW5nczoKIAotKiBBIDpmaWxlOmBNYWNQeXRob24gMy41YCBmb2xkZXIgaW4geW91ciA6ZmlsZTpgQXBwbGljYXRpb25zYCBmb2xkZXIuIEluIGhlcmUKKyogQSA6ZmlsZTpgTWFjUHl0aG9uIDMuNmAgZm9sZGVyIGluIHlvdXIgOmZpbGU6YEFwcGxpY2F0aW9uc2AgZm9sZGVyLiBJbiBoZXJlCiAgIHlvdSBmaW5kIElETEUsIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGF0IGlzIGEgc3RhbmRhcmQgcGFydCBvZiBvZmZpY2lhbAogICBQeXRob24gZGlzdHJpYnV0aW9uczsgUHl0aG9uTGF1bmNoZXIsIHdoaWNoIGhhbmRsZXMgZG91YmxlLWNsaWNraW5nIFB5dGhvbgogICBzY3JpcHRzIGZyb20gdGhlIEZpbmRlcjsgYW5kIHRoZSAiQnVpbGQgQXBwbGV0IiB0b29sLCB3aGljaCBhbGxvd3MgeW91IHRvCkBAIC05Myw3ICs5Myw3IEBACiBhbnl0aGluZyB0aGF0IGhhcyBhIEdVSSkgbmVlZCB0byBiZSBydW4gaW4gYSBzcGVjaWFsIHdheS4gVXNlIDpwcm9ncmFtOmBweXRob253YAogaW5zdGVhZCBvZiA6cHJvZ3JhbTpgcHl0aG9uYCB0byBzdGFydCBzdWNoIHNjcmlwdHMuCiAKLVdpdGggUHl0aG9uIDMuNSwgeW91IGNhbiB1c2UgZWl0aGVyIDpwcm9ncmFtOmBweXRob25gIG9yIDpwcm9ncmFtOmBweXRob253YC4KK1dpdGggUHl0aG9uIDMuNiwgeW91IGNhbiB1c2UgZWl0aGVyIDpwcm9ncmFtOmBweXRob25gIG9yIDpwcm9ncmFtOmBweXRob253YC4KIAogCiBDb25maWd1cmF0aW9uCkBAIC0xNTksNyArMTU5LDcgQEAKIERpc3RyaWJ1dGluZyBQeXRob24gQXBwbGljYXRpb25zIG9uIHRoZSBNYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlICJCdWlsZCBBcHBsZXQiIHRvb2wgdGhhdCBpcyBwbGFjZWQgaW4gdGhlIE1hY1B5dGhvbiAzLjUgZm9sZGVyIGlzIGZpbmUgZm9yCitUaGUgIkJ1aWxkIEFwcGxldCIgdG9vbCB0aGF0IGlzIHBsYWNlZCBpbiB0aGUgTWFjUHl0aG9uIDMuNiBmb2xkZXIgaXMgZmluZSBmb3IKIHBhY2thZ2luZyBzbWFsbCBQeXRob24gc2NyaXB0cyBvbiB5b3VyIG93biBtYWNoaW5lIHRvIHJ1biBhcyBhIHN0YW5kYXJkIE1hYwogYXBwbGljYXRpb24uIFRoaXMgdG9vbCwgaG93ZXZlciwgaXMgbm90IHJvYnVzdCBlbm91Z2ggdG8gZGlzdHJpYnV0ZSBQeXRob24KIGFwcGxpY2F0aW9ucyB0byBvdGhlciB1c2Vycy4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy9zY3JpcHRzLnJzdCBiL0RvYy91c2luZy9zY3JpcHRzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM4NzQxNi4uMDAwMDAwMAotLS0gYS9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0uLiBfdG9vbHMtYW5kLXNjcmlwdHM6Ci0KLUFkZGl0aW9uYWwgVG9vbHMgYW5kIFNjcmlwdHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotLi4gX3NjcmlwdHMtcHl2ZW52OgotCi1weXZlbnYgLSBDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gaW5jbHVkZTo6IHZlbnYtY3JlYXRlLmluYwotCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jIGIvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYwppbmRleCA3YWQzMDA4Li41M2Y0MzFiIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCisrKyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKQEAgLTEsMzEgKzEsMzkgQEAKIENyZWF0aW9uIG9mIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnRzIDx2ZW52LWRlZj5gIGlzIGRvbmUgYnkgZXhlY3V0aW5nIHRoZQotYGBweXZlbnZgYCBzY3JpcHQ6OgorY29tbWFuZCBgYHZlbnZgYDo6CiAKLSAgICBweXZlbnYgL3BhdGgvdG8vbmV3L3ZpcnR1YWwvZW52aXJvbm1lbnQKKyAgICBweXRob24zIC1tIHZlbnYgL3BhdGgvdG8vbmV3L3ZpcnR1YWwvZW52aXJvbm1lbnQKIAogUnVubmluZyB0aGlzIGNvbW1hbmQgY3JlYXRlcyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSAoY3JlYXRpbmcgYW55IHBhcmVudAogZGlyZWN0b3JpZXMgdGhhdCBkb24ndCBleGlzdCBhbHJlYWR5KSBhbmQgcGxhY2VzIGEgYGBweXZlbnYuY2ZnYGAgZmlsZSBpbiBpdAotd2l0aCBhIGBgaG9tZWBgIGtleSBwb2ludGluZyB0byB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiB0aGUgY29tbWFuZCB3YXMgcnVuCi1mcm9tLiAgSXQgYWxzbyBjcmVhdGVzIGEgYGBiaW5gYCAob3IgYGBTY3JpcHRzYGAgb24gV2luZG93cykgc3ViZGlyZWN0b3J5Cit3aXRoIGEgYGBob21lYGAga2V5IHBvaW50aW5nIHRvIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGZyb20gd2hpY2ggdGhlIGNvbW1hbmQKK3dhcyBydW4uICBJdCBhbHNvIGNyZWF0ZXMgYSBgYGJpbmBgIChvciBgYFNjcmlwdHNgYCBvbiBXaW5kb3dzKSBzdWJkaXJlY3RvcnkKIGNvbnRhaW5pbmcgYSBjb3B5IG9mIHRoZSBgYHB5dGhvbmBgIGJpbmFyeSAob3IgYmluYXJpZXMsIGluIHRoZSBjYXNlIG9mCiBXaW5kb3dzKS4gIEl0IGFsc28gY3JlYXRlcyBhbiAoaW5pdGlhbGx5IGVtcHR5KSBgYGxpYi9weXRob25YLlkvc2l0ZS1wYWNrYWdlc2BgCiBzdWJkaXJlY3RvcnkgKG9uIFdpbmRvd3MsIHRoaXMgaXMgYGBMaWJcc2l0ZS1wYWNrYWdlc2BgKS4KIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgYGBweXZlbnZgYCB3YXMgdGhlIHJlY29tbWVuZGVkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzIGZvcgorICAgUHl0aG9uIDMuMyBhbmQgMy40LCBhbmQgaXMgYGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNgorICAgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2Rldi93aGF0c25ldy8zLjYuaHRtbCNkZXByZWNhdGVkLWZlYXR1cmVzPmBfLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIHVzZSBvZiBgYHZlbnZgYCBpcyBub3cgcmVjb21tZW5kZWQgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorCiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQ3JlYXRpbmcgYW5kIHVzaW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvaW5zdGFsbGluZy8jY3JlYXRpbmctdmlydHVhbC1lbnZpcm9ubWVudHM+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KIAogLi4gaGlnaGxpZ2h0Ojogbm9uZQogCi1PbiBXaW5kb3dzLCB5b3UgbWF5IGhhdmUgdG8gaW52b2tlIHRoZSBgYHB5dmVudmBgIHNjcmlwdCBhcyBmb2xsb3dzLCBpZiB5b3UKLWRvbid0IGhhdmUgdGhlIHJlbGV2YW50IFBBVEggYW5kIFBBVEhFWFQgc2V0dGluZ3M6OgorT24gV2luZG93cywgaW52b2tlIHRoZSBgYHZlbnZgYCBjb21tYW5kIGFzIGZvbGxvd3M6OgogCi0gICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gYzpcUHl0aG9uMzVcVG9vbHNcU2NyaXB0c1xweXZlbnYucHkgbXllbnYKKyAgICBjOlw+YzpcUHl0aG9uMzVccHl0aG9uIC1tIHZlbnYgYzpccGF0aFx0b1xteWVudgogCi1vciBlcXVpdmFsZW50bHk6OgorQWx0ZXJuYXRpdmVseSwgaWYgeW91IGNvbmZpZ3VyZWQgdGhlIGBgUEFUSGBgIGFuZCBgYFBBVEhFWFRgYCB2YXJpYWJsZXMgZm9yCit5b3VyIDpyZWY6YFB5dGhvbiBpbnN0YWxsYXRpb24gPHVzaW5nLW9uLXdpbmRvd3M+YDo6CiAKLSAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IG15ZW52CisgICAgYzpcPnB5dGhvbiAtbSB2ZW52IG15ZW52IGM6XHBhdGhcdG9cbXllbnYKIAogVGhlIGNvbW1hbmQsIGlmIHJ1biB3aXRoIGBgLWhgYCwgd2lsbCBzaG93IHRoZSBhdmFpbGFibGUgb3B0aW9uczo6CiAKQEAgLTM2LDI1ICs0NCwyNiBAQAogICAgIENyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KIAogICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgotICAgICAgRU5WX0RJUiAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgorICAgICAgRU5WX0RJUiAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCiAKICAgICBvcHRpb25hbCBhcmd1bWVudHM6Ci0gICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLSAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KLSAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgotICAgICAgLS1jb3BpZXMgICAgICAgICAgICAgICBUcnkgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcywgZXZlbiB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgotICAgICAgLS1jbGVhciAgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KLSAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCi0gICAgICAtLXdpdGhvdXQtcGlwICAgICAgICAgIFNraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgdmlydHVhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQorICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCisgICAgICAtLXN5bWxpbmtzICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCisgICAgICAtLWNvcGllcyAgICAgICAgICAgICAgVHJ5IHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MsIGV2ZW4gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jbGVhciAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCisgICAgICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KKyAgICAgIC0td2l0aG91dC1waXAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQogCi1EZXBlbmRpbmcgb24gaG93IHRoZSBgYHZlbnZgYCBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGludm9rZWQsIHRoZSB1c2FnZSBtZXNzYWdlCi1tYXkgdmFyeSBzbGlnaHRseSwgZS5nLiByZWZlcmVuY2luZyBgYHB5dmVudmBgIHJhdGhlciB0aGFuIGBgdmVudmBgLgorICAgIE9uY2UgYW4gZW52aXJvbm1lbnQgaGFzIGJlZW4gY3JlYXRlZCwgeW91IG1heSB3aXNoIHRvIGFjdGl2YXRlIGl0LCBlLmcuIGJ5CisgICAgc291cmNpbmcgYW4gYWN0aXZhdGUgc2NyaXB0IGluIGl0cyBiaW4gZGlyZWN0b3J5LgogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgSW5zdGFsbHMgcGlwIGJ5IGRlZmF1bHQsIGFkZGVkIHRoZSBgYC0td2l0aG91dC1waXBgYCAgYW5kIGBgLS1jb3BpZXNgYApAQCAtNzMsMTIgKzgyLDEzIEBACiBVbmxlc3MgdGhlIGBgLS13aXRob3V0LXBpcGBgIG9wdGlvbiBpcyBnaXZlbiwgOm1vZDpgZW5zdXJlcGlwYCB3aWxsIGJlCiBpbnZva2VkIHRvIGJvb3RzdHJhcCBgYHBpcGBgIGludG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLU11bHRpcGxlIHBhdGhzIGNhbiBiZSBnaXZlbiB0byBgYHB5dmVudmBgLCBpbiB3aGljaCBjYXNlIGFuIGlkZW50aWNhbAotdmlydHVhbGVudiB3aWxsIGJlIGNyZWF0ZWQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gb3B0aW9ucywgYXQgZWFjaAotcHJvdmlkZWQgcGF0aC4KK011bHRpcGxlIHBhdGhzIGNhbiBiZSBnaXZlbiB0byBgYHZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwgdmlydHVhbAorZW52aXJvbm1lbnQgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2ggcHJvdmlkZWQKK3BhdGguCiAKLU9uY2UgYSB2ZW52IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhIHNjcmlwdCBpbiB0aGUKLXZlbnYncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUgc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOgorT25jZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaGFzIGJlZW4gY3JlYXRlZCwgaXQgY2FuIGJlICJhY3RpdmF0ZWQiIHVzaW5nIGEKK3NjcmlwdCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyeSBkaXJlY3RvcnkuIFRoZSBpbnZvY2F0aW9uIG9mIHRoZQorc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOgogCiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgUGxhdGZvcm0gICAgfCBTaGVsbCAgICAgICAgICAgfCBDb21tYW5kIHRvIGFjdGl2YXRlIHZpcnR1YWwgZW52aXJvbm1lbnQgfApAQCAtOTUsMTYgKzEwNSwxNyBAQAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFlvdSBkb24ndCBzcGVjaWZpY2FsbHkgKm5lZWQqIHRvIGFjdGl2YXRlIGFuIGVudmlyb25tZW50OyBhY3RpdmF0aW9uIGp1c3QKLXByZXBlbmRzIHRoZSB2ZW52J3MgYmluYXJ5IGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsIHNvIHRoYXQgInB5dGhvbiIgaW52b2tlcyB0aGUKLXZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIHlvdSBjYW4gcnVuIGluc3RhbGxlZCBzY3JpcHRzIHdpdGhvdXQgaGF2aW5nIHRvCi11c2UgdGhlaXIgZnVsbCBwYXRoLiBIb3dldmVyLCBhbGwgc2NyaXB0cyBpbnN0YWxsZWQgaW4gYSB2ZW52IHNob3VsZCBiZQotcnVubmFibGUgd2l0aG91dCBhY3RpdmF0aW5nIGl0LCBhbmQgcnVuIHdpdGggdGhlIHZlbnYncyBQeXRob24gYXV0b21hdGljYWxseS4KK3ByZXBlbmRzIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJ5IGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsIHNvIHRoYXQKKyJweXRob24iIGludm9rZXMgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIHlvdSBjYW4gcnVuCitpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0byB1c2UgdGhlaXIgZnVsbCBwYXRoLiBIb3dldmVyLCBhbGwgc2NyaXB0cworaW5zdGFsbGVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBzaG91bGQgYmUgcnVubmFibGUgd2l0aG91dCBhY3RpdmF0aW5nIGl0LAorYW5kIHJ1biB3aXRoIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCiAKLVlvdSBjYW4gZGVhY3RpdmF0ZSBhIHZlbnYgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLiBUaGUgZXhhY3QKLW1lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24gc2NyaXB0IGRlZmluZXMKLWEgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlIHNjcmlwdHMgY2FsbGVkCi1gYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkIHdoZW4gdGhlIHZlbnYgaXMKLWNyZWF0ZWQuCitZb3UgY2FuIGRlYWN0aXZhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGJ5IHR5cGluZyAiZGVhY3RpdmF0ZSIgaW4geW91ciBzaGVsbC4KK1RoZSBleGFjdCBtZWNoYW5pc20gaXMgcGxhdGZvcm0tc3BlY2lmaWM6IGZvciBleGFtcGxlLCB0aGUgQmFzaCBhY3RpdmF0aW9uCitzY3JpcHQgZGVmaW5lcyBhICJkZWFjdGl2YXRlIiBmdW5jdGlvbiwgd2hlcmVhcyBvbiBXaW5kb3dzIHRoZXJlIGFyZSBzZXBhcmF0ZQorc2NyaXB0cyBjYWxsZWQgYGBkZWFjdGl2YXRlLmJhdGBgIGFuZCBgYERlYWN0aXZhdGUucHMxYGAgd2hpY2ggYXJlIGluc3RhbGxlZAord2hlbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBjcmVhdGVkLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgIGBgZmlzaGBgIGFuZCBgYGNzaGBgIGFjdGl2YXRpb24gc2NyaXB0cy4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy93aW5kb3dzLnJzdCBiL0RvYy91c2luZy93aW5kb3dzLnJzdAppbmRleCBhNGE2YTMwLi44MWVmYmIwIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QKKysrIGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CkBAIC0yOSwxNSArMjksMTUgQEAKIAogQXMgc3BlY2lmaWVkIGluIDpwZXA6YDExYCwgYSBQeXRob24gcmVsZWFzZSBvbmx5IHN1cHBvcnRzIGEgV2luZG93cyBwbGF0Zm9ybQogd2hpbGUgTWljcm9zb2Z0IGNvbnNpZGVycyB0aGUgcGxhdGZvcm0gdW5kZXIgZXh0ZW5kZWQgc3VwcG9ydC4gVGhpcyBtZWFucyB0aGF0Ci1QeXRob24gMy41IHN1cHBvcnRzIFdpbmRvd3MgVmlzdGEgYW5kIG5ld2VyLiBJZiB5b3UgcmVxdWlyZSBXaW5kb3dzIFhQIHN1cHBvcnQKLXRoZW4gcGxlYXNlIGluc3RhbGwgUHl0aG9uIDMuNC4KK1B5dGhvbiB8dmVyc2lvbnwgc3VwcG9ydHMgV2luZG93cyBWaXN0YSBhbmQgbmV3ZXIuIElmIHlvdSByZXF1aXJlIFdpbmRvd3MgWFAKK3N1cHBvcnQgdGhlbiBwbGVhc2UgaW5zdGFsbCBQeXRob24gMy40LgogCiBJbnN0YWxsYXRpb24gU3RlcHMKIC0tLS0tLS0tLS0tLS0tLS0tLQogCi1Gb3VyIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtIHR3byBlYWNoIGZvciB0aGUgMzItYml0Ci1hbmQgNjQtYml0IHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci4gVGhlICp3ZWIgaW5zdGFsbGVyKiBpcyBhIHNtYWxsIGluaXRpYWwKLWRvd25sb2FkLCBhbmQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGFzCitGb3VyIFB5dGhvbiB8dmVyc2lvbnwgaW5zdGFsbGVycyBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtIHR3byBlYWNoIGZvciB0aGUKKzMyLWJpdCBhbmQgNjQtYml0IHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci4gVGhlICp3ZWIgaW5zdGFsbGVyKiBpcyBhIHNtYWxsCitpbml0aWFsIGRvd25sb2FkLCBhbmQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGFzCiBuZWNlc3NhcnkuIFRoZSAqb2ZmbGluZSBpbnN0YWxsZXIqIGluY2x1ZGVzIHRoZSBjb21wb25lbnRzIG5lY2Vzc2FyeSBmb3IgYQogZGVmYXVsdCBpbnN0YWxsYXRpb24gYW5kIG9ubHkgcmVxdWlyZXMgYW4gaW50ZXJuZXQgY29ubmVjdGlvbiBmb3Igb3B0aW9uYWwKIGZlYXR1cmVzLiBTZWUgOnJlZjpgaW5zdGFsbC1sYXlvdXQtb3B0aW9uYCBmb3Igb3RoZXIgd2F5cyB0byBhdm9pZCBkb3dubG9hZGluZwpAQCAtNzQsNiArNzQsMzEgQEAKICogSWYgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzeXN0ZW0gOmVudnZhcjpgUEFUSGAKICogU2hvcnRjdXRzIGFyZSBhdmFpbGFibGUgZm9yIGFsbCB1c2VycwogCisuLiBfbWF4LXBhdGg6CisKK1JlbW92aW5nIHRoZSBNQVhfUEFUSCBMaW1pdGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaW5kb3dzIGhpc3RvcmljYWxseSBoYXMgbGltaXRlZCBwYXRoIGxlbmd0aHMgdG8gMjYwIGNoYXJhY3RlcnMuIFRoaXMgbWVhbnQgdGhhdAorcGF0aHMgbG9uZ2VyIHRoYW4gdGhpcyB3b3VsZCBub3QgcmVzb2x2ZSBhbmQgZXJyb3JzIHdvdWxkIHJlc3VsdC4KKworSW4gdGhlIGxhdGVzdCB2ZXJzaW9ucyBvZiBXaW5kb3dzLCB0aGlzIGxpbWl0YXRpb24gY2FuIGJlIGV4cGFuZGVkIHRvCithcHByb3hpbWF0ZWx5IDMyLDAwMCBjaGFyYWN0ZXJzLiBZb3VyIGFkbWluaXN0cmF0b3Igd2lsbCBuZWVkIHRvIGFjdGl2YXRlIHRoZQorIkVuYWJsZSBXaW4zMiBsb25nIHBhdGhzIiBncm91cCBwb2xpY3ksIG9yIHNldCB0aGUgcmVnaXN0cnkgdmFsdWUKK2BgSEtFWV9MT0NBTF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXEZpbGVTeXN0ZW1ATG9uZ1BhdGhzRW5hYmxlZGBgCit0byBgYDFgYC4KKworVGhpcyBhbGxvd3MgdGhlIDpmdW5jOmBvcGVuYCBmdW5jdGlvbiwgdGhlIDptb2Q6YG9zYCBtb2R1bGUgYW5kIG1vc3Qgb3RoZXIKK3BhdGggZnVuY3Rpb25hbGl0eSB0byBhY2NlcHQgYW5kIHJldHVybiBwYXRocyBsb25nZXIgdGhhbiAyNjAgY2hhcmFjdGVycyB3aGVuCit1c2luZyBzdHJpbmdzLiAoVXNlIG9mIGJ5dGVzIGFzIHBhdGhzIGlzIGRlcHJlY2F0ZWQgb24gV2luZG93cywgYW5kIHRoaXMgZmVhdHVyZQoraXMgbm90IGF2YWlsYWJsZSB3aGVuIHVzaW5nIGJ5dGVzLikKKworQWZ0ZXIgY2hhbmdpbmcgdGhlIGFib3ZlIG9wdGlvbiwgbm8gZnVydGhlciBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBTdXBwb3J0IGZvciBsb25nIHBhdGhzIHdhcyBlbmFibGVkIGluIFB5dGhvbi4KKwogLi4gX2luc3RhbGwtcXVpZXQtb3B0aW9uOgogCiBJbnN0YWxsaW5nIFdpdGhvdXQgVUkKQEAgLTE2OCwxMyArMTkzLDEzIEBACiBGb3IgZXhhbXBsZSwgdG8gc2lsZW50bHkgaW5zdGFsbCBhIGRlZmF1bHQsIHN5c3RlbS13aWRlIFB5dGhvbiBpbnN0YWxsYXRpb24sCiB5b3UgY291bGQgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCAoZnJvbSBhbiBlbGV2YXRlZCBjb21tYW5kIHByb21wdCk6OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSAvcXVpZXQgSW5zdGFsbEFsbFVzZXJzPTEgUHJlcGVuZFBhdGg9MSBJbmNsdWRlX3Rlc3Q9MAorICAgIHB5dGhvbi0zLjYuMC5leGUgL3F1aWV0IEluc3RhbGxBbGxVc2Vycz0xIFByZXBlbmRQYXRoPTEgSW5jbHVkZV90ZXN0PTAKIAogVG8gYWxsb3cgdXNlcnMgdG8gZWFzaWx5IGluc3RhbGwgYSBwZXJzb25hbCBjb3B5IG9mIFB5dGhvbiB3aXRob3V0IHRoZSB0ZXN0CiBzdWl0ZSwgeW91IGNvdWxkIHByb3ZpZGUgYSBzaG9ydGN1dCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZC4gVGhpcyB3aWxsCiBkaXNwbGF5IGEgc2ltcGxpZmllZCBpbml0aWFsIHBhZ2UgYW5kIGRpc2FsbG93IGN1c3RvbWl6YXRpb246OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSBJbnN0YWxsQWxsVXNlcnM9MCBJbmNsdWRlX2xhdW5jaGVyPTAgSW5jbHVkZV90ZXN0PTAKKyAgICBweXRob24tMy42LjAuZXhlIEluc3RhbGxBbGxVc2Vycz0wIEluY2x1ZGVfbGF1bmNoZXI9MCBJbmNsdWRlX3Rlc3Q9MAogICAgICAgICBTaW1wbGVJbnN0YWxsPTEgU2ltcGxlSW5zdGFsbERlc2NyaXB0aW9uPSJKdXN0IGZvciBtZSwgbm8gdGVzdCBzdWl0ZS4iCiAKIChOb3RlIHRoYXQgb21pdHRpbmcgdGhlIGxhdW5jaGVyIGFsc28gb21pdHMgZmlsZSBhc3NvY2lhdGlvbnMsIGFuZCBpcyBvbmx5CkBAIC0yMDksMTMgKzIzNCwxMyBAQAogdXNlZnVsIHRvIGhhdmUgYSBsb2NhbGx5IGNhY2hlZCBjb3B5LgogCiBFeGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIENvbW1hbmQgUHJvbXB0IHRvIGRvd25sb2FkIGFsbCBwb3NzaWJsZQotcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNS4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCityZXF1aXJlZCBmaWxlcy4gIFJlbWVtYmVyIHRvIHN1YnN0aXR1dGUgYGBweXRob24tMy42LjAuZXhlYGAgZm9yIHRoZSBhY3R1YWwKIG5hbWUgb2YgeW91ciBpbnN0YWxsZXIsIGFuZCB0byBjcmVhdGUgbGF5b3V0cyBpbiB0aGVpciBvd24gZGlyZWN0b3JpZXMgdG8KIGF2b2lkIGNvbGxpc2lvbnMgYmV0d2VlbiBmaWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuCiAKIDo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIC9sYXlvdXQgW29wdGlvbmFsIHRhcmdldCBkaXJlY3RvcnldCisgICAgcHl0aG9uLTMuNi4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQogCiBZb3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgYGAvcXVpZXRgYCBvcHRpb24gdG8gaGlkZSB0aGUgcHJvZ3Jlc3MgZGlzcGxheS4KIApAQCAtMzIwLDcgKzM0NSw3IEBACiBUbyB0ZW1wb3JhcmlseSBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvcGVuIENvbW1hbmQgUHJvbXB0IGFuZCB1c2UgdGhlCiA6Y29tbWFuZDpgc2V0YCBjb21tYW5kOjoKIAotICAgIEM6XD5zZXQgUEFUSD1DOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjU7JVBBVEglCisgICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNjslUEFUSCUKICAgICBDOlw+c2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKICAgICBDOlw+cHl0aG9uCiAKQEAgLTM3NiwxMCArNDAxLDEwIEBACiAKIEJlc2lkZXMgdXNpbmcgdGhlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBzdGFydCBtZW51IGVudHJ5IGZvciB0aGUgUHl0aG9uCiBpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gVGhlCi1pbnN0YWxsZXIgZm9yIFB5dGhvbiAzLjUgYW5kIGxhdGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KK2luc3RhbGxlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCiAKLU9uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiAzLjUgdG8KLVBBVEgiIGNhbiBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCitPbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgaW5zdGFsbGVyLCBhbiBvcHRpb24gbGFiZWxsZWQgIkFkZCBQeXRob24gdG8gUEFUSCIKK21heSBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCiA6ZW52dmFyOmBQQVRIYC4gIFRoZSBsb2NhdGlvbiBvZiB0aGUgOmZpbGU6YFNjcmlwdHNcXGAgZm9sZGVyIGlzIGFsc28gYWRkZWQuCiBUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSA6Y29tbWFuZDpgcHl0aG9uYCB0byBydW4gdGhlIGludGVycHJldGVyLCBhbmQKIDpjb21tYW5kOmBwaXBgIGZvciB0aGUgcGFja2FnZSBpbnN0YWxsZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKQEAgLTM5Myw3ICs0MTgsNyBAQAogZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFscmVhZHkKIGV4aXN0ZWQpOjoKIAotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjUKKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy42CiAKIC4uIF9sYXVuY2hlcjoKIApAQCAtNDE4LDYgKzQ0Myw4IEBACiBGcm9tIHRoZSBjb21tYW5kLWxpbmUKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCiBTeXN0ZW0td2lkZSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiAzLjMgYW5kIGxhdGVyIHdpbGwgcHV0IHRoZSBsYXVuY2hlciBvbiB5b3VyCiA6ZW52dmFyOmBQQVRIYC4gVGhlIGxhdW5jaGVyIGlzIGNvbXBhdGlibGUgd2l0aCBhbGwgYXZhaWxhYmxlIHZlcnNpb25zIG9mCiBQeXRob24sIHNvIGl0IGRvZXMgbm90IG1hdHRlciB3aGljaCB2ZXJzaW9uIGlzIGluc3RhbGxlZC4gVG8gY2hlY2sgdGhhdCB0aGUKQEAgLTQyNywyNSArNDU0LDI2IEBACiAKICAgcHkKIAotWW91IHNob3VsZCBmaW5kIHRoYXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggeW91IGhhdmUgaW5zdGFsbGVkIGlzCitZb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIHlvdSBoYXZlIGluc3RhbGxlZCBpcwogc3RhcnRlZCAtIGl0IGNhbiBiZSBleGl0ZWQgYXMgbm9ybWFsLCBhbmQgYW55IGFkZGl0aW9uYWwgY29tbWFuZC1saW5lCiBhcmd1bWVudHMgc3BlY2lmaWVkIHdpbGwgYmUgc2VudCBkaXJlY3RseSB0byBQeXRob24uCiAKLUlmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiAyLnggaW5zdGFsbGVkIChlLmcuLCAyLjYgYW5kIDIuNykgeW91Ci13aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiAyLjcgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNiwgdHJ5IHRoZQorSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIGluc3RhbGxlZCAoZS5nLiwgMi43IGFuZCB8dmVyc2lvbnwpIHlvdQord2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gfHZlcnNpb258IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjcsIHRyeQordGhlIGNvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTIuNworCitJZiB5b3Ugd2FudCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQsIHRyeSB0aGUKIGNvbW1hbmQ6CiAKIDo6CiAKLSAgcHkgLTIuNgorICBweSAtMgogCi1JZiB5b3UgaGF2ZSBhIFB5dGhvbiAzLnggaW5zdGFsbGVkLCB0cnkgdGhlIGNvbW1hbmQ6Ci0KLTo6Ci0KLSAgcHkgLTMKLQotWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMy54IHN0YXJ0cy4KK1lvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCBzdGFydHMuCiAKIElmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciwgeW91IGRvIG5vdCBoYXZlIHRoZSBsYXVuY2hlciBpbnN0YWxsZWQ6CiAKQEAgLTUwMCw2ICs1MjgsMTEgQEAKIGZpcnN0IGxpbmUgdG8gYGAjISBweXRob24yLjZgYCBhbmQgeW91IHNob3VsZCBmaW5kIHRoZSAyLjYgdmVyc2lvbgogaW5mb3JtYXRpb24gcHJpbnRlZC4KIAorTm90ZSB0aGF0IHVubGlrZSBpbnRlcmFjdGl2ZSB1c2UsIGEgYmFyZSAicHl0aG9uIiB3aWxsIHVzZSB0aGUgbGF0ZXN0Cit2ZXJzaW9uIG9mIFB5dGhvbiAyLnggdGhhdCB5b3UgaGF2ZSBpbnN0YWxsZWQuICBUaGlzIGlzIGZvciBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSBhbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBVbml4LCB3aGVyZSB0aGUgY29tbWFuZCBgYHB5dGhvbmBgCit0eXBpY2FsbHkgcmVmZXJzIHRvIFB5dGhvbiAyLgorCiBGcm9tIGZpbGUgYXNzb2NpYXRpb25zCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKQEAgLTY3Niw3ICs3MDksNyBAQAogCiAKIAotLi4gZmluZGluZ19tb2R1bGVzOgorLi4gX2ZpbmRpbmdfbW9kdWxlczoKIAogRmluZGluZyBtb2R1bGVzCiA9PT09PT09PT09PT09PT0KQEAgLTY4Nyw3ICs3MjAsMjQgQEAKIDpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgogOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KIAotVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKK1RvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgOmRhdGE6YHN5cy5wYXRoYCwgY3JlYXRlIGEgYGAuX3B0aGBgIGZpbGUgd2l0aCB0aGUgc2FtZQorbmFtZSBhcyB0aGUgRExMIChgYHB5dGhvbjM2Ll9wdGhgYCkgb3IgdGhlIGV4ZWN1dGFibGUgKGBgcHl0aG9uLl9wdGhgYCkgYW5kCitzcGVjaWZ5IG9uZSBsaW5lIGZvciBlYWNoIHBhdGggdG8gYWRkIHRvIDpkYXRhOmBzeXMucGF0aGAuIFRoZSBmaWxlIGJhc2VkIG9uIHRoZQorRExMIG5hbWUgb3ZlcnJpZGVzIHRoZSBvbmUgYmFzZWQgb24gdGhlIGV4ZWN1dGFibGUsIHdoaWNoIGFsbG93cyBwYXRocyB0byBiZQorcmVzdHJpY3RlZCBmb3IgYW55IHByb2dyYW0gbG9hZGluZyB0aGUgcnVudGltZSBpZiBkZXNpcmVkLgorCitXaGVuIHRoZSBmaWxlIGV4aXN0cywgYWxsIHJlZ2lzdHJ5IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGlnbm9yZWQsCitpc29sYXRlZCBtb2RlIGlzIGVuYWJsZWQsIGFuZCA6bW9kOmBzaXRlYCBpcyBub3QgaW1wb3J0ZWQgdW5sZXNzIG9uZSBsaW5lIGluIHRoZQorZmlsZSBzcGVjaWZpZXMgYGBpbXBvcnQgc2l0ZWBgLiBCbGFuayBwYXRocyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCBgYCNgYCBhcmUKK2lnbm9yZWQuIEVhY2ggcGF0aCBtYXkgYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlLgorSW1wb3J0IHN0YXRlbWVudHMgb3RoZXIgdGhhbiB0byBgYHNpdGVgYCBhcmUgbm90IHBlcm1pdHRlZCwgYW5kIGFyYml0cmFyeSBjb2RlCitjYW5ub3QgYmUgc3BlY2lmaWVkLgorCitOb3RlIHRoYXQgYGAucHRoYGAgZmlsZXMgKHdpdGhvdXQgbGVhZGluZyB1bmRlcnNjb3JlKSB3aWxsIGJlIHByb2Nlc3NlZCBub3JtYWxseQorYnkgdGhlIDptb2Q6YHNpdGVgIG1vZHVsZS4KKworV2hlbiBubyBgYC5fcHRoYGAgZmlsZSBpcyBmb3VuZCwgdGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24KK1dpbmRvd3M6CiAKICogQW4gZW1wdHkgZW50cnkgaXMgYWRkZWQgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudAogICBkaXJlY3RvcnkuCkBAIC03MDYsMTAgKzc1NiwxMSBAQAogCiAqIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05IT01FYCBpcyBzZXQsIGl0IGlzIGFzc3VtZWQgYXMKICAgIlB5dGhvbiBIb21lIi4gIE90aGVyd2lzZSwgdGhlIHBhdGggb2YgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUgaXMgdXNlZCB0bwotICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGBgTGliXG9zLnB5YGApIHRvIGRlZHVjZSB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEKLSAgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYAotICAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0IGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUKLSAgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aCBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgorICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGVpdGhlciBgYExpYlxvcy5weWBgIG9yIGBgcHl0aG9uWFkuemlwYGApIHRvIGRlZHVjZQorICB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMKKyAgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYCAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0CisgIGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aAorICBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgogCiAqIElmIHRoZSBQeXRob24gSG9tZSBjYW5ub3QgYmUgbG9jYXRlZCwgbm8gOmVudnZhcjpgUFlUSE9OUEFUSGAgaXMgc3BlY2lmaWVkIGluCiAgIHRoZSBlbnZpcm9ubWVudCwgYW5kIG5vIHJlZ2lzdHJ5IGVudHJpZXMgY2FuIGJlIGZvdW5kLCBhIGRlZmF1bHQgcGF0aCB3aXRoCkBAIC03MjIsMTAgKzc3Myw2IEBACiAgIHBhdGggaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwYXRoIHRvIHRoZSBtYWluIGV4ZWN1dGFibGUgd2hlbiBkZWR1Y2luZyB0aGUKICAgaG9tZSBsb2NhdGlvbi4KIAotKiBJZiBgYGFwcGxvY2FsYGAgaXMgc2V0IHRvIHRydWUsIHRoZSBgYGhvbWVgYCBwcm9wZXJ0eSBvciB0aGUgbWFpbiBleGVjdXRhYmxlCi0gIGlzIGFsd2F5cyB1c2VkIGFzIHRoZSBob21lIHBhdGgsIGFuZCBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHJlZ2lzdHJ5Ci0gIHZhbHVlcyBhZmZlY3RpbmcgdGhlIHBhdGggYXJlIGlnbm9yZWQuIFRoZSBsYW5kbWFyayBmaWxlIGlzIG5vdCBjaGVja2VkLgotCiBUaGUgZW5kIHJlc3VsdCBvZiBhbGwgdGhpcyBpczoKIAogKiBXaGVuIHJ1bm5pbmcgOmZpbGU6YHB5dGhvbi5leGVgLCBvciBhbnkgb3RoZXIgLmV4ZSBpbiB0aGUgbWFpbiBQeXRob24KQEAgLTc0NCwxMyArNzkxLDEyIEBACiBGb3IgdGhvc2Ugd2hvIHdhbnQgdG8gYnVuZGxlIFB5dGhvbiBpbnRvIHRoZWlyIGFwcGxpY2F0aW9uIG9yIGRpc3RyaWJ1dGlvbiwgdGhlCiBmb2xsb3dpbmcgYWR2aWNlIHdpbGwgcHJldmVudCBjb25mbGljdHMgd2l0aCBvdGhlciBpbnN0YWxsYXRpb25zOgogCi0qIEluY2x1ZGUgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGFsb25nc2lkZSB5b3VyIGV4ZWN1dGFibGUgY29udGFpbmluZwotICBgYGFwcGxvY2FsID0gdHJ1ZWBgLiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgeW91ciBvd24gZGlyZWN0b3J5IHdpbGwgYmUgdXNlZCB0bwotICByZXNvbHZlIHBhdGhzIGV2ZW4gaWYgeW91IGhhdmUgaW5jbHVkZWQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW4gYSBaSVAgZmlsZS4KLSAgSXQgd2lsbCBhbHNvIGlnbm9yZSB1c2VyIHNpdGUtcGFja2FnZXMgYW5kIG90aGVyIHBhdGhzIGxpc3RlZCBpbiB0aGUKLSAgcmVnaXN0cnkuCisqIEluY2x1ZGUgYSBgYC5fcHRoYGAgZmlsZSBhbG9uZ3NpZGUgeW91ciBleGVjdXRhYmxlIGNvbnRhaW5pbmcgdGhlCisgIGRpcmVjdG9yaWVzIHRvIGluY2x1ZGUuIFRoaXMgd2lsbCBpZ25vcmUgcGF0aHMgbGlzdGVkIGluIHRoZSByZWdpc3RyeSBhbmQKKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgYWxzbyBpZ25vcmUgOm1vZDpgc2l0ZWAgdW5sZXNzIGBgaW1wb3J0IHNpdGVgYCBpcworICBsaXN0ZWQuCiAKLSogSWYgeW91IGFyZSBsb2FkaW5nIDpmaWxlOmBweXRob24zLmRsbGAgb3IgOmZpbGU6YHB5dGhvbjM1LmRsbGAgaW4geW91ciBvd24KKyogSWYgeW91IGFyZSBsb2FkaW5nIDpmaWxlOmBweXRob24zLmRsbGAgb3IgOmZpbGU6YHB5dGhvbjM2LmRsbGAgaW4geW91ciBvd24KICAgZXhlY3V0YWJsZSwgZXhwbGljaXRseSBjYWxsIDpjOmZ1bmM6YFB5X1NldFBhdGhgIG9yIChhdCBsZWFzdCkKICAgOmM6ZnVuYzpgUHlfU2V0UHJvZ3JhbU5hbWVgIGJlZm9yZSA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIApAQCAtNzYwLDcgKzgwNiw4IEBACiAqIElmIHlvdSBjYW5ub3QgdXNlIHRoZSBwcmV2aW91cyBzdWdnZXN0aW9ucyAoZm9yIGV4YW1wbGUsIHlvdSBhcmUgYQogICBkaXN0cmlidXRpb24gdGhhdCBhbGxvd3MgcGVvcGxlIHRvIHJ1biA6ZmlsZTpgcHl0aG9uLmV4ZWAgZGlyZWN0bHkpLCBlbnN1cmUKICAgdGhhdCB0aGUgbGFuZG1hcmsgZmlsZSAoOmZpbGU6YExpYlxcb3MucHlgKSBleGlzdHMgaW4geW91ciBpbnN0YWxsIGRpcmVjdG9yeS4KLSAgKE5vdGUgdGhhdCBpdCB3aWxsIG5vdCBiZSBkZXRlY3RlZCBpbnNpZGUgYSBaSVAgZmlsZS4pCisgIChOb3RlIHRoYXQgaXQgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgaW5zaWRlIGEgWklQIGZpbGUsIGJ1dCBhIGNvcnJlY3RseSBuYW1lZAorICBaSVAgZmlsZSB3aWxsIGJlIGRldGVjdGVkIGluc3RlYWQuKQogCiBUaGVzZSB3aWxsIGVuc3VyZSB0aGF0IHRoZSBmaWxlcyBpbiBhIHN5c3RlbS13aWRlIGluc3RhbGxhdGlvbiB3aWxsIG5vdCB0YWtlCiBwcmVjZWRlbmNlIG92ZXIgdGhlIGNvcHkgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYnVuZGxlZCB3aXRoIHlvdXIgYXBwbGljYXRpb24uCkBAIC03NjgsNiArODE1LDE0IEBACiB0aGUgZmlyc3Qgc3VnZ2VzdGlvbiBpcyB0aGUgYmVzdCwgYXMgdGhlIG90aGVyIG1heSBzdGlsbCBiZSBzdXNjZXB0aWJsZSB0bwogbm9uLXN0YW5kYXJkIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhbmQgdXNlciBzaXRlLXBhY2thZ2VzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAzLjYKKworICAgICAgKiBBZGRzIGBgLl9wdGhgYCBmaWxlIHN1cHBvcnQgYW5kIHJlbW92ZXMgYGBhcHBsb2NhbGBgIG9wdGlvbiBmcm9tCisgICAgICAgIGBgcHl2ZW52LmNmZ2BgLgorICAgICAgKiBBZGRzIGBgcHl0aG9uWFguemlwYGAgYXMgYSBwb3RlbnRpYWwgbGFuZG1hcmsgd2hlbiBkaXJlY3RseSBhZGphY2VudAorICAgICAgICB0byB0aGUgZXhlY3V0YWJsZS4KKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtODY3LDcgKzkyMiw3IEBACiBXaGVuIGV4dHJhY3RlZCwgdGhlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBpcyAoYWxtb3N0KSBmdWxseSBpc29sYXRlZCBmcm9tIHRoZQogdXNlcidzIHN5c3RlbSwgaW5jbHVkaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgc3lzdGVtIHJlZ2lzdHJ5IHNldHRpbmdzLCBhbmQKIGluc3RhbGxlZCBwYWNrYWdlcy4gVGhlIHN0YW5kYXJkIGxpYnJhcnkgaXMgaW5jbHVkZWQgYXMgcHJlLWNvbXBpbGVkIGFuZAotb3B0aW1pemVkIGBgLnB5Y2BgIGZpbGVzIGluIGEgWklQLCBhbmQgYGBweXRob24zLmRsbGBgLCBgYHB5dGhvbjM1LmRsbGBgLAorb3B0aW1pemVkIGBgLnB5Y2BgIGZpbGVzIGluIGEgWklQLCBhbmQgYGBweXRob24zLmRsbGBgLCBgYHB5dGhvbjM2LmRsbGBgLAogYGBweXRob24uZXhlYGAgYW5kIGBgcHl0aG9udy5leGVgYCBhcmUgYWxsIHByb3ZpZGVkLiBUY2wvdGsgKGluY2x1ZGluZyBhbGwKIGRlcGVuZGFudHMsIHN1Y2ggYXMgSWRsZSksIHBpcCBhbmQgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGFyZSBub3QgaW5jbHVkZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjEucnN0IGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKaW5kZXggYmU3MmJmZS4uZDk3YWI2NyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKQEAgLTM2Nyw3ICszNjcsNyBAQAogCiBUaGlzIHZlcnNpb24gd29ya3MgZm9yIHNpbXBsZSB0aGluZ3Mgc3VjaCBhcyBpbnRlZ2VycywgYnV0IGl0IGhhcyBhIHNpZGUgZWZmZWN0OwogdGhlIGBgX2NhY2hlYGAgZGljdGlvbmFyeSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgcmV0dXJuIHZhbHVlcywgc28gdGhleSdsbAotbmV2ZXIgYmUgZGVhbGxvY2F0ZWQgdW50aWwgdGhlIFB5dGhvbiBwcm9jZXNzIGV4aXRzIGFuZCBjbGVhbnMgdXAgVGhpcyBpc24ndAorbmV2ZXIgYmUgZGVhbGxvY2F0ZWQgdW50aWwgdGhlIFB5dGhvbiBwcm9jZXNzIGV4aXRzIGFuZCBjbGVhbnMgdXAuIFRoaXMgaXNuJ3QKIHZlcnkgbm90aWNlYWJsZSBmb3IgaW50ZWdlcnMsIGJ1dCBpZiA6ZnVuYzpgZmAgcmV0dXJucyBhbiBvYmplY3QsIG9yIGEgZGF0YQogc3RydWN0dXJlIHRoYXQgdGFrZXMgdXAgYSBsb3Qgb2YgbWVtb3J5LCB0aGlzIGNhbiBiZSBhIHByb2JsZW0uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjIucnN0IGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKaW5kZXggOWFjYzczNC4uYjkwMGU3NyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMi5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKQEAgLTEyNTMsOSArMTI1Myw5IEBACiAKICAgICBAY29udGV4dG1hbmFnZXIKICAgICBkZWYgdHJhY2tfZW50cnlfYW5kX2V4aXQobmFtZSk6Ci0gICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgbmFtZSkKICAgICAgICAgeWllbGQKLSAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KG5hbWUpKQorICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgbmFtZSkKIAogRm9ybWVybHksIHRoaXMgd291bGQgaGF2ZSBvbmx5IGJlZW4gdXNhYmxlIGFzIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdAppbmRleCAwYzlmMmJiLi45M2IyOTdjIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdApAQCAtMTA4LDcgKzEwOCw3IEBACiB3aXRoIHRoZSBpbnRlcnByZXRlciBjb3JlLgogCiBUaGlzIFBFUCBhZGRzIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MsIGFuZCB0aGUKLTpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBzY3JpcHQgZm9yIGNvbW1hbmQtbGluZSBhY2Nlc3MgYW5kCitgYHB5dmVudmBgIHNjcmlwdCBmb3IgY29tbWFuZC1saW5lIGFjY2VzcyBhbmQKIGFkbWluaXN0cmF0aW9uLiAgVGhlIFB5dGhvbiBpbnRlcnByZXRlciBjaGVja3MgZm9yIGEgYGBweXZlbnYuY2ZnYGAsCiBmaWxlIHdob3NlIGV4aXN0ZW5jZSBzaWduYWxzIHRoZSBiYXNlIG9mIGEgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeQogdHJlZS4KZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjQucnN0IGIvRG9jL3doYXRzbmV3LzMuNC5yc3QKaW5kZXggMWU1YzlkMS4uNzIzOThmOSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuNC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuNC5yc3QKQEAgLTE5Nyw3ICsxOTcsNyBAQAogYGBwaXBgYCBjb21tYW5kIHR5cGljYWxseSByZWZlcnMgdG8gdGhlIHNlcGFyYXRlbHkgaW5zdGFsbGVkIFB5dGhvbiAyCiB2ZXJzaW9uLgogCi1UaGUgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFuZCB0aGUgOm1vZDpgdmVudmAKK1RoZSBgYHB5dmVudmBgIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFuZCB0aGUgOm1vZDpgdmVudmAKIG1vZHVsZSBtYWtlIHVzZSBvZiB0aGUgOm1vZDpgZW5zdXJlcGlwYCBtb2R1bGUgdG8gbWFrZSBgYHBpcGBgIHJlYWRpbHkKIGF2YWlsYWJsZSBpbiB2aXJ0dWFsIGVudmlyb25tZW50cy4gV2hlbiB1c2luZyB0aGUgY29tbWFuZCBsaW5lIHV0aWxpdHksCiBgYHBpcGBgIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0LCB3aGlsZSB3aGVuIHVzaW5nIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUKQEAgLTgyNCw3ICs4MjQsNyBAQAogOnRlcm06YHByb3Zpc2lvbmFsIEFQSWAuICBUaGVzZSBjbGFzc2VzIHByb3ZpZGUgYSBudW1iZXIgb2YgbmV3IG1ldGhvZHMgdGhhdAogbWFrZSBleHRyYWN0aW5nIGNvbnRlbnQgZnJvbSBhbmQgaW5zZXJ0aW5nIGNvbnRlbnQgaW50byBlbWFpbCBtZXNzYWdlcyBtdWNoCiBlYXNpZXIuICBGb3IgZGV0YWlscywgc2VlIHRoZSA6bW9kOmB+ZW1haWwuY29udGVudG1hbmFnZXJgIGRvY3VtZW50YXRpb24gYW5kCi10aGUgOnJlZjpgZW1haWwtY29udGVudG1hbmFnZXItYXBpLWV4YW1wbGVzYC4gIFRoZXNlIEFQSSBhZGRpdGlvbnMgY29tcGxldGUgdGhlCit0aGUgOnJlZjpgZW1haWwtZXhhbXBsZXNgLiAgVGhlc2UgQVBJIGFkZGl0aW9ucyBjb21wbGV0ZSB0aGUKIGJ1bGsgb2YgdGhlIHdvcmsgdGhhdCB3YXMgcGxhbm5lZCBhcyBwYXJ0IG9mIHRoZSBlbWFpbDYgcHJvamVjdC4gIFRoZSBjdXJyZW50bHkKIHByb3Zpc2lvbmFsIEFQSSBpcyBzY2hlZHVsZWQgdG8gYmVjb21lIGZpbmFsIGluIFB5dGhvbiAzLjUgKHBvc3NpYmx5IHdpdGggYSBmZXcKIG1pbm9yIGFkZGl0aW9ucyBpbiB0aGUgYXJlYSBvZiBlcnJvciBoYW5kbGluZykuICAoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQKQEAgLTE5ODksMTEgKzE5ODksMTEgQEAKICAgU3Rpbm5lciB1c2luZyBoaXMgOnBlcDpgNDQ1YC1iYXNlZCBgYHB5ZmFpbG1hbGxvY2BgIHRvb2wgKDppc3N1ZTpgMTg0MDhgLAogICA6aXNzdWU6YDE4NTIwYCkuCiAKLSogVGhlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBjb21tYW5kIG5vdyBhY2NlcHRzIGEgYGAtLWNvcGllc2BgIG9wdGlvbgorKiBUaGUgYGBweXZlbnZgYCBjb21tYW5kIG5vdyBhY2NlcHRzIGEgYGAtLWNvcGllc2BgIG9wdGlvbgogICB0byB1c2UgY29waWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzIGV2ZW4gb24gc3lzdGVtcyB3aGVyZSBzeW1saW5rcyBhcmUgdGhlCiAgIGRlZmF1bHQuICAoQ29udHJpYnV0ZWQgYnkgVmluYXkgU2FqaXAgaW4gOmlzc3VlOmAxODgwN2AuKQogCi0qIFRoZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgY29tbWFuZCBhbHNvIGFjY2VwdHMgYSBgYC0td2l0aG91dC1waXBgYAorKiBUaGUgYGBweXZlbnZgYCBjb21tYW5kIGFsc28gYWNjZXB0cyBhIGBgLS13aXRob3V0LXBpcGBgCiAgIG9wdGlvbiB0byBzdXBwcmVzcyB0aGUgb3RoZXJ3aXNlLWF1dG9tYXRpYyBib290c3RyYXBwaW5nIG9mIHBpcCBpbnRvCiAgIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiAgKENvbnRyaWJ1dGVkIGJ5IE5pY2sgQ29naGxhbiBpbiA6aXNzdWU6YDE5NTUyYAogICBhcyBwYXJ0IG9mIHRoZSA6cGVwOmA0NTNgIGltcGxlbWVudGF0aW9uLikKQEAgLTI0NTksNyArMjQ1OSw3IEBACiAgIHN0cmVhbSBpbiA6bW9kOmB+aW8uVGV4dElPV3JhcHBlcmAgdG8gdXNlIGl0cyAqbmV3bGluZSogYXJndW1lbnQKICAgKDppc3N1ZTpgMTUyMDRgKS4KIAotKiBJZiB5b3UgdXNlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBpbiBhIHNjcmlwdCBhbmQgZGVzaXJlIHRoYXQgcGlwCisqIElmIHlvdSB1c2UgYGBweXZlbnZgYCBpbiBhIHNjcmlwdCBhbmQgZGVzaXJlIHRoYXQgcGlwCiAgICpub3QqIGJlIGluc3RhbGxlZCwgeW91IG11c3QgYWRkIGBgLS13aXRob3V0LXBpcGBgIHRvIHlvdXIgY29tbWFuZAogICBpbnZvY2F0aW9uLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdCBiL0RvYy93aGF0c25ldy8zLjUucnN0CmluZGV4IGVjMmJjNWIuLjliMjIxZDUgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjUucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjUucnN0CkBAIC00Niw3ICs0Niw4IEBACiAKIFRoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjUsIGNvbXBhcmVkIHRvIDMuNC4KIFB5dGhvbiAzLjUgd2FzIHJlbGVhc2VkIG9uIFNlcHRlbWJlciAxMywgMjAxNS4gwqBTZWUgdGhlCi06cmVmOmBjaGFuZ2Vsb2cgPGNoYW5nZWxvZz5gIGZvciBhIGZ1bGwgbGlzdCBvZiBjaGFuZ2VzLgorYGNoYW5nZWxvZyA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3L2NoYW5nZWxvZy5odG1sPmBfIGZvciBhIGZ1bGwKK2xpc3Qgb2YgY2hhbmdlcy4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIxNzUsOCArMjE3Niw3IEBACiAKICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYCwKICogOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCwKLSogOmM6ZnVuYzpgX1B5T2JqZWN0X0dDX0NhbGxvY2AuCisqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AuCiAKIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDIxMjMzYC4pCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjYucnN0IGIvRG9jL3doYXRzbmV3LzMuNi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxMTkxYwotLS0gL2Rldi9udWxsCisrKyBiL0RvYy93aGF0c25ldy8zLjYucnN0CkBAIC0wLDAgKzEsMjIyNCBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICBXaGF0J3MgTmV3IEluIFB5dGhvbiAzLjYKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworOlJlbGVhc2U6IHxyZWxlYXNlfAorOkRhdGU6IHx0b2RheXwKKzpFZGl0b3JzOiBFbHZpcyBQcmFuc2tldmljaHVzIDxlbHZpc0BtYWdpYy5pbz4sIFl1cnkgU2VsaXZhbm92IDx5dXJ5QG1hZ2ljLmlvPgorCisuLiBSdWxlcyBmb3IgbWFpbnRlbmFuY2U6CisKKyAgICogQW55b25lIGNhbiBhZGQgdGV4dCB0byB0aGlzIGRvY3VtZW50LiAgRG8gbm90IHNwZW5kIHZlcnkgbXVjaCB0aW1lCisgICBvbiB0aGUgd29yZGluZyBvZiB5b3VyIGNoYW5nZXMsIGJlY2F1c2UgeW91ciB0ZXh0IHdpbGwgcHJvYmFibHkKKyAgIGdldCByZXdyaXR0ZW4gdG8gc29tZSBkZWdyZWUuCisKKyAgICogVGhlIG1haW50YWluZXIgd2lsbCBnbyB0aHJvdWdoIE1pc2MvTkVXUyBwZXJpb2RpY2FsbHkgYW5kIGFkZAorICAgY2hhbmdlczsgaXQncyB0aGVyZWZvcmUgbW9yZSBpbXBvcnRhbnQgdG8gYWRkIHlvdXIgY2hhbmdlcyB0bworICAgTWlzYy9ORVdTIHRoYW4gdG8gdGhpcyBmaWxlLgorCisgICAqIFRoaXMgaXMgbm90IGEgY29tcGxldGUgbGlzdCBvZiBldmVyeSBzaW5nbGUgY2hhbmdlOyBjb21wbGV0ZW5lc3MKKyAgIGlzIHRoZSBwdXJwb3NlIG9mIE1pc2MvTkVXUy4gIFNvbWUgY2hhbmdlcyBJIGNvbnNpZGVyIHRvbyBzbWFsbAorICAgb3IgZXNvdGVyaWMgdG8gaW5jbHVkZS4gIElmIHN1Y2ggYSBjaGFuZ2UgaXMgYWRkZWQgdG8gdGhlIHRleHQsCisgICBJJ2xsIGp1c3QgcmVtb3ZlIGl0LiAgKFRoaXMgaXMgYW5vdGhlciByZWFzb24geW91IHNob3VsZG4ndCBzcGVuZAorICAgdG9vIG11Y2ggdGltZSBvbiB3cml0aW5nIHlvdXIgYWRkaXRpb24uKQorCisgICAqIElmIHlvdSB3YW50IHRvIGRyYXcgeW91ciBuZXcgdGV4dCB0byB0aGUgYXR0ZW50aW9uIG9mIHRoZQorICAgbWFpbnRhaW5lciwgYWRkICdYWFgnIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcmFncmFwaCBvcgorICAgc2VjdGlvbi4KKworICAgKiBJdCdzIE9LIHRvIGp1c3QgYWRkIGEgZnJhZ21lbnRhcnkgbm90ZSBhYm91dCBhIGNoYW5nZS4gIEZvcgorICAgZXhhbXBsZTogIlhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlCisgICBzb2NrZXQgbW9kdWxlLiIgIFRoZSBtYWludGFpbmVyIHdpbGwgcmVzZWFyY2ggdGhlIGNoYW5nZSBhbmQKKyAgIHdyaXRlIHRoZSBuZWNlc3NhcnkgdGV4dC4KKworICAgKiBZb3UgY2FuIGNvbW1lbnQgb3V0IHlvdXIgYWRkaXRpb25zIGlmIHlvdSBsaWtlLCBidXQgaXQncyBub3QKKyAgIG5lY2Vzc2FyeSAoZXNwZWNpYWxseSB3aGVuIGEgZmluYWwgcmVsZWFzZSBpcyBzb21lIG1vbnRocyBhd2F5KS4KKworICAgKiBDcmVkaXQgdGhlIGF1dGhvciBvZiBhIHBhdGNoIG9yIGJ1Z2ZpeC4gICBKdXN0IHRoZSBuYW1lIGlzCisgICBzdWZmaWNpZW50OyB0aGUgZS1tYWlsIGFkZHJlc3MgaXNuJ3QgbmVjZXNzYXJ5LgorCisgICAqIEl0J3MgaGVscGZ1bCB0byBhZGQgdGhlIGJ1Zy9wYXRjaCBudW1iZXIgYXMgYSBjb21tZW50OgorCisgICBYWFggRGVzY3JpYmUgdGhlIHRyYW5zbW9ncmlmeSgpIGZ1bmN0aW9uIGFkZGVkIHRvIHRoZSBzb2NrZXQKKyAgIG1vZHVsZS4KKyAgIChDb250cmlidXRlZCBieSBQLlkuIERldmVsb3BlciBpbiA6aXNzdWU6YDEyMzQ1YC4pCisKKyAgIFRoaXMgc2F2ZXMgdGhlIG1haW50YWluZXIgdGhlIGVmZm9ydCBvZiBnb2luZyB0aHJvdWdoIHRoZSBNZXJjdXJpYWwgbG9nCisgICB3aGVuIHJlc2VhcmNoaW5nIGEgY2hhbmdlLgorCisuLiBub3RlOjoKKworICBQcmVyZWxlYXNlIHVzZXJzIHNob3VsZCBiZSBhd2FyZSB0aGF0IHRoaXMgZG9jdW1lbnQgaXMgY3VycmVudGx5IGluIGRyYWZ0CisgIGZvcm0uIEl0IHdpbGwgYmUgdXBkYXRlZCBzdWJzdGFudGlhbGx5IGFzIFB5dGhvbiAzLjYgbW92ZXMgdG93YXJkcyByZWxlYXNlLAorICBzbyBpdCdzIHdvcnRoIGNoZWNraW5nIGJhY2sgZXZlbiBhZnRlciByZWFkaW5nIGVhcmxpZXIgdmVyc2lvbnMuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjYsIGNvbXBhcmVkIHRvIDMuNS4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0OTRgIC0gUHl0aG9uIDMuNiBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIFRoaXMgc2VjdGlvbiBzaW5nbGVzIG91dCB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyBpbiBQeXRob24gMy42LgorICAgQnJldml0eSBpcyBrZXkuCisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogOnJlZjpgUEVQIDQ5OCA8d2hhdHNuZXczNi1wZXA0OTg+YCwgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscy4KKworKiA6cmVmOmBQRVAgNTE1IDx3aGF0c25ldzM2LXBlcDUxNT5gLCB1bmRlcnNjb3JlcyBpbiBudW1lcmljIGxpdGVyYWxzLgorCisqIDpyZWY6YFBFUCA1MjYgPHdoYXRzbmV3MzYtcGVwNTI2PmAsIHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbnMuCisKKyogOnJlZjpgUEVQIDUyNSA8d2hhdHNuZXczNi1wZXA1MjU+YCwgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMuCisKKyogOnJlZjpgUEVQIDUzMCA8d2hhdHNuZXczNi1wZXA1MzA+YDogYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25zLgorCisKK05ldyBsaWJyYXJ5IG1vZHVsZXM6CisKKyogOm1vZDpgc2VjcmV0c2A6IDpyZWY6YFBFUCA1MDYgLS0gQWRkaW5nIEEgU2VjcmV0cyBNb2R1bGUgVG8gVGhlIFN0YW5kYXJkIExpYnJhcnkgPHdoYXRzbmV3MzYtcGVwNTA2PmAuCisKKworQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBpbXByb3ZlbWVudHM6CisKKyogVGhlIDpyZWY6YGRpY3QgPHR5cGVzbWFwcGluZz5gIHR5cGUgaGFzIGJlZW4gcmVpbXBsZW1lbnRlZCB0byB1c2UKKyAgYSA6cmVmOmBmYXN0ZXIsIG1vcmUgY29tcGFjdCByZXByZXNlbnRhdGlvbiA8d2hhdHNuZXczNi1jb21wYWN0ZGljdD5gCisgIHNpbWlsYXIgdG8gdGhlIGBQeVB5IGRpY3QgaW1wbGVtZW50YXRpb25gXy4gIFRoaXMgcmVzdWx0ZWQgaW4gZGljdGlvbmFyaWVzCisgIHVzaW5nIDIwJSB0byAyNSUgbGVzcyBtZW1vcnkgd2hlbiBjb21wYXJlZCB0byBQeXRob24gMy41LgorCisqIEN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24gaGFzIGJlZW4gc2ltcGxpZmllZCB3aXRoIHRoZQorICA6cmVmOmBuZXcgcHJvdG9jb2wgPHdoYXRzbmV3MzYtcGVwNDg3PmAuCisKKyogVGhlIGNsYXNzIGF0dHJpYnV0ZSBkZWZpbml0aW9uIG9yZGVyIGlzCisgIDpyZWY6YG5vdyBwcmVzZXJ2ZWQgIDx3aGF0c25ldzM2LXBlcDUyMD5gLgorCisqIFRoZSBvcmRlciBvZiBlbGVtZW50cyBpbiBgYCoqa3dhcmdzYGAgbm93CisgIDpyZWY6YGNvcnJlc3BvbmRzIHRvIHRoZSBvcmRlciA8d2hhdHNuZXczNi1wZXA0Njg+YCBpbiB3aGljaCBrZXl3b3JkCisgIGFyZ3VtZW50cyB3ZXJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCisKKyogRFRyYWNlIGFuZCBTeXN0ZW1UYXAgOnJlZjpgcHJvYmluZyBzdXBwb3J0IDx3aGF0c25ldzM2LXRyYWNpbmc+YCBoYXMKKyAgYmVlbiBhZGRlZC4KKworKiBUaGUgbmV3IDpyZWY6YFBZVEhPTk1BTExPQyA8d2hhdHNuZXczNi1weXRob25tYWxsb2M+YCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICBjYW4gbm93IGJlIHVzZWQgdG8gZGVidWcgdGhlIGludGVycHJldGVyIG1lbW9yeSBhbGxvY2F0aW9uIGFuZCBhY2Nlc3MKKyAgZXJyb3JzLgorCisKK1NpZ25pZmljYW50IGltcHJvdmVtZW50cyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeToKKworKiBUaGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIGhhcyByZWNlaXZlZCBuZXcgZmVhdHVyZXMsIHNpZ25pZmljYW50CisgIHVzYWJpbGl0eSBhbmQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLCBhbmQgYSBmYWlyIGFtb3VudCBvZiBidWcgZml4ZXMuCisgIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNiB0aGUgYGBhc3luY2lvYGAgbW9kdWxlIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbAorICBhbmQgaXRzIEFQSSBpcyBjb25zaWRlcmVkIHN0YWJsZS4KKworKiBBIG5ldyA6cmVmOmBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sIDx3aGF0c25ldzM2LXBlcDUxOT5gIGhhcyBiZWVuCisgIGltcGxlbWVudGVkIHRvIHN1cHBvcnQgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisgIEFsbCBzdGFuZGFyZCBsaWJyYXJ5IGZ1bmN0aW9ucyBvcGVyYXRpbmcgb24gcGF0aHMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8KKyAgd29yayB3aXRoIHRoZSBuZXcgcHJvdG9jb2wuCisKKyogVGhlIDptb2Q6YGRhdGV0aW1lYCBtb2R1bGUgaGFzIGdhaW5lZCBzdXBwb3J0IGZvcgorICA6cmVmOmBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uIDx3aGF0c25ldzM2LXBlcDQ5NT5gLgorCisqIFRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSByZWNlaXZlZCBhIG51bWJlciBvZgorICA6cmVmOmBpbXByb3ZlbWVudHMgPHdoYXRzbmV3MzYtdHlwaW5nPmAgYW5kIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbC4KKworKiBUaGUgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZSBoYXMgYmVlbiBzaWduaWZpY2FudGx5IHJld29ya2VkCisgIGFuZCBpcyBub3cgdXNlZCB0byBwcm92aWRlIGJldHRlciBvdXRwdXQgZm9yIDpleGM6YFJlc291cmNlV2FybmluZ2AKKyAgYXMgd2VsbCBhcyBwcm92aWRlIGJldHRlciBkaWFnbm9zdGljcyBmb3IgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3JzLgorICBTZWUgdGhlIDpyZWY6YFBZVEhPTk1BTExPQyBzZWN0aW9uIDx3aGF0c25ldzM2LXB5dGhvbm1hbGxvYz5gIGZvciBtb3JlCisgIGluZm9ybWF0aW9uLgorCisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBUaGUgbmV3IDptb2Q6YHNlY3JldHNgIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorICBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvcgorICBtYW5hZ2luZyBzZWNyZXRzIHN1Y2ggYXMgYWNjb3VudCBhdXRoZW50aWNhdGlvbiwgdG9rZW5zLCBhbmQgc2ltaWxhci4KKworKiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkKKyAgcG9vbCBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IgdGhlCisgIHJhdGlvbmFsZS4KKworKiBUaGUgOm1vZDpgaGFzaGxpYmAgYW5kIDptb2Q6YHNzbGAgbW9kdWxlcyBub3cgc3VwcG9ydCBPcGVuU1NMIDEuMS4wLgorCisqIFRoZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBmZWF0dXJlIHNldCBvZiB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgaGF2ZSBiZWVuCisgIGltcHJvdmVkLgorCisqIFRoZSA6bW9kOmBoYXNobGliYCBtb2R1bGUgcmVjZWl2ZWQgc3VwcG9ydCBmb3IgdGhlIEJMQUtFMiwgU0hBLTMgYW5kIFNIQUtFCisgIGhhc2ggYWxnb3JpdGhtcyBhbmQgdGhlIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uLgorCisKK1dpbmRvd3MgaW1wcm92ZW1lbnRzOgorCisqIDpyZWY6YFBFUCA1MjggPHdoYXRzbmV3MzYtcGVwNTI5PmAgYW5kIDpyZWY6YFBFUCA1MjkgPHdoYXRzbmV3MzYtcGVwNTI5PmAsCisgIFdpbmRvd3MgZmlsZXN5c3RlbSBhbmQgY29uc29sZSBlbmNvZGluZyBjaGFuZ2VkIHRvIFVURi04LgorCisqIFRoZSBgYHB5LmV4ZWBgIGxhdW5jaGVyLCB3aGVuIHVzZWQgaW50ZXJhY3RpdmVseSwgbm8gbG9uZ2VyIHByZWZlcnMKKyAgUHl0aG9uIDIgb3ZlciBQeXRob24gMyB3aGVuIHRoZSB1c2VyIGRvZXNuJ3Qgc3BlY2lmeSBhIHZlcnNpb24gKHZpYQorICBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9yIGEgY29uZmlnIGZpbGUpLiAgSGFuZGxpbmcgb2Ygc2hlYmFuZyBsaW5lcworICByZW1haW5zIHVuY2hhbmdlZCAtICJweXRob24iIHJlZmVycyB0byBQeXRob24gMiBpbiB0aGF0IGNhc2UuCisKKyogYGBweXRob24uZXhlYGAgYW5kIGBgcHl0aG9udy5leGVgYCBoYXZlIGJlZW4gbWFya2VkIGFzIGxvbmctcGF0aCBhd2FyZSwKKyAgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSAyNjAgY2hhcmFjdGVyIHBhdGggbGltaXQgbWF5IG5vIGxvbmdlciBhcHBseS4KKyAgU2VlIDpyZWY6YHJlbW92aW5nIHRoZSBNQVhfUEFUSCBsaW1pdGF0aW9uIDxtYXgtcGF0aD5gIGZvciBkZXRhaWxzLgorCisqIEEgYGAuX3B0aGBgIGZpbGUgY2FuIGJlIGFkZGVkIHRvIGZvcmNlIGlzb2xhdGVkIG1vZGUgYW5kIGZ1bGx5IHNwZWNpZnkKKyAgYWxsIHNlYXJjaCBwYXRocyB0byBhdm9pZCByZWdpc3RyeSBhbmQgZW52aXJvbm1lbnQgbG9va3VwLiBTZWUKKyAgOnJlZjpgdGhlIGRvY3VtZW50YXRpb24gPGZpbmRpbmdfbW9kdWxlcz5gIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisqIEEgYGBweXRob24zNi56aXBgYCBmaWxlIG5vdyB3b3JrcyBhcyBhIGxhbmRtYXJrIHRvIGluZmVyCisgIDplbnZ2YXI6YFBZVEhPTkhPTUVgLiBTZWUgOnJlZjpgdGhlIGRvY3VtZW50YXRpb24gPGZpbmRpbmdfbW9kdWxlcz5gIGZvcgorICBtb3JlIGluZm9ybWF0aW9uLgorCisKKy4uIF9QeVB5IGRpY3QgaW1wbGVtZW50YXRpb246IGh0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sCisKKworTmV3IEZlYXR1cmVzCis9PT09PT09PT09PT0KKworLi4gX3doYXRzbmV3MzYtcGVwNDk4OgorCitQRVAgNDk4OiBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ5OGAgaW50cm9kdWNlcyBhIG5ldyBraW5kIG9mIHN0cmluZyBsaXRlcmFsczogKmYtc3RyaW5ncyosIG9yCis6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YC4KKworRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhcmUgcHJlZml4ZWQgd2l0aCBgYCdmJ2BgIGFuZCBhcmUgc2ltaWxhciB0bwordGhlIGZvcm1hdCBzdHJpbmdzIGFjY2VwdGVkIGJ5IDptZXRoOmBzdHIuZm9ybWF0YC4gIFRoZXkgY29udGFpbiByZXBsYWNlbWVudAorZmllbGRzIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyBhcmUgZXhwcmVzc2lvbnMsCit3aGljaCBhcmUgZXZhbHVhdGVkIGF0IHJ1biB0aW1lLCBhbmQgdGhlbiBmb3JtYXR0ZWQgdXNpbmcgdGhlCis6ZnVuYzpgZm9ybWF0YCBwcm90b2NvbDo6CisKKyAgICA+Pj4gbmFtZSA9ICJGcmVkIgorICAgID4+PiBmIkhlIHNhaWQgaGlzIG5hbWUgaXMge25hbWV9LiIKKyAgICAnSGUgc2FpZCBoaXMgbmFtZSBpcyBGcmVkLicKKyAgICA+Pj4gd2lkdGggPSAxMAorICAgID4+PiBwcmVjaXNpb24gPSA0CisgICAgPj4+IHZhbHVlID0gZGVjaW1hbC5EZWNpbWFsKCIxMi4zNDU2NyIpCisgICAgPj4+IGYicmVzdWx0OiB7dmFsdWU6e3dpZHRofS57cHJlY2lzaW9ufX0iICAjIG5lc3RlZCBmaWVsZHMKKyAgICAncmVzdWx0OiAgICAgIDEyLjM1JworCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDQ5OGAgLS0gTGl0ZXJhbCBTdHJpbmcgSW50ZXJwb2xhdGlvbi4KKyAgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBWLiBTbWl0aC4KKworICAgIDpyZWY6YEZlYXR1cmUgZG9jdW1lbnRhdGlvbiA8Zi1zdHJpbmdzPmAuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTI2OgorCitQRVAgNTI2OiBTeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ4NGAgaW50cm9kdWNlZCB0aGUgc3RhbmRhcmQgZm9yIHR5cGUgYW5ub3RhdGlvbnMgb2YgZnVuY3Rpb24KK3BhcmFtZXRlcnMsIGEuay5hLiB0eXBlIGhpbnRzLiBUaGlzIFBFUCBhZGRzIHN5bnRheCB0byBQeXRob24gZm9yIGFubm90YXRpbmcKK3RoZSB0eXBlcyBvZiB2YXJpYWJsZXMgaW5jbHVkaW5nIGNsYXNzIHZhcmlhYmxlcyBhbmQgaW5zdGFuY2UgdmFyaWFibGVzOjoKKworICAgIHByaW1lczogTGlzdFtpbnRdID0gW10KKworICAgIGNhcHRhaW46IHN0ciAgIyBOb3RlOiBubyBpbml0aWFsIHZhbHVlIQorCisgICAgY2xhc3MgU3RhcnNoaXA6CisgICAgICAgIHN0YXRzOiBEaWN0W3N0ciwgaW50XSA9IHt9CisKK0p1c3QgYXMgZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLCB0aGUgUHl0aG9uIGludGVycHJldGVyIGRvZXMgbm90IGF0dGFjaCBhbnkKK3BhcnRpY3VsYXIgbWVhbmluZyB0byB2YXJpYWJsZSBhbm5vdGF0aW9ucyBhbmQgb25seSBzdG9yZXMgdGhlbSBpbiB0aGUKK2BgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIGEgY2xhc3Mgb3IgbW9kdWxlLgorCitJbiBjb250cmFzdCB0byB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgaW4gc3RhdGljYWxseSB0eXBlZCBsYW5ndWFnZXMsCit0aGUgZ29hbCBvZiBhbm5vdGF0aW9uIHN5bnRheCBpcyB0byBwcm92aWRlIGFuIGVhc3kgd2F5IHRvIHNwZWNpZnkgc3RydWN0dXJlZAordHlwZSBtZXRhZGF0YSBmb3IgdGhpcmQgcGFydHkgdG9vbHMgYW5kIGxpYnJhcmllcyB2aWEgdGhlIGFic3RyYWN0IHN5bnRheCB0cmVlCithbmQgdGhlIGBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI2YCAtLSBTeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb25zLgorICAgICAgUEVQIHdyaXR0ZW4gYnkgUnlhbiBHb256YWxleiwgUGhpbGlwIEhvdXNlLCBJdmFuIExldmtpdnNreWksIExpc2EgUm9hY2gsCisgICAgICBhbmQgR3VpZG8gdmFuIFJvc3N1bS4gSW1wbGVtZW50ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCisgICBUb29scyB0aGF0IHVzZSBvciB3aWxsIHVzZSB0aGUgbmV3IHN5bnRheDoKKyAgIGBteXB5IDxodHRwOi8vZ2l0aHViLmNvbS9weXRob24vbXlweT5gXywKKyAgIGBweXR5cGUgPGh0dHA6Ly9naXRodWIuY29tL2dvb2dsZS9weXR5cGU+YF8sIFB5Q2hhcm0sIGV0Yy4KKworCisuLiBfd2hhdHNuZXczNi1wZXA1MTU6CisKK1BFUCA1MTU6IFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNTE1YCBhZGRzIHRoZSBhYmlsaXR5IHRvIHVzZSB1bmRlcnNjb3JlcyBpbiBudW1lcmljIGxpdGVyYWxzIGZvcgoraW1wcm92ZWQgcmVhZGFiaWxpdHkuICBGb3IgZXhhbXBsZTo6CisKKyAgICA+Pj4gMV8wMDBfMDAwXzAwMF8wMDBfMDAwCisgICAgMTAwMDAwMDAwMDAwMDAwMAorICAgID4+PiAweF9GRl9GRl9GRl9GRgorICAgIDQyOTQ5NjcyOTUKKworU2luZ2xlIHVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGJldHdlZW4gZGlnaXRzIGFuZCBhZnRlciBhbnkgYmFzZQorc3BlY2lmaWVyLiAgTGVhZGluZywgdHJhaWxpbmcsIG9yIG11bHRpcGxlIHVuZGVyc2NvcmVzIGluIGEgcm93IGFyZSBub3QKK2FsbG93ZWQuCisKK1RoZSA6cmVmOmBzdHJpbmcgZm9ybWF0dGluZyA8Zm9ybWF0c3BlYz5gIGxhbmd1YWdlIGFsc28gbm93IGhhcyBzdXBwb3J0Citmb3IgdGhlIGBgJ18nYGAgb3B0aW9uIHRvIHNpZ25hbCB0aGUgdXNlIG9mIGFuIHVuZGVyc2NvcmUgZm9yIGEgdGhvdXNhbmRzCitzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yIGludGVnZXIKK3ByZXNlbnRhdGlvbiB0eXBlIGBgJ2QnYGAuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYGAnYidgYCwKK2BgJ28nYGAsIGBgJ3gnYGAsIGFuZCBgYCdYJ2BgLCB1bmRlcnNjb3JlcyB3aWxsIGJlIGluc2VydGVkIGV2ZXJ5IDQKK2RpZ2l0czo6CisKKyAgICA+Pj4gJ3s6X30nLmZvcm1hdCgxMDAwMDAwKQorICAgICcxXzAwMF8wMDAnCisgICAgPj4+ICd7Ol94fScuZm9ybWF0KDB4RkZGRkZGRkYpCisgICAgJ2ZmZmZfZmZmZicKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUxNWAgLS0gVW5kZXJzY29yZXMgaW4gTnVtZXJpYyBMaXRlcmFscworICAgICAgUEVQIHdyaXR0ZW4gYnkgR2VvcmcgQnJhbmRsIGFuZCBTZXJoaXkgU3RvcmNoYWthLgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUyNToKKworUEVQIDUyNTogQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpwZXA6YDQ5MmAgaW50cm9kdWNlZCBzdXBwb3J0IGZvciBuYXRpdmUgY29yb3V0aW5lcyBhbmQgYGBhc3luY2BgIC8gYGBhd2FpdGBgCitzeW50YXggdG8gUHl0aG9uIDMuNS4gIEEgbm90YWJsZSBsaW1pdGF0aW9uIG9mIHRoZSBQeXRob24gMy41IGltcGxlbWVudGF0aW9uCitpcyB0aGF0IGl0IHdhcyBub3QgcG9zc2libGUgdG8gdXNlIGBgYXdhaXRgYCBhbmQgYGB5aWVsZGBgIGluIHRoZSBzYW1lCitmdW5jdGlvbiBib2R5LiAgSW4gUHl0aG9uIDMuNiB0aGlzIHJlc3RyaWN0aW9uIGhhcyBiZWVuIGxpZnRlZCwgbWFraW5nIGl0Citwb3NzaWJsZSB0byBkZWZpbmUgKmFzeW5jaHJvbm91cyBnZW5lcmF0b3JzKjo6CisKKyAgICBhc3luYyBkZWYgdGlja2VyKGRlbGF5LCB0byk6CisgICAgICAgICIiIllpZWxkIG51bWJlcnMgZnJvbSAwIHRvICp0byogZXZlcnkgKmRlbGF5KiBzZWNvbmRzLiIiIgorICAgICAgICBmb3IgaSBpbiByYW5nZSh0byk6CisgICAgICAgICAgICB5aWVsZCBpCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKGRlbGF5KQorCitUaGUgbmV3IHN5bnRheCBhbGxvd3MgZm9yIGZhc3RlciBhbmQgbW9yZSBjb25jaXNlIGNvZGUuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MjVgIC0tIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgWXVyeSBTZWxpdmFub3YuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTMwOgorCitQRVAgNTMwOiBBc3luY2hyb25vdXMgQ29tcHJlaGVuc2lvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA1MzBgIGFkZHMgc3VwcG9ydCBmb3IgdXNpbmcgYGBhc3luYyBmb3JgYCBpbiBsaXN0LCBzZXQsIGRpY3QKK2NvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnM6OgorCisgICAgcmVzdWx0ID0gW2kgYXN5bmMgZm9yIGkgaW4gYWl0ZXIoKSBpZiBpICUgMl0KKworQWRkaXRpb25hbGx5LCBgYGF3YWl0YGAgZXhwcmVzc2lvbnMgYXJlIHN1cHBvcnRlZCBpbiBhbGwga2luZHMKK29mIGNvbXByZWhlbnNpb25zOjoKKworICAgIHJlc3VsdCA9IFthd2FpdCBmdW4oKSBmb3IgZnVuIGluIGZ1bmNzIGlmIGF3YWl0IGNvbmRpdGlvbigpXQorCisuLiBzZWVhbHNvOjoKKworIDpwZXA6YDUzMGAgLS0gQXN5bmNocm9ub3VzIENvbXByZWhlbnNpb25zCisgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFl1cnkgU2VsaXZhbm92LgorCisKKy4uIF93aGF0c25ldzM2LXBlcDQ4NzoKKworUEVQIDQ4NzogU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIGN1c3RvbWl6ZSBzdWJjbGFzcyBjcmVhdGlvbiB3aXRob3V0IHVzaW5nIGEgbWV0YWNsYXNzLgorVGhlIG5ldyBgYF9faW5pdF9zdWJjbGFzc19fYGAgY2xhc3NtZXRob2Qgd2lsbCBiZSBjYWxsZWQgb24gdGhlIGJhc2UgY2xhc3MKK3doZW5ldmVyIGEgbmV3IHN1YmNsYXNzIGlzIGNyZWF0ZWQ6OgorCisgICAgY2xhc3MgUGx1Z2luQmFzZToKKyAgICAgICAgc3ViY2xhc3NlcyA9IFtdCisKKyAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgIGNscy5zdWJjbGFzc2VzLmFwcGVuZChjbHMpCisKKyAgICBjbGFzcyBQbHVnaW4xKFBsdWdpbkJhc2UpOgorICAgICAgICBwYXNzCisKKyAgICBjbGFzcyBQbHVnaW4yKFBsdWdpbkJhc2UpOgorICAgICAgICBwYXNzCisKKy4uIHNlZWFsc286OgorCisgOnBlcDpgNDg3YCAtLSBTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24KKyAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgTWFydGluIFRlaWNobWFubi4KKworIDpyZWY6YEZlYXR1cmUgZG9jdW1lbnRhdGlvbiA8Y2xhc3MtY3VzdG9taXphdGlvbj5gCisKKworLi4gX3doYXRzbmV3MzYtcGVwNDg3LWRlc2NyaXB0b3JzOgorCitQRVAgNDg3OiBEZXNjcmlwdG9yIFByb3RvY29sIEVuaGFuY2VtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOnBlcDpgNDg3YCBleHRlbmRzIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sIGhhcyB0byBpbmNsdWRlIHRoZSBuZXcgb3B0aW9uYWwKKzptZXRoOmB+b2JqZWN0Ll9fc2V0X25hbWVfX2AgbWV0aG9kLiAgV2hlbmV2ZXIgYSBuZXcgY2xhc3MgaXMgZGVmaW5lZCwgdGhlIG5ldworbWV0aG9kIHdpbGwgYmUgY2FsbGVkIG9uIGFsbCBkZXNjcmlwdG9ycyBpbmNsdWRlZCBpbiB0aGUgZGVmaW5pdGlvbiwgcHJvdmlkaW5nCit0aGVtIHdpdGggYSByZWZlcmVuY2UgdG8gdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYW5kIHRoZSBuYW1lIGdpdmVuIHRvIHRoZQorZGVzY3JpcHRvciB3aXRoaW4gdGhlIGNsYXNzIG5hbWVzcGFjZS4gIEluIG90aGVyIHdvcmRzLCBpbnN0YW5jZXMgb2YKK2Rlc2NyaXB0b3JzIGNhbiBub3cga25vdyB0aGUgYXR0cmlidXRlIG5hbWUgb2YgdGhlIGRlc2NyaXB0b3IgaW4gdGhlCitvd25lciBjbGFzczo6CisKKyAgICBjbGFzcyBJbnRGaWVsZDoKKyAgICAgICAgZGVmIF9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKToKKyAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZS5fX2RpY3RfX1tzZWxmLm5hbWVdCisKKyAgICAgICAgZGVmIF9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidleHBlY3RpbmcgaW50ZWdlciBpbiB7c2VsZi5uYW1lfScpCisgICAgICAgICAgICBpbnN0YW5jZS5fX2RpY3RfX1tzZWxmLm5hbWVdID0gdmFsdWUKKworICAgICAgICAjIHRoaXMgaXMgdGhlIG5ldyBpbml0aWFsaXplcjoKKyAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICBjbGFzcyBNb2RlbDoKKyAgICAgICAgaW50X2ZpZWxkID0gSW50RmllbGQoKQorCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDg3YCAtLSBTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb24KKyAgICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IE1hcnRpbiBUZWljaG1hbm4uCisKKyAgICA6cmVmOmBGZWF0dXJlIGRvY3VtZW50YXRpb24gPGRlc2NyaXB0b3JzPmAKKworCisuLiBfd2hhdHNuZXczNi1wZXA1MTk6CisKK1BFUCA1MTk6IEFkZGluZyBhIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2wKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlsZSBzeXN0ZW0gcGF0aHMgaGF2ZSBoaXN0b3JpY2FsbHkgYmVlbiByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YHN0cmAKK29yIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMuIFRoaXMgaGFzIGxlZCB0byBwZW9wbGUgd2hvIHdyaXRlIGNvZGUgd2hpY2gKK29wZXJhdGUgb24gZmlsZSBzeXN0ZW0gcGF0aHMgdG8gYXNzdW1lIHRoYXQgc3VjaCBvYmplY3RzIGFyZSBvbmx5IG9uZQorb2YgdGhvc2UgdHdvIHR5cGVzIChhbiA6Y2xhc3M6YGludGAgcmVwcmVzZW50aW5nIGEgZmlsZSBkZXNjcmlwdG9yCitkb2VzIG5vdCBjb3VudCBhcyB0aGF0IGlzIG5vdCBhIGZpbGUgcGF0aCkuIFVuZm9ydHVuYXRlbHkgdGhhdAorYXNzdW1wdGlvbiBwcmV2ZW50cyBhbHRlcm5hdGl2ZSBvYmplY3QgcmVwcmVzZW50YXRpb25zIG9mIGZpbGUgc3lzdGVtCitwYXRocyBsaWtlIDptb2Q6YHBhdGhsaWJgIGZyb20gd29ya2luZyB3aXRoIHByZS1leGlzdGluZyBjb2RlLAoraW5jbHVkaW5nIFB5dGhvbidzIHN0YW5kYXJkIGxpYnJhcnkuCisKK1RvIGZpeCB0aGlzIHNpdHVhdGlvbiwgYSBuZXcgaW50ZXJmYWNlIHJlcHJlc2VudGVkIGJ5Cis6Y2xhc3M6YG9zLlBhdGhMaWtlYCBoYXMgYmVlbiBkZWZpbmVkLiBCeSBpbXBsZW1lbnRpbmcgdGhlCis6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIG1ldGhvZCwgYW4gb2JqZWN0IHNpZ25hbHMgdGhhdCBpdAorcmVwcmVzZW50cyBhIHBhdGguIEFuIG9iamVjdCBjYW4gdGhlbiBwcm92aWRlIGEgbG93LWxldmVsCityZXByZXNlbnRhdGlvbiBvZiBhIGZpbGUgc3lzdGVtIHBhdGggYXMgYSA6Y2xhc3M6YHN0cmAgb3IKKzpjbGFzczpgYnl0ZXNgIG9iamVjdC4gVGhpcyBtZWFucyBhbiBvYmplY3QgaXMgY29uc2lkZXJlZAorOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gIGlmIGl0IGltcGxlbWVudHMKKzpjbGFzczpgb3MuUGF0aExpa2VgIG9yIGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdAord2hpY2ggcmVwcmVzZW50cyBhIGZpbGUgc3lzdGVtIHBhdGguIENvZGUgY2FuIHVzZSA6ZnVuYzpgb3MuZnNwYXRoYCwKKzpmdW5jOmBvcy5mc2RlY29kZWAsIG9yIDpmdW5jOmBvcy5mc2VuY29kZWAgdG8gZXhwbGljaXRseSBnZXQgYQorOmNsYXNzOmBzdHJgIGFuZC9vciA6Y2xhc3M6YGJ5dGVzYCByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGgtbGlrZQorb2JqZWN0LgorCitUaGUgYnVpbHQtaW4gOmZ1bmM6YG9wZW5gIGZ1bmN0aW9uIGhhcyBiZWVuIHVwZGF0ZWQgdG8gYWNjZXB0Cis6Y2xhc3M6YG9zLlBhdGhMaWtlYCBvYmplY3RzIGFzIGhhdmUgYWxsIHJlbGV2YW50IGZ1bmN0aW9ucyBpbiB0aGUKKzptb2Q6YG9zYCBhbmQgOm1vZDpgb3MucGF0aGAgbW9kdWxlcywgYXMgd2VsbCBhcyBtb3N0IGZ1bmN0aW9ucyBhbmQKK2NsYXNzZXMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuICBUaGUgOmNsYXNzOmBvcy5EaXJFbnRyeWAgY2xhc3MKK2FuZCByZWxldmFudCBjbGFzc2VzIGluIDptb2Q6YHBhdGhsaWJgIGhhdmUgYWxzbyBiZWVuIHVwZGF0ZWQgdG8KK2ltcGxlbWVudCA6Y2xhc3M6YG9zLlBhdGhMaWtlYC4KKworVGhlIGhvcGUgaW4gaXMgdGhhdCB1cGRhdGluZyB0aGUgZnVuZGFtZW50YWwgZnVuY3Rpb25zIGZvciBvcGVyYXRpbmcKK29uIGZpbGUgc3lzdGVtIHBhdGhzIHdpbGwgbGVhZCB0byB0aGlyZC1wYXJ0eSBjb2RlIHRvIGltcGxpY2l0bHkKK3N1cHBvcnQgYWxsIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gIHdpdGhvdXQgYW55Citjb2RlIGNoYW5nZXMgb3IgYXQgbGVhc3QgdmVyeSBtaW5pbWFsIG9uZXMgKGUuZy4gY2FsbGluZworOmZ1bmM6YG9zLmZzcGF0aGAgYXQgdGhlIGJlZ2lubmluZyBvZiBjb2RlIGJlZm9yZSBvcGVyYXRpbmcgb24gYQorcGF0aC1saWtlIG9iamVjdCkuCisKK0hlcmUgYXJlIHNvbWUgZXhhbXBsZXMgb2YgaG93IHRoZSBuZXcgaW50ZXJmYWNlIGFsbG93cyBmb3IKKzpjbGFzczpgcGF0aGxpYi5QYXRoYCB0byBiZSB1c2VkIG1vcmUgZWFzaWx5IGFuZCB0cmFuc3BhcmVudGx5IHdpdGgKK3ByZS1leGlzdGluZyBjb2RlOjoKKworICA+Pj4gaW1wb3J0IHBhdGhsaWIKKyAgPj4+IHdpdGggb3BlbihwYXRobGliLlBhdGgoIlJFQURNRSIpKSBhcyBmOgorICAuLi4gICAgIGNvbnRlbnRzID0gZi5yZWFkKCkKKyAgLi4uCisgID4+PiBpbXBvcnQgb3MucGF0aAorICA+Pj4gb3MucGF0aC5zcGxpdGV4dChwYXRobGliLlBhdGgoInNvbWVfZmlsZS50eHQiKSkKKyAgKCdzb21lX2ZpbGUnLCAnLnR4dCcpCisgID4+PiBvcy5wYXRoLmpvaW4oIi9hL2IiLCBwYXRobGliLlBhdGgoImMiKSkKKyAgJy9hL2IvYycKKyAgPj4+IGltcG9ydCBvcworICA+Pj4gb3MuZnNwYXRoKHBhdGhsaWIuUGF0aCgic29tZV9maWxlLnR4dCIpKQorICAnc29tZV9maWxlLnR4dCcKKworKEltcGxlbWVudGVkIGJ5IEJyZXR0IENhbm5vbiwgRXRoYW4gRnVybWFuLCBEdXN0eSBQaGlsbGlwcywgYW5kIEplbGxlIFppamxzdHJhLikKKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA1MTlgIC0tIEFkZGluZyBhIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2wKKyAgICAgICBQRVAgd3JpdHRlbiBieSBCcmV0dCBDYW5ub24gYW5kIEtvb3MgWmV2ZW5ob3Zlbi4KKworCisuLiBfd2hhdHNuZXczNi1wZXA0OTU6CisKK1BFUCA0OTU6IExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gbW9zdCB3b3JsZCBsb2NhdGlvbnMsIHRoZXJlIGhhdmUgYmVlbiBhbmQgd2lsbCBiZSB0aW1lcyB3aGVuIGxvY2FsIGNsb2NrcworYXJlIG1vdmVkIGJhY2suICBJbiB0aG9zZSB0aW1lcywgaW50ZXJ2YWxzIGFyZSBpbnRyb2R1Y2VkIGluIHdoaWNoIGxvY2FsCitjbG9ja3Mgc2hvdyB0aGUgc2FtZSB0aW1lIHR3aWNlIGluIHRoZSBzYW1lIGRheS4gSW4gdGhlc2Ugc2l0dWF0aW9ucywgdGhlCitpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgb24gYSBsb2NhbCBjbG9jayAob3Igc3RvcmVkIGluIGEgUHl0aG9uIGRhdGV0aW1lCitpbnN0YW5jZSkgaXMgaW5zdWZmaWNpZW50IHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBtb21lbnQgaW4gdGltZS4KKworOnBlcDpgNDk1YCBhZGRzIHRoZSBuZXcgKmZvbGQqIGF0dHJpYnV0ZSB0byBpbnN0YW5jZXMgb2YKKzpjbGFzczpgZGF0ZXRpbWUuZGF0ZXRpbWVgIGFuZCA6Y2xhc3M6YGRhdGV0aW1lLnRpbWVgIGNsYXNzZXMgdG8gZGlmZmVyZW50aWF0ZQorYmV0d2VlbiB0d28gbW9tZW50cyBpbiB0aW1lIGZvciB3aGljaCBsb2NhbCB0aW1lcyBhcmUgdGhlIHNhbWU6OgorCisgICAgPj4+IHUwID0gZGF0ZXRpbWUoMjAxNiwgMTEsIDYsIDQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgdSA9IHUwICsgaSpIT1VSCisgICAgLi4uICAgICB0ID0gdS5hc3RpbWV6b25lKEVhc3Rlcm4pCisgICAgLi4uICAgICBwcmludCh1LnRpbWUoKSwgJ1VUQyA9JywgdC50aW1lKCksIHQudHpuYW1lKCksIHQuZm9sZCkKKyAgICAuLi4KKyAgICAwNDowMDowMCBVVEMgPSAwMDowMDowMCBFRFQgMAorICAgIDA1OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVEVCAwCisgICAgMDY6MDA6MDAgVVRDID0gMDE6MDA6MDAgRVNUIDEKKyAgICAwNzowMDowMCBVVEMgPSAwMjowMDowMCBFU1QgMAorCitUaGUgdmFsdWVzIG9mIHRoZSA6YXR0cjpgZm9sZCA8ZGF0ZXRpbWUuZGF0ZXRpbWUuZm9sZD5gIGF0dHJpYnV0ZSBoYXZlIHRoZQordmFsdWUgYGAwYGAgZm9yIGFsbCBpbnN0YW5jZXMgZXhjZXB0IHRob3NlIHRoYXQgcmVwcmVzZW50IHRoZSBzZWNvbmQKKyhjaHJvbm9sb2dpY2FsbHkpIG1vbWVudCBpbiB0aW1lIGluIGFuIGFtYmlndW91cyBjYXNlLgorCisuLiBzZWVhbHNvOjoKKworICA6cGVwOmA0OTVgIC0tIExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24KKyAgICAgUEVQIHdyaXR0ZW4gYnkgQWxleGFuZGVyIEJlbG9wb2xza3kgYW5kIFRpbSBQZXRlcnMsIGltcGxlbWVudGF0aW9uCisgICAgIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUyOToKKworUEVQIDUyOTogQ2hhbmdlIFdpbmRvd3MgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBVVEYtOAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZXByZXNlbnRpbmcgZmlsZXN5c3RlbSBwYXRocyBpcyBiZXN0IHBlcmZvcm1lZCB3aXRoIHN0ciAoVW5pY29kZSkgcmF0aGVyIHRoYW4KK2J5dGVzLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBzaXR1YXRpb25zIHdoZXJlIHVzaW5nIGJ5dGVzIGlzIHN1ZmZpY2llbnQgYW5kCitjb3JyZWN0LgorCitQcmlvciB0byBQeXRob24gMy42LCBkYXRhIGxvc3MgY291bGQgcmVzdWx0IHdoZW4gdXNpbmcgYnl0ZXMgcGF0aHMgb24gV2luZG93cy4KK1dpdGggdGhpcyBjaGFuZ2UsIHVzaW5nIGJ5dGVzIHRvIHJlcHJlc2VudCBwYXRocyBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MsCitwcm92aWRlZCB0aG9zZSBieXRlcyBhcmUgZW5jb2RlZCB3aXRoIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieQorOmZ1bmM6YHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKWAsIHdoaWNoIG5vdyBkZWZhdWx0cyB0byBgYCd1dGYtOCdgYC4KKworQXBwbGljYXRpb25zIHRoYXQgZG8gbm90IHVzZSBzdHIgdG8gcmVwcmVzZW50IHBhdGhzIHNob3VsZCB1c2UKKzpmdW5jOmBvcy5mc2VuY29kZSgpYCBhbmQgOmZ1bmM6YG9zLmZzZGVjb2RlKClgIHRvIGVuc3VyZSB0aGVpciBieXRlcyBhcmUKK2NvcnJlY3RseSBlbmNvZGVkLiBUbyByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciwgc2V0Cis6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElOR2Agb3IgY2FsbAorOmZ1bmM6YHN5cy5fZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdgLgorCitTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgZGlzY3Vzc2lvbiBvZiBjb2RlIG1vZGlmaWNhdGlvbnMgdGhhdAorbWF5IGJlIHJlcXVpcmVkLgorCisKKy4uIF93aGF0c25ldzM2LXBlcDUyODoKKworUEVQIDUyODogQ2hhbmdlIFdpbmRvd3MgY29uc29sZSBlbmNvZGluZyB0byBVVEYtOAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGVmYXVsdCBjb25zb2xlIG9uIFdpbmRvd3Mgd2lsbCBub3cgYWNjZXB0IGFsbCBVbmljb2RlIGNoYXJhY3RlcnMgYW5kCitwcm92aWRlIGNvcnJlY3RseSByZWFkIHN0ciBvYmplY3RzIHRvIFB5dGhvbiBjb2RlLiBgYHN5cy5zdGRpbmBgLAorYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIG5vdyBkZWZhdWx0IHRvIHV0Zi04IGVuY29kaW5nLgorCitUaGlzIGNoYW5nZSBvbmx5IGFwcGxpZXMgd2hlbiB1c2luZyBhbiBpbnRlcmFjdGl2ZSBjb25zb2xlLCBhbmQgbm90IHdoZW4KK3JlZGlyZWN0aW5nIGZpbGVzIG9yIHBpcGVzLiBUbyByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciBmb3IgaW50ZXJhY3RpdmUKK2NvbnNvbGUgdXNlLCBzZXQgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkdgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI4YCAtLSBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04CisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgU3RldmUgRG93ZXIuCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTIwOgorCitQRVAgNTIwOiBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F0dHJpYnV0ZXMgaW4gYSBjbGFzcyBkZWZpbml0aW9uIGJvZHkgaGF2ZSBhIG5hdHVyYWwgb3JkZXJpbmc6IHRoZSBzYW1lCitvcmRlciBpbiB3aGljaCB0aGUgbmFtZXMgYXBwZWFyIGluIHRoZSBzb3VyY2UuICBUaGlzIG9yZGVyIGlzIG5vdworcHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3MncyA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgYXR0cmlidXRlLgorCitBbHNvLCB0aGUgZWZmZWN0aXZlIGRlZmF1bHQgY2xhc3MgKmV4ZWN1dGlvbiogbmFtZXNwYWNlIChyZXR1cm5lZCBmcm9tCis6cmVmOmB0eXBlLl9fcHJlcGFyZV9fKCkgPHByZXBhcmU+YCkgaXMgbm93IGFuIGluc2VydGlvbi1vcmRlci1wcmVzZXJ2aW5nCittYXBwaW5nLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTIwYCAtLSBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisKKy4uIF93aGF0c25ldzM2LXBlcDQ2ODoKKworUEVQIDQ2ODogUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYGAqKmt3YXJnc2BgIGluIGEgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIG5vdyBndWFyYW50ZWVkIHRvIGJlIGFuCitpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDY4YCAtLSBQcmVzZXJ2aW5nIEtleXdvcmQgQXJndW1lbnQgT3JkZXIKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBFcmljIFNub3cuCisKKworLi4gX3doYXRzbmV3MzYtY29tcGFjdGRpY3Q6CisKK05ldyA6cmVmOmBkaWN0IDx0eXBlc21hcHBpbmc+YCBpbXBsZW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6cmVmOmBkaWN0IDx0eXBlc21hcHBpbmc+YCB0eXBlIG5vdyB1c2VzIGEgImNvbXBhY3QiIHJlcHJlc2VudGF0aW9uCitgcGlvbmVlcmVkIGJ5IFB5UHkgPGh0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sPmBfLgorVGhlIG1lbW9yeSB1c2FnZSBvZiB0aGUgbmV3IDpmdW5jOmBkaWN0YCBpcyBiZXR3ZWVuIDIwJSBhbmQgMjUlIHNtYWxsZXIKK2NvbXBhcmVkIHRvIFB5dGhvbiAzLjUuCisKK1RoZSBvcmRlci1wcmVzZXJ2aW5nIGFzcGVjdCBvZiB0aGlzIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBjb25zaWRlcmVkIGFuCitpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIHVwb24gKHRoaXMgbWF5IGNoYW5nZSBpbgordGhlIGZ1dHVyZSwgYnV0IGl0IGlzIGRlc2lyZWQgdG8gaGF2ZSB0aGlzIG5ldyBkaWN0IGltcGxlbWVudGF0aW9uIGluCit0aGUgbGFuZ3VhZ2UgZm9yIGEgZmV3IHJlbGVhc2VzIGJlZm9yZSBjaGFuZ2luZyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0byBtYW5kYXRlCitvcmRlci1wcmVzZXJ2aW5nIHNlbWFudGljcyBmb3IgYWxsIGN1cnJlbnQgYW5kIGZ1dHVyZSBQeXRob24KK2ltcGxlbWVudGF0aW9uczsgdGhpcyBhbHNvIGhlbHBzIHByZXNlcnZlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5Cit3aXRoIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBsYW5ndWFnZSB3aGVyZSByYW5kb20gaXRlcmF0aW9uIG9yZGVyIGlzCitzdGlsbCBpbiBlZmZlY3QsIGUuZy4gUHl0aG9uIDMuNSkuCisKKyhDb250cmlidXRlZCBieSBJTkFEQSBOYW9raSBpbiA6aXNzdWU6YDI3MzUwYC4gSWRlYQorYG9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyCis8aHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAxMi1EZWNlbWJlci8xMjMwMjguaHRtbD5gXy4pCisKKworLi4gX3doYXRzbmV3MzYtcGVwNTIzOgorCitQRVAgNTIzOiBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doaWxlIFB5dGhvbiBwcm92aWRlcyBleHRlbnNpdmUgc3VwcG9ydCB0byBjdXN0b21pemUgaG93IGNvZGUKK2V4ZWN1dGVzLCBvbmUgcGxhY2UgaXQgaGFzIG5vdCBkb25lIHNvIGlzIGluIHRoZSBldmFsdWF0aW9uIG9mIGZyYW1lCitvYmplY3RzLiAgSWYgeW91IHdhbnRlZCBzb21lIHdheSB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBpbgorUHl0aG9uIHRoZXJlIHJlYWxseSB3YXNuJ3QgYW55IHdheSB3aXRob3V0IGRpcmVjdGx5IG1hbmlwdWxhdGluZworZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGRlZmluZWQgZnVuY3Rpb25zLgorCis6cGVwOmA1MjNgIGNoYW5nZXMgdGhpcyBieSBwcm92aWRpbmcgYW4gQVBJIHRvIG1ha2UgZnJhbWUKK2V2YWx1YXRpb24gcGx1Z2dhYmxlIGF0IHRoZSBDIGxldmVsLiBUaGlzIHdpbGwgYWxsb3cgZm9yIHRvb2xzIHN1Y2gKK2FzIGRlYnVnZ2VycyBhbmQgSklUcyB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBiZWZvcmUgdGhlCitleGVjdXRpb24gb2YgUHl0aG9uIGNvZGUgYmVnaW5zLiBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiBhbHRlcm5hdGl2ZQorZXZhbHVhdGlvbiBpbXBsZW1lbnRhdGlvbnMgZm9yIFB5dGhvbiBjb2RlLCB0cmFja2luZyBmcmFtZQorZXZhbHVhdGlvbiwgZXRjLgorCitUaGlzIEFQSSBpcyBub3QgcGFydCBvZiB0aGUgbGltaXRlZCBDIEFQSSBhbmQgaXMgbWFya2VkIGFzIHByaXZhdGUgdG8KK3NpZ25hbCB0aGF0IHVzYWdlIG9mIHRoaXMgQVBJIGlzIGV4cGVjdGVkIHRvIGJlIGxpbWl0ZWQgYW5kIG9ubHkKK2FwcGxpY2FibGUgdG8gdmVyeSBzZWxlY3QsIGxvdy1sZXZlbCB1c2UtY2FzZXMuIFNlbWFudGljcyBvZiB0aGUKK0FQSSB3aWxsIGNoYW5nZSB3aXRoIFB5dGhvbiBhcyBuZWNlc3NhcnkuCisKKy4uIHNlZWFsc286OgorCisgIDpwZXA6YDUyM2AgLS0gQWRkaW5nIGEgZnJhbWUgZXZhbHVhdGlvbiBBUEkgdG8gQ1B5dGhvbgorICAgICBQRVAgd3JpdHRlbiBieSBCcmV0dCBDYW5ub24gYW5kIERpbm8gVmllaGxhbmQuCisKKworLi4gX3doYXRzbmV3MzYtcHl0aG9ubWFsbG9jOgorCitQWVRIT05NQUxMT0MgZW52aXJvbm1lbnQgdmFyaWFibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbmV3IDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgYWxsb3dzIHNldHRpbmcgdGhlIFB5dGhvbgorbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3MuCisKK0l0IGlzIG5vdyBwb3NzaWJsZSB0byBpbnN0YWxsIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBvbiBQeXRob24KK2NvbXBpbGVkIGluIHJlbGVhc2UgbW9kZSB1c2luZyBgYFBZVEhPTk1BTExPQz1kZWJ1Z2BgLiBFZmZlY3RzIG9mIGRlYnVnIGhvb2tzOgorCisqIE5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweENCYGAKKyogRnJlZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgCisqIERldGVjdCB2aW9sYXRpb25zIG9mIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIEFQSS4gRm9yIGV4YW1wbGUsCisgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIG1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYnkKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYC4KKyogRGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyogRGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorKiBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbiBhbGxvY2F0b3IKKyAgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDogOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kCisgIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDogOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkLgorCitDaGVja2luZyBpZiB0aGUgR0lMIGlzIGhlbGQgaXMgYWxzbyBhIG5ldyBmZWF0dXJlIG9mIFB5dGhvbiAzLjYuCisKK1NlZSB0aGUgOmM6ZnVuYzpgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzYCBmdW5jdGlvbiBmb3IgZGVidWcgaG9va3Mgb24gUHl0aG9uCittZW1vcnkgYWxsb2NhdG9ycy4KKworSXQgaXMgbm93IGFsc28gcG9zc2libGUgdG8gZm9yY2UgdGhlIHVzYWdlIG9mIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGFsbG9jYXRvciBvZgordGhlIEMgbGlicmFyeSBmb3IgYWxsIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgdXNpbmcgYGBQWVRIT05NQUxMT0M9bWFsbG9jYGAuCitJdCBoZWxwcyB0byB1c2UgZXh0ZXJuYWwgbWVtb3J5IGRlYnVnZ2VycyBsaWtlIFZhbGdyaW5kIG9uIGEgUHl0aG9uIGNvbXBpbGVkIGluCityZWxlYXNlIG1vZGUuCisKK09uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyB1c2UgdGhlCis6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcworYWxsb2NhdGVkLgorCitFeGFtcGxlIG9mIGZhdGFsIGVycm9yIG9uIGJ1ZmZlciBvdmVyZmxvdyB1c2luZworYGBweXRob24zLjYgLVggdHJhY2VtYWxsb2M9NWBgIChzdG9yZSA1IGZyYW1lcyBpbiB0cmFjZXMpOjoKKworICAgIERlYnVnIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzIHA9MHg3ZmJjZDQxNjY2Zjg6IEFQSSAnbycKKyAgICAgICAgNCBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZAorICAgICAgICBUaGUgNyBwYWQgYnl0ZXMgYXQgcC03IGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC4KKyAgICAgICAgVGhlIDggcGFkIGJ5dGVzIGF0IHRhaWw9MHg3ZmJjZDQxNjY2ZmMgYXJlIG5vdCBhbGwgRk9SQklEREVOQllURSAoMHhmYik6CisgICAgICAgICAgICBhdCB0YWlsKzA6IDB4MDIgKioqIE9VQ0gKKyAgICAgICAgICAgIGF0IHRhaWwrMTogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCsyOiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzM6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNDogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs1OiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzY6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNzogMHhmYgorICAgICAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjMTIzMzMyOSB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy4KKyAgICAgICAgRGF0YSBhdCBwOiAxYSAyYiAzMCAwMAorCisgICAgTWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJ0ZXN0L3Rlc3RfYnl0ZXMucHkiLCBsaW5lIDMyMworICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjAwCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2NDgKKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIKKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSA4NAorCisgICAgRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgdHJhaWxpbmcgcGFkIGJ5dGUKKworICAgIEN1cnJlbnQgdGhyZWFkIDB4MDAwMDdmYmNkYmQzMjcwMCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICBGaWxlICJ0ZXN0L3Rlc3RfYnl0ZXMucHkiLCBsaW5lIDMyMyBpbiB0ZXN0X2hleAorICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjAwIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3QvY2FzZS5weSIsIGxpbmUgNjQ4IGluIF9fY2FsbF9fCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgMTIyIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0IGluIF9fY2FsbF9fCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgMTIyIGluIHJ1bgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0IGluIF9fY2FsbF9fCisgICAgICAuLi4KKworKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjY1MTZgIGFuZCA6aXNzdWU6YDI2NTY0YC4pCisKKworLi4gX3doYXRzbmV3MzYtdHJhY2luZzoKKworRFRyYWNlIGFuZCBTeXN0ZW1UYXAgcHJvYmluZyBzdXBwb3J0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUHl0aG9uIGNhbiBub3cgYmUgYnVpbHQgYGAtLXdpdGgtZHRyYWNlYGAgd2hpY2ggZW5hYmxlcyBzdGF0aWMgbWFya2VycworZm9yIHRoZSBmb2xsb3dpbmcgZXZlbnRzIGluIHRoZSBpbnRlcnByZXRlcjoKKworKiBmdW5jdGlvbiBjYWxsL3JldHVybgorCisqIGdhcmJhZ2UgY29sbGVjdGlvbiBzdGFydGVkL2ZpbmlzaGVkCisKKyogbGluZSBvZiBjb2RlIGV4ZWN1dGVkLgorCitUaGlzIGNhbiBiZSB1c2VkIHRvIGluc3RydW1lbnQgcnVubmluZyBpbnRlcnByZXRlcnMgaW4gcHJvZHVjdGlvbiwKK3dpdGhvdXQgdGhlIG5lZWQgdG8gcmVjb21waWxlIHNwZWNpZmljIGRlYnVnIGJ1aWxkcyBvciBwcm92aWRpbmcKK2FwcGxpY2F0aW9uLXNwZWNpZmljIHByb2ZpbGluZy9kZWJ1Z2dpbmcgY29kZS4KKworTW9yZSBkZXRhaWxzIGluIDpyZWY6YGluc3RydW1lbnRhdGlvbmAuCisKK1RoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIHRlc3RlZCBvbiBMaW51eCBhbmQgbWFjT1MuICBBZGRpdGlvbmFsCittYXJrZXJzIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgorCisoQ29udHJpYnV0ZWQgYnkgxYF1a2FzeiBMYW5nYSBpbiA6aXNzdWU6YDIxNTkwYCwgYmFzZWQgb24gcGF0Y2hlcyBieQorSmVzw7pzIENlYSBBdmnDs24sIERhdmlkIE1hbGNvbG0sIGFuZCBOaWtoaWwgQmVuZXNjaC4pCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogQSBgYGdsb2JhbGBgIG9yIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3cgdGV4dHVhbGx5IGFwcGVhcgorICBiZWZvcmUgdGhlIGZpcnN0IHVzZSBvZiB0aGUgYWZmZWN0ZWQgbmFtZSBpbiB0aGUgc2FtZSBzY29wZS4KKyAgUHJldmlvdXNseSB0aGlzIHdhcyBhIGBgU3ludGF4V2FybmluZ2BgLgorCisqIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBzZXQgYSA6cmVmOmBzcGVjaWFsIG1ldGhvZCA8c3BlY2lhbG5hbWVzPmAgdG8KKyAgYGBOb25lYGAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4KKyAgRm9yIGV4YW1wbGUsIGlmIGEgY2xhc3Mgc2V0cyA6bWV0aDpgX19pdGVyX19gIHRvIGBgTm9uZWBgLCB0aGUgY2xhc3MKKyAgaXMgbm90IGl0ZXJhYmxlLgorICAoQ29udHJpYnV0ZWQgYnkgQW5kcmV3IEJhcm5lcnQgYW5kIEl2YW4gTGV2a2l2c2t5aSBpbiA6aXNzdWU6YDI1OTU4YC4pCisKKyogTG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgdHJhY2ViYWNrIGxpbmVzIGFyZSBub3cgYWJicmV2aWF0ZWQgYXMKKyAgYGAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSJgYCAoc2VlCisgIDpyZWY6YHdoYXRzbmV3MzYtdHJhY2ViYWNrYCBmb3IgYW4gZXhhbXBsZSkuCisgIChDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworKiBJbXBvcnQgbm93IHJhaXNlcyB0aGUgbmV3IGV4Y2VwdGlvbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYAorICAoc3ViY2xhc3Mgb2YgOmV4YzpgSW1wb3J0RXJyb3JgKSB3aGVuIGl0IGNhbm5vdCBmaW5kIGEgbW9kdWxlLiAgQ29kZQorICB0aGF0IGN1cnJlbnQgY2hlY2tzIGZvciBJbXBvcnRFcnJvciAoaW4gdHJ5LWV4Y2VwdCkgd2lsbCBzdGlsbCB3b3JrLgorICAoQ29udHJpYnV0ZWQgYnkgRXJpYyBTbm93IGluIDppc3N1ZTpgMTU3NjdgLikKKworKiBDbGFzcyBtZXRob2RzIHJlbHlpbmcgb24gemVyby1hcmd1bWVudCBgYHN1cGVyKClgYCB3aWxsIG5vdyB3b3JrIGNvcnJlY3RseQorICB3aGVuIGNhbGxlZCBmcm9tIG1ldGFjbGFzcyBtZXRob2RzIGR1cmluZyBjbGFzcyBjcmVhdGlvbi4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiBUZWljaG1hbm4gaW4gOmlzc3VlOmAyMzcyMmAuKQorCisKK05ldyBNb2R1bGVzCis9PT09PT09PT09PQorCisuLiBfd2hhdHNuZXczNi1wZXA1MDY6CisKK3NlY3JldHMKKy0tLS0tLS0KKworVGhlIG1haW4gcHVycG9zZSBvZiB0aGUgbmV3IDptb2Q6YHNlY3JldHNgIG1vZHVsZSBpcyB0byBwcm92aWRlIGFuIG9idmlvdXMgd2F5Cit0byByZWxpYWJseSBnZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSB2YWx1ZXMgc3VpdGFibGUKK2ZvciBtYW5hZ2luZyBzZWNyZXRzLCBzdWNoIGFzIGFjY291bnQgYXV0aGVudGljYXRpb24sIHRva2VucywgYW5kIHNpbWlsYXIuCisKKy4uIHdhcm5pbmc6OgorCisgIE5vdGUgdGhhdCB0aGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzIGluIHRoZSA6bW9kOmByYW5kb21gIG1vZHVsZQorICBzaG91bGQgKk5PVCogYmUgdXNlZCBmb3Igc2VjdXJpdHkgcHVycG9zZXMuICBVc2UgOm1vZDpgc2VjcmV0c2AKKyAgb24gUHl0aG9uIDMuNisgYW5kIDpmdW5jOmBvcy51cmFuZG9tKClgIG9uIFB5dGhvbiAzLjUgYW5kIGVhcmxpZXIuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNTA2YCAtLSBBZGRpbmcgQSBTZWNyZXRzIE1vZHVsZSBUbyBUaGUgU3RhbmRhcmQgTGlicmFyeQorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IFN0ZXZlbiBEJ0FwcmFuby4KKworCitJbXByb3ZlZCBNb2R1bGVzCis9PT09PT09PT09PT09PT09CisKK2FycmF5CistLS0tLQorCitFeGhhdXN0ZWQgaXRlcmF0b3JzIG9mIDpjbGFzczpgYXJyYXkuYXJyYXlgIHdpbGwgbm93IHN0YXkgZXhoYXVzdGVkIGV2ZW4KK2lmIHRoZSBpdGVyYXRlZCBhcnJheSBpcyBleHRlbmRlZC4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvcgorb2Ygb3RoZXIgbXV0YWJsZSBzZXF1ZW5jZXMuCisKK0NvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjQ5MmAuCisKK2FzdAorLS0tCisKK1RoZSBuZXcgOmNsYXNzOmBhc3QuQ29uc3RhbnRgIEFTVCBub2RlIGhhcyBiZWVuIGFkZGVkLiAgSXQgY2FuIGJlIHVzZWQKK2J5IGV4dGVybmFsIEFTVCBvcHRpbWl6ZXJzIGZvciB0aGUgcHVycG9zZXMgb2YgY29uc3RhbnQgZm9sZGluZy4KKworQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjE0NmAuCisKKworYXN5bmNpbworLS0tLS0tLQorCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYgdGhlIGBgYXN5bmNpb2BgIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbCBhbmQgaXRzCitBUEkgaXMgY29uc2lkZXJlZCBzdGFibGUuCisKK05vdGFibGUgY2hhbmdlcyBpbiB0aGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIHNpbmNlIFB5dGhvbiAzLjUuMAorKGFsbCBiYWNrcG9ydGVkIHRvIDMuNS54IGR1ZSB0byB0aGUgcHJvdmlzaW9uYWwgc3RhdHVzKToKKworKiBUaGUgOmZ1bmM6YH5hc3luY2lvLmdldF9ldmVudF9sb29wYCBmdW5jdGlvbiBoYXMgYmVlbiBjaGFuZ2VkIHRvCisgIGFsd2F5cyByZXR1cm4gdGhlIGN1cnJlbnRseSBydW5uaW5nIGxvb3Agd2hlbiBjYWxsZWQgZnJvbSBjb3Vyb3V0aW5lcworICBhbmQgY2FsbGJhY2tzLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyODYxM2AuKQorCisqIFRoZSA6ZnVuYzpgfmFzeW5jaW8uZW5zdXJlX2Z1dHVyZWAgZnVuY3Rpb24gYW5kIGFsbCBmdW5jdGlvbnMgdGhhdAorICB1c2UgaXQsIHN1Y2ggYXMgOm1ldGg6YGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5ydW5fdW50aWxfY29tcGxldGU+YCwKKyAgbm93IGFjY2VwdCBhbGwga2luZHMgb2YgOnRlcm06YGF3YWl0YWJsZSBvYmplY3RzIDxhd2FpdGFibGU+YC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOmZ1bmM6YH5hc3luY2lvLnJ1bl9jb3JvdXRpbmVfdGhyZWFkc2FmZWAgZnVuY3Rpb24gdG8gc3VibWl0CisgIGNvcm91dGluZXMgdG8gZXZlbnQgbG9vcHMgZnJvbSBvdGhlciB0aHJlYWRzLgorICAoQ29udHJpYnV0ZWQgYnkgVmluY2VudCBNaWNoZWwuKQorCisqIE5ldyA6bWV0aDpgVHJhbnNwb3J0LmlzX2Nsb3NpbmcoKSA8YXN5bmNpby5CYXNlVHJhbnNwb3J0LmlzX2Nsb3Npbmc+YAorICBtZXRob2QgdG8gY2hlY2sgaWYgdGhlIHRyYW5zcG9ydCBpcyBjbG9zaW5nIG9yIGNsb3NlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBUaGUgOm1ldGg6YGxvb3AuY3JlYXRlX3NlcnZlcigpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY3JlYXRlX3NlcnZlcj5gCisgIG1ldGhvZCBjYW4gbm93IGFjY2VwdCBhIGxpc3Qgb2YgaG9zdHMuCisgIChDb250cmlidXRlZCBieSBZYW5uIFNpb25uZWF1LikKKworKiBOZXcgOm1ldGg6YGxvb3AuY3JlYXRlX2Z1dHVyZSgpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuY3JlYXRlX2Z1dHVyZT5gCisgIG1ldGhvZCB0byBjcmVhdGUgRnV0dXJlIG9iamVjdHMuICBUaGlzIGFsbG93cyBhbHRlcm5hdGl2ZSBldmVudAorICBsb29wIGltcGxlbWVudGF0aW9ucywgc3VjaCBhcworICBgdXZsb29wIDxodHRwczovL2dpdGh1Yi5jb20vTWFnaWNTdGFjay91dmxvb3A+YF8sIHRvIHByb3ZpZGUgYSBmYXN0ZXIKKyAgOmNsYXNzOmBhc3luY2lvLkZ1dHVyZWAgaW1wbGVtZW50YXRpb24uCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDI3MDQxYC4pCisKKyogTmV3IDptZXRoOmBsb29wLmdldF9leGNlcHRpb25faGFuZGxlcigpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyPmAKKyAgbWV0aG9kIHRvIGdldCB0aGUgY3VycmVudCBleGNlcHRpb24gaGFuZGxlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjcwNDBgLikKKworKiBOZXcgOm1ldGg6YFN0cmVhbVJlYWRlci5yZWFkdW50aWwoKSA8YXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZHVudGlsPmAKKyAgbWV0aG9kIHRvIHJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0gdW50aWwgYSBzZXBhcmF0b3IgYnl0ZXMKKyAgc2VxdWVuY2UgYXBwZWFycy4KKyAgKENvbnRyaWJ1dGVkIGJ5IE1hcmsgS29yZW5iZXJnLikKKworKiBUaGUgcGVyZm9ybWFuY2Ugb2YgOm1ldGg6YFN0cmVhbVJlYWRlci5yZWFkZXhhY3RseSgpIDxhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseT5gCisgIGhhcyBiZWVuIGltcHJvdmVkLgorICAoQ29udHJpYnV0ZWQgYnkgTWFyayBLb3JlbmJlcmcgaW4gOmlzc3VlOmAyODM3MGAuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5nZXRhZGRyaW5mbygpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0YWRkcmluZm8+YAorICBtZXRob2QgaXMgb3B0aW1pemVkIHRvIGF2b2lkIGNhbGxpbmcgdGhlIHN5c3RlbSBgYGdldGFkZHJpbmZvYGAKKyAgZnVuY3Rpb24gaWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSByZXNvbHZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEEuIEplc3NlIEppcnl1IERhdmlzLikKKworKiBUaGUgOm1ldGg6YEJhc2VFdmVudExvb3Auc3RvcCgpIDxhc3luY2lvLkJhc2VFdmVudExvb3Auc3RvcD5gCisgIG1ldGhvZCBoYXMgYmVlbiBjaGFuZ2VkIHRvIHN0b3AgdGhlIGxvb3AgaW1tZWRpYXRlbHkgYWZ0ZXIKKyAgdGhlIGN1cnJlbnQgaXRlcmF0aW9uLiAgQW55IG5ldyBjYWxsYmFja3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0CisgIG9mIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aWxsIGJlIGRpc2NhcmRlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0gaW4gOmlzc3VlOmAyNTU5M2AuKQorCisqIDptZXRoOmBGdXR1cmUuc2V0X2V4Y2VwdGlvbiA8YXN5bmNpby5mdXR1cmVzLkZ1dHVyZS5zZXRfZXhjZXB0aW9uPmAKKyAgd2lsbCBub3cgcmFpc2UgOmV4YzpgVHlwZUVycm9yYCB3aGVuIHBhc3NlZCBhbiBpbnN0YW5jZSBvZgorICA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24uCisgIChDb250cmlidXRlZCBieSBDaHJpcyBBbmdlbGljbyBpbiA6aXNzdWU6YDI2MjIxYC4pCisKKyogTmV3IDptZXRoOmBMb29wLmNvbm5lY3RfYWNjZXB0ZWRfc29ja2V0KCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jb25uZWN0X2FjY2VwdGVkX3NvY2tldD5gCisgIG1ldGhvZCB0byBiZSB1c2VkIGJ5IHNlcnZlcnMgdGhhdCBhY2NlcHQgY29ubmVjdGlvbnMgb3V0c2lkZSBvZiBhc3luY2lvLAorICBidXQgdGhhdCB1c2UgYXN5bmNpbyB0byBoYW5kbGUgdGhlbS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEppbSBGdWx0b24gaW4gOmlzc3VlOmAyNzM5MmAuKQorCisKK2JpbmFzY2lpCistLS0tLS0tLQorCitUaGUgOmZ1bmM6YH5iaW5hc2NpaS5iMmFfYmFzZTY0YCBmdW5jdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCAqbmV3bGluZSoKK2tleXdvcmQgYXJndW1lbnQgdG8gY29udHJvbCB3aGV0aGVyIHRoZSBuZXdsaW5lIGNoYXJhY3RlciBpcyBhcHBlbmRlZCB0byB0aGUKK3JldHVybiB2YWx1ZS4KKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1MzU3YC4pCisKKworY21hdGgKKy0tLS0tCisKK1RoZSBuZXcgOmNvbnN0OmBjbWF0aC50YXVgICjPhCkgY29uc3RhbnQgaGFzIGJlZW4gYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgTGlzYSBSb2FjaCBpbiA6aXNzdWU6YDEyMzQ1YCwgc2VlIDpwZXA6YDYyOGAgZm9yIGRldGFpbHMuKQorCitOZXcgY29uc3RhbnRzOiA6Y29uc3Q6YGNtYXRoLmluZmAgYW5kIDpjb25zdDpgY21hdGgubmFuYCB0bworbWF0Y2ggOmNvbnN0OmBtYXRoLmluZmAgYW5kIDpjb25zdDpgbWF0aC5uYW5gLCBhbmQgYWxzbyA6Y29uc3Q6YGNtYXRoLmluZmpgCithbmQgOmNvbnN0OmBjbWF0aC5uYW5qYCB0byBtYXRjaCB0aGUgZm9ybWF0IHVzZWQgYnkgY29tcGxleCByZXByLgorKENvbnRyaWJ1dGVkIGJ5IE1hcmsgRGlja2luc29uIGluIDppc3N1ZTpgMjMyMjlgLikKKworCitjb2xsZWN0aW9ucworLS0tLS0tLS0tLS0KKworVGhlIG5ldyA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuQ29sbGVjdGlvbmAgYWJzdHJhY3QgYmFzZSBjbGFzcyBoYXMgYmVlbgorYWRkZWQgdG8gcmVwcmVzZW50IHNpemVkIGl0ZXJhYmxlIGNvbnRhaW5lciBjbGFzc2VzLgorKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSwgZG9jcyBieSBOZWlsIEdpcmRoYXIgaW4gOmlzc3VlOmAyNzU5OGAuKQorCitUaGUgbmV3IDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5SZXZlcnNpYmxlYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudHMKK2l0ZXJhYmxlIGNsYXNzZXMgdGhhdCBhbHNvIHByb3ZpZGUgdGhlIDptZXRoOmBfX3JldmVyc2VkX19gLgorKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSBpbiA6aXNzdWU6YDI1OTg3YC4pCisKK1RoZSA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgIGZ1bmN0aW9uIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsCitrZXl3b3JkIGFyZ3VtZW50ICptb2R1bGUqLCB3aGljaCwgd2hlbiBzcGVjaWZpZWQsIGlzIHVzZWQgZm9yCit0aGUgYGBfX21vZHVsZV9fYGAgYXR0cmlidXRlIG9mIHRoZSByZXR1cm5lZCBuYW1lZCB0dXBsZSBjbGFzcy4KKyhDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDE3OTQxYC4pCisKK1RoZSAqdmVyYm9zZSogYW5kICpyZW5hbWUqIGFyZ3VtZW50cyBmb3IKKzpmdW5jOmB+Y29sbGVjdGlvbnMubmFtZWR0dXBsZWAgYXJlIG5vdyBrZXl3b3JkLW9ubHkuCisoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgaW4gOmlzc3VlOmAyNTYyOGAuKQorCitSZWN1cnNpdmUgOmNsYXNzOmBjb2xsZWN0aW9ucy5kZXF1ZWAgaW5zdGFuY2VzIGNhbiBub3cgYmUgcGlja2xlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjY0ODJgLikKKworCitjb25jdXJyZW50LmZ1dHVyZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmBUaHJlYWRQb29sRXhlY3V0b3IgPGNvbmN1cnJlbnQuZnV0dXJlcy50aHJlYWQuVGhyZWFkUG9vbEV4ZWN1dG9yYAorY2xhc3MgY29uc3RydWN0b3Igbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgKnRocmVhZF9uYW1lX3ByZWZpeCogYXJndW1lbnQKK3RvIG1ha2UgaXQgcG9zc2libGUgdG8gY3VzdG9taXplIHRoZSBuYW1lcyBvZiB0aGUgdGhyZWFkcyBjcmVhdGVkIGJ5IHRoZQorcG9vbC4KKyhDb250cmlidXRlZCBieSBHcmVnb3J5IFAuIFNtaXRoIGluIDppc3N1ZTpgMjc2NjRgLikKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAgY2xhc3MgaGFzIGJlZW4gYWRkZWQgdG8KK3Byb3ZpZGUgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgY29udGV4dCBtYW5hZ2Vycy4gIEl0IHByb3ZpZGVzIGEKK3NlbnNpYmxlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGBfX2VudGVyX18oKWAgd2hpY2ggcmV0dXJucworYGBzZWxmYGAgYW5kIGxlYXZlcyBgX19leGl0X18oKWAgYW4gYWJzdHJhY3QgbWV0aG9kLiAgQSBtYXRjaGluZworY2xhc3MgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlIGFzCis6Y2xhc3M6YHR5cGluZy5Db250ZXh0TWFuYWdlcmAuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU2MDlgLikKKworCitkYXRldGltZQorLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBhbmQgOmNsYXNzOmB+ZGF0ZXRpbWUudGltZWAgY2xhc3NlcyBoYXZlCit0aGUgbmV3IDphdHRyOmB+dGltZS5mb2xkYCBhdHRyaWJ1dGUgdXNlZCB0byBkaXNhbWJpZ3VhdGUgbG9jYWwgdGltZQord2hlbiBuZWNlc3NhcnkuICBNYW55IGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgZGF0ZXRpbWVgIGhhdmUgYmVlbgordXBkYXRlZCB0byBzdXBwb3J0IGxvY2FsIHRpbWUgZGlzYW1iaWd1YXRpb24uCitTZWUgOnJlZjpgTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbiA8d2hhdHNuZXczNi1wZXA0OTU+YCBzZWN0aW9uIGZvciBtb3JlCitpbmZvcm1hdGlvbi4KKyhDb250cmlidXRlZCBieSBBbGV4YW5kZXIgQmVsb3BvbHNreSBpbiA6aXNzdWU6YDI0NzczYC4pCisKK1RoZSA6bWV0aDpgZGF0ZXRpbWUuc3RyZnRpbWUoKSA8ZGF0ZXRpbWUuZGF0ZXRpbWUuc3RyZnRpbWU+YCBhbmQKKzptZXRoOmBkYXRlLnN0cmZ0aW1lKCkgPGRhdGV0aW1lLmRhdGUuc3RyZnRpbWU+YCBtZXRob2RzIG5vdyBzdXBwb3J0CitJU08gODYwMSBkYXRlIGRpcmVjdGl2ZXMgYGAlR2BgLCBgYCV1YGAgYW5kIGBgJVZgYC4KKyhDb250cmlidXRlZCBieSBBc2hsZXkgQW5kZXJzb24gaW4gOmlzc3VlOmAxMjAwNmAuKQorCitUaGUgOmZ1bmM6YGRhdGV0aW1lLmlzb2Zvcm1hdCgpIDxkYXRldGltZS5kYXRldGltZS5pc29mb3JtYXQ+YCBmdW5jdGlvbgorbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgKnRpbWVzcGVjKiBhcmd1bWVudCB0aGF0IHNwZWNpZmllcyB0aGUgbnVtYmVyCitvZiBhZGRpdGlvbmFsIGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdmFsdWUgdG8gaW5jbHVkZS4KKyhDb250cmlidXRlZCBieSBBbGVzc2FuZHJvIEN1Y2NpIGFuZCBBbGV4YW5kZXIgQmVsb3BvbHNreSBpbiA6aXNzdWU6YDE5NDc1YC4pCisKK1RoZSA6bWV0aDpgZGF0ZXRpbWUuY29tYmluZSgpIDxkYXRldGltZS5kYXRldGltZS5jb21iaW5lPmAgbm93CithY2NlcHRzIGFuIG9wdGlvbmFsICp0emluZm8qIGFyZ3VtZW50LgorKENvbnRyaWJ1dGVkIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5IGluIDppc3N1ZTpgMjc2NjFgLikKKworCitkZWNpbWFsCistLS0tLS0tCisKK05ldyA6bWV0aDpgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvKCkgPGRlY2ltYWwuRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvPmAKK21ldGhvZCB0aGF0IHJldHVybnMgYSBwYWlyIGBgKG4sIGQpYGAgb2YgaW50ZWdlcnMgdGhhdCByZXByZXNlbnQgdGhlIGdpdmVuCis6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIGluc3RhbmNlIGFzIGEgZnJhY3Rpb24sIGluIGxvd2VzdCB0ZXJtcyBhbmQKK3dpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvcjo6CisKKyAgICA+Pj4gRGVjaW1hbCgnLTMuMTQnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAoLTE1NywgNTApCisKKyhDb250cmlidXRlZCBieSBTdGVmYW4gS3JhaCBhbWQgTWFyayBEaWNraW5zb24gaW4gOmlzc3VlOmAyNTkyOGAuKQorCisKKworZGlzdHV0aWxzCistLS0tLS0tLS0KKworVGhlIGBgZGVmYXVsdF9mb3JtYXRgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tCis6Y2xhc3M6YGRpc3R1dGlscy5jb21tYW5kLnNkaXN0LnNkaXN0YCBhbmQgdGhlIGBgZm9ybWF0c2BgCithdHRyaWJ1dGUgZGVmYXVsdHMgdG8gYGBbJ2d6dGFyJ11gYC4gQWx0aG91Z2ggbm90IGFudGljaXBhdGVkLAorQW55IGNvZGUgcmVseWluZyBvbiB0aGUgcHJlc2VuY2Ugb2YgYGBkZWZhdWx0X2Zvcm1hdGBgIG1heQorbmVlZCB0byBiZSBhZGFwdGVkLiBTZWUgOmlzc3VlOmAyNzgxOWAgZm9yIG1vcmUgZGV0YWlscy4KKworCitlbWFpbAorLS0tLS0KKworVGhlIG5ldyBlbWFpbCBBUEksIGVuYWJsZWQgdmlhIHRoZSAqcG9saWN5KiBrZXl3b3JkIHRvIHZhcmlvdXMgY29uc3RydWN0b3JzLCBpcworbm8gbG9uZ2VyIHByb3Zpc2lvbmFsLiAgVGhlIDptb2Q6YGVtYWlsYCBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHJlb3JnYW5pemVkIGFuZAorcmV3cml0dGVuIHRvIGZvY3VzIG9uIHRoZSBuZXcgQVBJLCB3aGlsZSByZXRhaW5pbmcgdGhlIG9sZCBkb2N1bWVudGF0aW9uIGZvcgordGhlIGxlZ2FjeSBBUEkuICAoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjQyNzdgLikKKworVGhlIDptb2Q6YGVtYWlsLm1pbWVgIGNsYXNzZXMgbm93IGFsbCBhY2NlcHQgYW4gb3B0aW9uYWwgKnBvbGljeSoga2V5d29yZC4KKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjczMzFgLikKKworVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBub3cgc3VwcG9ydHMgdGhlICpwb2xpY3kqCitrZXl3b3JkLgorCitUaGVyZSBpcyBhIG5ldyA6bW9kOmB+ZW1haWwucG9saWN5YCBhdHRyaWJ1dGUsCis6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YCwgdGhhdCBjb250cm9scyB3aGF0IGNsYXNzIGlzIHVzZWQKK2J5IGRlZmF1bHQgd2hlbiB0aGUgcGFyc2VyIGNyZWF0ZXMgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4gIEZvciB0aGUKKzphdHRyOmBlbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSB0aGlzIGlzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsCitmb3IgdGhlIG5ldyBwb2xpY2llcyBpdCBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAuCisoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjA0NzZgLikKKworCitlbmNvZGluZ3MKKy0tLS0tLS0tLQorCitPbiBXaW5kb3dzLCBhZGRlZCB0aGUgYGAnb2VtJ2BgIGVuY29kaW5nIHRvIHVzZSBgYENQX09FTUNQYGAgYW5kIHRoZSBgYCdhbnNpJ2BgCithbGlhcyBmb3IgdGhlIGV4aXN0aW5nIGBgJ21iY3MnYGAgZW5jb2RpbmcsIHdoaWNoIHVzZXMgdGhlIGBgQ1BfQUNQYGAgY29kZSBwYWdlLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjc5NTlgLikKKworCitlbnVtCistLS0tCisKK1R3byBuZXcgZW51bWVyYXRpb24gYmFzZSBjbGFzc2VzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgZW51bWAgbW9kdWxlOgorOmNsYXNzOmB+ZW51bS5GbGFnYCBhbmQgOmNsYXNzOmB+ZW51bS5JbnRGbGFnc2AuICBCb3RoIGFyZSB1c2VkIHRvIGRlZmluZQorY29uc3RhbnRzIHRoYXQgY2FuIGJlIGNvbWJpbmVkIHVzaW5nIHRoZSBiaXR3aXNlIG9wZXJhdG9ycy4KKyhDb250cmlidXRlZCBieSBFdGhhbiBGdXJtYW4gaW4gOmlzc3VlOmAyMzU5MWAuKQorCitNYW55IHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlCis6Y2xhc3M6YH5lbnVtLkludEZsYWdzYCBjbGFzcyBmb3IgdGhlaXIgY29uc3RhbnRzLgorCitUaGUgbmV3IDpjbGFzczpgZW51bS5hdXRvYCB2YWx1ZSBjYW4gYmUgdXNlZCB0byBhc3NpZ24gdmFsdWVzIHRvIGVudW0KK21lbWJlcnMgYXV0b21hdGljYWxseTo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRvCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KENvbG9yKQorICAgIFs8Q29sb3IucmVkOiAxPiwgPENvbG9yLmJsdWU6IDI+LCA8Q29sb3IuZ3JlZW46IDM+XQorCisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6bW9kOmBmYXVsdGhhbmRsZXJgIG1vZHVsZSBub3cgaW5zdGFsbHMgYSBoYW5kbGVyIGZvciBXaW5kb3dzCitleGNlcHRpb25zOiBzZWUgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKzppc3N1ZTpgMjM4NDhgLikKKworCitmaWxlaW5wdXQKKy0tLS0tLS0tLQorCis6ZnVuYzpgfmZpbGVpbnB1dC5ob29rX2VuY29kZWRgIG5vdyBzdXBwb3J0cyB0aGUgKmVycm9ycyogYXJndW1lbnQuCisoQ29udHJpYnV0ZWQgYnkgSm9zZXBoIEhhY2ttYW4gaW4gOmlzc3VlOmAyNTc4OGAuKQorCisKK2hhc2hsaWIKKy0tLS0tLS0KKworOm1vZDpgaGFzaGxpYmAgc3VwcG9ydHMgT3BlblNTTCAxLjEuMC4gIFRoZSBtaW5pbXVtIHJlY29tbWVuZCB2ZXJzaW9uIGlzIDEuMC4yLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjQ3MGAuKQorCitCTEFLRTIgaGFzaCBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgbW9kdWxlLiA6ZnVuYzpgfmhhc2hsaWIuYmxha2UyYmAKK2FuZCA6ZnVuYzpgfmhhc2hsaWIuYmxha2Uyc2AgYXJlIGFsd2F5cyBhdmFpbGFibGUgYW5kIHN1cHBvcnQgdGhlIGZ1bGwKK2ZlYXR1cmUgc2V0IG9mIEJMQUtFMi4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY3OThgIGJhc2VkIG9uIGNvZGUgYnkKK0RtaXRyeSBDaGVzdG55a2ggYW5kIFNhbXVlbCBOZXZlcy4gRG9jdW1lbnRhdGlvbiB3cml0dGVuIGJ5IERtaXRyeSBDaGVzdG55a2guKQorCitUaGUgU0hBLTMgaGFzaCBmdW5jdGlvbnMgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjI0YCwgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjU2YCwKKzpmdW5jOmB+aGFzaGxpYi5zaGEzXzM4NGAsIDpmdW5jOmB+aGFzaGxpYi5zaGEzXzUxMmAsIGFuZCBTSEFLRSBoYXNoIGZ1bmN0aW9ucworOmZ1bmM6YH5oYXNobGliLnNoYWtlXzEyOGAgYW5kIDpmdW5jOmB+aGFzaGxpYi5zaGFrZV8yNTZgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE2MTEzYC4gS2VjY2FrIENvZGUgUGFja2FnZQorYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlLCBhbmQKK1Jvbm55IFZhbiBLZWVyLikKKworVGhlIHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGlzIG5vdworYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjEuMCBhbmQgbmV3ZXIuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3OTI4YC4pCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24ucmVxdWVzdCgpIDxodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0PmAgYW5kCis6bWV0aDpgfmh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnNgIGJvdGggbm93IHN1cHBvcnQKK2NodW5rZWQgZW5jb2RpbmcgcmVxdWVzdCBib2RpZXMuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaWRsZWxpYiBwYWNrYWdlIGlzIGJlaW5nIG1vZGVybml6ZWQgYW5kIHJlZmFjdG9yZWQgdG8gbWFrZSBJRExFIGxvb2sgYW5kCit3b3JrIGJldHRlciBhbmQgdG8gbWFrZSB0aGUgY29kZSBlYXNpZXIgdG8gdW5kZXJzdGFuZCwgdGVzdCwgYW5kIGltcHJvdmUuIFBhcnQKK29mIG1ha2luZyBJRExFIGxvb2sgYmV0dGVyLCBlc3BlY2lhbGx5IG9uIExpbnV4IGFuZCBNYWMsIGlzIHVzaW5nIHR0ayB3aWRnZXRzLAorbW9zdGx5IGluIHRoZSBkaWFsb2dzLiAgQXMgYSByZXN1bHQsIElETEUgbm8gbG9uZ2VyIHJ1bnMgd2l0aCB0Y2wvdGsgOC40LiAgSXQKK25vdyByZXF1aXJlcyB0Y2wvdGsgOC41IG9yIDguNi4gIFdlIHJlY29tbWVuZCBydW5uaW5nIHRoZSBsYXRlc3QgcmVsZWFzZSBvZgorZWl0aGVyLgorCisnTW9kZXJuaXppbmcnIGluY2x1ZGVzIHJlbmFtaW5nIGFuZCBjb25zb2xpZGF0aW9uIG9mIGlkbGVsaWIgbW9kdWxlcy4gVGhlCityZW5hbWluZyBvZiBmaWxlcyB3aXRoIHBhcnRpYWwgdXBwZXJjYXNlIG5hbWVzIGlzIHNpbWlsYXIgdG8gdGhlIHJlbmFtaW5nIG9mLAorZm9yIGluc3RhbmNlLCBUa2ludGVyIGFuZCBUa0ZvbnQgdG8gdGtpbnRlciBhbmQgdGtpbnRlci5mb250IGluIDMuMC4gIEFzIGEKK3Jlc3VsdCwgaW1wb3J0cyBvZiBpZGxlbGliIGZpbGVzIHRoYXQgd29ya2VkIGluIDMuNSB3aWxsIHVzdWFsbHkgbm90IHdvcmsgaW4KKzMuNi4gIEF0IGxlYXN0IGEgbW9kdWxlIG5hbWUgY2hhbmdlIHdpbGwgYmUgbmVlZGVkIChzZWUgaWRsZWxpYi9SRUFETUUudHh0KSwKK3NvbWV0aW1lcyBtb3JlLiAgKE5hbWUgY2hhbmdlcyBjb250cmlidXRlZCBieSBBbCBTd2llZ2FydCBhbmQgVGVycnkgUmVlZHkgaW4KKzppc3N1ZTpgMjQyMjVgLiAgTW9zdCBpZGxlbGliIHBhdGNoZXMgc2luY2UgaGF2ZSBiZWVuIGFuZCB3aWxsIGJlIHBhcnQgb2YgdGhlCitwcm9jZXNzLikKKworSW4gY29tcGVuc2F0aW9uLCB0aGUgZXZlbnR1YWwgcmVzdWx0IHdpdGggYmUgdGhhdCBzb21lIGlkbGVsaWIgY2xhc3NlcyB3aWxsIGJlCitlYXNpZXIgdG8gdXNlLCB3aXRoIGJldHRlciBBUElzIGFuZCBkb2NzdHJpbmdzIGV4cGxhaW5pbmcgdGhlbS4gIEFkZGl0aW9uYWwKK3VzZWZ1bCBpbmZvcm1hdGlvbiB3aWxsIGJlIGFkZGVkIHRvIGlkbGVsaWIgd2hlbiBhdmFpbGFibGUuCisKKworaW1wb3J0bGliCistLS0tLS0tLS0KKworSW1wb3J0IG5vdyByYWlzZXMgdGhlIG5ldyBleGNlcHRpb24gOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAKKyhzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmApIHdoZW4gaXQgY2Fubm90IGZpbmQgYSBtb2R1bGUuICBDb2RlCit0aGF0IGN1cnJlbnQgY2hlY2tzIGZvciBgYEltcG9ydEVycm9yYGAgKGluIHRyeS1leGNlcHQpIHdpbGwgc3RpbGwgd29yay4KKyhDb250cmlidXRlZCBieSBFcmljIFNub3cgaW4gOmlzc3VlOmAxNTc2N2AuKQorCis6Y2xhc3M6YGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXJgIG5vdyBjYWxscworOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBvbiB0aGUgd3JhcHBlZCBsb2FkZXIsIHJlbW92aW5nIHRoZQorcmVzdHJpY3Rpb24gdGhhdCA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyYCBhbmQKKzpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYCBjb3VsZG4ndCBiZSB1c2VkIHdpdGgKKzpjbGFzczpgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlcmAuCisKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZWAsCis6ZnVuYzpgaW1wb3J0bGliLnV0aWwuc291cmNlX2Zyb21fY2FjaGVgLCBhbmQKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbmAgbm93IGFjY2VwdCBhCis6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKKworaW5zcGVjdAorLS0tLS0tLQorCitUaGUgOmZ1bmM6YGluc3BlY3Quc2lnbmF0dXJlKCkgPGluc3BlY3Quc2lnbmF0dXJlPmAgZnVuY3Rpb24gbm93IHJlcG9ydHMgdGhlCitpbXBsaWNpdCBgYC4wYGAgcGFyYW1ldGVycyBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBjb21wcmVoZW5zaW9uIGFuZAorZ2VuZXJhdG9yIGV4cHJlc3Npb24gc2NvcGVzIGFzIGlmIHRoZXkgd2VyZSBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBjYWxsZWQKK2BgaW1wbGljaXQwYGAuIChDb250cmlidXRlZCBieSBKZWxsZSBaaWpsc3RyYSBpbiA6aXNzdWU6YDE5NjExYC4pCisKKworanNvbgorLS0tLQorCis6ZnVuYzpganNvbi5sb2FkYCBhbmQgOmZ1bmM6YGpzb24ubG9hZHNgIG5vdyBzdXBwb3J0IGJpbmFyeSBpbnB1dC4gIEVuY29kZWQKK0pTT04gc2hvdWxkIGJlIHJlcHJlc2VudGVkIHVzaW5nIGVpdGhlciBVVEYtOCwgVVRGLTE2LCBvciBVVEYtMzIuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDE3OTA5YC4pCisKKworbG9nZ2luZworLS0tLS0tLQorCitUaGUgbmV3IDptZXRoOmBXYXRjaGVkRmlsZUhhbmRsZXIucmVvcGVuSWZOZWVkZWQoKSA8bG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIucmVvcGVuSWZOZWVkZWQ+YAorbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIGFkZCB0aGUgYWJpbGl0eSB0byBjaGVjayBpZiB0aGUgbG9nIGZpbGUgbmVlZHMgdG8KK2JlIHJlb3BlbmVkLgorKENvbnRyaWJ1dGVkIGJ5IE1hcmlhbiBIb3JiYW4gaW4gOmlzc3VlOmAyNDg4NGAuKQorCisKK21hdGgKKy0tLS0KKworVGhlIHRhdSAoz4QpIGNvbnN0YW50IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmBtYXRoYCBhbmQgOm1vZDpgY21hdGhgCittb2R1bGVzLgorKENvbnRyaWJ1dGVkIGJ5IExpc2EgUm9hY2ggaW4gOmlzc3VlOmAxMjM0NWAsIHNlZSA6cGVwOmA2MjhgIGZvciBkZXRhaWxzLikKKworCittdWx0aXByb2Nlc3NpbmcKKy0tLS0tLS0tLS0tLS0tLQorCis6cmVmOmBQcm94eSBPYmplY3RzIDxtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0cz5gIHJldHVybmVkIGJ5Cis6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLk1hbmFnZXJgIGNhbiBub3cgYmUgbmVzdGVkLgorKENvbnRyaWJ1dGVkIGJ5IERhdmluIFBvdHRzIGluIDppc3N1ZTpgNjc2NmAuKQorCisKK29zCistLQorCitTZWUgdGhlIHN1bW1hcnkgZm9yIDpyZWY6YFBFUCA1MTkgPHdoYXRzbmV3MzYtcGVwNTE5PmAgZm9yIGRldGFpbHMgb24gaG93IHRoZQorOm1vZDpgb3NgIGFuZCA6bW9kOmBvcy5wYXRoYCBtb2R1bGVzIG5vdyBzdXBwb3J0Cis6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YC4KKworQSBuZXcgOm1ldGg6YH5vcy5zY2FuZGlyLmNsb3NlYCBtZXRob2QgYWxsb3dzIGV4cGxpY2l0bHkgY2xvc2luZyBhCis6ZnVuYzpgfm9zLnNjYW5kaXJgIGl0ZXJhdG9yLiAgVGhlIDpmdW5jOmB+b3Muc2NhbmRpcmAgaXRlcmF0b3Igbm93CitzdXBwb3J0cyB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuICBJZiBhIDpmdW5jOmBzY2FuZGlyYAoraXRlcmF0b3IgaXMgbmVpdGhlciBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYAord2lsbCBiZSBlbWl0dGVkIGluIGl0cyBkZXN0cnVjdG9yLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTk5NGAuKQorCitPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbAoraXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yIHRoZSByYXRpb25hbGUuCisKK1RoZSBMaW51eCBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCAoZ2V0IHJhbmRvbSBieXRlcykgaXMgbm93IGV4cG9zZWQgYXMgdGhlIG5ldworOmZ1bmM6YG9zLmdldHJhbmRvbWAgZnVuY3Rpb24uCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIsIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGApCisKKworcGF0aGxpYgorLS0tLS0tLQorCis6bW9kOmBwYXRobGliYCBub3cgc3VwcG9ydHMgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjcxODZgLikKKworU2VlIHRoZSBzdW1tYXJ5IGZvciA6cmVmOmBQRVAgNTE5IDx3aGF0c25ldzM2LXBlcDUxOT5gIGZvciBkZXRhaWxzLgorCisKK3BkYgorLS0tCisKK1RoZSA6Y2xhc3M6YH5wZGIuUGRiYCBjbGFzcyBjb25zdHJ1Y3RvciBoYXMgYSBuZXcgb3B0aW9uYWwgKnJlYWRyYyogYXJndW1lbnQKK3RvIGNvbnRyb2wgd2hldGhlciBgYC5wZGJyY2BgIGZpbGVzIHNob3VsZCBiZSByZWFkLgorCisKK3BpY2tsZQorLS0tLS0tCisKK09iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gbm93IGJlIHBpY2tsZWQKK3VzaW5nIDpyZWY6YHBpY2tsZSBwcm90b2NvbHMgPHBpY2tsZS1wcm90b2NvbHM+YCBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KK1Byb3RvY29sIHZlcnNpb24gNCBhbHJlYWR5IHN1cHBvcnRzIHRoaXMgY2FzZS4gIChDb250cmlidXRlZCBieSBTZXJoaXkKK1N0b3JjaGFrYSBpbiA6aXNzdWU6YDI0MTY0YC4pCisKKworcGlja2xldG9vbHMKKy0tLS0tLS0tLS0tCisKKzpmdW5jOmBwaWNrbGV0b29scy5kaXMoKWAgbm93IG91dHB1dHMgaW1wbGljaXQgbWVtbyBpbmRleCBmb3IgdGhlCitgYE1FTU9JWkVgYCBvcGNvZGUuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1MzgyYC4pCisKKworcHlkb2MKKy0tLS0tCisKK1RoZSA6bW9kOmBweWRvY2AgbW9kdWxlIGhhcyBsZWFybmVkIHRvIHJlc3BlY3QgdGhlIGBgTUFOUEFHRVJgYAorZW52aXJvbm1lbnQgdmFyaWFibGUuCisoQ29udHJpYnV0ZWQgYnkgTWF0dGhpYXMgS2xvc2UgaW4gOmlzc3VlOmA4NjM3YC4pCisKKzpmdW5jOmBoZWxwYCBhbmQgOm1vZDpgcHlkb2NgIGNhbiBub3cgbGlzdCBuYW1lZCB0dXBsZSBmaWVsZHMgaW4gdGhlCitvcmRlciB0aGV5IHdlcmUgZGVmaW5lZCByYXRoZXIgdGhhbiBhbHBoYWJldGljYWxseS4KKyhDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlciBpbiA6aXNzdWU6YDI0ODc5YC4pCisKKworcmFuZG9tCistLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YH5yYW5kb20uY2hvaWNlc2AgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgZWxlbWVudHMgb2YKK3NwZWNpZmllZCBzaXplIGZyb20gdGhlIGdpdmVuIHBvcHVsYXRpb24gd2l0aCBvcHRpb25hbCB3ZWlnaHRzLgorKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMTg4NDRgLikKKworCityZQorLS0KKworQWRkZWQgc3VwcG9ydCBvZiBtb2RpZmllciBzcGFucyBpbiByZWd1bGFyIGV4cHJlc3Npb25zLiAgRXhhbXBsZXM6CitgYCcoP2k6cCl5dGhvbidgYCBtYXRjaGVzIGBgJ3B5dGhvbidgYCBhbmQgYGAnUHl0aG9uJ2BgLCBidXQgbm90IGBgJ1BZVEhPTidgYDsKK2BgJyg/aSlnKD8taTp2KXInYGAgbWF0Y2hlcyBgYCdHdlInYGAgYW5kIGBgJ2d2cidgYCwgYnV0IG5vdCBgYCdHVlInYGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDQzMzAyOGAuKQorCitNYXRjaCBvYmplY3QgZ3JvdXBzIGNhbiBiZSBhY2Nlc3NlZCBieSBgYF9fZ2V0aXRlbV9fYGAsIHdoaWNoIGlzCitlcXVpdmFsZW50IHRvIGBgZ3JvdXAoKWBgLiAgU28gYGBtb1snbmFtZSddYGAgaXMgbm93IGVxdWl2YWxlbnQgdG8KK2BgbW8uZ3JvdXAoJ25hbWUnKWBgLiAgKENvbnRyaWJ1dGVkIGJ5IEVyaWMgU21pdGggaW4gOmlzc3VlOmAyNDQ1NGAuKQorCis6Y2xhc3M6YH5yZS5NYXRjaGAgb2JqZWN0cyBpbiB0aGUgbm93IHN1cHBvcnQKKzptZXRoOmBpbmRleC1saWtlIG9iamVjdHMgPG9iamVjdC5fX2luZGV4X18+YCBhcyBncm91cAoraW5kaWNlcy4KKyhDb250cmlidXRlZCBieSBKZXJvZW4gRGVtZXllciBhbmQgWGlhbmcgWmhhbmcgaW4gOmlzc3VlOmAyNzE3N2AuKQorCisKK3JlYWRsaW5lCistLS0tLS0tLQorCitBZGRlZCA6ZnVuYzpgfnJlYWRsaW5lLnNldF9hdXRvX2hpc3RvcnlgIHRvIGVuYWJsZSBvciBkaXNhYmxlCithdXRvbWF0aWMgYWRkaXRpb24gb2YgaW5wdXQgdG8gdGhlIGhpc3RvcnkgbGlzdC4gIChDb250cmlidXRlZCBieQorVHlsZXIgQ3JvbXB0b24gaW4gOmlzc3VlOmAyNjg3MGAuKQorCisKK3JsY29tcGxldGVyCistLS0tLS0tLS0tLQorCitQcml2YXRlIGFuZCBzcGVjaWFsIGF0dHJpYnV0ZSBuYW1lcyBub3cgYXJlIG9taXR0ZWQgdW5sZXNzIHRoZSBwcmVmaXggc3RhcnRzCit3aXRoIHVuZGVyc2NvcmVzLiAgQSBzcGFjZSBvciBhIGNvbG9uIGlzIGFkZGVkIGFmdGVyIHNvbWUgY29tcGxldGVkIGtleXdvcmRzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTAxMWAgYW5kIDppc3N1ZTpgMjUyMDlgLikKKworCitzaGxleAorLS0tLS0KKworVGhlIDpjbGFzczpgfnNobGV4LnNobGV4YCBoYXMgbXVjaAorOnJlZjpgaW1wcm92ZWQgc2hlbGwgY29tcGF0aWJpbGl0eSA8aW1wcm92ZWQtc2hlbGwtY29tcGF0aWJpbGl0eT5gCit0aHJvdWdoIHRoZSBuZXcgKnB1bmN0dWF0aW9uX2NoYXJzKiBhcmd1bWVudCB0byBjb250cm9sIHdoaWNoIGNoYXJhY3RlcnMKK2FyZSB0cmVhdGVkIGFzIHB1bmN0dWF0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFZpbmF5IFNhamlwIGluIDppc3N1ZTpgMTUyMTk1MGAuKQorCisKK3NpdGUKKy0tLS0KKworV2hlbiBzcGVjaWZ5aW5nIHBhdGhzIHRvIGFkZCB0byA6YXR0cjpgc3lzLnBhdGhgIGluIGEgYC5wdGhgIGZpbGUsCit5b3UgbWF5IG5vdyBzcGVjaWZ5IGZpbGUgcGF0aHMgb24gdG9wIG9mIGRpcmVjdG9yaWVzIChlLmcuIHppcCBmaWxlcykuCisoQ29udHJpYnV0ZWQgYnkgV29sZmdhbmcgTGFuZ25lciBpbiA6aXNzdWU6YDI2NTg3YCkuCisKKworc3FsaXRlMworLS0tLS0tLQorCis6YXR0cjpgc3FsaXRlMy5DdXJzb3IubGFzdHJvd2lkYCBub3cgc3VwcG9ydHMgdGhlIGBgUkVQTEFDRWBgIHN0YXRlbWVudC4KKyhDb250cmlidXRlZCBieSBBbGV4IExvcmRUaG9yc2VuIGluIDppc3N1ZTpgMTY4NjRgLikKKworCitzb2NrZXQKKy0tLS0tLQorCitUaGUgOmZ1bmM6YH5zb2NrZXQuc29ja2V0LmlvY3RsYCBmdW5jdGlvbiBub3cgc3VwcG9ydHMgdGhlCis6ZGF0YTpgfnNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYCBjb250cm9sIGNvZGUuCisoQ29udHJpYnV0ZWQgYnkgRGFuaWVsIFN0b2tlcyBpbiA6aXNzdWU6YDI2NTM2YC4pCisKK1RoZSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuZ2V0c29ja29wdGAgY29uc3RhbnRzIGBgU09fRE9NQUlOYGAsCitgYFNPX1BST1RPQ09MYGAsIGBgU09fUEVFUlNFQ2BgLCBhbmQgYGBTT19QQVNTU0VDYGAgYXJlIG5vdyBzdXBwb3J0ZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI2OTA3YC4pCisKK1RoZSA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2V0c29ja29wdGAgbm93IHN1cHBvcnRzIHRoZQorYGBzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCBOb25lLCBvcHRsZW46IGludClgYCBmb3JtLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gaXNzdWU6YDI3NzQ0YC4pCisKK1RoZSBzb2NrZXQgbW9kdWxlIG5vdyBzdXBwb3J0cyB0aGUgYWRkcmVzcyBmYW1pbHkKKzpkYXRhOmB+c29ja2V0LkFGX0FMR2AgdG8gaW50ZXJmYWNlIHdpdGggTGludXggS2VybmVsIGNyeXB0byBBUEkuIGBgQUxHXypgYCwKK2BgU09MX0FMR2BgIGFuZCA6bWV0aDpgfnNvY2tldC5zb2NrZXQuc2VuZG1zZ19hZmFsZ2Agd2VyZSBhZGRlZC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc3NDRgIHdpdGggc3VwcG9ydCBmcm9tCitWaWN0b3IgU3Rpbm5lci4pCisKKworc29ja2V0c2VydmVyCistLS0tLS0tLS0tLS0KKworU2VydmVycyBiYXNlZCBvbiB0aGUgOm1vZDpgc29ja2V0c2VydmVyYCBtb2R1bGUsIGluY2x1ZGluZyB0aG9zZQorZGVmaW5lZCBpbiA6bW9kOmBodHRwLnNlcnZlcmAsIDptb2Q6YHhtbHJwYy5zZXJ2ZXJgIGFuZAorOm1vZDpgd3NnaXJlZi5zaW1wbGVfc2VydmVyYCwgbm93IHN1cHBvcnQgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgCitwcm90b2NvbC4KKyhDb250cmlidXRlZCBieSBBdml2IFBhbGl2b2RhIGluIDppc3N1ZTpgMjY0MDRgLikKKworVGhlIDphdHRyOmB+c29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLndmaWxlYCBhdHRyaWJ1dGUgb2YKKzpjbGFzczpgfnNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcmAgY2xhc3NlcyBub3cgaW1wbGVtZW50cwordGhlIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHdyaXRhYmxlIGludGVyZmFjZS4gIEluIHBhcnRpY3VsYXIsCitjYWxsaW5nIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVgIGlzIG5vdyBndWFyYW50ZWVkIHRvIHNlbmQgdGhlCitkYXRhIGluIGZ1bGwuICAoQ29udHJpYnV0ZWQgYnkgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDI2NzIxYC4pCisKKworc3NsCistLS0KKworOm1vZDpgc3NsYCBzdXBwb3J0cyBPcGVuU1NMIDEuMS4wLiAgVGhlIG1pbmltdW0gcmVjb21tZW5kIHZlcnNpb24gaXMgMS4wLjIuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI2NDcwYC4pCisKKzNERVMgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IGNpcGhlciBzdWl0ZXMgYW5kIENoYUNoYTIwIFBvbHkxMzA1CitjaXBoZXIgc3VpdGVzIGhhdmUgYmVlbiBhZGRlZC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjc4NTBgIGFuZCA6aXNzdWU6YDI3NzY2YC4pCisKKzpjbGFzczpgfnNzbC5TU0xDb250ZXh0YCBoYXMgYmV0dGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3Igb3B0aW9ucworYW5kIGNpcGhlcnMuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDQzYC4pCisKK1NTTCBzZXNzaW9uIGNhbiBiZSBjb3BpZWQgZnJvbSBvbmUgY2xpZW50LXNpZGUgY29ubmVjdGlvbiB0byBhbm90aGVyCit3aXRoIHRoZSBuZXcgOmNsYXNzOmB+c3NsLlNTTFNlc3Npb25gIGNsYXNzLiAgVExTIHNlc3Npb24gcmVzdW1wdGlvbiBjYW4KK3NwZWVkIHVwIHRoZSBpbml0aWFsIGhhbmRzaGFrZSwgcmVkdWNlIGxhdGVuY3kgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UKKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMTk1MDBgIGJhc2VkIG9uIGEgZHJhZnQgYnkKK0FsZXggV2FyaGF3ay4pCisKK1RoZSBuZXcgOm1ldGg6YH5zc2wuU1NMQ29udGV4dC5nZXRfY2lwaGVyc2AgbWV0aG9kIGNhbiBiZSB1c2VkIHRvCitnZXQgYSBsaXN0IG9mIGVuYWJsZWQgY2lwaGVycyBpbiBvcmRlciBvZiBjaXBoZXIgcHJpb3JpdHkuCisKK0FsbCBjb25zdGFudHMgYW5kIGZsYWdzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8gOmNsYXNzOmB+ZW51bS5JbnRFbnVtYCBhbmQKKzpjbGFzczpgfmVudW0uSW50RmxhZ3NgLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODAyNWAuKQorCitTZXJ2ZXIgYW5kIGNsaWVudC1zaWRlIHNwZWNpZmljIFRMUyBwcm90b2NvbHMgZm9yIDpjbGFzczpgfnNzbC5TU0xDb250ZXh0YAord2VyZSBhZGRlZC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwODVgLikKKworCitzdGF0aXN0aWNzCistLS0tLS0tLS0tCisKK0EgbmV3IDpmdW5jOmB+c3RhdGlzdGljcy5oYXJtb25pY19tZWFuYCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZC4KKyhDb250cmlidXRlZCBieSBTdGV2ZW4gRCdBcHJhbm8gaW4gOmlzc3VlOmAyNzE4MWAuKQorCisKK3N0cnVjdAorLS0tLS0tCisKKzptb2Q6YHN0cnVjdGAgbm93IHN1cHBvcnRzIElFRUUgNzU0IGhhbGYtcHJlY2lzaW9uIGZsb2F0cyB2aWEgdGhlIGBgJ2UnYGAKK2Zvcm1hdCBzcGVjaWZpZXIuCisoQ29udHJpYnV0ZWQgYnkgRWxpIFN0ZXZlbnMsIE1hcmsgRGlja2luc29uIGluIDppc3N1ZTpgMTE3MzRgLikKKworCitzdWJwcm9jZXNzCistLS0tLS0tLS0tCisKKzpjbGFzczpgc3VicHJvY2Vzcy5Qb3BlbmAgZGVzdHJ1Y3RvciBub3cgZW1pdHMgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHdhcm5pbmcKK2lmIHRoZSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuIFVzZSB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIChgYHdpdGgKK3Byb2M6IC4uLmBgKSBvciBjYWxsIGV4cGxpY2l0bHkgdGhlIDptZXRoOmB+c3VicHJvY2Vzcy5Qb3Blbi53YWl0YCBtZXRob2QgdG8KK3JlYWQgdGhlIGV4aXQgc3RhdHVzIG9mIHRoZSBjaGlsZCBwcm9jZXNzIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorOmlzc3VlOmAyNjc0MWApLgorCitUaGUgOmNsYXNzOmBzdWJwcm9jZXNzLlBvcGVuYCBjb25zdHJ1Y3RvciBhbmQgYWxsIGZ1bmN0aW9ucyB0aGF0IHBhc3MgYXJndW1lbnRzCit0aHJvdWdoIHRvIGl0IG5vdyBhY2NlcHQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogYXJndW1lbnRzLiBTcGVjaWZ5aW5nIGVpdGhlcgorb2YgdGhlc2Ugd2lsbCBlbmFibGUgdGV4dCBtb2RlIGZvciB0aGUgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHN0cmVhbXMuCisoQ29udHJpYnV0ZWQgYnkgU3RldmUgRG93ZXIgaW4gOmlzc3VlOmA2MTM1YC4pCisKKworc3lzCistLS0KKworVGhlIG5ldyA6ZnVuYzpgfnN5cy5nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzYCBmdW5jdGlvbiByZXR1cm5zIHRoZSBuYW1lIG9mCit0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlIGZpbGVuYW1lcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjc3ODFgLikKKworT24gV2luZG93cyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSA6ZnVuYzpgfnN5cy5nZXR3aW5kb3dzdmVyc2lvbmAgZnVuY3Rpb24KK25vdyBpbmNsdWRlcyB0aGUgKnBsYXRmb3JtX3ZlcnNpb24qIGZpZWxkIHdoaWNoIGNvbnRhaW5zIHRoZSBhY2N1cmF0ZSBtYWpvcgordmVyc2lvbiwgbWlub3IgdmVyc2lvbiBhbmQgYnVpbGQgbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0sCityYXRoZXIgdGhhbiB0aGUgdmVyc2lvbiB0aGF0IGlzIGJlaW5nIGVtdWxhdGVkIGZvciB0aGUgcHJvY2VzcworKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlIERvd2VyIGluIDppc3N1ZTpgMjc5MzJgLikKKworCit0ZWxuZXRsaWIKKy0tLS0tLS0tLQorCis6Y2xhc3M6YH50ZWxuZXRsaWIuVGVsbmV0YCBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIgKGNvbnRyaWJ1dGVkIGJ5CitTdMOpcGhhbmUgV2lydGVsIGluIDppc3N1ZTpgMjU0ODVgKS4KKworCit0aW1lCistLS0tCisKK1RoZSA6Y2xhc3M6YH50aW1lLnN0cnVjdF90aW1lYCBhdHRyaWJ1dGVzIDphdHRyOmB0bV9nbXRvZmZgIGFuZAorOmF0dHI6YHRtX3pvbmVgIGFyZSBub3cgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuCisKKwordGltZWl0CistLS0tLS0KKworVGhlIG5ldyA6bWV0aDpgVGltZXIuYXV0b3JhbmdlKCkgPHRpbWVpdC5UaW1lci5hdXRvcmFuZ2U+YCBjb252ZW5pZW5jZQorbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIGNhbGwgOm1ldGg6YFRpbWVyLnRpbWVpdCgpIDx0aW1laXQuVGltZXIudGltZWl0PmAKK3JlcGVhdGVkbHkgc28gdGhhdCB0aGUgdG90YWwgcnVuIHRpbWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAyMDAgbWlsbGlzZWNvbmRzLgorKENvbnRyaWJ1dGVkIGJ5IFN0ZXZlbiBEJ0FwcmFubyBpbiA6aXNzdWU6YDY0MjJgLikKKworOm1vZDpgdGltZWl0YCBub3cgd2FybnMgd2hlbiB0aGVyZSBpcyBzdWJzdGFudGlhbCAoNHgpIHZhcmlhbmNlCitiZXR3ZWVuIGJlc3QgYW5kIHdvcnN0IHRpbWVzLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzU1MmAuKQorCisKK3RraW50ZXIKKy0tLS0tLS0KKworQWRkZWQgbWV0aG9kcyA6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfYWRkYCwKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9yZW1vdmVgIGFuZCA6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfaW5mb2AKK2luIHRoZSA6Y2xhc3M6YHRraW50ZXIuVmFyaWFibGVgIGNsYXNzLiAgVGhleSByZXBsYWNlIG9sZCBtZXRob2RzCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmFyaWFibGVgLCA6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VgLAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3ZkZWxldGVgIGFuZAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3ZpbmZvYCB0aGF0IHVzZSBvYnNvbGV0ZSBUY2wgY29tbWFuZHMgYW5kIG1pZ2h0Citub3Qgd29yayBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgVGNsLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMjExNWApLgorCisKKy4uIF93aGF0c25ldzM2LXRyYWNlYmFjazoKKwordHJhY2ViYWNrCistLS0tLS0tLS0KKworQm90aCB0aGUgdHJhY2ViYWNrIG1vZHVsZSBhbmQgdGhlIGludGVycHJldGVyJ3MgYnVpbHRpbiBleGNlcHRpb24gZGlzcGxheSBub3cKK2FiYnJldmlhdGUgbG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgbGluZXMgaW4gdHJhY2ViYWNrcyBhcyBzaG93biBpbiB0aGUKK2ZvbGxvd2luZyBleGFtcGxlOjoKKworICAgID4+PiBkZWYgZigpOiBmKCkKKyAgICAuLi4KKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIGYKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIGYKKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIGYKKyAgICAgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDk5NSBtb3JlIHRpbWVzXQorICAgIFJlY3Vyc2lvbkVycm9yOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZAorCisoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeSBpbiA6aXNzdWU6YDI2ODIzYC4pCisKKwordHJhY2VtYWxsb2MKKy0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIG5vdyBzdXBwb3J0cyB0cmFjaW5nIG1lbW9yeSBhbGxvY2F0aW9ucyBpbgorbXVsdGlwbGUgZGlmZmVyZW50IGFkZHJlc3Mgc3BhY2VzLgorCitUaGUgbmV3IDpjbGFzczpgfnRyYWNlbWFsbG9jLkRvbWFpbkZpbHRlcmAgZmlsdGVyIGNsYXNzIGhhcyBiZWVuIGFkZGVkCit0byBmaWx0ZXIgYmxvY2sgdHJhY2VzIGJ5IHRoZWlyIGFkZHJlc3Mgc3BhY2UgKGRvbWFpbikuCisKKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2NTg4YC4pCisKKworLi4gX3doYXRzbmV3MzYtdHlwaW5nOgorCit0eXBpbmcKKy0tLS0tLQorCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYgdGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbAorYW5kIGl0cyBBUEkgaXMgY29uc2lkZXJlZCBzdGFibGUuCisKK1NpbmNlIHRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSB3YXMgOnRlcm06YHByb3Zpc2lvbmFsIDxwcm92aXNpb25hbCBhcGk+YAoraW4gUHl0aG9uIDMuNSwgYWxsIGNoYW5nZXMgaW50cm9kdWNlZCBpbiBQeXRob24gMy42IGhhdmUgYWxzbyBiZWVuCitiYWNrcG9ydGVkIHRvIFB5dGhvbiAzLjUueC4KKworVGhlIDptb2Q6YHR5cGluZ2AgbW9kdWxlIGhhcyBhIG11Y2ggaW1wcm92ZWQgc3VwcG9ydCBmb3IgZ2VuZXJpYyB0eXBlCithbGlhc2VzLiAgRm9yIGV4YW1wbGUgYGBEaWN0W3N0ciwgVHVwbGVbUywgVF1dYGAgaXMgbm93IGEgdmFsaWQKK3R5cGUgYW5ub3RhdGlvbi4KKyhDb250cmlidXRlZCBieSBHdWlkbyB2YW4gUm9zc3VtIGluIGBHaXRodWIgIzE5NQorPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nL3B1bGwvMTk1PmBfLikKKworVGhlIDpjbGFzczpgdHlwaW5nLkNvbnRleHRNYW5hZ2VyYCBjbGFzcyBoYXMgYmVlbiBhZGRlZCBmb3IKK3JlcHJlc2VudGluZyA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAuCisoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU2MDlgLikKKworVGhlIDpjbGFzczpgdHlwaW5nLkNvbGxlY3Rpb25gIGNsYXNzIGhhcyBiZWVuIGFkZGVkIGZvcgorcmVwcmVzZW50aW5nIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkNvbGxlY3Rpb25gLgorKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSBpbiA6aXNzdWU6YDI3NTk4YC4pCisKK1RoZSA6Y29uc3Q6YHR5cGluZy5DbGFzc1ZhcmAgdHlwZSBjb25zdHJ1Y3QgaGFzIGJlZW4gYWRkZWQgdG8KK21hcmsgY2xhc3MgdmFyaWFibGVzLiAgQXMgaW50cm9kdWNlZCBpbiA6cGVwOmA1MjZgLCBhIHZhcmlhYmxlIGFubm90YXRpb24KK3dyYXBwZWQgaW4gQ2xhc3NWYXIgaW5kaWNhdGVzIHRoYXQgYSBnaXZlbiBhdHRyaWJ1dGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcworYSBjbGFzcyB2YXJpYWJsZSBhbmQgc2hvdWxkIG5vdCBiZSBzZXQgb24gaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MuCisoQ29udHJpYnV0ZWQgYnkgSXZhbiBMZXZraXZza3lpIGluIGBHaXRodWIgIzI4MAorPGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nL2lzc3Vlcy8yODA+YF8uKQorCitBIG5ldyA6Y29uc3Q6YH50eXBpbmcuVFlQRV9DSEVDS0lOR2AgY29uc3RhbnQgdGhhdCBpcyBhc3N1bWVkIHRvIGJlCitgYFRydWVgYCBieSB0aGUgc3RhdGljIHR5cGUgY2hla2VycywgYnV0IGlzIGBgRmFsc2VgYCBhdCBydW50aW1lLgorKENvbnRyaWJ1dGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0gaW4gYEdpdGh1YiAjMjMwCis8aHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmcvaXNzdWVzLzIzMD5gXy4pCisKK0EgbmV3IDpmdW5jOmB+dHlwaW5nLk5ld1R5cGVgIGhlbHBlciBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZCB0byBjcmVhdGUKK2xpZ2h0d2VpZ2h0IGRpc3RpbmN0IHR5cGVzIGZvciBhbm5vdGF0aW9uczo6CisKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTmV3VHlwZQorCisgICAgVXNlcklkID0gTmV3VHlwZSgnVXNlcklkJywgaW50KQorICAgIHNvbWVfaWQgPSBVc2VySWQoNTI0MzEzKQorCitUaGUgc3RhdGljIHR5cGUgY2hlY2tlciB3aWxsIHRyZWF0IHRoZSBuZXcgdHlwZSBhcyBpZiBpdCB3ZXJlIGEgc3ViY2xhc3MKK29mIHRoZSBvcmlnaW5hbCB0eXBlLiAgKENvbnRyaWJ1dGVkIGJ5IEl2YW4gTGV2a2l2c2t5aSBpbiBgR2l0aHViICMxODkKKzxodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGluZy9pc3N1ZXMvMTg5PmBfLikKKworCit1bmljb2RlZGF0YQorLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHVuaWNvZGVkYXRhYCBtb2R1bGUgbm93IHVzZXMgZGF0YSBmcm9tIGBVbmljb2RlIDkuMC4wCis8aHR0cDovL3VuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU5LjAuMC8+YF8uCisoQ29udHJpYnV0ZWQgYnkgQmVuamFtaW4gUGV0ZXJzb24uKQorCisKK3VuaXR0ZXN0Lm1vY2sKKy0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfnVuaXR0ZXN0Lm1vY2suTW9ja2AgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzOgorCisqIFR3byBuZXcgbWV0aG9kcywgOm1ldGg6YE1vY2suYXNzZXJ0X2NhbGxlZCgpCisgIDx1bml0dGVzdC5tb2NrLk1vY2suYXNzZXJ0X2NhbGxlZD5gIGFuZCA6bWV0aDpgTW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKQorICA8dW5pdHRlc3QubW9jay5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZT5gIHRvIGNoZWNrIGlmIHRoZSBtb2NrIG9iamVjdAorICB3YXMgY2FsbGVkLgorICAoQ29udHJpYnV0ZWQgYnkgQW1pdCBTYWhhIGluIDppc3N1ZTpgMjYzMjNgLikKKworKiBUaGUgOm1ldGg6YE1vY2sucmVzZXRfbW9jaygpIDx1bml0dGVzdC5tb2NrLk1vY2sucmVzZXRfbW9jaz5gIG1ldGhvZAorICBub3cgaGFzIHR3byBvcHRpb25hbCBrZXl3b3JkIG9ubHkgYXJndW1lbnRzOiAqcmV0dXJuX3ZhbHVlKiBhbmQKKyAgKnNpZGVfZWZmZWN0Ki4KKyAgKENvbnRyaWJ1dGVkIGJ5IEt1c2hhbCBEYXMgaW4gOmlzc3VlOmAyMTI3MWAuKQorCisKK3VybGxpYi5yZXF1ZXN0CistLS0tLS0tLS0tLS0tLQorCitJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHkgKG90aGVyIHRoYW4gYQorYnl0ZXMgb2JqZWN0KSBidXQgbm8gYGBDb250ZW50LUxlbmd0aGBgIGhlYWRlciwgcmF0aGVyIHRoYW4KK3Rocm93aW5nIGFuIGVycm9yLCA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyYCBub3cKK2ZhbGxzIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKwordXJsbGliLnJvYm90cGFyc2VyCistLS0tLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+dXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcmAgbm93IHN1cHBvcnRzIHRoZSBgYENyYXdsLWRlbGF5YGAgYW5kCitgYFJlcXVlc3QtcmF0ZWBgIGV4dGVuc2lvbnMuCisoQ29udHJpYnV0ZWQgYnkgTmlrb2xheSBCb2dveWNoZXYgaW4gOmlzc3VlOmAxNjA5OWAuKQorCisKK3ZlbnYKKy0tLS0KKworOm1vZDpgdmVudmAgYWNjZXB0cyBhIG5ldyBwYXJhbWV0ZXIgYGAtLXByb21wdGBgLiBUaGlzIHBhcmFtZXRlciBwcm92aWRlcyBhbgorYWx0ZXJuYXRpdmUgcHJlZml4IGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gKFByb3Bvc2VkIGJ5IMWBdWthc3ogQmFsY2VyemFrCithbmQgcG9ydGVkIHRvIDMuNiBieSBTdMOpcGhhbmUgV2lydGVsIGluIDppc3N1ZTpgMjI4MjlgLikKKworCit3YXJuaW5ncworLS0tLS0tLS0KKworQSBuZXcgb3B0aW9uYWwgKnNvdXJjZSogcGFyYW1ldGVyIGhhcyBiZWVuIGFkZGVkIHRvIHRoZQorOmZ1bmM6YHdhcm5pbmdzLndhcm5fZXhwbGljaXRgIGZ1bmN0aW9uOiB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKzpleGM6YFJlc291cmNlV2FybmluZ2AuIEEgKnNvdXJjZSogYXR0cmlidXRlIGhhcyBhbHNvIGJlZW4gYWRkZWQgdG8KKzpjbGFzczpgd2FybmluZ3MuV2FybmluZ01lc3NhZ2VgIChjb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorOmlzc3VlOmAyNjU2OGAgYW5kIDppc3N1ZTpgMjY1NjdgKS4KKworV2hlbiBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZyBpcyBsb2dnZWQsIHRoZSA6bW9kOmB0cmFjZW1hbGxvY2AgaXMgbm93Cit1c2VkIHRvIHRyeSB0byByZXRyaWV2ZSB0aGUgdHJhY2ViYWNrIHdoZXJlIHRoZSBkZXRyb3llZCBvYmplY3Qgd2FzIGFsbG9jYXRlZC4KKworRXhhbXBsZSB3aXRoIHRoZSBzY3JpcHQgYGBleGFtcGxlLnB5YGA6OgorCisgICAgaW1wb3J0IHdhcm5pbmdzCisKKyAgICBkZWYgZnVuYygpOgorICAgICAgICByZXR1cm4gb3BlbihfX2ZpbGVfXykKKworICAgIGYgPSBmdW5jKCkKKyAgICBmID0gTm9uZQorCitPdXRwdXQgb2YgdGhlIGNvbW1hbmQgYGBweXRob24zLjYgLVdkIC1YIHRyYWNlbWFsbG9jPTUgZXhhbXBsZS5weWBgOjoKKworICAgIGV4YW1wbGUucHk6NzogUmVzb3VyY2VXYXJuaW5nOiB1bmNsb3NlZCBmaWxlIDxfaW8uVGV4dElPV3JhcHBlciBuYW1lPSdleGFtcGxlLnB5JyBtb2RlPSdyJyBlbmNvZGluZz0nVVRGLTgnPgorICAgICAgZiA9IE5vbmUKKyAgICBPYmplY3QgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgIEZpbGUgImV4YW1wbGUucHkiLCBsaW5lbm8gNAorICAgICAgICByZXR1cm4gb3BlbihfX2ZpbGVfXykKKyAgICAgIEZpbGUgImV4YW1wbGUucHkiLCBsaW5lbm8gNgorICAgICAgICBmID0gZnVuYygpCisKK1RoZSAiT2JqZWN0IGFsbG9jYXRlZCBhdCIgdHJhY2ViYWNrIGlzIG5ldyBhbmQgb25seSBkaXNwbGF5ZWQgaWYKKzptb2Q6YHRyYWNlbWFsbG9jYCBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIGlmIHRoZQorOm1vZDpgd2FybmluZ3NgIHdhcyBhbHJlYWR5IGltcG9ydGVkLgorCisKK3dpbnJlZworLS0tLS0tCisKK0FkZGVkIHRoZSA2NC1iaXQgaW50ZWdlciB0eXBlIDpkYXRhOmBSRUdfUVdPUkQgPHdpbnJlZy5SRUdfUVdPUkQ+YC4KKyhDb250cmlidXRlZCBieSBDbGVtZW50IFJvdWF1bHQgaW4gOmlzc3VlOmAyMzAyNmAuKQorCisKK3dpbnNvdW5kCistLS0tLS0tLQorCitBbGxvd2VkIGtleXdvcmQgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byA6ZnVuYzpgQmVlcCA8d2luc291bmQuQmVlcD5gLAorOmZ1bmM6YE1lc3NhZ2VCZWVwIDx3aW5zb3VuZC5NZXNzYWdlQmVlcD5gLCBhbmQgOmZ1bmM6YFBsYXlTb3VuZAorPHdpbnNvdW5kLlBsYXlTb3VuZD5gICg6aXNzdWU6YDI3OTgyYCkuCisKKworeG1scnBjLmNsaWVudAorLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgeG1scnBjLmNsaWVudGAgbW9kdWxlIG5vdyBzdXBwb3J0cyB1bm1hcnNoYWxsaW5nCithZGRpdGlvbmFsIGRhdGEgdHlwZXMgdXNlZCBieSBBcGFjaGUgWE1MLVJQQyBpbXBsZW1lbnRhdGlvbgorZm9yIG51bWVyaWNzIGFuZCBgYE5vbmVgYC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjY4ODVgLikKKworCit6aXBmaWxlCistLS0tLS0tCisKK0EgbmV3IDptZXRoOmBaaXBJbmZvLmZyb21fZmlsZSgpIDx6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlPmAgY2xhc3MgbWV0aG9kCithbGxvd3MgbWFraW5nIGEgOmNsYXNzOmB+emlwZmlsZS5aaXBJbmZvYCBpbnN0YW5jZSBmcm9tIGEgZmlsZXN5c3RlbSBmaWxlLgorQSBuZXcgOm1ldGg6YFppcEluZm8uaXNfZGlyKCkgPHppcGZpbGUuWmlwSW5mby5pc19kaXI+YCBtZXRob2QgY2FuIGJlIHVzZWQKK3RvIGNoZWNrIGlmIHRoZSA6Y2xhc3M6YH56aXBmaWxlLlppcEluZm9gIGluc3RhbmNlIHJlcHJlc2VudHMgYSBkaXJlY3RvcnkuCisoQ29udHJpYnV0ZWQgYnkgVGhvbWFzIEtsdXl2ZXIgaW4gOmlzc3VlOmAyNjAzOWAuKQorCitUaGUgOm1ldGg6YFppcEZpbGUub3BlbigpIDx6aXBmaWxlLlppcEZpbGUub3Blbj5gIG1ldGhvZCBjYW4gbm93IGJlIHVzZWQgdG8KK3dyaXRlIGRhdGEgaW50byBhIFpJUCBmaWxlLCBhcyB3ZWxsIGFzIGZvciBleHRyYWN0aW5nIGRhdGEuCisoQ29udHJpYnV0ZWQgYnkgVGhvbWFzIEtsdXl2ZXIgaW4gOmlzc3VlOmAyNjAzOWAuKQorCisKK3psaWIKKy0tLS0KKworVGhlIDpmdW5jOmB+emxpYi5jb21wcmVzc2AgYW5kIDpmdW5jOmB+emxpYi5kZWNvbXByZXNzYCBmdW5jdGlvbnMgbm93IGFjY2VwdAora2V5d29yZCBhcmd1bWVudHMuCisoQ29udHJpYnV0ZWQgYnkgQXZpdiBQYWxpdm9kYSBpbiA6aXNzdWU6YDI2MjQzYCBhbmQKK1hpYW5nIFpoYW5nIGluIDppc3N1ZTpgMTY3NjRgIHJlc3BlY3RpdmVseS4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCisqIFB5dGhvbiBpbnRlcnByZXRlciBub3cgdXNlcyAxNi1iaXQgd29yZGNvZGUgaW5zdGVhZCBvZiBieXRlY29kZSB3aGljaAorICBtYWRlIGEgbnVtYmVyIG9mIG9wY29kZSBvcHRpbWl6YXRpb25zIHBvc3NpYmxlLgorICAoQ29udHJpYnV0ZWQgYnkgRGVtdXIgUnVtZWQgd2l0aCBpbnB1dCBhbmQgcmV2aWV3cyBmcm9tCisgIFNlcmhpeSBTdG9yY2hha2EgYW5kIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjY2NDdgIGFuZCA6aXNzdWU6YDI4MDUwYC4pCisKKyogVGhlIDpjbGFzczpgRnV0dXJlIDxhc3luY2lvLmZ1dHVyZXMuRnV0dXJlPmAgbm93IGhhcyBhbiBvcHRpbWl6ZWQKKyAgQyBpbXBsZW1lbnRhdGlvbi4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGFuZCBJTkFEQSBOYW9raSBpbiA6aXNzdWU6YDI2ODAxYC4pCisKKyogVGhlIDpjbGFzczpgVGFzayA8YXN5bmNpby50YXNrcy5UYXNrPmAgbm93IGhhcyBhbiBvcHRpbWl6ZWQKKyAgQyBpbXBsZW1lbnRhdGlvbi4gKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92IGluIDppc3N1ZTpgMjg1NDRgLikKKworKiBWYXJpb3VzIGltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50cyBpbiB0aGUgOm1vZDpgdHlwaW5nYCBtb2R1bGUKKyAgKHN1Y2ggYXMgY2FjaGluZyBvZiBnZW5lcmljIHR5cGVzKSBhbGxvdyB1cCB0byAzMCB0aW1lcyBwZXJmb3JtYW5jZQorICBpbXByb3ZlbWVudHMgYW5kIHJlZHVjZWQgbWVtb3J5IGZvb3RwcmludC4KKworKiBUaGUgQVNDSUkgZGVjb2RlciBpcyBub3cgdXAgdG8gNjAgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IgaGFuZGxlcnMKKyAgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBpZ25vcmVgYCBhbmQgYGByZXBsYWNlYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjQ4NzBgKS4KKworKiBUaGUgQVNDSUkgYW5kIHRoZSBMYXRpbjEgZW5jb2RlcnMgYXJlIG5vdyB1cCB0byAzIHRpbWVzIGFzIGZhc3QgZm9yIHRoZQorICBlcnJvciBoYW5kbGVyIGBgc3Vycm9nYXRlZXNjYXBlYGAKKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUyMjdgKS4KKworKiBUaGUgVVRGLTggZW5jb2RlciBpcyBub3cgdXAgdG8gNzUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IgaGFuZGxlcnMKKyAgYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAsIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgc3Vycm9nYXRlcGFzc2BgIChDb250cmlidXRlZAorICBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1MjY3YCkuCisKKyogVGhlIFVURi04IGRlY29kZXIgaXMgbm93IHVwIHRvIDE1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yIGhhbmRsZXJzCisgIGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgIGFuZCBgYHN1cnJvZ2F0ZWVzY2FwZWBgIChDb250cmlidXRlZAorICBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI1MzAxYCkuCisKKyogYGBieXRlcyAlIGFyZ3NgYCBpcyBub3cgdXAgdG8gMiB0aW1lcyBmYXN0ZXIuIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lcgorICBpbiA6aXNzdWU6YDI1MzQ5YCkuCisKKyogYGBieXRlYXJyYXkgJSBhcmdzYGAgaXMgbm93IGJldHdlZW4gMi41IGFuZCA1IHRpbWVzIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5CisgIFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUzOTlgKS4KKworKiBPcHRpbWl6ZSA6bWV0aDpgYnl0ZXMuZnJvbWhleGAgYW5kIDptZXRoOmBieXRlYXJyYXkuZnJvbWhleGA6IHRoZXkgYXJlIG5vdworICBiZXR3ZWVuIDJ4IGFuZCAzLjV4IGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjU0MDFgKS4KKworKiBPcHRpbWl6ZSBgYGJ5dGVzLnJlcGxhY2UoYicnLCBiJy4nKWBgIGFuZCBgYGJ5dGVhcnJheS5yZXBsYWNlKGInJywgYicuJylgYDoKKyAgdXAgdG8gODAlIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5IEpvc2ggU25pZGVyIGluIDppc3N1ZTpgMjY1NzRgKS4KKworKiBBbGxvY2F0b3IgZnVuY3Rpb25zIG9mIHRoZSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGRvbWFpbgorICAoOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWApIG5vdyB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IKKyAgPHB5bWFsbG9jPmAgaW5zdGVhZCBvZiA6YzpmdW5jOmBtYWxsb2NgIGZ1bmN0aW9uIG9mIHRoZSBDIGxpYnJhcnkuIFRoZQorICBweW1hbGxvYyBhbGxvY2F0b3IgaXMgb3B0aW1pemVkIGZvciBvYmplY3RzIHNtYWxsZXIgb3IgZXF1YWwgdG8gNTEyIGJ5dGVzCisgIHdpdGggYSBzaG9ydCBsaWZldGltZSwgYW5kIHVzZSA6YzpmdW5jOmBtYWxsb2NgIGZvciBsYXJnZXIgbWVtb3J5IGJsb2Nrcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjYyNDlgKS4KKworKiA6ZnVuYzpgcGlja2xlLmxvYWRgIGFuZCA6ZnVuYzpgcGlja2xlLmxvYWRzYCBhcmUgbm93IHVwIHRvIDEwJSBmYXN0ZXIgd2hlbgorICBkZXNlcmlhbGl6aW5nIG1hbnkgc21hbGwgb2JqZWN0cyAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKyAgOmlzc3VlOmAyNzA1NmApLgorCistIFBhc3NpbmcgOnRlcm06YGtleXdvcmQgYXJndW1lbnRzIDxrZXl3b3JkIGFyZ3VtZW50PmAgdG8gYSBmdW5jdGlvbiBoYXMgYW4KKyAgb3ZlcmhlYWQgaW4gY29tcGFyaXNvbiB3aXRoIHBhc3NpbmcgOnRlcm06YHBvc2l0aW9uYWwgYXJndW1lbnRzCisgIDxwb3NpdGlvbmFsIGFyZ3VtZW50PmAuICBOb3cgaW4gZXh0ZW5zaW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCB3aXRoIHVzaW5nCisgIEFyZ3VtZW50IENsaW5pYyB0aGlzIG92ZXJoZWFkIGlzIHNpZ25pZmljYW50bHkgZGVjcmVhc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI3NTc0YCkuCisKKyogT3B0aW1pemVkIDpmdW5jOmB+Z2xvYi5nbG9iYCBhbmQgOmZ1bmM6YH5nbG9iLmlnbG9iYCBmdW5jdGlvbnMgaW4gdGhlCisgIDptb2Q6YGdsb2JgIG1vZHVsZTsgdGhleSBhcmUgbm93IGFib3V0IDMtLTYgdGltZXMgZmFzdGVyLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1NTk2YCkuCisKKyogT3B0aW1pemVkIGdsb2JiaW5nIGluIDptb2Q6YHBhdGhsaWJgIGJ5IHVzaW5nIDpmdW5jOmBvcy5zY2FuZGlyYDsKKyAgaXQgaXMgbm93IGFib3V0IDEuNS0tNCB0aW1lcyBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYwMzJgKS4KKworKiA6Y2xhc3M6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWAgcGFyc2luZywgaXRlcmF0aW9uIGFuZCBkZWVwY29weSBwZXJmb3JtYW5jZQorICBoYXMgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1NjM4YCwgOmlzc3VlOmAyNTg3M2AsCisgIGFuZCA6aXNzdWU6YDI1ODY5YC4pCisKKyogQ3JlYXRpb24gb2YgOmNsYXNzOmBmcmFjdGlvbnMuRnJhY3Rpb25gIGluc3RhbmNlcyBmcm9tIGZsb2F0cyBhbmQKKyAgZGVjaW1hbHMgaXMgbm93IDIgdG8gMyB0aW1lcyBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU5NzFgLikKKworCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworKiBQeXRob24gbm93IHJlcXVpcmVzIHNvbWUgQzk5IHN1cHBvcnQgaW4gdGhlIHRvb2xjaGFpbiB0byBidWlsZC4KKyAgTW9zdCBub3RhYmx5LCBQeXRob24gbm93IHVzZXMgc3RhbmRhcmQgaW50ZWdlciB0eXBlcyBhbmQgbWFjcm9zIGluCisgIHBsYWNlIG9mIGN1c3RvbSBtYWNyb3MgbGlrZSBgYFBZX0xPTkdfTE9OR2BgLgorICBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIDpwZXA6YDdgIGFuZCA6aXNzdWU6YDE3ODg0YC4KKworKiBDcm9zcy1jb21waWxpbmcgQ1B5dGhvbiB3aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgdGhlIEFuZHJvaWQgQVBJIGxldmVsIHNldCB0bworICAyMSAoQW5kcm9pZCA1LjAgTG9sbGlsb3ApIG9yIGdyZWF0ZXIsIHJ1bnMgc3VjY2Vzc2Z1bGx5LiBXaGlsZSBBbmRyb2lkIGlzIG5vdAorICB5ZXQgYSBzdXBwb3J0ZWQgcGxhdGZvcm0sIHRoZSBQeXRob24gdGVzdCBzdWl0ZSBydW5zIG9uIHRoZSBBbmRyb2lkIGVtdWxhdG9yCisgIHdpdGggb25seSBhYm91dCAxNiB0ZXN0cyBmYWlsdXJlcy4gU2VlIHRoZSBBbmRyb2lkIG1ldGEtaXNzdWUgOmlzc3VlOmAyNjg2NWAuCisKKyogVGhlIGBgLS13aXRoLW9wdGltaXphdGlvbnNgYCBjb25maWd1cmUgZmxhZyBoYXMgYmVlbiBhZGRlZC4gVHVybmluZyBpdCBvbgorICB3aWxsIGFjdGl2YXRlIGV4cGVuc2l2ZSBvcHRpbWl6YXRpb25zIGxpa2UgUEdPLgorICAoT3JpZ2luYWwgcGF0Y2ggYnkgQWxlY3NhbmRydSBQYXRyYXNjdSBvZiBJbnRlbCBpbiA6aXNzdWU6YDI2NTM5YC4pCisKKyogVGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgbXVzdCBub3cgYmUgaGVsZCB3aGVuIGFsbG9jYXRvcgorICBmdW5jdGlvbnMgb2YgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQKKyAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgKGV4OiA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgKSBkb21haW5zIGFyZSBjYWxsZWQuCisKKyogTmV3IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIEFQSSB3aGljaCBpbmRpY2F0ZXMgaWYgZmx1c2hpbmcgYnVmZmVyZWQgZGF0YQorICBmYWlsZWQuCisgIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgNTMxOWAuKQorCisqIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc2Agbm93IHN1cHBvcnRzIDpyZWY6YHBvc2l0aW9uYWwtb25seQorICBwYXJhbWV0ZXJzIDxwb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyPmAuICBQb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBhcmUKKyAgZGVmaW5lZCBieSBlbXB0eSBuYW1lcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjI4MmApLgorCisqIGBgUHlUcmFjZWJhY2tfUHJpbnRgYCBtZXRob2Qgbm93IGFiYnJldmlhdGVzIGxvbmcgc2VxdWVuY2VzIG9mIHJlcGVhdGVkIGxpbmVzCisgIGFzIGBgIltQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudH0gbW9yZSB0aW1lc10iYGAuCisgIChDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworKiBUaGUgbmV3IDpjOmZ1bmM6YFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3NgIGZ1bmN0aW9uIGFsbG93cyBmb3IKKyAgc3BlY2lmeWluZyBhIHN1YmNsYXNzIG9mIDpleGM6YEltcG9ydEVycm9yYCB0byByYWlzZS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEVyaWMgU25vdyBpbiA6aXNzdWU6YDE1NzY3YC4pCisKKyogVGhlIG5ldyA6YzpmdW5jOmBQeUVycl9SZXNvdXJjZVdhcm5pbmdgIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlCisgIHRoZSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHByb3ZpZGluZyB0aGUgc291cmNlIG9mIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9uLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjU2N2AuKQorCisqIFRoZSBuZXcgOmM6ZnVuYzpgUHlPU19GU1BhdGhgIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZpbGUgc3lzdGVtCisgIHJlcHJlc2VudGF0aW9uIG9mIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjcxODZgLikKKworKiBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhbmQgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAKKyAgZnVuY3Rpb25zIHdpbGwgbm93IGFjY2VwdCA6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YC4KKworCisKK0RlcHJlY2F0ZWQKKz09PT09PT09PT0KKworTmV3IEtleXdvcmRzCistLS0tLS0tLS0tLS0KKworYGBhc3luY2BgIGFuZCBgYGF3YWl0YGAgYXJlIG5vdCByZWNvbW1lbmRlZCB0byBiZSB1c2VkIGFzIHZhcmlhYmxlLCBjbGFzcywKK2Z1bmN0aW9uIG9yIG1vZHVsZSBuYW1lcy4gIEludHJvZHVjZWQgYnkgOnBlcDpgNDkyYCBpbiBQeXRob24gMy41LCB0aGV5IHdpbGwKK2JlY29tZSBwcm9wZXIga2V5d29yZHMgaW4gUHl0aG9uIDMuNy4gIFN0YXJ0aW5nIGluIFB5dGhvbiAzLjYsIHRoZSB1c2Ugb2YKK2BgYXN5bmNgYCBvciBgYGF3YWl0YGAgYXMgbmFtZXMgd2lsbCBnZW5lcmF0ZSBhIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuCisKKworRGVwcmVjYXRlZCBQeXRob24gYmVoYXZpb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JhaXNpbmcgdGhlIDpleGM6YFN0b3BJdGVyYXRpb25gIGV4Y2VwdGlvbiBpbnNpZGUgYSBnZW5lcmF0b3Igd2lsbCBub3cKK2dlbmVyYXRlIGEgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCwgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAKK2luIFB5dGhvbiAzLjcuICBTZWUgOnJlZjpgd2hhdHNuZXctcGVwLTQ3OWAgZm9yIGRldGFpbHMuCisKK1RoZSA6bWV0aDpgX19haXRlcl9fYCBtZXRob2QgaXMgbm93IGV4cGVjdGVkIHRvIHJldHVybiBhbiBhc3luY2hyb25vdXMKK2l0ZXJhdG9yIGRpcmVjdGx5IGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGF3YWl0YWJsZSBhcyBwcmV2aW91c2x5LgorRG9pbmcgdGhlIGZvcm1lciB3aWxsIHRyaWdnZXIgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLiAgQmFja3dhcmQKK2NvbXBhdGliaWxpdHkgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcuCisoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YgaW4gOmlzc3VlOmAyNzI0M2AuKQorCitBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBub3cgZ2VuZXJhdGVzCithIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuICBBbHRob3VnaCB0aGlzIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUgYQorOmV4YzpgU3ludGF4RXJyb3JgLCB0aGF0IHdpbGwgbm90IGJlIGZvciBzZXZlcmFsIFB5dGhvbiByZWxlYXNlcy4KKyhDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjczNjRgLikKKworV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBmYWxsaW5nIGJhY2sgb24gYGBfX25hbWVfX2BgIGFuZAorYGBfX3BhdGhfX2BgIGZyb20gdGhlIGNhbGxpbmcgbW9kdWxlIHdoZW4gYGBfX3NwZWNfX2BgIG9yCitgYF9fcGFja2FnZV9fYGAgYXJlIG5vdCBkZWZpbmVkIG5vdyByYWlzZXMgYW4gOmV4YzpgSW1wb3J0V2FybmluZ2AuCisoQ29udHJpYnV0ZWQgYnkgUm9zZSBBbWVzIGluIDppc3N1ZTpgMjU3OTFgLikKKworCitEZXByZWNhdGVkIFB5dGhvbiBtb2R1bGVzLCBmdW5jdGlvbnMgYW5kIG1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCithc3luY2hhdAorfn5+fn5+fn4KKworVGhlIDptb2Q6YGFzeW5jaGF0YCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIDptb2Q6YGFzeW5jaW9gLgorKENvbnRyaWJ1dGVkIGJ5IE1hcmlhdHRhIGluIDppc3N1ZTpgMjUwMDJgLikKKworCithc3luY29yZQorfn5+fn5+fn4KKworVGhlIDptb2Q6YGFzeW5jb3JlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIDptb2Q6YGFzeW5jaW9gLgorKENvbnRyaWJ1dGVkIGJ5IE1hcmlhdHRhIGluIDppc3N1ZTpgMjUwMDJgLikKKworCitkYm0KK35+fgorCitVbmxpa2Ugb3RoZXIgOm1vZDpgZGJtYCBpbXBsZW1lbnRhdGlvbnMsIHRoZSA6bW9kOmBkYm0uZHVtYmAgbW9kdWxlCitjcmVhdGVzIGRhdGFiYXNlcyB3aXRoIHRoZSBgYCdydydgYCBtb2RlIGFuZCBhbGxvd3MgbW9kaWZ5aW5nIHRoZSBkYXRhYmFzZQorb3BlbmVkIHdpdGggdGhlIGBgJ3InYGAgbW9kZS4gIFRoaXMgYmVoYXZpb3IgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIHdpbGwKK2JlIHJlbW92ZWQgaW4gMy44LgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMTcwOGAuKQorCisKK2Rpc3R1dGlscworfn5+fn5+fn5+CisKK1RoZSB1bmRvY3VtZW50ZWQgYGBleHRyYV9wYXRoYGAgYXJndW1lbnQgdG8gdGhlCis6Y2xhc3M6YH5kaXN0dXRpbHMuRGlzdHJpYnV0aW9uYCBjb25zdHJ1Y3RvciBpcyBub3cgY29uc2lkZXJlZCBkZXByZWNhdGVkCithbmQgd2lsbCByYWlzZSBhIHdhcm5pbmcgaWYgc2V0LiAgIFN1cHBvcnQgZm9yIHRoaXMgcGFyYW1ldGVyIHdpbGwgYmUKK3JlbW92ZWQgaW4gYSBmdXR1cmUgUHl0aG9uIHJlbGVhc2UuICBTZWUgOmlzc3VlOmAyNzkxOWAgZm9yIGRldGFpbHMuCisKKworZ3JwCit+fn4KKworVGhlIHN1cHBvcnQgb2Ygbm9uLWludGVnZXIgYXJndW1lbnRzIGluIDpmdW5jOmB+Z3JwLmdldGdyZ2lkYCBoYXMgYmVlbgorZGVwcmVjYXRlZC4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYxMjlgLikKKworCitpbXBvcnRsaWIKK35+fn5+fn5+fgorCitUaGUgOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlci5sb2FkX21vZHVsZWAgYW5kCis6bWV0aDpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlci5sb2FkX21vZHVsZWAgbWV0aG9kcworYXJlIG5vdyBkZXByZWNhdGVkLiBUaGV5IHdlcmUgdGhlIG9ubHkgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCBpbiA6bW9kOmBpbXBvcnRsaWJgIHRoYXQgaGFkIG5vdAorYmVlbiBkZXByZWNhdGVkIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbiBpbiBmYXZvdXIgb2YKKzptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAuCisKK29zCit+fgorCitVbmRvY3VtZW50ZWQgc3VwcG9ydCBvZiBnZW5lcmFsIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdHMgPGJ5dGVzLWxpa2Ugb2JqZWN0PmAKK2FzIHBhdGhzIGluIDptb2Q6YG9zYCBmdW5jdGlvbnMsIDpmdW5jOmBjb21waWxlYCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaXMKK25vdyBkZXByZWNhdGVkLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTc5MWAgYW5kIDppc3N1ZTpgMjY3NTRgLikKKworcmUKK35+CisKK1N1cHBvcnQgZm9yIGlubGluZSBmbGFncyBgYCg/bGV0dGVycylgYCBpbiB0aGUgbWlkZGxlIG9mIHRoZSByZWd1bGFyCitleHByZXNzaW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSBQeXRob24KK3ZlcnNpb24uICBGbGFncyBhdCB0aGUgc3RhcnQgb2YgYSByZWd1bGFyIGV4cHJlc3Npb24gYXJlIHN0aWxsIGFsbG93ZWQuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyNDkzYC4pCisKK3NzbAorfn5+CisKK09wZW5TU0wgMC45LjgsIDEuMC4wIGFuZCAxLjAuMSBhcmUgZGVwcmVjYXRlZCBhbmQgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KK0luIHRoZSBmdXR1cmUgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIHdpbGwgcmVxdWlyZSBhdCBsZWFzdCBPcGVuU1NMIDEuMC4yIG9yCisxLjEuMC4KKworU1NMLXJlbGF0ZWQgYXJndW1lbnRzIGxpa2UgYGBjZXJ0ZmlsZWBgLCBgYGtleWZpbGVgYCBhbmQgYGBjaGVja19ob3N0bmFtZWBgCitpbiA6bW9kOmBmdHBsaWJgLCA6bW9kOmBodHRwLmNsaWVudGAsIDptb2Q6YGltYXBsaWJgLCA6bW9kOmBwb3BsaWJgLAorYW5kIDptb2Q6YHNtdHBsaWJgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBgY29udGV4dGBgLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODAyMmAuKQorCitBIGNvdXBsZSBvZiBwcm90b2NvbHMgYW5kIGZ1bmN0aW9ucyBvZiB0aGUgOm1vZDpgc3NsYCBtb2R1bGUgYXJlIG5vdworZGVwcmVjYXRlZC4gU29tZSBmZWF0dXJlcyB3aWxsIG5vIGxvbmdlciBiZSBhdmFpbGFibGUgaW4gZnV0dXJlIHZlcnNpb25zCitvZiBPcGVuU1NMLiBPdGhlciBmZWF0dXJlcyBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBhIGRpZmZlcmVudCBBUEkuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDIyYCBhbmQgOmlzc3VlOmAyNjQ3MGAuKQorCit0a2ludGVyCit+fn5+fn5+CisKK1RoZSA6bW9kOmB0a2ludGVyLnRpeGAgbW9kdWxlIGlzIG5vdyBkZXByZWNhdGVkLiAgOm1vZDpgdGtpbnRlcmAgdXNlcnMKK3Nob3VsZCB1c2UgOm1vZDpgdGtpbnRlci50dGtgIGluc3RlYWQuCisKK3ZlbnYKK35+fn4KKworVGhlIGBgcHl2ZW52YGAgc2NyaXB0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGBgcHl0aG9uMyAtbSB2ZW52YGAuCitUaGlzIHByZXZlbnRzIGNvbmZ1c2lvbiBhcyB0byB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciBgYHB5dmVudmBgIGlzCitjb25uZWN0ZWQgdG8gYW5kIHRodXMgd2hhdCBQeXRob24gaW50ZXJwcmV0ZXIgd2lsbCBiZSB1c2VkIGJ5IHRoZSB2aXJ0dWFsCitlbnZpcm9ubWVudC4gIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTE1NGAuKQorCisKK0RlcHJlY2F0ZWQgZnVuY3Rpb25zIGFuZCB0eXBlcyBvZiB0aGUgQyBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVW5kb2N1bWVudGVkIGZ1bmN0aW9ucyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0YCwKKzpjOmZ1bmM6YFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3RgLCA6YzpmdW5jOmBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZWAKK2FuZCA6YzpmdW5jOmBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZWAgYXJlIGRlcHJlY2F0ZWQgbm93LgorVXNlIDpyZWY6YGdlbmVyaWMgY29kZWMgYmFzZWQgQVBJIDxjb2RlYy1yZWdpc3RyeT5gIGluc3RlYWQuCisKKworRGVwcmVjYXRlZCBCdWlsZCBPcHRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGBgLS13aXRoLXN5c3RlbS1mZmlgYCBjb25maWd1cmUgZmxhZyBpcyBub3cgb24gYnkgZGVmYXVsdCBvbiBub24tbWFjT1MKK1VOSVggcGxhdGZvcm1zLiAgSXQgbWF5IGJlIGRpc2FibGVkIGJ5IHVzaW5nIGBgLS13aXRob3V0LXN5c3RlbS1mZmlgYCwgYnV0Cit1c2luZyB0aGUgZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIG5vdCBiZSBhY2NlcHRlZCBpbiBQeXRob24gMy43LgorbWFjT1MgaXMgdW5hZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gIE5vdGUgdGhhdCBtYW55IE9TIGRpc3RyaWJ1dG9ycyBhbHJlYWR5Cit1c2UgdGhlIGBgLS13aXRoLXN5c3RlbS1mZmlgYCBmbGFnIHdoZW4gYnVpbGRpbmcgdGhlaXIgc3lzdGVtIFB5dGhvbi4KKworCitSZW1vdmVkCis9PT09PT09CisKK0FQSSBhbmQgRmVhdHVyZSBSZW1vdmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyIGluCisgIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2lsbCBub3cgY2F1c2UgYW4gZXJyb3IuICBUaGUgOmNvbnN0OmByZS5MT0NBTEVgCisgIGZsYWcgY2FuIG5vdyBvbmx5IGJlIHVzZWQgd2l0aCBiaW5hcnkgcGF0dGVybnMuCisKKyogYGBpbnNwZWN0LmdldG1vZHVsZWluZm8oKWBgIHdhcyByZW1vdmVkICh3YXMgZGVwcmVjYXRlZCBzaW5jZSBDUHl0aG9uIDMuMykuCisgIDpmdW5jOmBpbnNwZWN0LmdldG1vZHVsZW5hbWVgIHNob3VsZCBiZSB1c2VkIGZvciBvYnRhaW5pbmcgdGhlIG1vZHVsZQorICBuYW1lIGZvciBhIGdpdmVuIHBhdGguCisgIChDb250cmlidXRlZCBieSBZdXJ5IFNlbGl2YW5vdiBpbiA6aXNzdWU6YDEzMjQ4YC4pCisKKyogYGB0cmFjZWJhY2suSWdub3JlYGAgY2xhc3MgYW5kIGBgdHJhY2ViYWNrLnVzYWdlYGAsIGBgdHJhY2ViYWNrLm1vZG5hbWVgYCwKKyAgYGB0cmFjZWJhY2suZnVsbG1vZG5hbWVgYCwgYGB0cmFjZWJhY2suZmluZF9saW5lc19mcm9tX2NvZGVgYCwKKyAgYGB0cmFjZWJhY2suZmluZF9saW5lc2BgLCBgYHRyYWNlYmFjay5maW5kX3N0cmluZ3NgYCwKKyAgYGB0cmFjZWJhY2suZmluZF9leGVjdXRhYmxlX2xpbmVzYGAgbWV0aG9kcyB3ZXJlIHJlbW92ZWQgZnJvbSB0aGUKKyAgOm1vZDpgdHJhY2ViYWNrYCBtb2R1bGUuIFRoZXkgd2VyZSB1bmRvY3VtZW50ZWQgbWV0aG9kcyBkZXByZWNhdGVkIHNpbmNlCisgIFB5dGhvbiAzLjIgYW5kIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgZnJvbSBwcml2YXRlIG1ldGhvZHMuCisKKyogVGhlIGBgdGtfbWVudUJhcigpYGAgYW5kIGBgdGtfYmluZEZvclRyYXZlcnNhbCgpYGAgZHVtbXkgbWV0aG9kcyBpbgorICA6bW9kOmB0a2ludGVyYCB3aWRnZXQgY2xhc3NlcyB3ZXJlIHJlbW92ZWQgKGNvcnJlc3BvbmRpbmcgVGsgY29tbWFuZHMKKyAgd2VyZSBvYnNvbGV0ZSBzaW5jZSBUayA0LjApLgorCisqIFRoZSA6bWV0aDpgfnppcGZpbGUuWmlwRmlsZS5vcGVuYCBtZXRob2Qgb2YgdGhlIDpjbGFzczpgemlwZmlsZS5aaXBGaWxlYAorICBjbGFzcyBubyBsb25nZXIgc3VwcG9ydHMgdGhlIGBgJ1UnYGAgbW9kZSAod2FzIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuNCkuCisgIFVzZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGZvciByZWFkaW5nIGNvbXByZXNzZWQgdGV4dCBmaWxlcyBpbgorICA6dGVybTpgdW5pdmVyc2FsIG5ld2xpbmVzYCBtb2RlLgorCisqIFRoZSB1bmRvY3VtZW50ZWQgYGBJTmBgLCBgYENEUk9NYGAsIGBgRExGQ05gYCwgYGBUWVBFU2BgLCBgYENESU9gYCwgYW5kCisgIGBgU1RST1BUU2BgIG1vZHVsZXMgaGF2ZSBiZWVuIHJlbW92ZWQuICBUaGV5IGhhZCBiZWVuIGF2YWlsYWJsZSBpbiB0aGUKKyAgcGxhdGZvcm0gc3BlY2lmaWMgYGBMaWIvcGxhdC0qL2BgIGRpcmVjdG9yaWVzLCBidXQgd2VyZSBjaHJvbmljYWxseSBvdXQgb2YKKyAgZGF0ZSwgaW5jb25zaXN0ZW50bHkgYXZhaWxhYmxlIGFjcm9zcyBwbGF0Zm9ybXMsIGFuZCB1bm1haW50YWluZWQuICBUaGUKKyAgc2NyaXB0IHRoYXQgY3JlYXRlZCB0aGVzZSBtb2R1bGVzIGlzIHN0aWxsIGF2YWlsYWJsZSBpbiB0aGUgc291cmNlCisgIGRpc3RyaWJ1dGlvbiBhdCA6c291cmNlOmBUb29scy9zY3JpcHRzL2gycHkucHlgLgorCisqIFRoZSBkZXByZWNhdGVkIGBgYXN5bmNoYXQuZmlmb2BgIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQuCisKKworUG9ydGluZyB0byBQeXRob24gMy42Cis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCitDaGFuZ2VzIGluICdweXRob24nIENvbW1hbmQgQmVoYXZpb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgYGBDT1VOVF9BTExPQ1NgYCwKKyAgYGBTSE9XX0FMTE9DX0NPVU5UYGAgb3IgYGBTSE9XX1RSQUNLX0NPVU5UYGAgbWFjcm9zIGlzIG5vdyBvZmYgYnkKKyAgZGVmYXVsdC4gIEl0IGNhbiBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSBgYC1YIHNob3dhbGxvY2NvdW50YGAgb3B0aW9uLgorICBJdCBub3cgb3V0cHV0cyB0byBgYHN0ZGVycmBgIGluc3RlYWQgb2YgYGBzdGRvdXRgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzAzNGAuKQorCisKK0NoYW5nZXMgaW4gdGhlIFB5dGhvbiBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6ZnVuYzpgb3BlbigpIDxvcGVuPmAgd2lsbCBubyBsb25nZXIgYWxsb3cgY29tYmluaW5nIHRoZSBgYCdVJ2BgIG1vZGUgZmxhZworICB3aXRoIGBgJysnYGAuCisgIChDb250cmlidXRlZCBieSBKZWZmIEJhbG9naCBhbmQgSm9obiBPJ0Nvbm5vciBpbiA6aXNzdWU6YDIwOTFgLikKKworKiA6bW9kOmBzcWxpdGUzYCBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbiBiZWZvcmUgRERMCisgIHN0YXRlbWVudHMuCisKKyogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LgorCisqIFdoZW4gOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpcyBkZWZpbmVkLAorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKKyogOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIG5vdyBzZXRzIDpleGM6YFR5cGVFcnJvcmAgd2hlbiBpdHMgKiptc2cqKgorICBhcmd1bWVudCBpcyBub3Qgc2V0LiBQcmV2aW91c2x5IG9ubHkgYGBOVUxMYGAgd2FzIHJldHVybmVkLgorCisqIFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cyBjaGFuZ2VkIHRvIHN1cHBvcnQKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEJ5IGRlZmF1bHQsIFB5dGhvbiBkb2VzIG5vdCBlbWl0IGJ5dGVjb2RlIHdpdGgKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEZ1bmN0aW9ucyB1c2luZyBgYGZyYW1lLmZfbGluZW5vYGAsCisgIGBgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKClgYCBvciBgYFB5Q29kZV9BZGRyMkxpbmUoKWBgIGFyZSBub3QgYWZmZWN0ZWQuCisgIEZ1bmN0aW9ucyBkZWNvZGluZyBkaXJlY3RseSBgYGNvX2xub3RhYmBgIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZSBhIHNpZ25lZAorICA4LWJpdCBpbnRlZ2VyIHR5cGUgZm9yIHRoZSBsaW5lIG51bWJlciBkZWx0YSwgYnV0IGl0J3Mgb25seSByZXF1aXJlZCB0bworICBzdXBwb3J0IGFwcGxpY2F0aW9ucyB1c2luZyBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gU2VlCisgIGBgT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0YGAgZm9yIHRoZSBgYGNvX2xub3RhYmBgIGZvcm1hdCBhbmQgaG93IHRvIGRlY29kZQorICBpdCwgYW5kIHNlZSB0aGUgOnBlcDpgNTExYCBmb3IgdGhlIHJhdGlvbmFsZS4KKworKiBUaGUgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBjb21waWxlYWxsYCBtb2R1bGUgbm93IHJldHVybiBib29sZWFucyBpbnN0ZWFkCisgIG9mIGBgMWBgIG9yIGBgMGBgIHRvIHJlcHJlc2VudCBzdWNjZXNzIG9yIGZhaWx1cmUsIHJlc3BlY3RpdmVseS4gVGhhbmtzIHRvCisgIGJvb2xlYW5zIGJlaW5nIGEgc3ViY2xhc3Mgb2YgaW50ZWdlcnMsIHRoaXMgc2hvdWxkIG9ubHkgYmUgYW4gaXNzdWUgaWYgeW91CisgIHdlcmUgZG9pbmcgaWRlbnRpdHkgY2hlY2tzIGZvciBgYDFgYCBvciBgYDBgYC4gU2VlIDppc3N1ZTpgMjU3NjhgLgorCisqIFJlYWRpbmcgdGhlIDphdHRyOmB+dXJsbGliLnBhcnNlLlNwbGl0UmVzdWx0LnBvcnRgIGF0dHJpYnV0ZSBvZgorICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybHNwbGl0YCBhbmQgOmZ1bmM6YH51cmxsaWIucGFyc2UudXJscGFyc2VgIHJlc3VsdHMKKyAgbm93IHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcywgcmF0aGVyIHRoYW4KKyAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuICBTZWUgOmlzc3VlOmAyMDA1OWAuCisKKyogVGhlIDptb2Q6YGltcGAgbW9kdWxlIG5vdyByYWlzZXMgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGluc3RlYWQgb2YKKyAgOmV4YzpgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2AuCisKKyogVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgaGFkIG1pc3NpbmcgQVBJcyBhZGRlZCB0byB0aGVpciA6YXR0cjpgX19hbGxfX2AKKyAgYXR0cmlidXRlcyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzOgorICA6bW9kOmBjYWxlbmRhcmAsIDptb2Q6YGNnaWAsIDptb2Q6YGNzdmAsCisgIDptb2Q6YH54bWwuZXRyZWUuRWxlbWVudFRyZWVgLCA6bW9kOmBlbnVtYCwKKyAgOm1vZDpgZmlsZWlucHV0YCwgOm1vZDpgZnRwbGliYCwgOm1vZDpgbG9nZ2luZ2AsIDptb2Q6YG1haWxib3hgLAorICA6bW9kOmBtaW1ldHlwZXNgLCA6bW9kOmBvcHRwYXJzZWAsIDptb2Q6YHBsaXN0bGliYCwgOm1vZDpgc210cGRgLAorICA6bW9kOmBzdWJwcm9jZXNzYCwgOm1vZDpgdGFyZmlsZWAsIDptb2Q6YHRocmVhZGluZ2AgYW5kCisgIDptb2Q6YHdhdmVgLiAgVGhpcyBtZWFucyB0aGV5IHdpbGwgZXhwb3J0IG5ldyBzeW1ib2xzIHdoZW4gYGBpbXBvcnQgKmBgCisgIGlzIHVzZWQuCisgIChDb250cmlidXRlZCBieSBKb2VsIFRhZGRlaSBhbmQgSmFjZWsgS2/Fgm9kemllaiBpbiA6aXNzdWU6YDIzODgzYC4pCisKKyogV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBpZiBgYF9fcGFja2FnZV9fYGAgZG9lcyBub3QgY29tcGFyZSBlcXVhbAorICB0byBgYF9fc3BlY19fLnBhcmVudGBgIHRoZW4gOmV4YzpgSW1wb3J0V2FybmluZ2AgaXMgcmFpc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU3OTFgLikKKworKiBXaGVuIGEgcmVsYXRpdmUgaW1wb3J0IGlzIHBlcmZvcm1lZCBhbmQgbm8gcGFyZW50IHBhY2thZ2UgaXMga25vd24sIHRoZW4KKyAgOmV4YzpgSW1wb3J0RXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBQcmV2aW91c2x5LCA6ZXhjOmBTeXN0ZW1FcnJvcmAgY291bGQgYmUKKyAgcmFpc2VkLiAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTgwMThgLikKKworKiBTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCisgIGRlZmluZWQgaW4gOm1vZDpgaHR0cC5zZXJ2ZXJgLCA6bW9kOmB4bWxycGMuc2VydmVyYCBhbmQKKyAgOm1vZDpgd3NnaXJlZi5zaW1wbGVfc2VydmVyYCwgbm93IG9ubHkgY2F0Y2ggZXhjZXB0aW9ucyBkZXJpdmVkCisgIGZyb20gOmV4YzpgRXhjZXB0aW9uYC4gVGhlcmVmb3JlIGlmIGEgcmVxdWVzdCBoYW5kbGVyIHJhaXNlcworICBhbiBleGNlcHRpb24gbGlrZSA6ZXhjOmBTeXN0ZW1FeGl0YCBvciA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAsCisgIDptZXRoOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuaGFuZGxlX2Vycm9yYCBpcyBubyBsb25nZXIgY2FsbGVkLCBhbmQKKyAgdGhlIGV4Y2VwdGlvbiB3aWxsIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQgc2VydmVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDIzNDMwYC4pCisKKyogOmZ1bmM6YHNwd2QuZ2V0c3BuYW1gIG5vdyByYWlzZXMgYSA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgIGluc3RlYWQgb2YKKyAgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCisqIFRoZSA6bWV0aDpgc29ja2V0LnNvY2tldC5jbG9zZWAgbWV0aG9kIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmCisgIGFuIGVycm9yIChlLmcuIGBgRUJBREZgYCkgd2FzIHJlcG9ydGVkIGJ5IHRoZSB1bmRlcmx5aW5nIHN5c3RlbSBjYWxsLgorICAoQ29udHJpYnV0ZWQgYnkgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDI2Njg1YC4pCisKKyogVGhlICpkZWNvZGVfZGF0YSogYXJndW1lbnQgZm9yIDpjbGFzczpgc210cGQuU01UUENoYW5uZWxgIGFuZAorICA6Y2xhc3M6YHNtdHBkLlNNVFBTZXJ2ZXJgIGNvbnN0cnVjdG9ycyBpcyBub3cgYGBGYWxzZWBgIGJ5IGRlZmF1bHQuCisgIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXJndW1lbnQgcGFzc2VkIHRvCisgIDptZXRoOmB+c210cGQuU01UUFNlcnZlci5wcm9jZXNzX21lc3NhZ2VgIGlzIG5vdyBhIGJ5dGVzIG9iamVjdCBieQorICBkZWZhdWx0LCBhbmQgYGBwcm9jZXNzX21lc3NhZ2UoKWBgIHdpbGwgYmUgcGFzc2VkIGtleXdvcmQgYXJndW1lbnRzLgorICBDb2RlIHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1cGRhdGVkIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgZGVwcmVjYXRpb24KKyAgd2FybmluZyBnZW5lcmF0ZWQgYnkgMy41IHdpbGwgbm90IGJlIGFmZmVjdGVkLgorCisqIEFsbCBvcHRpb25hbCBhcmd1bWVudHMgb2YgdGhlIDpmdW5jOmB+anNvbi5kdW1wYCwgOmZ1bmM6YH5qc29uLmR1bXBzYCwKKyAgOmZ1bmM6YH5qc29uLmxvYWRgIGFuZCA6ZnVuYzpgfmpzb24ubG9hZHNgIGZ1bmN0aW9ucyBhbmQKKyAgOmNsYXNzOmB+anNvbi5KU09ORW5jb2RlcmAgYW5kIDpjbGFzczpgfmpzb24uSlNPTkRlY29kZXJgIGNsYXNzCisgIGNvbnN0cnVjdG9ycyBpbiB0aGUgOm1vZDpganNvbmAgbW9kdWxlIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5CisgIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTg3MjZgLikKKworKiBTdWJjbGFzc2VzIG9mIDpjbGFzczpgdHlwZWAgd2hpY2ggZG9uJ3Qgb3ZlcnJpZGUgYGB0eXBlLl9fbmV3X19gYCBtYXkgbm8KKyAgbG9uZ2VyIHVzZSB0aGUgb25lLWFyZ3VtZW50IGZvcm0gdG8gZ2V0IHRoZSB0eXBlIG9mIGFuIG9iamVjdC4KKworKiBBcyBwYXJ0IG9mIDpwZXA6YDQ4N2AsIHRoZSBoYW5kbGluZyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgOmNsYXNzOmB0eXBlYCAob3RoZXIgdGhhbiB0aGUgbWV0YWNsYXNzIGhpbnQsIGBgbWV0YWNsYXNzYGApIGlzIG5vdworICBjb25zaXN0ZW50bHkgZGVsZWdhdGVkIHRvIDptZXRoOmBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gLiBUaGlzIG1lYW5zIHRoYXQKKyAgOm1ldGg6YHR5cGUuX19uZXdfX2AgYW5kIDptZXRoOmB0eXBlLl9faW5pdF9fYCBib3RoIG5vdyBhY2NlcHQgYXJiaXRyYXJ5CisgIGtleXdvcmQgYXJndW1lbnRzLCBidXQgOm1ldGg6YG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2AgKHdoaWNoIGlzIGNhbGxlZCBmcm9tCisgIDptZXRoOmB0eXBlLl9fbmV3X19gKSB3aWxsIHJlamVjdCB0aGVtIGJ5IGRlZmF1bHQuIEN1c3RvbSBtZXRhY2xhc3NlcworICBhY2NlcHRpbmcgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyB3aWxsIG5lZWQgdG8gYWRqdXN0IHRoZWlyIGNhbGxzIHRvCisgIDptZXRoOmB0eXBlLl9fbmV3X19gICh3aGV0aGVyIGRpcmVjdCBvciB2aWEgOmNsYXNzOmBzdXBlcmApIGFjY29yZGluZ2x5LgorCisqIEluIDpjbGFzczpgZGlzdHV0aWxzLmNvbW1hbmQuc2Rpc3Quc2Rpc3RgLCB0aGUgYGBkZWZhdWx0X2Zvcm1hdGBgCisgIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGFuZCBpcyBubyBsb25nZXIgaG9ub3JlZC4gSW5zdGVhZCwgdGhlCisgIGd6aXBwZWQgdGFyZmlsZSBmb3JtYXQgaXMgdGhlIGRlZmF1bHQgb24gYWxsIHBsYXRmb3JtcyBhbmQgbm8KKyAgcGxhdGZvcm0tc3BlY2lmaWMgc2VsZWN0aW9uIGlzIG1hZGUuCisgIEluIGVudmlyb25tZW50cyB3aGVyZSBkaXN0cmlidXRpb25zIGFyZQorICBidWlsdCBvbiBXaW5kb3dzIGFuZCB6aXAgZGlzdHJpYnV0aW9ucyBhcmUgcmVxdWlyZWQsIGNvbmZpZ3VyZQorICB0aGUgcHJvamVjdCB3aXRoIGEgYGBzZXR1cC5jZmdgYCBmaWxlIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZzo6CisKKyAgICBbc2Rpc3RdCisgICAgZm9ybWF0cz16aXAKKworICBUaGlzIGJlaGF2aW9yIGhhcyBhbHNvIGJlZW4gYmFja3BvcnRlZCB0byBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucworICBieSBTZXR1cHRvb2xzIDI2LjAuMC4KKworKiBJbiB0aGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBhbmQgdGhlCisgIDptZXRoOmBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0YCBtZXRob2QsIGlmIG5vIENvbnRlbnQtTGVuZ3RoCisgIGhlYWRlciBmaWVsZCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIHRoZSByZXF1ZXN0IGJvZHkgaXMgYSBmaWxlIG9iamVjdCwKKyAgaXQgaXMgbm93IHNlbnQgd2l0aCBIVFRQIDEuMSBjaHVua2VkIGVuY29kaW5nLiBJZiBhIGZpbGUgb2JqZWN0IGhhcyB0bworICBiZSBzZW50IHRvIGEgSFRUUCAxLjAgc2VydmVyLCB0aGUgQ29udGVudC1MZW5ndGggdmFsdWUgbm93IGhhcyB0byBiZQorICBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IERlbWlhbiBCcmVjaHQgYW5kIFJvbGYgS3JhaGwgd2l0aCB0d2Vha3MgZnJvbQorICBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMTIzMTlgLikKKworKiBUaGUgOmNsYXNzOmB+Y3N2LkRpY3RSZWFkZXJgIG5vdyByZXR1cm5zIHJvd3Mgb2YgdHlwZQorICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5PcmRlcmVkRGljdGAuCisgIChDb250cmlidXRlZCBieSBTdGV2ZSBIb2xkZW4gaW4gOmlzc3VlOmAyNzg0MmAuKQorCisqIFRoZSA6Y29uc3Q6YGNyeXB0Lk1FVEhPRF9DUllQVGAgd2lsbCBubyBsb25nZXIgYmUgYWRkZWQgdG8gYGBjcnlwdC5tZXRob2RzYGAKKyAgaWYgdW5zdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTI4N2AuKQorCisqIFRoZSAqdmVyYm9zZSogYW5kICpyZW5hbWUqIGFyZ3VtZW50cyBmb3IKKyAgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYCBhcmUgbm93IGtleXdvcmQtb25seS4KKyAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyIGluIDppc3N1ZTpgMjU2MjhgLikKKworKiBPbiBMaW51eCwgOmZ1bmM6YGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeWAgbm93IGxvb2tzIGluCisgIGBgTERfTElCUkFSWV9QQVRIYGAgZm9yIHNoYXJlZCBsaWJyYXJpZXMuCisgIChDb250cmlidXRlZCBieSBWaW5heSBTYWppcCBpbiA6aXNzdWU6YDk5OThgLikKKworKiBUaGUgOmNsYXNzOmBpbWFwbGliLklNQVA0YCBjbGFzcyBub3cgaGFuZGxlcyBmbGFncyBjb250YWluaW5nIHRoZQorICBgYCddJ2BgIGNoYXJhY3RlciBpbiBtZXNzYWdlcyBzZW50IGZyb20gdGhlIHNlcnZlciB0byBpbXByb3ZlCisgIHJlYWwtd29ybGQgY29tcGF0aWJpbGl0eS4KKyAgKENvbnRyaWJ1dGVkIGJ5IExpdGEgQ2hvIGluIDppc3N1ZTpgMjE4MTVgLikKKworKiBUaGUgOmZ1bmM6YG1tYXAud3JpdGUoKSA8bW1hcC53cml0ZT5gIGZ1bmN0aW9uIG5vdyByZXR1cm5zIHRoZSBudW1iZXIKKyAgb2YgYnl0ZXMgd3JpdHRlbiBsaWtlIG90aGVyIHdyaXRlIG1ldGhvZHMuCisgIChDb250cmlidXRlZCBieSBKYWt1YiBTdGFzaWFrIGluIDppc3N1ZTpgMjYzMzVgLikKKworKiBUaGUgOmZ1bmM6YHBrZ3V0aWwuaXRlcl9tb2R1bGVzYCBhbmQgOmZ1bmM6YHBrZ3V0aWwud2Fsa19wYWNrYWdlc2AKKyAgZnVuY3Rpb25zIG5vdyByZXR1cm4gOmNsYXNzOmB+cGtndXRpbC5Nb2R1bGVJbmZvYCBuYW1lZCB0dXBsZXMuCisgIChDb250cmlidXRlZCBieSBSYW1jaGFuZHJhIEFwdGUgaW4gOmlzc3VlOmAxNzIxMWAuKQorCisqIDpmdW5jOmByZS5zdWJgIG5vdyByYWlzZXMgYW4gZXJyb3IgZm9yIGludmFsaWQgbnVtZXJpY2FsIGdyb3VwCisgIHJlZmVyZW5jZSBpbiByZXBsYWNlbWVudCB0ZW1wbGF0ZSBldmVuIGlmIHRoZSBwYXR0ZXJuIGlzIG5vdAorICBmb3VuZCBpbiB0aGUgc3RyaW5nLiAgRXJyb3IgbWVzc2FnZSBmb3IgaW52YWxpZCBncm91cCByZWZlcmVuY2UKKyAgbm93IGluY2x1ZGVzIHRoZSBncm91cCBpbmRleCBhbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSByZWZlcmVuY2UuCisgIChDb250cmlidXRlZCBieSBTaWxlbnRHaG9zdCwgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI1OTUzYC4pCisKKyogOmNsYXNzOmB6aXBmaWxlLlppcEZpbGVgIHdpbGwgbm93IHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGZvcgorICB1bnJlY29nbml6ZWQgY29tcHJlc3Npb24gdmFsdWVzLiAgUHJldmlvdXNseSBhIHBsYWluIDpleGM6YFJ1bnRpbWVFcnJvcmAKKyAgd2FzIHJhaXNlZC4gIEFkZGl0aW9uYWxseSwgY2FsbGluZyA6Y2xhc3M6YH56aXBmaWxlLlppcEZpbGVgIG1ldGhvZHMgb3IKKyAgb24gYSBjbG9zZWQgWmlwRmlsZSBvciBjYWxsaW5nIDptZXRoOmB+emlwZmlsZS5aaXBGaWxlLndyaXRlYCBtZXRob2RzCisgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQgaW4gdGhvc2Ugc2NlbmFyaW9zLgorCisKK0NoYW5nZXMgaW4gdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgYWxsb2NhdG9yIGZhbWlseSBub3cgdXNlcyB0aGUgOnJlZjpgcHltYWxsb2MgYWxsb2NhdG9yCisgIDxweW1hbGxvYz5gIHJhdGhlciB0aGFuIHN5c3RlbSA6YzpmdW5jOmBtYWxsb2NgLiBBcHBsaWNhdGlvbnMgY2FsbGluZworICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMIGNhbiBub3cgY3Jhc2guIFNldCB0aGUKKyAgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBgYGRlYnVnYGAgdG8gdmFsaWRhdGUgdGhlCisgIHVzYWdlIG9mIG1lbW9yeSBhbGxvY2F0b3JzIGluIHlvdXIgYXBwbGljYXRpb24uIFNlZSA6aXNzdWU6YDI2MjQ5YC4KKworKiA6YzpmdW5jOmBQeV9FeGl0YCAoYW5kIHRoZSBtYWluIGludGVycHJldGVyKSBub3cgb3ZlcnJpZGUgdGhlIGV4aXQgc3RhdHVzCisgIHdpdGggMTIwIGlmIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEgZmFpbGVkLiAgU2VlIDppc3N1ZTpgNTMxOWAuCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0IGIvRG9jL3doYXRzbmV3L2luZGV4LnJzdAppbmRleCBlZGI1NTAyLi43YzkyNTI0IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CisrKyBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKQEAgLTExLDYgKzExLDcgQEAKIC4uIHRvY3RyZWU6OgogICAgOm1heGRlcHRoOiAyCiAKKyAgIDMuNi5yc3QKICAgIDMuNS5yc3QKICAgIDMuNC5yc3QKICAgIDMuMy5yc3QKZGlmZiAtLWdpdCBhL0dyYW1tYXIvR3JhbW1hciBiL0dyYW1tYXIvR3JhbW1hcgppbmRleCA0MzA3NTIzLi5iMTM5ZTlmIDEwMDY0NAotLS0gYS9HcmFtbWFyL0dyYW1tYXIKKysrIGIvR3JhbW1hci9HcmFtbWFyCkBAIC0yNywyNSArMjcsMzEgQEAKIGZ1bmNkZWY6ICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKIAogcGFyYW1ldGVyczogJygnIFt0eXBlZGFyZ3NsaXN0XSAnKScKLXR5cGVkYXJnc2xpc3Q6ICh0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJwotICAgICAgIFsnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwgJyoqJyB0ZnBkZWZdXQotICAgICB8ICAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdIHwgJyoqJyB0ZnBkZWYpCit0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgICAgIHwgJyoqJyB0ZnBkZWYgWycsJ11dXQorICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICB8ICcqKicgdGZwZGVmIFsnLCddKQogdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLXZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKLSAgICAgICBbJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmXV0KLSAgICAgfCAgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmKQordmFyYXJnc2xpc3Q6ICh2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbCisgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgfCAnKionIHZmcGRlZiBbJywnXV1dCisgIHwgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHZmcGRlZiBbJywnXV1dCisgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKykKIHZmcGRlZjogTkFNRQogCiBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKIHNpbXBsZV9zdG10OiBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKIHNtYWxsX3N0bXQ6IChleHByX3N0bXQgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8CiAgICAgICAgICAgICAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IG5vbmxvY2FsX3N0bXQgfCBhc3NlcnRfc3RtdCkKLWV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKK2V4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhbm5hc3NpZ24gfCBhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10KIGF1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CiAgICAgICAgICAgICAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JykKLSMgRm9yIG5vcm1hbCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCisjIEZvciBub3JtYWwgYW5kIGFubm90YXRlZCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCiBkZWxfc3RtdDogJ2RlbCcgZXhwcmxpc3QKIHBhc3Nfc3RtdDogJ3Bhc3MnCiBmbG93X3N0bXQ6IGJyZWFrX3N0bXQgfCBjb250aW51ZV9zdG10IHwgcmV0dXJuX3N0bXQgfCByYWlzZV9zdG10IHwgeWllbGRfc3RtdApAQCAtMTQwLDcgKzE0Niw3IEBACiAgICAgICAgICAgICAnKicgdGVzdCApCiAKIGNvbXBfaXRlcjogY29tcF9mb3IgfCBjb21wX2lmCi1jb21wX2ZvcjogJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCitjb21wX2ZvcjogW0FTWU5DXSAnZm9yJyBleHBybGlzdCAnaW4nIG9yX3Rlc3QgW2NvbXBfaXRlcl0KIGNvbXBfaWY6ICdpZicgdGVzdF9ub2NvbmQgW2NvbXBfaXRlcl0KIAogIyBub3QgdXNlZCBpbiBncmFtbWFyLCBidXQgbWF5IGFwcGVhciBpbiAibm9kZSIgcGFzc2VkIGZyb20gUGFyc2VyIHRvIENvbXBpbGVyCmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi1hc3QuaCBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCmluZGV4IDJkM2VhY2IuLjcwNDk0YjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCkBAIC02NSwxMSArNjUsMTIgQEAKIAogZW51bSBfc3RtdF9raW5kIHtGdW5jdGlvbkRlZl9raW5kPTEsIEFzeW5jRnVuY3Rpb25EZWZfa2luZD0yLCBDbGFzc0RlZl9raW5kPTMsCiAgICAgICAgICAgICAgICAgICBSZXR1cm5fa2luZD00LCBEZWxldGVfa2luZD01LCBBc3NpZ25fa2luZD02LAotICAgICAgICAgICAgICAgICAgQXVnQXNzaWduX2tpbmQ9NywgRm9yX2tpbmQ9OCwgQXN5bmNGb3Jfa2luZD05LCBXaGlsZV9raW5kPTEwLAotICAgICAgICAgICAgICAgICAgSWZfa2luZD0xMSwgV2l0aF9raW5kPTEyLCBBc3luY1dpdGhfa2luZD0xMywgUmFpc2Vfa2luZD0xNCwKLSAgICAgICAgICAgICAgICAgIFRyeV9raW5kPTE1LCBBc3NlcnRfa2luZD0xNiwgSW1wb3J0X2tpbmQ9MTcsCi0gICAgICAgICAgICAgICAgICBJbXBvcnRGcm9tX2tpbmQ9MTgsIEdsb2JhbF9raW5kPTE5LCBOb25sb2NhbF9raW5kPTIwLAotICAgICAgICAgICAgICAgICAgRXhwcl9raW5kPTIxLCBQYXNzX2tpbmQ9MjIsIEJyZWFrX2tpbmQ9MjMsIENvbnRpbnVlX2tpbmQ9MjR9OworICAgICAgICAgICAgICAgICAgQXVnQXNzaWduX2tpbmQ9NywgQW5uQXNzaWduX2tpbmQ9OCwgRm9yX2tpbmQ9OSwKKyAgICAgICAgICAgICAgICAgIEFzeW5jRm9yX2tpbmQ9MTAsIFdoaWxlX2tpbmQ9MTEsIElmX2tpbmQ9MTIsIFdpdGhfa2luZD0xMywKKyAgICAgICAgICAgICAgICAgIEFzeW5jV2l0aF9raW5kPTE0LCBSYWlzZV9raW5kPTE1LCBUcnlfa2luZD0xNiwKKyAgICAgICAgICAgICAgICAgIEFzc2VydF9raW5kPTE3LCBJbXBvcnRfa2luZD0xOCwgSW1wb3J0RnJvbV9raW5kPTE5LAorICAgICAgICAgICAgICAgICAgR2xvYmFsX2tpbmQ9MjAsIE5vbmxvY2FsX2tpbmQ9MjEsIEV4cHJfa2luZD0yMiwgUGFzc19raW5kPTIzLAorICAgICAgICAgICAgICAgICAgQnJlYWtfa2luZD0yNCwgQ29udGludWVfa2luZD0yNX07CiBzdHJ1Y3QgX3N0bXQgewogICAgIGVudW0gX3N0bXRfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTExOCw2ICsxMTksMTMgQEAKICAgICAgICAgCiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICBpbnQgc2ltcGxlOworICAgICAgICB9IEFubkFzc2lnbjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBleHByX3R5IHRhcmdldDsKICAgICAgICAgICAgIGV4cHJfdHkgaXRlcjsKICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgYXNkbF9zZXEgKm9yZWxzZTsKQEAgLTIwMSw5ICsyMDksMTAgQEAKICAgICAgICAgICAgICAgICAgIFNldENvbXBfa2luZD05LCBEaWN0Q29tcF9raW5kPTEwLCBHZW5lcmF0b3JFeHBfa2luZD0xMSwKICAgICAgICAgICAgICAgICAgIEF3YWl0X2tpbmQ9MTIsIFlpZWxkX2tpbmQ9MTMsIFlpZWxkRnJvbV9raW5kPTE0LAogICAgICAgICAgICAgICAgICAgQ29tcGFyZV9raW5kPTE1LCBDYWxsX2tpbmQ9MTYsIE51bV9raW5kPTE3LCBTdHJfa2luZD0xOCwKLSAgICAgICAgICAgICAgICAgIEJ5dGVzX2tpbmQ9MTksIE5hbWVDb25zdGFudF9raW5kPTIwLCBFbGxpcHNpc19raW5kPTIxLAotICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MjIsIFN1YnNjcmlwdF9raW5kPTIzLCBTdGFycmVkX2tpbmQ9MjQsCi0gICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjUsIExpc3Rfa2luZD0yNiwgVHVwbGVfa2luZD0yN307CisgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZV9raW5kPTE5LCBKb2luZWRTdHJfa2luZD0yMCwgQnl0ZXNfa2luZD0yMSwKKyAgICAgICAgICAgICAgICAgIE5hbWVDb25zdGFudF9raW5kPTIyLCBFbGxpcHNpc19raW5kPTIzLCBDb25zdGFudF9raW5kPTI0LAorICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MjUsIFN1YnNjcmlwdF9raW5kPTI2LCBTdGFycmVkX2tpbmQ9MjcsCisgICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjgsIExpc3Rfa2luZD0yOSwgVHVwbGVfa2luZD0zMH07CiBzdHJ1Y3QgX2V4cHIgewogICAgIGVudW0gX2V4cHJfa2luZCBraW5kOwogICAgIHVuaW9uIHsKQEAgLTI5Nyw2ICszMDYsMTYgQEAKICAgICAgICAgfSBTdHI7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgIGludCBjb252ZXJzaW9uOworICAgICAgICAgICAgZXhwcl90eSBmb3JtYXRfc3BlYzsKKyAgICAgICAgfSBGb3JtYXR0ZWRWYWx1ZTsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBhc2RsX3NlcSAqdmFsdWVzOworICAgICAgICB9IEpvaW5lZFN0cjsKKyAgICAgICAgCisgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBieXRlcyBzOwogICAgICAgICB9IEJ5dGVzOwogICAgICAgICAKQEAgLTMwNSw2ICszMjQsMTAgQEAKICAgICAgICAgfSBOYW1lQ29uc3RhbnQ7CiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgY29uc3RhbnQgdmFsdWU7CisgICAgICAgIH0gQ29uc3RhbnQ7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgIGlkZW50aWZpZXIgYXR0cjsKICAgICAgICAgICAgIGV4cHJfY29udGV4dF90eSBjdHg7CkBAIC0zNjYsNiArMzg5LDcgQEAKICAgICBleHByX3R5IHRhcmdldDsKICAgICBleHByX3R5IGl0ZXI7CiAgICAgYXNkbF9zZXEgKmlmczsKKyAgICBpbnQgaXNfYXN5bmM7CiB9OwogCiBlbnVtIF9leGNlcHRoYW5kbGVyX2tpbmQge0V4Y2VwdEhhbmRsZXJfa2luZD0xfTsKQEAgLTQ0Niw2ICs0NzAsOSBAQAogI2RlZmluZSBBdWdBc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0F1Z0Fzc2lnbihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogc3RtdF90eSBfUHlfQXVnQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBvcGVyYXRvcl90eSBvcCwgZXhwcl90eSB2YWx1ZSwgaW50CiAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBBbm5Bc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Bbm5Bc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCitzdG10X3R5IF9QeV9Bbm5Bc3NpZ24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgYW5ub3RhdGlvbiwgZXhwcl90eSB2YWx1ZSwgaW50CisgICAgICAgICAgICAgICAgICAgICAgc2ltcGxlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBGb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9Gb3IoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCiBzdG10X3R5IF9QeV9Gb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqCiAgICAgICAgICAgICAgICAgb3JlbHNlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNTQzLDYgKzU3MCwxMiBAQAogZXhwcl90eSBfUHlfTnVtKG9iamVjdCBuLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9TdHIoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9TdHIoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIEZvcm1hdHRlZFZhbHVlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9Gb3JtYXR0ZWRWYWx1ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQorZXhwcl90eSBfUHlfRm9ybWF0dGVkVmFsdWUoZXhwcl90eSB2YWx1ZSwgaW50IGNvbnZlcnNpb24sIGV4cHJfdHkgZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBKb2luZWRTdHIoYTAsIGExLCBhMiwgYTMpIF9QeV9Kb2luZWRTdHIoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Kb2luZWRTdHIoYXNkbF9zZXEgKiB2YWx1ZXMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hCisgICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQnl0ZXMoYTAsIGExLCBhMiwgYTMpIF9QeV9CeXRlcyhhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X0J5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIE5hbWVDb25zdGFudChhMCwgYTEsIGEyLCBhMykgX1B5X05hbWVDb25zdGFudChhMCwgYTEsIGEyLCBhMykKQEAgLTU1MCw2ICs1ODMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEVsbGlwc2lzKGEwLCBhMSwgYTIpIF9QeV9FbGxpcHNpcyhhMCwgYTEsIGEyKQogZXhwcl90eSBfUHlfRWxsaXBzaXMoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9Db25zdGFudChhMCwgYTEsIGEyLCBhMykKK2V4cHJfdHkgX1B5X0NvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgKmFyZW5hKTsKICNkZWZpbmUgQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdHRyaWJ1dGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4cHJfdHkgX1B5X0F0dHJpYnV0ZShleHByX3R5IHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dF90eSBjdHgsIGludAogICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTU3NCw5ICs2MTAsOSBAQAogc2xpY2VfdHkgX1B5X0V4dFNsaWNlKGFzZGxfc2VxICogZGltcywgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBJbmRleChhMCwgYTEpIF9QeV9JbmRleChhMCwgYTEpCiBzbGljZV90eSBfUHlfSW5kZXgoZXhwcl90eSB2YWx1ZSwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBjb21wcmVoZW5zaW9uKGEwLCBhMSwgYTIsIGEzKSBfUHlfY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMykKKyNkZWZpbmUgY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9jb21wcmVoZW5zaW9uKGEwLCBhMSwgYTIsIGEzLCBhNCkKIGNvbXByZWhlbnNpb25fdHkgX1B5X2NvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnMsIFB5QXJlbmEgKmFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzLCBpbnQgaXNfYXN5bmMsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRXhjZXB0SGFuZGxlcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfRXhjZXB0SGFuZGxlcihhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQogZXhjZXB0aGFuZGxlcl90eSBfUHlfRXhjZXB0SGFuZGxlcihleHByX3R5IHR5cGUsIGlkZW50aWZpZXIgbmFtZSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24uaCBiL0luY2x1ZGUvUHl0aG9uLmgKaW5kZXggODU4ZGJkMS4uNGM3YzlhNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9QeXRob24uaAorKysgYi9JbmNsdWRlL1B5dGhvbi5oCkBAIC0xMTYsNiArMTE2LDcgQEAKICNpbmNsdWRlICJweWxpZmVjeWNsZS5oIgogI2luY2x1ZGUgImNldmFsLmgiCiAjaW5jbHVkZSAic3lzbW9kdWxlLmgiCisjaW5jbHVkZSAib3Ntb2R1bGUuaCIKICNpbmNsdWRlICJpbnRyY2hlY2suaCIKICNpbmNsdWRlICJpbXBvcnQuaCIKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9hYnN0cmFjdC5oIGIvSW5jbHVkZS9hYnN0cmFjdC5oCmluZGV4IDM2ZGY1YTcuLjQ0MTA3YTggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYWJzdHJhY3QuaAorKysgYi9JbmNsdWRlL2Fic3RyYWN0LmgKQEAgLTcsNyArNyw5IEBACiAjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgogI2RlZmluZSBQeU9iamVjdF9DYWxsRnVuY3Rpb24gX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAogI2RlZmluZSBQeU9iamVjdF9DYWxsTWV0aG9kIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjZGVmaW5lIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2VuZGlmCiAKIC8qIEFic3RyYWN0IE9iamVjdCBJbnRlcmZhY2UgKG1hbnkgdGhhbmtzIHRvIEppbSBGdWx0b24pICovCkBAIC0yNjQsMTggKzI2Niw5NiBAQAogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlTdGFja19Bc1R1cGxlKAorICAgICAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzKTsKKworICAgIC8qIENvbnZlcnQga2V5d29yZCBhcmd1bWVudHMgZnJvbSB0aGUgKHN0YWNrLCBrd25hbWVzKSBmb3JtYXQgdG8gYSBQeXRob24KKyAgICAgICBkaWN0aW9uYXJ5LgorCisgICAgICAga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZS4ga3duYW1lcyBpcyBub3QgY2hlY2tlZCwgdXN1YWxseSB0aGVzZSBjaGVja3MgYXJlIGRvbmUgYmVmb3JlIG9yIGxhdGVyCisgICAgICAgY2FsbGluZyBfUHlTdGFja19Bc0RpY3QoKS4gRm9yIGV4YW1wbGUsIF9QeUFyZ19QYXJzZVN0YWNrKCkgcmFpc2VzIGFuCisgICAgICAgZXJyb3IgaWYgYSBrZXkgaXMgbm90IGEgc3RyaW5nLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3RhY2tfQXNEaWN0KAorICAgICAgICBQeU9iamVjdCAqKnZhbHVlcywKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpOworCisgICAgLyogQ29udmVydCAoYXJncywgbmFyZ3MsIGt3YXJncykgaW50byBhIChzdGFjaywgbmFyZ3MsIGt3bmFtZXMpLgorCisgICAgICAgUmV0dXJuIGEgbmV3IHN0YWNrIHdoaWNoIHNob3VsZCBiZSByZWxlYXNlZCBieSBQeU1lbV9GcmVlKCksIG9yIHJldHVybgorICAgICAgIGFyZ3MgdW5jaGFuZ2VkIGlmIGt3YXJncyBpcyBOVUxMIG9yIGFuIGVtcHR5IGRpY3Rpb25hcnkuCisKKyAgICAgICBUaGUgc3RhY2sgdXNlcyBib3Jyb3dlZCByZWZlcmVuY2VzLgorCisgICAgICAgVGhlIHR5cGUgb2Yga2V5d29yZCBrZXlzIGlzIG5vdCBjaGVja2VkLCB0aGVzZSBjaGVja3Mgc2hvdWxkIGJlIGRvbmUKKyAgICAgICBsYXRlciAoZXg6IF9QeUFyZ19QYXJzZVN0YWNrKS4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICoqKSBfUHlTdGFja19VbnBhY2tEaWN0KAorICAgICAgICBQeU9iamVjdCAqKmFyZ3MsCisgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MsCisgICAgICAgIFB5T2JqZWN0ICoqa3duYW1lcywKKyAgICAgICAgUHlPYmplY3QgKmZ1bmMpOworCisgICAgLyogQ2FsbCB0aGUgY2FsbGFibGUgb2JqZWN0IGZ1bmMgd2l0aCB0aGUgImZhc3QgY2FsbCIgY2FsbGluZyBjb252ZW50aW9uOgorICAgICAgIGFyZ3MgaXMgYSBDIGFycmF5IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cyAobmFyZ3MgaXMgdGhlIG51bWJlciBvZgorICAgICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzKSwga3dhcmdzIGlzIGEgZGljdGlvbmFyeSBmb3Iga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICBJZiBuYXJncyBpcyBlcXVhbCB0byB6ZXJvLCBhcmdzIGNhbiBiZSBOVUxMLiBrd2FyZ3MgY2FuIGJlIE5VTEwuCisgICAgICAgbmFyZ3MgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIHplcm8uCisKKyAgICAgICBSZXR1cm4gdGhlIHJlc3VsdCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gb24gcmV0dXJuIE5VTEwgb24KKyAgICAgICBlcnJvci4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncyk7CisKKyAgICAvKiBDYWxsIHRoZSBjYWxsYWJsZSBvYmplY3QgZnVuYyB3aXRoIHRoZSAiZmFzdCBjYWxsIiBjYWxsaW5nIGNvbnZlbnRpb246CisgICAgICAgYXJncyBpcyBhIEMgYXJyYXkgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnRzIGZvbGxvd2VkIGJ5IHZhbHVlcyBvZgorICAgICAgIGtleXdvcmQgYXJndW1lbnRzLiBLZXlzIG9mIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzdG9yZWQgYXMgYSB0dXBsZQorICAgICAgIG9mIHN0cmluZ3MgaW4ga3duYW1lcy4gbmFyZ3MgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgYXQKKyAgICAgICB0aGUgYmVnaW5uaW5nIG9mIHN0YWNrLiBUaGUgc2l6ZSBvZiBrd25hbWVzIGdpdmVzIHRoZSBudW1iZXIgb2Yga2V5d29yZAorICAgICAgIHZhbHVlcyBpbiB0aGUgc3RhY2sgYWZ0ZXIgcG9zaXRpb25hbCBhcmd1bWVudHMuCisKKyAgICAgICBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlLgorCisgICAgICAgSWYgbmFyZ3MgaXMgZXF1YWwgdG8gemVybyBhbmQgdGhlcmUgaXMgbm8ga2V5d29yZCBhcmd1bWVudCAoa3duYW1lcyBpcworICAgICAgIE5VTEwgb3IgaXRzIHNpemUgaXMgemVybyksIGFyZ3MgY2FuIGJlIE5VTEwuCisKKyAgICAgICBSZXR1cm4gdGhlIHJlc3VsdCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uCisgICAgICAgZXJyb3IuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfRmFzdENhbGxLZXl3b3JkcworICAgICAgIChQeU9iamVjdCAqZnVuYywKKyAgICAgICAgUHlPYmplY3QgKiphcmdzLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICBQeU9iamVjdCAqa3duYW1lcyk7CisKKyNkZWZpbmUgX1B5T2JqZWN0X0Zhc3RDYWxsKGZ1bmMsIGFyZ3MsIG5hcmdzKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCgoZnVuYyksIChhcmdzKSwgKG5hcmdzKSwgTlVMTCkKKworI2RlZmluZSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpIFwKKyAgICBfUHlPYmplY3RfRmFzdENhbGwoKGZ1bmMpLCBOVUxMLCAwKQorCisjZGVmaW5lIF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBhcmcpIFwKKyAgICBfUHlPYmplY3RfRmFzdENhbGwoKGZ1bmMpLCAmKGFyZyksIDEpCisKKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsX1ByZXBlbmQoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKTsKKwogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KFB5T2JqZWN0ICpmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqd2hlcmUpOwotI2VuZGlmCisjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgICAgLyoKICAgICAgQ2FsbCBhIGNhbGxhYmxlIFB5dGhvbiBvYmplY3QsIGNhbGxhYmxlX29iamVjdCwgd2l0aAogICAgICBhcmd1bWVudHMgYW5kIGtleXdvcmRzIGFyZ3VtZW50cy4gIFRoZSAnYXJncycgYXJndW1lbnQgY2FuIG5vdCBiZQotICAgICBOVUxMLCBidXQgdGhlICdrdycgYXJndW1lbnQgY2FuIGJlIE5VTEwuCisgICAgIE5VTEwuCiAgICAgICAgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxPYmplY3QoUHlPYmplY3QgKmNhbGxhYmxlX29iamVjdCwKQEAgLTMxNSw2ICszOTUsNyBAQAogICAgICBQeXRob24gZXhwcmVzc2lvbjogby5tZXRob2QoYXJncykuCiAgICAgICAgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOwpAQCAtMzIzLDYgKzQwNCw3IEBACiAgICAgICAgICBMaWtlIFB5T2JqZWN0X0NhbGxNZXRob2QsIGJ1dCBleHBlY3QgYSBfUHlfSWRlbnRpZmllciogYXMgdGhlCiAgICAgICAgICBtZXRob2QgbmFtZS4KICAgICAgICAqLworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCkBAIC0zMzEsMTAgKzQxMywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVChQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfSWRlbnRpZmllciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKQEAgLTM1MCw5ICs0MzQsMTEgQEAKIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRob2QsIC4uLik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAgICAgICAgLyoKICAgICAgQ2FsbCB0aGUgbWV0aG9kIG5hbWVkIG0gb2Ygb2JqZWN0IG8gd2l0aCBhIHZhcmlhYmxlIG51bWJlciBvZgpAQCAtMTI3MCwxMyArMTM1NiwxMyBAQAogUHlBUElfRlVOQyhjaGFyICpjb25zdCAqKSBfUHlTZXF1ZW5jZV9CeXRlc1RvQ2hhcnBBcnJheShQeU9iamVjdCogc2VsZik7CiAKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0ZyZWVDaGFyUEFycmF5KGNoYXIgKmNvbnN0IGFycmF5W10pOwotI2VuZGlmCiAKIC8qIEZvciBpbnRlcm5hbCB1c2UgYnkgYnVmZmVyIEFQSSBmdW5jdGlvbnMgKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5X2FkZF9vbmVfdG9faW5kZXhfRihpbnQgbmQsIFB5X3NzaXplX3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X2FkZF9vbmVfdG9faW5kZXhfQyhpbnQgbmQsIFB5X3NzaXplX3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYXNkbC5oIGIvSW5jbHVkZS9hc2RsLmgKaW5kZXggNDk1MTUzYy4uMzVlOWZhMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9hc2RsLmgKKysrIGIvSW5jbHVkZS9hc2RsLmgKQEAgLTYsNiArNiw3IEBACiB0eXBlZGVmIFB5T2JqZWN0ICogYnl0ZXM7CiB0eXBlZGVmIFB5T2JqZWN0ICogb2JqZWN0OwogdHlwZWRlZiBQeU9iamVjdCAqIHNpbmdsZXRvbjsKK3R5cGVkZWYgUHlPYmplY3QgKiBjb25zdGFudDsKIAogLyogSXQgd291bGQgYmUgbmljZSBpZiB0aGUgY29kZSBnZW5lcmF0ZWQgYnkgYXNkbF9jLnB5IHdhcyBjb21wbGV0ZWx5CiAgICBpbmRlcGVuZGVudCBvZiBQeXRob24sIGJ1dCBpdCBpcyBhIGdvYWwgdGhlIHJlcXVpcmVzIHRvbyBtdWNoIHdvcmsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKaW5kZXggMTFkNWY0Mi4uN2ZhNzU0MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKKysrIGIvSW5jbHVkZS9ieXRlc19tZXRob2RzLmgKQEAgLTE3LDkgKzE3LDE4IEBACiAvKiBUaGVzZSBzdG9yZSB0aGVpciBsZW4gc2l6ZWQgYW5zd2VyIGluIHRoZSBnaXZlbiBwcmVhbGxvY2F0ZWQgKnJlc3VsdCBhcmcuICovCiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfbG93ZXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpjcHRyLCBQeV9zc2l6ZV90IGxlbik7CiBleHRlcm4gdm9pZCBfUHlfYnl0ZXNfdXBwZXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpjcHRyLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKLWV4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOworZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOworCitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19maW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX2luZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3JmaW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3JpbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19jb3VudChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gaW50IF9QeV9ieXRlc19jb250YWlucyhjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJnKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX3N0YXJ0c3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfZW5kc3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOwogCiAvKiBUaGUgbWFrZXRyYW5zKCkgc3RhdGljIG1ldGhvZC4gKi8KIGV4dGVybiBQeU9iamVjdCogX1B5X2J5dGVzX21ha2V0cmFucyhQeV9idWZmZXIgKmZybSwgUHlfYnVmZmVyICp0byk7CkBAIC0zNyw3ICs0NiwxOSBAQAogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3RpdGxlX19kb2NfX1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2NhcGl0YWxpemVfX2RvY19fW107CiBleHRlcm4gY29uc3QgY2hhciBfUHlfc3dhcGNhc2VfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfY291bnRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZmluZF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9pbmRleF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yZmluZF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yaW5kZXhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfc3RhcnRzd2l0aF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9lbmRzd2l0aF9fZG9jX19bXTsKIGV4dGVybiBjb25zdCBjaGFyIF9QeV9tYWtldHJhbnNfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZXhwYW5kdGFic19fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9sanVzdF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9yanVzdF9fZG9jX19bXTsKK2V4dGVybiBjb25zdCBjaGFyIF9QeV9jZW50ZXJfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfemZpbGxfX2RvY19fW107CiAKIC8qIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBkb2NzIGFyZSBzaGFyZWQgZnJvbSB0aGUgLm8sIG5vdCBzdGF0aWMgKi8KICNkZWZpbmUgUHlEb2NfU1RSVkFSX3NoYXJlZChuYW1lLHN0cikgY29uc3QgY2hhciBuYW1lW10gPSBQeURvY19TVFIoc3RyKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9ieXRlc29iamVjdC5oIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCmluZGV4IDZjMWUwYzMuLjk4ZTI5YjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAorKysgYi9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKQEAgLTYyLDExICs2MiwyMyBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zvcm1hdEV4KAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICBQeV9zc2l6ZV90IGZvcm1hdF9sZW4sCisgICAgUHlPYmplY3QgKmFyZ3MsCisgICAgaW50IHVzZV9ieXRlYXJyYXkpOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zyb21IZXgoCisgICAgUHlPYmplY3QgKnN0cmluZywKKyAgICBpbnQgdXNlX2J5dGVhcnJheSk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqKTsKKy8qIEhlbHBlciBmb3IgUHlCeXRlc19EZWNvZGVFc2NhcGUgdGhhdCBkZXRlY3RzIGludmFsaWQgZXNjYXBlIGNoYXJzLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKik7CiAKIC8qIE1hY3JvLCB0cmFkaW5nIHNhZmV0eSBmb3Igc3BlZWQgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKQEAgLTEyMyw2ICsxMzUsODcgQEAKICNkZWZpbmUgRl9BTFQJKDE8PDMpCiAjZGVmaW5lIEZfWkVSTwkoMTw8NCkKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogVGhlIF9QeUJ5dGVzV3JpdGVyIHN0cnVjdHVyZSBpcyBiaWc6IGl0IGNvbnRhaW5zIGFuIGVtYmVkZGVkICJzdGFjayBidWZmZXIiLgorICAgQSBfUHlCeXRlc1dyaXRlciB2YXJpYWJsZSBtdXN0IGJlIGRlY2xhcmVkIGF0IHRoZSBlbmQgb2YgdmFyaWFibGVzIGluIGEKKyAgIGZ1bmN0aW9uIHRvIG9wdGltaXplIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBvbiB0aGUgc3RhY2suICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogYnl0ZXMsIGJ5dGVhcnJheSBvciBOVUxMICh3aGVuIHRoZSBzbWFsbCBidWZmZXIgaXMgdXNlZCkgKi8KKyAgICBQeU9iamVjdCAqYnVmZmVyOworCisgICAgLyogTnVtYmVyIG9mIGFsbG9jYXRlZCBzaXplLiAqLworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOworCisgICAgLyogTWluaW11bSBudW1iZXIgb2YgYWxsb2NhdGVkIGJ5dGVzLAorICAgICAgIGluY3JlbWVudGVkIGJ5IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoKSAqLworICAgIFB5X3NzaXplX3QgbWluX3NpemU7CisKKyAgICAvKiBJZiBub24temVybywgdXNlIGEgYnl0ZWFycmF5IGluc3RlYWQgb2YgYSBieXRlcyBvYmplY3QgZm9yIGJ1ZmZlci4gKi8KKyAgICBpbnQgdXNlX2J5dGVhcnJheTsKKworICAgIC8qIElmIG5vbi16ZXJvLCBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciAoZGVmYXVsdDogMCkuCisgICAgICAgVGhpcyBmbGFnIG11c3QgYmUgemVybyBpZiB1c2VfYnl0ZWFycmF5IGlzIG5vbi16ZXJvLiAqLworICAgIGludCBvdmVyYWxsb2NhdGU7CisKKyAgICAvKiBTdGFjayBidWZmZXIgKi8KKyAgICBpbnQgdXNlX3NtYWxsX2J1ZmZlcjsKKyAgICBjaGFyIHNtYWxsX2J1ZmZlcls1MTJdOworfSBfUHlCeXRlc1dyaXRlcjsKKworLyogSW5pdGlhbGl6ZSBhIGJ5dGVzIHdyaXRlcgorCisgICBCeSBkZWZhdWx0LCB0aGUgb3ZlcmFsbG9jYXRpb24gaXMgZGlzYWJsZWQuIFNldCB0aGUgb3ZlcmFsbG9jYXRlIGF0dHJpYnV0ZQorICAgdG8gY29udHJvbCB0aGUgYWxsb2NhdGlvbiBvZiB0aGUgYnVmZmVyLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlCeXRlc1dyaXRlcl9Jbml0KF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpOworCisvKiBHZXQgdGhlIGJ1ZmZlciBjb250ZW50IGFuZCByZXNldCB0aGUgd3JpdGVyLgorICAgUmV0dXJuIGEgYnl0ZXMgb2JqZWN0LCBvciBhIGJ5dGVhcnJheSBvYmplY3QgaWYgdXNlX2J5dGVhcnJheSBpcyBub24temVyby4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaChfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0cik7CisKKy8qIERlYWxsb2NhdGUgbWVtb3J5IG9mIGEgd3JpdGVyIChjbGVhciBpdHMgaW50ZXJuYWwgYnVmZmVyKS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyKTsKKworLyogQWxsb2NhdGUgdGhlIGJ1ZmZlciB0byB3cml0ZSBzaXplIGJ5dGVzLgorICAgUmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgYnVmZmVyIGRhdGEuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworCisvKiBFbnN1cmUgdGhhdCB0aGUgYnVmZmVyIGlzIGxhcmdlIGVub3VnaCB0byB3cml0ZSAqc2l6ZSogYnl0ZXMuCisgICBBZGQgc2l6ZSB0byB0aGUgd3JpdGVyIG1pbmltdW0gc2l6ZSAobWluX3NpemUgYXR0cmlidXRlKS4KKworICAgc3RyIGlzIHRoZSBjdXJyZW50IHBvaW50ZXIgaW5zaWRlIHRoZSBidWZmZXIuCisgICBSZXR1cm4gdGhlIHVwZGF0ZWQgY3VycmVudCBwb2ludGVyIGluc2lkZSB0aGUgYnVmZmVyLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKworLyogUmVzaXplIHRoZSBidWZmZXIgdG8gbWFrZSBpdCBsYXJnZXIuCisgICBUaGUgbmV3IGJ1ZmZlciBtYXkgYmUgbGFyZ2VyIHRoYW4gc2l6ZSBieXRlcyBiZWNhdXNlIG9mIG92ZXJhbGxvY2F0aW9uLgorICAgUmV0dXJuIHRoZSB1cGRhdGVkIGN1cnJlbnQgcG9pbnRlciBpbnNpZGUgdGhlIGJ1ZmZlci4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuCisKKyAgIE5vdGU6IHNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQgYnl0ZXMgaW4gdGhlIHdyaXRlci4KKworICAgVGhpcyBmdW5jdGlvbiBkb2Vzbid0IHVzZSB0aGUgd3JpdGVyIG1pbmltdW0gc2l6ZSAobWluX3NpemUgYXR0cmlidXRlKS4KKworICAgU2VlIGFsc28gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgpLgorICAgKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX1Jlc2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0ciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworCisvKiBXcml0ZSBieXRlcy4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyLAorICAgIGNvbnN0IHZvaWQgKmJ5dGVzLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jZXZhbC5oIGIvSW5jbHVkZS9jZXZhbC5oCmluZGV4IGI1MzczYTkuLjg5YzYwNjIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY2V2YWwuaAorKysgYi9JbmNsdWRlL2NldmFsLmgKQEAgLTgsNyArOCw3IEBACiAvKiBJbnRlcmZhY2UgdG8gcmFuZG9tIHBhcnRzIGluIGNldmFsLmMgKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcygKLSAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyAgICBQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpOwogCiAvKiBJbmxpbmUgdGhpcyAqLwogI2RlZmluZSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLGFyZykgXApAQCAtMjUsNiArMjUsMTAgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX1NldFRyYWNlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0Q29yb3V0aW5lV3JhcHBlcihQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9HZXRDb3JvdXRpbmVXcmFwcGVyKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0dldEFzeW5jR2VuRmlyc3RpdGVyKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKHZvaWQpOwogI2VuZGlmCiAKIHN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCkBAIC0xMTksNiArMTIzLDkgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFdmFsX0dldENhbGxTdGF0cyhQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFdmFsX0V2YWxGcmFtZShzdHJ1Y3QgX2ZyYW1lICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfRXZhbEZyYW1lRXgoc3RydWN0IF9mcmFtZSAqZiwgaW50IGV4Yyk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdChzdHJ1Y3QgX2ZyYW1lICpmLCBpbnQgZXhjKTsKKyNlbmRpZgogCiAvKiBJbnRlcmZhY2UgZm9yIHRocmVhZHMuCiAKQEAgLTE3Miw3ICsxNzksOSBAQAogCiBQeUFQSV9GVU5DKGludCkgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9Jbml0VGhyZWFkcyh2b2lkKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9GaW5pVGhyZWFkcyh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0FjcXVpcmVMb2NrKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfUmVsZWFzZUxvY2sodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9BY3F1aXJlVGhyZWFkKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CkBAIC0xODQsNiArMTkzLDEwIEBACiBQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcpIF9QeUV2YWxfR2V0U3dpdGNoSW50ZXJ2YWwodm9pZCk7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlFdmFsX1JlcXVlc3RDb2RlRXh0cmFJbmRleChmcmVlZnVuYyk7CisjZW5kaWYKKwogI2RlZmluZSBQeV9CRUdJTl9BTExPV19USFJFQURTIHsgXAogICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqX3NhdmU7IFwKICAgICAgICAgICAgICAgICAgICAgICAgIF9zYXZlID0gUHlFdmFsX1NhdmVUaHJlYWQoKTsKQEAgLTIwNiw2ICsyMTksMTQgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TaWduYWxBc3luY0V4Yyh2b2lkKTsKICNlbmRpZgogCisvKiBNYXNrcyBhbmQgdmFsdWVzIHVzZWQgYnkgRk9STUFUX1ZBTFVFIG9wY29kZS4gKi8KKyNkZWZpbmUgRlZDX01BU0sgICAgICAweDMKKyNkZWZpbmUgRlZDX05PTkUgICAgICAweDAKKyNkZWZpbmUgRlZDX1NUUiAgICAgICAweDEKKyNkZWZpbmUgRlZDX1JFUFIgICAgICAweDIKKyNkZWZpbmUgRlZDX0FTQ0lJICAgICAweDMKKyNkZWZpbmUgRlZTX01BU0sgICAgICAweDQKKyNkZWZpbmUgRlZTX0hBVkVfU1BFQyAweDQKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvZGUuaCBiL0luY2x1ZGUvY29kZS5oCmluZGV4IDhlY2YzOGEuLjA2MTkwMjkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29kZS5oCisrKyBiL0luY2x1ZGUvY29kZS5oCkBAIC03LDYgKzcsMTYgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3R5cGVkZWYgdWludDE2X3QgX1B5X0NPREVVTklUOworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisjICBkZWZpbmUgX1B5X09QQ09ERSh3b3JkKSAoKHdvcmQpID4+IDgpCisjICBkZWZpbmUgX1B5X09QQVJHKHdvcmQpICgod29yZCkgJiAyNTUpCisjZWxzZQorIyAgZGVmaW5lIF9QeV9PUENPREUod29yZCkgKCh3b3JkKSAmIDI1NSkKKyMgIGRlZmluZSBfUHlfT1BBUkcod29yZCkgKCh3b3JkKSA+PiA4KQorI2VuZGlmCisKIC8qIEJ5dGVjb2RlIG9iamVjdCAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKQEAgLTE1LDYgKzI1LDcgQEAKICAgICBpbnQgY29fbmxvY2FsczsJCS8qICNsb2NhbCB2YXJpYWJsZXMgKi8KICAgICBpbnQgY29fc3RhY2tzaXplOwkJLyogI2VudHJpZXMgbmVlZGVkIGZvciBldmFsdWF0aW9uIHN0YWNrICovCiAgICAgaW50IGNvX2ZsYWdzOwkJLyogQ09fLi4uLCBzZWUgYmVsb3cgKi8KKyAgICBpbnQgY29fZmlyc3RsaW5lbm87ICAgLyogZmlyc3Qgc291cmNlIGxpbmUgbnVtYmVyICovCiAgICAgUHlPYmplY3QgKmNvX2NvZGU7CQkvKiBpbnN0cnVjdGlvbiBvcGNvZGVzICovCiAgICAgUHlPYmplY3QgKmNvX2NvbnN0czsJLyogbGlzdCAoY29uc3RhbnRzIHVzZWQpICovCiAgICAgUHlPYmplY3QgKmNvX25hbWVzOwkJLyogbGlzdCBvZiBzdHJpbmdzIChuYW1lcyB1c2VkKSAqLwpAQCAtMzAsMTEgKzQxLDE0IEBACiAgICAgdW5zaWduZWQgY2hhciAqY29fY2VsbDJhcmc7IC8qIE1hcHMgY2VsbCB2YXJzIHdoaWNoIGFyZSBhcmd1bWVudHMuICovCiAgICAgUHlPYmplY3QgKmNvX2ZpbGVuYW1lOwkvKiB1bmljb2RlICh3aGVyZSBpdCB3YXMgbG9hZGVkIGZyb20pICovCiAgICAgUHlPYmplY3QgKmNvX25hbWU7CQkvKiB1bmljb2RlIChuYW1lLCBmb3IgcmVmZXJlbmNlKSAqLwotICAgIGludCBjb19maXJzdGxpbmVubzsJCS8qIGZpcnN0IHNvdXJjZSBsaW5lIG51bWJlciAqLwogICAgIFB5T2JqZWN0ICpjb19sbm90YWI7CS8qIHN0cmluZyAoZW5jb2RpbmcgYWRkcjwtPmxpbmVubyBtYXBwaW5nKSBTZWUKIAkJCQkgICBPYmplY3RzL2xub3RhYl9ub3Rlcy50eHQgZm9yIGRldGFpbHMuICovCiAgICAgdm9pZCAqY29fem9tYmllZnJhbWU7ICAgICAvKiBmb3Igb3B0aW1pemF0aW9uIG9ubHkgKHNlZSBmcmFtZW9iamVjdC5jKSAqLwogICAgIFB5T2JqZWN0ICpjb193ZWFrcmVmbGlzdDsgICAvKiB0byBzdXBwb3J0IHdlYWtyZWZzIHRvIGNvZGUgb2JqZWN0cyAqLworICAgIC8qIFNjcmF0Y2ggc3BhY2UgZm9yIGV4dHJhIGRhdGEgcmVsYXRpbmcgdG8gdGhlIGNvZGUgb2JqZWN0Ll9faWNjX25hbgorICAgICAgIFR5cGUgaXMgYSB2b2lkKiB0byBrZWVwIHRoZSBmb3JtYXQgcHJpdmF0ZSBpbiBjb2Rlb2JqZWN0LmMgdG8gZm9yY2UKKyAgICAgICBwZW9wbGUgdG8gZ28gdGhyb3VnaCB0aGUgcHJvcGVyIEFQSXMuICovCisgICAgdm9pZCAqY29fZXh0cmE7CiB9IFB5Q29kZU9iamVjdDsKIAogLyogTWFza3MgZm9yIGNvX2ZsYWdzIGFib3ZlICovCkBAIC01NSw2ICs2OSw3IEBACiAgICBgYGFzeW5jIGRlZmBgIGtleXdvcmRzKSAqLwogI2RlZmluZSBDT19DT1JPVVRJTkUgICAgICAgICAgICAweDAwODAKICNkZWZpbmUgQ09fSVRFUkFCTEVfQ09ST1VUSU5FICAgMHgwMTAwCisjZGVmaW5lIENPX0FTWU5DX0dFTkVSQVRPUiAgICAgIDB4MDIwMAogCiAvKiBUaGVzZSBhcmUgbm8gbG9uZ2VyIHVzZWQuICovCiAjaWYgMApAQCAtMTI2LDcgKzE0MSwxNSBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeUNvZGVfT3B0aW1pemUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0KiBjb25zdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKmxpbmVub19vYmopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICpsbm90YWIpOworCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoaW50KSBfUHlDb2RlX0dldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmV4dHJhKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlDb2RlX1NldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZXh0cmEpOworI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kYXRldGltZS5oIGIvSW5jbHVkZS9kYXRldGltZS5oCmluZGV4IDA2Y2JjNGEuLjNiZjM1Y2IgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZGF0ZXRpbWUuaAorKysgYi9JbmNsdWRlL2RhdGV0aW1lLmgKQEAgLTgxLDYgKzgxLDcgQEAKIHR5cGVkZWYgc3RydWN0CiB7CiAgICAgX1B5RGF0ZVRpbWVfVElNRUhFQUQKKyAgICB1bnNpZ25lZCBjaGFyIGZvbGQ7CiAgICAgUHlPYmplY3QgKnR6aW5mbzsKIH0gUHlEYXRlVGltZV9UaW1lOyAgICAgICAgICAgICAgLyogaGFzdHppbmZvIHRydWUgKi8KIApAQCAtMTA4LDYgKzEwOSw3IEBACiB0eXBlZGVmIHN0cnVjdAogewogICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FSEVBRAorICAgIHVuc2lnbmVkIGNoYXIgZm9sZDsKICAgICBQeU9iamVjdCAqdHppbmZvOwogfSBQeURhdGVUaW1lX0RhdGVUaW1lOyAgICAgICAgICAvKiBoYXN0emluZm8gdHJ1ZSAqLwogCkBAIC0xMjUsNiArMTI3LDcgQEAKICAgICAoKCgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmRhdGFbN10gPDwgMTYpIHwgICAgICAgXAogICAgICAoKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+ZGF0YVs4XSA8PCA4KSAgfCAgICAgICBcCiAgICAgICAoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5kYXRhWzldKQorI2RlZmluZSBQeURhdGVUaW1lX0RBVEVfR0VUX0ZPTEQobykgICAgICAgICgoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5mb2xkKQogCiAvKiBBcHBseSBmb3IgdGltZSBpbnN0YW5jZXMuICovCiAjZGVmaW5lIFB5RGF0ZVRpbWVfVElNRV9HRVRfSE9VUihvKSAgICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVswXSkKQEAgLTEzNCw2ICsxMzcsNyBAQAogICAgICgoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzNdIDw8IDE2KSB8ICAgICAgICAgICBcCiAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbNF0gPDwgOCkgIHwgICAgICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs1XSkKKyNkZWZpbmUgUHlEYXRlVGltZV9USU1FX0dFVF9GT0xEKG8pICAgICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5mb2xkKQogCiAvKiBBcHBseSBmb3IgdGltZSBkZWx0YSBpbnN0YW5jZXMgKi8KICNkZWZpbmUgUHlEYXRlVGltZV9ERUxUQV9HRVRfREFZUyhvKSAgICAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEqKW8pLT5kYXlzKQpAQCAtMTYyLDYgKzE2NiwxMSBAQAogICAgIFB5T2JqZWN0ICooKkRhdGVUaW1lX0Zyb21UaW1lc3RhbXApKFB5T2JqZWN0KiwgUHlPYmplY3QqLCBQeU9iamVjdCopOwogICAgIFB5T2JqZWN0ICooKkRhdGVfRnJvbVRpbWVzdGFtcCkoUHlPYmplY3QqLCBQeU9iamVjdCopOwogCisgICAgLyogUEVQIDQ5NSBjb25zdHJ1Y3RvcnMgKi8KKyAgICBQeU9iamVjdCAqKCpEYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWVBbmRGb2xkKShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsCisgICAgICAgIFB5T2JqZWN0KiwgaW50LCBQeVR5cGVPYmplY3QqKTsKKyAgICBQeU9iamVjdCAqKCpUaW1lX0Zyb21UaW1lQW5kRm9sZCkoaW50LCBpbnQsIGludCwgaW50LCBQeU9iamVjdCosIGludCwgUHlUeXBlT2JqZWN0Kik7CisKIH0gUHlEYXRlVGltZV9DQVBJOwogCiAjZGVmaW5lIFB5RGF0ZVRpbWVfQ0FQU1VMRV9OQU1FICJkYXRldGltZS5kYXRldGltZV9DQVBJIgpAQCAtMjE3LDEwICsyMjYsMTggQEAKICAgICBQeURhdGVUaW1lQVBJLT5EYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgXAogICAgICAgICBtaW4sIHNlYywgdXNlYywgUHlfTm9uZSwgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVUeXBlKQogCisjZGVmaW5lIFB5RGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lQW5kRm9sZCh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW4sIHNlYywgdXNlYywgZm9sZCkgXAorICAgIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGQoeWVhciwgbW9udGgsIGRheSwgaG91ciwgXAorICAgICAgICBtaW4sIHNlYywgdXNlYywgUHlfTm9uZSwgZm9sZCwgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVUeXBlKQorCiAjZGVmaW5lIFB5VGltZV9Gcm9tVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCkgXAogICAgIFB5RGF0ZVRpbWVBUEktPlRpbWVfRnJvbVRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIFwKICAgICAgICAgUHlfTm9uZSwgUHlEYXRlVGltZUFQSS0+VGltZVR5cGUpCiAKKyNkZWZpbmUgUHlUaW1lX0Zyb21UaW1lQW5kRm9sZChob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgZm9sZCkgXAorICAgIFB5RGF0ZVRpbWVBUEktPlRpbWVfRnJvbVRpbWVBbmRGb2xkKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBcCisgICAgICAgIFB5X05vbmUsIGZvbGQsIFB5RGF0ZVRpbWVBUEktPlRpbWVUeXBlKQorCiAjZGVmaW5lIFB5RGVsdGFfRnJvbURTVShkYXlzLCBzZWNvbmRzLCB1c2Vjb25kcykgXAogICAgIFB5RGF0ZVRpbWVBUEktPkRlbHRhX0Zyb21EZWx0YShkYXlzLCBzZWNvbmRzLCB1c2Vjb25kcywgMSwgXAogICAgICAgICBQeURhdGVUaW1lQVBJLT5EZWx0YVR5cGUpCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmggYi9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKaW5kZXggZTJiYTk3Zi4uOGYzZTg0YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kZXNjcm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaApAQCAtNzgsNyArNzgsOSBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5TWV0aG9kRGVzY3JfVHlwZTsKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeVdyYXBwZXJEZXNjcl9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5RGljdFByb3h5X1R5cGU7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TWV0aG9kV3JhcHBlcl9UeXBlOworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEZXNjcl9OZXdNZXRob2QoUHlUeXBlT2JqZWN0ICosIFB5TWV0aG9kRGVmICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURlc2NyX05ld0NsYXNzTWV0aG9kKFB5VHlwZU9iamVjdCAqLCBQeU1ldGhvZERlZiAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGljdG9iamVjdC5oIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKaW5kZXggYmE5MGFhZi4uMzBmMTE0ZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kaWN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKQEAgLTIyLDggKzIyLDIxIEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECisKKyAgICAvKiBOdW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKi8KICAgICBQeV9zc2l6ZV90IG1hX3VzZWQ7CisKKyAgICAvKiBEaWN0aW9uYXJ5IHZlcnNpb246IGdsb2JhbGx5IHVuaXF1ZSwgdmFsdWUgY2hhbmdlIGVhY2ggdGltZQorICAgICAgIHRoZSBkaWN0aW9uYXJ5IGlzIG1vZGlmaWVkICovCisgICAgdWludDY0X3QgbWFfdmVyc2lvbl90YWc7CisKICAgICBQeURpY3RLZXlzT2JqZWN0ICptYV9rZXlzOworCisgICAgLyogSWYgbWFfdmFsdWVzIGlzIE5VTEwsIHRoZSB0YWJsZSBpcyAiY29tYmluZWQiOiBrZXlzIGFuZCB2YWx1ZXMKKyAgICAgICBhcmUgc3RvcmVkIGluIG1hX2tleXMuCisKKyAgICAgICBJZiBtYV92YWx1ZXMgaXMgbm90IE5VTEwsIHRoZSB0YWJsZSBpcyBzcGxpdHRlZDoKKyAgICAgICBrZXlzIGFyZSBzdG9yZWQgaW4gbWFfa2V5cyBhbmQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gbWFfdmFsdWVzICovCiAgICAgUHlPYmplY3QgKiptYV92YWx1ZXM7CiB9IFB5RGljdE9iamVjdDsKIApAQCAtNjAsOSArNzMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gpOwogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbUlkV2l0aEVycm9yKFB5T2JqZWN0ICpkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfU2V0RGVmYXVsdCgKICAgICBQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZhdWx0b2JqKTsKICNlbmRpZgpAQCAtOTksNyArMTEyLDcgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICptcCk7CiBQeV9zc2l6ZV90IF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cyk7CiBQeV9zc2l6ZV90IF9QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqKTsKLVB5T2JqZWN0ICpfUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfUG9wKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlPYmplY3QgKl9QeURpY3RfRnJvbUtleXMoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjZGVmaW5lIF9QeURpY3RfSGFzU3BsaXRUYWJsZShkKSAoKGQpLT5tYV92YWx1ZXMgIT0gTlVMTCkKIApAQCAtMTE5LDYgKzEzMiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBMaWtlIFB5RGljdF9NZXJnZSwgYnV0IG92ZXJyaWRlIGNhbiBiZSAwLCAxIG9yIDIuICBJZiBvdmVycmlkZSBpcyAwLAorICAgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBrZXkgd2lucywgaWYgb3ZlcnJpZGUgaXMgMSwgdGhlIGxhc3Qgb2NjdXJyZW5jZQorICAgb2YgYSBrZXkgd2lucywgaWYgb3ZlcnJpZGUgaXMgMiwgYSBLZXlFcnJvciB3aXRoIGNvbmZsaWN0aW5nIGtleSBhcworICAgYXJndW1lbnQgaXMgcmFpc2VkLgorKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X01lcmdlRXgoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqb3RoZXIsIGludCBvdmVycmlkZSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RWaWV3X0ludGVyc2VjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKm90aGVyKTsKICNlbmRpZgogCkBAIC0xMzIsOSArMTUxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJyaWRlKTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbUlkKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5RGljdF9TZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSwgUHlPYmplY3QgKml0ZW0pOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9EZWxJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxlb2JqZWN0LmggYi9JbmNsdWRlL2ZpbGVvYmplY3QuaAppbmRleCAwMzE1NWQzLi4wMzk4NGJhIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ZpbGVvYmplY3QuaAorKysgYi9JbmNsdWRlL2ZpbGVvYmplY3QuaApAQCAtMjMsNiArMjMsNyBAQAogICAgSWYgbm9uLU5VTEwsIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGRlZmF1bHQgZW5jb2RpbmcgZm9yIHN0cmluZ3MKICovCiBQeUFQSV9EQVRBKGNvbnN0IGNoYXIgKikgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZzsKK1B5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yczsKIFB5QVBJX0RBVEEoaW50KSBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nOwogCiAvKiBJbnRlcm5hbCBBUEkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmlsZXV0aWxzLmggYi9JbmNsdWRlL2ZpbGV1dGlscy5oCmluZGV4IGI0YTY4M2MuLjQwMTY0MzEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZXV0aWxzLmgKKysrIGIvSW5jbHVkZS9maWxldXRpbHMuaApAQCAtNSw4ICs1LDYgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOwotCiBQeUFQSV9GVU5DKHdjaGFyX3QgKikgUHlfRGVjb2RlTG9jYWxlKAogICAgIGNvbnN0IGNoYXIgKmFyZywKICAgICBzaXplX3QgKnNpemUpOwpAQCAtMTcsNiArMTUsOCBAQAogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X2RldmljZV9lbmNvZGluZyhpbnQpOworCiAjaWZkZWYgTVNfV0lORE9XUwogc3RydWN0IF9QeV9zdGF0X3N0cnVjdCB7CiAgICAgdW5zaWduZWQgbG9uZyBzdF9kZXY7CkBAIC00NiwxMyArNDYsMTEgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfZnN0YXRfbm9yYWlzZSgKICAgICBpbnQgZmQsCiAgICAgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqc3RhdHVzKTsKLSNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc3RhdCgKICAgICBQeU9iamVjdCAqcGF0aCwKICAgICBzdHJ1Y3Qgc3RhdCAqc3RhdHVzKTsKIAotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeV9vcGVuKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7CkBAIC02MCw3ICs1OCw2IEBACiBQeUFQSV9GVU5DKGludCkgX1B5X29wZW5fbm9yYWlzZSgKICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwKICAgICBpbnQgZmxhZ3MpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoRklMRSAqKSBfUHlfd2ZvcGVuKAogICAgIGNvbnN0IHdjaGFyX3QgKnBhdGgsCkBAIC0xMDcsNyArMTA0LDYgQEAKICAgICB3Y2hhcl90ICpidWYsCiAgICAgc2l6ZV90IHNpemUpOwogCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5X2dldF9pbmhlcml0YWJsZShpbnQgZmQpOwogCiBQeUFQSV9GVU5DKGludCkgX1B5X3NldF9pbmhlcml0YWJsZShpbnQgZmQsIGludCBpbmhlcml0YWJsZSwKQEAgLTEyMSwxOCArMTE3LDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2Jsb2NraW5nKGludCBmZCwgaW50IGJsb2NraW5nKTsKICNlbmRpZiAgIC8qICFNU19XSU5ET1dTICovCiAKLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCi0vKiBBIHJvdXRpbmUgdG8gY2hlY2sgaWYgYSBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgb24gV2luZG93cy4gIFJldHVybnMgMAotICogYW5kIHNldHMgZXJybm8gdG8gRUJBREYgaWYgaXQgaXNuJ3QuICBUaGlzIGlzIHRvIGF2b2lkIEFzc2VydGlvbnMKLSAqIGZyb20gdmFyaW91cyBmdW5jdGlvbnMgaW4gdGhlIFdpbmRvd3MgQ1JUIGJlZ2lubmluZyB3aXRoCi0gKiBWaXN1YWwgU3R1ZGlvIDIwMDUKLSAqLwotaW50IF9QeVZlcmlmeV9mZChpbnQgZmQpOwotCi0jZWxzZQotI2RlZmluZSBfUHlWZXJpZnlfZmQoQSkgKDEpIC8qIGR1bW15ICovCi0jZW5kaWYKLQogI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmggYi9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKaW5kZXggZTI0MGZkYi4uZjEwNDRkNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mbG9hdG9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaApAQCAtNzQsOSArNzQsOSBAQAogICogaGFwcGVucyBpbiBzdWNoIGNhc2VzIGlzIHBhcnRseSBhY2NpZGVudGFsIChhbGFzKS4KICAqLwogCi0vKiBUaGUgcGFjayByb3V0aW5lcyB3cml0ZSA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKKy8qIFRoZSBwYWNrIHJvdXRpbmVzIHdyaXRlIDIsIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAogICogYXJndW1lbnQsIHRydWUgaWYgeW91IHdhbnQgdGhlIHN0cmluZyBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKLSAqIGxhc3QsIGF0IHArMyBvciBwKzcpLCBmYWxzZSBpZiB5b3Ugd2FudCBiaWctZW5kaWFuIGZvcm1hdCAoZXhwb25lbnQKKyAqIGxhc3QsIGF0IHArMSwgcCszIG9yIHArNyksIGZhbHNlIGlmIHlvdSB3YW50IGJpZy1lbmRpYW4gZm9ybWF0IChleHBvbmVudAogICogZmlyc3QsIGF0IHApLgogICogUmV0dXJuIHZhbHVlOiAgMCBpZiBhbGwgaXMgT0ssIC0xIGlmIGVycm9yIChhbmQgYW4gZXhjZXB0aW9uIGlzCiAgKiBzZXQsIG1vc3QgbGlrZWx5IE92ZXJmbG93RXJyb3IpLgpAQCAtODQsNiArODQsNyBAQAogICogMSk6ICBXaGF0IHRoaXMgZG9lcyBpcyB1bmRlZmluZWQgaWYgeCBpcyBhIE5hTiBvciBpbmZpbml0eS4KICAqIDIpOiAgLTAuMCBhbmQgKzAuMCBwcm9kdWNlIHRoZSBzYW1lIHN0cmluZy4KICAqLworUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2syKGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2s0KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X1BhY2s4KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogCkBAIC05NiwxNCArOTcsMTUgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9EaWdpdHMoY2hhciAqYnVmLCBkb3VibGUgdiwgaW50ICpzaWdudW0pOwogUHlBUElfRlVOQyh2b2lkKSBfUHlGbG9hdF9EaWdpdHNJbml0KHZvaWQpOwogCi0vKiBUaGUgdW5wYWNrIHJvdXRpbmVzIHJlYWQgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCisvKiBUaGUgdW5wYWNrIHJvdXRpbmVzIHJlYWQgMiwgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCiAgKiBhcmd1bWVudCwgdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0IChleHBvbmVudAotICogbGFzdCwgYXQgcCszIG9yIHArNyksIGZhbHNlIGlmIGJpZy1lbmRpYW4gKGV4cG9uZW50IGZpcnN0LCBhdCBwKS4KKyAqIGxhc3QsIGF0IHArMSwgcCszIG9yIHArNyksIGZhbHNlIGlmIGJpZy1lbmRpYW4gKGV4cG9uZW50IGZpcnN0LCBhdCBwKS4KICAqIFJldHVybiB2YWx1ZTogIFRoZSB1bnBhY2tlZCBkb3VibGUuICBPbiBlcnJvciwgdGhpcyBpcyAtMS4wIGFuZAogICogUHlFcnJfT2NjdXJyZWQoKSBpcyB0cnVlIChhbmQgYW4gZXhjZXB0aW9uIGlzIHNldCwgbW9zdCBsaWtlbHkKICAqIE92ZXJmbG93RXJyb3IpLiAgTm90ZSB0aGF0IG9uIGEgbm9uLUlFRUUgcGxhdGZvcm0gdGhpcyB3aWxsIHJlZnVzZQogICogdG8gdW5wYWNrIGEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyBhIE5hTiBvciBpbmZpbml0eS4KICAqLworUHlBUElfRlVOQyhkb3VibGUpIF9QeUZsb2F0X1VucGFjazIoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlGbG9hdF9VbnBhY2s0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGRvdWJsZSkgX1B5RmxvYXRfVW5wYWNrOChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBiL0luY2x1ZGUvZnVuY29iamVjdC5oCmluZGV4IGNjMTQyNmMuLjc3YmI4YzMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZnVuY29iamVjdC5oCisrKyBiL0luY2x1ZGUvZnVuY29iamVjdC5oCkBAIC01OCw2ICs1OCwyMCBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldEFubm90YXRpb25zKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KAorICAgIFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoCisgICAgUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKyNlbmRpZgorCiAvKiBNYWNyb3MgZm9yIGRpcmVjdCBhY2Nlc3MgdG8gdGhlc2UgdmFsdWVzLiBUeXBlIGNoZWNrcyBhcmUgKm5vdCoKICAgIGRvbmUsIHNvIHVzZSB3aXRoIGNhcmUuICovCiAjZGVmaW5lIFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYykgXApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9nZW5vYmplY3QuaCBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKaW5kZXggNjFlNzA4YS4uOGMxODI1ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9nZW5vYmplY3QuaAorKysgYi9JbmNsdWRlL2dlbm9iamVjdC5oCkBAIC00Myw3ICs0Myw3IEBACiBQeUFQSV9GVU5DKGludCkgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKFB5R2VuT2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeUdlbl9TZXRTdG9wSXRlcmF0aW9uVmFsdWUoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKLVB5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeU9iamVjdCAqX1B5R2VuX3lmKFB5R2VuT2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlHZW5fRmluYWxpemUoUHlPYmplY3QgKnNlbGYpOwogCkBAIC02Miw2ICs2MiwzNyBAQAogUHlPYmplY3QgKl9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihQeU9iamVjdCAqbyk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29yb19OZXcoc3RydWN0IF9mcmFtZSAqLAogICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworCisvKiBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgX1B5R2VuT2JqZWN0X0hFQUQoYWcpCisgICAgUHlPYmplY3QgKmFnX2ZpbmFsaXplcjsKKworICAgIC8qIEZsYWcgaXMgc2V0IHRvIDEgd2hlbiBob29rcyBzZXQgdXAgYnkgc3lzLnNldF9hc3luY2dlbl9ob29rcworICAgICAgIHdlcmUgY2FsbGVkIG9uIHRoZSBnZW5lcmF0b3IsIHRvIGF2b2lkIGNhbGxpbmcgdGhlbSBtb3JlCisgICAgICAgdGhhbiBvbmNlLiAqLworICAgIGludCBhZ19ob29rc19pbml0ZWQ7CisKKyAgICAvKiBGbGFnIGlzIHNldCB0byAxIHdoZW4gYWNsb3NlKCkgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZSwgb3IKKyAgICAgICB3aGVuIGEgU3RvcEFzeW5jSXRlcmF0aW9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuICovCisgICAgaW50IGFnX2Nsb3NlZDsKK30gUHlBc3luY0dlbk9iamVjdDsKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5QXN5bmNHZW5fVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFTZW5kX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFUaHJvd19UeXBlOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5QXN5bmNHZW5fTmV3KHN0cnVjdCBfZnJhbWUgKiwKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKKworI2RlZmluZSBQeUFzeW5jR2VuX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlBc3luY0dlbl9UeXBlKQorCitQeU9iamVjdCAqX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcoUHlPYmplY3QgKik7CisKK2ludCBQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKHZvaWQpOworCiAjZW5kaWYKIAogI3VuZGVmIF9QeUdlbk9iamVjdF9IRUFECmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1pbml0LmggYi9JbmNsdWRlL2dyYW1pbml0LmgKaW5kZXggZDAzMGJjMy4uZTliNGE5MyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtaW5pdC5oCisrKyBiL0luY2x1ZGUvZ3JhbWluaXQuaApAQCAtMTcsNzEgKzE3LDcyIEBACiAjZGVmaW5lIHNpbXBsZV9zdG10IDI3MAogI2RlZmluZSBzbWFsbF9zdG10IDI3MQogI2RlZmluZSBleHByX3N0bXQgMjcyCi0jZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzMKLSNkZWZpbmUgYXVnYXNzaWduIDI3NAotI2RlZmluZSBkZWxfc3RtdCAyNzUKLSNkZWZpbmUgcGFzc19zdG10IDI3NgotI2RlZmluZSBmbG93X3N0bXQgMjc3Ci0jZGVmaW5lIGJyZWFrX3N0bXQgMjc4Ci0jZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc5Ci0jZGVmaW5lIHJldHVybl9zdG10IDI4MAotI2RlZmluZSB5aWVsZF9zdG10IDI4MQotI2RlZmluZSByYWlzZV9zdG10IDI4MgotI2RlZmluZSBpbXBvcnRfc3RtdCAyODMKLSNkZWZpbmUgaW1wb3J0X25hbWUgMjg0Ci0jZGVmaW5lIGltcG9ydF9mcm9tIDI4NQotI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODYKLSNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg3Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODgKLSNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OQotI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTAKLSNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkxCi0jZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkyCi0jZGVmaW5lIGFzc2VydF9zdG10IDI5MwotI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NAotI2RlZmluZSBhc3luY19zdG10IDI5NQotI2RlZmluZSBpZl9zdG10IDI5NgotI2RlZmluZSB3aGlsZV9zdG10IDI5NwotI2RlZmluZSBmb3Jfc3RtdCAyOTgKLSNkZWZpbmUgdHJ5X3N0bXQgMjk5Ci0jZGVmaW5lIHdpdGhfc3RtdCAzMDAKLSNkZWZpbmUgd2l0aF9pdGVtIDMwMQotI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMgotI2RlZmluZSBzdWl0ZSAzMDMKLSNkZWZpbmUgdGVzdCAzMDQKLSNkZWZpbmUgdGVzdF9ub2NvbmQgMzA1Ci0jZGVmaW5lIGxhbWJkZWYgMzA2Ci0jZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNwotI2RlZmluZSBvcl90ZXN0IDMwOAotI2RlZmluZSBhbmRfdGVzdCAzMDkKLSNkZWZpbmUgbm90X3Rlc3QgMzEwCi0jZGVmaW5lIGNvbXBhcmlzb24gMzExCi0jZGVmaW5lIGNvbXBfb3AgMzEyCi0jZGVmaW5lIHN0YXJfZXhwciAzMTMKLSNkZWZpbmUgZXhwciAzMTQKLSNkZWZpbmUgeG9yX2V4cHIgMzE1Ci0jZGVmaW5lIGFuZF9leHByIDMxNgotI2RlZmluZSBzaGlmdF9leHByIDMxNwotI2RlZmluZSBhcml0aF9leHByIDMxOAotI2RlZmluZSB0ZXJtIDMxOQotI2RlZmluZSBmYWN0b3IgMzIwCi0jZGVmaW5lIHBvd2VyIDMyMQotI2RlZmluZSBhdG9tX2V4cHIgMzIyCi0jZGVmaW5lIGF0b20gMzIzCi0jZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI0Ci0jZGVmaW5lIHRyYWlsZXIgMzI1Ci0jZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI2Ci0jZGVmaW5lIHN1YnNjcmlwdCAzMjcKLSNkZWZpbmUgc2xpY2VvcCAzMjgKLSNkZWZpbmUgZXhwcmxpc3QgMzI5Ci0jZGVmaW5lIHRlc3RsaXN0IDMzMAotI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzEKLSNkZWZpbmUgY2xhc3NkZWYgMzMyCi0jZGVmaW5lIGFyZ2xpc3QgMzMzCi0jZGVmaW5lIGFyZ3VtZW50IDMzNAotI2RlZmluZSBjb21wX2l0ZXIgMzM1Ci0jZGVmaW5lIGNvbXBfZm9yIDMzNgotI2RlZmluZSBjb21wX2lmIDMzNwotI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOAotI2RlZmluZSB5aWVsZF9leHByIDMzOQotI2RlZmluZSB5aWVsZF9hcmcgMzQwCisjZGVmaW5lIGFubmFzc2lnbiAyNzMKKyNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3NAorI2RlZmluZSBhdWdhc3NpZ24gMjc1CisjZGVmaW5lIGRlbF9zdG10IDI3NgorI2RlZmluZSBwYXNzX3N0bXQgMjc3CisjZGVmaW5lIGZsb3dfc3RtdCAyNzgKKyNkZWZpbmUgYnJlYWtfc3RtdCAyNzkKKyNkZWZpbmUgY29udGludWVfc3RtdCAyODAKKyNkZWZpbmUgcmV0dXJuX3N0bXQgMjgxCisjZGVmaW5lIHlpZWxkX3N0bXQgMjgyCisjZGVmaW5lIHJhaXNlX3N0bXQgMjgzCisjZGVmaW5lIGltcG9ydF9zdG10IDI4NAorI2RlZmluZSBpbXBvcnRfbmFtZSAyODUKKyNkZWZpbmUgaW1wb3J0X2Zyb20gMjg2CisjZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NworI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODgKKyNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4OQorI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjkwCisjZGVmaW5lIGRvdHRlZF9uYW1lIDI5MQorI2RlZmluZSBnbG9iYWxfc3RtdCAyOTIKKyNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTMKKyNkZWZpbmUgYXNzZXJ0X3N0bXQgMjk0CisjZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjk1CisjZGVmaW5lIGFzeW5jX3N0bXQgMjk2CisjZGVmaW5lIGlmX3N0bXQgMjk3CisjZGVmaW5lIHdoaWxlX3N0bXQgMjk4CisjZGVmaW5lIGZvcl9zdG10IDI5OQorI2RlZmluZSB0cnlfc3RtdCAzMDAKKyNkZWZpbmUgd2l0aF9zdG10IDMwMQorI2RlZmluZSB3aXRoX2l0ZW0gMzAyCisjZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAzCisjZGVmaW5lIHN1aXRlIDMwNAorI2RlZmluZSB0ZXN0IDMwNQorI2RlZmluZSB0ZXN0X25vY29uZCAzMDYKKyNkZWZpbmUgbGFtYmRlZiAzMDcKKyNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA4CisjZGVmaW5lIG9yX3Rlc3QgMzA5CisjZGVmaW5lIGFuZF90ZXN0IDMxMAorI2RlZmluZSBub3RfdGVzdCAzMTEKKyNkZWZpbmUgY29tcGFyaXNvbiAzMTIKKyNkZWZpbmUgY29tcF9vcCAzMTMKKyNkZWZpbmUgc3Rhcl9leHByIDMxNAorI2RlZmluZSBleHByIDMxNQorI2RlZmluZSB4b3JfZXhwciAzMTYKKyNkZWZpbmUgYW5kX2V4cHIgMzE3CisjZGVmaW5lIHNoaWZ0X2V4cHIgMzE4CisjZGVmaW5lIGFyaXRoX2V4cHIgMzE5CisjZGVmaW5lIHRlcm0gMzIwCisjZGVmaW5lIGZhY3RvciAzMjEKKyNkZWZpbmUgcG93ZXIgMzIyCisjZGVmaW5lIGF0b21fZXhwciAzMjMKKyNkZWZpbmUgYXRvbSAzMjQKKyNkZWZpbmUgdGVzdGxpc3RfY29tcCAzMjUKKyNkZWZpbmUgdHJhaWxlciAzMjYKKyNkZWZpbmUgc3Vic2NyaXB0bGlzdCAzMjcKKyNkZWZpbmUgc3Vic2NyaXB0IDMyOAorI2RlZmluZSBzbGljZW9wIDMyOQorI2RlZmluZSBleHBybGlzdCAzMzAKKyNkZWZpbmUgdGVzdGxpc3QgMzMxCisjZGVmaW5lIGRpY3RvcnNldG1ha2VyIDMzMgorI2RlZmluZSBjbGFzc2RlZiAzMzMKKyNkZWZpbmUgYXJnbGlzdCAzMzQKKyNkZWZpbmUgYXJndW1lbnQgMzM1CisjZGVmaW5lIGNvbXBfaXRlciAzMzYKKyNkZWZpbmUgY29tcF9mb3IgMzM3CisjZGVmaW5lIGNvbXBfaWYgMzM4CisjZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM5CisjZGVmaW5lIHlpZWxkX2V4cHIgMzQwCisjZGVmaW5lIHlpZWxkX2FyZyAzNDEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbW1hci5oIGIvSW5jbHVkZS9ncmFtbWFyLmgKaW5kZXggODUxMjBiOS4uZjc3NWY5NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtbWFyLmgKKysrIGIvSW5jbHVkZS9ncmFtbWFyLmgKQEAgLTY5LDYgKzY5LDcgQEAKIC8qIEZVTkNUSU9OUyAqLwogCiBncmFtbWFyICpuZXdncmFtbWFyKGludCBzdGFydCk7Cit2b2lkIGZyZWVncmFtbWFyKGdyYW1tYXIgKmcpOwogZGZhICphZGRkZmEoZ3JhbW1hciAqZywgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpOwogaW50IGFkZHN0YXRlKGRmYSAqZCk7CiB2b2lkIGFkZGFyYyhkZmEgKmQsIGludCBmcm9tLCBpbnQgdG8sIGludCBsYmwpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbXBvcnQuaCBiL0luY2x1ZGUvaW1wb3J0LmgKaW5kZXggYWZkZmFjMi4uNDZjMGQ4ZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbXBvcnQuaAorKysgYi9JbmNsdWRlL2ltcG9ydC5oCkBAIC03LDcgKzcsOSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogUHlNT0RJTklUX0ZVTkMgUHlJbml0X2ltcCh2b2lkKTsKIFB5QVBJX0ZVTkMobG9uZykgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIodm9pZCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ludHJjaGVjay5oIGIvSW5jbHVkZS9pbnRyY2hlY2suaAppbmRleCBmNTNmZWUxLi44ZmI5NmNmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ludHJjaGVjay5oCisrKyBiL0luY2x1ZGUvaW50cmNoZWNrLmgKQEAgLTgsMTIgKzgsMTUgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0FmdGVyRm9yayh2b2lkKTsKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeU9TX0lzTWFpblRocmVhZCh2b2lkKTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKIC8qIHdpbmRvd3MuaCBpcyBub3QgaW5jbHVkZWQgYnkgUHl0aG9uLmggc28gdXNlIHZvaWQqIGluc3RlYWQgb2YgSEFORExFICovCiBQeUFQSV9GVU5DKHZvaWQqKSBfUHlPU19TaWdpbnRFdmVudCh2b2lkKTsKICNlbmRpZgorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaCBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAppbmRleCBiYmJhNGQ4Li5hM2I3NGI0IDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdpbnRyZXByLmgKKysrIGIvSW5jbHVkZS9sb25naW50cmVwci5oCkBAIC00MiwxNCArNDIsMTAgQEAKICovCiAKICNpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAzMAotI2lmICEoZGVmaW5lZCBIQVZFX1VJTlQ2NF9UICYmIGRlZmluZWQgSEFWRV9VSU5UMzJfVCAmJiAgICAgICAgICBcCi0gICAgICBkZWZpbmVkIEhBVkVfSU5UNjRfVCAmJiBkZWZpbmVkIEhBVkVfSU5UMzJfVCkKLSNlcnJvciAiMzAtYml0IGxvbmcgZGlnaXRzIHJlcXVlc3RlZCwgYnV0IHRoZSBuZWNlc3NhcnkgdHlwZXMgYXJlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIKLSNlbmRpZgotdHlwZWRlZiBQWV9VSU5UMzJfVCBkaWdpdDsKLXR5cGVkZWYgUFlfSU5UMzJfVCBzZGlnaXQ7IC8qIHNpZ25lZCB2YXJpYW50IG9mIGRpZ2l0ICovCi10eXBlZGVmIFBZX1VJTlQ2NF9UIHR3b2RpZ2l0czsKLXR5cGVkZWYgUFlfSU5UNjRfVCBzdHdvZGlnaXRzOyAvKiBzaWduZWQgdmFyaWFudCBvZiB0d29kaWdpdHMgKi8KK3R5cGVkZWYgdWludDMyX3QgZGlnaXQ7Cit0eXBlZGVmIGludDMyX3Qgc2RpZ2l0OyAvKiBzaWduZWQgdmFyaWFudCBvZiBkaWdpdCAqLwordHlwZWRlZiB1aW50NjRfdCB0d29kaWdpdHM7Cit0eXBlZGVmIGludDY0X3Qgc3R3b2RpZ2l0czsgLyogc2lnbmVkIHZhcmlhbnQgb2YgdHdvZGlnaXRzICovCiAjZGVmaW5lIFB5TG9uZ19TSElGVAkzMAogI2RlZmluZSBfUHlMb25nX0RFQ0lNQUxfU0hJRlQJOSAvKiBtYXgoZSBzdWNoIHRoYXQgMTAqKmUgZml0cyBpbiBhIGRpZ2l0KSAqLwogI2RlZmluZSBfUHlMb25nX0RFQ0lNQUxfQkFTRQkoKGRpZ2l0KTEwMDAwMDAwMDApIC8qIDEwICoqIERFQ0lNQUxfU0hJRlQgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbG9uZ29iamVjdC5oIGIvSW5jbHVkZS9sb25nb2JqZWN0LmgKaW5kZXggMmEyZWVjZi4uZWZkNDA5YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25nb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9sb25nb2JqZWN0LmgKQEAgLTY1LDcgKzY1LDggQEAKICMgIGVycm9yICJ2b2lkKiBkaWZmZXJlbnQgaW4gc2l6ZSBmcm9tIGludCwgbG9uZyBhbmQgbG9uZyBsb25nIgogI2VuZGlmIC8qIFNJWkVPRl9WT0lEX1AgKi8KIAotLyogVXNlZCBieSBQeXRob24vbXlzdHJ0b3VsLmMuICovCisvKiBVc2VkIGJ5IFB5dGhvbi9teXN0cnRvdWwuYywgX1B5Qnl0ZXNfRnJvbUhleCgpLAorICAgX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlUmVjb2RlKCksIGV0Yy4gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEodW5zaWduZWQgY2hhcikgX1B5TG9uZ19EaWdpdFZhbHVlWzI1Nl07CiAjZW5kaWYKQEAgLTg0LDE0ICs4NSwxMiBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVZvaWRQdHIodm9pZCAqKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeUxvbmdfQXNWb2lkUHRyKFB5T2JqZWN0ICopOwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Mb25nTG9uZyhQWV9MT05HX0xPTkcpOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgUFlfTE9OR19MT05HKTsKLVB5QVBJX0ZVTkMoUFlfTE9OR19MT05HKSBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModW5zaWduZWQgUFlfTE9OR19MT05HKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyhQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKiwgaW50ICopOwotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tTG9uZ0xvbmcobG9uZyBsb25nKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyk7CitQeUFQSV9GVU5DKGxvbmcgbG9uZykgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcgbG9uZykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModW5zaWduZWQgbG9uZyBsb25nKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMobG9uZyBsb25nKSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICosIGludCAqKTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVN0cmluZyhjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCkBAIC0xODIsNiArMTgxLDEzIEBACiAgICAgaW50IGJhc2UsCiAgICAgaW50IGFsdGVybmF0ZSk7CiAKK1B5QVBJX0ZVTkMoY2hhciopIF9QeUxvbmdfRm9ybWF0Qnl0ZXNXcml0ZXIoCisgICAgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICBjaGFyICpzdHIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBpbnQgYmFzZSwKKyAgICBpbnQgYWx0ZXJuYXRlKTsKKwogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeUxvbmdfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCkBAIC0xOTgsOCArMjA0LDEwIEBACiBQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcpIFB5T1Nfc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5T1Nfc3RydG9sKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogRm9yIHVzZSBieSB0aGUgZ2NkIGZ1bmN0aW9uIGluIG1hdGhtb2R1bGUuYyAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0dDRChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaAppbmRleCBlMmFkODA0Li43OWZhZDgyIDEwMDY0NAotLS0gYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oCisrKyBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKQEAgLTE2LDYgKzE2LDggQEAKICNkZWZpbmUgUHlDRnVuY3Rpb25fQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlDRnVuY3Rpb25fVHlwZSkKIAogdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbikoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7Cit0eXBlZGVmIFB5T2JqZWN0ICooKl9QeUNGdW5jdGlvbkZhc3QpIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbldpdGhLZXl3b3JkcykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeU5vQXJnc0Z1bmN0aW9uKShQeU9iamVjdCAqKTsKQEAgLTM3LDYgKzM5LDE4IEBACiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fQ2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICBQeU9iamVjdCAqa3duYW1lcyk7CisjZW5kaWYKKwogc3RydWN0IFB5TWV0aG9kRGVmIHsKICAgICBjb25zdCBjaGFyICAqbWxfbmFtZTsgICAvKiBUaGUgbmFtZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24vbWV0aG9kICovCiAgICAgUHlDRnVuY3Rpb24gbWxfbWV0aDsgICAgLyogVGhlIEMgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGl0ICovCkBAIC03Miw2ICs4Niw4IEBACiAjZGVmaW5lIE1FVEhfQ09FWElTVCAgIDB4MDA0MAogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIE1FVEhfRkFTVENBTEwgIDB4MDA4MAorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5TWV0aG9kRGVmICptX21sOyAvKiBEZXNjcmlwdGlvbiBvZiB0aGUgQyBmdW5jdGlvbiB0byBjYWxsICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHN1cHBvcnQuaCBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCmluZGV4IDgyOWFhZjguLjgzM2UzM2QgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oCisrKyBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCkBAIC0xNSwxMiArMTUsMTYgQEAKICNkZWZpbmUgUHlBcmdfUGFyc2UgICAgICAgICAgICAgICAgICAgICBfUHlBcmdfUGFyc2VfU2l6ZVQKICNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZSAgICAgICAgICAgICAgICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAogI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgICAgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICNkZWZpbmUgUHlBcmdfVmFQYXJzZSAgICAgICAgICAgICAgICAgICBfUHlBcmdfVmFQYXJzZV9TaXplVAogI2RlZmluZSBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyAgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2RlZmluZSBQeV9CdWlsZFZhbHVlICAgICAgICAgICAgICAgICAgIF9QeV9CdWlsZFZhbHVlX1NpemVUCiAjZGVmaW5lIFB5X1ZhQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAogI2Vsc2UKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIHZhX2xpc3QpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2VuZGlmCiAKIC8qIER1ZSB0byBhIGdsaXRjaCBpbiAzLjIsIHRoZSBfU2l6ZVQgdmVyc2lvbnMgd2VyZW4ndCBleHBvcnRlZCBmcm9tIHRoZSBETEwuICovCkBAIC00NCw2ICs0OCwzMiBAQAogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5X1ZhQnVpbGRWYWx1ZShjb25zdCBjaGFyICosIHZhX2xpc3QpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCit0eXBlZGVmIHN0cnVjdCBfUHlBcmdfUGFyc2VyIHsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQ7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICprZXl3b3JkczsKKyAgICBjb25zdCBjaGFyICpmbmFtZTsKKyAgICBjb25zdCBjaGFyICpjdXN0b21fbXNnOworICAgIGludCBwb3M7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBhcmd1bWVudHMgKi8KKyAgICBpbnQgbWluOyAgICAgICAgICAgIC8qIG1pbmltYWwgbnVtYmVyIG9mIGFyZ3VtZW50cyAqLworICAgIGludCBtYXg7ICAgICAgICAgICAgLyogbWF4aW1hbCBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKi8KKyAgICBQeU9iamVjdCAqa3d0dXBsZTsgIC8qIHR1cGxlIG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzICovCisgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKm5leHQ7Cit9IF9QeUFyZ19QYXJzZXI7CisjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgorI2RlZmluZSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdCAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQKKyNkZWZpbmUgX1B5QXJnX1BhcnNlU3RhY2sgIF9QeUFyZ19QYXJzZVN0YWNrX1NpemVUCisjZGVmaW5lIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQKKyNlbmRpZgorUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VTdGFjayhQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7Cit2b2lkIF9QeUFyZ19GaW5pKHZvaWQpOworI2VuZGlmCisKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRPYmplY3QoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIGxvbmcpOwogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCmluZGV4IGE0MTJmMDUuLjBjOGQ5NWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaApAQCAtNyw5ICs3LDExIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TmFtZXNwYWNlX1R5cGU7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TmFtZXNwYWNlX05ldyhQeU9iamVjdCAqa3dkcyk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmplY3QuaCBiL0luY2x1ZGUvb2JqZWN0LmgKaW5kZXggNTBkOTc0Ny4uMzM4ZWMxYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmplY3QuaAorKysgYi9JbmNsdWRlL29iamVjdC5oCkBAIC0xMTgsNiArMTE4LDcgQEAKICNkZWZpbmUgUHlfVFlQRShvYikgICAgICAgICAgICAgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQogI2RlZmluZSBQeV9TSVpFKG9iKSAgICAgICAgICAgICAoKChQeVZhck9iamVjdCopKG9iKSktPm9iX3NpemUpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qKioqKioqKioqKioqKioqKioqKiogU3RyaW5nIExpdGVyYWxzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBUaGlzIHN0cnVjdHVyZSBoZWxwcyBtYW5hZ2luZyBzdGF0aWMgc3RyaW5ncy4gVGhlIGJhc2ljIHVzYWdlIGdvZXMgbGlrZSB0aGlzOgogICAgSW5zdGVhZCBvZiBkb2luZwpAQCAtMTQ0LDEwICsxNDUsMTIgQEAKICAgICBQeU9iamVjdCAqb2JqZWN0OwogfSBfUHlfSWRlbnRpZmllcjsKIAotI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKSB7IDAsIHZhbHVlLCAwIH0KKyNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmdfaW5pdCh2YWx1ZSkgeyAubmV4dCA9IE5VTEwsIC5zdHJpbmcgPSB2YWx1ZSwgLm9iamVjdCA9IE5VTEwgfQogI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZyh2YXJuYW1lLCB2YWx1ZSkgIHN0YXRpYyBfUHlfSWRlbnRpZmllciB2YXJuYW1lID0gX1B5X3N0YXRpY19zdHJpbmdfaW5pdCh2YWx1ZSkKICNkZWZpbmUgX1B5X0lERU5USUZJRVIodmFybmFtZSkgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF8jI3Zhcm5hbWUsICN2YXJuYW1lKQogCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKIC8qCiBUeXBlIG9iamVjdHMgY29udGFpbiBhIHN0cmluZyBjb250YWluaW5nIHRoZSB0eXBlIG5hbWUgKHRvIGhlbHAgc29tZXdoYXQKIGluIGRlYnVnZ2luZyksIHRoZSBhbGxvY2F0aW9uIHBhcmFtZXRlcnMgKHNlZSBQeU9iamVjdF9OZXcoKSBhbmQKQEAgLTUxMiw4ICs1MTUsOCBAQAogI2VuZGlmCiAKIC8qIEdlbmVyaWMgb3BlcmF0aW9ucyBvbiBvYmplY3RzICovCi1zdHJ1Y3QgX1B5X0lkZW50aWZpZXI7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitzdHJ1Y3QgX1B5X0lkZW50aWZpZXI7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfUHJpbnQoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfQnJlYWtQb2ludCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0R1bXAoUHlPYmplY3QgKik7CkBAIC01MzAsMTEgKzUzMywxMSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1NldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfSGFzQXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSXNBYnN0cmFjdChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X1NldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICoqKSBfUHlPYmplY3RfR2V0RGljdFB0cihQeU9iamVjdCAqKTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9TZWxmSXRlcihQeU9iamVjdCAqKTsKQEAgLTU1Nyw2ICs1NjAsNyBAQAogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhQeU9iamVjdCAqKTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBTYW1lIGFzIFB5T2JqZWN0X0dlbmVyaWN7R2V0LFNldH1BdHRyLCBidXQgcGFzc2luZyB0aGUgYXR0cmlidXRlcwogICAgZGljdCBhcyB0aGUgbGFzdCBwYXJhbWV0ZXIuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopCkBAIC01NjQsNiArNTY4LDcgQEAKIFB5QVBJX0ZVTkMoaW50KQogX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBIZWxwZXIgdG8gbG9vayB1cCBhIGJ1aWx0aW4gb2JqZWN0ICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCkBAIC03MDgsNyArNzEzLDYgQEAKIFB5QVBJX0RBVEEoUHlfc3NpemVfdCkgX1B5X1JlZlRvdGFsOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfTmVnYXRpdmVSZWZjb3VudChjb25zdCBjaGFyICpmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgUHlPYmplY3QgKm9wKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9EdW1teSh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5X0dldFJlZlRvdGFsKHZvaWQpOwogI2RlZmluZSBfUHlfSU5DX1JFRlRPVEFMICAgICAgICBfUHlfUmVmVG90YWwrKwogI2RlZmluZSBfUHlfREVDX1JFRlRPVEFMICAgICAgICBfUHlfUmVmVG90YWwtLQpAQCAtNzg1LDcgKzc4OSw3IEBACiAgICAgICAgIC0tKF9weV9kZWNyZWZfdG1wKS0+b2JfcmVmY250ICE9IDApICAgICAgICAgICAgIFwKICAgICAgICAgICAgIF9QeV9DSEVDS19SRUZDTlQoX3B5X2RlY3JlZl90bXApICAgICAgICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9QeV9EZWFsbG9jKF9weV9kZWNyZWZfdG1wKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9QeV9EZWFsbG9jKF9weV9kZWNyZWZfdG1wKTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKIC8qIFNhZmVseSBkZWNyZWYgYG9wYCBhbmQgc2V0IGBvcGAgdG8gTlVMTCwgZXNwZWNpYWxseSB1c2VmdWwgaW4gdHBfY2xlYXIKQEAgLTg4OSw4ICs4OTMsMTAgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlfSW5jUmVmKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBQeV9EZWNSZWYoUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOb25lX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5Tm90SW1wbGVtZW50ZWRfVHlwZTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyoKIF9QeV9Ob25lU3RydWN0IGlzIGFuIG9iamVjdCBvZiB1bmRlZmluZWQgdHlwZSB3aGljaCBjYW4gYmUgdXNlZCBpbiBjb250ZXh0cwpAQCAtOTIzLDEwICs5MjksMTIgQEAKICNkZWZpbmUgUHlfR1QgNAogI2RlZmluZSBQeV9HRSA1CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIE1hcHMgUHlfTFQgdG8gUHlfR1QsIC4uLiwgUHlfR0UgdG8gUHlfTEUuCiAgKiBEZWZpbmVkIGluIG9iamVjdC5jLgogICovCiBQeUFQSV9EQVRBKGludCkgX1B5X1N3YXBwZWRPcFtdOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAKIC8qCkBAIC0xMDIzLDEyICsxMDMxLDE0IEBACiB3aXRoIHRoZSBjYWxsIHN0YWNrIG5ldmVyIGV4Y2VlZGluZyBhIGRlcHRoIG9mIFB5VHJhc2hfVU5XSU5EX0xFVkVMLgogKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGhpcyBpcyB0aGUgb2xkIHByaXZhdGUgQVBJLCBpbnZva2VkIGJ5IHRoZSBtYWNyb3MgYmVmb3JlIDMuMi40LgogICAgS2VwdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXh0ZW5zaW9ucyB1c2luZyB0aGUgc3RhYmxlIEFCSS4gKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QoUHlPYmplY3QqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfZGVzdHJveV9jaGFpbih2b2lkKTsKIFB5QVBJX0RBVEEoaW50KSBfUHlUcmFzaF9kZWxldGVfbmVzdGluZzsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5VHJhc2hfZGVsZXRlX2xhdGVyOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBUaGUgbmV3IHRocmVhZC1zYWZlIHByaXZhdGUgQVBJLCBpbnZva2VkIGJ5IHRoZSBtYWNyb3MgYmVsb3cuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX3RocmVhZF9kZXBvc2l0X29iamVjdChQeU9iamVjdCopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmppbXBsLmggYi9JbmNsdWRlL29iamltcGwuaAppbmRleCA2NWI2ZDkxLi5jMGVkOWI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamltcGwuaAorKysgYi9JbmNsdWRlL29iamltcGwuaApAQCAtOTksOCArOTksMTAgQEAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU9iamVjdF9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfRnJlZSh2b2lkICpwdHIpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrcywgcmVnYXJkbGVzcyBvZiBzaXplICovCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3Modm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIE1hY3JvcyAqLwogI2lmZGVmIFdJVEhfUFlNQUxMT0MKQEAgLTIyNCwxMSArMjI2LDEyIEBACiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogICovCiAKLS8qIEMgZXF1aXZhbGVudCBvZiBnYy5jb2xsZWN0KCkuICovCisvKiBDIGVxdWl2YWxlbnQgb2YgZ2MuY29sbGVjdCgpIHdoaWNoIGlnbm9yZXMgdGhlIHN0YXRlIG9mIGdjLmVuYWJsZWQuICovCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5R0NfQ29sbGVjdCh2b2lkKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlHQ19Db2xsZWN0Tm9GYWlsKHZvaWQpOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlHQ19Db2xsZWN0SWZFbmFibGVkKHZvaWQpOwogI2VuZGlmCiAKIC8qIFRlc3QgaWYgYSB0eXBlIGhhcyBhIEdDIGhlYWQgKi8KQEAgLTMyMiw4ICszMjUsMTAgQEAKICAgICAgICAgKCFQeVR1cGxlX0NoZWNrRXhhY3Qob2JqKSB8fCBfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChvYmopKSkKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19NYWxsb2Moc2l6ZV90IHNpemUpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfQ2FsbG9jKHNpemVfdCBzaXplKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX05ldyhQeVR5cGVPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5VmFyT2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXdWYXIoUHlUeXBlT2JqZWN0ICosIFB5X3NzaXplX3QpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9HQ19UcmFjayh2b2lkICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vcGNvZGUuaCBiL0luY2x1ZGUvb3Bjb2RlLmgKaW5kZXggM2Y5MTdmYi4uYmUzNjBlMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vcGNvZGUuaAorKysgYi9JbmNsdWRlL29wY29kZS5oCkBAIC02MCw2ICs2MCw3IEBACiAjZGVmaW5lIFdJVEhfQ0xFQU5VUF9GSU5JU0ggICAgICA4MgogI2RlZmluZSBSRVRVUk5fVkFMVUUgICAgICAgICAgICAgODMKICNkZWZpbmUgSU1QT1JUX1NUQVIgICAgICAgICAgICAgIDg0CisjZGVmaW5lIFNFVFVQX0FOTk9UQVRJT05TICAgICAgICA4NQogI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgICAgICAgICAgODYKICNkZWZpbmUgUE9QX0JMT0NLICAgICAgICAgICAgICAgIDg3CiAjZGVmaW5lIEVORF9GSU5BTExZICAgICAgICAgICAgICA4OApAQCAtOTgsMTggKzk5LDE3IEBACiAjZGVmaW5lIExPQURfRkFTVCAgICAgICAgICAgICAgIDEyNAogI2RlZmluZSBTVE9SRV9GQVNUICAgICAgICAgICAgICAxMjUKICNkZWZpbmUgREVMRVRFX0ZBU1QgICAgICAgICAgICAgMTI2CisjZGVmaW5lIFNUT1JFX0FOTk9UQVRJT04gICAgICAgIDEyNwogI2RlZmluZSBSQUlTRV9WQVJBUkdTICAgICAgICAgICAxMzAKICNkZWZpbmUgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgMTMxCiAjZGVmaW5lIE1BS0VfRlVOQ1RJT04gICAgICAgICAgIDEzMgogI2RlZmluZSBCVUlMRF9TTElDRSAgICAgICAgICAgICAxMzMKLSNkZWZpbmUgTUFLRV9DTE9TVVJFICAgICAgICAgICAgMTM0CiAjZGVmaW5lIExPQURfQ0xPU1VSRSAgICAgICAgICAgIDEzNQogI2RlZmluZSBMT0FEX0RFUkVGICAgICAgICAgICAgICAxMzYKICNkZWZpbmUgU1RPUkVfREVSRUYgICAgICAgICAgICAgMTM3CiAjZGVmaW5lIERFTEVURV9ERVJFRiAgICAgICAgICAgIDEzOAotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUiAgICAgICAxNDAKICNkZWZpbmUgQ0FMTF9GVU5DVElPTl9LVyAgICAgICAgMTQxCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgIDE0MgorI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0VYICAgICAgICAxNDIKICNkZWZpbmUgU0VUVVBfV0lUSCAgICAgICAgICAgICAgMTQzCiAjZGVmaW5lIEVYVEVOREVEX0FSRyAgICAgICAgICAgIDE0NAogI2RlZmluZSBMSVNUX0FQUEVORCAgICAgICAgICAgICAxNDUKQEAgLTEyMiw2ICsxMjIsMTAgQEAKICNkZWZpbmUgQlVJTERfVFVQTEVfVU5QQUNLICAgICAgMTUyCiAjZGVmaW5lIEJVSUxEX1NFVF9VTlBBQ0sgICAgICAgIDE1MwogI2RlZmluZSBTRVRVUF9BU1lOQ19XSVRIICAgICAgICAxNTQKKyNkZWZpbmUgRk9STUFUX1ZBTFVFICAgICAgICAgICAgMTU1CisjZGVmaW5lIEJVSUxEX0NPTlNUX0tFWV9NQVAgICAgIDE1NgorI2RlZmluZSBCVUlMRF9TVFJJTkcgICAgICAgICAgICAxNTcKKyNkZWZpbmUgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCAxNTgKIAogLyogRVhDRVBUX0hBTkRMRVIgaXMgYSBzcGVjaWFsLCBpbXBsaWNpdCBibG9jayB0eXBlIHdoaWNoIGlzIGNyZWF0ZWQgd2hlbgogICAgZW50ZXJpbmcgYW4gZXhjZXB0IGhhbmRsZXIuIEl0IGlzIG5vdCBhbiBvcGNvZGUgYnV0IHdlIGRlZmluZSBpdCBoZXJlCmRpZmYgLS1naXQgYS9JbmNsdWRlL29zbW9kdWxlLmggYi9JbmNsdWRlL29zbW9kdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0Njc1NwotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvb3Ntb2R1bGUuaApAQCAtMCwwICsxLDE1IEBACisKKy8qIG9zIG1vZHVsZSBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBQeV9PU01PRFVMRV9ICisjZGVmaW5lIFB5X09TTU9EVUxFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X09TTU9EVUxFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKaW5kZXggNDVlNTczNi4uMmQ2ODYzOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXRjaGxldmVsLmgKKysrIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKQEAgLTE3LDEzICsxNywxMyBAQAogLyogVmVyc2lvbiBwYXJzZWQgb3V0IGludG8gbnVtZXJpYyB2YWx1ZXMgKi8KIC8qLS1zdGFydCBjb25zdGFudHMtLSovCiAjZGVmaW5lIFBZX01BSk9SX1ZFUlNJT04JMwotI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTUKLSNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkyCi0jZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9GSU5BTAotI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkwCisjZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNgorI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTAKKyNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0JFVEEKKyNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJNAogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNS4yKyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy42LjBiNCsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BnZW5oZWFkZXJzLmggYi9JbmNsdWRlL3BnZW5oZWFkZXJzLmgKaW5kZXggMjA0OWFlMy4uNDg0M2RlNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wZ2VuaGVhZGVycy5oCisrKyBiL0luY2x1ZGUvcGdlbmhlYWRlcnMuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBkZWxiaXRzZXQgX1B5X2RlbGJpdHNldAogI2RlZmluZSBkdW1wdHJlZSBfUHlfZHVtcHRyZWUKICNkZWZpbmUgZmluZGxhYmVsIF9QeV9maW5kbGFiZWwKKyNkZWZpbmUgZnJlZWdyYW1tYXIgX1B5X2ZyZWVncmFtbWFyCiAjZGVmaW5lIG1lcmdlYml0c2V0IF9QeV9tZXJnZWJpdHNldAogI2RlZmluZSBtZXRhX2dyYW1tYXIgX1B5X21ldGFfZ3JhbW1hcgogI2RlZmluZSBuZXdiaXRzZXQgX1B5X25ld2JpdHNldApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weV9jdXJzZXMuaCBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKaW5kZXggZjJjMDhmNi4uM2MyMTY5NyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weV9jdXJzZXMuaAorKysgYi9JbmNsdWRlL3B5X2N1cnNlcy5oCkBAIC0xMDMsOCArMTAzLDggQEAKICNlbmRpZgogCiAvKiBnZW5lcmFsIGVycm9yIG1lc3NhZ2VzICovCi1zdGF0aWMgY2hhciAqY2F0Y2hhbGxfRVJSICA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgRVJSIjsKLXN0YXRpYyBjaGFyICpjYXRjaGFsbF9OVUxMID0gImN1cnNlcyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhdGNoYWxsX0VSUltdICA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgRVJSIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhdGNoYWxsX05VTExbXSA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCI7CiAKIC8qIEZ1bmN0aW9uIFByb3RvdHlwZSBNYWNyb3MgLSBUaGV5IGFyZSB1Z2x5IGJ1dCB2ZXJ5LCB2ZXJ5IHVzZWZ1bC4gOy0pCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlhdG9taWMuaCBiL0luY2x1ZGUvcHlhdG9taWMuaAppbmRleCA4OTAyOGVmLi44OTNkMzBkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5YXRvbWljLmgKKysrIGIvSW5jbHVkZS9weWF0b21pYy5oCkBAIC02MSw3ICs2MSw3IEBACiB9IF9QeV9tZW1vcnlfb3JkZXI7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7Ci0gICAgUHlfdWludHB0cl90IF92YWx1ZTsKKyAgICB1aW50cHRyX3QgX3ZhbHVlOwogfSBfUHlfYXRvbWljX2FkZHJlc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKQEAgLTk4LDcgKzk4LDcgQEAKIH0gX1B5X21lbW9yeV9vcmRlcjsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19hZGRyZXNzIHsKLSAgICBQeV91aW50cHRyX3QgX3ZhbHVlOworICAgIHVpbnRwdHJfdCBfdmFsdWU7CiB9IF9QeV9hdG9taWNfYWRkcmVzczsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19pbnQgewpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCAxOWJlYzJiLi42ZTIzYTg5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtMjQsNiArMjQsMTAgQEAKIFB5QVBJX0RBVEEoaW50KSBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfSXNvbGF0ZWRGbGFnOwogCisjaWZkZWYgTVNfV0lORE9XUworUHlBUElfREFUQShpbnQpIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWc7CisjZW5kaWYKKwogLyogdGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIGdldGVudigpIHRoYXQgcGF5cyBhdHRlbnRpb24gdG8KICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZy4gIEl0IHNob3VsZCBiZSB1c2VkIGZvciBnZXR0aW5nIHZhcmlhYmxlcyBsaWtlCiAgICBQWVRIT05QQVRIIGFuZCBQWVRIT05IT01FIGZyb20gdGhlIGVudmlyb25tZW50ICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZHRyYWNlLmQgYi9JbmNsdWRlL3B5ZHRyYWNlLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzNjA1NQotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlkdHJhY2UuZApAQCAtMCwwICsxLDE5IEBACisvKiBQeXRob24gRFRyYWNlIHByb3ZpZGVyICovCisKK3Byb3ZpZGVyIHB5dGhvbiB7CisgICAgcHJvYmUgZnVuY3Rpb25fX2VudHJ5KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGZ1bmN0aW9uX19yZXR1cm4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICAgcHJvYmUgaW5zdGFuY2VfX25ld19fc3RhcnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGluc3RhbmNlX19uZXdfX2RvbmUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGluc3RhbmNlX19kZWxldGVfX3N0YXJ0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fZGVsZXRlX19kb25lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBsaW5lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGdjX19zdGFydChpbnQpOworICAgIHByb2JlIGdjX19kb25lKGxvbmcpOworfTsKKworI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBwcm92aWRlcgorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBtb2R1bGUKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gZnVuY3Rpb24KKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gbmFtZQorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBhcmdzCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZHRyYWNlLmggYi9JbmNsdWRlL3B5ZHRyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQzYTI1MwotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlkdHJhY2UuaApAQCAtMCwwICsxLDUzIEBACisvKiBTdGF0aWMgRFRyYWNlIHByb2JlcyBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBQeV9EVFJBQ0VfSAorI2RlZmluZSBQeV9EVFJBQ0VfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaWZkZWYgV0lUSF9EVFJBQ0UKKworI2luY2x1ZGUgInB5ZHRyYWNlX3Byb2Jlcy5oIgorCisvKiBweWR0cmFjZV9wcm9iZXMuaCwgb24gc3lzdGVtcyB3aXRoIERUcmFjZSwgaXMgYXV0by1nZW5lcmF0ZWQgdG8gaW5jbHVkZQorICAgYFB5RFRyYWNlX3tQUk9CRX1gIGFuZCBgUHlEVHJhY2Vfe1BST0JFfV9FTkFCTEVEKClgIG1hY3JvcyBmb3IgZXZlcnkgcHJvYmUKKyAgIGRlZmluZWQgaW4gcHlkdHJhY2VfcHJvdmlkZXIuZC4KKworICAgQ2FsbGluZyB0aGVzZSBmdW5jdGlvbnMgbXVzdCBiZSBndWFyZGVkIGJ5IGEgYFB5RFRyYWNlX3tQUk9CRX1fRU5BQkxFRCgpYAorICAgY2hlY2sgdG8gbWluaW1pemUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gcHJvYmluZyBpcyBvZmYuIEZvciBleGFtcGxlOgorCisgICAgICAgaWYgKFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQoKSkKKyAgICAgICAgICAgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoZik7CisqLworCisjZWxzZQorCisvKiBXaXRob3V0IERUcmFjZSwgY29tcGlsZSB0byBub3RoaW5nLiAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfTElORShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikgIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOKGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEsIGludCBhcmcyKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX1NUQVJUKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX0RPTkUoaW50IGFyZzApIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX1NUQVJUKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVChpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfRE9ORShpbnQgYXJnMCkge30KKworc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfTElORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9HQ19ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfRE9ORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KKworI2VuZGlmIC8qICFXSVRIX0RUUkFDRSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9EVFJBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWVycm9ycy5oIGIvSW5jbHVkZS9weWVycm9ycy5oCmluZGV4IDM1YWVkYjcuLmY5Zjc0YzAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHllcnJvcnMuaAorKysgYi9JbmNsdWRlL3B5ZXJyb3JzLmgKQEAgLTE2MCw2ICsxNjAsNyBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX09TRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ltcG9ydEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Nb2R1bGVOb3RGb3VuZEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbmRleEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19LZXlFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ7CkBAIC0yNTQsNiArMjU1LDE3IEBACiAgICAgdmFfbGlzdCB2YXJncyk7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogTGlrZSBQeUVycl9Gb3JtYXQoKSwgYnV0IHNhdmVzIGN1cnJlbnQgZXhjZXB0aW9uIGFzIF9fY29udGV4dF9fIGFuZAorICAgX19jYXVzZV9fLgorICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoCisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCisgICAgLi4uCisgICAgKTsKKyNlbmRpZgorCiAjaWZkZWYgTVNfV0lORE9XUwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgKICAgICBpbnQgaWVyciwKQEAgLTI4Myw2ICsyOTUsOSBAQAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y1dpdGhBcmdzS3dhcmdzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgUHlPYmplY3QgKik7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgIFB5T2JqZWN0ICopOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5Z2V0b3B0LmggYi9JbmNsdWRlL3B5Z2V0b3B0LmgKaW5kZXggNDI1YzdkZC4uOTYyNzIwYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWdldG9wdC5oCisrKyBiL0luY2x1ZGUvcHlnZXRvcHQuaApAQCAtMTEsOSArMTEsOSBAQAogUHlBUElfREFUQSh3Y2hhcl90ICopIF9QeU9TX29wdGFyZzsKIAogUHlBUElfRlVOQyh2b2lkKSBfUHlPU19SZXNldEdldE9wdCh2b2lkKTsKLSNlbmRpZgogCiBQeUFQSV9GVU5DKGludCkgX1B5T1NfR2V0T3B0KGludCBhcmdjLCB3Y2hhcl90ICoqYXJndiwgd2NoYXJfdCAqb3B0c3RyaW5nKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5aGFzaC5oIGIvSW5jbHVkZS9weWhhc2guaAppbmRleCBhN2NhOTM3Li5hODE0YWY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5aGFzaC5oCisrKyBiL0luY2x1ZGUvcHloYXNoLmgKQEAgLTM2LDE0ICszNiwxNCBAQAogICogbWVtb3J5IGxheW91dCBvbiA2NCBiaXQgc3lzdGVtcwogICogICBjY2NjY2NjYyBjY2NjY2NjYyBjY2NjY2NjYyAgdWMgLS0gdW5zaWduZWQgY2hhclsyNF0KICAqICAgcHBwcHBwcHAgc3Nzc3Nzc3MgLi4uLi4uLi4gIGZudiAtLSB0d28gUHlfaGFzaF90Ci0gKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byBQWV9VSU5UNjRfVAorICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gdWludDY0X3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzc3Nzc3MgIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZWVlZWUgIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKICAqIG1lbW9yeSBsYXlvdXQgb24gMzIgYml0IHN5c3RlbXMKICAqICAgY2NjY2NjY2MgY2NjY2NjY2MgY2NjY2NjY2MgIHVjCiAgKiAgIHBwcHBzc3NzIC4uLi4uLi4uIC4uLi4uLi4uICBmbnYgLS0gdHdvIFB5X2hhc2hfdAotICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gUFlfVUlOVDY0X1QgKCopCisgKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byB1aW50NjRfdCAoKikKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzcy4uLi4gIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZS4uLi4gIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKQEAgLTU5LDEzICs1OSwxMSBAQAogICAgICAgICBQeV9oYXNoX3QgcHJlZml4OwogICAgICAgICBQeV9oYXNoX3Qgc3VmZml4OwogICAgIH0gZm52OwotI2lmZGVmIFBZX1VJTlQ2NF9UCiAgICAgLyogdHdvIHVpbnQ2NCBmb3IgU2lwSGFzaDI0ICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgUFlfVUlOVDY0X1QgazA7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIGsxOworICAgICAgICB1aW50NjRfdCBrMDsKKyAgICAgICAgdWludDY0X3QgazE7CiAgICAgfSBzaXBoYXNoOwotI2VuZGlmCiAgICAgLyogYSBkaWZmZXJlbnQgKCEpIFB5X2hhc2hfdCBmb3Igc21hbGwgc3RyaW5nIG9wdGltaXphdGlvbiAqLwogICAgIHN0cnVjdCB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZ1sxNl07CkBAIC0xMjEsOCArMTE5LDcgQEAKICAqIGNvbmZpZ3VyZSBzY3JpcHQuCiAgKgogICogLSBGTlYgaXMgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGFyY2hpdGVjdHVyZXMuCi0gKiAtIFNJUEhBU0gyNCBvbmx5IHdvcmtzIG9uIHBsYWZvcm1zIHRoYXQgcHJvdmlkZSBQWV9VSU5UNjRfVCBhbmQgZG9lc24ndAotICogICByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KKyAqIC0gU0lQSEFTSDI0IG9ubHkgd29ya3Mgb24gcGxhZm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KICAqIC0gV2l0aCBFWFRFUk5BTCBlbWJlZGRlcnMgY2FuIHByb3ZpZGUgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gd2l0aDo6CiAgKgogICogICAgIFB5SGFzaF9GdW5jRGVmIFB5SGFzaF9GdW5jID0gey4uLn07CkBAIC0xMzQsOCArMTMxLDcgQEAKICNkZWZpbmUgUHlfSEFTSF9GTlYgMgogCiAjaWZuZGVmIFB5X0hBU0hfQUxHT1JJVEhNCi0jICBpZiAoZGVmaW5lZChQWV9VSU5UNjRfVCkgJiYgZGVmaW5lZChQWV9VSU5UMzJfVCkgXAotICAgICAgICYmICFkZWZpbmVkKEhBVkVfQUxJR05FRF9SRVFVSVJFRCkpCisjICBpZm5kZWYgSEFWRV9BTElHTkVEX1JFUVVJUkVECiAjICAgIGRlZmluZSBQeV9IQVNIX0FMR09SSVRITSBQeV9IQVNIX1NJUEhBU0gyNAogIyAgZWxzZQogIyAgICBkZWZpbmUgUHlfSEFTSF9BTEdPUklUSE0gUHlfSEFTSF9GTlYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlsaWZlY3ljbGUuaCBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaAppbmRleCBjY2RlYmUyLi41YTY3NjY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKKysrIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQsIGludCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkModm9pZCkgUHlfRmluYWxpemUodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlfRmluYWxpemVFeCh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICopOwpAQCAtMTA2LDYgKzEwNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VHlwZV9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlBc3luY0dlbl9GaW5pKHZvaWQpOwogCiBQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CiAjZW5kaWYKQEAgLTExNSw4ICsxMTcsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1NfZ2V0c2lnKGludCk7CiBQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX3NldHNpZyhpbnQsIFB5T1Nfc2lnaGFuZGxlcl90KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmFuZG9tICovCi1QeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSAodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb21Ob25ibG9jayh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaAppbmRleCAzZjZmNWRjLi4yYTgzOWFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWFjcm8uaAorKysgYi9JbmNsdWRlL3B5bWFjcm8uaApAQCAtMTgsNiArMTgsOSBAQAogICAgYnkgIl9fTElORV9fIi4gKi8KICNkZWZpbmUgUHlfU1RSSU5HSUZZKHgpIF9QeV9YU1RSSU5HSUZZKHgpCiAKKy8qIEdldCB0aGUgc2l6ZSBvZiBhIHN0cnVjdHVyZSBtZW1iZXIgaW4gYnl0ZXMgKi8KKyNkZWZpbmUgUHlfTUVNQkVSX1NJWkUodHlwZSwgbWVtYmVyKSBzaXplb2YoKCh0eXBlICopMCktPm1lbWJlcikKKwogLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwogI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQogCkBAIC0zNiw2ICszOSwxMCBAQAogI2RlZmluZSBQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKSBcCiAgICAgKHNpemVvZihjaGFyIFsxIC0gMiohKGNvbmQpXSkgLSAxKQogCisjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVChjb25kKSAgZG8geyAgICAgICAgIFwKKyAgICAgICAgKHZvaWQpUHlfQlVJTERfQVNTRVJUX0VYUFIoY29uZCk7ICAgXAorICAgIH0gd2hpbGUoMCkKKwogLyogR2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2aXNpYmxlIGFycmF5CiAKICAgIFRoaXMgZG9lcyBub3Qgd29yayBvbiBwb2ludGVycywgb3IgYXJyYXlzIGRlY2xhcmVkIGFzIFtdLCBvciBmdW5jdGlvbgpAQCAtNzUsMTIgKzgyLDEyIEBACiAjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX1VQKG4sIGEpICgoKHNpemVfdCkobikgKyBcCiAgICAgICAgIChzaXplX3QpKChhKSAtIDEpKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKIC8qIFJvdW5kIHBvaW50ZXIgInAiIGRvd24gdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA8PSAicCIuICovCi0jZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgoUHlfdWludHB0cl90KShwKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgodWludHB0cl90KShwKSAmIH4odWludHB0cl90KSgoYSkgLSAxKSkpCiAvKiBSb3VuZCBwb2ludGVyICJwIiB1cCB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzID49ICJwIi4gKi8KLSNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKFB5X3VpbnRwdHJfdCkocCkgKyBcCi0gICAgICAgIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9VUChwLCBhKSAoKHZvaWQgKikoKCh1aW50cHRyX3QpKHApICsgXAorICAgICAgICAodWludHB0cl90KSgoYSkgLSAxKSkgJiB+KHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogLyogQ2hlY2sgaWYgcG9pbnRlciAicCIgaXMgYWxpZ25lZCB0byAiYSItYnl0ZXMgYm91bmRhcnkuICovCi0jZGVmaW5lIF9QeV9JU19BTElHTkVEKHAsIGEpICghKChQeV91aW50cHRyX3QpKHApICYgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfSVNfQUxJR05FRChwLCBhKSAoISgodWludHB0cl90KShwKSAmICh1aW50cHRyX3QpKChhKSAtIDEpKSkKIAogI2lmZGVmIF9fR05VQ19fCiAjZGVmaW5lIFB5X1VOVVNFRChuYW1lKSBfdW51c2VkXyAjIyBuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWF0aC5oIGIvSW5jbHVkZS9weW1hdGguaAppbmRleCAxYzhkNzE4Li43MjE2YTA5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWF0aC5oCisrKyBiL0luY2x1ZGUvcHltYXRoLmgKQEAgLTU1LDYgKzU1LDEyIEBACiAjZGVmaW5lIFB5X01BVEhfRSAyLjcxODI4MTgyODQ1OTA0NTIzNTQKICNlbmRpZgogCisvKiBUYXUgKDJwaSkgdG8gNDAgZGlnaXRzLCB0YWtlbiBmcm9tIHRhdWRheS5jb20vdGF1LWRpZ2l0cy4gKi8KKyNpZm5kZWYgUHlfTUFUSF9UQVUKKyNkZWZpbmUgUHlfTUFUSF9UQVUgNi4yODMxODUzMDcxNzk1ODY0NzY5MjUyODY3NjY1NTkwMDU3NjgzOTQzTAorI2VuZGlmCisKKwogLyogT24geDg2LCBQeV9GT1JDRV9ET1VCTEUgZm9yY2VzIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIG91dCBvZiBhbiB4ODcgRlBVCiAgICByZWdpc3RlciBhbmQgaW50byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24sIHJvdW5kaW5nIGZyb20gZXh0ZW5kZWQKICAgIHByZWNpc2lvbiB0byBkb3VibGUgcHJlY2lzaW9uIGluIHRoZSBwcm9jZXNzLiAgT24gb3RoZXIgcGxhdGZvcm1zIGl0IGRvZXMKQEAgLTE2OSw3ICsxNzUsNyBAQAogICAgICAgICAjcHJhZ21hIGZsb2F0X2NvbnRyb2wgKHBvcCkKICAgICAgICAgI2RlZmluZSBQeV9OQU4gX19pY2NfbmFuKCkKICAgICAjZWxzZSAvKiBJQ0NfTkFOX1JFTEFYRUQgYXMgZGVmYXVsdCBmb3IgSW50ZWwgQ29tcGlsZXIgKi8KLSAgICAgICAgc3RhdGljIHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKICAgICAgICAgI2RlZmluZSBQeV9OQU4gKF9fbmFuX3N0b3JlLl9faWNjX25hbikKICAgICAjZW5kaWYgLyogSUNDX05BTl9TVFJJQ1QgKi8KICNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWVtLmggYi9JbmNsdWRlL3B5bWVtLmgKaW5kZXggMDQzZGI2NC4uY2U2M2JmOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1lbS5oCisrKyBiL0luY2x1ZGUvcHltZW0uaApAQCAtMTYsOCArMTYsNTEgQEAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdSZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fUmF3RnJlZSh2b2lkICpwdHIpOworCisvKiBDb25maWd1cmUgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycy4gUGFzcyBOVUxMIHRvIHVzZSBkZWZhdWx0CisgICBhbGxvY2F0b3JzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoY29uc3QgY2hhciAqb3B0KTsKKworI2lmZGVmIFdJVEhfUFlNQUxMT0MKK1B5QVBJX0ZVTkMoaW50KSBfUHlNZW1fUHltYWxsb2NFbmFibGVkKHZvaWQpOwogI2VuZGlmCiAKKy8qIElkZW50aWZpZXIgb2YgYW4gYWRkcmVzcyBzcGFjZSAoZG9tYWluKSBpbiB0cmFjZW1hbGxvYyAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3Q7CisKKy8qIFRyYWNrIGFuIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2sgaW4gdGhlIHRyYWNlbWFsbG9jIG1vZHVsZS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJldHVybiAtMSBvbiBlcnJvciAoZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSB0byBzdG9yZQorICAgdGhlIHRyYWNlKS4KKworICAgUmV0dXJuIC0yIGlmIHRyYWNlbWFsbG9jIGlzIGRpc2FibGVkLgorCisgICBJZiBtZW1vcnkgYmxvY2sgaXMgYWxyZWFkeSB0cmFja2VkLCB1cGRhdGUgdGhlIGV4aXN0aW5nIHRyYWNlLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1RyYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyLAorICAgIHNpemVfdCBzaXplKTsKKworLyogVW50cmFjayBhbiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIGluIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUuCisgICBEbyBub3RoaW5nIGlmIHRoZSBibG9jayB3YXMgbm90IHRyYWNrZWQuCisKKyAgIFJldHVybiAtMiBpZiB0cmFjZW1hbGxvYyBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIHJldHVybiAwLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1VudHJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworCisvKiBHZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkLgorCisgICBSZXR1cm4gYSB0dXBsZSBvZiAoZmlsZW5hbWU6IHN0ciwgbGluZW5vOiBpbnQpIHR1cGxlcy4KKworICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyBkaXNhYmxlZCBvciBpZiB0aGUgbWVtb3J5IGJsb2NrCisgICBpcyBub3QgdHJhY2tlZCBieSB0cmFjZW1hbGxvYy4KKworICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworI2VuZGlmICAgLyogIVB5X0xJTUlURURfQVBJICovCisKIAogLyogQkVXQVJFOgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5cG9ydC5oIGIvSW5jbHVkZS9weXBvcnQuaAppbmRleCBlN2U1MTc4Li4yMGYzZGI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5cG9ydC5oCisrKyBiL0luY2x1ZGUvcHlwb3J0LmgKQEAgLTMsMTUgKzMsNyBAQAogCiAjaW5jbHVkZSAicHljb25maWcuaCIgLyogaW5jbHVkZSBmb3IgZGVmaW5lcyAqLwogCi0vKiBTb21lIHZlcnNpb25zIG9mIEhQLVVYICYgU29sYXJpcyBuZWVkIGludHR5cGVzLmggZm9yIGludDMyX3QsCi0gICBJTlQzMl9NQVgsIGV0Yy4gKi8KLSNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1NURElOVF9ICi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTeW1ib2xzIGFuZCBtYWNyb3MgdG8gc3VwcGx5IHBsYXRmb3JtLWluZGVwZW5kZW50IGludGVyZmFjZXMgdG8gYmFzaWMKQEAgLTMxLDE0ICsyMyw2IEBACiBNZWFuaW5nOiAgRXh0cmEgY2hlY2tzIGNvbXBpbGVkIGluIGZvciBkZWJ1ZyBtb2RlLgogVXNlZCBpbjogIFB5X1NBRkVfRE9XTkNBU1QKIAotSEFWRV9VSU5UUFRSX1QKLU1lYW5pbmc6ICBUaGUgQzlYIHR5cGUgdWludHB0cl90IGlzIHN1cHBvcnRlZCBieSB0aGUgY29tcGlsZXIKLVVzZWQgaW46ICBQeV91aW50cHRyX3QKLQotSEFWRV9MT05HX0xPTkcKLU1lYW5pbmc6ICBUaGUgY29tcGlsZXIgc3VwcG9ydHMgdGhlIEMgdHlwZSAibG9uZyBsb25nIgotVXNlZCBpbjogIFBZX0xPTkdfTE9ORwotCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogdHlwZWRlZnMgZm9yIHNvbWUgQzlYLWRlZmluZWQgc3lub255bXMgZm9yIGludGVncmFsIHR5cGVzLgpAQCAtNTMsOTEgKzM3LDMwIEBACiAgKiBpbnRlZ3JhbCBzeW5vbnltcy4gIE9ubHkgZGVmaW5lIHRoZSBvbmVzIHdlIGFjdHVhbGx5IG5lZWQuCiAgKi8KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCisvLyBsb25nIGxvbmcgaXMgcmVxdWlyZWQgbm93LiBEZWZpbmUgSEFWRV9MT05HX0xPTkcgdW5jb25kaXRpb25hbGx5IGZvcgorLy8gY29tcGF0aWJpbGl0eS4KKyNkZWZpbmUgSEFWRV9MT05HX0xPTkcKICNpZm5kZWYgUFlfTE9OR19MT05HCiAjZGVmaW5lIFBZX0xPTkdfTE9ORyBsb25nIGxvbmcKLSNpZiBkZWZpbmVkKExMT05HX01BWCkKIC8qIElmIExMT05HX01BWCBpcyBkZWZpbmVkIGluIGxpbWl0cy5oLCB1c2UgdGhhdC4gKi8KICNkZWZpbmUgUFlfTExPTkdfTUlOIExMT05HX01JTgogI2RlZmluZSBQWV9MTE9OR19NQVggTExPTkdfTUFYCiAjZGVmaW5lIFBZX1VMTE9OR19NQVggVUxMT05HX01BWAotI2VsaWYgZGVmaW5lZChfX0xPTkdfTE9OR19NQVhfXykKLS8qIE90aGVyd2lzZSwgaWYgR0NDIGhhcyBhIGJ1aWx0aW4gZGVmaW5lLCB1c2UgdGhhdC4gIChEZWZpbml0aW9uIG9mCi0gKiBQWV9MTE9OR19NSU4gYXNzdW1lcyB0d28ncyBjb21wbGVtZW50IHdpdGggbm8gdHJhcCByZXByZXNlbnRhdGlvbi4pICovCi0jZGVmaW5lIFBZX0xMT05HX01BWCBfX0xPTkdfTE9OR19NQVhfXwotI2RlZmluZSBQWV9MTE9OR19NSU4gKC1QWV9MTE9OR19NQVggLSAxKQotI2RlZmluZSBQWV9VTExPTkdfTUFYIChQWV9MTE9OR19NQVggKiBQeV9VTEwoMikgKyAxKQotI2VsaWYgZGVmaW5lZChTSVpFT0ZfTE9OR19MT05HKQotLyogT3RoZXJ3aXNlIGNvbXB1dGUgZnJvbSBTSVpFT0ZfTE9OR19MT05HLCBhc3N1bWluZyB0d28ncyBjb21wbGVtZW50LCBubwotICAgcGFkZGluZyBiaXRzLCBhbmQgbm8gdHJhcCByZXByZXNlbnRhdGlvbi4gIE5vdGU6IFBZX1VMTE9OR19NQVggd2FzCi0gICBwcmV2aW91c2x5ICNkZWZpbmVkIGFzICh+MFVMTCkgaGVyZTsgYnV0IHRoYXQnbGwgZ2l2ZSB0aGUgd3JvbmcgdmFsdWUgaW4gYQotICAgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gb24gc3lzdGVtcyB3aGVyZSBsb25nIGxvbmcgIT0gaW50bWF4X3QuICovCi0jZGVmaW5lIFBZX0xMT05HX01BWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKDEgKyAyICogKChQeV9MTCgxKSA8PCAoQ0hBUl9CSVQgKiBTSVpFT0ZfTE9OR19MT05HIC0gMikpIC0gMSkpCi0jZGVmaW5lIFBZX0xMT05HX01JTiAoLVBZX0xMT05HX01BWCAtIDEpCi0jZGVmaW5lIFBZX1VMTE9OR19NQVggKFBZX0xMT05HX01BWCAqIFB5X1VMTCgyKSArIDEpCi0jZW5kaWYgLyogTExPTkdfTUFYICovCi0jZW5kaWYKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwotCi0vKiBhIGJ1aWxkIHdpdGggMzAtYml0IGRpZ2l0cyBmb3IgUHl0aG9uIGludGVnZXJzIG5lZWRzIGFuIGV4YWN0LXdpZHRoCi0gKiAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlIHRvIHN0b3JlIHRob3NlIGRpZ2l0cy4gIChXZSBjb3VsZCBqdXN0IHVzZQotICogdHlwZSAndW5zaWduZWQgbG9uZycsIGJ1dCB0aGF0IHdvdWxkIGJlIHdhc3RlZnVsIG9uIGEgc3lzdGVtIHdoZXJlIGxvbmdzCi0gKiBhcmUgNjQtYml0cy4pICBPbiBVbml4IHN5c3RlbXMsIHRoZSBhdXRvY29uZiBtYWNybyBBQ19UWVBFX1VJTlQzMl9UIGRlZmluZXMKLSAqIHVpbnQzMl90IHRvIGJlIHN1Y2ggYSB0eXBlIHVubGVzcyBzdGRpbnQuaCBvciBpbnR0eXBlcy5oIGRlZmluZXMgdWludDMyX3QuCi0gKiBIb3dldmVyLCBpdCBkb2Vzbid0IHNldCBIQVZFX1VJTlQzMl9ULCBzbyB3ZSBkbyB0aGF0IGhlcmUuCi0gKi8KLSNpZmRlZiB1aW50MzJfdAotI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9VSU5UMzJfVAotI2lmbmRlZiBQWV9VSU5UMzJfVAogI2RlZmluZSBQWV9VSU5UMzJfVCB1aW50MzJfdAotI2VuZGlmCi0jZW5kaWYKLQotLyogTWFjcm9zIGZvciBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGU7IHVzZWQgZm9yIHR5cGUgJ3R3b2RpZ2l0cycgaW4gdGhlCi0gKiBpbnRlZ2VyIGltcGxlbWVudGF0aW9uLCB3aGVuIDMwLWJpdCBkaWdpdHMgYXJlIGVuYWJsZWQuCi0gKi8KLSNpZmRlZiB1aW50NjRfdAotI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9VSU5UNjRfVAotI2lmbmRlZiBQWV9VSU5UNjRfVAogI2RlZmluZSBQWV9VSU5UNjRfVCB1aW50NjRfdAotI2VuZGlmCi0jZW5kaWYKIAogLyogU2lnbmVkIHZhcmlhbnRzIG9mIHRoZSBhYm92ZSAqLwotI2lmZGVmIGludDMyX3QKLSNkZWZpbmUgSEFWRV9JTlQzMl9UIDEKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9JTlQzMl9UCi0jaWZuZGVmIFBZX0lOVDMyX1QKICNkZWZpbmUgUFlfSU5UMzJfVCBpbnQzMl90Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgaW50NjRfdAotI2RlZmluZSBIQVZFX0lOVDY0X1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0lOVDY0X1QKLSNpZm5kZWYgUFlfSU5UNjRfVAogI2RlZmluZSBQWV9JTlQ2NF9UIGludDY0X3QKLSNlbmRpZgotI2VuZGlmCiAKIC8qIElmIFBZTE9OR19CSVRTX0lOX0RJR0lUIGlzIG5vdCBkZWZpbmVkIHRoZW4gd2UnbGwgdXNlIDMwLWJpdCBkaWdpdHMgaWYgYWxsCiAgICB0aGUgbmVjZXNzYXJ5IGludGVnZXIgdHlwZXMgYXJlIGF2YWlsYWJsZSwgYW5kIHdlJ3JlIG9uIGEgNjQtYml0IHBsYXRmb3JtCiAgICAoYXMgZGV0ZXJtaW5lZCBieSBTSVpFT0ZfVk9JRF9QKTsgb3RoZXJ3aXNlIHdlIHVzZSAxNS1iaXQgZGlnaXRzLiAqLwogCiAjaWZuZGVmIFBZTE9OR19CSVRTX0lOX0RJR0lUCi0jaWYgKGRlZmluZWQgSEFWRV9VSU5UNjRfVCAmJiBkZWZpbmVkIEhBVkVfSU5UNjRfVCAmJiBcCi0gICAgIGRlZmluZWQgSEFWRV9VSU5UMzJfVCAmJiBkZWZpbmVkIEhBVkVfSU5UMzJfVCAmJiBTSVpFT0ZfVk9JRF9QID49IDgpCisjaWYgU0laRU9GX1ZPSURfUCA+PSA4CiAjZGVmaW5lIFBZTE9OR19CSVRTX0lOX0RJR0lUIDMwCiAjZWxzZQogI2RlZmluZSBQWUxPTkdfQklUU19JTl9ESUdJVCAxNQpAQCAtMTQ5LDI2ICs3Miw5IEBACiAgKiB3aXRob3V0IGxvc3Mgb2YgaW5mb3JtYXRpb24uICBTaW1pbGFybHkgZm9yIGludHB0cl90LCB3cnQgYSBzaWduZWQKICAqIGludGVncmFsIHR5cGUuCiAgKi8KLSNpZmRlZiBIQVZFX1VJTlRQVFJfVAogdHlwZWRlZiB1aW50cHRyX3QgICAgICAgUHlfdWludHB0cl90OwogdHlwZWRlZiBpbnRwdHJfdCAgICAgICAgUHlfaW50cHRyX3Q7CiAKLSNlbGlmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0lOVAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBpbnQgICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbGlmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgbG9uZyAgICAgICAgICAgIFB5X2ludHB0cl90OwotCi0jZWxpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiAoU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9OR19MT05HKQotdHlwZWRlZiB1bnNpZ25lZCBQWV9MT05HX0xPTkcgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIFBZX0xPTkdfTE9ORyAgICAgICAgICAgIFB5X2ludHB0cl90OwotCi0jZWxzZQotIyAgIGVycm9yICJQeXRob24gbmVlZHMgYSB0eXBlZGVmIGZvciBQeV91aW50cHRyX3QgaW4gcHlwb3J0LmguIgotI2VuZGlmIC8qIEhBVkVfVUlOVFBUUl9UICovCi0KIC8qIFB5X3NzaXplX3QgaXMgYSBzaWduZWQgaW50ZWdyYWwgdHlwZSBzdWNoIHRoYXQgc2l6ZW9mKFB5X3NzaXplX3QpID09CiAgKiBzaXplb2Yoc2l6ZV90KS4gIEM5OSBkb2Vzbid0IGRlZmluZSBzdWNoIGEgdGhpbmcgZGlyZWN0bHkgKHNpemVfdCBpcyBhbgogICogdW5zaWduZWQgaW50ZWdyYWwgdHlwZSkuICBTZWUgUEVQIDM1MyBmb3IgZGV0YWlscy4KQEAgLTE5NSwxNiArMTAxLDggQEAKIHR5cGVkZWYgaW50IFB5X3NzaXplX2NsZWFuX3Q7CiAjZW5kaWYKIAotLyogTGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBvZiBzaXplX3QuCi0gICBTSVpFX01BWCBpcyBwYXJ0IG9mIEM5OSwgc28gaXQgbWlnaHQgYmUgZGVmaW5lZCBvbiBzb21lCi0gICBwbGF0Zm9ybXMuIElmIGl0IGlzIG5vdCBkZWZpbmVkLCAoc2l6ZV90KS0xIGlzIGEgcG9ydGFibGUKLSAgIGRlZmluaXRpb24gZm9yIEM4OSwgZHVlIHRvIHRoZSB3YXkgc2lnbmVkLT51bnNpZ25lZAotICAgY29udmVyc2lvbiBpcyBkZWZpbmVkLiAqLwotI2lmZGVmIFNJWkVfTUFYCisvKiBMYXJnZXN0IHBvc3NpYmxlIHZhbHVlIG9mIHNpemVfdC4gKi8KICNkZWZpbmUgUFlfU0laRV9NQVggU0laRV9NQVgKLSNlbHNlCi0jZGVmaW5lIFBZX1NJWkVfTUFYICgoc2l6ZV90KS0xKQotI2VuZGlmCiAKIC8qIExhcmdlc3QgcG9zaXRpdmUgdmFsdWUgb2YgdHlwZSBQeV9zc2l6ZV90LiAqLwogI2RlZmluZSBQWV9TU0laRV9UX01BWCAoKFB5X3NzaXplX3QpKCgoc2l6ZV90KS0xKT4+MSkpCkBAIC0yNDcsMjIgKzE0NSw2IEBACiAjICAgZW5kaWYKICNlbmRpZgogCi0vKiBQWV9GT1JNQVRfTE9OR19MT05HIGlzIGFuYWxvZ291cyB0byBQWV9GT1JNQVRfU0laRV9UIGFib3ZlLCBidXQgZm9yCi0gKiB0aGUgbG9uZyBsb25nIHR5cGUgaW5zdGVhZCBvZiB0aGUgc2l6ZV90IHR5cGUuICBJdCdzIG9ubHkgYXZhaWxhYmxlCi0gKiB3aGVuIEhBVkVfTE9OR19MT05HIGlzIGRlZmluZWQuIFRoZSAiaGlnaCBsZXZlbCIgUHl0aG9uIGZvcm1hdAotICogZnVuY3Rpb25zIGxpc3RlZCBhYm92ZSB3aWxsIGludGVycHJldCAibGxkIiBvciAibGx1IiBjb3JyZWN0bHkgb24KLSAqIGFsbCBwbGF0Zm9ybXMuCi0gKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGlmbmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0jICAgICAgIGlmZGVmIE1TX1dJTkRPV1MKLSMgICAgICAgICAgIGRlZmluZSBQWV9GT1JNQVRfTE9OR19MT05HICJJNjQiCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGVycm9yICJUaGlzIHBsYXRmb3JtJ3MgcHljb25maWcuaCBuZWVkcyB0byBkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyIKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotI2VuZGlmCi0KIC8qIFB5X0xPQ0FMIGNhbiBiZSB1c2VkIGluc3RlYWQgb2Ygc3RhdGljIHRvIGdldCB0aGUgZmFzdGVzdCBwb3NzaWJsZSBjYWxsaW5nCiAgKiBjb252ZW50aW9uIGZvciBmdW5jdGlvbnMgdGhhdCBhcmUgbG9jYWwgdG8gYSBnaXZlbiBtb2R1bGUuCiAgKgpAQCAtMjk4LDI2ICsxODAsOSBAQAogI2RlZmluZSBQeV9MT0NBTF9JTkxJTkUodHlwZSkgc3RhdGljIHR5cGUKICNlbmRpZgogCi0vKiBQeV9NRU1DUFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBtZW1jcHkgaW4gY2FzZXMgd2hlcmUgdGhlIGNvcGllZCBibG9ja3MKLSAqIGFyZSBvZnRlbiB2ZXJ5IHNob3J0LiAgV2hpbGUgbW9zdCBwbGF0Zm9ybXMgaGF2ZSBoaWdobHkgb3B0aW1pemVkIGNvZGUgZm9yCi0gKiBsYXJnZSB0cmFuc2ZlcnMsIHRoZSBzZXR1cCBjb3N0cyBmb3IgbWVtY3B5IGFyZSBvZnRlbiBxdWl0ZSBoaWdoLiAgTUVNQ1BZCi0gKiBzb2x2ZXMgdGhpcyBieSBkb2luZyBzaG9ydCBjb3BpZXMgImluIGxpbmUiLgotICovCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2RlZmluZSBQeV9NRU1DUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzaXplX3QgaV8sIG5fID0gKGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjaGFyICp0XyA9ICh2b2lkKikgKHRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjb25zdCBjaGFyICpzXyA9ICh2b2lkKikgKHNvdXJjZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAobl8gPj0gMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbWVtY3B5KHRfLCBzXywgbl8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZm9yIChpXyA9IDA7IGlfIDwgbl87IGlfKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHRfW2lfXSA9IHNfW2lfXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKDApCi0jZWxzZQorLyogUHlfTUVNQ1BZIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LAorICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjgxMjYgKi8KICNkZWZpbmUgUHlfTUVNQ1BZIG1lbWNweQotI2VuZGlmCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIApAQCAtNTcwLDE4ICs0MzUsMTggQEAKICNkZWZpbmUgSEFWRV9QWV9TRVRfNTNCSVRfUFJFQ0lTSU9OIDEKICNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fSEVBREVSIFwKICAgdW5zaWduZWQgaW50IG9sZF9mcGNyLCBuZXdfZnBjcgotI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9TVEFSVAkJCQkJXAotICBkbyB7CQkJCQkJCQkJXAotICAgIF9fYXNtX18gKCJmbW92ZS5sICUlZnBjciwlMCIgOiAiPWciIChvbGRfZnBjcikpOwkJCVwKLSAgICAvKiBTZXQgZG91YmxlIHByZWNpc2lvbiAvIHJvdW5kIHRvIG5lYXJlc3QuICAqLwkJCVwKLSAgICBuZXdfZnBjciA9IChvbGRfZnBjciAmIH4weGYwKSB8IDB4ODA7CQkJCVwKLSAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAotICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChuZXdfZnBjcikpOwlcCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX19hc21fXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKG9sZF9mcGNyKSk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogU2V0IGRvdWJsZSBwcmVjaXNpb24gLyByb3VuZCB0byBuZWFyZXN0LiAgKi8gICAgICAgICAgICAgICAgICAgICBcCisgICAgbmV3X2ZwY3IgPSAob2xkX2ZwY3IgJiB+MHhmMCkgfCAweDgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG5ld19mcGNyKSk7ICAgICAgICBcCiAgIH0gd2hpbGUgKDApCi0jZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0VORAkJCQkJXAotICBkbyB7CQkJCQkJCQkJXAotICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCi0gICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG9sZF9mcGNyKSk7CVwKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAob2xkX2ZwY3IpKTsgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCkBAIC04NTAsMTAgKzcxNSw2IEBACiAjcHJhZ21hIGVycm9yX21lc3NhZ2VzIChvZmYsRV9FTkRfT0ZfTE9PUF9DT0RFX05PVF9SRUFDSEVEKQogI2VuZGlmCiAKLS8qCi0gKiBPbGRlciBNaWNyb3NvZnQgY29tcGlsZXJzIGRvbid0IHN1cHBvcnQgdGhlIEM5OSBsb25nIGxvbmcgbGl0ZXJhbCBzdWZmaXhlcywKLSAqIHNvIHRoZXNlIHdpbGwgYmUgZGVmaW5lZCBpbiBQQy9weWNvbmZpZy5oIGZvciB0aG9zZSBjb21waWxlcnMuCi0gKi8KICNpZm5kZWYgUHlfTEwKICNkZWZpbmUgUHlfTEwoeCkgeCMjTEwKICNlbmRpZgpAQCAtODYyLDE1ICs3MjMsNyBAQAogI2RlZmluZSBQeV9VTEwoeCkgUHlfTEwoeCMjVSkKICNlbmRpZgogCi0jaWZkZWYgVkFfTElTVF9JU19BUlJBWQotI2RlZmluZSBQeV9WQV9DT1BZKHgsIHkpIFB5X01FTUNQWSgoeCksICh5KSwgc2l6ZW9mKHZhX2xpc3QpKQotI2Vsc2UKLSNpZmRlZiBfX3ZhX2NvcHkKLSNkZWZpbmUgUHlfVkFfQ09QWSBfX3ZhX2NvcHkKLSNlbHNlCi0jZGVmaW5lIFB5X1ZBX0NPUFkoeCwgeSkgKHgpID0gKHkpCi0jZW5kaWYKLSNlbmRpZgorI2RlZmluZSBQeV9WQV9DT1BZIHZhX2NvcHkKIAogLyoKICAqIENvbnZlbmllbnQgbWFjcm9zIHRvIGRlYWwgd2l0aCBlbmRpYW5uZXNzIG9mIHRoZSBwbGF0Zm9ybS4gV09SRFNfQklHRU5ESUFOIGlzCkBAIC05MDYsNCArNzU5LDggQEAKICNlbmRpZiAvKiBfTVNDX1ZFUiA+PSAxOTAwICovCiAjZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwogCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorI2VuZGlmCisKICNlbmRpZiAvKiBQeV9QWVBPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0YXRlLmggYi9JbmNsdWRlL3B5c3RhdGUuaAppbmRleCAwNDk5YTc0Li5hZmMzYzBjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RhdGUuaAorKysgYi9JbmNsdWRlL3B5c3RhdGUuaApAQCAtOCwxNCArOCwyMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLyogVGhpcyBsaW1pdGF0aW9uIGlzIGZvciBwZXJmb3JtYW5jZSBhbmQgc2ltcGxpY2l0eS4gSWYgbmVlZGVkIGl0IGNhbiBiZQorcmVtb3ZlZCAod2l0aCBlZmZvcnQpLiAqLworI2RlZmluZSBNQVhfQ09fRVhUUkFfVVNFUlMgMjU1CisKIC8qIFN0YXRlIHNoYXJlZCBiZXR3ZWVuIHRocmVhZHMgKi8KIAogc3RydWN0IF90czsgLyogRm9yd2FyZCAqLwogc3RydWN0IF9pczsgLyogRm9yd2FyZCAqLworc3RydWN0IF9mcmFtZTsgLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgUHlGcmFtZU9iamVjdC4gKi8KIAogI2lmZGVmIFB5X0xJTUlURURfQVBJCiB0eXBlZGVmIHN0cnVjdCBfaXMgUHlJbnRlcnByZXRlclN0YXRlOwogI2Vsc2UKK3R5cGVkZWYgUHlPYmplY3QqICgqX1B5RnJhbWVFdmFsRnVuY3Rpb24pKHN0cnVjdCBfZnJhbWUgKiwgaW50KTsKKwogdHlwZWRlZiBzdHJ1Y3QgX2lzIHsKIAogICAgIHN0cnVjdCBfaXMgKm5leHQ7CkBAIC0zNiwxOSArNDMsMTcgQEAKICNpZmRlZiBIQVZFX0RMT1BFTgogICAgIGludCBkbG9wZW5mbGFnczsKICNlbmRpZgotI2lmZGVmIFdJVEhfVFNDCi0gICAgaW50IHRzY2R1bXA7Ci0jZW5kaWYKIAogICAgIFB5T2JqZWN0ICpidWlsdGluc19jb3B5OworICAgIFB5T2JqZWN0ICppbXBvcnRfZnVuYzsKKyAgICAvKiBJbml0aWFsaXplZCB0byBQeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCgpLiAqLworICAgIF9QeUZyYW1lRXZhbEZ1bmN0aW9uIGV2YWxfZnJhbWU7CiB9IFB5SW50ZXJwcmV0ZXJTdGF0ZTsKICNlbmRpZgogCiAKIC8qIFN0YXRlIHVuaXF1ZSBwZXIgdGhyZWFkICovCiAKLXN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCi0KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFB5X3RyYWNlZnVuYyByZXR1cm4gLTEgd2hlbiByYWlzaW5nIGFuIGV4Y2VwdGlvbiwgb3IgMCBmb3Igc3VjY2Vzcy4gKi8KIHR5cGVkZWYgaW50ICgqUHlfdHJhY2VmdW5jKShQeU9iamVjdCAqLCBzdHJ1Y3QgX2ZyYW1lICosIGludCwgUHlPYmplY3QgKik7CkBAIC0xMzcsNiArMTQyLDEyIEBACiAgICAgUHlPYmplY3QgKmNvcm91dGluZV93cmFwcGVyOwogICAgIGludCBpbl9jb3JvdXRpbmVfd3JhcHBlcjsKIAorICAgIFB5X3NzaXplX3QgY29fZXh0cmFfdXNlcl9jb3VudDsKKyAgICBmcmVlZnVuYyBjb19leHRyYV9mcmVlZnVuY3NbTUFYX0NPX0VYVFJBX1VTRVJTXTsKKworICAgIFB5T2JqZWN0ICphc3luY19nZW5fZmlyc3RpdGVyOworICAgIFB5T2JqZWN0ICphc3luY19nZW5fZmluYWxpemVyOworCiAgICAgLyogWFhYIHNpZ25hbCBoYW5kbGVycyBzaG91bGQgYWxzbyBiZSBoZXJlICovCiAKIH0gUHlUaHJlYWRTdGF0ZTsKQEAgLTE0Niw3ICsxNTcsOSBAQAogUHlBUElfRlVOQyhQeUludGVycHJldGVyU3RhdGUgKikgUHlJbnRlcnByZXRlclN0YXRlX05ldyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShQeUludGVycHJldGVyU3RhdGUgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0Kiwgc3RydWN0IFB5TW9kdWxlRGVmKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogLyogTmV3IGluIDMuMyAqLwogUHlBUElfRlVOQyhpbnQpIFB5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0Kiwgc3RydWN0IFB5TW9kdWxlRGVmKik7CkBAIC0xNTgsMTQgKzE3MSwyMCBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX05ldyhQeUludGVycHJldGVyU3RhdGUgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUaHJlYWRTdGF0ZV9Jbml0KFB5VGhyZWFkU3RhdGUgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkU3RhdGVfQ2xlYXIoUHlUaHJlYWRTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9EZWxldGUoUHlUaHJlYWRTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5VGhyZWFkU3RhdGVfRGVsZXRlRXhjZXB0KFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjaWZkZWYgV0lUSF9USFJFQUQKIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50KHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlHSUxTdGF0ZV9SZWluaXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjZW5kaWYKIAogLyogUmV0dXJuIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZS4gVGhlIGdsb2JhbCBpbnRlcnByZXRlciBsb2NrIG11c3QgYmUgaGVsZC4KQEAgLTE3Myw5ICsxOTIsMTEgQEAKICAqIHRoZSBjYWxsZXIgbmVlZG4ndCBjaGVjayBmb3IgTlVMTCkuICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9HZXQodm9pZCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFNpbWlsYXIgdG8gUHlUaHJlYWRTdGF0ZV9HZXQoKSwgYnV0IGRvbid0IGlzc3VlIGEgZmF0YWwgZXJyb3IKICAqIGlmIGl0IGlzIE5VTEwuICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9Td2FwKFB5VGhyZWFkU3RhdGUgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5VGhyZWFkU3RhdGVfR2V0RGljdCh2b2lkKTsKQEAgLTI0MSwxMSArMjYyLDIzIEBACiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKHZvaWQpOwogCi0vKiBIZWxwZXIvZGlhZ25vc3RpYyBmdW5jdGlvbiAtIHJldHVybiAxIGlmIHRoZSBjdXJyZW50IHRocmVhZAotICogY3VycmVudGx5IGhvbGRzIHRoZSBHSUwsIDAgb3RoZXJ3aXNlCi0gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIElzc3VlICMyNjU1ODogRmxhZyB0byBkaXNhYmxlIFB5R0lMU3RhdGVfQ2hlY2soKS4KKyAgIElmIHNldCB0byBub24temVybywgUHlHSUxTdGF0ZV9DaGVjaygpIGFsd2F5cyByZXR1cm4gMS4gKi8KK1B5QVBJX0RBVEEoaW50KSBfUHlHSUxTdGF0ZV9jaGVja19lbmFibGVkOworCisvKiBIZWxwZXIvZGlhZ25vc3RpYyBmdW5jdGlvbiAtIHJldHVybiAxIGlmIHRoZSBjdXJyZW50IHRocmVhZAorICAgY3VycmVudGx5IGhvbGRzIHRoZSBHSUwsIDAgb3RoZXJ3aXNlLgorCisgICBUaGUgZnVuY3Rpb24gcmV0dXJucyAxIGlmIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgaXMgbm9uLXplcm8uICovCiBQeUFQSV9GVU5DKGludCkgUHlHSUxTdGF0ZV9DaGVjayh2b2lkKTsKKworLyogVW5zYWZlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc2luZ2xlIFB5SW50ZXJwcmV0ZXJTdGF0ZSB1c2VkIGJ5IHRoaXMgcHJvY2VzcycKKyAgIEdJTFN0YXRlIGltcGxlbWVudGF0aW9uLgorCisgICBSZXR1cm4gTlVMTCBiZWZvcmUgX1B5R0lMU3RhdGVfSW5pdCgpIGlzIGNhbGxlZCBhbmQgYWZ0ZXIgX1B5R0lMU3RhdGVfRmluaSgpCisgICBpcyBjYWxsZWQuICovCitQeUFQSV9GVU5DKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKSBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKHZvaWQpOwogI2VuZGlmCiAKICNlbmRpZiAgIC8qICNpZmRlZiBXSVRIX1RIUkVBRCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0cmhleC5oIGIvSW5jbHVkZS9weXN0cmhleC5oCmluZGV4IDFkYzEyNTUuLjY2YTMwZTIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdHJoZXguaAorKysgYi9JbmNsdWRlL3B5c3RyaGV4LmgKQEAgLTUsMTAgKzUsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFJldHVybnMgYSBzdHIoKSBjb250YWluaW5nIHRoZSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXgoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CiAvKiBSZXR1cm5zIGEgYnl0ZXMoKSBjb250YWluaW5nIHRoZSBBU0NJSSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXhfYnl0ZXMoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0cnRvZC5oIGIvSW5jbHVkZS9weXN0cnRvZC5oCmluZGV4IDIzZmQxYzYuLmMxZTg0ZGUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdHJ0b2QuaAorKysgYi9JbmNsdWRlL3B5c3RydG9kLmgKQEAgLTE5LDYgKzE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdHlwZSk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcygKKyAgICBjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBjb25zdCBjaGFyICp3aGF0LCBQeU9iamVjdCAqb2JqLCB2b2lkICphcmcsCisgICAgUHlPYmplY3QgKigqaW5uZXJmdW5jKShjb25zdCBjaGFyICosIFB5X3NzaXplX3QsIHZvaWQgKikpOworCiBQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X3BhcnNlX2luZl9vcl9uYW4oY29uc3QgY2hhciAqcCwgY2hhciAqKmVuZHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRob25ydW4uaCBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKaW5kZXggOWMyZTgxMy4uY2ZhMGE5ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAorKysgYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCkBAIC02Niw4ICs2Niw4IEBACiAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwogICAgIGNvbnN0IGNoYXIqIGVuYywKICAgICBpbnQgc3RhcnQsCi0gICAgY2hhciAqcHMxLAotICAgIGNoYXIgKnBzMiwKKyAgICBjb25zdCBjaGFyICpwczEsCisgICAgY29uc3QgY2hhciAqcHMyLAogICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsCiAgICAgaW50ICplcnJjb2RlLAogICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTc2LDggKzc2LDggQEAKICAgICBQeU9iamVjdCAqZmlsZW5hbWUsCiAgICAgY29uc3QgY2hhciogZW5jLAogICAgIGludCBzdGFydCwKLSAgICBjaGFyICpwczEsCi0gICAgY2hhciAqcHMyLAorICAgIGNvbnN0IGNoYXIgKnBzMSwKKyAgICBjb25zdCBjaGFyICpwczIsCiAgICAgUHlDb21waWxlckZsYWdzICpmbGFncywKICAgICBpbnQgKmVycmNvZGUsCiAgICAgUHlBcmVuYSAqYXJlbmEpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRocmVhZC5oIGIvSW5jbHVkZS9weXRocmVhZC5oCmluZGV4IDZlOWYzMDMuLmRkNjgxYmUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aHJlYWQuaAorKysgYi9JbmNsdWRlL3B5dGhyZWFkLmgKQEAgLTM3LDE5ICszNywxNCBAQAogICAgbW9kdWxlIGV4cG9zZXMgYSBoaWdoZXItbGV2ZWwgQVBJLCB3aXRoIHRpbWVvdXRzIGV4cHJlc3NlZCBpbiBzZWNvbmRzCiAgICBhbmQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbGxvd2VkLgogKi8KLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQotI2RlZmluZSBQWV9USU1FT1VUX1QgUFlfTE9OR19MT05HCisjZGVmaW5lIFBZX1RJTUVPVVRfVCBsb25nIGxvbmcKICNkZWZpbmUgUFlfVElNRU9VVF9NQVggUFlfTExPTkdfTUFYCi0jZWxzZQotI2RlZmluZSBQWV9USU1FT1VUX1QgbG9uZwotI2RlZmluZSBQWV9USU1FT1VUX01BWCBMT05HX01BWAotI2VuZGlmCiAKIC8qIEluIHRoZSBOVCBBUEksIHRoZSB0aW1lb3V0IGlzIGEgRFdPUkQgYW5kIGlzIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMgKi8KICNpZiBkZWZpbmVkIChOVF9USFJFQURTKQotI2lmIChQeV9MTCgweEZGRkZGRkZGKSAqIDEwMDAgPCBQWV9USU1FT1VUX01BWCkKKyNpZiAweEZGRkZGRkZGTEwgKiAxMDAwIDwgUFlfVElNRU9VVF9NQVgKICN1bmRlZiBQWV9USU1FT1VUX01BWAotI2RlZmluZSBQWV9USU1FT1VUX01BWCAoUHlfTEwoMHhGRkZGRkZGRikgKiAxMDAwKQorI2RlZmluZSBQWV9USU1FT1VUX01BWCAoMHhGRkZGRkZGRkxMICogMTAwMCkKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aW1lLmggYi9JbmNsdWRlL3B5dGltZS5oCmluZGV4IDQ5NDMyMmMuLjg3YWM3ZmMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aW1lLmgKKysrIGIvSW5jbHVkZS9weXRpbWUuaApAQCAtMTMsMTYgKzEzLDEyIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi0jaWZkZWYgUFlfSU5UNjRfVAogLyogX1B5VGltZV90OiBQeXRob24gdGltZXN0YW1wIHdpdGggc3Vic2Vjb25kIHByZWNpc2lvbi4gSXQgY2FuIGJlIHVzZWQgdG8KICAgIHN0b3JlIGEgZHVyYXRpb24sIGFuZCBzbyBpbmRpcmVjdGx5IGEgZGF0ZSAocmVsYXRlZCB0byBhbm90aGVyIGRhdGUsIGxpa2UKICAgIFVOSVggZXBvY2gpLiAqLwotdHlwZWRlZiBQWV9JTlQ2NF9UIF9QeVRpbWVfdDsKK3R5cGVkZWYgaW50NjRfdCBfUHlUaW1lX3Q7CiAjZGVmaW5lIF9QeVRpbWVfTUlOIFBZX0xMT05HX01JTgogI2RlZmluZSBfUHlUaW1lX01BWCBQWV9MTE9OR19NQVgKLSNlbHNlCi0jICBlcnJvciAiX1B5VGltZV90IG5lZWQgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHR5cGUiCi0jZW5kaWYKIAogdHlwZWRlZiBlbnVtIHsKICAgICAvKiBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKS4KQEAgLTMwLDcgKzI2LDEwIEBACiAgICAgX1B5VGltZV9ST1VORF9GTE9PUj0wLAogICAgIC8qIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpLgogICAgICAgIEZvciBleGFtcGxlLCB1c2VkIGZvciB0aW1lb3V0IHRvIHdhaXQgImF0IGxlYXN0IiBOIHNlY29uZHMuICovCi0gICAgX1B5VGltZV9ST1VORF9DRUlMSU5HCisgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HPTEsCisgICAgLyogUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG8gbmVhcmVzdCBldmVuIGludGVnZXIuCisgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgdG8gcm91bmQgZnJvbSBhIFB5dGhvbiBmbG9hdC4gKi8KKyAgICBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTgogfSBfUHlUaW1lX3JvdW5kX3Q7CiAKIC8qIENvbnZlcnQgYSB0aW1lX3QgdG8gYSBQeUxvbmcuICovCkBAIC03NSw3ICs3NCw3IEBACiAgICAgICAgICAgICAoKF9QeVRpbWVfdCkoc2Vjb25kcykgKiAoMTAwMCAqIDEwMDAgKiAxMDAwKSkKIAogLyogQ3JlYXRlIGEgdGltZXN0YW1wIGZyb20gYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICovCi1QeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKTsKK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhsb25nIGxvbmcgbnMpOwogCiAvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgKFB5dGhvbiBmbG9hdCBvciBpbnQpIHRvIGEgdGltZXRhbXAuCiAgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KQEAgLTE4NSw2ICsxODQsMTQgQEAKICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfSW5pdCh2b2lkKTsKIAorLyogQ29udmVydHMgYSB0aW1lc3RhbXAgdG8gdGhlIEdyZWdvcmlhbiB0aW1lLCB1c2luZyB0aGUgbG9jYWwgdGltZSB6b25lLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9sb2NhbHRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pOworCisvKiBDb252ZXJ0cyBhIHRpbWVzdGFtcCB0byB0aGUgR3JlZ29yaWFuIHRpbWUsIGFzc3VtaW5nIFVUQy4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfZ210aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2V0b2JqZWN0LmggYi9JbmNsdWRlL3NldG9iamVjdC5oCmluZGV4IGYxN2JjMWIuLjg3ZWMxYzggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc2V0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zZXRvYmplY3QuaApAQCAtMTAsMTIgKzEwLDEzIEBACiAKIC8qIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBlbnRyaWVzIGluIHRoZSB0YWJsZToKIAotMS4gVW51c2VkOiAga2V5ID09IE5VTEwKLTIuIEFjdGl2ZTogIGtleSAhPSBOVUxMIGFuZCBrZXkgIT0gZHVtbXkKLTMuIER1bW15OiAgIGtleSA9PSBkdW1teQorMS4gVW51c2VkOiAga2V5ID09IE5VTEwgYW5kIGhhc2ggPT0gMAorMi4gRHVtbXk6ICAga2V5ID09IGR1bW15IGFuZCBoYXNoID09IC0xCiszLiBBY3RpdmU6ICBrZXkgIT0gTlVMTCBhbmQga2V5ICE9IGR1bW15IGFuZCBoYXNoICE9IC0xCiAKLVRoZSBoYXNoIGZpZWxkIG9mIFVudXNlZCBzbG90cyBoYXZlIG5vIG1lYW5pbmcuCi1UaGUgaGFzaCBmaWVsZCBvZiBEdW1tbnkgc2xvdHMgYXJlIHNldCB0byAtMQorVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIHNsb3RzIGlzIGFsd2F5cyB6ZXJvLgorCitUaGUgaGFzaCBmaWVsZCBvZiBEdW1teSBzbG90cyBhcmUgc2V0IHRvIC0xCiBtZWFuaW5nIHRoYXQgZHVtbXkgZW50cmllcyBjYW4gYmUgZGV0ZWN0ZWQgYnkKIGVpdGhlciBlbnRyeS0+a2V5PT1kdW1teSBvciBieSBlbnRyeS0+aGFzaD09LTEuCiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKaW5kZXggOTQ4ZjY5MC4uNWRhOGE0NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAorKysgYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCkBAIC00OSwxMCArNDksOCBAQAogI2RlZmluZSBUX09CSkVDVF9FWCAxNiAgLyogTGlrZSBUX09CSkVDVCwgYnV0IHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGluZyB0byBOb25lLiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNwogI2RlZmluZSBUX1VMT05HTE9ORyAgICAgMTgKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogCiAjZGVmaW5lIFRfUFlTU0laRVQgICAgICAxOSAgICAgIC8qIFB5X3NzaXplX3QgKi8KICNkZWZpbmUgVF9OT05FICAgICAgICAgIDIwICAgICAgLyogVmFsdWUgaXMgYWx3YXlzIE5vbmUgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3ltdGFibGUuaCBiL0luY2x1ZGUvc3ltdGFibGUuaAppbmRleCAxNDA5Y2Q5Li44NmFlM2MyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5bXRhYmxlLmgKKysrIGIvSW5jbHVkZS9zeW10YWJsZS5oCkBAIC00OCw2ICs0OCw3IEBACiAgICAgdW5zaWduZWQgc3RlX2NoaWxkX2ZyZWUgOiAxOyAgLyogdHJ1ZSBpZiBhIGNoaWxkIGJsb2NrIGhhcyBmcmVlIHZhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGZyZWUgcmVmcyB0byBnbG9iYWxzICovCiAgICAgdW5zaWduZWQgc3RlX2dlbmVyYXRvciA6IDE7ICAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgaXMgYSBnZW5lcmF0b3IgKi8KKyAgICB1bnNpZ25lZCBzdGVfY29yb3V0aW5lIDogMTsgICAvKiB0cnVlIGlmIG5hbWVzcGFjZSBpcyBhIGNvcm91dGluZSAqLwogICAgIHVuc2lnbmVkIHN0ZV92YXJhcmdzIDogMTsgICAgIC8qIHRydWUgaWYgYmxvY2sgaGFzIHZhcmFyZ3MgKi8KICAgICB1bnNpZ25lZCBzdGVfdmFya2V5d29yZHMgOiAxOyAvKiB0cnVlIGlmIGJsb2NrIGhhcyB2YXJrZXl3b3JkcyAqLwogICAgIHVuc2lnbmVkIHN0ZV9yZXR1cm5zX3ZhbHVlIDogMTsgIC8qIHRydWUgaWYgbmFtZXNwYWNlIHVzZXMgcmV0dXJuIHdpdGgKQEAgLTkxLDYgKzkyLDcgQEAKICNkZWZpbmUgREVGX0ZSRUUgMjw8NCAgICAgICAgICAvKiBuYW1lIHVzZWQgYnV0IG5vdCBkZWZpbmVkIGluIG5lc3RlZCBibG9jayAqLwogI2RlZmluZSBERUZfRlJFRV9DTEFTUyAyPDw1ICAgIC8qIGZyZWUgdmFyaWFibGUgZnJvbSBjbGFzcydzIG1ldGhvZCAqLwogI2RlZmluZSBERUZfSU1QT1JUIDI8PDYgICAgICAgIC8qIGFzc2lnbm1lbnQgb2NjdXJyZWQgdmlhIGltcG9ydCAqLworI2RlZmluZSBERUZfQU5OT1QgMjw8NyAgICAgICAgIC8qIHRoaXMgbmFtZSBpcyBhbm5vdGF0ZWQgKi8KIAogI2RlZmluZSBERUZfQk9VTkQgKERFRl9MT0NBTCB8IERFRl9QQVJBTSB8IERFRl9JTVBPUlQpCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3lzbW9kdWxlLmggYi9JbmNsdWRlL3N5c21vZHVsZS5oCmluZGV4IGNkZTEwYWMuLmM1NTQ3ZmYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3lzbW9kdWxlLmgKKysrIGIvSW5jbHVkZS9zeXNtb2R1bGUuaApAQCAtOCwxMSArOCwxMSBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTeXNfR2V0T2JqZWN0KGNvbnN0IGNoYXIgKik7CitQeUFQSV9GVU5DKGludCkgUHlTeXNfU2V0T2JqZWN0KGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN5c19HZXRPYmplY3RJZChfUHlfSWRlbnRpZmllciAqa2V5KTsKLSNlbmRpZgotUHlBUElfRlVOQyhpbnQpIFB5U3lzX1NldE9iamVjdChjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeVN5c19TZXRPYmplY3RJZChfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqKTsKKyNlbmRpZgogCiBQeUFQSV9GVU5DKHZvaWQpIFB5U3lzX1NldEFyZ3YoaW50LCB3Y2hhcl90ICoqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlTeXNfU2V0QXJndkV4KGludCwgd2NoYXJfdCAqKiwgaW50KTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHJhY2ViYWNrLmggYi9JbmNsdWRlL3RyYWNlYmFjay5oCmluZGV4IGMzZWNiZTIuLmI1ODc0MTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHJhY2ViYWNrLmgKKysrIGIvSW5jbHVkZS90cmFjZWJhY2suaApAQCAtMzEsNiArMzEsNyBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VHJhY2VCYWNrX1R5cGU7CiAjZGVmaW5lIFB5VHJhY2VCYWNrX0NoZWNrKHYpIChQeV9UWVBFKHYpID09ICZQeVRyYWNlQmFja19UeXBlKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBXcml0ZSB0aGUgUHl0aG9uIHRyYWNlYmFjayBpbnRvIHRoZSBmaWxlICdmZCcuIEZvciBleGFtcGxlOgogCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKQEAgLTUzLDE5ICs1NCw2NCBAQAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CiAKIC8qIFdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW50byB0aGUgZmlsZSAnZmQnLiBjdXJyZW50X3RocmVhZCBjYW4gYmUKLSAgIE5VTEwuIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCisgICBOVUxMLgorCisgICBSZXR1cm4gTlVMTCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBtZXNzYWdlIG9uIGVycm9yLgogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gZm9yIGRlYnVnIHB1cnBvc2Ugb25seS4gSXQgY2FsbHMKICAgIF9QeV9EdW1wVHJhY2ViYWNrKCkgZm9yIGVhY2ggdGhyZWFkLCBhbmQgc28gaGFzIHRoZSBzYW1lIGxpbWl0YXRpb25zLiBJdAogICAgb25seSB3cml0ZSB0aGUgdHJhY2ViYWNrIG9mIHRoZSBmaXJzdCAxMDAgdGhyZWFkczogd3JpdGUgIi4uLiIgaWYgdGhlcmUgYXJlCiAgICBtb3JlIHRocmVhZHMuCiAKKyAgIElmIGN1cnJlbnRfdHN0YXRlIGlzIE5VTEwsIHRoZSBmdW5jdGlvbiB0cmllcyB0byBnZXQgdGhlIFB5dGhvbiB0aHJlYWQgc3RhdGUKKyAgIG9mIHRoZSBjdXJyZW50IHRocmVhZC4gSXQgaXMgbm90IGFuIGVycm9yIGlmIHRoZSBmdW5jdGlvbiBpcyB1bmFibGUgdG8gZ2V0CisgICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLgorCisgICBJZiBpbnRlcnAgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgZnJvbQorICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSwgb3IgZnJvbQorICAgX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSgpIGluIGxhc3QgcmVzb3J0LgorCisgICBJdCBpcyBiZXR0ZXIgdG8gcGFzcyBOVUxMIHRvIGludGVycCBhbmQgY3VycmVudF90c3RhdGUsIHRoZSBmdW5jdGlvbiB0cmllcworICAgZGlmZmVyZW50IG9wdGlvbnMgdG8gcmV0cmlldmUgdGhlc2UgaW5mb3JtYXRpb25zLgorCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIqKSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoCi0gICAgaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKLSAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCk7CisgICAgaW50IGZkLAorICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAorICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdHN0YXRlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCisvKiBXcml0ZSBhIFVuaWNvZGUgb2JqZWN0IGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4gRW5jb2RlIHRoZSBzdHJpbmcgdG8KKyAgIEFTQ0lJIHVzaW5nIHRoZSBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuCisKKyAgIERvIG5vdGhpbmcgaWYgdGV4dCBpcyBub3QgYSBVbmljb2RlIG9iamVjdC4gVGhlIGZ1bmN0aW9uIGFjY2VwdHMgVW5pY29kZQorICAgc3RyaW5nIHdoaWNoIGlzIG5vdCByZWFkeSAoUHlVbmljb2RlX1dDSEFSX0tJTkQpLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcEFTQ0lJKGludCBmZCwgUHlPYmplY3QgKnRleHQpOworCisvKiBGb3JtYXQgYW4gaW50ZWdlciBhcyBkZWNpbWFsIGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X0R1bXBEZWNpbWFsKAorICAgIGludCBmZCwKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKworLyogRm9ybWF0IGFuIGludGVnZXIgYXMgaGV4YWRlY2ltYWwgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkIHdpdGggYXQgbGVhc3QKKyAgIHdpZHRoIGRpZ2l0cy4KKworICAgVGhlIG1heGltdW0gd2lkdGggaXMgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjIgZGlnaXRzLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcEhleGFkZWNpbWFsKAorICAgIGludCBmZCwKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlLAorICAgIFB5X3NzaXplX3Qgd2lkdGgpOworCisjZW5kaWYgICAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCmluZGV4IDZiNmFjZDcuLmY4Zjk4YmQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCkBAIC0xMDMsMTAgKzEwMyw2IEBACiAjIGVuZGlmCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSMgIGRlZmluZSBIQVZFX01CQ1MKLSNlbmRpZgotCiAjaWZkZWYgSEFWRV9XQ0hBUl9ICiAvKiBXb3JrIGFyb3VuZCBhIGNvc21ldGljIGJ1ZyBpbiBCU0RJIDQueCB3Y2hhci5oOyB0aGFua3MgdG8gVGhvbWFzIFdvdXRlcnMgKi8KICMgaWZkZWYgX0hBVkVfQlNESQpAQCAtMTE3LDIxICsxMTMsOSBAQAogCiAvKiBQeV9VQ1M0IGFuZCBQeV9VQ1MyIGFyZSB0eXBlZGVmcyBmb3IgdGhlIHJlc3BlY3RpdmUKICAgIHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLiAqLwotI2lmIFNJWkVPRl9JTlQgPT0gNAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgUHlfVUNTNDsKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQeV9VQ1M0OwotI2Vsc2UKLSNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTNCIKLSNlbmRpZgotCi0jaWYgU0laRU9GX1NIT1JUID09IDIKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgUHlfVUNTMjsKLSNlbHNlCi0jZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzIiCi0jZW5kaWYKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFB5X1VDUzE7Cit0eXBlZGVmIHVpbnQzMl90IFB5X1VDUzQ7Cit0eXBlZGVmIHVpbnQxNl90IFB5X1VDUzI7Cit0eXBlZGVmIHVpbnQ4X3QgUHlfVUNTMTsKIAogLyogLS0tIEludGVybmFsIFVuaWNvZGUgT3BlcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE3Miw3ICsxNTYsNyBAQAogICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKGNoKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0NPUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgXAotICAgIFB5X01FTUNQWSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKKyAgICBtZW1jcHkoKHRhcmdldCksIChzb3VyY2UpLCAobGVuZ3RoKSpzaXplb2YoUHlfVU5JQ09ERSkpCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9GSUxMKHRhcmdldCwgdmFsdWUsIGxlbmd0aCkgXAogICAgIGRvIHtQeV9zc2l6ZV90IGlfOyBQeV9VTklDT0RFICp0XyA9ICh0YXJnZXQpOyBQeV9VTklDT0RFIHZfID0gKHZhbHVlKTtcCkBAIC05MDAsNyArODg0LDcgQEAKICAgICAvKiBtaW5pbXVtIGNoYXJhY3RlciAoZGVmYXVsdDogMTI3LCBBU0NJSSkgKi8KICAgICBQeV9VQ1M0IG1pbl9jaGFyOwogCi0gICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGJ5IDI1JSAoZGVmYXVsdDogMCkuICovCisgICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIChkZWZhdWx0OiAwKS4gKi8KICAgICB1bnNpZ25lZCBjaGFyIG92ZXJhbGxvY2F0ZTsKIAogICAgIC8qIElmIHJlYWRvbmx5IGlzIDEsIGJ1ZmZlciBpcyBhIHNoYXJlZCBzdHJpbmcgKGNhbm5vdCBiZSBtb2RpZmllZCkKQEAgLTkzNCw2ICs5MTgsMjMgQEAKIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpOwogCisvKiBQcmVwYXJlIHRoZSBidWZmZXIgdG8gaGF2ZSBhdCBsZWFzdCB0aGUga2luZCBLSU5ELgorICAgRm9yIGV4YW1wbGUsIGtpbmQ9UHlVbmljb2RlXzJCWVRFX0tJTkQgZW5zdXJlcyB0aGF0IHRoZSB3cml0ZXIgd2lsbAorICAgc3VwcG9ydCBjaGFyYWN0ZXJzIGluIHJhbmdlIFUrMDAwLVUrRkZGRi4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisjZGVmaW5lIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoV1JJVEVSLCBLSU5EKSAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoKEtJTkQpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKEtJTkQpIDw9IChXUklURVIpLT5raW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA6IF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbCgoV1JJVEVSKSwgKEtJTkQpKSkKKworLyogRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKQorICAgbWFjcm8gaW5zdGVhZC4gKi8KK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQpOworCiAvKiBBcHBlbmQgYSBVbmljb2RlIGNoYXJhY3Rlci4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwogUHlBUElfRlVOQyhpbnQpCkBAIC0xMTcwLDIyICsxMTcxLDMwIEBACiAgICAgKTsKIAogLyogRGVjb2RlIGEgVW5pY29kZSBvYmplY3QgdW5pY29kZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uCi0gICBvYmplY3QuICovCisgICBvYmplY3QuCisKKyAgIFRoaXMgQVBJIGlzIERFUFJFQ0FURUQuIFRoZSBvbmx5IHN1cHBvcnRlZCBzdGFuZGFyZCBlbmNvZGluZyBpcyByb3QxMy4KKyAgIFVzZSBQeUNvZGVjX0RlY29kZSgpIHRvIGRlY29kZSB3aXRoIHJvdDEzIGFuZCBub24tc3RhbmRhcmQgY29kZWNzCisgICB0aGF0IGRlY29kZSBmcm9tIHN0ci4gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsICAgICAgIC8qIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCi0gICAgKTsKKyAgICApIFB5X0RFUFJFQ0FURUQoMy42KTsKIAogLyogRGVjb2RlIGEgVW5pY29kZSBvYmplY3QgdW5pY29kZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgVW5pY29kZQotICAgb2JqZWN0LiAqLworICAgb2JqZWN0LgorCisgICBUaGlzIEFQSSBpcyBERVBSRUNBVEVELiBUaGUgb25seSBzdXBwb3J0ZWQgc3RhbmRhcmQgZW5jb2RpbmcgaXMgcm90MTMuCisgICBVc2UgUHlDb2RlY19EZWNvZGUoKSB0byBkZWNvZGUgd2l0aCByb3QxMyBhbmQgbm9uLXN0YW5kYXJkIGNvZGVjcworICAgdGhhdCBkZWNvZGUgZnJvbSBzdHIgdG8gc3RyLiAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsICAgICAgIC8qIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCi0gICAgKTsKKyAgICApIFB5X0RFUFJFQ0FURUQoMy42KTsKIAogLyogRW5jb2RlcyBhIFB5X1VOSUNPREUgYnVmZmVyIG9mIHRoZSBnaXZlbiBzaXplIGFuZCByZXR1cm5zIGEKICAgIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAqLwpAQCAtMTIwMCwxMyArMTIwOSwxOCBAQAogI2VuZGlmCiAKIC8qIEVuY29kZXMgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIFB5dGhvbgotICAgb2JqZWN0LiAqLworICAgb2JqZWN0LgorCisgICBUaGlzIEFQSSBpcyBERVBSRUNBVEVELiAgSXQgaXMgc3VwZXJjZWVkZWQgYnkgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpCisgICBzaW5jZSBhbGwgc3RhbmRhcmQgZW5jb2RpbmdzIChleGNlcHQgcm90MTMpIGVuY29kZSBzdHIgdG8gYnl0ZXMuCisgICBVc2UgUHlDb2RlY19FbmNvZGUoKSBmb3IgZW5jb2Rpbmcgd2l0aCByb3QxMyBhbmQgbm9uLXN0YW5kYXJkIGNvZGVjcworICAgdGhhdCBlbmNvZGUgZm9ybSBzdHIgdG8gbm9uLWJ5dGVzLiAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCgKICAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICBjb25zdCBjaGFyICplbmNvZGluZywgICAgICAgLyogZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KLSAgICApOworICAgICkgUHlfREVQUkVDQVRFRCgzLjYpOwogCiAvKiBFbmNvZGVzIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBQeXRob24gc3RyaW5nCiAgICBvYmplY3QuICovCkBAIC0xMjE4LDEzICsxMjMyLDE3IEBACiAgICAgKTsKIAogLyogRW5jb2RlcyBhIFVuaWNvZGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgVW5pY29kZQotICAgb2JqZWN0LiAqLworICAgb2JqZWN0LgorCisgICBUaGlzIEFQSSBpcyBERVBSRUNBVEVELiAgVGhlIG9ubHkgc3VwcG9ydGVkIHN0YW5kYXJkIGVuY29kaW5ncyBpcyByb3QxMy4KKyAgIFVzZSBQeUNvZGVjX0VuY29kZSgpIHRvIGVuY29kZSB3aXRoIHJvdDEzIGFuZCBub24tc3RhbmRhcmQgY29kZWNzCisgICB0aGF0IGVuY29kZSBmcm9tIHN0ciB0byBzdHIuICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICBjb25zdCBjaGFyICplbmNvZGluZywgICAgICAgLyogZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KLSAgICApOworICAgICkgUHlfREVQUkVDQVRFRCgzLjYpOwogCiAvKiBCdWlsZCBhbiBlbmNvZGluZyBtYXAuICovCiAKQEAgLTE0NjgsNiArMTQ4NiwxNyBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CiAKKy8qIEhlbHBlciBmb3IgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUgdGhhdCBkZXRlY3RzIGludmFsaWQgZXNjYXBlCisgICBjaGFycy4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoCisgICAgICAgIGNvbnN0IGNoYXIgKnN0cmluZywgICAgIC8qIFVuaWNvZGUtRXNjYXBlIGVuY29kZWQgc3RyaW5nICovCisgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCisgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgICAgIGNvbnN0IGNoYXIgKipmaXJzdF9pbnZhbGlkX2VzY2FwZSAgLyogb24gcmV0dXJuLCBwb2ludHMgdG8gZmlyc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkIGVzY2FwZWQgY2hhciBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZy4gKi8KKyk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKAogICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgICk7CkBAIC0xNjQwLDEzICsxNjY5LDEzIEBACiAgICAgKTsKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9EZWNvZGVNQkNTKAogICAgIGNvbnN0IGNoYXIgKnN0cmluZywgICAgICAgICAvKiBNQkNTIGVuY29kZWQgc3RyaW5nICovCi0gICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CiAKQEAgLTE2ODMsNyArMTcxMiw3IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIAotI2VuZGlmIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE5MzgsNiArMTk2NywxNCBAQAogICAgIFB5T2JqZWN0ICpzZXEgICAgICAgICAgICAgICAvKiBTZXF1ZW5jZSBvYmplY3QgKi8KICAgICApOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVVuaWNvZGVfSm9pbkFycmF5KAorICAgIFB5T2JqZWN0ICpzZXBhcmF0b3IsCisgICAgUHlPYmplY3QgKippdGVtcywKKyAgICBQeV9zc2l6ZV90IHNlcWxlbgorICAgICk7CisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KKwogLyogUmV0dXJuIDEgaWYgc3Vic3RyIG1hdGNoZXMgc3RyW3N0YXJ0OmVuZF0gYXQgdGhlIGdpdmVuIHRhaWwgZW5kLCAwCiAgICBvdGhlcndpc2UuICovCiAKQEAgLTIyNzgsMTEgKzIzMTUsMTcgQEAKICAgICBpbnQgY2hlY2tfY29udGVudCk7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmV0dXJuIGFuIGludGVybmVkIFVuaWNvZGUgb2JqZWN0IGZvciBhbiBJZGVudGlmaWVyOyBtYXkgZmFpbCBpZiB0aGVyZSBpcyBubyBtZW1vcnkuKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0Zyb21JZChfUHlfSWRlbnRpZmllciopOwogLyogQ2xlYXIgYWxsIHN0YXRpYyBzdHJpbmdzLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncyh2b2lkKTsKIAorLyogRmFzdCBlcXVhbGl0eSBjaGVjayB3aGVuIHRoZSBpbnB1dHMgYXJlIGtub3duIHRvIGJlIGV4YWN0IHVuaWNvZGUgdHlwZXMKKyAgIGFuZCB3aGVyZSB0aGUgaGFzaCB2YWx1ZXMgYXJlIGVxdWFsIChpLmUuIGEgdmVyeSBwcm9iYWJsZSBtYXRjaCkgKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0VRKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS93YXJuaW5ncy5oIGIvSW5jbHVkZS93YXJuaW5ncy5oCmluZGV4IGVmZmI5ZmFkLi5jMWM2OTkyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3dhcm5pbmdzLmgKKysrIGIvSW5jbHVkZS93YXJuaW5ncy5oCkBAIC0xNyw2ICsxNywxMyBAQAogICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCiAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgICAgICAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLwogICAgIC4uLik7CisKKy8qIEVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZyAqLworUHlBUElfRlVOQyhpbnQpIFB5RXJyX1Jlc291cmNlV2FybmluZygKKyAgICBQeU9iamVjdCAqc291cmNlLAorICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAgICAgICAgIC8qIEFTQ0lJLWVuY29kZWQgc3RyaW5nICAqLworICAgIC4uLik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KAogICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwKZGlmZiAtLWdpdCBhL0xpYi9fY29sbGVjdGlvbnNfYWJjLnB5IGIvTGliL19jb2xsZWN0aW9uc19hYmMucHkKaW5kZXggOGJlYmQ2OS4uZWU3ZDBmMSAxMDA2NDQKLS0tIGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkKKysrIGIvTGliL19jb2xsZWN0aW9uc19hYmMucHkKQEAgLTEwLDggKzEwLDggQEAKIGltcG9ydCBzeXMKIAogX19hbGxfXyA9IFsiQXdhaXRhYmxlIiwgIkNvcm91dGluZSIsICJBc3luY0l0ZXJhYmxlIiwgIkFzeW5jSXRlcmF0b3IiLAotICAgICAgICAgICAiSGFzaGFibGUiLCAiSXRlcmFibGUiLCAiSXRlcmF0b3IiLCAiR2VuZXJhdG9yIiwKLSAgICAgICAgICAgIlNpemVkIiwgIkNvbnRhaW5lciIsICJDYWxsYWJsZSIsCisgICAgICAgICAgICJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsICJHZW5lcmF0b3IiLCAiUmV2ZXJzaWJsZSIsCisgICAgICAgICAgICJTaXplZCIsICJDb250YWluZXIiLCAiQ2FsbGFibGUiLCAiQ29sbGVjdGlvbiIsCiAgICAgICAgICAgICJTZXQiLCAiTXV0YWJsZVNldCIsCiAgICAgICAgICAgICJNYXBwaW5nIiwgIk11dGFibGVNYXBwaW5nIiwKICAgICAgICAgICAgIk1hcHBpbmdWaWV3IiwgIktleXNWaWV3IiwgIkl0ZW1zVmlldyIsICJWYWx1ZXNWaWV3IiwKQEAgLTYzLDYgKzYzLDE4IEBACiAKICMjIyBPTkUtVFJJQ0sgUE9OSUVTICMjIwogCitkZWYgX2NoZWNrX21ldGhvZHMoQywgKm1ldGhvZHMpOgorICAgIG1ybyA9IEMuX19tcm9fXworICAgIGZvciBtZXRob2QgaW4gbWV0aG9kczoKKyAgICAgICAgZm9yIEIgaW4gbXJvOgorICAgICAgICAgICAgaWYgbWV0aG9kIGluIEIuX19kaWN0X186CisgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1ttZXRob2RdIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICByZXR1cm4gVHJ1ZQorCiBjbGFzcyBIYXNoYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtNzQsMTEgKzg2LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSGFzaGFibGU6Ci0gICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186Ci0gICAgICAgICAgICAgICAgaWYgIl9faGFzaF9fIiBpbiBCLl9fZGljdF9fOgotICAgICAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fWyJfX2hhc2hfXyJdOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19oYXNoX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC05MywxMSArMTAxLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXdhaXRhYmxlOgotICAgICAgICAgICAgZm9yIEIgaW4gQy5fX21yb19fOgotICAgICAgICAgICAgICAgIGlmICJfX2F3YWl0X18iIGluIEIuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9fYXdhaXRfXyJdOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19hd2FpdF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTM4LDE0ICsxNDIsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDb3JvdXRpbmU6Ci0gICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KLSAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKLSAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19hd2FpdF9fJywgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xNjMsOCArMTYwLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYWJsZToKLSAgICAgICAgICAgIGlmIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19haXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMTgzLDkgKzE3OSw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEFzeW5jSXRlcmF0b3I6Ci0gICAgICAgICAgICBpZiAoYW55KCJfX2FuZXh0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKLSAgICAgICAgICAgICAgICBhbnkoIl9fYWl0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2FuZXh0X18iLCAiX19haXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMjAxLDggKzE5NSw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEl0ZXJhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2l0ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9faXRlcl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMjIxLDkgKzIxNCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIEl0ZXJhdG9yOgotICAgICAgICAgICAgaWYgKGFueSgiX19uZXh0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKLSAgICAgICAgICAgICAgICBhbnkoIl9faXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgJ19faXRlcl9fJywgJ19fbmV4dF9fJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIEl0ZXJhdG9yLnJlZ2lzdGVyKGJ5dGVzX2l0ZXJhdG9yKQpAQCAtMjQyLDYgKzIzMywyMiBAQAogSXRlcmF0b3IucmVnaXN0ZXIoemlwX2l0ZXJhdG9yKQogCiAKK2NsYXNzIFJldmVyc2libGUoSXRlcmFibGUpOgorCisgICAgX19zbG90c19fID0gKCkKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgIHdoaWxlIEZhbHNlOgorICAgICAgICAgICAgeWllbGQgTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIFJldmVyc2libGU6CisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fcmV2ZXJzZWRfXyIsICJfX2l0ZXJfXyIpCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKIGNsYXNzIEdlbmVyYXRvcihJdGVyYXRvcik6CiAKICAgICBfX3Nsb3RzX18gPSAoKQpAQCAtMjg1LDE3ICsyOTIsMTAgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgR2VuZXJhdG9yOgotICAgICAgICAgICAgbXJvID0gQy5fX21yb19fCi0gICAgICAgICAgICBmb3IgbWV0aG9kIGluICgnX19pdGVyX18nLCAnX19uZXh0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpOgotICAgICAgICAgICAgICAgIGZvciBiYXNlIGluIG1ybzoKLSAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kIGluIGJhc2UuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAotICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19pdGVyX18nLCAnX19uZXh0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJykKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKLQogR2VuZXJhdG9yLnJlZ2lzdGVyKGdlbmVyYXRvcikKIAogCkBAIC0zMTAsOCArMzEwLDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgU2l6ZWQ6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fbGVuX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2xlbl9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIApAQCAtMzI2LDEwICszMjUsMTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ29udGFpbmVyOgotICAgICAgICAgICAgaWYgYW55KCJfX2NvbnRhaW5zX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2NvbnRhaW5zX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAorY2xhc3MgQ29sbGVjdGlvbihTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIENvbGxlY3Rpb246CisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgICJfX2xlbl9fIiwgIl9faXRlcl9fIiwgIl9fY29udGFpbnNfXyIpCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiBjbGFzcyBDYWxsYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKQEAgLTM0MiwxNSArMzQ5LDE0IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENhbGxhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2NhbGxfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fY2FsbF9fIikKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIAogIyMjIFNFVFMgIyMjCiAKIAotY2xhc3MgU2V0KFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIFNldChDb2xsZWN0aW9uKToKIAogICAgICIiIkEgc2V0IGlzIGEgZmluaXRlLCBpdGVyYWJsZSBjb250YWluZXIuCiAKQEAgLTU3NSw3ICs1ODEsNyBAQAogIyMjIE1BUFBJTkdTICMjIwogCiAKLWNsYXNzIE1hcHBpbmcoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgTWFwcGluZyhDb2xsZWN0aW9uKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCiAKQEAgLTYyMyw2ICs2MjksOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAgICAgICAgIHJldHVybiBkaWN0KHNlbGYuaXRlbXMoKSkgPT0gZGljdChvdGhlci5pdGVtcygpKQogCisgICAgX19yZXZlcnNlZF9fID0gTm9uZQorCiBNYXBwaW5nLnJlZ2lzdGVyKG1hcHBpbmdwcm94eSkKIAogCkBAIC02NzIsNyArNjgwLDcgQEAKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gdiA9PSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZQogCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6CkBAIC02ODcsNyArNjk1LDggQEAKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3Iga2V5IGluIHNlbGYuX21hcHBpbmc6Ci0gICAgICAgICAgICBpZiB2YWx1ZSA9PSBzZWxmLl9tYXBwaW5nW2tleV06CisgICAgICAgICAgICB2ID0gc2VsZi5fbWFwcGluZ1trZXldCisgICAgICAgICAgICBpZiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKQEAgLTc5Niw3ICs4MDUsNyBAQAogIyMjIFNFUVVFTkNFUyAjIyMKIAogCi1jbGFzcyBTZXF1ZW5jZShTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBTZXF1ZW5jZShSZXZlcnNpYmxlLCBDb2xsZWN0aW9uKToKIAogICAgICIiIkFsbCB0aGUgb3BlcmF0aW9ucyBvbiBhIHJlYWQtb25seSBzZXF1ZW5jZS4KIApAQCAtODIyLDcgKzgzMSw3IEBACiAKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKICAgICAgICAgZm9yIHYgaW4gc2VsZjoKLSAgICAgICAgICAgIGlmIHYgPT0gdmFsdWU6CisgICAgICAgICAgICBpZiB2IGlzIHZhbHVlIG9yIHYgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKZGlmZiAtLWdpdCBhL0xpYi9fY29tcGF0X3BpY2tsZS5weSBiL0xpYi9fY29tcGF0X3BpY2tsZS5weQppbmRleCBjMGUwNDQzLi5mNjg0OTZhIDEwMDY0NAotLS0gYS9MaWIvX2NvbXBhdF9waWNrbGUucHkKKysrIGIvTGliL19jb21wYXRfcGlja2xlLnB5CkBAIC0yNDIsMyArMjQyLDEwIEBACiAKIGZvciBleGNuYW1lIGluIFBZVEhPTjNfT1NFUlJPUl9FWENFUFRJT05TOgogICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpCisKK1BZVEhPTjNfSU1QT1JURVJST1JfRVhDRVBUSU9OUyA9ICgKKyAgICAnTW9kdWxlTm90Rm91bmRFcnJvcicsCispCisKK2ZvciBleGNuYW1lIGluIFBZVEhPTjNfSU1QT1JURVJST1JfRVhDRVBUSU9OUzoKKyAgICBSRVZFUlNFX05BTUVfTUFQUElOR1soJ2J1aWx0aW5zJywgZXhjbmFtZSldID0gKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJykKZGlmZiAtLWdpdCBhL0xpYi9fb3N4X3N1cHBvcnQucHkgYi9MaWIvX29zeF9zdXBwb3J0LnB5CmluZGV4IDEzZmNkOGIuLmVhZGYwNmYgMTAwNjQ0Ci0tLSBhL0xpYi9fb3N4X3N1cHBvcnQucHkKKysrIGIvTGliL19vc3hfc3VwcG9ydC5weQpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgICAgICMgRG8gbm90IGFsdGVyIGEgY29uZmlnIHZhciBleHBsaWNpdGx5IG92ZXJyaWRkZW4gYnkgZW52IHZhcgogICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MsIHJlLkFTQ0lJKQorICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCiAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKQEAgLTIzMiw3ICsyMzIsNyBAQAogICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKICAgICAgICAgcmV0dXJuIF9jb25maWdfdmFycwogCi0gICAgaWYgcmUuc2VhcmNoKCctYXJjaFxzK3BwYycsIF9jb25maWdfdmFyc1snQ0ZMQUdTJ10pIGlzIG5vdCBOb25lOgorICAgIGlmIHJlLnNlYXJjaChyJy1hcmNoXHMrcHBjJywgX2NvbmZpZ192YXJzWydDRkxBR1MnXSkgaXMgbm90IE5vbmU6CiAgICAgICAgICMgTk9URTogQ2Fubm90IHVzZSBzdWJwcm9jZXNzIGhlcmUgYmVjYXVzZSBvZiBib290c3RyYXAKICAgICAgICAgIyBpc3N1ZXMgd2hlbiBidWlsZGluZyBQeXRob24gaXRzZWxmCiAgICAgICAgIHN0YXR1cyA9IG9zLnN5c3RlbSgKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CiAgICAgICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCi0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK3BwY1x3KlxzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK3BwY1x3KlxzJywgJyAnLCBmbGFncykKICAgICAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKICAgICByZXR1cm4gX2NvbmZpZ192YXJzCkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CiAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kICctYXJjaCcgaW4gX2NvbmZpZ192YXJzW2N2XToKICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKICAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAogICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQogCkBAIC00NjUsNyArNDY1LDcgQEAKIAogICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCiAKLSAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKKyAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbChyJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCiAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKIAogICAgICAgICAgICAgaWYgbGVuKGFyY2hzKSA9PSAxOgpkaWZmIC0tZ2l0IGEvTGliL19weWRlY2ltYWwucHkgYi9MaWIvX3B5ZGVjaW1hbC5weQppbmRleCBhNWVhMzQwLi4wYjQwOTI4IDEwMDY0NAotLS0gYS9MaWIvX3B5ZGVjaW1hbC5weQorKysgYi9MaWIvX3B5ZGVjaW1hbC5weQpAQCAtMTQ4LDcgKzE0OCw3IEBACiBfX25hbWVfXyA9ICdkZWNpbWFsJyAgICAjIEZvciBwaWNrbGluZwogX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAjIFNlZSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCi1fX2xpYm1wZGVjX3ZlcnNpb25fXyA9ICIyLjQuMSIgIyBjb21wYXRpYmxlIGxpYm1wZGVjIHZlcnNpb24KK19fbGlibXBkZWNfdmVyc2lvbl9fID0gIjIuNC4yIiAjIGNvbXBhdGlibGUgbGlibXBkZWMgdmVyc2lvbgogCiBpbXBvcnQgbWF0aCBhcyBfbWF0aAogaW1wb3J0IG51bWJlcnMgYXMgX251bWJlcnMKQEAgLTU4OSw3ICs1ODksNyBAQAogICAgICAgICAjIEZyb20gYSBzdHJpbmcKICAgICAgICAgIyBSRXMgaW5zaXN0IG9uIHJlYWwgc3RyaW5ncywgc28gd2UgY2FuIHRvby4KICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkpCisgICAgICAgICAgICBtID0gX3BhcnNlcih2YWx1ZS5zdHJpcCgpLnJlcGxhY2UoIl8iLCAiIikpCiAgICAgICAgICAgICBpZiBtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0gZ2V0Y29udGV4dCgpCkBAIC0xMDEwLDYgKzEwMTAsNTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBEZWNpbWFsVHVwbGUoc2VsZi5fc2lnbiwgdHVwbGUobWFwKGludCwgc2VsZi5faW50KSksIHNlbGYuX2V4cCkKIAorICAgIGRlZiBhc19pbnRlZ2VyX3JhdGlvKHNlbGYpOgorICAgICAgICAiIiJFeHByZXNzIGEgZmluaXRlIERlY2ltYWwgaW5zdGFuY2UgaW4gdGhlIGZvcm0gbiAvIGQuCisKKyAgICAgICAgUmV0dXJucyBhIHBhaXIgKG4sIGQpIG9mIGludGVnZXJzLiAgV2hlbiBjYWxsZWQgb24gYW4gaW5maW5pdHkKKyAgICAgICAgb3IgTmFOLCByYWlzZXMgT3ZlcmZsb3dFcnJvciBvciBWYWx1ZUVycm9yIHJlc3BlY3RpdmVseS4KKworICAgICAgICA+Pj4gRGVjaW1hbCgnMy4xNCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoMTU3LCA1MCkKKyAgICAgICAgPj4+IERlY2ltYWwoJy0xMjNlNScpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoLTEyMzAwMDAwLCAxKQorICAgICAgICA+Pj4gRGVjaW1hbCgnMC4wMCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAoMCwgMSkKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5faXNfc3BlY2lhbDoKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfbmFuKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKCJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIikKKworICAgICAgICBpZiBub3Qgc2VsZjoKKyAgICAgICAgICAgIHJldHVybiAwLCAxCisKKyAgICAgICAgIyBGaW5kIG4sIGQgaW4gbG93ZXN0IHRlcm1zIHN1Y2ggdGhhdCBhYnMoc2VsZikgPT0gbiAvIGQ7CisgICAgICAgICMgd2UnbGwgZGVhbCB3aXRoIHRoZSBzaWduIGxhdGVyLgorICAgICAgICBuID0gaW50KHNlbGYuX2ludCkKKyAgICAgICAgaWYgc2VsZi5fZXhwID49IDA6CisgICAgICAgICAgICAjIHNlbGYgaXMgYW4gaW50ZWdlci4KKyAgICAgICAgICAgIG4sIGQgPSBuICogMTAqKnNlbGYuX2V4cCwgMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBGaW5kIGQyLCBkNSBzdWNoIHRoYXQgYWJzKHNlbGYpID0gbiAvICgyKipkMiAqIDUqKmQ1KS4KKyAgICAgICAgICAgIGQ1ID0gLXNlbGYuX2V4cAorICAgICAgICAgICAgd2hpbGUgZDUgPiAwIGFuZCBuICUgNSA9PSAwOgorICAgICAgICAgICAgICAgIG4gLy89IDUKKyAgICAgICAgICAgICAgICBkNSAtPSAxCisKKyAgICAgICAgICAgICMgKG4gJiAtbikuYml0X2xlbmd0aCgpIC0gMSBjb3VudHMgdHJhaWxpbmcgemVyb3MgaW4gYmluYXJ5CisgICAgICAgICAgICAjIHJlcHJlc2VudGF0aW9uIG9mIG4gKHByb3ZpZGVkIG4gaXMgbm9uemVybykuCisgICAgICAgICAgICBkMiA9IC1zZWxmLl9leHAKKyAgICAgICAgICAgIHNoaWZ0MiA9IG1pbigobiAmIC1uKS5iaXRfbGVuZ3RoKCkgLSAxLCBkMikKKyAgICAgICAgICAgIGlmIHNoaWZ0MjoKKyAgICAgICAgICAgICAgICBuID4+PSBzaGlmdDIKKyAgICAgICAgICAgICAgICBkMiAtPSBzaGlmdDIKKworICAgICAgICAgICAgZCA9IDUqKmQ1IDw8IGQyCisKKyAgICAgICAgaWYgc2VsZi5fc2lnbjoKKyAgICAgICAgICAgIG4gPSAtbgorICAgICAgICByZXR1cm4gbiwgZAorCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICAiIiJSZXByZXNlbnRzIHRoZSBudW1iZXIgYXMgYW4gaW5zdGFuY2Ugb2YgRGVjaW1hbC4iIiIKICAgICAgICAgIyBJbnZhcmlhbnQ6ICBldmFsKHJlcHIoZCkpID09IGQKQEAgLTQwNzUsNyArNDEyNSw3IEBACiAgICAgICAgIFRoaXMgd2lsbCBtYWtlIGl0IHJvdW5kIHVwIGZvciB0aGF0IG9wZXJhdGlvbi4KICAgICAgICAgIiIiCiAgICAgICAgIHJvdW5kaW5nID0gc2VsZi5yb3VuZGluZwotICAgICAgICBzZWxmLnJvdW5kaW5nPSB0eXBlCisgICAgICAgIHNlbGYucm91bmRpbmcgPSB0eXBlCiAgICAgICAgIHJldHVybiByb3VuZGluZwogCiAgICAgZGVmIGNyZWF0ZV9kZWNpbWFsKHNlbGYsIG51bT0nMCcpOgpAQCAtNDA4NCwxMCArNDEzNCwxMCBAQAogICAgICAgICBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSB0by1udW1iZXIgb3BlcmF0aW9uIG9mIHRoZQogICAgICAgICBJQk0gRGVjaW1hbCBzcGVjaWZpY2F0aW9uLiIiIgogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCBudW0gIT0gbnVtLnN0cmlwKCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UobnVtLCBzdHIpIGFuZCAobnVtICE9IG51bS5zdHJpcCgpIG9yICdfJyBpbiBudW0pOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JhaXNlX2Vycm9yKENvbnZlcnNpb25TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcm1pdHRlZC4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFpbGluZyBvciBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5kZXJzY29yZXMgYXJlIG5vdCBwZXJtaXR0ZWQuIikKIAogICAgICAgICBkID0gRGVjaW1hbChudW0sIGNvbnRleHQ9c2VsZikKICAgICAgICAgaWYgZC5faXNuYW4oKSBhbmQgbGVuKGQuX2ludCkgPiBzZWxmLnByZWMgLSBzZWxmLmNsYW1wOgpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IDBkOThiNzQuLmQwOTQ3ZjAgMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTYsNyArNiw2IEBACiBpbXBvcnQgYWJjCiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgZXJybm8KLWltcG9ydCBhcnJheQogaW1wb3J0IHN0YXQKIGltcG9ydCBzeXMKICMgSW1wb3J0IF90aHJlYWQgaW5zdGVhZCBvZiB0aHJlYWRpbmcgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdApAQCAtMTYxLDYgKzE2MCw4IEBACiAgICAgb3BlbmVkIGluIGEgdGV4dCBtb2RlLCBhbmQgZm9yIGJ5dGVzIGEgQnl0ZXNJTyBjYW4gYmUgdXNlZCBsaWtlIGEgZmlsZQogICAgIG9wZW5lZCBpbiBhIGJpbmFyeSBtb2RlLgogICAgICIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGUsIGludCk6CisgICAgICAgIGZpbGUgPSBvcy5mc3BhdGgoZmlsZSkKICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBieXRlcywgaW50KSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBmaWxlOiAlciIgJSBmaWxlKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKG1vZGUsIHN0cik6CkBAIC0xODIsOCArMTgzLDggQEAKICAgICB0ZXh0ID0gInQiIGluIG1vZGVzCiAgICAgYmluYXJ5ID0gImIiIGluIG1vZGVzCiAgICAgaWYgIlUiIGluIG1vZGVzOgotICAgICAgICBpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpCisgICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nIG9yIHVwZGF0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibW9kZSBVIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoICd4JywgJ3cnLCAnYScsIG9yICcrJyIpCiAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICB3YXJuaW5ncy53YXJuKCInVScgbW9kZSBpcyBkZXByZWNhdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCkBAIC0xNTE2LDcgKzE1MTcsNyBAQAogICAgICAgICBpZiBzZWxmLl9mZCA+PSAwIGFuZCBzZWxmLl9jbG9zZWZkIGFuZCBub3Qgc2VsZi5jbG9zZWQ6CiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ3VuY2xvc2VkIGZpbGUgJXInICUgKHNlbGYsKSwgUmVzb3VyY2VXYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja2xldmVsPTIpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9Miwgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvX3N0cnB0aW1lLnB5IGIvTGliL19zdHJwdGltZS5weQppbmRleCBmODQyMjdiLi5mZTk0MzYxIDEwMDY0NAotLS0gYS9MaWIvX3N0cnB0aW1lLnB5CisrKyBiL0xpYi9fc3RycHRpbWUucHkKQEAgLTE5OSwxMiArMTk5LDE1IEBACiAgICAgICAgICAgICAnZic6IHIiKD9QPGY+WzAtOV17MSw2fSkiLAogICAgICAgICAgICAgJ0gnOiByIig/UDxIPjJbMC0zXXxbMC0xXVxkfFxkKSIsCiAgICAgICAgICAgICAnSSc6IHIiKD9QPEk+MVswLTJdfDBbMS05XXxbMS05XSkiLAorICAgICAgICAgICAgJ0cnOiByIig/UDxHPlxkXGRcZFxkKSIsCiAgICAgICAgICAgICAnaic6IHIiKD9QPGo+MzZbMC02XXwzWzAtNV1cZHxbMS0yXVxkXGR8MFsxLTldXGR8MDBbMS05XXxbMS05XVxkfDBbMS05XXxbMS05XSkiLAogICAgICAgICAgICAgJ20nOiByIig/UDxtPjFbMC0yXXwwWzEtOV18WzEtOV0pIiwKICAgICAgICAgICAgICdNJzogciIoP1A8TT5bMC01XVxkfFxkKSIsCiAgICAgICAgICAgICAnUyc6IHIiKD9QPFM+NlswLTFdfFswLTVdXGR8XGQpIiwKICAgICAgICAgICAgICdVJzogciIoP1A8VT41WzAtM118WzAtNF1cZHxcZCkiLAogICAgICAgICAgICAgJ3cnOiByIig/UDx3PlswLTZdKSIsCisgICAgICAgICAgICAndSc6IHIiKD9QPHU+WzEtN10pIiwKKyAgICAgICAgICAgICdWJzogciIoP1A8Vj41WzAtM118MFsxLTldfFsxLTRdXGR8XGQpIiwKICAgICAgICAgICAgICMgVyBpcyBzZXQgYmVsb3cgYnkgdXNpbmcgJ1UnCiAgICAgICAgICAgICAneSc6IHIiKD9QPHk+XGRcZCkiLAogICAgICAgICAgICAgI1hYWDogRG9lcyAnWScgbmVlZCB0byB3b3JyeSBhYm91dCBoYXZpbmcgbGVzcyBvciBtb3JlIHRoYW4KQEAgLTI5OSw2ICszMDIsMjIgQEAKICAgICAgICAgcmV0dXJuIDEgKyBkYXlzX3RvX3dlZWsgKyBkYXlfb2Zfd2VlawogCiAKK2RlZiBfY2FsY19qdWxpYW5fZnJvbV9WKGlzb195ZWFyLCBpc29fd2VlaywgaXNvX3dlZWtkYXkpOgorICAgICIiIkNhbGN1bGF0ZSB0aGUgSnVsaWFuIGRheSBiYXNlZCBvbiB0aGUgSVNPIDg2MDEgeWVhciwgd2VlaywgYW5kIHdlZWtkYXkuCisgICAgSVNPIHdlZWtzIHN0YXJ0IG9uIE1vbmRheXMsIHdpdGggd2VlayAwMSBiZWluZyB0aGUgd2VlayBjb250YWluaW5nIDQgSmFuLgorICAgIElTTyB3ZWVrIGRheXMgcmFuZ2UgZnJvbSAxIChNb25kYXkpIHRvIDcgKFN1bmRheSkuCisgICAgIiIiCisgICAgY29ycmVjdGlvbiA9IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDQpLmlzb3dlZWtkYXkoKSArIDMKKyAgICBvcmRpbmFsID0gKGlzb193ZWVrICogNykgKyBpc29fd2Vla2RheSAtIGNvcnJlY3Rpb24KKyAgICAjIG9yZGluYWwgbWF5IGJlIG5lZ2F0aXZlIG9yIDAgbm93LCB3aGljaCBtZWFucyB0aGUgZGF0ZSBpcyBpbiB0aGUgcHJldmlvdXMKKyAgICAjIGNhbGVuZGFyIHllYXIKKyAgICBpZiBvcmRpbmFsIDwgMToKKyAgICAgICAgb3JkaW5hbCArPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCAxKS50b29yZGluYWwoKQorICAgICAgICBpc29feWVhciAtPSAxCisgICAgICAgIG9yZGluYWwgLT0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgMSkudG9vcmRpbmFsKCkKKyAgICByZXR1cm4gaXNvX3llYXIsIG9yZGluYWwKKworCiBkZWYgX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQ9IiVhICViICVkICVIOiVNOiVTICVZIik6CiAgICAgIiIiUmV0dXJuIGEgMi10dXBsZSBjb25zaXN0aW5nIG9mIGEgdGltZSBzdHJ1Y3QgYW5kIGFuIGludCBjb250YWluaW5nCiAgICAgdGhlIG51bWJlciBvZiBtaWNyb3NlY29uZHMgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlCkBAIC0zNDUsMTUgKzM2NCwxNSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmNvbnZlcnRlZCBkYXRhIHJlbWFpbnM6ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RyaW5nW2ZvdW5kLmVuZCgpOl0pCiAKLSAgICB5ZWFyID0gTm9uZQorICAgIGlzb195ZWFyID0geWVhciA9IE5vbmUKICAgICBtb250aCA9IGRheSA9IDEKICAgICBob3VyID0gbWludXRlID0gc2Vjb25kID0gZnJhY3Rpb24gPSAwCiAgICAgdHogPSAtMQogICAgIHR6b2Zmc2V0ID0gTm9uZQogICAgICMgRGVmYXVsdCB0byAtMSB0byBzaWduaWZ5IHRoYXQgdmFsdWVzIG5vdCBrbm93bjsgbm90IGNyaXRpY2FsIHRvIGhhdmUsCiAgICAgIyB0aG91Z2gKLSAgICB3ZWVrX29mX3llYXIgPSAtMQotICAgIHdlZWtfb2ZfeWVhcl9zdGFydCA9IC0xCisgICAgaXNvX3dlZWsgPSB3ZWVrX29mX3llYXIgPSBOb25lCisgICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gTm9uZQogICAgICMgd2Vla2RheSBhbmQganVsaWFuIGRlZmF1bHRlZCB0byBOb25lIHNvIGFzIHRvIHNpZ25hbCBuZWVkIHRvIGNhbGN1bGF0ZQogICAgICMgdmFsdWVzCiAgICAgd2Vla2RheSA9IGp1bGlhbiA9IE5vbmUKQEAgLTM3NSw2ICszOTQsOCBAQAogICAgICAgICAgICAgICAgIHllYXIgKz0gMTkwMAogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnWSc6CiAgICAgICAgICAgICB5ZWFyID0gaW50KGZvdW5kX2RpY3RbJ1knXSkKKyAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ0cnOgorICAgICAgICAgICAgaXNvX3llYXIgPSBpbnQoZm91bmRfZGljdFsnRyddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnbSc6CiAgICAgICAgICAgICBtb250aCA9IGludChmb3VuZF9kaWN0WydtJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdCJzoKQEAgLTQyMCw2ICs0NDEsOSBAQAogICAgICAgICAgICAgICAgIHdlZWtkYXkgPSA2CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHdlZWtkYXkgLT0gMQorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAndSc6CisgICAgICAgICAgICB3ZWVrZGF5ID0gaW50KGZvdW5kX2RpY3RbJ3UnXSkKKyAgICAgICAgICAgIHdlZWtkYXkgLT0gMQogICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnaic6CiAgICAgICAgICAgICBqdWxpYW4gPSBpbnQoZm91bmRfZGljdFsnaiddKQogICAgICAgICBlbGlmIGdyb3VwX2tleSBpbiAoJ1UnLCAnVycpOgpAQCAtNDMwLDYgKzQ1NCw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgVyBzdGFydHMgd2VlayBvbiBNb25kYXkuCiAgICAgICAgICAgICAgICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gMAorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnVic6CisgICAgICAgICAgICBpc29fd2VlayA9IGludChmb3VuZF9kaWN0WydWJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICd6JzoKICAgICAgICAgICAgIHogPSBmb3VuZF9kaWN0Wyd6J10KICAgICAgICAgICAgIHR6b2Zmc2V0ID0gaW50KHpbMTozXSkgKiA2MCArIGludCh6WzM6NV0pCkBAIC00NTAsMzIgKzQ3Niw2MSBAQAogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgdHogPSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAjIERlYWwgd2l0aCB0aGUgY2FzZXMgd2hlcmUgYW1iaWd1aXRpZXMgYXJpemUKKyAgICAjIGRvbid0IGFzc3VtZSBkZWZhdWx0IHZhbHVlcyBmb3IgSVNPIHdlZWsveWVhcgorICAgIGlmIHllYXIgaXMgTm9uZSBhbmQgaXNvX3llYXIgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIGlzb193ZWVrIGlzIE5vbmUgb3Igd2Vla2RheSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSVNPIHllYXIgZGlyZWN0aXZlICclRycgbXVzdCBiZSB1c2VkIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIElTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIGFuZCBhIHdlZWtkYXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0aXZlICgnJUEnLCAnJWEnLCAnJXcnLCBvciAnJXUnKS4iKQorICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJEYXkgb2YgdGhlIHllYXIgZGlyZWN0aXZlICclaicgaXMgbm90ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhdGlibGUgd2l0aCBJU08geWVhciBkaXJlY3RpdmUgJyVHJy4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICclWScgaW5zdGVhZC4iKQorICAgIGVsaWYgd2Vla19vZl95ZWFyIGlzIE5vbmUgYW5kIGlzb193ZWVrIGlzIG5vdCBOb25lOgorICAgICAgICBpZiB3ZWVrZGF5IGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBtdXN0IGJlIHVzZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSVNPIHllYXIgZGlyZWN0aXZlICclRycgYW5kIGEgd2Vla2RheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RpdmUgKCclQScsICclYScsICcldycsIG9yICcldScpLiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08gd2VlayBkaXJlY3RpdmUgJyVWJyBpcyBpbmNvbXBhdGlibGUgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgeWVhciBkaXJlY3RpdmUgJyVZJy4gVXNlIHRoZSBJU08geWVhciAnJUcnICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RlYWQuIikKKwogICAgIGxlYXBfeWVhcl9maXggPSBGYWxzZQogICAgIGlmIHllYXIgaXMgTm9uZSBhbmQgbW9udGggPT0gMiBhbmQgZGF5ID09IDI5OgogICAgICAgICB5ZWFyID0gMTkwNCAgIyAxOTA0IGlzIGZpcnN0IGxlYXAgeWVhciBvZiAyMHRoIGNlbnR1cnkKICAgICAgICAgbGVhcF95ZWFyX2ZpeCA9IFRydWUKICAgICBlbGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgeWVhciA9IDE5MDAKKworCiAgICAgIyBJZiB3ZSBrbm93IHRoZSB3ZWVrIG9mIHRoZSB5ZWFyIGFuZCB3aGF0IGRheSBvZiB0aGF0IHdlZWssIHdlIGNhbiBmaWd1cmUKICAgICAjIG91dCB0aGUgSnVsaWFuIGRheSBvZiB0aGUgeWVhci4KLSAgICBpZiBqdWxpYW4gaXMgTm9uZSBhbmQgd2Vla19vZl95ZWFyICE9IC0xIGFuZCB3ZWVrZGF5IGlzIG5vdCBOb25lOgotICAgICAgICB3ZWVrX3N0YXJ0c19Nb24gPSBUcnVlIGlmIHdlZWtfb2ZfeWVhcl9zdGFydCA9PSAwIGVsc2UgRmFsc2UKLSAgICAgICAganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVV9vcl9XKHllYXIsIHdlZWtfb2ZfeWVhciwgd2Vla2RheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uKQotICAgICAgICBpZiBqdWxpYW4gPD0gMDoKKyAgICBpZiBqdWxpYW4gaXMgTm9uZSBhbmQgd2Vla2RheSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgd2Vla19vZl95ZWFyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uID0gVHJ1ZSBpZiB3ZWVrX29mX3llYXJfc3RhcnQgPT0gMCBlbHNlIEZhbHNlCisgICAgICAgICAgICBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9VX29yX1coeWVhciwgd2Vla19vZl95ZWFyLCB3ZWVrZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Vla19zdGFydHNfTW9uKQorICAgICAgICBlbGlmIGlzb195ZWFyIGlzIG5vdCBOb25lIGFuZCBpc29fd2VlayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHllYXIsIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCB3ZWVrZGF5ICsgMSkKKyAgICAgICAgaWYganVsaWFuIGlzIG5vdCBOb25lIGFuZCBqdWxpYW4gPD0gMDoKICAgICAgICAgICAgIHllYXIgLT0gMQogICAgICAgICAgICAgeWRheSA9IDM2NiBpZiBjYWxlbmRhci5pc2xlYXAoeWVhcikgZWxzZSAzNjUKICAgICAgICAgICAgIGp1bGlhbiArPSB5ZGF5Ci0gICAgIyBDYW5ub3QgcHJlLWNhbGN1bGF0ZSBkYXRldGltZV9kYXRlKCkgc2luY2UgY2FuIGNoYW5nZSBpbiBKdWxpYW4KLSAgICAjIGNhbGN1bGF0aW9uIGFuZCB0aHVzIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgZGF5IG9mIHRoZSB3ZWVrCi0gICAgIyBjYWxjdWxhdGlvbi4KKwogICAgIGlmIGp1bGlhbiBpcyBOb25lOgorICAgICAgICAjIENhbm5vdCBwcmUtY2FsY3VsYXRlIGRhdGV0aW1lX2RhdGUoKSBzaW5jZSBjYW4gY2hhbmdlIGluIEp1bGlhbgorICAgICAgICAjIGNhbGN1bGF0aW9uIGFuZCB0aHVzIGNvdWxkIGhhdmUgZGlmZmVyZW50IHZhbHVlIGZvciB0aGUgZGF5IG9mCisgICAgICAgICMgdGhlIHdlZWsgY2FsY3VsYXRpb24uCiAgICAgICAgICMgTmVlZCB0byBhZGQgMSB0byByZXN1bHQgc2luY2UgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGlzIDEsIG5vdCAwLgogICAgICAgICBqdWxpYW4gPSBkYXRldGltZV9kYXRlKHllYXIsIG1vbnRoLCBkYXkpLnRvb3JkaW5hbCgpIC0gXAogICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSArIDEKLSAgICBlbHNlOiAgIyBBc3N1bWUgdGhhdCBpZiB0aGV5IGJvdGhlcmVkIHRvIGluY2x1ZGUgSnVsaWFuIGRheSBpdCB3aWxsCi0gICAgICAgICAgICMgYmUgYWNjdXJhdGUuCi0gICAgICAgIGRhdGV0aW1lX3Jlc3VsdCA9IGRhdGV0aW1lX2RhdGUuZnJvbW9yZGluYWwoKGp1bGlhbiAtIDEpICsgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSkKKyAgICBlbHNlOiAgIyBBc3N1bWUgdGhhdCBpZiB0aGV5IGJvdGhlcmVkIHRvIGluY2x1ZGUgSnVsaWFuIGRheSAob3IgaWYgaXQgd2FzCisgICAgICAgICAgICMgY2FsY3VsYXRlZCBhYm92ZSB3aXRoIHllYXIvd2Vlay93ZWVrZGF5KSBpdCB3aWxsIGJlIGFjY3VyYXRlLgorICAgICAgICBkYXRldGltZV9yZXN1bHQgPSBkYXRldGltZV9kYXRlLmZyb21vcmRpbmFsKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChqdWxpYW4gLSAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfZGF0ZSh5ZWFyLCAxLCAxKS50b29yZGluYWwoKSkKICAgICAgICAgeWVhciA9IGRhdGV0aW1lX3Jlc3VsdC55ZWFyCiAgICAgICAgIG1vbnRoID0gZGF0ZXRpbWVfcmVzdWx0Lm1vbnRoCiAgICAgICAgIGRheSA9IGRhdGV0aW1lX3Jlc3VsdC5kYXkKZGlmZiAtLWdpdCBhL0xpYi9haWZjLnB5IGIvTGliL2FpZmMucHkKaW5kZXggN2ViZGJlYi4uNjkyZDBiZiAxMDA2NDQKLS0tIGEvTGliL2FpZmMucHkKKysrIGIvTGliL2FpZmMucHkKQEAgLTI1Nyw2ICsyNTcsMTUgQEAKIF9haWZjX3BhcmFtcyA9IG5hbWVkdHVwbGUoJ19haWZjX3BhcmFtcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICduY2hhbm5lbHMgc2FtcHdpZHRoIGZyYW1lcmF0ZSBuZnJhbWVzIGNvbXB0eXBlIGNvbXBuYW1lJykKIAorX2FpZmNfcGFyYW1zLm5jaGFubmVscy5fX2RvY19fID0gJ051bWJlciBvZiBhdWRpbyBjaGFubmVscyAoMSBmb3IgbW9ubywgMiBmb3Igc3RlcmVvKScKK19haWZjX3BhcmFtcy5zYW1wd2lkdGguX19kb2NfXyA9ICdTYW1wbGUgd2lkdGggaW4gYnl0ZXMnCitfYWlmY19wYXJhbXMuZnJhbWVyYXRlLl9fZG9jX18gPSAnU2FtcGxpbmcgZnJlcXVlbmN5JworX2FpZmNfcGFyYW1zLm5mcmFtZXMuX19kb2NfXyA9ICdOdW1iZXIgb2YgYXVkaW8gZnJhbWVzJworX2FpZmNfcGFyYW1zLmNvbXB0eXBlLl9fZG9jX18gPSAnQ29tcHJlc3Npb24gdHlwZSAoIk5PTkUiIGZvciBBSUZGIGZpbGVzKScKK19haWZjX3BhcmFtcy5jb21wbmFtZS5fX2RvY19fID0gKCIiIlwKK0EgaHVtYW4tcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY29tcHJlc3Npb24gdHlwZQorKCdub3QgY29tcHJlc3NlZCcgZm9yIEFJRkYgZmlsZXMpIiIiKQorCiAKIGNsYXNzIEFpZmNfcmVhZDoKICAgICAjIFZhcmlhYmxlcyB1c2VkIGluIHRoaXMgY2xhc3M6CmRpZmYgLS1naXQgYS9MaWIvYXJncGFyc2UucHkgYi9MaWIvYXJncGFyc2UucHkKaW5kZXggOWEwNjcxOS4uMjA5YjRlOSAxMDA2NDQKLS0tIGEvTGliL2FyZ3BhcnNlLnB5CisrKyBiL0xpYi9hcmdwYXJzZS5weQpAQCAtMTE4LDEwICsxMTgsMTYgQEAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHR5cGVfbmFtZSA9IHR5cGUoc2VsZikuX19uYW1lX18KICAgICAgICAgYXJnX3N0cmluZ3MgPSBbXQorICAgICAgICBzdGFyX2FyZ3MgPSB7fQogICAgICAgICBmb3IgYXJnIGluIHNlbGYuX2dldF9hcmdzKCk6CiAgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQocmVwcihhcmcpKQogICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5fZ2V0X2t3YXJncygpOgotICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCclcz0lcicgJSAobmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgaWYgbmFtZS5pc2lkZW50aWZpZXIoKToKKyAgICAgICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0YXJfYXJnc1tuYW1lXSA9IHZhbHVlCisgICAgICAgIGlmIHN0YXJfYXJnczoKKyAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnKiolcycgJSByZXByKHN0YXJfYXJncykpCiAgICAgICAgIHJldHVybiAnJXMoJXMpJyAlICh0eXBlX25hbWUsICcsICcuam9pbihhcmdfc3RyaW5ncykpCiAKICAgICBkZWYgX2dldF9rd2FyZ3Moc2VsZik6CkBAIC0yMDQsOCArMjEwLDYgQEAKICAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dGVyLl9pbmRlbnQoKQogICAgICAgICAgICAgam9pbiA9IHNlbGYuZm9ybWF0dGVyLl9qb2luX3BhcnRzCi0gICAgICAgICAgICBmb3IgZnVuYywgYXJncyBpbiBzZWxmLml0ZW1zOgotICAgICAgICAgICAgICAgIGZ1bmMoKmFyZ3MpCiAgICAgICAgICAgICBpdGVtX2hlbHAgPSBqb2luKFtmdW5jKCphcmdzKSBmb3IgZnVuYywgYXJncyBpbiBzZWxmLml0ZW1zXSkKICAgICAgICAgICAgIGlmIHNlbGYucGFyZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0dGVyLl9kZWRlbnQoKQpkaWZmIC0tZ2l0IGEvTGliL2FzdC5weSBiL0xpYi9hc3QucHkKaW5kZXggMDE3MDQ3Mi4uMTU2YTFmMiAxMDA2NDQKLS0tIGEvTGliL2FzdC5weQorKysgYi9MaWIvYXN0LnB5CkBAIC0zNSw2ICszNSw4IEBACiAgICAgcmV0dXJuIGNvbXBpbGUoc291cmNlLCBmaWxlbmFtZSwgbW9kZSwgUHlDRl9PTkxZX0FTVCkKIAogCitfTlVNX1RZUEVTID0gKGludCwgZmxvYXQsIGNvbXBsZXgpCisKIGRlZiBsaXRlcmFsX2V2YWwobm9kZV9vcl9zdHJpbmcpOgogICAgICIiIgogICAgIFNhZmVseSBldmFsdWF0ZSBhbiBleHByZXNzaW9uIG5vZGUgb3IgYSBzdHJpbmcgY29udGFpbmluZyBhIFB5dGhvbgpAQCAtNDcsNyArNDksOSBAQAogICAgIGlmIGlzaW5zdGFuY2Uobm9kZV9vcl9zdHJpbmcsIEV4cHJlc3Npb24pOgogICAgICAgICBub2RlX29yX3N0cmluZyA9IG5vZGVfb3Jfc3RyaW5nLmJvZHkKICAgICBkZWYgX2NvbnZlcnQobm9kZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgKFN0ciwgQnl0ZXMpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCk6CisgICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgKFN0ciwgQnl0ZXMpKToKICAgICAgICAgICAgIHJldHVybiBub2RlLnMKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIE51bSk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS5uCkBAIC02MiwyNCArNjYsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGluIHppcChub2RlLmtleXMsIG5vZGUudmFsdWVzKSkKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIE5hbWVDb25zdGFudCk6CiAgICAgICAgICAgICByZXR1cm4gbm9kZS52YWx1ZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgVW5hcnlPcCkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3AsIChVQWRkLCBVU3ViKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUub3BlcmFuZCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKToKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIFVuYXJ5T3ApIGFuZCBpc2luc3RhbmNlKG5vZGUub3AsIChVQWRkLCBVU3ViKSk6CiAgICAgICAgICAgICBvcGVyYW5kID0gX2NvbnZlcnQobm9kZS5vcGVyYW5kKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBVQWRkKToKLSAgICAgICAgICAgICAgICByZXR1cm4gKyBvcGVyYW5kCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiAtIG9wZXJhbmQKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEJpbk9wKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcCwgKEFkZCwgU3ViKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUucmlnaHQsIChOdW0sIFVuYXJ5T3AsIEJpbk9wKSkgYW5kIFwKLSAgICAgICAgICAgICBpc2luc3RhbmNlKG5vZGUubGVmdCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3BlcmFuZCwgX05VTV9UWVBFUyk6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLm9wLCBVQWRkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICsgb3BlcmFuZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtIG9wZXJhbmQKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIEJpbk9wKSBhbmQgaXNpbnN0YW5jZShub2RlLm9wLCAoQWRkLCBTdWIpKToKICAgICAgICAgICAgIGxlZnQgPSBfY29udmVydChub2RlLmxlZnQpCiAgICAgICAgICAgICByaWdodCA9IF9jb252ZXJ0KG5vZGUucmlnaHQpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIEFkZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxlZnQsIF9OVU1fVFlQRVMpIGFuZCBpc2luc3RhbmNlKHJpZ2h0LCBfTlVNX1RZUEVTKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIEFkZCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0ICsgcmlnaHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCAtIHJpZ2h0CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21hbGZvcm1lZCBub2RlIG9yIHN0cmluZzogJyArIHJlcHIobm9kZSkpCiAgICAgcmV0dXJuIF9jb252ZXJ0KG5vZGVfb3Jfc3RyaW5nKQogCkBAIC0xOTYsMTIgKzE5NywxOSBAQAogICAgICIiIgogICAgIGlmIG5vdCBpc2luc3RhbmNlKG5vZGUsIChBc3luY0Z1bmN0aW9uRGVmLCBGdW5jdGlvbkRlZiwgQ2xhc3NEZWYsIE1vZHVsZSkpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVyIGNhbid0IGhhdmUgZG9jc3RyaW5ncyIgJSBub2RlLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICBpZiBub2RlLmJvZHkgYW5kIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLCBFeHByKSBhbmQgXAotICAgICAgIGlzaW5zdGFuY2Uobm9kZS5ib2R5WzBdLnZhbHVlLCBTdHIpOgotICAgICAgICBpZiBjbGVhbjoKLSAgICAgICAgICAgIGltcG9ydCBpbnNwZWN0Ci0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdC5jbGVhbmRvYyhub2RlLmJvZHlbMF0udmFsdWUucykKLSAgICAgICAgcmV0dXJuIG5vZGUuYm9keVswXS52YWx1ZS5zCisgICAgaWYgbm90KG5vZGUuYm9keSBhbmQgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0sIEV4cHIpKToKKyAgICAgICAgcmV0dXJuCisgICAgbm9kZSA9IG5vZGUuYm9keVswXS52YWx1ZQorICAgIGlmIGlzaW5zdGFuY2Uobm9kZSwgU3RyKToKKyAgICAgICAgdGV4dCA9IG5vZGUucworICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBDb25zdGFudCkgYW5kIGlzaW5zdGFuY2Uobm9kZS52YWx1ZSwgc3RyKToKKyAgICAgICAgdGV4dCA9IG5vZGUudmFsdWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4KKyAgICBpZiBjbGVhbjoKKyAgICAgICAgaW1wb3J0IGluc3BlY3QKKyAgICAgICAgdGV4dCA9IGluc3BlY3QuY2xlYW5kb2ModGV4dCkKKyAgICByZXR1cm4gdGV4dAogCiAKIGRlZiB3YWxrKG5vZGUpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaGF0LnB5IGIvTGliL2FzeW5jaGF0LnB5CmluZGV4IGY3MjhkMWIuLmZjMTE0NmEgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2hhdC5weQorKysgYi9MaWIvYXN5bmNoYXQucHkKQEAgLTI4NSwzNSArMjg1LDYgQEAKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogCi1jbGFzcyBmaWZvOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaXN0PU5vbmUpOgotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybignZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIG5vdCBsaXN0OgotICAgICAgICAgICAgc2VsZi5saXN0ID0gZGVxdWUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5saXN0ID0gZGVxdWUobGlzdCkKLQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYubGlzdCkKLQotICAgIGRlZiBpc19lbXB0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmxpc3QKLQotICAgIGRlZiBmaXJzdChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYubGlzdFswXQotCi0gICAgZGVmIHB1c2goc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubGlzdC5hcHBlbmQoZGF0YSkKLQotICAgIGRlZiBwb3Aoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubGlzdDoKLSAgICAgICAgICAgIHJldHVybiAoMSwgc2VsZi5saXN0LnBvcGxlZnQoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAoMCwgTm9uZSkKLQotCiAjIEdpdmVuICdoYXlzdGFjaycsIHNlZSBpZiBhbnkgcHJlZml4IG9mICduZWVkbGUnIGlzIGF0IGl0cyBlbmQuICBUaGlzCiAjIGFzc3VtZXMgYW4gZXhhY3QgbWF0Y2ggaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YKICMgY2hhcmFjdGVycyBtYXRjaGVkLgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vYmFzZV9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQppbmRleCBhYTc4MzY3Li40ZWVkNDY4IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weQpAQCAtNTcsNyArNTcsNyBAQAogCiBkZWYgX2Zvcm1hdF9oYW5kbGUoaGFuZGxlKToKICAgICBjYiA9IGhhbmRsZS5fY2FsbGJhY2sKLSAgICBpZiBpbnNwZWN0LmlzbWV0aG9kKGNiKSBhbmQgaXNpbnN0YW5jZShjYi5fX3NlbGZfXywgdGFza3MuVGFzayk6CisgICAgaWYgaXNpbnN0YW5jZShnZXRhdHRyKGNiLCAnX19zZWxmX18nLCBOb25lKSwgdGFza3MuVGFzayk6CiAgICAgICAgICMgZm9ybWF0IHRoZSB0YXNrCiAgICAgICAgIHJldHVybiByZXByKGNiLl9fc2VsZl9fKQogICAgIGVsc2U6CkBAIC01MTMsNyArNTEzLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2VfZnV0dXJlcy5weSBiL0xpYi9hc3luY2lvL2Jhc2VfZnV0dXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTI1OWEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9mdXR1cmVzLnB5CkBAIC0wLDAgKzEsNzEgQEAKK19fYWxsX18gPSBbXQorCitpbXBvcnQgY29uY3VycmVudC5mdXR1cmVzLl9iYXNlCitpbXBvcnQgcmVwcmxpYgorCitmcm9tIC4gaW1wb3J0IGV2ZW50cworCitFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZS5FcnJvcgorQ2FuY2VsbGVkRXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IKK1RpbWVvdXRFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5UaW1lb3V0RXJyb3IKKworCitjbGFzcyBJbnZhbGlkU3RhdGVFcnJvcihFcnJvcik6CisgICAgIiIiVGhlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlLiIiIgorCisKKyMgU3RhdGVzIGZvciBGdXR1cmUuCitfUEVORElORyA9ICdQRU5ESU5HJworX0NBTkNFTExFRCA9ICdDQU5DRUxMRUQnCitfRklOSVNIRUQgPSAnRklOSVNIRUQnCisKKworZGVmIGlzZnV0dXJlKG9iaik6CisgICAgIiIiQ2hlY2sgZm9yIGEgRnV0dXJlLgorCisgICAgVGhpcyByZXR1cm5zIFRydWUgd2hlbiBvYmogaXMgYSBGdXR1cmUgaW5zdGFuY2Ugb3IgaXMgYWR2ZXJ0aXNpbmcKKyAgICBpdHNlbGYgYXMgZHVjay10eXBlIGNvbXBhdGlibGUgYnkgc2V0dGluZyBfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcuCisgICAgU2VlIGNvbW1lbnQgaW4gRnV0dXJlIGZvciBtb3JlIGRldGFpbHMuCisgICAgIiIiCisgICAgcmV0dXJuIChoYXNhdHRyKG9iai5fX2NsYXNzX18sICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnKSBhbmQKKyAgICAgICAgICAgIG9iai5fYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcgaXMgbm90IE5vbmUpCisKKworZGVmIF9mb3JtYXRfY2FsbGJhY2tzKGNiKToKKyAgICAiIiJoZWxwZXIgZnVuY3Rpb24gZm9yIEZ1dHVyZS5fX3JlcHJfXyIiIgorICAgIHNpemUgPSBsZW4oY2IpCisgICAgaWYgbm90IHNpemU6CisgICAgICAgIGNiID0gJycKKworICAgIGRlZiBmb3JtYXRfY2IoY2FsbGJhY2spOgorICAgICAgICByZXR1cm4gZXZlbnRzLl9mb3JtYXRfY2FsbGJhY2tfc291cmNlKGNhbGxiYWNrLCAoKSkKKworICAgIGlmIHNpemUgPT0gMToKKyAgICAgICAgY2IgPSBmb3JtYXRfY2IoY2JbMF0pCisgICAgZWxpZiBzaXplID09IDI6CisgICAgICAgIGNiID0gJ3t9LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksIGZvcm1hdF9jYihjYlsxXSkpCisgICAgZWxpZiBzaXplID4gMjoKKyAgICAgICAgY2IgPSAne30sIDx7fSBtb3JlPiwge30nLmZvcm1hdChmb3JtYXRfY2IoY2JbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgLSAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9jYihjYlstMV0pKQorICAgIHJldHVybiAnY2I9WyVzXScgJSBjYgorCisKK2RlZiBfZnV0dXJlX3JlcHJfaW5mbyhmdXR1cmUpOgorICAgICMgKEZ1dHVyZSkgLT4gc3RyCisgICAgIiIiaGVscGVyIGZ1bmN0aW9uIGZvciBGdXR1cmUuX19yZXByX18iIiIKKyAgICBpbmZvID0gW2Z1dHVyZS5fc3RhdGUubG93ZXIoKV0KKyAgICBpZiBmdXR1cmUuX3N0YXRlID09IF9GSU5JU0hFRDoKKyAgICAgICAgaWYgZnV0dXJlLl9leGNlcHRpb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpbmZvLmFwcGVuZCgnZXhjZXB0aW9uPXshcn0nLmZvcm1hdChmdXR1cmUuX2V4Y2VwdGlvbikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHVzZSByZXBybGliIHRvIGxpbWl0IHRoZSBsZW5ndGggb2YgdGhlIG91dHB1dCwgZXNwZWNpYWxseQorICAgICAgICAgICAgIyBmb3IgdmVyeSBsb25nIHN0cmluZ3MKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlcHJsaWIucmVwcihmdXR1cmUuX3Jlc3VsdCkKKyAgICAgICAgICAgIGluZm8uYXBwZW5kKCdyZXN1bHQ9e30nLmZvcm1hdChyZXN1bHQpKQorICAgIGlmIGZ1dHVyZS5fY2FsbGJhY2tzOgorICAgICAgICBpbmZvLmFwcGVuZChfZm9ybWF0X2NhbGxiYWNrcyhmdXR1cmUuX2NhbGxiYWNrcykpCisgICAgaWYgZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrOgorICAgICAgICBmcmFtZSA9IGZ1dHVyZS5fc291cmNlX3RyYWNlYmFja1stMV0KKyAgICAgICAgaW5mby5hcHBlbmQoJ2NyZWF0ZWQgYXQgJXM6JXMnICUgKGZyYW1lWzBdLCBmcmFtZVsxXSkpCisgICAgcmV0dXJuIGluZm8KZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weSBiL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQppbmRleCAyMzc0MmExLi5hMDBkOWQ1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CkBAIC0xMjcsNyArMTI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIGdldF9waWQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX3Rhc2tzLnB5IGIvTGliL2FzeW5jaW8vYmFzZV90YXNrcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjM0NDM0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2FzeW5jaW8vYmFzZV90YXNrcy5weQpAQCAtMCwwICsxLDc2IEBACitpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgdHJhY2ViYWNrCisKK2Zyb20gLiBpbXBvcnQgYmFzZV9mdXR1cmVzCitmcm9tIC4gaW1wb3J0IGNvcm91dGluZXMKKworCitkZWYgX3Rhc2tfcmVwcl9pbmZvKHRhc2spOgorICAgIGluZm8gPSBiYXNlX2Z1dHVyZXMuX2Z1dHVyZV9yZXByX2luZm8odGFzaykKKworICAgIGlmIHRhc2suX211c3RfY2FuY2VsOgorICAgICAgICAjIHJlcGxhY2Ugc3RhdHVzCisgICAgICAgIGluZm9bMF0gPSAnY2FuY2VsbGluZycKKworICAgIGNvcm8gPSBjb3JvdXRpbmVzLl9mb3JtYXRfY29yb3V0aW5lKHRhc2suX2Nvcm8pCisgICAgaW5mby5pbnNlcnQoMSwgJ2Nvcm89PCVzPicgJSBjb3JvKQorCisgICAgaWYgdGFzay5fZnV0X3dhaXRlciBpcyBub3QgTm9uZToKKyAgICAgICAgaW5mby5pbnNlcnQoMiwgJ3dhaXRfZm9yPSVyJyAlIHRhc2suX2Z1dF93YWl0ZXIpCisgICAgcmV0dXJuIGluZm8KKworCitkZWYgX3Rhc2tfZ2V0X3N0YWNrKHRhc2ssIGxpbWl0KToKKyAgICBmcmFtZXMgPSBbXQorICAgIHRyeToKKyAgICAgICAgIyAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzCisgICAgICAgIGYgPSB0YXNrLl9jb3JvLmNyX2ZyYW1lCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBmID0gdGFzay5fY29yby5naV9mcmFtZQorICAgIGlmIGYgaXMgbm90IE5vbmU6CisgICAgICAgIHdoaWxlIGYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBsaW1pdCA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxpbWl0IC09IDEKKyAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZikKKyAgICAgICAgICAgIGYgPSBmLmZfYmFjaworICAgICAgICBmcmFtZXMucmV2ZXJzZSgpCisgICAgZWxpZiB0YXNrLl9leGNlcHRpb24gaXMgbm90IE5vbmU6CisgICAgICAgIHRiID0gdGFzay5fZXhjZXB0aW9uLl9fdHJhY2ViYWNrX18KKyAgICAgICAgd2hpbGUgdGIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBsaW1pdCA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGxpbWl0IC09IDEKKyAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQodGIudGJfZnJhbWUpCisgICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKKyAgICByZXR1cm4gZnJhbWVzCisKKworZGVmIF90YXNrX3ByaW50X3N0YWNrKHRhc2ssIGxpbWl0LCBmaWxlKToKKyAgICBleHRyYWN0ZWRfbGlzdCA9IFtdCisgICAgY2hlY2tlZCA9IHNldCgpCisgICAgZm9yIGYgaW4gdGFzay5nZXRfc3RhY2sobGltaXQ9bGltaXQpOgorICAgICAgICBsaW5lbm8gPSBmLmZfbGluZW5vCisgICAgICAgIGNvID0gZi5mX2NvZGUKKyAgICAgICAgZmlsZW5hbWUgPSBjby5jb19maWxlbmFtZQorICAgICAgICBuYW1lID0gY28uY29fbmFtZQorICAgICAgICBpZiBmaWxlbmFtZSBub3QgaW4gY2hlY2tlZDoKKyAgICAgICAgICAgIGNoZWNrZWQuYWRkKGZpbGVuYW1lKQorICAgICAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoZmlsZW5hbWUpCisgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vLCBmLmZfZ2xvYmFscykKKyAgICAgICAgZXh0cmFjdGVkX2xpc3QuYXBwZW5kKChmaWxlbmFtZSwgbGluZW5vLCBuYW1lLCBsaW5lKSkKKyAgICBleGMgPSB0YXNrLl9leGNlcHRpb24KKyAgICBpZiBub3QgZXh0cmFjdGVkX2xpc3Q6CisgICAgICAgIHByaW50KCdObyBzdGFjayBmb3IgJXInICUgdGFzaywgZmlsZT1maWxlKQorICAgIGVsaWYgZXhjIGlzIG5vdCBOb25lOgorICAgICAgICBwcmludCgnVHJhY2ViYWNrIGZvciAlciAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonICUgdGFzaywKKyAgICAgICAgICAgICAgZmlsZT1maWxlKQorICAgIGVsc2U6CisgICAgICAgIHByaW50KCdTdGFjayBmb3IgJXIgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JyAlIHRhc2ssCisgICAgICAgICAgICAgIGZpbGU9ZmlsZSkKKyAgICB0cmFjZWJhY2sucHJpbnRfbGlzdChleHRyYWN0ZWRfbGlzdCwgZmlsZT1maWxlKQorICAgIGlmIGV4YyBpcyBub3QgTm9uZToKKyAgICAgICAgZm9yIGxpbmUgaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seShleGMuX19jbGFzc19fLCBleGMpOgorICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1maWxlLCBlbmQ9JycpCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9jb3JvdXRpbmVzLnB5IGIvTGliL2FzeW5jaW8vY29yb3V0aW5lcy5weQppbmRleCA1YmRlY2ViLi4wOGU5NDQxIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9jb3JvdXRpbmVzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Nvcm91dGluZXMucHkKQEAgLTExLDcgKzExLDcgQEAKIAogZnJvbSAuIGltcG9ydCBjb21wYXQKIGZyb20gLiBpbXBvcnQgZXZlbnRzCi1mcm9tIC4gaW1wb3J0IGZ1dHVyZXMKK2Zyb20gLiBpbXBvcnQgYmFzZV9mdXR1cmVzCiBmcm9tIC5sb2cgaW1wb3J0IGxvZ2dlcgogCiAKQEAgLTIwOCw3ICsyMDgsNyBAQAogICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCiAgICAgICAgIGRlZiBjb3JvKCphcmdzLCAqKmt3KToKICAgICAgICAgICAgIHJlcyA9IGZ1bmMoKmFyZ3MsICoqa3cpCi0gICAgICAgICAgICBpZiAoZnV0dXJlcy5pc2Z1dHVyZShyZXMpIG9yIGluc3BlY3QuaXNnZW5lcmF0b3IocmVzKSBvcgorICAgICAgICAgICAgaWYgKGJhc2VfZnV0dXJlcy5pc2Z1dHVyZShyZXMpIG9yIGluc3BlY3QuaXNnZW5lcmF0b3IocmVzKSBvcgogICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UocmVzLCBDb3JvV3JhcHBlcikpOgogICAgICAgICAgICAgICAgIHJlcyA9IHlpZWxkIGZyb20gcmVzCiAgICAgICAgICAgICBlbGlmIF9Bd2FpdGFibGVBQkMgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5IGIvTGliL2FzeW5jaW8vZnV0dXJlcy5weQppbmRleCA5Y2E4ZDg0Li5kMTFkMjg5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Z1dHVyZXMucHkKQEAgLTEsMzUgKzEsMzIgQEAKICIiIkEgRnV0dXJlIGNsYXNzIHNpbWlsYXIgdG8gdGhlIG9uZSBpbiBQRVAgMzE0OC4iIiIKIAotX19hbGxfXyA9IFsnQ2FuY2VsbGVkRXJyb3InLCAnVGltZW91dEVycm9yJywKLSAgICAgICAgICAgJ0ludmFsaWRTdGF0ZUVycm9yJywKLSAgICAgICAgICAgJ0Z1dHVyZScsICd3cmFwX2Z1dHVyZScsICdpc2Z1dHVyZScsCi0gICAgICAgICAgIF0KK19fYWxsX18gPSBbJ0NhbmNlbGxlZEVycm9yJywgJ1RpbWVvdXRFcnJvcicsICdJbnZhbGlkU3RhdGVFcnJvcicsCisgICAgICAgICAgICdGdXR1cmUnLCAnd3JhcF9mdXR1cmUnLCAnaXNmdXR1cmUnXQogCi1pbXBvcnQgY29uY3VycmVudC5mdXR1cmVzLl9iYXNlCitpbXBvcnQgY29uY3VycmVudC5mdXR1cmVzCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlcHJsaWIKIGltcG9ydCBzeXMKIGltcG9ydCB0cmFjZWJhY2sKIAorZnJvbSAuIGltcG9ydCBiYXNlX2Z1dHVyZXMKIGZyb20gLiBpbXBvcnQgY29tcGF0CiBmcm9tIC4gaW1wb3J0IGV2ZW50cwogCi0jIFN0YXRlcyBmb3IgRnV0dXJlLgotX1BFTkRJTkcgPSAnUEVORElORycKLV9DQU5DRUxMRUQgPSAnQ0FOQ0VMTEVEJwotX0ZJTklTSEVEID0gJ0ZJTklTSEVEJwogCi1FcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZS5FcnJvcgotQ2FuY2VsbGVkRXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IKLVRpbWVvdXRFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5UaW1lb3V0RXJyb3IKK0NhbmNlbGxlZEVycm9yID0gYmFzZV9mdXR1cmVzLkNhbmNlbGxlZEVycm9yCitJbnZhbGlkU3RhdGVFcnJvciA9IGJhc2VfZnV0dXJlcy5JbnZhbGlkU3RhdGVFcnJvcgorVGltZW91dEVycm9yID0gYmFzZV9mdXR1cmVzLlRpbWVvdXRFcnJvcgoraXNmdXR1cmUgPSBiYXNlX2Z1dHVyZXMuaXNmdXR1cmUKKworCitfUEVORElORyA9IGJhc2VfZnV0dXJlcy5fUEVORElORworX0NBTkNFTExFRCA9IGJhc2VfZnV0dXJlcy5fQ0FOQ0VMTEVECitfRklOSVNIRUQgPSBiYXNlX2Z1dHVyZXMuX0ZJTklTSEVECisKIAogU1RBQ0tfREVCVUcgPSBsb2dnaW5nLkRFQlVHIC0gMSAgIyBoZWF2eS1kdXR5IGRlYnVnZ2luZwogCiAKLWNsYXNzIEludmFsaWRTdGF0ZUVycm9yKEVycm9yKToKLSAgICAiIiJUaGUgb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgc3RhdGUuIiIiCi0KLQogY2xhc3MgX1RyYWNlYmFja0xvZ2dlcjoKICAgICAiIiJIZWxwZXIgdG8gbG9nIGEgdHJhY2ViYWNrIHVwb24gZGVzdHJ1Y3Rpb24gaWYgbm90IGNsZWFyZWQuCiAKQEAgLTExMCwxNyArMTA3LDYgQEAKICAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKHsnbWVzc2FnZSc6IG1zZ30pCiAKIAotZGVmIGlzZnV0dXJlKG9iaik6Ci0gICAgIiIiQ2hlY2sgZm9yIGEgRnV0dXJlLgotCi0gICAgVGhpcyByZXR1cm5zIFRydWUgd2hlbiBvYmogaXMgYSBGdXR1cmUgaW5zdGFuY2Ugb3IgaXMgYWR2ZXJ0aXNpbmcKLSAgICBpdHNlbGYgYXMgZHVjay10eXBlIGNvbXBhdGlibGUgYnkgc2V0dGluZyBfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcuCi0gICAgU2VlIGNvbW1lbnQgaW4gRnV0dXJlIGZvciBtb3JlIGRldGFpbHMuCi0gICAgIiIiCi0gICAgcmV0dXJuIChoYXNhdHRyKG9iai5fX2NsYXNzX18sICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnKSBhbmQKLSAgICAgICAgICAgIG9iai5fYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcgaXMgbm90IE5vbmUpCi0KLQogY2xhc3MgRnV0dXJlOgogICAgICIiIlRoaXMgY2xhc3MgaXMgKmFsbW9zdCogY29tcGF0aWJsZSB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5GdXR1cmUuCiAKQEAgLTE3Myw0NSArMTU5LDEwIEBACiAgICAgICAgIGlmIHNlbGYuX2xvb3AuZ2V0X2RlYnVnKCk6CiAgICAgICAgICAgICBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrID0gdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2soc3lzLl9nZXRmcmFtZSgxKSkKIAotICAgIGRlZiBfX2Zvcm1hdF9jYWxsYmFja3Moc2VsZik6Ci0gICAgICAgIGNiID0gc2VsZi5fY2FsbGJhY2tzCi0gICAgICAgIHNpemUgPSBsZW4oY2IpCi0gICAgICAgIGlmIG5vdCBzaXplOgotICAgICAgICAgICAgY2IgPSAnJwotCi0gICAgICAgIGRlZiBmb3JtYXRfY2IoY2FsbGJhY2spOgotICAgICAgICAgICAgcmV0dXJuIGV2ZW50cy5fZm9ybWF0X2NhbGxiYWNrX3NvdXJjZShjYWxsYmFjaywgKCkpCi0KLSAgICAgICAgaWYgc2l6ZSA9PSAxOgotICAgICAgICAgICAgY2IgPSBmb3JtYXRfY2IoY2JbMF0pCi0gICAgICAgIGVsaWYgc2l6ZSA9PSAyOgotICAgICAgICAgICAgY2IgPSAne30sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwgZm9ybWF0X2NiKGNiWzFdKSkKLSAgICAgICAgZWxpZiBzaXplID4gMjoKLSAgICAgICAgICAgIGNiID0gJ3t9LCA8e30gbW9yZT4sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfY2IoY2JbLTFdKSkKLSAgICAgICAgcmV0dXJuICdjYj1bJXNdJyAlIGNiCi0KLSAgICBkZWYgX3JlcHJfaW5mbyhzZWxmKToKLSAgICAgICAgaW5mbyA9IFtzZWxmLl9zdGF0ZS5sb3dlcigpXQotICAgICAgICBpZiBzZWxmLl9zdGF0ZSA9PSBfRklOSVNIRUQ6Ci0gICAgICAgICAgICBpZiBzZWxmLl9leGNlcHRpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2V4Y2VwdGlvbj17IXJ9Jy5mb3JtYXQoc2VsZi5fZXhjZXB0aW9uKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyB1c2UgcmVwcmxpYiB0byBsaW1pdCB0aGUgbGVuZ3RoIG9mIHRoZSBvdXRwdXQsIGVzcGVjaWFsbHkKLSAgICAgICAgICAgICAgICAjIGZvciB2ZXJ5IGxvbmcgc3RyaW5ncwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcHJsaWIucmVwcihzZWxmLl9yZXN1bHQpCi0gICAgICAgICAgICAgICAgaW5mby5hcHBlbmQoJ3Jlc3VsdD17fScuZm9ybWF0KHJlc3VsdCkpCi0gICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrczoKLSAgICAgICAgICAgIGluZm8uYXBwZW5kKHNlbGYuX19mb3JtYXRfY2FsbGJhY2tzKCkpCi0gICAgICAgIGlmIHNlbGYuX3NvdXJjZV90cmFjZWJhY2s6Ci0gICAgICAgICAgICBmcmFtZSA9IHNlbGYuX3NvdXJjZV90cmFjZWJhY2tbLTFdCi0gICAgICAgICAgICBpbmZvLmFwcGVuZCgnY3JlYXRlZCBhdCAlczolcycgJSAoZnJhbWVbMF0sIGZyYW1lWzFdKSkKLSAgICAgICAgcmV0dXJuIGluZm8KKyAgICBfcmVwcl9pbmZvID0gYmFzZV9mdXR1cmVzLl9mdXR1cmVfcmVwcl9pbmZvCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGluZm8gPSBzZWxmLl9yZXByX2luZm8oKQotICAgICAgICByZXR1cm4gJzwlcyAlcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnICcuam9pbihpbmZvKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJyAnLmpvaW4oc2VsZi5fcmVwcl9pbmZvKCkpKQogCiAgICAgIyBPbiBQeXRob24gMy4zIGFuZCBvbGRlciwgb2JqZWN0cyB3aXRoIGEgZGVzdHJ1Y3RvciBwYXJ0IG9mIGEgcmVmZXJlbmNlCiAgICAgIyBjeWNsZSBhcmUgbmV2ZXIgZGVzdHJveWVkLiBJdCdzIG5vdCBtb3JlIHRoZSBjYXNlIG9uIFB5dGhvbiAzLjQgdGhhbmtzCkBAIC0zODUsNiArMzM2LDEwIEBACiAgICAgICAgIF9fYXdhaXRfXyA9IF9faXRlcl9fICMgbWFrZSBjb21wYXRpYmxlIHdpdGggJ2F3YWl0JyBleHByZXNzaW9uCiAKIAorIyBOZWVkZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCitfUHlGdXR1cmUgPSBGdXR1cmUKKworCiBkZWYgX3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZChmdXQsIHJlc3VsdCk6CiAgICAgIiIiSGVscGVyIHNldHRpbmcgdGhlIHJlc3VsdCBvbmx5IGlmIHRoZSBmdXR1cmUgd2FzIG5vdCBjYW5jZWxsZWQuIiIiCiAgICAgaWYgZnV0LmNhbmNlbGxlZCgpOgpAQCAtNDc3LDMgKzQzMiwxMiBAQAogICAgIG5ld19mdXR1cmUgPSBsb29wLmNyZWF0ZV9mdXR1cmUoKQogICAgIF9jaGFpbl9mdXR1cmUoZnV0dXJlLCBuZXdfZnV0dXJlKQogICAgIHJldHVybiBuZXdfZnV0dXJlCisKKwordHJ5OgorICAgIGltcG9ydCBfYXN5bmNpbworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgIyBfQ0Z1dHVyZSBpcyBuZWVkZWQgZm9yIHRlc3RzLgorICAgIEZ1dHVyZSA9IF9DRnV0dXJlID0gX2FzeW5jaW8uRnV0dXJlCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKaW5kZXggZmVmMzIwNS4uZmYxMjg3NyAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQpAQCAtOTIsNyArOTIsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3NvY2sgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX2ZhdGFsX2Vycm9yKHNlbGYsIGV4YywgbWVzc2FnZT0nRmF0YWwgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQppbmRleCAxMmQzNTdiLi45ZGJlNTUwIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CkBAIC02MjcsNyArNjI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuX3NvY2suY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHRyYW5zcG9ydCcpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkgYi9MaWIvYXN5bmNpby9zc2xwcm90by5weQppbmRleCA4MDRjNWMzLi45OTFjNzdiIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9zc2xwcm90by5weQorKysgYi9MaWIvYXN5bmNpby9zc2xwcm90by5weQpAQCAtMzMxLDcgKzMzMSw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBwYXVzZV9yZWFkaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdGFza3MucHkgYi9MaWIvYXN5bmNpby90YXNrcy5weQppbmRleCA4ODUyYWE1Li41YTQzZWYyIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby90YXNrcy5weQorKysgYi9MaWIvYXN5bmNpby90YXNrcy5weQpAQCAtOSwxMSArOSwxMCBAQAogaW1wb3J0IGNvbmN1cnJlbnQuZnV0dXJlcwogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGluc3BlY3QKLWltcG9ydCBsaW5lY2FjaGUKLWltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHdlYWtyZWYKIAorZnJvbSAuIGltcG9ydCBiYXNlX3Rhc2tzCiBmcm9tIC4gaW1wb3J0IGNvbXBhdAogZnJvbSAuIGltcG9ydCBjb3JvdXRpbmVzCiBmcm9tIC4gaW1wb3J0IGV2ZW50cwpAQCAtOTMsMTggKzkyLDcgQEAKICAgICAgICAgICAgIGZ1dHVyZXMuRnV0dXJlLl9fZGVsX18oc2VsZikKIAogICAgIGRlZiBfcmVwcl9pbmZvKHNlbGYpOgotICAgICAgICBpbmZvID0gc3VwZXIoKS5fcmVwcl9pbmZvKCkKLQotICAgICAgICBpZiBzZWxmLl9tdXN0X2NhbmNlbDoKLSAgICAgICAgICAgICMgcmVwbGFjZSBzdGF0dXMKLSAgICAgICAgICAgIGluZm9bMF0gPSAnY2FuY2VsbGluZycKLQotICAgICAgICBjb3JvID0gY29yb3V0aW5lcy5fZm9ybWF0X2Nvcm91dGluZShzZWxmLl9jb3JvKQotICAgICAgICBpbmZvLmluc2VydCgxLCAnY29ybz08JXM+JyAlIGNvcm8pCi0KLSAgICAgICAgaWYgc2VsZi5fZnV0X3dhaXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGluZm8uaW5zZXJ0KDIsICd3YWl0X2Zvcj0lcicgJSBzZWxmLl9mdXRfd2FpdGVyKQotICAgICAgICByZXR1cm4gaW5mbworICAgICAgICByZXR1cm4gYmFzZV90YXNrcy5fdGFza19yZXByX2luZm8oc2VsZikKIAogICAgIGRlZiBnZXRfc3RhY2soc2VsZiwgKiwgbGltaXQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBzdGFjayBmcmFtZXMgZm9yIHRoaXMgdGFzaydzIGNvcm91dGluZS4KQEAgLTEyNywzMSArMTE1LDcgQEAKICAgICAgICAgRm9yIHJlYXNvbnMgYmV5b25kIG91ciBjb250cm9sLCBvbmx5IG9uZSBzdGFjayBmcmFtZSBpcwogICAgICAgICByZXR1cm5lZCBmb3IgYSBzdXNwZW5kZWQgY29yb3V0aW5lLgogICAgICAgICAiIiIKLSAgICAgICAgZnJhbWVzID0gW10KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyAnYXN5bmMgZGVmJyBjb3JvdXRpbmVzCi0gICAgICAgICAgICBmID0gc2VsZi5fY29yby5jcl9mcmFtZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBmID0gc2VsZi5fY29yby5naV9mcmFtZQotICAgICAgICBpZiBmIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd2hpbGUgZiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgaWYgbGltaXQgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGxpbWl0IC09IDEKLSAgICAgICAgICAgICAgICBmcmFtZXMuYXBwZW5kKGYpCi0gICAgICAgICAgICAgICAgZiA9IGYuZl9iYWNrCi0gICAgICAgICAgICBmcmFtZXMucmV2ZXJzZSgpCi0gICAgICAgIGVsaWYgc2VsZi5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGIgPSBzZWxmLl9leGNlcHRpb24uX190cmFjZWJhY2tfXwotICAgICAgICAgICAgd2hpbGUgdGIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbWl0IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBsaW1pdCAtPSAxCi0gICAgICAgICAgICAgICAgZnJhbWVzLmFwcGVuZCh0Yi50Yl9mcmFtZSkKLSAgICAgICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKLSAgICAgICAgcmV0dXJuIGZyYW1lcworICAgICAgICByZXR1cm4gYmFzZV90YXNrcy5fdGFza19nZXRfc3RhY2soc2VsZiwgbGltaXQpCiAKICAgICBkZWYgcHJpbnRfc3RhY2soc2VsZiwgKiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKToKICAgICAgICAgIiIiUHJpbnQgdGhlIHN0YWNrIG9yIHRyYWNlYmFjayBmb3IgdGhpcyB0YXNrJ3MgY29yb3V0aW5lLgpAQCAtMTYyLDMxICsxMjYsNyBAQAogICAgICAgICB0byB3aGljaCB0aGUgb3V0cHV0IGlzIHdyaXR0ZW47IGJ5IGRlZmF1bHQgb3V0cHV0IGlzIHdyaXR0ZW4KICAgICAgICAgdG8gc3lzLnN0ZGVyci4KICAgICAgICAgIiIiCi0gICAgICAgIGV4dHJhY3RlZF9saXN0ID0gW10KLSAgICAgICAgY2hlY2tlZCA9IHNldCgpCi0gICAgICAgIGZvciBmIGluIHNlbGYuZ2V0X3N0YWNrKGxpbWl0PWxpbWl0KToKLSAgICAgICAgICAgIGxpbmVubyA9IGYuZl9saW5lbm8KLSAgICAgICAgICAgIGNvID0gZi5mX2NvZGUKLSAgICAgICAgICAgIGZpbGVuYW1lID0gY28uY29fZmlsZW5hbWUKLSAgICAgICAgICAgIG5hbWUgPSBjby5jb19uYW1lCi0gICAgICAgICAgICBpZiBmaWxlbmFtZSBub3QgaW4gY2hlY2tlZDoKLSAgICAgICAgICAgICAgICBjaGVja2VkLmFkZChmaWxlbmFtZSkKLSAgICAgICAgICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vLCBmLmZfZ2xvYmFscykKLSAgICAgICAgICAgIGV4dHJhY3RlZF9saXN0LmFwcGVuZCgoZmlsZW5hbWUsIGxpbmVubywgbmFtZSwgbGluZSkpCi0gICAgICAgIGV4YyA9IHNlbGYuX2V4Y2VwdGlvbgotICAgICAgICBpZiBub3QgZXh0cmFjdGVkX2xpc3Q6Ci0gICAgICAgICAgICBwcmludCgnTm8gc3RhY2sgZm9yICVyJyAlIHNlbGYsIGZpbGU9ZmlsZSkKLSAgICAgICAgZWxpZiBleGMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwcmludCgnVHJhY2ViYWNrIGZvciAlciAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonICUgc2VsZiwKLSAgICAgICAgICAgICAgICAgIGZpbGU9ZmlsZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCdTdGFjayBmb3IgJXIgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JyAlIHNlbGYsCi0gICAgICAgICAgICAgICAgICBmaWxlPWZpbGUpCi0gICAgICAgIHRyYWNlYmFjay5wcmludF9saXN0KGV4dHJhY3RlZF9saXN0LCBmaWxlPWZpbGUpCi0gICAgICAgIGlmIGV4YyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoZXhjLl9fY2xhc3NfXywgZXhjKToKLSAgICAgICAgICAgICAgICBwcmludChsaW5lLCBmaWxlPWZpbGUsIGVuZD0nJykKKyAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfcHJpbnRfc3RhY2soc2VsZiwgbGltaXQsIGZpbGUpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgICAiIiJSZXF1ZXN0IHRoYXQgdGhpcyB0YXNrIGNhbmNlbCBpdHNlbGYuCkBAIC0zMTYsNiArMjU2LDE4IEBACiAgICAgICAgIHNlbGYgPSBOb25lICAjIE5lZWRlZCB0byBicmVhayBjeWNsZXMgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLgogCiAKK19QeVRhc2sgPSBUYXNrCisKKwordHJ5OgorICAgIGltcG9ydCBfYXN5bmNpbworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgIyBfQ1Rhc2sgaXMgbmVlZGVkIGZvciB0ZXN0cy4KKyAgICBUYXNrID0gX0NUYXNrID0gX2FzeW5jaW8uVGFzaworCisKICMgd2FpdCgpIGFuZCBhc19jb21wbGV0ZWQoKSBzaW1pbGFyIHRvIHRob3NlIGluIFBFUCAzMTQ4LgogCiBGSVJTVF9DT01QTEVURUQgPSBjb25jdXJyZW50LmZ1dHVyZXMuRklSU1RfQ09NUExFVEVECmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5IGIvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQppbmRleCA5ZDMyODIyLi45OWUzODM5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CisrKyBiL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKQEAgLTExOSwxMCArMTE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0JywgJ3Rlc3RfYXN5bmNpbycpCiAgICAgICAgIGtleWZpbGUgPSBvcy5wYXRoLmpvaW4oaGVyZSwgJ3NzbF9rZXkucGVtJykKICAgICAgICAgY2VydGZpbGUgPSBvcy5wYXRoLmpvaW4oaGVyZSwgJ3NzbF9jZXJ0LnBlbScpCi0gICAgICAgIHNzb2NrID0gc3NsLndyYXBfc29ja2V0KHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlKQorCisgICAgICAgIHNzb2NrID0gY29udGV4dC53cmFwX3NvY2tldChyZXF1ZXN0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLlJlcXVlc3RIYW5kbGVyQ2xhc3Moc3NvY2ssIGNsaWVudF9hZGRyZXNzLCBzZWxmKQogICAgICAgICAgICAgc3NvY2suY2xvc2UoKQpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkgYi9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQppbmRleCA3NzkwNTM0Li4yODA2ZWE4IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weQpAQCAtNDE5LDcgKzQxOSw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9waXBlLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiBwaXBlIHRyYW5zcG9ydCcpOgpAQCAtNjE5LDcgKzYyMCw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fcGlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9waXBlLmNsb3NlKCkKIAogICAgIGRlZiBhYm9ydChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKaW5kZXggNjY4ZmUxNC4uYjc3N2RkMCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vd2luZG93c19ldmVudHMucHkKQEAgLTE3MSw4ICsxNzEsMTMgQEAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIl9XYWl0Q2FuY2VsRnV0dXJlIG11c3Qgbm90IGJlIGNhbmNlbGxlZCIpCiAKLSAgICBkZWYgX3NjaGVkdWxlX2NhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc3VwZXIoX1dhaXRDYW5jZWxGdXR1cmUsIHNlbGYpLl9zY2hlZHVsZV9jYWxsYmFja3MoKQorICAgIGRlZiBzZXRfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHN1cGVyKCkuc2V0X3Jlc3VsdChyZXN1bHQpCisgICAgICAgIGlmIHNlbGYuX2RvbmVfY2FsbGJhY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9kb25lX2NhbGxiYWNrKHNlbGYpCisKKyAgICBkZWYgc2V0X2V4Y2VwdGlvbihzZWxmLCBleGNlcHRpb24pOgorICAgICAgICBzdXBlcigpLnNldF9leGNlcHRpb24oZXhjZXB0aW9uKQogICAgICAgICBpZiBzZWxmLl9kb25lX2NhbGxiYWNrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFjayhzZWxmKQogCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5IGIvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQppbmRleCA4NzBjZDEzLi43YzYzZmI5IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CisrKyBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKQEAgLTE1OSw3ICsxNTksOCBAQAogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNvcmUucHkgYi9MaWIvYXN5bmNvcmUucHkKaW5kZXggM2I1MWYwZi4uNzA1ZTQwNiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jb3JlLnB5CisrKyBiL0xpYi9hc3luY29yZS5weQpAQCAtMzMzLDcgKzMzMyw3IEBACiAgICAgICAgIHNlbGYuY29ubmVjdGluZyA9IFRydWUKICAgICAgICAgZXJyID0gc2VsZi5zb2NrZXQuY29ubmVjdF9leChhZGRyZXNzKQogICAgICAgICBpZiBlcnIgaW4gKEVJTlBST0dSRVNTLCBFQUxSRUFEWSwgRVdPVUxEQkxPQ0spIFwKLSAgICAgICAgb3IgZXJyID09IEVJTlZBTCBhbmQgb3MubmFtZSBpbiAoJ250JywgJ2NlJyk6CisgICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgPT0gJ250JzoKICAgICAgICAgICAgIHNlbGYuYWRkciA9IGFkZHJlc3MKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBlcnIgaW4gKDAsIEVJU0NPTk4pOgpAQCAtNTk1LDcgKzU5NSw4IEBACiAKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLmZkID49IDA6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgZmlsZSAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgICAgIGRlZiByZWN2KHNlbGYsICphcmdzKToKZGlmZiAtLWdpdCBhL0xpYi9iYXNlNjQucHkgYi9MaWIvYmFzZTY0LnB5CmluZGV4IGFkYWVjMWQuLjU4ZjZhZDYgMTAwNzU1Ci0tLSBhL0xpYi9iYXNlNjQucHkKKysrIGIvTGliL2Jhc2U2NC5weQpAQCAtNTUsOCArNTUsNyBAQAogICAgIGFsdGVybmF0aXZlIGFscGhhYmV0IGZvciB0aGUgJysnIGFuZCAnLycgY2hhcmFjdGVycy4gIFRoaXMgYWxsb3dzIGFuCiAgICAgYXBwbGljYXRpb24gdG8gZS5nLiBnZW5lcmF0ZSB1cmwgb3IgZmlsZXN5c3RlbSBzYWZlIEJhc2U2NCBzdHJpbmdzLgogICAgICIiIgotICAgICMgU3RyaXAgb2ZmIHRoZSB0cmFpbGluZyBuZXdsaW5lCi0gICAgZW5jb2RlZCA9IGJpbmFzY2lpLmIyYV9iYXNlNjQocylbOi0xXQorICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMsIG5ld2xpbmU9RmFsc2UpCiAgICAgaWYgYWx0Y2hhcnMgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCiAgICAgICAgIHJldHVybiBlbmNvZGVkLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYicrLycsIGFsdGNoYXJzKSkKQEAgLTE1Niw3ICsxNTUsNyBAQAogICAgIGxlZnRvdmVyID0gbGVuKHMpICUgNQogICAgICMgUGFkIHRoZSBsYXN0IHF1YW50dW0gd2l0aCB6ZXJvIGJpdHMgaWYgbmVjZXNzYXJ5CiAgICAgaWYgbGVmdG92ZXI6Ci0gICAgICAgIHMgPSBzICsgYnl0ZXMoNSAtIGxlZnRvdmVyKSAgIyBEb24ndCB1c2UgKz0gIQorICAgICAgICBzID0gcyArIGInXDAnICogKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKICAgICBlbmNvZGVkID0gYnl0ZWFycmF5KCkKICAgICBmcm9tX2J5dGVzID0gaW50LmZyb21fYnl0ZXMKICAgICBiMzJ0YWIyID0gX2IzMnRhYjIKZGlmZiAtLWdpdCBhL0xpYi9iejIucHkgYi9MaWIvYnoyLnB5CmluZGV4IGJjNzhjNTQuLjZmNTYzMjggMTAwNjQ0Ci0tLSBhL0xpYi9iejIucHkKKysrIGIvTGliL2J6Mi5weQpAQCAtMTEsNiArMTEsNyBAQAogCiBmcm9tIGJ1aWx0aW5zIGltcG9ydCBvcGVuIGFzIF9idWlsdGluX29wZW4KIGltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBfY29tcHJlc3Npb24KIApAQCAtNDIsOSArNDMsOSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpOgogICAgICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlLgogCi0gICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgaXQgZ2l2ZXMgdGhlIG5hbWUKLSAgICAgICAgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0LAotICAgICAgICB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgorICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciwgYnl0ZXMsIG9yIFBhdGhMaWtlIG9iamVjdCwgaXQgZ2l2ZXMgdGhlCisgICAgICAgIG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUKKyAgICAgICAgb2JqZWN0LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgogCiAgICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywKICAgICAgICAgJ3gnIGZvciBjcmVhdGluZyBleGNsdXNpdmVseSwgb3IgJ2EnIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbgpAQCAtOTEsNyArOTIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiAlciIgJSAobW9kZSwpKQogCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICAgICAgc2VsZi5fZnAgPSBfYnVpbHRpbl9vcGVuKGZpbGVuYW1lLCBtb2RlKQogICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKQEAgLTk5LDcgKzEwMCw3IEBACiAgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyLCBieXRlcywgZmlsZSBvciBQYXRoTGlrZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLApAQCAtMjg5LDggKzI5MCw5IEBACiAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLSAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgY2FuIGJlIGFuIGFjdHVhbCBmaWxlbmFtZSAoYSBzdHIgb3IgYnl0ZXMKLSAgICBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyLCBieXRlcywgb3IKKyAgICBQYXRoTGlrZSBvYmplY3QpLCBvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUKKyAgICB0by4KIAogICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgIngiLCAieGIiLCAiYSIgb3IKICAgICAiYWIiIGZvciBiaW5hcnkgbW9kZSwgb3IgInJ0IiwgInd0IiwgInh0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuCmRpZmYgLS1naXQgYS9MaWIvY2FsZW5kYXIucHkgYi9MaWIvY2FsZW5kYXIucHkKaW5kZXggNzZjZjhkZS4uMDc1OTRmMyAxMDA2NDQKLS0tIGEvTGliL2NhbGVuZGFyLnB5CisrKyBiL0xpYi9jYWxlbmRhci5weQpAQCAtMTMsNyArMTMsOSBAQAogX19hbGxfXyA9IFsiSWxsZWdhbE1vbnRoRXJyb3IiLCAiSWxsZWdhbFdlZWtkYXlFcnJvciIsICJzZXRmaXJzdHdlZWtkYXkiLAogICAgICAgICAgICAiZmlyc3R3ZWVrZGF5IiwgImlzbGVhcCIsICJsZWFwZGF5cyIsICJ3ZWVrZGF5IiwgIm1vbnRocmFuZ2UiLAogICAgICAgICAgICAibW9udGhjYWxlbmRhciIsICJwcm1vbnRoIiwgIm1vbnRoIiwgInByY2FsIiwgImNhbGVuZGFyIiwKLSAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiXQorICAgICAgICAgICAidGltZWdtIiwgIm1vbnRoX25hbWUiLCAibW9udGhfYWJiciIsICJkYXlfbmFtZSIsICJkYXlfYWJiciIsCisgICAgICAgICAgICJDYWxlbmRhciIsICJUZXh0Q2FsZW5kYXIiLCAiSFRNTENhbGVuZGFyIiwgIkxvY2FsZVRleHRDYWxlbmRhciIsCisgICAgICAgICAgICJMb2NhbGVIVE1MQ2FsZW5kYXIiLCAid2Vla2hlYWRlciJdCiAKICMgRXhjZXB0aW9uIHJhaXNlZCBmb3IgYmFkIGlucHV0ICh3aXRoIHN0cmluZyBwYXJhbWV0ZXIgZm9yIGRldGFpbHMpCiBlcnJvciA9IFZhbHVlRXJyb3IKQEAgLTYwNCw1MSArNjA2LDYzIEBACiAKIAogZGVmIG1haW4oYXJncyk6Ci0gICAgaW1wb3J0IG9wdHBhcnNlCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdlPSJ1c2FnZTogJXByb2cgW29wdGlvbnNdIFt5ZWFyIFttb250aF1dIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBpbXBvcnQgYXJncGFyc2UKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgdGV4dGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgndGV4dCBvbmx5IGFyZ3VtZW50cycpCisgICAgaHRtbGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnaHRtbCBvbmx5IGFyZ3VtZW50cycpCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi13IiwgIi0td2lkdGgiLAotICAgICAgICBkZXN0PSJ3aWR0aCIsIHR5cGU9ImludCIsIGRlZmF1bHQ9MiwKLSAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MiwKKyAgICAgICAgaGVscD0id2lkdGggb2YgZGF0ZSBjb2x1bW4gKGRlZmF1bHQgMikiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItbCIsICItLWxpbmVzIiwKLSAgICAgICAgZGVzdD0ibGluZXMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTEsCi0gICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTEsCisgICAgICAgIGhlbHA9Im51bWJlciBvZiBsaW5lcyBmb3IgZWFjaCB3ZWVrIChkZWZhdWx0IDEpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXMiLCAiLS1zcGFjaW5nIiwKLSAgICAgICAgZGVzdD0ic3BhY2luZyIsIHR5cGU9ImludCIsIGRlZmF1bHQ9NiwKLSAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2LCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD02LAorICAgICAgICBoZWxwPSJzcGFjaW5nIGJldHdlZW4gbW9udGhzIChkZWZhdWx0IDYpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLW0iLCAiLS1tb250aHMiLAotICAgICAgICBkZXN0PSJtb250aHMiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTMsCi0gICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTMsCisgICAgICAgIGhlbHA9Im1vbnRocyBwZXIgcm93IChkZWZhdWx0IDMpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBodG1sZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWMiLCAiLS1jc3MiLAotICAgICAgICBkZXN0PSJjc3MiLCBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAotICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIChodG1sIG9ubHkpIgorICAgICAgICBkZWZhdWx0PSJjYWxlbmRhci5jc3MiLAorICAgICAgICBoZWxwPSJDU1MgdG8gdXNlIGZvciBwYWdlIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLUwiLCAiLS1sb2NhbGUiLAotICAgICAgICBkZXN0PSJsb2NhbGUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgIGRlZmF1bHQ9Tm9uZSwKICAgICAgICAgaGVscD0ibG9jYWxlIHRvIGJlIHVzZWQgZnJvbSBtb250aCBhbmQgd2Vla2RheSBuYW1lcyIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1lIiwgIi0tZW5jb2RpbmciLAotICAgICAgICBkZXN0PSJlbmNvZGluZyIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0iRW5jb2RpbmcgdG8gdXNlIGZvciBvdXRwdXQuIgorICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgIGhlbHA9ImVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0IgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLXQiLCAiLS10eXBlIiwKLSAgICAgICAgZGVzdD0idHlwZSIsIGRlZmF1bHQ9InRleHQiLAorICAgICAgICBkZWZhdWx0PSJ0ZXh0IiwKICAgICAgICAgY2hvaWNlcz0oInRleHQiLCAiaHRtbCIpLAogICAgICAgICBoZWxwPSJvdXRwdXQgdHlwZSAodGV4dCBvciBodG1sKSIKICAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgInllYXIiLAorICAgICAgICBuYXJncz0nPycsIHR5cGU9aW50LAorICAgICAgICBoZWxwPSJ5ZWFyIG51bWJlciAoMS05OTk5KSIKKyAgICApCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAgICAgIm1vbnRoIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ibW9udGggbnVtYmVyICgxLTEyLCB0ZXh0IG9ubHkpIgorICAgICkKIAotICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3NbMTpdKQogCiAgICAgaWYgb3B0aW9ucy5sb2NhbGUgYW5kIG5vdCBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICBwYXJzZXIuZXJyb3IoImlmIC0tbG9jYWxlIGlzIHNwZWNpZmllZCAtLWVuY29kaW5nIGlzIHJlcXVpcmVkIikKQEAgLTY2NiwxMCArNjgwLDEwIEBACiAgICAgICAgICAgICBlbmNvZGluZyA9IHN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQogICAgICAgICBvcHRkaWN0ID0gZGljdChlbmNvZGluZz1lbmNvZGluZywgY3NzPW9wdGlvbnMuY3NzKQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShkYXRldGltZS5kYXRlLnRvZGF5KCkueWVhciwgKipvcHRkaWN0KSkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgd3JpdGUoY2FsLmZvcm1hdHllYXJwYWdlKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhcnNlci5lcnJvcigiaW5jb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMiKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKQEAgLTY3OSwxOCArNjkzLDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjYWwgPSBUZXh0Q2FsZW5kYXIoKQogICAgICAgICBvcHRkaWN0ID0gZGljdCh3PW9wdGlvbnMud2lkdGgsIGw9b3B0aW9ucy5saW5lcykKLSAgICAgICAgaWYgbGVuKGFyZ3MpICE9IDM6CisgICAgICAgIGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKICAgICAgICAgICAgIG9wdGRpY3RbImMiXSA9IG9wdGlvbnMuc3BhY2luZwogICAgICAgICAgICAgb3B0ZGljdFsibSJdID0gb3B0aW9ucy5tb250aHMKLSAgICAgICAgaWYgbGVuKGFyZ3MpID09IDE6CisgICAgICAgIGlmIG9wdGlvbnMueWVhciBpcyBOb25lOgogICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGludChhcmdzWzFdKSwgKipvcHRkaWN0KQotICAgICAgICBlbGlmIGxlbihhcmdzKSA9PSAzOgotICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKGludChhcmdzWzFdKSwgaW50KGFyZ3NbMl0pLCAqKm9wdGRpY3QpCisgICAgICAgIGVsaWYgb3B0aW9ucy5tb250aCBpcyBOb25lOgorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdHllYXIob3B0aW9ucy55ZWFyLCAqKm9wdGRpY3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0bW9udGgob3B0aW9ucy55ZWFyLCBvcHRpb25zLm1vbnRoLCAqKm9wdGRpY3QpCiAgICAgICAgIHdyaXRlID0gc3lzLnN0ZG91dC53cml0ZQogICAgICAgICBpZiBvcHRpb25zLmVuY29kaW5nOgogICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmVuY29kZShvcHRpb25zLmVuY29kaW5nKQpkaWZmIC0tZ2l0IGEvTGliL2NnaS5weSBiL0xpYi9jZ2kucHkKaW5kZXggMTg5YzZkNS4uMjMzYTQ5NiAxMDA3NTUKLS0tIGEvTGliL2NnaS5weQorKysgYi9MaWIvY2dpLnB5CkBAIC00NSw3ICs0NSw3IEBACiAKIF9fYWxsX18gPSBbIk1pbmlGaWVsZFN0b3JhZ2UiLCAiRmllbGRTdG9yYWdlIiwKICAgICAgICAgICAgInBhcnNlIiwgInBhcnNlX3FzIiwgInBhcnNlX3FzbCIsICJwYXJzZV9tdWx0aXBhcnQiLAotICAgICAgICAgICAicGFyc2VfaGVhZGVyIiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKKyAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJ0ZXN0IiwgInByaW50X2V4Y2VwdGlvbiIsICJwcmludF9lbnZpcm9uIiwKICAgICAgICAgICAgInByaW50X2Zvcm0iLCAicHJpbnRfZGlyZWN0b3J5IiwgInByaW50X2FyZ3VtZW50cyIsCiAgICAgICAgICAgICJwcmludF9lbnZpcm9uX3VzYWdlIiwgImVzY2FwZSJdCiAKZGlmZiAtLWdpdCBhL0xpYi9jb2RlLnB5IGIvTGliL2NvZGUucHkKaW5kZXggNTMyNDRlMy4uMjMyOTVmNCAxMDA2NDQKLS0tIGEvTGliL2NvZGUucHkKKysrIGIvTGliL2NvZGUucHkKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICAiIiJSZXNldCB0aGUgaW5wdXQgYnVmZmVyLiIiIgogICAgICAgICBzZWxmLmJ1ZmZlciA9IFtdCiAKLSAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUpOgorICAgIGRlZiBpbnRlcmFjdChzZWxmLCBiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4KIAogICAgICAgICBUaGUgb3B0aW9uYWwgYmFubmVyIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYmFubmVyIHRvIHByaW50CkBAIC0xOTYsNiArMTk2LDExIEBACiAgICAgICAgIHRvIGNvbmZ1c2UgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28KICAgICAgICAgY2xvc2UhKS4KIAorICAgICAgICBUaGUgb3B0aW9uYWwgZXhpdG1zZyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGV4aXQgbWVzc2FnZQorICAgICAgICBwcmludGVkIHdoZW4gZXhpdGluZy4gUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzCisgICAgICAgIHByaW50aW5nIGFuIGV4aXQgbWVzc2FnZS4gSWYgZXhpdG1zZyBpcyBub3QgZ2l2ZW4gb3IgTm9uZSwKKyAgICAgICAgYSBkZWZhdWx0IG1lc3NhZ2UgaXMgcHJpbnRlZC4KKwogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnBzMQpAQCAtMjMwLDYgKzIzNSwxMCBAQAogICAgICAgICAgICAgICAgIHNlbGYud3JpdGUoIlxuS2V5Ym9hcmRJbnRlcnJ1cHRcbiIpCiAgICAgICAgICAgICAgICAgc2VsZi5yZXNldGJ1ZmZlcigpCiAgICAgICAgICAgICAgICAgbW9yZSA9IDAKKyAgICAgICAgaWYgZXhpdG1zZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnbm93IGV4aXRpbmcgJXMuLi5cbicgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKyAgICAgICAgZWxpZiBleGl0bXNnICE9ICcnOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnJXNcbicgJSBleGl0bXNnKQogCiAgICAgZGVmIHB1c2goc2VsZiwgbGluZSk6CiAgICAgICAgICIiIlB1c2ggYSBsaW5lIHRvIHRoZSBpbnRlcnByZXRlci4KQEAgLTI2Nyw3ICsyNzYsNyBAQAogCiAKIAotZGVmIGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lKToKK2RlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSwgZXhpdG1zZz1Ob25lKToKICAgICAiIiJDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBpbnRlcnByZXRlci4KIAogICAgIFRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJsZSBpbnRlcmZhY2UgdG8gdGhlIEludGVyYWN0aXZlQ29uc29sZQpAQCAtMjc5LDYgKzI4OCw3IEBACiAgICAgYmFubmVyIC0tIHBhc3NlZCB0byBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoKQogICAgIHJlYWRmdW5jIC0tIGlmIG5vdCBOb25lLCByZXBsYWNlcyBJbnRlcmFjdGl2ZUNvbnNvbGUucmF3X2lucHV0KCkKICAgICBsb2NhbCAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVJbnRlcnByZXRlci5fX2luaXRfXygpCisgICAgZXhpdG1zZyAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKIAogICAgICIiIgogICAgIGNvbnNvbGUgPSBJbnRlcmFjdGl2ZUNvbnNvbGUobG9jYWwpCkBAIC0yODksNyArMjk5LDcgQEAKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCi0gICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIpCisgICAgY29uc29sZS5pbnRlcmFjdChiYW5uZXIsIGV4aXRtc2cpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weSBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQppbmRleCBlYmU4ZWU3Li5iY2M0MjkxIDEwMDY0NAotLS0gYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICB7bmFtZX0gPSBfcHJvcGVydHkoX2l0ZW1nZXR0ZXIoe2luZGV4OmR9KSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIHtpbmRleDpkfScpCiAnJycKIAotZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UpOgorZGVmIG5hbWVkdHVwbGUodHlwZW5hbWUsIGZpZWxkX25hbWVzLCAqLCB2ZXJib3NlPUZhbHNlLCByZW5hbWU9RmFsc2UsIG1vZHVsZT1Ob25lKToKICAgICAiIiJSZXR1cm5zIGEgbmV3IHN1YmNsYXNzIG9mIHR1cGxlIHdpdGggbmFtZWQgZmllbGRzLgogCiAgICAgPj4+IFBvaW50ID0gbmFtZWR0dXBsZSgnUG9pbnQnLCBbJ3gnLCAneSddKQpAQCAtMzkzLDcgKzM5Myw3IEBACiAgICAgICAgICAgICAgICAgZmllbGRfbmFtZXNbaW5kZXhdID0gJ18lZCcgJSBpbmRleAogICAgICAgICAgICAgc2Vlbi5hZGQobmFtZSkKICAgICBmb3IgbmFtZSBpbiBbdHlwZW5hbWVdICsgZmllbGRfbmFtZXM6Ci0gICAgICAgIGlmIHR5cGUobmFtZSkgIT0gc3RyOgorICAgICAgICBpZiB0eXBlKG5hbWUpIGlzIG5vdCBzdHI6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgc3RyaW5ncycpCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgbXVzdCBiZSB2YWxpZCAnCkBAIC00MzQsMTEgKzQzNCwxNSBAQAogICAgICMgRm9yIHBpY2tsaW5nIHRvIHdvcmssIHRoZSBfX21vZHVsZV9fIHZhcmlhYmxlIG5lZWRzIHRvIGJlIHNldCB0byB0aGUgZnJhbWUKICAgICAjIHdoZXJlIHRoZSBuYW1lZCB0dXBsZSBpcyBjcmVhdGVkLiAgQnlwYXNzIHRoaXMgc3RlcCBpbiBlbnZpcm9ubWVudHMgd2hlcmUKICAgICAjIHN5cy5fZ2V0ZnJhbWUgaXMgbm90IGRlZmluZWQgKEp5dGhvbiBmb3IgZXhhbXBsZSkgb3Igc3lzLl9nZXRmcmFtZSBpcyBub3QKLSAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbikuCi0gICAgdHJ5OgotICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKLSAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgcGFzcworICAgICMgZGVmaW5lZCBmb3IgYXJndW1lbnRzIGdyZWF0ZXIgdGhhbiAwIChJcm9uUHl0aG9uKSwgb3Igd2hlcmUgdGhlIHVzZXIgaGFzCisgICAgIyBzcGVjaWZpZWQgYSBwYXJ0aWN1bGFyIG1vZHVsZS4KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kdWxlID0gX3N5cy5fZ2V0ZnJhbWUoMSkuZl9nbG9iYWxzLmdldCgnX19uYW1lX18nLCAnX19tYWluX18nKQorICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHBhc3MKKyAgICBpZiBtb2R1bGUgaXMgbm90IE5vbmU6CisgICAgICAgIHJlc3VsdC5fX21vZHVsZV9fID0gbW9kdWxlCiAKICAgICByZXR1cm4gcmVzdWx0CiAKQEAgLTg0Miw3ICs4NDYsNyBAQAogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIgYW5kIHN0cmluZy5UZW1wbGF0ZSkKKyMjIyAgQ2hhaW5NYXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjbGFzcyBDaGFpbk1hcChNdXRhYmxlTWFwcGluZyk6CkBAIC05NjksNyArOTczLDcgQEAKICAgICAgICAgICAgIGRpY3QgPSBrd2FyZ3MucG9wKCdkaWN0JykKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigiUGFzc2luZyAnZGljdCcgYXMga2V5d29yZCBhcmd1bWVudCBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpY3QgPSBOb25lCiAgICAgICAgIHNlbGYuZGF0YSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2M2UzOGUuLjAwMDAwMDAKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTaW1wbGUgdGVzdHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCi1Qb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQotcCA9IFBvaW50KHg9MTAsIHk9MjApCi1hc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKLQotIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKLWNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQotCi1mb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgotICAgIHByaW50IChwKQotCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKLSAgICBfX3Nsb3RzX18gPSAoKQotICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKLSAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQotCi1wcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKLQotUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQotcHJpbnQoUG9pbnQzRC5fX2RvY19fKQotCi1pbXBvcnQgZG9jdGVzdCwgY29sbGVjdGlvbnMKLVRlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCi1wcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKGNvbGxlY3Rpb25zKSkpCmRpZmYgLS1naXQgYS9MaWIvY29tcGlsZWFsbC5weSBiL0xpYi9jb21waWxlYWxsLnB5CmluZGV4IDJkNGM1MjMuLjFjOWNlYjYgMTAwNjQ0Ci0tLSBhL0xpYi9jb21waWxlYWxsLnB5CisrKyBiL0xpYi9jb21waWxlYWxsLnB5CkBAIC0yNSw2ICsyNSw4IEBACiBfX2FsbF9fID0gWyJjb21waWxlX2RpciIsImNvbXBpbGVfZmlsZSIsImNvbXBpbGVfcGF0aCJdCiAKIGRlZiBfd2Fsa19kaXIoZGlyLCBkZGlyPU5vbmUsIG1heGxldmVscz0xMCwgcXVpZXQ9MCk6CisgICAgaWYgcXVpZXQgPCAyIGFuZCBpc2luc3RhbmNlKGRpciwgb3MuUGF0aExpa2UpOgorICAgICAgICBkaXIgPSBvcy5mc3BhdGgoZGlyKQogICAgIGlmIG5vdCBxdWlldDoKICAgICAgICAgcHJpbnQoJ0xpc3RpbmcgeyFyfS4uLicuZm9ybWF0KGRpcikpCiAgICAgdHJ5OgpAQCAtNzEsNyArNzMsNyBAQAogCiAgICAgZmlsZXMgPSBfd2Fsa19kaXIoZGlyLCBxdWlldD1xdWlldCwgbWF4bGV2ZWxzPW1heGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICBkZGlyPWRkaXIpCi0gICAgc3VjY2VzcyA9IDEKKyAgICBzdWNjZXNzID0gVHJ1ZQogICAgIGlmIHdvcmtlcnMgaXMgbm90IE5vbmUgYW5kIHdvcmtlcnMgIT0gMSBhbmQgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpcyBub3QgTm9uZToKICAgICAgICAgd29ya2VycyA9IHdvcmtlcnMgb3IgTm9uZQogICAgICAgICB3aXRoIFByb2Nlc3NQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9d29ya2VycykgYXMgZXhlY3V0b3I6CkBAIC04MSwxMiArODMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3k9bGVnYWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMpCi0gICAgICAgICAgICBzdWNjZXNzID0gbWluKHJlc3VsdHMsIGRlZmF1bHQ9MSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBtaW4ocmVzdWx0cywgZGVmYXVsdD1UcnVlKQogICAgIGVsc2U6CiAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgbm90IGNvbXBpbGVfZmlsZShmaWxlLCBkZGlyLCBmb3JjZSwgcngsIHF1aWV0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3ksIG9wdGltaXplKToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgIHJldHVybiBzdWNjZXNzCiAKIGRlZiBjb21waWxlX2ZpbGUoZnVsbG5hbWUsIGRkaXI9Tm9uZSwgZm9yY2U9RmFsc2UsIHJ4PU5vbmUsIHF1aWV0PTAsCkBAIC0xMDQsNyArMTA2LDkgQEAKICAgICBsZWdhY3k6ICAgIGlmIFRydWUsIHByb2R1Y2UgbGVnYWN5IHB5YyBwYXRocyBpbnN0ZWFkIG9mIFBFUCAzMTQ3IHBhdGhzCiAgICAgb3B0aW1pemU6ICBvcHRpbWl6YXRpb24gbGV2ZWwgb3IgLTEgZm9yIGxldmVsIG9mIHRoZSBpbnRlcnByZXRlcgogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKKyAgICBpZiBxdWlldCA8IDIgYW5kIGlzaW5zdGFuY2UoZnVsbG5hbWUsIG9zLlBhdGhMaWtlKToKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5mc3BhdGgoZnVsbG5hbWUpCiAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZnVsbG5hbWUpCiAgICAgaWYgZGRpciBpcyBub3QgTm9uZToKICAgICAgICAgZGZpbGUgPSBvcy5wYXRoLmpvaW4oZGRpciwgbmFtZSkKQEAgLTE0NCw3ICsxNDgsNyBAQAogICAgICAgICAgICAgICAgIG9rID0gcHlfY29tcGlsZS5jb21waWxlKGZ1bGxuYW1lLCBjZmlsZSwgZGZpbGUsIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9b3B0aW1pemUpCiAgICAgICAgICAgICBleGNlcHQgcHlfY29tcGlsZS5QeUNvbXBpbGVFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICAgICAgICAgICAgICBpZiBxdWlldCA+PSAyOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcwogICAgICAgICAgICAgICAgIGVsaWYgcXVpZXQ6CkBAIC0xNTcsNyArMTYxLDcgQEAKICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZGVjb2RlKHN5cy5zdGRvdXQuZW5jb2RpbmcpCiAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogICAgICAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgVW5pY29kZUVycm9yLCBPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgpAQCAtMTY3LDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgcHJpbnQoZS5fX2NsYXNzX18uX19uYW1lX18gKyAnOicsIGUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIG9rID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgIHJldHVybiBzdWNjZXNzCiAKIGRlZiBjb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9MSwgbWF4bGV2ZWxzPTAsIGZvcmNlPUZhbHNlLCBxdWlldD0wLApAQCAtMTgzLDcgKzE4Nyw3IEBACiAgICAgbGVnYWN5OiBhcyBmb3IgY29tcGlsZV9kaXIoKSAoZGVmYXVsdCBGYWxzZSkKICAgICBvcHRpbWl6ZTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgLTEpCiAgICAgIiIiCi0gICAgc3VjY2VzcyA9IDEKKyAgICBzdWNjZXNzID0gVHJ1ZQogICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CiAgICAgICAgIGlmIChub3QgZGlyIG9yIGRpciA9PSBvcy5jdXJkaXIpIGFuZCBza2lwX2N1cmRpcjoKICAgICAgICAgICAgIGlmIHF1aWV0IDwgMjoKZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKaW5kZXggOWMzYWVjOS4uMDNkMjc2YiAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKQEAgLTgxLDEyICs4MSwxMyBAQAogICAgICAgICBfYmFzZS5MT0dHRVIuY3JpdGljYWwoJ0V4Y2VwdGlvbiBpbiB3b3JrZXInLCBleGNfaW5mbz1UcnVlKQogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfd29ya2Vycz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSwgdGhyZWFkX25hbWVfcHJlZml4PScnKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBuZXcgVGhyZWFkUG9vbEV4ZWN1dG9yIGluc3RhbmNlLgogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBtYXhfd29ya2VyczogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRocmVhZHMgdGhhdCBjYW4gYmUgdXNlZCB0bwogICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGdpdmVuIGNhbGxzLgorICAgICAgICAgICAgdGhyZWFkX25hbWVfcHJlZml4OiBBbiBvcHRpb25hbCBuYW1lIHByZWZpeCB0byBnaXZlIG91ciB0aHJlYWRzLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbWF4X3dvcmtlcnMgaXMgTm9uZToKICAgICAgICAgICAgICMgVXNlIHRoaXMgbnVtYmVyIGJlY2F1c2UgVGhyZWFkUG9vbEV4ZWN1dG9yIGlzIG9mdGVuCkBAIC0xMDAsNiArMTAxLDcgQEAKICAgICAgICAgc2VsZi5fdGhyZWFkcyA9IHNldCgpCiAgICAgICAgIHNlbGYuX3NodXRkb3duID0gRmFsc2UKICAgICAgICAgc2VsZi5fc2h1dGRvd25fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fdGhyZWFkX25hbWVfcHJlZml4ID0gdGhyZWFkX25hbWVfcHJlZml4CiAKICAgICBkZWYgc3VibWl0KHNlbGYsIGZuLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CkBAIC0xMjEsOCArMTIzLDExIEBACiAgICAgICAgICAgICBxLnB1dChOb25lKQogICAgICAgICAjIFRPRE8oYnF1aW5sYW4pOiBTaG91bGQgYXZvaWQgY3JlYXRpbmcgbmV3IHRocmVhZHMgaWYgdGhlcmUgYXJlIG1vcmUKICAgICAgICAgIyBpZGxlIHRocmVhZHMgdGhhbiBpdGVtcyBpbiB0aGUgd29yayBxdWV1ZS4KLSAgICAgICAgaWYgbGVuKHNlbGYuX3RocmVhZHMpIDwgc2VsZi5fbWF4X3dvcmtlcnM6Ci0gICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3dvcmtlciwKKyAgICAgICAgbnVtX3RocmVhZHMgPSBsZW4oc2VsZi5fdGhyZWFkcykKKyAgICAgICAgaWYgbnVtX3RocmVhZHMgPCBzZWxmLl9tYXhfd29ya2VyczoKKyAgICAgICAgICAgIHRocmVhZF9uYW1lID0gJyVzXyVkJyAlIChzZWxmLl90aHJlYWRfbmFtZV9wcmVmaXggb3Igc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1fdGhyZWFkcykKKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKG5hbWU9dGhyZWFkX25hbWUsIHRhcmdldD1fd29ya2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0od2Vha3JlZi5yZWYoc2VsZiwgd2Vha3JlZl9jYiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93b3JrX3F1ZXVlKSkKICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2NvbnRleHRsaWIucHkgYi9MaWIvY29udGV4dGxpYi5weQppbmRleCBkNDRlZGQ2Li43ZDk0YTU3IDEwMDY0NAotLS0gYS9MaWIvY29udGV4dGxpYi5weQorKysgYi9MaWIvY29udGV4dGxpYi5weQpAQCAtMSwxMSArMSwzNCBAQAogIiIiVXRpbGl0aWVzIGZvciB3aXRoLXN0YXRlbWVudCBjb250ZXh0cy4gIFNlZSBQRVAgMzQzLiIiIgotCitpbXBvcnQgYWJjCiBpbXBvcnQgc3lzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCiAKLV9fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLAotICAgICAgICAgICAicmVkaXJlY3Rfc3Rkb3V0IiwgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCitfX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkFic3RyYWN0Q29udGV4dE1hbmFnZXIiLAorICAgICAgICAgICAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siLCAicmVkaXJlY3Rfc3Rkb3V0IiwKKyAgICAgICAgICAgInJlZGlyZWN0X3N0ZGVyciIsICJzdXBwcmVzcyJdCisKKworY2xhc3MgQWJzdHJhY3RDb250ZXh0TWFuYWdlcihhYmMuQUJDKToKKworICAgICIiIkFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbnRleHQgbWFuYWdlcnMuIiIiCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYHNlbGZgIHVwb24gZW50ZXJpbmcgdGhlIHJ1bnRpbWUgY29udGV4dC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgIiIiUmFpc2UgYW55IGV4Y2VwdGlvbiB0cmlnZ2VyZWQgd2l0aGluIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQWJzdHJhY3RDb250ZXh0TWFuYWdlcjoKKyAgICAgICAgICAgIGlmIChhbnkoIl9fZW50ZXJfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAorICAgICAgICAgICAgICAgIGFueSgiX19leGl0X18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIAogY2xhc3MgQ29udGV4dERlY29yYXRvcihvYmplY3QpOgpAQCAtMzEsNyArNTQsNyBAQAogICAgICAgICByZXR1cm4gaW5uZXIKIAogCi1jbGFzcyBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoQ29udGV4dERlY29yYXRvcik6CitjbGFzcyBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIoQ29udGV4dERlY29yYXRvciwgQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAgIiIiSGVscGVyIGZvciBAY29udGV4dG1hbmFnZXIgZGVjb3JhdG9yLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIGFyZ3MsIGt3ZHMpOgpAQCAtMTM3LDcgKzE2MCw3IEBACiAgICAgcmV0dXJuIGhlbHBlcgogCiAKLWNsYXNzIGNsb3Npbmcob2JqZWN0KToKK2NsYXNzIGNsb3NpbmcoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAgICAgIiIiQ29udGV4dCB0byBhdXRvbWF0aWNhbGx5IGNsb3NlIHNvbWV0aGluZyBhdCB0aGUgZW5kIG9mIGEgYmxvY2suCiAKICAgICBDb2RlIGxpa2UgdGhpczoKQEAgLTE2Miw3ICsxODUsNyBAQAogICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKIAogCi1jbGFzcyBfUmVkaXJlY3RTdHJlYW06CitjbGFzcyBfUmVkaXJlY3RTdHJlYW0oQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICBfc3RyZWFtID0gTm9uZQogCkBAIC0yMDIsNyArMjI1LDcgQEAKICAgICBfc3RyZWFtID0gInN0ZGVyciIKIAogCi1jbGFzcyBzdXBwcmVzczoKK2NsYXNzIHN1cHByZXNzKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBzdXBwcmVzcyBzcGVjaWZpZWQgZXhjZXB0aW9ucwogCiAgICAgQWZ0ZXIgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBleGVjdXRpb24gcHJvY2VlZHMgd2l0aCB0aGUgbmV4dApAQCAtMjMzLDcgKzI1Niw3IEBACiAKIAogIyBJbnNwaXJlZCBieSBkaXNjdXNzaW9ucyBvbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTM1ODUKLWNsYXNzIEV4aXRTdGFjayhvYmplY3QpOgorY2xhc3MgRXhpdFN0YWNrKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgZHluYW1pYyBtYW5hZ2VtZW50IG9mIGEgc3RhY2sgb2YgZXhpdCBjYWxsYmFja3MKIAogICAgIEZvciBleGFtcGxlOgpAQCAtMzEyLDkgKzMzNSw2IEBACiAgICAgICAgICIiIkltbWVkaWF0ZWx5IHVud2luZCB0aGUgY29udGV4dCBzdGFjayIiIgogICAgICAgICBzZWxmLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CiAgICAgICAgIHJlY2VpdmVkX2V4YyA9IGV4Y19kZXRhaWxzWzBdIGlzIG5vdCBOb25lCiAKZGlmZiAtLWdpdCBhL0xpYi9jb3B5LnB5IGIvTGliL2NvcHkucHkKaW5kZXggOTcyYjk0YS4uZjg2MDQwYSAxMDA2NDQKLS0tIGEvTGliL2NvcHkucHkKKysrIGIvTGliL2NvcHkucHkKQEAgLTUxLDcgKzUxLDYgQEAKIGltcG9ydCB0eXBlcwogaW1wb3J0IHdlYWtyZWYKIGZyb20gY29weXJlZyBpbXBvcnQgZGlzcGF0Y2hfdGFibGUKLWltcG9ydCBidWlsdGlucwogCiBjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTEwMiwzNyArMTAxLDMzIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKCJ1bihzaGFsbG93KWNvcHlhYmxlIG9iamVjdCBvZiB0eXBlICVzIiAlIGNscykKIAotICAgIHJldHVybiBfcmVjb25zdHJ1Y3QoeCwgcnYsIDApCisgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKKyAgICAgICAgcmV0dXJuIHgKKyAgICByZXR1cm4gX3JlY29uc3RydWN0KHgsIE5vbmUsICpydikKIAogCiBfY29weV9kaXNwYXRjaCA9IGQgPSB7fQogCiBkZWYgX2NvcHlfaW1tdXRhYmxlKHgpOgogICAgIHJldHVybiB4Ci1mb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgc3RyLCB0dXBsZSwKLSAgICAgICAgICBieXRlcywgZnJvemVuc2V0LCB0eXBlLCByYW5nZSwKLSAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLCB0eXBlKEVsbGlwc2lzKSwKK2ZvciB0IGluICh0eXBlKE5vbmUpLCBpbnQsIGZsb2F0LCBib29sLCBjb21wbGV4LCBzdHIsIHR1cGxlLAorICAgICAgICAgIGJ5dGVzLCBmcm96ZW5zZXQsIHR5cGUsIHJhbmdlLCBzbGljZSwKKyAgICAgICAgICB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlLCB0eXBlKEVsbGlwc2lzKSwgdHlwZShOb3RJbXBsZW1lbnRlZCksCiAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlLCB3ZWFrcmVmLnJlZik6CiAgICAgZFt0XSA9IF9jb3B5X2ltbXV0YWJsZQogdCA9IGdldGF0dHIodHlwZXMsICJDb2RlVHlwZSIsIE5vbmUpCiBpZiB0IGlzIG5vdCBOb25lOgogICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKLWZvciBuYW1lIGluICgiY29tcGxleCIsICJ1bmljb2RlIik6Ci0gICAgdCA9IGdldGF0dHIoYnVpbHRpbnMsIG5hbWUsIE5vbmUpCi0gICAgaWYgdCBpcyBub3QgTm9uZToKLSAgICAgICAgZFt0XSA9IF9jb3B5X2ltbXV0YWJsZQogCi1kZWYgX2NvcHlfd2l0aF9jb25zdHJ1Y3Rvcih4KToKLSAgICByZXR1cm4gdHlwZSh4KSh4KQotZm9yIHQgaW4gKGxpc3QsIGRpY3QsIHNldCk6Ci0gICAgZFt0XSA9IF9jb3B5X3dpdGhfY29uc3RydWN0b3IKK2RbbGlzdF0gPSBsaXN0LmNvcHkKK2RbZGljdF0gPSBkaWN0LmNvcHkKK2Rbc2V0XSA9IHNldC5jb3B5CitkW2J5dGVhcnJheV0gPSBieXRlYXJyYXkuY29weQogCi1kZWYgX2NvcHlfd2l0aF9jb3B5X21ldGhvZCh4KToKLSAgICByZXR1cm4geC5jb3B5KCkKIGlmIFB5U3RyaW5nTWFwIGlzIG5vdCBOb25lOgotICAgIGRbUHlTdHJpbmdNYXBdID0gX2NvcHlfd2l0aF9jb3B5X21ldGhvZAorICAgIGRbUHlTdHJpbmdNYXBdID0gUHlTdHJpbmdNYXAuY29weQogCi1kZWwgZAorZGVsIGQsIHQKIAogZGVmIGRlZXBjb3B5KHgsIG1lbW89Tm9uZSwgX25pbD1bXSk6CiAgICAgIiIiRGVlcCBjb3B5IG9wZXJhdGlvbiBvbiBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuCkBAIC0xNzksNyArMTc0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW4oZGVlcCljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCi0gICAgICAgICAgICAgICAgeSA9IF9yZWNvbnN0cnVjdCh4LCBydiwgMSwgbWVtbykKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJ2LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICB5ID0geAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgbWVtbywgKnJ2KQogCiAgICAgIyBJZiBpcyBpdHMgb3duIGNvcHksIGRvbid0IG1lbW9pemUuCiAgICAgaWYgeSBpcyBub3QgeDoKQEAgLTE5MywxMyArMTkxLDExIEBACiAgICAgcmV0dXJuIHgKIGRbdHlwZShOb25lKV0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3R5cGUoRWxsaXBzaXMpXSA9IF9kZWVwY29weV9hdG9taWMKK2RbdHlwZShOb3RJbXBsZW1lbnRlZCldID0gX2RlZXBjb3B5X2F0b21pYwogZFtpbnRdID0gX2RlZXBjb3B5X2F0b21pYwogZFtmbG9hdF0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW2Jvb2xdID0gX2RlZXBjb3B5X2F0b21pYwotdHJ5OgotICAgIGRbY29tcGxleF0gPSBfZGVlcGNvcHlfYXRvbWljCi1leGNlcHQgTmFtZUVycm9yOgotICAgIHBhc3MKK2RbY29tcGxleF0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW2J5dGVzXSA9IF9kZWVwY29weV9hdG9taWMKIGRbc3RyXSA9IF9kZWVwY29weV9hdG9taWMKIHRyeToKQEAgLTIxMSwxNSArMjA3LDE2IEBACiBkW3R5cGVzLkZ1bmN0aW9uVHlwZV0gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3dlYWtyZWYucmVmXSA9IF9kZWVwY29weV9hdG9taWMKIAotZGVmIF9kZWVwY29weV9saXN0KHgsIG1lbW8pOgorZGVmIF9kZWVwY29weV9saXN0KHgsIG1lbW8sIGRlZXBjb3B5PWRlZXBjb3B5KToKICAgICB5ID0gW10KICAgICBtZW1vW2lkKHgpXSA9IHkKKyAgICBhcHBlbmQgPSB5LmFwcGVuZAogICAgIGZvciBhIGluIHg6Ci0gICAgICAgIHkuYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQorICAgICAgICBhcHBlbmQoZGVlcGNvcHkoYSwgbWVtbykpCiAgICAgcmV0dXJuIHkKIGRbbGlzdF0gPSBfZGVlcGNvcHlfbGlzdAogCi1kZWYgX2RlZXBjb3B5X3R1cGxlKHgsIG1lbW8pOgorZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IFtkZWVwY29weShhLCBtZW1vKSBmb3IgYSBpbiB4XQogICAgICMgV2UncmUgbm90IGdvaW5nIHRvIHB1dCB0aGUgdHVwbGUgaW4gdGhlIG1lbW8sIGJ1dCBpdCdzIHN0aWxsIGltcG9ydGFudCB3ZQogICAgICMgY2hlY2sgZm9yIGl0LCBpbiBjYXNlIHRoZSB0dXBsZSBjb250YWlucyByZWN1cnNpdmUgbXV0YWJsZSBzdHJ1Y3R1cmVzLgpAQCAtMjM2LDcgKzIzMyw3IEBACiAgICAgcmV0dXJuIHkKIGRbdHVwbGVdID0gX2RlZXBjb3B5X3R1cGxlCiAKLWRlZiBfZGVlcGNvcHlfZGljdCh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfZGljdCh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IHt9CiAgICAgbWVtb1tpZCh4KV0gPSB5CiAgICAgZm9yIGtleSwgdmFsdWUgaW4geC5pdGVtcygpOgpAQCAtMjQ4LDcgKzI0NSw5IEBACiAKIGRlZiBfZGVlcGNvcHlfbWV0aG9kKHgsIG1lbW8pOiAjIENvcHkgaW5zdGFuY2UgbWV0aG9kcwogICAgIHJldHVybiB0eXBlKHgpKHguX19mdW5jX18sIGRlZXBjb3B5KHguX19zZWxmX18sIG1lbW8pKQotX2RlZXBjb3B5X2Rpc3BhdGNoW3R5cGVzLk1ldGhvZFR5cGVdID0gX2RlZXBjb3B5X21ldGhvZAorZFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKKworZGVsIGQKIAogZGVmIF9rZWVwX2FsaXZlKHgsIG1lbW8pOgogICAgICIiIktlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgeCBpbiB0aGUgbWVtby4KQEAgLTI2NiwzMSArMjY1LDE1IEBACiAgICAgICAgICMgYWhhLCB0aGlzIGlzIHRoZSBmaXJzdCBvbmUgOi0pCiAgICAgICAgIG1lbW9baWQobWVtbyldPVt4XQogCi1kZWYgX3JlY29uc3RydWN0KHgsIGluZm8sIGRlZXAsIG1lbW89Tm9uZSk6Ci0gICAgaWYgaXNpbnN0YW5jZShpbmZvLCBzdHIpOgotICAgICAgICByZXR1cm4geAotICAgIGFzc2VydCBpc2luc3RhbmNlKGluZm8sIHR1cGxlKQotICAgIGlmIG1lbW8gaXMgTm9uZToKLSAgICAgICAgbWVtbyA9IHt9Ci0gICAgbiA9IGxlbihpbmZvKQotICAgIGFzc2VydCBuIGluICgyLCAzLCA0LCA1KQotICAgIGNhbGxhYmxlLCBhcmdzID0gaW5mb1s6Ml0KLSAgICBpZiBuID4gMjoKLSAgICAgICAgc3RhdGUgPSBpbmZvWzJdCi0gICAgZWxzZToKLSAgICAgICAgc3RhdGUgPSBOb25lCi0gICAgaWYgbiA+IDM6Ci0gICAgICAgIGxpc3RpdGVyID0gaW5mb1szXQotICAgIGVsc2U6Ci0gICAgICAgIGxpc3RpdGVyID0gTm9uZQotICAgIGlmIG4gPiA0OgotICAgICAgICBkaWN0aXRlciA9IGluZm9bNF0KLSAgICBlbHNlOgotICAgICAgICBkaWN0aXRlciA9IE5vbmUKK2RlZiBfcmVjb25zdHJ1Y3QoeCwgbWVtbywgZnVuYywgYXJncywKKyAgICAgICAgICAgICAgICAgc3RhdGU9Tm9uZSwgbGlzdGl0ZXI9Tm9uZSwgZGljdGl0ZXI9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZGVlcGNvcHk9ZGVlcGNvcHkpOgorICAgIGRlZXAgPSBtZW1vIGlzIG5vdCBOb25lCisgICAgaWYgZGVlcCBhbmQgYXJnczoKKyAgICAgICAgYXJncyA9IChkZWVwY29weShhcmcsIG1lbW8pIGZvciBhcmcgaW4gYXJncykKKyAgICB5ID0gZnVuYygqYXJncykKICAgICBpZiBkZWVwOgotICAgICAgICBhcmdzID0gZGVlcGNvcHkoYXJncywgbWVtbykKLSAgICB5ID0gY2FsbGFibGUoKmFyZ3MpCi0gICAgbWVtb1tpZCh4KV0gPSB5CisgICAgICAgIG1lbW9baWQoeCldID0geQogCiAgICAgaWYgc3RhdGUgaXMgbm90IE5vbmU6CiAgICAgICAgIGlmIGRlZXA6CkBAIC0zMDksMjIgKzI5MiwyMiBAQAogICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHksIGtleSwgdmFsdWUpCiAKICAgICBpZiBsaXN0aXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6Ci0gICAgICAgICAgICBpZiBkZWVwOgorICAgICAgICBpZiBkZWVwOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CiAgICAgICAgICAgICAgICAgaXRlbSA9IGRlZXBjb3B5KGl0ZW0sIG1lbW8pCi0gICAgICAgICAgICB5LmFwcGVuZChpdGVtKQorICAgICAgICAgICAgICAgIHkuYXBwZW5kKGl0ZW0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgaXRlbSBpbiBsaXN0aXRlcjoKKyAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQogICAgIGlmIGRpY3RpdGVyIGlzIG5vdCBOb25lOgotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKLSAgICAgICAgICAgIGlmIGRlZXA6CisgICAgICAgIGlmIGRlZXA6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKICAgICAgICAgICAgICAgICBrZXkgPSBkZWVwY29weShrZXksIG1lbW8pCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBkZWVwY29weSh2YWx1ZSwgbWVtbykKLSAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCisgICAgICAgICAgICAgICAgeVtrZXldID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRpY3RpdGVyOgorICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCiAgICAgcmV0dXJuIHkKIAotZGVsIGQKLQotZGVsIHR5cGVzCi0KLSMgSGVscGVyIGZvciBpbnN0YW5jZSBjcmVhdGlvbiB3aXRob3V0IGNhbGxpbmcgX19pbml0X18KLWNsYXNzIF9FbXB0eUNsYXNzOgotICAgIHBhc3MKK2RlbCB0eXBlcywgd2Vha3JlZiwgUHlTdHJpbmdNYXAKZGlmZiAtLWdpdCBhL0xpYi9jcnlwdC5weSBiL0xpYi9jcnlwdC5weQppbmRleCA0OWFiOTZlLi5mYmM1ZjRjIDEwMDY0NAotLS0gYS9MaWIvY3J5cHQucHkKKysrIGIvTGliL2NyeXB0LnB5CkBAIC01NCw5ICs1NCw4IEBACiBNRVRIT0RfU0hBNTEyID0gX01ldGhvZCgnU0hBNTEyJywgJzYnLCAxNiwgMTA2KQogCiBtZXRob2RzID0gW10KLWZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1KToKK2ZvciBfbWV0aG9kIGluIChNRVRIT0RfU0hBNTEyLCBNRVRIT0RfU0hBMjU2LCBNRVRIT0RfTUQ1LCBNRVRIT0RfQ1JZUFQpOgogICAgIF9yZXN1bHQgPSBjcnlwdCgnJywgX21ldGhvZCkKICAgICBpZiBfcmVzdWx0IGFuZCBsZW4oX3Jlc3VsdCkgPT0gX21ldGhvZC50b3RhbF9zaXplOgogICAgICAgICBtZXRob2RzLmFwcGVuZChfbWV0aG9kKQotbWV0aG9kcy5hcHBlbmQoTUVUSE9EX0NSWVBUKQogZGVsIF9yZXN1bHQsIF9tZXRob2QKZGlmZiAtLWdpdCBhL0xpYi9jc3YucHkgYi9MaWIvY3N2LnB5CmluZGV4IGNhNDBlNWUuLjAzNDllMGIgMTAwNjQ0Ci0tLSBhL0xpYi9jc3YucHkKKysrIGIvTGliL2Nzdi5weQpAQCAtMTEsMTMgKzExLDE1IEBACiAgICAgICAgICAgICAgICAgIF9fZG9jX18KIGZyb20gX2NzdiBpbXBvcnQgRGlhbGVjdCBhcyBfRGlhbGVjdAogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotX19hbGxfXyA9IFsgIlFVT1RFX01JTklNQUwiLCAiUVVPVEVfQUxMIiwgIlFVT1RFX05PTk5VTUVSSUMiLCAiUVVPVEVfTk9ORSIsCi0gICAgICAgICAgICAiRXJyb3IiLCAiRGlhbGVjdCIsICJfX2RvY19fIiwgImV4Y2VsIiwgImV4Y2VsX3RhYiIsCi0gICAgICAgICAgICAiZmllbGRfc2l6ZV9saW1pdCIsICJyZWFkZXIiLCAid3JpdGVyIiwKLSAgICAgICAgICAgICJyZWdpc3Rlcl9kaWFsZWN0IiwgImdldF9kaWFsZWN0IiwgImxpc3RfZGlhbGVjdHMiLCAiU25pZmZlciIsCi0gICAgICAgICAgICAidW5yZWdpc3Rlcl9kaWFsZWN0IiwgIl9fdmVyc2lvbl9fIiwgIkRpY3RSZWFkZXIiLCAiRGljdFdyaXRlciIgXQorX19hbGxfXyA9IFsiUVVPVEVfTUlOSU1BTCIsICJRVU9URV9BTEwiLCAiUVVPVEVfTk9OTlVNRVJJQyIsICJRVU9URV9OT05FIiwKKyAgICAgICAgICAgIkVycm9yIiwgIkRpYWxlY3QiLCAiX19kb2NfXyIsICJleGNlbCIsICJleGNlbF90YWIiLAorICAgICAgICAgICAiZmllbGRfc2l6ZV9saW1pdCIsICJyZWFkZXIiLCAid3JpdGVyIiwKKyAgICAgICAgICAgInJlZ2lzdGVyX2RpYWxlY3QiLCAiZ2V0X2RpYWxlY3QiLCAibGlzdF9kaWFsZWN0cyIsICJTbmlmZmVyIiwKKyAgICAgICAgICAgInVucmVnaXN0ZXJfZGlhbGVjdCIsICJfX3ZlcnNpb25fXyIsICJEaWN0UmVhZGVyIiwgIkRpY3RXcml0ZXIiLAorICAgICAgICAgICAidW5peF9kaWFsZWN0Il0KIAogY2xhc3MgRGlhbGVjdDoKICAgICAiIiJEZXNjcmliZSBhIENTViBkaWFsZWN0LgpAQCAtMTE1LDcgKzExNyw3IEBACiAgICAgICAgICMgdmFsdWVzCiAgICAgICAgIHdoaWxlIHJvdyA9PSBbXToKICAgICAgICAgICAgIHJvdyA9IG5leHQoc2VsZi5yZWFkZXIpCi0gICAgICAgIGQgPSBkaWN0KHppcChzZWxmLmZpZWxkbmFtZXMsIHJvdykpCisgICAgICAgIGQgPSBPcmRlcmVkRGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQogICAgICAgICBsZiA9IGxlbihzZWxmLmZpZWxkbmFtZXMpCiAgICAgICAgIGxyID0gbGVuKHJvdykKICAgICAgICAgaWYgbGYgPCBscjoKQEAgLTE0Myw3ICsxNDUsNyBAQAogCiAgICAgZGVmIF9kaWN0X3RvX2xpc3Qoc2VsZiwgcm93ZGljdCk6CiAgICAgICAgIGlmIHNlbGYuZXh0cmFzYWN0aW9uID09ICJyYWlzZSI6Ci0gICAgICAgICAgICB3cm9uZ19maWVsZHMgPSBbayBmb3IgayBpbiByb3dkaWN0IGlmIGsgbm90IGluIHNlbGYuZmllbGRuYW1lc10KKyAgICAgICAgICAgIHdyb25nX2ZpZWxkcyA9IHJvd2RpY3Qua2V5cygpIC0gc2VsZi5maWVsZG5hbWVzCiAgICAgICAgICAgICBpZiB3cm9uZ19maWVsZHM6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGljdCBjb250YWlucyBmaWVsZHMgbm90IGluIGZpZWxkbmFtZXM6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgIi5qb2luKFtyZXByKHgpIGZvciB4IGluIHdyb25nX2ZpZWxkc10pKQpAQCAtMjEzLDEwICsyMTUsMTAgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgbWF0Y2hlcyA9IFtdCi0gICAgICAgIGZvciByZXN0ciBpbiAoJyg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UD1kZWxpbSknLCAjICwiLio/IiwKLSAgICAgICAgICAgICAgICAgICAgICAnKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPyknLCAgICMgICIuKj8iLAotICAgICAgICAgICAgICAgICAgICAgICcoP1A8ZGVsaW0+PlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknLCAgIyAsIi4qPyIKLSAgICAgICAgICAgICAgICAgICAgICAnKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICIuKj8iIChubyBkZWxpbSwgbm8gc3BhY2UpCisgICAgICAgIGZvciByZXN0ciBpbiAocicoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A9ZGVsaW0pJywgIyAsIi4qPyIsCisgICAgICAgICAgICAgICAgICAgICAgcicoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KScsICAgIyAgIi4qPyIsCisgICAgICAgICAgICAgICAgICAgICAgcicoP1A8ZGVsaW0+PlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknLCAgIyAsIi4qPyIKKyAgICAgICAgICAgICAgICAgICAgICByJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAiLio/IiAobm8gZGVsaW0sIG5vIHNwYWNlKQogICAgICAgICAgICAgcmVnZXhwID0gcmUuY29tcGlsZShyZXN0ciwgcmUuRE9UQUxMIHwgcmUuTVVMVElMSU5FKQogICAgICAgICAgICAgbWF0Y2hlcyA9IHJlZ2V4cC5maW5kYWxsKGRhdGEpCiAgICAgICAgICAgICBpZiBtYXRjaGVzOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggMGQ4NjA3OC4uMWM5ZDNhNSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0xNiw3ICsxNiw3IEBACiBpZiBfX3ZlcnNpb25fXyAhPSBfY3R5cGVzX3ZlcnNpb246CiAgICAgcmFpc2UgRXhjZXB0aW9uKCJWZXJzaW9uIG51bWJlciBtaXNtYXRjaCIsIF9fdmVyc2lvbl9fLCBfY3R5cGVzX3ZlcnNpb24pCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBGb3JtYXRFcnJvcgogCiBERUZBVUxUX01PREUgPSBSVExEX0xPQ0FMCkBAIC0xMDMsMTIgKzEwMyw5IEBACiAgICAgICAgIF9jX2Z1bmN0eXBlX2NhY2hlWyhyZXN0eXBlLCBhcmd0eXBlcywgZmxhZ3MpXSA9IENGdW5jdGlvblR5cGUKICAgICAgICAgcmV0dXJuIENGdW5jdGlvblR5cGUKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IExvYWRMaWJyYXJ5IGFzIF9kbG9wZW4KICAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IEZVTkNGTEFHX1NURENBTEwgYXMgX0ZVTkNGTEFHX1NURENBTEwKLSAgICBpZiBfb3MubmFtZSA9PSAiY2UiOgotICAgICAgICAjICdjZScgZG9lc24ndCBoYXZlIHRoZSBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlvbgotICAgICAgICBfRlVOQ0ZMQUdfU1REQ0FMTCA9IF9GVU5DRkxBR19DREVDTAogCiAgICAgX3dpbl9mdW5jdHlwZV9jYWNoZSA9IHt9CiAgICAgZGVmIFdJTkZVTkNUWVBFKHJlc3R5cGUsICphcmd0eXBlcywgKiprdyk6CkBAIC0yNjIsNyArMjU5LDcgQEAKIGRlZiBfcmVzZXRfY2FjaGUoKToKICAgICBfcG9pbnRlcl90eXBlX2NhY2hlLmNsZWFyKCkKICAgICBfY19mdW5jdHlwZV9jYWNoZS5jbGVhcigpCi0gICAgaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgorICAgIGlmIF9vcy5uYW1lID09ICJudCI6CiAgICAgICAgIF93aW5fZnVuY3R5cGVfY2FjaGUuY2xlYXIoKQogICAgICMgX1NpbXBsZUNEYXRhLmNfd2NoYXJfcF9mcm9tX3BhcmFtCiAgICAgUE9JTlRFUihjX3djaGFyKS5mcm9tX3BhcmFtID0gY193Y2hhcl9wLmZyb21fcGFyYW0KQEAgLTM3NCw3ICszNzEsNyBAQAogICAgICIiIgogICAgIF9mdW5jX2ZsYWdzXyA9IF9GVU5DRkxBR19DREVDTCB8IF9GVU5DRkxBR19QWVRIT05BUEkKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKIAogICAgIGNsYXNzIFdpbkRMTChDRExMKToKICAgICAgICAgIiIiVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgZGxsIGV4cG9ydGluZyBmdW5jdGlvbnMgdXNpbmcgdGhlCkBAIC00MjcsNyArNDI0LDcgQEAKIGNkbGwgPSBMaWJyYXJ5TG9hZGVyKENETEwpCiBweWRsbCA9IExpYnJhcnlMb2FkZXIoUHlETEwpCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgcHl0aG9uYXBpID0gUHlETEwoInB5dGhvbiBkbGwiLCBOb25lLCBfc3lzLmRsbGhhbmRsZSkKIGVsaWYgX3N5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKICAgICBweXRob25hcGkgPSBQeURMTCgibGlicHl0aG9uJWQuJWQuZGxsIiAlIF9zeXMudmVyc2lvbl9pbmZvWzoyXSkKQEAgLTQzNSw3ICs0MzIsNyBAQAogICAgIHB5dGhvbmFwaSA9IFB5RExMKE5vbmUpCiAKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICB3aW5kbGwgPSBMaWJyYXJ5TG9hZGVyKFdpbkRMTCkKICAgICBvbGVkbGwgPSBMaWJyYXJ5TG9hZGVyKE9sZURMTCkKIApAQCAtNTAzLDcgKzUwMCw3IEBACiAgICAgICAgIHJldHVybiBfd3N0cmluZ19hdChwdHIsIHNpemUpCiAKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOiAjIENPTSBzdHVmZgoraWYgX29zLm5hbWUgPT0gIm50IjogIyBDT00gc3R1ZmYKICAgICBkZWYgRGxsR2V0Q2xhc3NPYmplY3QocmNsc2lkLCByaWlkLCBwcHYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjY29tID0gX19pbXBvcnRfXygiY29tdHlwZXMuc2VydmVyLmlucHJvY3NlcnZlciIsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnKiddKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5CmluZGV4IGIzOWQ4MmMuLmM3MWQ3MWQgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogCi1pbXBvcnQgY3R5cGVzCiBpbXBvcnQgX2N0eXBlc190ZXN0CiAKIGNsYXNzIEJJVFMoU3RydWN0dXJlKToKQEAgLTE5Nyw3ICsxOTYsNyBAQAogICAgICAgICBjbGFzcyBYKFN0cnVjdHVyZSk6CiAgICAgICAgICAgICBfZmllbGRzXyA9IFsoImEiLCBjX2J5dGUsIDQpLAogICAgICAgICAgICAgICAgICAgICAgICAgKCJiIiwgY19pbnQsIDQpXQotICAgICAgICBpZiBvcy5uYW1lIGluICgibnQiLCAiY2UiKToKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkqMikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpKQpAQCAtMjI1LDcgKzIyNCw3IEBACiAgICAgICAgICMgTVNWQyBkb2VzIE5PVCBjb21iaW5lIGNfc2hvcnQgYW5kIGNfaW50IGludG8gb25lIGZpZWxkLCBHQ0MKICAgICAgICAgIyBkb2VzICh1bmxlc3MgR0NDIGlzIHJ1biB3aXRoICctbW1zLWJpdGZpZWxkcycgd2hpY2gKICAgICAgICAgIyBwcm9kdWNlcyBjb2RlIGNvbXBhdGlibGUgd2l0aCBNU1ZDKS4KLSAgICAgICAgaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpICogNCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpICogMikKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5CmluZGV4IDk0YjBiODkuLmI5OWZkY2IgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weQpAQCAtNjksNSArNjksNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmxleGlzdHModGVzdC5zdXBwb3J0LlRFU1RGTikpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IG9ubHkgdmFsaWQgZm9yIExpbnV4JykKK2NsYXNzIExpYlBhdGhGaW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmluZF9vbl9saWJwYXRoKHNlbGYpOgorICAgICAgICBpbXBvcnQgc3VicHJvY2VzcworICAgICAgICBpbXBvcnQgdGVtcGZpbGUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2djYycsICctLXZlcnNpb24nXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgICAgICBvdXQsIF8gPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnZ2NjLCBuZWVkZWQgZm9yIHRlc3QsIG5vdCBhdmFpbGFibGUnKQorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIGQ6CisgICAgICAgICAgICAjIGNyZWF0ZSBhbiBlbXB0eSB0ZW1wb3JhcnkgZmlsZQorICAgICAgICAgICAgc3JjbmFtZSA9IG9zLnBhdGguam9pbihkLCAnZHVtbXkuYycpCisgICAgICAgICAgICBsaWJuYW1lID0gJ3B5X2N0eXBlc190ZXN0X2R1bW15JworICAgICAgICAgICAgZHN0bmFtZSA9IG9zLnBhdGguam9pbihkLCAnbGliJXMuc28nICUgbGlibmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihzcmNuYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHNyY25hbWUpKQorICAgICAgICAgICAgIyBjb21waWxlIHRoZSBmaWxlIHRvIGEgc2hhcmVkIGxpYnJhcnkKKyAgICAgICAgICAgIGNtZCA9IFsnZ2NjJywgJy1vJywgZHN0bmFtZSwgJy0tc2hhcmVkJywKKyAgICAgICAgICAgICAgICAgICAnLVdsLC1zb25hbWUsbGliJXMuc28nICUgbGlibmFtZSwgc3JjbmFtZV0KKyAgICAgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkc3RuYW1lKSkKKyAgICAgICAgICAgICMgbm93IGNoZWNrIHRoYXQgdGhlIC5zbyBjYW4ndCBiZSBmb3VuZCAoc2luY2Ugbm90IGluCisgICAgICAgICAgICAjIExEX0xJQlJBUllfUEFUSCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbmRfbGlicmFyeShsaWJuYW1lKSkKKyAgICAgICAgICAgICMgbm93IGFkZCB0aGUgbG9jYXRpb24gdG8gTERfTElCUkFSWV9QQVRICisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgICAgIEtFWSA9ICdMRF9MSUJSQVJZX1BBVEgnCisgICAgICAgICAgICAgICAgaWYgS0VZIG5vdCBpbiBlbnY6CisgICAgICAgICAgICAgICAgICAgIHYgPSBkCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdiA9ICclczolcycgJSAoZW52W0tFWV0sIGQpCisgICAgICAgICAgICAgICAgZW52LnNldChLRVksIHYpCisgICAgICAgICAgICAgICAgIyBub3cgY2hlY2sgdGhhdCB0aGUgLnNvIGNhbiBiZSBmb3VuZCAoc2luY2UgaW4KKyAgICAgICAgICAgICAgICAjIExEX0xJQlJBUllfUEFUSCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRfbGlicmFyeShsaWJuYW1lKSwgJ2xpYiVzLnNvJyAlIGxpYm5hbWUpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CmluZGV4IGZmMjVjOGYuLmYzNDczNGIgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQpAQCAtMSw0ICsxLDQgQEAKLWltcG9ydCBvcywgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIAogdHJ5OgpAQCAtMzksNyArMzksNyBAQAogICAgICAgICAjIHBvc3NpYmxlLCBhcyBpbiBDLCB0byBjYWxsIGNkZWNsIGZ1bmN0aW9ucyB3aXRoIG1vcmUgcGFyYW1ldGVycy4KICAgICAgICAgI3NlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgMSwgMiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjKDEsIDIsIDMsIDQsIDUsIDYpLCAzKQotICAgICAgICBpZiBub3QgV0lORlVOQ1RZUEUgaXMgQ0ZVTkNUWVBFIGFuZCBvcy5uYW1lICE9ICJjZSI6CisgICAgICAgIGlmIG5vdCBXSU5GVU5DVFlQRSBpcyBDRlVOQ1RZUEU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHMsIDEsIDIsIDMpCiAKICAgICBkZWYgdGVzdF9zdHJ1Y3R1cmVzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKaW5kZXggMjg0NjhjMS4uNDU1NzFmMyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CkBAIC0xMSw4ICsxMSw2IEBACiAgICAgZ2xvYmFsIGxpYmNfbmFtZQogICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgbGliY19uYW1lID0gZmluZF9saWJyYXJ5KCJjIikKLSAgICBlbGlmIG9zLm5hbWUgPT0gImNlIjoKLSAgICAgICAgbGliY19uYW1lID0gImNvcmVkbGwiCiAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CiAgICAgICAgIGxpYmNfbmFtZSA9ICJjeWd3aW4xLmRsbCIKICAgICBlbHNlOgpAQCAtNDksOCArNDcsOCBAQAogICAgICAgICAgICAgICAgIGNkbGwuTG9hZExpYnJhcnkobGliKQogICAgICAgICAgICAgICAgIENETEwobGliKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSBpbiAoIm50IiwgImNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgc3BlY2lmaWMgdG8gV2luZG93cyAoTlQvQ0UpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgc3BlY2lmaWMgdG8gV2luZG93cycpCiAgICAgZGVmIHRlc3RfbG9hZF9saWJyYXJ5KHNlbGYpOgogICAgICAgICAjIENSVCBpcyBubyBsb25nZXIgZGlyZWN0bHkgbG9hZGFibGUuIFNlZSBpc3N1ZTIzNjA2IGZvciB0aGUKICAgICAgICAgIyBkaXNjdXNzaW9uIGFib3V0IGFsdGVybmF0aXZlIGFwcHJvYWNoZXMuCkBAIC02NCwxNCArNjIsOSBAQAogICAgICAgICAgICAgd2luZGxsWyJrZXJuZWwzMiJdLkdldE1vZHVsZUhhbmRsZVcKICAgICAgICAgICAgIHdpbmRsbC5Mb2FkTGlicmFyeSgia2VybmVsMzIiKS5HZXRNb2R1bGVIYW5kbGVXCiAgICAgICAgICAgICBXaW5ETEwoImtlcm5lbDMyIikuR2V0TW9kdWxlSGFuZGxlVwotICAgICAgICBlbGlmIG9zLm5hbWUgPT0gImNlIjoKLSAgICAgICAgICAgIHdpbmRsbC5jb3JlZGxsLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgICAgIHdpbmRsbFsiY29yZWRsbCJdLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgICAgIHdpbmRsbC5Mb2FkTGlicmFyeSgiY29yZWRsbCIpLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgICAgIFdpbkRMTCgiY29yZWRsbCIpLkdldE1vZHVsZUhhbmRsZVcKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgaW4gKCJudCIsICJjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MgKE5UL0NFKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MnKQogICAgIGRlZiB0ZXN0X2xvYWRfb3JkaW5hbF9mdW5jdGlvbnMoc2VsZik6CiAgICAgICAgIGltcG9ydCBfY3R5cGVzX3Rlc3QKICAgICAgICAgZGxsID0gV2luRExMKF9jdHlwZXNfdGVzdC5fX2ZpbGVfXykKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5CmluZGV4IGVmN2IyMGIuLjE5ZTNkYzEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weQpAQCAtNTQsNyArNTQsNyBAQAogCiAnJycKIAotaW1wb3J0IHVuaXR0ZXN0LCBkb2N0ZXN0LCBzeXMKK2ltcG9ydCB1bml0dGVzdCwgZG9jdGVzdAogCiBpbXBvcnQgY3R5cGVzLnRlc3QudGVzdF9vYmplY3RzCiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CmluZGV4IGU1NmJjY2YuLjM2M2Y1ODYgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQpAQCAtMSw0ICsxLDQgQEAKLWltcG9ydCB1bml0dGVzdCwgc3lzCitpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzLnRlc3QgaW1wb3J0IG5lZWRfc3ltYm9sCiAKIGNsYXNzIFNpbXBsZVR5cGVzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDksNyArNDksNyBAQAogCiAgICAgIyBYWFggUmVwbGFjZSBieSBjX2NoYXJfcCB0ZXN0cwogICAgIGRlZiB0ZXN0X2NzdHJpbmdzKHNlbGYpOgotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19jaGFyX3AsIGJ5cmVmCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX2NoYXJfcAogCiAgICAgICAgICMgY19jaGFyX3AuZnJvbV9wYXJhbSBvbiBhIFB5dGhvbiBTdHJpbmcgcGFja3MgdGhlIHN0cmluZwogICAgICAgICAjIGludG8gYSBjcGFyYW0gb2JqZWN0CkBAIC02OCw3ICs2OCw3IEBACiAKICAgICBAbmVlZF9zeW1ib2woJ2Nfd2NoYXJfcCcpCiAgICAgZGVmIHRlc3RfY3dfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGJ5cmVmLCBjX3djaGFyX3AKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfd2NoYXJfcAogCiAgICAgICAgIGNfd2NoYXJfcC5mcm9tX3BhcmFtKCIxMjMiKQogCkBAIC05OCw3ICs5OCw3IEBACiAgICAgZGVmIHRlc3RfYnlyZWZfcG9pbnRlcihzZWxmKToKICAgICAgICAgIyBUaGUgZnJvbV9wYXJhbSBjbGFzcyBtZXRob2Qgb2YgUE9JTlRFUih0eXApIGNsYXNzZXMgYWNjZXB0cyB3aGF0IGlzCiAgICAgICAgICMgcmV0dXJuZWQgYnkgYnlyZWYob2JqKSwgaXQgdHlwZShvYmopID09IHR5cAotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19zaG9ydCwgY191aW50LCBjX2ludCwgY19sb25nLCBwb2ludGVyLCBQT0lOVEVSLCBieXJlZgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19zaG9ydCwgY191aW50LCBjX2ludCwgY19sb25nLCBQT0lOVEVSLCBieXJlZgogICAgICAgICBMUElOVCA9IFBPSU5URVIoY19pbnQpCiAKICAgICAgICAgTFBJTlQuZnJvbV9wYXJhbShieXJlZihjX2ludCg0MikpKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKaW5kZXggMzJmODAyYy4uZDY4Mzk3ZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgotaW1wb3J0IHJlLCBzdHJ1Y3QsIHN5cworaW1wb3J0IHJlLCBzeXMKIAogaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKICAgICBUSElTX0VORElBTiA9ICI8IgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZXR1cm5mdW5jcHRycy5weQppbmRleCA5M2ViYTZiLi4xOTc0ZjQwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZXR1cm5mdW5jcHRycy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZXR1cm5mdW5jcHRycy5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKLWltcG9ydCBvcwogCiBpbXBvcnQgX2N0eXBlc190ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc2l6ZXMucHkKaW5kZXggZjliNWU5Ny4uNGNlYWNiYyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc2l6ZXMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc2l6ZXMucHkKQEAgLTIsNyArMiw2IEBACiAKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CmluZGV4IGM0YTY1MWMuLjhmNmZlNWYgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQpAQCAtMzI2LDExICszMjYsOCBAQAogCiAgICAgICAgIGNscywgbXNnID0gc2VsZi5nZXRfZXhjZXB0KFBlcnNvbiwgYiJTb21lb25lIiwgKGIiYSIsIGIiYiIsIGIiYyIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscywgUnVudGltZUVycm9yKQotICAgICAgICBpZiBpc3N1YmNsYXNzKEV4Y2VwdGlvbiwgb2JqZWN0KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihQaG9uZSkgPGNsYXNzICdUeXBlRXJyb3InPjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCAiKFBob25lKSBUeXBlRXJyb3I6IHRvbyBtYW55IGluaXRpYWxpemVycyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKFBob25lKSA8Y2xhc3MgJ1R5cGVFcnJvcic+OiB0b28gbWFueSBpbml0aWFsaXplcnMiKQogCiAgICAgZGVmIHRlc3RfaHVnZV9maWVsZF9uYW1lKHNlbGYpOgogICAgICAgICAjIGlzc3VlMTI4ODE6IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKaW5kZXggNWEzYTQ3Zi4uZTcxYjQ4MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQpAQCAtNzksOSArNzksOSBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoKGVudHJ5Lm5hbWUuZGVjb2RlKCJhc2NpaSIpLCBlbnRyeS5zaXplKSkKIAotICAgICAgICBleHBlY3RlZCA9IFsoIl9faGVsbG9fXyIsIDE2MSksCi0gICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXyIsIC0xNjEpLAotICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18uc3BhbSIsIDE2MSksCisgICAgICAgIGV4cGVjdGVkID0gWygiX19oZWxsb19fIiwgMTM5KSwKKyAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fIiwgLTEzOSksCisgICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXy5zcGFtIiwgMTM5KSwKICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1zLCBleHBlY3RlZCwgIlB5SW1wb3J0X0Zyb3plbk1vZHVsZXMgZXhhbXBsZSAiCiAgICAgICAgICAgICAiaW4gRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBtYXkgYmUgb3V0IG9mIGRhdGUiKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy91dGlsLnB5IGIvTGliL2N0eXBlcy91dGlsLnB5CmluZGV4IDc2ODRlYWIuLjMzOWFlOGEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdXRpbC5weQorKysgYi9MaWIvY3R5cGVzL3V0aWwucHkKQEAgLTY3LDE2ICs2Nyw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGZuYW1lCiAgICAgICAgIHJldHVybiBOb25lCiAKLWlmIG9zLm5hbWUgPT0gImNlIjoKLSAgICAjIHNlYXJjaCBwYXRoIGFjY29yZGluZyB0byBNU0ROOgotICAgICMgLSBhYnNvbHV0ZSBwYXRoIHNwZWNpZmllZCBieSBmaWxlbmFtZQotICAgICMgLSBUaGUgLmV4ZSBsYXVuY2ggZGlyZWN0b3J5Ci0gICAgIyAtIHRoZSBXaW5kb3dzIGRpcmVjdG9yeQotICAgICMgLSBST00gZGxsIGZpbGVzICh3aGVyZSBhcmUgdGhleT8pCi0gICAgIyAtIE9FTSBzcGVjaWZpZWQgc2VhcmNoIHBhdGg6IEhLTE1cTG9hZGVyXFN5c3RlbVBhdGgKLSAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgotICAgICAgICByZXR1cm4gbmFtZQotCiBpZiBvcy5uYW1lID09ICJwb3NpeCIgYW5kIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICBmcm9tIGN0eXBlcy5tYWNob2xpYi5keWxkIGltcG9ydCBkeWxkX2ZpbmQgYXMgX2R5bGRfZmluZAogICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6CkBAIC0yNzEsOCArMjYxLDggQEAKICAgICAgICAgICAgIGFiaV90eXBlID0gbWFjaF9tYXAuZ2V0KG1hY2hpbmUsICdsaWJjNicpCiAKICAgICAgICAgICAgICMgWFhYIGFzc3VtaW5nIEdMSUJDJ3MgbGRjb25maWcgKHdpdGggb3B0aW9uIC1wKQotICAgICAgICAgICAgcmVnZXggPSBvcy5mc2VuY29kZSgKLSAgICAgICAgICAgICAgICAnXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycgJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCisgICAgICAgICAgICByZWdleCA9IHInXHMrKGxpYiVzXC5bXlxzXSspXHMrXCglcycKKyAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUocmVnZXggJSAocmUuZXNjYXBlKG5hbWUpLCBhYmlfdHlwZSkpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKFsnL3NiaW4vbGRjb25maWcnLCAnLXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5ERVZOVUxMLApAQCAtMjg1LDggKzI3NSwzMiBAQAogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCisgICAgICAgIGRlZiBfZmluZExpYl9sZChuYW1lKToKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICM5OTk4IGZvciB3aHkgdGhpcyBpcyBuZWVkZWQKKyAgICAgICAgICAgIGV4cHIgPSByJ1teXChcKVxzXSpsaWIlc1wuW15cKFwpXHNdKicgJSByZS5lc2NhcGUobmFtZSkKKyAgICAgICAgICAgIGNtZCA9IFsnbGQnLCAnLXQnXQorICAgICAgICAgICAgbGlicGF0aCA9IG9zLmVudmlyb24uZ2V0KCdMRF9MSUJSQVJZX1BBVEgnKQorICAgICAgICAgICAgaWYgbGlicGF0aDoKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBsaWJwYXRoLnNwbGl0KCc6Jyk6CisgICAgICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctTCcsIGRdKQorICAgICAgICAgICAgY21kLmV4dGVuZChbJy1vJywgb3MuZGV2bnVsbCwgJy1sJXMnICUgbmFtZV0pCisgICAgICAgICAgICByZXN1bHQgPSBOb25lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgICAgICAgICAgICAgb3V0LCBfID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKGV4cHIsIG9zLmZzZGVjb2RlKG91dCkpCisgICAgICAgICAgICAgICAgaWYgcmVzOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXMuZ3JvdXAoMCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBwYXNzICAjIHJlc3VsdCB3aWxsIGJlIE5vbmUKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKwogICAgICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgotICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSkKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICM5OTk4CisgICAgICAgICAgICByZXR1cm4gX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSkgb3IgXAorICAgICAgICAgICAgICAgICAgIF9nZXRfc29uYW1lKF9maW5kTGliX2djYyhuYW1lKSBvciBfZmluZExpYl9sZChuYW1lKSkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyB0ZXN0IGNvZGUKZGlmZiAtLWdpdCBhL0xpYi9kYXRldGltZS5weSBiL0xpYi9kYXRldGltZS5weQppbmRleCBhMjE3OGM3Li4zNjM3NGFhIDEwMDY0NAotLS0gYS9MaWIvZGF0ZXRpbWUucHkKKysrIGIvTGliL2RhdGV0aW1lLnB5CkBAIC0xNTIsMTIgKzE1MiwyNiBAQAogICAgIGRudW0gPSBfZGF5c19iZWZvcmVfbW9udGgoeSwgbSkgKyBkCiAgICAgcmV0dXJuIF90aW1lLnN0cnVjdF90aW1lKCh5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZGF5LCBkbnVtLCBkc3RmbGFnKSkKIAotZGVmIF9mb3JtYXRfdGltZShoaCwgbW0sIHNzLCB1cyk6Ci0gICAgIyBTa2lwIHRyYWlsaW5nIG1pY3Jvc2Vjb25kcyB3aGVuIHVzPT0wLgotICAgIHJlc3VsdCA9ICIlMDJkOiUwMmQ6JTAyZCIgJSAoaGgsIG1tLCBzcykKLSAgICBpZiB1czoKLSAgICAgICAgcmVzdWx0ICs9ICIuJTA2ZCIgJSB1cwotICAgIHJldHVybiByZXN1bHQKK2RlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMsIHRpbWVzcGVjPSdhdXRvJyk6CisgICAgc3BlY3MgPSB7CisgICAgICAgICdob3Vycyc6ICd7OjAyZH0nLAorICAgICAgICAnbWludXRlcyc6ICd7OjAyZH06ezowMmR9JywKKyAgICAgICAgJ3NlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0nLAorICAgICAgICAnbWlsbGlzZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9Lns6MDNkfScsCisgICAgICAgICdtaWNyb3NlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0uezowNmR9JworICAgIH0KKworICAgIGlmIHRpbWVzcGVjID09ICdhdXRvJzoKKyAgICAgICAgIyBTa2lwIHRyYWlsaW5nIG1pY3Jvc2Vjb25kcyB3aGVuIHVzPT0wLgorICAgICAgICB0aW1lc3BlYyA9ICdtaWNyb3NlY29uZHMnIGlmIHVzIGVsc2UgJ3NlY29uZHMnCisgICAgZWxpZiB0aW1lc3BlYyA9PSAnbWlsbGlzZWNvbmRzJzoKKyAgICAgICAgdXMgLy89IDEwMDAKKyAgICB0cnk6CisgICAgICAgIGZtdCA9IHNwZWNzW3RpbWVzcGVjXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVW5rbm93biB0aW1lc3BlYyB2YWx1ZScpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGZtdC5mb3JtYXQoaGgsIG1tLCBzcywgdXMpCiAKICMgQ29ycmVjdGx5IHN1YnN0aXR1dGUgZm9yICV6IGFuZCAlWiBlc2NhcGVzIGluIHN0cmZ0aW1lIGZvcm1hdHMuCiBkZWYgX3dyYXBfc3RyZnRpbWUob2JqZWN0LCBmb3JtYXQsIHRpbWV0dXBsZSk6CkBAIC0yMzYsMTEgKzI1MCwxMSBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKG9mZnNldCwgdGltZWRlbHRhKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0emluZm8uJXMoKSBtdXN0IHJldHVybiBOb25lICIKICAgICAgICAgICAgICAgICAgICAgICAgICJvciB0aW1lZGVsdGEsIG5vdCAnJXMnIiAlIChuYW1lLCB0eXBlKG9mZnNldCkpKQotICAgIGlmIG9mZnNldCAlIHRpbWVkZWx0YShtaW51dGVzPTEpIG9yIG9mZnNldC5taWNyb3NlY29uZHM6CisgICAgaWYgb2Zmc2V0Lm1pY3Jvc2Vjb25kczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gYSB3aG9sZSBudW1iZXIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBtaW51dGVzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHNlY29uZHMsIGdvdCAlcyIgJSAobmFtZSwgb2Zmc2V0KSkKICAgICBpZiBub3QgLXRpbWVkZWx0YSgxKSA8IG9mZnNldCA8IHRpbWVkZWx0YSgxKToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcygpPSVzLCBtdXN0IGJlIHN0cmljdGx5IGJldHdlZW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICItdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQgdGltZWRlbHRhKGhvdXJzPTI0KSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lLCBvZmZzZXQpKQogCkBAIC0yNzQsNyArMjg4LDcgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZGF5IG11c3QgYmUgaW4gMS4uJWQnICUgZGltLCBkYXkpCiAgICAgcmV0dXJuIHllYXIsIG1vbnRoLCBkYXkKIAotZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpOgorZGVmIF9jaGVja190aW1lX2ZpZWxkcyhob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQpOgogICAgIGhvdXIgPSBfY2hlY2tfaW50X2ZpZWxkKGhvdXIpCiAgICAgbWludXRlID0gX2NoZWNrX2ludF9maWVsZChtaW51dGUpCiAgICAgc2Vjb25kID0gX2NoZWNrX2ludF9maWVsZChzZWNvbmQpCkBAIC0yODcsNyArMzAxLDkgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc2Vjb25kIG11c3QgYmUgaW4gMC4uNTknLCBzZWNvbmQpCiAgICAgaWYgbm90IDAgPD0gbWljcm9zZWNvbmQgPD0gOTk5OTk5OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdtaWNyb3NlY29uZCBtdXN0IGJlIGluIDAuLjk5OTk5OScsIG1pY3Jvc2Vjb25kKQotICAgIHJldHVybiBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQKKyAgICBpZiBmb2xkIG5vdCBpbiAoMCwgMSk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxJywgZm9sZCkKKyAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkCiAKIGRlZiBfY2hlY2tfdHppbmZvX2FyZyh0eik6CiAgICAgaWYgdHogaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgpAQCAtMzE2LDYgKzMzMiw3IEBACiAKICAgICByZXR1cm4gcQogCisKIGNsYXNzIHRpbWVkZWx0YToKICAgICAiIiJSZXByZXNlbnQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXRpbWUgb2JqZWN0cy4KIApAQCAtOTE1LDcgKzkzMiw3IEBACiAKICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCi0gICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKKyAgICBkZWYgX2dldHN0YXRlKHNlbGYsIHByb3RvY29sPTMpOgogICAgICAgICB5aGksIHlsbyA9IGRpdm1vZChzZWxmLl95ZWFyLCAyNTYpCiAgICAgICAgIHJldHVybiBieXRlcyhbeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXldKSwKIApAQCAtOTIzLDggKzk0MCw4IEBACiAgICAgICAgIHloaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5ID0gc3RyaW5nCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KIAotICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZSgpKQorICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvY29sKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUocHJvdG9jb2wpKQogCiBfZGF0ZV9jbGFzcyA9IGRhdGUgICMgc28gZnVuY3Rpb25zIHcvIGFyZ3MgbmFtZWQgImRhdGUiIGNhbiBnZXQgYXQgdGhlIGNsYXNzCiAKQEAgLTkzMiw2ICs5NDksNyBAQAogZGF0ZS5tYXggPSBkYXRlKDk5OTksIDEyLCAzMSkKIGRhdGUucmVzb2x1dGlvbiA9IHRpbWVkZWx0YShkYXlzPTEpCiAKKwogY2xhc3MgdHppbmZvOgogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHRpbWUgem9uZSBpbmZvIGNsYXNzZXMuCiAKQEAgLTEwMjMsMTEgKzEwNDEsMTEgQEAKICAgICBkc3QoKQogCiAgICAgUHJvcGVydGllcyAocmVhZG9ubHkpOgotICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvCisgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQKICAgICAiIiIKLSAgICBfX3Nsb3RzX18gPSAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJywgJ19oYXNoY29kZScKKyAgICBfX3Nsb3RzX18gPSAnX2hvdXInLCAnX21pbnV0ZScsICdfc2Vjb25kJywgJ19taWNyb3NlY29uZCcsICdfdHppbmZvJywgJ19oYXNoY29kZScsICdfZm9sZCcKIAotICAgIGRlZiBfX25ld19fKGNscywgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKToKKyAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuCiAKICAgICAgICAgQXJndW1lbnRzOgpAQCAtMTAzNSwxNSArMTA1MywxNiBAQAogICAgICAgICBob3VyLCBtaW51dGUgKHJlcXVpcmVkKQogICAgICAgICBzZWNvbmQsIG1pY3Jvc2Vjb25kIChkZWZhdWx0IHRvIHplcm8pCiAgICAgICAgIHR6aW5mbyAoZGVmYXVsdCB0byBOb25lKQorICAgICAgICBmb2xkIChrZXl3b3JkIG9ubHksIGRlZmF1bHQgdG8gVHJ1ZSkKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaG91ciwgYnl0ZXMpIGFuZCBsZW4oaG91cikgPT0gNiBhbmQgaG91clswXSA8IDI0OgorICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0mMHg3RiA8IDI0OgogICAgICAgICAgICAgIyBQaWNrbGUgc3VwcG9ydAogICAgICAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgICAgIHNlbGYuX19zZXRzdGF0ZShob3VyLCBtaW51dGUgb3IgTm9uZSkKICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKLSAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX2hvdXIgPSBob3VyCkBAIC0xMDUyLDYgKzEwNzEsNyBAQAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCisgICAgICAgIHNlbGYuX2ZvbGQgPSBmb2xkCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEwODAsNiArMTEwMCwxMCBAQAogICAgICAgICAiIiJ0aW1lem9uZSBpbmZvIG9iamVjdCIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdHppbmZvCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQKKwogICAgICMgU3RhbmRhcmQgY29udmVyc2lvbnMsIF9faGFzaF9fIChhbmQgaGVscGVycykKIAogICAgICMgQ29tcGFyaXNvbnMgb2YgdGltZSBvYmplY3RzIHdpdGggb3RoZXIuCkBAIC0xMTQ1LDkgKzExNjksMTMgQEAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgICIiIkhhc2guIiIiCiAgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgotICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBzZWxmLmZvbGQ6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYucmVwbGFjZShmb2xkPTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmCisgICAgICAgICAgICB0em9mZiA9IHQudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIGlmIG5vdCB0em9mZjogICMgemVybyBvciBOb25lCi0gICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHQuX2dldHN0YXRlKClbMF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGgsIG0gPSBkaXZtb2QodGltZWRlbHRhKGhvdXJzPXNlbGYuaG91ciwgbWludXRlcz1zZWxmLm1pbnV0ZSkgLSB0em9mZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVkZWx0YShob3Vycz0xKSkKQEAgLTExNzEsMTAgKzExOTksMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2lnbiA9ICIrIgogICAgICAgICAgICAgaGgsIG1tID0gZGl2bW9kKG9mZiwgdGltZWRlbHRhKGhvdXJzPTEpKQotICAgICAgICAgICAgYXNzZXJ0IG5vdCBtbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICAgICAgbW0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICBtbSwgc3MgPSBkaXZtb2QobW0sIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgICAgICAgYXNzZXJ0IDAgPD0gaGggPCAyNAogICAgICAgICAgICAgb2ZmID0gIiVzJTAyZCVzJTAyZCIgJSAoc2lnbiwgaGgsIHNlcCwgbW0pCisgICAgICAgICAgICBpZiBzczoKKyAgICAgICAgICAgICAgICBvZmYgKz0gJzolMDJkJyAlIHNzLnNlY29uZHMKICAgICAgICAgcmV0dXJuIG9mZgogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtMTE5MSwxNiArMTIyMCwyMiBAQAogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKKyAgICAgICAgaWYgc2VsZi5fZm9sZDoKKyAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCisgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgZm9sZD0xKSIKICAgICAgICAgcmV0dXJuIHMKIAotICAgIGRlZiBpc29mb3JtYXQoc2VsZik6CisgICAgZGVmIGlzb2Zvcm1hdChzZWxmLCB0aW1lc3BlYz0nYXV0bycpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCiAKLSAgICAgICAgVGhpcyBpcyAnSEg6TU06U1MubW1tbW1tK3p6Onp6Jywgb3IgJ0hIOk1NOlNTK3p6Onp6JyBpZgotICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisgICAgICAgIFRoZSBmdWxsIGZvcm1hdCBpcyAnSEg6TU06U1MubW1tbW1tK3p6Onp6Jy4gQnkgZGVmYXVsdCwgdGhlIGZyYWN0aW9uYWwKKyAgICAgICAgcGFydCBpcyBvbWl0dGVkIGlmIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KKworICAgICAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgICAgICB0ZXJtcyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLgogICAgICAgICAiIiIKICAgICAgICAgcyA9IF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQsIHRpbWVzcGVjKQogICAgICAgICB0eiA9IHNlbGYuX3R6c3RyKCkKICAgICAgICAgaWYgdHo6CiAgICAgICAgICAgICBzICs9IHR6CkBAIC0xMjY2LDcgKzEzMDEsNyBAQAogICAgICAgICByZXR1cm4gb2Zmc2V0CiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCBob3VyPU5vbmUsIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwKLSAgICAgICAgICAgICAgICB0emluZm89VHJ1ZSk6CisgICAgICAgICAgICAgICAgdHppbmZvPVRydWUsICosIGZvbGQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIG5ldyB0aW1lIHdpdGggbmV3IHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZHMuIiIiCiAgICAgICAgIGlmIGhvdXIgaXMgTm9uZToKICAgICAgICAgICAgIGhvdXIgPSBzZWxmLmhvdXIKQEAgLTEyNzgsMTQgKzEzMTMsMTkgQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIHJldHVybiB0aW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvKQorICAgICAgICBpZiBmb2xkIGlzIE5vbmU6CisgICAgICAgICAgICBmb2xkID0gc2VsZi5fZm9sZAorICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZD1mb2xkKQogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgdXMyLCB1czMgPSBkaXZtb2Qoc2VsZi5fbWljcm9zZWNvbmQsIDI1NikKICAgICAgICAgdXMxLCB1czIgPSBkaXZtb2QodXMyLCAyNTYpCi0gICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFtzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKKyAgICAgICAgaCA9IHNlbGYuX2hvdXIKKyAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgorICAgICAgICAgICAgaCArPSAxMjgKKyAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW2gsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIChiYXNlc3RhdGUsKQpAQCAtMTI5NSwxMiArMTMzNSwxOCBAQAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCi0gICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCisgICAgICAgIGgsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzID0gc3RyaW5nCisgICAgICAgIGlmIGggPiAxMjc6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMQorICAgICAgICAgICAgc2VsZi5faG91ciA9IGggLSAxMjgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAwCisgICAgICAgICAgICBzZWxmLl9ob3VyID0gaAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICh0aW1lLCBzZWxmLl9nZXRzdGF0ZSgpKQorICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvY29sKToKKyAgICAgICAgcmV0dXJuICh0aW1lLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCiAKIF90aW1lX2NsYXNzID0gdGltZSAgIyBzbyBmdW5jdGlvbnMgdy8gYXJncyBuYW1lZCAidGltZSIgY2FuIGdldCBhdCB0aGUgY2xhc3MKIApAQCAtMTMxNywxNiArMTM2MywxNiBAQAogICAgIF9fc2xvdHNfXyA9IGRhdGUuX19zbG90c19fICsgdGltZS5fX3Nsb3RzX18KIAogICAgIGRlZiBfX25ld19fKGNscywgeWVhciwgbW9udGg9Tm9uZSwgZGF5PU5vbmUsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLAotICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSAxMCBhbmQgMSA8PSB5ZWFyWzJdIDw9IDEyOgorICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApOgorICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwIGFuZCAxIDw9IHllYXJbMl0mMHg3RiA8PSAxMjoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoeWVhciwgbW9udGgpCiAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgogICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gX2NoZWNrX2RhdGVfZmllbGRzKHllYXIsIG1vbnRoLCBkYXkpCi0gICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCA9IF9jaGVja190aW1lX2ZpZWxkcygKLSAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCkKKyAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkID0gX2NoZWNrX3RpbWVfZmllbGRzKAorICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKQogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0emluZm8pCiAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgIHNlbGYuX3llYXIgPSB5ZWFyCkBAIC0xMzM4LDYgKzEzODQsNyBAQAogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9IG1pY3Jvc2Vjb25kCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCisgICAgICAgIHNlbGYuX2ZvbGQgPSBmb2xkCiAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAjIFJlYWQtb25seSBmaWVsZCBhY2Nlc3NvcnMKQEAgLTEzNjYsNiArMTQxMywxMCBAQAogICAgICAgICAiIiJ0aW1lem9uZSBpbmZvIG9iamVjdCIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdHppbmZvCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfZnJvbXRpbWVzdGFtcChjbHMsIHQsIHV0YywgdHopOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYSBkYXRldGltZSBmcm9tIGEgUE9TSVggdGltZXN0YW1wIChsaWtlIHRpbWUudGltZSgpKS4KQEAgLTEzODQsNyArMTQzNSwyMyBAQAogICAgICAgICBjb252ZXJ0ZXIgPSBfdGltZS5nbXRpbWUgaWYgdXRjIGVsc2UgX3RpbWUubG9jYWx0aW1lCiAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MsIHdlZWtkYXksIGpkYXksIGRzdCA9IGNvbnZlcnRlcih0KQogICAgICAgICBzcyA9IG1pbihzcywgNTkpICAgICMgY2xhbXAgb3V0IGxlYXAgc2Vjb25kcyBpZiB0aGUgcGxhdGZvcm0gaGFzIHRoZW0KLSAgICAgICAgcmV0dXJuIGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgIHJlc3VsdCA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgIGlmIHR6IGlzIE5vbmU6CisgICAgICAgICAgICAjIEFzIG9mIHZlcnNpb24gMjAxNWYgbWF4IGZvbGQgaW4gSUFOQSBkYXRhYmFzZSBpcworICAgICAgICAgICAgIyAyMyBob3VycyBhdCAxOTY5LTA5LTMwIDEzOjAwOjAwIGluIEt3YWphbGVpbi4KKyAgICAgICAgICAgICMgTGV0J3MgcHJvYmUgMjQgaG91cnMgaW4gdGhlIHBhc3QgdG8gZGV0ZWN0IGEgdHJhbnNpdGlvbjoKKyAgICAgICAgICAgIG1heF9mb2xkX3NlY29uZHMgPSAyNCAqIDM2MDAKKyAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBjb252ZXJ0ZXIodCAtIG1heF9mb2xkX3NlY29uZHMpWzo2XQorICAgICAgICAgICAgcHJvYmUxID0gY2xzKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0eikKKyAgICAgICAgICAgIHRyYW5zID0gcmVzdWx0IC0gcHJvYmUxIC0gdGltZWRlbHRhKDAsIG1heF9mb2xkX3NlY29uZHMpCisgICAgICAgICAgICBpZiB0cmFucy5kYXlzIDwgMDoKKyAgICAgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gY29udmVydGVyKHQgKyB0cmFucyAvLyB0aW1lZGVsdGEoMCwgMSkpWzo2XQorICAgICAgICAgICAgICAgIHByb2JlMiA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgICAgICAgICAgaWYgcHJvYmUyID09IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0Ll9mb2xkID0gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gdHouZnJvbXV0YyhyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmcm9tdGltZXN0YW1wKGNscywgdCwgdHo9Tm9uZSk6CkBAIC0xMzk0LDEwICsxNDYxLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6KQogCi0gICAgICAgIHJlc3VsdCA9IGNscy5fZnJvbXRpbWVzdGFtcCh0LCB0eiBpcyBub3QgTm9uZSwgdHopCi0gICAgICAgIGlmIHR6IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVzdWx0ID0gdHouZnJvbXV0YyhyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgcmV0dXJuIGNscy5fZnJvbXRpbWVzdGFtcCh0LCB0eiBpcyBub3QgTm9uZSwgdHopCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdXRjZnJvbXRpbWVzdGFtcChjbHMsIHQpOgpAQCAtMTQxNywxNSArMTQ4MSwxNyBAQAogICAgICAgICByZXR1cm4gY2xzLnV0Y2Zyb210aW1lc3RhbXAodCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjb21iaW5lKGNscywgZGF0ZSwgdGltZSk6CisgICAgZGVmIGNvbWJpbmUoY2xzLCBkYXRlLCB0aW1lLCB0emluZm89VHJ1ZSk6CiAgICAgICAgICJDb25zdHJ1Y3QgYSBkYXRldGltZSBmcm9tIGEgZ2l2ZW4gZGF0ZSBhbmQgYSBnaXZlbiB0aW1lLiIKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0ZSwgX2RhdGVfY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkYXRlIGFyZ3VtZW50IG11c3QgYmUgYSBkYXRlIGluc3RhbmNlIikKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGltZSwgX3RpbWVfY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0aW1lIGFyZ3VtZW50IG11c3QgYmUgYSB0aW1lIGluc3RhbmNlIikKKyAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CisgICAgICAgICAgICB0emluZm8gPSB0aW1lLnR6aW5mbwogICAgICAgICByZXR1cm4gY2xzKGRhdGUueWVhciwgZGF0ZS5tb250aCwgZGF0ZS5kYXksCiAgICAgICAgICAgICAgICAgICAgdGltZS5ob3VyLCB0aW1lLm1pbnV0ZSwgdGltZS5zZWNvbmQsIHRpbWUubWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgdGltZS50emluZm8pCisgICAgICAgICAgICAgICAgICAgdHppbmZvLCBmb2xkPXRpbWUuZm9sZCkKIAogICAgIGRlZiB0aW1ldHVwbGUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gbG9jYWwgdGltZSB0dXBsZSBjb21wYXRpYmxlIHdpdGggdGltZS5sb2NhbHRpbWUoKS4iCkBAIC0xNDQwLDEyICsxNTA2LDQ2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0KQogCisgICAgZGVmIF9ta3RpbWUoc2VsZik6CisgICAgICAgICIiIlJldHVybiBpbnRlZ2VyIFBPU0lYIHRpbWVzdGFtcC4iIiIKKyAgICAgICAgZXBvY2ggPSBkYXRldGltZSgxOTcwLCAxLCAxKQorICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCisgICAgICAgIHQgPSAoc2VsZiAtIGVwb2NoKSAvLyB0aW1lZGVsdGEoMCwgMSkKKyAgICAgICAgZGVmIGxvY2FsKHUpOgorICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IF90aW1lLmxvY2FsdGltZSh1KVs6Nl0KKyAgICAgICAgICAgIHJldHVybiAoZGF0ZXRpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcykgLSBlcG9jaCkgLy8gdGltZWRlbHRhKDAsIDEpCisKKyAgICAgICAgIyBPdXIgZ29hbCBpcyB0byBzb2x2ZSB0ID0gbG9jYWwodSkgZm9yIHUuCisgICAgICAgIGEgPSBsb2NhbCh0KSAtIHQKKyAgICAgICAgdTEgPSB0IC0gYQorICAgICAgICB0MSA9IGxvY2FsKHUxKQorICAgICAgICBpZiB0MSA9PSB0OgorICAgICAgICAgICAgIyBXZSBmb3VuZCBvbmUgc29sdXRpb24sIGJ1dCBpdCBtYXkgbm90IGJlIHRoZSBvbmUgd2UgbmVlZC4KKyAgICAgICAgICAgICMgTG9vayBmb3IgYW4gZWFybGllciBzb2x1dGlvbiAoaWYgYGZvbGRgIGlzIDApLCBvciBhCisgICAgICAgICAgICAjIGxhdGVyIG9uZSAoaWYgYGZvbGRgIGlzIDEpLgorICAgICAgICAgICAgdTIgPSB1MSArICgtbWF4X2ZvbGRfc2Vjb25kcywgbWF4X2ZvbGRfc2Vjb25kcylbc2VsZi5mb2xkXQorICAgICAgICAgICAgYiA9IGxvY2FsKHUyKSAtIHUyCisgICAgICAgICAgICBpZiBhID09IGI6CisgICAgICAgICAgICAgICAgcmV0dXJuIHUxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiID0gdDEgLSB1MQorICAgICAgICAgICAgYXNzZXJ0IGEgIT0gYgorICAgICAgICB1MiA9IHQgLSBiCisgICAgICAgIHQyID0gbG9jYWwodTIpCisgICAgICAgIGlmIHQyID09IHQ6CisgICAgICAgICAgICByZXR1cm4gdTIKKyAgICAgICAgaWYgdDEgPT0gdDoKKyAgICAgICAgICAgIHJldHVybiB1MQorICAgICAgICAjIFdlIGhhdmUgZm91bmQgYm90aCBvZmZzZXRzIGEgYW5kIGIsIGJ1dCBuZWl0aGVyIHQgLSBhIG5vciB0IC0gYiBpcworICAgICAgICAjIGEgc29sdXRpb24uICBUaGlzIG1lYW5zIHQgaXMgaW4gdGhlIGdhcC4KKyAgICAgICAgcmV0dXJuIChtYXgsIG1pbilbc2VsZi5mb2xkXSh1MSwgdTIpCisKKwogICAgIGRlZiB0aW1lc3RhbXAoc2VsZik6CiAgICAgICAgICJSZXR1cm4gUE9TSVggdGltZXN0YW1wIGFzIGZsb2F0IgogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBfdGltZS5ta3RpbWUoKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSwgLTEpKSArIHNlbGYubWljcm9zZWNvbmQgLyAxZTYKKyAgICAgICAgICAgIHMgPSBzZWxmLl9ta3RpbWUoKQorICAgICAgICAgICAgcmV0dXJuIHMgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gKHNlbGYgLSBfRVBPQ0gpLnRvdGFsX3NlY29uZHMoKQogCkBAIC0xNDY0LDE1ICsxNTY0LDE2IEBACiAKICAgICBkZWYgdGltZShzZWxmKToKICAgICAgICAgIlJldHVybiB0aGUgdGltZSBwYXJ0LCB3aXRoIHR6aW5mbyBOb25lLiIKLSAgICAgICAgcmV0dXJuIHRpbWUoc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQpCisgICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kLCBmb2xkPXNlbGYuZm9sZCkKIAogICAgIGRlZiB0aW1ldHooc2VsZik6CiAgICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCBzYW1lIHR6aW5mby4iCiAgICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3R6aW5mbywgZm9sZD1zZWxmLmZvbGQpCiAKICAgICBkZWYgcmVwbGFjZShzZWxmLCB5ZWFyPU5vbmUsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPU5vbmUsCi0gICAgICAgICAgICAgICAgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLCB0emluZm89VHJ1ZSk6CisgICAgICAgICAgICAgICAgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLCB0emluZm89VHJ1ZSwKKyAgICAgICAgICAgICAgICAqLCBmb2xkPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSBuZXcgZGF0ZXRpbWUgd2l0aCBuZXcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkcy4iIiIKICAgICAgICAgaWYgeWVhciBpcyBOb25lOgogICAgICAgICAgICAgeWVhciA9IHNlbGYueWVhcgpAQCAtMTQ5MCw0NiArMTU5MSw0NSBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbykKKyAgICAgICAgaWYgZm9sZCBpcyBOb25lOgorICAgICAgICAgICAgZm9sZCA9IHNlbGYuZm9sZAorICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQ9Zm9sZCkKKworICAgIGRlZiBfbG9jYWxfdGltZXpvbmUoc2VsZik6CisgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICB0cyA9IHNlbGYuX21rdGltZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQorICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQorICAgICAgICBsb2NhbCA9IGRhdGV0aW1lKCpsb2NhbHRtWzo2XSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCisgICAgICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgorICAgICAgICAgICAgem9uZSA9IGxvY2FsdG0udG1fem9uZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQorICAgICAgICAgICAgem9uZSA9IF90aW1lLnN0cmZ0aW1lKCclWicsIGxvY2FsdG0pCisgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCB6b25lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHogPSB0aW1lem9uZSh0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpLCB6b25lKQorICAgICAgICByZXR1cm4gdHoKIAogICAgIGRlZiBhc3RpbWV6b25lKHNlbGYsIHR6PU5vbmUpOgogICAgICAgICBpZiB0eiBpcyBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi50emluZm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQotICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKLSAgICAgICAgICAgIGxvY2FsdG0gPSBfdGltZS5sb2NhbHRpbWUodHMpCi0gICAgICAgICAgICBsb2NhbCA9IGRhdGV0aW1lKCpsb2NhbHRtWzo2XSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIEV4dHJhY3QgVFogZGF0YSBpZiBhdmFpbGFibGUKLSAgICAgICAgICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgotICAgICAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAjIENvbXB1dGUgVVRDIG9mZnNldCBhbmQgY29tcGFyZSB3aXRoIHRoZSB2YWx1ZSBpbXBsaWVkCi0gICAgICAgICAgICAgICAgIyBieSB0bV9pc2RzdC4gIElmIHRoZSB2YWx1ZXMgbWF0Y2gsIHVzZSB0aGUgem9uZSBuYW1lCi0gICAgICAgICAgICAgICAgIyBpbXBsaWVkIGJ5IHRtX2lzZHN0LgotICAgICAgICAgICAgICAgIGRlbHRhID0gbG9jYWwgLSBkYXRldGltZSgqX3RpbWUuZ210aW1lKHRzKVs6Nl0pCi0gICAgICAgICAgICAgICAgZHN0ID0gX3RpbWUuZGF5bGlnaHQgYW5kIGxvY2FsdG0udG1faXNkc3QgPiAwCi0gICAgICAgICAgICAgICAgZ210b2ZmID0gLShfdGltZS5hbHR6b25lIGlmIGRzdCBlbHNlIF90aW1lLnRpbWV6b25lKQotICAgICAgICAgICAgICAgIGlmIGRlbHRhID09IHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZik6Ci0gICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEsIF90aW1lLnR6bmFtZVtkc3RdKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKLQorICAgICAgICAgICAgdHogPSBzZWxmLl9sb2NhbF90aW1lem9uZSgpCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdHppbmZvIikKIAogICAgICAgICBteXR6ID0gc2VsZi50emluZm8KICAgICAgICAgaWYgbXl0eiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKKyAgICAgICAgICAgIG15dHogPSBzZWxmLl9sb2NhbF90aW1lem9uZSgpCiAKICAgICAgICAgaWYgdHogaXMgbXl0ejoKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKICAgICAgICAgIyBDb252ZXJ0IHNlbGYgdG8gVVRDLCBhbmQgYXR0YWNoIHRoZSBuZXcgdGltZSB6b25lIG9iamVjdC4KLSAgICAgICAgbXlvZmZzZXQgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgIG15b2Zmc2V0ID0gbXl0ei51dGNvZmZzZXQoc2VsZikKICAgICAgICAgaWYgbXlvZmZzZXQgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCiAgICAgICAgIHV0YyA9IChzZWxmIC0gbXlvZmZzZXQpLnJlcGxhY2UodHppbmZvPXR6KQpAQCAtMTU0OSwyMSArMTY0OSwyNSBAQAogICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICBzZWxmLl95ZWFyKQogCi0gICAgZGVmIGlzb2Zvcm1hdChzZWxmLCBzZXA9J1QnKToKKyAgICBkZWYgaXNvZm9ybWF0KHNlbGYsIHNlcD0nVCcsIHRpbWVzcGVjPSdhdXRvJyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgdGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIElTTy4KIAotICAgICAgICBUaGlzIGlzICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbScsIG9yICdZWVlZLU1NLUREIEhIOk1NOlNTJyBpZgotICAgICAgICBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisgICAgICAgIFRoZSBmdWxsIGZvcm1hdCBsb29rcyBsaWtlICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbScuCisgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBmcmFjdGlvbmFsIHBhcnQgaXMgb21pdHRlZCBpZiBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCiAKICAgICAgICAgSWYgc2VsZi50emluZm8gaXMgbm90IE5vbmUsIHRoZSBVVEMgb2Zmc2V0IGlzIGFsc28gYXR0YWNoZWQsIGdpdmluZwotICAgICAgICAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0rSEg6TU0nIG9yICdZWVlZLU1NLUREIEhIOk1NOlNTK0hIOk1NJy4KKyAgICAgICAgZ2l2aW5nIGEgZnVsbCBmb3JtYXQgb2YgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tK0hIOk1NJy4KIAogICAgICAgICBPcHRpb25hbCBhcmd1bWVudCBzZXAgc3BlY2lmaWVzIHRoZSBzZXBhcmF0b3IgYmV0d2VlbiBkYXRlIGFuZAogICAgICAgICB0aW1lLCBkZWZhdWx0ICdUJy4KKworICAgICAgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgICAgICB0ZXJtcyBvZiB0aGUgdGltZSB0byBpbmNsdWRlLgogICAgICAgICAiIiIKICAgICAgICAgcyA9ICgiJTA0ZC0lMDJkLSUwMmQlYyIgJSAoc2VsZi5feWVhciwgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VwKSArCiAgICAgICAgICAgICAgX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kLCB0aW1lc3BlYykpCisKICAgICAgICAgb2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICBpZiBvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpZiBvZmYuZGF5cyA8IDA6CkBAIC0xNTcyLDkgKzE2NzYsMTEgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2lnbiA9ICIrIgogICAgICAgICAgICAgaGgsIG1tID0gZGl2bW9kKG9mZiwgdGltZWRlbHRhKGhvdXJzPTEpKQotICAgICAgICAgICAgYXNzZXJ0IG5vdCBtbSAlIHRpbWVkZWx0YShtaW51dGVzPTEpLCAid2hvbGUgbWludXRlIgotICAgICAgICAgICAgbW0gLy89IHRpbWVkZWx0YShtaW51dGVzPTEpCisgICAgICAgICAgICBtbSwgc3MgPSBkaXZtb2QobW0sIHRpbWVkZWx0YShtaW51dGVzPTEpKQogICAgICAgICAgICAgcyArPSAiJXMlMDJkOiUwMmQiICUgKHNpZ24sIGhoLCBtbSkKKyAgICAgICAgICAgIGlmIHNzOgorICAgICAgICAgICAgICAgIGFzc2VydCBub3Qgc3MubWljcm9zZWNvbmRzCisgICAgICAgICAgICAgICAgcyArPSAiOiUwMmQiICUgc3Muc2Vjb25kcwogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgpAQCAtMTU5MSw2ICsxNjk3LDkgQEAKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCisgICAgICAgIGlmIHNlbGYuX2ZvbGQ6CisgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgorICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgIHJldHVybiBzCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKQEAgLTE2OTMsNiArMTgwMiwxMiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbXlvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCisgICAgICAgICAgICAjIEFzc3VtZSB0aGF0IGFsbG93X21peGVkIG1lYW5zIHRoYXQgd2UgYXJlIGNhbGxlZCBmcm9tIF9fZXFfXworICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CisgICAgICAgICAgICAgICAgaWYgbXlvZmYgIT0gc2VsZi5yZXBsYWNlKGZvbGQ9bm90IHNlbGYuZm9sZCkudXRjb2Zmc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgICAgICAgICAgaWYgb3RvZmYgIT0gb3RoZXIucmVwbGFjZShmb2xkPW5vdCBvdGhlci5mb2xkKS51dGNvZmZzZXQoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIKICAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IG15b2ZmID09IG90b2ZmCiAKICAgICAgICAgaWYgYmFzZV9jb21wYXJlOgpAQCAtMTc2MCw5ICsxODc1LDEzIEBACiAKICAgICBkZWYgX19oYXNoX18oc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX2hhc2hjb2RlID09IC0xOgotICAgICAgICAgICAgdHpvZmYgPSBzZWxmLnV0Y29mZnNldCgpCisgICAgICAgICAgICBpZiBzZWxmLmZvbGQ6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYucmVwbGFjZShmb2xkPTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmCisgICAgICAgICAgICB0em9mZiA9IHQudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIGlmIHR6b2ZmIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHNlbGYuX2dldHN0YXRlKClbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSBoYXNoKHQuX2dldHN0YXRlKClbMF0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRheXMgPSBfeW1kMm9yZChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5KQogICAgICAgICAgICAgICAgIHNlY29uZHMgPSBzZWxmLmhvdXIgKiAzNjAwICsgc2VsZi5taW51dGUgKiA2MCArIHNlbGYuc2Vjb25kCkBAIC0xNzcxLDExICsxODkwLDE0IEBACiAKICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCi0gICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKKyAgICBkZWYgX2dldHN0YXRlKHNlbGYsIHByb3RvY29sPTMpOgogICAgICAgICB5aGksIHlsbyA9IGRpdm1vZChzZWxmLl95ZWFyLCAyNTYpCiAgICAgICAgIHVzMiwgdXMzID0gZGl2bW9kKHNlbGYuX21pY3Jvc2Vjb25kLCAyNTYpCiAgICAgICAgIHVzMSwgdXMyID0gZGl2bW9kKHVzMiwgMjU2KQotICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksCisgICAgICAgIG0gPSBzZWxmLl9tb250aAorICAgICAgICBpZiBzZWxmLl9mb2xkIGFuZCBwcm90b2NvbCA+IDM6CisgICAgICAgICAgICBtICs9IDEyOAorICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbeWhpLCB5bG8sIG0sIHNlbGYuX2RheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXMxLCB1czIsIHVzM10pCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgpAQCAtMTc4NiwxNCArMTkwOCwyMCBAQAogICAgIGRlZiBfX3NldHN0YXRlKHNlbGYsIHN0cmluZywgdHppbmZvKToKICAgICAgICAgaWYgdHppbmZvIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0emluZm8sIF90emluZm9fY2xhc3MpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJiYWQgdHppbmZvIHN0YXRlIGFyZyIpCi0gICAgICAgICh5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwgc2VsZi5faG91ciwKKyAgICAgICAgKHloaSwgeWxvLCBtLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCiAgICAgICAgICBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMykgPSBzdHJpbmcKKyAgICAgICAgaWYgbSA+IDEyNzoKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAxCisgICAgICAgICAgICBzZWxmLl9tb250aCA9IG0gLSAxMjgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAwCisgICAgICAgICAgICBzZWxmLl9tb250aCA9IG0KICAgICAgICAgc2VsZi5feWVhciA9IHloaSAqIDI1NiArIHlsbwogICAgICAgICBzZWxmLl9taWNyb3NlY29uZCA9ICgoKHVzMSA8PCA4KSB8IHVzMikgPDwgOCkgfCB1czMKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKIAogCiBkYXRldGltZS5taW4gPSBkYXRldGltZSgxLCAxLCAxKQpAQCAtMTkxMyw2ICsyMDQxLDggQEAKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX25hbWVfZnJvbV9vZmZzZXQoZGVsdGEpOgorICAgICAgICBpZiBub3QgZGVsdGE6CisgICAgICAgICAgICByZXR1cm4gJ1VUQycKICAgICAgICAgaWYgZGVsdGEgPCB0aW1lZGVsdGEoMCk6CiAgICAgICAgICAgICBzaWduID0gJy0nCiAgICAgICAgICAgICBkZWx0YSA9IC1kZWx0YQpkaWZmIC0tZ2l0IGEvTGliL2RibS9kdW1iLnB5IGIvTGliL2RibS9kdW1iLnB5CmluZGV4IDc3NzdhN2MuLmU3YzY0NDAgMTAwNjQ0Ci0tLSBhL0xpYi9kYm0vZHVtYi5weQorKysgYi9MaWIvZGJtL2R1bWIucHkKQEAgLTQ3LDYgKzQ3LDcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlYmFzZW5hbWUsIG1vZGUsIGZsYWc9J2MnKToKICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGUKKyAgICAgICAgc2VsZi5fcmVhZG9ubHkgPSAoZmxhZyA9PSAncicpCiAKICAgICAgICAgIyBUaGUgZGlyZWN0b3J5IGZpbGUgaXMgYSB0ZXh0IGZpbGUuICBFYWNoIGxpbmUgbG9va3MgbGlrZQogICAgICAgICAjICAgICIlciwgKCVkLCAlZClcbiIgJSAoa2V5LCBwb3MsIHNpeikKQEAgLTgwLDYgKzgxLDExIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBfaW8ub3BlbihzZWxmLl9kYXRmaWxlLCAncicsIGVuY29kaW5nPSJMYXRpbi0xIikKICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBpZiBmbGFnIG5vdCBpbiAoJ2MnLCAnbicpOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBkYXRhYmFzZSBmaWxlIGlzIG1pc3NpbmcsIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VtYW50aWNzIG9mIHRoZSAnYycgZmxhZyB3aWxsIGJlIHVzZWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD00KQogICAgICAgICAgICAgd2l0aCBfaW8ub3BlbihzZWxmLl9kYXRmaWxlLCAndycsIGVuY29kaW5nPSJMYXRpbi0xIikgYXMgZjoKICAgICAgICAgICAgICAgICBzZWxmLl9jaG1vZChzZWxmLl9kYXRmaWxlKQogICAgICAgICBlbHNlOgpAQCAtMTc4LDYgKzE4NCwxMCBAQAogICAgICAgICAgICAgZi53cml0ZSgiJXIsICVyXG4iICUgKGtleS5kZWNvZGUoIkxhdGluLTEiKSwgcG9zX2FuZF9zaXpfcGFpcikpCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWwpOgorICAgICAgICBpZiBzZWxmLl9yZWFkb25seToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybignVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgogICAgICAgICAgICAga2V5ID0ga2V5LmVuY29kZSgndXRmLTgnKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGtleSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKQEAgLTIxMiw2ICsyMjIsMTAgQEAKICAgICAgICAgICAgICMgKHNvIHRoYXQgX2NvbW1pdCgpIG5ldmVyIGdldHMgY2FsbGVkKS4KIAogICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICBpZiBzZWxmLl9yZWFkb25seToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybignVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgogICAgICAgICAgICAga2V5ID0ga2V5LmVuY29kZSgndXRmLTgnKQogICAgICAgICBzZWxmLl92ZXJpZnlfb3BlbigpCkBAIC0zMDAsNCArMzE0LDggQEAKICAgICBlbHNlOgogICAgICAgICAjIFR1cm4gb2ZmIGFueSBiaXRzIHRoYXQgYXJlIHNldCBpbiB0aGUgdW1hc2sKICAgICAgICAgbW9kZSA9IG1vZGUgJiAofnVtKQorICAgIGlmIGZsYWcgbm90IGluICgncicsICd3JywgJ2MnLCAnbicpOgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3Mud2FybigiRmxhZyBtdXN0IGJlIG9uZSBvZiAncicsICd3JywgJ2MnLCBvciAnbiciLAorICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIHJldHVybiBfRGF0YWJhc2UoZmlsZSwgbW9kZSwgZmxhZz1mbGFnKQpkaWZmIC0tZ2l0IGEvTGliL2RpZmZsaWIucHkgYi9MaWIvZGlmZmxpYi5weQppbmRleCAwNzZiYmFjLi4yMDk1YTVlIDEwMDY0NAotLS0gYS9MaWIvZGlmZmxpYi5weQorKysgYi9MaWIvZGlmZmxpYi5weQpAQCAtMTQxNSw3ICsxNDE1LDcgQEAKICAgICBpbXBvcnQgcmUKIAogICAgICMgcmVndWxhciBleHByZXNzaW9uIGZvciBmaW5kaW5nIGludHJhbGluZSBjaGFuZ2UgaW5kaWNlcwotICAgIGNoYW5nZV9yZSA9IHJlLmNvbXBpbGUoJyhcKyt8XC0rfFxeKyknKQorICAgIGNoYW5nZV9yZSA9IHJlLmNvbXBpbGUocicoXCsrfFwtK3xcXispJykKIAogICAgICMgY3JlYXRlIHRoZSBkaWZmZXJlbmNlIGl0ZXJhdG9yIHRvIGdlbmVyYXRlIHRoZSBkaWZmZXJlbmNlcwogICAgIGRpZmZfbGluZXNfaXRlcmF0b3IgPSBuZGlmZihmcm9tbGluZXMsdG9saW5lcyxsaW5lanVuayxjaGFyanVuaykKZGlmZiAtLWdpdCBhL0xpYi9kaXMucHkgYi9MaWIvZGlzLnB5CmluZGV4IGY3ZTNjN2YuLjA3OTRiN2YgMTAwNjQ0Ci0tLSBhL0xpYi9kaXMucHkKKysrIGIvTGliL2Rpcy5weQpAQCAtMTYsNiArMTYsOCBAQAogX2hhdmVfY29kZSA9ICh0eXBlcy5NZXRob2RUeXBlLCB0eXBlcy5GdW5jdGlvblR5cGUsIHR5cGVzLkNvZGVUeXBlLAogICAgICAgICAgICAgICBjbGFzc21ldGhvZCwgc3RhdGljbWV0aG9kLCB0eXBlKQogCitGT1JNQVRfVkFMVUUgPSBvcG1hcFsnRk9STUFUX1ZBTFVFJ10KKwogZGVmIF90cnlfY29tcGlsZShzb3VyY2UsIG5hbWUpOgogICAgICIiIkF0dGVtcHRzIHRvIGNvbXBpbGUgdGhlIGdpdmVuIHNvdXJjZSwgZmlyc3QgYXMgYW4gZXhwcmVzc2lvbiBhbmQKICAgICAgICB0aGVuIGFzIGEgc3RhdGVtZW50IGlmIHRoZSBmaXJzdCBhcHByb2FjaCBmYWlscy4KQEAgLTg3LDYgKzg5LDcgQEAKICAgICA2NDogIk5PRlJFRSIsCiAgICAxMjg6ICJDT1JPVVRJTkUiLAogICAgMjU2OiAiSVRFUkFCTEVfQ09ST1VUSU5FIiwKKyAgIDUxMjogIkFTWU5DX0dFTkVSQVRPUiIsCiB9CiAKIGRlZiBwcmV0dHlfZmxhZ3MoZmxhZ3MpOgpAQCAtMTYzLDYgKzE2NiwxNSBAQAogX0luc3RydWN0aW9uID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgiX0luc3RydWN0aW9uIiwKICAgICAgIm9wbmFtZSBvcGNvZGUgYXJnIGFyZ3ZhbCBhcmdyZXByIG9mZnNldCBzdGFydHNfbGluZSBpc19qdW1wX3RhcmdldCIpCiAKK19JbnN0cnVjdGlvbi5vcG5hbWUuX19kb2NfXyA9ICJIdW1hbiByZWFkYWJsZSBuYW1lIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24ub3Bjb2RlLl9fZG9jX18gPSAiTnVtZXJpYyBjb2RlIGZvciBvcGVyYXRpb24iCitfSW5zdHJ1Y3Rpb24uYXJnLl9fZG9jX18gPSAiTnVtZXJpYyBhcmd1bWVudCB0byBvcGVyYXRpb24gKGlmIGFueSksIG90aGVyd2lzZSBOb25lIgorX0luc3RydWN0aW9uLmFyZ3ZhbC5fX2RvY19fID0gIlJlc29sdmVkIGFyZyB2YWx1ZSAoaWYga25vd24pLCBvdGhlcndpc2Ugc2FtZSBhcyBhcmciCitfSW5zdHJ1Y3Rpb24uYXJncmVwci5fX2RvY19fID0gIkh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIG9wZXJhdGlvbiBhcmd1bWVudCIKK19JbnN0cnVjdGlvbi5vZmZzZXQuX19kb2NfXyA9ICJTdGFydCBpbmRleCBvZiBvcGVyYXRpb24gd2l0aGluIGJ5dGVjb2RlIHNlcXVlbmNlIgorX0luc3RydWN0aW9uLnN0YXJ0c19saW5lLl9fZG9jX18gPSAiTGluZSBzdGFydGVkIGJ5IHRoaXMgb3Bjb2RlIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKK19JbnN0cnVjdGlvbi5pc19qdW1wX3RhcmdldC5fX2RvY19fID0gIlRydWUgaWYgb3RoZXIgY29kZSBqdW1wcyB0byBoZXJlLCBvdGhlcndpc2UgRmFsc2UiCisKIGNsYXNzIEluc3RydWN0aW9uKF9JbnN0cnVjdGlvbik6CiAgICAgIiIiRGV0YWlscyBmb3IgYSBieXRlY29kZSBvcGVyYXRpb24KIApAQCAtMjc2LDcgKzI4OCw2IEBACiAgICAgIiIiCiAgICAgbGFiZWxzID0gZmluZGxhYmVscyhjb2RlKQogICAgIHN0YXJ0c19saW5lID0gTm9uZQotICAgIGZyZWUgPSBOb25lCiAgICAgZm9yIG9mZnNldCwgb3AsIGFyZyBpbiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgICAgICAgaWYgbGluZXN0YXJ0cyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHN0YXJ0c19saW5lID0gbGluZXN0YXJ0cy5nZXQob2Zmc2V0LCBOb25lKQpAQCAtMjk2LDcgKzMwNyw3IEBACiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hbWU6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCBuYW1lcykKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzanJlbDoKLSAgICAgICAgICAgICAgICBhcmd2YWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgYXJndmFsID0gb2Zmc2V0ICsgMiArIGFyZwogICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAidG8gIiArIHJlcHIoYXJndmFsKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNsb2NhbDoKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIHZhcm5hbWVzKQpAQCAtMzA1LDggKzMxNiwxMyBAQAogICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSBhcmd2YWwKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzZnJlZToKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIGNlbGxzKQotICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYXJnczoKLSAgICAgICAgICAgICAgICBhcmdyZXByID0gIiVkIHBvc2l0aW9uYWwsICVkIGtleXdvcmQgcGFpciIgJSAoYXJnJTI1NiwgYXJnLy8yNTYpCisgICAgICAgICAgICBlbGlmIG9wID09IEZPUk1BVF9WQUxVRToKKyAgICAgICAgICAgICAgICBhcmd2YWwgPSAoKE5vbmUsIHN0ciwgcmVwciwgYXNjaWkpW2FyZyAmIDB4M10sIGJvb2woYXJnICYgMHg0KSkKKyAgICAgICAgICAgICAgICBhcmdyZXByID0gKCcnLCAnc3RyJywgJ3JlcHInLCAnYXNjaWknKVthcmcgJiAweDNdCisgICAgICAgICAgICAgICAgaWYgYXJndmFsWzFdOgorICAgICAgICAgICAgICAgICAgICBpZiBhcmdyZXByOgorICAgICAgICAgICAgICAgICAgICAgICAgYXJncmVwciArPSAnLCAnCisgICAgICAgICAgICAgICAgICAgIGFyZ3JlcHIgKz0gJ3dpdGggZm9ybWF0JwogICAgICAgICB5aWVsZCBJbnN0cnVjdGlvbihvcG5hbWVbb3BdLCBvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBhcmd2YWwsIGFyZ3JlcHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgc3RhcnRzX2xpbmUsIGlzX2p1bXBfdGFyZ2V0KQpAQCAtMzQzLDIzICszNTksMTUgQEAKIGRpc2NvID0gZGlzYXNzZW1ibGUgICAgICAgICAgICAgICAgICAgICAjIFhYWCBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKIAogZGVmIF91bnBhY2tfb3BhcmdzKGNvZGUpOgotICAgICMgZW51bWVyYXRlKCkgaXMgbm90IGFuIG9wdGlvbiwgc2luY2Ugd2Ugc29tZXRpbWVzIHByb2Nlc3MKLSAgICAjIG11bHRpcGxlIGVsZW1lbnRzIG9uIGEgc2luZ2xlIHBhc3MgdGhyb3VnaCB0aGUgbG9vcAogICAgIGV4dGVuZGVkX2FyZyA9IDAKLSAgICBuID0gbGVuKGNvZGUpCi0gICAgaSA9IDAKLSAgICB3aGlsZSBpIDwgbjoKKyAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oY29kZSksIDIpOgogICAgICAgICBvcCA9IGNvZGVbaV0KLSAgICAgICAgb2Zmc2V0ID0gaQotICAgICAgICBpID0gaSsxCi0gICAgICAgIGFyZyA9IE5vbmUKICAgICAgICAgaWYgb3AgPj0gSEFWRV9BUkdVTUVOVDoKLSAgICAgICAgICAgIGFyZyA9IGNvZGVbaV0gKyBjb2RlW2krMV0qMjU2ICsgZXh0ZW5kZWRfYXJnCi0gICAgICAgICAgICBleHRlbmRlZF9hcmcgPSAwCi0gICAgICAgICAgICBpID0gaSsyCi0gICAgICAgICAgICBpZiBvcCA9PSBFWFRFTkRFRF9BUkc6Ci0gICAgICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gYXJnKjY1NTM2Ci0gICAgICAgIHlpZWxkIChvZmZzZXQsIG9wLCBhcmcpCisgICAgICAgICAgICBhcmcgPSBjb2RlW2krMV0gfCBleHRlbmRlZF9hcmcKKyAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IChhcmcgPDwgOCkgaWYgb3AgPT0gRVhURU5ERURfQVJHIGVsc2UgMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJnID0gTm9uZQorICAgICAgICB5aWVsZCAoaSwgb3AsIGFyZykKIAogZGVmIGZpbmRsYWJlbHMoY29kZSk6CiAgICAgIiIiRGV0ZWN0IGFsbCBvZmZzZXRzIGluIGEgYnl0ZSBjb2RlIHdoaWNoIGFyZSBqdW1wIHRhcmdldHMuCkBAIC0zNzAsMTQgKzM3OCwxNCBAQAogICAgIGxhYmVscyA9IFtdCiAgICAgZm9yIG9mZnNldCwgb3AsIGFyZyBpbiBfdW5wYWNrX29wYXJncyhjb2RlKToKICAgICAgICAgaWYgYXJnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgbGFiZWwgPSAtMQogICAgICAgICAgICAgaWYgb3AgaW4gaGFzanJlbDoKLSAgICAgICAgICAgICAgICBsYWJlbCA9IG9mZnNldCArIDMgKyBhcmcKKyAgICAgICAgICAgICAgICBsYWJlbCA9IG9mZnNldCArIDIgKyBhcmcKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzamFiczoKICAgICAgICAgICAgICAgICBsYWJlbCA9IGFyZwotICAgICAgICAgICAgaWYgbGFiZWwgPj0gMDoKLSAgICAgICAgICAgICAgICBpZiBsYWJlbCBub3QgaW4gbGFiZWxzOgotICAgICAgICAgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKGxhYmVsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIGxhYmVsczoKKyAgICAgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKGxhYmVsKQogICAgIHJldHVybiBsYWJlbHMKIAogZGVmIGZpbmRsaW5lc3RhcnRzKGNvZGUpOgpAQCAtMzg2LDggKzM5NCw4IEBACiAgICAgR2VuZXJhdGUgcGFpcnMgKG9mZnNldCwgbGluZW5vKSBhcyBkZXNjcmliZWQgaW4gUHl0aG9uL2NvbXBpbGUuYy4KIAogICAgICIiIgotICAgIGJ5dGVfaW5jcmVtZW50cyA9IGxpc3QoY29kZS5jb19sbm90YWJbMDo6Ml0pCi0gICAgbGluZV9pbmNyZW1lbnRzID0gbGlzdChjb2RlLmNvX2xub3RhYlsxOjoyXSkKKyAgICBieXRlX2luY3JlbWVudHMgPSBjb2RlLmNvX2xub3RhYlswOjoyXQorICAgIGxpbmVfaW5jcmVtZW50cyA9IGNvZGUuY29fbG5vdGFiWzE6OjJdCiAKICAgICBsYXN0bGluZW5vID0gTm9uZQogICAgIGxpbmVubyA9IGNvZGUuY29fZmlyc3RsaW5lbm8KQEAgLTM5OCw2ICs0MDYsOSBAQAogICAgICAgICAgICAgICAgIHlpZWxkIChhZGRyLCBsaW5lbm8pCiAgICAgICAgICAgICAgICAgbGFzdGxpbmVubyA9IGxpbmVubwogICAgICAgICAgICAgYWRkciArPSBieXRlX2luY3IKKyAgICAgICAgaWYgbGluZV9pbmNyID49IDB4ODA6CisgICAgICAgICAgICAjIGxpbmVfaW5jcmVtZW50cyBpcyBhbiBhcnJheSBvZiA4LWJpdCBzaWduZWQgaW50ZWdlcnMKKyAgICAgICAgICAgIGxpbmVfaW5jciAtPSAweDEwMAogICAgICAgICBsaW5lbm8gKz0gbGluZV9pbmNyCiAgICAgaWYgbGluZW5vICE9IGxhc3RsaW5lbm86CiAgICAgICAgIHlpZWxkIChhZGRyLCBsaW5lbm8pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CmluZGV4IGJlZDEzODQuLjc4YWU1NzUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5CkBAIC0xNzEsNyArMTcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRpcnBhdGgsIG5hbWUpKQogICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHppcC53cml0ZShwYXRoLCBwYXRoKQotICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oImFkZGluZyAnJXMnIiAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiYWRkaW5nICclcyciLCBwYXRoKQogICAgICAgICAgICAgemlwLmNsb3NlKCkKIAogICAgIHJldHVybiB6aXBfZmlsZW5hbWUKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY21kLnB5IGIvTGliL2Rpc3R1dGlscy9jbWQucHkKaW5kZXggYzg5ZDVlZi4uOTM5Zjc5NSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jbWQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jbWQucHkKQEAgLTIyMSw3ICsyMjEsNyBAQAogICAgICAgICBzZWxmLl9lbnN1cmVfc3RyaW5nbGlrZShvcHRpb24sICJzdHJpbmciLCBkZWZhdWx0KQogCiAgICAgZGVmIGVuc3VyZV9zdHJpbmdfbGlzdChzZWxmLCBvcHRpb24pOgotICAgICAgICAiIiJFbnN1cmUgdGhhdCAnb3B0aW9uJyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncy4gIElmICdvcHRpb24nIGlzCisgICAgICAgIHIiIiJFbnN1cmUgdGhhdCAnb3B0aW9uJyBpcyBhIGxpc3Qgb2Ygc3RyaW5ncy4gIElmICdvcHRpb24nIGlzCiAgICAgICAgIGN1cnJlbnRseSBhIHN0cmluZywgd2Ugc3BsaXQgaXQgZWl0aGVyIG9uIC8sXHMqLyBvciAvXHMrLywgc28KICAgICAgICAgImZvbyBiYXIgYmF6IiwgImZvbyxiYXIsYmF6IiwgYW5kICJmb28sICAgYmFyIGJheiIgYWxsIGJlY29tZQogICAgICAgICBbImZvbyIsICJiYXIiLCAiYmF6Il0uCkBAIC0zMjksOCArMzI5LDcgQEAKICAgICAjIC0tIEV4dGVybmFsIHdvcmxkIG1hbmlwdWxhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgZGVmIHdhcm4oc2VsZiwgbXNnKToKLSAgICAgICAgbG9nLndhcm4oIndhcm5pbmc6ICVzOiAlc1xuIiAlCi0gICAgICAgICAgICAgICAgKHNlbGYuZ2V0X2NvbW1hbmRfbmFtZSgpLCBtc2cpKQorICAgICAgICBsb2cud2Fybigid2FybmluZzogJXM6ICVzXG4iLCBzZWxmLmdldF9jb21tYW5kX25hbWUoKSwgbXNnKQogCiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgZnVuYywgYXJncywgbXNnPU5vbmUsIGxldmVsPTEpOgogICAgICAgICB1dGlsLmV4ZWN1dGUoZnVuYywgYXJncywgbXNnLCBkcnlfcnVuPXNlbGYuZHJ5X3J1bikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKaW5kZXggZjFiZmIyNC4uZTkyNzRkOSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkKQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgaW5zdGFsbC5za2lwX2J1aWxkID0gc2VsZi5za2lwX2J1aWxkCiAgICAgICAgIGluc3RhbGwud2Fybl9kaXIgPSAwCiAKLSAgICAgICAgbG9nLmluZm8oImluc3RhbGxpbmcgdG8gJXMiICUgc2VsZi5iZGlzdF9kaXIpCisgICAgICAgIGxvZy5pbmZvKCJpbnN0YWxsaW5nIHRvICVzIiwgc2VsZi5iZGlzdF9kaXIpCiAgICAgICAgIHNlbGYucnVuX2NvbW1hbmQoJ2luc3RhbGwnKQogCiAgICAgICAgICMgQW5kIG1ha2UgYW4gYXJjaGl2ZSByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CmluZGV4IGIzY2ZlOWMuLmE0YmQ1YTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQpAQCAtMTk5LDcgKzE5OSw3IEBACiAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHNlbGYudGFyZ2V0X3ZlcnNpb24KICAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfdmVyc2lvbjoKICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5za2lwX2J1aWxkLCAiU2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoaXMiCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzeXMudmVyc2lvblswOjNdCisgICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHRhcmdldF92ZXJzaW9uKQogICAgICAgICAgICAgYnVpbGQgPSBzZWxmLmdldF9maW5hbGl6ZWRfY29tbWFuZCgnYnVpbGQnKQogICAgICAgICAgICAgYnVpbGQuYnVpbGRfbGliID0gb3MucGF0aC5qb2luKGJ1aWxkLmJ1aWxkX2Jhc2UsCkBAIC02MjMsNyArNjIzLDcgQEAKICAgICAgICAgY29zdCA9IFB5RGlhbG9nKGRiLCAiRGlza0Nvc3REbGciLCB4LCB5LCB3LCBoLCBtb2RhbCwgdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAiT0siLCAiT0siLCAiT0siLCBiaXRtYXA9RmFsc2UpCiAgICAgICAgIGNvc3QudGV4dCgiVGl0bGUiLCAxNSwgNiwgMjAwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1EaXNrIFNwYWNlIFJlcXVpcmVtZW50cyIpCisgICAgICAgICAgICAgICAgIHIie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQogICAgICAgICBjb3N0LnRleHQoIkRlc2NyaXB0aW9uIiwgMjAsIDIwLCAyODAsIDIwLCAweDMwMDAzLAogICAgICAgICAgICAgICAgICAgIlRoZSBkaXNrIHNwYWNlIHJlcXVpcmVkIGZvciB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzZWxlY3RlZCBmZWF0dXJlcy4iKQogICAgICAgICBjb3N0LnRleHQoIlRleHQiLCAyMCwgNTMsIDMzMCwgNjAsIDMsCkBAIC02NzAsNyArNjcwLDcgQEAKICAgICAgICAgcHJvZ3Jlc3MgPSBQeURpYWxvZyhkYiwgIlByb2dyZXNzRGxnIiwgeCwgeSwgdywgaCwgbW9kZWxlc3MsIHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5jZWwiLCAiQ2FuY2VsIiwgIkNhbmNlbCIsIGJpdG1hcD1GYWxzZSkKICAgICAgICAgcHJvZ3Jlc3MudGV4dCgiVGl0bGUiLCAyMCwgMTUsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAgICAgIntcRGxnRm9udEJvbGQ4fVtQcm9ncmVzczFdIFtQcm9kdWN0TmFtZV0iKQorICAgICAgICAgICAgICAgICAgICAgciJ7XERsZ0ZvbnRCb2xkOH1bUHJvZ3Jlc3MxXSBbUHJvZHVjdE5hbWVdIikKICAgICAgICAgcHJvZ3Jlc3MudGV4dCgiVGV4dCIsIDM1LCA2NSwgMzAwLCAzMCwgMywKICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIHdhaXQgd2hpbGUgdGhlIEluc3RhbGxlciBbUHJvZ3Jlc3MyXSBbUHJvZHVjdE5hbWVdLiAiCiAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgbWF5IHRha2Ugc2V2ZXJhbCBtaW51dGVzLiIpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CmluZGV4IDBjMGUyYzEuLmQzZTFkM2EgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5CkBAIC0xNDEsNyArMTQxLDcgQEAKICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc2VsZi50YXJnZXRfdmVyc2lvbgogICAgICAgICAgICAgaWYgbm90IHRhcmdldF92ZXJzaW9uOgogICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLnNraXBfYnVpbGQsICJTaG91bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyIKLSAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHN5cy52ZXJzaW9uWzA6M10KKyAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgICAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgdGFyZ2V0X3ZlcnNpb24pCiAgICAgICAgICAgICBidWlsZCA9IHNlbGYuZ2V0X2ZpbmFsaXplZF9jb21tYW5kKCdidWlsZCcpCiAgICAgICAgICAgICBidWlsZC5idWlsZF9saWIgPSBvcy5wYXRoLmpvaW4oYnVpbGQuYnVpbGRfYmFzZSwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQppbmRleCAzMzdkZDBiLi5jNmY1MmU2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CkBAIC04MSw3ICs4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcGxhdC1uYW1lIG9ubHkgc3VwcG9ydGVkIG9uIFdpbmRvd3MgKHRyeSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzaW5nICcuL2NvbmZpZ3VyZSAtLWhlbHAnIG9uIHlvdXIgcGxhdGZvcm0pIikKIAotICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCBzeXMudmVyc2lvblswOjNdKQorICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJWQuJWQiICUgKHNlbGYucGxhdF9uYW1lLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKICAgICAgICAgIyBNYWtlIGl0IHNvIFB5dGhvbiAyLnggYW5kIFB5dGhvbiAyLnggd2l0aCAtLXdpdGgtcHlkZWJ1ZyBkb24ndAogICAgICAgICAjIHNoYXJlIHRoZSBzYW1lIGJ1aWxkIGRpcmVjdG9yaWVzLiBEb2luZyBzbyBjb25mdXNlcyB0aGUgYnVpbGQKQEAgLTExNCw3ICsxMTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZW1wJyArIHBsYXRfc3BlY2lmaWVyKQogICAgICAgICBpZiBzZWxmLmJ1aWxkX3NjcmlwdHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuYnVpbGRfc2NyaXB0cyA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX2Jhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMtJyArIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMtJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAKICAgICAgICAgaWYgc2VsZi5leGVjdXRhYmxlIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmV4ZWN1dGFibGUgPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjdXRhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKaW5kZXggN2MyNzhlZi4uNzRkZTc4MiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CkBAIC0zNjQsOSArMzY0LDkgQEAKIAogICAgICAgICAgICAgZXh0X25hbWUsIGJ1aWxkX2luZm8gPSBleHQKIAotICAgICAgICAgICAgbG9nLndhcm4oKCJvbGQtc3R5bGUgKGV4dF9uYW1lLCBidWlsZF9pbmZvKSB0dXBsZSBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgImV4dF9tb2R1bGVzIGZvciBleHRlbnNpb24gJyVzJyIKLSAgICAgICAgICAgICAgICAgICAgICAiLS0gcGxlYXNlIGNvbnZlcnQgdG8gRXh0ZW5zaW9uIGluc3RhbmNlIiAlIGV4dF9uYW1lKSkKKyAgICAgICAgICAgIGxvZy53YXJuKCJvbGQtc3R5bGUgKGV4dF9uYW1lLCBidWlsZF9pbmZvKSB0dXBsZSBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICAgICAiZXh0X21vZHVsZXMgZm9yIGV4dGVuc2lvbiAnJXMnIgorICAgICAgICAgICAgICAgICAgICAgIi0tIHBsZWFzZSBjb252ZXJ0IHRvIEV4dGVuc2lvbiBpbnN0YW5jZSIsIGV4dF9uYW1lKQogCiAgICAgICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UoZXh0X25hbWUsIHN0cikgYW5kCiAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbl9uYW1lX3JlLm1hdGNoKGV4dF9uYW1lKSk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CmluZGV4IDkwYTgzODAuLmNjYzcwZTYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKIAogICAgIGRlZiBjb3B5X3NjcmlwdHMoc2VsZik6Ci0gICAgICAgICIiIkNvcHkgZWFjaCBzY3JpcHQgbGlzdGVkIGluICdzZWxmLnNjcmlwdHMnOyBpZiBpdCdzIG1hcmtlZCBhcyBhCisgICAgICAgIHIiIiJDb3B5IGVhY2ggc2NyaXB0IGxpc3RlZCBpbiAnc2VsZi5zY3JpcHRzJzsgaWYgaXQncyBtYXJrZWQgYXMgYQogICAgICAgICBQeXRob24gc2NyaXB0IGluIHRoZSBVbml4IHdheSAoZmlyc3QgbGluZSBtYXRjaGVzICdmaXJzdF9saW5lX3JlJywKICAgICAgICAgaWUuIHN0YXJ0cyB3aXRoICJcIyEiIGFuZCBjb250YWlucyAicHl0aG9uIiksIHRoZW4gYWRqdXN0IHRoZSBmaXJzdAogICAgICAgICBsaW5lIHRvIHJlZmVyIHRvIHRoZSBjdXJyZW50IFB5dGhvbiBpbnRlcnByZXRlciBhcyB3ZSBjb3B5LgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKaW5kZXggODQ3ZTg1OC4uNGFlMTUzZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CkBAIC05LDcgKzksNyBAQAogdGhpcyBoZWFkZXIgZmlsZSBsaXZlcyIuCiAiIiIKIAotaW1wb3J0IHN5cywgb3MsIHJlCitpbXBvcnQgb3MsIHJlCiAKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IENvbW1hbmQKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCkBAIC0zMzcsNyArMzM3LDcgQEAKICAgICBJZiBoZWFkIGlzIG5vdCBOb25lLCB3aWxsIGJlIGR1bXBlZCBiZWZvcmUgdGhlIGZpbGUgY29udGVudC4KICAgICAiIiIKICAgICBpZiBoZWFkIGlzIE5vbmU6Ci0gICAgICAgIGxvZy5pbmZvKCclcycgJSBmaWxlbmFtZSkKKyAgICAgICAgbG9nLmluZm8oJyVzJywgZmlsZW5hbWUpCiAgICAgZWxzZToKICAgICAgICAgbG9nLmluZm8oaGVhZCkKICAgICBmaWxlID0gb3BlbihmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKaW5kZXggNjdkYjAwNy4uMDI1OGQzZGUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CkBAIC0xNzUsNiArMTc1LDcgQEAKICAgICAgICAgc2VsZi5jb21waWxlID0gTm9uZQogICAgICAgICBzZWxmLm9wdGltaXplID0gTm9uZQogCisgICAgICAgICMgRGVwcmVjYXRlZAogICAgICAgICAjIFRoZXNlIHR3byBhcmUgZm9yIHB1dHRpbmcgbm9uLXBhY2thZ2l6ZWQgZGlzdHJpYnV0aW9ucyBpbnRvIHRoZWlyCiAgICAgICAgICMgb3duIGRpcmVjdG9yeSBhbmQgY3JlYXRpbmcgYSAucHRoIGZpbGUgaWYgaXQgbWFrZXMgc2Vuc2UuCiAgICAgICAgICMgJ2V4dHJhX3BhdGgnIGNvbWVzIGZyb20gdGhlIHNldHVwIGZpbGU7ICdpbnN0YWxsX3BhdGhfZmlsZScgY2FuCkBAIC0yOTAsOCArMjkxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzdF92ZXJzaW9uJzogc2VsZi5kaXN0cmlidXRpb24uZ2V0X3ZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlzdF9mdWxsbmFtZSc6IHNlbGYuZGlzdHJpYnV0aW9uLmdldF9mdWxsbmFtZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uJzogcHlfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9zaG9ydCc6IHB5X3ZlcnNpb25bMDozXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9ub2RvdCc6IHB5X3ZlcnNpb25bMF0gKyBweV92ZXJzaW9uWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX3Nob3J0JzogJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX25vZG90JzogJyVkJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c19wcmVmaXgnOiBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByZWZpeCc6IHByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzX2V4ZWNfcHJlZml4JzogZXhlY19wcmVmaXgsCkBAIC0zNDQsNiArMzQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzJywgJ2RhdGEnLCAnaGVhZGVycycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlcmJhc2UnLCAndXNlcnNpdGUnKQogCisgICAgICAgICMgRGVwcmVjYXRlZAogICAgICAgICAjIFdlbGwsIHdlJ3JlIG5vdCBhY3R1YWxseSBmdWxseSBjb21wbGV0ZWx5IGZpbmFsaXplZCB5ZXQ6IHdlIHN0aWxsCiAgICAgICAgICMgaGF2ZSB0byBkZWFsIHdpdGggJ2V4dHJhX3BhdGgnLCB3aGljaCBpcyB0aGUgaGFjayBmb3IgYWxsb3dpbmcKICAgICAgICAgIyBub24tcGFja2FnaXplZCBtb2R1bGUgZGlzdHJpYnV0aW9ucyAoaGVsbG8sIE51bWVyaWNhbCBQeXRob24hKSB0bwpAQCAtMzg1LDcgKzM4Nyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG9wdF9uYW1lID0gb3B0X25hbWUudHJhbnNsYXRlKGxvbmdvcHRfeGxhdGUpCiAgICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cihzZWxmLCBvcHRfbmFtZSkKLSAgICAgICAgICAgIGxvZy5kZWJ1ZygiICAlczogJXMiICUgKG9wdF9uYW1lLCB2YWwpKQorICAgICAgICAgICAgbG9nLmRlYnVnKCIgICVzOiAlcyIsIG9wdF9uYW1lLCB2YWwpCiAKICAgICBkZWYgZmluYWxpemVfdW5peChzZWxmKToKICAgICAgICAgIiIiRmluYWxpemVzIG9wdGlvbnMgZm9yIHBvc2l4IHBsYXRmb3Jtcy4iIiIKQEAgLTQ5MCw2ICs0OTIsMTAgQEAKICAgICAgICAgICAgIHNlbGYuZXh0cmFfcGF0aCA9IHNlbGYuZGlzdHJpYnV0aW9uLmV4dHJhX3BhdGgKIAogICAgICAgICBpZiBzZWxmLmV4dHJhX3BhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsb2cud2FybigKKyAgICAgICAgICAgICAgICAiRGlzdHJpYnV0aW9uIG9wdGlvbiBleHRyYV9wYXRoIGlzIGRlcHJlY2F0ZWQuICIKKyAgICAgICAgICAgICAgICAiU2VlIGlzc3VlMjc5MTkgZm9yIGRldGFpbHMuIgorICAgICAgICAgICAgKQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmV4dHJhX3BhdGgsIHN0cik6CiAgICAgICAgICAgICAgICAgc2VsZi5leHRyYV9wYXRoID0gc2VsZi5leHRyYV9wYXRoLnNwbGl0KCcsJykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weQppbmRleCBjMmE3ZDY0Li4wZGRjNzM2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weQpAQCAtMjEsMTAgKzIxLDEwIEBACiAKICAgICBkZWYgZmluYWxpemVfb3B0aW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5zZXRfdW5kZWZpbmVkX29wdGlvbnMoJ2luc3RhbGxfbGliJywoJ2luc3RhbGxfZGlyJywnaW5zdGFsbF9kaXInKSkKLSAgICAgICAgYmFzZW5hbWUgPSAiJXMtJXMtcHklcy5lZ2ctaW5mbyIgJSAoCisgICAgICAgIGJhc2VuYW1lID0gIiVzLSVzLXB5JWQuJWQuZWdnLWluZm8iICUgKAogICAgICAgICAgICAgdG9fZmlsZW5hbWUoc2FmZV9uYW1lKHNlbGYuZGlzdHJpYnV0aW9uLmdldF9uYW1lKCkpKSwKICAgICAgICAgICAgIHRvX2ZpbGVuYW1lKHNhZmVfdmVyc2lvbihzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfdmVyc2lvbigpKSksCi0gICAgICAgICAgICBzeXMudmVyc2lvbls6M10KKyAgICAgICAgICAgICpzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgICAgICApCiAgICAgICAgIHNlbGYudGFyZ2V0ID0gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFsbF9kaXIsIGJhc2VuYW1lKQogICAgICAgICBzZWxmLm91dHB1dHMgPSBbc2VsZi50YXJnZXRdCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKaW5kZXggODYzNDNjOC4uMGZhYzk0ZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQpAQCAtNSw3ICs1LDcgQEAKIAogIyBjcmVhdGVkIDIwMDIvMTAvMjEsIFJpY2hhcmQgSm9uZXMKIAotaW1wb3J0IG9zLCBzdHJpbmcsIGdldHBhc3MKK2ltcG9ydCBnZXRwYXNzCiBpbXBvcnQgaW8KIGltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0CiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCkBAIC05NCw3ICs5NCw3IEBACiAgICAgICAgICcnJwogICAgICAgICAjIHNlbmQgdGhlIGluZm8gdG8gdGhlIHNlcnZlciBhbmQgcmVwb3J0IHRoZSByZXN1bHQKICAgICAgICAgKGNvZGUsIHJlc3VsdCkgPSBzZWxmLnBvc3RfdG9fc2VydmVyKHNlbGYuYnVpbGRfcG9zdF9kYXRhKCd2ZXJpZnknKSkKLSAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycgJSAoY29kZSwgcmVzdWx0KSkKKyAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKIAogICAgIGRlZiBzZW5kX21ldGFkYXRhKHNlbGYpOgogICAgICAgICAnJycgU2VuZCB0aGUgbWV0YWRhdGEgdG8gdGhlIHBhY2thZ2UgaW5kZXggc2VydmVyLgpAQCAtMjA1LDcgKzIwNSw3IEBACiAgICAgICAgICAgICAgICAgZGF0YVsnZW1haWwnXSA9IGlucHV0KCcgICBFTWFpbDogJykKICAgICAgICAgICAgIGNvZGUsIHJlc3VsdCA9IHNlbGYucG9zdF90b19zZXJ2ZXIoZGF0YSkKICAgICAgICAgICAgIGlmIGNvZGUgIT0gMjAwOgotICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbG9nLmluZm8oJ1lvdSB3aWxsIHJlY2VpdmUgYW4gZW1haWwgc2hvcnRseS4nKQogICAgICAgICAgICAgICAgIGxvZy5pbmZvKCgnRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gaXQgdG8gJwpAQCAtMjE2LDcgKzIxNiw3IEBACiAgICAgICAgICAgICB3aGlsZSBub3QgZGF0YVsnZW1haWwnXToKICAgICAgICAgICAgICAgICBkYXRhWydlbWFpbCddID0gaW5wdXQoJ1lvdXIgZW1haWwgYWRkcmVzczogJykKICAgICAgICAgICAgIGNvZGUsIHJlc3VsdCA9IHNlbGYucG9zdF90b19zZXJ2ZXIoZGF0YSkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJywgY29kZSwgcmVzdWx0KQogCiAgICAgZGVmIGJ1aWxkX3Bvc3RfZGF0YShzZWxmLCBhY3Rpb24pOgogICAgICAgICAjIGZpZ3VyZSB0aGUgZGF0YSB0byBzZW5kIC0gdGhlIG1ldGFkYXRhIHBsdXMgc29tZSBhZGRpdGlvbmFsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKaW5kZXggN2VhM2Q1Zi4uNGZkMWQ0NyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQpAQCAtMyw3ICszLDYgQEAKIEltcGxlbWVudHMgdGhlIERpc3R1dGlscyAnc2Rpc3QnIGNvbW1hbmQgKGNyZWF0ZSBhIHNvdXJjZSBkaXN0cmlidXRpb24pLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0ICoKIGZyb20gZ2xvYiBpbXBvcnQgZ2xvYgpAQCAtOTIsOSArOTEsNiBAQAogICAgIG5lZ2F0aXZlX29wdCA9IHsnbm8tZGVmYXVsdHMnOiAndXNlLWRlZmF1bHRzJywKICAgICAgICAgICAgICAgICAgICAgJ25vLXBydW5lJzogJ3BydW5lJyB9CiAKLSAgICBkZWZhdWx0X2Zvcm1hdCA9IHsncG9zaXgnOiAnZ3p0YXInLAotICAgICAgICAgICAgICAgICAgICAgICdudCc6ICd6aXAnIH0KLQogICAgIHN1Yl9jb21tYW5kcyA9IFsoJ2NoZWNrJywgY2hlY2tpbmdfbWV0YWRhdGEpXQogCiAgICAgZGVmIGluaXRpYWxpemVfb3B0aW9ucyhzZWxmKToKQEAgLTExMSw3ICsxMDcsNyBAQAogICAgICAgICBzZWxmLm1hbmlmZXN0X29ubHkgPSAwCiAgICAgICAgIHNlbGYuZm9yY2VfbWFuaWZlc3QgPSAwCiAKLSAgICAgICAgc2VsZi5mb3JtYXRzID0gTm9uZQorICAgICAgICBzZWxmLmZvcm1hdHMgPSBbJ2d6dGFyJ10KICAgICAgICAgc2VsZi5rZWVwX3RlbXAgPSAwCiAgICAgICAgIHNlbGYuZGlzdF9kaXIgPSBOb25lCiAKQEAgLTEyNywxMyArMTIzLDYgQEAKICAgICAgICAgICAgIHNlbGYudGVtcGxhdGUgPSAiTUFOSUZFU1QuaW4iCiAKICAgICAgICAgc2VsZi5lbnN1cmVfc3RyaW5nX2xpc3QoJ2Zvcm1hdHMnKQotICAgICAgICBpZiBzZWxmLmZvcm1hdHMgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmZvcm1hdHMgPSBbc2VsZi5kZWZhdWx0X2Zvcm1hdFtvcy5uYW1lXV0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBrbm93IGhvdyB0byBjcmVhdGUgc291cmNlIGRpc3RyaWJ1dGlvbnMgIgotICAgICAgICAgICAgICAgICAgICAgICJvbiBwbGF0Zm9ybSAlcyIgJSBvcy5uYW1lKQogCiAgICAgICAgIGJhZF9mb3JtYXQgPSBhcmNoaXZlX3V0aWwuY2hlY2tfYXJjaGl2ZV9mb3JtYXRzKHNlbGYuZm9ybWF0cykKICAgICAgICAgaWYgYmFkX2Zvcm1hdDoKQEAgLTQyMyw3ICs0MTIsNyBAQAogICAgICAgICAgICAgbG9nLmluZm8obXNnKQogICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlKToKLSAgICAgICAgICAgICAgICBsb2cud2FybigiJyVzJyBub3QgYSByZWd1bGFyIGZpbGUgLS0gc2tpcHBpbmciICUgZmlsZSkKKyAgICAgICAgICAgICAgICBsb2cud2FybigiJyVzJyBub3QgYSByZWd1bGFyIGZpbGUgLS0gc2tpcHBpbmciLCBmaWxlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKGJhc2VfZGlyLCBmaWxlKQogICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKGZpbGUsIGRlc3QsIGxpbms9bGluaykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29yZS5weSBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQppbmRleCBmMDViMzRiLi5kNjAzZDRhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb3JlLnB5CkBAIC0yMDQsMTYgKzIwNCwxNSBAQAogICAgIGdsb2JhbCBfc2V0dXBfc3RvcF9hZnRlciwgX3NldHVwX2Rpc3RyaWJ1dGlvbgogICAgIF9zZXR1cF9zdG9wX2FmdGVyID0gc3RvcF9hZnRlcgogCi0gICAgc2F2ZV9hcmd2ID0gc3lzLmFyZ3YKKyAgICBzYXZlX2FyZ3YgPSBzeXMuYXJndi5jb3B5KCkKICAgICBnID0geydfX2ZpbGVfXyc6IHNjcmlwdF9uYW1lfQotICAgIGwgPSB7fQogICAgIHRyeToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLmFyZ3ZbMF0gPSBzY3JpcHRfbmFtZQogICAgICAgICAgICAgaWYgc2NyaXB0X2FyZ3MgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdID0gc2NyaXB0X2FyZ3MKICAgICAgICAgICAgIHdpdGggb3BlbihzY3JpcHRfbmFtZSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnLCBsKQorICAgICAgICAgICAgICAgIGV4ZWMoZi5yZWFkKCksIGcpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuYXJndiA9IHNhdmVfYXJndgogICAgICAgICAgICAgX3NldHVwX3N0b3BfYWZ0ZXIgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CmluZGV4IGM4Nzk2NDYuLjFjMzY5OTAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5CkBAIC0zNjgsNyArMzY4LDcgQEAKICAgICAgICAgcmV0dXJuIChDT05GSUdfSF9VTkNFUlRBSU4sCiAgICAgICAgICAgICAgICAgImNvdWxkbid0IHJlYWQgJyVzJzogJXMiICUgKGZuLCBleGMuc3RyZXJyb3IpKQogCi1SRV9WRVJTSU9OID0gcmUuY29tcGlsZShiJyhcZCtcLlxkKyhcLlxkKykqKScpCitSRV9WRVJTSU9OID0gcmUuY29tcGlsZShicicoXGQrXC5cZCsoXC5cZCspKiknKQogCiBkZWYgX2ZpbmRfZXhlX3ZlcnNpb24oY21kKToKICAgICAiIiJGaW5kIHRoZSB2ZXJzaW9uIG9mIGFuIGV4ZWN1dGFibGUgYnkgcnVubmluZyBgY21kYCBpbiB0aGUgc2hlbGwuCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2Rpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKaW5kZXggZmZiMzNmZjYuLjYyYTI0NTEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKQEAgLTEwMTgsOCArMTAxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm1haW50YWluZXIiLCAibWFpbnRhaW5lcl9lbWFpbCIsICJ1cmwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIiwgImRlc2NyaXB0aW9uIiwgImxvbmdfZGVzY3JpcHRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyIsICJwbGF0Zm9ybXMiLCAiZnVsbG5hbWUiLCAiY29udGFjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhY3RfZW1haWwiLCAibGljZW5zZSIsICJjbGFzc2lmaWVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImRvd25sb2FkX3VybCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhY3RfZW1haWwiLCAiY2xhc3NpZmllcnMiLCAiZG93bmxvYWRfdXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBFUCAzMTQKICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlkZXMiLCAicmVxdWlyZXMiLCAib2Jzb2xldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weSBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CmluZGV4IDdlZmJiNzQuLmM1MDdkYTMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CkBAIC00LDcgKzQsNiBAQAogbW9kdWxlcyBpbiBzZXR1cCBzY3JpcHRzLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogCiAjIFRoaXMgY2xhc3MgaXMgcmVhbGx5IG9ubHkgdXNlZCBieSB0aGUgImJ1aWxkX2V4dCIgY29tbWFuZCwgc28gaXQgbWlnaHQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CmluZGV4IDY1MjJlNjkuLmM5MmQ1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQpAQCAtMzAyLDIxICszMDIsMjYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuCiAKKyAgICAjIGRpdGNoIHN0YXJ0IGFuZCBlbmQgY2hhcmFjdGVycworICAgIHN0YXJ0LCBfLCBlbmQgPSBnbG9iX3RvX3JlKCdfJykucGFydGl0aW9uKCdfJykKKwogICAgIGlmIHBhdHRlcm46CiAgICAgICAgIHBhdHRlcm5fcmUgPSBnbG9iX3RvX3JlKHBhdHRlcm4pCisgICAgICAgIGFzc2VydCBwYXR0ZXJuX3JlLnN0YXJ0c3dpdGgoc3RhcnQpIGFuZCBwYXR0ZXJuX3JlLmVuZHN3aXRoKGVuZCkKICAgICBlbHNlOgogICAgICAgICBwYXR0ZXJuX3JlID0gJycKIAogICAgIGlmIHByZWZpeCBpcyBub3QgTm9uZToKLSAgICAgICAgIyBkaXRjaCBlbmQgb2YgcGF0dGVybiBjaGFyYWN0ZXIKLSAgICAgICAgZW1wdHlfcGF0dGVybiA9IGdsb2JfdG9fcmUoJycpCi0gICAgICAgIHByZWZpeF9yZSA9IGdsb2JfdG9fcmUocHJlZml4KVs6LWxlbihlbXB0eV9wYXR0ZXJuKV0KKyAgICAgICAgcHJlZml4X3JlID0gZ2xvYl90b19yZShwcmVmaXgpCisgICAgICAgIGFzc2VydCBwcmVmaXhfcmUuc3RhcnRzd2l0aChzdGFydCkgYW5kIHByZWZpeF9yZS5lbmRzd2l0aChlbmQpCisgICAgICAgIHByZWZpeF9yZSA9IHByZWZpeF9yZVtsZW4oc3RhcnQpOiBsZW4ocHJlZml4X3JlKSAtIGxlbihlbmQpXQogICAgICAgICBzZXAgPSBvcy5zZXAKICAgICAgICAgaWYgb3Muc2VwID09ICdcXCc6CiAgICAgICAgICAgICBzZXAgPSByJ1xcJwotICAgICAgICBwYXR0ZXJuX3JlID0gIl4iICsgc2VwLmpvaW4oKHByZWZpeF9yZSwgIi4qIiArIHBhdHRlcm5fcmUpKQorICAgICAgICBwYXR0ZXJuX3JlID0gcGF0dGVybl9yZVtsZW4oc3RhcnQpOiBsZW4ocGF0dGVybl9yZSkgLSBsZW4oZW5kKV0KKyAgICAgICAgcGF0dGVybl9yZSA9IHInJXNcQSVzJXMuKiVzJXMnICUgKHN0YXJ0LCBwcmVmaXhfcmUsIHNlcCwgcGF0dGVybl9yZSwgZW5kKQogICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gcHJlZml4IC0tIHJlc3BlY3QgYW5jaG9yIGZsYWcKICAgICAgICAgaWYgYW5jaG9yOgotICAgICAgICAgICAgcGF0dGVybl9yZSA9ICJeIiArIHBhdHRlcm5fcmUKKyAgICAgICAgICAgIHBhdHRlcm5fcmUgPSByJyVzXEElcycgJSAoc3RhcnQsIHBhdHRlcm5fcmVbbGVuKHN0YXJ0KTpdKQogCiAgICAgcmV0dXJuIHJlLmNvbXBpbGUocGF0dGVybl9yZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQppbmRleCAwYjFmZDE5Li4yMTE5MTI3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CkBAIC03MTYsNyArNzE2LDcgQEAKICAgICAgICAgICAgICAgICByIiIiVkNcZHsyfVwuQ1JUKCJ8JykuKj8oLz58PC9hc3NlbWJseUlkZW50aXR5PikiIiIsCiAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKQogICAgICAgICAgICAgbWFuaWZlc3RfYnVmID0gcmUuc3ViKHBhdHRlcm4sICIiLCBtYW5pZmVzdF9idWYpCi0gICAgICAgICAgICBwYXR0ZXJuID0gIjxkZXBlbmRlbnRBc3NlbWJseT5ccyo8L2RlcGVuZGVudEFzc2VtYmx5PiIKKyAgICAgICAgICAgIHBhdHRlcm4gPSByIjxkZXBlbmRlbnRBc3NlbWJseT5ccyo8L2RlcGVuZGVudEFzc2VtYmx5PiIKICAgICAgICAgICAgIG1hbmlmZXN0X2J1ZiA9IHJlLnN1YihwYXR0ZXJuLCAiIiwgbWFuaWZlc3RfYnVmKQogICAgICAgICAgICAgIyBOb3cgc2VlIGlmIGFueSBvdGhlciBhc3NlbWJsaWVzIGFyZSByZWZlcmVuY2VkIC0gaWYgbm90LCB3ZQogICAgICAgICAgICAgIyBkb24ndCB3YW50IGEgbWFuaWZlc3QgZW1iZWRkZWQuCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CmluZGV4IDU3MzcyNGQuLjhiZjFhNzAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CkBAIC03MCw3ICs3MCw3IEBACiAgICAgbGVhdmluZyBvZmYgdGhlIHBhdGNobGV2ZWwuICBTYW1wbGUgcmV0dXJuIHZhbHVlcyBjb3VsZCBiZSAnMS41JwogICAgIG9yICcyLjInLgogICAgICIiIgotICAgIHJldHVybiBzeXMudmVyc2lvbls6M10KKyAgICByZXR1cm4gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKIAogZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgpAQCAtMjQyLDYgKzI0Miw4IEBACiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIHByb2plY3RfYmFzZSwgIk1ha2VmaWxlIikKICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKICAgICBjb25maWdfZmlsZSA9ICdjb25maWcte317fScuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpLCBidWlsZF9mbGFncykKKyAgICBpZiBoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnKToKKyAgICAgICAgY29uZmlnX2ZpbGUgKz0gJy0lcycgJSBzeXMuaW1wbGVtZW50YXRpb24uX211bHRpYXJjaAogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGliX2RpciwgY29uZmlnX2ZpbGUsICdNYWtlZmlsZScpCiAKIApAQCAtMjc2LDcgKzI3OCw3IEBACiAKICMgUmVnZXhlcyBuZWVkZWQgZm9yIHBhcnNpbmcgTWFrZWZpbGUgKGFuZCBzaW1pbGFyIHN5bnRheGVzLAogIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCi1fdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKK192YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUociIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKIF9maW5kdmFyMV9yeCA9IHJlLmNvbXBpbGUociJcJFwoKFtBLVphLXpdW0EtWmEtejAtOV9dKilcKSIpCiBfZmluZHZhcjJfcnggPSByZS5jb21waWxlKHIiXCR7KFtBLVphLXpdW0EtWmEtejAtOV9dKil9IikKIApAQCAtNDE1LDM4ICs0MTcsMTggQEAKIAogZGVmIF9pbml0X3Bvc2l4KCk6CiAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgotICAgIGcgPSB7fQotICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgotICAgIHRyeToKLSAgICAgICAgZmlsZW5hbWUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQotICAgICAgICBwYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgZykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6Ci0gICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKLQotICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLQotICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIHB5Y29uZmlnLmg6Ci0gICAgdHJ5OgotICAgICAgICBmaWxlbmFtZSA9IGdldF9jb25maWdfaF9maWxlbmFtZSgpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19oKGZpbGUsIGcpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgotICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0KLSAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0KLSAgICAjIE9uIEFJWCwgdGhlcmUgYXJlIHdyb25nIHBhdGhzIHRvIHRoZSBsaW5rZXIgc2NyaXB0cyBpbiB0aGUgTWFrZWZpbGUKLSAgICAjIC0tIHRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgUHl0aG9uIHNvdXJjZSwgYnV0IHdoZW4gaW5zdGFsbGVkCi0gICAgIyB0aGUgc2NyaXB0cyBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnkuCi0gICAgaWYgcHl0aG9uX2J1aWxkOgotICAgICAgICBnWydMRFNIQVJFRCddID0gZ1snQkxEU0hBUkVEJ10KLQorICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSB0aGUgc3lzY29uZmlnIG1vZHVsZQorICAgIG5hbWUgPSBvcy5lbnZpcm9uLmdldCgnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnLAorICAgICAgICAnX3N5c2NvbmZpZ2RhdGFfe2FiaX1fe3BsYXRmb3JtfV97bXVsdGlhcmNofScuZm9ybWF0KAorICAgICAgICBhYmk9c3lzLmFiaWZsYWdzLAorICAgICAgICBwbGF0Zm9ybT1zeXMucGxhdGZvcm0sCisgICAgICAgIG11bHRpYXJjaD1nZXRhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnLCAnJyksCisgICAgKSkKKyAgICBfdGVtcCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWydidWlsZF90aW1lX3ZhcnMnXSwgMCkKKyAgICBidWlsZF90aW1lX3ZhcnMgPSBfdGVtcC5idWlsZF90aW1lX3ZhcnMKICAgICBnbG9iYWwgX2NvbmZpZ192YXJzCi0gICAgX2NvbmZpZ192YXJzID0gZworICAgIF9jb25maWdfdmFycyA9IHt9CisgICAgX2NvbmZpZ192YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCiAKIAogZGVmIF9pbml0X250KCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQppbmRleCBlOTc5NWVlLi5kN2M5ZmViIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKQEAgLTksOCArOSw2IEBACiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJkaXN0X3JwbSBpbXBvcnQgYmRpc3RfcnBtCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQotZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHNwYXduCi1mcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgogCiBTRVRVUF9QWSA9ICIiIlwKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKaW5kZXggMzM5MWYzNi4uYjAyMGE1YiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQpAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICAjIGJ1aWxkX3BsYXRsaWIgaXMgJ2J1aWxkL2xpYi5wbGF0Zm9ybS14LnhbLXB5ZGVidWddJwogICAgICAgICAjIGV4YW1wbGVzOgogICAgICAgICAjICAgYnVpbGQvbGliLm1hY29zeC0xMC4zLWkzODYtMi43Ci0gICAgICAgIHBsYXRfc3BlYyA9ICcuJXMtJXMnICUgKGNtZC5wbGF0X25hbWUsIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgIHBsYXRfc3BlYyA9ICcuJXMtJWQuJWQnICUgKGNtZC5wbGF0X25hbWUsICpzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgaWYgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY21kLmJ1aWxkX3BsYXRsaWIuZW5kc3dpdGgoJy1weWRlYnVnJykpCiAgICAgICAgICAgICBwbGF0X3NwZWMgKz0gJy1weWRlYnVnJwpAQCAtNDIsNyArNDIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5idWlsZF90ZW1wLCB3YW50ZWQpCiAKICAgICAgICAgIyBidWlsZF9zY3JpcHRzIGlzIGJ1aWxkL3NjcmlwdHMteC54Ci0gICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbihjbWQuYnVpbGRfYmFzZSwgJ3NjcmlwdHMtJyArICBzeXMudmVyc2lvblswOjNdKQorICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cy0lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuYnVpbGRfc2NyaXB0cywgd2FudGVkKQogCiAgICAgICAgICMgZXhlY3V0YWJsZSBpcyBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjdXRhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKaW5kZXggZjNkZjU2NC4uNmJlMGNhMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CkBAIC0xNjYsNyArMTY2LDYgQEAKICAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogCi0gICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKICAgICAgICAgcHlfaW5jbHVkZSA9IHN5c2NvbmZpZy5nZXRfcHl0aG9uX2luYygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHlfaW5jbHVkZSwgY21kLmluY2x1ZGVfZGlycykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CmluZGV4IDE4MjgzZGMuLjA3MTJlOTIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKQEAgLTE2OCw3ICsxNjgsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBvbGRfZG9udF93cml0ZV9ieXRlY29kZQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywgc2VsZi5sb2dzWzBdWzFdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dzWzBdWzFdICUgc2VsZi5sb2dzWzBdWzJdKQogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKaW5kZXggYjY0ZjMwMC4uYzYwNWFmZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5jbGVhbi4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZ2V0cGFzcwogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmNsZWFuIGltcG9ydCBjbGVhbgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CmluZGV4IGEzODQ0OTcuLjc3ZWY3ODggMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMucHlwaXJjLnB5cGlyYy4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKIAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgUHlQSVJDQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgRGlzdHJpYnV0aW9uCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CmluZGV4IDY1NDIyN2MuLjI3Y2U3MzIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CkBAIC0yOSw2ICsyOSwyMSBAQAogc2V0dXAoKQogIiIiCiAKK3NldHVwX2RvZXNfbm90aGluZyA9ICIiIlwKK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCitzZXR1cCgpCisiIiIKKworCitzZXR1cF9kZWZpbmVzX3N1YmNsYXNzID0gIiIiXAorZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKK2Zyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbCBpbXBvcnQgaW5zdGFsbCBhcyBfaW5zdGFsbAorCitjbGFzcyBpbnN0YWxsKF9pbnN0YWxsKToKKyAgICBzdWJfY29tbWFuZHMgPSBfaW5zdGFsbC5zdWJfY29tbWFuZHMgKyBbJ2NtZCddCisKK3NldHVwKGNtZGNsYXNzPXsnaW5zdGFsbCc6IGluc3RhbGx9KQorIiIiCiAKIGNsYXNzIENvcmVUZXN0Q2FzZShzdXBwb3J0LkVudmlyb25HdWFyZCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02Nyw2ICs4MiwyMSBAQAogICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCiAgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX3VzaW5nX19fZmlsZV9fKSkKIAorICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9wcmVzZXJ2ZXNfc3lzX2FyZ3Yoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHJ1bl9zZXR1cCBkb2VzIG5vdCBjbG9iYmVyIHN5cy5hcmd2CisgICAgICAgIGFyZ3ZfY29weSA9IHN5cy5hcmd2LmNvcHkoKQorICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCisgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX2RvZXNfbm90aGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmFyZ3YsIGFyZ3ZfY29weSkKKworICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9kZWZpbmVzX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2NyaXB0IGNhbiB1c2UgX19maWxlX187IGlmIHRoYXQncyBtaXNzaW5nLCB0aGUgdGVzdAorICAgICAgICAjIHNldHVwLnB5IHNjcmlwdCB3aWxsIHJhaXNlIE5hbWVFcnJvci4KKyAgICAgICAgZGlzdCA9IGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfZGVmaW5lc19zdWJjbGFzcykpCisgICAgICAgIGluc3RhbGwgPSBkaXN0LmdldF9jb21tYW5kX29iaignaW5zdGFsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NtZCcsIGluc3RhbGwuc3ViX2NvbW1hbmRzKQorCiAgICAgZGVmIHRlc3RfcnVuX3NldHVwX3VzZXNfY3VycmVudF9kaXIoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IHRoZSBzZXR1cCBzY3JpcHQgaXMgcnVuIHdpdGggdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgYXMgaXRzIG93biBjdXJyZW50IGRpcmVjdG9yeTsgdGhpcyB3YXMgdGVtcG9yYXJpbHkgYnJva2VuIGJ5IGEKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CmluZGV4IDg1NjkyMTYuLjlkYzg2OWQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQpAQCAtMywxMSArMywxMCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCi1pbXBvcnQgc3VicHJvY2VzcwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgY3lnd2luY2NvbXBpbGVyCi1mcm9tIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgaW1wb3J0IChDeWd3aW5DQ29tcGlsZXIsIGNoZWNrX2NvbmZpZ19oLAorZnJvbSBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGltcG9ydCAoY2hlY2tfY29uZmlnX2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9PSywgQ09ORklHX0hfTk9UT0ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9VTkNFUlRBSU4sIGdldF92ZXJzaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tc3ZjcikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQppbmRleCAzZTFjMzY2Li5jNmZhZTM5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5kZXBfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIsIG5ld2VyX3BhaXJ3aXNlLCBuZXdlcl9ncm91cAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNGaWxlRXJyb3IKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CmluZGV4IGE2ZDA0ZjAuLjAzMDQwYWYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuZmlsZV91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBlcnJubwogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKaW5kZXggMzkxYWYzYy4uYzcxMzQyZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQpAQCAtNTEsMTQgKzUxLDE0IEBACiAKICAgICAgICAgZm9yIGdsb2IsIHJlZ2V4IGluICgKICAgICAgICAgICAgICMgc2ltcGxlIGNhc2VzCi0gICAgICAgICAgICAoJ2ZvbyonLCByJ2Zvb1teJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/Jywgcidmb29bXiUoc2VwKXNdXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/PycsIHInZm9vW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCisgICAgICAgICAgICAoJ2ZvbyonLCByJyg/czpmb29bXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKCdmb28/JywgcicoP3M6Zm9vW14lKHNlcClzXSlcWicpLAorICAgICAgICAgICAgKCdmb28/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdKVxaJyksCiAgICAgICAgICAgICAjIHNwZWNpYWwgY2FzZXMKLSAgICAgICAgICAgIChyJ2Zvb1xcKicsIHInZm9vXFxcXFteJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKHInZm9vXFxcKicsIHInZm9vXFxcXFxcW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8/Pz8nLCByJ2Zvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCi0gICAgICAgICAgICAocidmb29cXD8/Jywgcidmb29cXFxcW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJykpOgorICAgICAgICAgICAgKHInZm9vXFwqJywgcicoP3M6Zm9vXFxcXFteJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAocidmb29cXFwqJywgcicoP3M6Zm9vXFxcXFxcW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgICgnZm9vPz8/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc10pXFonKSwKKyAgICAgICAgICAgIChyJ2Zvb1xcPz8nLCByJyg/czpmb29cXFxcW14lKHNlcClzXVteJShzZXApc10pXFonKSk6CiAgICAgICAgICAgICByZWdleCA9IHJlZ2V4ICUgeydzZXAnOiBzZXB9CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JfdG9fcmUoZ2xvYiksIHJlZ2V4KQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQppbmRleCA0ZDhjMDBhLi4zMmFiMjk2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhIGltcG9ydCBpbnN0YWxsX2RhdGEKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQppbmRleCBkOTUzMTU3Li4yMjE3YjMyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzIGltcG9ydCBpbnN0YWxsX2hlYWRlcnMKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKaW5kZXggNTM3OGFhOC4uZmRhNjMxNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQpAQCAtMTA0LDcgKzEwNCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9sZF9kb250X3dyaXRlX2J5dGVjb2RlCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLCBzZWxmLmxvZ3NbMF1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ3NbMF1bMV0gJSBzZWxmLmxvZ3NbMF1bMl0pCiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQppbmRleCA2YzdlYjIwLi41ZWRjMjRhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CkBAIC0xLDExICsxLDExIEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnNwYXduLiIiIgogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVuaXhfc2hlbGwKIAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IF9udF9xdW90ZV9hcmdzCi1mcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24sIGZpbmRfZXhlY3V0YWJsZQorZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIApAQCAtMzAsOSArMzAsOSBAQAogCiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIGV4ZWN1dGFibGUKICAgICAgICAgIyB0aHJvdWdoIHRoZSBzaGVsbCB0aGF0IHJldHVybnMgMQotICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5zaCcpCi0gICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyEvYmluL3NoXG5leGl0IDEnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhJXNcbmV4aXQgMScgJSB1bml4X3NoZWxsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5iYXQnKQogICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJ2V4aXQgMScpCkBAIC00MSw5ICs0MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpc3R1dGlsc0V4ZWNFcnJvciwgc3Bhd24sIFtleGVdKQogCiAgICAgICAgICMgbm93IHNvbWV0aGluZyB0aGF0IHdvcmtzCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLnNoJykKLSAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjIS9iaW4vc2hcbmV4aXQgMCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyElc1xuZXhpdCAwJyAlIHVuaXhfc2hlbGwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLmJhdCcpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnZXhpdCAwJykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKaW5kZXggZTE3MWVlOS4uZWZiYTI3ZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKQEAgLTEsNSArMSw0IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIuIiIiCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQppbmRleCA0NzgzMzZmLi45M2FiYWQzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQpAQCAtNCw3ICs0LDcgQEAKIHRoYXQgKG9wdGlvbmFsbHkpIHRha2VzIGNhcmUgb2Ygc3RyaXBwaW5nIGNvbW1lbnRzLCBpZ25vcmluZyBibGFuawogbGluZXMsIGFuZCBqb2luaW5nIGxpbmVzIHdpdGggYmFja3NsYXNoZXMuIiIiCiAKLWltcG9ydCBzeXMsIG9zLCBpbworaW1wb3J0IHN5cywgaW8KIAogCiBjbGFzcyBUZXh0RmlsZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQppbmRleCBlNDIzMzI1Li5mZGNmNmZhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CkBAIC03LDggKzcsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBpbXBvcnRsaWIudXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgpAQCAtMzUwLDYgKzM1MCwxMSBAQAogICAgIGdlbmVyYXRlZCBpbiBpbmRpcmVjdCBtb2RlOyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcsIGxlYXZlCiAgICAgaXQgc2V0IHRvIE5vbmUuCiAgICAgIiIiCisKKyAgICAjIExhdGUgaW1wb3J0IHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZTogX3Bvc2l4c3VicHJvY2VzcyBpcyBidWlsdCBieQorICAgICMgc2V0dXAucHksIGJ1dCBzZXR1cC5weSB1c2VzIGRpc3R1dGlscy4KKyAgICBpbXBvcnQgc3VicHJvY2VzcworCiAgICAgIyBub3RoaW5nIGlzIGRvbmUgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgVHJ1ZQogICAgIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlOgogICAgICAgICByYWlzZSBEaXN0dXRpbHNCeXRlQ29tcGlsZUVycm9yKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZC4nKQpAQCAtNDEyLDExICs0MTcsOSBAQAogCiAgICAgICAgICAgICBzY3JpcHQuY2xvc2UoKQogCi0gICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgc2NyaXB0X25hbWVdCi0gICAgICAgIGlmIG9wdGltaXplID09IDE6Ci0gICAgICAgICAgICBjbWQuaW5zZXJ0KDEsICItTyIpCi0gICAgICAgIGVsaWYgb3B0aW1pemUgPT0gMjoKLSAgICAgICAgICAgIGNtZC5pbnNlcnQoMSwgIi1PTyIpCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZV0KKyAgICAgICAgY21kLmV4dGVuZChzdWJwcm9jZXNzLl9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKKyAgICAgICAgY21kLmFwcGVuZChzY3JpcHRfbmFtZSkKICAgICAgICAgc3Bhd24oY21kLCBkcnlfcnVuPWRyeV9ydW4pCiAgICAgICAgIGV4ZWN1dGUob3MucmVtb3ZlLCAoc2NyaXB0X25hbWUsKSwgInJlbW92aW5nICVzIiAlIHNjcmlwdF9uYW1lLAogICAgICAgICAgICAgICAgIGRyeV9ydW49ZHJ5X3J1bikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weSBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQppbmRleCBiMGRkOWY0Li4wNjJjOThmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKKysrIGIvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CkBAIC0xNTQsNyArMTU0LDcgQEAKICAgICBnbG9iYWwgX3Byb3Zpc2lvbl9yeAogICAgIGlmIF9wcm92aXNpb25fcnggaXMgTm9uZToKICAgICAgICAgX3Byb3Zpc2lvbl9yeCA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAiKFthLXpBLVpfXVx3Kig/OlwuW2EtekEtWl9dXHcqKSopKD86XHMqXChccyooW14pXHNdKylccypcKSk/JCIsCisgICAgICAgICAgICByIihbYS16QS1aX11cdyooPzpcLlthLXpBLVpfXVx3KikqKSg/OlxzKlwoXHMqKFteKVxzXSspXHMqXCkpPyQiLAogICAgICAgICAgICAgcmUuQVNDSUkpCiAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcCgpCiAgICAgbSA9IF9wcm92aXNpb25fcngubWF0Y2godmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IDM4ZmRkODAuLjBiNzg1NDQgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC0zODEsMTIgKzM4MSwxNSBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0CiAKICMgW1hYXSBOb3JtYWxpemUgd2l0aCByZXNwZWN0IHRvIG9zLnBhdGgucGFyZGlyPwotZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHBhdGgpOgorZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHRlc3RfcGF0aCk6CiAgICAgaWYgbm90IGluc3BlY3QuaXNtb2R1bGUobW9kdWxlKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBhIG1vZHVsZTogJXInICUgbW9kdWxlKQotICAgIGlmIHBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgIGlmIHRlc3RfcGF0aC5zdGFydHN3aXRoKCcvJyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01vZHVsZS1yZWxhdGl2ZSBmaWxlcyBtYXkgbm90IGhhdmUgYWJzb2x1dGUgcGF0aHMnKQogCisgICAgIyBOb3JtYWxpemUgdGhlIHBhdGguIE9uIFdpbmRvd3MsIHJlcGxhY2UgIi8iIHdpdGggIlwiLgorICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbigqKHRlc3RfcGF0aC5zcGxpdCgnLycpKSkKKwogICAgICMgRmluZCB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBwYXRoLgogICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKICAgICAgICAgIyBBIG5vcm1hbCBtb2R1bGUvcGFja2FnZQpAQCAtMzk4LDEzICs0MDEsMTkgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJhc2VkaXIgPSBvcy5jdXJkaXIKICAgICBlbHNlOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG1vZHVsZS5fX3BhdGhfXzoKKyAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIHRlc3RfcGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmdWxscGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxscGF0aAorCiAgICAgICAgICMgQSBtb2R1bGUgdy9vIF9fZmlsZV9fICh0aGlzIGluY2x1ZGVzIGJ1aWx0aW5zKQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZXNvbHZlIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBtb2R1bGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICIlciAoaXQgaGFzIG5vIF9fZmlsZV9fKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAlIG1vZHVsZS5fX25hbWVfXykKIAotICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSBwYXRoLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZWRpciwgKihwYXRoLnNwbGl0KCcvJykpKQorICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSB0ZXN0IHBhdGguCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlZGlyLCB0ZXN0X3BhdGgpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIDIuIEV4YW1wbGUgJiBEb2NUZXN0CkBAIC03NTYsNyArNzY1LDcgQEAKIAogICAgICMgVGhpcyByZWd1bGFyIGV4cHJlc3Npb24gZmluZHMgdGhlIGluZGVudGF0aW9uIG9mIGV2ZXJ5IG5vbi1ibGFuawogICAgICMgbGluZSBpbiBhIHN0cmluZy4KLSAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZSgnXihbIF0qKSg/PVxTKScsIHJlLk1VTFRJTElORSkKKyAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZShyJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCiAKICAgICBkZWYgX21pbl9pbmRlbnQoc2VsZiwgcyk6CiAgICAgICAgICJSZXR1cm4gdGhlIG1pbmltdW0gaW5kZW50YXRpb24gb2YgYW55IG5vbi1ibGFuayBsaW5lIGluIGBzYCIKQEAgLTEwOTcsNyArMTEwNiw3IEBACiAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIHNvdXJjZV9saW5lcyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8rMQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKF58Lio6KVxzKlx3KigifFwnKScpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKF58Lio6KVxzKlx3KigifFwnKScpCiAgICAgICAgICAgICBmb3IgbGluZW5vIGluIHJhbmdlKGxpbmVubywgbGVuKHNvdXJjZV9saW5lcykpOgogICAgICAgICAgICAgICAgIGlmIHBhdC5tYXRjaChzb3VyY2VfbGluZXNbbGluZW5vXSk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KQEAgLTE1OTksMTEgKzE2MDgsMTEgQEAKICAgICAgICAgIyBibGFuayBsaW5lLCB1bmxlc3MgdGhlIERPTlRfQUNDRVBUX0JMQU5LTElORSBmbGFnIGlzIHVzZWQuCiAgICAgICAgIGlmIG5vdCAob3B0aW9uZmxhZ3MgJiBET05UX0FDQ0VQVF9CTEFOS0xJTkUpOgogICAgICAgICAgICAgIyBSZXBsYWNlIDxCTEFOS0xJTkU+IGluIHdhbnQgd2l0aCBhIGJsYW5rIGxpbmUuCi0gICAgICAgICAgICB3YW50ID0gcmUuc3ViKCcoP20pXiVzXHMqPyQnICUgcmUuZXNjYXBlKEJMQU5LTElORV9NQVJLRVIpLAorICAgICAgICAgICAgd2FudCA9IHJlLnN1YihyJyg/bSleJXNccyo/JCcgJSByZS5lc2NhcGUoQkxBTktMSU5FX01BUktFUiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCB3YW50KQogICAgICAgICAgICAgIyBJZiBhIGxpbmUgaW4gZ290IGNvbnRhaW5zIG9ubHkgc3BhY2VzLCB0aGVuIHJlbW92ZSB0aGUKICAgICAgICAgICAgICMgc3BhY2VzLgotICAgICAgICAgICAgZ290ID0gcmUuc3ViKCcoP20pXlxzKj8kJywgJycsIGdvdCkKKyAgICAgICAgICAgIGdvdCA9IHJlLnN1YihyJyg/bSleXHMqPyQnLCAnJywgZ290KQogICAgICAgICAgICAgaWYgZ290ID09IHdhbnQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IDVkZjk1MTEuLjU3ZDAxZmIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTY1Miw4ICs2NTIsOCBAQAogICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKICAgICAgICAgICAgIHJldHVybiBzdHIodmFsdWUpCiAgICAgICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgJ1woJykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsICdcKScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygnLCByJ1woJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsIHInXCknKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNvbnRlbnQoc2VsZik6CkBAIC0xMzU2LDE1ICsxMzU2LDE1IEBACiAKIF93c3Bfc3BsaXR0ZXIgPSByZS5jb21waWxlKHInKFt7fV0rKScuZm9ybWF0KCcnLmpvaW4oV1NQKSkpLnNwbGl0CiBfbm9uX2F0b21fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCi0gICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUT01fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fcHJpbnRhYmxlX2ZpbmRlciA9IHJlLmNvbXBpbGUociJbXHgwMC1ceDIwXHg3Rl0iKS5maW5kYWxsCiBfbm9uX3Rva2VuX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJyxyJ1xdJykpKS5tYXRjaAogX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCiAgICAgJycuam9pbihFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIAogZGVmIF92YWxpZGF0ZV94dGV4dCh4dGV4dCk6CiAgICAgIiIiSWYgaW5wdXQgdG9rZW4gY29udGFpbnMgQVNDSUkgbm9uLXByaW50YWJsZXMsIHJlZ2lzdGVyIGEgZGVmZWN0LiIiIgpAQCAtMTUxNyw3ICsxNTE3LDcgQEAKICAgICByZXR1cm4gdW5zdHJ1Y3R1cmVkCiAKIGRlZiBnZXRfcXBfY3RleHQodmFsdWUpOgotICAgICIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CisgICAgciIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CiAKICAgICBUaGlzIGlzIG5vdCB0aGUgUkZDIGN0ZXh0LCBzaW5jZSB3ZSBhcmUgaGFuZGxpbmcgbmVzdGVkIGNvbW1lbnRzIGluIGNvbW1lbnQKICAgICBhbmQgdW5xdW90aW5nIHF1b3RlZC1wYWlycyBoZXJlLiAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSAnKCknCkBAIC0xODc4LDcgKzE4NzgsNyBAQAogICAgIHJldHVybiBvYnNfbG9jYWxfcGFydCwgdmFsdWUKIAogZGVmIGdldF9kdGV4dCh2YWx1ZSk6Ci0gICAgIiIiIGR0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCBbIF0+IC8gb2JzLWR0ZXh0CisgICAgciIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAogICAgICAgICBvYnMtZHRleHQgPSBvYnMtTk8tV1MtQ1RMIC8gcXVvdGVkLXBhaXIKIAogICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycywgYnV0IGlmIHdlIGZpbmQgYW55CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKaW5kZXggYzBkOThhNC4uZGY0NjQ5NiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpAQCAtMTU0LDYgKzE1NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVzc2FnZSBpcyBiZWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZCBieSBhIGdlbmVyYXRvci4gRGVmYXVsdDogVHJ1ZS4KIAorICAgIG1lc3NhZ2VfZmFjdG9yeSAgICAgLS0gdGhlIGNsYXNzIHRvIHVzZSB0byBjcmVhdGUgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBpcyBOb25lLCB0aGUgZGVmYXVsdCBpcyBNZXNzYWdlLgorCiAgICAgIiIiCiAKICAgICByYWlzZV9vbl9kZWZlY3QgPSBGYWxzZQpAQCAtMTYxLDYgKzE2NCw3IEBACiAgICAgY3RlX3R5cGUgPSAnOGJpdCcKICAgICBtYXhfbGluZV9sZW5ndGggPSA3OAogICAgIG1hbmdsZV9mcm9tXyA9IEZhbHNlCisgICAgbWVzc2FnZV9mYWN0b3J5ID0gTm9uZQogCiAgICAgZGVmIGhhbmRsZV9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgogICAgICAgICAiIiJCYXNlZCBvbiBwb2xpY3ksIGVpdGhlciByYWlzZSBkZWZlY3Qgb3IgY2FsbCByZWdpc3Rlcl9kZWZlY3QuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkgYi9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKaW5kZXggYjk4Y2UyNy4uYjkwNGRlZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CisrKyBiL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQpAQCAtMTQyLDcgKzE0Miw3IEBACiBkZWYgX2VuY29kZV90ZXh0KHN0cmluZywgY2hhcnNldCwgY3RlLCBwb2xpY3kpOgogICAgIGxpbmVzID0gc3RyaW5nLmVuY29kZShjaGFyc2V0KS5zcGxpdGxpbmVzKCkKICAgICBsaW5lc2VwID0gcG9saWN5LmxpbmVzZXAuZW5jb2RlKCdhc2NpaScpCi0gICAgZGVmIGVtYmVkZWRfYm9keShsaW5lcyk6IHJldHVybiBsaW5lc2VwLmpvaW4obGluZXMpICsgbGluZXNlcAorICAgIGRlZiBlbWJlZGRlZF9ib2R5KGxpbmVzKTogcmV0dXJuIGxpbmVzZXAuam9pbihsaW5lcykgKyBsaW5lc2VwCiAgICAgZGVmIG5vcm1hbF9ib2R5KGxpbmVzKTogcmV0dXJuIGInXG4nLmpvaW4obGluZXMpICsgYidcbicKICAgICBpZiBjdGU9PU5vbmU6CiAgICAgICAgICMgVXNlIGhldXJpc3RpY3MgdG8gZGVjaWRlIG9uIHRoZSAiYmVzdCIgZW5jb2RpbmcuCkBAIC0xNTMsNyArMTUzLDcgQEAKICAgICAgICAgaWYgKHBvbGljeS5jdGVfdHlwZSA9PSAnOGJpdCcgYW5kCiAgICAgICAgICAgICAgICAgbWF4KGxlbih4KSBmb3IgeCBpbiBsaW5lcykgPD0gcG9saWN5Lm1heF9saW5lX2xlbmd0aCk6CiAgICAgICAgICAgICByZXR1cm4gJzhiaXQnLCBub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQotICAgICAgICBzbmlmZiA9IGVtYmVkZWRfYm9keShsaW5lc1s6MTBdKQorICAgICAgICBzbmlmZiA9IGVtYmVkZGVkX2JvZHkobGluZXNbOjEwXSkKICAgICAgICAgc25pZmZfcXAgPSBxdW9wcmltaW1lLmJvZHlfZW5jb2RlKHNuaWZmLmRlY29kZSgnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgICAgICAgc25pZmZfYmFzZTY0ID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzbmlmZikKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICBkYXRhID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdsYXRpbi0xJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6Ci0gICAgICAgIGRhdGEgPSBfZW5jb2RlX2Jhc2U2NChlbWJlZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQorICAgICAgICBkYXRhID0gX2VuY29kZV9iYXNlNjQoZW1iZWRkZWRfYm9keShsaW5lcyksIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHt9Ii5mb3JtYXQoY3RlKSkKICAgICByZXR1cm4gY3RlLCBkYXRhCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weSBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CmluZGV4IDBiMzEyZTUuLjdjMDdjYTggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CkBAIC0yNCwxNSArMjQsMTQgQEAKIGltcG9ydCByZQogCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKIGZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotTkxDUkUgPSByZS5jb21waWxlKCdcclxufFxyfFxuJykKLU5MQ1JFX2JvbCA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCi1OTENSRV9lb2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbilcWicpCi1OTENSRV9jcmFjayA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCitOTENSRSA9IHJlLmNvbXBpbGUocidcclxufFxyfFxuJykKK05MQ1JFX2JvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbiknKQorTkxDUkVfZW9sID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKVxaJykKK05MQ1JFX2NyYWNrID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKScpCiAjIFJGQyAyODIyICQzLjYuOCBPcHRpb25hbCBmaWVsZHMuICBmdGV4dCBpcyAlZDMzLTU3IC8gJWQ1OS0xMjYsIEFueSBjaGFyYWN0ZXIKICMgZXhjZXB0IGNvbnRyb2xzLCBTUCwgYW5kICI6Ii4KIGhlYWRlclJFID0gcmUuY29tcGlsZShyJ14oRnJvbSB8W1wwNDEtXDA3MVwwNzMtXDE3Nl0qOnxbXHQgXSknKQpAQCAtMTQ4LDEzICsxNDcsMTEgQEAKICAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKICAgICAgICAgc2VsZi5fb2xkX3N0eWxlX2ZhY3RvcnkgPSBGYWxzZQogICAgICAgICBpZiBfZmFjdG9yeSBpcyBOb25lOgotICAgICAgICAgICAgIyBXaGF0IHRoaXMgc2hvdWxkIGJlOgotICAgICAgICAgICAgI3NlbGYuX2ZhY3RvcnkgPSBwb2xpY3kuZGVmYXVsdF9tZXNzYWdlX2ZhY3RvcnkKLSAgICAgICAgICAgICMgYnV0LCBiZWNhdXNlIHdlIGFyZSBwb3N0IDMuNCBmZWF0dXJlIGZyZWV6ZSwgZml4IHdpdGggdGVtcCBoYWNrOgotICAgICAgICAgICAgaWYgc2VsZi5wb2xpY3kgaXMgY29tcGF0MzI6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IG1lc3NhZ2UuTWVzc2FnZQorICAgICAgICAgICAgaWYgcG9saWN5Lm1lc3NhZ2VfZmFjdG9yeSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBNZXNzYWdlCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBtZXNzYWdlLkVtYWlsTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBwb2xpY3kubWVzc2FnZV9mYWN0b3J5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gX2ZhY3RvcnkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CmluZGV4IDI1NjI3OGQuLmFlNjcwYzIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKKysrIGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQpAQCAtNDQ4LDcgKzQ0OCw4IEBACiAgICAgTGlrZSB0aGUgR2VuZXJhdG9yIGJhc2UgY2xhc3MsIGV4Y2VwdCB0aGF0IG5vbi10ZXh0IHBhcnRzIGFyZSBzdWJzdGl0dXRlZAogICAgIHdpdGggYSBmb3JtYXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFydC4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgZm10PU5vbmUsICosCisgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiTGlrZSBHZW5lcmF0b3IuX19pbml0X18oKSBleGNlcHQgdGhhdCBhbiBhZGRpdGlvbmFsIG9wdGlvbmFsCiAgICAgICAgIGFyZ3VtZW50IGlzIGFsbG93ZWQuCiAKQEAgLTQ3MCw3ICs0NzEsOCBAQAogCiAgICAgICAgIFtOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdCiAgICAgICAgICIiIgotICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuKQorICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeSkKICAgICAgICAgaWYgZm10IGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9mbXQgPSBfRk1UCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVyLnB5IGIvTGliL2VtYWlsL2hlYWRlci5weQppbmRleCA2ODIwZWExLi5jN2IyZGQ5IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVyLnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXIucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogIyBGaW5kIGEgaGVhZGVyIGVtYmVkZGVkIGluIGEgcHV0YXRpdmUgaGVhZGVyIHZhbHVlLiAgVXNlZCB0byBjaGVjayBmb3IKICMgaGVhZGVyIGluamVjdGlvbiBhdHRhY2suCi1fZW1iZWRlZF9oZWFkZXIgPSByZS5jb21waWxlKHInXG5bXiBcdF0rOicpCitfZW1iZWRkZWRfaGVhZGVyID0gcmUuY29tcGlsZShyJ1xuW14gXHRdKzonKQogCiAKIAwKQEAgLTM4NSw3ICszODUsNyBAQAogICAgICAgICBpZiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQogICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlci5fc3RyKGxpbmVzZXApCi0gICAgICAgIGlmIF9lbWJlZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgorICAgICAgICBpZiBfZW1iZWRkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgICByYWlzZSBIZWFkZXJQYXJzZUVycm9yKCJoZWFkZXIgdmFsdWUgYXBwZWFycyB0byBjb250YWluICIKICAgICAgICAgICAgICAgICAiYW4gZW1iZWRkZWQgaGVhZGVyOiB7IXJ9Ii5mb3JtYXQodmFsdWUpKQogICAgICAgICByZXR1cm4gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5IGIvTGliL2VtYWlsL21lc3NhZ2UucHkKaW5kZXggNGIwNDI4My4uYjY1MTJmMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21lc3NhZ2UucHkKQEAgLTQsMTggKzQsMTcgQEAKIAogIiIiQmFzaWMgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBlbWFpbCBwYWNrYWdlIG9iamVjdCBtb2RlbC4iIiIKIAotX19hbGxfXyA9IFsnTWVzc2FnZSddCitfX2FsbF9fID0gWydNZXNzYWdlJywgJ0VtYWlsTWVzc2FnZSddCiAKIGltcG9ydCByZQogaW1wb3J0IHV1CiBpbXBvcnQgcXVvcHJpCi1pbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBQb2xpY3ksIGNvbXBhdDMyCiBmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0CiBmcm9tIGVtYWlsLl9lbmNvZGVkX3dvcmRzIGltcG9ydCBkZWNvZGVfYgogQ2hhcnNldCA9IF9jaGFyc2V0LkNoYXJzZXQKQEAgLTk1MSw2ICs5NTAsMjYgQEAKICAgICAgICAgICAgIHBvbGljeSA9IGRlZmF1bHQKICAgICAgICAgTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3kpCiAKKworICAgIGRlZiBhc19zdHJpbmcoc2VsZiwgdW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj1Ob25lLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZW50aXJlIGZvcm1hdHRlZCBtZXNzYWdlIGFzIGEgc3RyaW5nLgorCisgICAgICAgIE9wdGlvbmFsICd1bml4ZnJvbScsIHdoZW4gdHJ1ZSwgbWVhbnMgaW5jbHVkZSB0aGUgVW5peCBGcm9tXyBlbnZlbG9wZQorICAgICAgICBoZWFkZXIuICBtYXhoZWFkZXJsZW4gaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKKyAgICAgICAgYmFzZSBNZXNzYWdlIGNsYXNzLCBidXQgZGVmYXVsdHMgdG8gTm9uZSwgbWVhbmluZyB0aGF0IHRoZSBwb2xpY3kgdmFsdWUKKyAgICAgICAgZm9yIG1heF9saW5lX2xlbmd0aCBjb250cm9scyB0aGUgaGVhZGVyIG1heGltdW0gbGVuZ3RoLiAgJ3BvbGljeScgaXMKKyAgICAgICAgcGFzc2VkIHRvIHRoZSBHZW5lcmF0b3IgaW5zdGFuY2UgdXNlZCB0byBzZXJpYWxpemUgdGhlIG1lc2FzZ2U7IGlmIGl0CisgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgaW5zdGFuY2UgaXMKKyAgICAgICAgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIGlmIG1heGhlYWRlcmxlbiBpcyBOb25lOgorICAgICAgICAgICAgbWF4aGVhZGVybGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aAorICAgICAgICByZXR1cm4gc3VwZXIoKS5hc19zdHJpbmcobWF4aGVhZGVybGVuPW1heGhlYWRlcmxlbiwgcG9saWN5PXBvbGljeSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5hc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSkpCisKICAgICBkZWYgaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgY19kID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQogICAgICAgICByZXR1cm4gRmFsc2UgaWYgY19kIGlzIE5vbmUgZWxzZSBjX2QuY29udGVudF9kaXNwb3NpdGlvbiA9PSAnYXR0YWNobWVudCcKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5IGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKaW5kZXggZjVjNTkwNS4uNjg3N2U1NSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhcHBsaWNhdGlvbi8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywKLSAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKToKKyAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgICIiIkNyZWF0ZSBhbiBhcHBsaWNhdGlvbi8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXBwbGljYXRpb24gZGF0YS4KQEAgLTMxLDYgKzMxLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ludmFsaWQgYXBwbGljYXRpb24gTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXBwbGljYXRpb24nLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhcHBsaWNhdGlvbicsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5IGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKaW5kZXggZmJjMTE4OS4uNGJjZDdiMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhdWRpby8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gYXVkaW8vKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2F1ZGlvZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXVkaW8gZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNjgsNiArNjgsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBfd2hhdHNuZChfYXVkaW9kYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZmluZCBhdWRpbyBNSU1FIHN1YnR5cGUnKQotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhdWRpbycsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2F1ZGlvJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKQogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9hdWRpb2RhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5IGIvTGliL2VtYWlsL21pbWUvYmFzZS5weQppbmRleCBhYzkxOTI1Li4xYTNmOWI1IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKQEAgLTYsNiArNiw4IEBACiAKIF9fYWxsX18gPSBbJ01JTUVCYXNlJ10KIAoraW1wb3J0IGVtYWlsLnBvbGljeQorCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCiAKIApAQCAtMTMsMTQgKzE1LDE2IEBACiBjbGFzcyBNSU1FQmFzZShtZXNzYWdlLk1lc3NhZ2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIE1JTUUgc3BlY2lhbGl6YXRpb25zLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICoqX3BhcmFtcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJUaGlzIGNvbnN0cnVjdG9yIGFkZHMgYSBDb250ZW50LVR5cGU6IGFuZCBhIE1JTUUtVmVyc2lvbjogaGVhZGVyLgogCiAgICAgICAgIFRoZSBDb250ZW50LVR5cGU6IGhlYWRlciBpcyB0YWtlbiBmcm9tIHRoZSBfbWFpbnR5cGUgYW5kIF9zdWJ0eXBlCiAgICAgICAgIGFyZ3VtZW50cy4gIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhpcyBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzLgogICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZS5NZXNzYWdlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gZW1haWwucG9saWN5LmNvbXBhdDMyCisgICAgICAgIG1lc3NhZ2UuTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBjdHlwZSA9ICclcy8lcycgJSAoX21haW50eXBlLCBfc3VidHlwZSkKICAgICAgICAgc2VsZi5hZGRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCBjdHlwZSwgKipfcGFyYW1zKQogICAgICAgICBzZWxmWydNSU1FLVZlcnNpb24nXSA9ICcxLjAnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9pbWFnZS5weSBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CmluZGV4IDU1NjM4MjMuLjkyNzI0NjQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2ltYWdlZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgaW1hZ2UgZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNDEsNiArNDEsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBpbWdoZHIud2hhdChOb25lLCBfaW1hZ2VkYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZ3Vlc3MgaW1hZ2UgTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdpbWFnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfaW1hZ2VkYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKaW5kZXggMjc1ZGJmZC4uMDdlNGYyZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FTWVzc2FnZShNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgbWVzc2FnZS8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbWVzc2FnZS8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfbXNnIGlzIGEgbWVzc2FnZSBvYmplY3QgYW5kIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZSwgb3IgYQpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBkZWZhdWx0IGlzICJyZmM4MjIiICh0aGlzIGlzIGRlZmluZWQgYnkgdGhlIE1JTUUgc3RhbmRhcmQsIGV2ZW4gdGhvdWdoCiAgICAgICAgIHRoZSB0ZXJtICJyZmM4MjIiIGlzIHRlY2huaWNhbGx5IG91dGRhdGVkIGJ5IFJGQyAyODIyKS4KICAgICAgICAgIiIiCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSkKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnbWVzc2FnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShfbXNnLCBtZXNzYWdlLk1lc3NhZ2UpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBcmd1bWVudCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZScpCiAgICAgICAgICMgSXQncyBjb252ZW5pZW50IHRvIHVzZSB0aGlzIGJhc2UgY2xhc3MgbWV0aG9kLiAgV2UgbmVlZCB0byBkbyBpdApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5IGIvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CmluZGV4IDk2NjE4NjUuLjJkM2YyODggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQorKysgYi9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIG11bHRpcGFydC8qIHR5cGUgbWVzc2FnZXMuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsCisgICAgICAgICAgICAgICAgICosIHBvbGljeT1Ob25lLAogICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGVzIGEgbXVsdGlwYXJ0LyogdHlwZSBtZXNzYWdlLgogCkBAIC0zMyw3ICszNCw3IEBACiAgICAgICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIChvciBwYXNzZWQgaW50byB0aGUgX3BhcmFtcyBhcmd1bWVudCkuCiAgICAgICAgICIiIgotICAgICAgICBNSU1FQmFzZS5fX2luaXRfXyhzZWxmLCAnbXVsdGlwYXJ0JywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRUJhc2UuX19pbml0X18oc2VsZiwgJ211bHRpcGFydCcsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LCAqKl9wYXJhbXMpCiAKICAgICAgICAgIyBJbml0aWFsaXNlIF9wYXlsb2FkIHRvIGFuIGVtcHR5IGxpc3QgYXMgdGhlIE1lc3NhZ2Ugc3VwZXJjbGFzcydzCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24gb2YgaXNfbXVsdGlwYXJ0IGFzc3VtZXMgdGhhdCBfcGF5bG9hZCBpcyBhIGxpc3QgZm9yCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5IGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQppbmRleCBkYTAzMDg2Li4zNWI0NDIzIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKQEAgLTE0LDcgKzE0LDcgQEAKIGNsYXNzIE1JTUVUZXh0KE1JTUVOb25NdWx0aXBhcnQpOgogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfdGV4dCBpcyB0aGUgc3RyaW5nIGZvciB0aGlzIG1lc3NhZ2Ugb2JqZWN0LgpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1dGYtOCcKIAotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IHN0cihfY2hhcnNldCl9KQogCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX3RleHQsIF9jaGFyc2V0KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKaW5kZXggMzVkMGU2OS4uNTEzMTMxMWFjIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvcG9saWN5LnB5CisrKyBiL0xpYi9lbWFpbC9wb2xpY3kucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKIGZyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5IGFzIEhlYWRlclJlZ2lzdHJ5CiBmcm9tIGVtYWlsLmNvbnRlbnRtYW5hZ2VyIGltcG9ydCByYXdfZGF0YV9tYW5hZ2VyCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCiBfX2FsbF9fID0gWwogICAgICdDb21wYXQzMicsCkBAIC04Miw2ICs4Myw3IEBACiAKICAgICAiIiIKIAorICAgIG1lc3NhZ2VfZmFjdG9yeSA9IEVtYWlsTWVzc2FnZQogICAgIHV0ZjggPSBGYWxzZQogICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKICAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkgYi9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CmluZGV4IDhkZDcxMzAuLmFhMmZiN2MgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQpAQCAtMjksNiArMjksNyBAQAogIiIiIyIKIAogaW1wb3J0IGNvZGVjcworaW1wb3J0IHN5cwogZnJvbSAuIGltcG9ydCBhbGlhc2VzCiAKIF9jYWNoZSA9IHt9CkBAIC01NCw2ICs1NSw3IEBACiAgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShlbmNvZGluZywgYnl0ZXMpOgogICAgICAgICBlbmNvZGluZyA9IHN0cihlbmNvZGluZywgImFzY2lpIikKKwogICAgIGNoYXJzID0gW10KICAgICBwdW5jdCA9IEZhbHNlCiAgICAgZm9yIGMgaW4gZW5jb2Rpbmc6CkBAIC05Nyw2ICs5OSw4IEBACiAgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCdlbmNvZGluZ3MuJyArIG1vZG5hbWUsIGZyb21saXN0PV9pbXBvcnRfdGFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MCkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBtYXkgb2NjdXIgYmVjYXVzZSAnZW5jb2RpbmdzLihtb2RuYW1lKScgZG9lcyBub3QgZXhpc3QsCisgICAgICAgICAgICAjIG9yIGJlY2F1c2UgaXQgaW1wb3J0cyBhIG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCAoc2VlIG1iY3MgYW5kIG9lbSkKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJyZWFrCkBAIC0xNTAsMyArMTU0LDE2IEBACiAKICMgUmVnaXN0ZXIgdGhlIHNlYXJjaF9mdW5jdGlvbiBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5CiBjb2RlY3MucmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKQorCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBkZWYgX2FsaWFzX21iY3MoZW5jb2RpbmcpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX2Jvb3Rsb2NhbGUKKyAgICAgICAgICAgIGlmIGVuY29kaW5nID09IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgZW5jb2RpbmdzLm1iY3MKKyAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmdzLm1iY3MuZ2V0cmVnZW50cnkoKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAjIEltcG9ydHMgbWF5IGZhaWwgd2hpbGUgd2UgYXJlIHNodXR0aW5nIGRvd24KKyAgICAgICAgICAgIHBhc3MKKworICAgIGNvZGVjcy5yZWdpc3RlcihfYWxpYXNfbWJjcykKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQppbmRleCA2N2M4MjhkLi4yZTYzYzJmIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKKysrIGIvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CkBAIC00NTgsNiArNDU4LDcgQEAKICAgICAnbWFjdHVya2lzaCcgICAgICAgICA6ICdtYWNfdHVya2lzaCcsCiAKICAgICAjIG1iY3MgY29kZWMKKyAgICAnYW5zaScgICAgICAgICAgICAgICA6ICdtYmNzJywKICAgICAnZGJjcycgICAgICAgICAgICAgICA6ICdtYmNzJywKIAogICAgICMgcHRjcDE1NCBjb2RlYwpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9vZW0ucHkgYi9MaWIvZW5jb2RpbmdzL29lbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzM0MjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VuY29kaW5ncy9vZW0ucHkKQEAgLTAsMCArMSw0MSBAQAorIiIiIFB5dGhvbiAnb2VtJyBDb2RlYyBmb3IgV2luZG93cworCisiIiIKKyMgSW1wb3J0IHRoZW0gZXhwbGljaXRseSB0byBjYXVzZSBhbiBJbXBvcnRFcnJvcgorIyBvbiBub24tV2luZG93cyBzeXN0ZW1zCitmcm9tIGNvZGVjcyBpbXBvcnQgb2VtX2VuY29kZSwgb2VtX2RlY29kZQorIyBmb3IgSW5jcmVtZW50YWxEZWNvZGVyLCBJbmNyZW1lbnRhbEVuY29kZXIsIC4uLgoraW1wb3J0IGNvZGVjcworCisjIyMgQ29kZWMgQVBJcworCitlbmNvZGUgPSBvZW1fZW5jb2RlCisKK2RlZiBkZWNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgcmV0dXJuIG9lbV9kZWNvZGUoaW5wdXQsIGVycm9ycywgVHJ1ZSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIG9lbV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQorCitjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBfYnVmZmVyX2RlY29kZSA9IG9lbV9kZWNvZGUKKworY2xhc3MgU3RyZWFtV3JpdGVyKGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIGVuY29kZSA9IG9lbV9lbmNvZGUKKworY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIGRlY29kZSA9IG9lbV9kZWNvZGUKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdvZW0nLAorICAgICAgICBlbmNvZGU9ZW5jb2RlLAorICAgICAgICBkZWNvZGU9ZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKZGlmZiAtLWdpdCBhL0xpYi9lbnN1cmVwaXAvX19pbml0X18ucHkgYi9MaWIvZW5zdXJlcGlwL19faW5pdF9fLnB5CmluZGV4IDI1YzU1NjcuLjlmNWQxNTEgMTAwNjQ0Ci0tLSBhL0xpYi9lbnN1cmVwaXAvX19pbml0X18ucHkKKysrIGIvTGliL2Vuc3VyZXBpcC9fX2luaXRfXy5weQpAQCAtMTIsMTkgKzEyLDYgQEAKIAogX1BJUF9WRVJTSU9OID0gIjkuMC4xIgogCi0jIHBpcCBjdXJyZW50bHkgcmVxdWlyZXMgc3NsIHN1cHBvcnQsIHNvIHdlIHRyeSB0byBwcm92aWRlIGEgbmljZXIKLSMgZXJyb3IgbWVzc2FnZSB3aGVuIHRoYXQgaXMgbWlzc2luZyAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE5NzQ0KQotX01JU1NJTkdfU1NMX01FU1NBR0UgPSAoInBpcCB7fSByZXF1aXJlcyBTU0wvVExTIi5mb3JtYXQoX1BJUF9WRVJTSU9OKSkKLXRyeToKLSAgICBpbXBvcnQgc3NsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgc3NsID0gTm9uZQotICAgIGRlZiBfcmVxdWlyZV9zc2xfZm9yX3BpcCgpOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoX01JU1NJTkdfU1NMX01FU1NBR0UpCi1lbHNlOgotICAgIGRlZiBfcmVxdWlyZV9zc2xfZm9yX3BpcCgpOgotICAgICAgICBwYXNzCi0KIF9QUk9KRUNUUyA9IFsKICAgICAoInNldHVwdG9vbHMiLCBfU0VUVVBUT09MU19WRVJTSU9OKSwKICAgICAoInBpcCIsIF9QSVBfVkVSU0lPTiksCkBAIC03MSw3ICs1OCw2IEBACiAgICAgaWYgYWx0aW5zdGFsbCBhbmQgZGVmYXVsdF9waXA6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCB1c2UgYWx0aW5zdGFsbCBhbmQgZGVmYXVsdF9waXAgdG9nZXRoZXIiKQogCi0gICAgX3JlcXVpcmVfc3NsX2Zvcl9waXAoKQogICAgIF9kaXNhYmxlX3BpcF9jb25maWd1cmF0aW9uX3NldHRpbmdzKCkKIAogICAgICMgQnkgZGVmYXVsdCwgaW5zdGFsbGluZyBwaXAgYW5kIHNldHVwdG9vbHMgaW5zdGFsbHMgYWxsIG9mIHRoZQpAQCAtMTMzLDcgKzExOSw2IEBACiAgICAgICAgIHByaW50KG1zZy5mb3JtYXQocGlwLl9fdmVyc2lvbl9fLCBfUElQX1ZFUlNJT04pLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIHJldHVybgogCi0gICAgX3JlcXVpcmVfc3NsX2Zvcl9waXAoKQogICAgIF9kaXNhYmxlX3BpcF9jb25maWd1cmF0aW9uX3NldHRpbmdzKCkKIAogICAgICMgQ29uc3RydWN0IHRoZSBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBwaXAgY29tbWFuZApAQCAtMTQ1LDExICsxMzAsNiBAQAogCiAKIGRlZiBfbWFpbihhcmd2PU5vbmUpOgotICAgIGlmIHNzbCBpcyBOb25lOgotICAgICAgICBwcmludCgiSWdub3JpbmcgZW5zdXJlcGlwIGZhaWx1cmU6IHt9Ii5mb3JtYXQoX01JU1NJTkdfU1NMX01FU1NBR0UpLAotICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHJldHVybgotCiAgICAgaW1wb3J0IGFyZ3BhcnNlCiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIocHJvZz0icHl0aG9uIC1tIGVuc3VyZXBpcCIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKZGlmZiAtLWdpdCBhL0xpYi9lbnVtLnB5IGIvTGliL2VudW0ucHkKaW5kZXggYjg3ODdkMS4uNGJlYjE4NyAxMDA2NDQKLS0tIGEvTGliL2VudW0ucHkKKysrIGIvTGliL2VudW0ucHkKQEAgLTEsOCArMSwyMCBAQAogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUsIER5bmFtaWNDbGFzc0F0dHJpYnV0ZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQorZnJvbSBvcGVyYXRvciBpbXBvcnQgb3JfIGFzIF9vcl8sIGFuZF8gYXMgX2FuZF8sIHhvciwgbmVnCiAKLV9fYWxsX18gPSBbJ0VudW0nLCAnSW50RW51bScsICd1bmlxdWUnXQorIyB0cnkgX2NvbGxlY3Rpb25zIGZpcnN0IHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorCisKK19fYWxsX18gPSBbCisgICAgICAgICdFbnVtTWV0YScsCisgICAgICAgICdFbnVtJywgJ0ludEVudW0nLCAnRmxhZycsICdJbnRGbGFnJywKKyAgICAgICAgJ2F1dG8nLCAndW5pcXVlJywKKyAgICAgICAgXQogCiAKIGRlZiBfaXNfZGVzY3JpcHRvcihvYmopOgpAQCAtMjgsNyArNDAsNiBAQAogICAgICAgICAgICAgbmFtZVstMjotMV0gIT0gJ18nIGFuZAogICAgICAgICAgICAgbGVuKG5hbWUpID4gMikKIAotCiBkZWYgX21ha2VfY2xhc3NfdW5waWNrbGFibGUoY2xzKToKICAgICAiIiJNYWtlIHRoZSBnaXZlbiBjbGFzcyB1bi1waWNrbGFibGUuIiIiCiAgICAgZGVmIF9icmVha19vbl9jYWxsX3JlZHVjZShzZWxmLCBwcm90byk6CkBAIC0zNiw2ICs0NywxMyBAQAogICAgIGNscy5fX3JlZHVjZV9leF9fID0gX2JyZWFrX29uX2NhbGxfcmVkdWNlCiAgICAgY2xzLl9fbW9kdWxlX18gPSAnPHVua25vd24+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+CisKIFtJRExFIENsYXNzaWMgTWFjXQogY29weT08Q29tbWFuZC1LZXktYz4KIGN1dD08Q29tbWFuZC1LZXkteD4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZiBiL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgppbmRleCA4ZWJiYzFiLi4xNmY0YjA5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCkBAIC00LDQ0ICs0LDUwIEBACiAjIFdoZW4gSURMRSBzdGFydHMsIGl0IHdpbGwgbG9vayBpbgogIyB0aGUgZm9sbG93aW5nIHR3byBzZXRzIG9mIGZpbGVzLCBpbiBvcmRlcjoKICMKLSMgICAgIGRlZmF1bHQgY29uZmlndXJhdGlvbgotIyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jICAgICBjb25maWctbWFpbi5kZWYgICAgICAgICB0aGUgZGVmYXVsdCBnZW5lcmFsIGNvbmZpZyBmaWxlCi0jICAgICBjb25maWctZXh0ZW5zaW9ucy5kZWYgICB0aGUgZGVmYXVsdCBleHRlbnNpb24gY29uZmlnIGZpbGUKLSMgICAgIGNvbmZpZy1oaWdobGlnaHQuZGVmICAgIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZyBjb25maWcgZmlsZQotIyAgICAgY29uZmlnLWtleXMuZGVmICAgICAgICAgdGhlIGRlZmF1bHQga2V5YmluZGluZyBjb25maWcgZmlsZQorIyAgICAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGVzIGluIGlkbGVsaWIKKyMgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjICAgICBjb25maWctbWFpbi5kZWYgICAgICAgICBkZWZhdWx0IGdlbmVyYWwgY29uZmlnIGZpbGUKKyMgICAgIGNvbmZpZy1leHRlbnNpb25zLmRlZiAgIGRlZmF1bHQgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlCisjICAgICBjb25maWctaGlnaGxpZ2h0LmRlZiAgICBkZWZhdWx0IGhpZ2hsaWdodGluZyBjb25maWcgZmlsZQorIyAgICAgY29uZmlnLWtleXMuZGVmICAgICAgICAgZGVmYXVsdCBrZXliaW5kaW5nIGNvbmZpZyBmaWxlCiAjCi0jICAgICB1c2VyIGNvbmZpZ3VyYXRpb24KLSMgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgICAgIH4vLmlkbGVyYy9jb25maWctbWFpbi5jZmcgICAgICAgICAgICB0aGUgdXNlciBnZW5lcmFsIGNvbmZpZyBmaWxlCi0jICAgICB+Ly5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnICAgICAgdGhlIHVzZXIgZXh0ZW5zaW9uIGNvbmZpZyBmaWxlCi0jICAgICB+Ly5pZGxlcmMvY29uZmlnLWhpZ2hsaWdodC5jZmcgICAgICAgdGhlIHVzZXIgaGlnaGxpZ2h0aW5nIGNvbmZpZyBmaWxlCi0jICAgICB+Ly5pZGxlcmMvY29uZmlnLWtleXMuY2ZnICAgICAgICAgICAgdGhlIHVzZXIga2V5YmluZGluZyBjb25maWcgZmlsZQorIyAgICAgdXNlciBjb25maWd1cmF0aW9uIGZpbGVzIGluIH4vLmlkbGVyYworIyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgICAgY29uZmlnLW1haW4uY2ZnICAgICAgICAgdXNlciBnZW5lcmFsIGNvbmZpZyBmaWxlCisjICAgICBjb25maWctZXh0ZW5zaW9ucy5jZmcgICB1c2VyIGV4dGVuc2lvbiBjb25maWcgZmlsZQorIyAgICAgY29uZmlnLWhpZ2hsaWdodC5jZmcgICAgdXNlciBoaWdobGlnaHRpbmcgY29uZmlnIGZpbGUKKyMgICAgIGNvbmZpZy1rZXlzLmNmZyAgICAgICAgIHVzZXIga2V5YmluZGluZyBjb25maWcgZmlsZQogIwotIyBPbiBXaW5kb3dzMjAwMCBhbmQgV2luZG93cyBYUCB0aGUgLmlkbGVyYyBkaXJlY3RvcnkgaXMgYXQKLSMgICAgIERvY3VtZW50cyBhbmQgU2V0dGluZ3NcPHVzZXJuYW1lPlwuaWRsZXJjCi0jCi0jIE9uIFdpbmRvd3M5OCBpdCBpcyBhdCBjOlwuaWRsZXJjCisjIE9uIFdpbmRvd3MsIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBob21lIGRpcmVjdG9yeSAoJ34nIGFib3ZlKQorIyBkZXBlbmRzIG9uIHRoZSB2ZXJzaW9uLiAgRm9yIFdpbmRvd3MgMTAsIGl0IGlzIEM6XFVzZXJzXDx1c2VybmFtZT4uCiAjCiAjIEFueSBvcHRpb25zIHRoZSB1c2VyIHNhdmVzIHRocm91Z2ggdGhlIGNvbmZpZyBkaWFsb2cgd2lsbCBiZSBzYXZlZCB0bwotIyB0aGUgcmVsZXZhbnQgdXNlciBjb25maWcgZmlsZS4gUmV2ZXJ0aW5nIGFueSBnZW5lcmFsIHNldHRpbmcgdG8gdGhlCi0jIGRlZmF1bHQgY2F1c2VzIHRoYXQgZW50cnkgdG8gYmUgd2lwZWQgZnJvbSB0aGUgdXNlciBmaWxlIGFuZCByZS1yZWFkCi0jIGZyb20gdGhlIGRlZmF1bHQgZmlsZS4gVXNlciBoaWdobGlnaHRpbmcgdGhlbWVzIG9yIGtleWJpbmRpbmcgc2V0cyBhcmUKLSMgcmV0YWluZWQgdW5sZXNzIHNwZWNpZmljYWxseSBkZWxldGVkIHdpdGhpbiB0aGUgY29uZmlnIGRpYWxvZy4gQ2hvb3NpbmcKLSMgb25lIG9mIHRoZSBkZWZhdWx0IHRoZW1lcyBvciBrZXlzZXRzIGp1c3QgYXBwbGllcyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MKLSMgZnJvbSB0aGUgZGVmYXVsdCBmaWxlLgorIyB0aGUgcmVsZXZhbnQgdXNlciBjb25maWcgZmlsZS4gUmV2ZXJ0aW5nIGFueSBnZW5lcmFsIG9yIGV4dGVuc2lvbgorIyBzZXR0aW5nIHRvIHRoZSBkZWZhdWx0IGNhdXNlcyB0aGF0IGVudHJ5IHRvIGJlIHdpcGVkIGZyb20gdGhlIHVzZXIKKyMgZmlsZSBhbmQgcmUtcmVhZCBmcm9tIHRoZSBkZWZhdWx0IGZpbGUuICBUaGlzIHJ1bGUgYXBwbGllcyB0byBlYWNoCisjIGl0ZW0sIGV4Y2VwdCB0aGF0IHRoZSB0aHJlZSBlZGl0b3IgZm9udCBpdGVtcyBhcmUgc2F2ZWQgYXMgYSBncm91cC4KICMKLSMgQWRkaXRpb25hbCBoZWxwIHNvdXJjZXMgYXJlIGxpc3RlZCBpbiB0aGUgW0hlbHBGaWxlc10gc2VjdGlvbiBhbmQgbXVzdCBiZQotIyB2aWV3YWJsZSBieSBhIHdlYiBicm93c2VyIChvciB0aGUgV2luZG93cyBIZWxwIHZpZXdlciBpbiB0aGUgY2FzZSBvZiAuY2htCi0jIGZpbGVzKS4gVGhlc2Ugc291cmNlcyB3aWxsIGJlIGxpc3RlZCBvbiB0aGUgSGVscCBtZW51LiAgVGhlIHBhdHRlcm4gaXMKKyMgVXNlciBoaWdobGlnaHRpbmcgdGhlbWVzIGFuZCBrZXliaW5kaW5nIHNldHMgbXVzdCBoYXZlIChzZWN0aW9uKSBuYW1lcworIyBkaXN0aW5jdCBmcm9tIHRoZSBkZWZhdWx0IG5hbWVzLiAgQWxsIGl0ZW1zIGFyZSBhZGRlZCBhbmQgc2F2ZWQgYXMgYQorIyBncm91cC4gVGhleSBhcmUgcmV0YWluZWQgdW5sZXNzIHNwZWNpZmljYWxseSBkZWxldGVkIHdpdGhpbiB0aGUgY29uZmlnCisjIGRpYWxvZy4gQ2hvb3Npbmcgb25lIG9mIHRoZSBkZWZhdWx0IHRoZW1lcyBvciBrZXlzZXRzIGp1c3QgYXBwbGllcyB0aGUKKyMgcmVsZXZhbnQgc2V0dGluZ3MgZnJvbSB0aGUgZGVmYXVsdCBmaWxlLgorIworIyBBZGRpdGlvbmFsIGhlbHAgc291cmNlcyBhcmUgbGlzdGVkIGluIHRoZSBbSGVscEZpbGVzXSBzZWN0aW9uIGJlbG93CisjIGFuZCBzaG91bGQgYmUgdmlld2FibGUgYnkgYSB3ZWIgYnJvd3NlciAob3IgdGhlIFdpbmRvd3MgSGVscCB2aWV3ZXIgaW4KKyMgdGhlIGNhc2Ugb2YgLmNobSBmaWxlcykuIFRoZXNlIHNvdXJjZXMgd2lsbCBiZSBsaXN0ZWQgb24gdGhlIEhlbHAKKyMgbWVudS4gIFRoZSBwYXR0ZXJuLCBhbmQgdHdvIGV4YW1wbGVzLCBhcmUKKyMKICMgPHNlcXVlbmNlX251bWJlciA9IG1lbnUgaXRlbTsvcGF0aC90by9oZWxwL3NvdXJjZT4KLSMgWW91IGNhbid0IHVzZSBhIHNlbWktY29sb24gaW4gYSBtZW51IGl0ZW0gb3IgcGF0aC4gIFRoZSBwYXRoIHdpbGwgYmUgcGxhdGZvcm0KLSMgc3BlY2lmaWMgYmVjYXVzZSBvZiBwYXRoIHNlcGFyYXRvcnMsIGRyaXZlIHNwZWNzIGV0Yy4KKyMgMSA9IElETEU7QzovUHJvZ3JhbXMvUHl0aG9uMzYvTGliL2lkbGVsaWIvaGVscC5odG1sCisjIDIgPSBQaWxsb3c7aHR0cHM6Ly9waWxsb3cucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LwogIwotIyBJdCBpcyBiZXN0IHRvIHVzZSB0aGUgQ29uZmlndXJhdGlvbiBHVUkgdG8gc2V0IHVwIGFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIQotIyBFeGFtcGxlOgotIzEgPSBNeSBFeHRyYSBIZWxwIFNvdXJjZTsvdXNyL3NoYXJlL2RvYy9mb28vaW5kZXguaHRtbAotIzIgPSBBbm90aGVyIEhlbHAgU291cmNlOy9wYXRoL3RvL2Fub3RoZXIucGRmCisjIFlvdSBjYW4ndCB1c2UgYSBzZW1pLWNvbG9uIGluIGEgbWVudSBpdGVtIG9yIHBhdGguICBUaGUgcGF0aCB3aWxsIGJlCisjIHBsYXRmb3JtIHNwZWNpZmljIGJlY2F1c2Ugb2YgcGF0aCBzZXBhcmF0b3JzLCBkcml2ZSBzcGVjcyBldGMuCisjCisjIFRoZSBkZWZhdWx0IGZpbGVzIHNob3VsZCBub3QgYmUgZWRpdGVkIGV4Y2VwdCB0byBhZGQgbmV3IHNlY3Rpb25zIHRvCisjIGNvbmZpZy1leHRlbnNpb25zLmRlZiBmb3IgYWRkZWQgZXh0ZW5zaW9ucyAuICBUaGUgdXNlciBmaWxlcyBzaG91bGQgYmUKKyMgbW9kaWZpZWQgdGhyb3VnaCB0aGUgU2V0dGluZ3MgZGlhbG9nLgogCiBbR2VuZXJhbF0KIGVkaXRvci1vbi1zdGFydHVwPSAwCkBAIC01NCw2ICs2MCw4IEBACiB3aWR0aD0gODAKIGhlaWdodD0gNDAKIGZvbnQ9IFRrRml4ZWRGb250CisjIEZvciBUa0ZpeGVkRm9udCwgdGhlIGFjdHVhbCBzaXplIGFuZCBib2xkbmVzcyBhcmUgb2J0YWluZWQgZnJvbSB0aworIyBhbmQgb3ZlcnJpZGUgMTAgYW5kIDAuICBTZWUgaWRsZWxpYi5jb25maWcuSWRsZUNvbmYuR2V0Rm9udAogZm9udC1zaXplPSAxMAogZm9udC1ib2xkPSAwCiBlbmNvZGluZz0gbm9uZQpAQCAtNzAsNyArNzgsOSBAQAogCiBbS2V5c10KIGRlZmF1bHQ9IDEKLW5hbWU9IElETEUgQ2xhc3NpYyBXaW5kb3dzCituYW1lPQorbmFtZTI9CisjIG5hbWUyIHNldCBpbiB1c2VyIGNvbmZpZy1tYWluLmNmZyBmb3Iga2V5cyBhZGRlZCBhZnRlciAyMDE2IEp1bHkgMQogCiBbSGlzdG9yeV0KIGN5Y2xpYz0xCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnLnB5CnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZy5weQppbmRleCA4OTU0NDg4Li4zNThiZWU0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZy5weQpAQCAtMSwxMyArMSwyMCBAQAotIiIiUHJvdmlkZXMgYWNjZXNzIHRvIHN0b3JlZCBJRExFIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24uCisiIiJpZGxlbGliLmNvbmZpZyAtLSBNYW5hZ2UgSURMRSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLgogCi1SZWZlciB0byB0aGUgY29tbWVudHMgYXQgdGhlIGJlZ2lubmluZyBvZiBjb25maWctbWFpbi5kZWYgZm9yIGEgZGVzY3JpcHRpb24gb2YKLXRoZSBhdmFpbGFibGUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlIGRlc2lnbiBpbXBsZW1lbnRlZCB0byB1cGRhdGUgdXNlcgotY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gIEluIHBhcnRpY3VsYXIsIHVzZXIgY29uZmlndXJhdGlvbiBjaG9pY2VzIHdoaWNoCi1kdXBsaWNhdGUgdGhlIGRlZmF1bHRzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB1c2VyJ3MgY29uZmlndXJhdGlvbiBmaWxlcywKLWFuZCBpZiBhIGZpbGUgYmVjb21lcyBlbXB0eSwgaXQgd2lsbCBiZSBkZWxldGVkLgorVGhlIGNvbW1lbnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgY29uZmlnLW1haW4uZGVmIGRlc2NyaWJlIHRoZQorY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlIGRlc2lnbiBpbXBsZW1lbnRlZCB0byB1cGRhdGUgdXNlcgorY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4gIEluIHBhcnRpY3VsYXIsIHVzZXIgY29uZmlndXJhdGlvbiBjaG9pY2VzCit3aGljaCBkdXBsaWNhdGUgdGhlIGRlZmF1bHRzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSB1c2VyJ3MKK2NvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBpZiBhIHVzZXIgZmlsZSBiZWNvbWVzIGVtcHR5LCBpdCB3aWxsIGJlCitkZWxldGVkLgogCi1UaGUgY29udGVudHMgb2YgdGhlIHVzZXIgZmlsZXMgbWF5IGJlIGFsdGVyZWQgdXNpbmcgdGhlIE9wdGlvbnMvQ29uZmlndXJlIElETEUKLW1lbnUgdG8gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIEdVSSAoY29uZmlnRGlhbG9nLnB5KSwgb3IgbWFudWFsbHkuCitUaGUgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBtYXBzIG9wdGlvbnMgdG8gdmFsdWVzLiAgQ29tY2VwdHVhbGx5LCB0aGUKK2RhdGFiYXNlIGtleXMgYXJlIHR1cGxlcyAoY29uZmlnLXR5cGUsIHNlY3Rpb24sIGl0ZW0pLiAgQXMgaW1wbGVtZW50ZWQsCit0aGVyZSBhcmUgIHNlcGFyYXRlIGRpY3RzIGZvciBkZWZhdWx0IGFuZCB1c2VyIHZhbHVlcy4gIEVhY2ggaGFzCitjb25maWctdHlwZSBrZXlzICdtYWluJywgJ2V4dGVuc2lvbnMnLCAnaGlnaGxpZ2h0JywgYW5kICdrZXlzJy4gIFRoZQordmFsdWUgZm9yIGVhY2gga2V5IGlzIGEgQ29uZmlnUGFyc2VyIGluc3RhbmNlIHRoYXQgbWFwcyBzZWN0aW9uIGFuZCBpdGVtCit0byB2YWx1ZXMuICBGb3IgJ21haW4nIGFuZCAnZXh0ZW5zdG9ucycsIHVzZXIgdmFsdWVzIG92ZXJyaWRlCitkZWZhdWx0IHZhbHVlcy4gIEZvciAnaGlnaGxpZ2h0JyBhbmQgJ2tleXMnLCB1c2VyIHNlY3Rpb25zIGF1Z21lbnQgdGhlCitkZWZhdWx0IHNlY3Rpb25zIChhbmQgbXVzdCwgdGhlcmVmb3JlLCBoYXZlIGRpc3RpbmN0IG5hbWVzKS4KIAogVGhyb3VnaG91dCB0aGlzIG1vZHVsZSB0aGVyZSBpcyBhbiBlbXBoYXNpcyBvbiByZXR1cm5pbmcgdXNlYWJsZSBkZWZhdWx0cwogd2hlbiBhIHByb2JsZW0gb2NjdXJzIGluIHJldHVybmluZyBhIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIHZhbHVlIGJhY2sgdG8KQEAgLTE4LDExICsyNSwxMCBAQAogIiIiCiAjIFRPRE9zIGFkZGVkIE9jdCAyMDE0LCB0anIKIAorZnJvbSBjb25maWdwYXJzZXIgaW1wb3J0IENvbmZpZ1BhcnNlcgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKLWZyb20gdGtpbnRlciBpbXBvcnQgVGtWZXJzaW9uCiBmcm9tIHRraW50ZXIuZm9udCBpbXBvcnQgRm9udCwgbmFtZXRvZm9udAogCiBjbGFzcyBJbnZhbGlkQ29uZmlnVHlwZShFeGNlcHRpb24pOiBwYXNzCkBAIC0yMzAsMTUgKzIzNiwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnVzZXJDZmdbY29uZmlnVHlwZV0uR2V0KHNlY3Rpb24sIG9wdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXR5cGUsIHJhdz1yYXcpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCisgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGludmFsaWQgJXIgdmFsdWUgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uICVyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBzZWN0aW9uICVyOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAodHlwZSwgb3B0aW9uLCBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVzZXJDZmdbY29uZmlnVHlwZV0uR2V0KHNlY3Rpb24sIG9wdGlvbiwgcmF3PXJhdykpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc2VsZi5kZWZhdWx0Q2ZnW2NvbmZpZ1R5cGVdLmhhc19vcHRpb24oc2VjdGlvbixvcHRpb24pOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRDZmdbY29uZmlnVHlwZV0uR2V0KApAQCAtMjQ3LDE1ICsyNTAsMTIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgI3JldHVybmluZyBkZWZhdWx0LCBwcmludCB3YXJuaW5nCiAgICAgICAgIGlmIHdhcm5fb25fZGVmYXVsdDoKLSAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJworICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBwcm9ibGVtIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBvcHRpb24gJXJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIHNlY3Rpb24gJXIuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb24sIHNlY3Rpb24sIGRlZmF1bHQpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbikKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKIAogICAgIGRlZiBTZXRPcHRpb24oc2VsZiwgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSk6CkBAIC0zNTgsNTIgKzM1OCw3MyBAQAogICAgICAgICBmb3IgZWxlbWVudCBpbiB0aGVtZToKICAgICAgICAgICAgIGlmIG5vdCBjZmdQYXJzZXIuaGFzX29wdGlvbih0aGVtZU5hbWUsIGVsZW1lbnQpOgogICAgICAgICAgICAgICAgICMgUHJpbnQgd2FybmluZyB0aGF0IHdpbGwgcmV0dXJuIGEgZGVmYXVsdCBjb2xvcgotICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIuSWRsZUNvbmYuR2V0VGhlbWVEaWN0JworICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5JZGxlQ29uZi5HZXRUaGVtZURpY3QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1cbiBwcm9ibGVtIHJldHJpZXZpbmcgdGhlbWUgZWxlbWVudCAlcicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBmcm9tIHRoZW1lICVyLlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCBjb2xvcjogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbGVtZW50LCB0aGVtZU5hbWUsIHRoZW1lW2VsZW1lbnRdKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdoaWdobGlnaHQnLCB0aGVtZU5hbWUsIGVsZW1lbnQpCiAgICAgICAgICAgICB0aGVtZVtlbGVtZW50XSA9IGNmZ1BhcnNlci5HZXQoCiAgICAgICAgICAgICAgICAgICAgIHRoZW1lTmFtZSwgZWxlbWVudCwgZGVmYXVsdD10aGVtZVtlbGVtZW50XSkKICAgICAgICAgcmV0dXJuIHRoZW1lCiAKICAgICBkZWYgQ3VycmVudFRoZW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGV4dCBjb2xvciB0aGVtZS4KKyAgICAgICAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0ZXh0IGNvbG9yIHRoZW1lLiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMoJ1RoZW1lJykKIAotICAgICAgICBpZGxlbGliLmNvbmZpZy1tYWluLmRlZiBpbmNsdWRlcyB0aGlzIHNlY3Rpb24KKyAgICBkZWYgQ3VycmVudEtleXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBrZXkgc2V0LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cygnS2V5cycpCisKKyAgICBkZWYgY3VycmVudF9jb2xvcnNfYW5kX2tleXMoc2VsZiwgc2VjdGlvbik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBuYW1lIGZvciBUaGVtZSBvciBLZXlzIHNlY3Rpb24uCisKKyAgICAgICAgaWRsZWxpYi5jb25maWctbWFpbi5kZWYgKCdkZWZhdWx0JykgaW5jbHVkZXMgdGhlc2Ugc2VjdGlvbnMKKwogICAgICAgICBbVGhlbWVdCiAgICAgICAgIGRlZmF1bHQ9IDEKICAgICAgICAgbmFtZT0gSURMRSBDbGFzc2ljCiAgICAgICAgIG5hbWUyPQotICAgICAgICAjIG5hbWUyIHNldCBpbiB1c2VyIGNvbmZpZy1tYWluLmNmZyBmb3IgdGhlbWVzIGFkZGVkIGFmdGVyIDIwMTUgT2N0IDEKIAotICAgICAgICBJdGVtIG5hbWUyIGlzIG5lZWRlZCBiZWNhdXNlIHNldHRpbmcgbmFtZSB0byBhIG5ldyBidWlsdGluCi0gICAgICAgIGNhdXNlcyBvbGRlciBJRExFcyB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzIG9yIHF1aXQuCisgICAgICAgIFtLZXlzXQorICAgICAgICBkZWZhdWx0PSAxCisgICAgICAgIG5hbWU9CisgICAgICAgIG5hbWUyPQorCisgICAgICAgIEl0ZW0gJ25hbWUyJywgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKCdkZWZhdWx0JykgdGhlbWVzIGFuZCBrZXlzCisgICAgICAgIGFkZGVkIGFmdGVyIDIwMTUgT2N0IDEgYW5kIDIwMTYgSnVseSAxLiAgVGhpcyBrbHVkZ2UgaXMgbmVlZGVkCisgICAgICAgIGJlY2F1c2Ugc2V0dGluZyAnbmFtZScgdG8gYSBidWlsdGluIG5vdCBkZWZpbmVkIGluIG9sZGVyIElETEVzCisgICAgICAgIHRvIGRpc3BsYXkgbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgb3IgcXVpdC4KICAgICAgICAgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjUzMTMuCi0gICAgICAgIFdoZW4gZGVmYXVsdCA9IFRydWUsIG5hbWUyIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBuYW1lLAotICAgICAgICB3aGlsZSBvbGRlciBJRExFcyB3aWxsIGp1c3QgdXNlIG5hbWUuCisgICAgICAgIFdoZW4gZGVmYXVsdCA9IFRydWUsICduYW1lMicgdGFrZXMgcHJlY2VkZW5jZSBvdmVyICduYW1lJywKKyAgICAgICAgd2hpbGUgb2xkZXIgSURMRXMgd2lsbCBqdXN0IHVzZSBuYW1lLiAgV2hlbiBkZWZhdWx0ID0gRmFsc2UsCisgICAgICAgICduYW1lMicgbWF5IHN0aWxsIGJlIHNldCwgYnV0IGl0IGlzIGlnbm9yZWQuCiAgICAgICAgICIiIgotICAgICAgICBkZWZhdWx0ID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnZGVmYXVsdCcsCisgICAgICAgIGNmZ25hbWUgPSAnaGlnaGxpZ2h0JyBpZiBzZWN0aW9uID09ICdUaGVtZScgZWxzZSAna2V5cycKKyAgICAgICAgZGVmYXVsdCA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ2RlZmF1bHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcsIGRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgbmFtZSA9ICcnCiAgICAgICAgIGlmIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aGVtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ25hbWUyJywgZGVmYXVsdD0nJykKLSAgICAgICAgaWYgZGVmYXVsdCBhbmQgbm90IHRoZW1lIG9yIG5vdCBkZWZhdWx0OgotICAgICAgICAgICAgdGhlbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lJywgZGVmYXVsdD0nJykKLSAgICAgICAgc291cmNlID0gc2VsZi5kZWZhdWx0Q2ZnIGlmIGRlZmF1bHQgZWxzZSBzZWxmLnVzZXJDZmcKLSAgICAgICAgaWYgc291cmNlWydoaWdobGlnaHQnXS5oYXNfc2VjdGlvbih0aGVtZSk6Ci0gICAgICAgICAgICByZXR1cm4gdGhlbWUKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICduYW1lMicsIGRlZmF1bHQ9JycpCisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ25hbWUnLCBkZWZhdWx0PScnKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgc291cmNlID0gc2VsZi5kZWZhdWx0Q2ZnIGlmIGRlZmF1bHQgZWxzZSBzZWxmLnVzZXJDZmcKKyAgICAgICAgICAgIGlmIHNvdXJjZVtjZmduYW1lXS5oYXNfc2VjdGlvbihuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICByZXR1cm4gIklETEUgQ2xhc3NpYyIgaWYgc2VjdGlvbiA9PSAnVGhlbWUnIGVsc2Ugc2VsZi5kZWZhdWx0X2tleXMoKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBkZWZhdWx0X2tleXMoKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBDbGFzc2ljIFdpbmRvd3MnCisgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgcmV0dXJuICdJRExFIENsYXNzaWMgT1NYJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJJRExFIENsYXNzaWMiCisgICAgICAgICAgICByZXR1cm4gJ0lETEUgTW9kZXJuIFVuaXgnCiAKLSAgICBkZWYgQ3VycmVudEtleXMoc2VsZik6Ci0gICAgICAgICJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5IHNldC4iCi0gICAgICAgIHJldHVybiBzZWxmLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnLCBkZWZhdWx0PScnKQotCi0gICAgZGVmIEdldEV4dGVuc2lvbnMoc2VsZiwgYWN0aXZlX29ubHk9VHJ1ZSwgZWRpdG9yX29ubHk9RmFsc2UsIHNoZWxsX29ubHk9RmFsc2UpOgorICAgIGRlZiBHZXRFeHRlbnNpb25zKHNlbGYsIGFjdGl2ZV9vbmx5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yX29ubHk9RmFsc2UsIHNoZWxsX29ubHk9RmFsc2UpOgogICAgICAgICAiIiJSZXR1cm4gZXh0ZW5zaW9ucyBpbiBkZWZhdWx0IGFuZCB1c2VyIGNvbmZpZy1leHRlbnNpb25zIGZpbGVzLgogCiAgICAgICAgIElmIGFjdGl2ZV9vbmx5IFRydWUsIG9ubHkgcmV0dXJuIGFjdGl2ZSAoZW5hYmxlZCkgZXh0ZW5zaW9ucwpAQCAtNDIzLDcgKzQ0NCw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5HZXRPcHRpb24oJ2V4dGVuc2lvbnMnLCBleHRuLCAnZW5hYmxlJywgZGVmYXVsdD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnKToKICAgICAgICAgICAgICAgICAgICAgI3RoZSBleHRlbnNpb24gaXMgZW5hYmxlZAotICAgICAgICAgICAgICAgICAgICBpZiBlZGl0b3Jfb25seSBvciBzaGVsbF9vbmx5OiAgIyBUT0RPIGlmIGJvdGgsIGNvbnRyYWRpY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHkgb3Igc2hlbGxfb25seTogICMgVE9ETyBib3RoIFRydWUgY29udHJhZGljdAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gImVuYWJsZV9lZGl0b3IiCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNTI4LDcgKzU0OSw4IEBACiAgICAgICAgIGV2ZW50U3RyIC0gdmlydHVhbCBldmVudCwgaW5jbHVkaW5nIGJyYWNrZXRzLCBhcyBpbiAnPDxldmVudD4+Jy4KICAgICAgICAgIiIiCiAgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50U3RyWzI6LTJdICN0cmltIG9mZiB0aGUgYW5nbGUgYnJhY2tldHMKLSAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0T3B0aW9uKCdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnROYW1lLCBkZWZhdWx0PScnKS5zcGxpdCgpCisgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldE9wdGlvbigna2V5cycsIGtleVNldE5hbWUsIGV2ZW50TmFtZSwgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5fb25fZGVmYXVsdD1GYWxzZSkuc3BsaXQoKQogICAgICAgICByZXR1cm4gYmluZGluZwogCiAgICAgZGVmIEdldEN1cnJlbnRLZXlTZXQoc2VsZik6CkBAIC02MzksMjAgKzY2MSwyOCBAQAogICAgICAgICAgICAgJzw8ZGVsLXdvcmQtcmlnaHQ+Pic6IFsnPENvbnRyb2wtS2V5LURlbGV0ZT4nXQogICAgICAgICAgICAgfQogICAgICAgICBpZiBrZXlTZXROYW1lOgotICAgICAgICAgICAgZm9yIGV2ZW50IGluIGtleUJpbmRpbmdzOgotICAgICAgICAgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldEtleUJpbmRpbmcoa2V5U2V0TmFtZSwgZXZlbnQpCi0gICAgICAgICAgICAgICAgaWYgYmluZGluZzoKLSAgICAgICAgICAgICAgICAgICAga2V5QmluZGluZ3NbZXZlbnRdID0gYmluZGluZwotICAgICAgICAgICAgICAgIGVsc2U6ICN3ZSBhcmUgZ29pbmcgdG8gcmV0dXJuIGEgZGVmYXVsdCwgcHJpbnQgd2FybmluZwotICAgICAgICAgICAgICAgICAgICB3YXJuaW5nPSgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldENvcmVLZXlzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLVxuIHByb2JsZW0gcmV0cmlldmluZyBrZXkgYmluZGluZyBmb3IgZXZlbnQgJXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuIGZyb20ga2V5IHNldCAlci5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudCwga2V5U2V0TmFtZSwga2V5QmluZGluZ3NbZXZlbnRdKSkKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIG5vdCAoc2VsZi51c2VyQ2ZnWydrZXlzJ10uaGFzX3NlY3Rpb24oa2V5U2V0TmFtZSkgb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWZhdWx0Q2ZnWydrZXlzJ10uaGFzX3NlY3Rpb24oa2V5U2V0TmFtZSkpOgorICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoCisgICAgICAgICAgICAgICAgICAgICdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cyAtXG4nCisgICAgICAgICAgICAgICAgICAgICcga2V5IHNldCAlciBpcyBub3QgZGVmaW5lZCwgdXNpbmcgZGVmYXVsdCBiaW5kaW5ncy4nICUKKyAgICAgICAgICAgICAgICAgICAgKGtleVNldE5hbWUsKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAna2V5cycsIGtleVNldE5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBldmVudCBpbiBrZXlCaW5kaW5nczoKKyAgICAgICAgICAgICAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0S2V5QmluZGluZyhrZXlTZXROYW1lLCBldmVudCkKKyAgICAgICAgICAgICAgICAgICAgaWYgYmluZGluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUJpbmRpbmdzW2V2ZW50XSA9IGJpbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgZWxzZTogI3dlIGFyZSBnb2luZyB0byByZXR1cm4gYSBkZWZhdWx0LCBwcmludCB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cyAtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBwcm9ibGVtIHJldHJpZXZpbmcga2V5IGJpbmRpbmcgZm9yIGV2ZW50ICVyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIGtleSBzZXQgJXIuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQsIGtleVNldE5hbWUsIGtleUJpbmRpbmdzW2V2ZW50XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnQpCiAgICAgICAgIHJldHVybiBrZXlCaW5kaW5ncwogCiAgICAgZGVmIEdldEV4dHJhSGVscFNvdXJjZUxpc3Qoc2VsZiwgY29uZmlnU2V0KToKQEAgLTcxMywxNiArNzQzLDEzIEBACiAgICAgICAgIGJvbGQgPSBzZWxmLkdldE9wdGlvbihjb25maWdUeXBlLCBzZWN0aW9uLCAnZm9udC1ib2xkJywgZGVmYXVsdD0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcpCiAgICAgICAgIGlmIChmYW1pbHkgPT0gJ1RrRml4ZWRGb250Jyk6Ci0gICAgICAgICAgICBpZiBUa1ZlcnNpb24gPCA4LjU6Ci0gICAgICAgICAgICAgICAgZmFtaWx5ID0gJ0NvdXJpZXInCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGYgPSBGb250KG5hbWU9J1RrRml4ZWRGb250JywgZXhpc3RzPVRydWUsIHJvb3Q9cm9vdCkKLSAgICAgICAgICAgICAgICBhY3R1YWxGb250ID0gRm9udC5hY3R1YWwoZikKLSAgICAgICAgICAgICAgICBmYW1pbHkgPSBhY3R1YWxGb250WydmYW1pbHknXQotICAgICAgICAgICAgICAgIHNpemUgPSBhY3R1YWxGb250WydzaXplJ10KLSAgICAgICAgICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNpemUgPSAxMCAgIyBpZiBmb250IGluIHBpeGVscywgaWdub3JlIGFjdHVhbCBzaXplCi0gICAgICAgICAgICAgICAgYm9sZCA9IGFjdHVhbEZvbnRbJ3dlaWdodCddPT0nYm9sZCcKKyAgICAgICAgICAgIGYgPSBGb250KG5hbWU9J1RrRml4ZWRGb250JywgZXhpc3RzPVRydWUsIHJvb3Q9cm9vdCkKKyAgICAgICAgICAgIGFjdHVhbEZvbnQgPSBGb250LmFjdHVhbChmKQorICAgICAgICAgICAgZmFtaWx5ID0gYWN0dWFsRm9udFsnZmFtaWx5J10KKyAgICAgICAgICAgIHNpemUgPSBhY3R1YWxGb250WydzaXplJ10KKyAgICAgICAgICAgIGlmIHNpemUgPD0gMDoKKyAgICAgICAgICAgICAgICBzaXplID0gMTAgICMgaWYgZm9udCBpbiBwaXhlbHMsIGlnbm9yZSBhY3R1YWwgc2l6ZQorICAgICAgICAgICAgYm9sZCA9IGFjdHVhbEZvbnRbJ3dlaWdodCddID09ICdib2xkJwogICAgICAgICByZXR1cm4gKGZhbWlseSwgc2l6ZSwgJ2JvbGQnIGlmIGJvbGQgZWxzZSAnbm9ybWFsJykKIAogICAgIGRlZiBMb2FkQ2ZnRmlsZXMoc2VsZik6CkBAIC03MzksNiArNzY2LDE4IEBACiAKIGlkbGVDb25mID0gSWRsZUNvbmYoKQogCisKK193YXJuZWQgPSBzZXQoKQorZGVmIF93YXJuKG1zZywgKmtleSk6CisgICAga2V5ID0gKG1zZywpICsga2V5CisgICAgaWYga2V5IG5vdCBpbiBfd2FybmVkOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIF93YXJuZWQuYWRkKGtleSkKKworCiAjIFRPRE8gUmV2aXNlIHRlc3Qgb3V0cHV0LCB3cml0ZSBleHBhbmRlZCB1bml0dGVzdAogIwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5IGIvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZTgxMTguLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotIkRpYWxvZyB0byBzcGVjaWZ5IG9yIGVkaXQgdGhlIHBhcmFtZXRlcnMgZm9yIGEgdXNlciBjb25maWd1cmVkIGhlbHAgc291cmNlLiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWltcG9ydCB0a2ludGVyLmZpbGVkaWFsb2cgYXMgdGtGaWxlRGlhbG9nCi0KLWNsYXNzIEdldEhlbHBTb3VyY2VEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZW51SXRlbT0nJywgZmlsZVBhdGg9JycsIF9odGVzdD1GYWxzZSk6Ci0gICAgICAgICIiIkdldCBtZW51IGVudHJ5IGFuZCB1cmwvIGxvY2FsIGZpbGUgbG9jYXRpb24gZm9yIEFkZGl0aW9uYWwgSGVscAotCi0gICAgICAgIFVzZXIgc2VsZWN0cyBhIG5hbWUgZm9yIHRoZSBIZWxwIHJlc291cmNlIGFuZCBwcm92aWRlcyBhIHdlYiB1cmwKLSAgICAgICAgb3IgYSBsb2NhbCBmaWxlIGFzIGl0cyBzb3VyY2UuICBUaGUgdXNlciBjYW4gZW50ZXIgYSB1cmwgb3IgYnJvd3NlCi0gICAgICAgIGZvciB0aGUgZmlsZS4KLQotICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAotICAgICAgICAiIiIKLSAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQotICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQotICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCi0gICAgICAgIHNlbGYuZ3JhYl9zZXQoKQotICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jYW5jZWwpCi0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQotICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKLSAgICAgICAgc2VsZi5tZW51LnNldChtZW51SXRlbSkKLSAgICAgICAgc2VsZi5wYXRoLnNldChmaWxlUGF0aCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKLSAgICAgICAgI25lZWRzIHRvIGJlIGRvbmUgaGVyZSBzbyB0aGF0IHRoZSB3aW5mb19yZXF3aWR0aCBpcyB2YWxpZAotICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudC4gYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QuCi0gICAgICAgIHNlbGYuZ2VvbWV0cnkoCi0gICAgICAgICAgICAgICAgIislZCslZCIgJSAoCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKLSAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKLSAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkpKQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLmJpbmQoJzxSZXR1cm4+Jywgc2VsZi5vaykKLSAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCi0KLSAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6Ci0gICAgICAgIHNlbGYubWVudSA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLnBhdGggPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5mb250U2l6ZSA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLmZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsIGJvcmRlcndpZHRoPTIsIHJlbGllZj1HUk9PVkUpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIGxhYmVsTWVudSA9IExhYmVsKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdNZW51IEl0ZW06JykKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUgPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYubWVudSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0zMCkKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgbGFiZWxQYXRoID0gTGFiZWwoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9J0hlbHAgRmlsZSBQYXRoOiBFbnRlciBVUkwgb3IgYnJvd3NlIGZvciBmaWxlJykKLSAgICAgICAgc2VsZi5lbnRyeVBhdGggPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYucGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD00MCkKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgbGFiZWxNZW51LnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBzZWxmLmVudHJ5TWVudS5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgbGFiZWxQYXRoLnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBzZWxmLmVudHJ5UGF0aC5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgYnJvd3NlQnV0dG9uID0gQnV0dG9uKHNlbGYuZnJhbWVNYWluLCB0ZXh0PSdCcm93c2UnLCB3aWR0aD04LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLmJyb3dzZV9maWxlKQotICAgICAgICBicm93c2VCdXR0b24ucGFjayhwYWR5PTMpCi0gICAgICAgIGZyYW1lQnV0dG9ucyA9IEZyYW1lKHNlbGYpCi0gICAgICAgIGZyYW1lQnV0dG9ucy5wYWNrKHNpZGU9Qk9UVE9NLCBmaWxsPVgpCi0gICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdPSycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9OCwgZGVmYXVsdD1BQ1RJVkUsICBjb21tYW5kPXNlbGYub2spCi0gICAgICAgIHNlbGYuYnV0dG9uT2suZ3JpZChyb3c9MCwgY29sdW1uPTAsIHBhZHg9NSxwYWR5PTUpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2FuY2VsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLmNhbmNlbCkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwuZ3JpZChyb3c9MCwgY29sdW1uPTEsIHBhZHg9NSwgcGFkeT01KQotCi0gICAgZGVmIGJyb3dzZV9maWxlKHNlbGYpOgotICAgICAgICBmaWxldHlwZXMgPSBbCi0gICAgICAgICAgICAoIkhUTUwgRmlsZXMiLCAiKi5odG0gKi5odG1sIiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiUERGIEZpbGVzIiwgIioucGRmIiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiV2luZG93cyBIZWxwIEZpbGVzIiwgIiouY2htIiksCi0gICAgICAgICAgICAoIlRleHQgRmlsZXMiLCAiKi50eHQiLCAiVEVYVCIpLAotICAgICAgICAgICAgKCJBbGwgRmlsZXMiLCAiKiIpXQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpCi0gICAgICAgIGlmIHBhdGg6Ci0gICAgICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYXNlID0gTm9uZQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKLSAgICAgICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgJ0RvYycpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyKToKLSAgICAgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3BlbmRpYWxvZyA9IHRrRmlsZURpYWxvZy5PcGVuKHBhcmVudD1zZWxmLCBmaWxldHlwZXM9ZmlsZXR5cGVzKQotICAgICAgICBmaWxlID0gb3BlbmRpYWxvZy5zaG93KGluaXRpYWxkaXI9ZGlyLCBpbml0aWFsZmlsZT1iYXNlKQotICAgICAgICBpZiBmaWxlOgotICAgICAgICAgICAgc2VsZi5wYXRoLnNldChmaWxlKQotCi0gICAgZGVmIG1lbnVfb2soc2VsZik6Ci0gICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIGEgc2Vuc2libGUgbWVudSBpdGVtIG5hbWUiCi0gICAgICAgIG1lbnVfb2sgPSBUcnVlCi0gICAgICAgIG1lbnUgPSBzZWxmLm1lbnUuZ2V0KCkKLSAgICAgICAgbWVudS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBtZW51OgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTWVudSBJdGVtIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gbWVudSBpdGVtIHNwZWNpZmllZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIG1lbnVfb2sgPSBGYWxzZQotICAgICAgICBlbGlmIGxlbihtZW51KSA+IDMwOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTWVudSBJdGVtIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTWVudSBpdGVtIHRvbyBsb25nOicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5MaW1pdCAzMCBjaGFyYWN0ZXJzLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIG1lbnVfb2sgPSBGYWxzZQotICAgICAgICByZXR1cm4gbWVudV9vawotCi0gICAgZGVmIHBhdGhfb2soc2VsZik6Ci0gICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIG1lbnUgZmlsZSBwYXRoIgotICAgICAgICBwYXRoX29rID0gVHJ1ZQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpCi0gICAgICAgIHBhdGguc3RyaXAoKQotICAgICAgICBpZiBub3QgcGF0aDogI25vIHBhdGggc3BlY2lmaWVkCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIFBhdGggRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBoZWxwIGZpbGUgcGF0aCBzcGVjaWZpZWQuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBzZWxmLmVudHJ5UGF0aC5mb2N1c19zZXQoKQotICAgICAgICAgICAgcGF0aF9vayA9IEZhbHNlCi0gICAgICAgIGVsaWYgcGF0aC5zdGFydHN3aXRoKCgnd3d3LicsICdodHRwJykpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgcGF0aFs6NV0gPT0gJ2ZpbGU6JzoKLSAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs1Ol0KLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIFBhdGggRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVscCBmaWxlIHBhdGggZG9lcyBub3QgZXhpc3QuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuZW50cnlQYXRoLmZvY3VzX3NldCgpCi0gICAgICAgICAgICAgICAgcGF0aF9vayA9IEZhbHNlCi0gICAgICAgIHJldHVybiBwYXRoX29rCi0KLSAgICBkZWYgb2soc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIGlmIHNlbGYubWVudV9vaygpIGFuZCBzZWxmLnBhdGhfb2soKToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gKHNlbGYubWVudS5nZXQoKS5zdHJpcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmdldCgpLnN0cmlwKCkpCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHNlbGYucmVzdWx0WzFdCi0gICAgICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCgnd3d3JywgJ2ZpbGU6JywgJ2h0dHA6JywgJ2h0dHBzOicpKToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgTWFjIFNhZmFyaSBpbnNpc3RzIG9uIHVzaW5nIHRoZSBVUkkgZm9ybSBmb3IgbG9jYWwgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBsaXN0KHNlbGYucmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdFsxXSA9ICJmaWxlOi8vIiArIHBhdGgKLSAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLSAgICBkZWYgY2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKLSAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbmZpZ19oZWxwJywKLSAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKLQotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihHZXRIZWxwU291cmNlRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzNzgzNi4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLSIiIgotRGlhbG9nIHRoYXQgYWxsb3dzIHVzZXIgdG8gc3BlY2lmeSBhIG5ldyBjb25maWcgZmlsZSBzZWN0aW9uIG5hbWUuCi1Vc2VkIHRvIGdldCBuZXcgaGlnaGxpZ2h0IHRoZW1lIGFuZCBrZXliaW5kaW5nIHNldCBuYW1lcy4KLVRoZSAncmV0dXJuIHZhbHVlJyBmb3IgdGhlIGRpYWxvZywgdXNlZCB0d28gcGxhY2VkIGluIGNvbmZpZ0RpYWxvZy5weSwKLWlzIHRoZSAucmVzdWx0IGF0dHJpYnV0ZSBzZXQgaW4gdGhlIE9rIGFuZCBDYW5jZWwgbWV0aG9kcy4KLSIiIgotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotCi1jbGFzcyBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHVzZWRfbmFtZXMsIF9odGVzdD1GYWxzZSk6Ci0gICAgICAgICIiIgotICAgICAgICBtZXNzYWdlIC0gc3RyaW5nLCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheQotICAgICAgICB1c2VkX25hbWVzIC0gc3RyaW5nIGNvbGxlY3Rpb24sIG5hbWVzIGFscmVhZHkgaW4gdXNlIGZvciB2YWxpZGl0eSBjaGVjawotICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAotICAgICAgICAiIiIKLSAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQotICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQotICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCi0gICAgICAgIHNlbGYuZ3JhYl9zZXQoKQotICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5DYW5jZWwpCi0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKLSAgICAgICAgc2VsZi51c2VkX25hbWVzID0gdXNlZF9uYW1lcwotICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5Ci0gICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCi0gICAgICAgICNuZWVkcyB0byBiZSBkb25lIGhlcmUgc28gdGhhdCB0aGUgd2luZm9fcmVxd2lkdGggaXMgdmFsaWQKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mby5jb25maWcod2lkdGg9c2VsZi5mcmFtZU1haW4ud2luZm9fcmVxd2lkdGgoKSkKLSAgICAgICAgc2VsZi5nZW9tZXRyeSgKLSAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKwotICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKwotICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTAwKQotICAgICAgICAgICAgICAgICkgKSAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQgKG9yIGJlbG93IGh0ZXN0IGJveCkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQotCi0gICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgotICAgICAgICBzZWxmLm5hbWUgPSBTdHJpbmdWYXIoc2VsZi5wYXJlbnQpCi0gICAgICAgIHNlbGYuZm9udFNpemUgPSBTdHJpbmdWYXIoc2VsZi5wYXJlbnQpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluID0gRnJhbWUoc2VsZiwgYm9yZGVyd2lkdGg9MiwgcmVsaWVmPVNVTktFTikKLSAgICAgICAgc2VsZi5mcmFtZU1haW4ucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mbyA9IE1lc3NhZ2Uoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgIHBhZHg9NSwgcGFkeT01LCB0ZXh0PXNlbGYubWVzc2FnZSkgIyxhc3BlY3Q9MjAwKQotICAgICAgICBlbnRyeU5hbWUgPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYubmFtZSwgd2lkdGg9MzApCi0gICAgICAgIGVudHJ5TmFtZS5mb2N1c19zZXQoKQotICAgICAgICBzZWxmLm1lc3NhZ2VJbmZvLnBhY2socGFkeD01LCBwYWR5PTUpICMsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIGVudHJ5TmFtZS5wYWNrKHBhZHg9NSwgcGFkeT01KQotCi0gICAgICAgIGZyYW1lQnV0dG9ucyA9IEZyYW1lKHNlbGYsIHBhZHk9MikKLSAgICAgICAgZnJhbWVCdXR0b25zLnBhY2soc2lkZT1CT1RUT00pCi0gICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdPaycsCi0gICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLk9rKQotICAgICAgICBzZWxmLmJ1dHRvbk9rLnBhY2soc2lkZT1MRUZULCBwYWR4PTUpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2FuY2VsJywKLSAgICAgICAgICAgICAgICB3aWR0aD04LCBjb21tYW5kPXNlbGYuQ2FuY2VsKQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbC5wYWNrKHNpZGU9UklHSFQsIHBhZHg9NSkKLQotICAgIGRlZiBuYW1lX29rKHNlbGYpOgotICAgICAgICAnJycgQWZ0ZXIgc3RyaXBwaW5nIGVudGVyZWQgbmFtZSwgY2hlY2sgdGhhdCBpdCBpcyBhICBzZW5zaWJsZQotICAgICAgICBDb25maWdQYXJzZXIgZmlsZSBzZWN0aW9uIG5hbWUuIFJldHVybiBpdCBpZiBpdCBpcywgJycgaWYgbm90LgotICAgICAgICAnJycKLSAgICAgICAgbmFtZSA9IHNlbGYubmFtZS5nZXQoKS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOiAjbm8gbmFtZSBzcGVjaWZpZWQKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBuYW1lIHNwZWNpZmllZC4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgZWxpZiBsZW4obmFtZSk+MzA6ICNuYW1lIHRvbyBsb25nCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTmFtZSB0b28gbG9uZy4gSXQgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAnKwotICAgICAgICAgICAgICAgICAgICAnMzAgY2hhcmFjdGVycy4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi51c2VkX25hbWVzOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1RoaXMgbmFtZSBpcyBhbHJlYWR5IGluIHVzZS4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICByZXR1cm4gbmFtZQotCi0gICAgZGVmIE9rKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBuYW1lID0gc2VsZi5uYW1lX29rKCkKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gbmFtZQotICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotICAgIGRlZiBDYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gJycKLSAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbmZpZ19uYW1lJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCi0KLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb25maWdfa2V5LnB5CmluZGV4IGU2NDM4YmYuLjI2MDIyOTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQpAQCAtMiwzMSArMiwzNSBAQAogRGlhbG9nIGZvciBidWlsZGluZyBUa2ludGVyIGFjY2VsZXJhdG9yIGtleSBiaW5kaW5ncwogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIAogY2xhc3MgR2V0S2V5c0RpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LHRpdGxlLGFjdGlvbixjdXJyZW50S2V5U2VxdWVuY2VzLF9odGVzdD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIGFjdGlvbiwgY3VycmVudEtleVNlcXVlbmNlcywKKyAgICAgICAgICAgICAgICAgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgYWN0aW9uIC0gc3RyaW5nLCB0aGUgbmFtZSBvZiB0aGUgdmlydHVhbCBldmVudCB0aGVzZSBrZXlzIHdpbGwgYmUKICAgICAgICAgICAgICAgICAgbWFwcGVkIHRvCiAgICAgICAgIGN1cnJlbnRLZXlzIC0gbGlzdCwgYSBsaXN0IG9mIGFsbCBrZXkgc2VxdWVuY2UgbGlzdHMgY3VycmVudGx5IG1hcHBlZAogICAgICAgICAgICAgICAgICB0byB2aXJ0dWFsIGV2ZW50cywgZm9yIG92ZXJsYXAgY2hlY2tpbmcKKyAgICAgICAgX3V0ZXN0IC0gYm9vbCwgZG8gbm90IHdhaXQgd2hlbiBydW5uaW5nIHVuaXR0ZXN0CiAgICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0CiAgICAgICAgICIiIgogICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCisgICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5CiAgICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSx3aWR0aD1GQUxTRSkKKyAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKICAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKICAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQogICAgICAgICBzZWxmLmdyYWJfc2V0KCkKICAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuQ2FuY2VsKQogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLmFjdGlvbj1hY3Rpb24KLSAgICAgICAgc2VsZi5jdXJyZW50S2V5U2VxdWVuY2VzPWN1cnJlbnRLZXlTZXF1ZW5jZXMKLSAgICAgICAgc2VsZi5yZXN1bHQ9JycKLSAgICAgICAgc2VsZi5rZXlTdHJpbmc9U3RyaW5nVmFyKHNlbGYpCisgICAgICAgIHNlbGYuY3VycmVudEtleVNlcXVlbmNlcyA9IGN1cnJlbnRLZXlTZXF1ZW5jZXMKKyAgICAgICAgc2VsZi5yZXN1bHQgPSAnJworICAgICAgICBzZWxmLmtleVN0cmluZyA9IFN0cmluZ1ZhcihzZWxmKQogICAgICAgICBzZWxmLmtleVN0cmluZy5zZXQoJycpCiAgICAgICAgIHNlbGYuU2V0TW9kaWZpZXJzRm9yUGxhdGZvcm0oKSAjIHNldCBzZWxmLm1vZGlmaWVycywgc2VsZi5tb2RpZmllcl9sYWJlbAogICAgICAgICBzZWxmLm1vZGlmaWVyX3ZhcnMgPSBbXQpAQCAtMzcsNyArNDEsNiBAQAogICAgICAgICBzZWxmLmFkdmFuY2VkID0gRmFsc2UKICAgICAgICAgc2VsZi5DcmVhdGVXaWRnZXRzKCkKICAgICAgICAgc2VsZi5Mb2FkRmluYWxLZXlMaXN0KCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKICAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKICAgICAgICAgc2VsZi5nZW9tZXRyeSgKICAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKQEAgLTQ3LDggKzUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkKICAgICAgICAgICAgICAgICApICkgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQorICAgICAgICBpZiBub3QgX3V0ZXN0OgorICAgICAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKKyAgICAgICAgICAgIHNlbGYud2FpdF93aW5kb3coKQogCiAgICAgZGVmIENyZWF0ZVdpZGdldHMoc2VsZik6CiAgICAgICAgIGZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsYm9yZGVyd2lkdGg9MixyZWxpZWY9U1VOS0VOKQpAQCAtMjYxLDYgKzI2NSw3IEBACiAgICAgICAgICAgICBrZXlzT0sgPSBUcnVlCiAgICAgICAgIHJldHVybiBrZXlzT0sKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihHZXRLZXlzRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CmluZGV4IDVmNWJkMzYuLjgxODQ1ODIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdkaWFsb2cucHkKQEAgLTEwLDE4ICsxMCwxOCBAQAogCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgogaW1wb3J0IHRraW50ZXIuY29sb3JjaG9vc2VyIGFzIHRrQ29sb3JDaG9vc2VyCiBpbXBvcnQgdGtpbnRlci5mb250IGFzIHRrRm9udAoraW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIuZHluT3B0aW9uTWVudVdpZGdldCBpbXBvcnQgRHluT3B0aW9uTWVudQotZnJvbSBpZGxlbGliLmtleWJpbmRpbmdEaWFsb2cgaW1wb3J0IEdldEtleXNEaWFsb2cKLWZyb20gaWRsZWxpYi5jb25maWdTZWN0aW9uTmFtZURpYWxvZyBpbXBvcnQgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cKLWZyb20gaWRsZWxpYi5jb25maWdIZWxwU291cmNlRWRpdCBpbXBvcnQgR2V0SGVscFNvdXJjZURpYWxvZworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWdfa2V5IGltcG9ydCBHZXRLZXlzRGlhbG9nCitmcm9tIGlkbGVsaWIuZHlub3B0aW9uIGltcG9ydCBEeW5PcHRpb25NZW51Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLnF1ZXJ5IGltcG9ydCBTZWN0aW9uTmFtZSwgSGVscFNvdXJjZQogZnJvbSBpZGxlbGliLnRhYmJlZHBhZ2VzIGltcG9ydCBUYWJiZWRQYWdlU2V0Ci1mcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfdGV4dAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIudGV4dHZpZXcgaW1wb3J0IHZpZXdfdGV4dAogCiBjbGFzcyBDb25maWdEaWFsb2coVG9wbGV2ZWwpOgogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgIHNlbGYuY3JlYXRlX2FjdGlvbl9idXR0b25zKCkucGFjayhzaWRlPUJPVFRPTSkKIAogICAgIGRlZiBjcmVhdGVfYWN0aW9uX2J1dHRvbnMoc2VsZik6Ci0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICAjIENoYW5naW5nIHRoZSBkZWZhdWx0IHBhZGRpbmcgb24gT1NYIHJlc3VsdHMgaW4gdW5yZWFkYWJsZQogICAgICAgICAgICAgIyB0ZXh0IGluIHRoZSBidXR0b25zCiAgICAgICAgICAgICBwYWRkaW5nQXJncyA9IHt9CkBAIC0zNDEsNiArMzQxLDcgQEAKICAgICAgICAgYnV0dG9uU2F2ZUN1c3RvbUtleXMgPSBCdXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVzWzFdLCB0ZXh0PSdTYXZlIGFzIE5ldyBDdXN0b20gS2V5IFNldCcsCiAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLlNhdmVBc05ld0tleVNldCkKKyAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMgPSBMYWJlbChmcmFtZXNbMF0sIGJkPTIpCiAKICAgICAgICAgIyN3aWRnZXQgcGFja2luZwogICAgICAgICAjYm9keQpAQCAtMzYxLDYgKzM2Miw3IEBACiAgICAgICAgIHNlbGYucmFkaW9LZXlzQ3VzdG9tLmdyaWQocm93PTEsIGNvbHVtbj0wLCBzdGlja3k9VytOUykKICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uZ3JpZChyb3c9MCwgY29sdW1uPTEsIHN0aWNreT1OU0VXKQogICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQ3VzdG9tLmdyaWQocm93PTEsIGNvbHVtbj0xLCBzdGlja3k9TlNFVykKKyAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMuZ3JpZChyb3c9MCwgY29sdW1uPTIsIHN0aWNreT1OU0VXLCBwYWR4PTUsIHBhZHk9NSkKICAgICAgICAgc2VsZi5idXR0b25EZWxldGVDdXN0b21LZXlzLnBhY2soc2lkZT1MRUZULCBmaWxsPVgsIGV4cGFuZD1UcnVlLCBwYWR4PTIpCiAgICAgICAgIGJ1dHRvblNhdmVDdXN0b21LZXlzLnBhY2soc2lkZT1MRUZULCBmaWxsPVgsIGV4cGFuZD1UcnVlLCBwYWR4PTIpCiAgICAgICAgIGZyYW1lc1swXS5wYWNrKHNpZGU9VE9QLCBmaWxsPUJPVEgsIGV4cGFuZD1UcnVlKQpAQCAtMzkwLDI4ICszOTIsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PScgQWRkaXRpb25hbCBIZWxwIFNvdXJjZXMgJykKICAgICAgICAgI2ZyYW1lUnVuCiAgICAgICAgIGxhYmVsUnVuQ2hvaWNlVGl0bGUgPSBMYWJlbChmcmFtZVJ1biwgdGV4dD0nQXQgU3RhcnR1cCcpCi0gICAgICAgIHJhZGlvU3RhcnR1cEVkaXQgPSBSYWRpb2J1dHRvbigKKyAgICAgICAgc2VsZi5yYWRpb1N0YXJ0dXBFZGl0ID0gUmFkaW9idXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVSdW4sIHZhcmlhYmxlPXNlbGYuc3RhcnR1cEVkaXQsIHZhbHVlPTEsCi0gICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLlNldEtleXNUeXBlLCB0ZXh0PSJPcGVuIEVkaXQgV2luZG93IikKLSAgICAgICAgcmFkaW9TdGFydHVwU2hlbGwgPSBSYWRpb2J1dHRvbigKKyAgICAgICAgICAgICAgICB0ZXh0PSJPcGVuIEVkaXQgV2luZG93IikKKyAgICAgICAgc2VsZi5yYWRpb1N0YXJ0dXBTaGVsbCA9IFJhZGlvYnV0dG9uKAogICAgICAgICAgICAgICAgIGZyYW1lUnVuLCB2YXJpYWJsZT1zZWxmLnN0YXJ0dXBFZGl0LCB2YWx1ZT0wLAotICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TZXRLZXlzVHlwZSwgdGV4dD0nT3BlbiBTaGVsbCBXaW5kb3cnKQorICAgICAgICAgICAgICAgIHRleHQ9J09wZW4gU2hlbGwgV2luZG93JykKICAgICAgICAgI2ZyYW1lU2F2ZQogICAgICAgICBsYWJlbFJ1blNhdmVUaXRsZSA9IExhYmVsKGZyYW1lU2F2ZSwgdGV4dD0nQXQgU3RhcnQgb2YgUnVuIChGNSkgICcpCi0gICAgICAgIHJhZGlvU2F2ZUFzayA9IFJhZGlvYnV0dG9uKAorICAgICAgICBzZWxmLnJhZGlvU2F2ZUFzayA9IFJhZGlvYnV0dG9uKAogICAgICAgICAgICAgICAgIGZyYW1lU2F2ZSwgdmFyaWFibGU9c2VsZi5hdXRvU2F2ZSwgdmFsdWU9MCwKLSAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuU2V0S2V5c1R5cGUsIHRleHQ9IlByb21wdCB0byBTYXZlIikKLSAgICAgICAgcmFkaW9TYXZlQXV0byA9IFJhZGlvYnV0dG9uKAorICAgICAgICAgICAgICAgIHRleHQ9IlByb21wdCB0byBTYXZlIikKKyAgICAgICAgc2VsZi5yYWRpb1NhdmVBdXRvID0gUmFkaW9idXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVTYXZlLCB2YXJpYWJsZT1zZWxmLmF1dG9TYXZlLCB2YWx1ZT0xLAotICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TZXRLZXlzVHlwZSwgdGV4dD0nTm8gUHJvbXB0JykKKyAgICAgICAgICAgICAgICB0ZXh0PSdObyBQcm9tcHQnKQogICAgICAgICAjZnJhbWVXaW5TaXplCiAgICAgICAgIGxhYmVsV2luU2l6ZVRpdGxlID0gTGFiZWwoCiAgICAgICAgICAgICAgICAgZnJhbWVXaW5TaXplLCB0ZXh0PSdJbml0aWFsIFdpbmRvdyBTaXplICAoaW4gY2hhcmFjdGVycyknKQogICAgICAgICBsYWJlbFdpbldpZHRoVGl0bGUgPSBMYWJlbChmcmFtZVdpblNpemUsIHRleHQ9J1dpZHRoJykKLSAgICAgICAgZW50cnlXaW5XaWR0aCA9IEVudHJ5KAorICAgICAgICBzZWxmLmVudHJ5V2luV2lkdGggPSBFbnRyeSgKICAgICAgICAgICAgICAgICBmcmFtZVdpblNpemUsIHRleHR2YXJpYWJsZT1zZWxmLndpbldpZHRoLCB3aWR0aD0zKQogICAgICAgICBsYWJlbFdpbkhlaWdodFRpdGxlID0gTGFiZWwoZnJhbWVXaW5TaXplLCB0ZXh0PSdIZWlnaHQnKQotICAgICAgICBlbnRyeVdpbkhlaWdodCA9IEVudHJ5KAorICAgICAgICBzZWxmLmVudHJ5V2luSGVpZ2h0ID0gRW50cnkoCiAgICAgICAgICAgICAgICAgZnJhbWVXaW5TaXplLCB0ZXh0dmFyaWFibGU9c2VsZi53aW5IZWlnaHQsIHdpZHRoPTMpCiAgICAgICAgICNmcmFtZUhlbHAKICAgICAgICAgZnJhbWVIZWxwTGlzdCA9IEZyYW1lKGZyYW1lSGVscCkKQEAgLTQ0MSwxNyArNDQzLDE3IEBACiAgICAgICAgIGZyYW1lSGVscC5wYWNrKHNpZGU9VE9QLCBwYWR4PTUsIHBhZHk9NSwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKICAgICAgICAgI2ZyYW1lUnVuCiAgICAgICAgIGxhYmVsUnVuQ2hvaWNlVGl0bGUucGFjayhzaWRlPUxFRlQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKLSAgICAgICAgcmFkaW9TdGFydHVwU2hlbGwucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCi0gICAgICAgIHJhZGlvU3RhcnR1cEVkaXQucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCisgICAgICAgIHNlbGYucmFkaW9TdGFydHVwU2hlbGwucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCisgICAgICAgIHNlbGYucmFkaW9TdGFydHVwRWRpdC5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKICAgICAgICAgI2ZyYW1lU2F2ZQogICAgICAgICBsYWJlbFJ1blNhdmVUaXRsZS5wYWNrKHNpZGU9TEVGVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQotICAgICAgICByYWRpb1NhdmVBdXRvLnBhY2soc2lkZT1SSUdIVCwgYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT01KQotICAgICAgICByYWRpb1NhdmVBc2sucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCisgICAgICAgIHNlbGYucmFkaW9TYXZlQXV0by5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKKyAgICAgICAgc2VsZi5yYWRpb1NhdmVBc2sucGFjayhzaWRlPVJJR0hULCBhbmNob3I9VywgcGFkeD01LCBwYWR5PTUpCiAgICAgICAgICNmcmFtZVdpblNpemUKICAgICAgICAgbGFiZWxXaW5TaXplVGl0bGUucGFjayhzaWRlPUxFRlQsIGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9NSkKLSAgICAgICAgZW50cnlXaW5IZWlnaHQucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeD0xMCwgcGFkeT01KQorICAgICAgICBzZWxmLmVudHJ5V2luSGVpZ2h0LnBhY2soc2lkZT1SSUdIVCwgYW5jaG9yPUUsIHBhZHg9MTAsIHBhZHk9NSkKICAgICAgICAgbGFiZWxXaW5IZWlnaHRUaXRsZS5wYWNrKHNpZGU9UklHSFQsIGFuY2hvcj1FLCBwYWR5PTUpCi0gICAgICAgIGVudHJ5V2luV2lkdGgucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeD0xMCwgcGFkeT01KQorICAgICAgICBzZWxmLmVudHJ5V2luV2lkdGgucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeD0xMCwgcGFkeT01KQogICAgICAgICBsYWJlbFdpbldpZHRoVGl0bGUucGFjayhzaWRlPVJJR0hULCBhbmNob3I9RSwgcGFkeT01KQogICAgICAgICAjZnJhbWVIZWxwCiAgICAgICAgIGZyYW1lSGVscExpc3RCdXR0b25zLnBhY2soc2lkZT1SSUdIVCwgcGFkeD01LCBwYWR5PTUsIGZpbGw9WSkKQEAgLTQ2NCwyNCArNDY2LDI0IEBACiAgICAgICAgIHJldHVybiBmcmFtZQogCiAgICAgZGVmIEF0dGFjaFZhckNhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc2VsZi5mb250U2l6ZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuZm9udEJvbGQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5zcGFjZU51bS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKLSAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY29sb3VyKQotICAgICAgICBzZWxmLmJ1aWx0aW5UaGVtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUpCi0gICAgICAgIHNlbGYuY3VzdG9tVGhlbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCi0gICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfdGhlbWVJc0J1aWx0aW4pCi0gICAgICAgIHNlbGYuaGlnaGxpZ2h0VGFyZ2V0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2hpZ2hsaWdodFRhcmdldCkKLSAgICAgICAgc2VsZi5rZXlCaW5kaW5nLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCi0gICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpbktleXMpCi0gICAgICAgIHNlbGYuY3VzdG9tS2V5cy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21LZXlzKQotICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQotICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3dpbldpZHRoKQotICAgICAgICBzZWxmLndpbkhlaWdodC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF93aW5IZWlnaHQpCi0gICAgICAgIHNlbGYuc3RhcnR1cEVkaXQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCi0gICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYXV0b1NhdmUpCi0gICAgICAgIHNlbGYuZW5jb2RpbmcudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZW5jb2RpbmcpCisgICAgICAgIHNlbGYuZm9udFNpemUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5mb250Qm9sZC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuc3BhY2VOdW0udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKKyAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jb2xvdXIpCisgICAgICAgIHNlbGYuYnVpbHRpblRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpblRoZW1lKQorICAgICAgICBzZWxmLmN1c3RvbVRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCisgICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF90aGVtZUlzQnVpbHRpbikKKyAgICAgICAgc2VsZi5oaWdobGlnaHRUYXJnZXQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9oaWdobGlnaHRUYXJnZXQpCisgICAgICAgIHNlbGYua2V5QmluZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCisgICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluS2V5cykKKyAgICAgICAgc2VsZi5jdXN0b21LZXlzLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tS2V5cykKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQorICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luV2lkdGgpCisgICAgICAgIHNlbGYud2luSGVpZ2h0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luSGVpZ2h0KQorICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCisgICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9hdXRvU2F2ZSkKKyAgICAgICAgc2VsZi5lbmNvZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2VuY29kaW5nKQogCiAgICAgZGVmIHJlbW92ZV92YXJfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICAiUmVtb3ZlIGNhbGxiYWNrcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4iCkBAIC00OTIsNyArNDk0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmtleUJpbmRpbmcsIHNlbGYuYnVpbHRpbktleXMsIHNlbGYuY3VzdG9tS2V5cywKICAgICAgICAgICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLCBzZWxmLndpbldpZHRoLCBzZWxmLndpbkhlaWdodCwKICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LCBzZWxmLmF1dG9TYXZlLCBzZWxmLmVuY29kaW5nLCk6Ci0gICAgICAgICAgICB2YXIudHJhY2VfdmRlbGV0ZSgndycsIHZhci50cmFjZV92aW5mbygpWzBdWzFdKQorICAgICAgICAgICAgdmFyLnRyYWNlX3JlbW92ZSgnd3JpdGUnLCB2YXIudHJhY2VfaW5mbygpWzBdWzFdKQogCiAgICAgZGVmIFZhckNoYW5nZWRfZm9udChzZWxmLCAqcGFyYW1zKToKICAgICAgICAgJycnV2hlbiBvbmUgZm9udCBhdHRyaWJ1dGUgY2hhbmdlcywgc2F2ZSB0aGVtIGFsbCwgYXMgdGhleSBhcmUKQEAgLTUxNCwxMCArNTE2LDExIEBACiAgICAgICAgIHNlbGYuT25OZXdDb2xvdXJTZXQoKQogCiAgICAgZGVmIFZhckNoYW5nZWRfYnVpbHRpblRoZW1lKHNlbGYsICpwYXJhbXMpOgorICAgICAgICBvbGR0aGVtZXMgPSAoJ0lETEUgQ2xhc3NpYycsICdJRExFIE5ldycpCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluVGhlbWUuZ2V0KCkKLSAgICAgICAgaWYgdmFsdWUgPT0gJ0lETEUgRGFyayc6Ci0gICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpICE9ICdJRExFIE5ldyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgJ0lETEUgQ2xhc3NpYycpCisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgb2xkdGhlbWVzWzBdKQogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lMicsIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX3RoZW1lLmNvbmZpZyh0ZXh0PSdOZXcgdGhlbWUsIHNlZSBIZWxwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9JyM1MDAwMDAnKQpAQCAtNTU3LDggKzU2MCwyMyBAQAogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnZXh0ZW5zaW9ucycsIGV4dEtleWJpbmRTZWN0aW9uLCBldmVudCwgdmFsdWUpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9idWlsdGluS2V5cyhzZWxmLCAqcGFyYW1zKToKKyAgICAgICAgb2xka2V5cyA9ICgKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgV2luZG93cycsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIFVuaXgnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBNYWMnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBPU1gnLAorICAgICAgICApCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluS2V5cy5nZXQoKQotICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIHZhbHVlKQorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnKSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIG9sZGtleXNbMF0pCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PSdOZXcga2V5IHNldCwgc2VlIEhlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPScjNTAwMDAwJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgdmFsdWUpCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCAnJykKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PScnLCBmZz0nYmxhY2snKQogICAgICAgICBzZWxmLkxvYWRLZXlzTGlzdCh2YWx1ZSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2N1c3RvbUtleXMoc2VsZiwgKnBhcmFtcyk6CkBAIC02ODMsNyArNzAxLDcgQEAKICAgICBkZWYgR2V0TmV3S2V5c05hbWUoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHVzZWROYW1lcyA9IChpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgndXNlcicsICdrZXlzJykgKwogICAgICAgICAgICAgICAgIGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2tleXMnKSkKLSAgICAgICAgbmV3S2V5U2V0ID0gR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coCisgICAgICAgIG5ld0tleVNldCA9IFNlY3Rpb25OYW1lKAogICAgICAgICAgICAgICAgIHNlbGYsICdOZXcgQ3VzdG9tIEtleSBTZXQnLCBtZXNzYWdlLCB1c2VkTmFtZXMpLnJlc3VsdAogICAgICAgICByZXR1cm4gbmV3S2V5U2V0CiAKQEAgLTc2Nyw4ICs3ODUsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgaXRlbUxpc3RbMF0pCiAgICAgICAgICNyZXZlcnQgdG8gZGVmYXVsdCBrZXkgc2V0Ci0gICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4uc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQotICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQorICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKSkKICAgICAgICAgI3VzZXIgY2FuJ3QgYmFjayBvdXQgb2YgdGhlc2UgY2hhbmdlcywgdGhleSBtdXN0IGJlIGFwcGxpZWQgbm93CiAgICAgICAgIHNlbGYuU2F2ZUFsbENoYW5nZWRDb25maWdzKCkKICAgICAgICAgc2VsZi5BY3RpdmF0ZUNvbmZpZ0NoYW5nZXMoKQpAQCAtODM2LDcgKzg1Niw3IEBACiAgICAgZGVmIEdldE5ld1RoZW1lTmFtZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgdXNlZE5hbWVzID0gKGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCd1c2VyJywgJ2hpZ2hsaWdodCcpICsKICAgICAgICAgICAgICAgICBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdoaWdobGlnaHQnKSkKLSAgICAgICAgbmV3VGhlbWUgPSBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZygKKyAgICAgICAgbmV3VGhlbWUgPSBTZWN0aW9uTmFtZSgKICAgICAgICAgICAgICAgICBzZWxmLCAnTmV3IEN1c3RvbSBUaGVtZScsIG1lc3NhZ2UsIHVzZWROYW1lcykucmVzdWx0CiAgICAgICAgIHJldHVybiBuZXdUaGVtZQogCkBAIC05MzksNyArOTU5LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmJ1dHRvbkhlbHBMaXN0UmVtb3ZlLmNvbmZpZyhzdGF0ZT1ESVNBQkxFRCkKIAogICAgIGRlZiBIZWxwTGlzdEl0ZW1BZGQoc2VsZik6Ci0gICAgICAgIGhlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKHNlbGYsICdOZXcgSGVscCBTb3VyY2UnKS5yZXN1bHQKKyAgICAgICAgaGVscFNvdXJjZSA9IEhlbHBTb3VyY2Uoc2VsZiwgJ05ldyBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkucmVzdWx0CiAgICAgICAgIGlmIGhlbHBTb3VyY2U6CiAgICAgICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdC5hcHBlbmQoKGhlbHBTb3VyY2VbMF0sIGhlbHBTb3VyY2VbMV0pKQogICAgICAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoRU5ELCBoZWxwU291cmNlWzBdKQpAQCAtOTQ5LDE2ICs5NzAsMTcgQEAKICAgICBkZWYgSGVscExpc3RJdGVtRWRpdChzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCiAgICAgICAgIGhlbHBTb3VyY2UgPSBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdCi0gICAgICAgIG5ld0hlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKAotICAgICAgICAgICAgICAgIHNlbGYsICdFZGl0IEhlbHAgU291cmNlJywgbWVudUl0ZW09aGVscFNvdXJjZVswXSwKLSAgICAgICAgICAgICAgICBmaWxlUGF0aD1oZWxwU291cmNlWzFdKS5yZXN1bHQKLSAgICAgICAgaWYgKG5vdCBuZXdIZWxwU291cmNlKSBvciAobmV3SGVscFNvdXJjZSA9PSBoZWxwU291cmNlKToKLSAgICAgICAgICAgIHJldHVybiAjbm8gY2hhbmdlcwotICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdID0gbmV3SGVscFNvdXJjZQotICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCi0gICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KGl0ZW1JbmRleCwgbmV3SGVscFNvdXJjZVswXSkKLSAgICAgICAgc2VsZi5VcGRhdGVVc2VySGVscENoYW5nZWRJdGVtcygpCi0gICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQorICAgICAgICBuZXdIZWxwU291cmNlID0gSGVscFNvdXJjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAnRWRpdCBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgbWVudWl0ZW09aGVscFNvdXJjZVswXSwKKyAgICAgICAgICAgICAgICBmaWxlcGF0aD1oZWxwU291cmNlWzFdLAorICAgICAgICAgICAgICAgICkucmVzdWx0CisgICAgICAgIGlmIG5ld0hlbHBTb3VyY2UgYW5kIG5ld0hlbHBTb3VyY2UgIT0gaGVscFNvdXJjZToKKyAgICAgICAgICAgIHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0gPSBuZXdIZWxwU291cmNlCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChpdGVtSW5kZXgsIG5ld0hlbHBTb3VyY2VbMF0pCisgICAgICAgICAgICBzZWxmLlVwZGF0ZVVzZXJIZWxwQ2hhbmdlZEl0ZW1zKCkKKyAgICAgICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQogCiAgICAgZGVmIEhlbHBMaXN0SXRlbVJlbW92ZShzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCkBAIC05OTYsNyArMTAxOCw4IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMjZm9udCBzaXplIGRyb3Bkb3duCiAgICAgICAgIHNlbGYub3B0TWVudUZvbnRTaXplLlNldE1lbnUoKCc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicpLCBmb250U2l6ZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNScsICcyOScsICczNCcsICc0MCcpLCBmb250U2l6ZSApCiAgICAgICAgICMjZm9udFdlaWdodAogICAgICAgICBzZWxmLmZvbnRCb2xkLnNldChmb250Qm9sZCkKICAgICAgICAgIyNmb250IHNhbXBsZQpAQCAtMTA2NSw3ICsxMDg4LDcgQEAKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgY3VycmVudE9wdGlvbikKICAgICAgICAgICAgIGl0ZW1MaXN0ID0gaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAna2V5cycpCiAgICAgICAgICAgICBpdGVtTGlzdC5zb3J0KCkKLSAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLlNldE1lbnUoaXRlbUxpc3QsIGl0ZW1MaXN0WzBdKQorICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uU2V0TWVudShpdGVtTGlzdCwgaWRsZUNvbmYuZGVmYXVsdF9rZXlzKCkpCiAgICAgICAgIHNlbGYuU2V0S2V5c1R5cGUoKQogICAgICAgICAjI2xvYWQga2V5c2V0IGVsZW1lbnQgbGlzdAogICAgICAgICBrZXlTZXROYW1lID0gaWRsZUNvbmYuQ3VycmVudEtleXMoKQpAQCAtMTM2NywxMiArMTM5MCwxOCBAQAogW0NhbmNlbF0gb25seSBjYW5jZWxzIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCBzYXZlLgogJycnCiBoZWxwX3BhZ2VzID0gewotICAgICdIaWdobGlnaHRpbmcnOicnJworICAgICdIaWdobGlnaHRpbmcnOiAnJycKIEhpZ2hsaWdodGluZzoKIFRoZSBJRExFIERhcmsgY29sb3IgdGhlbWUgaXMgbmV3IGluIE9jdG9iZXIgMjAxNS4gIEl0IGNhbiBvbmx5CiBiZSB1c2VkIHdpdGggb2xkZXIgSURMRSByZWxlYXNlcyBpZiBpdCBpcyBzYXZlZCBhcyBhIGN1c3RvbQogdGhlbWUsIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLScnJworJycnLAorICAgICdLZXlzJzogJycnCitLZXlzOgorVGhlIElETEUgTW9kZXJuIFVuaXgga2V5IHNldCBpcyBuZXcgaW4gSnVuZSAyMDE2LiAgSXQgY2FuIG9ubHkKK2JlIHVzZWQgd2l0aCBvbGRlciBJRExFIHJlbGVhc2VzIGlmIGl0IGlzIHNhdmVkIGFzIGEgY3VzdG9tCitrZXkgc2V0LCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisnJycsCiB9CiAKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9EZWJ1Z2dlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdnZXIucHkKaW5kZXggZDVlMjE3ZC4uMTE0ZDBkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdnZXIucHkKQEAgLTEsOSArMSwxMiBAQAotaW1wb3J0IG9zCiBpbXBvcnQgYmRiCitpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuV2luZG93TGlzdCBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKLWZyb20gaWRsZWxpYi5TY3JvbGxlZExpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5zY3JvbGxlZGxpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAorZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIAogY2xhc3MgSWRiKGJkYi5CZGIpOgpAQCAtMzQsOCArMzcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmV2X2ZyYW1lID0gZnJhbWUuZl9iYWNrCi0gICAgICAgICAgICBpZiBwcmV2X2ZyYW1lLmZfY29kZS5jb19maWxlbmFtZS5jb3VudCgnRGVidWdnZXIucHknKToKLSAgICAgICAgICAgICAgICAjICh0aGF0IHRlc3Qgd2lsbCBjYXRjaCBib3RoIERlYnVnZ2VyLnB5IGFuZCBSZW1vdGVEZWJ1Z2dlci5weSkKKyAgICAgICAgICAgIHByZXZfbmFtZSA9IHByZXZfZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiAnaWRsZWxpYicgaW4gcHJldl9uYW1lIGFuZCAnZGVidWdnZXInIGluIHByZXZfbmFtZToKKyAgICAgICAgICAgICAgICAjIGNhdGNoIGJvdGggaWRsZWxpYi9kZWJ1Z2dlci5weSBhbmQgaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CisgICAgICAgICAgICAgICAgIyBvbiBib3RoIHBvc2l4IGFuZCB3aW5kb3dzCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbl9ycGNfY29kZShwcmV2X2ZyYW1lKQogCkBAIC0zNzAsNyArMzc1LDcgQEAKIGNsYXNzIFN0YWNrVmlld2VyKFNjcm9sbGVkTGlzdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCBmbGlzdCwgZ3VpKToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQXQgbGVhc3Qgb24gd2l0aCB0aGUgc3RvY2sgQXF1YVRrIHZlcnNpb24gb24gT1NYIDEwLjQgeW91J2xsCiAgICAgICAgICAgICAjIGdldCBhIHNoYWtpbmcgR1VJIHRoYXQgZXZlbnR1YWxseSBraWxscyBJRExFIGlmIHRoZSB3aWR0aAogICAgICAgICAgICAgIyBhcmd1bWVudCBpcyBzcGVjaWZpZWQuCkBAIC01MDIsNyArNTA3LDcgQEAKICAgICAgICAgICAgICMKICAgICAgICAgICAgICMgVGhlcmUgaXMgYWxzbyBhbiBvYnNjdXJlIGJ1ZyBpbiBzb3J0ZWQoZGljdCkgd2hlcmUgdGhlCiAgICAgICAgICAgICAjIGludGVycHJldGVyIGdldHMgaW50byBhIGxvb3AgcmVxdWVzdGluZyBub24tZXhpc3RpbmcgZGljdFswXSwKLSAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIFJlbW90ZURlYnVnZ2VyLkRpY3RQcm94eS4KKyAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIGRlYnVnZ2VyX3IuRGljdFByb3h5LgogICAgICAgICAgICAgIyMjCiAgICAgICAgICAgICBrZXlzX2xpc3QgPSBkaWN0LmtleXMoKQogICAgICAgICAgICAgbmFtZXMgPSBzb3J0ZWQoa2V5c19saXN0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CmluZGV4IGJlMjI2MmYuLmJjOTcxMjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKQEAgLTIxLDcgKzIxLDcgQEAKICIiIgogCiBpbXBvcnQgdHlwZXMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKIAogZGVidWdnaW5nID0gMAogCkBAIC0xODcsNyArMTg3LDcgQEAKIAogICAgICIiIgogICAgIGd1aV9wcm94eSA9IEdVSVByb3h5KHJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKLSAgICBpZGIgPSBEZWJ1Z2dlci5JZGIoZ3VpX3Byb3h5KQorICAgIGlkYiA9IGRlYnVnZ2VyLklkYihndWlfcHJveHkpCiAgICAgaWRiX2FkYXAgPSBJZGJBZGFwdGVyKGlkYikKICAgICBycGNoYW5kbGVyLnJlZ2lzdGVyKGlkYl9hZGFwX29pZCwgaWRiX2FkYXApCiAgICAgcmV0dXJuIGlkYl9hZGFwX29pZApAQCAtMzYyLDcgKzM2Miw3IEBACiAgICAgaWRiX2FkYXBfb2lkID0gcnBjY2x0LnJlbW90ZWNhbGwoImV4ZWMiLCAic3RhcnRfdGhlX2RlYnVnZ2VyIixcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndWlfYWRhcF9vaWQsKSwge30pCiAgICAgaWRiX3Byb3h5ID0gSWRiUHJveHkocnBjY2x0LCBweXNoZWxsLCBpZGJfYWRhcF9vaWQpCi0gICAgZ3VpID0gRGVidWdnZXIuRGVidWdnZXIocHlzaGVsbCwgaWRiX3Byb3h5KQorICAgIGd1aSA9IGRlYnVnZ2VyLkRlYnVnZ2VyKHB5c2hlbGwsIGlkYl9wcm94eSkKICAgICBndWlfYWRhcCA9IEdVSUFkYXB0ZXIocnBjY2x0LCBndWkpCiAgICAgcnBjY2x0LnJlZ2lzdGVyKGd1aV9hZGFwX29pZCwgZ3VpX2FkYXApCiAgICAgcmV0dXJuIGd1aQpAQCAtMzczLDcgKzM3Myw3IEBACiAgICAgUmVxdWVzdCB0aGF0IHRoZSBSUENTZXJ2ZXIgc2h1dCBkb3duIHRoZSBzdWJwcm9jZXNzIGRlYnVnZ2VyIGFuZCBsaW5rLgogICAgIFVucmVnaXN0ZXIgdGhlIEdVSUFkYXB0ZXIsIHdoaWNoIHdpbGwgY2F1c2UgYSBHQyBvbiB0aGUgSWRsZSBwcm9jZXNzCiAgICAgZGVidWdnZXIgYW5kIFJQQyBsaW5rIG9iamVjdHMuICAoVGhlIHNlY29uZCByZWZlcmVuY2UgdG8gdGhlIGRlYnVnZ2VyIEdVSQotICAgIGlzIGRlbGV0ZWQgaW4gUHlTaGVsbC5jbG9zZV9yZW1vdGVfZGVidWdnZXIoKS4pCisgICAgaXMgZGVsZXRlZCBpbiBweXNoZWxsLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcigpLikKIAogICAgICIiIgogICAgIGNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIocnBjY2x0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnb2JqLnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnb2JqLnB5CmluZGV4IDdiNTdhYTQuLmI3MGIxM2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdvYmoucHkKQEAgLTgsMTMgKzgsMTAgQEAKIAogIyBYWFggVE8gRE86CiAjIC0gZm9yIGNsYXNzZXMvbW9kdWxlcywgYWRkICJvcGVuIHNvdXJjZSIgdG8gb2JqZWN0IGJyb3dzZXIKLQotaW1wb3J0IHJlCi0KLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbSwgVHJlZU5vZGUsIFNjcm9sbGVkQ2FudmFzCi0KIGZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgogCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0sIFRyZWVOb2RlLCBTY3JvbGxlZENhbnZhcworCiBteXJlcHIgPSBSZXByKCkKIG15cmVwci5tYXhzdHJpbmcgPSAxMDAKIG15cmVwci5tYXhvdGhlciA9IDEwMApAQCAtMTIyLDIxICsxMTksMjAgQEAKICAgICByZXR1cm4gYyhsYWJlbHRleHQsIG9iamVjdCwgc2V0ZnVuY3Rpb24pCiAKIAotZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOgorZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHN5cwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgT2JqZWN0QnJvd3NlciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHJvb3QuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQotICAgIHJvb3QuZm9jdXNfc2V0KCkKLSAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBkZWJ1ZyBvYmplY3QgYnJvd3NlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgMTAwLCB5ICsgMTc1KSkKKyAgICB0b3AuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQorICAgIHRvcC5mb2N1c19zZXQoKQorICAgIHNjID0gU2Nyb2xsZWRDYW52YXModG9wLCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCiAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIpCiAgICAgaXRlbSA9IG1ha2Vfb2JqZWN0dHJlZWl0ZW0oInN5cyIsIHN5cykKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUudXBkYXRlKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlbW90ZU9iamVjdEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZW1vdGVPYmplY3RCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9EZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9kZWxlZ2F0b3IucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVsZWdhdG9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5IGIvTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2R5bm9wdGlvbi5weQppbmRleCA1MTViNGJhLi45YzZmZmE0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5CisrKyBiL0xpYi9pZGxlbGliL2R5bm9wdGlvbi5weQpAQCAtMyw2ICszLDcgQEAKIGFuZCBzZXR0aW5nIG9mIGhpZ2hsaWdodHRoaWNrbmVzcwogIiIiCiBpbXBvcnQgY29weQorCiBmcm9tIHRraW50ZXIgaW1wb3J0IE9wdGlvbk1lbnUsIF9zZXRpdCwgU3RyaW5nVmFyLCBCdXR0b24KIAogY2xhc3MgRHluT3B0aW9uTWVudShPcHRpb25NZW51KToKQEAgLTM0LDEyICszNSwxMiBAQAogICAgICAgICAgICAgc2VsZi52YXJpYWJsZS5zZXQodmFsdWUpCiAKIGRlZiBfZHluX29wdGlvbl9tZW51KHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCAjICsgU3RyaW5nVmFyLCBCdXR0b24KIAotICAgIHRvcCA9IFRvcGxldmVsKCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXRzIGR5bmFtaWMgb3B0aW9uIG1lbnUiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdG9wLmZvY3VzX3NldCgpCiAKICAgICB2YXIgPSBTdHJpbmdWYXIodG9wKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvZWRpdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZWRpdG9yLnB5CmluZGV4IDk5NDRkYTMuLmFlNDc1Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9lZGl0b3IucHkKQEAgLTYsMjggKzYsMzQgQEAKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpbXBvcnQgdG9rZW5pemUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3ZWJicm93c2VyCiAKLWZyb20gaWRsZWxpYi5NdWx0aUNhbGwgaW1wb3J0IE11bHRpQ2FsbENyZWF0b3IKLWZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgR3JlcERpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBSZXBsYWNlRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5UGFyc2UKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZywgdGV4dFZpZXcsIGNvbmZpZ0RpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgoraW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZ3JlcAogZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIubXVsdGljYWxsIGltcG9ydCBNdWx0aUNhbGxDcmVhdG9yCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5cGFyc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcmVwbGFjZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2gKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgd2luZG93cwogCiAjIFRoZSBkZWZhdWx0IHRhYiBzZXR0aW5nIGZvciBhIFRleHQgd2lkZ2V0LCBpbiBhdmVyYWdlLXdpZHRoIGNoYXJhY3RlcnMuCiBUS19UQUJXSURUSF9ERUZBVUxUID0gOAotCiBfcHlfdmVyc2lvbiA9ICcgKCVzKScgJSBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpCiAKKwogZGVmIF9zcGhpbnhfdmVyc2lvbigpOgogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwpAQCAtNDAsNjMgKzQ2LDE2IEBACiAgICAgcmV0dXJuIHJlbGVhc2UKIAogCi1jbGFzcyBIZWxwRGlhbG9nKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZSAgICAgICMgcGFyZW50IG9mIGhlbHAgd2luZG93Ci0gICAgICAgIHNlbGYuZGxnID0gTm9uZSAgICAgICAgICMgdGhlIGhlbHAgd2luZG93IGl0ZXNlbGYKLQotICAgIGRlZiBkaXNwbGF5KHNlbGYsIHBhcmVudCwgbmVhcj1Ob25lKToKLSAgICAgICAgIiIiIERpc3BsYXkgdGhlIGhlbHAgZGlhbG9nLgotCi0gICAgICAgICAgICBwYXJlbnQgLSBwYXJlbnQgd2lkZ2V0IGZvciB0aGUgaGVscCB3aW5kb3cKLQotICAgICAgICAgICAgbmVhciAtIGEgVG9wbGV2ZWwgd2lkZ2V0IChlLmcuIEVkaXRvcldpbmRvdyBvciBQeVNoZWxsKQotICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhcyBhIHJlZmVyZW5jZSBmb3IgcGxhY2luZyB0aGUgaGVscCB3aW5kb3cKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncyBhcyB3Ci0gICAgICAgIHcud2FybigiRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS5cbiIKLSAgICAgICAgICAgICAgICJJdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLlxuIgotICAgICAgICAgICAgICAgIkl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHByaXZhdGUgaGVscC5IZWxwV2luZG93XG4iLAotICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIHNlbGYuZGxnIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNob3dfZGlhbG9nKHBhcmVudCkKLSAgICAgICAgaWYgbmVhcjoKLSAgICAgICAgICAgIHNlbGYubmVhcndpbmRvdyhuZWFyKQotCi0gICAgZGVmIHNob3dfZGlhbG9nKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIGZuPW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksJ2hlbHAudHh0JykKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcgPSB0ZXh0Vmlldy52aWV3X2ZpbGUocGFyZW50LCdIZWxwJyxmbiwgbW9kYWw9RmFsc2UpCi0gICAgICAgIGRsZy5iaW5kKCc8RGVzdHJveT4nLCBzZWxmLmRlc3Ryb3ksICcrJykKLQotICAgIGRlZiBuZWFyd2luZG93KHNlbGYsIG5lYXIpOgotICAgICAgICAjIFBsYWNlIHRoZSBoZWxwIGRpYWxvZyBuZWFyIHRoZSB3aW5kb3cgc3BlY2lmaWVkIGJ5IHBhcmVudC4KLSAgICAgICAgIyBOb3RlIC0gdGhpcyBtYXkgbm90IHJlcG9zaXRpb24gdGhlIHdpbmRvdyBpbiBNZXRhY2l0eQotICAgICAgICAjICBpZiAiL2FwcHMvbWV0YWNpdHkvZ2VuZXJhbC9kaXNhYmxlX3dvcmthcm91bmRzIiBpcyBlbmFibGVkCi0gICAgICAgIGRsZyA9IHNlbGYuZGxnCi0gICAgICAgIGdlb20gPSAobmVhci53aW5mb19yb290eCgpICsgMTAsIG5lYXIud2luZm9fcm9vdHkoKSArIDEwKQotICAgICAgICBkbGcud2l0aGRyYXcoKQotICAgICAgICBkbGcuZ2VvbWV0cnkoIj0rJWQrJWQiICUgZ2VvbSkKLSAgICAgICAgZGxnLmRlaWNvbmlmeSgpCi0gICAgICAgIGRsZy5saWZ0KCkKLQotICAgIGRlZiBkZXN0cm95KHNlbGYsIGV2PU5vbmUpOgotICAgICAgICBzZWxmLmRsZyA9IE5vbmUKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0KLWhlbHBEaWFsb2cgPSBIZWxwRGlhbG9nKCkgICMgc2luZ2xldG9uIGluc3RhbmNlLCBubyBsb25nZXIgdXNlZAotCi0KIGNsYXNzIEVkaXRvcldpbmRvdyhvYmplY3QpOgotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgZnJvbSBpZGxlbGliLkNvbG9yRGVsZWdhdG9yIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCi0gICAgZnJvbSBpZGxlbGliLlVuZG9EZWxlZ2F0b3IgaW1wb3J0IFVuZG9EZWxlZ2F0b3IKLSAgICBmcm9tIGlkbGVsaWIuSU9CaW5kaW5nIGltcG9ydCBJT0JpbmRpbmcsIGZpbGVzeXN0ZW1lbmNvZGluZywgZW5jb2RpbmcKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IEJpbmRpbmdzCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICBmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCisgICAgZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKKyAgICBmcm9tIGlkbGVsaWIuaW9tZW51IGltcG9ydCBJT0JpbmRpbmcsIGVuY29kaW5nCisgICAgZnJvbSBpZGxlbGliIGltcG9ydCBtYWlubWVudQogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKLSAgICBmcm9tIGlkbGVsaWIuTXVsdGlTdGF0dXNCYXIgaW1wb3J0IE11bHRpU3RhdHVzQmFyCisgICAgZnJvbSBpZGxlbGliLnN0YXR1c2JhciBpbXBvcnQgTXVsdGlTdGF0dXNCYXIKIAorICAgIGZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyBmb3IgZmlsZSBuYW1lcwogICAgIGhlbHBfdXJsID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIGZpbGVuYW1lPU5vbmUsIGtleT1Ob25lLCByb290PU5vbmUpOgpAQCAtMTM2LDExICs5NSwxMSBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBzeXMucHMxID0gJz4+PiAnCiAgICAgICAgIHNlbGYubWVudWJhciA9IE1lbnUocm9vdCkKLSAgICAgICAgc2VsZi50b3AgPSB0b3AgPSBXaW5kb3dMaXN0Lkxpc3RlZFRvcGxldmVsKHJvb3QsIG1lbnU9c2VsZi5tZW51YmFyKQorICAgICAgICBzZWxmLnRvcCA9IHRvcCA9IHdpbmRvd3MuTGlzdGVkVG9wbGV2ZWwocm9vdCwgbWVudT1zZWxmLm1lbnViYXIpCiAgICAgICAgIGlmIGZsaXN0OgogICAgICAgICAgICAgc2VsZi50a2ludGVyX3ZhcnMgPSBmbGlzdC52YXJzCiAgICAgICAgICAgICAjc2VsZi50b3AuaW5zdGFuY2VfZGljdCBtYWtlcyBmbGlzdC5pbnZlcnNlZGljdCBhdmFpbGFibGUgdG8KLSAgICAgICAgICAgICNjb25maWdEaWFsb2cucHkgc28gaXQgY2FuIGFjY2VzcyBhbGwgRWRpdG9yV2luZG93IGluc3RhbmNlcworICAgICAgICAgICAgI2NvbmZpZ2RpYWxvZy5weSBzbyBpdCBjYW4gYWNjZXNzIGFsbCBFZGl0b3JXaW5kb3cgaW5zdGFuY2VzCiAgICAgICAgICAgICBzZWxmLnRvcC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGtpbnRlcl92YXJzID0ge30gICMga2V5czogVGtpbnRlciBldmVudCBuYW1lcwpAQCAtMTU4LDEzICsxMTcsMTAgQEAKICAgICAgICAgICAgICAgICAnd3JhcCc6ICdub25lJywKICAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0dGhpY2tuZXNzJzogMCwKICAgICAgICAgICAgICAgICAnd2lkdGgnOiBzZWxmLndpZHRoLAotICAgICAgICAgICAgICAgICdoZWlnaHQnOiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnRWRpdG9yV2luZG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLCB0eXBlPSdpbnQnKX0KLSAgICAgICAgaWYgVGtWZXJzaW9uID49IDguNToKLSAgICAgICAgICAgICMgU3RhcnRpbmcgd2l0aCB0ayA4LjUgd2UgaGF2ZSB0byBzZXQgdGhlIG5ldyB0YWJzdHlsZSBvcHRpb24KLSAgICAgICAgICAgICMgdG8gJ3dvcmRwcm9jZXNzb3InIHRvIGFjaGlldmUgdGhlIHNhbWUgZGlzcGxheSBvZiB0YWJzIGFzIGluCi0gICAgICAgICAgICAjIG9sZGVyIHRrIHZlcnNpb25zLgotICAgICAgICAgICAgdGV4dF9vcHRpb25zWyd0YWJzdHlsZSddID0gJ3dvcmRwcm9jZXNzb3InCisgICAgICAgICAgICAgICAgJ3RhYnN0eWxlJzogJ3dvcmRwcm9jZXNzb3InLCAgIyBuZXcgaW4gOC41CisgICAgICAgICAgICAgICAgJ2hlaWdodCc6IGlkbGVDb25mLkdldE9wdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdtYWluJywgJ0VkaXRvcldpbmRvdycsICdoZWlnaHQnLCB0eXBlPSdpbnQnKSwKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKFRleHQpKHRleHRfZnJhbWUsICoqdGV4dF9vcHRpb25zKQogICAgICAgICBzZWxmLnRvcC5mb2N1c2VkX3dpZGdldCA9IHNlbGYudGV4dAogCkBAIC0xNzMsNyArMTI5LDcgQEAKIAogICAgICAgICBzZWxmLnRvcC5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2xvc2UpCiAgICAgICAgIHNlbGYudG9wLmJpbmQoIjw8Y2xvc2Utd2luZG93Pj4iLCBzZWxmLmNsb3NlX2V2ZW50KQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDb21tYW5kLVcgb24gZWRpdG9yd2luZG93cyBkb2Vzbid0IHdvcmsgd2l0aG91dCB0aGlzLgogICAgICAgICAgICAgdGV4dC5iaW5kKCc8PGNsb3NlLXdpbmRvdz4+Jywgc2VsZi5jbG9zZV9ldmVudCkKICAgICAgICAgICAgICMgU29tZSBPUyBYIHN5c3RlbXMgaGF2ZSBvbmx5IG9uZSBtb3VzZSBidXR0b24sIHNvIHVzZQpAQCAtMzA5LDcgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAgbWVudS5hZGRfc2VwYXJhdG9yKCkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCiAgICAgICAgICAgICBzZWxmLndtZW51X2VuZCA9IGVuZAotICAgICAgICAgICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAKICAgICAgICAgIyBTb21lIGFic3RyYWN0aW9ucyBzbyBJRExFIGV4dGVuc2lvbnMgYXJlIGNyb3NzLUlERQogICAgICAgICBzZWxmLmFza3llc25vID0gdGtNZXNzYWdlQm94LmFza3llc25vCkBAIC00MTgsNyArMzc0LDcgQEAKICAgICAgICAgICAgIHVuZGVybGluZSwgbGFiZWwgPSBwcmVwc3RyKGxhYmVsKQogICAgICAgICAgICAgbWVudWRpY3RbbmFtZV0gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPW5hbWUsIHRlYXJvZmY9MCkKICAgICAgICAgICAgIG1iYXIuYWRkX2Nhc2NhZGUobGFiZWw9bGFiZWwsIG1lbnU9bWVudSwgdW5kZXJsaW5lPXVuZGVybGluZSkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NhcmJvblRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NhcmJvblRrKCk6CiAgICAgICAgICAgICAjIEluc2VydCB0aGUgYXBwbGljYXRpb24gbWVudQogICAgICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJvZmY9MCkKQEAgLTQzOSw3ICszOTUsNyBAQAogICAgICAgICAgICAgZW5kID0gLTEKICAgICAgICAgaWYgZW5kID4gc2VsZi53bWVudV9lbmQ6CiAgICAgICAgICAgICBtZW51LmRlbGV0ZShzZWxmLndtZW51X2VuZCsxLCBlbmQpCi0gICAgICAgIFdpbmRvd0xpc3QuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgICAgICB3aW5kb3dzLmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKIAogICAgIHJtZW51ID0gTm9uZQogCkBAIC01MDcsMTcgKzQ2MywxNyBAQAogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuYWJvdXRfZGlhbG9nLgotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhzZWxmLnRvcCwnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5hYm91dF9kaWFsb2cuCisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2coc2VsZi50b3AsJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgotICAgICAgICBjb25maWdEaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuaGVscF9kaWFsb2cuCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5oZWxwX2RpYWxvZy4KICAgICAgICAgaWYgc2VsZi5yb290OgogICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5yb290CiAgICAgICAgIGVsc2U6CkBAIC01OTAsMjMgKzU0NiwyMyBAQAogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZChzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX2FnYWluX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgU2VhcmNoRGlhbG9nLmZpbmRfYWdhaW4oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9hZ2FpbihzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9zZWxlY3Rpb25fZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfaW5fZmlsZXNfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBHcmVwRGlhbG9nLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQorICAgICAgICBncmVwLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIHJlcGxhY2VfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBSZXBsYWNlRGlhbG9nLnJlcGxhY2Uoc2VsZi50ZXh0KQorICAgICAgICByZXBsYWNlLnJlcGxhY2Uoc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGdvdG9fbGluZV9ldmVudChzZWxmLCBldmVudCk6CkBAIC02MjIsNDYgKzU3OCwyNyBAQAogICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKIAogICAgIGRlZiBvcGVuX21vZHVsZShzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgIyBYWFggU2hvdWxkbid0IHRoaXMgYmUgaW4gSU9CaW5kaW5nPworICAgICAgICAiIiJHZXQgbW9kdWxlIG5hbWUgZnJvbSB1c2VyIGFuZCBvcGVuIGl0LgorCisgICAgICAgIFJldHVybiBtb2R1bGUgcGF0aCBvciBOb25lIGZvciBjYWxscyBieSBvcGVuX2NsYXNzX2Jyb3dzZXIKKyAgICAgICAgd2hlbiBsYXR0ZXIgaXMgbm90IGludm9rZWQgaW4gbmFtZWQgZWRpdG9yIHdpbmRvdy4KKyAgICAgICAgIiIiCisgICAgICAgICMgWFhYIFRoaXMsIG9wZW5fY2xhc3NfYnJvd3NlciwgYW5kIG9wZW5fcGF0aF9icm93c2VyCisgICAgICAgICMgd291bGQgZml0IGJldHRlciBpbiBpb21lbnUuSU9CaW5kaW5nLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuYW1lID0gc2VsZi50ZXh0LmdldCgic2VsLmZpcnN0IiwgInNlbC5sYXN0IikKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLnRleHQuZ2V0KCJzZWwuZmlyc3QiLCAic2VsLmxhc3QiKS5zdHJpcCgpCiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKLSAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoKQotICAgICAgICBuYW1lID0gdGtTaW1wbGVEaWFsb2cuYXNrc3RyaW5nKCJNb2R1bGUiLAotICAgICAgICAgICAgICAgICAiRW50ZXIgdGhlIG5hbWUgb2YgYSBQeXRob24gbW9kdWxlXG4iCi0gICAgICAgICAgICAgICAgICJ0byBzZWFyY2ggb24gc3lzLnBhdGggYW5kIG9wZW46IiwKLSAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCwgaW5pdGlhbHZhbHVlPW5hbWUpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW1wb3J0RXJyb3IpIGFzIG1zZzoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsIHN0cihtc2cpLCBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsICJtb2R1bGUgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIpOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgIm5vdCBhIHNvdXJjZS1iYXNlZCBtb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZGVyIGRvZXMgbm90IHN1cHBvcnQgZ2V0X2ZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLmZsaXN0OgotICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaW8ubG9hZGZpbGUoZmlsZV9wYXRoKQorICAgICAgICAgICAgbmFtZSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9IHF1ZXJ5Lk1vZHVsZU5hbWUoCisgICAgICAgICAgICAgICAgc2VsZi50ZXh0LCAiT3BlbiBNb2R1bGUiLAorICAgICAgICAgICAgICAgICJFbnRlciB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGVcbiIKKyAgICAgICAgICAgICAgICAidG8gc2VhcmNoIG9uIHN5cy5wYXRoIGFuZCBvcGVuOiIsCisgICAgICAgICAgICAgICAgbmFtZSkucmVzdWx0CisgICAgICAgIGlmIGZpbGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuZmxpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5pby5sb2FkZmlsZShmaWxlX3BhdGgpCiAgICAgICAgIHJldHVybiBmaWxlX3BhdGgKIAogICAgIGRlZiBvcGVuX2NsYXNzX2Jyb3dzZXIoc2VsZiwgZXZlbnQ9Tm9uZSk6CkBAIC02NzMsMTIgKzYxMCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBoZWFkLCB0YWlsID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dCh0YWlsKQotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IENsYXNzQnJvd3NlcgotICAgICAgICBDbGFzc0Jyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBicm93c2VyCisgICAgICAgIGJyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKIAogICAgIGRlZiBvcGVuX3BhdGhfYnJvd3NlcihzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBQYXRoQnJvd3NlcgotICAgICAgICBQYXRoQnJvd3Nlci5QYXRoQnJvd3NlcihzZWxmLmZsaXN0KQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCisgICAgICAgIHBhdGhicm93c2VyLlBhdGhCcm93c2VyKHNlbGYuZmxpc3QpCiAKICAgICBkZWYgb3Blbl90dXJ0bGVfZGVtbyhzZWxmLCBldmVudCA9IE5vbmUpOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwpAQCAtNzM5LDcgKzY3Niw3IEBACiAKICAgICBkZWYgUmVzZXRDb2xvcml6ZXIoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGNvbG9yIHRoZW1lIgotICAgICAgICAjIENhbGxlZCBmcm9tIHNlbGYuZmlsZW5hbWVfY2hhbmdlX2hvb2sgYW5kIGZyb20gY29uZmlnRGlhbG9nLnB5CisgICAgICAgICMgQ2FsbGVkIGZyb20gc2VsZi5maWxlbmFtZV9jaGFuZ2VfaG9vayBhbmQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgc2VsZi5fcm1jb2xvcml6ZXIoKQogICAgICAgICBzZWxmLl9hZGRjb2xvcml6ZXIoKQogICAgICAgICBFZGl0b3JXaW5kb3cuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKQEAgLTc1OSwxNCArNjk2LDE0IEBACiAKICAgICBkZWYgUmVzZXRGb250KHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSB0ZXh0IHdpZGdldHMnIGZvbnQgaWYgaXQgaXMgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKIAogICAgICAgICBzZWxmLnRleHRbJ2ZvbnQnXSA9IGlkbGVDb25mLkdldEZvbnQoc2VsZi5yb290LCAnbWFpbicsJ0VkaXRvcldpbmRvdycpCiAKICAgICBkZWYgUmVtb3ZlS2V5YmluZGluZ3Moc2VsZik6CiAgICAgICAgICJSZW1vdmUgdGhlIGtleWJpbmRpbmdzIGJlZm9yZSB0aGV5IGFyZSBjaGFuZ2VkLiIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi50ZXh0LmV2ZW50X2RlbGV0ZShldmVudCwgKmtleWxpc3QpCiAgICAgICAgIGZvciBleHRlbnNpb25OYW1lIGluIHNlbGYuZ2V0X3N0YW5kYXJkX2V4dGVuc2lvbl9uYW1lcygpOgpAQCAtNzc3LDggKzcxNCw4IEBACiAKICAgICBkZWYgQXBwbHlLZXliaW5kaW5ncyhzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUga2V5YmluZGluZ3MgYWZ0ZXIgdGhleSBhcmUgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKCkKICAgICAgICAgZm9yIGV4dGVuc2lvbk5hbWUgaW4gc2VsZi5nZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKCk6CiAgICAgICAgICAgICB4a2V5ZGVmcyA9IGlkbGVDb25mLkdldEV4dGVuc2lvbkJpbmRpbmdzKGV4dGVuc2lvbk5hbWUpCkBAIC03ODYsNyArNzIzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKHhrZXlkZWZzKQogICAgICAgICAjdXBkYXRlIG1lbnUgYWNjZWxlcmF0b3JzCiAgICAgICAgIG1lbnVFdmVudERpY3QgPSB7fQotICAgICAgICBmb3IgbWVudSBpbiBzZWxmLkJpbmRpbmdzLm1lbnVkZWZzOgorICAgICAgICBmb3IgbWVudSBpbiBzZWxmLm1haW5tZW51Lm1lbnVkZWZzOgogICAgICAgICAgICAgbWVudUV2ZW50RGljdFttZW51WzBdXSA9IHt9CiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBtZW51WzFdOgogICAgICAgICAgICAgICAgIGlmIGl0ZW06CkBAIC04MTMsNyArNzUwLDcgQEAKIAogICAgIGRlZiBzZXRfbm90YWJzX2luZGVudHdpZHRoKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBpbmRlbnR3aWR0aCBpZiBjaGFuZ2VkIGFuZCBub3QgdXNpbmcgdGFicyBpbiB0aGlzIHdpbmRvdyIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgaWYgbm90IHNlbGYudXNldGFiczoKICAgICAgICAgICAgIHNlbGYuaW5kZW50d2lkdGggPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnSW5kZW50JywnbnVtLXNwYWNlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcpCkBAIC05OTMsNyArOTMwLDcgQEAKICAgICBkZWYgX2Nsb3NlKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlvLmZpbGVuYW1lOgogICAgICAgICAgICAgc2VsZi51cGRhdGVfcmVjZW50X2ZpbGVzX2xpc3QobmV3X2ZpbGU9c2VsZi5pby5maWxlbmFtZSkKLSAgICAgICAgV2luZG93TGlzdC51bnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQorICAgICAgICB3aW5kb3dzLnVucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAgICAgICAgIHNlbGYudW5sb2FkX2V4dGVuc2lvbnMoKQogICAgICAgICBzZWxmLmlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5pbyA9IE5vbmUKQEAgLTEwMzEsMTIgKzk2OCwyNSBAQAogICAgIGRlZiBnZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gaWRsZUNvbmYuR2V0RXh0ZW5zaW9ucyhlZGl0b3Jfb25seT1UcnVlKQogCisgICAgZXh0ZmlsZXMgPSB7ICAjIG1hcCBjb25maWctZXh0ZW5zaW9uIHNlY3Rpb24gbmFtZXMgdG8gbmV3IGZpbGUgbmFtZXMKKyAgICAgICAgJ0F1dG9Db21wbGV0ZSc6ICdhdXRvY29tcGxldGUnLAorICAgICAgICAnQXV0b0V4cGFuZCc6ICdhdXRvZXhwYW5kJywKKyAgICAgICAgJ0NhbGxUaXBzJzogJ2NhbGx0aXBzJywKKyAgICAgICAgJ0NvZGVDb250ZXh0JzogJ2NvZGVjb250ZXh0JywKKyAgICAgICAgJ0Zvcm1hdFBhcmFncmFwaCc6ICdwYXJhZ3JhcGgnLAorICAgICAgICAnUGFyZW5NYXRjaCc6ICdwYXJlbm1hdGNoJywKKyAgICAgICAgJ1JzdHJpcEV4dGVuc2lvbic6ICdyc3RyaXAnLAorICAgICAgICAnU2NyaXB0QmluZGluZyc6ICdydW5zY3JpcHQnLAorICAgICAgICAnWm9vbUhlaWdodCc6ICd6b29taGVpZ2h0JywKKyAgICAgICAgfQorCiAgICAgZGVmIGxvYWRfZXh0ZW5zaW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBmbmFtZSA9IHNlbGYuZXh0ZmlsZXMuZ2V0KG5hbWUsIG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuJyArIGZuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGZuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCkBAIC0xMDYwLDcgKzEwMTAsNyBAQAogCiAgICAgZGVmIGFwcGx5X2JpbmRpbmdzKHNlbGYsIGtleWRlZnM9Tm9uZSk6CiAgICAgICAgIGlmIGtleWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcworICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgdGV4dC5rZXlkZWZzID0ga2V5ZGVmcwogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgpAQCAtMTA3Myw5ICsxMDIzLDkgQEAKICAgICAgICAgTWVudXMgdGhhdCBhcmUgYWJzZW50IG9yIE5vbmUgaW4gc2VsZi5tZW51ZGljdCBhcmUgaWdub3JlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1lbnVkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBtZW51ZGVmcyA9IHNlbGYuQmluZGluZ3MubWVudWRlZnMKKyAgICAgICAgICAgIG1lbnVkZWZzID0gc2VsZi5tYWlubWVudS5tZW51ZGVmcwogICAgICAgICBpZiBrZXlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMKKyAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcwogICAgICAgICBtZW51ZGljdCA9IHNlbGYubWVudWRpY3QKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICBmb3IgbW5hbWUsIGVudHJ5bGlzdCBpbiBtZW51ZGVmczoKQEAgLTEzMDIsNyArMTI1Miw3IEBACiAgICAgICAgICAgICAjIGFkanVzdCBpbmRlbnRhdGlvbiBmb3IgY29udGludWF0aW9ucyBhbmQgYmxvY2sKICAgICAgICAgICAgICMgb3Blbi9jbG9zZSBmaXJzdCBuZWVkIHRvIGZpbmQgdGhlIGxhc3Qgc3RtdAogICAgICAgICAgICAgbG5vID0gaW5kZXgybGluZSh0ZXh0LmluZGV4KCdpbnNlcnQnKSkKLSAgICAgICAgICAgIHkgPSBQeVBhcnNlLlBhcnNlcihzZWxmLmluZGVudHdpZHRoLCBzZWxmLnRhYndpZHRoKQorICAgICAgICAgICAgeSA9IHB5cGFyc2UuUGFyc2VyKHNlbGYuaW5kZW50d2lkdGgsIHNlbGYudGFid2lkdGgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb250ZXh0X3VzZV9wczE6CiAgICAgICAgICAgICAgICAgZm9yIGNvbnRleHQgaW4gc2VsZi5udW1fY29udGV4dF9saW5lczoKICAgICAgICAgICAgICAgICAgICAgc3RhcnRhdCA9IG1heChsbm8gLSBjb250ZXh0LCAxKQpAQCAtMTMyNiwyMiArMTI3NiwyMiBAQAogICAgICAgICAgICAgICAgIHkuc2V0X2xvKDApCiAKICAgICAgICAgICAgIGMgPSB5LmdldF9jb250aW51YXRpb25fdHlwZSgpCi0gICAgICAgICAgICBpZiBjICE9IFB5UGFyc2UuQ19OT05FOgorICAgICAgICAgICAgaWYgYyAhPSBweXBhcnNlLkNfTk9ORToKICAgICAgICAgICAgICAgICAjIFRoZSBjdXJyZW50IHN0bXQgaGFzbid0IGVuZGVkIHlldC4KLSAgICAgICAgICAgICAgICBpZiBjID09IFB5UGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKKyAgICAgICAgICAgICAgICBpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciB0aGUgZmlyc3QgbGluZSBvZiBhIHN0cmluZzsgZG8gbm90IGluZGVudCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBQeVBhcnNlLkNfU1RSSU5HX05FWFRfTElORVM6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfTkVYVF9MSU5FUzoKICAgICAgICAgICAgICAgICAgICAgIyBpbnNpZGUgYSBzdHJpbmcgd2hpY2ggc3RhcnRlZCBiZWZvcmUgdGhpcyBsaW5lOwogICAgICAgICAgICAgICAgICAgICAjIGp1c3QgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50CiAgICAgICAgICAgICAgICAgICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCBpbmRlbnQpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CUkFDS0VUOgorICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBweXBhcnNlLkNfQlJBQ0tFVDoKICAgICAgICAgICAgICAgICAgICAgIyBsaW5lIHVwIHdpdGggdGhlIGZpcnN0IChpZiBhbnkpIGVsZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICMgbGFzdCBvcGVuIGJyYWNrZXQgc3RydWN0dXJlOyBlbHNlIGluZGVudCBvbmUKICAgICAgICAgICAgICAgICAgICAgIyBsZXZlbCBiZXlvbmQgdGhlIGluZGVudCBvZiB0aGUgbGluZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGxhc3Qgb3BlbiBicmFja2V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVpbmRlbnRfdG8oeS5jb21wdXRlX2JyYWNrZXRfaW5kZW50KCkpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CQUNLU0xBU0g6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19CQUNLU0xBU0g6CiAgICAgICAgICAgICAgICAgICAgICMgaWYgbW9yZSB0aGFuIG9uZSBsaW5lIGluIHRoaXMgc3RtdCBhbHJlYWR5LCBqdXN0CiAgICAgICAgICAgICAgICAgICAgICMgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50OyBlbHNlIGlmIGluaXRpYWwgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGhhcyBhIHN0YXJ0IG9uIGFuIGFzc2lnbm1lbnQgc3RtdCwgaW5kZW50IHRvCkBAIC0xNTY5LDkgKzE1MTksNiBAQAogICAgICAgICAgICAgYnJlYWsKICAgICByZXR1cm4gcmF3LCBlZmZlY3RpdmUKIAotaW1wb3J0IHRva2VuaXplCi1fdG9rZW5pemUgPSB0b2tlbml6ZQotZGVsIHRva2VuaXplCiAKIGNsYXNzIEluZGVudFNlYXJjaGVyKG9iamVjdCk6CiAKQEAgLTE1OTYsOCArMTU0Myw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRleHQuZ2V0KG1hcmssIG1hcmsgKyAiIGxpbmVlbmQrMWMiKQogCiAgICAgZGVmIHRva2VuZWF0ZXIoc2VsZiwgdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgSU5ERU5UPV90b2tlbml6ZS5JTkRFTlQsCi0gICAgICAgICAgICAgICAgICAgTkFNRT1fdG9rZW5pemUuTkFNRSwKKyAgICAgICAgICAgICAgICAgICBJTkRFTlQ9dG9rZW5pemUuSU5ERU5ULAorICAgICAgICAgICAgICAgICAgIE5BTUU9dG9rZW5pemUuTkFNRSwKICAgICAgICAgICAgICAgICAgICBPUEVORVJTPSgnY2xhc3MnLCAnZGVmJywgJ2ZvcicsICdpZicsICd0cnknLCAnd2hpbGUnKSk6CiAgICAgICAgIGlmIHNlbGYuZmluaXNoZWQ6CiAgICAgICAgICAgICBwYXNzCkBAIC0xNjA4LDE5ICsxNTU1LDE5IEBACiAgICAgICAgICAgICBzZWxmLmZpbmlzaGVkID0gMQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2F2ZV90YWJzaXplID0gX3Rva2VuaXplLnRhYnNpemUKLSAgICAgICAgX3Rva2VuaXplLnRhYnNpemUgPSBzZWxmLnRhYndpZHRoCisgICAgICAgIHNhdmVfdGFic2l6ZSA9IHRva2VuaXplLnRhYnNpemUKKyAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNlbGYudGFid2lkdGgKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRva2VucyA9IF90b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKKyAgICAgICAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuZWF0ZXIoKnRva2VuKQotICAgICAgICAgICAgZXhjZXB0IChfdG9rZW5pemUuVG9rZW5FcnJvciwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0ICh0b2tlbml6ZS5Ub2tlbkVycm9yLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgIyBzaW5jZSB3ZSBjdXQgb2ZmIHRoZSB0b2tlbml6ZXIgZWFybHksIHdlIGNhbiB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgIyBzcHVyaW91cyBlcnJvcnMKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQorICAgICAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQogICAgICAgICByZXR1cm4gc2VsZi5ibGtvcGVubGluZSwgc2VsZi5pbmRlbnRlZGxpbmUKIAogIyMjIGVuZCBhdXRvaW5kZW50IGNvZGUgIyMjCkBAIC0xNjQ0LDcgKzE1OTEsNyBAQAogICAgIGtleWxpc3QgPSBrZXlkZWZzLmdldChldmVudG5hbWUpCiAgICAgIyBpc3N1ZTEwOTQwOiB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBwcmV2ZW50IGhhbmcgd2l0aCBPUyBYIENvY29hIFRrIDguNQogICAgICMgaWYgbm90IGtleWxpc3Q6Ci0gICAgaWYgKG5vdCBrZXlsaXN0KSBvciAobWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKSBhbmQgZXZlbnRuYW1lIGluIHsKKyAgICBpZiAobm90IGtleWxpc3QpIG9yIChtYWNvc3guaXNDb2NvYVRrKCkgYW5kIGV2ZW50bmFtZSBpbiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8b3Blbi1tb2R1bGU+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8Z290by1saW5lPj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PGNoYW5nZS1pbmRlbnR3aWR0aD4+In0pOgpAQCAtMTY3OSwxMiArMTYyNiwxNSBAQAogICAgICAgICBmaWxlbmFtZSA9IHN5cy5hcmd2WzFdCiAgICAgZWxzZToKICAgICAgICAgZmlsZW5hbWUgPSBOb25lCi0gICAgbWFjb3N4U3VwcG9ydC5zZXR1cEFwcChyb290LCBOb25lKQorICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBOb25lKQogICAgIGVkaXQgPSBFZGl0b3JXaW5kb3cocm9vdD1yb290LCBmaWxlbmFtZT1maWxlbmFtZSkKICAgICBlZGl0LnRleHQuYmluZCgiPDxjbG9zZS1hbGwtd2luZG93cz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKICAgICAjIERvZXMgbm90IHN0b3AgZXJyb3IsIG5laXRoZXIgZG9lcyBmb2xsb3dpbmcKICAgICAjIGVkaXQudGV4dC5iaW5kKCI8PGNsb3NlLXdpbmRvdz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2VkaXRvcicsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9lZGl0b3Jfd2luZG93KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkgYi9MaWIvaWRsZWxpYi9maWxlbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9GaWxlTGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKaW5kZXggYTk5ODlhOC4uZjQ2YWQ3YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC02LDcgKzcsNyBAQAogY2xhc3MgRmlsZUxpc3Q6CiAKICAgICAjIE4uQi4gdGhpcyBpbXBvcnQgb3ZlcnJpZGRlbiBpbiBQeVNoZWxsRmlsZUxpc3QuCi0gICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93CisgICAgZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6CiAgICAgICAgIHNlbGYucm9vdCA9IHJvb3QKQEAgLTExMSw3ICsxMTIsNyBAQAogCiAKIGRlZiBfdGVzdCgpOgotICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IGZpeHdvcmRicmVha3MKKyAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBmaXh3b3JkYnJlYWtzCiAgICAgaW1wb3J0IHN5cwogICAgIHJvb3QgPSBUaygpCiAgICAgZml4d29yZGJyZWFrcyhyb290KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weSBiL0xpYi9pZGxlbGliL2dyZXAucHkKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZ3JlcC5weQppbmRleCA3MjFiMjMxLi42NGJhMjhkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2dyZXAucHkKQEAgLTEsMTcgKzEsMTkgQEAKLWltcG9ydCBvcwogaW1wb3J0IGZubWF0Y2gKLWltcG9ydCByZSAgIyBmb3IgaHRlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIENoZWNrYnV0dG9uICAjIGZvciBHcmVwRGlhbG9nCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0LCBCdXR0b24sIFNFTCwgRU5EICAjIGZvciBodGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCi0jIEltcG9ydGluZyBPdXRwdXRXaW5kb3cgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBDaGVja2J1dHRvbgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKKworIyBJbXBvcnRpbmcgT3V0cHV0V2luZG93IGhlcmUgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCiAjIEVkaXRvcldpbmRvdyAtPiBHcmVwRGlhbG9wIC0+IE91dHB1dFdpbmRvdyAtPiBFZGl0b3JXaW5kb3cKIAogZGVmIGdyZXAodGV4dCwgaW89Tm9uZSwgZmxpc3Q9Tm9uZSk6CiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX2dyZXBkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9ncmVwZGlhbG9nID0gR3JlcERpYWxvZyhyb290LCBlbmdpbmUsIGZsaXN0KQogICAgIGRpYWxvZyA9IGVuZ2luZS5fZ3JlcGRpYWxvZwpAQCAtNDcsMTMgKzQ5LDEwIEBACiAgICAgICAgIHNlbGYuZ2xvYmVudCA9IHNlbGYubWFrZV9lbnRyeSgiSW4gZmlsZXM6Iiwgc2VsZi5nbG9idmFyKVswXQogCiAgICAgZGVmIGNyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5tYWtlX2ZyYW1lKClbMF0KLQotICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgIHZhcmlhYmxlPXNlbGYucmVjdmFyLAorICAgICAgICBidG4gPSBDaGVja2J1dHRvbigKKyAgICAgICAgICAgICAgICBzZWxmLm1ha2VfZnJhbWUoKVswXSwgdmFyaWFibGU9c2VsZi5yZWN2YXIsCiAgICAgICAgICAgICAgICAgdGV4dD0iUmVjdXJzZSBkb3duIHN1YmRpcmVjdG9yaWVzIikKICAgICAgICAgYnRuLnBhY2soc2lkZT0idG9wIiwgZmlsbD0iYm90aCIpCi0gICAgICAgIGJ0bi5zZWxlY3QoKQogCiAgICAgZGVmIGNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIFNlYXJjaERpYWxvZ0Jhc2UuY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKQpAQCAtNjcsNyArNjYsNyBAQAogICAgICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgICAgIHNlbGYudG9wLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZyb20gaWRsZWxpYi5PdXRwdXRXaW5kb3cgaW1wb3J0IE91dHB1dFdpbmRvdyAgIyBsZWF2ZSBoZXJlIQorICAgICAgICBmcm9tIGlkbGVsaWIub3V0d2luIGltcG9ydCBPdXRwdXRXaW5kb3cgICMgbGVhdmUgaGVyZSEKICAgICAgICAgc2F2ZSA9IHN5cy5zdGRvdXQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IE91dHB1dFdpbmRvdyhzZWxmLmZsaXN0KQpAQCAtMTMxLDE0ICsxMzAsMTYgQEAKIAogCiBkZWYgX2dyZXBfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBTRUwsIEVORAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorICAgIGZyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKLSAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQotICAgIHRleHQgPSBUZXh0KHJvb3QsIGhlaWdodD01KQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKKyAgICB0ZXh0ID0gVGV4dCh0b3AsIGhlaWdodD01KQogICAgIHRleHQucGFjaygpCiAKICAgICBkZWYgc2hvd19ncmVwX2RpYWxvZygpOgpAQCAtMTQ2LDkgKzE0Nyw4IEBACiAgICAgICAgIGdyZXAodGV4dCwgZmxpc3Q9Zmxpc3QpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCiAKLSAgICBidXR0b24gPSBCdXR0b24ocm9vdCwgdGV4dD0iU2hvdyBHcmVwRGlhbG9nIiwgY29tbWFuZD1zaG93X2dyZXBfZGlhbG9nKQorICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlNob3cgR3JlcERpYWxvZyIsIGNvbW1hbmQ9c2hvd19ncmVwX2RpYWxvZykKICAgICBidXR0b24ucGFjaygpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnB5IGIvTGliL2lkbGVsaWIvaGVscC5weQppbmRleCBhNzAwOGU5Li43N2UwMWEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9oZWxwLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHAucHkKQEAgLTQsNyArNCw3IEBACiAKIEhlbHAgPT4gQWJvdXQgSURMRTogZGlwbGF5IEFib3V0IElkbGUgZGlhbG9nCiAKLTx0byBiZSBtb3ZlZCBoZXJlIGZyb20gYWJvdXREaWFsb2cucHk+Cis8dG8gYmUgbW92ZWQgaGVyZSBmcm9tIGhlbHBfYWJvdXQucHk+CiAKIAogSGVscCA9PiBJRExFIEhlbHA6IERpc3BsYXkgaGVscC5odG1sIHdpdGggcHJvcGVyIGZvcm1hdHRpbmcuCkBAIC0yNSwxNSArMjUsMTQgQEAKIHNob3dfaWRsZWhlbHAgLSBDcmVhdGUgSGVscFdpbmRvdy4gIENhbGxlZCBpbiBFZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAiIiIKIGZyb20gaHRtbC5wYXJzZXIgaW1wb3J0IEhUTUxQYXJzZXIKLWZyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgaXNkaXIsIGlzZmlsZSwgam9pbgorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBpc2ZpbGUsIGpvaW4KIGZyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIFNjcm9sbGJhciwgTWVudSwgTWVudWJ1dHRvbgotZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCiAKLXVzZV90dGsgPSBGYWxzZSAjIHVudGlsIGF2YWlsYWJsZSB0byBpbXBvcnQKLWlmIHVzZV90dGs6Ci0gICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgTWVudWJ1dHRvbgorZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIE1lbnUKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IE1lbnVidXR0b24sIFNjcm9sbGJhcgorZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiAjIyBBYm91dCBJRExFICMjCiAKQEAgLTE5NywxNSArMTk2LDE4IEBACiAgICAgIkRpc3BsYXkgaHRtbCB0ZXh0LCBzY3JvbGxiYXIsIGFuZCB0b2MuIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGZpbGVuYW1lKToKICAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCisgICAgICAgICMga2VlcCByZWZlcmVuY2VzIHRvIHdpZGdldHMgZm9yIHRlc3QgYWNjZXNzLgorICAgICAgICBzZWxmLnRleHQgPSB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCiAgICAgICAgIHNlbGZbJ2JhY2tncm91bmQnXSA9IHRleHRbJ2JhY2tncm91bmQnXQotICAgICAgICBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQorICAgICAgICBzZWxmLnRvYyA9IHRvYyA9IHNlbGYudG9jX21lbnUodGV4dCkKKyAgICAgICAgc2VsZi5zY3JvbGwgPSBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgICAgICB0ZXh0Wyd5c2Nyb2xsY29tbWFuZCddID0gc2Nyb2xsLnNldAorCiAgICAgICAgIHNlbGYucm93Y29uZmlndXJlKDAsIHdlaWdodD0xKQogICAgICAgICBzZWxmLmNvbHVtbmNvbmZpZ3VyZSgxLCB3ZWlnaHQ9MSkgICMgdGV4dAotICAgICAgICBzZWxmLnRvY19tZW51KHRleHQpLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J253JykKLSAgICAgICAgdGV4dC5ncmlkKGNvbHVtbj0xLCByb3c9MCwgc3RpY2t5PSduc2V3JykKLSAgICAgICAgc2Nyb2xsLmdyaWQoY29sdW1uPTIsIHJvdz0wLCBzdGlja3k9J25zJykKKyAgICAgICAgdG9jLmdyaWQocm93PTAsIGNvbHVtbj0wLCBzdGlja3k9J253JykKKyAgICAgICAgdGV4dC5ncmlkKHJvdz0wLCBjb2x1bW49MSwgc3RpY2t5PSduc2V3JykKKyAgICAgICAgc2Nyb2xsLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9J25zJykKIAogICAgIGRlZiB0b2NfbWVudShzZWxmLCB0ZXh0KToKICAgICAgICAgIkNyZWF0ZSB0YWJsZSBvZiBjb250ZW50cyBhcyBkcm9wLWRvd24gbWVudS4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnR4dCBiL0xpYi9pZGxlbGliL2hlbHAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWZiZTBiLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2hlbHAudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLVRoaXMgZmlsZSwgaWRsZWxpYi9oZWxwLnR4dCBpcyBvdXQtb2YtZGF0ZSBhbmQgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS4KLUl0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBwb3NzaWJseSBpbiAzLjYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotW1NlZSB0aGUgZW5kIG9mIHRoaXMgZmlsZSBmb3IgKiogVElQUyAqKiBvbiB1c2luZyBJRExFICEhXQotCi1JRExFIGlzIHRoZSBQeXRob24gSURFIGJ1aWx0IHdpdGggdGhlIHRraW50ZXIgR1VJIHRvb2xraXQuCi0KLUlETEUgaGFzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Ci0tY29kZWQgaW4gMTAwJSBwdXJlIFB5dGhvbiwgdXNpbmcgdGhlIHRraW50ZXIgR1VJIHRvb2xraXQKLS1jcm9zcy1wbGF0Zm9ybTogd29ya3Mgb24gV2luZG93cywgVW5peCwgYW5kIE9TIFgKLS1tdWx0aS13aW5kb3cgdGV4dCBlZGl0b3Igd2l0aCBtdWx0aXBsZSB1bmRvLCBQeXRob24gY29sb3JpemluZywgc21hcnQgaW5kZW50LAotY2FsbCB0aXBzLCBhbmQgbWFueSBvdGhlciBmZWF0dXJlcwotLVB5dGhvbiBzaGVsbCB3aW5kb3cgKGEuay5hIGludGVyYWN0aXZlIGludGVycHJldGVyKQotLWRlYnVnZ2VyIChub3QgY29tcGxldGUsIGJ1dCB5b3UgY2FuIHNldCBicmVha3BvaW50cywgdmlldyBhbmQgc3RlcCkKLQotTWVudXM6Ci0KLUlETEUgaGFzIHR3byB3aW5kb3cgdHlwZXMgdGhlIFNoZWxsIHdpbmRvdyBhbmQgdGhlIEVkaXRvciB3aW5kb3cuIEl0IGlzCi1wb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIGVkaXRvciB3aW5kb3dzIHNpbXVsdGFuZW91c2x5LiBJRExFJ3MKLW1lbnVzIGR5bmFtaWNhbGx5IGNoYW5nZSBiYXNlZCBvbiB3aGljaCB3aW5kb3cgaXMgY3VycmVudGx5IHNlbGVjdGVkLiBFYWNoIG1lbnUKLWRvY3VtZW50ZWQgYmVsb3cgaW5kaWNhdGVzIHdoaWNoIHdpbmRvdyB0eXBlIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gCi0KLUZpbGUgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgTmV3IEZpbGUgICAgICAgICAtLSBDcmVhdGUgYSBuZXcgZmlsZSBlZGl0aW5nIHdpbmRvdwotICAgICAgICBPcGVuLi4uICAgICAgICAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgZmlsZQotICAgICAgICBPcGVuIE1vZHVsZS4uLiAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgbW9kdWxlIChzZWFyY2hlcyBzeXMucGF0aCkKLSAgICAgICAgUmVjZW50IEZpbGVzLi4uICAtLSBPcGVuIGEgbGlzdCBvZiByZWNlbnQgZmlsZXMKLSAgICAgICAgQ2xhc3MgQnJvd3NlciAgICAtLSBTaG93IGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gY3VycmVudCBmaWxlCi0gICAgICAgIFBhdGggQnJvd3NlciAgICAgLS0gU2hvdyBzeXMucGF0aCBkaXJlY3RvcmllcywgbW9kdWxlcywgY2xhc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWV0aG9kcwotICAgICAgICAtLS0KLSAgICAgICAgU2F2ZSAgICAgICAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBhc3NvY2lhdGVkIGZpbGUgKHVuc2F2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dzIGhhdmUgYSAqIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHdpbmRvdyB0aXRsZSkKLQotICAgICAgICBTYXZlIEFzLi4uICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gbmV3IGZpbGUsIHdoaWNoIGJlY29tZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBmaWxlCi0gICAgICAgIFNhdmUgQ29weSBBcy4uLiAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byBkaWZmZXJlbnQgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGFzc29jaWF0ZWQgZmlsZQotICAgICAgICAtLS0KLSAgICAgICAgUHJpbnQgV2luZG93ICAgICAtLSBQcmludCB0aGUgY3VycmVudCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIENsb3NlICAgICAgICAgICAgLS0gQ2xvc2UgY3VycmVudCB3aW5kb3cgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQotICAgICAgICBFeGl0ICAgICAgICAgICAgIC0tIENsb3NlIGFsbCB3aW5kb3dzLCBxdWl0IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKLQotRWRpdCBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBVbmRvICAgICAgICAgICAgIC0tIFVuZG8gbGFzdCBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSBtYXhpbXVtIG9mIDEwMDAgY2hhbmdlcyBtYXkgYmUgdW5kb25lKQotICAgICAgICBSZWRvICAgICAgICAgICAgIC0tIFJlZG8gbGFzdCB1bmRvbmUgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZWxlY3QgQWxsICAgICAgIC0tIFNlbGVjdCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBlZGl0IGJ1ZmZlcgotICAgICAgICAtLS0KLSAgICAgICAgRmluZC4uLiAgICAgICAgICAtLSBPcGVuIGEgc2VhcmNoIGRpYWxvZyBib3ggd2l0aCBtYW55IG9wdGlvbnMKLSAgICAgICAgRmluZCBBZ2FpbiAgICAgICAtLSBSZXBlYXQgbGFzdCBzZWFyY2gKLSAgICAgICAgRmluZCBTZWxlY3Rpb24gICAtLSBTZWFyY2ggZm9yIHRoZSBzdHJpbmcgaW4gdGhlIHNlbGVjdGlvbgotICAgICAgICBGaW5kIGluIEZpbGVzLi4uIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCBmb3Igc2VhcmNoaW5nIGZpbGVzCi0gICAgICAgIFJlcGxhY2UuLi4gICAgICAgLS0gT3BlbiBhIHNlYXJjaC1hbmQtcmVwbGFjZSBkaWFsb2cgYm94Ci0gICAgICAgIEdvIHRvIExpbmUgICAgICAgLS0gQXNrIGZvciBhIGxpbmUgbnVtYmVyIGFuZCBzaG93IHRoYXQgbGluZQotICAgICAgICBFeHBhbmQgV29yZCAgICAgIC0tIEV4cGFuZCB0aGUgd29yZCB5b3UgaGF2ZSB0eXBlZCB0byBtYXRjaCBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBpbiB0aGUgc2FtZSBidWZmZXI7IHJlcGVhdCB0byBnZXQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBleHBhbnNpb24KLSAgICAgICAgU2hvdyBDYWxsdGlwICAgICAtLSBBZnRlciBhbiB1bmNsb3NlZCBwYXJlbnRoZXNpcyBmb3IgYSBmdW5jdGlvbiwgb3BlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc21hbGwgd2luZG93IHdpdGggZnVuY3Rpb24gcGFyYW1ldGVyIGhpbnRzCi0gICAgICAgIFNob3cgUGFyZW5zICAgICAgLS0gSGlnaGxpZ2h0IHRoZSBzdXJyb3VuZGluZyBwYXJlbnRoZXNpcwotICAgICAgICBTaG93IENvbXBsZXRpb25zIC0tIE9wZW4gYSBzY3JvbGwgd2luZG93IGFsbG93aW5nIHNlbGVjdGlvbiBrZXl3b3JkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhdHRyaWJ1dGVzLiAoc2VlICcqVElQUyonLCBiZWxvdykKLQotRm9ybWF0IE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgSW5kZW50IFJlZ2lvbiAgICAgICAtLSBTaGlmdCBzZWxlY3RlZCBsaW5lcyByaWdodCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIERlZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgbGVmdCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIENvbW1lbnQgT3V0IFJlZ2lvbiAgLS0gSW5zZXJ0ICMjIGluIGZyb250IG9mIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFVuY29tbWVudCBSZWdpb24gICAgLS0gUmVtb3ZlIGxlYWRpbmcgIyBvciAjIyBmcm9tIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFRhYmlmeSBSZWdpb24gICAgICAgLS0gVHVybnMgKmxlYWRpbmcqIHN0cmV0Y2hlcyBvZiBzcGFjZXMgaW50byB0YWJzLgotICAgICAgICAgICAgICAgIChOb3RlOiBXZSByZWNvbW1lbmQgdXNpbmcgNCBzcGFjZSBibG9ja3MgdG8gaW5kZW50IFB5dGhvbiBjb2RlLikKLSAgICAgICAgVW50YWJpZnkgUmVnaW9uICAgICAtLSBUdXJuICphbGwqIHRhYnMgaW50byB0aGUgY29ycmVudCBudW1iZXIgb2Ygc3BhY2VzCi0gICAgICAgIFRvZ2dsZSB0YWJzICAgICAgICAgLS0gT3BlbiBhIGRpYWxvZyB0byBzd2l0Y2ggYmV0d2VlbiBpbmRlbnRpbmcgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcyBhbmQgdGFicy4KLSAgICAgICAgTmV3IEluZGVudCBXaWR0aC4uLiAtLSBPcGVuIGEgZGlhbG9nIHRvIGNoYW5nZSBpbmRlbnQgd2lkdGguICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZCBkZWZhdWx0IGJ5IHRoZSBQeXRob24gY29tbXVuaXR5IGlzIDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMuCi0gICAgICAgIEZvcm1hdCBQYXJhZ3JhcGggICAgLS0gUmVmb3JtYXQgdGhlIGN1cnJlbnQgYmxhbmstbGluZS1zZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGguIEFsbCBsaW5lcyBpbiB0aGUgcGFyYWdyYXBoIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgdG8gbGVzcyB0aGFuIDgwIGNvbHVtbnMuCi0gICAgICAgIC0tLQotICAgICAgICBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIC0tIFJlbW92ZWQgYW55IHNwYWNlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXN0IG5vbi1zcGFjZSBjaGFyYWN0ZXIKLQotUnVuIE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgUHl0aG9uIFNoZWxsIC0tIE9wZW4gb3Igd2FrZSB1cCB0aGUgUHl0aG9uIHNoZWxsIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ2hlY2sgTW9kdWxlIC0tIENoZWNrIHRoZSBzeW50YXggb2YgdGhlIG1vZHVsZSBjdXJyZW50bHkgb3BlbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRvciB3aW5kb3cuICBJZiB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBzYXZlZCBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZSBjb2RlLgotICAgICAgICBSdW4gTW9kdWxlICAgLS0gUmVzdGFydCB0aGUgc2hlbGwgdG8gY2xlYW4gdGhlIGVudmlyb25tZW50LCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBjdXJyZW50bHkgb3BlbiBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYmVlbiBzYXZlZCBJRExFIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLgotCi1TaGVsbCBNZW51IChTaGVsbCB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgVmlldyBMYXN0IFJlc3RhcnQgLS0gU2Nyb2xsIHRoZSBzaGVsbCB3aW5kb3cgdG8gdGhlIGxhc3QgU2hlbGwgcmVzdGFydAotICAgICAgICBSZXN0YXJ0IFNoZWxsICAgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQKLQotRGVidWcgTWVudSAoU2hlbGwgd2luZG93IG9ubHkpOgotCi0gICAgICAgIEdvIHRvIEZpbGUvTGluZSAgIC0tIExvb2sgYXJvdW5kIHRoZSBpbnNlcnQgcG9pbnQgZm9yIGEgZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLCBhbmQgc2hvdyB0aGUgbGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlZnVsIHRvIHZpZXcgdGhlIHNvdXJjZSBsaW5lcyByZWZlcmVuY2VkIGluIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiB0cmFjZWJhY2suICBBdmFpbGFibGUgaW4gdGhlIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSBvZiB0aGUgU2hlbGwgd2luZG93LgotICAgICAgICBEZWJ1Z2dlciAodG9nZ2xlKSAtLSBUaGlzIGZlYXR1cmUgaXMgbm90IGNvbXBsZXRlIGFuZCBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbC4gUnVuIGNvbW1hbmRzIGluIHRoZSBzaGVsbCB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXIuCi0gICAgICAgIFN0YWNrIFZpZXdlciAgICAgIC0tIFNob3cgdGhlIHN0YWNrIHRyYWNlYmFjayBvZiB0aGUgbGFzdCBleGNlcHRpb24KLSAgICAgICAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAodG9nZ2xlKSAtLSBUb2dnbGUgYXV0b21hdGljYWxseSBvcGVuaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIHZpZXdlciBvbiB1bmhhbmRsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24KLQotT3B0aW9ucyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBDb25maWd1cmUgSURMRSAtLSBPcGVuIGEgY29uZmlndXJhdGlvbiBkaWFsb2cuICBGb250cywgaW5kZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJpbmRpbmdzLCBhbmQgY29sb3IgdGhlbWVzIG1heSBiZSBhbHRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydHVwIFByZWZlcmVuY2VzIG1heSBiZSBzZXQsIGFuZCBhZGRpdGlvbmFsIEhlbHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcyBjYW4gYmUgc3BlY2lmaWVkLiAgT24gT1MgWCwgb3BlbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaWFsb2cgYnkgc2VsZWN0aW5nIFByZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotCi0gICAgICAgIC0tLQotICAgICAgICBDb2RlIENvbnRleHQgKHRvZ2dsZSkgLS0gT3BlbiBhIHBhbmUgYXQgdGhlIHRvcCBvZiB0aGUgZWRpdCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3dzIHRoZSBibG9jayBjb250ZXh0IG9mIHRoZSBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBjb2RlIHdoaWNoIGlzIHNjcm9sbGluZyBvZmYgdGhlIHRvcCBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy4gVGhpcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgU2hlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdyBvbmx5IHRoZSBFZGl0b3Igd2luZG93LgotCi1XaW5kb3cgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgWm9vbSBIZWlnaHQgLS0gVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbm9ybWFsIHNpemUgKDQweDgwIGluaXRpYWwKLSAgICAgICAgc2V0dGluZykgYW5kIG1heGltdW0gaGVpZ2h0LiAgVGhlIGluaXRpYWwgc2l6ZSBpcyBpbiB0aGUgQ29uZmlndXJlCi0gICAgICAgIElETEUgZGlhbG9nIHVuZGVyIHRoZSBnZW5lcmFsIHRhYi4KLSAgICAgICAgLS0tCi0gICAgICAgIFRoZSByZXN0IG9mIHRoaXMgbWVudSBsaXN0cyB0aGUgbmFtZXMgb2YgYWxsIG9wZW4gd2luZG93czsKLSAgICAgICAgc2VsZWN0IG9uZSB0byBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmCi0gICAgICAgIG5lY2Vzc2FyeSkuCi0KLUhlbHAgTWVudToKLQotICAgICAgICBBYm91dCBJRExFICAtLSBWZXJzaW9uLCBjb3B5cmlnaHQsIGxpY2Vuc2UsIGNyZWRpdHMKLSAgICAgICAgLS0tCi0gICAgICAgIElETEUgSGVscCAgIC0tIERpc3BsYXkgdGhpcyBmaWxlIHdoaWNoIGlzIGEgaGVscCBmaWxlIGZvciBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGluZyB0aGUgbWVudSBvcHRpb25zLCBiYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgdGlwcy4KLSAgICAgICAgUHl0aG9uIERvY3MgLS0gQWNjZXNzIGxvY2FsIFB5dGhvbiBkb2N1bWVudGF0aW9uLCBpZgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuICBPciB3aWxsIHN0YXJ0IGEgd2ViIGJyb3dzZXIgYW5kIG9wZW4KLSAgICAgICAgICAgICAgICAgICAgICAgZG9jcy5weXRob24ub3JnIHNob3dpbmcgdGhlIGxhdGVzdCBQeXRob24gZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgLS0tCi0gICAgICAgIEFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIG1heSBiZSBhZGRlZCBoZXJlIHdpdGggdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUgR2VuZXJhbCB0YWIuCi0KLUVkaXRvciBjb250ZXh0IG1lbnUgKFJpZ2h0LWNsaWNrIC8gQ29udHJvbC1jbGljayBvbiBPUyBYIGluIEVkaXQgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZXQgQnJlYWtwb2ludCAgIC0tIFNldHMgYSBicmVha3BvaW50LiBCcmVha3BvaW50cyBhcmUgb25seSBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgZGVidWdnZXIgaXMgb3Blbi4KLSAgICAgICAgQ2xlYXIgQnJlYWtwb2ludCAtLSBDbGVhcnMgdGhlIGJyZWFrcG9pbnQgb24gdGhhdCBsaW5lCi0KLVNoZWxsIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gU2hlbGwgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgR28gdG8gZmlsZS9saW5lICAtLSBTYW1lIGFzIGluIERlYnVnIG1lbnUKLQotCi0qKiBUSVBTICoqCi09PT09PT09PT09Ci0KLUFkZGl0aW9uYWwgSGVscCBTb3VyY2VzOgotCi0gICAgICAgIFdpbmRvd3MgdXNlcnMgY2FuIEdvb2dsZSBvbiB6b3Blc2hlbGYuY2htIHRvIGFjY2VzcyBab3BlIGhlbHAgZmlsZXMgaW4KLSAgICAgICAgdGhlIFdpbmRvd3MgaGVscCBmb3JtYXQuICBUaGUgQWRkaXRpb25hbCBIZWxwIFNvdXJjZXMgZmVhdHVyZSBvZiB0aGUKLSAgICAgICAgY29uZmlndXJhdGlvbiBHVUkgc3VwcG9ydHMgLmNobSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZmlsZXR5cGVzCi0gICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuICBTdXBwbHkgYSBNZW51IEl0ZW0gdGl0bGUsIGFuZCBlbnRlciB0aGUKLSAgICAgICAgbG9jYXRpb24gaW4gdGhlIEhlbHAgRmlsZSBQYXRoIHNsb3Qgb2YgdGhlIE5ldyBIZWxwIFNvdXJjZSBkaWFsb2cuICBVc2UKLSAgICAgICAgaHR0cDovLyBhbmQvb3Igd3d3LiB0byBpZGVudGlmeSBleHRlcm5hbCBVUkxzLCBvciBkb3dubG9hZCB0aGUgZmlsZSBhbmQKLSAgICAgICAgYnJvd3NlIGZvciBpdHMgcGF0aCBvbiB5b3VyIG1hY2hpbmUgdXNpbmcgdGhlIEJyb3dzZSBidXR0b24uCi0KLSAgICAgICAgQWxsIHVzZXJzIGNhbiBhY2Nlc3MgdGhlIGV4dGVuc2l2ZSBzb3VyY2VzIG9mIGhlbHAsIGluY2x1ZGluZwotICAgICAgICB0dXRvcmlhbHMsIGF2YWlsYWJsZSBhdCBkb2NzLnB5dGhvbi5vcmcuICBTZWxlY3RlZCBVUkxzIGNhbiBiZSBhZGRlZAotICAgICAgICBvciByZW1vdmVkIGZyb20gdGhlIEhlbHAgbWVudSBhdCBhbnkgdGltZSB1c2luZyBDb25maWd1cmUgSURMRS4KLQotQmFzaWMgZWRpdGluZyBhbmQgbmF2aWdhdGlvbjoKLQotICAgICAgICBCYWNrc3BhY2UgZGVsZXRlcyBjaGFyIHRvIHRoZSBsZWZ0OyBERUwgZGVsZXRlcyBjaGFyIHRvIHRoZSByaWdodC4KLSAgICAgICAgQ29udHJvbC1iYWNrc3BhY2UgZGVsZXRlcyB3b3JkIGxlZnQsIENvbnRyb2wtREVMIGRlbGV0ZXMgd29yZCByaWdodC4KLSAgICAgICAgQXJyb3cga2V5cyBhbmQgUGFnZSBVcC9Eb3duIG1vdmUgYXJvdW5kLgotICAgICAgICBDb250cm9sLWxlZnQvcmlnaHQgQXJyb3cgbW92ZXMgYnkgd29yZHMgaW4gYSBzdHJhbmdlIGJ1dCB1c2VmdWwgd2F5LgotICAgICAgICBIb21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZS4KLSAgICAgICAgQ29udHJvbC1Ib21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgZmlsZS4KLSAgICAgICAgU29tZSB1c2VmdWwgRW1hY3MgYmluZGluZ3MgYXJlIGluaGVyaXRlZCBmcm9tIFRjbC9UazoKLSAgICAgICAgICAgICAgICBDb250cm9sLWEgICAgIGJlZ2lubmluZyBvZiBsaW5lCi0gICAgICAgICAgICAgICAgQ29udHJvbC1lICAgICBlbmQgb2YgbGluZQotICAgICAgICAgICAgICAgIENvbnRyb2wtayAgICAga2lsbCBsaW5lIChidXQgZG9lc24ndCBwdXQgaXQgaW4gY2xpcGJvYXJkKQotICAgICAgICAgICAgICAgIENvbnRyb2wtbCAgICAgY2VudGVyIHdpbmRvdyBhcm91bmQgdGhlIGluc2VydGlvbiBwb2ludAotICAgICAgICBTdGFuZGFyZCBrZXliaW5kaW5ncyAobGlrZSBDb250cm9sLWMgdG8gY29weSBhbmQgQ29udHJvbC12IHRvCi0gICAgICAgIHBhc3RlKSBtYXkgd29yay4gIEtleWJpbmRpbmdzIGFyZSBzZWxlY3RlZCBpbiB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nLgotCi1BdXRvbWF0aWMgaW5kZW50YXRpb246Ci0KLSAgICAgICAgQWZ0ZXIgYSBibG9jay1vcGVuaW5nIHN0YXRlbWVudCwgdGhlIG5leHQgbGluZSBpcyBpbmRlbnRlZCBieSA0IHNwYWNlcwotICAgICAgICAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgYnkgb25lIHRhYikuICBBZnRlciBjZXJ0YWluIGtleXdvcmRzCi0gICAgICAgIChicmVhaywgcmV0dXJuIGV0Yy4pIHRoZSBuZXh0IGxpbmUgaXMgZGVkZW50ZWQuICBJbiBsZWFkaW5nCi0gICAgICAgIGluZGVudGF0aW9uLCBCYWNrc3BhY2UgZGVsZXRlcyB1cCB0byA0IHNwYWNlcyBpZiB0aGV5IGFyZSB0aGVyZS4gIFRhYgotICAgICAgICBpbnNlcnRzIHNwYWNlcyAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgb25lIHRhYiksIG51bWJlciBkZXBlbmRzIG9uCi0gICAgICAgIEluZGVudCBXaWR0aC4gQ3VycmVudGx5IHRhYnMgYXJlIHJlc3RyaWN0ZWQgdG8gZm91ciBzcGFjZXMgZHVlCi0gICAgICAgIHRvIFRjbC9UayBsaW1pdGF0aW9ucy4KLQotICAgICAgICBTZWUgYWxzbyB0aGUgaW5kZW50L2RlZGVudCByZWdpb24gY29tbWFuZHMgaW4gdGhlIGVkaXQgbWVudS4KLQotQ29tcGxldGlvbnM6Ci0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIHN1cHBsaWVkIGZvciBmdW5jdGlvbnMsIGNsYXNzZXMsIGFuZCBhdHRyaWJ1dGVzIG9mCi0gICAgICAgIGNsYXNzZXMsIGJvdGggYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZC4gIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkCi0gICAgICAgIGZvciBmaWxlbmFtZXMuCi0KLSAgICAgICAgVGhlIEF1dG9Db21wbGV0ZVdpbmRvdyAoQUNXKSB3aWxsIG9wZW4gYWZ0ZXIgYSBwcmVkZWZpbmVkIGRlbGF5Ci0gICAgICAgIChkZWZhdWx0IGlzIHR3byBzZWNvbmRzKSBhZnRlciBhICcuJyBvciAoaW4gYSBzdHJpbmcpIGFuIG9zLnNlcCBpcwotICAgICAgICB0eXBlZC4gIElmIGFmdGVyIG9uZSBvZiB0aG9zZSBjaGFyYWN0ZXJzIChwbHVzIHplcm8gb3IgbW9yZSBvdGhlcgotICAgICAgICBjaGFyYWN0ZXJzKSBhIHRhYiBpcyB0eXBlZCB0aGUgQUNXIHdpbGwgb3BlbiBpbW1lZGlhdGVseSBpZiBhIHBvc3NpYmxlCi0gICAgICAgIGNvbnRpbnVhdGlvbiBpcyBmb3VuZC4KLQotICAgICAgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIGZvciB0aGUgY2hhcmFjdGVycyBlbnRlcmVkLCBhCi0gICAgICAgIHRhYiB3aWxsIHN1cHBseSB0aGF0IGNvbXBsZXRpb24gd2l0aG91dCBvcGVuaW5nIHRoZSBBQ1cuCi0KLSAgICAgICAgJ1Nob3cgQ29tcGxldGlvbnMnIHdpbGwgZm9yY2Ugb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdywgYnkgZGVmYXVsdCB0aGUKLSAgICAgICAgQ29udHJvbC1zcGFjZSBrZXlzIHdpbGwgb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdy4gIEluIGFuIGVtcHR5Ci0gICAgICAgIHN0cmluZywgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIE9uIGEKLSAgICAgICAgYmxhbmsgbGluZSwgaXQgd2lsbCBjb250YWluIHRoZSBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQKLSAgICAgICAgY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gIElmIHNvbWUKLSAgICAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gZW50ZXJlZCwgdGhlIEFDVyB3aWxsIGF0dGVtcHQgdG8gYmUgbW9yZSBzcGVjaWZpYy4KLQotICAgICAgICBJZiBzdHJpbmcgb2YgY2hhcmFjdGVycyBpcyB0eXBlZCwgdGhlIEFDVyBzZWxlY3Rpb24gd2lsbCBqdW1wIHRvIHRoZQotICAgICAgICBlbnRyeSBtb3N0IGNsb3NlbHkgbWF0Y2hpbmcgdGhvc2UgY2hhcmFjdGVycy4gRW50ZXJpbmcgYSB0YWIgd2lsbCBjYXVzZQotICAgICAgICB0aGUgbG9uZ2VzdCBub24tYW1iaWd1b3VzIG1hdGNoIHRvIGJlIGVudGVyZWQgaW4gdGhlIEVkaXQgd2luZG93IG9yCi0gICAgICAgIFNoZWxsLiAgVHdvIHRhYnMgaW4gYSByb3cgd2lsbCBzdXBwbHkgdGhlIGN1cnJlbnQgQUNXIHNlbGVjdGlvbiwgYXMKLSAgICAgICAgd2lsbCByZXR1cm4gb3IgYSBkb3VibGUgY2xpY2suICBDdXJzb3Iga2V5cywgUGFnZSBVcC9Eb3duLCBtb3VzZQotICAgICAgICBzZWxlY3Rpb24sIGFuZCB0aGUgc2Nyb2xsIHdoZWVsIGFsbCBvcGVyYXRlIG9uIHRoZSBBQ1cuCi0KLSAgICAgICAgIkhpZGRlbiIgYXR0cmlidXRlcyBjYW4gYmUgYWNjZXNzZWQgYnkgdHlwaW5nIHRoZSBiZWdpbm5pbmcgb2YgaGlkZGVuCi0gICAgICAgIG5hbWUgYWZ0ZXIgYSAnLicsICBlLmcuICdfJy4gIFRoaXMgYWxsb3dzIGFjY2VzcyB0byBtb2R1bGVzIHdpdGgKLSAgICAgICAgJ19fYWxsX18nIHNldCwgb3IgdG8gY2xhc3MtcHJpdmF0ZSBhdHRyaWJ1dGVzLgotCi0gICAgICAgIENvbXBsZXRpb25zIGFuZCB0aGUgJ0V4cGFuZCBXb3JkJyBmYWNpbGl0eSBjYW4gc2F2ZSBhIGxvdCBvZiB0eXBpbmchCi0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIGN1cnJlbnRseSBsaW1pdGVkIHRvIHRob3NlIGluIHRoZSBuYW1lc3BhY2VzLiAgTmFtZXMgaW4KLSAgICAgICAgYW4gRWRpdG9yIHdpbmRvdyB3aGljaCBhcmUgbm90IHZpYSBfX21haW5fXyBvciBzeXMubW9kdWxlcyB3aWxsIG5vdCBiZQotICAgICAgICBmb3VuZC4gIFJ1biB0aGUgbW9kdWxlIG9uY2Ugd2l0aCB5b3VyIGltcG9ydHMgdG8gY29ycmVjdCB0aGlzCi0gICAgICAgIHNpdHVhdGlvbi4gIE5vdGUgdGhhdCBJRExFIGl0c2VsZiBwbGFjZXMgcXVpdGUgYSBmZXcgbW9kdWxlcyBpbgotICAgICAgICBzeXMubW9kdWxlcywgc28gbXVjaCBjYW4gYmUgZm91bmQgYnkgZGVmYXVsdCwgZS5nLiB0aGUgcmUgbW9kdWxlLgotCi0gICAgICAgIElmIHlvdSBkb24ndCBsaWtlIHRoZSBBQ1cgcG9wcGluZyB1cCB1bmJpZGRlbiwgc2ltcGx5IG1ha2UgdGhlIGRlbGF5Ci0gICAgICAgIGxvbmdlciBvciBkaXNhYmxlIHRoZSBleHRlbnNpb24uICBPciBhbm90aGVyIG9wdGlvbiBpcyB0aGUgZGVsYXkgY291bGQKLSAgICAgICAgYmUgc2V0IHRvIHplcm8uIEFub3RoZXIgYWx0ZXJuYXRpdmUgdG8gcHJldmVudGluZyBBQ1cgcG9wdXBzIGlzIHRvCi0gICAgICAgIGRpc2FibGUgdGhlIGNhbGwgdGlwcyBleHRlbnNpb24uCi0KLVB5dGhvbiBTaGVsbCB3aW5kb3c6Ci0KLSAgICAgICAgQ29udHJvbC1jIGludGVycnVwdHMgZXhlY3V0aW5nIGNvbW1hbmQuCi0gICAgICAgIENvbnRyb2wtZCBzZW5kcyBlbmQtb2YtZmlsZTsgY2xvc2VzIHdpbmRvdyBpZiB0eXBlZCBhdCA+Pj4gcHJvbXB0LgotICAgICAgICBBbHQtLyBleHBhbmQgd29yZCBpcyBhbHNvIHVzZWZ1bCB0byByZWR1Y2UgdHlwaW5nLgotCi0gICAgQ29tbWFuZCBoaXN0b3J5OgotCi0gICAgICAgIEFsdC1wIHJldHJpZXZlcyBwcmV2aW91cyBjb21tYW5kIG1hdGNoaW5nIHdoYXQgeW91IGhhdmUgdHlwZWQuIE9uIE9TIFgKLSAgICAgICAgdXNlIENvbnRyb2wtcC4KLSAgICAgICAgQWx0LW4gcmV0cmlldmVzIG5leHQuIE9uIE9TIFggdXNlIENvbnRyb2wtbi4KLSAgICAgICAgUmV0dXJuIHdoaWxlIGN1cnNvciBpcyBvbiBhIHByZXZpb3VzIGNvbW1hbmQgcmV0cmlldmVzIHRoYXQgY29tbWFuZC4KLQotICAgIFN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgVGhlIGNvbG9yaW5nIGlzIGFwcGxpZWQgaW4gYSBiYWNrZ3JvdW5kICJ0aHJlYWQiLCBzbyB5b3UgbWF5Ci0gICAgICAgIG9jY2FzaW9uYWxseSBzZWUgdW5jb2xvcml6ZWQgdGV4dC4gIFRvIGNoYW5nZSB0aGUgY29sb3IKLSAgICAgICAgc2NoZW1lLCB1c2UgdGhlIENvbmZpZ3VyZSBJRExFIC8gSGlnaGxpZ2h0aW5nIGRpYWxvZy4KLQotICAgIFB5dGhvbiBkZWZhdWx0IHN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgS2V5d29yZHMgICAgICAgIG9yYW5nZQotICAgICAgICBCdWlsdGlucyAgICAgICAgcm95YWwgcHVycGxlCi0gICAgICAgIFN0cmluZ3MgICAgICAgICBncmVlbgotICAgICAgICBDb21tZW50cyAgICAgICAgcmVkCi0gICAgICAgIERlZmluaXRpb25zICAgICBibHVlCi0KLSAgICBTaGVsbCBkZWZhdWx0IGNvbG9yczoKLQotICAgICAgICBDb25zb2xlIG91dHB1dCAgYnJvd24KLSAgICAgICAgc3Rkb3V0ICAgICAgICAgIGJsdWUKLSAgICAgICAgc3RkZXJyICAgICAgICAgIHJlZAotICAgICAgICBzdGRpbiAgICAgICAgICAgYmxhY2sKLQotT3RoZXIgcHJlZmVyZW5jZXM6Ci0KLSAgICAgICAgVGhlIGZvbnQgcHJlZmVyZW5jZXMsIGhpZ2hsaWdodGluZywga2V5cywgYW5kIGdlbmVyYWwgcHJlZmVyZW5jZXMgY2FuCi0gICAgICAgIGJlIGNoYW5nZWQgdmlhIHRoZSBDb25maWd1cmUgSURMRSBtZW51IG9wdGlvbi4gIEJlIHN1cmUgdG8gbm90ZSB0aGF0Ci0gICAgICAgIGtleXMgY2FuIGJlIHVzZXIgZGVmaW5lZCwgSURMRSBzaGlwcyB3aXRoIGZvdXIgYnVpbHQgaW4ga2V5IHNldHMuIEluCi0gICAgICAgIGFkZGl0aW9uIGEgdXNlciBjYW4gY3JlYXRlIGEgY3VzdG9tIGtleSBzZXQgaW4gdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUga2V5cyB0YWIuCi0KLUNvbW1hbmQgbGluZSB1c2FnZToKLQotICAgICAgICBFbnRlciBpZGxlIC1oIGF0IHRoZSBjb21tYW5kIHByb21wdCB0byBnZXQgYSB1c2FnZSBtZXNzYWdlLgotCi0gICAgICAgIGlkbGUucHkgWy1jIGNvbW1hbmRdIFstZF0gWy1lXSBbLXNdIFstdCB0aXRsZV0gW2FyZ10gLi4uCi0KLSAgICAgICAgLWMgY29tbWFuZCAgcnVuIHRoaXMgY29tbWFuZAotICAgICAgICAtZCAgICAgICAgICBlbmFibGUgZGVidWdnZXIKLSAgICAgICAgLWUgICAgICAgICAgZWRpdCBtb2RlOyBhcmd1bWVudHMgYXJlIGZpbGVzIHRvIGJlIGVkaXRlZAotICAgICAgICAtcyAgICAgICAgICBydW4gJElETEVTVEFSVFVQIG9yICRQWVRIT05TVEFSVFVQIGZpcnN0Ci0gICAgICAgIC10IHRpdGxlICAgIHNldCB0aXRsZSBvZiBzaGVsbCB3aW5kb3cKLQotICAgICAgICBJZiB0aGVyZSBhcmUgYXJndW1lbnRzOgotICAgICAgICAxLiBJZiAtZSBpcyB1c2VkLCBhcmd1bWVudHMgYXJlIGZpbGVzIG9wZW5lZCBmb3IgZWRpdGluZyBhbmQgc3lzLmFyZ3YKLSAgICAgICAgICAgcmVmbGVjdHMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gSURMRSBpdHNlbGYuCi0gICAgICAgIDIuIE90aGVyd2lzZSwgaWYgLWMgaXMgdXNlZCwgYWxsIGFyZ3VtZW50cyBhcmUgcGxhY2VkIGluCi0gICAgICAgICAgIHN5cy5hcmd2WzE6Li4uXSwgd2l0aCBzeXMuYXJndlswXSBzZXQgdG8gLWMuCi0gICAgICAgIDMuIE90aGVyd2lzZSwgaWYgbmVpdGhlciAtZSBub3IgLWMgaXMgdXNlZCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEKLSAgICAgICAgICAgc2NyaXB0IHdoaWNoIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4KLSAgICAgICAgICAgc3lzLmFyZ3ZbMTouLi5dICBhbmQgc3lzLmFyZ3ZbMF0gc2V0IHRvIHRoZSBzY3JpcHQgbmFtZS4gIElmIHRoZQotICAgICAgICAgICBzY3JpcHQgbmFtZSBpcyAtLCBubyBzY3JpcHQgaXMgZXhlY3V0ZWQgYnV0IGFuIGludGVyYWN0aXZlIFB5dGhvbgotICAgICAgICAgICBzZXNzaW9uIGlzIHN0YXJ0ZWQ7IHRoZSBhcmd1bWVudHMgYXJlIHN0aWxsIGF2YWlsYWJsZSBpbiBzeXMuYXJndi4KLQotUnVubmluZyB3aXRob3V0IGEgc3VicHJvY2VzczogKERFUFJFQ0FURUQgaW4gUHl0aG9uIDMuNCBzZWUgSXNzdWUgMTYxMjMpCi0KLSAgICAgICAgSWYgSURMRSBpcyBzdGFydGVkIHdpdGggdGhlIC1uIGNvbW1hbmQgbGluZSBzd2l0Y2ggaXQgd2lsbCBydW4gaW4gYQotICAgICAgICBzaW5nbGUgcHJvY2VzcyBhbmQgd2lsbCBub3QgY3JlYXRlIHRoZSBzdWJwcm9jZXNzIHdoaWNoIHJ1bnMgdGhlIFJQQwotICAgICAgICBQeXRob24gZXhlY3V0aW9uIHNlcnZlci4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiBQeXRob24gY2Fubm90IGNyZWF0ZQotICAgICAgICB0aGUgc3VicHJvY2VzcyBvciB0aGUgUlBDIHNvY2tldCBpbnRlcmZhY2Ugb24geW91ciBwbGF0Zm9ybS4gIEhvd2V2ZXIsCi0gICAgICAgIGluIHRoaXMgbW9kZSB1c2VyIGNvZGUgaXMgbm90IGlzb2xhdGVkIGZyb20gSURMRSBpdHNlbGYuICBBbHNvLCB0aGUKLSAgICAgICAgZW52aXJvbm1lbnQgaXMgbm90IHJlc3RhcnRlZCB3aGVuIFJ1bi9SdW4gTW9kdWxlIChGNSkgaXMgc2VsZWN0ZWQuICBJZgotICAgICAgICB5b3VyIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQsIHlvdSBtdXN0IHJlbG9hZCgpIHRoZSBhZmZlY3RlZCBtb2R1bGVzIGFuZAotICAgICAgICByZS1pbXBvcnQgYW55IHNwZWNpZmljIGl0ZW1zIChlLmcuIGZyb20gZm9vIGltcG9ydCBiYXopIGlmIHRoZSBjaGFuZ2VzCi0gICAgICAgIGFyZSB0byB0YWtlIGVmZmVjdC4gIEZvciB0aGVzZSByZWFzb25zLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHJ1biBJRExFCi0gICAgICAgIHdpdGggdGhlIGRlZmF1bHQgc3VicHJvY2VzcyBpZiBhdCBhbGwgcG9zc2libGUuCi0KLUV4dGVuc2lvbnM6Ci0KLSAgICAgICAgSURMRSBjb250YWlucyBhbiBleHRlbnNpb24gZmFjaWxpdHkuICBTZWUgdGhlIGJlZ2lubmluZyBvZgotICAgICAgICBjb25maWctZXh0ZW5zaW9ucy5kZWYgaW4gdGhlIGlkbGVsaWIgZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotICAgICAgICBUaGUgZGVmYXVsdCBleHRlbnNpb25zIGFyZSBjdXJyZW50bHk6Ci0KLSAgICAgICAgICAgICAgICBGb3JtYXRQYXJhZ3JhcGgKLSAgICAgICAgICAgICAgICBBdXRvRXhwYW5kCi0gICAgICAgICAgICAgICAgWm9vbUhlaWdodAotICAgICAgICAgICAgICAgIFNjcmlwdEJpbmRpbmcKLSAgICAgICAgICAgICAgICBDYWxsVGlwcwotICAgICAgICAgICAgICAgIFBhcmVuTWF0Y2gKLSAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUKLSAgICAgICAgICAgICAgICBDb2RlQ29udGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CmluZGV4IGE4Zjc1ZDIuLjA3MWJkM2UgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKQEAgLTEsMTEgKzEsMTMgQEAKICIiIkFib3V0IERpYWxvZyBmb3IgSURMRQogCiAiIiIKLQogaW1wb3J0IG9zCiBmcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgorCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcKKworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldworCiAKIGNsYXNzIEFib3V0RGlhbG9nKFRvcGxldmVsKToKICAgICAiIiJNb2RhbCBhYm91dCBkaWFsb2cgZm9yIGlkbGUKQEAgLTEzNSwxNyArMTM3LDE4IEBACiAgICAgZGVmIGRpc3BsYXlfcHJpbnRlcl90ZXh0KHNlbGYsIHRpdGxlLCBwcmludGVyKToKICAgICAgICAgcHJpbnRlci5fUHJpbnRlcl9fc2V0dXAoKQogICAgICAgICB0ZXh0ID0gJ1xuJy5qb2luKHByaW50ZXIuX1ByaW50ZXJfX2xpbmVzKQotICAgICAgICB0ZXh0Vmlldy52aWV3X3RleHQoc2VsZiwgdGl0bGUsIHRleHQpCisgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dChzZWxmLCB0aXRsZSwgdGV4dCkKIAogICAgIGRlZiBkaXNwbGF5X2ZpbGVfdGV4dChzZWxmLCB0aXRsZSwgZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBmbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksIGZpbGVuYW1lKQotICAgICAgICB0ZXh0Vmlldy52aWV3X2ZpbGUoc2VsZiwgdGl0bGUsIGZuLCBlbmNvZGluZykKKyAgICAgICAgdGV4dHZpZXcudmlld19maWxlKHNlbGYsIHRpdGxlLCBmbiwgZW5jb2RpbmcpCiAKICAgICBkZWYgT2soc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hlbHBhYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGVscF9hYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihBYm91dERpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaGlzdG9yeS5weQppbmRleCAwNzhhZjI5Li41NmY1M2EwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9oaXN0b3J5LnB5CkBAIC0xLDExICsxLDEyIEBACiAiSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20gd2l0aCBIaXN0b3J5IGNsYXNzIgogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgSGlzdG9yeToKICAgICAnJycgSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20uCiAKLSAgICBzdG9yZSAtIFN0b3JlIHNvdXJjZSBzdGF0ZW1lbnQgKGNhbGxlZCBmcm9tIFB5U2hlbGwucmVzZXRvdXRwdXQpLgorICAgIHN0b3JlIC0gU3RvcmUgc291cmNlIHN0YXRlbWVudCAoY2FsbGVkIGZyb20gcHlzaGVsbC5yZXNldG91dHB1dCkuCiAgICAgZmV0Y2ggLSBGZXRjaCBzdG9yZWQgc3RhdGVtZW50IG1hdGNoaW5nIHByZWZpeCBhbHJlYWR5IGVudGVyZWQuCiAgICAgaGlzdG9yeV9uZXh0IC0gQm91bmQgdG8gPDxoaXN0b3J5LW5leHQ+PiBldmVudCAoZGVmYXVsdCBBbHQtTikuCiAgICAgaGlzdG9yeV9wcmV2IC0gQm91bmQgdG8gPDxoaXN0b3J5LXByZXY+PiBldmVudCAoZGVmYXVsdCBBbHQtUCkuCkBAIC05OSw2ICsxMDAsNyBAQAogICAgICAgICBzZWxmLnBvaW50ZXIgPSBOb25lCiAgICAgICAgIHNlbGYucHJlZml4ID0gTm9uZQogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgotICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaWRsZWhpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CmluZGV4IDc3Y2IwNTcuLjQ1MGE3MDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CkBAIC00LDExICs0LDEwIEBACiBwcm9wZXIgaW5kZW50YXRpb24gb2YgY29kZS4gIEh5cGVyUGFyc2VyIGdpdmVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24KIHRoZSBzdHJ1Y3R1cmUgb2YgY29kZS4KICIiIgotCi1pbXBvcnQgc3RyaW5nCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVBhcnNlCitpbXBvcnQgc3RyaW5nCiAKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlwYXJzZQogCiAjIGFsbCBBU0NJSSBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCiBfQVNDSUlfSURfQ0hBUlMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iKQpAQCAtMzAsNyArMjksNyBAQAogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBlZGl0d2luLnRleHQKIAotICAgICAgICBwYXJzZXIgPSBQeVBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQorICAgICAgICBwYXJzZXIgPSBweXBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQogCiAgICAgICAgIGRlZiBpbmRleDJsaW5lKGluZGV4KToKICAgICAgICAgICAgIHJldHVybiBpbnQoZmxvYXQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZS5weSBiL0xpYi9pZGxlbGliL2lkbGUucHkKaW5kZXggMTQxNTM0ZC4uNDg1ZDVhNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAorCiAjIEVuYWJsZSBydW5uaW5nIElETEUgd2l0aCBpZGxlbGliIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uLgogIyBUaGlzIHdhcyBvbmNlIHVzZWQgdG8gcnVuIGRldmVsb3BtZW50IHZlcnNpb25zIG9mIElETEUuCiAjIEJlY2F1c2UgUEVQIDQzNCBkZWNsYXJlZCBpZGxlLnB5IGEgcHVibGljIGludGVyZmFjZSwKQEAgLTksNSArMTAsNSBAQAogaWYgaWRsZWxpYl9kaXIgbm90IGluIHN5cy5wYXRoOgogICAgIHN5cy5wYXRoLmluc2VydCgwLCBpZGxlbGliX2RpcikKIAotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLnB5dyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CmluZGV4IDE0MmNiMzIuLmU3M2MwNDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGUucHl3CisrKyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CkBAIC0xLDEwICsxLDEwIEBACiB0cnk6Ci0gICAgaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAorICAgIGltcG9ydCBpZGxlbGliLnB5c2hlbGwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIElETEUgaXMgbm90IGluc3RhbGxlZCwgYnV0IG1heWJlIFB5U2hlbGwgaXMgb24gc3lzLnBhdGg6Ci0gICAgZnJvbSAuIGltcG9ydCBQeVNoZWxsCisgICAgIyBJRExFIGlzIG5vdCBpbnN0YWxsZWQsIGJ1dCBtYXliZSBweXNoZWxsIGlzIG9uIHN5cy5wYXRoOgorICAgIGZyb20gLiBpbXBvcnQgcHlzaGVsbAogICAgIGltcG9ydCBvcwotICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKFB5U2hlbGwuX19maWxlX18pKQorICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHB5c2hlbGwuX19maWxlX18pKQogICAgIGlmIGlkbGVkaXIgIT0gb3MuZ2V0Y3dkKCk6CiAgICAgICAgICMgV2UncmUgbm90IGluIHRoZSBJRExFIGRpcmVjdG9yeSwgaGVscCB0aGUgc3VicHJvY2VzcyBmaW5kIHJ1bi5weQogICAgICAgICBweXBhdGggPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OUEFUSCcsICcnKQpAQCAtMTIsNiArMTIsNiBAQAogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gcHlwYXRoICsgJzonICsgaWRsZWRpcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gaWRsZWRpcgotICAgIFB5U2hlbGwubWFpbigpCisgICAgcHlzaGVsbC5tYWluKCkKIGVsc2U6Ci0gICAgaWRsZWxpYi5QeVNoZWxsLm1haW4oKQorICAgIGlkbGVsaWIucHlzaGVsbC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQppbmRleCA4NDVjOTJkLi5hZDA2N2I0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CkBAIC0xLDYgKzEsOCBAQAogJycnaWRsZWxpYi5pZGxlX3Rlc3QgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlLAogd2hpY2ggdGVzdHMgdGhlIElETEUgYXBwbGljYXRpb24gYXMgcGFydCBvZiB0aGUgc3RkbGliIHRlc3Qgc3VpdGUuCiBSdW4gSURMRSB0ZXN0cyBhbG9uZSB3aXRoICJweXRob24gLW0gdGVzdC50ZXN0X2lkbGUiLgorU3RhcnRpbmcgd2l0aCBQeXRob24gMy42LCBJRExFIHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgbGF0ZXIuCisKIFRoaXMgcGFja2FnZSBhbmQgaXRzIGNvbnRhaW5lZCBtb2R1bGVzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSBhbmQKIGFueSBkaXJlY3QgdXNlIGlzIGF0IHlvdXIgb3duIHJpc2suCiAnJycKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQppbmRleCA1OGU2MmNiLi42ZjY3NmFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CkBAIC01OSwxOSArNTksMjAgQEAKIAogCiBNb2R1bGVzIGFuZCBjbGFzc2VzIG5vdCBiZWluZyB0ZXN0ZWQgYXQgdGhlIG1vbWVudDoKLVB5U2hlbGwuUHlTaGVsbEVkaXRvcldpbmRvdwotRGVidWdnZXIuRGVidWdnZXIKLUF1dG9Db21wbGV0ZVdpbmRvdy5BdXRvQ29tcGxldGVXaW5kb3cKLU91dHB1dFdpbmRvdy5PdXRwdXRXaW5kb3cgKGluZGlyZWN0bHkgYmVpbmcgdGVzdGVkIHdpdGggZ3JlcCB0ZXN0KQorcHlzaGVsbC5QeVNoZWxsRWRpdG9yV2luZG93CitkZWJ1Z2dlci5EZWJ1Z2dlcgorYXV0b2NvbXBsZXRlX3cuQXV0b0NvbXBsZXRlV2luZG93CitvdXR3aW4uT3V0cHV0V2luZG93IChpbmRpcmVjdGx5IGJlaW5nIHRlc3RlZCB3aXRoIGdyZXAgdGVzdCkKICcnJwogCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW1wb3J0X21vZHVsZQotZnJvbSBpZGxlbGliLm1hY29zeFN1cHBvcnQgaW1wb3J0IF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK3RrLk5vRGVmYXVsdFJvb3QoKQogCiBBYm91dERpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2Fib3V0RGlhbG9nJywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnYWJvdXREaWFsb2cgdGVzdCcsCisgICAgJ2ZpbGUnOiAnaGVscF9hYm91dCcsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ2hlbHBfYWJvdXQgdGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsCiAgICAgICAgICAgICAgfSwKICAgICAnbXNnJzogIlRlc3QgZXZlcnkgYnV0dG9uLiBFbnN1cmUgUHl0aG9uLCBUSyBhbmQgSURMRSB2ZXJzaW9ucyAiCkBAIC03OSwxNCArODAsMTQgQEAKICAgICB9CiAKIF9jYWxsdGlwX3dpbmRvd19zcGVjID0gewotICAgICdmaWxlJzogJ0NhbGxUaXBXaW5kb3cnLAorICAgICdmaWxlJzogJ2NhbGx0aXBfdycsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlR5cGluZyAnKCcgc2hvdWxkIGRpc3BsYXkgYSBjYWxsdGlwLlxuIgogICAgICAgICAgICAiVHlwaW5nICcpIHNob3VsZCBoaWRlIHRoZSBjYWxsdGlwLlxuIgogICAgIH0KIAogX2NsYXNzX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdDbGFzc0Jyb3dzZXInLAorICAgICdmaWxlJzogJ2Jyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJJbnNwZWN0IG5hbWVzIG9mIG1vZHVsZSwgY2xhc3Mod2l0aCBzdXBlcmNsYXNzIGlmICIKICAgICAgICAgICAgImFwcGxpY2FibGUpLCBtZXRob2RzIGFuZCBmdW5jdGlvbnMuXG5Ub2dnbGUgbmVzdGVkIGl0ZW1zLlxuIgpAQCAtOTUsNyArOTYsNyBAQAogICAgIH0KIAogX2NvbG9yX2RlbGVnYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ0NvbG9yRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICdjb2xvcml6ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgdGV4dCBpcyBzYW1wbGUgUHl0aG9uIGNvZGUuXG4iCiAgICAgICAgICAgICJFbnN1cmUgY29tcG9uZW50cyBsaWtlIGNvbW1lbnRzLCBrZXl3b3JkcywgYnVpbHRpbnMsXG4iCkBAIC0xMDQsNyArMTA1LDcgQEAKICAgICB9CiAKIENvbmZpZ0RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ0RpYWxvZycsCisgICAgJ2ZpbGUnOiAnY29uZmlnZGlhbG9nJywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnQ29uZmlnRGlhbG9nVGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsfSwKICAgICAnbXNnJzogIklETEUgcHJlZmVyZW5jZXMgZGlhbG9nLlxuIgpAQCAtMTIxLDcgKzEyMiw3IEBACiAKICMgVE9ETyBJbXByb3ZlIG1lc3NhZ2UKIF9keW5fb3B0aW9uX21lbnVfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdkeW5PcHRpb25NZW51V2lkZ2V0JywKKyAgICAnZmlsZSc6ICdkeW5vcHRpb24nLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJTZWxlY3Qgb25lIG9mIHRoZSBtYW55IG9wdGlvbnMgaW4gdGhlICdvbGQgb3B0aW9uIHNldCcuXG4iCiAgICAgICAgICAgICJDbGljayB0aGUgYnV0dG9uIHRvIGNoYW5nZSB0aGUgb3B0aW9uIHNldC5cbiIKQEAgLTEzMCwzOSArMTMxLDE1IEBACiAKICMgVE9ETyBlZGl0IHdyYXBwZXIKIF9lZGl0b3Jfd2luZG93X3NwZWMgPSB7Ci0gICAnZmlsZSc6ICdFZGl0b3JXaW5kb3cnLAorICAgJ2ZpbGUnOiAnZWRpdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGVzdCBlZGl0b3IgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuIgogICAgICAgICAgICAiQmVzdCB0byBjbG9zZSBlZGl0b3IgZmlyc3QuIgogICAgIH0KIAotR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdTZWN0aW9uTmFtZURpYWxvZycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzonR2V0IE5hbWUnLAotICAgICAgICAgICAgICdtZXNzYWdlJzonRW50ZXIgc29tZXRoaW5nJywKLSAgICAgICAgICAgICAndXNlZF9uYW1lcyc6IHsnYWJjJ30sCi0gICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAotICAgICdtc2cnOiAiQWZ0ZXIgdGhlIHRleHQgZW50ZXJlZCB3aXRoIFtPa10gaXMgc3RyaXBwZWQsIDxub3RoaW5nPiwgIgotICAgICAgICAgICAiJ2FiYycsIG9yIG1vcmUgdGhhdCAzMCBjaGFycyBhcmUgZXJyb3JzLlxuIgotICAgICAgICAgICAiQ2xvc2UgJ0dldCBOYW1lJyB3aXRoIGEgdmFsaWQgZW50cnkgKHByaW50ZWQgdG8gU2hlbGwpLCAiCi0gICAgICAgICAgICJbQ2FuY2VsXSwgb3IgW1hdIiwKLSAgICB9Ci0KLUdldEhlbHBTb3VyY2VEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdIZWxwU291cmNlRWRpdCcsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0dldCBoZWxwc291cmNlJywKLSAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCi0gICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiAiCi0gICAgICAgICAgICI8bm90aGluZz4gYW5kIG1vcmUgdGhhbiAzMCBjaGFycyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCi0gICAgICAgICAgICI8bm90aGluZz4sIGZpbGUgZG9lcyBub3QgZXhpc3QgYXJlIGludmFsaWQgcGF0aCBpdGVtcy5cbiIKLSAgICAgICAgICAgIlRlc3QgZm9yIGluY29tcGxldGUgd2ViIGFkZHJlc3MgZm9yIGhlbHAgZmlsZSBwYXRoLlxuIgotICAgICAgICAgICAiQSB2YWxpZCBlbnRyeSB3aWxsIGJlIHByaW50ZWQgdG8gc2hlbGwgd2l0aCBbMGtdLlxuIgotICAgICAgICAgICAiW0NhbmNlbF0gd2lsbCBwcmludCBOb25lIHRvIHNoZWxsIiwKLSAgICB9Ci0KICMgVXBkYXRlIG9uY2UgaXNzdWUyMTUxOSBpcyByZXNvbHZlZC4KIEdldEtleXNEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdrZXliaW5kaW5nRGlhbG9nJywKKyAgICAnZmlsZSc6ICdjb25maWdfa2V5JywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCBrZXliaW5kaW5ncycsCiAgICAgICAgICAgICAgJ2FjdGlvbic6ICdmaW5kLWFnYWluJywKICAgICAgICAgICAgICAnY3VycmVudEtleVNlcXVlbmNlcyc6IFsnJ10gLApAQCAtMTc3LDcgKzE1NCw3IEBACiAgICAgfQogCiBfZ3JlcF9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdHcmVwRGlhbG9nJywKKyAgICAnZmlsZSc6ICdncmVwJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTaG93IEdyZXBEaWFsb2cnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdGhlIHZhcmlvdXMgJ0ZpbmQtaW4tZmlsZXMnIGZ1bmN0aW9ucy5cbiIKQEAgLTE4Niw4ICsxNjMsMjQgQEAKICAgICAgICAgICAgInNob3VsZCBvcGVuIHRoYXQgZmlsZSBcbmluIGEgbmV3IEVkaXRvcldpbmRvdy4iCiAgICAgfQogCitIZWxwU291cmNlX3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdIZWxwIG5hbWUgYW5kIHNvdXJjZScsCisgICAgICAgICAgICAgJ21lbnVpdGVtJzogJ3Rlc3QnLAorICAgICAgICAgICAgICdmaWxlcGF0aCc6IF9fZmlsZV9fLAorICAgICAgICAgICAgICd1c2VkX25hbWVzJzogeydhYmMnfSwKKyAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCisgICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiIKKyAgICAgICAgICAgIicnLCA+IHRoYW4gMzAgY2hhcnMsIGFuZCAnYWJjJyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCisgICAgICAgICAgICInJyBhbmQgZmlsZSBkb2VzIG5vdCBleGlzdCBhcmUgaW52YWxpZCBwYXRoIGl0ZW1zLlxuIgorICAgICAgICAgICAiQW55IHVybCAoJ3d3dy4uLicsICdodHRwLi4uJykgaXMgYWNjZXB0ZWQuXG4iCisgICAgICAgICAgICJUZXN0IEJyb3dzZSB3aXRoIGFuZCB3aXRob3V0IHBhdGgsIGFzIGNhbm5vdCB1bml0dGVzdC5cbiIKKyAgICAgICAgICAgIltPa10gb3IgPFJldHVybj4gcHJpbnRzIHZhbGlkIGVudHJ5IHRvIHNoZWxsXG4iCisgICAgICAgICAgICJbQ2FuY2VsXSBvciA8RXNjYXBlPiBwcmludHMgTm9uZSB0byBzaGVsbCIKKyAgICB9CisKIF9pb19iaW5kaW5nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnSU9CaW5kaW5nJywKKyAgICAnZmlsZSc6ICdpb21lbnUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IHRoZSBmb2xsb3dpbmcgYmluZGluZ3MuXG4iCiAgICAgICAgICAgICI8Q29udHJvbC1vPiB0byBvcGVuIGZpbGUgZnJvbSBkaWFsb2cuXG4iCkBAIC0yMDAsNyArMTkzLDcgQEAKICAgICB9CiAKIF9tdWx0aV9jYWxsX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlDYWxsJywKKyAgICAnZmlsZSc6ICdtdWx0aWNhbGwnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgZm9sbG93aW5nIGFjdGlvbnMgc2hvdWxkIHRyaWdnZXIgYSBwcmludCB0byBjb25zb2xlIG9yIElETEUiCiAgICAgICAgICAgICIgU2hlbGwuXG5FbnRlcmluZyBhbmQgbGVhdmluZyB0aGUgdGV4dCBhcmVhLCBrZXkgZW50cnksICIKQEAgLTIxMCwxNCArMjAzLDE0IEBACiAgICAgfQogCiBfbXVsdGlzdGF0dXNfYmFyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlTdGF0dXNCYXInLAorICAgICdmaWxlJzogJ3N0YXR1c2JhcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkVuc3VyZSBwcmVzZW5jZSBvZiBtdWx0aS1zdGF0dXMgYmFyIGJlbG93IHRleHQgYXJlYS5cbiIKICAgICAgICAgICAgIkNsaWNrICdVcGRhdGUgU3RhdHVzJyB0byBjaGFuZ2UgdGhlIG11bHRpLXN0YXR1cyB0ZXh0IgogICAgIH0KIAogX29iamVjdF9icm93c2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnT2JqZWN0QnJvd3NlcicsCisgICAgJ2ZpbGUnOiAnZGVidWdvYmonLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJEb3VibGUgY2xpY2sgb24gaXRlbXMgdXB0byB0aGUgbG93ZXN0IGxldmVsLlxuIgogICAgICAgICAgICAiQXR0cmlidXRlcyBvZiB0aGUgb2JqZWN0cyBhbmQgcmVsYXRlZCBpbmZvcm1hdGlvbiAiCkBAIC0yMjUsNyArMjE4LDcgQEAKICAgICB9CiAKIF9wYXRoX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdQYXRoQnJvd3NlcicsCisgICAgJ2ZpbGUnOiAncGF0aGJyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IGZvciBjb3JyZWN0IGRpc3BsYXkgb2YgYWxsIHBhdGhzIGluIHN5cy5wYXRoLlxuIgogICAgICAgICAgICAiVG9nZ2xlIG5lc3RlZCBpdGVtcyB1cHRvIHRoZSBsb3dlc3QgbGV2ZWwuXG4iCkBAIC0yMzQsNyArMjI3LDcgQEAKICAgICB9CiAKIF9wZXJjb2xhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUGVyY29sYXRvcicsCisgICAgJ2ZpbGUnOiAncGVyY29sYXRvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZXJlIGFyZSB0d28gdHJhY2VycyB3aGljaCBjYW4gYmUgdG9nZ2xlZCB1c2luZyBhIGNoZWNrYm94LlxuIgogICAgICAgICAgICAiVG9nZ2xpbmcgYSB0cmFjZXIgJ29uJyBieSBjaGVja2luZyBpdCBzaG91bGQgcHJpbnQgdHJhY2VyIgpAQCAtMjQ0LDggKzIzNywyMCBAQAogICAgICAgICAgICAiVGVzdCBmb3IgYWN0aW9ucyBsaWtlIHRleHQgZW50cnksIGFuZCByZW1vdmFsLiIKICAgICB9CiAKK1F1ZXJ5X3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdRdWVyeScsCisgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnRW50ZXIgc29tZXRoaW5nJywKKyAgICAgICAgICAgICAndGV4dDAnOiAnR28nLAorICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKKyAgICAnbXNnJzogIkVudGVyIHdpdGggPFJldHVybj4gb3IgW09rXS4gIFByaW50IHZhbGlkIGVudHJ5IHRvIFNoZWxsXG4iCisgICAgICAgICAgICJCbGFuayBsaW5lLCBhZnRlciBzdHJpcHBpbmcsIGlzIGlnbm9yZWRcbiIKKyAgICAgICAgICAgIkNsb3NlIGRpYWxvZyB3aXRoIHZhbGlkIGVudHJ5LCA8RXNjYXBlPiwgW0NhbmNlbF0sIFtYXSIKKyAgICB9CisKKwogX3JlcGxhY2VfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUmVwbGFjZURpYWxvZycsCisgICAgJ2ZpbGUnOiAncmVwbGFjZScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIHRoZSAnUmVwbGFjZScgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB2YXJpb3VzIHJlcGxhY2Ugb3B0aW9ucyBpbiB0aGUgJ1JlcGxhY2UgZGlhbG9nJy5cbiIKQEAgLTI1MywxNSArMjU4LDIyIEBACiAgICAgfQogCiBfc2VhcmNoX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ1NlYXJjaERpYWxvZycsCisgICAgJ2ZpbGUnOiAnc2VhcmNoJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTZWFyY2gnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdmFyaW91cyBzZWFyY2ggb3B0aW9ucyBpbiB0aGUgJ1NlYXJjaCBkaWFsb2cnLlxuIgogICAgICAgICAgICAiQ2xpY2sgW0Nsb3NlXSBvciBbWF0gdG8gY2xvc2UgdGhlICdTZWFyY2ggRGlhbG9nJy4iCiAgICAgfQogCitfc2VhcmNoYmFzZV9zcGVjID0geworICAgICdmaWxlJzogJ3NlYXJjaGJhc2UnLAorICAgICdrd2RzJzoge30sCisgICAgJ21zZyc6ICJDaGVjayB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYmFzZSBzZWFyY2ggZGlhbG9nXG4iCisgICAgICAgICAgICJJdHMgb25seSBhY3Rpb24gaXMgdG8gY2xvc2UuIgorICAgIH0KKwogX3Njcm9sbGVkX2xpc3Rfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTY3JvbGxlZExpc3QnLAorICAgICdmaWxlJzogJ3Njcm9sbGVkbGlzdCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIllvdSBzaG91bGQgc2VlIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIGl0ZW1zXG4iCiAgICAgICAgICAgICJTZWxlY3RpbmcgKGNsaWNraW5nKSBvciBkb3VibGUgY2xpY2tpbmcgYW4gaXRlbSAiCkBAIC0yNzcsNyArMjg5LDcgQEAKICAgICB9CiAKIF9zdGFja192aWV3ZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTdGFja1ZpZXdlcicsCisgICAgJ2ZpbGUnOiAnc3RhY2t2aWV3ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJBIHN0YWNrdHJhY2UgZm9yIGEgTmFtZUVycm9yIGV4Y2VwdGlvbi5cbiIKICAgICAgICAgICAgIkV4cGFuZCAnaWRsZWxpYiAuLi4nIGFuZCAnPGxvY2Fscz4nLlxuIgpAQCAtMjk1LDggKzMwNyw4IEBACiAgICAgfQogCiBUZXh0Vmlld2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAndGV4dFZpZXcnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IHRleHRWaWV3JywKKyAgICAnZmlsZSc6ICd0ZXh0dmlldycsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3QgdGV4dHZpZXcnLAogICAgICAgICAgICAgICd0ZXh0JzonVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy5cbicqMzUsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAogICAgICdtc2cnOiAiVGVzdCBmb3IgcmVhZC1vbmx5IHByb3BlcnR5IG9mIHRleHQuXG4iCkBAIC0zMDQsMjEgKzMxNiwyMSBAQAogICAgICB9CiAKIF90b29sdGlwX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVG9vbFRpcCcsCisgICAgJ2ZpbGUnOiAndG9vbHRpcCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlBsYWNlIG1vdXNlIGN1cnNvciBvdmVyIGJvdGggdGhlIGJ1dHRvbnNcbiIKICAgICAgICAgICAgIkEgdG9vbHRpcCBzaG91bGQgYXBwZWFyIHdpdGggc29tZSB0ZXh0LiIKICAgICB9CiAKIF90cmVlX3dpZGdldF9zcGVjID0gewotICAgICdmaWxlJzogJ1RyZWVXaWRnZXQnLAorICAgICdmaWxlJzogJ3RyZWUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgY2FudmFzIGlzIHNjcm9sbGFibGUuXG4iCiAgICAgICAgICAgICJDbGljayBvbiBmb2xkZXJzIHVwdG8gdG8gdGhlIGxvd2VzdCBsZXZlbC4iCiAgICAgfQogCiBfdW5kb19kZWxlZ2F0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdVbmRvRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICd1bmRvJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgW1VuZG9dIHRvIHVuZG8gYW55IGFjdGlvbi5cbiIKICAgICAgICAgICAgIkNsaWNrIFtSZWRvXSB0byByZWRvIGFueSBhY3Rpb24uXG4iCkBAIC0zMjcsNyArMzM5LDcgQEAKICAgICB9CiAKIF93aWRnZXRfcmVkaXJlY3Rvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1dpZGdldFJlZGlyZWN0b3InLAorICAgICdmaWxlJzogJ3JlZGlyZWN0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJFdmVyeSB0ZXh0IGluc2VydCBzaG91bGQgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4iCiAgICAgICAgICAgICJvciB0aGUgSURMRSBzaGVsbC4iCkBAIC0zMzcsMTQgKzM0OSwxMyBAQAogICAgIHJvb3QgPSB0ay5UaygpCiAgICAgcm9vdC50aXRsZSgnSURMRSBodGVzdCcpCiAgICAgcm9vdC5yZXNpemFibGUoMCwgMCkKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAKICAgICAjIGEgc2Nyb2xsYWJsZSBMYWJlbCBsaWtlIGNvbnN0YW50IHdpZHRoIHRleHQgd2lkZ2V0LgogICAgIGZyYW1lTGFiZWwgPSB0ay5GcmFtZShyb290LCBwYWR4PTEwKQogICAgIGZyYW1lTGFiZWwucGFjaygpCiAgICAgdGV4dCA9IHRrLlRleHQoZnJhbWVMYWJlbCwgd3JhcD0nd29yZCcpCiAgICAgdGV4dC5jb25maWd1cmUoYmc9cm9vdC5jZ2V0KCdiZycpLCByZWxpZWY9J2ZsYXQnLCBoZWlnaHQ9NCwgd2lkdGg9NzApCi0gICAgc2Nyb2xsYmFyID0gdGsuU2Nyb2xsYmFyKGZyYW1lTGFiZWwsIGNvbW1hbmQ9dGV4dC55dmlldykKKyAgICBzY3JvbGxiYXIgPSBTY3JvbGxiYXIoZnJhbWVMYWJlbCwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgIHRleHQuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNjcm9sbGJhci5zZXQpCiAgICAgc2Nyb2xsYmFyLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd5JywgZXhwYW5kPUZhbHNlKQogICAgIHRleHQucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKQpAQCAtMzY1LDExICszNzYsMTEgQEAKICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihtb2QsIHRlc3RfbmFtZSkKICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QuYXBwZW5kKCh0ZXN0X3NwZWMsIHRlc3QpKQogCi0gICAgdGVzdF9uYW1lID0gdGsuU3RyaW5nVmFyKCcnKQorICAgIHRlc3RfbmFtZSA9IHRrLlN0cmluZ1Zhcihyb290KQogICAgIGNhbGxhYmxlX29iamVjdCA9IE5vbmUKICAgICB0ZXN0X2t3ZHMgPSBOb25lCiAKLSAgICBkZWYgbmV4dCgpOgorICAgIGRlZiBuZXh0X3Rlc3QoKToKIAogICAgICAgICBub25sb2NhbCB0ZXN0X25hbWUsIGNhbGxhYmxlX29iamVjdCwgdGVzdF9rd2RzCiAgICAgICAgIGlmIGxlbih0ZXN0X2xpc3QpID09IDE6CkBAIC0zODQsMjAgKzM5NSwyNiBAQAogICAgICAgICB0ZXh0Lmluc2VydCgiMS4wIix0ZXN0X3NwZWNbJ21zZyddKQogICAgICAgICB0ZXh0LmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKSAjIHByZXNlcnZlIHJlYWQtb25seSBwcm9wZXJ0eQogCi0gICAgZGVmIHJ1bl90ZXN0KCk6CisgICAgZGVmIHJ1bl90ZXN0KF89Tm9uZSk6CiAgICAgICAgIHdpZGdldCA9IGNhbGxhYmxlX29iamVjdCgqKnRlc3Rfa3dkcykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcHJpbnQod2lkZ2V0LnJlc3VsdCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHR2YXJpYWJsZT10ZXN0X25hbWUsIGNvbW1hbmQ9cnVuX3Rlc3QpCisgICAgZGVmIGNsb3NlKF89Tm9uZSk6CisgICAgICAgIHJvb3QuZGVzdHJveSgpCisKKyAgICBidXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dHZhcmlhYmxlPXRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nYWN0aXZlJywgY29tbWFuZD1ydW5fdGVzdCkKKyAgICBuZXh0X2J1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0PSJOZXh0IiwgY29tbWFuZD1uZXh0X3Rlc3QpCiAgICAgYnV0dG9uLnBhY2soKQotICAgIG5leHRfYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHQ9Ik5leHQiLCBjb21tYW5kPW5leHQpCiAgICAgbmV4dF9idXR0b24ucGFjaygpCisgICAgbmV4dF9idXR0b24uZm9jdXNfc2V0KCkKKyAgICByb290LmJpbmQoJzxLZXktUmV0dXJuPicsIHJ1bl90ZXN0KQorICAgIHJvb3QuYmluZCgnPEtleS1Fc2NhcGU+JywgY2xvc2UpCiAKLSAgICBuZXh0KCkKLQorICAgIG5leHRfdGVzdCgpCiAgICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQppbmRleCAxNjcyYTM0Li5jN2I0OWVmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogCiBjbGFzcyBFZGl0b3I6Ci0gICAgJycnTWluaW1hbGx5IGltaXRhdGUgRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdyBjbGFzcy4KKyAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBlZGl0b3IuRWRpdG9yV2luZG93IGNsYXNzLgogICAgICcnJwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgc2VsZi50ZXh0ID0gVGV4dCgpCkBAIC00Niw3ICs0Niw3IEBACiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvcjoKLSAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBVbmRvRGVsZWdhdG9yLFVuZG9EZWxlZ2F0b3IgY2xhc3MuCisgICAgJycnTWluaW1hbGx5IGltaXRhdGUgdW5kby5VbmRvRGVsZWdhdG9yIGNsYXNzLgogICAgICcnJwogICAgICMgQSByZWFsIHVuZG8gYmxvY2sgaXMgb25seSBuZWVkZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKmFyZ3MpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CmluZGV4IDVmYzg5OWQuLmYzZjJkZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKQEAgLTEsOSArMSwxMyBAQAorJycnIFRlc3QgYXV0b2NvbXBsZXRlIGFuZCBhdXRvY29tcGxlX3cKKworQ292ZXJhZ2Ugb2YgYXV0b2NvbXBsZTogNTYlCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiAKLWltcG9ydCBpZGxlbGliLkF1dG9Db21wbGV0ZSBhcyBhYwotaW1wb3J0IGlkbGVsaWIuQXV0b0NvbXBsZXRlV2luZG93IGFzIGFjdworaW1wb3J0IGlkbGVsaWIuYXV0b2NvbXBsZXRlIGFzIGFjCitpbXBvcnQgaWRsZWxpYi5hdXRvY29tcGxldGVfdyBhcyBhY3cKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IEV2ZW50CiAKQEAgLTkxLDYgKzk1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVfZXZlbnQoZXYpKQogICAgICAgICBkZWwgZXYubWNfc3RhdGUKIAorICAgICAgICAjIFRlc3QgdGhhdCB0YWIgYWZ0ZXIgd2hpdGVzcGFjZSBpcyBpZ25vcmVkLgorICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAnICAgICAgICAiIiJEb2NzdHJpbmcuXG4gICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZV9ldmVudChldikpCisgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQorCiAgICAgICAgICMgSWYgYXV0b2NvbXBsZXRlIHdpbmRvdyBpcyBvcGVuLCBjb21wbGV0ZSgpIG1ldGhvZCBpcyBjYWxsZWQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ3JlLicpCiAgICAgICAgICMgVGhpcyBtdXN0IGNhbGwgYXV0b2NvbXBsZXRlLl9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKaW5kZXggZDJhMzE1Ni4uYWU4MTg2YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5BdXRvRXhwYW5kIiIiCisiIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmF1dG9leHBhbmQiIiIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCiAjZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0Ci1mcm9tIGlkbGVsaWIuQXV0b0V4cGFuZCBpbXBvcnQgQXV0b0V4cGFuZAorZnJvbSBpZGxlbGliLmF1dG9leHBhbmQgaW1wb3J0IEF1dG9FeHBhbmQKIAogCiBjbGFzcyBEdW1teV9FZGl0d2luOgpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2xzLnRleHQgPSBUZXh0KCkKICAgICAgICAgY2xzLmF1dG9fZXhwYW5kID0gQXV0b0V4cGFuZChEdW1teV9FZGl0d2luKGNscy50ZXh0KSkKKyAgICAgICAgY2xzLmF1dG9fZXhwYW5kLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0xMzcsNSArMTM4LDYgQEAKICAgICAgICAgbmV3X3N0YXRlID0gc2VsZi5hdXRvX2V4cGFuZC5zdGF0ZQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluaXRpYWxfc3RhdGUsIG5ld19zdGF0ZSkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CmluZGV4IGIyYTczM2MuLjBiMTE2MDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5DYWxsVGlwcyBhcyBjdAoraW1wb3J0IGlkbGVsaWIuY2FsbHRpcHMgYXMgY3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHR5cGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzhiYzNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5CkBAIC0wLDAgKzEsNTYgQEAKKycnJ1Rlc3QgaWRsZWxpYi9jb2xvcml6ZXIucHkKKworUGVyZm9ybSBtaW5pbWFsIHNhbml0eSBjaGVja3MgdGhhdCBtb2R1bGUgaW1wb3J0cyBhbmQgc29tZSB0aGluZ3MgcnVuLgorCitDb3ZlcmFnZSAyMiUuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29sb3JpemVyICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sb3JpemVyLmFueSgndGVzdCcsICgnYScsICdiJykpKQorCisgICAgZGVmIHRlc3RfbWFrZV9wYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xvcml6ZXIubWFrZV9wYXQoKSkKKworCitjbGFzcyBDb2xvckNvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLnRleHQKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfY29sb3JpemVyKHNlbGYpOgorICAgICAgICBjb2xvcml6ZXIuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKKworY2xhc3MgQ29sb3JEZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2NvbG9yaXplcihzZWxmKToKKyAgICAgICAgY29sb3JpemVyLkNvbG9yRGVsZWdhdG9yKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNmYTFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weQpAQCAtMCwwICsxLDE2MCBAQAorJycnVGVzdCBpZGxlbGliLmNvbmZpZy4KKworTXVjaCBpcyB0ZXN0ZWQgYnkgb3BlbmluZyBjb25maWcgZGlhbG9nIGxpdmUgb3IgaW4gdGVzdF9jb25maWdkaWFsb2cuCitDb3ZlcmFnZTogMjclCisnJycKK2Zyb20gc3lzIGltcG9ydCBtb2R1bGVzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnCisKKyMgVGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gZm9ydHVpdG91cyB1c2VyIGNvbmZpZ3VyYXRpb25zLgorIyBUaGV5IG11c3Qgbm90IGFmZmVjdCBhY3R1YWwgdXNlciAuY2ZnIGZpbGVzLgorIyBSZXBsYWNlIHVzZXIgcGFyc2VycyB3aXRoIGVtcHR5IHBhcnNlcnMgdGhhdCBjYW5ub3QgYmUgc2F2ZWQuCisKK2lkbGVDb25mID0gY29uZmlnLmlkbGVDb25mCit1c2VyY2ZnID0gaWRsZUNvbmYudXNlckNmZwordGVzdGNmZyA9IHt9Cit1c2VybWFpbiA9IHRlc3RjZmdbJ21haW4nXSA9IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpICAjIGZpbGVuYW1lCit1c2VyaGlnaCA9IHRlc3RjZmdbJ2hpZ2hsaWdodCddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKK3VzZXJrZXlzID0gdGVzdGNmZ1sna2V5cyddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKworZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHVzZXJjZmcKKworCitjbGFzcyBDdXJyZW50Q29sb3JLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIFRlc3QgY29sb3JrZXlzIGZ1bmN0aW9uIHdpdGggdXNlciBjb25maWcgW1RoZW1lXSBhbmQgW0tleXNdIHBhdHRlcm5zLgorCisgICAgICAgIGNvbG9ya2V5cyA9IGNvbmZpZy5JZGxlQ29uZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cworICAgICAgICBUZXN0IGFsbCBwYXR0ZXJucyB3cml0dGVuIGJ5IElETEUgYW5kIHNvbWUgZXJyb3JzCisgICAgICAgIEl0ZW0gJ2RlZmF1bHQnIHNob3VsZCByZWFsbHkgYmUgJ2J1aWx0aW4nICh2ZXJzdXMgJ2N1c3RvbSkuCisgICAgIiIiCisgICAgY29sb3JrZXlzID0gaWRsZUNvbmYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMKKyAgICBkZWZhdWx0X3RoZW1lID0gJ0lETEUgQ2xhc3NpYycKKyAgICBkZWZhdWx0X2tleXMgPSBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKQorCisgICAgZGVmIHRlc3Rfb2xkX2J1aWx0aW5fdGhlbWUoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICAjIEZvciBvbGQgZGVmYXVsdCwgbmFtZTIgbXVzdCBiZSBibGFuay4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgJycnKQorICAgICAgICAjIElETEUgb21pdHMgJ25hbWUnIGZvciBkZWZhdWx0IG9sZCBidWlsdGluIHRoZW1lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgSURMRSBhZGRzICduYW1lJyBmb3Igbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gdGhlbWUuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIE5ldycpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG9sZCBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKworICAgIGRlZiB0ZXN0X25ld19idWlsdGluX3RoZW1lKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW1RoZW1lXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgIG5hbWUyID0gSURMRSBEYXJrCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBuZXcgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorCisgICAgZGVmIHRlc3RfdXNlcl9vdmVycmlkZV90aGVtZShzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gRmFsc2UKKyAgICAgICAgICAgIG5hbWUgPSBDdXN0b20gRGFyaworICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJoaWdoLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIERhcmtdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnQ3VzdG9tIERhcmsnKQorICAgICAgICAjIE5hbWUyIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0N1c3RvbSBEYXJrJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKyAgICAgICAgdXNlcmhpZ2gucmVtb3ZlX3NlY3Rpb24oJ0N1c3RvbSBEYXJrJykKKworICAgIGRlZiB0ZXN0X29sZF9idWlsdGluX2tleXMoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgIyBGb3Igb2xkIGRlZmF1bHQsIG5hbWUyIG11c3QgYmUgYmxhbmssIG5hbWUgaXMgYWx3YXlzIHVzZWQuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZSA9IElETEUgQ2xhc3NpYyBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgQ2xhc3NpYyBVbml4JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisKKyAgICBkZWYgdGVzdF9uZXdfYnVpbHRpbl9rZXlzKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZTIgPSBJRExFIE1vZGVybiBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgTW9kZXJuIFVuaXgnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUnXSA9ICdJRExFIENsYXNzaWMgVW5peCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBNb2Rlcm4gVW5peCcpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG5ldyBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKworICAgIGRlZiB0ZXN0X3VzZXJfb3ZlcnJpZGVfa2V5cyhzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZQorICAgICAgICAgICAgbmFtZSA9IEN1c3RvbSBLZXlzCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJrZXlzLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIEtleXNdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdDdXN0b20gS2V5cycpCisgICAgICAgICMgTmFtZTIgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0N1c3RvbSBLZXlzJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorICAgICAgICB1c2Vya2V5cy5yZW1vdmVfc2VjdGlvbignQ3VzdG9tIEtleXMnKQorCisKK2NsYXNzIFdhcm5pbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dhcm4oc2VsZik6CisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBjb25maWcuX3dhcm5lZCA9IHNldCgpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5Jyl9KQorICAgICAgICBFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ3dhcm5pbmcnKydcbicpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm4yJywgJ3llaycpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5JyksICgnd2FybjInLCd5ZWsnKX0pCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnd2FybjInKydcbicpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ZjhlZC4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0iIiJVbml0dGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQiIiIKLWltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gsIEVudHJ5Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0hlbHBTb3VyY2VFZGl0IGFzIGhlbHBfZGlhbG9nX21vZHVsZQotCi1oZWxwX2RpYWxvZyA9IGhlbHBfZGlhbG9nX21vZHVsZS5HZXRIZWxwU291cmNlRGlhbG9nCi0KLQotY2xhc3MgRHVtbXlfaGVscF9kaWFsb2c6Ci0gICAgIyBNb2NrIGZvciB0ZXN0aW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBoZWxwX2RpYWxvZwotICAgIG1lbnVfb2sgPSBoZWxwX2RpYWxvZy5tZW51X29rCi0gICAgcGF0aF9vayA9IGhlbHBfZGlhbG9nLnBhdGhfb2sKLSAgICBvayA9IGhlbHBfZGlhbG9nLm9rCi0gICAgY2FuY2VsID0gaGVscF9kaWFsb2cuY2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIG1lbnUgPSBWYXIoKQotICAgIGVudHJ5TWVudSA9IEVudHJ5KCkKLSAgICBwYXRoID0gVmFyKCkKLSAgICBlbnRyeVBhdGggPSBFbnRyeSgpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIGRlc3Ryb3llZCA9IEZhbHNlCi0KLSAgICBkZWYgZGVzdHJveShzZWxmKToKLSAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCi0KLQotIyBtZW51X29rIGFuZCBwYXRoX29rIGNhbGwgTWJveC5zaG93ZXJyb3IgaWYgbWVudSBhbmQgcGF0aCBhcmUgbm90IG9rLgotb3JpZ19tYm94ID0gaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveAotc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKLQotCi1jbGFzcyBDb25maWdIZWxwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfaGVscF9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGhlbHBfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdNZW51IEl0ZW0gRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfbG9uZ19tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVsbG8nICogMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ01lbnUgSXRlbSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xvbmcnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJ2hlbHAnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3RfYmxhbmtfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2ZpbGVfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2Zvb2JhcicgKiAxMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF91cmxfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ3d3LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVscCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHRwczovL2RvY3MucHl0aG9uLm9yZycpCi0gICAgICAgIHNlbGYuZGlhbG9nLm9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICgnaGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLSAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLmNhbmNlbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTNmMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpAQCAtMCwwICsxLDMzIEBACisnJycgVGVzdCBpZGxlbGliLmNvbmZpZ19rZXkuCisKK0NvdmVyYWdlOiA1NiUgZnJvbSBjcmVhdGluZyBhbmQgY2xvc2luZyBkaWFsb2cuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnX2tleQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAorCisKK2NsYXNzIEdldEtleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGUoKSAgIyBTdG9wICJjYW4ndCBydW4gZXZlbnQgY29tbWFuZCIgd2FybmluZy4KKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkaWEgPSBjb25maWdfa2V5LkdldEtleXNEaWFsb2coCisgICAgICAgICAgICBzZWxmLnJvb3QsICd0ZXN0JywgJzw8VGVzdD4+JywgWyc8S2V5LUYxMj4nXSwgX3V0ZXN0PVRydWUpCisgICAgICAgIGRpYS5DYW5jZWwoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTcyYjkuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0iIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIiIiCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIGFzIG5hbWVfZGlhbG9nX21vZHVsZQotCi1uYW1lX2RpYWxvZyA9IG5hbWVfZGlhbG9nX21vZHVsZS5HZXRDZmdTZWN0aW9uTmFtZURpYWxvZwotCi1jbGFzcyBEdW1teV9uYW1lX2RpYWxvZzoKLSAgICAjIE1vY2sgZm9yIHRlc3RpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIG5hbWVfZGlhbG9nCi0gICAgbmFtZV9vayA9IG5hbWVfZGlhbG9nLm5hbWVfb2sKLSAgICBPayA9IG5hbWVfZGlhbG9nLk9rCi0gICAgQ2FuY2VsID0gbmFtZV9kaWFsb2cuQ2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQotICAgIG5hbWUgPSBWYXIoKQotICAgIHJlc3VsdCA9IE5vbmUKLSAgICBkZXN0cm95ZWQgPSBGYWxzZQotICAgIGRlZiBkZXN0cm95KHNlbGYpOgotICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKLQotIyBuYW1lX29rIGNhbGxzIE1ib3guc2hvd2Vycm9yIGlmIG5hbWUgaXMgbm90IG9rCi1vcmlnX21ib3ggPSBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94Ci1zaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgotCi1jbGFzcyBDb25maWdOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfbmFtZV9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfdXNlZF9uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgndXNlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9sb25nX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCdnb29kJyo4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RvbyBsb25nJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9nb29kX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgIGdvb2QgJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJ2dvb2QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnZ29vZCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLk9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICdnb29kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cuQ2FuY2VsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICcnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQppbmRleCA1YzA5NzkwLi4zZjk0NDkzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CkBAIC0xLDMyICsxLDEyNyBAQAotJycnVGVzdCBpZGxlbGliLmNvbmZpZ0RpYWxvZy4KKyIiIlRlc3QgaWRsZWxpYi5jb25maWdkaWFsb2cuCiAKLUNvdmVyYWdlOiA0NiUganVzdCBieSBjcmVhdGluZyBkaWFsb2cuCi1UaGUgb3RoZXIgaGFsZiBpcyBjb2RlIGZvciB3b3JraW5nIHdpdGggdXNlciBjdXN0b21pemF0aW9ucy4KLScnJwotZnJvbSBpZGxlbGliLmNvbmZpZ0RpYWxvZyBpbXBvcnQgQ29uZmlnRGlhbG9nICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorSGFsZiB0aGUgY2xhc3MgY3JlYXRlcyBkaWFsb2csIGhhbGYgd29ya3Mgd2l0aCB1c2VyIGN1c3RvbWl6YXRpb25zLgorQ292ZXJhZ2U6IDQ2JSBqdXN0IGJ5IGNyZWF0aW5nIGRpYWxvZywgNTYlIHdpdGggY3VycmVudCB0ZXN0cy4KKyIiIgorZnJvbSBpZGxlbGliLmNvbmZpZ2RpYWxvZyBpbXBvcnQgQ29uZmlnRGlhbG9nLCBpZGxlQ29uZiAgIyB0ZXN0IGltcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0IGFzIG1hY29zeAoraW1wb3J0IGlkbGVsaWIuY29uZmlnIGFzIGNvbmZpZwogCi1jbGFzcyBDb25maWdEaWFsb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyMgVGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gZm9ydHVpdG91cyB1c2VyIGNvbmZpZ3VyYXRpb25zLgorIyBUaGV5IG11c3Qgbm90IGFmZmVjdCBhY3R1YWwgdXNlciAuY2ZnIGZpbGVzLgorIyBVc2Ugc29sdXRpb24gZnJvbSB0ZXN0X2NvbmZpZzogZW1wdHkgcGFyc2VycyB3aXRoIG5vIGZpbGVuYW1lLgordXNlcmNmZyA9IGlkbGVDb25mLnVzZXJDZmcKK3Rlc3RjZmcgPSB7CisgICAgJ21haW4nOiBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKSwKKyAgICAnaGlnaGxpZ2h0JzogY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJyksCisgICAgJ2tleXMnOiBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKSwKKyAgICAnZXh0ZW5zaW9ucyc6IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpLAorfQogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnJvb3QgPSBUaygpCi0gICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKLSAgICAgICAgbWFjb3N4Ll9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMoY2xzLnJvb3QpCisjIENvbmZpZ0RpYWxvZy5jaGFuZ2VkSXRlbXMgaXMgYSAzLWxldmVsIGhpZXJhcmNoaWNhbCBkaWN0aW9uYXJ5IG9mCisjIHBlbmRpbmcgY2hhbmdlcyB0aGF0IG1pcnJvcnMgdGhlIG11bHRpbGV2ZWwgdXNlciBjb25maWcgZGljdC4KKyMgRm9yIHRlc3RpbmcsIHJlY29yZCBhcmdzIGluIGEgbGlzdCBmb3IgY29tcGFyaXNvbiB3aXRoIGV4cGVjdGVkLgorY2hhbmdlcyA9IFtdCitjbGFzcyBUZXN0RGlhbG9nKENvbmZpZ0RpYWxvZyk6CisgICAgZGVmIEFkZENoYW5nZWRJdGVtKHNlbGYsICphcmdzKToKKyAgICAgICAgY2hhbmdlcy5hcHBlbmQoYXJncykKIAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKLSAgICAgICAgZGVsIGNscy5yb290CitkZWYgc2V0VXBNb2R1bGUoKToKKyAgICBnbG9iYWwgcm9vdCwgY29uZmlndXJlCisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKyAgICByb290ID0gVGsoKQorICAgIHJvb3Qud2l0aGRyYXcoKQorICAgIGNvbmZpZ3VyZSA9IFRlc3REaWFsb2cocm9vdCwgJ1Rlc3QnLCBfdXRlc3Q9VHJ1ZSkKIAotICAgIGRlZiB0ZXN0X2RpYWxvZyhzZWxmKToKLSAgICAgICAgZCA9IENvbmZpZ0RpYWxvZyhzZWxmLnJvb3QsICdUZXN0JywgX3V0ZXN0PVRydWUpCi0gICAgICAgIGQucmVtb3ZlX3Zhcl9jYWxsYmFja3MoKQorCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBnbG9iYWwgcm9vdCwgY29uZmlndXJlCisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKyAgICBjb25maWd1cmUucmVtb3ZlX3Zhcl9jYWxsYmFja3MoKQorICAgIGRlbCBjb25maWd1cmUKKyAgICByb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgIHJvb3QuZGVzdHJveSgpCisgICAgZGVsIHJvb3QKKworCitjbGFzcyBGb250VGFiVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisKKyAgICBkZWYgdGVzdF9mb250KHNlbGYpOgorICAgICAgICAjIFNldCB2YWx1ZXMgZ3VhcmFudGVlZCBub3QgdG8gYmUgZGVmYXVsdHMuCisgICAgICAgIGRmb250ID0gaWRsZUNvbmYuR2V0Rm9udChyb290LCAnbWFpbicsICdFZGl0b3JXaW5kb3cnKQorICAgICAgICBkc2l6ZSA9IHN0cihkZm9udFsxXSkKKyAgICAgICAgZGJvbGQgPSBkZm9udFsyXSA9PSAnYm9sZCcKKyAgICAgICAgY29uZmlndXJlLmZvbnROYW1lLnNldCgnVGVzdCBGb250JykKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQnLCAnVGVzdCBGb250JyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtc2l6ZScsIGRzaXplKSwKKyAgICAgICAgICAgICgnbWFpbicsICdFZGl0b3JXaW5kb3cnLCAnZm9udC1ib2xkJywgZGJvbGQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIGV4cGVjdGVkKQorICAgICAgICBjaGFuZ2VzLmNsZWFyKCkKKyAgICAgICAgY29uZmlndXJlLmZvbnRTaXplLnNldCgyMCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQnLCAnVGVzdCBGb250JyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtc2l6ZScsICcyMCcpLAorICAgICAgICAgICAgKCdtYWluJywgJ0VkaXRvcldpbmRvdycsICdmb250LWJvbGQnLCBkYm9sZCldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgZXhwZWN0ZWQpCisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorICAgICAgICBjb25maWd1cmUuZm9udEJvbGQuc2V0KG5vdCBkYm9sZCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQnLCAnVGVzdCBGb250JyksCisgICAgICAgICAgICAoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2ZvbnQtc2l6ZScsICcyMCcpLAorICAgICAgICAgICAgKCdtYWluJywgJ0VkaXRvcldpbmRvdycsICdmb250LWJvbGQnLCBub3QgZGJvbGQpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIGV4cGVjdGVkKQorCisgICAgI2RlZiB0ZXN0X3NhbXBsZShzZWxmKTogcGFzcyAgIyBUT0RPCisKKyAgICBkZWYgdGVzdF90YWJzcGFjZShzZWxmKToKKyAgICAgICAgY29uZmlndXJlLnNwYWNlTnVtLnNldCg2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIFsoJ21haW4nLCAnSW5kZW50JywgJ251bS1zcGFjZXMnLCA2KV0pCisKKworY2xhc3MgSGlnaGxpZ2h0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorCisgICAgI2RlZiB0ZXN0X2NvbG9yY2hvb3NlKHNlbGYpOiBwYXNzICAjIFRPRE8KKworCitjbGFzcyBLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorCisKK2NsYXNzIEdlbmVyYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgY2hhbmdlcy5jbGVhcigpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwKHNlbGYpOgorICAgICAgICBjb25maWd1cmUucmFkaW9TdGFydHVwRWRpdC5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgWygnbWFpbicsICdHZW5lcmFsJywgJ2VkaXRvci1vbi1zdGFydHVwJywgMSldKQorCisgICAgZGVmIHRlc3RfYXV0b3NhdmUoc2VsZik6CisgICAgICAgIGNvbmZpZ3VyZS5yYWRpb1NhdmVBdXRvLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbmdlcywgWygnbWFpbicsICdHZW5lcmFsJywgJ2F1dG9zYXZlJywgMSldKQorCisgICAgZGVmIHRlc3RfZWRpdG9yX3NpemUoc2VsZik6CisgICAgICAgIGNvbmZpZ3VyZS5lbnRyeVdpbkhlaWdodC5pbnNlcnQoMCwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIFsoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2hlaWdodCcsICcxNDAnKV0pCisgICAgICAgIGNoYW5nZXMuY2xlYXIoKQorICAgICAgICBjb25maWd1cmUuZW50cnlXaW5XaWR0aC5pbnNlcnQoMCwgJzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5nZXMsIFsoJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ3dpZHRoJywgJzE4MCcpXSkKKworICAgICNkZWYgdGVzdF9oZWxwX3NvdXJjZXMoc2VsZik6IHBhc3MgICMgVE9ETwogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWJ1Z2dlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjYmE5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWJ1Z2dlci5weQpAQCAtMCwwICsxLDI5IEBACisnJycgVGVzdCBpZGxlbGliLmRlYnVnZ2VyLgorCitDb3ZlcmFnZTogMTklCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBOYW1lU3BhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkZWJ1Z2dlci5OYW1lc3BhY2VWaWV3ZXIoc2VsZi5yb290LCAnVGVzdCcpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CmluZGV4IDFmMGJhYTkuLjg1NjI0ZmIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCiAKIGNsYXNzIERlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0bWVudS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CmluZGV4IGEyNThlMjkuLjE3ZWIyNWMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5CkBAIC01LDggKzUsOSBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIgaW1wb3J0IHR0awogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbAogCiBjbGFzcyBQYXN0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1Rlc3QgcGFzdGluZyBpbnRvIHdpZGdldHMgdGhhdCBhbGxvdyBwYXN0aW5nLgpAQCAtMTYsMTcgKzE3LDE4IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnJvb3QgPSByb290ID0gdGsuVGsoKQotICAgICAgICByb290LndpdGhkcmF3KCkKLSAgICAgICAgUHlTaGVsbC5maXhfeDExX3Bhc3RlKHJvb3QpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKyAgICAgICAgcHlzaGVsbC5maXhfeDExX3Bhc3RlKHJvb3QpCiAgICAgICAgIGNscy50ZXh0ID0gdGsuVGV4dChyb290KQogICAgICAgICBjbHMuZW50cnkgPSB0ay5FbnRyeShyb290KQorICAgICAgICBjbHMudGVudHJ5ID0gdHRrLkVudHJ5KHJvb3QpCiAgICAgICAgIGNscy5zcGluID0gdGsuU3BpbmJveChyb290KQogICAgICAgICByb290LmNsaXBib2FyZF9jbGVhcigpCiAgICAgICAgIHJvb3QuY2xpcGJvYXJkX2FwcGVuZCgndHdvJykKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGRlbCBjbHMudGV4dCwgY2xzLmVudHJ5LCBjbHMuc3BpbgorICAgICAgICBkZWwgY2xzLnRleHQsIGNscy5lbnRyeSwgY2xzLnRlbnRyeQogICAgICAgICBjbHMucm9vdC5jbGlwYm9hcmRfY2xlYXIoKQogICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCkBAIC00NCwxNiArNDYsMTYgQEAKIAogICAgIGRlZiB0ZXN0X3Bhc3RlX2VudHJ5KHNlbGYpOgogICAgICAgICAiVGVzdCBwYXN0aW5nIGludG8gYW4gZW50cnkgd2l0aCBhbmQgd2l0aG91dCBhIHNlbGVjdGlvbi4iCi0gICAgICAgICMgT24gMy42LCBnZW5lcmF0ZWQgPDxQYXN0ZT4+IGZhaWxzIHdpdGhvdXQgZW1wdHkgc2VsZWN0IHJhbmdlCi0gICAgICAgICMgZm9yICdubyBzZWxlY3Rpb24nLiAgTGl2ZSB3aWRnZXQgd29ya3MgZmluZS4KLSAgICAgICAgZW50cnkgPSBzZWxmLmVudHJ5Ci0gICAgICAgIGZvciBlbmQsIGFucyBpbiAoMCwgJ29uZXR3bycpLCAoJ2VuZCcsICd0d28nKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVudHJ5PWVudHJ5LCBlbmQ9ZW5kLCBhbnM9YW5zKToKLSAgICAgICAgICAgICAgICBlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCi0gICAgICAgICAgICAgICAgZW50cnkuaW5zZXJ0KDAsICdvbmUnKQotICAgICAgICAgICAgICAgIGVudHJ5LnNlbGVjdF9yYW5nZSgwLCBlbmQpICAjIHNlZSBub3RlCi0gICAgICAgICAgICAgICAgZW50cnkuZXZlbnRfZ2VuZXJhdGUoJzw8UGFzdGU+PicpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5nZXQoKSwgYW5zKQorICAgICAgICAjIEdlbmVyYXRlZCA8PFBhc3RlPj4gZmFpbHMgZm9yIHRrIGVudHJ5IHdpdGhvdXQgZW1wdHkgc2VsZWN0CisgICAgICAgICMgcmFuZ2UgZm9yICdubyBzZWxlY3Rpb24nLiAgTGl2ZSB3aWRnZXQgd29ya3MgZmluZS4KKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cnksIHNlbGYudGVudHJ5OgorICAgICAgICAgICAgZm9yIGVuZCwgYW5zIGluICgwLCAnb25ldHdvJyksICgnZW5kJywgJ3R3bycpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVudHJ5PWVudHJ5LCBlbmQ9ZW5kLCBhbnM9YW5zKToKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVsZXRlKDAsICdlbmQnKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS5pbnNlcnQoMCwgJ29uZScpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LnNlbGVjdF9yYW5nZSgwLCBlbmQpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmV2ZW50X2dlbmVyYXRlKCc8PFBhc3RlPj4nKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmdldCgpLCBhbnMpCiAKICAgICBkZWYgdGVzdF9wYXN0ZV9zcGluKHNlbGYpOgogICAgICAgICAiVGVzdCBwYXN0aW5nIGludG8gYSBzcGluYm94IHdpdGggYW5kIHdpdGhvdXQgYSBzZWxlY3Rpb24uIgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CmluZGV4IGEzMWQyNmQuLmU5ZDI5ZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIAogY2xhc3MgRWRpdG9yX2Z1bmNfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQppbmRleCAwZDhmZjBkLi42YjU0YzEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKQEAgLTEsNSArMSw1IEBACiAiIiIgIUNoYW5naW5nIHRoaXMgbGluZSB3aWxsIGJyZWFrIFRlc3RfZmluZGZpbGUudGVzdF9mb3VuZCEKLU5vbi1ndWkgdW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5HcmVwRGlhbG9nIG1ldGhvZHMuCitOb24tZ3VpIHVuaXQgdGVzdHMgZm9yIGdyZXAuR3JlcERpYWxvZyBtZXRob2RzLgogZHVtbXlfY29tbWFuZCBjYWxscyBncmVwX2l0IGNhbGxzIGZpbmRmaWxlcy4KIEFuIGV4Y2VwdGlvbiByYWlzZWQgaW4gb25lIG1ldGhvZCB3aWxsIGZhaWwgY2FsbGVycy4KIE90aGVyd2lzZSwgdGVzdHMgYXJlIG1vc3RseSBpbmRlcGVuZGVudC4KQEAgLTgsNyArOCw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyCi1mcm9tIGlkbGVsaWIuR3JlcERpYWxvZyBpbXBvcnQgR3JlcERpYWxvZworZnJvbSBpZGxlbGliLmdyZXAgaW1wb3J0IEdyZXBEaWFsb2cKIGltcG9ydCByZQogCiBjbGFzcyBEdW1teV9zZWFyY2hlbmdpbmU6CkBAIC03Miw3ICs3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lc1s0XS5zdGFydHN3aXRoKCcoSGludDonKSkKIAogY2xhc3MgRGVmYXVsdF9jb21tYW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUbyB3cml0ZSB0aGlzLCBtb2RlIE91dHB1dFdpbmRvdyBpbXBvcnQgdG8gdG9wIG9mIEdyZXBEaWFsb2cKKyAgICAjIFRvIHdyaXRlIHRoaXMsIG1vdmUgb3V0d2luIGltcG9ydCB0byB0b3Agb2YgR3JlcERpYWxvZwogICAgICMgc28gaXQgY2FuIGJlIHJlcGxhY2VkIGJ5IGNhcHR1cmVkX3N0ZG91dCBpbiBjbGFzcyBzZXR1cC90ZWFyZG93bi4KICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjhlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwLnB5CkBAIC0wLDAgKzEsMzQgQEAKKycnJ1Rlc3QgaWRsZWxpYi5oZWxwLgorCitDb3ZlcmFnZTogODclCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2Zyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgam9pbgorZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0CisKK2NsYXNzIEhlbHBGcmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIkJ5IGl0c2VsZiwgdGhpcyB0ZXN0cyB0aGF0IGZpbGUgcGFyc2VkIHdpdGhvdXQgZXhjZXB0aW9uLiIKKyAgICAgICAgY2xzLnJvb3QgPSByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgaGVscGZpbGUgPSBqb2luKGRpcm5hbWUoZGlybmFtZShhYnNwYXRoKF9fZmlsZV9fKSkpLCAnaGVscC5odG1sJykKKyAgICAgICAgY2xzLmZyYW1lID0gaGVscC5IZWxwRnJhbWUocm9vdCwgaGVscGZpbGUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLmZyYW1lCisgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9saW5lMShzZWxmKToKKyAgICAgICAgdGV4dCA9IHNlbGYuZnJhbWUudGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuZ2V0KCcxLjAnLCAnMS5lbmQnKSwgJyBJRExFICcpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CmluZGV4IGQwYTAxMjcuLjg0M2VmYjkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQpAQCAtMiwxMCArMiwxMCBAQAogCiBDb3ZlcmFnZToKICcnJwotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZyBhcyBoZWxwX2Fib3V0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IHRleHRWaWV3IGFzIHRleHR2aWV3Citmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCi1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3gKK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveF9mdW5jCiBpbXBvcnQgdW5pdHRlc3QKIAogQWJvdXQgPSBoZWxwX2Fib3V0LkFib3V0RGlhbG9nCkBAIC0xOSwzMyArMTksMzMgQEAKIAogCiBjbGFzcyBEaXNwbGF5RmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICJUZXN0IHRoYXQgLnR4dCBmaWxlcyBhcmUgZm91bmQgYW5kIHByb3Blcmx5IGRlY29kZWQuIgogICAgIGRpYWxvZyA9IER1bW15X2Fib3V0X2RpYWxvZygpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMub3JpZ19tYm94ID0gdGV4dHZpZXcudGtNZXNzYWdlQm94CisgICAgICAgIGNscy5vcmlnX2Vycm9yID0gdGV4dHZpZXcuc2hvd2Vycm9yCiAgICAgICAgIGNscy5vcmlnX3ZpZXcgPSB0ZXh0dmlldy52aWV3X3RleHQKLSAgICAgICAgY2xzLm1ib3ggPSBNYm94KCkKKyAgICAgICAgY2xzLmVycm9yID0gTWJveF9mdW5jKCkKICAgICAgICAgY2xzLnZpZXcgPSBGdW5jKCkKLSAgICAgICAgdGV4dHZpZXcudGtNZXNzYWdlQm94ID0gY2xzLm1ib3gKKyAgICAgICAgdGV4dHZpZXcuc2hvd2Vycm9yID0gY2xzLmVycm9yCiAgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dCA9IGNscy52aWV3CiAgICAgICAgIGNscy5BYm91dCA9IER1bW15X2Fib3V0X2RpYWxvZygpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICB0ZXh0dmlldy50a01lc3NhZ2VCb3ggPSBjbHMub3JpZ19tYm94CisgICAgICAgIHRleHR2aWV3LnNob3dlcnJvciA9IGNscy5vcmlnX2Vycm9yCiAgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dCA9IGNscy5vcmlnX3ZpZXcKIAogICAgIGRlZiB0ZXN0X2ZpbGVfaXNwbGF5KHNlbGYpOgogICAgICAgICBmb3IgaGFuZGxlciBpbiAoc2VsZi5kaWFsb2cuaWRsZV9jcmVkaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWFsb2cuaWRsZV9yZWFkbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZy5pZGxlX25ld3MpOgotICAgICAgICAgICAgc2VsZi5tYm94LnNob3dlcnJvci5tZXNzYWdlID0gJycKKyAgICAgICAgICAgIHNlbGYuZXJyb3IubWVzc2FnZSA9ICcnCiAgICAgICAgICAgICBzZWxmLnZpZXcuY2FsbGVkID0gRmFsc2UKLSAgICAgICAgICAgIGhhbmRsZXIoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm1ib3guc2hvd2Vycm9yLm1lc3NhZ2UsICcnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnZpZXcuY2FsbGVkLCBUcnVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaGFuZGxlcj1oYW5kbGVyKToKKyAgICAgICAgICAgICAgICBoYW5kbGVyKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZXJyb3IubWVzc2FnZSwgJycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnZpZXcuY2FsbGVkLCBUcnVlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hpc3RvcnkucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaWRsZWhpc3RvcnkucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hpc3RvcnkucHkKaW5kZXggNmU3YzZjMy4uYjI3ODAxMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaWRsZWhpc3RvcnkucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQpAQCAtNCw4ICs0LDggQEAKIGltcG9ydCB0a2ludGVyIGFzIHRrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQgYXMgdGtUZXh0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQgYXMgbWtUZXh0Ci1mcm9tIGlkbGVsaWIuSWRsZUhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIGxpbmUxID0gJ2EgPSA3JwogbGluZTIgPSAnYiA9IGEnCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oeXBlcnBhcnNlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CmluZGV4IDljZTNmMmMuLjczYzgyODEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuSHlwZXJQYXJzZXIiIiIKKyIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLmh5cGVycGFyc2VyLnB5LiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdwotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCiAKIGNsYXNzIER1bW15RWRpdHdpbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pby5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvbWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pby5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CmluZGV4IGUwZTNiOTguLjY1YmY1OTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvbWVudS5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGlvCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCisKK2Zyb20gaWRsZWxpYi5ydW4gaW1wb3J0IFBzZXVkb0lucHV0RmlsZSwgUHNldWRvT3V0cHV0RmlsZQogCiAKIGNsYXNzIFMoc3RyKToKQEAgLTIzMCw0ICsyMzEsNCBAQAogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X21hY29zeC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X21hY29zeC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWU3NWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5CkBAIC0wLDAgKzEsMTAzIEBACisnJydUZXN0IGlkbGVsaWIubWFjb3N4LnB5LgorCitDb3ZlcmFnZTogNzElIG9uIFdpbmRvd3MuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2ltcG9ydCBzeXMKK2ltcG9ydCB0a2ludGVyIGFzIHRrCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdC5tb2NrIGFzIG1vY2sKK2Zyb20gaWRsZWxpYi5maWxlbGlzdCBpbXBvcnQgRmlsZUxpc3QKKworbWFjdHlwZXMgPSB7J2NhcmJvbicsICdjb2NvYScsICd4cXVhcnR6J30KK25vbnR5cGVzID0geydvdGhlcid9CithbGx0eXBlcyA9IG1hY3R5cGVzIHwgbm9udHlwZXMKKworCitjbGFzcyBJbml0VGt0eXBlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgX2luaXRfdGtfdHlwZS4iCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSB0ay5UaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKyAgICAgICAgY2xzLm9yaWdfcGxhdGZvcm0gPSBtYWNvc3gucGxhdGZvcm0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisgICAgICAgIG1hY29zeC5wbGF0Zm9ybSA9IGNscy5vcmlnX3BsYXRmb3JtCisKKyAgICBkZWYgdGVzdF9pbml0X3NldHNfdGt0eXBlKHNlbGYpOgorICAgICAgICAiVGVzdCB0aGF0IF9pbml0X3RrX3R5cGUgc2V0cyBfdGtfdHlwZSBhY2NvcmRpbmcgdG8gcGxhdGZvcm0uIgorICAgICAgICBmb3IgcGxhdGZvcm0sIHR5cGVzIGluICgnZGFyd2luJywgYWxsdHlwZXMpLCAoJ290aGVyJywgbm9udHlwZXMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGxhdGZvcm09cGxhdGZvcm0pOgorICAgICAgICAgICAgICAgIG1hY29zeC5wbGF0Zm9ybSA9IHBsYXRmb3JtCisgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID09IE5vbmUKKyAgICAgICAgICAgICAgICBtYWNvc3guX2luaXRfdGtfdHlwZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtYWNvc3guX3RrX3R5cGUsIHR5cGVzKQorCisKK2NsYXNzIElzVHlwZVRrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgZWFjaCBvZiB0aGUgZm91ciBpc1R5cGVUayBwcmVkZWNhdGVzLiIKKyAgICBpc2Z1bmNzID0gKChtYWNvc3guaXNBcXVhVGssICgnY2FyYm9uJywgJ2NvY29hJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc0NhcmJvblRrLCAoJ2NhcmJvbicpKSwKKyAgICAgICAgICAgICAgIChtYWNvc3guaXNDb2NvYVRrLCAoJ2NvY29hJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc1hRdWFydHosICgneHF1YXJ0eicpKSwKKyAgICAgICAgICAgICAgICkKKworICAgIEBtb2NrLnBhdGNoKCdpZGxlbGliLm1hY29zeC5faW5pdF90a190eXBlJykKKyAgICBkZWYgdGVzdF9pc19jYWxsc19pbml0KHNlbGYsIG1vY2tpbml0KToKKyAgICAgICAgIlRlc3QgdGhhdCBlYWNoIGlzVHlwZVRrIGNhbGxzIF9pbml0X3RrX3R5cGUgd2hlbiBfdGtfdHlwZSBpcyBOb25lLiIKKyAgICAgICAgbWFjb3N4Ll90a190eXBlID0gTm9uZQorICAgICAgICBmb3IgZnVuYywgd2hlbnRydWUgaW4gc2VsZi5pc2Z1bmNzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZnVuYz1mdW5jKToKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9ja2luaXQuY2FsbGVkKQorICAgICAgICAgICAgICAgIG1vY2tpbml0LnJlc2V0X21vY2soKQorCisgICAgZGVmIHRlc3RfaXNmdW5jcyhzZWxmKToKKyAgICAgICAgIlRlc3QgdGhhdCBlYWNoIGlzVHlwZVRrIHJldHVybiBjb3JyZWN0IGJvb2wuIgorICAgICAgICBmb3IgZnVuYywgd2hlbnRydWUgaW4gc2VsZi5pc2Z1bmNzOgorICAgICAgICAgICAgZm9yIHRrdHlwZSBpbiBhbGx0eXBlczoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMsIHdoZW50cnVlPXdoZW50cnVlLCB0a3R5cGU9dGt0eXBlKToKKyAgICAgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID0gdGt0eXBlCisgICAgICAgICAgICAgICAgICAgIChzZWxmLmFzc2VydFRydWUgaWYgdGt0eXBlIGluIHdoZW50cnVlIGVsc2Ugc2VsZi5hc3NlcnRGYWxzZSlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmMoKSkKKworCitjbGFzcyBTZXR1cFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IHNldHVwQXBwLiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHRrLlRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIEBtb2NrLnBhdGNoKCdpZGxlbGliLm1hY29zeC5vdmVycmlkZVJvb3RNZW51JykgICMyNzMxMgorICAgIGRlZiB0ZXN0X3NldHVwYXBwKHNlbGYsIG92ZXJyaWRlUm9vdE1lbnUpOgorICAgICAgICAiQ2FsbCBzZXR1cEFwcCB3aXRoIGVhY2ggcG9zc2libGUgZ3JhcGhpY3MgdHlwZS4iCisgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKKyAgICAgICAgZmxpc3QgPSBGaWxlTGlzdChyb290KQorICAgICAgICBmb3IgdGt0eXBlIGluIGFsbHR5cGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodGt0eXBlPXRrdHlwZSk6CisgICAgICAgICAgICAgICAgbWFjb3N4Ll90a190eXBlID0gdGt0eXBlCisgICAgICAgICAgICAgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIGZsaXN0KQorICAgICAgICAgICAgICAgIGlmIHRrdHlwZSBpbiAoJ2NhcmJvbicsICdjb2NvYScpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3ZlcnJpZGVSb290TWVudS5jYWxsZWQpCisgICAgICAgICAgICAgICAgb3ZlcnJpZGVSb290TWVudS5yZXNldF9tb2NrKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJhZ3JhcGgucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZm9ybWF0cGFyYWdyYXBoLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJhZ3JhcGgucHkKaW5kZXggYjZlYjJmMy4uYmEzNTBjOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZm9ybWF0cGFyYWdyYXBoLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQpAQCAtMSw3ICsxLDcgQEAKLSMgVGVzdCB0aGUgZnVuY3Rpb25zIGFuZCBtYWluIGNsYXNzIG1ldGhvZCBvZiBGb3JtYXRQYXJhZ3JhcGgucHkKKyMgVGVzdCB0aGUgZnVuY3Rpb25zIGFuZCBtYWluIGNsYXNzIG1ldGhvZCBvZiBwYXJhZ3JhcGgucHkKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBGb3JtYXRQYXJhZ3JhcGggYXMgZnAKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliIGltcG9ydCBwYXJhZ3JhcGggYXMgZnAKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiAKQEAgLTM4LDcgKzM4LDcgQEAKIAogCiBjbGFzcyBGaW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdCB0aGUgZmluZF9wYXJhZ3JhcGggZnVuY3Rpb24gaW4gRm9ybWF0UGFyYWdyYXBoLgorICAgICIiIlRlc3QgdGhlIGZpbmRfcGFyYWdyYXBoIGZ1bmN0aW9uIGluIHBhcmFncmFwaCBtb2R1bGUuCiAKICAgICBVc2luZyB0aGUgcnVuY2FzZSgpIGZ1bmN0aW9uLCBmaW5kX3BhcmFncmFwaCgpIGlzIGNhbGxlZCB3aXRoICdtYXJrJyBzZXQgYXQKICAgICBtdWx0aXBsZSBpbmRleGVzIGJlZm9yZSBhbmQgaW5zaWRlIHRoZSB0ZXN0IHBhcmFncmFwaC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CmluZGV4IDk1Y2MyMmMuLjA1MWY3ZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgaWRsZWxpYi5QYXJlbk1hdGNoLgorJycnVGVzdCBpZGxlbGliLnBhcmVubWF0Y2guCiAKIFRoaXMgbXVzdCBjdXJyZW50bHkgYmUgYSBndWkgdGVzdCBiZWNhdXNlIFBhcmVuTWF0Y2ggbWV0aG9kcyB1c2UKIHNldmVyYWwgdGV4dCBtZXRob2RzIG5vdCBkZWZpbmVkIG9uIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsuVGV4dC4KQEAgLTksNyArOSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLlBhcmVuTWF0Y2ggaW1wb3J0IFBhcmVuTWF0Y2gKK2Zyb20gaWRsZWxpYi5wYXJlbm1hdGNoIGltcG9ydCBQYXJlbk1hdGNoCiAKIGNsYXNzIER1bW15RWRpdHdpbjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6CkBAIC0zOCwxMiArMzgsMTcgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQogCisgICAgZGVmIGdldF9wYXJlbm1hdGNoKHNlbGYpOgorICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbS5iZWxsID0gbGFtYmRhOiBOb25lCisgICAgICAgIHJldHVybiBwbQorCiAgICAgZGVmIHRlc3RfcGFyZW5fZXhwcmVzc2lvbihzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIFRlc3QgUGFyZW5NYXRjaCB3aXRoICdleHByZXNzaW9uJyBzdHlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0uc2V0X3N0eWxlKCdleHByZXNzaW9uJykKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ2RlZiBmb29iYXIoYSwgYicpCkBAIC02Niw3ICs3MSw3IEBACiAgICAgICAgIFRlc3QgUGFyZW5NYXRjaCB3aXRoICdkZWZhdWx0JyBzdHlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0uc2V0X3N0eWxlKCdkZWZhdWx0JykKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ2RlZiBmb29iYXIoYSwgYicpCkBAIC04Niw3ICs5MSw3IEBACiAgICAgICAgIFRoZXNlIGNhc2VzIGZvcmNlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gYW5kIGFsdGVybmF0ZSBwYXRocy4KICAgICAgICAgIiIiCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKIAogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJyMgdGhpcyBpcyBhIGNvbW1lbiknKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwbS5wYXJlbl9jbG9zZWRfZXZlbnQoJ2V2ZW50JykpCkBAIC05OSw3ICsxMDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwbS5wYXJlbl9jbG9zZWRfZXZlbnQoJ2V2ZW50JykpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfcmVzdG9yZV90aW1lcihzZWxmKToKLSAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0gPSBzZWxmLmdldF9wYXJlbm1hdGNoKCkKICAgICAgICAgcG0ucmVzdG9yZV9ldmVudCA9IE1vY2soKQogICAgICAgICBwbS5oYW5kbGVfcmVzdG9yZV90aW1lcigwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG0ucmVzdG9yZV9ldmVudC5jYWxsZWQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXRoYnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CmluZGV4IGFmYjg4NmYuLjgxM2NiY2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5CkBAIC0yLDEzICsyLDEzIEBACiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpZGxlbGliCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFBhdGhCcm93c2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCiAKIGNsYXNzIFBhdGhCcm93c2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9EaXJCcm93c2VyVHJlZUl0ZW0oc2VsZik6CiAgICAgICAgICMgSXNzdWUxNjIyNiAtIG1ha2Ugc3VyZSB0aGF0IGdldHRpbmcgYSBzdWJsaXN0IHdvcmtzCi0gICAgICAgIGQgPSBQYXRoQnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0oJycpCisgICAgICAgIGQgPSBwYXRoYnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0oJycpCiAgICAgICAgIGQuR2V0U3ViTGlzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGQuR2V0VGV4dCgpKQogCkBAIC0xNywxMSArMTcsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmlzcGFja2FnZWRpcihkaXIgKyAnL0ljb25zJyksIEZhbHNlKQogCiAgICAgZGVmIHRlc3RfUGF0aEJyb3dzZXJUcmVlSXRlbShzZWxmKToKLSAgICAgICAgcCA9IFBhdGhCcm93c2VyLlBhdGhCcm93c2VyVHJlZUl0ZW0oKQorICAgICAgICBwID0gcGF0aGJyb3dzZXIuUGF0aEJyb3dzZXJUcmVlSXRlbSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5HZXRUZXh0KCksICdzeXMucGF0aCcpCiAgICAgICAgIHN1YiA9IHAuR2V0U3ViTGlzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN1YiksIGxlbihzeXMucGF0aCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzdWJbMF0pLCBQYXRoQnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzdWJbMF0pLCBwYXRoYnJvd3Nlci5EaXJCcm93c2VyVHJlZUl0ZW0pCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CmluZGV4IDRjMGE3YWQuLjU3M2I5YTEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQpAQCAtMSwxMCArMSwxMCBAQAotJycnVGVzdCBQZXJjb2xhdG9yJycnCisnJydUZXN0IHBlcmNvbGF0b3IucHkuJycnCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGssIEVORAotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IsIERlbGVnYXRvcgorZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IsIERlbGVnYXRvcgogCiAKIGNsYXNzIE15RmlsdGVyKERlbGVnYXRvcik6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9xdWVyeS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YWY4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9xdWVyeS5weQpAQCAtMCwwICsxLDM1MyBAQAorIiIiVGVzdCBpZGxlbGliLnF1ZXJ5LgorCitOb24tZ3VpIHRlc3RzIGZvciBRdWVyeSwgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlIHVzZQorZHVtbXkgdmVyc2lvbnMgdGhhdCBleHRyYWN0IHRoZSBub24tZ3VpIG1ldGhvZHMgYW5kIGFkZCBvdGhlciBuZWVkZWQKK2F0dHJpYnV0ZXMuICBHVUkgdGVzdHMgY3JlYXRlIGFuIGluc3RhbmNlIG9mIGVhY2ggY2xhc3MgYW5kIHNpbXVsYXRlCitlbnRyaWVzIGFuZCBidXR0b24gY2xpY2tzLiAgU3ViY2xhc3MgdGVzdHMgb25seSB0YXJnZXQgdGhlIG5ldyBjb2RlIGluCit0aGUgc3ViY2xhc3MgZGVmaW5pdGlvbi4KKworVGhlIGFwcGVhcmFuY2Ugb2YgdGhlIHdpZGdldHMgaXMgY2hlY2tlZCBieSB0aGUgUXVlcnkgYW5kCitIZWxwU291cmNlIGh0ZXN0cy4gIFRoZXNlIGFyZSBydW4gYnkgcnVubmluZyBxdWVyeS5weS4KKworQ292ZXJhZ2U6IDk0JSAoMTAwJSBmb3IgUXVlcnkgYW5kIFNlY3Rpb25OYW1lKS4KKzYgb2YgOCBtaXNzaW5nIGFyZSBNb2R1bGVOYW1lIGV4Y2VwdGlvbnMgSSBkb24ndCBrbm93IGhvdyB0byB0cmlnZ2VyLgorIiIiCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2ltcG9ydCBzeXMKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKKworCisjIE5PTi1HVUkgVEVTVFMKKworY2xhc3MgUXVlcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBRdWVyeSBiYXNlIGNsYXNzLiIKKworICAgIGNsYXNzIER1bW15X1F1ZXJ5OgorICAgICAgICAjIFRlc3QgdGhlIGZvbGxvd2luZyBRdWVyeSBtZXRob2RzLgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LlF1ZXJ5LmVudHJ5X29rCisgICAgICAgIG9rID0gcXVlcnkuUXVlcnkub2sKKyAgICAgICAgY2FuY2VsID0gcXVlcnkuUXVlcnkuY2FuY2VsCisgICAgICAgICMgQWRkIGF0dHJpYnV0ZXMgYW5kIGluaXRpYWxpemF0aW9uIG5lZWRlZCBmb3IgdGVzdHMuCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCisgICAgICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IEZhbHNlCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisgICAgICAgIGRlZiBkZXN0cm95KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCisKKyAgICBkZWYgdGVzdF9lbnRyeV9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdibGFuayBsaW5lJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9lbnRyeV9va19nb29kKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcgIGdvb2QgJykKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCAnZ29vZCcpCisgICAgICAgIEVxdWFsKChkaWFsb2cucmVzdWx0LCBkaWFsb2cuZGVzdHJveWVkKSwgKE5vbmUsIEZhbHNlKSkKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisgICAgZGVmIHRlc3Rfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJycpCisgICAgICAgIGRpYWxvZy5lbnRyeS5mb2N1c19zZXQgPSBtb2NrLk1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmVudHJ5LmZvY3VzX3NldC5jYWxsZWQpCisgICAgICAgIGRlbCBkaWFsb2cuZW50cnkuZm9jdXNfc2V0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorCisgICAgZGVmIHRlc3Rfb2tfZ29vZChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnZ29vZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLm9rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoJ2dvb2QnLCBUcnVlKSkKKworICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnZG9lcyBub3QgbWF0dGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuY2FuY2VsKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgVHJ1ZSkpCisKKworY2xhc3MgU2VjdGlvbk5hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBTZWN0aW9uTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9TZWN0aW9uTmFtZToKKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5TZWN0aW9uTmFtZS5lbnRyeV9vayAgIyBGdW5jdGlvbiBiZWluZyB0ZXN0ZWQuCisgICAgICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQorICAgICAgICBlbnRyeSA9IFZhcigpCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X2VudHJ5KToKKyAgICAgICAgICAgIHNlbGYuZW50cnkuc2V0KGR1bW15X2VudHJ5KQorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKworICAgIGRlZiB0ZXN0X2JsYW5rX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIG5hbWUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3VzZWRfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCd1c2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9sb25nX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgnZ29vZCcqOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbG9uZ2VyIHRoYW4gMzAnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2dvb2Rfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCcgIGdvb2QgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgJ2dvb2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddLCAnJykKKworCitjbGFzcyBNb2R1bGVOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgTW9kdWxlTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9Nb2R1bGVOYW1lOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5Lk1vZHVsZU5hbWUuZW50cnlfb2sgICMgRnVuY3Rpb24gYmVpbmcgdGVzdGVkLgorICAgICAgICB0ZXh0MCA9ICcnCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgZGVmIHRlc3RfYmxhbmtfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIG5hbWUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2JvZ3VzX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ19fbmFtZV94eXoxMjNfc2hvdWxkX25vdF9leGlzdF9fJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGZvdW5kJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9jX3NvdXJjZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ2l0ZXJ0b29scycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NvdXJjZS1iYXNlZCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZ29vZF9tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCdpZGxlbGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5lbnRyeV9vaygpLmVuZHN3aXRoKCdfX2luaXRfXy5weScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddLCAnJykKKworCisjIDMgSGVscFNvdXJjZSB0ZXN0IGNsYXNzZXMgZWFjaCB0ZXN0IG9uZSBmdW5jdGlvbi4KKworb3JpZ19wbGF0Zm9ybSA9IHF1ZXJ5LnBsYXRmb3JtCisKK2NsYXNzIEhlbHBzb3VyY2VCcm93c2VmaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgYnJvd3NlX2ZpbGUgbWV0aG9kIG9mIE1vZHVsZU5hbWUgc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfSGVscFNvdXJjZToKKyAgICAgICAgYnJvd3NlX2ZpbGUgPSBxdWVyeS5IZWxwU291cmNlLmJyb3dzZV9maWxlCisgICAgICAgIHBhdGh2YXIgPSBWYXIoKQorCisgICAgZGVmIHRlc3RfZmlsZV9yZXBsYWNlc19wYXRoKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoKQorICAgICAgICAjIFBhdGggaXMgd2lkZ2V0IGVudHJ5LCBlaXRoZXIgJycgb3Igc29tZXRoaW5nLgorICAgICAgICAjIEZ1bmMgcmV0dXJuIGlzIGZpbGUgZGlhbG9nIHJldHVybiwgZWl0aGVyICcnIG9yIHNvbWV0aGluZy4KKyAgICAgICAgIyBGdW5jIHJldHVybiBzaG91bGQgb3ZlcnJpZGUgd2lkZ2V0IGVudHJ5LgorICAgICAgICAjIFdlIG5lZWQgYWxsIDQgY29tYmluYXRpb24gdG8gdGVzdCBhbGwgKG1vc3QpIGNvZGUgcGF0aHMuCisgICAgICAgIGZvciBwYXRoLCBmdW5jLCByZXN1bHQgaW4gKAorICAgICAgICAgICAgICAgICgnJywgbGFtYmRhIGEsYixjOicnLCAnJyksCisgICAgICAgICAgICAgICAgKCcnLCBsYW1iZGEgYSxiLGM6IF9fZmlsZV9fLCBfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgKCdodGVzdCcsIGxhbWJkYSBhLGIsYzonJywgJ2h0ZXN0JyksCisgICAgICAgICAgICAgICAgKCdodGVzdCcsIGxhbWJkYSBhLGIsYzogX19maWxlX18sIF9fZmlsZV9fKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRodmFyLnNldChwYXRoKQorICAgICAgICAgICAgICAgIGRpYWxvZy5hc2tmaWxlbmFtZSA9IGZ1bmMKKyAgICAgICAgICAgICAgICBkaWFsb2cuYnJvd3NlX2ZpbGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGh2YXIuZ2V0KCksIHJlc3VsdCkKKworCitjbGFzcyBIZWxwc291cmNlUGF0aG9rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgcGF0aF9vayBtZXRob2Qgb2YgSGVscFNvdXJjZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBwYXRoX29rID0gcXVlcnkuSGVscFNvdXJjZS5wYXRoX29rCisgICAgICAgIHBhdGggPSBWYXIoKQorICAgICAgICBwYXRoX2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X3BhdGgpOgorICAgICAgICAgICAgc2VsZi5wYXRoLnNldChkdW1teV9wYXRoKQorICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UsIHdpZGdldD1Ob25lKToKKyAgICAgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgcXVlcnkucGxhdGZvcm0gPSBvcmlnX3BsYXRmb3JtCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vIGhlbHAgZmlsZScsIGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX2JhZChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKF9fZmlsZV9fICsgJ2JhZC1iYWQtYmFkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBkaWFsb2cucGF0aF9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfcGF0aF9va193ZWIoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnJykKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGZvciB1cmwgaW4gJ3d3dy5weS5vcmcnLCAnaHR0cDovL3B5Lm9yZyc6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRoLnNldCh1cmwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCB1cmwpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9lcnJvclsndGV4dCddLCAnJykKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfZmlsZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcnKQorICAgICAgICBmb3IgcGxhdGZvcm0sIHByZWZpeCBpbiAoJ2RhcndpbicsICdmaWxlOi8vJyksICgnb3RoZXInLCAnJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIHF1ZXJ5LnBsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgICAgICAgICBkaWFsb2cucGF0aC5zZXQoX19maWxlX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCBwcmVmaXggKyBfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10sICcnKQorCisKK2NsYXNzIEhlbHBzb3VyY2VFbnRyeW9rVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgZW50cnlfb2sgbWV0aG9kIG9mIEhlbHBTb3VyY2Ugc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfSGVscFNvdXJjZToKKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5IZWxwU291cmNlLmVudHJ5X29rCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgcGF0aF9lcnJvciA9IHt9CisgICAgICAgIGRlZiBpdGVtX29rKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQorICAgICAgICBkZWYgcGF0aF9vayhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2hlbHBzb3VyY2Uoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgpCisgICAgICAgIGZvciBuYW1lLCBwYXRoLCByZXN1bHQgaW4gKChOb25lLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdkb2MudHh0JywgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9jJywgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZG9jJywgJ2RvYy50eHQnLCAoJ2RvYycsICdkb2MudHh0JykpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLm5hbWUsIGRpYWxvZy5wYXRoID0gbmFtZSwgcGF0aAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIHJlc3VsdCkKKworCisjIEdVSSBURVNUUworCitjbGFzcyBRdWVyeUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gcm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBjbHMuZGlhbG9nID0gcXVlcnkuUXVlcnkocm9vdCwgJ1RFU1QnLCAndGVzdCcsIF91dGVzdD1UcnVlKQorICAgICAgICBjbHMuZGlhbG9nLmRlc3Ryb3kgPSBtb2NrLk1vY2soKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZGVsIGNscy5kaWFsb2cKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRpYWxvZy5lbnRyeS5kZWxldGUoMCwgJ2VuZCcpCisgICAgICAgIHNlbGYuZGlhbG9nLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveS5yZXNldF9tb2NrKCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX29rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuZW50cnkuaW5zZXJ0KDAsICdhYmMnKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jbGlja19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5kaWFsb2cKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlhbG9nLmRlc3Ryb3kuY2FsbGVkKQorCisgICAgZGVmIHRlc3RfY2xpY2tfY2FuY2VsKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuZW50cnkuaW5zZXJ0KDAsICdhYmMnKQorICAgICAgICBkaWFsb2cuYnV0dG9uX2NhbmNlbC5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKworY2xhc3MgU2VjdGlvbm5hbWVHdWlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorCisgICAgZGVmIHRlc3RfY2xpY2tfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5LlNlY3Rpb25OYW1lKHJvb3QsICdUJywgJ3QnLCB7J2FiYyd9LCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnVzZWRfbmFtZXMsIHsnYWJjJ30pCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ29rYXknKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgJ29rYXknKQorICAgICAgICBkZWwgZGlhbG9nCisgICAgICAgIHJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCByb290CisKKworY2xhc3MgTW9kdWxlbmFtZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGRpYWxvZyA9ICBxdWVyeS5Nb2R1bGVOYW1lKHJvb3QsICdUJywgJ3QnLCAnaWRsZWxpYicsIF91dGVzdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy50ZXh0MCwgJ2lkbGVsaWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeS5nZXQoKSwgJ2lkbGVsaWInKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cucmVzdWx0LmVuZHN3aXRoKCdfX2luaXRfXy5weScpKQorICAgICAgICBkZWwgZGlhbG9nCisgICAgICAgIHJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCByb290CisKKworY2xhc3MgSGVscHNvdXJjZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19oZWxwX3NvdXJjZShzZWxmKToKKyAgICAgICAgcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGRpYWxvZyA9ICBxdWVyeS5IZWxwU291cmNlKHJvb3QsICdUJywgbWVudWl0ZW09J19fdGVzdF9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg9X19maWxlX18sIF91dGVzdD1UcnVlKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5LmdldCgpLCAnX190ZXN0X18nKQorICAgICAgICBFcXVhbChkaWFsb2cucGF0aC5nZXQoKSwgX19maWxlX18pCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgcHJlZml4ID0gImZpbGU6Ly8iIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBlbHNlICcnCisgICAgICAgIEVxdWFsKGRpYWxvZy5yZXN1bHQsICgnX190ZXN0X18nLCBwcmVmaXggKyBfX2ZpbGVfXykpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlZGlyZWN0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2lkZ2V0cmVkaXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlZGlyZWN0b3IucHkKaW5kZXggYmFhOTc1ZC4uYjAzODVmYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2lkZ2V0cmVkaXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yLgorJycnVGVzdCBpZGxlbGliLnJlZGlyZWN0b3IuCiAKIDEwMCUgY292ZXJhZ2UKICcnJwpAQCAtNiw3ICs2LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQsIFRjbEVycm9yCi1mcm9tIGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgorZnJvbSBpZGxlbGliLnJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKIAogCiBjbGFzcyBJbml0Q2xvc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEyMCw2ICsxMjAsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucm9vdC5jYWxsKHNlbGYudGV4dC5fdywgJ2luc2VydCcsICdib28nKSwgJycpCiAKIAotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlZGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlZGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CmluZGV4IGZmNDQ4MjAuLjk5MTNlZDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZS5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLlJlcGxhY2VEaWFsb2ciIiIKKyIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLnJlcGxhY2UucHkiIiIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKQEAgLTYsOCArNiw4IEBACiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAotaW1wb3J0IGlkbGVsaWIuU2VhcmNoRW5naW5lIGFzIHNlCi1pbXBvcnQgaWRsZWxpYi5SZXBsYWNlRGlhbG9nIGFzIHJkCitpbXBvcnQgaWRsZWxpYi5zZWFyY2hlbmdpbmUgYXMgc2UKK2Zyb20gaWRsZWxpYi5yZXBsYWNlIGltcG9ydCBSZXBsYWNlRGlhbG9nCiAKIG9yaWdfbWJveCA9IHNlLnRrTWVzc2FnZUJveAogc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKQEAgLTIxLDcgKzIxLDggQEAKICAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQogICAgICAgICBzZS50a01lc3NhZ2VCb3ggPSBNYm94CiAgICAgICAgIGNscy5lbmdpbmUgPSBzZS5TZWFyY2hFbmdpbmUoY2xzLnJvb3QpCi0gICAgICAgIGNscy5kaWFsb2cgPSByZC5SZXBsYWNlRGlhbG9nKGNscy5yb290LCBjbHMuZW5naW5lKQorICAgICAgICBjbHMuZGlhbG9nID0gUmVwbGFjZURpYWxvZyhjbHMucm9vdCwgY2xzLmVuZ2luZSkKKyAgICAgICAgY2xzLmRpYWxvZy5iZWxsID0gbGFtYmRhOiBOb25lCiAgICAgICAgIGNscy5kaWFsb2cub2sgPSBNb2NrKCkKICAgICAgICAgY2xzLnRleHQgPSBUZXh0KGNscy5yb290KQogICAgICAgICBjbHMudGV4dC51bmRvX2Jsb2NrX3N0YXJ0ID0gTW9jaygpCkBAIC03MCw3ICs3MSw2IEBACiAgICAgICAgICMgdGV4dCBmb3VuZCBhbmQgcmVwbGFjZWQKICAgICAgICAgcHYuc2V0KCdhJykKICAgICAgICAgcnYuc2V0KCdhc2RmJykKLSAgICAgICAgc2VsZi5kaWFsb2cub3BlbihzZWxmLnRleHQpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBlcXVhbCh0ZXh0LmdldCgnMS44JywgJzEuMTInKSwgJ2FzZGYnKQogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgIHRleHQubWFya19zZXQoJ2luc2VydCcsICdlbmQnKQogICAgICAgICB0ZXh0Lmluc2VydCgnaW5zZXJ0JywgJ1xubGluZTQyOicpCiAgICAgICAgIGJlZm9yZV90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQotICAgICAgICBwdi5zZXQoJ1thLXpdW1xkXSsnKQorICAgICAgICBwdi5zZXQocidbYS16XVtcZF0rJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGFmdGVyX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCiAgICAgICAgIGVxdWFsKGJlZm9yZV90ZXh0LCBhZnRlcl90ZXh0KQpAQCAtMTkyLDcgKzE5Miw3IEBACiAgICAgICAgIHNlbGYuZW5naW5lLnJldmFyLnNldChUcnVlKQogCiAgICAgICAgIGJlZm9yZV90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQotICAgICAgICBwdi5zZXQoJ1thLXpdW1xkXSsnKQorICAgICAgICBwdi5zZXQocidbYS16XVtcZF0rJykKICAgICAgICAgcnYuc2V0KCdoZWxsbycpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBhZnRlcl90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQpAQCAtMjA3LDcgKzIwNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Vycm9yJywgc2hvd2Vycm9yLnRpdGxlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdFbXB0eScsIHNob3dlcnJvci5tZXNzYWdlKQogCi0gICAgICAgIHB2LnNldCgnW1xkJykKKyAgICAgICAgcHYuc2V0KHInW1xkJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Vycm9yJywgc2hvd2Vycm9yLnRpdGxlKQogICAgICAgICBzZWxmLmFzc2VydEluKCdQYXR0ZXJuJywgc2hvd2Vycm9yLm1lc3NhZ2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKaW5kZXggMWM5MGI5My4uMTMwZTZiZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGlkbGVsaWIuUnN0cmlwRXh0ZW5zaW9uIGFzIHJzCitpbXBvcnQgaWRsZWxpYi5yc3RyaXAgYXMgcnMKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBFZGl0b3IKIAogY2xhc3MgcnN0cmlwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMSw3ICsyMSw3IEBACiAgICAgZGVmIHRlc3RfcnN0cmlwX211bHRpcGxlKHNlbGYpOgogICAgICAgICBlZGl0b3IgPSBFZGl0b3IoKQogICAgICAgICAjICBVbmNvbW1lbnQgZm9sbG93aW5nIHRvIHZlcmlmeSB0aGF0IHRlc3QgcGFzc2VzIHdpdGggcmVhbCB3aWRnZXRzLgotIyMgICAgICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdyBhcyBFZGl0b3IKKyMjICAgICAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cgYXMgRWRpdG9yCiAjIyAgICAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUawogIyMgICAgICAgIGVkaXRvciA9IEVkaXRvcihyb290PVRrKCkpCiAgICAgICAgIHRleHQgPSBlZGl0b3IudGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2Nyb2xsZWRsaXN0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2Nyb2xsZWRsaXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YWFiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkKQEAgLTAsMCArMSwyOSBAQAorJycnIFRlc3QgaWRsZWxpYi5zY3JvbGxlZGxpc3QuCisKK0NvdmVyYWdlOiAzOSUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBzY3JvbGxlZGxpc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBTY3JvbGxlZExpc3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBzY3JvbGxlZGxpc3QuU2Nyb2xsZWRMaXN0KHNlbGYucm9vdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2gucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2gucHkKaW5kZXggMTkwYzg2Ni4uODBmYTkzYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlRlc3QgU2VhcmNoRGlhbG9nIGNsYXNzIGluIFNlYXJjaERpYWxvZ3VlLnB5IiIiCisiIiJUZXN0IFNlYXJjaERpYWxvZyBjbGFzcyBpbiBpZGxlbGliLnNlYXJjaC5weSIiIgogCiAjIERvZXMgbm90IGN1cnJlbnRseSB0ZXN0IHRoZSBldmVudCBoYW5kbGVyIHdyYXBwZXJzLgogIyBBIHVzYWdlIHRlc3Qgc2hvdWxkIHNpbXVsYXRlIGNsaWNrcyBhbmQgY2hlY2sgaGlsaWdodGluZy4KQEAgLTExLDggKzExLDggQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRraW50ZXIgYXMgdGsKIGZyb20gdGtpbnRlciBpbXBvcnQgQm9vbGVhblZhcgotaW1wb3J0IGlkbGVsaWIuU2VhcmNoRW5naW5lIGFzIHNlCi1pbXBvcnQgaWRsZWxpYi5TZWFyY2hEaWFsb2cgYXMgc2QKK2ltcG9ydCBpZGxlbGliLnNlYXJjaGVuZ2luZSBhcyBzZQoraW1wb3J0IGlkbGVsaWIuc2VhcmNoIGFzIHNkCiAKIAogY2xhc3MgU2VhcmNoRGlhbG9nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yOSw2ICsyOSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmVuZ2luZSA9IHNlLlNlYXJjaEVuZ2luZShzZWxmLnJvb3QpCiAgICAgICAgIHNlbGYuZGlhbG9nID0gc2QuU2VhcmNoRGlhbG9nKHNlbGYucm9vdCwgc2VsZi5lbmdpbmUpCisgICAgICAgIHNlbGYuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgc2VsZi50ZXh0ID0gdGsuVGV4dChzZWxmLnJvb3QpCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoJzEuMCcsICdIZWxsbyBXb3JsZCEnKQogCkBAIC0zOCw2ICszOSw3IEBACiAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCcnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLmZpbmRfYWdhaW4odGV4dCkpCisgICAgICAgIHNlbGYuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJ0hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmZpbmRfYWdhaW4odGV4dCkpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2diYXNlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoYmFzZS5weQpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2diYXNlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CmluZGV4IDgwMzZiOTEuLmQ3NjlmYTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoYmFzZS5weQpAQCAtMSwxNCArMSwxMyBAQAotJycnVW5pdHRlc3RzIGZvciBpZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkKKycnJ3Rlc3RzIGlkbGVsaWIuc2VhcmNoYmFzZS4KIAogQ292ZXJhZ2U6IDk5JS4gVGhlIG9ubHkgdGhpbmcgbm90IGNvdmVyZWQgaXMgaW5jb25zZXF1ZW50aWFsIC0tCiB0ZXN0aW5nIHNraXBwaW5nIG9mIHN1aXRlIHdoZW4gc2VsZi5uZWVkd3JhcGJ1dHRvbiBpcyBmYWxzZS4KLQogJycnCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVG9wbGV2ZWwsIEZyYW1lICMjLCBCb29sZWFuVmFyLCBTdHJpbmdWYXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lIGFzIHNlCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UgYXMgc2RiCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hiYXNlIGFzIHNkYgogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKICMjIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyCiAKQEAgLTc0LDcgKzczLDcgQEAKICAgICBkZWYgdGVzdF9tYWtlX2VudHJ5KHNlbGYpOgogICAgICAgICBlcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgc2VsZi5kaWFsb2cucm93ID0gMAotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBlbnRyeSwgbGFiZWwgPSBzZWxmLmRpYWxvZy5tYWtlX2VudHJ5KCJUZXN0OiIsICdoZWxsbycpCiAgICAgICAgIGVxdWFsKGxhYmVsWyd0ZXh0J10sICdUZXN0OicpCiAKQEAgLTg3LDYgKzg2LDcgQEAKICAgICAgICAgZXF1YWwoc2VsZi5kaWFsb2cucm93LCAxKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2VudHJpZXMoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnaGVsbG8nKQogICAgICAgICBzZWxmLmRpYWxvZy5jcmVhdGVfZW50cmllcygpCkBAIC05NCw3ICs5NCw3IEBACiAKICAgICBkZWYgdGVzdF9tYWtlX2ZyYW1lKHNlbGYpOgogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCi0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIGZyYW1lLCBsYWJlbCA9IHNlbGYuZGlhbG9nLm1ha2VfZnJhbWUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxhYmVsLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZyYW1lLCBGcmFtZSkKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnJhbWUsIEZyYW1lKQogCiAgICAgZGVmIGJ0bl90ZXN0X3NldHVwKHNlbGYsIG1ldGgpOgotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCiAgICAgICAgIHJldHVybiBtZXRoKCkKIApAQCAtMTE5LDExICsxMTksNiBAQAogICAgICAgICAgICAgICAgIHZhciwgbGFiZWwgPSBzcGVjCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidXR0b25bJ3RleHQnXSwgbGFiZWwpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIHN0YXRlKQotICAgICAgICAgICAgICAgIGlmIHN0YXRlID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kZXNlbGVjdCgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIDEgLSBzdGF0ZSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgogICAgICAgICBmb3Igc3RhdGUgaW4gKEZhbHNlLCBUcnVlKToKQEAgLTEzOSwxOCArMTM0LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICMgaGl0IG90aGVyIGJ1dHRvbiwgdGhlbiB0aGlzIG9uZQogICAgICAgICAgICAgICAgICAgICAjIGluZGV4ZXMgZGVwZW5kIG9uIGJ1dHRvbiBvcmRlcgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbdmFsXS5zZWxlY3QoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgMSAtIHN0YXRlKQotICAgICAgICAgICAgICAgICAgICBidXR0b25zWzEtdmFsXS5zZWxlY3QoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCiAKICAgICBkZWYgdGVzdF9tYWtlX2J1dHRvbihzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgc2VsZi5kaWFsb2cuYnV0dG9uZnJhbWUgPSBGcmFtZShzZWxmLmRpYWxvZy50b3ApCiAgICAgICAgIGJ0biA9IHNlbGYuZGlhbG9nLm1ha2VfYnV0dG9uKCdUZXN0Jywgc2VsZi5kaWFsb2cuY2xvc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnRuWyd0ZXh0J10sICdUZXN0JykKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5jcmVhdGVfY29tbWFuZF9idXR0b25zKCkKICAgICAgICAgIyBMb29rIGZvciBjbG9zZSBidXR0b24gY29tbWFuZCBpbiBidXR0b25mcmFtZQogICAgICAgICBjbG9zZWJ1dHRvbmNvbW1hbmQgPSAnJwpAQCAtMTYwLDYgKzE1Miw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2Nsb3NlJywgY2xvc2VidXR0b25jb21tYW5kKQogCiAKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKaW5kZXggZWRiZDU1OC4uYjNhYThlYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3QgZnVuY3Rpb25zIGFuZCBTZWFyY2hFbmdpbmUgY2xhc3MgaW4gU2VhcmNoRW5naW5lLnB5LicnJworJycnVGVzdCBmdW5jdGlvbnMgYW5kIFNlYXJjaEVuZ2luZSBjbGFzcyBpbiBpZGxlbGliLnNlYXJjaGVuZ2luZS5weS4nJycKIAogIyBXaXRoIG1vY2sgcmVwbGFjZW1lbnRzLCB0aGUgbW9kdWxlIGRvZXMgbm90IHVzZSBhbnkgZ3VpIHdpZGdldHMuCiAjIFRoZSB1c2Ugb2YgdGsuVGV4dCBpcyBhdm9pZGVkIChmb3Igbm93LCB1bnRpbCBtb2NrIFRleHQgaXMgaW1wcm92ZWQpCkBAIC0xMCw3ICsxMCw3IEBACiAjIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCAgQm9vbGVhblZhciwgU3RyaW5nVmFyLCBUY2xFcnJvciAgIyAsVGssIFRleHQKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUgYXMgc2UKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQgYXMgbW9ja1RleHQKIApAQCAtMTM5LDEwICsxMzksMTAgQEAKIAogICAgIGRlZiB0ZXN0X3NldGNvb2tlZHBhdChzZWxmKToKICAgICAgICAgZW5naW5lID0gc2VsZi5lbmdpbmUKLSAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdCgnXHMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgJ1xzJykKKyAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdChyJ1xzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmdpbmUuZ2V0cGF0KCksIHInXHMnKQogICAgICAgICBlbmdpbmUucmV2YXIuc2V0KDEpCi0gICAgICAgIGVuZ2luZS5zZXRjb29rZWRwYXQoJ1xzJykKKyAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdChyJ1xzJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmdpbmUuZ2V0cGF0KCksIHInXFxzJykKIAogICAgIGRlZiB0ZXN0X2dldGNvb2tlZHBhdChzZWxmKToKQEAgLTE1NiwxMCArMTU2LDEwIEBACiAgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidcYmhlbGxvXGInKQogICAgICAgICBlbmdpbmUud29yZHZhci5zZXQoRmFsc2UpCiAKLSAgICAgICAgZW5naW5lLnNldHBhdCgnXHMnKQorICAgICAgICBlbmdpbmUuc2V0cGF0KHInXHMnKQogICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksIHInXFxzJykKICAgICAgICAgZW5naW5lLnJldmFyLnNldChUcnVlKQotICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksICdccycpCisgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidccycpCiAKICAgICBkZWYgdGVzdF9nZXRwcm9nKHNlbGYpOgogICAgICAgICBlbmdpbmUgPSBzZWxmLmVuZ2luZQpAQCAtMjgyLDcgKzI4Miw3IEBACiAgICAgICAgIGNscy5wYXQgPSByZS5jb21waWxlKCd0YXJnZXQnKQogICAgICAgICBjbHMucmVzID0gKDIsICgxMCwgMTYpKSAgIyBsaW5lLCBzbGljZSBpbmRleGVzIG9mICd0YXJnZXQnCiAgICAgICAgIGNscy5mYWlscGF0ID0gcmUuY29tcGlsZSgneHl6JykgICMgbm90IGluIHRleHQKLSAgICAgICAgY2xzLmVtcHR5cGF0ID0gcmUuY29tcGlsZSgnXHcqJykgICMgZW1wdHkgbWF0Y2ggcG9zc2libGUKKyAgICAgICAgY2xzLmVtcHR5cGF0ID0gcmUuY29tcGlsZShyJ1x3KicpICAjIGVtcHR5IG1hdGNoIHBvc3NpYmxlCiAKICAgICBkZWYgbWFrZV9zZWFyY2goc2VsZiwgZnVuYyk6CiAgICAgICAgIGRlZiBzZWFyY2gocGF0LCBsaW5lLCBjb2wsIHdyYXAsIG9rPTApOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKaW5kZXggN2U4MjNkZi4uYTViYTdiYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CkBAIC0xLDE3ICsxLDE5IEBACi0jIFRlc3QgbW9ja190ay5UZXh0IGNsYXNzIGFnYWluc3QgdGtpbnRlci5UZXh0IGNsYXNzIGJ5IHJ1bm5pbmcgc2FtZSB0ZXN0cyB3aXRoIGJvdGguCisnJycgVGVzdCBtb2NrX3RrLlRleHQgY2xhc3MgYWdhaW5zdCB0a2ludGVyLlRleHQgY2xhc3MKKworUnVuIHNhbWUgdGVzdHMgd2l0aCBib3RoIGJ5IGNyZWF0aW5nIGEgbWl4aW4gY2xhc3MuCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCi0KIGZyb20gX3RraW50ZXIgaW1wb3J0IFRjbEVycm9yCiAKIGNsYXNzIFRleHRUZXN0KG9iamVjdCk6CisgICAgIkRlZmluZSBpdGVtcyBjb21tb24gdG8gYm90aCBzZXRzIG9mIHRlc3RzLiIKIAotICAgIGh3ID0gJ2hlbGxvXG53b3JsZCcgICMgdXN1YWwgaW5pdGlhbCBpbnNlcnQgYWZ0ZXIgaW5pdGlhbGl6YXRpb24KKyAgICBodyA9ICdoZWxsb1xud29ybGQnICAjIFNldmVyYWwgdGVzdHMgaW5zZXJ0IHRoaXMgYWZ0ZXIgYWZ0ZXIgaW5pdGlhbGl6YXRpb24uCiAgICAgaHduID0gaHcrJ1xuJyAgIyBcbiBwcmVzZW50IGF0IGluaXRpYWxpemF0aW9uLCBiZWZvcmUgaW5zZXJ0CiAKLSAgICBUZXh0ID0gTm9uZQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KCkKKyAgICAjIHNldFVwQ2xhc3MgZGVmaW5lcyBjbHMuVGV4dCBhbmQgbWF5YmUgY2xzLnJvb3QuCisgICAgIyBzZXRVcCBkZWZpbmVzIHNlbGYudGV4dCBmcm9tIFRleHQgYW5kIG1heWJlIHJvb3QuCiAKICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGV4dC5nZXQoJzEuMCcpLCAnXG4nKQpAQCAtMTk2LDYgKzE5OCwxMCBAQAogICAgICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQKICAgICAgICAgY2xzLlRleHQgPSBUZXh0CiAKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGV4dCA9IHNlbGYuVGV4dCgpCisKKwogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKICAgICAgICAgIyB0ZXN0IGVuZGZsYWdzICgtMSwgMCkgbm90IHRlc3RlZCBieSB0ZXN0X2luZGV4ICh3aGljaCB1c2VzICsxKQogICAgICAgICBkZWNvZGUgPSBzZWxmLnRleHQuX2RlY29kZQpAQCAtMjIyLDYgKzIyOCw5IEBACiAgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQogICAgICAgICBkZWwgY2xzLnJvb3QKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KHNlbGYucm9vdCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0dmlldy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CmluZGV4IDVkMmU2MDAuLmYwMThmNWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5CkBAIC0xLDIxICsxLDIxIEBACi0nJydUZXN0IGlkbGVsaWIudGV4dFZpZXcuCisnJydUZXN0IGlkbGVsaWIudGV4dHZpZXcuCiAKIFNpbmNlIGFsbCBtZXRob2RzIGFuZCBmdW5jdGlvbnMgY3JlYXRlIChvciBkZXN0cm95KSBhIFRleHRWaWV3ZXIsIHdoaWNoCiBpcyBhIHdpZGdldCBjb250YWluaW5nIG11bHRpcGxlIHdpZGdldHMsIGFsbCB0ZXN0cyBtdXN0IGJlIGd1aSB0ZXN0cy4KIFVzaW5nIG1vY2sgVGV4dCB3b3VsZCBub3QgY2hhbmdlIHRoaXMuICBPdGhlciBtb2NrcyBhcmUgdXNlZCB0byByZXRyaWV2ZQogaW5mb3JtYXRpb24gYWJvdXQgY2FsbHMuCiAKLVRoZSBjb3ZlcmFnZSBpcyBlc3NlbnRpYWxseSAxMDAlLgorQ292ZXJhZ2U6IDk0JS4KICcnJworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldyBhcyB0dgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcgYXMgdHYKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCi1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3gKK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveF9mdW5jCiAKIGRlZiBzZXRVcE1vZHVsZSgpOgogICAgIGdsb2JhbCByb290CkBAIC02NCwxNyArNjQsMTcgQEAKICAgICAgICAgdmlldy5kZXN0cm95KCkKIAogCi1jbGFzcyB0ZXh0dmlld1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVmlld0Z1bmN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMub3JpZ19tYm94ID0gdHYudGtNZXNzYWdlQm94Ci0gICAgICAgIHR2LnRrTWVzc2FnZUJveCA9IE1ib3gKKyAgICAgICAgY2xzLm9yaWdfZXJyb3IgPSB0di5zaG93ZXJyb3IKKyAgICAgICAgdHYuc2hvd2Vycm9yID0gTWJveF9mdW5jKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHR2LnRrTWVzc2FnZUJveCA9IGNscy5vcmlnX21ib3gKLSAgICAgICAgZGVsIGNscy5vcmlnX21ib3gKKyAgICAgICAgdHYuc2hvd2Vycm9yID0gY2xzLm9yaWdfZXJyb3IKKyAgICAgICAgZGVsIGNscy5vcmlnX2Vycm9yCiAKICAgICBkZWYgdGVzdF92aWV3X3RleHQoc2VsZik6CiAgICAgICAgICMgSWYgbW9kYWwgVHJ1ZSwgZ2V0IHRrIGVycm9yICdjYW4ndCBpbnZva2UgImV2ZW50IiBjb21tYW5kJy4KQEAgLTkwLDcgKzkwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignVGVzdCcsIHZpZXcudGV4dFZpZXcuZ2V0KCcxLjAnLCAnMS5lbmQnKSkKICAgICAgICAgdmlldy5PaygpCiAKLSAgICAgICAgIyBNb2NrIG1lc3NhZ2Vib3ggd2lsbCBiZSB1c2VkIGFuZCB2aWV3X2ZpbGUgd2lsbCBub3QgcmV0dXJuIGFueXRoaW5nCisgICAgICAgICMgTW9jayBzaG93ZXJyb3Igd2lsbCBiZSB1c2VkOyB2aWV3X2ZpbGUgd2lsbCByZXR1cm4gTm9uZS4KICAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4odGVzdF9kaXIsICcuLi9ub3R0aGVyZS5weScpCiAgICAgICAgIHZpZXcgPSB0di52aWV3X2ZpbGUocm9vdCwgJ1RpdGxlJywgdGVzdGZpbGUsIG1vZGFsPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RyZWUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDliYTk2NAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RyZWUucHkKQEAgLTAsMCArMSwzNiBAQAorJycnIFRlc3QgaWRsZWxpYi50cmVlLgorCitDb3ZlcmFnZTogNTYlCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdHJlZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRraW50ZXIgaW1wb3J0IFRrCisKKworY2xhc3MgVHJlZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICMgU3RhcnQgd2l0aCBjb2RlIHNsaWdodGx5IGFkYXB0ZWQgZnJvbSBodGVzdC4KKyAgICAgICAgc2MgPSB0cmVlLlNjcm9sbGVkQ2FudmFzKAorICAgICAgICAgICAgc2VsZi5yb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCisgICAgICAgIHNjLmZyYW1lLnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiLCBzaWRlPSdsZWZ0JykKKyAgICAgICAgaXRlbSA9IHRyZWUuRmlsZVRyZWVJdGVtKHRyZWUuSUNPTkRJUikKKyAgICAgICAgbm9kZSA9IHRyZWUuVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQorICAgICAgICBub2RlLmV4cGFuZCgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kb2RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG8ucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kb2RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQppbmRleCAyYjgzYzk5Li5lODcyOTI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG8ucHkKQEAgLTEsNCArMSw0IEBACi0iIiJVbml0dGVzdCBmb3IgVW5kb0RlbGVnYXRvciBpbiBpZGxlbGliLlVuZG9EZWxlZ2F0b3IuCisiIiJVbml0dGVzdCBmb3IgVW5kb0RlbGVnYXRvciBpbiBpZGxlbGliLnVuZG8ucHkuCiAKIENvdmVyYWdlIGFib3V0IDgwJSAocmV0ZXN0KS4KICIiIgpAQCAtOCw4ICs4LDggQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCi1mcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKK2Zyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgogCiAKIGNsYXNzIFVuZG9EZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI5LDggKzI5LDggQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5kZWxlZ2F0b3IgPSBVbmRvRGVsZWdhdG9yKCkKKyAgICAgICAgc2VsZi5kZWxlZ2F0b3IuYmVsbCA9IE1vY2soKQogICAgICAgICBzZWxmLnBlcmNvbGF0b3IuaW5zZXJ0ZmlsdGVyKHNlbGYuZGVsZWdhdG9yKQotICAgICAgICBzZWxmLmRlbGVnYXRvci5iZWxsID0gTW9jayh3cmFwcz1zZWxmLmRlbGVnYXRvci5iZWxsKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnBlcmNvbGF0b3IucmVtb3ZlZmlsdGVyKHNlbGYuZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKaW5kZXggMTg2MjdkZC4uZjMyNjlmMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCB3YXJuaW5ncyByZXBsYWNlbWVudCBpbiBQeVNoZWxsLnB5IGFuZCBydW4ucHkuCisnJydUZXN0IHdhcm5pbmdzIHJlcGxhY2VtZW50IGluIHB5c2hlbGwucHkgYW5kIHJ1bi5weS4KIAogVGhpcyBmaWxlIGNvdWxkIGJlIGV4cGFuZGVkIHRvIGluY2x1ZGUgdHJhY2ViYWNrIG92ZXJyaWRlcwogKGluIHNhbWUgdHdvIG1vZHVsZXMpLiBJZiBzbywgY2hhbmdlIG5hbWUuCkBAIC0xNyw5ICsxNyw5IEBACiBydW5uaW5nX2luX2lkbGUgPSAnaWRsZScgaW4gc2hvd3dhcm5pbmcuX19uYW1lX18KIAogZnJvbSBpZGxlbGliIGltcG9ydCBydW4KLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbCBhcyBzaGVsbAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsIGFzIHNoZWxsCiAKLSMgVGhlIGZvbGxvd2luZyB3YXMgZ2VuZXJhdGVkIGZyb20gUHlTaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcKKyMgVGhlIGZvbGxvd2luZyB3YXMgZ2VuZXJhdGVkIGZyb20gcHlzaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcKICMgYW5kIGNoZWNrZWQgYXMgbWF0Y2hpbmcgZXhwZWN0YXRpb24uCiBpZGxlbXNnID0gJycnCiBXYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZXZlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U5ZjY5YS4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIiIiCi1UaGUgc2VwYXJhdGUgSWRsZSB2ZXJzaW9uIHdhcyBlbGltaW5hdGVkIHllYXJzIGFnbzsKLWlkbGVsaWIuaWRsZXZlciBpcyBubyBsb25nZXIgdXNlZCBieSBJZGxlCi1hbmQgd2lsbCBiZSByZW1vdmVkIGluIDMuNiBvciBsYXRlci4gIFVzZQotICAgIGZyb20gc3lzIGltcG9ydCB2ZXJzaW9uCi0gICAgSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQotIiIiCi0jIEtlcHQgZm9yIG5vdyBvbmx5IGZvciBwb3NzaWJsZSBleGlzdGluZyBleHRlbnNpb24gdXNlCi1pbXBvcnQgd2FybmluZ3MgYXMgdwotdy53YXJuKF9fZG9jX18sIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KLUlETEVfVkVSU0lPTiA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weSBiL0xpYi9pZGxlbGliL2lvbWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lvbWVudS5weQppbmRleCA4NGYzOWEyLi4zNDE0YzdiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvaW9tZW51LnB5CkBAIC0xMCw1NyArMTAsNjAgQEAKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiBmcm9tIHRraW50ZXIuc2ltcGxlZGlhbG9nIGltcG9ydCBhc2tzdHJpbmcKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitpbXBvcnQgaWRsZWxpYgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAotCi0jIFRyeSBzZXR0aW5nIHRoZSBsb2NhbGUsIHNvIHRoYXQgd2UgY2FuIGZpbmQgb3V0Ci0jIHdoYXQgZW5jb2RpbmcgdG8gdXNlCi10cnk6Ci0gICAgaW1wb3J0IGxvY2FsZQotICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCAiIikKLWV4Y2VwdCAoSW1wb3J0RXJyb3IsIGxvY2FsZS5FcnJvcik6Ci0gICAgcGFzcwotCi0jIEVuY29kaW5nIGZvciBmaWxlIG5hbWVzCi1maWxlc3lzdGVtZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgICMjIyBjdXJyZW50bHkgdW51c2VkCi0KLWxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICMgT24gV2luZG93cywgd2UgY291bGQgdXNlICJtYmNzIi4gSG93ZXZlciwgdG8gZ2l2ZSB0aGUgdXNlcgotICAgICMgYSBwb3J0YWJsZSBlbmNvZGluZyBuYW1lLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGNvZGUgcGFnZQotICAgIHRyeToKLSAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQotICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICBleGNlcHQgTG9va3VwRXJyb3I6Ci0gICAgICAgIHBhc3MKK2lmIGlkbGVsaWIudGVzdGluZzogICMgU2V0IFRydWUgYnkgdGVzdC50ZXN0X2lkbGUgdG8gYXZvaWQgc2V0bG9jYWxlLgorICAgIGVuY29kaW5nID0gJ3V0Zi04JwogZWxzZToKKyAgICAjIFRyeSBzZXR0aW5nIHRoZSBsb2NhbGUsIHNvIHRoYXQgd2UgY2FuIGZpbmQgb3V0CisgICAgIyB3aGF0IGVuY29kaW5nIHRvIHVzZQogICAgIHRyeToKLSAgICAgICAgIyBEaWZmZXJlbnQgdGhpbmdzIGNhbiBmYWlsIGhlcmU6IHRoZSBsb2NhbGUgbW9kdWxlIG1heSBub3QgYmUKLSAgICAgICAgIyBsb2FkZWQsIGl0IG1heSBub3Qgb2ZmZXIgbmxfbGFuZ2luZm8sIG9yIENPREVTRVQsIG9yIHRoZQotICAgICAgICAjIHJlc3VsdGluZyBjb2Rlc2V0IG1heSBiZSB1bmtub3duIHRvIFB5dGhvbi4gV2UgaWdub3JlIGFsbAotICAgICAgICAjIHRoZXNlIHByb2JsZW1zLCBmYWxsaW5nIGJhY2sgdG8gQVNDSUkKLSAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLm5sX2xhbmdpbmZvKGxvY2FsZS5DT0RFU0VUKQotICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6Ci0gICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKLSAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKLSAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCi0gICAgZXhjZXB0IChOYW1lRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBMb29rdXBFcnJvcik6Ci0gICAgICAgICMgVHJ5IGdldGRlZmF1bHRsb2NhbGU6IGl0IHBhcnNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCi0gICAgICAgICMgd2hpY2ggbWF5IGdpdmUgYSBjbHVlLiBVbmZvcnR1bmF0ZWx5LCBnZXRkZWZhdWx0bG9jYWxlIGhhcwotICAgICAgICAjIGJ1Z3MgdGhhdCBjYW4gY2F1c2UgVmFsdWVFcnJvci4KKyAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSwgIiIpCisgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgbG9jYWxlLkVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgbG9jYWxlX2RlY29kZSA9ICdhc2NpaScKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgIyBPbiBXaW5kb3dzLCB3ZSBjb3VsZCB1c2UgIm1iY3MiLiBIb3dldmVyLCB0byBnaXZlIHRoZSB1c2VyCisgICAgICAgICMgYSBwb3J0YWJsZSBlbmNvZGluZyBuYW1lLCB3ZSBuZWVkIHRvIGZpbmQgdGhlIGNvZGUgcGFnZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCisgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKKyAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRGlmZmVyZW50IHRoaW5ncyBjYW4gZmFpbCBoZXJlOiB0aGUgbG9jYWxlIG1vZHVsZSBtYXkgbm90IGJlCisgICAgICAgICAgICAjIGxvYWRlZCwgaXQgbWF5IG5vdCBvZmZlciBubF9sYW5naW5mbywgb3IgQ09ERVNFVCwgb3IgdGhlCisgICAgICAgICAgICAjIHJlc3VsdGluZyBjb2Rlc2V0IG1heSBiZSB1bmtub3duIHRvIFB5dGhvbi4gV2UgaWdub3JlIGFsbAorICAgICAgICAgICAgIyB0aGVzZSBwcm9ibGVtcywgZmFsbGluZyBiYWNrIHRvIEFTQ0lJCisgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUubmxfbGFuZ2luZm8obG9jYWxlLkNPREVTRVQpCiAgICAgICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6CiAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCiAgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwogICAgICAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQgKE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIExvb2t1cEVycm9yKToKKyAgICAgICAgICAgICMgVHJ5IGdldGRlZmF1bHRsb2NhbGU6IGl0IHBhcnNlcyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsCisgICAgICAgICAgICAjIHdoaWNoIG1heSBnaXZlIGEgY2x1ZS4gVW5mb3J0dW5hdGVseSwgZ2V0ZGVmYXVsdGxvY2FsZSBoYXMKKyAgICAgICAgICAgICMgYnVncyB0aGF0IGNhbiBjYXVzZSBWYWx1ZUVycm9yLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KKyAgICAgICAgICAgICAgICBpZiBsb2NhbGVfZW5jb2RpbmcgaXMgTm9uZSBvciBsb2NhbGVfZW5jb2RpbmcgaXMgJyc6CisgICAgICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAorICAgICAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCisgICAgICAgICAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIExvb2t1cEVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCiAKLWxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZy5sb3dlcigpCisgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nLmxvd2VyKCkKIAotZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcgICMjIyBLQksgMDdTZXAwNyAgVGhpcyBpcyB1c2VkIGFsbCBvdmVyIElETEUsIGNoZWNrIQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIyAnZW5jb2RpbmcnIGlzIHVzZWQgYmVsb3cgaW4gZW5jb2RlKCksIGNoZWNrIQorICAgIGVuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nCisgICAgIyBFbmNvZGluZyBpcyB1c2VkIGluIG11bHRpcGxlIGZpbGVzOyBsb2NhbGVfZW5jb2Rpbmcgbm93aGVyZS4KKyAgICAjIFRoZSBvbmx5IHVzZSBvZiAnZW5jb2RpbmcnIGJlbG93IGlzIGluIF9kZWNvZGUgYXMgaW5pdGlhbCB2YWx1ZQorICAgICMgb2YgZGVwcmVjYXRlZCBibG9jayBhc2tpbmcgdXNlciBmb3IgZW5jb2RpbmcuCisgICAgIyBQZXJoYXBzIHVzZSBlbHNld2hlcmUgc2hvdWxkIGJlIHJldmlld2VkLgogCiBjb2RpbmdfcmUgPSByZS5jb21waWxlKHInXlsgXHRcZl0qIy4qP2NvZGluZ1s6PV1bIFx0XSooWy1cdy5dKyknLCByZS5BU0NJSSkKIGJsYW5rX3JlID0gcmUuY29tcGlsZShyJ15bIFx0XGZdKig/OlsjXHJcbl18JCknLCByZS5BU0NJSSkKQEAgLTEwNyw2ICsxMTAsOSBAQAogCiAKIGNsYXNzIElPQmluZGluZzoKKyMgT25lIGluc3RhbmNlIHBlciBlZGl0b3IgV2luZG93IHNvIG1ldGhvZHMga25vdyB3aGljaCB0byBzYXZlLCBjbG9zZS4KKyMgT3BlbiByZXR1cm5zIGZvY3VzIHRvIHNlbGYuZWRpdHdpbiBpZiBhYm9ydGVkLgorIyBFZGl0b3JXaW5kb3cub3Blbl9tb2R1bGUsIG90aGVycywgYmVsb25nIGhlcmUuCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KQEAgLTMwMSw3ICszMDcsNyBAQAogICAgICAgICAgICAgICAgICJUaGUgZmlsZSdzIGVuY29kaW5nIGlzIGludmFsaWQgZm9yIFB5dGhvbiAzLnguXG4iCiAgICAgICAgICAgICAgICAgIklETEUgd2lsbCBjb252ZXJ0IGl0IHRvIFVURi04LlxuIgogICAgICAgICAgICAgICAgICJXaGF0IGlzIHRoZSBjdXJyZW50IGVuY29kaW5nIG9mIHRoZSBmaWxlPyIsCi0gICAgICAgICAgICAgICAgaW5pdGlhbHZhbHVlID0gbG9jYWxlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgIGluaXRpYWx2YWx1ZSA9IGVuY29kaW5nLAogICAgICAgICAgICAgICAgIHBhcmVudCA9IHNlbGYuZWRpdHdpbi50ZXh0KQogCiAgICAgICAgICAgICBpZiBlbmM6CkBAIC01MjksOCArNTM1LDggQEAKIAogICAgIHJvb3QgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgcm9vdC50aXRsZSgiVGVzdCBJT0JpbmRpbmciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICBjbGFzcyBNeUVkaXRXaW46CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKICAgICAgICAgICAgIHNlbGYudGV4dCA9IHRleHQKQEAgLTU2MSw1ICs1NjcsOCBAQAogICAgIElPQmluZGluZyhlZGl0d2luKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaW9tZW51JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX2lvX2JpbmRpbmcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5IGIvTGliL2lkbGVsaWIvbWFjb3N4LnB5CnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL21hY29zeC5weQppbmRleCBiOTZiYWUxLi5jMjI1ZGQ5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CisrKyBiL0xpYi9pZGxlbGliL21hY29zeC5weQpAQCAtMSwzMCArMSwyNSBAQAogIiIiCiBBIG51bWJlciBvZiBmdW5jdGlvbnMgdGhhdCBlbmhhbmNlIElETEUgb24gTWFjIE9TWC4KICIiIgotaW1wb3J0IHN5cwotaW1wb3J0IHRraW50ZXIKLWZyb20gb3MgaW1wb3J0IHBhdGgKK2Zyb20gc3lzIGltcG9ydCBwbGF0Zm9ybSAgIyBVc2VkIGluIF9pbml0X3RrX3R5cGUsIGNoYW5nZWQgYnkgdGVzdC4KIGltcG9ydCB3YXJuaW5ncwogCi1kZWYgcnVubmluZ0FzT1NYQXBwKCk6Ci0gICAgd2FybmluZ3Mud2FybigicnVubmluZ0FzT1NYQXBwKCkgaXMgZGVwcmVjYXRlZCwgdXNlIGlzQXF1YVRrKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuIGlzQXF1YVRrKCkKK2ltcG9ydCB0a2ludGVyCiAKLWRlZiBpc0NhcmJvbkFxdWFUayhyb290KToKLSAgICB3YXJuaW5ncy53YXJuKCJpc0NhcmJvbkFxdWFUayhyb290KSBpcyBkZXByZWNhdGVkLCB1c2UgaXNDYXJib25UaygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiBpc0NhcmJvblRrKCkKKworIyMgRGVmaW5lIGZ1bmN0aW9ucyB0aGF0IHF1ZXJ5IHRoZSBNYWMgZ3JhcGhpY3MgdHlwZS4KKyMjIF90a190eXBlIGFuZCBpdHMgaW5pdGlhbGl6ZXIgYXJlIHByaXZhdGUgdG8gdGhpcyBzZWN0aW9uLgogCiBfdGtfdHlwZSA9IE5vbmUKIAotZGVmIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCk6CitkZWYgX2luaXRfdGtfdHlwZSgpOgogICAgICIiIgogICAgIEluaXRpYWxpemVzIE9TIFggVGsgdmFyaWFudCB2YWx1ZXMgZm9yCiAgICAgaXNBcXVhVGsoKSwgaXNDYXJib25UaygpLCBpc0NvY29hVGsoKSwgYW5kIGlzWFF1YXJ0eigpLgogICAgICIiIgogICAgIGdsb2JhbCBfdGtfdHlwZQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgcm9vdCA9IHRraW50ZXIuVGsoKQogICAgICAgICB3cyA9IHJvb3QudGsuY2FsbCgndGsnLCAnd2luZG93aW5nc3lzdGVtJykKICAgICAgICAgaWYgJ3gxMScgaW4gd3M6CiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJ4cXVhcnR6IgpAQCAtMzQsNiArMjksNyBAQAogICAgICAgICAgICAgX3RrX3R5cGUgPSAiY29jb2EiCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJjYXJib24iCisgICAgICAgIHJvb3QuZGVzdHJveSgpCiAgICAgZWxzZToKICAgICAgICAgX3RrX3R5cGUgPSAib3RoZXIiCiAKQEAgLTQxLDcgKzM3LDggQEAKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhIG5hdGl2ZSBPUyBYIFRrIChDb2NvYSBvciBDYXJib24pLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjb2NvYSIgb3IgX3RrX3R5cGUgPT0gImNhcmJvbiIKIAogZGVmIGlzQ2FyYm9uVGsoKToKQEAgLTQ5LDIzICs0NiwyNyBAQAogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgQ2FyYm9uIEFxdWEgVGsgKGluc3RlYWQgb2YgdGhlCiAgICAgbmV3ZXIgQ29jb2EgQXF1YSBUaykuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNhcmJvbiIKIAogZGVmIGlzQ29jb2FUaygpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgQ29jb2EgQXF1YSBUay4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY29jb2EiCiAKIGRlZiBpc1hRdWFydHooKToKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhbiBPUyBYIFgxMSBUay4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAieHF1YXJ0eiIKIAorCiBkZWYgdGtWZXJzaW9uV2FybmluZyhyb290KToKICAgICAiIiIKICAgICBSZXR1cm5zIGEgc3RyaW5nIHdhcm5pbmcgbWVzc2FnZSBpZiB0aGUgVGsgdmVyc2lvbiBpbiB1c2UgYXBwZWFycyB0bwpAQCAtODYsNiArODcsOSBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBGYWxzZQogCisKKyMjIEZpeCB0aGUgbWVudSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuCisKIGRlZiBhZGRPcGVuRXZlbnRTdXBwb3J0KHJvb3QsIGZsaXN0KToKICAgICAiIiIKICAgICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYXBwbGljYXRpb24gd2lsbCByZXNwb25kIHRvIG9wZW4gQXBwbGVFdmVudHMsIHdoaWNoCkBAIC0xMjQsMjMgKzEyOCwyMyBAQAogICAgICMgRHVlIHRvIGEgKG1pcy0pZmVhdHVyZSBvZiBUa0FxdWEgdGhlIHVzZXIgd2lsbCBhbHNvIHNlZSBhbiBlbXB0eSBIZWxwCiAgICAgIyBtZW51LgogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgTWVudQotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgQmluZGluZ3MKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFdpbmRvd0xpc3QKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IG1haW5tZW51CisgICAgZnJvbSBpZGxlbGliIGltcG9ydCB3aW5kb3dzCiAKLSAgICBjbG9zZUl0ZW0gPSBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXVstMl0KKyAgICBjbG9zZUl0ZW0gPSBtYWlubWVudS5tZW51ZGVmc1swXVsxXVstMl0KIAogICAgICMgUmVtb3ZlIHRoZSBsYXN0IDMgaXRlbXMgb2YgdGhlIGZpbGUgbWVudTogYSBzZXBhcmF0b3IsIGNsb3NlIHdpbmRvdyBhbmQKICAgICAjIHF1aXQuIENsb3NlIHdpbmRvdyB3aWxsIGJlIHJlaW5zZXJ0ZWQganVzdCBhYm92ZSB0aGUgc2F2ZSBpdGVtLCB3aGVyZQogICAgICMgaXQgc2hvdWxkIGJlIGFjY29yZGluZyB0byB0aGUgSElHLiBRdWl0IGlzIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXVstMzpdCi0gICAgQmluZGluZ3MubWVudWRlZnNbMF1bMV0uaW5zZXJ0KDYsIGNsb3NlSXRlbSkKKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbMF1bMV1bLTM6XQorICAgIG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdLmluc2VydCg2LCBjbG9zZUl0ZW0pCiAKICAgICAjIFJlbW92ZSB0aGUgJ0Fib3V0JyBlbnRyeSBmcm9tIHRoZSBoZWxwIG1lbnUsIGl0IGlzIGluIHRoZSBhcHBsaWNhdGlvbgogICAgICMgbWVudQotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMV1bMV1bMDoyXQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMV1bMV1bMDoyXQogICAgICMgUmVtb3ZlIHRoZSAnQ29uZmlndXJlIElkbGUnIGVudHJ5IGZyb20gdGhlIG9wdGlvbnMgbWVudSwgaXQgaXMgaW4gdGhlCiAgICAgIyBhcHBsaWNhdGlvbiBtZW51IGFzICdQcmVmZXJlbmNlcycKLSAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTJdWzFdWzBdCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0yXVsxXVswXQogICAgIG1lbnViYXIgPSBNZW51KHJvb3QpCiAgICAgcm9vdC5jb25maWd1cmUobWVudT1tZW51YmFyKQogICAgIG1lbnVkaWN0ID0ge30KQEAgLTE1NSwzMCArMTU5LDMwIEBACiAKICAgICAgICAgaWYgZW5kID4gMDoKICAgICAgICAgICAgIG1lbnUuZGVsZXRlKDAsIGVuZCkKLSAgICAgICAgV2luZG93TGlzdC5hZGRfd2luZG93c190b19tZW51KG1lbnUpCi0gICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhwb3N0d2luZG93c21lbnUpCisgICAgICAgIHdpbmRvd3MuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2socG9zdHdpbmRvd3NtZW51KQogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmFib3V0X2RpYWxvZy4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZwotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhyb290LCAnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBlZGl0b3IuRWRpdG9yV2luZG93LmFib3V0X2RpYWxvZy4KKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwX2Fib3V0CisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2cocm9vdCwgJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuY29uZmlnX2RpYWxvZy4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdEaWFsb2cKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuY29uZmlnX2RpYWxvZy4KKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKIAogICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSByb290IG9iamVjdCBoYXMgYW4gaW5zdGFuY2VfZGljdCBhdHRyaWJ1dGUsCiAgICAgICAgICMgbWlycm9ycyBjb2RlIGluIEVkaXRvcldpbmRvdyAoYWx0aG91Z2ggdGhhdCBzZXRzIHRoZSBhdHRyaWJ1dGUKICAgICAgICAgIyBvbiBhbiBFZGl0b3JXaW5kb3cgaW5zdGFuY2UgdGhhdCBpcyB0aGVuIHBhc3NlZCBhcyB0aGUgZmlyc3QKICAgICAgICAgIyBhcmd1bWVudCB0byBDb25maWdEaWFsb2cpCiAgICAgICAgIHJvb3QuaW5zdGFuY2VfZGljdCA9IGZsaXN0LmludmVyc2VkaWN0Ci0gICAgICAgIGNvbmZpZ0RpYWxvZy5Db25maWdEaWFsb2cocm9vdCwgJ1NldHRpbmdzJykKKyAgICAgICAgY29uZmlnZGlhbG9nLkNvbmZpZ0RpYWxvZyhyb290LCAnU2V0dGluZ3MnKQogCiAgICAgZGVmIGhlbHBfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0lETEUgSGVscCcgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaGVscAogICAgICAgICBoZWxwLnNob3dfaWRsZWhlbHAocm9vdCkKIApAQCAtMTk4LDI5ICsyMDIsMzMgQEAKICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtZW51YmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcm9mZj0wKQogICAgICAgICBtZW51YmFyLmFkZF9jYXNjYWRlKGxhYmVsPSdJRExFJywgbWVudT1tZW51KQotICAgICAgICBCaW5kaW5ncy5tZW51ZGVmcy5pbnNlcnQoMCwKKyAgICAgICAgbWFpbm1lbnUubWVudWRlZnMuaW5zZXJ0KDAsCiAgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uJywgWwogICAgICAgICAgICAgICAgICgnQWJvdXQgSURMRScsICc8PGFib3V0LWlkbGU+PicpLAogICAgICAgICAgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAgICAgIF0pKQotICAgICAgICB0a3ZlcnNpb24gPSByb290LnRrLmV2YWwoJ2luZm8gcGF0Y2hsZXZlbCcpCi0gICAgICAgIGlmIHR1cGxlKG1hcChpbnQsIHRrdmVyc2lvbi5zcGxpdCgnLicpKSkgPCAoOCwgNCwgMTQpOgotICAgICAgICAgICAgIyBmb3IgZWFybGllciBBcXVhVGsgdmVyc2lvbnMsIHN1cHBseSBhIFByZWZlcmVuY2VzIG1lbnUgaXRlbQotICAgICAgICAgICAgQmluZGluZ3MubWVudWRlZnNbMF1bMV0uYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICAoJ19QcmVmZXJlbmNlcy4uLi4nLCAnPDxvcGVuLWNvbmZpZy1kaWFsb2c+PicpLAotICAgICAgICAgICAgICAgICkKICAgICBpZiBpc0NvY29hVGsoKToKICAgICAgICAgIyByZXBsYWNlIGRlZmF1bHQgQWJvdXQgZGlhbG9nIHdpdGggQWJvdXQgSURMRSBvbmUKICAgICAgICAgcm9vdC5jcmVhdGVjb21tYW5kKCd0a0Fib3V0RGlhbG9nJywgYWJvdXRfZGlhbG9nKQogICAgICAgICAjIHJlcGxhY2UgZGVmYXVsdCAiSGVscCIgaXRlbSBpbiBIZWxwIG1lbnUKICAgICAgICAgcm9vdC5jcmVhdGVjb21tYW5kKCc6OnRrOjptYWM6OlNob3dIZWxwJywgaGVscF9kaWFsb2cpCiAgICAgICAgICMgcmVtb3ZlIHJlZHVuZGFudCAiSURMRSBIZWxwIiBmcm9tIG1lbnUKLSAgICAgICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0xXVsxXVswXQorICAgICAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTFdWzFdWzBdCisKK2RlZiBmaXhiMmNvbnRleHQocm9vdCk6CisgICAgJycnUmVtb3ZlZCBiYWQgQXF1YVRrIEJ1dHRvbi0yIChyaWdodCkgYW5kIFBhc3RlIGJpbmRpbmdzLgorCisgICAgVGhleSBwcmV2ZW50IGNvbnRleHQgbWVudSBhY2Nlc3MgYW5kIHNlZW0gdG8gYmUgZ29uZSBpbiBBcXVhVGs4LjYuCisgICAgU2VlIGlzc3VlICMyNDgwMS4KKyAgICAnJycKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjI+JykKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjItTW90aW9uPicpCisgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPDxQYXN0ZVNlbGVjdGlvbj4+JykKIAogZGVmIHNldHVwQXBwKHJvb3QsIGZsaXN0KToKICAgICAiIiIKICAgICBQZXJmb3JtIGluaXRpYWwgT1MgWCBjdXN0b21pemF0aW9ucyBpZiBuZWVkZWQuCi0gICAgQ2FsbGVkIGZyb20gUHlTaGVsbC5tYWluKCkgYWZ0ZXIgaW5pdGlhbCBjYWxscyB0byBUaygpCisgICAgQ2FsbGVkIGZyb20gcHlzaGVsbC5tYWluKCkgYWZ0ZXIgaW5pdGlhbCBjYWxscyB0byBUaygpCiAKICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIG1ham9yIHZlcnNpb25zIG9mIFRrIGluIHVzZSBvbiBPUyBYOgogICAgICAgICAxLiBBcXVhIENvY29hIFRrIChuYXRpdmUgZGVmYXVsdCBzaW5jZSBPUyBYIDEwLjYpCkBAIC0yMzMsOCArMjQxLDEzIEBACiAgICAgaXNBcXVhVGsoKSwgaXNDYXJib25UaygpLCBpc0NvY29hVGsoKSwgaXNYUXVhcnR6KCkgZnVuY3Rpb25zIHdoaWNoCiAgICAgYXJlIGluaXRpYWxpemVkIGhlcmUgYXMgd2VsbC4KICAgICAiIiIKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAgICAgaWYgaXNBcXVhVGsoKToKICAgICAgICAgaGlkZVRrQ29uc29sZShyb290KQogICAgICAgICBvdmVycmlkZVJvb3RNZW51KHJvb3QsIGZsaXN0KQogICAgICAgICBhZGRPcGVuRXZlbnRTdXBwb3J0KHJvb3QsIGZsaXN0KQorICAgICAgICBmaXhiMmNvbnRleHQocm9vdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1haW4KKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X21hY29zeCcsIHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQmluZGluZ3MucHkgYi9MaWIvaWRsZWxpYi9tYWlubWVudS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9CaW5kaW5ncy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbWFpbm1lbnUucHkKaW5kZXggZTE5YTI3OS4uNjUzNDVjZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQmluZGluZ3MucHkKKysrIGIvTGliL2lkbGVsaWIvbWFpbm1lbnUucHkKQEAgLTEwLDkgKzEwLDkgQEAKICIiIgogZnJvbSBpbXBvcnRsaWIudXRpbCBpbXBvcnQgZmluZF9zcGVjCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAotIyAgIFdhcm5pbmc6IG1lbnVkZWZzIGlzIGFsdGVyZWQgaW4gbWFjb3N4U3VwcG9ydC5vdmVycmlkZVJvb3RNZW51KCkKKyMgICBXYXJuaW5nOiBtZW51ZGVmcyBpcyBhbHRlcmVkIGluIG1hY29zeC5vdmVycmlkZVJvb3RNZW51KCkKICMgICBhZnRlciBpdCBpcyBkZXRlcm1pbmVkIHRoYXQgYW4gT1MgWCBBcXVhIFRrIGlzIGluIHVzZSwKICMgICB3aGljaCBjYW5ub3QgYmUgZG9uZSB1bnRpbCBhZnRlciBUaygpIGlzIGZpcnN0IGNhbGxlZC4KICMgICBEbyBub3QgYWx0ZXIgdGhlICdmaWxlJywgJ29wdGlvbnMnLCBvciAnaGVscCcgY2FzY2FkZXMgaGVyZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5IGIvTGliL2lkbGVsaWIvbXVsdGljYWxsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL011bHRpQ2FsbC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbXVsdGljYWxsLnB5CmluZGV4IDg0NjI4NTQuLmI3NGZlZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL011bHRpQ2FsbC5weQorKysgYi9MaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKQEAgLTI4LDkgKzI4LDkgQEAKICAgIHVubGVzcyB0aGlzIGNvbmZsaWN0cyB3aXRoIHRoZSBmaXJzdCBydWxlLgogRWFjaCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBhdCBtb3N0IG9uY2UgZm9yIGVhY2ggZXZlbnQuCiAiIiIKLQotaW1wb3J0IHN5cwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKIGltcG9ydCB0a2ludGVyCiAKICMgdGhlIGV2ZW50IHR5cGUgY29uc3RhbnRzLCB3aGljaCBkZWZpbmUgdGhlIG1lYW5pbmcgb2YgbWNfdHlwZQpAQCAtNDE0LDEyICs0MTQsMTIgQEAKICAgICByZXR1cm4gTXVsdGlDYWxsCiAKIAotZGVmIF9tdWx0aV9jYWxsKHBhcmVudCk6Ci0gICAgcm9vdCA9IHRraW50ZXIuVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgTXVsdGlDYWxsIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IodGtpbnRlci5UZXh0KShyb290KQorZGVmIF9tdWx0aV9jYWxsKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSB0a2ludGVyLlRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgTXVsdGlDYWxsIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQorICAgIHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKHRraW50ZXIuVGV4dCkodG9wKQogICAgIHRleHQucGFjaygpCiAgICAgZGVmIGJpbmRzZXEoc2VxLCBuPVswXSk6CiAgICAgICAgIGRlZiBoYW5kbGVyKGV2ZW50KToKQEAgLTQzOSw3ICs0MzksNiBAQAogICAgIGJpbmRzZXEoIjxGb2N1c091dD4iKQogICAgIGJpbmRzZXEoIjxFbnRlcj4iKQogICAgIGJpbmRzZXEoIjxMZWF2ZT4iKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5IGIvTGliL2lkbGVsaWIvb3V0d2luLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL091dHB1dFdpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvb3V0d2luLnB5CmluZGV4IGU2MTRmOWIuLmY2ZDI5MTUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL091dHB1dFdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9vdXR3aW4ucHkKQEAgLTEsOCArMSwxMSBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKIGltcG9ydCByZQorCitmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZworCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51CisKIAogY2xhc3MgT3V0cHV0V2luZG93KEVkaXRvcldpbmRvdyk6CiAKQEAgLTM2LDcgKzM5LDcgQEAKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzLCB0YWdzPSgpLCBtYXJrPSJpbnNlcnQiKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIGJ5dGVzKSk6Ci0gICAgICAgICAgICBzID0gcy5kZWNvZGUoSU9CaW5kaW5nLmVuY29kaW5nLCAicmVwbGFjZSIpCisgICAgICAgICAgICBzID0gcy5kZWNvZGUoaW9tZW51LmVuY29kaW5nLCAicmVwbGFjZSIpCiAgICAgICAgIHNlbGYudGV4dC5pbnNlcnQobWFyaywgcywgdGFncykKICAgICAgICAgc2VsZi50ZXh0LnNlZShtYXJrKQogICAgICAgICBzZWxmLnRleHQudXBkYXRlKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weSBiL0xpYi9pZGxlbGliL3BhcmFncmFwaC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Gb3JtYXRQYXJhZ3JhcGgucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhcmFncmFwaC5weQppbmRleCA3YTlkMTg1Li5mMTFiZGFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Gb3JtYXRQYXJhZ3JhcGgucHkKKysrIGIvTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CkBAIC0xNCw5ICsxNCwxMCBAQAogICBzcGFjZXMsIHRoZXkgd2lsbCBub3QgYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBzYW1lIGJsb2NrLgogKiBGYW5jeSBjb21tZW50cywgbGlrZSB0aGlzIGJ1bGxldGVkIGxpc3QsIGFyZW4ndCBoYW5kbGVkIDotKQogIiIiCi0KIGltcG9ydCByZQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgRm9ybWF0UGFyYWdyYXBoOgogCkBAIC0xMjksNyArMTMwLDcgQEAKICAgICBwYXJ0aWFsID0gaW5kZW50MQogICAgIHdoaWxlIGkgPCBuIGFuZCBub3QgaXNfYWxsX3doaXRlKGxpbmVzW2ldKToKICAgICAgICAgIyBYWFggU2hvdWxkIHRha2UgZG91YmxlIHNwYWNlIGFmdGVyIHBlcmlvZCAoZXRjLikgaW50byBhY2NvdW50Ci0gICAgICAgIHdvcmRzID0gcmUuc3BsaXQoIihccyspIiwgbGluZXNbaV0pCisgICAgICAgIHdvcmRzID0gcmUuc3BsaXQociIoXHMrKSIsIGxpbmVzW2ldKQogICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBsZW4od29yZHMpLCAyKToKICAgICAgICAgICAgIHdvcmQgPSB3b3Jkc1tqXQogICAgICAgICAgICAgaWYgbm90IHdvcmQ6CkBAIC0xODksNyArMTkwLDggQEAKICAgICBpZiBtIGlzIE5vbmU6IHJldHVybiAiIgogICAgIHJldHVybiBtLmdyb3VwKDEpCiAKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2Zvcm1hdHBhcmFncmFwaCcsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9wYXJhZ3JhcGgnLAogICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXJlbk1hdGNoLnB5IGIvTGliL2lkbGVsaWIvcGFyZW5tYXRjaC5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QYXJlbk1hdGNoLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CmluZGV4IDQ3ZTEwZjMuLmNjZWM3MDggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkKKysrIGIvTGliL2lkbGVsaWIvcGFyZW5tYXRjaC5weQpAQCAtNCw5ICs0LDggQEAKIHBhcmVuLiAgUGFyZW4gaGVyZSBpcyB1c2VkIGdlbmVyaWNhbGx5OyB0aGUgbWF0Y2hpbmcgYXBwbGllcyB0bwogcGFyZW50aGVzZXMsIHNxdWFyZSBicmFja2V0cywgYW5kIGN1cmx5IGJyYWNlcy4KICIiIgotCi1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIF9vcGVuZXJzID0geycpJzonKCcsJ10nOidbJywnfSc6J3snfQogQ0hFQ0tfREVMQVkgPSAxMDAgIyBtaWxsaXNlY29uZHMKQEAgLTY0LDYgKzYzLDcgQEAKICAgICAgICAgIyBhbmQgZGVhY3RpdmF0ZV9yZXN0b3JlICh3aGljaCBjYWxscyBldmVudF9kZWxldGUpLgogICAgICAgICBlZGl0d2luLnRleHQuYmluZChzZWxmLlJFU1RPUkVfVklSVFVBTF9FVkVOVF9OQU1FLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3RvcmVfZXZlbnQpCisgICAgICAgIHNlbGYuYmVsbCA9IHNlbGYudGV4dC5iZWxsIGlmIHNlbGYuQkVMTCBlbHNlIGxhbWJkYTogTm9uZQogICAgICAgICBzZWxmLmNvdW50ZXIgPSAwCiAgICAgICAgIHNlbGYuaXNfcmVzdG9yZV9hY3RpdmUgPSAwCiAgICAgICAgIHNlbGYuc2V0X3N0eWxlKHNlbGYuU1RZTEUpCkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgIGluZGljZXMgPSAoSHlwZXJQYXJzZXIoc2VsZi5lZGl0d2luLCAiaW5zZXJ0IikKICAgICAgICAgICAgICAgICAgICAuZ2V0X3N1cnJvdW5kaW5nX2JyYWNrZXRzKCkpCiAgICAgICAgIGlmIGluZGljZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYud2Fybl9taXNtYXRjaGVkKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hY3RpdmF0ZV9yZXN0b3JlKCkKICAgICAgICAgc2VsZi5jcmVhdGVfdGFnKGluZGljZXMpCkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpbmRpY2VzID0gaHAuZ2V0X3N1cnJvdW5kaW5nX2JyYWNrZXRzKF9vcGVuZXJzW2Nsb3Nlcl0sIFRydWUpCiAgICAgICAgIGlmIGluZGljZXMgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYud2Fybl9taXNtYXRjaGVkKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5hY3RpdmF0ZV9yZXN0b3JlKCkKICAgICAgICAgc2VsZi5jcmVhdGVfdGFnKGluZGljZXMpCkBAIC0xMjQsMTAgKzEyNCw2IEBACiAgICAgICAgIGlmIHRpbWVyX2NvdW50ID09IHNlbGYuY291bnRlcjoKICAgICAgICAgICAgIHNlbGYucmVzdG9yZV9ldmVudCgpCiAKLSAgICBkZWYgd2Fybl9taXNtYXRjaGVkKHNlbGYpOgotICAgICAgICBpZiBzZWxmLkJFTEw6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpCi0KICAgICAjIGFueSBvbmUgb2YgdGhlIGNyZWF0ZV90YWdfWFhYIG1ldGhvZHMgY2FuIGJlIHVzZWQgZGVwZW5kaW5nIG9uCiAgICAgIyB0aGUgc3R5bGUKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGF0aGJyb3dzZXIucHkKaW5kZXggOWFiNzYzMi4uNmMxOTUwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvcGF0aGJyb3dzZXIucHkKQEAgLTEsMTAgKzEsMTAgQEAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiAKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbQotZnJvbSBpZGxlbGliLkNsYXNzQnJvd3NlciBpbXBvcnQgQ2xhc3NCcm93c2VyLCBNb2R1bGVCcm93c2VyVHJlZUl0ZW0KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi5icm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVJdGVtCiAKIAogY2xhc3MgUGF0aEJyb3dzZXIoQ2xhc3NCcm93c2VyKToKQEAgLTI0LDYgKzI0LDcgQEAKICAgICBkZWYgcm9vdG5vZGUoc2VsZik6CiAgICAgICAgIHJldHVybiBQYXRoQnJvd3NlclRyZWVJdGVtKCkKIAorCiBjbGFzcyBQYXRoQnJvd3NlclRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBHZXRUZXh0KHNlbGYpOgpAQCAtMzYsNiArMzcsNyBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAorCiBjbGFzcyBEaXJCcm93c2VyVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpciwgcGFja2FnZXM9W10pOgpAQCAtOTUsNiArOTcsNyBAQAogICAgICAgICBzb3J0ZWQuc29ydCgpCiAgICAgICAgIHJldHVybiBzb3J0ZWQKIAorCiBkZWYgX3BhdGhfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3QocGFyZW50KQogICAgIFBhdGhCcm93c2VyKGZsaXN0LCBfaHRlc3Q9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BlcmNvbGF0b3IucHkgYi9MaWIvaWRsZWxpYi9wZXJjb2xhdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BlcmNvbGF0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKaW5kZXggYjhiZTJhYS4uZDE4ZGFmMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGVyY29sYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9wZXJjb2xhdG9yLnB5CkBAIC0xLDUgKzEsNSBAQAotZnJvbSBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgogCiAKIGNsYXNzIFBlcmNvbGF0b3I6CkBAIC01Nyw3ICs1Nyw2IEBACiAKIGRlZiBfcGVyY29sYXRvcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHRraW50ZXIgYXMgdGsKLSAgICBpbXBvcnQgcmUKIAogICAgIGNsYXNzIFRyYWNlcihEZWxlZ2F0b3IpOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CkBAIC03NCw4ICs3Myw4IEBACiAKICAgICBib3ggPSB0ay5Ub3BsZXZlbChwYXJlbnQpCiAgICAgYm94LnRpdGxlKCJUZXN0IFBlcmNvbGF0b3IiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICB0ZXh0ID0gdGsuVGV4dChib3gpCiAgICAgcCA9IFBlcmNvbGF0b3IodGV4dCkKICAgICBwaW4gPSBwLmluc2VydGZpbHRlcgpAQCAtODksMTAgKzg4LDEwIEBACiAgICAgICAgIChwaW4gaWYgdmFyMi5nZXQoKSBlbHNlIHBvdXQpKHQyKQogCiAgICAgdGV4dC5wYWNrKCkKLSAgICB2YXIxID0gdGsuSW50VmFyKCkKKyAgICB2YXIxID0gdGsuSW50VmFyKHBhcmVudCkKICAgICBjYjEgPSB0ay5DaGVja2J1dHRvbihib3gsIHRleHQ9IlRyYWNlcjEiLCBjb21tYW5kPXRvZ2dsZTEsIHZhcmlhYmxlPXZhcjEpCiAgICAgY2IxLnBhY2soKQotICAgIHZhcjIgPSB0ay5JbnRWYXIoKQorICAgIHZhcjIgPSB0ay5JbnRWYXIocGFyZW50KQogICAgIGNiMiA9IHRrLkNoZWNrYnV0dG9uKGJveCwgdGV4dD0iVHJhY2VyMiIsIGNvbW1hbmQ9dG9nZ2xlMiwgdmFyaWFibGU9dmFyMikKICAgICBjYjIucGFjaygpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5UGFyc2UucHkgYi9MaWIvaWRsZWxpYi9weXBhcnNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1B5UGFyc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3B5cGFyc2UucHkKaW5kZXggOWNjYmIyNS4uNjczOWRmZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUHlQYXJzZS5weQorKysgYi9MaWIvaWRsZWxpYi9weXBhcnNlLnB5CkBAIC0xLDYgKzEsNiBAQAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTWFwcGluZwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nCiAKICMgUmVhc29uIGxhc3Qgc3RtdCBpcyBjb250aW51ZWQgKG9yIENfTk9ORSBpZiBpdCdzIG5vdCkuCiAoQ19OT05FLCBDX0JBQ0tTTEFTSCwgQ19TVFJJTkdfRklSU1RfTElORSwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkgYi9MaWIvaWRsZWxpYi9weXNoZWxsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1B5U2hlbGwucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3B5c2hlbGwucHkKaW5kZXggNWRlYzY4ZS4uZTFlYWRlMSAxMDA3NTUKLS0tIGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weQorKysgYi9MaWIvaWRsZWxpYi9weXNoZWxsLnB5CkBAIC0xLDIxICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKLWltcG9ydCBnZXRvcHQKLWltcG9ydCBvcwotaW1wb3J0IG9zLnBhdGgKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB0aW1lCi1pbXBvcnQgdG9rZW5pemUKLWltcG9ydCBpbwotCi1pbXBvcnQgbGluZWNhY2hlCi1mcm9tIGNvZGUgaW1wb3J0IEludGVyYWN0aXZlSW50ZXJwcmV0ZXIKLWZyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uLCBzeXN0ZW0KLQogdHJ5OgogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgKgogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjMsMTcgKzcsNDIgQEAKICAgICAgICAgICAiWW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUay4gKioiLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQogICAgIHN5cy5leGl0KDEpCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAoraWYgVGtWZXJzaW9uIDwgOC41OgorICAgIHJvb3QgPSBUaygpICAjIG90aGVyd2lzZSBjcmVhdGUgcm9vdCBpbiBtYWluCisgICAgcm9vdC53aXRoZHJhdygpCisgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSWRsZSBDYW5ub3QgU3RhcnQiLAorICAgICAgICAgICAgIklkbGUgcmVxdWlyZXMgdGNsL3RrIDguNSssIG5vdCAkcy4iICUgVGtWZXJzaW9uLAorICAgICAgICAgICAgcGFyZW50PXJvb3QpCisgICAgc3lzLmV4aXQoMSkKIAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93LCBmaXh3b3JkYnJlYWtzCi1mcm9tIGlkbGVsaWIuRmlsZUxpc3QgaW1wb3J0IEZpbGVMaXN0Ci1mcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotZnJvbSBpZGxlbGliLk91dHB1dFdpbmRvdyBpbXBvcnQgT3V0cHV0V2luZG93Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgoraW1wb3J0IGdldG9wdAoraW1wb3J0IGlvCitpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25fdmVyc2lvbiwgc3lzdGVtCitpbXBvcnQgcmUKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHRva2VuaXplCitpbXBvcnQgd2FybmluZ3MKKworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXN0aW5nICAjIGJvb2wgdmFsdWUKK2Zyb20gaWRsZWxpYi5jb2xvcml6ZXIgaW1wb3J0IENvbG9yRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcl9yCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3csIGZpeHdvcmRicmVha3MKK2Zyb20gaWRsZWxpYi5maWxlbGlzdCBpbXBvcnQgRmlsZUxpc3QKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIub3V0d2luIGltcG9ydCBPdXRwdXRXaW5kb3cKIGZyb20gaWRsZWxpYiBpbXBvcnQgcnBjCi1mcm9tIGlkbGVsaWIgaW1wb3J0IERlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZURlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gaWRsZWxpYi5ydW4gaW1wb3J0IGlkbGVfZm9ybWF0d2FybmluZywgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCitmcm9tIGlkbGVsaWIudW5kbyBpbXBvcnQgVW5kb0RlbGVnYXRvcgogCiBIT1NUID0gJzEyNy4wLjAuMScgIyBweXRob24gZXhlY3V0aW9uIHNlcnZlciBvbiBsb2NhbGhvc3QgbG9vcGJhY2sKIFBPUlQgPSAwICAjIHNvbWVkYXkgcGFzcyBpbiBob3N0LCBwb3J0IGZvciByZW1vdGUgZGVidWcgY2FwYWJpbGl0eQpAQCAtNDMsMjAgKzUyLDYgQEAKICMgdGVtcG9yYXJpbHkgcmVkaXJlY3QgdGhlIHN0cmVhbSB0byB0aGUgc2hlbGwgd2luZG93IHRvIGRpc3BsYXkgd2FybmluZ3Mgd2hlbgogIyBjaGVja2luZyB1c2VyJ3MgY29kZS4KIHdhcm5pbmdfc3RyZWFtID0gc3lzLl9fc3RkZXJyX18gICMgTm9uZSwgYXQgbGVhc3Qgb24gV2luZG93cywgaWYgbm8gY29uc29sZS4KLWltcG9ydCB3YXJuaW5ncwotCi1kZWYgaWRsZV9mb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lPU5vbmUpOgotICAgICIiIkZvcm1hdCB3YXJuaW5ncyB0aGUgSURMRSB3YXkuIiIiCi0KLSAgICBzID0gIlxuV2FybmluZyAoZnJvbSB3YXJuaW5ncyBtb2R1bGUpOlxuIgotICAgIHMgKz0gJyAgRmlsZSBcIiVzXCIsIGxpbmUgJXNcbicgJSAoZmlsZW5hbWUsIGxpbmVubykKLSAgICBpZiBsaW5lIGlzIE5vbmU6Ci0gICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKQotICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICBpZiBsaW5lOgotICAgICAgICBzICs9ICIgICAgJXNcbiIgJSBsaW5lCi0gICAgcyArPSAiJXM6ICVzXG4iICUgKGNhdGVnb3J5Ll9fbmFtZV9fLCBtZXNzYWdlKQotICAgIHJldHVybiBzCiAKIGRlZiBpZGxlX3Nob3d3YXJuaW5nKAogICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgpAQCAtNDEwLDcgKzQwNSw3IEBACiAgICAgICAgICMgcnVuIGZyb20gdGhlIElETEUgc291cmNlIGRpcmVjdG9yeS4KICAgICAgICAgZGVsX2V4aXRmID0gaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ0dlbmVyYWwnLCAnZGVsZXRlLWV4aXRmdW5jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIHR5cGU9J2Jvb2wnKQotICAgICAgICBpZiBfX25hbWVfXyA9PSAnaWRsZWxpYi5QeVNoZWxsJzoKKyAgICAgICAgaWYgX19uYW1lX18gPT0gJ2lkbGVsaWIucHlzaGVsbCc6CiAgICAgICAgICAgICBjb21tYW5kID0gIl9faW1wb3J0X18oJ2lkbGVsaWIucnVuJykucnVuLm1haW4oJXIpIiAlIChkZWxfZXhpdGYsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29tbWFuZCA9ICJfX2ltcG9ydF9fKCdydW4nKS5tYWluKCVyKSIgJSAoZGVsX2V4aXRmLCkKQEAgLTQ2OCw3ICs0NjMsNyBAQAogICAgICAgICBpZiBkZWJ1ZzoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAjIE9ubHkgY2xvc2Ugc3VicHJvY2VzcyBkZWJ1Z2dlciwgZG9uJ3QgdW5yZWdpc3RlciBndWlfYWRhcCEKLSAgICAgICAgICAgICAgICBSZW1vdGVEZWJ1Z2dlci5jbG9zZV9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQorICAgICAgICAgICAgICAgIGRlYnVnZ2VyX3IuY2xvc2Vfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgS2lsbCBzdWJwcm9jZXNzLCBzcGF3biBhIG5ldyBvbmUsIGFjY2VwdCBjb25uZWN0aW9uLgpAQCAtNDk3LDcgKzQ5Miw3IEBACiAgICAgICAgICMgcmVzdGFydCBzdWJwcm9jZXNzIGRlYnVnZ2VyCiAgICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICAgIyBSZXN0YXJ0ZWQgZGVidWdnZXIgY29ubmVjdHMgdG8gY3VycmVudCBpbnN0YW5jZSBvZiBkZWJ1ZyBHVUkKLSAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLnJlc3RhcnRfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKKyAgICAgICAgICAgIGRlYnVnZ2VyX3IucmVzdGFydF9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQogICAgICAgICAgICAgIyByZWxvYWQgcmVtb3RlIGRlYnVnZ2VyIGJyZWFrcG9pbnRzIGZvciBhbGwgUHlTaGVsbEVkaXRXaW5kb3dzCiAgICAgICAgICAgICBkZWJ1Zy5sb2FkX2JyZWFrcG9pbnRzKCkKICAgICAgICAgc2VsZi5jb21waWxlLmNvbXBpbGVyLmZsYWdzID0gc2VsZi5vcmlnaW5hbF9jb21waWxlcl9mbGFncwpAQCAtNTc4LDcgKzU3Myw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi50a2NvbnNvbGUuZ2V0dmFyKCI8PHRvZ2dsZS1qaXQtc3RhY2stdmlld2VyPj4iKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZW1vdGVfc3RhY2tfdmlld2VyKCkKICAgICAgICAgICAgIGVsaWYgaG93ID09ICJFUlJPUiI6Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gIlB5U2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlcjogU3VicHJvY2VzcyBFUlJPUjpcbiIKKyAgICAgICAgICAgICAgICBlcnJtc2cgPSAicHlzaGVsbC5Nb2RpZmllZEludGVycHJldGVyOiBTdWJwcm9jZXNzIEVSUk9SOlxuIgogICAgICAgICAgICAgICAgIHByaW50KGVycm1zZywgd2hhdCwgZmlsZT1zeXMuX19zdGRlcnJfXykKICAgICAgICAgICAgICAgICBwcmludChlcnJtc2csIHdoYXQsIGZpbGU9Y29uc29sZSkKICAgICAgICAgICAgICMgd2UgcmVjZWl2ZWQgYSByZXNwb25zZSB0byB0aGUgY3VycmVudGx5IGFjdGl2ZSBzZXEgbnVtYmVyOgpAQCAtNjEzLDEzICs2MDgsMTMgQEAKICAgICAgICAgcmV0dXJuCiAKICAgICBkZWYgcmVtb3RlX3N0YWNrX3ZpZXdlcihzZWxmKToKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVPYmplY3RCcm93c2VyCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdvYmpfcgogICAgICAgICBvaWQgPSBzZWxmLnJwY2NsdC5yZW1vdGVxdWV1ZSgiZXhlYyIsICJzdGFja3ZpZXdlciIsICgiZmxpc3QiLCksIHt9KQogICAgICAgICBpZiBvaWQgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYudGtjb25zb2xlLnJvb3QuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaXRlbSA9IFJlbW90ZU9iamVjdEJyb3dzZXIuU3R1Yk9iamVjdFRyZWVJdGVtKHNlbGYucnBjY2x0LCBvaWQpCi0gICAgICAgIGZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBTY3JvbGxlZENhbnZhcywgVHJlZU5vZGUKKyAgICAgICAgaXRlbSA9IGRlYnVnb2JqX3IuU3R1Yk9iamVjdFRyZWVJdGVtKHNlbGYucnBjY2x0LCBvaWQpCisgICAgICAgIGZyb20gaWRsZWxpYi50cmVlIGltcG9ydCBTY3JvbGxlZENhbnZhcywgVHJlZU5vZGUKICAgICAgICAgdG9wID0gVG9wbGV2ZWwoc2VsZi50a2NvbnNvbGUucm9vdCkKICAgICAgICAgdGhlbWUgPSBpZGxlQ29uZi5DdXJyZW50VGhlbWUoKQogICAgICAgICBiYWNrZ3JvdW5kID0gaWRsZUNvbmYuR2V0SGlnaGxpZ2h0KHRoZW1lLCAnbm9ybWFsJylbJ2JhY2tncm91bmQnXQpAQCAtNjYyLDkgKzY1Nyw5IEBACiAgICAgICAgICMgYXQgdGhlIG1vbWVudCwgSW50ZXJhY3RpdmVJbnRlcnByZXRlciBleHBlY3RzIHN0cgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzb3VyY2UsIHN0cikKICAgICAgICAgI2lmIGlzaW5zdGFuY2Uoc291cmNlLCBzdHIpOgotICAgICAgICAjICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCisgICAgICAgICMgICAgZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKICAgICAgICAgIyAgICB0cnk6Ci0gICAgICAgICMgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICAjICAgICAgICBzb3VyY2UgPSBzb3VyY2UuZW5jb2RlKGlvbWVudS5lbmNvZGluZykKICAgICAgICAgIyAgICBleGNlcHQgVW5pY29kZUVycm9yOgogICAgICAgICAjICAgICAgICBzZWxmLnRrY29uc29sZS5yZXNldG91dHB1dCgpCiAgICAgICAgICMgICAgICAgIHNlbGYud3JpdGUoIlVuc3VwcG9ydGVkIGNoYXJhY3RlcnMgaW4gaW5wdXRcbiIpCkBAIC04NTAsNyArODQ1LDcgQEAKIAogCiAgICAgIyBOZXcgY2xhc3NlcwotICAgIGZyb20gaWRsZWxpYi5JZGxlSGlzdG9yeSBpbXBvcnQgSGlzdG9yeQorICAgIGZyb20gaWRsZWxpYi5oaXN0b3J5IGltcG9ydCBIaXN0b3J5CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSk6CiAgICAgICAgIGlmIHVzZV9zdWJwcm9jZXNzOgpAQCAtODg4LDExICs4ODMsMTEgQEAKICAgICAgICAgc2VsZi5zYXZlX3N0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgc2VsZi5zYXZlX3N0ZGVyciA9IHN5cy5zdGRlcnIKICAgICAgICAgc2VsZi5zYXZlX3N0ZGluID0gc3lzLnN0ZGluCi0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCi0gICAgICAgIHNlbGYuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZiwgInN0ZGluIiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZG91dCIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRlcnIiLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuY29uc29sZSA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgImNvbnNvbGUiLCBJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51CisgICAgICAgIHNlbGYuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZiwgInN0ZGluIiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZG91dCIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRlcnIiLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuY29uc29sZSA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgImNvbnNvbGUiLCBpb21lbnUuZW5jb2RpbmcpCiAgICAgICAgIGlmIG5vdCB1c2Vfc3VicHJvY2VzczoKICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLnN0ZG91dAogICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHNlbGYuc3RkZXJyCkBAIC05MDAsNyArODk1LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBwYWdlIGhlbHAoKSB0ZXh0IHRvIHNoZWxsLgogICAgICAgICAgICAgaW1wb3J0IHB5ZG9jICMgaW1wb3J0IG11c3QgYmUgZG9uZSBoZXJlIHRvIGNhcHR1cmUgaS9vIHJlYmluZGluZy4KLSAgICAgICAgICAgICMgWFhYIEtCSyAyN0RlYzA3IHVzZSBhIHRleHRWaWV3IHNvbWVkYXksIGJ1dCBtdXN0IHdvcmsgdy9vIHN1YnByb2MKKyAgICAgICAgICAgICMgWFhYIEtCSyAyN0RlYzA3IHVzZSBUZXh0Vmlld2VyIHNvbWVkYXksIGJ1dCBtdXN0IHdvcmsgdy9vIHN1YnByb2MKICAgICAgICAgICAgIHB5ZG9jLnBhZ2VyID0gcHlkb2MucGxhaW5wYWdlcgogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KQEAgLTk1NCw3ICs5NDksNyBAQAogICAgICAgICAgICAgc2VsZi5pbnRlcnAuc2V0ZGVidWdnZXIoTm9uZSkKICAgICAgICAgICAgIGRiLmNsb3NlKCkKICAgICAgICAgICAgIGlmIHNlbGYuaW50ZXJwLnJwY2NsdDoKLSAgICAgICAgICAgICAgICBSZW1vdGVEZWJ1Z2dlci5jbG9zZV9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0KQorICAgICAgICAgICAgICAgIGRlYnVnZ2VyX3IuY2xvc2VfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCkKICAgICAgICAgICAgIHNlbGYucmVzZXRvdXRwdXQoKQogICAgICAgICAgICAgc2VsZi5jb25zb2xlLndyaXRlKCJbREVCVUcgT0ZGXVxuIikKICAgICAgICAgICAgIHN5cy5wczEgPSAiPj4+ICIKQEAgLTk2MywxMCArOTU4LDEwIEBACiAKICAgICBkZWYgb3Blbl9kZWJ1Z2dlcihzZWxmKToKICAgICAgICAgaWYgc2VsZi5pbnRlcnAucnBjY2x0OgotICAgICAgICAgICAgZGJnX2d1aSA9IFJlbW90ZURlYnVnZ2VyLnN0YXJ0X3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQsCisgICAgICAgICAgICBkYmdfZ3VpID0gZGVidWdnZXJfci5zdGFydF9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGJnX2d1aSA9IERlYnVnZ2VyLkRlYnVnZ2VyKHNlbGYpCisgICAgICAgICAgICBkYmdfZ3VpID0gZGVidWdnZXIuRGVidWdnZXIoc2VsZikKICAgICAgICAgc2VsZi5pbnRlcnAuc2V0ZGVidWdnZXIoZGJnX2d1aSkKICAgICAgICAgZGJnX2d1aS5sb2FkX2JyZWFrcG9pbnRzKCkKICAgICAgICAgc3lzLnBzMSA9ICJbREVCVUcgT05dXG4+Pj4gIgpAQCAtMTI0MSw3ICsxMjM2LDcgQEAKICAgICAgICAgICAgICAgICAiKHN5cy5sYXN0X3RyYWNlYmFjayBpcyBub3QgZGVmaW5lZCkiLAogICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLnRleHQpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZnJvbSBpZGxlbGliLlN0YWNrVmlld2VyIGltcG9ydCBTdGFja0Jyb3dzZXIKKyAgICAgICAgZnJvbSBpZGxlbGliLnN0YWNrdmlld2VyIGltcG9ydCBTdGFja0Jyb3dzZXIKICAgICAgICAgU3RhY2tCcm93c2VyKHNlbGYucm9vdCwgc2VsZi5mbGlzdCkKIAogICAgIGRlZiB2aWV3X3Jlc3RhcnRfbWFyayhzZWxmLCBldmVudD1Ob25lKToKQEAgLTEzMDksOTIgKzEzMDQsNiBAQAogICAgICAgICAgICAgcmV0dXJuICdkaXNhYmxlZCcKICAgICAgICAgcmV0dXJuIHN1cGVyKCkucm1lbnVfY2hlY2tfcGFzdGUoKQogCi1jbGFzcyBQc2V1ZG9GaWxlKGlvLlRleHRJT0Jhc2UpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgc2VsZi5zaGVsbCA9IHNoZWxsCi0gICAgICAgIHNlbGYudGFncyA9IHRhZ3MKLSAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZwotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGVuY29kaW5nKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fZW5jb2RpbmcKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gJzwlcz4nICUgc2VsZi50YWdzCi0KLSAgICBkZWYgaXNhdHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0KLWNsYXNzIFBzZXVkb091dHB1dEZpbGUoUHNldWRvRmlsZSk6Ci0KLSAgICBkZWYgd3JpdGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgcyk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUgdG8gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiB0eXBlKHMpIGlzIG5vdCBzdHI6Ci0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBzdHIsIG5vdCAnICsgdHlwZShzKS5fX25hbWVfXykKLSAgICAgICAgICAgICMgU2VlIGlzc3VlICMxOTQ4MQotICAgICAgICAgICAgcyA9IHN0ci5fX3N0cl9fKHMpCi0gICAgICAgIHJldHVybiBzZWxmLnNoZWxsLndyaXRlKHMsIHNlbGYudGFncykKLQotCi1jbGFzcyBQc2V1ZG9JbnB1dEZpbGUoUHNldWRvRmlsZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBQc2V1ZG9GaWxlLl9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZykKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJwotCi0gICAgZGVmIHJlYWRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgc2l6ZSA9IC0xCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fbGluZV9idWZmZXIKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJwotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aGlsZSBsZW4ocmVzdWx0KSA8IHNpemU6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhawotICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCi0gICAgICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IHJlc3VsdFtzaXplOl0KLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6c2l6ZV0KLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgIHNpemUgPSAtMQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCi0gICAgICAgIGxpbmUgPSBzZWxmLl9saW5lX2J1ZmZlciBvciBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKLSAgICAgICAgaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICBzaXplID0gbGVuKGxpbmUpCi0gICAgICAgIGVvbCA9IGxpbmUuZmluZCgnXG4nLCAwLCBzaXplKQotICAgICAgICBpZiBlb2wgPj0gMDoKLSAgICAgICAgICAgIHNpemUgPSBlb2wgKyAxCi0gICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gbGluZVtzaXplOl0KLSAgICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCi0KLSAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuc2hlbGwuY2xvc2UoKQotCiAKIGRlZiBmaXhfeDExX3Bhc3RlKHJvb3QpOgogICAgICJNYWtlIHBhc3RlIHJlcGxhY2Ugc2VsZWN0aW9uIG9uIHgxMS4gIFNlZSBpc3N1ZSAjNTEyNC4iCkBAIC0xNTQwLDcgKzE0NDksMTAgQEAKICAgICBlbmFibGVfZWRpdCA9IGVuYWJsZV9lZGl0IG9yIGVkaXRfc3RhcnQKICAgICBlbmFibGVfc2hlbGwgPSBlbmFibGVfc2hlbGwgb3Igbm90IGVuYWJsZV9lZGl0CiAKLSAgICAjIHN0YXJ0IGVkaXRvciBhbmQvb3Igc2hlbGwgd2luZG93czoKKyAgICAjIFNldHVwIHJvb3QuICBEb24ndCBicmVhayB1c2VyIGNvZGUgcnVuIGluIElETEUgcHJvY2Vzcy4KKyAgICAjIERvbid0IGNoYW5nZSBlbnZpcm9ubWVudCB3aGVuIHRlc3RpbmcuCisgICAgaWYgdXNlX3N1YnByb2Nlc3MgYW5kIG5vdCB0ZXN0aW5nOgorICAgICAgICBOb0RlZmF1bHRSb290KCkKICAgICByb290ID0gVGsoY2xhc3NOYW1lPSJJZGxlIikKICAgICByb290LndpdGhkcmF3KCkKIApAQCAtMTU0OSwyNSArMTQ2MSwxOSBAQAogICAgIGlmIHN5c3RlbSgpID09ICdXaW5kb3dzJzoKICAgICAgICAgaWNvbmZpbGUgPSBvcy5wYXRoLmpvaW4oaWNvbmRpciwgJ2lkbGUuaWNvJykKICAgICAgICAgcm9vdC53bV9pY29uYml0bWFwKGRlZmF1bHQ9aWNvbmZpbGUpCi0gICAgZWxpZiBUa1ZlcnNpb24gPj0gOC41OgorICAgIGVsc2U6CiAgICAgICAgIGV4dCA9ICcucG5nJyBpZiBUa1ZlcnNpb24gPj0gOC42IGVsc2UgJy5naWYnCiAgICAgICAgIGljb25maWxlcyA9IFtvcy5wYXRoLmpvaW4oaWNvbmRpciwgJ2lkbGVfJWQlcycgJSAoc2l6ZSwgZXh0KSkKICAgICAgICAgICAgICAgICAgICAgIGZvciBzaXplIGluICgxNiwgMzIsIDQ4KV0KLSAgICAgICAgaWNvbnMgPSBbUGhvdG9JbWFnZShmaWxlPWljb25maWxlKSBmb3IgaWNvbmZpbGUgaW4gaWNvbmZpbGVzXQorICAgICAgICBpY29ucyA9IFtQaG90b0ltYWdlKG1hc3Rlcj1yb290LCBmaWxlPWljb25maWxlKQorICAgICAgICAgICAgICAgICBmb3IgaWNvbmZpbGUgaW4gaWNvbmZpbGVzXQogICAgICAgICByb290LndtX2ljb25waG90byhUcnVlLCAqaWNvbnMpCiAKKyAgICAjIHN0YXJ0IGVkaXRvciBhbmQvb3Igc2hlbGwgd2luZG93czoKICAgICBmaXh3b3JkYnJlYWtzKHJvb3QpCiAgICAgZml4X3gxMV9wYXN0ZShyb290KQogICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHJvb3QpCi0gICAgbWFjb3N4U3VwcG9ydC5zZXR1cEFwcChyb290LCBmbGlzdCkKLQotICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKLSAgICAgICAgIyBUaGVyZSBhcmUgc29tZSBzY3Jld2VkIHVwIDwyPiBjbGFzcyBiaW5kaW5ncyBmb3IgdGV4dAotICAgICAgICAjIHdpZGdldHMgZGVmaW5lZCBpbiBUayB3aGljaCB3ZSBuZWVkIHRvIGRvIGF3YXkgd2l0aC4KLSAgICAgICAgIyBTZWUgaXNzdWUgIzI0ODAxLgotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjI+JykKLSAgICAgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPEIyLU1vdGlvbj4nKQotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8PFBhc3RlU2VsZWN0aW9uPj4nKQorICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBmbGlzdCkKIAogICAgIGlmIGVuYWJsZV9lZGl0OgogICAgICAgICBpZiBub3QgKGNtZCBvciBzY3JpcHQpOgpAQCAtMTU4Miw3ICsxNDg4LDcgQEAKICAgICAgICAgc2hlbGwgPSBmbGlzdC5vcGVuX3NoZWxsKCkKICAgICAgICAgaWYgbm90IHNoZWxsOgogICAgICAgICAgICAgcmV0dXJuICMgY291bGRuJ3Qgb3BlbiBzaGVsbAotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCkgYW5kIGZsaXN0LmRpY3Q6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpIGFuZCBmbGlzdC5kaWN0OgogICAgICAgICAgICAgIyBPbiBPU1g6IHdoZW4gdGhlIHVzZXIgaGFzIGRvdWJsZS1jbGlja2VkIG9uIGEgZmlsZSB0aGF0IGNhdXNlcwogICAgICAgICAgICAgIyBJRExFIHRvIGJlIGxhdW5jaGVkIHRoZSBzaGVsbCB3aW5kb3cgd2lsbCBvcGVuIGp1c3QgaW4gZnJvbnQgb2YKICAgICAgICAgICAgICMgdGhlIGZpbGUgc2hlIHdhbnRzIHRvIHNlZS4gTG93ZXIgdGhlIGludGVycHJldGVyIHdpbmRvdyB3aGVuCkBAIC0xNjE2LDcgKzE1MjIsNyBAQAogICAgICAgICAjIGNoZWNrIGZvciBwcm9ibGVtYXRpYyBPUyBYIFRrIHZlcnNpb25zIGFuZCBwcmludCBhIHdhcm5pbmcKICAgICAgICAgIyBtZXNzYWdlIGluIHRoZSBJRExFIHNoZWxsIHdpbmRvdzsgdGhpcyBpcyBsZXNzIGludHJ1c2l2ZQogICAgICAgICAjIHRoYW4gYWx3YXlzIG9wZW5pbmcgYSBzZXBhcmF0ZSB3aW5kb3cuCi0gICAgICAgIHRrdmVyc2lvbndhcm5pbmcgPSBtYWNvc3hTdXBwb3J0LnRrVmVyc2lvbldhcm5pbmcocm9vdCkKKyAgICAgICAgdGt2ZXJzaW9ud2FybmluZyA9IG1hY29zeC50a1ZlcnNpb25XYXJuaW5nKHJvb3QpCiAgICAgICAgIGlmIHRrdmVyc2lvbndhcm5pbmc6CiAgICAgICAgICAgICBzaGVsbC5pbnRlcnAucnVuY29tbWFuZCgicHJpbnQoJyVzJykiICUgdGt2ZXJzaW9ud2FybmluZykKIApAQCAtMTYyNiw3ICsxNTMyLDcgQEAKICAgICBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHN5cy5tb2R1bGVzWydQeVNoZWxsJ10gPSBzeXMubW9kdWxlc1snX19tYWluX18nXQorICAgIHN5cy5tb2R1bGVzWydweXNoZWxsJ10gPSBzeXMubW9kdWxlc1snX19tYWluX18nXQogICAgIG1haW4oKQogCiBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKSAgIyBNYWtlIHN1cmUgdHVybmVkIG9mZjsgc2VlIGlzc3VlIDE4MDgxCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9xdWVyeS5weSBiL0xpYi9pZGxlbGliL3F1ZXJ5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMWYxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9xdWVyeS5weQpAQCAtMCwwICsxLDMwOCBAQAorIiIiCitEaWFsb2dzIHRoYXQgcXVlcnkgdXNlcnMgYW5kIHZlcmlmeSB0aGUgYW5zd2VyIGJlZm9yZSBhY2NlcHRpbmcuCitVc2UgdHRrIHdpZGdldHMsIGxpbWl0aW5nIHVzZSB0byB0Y2wvdGsgOC41KywgYXMgaW4gSURMRSAzLjYrLgorCitRdWVyeSBpcyB0aGUgZ2VuZXJpYyBiYXNlIGNsYXNzIGZvciBhIHBvcHVwIGRpYWxvZy4KK1RoZSB1c2VyIG11c3QgZWl0aGVyIGVudGVyIGEgdmFsaWQgYW5zd2VyIG9yIGNsb3NlIHRoZSBkaWFsb2cuCitFbnRyaWVzIGFyZSB2YWxpZGF0ZWQgd2hlbiA8UmV0dXJuPiBpcyBlbnRlcmVkIG9yIFtPa10gaXMgY2xpY2tlZC4KK0VudHJpZXMgYXJlIGlnbm9yZWQgd2hlbiBbQ2FuY2VsXSBvciBbWF0gYXJlIGNsaWNrZWQuCitUaGUgJ3JldHVybiB2YWx1ZScgaXMgLnJlc3VsdCBzZXQgdG8gZWl0aGVyIGEgdmFsaWQgYW5zd2VyIG9yIE5vbmUuCisKK1N1YmNsYXNzIFNlY3Rpb25OYW1lIGdldHMgYSBuYW1lIGZvciBhIG5ldyBjb25maWcgZmlsZSBzZWN0aW9uLgorQ29uZmlnZGlhbG9nIHVzZXMgaXQgZm9yIG5ldyBoaWdobGlnaHQgdGhlbWUgYW5kIGtleWJpbmRpbmcgc2V0IG5hbWVzLgorU3ViY2xhc3MgTW9kdWxlTmFtZSBnZXRzIGEgbmFtZSBmb3IgRmlsZSA9PiBPcGVuIE1vZHVsZS4KK1N1YmNsYXNzIEhlbHBTb3VyY2UgZ2V0cyBtZW51IGl0ZW0gYW5kIHBhdGggZm9yIGFkZGl0aW9ucyB0byBIZWxwIG1lbnUuCisiIiIKKyMgUXVlcnkgYW5kIFNlY3Rpb24gbmFtZSByZXN1bHQgZnJvbSBzcGxpdHRpbmcgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cKKyMgb2YgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgKHRlbXBvcmFyaWx5IGNvbmZpZ19zZWMucHkpIGludG8KKyMgZ2VuZXJpYyBhbmQgc3BlY2lmaWMgcGFydHMuICAzLjYgb25seSwgSnVseSAyMDE2LgorIyBNb2R1bGVOYW1lLmVudHJ5X29rIGNhbWUgZnJvbSBlZGl0b3IuRWRpdG9yV2luZG93LmxvYWRfbW9kdWxlLgorIyBIZWxwU291cmNlIHdhcyBleHRyYWN0ZWQgZnJvbSBjb25maWdIZWxwU291cmNlRWRpdC5weSAodGVtcG9yYXJpbHkKKyMgY29uZmlnX2hlbHAucHkpLCB3aXRoIGRhcndpbiBjb2RlIG1vdmVkIGZyb20gb2sgdG8gcGF0aF9vay4KKworaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IG9zCitmcm9tIHN5cyBpbXBvcnQgZXhlY3V0YWJsZSwgcGxhdGZvcm0gICMgUGxhdGZvcm0gaXMgc2V0IGZvciBvbmUgdGVzdC4KKworZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgU3RyaW5nVmFyLCBXLCBFLCBOLCBTCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBGcmFtZSwgQnV0dG9uLCBFbnRyeSwgTGFiZWwKK2Zyb20gdGtpbnRlciBpbXBvcnQgZmlsZWRpYWxvZworZnJvbSB0a2ludGVyLmZvbnQgaW1wb3J0IEZvbnQKKworY2xhc3MgUXVlcnkoVG9wbGV2ZWwpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGdldHRpbmcgdmVyaWZpZWQgYW5zd2VyIGZyb20gYSB1c2VyLgorCisgICAgRm9yIHRoaXMgYmFzZSBjbGFzcywgYWNjZXB0IGFueSBub24tYmxhbmsgc3RyaW5nLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCAqLCB0ZXh0MD0nJywgdXNlZF9uYW1lcz17fSwKKyAgICAgICAgICAgICAgICAgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICAiIiJDcmVhdGUgcG9wdXAsIGRvIG5vdCByZXR1cm4gdW50aWwgdGsgd2lkZ2V0IGRlc3Ryb3llZC4KKworICAgICAgICBBZGRpdGlvbmFsIHN1YmNsYXNzIGluaXQgbXVzdCBiZSBkb25lIGJlZm9yZSBjYWxsaW5nIHRoaXMKKyAgICAgICAgdW5sZXNzICBfdXRlc3Q9VHJ1ZSBpcyBwYXNzZWQgdG8gc3VwcHJlc3Mgd2FpdF93aW5kb3coKS4KKworICAgICAgICB0aXRsZSAtIHN0cmluZywgdGl0bGUgb2YgcG9wdXAgZGlhbG9nCisgICAgICAgIG1lc3NhZ2UgLSBzdHJpbmcsIGluZm9ybWF0aW9uYWwgbWVzc2FnZSB0byBkaXNwbGF5CisgICAgICAgIHRleHQwIC0gaW5pdGlhbCB2YWx1ZSBmb3IgZW50cnkKKyAgICAgICAgdXNlZF9uYW1lcyAtIG5hbWVzIGFscmVhZHkgaW4gdXNlCisgICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0CisgICAgICAgIF91dGVzdCAtIGJvb2wsIGxlYXZlIHdpbmRvdyBoaWRkZW4gYW5kIG5vdCBtb2RhbAorICAgICAgICAiIiIKKyAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQorICAgICAgICBzZWxmLndpdGhkcmF3KCkgICMgSGlkZSB3aGlsZSBjb25maWd1cmluZywgZXNwZWNpYWxseSBnZW9tZXRyeS4KKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKKyAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQorICAgICAgICBzZWxmLnRleHQwID0gdGV4dDAKKyAgICAgICAgc2VsZi51c2VkX25hbWVzID0gdXNlZF9uYW1lcworICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCisgICAgICAgIHNlbGYuZ3JhYl9zZXQoKQorICAgICAgICB3aW5kb3dpbmdzeXN0ZW0gPSBzZWxmLnRrLmNhbGwoJ3RrJywgJ3dpbmRvd2luZ3N5c3RlbScpCisgICAgICAgIGlmIHdpbmRvd2luZ3N5c3RlbSA9PSAnYXF1YSc6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi50ay5jYWxsKCc6OnRrOjp1bnN1cHBvcnRlZDo6TWFjV2luZG93U3R5bGUnLCAnc3R5bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl93LCAnbW92ZWFibGVNb2RhbCcsICcnKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYuYmluZCgiPENvbW1hbmQtLj4iLCBzZWxmLmNhbmNlbCkKKyAgICAgICAgc2VsZi5iaW5kKCc8S2V5LUVzY2FwZT4nLCBzZWxmLmNhbmNlbCkKKyAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLmJpbmQoJzxLZXktUmV0dXJuPicsIHNlbGYub2spCisgICAgICAgIHNlbGYuYmluZCgiPEtQX0VudGVyPiIsIHNlbGYub2spCisgICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GYWxzZSwgd2lkdGg9RmFsc2UpCisgICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQorICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKSAgIyBOZWVkZWQgaGVyZSBmb3Igd2luZm9fcmVxd2lkdGggYmVsb3cuCisgICAgICAgIHNlbGYuZ2VvbWV0cnkoICAjIENlbnRlciBkaWFsb2cgb3ZlciBwYXJlbnQgKG9yIGJlbG93IGh0ZXN0IGJveCkuCisgICAgICAgICAgICAgICAgIislZCslZCIgJSAoCisgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKKyAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCisgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKKyAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkKKyAgICAgICAgICAgICAgICApICkKKyAgICAgICAgaWYgbm90IF91dGVzdDoKKyAgICAgICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgICMgVW5oaWRlIG5vdyB0aGF0IGdlb21ldHJ5IHNldC4KKyAgICAgICAgICAgIHNlbGYud2FpdF93aW5kb3coKQorCisgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOiAgIyBDYWxsIGZyb20gb3ZlcnJpZGUsIGlmIGFueS4KKyAgICAgICAgIyBCaW5kIHRvIHNlbGYgd2lkZ2V0cyBuZWVkZWQgZm9yIGVudHJ5X29rIG9yIHVuaXR0ZXN0LgorICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWUgPSBGcmFtZShzZWxmLCBwYWRkaW5nPTEwKQorICAgICAgICBmcmFtZS5ncmlkKGNvbHVtbj0wLCByb3c9MCwgc3RpY2t5PSduZXdzJykKKyAgICAgICAgZnJhbWUuZ3JpZF9jb2x1bW5jb25maWd1cmUoMCwgd2VpZ2h0PTEpCisKKyAgICAgICAgZW50cnlsYWJlbCA9IExhYmVsKGZyYW1lLCBhbmNob3I9J3cnLCBqdXN0aWZ5PSdsZWZ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9c2VsZi5tZXNzYWdlKQorICAgICAgICBzZWxmLmVudHJ5dmFyID0gU3RyaW5nVmFyKHNlbGYsIHNlbGYudGV4dDApCisgICAgICAgIHNlbGYuZW50cnkgPSBFbnRyeShmcmFtZSwgd2lkdGg9MzAsIHRleHR2YXJpYWJsZT1zZWxmLmVudHJ5dmFyKQorICAgICAgICBzZWxmLmVudHJ5LmZvY3VzX3NldCgpCisgICAgICAgIHNlbGYuZXJyb3JfZm9udCA9IEZvbnQobmFtZT0nVGtDYXB0aW9uRm9udCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RzPVRydWUsIHJvb3Q9c2VsZi5wYXJlbnQpCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3IgPSBMYWJlbChmcmFtZSwgdGV4dD0nICcsIGZvcmVncm91bmQ9J3JlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250PXNlbGYuZXJyb3JfZm9udCkKKyAgICAgICAgc2VsZi5idXR0b25fb2sgPSBCdXR0b24oCisgICAgICAgICAgICAgICAgZnJhbWUsIHRleHQ9J09LJywgZGVmYXVsdD0nYWN0aXZlJywgY29tbWFuZD1zZWxmLm9rKQorICAgICAgICBzZWxmLmJ1dHRvbl9jYW5jZWwgPSBCdXR0b24oCisgICAgICAgICAgICAgICAgZnJhbWUsIHRleHQ9J0NhbmNlbCcsIGNvbW1hbmQ9c2VsZi5jYW5jZWwpCisKKyAgICAgICAgZW50cnlsYWJlbC5ncmlkKGNvbHVtbj0wLCByb3c9MCwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHN0aWNreT1XKQorICAgICAgICBzZWxmLmVudHJ5LmdyaWQoY29sdW1uPTAsIHJvdz0xLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgc3RpY2t5PVcrRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZHk9WzEwLDBdKQorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yLmdyaWQoY29sdW1uPTAsIHJvdz0yLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT1XK0UpCisgICAgICAgIHNlbGYuYnV0dG9uX29rLmdyaWQoY29sdW1uPTEsIHJvdz05OSwgcGFkeD01KQorICAgICAgICBzZWxmLmJ1dHRvbl9jYW5jZWwuZ3JpZChjb2x1bW49Miwgcm93PTk5LCBwYWR4PTUpCisKKyAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UsIHdpZGdldD1Ob25lKToKKyAgICAgICAgI3NlbGYuYmVsbChkaXNwbGF5b2Y9c2VsZikKKyAgICAgICAgKHdpZGdldCBvciBzZWxmLmVudHJ5X2Vycm9yKVsndGV4dCddID0gJ0VSUk9SOiAnICsgbWVzc2FnZQorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOiAgIyBFeGFtcGxlOiB1c3VhbGx5IHJlcGxhY2UuCisgICAgICAgICJSZXR1cm4gbm9uLWJsYW5rIGVudHJ5IG9yIE5vbmUuIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgZW50cnk6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignYmxhbmsgbGluZS4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGVudHJ5CisKKyAgICBkZWYgb2soc2VsZiwgZXZlbnQ9Tm9uZSk6ICAjIERvIG5vdCByZXBsYWNlLgorICAgICAgICAnJydJZiBlbnRyeSBpcyB2YWxpZCwgYmluZCBpdCB0byAncmVzdWx0JyBhbmQgZGVzdHJveSB0ayB3aWRnZXQuCisKKyAgICAgICAgT3RoZXJ3aXNlIGxlYXZlIGRpYWxvZyBvcGVuIGZvciB1c2VyIHRvIGNvcnJlY3QgZW50cnkgb3IgY2FuY2VsLgorICAgICAgICAnJycKKyAgICAgICAgZW50cnkgPSBzZWxmLmVudHJ5X29rKCkKKyAgICAgICAgaWYgZW50cnkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGVudHJ5CisgICAgICAgICAgICBzZWxmLmRlc3Ryb3koKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBbT2tdIG1vdmVzIGZvY3VzLiAgKDxSZXR1cm4+IGRvZXMgbm90LikgIE1vdmUgaXQgYmFjay4KKyAgICAgICAgICAgIHNlbGYuZW50cnkuZm9jdXNfc2V0KCkKKworICAgIGRlZiBjYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6ICAjIERvIG5vdCByZXBsYWNlLgorICAgICAgICAiU2V0IGRpYWxvZyByZXN1bHQgdG8gTm9uZSBhbmQgZGVzdHJveSB0ayB3aWRnZXQuIgorICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgc2VsZi5kZXN0cm95KCkKKworCitjbGFzcyBTZWN0aW9uTmFtZShRdWVyeSk6CisgICAgIkdldCBhIG5hbWUgZm9yIGEgY29uZmlnIGZpbGUgc2VjdGlvbiBuYW1lLiIKKyAgICAjIFVzZWQgaW4gQ29uZmlnRGlhbG9nLkdldE5ld0tleXNOYW1lLCAuR2V0TmV3VGhlbWVOYW1lICg4MzcpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcywKKyAgICAgICAgICAgICAgICAgKiwgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHVzZWRfbmFtZXM9dXNlZF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIHNlbnNpYmxlIENvbmZpZ1BhcnNlciBzZWN0aW9uIG5hbWUgb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gbmFtZSBzcGVjaWZpZWQuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgbGVuKG5hbWUpPjMwOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25hbWUgaXMgbG9uZ2VyIHRoYW4gMzAgY2hhcmFjdGVycy4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBuYW1lIGluIHNlbGYudXNlZF9uYW1lczoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCduYW1lIGlzIGFscmVhZHkgaW4gdXNlLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gbmFtZQorCisKK2NsYXNzIE1vZHVsZU5hbWUoUXVlcnkpOgorICAgICJHZXQgYSBtb2R1bGUgbmFtZSBmb3IgT3BlbiBNb2R1bGUgbWVudSBlbnRyeS4iCisgICAgIyBVc2VkIGluIG9wZW5fbW9kdWxlIChlZGl0b3IuRWRpdG9yV2luZG93IHVudGlsIG1vdmUgdG8gaW9iaW5kaW5nKS4KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB0ZXh0MCwKKyAgICAgICAgICAgICAgICAgKiwgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwPXRleHQwLAorICAgICAgICAgICAgICAgICAgICAgICBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIGVudGVyZWQgbW9kdWxlIG5hbWUgYXMgZmlsZSBwYXRoIG9yIE5vbmUuIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBuYW1lID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25vIG5hbWUgc3BlY2lmaWVkLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFhYWCBPdWdodCB0byBpbnNlcnQgY3VycmVudCBmaWxlJ3MgZGlyZWN0b3J5IGluIGZyb250IG9mIHBhdGguCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMobmFtZSkKKyAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbXBvcnRFcnJvcikgYXMgbXNnOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3Ioc3RyKG1zZykpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibW9kdWxlIG5vdCBmb3VuZCIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIpOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoIm5vdCBhIHNvdXJjZS1iYXNlZCBtb2R1bGUiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZV9wYXRoID0gc3BlYy5sb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJsb2FkZXIgZG9lcyBub3Qgc3VwcG9ydCBnZXRfZmlsZW5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGZpbGVfcGF0aAorCisKK2NsYXNzIEhlbHBTb3VyY2UoUXVlcnkpOgorICAgICJHZXQgbWVudSBuYW1lIGFuZCBoZWxwIHNvdXJjZSBmb3IgSGVscCBtZW51LiIKKyAgICAjIFVzZWQgaW4gQ29uZmlnRGlhbG9nLkhlbHBMaXN0SXRlbUFkZC9FZGl0LCAoOTQxLzkpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgKiwgbWVudWl0ZW09JycsIGZpbGVwYXRoPScnLAorICAgICAgICAgICAgICAgICB1c2VkX25hbWVzPXt9LCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgICIiIkdldCBtZW51IGVudHJ5IGFuZCB1cmwvbG9jYWwgZmlsZSBmb3IgQWRkaXRpb25hbCBIZWxwLgorCisgICAgICAgIFVzZXIgZW50ZXJzIGEgbmFtZSBmb3IgdGhlIEhlbHAgcmVzb3VyY2UgYW5kIGEgd2ViIHVybCBvciBmaWxlCisgICAgICAgIG5hbWUuIFRoZSB1c2VyIGNhbiBicm93c2UgZm9yIHRoZSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5maWxlcGF0aCA9IGZpbGVwYXRoCisgICAgICAgIG1lc3NhZ2UgPSAnTmFtZSBmb3IgaXRlbSBvbiBIZWxwIG1lbnU6JworICAgICAgICBzdXBlcigpLl9faW5pdF9fKAorICAgICAgICAgICAgICAgIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwPW1lbnVpdGVtLAorICAgICAgICAgICAgICAgIHVzZWRfbmFtZXM9dXNlZF9uYW1lcywgX2h0ZXN0PV9odGVzdCwgX3V0ZXN0PV91dGVzdCkKKworICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKKyAgICAgICAgc3VwZXIoKS5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIGZyYW1lID0gc2VsZi5mcmFtZQorICAgICAgICBwYXRobGFiZWwgPSBMYWJlbChmcmFtZSwgYW5jaG9yPSd3JywganVzdGlmeT0nbGVmdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9J0hlbHAgRmlsZSBQYXRoOiBFbnRlciBVUkwgb3IgYnJvd3NlIGZvciBmaWxlJykKKyAgICAgICAgc2VsZi5wYXRodmFyID0gU3RyaW5nVmFyKHNlbGYsIHNlbGYuZmlsZXBhdGgpCisgICAgICAgIHNlbGYucGF0aCA9IEVudHJ5KGZyYW1lLCB0ZXh0dmFyaWFibGU9c2VsZi5wYXRodmFyLCB3aWR0aD00MCkKKyAgICAgICAgYnJvd3NlID0gQnV0dG9uKGZyYW1lLCB0ZXh0PSdCcm93c2UnLCB3aWR0aD04LAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLmJyb3dzZV9maWxlKQorICAgICAgICBzZWxmLnBhdGhfZXJyb3IgPSBMYWJlbChmcmFtZSwgdGV4dD0nICcsIGZvcmVncm91bmQ9J3JlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ9c2VsZi5lcnJvcl9mb250KQorCisgICAgICAgIHBhdGhsYWJlbC5ncmlkKGNvbHVtbj0wLCByb3c9MTAsIGNvbHVtbnNwYW49MywgcGFkeD01LCBwYWR5PVsxMCwwXSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcpCisgICAgICAgIHNlbGYucGF0aC5ncmlkKGNvbHVtbj0wLCByb3c9MTEsIGNvbHVtbnNwYW49MiwgcGFkeD01LCBzdGlja3k9VytFLAorICAgICAgICAgICAgICAgICAgICAgICBwYWR5PVsxMCwwXSkKKyAgICAgICAgYnJvd3NlLmdyaWQoY29sdW1uPTIsIHJvdz0xMSwgcGFkeD01LCBzdGlja3k9VytTKQorICAgICAgICBzZWxmLnBhdGhfZXJyb3IuZ3JpZChjb2x1bW49MCwgcm93PTEyLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcrRSkKKworICAgIGRlZiBhc2tmaWxlbmFtZShzZWxmLCBmaWxldHlwZXMsIGluaXRkaXIsIGluaXRmaWxlKTogICMgaHRlc3QgIworICAgICAgICAjIEV4dHJhY3RlZCBmcm9tIGJyb3dzZV9maWxlIHNvIGNhbiBtb2NrIGZvciB1bml0dGVzdHMuCisgICAgICAgICMgQ2Fubm90IHVuaXR0ZXN0IGFzIGNhbm5vdCBzaW11bGF0ZSBidXR0b24gY2xpY2tzLgorICAgICAgICAjIFRlc3QgYnkgcnVubmluZyBodGVzdCwgc3VjaCBhcyBieSBydW5uaW5nIHRoaXMgZmlsZS4KKyAgICAgICAgcmV0dXJuIGZpbGVkaWFsb2cuT3BlbihwYXJlbnQ9c2VsZiwgZmlsZXR5cGVzPWZpbGV0eXBlcylcCisgICAgICAgICAgICAgICAuc2hvdyhpbml0aWFsZGlyPWluaXRkaXIsIGluaXRpYWxmaWxlPWluaXRmaWxlKQorCisgICAgZGVmIGJyb3dzZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxldHlwZXMgPSBbCisgICAgICAgICAgICAoIkhUTUwgRmlsZXMiLCAiKi5odG0gKi5odG1sIiwgIlRFWFQiKSwKKyAgICAgICAgICAgICgiUERGIEZpbGVzIiwgIioucGRmIiwgIlRFWFQiKSwKKyAgICAgICAgICAgICgiV2luZG93cyBIZWxwIEZpbGVzIiwgIiouY2htIiksCisgICAgICAgICAgICAoIlRleHQgRmlsZXMiLCAiKi50eHQiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJBbGwgRmlsZXMiLCAiKiIpXQorICAgICAgICBwYXRoID0gc2VsZi5wYXRodmFyLmdldCgpCisgICAgICAgIGlmIHBhdGg6CisgICAgICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYXNlID0gTm9uZQorICAgICAgICAgICAgaWYgcGxhdGZvcm1bOjNdID09ICd3aW4nOgorICAgICAgICAgICAgICAgIGRpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoZXhlY3V0YWJsZSksICdEb2MnKQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcik6CisgICAgICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCisgICAgICAgIGZpbGUgPSBzZWxmLmFza2ZpbGVuYW1lKGZpbGV0eXBlcywgZGlyLCBiYXNlKQorICAgICAgICBpZiBmaWxlOgorICAgICAgICAgICAgc2VsZi5wYXRodmFyLnNldChmaWxlKQorCisgICAgaXRlbV9vayA9IFNlY3Rpb25OYW1lLmVudHJ5X29rICAjIGxvY2FsaXplIGZvciB0ZXN0IG92ZXJyaWRlCisKKyAgICBkZWYgcGF0aF9vayhzZWxmKToKKyAgICAgICAgIlNpbXBsZSB2YWxpZGl0eSBjaGVjayBmb3IgbWVudSBmaWxlIHBhdGgiCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGguZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgcGF0aDogI25vIHBhdGggc3BlY2lmaWVkCisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gaGVscCBmaWxlIHBhdGggc3BlY2lmaWVkLicsIHNlbGYucGF0aF9lcnJvcikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgbm90IHBhdGguc3RhcnRzd2l0aCgoJ3d3dy4nLCAnaHR0cCcpKToKKyAgICAgICAgICAgIGlmIHBhdGhbOjVdID09ICdmaWxlOic6CisgICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhbNTpdCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ2hlbHAgZmlsZSBwYXRoIGRvZXMgbm90IGV4aXN0LicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzogICMgZm9yIE1hYyBTYWZhcmkKKyAgICAgICAgICAgICAgICBwYXRoID0gICJmaWxlOi8vIiArIHBhdGgKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKToKKyAgICAgICAgIlJldHVybiBhcHBhcmVudGx5IHZhbGlkIChuYW1lLCBwYXRoKSBvciBOb25lIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBzZWxmLnBhdGhfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLml0ZW1fb2soKQorICAgICAgICBwYXRoID0gc2VsZi5wYXRoX29rKCkKKyAgICAgICAgcmV0dXJuIE5vbmUgaWYgbmFtZSBpcyBOb25lIG9yIHBhdGggaXMgTm9uZSBlbHNlIChuYW1lLCBwYXRoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9xdWVyeScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCisgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCisgICAgcnVuKFF1ZXJ5LCBIZWxwU291cmNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weSBiL0xpYi9pZGxlbGliL3JlZGlyZWN0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQppbmRleCBiNjZiZTllLi5lYzY4MWRlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3JlZGlyZWN0b3IucHkKQEAgLTEwNCw3ICsxMDQsNyBAQAogCiAgICAgICAgIE5vdGUgdGhhdCBpZiBhIHJlZ2lzdGVyZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGUgb3BlcmF0aW9uIGlzIG5vdAogICAgICAgICBwYXNzZWQgdGhyb3VnaCB0byBUay4gIEFwcGx5IHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSBzZWxmLnJlZ2lzdGVyKCkKLSAgICAgICAgdG8gKmFyZ3MgdG8gYWNjb21wbGlzaCB0aGF0LiAgRm9yIGFuIGV4YW1wbGUsIHNlZSBDb2xvckRlbGVnYXRvci5weS4KKyAgICAgICAgdG8gKmFyZ3MgdG8gYWNjb21wbGlzaCB0aGF0LiAgRm9yIGFuIGV4YW1wbGUsIHNlZSBjb2xvcml6ZXIucHkuCiAKICAgICAgICAgJycnCiAgICAgICAgIG0gPSBzZWxmLl9vcGVyYXRpb25zLmdldChvcGVyYXRpb24pCkBAIC0xNTEsMTQgKzE1MSwxMyBAQAogCiAKIGRlZiBfd2lkZ2V0X3JlZGlyZWN0b3IocGFyZW50KTogICMgaHRlc3QgIwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLSAgICBpbXBvcnQgcmUKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0CiAKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgV2lkZ2V0UmVkaXJlY3RvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHRleHQgPSBUZXh0KHJvb3QpCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBXaWRnZXRSZWRpcmVjdG9yIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQorICAgIHRleHQgPSBUZXh0KHRvcCkKICAgICB0ZXh0LnBhY2soKQogICAgIHRleHQuZm9jdXNfc2V0KCkKICAgICByZWRpciA9IFdpZGdldFJlZGlyZWN0b3IodGV4dCkKQEAgLTE2NiwxMSArMTY1LDExIEBACiAgICAgICAgIHByaW50KCJpbnNlcnQiLCBhcmdzKQogICAgICAgICBvcmlnaW5hbF9pbnNlcnQoKmFyZ3MpCiAgICAgb3JpZ2luYWxfaW5zZXJ0ID0gcmVkaXIucmVnaXN0ZXIoImluc2VydCIsIG15X2luc2VydCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3dpZGdldHJlZGlyJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3JlZGlyZWN0b3InLAogICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3dpZGdldF9yZWRpcmVjdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVwbGFjZURpYWxvZy5weSBiL0xpYi9pZGxlbGliL3JlcGxhY2UucHkKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUmVwbGFjZURpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcmVwbGFjZS5weQppbmRleCBmMmVhMjJlLi5hYmQ5ZTU5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL3JlcGxhY2UucHkKQEAgLTMsMTggKzMsMTggQEAKIERlZmluZXMgdmFyaW91cyByZXBsYWNlIHJlbGF0ZWQgZnVuY3Rpb25zIGxpa2UgcmVwbGFjZSwgcmVwbGFjZSBhbGwsCiByZXBsYWNlK2ZpbmQuCiAiIiIKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZQotZnJvbSBpZGxlbGliLlNlYXJjaERpYWxvZ0Jhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKIGltcG9ydCByZQogCitmcm9tIHRraW50ZXIgaW1wb3J0IFN0cmluZ1ZhciwgVGNsRXJyb3IKKworZnJvbSBpZGxlbGliLnNlYXJjaGJhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lCiAKIGRlZiByZXBsYWNlKHRleHQpOgogICAgICIiIlJldHVybnMgYSBzaW5nbGV0b24gUmVwbGFjZURpYWxvZyBpbnN0YW5jZS5UaGUgc2luZ2xlIGRpYWxvZwogICAgICBzYXZlcyB1c2VyIGVudHJpZXMgYW5kIHByZWZlcmVuY2VzIGFjcm9zcyBpbnN0YW5jZXMuIiIiCiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX3JlcGxhY2VkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9yZXBsYWNlZGlhbG9nID0gUmVwbGFjZURpYWxvZyhyb290LCBlbmdpbmUpCiAgICAgZGlhbG9nID0gZW5naW5lLl9yZXBsYWNlZGlhbG9nCkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgcmVzID0gc2VsZi5lbmdpbmUuc2VhcmNoX3RleHQodGV4dCwgcHJvZykKICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRleHQudGFnX3JlbW92ZSgic2VsIiwgIjEuMCIsICJlbmQiKQogICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoImhpdCIsICIxLjAiLCAiZW5kIikKQEAgLTE0Miw3ICsxNDIsNyBAQAogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgIHJlcyA9IHNlbGYuZW5naW5lLnNlYXJjaF90ZXh0KHRleHQsIE5vbmUsIG9rKQogICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgbGluZSwgbSA9IHJlcwogICAgICAgICBpLCBqID0gbS5zcGFuKCkKQEAgLTE2NCw3ICsxNjQsNyBAQAogICAgICAgICAgICAgcG9zID0gTm9uZQogICAgICAgICBpZiBub3QgcG9zOgogICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gcG9zID0gdGV4dC5pbmRleCgiaW5zZXJ0IikKLSAgICAgICAgbGluZSwgY29sID0gU2VhcmNoRW5naW5lLmdldF9saW5lX2NvbChwb3MpCisgICAgICAgIGxpbmUsIGNvbCA9IHNlYXJjaGVuZ2luZS5nZXRfbGluZV9jb2wocG9zKQogICAgICAgICBjaGFycyA9IHRleHQuZ2V0KCIlZC4wIiAlIGxpbmUsICIlZC4wIiAlIChsaW5lKzEpKQogICAgICAgICBtID0gcHJvZy5tYXRjaChjaGFycywgY29sKQogICAgICAgICBpZiBub3QgcHJvZzoKQEAgLTIwNCwxMSArMjA0LDEzIEBACiAKIAogZGVmIF9yZXBsYWNlX2RpYWxvZyhwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgIiIiaHRlc3Qgd3JhcHBlciBmdW5jdGlvbiIiIgorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQsIEVORCwgU0VMCisgICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgQnV0dG9uCisKICAgICBib3ggPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgYm94LnRpdGxlKCJUZXN0IFJlcGxhY2VEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICBib3guZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKICAgICAjIG1vY2sgdW5kbyBkZWxlZ2F0b3IgbWV0aG9kcwogICAgIGRlZiB1bmRvX2Jsb2NrX3N0YXJ0KCk6CkBAIC0yMzQsNyArMjM2LDcgQEAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3JlcGxhY2VkaWFsb2cnLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVwbGFjZScsCiAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCiAKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3JwYy5weSBiL0xpYi9pZGxlbGliL3JwYy5weQppbmRleCA0ODEwNWYyLi44ZjU3ZWRiOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnBjLnB5CisrKyBiL0xpYi9pZGxlbGliL3JwYy5weQpAQCAtMjYsMjMgKzI2LDIxIEBACiBhY2NvbXBsaXNoZWQgaW4gSWRsZS4KIAogIiIiCi0KLWltcG9ydCBzeXMKLWltcG9ydCBvcworaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgY29weXJlZwogaW1wb3J0IGlvCi1pbXBvcnQgc29ja2V0CitpbXBvcnQgbWFyc2hhbAoraW1wb3J0IG9zCitpbXBvcnQgcGlja2xlCitpbXBvcnQgcXVldWUKIGltcG9ydCBzZWxlY3QKK2ltcG9ydCBzb2NrZXQKIGltcG9ydCBzb2NrZXRzZXJ2ZXIKIGltcG9ydCBzdHJ1Y3QKLWltcG9ydCBwaWNrbGUKK2ltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBxdWV1ZQogaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IGNvcHlyZWcKIGltcG9ydCB0eXBlcwotaW1wb3J0IG1hcnNoYWwKLWltcG9ydCBidWlsdGlucwotCiAKIGRlZiB1bnBpY2tsZV9jb2RlKG1zKToKICAgICBjbyA9IG1hcnNoYWwubG9hZHMobXMpCkBAIC02MCwxMCArNTgsMTIgQEAKICAgICBwLmR1bXAob2JqKQogICAgIHJldHVybiBmLmdldHZhbHVlKCkKIAorCiBjbGFzcyBDb2RlUGlja2xlcihwaWNrbGUuUGlja2xlcik6CiAgICAgZGlzcGF0Y2hfdGFibGUgPSB7dHlwZXMuQ29kZVR5cGU6IHBpY2tsZV9jb2RlfQogICAgIGRpc3BhdGNoX3RhYmxlLnVwZGF0ZShjb3B5cmVnLmRpc3BhdGNoX3RhYmxlKQogCisKIEJVRlNJWkUgPSA4KjEwMjQKIExPQ0FMSE9TVCA9ICcxMjcuMC4wLjEnCiAKQEAgLTQ4NywxNiArNDg3LDE5IEBACiAgICAgIyBUb2tlbiBtaXgtaW4gY2xhc3MKICAgICBwYXNzCiAKKwogZGVmIHJlbW90ZXJlZihvYmopOgogICAgIG9pZCA9IGlkKG9iaikKICAgICBvYmplY3R0YWJsZVtvaWRdID0gb2JqCiAgICAgcmV0dXJuIFJlbW90ZVByb3h5KG9pZCkKIAorCiBjbGFzcyBSZW1vdGVQcm94eShvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9pZCk6CiAgICAgICAgIHNlbGYub2lkID0gb2lkCiAKKwogY2xhc3MgUlBDSGFuZGxlcihzb2NrZXRzZXJ2ZXIuQmFzZVJlcXVlc3RIYW5kbGVyLCBTb2NrZXRJTyk6CiAKICAgICBkZWJ1Z2dpbmcgPSBGYWxzZQpAQCAtNTE0LDYgKzUxNyw3IEBACiAgICAgZGVmIGdldF9yZW1vdGVfcHJveHkoc2VsZiwgb2lkKToKICAgICAgICAgcmV0dXJuIFJQQ1Byb3h5KHNlbGYsIG9pZCkKIAorCiBjbGFzcyBSUENDbGllbnQoU29ja2V0SU8pOgogCiAgICAgZGVidWdnaW5nID0gRmFsc2UKQEAgLTUzOSw2ICs1NDMsNyBAQAogICAgIGRlZiBnZXRfcmVtb3RlX3Byb3h5KHNlbGYsIG9pZCk6CiAgICAgICAgIHJldHVybiBSUENQcm94eShzZWxmLCBvaWQpCiAKKwogY2xhc3MgUlBDUHJveHkob2JqZWN0KToKIAogICAgIF9fbWV0aG9kcyA9IE5vbmUKQEAgLTU4Nyw2ICs1OTIsNyBAQAogICAgICAgICBpZiBub3QgY2FsbGFibGUoYXR0cik6CiAgICAgICAgICAgICBhdHRyaWJ1dGVzW25hbWVdID0gMQogCisKIGNsYXNzIE1ldGhvZFByb3h5KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2lvLCBvaWQsIG5hbWUpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUnN0cmlwRXh0ZW5zaW9uLnB5IGIvTGliL2lkbGVsaWIvcnN0cmlwLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Sc3RyaXBFeHRlbnNpb24ucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3JzdHJpcC5weQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnVuLnB5IGIvTGliL2lkbGVsaWIvcnVuLnB5CmluZGV4IDI4Y2U0MjAuLmFmYTk3NDQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3J1bi5weQorKysgYi9MaWIvaWRsZWxpYi9ydW4ucHkKQEAgLTEsMzMgKzEsNDUgQEAKLWltcG9ydCBzeXMKK2ltcG9ydCBpbwogaW1wb3J0IGxpbmVjYWNoZQoraW1wb3J0IHF1ZXVlCitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCiBpbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgcXVldWUKLWltcG9ydCB0a2ludGVyCitpbXBvcnQgd2FybmluZ3MKIAotZnJvbSBpZGxlbGliIGltcG9ydCBDYWxsVGlwcwotZnJvbSBpZGxlbGliIGltcG9ydCBBdXRvQ29tcGxldGUKK2ltcG9ydCB0a2ludGVyICAjIFRjbCwgZGVsZXRpb25zLCBtZXNzYWdlYm94IGlmIHN0YXJ0dXAgZmFpbHMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVEZWJ1Z2dlcgotZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVPYmplY3RCcm93c2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFN0YWNrVmlld2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IHJwYwotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsCi1mcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZwotCitmcm9tIGlkbGVsaWIgaW1wb3J0IGF1dG9jb21wbGV0ZSAgIyBBdXRvQ29tcGxldGUsIGZldGNoX2VuY29kaW5ncworZnJvbSBpZGxlbGliIGltcG9ydCBjYWxsdGlwcyAgIyBDYWxsVGlwcworZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcl9yICAjIHN0YXJ0X2RlYnVnZ2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnb2JqX3IgICMgcmVtb3RlX29iamVjdF90cmVlX2l0ZW0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51ICAjIGVuY29kaW5nCitmcm9tIGlkbGVsaWIgaW1wb3J0IHJwYyAgIyBtdWx0aXBsZSBvYmplY3RzCitmcm9tIGlkbGVsaWIgaW1wb3J0IHN0YWNrdmlld2VyICAjIFN0YWNrVHJlZUl0ZW0KIGltcG9ydCBfX21haW5fXwogCiBmb3IgbW9kIGluICgnc2ltcGxlZGlhbG9nJywgJ21lc3NhZ2Vib3gnLCAnZm9udCcsCiAgICAgICAgICAgICAnZGlhbG9nJywgJ2ZpbGVkaWFsb2cnLCAnY29tbW9uZGlhbG9nJywKLSAgICAgICAgICAgICdjb2xvcmNob29zZXInKToKKyAgICAgICAgICAgICd0dGsnKToKICAgICBkZWxhdHRyKHRraW50ZXIsIG1vZCkKICAgICBkZWwgc3lzLm1vZHVsZXNbJ3RraW50ZXIuJyArIG1vZF0KIAogTE9DQUxIT1NUID0gJzEyNy4wLjAuMScKIAotaW1wb3J0IHdhcm5pbmdzCisKK2RlZiBpZGxlX2Zvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6CisgICAgIiIiRm9ybWF0IHdhcm5pbmdzIHRoZSBJRExFIHdheS4iIiIKKworICAgIHMgPSAiXG5XYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6XG4iCisgICAgcyArPSAnICBGaWxlIFwiJXNcIiwgbGluZSAlc1xuJyAlIChmaWxlbmFtZSwgbGluZW5vKQorICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgIGlmIGxpbmU6CisgICAgICAgIHMgKz0gIiAgICAlc1xuIiAlIGxpbmUKKyAgICBzICs9ICIlczogJXNcbiIgJSAoY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCisgICAgcmV0dXJuIHMKIAogZGVmIGlkbGVfc2hvd3dhcm5pbmdfc3VicHJvYygKICAgICAgICAgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKQEAgLTM4LDcgKzUwLDcgQEAKICAgICBpZiBmaWxlIGlzIE5vbmU6CiAgICAgICAgIGZpbGUgPSBzeXMuc3RkZXJyCiAgICAgdHJ5OgotICAgICAgICBmaWxlLndyaXRlKFB5U2hlbGwuaWRsZV9mb3JtYXR3YXJuaW5nKAorICAgICAgICBmaWxlLndyaXRlKGlkbGVfZm9ybWF0d2FybmluZygKICAgICAgICAgICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZSkpCiAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgIHBhc3MgIyB0aGUgZmlsZSAocHJvYmFibHkgc3RkZXJyKSBpcyBpbnZhbGlkIC0gdGhpcyB3YXJuaW5nIGdldHMgbG9zdC4KQEAgLTg4LDcgKzEwMCw3IEBACiAgICAgTXlIYW5kbGVyIG9iamVjdC4gIFRoYXQgcmVmZXJlbmNlIGlzIHNhdmVkIGFzIGF0dHJpYnV0ZSBycGNoYW5kbGVyIG9mIHRoZQogICAgIEV4ZWN1dGl2ZSBpbnN0YW5jZS4gIFRoZSBFeGVjdXRpdmUgbWV0aG9kcyBoYXZlIGFjY2VzcyB0byB0aGUgcmVmZXJlbmNlIGFuZAogICAgIGNhbiBwYXNzIGl0IG9uIHRvIGVudGl0aWVzIHRoYXQgdGhleSBjb21tYW5kCi0gICAgKGUuZy4gUmVtb3RlRGVidWdnZXIuRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoKSkuICBUaGUgbGF0dGVyLCBpbiB0dXJuLCBjYW4KKyAgICAoZS5nLiBkZWJ1Z2dlcl9yLkRlYnVnZ2VyLnN0YXJ0X2RlYnVnZ2VyKCkpLiAgVGhlIGxhdHRlciwgaW4gdHVybiwgY2FuCiAgICAgY2FsbCBNeUhhbmRsZXIoU29ja2V0SU8pIHJlZ2lzdGVyL3VucmVnaXN0ZXIgbWV0aG9kcyB2aWEgdGhlIHJlZmVyZW5jZSB0bwogICAgIHJlZ2lzdGVyIGFuZCB1bnJlZ2lzdGVyIHRoZW1zZWx2ZXMuCiAKQEAgLTIxMCw3ICsyMjIsNyBAQAogICAgICAgICAgICAgdGJlID0gdHJhY2ViYWNrLmV4dHJhY3RfdGIodGIpCiAgICAgICAgICAgICBwcmludCgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicsIGZpbGU9ZWZpbGUpCiAgICAgICAgICAgICBleGNsdWRlID0gKCJydW4ucHkiLCAicnBjLnB5IiwgInRocmVhZGluZy5weSIsICJxdWV1ZS5weSIsCi0gICAgICAgICAgICAgICAgICAgICAgICJSZW1vdGVEZWJ1Z2dlci5weSIsICJiZGIucHkiKQorICAgICAgICAgICAgICAgICAgICAgICAiZGVidWdnZXJfci5weSIsICJiZGIucHkiKQogICAgICAgICAgICAgY2xlYW51cF90cmFjZWJhY2sodGJlLCBleGNsdWRlKQogICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2xpc3QodGJlLCBmaWxlPWVmaWxlKQogICAgICAgICBsaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwLCBleGMpCkBAIC0yNjcsNiArMjc5LDcgQEAKICAgICBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKQogICAgIHN5cy5leGl0KDApCiAKKwogY2xhc3MgTXlSUENTZXJ2ZXIocnBjLlJQQ1NlcnZlcik6CiAKICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKQEAgLTI5Nyw2ICszMTAsOTYgQEAKICAgICAgICAgICAgIHF1aXR0aW5nID0gVHJ1ZQogICAgICAgICAgICAgdGhyZWFkLmludGVycnVwdF9tYWluKCkKIAorCisjIFBzZXVkb2ZpbGVzIGZvciBzaGVsbC1yZW1vdGUgY29tbXVuaWNhdGlvbiAoYWxzbyB1c2VkIGluIHB5c2hlbGwpCisKK2NsYXNzIFBzZXVkb0ZpbGUoaW8uVGV4dElPQmFzZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICBzZWxmLnNoZWxsID0gc2hlbGwKKyAgICAgICAgc2VsZi50YWdzID0gdGFncworICAgICAgICBzZWxmLl9lbmNvZGluZyA9IGVuY29kaW5nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZW5jb2Rpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9lbmNvZGluZworCisgICAgQHByb3BlcnR5CisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAnPCVzPicgJSBzZWxmLnRhZ3MKKworICAgIGRlZiBpc2F0dHkoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKworY2xhc3MgUHNldWRvT3V0cHV0RmlsZShQc2V1ZG9GaWxlKToKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBzKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHR5cGUocykgaXMgbm90IHN0cjoKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIHN0ciwgbm90ICcgKyB0eXBlKHMpLl9fbmFtZV9fKQorICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzE5NDgxCisgICAgICAgICAgICBzID0gc3RyLl9fc3RyX18ocykKKyAgICAgICAgcmV0dXJuIHNlbGYuc2hlbGwud3JpdGUocywgc2VsZi50YWdzKQorCisKK2NsYXNzIFBzZXVkb0lucHV0RmlsZShQc2V1ZG9GaWxlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgIFBzZXVkb0ZpbGUuX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nKQorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQorICAgICAgICByZXN1bHQgPSBzZWxmLl9saW5lX2J1ZmZlcgorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdoaWxlIGxlbihyZXN1bHQpIDwgc2l6ZToKKyAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKKyAgICAgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gcmVzdWx0W3NpemU6XQorICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzpzaXplXQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2l6ZSA9IC0xCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKKyAgICAgICAgbGluZSA9IHNlbGYuX2xpbmVfYnVmZmVyIG9yIHNlbGYuc2hlbGwucmVhZGxpbmUoKQorICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHNpemUgPSBsZW4obGluZSkKKyAgICAgICAgZW9sID0gbGluZS5maW5kKCdcbicsIDAsIHNpemUpCisgICAgICAgIGlmIGVvbCA+PSAwOgorICAgICAgICAgICAgc2l6ZSA9IGVvbCArIDEKKyAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSBsaW5lW3NpemU6XQorICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5zaGVsbC5jbG9zZSgpCisKKwogY2xhc3MgTXlIYW5kbGVyKHJwYy5SUENIYW5kbGVyKToKIAogICAgIGRlZiBoYW5kbGUoc2VsZik6CkBAIC0zMDQsMTIgKzQwNywxMiBAQAogICAgICAgICBleGVjdXRpdmUgPSBFeGVjdXRpdmUoc2VsZikKICAgICAgICAgc2VsZi5yZWdpc3RlcigiZXhlYyIsIGV4ZWN1dGl2ZSkKICAgICAgICAgc2VsZi5jb25zb2xlID0gc2VsZi5nZXRfcmVtb3RlX3Byb3h5KCJjb25zb2xlIikKLSAgICAgICAgc3lzLnN0ZGluID0gUHlTaGVsbC5Qc2V1ZG9JbnB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkaW4iLAotICAgICAgICAgICAgICAgIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc3lzLnN0ZG91dCA9IFB5U2hlbGwuUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRvdXQiLAotICAgICAgICAgICAgICAgIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc3lzLnN0ZGVyciA9IFB5U2hlbGwuUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRlcnIiLAotICAgICAgICAgICAgICAgIElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZGluID0gUHNldWRvSW5wdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGluIiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRvdXQgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZG91dCIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzeXMuc3RkZXJyID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRlcnIiLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKIAogICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKICAgICAgICAgIyBwYWdlIGhlbHAoKSB0ZXh0IHRvIHNoZWxsLgpAQCAtMzQ1LDggKzQ0OCw4IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJwY2hhbmRsZXIpOgogICAgICAgICBzZWxmLnJwY2hhbmRsZXIgPSBycGNoYW5kbGVyCiAgICAgICAgIHNlbGYubG9jYWxzID0gX19tYWluX18uX19kaWN0X18KLSAgICAgICAgc2VsZi5jYWxsdGlwID0gQ2FsbFRpcHMuQ2FsbFRpcHMoKQotICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZSA9IEF1dG9Db21wbGV0ZS5BdXRvQ29tcGxldGUoKQorICAgICAgICBzZWxmLmNhbGx0aXAgPSBjYWxsdGlwcy5DYWxsVGlwcygpCisgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRlID0gYXV0b2NvbXBsZXRlLkF1dG9Db21wbGV0ZSgpCiAKICAgICBkZWYgcnVuY29kZShzZWxmLCBjb2RlKToKICAgICAgICAgZ2xvYmFsIGludGVycnVwdGFibGUKQEAgLTM3OCw3ICs0ODEsNyBAQAogICAgICAgICAgICAgdGhyZWFkLmludGVycnVwdF9tYWluKCkKIAogICAgIGRlZiBzdGFydF90aGVfZGVidWdnZXIoc2VsZiwgZ3VpX2FkYXBfb2lkKToKLSAgICAgICAgcmV0dXJuIFJlbW90ZURlYnVnZ2VyLnN0YXJ0X2RlYnVnZ2VyKHNlbGYucnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQorICAgICAgICByZXR1cm4gZGVidWdnZXJfci5zdGFydF9kZWJ1Z2dlcihzZWxmLnJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKIAogICAgIGRlZiBzdG9wX3RoZV9kZWJ1Z2dlcihzZWxmLCBpZGJfYWRhcF9vaWQpOgogICAgICAgICAiVW5yZWdpc3RlciB0aGUgSWRiIEFkYXB0ZXIuICBMaW5rIG9iamVjdHMgYW5kIElkYiB0aGVuIHN1YmplY3QgdG8gR0MiCkBAIC00MDIsNyArNTA1LDcgQEAKICAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAogICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwCiAgICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsCi0gICAgICAgIGl0ZW0gPSBTdGFja1ZpZXdlci5TdGFja1RyZWVJdGVtKGZsaXN0LCB0YikKLSAgICAgICAgcmV0dXJuIFJlbW90ZU9iamVjdEJyb3dzZXIucmVtb3RlX29iamVjdF90cmVlX2l0ZW0oaXRlbSkKKyAgICAgICAgaXRlbSA9IHN0YWNrdmlld2VyLlN0YWNrVHJlZUl0ZW0oZmxpc3QsIHRiKQorICAgICAgICByZXR1cm4gZGVidWdvYmpfci5yZW1vdGVfb2JqZWN0X3RyZWVfaXRlbShpdGVtKQogCiBjYXB0dXJlX3dhcm5pbmdzKEZhbHNlKSAgIyBNYWtlIHN1cmUgdHVybmVkIG9mZjsgc2VlIGlzc3VlIDE4MDgxCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3J1bnNjcmlwdC5weQppbmRleCA1Y2I4MThkLi43OWQ4NmFkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bnNjcmlwdC5weQpAQCAtMjAsMTEgKzIwLDEyIEBACiBpbXBvcnQgb3MKIGltcG9ydCB0YWJuYW5ueQogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0CitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbAogCiBpbmRlbnRfbWVzc2FnZSA9ICIiIkVycm9yOiBJbmNvbnNpc3RlbnQgaW5kZW50YXRpb24gZGV0ZWN0ZWQhCiAKQEAgLTQ2LDEyICs0NywxMiBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW4pOgogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCi0gICAgICAgICMgUHJvdmlkZSBpbnN0YW5jZSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBieSBEZWJ1Z2dlcgorICAgICAgICAjIFByb3ZpZGUgaW5zdGFuY2UgdmFyaWFibGVzIHJlZmVyZW5jZWQgYnkgZGVidWdnZXIKICAgICAgICAgIyBYWFggVGhpcyBzaG91bGQgYmUgZG9uZSBkaWZmZXJlbnRseQogICAgICAgICBzZWxmLmZsaXN0ID0gc2VsZi5lZGl0d2luLmZsaXN0CiAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuZWRpdHdpbi5yb290CiAKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQ29jb2FUaygpOgogICAgICAgICAgICAgc2VsZi5lZGl0d2luLnRleHRfZnJhbWUuYmluZCgnPDxydW4tbW9kdWxlLWV2ZW50LTI+PicsIHNlbGYuX3J1bl9tb2R1bGVfZXZlbnQpCiAKICAgICBkZWYgY2hlY2tfbW9kdWxlX2V2ZW50KHNlbGYsIGV2ZW50KToKQEAgLTExMiw3ICsxMTMsNyBAQAogICAgICAgICAgICAgc2hlbGwuc2V0X3dhcm5pbmdfc3RyZWFtKHNhdmVkX3N0cmVhbSkKIAogICAgIGRlZiBydW5fbW9kdWxlX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQ29jb2FUaygpOgogICAgICAgICAgICAgIyBUay1Db2NvYSBpbiBNYWNPU1ggaXMgYnJva2VuIHVudGlsIGF0IGxlYXN0CiAgICAgICAgICAgICAjIFRrIDguNS45LCBhbmQgd2l0aG91dCB0aGlzIHJhdGhlcgogICAgICAgICAgICAgIyBjcnVkZSB3b3JrYXJvdW5kIElETEUgd291bGQgaGFuZyB3aGVuIGEgdXNlcgpAQCAtMTQyLDcgKzE0Myw3IEBACiAgICAgICAgIGlmIG5vdCBzZWxmLnRhYm5hbm55KGZpbGVuYW1lKToKICAgICAgICAgICAgIHJldHVybiAnYnJlYWsnCiAgICAgICAgIGludGVycCA9IHNlbGYuc2hlbGwuaW50ZXJwCi0gICAgICAgIGlmIFB5U2hlbGwudXNlX3N1YnByb2Nlc3M6CisgICAgICAgIGlmIHB5c2hlbGwudXNlX3N1YnByb2Nlc3M6CiAgICAgICAgICAgICBpbnRlcnAucmVzdGFydF9zdWJwcm9jZXNzKHdpdGhfY3dkPUZhbHNlLCBmaWxlbmFtZT0KICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZWRpdHdpbi5fZmlsZW5hbWVfdG9fdW5pY29kZShmaWxlbmFtZSkpCiAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCkBAIC0xNjEsNyArMTYyLDcgQEAKICAgICAgICAgaW50ZXJwLnByZXBlbmRfc3lzcGF0aChmaWxlbmFtZSkKICAgICAgICAgIyBYWFggS0JLIDAzSnVsMDQgV2hlbiBydW4gdy9vIHN1YnByb2Nlc3MsIHJ1bnRpbWUgd2FybmluZ3Mgc3RpbGwKICAgICAgICAgIyAgICAgICAgIGdvIHRvIF9fc3RkZXJyX18uICBXaXRoIHN1YnByb2Nlc3MsIHRoZXkgZ28gdG8gdGhlIHNoZWxsLgotICAgICAgICAjICAgICAgICAgTmVlZCB0byBjaGFuZ2Ugc3RyZWFtcyBpbiBQeVNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXIuCisgICAgICAgICMgICAgICAgICBOZWVkIHRvIGNoYW5nZSBzdHJlYW1zIGluIHB5c2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlci4KICAgICAgICAgaW50ZXJwLnJ1bmNvZGUoY29kZSkKICAgICAgICAgcmV0dXJuICdicmVhaycKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5IGIvTGliL2lkbGVsaWIvc2Nyb2xsZWRsaXN0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1Njcm9sbGVkTGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2Nyb2xsZWRsaXN0LnB5CmluZGV4IDUzNTc2YjUuLmNjMDhjMjYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1Njcm9sbGVkTGlzdC5weQorKysgYi9MaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKQEAgLTEsNSArMSw4IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCisKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4CisKIAogY2xhc3MgU2Nyb2xsZWRMaXN0OgogCkBAIC0yMyw3ICsyNiw3IEBACiAgICAgICAgICMgQmluZCBldmVudHMgdG8gdGhlIGxpc3QgYm94CiAgICAgICAgIGxpc3Rib3guYmluZCgiPEJ1dHRvblJlbGVhc2UtMT4iLCBzZWxmLmNsaWNrX2V2ZW50KQogICAgICAgICBsaXN0Ym94LmJpbmQoIjxEb3VibGUtQnV0dG9uUmVsZWFzZS0xPiIsIHNlbGYuZG91YmxlX2NsaWNrX2V2ZW50KQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgbGlzdGJveC5iaW5kKCI8QnV0dG9uUHJlc3MtMj4iLCBzZWxmLnBvcHVwX2V2ZW50KQogICAgICAgICAgICAgbGlzdGJveC5iaW5kKCI8Q29udHJvbC1CdXR0b24tMT4iLCBzZWxmLnBvcHVwX2V2ZW50KQogICAgICAgICBlbHNlOgpAQCAtMTI0LDIyICsxMjcsMjAgQEAKICAgICAgICAgcGFzcwogCiAKLWRlZiBfc2Nyb2xsZWRfbGlzdChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBTY3JvbGxlZExpc3QiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKK2RlZiBfc2Nyb2xsZWRfbGlzdChwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCsyMDAsIHkgKyAxNzUpKQogICAgIGNsYXNzIE15U2Nyb2xsZWRMaXN0KFNjcm9sbGVkTGlzdCk6CiAgICAgICAgIGRlZiBmaWxsX21lbnUoc2VsZik6IHNlbGYubWVudS5hZGRfY29tbWFuZChsYWJlbD0icmlnaHQgY2xpY2siKQogICAgICAgICBkZWYgb25fc2VsZWN0KHNlbGYsIGluZGV4KTogcHJpbnQoInNlbGVjdCIsIHNlbGYuZ2V0KGluZGV4KSkKICAgICAgICAgZGVmIG9uX2RvdWJsZShzZWxmLCBpbmRleCk6IHByaW50KCJkb3VibGUiLCBzZWxmLmdldChpbmRleCkpCiAKLSAgICBzY3JvbGxlZF9saXN0ID0gTXlTY3JvbGxlZExpc3Qocm9vdCkKKyAgICBzY3JvbGxlZF9saXN0ID0gTXlTY3JvbGxlZExpc3QodG9wKQogICAgIGZvciBpIGluIHJhbmdlKDMwKToKICAgICAgICAgc2Nyb2xsZWRfbGlzdC5hcHBlbmQoIkl0ZW0gJTAyZCIgJSBpKQogCi0gICAgcm9vdC5tYWlubG9vcCgpCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIyBBdCB0aGUgbW9tZW50LCB0ZXN0X3Njcm9sbGVkbGlzdCBtZXJlbHkgY3JlYXRlcyBpbnN0YW5jZSwgbGlrZSBodGVzdC4KICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3Njcm9sbGVkX2xpc3QpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9zZWFyY2gucHkKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zZWFyY2gucHkKaW5kZXggNzY1ZDUzZi4uNGI5MDY1OSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaC5weQpAQCAtMSwxMiArMSwxMiBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIgaW1wb3J0IFRjbEVycm9yCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lCi1mcm9tIGlkbGVsaWIuU2VhcmNoRGlhbG9nQmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKK2Zyb20gaWRsZWxpYi5zZWFyY2hiYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCiAKIGRlZiBfc2V0dXAodGV4dCk6CiAgICAgIkNyZWF0ZSBvciBmaW5kIHRoZSBzaW5nbGV0b24gU2VhcmNoRGlhbG9nIGluc3RhbmNlLiIKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfc2VhcmNoZGlhbG9nIik6CiAgICAgICAgIGVuZ2luZS5fc2VhcmNoZGlhbG9nID0gU2VhcmNoRGlhbG9nKHJvb3QsIGVuZ2luZSkKICAgICByZXR1cm4gZW5naW5lLl9zZWFyY2hkaWFsb2cKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAiSGFuZGxlIHRoZSBlZGl0b3IgZWRpdCBtZW51IGl0ZW0gYW5kIGNvcnJlc3BvbmRpbmcgZXZlbnQuIgogICAgIHJldHVybiBfc2V0dXAodGV4dCkuZmluZF9zZWxlY3Rpb24odGV4dCkKIAorCiBjbGFzcyBTZWFyY2hEaWFsb2coU2VhcmNoRGlhbG9nQmFzZSk6CiAKICAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6CkBAIC01MSw3ICs1Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZmlyc3QgPSB0ZXh0LmluZGV4KCJzZWwuZmlyc3QiKQogICAgICAgICAgICAgICAgIHNlbGxhc3QgPSB0ZXh0LmluZGV4KCJzZWwubGFzdCIpCiAgICAgICAgICAgICAgICAgaWYgc2VsZmlyc3QgPT0gZmlyc3QgYW5kIHNlbGxhc3QgPT0gbGFzdDoKLSAgICAgICAgICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBleGNlcHQgVGNsRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwpAQCAtNjEsNyArNjIsNyBAQAogICAgICAgICAgICAgdGV4dC5zZWUoImluc2VydCIpCiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBmaW5kX3NlbGVjdGlvbihzZWxmLCB0ZXh0KToKQEAgLTcyLDI2ICs3MywzMCBAQAogCiAKIGRlZiBfc2VhcmNoX2RpYWxvZyhwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgJycnRGlzcGxheSBzZWFyY2ggdGVzdCBib3guJycnCisgICAgIkRpc3BsYXkgc2VhcmNoIHRlc3QgYm94LiIKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0CisgICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgQnV0dG9uCisKICAgICBib3ggPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgYm94LnRpdGxlKCJUZXN0IFNlYXJjaERpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKICAgICB0ZXh0ID0gVGV4dChib3gsIGluYWN0aXZlc2VsZWN0YmFja2dyb3VuZD0nZ3JheScpCiAgICAgdGV4dC5wYWNrKCkKICAgICB0ZXh0Lmluc2VydCgiaW5zZXJ0IiwiVGhpcyBpcyBhIHNhbXBsZSBzdHJpbmcuXG4iKjUpCiAKICAgICBkZWYgc2hvd19maW5kKCk6Ci0gICAgICAgIHRleHQudGFnX2FkZChTRUwsICIxLjAiLCBFTkQpCisgICAgICAgIHRleHQudGFnX2FkZCgnc2VsJywgJzEuMCcsICdlbmQnKQogICAgICAgICBfc2V0dXAodGV4dCkub3Blbih0ZXh0KQotICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoU0VMLCAiMS4wIiwgRU5EKQorICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoJ3NlbCcsICcxLjAnLCAnZW5kJykKIAogICAgIGJ1dHRvbiA9IEJ1dHRvbihib3gsIHRleHQ9IlNlYXJjaCAoc2VsZWN0aW9uIGlnbm9yZWQpIiwgY29tbWFuZD1zaG93X2ZpbmQpCiAgICAgYnV0dG9uLnBhY2soKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoZGlhbG9nJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaCcsCiAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfc2VhcmNoX2RpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkgYi9MaWIvaWRsZWxpYi9zZWFyY2hiYXNlLnB5CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKaW5kZXggNWZhODRlMi4uNWY4MTc4NSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQorKysgYi9MaWIvaWRsZWxpYi9zZWFyY2hiYXNlLnB5CkBAIC0xLDcgKzEsOCBAQAogJycnRGVmaW5lIFNlYXJjaERpYWxvZ0Jhc2UgdXNlZCBieSBTZWFyY2gsIFJlcGxhY2UsIGFuZCBHcmVwIGRpYWxvZ3MuJycnCiAKLWZyb20gdGtpbnRlciBpbXBvcnQgKFRvcGxldmVsLCBGcmFtZSwgRW50cnksIExhYmVsLCBCdXR0b24sCi0gICAgICAgICAgICAgICAgICAgICBDaGVja2J1dHRvbiwgUmFkaW9idXR0b24pCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBGcmFtZQorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgRW50cnksIExhYmVsLCBCdXR0b24sIENoZWNrYnV0dG9uLCBSYWRpb2J1dHRvbgorCiAKIGNsYXNzIFNlYXJjaERpYWxvZ0Jhc2U6CiAgICAgJycnQ3JlYXRlIG1vc3Qgb2YgYSAzIG9yIDQgcm93LCAzIGNvbHVtbiBzZWFyY2ggZGlhbG9nLgpAQCAtNzksNiArODAsNyBAQAogICAgICAgICB0b3Aud21fdGl0bGUoc2VsZi50aXRsZSkKICAgICAgICAgdG9wLndtX2ljb25uYW1lKHNlbGYuaWNvbikKICAgICAgICAgc2VsZi50b3AgPSB0b3AKKyAgICAgICAgc2VsZi5iZWxsID0gdG9wLmJlbGwKIAogICAgICAgICBzZWxmLnJvdyA9IDAKICAgICAgICAgc2VsZi50b3AuZ3JpZF9jb2x1bW5jb25maWd1cmUoMCwgcGFkPTIsIHdlaWdodD0wKQpAQCAtMTI1LDcgKzEyNyw3IEBACiAgICAgZGVmIGNyZWF0ZV9vcHRpb25fYnV0dG9ucyhzZWxmKToKICAgICAgICAgJycnUmV0dXJuIChmaWxsZWQgZnJhbWUsIG9wdGlvbnMpIGZvciB0ZXN0aW5nLgogCi0gICAgICAgIE9wdGlvbnMgaXMgYSBsaXN0IG9mIFNlYXJjaEVuZ2luZSBib29sZWFudmFyLCBsYWJlbCBwYWlycy4KKyAgICAgICAgT3B0aW9ucyBpcyBhIGxpc3Qgb2Ygc2VhcmNoZW5naW5lIGJvb2xlYW52YXIsIGxhYmVsIHBhaXJzLgogICAgICAgICBBIGdyaWRkZWQgZnJhbWUgZnJvbSBtYWtlX2ZyYW1lIGlzIGZpbGxlZCB3aXRoIGEgQ2hlY2tidXR0b24KICAgICAgICAgZm9yIGVhY2ggcGFpciwgYm91bmQgdG8gdGhlIHZhciwgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBsYWJlbC4KICAgICAgICAgJycnCkBAIC0xMzcsMTAgKzEzOSw4IEBACiAgICAgICAgIGlmIHNlbGYubmVlZHdyYXBidXR0b246CiAgICAgICAgICAgICBvcHRpb25zLmFwcGVuZCgoZW5naW5lLndyYXB2YXIsICJXcmFwIGFyb3VuZCIpKQogICAgICAgICBmb3IgdmFyLCBsYWJlbCBpbiBvcHRpb25zOgotICAgICAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oZnJhbWUsIGFuY2hvcj0idyIsIHZhcmlhYmxlPXZhciwgdGV4dD1sYWJlbCkKKyAgICAgICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKGZyYW1lLCB2YXJpYWJsZT12YXIsIHRleHQ9bGFiZWwpCiAgICAgICAgICAgICBidG4ucGFjayhzaWRlPSJsZWZ0IiwgZmlsbD0iYm90aCIpCi0gICAgICAgICAgICBpZiB2YXIuZ2V0KCk6Ci0gICAgICAgICAgICAgICAgYnRuLnNlbGVjdCgpCiAgICAgICAgIHJldHVybiBmcmFtZSwgb3B0aW9ucwogCiAgICAgZGVmIGNyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgpAQCAtMTUzLDExICsxNTMsOCBAQAogICAgICAgICB2YXIgPSBzZWxmLmVuZ2luZS5iYWNrdmFyCiAgICAgICAgIG90aGVycyA9IFsoMSwgJ1VwJyksICgwLCAnRG93bicpXQogICAgICAgICBmb3IgdmFsLCBsYWJlbCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICBidG4gPSBSYWRpb2J1dHRvbihmcmFtZSwgYW5jaG9yPSJ3IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlPXZhciwgdmFsdWU9dmFsLCB0ZXh0PWxhYmVsKQorICAgICAgICAgICAgYnRuID0gUmFkaW9idXR0b24oZnJhbWUsIHZhcmlhYmxlPXZhciwgdmFsdWU9dmFsLCB0ZXh0PWxhYmVsKQogICAgICAgICAgICAgYnRuLnBhY2soc2lkZT0ibGVmdCIsIGZpbGw9ImJvdGgiKQotICAgICAgICAgICAgaWYgdmFyLmdldCgpID09IHZhbDoKLSAgICAgICAgICAgICAgICBidG4uc2VsZWN0KCkKICAgICAgICAgcmV0dXJuIGZyYW1lLCBvdGhlcnMKIAogICAgIGRlZiBtYWtlX2J1dHRvbihzZWxmLCBsYWJlbCwgY29tbWFuZCwgaXNkZWY9MCk6CkBAIC0xNzgsNyArMTc1LDI2IEBACiAgICAgICAgIGIgPSBzZWxmLm1ha2VfYnV0dG9uKCJjbG9zZSIsIHNlbGYuY2xvc2UpCiAgICAgICAgIGIubG93ZXIoKQogCisKK2NsYXNzIF9zZWFyY2hiYXNlKFNlYXJjaERpYWxvZ0Jhc2UpOiAgIyBodGVzdCAjCisgICAgIkNyZWF0ZSBhdXRvLW9wZW5pbmcgZGlhbG9nIHdpdGggbm8gdGV4dCBjb25uZWN0aW9uLiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICBpbXBvcnQgcmUKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKKworICAgICAgICBzZWxmLnJvb3QgPSBwYXJlbnQKKyAgICAgICAgc2VsZi5lbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHBhcmVudCkKKyAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIHByaW50KHBhcmVudC5nZW9tZXRyeSgpKQorICAgICAgICB3aWR0aCxoZWlnaHQsIHgseSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQorICAgICAgICBzZWxmLnRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgNDAsIHkgKyAxNzUpKQorCisgICAgZGVmIGRlZmF1bHRfY29tbWFuZChzZWxmLCBkdW1teSk6IHBhc3MKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKAotICAgICAgICAnaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hkaWFsb2diYXNlJywgdmVyYm9zaXR5PTIpCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hiYXNlJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oX3NlYXJjaGJhc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkgYi9MaWIvaWRsZWxpYi9zZWFyY2hlbmdpbmUucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRW5naW5lLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zZWFyY2hlbmdpbmUucHkKaW5kZXggMzc4ODNiZi4uMjUzZjFiMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2VhcmNoRW5naW5lLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQpAQCAtMSw1ICsxLDYgQEAKICcnJ0RlZmluZSBTZWFyY2hFbmdpbmUgZm9yIHNlYXJjaCBkaWFsb2dzLicnJwogaW1wb3J0IHJlCisKIGZyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyLCBUY2xFcnJvcgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIApAQCAtMTQsNiArMTUsNyBAQAogICAgICAgICAjIFRoaXMgY3JlYXRlcyBhIGN5Y2xlIHRoYXQgcGVyc2lzdHMgdW50aWwgcm9vdCBpcyBkZWxldGVkLgogICAgIHJldHVybiByb290Ll9zZWFyY2hlbmdpbmUKIAorCiBjbGFzcyBTZWFyY2hFbmdpbmU6CiAgICAgIiIiSGFuZGxlcyBzZWFyY2hpbmcgYSB0ZXh0IHdpZGdldCBmb3IgRmluZCwgUmVwbGFjZSwgYW5kIEdyZXAuIiIiCiAKQEAgLTU3LDcgKzU5LDcgQEAKIAogICAgIGRlZiBzZXRjb29rZWRwYXQoc2VsZiwgcGF0KToKICAgICAgICAgIlNldCBwYXR0ZXJuIGFmdGVyIGVzY2FwaW5nIGlmIHJlLiIKLSAgICAgICAgIyBjYWxsZWQgb25seSBpbiBTZWFyY2hEaWFsb2cucHk6IDY2CisgICAgICAgICMgY2FsbGVkIG9ubHkgaW4gc2VhcmNoLnB5OiA2NgogICAgICAgICBpZiBzZWxmLmlzcmUoKToKICAgICAgICAgICAgIHBhdCA9IHJlLmVzY2FwZShwYXQpCiAgICAgICAgIHNlbGYuc2V0cGF0KHBhdCkKQEAgLTE4Niw2ICsxODgsNyBAQAogICAgICAgICAgICAgY29sID0gbGVuKGNoYXJzKSAtIDEKICAgICAgICAgcmV0dXJuIE5vbmUKIAorCiBkZWYgc2VhcmNoX3JldmVyc2UocHJvZywgY2hhcnMsIGNvbCk6CiAgICAgJycnU2VhcmNoIGJhY2t3YXJkcyBhbmQgcmV0dXJuIGFuIHJlIG1hdGNoIG9iamVjdCBvciBOb25lLgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TdGFja1ZpZXdlci5weSBiL0xpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zdGFja3ZpZXdlci5weQppbmRleCBjY2M3NTVjLi4wNjk4ZGVmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TdGFja1ZpZXdlci5weQorKysgYi9MaWIvaWRsZWxpYi9zdGFja3ZpZXdlci5weQpAQCAtMSwxMiArMSwxMiBAQAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgb3MKIGltcG9ydCByZQoraW1wb3J0IHN5cworCiBpbXBvcnQgdGtpbnRlciBhcyB0awogCi1mcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcwotZnJvbSBpZGxlbGliLk9iamVjdEJyb3dzZXIgaW1wb3J0IE9iamVjdFRyZWVJdGVtLCBtYWtlX29iamVjdHRyZWVpdGVtCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Citmcm9tIGlkbGVsaWIuZGVidWdvYmogaW1wb3J0IE9iamVjdFRyZWVJdGVtLCBtYWtlX29iamVjdHRyZWVpdGVtCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcwogCiBkZWYgU3RhY2tCcm93c2VyKHJvb3QsIGZsaXN0PU5vbmUsIHRiPU5vbmUsIHRvcD1Ob25lKToKICAgICBpZiB0b3AgaXMgTm9uZToKQEAgLTE3LDYgKzE3LDcgQEAKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUuZXhwYW5kKCkKIAorCiBjbGFzcyBTdGFja1RyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCB0Yj1Ob25lKToKQEAgLTU1LDYgKzU2LDcgQEAKICAgICAgICAgICAgIHN1Ymxpc3QuYXBwZW5kKGl0ZW0pCiAgICAgICAgIHJldHVybiBzdWJsaXN0CiAKKwogY2xhc3MgRnJhbWVUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5mbywgZmxpc3QpOgpAQCAtOTYsNiArOTgsNyBAQAogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxpc3QuZ290b2ZpbGVsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCiAKKwogY2xhc3MgVmFyaWFibGVzVHJlZUl0ZW0oT2JqZWN0VHJlZUl0ZW0pOgogCiAgICAgZGVmIEdldFRleHQoc2VsZik6CkBAIC0xMjAsMTUgKzEyMywxNCBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAotICAgIGRlZiBrZXlzKHNlbGYpOiAgIyB1bnVzZWQsIGxlZnQgZm9yIHBvc3NpYmxlIDNyZCBwYXJ0eSB1c2UKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZi5vYmplY3Qua2V5cygpKQogCi1kZWYgX3N0YWNrX3ZpZXdlcihwYXJlbnQpOgotICAgIHJvb3QgPSB0ay5UaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBTdGFja1ZpZXdlciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHJvb3QpCitkZWYgX3N0YWNrX3ZpZXdlcihwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorICAgIHRvcCA9IHRrLlRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgU3RhY2tWaWV3ZXIiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCArIDUwLCB5ICsgMTc1KSkKKyAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdCh0b3ApCiAgICAgdHJ5OiAjIHRvIG9idGFpbiBhIHRyYWNlYmFjayBvYmplY3QKICAgICAgICAgaW50ZW50aW9uYWxfbmFtZV9lcnJvcgogICAgIGV4Y2VwdCBOYW1lRXJyb3I6CkBAIC0xMzksNyArMTQxLDcgQEAKICAgICBzeXMubGFzdF92YWx1ZSA9IGV4Y192YWx1ZQogICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IGV4Y190YgogCi0gICAgU3RhY2tCcm93c2VyKHJvb3QsIGZsaXN0PWZsaXN0LCB0b3A9cm9vdCwgdGI9ZXhjX3RiKQorICAgIFN0YWNrQnJvd3Nlcih0b3AsIGZsaXN0PWZsaXN0LCB0b3A9dG9wLCB0Yj1leGNfdGIpCiAKICAgICAjIHJlc3RvcmUgc3lzIHRvIG9yaWdpbmFsIHN0YXRlCiAgICAgZGVsIHN5cy5sYXN0X3R5cGUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3N0YXR1c2Jhci5weSBiL0xpYi9pZGxlbGliL3N0YXR1c2Jhci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjE4NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5CkBAIC0wLDAgKzEsNDYgQEAKK2Zyb20gdGtpbnRlciBpbXBvcnQgRnJhbWUsIExhYmVsCisKKworY2xhc3MgTXVsdGlTdGF0dXNCYXIoRnJhbWUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3RlciwgKiprdyk6CisgICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlciwgKiprdykKKyAgICAgICAgc2VsZi5sYWJlbHMgPSB7fQorCisgICAgZGVmIHNldF9sYWJlbChzZWxmLCBuYW1lLCB0ZXh0PScnLCBzaWRlPSdsZWZ0Jywgd2lkdGg9MCk6CisgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYubGFiZWxzOgorICAgICAgICAgICAgbGFiZWwgPSBMYWJlbChzZWxmLCBib3JkZXJ3aWR0aD0wLCBhbmNob3I9J3cnKQorICAgICAgICAgICAgbGFiZWwucGFjayhzaWRlPXNpZGUsIHBhZHk9MCwgcGFkeD00KQorICAgICAgICAgICAgc2VsZi5sYWJlbHNbbmFtZV0gPSBsYWJlbAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbGFiZWwgPSBzZWxmLmxhYmVsc1tuYW1lXQorICAgICAgICBpZiB3aWR0aCAhPSAwOgorICAgICAgICAgICAgbGFiZWwuY29uZmlnKHdpZHRoPXdpZHRoKQorICAgICAgICBsYWJlbC5jb25maWcodGV4dD10ZXh0KQorCisKK2RlZiBfbXVsdGlzdGF0dXNfYmFyKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBGcmFtZSwgVGV4dCwgQnV0dG9uCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSh4LCB5ICsgMTc1KSkKKyAgICB0b3AudGl0bGUoIlRlc3QgbXVsdGlzdGF0dXMgYmFyIikKKyAgICBmcmFtZSA9IEZyYW1lKHRvcCkKKyAgICB0ZXh0ID0gVGV4dChmcmFtZSwgaGVpZ2h0PTUsIHdpZHRoPTQwKQorICAgIHRleHQucGFjaygpCisgICAgbXNiID0gTXVsdGlTdGF0dXNCYXIoZnJhbWUpCisgICAgbXNiLnNldF9sYWJlbCgib25lIiwgImhlbGxvIikKKyAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAid29ybGQiKQorICAgIG1zYi5wYWNrKHNpZGU9J2JvdHRvbScsIGZpbGw9J3gnKQorCisgICAgZGVmIGNoYW5nZSgpOgorICAgICAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiZm9vIikKKyAgICAgICAgbXNiLnNldF9sYWJlbCgidHdvIiwgImJhciIpCisKKyAgICBidXR0b24gPSBCdXR0b24odG9wLCB0ZXh0PSJVcGRhdGUgc3RhdHVzIiwgY29tbWFuZD1jaGFuZ2UpCisgICAgYnV0dG9uLnBhY2soc2lkZT0nYm90dG9tJykKKyAgICBmcmFtZS5wYWNrKCkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oX211bHRpc3RhdHVzX2JhcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5IGIvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkKaW5kZXggOTY1ZjlmOC4uNDE4NmZhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkKKysrIGIvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkKQEAgLTI4NSw2ICsyODUsNyBAQAogICAgICAgICAgICAgIyBwbGFjZWQgaGlkZSBpdAogICAgICAgICAgICAgc2VsZi50YWJfc2V0Lmxvd2VyKCkKIAorCiBjbGFzcyBUYWJiZWRQYWdlU2V0KEZyYW1lKToKICAgICAiIiJBIFRraW50ZXIgdGFiYmVkLXBhbmUgd2lkZ2V0LgogCkBAIC0zMDIsNiArMzAzLDcgQEAKICAgICByZW1vdmVfcGFnZSgpIG1ldGhvZHMuCiAKICAgICAiIiIKKwogICAgIGNsYXNzIFBhZ2Uob2JqZWN0KToKICAgICAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgVGFiYmVkUGFnZVNldCdzIHBhZ2VzLgogCkBAIC00NjcsMzEgKzQ2OSwyOSBAQAogCiAgICAgICAgIHNlbGYuX3RhYl9zZXQuc2V0X3NlbGVjdGVkX3RhYihwYWdlX25hbWUpCiAKLWRlZiBfdGFiYmVkX3BhZ2VzKHBhcmVudCk6Ci0gICAgIyB0ZXN0IGRpYWxvZwotICAgIHJvb3Q9VGsoKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTc1KSkKLSAgICByb290LnRpdGxlKCJUZXN0IHRhYmJlZCBwYWdlcyIpCi0gICAgdGFiUGFnZT1UYWJiZWRQYWdlU2V0KHJvb3QsIHBhZ2VfbmFtZXM9WydGb29iYXInLCdCYXonXSwgbl9yb3dzPTAsCisKK2RlZiBfdGFiYmVkX3BhZ2VzKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3A9VG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdG9wLnRpdGxlKCJUZXN0IHRhYmJlZCBwYWdlcyIpCisgICAgdGFiUGFnZT1UYWJiZWRQYWdlU2V0KHRvcCwgcGFnZV9uYW1lcz1bJ0Zvb2JhcicsJ0JheiddLCBuX3Jvd3M9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYW5kX3RhYnM9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICB0YWJQYWdlLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snRm9vYmFyJ10uZnJhbWUsIHRleHQ9J0ZvbycsIHBhZHk9MjApLnBhY2soKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0Zvb2JhciddLmZyYW1lLCB0ZXh0PSdCYXInLCBwYWR5PTIwKS5wYWNrKCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydCYXonXS5mcmFtZSwgdGV4dD0nQmF6JykucGFjaygpCi0gICAgZW50cnlQZ05hbWU9RW50cnkocm9vdCkKLSAgICBidXR0b25BZGQ9QnV0dG9uKHJvb3QsIHRleHQ9J0FkZCBQYWdlJywKKyAgICBlbnRyeVBnTmFtZT1FbnRyeSh0b3ApCisgICAgYnV0dG9uQWRkPUJ1dHRvbih0b3AsIHRleHQ9J0FkZCBQYWdlJywKICAgICAgICAgICAgIGNvbW1hbmQ9bGFtYmRhOnRhYlBhZ2UuYWRkX3BhZ2UoZW50cnlQZ05hbWUuZ2V0KCkpKQotICAgIGJ1dHRvblJlbW92ZT1CdXR0b24ocm9vdCwgdGV4dD0nUmVtb3ZlIFBhZ2UnLAorICAgIGJ1dHRvblJlbW92ZT1CdXR0b24odG9wLCB0ZXh0PSdSZW1vdmUgUGFnZScsCiAgICAgICAgICAgICBjb21tYW5kPWxhbWJkYTp0YWJQYWdlLnJlbW92ZV9wYWdlKGVudHJ5UGdOYW1lLmdldCgpKSkKLSAgICBsYWJlbFBnTmFtZT1MYWJlbChyb290LCB0ZXh0PSduYW1lIG9mIHBhZ2UgdG8gYWRkL3JlbW92ZTonKQorICAgIGxhYmVsUGdOYW1lPUxhYmVsKHRvcCwgdGV4dD0nbmFtZSBvZiBwYWdlIHRvIGFkZC9yZW1vdmU6JykKICAgICBidXR0b25BZGQucGFjayhwYWR4PTUsIHBhZHk9NSkKICAgICBidXR0b25SZW1vdmUucGFjayhwYWR4PTUsIHBhZHk9NSkKICAgICBsYWJlbFBnTmFtZS5wYWNrKHBhZHg9NSkKICAgICBlbnRyeVBnTmFtZS5wYWNrKHBhZHg9NSkKLSAgICByb290Lm1haW5sb29wKCkKLQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvdGV4dFZpZXcucHkgYi9MaWIvaWRsZWxpYi90ZXh0dmlldy5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi90ZXh0Vmlldy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdGV4dHZpZXcucHkKaW5kZXggMTJhYzMxOS4uYWRlZTMyNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvdGV4dFZpZXcucHkKKysrIGIvTGliL2lkbGVsaWIvdGV4dHZpZXcucHkKQEAgLTEsMTQgKzEsMTQgQEAKICIiIlNpbXBsZSB0ZXh0IGJyb3dzZXIgZm9yIElETEUKIAogIiIiCi0KIGZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorZnJvbSB0a2ludGVyLm1lc3NhZ2Vib3ggaW1wb3J0IHNob3dlcnJvcgorCiAKIGNsYXNzIFRleHRWaWV3ZXIoVG9wbGV2ZWwpOgotICAgICIiIkEgc2ltcGxlIHRleHQgdmlld2VyIGRpYWxvZyBmb3IgSURMRQorICAgICJBIHNpbXBsZSB0ZXh0IHZpZXdlciBkaWFsb2cgZm9yIElETEUuIgogCi0gICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIHRleHQsIG1vZGFsPVRydWUsIF9odGVzdD1GYWxzZSk6CiAgICAgICAgICIiIlNob3cgdGhlIGdpdmVuIHRleHQgaW4gYSBzY3JvbGxhYmxlIHdpbmRvdyB3aXRoIGEgJ2Nsb3NlJyBidXR0b24KIApAQCAtMjAsMTEgKzIwLDExIEBACiAgICAgICAgICIiIgogICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCiAgICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgICMgcGxhY2UgZGlhbG9nIGJlbG93IHBhcmVudCBpZiBydW5uaW5nIGh0ZXN0CisgICAgICAgICMgUGxhY2UgZGlhbG9nIGJlbG93IHBhcmVudCBpZiBydW5uaW5nIGh0ZXN0LgogICAgICAgICBzZWxmLmdlb21ldHJ5KCI9JWR4JWQrJWQrJWQiICUgKDc1MCwgNTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKyAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsgKDEwIGlmIG5vdCBfaHRlc3QgZWxzZSAxMDApKSkKLSAgICAgICAgI2VsZ3VhdmFzIC0gY29uZmlnIHBsYWNlaG9sZGVycyB0aWwgY29uZmlnIHN0dWZmIGNvbXBsZXRlZAorICAgICAgICAjIFRPRE86IGdldCBmZy9iZyBmcm9tIHRoZW1lLgogICAgICAgICBzZWxmLmJnID0gJyNmZmZmZmYnCiAgICAgICAgIHNlbGYuZmcgPSAnIzAwMDAwMCcKIApAQCAtMzMsOSArMzMsOSBAQAogICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5PaykKICAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICAgc2VsZi50ZXh0Vmlldy5mb2N1c19zZXQoKQotICAgICAgICAja2V5IGJpbmRpbmdzIGZvciB0aGlzIGRpYWxvZwotICAgICAgICBzZWxmLmJpbmQoJzxSZXR1cm4+JyxzZWxmLk9rKSAjZGlzbWlzcyBkaWFsb2cKLSAgICAgICAgc2VsZi5iaW5kKCc8RXNjYXBlPicsc2VsZi5PaykgI2Rpc21pc3MgZGlhbG9nCisgICAgICAgICMgQmluZCBrZXlzIGZvciBjbG9zaW5nIHRoaXMgZGlhbG9nLgorICAgICAgICBzZWxmLmJpbmQoJzxSZXR1cm4+JyxzZWxmLk9rKQorICAgICAgICBzZWxmLmJpbmQoJzxFc2NhcGU+JyxzZWxmLk9rKQogICAgICAgICBzZWxmLnRleHRWaWV3Lmluc2VydCgwLjAsIHRleHQpCiAgICAgICAgIHNlbGYudGV4dFZpZXcuY29uZmlnKHN0YXRlPURJU0FCTEVEKQogCkBAIC01MCw3ICs1MCw3IEBACiAgICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdDbG9zZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLk9rLCB0YWtlZm9jdXM9RkFMU0UpCiAgICAgICAgIHNlbGYuc2Nyb2xsYmFyVmlldyA9IFNjcm9sbGJhcihmcmFtZVRleHQsIG9yaWVudD1WRVJUSUNBTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vmb2N1cz1GQUxTRSwgaGlnaGxpZ2h0dGhpY2tuZXNzPTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlZm9jdXM9RkFMU0UpCiAgICAgICAgIHNlbGYudGV4dFZpZXcgPSBUZXh0KGZyYW1lVGV4dCwgd3JhcD1XT1JELCBoaWdobGlnaHR0aGlja25lc3M9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9c2VsZi5mZywgYmc9c2VsZi5iZykKICAgICAgICAgc2VsZi5zY3JvbGxiYXJWaWV3LmNvbmZpZyhjb21tYW5kPXNlbGYudGV4dFZpZXcueXZpZXcpCkBAIC03MiwxNCArNzIsMTQgQEAKICAgICB0cnk6CiAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3InLCBlbmNvZGluZz1lbmNvZGluZykgYXMgZmlsZToKICAgICAgICAgICAgIGNvbnRlbnRzID0gZmlsZS5yZWFkKCkKLSAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBMb2FkIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdVbmFibGUgdG8gbG9hZCBmaWxlICVyIC4nICUgZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgc2hvd2Vycm9yKHRpdGxlPSdGaWxlIExvYWQgRXJyb3InLAorICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nVW5hYmxlIHRvIGxvYWQgZmlsZSAlciAuJyAlIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGVycjoKLSAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nVW5pY29kZSBEZWNvZGUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKGVyciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKKyAgICAgICAgc2hvd2Vycm9yKHRpdGxlPSdVbmljb2RlIERlY29kZSBFcnJvcicsCisgICAgICAgICAgICAgICAgICBtZXNzYWdlPXN0cihlcnIpLAorICAgICAgICAgICAgICAgICAgcGFyZW50PXBhcmVudCkKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gdmlld190ZXh0KHBhcmVudCwgdGl0bGUsIGNvbnRlbnRzLCBtb2RhbCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvVG9vbFRpcC5weSBiL0xpYi9pZGxlbGliL3Rvb2x0aXAucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvVG9vbFRpcC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdG9vbHRpcC5weQppbmRleCA5NjQxMDdlLi44NDNmYjRhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Ub29sVGlwLnB5CisrKyBiL0xpYi9pZGxlbGliL3Rvb2x0aXAucHkKQEAgLTEsNCArMSw0IEBACi0jIGdlbmVyYWwgcHVycG9zZSAndG9vbHRpcCcgcm91dGluZXMgLSBjdXJyZW50bHkgdW51c2VkIGluIGlkbGVmb3JrCisjIGdlbmVyYWwgcHVycG9zZSAndG9vbHRpcCcgcm91dGluZXMgLSBjdXJyZW50bHkgdW51c2VkIGluIGlkbGVsaWIKICMgKGFsdGhvdWdoIHRoZSAnY2FsbHRpcHMnIGV4dGVuc2lvbiBpcyBwYXJ0bHkgYmFzZWQgb24gdGhpcyBjb2RlKQogIyBtYXkgYmUgdXNlZnVsIGZvciBzb21lIHB1cnBvc2VzIGluIChvciBhbG1vc3QgaW4gOykgdGhlIGN1cnJlbnQgcHJvamVjdCBzY29wZQogIyBJZGVhcyBnbGVhbmVkIGZyb20gUHlTb2wKQEAgLTc2LDIxICs3NiwyMCBAQAogICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLml0ZW1zOgogICAgICAgICAgICAgbGlzdGJveC5pbnNlcnQoRU5ELCBpdGVtKQogCi1kZWYgX3Rvb2x0aXAocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgdG9vbHRpcCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIGxhYmVsID0gTGFiZWwocm9vdCwgdGV4dD0iUGxhY2UgeW91ciBtb3VzZSBvdmVyIGJ1dHRvbnMiKQorZGVmIF90b29sdGlwKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IHRvb2x0aXAiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE1MCkpCisgICAgbGFiZWwgPSBMYWJlbCh0b3AsIHRleHQ9IlBsYWNlIHlvdXIgbW91c2Ugb3ZlciBidXR0b25zIikKICAgICBsYWJlbC5wYWNrKCkKLSAgICBidXR0b24xID0gQnV0dG9uKHJvb3QsIHRleHQ9IkJ1dHRvbiAxIikKLSAgICBidXR0b24yID0gQnV0dG9uKHJvb3QsIHRleHQ9IkJ1dHRvbiAyIikKKyAgICBidXR0b24xID0gQnV0dG9uKHRvcCwgdGV4dD0iQnV0dG9uIDEiKQorICAgIGJ1dHRvbjIgPSBCdXR0b24odG9wLCB0ZXh0PSJCdXR0b24gMiIpCiAgICAgYnV0dG9uMS5wYWNrKCkKICAgICBidXR0b24yLnBhY2soKQogICAgIFRvb2xUaXAoYnV0dG9uMSwgIlRoaXMgaXMgdG9vbHRpcCB0ZXh0IGZvciBidXR0b24xLiIpCiAgICAgTGlzdGJveFRvb2xUaXAoYnV0dG9uMiwgWyJUaGlzIGlzIiwibXVsdGlwbGUgbGluZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvb2x0aXAgdGV4dCIsImZvciBidXR0b24yIl0pCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9UcmVlV2lkZ2V0LnB5IGIvTGliL2lkbGVsaWIvdHJlZS5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9UcmVlV2lkZ2V0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90cmVlLnB5CmluZGV4IGExOTU3OGYuLjI5MmNlMzYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkKKysrIGIvTGliL2lkbGVsaWIvdHJlZS5weQpAQCAtMTUsMTAgKzE1LDEyIEBACiAjIC0gb3B0aW1pemUgdHJlZSByZWRyYXcgYWZ0ZXIgZXhwYW5kIG9mIHN1Ym5vZGUKIAogaW1wb3J0IG9zCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKIAotZnJvbSBpZGxlbGliIGltcG9ydCBab29tSGVpZ2h0Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IHpvb21oZWlnaHQKIAogSUNPTkRJUiA9ICJJY29ucyIKIApAQCAtNDQ1LDIyICs0NDcsMjEgQEAKICAgICAgICAgc2VsZi5jYW52YXMueXZpZXdfc2Nyb2xsKDEsICJ1bml0IikKICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICBkZWYgem9vbV9oZWlnaHQoc2VsZiwgZXZlbnQpOgotICAgICAgICBab29tSGVpZ2h0Lnpvb21faGVpZ2h0KHNlbGYubWFzdGVyKQorICAgICAgICB6b29taGVpZ2h0Lnpvb21faGVpZ2h0KHNlbGYubWFzdGVyKQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAKLWRlZiBfdHJlZV93aWRnZXQocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgVHJlZVdpZGdldCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHNjID0gU2Nyb2xsZWRDYW52YXMocm9vdCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQorZGVmIF90cmVlX3dpZGdldChwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCs1MCwgeSsxNzUpKQorICAgIHNjID0gU2Nyb2xsZWRDYW52YXModG9wLCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCiAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIsIHNpZGU9TEVGVCkKLSAgICBpdGVtID0gRmlsZVRyZWVJdGVtKG9zLmdldGN3ZCgpKQorICAgIGl0ZW0gPSBGaWxlVHJlZUl0ZW0oSUNPTkRJUikKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUuZXhwYW5kKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAjIHRlc3RfdHJlZSBpcyBjdXJyZW50bHkgYSBjb3B5IG9mIHRoaXMKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3RyZWVfd2lkZ2V0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvVW5kb0RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL3VuZG8ucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvVW5kb0RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdW5kby5weQppbmRleCAxYzI1MDJkLi40MzMyZjEwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3VuZG8ucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQgc3RyaW5nCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKIAotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKKworIyB0a2ludHRlciBpbXBvcnQgbm90IG5lZWRlZCBiZWNhdXNlIG1vZHVsZSBkb2VzIG5vdCBjcmVhdGUgd2lkZ2V0cywKKyMgYWx0aG91Z2ggbWFueSBtZXRob2RzIG9wZXJhdGUgb24gdGV4dCB3aWRnZXQgYXJndW1lbnRzLgogCiAjJCBldmVudCA8PHJlZG8+PgogIyQgd2luIDxDb250cm9sLXk+CkBAIC0xNTgsNyArMTYwLDYgQEAKIAogCiBjbGFzcyBDb21tYW5kOgotCiAgICAgIyBCYXNlIGNsYXNzIGZvciBVbmRvYWJsZSBjb21tYW5kcwogCiAgICAgdGFncyA9IE5vbmUKQEAgLTIwNCw3ICsyMDUsNiBAQAogCiAKIGNsYXNzIEluc2VydENvbW1hbmQoQ29tbWFuZCk6Ci0KICAgICAjIFVuZG9hYmxlIGluc2VydCBjb21tYW5kCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXgxLCBjaGFycywgdGFncz1Ob25lKToKQEAgLTI2Miw3ICsyNjIsNiBAQAogCiAKIGNsYXNzIERlbGV0ZUNvbW1hbmQoQ29tbWFuZCk6Ci0KICAgICAjIFVuZG9hYmxlIGRlbGV0ZSBjb21tYW5kCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXgxLCBpbmRleDI9Tm9uZSk6CkBAIC0yOTcsOCArMjk2LDggQEAKICAgICAgICAgdGV4dC5zZWUoJ2luc2VydCcpCiAgICAgICAgICMjc3lzLl9fc3RkZXJyX18ud3JpdGUoInVuZG86ICVzXG4iICUgc2VsZikKIAotY2xhc3MgQ29tbWFuZFNlcXVlbmNlKENvbW1hbmQpOgogCitjbGFzcyBDb21tYW5kU2VxdWVuY2UoQ29tbWFuZCk6CiAgICAgIyBXcmFwcGVyIGZvciBhIHNlcXVlbmNlIG9mIHVuZG9hYmxlIGNtZHMgdG8gYmUgdW5kb25lL3JlZG9uZQogICAgICMgYXMgYSB1bml0CiAKQEAgLTMzOCwxMyArMzM3LDEyIEBACiAKIAogZGVmIF91bmRvX2RlbGVnYXRvcihwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgaW1wb3J0IHJlCi0gICAgaW1wb3J0IHRraW50ZXIgYXMgdGsKLSAgICBmcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgotICAgIHVuZG93aW4gPSB0ay5Ub3BsZXZlbCgpCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dCwgQnV0dG9uCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICB1bmRvd2luID0gVG9wbGV2ZWwocGFyZW50KQogICAgIHVuZG93aW4udGl0bGUoIlRlc3QgVW5kb0RlbGVnYXRvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHVuZG93aW4uZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB1bmRvd2luLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogCiAgICAgdGV4dCA9IFRleHQodW5kb3dpbiwgaGVpZ2h0PTEwKQogICAgIHRleHQucGFjaygpCkBAIC0zNjIsNyArMzYwLDcgQEAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3VuZG9kZWxlZ2F0b3InLCB2ZXJib3NpdHk9MiwKLSAgICAgICAgICAgICAgICAgIGV4aXQ9RmFsc2UpCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF91bmRvJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3VuZG9fZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvV2luZG93TGlzdC5weSBiL0xpYi9pZGxlbGliL3dpbmRvd3MucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvV2luZG93TGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvd2luZG93cy5weQppbmRleCBiYzc0MzQ4Li5hM2Y4NThhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL3dpbmRvd3MucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIAorCiBjbGFzcyBXaW5kb3dMaXN0OgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtNDgsNiArNDksNyBAQAogICAgICAgICAgICAgICAgIHQsIHYsIHRiID0gc3lzLmV4Y19pbmZvKCkKICAgICAgICAgICAgICAgICBwcmludCgid2FybmluZzogY2FsbGJhY2sgZmFpbGVkIGluIFdpbmRvd0xpc3QiLCB0LCAiOiIsIHYpCiAKKwogcmVnaXN0cnkgPSBXaW5kb3dMaXN0KCkKIAogYWRkX3dpbmRvd3NfdG9fbWVudSA9IHJlZ2lzdHJ5LmFkZF93aW5kb3dzX3RvX21lbnUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1pvb21IZWlnaHQucHkgYi9MaWIvaWRsZWxpYi96b29taGVpZ2h0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1pvb21IZWlnaHQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKaW5kZXggYTVkNjc5ZS4uYWE0YTQyNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weQorKysgYi9MaWIvaWRsZWxpYi96b29taGVpZ2h0LnB5CkBAIC0zLDcgKzMsOCBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKKwogCiBjbGFzcyBab29tSGVpZ2h0OgogCkBAIC0yMCw2ICsyMSw3IEBACiAgICAgICAgIHRvcCA9IHNlbGYuZWRpdHdpbi50b3AKICAgICAgICAgem9vbV9oZWlnaHQodG9wKQogCisKIGRlZiB6b29tX2hlaWdodCh0b3ApOgogICAgIGdlb20gPSB0b3Aud21fZ2VvbWV0cnkoKQogICAgIG0gPSByZS5tYXRjaChyIihcZCspeChcZCspXCsoLT9cZCspXCsoLT9cZCspIiwgZ2VvbSkKQEAgLTMyLDcgKzM0LDcgQEAKICAgICAgICAgbmV3eSA9IDAKICAgICAgICAgbmV3aGVpZ2h0ID0gbmV3aGVpZ2h0IC0gNzIKIAotICAgIGVsaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgIGVsaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICMgVGhlICc4OCcgYmVsb3cgaXMgYSBtYWdpYyBudW1iZXIgdGhhdCBhdm9pZHMgcGxhY2luZyB0aGUgYm90dG9tCiAgICAgICAgICMgb2YgdGhlIHdpbmRvdyBiZWxvdyB0aGUgcGFuZWwgb24gbXkgbWFjaGluZS4gSSBkb24ndCBrbm93IGhvdwogICAgICAgICAjIHRvIGNhbGN1bGF0ZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhpcyB3aXRoIHRraW50ZXIuCmRpZmYgLS1naXQgYS9MaWIvaW1hcGxpYi5weSBiL0xpYi9pbWFwbGliLnB5CmluZGV4IDRlOGE0YmIuLmNhZDUwOGEgMTAwNjQ0Ci0tLSBhL0xpYi9pbWFwbGliLnB5CisrKyBiL0xpYi9pbWFwbGliLnB5CkBAIC0xMTEsNyArMTExLDE1IEBACiAjIExpdGVyYWwgaXMgbm8gbG9uZ2VyIHVzZWQ7IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCiBMaXRlcmFsID0gcmUuY29tcGlsZShicicuKnsoP1A8c2l6ZT5cZCspfSQnLCByZS5BU0NJSSkKIE1hcENSTEYgPSByZS5jb21waWxlKGJyJ1xyXG58XHJ8XG4nKQotUmVzcG9uc2VfY29kZSA9IHJlLmNvbXBpbGUoYnInXFsoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+W15cXV0qKSk/XF0nKQorIyBXZSBubyBsb25nZXIgZXhjbHVkZSB0aGUgJ10nIGNoYXJhY3RlciBmcm9tIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIHJlc3BvbnNlCisjIGNvZGUsIGV2ZW4gdGhvdWdoIGl0IHZpb2xhdGVzIHRoZSBSRkMuICBQb3B1bGFyIElNQVAgc2VydmVycyBzdWNoIGFzIEdtYWlsCisjIGFsbG93IGZsYWdzIHdpdGggJ10nLCBhbmQgdGhlcmUgYXJlIHByb2dyYW1zIChpbmNsdWRpbmcgaW1hcGxpYiEpIHRoYXQgY2FuCisjIHByb2R1Y2UgdGhlbS4gIFRoZSBwcm9ibGVtIHdpdGggdGhpcyBpcyBpZiB0aGUgJ3RleHQnIHBvcnRpb24gb2YgdGhlIHJlc3BvbnNlCisjIGluY2x1ZGVzIGEgJ10nIHdlJ2xsIHBhcnNlIHRoZSByZXNwb25zZSB3cm9uZyAod2hpY2ggaXMgdGhlIHBvaW50IG9mIHRoZSBSRkMKKyMgcmVzdHJpY3Rpb24pLiAgSG93ZXZlciwgdGhhdCBzZWVtcyBsZXNzIGxpa2VseSB0byBiZSBhIHByb2JsZW0gaW4gcHJhY3RpY2UKKyMgdGhhbiBiZWluZyB1bmFibGUgdG8gY29ycmVjdGx5IHBhcnNlIGZsYWdzIHRoYXQgaW5jbHVkZSAnXScgY2hhcnMsIHdoaWNoCisjIHdhcyByZXBvcnRlZCBhcyBhIHJlYWwtd29ybGQgcHJvYmxlbSBpbiBpc3N1ZSAjMjE4MTUuCitSZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT4uKikpP1xdJykKIFVudGFnZ2VkX3Jlc3BvbnNlID0gcmUuY29tcGlsZShicidcKiAoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+LiopKT8nKQogIyBVbnRhZ2dlZF9zdGF0dXMgaXMgbm8gbG9uZ2VyIHVzZWQ7IGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIFVudGFnZ2VkX3N0YXR1cyA9IHJlLmNvbXBpbGUoCkBAIC0xMjQsNyArMTMyLDcgQEAKIAogY2xhc3MgSU1BUDQ6CiAKLSAgICAiIiJJTUFQNCBjbGllbnQgY2xhc3MuCisgICAgciIiIklNQVA0IGNsaWVudCBjbGFzcy4KIAogICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0KFtob3N0WywgcG9ydF1dKQogCkBAIC0xMjU5LDcgKzEyNjcsMTAgQEAKICAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKLQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIHNzbF9jb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIE5vbmU6CkBAIC0xNTI3LDcgKzE1MzgsNyBAQAogICAgICgnc2VsZWN0JywgKCcvdG1wL3l5eiAyJywpKSwKICAgICAoJ3NlYXJjaCcsIChOb25lLCAnU1VCSkVDVCcsICd0ZXN0JykpLAogICAgICgnZmV0Y2gnLCAoJzEnLCAnKEZMQUdTIElOVEVSTkFMREFURSBSRkM4MjIpJykpLAotICAgICgnc3RvcmUnLCAoJzEnLCAnRkxBR1MnLCAnKFxEZWxldGVkKScpKSwKKyAgICAoJ3N0b3JlJywgKCcxJywgJ0ZMQUdTJywgcicoXERlbGV0ZWQpJykpLAogICAgICgnbmFtZXNwYWNlJywgKCkpLAogICAgICgnZXhwdW5nZScsICgpKSwKICAgICAoJ3JlY2VudCcsICgpKSwKZGlmZiAtLWdpdCBhL0xpYi9pbWdoZHIucHkgYi9MaWIvaW1naGRyLnB5CmluZGV4IGIyNjc5MjUuLjc2ZThhYmIgMTAwNjQ0Ci0tLSBhL0xpYi9pbWdoZHIucHkKKysrIGIvTGliL2ltZ2hkci5weQpAQCAtMSw1ICsxLDcgQEAKICIiIlJlY29nbml6ZSBpbWFnZSBmaWxlIGZvcm1hdHMgYmFzZWQgb24gdGhlaXIgZmlyc3QgZmV3IGJ5dGVzLiIiIgogCitmcm9tIG9zIGltcG9ydCBQYXRoTGlrZQorCiBfX2FsbF9fID0gWyJ3aGF0Il0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCkBAIC0xMCw3ICsxMiw3IEBACiAgICAgZiA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGlmIGggaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgc3RyKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgKHN0ciwgUGF0aExpa2UpKToKICAgICAgICAgICAgICAgICBmID0gb3BlbihmaWxlLCAncmInKQogICAgICAgICAgICAgICAgIGggPSBmLnJlYWQoMzIpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2ltcC5weSBiL0xpYi9pbXAucHkKaW5kZXggZTI2NDM5MS4uNzgxZmYyMyAxMDA2NDQKLS0tIGEvTGliL2ltcC5weQorKysgYi9MaWIvaW1wLnB5CkBAIC0zMCw3ICszMCw3IEBACiAKIHdhcm5pbmdzLndhcm4oInRoZSBpbXAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYjsgIgogICAgICAgICAgICAgICAic2VlIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIGZvciBhbHRlcm5hdGl2ZSB1c2VzIiwKLSAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKIAogIyBERVBSRUNBVEVECiBTRUFSQ0hfRVJST1IgPSAwCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggOWVlY2JmZS4uYTUzMWEwMyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtMzYsMjMgKzM2LDYgQEAKICAgICByZXR1cm4gdHlwZShzeXMpKG5hbWUpCiAKIAotY2xhc3MgX01hbmFnZVJlbG9hZDoKLQotICAgICIiIk1hbmFnZXMgdGhlIHBvc3NpYmxlIGNsZWFuLXVwIG9mIHN5cy5tb2R1bGVzIGZvciBsb2FkX21vZHVsZSgpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5faXNfcmVsb2FkID0gc2VsZi5fbmFtZSBpbiBzeXMubW9kdWxlcwotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKLSAgICAgICAgaWYgYW55KGFyZyBpcyBub3QgTm9uZSBmb3IgYXJnIGluIGFyZ3MpIGFuZCBub3Qgc2VsZi5faXNfcmVsb2FkOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tzZWxmLl9uYW1lXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQogIyBNb2R1bGUtbGV2ZWwgbG9ja2luZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIEEgZGljdCBtYXBwaW5nIG1vZHVsZSBuYW1lcyB0byB3ZWFrcmVmcyBvZiBfTW9kdWxlTG9jayBpbnN0YW5jZXMKQEAgLTI3MCw3ICsyNTMsNyBAQAogIyBNb2R1bGUgc3BlY2lmaWNhdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBkZWYgX21vZHVsZV9yZXByKG1vZHVsZSk6Ci0gICAgIyBUaGUgaW1wbGVtZW50YXRpb24gb2YgTW9kdWxlVHlwZV9fcmVwcl9fKCkuCisgICAgIyBUaGUgaW1wbGVtZW50YXRpb24gb2YgTW9kdWxlVHlwZS5fX3JlcHJfXygpLgogICAgIGxvYWRlciA9IGdldGF0dHIobW9kdWxlLCAnX19sb2FkZXJfXycsIE5vbmUpCiAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdtb2R1bGVfcmVwcicpOgogICAgICAgICAjIEFzIHNvb24gYXMgQnVpbHRpbkltcG9ydGVyLCBGcm96ZW5JbXBvcnRlciwgYW5kIE5hbWVzcGFjZUxvYWRlcgpAQCAtNTc2LDkgKzU1OSw4IEBACiAgICAgICAgICMgbW9kdWxlIGNyZWF0aW9uIHNob3VsZCBiZSB1c2VkLgogICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCiAgICAgZWxpZiBoYXNhdHRyKHNwZWMubG9hZGVyLCAnZXhlY19tb2R1bGUnKToKLSAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N0YXJ0aW5nIGluIFB5dGhvbiAzLjYsIGxvYWRlcnMgZGVmaW5pbmcgZXhlY19tb2R1bGUoKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGFsc28gZGVmaW5lIGNyZWF0ZV9tb2R1bGUoKScsCi0gICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignbG9hZGVycyB0aGF0IGRlZmluZSBleGVjX21vZHVsZSgpICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJykKICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgbW9kdWxlID0gX25ld19tb2R1bGUoc3BlYy5uYW1lKQogICAgIF9pbml0X21vZHVsZV9hdHRycyhzcGVjLCBtb2R1bGUpCkBAIC02MDMsNyArNTg1LDcgQEAKIAogIyBVc2VkIGJ5IGltcG9ydGxpYi5yZWxvYWQoKSBhbmQgX2xvYWRfbW9kdWxlX3NoaW0oKS4KIGRlZiBfZXhlYyhzcGVjLCBtb2R1bGUpOgotICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgorICAgICIiIkV4ZWN1dGUgdGhlIHNwZWMncyBzcGVjaWZpZWQgbW9kdWxlIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKICAgICBuYW1lID0gc3BlYy5uYW1lCiAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogICAgIHdpdGggX01vZHVsZUxvY2tNYW5hZ2VyKG5hbWUpOgpAQCAtODc3LDE0ICs4NTksMjEgQEAKIAogCiBkZWYgX2ZpbmRfc3BlYyhuYW1lLCBwYXRoLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgIiIiRmluZCBhIG1vZHVsZSdzIGxvYWRlci4iIiIKLSAgICBpZiBzeXMubWV0YV9wYXRoIGlzIG5vdCBOb25lIGFuZCBub3Qgc3lzLm1ldGFfcGF0aDoKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3Mgc3BlYy4iIiIKKyAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoCisgICAgaWYgbWV0YV9wYXRoIGlzIE5vbmU6CisgICAgICAgICMgUHlJbXBvcnRfQ2xlYW51cCgpIGlzIHJ1bm5pbmcgb3IgaGFzIGJlZW4gY2FsbGVkLgorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic3lzLm1ldGFfcGF0aCBpcyBOb25lLCBQeXRob24gaXMgbGlrZWx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNodXR0aW5nIGRvd24iKQorCisgICAgaWYgbm90IG1ldGFfcGF0aDoKICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5tZXRhX3BhdGggaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQorCiAgICAgIyBXZSBjaGVjayBzeXMubW9kdWxlcyBoZXJlIGZvciB0aGUgcmVsb2FkIGNhc2UuICBXaGlsZSBhIHBhc3NlZC1pbgogICAgICMgdGFyZ2V0IHdpbGwgdXN1YWxseSBpbmRpY2F0ZSBhIHJlbG9hZCB0aGVyZSBpcyBubyBndWFyYW50ZWUsIHdoZXJlYXMKICAgICAjIHN5cy5tb2R1bGVzIHByb3ZpZGVzIG9uZS4KICAgICBpc19yZWxvYWQgPSBuYW1lIGluIHN5cy5tb2R1bGVzCi0gICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgIGZvciBmaW5kZXIgaW4gbWV0YV9wYXRoOgogICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZpbmRfc3BlYyA9IGZpbmRlci5maW5kX3NwZWMKQEAgLTkyNSw2ICs5MTQsOSBAQAogICAgIGlmIGxldmVsID4gMDoKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGFja2FnZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignX19wYWNrYWdlX18gbm90IHNldCB0byBhIHN0cmluZycpCisgICAgICAgIGVsaWYgbm90IHBhY2thZ2U6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCB3aXRoIG5vIGtub3duIHBhcmVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFja2FnZScpCiAgICAgICAgIGVsaWYgcGFja2FnZSBub3QgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICBtc2cgPSAoJ1BhcmVudCBtb2R1bGUgeyFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAnCiAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCcpCkBAIC05NTAsMTAgKzk0MiwxMCBAQAogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsgeyFyfSBpcyBub3QgYSBwYWNrYWdlJykuZm9ybWF0KG5hbWUsIHBhcmVudCkKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKSBmcm9tIE5vbmUKKyAgICAgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IobXNnLCBuYW1lPW5hbWUpIGZyb20gTm9uZQogICAgIHNwZWMgPSBfZmluZF9zcGVjKG5hbWUsIHBhdGgpCiAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKyAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihfRVJSX01TRy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKICAgICBlbHNlOgogICAgICAgICBtb2R1bGUgPSBfbG9hZF91bmxvY2tlZChzcGVjKQogICAgIGlmIHBhcmVudDoKQEAgLTk4OSwxMCArOTgxLDExIEBACiAgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKICAgICAgICAgbWVzc2FnZSA9ICgnaW1wb3J0IG9mIHt9IGhhbHRlZDsgJwogICAgICAgICAgICAgICAgICAgICdOb25lIGluIHN5cy5tb2R1bGVzJy5mb3JtYXQobmFtZSkpCi0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihtZXNzYWdlLCBuYW1lPW5hbWUpCiAgICAgX2xvY2tfdW5sb2NrX21vZHVsZShuYW1lKQogICAgIHJldHVybiBtb2R1bGUKIAorCiBkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKICAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgogCkBAIC0xMDE0LDEzICsxMDA3LDEyIEBACiAgICAgICAgICAgICAgICAgZnJvbV9uYW1lID0gJ3t9Lnt9Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fLCB4KQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChpbXBvcnRfLCBmcm9tX25hbWUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICBleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAogICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKICAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KLSAgICAgICAgICAgICAgICAgICAgaWYgc3RyKGV4Yykuc3RhcnRzd2l0aChfRVJSX01TR19QUkVGSVgpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gZnJvbV9uYW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09IGZyb21fbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgcmV0dXJuIG1vZHVsZQogCkBAIC0xMDMzLDcgKzEwMjUsMTkgQEAKIAogICAgICIiIgogICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQotICAgIGlmIHBhY2thZ2UgaXMgTm9uZToKKyAgICBzcGVjID0gZ2xvYmFscy5nZXQoJ19fc3BlY19fJykKKyAgICBpZiBwYWNrYWdlIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIGFuZCBwYWNrYWdlICE9IHNwZWMucGFyZW50OgorICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmIih7cGFja2FnZSFyfSAhPSB7c3BlYy5wYXJlbnQhcn0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydFdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKKyAgICAgICAgcmV0dXJuIHBhY2thZ2UKKyAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBzcGVjLnBhcmVudAorICAgIGVsc2U6CisgICAgICAgIF93YXJuaW5ncy53YXJuKCJjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXyIsCisgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydFdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KICAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKICAgICAgICAgICAgIHBhY2thZ2UgPSBwYWNrYWdlLnJwYXJ0aXRpb24oJy4nKVswXQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CmluZGV4IGU1NGQ2OTEuLjVjYjU4YWIgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQorKysgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKQEAgLTEzNywxMCArMTM3LDYgQEAKICMgYSAucHljIGZpbGUgaW4gdGV4dCBtb2RlIHRoZSBtYWdpYyBudW1iZXIgd2lsbCBiZSB3cm9uZzsgYWxzbywgdGhlCiAjIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCiAjCi0jIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSMgLVUgaW50ZXJwZXRlciBmbGFnIHdpbGwgY2F1c2UgTUFHSUMrMSBiZWluZyB1c2VkLiBUaGV5IGhhdmUgYmVlbgotIyBvZGQgbnVtYmVycyBmb3Igc29tZSB0aW1lIG5vdy4KLSMKICMgVGhlcmUgd2VyZSBhIHZhcmlldHkgb2Ygb2xkIHNjaGVtZXMgZm9yIHNldHRpbmcgdGhlIG1hZ2ljIG51bWJlci4KICMgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQogIyAxMC4KQEAgLTIzMSw2ICsyMjcsMTggQEAKICMgICAgIFB5dGhvbiAzLjViMiAgMzM0MCAoZml4IGRpY3Rpb25hcnkgZGlzcGxheSBldmFsdWF0aW9uIG9yZGVyICMxMTIwNSkKICMgICAgIFB5dGhvbiAzLjViMiAgMzM1MCAoYWRkIEdFVF9ZSUVMRF9GUk9NX0lURVIgb3Bjb2RlICMyNDQwMCkKICMgICAgIFB5dGhvbiAzLjUuMiAgMzM1MSAoZml4IEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMIG9wY29kZSAjMjcyODYpCisjICAgICBQeXRob24gMy42YTAgIDMzNjAgKGFkZCBGT1JNQVRfVkFMVUUgb3Bjb2RlICMyNTQ4MworIyAgICAgUHl0aG9uIDMuNmEwICAzMzYxIChsaW5lbm8gZGVsdGEgb2YgY29kZS5jb19sbm90YWIgYmVjb21lcyBzaWduZWQpCisjICAgICBQeXRob24gMy42YTEgIDMzNzAgKDE2IGJpdCB3b3JkY29kZSkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MSAoYWRkIEJVSUxEX0NPTlNUX0tFWV9NQVAgb3Bjb2RlICMyNzE0MCkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MiAoTUFLRV9GVU5DVElPTiBzaW1wbGlmaWNhdGlvbiwgcmVtb3ZlIE1BS0VfQ0xPU1VSRQorIyAgICAgICAgICAgICAgICAgICAgICAgICAjMjcwOTUpCisjICAgICBQeXRob24gMy42YjEgIDMzNzMgKGFkZCBCVUlMRF9TVFJJTkcgb3Bjb2RlICMyNzA3OCkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NSAoYWRkIFNFVFVQX0FOTk9UQVRJT05TIGFuZCBTVE9SRV9BTk5PVEFUSU9OIG9wY29kZXMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIzI3OTg1KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc2IChzaW1wbGlmeSBDQUxMX0ZVTkNUSU9OcyAmIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMKQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc3IChzZXQgX19jbGFzc19fIGNlbGwgZnJvbSB0eXBlLl9fbmV3X18gIzIzNzIyKQorIyAgICAgUHl0aG9uIDMuNmIyICAzMzc4IChhZGQgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCAjMjgyNTcpCiAjCiAjIE1BR0lDIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBieXRlY29kZSBlbWl0dGVkIGJ5IHRoZSBjb21waWxlciBtYXkgbm8KICMgbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKQEAgLTIzOSw3ICsyNDcsNyBAQAogIyBXaGVuZXZlciBNQUdJQ19OVU1CRVIgaXMgY2hhbmdlZCwgdGhlIHJhbmdlcyBpbiB0aGUgbWFnaWNfdmFsdWVzIGFycmF5CiAjIGluIFBDL2xhdW5jaGVyLmMgbXVzdCBhbHNvIGJlIHVwZGF0ZWQuCiAKLU1BR0lDX05VTUJFUiA9ICgzMzUxKS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCitNQUdJQ19OVU1CRVIgPSAoMzM3OCkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJwogX1JBV19NQUdJQ19OVU1CRVIgPSBpbnQuZnJvbV9ieXRlcyhNQUdJQ19OVU1CRVIsICdsaXR0bGUnKSAgIyBGb3IgaW1wb3J0LmMKIAogX1BZQ0FDSEUgPSAnX19weWNhY2hlX18nCkBAIC0yNzYsNiArMjg0LDcgQEAKICAgICAgICAgICAgIG1lc3NhZ2UgPSAnZGVidWdfb3ZlcnJpZGUgb3Igb3B0aW1pemF0aW9uIG11c3QgYmUgc2V0IHRvIE5vbmUnCiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobWVzc2FnZSkKICAgICAgICAgb3B0aW1pemF0aW9uID0gJycgaWYgZGVidWdfb3ZlcnJpZGUgZWxzZSAxCisgICAgcGF0aCA9IF9vcy5mc3BhdGgocGF0aCkKICAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICBiYXNlLCBzZXAsIHJlc3QgPSB0YWlsLnJwYXJ0aXRpb24oJy4nKQogICAgIHRhZyA9IHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcKQEAgLTMwNiw2ICszMTUsNyBAQAogICAgICIiIgogICAgIGlmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBwYXRoID0gX29zLmZzcGF0aChwYXRoKQogICAgIGhlYWQsIHB5Y2FjaGVfZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgIGhlYWQsIHB5Y2FjaGUgPSBfcGF0aF9zcGxpdChoZWFkKQogICAgIGlmIHB5Y2FjaGUgIT0gX1BZQ0FDSEU6CkBAIC0zNzEsMTQgKzM4MSw2IEBACiAgICAgcmV0dXJuIG1vZGUKIAogCi1kZWYgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlLCAqYXJncywgdmVyYm9zaXR5PTEpOgotICAgICIiIlByaW50IHRoZSBtZXNzYWdlIHRvIHN0ZGVyciBpZiAtdi9QWVRIT05WRVJCT1NFIGlzIHR1cm5lZCBvbi4iIiIKLSAgICBpZiBzeXMuZmxhZ3MudmVyYm9zZSA+PSB2ZXJib3NpdHk6Ci0gICAgICAgIGlmIG5vdCBtZXNzYWdlLnN0YXJ0c3dpdGgoKCcjJywgJ2ltcG9ydCAnKSk6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJyMgJyArIG1lc3NhZ2UKLSAgICAgICAgcHJpbnQobWVzc2FnZS5mb3JtYXQoKmFyZ3MpLCBmaWxlPXN5cy5zdGRlcnIpCi0KLQogZGVmIF9jaGVja19uYW1lKG1ldGhvZCk6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgYmVpbmcgcmVxdWVzdGVkIG1hdGNoZXMgdGhlIG9uZSB0aGUKICAgICBsb2FkZXIgY2FuIGhhbmRsZS4KQEAgLTQ0OCwxNSArNDUwLDE1IEBACiAgICAgcmF3X3NpemUgPSBkYXRhWzg6MTJdCiAgICAgaWYgbWFnaWMgIT0gTUFHSUNfTlVNQkVSOgogICAgICAgICBtZXNzYWdlID0gJ2JhZCBtYWdpYyBudW1iZXIgaW4geyFyfTogeyFyfScuZm9ybWF0KG5hbWUsIG1hZ2ljKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQogICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6CiAgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyB0aW1lc3RhbXAgaW4geyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCiAgICAgZWxpZiBsZW4ocmF3X3NpemUpICE9IDQ6CiAgICAgICAgIG1lc3NhZ2UgPSAncmVhY2hlZCBFT0Ygd2hpbGUgcmVhZGluZyBzaXplIG9mIHNvdXJjZSBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKICAgICBpZiBzb3VyY2Vfc3RhdHMgaXMgbm90IE5vbmU6CiAgICAgICAgIHRyeToKQEAgLTQ2Niw3ICs0NjgsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgX3JfbG9uZyhyYXdfdGltZXN0YW1wKSAhPSBzb3VyY2VfbXRpbWU6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3IgeyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvdXJjZV9zaXplID0gc291cmNlX3N0YXRzWydzaXplJ10gJiAweEZGRkZGRkZGCkBAIC00ODMsNyArNDg1LDcgQEAKICAgICAiIiJDb21waWxlIGJ5dGVjb2RlIGFzIHJldHVybmVkIGJ5IF92YWxpZGF0ZV9ieXRlY29kZV9oZWFkZXIoKS4iIiIKICAgICBjb2RlID0gbWFyc2hhbC5sb2FkcyhkYXRhKQogICAgIGlmIGlzaW5zdGFuY2UoY29kZSwgX2NvZGVfdHlwZSk6Ci0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgaWYgc291cmNlX3BhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoY29kZSwgc291cmNlX3BhdGgpCiAgICAgICAgIHJldHVybiBjb2RlCkBAIC01NDEsNiArNTQzLDggQEAKICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbG9jYXRpb24gPSBfb3MuZnNwYXRoKGxvY2F0aW9uKQogCiAgICAgIyBJZiB0aGUgbG9jYXRpb24gaXMgb24gdGhlIGZpbGVzeXN0ZW0sIGJ1dCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0LAogICAgICMgd2UgY291bGQgcmV0dXJuIE5vbmUgaGVyZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBsb2NhdGlvbiBpcyBub3QKQEAgLTYxMCw3ICs2MTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVnaXN0cnlfa2V5ID0gY2xzLlJFR0lTVFJZX0tFWQogICAgICAgICBrZXkgPSByZWdpc3RyeV9rZXkuZm9ybWF0KGZ1bGxuYW1lPWZ1bGxuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj0nJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggY2xzLl9vcGVuX3JlZ2lzdHJ5KGtleSkgYXMgaGtleToKICAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAnJykKQEAgLTY3Myw2ICs2NzcsNyBAQAogICAgICAgICBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoZXhlYywgY29kZSwgbW9kdWxlLl9fZGljdF9fKQogCiAgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgIiIiVGhpcyBtb2R1bGUgaXMgZGVwcmVjYXRlZC4iIiIKICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCiAKIApAQCAtNzY2LDIxICs3NzEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb21waWxlX2J5dGVjb2RlKGJ5dGVzX2RhdGEsIG5hbWU9ZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aD1ieXRlY29kZV9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoPXNvdXJjZV9wYXRoKQogICAgICAgICBzb3VyY2VfYnl0ZXMgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQogICAgICAgICBjb2RlX29iamVjdCA9IHNlbGYuc291cmNlX3RvX2NvZGUoc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKICAgICAgICAgaWYgKG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhbmQgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZSBhbmQKICAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgZGF0YSA9IF9jb2RlX3RvX2J5dGVjb2RlKGNvZGVfb2JqZWN0LCBzb3VyY2VfbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgIGxlbihzb3VyY2VfYnl0ZXMpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlX2J5dGVjb2RlKHNvdXJjZV9wYXRoLCBieXRlY29kZV9wYXRoLCBkYXRhKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApAQCAtODYwLDE0ICs4NjUsMTYgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CiAgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQorICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LCBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF93cml0ZV9hdG9taWMocGF0aCwgZGF0YSwgX21vZGUpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjcmVhdGVkIHshcn0nLCBwYXRoKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAjIFNhbWUgYXMgYWJvdmU6IGp1c3QgZG9uJ3Qgd3JpdGUgdGhlIGJ5dGVjb2RlLgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwgZXhjKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YykKIAogCiBjbGFzcyBTb3VyY2VsZXNzRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBfTG9hZGVyQmFzaWNzKToKQEAgLTkxMiwxNCArOTE5LDE0IEBACiAgICAgICAgICIiIkNyZWF0ZSBhbiB1bml0aWFsaXplZCBleHRlbnNpb24gbW9kdWxlIiIiCiAgICAgICAgIG1vZHVsZSA9IF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCgKICAgICAgICAgICAgIF9pbXAuY3JlYXRlX2R5bmFtaWMsIHNwZWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBsb2FkZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gbG9hZGVkIGZyb20geyFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy5uYW1lLCBzZWxmLnBhdGgpCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAogICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuIGV4dGVuc2lvbiBtb2R1bGUiIiIKICAgICAgICAgX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuZXhlY19keW5hbWljLCBtb2R1bGUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBleGVjdXRlZCBmcm9tIHshcn0nLAorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBleGVjdXRlZCBmcm9tIHshcn0nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmFtZSwgc2VsZi5wYXRoKQogCiAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgpAQCAtOTg1LDYgKzk5Miw5IEBACiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9yZWNhbGN1bGF0ZSgpKQogCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCBwYXRoKToKKyAgICAgICAgc2VsZi5fcGF0aFtpbmRleF0gPSBwYXRoCisKICAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9yZWNhbGN1bGF0ZSgpKQogCkBAIC0xMDM0LDcgKzEwNDQsOCBAQAogCiAgICAgICAgICIiIgogICAgICAgICAjIFRoZSBpbXBvcnQgc3lzdGVtIG5ldmVyIGNhbGxzIHRoaXMgbWV0aG9kLgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCkKICAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2xvYWRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpCiAKIApAQCAtMTA1NCwxMSArMTA2NSw3IEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoKToKLSAgICAgICAgIiIiU2VhcmNoIHNlcXVlbmNlIG9mIGhvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLgotCi0gICAgICAgIElmICdob29rcycgaXMgZmFsc2UgdGhlbiB1c2Ugc3lzLnBhdGhfaG9va3MuCi0KLSAgICAgICAgIiIiCisgICAgICAgICIiIlNlYXJjaCBzeXMucGF0aF9ob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4iIiIKICAgICAgICAgaWYgc3lzLnBhdGhfaG9va3MgaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMucGF0aF9ob29rczoKICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMucGF0aF9ob29rcyBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCiAgICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgpAQCAtMTE0MCw4ICsxMTQ3LDEwIEBACiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZmluZF9zcGVjKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJmaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciAnZnVsbG5hbWUnIG9uIHN5cy5wYXRoIG9yICdwYXRoJy4KKworICAgICAgICBUaGUgc2VhcmNoIGlzIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4KKyAgICAgICAgIiIiCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAogICAgICAgICBzcGVjID0gY2xzLl9nZXRfc3BlYyhmdWxsbmFtZSwgcGF0aCwgdGFyZ2V0KQpAQCAtMTIyMSw4ICsxMjMwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucz1zbXNsKQogCiAgICAgZGVmIGZpbmRfc3BlYyhzZWxmLCBmdWxsbmFtZSwgdGFyZ2V0PU5vbmUpOgotICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLiAgUmV0dXJucyB0aGUKLSAgICAgICAgbWF0Y2hpbmcgc3BlYywgb3IgTm9uZSBpZiBub3QgZm91bmQuIiIiCisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuCisKKyAgICAgICAgUmV0dXJucyB0aGUgbWF0Y2hpbmcgc3BlYywgb3IgTm9uZSBpZiBub3QgZm91bmQuCisgICAgICAgICIiIgogICAgICAgICBpc19uYW1lc3BhY2UgPSBGYWxzZQogICAgICAgICB0YWlsX21vZHVsZSA9IGZ1bGxuYW1lLnJwYXJ0aXRpb24oJy4nKVsyXQogICAgICAgICB0cnk6CkBAIC0xMjU0LDEyICsxMjY1LDEzIEBACiAgICAgICAgICMgQ2hlY2sgZm9yIGEgZmlsZSB3LyBhIHByb3BlciBzdWZmaXggZXhpc3RzLgogICAgICAgICBmb3Igc3VmZml4LCBsb2FkZXJfY2xhc3MgaW4gc2VsZi5fbG9hZGVyczoKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSArIHN1ZmZpeCkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScuZm9ybWF0KGZ1bGxfcGF0aCksIHZlcmJvc2l0eT0yKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLCBmdWxsX3BhdGgsIHZlcmJvc2l0eT0yKQogICAgICAgICAgICAgaWYgY2FjaGVfbW9kdWxlICsgc3VmZml4IGluIGNhY2hlOgogICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X3NwZWMobG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgZnVsbF9wYXRoLCBOb25lLCB0YXJnZXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCB0YXJnZXQpCiAgICAgICAgIGlmIGlzX25hbWVzcGFjZToKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3Bvc3NpYmxlIG5hbWVzcGFjZSBmb3Ige30nLmZvcm1hdChiYXNlX3BhdGgpKQorICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9JywgYmFzZV9wYXRoKQogICAgICAgICAgICAgc3BlYyA9IF9ib290c3RyYXAuTW9kdWxlU3BlYyhmdWxsbmFtZSwgTm9uZSkKICAgICAgICAgICAgIHNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMgPSBbYmFzZV9wYXRoXQogICAgICAgICAgICAgcmV0dXJuIHNwZWMKQEAgLTE0MzAsOCArMTQ0MiwzIEBACiAgICAgaWYgX29zLl9fbmFtZV9fID09ICdudCc6CiAgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFdpbmRvd3NSZWdpc3RyeUZpbmRlcikKICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChQYXRoRmluZGVyKQotCi0gICAgIyBYWFggV2UgZXhwb3NlIGEgY291cGxlIG9mIGNsYXNzZXMgaW4gX2Jvb3RzdHJhcCBmb3IgdGhlIHNha2Ugb2YKLSAgICAjIGEgc2V0dXB0b29scyBidWcgKGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvaXNzdWUvMzc4KS4KLSAgICBfYm9vdHN0cmFwX21vZHVsZS5GaWxlRmluZGVyID0gRmlsZUZpbmRlcgotICAgIF9ib290c3RyYXBfbW9kdWxlLlNvdXJjZUZpbGVMb2FkZXIgPSBTb3VyY2VGaWxlTG9hZGVyCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKaW5kZXggZTFmYTA3YS4uNmJkZjBkNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi91dGlsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQpAQCAtMjIsOCArMjIsOCBAQAogICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJy4nKToKICAgICAgICAgcmV0dXJuIG5hbWUKICAgICBlbGlmIG5vdCBwYWNrYWdlOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHJlbGF0aXZlIG5hbWUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICcobm8gbGVhZGluZyBkb3QpJy5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZidubyBwYWNrYWdlIHNwZWNpZmllZCBmb3Ige3JlcHIobmFtZSl9ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKHJlcXVpcmVkIGZvciByZWxhdGl2ZSBtb2R1bGUgbmFtZXMpJykKICAgICBsZXZlbCA9IDAKICAgICBmb3IgY2hhcmFjdGVyIGluIG5hbWU6CiAgICAgICAgIGlmIGNoYXJhY3RlciAhPSAnLic6CkBAIC0yMDQsMTEgKzIwNCw2IEBACiAgICAgcmV0dXJuIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIKIAogCi1jbGFzcyBfTW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgotCi0gICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgdG8gYWxsb3cgX19jbGFzc19fIG1hbmlwdWxhdGlvbi4iIiIKLQotCiBjbGFzcyBfTGF6eU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKIAogICAgICIiIkEgc3ViY2xhc3Mgb2YgdGhlIG1vZHVsZSB0eXBlIHdoaWNoIHRyaWdnZXJzIGxvYWRpbmcgdXBvbiBhdHRyaWJ1dGUgYWNjZXNzLiIiIgpAQCAtMjE4LDEzICsyMTMsMTQgQEAKICAgICAgICAgIyBBbGwgbW9kdWxlIG1ldGFkYXRhIG11c3QgYmUgZ2FybmVyZWQgZnJvbSBfX3NwZWNfXyBpbiBvcmRlciB0byBhdm9pZAogICAgICAgICAjIHVzaW5nIG11dGF0ZWQgdmFsdWVzLgogICAgICAgICAjIFN0b3AgdHJpZ2dlcmluZyB0aGlzIG1ldGhvZC4KLSAgICAgICAgc2VsZi5fX2NsYXNzX18gPSBfTW9kdWxlCisgICAgICAgIHNlbGYuX19jbGFzc19fID0gdHlwZXMuTW9kdWxlVHlwZQogICAgICAgICAjIEdldCB0aGUgb3JpZ2luYWwgbmFtZSB0byBtYWtlIHN1cmUgbm8gb2JqZWN0IHN1YnN0aXR1dGlvbiBvY2N1cnJlZAogICAgICAgICAjIGluIHN5cy5tb2R1bGVzLgogICAgICAgICBvcmlnaW5hbF9uYW1lID0gc2VsZi5fX3NwZWNfXy5uYW1lCiAgICAgICAgICMgRmlndXJlIG91dCBleGFjdGx5IHdoYXQgYXR0cmlidXRlcyB3ZXJlIG11dGF0ZWQgYmV0d2VlbiB0aGUgY3JlYXRpb24KICAgICAgICAgIyBvZiB0aGUgbW9kdWxlIGFuZCBub3cuCi0gICAgICAgIGF0dHJzX3RoZW4gPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZQorICAgICAgICBhdHRyc190aGVuID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGVbJ19fZGljdF9fJ10KKyAgICAgICAgb3JpZ2luYWxfdHlwZSA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlWydfX2NsYXNzX18nXQogICAgICAgICBhdHRyc19ub3cgPSBzZWxmLl9fZGljdF9fCiAgICAgICAgIGF0dHJzX3VwZGF0ZWQgPSB7fQogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBhdHRyc19ub3cuaXRlbXMoKToKQEAgLTIzOSw5ICsyMzUsOSBAQAogICAgICAgICAjIG9iamVjdCB3YXMgcHV0IGludG8gc3lzLm1vZHVsZXMuCiAgICAgICAgIGlmIG9yaWdpbmFsX25hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICBpZiBpZChzZWxmKSAhPSBpZChzeXMubW9kdWxlc1tvcmlnaW5hbF9uYW1lXSk6Ci0gICAgICAgICAgICAgICAgbXNnID0gKCdtb2R1bGUgb2JqZWN0IGZvciB7IXJ9IHN1YnN0aXR1dGVkIGluIHN5cy5tb2R1bGVzICcKLSAgICAgICAgICAgICAgICAgICAgICAgJ2R1cmluZyBhIGxhenkgbG9hZCcpCi0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cuZm9ybWF0KG9yaWdpbmFsX25hbWUpKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoZiJtb2R1bGUgb2JqZWN0IGZvciB7b3JpZ2luYWxfbmFtZSFyfSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0aXR1dGVkIGluIHN5cy5tb2R1bGVzIGR1cmluZyBhIGxhenkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2FkIikKICAgICAgICAgIyBVcGRhdGUgYWZ0ZXIgbG9hZGluZyBzaW5jZSB0aGF0J3Mgd2hhdCB3b3VsZCBoYXBwZW4gaW4gYW4gZWFnZXIKICAgICAgICAgIyBsb2FkaW5nIHNpdHVhdGlvbi4KICAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoYXR0cnNfdXBkYXRlZCkKQEAgLTI3NSw4ICsyNzEsNyBAQAogICAgICAgICBzZWxmLmxvYWRlciA9IGxvYWRlcgogCiAgICAgZGVmIGNyZWF0ZV9tb2R1bGUoc2VsZiwgc3BlYyk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG1vZHVsZSB3aGljaCBjYW4gaGF2ZSBpdHMgX19jbGFzc19fIG1hbmlwdWxhdGVkLiIiIgotICAgICAgICByZXR1cm4gX01vZHVsZShzcGVjLm5hbWUpCisgICAgICAgIHJldHVybiBzZWxmLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCiAKICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKICAgICAgICAgIiIiTWFrZSB0aGUgbW9kdWxlIGxvYWQgbGF6aWx5LiIiIgpAQCAtMjg2LDUgKzI4MSw4IEBACiAgICAgICAgICMgb24gYW4gb2JqZWN0IHdvdWxkIGhhdmUgdHJpZ2dlcmVkIHRoZSBsb2FkLAogICAgICAgICAjIGUuZy4gYGBtb2R1bGUuX19zcGVjX18ubG9hZGVyID0gTm9uZWBgIHdvdWxkIHRyaWdnZXIgYSBsb2FkIGZyb20KICAgICAgICAgIyB0cnlpbmcgdG8gYWNjZXNzIG1vZHVsZS5fX3NwZWNfXy4KLSAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlcl9zdGF0ZSA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKKyAgICAgICAgbG9hZGVyX3N0YXRlID0ge30KKyAgICAgICAgbG9hZGVyX3N0YXRlWydfX2RpY3RfXyddID0gbW9kdWxlLl9fZGljdF9fLmNvcHkoKQorICAgICAgICBsb2FkZXJfc3RhdGVbJ19fY2xhc3NfXyddID0gbW9kdWxlLl9fY2xhc3NfXworICAgICAgICBtb2R1bGUuX19zcGVjX18ubG9hZGVyX3N0YXRlID0gbG9hZGVyX3N0YXRlCiAgICAgICAgIG1vZHVsZS5fX2NsYXNzX18gPSBfTGF6eU1vZHVsZQpkaWZmIC0tZ2l0IGEvTGliL2luc3BlY3QucHkgYi9MaWIvaW5zcGVjdC5weQppbmRleCBlNmRhZTFlLi42NjQwMzc1IDEwMDY0NAotLS0gYS9MaWIvaW5zcGVjdC5weQorKysgYi9MaWIvaW5zcGVjdC5weQpAQCAtMTYsNyArMTYsNyBAQAogICAgIGdldG1vZHVsZSgpIC0gZGV0ZXJtaW5lIHRoZSBtb2R1bGUgdGhhdCBhbiBvYmplY3QgY2FtZSBmcm9tCiAgICAgZ2V0Y2xhc3N0cmVlKCkgLSBhcnJhbmdlIGNsYXNzZXMgc28gYXMgdG8gcmVwcmVzZW50IHRoZWlyIGhpZXJhcmNoeQogCi0gICAgZ2V0YXJnc3BlYygpLCBnZXRhcmd2YWx1ZXMoKSwgZ2V0Y2FsbGFyZ3MoKSAtIGdldCBpbmZvIGFib3V0IGZ1bmN0aW9uIGFyZ3VtZW50cworICAgIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgZ2V0ZnVsbGFyZ3NwZWMoKSAtIHNhbWUsIHdpdGggc3VwcG9ydCBmb3IgUHl0aG9uIDMgZmVhdHVyZXMKICAgICBmb3JtYXRhcmdzcGVjKCksIGZvcm1hdGFyZ3ZhbHVlcygpIC0gZm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMKICAgICBnZXRvdXRlcmZyYW1lcygpLCBnZXRpbm5lcmZyYW1lcygpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzCkBAIC0xNzksMTIgKzE3OSwyNCBAQAogZGVmIGlzY29yb3V0aW5lZnVuY3Rpb24ob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLgogCi0gICAgQ29yb3V0aW5lIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCwKLSAgICBvciBnZW5lcmF0b3JzIGRlY29yYXRlZCB3aXRoICJ0eXBlcy5jb3JvdXRpbmUiLgorICAgIENvcm91dGluZSBmdW5jdGlvbnMgYXJlIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXguCiAgICAgIiIiCiAgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKICAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19DT1JPVVRJTkUpCiAKK2RlZiBpc2FzeW5jZ2VuZnVuY3Rpb24ob2JqZWN0KToKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IgZnVuY3Rpb24uCisKKyAgICBBc3luY2hyb25vdXMgZ2VuZXJhdG9yIGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiCisgICAgc3ludGF4IGFuZCBoYXZlICJ5aWVsZCIgZXhwcmVzc2lvbnMgaW4gdGhlaXIgYm9keS4KKyAgICAiIiIKKyAgICByZXR1cm4gYm9vbCgoaXNmdW5jdGlvbihvYmplY3QpIG9yIGlzbWV0aG9kKG9iamVjdCkpIGFuZAorICAgICAgICAgICAgICAgIG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikKKworZGVmIGlzYXN5bmNnZW4ob2JqZWN0KToKKyAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IuIiIiCisgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5Bc3luY0dlbmVyYXRvclR5cGUpCisKIGRlZiBpc2dlbmVyYXRvcihvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBnZW5lcmF0b3IuCiAKQEAgLTYyMywyMyArNjM1LDYgQEAKICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCAnCiAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZSBvYmplY3QnLmZvcm1hdChvYmplY3QpKQogCi1Nb2R1bGVJbmZvID0gbmFtZWR0dXBsZSgnTW9kdWxlSW5mbycsICduYW1lIHN1ZmZpeCBtb2RlIG1vZHVsZV90eXBlJykKLQotZGVmIGdldG1vZHVsZWluZm8ocGF0aCk6Ci0gICAgIiIiR2V0IHRoZSBtb2R1bGUgbmFtZSwgc3VmZml4LCBtb2RlLCBhbmQgbW9kdWxlIHR5cGUgZm9yIGEgZ2l2ZW4gZmlsZS4iIiIKLSAgICB3YXJuaW5ncy53YXJuKCdpbnNwZWN0LmdldG1vZHVsZWluZm8oKSBpcyBkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgMikKLSAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgaW1wb3J0IGltcAotICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KLSAgICBzdWZmaXhlcy5zb3J0KCkgIyB0cnkgbG9uZ2VzdCBzdWZmaXhlcyBmaXJzdCwgaW4gY2FzZSB0aGV5IG92ZXJsYXAKLSAgICBmb3IgbmVnbGVuLCBzdWZmaXgsIG1vZGUsIG10eXBlIGluIHN1ZmZpeGVzOgotICAgICAgICBpZiBmaWxlbmFtZVtuZWdsZW46XSA9PSBzdWZmaXg6Ci0gICAgICAgICAgICByZXR1cm4gTW9kdWxlSW5mbyhmaWxlbmFtZVs6bmVnbGVuXSwgc3VmZml4LCBtb2RlLCBtdHlwZSkKLQogZGVmIGdldG1vZHVsZW5hbWUocGF0aCk6CiAgICAgIiIiUmV0dXJuIHRoZSBtb2R1bGUgbmFtZSBmb3IgYSBnaXZlbiBmaWxlLCBvciBOb25lLiIiIgogICAgIGZuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQpAQCAtMTA2MCw4ICsxMDU1LDYgQEAKICAgICAna3dvbmx5ZGVmYXVsdHMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4KICAgICAnYW5ub3RhdGlvbnMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50IG5hbWVzIHRvIGFubm90YXRpb25zLgogCi0gICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gZ2V0YXJnc3BlYygpLgotCiAgICAgVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgaW5zcGVjdC5zaWduYXR1cmUoKSBpbnN0ZWFkLgogICAgICIiIgogCkBAIC0xMTc0LDggKzExNjcsNyBAQAogICAgICAgICAgICAgICAgICAgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAnPScgKyByZXByKHZhbHVlKSwKICAgICAgICAgICAgICAgICAgIGZvcm1hdHJldHVybnM9bGFtYmRhIHRleHQ6ICcgLT4gJyArIHRleHQsCiAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uPWZvcm1hdGFubm90YXRpb24pOgotICAgICIiIkZvcm1hdCBhbiBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieSBnZXRhcmdzcGVjCi0gICAgb3IgZ2V0ZnVsbGFyZ3NwZWMuCisgICAgIiIiRm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IGdldGZ1bGxhcmdzcGVjLgogCiAgICAgVGhlIGZpcnN0IHNldmVuIGFyZ3VtZW50cyBhcmUgKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywKICAgICBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnMpLiAgVGhlIG90aGVyIGZpdmUgYXJndW1lbnRzCkBAIC0yNDE3LDYgKzI0MDksMjAgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBtdXN0IGJlIGEgc3RyLCBub3QgYSB7IXJ9Ii5mb3JtYXQobmFtZSkpCiAKKyAgICAgICAgaWYgbmFtZVswXSA9PSAnLicgYW5kIG5hbWVbMTpdLmlzZGlnaXQoKToKKyAgICAgICAgICAgICMgVGhlc2UgYXJlIGltcGxpY2l0IGFyZ3VtZW50cyBnZW5lcmF0ZWQgYnkgY29tcHJlaGVuc2lvbnMuIEluCisgICAgICAgICAgICAjIG9yZGVyIHRvIHByb3ZpZGUgYSBmcmllbmRsaWVyIGludGVyZmFjZSB0byB1c2Vycywgd2UgcmVjYXN0CisgICAgICAgICAgICAjIHRoZWlyIG5hbWUgYXMgImltcGxpY2l0TiIgYW5kIHRyZWF0IHRoZW0gYXMgcG9zaXRpb25hbC1vbmx5LgorICAgICAgICAgICAgIyBTZWUgaXNzdWUgMTk2MTEuCisgICAgICAgICAgICBpZiBraW5kICE9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0IGFyZ3VtZW50cyBtdXN0IGJlIHBhc3NlZCBpbiBhcyB7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgX1BPU0lUSU9OQUxfT1JfS0VZV09SRAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fa2luZCA9IF9QT1NJVElPTkFMX09OTFkKKyAgICAgICAgICAgIG5hbWUgPSAnaW1wbGljaXR7fScuZm9ybWF0KG5hbWVbMTpdKQorCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScuZm9ybWF0KG5hbWUpKQogCmRpZmYgLS1naXQgYS9MaWIvaW8ucHkgYi9MaWIvaW8ucHkKaW5kZXggZTAzZGI5Ny4uOTY4ZWU1MCAxMDA2NDQKLS0tIGEvTGliL2lvLnB5CisrKyBiL0xpYi9pby5weQpAQCAtOTAsMyArOTAsMTAgQEAKIGZvciBrbGFzcyBpbiAoU3RyaW5nSU8sIFRleHRJT1dyYXBwZXIpOgogICAgIFRleHRJT0Jhc2UucmVnaXN0ZXIoa2xhc3MpCiBkZWwga2xhc3MKKwordHJ5OgorICAgIGZyb20gX2lvIGltcG9ydCBfV2luZG93c0NvbnNvbGVJTworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgUmF3SU9CYXNlLnJlZ2lzdGVyKF9XaW5kb3dzQ29uc29sZUlPKQpkaWZmIC0tZ2l0IGEvTGliL2lwYWRkcmVzcy5weSBiL0xpYi9pcGFkZHJlc3MucHkKaW5kZXggMWY5MDA1OC4uMjBmMzNjYiAxMDA2NDQKLS0tIGEvTGliL2lwYWRkcmVzcy5weQorKysgYi9MaWIvaXBhZGRyZXNzLnB5CkBAIC02MzYsMTIgKzYzNiwxMiBAQAogICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKICAgICAgICAgaWYgbiA+PSAwOgogICAgICAgICAgICAgaWYgbmV0d29yayArIG4gPiBicm9hZGNhc3Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ2FkZHJlc3Mgb3V0IG9mIHJhbmdlJykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKG5ldHdvcmsgKyBuKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbiArPSAxCiAgICAgICAgICAgICBpZiBicm9hZGNhc3QgKyBuIDwgbmV0d29yazoKLSAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcignYWRkcmVzcyBvdXQgb2YgcmFuZ2UnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MoYnJvYWRjYXN0ICsgbikKIAogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vX19pbml0X18ucHkgYi9MaWIvanNvbi9fX2luaXRfXy5weQppbmRleCAxMTE4YjBlLi5iOGQ1ZTZjIDEwMDY0NAotLS0gYS9MaWIvanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvanNvbi9fX2luaXRfXy5weQpAQCAtMTA1LDYgKzEwNSw3IEBACiAKIGZyb20gLmRlY29kZXIgaW1wb3J0IEpTT05EZWNvZGVyLCBKU09ORGVjb2RlRXJyb3IKIGZyb20gLmVuY29kZXIgaW1wb3J0IEpTT05FbmNvZGVyCitpbXBvcnQgY29kZWNzCiAKIF9kZWZhdWx0X2VuY29kZXIgPSBKU09ORW5jb2RlcigKICAgICBza2lwa2V5cz1GYWxzZSwKQEAgLTExNiw3ICsxMTcsNyBAQAogICAgIGRlZmF1bHQ9Tm9uZSwKICkKIAotZGVmIGR1bXAob2JqLCBmcCwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAorZGVmIGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgICBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsCiAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgc29ydF9rZXlzPUZhbHNlLCAqKmt3KToKICAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCBhcyBhIEpTT04gZm9ybWF0dGVkIHN0cmVhbSB0byBgYGZwYGAgKGEKQEAgLTE3OSw3ICsxODAsNyBAQAogICAgICAgICBmcC53cml0ZShjaHVuaykKIAogCi1kZWYgZHVtcHMob2JqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCitkZWYgZHVtcHMob2JqLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCiAgICAgICAgIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwKICAgICAgICAgZGVmYXVsdD1Ob25lLCBzb3J0X2tleXM9RmFsc2UsICoqa3cpOgogICAgICIiIlNlcmlhbGl6ZSBgYG9iamBgIHRvIGEgSlNPTiBmb3JtYXR0ZWQgYGBzdHJgYC4KQEAgLTI0MCw3ICsyNDEsMzcgQEAKIF9kZWZhdWx0X2RlY29kZXIgPSBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQogCiAKLWRlZiBsb2FkKGZwLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKK2RlZiBkZXRlY3RfZW5jb2RpbmcoYik6CisgICAgYnN0YXJ0c3dpdGggPSBiLnN0YXJ0c3dpdGgKKyAgICBpZiBic3RhcnRzd2l0aCgoY29kZWNzLkJPTV9VVEYzMl9CRSwgY29kZWNzLkJPTV9VVEYzMl9MRSkpOgorICAgICAgICByZXR1cm4gJ3V0Zi0zMicKKyAgICBpZiBic3RhcnRzd2l0aCgoY29kZWNzLkJPTV9VVEYxNl9CRSwgY29kZWNzLkJPTV9VVEYxNl9MRSkpOgorICAgICAgICByZXR1cm4gJ3V0Zi0xNicKKyAgICBpZiBic3RhcnRzd2l0aChjb2RlY3MuQk9NX1VURjgpOgorICAgICAgICByZXR1cm4gJ3V0Zi04LXNpZycKKworICAgIGlmIGxlbihiKSA+PSA0OgorICAgICAgICBpZiBub3QgYlswXToKKyAgICAgICAgICAgICMgMDAgMDAgLS0gLS0gLSB1dGYtMzItYmUKKyAgICAgICAgICAgICMgMDAgWFggLS0gLS0gLSB1dGYtMTYtYmUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWJlJyBpZiBiWzFdIGVsc2UgJ3V0Zi0zMi1iZScKKyAgICAgICAgaWYgbm90IGJbMV06CisgICAgICAgICAgICAjIFhYIDAwIDAwIDAwIC0gdXRmLTMyLWxlCisgICAgICAgICAgICAjIFhYIDAwIDAwIFhYIC0gdXRmLTE2LWxlCisgICAgICAgICAgICAjIFhYIDAwIFhYIC0tIC0gdXRmLTE2LWxlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1sZScgaWYgYlsyXSBvciBiWzNdIGVsc2UgJ3V0Zi0zMi1sZScKKyAgICBlbGlmIGxlbihiKSA9PSAyOgorICAgICAgICBpZiBub3QgYlswXToKKyAgICAgICAgICAgICMgMDAgWFggLSB1dGYtMTYtYmUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWJlJworICAgICAgICBpZiBub3QgYlsxXToKKyAgICAgICAgICAgICMgWFggMDAgLSB1dGYtMTYtbGUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWxlJworICAgICMgZGVmYXVsdAorICAgIHJldHVybiAndXRmLTgnCisKKworZGVmIGxvYWQoZnAsICosIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdyk6CiAgICAgIiIiRGVzZXJpYWxpemUgYGBmcGBgIChhIGBgLnJlYWQoKWBgLXN1cHBvcnRpbmcgZmlsZS1saWtlIG9iamVjdCBjb250YWluaW5nCiAgICAgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCkBAIC0yNjgsMTAgKzI5OSwxMCBAQAogICAgICAgICBwYXJzZV9jb25zdGFudD1wYXJzZV9jb25zdGFudCwgb2JqZWN0X3BhaXJzX2hvb2s9b2JqZWN0X3BhaXJzX2hvb2ssICoqa3cpCiAKIAotZGVmIGxvYWRzKHMsIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAorZGVmIGxvYWRzKHMsICosIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdyk6Ci0gICAgIiIiRGVzZXJpYWxpemUgYGBzYGAgKGEgYGBzdHJgYCBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTgotICAgIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCisgICAgIiIiRGVzZXJpYWxpemUgYGBzYGAgKGEgYGBzdHJgYCwgYGBieXRlc2BgIG9yIGBgYnl0ZWFycmF5YGAgaW5zdGFuY2UKKyAgICBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgogCiAgICAgYGBvYmplY3RfaG9va2BgIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUKICAgICByZXN1bHQgb2YgYW55IG9iamVjdCBsaXRlcmFsIGRlY29kZSAoYSBgYGRpY3RgYCkuIFRoZSByZXR1cm4gdmFsdWUgb2YKQEAgLTMwNywxMiArMzM4LDE2IEBACiAgICAgVGhlIGBgZW5jb2RpbmdgYCBhcmd1bWVudCBpcyBpZ25vcmVkIGFuZCBkZXByZWNhdGVkLgogCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIG5vdCB7IXJ9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5fX2NsYXNzX18uX19uYW1lX18pKQotICAgIGlmIHMuc3RhcnRzd2l0aCh1J1x1ZmVmZicpOgotICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQorICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgaWYgcy5zdGFydHN3aXRoKCdcdWZlZmYnKToKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW5leHBlY3RlZCBVVEYtOCBCT00gKGRlY29kZSB1c2luZyB1dGYtOC1zaWcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0ciwgYnl0ZXMgb3IgYnl0ZWFycmF5LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCB7IXJ9Jy5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQorICAgICAgICBzID0gcy5kZWNvZGUoZGV0ZWN0X2VuY29kaW5nKHMpLCAnc3Vycm9nYXRlcGFzcycpCisKICAgICBpZiAoY2xzIGlzIE5vbmUgYW5kIG9iamVjdF9ob29rIGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9pbnQgaXMgTm9uZSBhbmQgcGFyc2VfZmxvYXQgaXMgTm9uZSBhbmQKICAgICAgICAgICAgIHBhcnNlX2NvbnN0YW50IGlzIE5vbmUgYW5kIG9iamVjdF9wYWlyc19ob29rIGlzIE5vbmUgYW5kIG5vdCBrdyk6CmRpZmYgLS1naXQgYS9MaWIvanNvbi9kZWNvZGVyLnB5IGIvTGliL2pzb24vZGVjb2Rlci5weQppbmRleCAwZjAzZjIwLi4yNDIyYzZhIDEwMDY0NAotLS0gYS9MaWIvanNvbi9kZWNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2RlY29kZXIucHkKQEAgLTI4MCw3ICsyODAsNyBAQAogCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwKICAgICAgICAgICAgIG9iamVjdF9wYWlyc19ob29rPU5vbmUpOgogICAgICAgICAiIiJgYG9iamVjdF9ob29rYGAsIGlmIHNwZWNpZmllZCwgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0CmRpZmYgLS1naXQgYS9MaWIvanNvbi9lbmNvZGVyLnB5IGIvTGliL2pzb24vZW5jb2Rlci5weQppbmRleCBkNTk2NDg5Li40MWE0OTdjIDEwMDY0NAotLS0gYS9MaWIvanNvbi9lbmNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2VuY29kZXIucHkKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICIiIgogICAgIGl0ZW1fc2VwYXJhdG9yID0gJywgJwogICAgIGtleV9zZXBhcmF0b3IgPSAnOiAnCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLAogICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwKICAgICAgICAgICAgIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yIGZvciBKU09ORW5jb2Rlciwgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KQEAgLTE3Niw3ICsxNzYsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBKU09ORW5jb2Rlci5kZWZhdWx0KHNlbGYsIG8pCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcihyZXByKG8pICsgIiBpcyBub3QgSlNPTiBzZXJpYWxpemFibGUiKQorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk9iamVjdCBvZiB0eXBlICclcycgaXMgbm90IEpTT04gc2VyaWFsaXphYmxlIiAlCisgICAgICAgICAgICAgICAgICAgICAgICBvLl9fY2xhc3NfXy5fX25hbWVfXykKIAogICAgIGRlZiBlbmNvZGUoc2VsZiwgbyk6CiAgICAgICAgICIiIlJldHVybiBhIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIGRhdGEgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQgYi9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dAppbmRleCA2MDUwM2RkLi4yYWJkNWVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dAorKysgYi9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dApAQCAtNTQsMTIgKzU0LDEzIEBACiBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCiBzbWFsbF9zdG10OiAoZXhwcl9zdG10IHwgcHJpbnRfc3RtdCAgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8CiAgICAgICAgICAgICAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IGV4ZWNfc3RtdCB8IGFzc2VydF9zdG10KQotZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAogICAgICAgICAgICAgICAgICAgICAgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdF9zdGFyX2V4cHIpKSopCithbm5hc3NpZ246ICc6JyB0ZXN0IFsnPScgdGVzdF0KIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnICh0ZXN0fHN0YXJfZXhwcikpKiBbJywnXQogYXVnYXNzaWduOiAoJys9JyB8ICctPScgfCAnKj0nIHwgJ0A9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nIHwKICAgICAgICAgICAgICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nKQotIyBGb3Igbm9ybWFsIGFzc2lnbm1lbnRzLCBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgaW50ZXJwcmV0ZXIKKyMgRm9yIG5vcm1hbCBhbmQgYW5ub3RhdGVkIGFzc2lnbm1lbnRzLCBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgaW50ZXJwcmV0ZXIKIHByaW50X3N0bXQ6ICdwcmludCcgKCBbIHRlc3QgKCcsJyB0ZXN0KSogWycsJ10gXSB8CiAgICAgICAgICAgICAgICAgICAgICAgJz4+JyB0ZXN0IFsgKCcsJyB0ZXN0KSsgWycsJ10gXSApCiBkZWxfc3RtdDogJ2RlbCcgZXhwcmxpc3QKQEAgLTE2MCw3ICsxNjEsNyBAQAogCSAgICBzdGFyX2V4cHIgKQogCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgotY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3Rfc2FmZSBbY29tcF9pdGVyXQorY29tcF9mb3I6IFtBU1lOQ10gJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdF9zYWZlIFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIG9sZF90ZXN0IFtjb21wX2l0ZXJdCiAKIHRlc3RsaXN0MTogdGVzdCAoJywnIHRlc3QpKgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weSBiL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKaW5kZXggNDQ1MDJiZi4uYmFiZTZjYiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVXRpbGl0eSBmdW5jdGlvbnMsIG5vZGUgY29uc3RydWN0aW9uIG1hY3JvcywgZXRjLiIiIgogIyBBdXRob3I6IENvbGxpbiBXaW50ZXIKIAotZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQotCiAjIExvY2FsIGltcG9ydHMKIGZyb20gLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAucHl0cmVlIGltcG9ydCBMZWFmLCBOb2RlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CmluZGV4IDk2M2Y5NTIuLmQzNjU1YzkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CkBAIC0zMCw5ICszMCw4IEBACiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLiBpbXBvcnQgcGF0Y29tcAotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIExQYXJlbiwgUlBhcmVuLCBBcmdMaXN0LCBEb3QKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBEb3QKIGZyb20gLi4gaW1wb3J0IGZpeGVyX3V0aWwKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CmluZGV4IDJjOWI3MmQuLmFiOTIxZWUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CkBAIC0xMCw3ICsxMCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBDb21tYSwgTmFtZSwgQ2FsbAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQppbmRleCAzOTE4ODlmLi5iYjY3MThjIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKQEAgLTE0LDcgKzE0LDYgQEAKICIiIgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBMaXN0Q29tcCwgaW5fc3BlY2lhbF9jb250ZXh0CiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKaW5kZXggMThjNTYwZi4uNDM5NzA4YyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKQEAgLTMxLDcgKzMxLDYgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBweXRyZWUKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBwYXJlbnRoZXNpemUKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKaW5kZXggNDZjN2FhZi4uOGUzNDQ2MyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CkBAIC0yMCw3ICsyMCw3IEBACiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5weWdyYW0gaW1wb3J0IHRva2VuCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgc3ltcywgTm9kZSwgTGVhZgorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IHN5bXMsIE5vZGUsIExlYWYKIAogCiBkZWYgaGFzX21ldGFjbGFzcyhwYXJlbnQpOgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQppbmRleCBhZDkxYTI5Li5jMjI5NTk2IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQpAQCAtMyw3ICszLDcgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgc3ltcworZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUKIAogY2xhc3MgRml4Tm9uemVybyhmaXhlcl9iYXNlLkJhc2VGaXgpOgogICAgIEJNX2NvbXBhdGlibGUgPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKaW5kZXggYTFmZTJmNS4uODc4MDMyMiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQpAQCAtMTgsNyArMTgsNyBAQAogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgQ29tbWEsIFN0cmluZywgaXNfdHVwbGUKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBDb21tYSwgU3RyaW5nCiAKIAogcGFyZW5kX2V4cHIgPSBwYXRjb21wLmNvbXBpbGVfcGF0dGVybigKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQppbmRleCBkYjM0MTA0Li42N2JmNTFmIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CkBAIC0yMCw3ICsyMCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZQogCkBAIC00Miw3ICs0MSw3IEBACiAgICAgICAgICdOb3RJbXBsZW1lbnRlZFR5cGUnIDogJ3R5cGUoTm90SW1wbGVtZW50ZWQpJywKICAgICAgICAgJ1NsaWNlVHlwZScgOiAnc2xpY2UnLAogICAgICAgICAnU3RyaW5nVHlwZSc6ICdieXRlcycsICMgWFhYID8KLSAgICAgICAgJ1N0cmluZ1R5cGVzJyA6ICdzdHInLCAjIFhYWCA/CisgICAgICAgICdTdHJpbmdUeXBlcycgOiAnKHN0ciwpJywgIyBYWFggPwogICAgICAgICAnVHVwbGVUeXBlJzogJ3R1cGxlJywKICAgICAgICAgJ1R5cGVUeXBlJyA6ICd0eXBlJywKICAgICAgICAgJ1VuaWNvZGVUeXBlJzogJ3N0cicsCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQppbmRleCAxNDgxY2Q5Li41YTM2MDQ5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKQEAgLTYsNyArNiw2IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSBsaWIydG8zLmZpeGVzLmZpeF9pbXBvcnRzIGltcG9ydCBhbHRlcm5hdGVzLCBGaXhJbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gbGliMnRvMy5maXhlcl91dGlsIGltcG9ydCAoTmFtZSwgQ29tbWEsIEZyb21JbXBvcnQsIE5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfaW5kZW50YXRpb24sIE5vZGUsIHN5bXMpCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKaW5kZXggMDcyODA4My4uYzVhMWFhMiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKQEAgLTgsOCArOCw2IEBACiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSB0byB3cml0ZSB5b3VyIG93biByZWZhY3RvcmluZyB0b29sLgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogX19hdXRob3JfXyA9ICJHdWlkbyB2YW4gUm9zc3VtIDxndWlkb0BweXRob24ub3JnPiIKIAogCkBAIC0yNiw3ICsyNCw2IEBACiBmcm9tIC5wZ2VuMiBpbXBvcnQgZHJpdmVyLCB0b2tlbml6ZSwgdG9rZW4KIGZyb20gLmZpeGVyX3V0aWwgaW1wb3J0IGZpbmRfcm9vdAogZnJvbSAuIGltcG9ydCBweXRyZWUsIHB5Z3JhbQotZnJvbSAuIGltcG9ydCBidG1fdXRpbHMgYXMgYnUKIGZyb20gLiBpbXBvcnQgYnRtX21hdGNoZXIgYXMgYm0KIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKaW5kZXggYzBiZjdmMi4uY2YzMWE1NCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQpAQCAtMzE5LDcgKzMxOSw3IEBACiAgICAgICAgIGRlZiBmKHgpIC0+IGxpc3Q6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZi5fX2Fubm90YXRpb25zX18sIHsncmV0dXJuJzogbGlzdH0pCiAKLSAgICAgICAgIyB0ZXN0IE1BS0VfQ0xPU1VSRSB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCisgICAgICAgICMgdGVzdCBjbG9zdXJlcyB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQppbmRleCAwODk3MTc3Li5hZTdjZmU4IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKQEAgLTMsMTAgKzMsOCBAQAogCiAjIFB5dGhvbiBpbXBvcnRzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCByZQogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CiAKICMgTG9jYWwgaW1wb3J0cwpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CmluZGV4IDE1MDc5ZmUuLmMwNTA3Y2YgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IHJlZmFjdG9yCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CmluZGV4IDY0MGRjZWYuLmIzZjI2ODAgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CkBAIC0yLDEyICsyLDExIEBACiAKICMgUHl0aG9uIGltcG9ydHMKIGltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4KIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IHB5Z3JhbSwgcHl0cmVlLCByZWZhY3RvciwgZml4ZXJfdXRpbAorZnJvbSBsaWIydG8zIGltcG9ydCBweWdyYW0sIGZpeGVyX3V0aWwKIGZyb20gbGliMnRvMy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogCiAKQEAgLTMyMzQsNiArMzIzMywxMCBAQAogICAgICAgICBhID0gIiIidHlwZShOb25lKSIiIgogICAgICAgICBzZWxmLmNoZWNrKGIsIGEpCiAKKyAgICAgICAgYiA9ICJ0eXBlcy5TdHJpbmdUeXBlcyIKKyAgICAgICAgYSA9ICIoc3RyLCkiCisgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKKwogY2xhc3MgVGVzdF9pZGlvbXMoRml4ZXJUZXN0Q2FzZSk6CiAgICAgZml4ZXIgPSAiaWRpb21zIgogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CmluZGV4IGU0YTAxOTQuLjlhOTY5ZTggMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CkBAIC04LDcgKzgsNyBAQAogCiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0Ci1mcm9tIC5zdXBwb3J0IGltcG9ydCBkcml2ZXIsIHRlc3RfZGlyCitmcm9tIC5zdXBwb3J0IGltcG9ydCBkcml2ZXIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlCiAKICMgUHl0aG9uIGltcG9ydHMKQEAgLTEzNCw2ICsxMzQsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAiIiIpCiAKICAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGJdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aSBmb3IgaSBpbiBiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIGEgaWYgYXdhaXQgaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGl9CisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBiIGlmIGF3YWl0IGNdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIGkgZm9yIGkgaW4gYiBpZiBjXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKIAogICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCiAKQEAgLTI3Miw2ICsyOTAsMzYgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZShzKQogCiAKKyMgQWRhcHRlZCBmcm9tIFB5dGhvbiAzJ3MgTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5OkdyYW1tYXJUZXN0cy50ZXN0X3Zhcl9hbm5vdAorY2xhc3MgVGVzdFZhckFubm90YXRpb25zKEdyYW1tYXJUZXN0KToKKyAgICBkZWYgdGVzdF8xKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJ2YXIxOiBpbnQgPSA1IikKKworICAgIGRlZiB0ZXN0XzIoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoInZhcjI6IFtpbnQsIHN0cl0iKQorCisgICAgZGVmIHRlc3RfMyhzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHN0OiBzdHIgPSAnSGVsbG8nXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBhLmI6IGludCA9ICgxLCAyKVxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHN0XG4iKQorCisgICAgZGVmIHRlc3RfNChzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiZGVmIGZiYWQoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgcHJpbnQoeClcbiIpCisKKyAgICBkZWYgdGVzdF81KHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBzOiBzdHIgPSAnYXR0cidcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHogPSAyXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgc2VsZi54OiBpbnQgPSB4XG4iKQorCisgICAgZGVmIHRlc3RfNihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgibHN0OiBMaXN0W2ludF0gPSBbXSIpCisKIGNsYXNzIFRlc3RFeGNlcHQoR3JhbW1hclRlc3QpOgogICAgIGRlZiB0ZXN0X25ldyhzZWxmKToKICAgICAgICAgcyA9ICIiIgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQppbmRleCA0ZDU4NWE4Li4xNzcxMjZkIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQpAQCAtOSwxMSArOSw2IEBACiBlc3BlY2lhbGx5IHdoZW4gZGVidWdnaW5nIGEgdGVzdC4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotCiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CmluZGV4IDg1NjMwMDEuLmU5YmFlNWUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQpAQCAtMiwyNCArMiwxOCBAQAogVW5pdCB0ZXN0cyBmb3IgcmVmYWN0b3IucHkuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBjb2RlY3MKLWltcG9ydCBvcGVyYXRvcgogaW1wb3J0IGlvCiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIAogZnJvbSBsaWIydG8zIGltcG9ydCByZWZhY3RvciwgcHlncmFtLCBmaXhlcl9iYXNlCiBmcm9tIGxpYjJ0bzMucGdlbjIgaW1wb3J0IHRva2VuCiAKLWZyb20gLiBpbXBvcnQgc3VwcG9ydAotCiAKIFRFU1RfREFUQV9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImRhdGEiKQogRklYRVJfRElSID0gb3MucGF0aC5qb2luKFRFU1RfREFUQV9ESVIsICJmaXhlcnMiKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CmluZGV4IGQyYmU4MmMuLmM2YzYxMzkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKQEAgLTMsOSArMyw2IEBACiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKLSMgUHl0aG9uIGltcG9ydHMKLWltcG9ydCBvcy5wYXRoCi0KICMgTG9jYWwgaW1wb3J0cwogZnJvbSBsaWIydG8zLnB5dHJlZSBpbXBvcnQgTm9kZSwgTGVhZgogZnJvbSBsaWIydG8zIGltcG9ydCBmaXhlcl91dGlsCmRpZmYgLS1naXQgYS9MaWIvbG9jYWxlLnB5IGIvTGliL2xvY2FsZS5weQppbmRleCA2ZDU5Y2Q4Li40ZGUwMDkwIDEwMDY0NAotLS0gYS9MaWIvbG9jYWxlLnB5CisrKyBiL0xpYi9sb2NhbGUucHkKQEAgLTMwMiwxMiArMzAyLDE2IEBACiAKIGRlZiBkZWxvY2FsaXplKHN0cmluZyk6CiAgICAgIlBhcnNlcyBhIHN0cmluZyBhcyBhIG5vcm1hbGl6ZWQgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKKworICAgIGNvbnYgPSBsb2NhbGVjb252KCkKKwogICAgICNGaXJzdCwgZ2V0IHJpZCBvZiB0aGUgZ3JvdXBpbmcKLSAgICB0cyA9IGxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCisgICAgdHMgPSBjb252Wyd0aG91c2FuZHNfc2VwJ10KICAgICBpZiB0czoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UodHMsICcnKQorCiAgICAgI25leHQsIHJlcGxhY2UgdGhlIGRlY2ltYWwgcG9pbnQgd2l0aCBhIGRvdAotICAgIGRkID0gbG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KKyAgICBkZCA9IGNvbnZbJ2RlY2ltYWxfcG9pbnQnXQogICAgIGlmIGRkOgogICAgICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShkZCwgJy4nKQogICAgIHJldHVybiBzdHJpbmcKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5IGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKaW5kZXggMjI3NDRlMS4uMjU5MGQ2NSAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKKysrIGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKQEAgLTMzLDggKzMzLDkgQEAKICAgICAgICAgICAgJ1N0cmVhbUhhbmRsZXInLCAnV0FSTicsICdXQVJOSU5HJywgJ2FkZExldmVsTmFtZScsICdiYXNpY0NvbmZpZycsCiAgICAgICAgICAgICdjYXB0dXJlV2FybmluZ3MnLCAnY3JpdGljYWwnLCAnZGVidWcnLCAnZGlzYWJsZScsICdlcnJvcicsCiAgICAgICAgICAgICdleGNlcHRpb24nLCAnZmF0YWwnLCAnZ2V0TGV2ZWxOYW1lJywgJ2dldExvZ2dlcicsICdnZXRMb2dnZXJDbGFzcycsCi0gICAgICAgICAgICdpbmZvJywgJ2xvZycsICdtYWtlTG9nUmVjb3JkJywgJ3NldExvZ2dlckNsYXNzJywgJ3dhcm4nLCAnd2FybmluZycsCi0gICAgICAgICAgICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLCAnbGFzdFJlc29ydCddCisgICAgICAgICAgICdpbmZvJywgJ2xvZycsICdtYWtlTG9nUmVjb3JkJywgJ3NldExvZ2dlckNsYXNzJywgJ3NodXRkb3duJywKKyAgICAgICAgICAgJ3dhcm4nLCAnd2FybmluZycsICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLAorICAgICAgICAgICAnbGFzdFJlc29ydCcsICdyYWlzZUV4Y2VwdGlvbnMnXQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMTA3LDYgKzEwOCw3IEBACiB9CiBfbmFtZVRvTGV2ZWwgPSB7CiAgICAgJ0NSSVRJQ0FMJzogQ1JJVElDQUwsCisgICAgJ0ZBVEFMJzogRkFUQUwsCiAgICAgJ0VSUk9SJzogRVJST1IsCiAgICAgJ1dBUk4nOiBXQVJOSU5HLAogICAgICdXQVJOSU5HJzogV0FSTklORywKQEAgLTkzNSw2ICs5MzcsMTAgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZGVsIHQsIHYsIHRiCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIHJldHVybiAnPCVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbGV2ZWwpCisKIGNsYXNzIFN0cmVhbUhhbmRsZXIoSGFuZGxlcik6CiAgICAgIiIiCiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHdyaXRlcyBsb2dnaW5nIHJlY29yZHMsIGFwcHJvcHJpYXRlbHkgZm9ybWF0dGVkLApAQCAtOTg2LDYgKzk5MiwxNCBAQAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIG5hbWUgPSBnZXRhdHRyKHNlbGYuc3RyZWFtLCAnbmFtZScsICcnKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgbmFtZSArPSAnICcKKyAgICAgICAgcmV0dXJuICc8JXMgJXMoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUsIGxldmVsKQorCisKIGNsYXNzIEZpbGVIYW5kbGVyKFN0cmVhbUhhbmRsZXIpOgogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgZm9ybWF0dGVkIGxvZ2dpbmcgcmVjb3JkcyB0byBkaXNrIGZpbGVzLgpAQCAtOTk0LDYgKzEwMDgsOCBAQAogICAgICAgICAiIiIKICAgICAgICAgT3BlbiB0aGUgc3BlY2lmaWVkIGZpbGUgYW5kIHVzZSBpdCBhcyB0aGUgc3RyZWFtIGZvciBsb2dnaW5nLgogICAgICAgICAiIiIKKyAgICAgICAgIyBJc3N1ZSAjMjc0OTM6IGFkZCBzdXBwb3J0IGZvciBQYXRoIG9iamVjdHMgdG8gYmUgcGFzc2VkIGluCisgICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgICAja2VlcCB0aGUgYWJzb2x1dGUgcGF0aCwgb3RoZXJ3aXNlIGRlcml2ZWQgY2xhc3NlcyB3aGljaCB1c2UgdGhpcwogICAgICAgICAjbWF5IGNvbWUgYSBjcm9wcGVyIHdoZW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNoYW5nZXMKICAgICAgICAgc2VsZi5iYXNlRmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCkBAIC0xMDQ4LDYgKzEwNjQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgIFN0cmVhbUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5iYXNlRmlsZW5hbWUsIGxldmVsKQorCisKIGNsYXNzIF9TdGRlcnJIYW5kbGVyKFN0cmVhbUhhbmRsZXIpOgogICAgICIiIgogICAgIFRoaXMgY2xhc3MgaXMgbGlrZSBhIFN0cmVhbUhhbmRsZXIgdXNpbmcgc3lzLnN0ZGVyciwgYnV0IGFsd2F5cyB1c2VzCkBAIC0xNTQwLDYgKzE1NjEsMTEgQEAKICAgICAgICAgICAgIHN1ZmZpeCA9ICcuJy5qb2luKChzZWxmLm5hbWUsIHN1ZmZpeCkpCiAgICAgICAgIHJldHVybiBzZWxmLm1hbmFnZXIuZ2V0TG9nZ2VyKHN1ZmZpeCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSwgbGV2ZWwpCisKKwogY2xhc3MgUm9vdExvZ2dlcihMb2dnZXIpOgogICAgICIiIgogICAgIEEgcm9vdCBsb2dnZXIgaXMgbm90IHRoYXQgZGlmZmVyZW50IHRvIGFueSBvdGhlciBsb2dnZXIsIGV4Y2VwdCB0aGF0CkBAIC0xNjY2LDYgKzE2OTIsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxvZ2dlciA9IHNlbGYubG9nZ2VyCisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKGxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGxvZ2dlci5uYW1lLCBsZXZlbCkKKwogcm9vdCA9IFJvb3RMb2dnZXIoV0FSTklORykKIExvZ2dlci5yb290ID0gcm9vdAogTG9nZ2VyLm1hbmFnZXIgPSBNYW5hZ2VyKExvZ2dlci5yb290KQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQppbmRleCBjMzlhNTZmLi43ZDc3OTczIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQorKysgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQpAQCAtMjQ2LDYgKzI0Niw5IEBACiAKICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHJlLmNvbXBpbGUoc2VsZi5leHRNYXRjaCwgcmUuQVNDSUkpCiAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSBzZWxmLmludGVydmFsICogaW50ZXJ2YWwgIyBtdWx0aXBseSBieSB1bml0cyByZXF1ZXN0ZWQKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgYWRkZWQgYmVjYXVzZSB0aGUgZmlsZW5hbWUgcGFzc2VkIGluIGNvdWxkIGJlIGEKKyAgICAgICAgIyBwYXRoIG9iamVjdCAoc2VlIElzc3VlICMyNzQ5MyksIGJ1dCBzZWxmLmJhc2VGaWxlbmFtZSB3aWxsIGJlIGEgc3RyaW5nCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5iYXNlRmlsZW5hbWUKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgdCA9IG9zLnN0YXQoZmlsZW5hbWUpW1NUX01USU1FXQogICAgICAgICBlbHNlOgpAQCAtNDQwLDExICs0NDMsMTEgQEAKICAgICAgICAgICAgIHNyZXMgPSBvcy5mc3RhdChzZWxmLnN0cmVhbS5maWxlbm8oKSkKICAgICAgICAgICAgIHNlbGYuZGV2LCBzZWxmLmlubyA9IHNyZXNbU1RfREVWXSwgc3Jlc1tTVF9JTk9dCiAKLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgorICAgIGRlZiByZW9wZW5JZk5lZWRlZChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEVtaXQgYSByZWNvcmQuCisgICAgICAgIFJlb3BlbiBsb2cgZmlsZSBpZiBuZWVkZWQuCiAKLSAgICAgICAgRmlyc3QgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgYW5kIGlmIGl0CisgICAgICAgIENoZWNrcyBpZiB0aGUgdW5kZXJseWluZyBmaWxlIGhhcyBjaGFuZ2VkLCBhbmQgaWYgaXQKICAgICAgICAgaGFzLCBjbG9zZSB0aGUgb2xkIHN0cmVhbSBhbmQgcmVvcGVuIHRoZSBmaWxlIHRvIGdldCB0aGUKICAgICAgICAgY3VycmVudCBzdHJlYW0uCiAgICAgICAgICIiIgpAQCAtNDY3LDYgKzQ3MCwxNSBAQAogICAgICAgICAgICAgICAgICMgb3BlbiBhIG5ldyBmaWxlIGhhbmRsZSBhbmQgZ2V0IG5ldyBzdGF0IGluZm8gZnJvbSB0aGF0IGZkCiAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKICAgICAgICAgICAgICAgICBzZWxmLl9zdGF0c3RyZWFtKCkKKworICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CisgICAgICAgICIiIgorICAgICAgICBFbWl0IGEgcmVjb3JkLgorCisgICAgICAgIElmIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgcmVvcGVuIHRoZSBmaWxlIGJlZm9yZSBlbWl0dGluZyB0aGUKKyAgICAgICAgcmVjb3JkIHRvIGl0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZW9wZW5JZk5lZWRlZCgpCiAgICAgICAgIGxvZ2dpbmcuRmlsZUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCiAKIApAQCAtMTIyOSwxNyArMTI0MSwyNSBAQAogICAgIGZsdXNoaW5nIHRoZW0gdG8gYSB0YXJnZXQgaGFuZGxlci4gRmx1c2hpbmcgb2NjdXJzIHdoZW5ldmVyIHRoZSBidWZmZXIKICAgICBpcyBmdWxsLCBvciB3aGVuIGFuIGV2ZW50IG9mIGEgY2VydGFpbiBzZXZlcml0eSBvciBncmVhdGVyIGlzIHNlZW4uCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcGFjaXR5LCBmbHVzaExldmVsPWxvZ2dpbmcuRVJST1IsIHRhcmdldD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwYWNpdHksIGZsdXNoTGV2ZWw9bG9nZ2luZy5FUlJPUiwgdGFyZ2V0PU5vbmUsCisgICAgICAgICAgICAgICAgIGZsdXNoT25DbG9zZT1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIEluaXRpYWxpemUgdGhlIGhhbmRsZXIgd2l0aCB0aGUgYnVmZmVyIHNpemUsIHRoZSBsZXZlbCBhdCB3aGljaAogICAgICAgICBmbHVzaGluZyBzaG91bGQgb2NjdXIgYW5kIGFuIG9wdGlvbmFsIHRhcmdldC4KIAogICAgICAgICBOb3RlIHRoYXQgd2l0aG91dCBhIHRhcmdldCBiZWluZyBzZXQgZWl0aGVyIGhlcmUgb3IgdmlhIHNldFRhcmdldCgpLAogICAgICAgICBhIE1lbW9yeUhhbmRsZXIgaXMgbm8gdXNlIHRvIGFueW9uZSEKKworICAgICAgICBUaGUgYGBmbHVzaE9uQ2xvc2VgYCBhcmd1bWVudCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorICAgICAgICByZWFzb25zIC0gdGhlIG9sZCBiZWhhdmlvdXIgaXMgdGhhdCB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZCwgdGhlCisgICAgICAgIGJ1ZmZlciBpcyBmbHVzaGVkLCBldmVuIGlmIHRoZSBmbHVzaCBsZXZlbCBoYXNuJ3QgYmVlbiBleGNlZWRlZCBub3IgdGhlCisgICAgICAgIGNhcGFjaXR5IGV4Y2VlZGVkLiBUbyBwcmV2ZW50IHRoaXMsIHNldCBgYGZsdXNoT25DbG9zZWBgIHRvIGBgRmFsc2VgYC4KICAgICAgICAgIiIiCiAgICAgICAgIEJ1ZmZlcmluZ0hhbmRsZXIuX19pbml0X18oc2VsZiwgY2FwYWNpdHkpCiAgICAgICAgIHNlbGYuZmx1c2hMZXZlbCA9IGZsdXNoTGV2ZWwKICAgICAgICAgc2VsZi50YXJnZXQgPSB0YXJnZXQKKyAgICAgICAgIyBTZWUgSXNzdWUgIzI2NTU5IGZvciB3aHkgdGhpcyBoYXMgYmVlbiBhZGRlZAorICAgICAgICBzZWxmLmZsdXNoT25DbG9zZSA9IGZsdXNoT25DbG9zZQogCiAgICAgZGVmIHNob3VsZEZsdXNoKHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtMTI3MywxMCArMTI5MywxMiBAQAogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgRmx1c2gsIHNldCB0aGUgdGFyZ2V0IHRvIE5vbmUgYW5kIGxvc2UgdGhlIGJ1ZmZlci4KKyAgICAgICAgRmx1c2gsIGlmIGFwcHJvcHJpYXRlbHkgY29uZmlndXJlZCwgc2V0IHRoZSB0YXJnZXQgdG8gTm9uZSBhbmQgbG9zZSB0aGUKKyAgICAgICAgYnVmZmVyLgogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5mbHVzaCgpCisgICAgICAgICAgICBpZiBzZWxmLmZsdXNoT25DbG9zZToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvbHptYS5weSBiL0xpYi9sem1hLnB5CmluZGV4IDdkZmYxYzMuLjA4MTdiODcgMTAwNjQ0Ci0tLSBhL0xpYi9sem1hLnB5CisrKyBiL0xpYi9sem1hLnB5CkBAIC0yMyw2ICsyMyw3IEBACiAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGlvCitpbXBvcnQgb3MKIGZyb20gX2x6bWEgaW1wb3J0ICoKIGZyb20gX2x6bWEgaW1wb3J0IF9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMKIGltcG9ydCBfY29tcHJlc3Npb24KQEAgLTQ5LDkgKzUwLDEwIEBACiAgICAgICAgICAgICAgICAgIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CiAgICAgICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCiAKLSAgICAgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvcgotICAgICAgICBieXRlcyBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuCi0gICAgICAgIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKyAgICAgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciwKKyAgICAgICAgYnl0ZXMsIG9yIFBhdGhMaWtlIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMKKyAgICAgICAgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yCisgICAgICAgIHdyaXRlIHRvLgogCiAgICAgICAgIG1vZGUgY2FuIGJlICJyIiBmb3IgcmVhZGluZyAoZGVmYXVsdCksICJ3IiBmb3IgKG92ZXIpd3JpdGluZywKICAgICAgICAgIngiIGZvciBjcmVhdGluZyBleGNsdXNpdmVseSwgb3IgImEiIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbgpAQCAtMTEyLDcgKzExNCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKIAotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKICAgICAgICAgICAgICAgICBtb2RlICs9ICJiIgogICAgICAgICAgICAgc2VsZi5fZnAgPSBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCBtb2RlKQpAQCAtMTIyLDcgKzEyNCw3IEBACiAgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyLCBieXRlcywgZmlsZSBvciBQYXRoTGlrZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLCBMWk1BRGVjb21wcmVzc29yLApAQCAtMjYzLDkgKzI2NSw5IEBACiAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKICAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLSAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yIGJ5dGVzCi0gICAgb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbgotICAgIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKyAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyLCBieXRlcywKKyAgICBvciBQYXRoTGlrZSBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQKKyAgICBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgogCiAgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiAoZGVmYXVsdCksICJ3IiwgIndiIiwgIngiLCAieGIiLAogICAgICJhIiwgb3IgImFiIiBmb3IgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIsICJ4dCIsIG9yICJhdCIgZm9yIHRleHQKZGlmZiAtLWdpdCBhL0xpYi9tYWlsYm94LnB5IGIvTGliL21haWxib3gucHkKaW5kZXggMDI3MGUyNS4uMGUyMzk4NyAxMDA2NDQKLS0tIGEvTGliL21haWxib3gucHkKKysrIGIvTGliL21haWxib3gucHkKQEAgLTIzLDkgKzIzLDEwIEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBOb25lCiAKLV9fYWxsX18gPSBbICdNYWlsYm94JywgJ01haWxkaXInLCAnbWJveCcsICdNSCcsICdCYWJ5bCcsICdNTURGJywKLSAgICAgICAgICAgICdNZXNzYWdlJywgJ01haWxkaXJNZXNzYWdlJywgJ21ib3hNZXNzYWdlJywgJ01ITWVzc2FnZScsCi0gICAgICAgICAgICAnQmFieWxNZXNzYWdlJywgJ01NREZNZXNzYWdlJ10KK19fYWxsX18gPSBbJ01haWxib3gnLCAnTWFpbGRpcicsICdtYm94JywgJ01IJywgJ0JhYnlsJywgJ01NREYnLAorICAgICAgICAgICAnTWVzc2FnZScsICdNYWlsZGlyTWVzc2FnZScsICdtYm94TWVzc2FnZScsICdNSE1lc3NhZ2UnLAorICAgICAgICAgICAnQmFieWxNZXNzYWdlJywgJ01NREZNZXNzYWdlJywgJ0Vycm9yJywgJ05vU3VjaE1haWxib3hFcnJvcicsCisgICAgICAgICAgICdOb3RFbXB0eUVycm9yJywgJ0V4dGVybmFsQ2xhc2hFcnJvcicsICdGb3JtYXRFcnJvciddCiAKIGxpbmVzZXAgPSBvcy5saW5lc2VwLmVuY29kZSgnYXNjaWknKQogCmRpZmYgLS1naXQgYS9MaWIvbWltZXR5cGVzLnB5IGIvTGliL21pbWV0eXBlcy5weQppbmRleCAwYmU3NmFkLi45YTg4NjgwIDEwMDY0NAotLS0gYS9MaWIvbWltZXR5cGVzLnB5CisrKyBiL0xpYi9taW1ldHlwZXMucHkKQEAgLTMzLDggKzMzLDEwIEBACiAgICAgX3dpbnJlZyA9IE5vbmUKIAogX19hbGxfXyA9IFsKLSAgICAiZ3Vlc3NfdHlwZSIsImd1ZXNzX2V4dGVuc2lvbiIsImd1ZXNzX2FsbF9leHRlbnNpb25zIiwKLSAgICAiYWRkX3R5cGUiLCJyZWFkX21pbWVfdHlwZXMiLCJpbml0IgorICAgICJrbm93bmZpbGVzIiwgImluaXRlZCIsICJNaW1lVHlwZXMiLAorICAgICJndWVzc190eXBlIiwgImd1ZXNzX2FsbF9leHRlbnNpb25zIiwgImd1ZXNzX2V4dGVuc2lvbiIsCisgICAgImFkZF90eXBlIiwgImluaXQiLCAicmVhZF9taW1lX3R5cGVzIiwKKyAgICAic3VmZml4X21hcCIsICJlbmNvZGluZ3NfbWFwIiwgInR5cGVzX21hcCIsICJjb21tb25fdHlwZXMiCiBdCiAKIGtub3duZmlsZXMgPSBbCmRpZmYgLS1naXQgYS9MaWIvbW9kdWxlZmluZGVyLnB5IGIvTGliL21vZHVsZWZpbmRlci5weQppbmRleCA4MTAzNTAyLi5lMjIwMzE1IDEwMDY0NAotLS0gYS9MaWIvbW9kdWxlZmluZGVyLnB5CisrKyBiL0xpYi9tb2R1bGVmaW5kZXIucHkKQEAgLTEwLDcgKzEwLDcgQEAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCB3YXJuaW5ncwogd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICBpbXBvcnQgaW1wCiAKIExPQURfQ09OU1QgPSBkaXMub3BtYXBbJ0xPQURfQ09OU1QnXQpAQCAtMzM2LDggKzMzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSA9IG5hbWUgKyAiLiIgKyBzdWIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9iYWRtb2R1bGUoZnVsbG5hbWUsIGNhbGxlcikKIAotICAgIGRlZiBzY2FuX29wY29kZXNfMjUoc2VsZiwgY28sCi0gICAgICAgICAgICAgICAgICAgICB1bnBhY2sgPSBzdHJ1Y3QudW5wYWNrKToKKyAgICBkZWYgc2Nhbl9vcGNvZGVzKHNlbGYsIGNvKToKICAgICAgICAgIyBTY2FuIHRoZSBjb2RlLCBhbmQgeWllbGQgJ2ludGVyZXN0aW5nJyBvcGNvZGUgY29tYmluYXRpb25zCiAgICAgICAgIGNvZGUgPSBjby5jb19jb2RlCiAgICAgICAgIG5hbWVzID0gY28uY29fbmFtZXMKQEAgLTM2MCw3ICszNTksNyBAQAogCiAgICAgZGVmIHNjYW5fY29kZShzZWxmLCBjbywgbSk6CiAgICAgICAgIGNvZGUgPSBjby5jb19jb2RlCi0gICAgICAgIHNjYW5uZXIgPSBzZWxmLnNjYW5fb3Bjb2Rlc18yNQorICAgICAgICBzY2FubmVyID0gc2VsZi5zY2FuX29wY29kZXMKICAgICAgICAgZm9yIHdoYXQsIGFyZ3MgaW4gc2Nhbm5lcihjbyk6CiAgICAgICAgICAgICBpZiB3aGF0ID09ICJzdG9yZSI6CiAgICAgICAgICAgICAgICAgbmFtZSwgPSBhcmdzCmRpZmYgLS1naXQgYS9MaWIvbXNpbGliL19faW5pdF9fLnB5IGIvTGliL21zaWxpYi9fX2luaXRfXy5weQppbmRleCA2ZDBhMjhmLi5mMDM3MGMyIDEwMDY0NAotLS0gYS9MaWIvbXNpbGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKQEAgLTEsNyArMSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNSBNYXJ0aW4gdi4gTMO2d2lzCiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIGZyb20gX21zaSBpbXBvcnQgKgotaW1wb3J0IGdsb2IKK2ltcG9ydCBmbm1hdGNoCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwpAQCAtMjg5LDcgKzI4OSw3IEBACiAgICAgZGVmIG1ha2Vfc2hvcnQoc2VsZiwgZmlsZSk6CiAgICAgICAgIG9sZGZpbGUgPSBmaWxlCiAgICAgICAgIGZpbGUgPSBmaWxlLnJlcGxhY2UoJysnLCAnXycpCi0gICAgICAgIGZpbGUgPSAnJy5qb2luKGMgZm9yIGMgaW4gZmlsZSBpZiBub3QgYyBpbiAnICIvXFtdOjs9LCcpCisgICAgICAgIGZpbGUgPSAnJy5qb2luKGMgZm9yIGMgaW4gZmlsZSBpZiBub3QgYyBpbiByJyAiL1xbXTo7PSwnKQogICAgICAgICBwYXJ0cyA9IGZpbGUuc3BsaXQoIi4iKQogICAgICAgICBpZiBsZW4ocGFydHMpID4gMToKICAgICAgICAgICAgIHByZWZpeCA9ICIiLmpvaW4ocGFydHNbOi0xXSkudXBwZXIoKQpAQCAtMzc5LDcgKzM3OSwxMyBAQAogICAgIGRlZiBnbG9iKHNlbGYsIHBhdHRlcm4sIGV4Y2x1ZGUgPSBOb25lKToKICAgICAgICAgIiIiQWRkIGEgbGlzdCBvZiBmaWxlcyB0byB0aGUgY3VycmVudCBjb21wb25lbnQgYXMgc3BlY2lmaWVkIGluIHRoZQogICAgICAgICBnbG9iIHBhdHRlcm4uIEluZGl2aWR1YWwgZmlsZXMgY2FuIGJlIGV4Y2x1ZGVkIGluIHRoZSBleGNsdWRlIGxpc3QuIiIiCi0gICAgICAgIGZpbGVzID0gZ2xvYi5nbG9iMShzZWxmLmFic29sdXRlLCBwYXR0ZXJuKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIoc2VsZi5hYnNvbHV0ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgaWYgcGF0dGVybls6MV0gIT0gJy4nOgorICAgICAgICAgICAgZmlsZXMgPSAoZiBmb3IgZiBpbiBmaWxlcyBpZiBmWzBdICE9ICcuJykKKyAgICAgICAgZmlsZXMgPSBmbm1hdGNoLmZpbHRlcihmaWxlcywgcGF0dGVybikKICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBleGNsdWRlIGFuZCBmIGluIGV4Y2x1ZGU6IGNvbnRpbnVlCiAgICAgICAgICAgICBzZWxmLmFkZF9maWxlKGYpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKaW5kZXggZDBhMWI4Ni4uZDQ5ZThmMCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQpAQCAtMjAsMTEgKzIwLDExIEBACiAKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiAKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogZnJvbSAuIGltcG9ydCBBdXRoZW50aWNhdGlvbkVycm9yLCBCdWZmZXJUb29TaG9ydAotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCitfRm9ya2luZ1BpY2tsZXIgPSByZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIKIAogdHJ5OgogICAgIGltcG9ydCBfd2luYXBpCkBAIC0yMDMsNyArMjAzLDcgQEAKICAgICAgICAgIiIiU2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCIiIgogICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCi0gICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKSkKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKSkKIAogICAgIGRlZiByZWN2X2J5dGVzKHNlbGYsIG1heGxlbmd0aD1Ob25lKToKICAgICAgICAgIiIiCkBAIC0yNDgsNyArMjQ4LDcgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQogICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKCkKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCiAKICAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PTAuMCk6CiAgICAgICAgICIiIldoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIiIiCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKaW5kZXggNjM4NDlmOS4uMDk0NTVlMiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQpAQCAtMyw2ICszLDcgQEAKIGltcG9ydCB0aHJlYWRpbmcKIAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCitmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogCiBfX2FsbF9fID0gW10gICAgICAgICAgICAjIHRoaW5ncyBhcmUgY29waWVkIGZyb20gaGVyZSB0byBfX2luaXRfXy5weQogCkBAIC0xOTgsNiArMTk5LDE2IEBACiAgICAgZGVmIHNldF9zdGFydF9tZXRob2Qoc2VsZiwgbWV0aG9kPU5vbmUpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc2V0IHN0YXJ0IG1ldGhvZCBvZiBjb25jcmV0ZSBjb250ZXh0JykKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWR1Y2VyKHNlbGYpOgorICAgICAgICAnJydDb250cm9scyBob3cgb2JqZWN0cyB3aWxsIGJlIHJlZHVjZWQgdG8gYSBmb3JtIHRoYXQgY2FuIGJlCisgICAgICAgIHNoYXJlZCB3aXRoIG90aGVyIHByb2Nlc3Nlcy4nJycKKyAgICAgICAgcmV0dXJuIGdsb2JhbHMoKS5nZXQoJ3JlZHVjdGlvbicpCisKKyAgICBAcmVkdWNlci5zZXR0ZXIKKyAgICBkZWYgcmVkdWNlcihzZWxmLCByZWR1Y3Rpb24pOgorICAgICAgICBnbG9iYWxzKClbJ3JlZHVjdGlvbiddID0gcmVkdWN0aW9uCisKICAgICBkZWYgX2NoZWNrX2F2YWlsYWJsZShzZWxmKToKICAgICAgICAgcGFzcwogCkBAIC0yNDUsNyArMjU2LDYgQEAKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICByZXR1cm4gWydzcGF3biddCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogICAgICAgICAgICAgaWYgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFsnZm9yaycsICdzcGF3bicsICdmb3Jrc2VydmVyJ10KICAgICAgICAgICAgIGVsc2U6CkBAIC0yOTIsNyArMzAyLDYgQEAKICAgICAgICAgX25hbWUgPSAnZm9ya3NlcnZlcicKICAgICAgICAgUHJvY2VzcyA9IEZvcmtTZXJ2ZXJQcm9jZXNzCiAgICAgICAgIGRlZiBfY2hlY2tfYXZhaWxhYmxlKHNlbGYpOgotICAgICAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KICAgICAgICAgICAgIGlmIG5vdCByZWR1Y3Rpb24uSEFWRV9TRU5EX0hBTkRMRToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmb3Jrc2VydmVyIHN0YXJ0IG1ldGhvZCBub3QgYXZhaWxhYmxlJykKIApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CmluZGV4IGFkMDFlZGUuLmYyYzE3OWUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKQEAgLTksNyArOSw3IEBACiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHNlbWFwaG9yZV90cmFja2VyCiBmcm9tIC4gaW1wb3J0IHNwYXduCiBmcm9tIC4gaW1wb3J0IHV0aWwKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQppbmRleCA0NGQ5NjM4Li40NDMzMjE1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CkBAIC0xNCw4ICsxNCw3IEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aHJlYWRpbmcKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Ci1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBhc3NlcnRfc3Bhd25pbmcKIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydCdWZmZXJXcmFwcGVyJ10KQEAgLTQ4LDcgKzQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gKHNlbGYuc2l6ZSwgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6Ci0gICAgICAgICAgICBjb250ZXh0LmFzc2VydF9zcGF3bmluZyhzZWxmKQorICAgICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGUKIAogICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CmluZGV4IGIxNzU0NzAuLmI5Y2U4NGIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQpAQCAtMjMsMTAgKzIzLDkgQEAKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjCiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGdldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBwb29sCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgZ2V0X2NvbnRleHQKIApAQCAtMTQyLDcgKzE0MSw4IEBACiAKICAgICAgICAgc2VsZi5pZF90b19vYmogPSB7JzAnOiAoTm9uZSwgKCkpfQogICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50ID0ge30KLSAgICAgICAgc2VsZi5tdXRleCA9IHRocmVhZGluZy5STG9jaygpCisgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqID0ge30KKyAgICAgICAgc2VsZi5tdXRleCA9IHRocmVhZGluZy5Mb2NrKCkKIAogICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYpOgogICAgICAgICAnJycKQEAgLTIyNyw3ICsyMjcsMTQgQEAKICAgICAgICAgICAgICAgICBtZXRob2RuYW1lID0gb2JqID0gTm9uZQogICAgICAgICAgICAgICAgIHJlcXVlc3QgPSByZWN2KCkKICAgICAgICAgICAgICAgICBpZGVudCwgbWV0aG9kbmFtZSwgYXJncywga3dkcyA9IHJlcXVlc3QKLSAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IGlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gaWRfdG9fb2JqW2lkZW50XQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBrZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBzZWNvbmRfa2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBrZQogCiAgICAgICAgICAgICAgICAgaWYgbWV0aG9kbmFtZSBub3QgaW4gZXhwb3NlZDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCkBAIC0zMDgsNyArMzE1LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgICAgICBrZXlzID0gbGlzdChzZWxmLmlkX3RvX29iai5rZXlzKCkpCisgICAgICAgICAgICBrZXlzID0gbGlzdChzZWxmLmlkX3RvX3JlZmNvdW50LmtleXMoKSkKICAgICAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgICAgICBmb3IgaWRlbnQgaW4ga2V5czoKICAgICAgICAgICAgICAgICBpZiBpZGVudCAhPSAnMCc6CkBAIC0zMjEsNyArMzI4LDggQEAKICAgICAgICAgJycnCiAgICAgICAgIE51bWJlciBvZiBzaGFyZWQgb2JqZWN0cwogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLmlkX3RvX29iaikgLSAxICAgICAgIyBkb24ndCBjb3VudCBpZGVudD0nMCcKKyAgICAgICAgIyBEb2Vzbid0IHVzZSAobGVuKHNlbGYuaWRfdG9fb2JqKSAtIDEpIGFzIHdlIHNob3VsZG4ndCBjb3VudCBpZGVudD0nMCcKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmlkX3RvX3JlZmNvdW50KQogCiAgICAgZGVmIHNodXRkb3duKHNlbGYsIGMpOgogICAgICAgICAnJycKQEAgLTM2MywxMyArMzcxLDkgQEAKICAgICAgICAgICAgIHNlbGYuaWRfdG9fb2JqW2lkZW50XSA9IChvYmosIHNldChleHBvc2VkKSwgbWV0aG9kX3RvX3R5cGVpZCkKICAgICAgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50OgogICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID0gMAotICAgICAgICAgICAgIyBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBpbW1lZGlhdGVseSwgdG8gYXZvaWQKLSAgICAgICAgICAgICMgdGhpcyBvYmplY3QgYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVmb3JlIGEgUHJveHkKLSAgICAgICAgICAgICMgb2JqZWN0IGZvciBpdCBjYW4gYmUgY3JlYXRlZC4gIFRoZSBjYWxsZXIgb2YgY3JlYXRlKCkKLSAgICAgICAgICAgICMgaXMgcmVzcG9uc2libGUgZm9yIGRvaW5nIGEgZGVjcmVmIG9uY2UgdGhlIFByb3h5IG9iamVjdAotICAgICAgICAgICAgIyBoYXMgYmVlbiBjcmVhdGVkLgotICAgICAgICAgICAgc2VsZi5pbmNyZWYoYywgaWRlbnQpCi0gICAgICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCisKKyAgICAgICAgc2VsZi5pbmNyZWYoYywgaWRlbnQpCisgICAgICAgIHJldHVybiBpZGVudCwgdHVwbGUoZXhwb3NlZCkKIAogICAgIGRlZiBnZXRfbWV0aG9kcyhzZWxmLCBjLCB0b2tlbik6CiAgICAgICAgICcnJwpAQCAtMzg3LDE1ICszOTEsNDUgQEAKIAogICAgIGRlZiBpbmNyZWYoc2VsZiwgYywgaWRlbnQpOgogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6Ci0gICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSArPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGtlOgorICAgICAgICAgICAgICAgICMgSWYgbm8gZXh0ZXJuYWwgcmVmZXJlbmNlcyBleGlzdCBidXQgYW4gaW50ZXJuYWwgKHRvIHRoZQorICAgICAgICAgICAgICAgICMgbWFuYWdlcikgc3RpbGwgZG9lcyBhbmQgYSBuZXcgZXh0ZXJuYWwgcmVmZXJlbmNlIGlzIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAjIGZyb20gaXQsIHJlc3RvcmUgdGhlIG1hbmFnZXIncyB0cmFja2luZyBvZiBpdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICMgcHJldmlvdXNseSBzdGFzaGVkIGludGVybmFsIHJlZi4KKyAgICAgICAgICAgICAgICBpZiBpZGVudCBpbiBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fb2JqW2lkZW50XSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IHNlbGYuaWRfdG9fb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdTZXJ2ZXIgcmUtZW5hYmxlZCB0cmFja2luZyAmIElOQ1JFRiAlcicsIGlkZW50KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGtlCiAKICAgICBkZWYgZGVjcmVmKHNlbGYsIGMsIGlkZW50KToKKyAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQgYW5kIFwKKyAgICAgICAgICAgIGlkZW50IGluIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgdXRpbC5kZWJ1ZygnU2VydmVyIERFQ1JFRiBza2lwcGluZyAlcicsIGlkZW50KQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgYXNzZXJ0IHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID49IDEKICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdIC09IDEKICAgICAgICAgICAgIGlmIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID09IDA6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fb2JqW2lkZW50XSwgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0KLSAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdkaXNwb3Npbmcgb2Ygb2JqIHdpdGggaWQgJXInLCBpZGVudCkKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0KKworICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudDoKKyAgICAgICAgICAgICMgVHdvLXN0ZXAgcHJvY2VzcyBpbiBjYXNlIHRoZSBvYmplY3QgdHVybnMgb3V0IHRvIGNvbnRhaW4gb3RoZXIKKyAgICAgICAgICAgICMgcHJveHkgb2JqZWN0cyAoZS5nLiBhIG1hbmFnZWQgbGlzdCBvZiBtYW5hZ2VkIGxpc3RzKS4KKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCBkZWxldGluZyBzZWxmLmlkX3RvX29ialtpZGVudF0gd291bGQgdHJpZ2dlciB0aGUKKyAgICAgICAgICAgICMgZGVsZXRpbmcgb2YgdGhlIHN0b3JlZCB2YWx1ZSAoYW5vdGhlciBtYW5hZ2VkIG9iamVjdCkgd2hpY2ggd291bGQKKyAgICAgICAgICAgICMgaW4gdHVybiBhdHRlbXB0IHRvIGFjcXVpcmUgdGhlIG11dGV4IHRoYXQgaXMgYWxyZWFkeSBoZWxkIGhlcmUuCisgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSAoTm9uZSwgKCksIE5vbmUpICAjIHRocmVhZC1zYWZlCisgICAgICAgICAgICB1dGlsLmRlYnVnKCdkaXNwb3Npbmcgb2Ygb2JqIHdpdGggaWQgJXInLCBpZGVudCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5pZF90b19vYmpbaWRlbnRdCisKIAogIwogIyBDbGFzcyB0byByZXByZXNlbnQgc3RhdGUgb2YgYSBtYW5hZ2VyCkBAIC02NTgsNyArNjkyLDcgQEAKICAgICBfbXV0ZXggPSB1dGlsLkZvcmtBd2FyZVRocmVhZExvY2soKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuLCBzZXJpYWxpemVyLCBtYW5hZ2VyPU5vbmUsCi0gICAgICAgICAgICAgICAgIGF1dGhrZXk9Tm9uZSwgZXhwb3NlZD1Ob25lLCBpbmNyZWY9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGF1dGhrZXk9Tm9uZSwgZXhwb3NlZD1Ob25lLCBpbmNyZWY9VHJ1ZSwgbWFuYWdlcl9vd25lZD1GYWxzZSk6CiAgICAgICAgIHdpdGggQmFzZVByb3h5Ll9tdXRleDoKICAgICAgICAgICAgIHRsc19pZHNldCA9IEJhc2VQcm94eS5fYWRkcmVzc190b19sb2NhbC5nZXQodG9rZW4uYWRkcmVzcywgTm9uZSkKICAgICAgICAgICAgIGlmIHRsc19pZHNldCBpcyBOb25lOgpAQCAtNjgwLDYgKzcxNCwxMiBAQAogICAgICAgICBzZWxmLl9zZXJpYWxpemVyID0gc2VyaWFsaXplcgogICAgICAgICBzZWxmLl9DbGllbnQgPSBsaXN0ZW5lcl9jbGllbnRbc2VyaWFsaXplcl1bMV0KIAorICAgICAgICAjIFNob3VsZCBiZSBzZXQgdG8gVHJ1ZSBvbmx5IHdoZW4gYSBwcm94eSBvYmplY3QgaXMgYmVpbmcgY3JlYXRlZAorICAgICAgICAjIG9uIHRoZSBtYW5hZ2VyIHNlcnZlcjsgcHJpbWFyeSB1c2UgY2FzZTogbmVzdGVkIHByb3h5IG9iamVjdHMuCisgICAgICAgICMgUmVidWlsZFByb3h5IGRldGVjdHMgd2hlbiBhIHByb3h5IGlzIGJlaW5nIGNyZWF0ZWQgb24gdGhlIG1hbmFnZXIKKyAgICAgICAgIyBhbmQgc2V0cyB0aGlzIHZhbHVlIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIHNlbGYuX293bmVkX2J5X21hbmFnZXIgPSBtYW5hZ2VyX293bmVkCisKICAgICAgICAgaWYgYXV0aGtleSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2F1dGhrZXkgPSBwcm9jZXNzLkF1dGhlbnRpY2F0aW9uU3RyaW5nKGF1dGhrZXkpCiAgICAgICAgIGVsaWYgc2VsZi5fbWFuYWdlciBpcyBub3QgTm9uZToKQEAgLTczOCw2ICs3NzgsMTAgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJyNHRVRWQUxVRScpCiAKICAgICBkZWYgX2luY3JlZihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fb3duZWRfYnlfbWFuYWdlcjoKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ293bmVkX2J5X21hbmFnZXIgc2tpcHBlZCBJTkNSRUYgb2YgJXInLCBzZWxmLl90b2tlbi5pZCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGNvbm4gPSBzZWxmLl9DbGllbnQoc2VsZi5fdG9rZW4uYWRkcmVzcywgYXV0aGtleT1zZWxmLl9hdXRoa2V5KQogICAgICAgICBkaXNwYXRjaChjb25uLCBOb25lLCAnaW5jcmVmJywgKHNlbGYuX2lkLCkpCiAgICAgICAgIHV0aWwuZGVidWcoJ0lOQ1JFRiAlcicsIHNlbGYuX3Rva2VuLmlkKQpAQCAtNzg4LDcgKzgzMiw3IEBACiAKICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICAga3dkcyA9IHt9Ci0gICAgICAgIGlmIGNvbnRleHQuZ2V0X3NwYXduaW5nX3BvcGVuKCkgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIGdldF9zcGF3bmluZ19wb3BlbigpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAga3dkc1snYXV0aGtleSddID0gc2VsZi5fYXV0aGtleQogCiAgICAgICAgIGlmIGdldGF0dHIoc2VsZiwgJ19pc2F1dG8nLCBGYWxzZSk6CkBAIC04MjIsMTkgKzg2NiwxOSBAQAogZGVmIFJlYnVpbGRQcm94eShmdW5jLCB0b2tlbiwgc2VyaWFsaXplciwga3dkcyk6CiAgICAgJycnCiAgICAgRnVuY3Rpb24gdXNlZCBmb3IgdW5waWNrbGluZyBwcm94eSBvYmplY3RzLgotCi0gICAgSWYgcG9zc2libGUgdGhlIHNoYXJlZCBvYmplY3QgaXMgcmV0dXJuZWQsIG9yIG90aGVyd2lzZSBhIHByb3h5IGZvciBpdC4KICAgICAnJycKICAgICBzZXJ2ZXIgPSBnZXRhdHRyKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCksICdfbWFuYWdlcl9zZXJ2ZXInLCBOb25lKQotCiAgICAgaWYgc2VydmVyIGFuZCBzZXJ2ZXIuYWRkcmVzcyA9PSB0b2tlbi5hZGRyZXNzOgotICAgICAgICByZXR1cm4gc2VydmVyLmlkX3RvX29ialt0b2tlbi5pZF1bMF0KLSAgICBlbHNlOgotICAgICAgICBpbmNyZWYgPSAoCi0gICAgICAgICAgICBrd2RzLnBvcCgnaW5jcmVmJywgVHJ1ZSkgYW5kCi0gICAgICAgICAgICBub3QgZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX2luaGVyaXRpbmcnLCBGYWxzZSkKLSAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIGZ1bmModG9rZW4sIHNlcmlhbGl6ZXIsIGluY3JlZj1pbmNyZWYsICoqa3dkcykKKyAgICAgICAgdXRpbC5kZWJ1ZygnUmVidWlsZCBhIHByb3h5IG93bmVkIGJ5IG1hbmFnZXIsIHRva2VuPSVyJywgdG9rZW4pCisgICAgICAgIGt3ZHNbJ21hbmFnZXJfb3duZWQnXSA9IFRydWUKKyAgICAgICAgaWYgdG9rZW4uaWQgbm90IGluIHNlcnZlci5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICBzZXJ2ZXIuaWRfdG9fbG9jYWxfcHJveHlfb2JqW3Rva2VuLmlkXSA9IFwKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuaWRfdG9fb2JqW3Rva2VuLmlkXQorICAgIGluY3JlZiA9ICgKKyAgICAgICAga3dkcy5wb3AoJ2luY3JlZicsIFRydWUpIGFuZAorICAgICAgICBub3QgZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX2luaGVyaXRpbmcnLCBGYWxzZSkKKyAgICAgICAgKQorICAgIHJldHVybiBmdW5jKHRva2VuLCBzZXJpYWxpemVyLCBpbmNyZWY9aW5jcmVmLCAqKmt3ZHMpCiAKICMKICMgRnVuY3Rpb25zIHRvIGNyZWF0ZSBwcm94aWVzIGFuZCBwcm94eSB0eXBlcwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CmluZGV4IDZkMjU0NjkuLmZmZGY0MjYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKQEAgLTYzOCwyMiArNjM4LDI2IEBACiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IGxlbmd0aC8vY2h1bmtzaXplICsgYm9vbChsZW5ndGggJSBjaHVua3NpemUpCiAKICAgICBkZWYgX3NldChzZWxmLCBpLCBzdWNjZXNzX3Jlc3VsdCk6CisgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0IC09IDEKICAgICAgICAgc3VjY2VzcywgcmVzdWx0ID0gc3VjY2Vzc19yZXN1bHQKLSAgICAgICAgaWYgc3VjY2VzczoKKyAgICAgICAgaWYgc3VjY2VzcyBhbmQgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHNlbGYuX3ZhbHVlW2kqc2VsZi5fY2h1bmtzaXplOihpKzEpKnNlbGYuX2NodW5rc2l6ZV0gPSByZXN1bHQKLSAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0IC09IDEKICAgICAgICAgICAgIGlmIHNlbGYuX251bWJlcl9sZWZ0ID09IDA6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKLSAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgotICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQotICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCisgICAgICAgICAgICBpZiBub3Qgc3VjY2VzcyBhbmQgc2VsZi5fc3VjY2VzczoKKyAgICAgICAgICAgICAgICAjIG9ubHkgc3RvcmUgZmlyc3QgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgc2VsZi5fc3VjY2VzcyA9IEZhbHNlCisgICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKKyAgICAgICAgICAgIGlmIHNlbGYuX251bWJlcl9sZWZ0ID09IDA6CisgICAgICAgICAgICAgICAgIyBvbmx5IGNvbnNpZGVyIHRoZSByZXN1bHQgcmVhZHkgb25jZSBhbGwgam9icyBhcmUgZG9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAKICMKICMgQ2xhc3Mgd2hvc2UgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBieSBgUG9vbC5pbWFwKClgCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKaW5kZXggZTc5MjE5NC4uMjIyZGIyZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQpAQCAtMSwxMCArMSw5IEBACiBpbXBvcnQgaW8KIGltcG9ydCBvcwogCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBzZXRfc3Bhd25pbmdfcG9wZW4KIGlmIG5vdCByZWR1Y3Rpb24uSEFWRV9TRU5EX0hBTkRMRToKICAgICByYWlzZSBJbXBvcnRFcnJvcignTm8gc3VwcG9ydCBmb3Igc2VuZGluZyBmZHMgYmV0d2VlbiBwcm9jZXNzZXMnKQotZnJvbSAuIGltcG9ydCBjb250ZXh0CiBmcm9tIC4gaW1wb3J0IGZvcmtzZXJ2ZXIKIGZyb20gLiBpbXBvcnQgcG9wZW5fZm9yawogZnJvbSAuIGltcG9ydCBzcGF3bgpAQCAtNDIsMTIgKzQxLDEyIEBACiAgICAgZGVmIF9sYXVuY2goc2VsZiwgcHJvY2Vzc19vYmopOgogICAgICAgICBwcmVwX2RhdGEgPSBzcGF3bi5nZXRfcHJlcGFyYXRpb25fZGF0YShwcm9jZXNzX29iai5fbmFtZSkKICAgICAgICAgYnVmID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCisgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihzZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcmVwX2RhdGEsIGJ1ZikKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCBidWYpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihOb25lKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICAgICAgc2VsZi5zZW50aW5lbCwgdyA9IGZvcmtzZXJ2ZXIuY29ubmVjdF90b19uZXdfcHJvY2VzcyhzZWxmLl9mZHMpCiAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChzZWxmLnNlbnRpbmVsLCkpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQppbmRleCA2YjBhOGQ2Li45OGY4ZjBhIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKQEAgLTEsOSArMSw4IEBACiBpbXBvcnQgaW8KIGltcG9ydCBvcwogCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHNwYXduCiBmcm9tIC4gaW1wb3J0IHV0aWwKIApAQCAtNDIsMTIgKzQxLDEyIEBACiAgICAgICAgIHNlbGYuX2Zkcy5hcHBlbmQodHJhY2tlcl9mZCkKICAgICAgICAgcHJlcF9kYXRhID0gc3Bhd24uZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCiAgICAgICAgIGZwID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCisgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihzZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcmVwX2RhdGEsIGZwKQogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJvY2Vzc19vYmosIGZwKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgICAgIHBhcmVudF9yID0gY2hpbGRfdyA9IGNoaWxkX3IgPSBwYXJlbnRfdyA9IE5vbmUKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKaW5kZXggM2I1MzA2OC4uNmZkNTg4ZiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CkBAIC00LDkgKzQsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IF93aW5hcGkKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGdldF9zcGF3bmluZ19wb3Blbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBmcm9tIC4gaW1wb3J0IHNwYXduCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ1BvcGVuJ10KQEAgLTYwLDE1ICs1OSwxNSBAQAogICAgICAgICAgICAgdXRpbC5GaW5hbGl6ZShzZWxmLCBfd2luYXBpLkNsb3NlSGFuZGxlLCAoc2VsZi5zZW50aW5lbCwpKQogCiAgICAgICAgICAgICAjIHNlbmQgaW5mb3JtYXRpb24gdG8gY2hpbGQKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcmVwX2RhdGEsIHRvX2NoaWxkKQogICAgICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCB0b19jaGlsZCkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgIGRlZiBkdXBsaWNhdGVfZm9yX2NoaWxkKHNlbGYsIGhhbmRsZSk6Ci0gICAgICAgIGFzc2VydCBzZWxmIGlzIGNvbnRleHQuZ2V0X3NwYXduaW5nX3BvcGVuKCkKKyAgICAgICAgYXNzZXJ0IHNlbGYgaXMgZ2V0X3NwYXduaW5nX3BvcGVuKCkKICAgICAgICAgcmV0dXJuIHJlZHVjdGlvbi5kdXBsaWNhdGUoaGFuZGxlLCBzZWxmLnNlbnRpbmVsKQogCiAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKaW5kZXggNzg2YTMwMy4uZGRhMDNkZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKQEAgLTIzLDkgKzIzLDkgQEAKIAogZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCiBmcm9tIC4gaW1wb3J0IGNvbnRleHQKK19Gb3JraW5nUGlja2xlciA9IGNvbnRleHQucmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCiAKIGZyb20gLnV0aWwgaW1wb3J0IGRlYnVnLCBpbmZvLCBGaW5hbGl6ZSwgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgaXNfZXhpdGluZwotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgogCiAjCiAjIFF1ZXVlIHR5cGUgdXNpbmcgYSBwaXBlLCBidWZmZXIgYW5kIHRocmVhZApAQCAtMTEwLDcgKzExMCw3IEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHNlbGYuX3Jsb2NrLnJlbGVhc2UoKQogICAgICAgICAjIHVuc2VyaWFsaXplIHRoZSBkYXRhIGFmdGVyIGhhdmluZyByZWxlYXNlZCB0aGUgbG9jawotICAgICAgICByZXR1cm4gRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQorICAgICAgICByZXR1cm4gX0ZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKIAogICAgIGRlZiBxc2l6ZShzZWxmKToKICAgICAgICAgIyBSYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvciBvbiBNYWMgT1NYIGJlY2F1c2Ugb2YgYnJva2VuIHNlbV9nZXR2YWx1ZSgpCkBAIC0yMzgsNyArMjM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXJpYWxpemUgdGhlIGRhdGEgYmVmb3JlIGFjcXVpcmluZyB0aGUgbG9jawotICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQorICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHdhY3F1aXJlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9ieXRlcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzQyLDExICszNDIsMTEgQEAKICAgICAgICAgd2l0aCBzZWxmLl9ybG9jazoKICAgICAgICAgICAgIHJlcyA9IHNlbGYuX3JlYWRlci5yZWN2X2J5dGVzKCkKICAgICAgICAgIyB1bnNlcmlhbGl6ZSB0aGUgZGF0YSBhZnRlciBoYXZpbmcgcmVsZWFzZWQgdGhlIGxvY2sKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKICAgICBkZWYgcHV0KHNlbGYsIG9iaik6CiAgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKLSAgICAgICAgb2JqID0gRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQorICAgICAgICBvYmogPSBfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQogICAgICAgICBpZiBzZWxmLl93bG9jayBpcyBOb25lOgogICAgICAgICAgICAgIyB3cml0ZXMgdG8gYSBtZXNzYWdlIG9yaWVudGVkIHdpbjMyIHBpcGUgYXJlIGF0b21pYwogICAgICAgICAgICAgc2VsZi5fd3JpdGVyLnNlbmRfYnl0ZXMob2JqKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQppbmRleCA4ZjIwOWI0Li5jMDQzYzlhIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQpAQCAtNyw2ICs3LDcgQEAKICMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCitmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGltcG9ydCBjb3B5cmVnCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KQEAgLTIzOCwzICsyMzksMzYgQEAKICAgICAgICAgZmQgPSBkZi5kZXRhY2goKQogICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCBmaWxlbm89ZmQpCiAgICAgcmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgX3JlZHVjZV9zb2NrZXQpCisKKworY2xhc3MgQWJzdHJhY3RSZWR1Y2VyKG1ldGFjbGFzcz1BQkNNZXRhKToKKyAgICAnJydBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB1c2UgaW4gaW1wbGVtZW50aW5nIGEgUmVkdWN0aW9uIGNsYXNzCisgICAgc3VpdGFibGUgZm9yIHVzZSBpbiByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIHJlZHVjdGlvbiBtZWNoYW5pc20KKyAgICB1c2VkIGluIG11bHRpcHJvY2Vzc2luZy4nJycKKyAgICBGb3JraW5nUGlja2xlciA9IEZvcmtpbmdQaWNrbGVyCisgICAgcmVnaXN0ZXIgPSByZWdpc3RlcgorICAgIGR1bXAgPSBkdW1wCisgICAgc2VuZF9oYW5kbGUgPSBzZW5kX2hhbmRsZQorICAgIHJlY3ZfaGFuZGxlID0gcmVjdl9oYW5kbGUKKworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBzdGVhbF9oYW5kbGUgPSBzdGVhbF9oYW5kbGUKKyAgICAgICAgZHVwbGljYXRlID0gZHVwbGljYXRlCisgICAgICAgIER1cEhhbmRsZSA9IER1cEhhbmRsZQorICAgIGVsc2U6CisgICAgICAgIHNlbmRmZHMgPSBzZW5kZmRzCisgICAgICAgIHJlY3ZmZHMgPSByZWN2ZmRzCisgICAgICAgIER1cEZkID0gRHVwRmQKKworICAgIF9yZWR1Y2VfbWV0aG9kID0gX3JlZHVjZV9tZXRob2QKKyAgICBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yID0gX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcgorICAgIF9yZWJ1aWxkX3BhcnRpYWwgPSBfcmVidWlsZF9wYXJ0aWFsCisgICAgX3JlZHVjZV9zb2NrZXQgPSBfcmVkdWNlX3NvY2tldAorICAgIF9yZWJ1aWxkX3NvY2tldCA9IF9yZWJ1aWxkX3NvY2tldAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgcmVnaXN0ZXIodHlwZShfQygpLmYpLCBfcmVkdWNlX21ldGhvZCkKKyAgICAgICAgcmVnaXN0ZXIodHlwZShsaXN0LmFwcGVuZCksIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IpCisgICAgICAgIHJlZ2lzdGVyKHR5cGUoaW50Ll9fYWRkX18pLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQorICAgICAgICByZWdpc3RlcihmdW5jdG9vbHMucGFydGlhbCwgX3JlZHVjZV9wYXJ0aWFsKQorICAgICAgICByZWdpc3Rlcihzb2NrZXQuc29ja2V0LCBfcmVkdWNlX3NvY2tldCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkKaW5kZXggNWU0NmZjNi4uZTQ0YTcyOCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkKQEAgLTE1LDcgKzE1LDcgQEAKIGltcG9ydCB0aHJlYWRpbmcKIAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnc3RvcCddCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CmluZGV4IDQyNThmNTkuLjI1Y2JjZjIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CkBAIC0xMyw4ICsxMyw4IEBACiBmcm9tIC4gaW1wb3J0IGhlYXAKIGZyb20gLiBpbXBvcnQgZ2V0X2NvbnRleHQKIAotZnJvbSAuY29udGV4dCBpbXBvcnQgYXNzZXJ0X3NwYXduaW5nCi1mcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IEZvcmtpbmdQaWNrbGVyCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGFzc2VydF9zcGF3bmluZworX0ZvcmtpbmdQaWNrbGVyID0gcmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCiAKIF9fYWxsX18gPSBbJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1ZhbHVlJywgJ0FycmF5JywgJ2NvcHknLCAnc3luY2hyb25pemVkJ10KIApAQCAtMTM0LDcgKzEzNCw3IEBACiBkZWYgcmVidWlsZF9jdHlwZSh0eXBlXywgd3JhcHBlciwgbGVuZ3RoKToKICAgICBpZiBsZW5ndGggaXMgbm90IE5vbmU6CiAgICAgICAgIHR5cGVfID0gdHlwZV8gKiBsZW5ndGgKLSAgICBGb3JraW5nUGlja2xlci5yZWdpc3Rlcih0eXBlXywgcmVkdWNlX2N0eXBlKQorICAgIF9Gb3JraW5nUGlja2xlci5yZWdpc3Rlcih0eXBlXywgcmVkdWNlX2N0eXBlKQogICAgIGJ1ZiA9IHdyYXBwZXIuY3JlYXRlX21lbW9yeXZpZXcoKQogICAgIG9iaiA9IHR5cGVfLmZyb21fYnVmZmVyKGJ1ZikKICAgICBvYmouX3dyYXBwZXIgPSB3cmFwcGVyCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQppbmRleCA0ZDc2OTUxLi5kZmI5ZjY1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKQEAgLTksMTMgKzksMTMgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCiBpbXBvcnQgc3lzCiBpbXBvcnQgcnVucHkKIGltcG9ydCB0eXBlcwogCiBmcm9tIC4gaW1wb3J0IGdldF9zdGFydF9tZXRob2QsIHNldF9zdGFydF9tZXRob2QKIGZyb20gLiBpbXBvcnQgcHJvY2VzcworZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnX21haW4nLCAnZnJlZXplX3N1cHBvcnQnLCAnc2V0X2V4ZWN1dGFibGUnLCAnZ2V0X2V4ZWN1dGFibGUnLApAQCAtOTYsOCArOTYsNyBAQAogICAgIGFzc2VydCBpc19mb3JraW5nKHN5cy5hcmd2KQogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgICAgIGZyb20gLnJlZHVjdGlvbiBpbXBvcnQgc3RlYWxfaGFuZGxlCi0gICAgICAgIG5ld19oYW5kbGUgPSBzdGVhbF9oYW5kbGUocGFyZW50X3BpZCwgcGlwZV9oYW5kbGUpCisgICAgICAgIG5ld19oYW5kbGUgPSByZWR1Y3Rpb24uc3RlYWxfaGFuZGxlKHBhcmVudF9waWQsIHBpcGVfaGFuZGxlKQogICAgICAgICBmZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShuZXdfaGFuZGxlLCBvcy5PX1JET05MWSkKICAgICBlbHNlOgogICAgICAgICBmcm9tIC4gaW1wb3J0IHNlbWFwaG9yZV90cmFja2VyCkBAIC0xMTEsOSArMTEwLDkgQEAKICAgICB3aXRoIG9zLmZkb3BlbihmZCwgJ3JiJywgY2xvc2VmZD1UcnVlKSBhcyBmcm9tX3BhcmVudDoKICAgICAgICAgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZyA9IFRydWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcHJlcGFyYXRpb25fZGF0YSA9IHBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQorICAgICAgICAgICAgcHJlcGFyYXRpb25fZGF0YSA9IHJlZHVjdGlvbi5waWNrbGUubG9hZChmcm9tX3BhcmVudCkKICAgICAgICAgICAgIHByZXBhcmUocHJlcGFyYXRpb25fZGF0YSkKLSAgICAgICAgICAgIHNlbGYgPSBwaWNrbGUubG9hZChmcm9tX3BhcmVudCkKKyAgICAgICAgICAgIHNlbGYgPSByZWR1Y3Rpb24ucGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZwogICAgIHJldHVybiBzZWxmLl9ib290c3RyYXAoKQpkaWZmIC0tZ2l0IGEvTGliL250cGF0aC5weSBiL0xpYi9udHBhdGgucHkKaW5kZXggYWY2YTcwOS4uYThmNGIzNyAxMDA2NDQKLS0tIGEvTGliL250cGF0aC5weQorKysgYi9MaWIvbnRwYXRoLnB5CkBAIC0yOCw4ICsyOCw2IEBACiBwYXRoc2VwID0gJzsnCiBhbHRzZXAgPSAnLycKIGRlZnBhdGggPSAnLjtDOlxcYmluJwotaWYgJ2NlJyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgZGVmcGF0aCA9ICdcXFdpbmRvd3MnCiBkZXZudWxsID0gJ251bCcKIAogZGVmIF9nZXRfYm90aHNlcHMocGF0aCk6CkBAIC00Niw2ICs0NCw3IEBACiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuCiAKICAgICBNYWtlcyBhbGwgY2hhcmFjdGVycyBsb3dlcmNhc2UgYW5kIGFsbCBzbGFzaGVzIGludG8gYmFja3NsYXNoZXMuIiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIHRyeToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CiAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKGInLycsIGInXFwnKS5sb3dlcigpCkBAIC02NiwxMiArNjUsMTQgQEAKIAogZGVmIGlzYWJzKHMpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYWJzb2x1dGUiIiIKKyAgICBzID0gb3MuZnNwYXRoKHMpCiAgICAgcyA9IHNwbGl0ZHJpdmUocylbMV0KICAgICByZXR1cm4gbGVuKHMpID4gMCBhbmQgc1swXSBpbiBfZ2V0X2JvdGhzZXBzKHMpCiAKIAogIyBKb2luIHR3byAob3IgbW9yZSkgcGF0aHMuCiBkZWYgam9pbihwYXRoLCAqcGF0aHMpOgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgc2VwcyA9IGInXFwvJwpAQCAtODQsNyArODUsNyBAQAogICAgICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCiAgICAgICAgIHJlc3VsdF9kcml2ZSwgcmVzdWx0X3BhdGggPSBzcGxpdGRyaXZlKHBhdGgpCi0gICAgICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICBmb3IgcCBpbiBtYXAob3MuZnNwYXRoLCBwYXRocyk6CiAgICAgICAgICAgICBwX2RyaXZlLCBwX3BhdGggPSBzcGxpdGRyaXZlKHApCiAgICAgICAgICAgICBpZiBwX3BhdGggYW5kIHBfcGF0aFswXSBpbiBzZXBzOgogICAgICAgICAgICAgICAgICMgU2Vjb25kIHBhdGggaXMgYWJzb2x1dGUKQEAgLTEzNiw2ICsxMzcsNyBAQAogICAgIFBhdGhzIGNhbm5vdCBjb250YWluIGJvdGggYSBkcml2ZSBsZXR0ZXIgYW5kIGEgVU5DIHBhdGguCiAKICAgICAiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgaWYgbGVuKHApID49IDI6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgogICAgICAgICAgICAgc2VwID0gYidcXCcKQEAgLTE5OSw3ICsyMDEsNyBAQAogCiAgICAgUmV0dXJuIHR1cGxlIChoZWFkLCB0YWlsKSB3aGVyZSB0YWlsIGlzIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpbmFsIHNsYXNoLgogICAgIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKLQorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBzZXBzID0gX2dldF9ib3Roc2VwcyhwKQogICAgIGQsIHAgPSBzcGxpdGRyaXZlKHApCiAgICAgIyBzZXQgaSB0byBpbmRleCBiZXlvbmQgcCdzIGxhc3Qgc2xhc2gKQEAgLTIxOCw2ICsyMjAsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgcmV0dXJuIGdlbmVyaWNwYXRoLl9zcGxpdGV4dChwLCBiJ1xcJywgYicvJywgYicuJykKICAgICBlbHNlOgpAQCAtMjc4LDYgKzI4MSw3IEBACiBkZWYgaXNtb3VudChwYXRoKToKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGEgbW91bnQgcG9pbnQgKGEgZHJpdmUgcm9vdCwgdGhlIHJvb3Qgb2YgYQogICAgIHNoYXJlLCBvciBhIG1vdW50ZWQgdm9sdW1lKSIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBzZXBzID0gX2dldF9ib3Roc2VwcyhwYXRoKQogICAgIHBhdGggPSBhYnNwYXRoKHBhdGgpCiAgICAgcm9vdCwgcmVzdCA9IHNwbGl0ZHJpdmUocGF0aCkKQEAgLTMwNSw2ICszMDksNyBAQAogICAgICIiIkV4cGFuZCB+IGFuZCB+dXNlciBjb25zdHJ1Y3RzLgogCiAgICAgSWYgdXNlciBvciAkSE9NRSBpcyB1bmtub3duLCBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTM1NCw2ICszNTksNyBAQAogICAgICIiIkV4cGFuZCBzaGVsbCB2YXJpYWJsZXMgb2YgdGhlIGZvcm1zICR2YXIsICR7dmFyfSBhbmQgJXZhciUuCiAKICAgICBVbmtub3duIHZhcmlhYmxlcyBhcmUgbGVmdCB1bmNoYW5nZWQuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoIGFuZCBiJyUnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKQEAgLTQ2NCw2ICs0NzAsNyBAQAogCiBkZWYgbm9ybXBhdGgocGF0aCk6CiAgICAgIiIiTm9ybWFsaXplIHBhdGgsIGVsaW1pbmF0aW5nIGRvdWJsZSBzbGFzaGVzLCBldGMuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBhbHRzZXAgPSBiJy8nCkBAIC01MTgsNiArNTI1LDcgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjogIyBub3QgcnVubmluZyBvbiBXaW5kb3dzIC0gbW9jayB1cCBzb21ldGhpbmcgc2Vuc2libGUKICAgICBkZWYgYWJzcGF0aChwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2ZXJzaW9uIG9mIGEgcGF0aC4iIiIKKyAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgICAgICBpZiBub3QgaXNhYnMocGF0aCk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2RiKCkKQEAgLTUzMSw2ICs1MzksNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoLiIiIgogCiAgICAgICAgIGlmIHBhdGg6ICMgRW1wdHkgcGF0aCBtdXN0IHJldHVybiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBhdGggPSBfZ2V0ZnVsbHBhdGhuYW1lKHBhdGgpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKQEAgLTU0OSw2ICs1NTgsNyBAQAogCiBkZWYgcmVscGF0aChwYXRoLCBzdGFydD1Ob25lKToKICAgICAiIiJSZXR1cm4gYSByZWxhdGl2ZSB2ZXJzaW9uIG9mIGEgcGF0aCIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgY3VyZGlyID0gYicuJwpAQCAtNTY0LDYgKzU3NCw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHN0YXJ0ID0gb3MuZnNwYXRoKHN0YXJ0KQogICAgIHRyeToKICAgICAgICAgc3RhcnRfYWJzID0gYWJzcGF0aChub3JtcGF0aChzdGFydCkpCiAgICAgICAgIHBhdGhfYWJzID0gYWJzcGF0aChub3JtcGF0aChwYXRoKSkKQEAgLTYwNyw2ICs2MTgsNyBAQAogICAgIGlmIG5vdCBwYXRoczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY29tbW9ucGF0aCgpIGFyZyBpcyBhbiBlbXB0eSBzZXF1ZW5jZScpCiAKKyAgICBwYXRocyA9IHR1cGxlKG1hcChvcy5mc3BhdGgsIHBhdGhzKSkKICAgICBpZiBpc2luc3RhbmNlKHBhdGhzWzBdLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGFsdHNlcCA9IGInLycKZGlmZiAtLWdpdCBhL0xpYi9vcGNvZGUucHkgYi9MaWIvb3Bjb2RlLnB5CmluZGV4IDRjODI2YTcuLmI1OTE2YjYgMTAwNjQ0Ci0tLSBhL0xpYi9vcGNvZGUucHkKKysrIGIvTGliL29wY29kZS5weQpAQCAtMzEsMTIgKzMxLDEwIEBACiBoYXNsb2NhbCA9IFtdCiBoYXNjb21wYXJlID0gW10KIGhhc2ZyZWUgPSBbXQotaGFzbmFyZ3MgPSBbXQoraGFzbmFyZ3MgPSBbXSAjIHVudXNlZAogCiBvcG1hcCA9IHt9Ci1vcG5hbWUgPSBbJyddICogMjU2Ci1mb3Igb3AgaW4gcmFuZ2UoMjU2KTogb3BuYW1lW29wXSA9ICc8JXI+JyAlIChvcCwpCi1kZWwgb3AKK29wbmFtZSA9IFsnPCVyPicgJSAob3AsKSBmb3Igb3AgaW4gcmFuZ2UoMjU2KV0KIAogZGVmIGRlZl9vcChuYW1lLCBvcCk6CiAgICAgb3BuYW1lW29wXSA9IG5hbWUKQEAgLTEyMSw3ICsxMTksNyBAQAogCiBkZWZfb3AoJ1JFVFVSTl9WQUxVRScsIDgzKQogZGVmX29wKCdJTVBPUlRfU1RBUicsIDg0KQotCitkZWZfb3AoJ1NFVFVQX0FOTk9UQVRJT05TJywgODUpCiBkZWZfb3AoJ1lJRUxEX1ZBTFVFJywgODYpCiBkZWZfb3AoJ1BPUF9CTE9DSycsIDg3KQogZGVmX29wKCdFTkRfRklOQUxMWScsIDg4KQpAQCAtMTcxLDEzICsxNjksMTIgQEAKIGhhc2xvY2FsLmFwcGVuZCgxMjUpCiBkZWZfb3AoJ0RFTEVURV9GQVNUJywgMTI2KSAgICAgICMgTG9jYWwgdmFyaWFibGUgbnVtYmVyCiBoYXNsb2NhbC5hcHBlbmQoMTI2KQorbmFtZV9vcCgnU1RPUkVfQU5OT1RBVElPTicsIDEyNykgIyBJbmRleCBpbiBuYW1lIGxpc3QKIAogZGVmX29wKCdSQUlTRV9WQVJBUkdTJywgMTMwKSAgICAjIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIsIG9yIDMpCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDEzMSkKLWRlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBOdW1iZXIgb2YgYXJncyB3aXRoIGRlZmF1bHQgdmFsdWVzCitkZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MKK2RlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBGbGFncwogZGVmX29wKCdCVUlMRF9TTElDRScsIDEzMykgICAgICAjIE51bWJlciBvZiBpdGVtcwotZGVmX29wKCdNQUtFX0NMT1NVUkUnLCAxMzQpCiBkZWZfb3AoJ0xPQURfQ0xPU1VSRScsIDEzNSkKIGhhc2ZyZWUuYXBwZW5kKDEzNSkKIGRlZl9vcCgnTE9BRF9ERVJFRicsIDEzNikKQEAgLTE4NywxMiArMTg0LDggQEAKIGRlZl9vcCgnREVMRVRFX0RFUkVGJywgMTM4KQogaGFzZnJlZS5hcHBlbmQoMTM4KQogCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSJywgMTQwKSAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQwKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MSkKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVJfS1cnLCAxNDIpICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDIpCitkZWZfb3AoJ0NBTExfRlVOQ1RJT05fS1cnLCAxNDEpICAjICNhcmdzICsgI2t3YXJncworZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0VYJywgMTQyKSAgIyBGbGFncwogCiBqcmVsX29wKCdTRVRVUF9XSVRIJywgMTQzKQogCkBAIC0yMDMsOCArMTk2LDYgQEAKIGRlZl9vcCgnTE9BRF9DTEFTU0RFUkVGJywgMTQ4KQogaGFzZnJlZS5hcHBlbmQoMTQ4KQogCi1qcmVsX29wKCdTRVRVUF9BU1lOQ19XSVRIJywgMTU0KQotCiBkZWZfb3AoJ0VYVEVOREVEX0FSRycsIDE0NCkKIEVYVEVOREVEX0FSRyA9IDE0NAogCkBAIC0yMTQsNCArMjA1LDExIEBACiBkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDSycsIDE1MikKIGRlZl9vcCgnQlVJTERfU0VUX1VOUEFDSycsIDE1MykKIAoranJlbF9vcCgnU0VUVVBfQVNZTkNfV0lUSCcsIDE1NCkKKworZGVmX29wKCdGT1JNQVRfVkFMVUUnLCAxNTUpCitkZWZfb3AoJ0JVSUxEX0NPTlNUX0tFWV9NQVAnLCAxNTYpCitkZWZfb3AoJ0JVSUxEX1NUUklORycsIDE1NykKK2RlZl9vcCgnQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCcsIDE1OCkKKwogZGVsIGRlZl9vcCwgbmFtZV9vcCwganJlbF9vcCwgamFic19vcApkaWZmIC0tZ2l0IGEvTGliL29wdHBhcnNlLnB5IGIvTGliL29wdHBhcnNlLnB5CmluZGV4IDc0YjNiMzYuLmU4YWMxZTEgMTAwNjQ0Ci0tLSBhL0xpYi9vcHRwYXJzZS5weQorKysgYi9MaWIvb3B0cGFyc2UucHkKQEAgLTM4LDcgKzM4LDggQEAKICAgICAgICAgICAgJ09wdGlvbkVycm9yJywKICAgICAgICAgICAgJ09wdGlvbkNvbmZsaWN0RXJyb3InLAogICAgICAgICAgICAnT3B0aW9uVmFsdWVFcnJvcicsCi0gICAgICAgICAgICdCYWRPcHRpb25FcnJvciddCisgICAgICAgICAgICdCYWRPcHRpb25FcnJvcicsCisgICAgICAgICAgICdjaGVja19jaG9pY2UnXQogCiBfX2NvcHlyaWdodF9fID0gIiIiCiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNiBHcmVnb3J5IFAuIFdhcmQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpkaWZmIC0tZ2l0IGEvTGliL29zLnB5IGIvTGliL29zLnB5CmluZGV4IDAxMTI4NWUuLjcxZWQwODggMTAwNjQ0Ci0tLSBhL0xpYi9vcy5weQorKysgYi9MaWIvb3MucHkKQEAgLTEsMTIgKzEsMTIgQEAKIHIiIiJPUyByb3V0aW5lcyBmb3IgTlQgb3IgUG9zaXggZGVwZW5kaW5nIG9uIHdoYXQgc3lzdGVtIHdlJ3JlIG9uLgogCiBUaGlzIGV4cG9ydHM6Ci0gIC0gYWxsIGZ1bmN0aW9ucyBmcm9tIHBvc2l4LCBudCBvciBjZSwgZS5nLiB1bmxpbmssIHN0YXQsIGV0Yy4KKyAgLSBhbGwgZnVuY3Rpb25zIGZyb20gcG9zaXggb3IgbnQsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCiAgIC0gb3MucGF0aCBpcyBlaXRoZXIgcG9zaXhwYXRoIG9yIG50cGF0aAotICAtIG9zLm5hbWUgaXMgZWl0aGVyICdwb3NpeCcsICdudCcgb3IgJ2NlJy4KLSAgLSBvcy5jdXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAoJy4nIG9yICc6JykKLSAgLSBvcy5wYXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJlbnQgZGlyZWN0b3J5ICgnLi4nIG9yICc6OicpCi0gIC0gb3Muc2VwIGlzIHRoZSAob3IgYSBtb3N0IGNvbW1vbikgcGF0aG5hbWUgc2VwYXJhdG9yICgnLycgb3IgJzonIG9yICdcXCcpCisgIC0gb3MubmFtZSBpcyBlaXRoZXIgJ3Bvc2l4JyBvciAnbnQnCisgIC0gb3MuY3VyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKGFsd2F5cyAnLicpCisgIC0gb3MucGFyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFyZW50IGRpcmVjdG9yeSAoYWx3YXlzICcuLicpCisgIC0gb3Muc2VwIGlzIHRoZSAob3IgYSBtb3N0IGNvbW1vbikgcGF0aG5hbWUgc2VwYXJhdG9yICgnLycgb3IgJ1xcJykKICAgLSBvcy5leHRzZXAgaXMgdGhlIGV4dGVuc2lvbiBzZXBhcmF0b3IgKGFsd2F5cyAnLicpCiAgIC0gb3MuYWx0c2VwIGlzIHRoZSBhbHRlcm5hdGUgcGF0aG5hbWUgc2VwYXJhdG9yIChOb25lIG9yICcvJykKICAgLSBvcy5wYXRoc2VwIGlzIHRoZSBjb21wb25lbnQgc2VwYXJhdG9yIHVzZWQgaW4gJFBBVEggZXRjCkBAIC0yMiw3ICsyMiw3IEBACiAiIiIKIAogIycKLQoraW1wb3J0IGFiYwogaW1wb3J0IHN5cywgZXJybm8KIGltcG9ydCBzdGF0IGFzIHN0CiAKQEAgLTg1LDI3ICs4NSw2IEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAKLWVsaWYgJ2NlJyBpbiBfbmFtZXM6Ci0gICAgbmFtZSA9ICdjZScKLSAgICBsaW5lc2VwID0gJ1xyXG4nCi0gICAgZnJvbSBjZSBpbXBvcnQgKgotICAgIHRyeToKLSAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2V4aXQKLSAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICAjIFdlIGNhbiB1c2UgdGhlIHN0YW5kYXJkIFdpbmRvd3MgcGF0aC4KLSAgICBpbXBvcnQgbnRwYXRoIGFzIHBhdGgKLQotICAgIGltcG9ydCBjZQotICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KGNlKSkKLSAgICBkZWwgY2UKLQotICAgIHRyeToKLSAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KIGVsc2U6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ25vIG9zIHNwZWNpZmljIG1vZHVsZSBmb3VuZCcpCiAKQEAgLTM1Myw5ICszMzIsMTAgQEAKICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKIAogICAgICIiIgotCisgICAgdG9wID0gZnNwYXRoKHRvcCkKICAgICBkaXJzID0gW10KICAgICBub25kaXJzID0gW10KKyAgICB3YWxrX2RpcnMgPSBbXQogCiAgICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBwZXJtaXNzaW9uIGZvciB0b3AsIGluIHdoaWNoIGNhc2Ugd2UgY2FuJ3QKICAgICAjIGdldCBhIGxpc3Qgb2YgdGhlIGZpbGVzIHRoZSBkaXJlY3RvcnkgY29udGFpbnMuICBvcy53YWxrCkBAIC0zNjMsNDggKzM0Myw1NSBAQAogICAgICMgbWlub3IgcmVhc29uIHdoZW4gKHNheSkgYSB0aG91c2FuZCByZWFkYWJsZSBkaXJlY3RvcmllcyBhcmUgc3RpbGwKICAgICAjIGxlZnQgdG8gdmlzaXQuICBUaGF0IGxvZ2ljIGlzIGNvcGllZCBoZXJlLgogICAgIHRyeToKLSAgICAgICAgaWYgbmFtZSA9PSAnbnQnIGFuZCBpc2luc3RhbmNlKHRvcCwgYnl0ZXMpOgotICAgICAgICAgICAgc2NhbmRpcl9pdCA9IF9kdW1teV9zY2FuZGlyKHRvcCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQotICAgICAgICAgICAgIyB0byBlYXJsaWVyIGltcG9ydC0qLgotICAgICAgICAgICAgc2NhbmRpcl9pdCA9IHNjYW5kaXIodG9wKQotICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyX2l0KQorICAgICAgICAjIE5vdGUgdGhhdCBzY2FuZGlyIGlzIGdsb2JhbCBpbiB0aGlzIG1vZHVsZSBkdWUKKyAgICAgICAgIyB0byBlYXJsaWVyIGltcG9ydC0qLgorICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CiAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvbmVycm9yKGVycm9yKQogICAgICAgICByZXR1cm4KIAotICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAotICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCi0gICAgICAgICAgICBpc19kaXIgPSBGYWxzZQotCi0gICAgICAgIGlmIGlzX2RpcjoKLSAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQotCi0gICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6Ci0gICAgICAgICAgICAjIEJvdHRvbS11cDogcmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcnksIGJ1dCBleGNsdWRlIHN5bWxpbmtzIHRvCi0gICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCi0gICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKLSAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgorICAgIHdpdGggc2NhbmRpcl9pdDoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBlbnRyeS5pc19zeW1saW5rKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBJZiBpc19zeW1saW5rKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgZW50cnkgaXMgbm90IGEgc3ltYm9saWMgbGluaywgc2FtZSBiZWhhdmlvdXIgdGhhbgotICAgICAgICAgICAgICAgICAgICAjIG9zLnBhdGguaXNsaW5rKCkuCi0gICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBGYWxzZQotICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IG5vdCBpc19zeW1saW5rCisgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gbmV4dChzY2FuZGlyX2l0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgotICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhlbnRyeS5wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZiBpc19kaXIoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUgZW50cnkgaXMgbm90CisgICAgICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCisgICAgICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKKworICAgICAgICAgICAgaWYgaXNfZGlyOgorICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisKKyAgICAgICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6CisgICAgICAgICAgICAgICAgIyBCb3R0b20tdXA6IHJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3J5LCBidXQgZXhjbHVkZSBzeW1saW5rcyB0bworICAgICAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKKyAgICAgICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKKyAgICAgICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBlbnRyeS5pc19zeW1saW5rKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGlzX3N5bWxpbmsoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZW50cnkgaXMgbm90IGEgc3ltYm9saWMgbGluaywgc2FtZSBiZWhhdmlvdXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgorICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IG5vdCBpc19zeW1saW5rCisKKyAgICAgICAgICAgICAgICBpZiB3YWxrX2ludG86CisgICAgICAgICAgICAgICAgICAgIHdhbGtfZGlycy5hcHBlbmQoZW50cnkucGF0aCkKIAogICAgICMgWWllbGQgYmVmb3JlIHJlY3Vyc2lvbiBpZiBnb2luZyB0b3AgZG93bgogICAgIGlmIHRvcGRvd246CkBAIC00MjEsNTcgKzQwOCwxMiBAQAogICAgICAgICAgICAgaWYgZm9sbG93bGlua3Mgb3Igbm90IGlzbGluayhuZXdfcGF0aCk6CiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgICBlbHNlOgorICAgICAgICAjIFJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3JpZXMKKyAgICAgICAgZm9yIG5ld19wYXRoIGluIHdhbGtfZGlyczoKKyAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgICAgICMgWWllbGQgYWZ0ZXIgcmVjdXJzaW9uIGlmIGdvaW5nIGJvdHRvbSB1cAogICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKIAotY2xhc3MgX0R1bW15RGlyRW50cnk6Ci0gICAgIiIiRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgRGlyRW50cnkKLQotICAgIE9ubHkgdXNlZCBpbnRlcm5hbGx5IGJ5IG9zLndhbGsoYnl0ZXMpLiBTaW5jZSBvcy53YWxrKCkgZG9lc24ndCBuZWVkIHRoZQotICAgIGZvbGxvd19zeW1saW5rcyBwYXJhbWV0ZXI6IGRvbid0IGltcGxlbWVudCBpdCwgYWx3YXlzIGZvbGxvdyBzeW1ib2xpYwotICAgIGxpbmtzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpciwgbmFtZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aC5qb2luKGRpciwgbmFtZSkKLSAgICAgICAgIyBNaW1pY2sgRmluZEZpcnN0RmlsZS9GaW5kTmV4dEZpbGU6IHdlIHNob3VsZCBnZXQgZmlsZSBhdHRyaWJ1dGVzCi0gICAgICAgICMgd2hpbGUgaXRlcmF0aW5nIG9uIGEgZGlyZWN0b3J5Ci0gICAgICAgIHNlbGYuX3N0YXQgPSBOb25lCi0gICAgICAgIHNlbGYuX2xzdGF0ID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBzdGF0KHNlbGYsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKLSAgICAgICAgaWYgZm9sbG93X3N5bWxpbmtzOgotICAgICAgICAgICAgaWYgc2VsZi5fc3RhdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0YXQgPSBzdGF0KHNlbGYucGF0aCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxmLl9sc3RhdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2xzdGF0ID0gc3RhdChzZWxmLnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9sc3RhdAotCi0gICAgZGVmIGlzX2RpcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbHN0YXQgaXMgbm90IE5vbmUgYW5kIG5vdCBzZWxmLmlzX3N5bWxpbmsoKToKLSAgICAgICAgICAgICMgdXNlIHRoZSBjYWNoZSBsc3RhdAotICAgICAgICAgICAgc3RhdCA9IHNlbGYuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICByZXR1cm4gc3QuU19JU0RJUihzdGF0LnN0X21vZGUpCi0KLSAgICAgICAgc3RhdCA9IHNlbGYuc3RhdCgpCi0gICAgICAgIHJldHVybiBzdC5TX0lTRElSKHN0YXQuc3RfbW9kZSkKLQotICAgIGRlZiBpc19zeW1saW5rKHNlbGYpOgotICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgcmV0dXJuIHN0LlNfSVNMTksoc3RhdC5zdF9tb2RlKQotCi1kZWYgX2R1bW15X3NjYW5kaXIoZGlyKToKLSAgICAjIGxpc3RkaXItYmFzZWQgaW1wbGVtZW50YXRpb24gZm9yIGJ5dGVzIHBhdGNoZXMgb24gV2luZG93cwotICAgIGZvciBuYW1lIGluIGxpc3RkaXIoZGlyKToKLSAgICAgICAgeWllbGQgX0R1bW15RGlyRW50cnkoZGlyLCBuYW1lKQotCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCiAKIGlmIHtvcGVuLCBzdGF0fSA8PSBzdXBwb3J0c19kaXJfZmQgYW5kIHtsaXN0ZGlyLCBzdGF0fSA8PSBzdXBwb3J0c19mZDoKQEAgLTUwOSw2ICs0NTEsOCBAQAogICAgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0b3AsIGludCkgb3Igbm90IGhhc2F0dHIodG9wLCAnX19pbmRleF9fJyk6CisgICAgICAgICAgICB0b3AgPSBmc3BhdGgodG9wKQogICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAogICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCiAgICAgICAgIG9yaWdfc3QgPSBzdGF0KHRvcCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZGlyX2ZkKQpAQCAtODQzLDM2ICs3ODcsMzEgQEAKIAogZGVmIF9mc2NvZGVjKCk6CiAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKLSAgICBpZiBlbmNvZGluZyA9PSAnbWJjcyc6Ci0gICAgICAgIGVycm9ycyA9ICdzdHJpY3QnCi0gICAgZWxzZToKLSAgICAgICAgZXJyb3JzID0gJ3N1cnJvZ2F0ZWVzY2FwZScKKyAgICBlcnJvcnMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpCiAKICAgICBkZWYgZnNlbmNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJFbmNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSB0byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuCisgICAgICAgIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIEVuY29kZSBmaWxlbmFtZSB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yCi0gICAgICAgIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKICAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0IGJ5dGVzIG9yIHN0ciwgbm90ICVzIiAlIHR5cGUoZmlsZW5hbWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICBkZWYgZnNkZWNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJEZWNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSBmcm9tIHRoZSBmaWxlc3lzdGVtCisgICAgICAgIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uCisgICAgICAgIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIERlY29kZSBmaWxlbmFtZSBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IKLSAgICAgICAgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3QgYnl0ZXMgb3Igc3RyLCBub3QgJXMiICUgdHlwZShmaWxlbmFtZSkuX19uYW1lX18pCisgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIHJldHVybiBmc2VuY29kZSwgZnNkZWNvZGUKIApAQCAtMTA3MCwzICsxMDA5LDU1IEBACiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBmZCB0eXBlICglcywgZXhwZWN0ZWQgaW50ZWdlcikiICUgdHlwZShmZCkpCiAgICAgaW1wb3J0IGlvCiAgICAgcmV0dXJuIGlvLm9wZW4oZmQsICphcmdzLCAqKmt3YXJncykKKworCisjIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSB3aGVuIHRoZSBDCisjIGltcGxlbWVudGF0aW9uIGV4aXN0cy4KK2RlZiBfZnNwYXRoKHBhdGgpOgorICAgICIiIlJldHVybiB0aGUgcGF0aCByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGgtbGlrZSBvYmplY3QuCisKKyAgICBJZiBzdHIgb3IgYnl0ZXMgaXMgcGFzc2VkIGluLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuIE90aGVyd2lzZSB0aGUKKyAgICBvcy5QYXRoTGlrZSBpbnRlcmZhY2UgaXMgdXNlZCB0byBnZXQgdGhlIHBhdGggcmVwcmVzZW50YXRpb24uIElmIHRoZQorICAgIHBhdGggcmVwcmVzZW50YXRpb24gaXMgbm90IHN0ciBvciBieXRlcywgVHlwZUVycm9yIGlzIHJhaXNlZC4gSWYgdGhlCisgICAgcHJvdmlkZWQgcGF0aCBpcyBub3Qgc3RyLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIFR5cGVFcnJvciBpcyByYWlzZWQuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCAoc3RyLCBieXRlcykpOgorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgIyBXb3JrIGZyb20gdGhlIG9iamVjdCdzIHR5cGUgdG8gbWF0Y2ggbWV0aG9kIHJlc29sdXRpb24gb2Ygb3RoZXIgbWFnaWMKKyAgICAjIG1ldGhvZHMuCisgICAgcGF0aF90eXBlID0gdHlwZShwYXRoKQorICAgIHRyeToKKyAgICAgICAgcGF0aF9yZXByID0gcGF0aF90eXBlLl9fZnNwYXRoX18ocGF0aCkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGlmIGhhc2F0dHIocGF0aF90eXBlLCAnX19mc3BhdGhfXycpOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgc3RyLCBieXRlcyBvciBvcy5QYXRoTGlrZSBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICIgKyBwYXRoX3R5cGUuX19uYW1lX18pCisgICAgaWYgaXNpbnN0YW5jZShwYXRoX3JlcHIsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIHJldHVybiBwYXRoX3JlcHIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIHt9Ll9fZnNwYXRoX18oKSB0byByZXR1cm4gc3RyIG9yIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQocGF0aF90eXBlLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUocGF0aF9yZXByKS5fX25hbWVfXykpCisKKyMgSWYgdGhlcmUgaXMgbm8gQyBpbXBsZW1lbnRhdGlvbiwgbWFrZSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiB0aGUKKyMgaW1wbGVtZW50YXRpb24gYXMgdHJhbnNwYXJlbnRseSBhcyBwb3NzaWJsZS4KK2lmIG5vdCBfZXhpc3RzKCdmc3BhdGgnKToKKyAgICBmc3BhdGggPSBfZnNwYXRoCisgICAgZnNwYXRoLl9fbmFtZV9fID0gImZzcGF0aCIKKworCitjbGFzcyBQYXRoTGlrZShhYmMuQUJDKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyB0aGUgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbC4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgc3ViY2xhc3MpOgorICAgICAgICByZXR1cm4gaGFzYXR0cihzdWJjbGFzcywgJ19fZnNwYXRoX18nKQpkaWZmIC0tZ2l0IGEvTGliL3BhdGhsaWIucHkgYi9MaWIvcGF0aGxpYi5weQppbmRleCAxNDgwZTJmLi42OTY1MzkzIDEwMDY0NAotLS0gYS9MaWIvcGF0aGxpYi5weQorKysgYi9MaWIvcGF0aGxpYi5weQpAQCAtMTc4LDEyICsxNzgsMjYgQEAKICAgICBkZWYgY2FzZWZvbGRfcGFydHMoc2VsZiwgcGFydHMpOgogICAgICAgICByZXR1cm4gW3AubG93ZXIoKSBmb3IgcCBpbiBwYXJ0c10KIAotICAgIGRlZiByZXNvbHZlKHNlbGYsIHBhdGgpOgorICAgIGRlZiByZXNvbHZlKHNlbGYsIHBhdGgsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgIHMgPSBzdHIocGF0aCkKICAgICAgICAgaWYgbm90IHM6CiAgICAgICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKKyAgICAgICAgcHJldmlvdXNfcyA9IE5vbmUKICAgICAgICAgaWYgX2dldGZpbmFscGF0aG5hbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0X3RvX25vcm1hbChfZ2V0ZmluYWxwYXRobmFtZShzKSkKKyAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0X3RvX25vcm1hbChfZ2V0ZmluYWxwYXRobmFtZShzKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHNlbGYuX2V4dF90b19ub3JtYWwoX2dldGZpbmFscGF0aG5hbWUocykpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzX3MgPSBzCisgICAgICAgICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzLCBvcy5wYXJkaXIpKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzICsgb3MucGF0aC5zZXAgKyBvcy5wYXRoLmJhc2VuYW1lKHByZXZpb3VzX3MpCiAgICAgICAgICMgTWVhbnMgZmFsbGJhY2sgb24gYWJzb2x1dGUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMjg1LDcgKzI5OSw3IEBACiAgICAgZGVmIGNhc2Vmb2xkX3BhcnRzKHNlbGYsIHBhcnRzKToKICAgICAgICAgcmV0dXJuIHBhcnRzCiAKLSAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoKToKKyAgICBkZWYgcmVzb2x2ZShzZWxmLCBwYXRoLCBzdHJpY3Q9RmFsc2UpOgogICAgICAgICBzZXAgPSBzZWxmLnNlcAogICAgICAgICBhY2Nlc3NvciA9IHBhdGguX2FjY2Vzc29yCiAgICAgICAgIHNlZW4gPSB7fQpAQCAtMzE1LDcgKzMyOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBhY2Nlc3Nvci5yZWFkbGluayhuZXdwYXRoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gRUlOVkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3cGF0aAogICAgICAgICAgICAgICAgICAgICAjIE5vdCBhIHN5bWxpbmsKICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG5ld3BhdGgKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzg1LDYgKzQwMiw4IEBACiAKICAgICBsaXN0ZGlyID0gX3dyYXBfc3RyZnVuYyhvcy5saXN0ZGlyKQogCisgICAgc2NhbmRpciA9IF93cmFwX3N0cmZ1bmMob3Muc2NhbmRpcikKKwogICAgIGNobW9kID0gX3dyYXBfc3RyZnVuYyhvcy5jaG1vZCkKIAogICAgIGlmIGhhc2F0dHIob3MsICJsY2htb2QiKToKQEAgLTQyOSwyNSArNDQ4LDYgQEAKICMgR2xvYmJpbmcgaGVscGVycwogIwogCi1AY29udGV4dG1hbmFnZXIKLWRlZiBfY2FjaGVkKGZ1bmMpOgotICAgIHRyeToKLSAgICAgICAgZnVuYy5fX2NhY2hlZF9fCi0gICAgICAgIHlpZWxkIGZ1bmMKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVthcmdzXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHZhbHVlID0gY2FjaGVbYXJnc10gPSBmdW5jKCphcmdzKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICB3cmFwcGVyLl9fY2FjaGVkX18gPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkIHdyYXBwZXIKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLQogZGVmIF9tYWtlX3NlbGVjdG9yKHBhdHRlcm5fcGFydHMpOgogICAgIHBhdCA9IHBhdHRlcm5fcGFydHNbMF0KICAgICBjaGlsZF9wYXJ0cyA9IHBhdHRlcm5fcGFydHNbMTpdCkBAIC00NzMsOCArNDczLDEwIEBACiAgICAgICAgIHNlbGYuY2hpbGRfcGFydHMgPSBjaGlsZF9wYXJ0cwogICAgICAgICBpZiBjaGlsZF9wYXJ0czoKICAgICAgICAgICAgIHNlbGYuc3VjY2Vzc29yID0gX21ha2Vfc2VsZWN0b3IoY2hpbGRfcGFydHMpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9UZXJtaW5hdGluZ1NlbGVjdG9yKCkKKyAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IEZhbHNlCiAKICAgICBkZWYgc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgpOgogICAgICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIGNoaWxkIHBhdGhzIG9mIGBwYXJlbnRfcGF0aGAgbWF0Y2hlZCBieSB0aGlzCkBAIC00ODIsMTMgKzQ4NCwxNSBAQAogICAgICAgICBwYXRoX2NscyA9IHR5cGUocGFyZW50X3BhdGgpCiAgICAgICAgIGlzX2RpciA9IHBhdGhfY2xzLmlzX2RpcgogICAgICAgICBleGlzdHMgPSBwYXRoX2Nscy5leGlzdHMKLSAgICAgICAgbGlzdGRpciA9IHBhcmVudF9wYXRoLl9hY2Nlc3Nvci5saXN0ZGlyCi0gICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpCisgICAgICAgIHNjYW5kaXIgPSBwYXJlbnRfcGF0aC5fYWNjZXNzb3Iuc2NhbmRpcgorICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X2Zyb20ocGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKQogCiAKIGNsYXNzIF9UZXJtaW5hdGluZ1NlbGVjdG9yOgogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKIAogCkBAIC00OTgsMTMgKzUwMiwxMSBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgoc2VsZi5uYW1lKQotICAgICAgICAgICAgaWYgZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgICAgICAgICBpZiAoaXNfZGlyIGlmIHNlbGYuZGlyb25seSBlbHNlIGV4aXN0cykocGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01MTYsMTcgKzUxOCwxOCBAQAogICAgICAgICBzZWxmLnBhdCA9IHJlLmNvbXBpbGUoZm5tYXRjaC50cmFuc2xhdGUocGF0KSkKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBjZiA9IHBhcmVudF9wYXRoLl9mbGF2b3VyLmNhc2Vmb2xkCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBjYXNlZm9sZGVkID0gY2YobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKLSAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKKyAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGVudHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0Lm1hdGNoKGNhc2Vmb2xkZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTUzNywzMiArNTQwLDMwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMpOgogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgZGVmIF9pdGVyYXRlX2RpcmVjdG9yaWVzKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIHNjYW5kaXIpOgogICAgICAgICB5aWVsZCBwYXJlbnRfcGF0aAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQotICAgICAgICAgICAgICAgIGlmIGlzX2RpcihwYXRoKSBhbmQgbm90IHBhdGguaXNfc3ltbGluaygpOgotICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIGVudHJ5LmlzX2RpcigpIGFuZCBub3QgZW50cnkuaXNfc3ltbGluaygpOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChlbnRyeS5uYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2Rpciwgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgd2l0aCBfY2FjaGVkKGxpc3RkaXIpIGFzIGxpc3RkaXI6Ci0gICAgICAgICAgICAgICAgeWllbGRlZCA9IHNldCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdGFydGluZ19wb2ludCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhcmVudF9wYXRoLCBpc19kaXIsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmNsZWFyKCkKKyAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvcl9zZWxlY3QgPSBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20KKyAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcCBub3QgaW4geWllbGRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtNjM0LDEzICs2MzUsMTYgQEAKICAgICAgICAgZm9yIGEgaW4gYXJnczoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgUHVyZVBhdGgpOgogICAgICAgICAgICAgICAgIHBhcnRzICs9IGEuX3BhcnRzCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCi0gICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgcGF0aCBvciBzdHIgb2JqZWN0LCBub3QgJXIiCi0gICAgICAgICAgICAgICAgICAgICUgdHlwZShhKSkKKyAgICAgICAgICAgICAgICBhID0gb3MuZnNwYXRoKGEpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCisgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzdHIoYSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0ciBvYmplY3Qgb3IgYW4gb3MuUGF0aExpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCByZXR1cm5pbmcgc3RyLCBub3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCiAgICAgICAgIHJldHVybiBjbHMuX2ZsYXZvdXIucGFyc2VfcGFydHMocGFydHMpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTY5Myw2ICs2OTcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0cykgb3IgJy4nCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RyCiAKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCiAgICAgZGVmIGFzX3Bvc2l4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aCB3aXRoIGZvcndhcmQgKC8pCiAgICAgICAgIHNsYXNoZXMuIiIiCkBAIC05NDMsNiArOTUwLDEwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyMgQ2FuJ3Qgc3ViY2xhc3Mgb3MuUGF0aExpa2UgZnJvbSBQdXJlUGF0aCBhbmQga2VlcCB0aGUgY29uc3RydWN0b3IKKyMgb3B0aW1pemF0aW9ucyBpbiBQdXJlUGF0aC5fcGFyc2VfYXJncygpLgorb3MuUGF0aExpa2UucmVnaXN0ZXIoUHVyZVBhdGgpCisKIAogY2xhc3MgUHVyZVBvc2l4UGF0aChQdXJlUGF0aCk6CiAgICAgX2ZsYXZvdXIgPSBfcG9zaXhfZmxhdm91cgpAQCAtMTA5OCw3ICsxMTA5LDcgQEAKICAgICAgICAgb2JqLl9pbml0KHRlbXBsYXRlPXNlbGYpCiAgICAgICAgIHJldHVybiBvYmoKIAotICAgIGRlZiByZXNvbHZlKHNlbGYpOgorICAgIGRlZiByZXNvbHZlKHNlbGYsIHN0cmljdD1GYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBNYWtlIHRoZSBwYXRoIGFic29sdXRlLCByZXNvbHZpbmcgYWxsIHN5bWxpbmtzIG9uIHRoZSB3YXkgYW5kIGFsc28KICAgICAgICAgbm9ybWFsaXppbmcgaXQgKGZvciBleGFtcGxlIHR1cm5pbmcgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzIHVuZGVyCkBAIC0xMTA2LDcgKzExMTcsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fY2xvc2VkOgogICAgICAgICAgICAgc2VsZi5fcmFpc2VfY2xvc2VkKCkKLSAgICAgICAgcyA9IHNlbGYuX2ZsYXZvdXIucmVzb2x2ZShzZWxmKQorICAgICAgICBzID0gc2VsZi5fZmxhdm91ci5yZXNvbHZlKHNlbGYsIHN0cmljdD1zdHJpY3QpCiAgICAgICAgIGlmIHMgaXMgTm9uZToKICAgICAgICAgICAgICMgTm8gc3ltbGluayByZXNvbHV0aW9uID0+IGZvciBjb25zaXN0ZW5jeSwgcmFpc2UgYW4gZXJyb3IgaWYKICAgICAgICAgICAgICMgdGhlIHBhdGggZG9lc24ndCBleGlzdCBvciBpcyBmb3JiaWRkZW4KZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDQ3OTcyNjUuLjk3NjE4YjAgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNTIsNyArNTIsOCBAQAogZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZCBhdCB0aGUKIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmIGJvdGgKIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZCBhbGlhc2VzCi1kZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLgorZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS4gIFRoaXMgYmVoYXZpb3IgY2FuIGJlCitkaXNhYmxlZCBieSBwYXNzaW5nIHRoZSAicmVhZHJjPUZhbHNlIiBhcmd1bWVudCB0byB0aGUgUGRiIGNvbnN0cnVjdG9yLgogCiBBc2lkZSBmcm9tIGFsaWFzZXMsIHRoZSBkZWJ1Z2dlciBpcyBub3QgZGlyZWN0bHkgcHJvZ3JhbW1hYmxlOyBidXQgaXQKIGlzIGltcGxlbWVudGVkIGFzIGEgY2xhc3MgZnJvbSB3aGljaCB5b3UgY2FuIGRlcml2ZSB5b3VyIG93biBkZWJ1Z2dlcgpAQCAtMTM3LDcgKzEzOCw3IEBACiAgICAgX3ByZXZpb3VzX3NpZ2ludF9oYW5kbGVyID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLAotICAgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSk6CiAgICAgICAgIGJkYi5CZGIuX19pbml0X18oc2VsZiwgc2tpcD1za2lwKQogICAgICAgICBjbWQuQ21kLl9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5LCBzdGRpbiwgc3Rkb3V0KQogICAgICAgICBpZiBzdGRvdXQ6CkBAIC0xNjAsMTggKzE2MSwxOSBAQAogCiAgICAgICAgICMgUmVhZCAkSE9NRS8ucGRicmMgYW5kIC4vLnBkYnJjCiAgICAgICAgIHNlbGYucmNMaW5lcyA9IFtdCi0gICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgZW52SG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICBpZiByZWFkcmM6CisgICAgICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBlbnZIb21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKCIucGRicmMiKSBhcyByY0ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHNlbGYuY29tbWFuZHMgPSB7fSAjIGFzc29jaWF0ZXMgYSBjb21tYW5kIGxpc3QgdG8gYnJlYWtwb2ludCBudW1iZXJzCiAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHQgPSB7fSAjIGZvciBlYWNoIGJwIG51bSwgdGVsbHMgaWYgdGhlIHByb21wdApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggMDQwZWNiMi4uYzgzNzBjOSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yNyw2ICsyNyw3IEBACiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIGltcG9ydCBzeXMKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplCiBmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCkBAIC01NDgsNyArNTQ5LDcgQEAKICAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCiAKICAgICAgICAgZnVuY19uYW1lID0gZ2V0YXR0cihmdW5jLCAiX19uYW1lX18iLCAiIikKLSAgICAgICAgaWYgc2VsZi5wcm90byA+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/JykKKyAgICByJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJworICAgIHInXFtQeVB5IFteXF1dK1xdPycpCiAKIF9zeXNfdmVyc2lvbl9jYWNoZSA9IHt9CiAKQEAgLTEzNDUsNyArMTM0NCw3IEBACiAgICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTMyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3BsaXN0bGliLnB5IGIvTGliL3BsaXN0bGliLnB5CmluZGV4IDI1MDJiMzkuLjA5YmU1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9wbGlzdGxpYi5weQorKysgYi9MaWIvcGxpc3RsaWIucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKICIiIgogX19hbGxfXyA9IFsKICAgICAicmVhZFBsaXN0IiwgIndyaXRlUGxpc3QiLCAicmVhZFBsaXN0RnJvbUJ5dGVzIiwgIndyaXRlUGxpc3RUb0J5dGVzIiwKLSAgICAiUGxpc3QiLCAiRGF0YSIsICJEaWN0IiwgIkZNVF9YTUwiLCAiRk1UX0JJTkFSWSIsCisgICAgIlBsaXN0IiwgIkRhdGEiLCAiRGljdCIsICJJbnZhbGlkRmlsZUV4Y2VwdGlvbiIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLAogICAgICJsb2FkIiwgImR1bXAiLCAibG9hZHMiLCAiZHVtcHMiCiBdCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IGY2NzIzOTAuLmNhZTY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtNDMxLDYgKzQzMSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGQ5ZjNmOTkuLjZkYmRhYjIgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtNDksNiArNDksNyBAQAogCiBkZWYgbm9ybWNhc2Uocyk6CiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuICBIYXMgbm8gZWZmZWN0IHVuZGVyIFBvc2l4IiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQpAQCAtNjAsNiArNjEsNyBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzZXAgPSBfZ2V0X3NlcChzKQogICAgIHJldHVybiBzLnN0YXJ0c3dpdGgoc2VwKQogCkBAIC03MywxMiArNzUsMTMgQEAKICAgICBJZiBhbnkgY29tcG9uZW50IGlzIGFuIGFic29sdXRlIHBhdGgsIGFsbCBwcmV2aW91cyBwYXRoIGNvbXBvbmVudHMKICAgICB3aWxsIGJlIGRpc2NhcmRlZC4gIEFuIGVtcHR5IGxhc3QgcGFydCB3aWxsIHJlc3VsdCBpbiBhIHBhdGggdGhhdAogICAgIGVuZHMgd2l0aCBhIHNlcGFyYXRvci4iIiIKKyAgICBhID0gb3MuZnNwYXRoKGEpCiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKICAgICAgICAgaWYgbm90IHA6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCi0gICAgICAgIGZvciBiIGluIHA6CisgICAgICAgIGZvciBiIGluIG1hcChvcy5mc3BhdGgsIHApOgogICAgICAgICAgICAgaWYgYi5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IGIKICAgICAgICAgICAgIGVsaWYgbm90IHBhdGggb3IgcGF0aC5lbmRzd2l0aChzZXApOgpAQCAtOTksNiArMTAyLDcgQEAKIGRlZiBzcGxpdChwKToKICAgICAiIiJTcGxpdCBhIHBhdGhuYW1lLiAgUmV0dXJucyB0dXBsZSAiKGhlYWQsIHRhaWwpIiB3aGVyZSAidGFpbCIgaXMKICAgICBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4gIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQsIHRhaWwgPSBwWzppXSwgcFtpOl0KQEAgLTExMyw2ICsxMTcsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBleHRzZXAgPSBiJy4nCkBAIC0xMjgsNiArMTMzLDcgQEAKIGRlZiBzcGxpdGRyaXZlKHApOgogICAgICIiIlNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZSBhbmQgcGF0aC4gT24gUG9zaXgsIGRyaXZlIGlzIGFsd2F5cwogICAgIGVtcHR5LiIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICByZXR1cm4gcFs6MF0sIHAKIAogCkBAIC0xMzUsNiArMTQxLDcgQEAKIAogZGVmIGJhc2VuYW1lKHApOgogICAgICIiIlJldHVybnMgdGhlIGZpbmFsIGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICByZXR1cm4gcFtpOl0KQEAgLTE0NCw2ICsxNTEsNyBAQAogCiBkZWYgZGlybmFtZShwKToKICAgICAiIiJSZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQgPSBwWzppXQpAQCAtMjIyLDYgKzIzMCw3IEBACiBkZWYgZXhwYW5kdXNlcihwYXRoKToKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0aW9ucy4gIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwKICAgICBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTI2Nyw2ICsyNzYsNyBAQAogZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiBmb3JtICR2YXIgYW5kICR7dmFyfS4gIFVua25vd24gdmFyaWFibGVzCiAgICAgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBnbG9iYWwgX3ZhcnByb2csIF92YXJwcm9nYgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoOgpAQCAtMzE4LDYgKzMyOCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgZW1wdHkgPSBiJycKQEAgLTM1NSw2ICszNjYsNyBAQAogCiBkZWYgYWJzcGF0aChwYXRoKToKICAgICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtMzcwLDYgKzM4Miw3IEBACiBkZWYgcmVhbHBhdGgoZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55CiBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aC4iIiIKKyAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICBwYXRoLCBvayA9IF9qb2lucmVhbHBhdGgoZmlsZW5hbWVbOjBdLCBmaWxlbmFtZSwge30pCiAgICAgcmV0dXJuIGFic3BhdGgocGF0aCkKIApAQCAtNDM0LDYgKzQ0Nyw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgY3VyZGlyID0gYicuJwogICAgICAgICBzZXAgPSBiJy8nCkBAIC00NDUsNiArNDU5LDggQEAKIAogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIHN0YXJ0ID0gY3VyZGlyCisgICAgZWxzZToKKyAgICAgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCkBAIC00NzIsNiArNDg4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGN1cmRpciA9IGInLicKZGlmZiAtLWdpdCBhL0xpYi9weWNsYnIucHkgYi9MaWIvcHljbGJyLnB5CmluZGV4IDRkNDBiODcuLmQ3ZGJhOTcgMTAwNjQ0Ci0tLSBhL0xpYi9weWNsYnIucHkKKysrIGIvTGliL3B5Y2xici5weQpAQCAtNDAsMTIgKzQwLDEwIEBACiAiIiIKIAogaW1wb3J0IGlvCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHRva2VuaXplCiBmcm9tIHRva2VuIGltcG9ydCBOQU1FLCBERURFTlQsIE9QCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIF9fYWxsX18gPSBbInJlYWRtb2R1bGUiLCAicmVhZG1vZHVsZV9leCIsICJDbGFzcyIsICJGdW5jdGlvbiJdCiAKQEAgLTMyOCw2ICszMjYsNyBAQAogZGVmIF9tYWluKCk6CiAgICAgIyBNYWluIHByb2dyYW0gZm9yIHRlc3RpbmcuCiAgICAgaW1wb3J0IG9zCisgICAgZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogICAgIG1vZCA9IHN5cy5hcmd2WzFdCiAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kKToKICAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUobW9kKV0KZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDBkMGQwYWIuLjM5ZGIzOTEKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtMjA5LDYgKzIwOSwxOCBAQAogICAgICAgICByZXN1bHRzLmFwcGVuZCgobmFtZSwga2luZCwgY2xzLCB2YWx1ZSkpCiAgICAgcmV0dXJuIHJlc3VsdHMKIAorZGVmIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KToKKyAgICAnU29ydCB0aGUgYXR0cnMgbGlzdCBpbi1wbGFjZSBieSBfZmllbGRzIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IGJ5IG5hbWUnCisgICAgIyBUaGlzIGFsbG93cyBkYXRhIGRlc2NyaXB0b3JzIHRvIGJlIG9yZGVyZWQgYWNjb3JkaW5nCisgICAgIyB0byBhIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisgICAgZmllbGRzID0gZ2V0YXR0cihvYmplY3QsICdfZmllbGRzJywgW10pCisgICAgdHJ5OgorICAgICAgICBmaWVsZF9vcmRlciA9IHtuYW1lIDogaS1sZW4oZmllbGRzKSBmb3IgKGksIG5hbWUpIGluIGVudW1lcmF0ZShmaWVsZHMpfQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIGZpZWxkX29yZGVyID0ge30KKyAgICBrZXlmdW5jID0gbGFtYmRhIGF0dHI6IChmaWVsZF9vcmRlci5nZXQoYXR0clswXSwgMCksIGF0dHJbMF0pCisgICAgYXR0cnMuc29ydChrZXk9a2V5ZnVuYykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtb2R1bGUgbWFuaXB1bGF0aW9uCiAKIGRlZiBpc3BhY2thZ2UocGF0aCk6CkBAIC0zMzgsNyArMzUwLDcgQEAKICAgICAgICAgZWxpZiBleGMgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHZhbHVlLmZpbGVuYW1lLCBpbmZvKQotICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcikgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKICAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgpAQCAtODY4LDggKzg4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICAgdGFnICs9ICc6PGJyPlxuJwogCi0gICAgICAgICAgICAjIFNvcnQgYXR0cnMgYnkgbmFtZS4KLSAgICAgICAgICAgIGF0dHJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQorICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCdNZXRob2RzICVzJyAlIHRhZywgYXR0cnMsCkBAIC0xMjg3LDggKzEyOTgsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0YWcgPSAiaW5oZXJpdGVkIGZyb20gJXMiICUgY2xhc3NuYW1lKHRoaXNjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQotICAgICAgICAgICAgIyBTb3J0IGF0dHJzIGJ5IG5hbWUuCi0gICAgICAgICAgICBhdHRycy5zb3J0KCkKKworICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCJNZXRob2RzICVzOlxuIiAlIHRhZywgYXR0cnMsCkBAIC0xNDE4LDEzICsxNDI5LDE0IEBACiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKSBvciBub3Qgc3lzLnN0ZG91dC5pc2F0dHkoKToKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKLSAgICBpZiAnUEFHRVInIGluIG9zLmVudmlyb246CisgICAgdXNlX3BhZ2VyID0gb3MuZW52aXJvbi5nZXQoJ01BTlBBR0VSJykgb3Igb3MuZW52aXJvbi5nZXQoJ1BBR0VSJykKKyAgICBpZiB1c2VfcGFnZXI6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIHBpcGVzIGNvbXBsZXRlbHkgYnJva2VuIGluIFdpbmRvd3MKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgICBlbGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgdXNlX3BhZ2VyKQogICAgIGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6CiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CkBAIC0xOTAxLDEwICsxOTEzLDEwIEBACiAKICAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwotV2VsY29tZSB0byBQeXRob24gJXMncyBoZWxwIHV0aWxpdHkhCitXZWxjb21lIHRvIFB5dGhvbiB7MH0ncyBoZWxwIHV0aWxpdHkhCiAKIElmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAotdGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnLyVzL3R1dG9yaWFsLy4KK3RoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy97MH0vdHV0b3JpYWwvLgogCiBFbnRlciB0aGUgbmFtZSBvZiBhbnkgbW9kdWxlLCBrZXl3b3JkLCBvciB0b3BpYyB0byBnZXQgaGVscCBvbiB3cml0aW5nCiBQeXRob24gcHJvZ3JhbXMgYW5kIHVzaW5nIFB5dGhvbiBtb2R1bGVzLiAgVG8gcXVpdCB0aGlzIGhlbHAgdXRpbGl0eSBhbmQKQEAgLTE5MTQsNyArMTkyNiw3IEBACiAibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCiB3aXRoIGEgb25lLWxpbmUgc3VtbWFyeSBvZiB3aGF0IGl0IGRvZXM7IHRvIGxpc3QgdGhlIG1vZHVsZXMgd2hvc2UgbmFtZQogb3Igc3VtbWFyeSBjb250YWluIGEgZ2l2ZW4gc3RyaW5nIHN1Y2ggYXMgInNwYW0iLCB0eXBlICJtb2R1bGVzIHNwYW0iLgotJycnICUgdHVwbGUoW3N5cy52ZXJzaW9uWzozXV0qMikpCisnJycuZm9ybWF0KCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCiAKICAgICBkZWYgbGlzdChzZWxmLCBpdGVtcywgY29sdW1ucz00LCB3aWR0aD04MCk6CiAgICAgICAgIGl0ZW1zID0gbGlzdChzb3J0ZWQoaXRlbXMpKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CmluZGV4IGQ2ZjEzNjYuLjkxNGU4MTggMTAwNjQ0Ci0tLSBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQorKysgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKQEAgLTEsNzkgKzEsMTI5NDkgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBKdW4gMjUgMTQ6MDg6NDQgMjAxNgotdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiByZWZlclxudG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG5ub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgKGNvbW1hbmRcbmxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG5hc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICBOb3RlXG50aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZXhwcmVzc2lvblxudGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgdGhlXG5zdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAotICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChzdGFycmVkX2V4cHJlc3Npb24gfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuIGVtcHR5XG4gIGl0ZXJhYmxlLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQgaW4gcGFyZW50aGVzZXM6IFRoZSBvYmplY3RcbiAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cywgb3IgYVxuICBzaW5nbGUgdGFyZ2V0IGluIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlXG4gIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlXG4gIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGFuXG4gICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZVxuICAgIHRhcmdldCBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvIHRoZVxuICAgIHRhcmdldHMgYWZ0ZXIgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXNcbiAgICBpbiB0aGUgaXRlcmFibGUgaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0XG4gICAgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lb3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2F0b20taWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgc2luZ2xlIHVuZGVyc2NvcmVcbmluc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgaWRlbnRpZmllciAiX19zcGFtIlxub2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAiX0hhbV9fc3BhbSIuXG5UaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCBjb250ZXh0IGluIHdoaWNoXG50aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgZXh0cmVtZWx5IGxvbmdcbihsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHJ1bmNhdGlvbiBtYXlcbmhhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm9cbnRyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAotICdhdG9tLWxpdGVyYWxzJzogdSJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6IHUnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCi0gJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogdSdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllci4gIFRoaXNcbnByb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gIkF0dHJpYnV0ZUVycm9yIiBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKLSAnYXVnYXNzaWduJzogdSdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+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+KVxuXG5ZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3JcbmZ1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2VcbnRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuZnVuY3Rpb24uXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gTW9uIE9jdCAzMSAyMDozNzo1MyAyMDE2Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgJworICAgICAgICAgICAncmVmZXJcbicKKyAgICAgICAgICAgJ3RvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxuJworICAgICAgICAgICAnbm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgJyhjb21tYW5kXG4nCisgICAgICAgICAgICdsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuJworICAgICAgICAgICAnYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgJworICAgICAgICAgICAnTm90ZVxuJworICAgICAgICAgICAndGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ3RoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc3RhY2sgdHJhY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgJworICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKKyAnYXNzaWdubWVudCc6ICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCAnCisgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICdtb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKHN0YXJyZWRfZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgICAnfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIigiIFt0YXJnZXRfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICcqYXR0cmlidXRlcmVmKixcbicKKyAgICAgICAgICAgICAgICcqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAgICAgJyhyZW1lbWJlciB0aGF0XG4nCisgICAgICAgICAgICAgICAndGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgJworICAgICAgICAgICAgICAgJ2xhdHRlclxuJworICAgICAgICAgICAgICAgJ3lpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byAnCisgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gJworICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZVxuJworICAgICAgICAgICAgICAgJ2hpZXJhcmNoeSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCAnCisgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICdwYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuICcKKyAgICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICAgJyAgaXRlcmFibGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0IGluIHBhcmVudGhlc2VzOiBUaGUgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzLCBvciAnCisgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgJyAgc2luZ2xlIHRhcmdldCBpbiBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAgICcgIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICcgICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICcgICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0IGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgJworICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlICcKKyAgICAgICAgICAgICAgICdzdGFycmVkXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyAnCisgICAgICAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICcodGhlIGxpc3RcbicKKyAgICAgICAgICAgICAgICcgICAgY2FuIGJlIGVtcHR5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyICcKKyAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgJyAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgICAndGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgJworICAgICAgICAgICAgICAgJ2RlZmluZWQgYXNcbicKKyAgICAgICAgICAgICAgICdmb2xsb3dzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuJworICAgICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgICAgICcibm9ubG9jYWwiLFxuJworICAgICAgICAgICAgICAgJyAgICByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgJworICAgICAgICAgICAgICAgJ3RvIHJlYWNoXG4nCisgICAgICAgICAgICAgICAnICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyAnCisgICAgICAgICAgICAgICAnZGVzdHJ1Y3RvciAoaWYgaXRcbicKKyAgICAgICAgICAgICAgICcgIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaW5cbicKKyAgICAgICAgICAgICAgICcgIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgJworICAgICAgICAgICAgICAgJ3JhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggJworICAgICAgICAgICAgICAgJ2FzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgJ25vbm5lZ2F0aXZlXG4nCisgICAgICAgICAgICAgICAiICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2UncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgIgorICAgICAgICAgICAgICAgJ2Fza2VkXG4nCisgICAgICAgICAgICAgICAnICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICAnCisgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAnICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzIGtleSAiCisgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSAnCisgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICdjYWxsZWQgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICAnICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuICIKKyAgICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICAgIiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgdG8gIgorICAgICAgICAgICAgICAgJ2l0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvICcKKyAgICAgICAgICAgICAgICdyZXBsYWNlXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdsZW5ndGggb2ZcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlLFxuJworICAgICAgICAgICAgICAgJyAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsICcKKyAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAidGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnc2ltdWx0YW5lb3VzJyAiCisgICAgICAgICAgICAgICAnKGZvclxuJworICAgICAgICAgICAgICAgJ2V4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsICcKKyAgICAgICAgICAgICAgICdzb21ldGltZXNcbicKKyAgICAgICAgICAgICAgICdyZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gJworICAgICAgICAgICAgICAgJ3ByaW50c1xuJworICAgICAgICAgICAgICAgJyJbMCwgMl0iOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIHggPSBbMCwgMV1cbicKKyAgICAgICAgICAgICAgICcgICBpID0gMFxuJworICAgICAgICAgICAgICAgJyAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyAnCisgICAgICAgICAgICAgICAndXBkYXRlZFxuJworICAgICAgICAgICAgICAgJyAgIHByaW50KHgpXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+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+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciAnCisgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gKGlmIGFueSkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcgZmllbGRzICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gJyswMDAwMDAxMjAnLiBUaGlzIGFsaWdubWVudCAiCisgICAgICAgICAgICAgICAgICAnb3B0aW9uIGlzIG9ubHkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICBJdCBiZWNvbWVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAiZGVmYXVsdCB3aGVuICcwJyAgfFxuIgorICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAndGhlIGF2YWlsYWJsZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgd2lkdGhcbicKKyAgICAgICAgICAgICAgICAgICd3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgb25lIG9mXG4nCisgICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE9wdGlvbiAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2JvdGggcG9zaXRpdmUgYXMgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgICdvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZCBvbiBwb3NpdGl2ZSAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycy4gICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudFxuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4IGFuZFxuJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciAnCisgICAgICAgICAgICAgICAgICAnaGV4YWRlY2ltYWwgb3V0cHV0XG4nCisgICAgICAgICAgICAgICAgICAnaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgIlwnMGJcJyIsICcKKyAgICAgICAgICAgICAgICAgICciXCcwb1wnIiwgb3JcbicKKyAgICAgICAgICAgICAgICAgICciXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCAnCisgICAgICAgICAgICAgICAgICAnRGVjaW1hbCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byAnCisgICAgICAgICAgICAgICAgICAnYWx3YXlzIGNvbnRhaW4gYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuICcKKyAgICAgICAgICAgICAgICAgICdOb3JtYWxseSwgYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAgICdvbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIlwnR1wnIlxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgJ3Jlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgJworICAgICAgICAgICAgICAgICAgJ3Rob3VzYW5kcyBzZXBhcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlXG4nCisgICAgICAgICAgICAgICAgICAnaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSBhbHNvICcKKyAgICAgICAgICAgICAgICAgICcqKlBFUCAzNzgqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJ19cJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhbiB1bmRlcnNjb3JlIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHNcbicKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAncHJlc2VudGF0aW9uIHR5cGUgIlwnZFwnIi4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgICAnIlwnYlwnIiwgIlwnb1wnIixcbicKKyAgICAgICAgICAgICAgICAgICciXCd4XCciLCBhbmQgIlwnWFwnIiwgdW5kZXJzY29yZXMgd2lsbCBiZSBpbnNlcnRlZCBldmVyeSA0ICcKKyAgICAgICAgICAgICAgICAgICdkaWdpdHMuICBGb3JcbicKKyAgICAgICAgICAgICAgICAgICdvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2Vycm9yLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IEFkZGVkIHRoZSAiXCdfXCciIG9wdGlvbiAoc2VlIGFsc28gJworICAgICAgICAgICAgICAgICAgJyoqUEVQIDUxNSoqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gIElmIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnY29udGVudC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdXaGVuIG5vIGV4cGxpY2l0IGFsaWdubWVudCBpcyBnaXZlbiwgcHJlY2VkaW5nIHRoZSAqd2lkdGgqICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCBieSBhXG4nCisgICAgICAgICAgICAgICAgICAnemVybyAoIlwnMFwnIikgY2hhcmFjdGVyIGVuYWJsZXMgc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgJ2ZvciBudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAndHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgJworICAgICAgICAgICAgICAgICAgJ3dpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICcqYWxpZ25tZW50KiB0eXBlIG9mICJcJz1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgJ2JlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludFxuJworICAgICAgICAgICAgICAgICAgJ2ZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyIuICBGb3Igbm9uLVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSAnCisgICAgICAgICAgICAgICAgICAnaW4gb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgICd3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgJworICAgICAgICAgICAgICAgICAgJ2ZvciBzdHJpbmdzIGFuZCAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAyLiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAxMC4gICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzguICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyBsb3dlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuICcKKyAgICAgICAgICAgICAgICAgICdiZSBmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93ICcKKyAgICAgICAgICAgICAgICAgICcoZXhjZXB0ICJcJ25cJyJcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgIk5vbmUiKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgICAgICAgICAndGhlIGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICd0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICAgJ2FyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnc2NpZW50aWZpYyAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgJ2UnIHRvIGluZGljYXRlICIKKyAgICAgICAgICAgICAgICAgICd0aGUgZXhwb25lbnQuICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBjYXNlICdFJyBhcyB0aGUgc2VwYXJhdG9yICIKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdmXCciICAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG51bWJlci4gIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgIlwnZlwnIiwgYnV0ICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJ0cyAibmFuIiB0byAiTkFOIiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gJworICAgICAgICAgICAgICAgICAgJyJJTkYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdnXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uICcKKyAgICAgICAgICAgICAgICAgICcicCA+PSAxIiwgdGhpcyAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIGFuZCB0aGVuICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBvciBpbiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgJworICAgICAgICAgICAgICAgICAgJ21hZ25pdHVkZS4gIFRoZSAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlIHJlc3VsdCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2FuZCBwcmVjaXNpb24gInAtMSIgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd291bGQgaGF2ZSBleHBvbmVudCAiZXhwIi4gIFRoZW4gaWYgIi00IDw9ICcKKyAgICAgICAgICAgICAgICAgICdleHAgPCBwIiwgdGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgICciXCdmXCciIGFuZCAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24gInAtMS1leHAiLiAgT3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gInAtMSIuIEluIGJvdGggIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlICcKKyAgICAgICAgICAgICAgICAgICdyZW1vdmVkIGZyb20gdGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgYWxzbyAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBpZiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnaXQuICBQb3NpdGl2ZSBhbmQgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ3plcm8sIGFuZCBuYW5zLCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFyZSBmb3JtYXR0ZWQgYXMgImluZiIsICItaW5mIiwgIjAiLCAiLTAiICcKKyAgICAgICAgICAgICAgICAgICdhbmQgIm5hbiIgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIG9mICIxIi4gVGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICciNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgJworICAgICAgICAgICAgICAgICAgJ3N3aXRjaGVzIHRvICJcJ0VcJyIgaWYgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsICcKKyAgICAgICAgICAgICAgICAgICd0b28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2dcJyIsICcKKyAgICAgICAgICAgICAgICAgICdleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIG51bWJlciAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCclXCciICAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgJworICAgICAgICAgICAgICAgICAgJ2FuZCBkaXNwbGF5cyBpbiAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgJ3BlcmNlbnQgc2lnbi4gICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byAiXCdnXCciLCBleGNlcHQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZml4ZWQtcG9pbnQgbm90YXRpb24sIHdoZW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHBvaW50LiBUaGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyBhcyBoaWdoIGFzIG5lZWRlZCB0byAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50IHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwYXJ0aWN1bGFyIHZhbHVlLiBUaGUgb3ZlcmFsbCBlZmZlY3QgaXMgdG8gJworICAgICAgICAgICAgICAgICAgJ21hdGNoIHRoZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0ICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBleGFtcGxlc1xuJworICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgInN0ci5mb3JtYXQoKSIgc3ludGF4ICcKKyAgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIHdpdGggdGhlIG9sZCAiJSItZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICAnIiUiLWZvcm1hdHRpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAnCisgICAgICAgICAgICAgICAgICAnIiUiLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCAiXCclMDMuMmZcJyIgY2FuIGJlIHRyYW5zbGF0ZWQgdG8gIlwnezowMy4yZn1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgJworICAgICAgICAgICAgICAgICAgJ29wdGlvbnMsIHNob3duXG4nCisgICAgICAgICAgICAgICAgICAnaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9LCB7MX0sIHsyfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2EsIGIsIGMnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7fSwge30sIHt9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJykgICMgMy4xKyBvbmx5XG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2EsIGIsIGMnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnYywgYiwgYSdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3syfSwgezF9LCB7MH0nLmZvcm1hdCgqJ2FiYycpICAgICAgIyB1bnBhY2tpbmcgIgorICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7MH17MX17MH0nLmZvcm1hdCgnYWJyYScsICdjYWQnKSAgICMgYXJndW1lbnRzJyAiCisgICAgICAgICAgICAgICAgICAnaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbicKKyAgICAgICAgICAgICAgICAgICIgICAnYWJyYWNhZGFicmEnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sICIKKyAgICAgICAgICAgICAgICAgICJ7bG9uZ2l0dWRlfScuZm9ybWF0KGxhdGl0dWRlPSczNy4yNE4nLCAiCisgICAgICAgICAgICAgICAgICAibG9uZ2l0dWRlPSctMTE1LjgxVycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiBjb29yZCA9IHsnbGF0aXR1ZGUnOiAnMzcuMjROJywgJ2xvbmdpdHVkZSc6ICIKKyAgICAgICAgICAgICAgICAgICInLTExNS44MVcnfVxuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sICIKKyAgICAgICAgICAgICAgICAgICJ7bG9uZ2l0dWRlfScuZm9ybWF0KCoqY29vcmQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkFjY2Vzc2luZyBhcmd1bWVudHMnIGF0dHJpYnV0ZXM6XG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSAzLTVqXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICgnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCAiCisgICAgICAgICAgICAgICAgICAicGFydCB7MC5yZWFsfSAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS4nKS5mb3JtYXQoYylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0ICIKKyAgICAgICAgICAgICAgICAgICIzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLidcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgUG9pbnQ6XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ1BvaW50KHtzZWxmLnh9LCAiCisgICAgICAgICAgICAgICAgICAie3NlbGYueX0pJy5mb3JtYXQoc2VsZj1zZWxmKVxuIgorICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ1BvaW50KDQsIDIpJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkFjY2Vzc2luZyBhcmd1bWVudHMnIGl0ZW1zOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjb29yZCA9ICgzLCA1KVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnWDogezBbMF19OyAgWTogezBbMV19Jy5mb3JtYXQoY29vcmQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1g6IDM7ICBZOiA1J1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1JlcGxhY2luZyAiJXMiIGFuZCAiJXIiOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6ICcKKyAgICAgICAgICAgICAgICAgICd7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4nCisgICAgICAgICAgICAgICAgICAnICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OjwzMH0nLmZvcm1hdCgnbGVmdCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo+MzB9Jy5mb3JtYXQoJ3JpZ2h0IGFsaWduZWQnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWQnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Ol4zMH0nLmZvcm1hdCgnY2VudGVyZWQnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OipeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJykgICMgdXNlICcqJyBhcyBhIGZpbGwgIgorICAgICAgICAgICAgICAgICAgJ2NoYXJcbicKKyAgICAgICAgICAgICAgICAgICIgICAnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1JlcGxhY2luZyAiJStmIiwgIiUtZiIsIGFuZCAiJSBmIiBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OitmfTsgezorZn0nLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCAiCisgICAgICAgICAgICAgICAgICAnYWx3YXlzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyszLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezogZn07IHs6IGZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSAiCisgICAgICAgICAgICAgICAgICAnZm9yIHBvc2l0aXZlIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICIgICAnIDMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Oi1mfTsgezotZn0nLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSAiCisgICAgICAgICAgICAgICAgICAibWludXMgLS0gc2FtZSBhcyAnezpmfTsgezpmfSdcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiV4IiBhbmQgIiVvIiBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudCBiYXNlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBmb3JtYXQgYWxzbyBzdXBwb3J0cyBiaW5hcnkgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiAnCisgICAgICAgICAgICAgICAgICAnezA6Yn0iLmZvcm1hdCg0MilcbicKKyAgICAgICAgICAgICAgICAgICIgICAnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTAnXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOiN4fTsgIG9jdDogezA6I299OyAgYmluOiAnCisgICAgICAgICAgICAgICAgICAnezA6I2J9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1VzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Oix9Jy5mb3JtYXQoMTIzNDU2Nzg5MClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMSwyMzQsNTY3LDg5MCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdFeHByZXNzaW5nIGEgcGVyY2VudGFnZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gcG9pbnRzID0gMTlcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gdG90YWwgPSAyMlxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX0nLmZvcm1hdChwb2ludHMvdG90YWwpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1VzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezolWS0lbS0lZCAlSDolTTolU30nLmZvcm1hdChkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcyMDEwLTA3LTA0IDEyOjE1OjU4J1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoJzxePicsIFsnbGVmdCcsICdjZW50ZXInLCAiCisgICAgICAgICAgICAgICAgICAiJ3JpZ2h0J10pOlxuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgJ3swOntmaWxsfXthbGlnbn0xNn0nLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCAiCisgICAgICAgICAgICAgICAgICAnYWxpZ249YWxpZ24pXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQ8PDw8PDw8PDw8PDwnXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ15eXl5eY2VudGVyXl5eXl4nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJz4+Pj4+Pj4+Pj4+cmlnaHQnXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfScuZm9ybWF0KCpvY3RldHMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0MwQTgwMDAxJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiBpbnQoXywgMTYpXG4nCisgICAgICAgICAgICAgICAgICAnICAgMzIzMjIzNTUyMVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiB3aWR0aCA9IDVcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTogI2RvY3Rlc3Q6ICcKKyAgICAgICAgICAgICAgICAgICcrTk9STUFMSVpFX1dISVRFU1BBQ0VcbicKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgIGZvciBiYXNlIGluICdkWG9iJzpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICAgICBwcmludCgnezA6e3dpZHRofXtiYXNlfX0nLmZvcm1hdChudW0sICIKKyAgICAgICAgICAgICAgICAgICJiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSwgZW5kPScgJylcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIHByaW50KClcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDcgICAgIDcgICAgIDcgICAxMTFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTAgICAgIEEgICAgMTIgIDEwMTBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKKyAnZnVuY3Rpb24nOiAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgJworICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNkZWYgICAgICAgICAgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvcnMgICAgICAgICAgICAgIDo6PSBkZWNvcmF0b3IrXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvciAgICAgICAgICAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiAnCisgICAgICAgICAgICAgJ1thcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbicKKyAgICAgICAgICAgICAnICAgZG90dGVkX25hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3QgICAgICAgICAgOjo9IGRlZnBhcmFtZXRlciAoIiwiIGRlZnBhcmFtZXRlcikqICcKKyAgICAgICAgICAgICAnWyIsIiBbcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NdXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc1xuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJncyA6Oj0gIioiIFtwYXJhbWV0ZXJdICgiLCIgJworICAgICAgICAgICAgICdkZWZwYXJhbWV0ZXIpKiBbIiwiIFsiKioiIHBhcmFtZXRlciBbIiwiXV1dXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlciAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZGVmcGFyYW1ldGVyICAgICAgICAgICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNuYW1lICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uICcKKyAgICAgICAgICAgICAnYmluZHNcbicKKyAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCAnCisgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICdhcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgJworICAgICAgICAgICAgICdnZXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICdkZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgJ3Jlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBuYW1lXG4nCisgICAgICAgICAgICAgJ2luc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgJworICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICduZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICcgICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdCB0aGF0IHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpcyBub3QgdGVtcG9yYXJpbHkgYm91bmQgdG8gJworICAgICAgICAgICAgICd0aGUgbmFtZVxuJworICAgICAgICAgICAgICciZnVuYyIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuJworICAgICAgICAgICAgICcqZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAndmFsdWVzLiJcbicKKyAgICAgICAgICAgICAnRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgJyphcmd1bWVudCogbWF5XG4nCisgICAgICAgICAgICAgImJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlcidzIGRlZmF1bHQgIgorICAgICAgICAgICAgICd2YWx1ZSBpc1xuJworICAgICAgICAgICAgICdzdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSAnCisgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAnaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2dyYW1tYXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXNcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnInByZS1cbicKKyAgICAgICAgICAgICAnY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSAnCisgICAgICAgICAgICAgJ2ltcG9ydGFudFxuJworICAgICAgICAgICAgICd0byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoICcKKyAgICAgICAgICAgICAnYXMgYVxuJworICAgICAgICAgICAgICdsaXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICdhcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgJworICAgICAgICAgICAgICdtb2RpZmllZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgJworICAgICAgICAgICAgICd0byB1c2VcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiwgZS5nLjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBwZW5ndWluID0gW11cbicKKyAgICAgICAgICAgICAnICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbicKKyAgICAgICAgICAgICAnICAgICAgIHJldHVybiBwZW5ndWluXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICdDYWxscy5cbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ21lbnRpb25lZCBpblxuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbSAnCisgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAnYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm0gIiIqaWRlbnRpZmllciIiICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmcgYW55IGV4Y2VzcyAnCisgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuIElmIHRoZSBmb3JtXG4nCisgICAgICAgICAgICAgJyIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgb3JkZXJlZFxuJworICAgICAgICAgICAgICdtYXBwaW5nIHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgJworICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAnZW1wdHkgbWFwcGluZyBvZiB0aGUgc2FtZSB0eXBlLiAgUGFyYW1ldGVycyBhZnRlciAiIioiIiBvclxuJworICAgICAgICAgICAgICciIippZGVudGlmaWVyIiIgYXJlIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSAnCisgICAgICAgICAgICAgJ3Bhc3NlZFxuJworICAgICAgICAgICAgICd1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiIjogZXhwcmVzc2lvbiIiICcKKyAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3RoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuICcKKyAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAnb2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgJworICAgICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gIiItPiBleHByZXNzaW9uIiIgYWZ0ZXIgdGhlICcKKyAgICAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJ2xpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zICcKKyAgICAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgICAgJ2JlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgJworICAgICAgICAgICAgICdjb2RlLlxuJworICAgICAgICAgICAgICdUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuJworICAgICAgICAgICAgICdmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzIHZhbHVlcyBvZiBhXG4nCisgICAgICAgICAgICAgImRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnMnIG5hbWVzIGluIHRoZSAiCisgICAgICAgICAgICAgJyJfX2Fubm90YXRpb25zX18iXG4nCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCAnCisgICAgICAgICAgICAgJ2JvdW5kXG4nCisgICAgICAgICAgICAgJ3RvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gTGFtYmRhcy4gIE5vdGUgdGhhdCB0aGUgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb247XG4nCisgICAgICAgICAgICAgJ2EgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlICcKKyAgICAgICAgICAgICAnaXRcbicKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIgorICAgICAgICAgICAgICciImRlZiIiXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuJworICAgICAgICAgICAgICdmdW5jdGlvbiB0aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgJworICAgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICAgJ2luIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uIE5hbWluZyBhbmQgYmluZGluZyBmb3IgJworICAgICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJywKKyAnZ2xvYmFsJzogJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBnbG9iYWxfc3RtdCA6Oj0gImdsb2JhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSAnCisgICAgICAgICAgICdlbnRpcmVcbicKKyAgICAgICAgICAgJ2N1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gJworICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgJ2ludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhICcKKyAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAndmFyaWFibGUgd2l0aG91dCAiZ2xvYmFsIiwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG4nCisgICAgICAgICAgICdnbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICdibG9jayB0ZXh0dWFsbHkgcHJlY2VkaW5nIHRoYXQgImdsb2JhbCIgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAgJ3BhcmFtZXRlcnMgb3IgaW4gYSAiZm9yIiBsb29wIGNvbnRyb2wgdGFyZ2V0LCAiY2xhc3MiIGRlZmluaXRpb24sXG4nCisgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uLCAiaW1wb3J0IiBzdGF0ZW1lbnQsIG9yIHZhcmlhYmxlIGFubm90YXRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2VuZm9yY2Ugc29tZSBvZiB0aGVzZSByZXN0cmljdGlvbiwgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgJworICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAnZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5ICcKKyAgICAgICAgICAgJ2NoYW5nZVxuJworICAgICAgICAgICAndGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSAiZ2xvYmFsIiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgJworICAgICAgICAgICAncGFyc2VyLiAgSXRcbicKKyAgICAgICAgICAgJ2FwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAiZ2xvYmFsIlxuJworICAgICAgICAgICAnc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhICJnbG9iYWwiIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSAnCisgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgJ29yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiAiZXhlYygpIiBmdW5jdGlvbiBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgImdsb2JhbCIgc3RhdGVtZW50cyBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2NvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlICcKKyAgICAgICAgICAgJyJldmFsKCkiXG4nCisgICAgICAgICAgICdhbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKKyAnaWQtY2xhc3Nlcyc6ICdcbicKKyAgICAgICAgICAgICAgICdSZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0NlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSAnCisgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgJ21lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgJworICAgICAgICAgICAgICAgJ2xlYWRpbmcgYW5kXG4nCisgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfKiJcbicKKyAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfIlxuJworICAgICAgICAgICAgICAgJyAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgJworICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgJyAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiYnVpbHRpbnMiIG1vZHVsZS4gICcKKyAgICAgICAgICAgICAgICdXaGVuIG5vdFxuJworICAgICAgICAgICAgICAgJyAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgJworICAgICAgICAgICAgICAgJ2RlZmluZWQuXG4nCisgICAgICAgICAgICAgICAnICAgU2VlIHNlY3Rpb24gVGhlIGltcG9ydCBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgJyAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgICJnZXR0ZXh0IiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyAnCisgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qX18iXG4nCisgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICcgICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgJworICAgICAgICAgICAgICAgJ0N1cnJlbnRcbicKKyAgICAgICAgICAgICAgICcgICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgU3BlY2lhbCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgJ3NlY3Rpb24gYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyAnCisgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICcgICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgJworICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfXyoiXG4nCisgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSAnCisgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiAnCisgICAgICAgICAgICAgICAnYmFzZSBhbmRcbicKKyAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAorICdpZGVudGlmaWVycyc6ICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBzeW50YXggb2YgaWRlbnRpZmllcnMgaW4gUHl0aG9uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAnYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7ICcKKyAgICAgICAgICAgICAgICAnc2VlIGFsc29cbicKKyAgICAgICAgICAgICAgICAnKipQRVAgMzEzMSoqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdXaXRoaW4gdGhlIEFTQ0lJIHJhbmdlIChVKzAwMDEuLlUrMDA3RiksIHRoZSB2YWxpZCBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCAnCisgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZVxuJworICAgICAgICAgICAgICAgICdsZXR0ZXJzICJBIiB0aHJvdWdoICJaIiwgdGhlIHVuZGVyc2NvcmUgIl8iIGFuZCwgZXhjZXB0IGZvciAnCisgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIsIHRoZSBkaWdpdHMgIjAiIHRocm91Z2ggIjkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlICcKKyAgICAgICAgICAgICAgICAnQVNDSUlcbicKKyAgICAgICAgICAgICAgICAncmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSAnCisgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2F0aW9uXG4nCisgICAgICAgICAgICAgICAgJ3VzZXMgdGhlIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGFzICcKKyAgICAgICAgICAgICAgICAnaW5jbHVkZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgJyJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgYXJlIHVubGltaXRlZCBpbiBsZW5ndGguICBDYXNlIGlzIHNpZ25pZmljYW50LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgaWRlbnRpZmllciAgIDo6PSB4aWRfc3RhcnQgeGlkX2NvbnRpbnVlKlxuJworICAgICAgICAgICAgICAgICcgICBpZF9zdGFydCAgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBnZW5lcmFsIGNhdGVnb3JpZXMgTHUsICcKKyAgICAgICAgICAgICAgICAnTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICdPdGhlcl9JRF9TdGFydCBwcm9wZXJ0eT5cbicKKyAgICAgICAgICAgICAgICAnICAgaWRfY29udGludWUgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQsIHBsdXMgJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCAnCisgICAgICAgICAgICAgICAgJ3RoZSBPdGhlcl9JRF9Db250aW51ZSBwcm9wZXJ0eT5cbicKKyAgICAgICAgICAgICAgICAnICAgeGlkX3N0YXJ0ICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQgd2hvc2UgTkZLQyAnCisgICAgICAgICAgICAgICAgJ25vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuJworICAgICAgICAgICAgICAgICcgICB4aWRfY29udGludWUgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9jb250aW51ZSB3aG9zZSBORktDICcKKyAgICAgICAgICAgICAgICAnbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfY29udGludWUqIj5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBVbmljb2RlIGNhdGVnb3J5IGNvZGVzIG1lbnRpb25lZCBhYm92ZSBzdGFuZCBmb3I6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTGwqIC0gbG93ZXJjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkx0KiAtIHRpdGxlY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbyogLSBvdGhlciBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpObCogLSBsZXR0ZXIgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTWMqIC0gc3BhY2luZyBjb21iaW5pbmcgbWFya3NcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk5kKiAtIGRlY2ltYWwgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqT3RoZXJfSURfU3RhcnQqIC0gZXhwbGljaXQgbGlzdCBvZiBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAnUHJvcExpc3QudHh0IHRvXG4nCisgICAgICAgICAgICAgICAgJyAgc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0FsbCBpZGVudGlmaWVycyBhcmUgY29udmVydGVkIGludG8gdGhlIG5vcm1hbCBmb3JtIE5GS0Mgd2hpbGUgJworICAgICAgICAgICAgICAgICdwYXJzaW5nO1xuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIG9mIGlkZW50aWZpZXJzIGlzIGJhc2VkIG9uIE5GS0MuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGZvclxuJworICAgICAgICAgICAgICAgICdVbmljb2RlIDQuMSBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly93d3cuZGNsLmhwaS51bmktXG4nCisgICAgICAgICAgICAgICAgJ3BvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0tleXdvcmRzXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAnCisgICAgICAgICAgICAgICAgJyprZXl3b3Jkcyogb2ZcbicKKyAgICAgICAgICAgICAgICAndGhlIGxhbmd1YWdlLCBhbmQgY2Fubm90IGJlIHVzZWQgYXMgb3JkaW5hcnkgaWRlbnRpZmllcnMuICAnCisgICAgICAgICAgICAgICAgJ1RoZXkgbXVzdFxuJworICAgICAgICAgICAgICAgICdiZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAnICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbicKKyAgICAgICAgICAgICAgICAnICAgVHJ1ZSAgICAgICBkZWYgICAgICAgIGZyb20gICAgICAgbm9ubG9jYWwgICB3aGlsZVxuJworICAgICAgICAgICAgICAgICcgICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuJworICAgICAgICAgICAgICAgICcgICBhc3NlcnQgICAgIGVsc2UgICAgICAgaW1wb3J0ICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgJyAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgJ21lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgJworICAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgICd0cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfIlxuJworICAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiYnVpbHRpbnMiIG1vZHVsZS4gICcKKyAgICAgICAgICAgICAgICAnV2hlbiBub3RcbicKKyAgICAgICAgICAgICAgICAnICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCAnCisgICAgICAgICAgICAgICAgJ2RlZmluZWQuXG4nCisgICAgICAgICAgICAgICAgJyAgIFNlZSBzZWN0aW9uIFRoZSBpbXBvcnQgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgICdjb252ZW50aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgICcgICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICAnQ3VycmVudFxuJworICAgICAgICAgICAgICAgICcgICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgU3BlY2lhbCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICdzZWN0aW9uIGFuZFxuJworICAgICAgICAgICAgICAgICcgICBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zICcKKyAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZG9lcyBub3RcbicKKyAgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAgJyAgIHdhcm5pbmcuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgICcgICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkICcKKyAgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgICdtYW5nbGVkIGZvcm1cbicKKyAgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiAnCisgICAgICAgICAgICAgICAgJ2Jhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gSWRlbnRpZmllcnMgKE5hbWVzKS5cbicsCisgJ2lmJzogJ1xuJworICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnRcbicKKyAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuJworICAgICAgICdcbicKKyAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICcgICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuJworICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0l0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyAnCisgICAgICAgJ29uZVxuJworICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gb3BlcmF0aW9uc1xuJworICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuJworICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG4nCisgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnaW1hZ2luYXJ5JzogJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpbWFnbnVtYmVyIDo6PSAoZmxvYXRudW1iZXIgfCBkaWdpdHBhcnQpICgiaiIgfCAiSiIpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgJworICAgICAgICAgICAgICAnb2YgMC4wLlxuJworICAgICAgICAgICAgICAnQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgJworICAgICAgICAgICAgICAnbnVtYmVyc1xuJworICAgICAgICAgICAgICAnYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgJworICAgICAgICAgICAgICAnY29tcGxleFxuJworICAgICAgICAgICAgICAnbnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvICcKKyAgICAgICAgICAgICAgJ2l0LFxuJworICAgICAgICAgICAgICAnZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogICAzLjE0ZS0xMGogICAnCisgICAgICAgICAgICAgICczLjE0XzE1XzkzalxuJywKKyAnaW1wb3J0JzogJ1xuJworICAgICAgICAgICAnVGhlICJpbXBvcnQiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgJworICAgICAgICAgICAnWyJhcyIgbmFtZV0gKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiICcKKyAgICAgICAgICAgJ2lkZW50aWZpZXIgWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbicKKyAgICAgICAgICAgJyAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuJworICAgICAgICAgICAnICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbicKKyAgICAgICAgICAgJyAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gImZyb20iIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG4nCisgICAgICAgICAgICdzdGVwczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZVxuJworICAgICAgICAgICAnICAgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3R3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgJworICAgICAgICAgICAndGhvdWdoXG4nCisgICAgICAgICAgICd0aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZHVhbCBpbXBvcnQgJworICAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBhcmVcbicKKyAgICAgICAgICAgJ2Rlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgaW1wb3J0IHN5c3RlbSwgJworICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgJ2Fsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXQgY2FuICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXkgaW5kaWNhdGUgJworICAgICAgICAgICAnZWl0aGVyXG4nCisgICAgICAgICAgICd0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhbiBlcnJvciBvY2N1cnJlZFxuJworICAgICAgICAgICAnd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgIm1vZHVsZSdzIGNvZGUuXG4iCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgJworICAgICAgICAgICAnbWFkZVxuJworICAgICAgICAgICAnYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5ICJhcyIsIHRoZW4gdGhlIG5hbWUgZm9sbG93aW5nXG4nCisgICAgICAgICAgICcgICJhcyIgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAiICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlJ3MgbmFtZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgIgorICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICcgIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICpub3QqIGEgdG9wIGxldmVsIG1vZHVsZSwgdGhlbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJyAgbmFtZSBvZiB0aGUgdG9wIGxldmVsIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzIGJvdW5kICcKKyAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICcgIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgYSByZWZlcmVuY2UgdG8gdGhlIHRvcCBsZXZlbCBwYWNrYWdlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJyAgaW1wb3J0ZWQgbW9kdWxlIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgaXRzIGZ1bGwgcXVhbGlmaWVkIG5hbWVcbicKKyAgICAgICAgICAgJyAgcmF0aGVyIHRoYW4gZGlyZWN0bHlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJmcm9tIiBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgImZyb20iIGNsYXVzZSwgbG9hZGluZyBhbmRcbicKKyAgICAgICAgICAgJyAgIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3Nhcnk7XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzIuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlICJpbXBvcnQiIGNsYXVzZXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgJworICAgICAgICAgICAndGhlblxuJworICAgICAgICAgICAnICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsICJJbXBvcnRFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBsb2NhbFxuJworICAgICAgICAgICAnICAgICAgbmFtZXNwYWNlLCB1c2luZyB0aGUgbmFtZSBpbiB0aGUgImFzIiBjbGF1c2UgaWYgaXQgaXMgJworICAgICAgICAgICAncHJlc2VudCxcbicKKyAgICAgICAgICAgJyAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRXhhbXBsZXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgJworICAgICAgICAgICAnbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgJworICAgICAgICAgICAnZmJiXG4nCisgICAgICAgICAgICcgICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyAnCisgICAgICAgICAgICdiYXpcbicKKyAgICAgICAgICAgJyAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyAnCisgICAgICAgICAgICdhdHRyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoIlwnKlwnIiksIGFsbCAnCisgICAgICAgICAgICdwdWJsaWNcbicKKyAgICAgICAgICAgJ25hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdzY29wZSB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdtb2R1bGVcJ3MgbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkICJfX2FsbF9fIjsgaWYgZGVmaW5lZCwgaXQgJworICAgICAgICAgICAnbXVzdFxuJworICAgICAgICAgICAnYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5ICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgJ21vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiAiX19hbGxfXyIgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyAnCisgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgJ2FyZSByZXF1aXJlZCB0byBleGlzdC4gIElmICJfX2FsbF9fIiBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiAnCisgICAgICAgICAgICdwdWJsaWNcbicKKyAgICAgICAgICAgIm5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZCBpbiB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIHdoaWNoIGRvICIKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3RoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5ICcKKyAgICAgICAgICAgJ2V4cG9ydGluZ1xuJworICAgICAgICAgICAnaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggJworICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdhbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdhYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyAnCisgICAgICAgICAgICdjb250YWluZWRcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCAnCisgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgJ3RoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gJworICAgICAgICAgICAnQnlcbicKKyAgICAgICAgICAgJ3VzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiAnCisgICAgICAgICAgICd5b3VcbicKKyAgICAgICAgICAgJ2NhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG4nCisgICAgICAgICAgICd3aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxuJworICAgICAgICAgICAncGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgJworICAgICAgICAgICAndXBcbicKKyAgICAgICAgICAgJ29uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91ICcKKyAgICAgICAgICAgJ2V4ZWN1dGVcbicKKyAgICAgICAgICAgJyJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdlbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCAnCisgICAgICAgICAgICdtb2QiXG4nCisgICAgICAgICAgICdmcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG4nCisgICAgICAgICAgICdzcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgJworICAgICAgICAgICAnMzI4KiouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdkZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Z1dHVyZSBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhICcKKyAgICAgICAgICAgJ3BhcnRpY3VsYXJcbicKKyAgICAgICAgICAgJ21vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlICcKKyAgICAgICAgICAgJ2ZlYXR1cmVcbicKKyAgICAgICAgICAgJ2JlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSAnCisgICAgICAgICAgICd2ZXJzaW9uc1xuJworICAgICAgICAgICAnb2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gICcKKyAgICAgICAgICAgJ0l0XG4nCisgICAgICAgICAgICdhbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbicKKyAgICAgICAgICAgJ3JlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiICcKKyAgICAgICAgICAgJ25hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlICcKKyAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgJ2xpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBjb21tZW50cyxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBibGFuayBsaW5lcywgYW5kXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuJworICAgICAgICAgICAnImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4nCisgICAgICAgICAgICcibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50ICcKKyAgICAgICAgICAgJ2JlY2F1c2VcbicKKyAgICAgICAgICAgJ3RoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgJworICAgICAgICAgICAnY29tcGF0aWJpbGl0eS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG4nCisgICAgICAgICAgICdpbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlICcKKyAgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAgJ3RoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgJworICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICdyZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG4nCisgICAgICAgICAgICdtb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxuJworICAgICAgICAgICAncnVudGltZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyAnCisgICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgICdiZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdjb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCAnCisgICAgICAgICAgICdzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICd0aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0ICcKKyAgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAgJ2JlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG4nCisgICAgICAgICAgICdlbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICJUaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0J3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCAiCisgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICdubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdDb2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV4ZWMoKSIgYW5kXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiB0aGF0IG9jY3VyIGluIGEgbW9kdWxlICJNIiBjb250YWluaW5nIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnd2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkIHdpdGggJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdmdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJyJjb21waWxlKCkiIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiBmb3IgJworICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICd0YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuJworICAgICAgICAgICAnaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAiLWkiIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0ICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3RvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuJworICAgICAgICAgICAnZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuJworICAgICAgICAgICAnICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2luJzogJ1xuJworICAgICAgICdNZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuJworICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbicKKyAgICAgICAnZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG4nCisgICAgICAgJ25vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbicKKyAgICAgICAnYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiAnCisgICAgICAgJ3Rlc3RzXG4nCisgICAgICAgJ3doZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzIHN1Y2ggYXNcbicKKyAgICAgICAnbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG4nCisgICAgICAgJ2V4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbicKKyAgICAgICAneSkiLlxuJworICAgICAgICdcbicKKyAgICAgICAnRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiAnCisgICAgICAgJ2lzXG4nCisgICAgICAgJ2Egc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG4nCisgICAgICAgJ3N0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG4nCisgICAgICAgJ3NvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuJworICAgICAgICdcbicKKyAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG4nCisgICAgICAgJ2luIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuJworICAgICAgICdcbicKKyAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbicKKyAgICAgICAnZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09IHoiXG4nCisgICAgICAgJ2lzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbicKKyAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuJworICAgICAgICdcbicKKyAgICAgICAnTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4nCisgICAgICAgJyJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbicKKyAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG4nCisgICAgICAgJ2ludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbicKKyAgICAgICAnZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4nCisgICAgICAgJyJpbiIuXG4nLAorICdpbnRlZ2Vycyc6ICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFsc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpbnRlZ2VyICAgICAgOjo9IGRlY2ludGVnZXIgfCBiaW5pbnRlZ2VyIHwgb2N0aW50ZWdlciB8ICcKKyAgICAgICAgICAgICAnaGV4aW50ZWdlclxuJworICAgICAgICAgICAgICcgICBkZWNpbnRlZ2VyICAgOjo9IG5vbnplcm9kaWdpdCAoWyJfIl0gZGlnaXQpKiB8ICIwIisgKFsiXyJdICcKKyAgICAgICAgICAgICAnIjAiKSpcbicKKyAgICAgICAgICAgICAnICAgYmluaW50ZWdlciAgIDo6PSAiMCIgKCJiIiB8ICJCIikgKFsiXyJdIGJpbmRpZ2l0KStcbicKKyAgICAgICAgICAgICAnICAgb2N0aW50ZWdlciAgIDo6PSAiMCIgKCJvIiB8ICJPIikgKFsiXyJdIG9jdGRpZ2l0KStcbicKKyAgICAgICAgICAgICAnICAgaGV4aW50ZWdlciAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgKFsiXyJdIGhleGRpZ2l0KStcbicKKyAgICAgICAgICAgICAnICAgbm9uemVyb2RpZ2l0IDo6PSAiMSIuLi4iOSJcbicKKyAgICAgICAgICAgICAnICAgZGlnaXQgICAgICAgIDo6PSAiMCIuLi4iOSJcbicKKyAgICAgICAgICAgICAnICAgYmluZGlnaXQgICAgIDo6PSAiMCIgfCAiMSJcbicKKyAgICAgICAgICAgICAnICAgb2N0ZGlnaXQgICAgIDo6PSAiMCIuLi4iNyJcbicKKyAgICAgICAgICAgICAnICAgaGV4ZGlnaXQgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tICcKKyAgICAgICAgICAgICAnd2hhdFxuJworICAgICAgICAgICAgICdjYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdVbmRlcnNjb3JlcyBhcmUgaWdub3JlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlIG51bWVyaWMgdmFsdWUgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnbGl0ZXJhbC4gIFRoZXkgY2FuIGJlIHVzZWQgdG8gZ3JvdXAgZGlnaXRzIGZvciBlbmhhbmNlZCAnCisgICAgICAgICAgICAgJ3JlYWRhYmlsaXR5LlxuJworICAgICAgICAgICAgICdPbmUgdW5kZXJzY29yZSBjYW4gb2NjdXIgYmV0d2VlbiBkaWdpdHMsIGFuZCBhZnRlciBiYXNlICcKKyAgICAgICAgICAgICAnc3BlY2lmaWVyc1xuJworICAgICAgICAgICAgICdsaWtlICIweCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgJworICAgICAgICAgICAgICdhbGxvd2VkLlxuJworICAgICAgICAgICAgICdUaGlzIGlzIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoICcKKyAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgJ3VzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExXG4nCisgICAgICAgICAgICAgJyAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweGRlYWRiZWVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgIDEwMF8wMDBfMDAwXzAwMCAgICAgICAgICAgICAgICAgICAwYl8xMTEwXzAxMDFcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgJworICAgICAgICAgICAgICdncm91cGluZ1xuJworICAgICAgICAgICAgICdwdXJwb3NlcyBpbiBsaXRlcmFscy5cbicsCisgJ2xhbWJkYSc6ICdcbicKKyAgICAgICAgICAgJ0xhbWJkYXNcbicKKyAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHIgICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4nCisgICAgICAgICAgICcgICBsYW1iZGFfZXhwcl9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06ICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25fbm9jb25kXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0xhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGFyZSB1c2VkIHRvICcKKyAgICAgICAgICAgJ2NyZWF0ZVxuJworICAgICAgICAgICAnYW5vbnltb3VzIGZ1bmN0aW9ucy4gVGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6ICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb24iXG4nCisgICAgICAgICAgICd5aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgJworICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgJ29iamVjdCBkZWZpbmVkIHdpdGg6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuJworICAgICAgICAgICAnICAgICAgIHJldHVybiBleHByZXNzaW9uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1NlZSBzZWN0aW9uIEZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgc3ludGF4IG9mIHBhcmFtZXRlciAnCisgICAgICAgICAgICdsaXN0cy5cbicKKyAgICAgICAgICAgJ05vdGUgdGhhdCBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIGxhbWJkYSBleHByZXNzaW9ucyBjYW5ub3QgJworICAgICAgICAgICAnY29udGFpblxuJworICAgICAgICAgICAnc3RhdGVtZW50cyBvciBhbm5vdGF0aW9ucy5cbicsCisgJ2xpc3RzJzogJ1xuJworICAgICAgICAgICdMaXN0IGRpc3BsYXlzXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgbGlzdCBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGV4cHJlc3Npb25zIGVuY2xvc2VkICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnc3F1YXJlIGJyYWNrZXRzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgbGlzdF9kaXNwbGF5IDo6PSAiWyIgW3N0YXJyZWRfbGlzdCB8IGNvbXByZWhlbnNpb25dICJdIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBsaXN0IGRpc3BsYXkgeWllbGRzIGEgbmV3IGxpc3Qgb2JqZWN0LCB0aGUgY29udGVudHMgYmVpbmcgJworICAgICAgICAgICdzcGVjaWZpZWRcbicKKyAgICAgICAgICAnYnkgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGNvbXByZWhlbnNpb24uICBXaGVuIGEgY29tbWEtXG4nCisgICAgICAgICAgJ3NlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGlzIHN1cHBsaWVkLCBpdHMgZWxlbWVudHMgYXJlICcKKyAgICAgICAgICAnZXZhbHVhdGVkXG4nCisgICAgICAgICAgJ2Zyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgb3JkZXIuXG4nCisgICAgICAgICAgJ1doZW4gYSBjb21wcmVoZW5zaW9uIGlzIHN1cHBsaWVkLCB0aGUgbGlzdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZVxuJworICAgICAgICAgICdlbGVtZW50cyByZXN1bHRpbmcgZnJvbSB0aGUgY29tcHJlaGVuc2lvbi5cbicsCisgJ25hbWluZyc6ICdcbicKKyAgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZ1xuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQmluZGluZyBvZiBuYW1lc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbicKKyAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byAnCisgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdpZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yICcKKyAgICAgICAgICAgJ2FmdGVyXG4nCisgICAgICAgICAgICciYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ29mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICdpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyAnCisgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICdtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgJworICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICd0aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSAnCisgICAgICAgICAgICduYW1lKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgJworICAgICAgICAgICAnYnkgYVxuJworICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgJworICAgICAgICAgICAndG9wLWxldmVsXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCAnCisgICAgICAgICAgICdibG9jayxcbicKKyAgICAgICAgICAgJ3VubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgJ2NvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgJworICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAnYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgJworICAgICAgICAgICAnKmJpbmRpbmcqXG4nCisgICAgICAgICAgICdvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnUmVzb2x1dGlvbiBvZiBuYW1lc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgJworICAgICAgICAgICAnYmxvY2tzXG4nCisgICAgICAgICAgICdjb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayAnCisgICAgICAgICAgICdpbnRyb2R1Y2VzXG4nCisgICAgICAgICAgICdhIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSAnCisgICAgICAgICAgICduZWFyZXN0XG4nCisgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAiaXMgY2FsbGVkIHRoZSBibG9jaydzICplbnZpcm9ubWVudCouXG4iCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgJ3JhaXNlZC4gSWZcbicKKyAgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAndmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50IHdoZXJlICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICciVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgJworICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICd1c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2N1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICdibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG4nCisgICAgICAgICAgICdkZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxuJworICAgICAgICAgICAnd2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuJworICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lICcKKyAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgJworICAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICAnc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAndG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsICcKKyAgICAgICAgICAgJ25hbWVzcGFjZSBieVxuJworICAgICAgICAgICAnc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuJworICAgICAgICAgICAnY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSAnCisgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgJ29mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkICcKKyAgICAgICAgICAgJ2ZpcnN0LiAgSWZcbicKKyAgICAgICAgICAgJ3RoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC4gICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgJworICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICdpbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlICcKKyAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICdjb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSAnCisgICAgICAgICAgICdnbG9iYWwuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciB0b1xuJworICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uICcKKyAgICAgICAgICAgJ3Njb3BlLlxuJworICAgICAgICAgICAnIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdleGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnbW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgJworICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICciX19tYWluX18iLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ3NwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gaXMgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2V4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSAnCisgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICdmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgJ3VuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAnbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICd0aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgbGltaXRlZCAnCisgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAndGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mIG1ldGhvZHMgJworICAgICAgICAgICAnLS1cbicKKyAgICAgICAgICAgJ3RoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSB0aGV5ICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICd3aWxsIGZhaWw6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGNsYXNzIEE6XG4nCisgICAgICAgICAgICcgICAgICAgYSA9IDQyXG4nCisgICAgICAgICAgICcgICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0J1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlICcKKyAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICdpcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyAnCisgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyICcKKyAgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAgInRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIgorICAgICAgICAgICAnIl9fbWFpbl9fIlxuJworICAgICAgICAgICAnbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gaW4gJworICAgICAgICAgICAnYW55XG4nCisgICAgICAgICAgICdvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJyJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSAnCisgICAgICAgICAgICd1c2VyLWNyZWF0ZWRcbicKKyAgICAgICAgICAgJ2RpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbicKKyAgICAgICAgICAgJyJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xuJworICAgICAgICAgICAnd2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgJworICAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAgJ3RoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgJworICAgICAgICAgICAnY29tcGlsZVxuJworICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpID0gMTBcbicKKyAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgJyAgIGkgPSA0MlxuJworICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gJworICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCAnCisgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAnZnVsbFxuJworICAgICAgICAgICAnZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCAnCisgICAgICAgICAgICdyZXNvbHZlZFxuJworICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgJworICAgICAgICAgICAnWzFdXG4nCisgICAgICAgICAgICdUaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlICcKKyAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAorICdub25sb2NhbCc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgbm9ubG9jYWxfc3RtdCA6Oj0gIm5vbmxvY2FsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICdwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgJworICAgICAgICAgICAgICdleGNsdWRpbmdcbicKKyAgICAgICAgICAgICAnZ2xvYmFscy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgJworICAgICAgICAgICAgICdiaW5kaW5nIGlzXG4nCisgICAgICAgICAgICAgJ3RvIHNlYXJjaCB0aGUgbG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3NcbicKKyAgICAgICAgICAgICAnZW5jYXBzdWxhdGVkIGNvZGUgdG8gcmViaW5kIHZhcmlhYmxlcyBvdXRzaWRlIG9mIHRoZSBsb2NhbCAnCisgICAgICAgICAgICAgJ3Njb3BlXG4nCisgICAgICAgICAgICAgJ2Jlc2lkZXMgdGhlIGdsb2JhbCAobW9kdWxlKSBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50LCB1bmxpa2UgdGhvc2UgbGlzdGVkIGluICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICciZ2xvYmFsIiBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG4nCisgICAgICAgICAgICAgJ2VuY2xvc2luZyBzY29wZSAodGhlIHNjb3BlIGluIHdoaWNoIGEgbmV3IGJpbmRpbmcgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAnY3JlYXRlZFxuJworICAgICAgICAgICAgICdjYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCAnCisgICAgICAgICAgICAgJ3ByZS1cbicKKyAgICAgICAgICAgICAnZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICoqUEVQIDMxMDQqKiAtIEFjY2VzcyB0byBOYW1lcyBpbiBPdXRlciBTY29wZXNcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICJub25sb2NhbCIgc3RhdGVtZW50LlxuJywKKyAnbnVtYmVycyc6ICdcbicKKyAgICAgICAgICAgICdOdW1lcmljIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBudW1lcmljIGxpdGVyYWxzOiBpbnRlZ2VycywgZmxvYXRpbmcgJworICAgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgICAnbnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcoY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbCBudW1iZXIgYW5kIGFuXG4nCisgICAgICAgICAgICAnaW1hZ2luYXJ5IG51bWJlcikuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICcKKyAgICAgICAgICAgICciLTEiXG4nCisgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgXCciLSJcJyAnCisgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgJ2xpdGVyYWwgIjEiLlxuJywKKyAnbnVtZXJpYy10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkICcKKyAgICAgICAgICAgICAgICAgICdieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAgJ25vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgJworICAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAncmVsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgdG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAnCisgICAgICAgICAgICAgICAgICAnKHN3YXBwZWQpXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kIGRvZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gWzNdIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ29wZXJhbmRzIGFyZSBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCB0eXBlcy4gWzRdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IC1cbicKKyAgICAgICAgICAgICAgICAgICcgICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gJworICAgICAgICAgICAgICAgICAgJyJfX3JzdWJfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAgJyAgICpOb3RJbXBsZW1lbnRlZCouXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICAnIl9fcnBvd19fKCkiICh0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgIgorICAgICAgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSAiCisgICAgICAgICAgICAgICAgICAncmVmbGVjdGVkIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAndGhlIGxlZnRcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzICIKKyAgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICAiICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnMnIG9wZXJhdGlvbnMuXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgJworICAgICAgICAgICAgICAgICAgJyIqKj0iLFxuJworICAgICAgICAgICAgICAgICAgJyAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gJworICAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgICcgICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSAnCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyAnCisgICAgICAgICAgICAgICAgICAnYmFjayB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgICdhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgICcieCA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnInkuX19yYWRkX18oeCkiIGFyZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gJworICAgICAgICAgICAgICAgICAgJ2NlcnRhaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluICcKKyAgICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIGVycm9yc1xuJworICAgICAgICAgICAgICAgICAgIiAgIChzZWUgV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbJ2l0ZW0nXSByYWlzZSBhbiBleGNlcHRpb24gIgorICAgICAgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYWRkaXRpb24gd29ya3M/KSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZGF0YVxuJworICAgICAgICAgICAgICAgICAgJyAgIG1vZGVsLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lZ19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG9zX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hYnNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludmVydF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAgICAgICcoIi0iLCAiKyIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgImFicygpIiBhbmQgIn4iKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb21wbGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb2F0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgICciaW50KCkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luZGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyICcKKyAgICAgICAgICAgICAgICAgICdQeXRob24gbmVlZHNcbicKKyAgICAgICAgICAgICAgICAgICcgICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgJ29iamVjdCAoc3VjaFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIm9jdCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQsIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJywKKyAnb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICdPYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIipPYmplY3RzKiBhcmUgUHl0aG9uJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhICIKKyAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICdwcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gJworICAgICAgICAgICAgJ29iamVjdHMuIChJblxuJworICAgICAgICAgICAgJ2Egc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbicKKyAgICAgICAgICAgICdwcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdCdzXG4iCisgICAgICAgICAgICAnKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayAnCisgICAgICAgICAgICAnb2YgaXRcbicKKyAgICAgICAgICAgICdhcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnImlzIlwnIG9wZXJhdG9yICcKKyAgICAgICAgICAgICdjb21wYXJlcyB0aGVcbicKKyAgICAgICAgICAgICdpZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlICJpZCgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbicKKyAgICAgICAgICAgICdyZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogRm9yIENQeXRob24sICJpZCh4KSIgaXMgdGhlICcKKyAgICAgICAgICAgICdtZW1vcnlcbicKKyAgICAgICAgICAgICdhZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCAiCisgICAgICAgICAgICAnc3VwcG9ydHNcbicKKyAgICAgICAgICAgICcoZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSAnCisgICAgICAgICAgICAndmFsdWVzXG4nCisgICAgICAgICAgICAnZm9yIG9iamVjdHMgb2YgdGhhdCB0eXBlLiAgVGhlICJ0eXBlKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gJworICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAndHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gJworICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAnKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV1cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG4nCisgICAgICAgICAgICAnY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyAnCisgICAgICAgICAgICAndW5jaGFuZ2VhYmxlXG4nCisgICAgICAgICAgICAnb25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbicKKyAgICAgICAgICAgICdpbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgJworICAgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAgICJvYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXIncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyICIKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdjb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gJworICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAnb2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG4nCisgICAgICAgICAgICAnc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSAnCisgICAgICAgICAgICAnc3VidGxlLilcbicKKyAgICAgICAgICAgICJBbiBvYmplY3QncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbiIKKyAgICAgICAgICAgICdudW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzICcKKyAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICdsaXN0cyBhcmUgbXV0YWJsZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5ICcKKyAgICAgICAgICAgICdiZWNvbWVcbicKKyAgICAgICAgICAgICd1bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG4nCisgICAgICAgICAgICAnYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSAnCisgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICdhIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbicKKyAgICAgICAgICAgICdpbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbicKKyAgICAgICAgICAgICdyZWFjaGFibGUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgJworICAgICAgICAgICAgJ3JlZmVyZW5jZS1cbicKKyAgICAgICAgICAgICdjb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgJworICAgICAgICAgICAgJ2xpbmtlZFxuJworICAgICAgICAgICAgJ2dhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG4nCisgICAgICAgICAgICAndW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuJworICAgICAgICAgICAgJ2NpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlICJnYyIgbW9kdWxlICcKKyAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICdpbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gJworICAgICAgICAgICAgJ090aGVyXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgJworICAgICAgICAgICAgJ2RlcGVuZFxuJworICAgICAgICAgICAgJ29uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlICcKKyAgICAgICAgICAgICcoc29cbicKKyAgICAgICAgICAgICd5b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJOb3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb24ncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuIgorICAgICAgICAgICAgJ2ZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlICcKKyAgICAgICAgICAgICdjb2xsZWN0YWJsZS5cbicKKyAgICAgICAgICAgICdBbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnInRyeSIuLi4iZXhjZXB0IlwnXG4nCisgICAgICAgICAgICAnc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzICcKKyAgICAgICAgICAgICdvcGVuXG4nCisgICAgICAgICAgICAnZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlICcKKyAgICAgICAgICAgICdmcmVlZFxuJworICAgICAgICAgICAgJ3doZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgJworICAgICAgICAgICAgJ2NvbGxlY3Rpb24gaXNcbicKKyAgICAgICAgICAgICdub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgJworICAgICAgICAgICAgJ3dheSB0b1xuJworICAgICAgICAgICAgJ3JlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gJworICAgICAgICAgICAgJ1Byb2dyYW1zXG4nCisgICAgICAgICAgICAnYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG4nCisgICAgICAgICAgICAnXCcidHJ5Ii4uLiJmaW5hbGx5IlwnIHN0YXRlbWVudCBhbmQgdGhlIFwnIndpdGgiXCcgc3RhdGVtZW50ICcKKyAgICAgICAgICAgICdwcm92aWRlXG4nCisgICAgICAgICAgICAnY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgJworICAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAgJypjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbicKKyAgICAgICAgICAgICJkaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lcidzIHZhbHVlLiAgIgorICAgICAgICAgICAgJ0luXG4nCisgICAgICAgICAgICAnbW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ3ZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgJworICAgICAgICAgICAgJ3doZW4gd2VcbicKKyAgICAgICAgICAgICd0YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdpbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbicKKyAgICAgICAgICAgICdjb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlICcKKyAgICAgICAgICAgICdvYmplY3QsIGl0c1xuJworICAgICAgICAgICAgJ3ZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1R5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbicKKyAgICAgICAgICAgICdpbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgJworICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgJ3R5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxuJworICAgICAgICAgICAgJ3JlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsICcKKyAgICAgICAgICAgICd3aGlsZVxuJworICAgICAgICAgICAgJ2ZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyICJhID0gMTsgYiA9ICcKKyAgICAgICAgICAgICcxIixcbicKKyAgICAgICAgICAgICciYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgJworICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAnb25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgImMgPSBbXTsgZCA9IFtdIiwgJworICAgICAgICAgICAgJyJjIlxuJworICAgICAgICAgICAgJ2FuZCAiZCIgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCwgdW5pcXVlLCBuZXdseVxuJworICAgICAgICAgICAgJ2NyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgImMgPSBkID0gW10iIGFzc2lnbnMgdGhlIHNhbWUgJworICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgJ3RvIGJvdGggImMiIGFuZCAiZCIuKVxuJywKKyAnb3BlcmF0b3Itc3VtbWFyeSc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdPcGVyYXRvciBwcmVjZWRlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gUHl0aG9uLCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnbG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKG1vc3RcbicKKyAgICAgICAgICAgICAgICAgICAgICdiaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZS4gIFVubGVzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICAnCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0b3JzIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50aWF0aW9uLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwcyBmcm9tIHJpZ2h0IHRvIGxlZnQpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBjb21wYXJpc29ucywgbWVtYmVyc2hpcCB0ZXN0cywgYW5kIGlkZW50aXR5ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0cywgYWxsIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnZmVhdHVyZSBhc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZCBpbiB0aGUgQ29tcGFyaXNvbnMgc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICI+PSIsICIhPSIsICI9PSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJeIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICImIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICI8PCIsICI+PiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1NoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIrIiwgIi0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ011bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb24sIHJlbWFpbmRlciBbNV0gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpdmUsIG5lZ2F0aXZlLCBiaXR3aXNlIE5PVCAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRXhwb25lbnRpYXRpb24gWzZdICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImF3YWl0IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQXdhaXQgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uLCBzbGljaW5nLCBjYWxsLCAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IHZhbHVlLi4ufSIsICJ7ZXhwcmVzc2lvbnMuLi59IiAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1sxXSBXaGlsZSAiYWJzKHgleSkgPCBhYnMoeSkiIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZmxvYXRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdJRUVFIDc1NCBkb3VibGUtXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgIi0xZS0xMDAgJSAxZTEwMCIgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUgdGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgJworICAgICAgICAgICAgICAgICAgICAgJzFlMTAwIiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byAiMWUxMDAiLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAibWF0aC5mbW9kKCkiIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2lnbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGlzIGNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1syXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAieSwgaXQnc1xuIgorICAgICAgICAgICAgICAgICAgICAgJyAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIih4LXgleSkvL3kiIGR1ZSB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSBsYXR0ZXIgJworICAgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdCwgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHkiICcKKyAgICAgICAgICAgICAgICAgICAgICdiZSB2ZXJ5IGNsb3NlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHRvICJ4Ii5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbM10gVGhlIFVuaWNvZGUgc3RhbmRhcmQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuICpjb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICdwb2ludHMqIChlLmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFUrMDA0MSkgYW5kICphYnN0cmFjdCBjaGFyYWN0ZXJzKiAoZS5nLiAiTEFUSU4gJworICAgICAgICAgICAgICAgICAgICAgJ0NBUElUQUwgTEVUVEVSIEEiKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHVzaW5nIG9uZSBjb2RlIHBvaW50LCB0aGVyZSBpcyBhIG51bWJlciBvZiBhYnN0cmFjdCAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0aGF0IGNhbiBpbiBhZGRpdGlvbiBiZSByZXByZXNlbnRlZCB1c2luZyBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdvZiBtb3JlIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgICAnIkxBVElOXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBIiBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ2Egc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICpwcmVjb21wb3NlZCBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMEM3LCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXMgYSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIExFVFRFUiBDKSwgZm9sbG93ZWQgYnkgYSAqY29tYmluaW5nIGNoYXJhY3RlciogYXQgJworICAgICAgICAgICAgICAgICAgICAgJ2NvZGUgcG9zaXRpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVSswMzI3IChDT01CSU5JTkcgQ0VESUxMQSkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdsZXZlbCBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVbmljb2RlIGNvZGUgcG9pbnRzLiBUaGlzIG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSAnCisgICAgICAgICAgICAgICAgICAgICAndG8gaHVtYW5zLiAgRm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGV4YW1wbGUsICIiXFx1MDBDNyIgPT0gIlxcdTAwNDNcXHUwMzI3IiIgaXMgIkZhbHNlIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2V2ZW4gdGhvdWdoIGJvdGhcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBMRVRURVIgQyBXSVRIIENFRElMTEEiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUbyBjb21wYXJlIHN0cmluZ3MgYXQgdGhlIGxldmVsIG9mIGFic3RyYWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzICh0aGF0IGlzLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICcKKyAgICAgICAgICAgICAgICAgICAgICcidW5pY29kZWRhdGEubm9ybWFsaXplKCkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZHluYW1pYyBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlICcKKyAgICAgICAgICAgICAgICAgICAgICdzZWVtaW5nbHkgdW51c3VhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBiZWhhdmlvdXIgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSAiaXMiIG9wZXJhdG9yLCBsaWtlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc3RhbnRzLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDaGVjayB0aGVpciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzVdIFRoZSAiJSIgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgZm9ybWF0dGluZzsgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHByZWNlZGVuY2UgYXBwbGllcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNl0gVGhlIHBvd2VyIG9wZXJhdG9yICIqKiIgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb3IgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsICcKKyAgICAgICAgICAgICAgICAgICAgICciMioqLTEiIGlzICIwLjUiLlxuJywKKyAncGFzcyc6ICdcbicKKyAgICAgICAgICdUaGUgInBhc3MiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgcGFzc19zdG10IDo6PSAicGFzcyJcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcicGFzcyIgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyAnCisgICAgICAgICAnaGFwcGVucy5cbicKKyAgICAgICAgICdJdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG4nCisgICAgICAgICAnc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgY2xhc3MgQzogcGFzcyAgICAgICAjIGEgY2xhc3Mgd2l0aCBubyBtZXRob2RzICh5ZXQpXG4nLAorICdwb3dlcic6ICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbicKKyAgICAgICAgICAnbGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gICcKKyAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgJ3N5bnRheCBpczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHBvd2VyIDo6PSAoIGF3YWl0X2V4cHIgfCBwcmltYXJ5ICkgWyIqKiIgdV9leHByXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ29wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCAnCisgICAgICAgICAgJ2NvbnN0cmFpblxuJworICAgICAgICAgICd0aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogIi0xKioyIiByZXN1bHRzIGluICItMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gInBvdygpIlxuJworICAgICAgICAgICdmdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgJworICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICdyYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgJworICAgICAgICAgICd1bmxlc3NcbicKKyAgICAgICAgICAndGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZVxuJworICAgICAgICAgICdjb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgJyIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnUmFpc2luZyAiMC4wIiB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYSAnCisgICAgICAgICAgJyJaZXJvRGl2aXNpb25FcnJvciIuXG4nCisgICAgICAgICAgJ1JhaXNpbmcgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBmcmFjdGlvbmFsIHBvd2VyIHJlc3VsdHMgaW4gYSAnCisgICAgICAgICAgJyJjb21wbGV4IlxuJworICAgICAgICAgICdudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAorICdyYWlzZSc6ICdcbicKKyAgICAgICAgICAnVGhlICJyYWlzZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2Vfc3RtdCA6Oj0gInJhaXNlIiBbZXhwcmVzc2lvbiBbImZyb20iIGV4cHJlc3Npb25dXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0ICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ3RoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSwgYSAiUnVudGltZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbicKKyAgICAgICAgICAndGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnT3RoZXJ3aXNlLCAicmFpc2UiIGV2YWx1YXRlcyB0aGUgZmlyc3QgZXhwcmVzc2lvbiBhcyB0aGUgZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ29iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAnIkJhc2VFeGNlcHRpb24iLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbicKKyAgICAgICAgICAnb2J0YWluZWQgd2hlbiBuZWVkZWQgYnkgaW5zdGFudGlhdGluZyB0aGUgY2xhc3Mgd2l0aCBubyBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICJUaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSdzIGNsYXNzLCB0aGVcbiIKKyAgICAgICAgICAnKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSB0cmFjZWJhY2sgb2JqZWN0IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGFuICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ2lzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlICJfX3RyYWNlYmFja19fIiBhdHRyaWJ1dGUsICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ29uZSBzdGVwIHVzaW5nIHRoZSAid2l0aF90cmFjZWJhY2soKSIgZXhjZXB0aW9uIG1ldGhvZCAod2hpY2ggJworICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgJ3RoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHMgJworICAgICAgICAgICdhcmd1bWVudCksXG4nCisgICAgICAgICAgJ2xpa2Ugc286XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICByYWlzZSBFeGNlcHRpb24oImZvbyBvY2N1cnJlZCIpLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFja29iailcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSAiZnJvbSIgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZSAnCisgICAgICAgICAgJ3NlY29uZFxuJworICAgICAgICAgICcqZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggJworICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgJ3RoZW4gYmUgYXR0YWNoZWQgdG8gdGhlIHJhaXNlZCBleGNlcHRpb24gYXMgdGhlICJfX2NhdXNlX18iICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyh3aGljaCBpcyB3cml0YWJsZSkuICBJZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCwgYm90aFxuJworICAgICAgICAgICdleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgID4+PiB0cnk6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4nCisgICAgICAgICAgJyAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbicKKyAgICAgICAgICAnICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKSBmcm9tIGV4Y1xuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgJ2V4Y2VwdGlvbjpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0Egc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkICcKKyAgICAgICAgICAnaW5zaWRlXG4nCisgICAgICAgICAgJ2FuIGV4Y2VwdGlvbiBoYW5kbGVyIG9yIGEgImZpbmFsbHkiIGNsYXVzZTogdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJ3RoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gdHJ5OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KDEgLyAwKVxuJworICAgICAgICAgICcgICAuLi4gZXhjZXB0OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uICcKKyAgICAgICAgICAnb2NjdXJyZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJ1RoZSB0cnkgc3RhdGVtZW50LlxuJywKKyAncmV0dXJuJzogJ1xuJworICAgICAgICAgICAnVGhlICJyZXR1cm4iIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICByZXR1cm5fc3RtdCA6Oj0gInJldHVybiIgW2V4cHJlc3Npb25fbGlzdF1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnInJldHVybiIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvbiAnCisgICAgICAgICAgICdkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlICJOb25lIiBpc1xuJworICAgICAgICAgICAnc3Vic3RpdHV0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGV4cHJlc3Npb24gbGlzdCAnCisgICAgICAgICAgICcob3JcbicKKyAgICAgICAgICAgJyJOb25lIikgYXMgcmV0dXJuIHZhbHVlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuICJyZXR1cm4iIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICdjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSAicmV0dXJuIiBzdGF0ZW1lbnQgaW5kaWNhdGVzIHRoYXQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSAiU3RvcEl0ZXJhdGlvbiIgdG8gYmUgcmFpc2VkLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ3JldHVybmVkIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0XG4nCisgICAgICAgICAgICciU3RvcEl0ZXJhdGlvbiIgYW5kIGJlY29tZXMgdGhlICJTdG9wSXRlcmF0aW9uLnZhbHVlIiBhdHRyaWJ1dGUuXG4nLAorICdzZXF1ZW5jZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVyIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ0NvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgJworICAgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcobGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzICcKKyAgICAgICAgICAgICAgICAgICAnd2VsbC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICdvciB0b1xuJworICAgICAgICAgICAgICAgICAgICdlbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9ICcKKyAgICAgICAgICAgICAgICAgICAnayA8IE4iIHdoZXJlXG4nCisgICAgICAgICAgICAgICAgICAgJypOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggJworICAgICAgICAgICAgICAgICAgICdkZWZpbmUgYVxuJworICAgICAgICAgICAgICAgICAgICdyYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImdldCgpIiwgJworICAgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJyJ1cGRhdGUoKSJcbicKKyAgICAgICAgICAgICAgICAgICAiYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgJworICAgICAgICAgICAgICAgICAgICdhYnN0cmFjdCBiYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJ2NsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImV4dGVuZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICAnImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJ2xpa2UgUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgICdhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gJworICAgICAgICAgICAgICAgICAgICcobWVhbmluZ1xuJworICAgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICciX19yYWRkX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgICAgICAgICAgJ2JlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICAnCisgICAgICAgICAgICAgICAgICAgJ0l0IGlzXG4nCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0b3I7XG4nCisgICAgICAgICAgICAgICAgICAgJ2ZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcywgaXRcbicKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyICcKKyAgICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQgdGhhdCBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgICAndG8gYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgICAnZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgJworICAgICAgICAgICAgICAgICAgICdTaG91bGQgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSIgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyICcKKyAgICAgICAgICAgICAgICAgICAnb3IgbGVzcyB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgIj49IiAnCisgICAgICAgICAgICAgICAgICAgJzAuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlY3RuZXNzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgQSBjYWxsIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgYVsxOjJdID0gYlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAnd2l0aCAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3IgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0eXBlcyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuICBOb3RlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnY2xhc3Mgd2lzaGVzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLiBJZlxuJworICAgICAgICAgICAgICAgICAgICcgICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlZDsgaWYgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAnKGFmdGVyIGFueVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICcKKyAgICAgICAgICAgICAgICAgICAnIkluZGV4RXJyb3IiIHNob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCAnCisgICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJyJzZWxmW2tleV0iIGZvciBkaWN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lICcKKyAgICAgICAgICAgICAgICAgICAnbm90ZSBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgJworICAgICAgICAgICAgICAgICAgICdpZiBuZXcga2V5c1xuJworICAgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmVwbGFjZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSBub3RlICcKKyAgICAgICAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgJworICAgICAgICAgICAgICAgICAgICdpZiBlbGVtZW50c1xuJworICAgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ2EgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnY2FuIGl0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAgICdpdCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7ICcKKyAgICAgICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAnCisgICAgICAgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMsIHNlZSBJdGVyYXRvciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JldmVyc2VkX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3IgJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluICcKKyAgICAgICAgICAgICAgICAgICAncmV2ZXJzZSBvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJyZXZlcnNlZCgpIlxuJworICAgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAgICcoIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInJldmVyc2VkKCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgJworICAgICAgICAgICAgICAgICAgICdub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZXJcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhICcKKyAgICAgICAgICAgICAgICAgICAnbW9yZSBlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlICcKKyAgICAgICAgICAgICAgICAgICAnYSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiB0cnVlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIHJlZmVyZW5jZS5cbicsCisgJ3NoaWZ0aW5nJzogJ1xuJworICAgICAgICAgICAgICdTaGlmdGluZyBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICdvcGVyYXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVzZSBvcGVyYXRvcnMgYWNjZXB0IGludGVnZXJzIGFzIGFyZ3VtZW50cy4gIFRoZXkgc2hpZnQgdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ3NlY29uZCBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgcmlnaHQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBmbG9vciBkaXZpc2lvbiBieSAnCisgICAgICAgICAgICAgJyJwb3coMixuKSIuXG4nCisgICAgICAgICAgICAgJ0EgbGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbicKKyAgICAgICAgICAgICAnICByZXF1aXJlZCB0byBiZSBhdCBtb3N0ICJzeXMubWF4c2l6ZSIuICBJZiB0aGUgcmlnaHQtaGFuZCAnCisgICAgICAgICAgICAgJ29wZXJhbmQgaXNcbicKKyAgICAgICAgICAgICAnICBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFuICJPdmVyZmxvd0Vycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICdyYWlzZWQuXG4nLAorICdzbGljaW5ncyc6ICdcbicKKyAgICAgICAgICAgICAnU2xpY2luZ3NcbicKKyAgICAgICAgICAgICAnKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Egc2xpY2luZyBzZWxlY3RzIGEgcmFuZ2Ugb2YgaXRlbXMgaW4gYSBzZXF1ZW5jZSBvYmplY3QgKGUuZy4sICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICdzdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgJworICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICd0YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgImRlbCIgc3RhdGVtZW50cy4gIFRoZSBzeW50YXggZm9yIGEgJworICAgICAgICAgICAgICdzbGljaW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuJworICAgICAgICAgICAgICcgICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfaXRlbSAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlXG4nCisgICAgICAgICAgICAgJyAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiAnCisgICAgICAgICAgICAgJ1tzdHJpZGVdIF1cbicKKyAgICAgICAgICAgICAnICAgbG93ZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0ICcKKyAgICAgICAgICAgICAnbG9va3MgbGlrZVxuJworICAgICAgICAgICAgICdhbiBleHByZXNzaW9uIGxpc3QgYWxzbyBsb29rcyBsaWtlIGEgc2xpY2UgbGlzdCwgc28gYW55ICcKKyAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgJ2NhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyICcKKyAgICAgICAgICAgICAnY29tcGxpY2F0aW5nIHRoZVxuJworICAgICAgICAgICAgICdzeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSB0aGVcbicKKyAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbicKKyAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb24gYXMgYSBzbGljaW5nICh0aGlzIGlzIHRoZSBjYXNlIGlmIHRoZSBzbGljZSBsaXN0XG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2VtYW50aWNzIGZvciBhIHNsaWNpbmcgYXJlIGFzIGZvbGxvd3MuICBUaGUgcHJpbWFyeSBpcyAnCisgICAgICAgICAgICAgJ2luZGV4ZWRcbicKKyAgICAgICAgICAgICAnKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAna2V5IHRoYXQgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSAnCisgICAgICAgICAgICAgJ3NsaWNlXG4nCisgICAgICAgICAgICAgJ2xpc3QgY29udGFpbnMgYXQgbGVhc3Qgb25lIGNvbW1hLCB0aGUga2V5IGlzIGEgdHVwbGUgY29udGFpbmluZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgJworICAgICAgICAgICAgICdsb25lXG4nCisgICAgICAgICAgICAgJ3NsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0aGF0IGV4cHJlc3Npb24uICBUaGUgY29udmVyc2lvbiBvZiBhIHByb3BlciBzbGljZSAnCisgICAgICAgICAgICAgJ2lzIGFcbicKKyAgICAgICAgICAgICAnc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIHdob3NlICcKKyAgICAgICAgICAgICAnInN0YXJ0IixcbicKKyAgICAgICAgICAgICAnInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICAgICAgICdnaXZlblxuJworICAgICAgICAgICAgICdhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSwgcmVzcGVjdGl2ZWx5LCAnCisgICAgICAgICAgICAgJ3N1YnN0aXR1dGluZ1xuJworICAgICAgICAgICAgICciTm9uZSIgZm9yIG1pc3NpbmcgZXhwcmVzc2lvbnMuXG4nLAorICdzcGVjaWFsYXR0cnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIEF0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzICcKKyAgICAgICAgICAgICAgICAgJ3RvIHNldmVyYWxcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSAnCisgICAgICAgICAgICAgICAgICdub3QgcmVwb3J0ZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaWN0X19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuX19jbGFzc19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fYmFzZXNfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLl9fbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwgZGVzY3JpcHRvciwgb3IgJworICAgICAgICAgICAgICAgICAnZ2VuZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi5fX3F1YWxuYW1lX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlICpxdWFsaWZpZWQgbmFtZSogb2YgdGhlIGNsYXNzLCBmdW5jdGlvbiwgbWV0aG9kLCAnCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLCBvclxuJworICAgICAgICAgICAgICAgICAnICAgZ2VuZXJhdG9yIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fbXJvX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgJworICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MubXJvKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgJworICAgICAgICAgICAgICAgICAnYXQgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiAiX19tcm9fXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fc3ViY2xhc3Nlc19fKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyAnCisgICAgICAgICAgICAgICAgICdpbW1lZGlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAgICAgICAnICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgWzxjbGFzcyAnYm9vbCc+XVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICdmb3VuZFxuJworICAgICAgICAgICAgICAgICAnICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoQmFzaWMgY3VzdG9taXphdGlvbikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1syXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCAiWzEsIDJdIiBpcyBjb25zaWRlcmVkIGVxdWFsICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICcgICAgIlsxLjAsIDIuMF0iLCBhbmQgc2ltaWxhcmx5IGZvciB0dXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIlszXSBUaGV5IG11c3QgaGF2ZSBzaW5jZSB0aGUgcGFyc2VyIGNhbid0IHRlbGwgdGhlIHR5cGUgb2YgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgb3BlcmFuZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1s0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsICcKKyAgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZSksXG4nCisgICAgICAgICAgICAgICAgICcgICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSAnCisgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQuXG4nLAorICdzcGVjaWFsbmFtZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBuYW1lc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ3N5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICdzbGljaW5nKSBieVxuJworICAgICAgICAgICAgICAgICAiZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uJ3MgIgorICAgICAgICAgICAgICAgICAnYXBwcm9hY2ggdG9cbicKKyAgICAgICAgICAgICAgICAgJypvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvclxuJworICAgICAgICAgICAgICAgICAnd2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICdhIG1ldGhvZCBuYW1lZCAiX19nZXRpdGVtX18oKSIsIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgJworICAgICAgICAgICAgICAgICAndGhpcyBjbGFzcyxcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW4gInhbaV0iIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byAidHlwZSh4KS5fX2dldGl0ZW1fXyh4LCAnCisgICAgICAgICAgICAgICAgICdpKSIuXG4nCisgICAgICAgICAgICAgICAgICdFeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdyYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBvciAiVHlwZUVycm9yIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NldHRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byAiTm9uZSIgaW5kaWNhdGVzIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiAgRm9yIGV4YW1wbGUsIGlmIGEgY2xhc3Mgc2V0cyAnCisgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ3RvICJOb25lIiwgdGhlIGNsYXNzIGlzIG5vdCBpdGVyYWJsZSwgc28gY2FsbGluZyAiaXRlcigpIiBvbiAnCisgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB3aWxsIHJhaXNlIGEgIlR5cGVFcnJvciIgKHdpdGhvdXQgZmFsbGluZyBiYWNrIHRvXG4nCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIpLiBbMl1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCAnCisgICAgICAgICAgICAgICAgICdpdCBpc1xuJworICAgICAgICAgICAgICAgICAnaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdkZWdyZWUgdGhhdCBpdFxuJworICAgICAgICAgICAgICAgICAnbWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICAgICAnc29tZVxuJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICdlbGVtZW50cywgYnV0XG4nCisgICAgICAgICAgICAgICAgICdleHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgJworICAgICAgICAgICAgICAgICAnaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICciTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQmFzaWMgY3VzdG9taXphdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgJworICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIgaXMgYVxuJworICAgICAgICAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCAnCisgICAgICAgICAgICAgICAgICdhcyBzdWNoKVxuJworICAgICAgICAgICAgICAgICAnICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICAgICAgICdhcyBpdHNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCAnCisgICAgICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgJworICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJyh1c3VhbGx5IGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBvZiAqY2xzKikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuJworICAgICAgICAgICAgICAgICAnICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgICcgICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiAnCisgICAgICAgICAgICAgICAgICd0aGUgbmV3XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mICcKKyAgICAgICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgICAgICAnICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnY3JlYXRpb24uICBJdFxuJworICAgICAgICAgICAgICAgICAnICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciB0b1xuJworICAgICAgICAgICAgICAgICAnICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgJworICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIpLCBidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBoYXMgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QsIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgJworICAgICAgICAgICAgICAgICAnaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluICcKKyAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvICcKKyAgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZVxuJworICAgICAgICAgICAgICAgICAnICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7ICcKKyAgICAgICAgICAgICAgICAgJ2RvaW5nIHNvXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGFsc29cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgJworICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBjYWxsIGl0XG4nCisgICAgICAgICAgICAgICAgICcgICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBieVxuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0ICcKKyAgICAgICAgICAgICAgICAgJ2EgbGF0ZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICdndWFyYW50ZWVkIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsICcKKyAgICAgICAgICAgICAgICAgJ2V4aXN0IHdoZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2xhdHRlciBpc1xuJworICAgICAgICAgICAgICAgICAnICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgJworICAgICAgICAgICAgICAgICAnU29tZSBjb21tb25cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGZyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0cyAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggJworICAgICAgICAgICAgICAgICAncGFyZW50IGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrICcKKyAgICAgICAgICAgICAgICAgJ2ZyYW1lIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrICcKKyAgICAgICAgICAgICAgICAgJ3N0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAnICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuICcKKyAgICAgICAgICAgICAgICAgJ3VuaGFuZGxlZFxuJworICAgICAgICAgICAgICAgICAnICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSAnCisgICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyAnCisgICAgICAgICAgICAgICAgICd0aGUgY3ljbGVzO1xuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3RoaXJkIGNhblxuJworICAgICAgICAgICAgICAgICAnICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gJworICAgICAgICAgICAgICAgICAnQ2lyY3VsYXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgJworICAgICAgICAgICAgICAgICAndXAgd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0J3Mgb24gYnkgIgorICAgICAgICAgICAgICAgICAnZGVmYXVsdCkuIFJlZmVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgJworICAgICAgICAgICAgICAgICAnaW5mb3JtYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyB0b3BpYy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyICcKKyAgICAgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkICcKKyAgICAgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gJworICAgICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJfX2RlbF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyAnCisgICAgICAgICAgICAgICAgICdvZiBiZWluZ1xuJworICAgICAgICAgICAgICAgICAnICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICAnCisgICAgICAgICAgICAgICAgICdGb3IgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSAnCisgICAgICAgICAgICAgICAgICdtaW5pbXVtIG5lZWRlZFxuJworICAgICAgICAgICAgICAgICAnICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uICcKKyAgICAgICAgICAgICAgICAgJzEuNSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSAnCisgICAgICAgICAgICAgICAgICdzaW5nbGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgJworICAgICAgICAgICAgICAgICAnZ2xvYmFscyBhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgbWF5XG4nCisgICAgICAgICAgICAgICAgICcgICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCAnCisgICAgICAgICAgICAgICAgICdhdmFpbGFibGUgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgJworICAgICAgICAgICAgICAgICAnIm9mZmljaWFsIlxuJworICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgJworICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgJworICAgICAgICAgICAgICAgICAndXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuICcKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Zvcm1cbicKKyAgICAgICAgICAgICAgICAgJyAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnIl9fcmVwcl9fKCkiIGJ1dFxuJworICAgICAgICAgICAgICAgICAnICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAnCisgICAgICAgICAgICAgICAgICciaW5mb3JtYWwiXG4nCisgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAncmVxdWlyZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3RyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgJworICAgICAgICAgICAgICAgICAnImZvcm1hdCgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgJworICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAnCisgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICd0aGVyZSBpcyBub1xuJworICAgICAgICAgICAgICAgICAnICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gJworICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAnICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgJworICAgICAgICAgICAgICAgICAnIm9iamVjdCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2J5dGVzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgJworICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb24gb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24sIGFuZCBieSAnCisgICAgICAgICAgICAgICAgICdleHRlbnNpb24sXG4nCisgICAgICAgICAgICAgICAgICcgICBldmFsdWF0aW9uIG9mIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAnY29udGFpbnMgYVxuJworICAgICAgICAgICAgICAgICAnICAgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBkZXNpcmVkLiBUaGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvIHRoZSB0eXBlICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGwgZWl0aGVyICcKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhICcKKyAgICAgICAgICAgICAgICAgJ3NpbWlsYXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UgZm9yIGEgZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICJvYmplY3QiICcKKyAgICAgICAgICAgICAgICAgJ2l0c2VsZlxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICAnaXMgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAnCisgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAnICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAnCisgICAgICAgICAgICAgICAgICcieD55IiBjYWxsc1xuJworICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICcKKyAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSByZXR1cm5lZCAnCisgICAgICAgICAgICAgICAgICdmb3IgYVxuJworICAgICAgICAgICAgICAgICAnICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gJworICAgICAgICAgICAgICAgICAnYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAnICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAnY29udGV4dCAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICcKKyAgICAgICAgICAgICAgICAgJyJib29sKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciAnCisgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQnkgZGVmYXVsdCwgIl9fbmVfXygpIiBkZWxlZ2F0ZXMgdG8gIl9fZXFfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyBvdGhlciAnCisgICAgICAgICAgICAgICAgICdpbXBsaWVkXG4nCisgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgdHJ1dGggb2YgIih4PHkgb3IgeD09eSkiIGRvZXMgbm90IGltcGx5ICJ4PD15Ii4gVG8gJworICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAnICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3QgJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLCBzZWVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSB0aGUgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSAnCisgICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICcodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAnICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0ICcKKyAgICAgICAgICAgICAgICAgJ3RoZSByaWdodFxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAiZWFjaCBvdGhlcidzXG4iCisgICAgICAgICAgICAgICAgICcgICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzICcKKyAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uICcKKyAgICAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmQncyB0eXBlICIKKyAgICAgICAgICAgICAgICAgJ2lzIGFcbicKKyAgICAgICAgICAgICAgICAgIiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kJ3MgdHlwZSwgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgJworICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgbGVmdCBvcGVyYW5kJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgIgorICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19oYXNoX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICdvbiBtZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICdwcm9wZXJ0eVxuJworICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlOyBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBoYXNoXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSAnCisgICAgICAgICAgICAgICAgICdwYXJ0IGluXG4nCisgICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiAnCisgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAnICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICcKKyAgICAgICAgICAgICAgICAgJyJQeV9zc2l6ZV90Ii4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAnCisgICAgICAgICAgICAgICAgICczMi1iaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCAnCisgICAgICAgICAgICAgICAgICdpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJweXRob24gLWNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX2VxX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyAnCisgICAgICAgICAgICAgICAgICdpdGVtcyBpblxuJworICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlICcKKyAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICIgICByZXF1aXJlcyB0aGF0IGEga2V5J3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSAiCisgICAgICAgICAgICAgICAgICJvYmplY3QncyBoYXNoXG4iCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgJworICAgICAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAndmFsdWUgc3VjaFxuJworICAgICAgICAgICAgICAgICAnICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gJworICAgICAgICAgICAgICAgICAnaGFzaCh5KSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgJyJfX2hhc2hfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgJworICAgICAgICAgICAgICAgICAnV2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gJworICAgICAgICAgICAgICAgICAnYXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosICcKKyAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbicKKyAgICAgICAgICAgICAgICAgJyAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAnc3VwcHJlc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgJworICAgICAgICAgICAgICAgICAnY2FsbC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3JhbmRvbSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkICcKKyAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb25zIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgJworICAgICAgICAgICAgICAgICAnZGVuaWFsLVxuJworICAgICAgICAgICAgICAgICAnICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxvaXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBsZXhpdHkuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgJworICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSAnCisgICAgICAgICAgICAgICAgICdndWFyYW50ZWVzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAnMzItYml0IGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSAnCisgICAgICAgICAgICAgICAgICdkZWZhdWx0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ib29sX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICcgICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzICcKKyAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgJworICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICcieC5uYW1lIikgZm9yXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyAnCisgICAgICAgICAgICAgICAgICdpdCBmb3VuZFxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCAnCisgICAgICAgICAgICAgICAgICdhc3ltbWV0cnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RvbmUgYm90aCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3dvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sICcKKyAgICAgICAgICAgICAgICAgJ2J5IG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgICAgICAgJyhidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSAnCisgICAgICAgICAgICAgICAgICdnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgJworICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiAnCisgICAgICAgICAgICAgICAgICdlaXRoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlICcKKyAgICAgICAgICAgICAgICAgJ3JlY3Vyc2lvbiBpblxuJworICAgICAgICAgICAgICAgICAnICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0ICcKKyAgICAgICAgICAgICAgICAgJ25lZWRzLCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgJworICAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAnICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgJworICAgICAgICAgICAgICAgICAnbGFuZ3VhZ2Ugc3ludGF4XG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlIFNwZWNpYWwgbWV0aG9kIGxvb2t1cC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGNhbGxlZFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgJworICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSwgaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciAnCisgICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAnICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCAnCisgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCAnCisgICAgICAgICAgICAgICAgICdvYmoubmFtZSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnbXVzdCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgJworICAgICAgICAgICAgICAgICAnbGlzdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNvcnRzIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgJworICAgICAgICAgICAgICAgICAnYXBwZWFycyBpbiBhblxuJworICAgICAgICAgICAgICAgICAiKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyJ3MgIgorICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgJworICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2hvc2UgbmFtZSBpc1xuJworICAgICAgICAgICAgICAgICAndGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICcKKyAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG93bmVyIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYXQgdGhlIHRpbWUgdGhlIG93bmluZyBjbGFzcyAqb3duZXIqIGlzIGNyZWF0ZWQuICcKKyAgICAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAgICAnICAgZGVzY3JpcHRvciBoYXMgYmVlbiBhc3NpZ25lZCB0byAqbmFtZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgJworICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICdnaXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgZm9yXG4nCisgICAgICAgICAgICAgICAgICd1bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW52b2tpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggJworICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4nCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgJ2lzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgJworICAgICAgICAgICAgICAgICAnZGVsZXRlXG4nCisgICAgICAgICAgICAgICAgICJ0aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0J3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiCisgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAnbG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICcidHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYW5kXG4nCisgICAgICAgICAgICAgICAgICdob3cgdGhleSB3ZXJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAnCisgICAgICAgICAgICAgICAgICciYS54Ii4gSG93XG4nCisgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpcmVjdCBDYWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbnN0YW5jZSBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgJworICAgICAgICAgICAgICAgICAnaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjYWxsOlxuJworICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTdXBlciBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICcic3VwZXIoQixcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICcgICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbiBkZXBlbmRzXG4nCisgICAgICAgICAgICAgICAgICdvbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgJ2FueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbicKKyAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICd3aWxsIHJldHVyblxuJworICAgICAgICAgICAgICAgICAndGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZC9vclxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJ25laXRoZXIsIGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICdhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgJworICAgICAgICAgICAgICAgICAnYm90aFxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlICcKKyAgICAgICAgICAgICAgICAgJ2p1c3QgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgJ2NvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAnImNsYXNzbWV0aG9kKCkiKSBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICdjYW5cbicKKyAgICAgICAgICAgICAgICAgJ3JlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2FjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSAnCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgJworICAgICAgICAgICAgICAgICAncHJvcGVydHkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAnbnVtYmVycyBvZiBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gJworICAgICAgICAgICAgICAgICAnaG9sZCBhXG4nCisgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiAnCisgICAgICAgICAgICAgICAgICdpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCAnCisgICAgICAgICAgICAgICAgICdvciBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciAnCisgICAgICAgICAgICAgICAgICdlYWNoXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICcgIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICAgICAnQXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIuIElmXG4nCisgICAgICAgICAgICAgICAgICcgIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4nCisgICAgICAgICAgICAgICAgICcgICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4nCisgICAgICAgICAgICAgICAgICcgICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nXG4nCisgICAgICAgICAgICAgICAgICcgIGRlc2NyaXB0b3JzIChJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMpIGZvciBlYWNoIHZhcmlhYmxlICcKKyAgICAgICAgICAgICAgICAgJ25hbWUuICBBcyBhXG4nCisgICAgICAgICAgICAgICAgICcgIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICcgIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgJworICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAnICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgJworICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICcgIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzKS5cbicKKyAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSAnCisgICAgICAgICAgICAgICAgICdmdXR1cmUsIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgJworICAgICAgICAgICAgICAgICAnZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiICcKKyAgICAgICAgICAgICAgICAgJ2FuZCAidHVwbGUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gJworICAgICAgICAgICAgICAgICAnTWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgJyAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nICcKKyAgICAgICAgICAgICAgICAgJ21heSBiZVxuJworICAgICAgICAgICAgICAgICAnICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICcgICpfX3Nsb3RzX18qLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuZXZlciBhIGNsYXNzIGluaGVyaXRzIGZyb20gYW5vdGhlciBjbGFzcywgJworICAgICAgICAgICAgICAgICAnKl9faW5pdF9zdWJjbGFzc19fKiBpc1xuJworICAgICAgICAgICAgICAgICAnY2FsbGVkIG9uIHRoYXQgY2xhc3MuIFRoaXMgd2F5LCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICdjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHN1YmNsYXNzZXMuIFRoaXMgaXMgY2xvc2VseSByZWxhdGVkICcKKyAgICAgICAgICAgICAgICAgJ3RvIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWNvcmF0b3JzLCBidXQgd2hlcmUgY2xhc3MgZGVjb3JhdG9ycyBvbmx5IGFmZmVjdCB0aGUgJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWMgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ3RoZXlcJ3JlIGFwcGxpZWQgdG8sICJfX2luaXRfc3ViY2xhc3NfXyIgc29sZWx5IGFwcGxpZXMgdG8gJworICAgICAgICAgICAgICAgICAnZnV0dXJlXG4nCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzIG9mIHRoZSBjbGFzcyBkZWZpbmluZyB0aGUgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzc21ldGhvZCBvYmplY3QuX19pbml0X3N1YmNsYXNzX18oY2xzKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbnRhaW5pbmcgY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgICpjbHMqIGlzIHRoZW4gdGhlIG5ldyBzdWJjbGFzcy4gSWYgZGVmaW5lZCBhcyBhIG5vcm1hbCAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCB0aGlzIG1ldGhvZCBpcyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgS2V5d29yZCBhcmd1bWVudHMgd2hpY2ggYXJlIGdpdmVuIHRvIGEgbmV3IGNsYXNzIGFyZSAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBwYXJlbnRcJ3MgY2xhc3MgIl9faW5pdF9zdWJjbGFzc19fIi4gRm9yIGNvbXBhdGliaWxpdHkgJworICAgICAgICAgICAgICAgICAnd2l0aCBvdGhlclxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3NlcyB1c2luZyAiX19pbml0X3N1YmNsYXNzX18iLCBvbmUgc2hvdWxkIHRha2Ugb3V0ICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleXdvcmQgYXJndW1lbnRzIGFuZCBwYXNzIHRoZSBvdGhlcnMgb3ZlciB0byB0aGUgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcywgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBjbGFzcyBQaGlsb3NvcGhlcjpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCBkZWZhdWx0X25hbWUsICcKKyAgICAgICAgICAgICAgICAgJyoqa3dhcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncylcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgY2xzLmRlZmF1bHRfbmFtZSA9IGRlZmF1bHRfbmFtZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBjbGFzcyBBdXN0cmFsaWFuUGhpbG9zb3BoZXIoUGhpbG9zb3BoZXIsICcKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHRfbmFtZT0iQnJ1Y2UiKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uICJvYmplY3QuX19pbml0X3N1YmNsYXNzX18iICcKKyAgICAgICAgICAgICAgICAgJ2RvZXMgbm90aGluZyxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJ1dCByYWlzZXMgYW4gZXJyb3IgaWYgaXQgaXMgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG1ldGFjbGFzcyBoaW50ICJtZXRhY2xhc3MiIGlzIGNvbnN1bWVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSB0eXBlIG1hY2hpbmVyeSwgYW5kIGlzIG5ldmVyIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICciX19pbml0X3N1YmNsYXNzX18iXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGltcGxlbWVudGF0aW9ucy4gVGhlIGFjdHVhbCBtZXRhY2xhc3MgKHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICdleHBsaWNpdFxuJworICAgICAgICAgICAgICAgICAnICAgICBoaW50KSBjYW4gYmUgYWNjZXNzZWQgYXMgInR5cGUoY2xzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRhY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgInR5cGUoKSIuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgICAgICAgICdleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kICcKKyAgICAgICAgICAgICAgICAgJ2xvY2FsbHkgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICdyZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXplZCBieSBwYXNzaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICAnIm1ldGFjbGFzcyIga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCAnCisgICAgICAgICAgICAgICAgICdvciBieVxuJworICAgICAgICAgICAgICAgICAnaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gSW5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCAiTXlDbGFzcyIgYW5kICJNeVN1YmNsYXNzIiBhcmUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzXG4nCisgICAgICAgICAgICAgICAgICdvZiAiTWV0YSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE1ldGEodHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICdhcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCAnCisgICAgICAgICAgICAgICAgICdiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgJworICAgICAgICAgICAgICAgICAnb2NjdXI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgJworICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBhc1xuJworICAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiAnCisgICAgICAgICAgICAgICAgICcidHlwZSgpIiBpc1xuJworICAgICAgICAgICAgICAgICAnICB1c2VkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAidHlwZSgpIiwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBpZiBhbiBpbnN0YW5jZSBvZiAidHlwZSgpIiBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzLCBvclxuJworICAgICAgICAgICAgICAgICAnICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiAidHlwZShjbHMpIikgb2YgJworICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgJworICAgICAgICAgICAgICAgICAnd2hpY2ggaXMgYVxuJworICAgICAgICAgICAgICAgICAnc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdjYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAgICAgICAgJ3dpbGwgZmFpbCB3aXRoICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1ByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdPbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSAiX19wcmVwYXJlX18iICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSxcbicKKyAgICAgICAgICAgICAgICAgJ2l0IGlzIGNhbGxlZCBhcyAibmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2VzLFxuJworICAgICAgICAgICAgICAgICAnKiprd2RzKSIgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksICcKKyAgICAgICAgICAgICAgICAgJ2NvbWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzIGRlZmluaXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSBvcmRlcmVkIG1hcHBpbmcuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgJworICAgICAgICAgICAgICAgICAnZ2xvYmFscygpLFxuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gJworICAgICAgICAgICAgICAgICAnImV4ZWMoKSIgaXMgdGhhdFxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzKSB0b1xuJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgICdmdW5jdGlvbixcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICAncGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAnYWNjZXNzZWQgYXQgYWxsXG4nCisgICAgICAgICAgICAgICAgICdmcm9tIHN0YXRpYyBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0NyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICcibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICdhcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3plcm8tXG4nCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgJworICAgICAgICAgICAgICAgICAnY2xvc3VyZVxuJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnYm9keSByZWZlclxuJworICAgICAgICAgICAgICAgICAndG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZvcm1cbicKKyAgICAgICAgICAgICAgICAgJ29mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnYmFzZWQgb25cbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgJworICAgICAgICAgICAgICAgICAndG8gbWFrZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2N1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBuZXcgY2xhc3MgaXMgY3JlYXRlZCBieSAidHlwZS5fX25ld19fIiwgdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlZCBhc1xuJworICAgICAgICAgICAgICAgICAndGhlIG5hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgbmV3IG9yZGVyZWQgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICdvcmlnaW5hbCBvYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgaXMgd3JhcHBlZCBpbiBhICcKKyAgICAgICAgICAgICAgICAgJ3JlYWQtb25seVxuJworICAgICAgICAgICAgICAgICAncHJveHksIHdoaWNoIGJlY29tZXMgdGhlICJfX2RpY3RfXyIgYXR0cmlidXRlIG9mIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuJworICAgICAgICAgICAgICAgICAnICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzIGV4YW1wbGVcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyAnCisgICAgICAgICAgICAgICAgICd0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgJ2JlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsICcKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY1xuJworICAgICAgICAgICAgICAgICAnZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCAnCisgICAgICAgICAgICAgICAgICdmcmFtZXdvcmtzLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuJworICAgICAgICAgICAgICAgICAnImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyAnCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXNcbicKKyAgICAgICAgICAgICAgICAgJ2FyZSBkZWZpbmVkOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBAY2xhc3NtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCAnCisgICAgICAgICAgICAgICAgICdkaWN0KG5hbWVzcGFjZSkpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gQS5tZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICIgICAoJ19fbW9kdWxlX18nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJylcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzICcKKyAgICAgICAgICAgICAgICAgJ2JlZ2luc1xuJworICAgICAgICAgICAgICAgICAnd2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5zIGFuXG4nCisgICAgICAgICAgICAgICAgICdlbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJ2lzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgJworICAgICAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICAgICAnaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSAnCisgICAgICAgICAgICAgICAgICdvcmRlcmVkXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3Igb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGluXG4nCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICd0eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3QgJworICAgICAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0ICcKKyAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyhtZXRhY2xhc3MpIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdhY3R1YWwgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJ29uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICcKKyAgICAgICAgICAgICAgICAgJyJpc2luc3RhbmNlKCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb25hbGl0eSBpblxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJhYmMiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgJworICAgICAgICAgICAgICAgICAndGhpcyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSAnCisgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyAnCisgICAgICAgICAgICAgICAgICd3ZWxsLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICdmaXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJ2VtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrICcKKyAgICAgICAgICAgICAgICAgJzwgTiIgd2hlcmVcbicKKyAgICAgICAgICAgICAgICAgJypOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggJworICAgICAgICAgICAgICAgICAnZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgdGhlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJjbGVhcigpIixcbicKKyAgICAgICAgICAgICAgICAgJyJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAnCisgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICJiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob24ncyBzdGFuZGFyZCBkaWN0aW9uYXJ5ICIKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IGJhc2VcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX3NldGl0ZW1fXygpIiwgIl9fZGVsaXRlbV9fKCkiLCBhbmQgImtleXMoKSIuIE11dGFibGUgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICciZXh0ZW5kKCkiLFxuJworICAgICAgICAgICAgICAgICAnImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCAnCisgICAgICAgICAgICAgICAgICdsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgJyhtZWFuaW5nXG4nCisgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgJworICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnIl9faWFkZF9fKCkiLCAiX19tdWxfXygpIiwgIl9fcm11bF9fKCkiIGFuZCAiX19pbXVsX18oKSIgJworICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXQgJworICAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJfX2NvbnRhaW5zX18oKSIgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlICJpbiIgJworICAgICAgICAgICAgICAgICAnb3BlcmF0b3I7XG4nCisgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzLCBpdFxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyIHJlY29tbWVuZGVkICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiBtZXRob2QgdG8gJworICAgICAgICAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgJyJfX2l0ZXJfXygpIlxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAndGhyb3VnaCB0aGUgdmFsdWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgJworICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyICI+PSIgMC4gIEFsc28sIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICciX19sZW5fXygpIiBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmxlbmd0aF9oaW50KCkiLiBTaG91bGQgJworICAgICAgICAgICAgICAgICAncmV0dXJuIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciBvciAnCisgICAgICAgICAgICAgICAgICdsZXNzIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgIj49IiAwLiAnCisgICAgICAgICAgICAgICAgICdUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgcHVyZWx5IGFuIG9wdGltaXphdGlvbiBhbmQgaXMgbmV2ZXIgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYVsxOjJdID0gYlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZba2V5XSIuIEZvciAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0eXBlcyxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy4gICcKKyAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZSAiX19nZXRpdGVtX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLiBJZlxuJworICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAncmFpc2VkOyBpZiBvZlxuJworICAgICAgICAgICAgICAgICAnICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgdmFsdWVzKSwgIkluZGV4RXJyb3IiICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZm9yIiBsb29wcyBleHBlY3QgdGhhdCBhbiAiSW5kZXhFcnJvciIgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19taXNzaW5nX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgInNlbGZba2V5XSIgJworICAgICAgICAgICAgICAgICAnZm9yIGRpY3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSBub3RlICcKKyAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiAnCisgICAgICAgICAgICAgICAgICduZXcga2V5c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICdyZXBsYWNlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSBub3RlICcKKyAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmICcKKyAgICAgICAgICAgICAgICAgJ2VsZW1lbnRzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCAnCisgICAgICAgICAgICAgICAgICdzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgJworICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgSXRlcmF0b3IgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JldmVyc2VkX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2UgJworICAgICAgICAgICAgICAgICAnb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICcicmV2ZXJzZWQoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICcoIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ3Byb3RvY29sXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgJworICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICJyZXZlcnNlZCgpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgJworICAgICAgICAgICAgICAgICAnbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCAnCisgICAgICAgICAgICAgICAgICdjb250YWluZXJcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlICcKKyAgICAgICAgICAgICAgICAgJ2VmZmljaWVudFxuJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybiB0cnVlXG4nCisgICAgICAgICAgICAgICAgICcgICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBvclxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21lbWJlcnNoaXAgdGVzdFxuJworICAgICAgICAgICAgICAgICAnICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSB0aGlzIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgJworICAgICAgICAgICAgICAgICAnYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgZm9yXG4nCisgICAgICAgICAgICAgICAgICdub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgJworICAgICAgICAgICAgICAgICAnY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICd0byBhY2NlcHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgJworICAgICAgICAgICAgICAgICAnKHN3YXBwZWQpXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICcgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gWzNdIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZHMgYXJlIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFs0XSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IC1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAnCisgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCAiCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICd0aGUgbGVmdFxuJworICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICIgICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAnCisgICAgICAgICAgICAgICAgICciKio9IixcbicKKyAgICAgICAgICAgICAgICAgJyAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdhdHRlbXB0IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgJyAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyAnCisgICAgICAgICAgICAgICAgICdiYWNrIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggJworICAgICAgICAgICAgICAgICAnPVxuJworICAgICAgICAgICAgICAgICAnICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAnCisgICAgICAgICAgICAgICAgICcieS5fX3JhZGRfXyh4KSIgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluICcKKyAgICAgICAgICAgICAgICAgJ2NlcnRhaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCAnCisgICAgICAgICAgICAgICAgICdlcnJvcnNcbicKKyAgICAgICAgICAgICAgICAgIiAgIChzZWUgV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbJ2l0ZW0nXSByYWlzZSBhbiBleGNlcHRpb24gIgorICAgICAgICAgICAgICAgICAnd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgZGF0YVxuJworICAgICAgICAgICAgICAgICAnICAgbW9kZWwuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lZ19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3NfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWJzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludmVydF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAnCisgICAgICAgICAgICAgICAgICciKyIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiYWJzKCkiIGFuZCAifiIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb21wbGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9hdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICciaW50KCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICB0eXBlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbmRleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgJworICAgICAgICAgICAgICAgICAnUHl0aG9uIG5lZWRzXG4nCisgICAgICAgICAgICAgICAgICcgICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IChzdWNoXG4nCisgICAgICAgICAgICAgICAgICcgICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAnIm9jdCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1dpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2JlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgbWFuYWdlclxuJworICAgICAgICAgICAgICAgICAnaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkICcKKyAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dFxuJworICAgICAgICAgICAgICAgICAnZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudCksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1R5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAna2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCAnCisgICAgICAgICAgICAgICAgICdjbG9zaW5nIG9wZW5lZFxuJworICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlIENvbnRleHQgJworICAgICAgICAgICAgICAgICAnTWFuYWdlciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgJ3RhcmdldChzKVxuJworICAgICAgICAgICAgICAgICAnICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAncGFyYW1ldGVyc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICdleGl0ZWQuIElmIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgJworICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAnc3VwcHJlc3MgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICdwcm9jZXNzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgIiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiAid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NwZWNpYWwgbWV0aG9kIGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBvbmx5XG4nCisgICAgICAgICAgICAgICAgICJndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0J3MgdHlwZSwgIgorICAgICAgICAgICAgICAgICAnbm90IGluXG4nCisgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSAiCisgICAgICAgICAgICAgICAgICdyZWFzb24gd2h5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsZW4oYylcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgJ0MnIGhhcyBubyBsZW4oKVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2YgJworICAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICdhbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVzZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgJworICAgICAgICAgICAgICAgICAnZmFpbCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciAnX19oYXNoX18nIG9mICdpbnQnIG9iamVjdCBuZWVkcyBhbiAiCisgICAgICAgICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGluIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgIndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgJ21ldGFjbGFzcyBjb25mdXNpb24nLCBhbmQgIgorICAgICAgICAgICAgICAgICAnaXMgYXZvaWRlZFxuJworICAgICAgICAgICAgICAgICAnYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJlc3Qgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2NvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gJworICAgICAgICAgICAgICAgICAnYnlwYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSAnCisgICAgICAgICAgICAgICAgICd0eXBlXG4nCisgICAgICAgICAgICAgICAgICcgICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCeXBhc3NpbmcgdGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb24gJworICAgICAgICAgICAgICAgICAncHJvdmlkZXNcbicKKyAgICAgICAgICAgICAgICAgJ3NpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXIsIGF0XG4nCisgICAgICAgICAgICAgICAgICd0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgKHRoZVxuJworICAgICAgICAgICAgICAgICAnc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0IGl0c2VsZiBpbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBiZVxuJworICAgICAgICAgICAgICAgICAnY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cbicsCisgJ3N0cmluZy1tZXRob2RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdTdHJpbmcgTWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucywgJworICAgICAgICAgICAgICAgICAgICdhbG9uZyB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgJ3RoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkaW5nIGFcbicKKyAgICAgICAgICAgICAgICAgICAnbGFyZ2UgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgJworICAgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIixcbicKKyAgICAgICAgICAgICAgICAgICAnRm9ybWF0IFN0cmluZyBTeW50YXggYW5kIEN1c3RvbSBTdHJpbmcgRm9ybWF0dGluZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyIGJhc2VkXG4nCisgICAgICAgICAgICAgICAgICAgJ29uIEMgInByaW50ZiIgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciAnCisgICAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAgJ2FuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuICcKKyAgICAgICAgICAgICAgICAgICAnZmFzdGVyIGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnY2FzZXMgaXQgY2FuIGhhbmRsZSAocHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMgc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgJworICAgICAgICAgICAgICAgICAgICdsaWJyYXJ5IGNvdmVycyBhXG4nCisgICAgICAgICAgICAgICAgICAgJ251bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCAnCisgICAgICAgICAgICAgICAgICAgJ3V0aWxpdGllc1xuJworICAgICAgICAgICAgICAgICAgICcoaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiICcKKyAgICAgICAgICAgICAgICAgICAnbW9kdWxlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jYXBpdGFsaXplKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdjYXBpdGFsaXplZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jYXNlZm9sZCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgbWF5IGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgJ2FnZ3Jlc3NpdmUgYmVjYXVzZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmcuIEZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgIlwnw59cJyIgaXMgJworICAgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvICIic3MiIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyAnCisgICAgICAgICAgICAgICAgICAgJ25vdGhpbmcgdG8gIlwnw59cJyI7XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgJworICAgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgICdpcyBkb25lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSAnCisgICAgICAgICAgICAgICAgICAgJ3NwYWNlKS4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciAnCisgICAgICAgICAgICAgICAgICAgJ2VxdWFsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKnN1YipcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICAgICcqc3RhcnQqIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0LiBEZWZhdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgJworICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgJworICAgICAgICAgICAgICAgICAgICciXCdzdHJpY3RcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSAiVW5pY29kZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICdPdGhlciBwb3NzaWJsZVxuJworICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgJworICAgICAgICAgICAgICAgICAgICciXCd4bWxjaGFycmVmcmVwbGFjZVwnIixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ3ZpYVxuJworICAgICAgICAgICAgICAgICAgICcgICAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiBFcnJvciBIYW5kbGVycy4gJworICAgICAgICAgICAgICAgICAgICdGb3IgYSBsaXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gU3RhbmRhcmQgRW5jb2RpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICAgICdhZGRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICcKKyAgICAgICAgICAgICAgICAgICAnKnN1ZmZpeCosXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgJworICAgICAgICAgICAgICAgICAgICdvZiBzdWZmaXhlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgJworICAgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSByZXBsYWNlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgJworICAgICAgICAgICAgICAgICAgICdhbmQgc28gb24pLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLiAoVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGEgbmV3bGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAgICAgICAnY29sdW1uIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNCcuZXhwYW5kdGFicygpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNCcuZXhwYW5kdGFicyg0KVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgIDAxMiAwMTIzICAgIDAxMjM0J1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQgd2l0aGluIHRoZSBzbGljZSAic1tzdGFydDplbmRdIi4gIE9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzICpzdGFydCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4gIFJldHVybiAnCisgICAgICAgICAgICAgICAgICAgJyItMSIgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKnN1YiogaXMgbm90IGZvdW5kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlICJmaW5kKCkiIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSAnCisgICAgICAgICAgICAgICAgICAgJ25lZWQgdG8ga25vd1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgb3Igbm90LFxuJworICAgICAgICAgICAgICAgICAgICcgICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgICAgPj4+ICdQeScgaW4gJ1B5dGhvbidcbiIKKyAgICAgICAgICAgICAgICAgICAnICAgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uICcKKyAgICAgICAgICAgICAgICAgICAnd2hpY2ggdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciAnCisgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VtZW50IGZpZWxkc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbnMgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgJworICAgICAgICAgICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlICcKKyAgICAgICAgICAgICAgICAgICAnZWFjaFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICdUaGUgc3VtIG9mIDEgKyAyIGlzIDMnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTZWUgRm9ybWF0IFN0cmluZyBTeW50YXggZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAndmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICcibWFwcGluZyIgaXMgdXNlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhICJkaWN0Ii4gIFRoaXMgaXMgdXNlZnVsIGlmICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIGV4YW1wbGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIm1hcHBpbmciIGlzIGEgZGljdCBzdWJjbGFzczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3tuYW1lfSB3YXMgYm9ybiBpbiAiCisgICAgICAgICAgICAgICAgICAgIntjb3VudHJ5fScuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9J0d1aWRvJykpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5J1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2FsbnVtKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnYWxwaGFudW1lcmljIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyICJjIlxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyAnCisgICAgICAgICAgICAgICAgICAgJyJUcnVlIjpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAnCisgICAgICAgICAgICAgICAgICAgJyJjLmlzbnVtZXJpYygpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2FscGhhKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnYWxwaGFiZXRpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICAgICAgICAgICAgICdBbHBoYWJldGljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlICcKKyAgICAgICAgICAgICAgICAgICAndGhhdCB0aGlzIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzZGVjaW1hbCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAnCisgICAgICAgICAgICAgICAgICAgJ0RlY2ltYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgJworICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeVxuJworICAgICAgICAgICAgICAgICAgICcgICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gJworICAgICAgICAgICAgICAgICAgICdiZSB1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDICcKKyAgICAgICAgICAgICAgICAgICAnRElHSVQgWkVSTy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RpZ2l0KClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVyZSBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgJworICAgICAgICAgICAgICAgICAgICdpbmNsdWRlIGRlY2ltYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgJworICAgICAgICAgICAgICAgICAgICdhIGNoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzaWRlbnRpZmllcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciAnCisgICAgICAgICAgICAgICAgICAgJ2FjY29yZGluZyB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiBJZGVudGlmaWVycyBhbmQga2V5d29yZHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBVc2UgImtleXdvcmQuaXNrZXl3b3JkKCkiIHRvIHRlc3QgZm9yIHJlc2VydmVkICcKKyAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllcnMgc3VjaCBhc1xuJworICAgICAgICAgICAgICAgICAgICcgICAiZGVmIiBhbmQgImNsYXNzIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2xvd2VyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIGxvd2VyY2FzZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2UgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNudW1lcmljKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAnCisgICAgICAgICAgICAgICAgICAgJ051bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSICcKKyAgICAgICAgICAgICAgICAgICAnRlJBQ1RJT05cbicKKyAgICAgICAgICAgICAgICAgICAnICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsICcKKyAgICAgICAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNwcmludGFibGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgJworICAgICAgICAgICAgICAgICAgICdwcmludGFibGUgb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlIGFzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgJworICAgICAgICAgICAgICAgICAgICcoMHgyMCkgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiAnCisgICAgICAgICAgICAgICAgICAgJyJyZXByKCkiIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgJworICAgICAgICAgICAgICAgICAgICdvZiBzdHJpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNzcGFjZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gJworICAgICAgICAgICAgICAgICAgICd0aGUgc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICAnCisgICAgICAgICAgICAgICAgICAgJ1doaXRlc3BhY2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAnYmlkaXJlY3Rpb25hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN0aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdtYXkgb25seVxuJworICAgICAgICAgICAgICAgICAgICcgICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAnY2FzZWQgb25lcy5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3VwcGVyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIHVwcGVyY2FzZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2UgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuam9pbihpdGVyYWJsZSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGlmICcKKyAgICAgICAgICAgICAgICAgICAndGhlcmUgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyAnCisgICAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAgICAnKndpZHRoKi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGFuIEFTQ0lJXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmxvd2VyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIFs0XVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnMy4xMyBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgJworICAgICAgICAgICAgICAgICAgICdwcmVmaXg7IHJhdGhlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLmxzdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdzcGFjaW91cyAgICdcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLmxzdHJpcCgnY21vd3ouJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ2V4YW1wbGUuY29tJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAic3RyLnRyYW5zbGF0ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgJworICAgICAgICAgICAgICAgICAgICdsZW5ndGggMSkgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yICcKKyAgICAgICAgICAgICAgICAgICAnIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnZXF1YWwgbGVuZ3RoLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4ICcKKyAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSBtYXBwZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgJworICAgICAgICAgICAgICAgICAgICdpcyBhIHRoaXJkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICdtYXBwZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk5vbmUiIGluIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHdvIGVtcHR5IHN0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqb2xkKlxuJworICAgICAgICAgICAgICAgICAgICcgICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZ2l2ZW4sIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICcqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgICcic1tzdGFydDplbmRdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHNsaWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYW4gQVNDSUlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHN0cmluZyBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqIHNwbGl0c1xuJworICAgICAgICAgICAgICAgICAgICcgICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgJworICAgICAgICAgICAgICAgICAgICdmb3Igc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggJworICAgICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgJworICAgICAgICAgICAgICAgICAgICdzdWZmaXg7IHJhdGhlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+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+PSIgIjAiIGFuZCAqaSogIjw9IiAqeCogIjwiICpqKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyICcKKyAgICAgICAgICAnb2JqZWN0cyxcbicKKyAgICAgICAgICAnICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7ICcKKyAgICAgICAgICAnaG93ZXZlcixcbicKKyAgICAgICAgICAnICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTdHJpbmdzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgJworICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgJyAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtICcKKyAgICAgICAgICAnVSsxMEZGRkYiXG4nCisgICAgICAgICAgIiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSAiCisgICAgICAgICAgJyJjaGFyIlxuJworICAgICAgICAgICcgICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgJworICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICcgICAgICAgICBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggIjEiLiAgVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gYW5cbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiOyAiY2hyKCkiIGNvbnZlcnRzIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgJ2xlbmd0aFxuJworICAgICAgICAgICcgICAgICAgICAiMSIgc3RyaW5nIG9iamVjdC4gInN0ci5lbmNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcy5kZWNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUdXBsZXNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbicKKyAgICAgICAgICAiICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhICdzaW5nbGV0b24nKSBjYW4gYmVcbiIKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuJworICAgICAgICAgICcgICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSAnCisgICAgICAgICAgJzgtYml0XG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuJworICAgICAgICAgICcgICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSAiYlwnYWJjXCciKSBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbicKKyAgICAgICAgICAnICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgJworICAgICAgICAgICciZGVjb2RlKCkiXG4nCisgICAgICAgICAgJyAgICAgICAgIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIE11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICcgICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBMaXN0c1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzICcKKyAgICAgICAgICAnbmVlZGVkXG4nCisgICAgICAgICAgJyAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlIEFycmF5c1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlICcKKyAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NldCB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuJworICAgICAgICAgICcgICBvYmplY3RzLiBBcyBzdWNoLCB0aGV5IGNhbm5vdCBiZSBpbmRleGVkIGJ5IGFueSBzdWJzY3JpcHQuICcKKyAgICAgICAgICAnSG93ZXZlcixcbicKKyAgICAgICAgICAnICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4nCisgICAgICAgICAgJyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlICcKKyAgICAgICAgICAnZmFzdFxuJworICAgICAgICAgICcgICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbicKKyAgICAgICAgICAnICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbicKKyAgICAgICAgICAnICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmRcbicKKyAgICAgICAgICAnICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgc2V0IHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2V0c1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgYSBtdXRhYmxlIHNldC4gVGhleSBhcmUgY3JlYXRlZCBieSB0aGUgJworICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSAnCisgICAgICAgICAgJ3NldmVyYWxcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJvemVuIHNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgJworICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgJyAgICAgIHNldCwgb3IgYXMgYSBkaWN0aW9uYXJ5IGtleS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgYXJiaXRyYXJ5ICcKKyAgICAgICAgICAnaW5kZXhcbicKKyAgICAgICAgICAnICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5ICcKKyAgICAgICAgICAnImsiXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICB0YXJnZXQgb2YgYXNzaWdubWVudHMgb3IgImRlbCIgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBEaWN0aW9uYXJpZXNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbicKKyAgICAgICAgICAnICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJyAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuJworICAgICAgICAgICcgICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgIiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleSdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuIgorICAgICAgICAgICcgICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciAnCisgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAnICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAnCisgICAgICAgICAgJyIxLjAiKVxuJworICAgICAgICAgICcgICAgICB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4nCisgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlICJ7Li4ufSJcbicKKyAgICAgICAgICAnICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uIERpY3Rpb25hcnkgZGlzcGxheXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4nCisgICAgICAgICAgJyAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGUgJworICAgICAgICAgICciY29sbGVjdGlvbnMiXG4nCisgICAgICAgICAgJyAgICAgIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NhbGxhYmxlIHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiBDYWxscykgY2FuIGJlIGFwcGxpZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gRnVuY3Rpb24gZGVmaW5pdGlvbnMpLiAgSXQgc2hvdWxkIGJlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICIgICAgICBhcyB0aGUgZnVuY3Rpb24ncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG4iCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICdkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiBpZiAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkIGJ5ICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAnCisgICAgICAgICAgJ25hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19xdWFsbmFtZV9fIiAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICpxdWFsaWZpZWQgJworICAgICAgICAgICduYW1lKiB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvbidzICAgICAgICIKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kaWN0X18iICAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICAgIHwgIk5vbmUiIG9yIGEgdHVwbGUgb2YgY2VsbHMgdGhhdCAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgIiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgIgorICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2Fubm90YXRpb25zX18iICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgIlwncmV0dXJuXCciIGZvciB0aGUgJworICAgICAgICAgICdyZXR1cm4gICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fa3dkZWZhdWx0c19fIiAgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgYXNzaWduZWQgdmFsdWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCAnCisgICAgICAgICAgJ21ldGFkYXRhXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAnb25seVxuJworICAgICAgICAgICcgICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICcKKyAgICAgICAgICAnRnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnV0dXJlLipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvbidzIGRlZmluaXRpb24gY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiAnCisgICAgICAgICAgJ2ludGVybmFsXG4nCisgICAgICAgICAgJyAgICAgIHR5cGVzIGJlbG93LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgSW5zdGFuY2UgbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QsICJfX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgIl9fZG9jX18iIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAnCisgICAgICAgICAgJyJfX25hbWVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzICJfX2Z1bmNfXy5fX25hbWVfXyIpOyAnCisgICAgICAgICAgJyJfX21vZHVsZV9fIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICcKKyAgICAgICAgICAnIk5vbmUiXG4nCisgICAgICAgICAgJyAgICAgIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICd1c2VyLVxuJworICAgICAgICAgICcgICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgJworICAgICAgICAgICdpbnN0YW5jZXMsXG4nCisgICAgICAgICAgJyAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4nCisgICAgICAgICAgJyAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAnCisgICAgICAgICAgJyJfX2Z1bmNfXyJcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgYnV0IGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgICgiX19zZWxmX18iKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgJyAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAnCisgICAgICAgICAgJyJmKCkiLFxuJworICAgICAgICAgICcgICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50ICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgICAgY2FsbGluZyAiQy5mKHgsIDEpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgJworICAgICAgICAgICdhY3R1YWxseVxuJworICAgICAgICAgICcgICAgICBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyICJ4LmYoMSkiIG9yICcKKyAgICAgICAgICAnIkMuZigxKSJcbicKKyAgICAgICAgICAnICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgJworICAgICAgICAgICd1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgJworICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbicKKyAgICAgICAgICAnICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgb2YgdGhlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4nCisgICAgICAgICAgJyAgICAgIHNlY3Rpb24gVGhlIHlpZWxkIHN0YXRlbWVudCkgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciAnCisgICAgICAgICAgJ2Z1bmN0aW9uKi5cbicKKyAgICAgICAgICAnICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3IgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICAnCisgICAgICAgICAgJ2NhbGxpbmdcbicKKyAgICAgICAgICAnICAgICAgdGhlIGl0ZXJhdG9yXCdzICJpdGVyYXRvci5fX25leHRfXygpIiBtZXRob2Qgd2lsbCBjYXVzZSB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAnCisgICAgICAgICAgJyJ5aWVsZCJcbicKKyAgICAgICAgICAnICAgICAgc3RhdGVtZW50LiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSAicmV0dXJuIiBzdGF0ZW1lbnQgJworICAgICAgICAgICdvclxuJworICAgICAgICAgICcgICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgIHJldHVybmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29yb3V0aW5lIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nICJhc3luYyBkZWYiIGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuICcKKyAgICAgICAgICAnY2FsbGVkLFxuJworICAgICAgICAgICcgICAgICByZXR1cm5zIGEgKmNvcm91dGluZSogb2JqZWN0LiAgSXQgbWF5IGNvbnRhaW4gImF3YWl0IlxuJworICAgICAgICAgICcgICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiICcKKyAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnICAgICAgU2VlIGFsc28gdGhlIENvcm91dGluZSBPYmplY3RzIHNlY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJyAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4nCisgICAgICAgICAgJyAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCAnCisgICAgICAgICAgJ3JlYWQtXG4nCisgICAgICAgICAgJyAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4nCisgICAgICAgICAgJyAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSAnCisgICAgICAgICAgImZ1bmN0aW9uJ3NcbiIKKyAgICAgICAgICAnICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuJworICAgICAgICAgICcgICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzICcKKyAgICAgICAgICAnZGVmaW5lZFxuJworICAgICAgICAgICcgICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuJworICAgICAgICAgICcgICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbicKKyAgICAgICAgICAnICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzZXNcbicKKyAgICAgICAgICAnICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyAnCisgICAgICAgICAgJ2ZhY3Rvcmllc1xuJworICAgICAgICAgICcgICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byAiX19uZXdfXygpIiBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4nCisgICAgICAgICAgJyAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBJbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5ICcKKyAgICAgICAgICAnZGVmaW5pbmdcbicKKyAgICAgICAgICAnICAgICAgYSAiX19jYWxsX18oKSIgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICcgICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbicKKyAgICAgICAgICAnICAgY3JlYXRlZCBieSB0aGUgaW1wb3J0IHN5c3RlbSBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgImltcG9ydCJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4nCisgICAgICAgICAgJyAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBICcKKyAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlICJfX2dsb2JhbHNfXyIgYXR0cmlidXRlIG9mXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4nCisgICAgICAgICAgJyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzICcKKyAgICAgICAgICAnZXF1aXZhbGVudFxuJworICAgICAgICAgICcgICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbicKKyAgICAgICAgICAiICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgIgorICAgICAgICAgICdvbmNlXG4nCisgICAgICAgICAgJyAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuIgorICAgICAgICAgICcgICBlLmcuLCAibS54ID0gMSIgaXMgZXF1aXZhbGVudCB0byAibS5fX2RpY3RfX1sieCJdID0gMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZTtcbicKKyAgICAgICAgICAnICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuJworICAgICAgICAgICcgICB1bmF2YWlsYWJsZTsgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnlcbicKKyAgICAgICAgICAnICAgY29udGFpbmluZyAqdmFyaWFibGUgYW5ub3RhdGlvbnMqIGNvbGxlY3RlZCBkdXJpbmcgbW9kdWxlIGJvZHlcbicKKyAgICAgICAgICAnICAgZXhlY3V0aW9uOyAiX19maWxlX18iIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuJworICAgICAgICAgICcgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyAnCisgICAgICAgICAgJ0NcbicKKyAgICAgICAgICAnICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4nCisgICAgICAgICAgJyAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgJworICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAnICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbicKKyAgICAgICAgICAnICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlICcKKyAgICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAgICcgICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgJworICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDdXN0b20gY2xhc3Nlc1xuJworICAgICAgICAgICcgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zICcKKyAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICcgICBzZWN0aW9uIENsYXNzIGRlZmluaXRpb25zKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICcgICAiQy5fX2RpY3RfX1sieCJdIiAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoICcKKyAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAnICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4nCisgICAgICAgICAgJyAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2UgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAnZGlhbW9uZCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiIKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4nCisgICAgICAgICAgJyAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuJworICAgICAgICAgICcgICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgJworICAgICAgICAgICd5aWVsZCBhXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heSAnCisgICAgICAgICAgJ2RpZmZlclxuJworICAgICAgICAgICcgICBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzJ3MgZGljdGlvbmFyeSwgIgorICAgICAgICAgICduZXZlclxuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSAnCisgICAgICAgICAgJ3R1cGxlXG4nCisgICAgICAgICAgJyAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuZGVmaW5lZDtcbicKKyAgICAgICAgICAnICAgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyAnCisgICAgICAgICAgJyp2YXJpYWJsZVxuJworICAgICAgICAgICcgICBhbm5vdGF0aW9ucyogY29sbGVjdGVkIGR1cmluZyBjbGFzcyBib2R5IGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzIGluc3RhbmNlc1xuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlICcKKyAgICAgICAgICAnYWJvdmUpLlxuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICcgICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuJworICAgICAgICAgICIgICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2UncyBjbGFzcyAiCisgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICcgICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuJworICAgICAgICAgICcgICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhICcKKyAgICAgICAgICAndXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbicKKyAgICAgICAgICAnICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuJworICAgICAgICAgICcgICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgZm9yIGFub3RoZXIgd2F5ICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXkgJworICAgICAgICAgICdkaWZmZXJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzICJfX2RpY3RfXyIuICBJZiAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgIiAgIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgYVxuIgorICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZSBsb29rdXAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlJ3NcbiIKKyAgICAgICAgICAiICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzcydzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkICcKKyAgICAgICAgICAnaW5zdGVhZFxuJworICAgICAgICAgICcgICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yICcKKyAgICAgICAgICAnbWFwcGluZ3NcbicKKyAgICAgICAgICAnICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuJworICAgICAgICAgICcgICBTcGVjaWFsIG1ldGhvZCBuYW1lcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4nCisgICAgICAgICAgJyAgICJfX2NsYXNzX18iIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0kvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbicKKyAgICAgICAgICAnICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4nCisgICAgICAgICAgJyAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvbixcbicKKyAgICAgICAgICAnICAgYW5kIGFsc28gIm9zLnBvcGVuKCkiLCAib3MuZmRvcGVuKCkiLCBhbmQgdGhlICJtYWtlZmlsZSgpIiAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuJworICAgICAgICAgICIgICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXInc1xuIgorICAgICAgICAgICcgICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiAnCisgICAgICAgICAgJ3RleHRcbicKKyAgICAgICAgICAnICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ludGVybmFsIHR5cGVzXG4nCisgICAgICAgICAgJyAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbicKKyAgICAgICAgICAnICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29kZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uICcKKyAgICAgICAgICAnY29kZSxcbicKKyAgICAgICAgICAnICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gJworICAgICAgICAgICdleHBsaWNpdFxuJworICAgICAgICAgICIgICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCAiCisgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICcgICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuJworICAgICAgICAgICcgICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJyAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCAnCisgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgJyAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvICcKKyAgICAgICAgICAnbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImNvX25hbWUiIGdpdmVzIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyhpbmNsdWRpbmdcbicKKyAgICAgICAgICAnICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nIGFyZ3VtZW50cyk7XG4nCisgICAgICAgICAgJyAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgJworICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgJyAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuJworICAgICAgICAgICcgICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuJworICAgICAgICAgICcgICAgICBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlczsgImNvX2NvZGUiIGlzIGEgJworICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAnICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICcKKyAgICAgICAgICAnImNvX2NvbnN0cyJcbicKKyAgICAgICAgICAnICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzICcKKyAgICAgICAgICAnY29tcGlsZWQ7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maXJzdGxpbmVubyIgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbicKKyAgICAgICAgICAnICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuJworICAgICAgICAgICcgICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4nCisgICAgICAgICAgJyAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAnZW5jb2RpbmcgYVxuJworICAgICAgICAgICcgICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciAiY29fZmxhZ3MiOiBiaXQgJworICAgICAgICAgICciMHgwNCJcbicKKyAgICAgICAgICAnICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0ICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqKmtleXdvcmRzIiBzeW50YXggdG8gYWNjZXB0ICcKKyAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuJworICAgICAgICAgICcgICAgICBnZW5lcmF0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0ICcKKyAgICAgICAgICAnZGl2aXNpb24iKVxuJworICAgICAgICAgICcgICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0ICIweDIwMDAiICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gJworICAgICAgICAgICdlbmFibGVkO1xuJworICAgICAgICAgICcgICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnICAgICAgUHl0aG9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4nCisgICAgICAgICAgJyAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGcmFtZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuJworICAgICAgICAgICcgICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgJ3N0YWNrXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4nCisgICAgICAgICAgJyAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4nCisgICAgICAgICAgJyAgICAgICJmX2J1aWx0aW5zIiBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lczsgJworICAgICAgICAgICciZl9sYXN0aSJcbicKKyAgICAgICAgICAnICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24gJworICAgICAgICAgICdqdW1wc1xuJworICAgICAgICAgICcgICAgICB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEEgJworICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICcgICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSAnCisgICAgICAgICAgJ3dyaXRpbmdcbicKKyAgICAgICAgICAnICAgICAgdG8gZl9saW5lbm8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lLmNsZWFyKClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBmcmFtZS4gIEFsc28sIGlmIHRoZSBmcmFtZSBiZWxvbmdlZCB0byBhIGdlbmVyYXRvciwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlICcKKyAgICAgICAgICAnY3ljbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgJworICAgICAgICAgICdleGVjdXRpbmcuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssICcKKyAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAnICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgJworICAgICAgICAgICdlbnRlcmVkLFxuJworICAgICAgICAgICcgICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIFRoZSB0cnkgc3RhdGVtZW50LikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSAnCisgICAgICAgICAgJ2Zvcm1hdHRlZClcbicKKyAgICAgICAgICAnICAgICAgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzICcKKyAgICAgICAgICAnaW50ZXJhY3RpdmUsXG4nCisgICAgICAgICAgJyAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgJworICAgICAgICAgICcic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgIk5vbmUiIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7ICJ0Yl9mcmFtZSIgcG9pbnRzIHRvIHRoZVxuJworICAgICAgICAgICcgICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSAnCisgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQ7ICJ0Yl9sYXN0aSIgaW5kaWNhdGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gJworICAgICAgICAgICdpblxuJworICAgICAgICAgICcgICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggJworICAgICAgICAgICdub1xuJworICAgICAgICAgICcgICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNsaWNlIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAnCisgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICcgICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiAic2xpY2UoKSJcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgJworICAgICAgICAgICcic3RvcCJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiAnCisgICAgICAgICAgJ2l0ZW1zLlxuJworICAgICAgICAgICcgICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4nCisgICAgICAgICAgJyAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuJworICAgICAgICAgICcgICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4nCisgICAgICAgICAgJyAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAnICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuJworICAgICAgICAgICcgICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCAnCisgICAgICAgICAgJ3VzdWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4nCisgICAgICAgICAgJyAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSAnCisgICAgICAgICAgJ3dyYXBwZXJcbicKKyAgICAgICAgICAnICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbicKKyAgICAgICAgICAnICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnY3JlYXRlZFxuJworICAgICAgICAgICcgICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKKyAndHlwZXNmdW5jdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgJworICAgICAgICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiAnCisgICAgICAgICAgICAgICAgICAgJyJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICBCb3RoIHN1cHBvcnQgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gKHRvIGNhbGxcbicKKyAgICAgICAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudCBvYmplY3QgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdTZWUgRnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21hcHBpbmcnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgJworICAgICAgICAgICAgICAgICAndGhlIGJ1aWx0LVxuJworICAgICAgICAgICAgICAgICAnaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAiY29sbGVjdGlvbnMiICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIkEgZGljdGlvbmFyeSdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgIgorICAgICAgICAgICAgICAgICAndGhhdCBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyaWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICdvdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICdieSBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJ2lkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAna2V5cyBvYmV5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBhcmUgZXF1YWxcbicKKyAgICAgICAgICAgICAgICAgJyhzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICdpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NvbXB1dGVycyBzdG9yZVxuJworICAgICAgICAgICAgICAgICAnZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3Vud2lzZSB0byB1c2VcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgJworICAgICAgICAgICAgICAgICAnbGlzdCBvZiAia2V5OlxuJworICAgICAgICAgICAgICAgICAndmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCAnCisgICAgICAgICAgICAgICAgICInc2pvZXJkJzpcbiIKKyAgICAgICAgICAgICAgICAgJzQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KCoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICdpcyBjcmVhdGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LCBhXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgJworICAgICAgICAgICAgICAgICAndGhlIG1hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAgICcqaXRlcmFibGUqXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSAnCisgICAgICAgICAgICAgICAgICdiZWNvbWVzIGEga2V5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgJworICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlICcKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGF0IGtleVxuJworICAgICAgICAgICAgICAgICAnICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVpclxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgJworICAgICAgICAgICAgICAgICAndmFsdWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcgICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+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+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICcKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2ludGVnZXIgYXJndW1lbnQuICBUaGUgYml0d2lzZSBpbnZlcnNpb24gb2YgIngiIGlzIGRlZmluZWQgYXNcbicKKyAgICAgICAgICAnIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0luIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCisgJ3doaWxlJzogJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0cnVlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAnaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzICcKKyAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAnYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyAnCisgICAgICAgICAgJ2JhY2tcbicKKyAgICAgICAgICAndG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCisgJ3dpdGgnOiAnXG4nCisgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxuJworICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gV2l0aCBTdGF0ZW1lbnRcbicKKyAgICAgICAgICdDb250ZXh0IE1hbmFnZXJzKS4gVGhpcyBhbGxvd3MgY29tbW9uICJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbicKKyAgICAgICAgICd1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuJworICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICJ3aXRoX2l0ZW0iKVxuJworICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbicKKyAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzICcKKyAgICAgICAgICdiZVxuJworICAgICAgICAgJyAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuJworICAgICAgICAgJyAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbicKKyAgICAgICAgICcgICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbicKKyAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4nCisgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbicKKyAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuJworICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgJworICAgICAgICAgJ3RoZVxuJworICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbicKKyAgICAgICAgICdtdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gJworICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJywKKyAneWllbGQnOiAnXG4nCisgICAgICAgICAgJ1RoZSAieWllbGQiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgInlpZWxkIiBzdGF0ZW1lbnQgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYSB5aWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb24uXG4nCisgICAgICAgICAgJ1RoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXMgdGhhdCB3b3VsZFxuJworICAgICAgICAgICdvdGhlcndpc2UgYmUgcmVxdWlyZWQgaW4gdGhlIGVxdWl2YWxlbnQgeWllbGQgZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAnRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB5aWVsZCA8ZXhwcj5cbicKKyAgICAgICAgICAnICAgeWllbGQgZnJvbSA8ZXhwcj5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2FyZSBlcXVpdmFsZW50IHRvIHRoZSB5aWVsZCBleHByZXNzaW9uIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICh5aWVsZCA8ZXhwcj4pXG4nCisgICAgICAgICAgJyAgICh5aWVsZCBmcm9tIDxleHByPilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1lpZWxkIGV4cHJlc3Npb25zIGFuZCBzdGF0ZW1lbnRzIGFyZSBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhXG4nCisgICAgICAgICAgJypnZW5lcmF0b3IqIGZ1bmN0aW9uLCBhbmQgYXJlIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgJworICAgICAgICAgICdnZW5lcmF0b3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24uICBVc2luZyB5aWVsZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byAnCisgICAgICAgICAgJ2NhdXNlXG4nCisgICAgICAgICAgJ3RoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuJworICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSBZaWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb25zXG4nCisgICAgICAgICAgJ3NlY3Rpb24uXG4nfQpkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggNGVmYmIwYS4uY2E5MGUxNCAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC04LDYgKzgsNyBAQAogICAgIC0tLS0tLS0tLQogICAgICAgICAgICBwaWNrIHJhbmRvbSBlbGVtZW50CiAgICAgICAgICAgIHBpY2sgcmFuZG9tIHNhbXBsZQorICAgICAgICAgICBwaWNrIHdlaWdodGVkIHJhbmRvbSBzYW1wbGUKICAgICAgICAgICAgZ2VuZXJhdGUgcmFuZG9tIHBlcm11dGF0aW9uCiAKICAgICBkaXN0cmlidXRpb25zIG9uIHRoZSByZWFsIGxpbmU6CkBAIC00MywxMiArNDQsMTQgQEAKIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KIGZyb20gX2NvbGxlY3Rpb25zX2FiYyBpbXBvcnQgU2V0IGFzIF9TZXQsIFNlcXVlbmNlIGFzIF9TZXF1ZW5jZQogZnJvbSBoYXNobGliIGltcG9ydCBzaGE1MTIgYXMgX3NoYTUxMgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCitpbXBvcnQgYmlzZWN0IGFzIF9iaXNlY3QKIAogX19hbGxfXyA9IFsiUmFuZG9tIiwic2VlZCIsInJhbmRvbSIsInVuaWZvcm0iLCJyYW5kaW50IiwiY2hvaWNlIiwic2FtcGxlIiwKICAgICAgICAgICAgInJhbmRyYW5nZSIsInNodWZmbGUiLCJub3JtYWx2YXJpYXRlIiwibG9nbm9ybXZhcmlhdGUiLAogICAgICAgICAgICAiZXhwb3ZhcmlhdGUiLCJ2b25taXNlc3ZhcmlhdGUiLCJnYW1tYXZhcmlhdGUiLCJ0cmlhbmd1bGFyIiwKICAgICAgICAgICAgImdhdXNzIiwiYmV0YXZhcmlhdGUiLCJwYXJldG92YXJpYXRlIiwid2VpYnVsbHZhcmlhdGUiLAotICAgICAgICAgICAiZ2V0c3RhdGUiLCJzZXRzdGF0ZSIsICJnZXRyYW5kYml0cyIsCisgICAgICAgICAgICJnZXRzdGF0ZSIsInNldHN0YXRlIiwgImdldHJhbmRiaXRzIiwgImNob2ljZXMiLAogICAgICAgICAgICAiU3lzdGVtUmFuZG9tIl0KIAogTlZfTUFHSUNDT05TVCA9IDQgKiBfZXhwKC0wLjUpL19zcXJ0KDIuMCkKQEAgLTEwNSwxNSArMTA4LDYgQEAKIAogICAgICAgICAiIiIKIAotICAgICAgICBpZiBhIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBTZWVkIHdpdGggZW5vdWdoIGJ5dGVzIHRvIHNwYW4gdGhlIDE5OTM3IGJpdAotICAgICAgICAgICAgICAgICMgc3RhdGUgc3BhY2UgZm9yIHRoZSBNZXJzZW5uZSBUd2lzdGVyCi0gICAgICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKF91cmFuZG9tKDI1MDApLCAnYmlnJykKLSAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgICAgICAgICAgYSA9IGludCh0aW1lLnRpbWUoKSAqIDI1NikgIyB1c2UgZnJhY3Rpb25hbCBzZWNvbmRzCi0KICAgICAgICAgaWYgdmVyc2lvbiA9PSAxIGFuZCBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzKSk6CiAgICAgICAgICAgICB4ID0gb3JkKGFbMF0pIDw8IDcgaWYgYSBlbHNlIDAKICAgICAgICAgICAgIGZvciBjIGluIGE6CkBAIC0xMjEsMTIgKzExNSwxMSBAQAogICAgICAgICAgICAgeCBePSBsZW4oYSkKICAgICAgICAgICAgIGEgPSAtMiBpZiB4ID09IC0xIGVsc2UgeAogCi0gICAgICAgIGlmIHZlcnNpb24gPT0gMjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSkpOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKLSAgICAgICAgICAgICAgICBhICs9IF9zaGE1MTIoYSkuZGlnZXN0KCkKLSAgICAgICAgICAgICAgICBhID0gaW50LmZyb21fYnl0ZXMoYSwgJ2JpZycpCisgICAgICAgIGlmIHZlcnNpb24gPT0gMiBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6CisgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKKyAgICAgICAgICAgIGEgKz0gX3NoYTUxMihhKS5kaWdlc3QoKQorICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEsICdiaWcnKQogCiAgICAgICAgIHN1cGVyKCkuc2VlZChhKQogICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBOb25lCkBAIC0zNDQsNiArMzM3LDI4IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gcG9wdWxhdGlvbltqXQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgY2hvaWNlcyhzZWxmLCBwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSk6CisgICAgICAgICIiIlJldHVybiBhIGsgc2l6ZWQgbGlzdCBvZiBwb3B1bGF0aW9uIGVsZW1lbnRzIGNob3NlbiB3aXRoIHJlcGxhY2VtZW50LgorCisgICAgICAgIElmIHRoZSByZWxhdGl2ZSB3ZWlnaHRzIG9yIGN1bXVsYXRpdmUgd2VpZ2h0cyBhcmUgbm90IHNwZWNpZmllZCwKKyAgICAgICAgdGhlIHNlbGVjdGlvbnMgYXJlIG1hZGUgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFuZG9tID0gc2VsZi5yYW5kb20KKyAgICAgICAgaWYgY3VtX3dlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHdlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBfaW50ID0gaW50CisgICAgICAgICAgICAgICAgdG90YWwgPSBsZW4ocG9wdWxhdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bX2ludChyYW5kb20oKSAqIHRvdGFsKV0gZm9yIGkgaW4gcmFuZ2UoayldCisgICAgICAgICAgICBjdW1fd2VpZ2h0cyA9IGxpc3QoX2l0ZXJ0b29scy5hY2N1bXVsYXRlKHdlaWdodHMpKQorICAgICAgICBlbGlmIHdlaWdodHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0Nhbm5vdCBzcGVjaWZ5IGJvdGggd2VpZ2h0cyBhbmQgY3VtdWxhdGl2ZSB3ZWlnaHRzJykKKyAgICAgICAgaWYgbGVuKGN1bV93ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGUgbnVtYmVyIG9mIHdlaWdodHMgZG9lcyBub3QgbWF0Y2ggdGhlIHBvcHVsYXRpb24nKQorICAgICAgICBiaXNlY3QgPSBfYmlzZWN0LmJpc2VjdAorICAgICAgICB0b3RhbCA9IGN1bV93ZWlnaHRzWy0xXQorICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bYmlzZWN0KGN1bV93ZWlnaHRzLCByYW5kb20oKSAqIHRvdGFsKV0gZm9yIGkgaW4gcmFuZ2UoayldCisKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIHJlYWwtdmFsdWVkIGRpc3RyaWJ1dGlvbnMgIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gdW5pZm9ybSBkaXN0cmlidXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjE1LDExICs2MzAsMTEgQEAKIAogICAgICAgICAjIFRoaXMgdmVyc2lvbiBkdWUgdG8gSmFubmUgU2lua2tvbmVuLCBhbmQgbWF0Y2hlcyBhbGwgdGhlIHN0ZAogICAgICAgICAjIHRleHRzIChlLmcuLCBLbnV0aCBWb2wgMiBFZCAzIHBnIDEzNCAidGhlIGJldGEgZGlzdHJpYnV0aW9uIikuCi0gICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4pCisgICAgICAgIHkgPSBzZWxmLmdhbW1hdmFyaWF0ZShhbHBoYSwgMS4wKQogICAgICAgICBpZiB5ID09IDA6CiAgICAgICAgICAgICByZXR1cm4gMC4wCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4pKQorICAgICAgICAgICAgcmV0dXJuIHkgLyAoeSArIHNlbGYuZ2FtbWF2YXJpYXRlKGJldGEsIDEuMCkpCiAKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tIFBhcmV0byAtLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC03MzQsNiArNzQ5LDcgQEAKIHJhbmRyYW5nZSA9IF9pbnN0LnJhbmRyYW5nZQogc2FtcGxlID0gX2luc3Quc2FtcGxlCiBzaHVmZmxlID0gX2luc3Quc2h1ZmZsZQorY2hvaWNlcyA9IF9pbnN0LmNob2ljZXMKIG5vcm1hbHZhcmlhdGUgPSBfaW5zdC5ub3JtYWx2YXJpYXRlCiBsb2dub3JtdmFyaWF0ZSA9IF9pbnN0LmxvZ25vcm12YXJpYXRlCiBleHBvdmFyaWF0ZSA9IF9pbnN0LmV4cG92YXJpYXRlCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggZGRlODkwMS4uZDMyMWNmZiAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMTE5LDkgKzExOSwxMCBAQAogCiAiIiIKIAotaW1wb3J0IHN5cworaW1wb3J0IGVudW0KIGltcG9ydCBzcmVfY29tcGlsZQogaW1wb3J0IHNyZV9wYXJzZQoraW1wb3J0IGZ1bmN0b29scwogdHJ5OgogICAgIGltcG9ydCBfbG9jYWxlCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0xMzgsMTggKzEzOSwyNiBAQAogCiBfX3ZlcnNpb25fXyA9ICIyLjIuMSIKIAotIyBmbGFncwotQSA9IEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKLUkgPSBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCi1MID0gTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCi1VID0gVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgotTSA9IE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCi1TID0gRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQotWCA9IFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCi0KLSMgc3JlIGV4dGVuc2lvbnMgKGV4cGVyaW1lbnRhbCwgZG9uJ3QgcmVseSBvbiB0aGVzZSkKLVQgPSBURU1QTEFURSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1RFTVBMQVRFICMgZGlzYWJsZSBiYWNrdHJhY2tpbmcKLURFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2NsYXNzIFJlZ2V4RmxhZyhlbnVtLkludEZsYWcpOgorICAgIEFTQ0lJID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfQVNDSUkgIyBhc3N1bWUgYXNjaWkgImxvY2FsZSIKKyAgICBJR05PUkVDQVNFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfSUdOT1JFQ0FTRSAjIGlnbm9yZSBjYXNlCisgICAgTE9DQUxFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTE9DQUxFICMgYXNzdW1lIGN1cnJlbnQgOC1iaXQgbG9jYWxlCisgICAgVU5JQ09ERSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1VOSUNPREUgIyBhc3N1bWUgdW5pY29kZSAibG9jYWxlIgorICAgIE1VTFRJTElORSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX01VTFRJTElORSAjIG1ha2UgYW5jaG9ycyBsb29rIGZvciBuZXdsaW5lCisgICAgRE9UQUxMID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfRE9UQUxMICMgbWFrZSBkb3QgbWF0Y2ggbmV3bGluZQorICAgIFZFUkJPU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19WRVJCT1NFICMgaWdub3JlIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCisgICAgQSA9IEFTQ0lJCisgICAgSSA9IElHTk9SRUNBU0UKKyAgICBMID0gTE9DQUxFCisgICAgVSA9IFVOSUNPREUKKyAgICBNID0gTVVMVElMSU5FCisgICAgUyA9IERPVEFMTAorICAgIFggPSBWRVJCT1NFCisgICAgIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQorICAgIFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZworICAgIFQgPSBURU1QTEFURQorICAgIERFQlVHID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfREVCVUcgIyBkdW1wIHBhdHRlcm4gYWZ0ZXIgY29tcGlsYXRpb24KK2dsb2JhbHMoKS51cGRhdGUoUmVnZXhGbGFnLl9fbWVtYmVyc19fKQogCiAjIHNyZSBleGNlcHRpb24KIGVycm9yID0gc3JlX2NvbXBpbGUuZXJyb3IKQEAgLTIyNiw3ICsyMzUsNyBAQAogZGVmIHB1cmdlKCk6CiAgICAgIkNsZWFyIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gY2FjaGVzIgogICAgIF9jYWNoZS5jbGVhcigpCi0gICAgX2NhY2hlX3JlcGwuY2xlYXIoKQorICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CiAgICAgIkNvbXBpbGUgYSB0ZW1wbGF0ZSBwYXR0ZXJuLCByZXR1cm5pbmcgYSBwYXR0ZXJuIG9iamVjdCIKQEAgLTI3MCw3ICsyNzksNiBAQAogIyBpbnRlcm5hbHMKIAogX2NhY2hlID0ge30KLV9jYWNoZV9yZXBsID0ge30KIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKQEAgLTMwMywxNyArMzExLDEwIEBACiAgICAgICAgIF9jYWNoZVt0eXBlKHBhdHRlcm4pLCBwYXR0ZXJuLCBmbGFnc10gPSBwLCBsb2MKICAgICByZXR1cm4gcAogCitAZnVuY3Rvb2xzLmxydV9jYWNoZShfTUFYQ0FDSEUpCiBkZWYgX2NvbXBpbGVfcmVwbChyZXBsLCBwYXR0ZXJuKToKICAgICAjIGludGVybmFsOiBjb21waWxlIHJlcGxhY2VtZW50IHBhdHRlcm4KLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBfY2FjaGVfcmVwbFtyZXBsLCBwYXR0ZXJuXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIHAgPSBzcmVfcGFyc2UucGFyc2VfdGVtcGxhdGUocmVwbCwgcGF0dGVybikKLSAgICBpZiBsZW4oX2NhY2hlX3JlcGwpID49IF9NQVhDQUNIRToKLSAgICAgICAgX2NhY2hlX3JlcGwuY2xlYXIoKQotICAgIF9jYWNoZV9yZXBsW3JlcGwsIHBhdHRlcm5dID0gcAotICAgIHJldHVybiBwCisgICAgcmV0dXJuIHNyZV9wYXJzZS5wYXJzZV90ZW1wbGF0ZShyZXBsLCBwYXR0ZXJuKQogCiBkZWYgX2V4cGFuZChwYXR0ZXJuLCBtYXRjaCwgdGVtcGxhdGUpOgogICAgICMgaW50ZXJuYWw6IG1hdGNoLmV4cGFuZCBpbXBsZW1lbnRhdGlvbiBob29rCkBAIC0zNTMsNyArMzU0LDcgQEAKICAgICAgICAgZm9yIHBocmFzZSwgYWN0aW9uIGluIGxleGljb246CiAgICAgICAgICAgICBnaWQgPSBzLm9wZW5ncm91cCgpCiAgICAgICAgICAgICBwLmFwcGVuZChzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbCi0gICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAorICAgICAgICAgICAgICAgIChTVUJQQVRURVJOLCAoZ2lkLCAwLCAwLCBzcmVfcGFyc2UucGFyc2UocGhyYXNlLCBmbGFncykpKSwKICAgICAgICAgICAgICAgICBdKSkKICAgICAgICAgICAgIHMuY2xvc2Vncm91cChnaWQsIHBbLTFdKQogICAgICAgICBwID0gc3JlX3BhcnNlLlN1YlBhdHRlcm4ocywgWyhCUkFOQ0gsIChOb25lLCBwKSldKQpkaWZmIC0tZ2l0IGEvTGliL3JsY29tcGxldGVyLnB5IGIvTGliL3JsY29tcGxldGVyLnB5CmluZGV4IDQwMWE2MjYuLmJjYTRhN2IgMTAwNjQ0Ci0tLSBhL0xpYi9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvcmxjb21wbGV0ZXIucHkKQEAgLTExMyw2ICsxMTMsMTIgQEAKICAgICAgICAgZm9yIHdvcmQgaW4ga2V5d29yZC5rd2xpc3Q6CiAgICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSB0ZXh0OgogICAgICAgICAgICAgICAgIHNlZW4uYWRkKHdvcmQpCisgICAgICAgICAgICAgICAgaWYgd29yZCBpbiB7J2ZpbmFsbHknLCAndHJ5J306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJzonCisgICAgICAgICAgICAgICAgZWxpZiB3b3JkIG5vdCBpbiB7J0ZhbHNlJywgJ05vbmUnLCAnVHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JyZWFrJywgJ2NvbnRpbnVlJywgJ3Bhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbHNlJ306CisgICAgICAgICAgICAgICAgICAgIHdvcmQgPSB3b3JkICsgJyAnCiAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKICAgICAgICAgZm9yIG5zcGFjZSBpbiBbc2VsZi5uYW1lc3BhY2UsIGJ1aWx0aW5zLl9fZGljdF9fXToKICAgICAgICAgICAgIGZvciB3b3JkLCB2YWwgaW4gbnNwYWNlLml0ZW1zKCk6CkBAIC0xNTIsMTQgKzE1OCwzMCBAQAogICAgICAgICAgICAgd29yZHMudXBkYXRlKGdldF9jbGFzc19tZW1iZXJzKHRoaXNvYmplY3QuX19jbGFzc19fKSkKICAgICAgICAgbWF0Y2hlcyA9IFtdCiAgICAgICAgIG4gPSBsZW4oYXR0cikKLSAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6Ci0gICAgICAgICAgICBpZiB3b3JkWzpuXSA9PSBhdHRyOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdmFsID0gZ2V0YXR0cih0aGlzb2JqZWN0LCB3b3JkKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICAjIEV4Y2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBub3Qgc2V0Ci0gICAgICAgICAgICAgICAgd29yZCA9IHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCAiJXMuJXMiICUgKGV4cHIsIHdvcmQpKQotICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKHdvcmQpCisgICAgICAgIGlmIGF0dHIgPT0gJyc6CisgICAgICAgICAgICBub3ByZWZpeCA9ICdfJworICAgICAgICBlbGlmIGF0dHIgPT0gJ18nOgorICAgICAgICAgICAgbm9wcmVmaXggPSAnX18nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB3b3JkIGluIHdvcmRzOgorICAgICAgICAgICAgICAgIGlmICh3b3JkWzpuXSA9PSBhdHRyIGFuZAorICAgICAgICAgICAgICAgICAgICBub3QgKG5vcHJlZml4IGFuZCB3b3JkWzpuKzFdID09IG5vcHJlZml4KSk6CisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gIiVzLiVzIiAlIChleHByLCB3b3JkKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHRoaXNvYmplY3QsIHdvcmQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICAjIEluY2x1ZGUgZXZlbiBpZiBhdHRyaWJ1dGUgbm90IHNldAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLl9jYWxsYWJsZV9wb3N0Zml4KHZhbCwgbWF0Y2gpCisgICAgICAgICAgICAgICAgICAgIG1hdGNoZXMuYXBwZW5kKG1hdGNoKQorICAgICAgICAgICAgaWYgbWF0Y2hlcyBvciBub3Qgbm9wcmVmaXg6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vcHJlZml4ID09ICdfJzoKKyAgICAgICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbm9wcmVmaXggPSBOb25lCiAgICAgICAgIG1hdGNoZXMuc29ydCgpCiAgICAgICAgIHJldHVybiBtYXRjaGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBiNDc2NDhkLi4zZDhjMDExIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC0yMywxMSArMjMsNiBAQAogaGFzIGFub3RoZXIgd2F5IHRvIHJlZmVyZW5jZSBwcml2YXRlIGRhdGEgKGJlc2lkZXMgZ2xvYmFsIHZhcmlhYmxlcykuCiAiIiIKIAotIyBYWFggVGhlIHRpbWVmdW5jIGFuZCBkZWxheWZ1bmMgc2hvdWxkIGhhdmUgYmVlbiBkZWZpbmVkIGFzIG1ldGhvZHMKLSMgWFhYIHNvIHlvdSBjYW4gZGVmaW5lIG5ldyBraW5kcyBvZiBzY2hlZHVsZXJzIHVzaW5nIHN1YmNsYXNzaW5nCi0jIFhYWCBpbnN0ZWFkIG9mIGhhdmluZyB0byBkZWZpbmUgYSBtb2R1bGUgb3IgY2xhc3MganVzdCB0byBob2xkCi0jIFhYWCB0aGUgZ2xvYmFsIHN0YXRlIG9mIHlvdXIgcGFydGljdWxhciB0aW1lIGFuZCBkZWxheSBmdW5jdGlvbnMuCi0KIGltcG9ydCB0aW1lCiBpbXBvcnQgaGVhcHEKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKQEAgLTQwLDEyICszNSwyNCBAQAogX19hbGxfXyA9IFsic2NoZWR1bGVyIl0KIAogY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncycpKToKKyAgICBfX3Nsb3RzX18gPSBbXQogICAgIGRlZiBfX2VxX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA9PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2x0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2xlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA8PSAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2d0X18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+ICAoby50aW1lLCBvLnByaW9yaXR5KQogICAgIGRlZiBfX2dlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+PSAoby50aW1lLCBvLnByaW9yaXR5KQogCitFdmVudC50aW1lLl9fZG9jX18gPSAoJycnTnVtZXJpYyB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQordGltZWZ1bmMgZnVuY3Rpb24gcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4nJycpCitFdmVudC5wcmlvcml0eS5fX2RvY19fID0gKCcnJ0V2ZW50cyBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lIHRpbWUgd2lsbCBiZSBleGVjdXRlZAoraW4gdGhlIG9yZGVyIG9mIHRoZWlyIHByaW9yaXR5LicnJykKK0V2ZW50LmFjdGlvbi5fX2RvY19fID0gKCcnJ0V4ZWN1dGluZyB0aGUgZXZlbnQgbWVhbnMgZXhlY3V0aW5nCithY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncyknJycpCitFdmVudC5hcmd1bWVudC5fX2RvY19fID0gKCcnJ2FyZ3VtZW50IGlzIGEgc2VxdWVuY2UgaG9sZGluZyB0aGUgcG9zaXRpb25hbAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKK0V2ZW50Lmt3YXJncy5fX2RvY19fID0gKCcnJ2t3YXJncyBpcyBhIGRpY3Rpb25hcnkgaG9sZGluZyB0aGUga2V5d29yZAorYXJndW1lbnRzIGZvciB0aGUgYWN0aW9uLicnJykKKwogX3NlbnRpbmVsID0gb2JqZWN0KCkKIAogY2xhc3Mgc2NoZWR1bGVyOgpkaWZmIC0tZ2l0IGEvTGliL3NlY3JldHMucHkgYi9MaWIvc2VjcmV0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ZhNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3NlY3JldHMucHkKQEAgLTAsMCArMSw3MSBAQAorIiIiR2VuZXJhdGUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gbnVtYmVycyBzdWl0YWJsZSBmb3IKK21hbmFnaW5nIHNlY3JldHMgc3VjaCBhcyBhY2NvdW50IGF1dGhlbnRpY2F0aW9uLCB0b2tlbnMsIGFuZCBzaW1pbGFyLgorCitTZWUgUEVQIDUwNiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK2h0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA1MDYvCisKKyIiIgorCitfX2FsbF9fID0gWydjaG9pY2UnLCAncmFuZGJlbG93JywgJ3JhbmRiaXRzJywgJ1N5c3RlbVJhbmRvbScsCisgICAgICAgICAgICd0b2tlbl9ieXRlcycsICd0b2tlbl9oZXgnLCAndG9rZW5fdXJsc2FmZScsCisgICAgICAgICAgICdjb21wYXJlX2RpZ2VzdCcsCisgICAgICAgICAgIF0KKworCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgYmluYXNjaWkKK2ltcG9ydCBvcworCitmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0Citmcm9tIHJhbmRvbSBpbXBvcnQgU3lzdGVtUmFuZG9tCisKK19zeXNyYW5kID0gU3lzdGVtUmFuZG9tKCkKKworcmFuZGJpdHMgPSBfc3lzcmFuZC5nZXRyYW5kYml0cworY2hvaWNlID0gX3N5c3JhbmQuY2hvaWNlCisKK2RlZiByYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gaW50IGluIHRoZSByYW5nZSBbMCwgbikuIiIiCisgICAgcmV0dXJuIF9zeXNyYW5kLl9yYW5kYmVsb3coZXhjbHVzaXZlX3VwcGVyX2JvdW5kKQorCitERUZBVUxUX0VOVFJPUFkgPSAzMiAgIyBudW1iZXIgb2YgYnl0ZXMgdG8gcmV0dXJuIGJ5IGRlZmF1bHQKKworZGVmIHRva2VuX2J5dGVzKG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBieXRlcy4KKworICAgIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCisgICAgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICBiJ1xceGViclxceDE3RCp0XFx4YWVcXHhkNFxceGUzU1xceGI2XFx4ZTJcXHhlYlAxXFx4OGInCisKKyAgICAiIiIKKyAgICBpZiBuYnl0ZXMgaXMgTm9uZToKKyAgICAgICAgbmJ5dGVzID0gREVGQVVMVF9FTlRST1BZCisgICAgcmV0dXJuIG9zLnVyYW5kb20obmJ5dGVzKQorCitkZWYgdG9rZW5faGV4KG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLgorCisgICAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyogcmFuZG9tIGJ5dGVzLCBlYWNoIGJ5dGUgY29udmVydGVkIHRvIHR3bworICAgIGhleCBkaWdpdHMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZQorICAgIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl9oZXgoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworICAgICIiIgorICAgIHJldHVybiBiaW5hc2NpaS5oZXhsaWZ5KHRva2VuX2J5dGVzKG5ieXRlcykpLmRlY29kZSgnYXNjaWknKQorCitkZWYgdG9rZW5fdXJsc2FmZShuYnl0ZXM9Tm9uZSk6CisgICAgIiIiUmV0dXJuIGEgcmFuZG9tIFVSTC1zYWZlIHRleHQgc3RyaW5nLCBpbiBCYXNlNjQgZW5jb2RpbmcuCisKKyAgICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKiByYW5kb20gYnl0ZXMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYAorICAgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgID4+PiB0b2tlbl91cmxzYWZlKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAnRHJtaHplNkVQY3YwZk5fODFCai1uQScKKworICAgICIiIgorICAgIHRvayA9IHRva2VuX2J5dGVzKG5ieXRlcykKKyAgICByZXR1cm4gYmFzZTY0LnVybHNhZmVfYjY0ZW5jb2RlKHRvaykucnN0cmlwKGInPScpLmRlY29kZSgnYXNjaWknKQpkaWZmIC0tZ2l0IGEvTGliL3NobGV4LnB5IGIvTGliL3NobGV4LnB5CmluZGV4IGVjZDJlZmQuLmU4NzI2NmYgMTAwNjQ0Ci0tLSBhL0xpYi9zaGxleC5weQorKysgYi9MaWIvc2hsZXgucHkKQEAgLTUsNiArNSw3IEBACiAjIHB1c2hfc291cmNlKCkgYW5kIHBvcF9zb3VyY2UoKSBtYWRlIGV4cGxpY2l0IGJ5IEVTUiwgSmFudWFyeSAyMDAxLgogIyBQb3NpeCBjb21wbGlhbmNlLCBzcGxpdCgpLCBzdHJpbmcgYXJndW1lbnRzLCBhbmQKICMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCisjIGNoYW5nZXMgdG8gdG9rZW5pemUgbW9yZSBsaWtlIFBvc2l4IHNoZWxscyBieSBWaW5heSBTYWppcCwgSnVseSAyMDE2LgogCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMTcsNyArMTgsOCBAQAogCiBjbGFzcyBzaGxleDoKICAgICAiQSBsZXhpY2FsIGFuYWx5emVyIGNsYXNzIGZvciBzaW1wbGUgc2hlbGwtbGlrZSBzeW50YXhlcy4iCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpOgogICAgICAgICBpZiBpc2luc3RhbmNlKGluc3RyZWFtLCBzdHIpOgogICAgICAgICAgICAgaW5zdHJlYW0gPSBTdHJpbmdJTyhpbnN0cmVhbSkKICAgICAgICAgaWYgaW5zdHJlYW0gaXMgbm90IE5vbmU6CkBAIC00OSw2ICs1MSwxOSBAQAogICAgICAgICBzZWxmLnRva2VuID0gJycKICAgICAgICAgc2VsZi5maWxlc3RhY2sgPSBkZXF1ZSgpCiAgICAgICAgIHNlbGYuc291cmNlID0gTm9uZQorICAgICAgICBpZiBub3QgcHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycyA9ICcnCisgICAgICAgIGVsaWYgcHVuY3R1YXRpb25fY2hhcnMgaXMgVHJ1ZToKKyAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJygpOzw+fCYnCisgICAgICAgIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgPSBwdW5jdHVhdGlvbl9jaGFycworICAgICAgICBpZiBwdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICMgX3B1c2hiYWNrX2NoYXJzIGlzIGEgcHVzaCBiYWNrIHF1ZXVlIHVzZWQgYnkgbG9va2FoZWFkIGxvZ2ljCisgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycyA9IGRlcXVlKCkKKyAgICAgICAgICAgICMgdGhlc2UgY2hhcnMgYWRkZWQgYmVjYXVzZSBhbGxvd2VkIGluIGZpbGUgbmFtZXMsIGFyZ3MsIHdpbGRjYXJkcworICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgKz0gJ34tLi8qPz0nCisgICAgICAgICAgICAjcmVtb3ZlIGFueSBwdW5jdHVhdGlvbiBjaGFycyBmcm9tIHdvcmRjaGFycworICAgICAgICAgICAgdCA9IHNlbGYud29yZGNoYXJzLm1ha2V0cmFucyhkaWN0LmZyb21rZXlzKHB1bmN0dWF0aW9uX2NoYXJzKSkKKyAgICAgICAgICAgIHNlbGYud29yZGNoYXJzID0gc2VsZi53b3JkY2hhcnMudHJhbnNsYXRlKHQpCiAKICAgICBkZWYgcHVzaF90b2tlbihzZWxmLCB0b2spOgogICAgICAgICAiUHVzaCBhIHRva2VuIG9udG8gdGhlIHN0YWNrIHBvcHBlZCBieSB0aGUgZ2V0X3Rva2VuIG1ldGhvZCIKQEAgLTExNSwxMiArMTMwLDE1IEBACiAgICAgICAgIHF1b3RlZCA9IEZhbHNlCiAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICcgJwogICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKKyAgICAgICAgICAgIGlmIHNlbGYucHVuY3R1YXRpb25fY2hhcnMgYW5kIHNlbGYuX3B1c2hiYWNrX2NoYXJzOgorICAgICAgICAgICAgICAgIG5leHRjaGFyID0gc2VsZi5fcHVzaGJhY2tfY2hhcnMucG9wKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLmluc3RyZWFtLnJlYWQoMSkKICAgICAgICAgICAgIGlmIG5leHRjaGFyID09ICdcbic6Ci0gICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDM6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBpbiBzdGF0ZSIsIHJlcHIoc2VsZi5zdGF0ZSksIFwKLSAgICAgICAgICAgICAgICAgICAgICAiSSBzZWUgY2hhcmFjdGVyOiIsIHJlcHIobmV4dGNoYXIpKQorICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogaW4gc3RhdGUgJXIgSSBzZWUgY2hhcmFjdGVyOiAlciIgJSAoc2VsZi5zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGFyKSkKICAgICAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gJycgICAgICAgICMgcGFzdCBlbmQgb2YgZmlsZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMzcsMTMgKzE1NSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYuY29tbWVudGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnN0cmVhbS5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKKyAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2MnCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlczoKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKQEAgLTE2NiwxNyArMTg3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGNsb3NpbmcgcXVvdGF0aW9uIikKICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciA9PSBzZWxmLnN0YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wb3NpeDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJ2EnCi0gICAgICAgICAgICAgICAgZWxpZiBzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZSBhbmQgXAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSBpbiBzZWxmLmVzY2FwZWRxdW90ZXM6CisgICAgICAgICAgICAgICAgZWxpZiAoc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGUgYW5kIHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLmVzY2FwZWRxdW90ZXMpOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSBzZWxmLnN0YXRlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBzZWxmLnRva2VuICsgbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjogICAgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKQEAgLTE4NSwxMiArMjA2LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk5vIGVzY2FwZWQgY2hhcmFjdGVyIikKICAgICAgICAgICAgICAgICAjIEluIHBvc2l4IHNoZWxscywgb25seSB0aGUgcXVvdGUgaXRzZWxmIG9yIHRoZSBlc2NhcGUKICAgICAgICAgICAgICAgICAjIGNoYXJhY3RlciBtYXkgYmUgZXNjYXBlZCB3aXRoaW4gcXVvdGVzLgotICAgICAgICAgICAgICAgIGlmIGVzY2FwZWRzdGF0ZSBpbiBzZWxmLnF1b3RlcyBhbmQgXAotICAgICAgICAgICAgICAgICAgIG5leHRjaGFyICE9IHNlbGYuc3RhdGUgYW5kIG5leHRjaGFyICE9IGVzY2FwZWRzdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBzZWxmLnN0YXRlCi0gICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGlmIChlc2NhcGVkc3RhdGUgaW4gc2VsZi5xdW90ZXMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Y2hhciAhPSBzZWxmLnN0YXRlIGFuZCBuZXh0Y2hhciAhPSBlc2NhcGVkc3RhdGUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IHNlbGYuc3RhdGUKKyAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IGVzY2FwZWRzdGF0ZQotICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09ICdhJzoKKyAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSBpbiAoJ2EnLCAnYycpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBuZXh0Y2hhcjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IE5vbmUgICAjIGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0yMDQsNyArMjI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLmNvbW1lbnRlcnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5zdHJlYW0ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyArPSAxCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucG9zaXg6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnRva2VuIG9yIChzZWxmLnBvc2l4IGFuZCBxdW90ZWQpOgpAQCAtMjE2LDExICsyMzcsMjIgQEAKICAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlOgogICAgICAgICAgICAgICAgICAgICBlc2NhcGVkc3RhdGUgPSAnYScKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCi0gICAgICAgICAgICAgICAgZWxpZiBuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFycyBvciBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlcyBcCi0gICAgICAgICAgICAgICAgICAgIG9yIHNlbGYud2hpdGVzcGFjZV9zcGxpdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5zdGF0ZSA9PSAnYyc6CisgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIGluIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXh0Y2hhciBub3QgaW4gc2VsZi53aGl0ZXNwYWNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzLmFwcGVuZChuZXh0Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxpZiAobmV4dGNoYXIgaW4gc2VsZi53b3JkY2hhcnMgb3IgbmV4dGNoYXIgaW4gc2VsZi5xdW90ZXMKKyAgICAgICAgICAgICAgICAgICAgICBvciBzZWxmLndoaXRlc3BhY2Vfc3BsaXQpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMuYXBwZW5kKG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXNoYmFjay5hcHBlbmRsZWZ0KG5leHRjaGFyKQogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnID49IDI6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IEkgc2VlIHB1bmN0dWF0aW9uIGluIHdvcmQgc3RhdGUiKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gJyAnCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCA2Y2Y4OGQ5Li45MGI3MTk4IDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTk3NSw2ICs5NzUsOSBAQAogCiAgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQogICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZS50b3RhbC5fX2RvY19fID0gJ1RvdGFsIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLnVzZWQuX19kb2NfXyA9ICdVc2VkIHNwYWNlIGluIGJ5dGVzJworICAgIF9udHVwbGVfZGlza3VzYWdlLmZyZWUuX19kb2NfXyA9ICdGcmVlIHNwYWNlIGluIGJ5dGVzJwogCiAgICAgZGVmIGRpc2tfdXNhZ2UocGF0aCk6CiAgICAgICAgICIiIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGguCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0IGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzNmNjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3NpdGUtcGFja2FnZXMvUkVBRE1FLnR4dApAQCAtMCwwICsxLDIgQEAKK1RoaXMgZGlyZWN0b3J5IGV4aXN0cyBzbyB0aGF0IDNyZCBwYXJ0eSBwYWNrYWdlcyBjYW4gYmUgaW5zdGFsbGVkCitoZXJlLiAgUmVhZCB0aGUgc291cmNlIGZvciBzaXRlLnB5IGZvciBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9MaWIvc2l0ZS5weSBiL0xpYi9zaXRlLnB5CmluZGV4IDNmNzhlZjUuLjBmYzkyMDAgMTAwNjQ0Ci0tLSBhL0xpYi9zaXRlLnB5CisrKyBiL0xpYi9zaXRlLnB5CkBAIC02MCw3ICs2MCw4IEBACiAKIFRoZSByZWFkbGluZSBtb2R1bGUgaXMgYWxzbyBhdXRvbWF0aWNhbGx5IGNvbmZpZ3VyZWQgdG8gZW5hYmxlCiBjb21wbGV0aW9uIGZvciBzeXN0ZW1zIHRoYXQgc3VwcG9ydCBpdC4gIFRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gaW4KLXNpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4KK3NpdGVjdXN0b21pemUsIHVzZXJjdXN0b21pemUgb3IgUFlUSE9OU1RBUlRVUC4gIFN0YXJ0aW5nIFB5dGhvbiBpbgoraXNvbGF0ZWQgbW9kZSAoLUkpIGRpc2FibGVzIGF1dG9tYXRpYyByZWFkbGluZSBjb25maWd1cmF0aW9uLgogCiBBZnRlciB0aGVzZSBvcGVyYXRpb25zLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gaW1wb3J0IGEgbW9kdWxlCiBuYW1lZCBzaXRlY3VzdG9taXplLCB3aGljaCBjYW4gcGVyZm9ybSBhcmJpdHJhcnkgYWRkaXRpb25hbApAQCAtMTMxLDEzICsxMzIsMTMgQEAKIAogCiBkZWYgX2luaXRfcGF0aGluZm8oKToKLSAgICAiIiJSZXR1cm4gYSBzZXQgY29udGFpbmluZyBhbGwgZXhpc3RpbmcgZGlyZWN0b3J5IGVudHJpZXMgZnJvbSBzeXMucGF0aCIiIgorICAgICIiIlJldHVybiBhIHNldCBjb250YWluaW5nIGFsbCBleGlzdGluZyBmaWxlIHN5c3RlbSBpdGVtcyBmcm9tIHN5cy5wYXRoLiIiIgogICAgIGQgPSBzZXQoKQotICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CisgICAgZm9yIGl0ZW0gaW4gc3lzLnBhdGg6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZGlyKToKLSAgICAgICAgICAgICAgICBkaXIsIGRpcmNhc2UgPSBtYWtlcGF0aChkaXIpCi0gICAgICAgICAgICAgICAgZC5hZGQoZGlyY2FzZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGl0ZW0pOgorICAgICAgICAgICAgICAgIF8sIGl0ZW1jYXNlID0gbWFrZXBhdGgoaXRlbSkKKyAgICAgICAgICAgICAgICBkLmFkZChpdGVtY2FzZSkKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgcmV0dXJuIGQKQEAgLTE1MCw5ICsxNTEsOSBAQAogICAgICIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBmdWxsbmFtZSA9IG9zLnBhdGguam9pbihzaXRlZGlyLCBuYW1lKQogICAgIHRyeToKICAgICAgICAgZiA9IG9wZW4oZnVsbG5hbWUsICJyIikKQEAgLTE5MCw5ICsxOTEsOSBAQAogICAgICdzaXRlZGlyJyIiIgogICAgIGlmIGtub3duX3BhdGhzIGlzIE5vbmU6CiAgICAgICAgIGtub3duX3BhdGhzID0gX2luaXRfcGF0aGluZm8oKQotICAgICAgICByZXNldCA9IDEKKyAgICAgICAgcmVzZXQgPSBUcnVlCiAgICAgZWxzZToKLSAgICAgICAgcmVzZXQgPSAwCisgICAgICAgIHJlc2V0ID0gRmFsc2UKICAgICBzaXRlZGlyLCBzaXRlZGlyY2FzZSA9IG1ha2VwYXRoKHNpdGVkaXIpCiAgICAgaWYgbm90IHNpdGVkaXJjYXNlIGluIGtub3duX3BhdGhzOgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2l0ZWRpcikgICAgICAgICMgQWRkIHBhdGggY29tcG9uZW50CkBAIC0zMDQsNyArMzA1LDcgQEAKIAogICAgICAgICBpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uJWQuJWQiICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocHJlZml4KQpAQCAtMzE3LDcgKzMxOCw3IEBACiAgICAgICAgICAgICBpZiBmcmFtZXdvcms6CiAgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbigiL0xpYnJhcnkiLCBmcmFtZXdvcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdLCAic2l0ZS1wYWNrYWdlcyIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwgInNpdGUtcGFja2FnZXMiKSkKICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCiAKIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgpAQCAtMzM1LDkgKzMzNiw3IEBACiAgICAgVGhlIHJlcHIgb2YgZWFjaCBvYmplY3QgY29udGFpbnMgYSBoaW50IGF0IGhvdyBpdCB3b3Jrcy4KIAogICAgICIiIgotICAgIGlmIG9zLnNlcCA9PSAnOic6Ci0gICAgICAgIGVvZiA9ICdDbWQtUScKLSAgICBlbGlmIG9zLnNlcCA9PSAnXFwnOgorICAgIGlmIG9zLnNlcCA9PSAnXFwnOgogICAgICAgICBlb2YgPSAnQ3RybC1aIHBsdXMgUmV0dXJuJwogICAgIGVsc2U6CiAgICAgICAgIGVvZiA9ICdDdHJsLUQgKGkuZS4gRU9GKScKQEAgLTQyMywyMyArNDIyLDYgQEAKIAogICAgIHN5cy5fX2ludGVyYWN0aXZlaG9va19fID0gcmVnaXN0ZXJfcmVhZGxpbmUKIAotZGVmIGFsaWFzbWJjcygpOgotICAgICIiIk9uIFdpbmRvd3MsIHNvbWUgZGVmYXVsdCBlbmNvZGluZ3MgYXJlIG5vdCBwcm92aWRlZCBieSBQeXRob24sCi0gICAgd2hpbGUgdGhleSBhcmUgYWx3YXlzIGF2YWlsYWJsZSBhcyAibWJjcyIgaW4gZWFjaCBsb2NhbGUuIE1ha2UKLSAgICB0aGVtIHVzYWJsZSBieSBhbGlhc2luZyB0byAibWJjcyIgaW4gc3VjaCBhIGNhc2UuIiIiCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZSwgY29kZWNzCi0gICAgICAgIGVuYyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgICAgICBpZiBlbmMuc3RhcnRzd2l0aCgnY3AnKTogICAgICAgICAgICAjICJjcCoqKiIgPwotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAoZW5jKQotICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCBlbmNvZGluZ3MKLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuX2NhY2hlW2VuY10gPSBlbmNvZGluZ3MuX3Vua25vd24KLSAgICAgICAgICAgICAgICBlbmNvZGluZ3MuYWxpYXNlcy5hbGlhc2VzW2VuY10gPSAnbWJjcycKLQotQ09ORklHX0xJTkUgPSByJ14oP1A8a2V5Pihcd3xbLV9dKSspXHMqPVxzKig/UDx2YWx1ZT4uKilccyokJwotCiBkZWYgdmVudihrbm93bl9wYXRocyk6CiAgICAgZ2xvYmFsIFBSRUZJWEVTLCBFTkFCTEVfVVNFUl9TSVRFCiAKQEAgLTQ2MSwyOSArNDQzLDIwIEBACiAgICAgICAgIF0KIAogICAgIGlmIGNhbmRpZGF0ZV9jb25mczoKLSAgICAgICAgaW1wb3J0IHJlCi0gICAgICAgIGNvbmZpZ19saW5lID0gcmUuY29tcGlsZShDT05GSUdfTElORSkKICAgICAgICAgdmlydHVhbF9jb25mID0gY2FuZGlkYXRlX2NvbmZzWzBdCiAgICAgICAgIHN5c3RlbV9zaXRlID0gInRydWUiCiAgICAgICAgICMgSXNzdWUgMjUxODU6IFVzZSBVVEYtOCwgYXMgdGhhdCdzIHdoYXQgdGhlIHZlbnYgbW9kdWxlIHVzZXMgd2hlbgogICAgICAgICAjIHdyaXRpbmcgdGhlIGZpbGUuCiAgICAgICAgIHdpdGggb3Blbih2aXJ0dWFsX2NvbmYsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBtID0gY29uZmlnX2xpbmUubWF0Y2gobGluZSkKLSAgICAgICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgICAgICBkID0gbS5ncm91cGRpY3QoKQotICAgICAgICAgICAgICAgICAgICBrZXksIHZhbHVlID0gZFsna2V5J10ubG93ZXIoKSwgZFsndmFsdWUnXQorICAgICAgICAgICAgICAgIGlmICc9JyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBrZXksIF8sIHZhbHVlID0gbGluZS5wYXJ0aXRpb24oJz0nKQorICAgICAgICAgICAgICAgICAgICBrZXkgPSBrZXkuc3RyaXAoKS5sb3dlcigpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3RyaXAoKQogICAgICAgICAgICAgICAgICAgICBpZiBrZXkgPT0gJ2luY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSB2YWx1ZS5sb3dlcigpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdob21lJzoKICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5faG9tZSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIGVsaWYga2V5ID09ICdhcHBsb2NhbCcgYW5kIHZhbHVlLmxvd2VyKCkgPT0gJ3RydWUnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBBcHAtbG9jYWwgaW5zdGFsbHMgdXNlIHRoZSBleGVfZGlyIGFzIHByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IG9uZSBsZXZlbCBoaWdoZXIsIGFuZCBkbyBub3QgdXNlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgIyBzaXRlIHBhY2thZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9wcmVmaXggPSBleGVfZGlyCi0gICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9ICdmYWxzZScKIAogICAgICAgICBzeXMucHJlZml4ID0gc3lzLmV4ZWNfcHJlZml4ID0gc2l0ZV9wcmVmaXgKIApAQCAtNTA0LDExICs0NzcsMTUgQEAKIGRlZiBleGVjc2l0ZWN1c3RvbWl6ZSgpOgogICAgICIiIlJ1biBjdXN0b20gc2l0ZSBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuIiIiCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgc2l0ZWN1c3RvbWl6ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgc2l0ZWN1c3RvbWl6ZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gJ3NpdGVjdXN0b21pemUnOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKLSAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoIlBZVEhPTlZFUkJPU0UiKToKKyAgICAgICAgaWYgc3lzLmZsYWdzLnZlcmJvc2U6CiAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKApAQCAtNTIwLDExICs0OTcsMTUgQEAKIGRlZiBleGVjdXNlcmN1c3RvbWl6ZSgpOgogICAgICIiIlJ1biBjdXN0b20gdXNlciBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuIiIiCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgdXNlcmN1c3RvbWl6ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdXNlcmN1c3RvbWl6ZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gJ3VzZXJjdXN0b21pemUnOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKLSAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoIlBZVEhPTlZFUkJPU0UiKToKKyAgICAgICAgaWYgc3lzLmZsYWdzLnZlcmJvc2U6CiAgICAgICAgICAgICBzeXMuZXhjZXB0aG9vaygqc3lzLmV4Y19pbmZvKCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKApAQCAtNTUxLDEzICs1MzIsMTMgQEAKICAgICBzZXRxdWl0KCkKICAgICBzZXRjb3B5cmlnaHQoKQogICAgIHNldGhlbHBlcigpCi0gICAgZW5hYmxlcmxjb21wbGV0ZXIoKQotICAgIGFsaWFzbWJjcygpCisgICAgaWYgbm90IHN5cy5mbGFncy5pc29sYXRlZDoKKyAgICAgICAgZW5hYmxlcmxjb21wbGV0ZXIoKQogICAgIGV4ZWNzaXRlY3VzdG9taXplKCkKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFOgogICAgICAgICBleGVjdXNlcmN1c3RvbWl6ZSgpCiAKLSMgUHJldmVudCBlZGl0aW9uIG9mIHN5cy5wYXRoIHdoZW4gcHl0aG9uIHdhcyBzdGFydGVkIHdpdGggLVMgYW5kCisjIFByZXZlbnQgZXh0ZW5kaW5nIG9mIHN5cy5wYXRoIHdoZW4gcHl0aG9uIHdhcyBzdGFydGVkIHdpdGggLVMgYW5kCiAjIHNpdGUgaXMgaW1wb3J0ZWQgbGF0ZXIuCiBpZiBub3Qgc3lzLmZsYWdzLm5vX3NpdGU6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvc210cGQucHkgYi9MaWIvc210cGQucHkKaW5kZXggNzMyMDY2ZS4uODEwM2NhOSAxMDA3NTUKLS0tIGEvTGliL3NtdHBkLnB5CisrKyBiL0xpYi9zbXRwZC5weQpAQCAtODksNyArODksMTAgQEAKIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KIGZyb20gZW1haWwuX2hlYWRlcl92YWx1ZV9wYXJzZXIgaW1wb3J0IGdldF9hZGRyX3NwZWMsIGdldF9hbmdsZV9hZGRyCiAKLV9fYWxsX18gPSBbIlNNVFBTZXJ2ZXIiLCJEZWJ1Z2dpbmdTZXJ2ZXIiLCJQdXJlUHJveHkiLCJNYWlsbWFuUHJveHkiXQorX19hbGxfXyA9IFsKKyAgICAiU01UUENoYW5uZWwiLCAiU01UUFNlcnZlciIsICJEZWJ1Z2dpbmdTZXJ2ZXIiLCAiUHVyZVByb3h5IiwKKyAgICAiTWFpbG1hblByb3h5IiwKK10KIAogcHJvZ3JhbSA9IHN5cy5hcmd2WzBdCiBfX3ZlcnNpb25fXyA9ICdQeXRob24gU01UUCBwcm94eSB2ZXJzaW9uIDAuMycKQEAgLTEyOCwyNCArMTMxLDE3IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb21tYW5kX3NpemVfbGltaXQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCwKLSAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9Tm9uZSk6CisgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uLCBtYXA9bWFwKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCiAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KICAgICAgICAgc2VsZi5hZGRyID0gYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAotICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6Ci0gICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IEZhbHNlCi0gICAgICAgIGlmIGRlY29kZV9kYXRhIGlzIE5vbmU6Ci0gICAgICAgICAgICB3YXJuKCJUaGUgZGVjb2RlX2RhdGEgZGVmYXVsdCBvZiBUcnVlIHdpbGwgY2hhbmdlIHRvIEZhbHNlIGluIDMuNjsiCi0gICAgICAgICAgICAgICAgICIgc3BlY2lmeSBhbiBleHBsaWNpdCB2YWx1ZSBmb3IgdGhpcyBrZXl3b3JkIiwKLSAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBUcnVlCiAgICAgICAgIHNlbGYuX2RlY29kZV9kYXRhID0gZGVjb2RlX2RhdGEKKyAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4IGFuZCBkZWNvZGVfZGF0YToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggY2Fubm90IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQogICAgICAgICBpZiBkZWNvZGVfZGF0YToKICAgICAgICAgICAgIHNlbGYuX2VtcHR5c3RyaW5nID0gJycKICAgICAgICAgICAgIHNlbGYuX2xpbmVzZXAgPSAnXHJcbicKQEAgLTYzNSwyMyArNjMxLDE1IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jYWxhZGRyLCByZW1vdGVhZGRyLAogICAgICAgICAgICAgICAgICBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsIG1hcD1Ob25lLAotICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgorICAgICAgICAgICAgICAgICBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKToKICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gbG9jYWxhZGRyCiAgICAgICAgIHNlbGYuX3JlbW90ZWFkZHIgPSByZW1vdGVhZGRyCiAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIHNlbGYuZW5hYmxlX1NNVFBVVEY4ID0gZW5hYmxlX1NNVFBVVEY4Ci0gICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGODoKLSAgICAgICAgICAgIGlmIGRlY29kZV9kYXRhOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlRoZSBkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBwYXJhbWV0ZXJzIGNhbm5vdCBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNhbWUgdGltZS4iKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQotICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgotICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCi0gICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQogICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGOCBhbmQgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBtYXA9bWFwKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBnYWlfcmVzdWx0cyA9IHNvY2tldC5nZXRhZGRyaW5mbygqbG9jYWxhZGRyLApAQCAtNjk4LDkgKzY4Niw5IEBACiAgICAgICAgIGNvbnRhaW5pbmcgYSBgLicgZm9sbG93ZWQgYnkgb3RoZXIgdGV4dCBoYXMgaGFkIHRoZSBsZWFkaW5nIGRvdAogICAgICAgICByZW1vdmVkLgogCi0gICAgICAgIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQotICAgICAgICB1bmxlc3MgZGVjb2RlX2RhdGE9RmFsc2Ugb3IgZW5hYmxlX1NNVFBVVEY4PVRydWUgd2FzIGdpdmVuIGFzIGluaXQKLSAgICAgICAgcGFyYW1ldGVyLCBpbiB3aGljaCBjYXNlIHV0IHdpbGwgY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CisgICAgICAgIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiAgSXQgaXMKKyAgICAgICAgZW1wdHkgaWYgZGVjb2RlX2RhdGE9VHJ1ZSB3YXMgZ2l2ZW4gYXMgaW5pdCBwYXJhbWV0ZXIsIG90aGVyd2lzZQorICAgICAgICBpdCB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgogICAgICAgICAgICAgJ21haWxfb3B0aW9ucyc6IGxpc3Qgb2YgcGFyYW1ldGVycyB0byB0aGUgbWFpbCBjb21tYW5kLiAgQWxsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgYXJlIHVwcGVyY2FzZSBzdHJpbmdzLiAgRXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0JPRFk9OEJJVE1JTUUnLCAnU01UUFVURjgnXS4KZGlmZiAtLWdpdCBhL0xpYi9zbXRwbGliLnB5IGIvTGliL3NtdHBsaWIucHkKaW5kZXggNWI5ZTY2NS4uZjdjMmM3NyAxMDA3NTUKLS0tIGEvTGliL3NtdHBsaWIucHkKKysrIGIvTGliL3NtdHBsaWIucHkKQEAgLTc1OSw2ICs3NTksMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChjZXJ0ZmlsZT1jZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1rZXlmaWxlKQpAQCAtMTAxMSw2ICsxMDE1LDEwIEBACiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3NuZGhkci5weSBiL0xpYi9zbmRoZHIucHkKaW5kZXggZTU5MDFlYy4uN2VjYWZiNCAxMDA2NDQKLS0tIGEvTGliL3NuZGhkci5weQorKysgYi9MaWIvc25kaGRyLnB5CkBAIC0zNyw2ICszNywxOCBAQAogU25kSGVhZGVycyA9IG5hbWVkdHVwbGUoJ1NuZEhlYWRlcnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV0eXBlIGZyYW1lcmF0ZSBuY2hhbm5lbHMgbmZyYW1lcyBzYW1wd2lkdGgnKQogCitTbmRIZWFkZXJzLmZpbGV0eXBlLl9fZG9jX18gPSAoIiIiVGhlIHZhbHVlIGZvciB0eXBlIGluZGljYXRlcyB0aGUgZGF0YSB0eXBlCithbmQgd2lsbCBiZSBvbmUgb2YgdGhlIHN0cmluZ3MgJ2FpZmMnLCAnYWlmZicsICdhdScsJ2hjb20nLAorJ3NuZHInLCAnc25kdCcsICd2b2MnLCAnd2F2JywgJzhzdngnLCAnc2InLCAndWInLCBvciAndWwnLiIiIikKK1NuZEhlYWRlcnMuZnJhbWVyYXRlLl9fZG9jX18gPSAoIiIiVGhlIHNhbXBsaW5nX3JhdGUgd2lsbCBiZSBlaXRoZXIgdGhlIGFjdHVhbAordmFsdWUgb3IgMCBpZiB1bmtub3duIG9yIGRpZmZpY3VsdCB0byBkZWNvZGUuIiIiKQorU25kSGVhZGVycy5uY2hhbm5lbHMuX19kb2NfXyA9ICgiIiJUaGUgbnVtYmVyIG9mIGNoYW5uZWxzIG9yIDAgaWYgaXQgY2Fubm90IGJlCitkZXRlcm1pbmVkIG9yIGlmIHRoZSB2YWx1ZSBpcyBkaWZmaWN1bHQgdG8gZGVjb2RlLiIiIikKK1NuZEhlYWRlcnMubmZyYW1lcy5fX2RvY19fID0gKCIiIlRoZSB2YWx1ZSBmb3IgZnJhbWVzIHdpbGwgYmUgZWl0aGVyIHRoZSBudW1iZXIKK29mIGZyYW1lcyBvciAtMS4iIiIpCitTbmRIZWFkZXJzLnNhbXB3aWR0aC5fX2RvY19fID0gKCIiIkVpdGhlciB0aGUgc2FtcGxlIHNpemUgaW4gYml0cyBvcgorJ0EnIGZvciBBLUxBVyBvciAnVScgZm9yIHUtTEFXLiIiIikKKwogZGVmIHdoYXQoZmlsZW5hbWUpOgogICAgICIiIkd1ZXNzIHRoZSB0eXBlIG9mIGEgc291bmQgZmlsZS4iIiIKICAgICByZXMgPSB3aGF0aGRyKGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL3NvY2tldC5weSBiL0xpYi9zb2NrZXQucHkKaW5kZXggYTljYWIzMi4uNzQwZTcxNyAxMDA2NDQKLS0tIGEvTGliL3NvY2tldC5weQorKysgYi9MaWIvc29ja2V0LnB5CkBAIC01MCw3ICs1MCw3IEBACiBmcm9tIF9zb2NrZXQgaW1wb3J0ICoKIAogaW1wb3J0IG9zLCBzeXMsIGlvLCBzZWxlY3RvcnMKLWZyb20gZW51bSBpbXBvcnQgSW50RW51bQorZnJvbSBlbnVtIGltcG9ydCBJbnRFbnVtLCBJbnRGbGFnCiAKIHRyeToKICAgICBpbXBvcnQgZXJybm8KQEAgLTgwLDYgKzgwLDE2IEBACiAgICAgICAgIF9fbmFtZV9fLAogICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnU09DS18nKSkKIAorSW50RmxhZy5fY29udmVydCgKKyAgICAgICAgJ01zZ0ZsYWcnLAorICAgICAgICBfX25hbWVfXywKKyAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ01TR18nKSkKKworSW50RmxhZy5fY29udmVydCgKKyAgICAgICAgJ0FkZHJlc3NJbmZvJywKKyAgICAgICAgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdBSV8nKSkKKwogX0xPQ0FMSE9TVCAgICA9ICcxMjcuMC4wLjEnCiBfTE9DQUxIT1NUX1Y2ID0gJzo6MScKIApkaWZmIC0tZ2l0IGEvTGliL3NvY2tldHNlcnZlci5weSBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggODgwODgxMy4uNDFhMzc2NiAxMDA2NDQKLS0tIGEvTGliL3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvc29ja2V0c2VydmVyLnB5CkBAIC0xMjcsMTYgKzEyNywyMCBAQAogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBzeXMKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKK2Zyb20gaW8gaW1wb3J0IEJ1ZmZlcmVkSU9CYXNlCiBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyB0aW1lCiAKLV9fYWxsX18gPSBbIkJhc2VTZXJ2ZXIiLCAiVENQU2VydmVyIiwgIlVEUFNlcnZlciIsICJGb3JraW5nVURQU2VydmVyIiwKLSAgICAgICAgICAgIkZvcmtpbmdUQ1BTZXJ2ZXIiLCAiVGhyZWFkaW5nVURQU2VydmVyIiwgIlRocmVhZGluZ1RDUFNlcnZlciIsCitfX2FsbF9fID0gWyJCYXNlU2VydmVyIiwgIlRDUFNlcnZlciIsICJVRFBTZXJ2ZXIiLAorICAgICAgICAgICAiVGhyZWFkaW5nVURQU2VydmVyIiwgIlRocmVhZGluZ1RDUFNlcnZlciIsCiAgICAgICAgICAgICJCYXNlUmVxdWVzdEhhbmRsZXIiLCAiU3RyZWFtUmVxdWVzdEhhbmRsZXIiLAotICAgICAgICAgICAiRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciIsICJUaHJlYWRpbmdNaXhJbiIsICJGb3JraW5nTWl4SW4iXQorICAgICAgICAgICAiRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciIsICJUaHJlYWRpbmdNaXhJbiJdCitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIF9fYWxsX18uZXh0ZW5kKFsiRm9ya2luZ1VEUFNlcnZlciIsIkZvcmtpbmdUQ1BTZXJ2ZXIiLCAiRm9ya2luZ01peEluIl0pCiBpZiBoYXNhdHRyKHNvY2tldCwgIkFGX1VOSVgiKToKICAgICBfX2FsbF9fLmV4dGVuZChbIlVuaXhTdHJlYW1TZXJ2ZXIiLCJVbml4RGF0YWdyYW1TZXJ2ZXIiLAogICAgICAgICAgICAgICAgICAgICAiVGhyZWFkaW5nVW5peFN0cmVhbVNlcnZlciIsCkBAIC0zMTEsOSArMzE1LDEyIEBACiAgICAgICAgIGlmIHNlbGYudmVyaWZ5X3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAKQEAgLTM2NywxMiArMzc0LDE4IEBACiAgICAgICAgIFRoZSBkZWZhdWx0IGlzIHRvIHByaW50IGEgdHJhY2ViYWNrIGFuZCBjb250aW51ZS4KIAogICAgICAgICAiIiIKLSAgICAgICAgcHJpbnQoJy0nKjQwKQotICAgICAgICBwcmludCgnRXhjZXB0aW9uIGhhcHBlbmVkIGR1cmluZyBwcm9jZXNzaW5nIG9mIHJlcXVlc3QgZnJvbScsIGVuZD0nICcpCi0gICAgICAgIHByaW50KGNsaWVudF9hZGRyZXNzKQorICAgICAgICBwcmludCgnLScqNDAsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiBoYXBwZW5lZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiByZXF1ZXN0IGZyb20nLAorICAgICAgICAgICAgY2xpZW50X2FkZHJlc3MsIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkgIyBYWFggQnV0IHRoaXMgZ29lcyB0byBzdGRlcnIhCi0gICAgICAgIHByaW50KCctJyo0MCkKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgIHByaW50KCctJyo0MCwgZmlsZT1zeXMuc3RkZXJyKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKIAogCiBjbGFzcyBUQ1BTZXJ2ZXIoQmFzZVNlcnZlcik6CkBAIC01MjcsODUgKzU0MCw4NiBAQAogICAgICAgICAjIE5vIG5lZWQgdG8gY2xvc2UgYW55dGhpbmcuCiAgICAgICAgIHBhc3MKIAotY2xhc3MgRm9ya2luZ01peEluOgoraWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBjbGFzcyBGb3JraW5nTWl4SW46CisgICAgICAgICIiIk1peC1pbiBjbGFzcyB0byBoYW5kbGUgZWFjaCByZXF1ZXN0IGluIGEgbmV3IHByb2Nlc3MuIiIiCiAKLSAgICAiIiJNaXgtaW4gY2xhc3MgdG8gaGFuZGxlIGVhY2ggcmVxdWVzdCBpbiBhIG5ldyBwcm9jZXNzLiIiIgorICAgICAgICB0aW1lb3V0ID0gMzAwCisgICAgICAgIGFjdGl2ZV9jaGlsZHJlbiA9IE5vbmUKKyAgICAgICAgbWF4X2NoaWxkcmVuID0gNDAKIAotICAgIHRpbWVvdXQgPSAzMDAKLSAgICBhY3RpdmVfY2hpbGRyZW4gPSBOb25lCi0gICAgbWF4X2NoaWxkcmVuID0gNDAKLQotICAgIGRlZiBjb2xsZWN0X2NoaWxkcmVuKHNlbGYpOgotICAgICAgICAiIiJJbnRlcm5hbCByb3V0aW5lIHRvIHdhaXQgZm9yIGNoaWxkcmVuIHRoYXQgaGF2ZSBleGl0ZWQuIiIiCi0gICAgICAgIGlmIHNlbGYuYWN0aXZlX2NoaWxkcmVuIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIElmIHdlJ3JlIGFib3ZlIHRoZSBtYXggbnVtYmVyIG9mIGNoaWxkcmVuLCB3YWl0IGFuZCByZWFwIHRoZW0gdW50aWwKLSAgICAgICAgIyB3ZSBnbyBiYWNrIGJlbG93IHRocmVzaG9sZC4gTm90ZSB0aGF0IHdlIHVzZSB3YWl0cGlkKC0xKSBiZWxvdyB0byBiZQotICAgICAgICAjIGFibGUgdG8gY29sbGVjdCBjaGlsZHJlbiBpbiBzaXplKDxkZWZ1bmN0IGNoaWxkcmVuPikgc3lzY2FsbHMgaW5zdGVhZAotICAgICAgICAjIG9mIHNpemUoPGNoaWxkcmVuPik6IHRoZSBkb3duc2lkZSBpcyB0aGF0IHRoaXMgbWlnaHQgcmVhcCBjaGlsZHJlbgotICAgICAgICAjIHdoaWNoIHdlIGRpZG4ndCBzcGF3biwgd2hpY2ggaXMgd2h5IHdlIG9ubHkgcmVzb3J0IHRvIHRoaXMgd2hlbiB3ZSdyZQotICAgICAgICAjIGFib3ZlIG1heF9jaGlsZHJlbi4KLSAgICAgICAgd2hpbGUgbGVuKHNlbGYuYWN0aXZlX2NoaWxkcmVuKSA+PSBzZWxmLm1heF9jaGlsZHJlbjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKC0xLCAwKQotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQotICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgotICAgICAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4sIHdlJ3JlIGRvbmUKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICMgTm93IHJlYXAgYWxsIGRlZnVuY3QgY2hpbGRyZW4uCi0gICAgICAgIGZvciBwaWQgaW4gc2VsZi5hY3RpdmVfY2hpbGRyZW4uY29weSgpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBpZCwgXyA9IG9zLndhaXRwaWQocGlkLCBvcy5XTk9IQU5HKQotICAgICAgICAgICAgICAgICMgaWYgdGhlIGNoaWxkIGhhc24ndCBleGl0ZWQgeWV0LCBwaWQgd2lsbCBiZSAwIGFuZCBpZ25vcmVkIGJ5Ci0gICAgICAgICAgICAgICAgIyBkaXNjYXJkKCkgYmVsb3cKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgICAgICAjIHNvbWVvbmUgZWxzZSByZWFwZWQgaXQKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKLSAgICAgICAgIiIiV2FpdCBmb3Igem9tYmllcyBhZnRlciBzZWxmLnRpbWVvdXQgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgotCi0gICAgICAgIE1heSBiZSBleHRlbmRlZCwgZG8gbm90IG92ZXJyaWRlLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKLQotICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6Ci0gICAgICAgICIiIkNvbGxlY3QgdGhlIHpvbWJpZSBjaGlsZCBwcm9jZXNzZXMgcmVndWxhcmx5IGluIHRoZSBGb3JraW5nTWl4SW4uCi0KLSAgICAgICAgc2VydmljZV9hY3Rpb25zIGlzIGNhbGxlZCBpbiB0aGUgQmFzZVNlcnZlcidzIHNlcnZlX2ZvcnZlciBsb29wLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKLQotICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgotICAgICAgICAiIiJGb3JrIGEgbmV3IHN1YnByb2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdC4iIiIKLSAgICAgICAgcGlkID0gb3MuZm9yaygpCi0gICAgICAgIGlmIHBpZDoKLSAgICAgICAgICAgICMgUGFyZW50IHByb2Nlc3MKKyAgICAgICAgZGVmIGNvbGxlY3RfY2hpbGRyZW4oc2VsZik6CisgICAgICAgICAgICAiIiJJbnRlcm5hbCByb3V0aW5lIHRvIHdhaXQgZm9yIGNoaWxkcmVuIHRoYXQgaGF2ZSBleGl0ZWQuIiIiCiAgICAgICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jaGlsZHJlbiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuID0gc2V0KCkKLSAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmFkZChwaWQpCi0gICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzLgotICAgICAgICAgICAgIyBUaGlzIG11c3QgbmV2ZXIgcmV0dXJuLCBoZW5jZSBvcy5fZXhpdCgpIQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgb3MuX2V4aXQoMCkKLSAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgIyBJZiB3ZSdyZSBhYm92ZSB0aGUgbWF4IG51bWJlciBvZiBjaGlsZHJlbiwgd2FpdCBhbmQgcmVhcCB0aGVtIHVudGlsCisgICAgICAgICAgICAjIHdlIGdvIGJhY2sgYmVsb3cgdGhyZXNob2xkLiBOb3RlIHRoYXQgd2UgdXNlIHdhaXRwaWQoLTEpIGJlbG93IHRvIGJlCisgICAgICAgICAgICAjIGFibGUgdG8gY29sbGVjdCBjaGlsZHJlbiBpbiBzaXplKDxkZWZ1bmN0IGNoaWxkcmVuPikgc3lzY2FsbHMgaW5zdGVhZAorICAgICAgICAgICAgIyBvZiBzaXplKDxjaGlsZHJlbj4pOiB0aGUgZG93bnNpZGUgaXMgdGhhdCB0aGlzIG1pZ2h0IHJlYXAgY2hpbGRyZW4KKyAgICAgICAgICAgICMgd2hpY2ggd2UgZGlkbid0IHNwYXduLCB3aGljaCBpcyB3aHkgd2Ugb25seSByZXNvcnQgdG8gdGhpcyB3aGVuIHdlJ3JlCisgICAgICAgICAgICAjIGFib3ZlIG1heF9jaGlsZHJlbi4KKyAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLmFjdGl2ZV9jaGlsZHJlbikgPj0gc2VsZi5tYXhfY2hpbGRyZW46CiAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKC0xLCAwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICMgd2UgZG9uJ3QgaGF2ZSBhbnkgY2hpbGRyZW4sIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAjIE5vdyByZWFwIGFsbCBkZWZ1bmN0IGNoaWxkcmVuLgorICAgICAgICAgICAgZm9yIHBpZCBpbiBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jb3B5KCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKHBpZCwgb3MuV05PSEFORykKKyAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgY2hpbGQgaGFzbid0IGV4aXRlZCB5ZXQsIHBpZCB3aWxsIGJlIDAgYW5kIGlnbm9yZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgIyBkaXNjYXJkKCkgYmVsb3cKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIHNvbWVvbmUgZWxzZSByZWFwZWQgaXQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgaGFuZGxlX3RpbWVvdXQoc2VsZik6CisgICAgICAgICAgICAiIiJXYWl0IGZvciB6b21iaWVzIGFmdGVyIHNlbGYudGltZW91dCBzZWNvbmRzIG9mIGluYWN0aXZpdHkuCisKKyAgICAgICAgICAgIE1heSBiZSBleHRlbmRlZCwgZG8gbm90IG92ZXJyaWRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQorCisgICAgICAgIGRlZiBzZXJ2aWNlX2FjdGlvbnMoc2VsZik6CisgICAgICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peEluLgorCisgICAgICAgICAgICBzZXJ2aWNlX2FjdGlvbnMgaXMgY2FsbGVkIGluIHRoZSBCYXNlU2VydmVyJ3Mgc2VydmVfZm9ydmVyIGxvb3AuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKKyAgICAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CisgICAgICAgICAgICAiIiJGb3JrIGEgbmV3IHN1YnByb2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdC4iIiIKKyAgICAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQorICAgICAgICAgICAgaWYgcGlkOgorICAgICAgICAgICAgICAgICMgUGFyZW50IHByb2Nlc3MKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jaGlsZHJlbiBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IHNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uYWRkKHBpZCkKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBDaGlsZCBwcm9jZXNzLgorICAgICAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSAxCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQorICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSAwCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDEpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3MuX2V4aXQoc3RhdHVzKQogCiAKIGNsYXNzIFRocmVhZGluZ01peEluOgpAQCAtNjIzLDkgKzYzNyw5IEBACiAgICAgICAgICIiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQorICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCiAKICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKQEAgLTYzNiw4ICs2NTAsOSBAQAogICAgICAgICB0LnN0YXJ0KCkKIAogCi1jbGFzcyBGb3JraW5nVURQU2VydmVyKEZvcmtpbmdNaXhJbiwgVURQU2VydmVyKTogcGFzcwotY2xhc3MgRm9ya2luZ1RDUFNlcnZlcihGb3JraW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgY2xhc3MgRm9ya2luZ1VEUFNlcnZlcihGb3JraW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKKyAgICBjbGFzcyBGb3JraW5nVENQU2VydmVyKEZvcmtpbmdNaXhJbiwgVENQU2VydmVyKTogcGFzcwogCiBjbGFzcyBUaHJlYWRpbmdVRFBTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKIGNsYXNzIFRocmVhZGluZ1RDUFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgVENQU2VydmVyKTogcGFzcwpAQCAtNzI5LDcgKzc0NCwxMCBAQAogICAgICAgICAgICAgc2VsZi5jb25uZWN0aW9uLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fVENQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlRDUF9OT0RFTEFZLCBUcnVlKQogICAgICAgICBzZWxmLnJmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCdyYicsIHNlbGYucmJ1ZnNpemUpCi0gICAgICAgIHNlbGYud2ZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3diJywgc2VsZi53YnVmc2l6ZSkKKyAgICAgICAgaWYgc2VsZi53YnVmc2l6ZSA9PSAwOgorICAgICAgICAgICAgc2VsZi53ZmlsZSA9IF9Tb2NrZXRXcml0ZXIoc2VsZi5jb25uZWN0aW9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53ZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgnd2InLCBzZWxmLndidWZzaXplKQogCiAgICAgZGVmIGZpbmlzaChzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYud2ZpbGUuY2xvc2VkOgpAQCAtNzQyLDYgKzc2MCwyNCBAQAogICAgICAgICBzZWxmLndmaWxlLmNsb3NlKCkKICAgICAgICAgc2VsZi5yZmlsZS5jbG9zZSgpCiAKK2NsYXNzIF9Tb2NrZXRXcml0ZXIoQnVmZmVyZWRJT0Jhc2UpOgorICAgICIiIlNpbXBsZSB3cml0YWJsZSBCdWZmZXJlZElPQmFzZSBpbXBsZW1lbnRhdGlvbiBmb3IgYSBzb2NrZXQKKworICAgIERvZXMgbm90IGhvbGQgZGF0YSBpbiBhIGJ1ZmZlciwgYXZvaWRpbmcgYW55IG5lZWQgdG8gY2FsbCBmbHVzaCgpLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2spOgorICAgICAgICBzZWxmLl9zb2NrID0gc29jaworCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgorICAgICAgICBzZWxmLl9zb2NrLnNlbmRhbGwoYikKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGIpIGFzIHZpZXc6CisgICAgICAgICAgICByZXR1cm4gdmlldy5uYnl0ZXMKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zb2NrLmZpbGVubygpCiAKIGNsYXNzIERhdGFncmFtUmVxdWVzdEhhbmRsZXIoQmFzZVJlcXVlc3RIYW5kbGVyKToKIApkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKaW5kZXggN2ZiOGQ3ZS4uY2I4NTgxNCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CkBAIC0xODgsNyArMTg4LDEwIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmN4ID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKICAgICAgICAgc2VsZi5jdSA9IHNlbGYuY3guY3Vyc29yKCkKLSAgICAgICAgc2VsZi5jdS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBuYW1lIHRleHQsIGluY29tZSBudW1iZXIpIikKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImNyZWF0ZSB0YWJsZSB0ZXN0KGlkIGludGVnZXIgcHJpbWFyeSBrZXksIG5hbWUgdGV4dCwgIgorICAgICAgICAgICAgImluY29tZSBudW1iZXIsIHVuaXF1ZV90ZXN0IHRleHQgdW5pcXVlKSIKKyAgICAgICAgKQogICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QobmFtZSkgdmFsdWVzICg/KSIsICgiZm9vIiwpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNDYyLDYgKzQ2NSw0NCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBjdXIgPSBzcWxpdGUuQ3Vyc29yKGZvbykKIAorICAgIGRlZiBDaGVja0xhc3RSb3dJRE9uUmVwbGFjZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIElOU0VSVCBPUiBSRVBMQUNFIGFuZCBSRVBMQUNFIElOVE8gc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgYmVoYXZpb3IuCisgICAgICAgICIiIgorICAgICAgICBzcWwgPSAne30gSU5UTyB0ZXN0KGlkLCB1bmlxdWVfdGVzdCkgVkFMVUVTICg/LCA/KScKKyAgICAgICAgZm9yIHN0YXRlbWVudCBpbiAoJ0lOU0VSVCBPUiBSRVBMQUNFJywgJ1JFUExBQ0UnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0YXRlbWVudD1zdGF0ZW1lbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZShzcWwuZm9ybWF0KHN0YXRlbWVudCksICgxLCAnZm9vJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMSkKKworICAgIGRlZiBDaGVja0xhc3RSb3dJRE9uSWdub3JlKHNlbGYpOgorICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoCisgICAgICAgICAgICAiaW5zZXJ0IG9yIGlnbm9yZSBpbnRvIHRlc3QodW5pcXVlX3Rlc3QpIHZhbHVlcyAoPykiLAorICAgICAgICAgICAgKCd0ZXN0JywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY3UubGFzdHJvd2lkLCAyKQorICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoCisgICAgICAgICAgICAiaW5zZXJ0IG9yIGlnbm9yZSBpbnRvIHRlc3QodW5pcXVlX3Rlc3QpIHZhbHVlcyAoPykiLAorICAgICAgICAgICAgKCd0ZXN0JywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY3UubGFzdHJvd2lkLCAyKQorCisgICAgZGVmIENoZWNrTGFzdFJvd0lESW5zZXJ0T1Ioc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBmb3Igc3RhdGVtZW50IGluICgnRkFJTCcsICdBQk9SVCcsICdST0xMQkFDSycpOgorICAgICAgICAgICAgc3FsID0gJ0lOU0VSVCBPUiB7fSBJTlRPIHRlc3QodW5pcXVlX3Rlc3QpIFZBTFVFUyAoPyknCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdGF0ZW1lbnQ9J0lOU0VSVCBPUiB7fScuZm9ybWF0KHN0YXRlbWVudCkpOgorICAgICAgICAgICAgICAgIHNlbGYuY3UuZXhlY3V0ZShzcWwuZm9ybWF0KHN0YXRlbWVudCksIChzdGF0ZW1lbnQsKSkKKyAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCgoc3RhdGVtZW50LCBzZWxmLmN1Lmxhc3Ryb3dpZCkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzcWxpdGUuSW50ZWdyaXR5RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoc3RhdGVtZW50LCkpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHN0YXRlbWVudCwgc2VsZi5jdS5sYXN0cm93aWQpKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnRkFJTCcsIDIpLCAoJ0ZBSUwnLCAyKSwKKyAgICAgICAgICAgICgnQUJPUlQnLCAzKSwgKCdBQk9SVCcsIDMpLAorICAgICAgICAgICAgKCdST0xMQkFDSycsIDQpLCAoJ1JPTExCQUNLJywgNCksCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLCBleHBlY3RlZCkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaGlzIHRlc3QgcmVxdWlyZXMgdGhyZWFkaW5nLicpCiBjbGFzcyBUaHJlYWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQppbmRleCBhMjUzNjBhLi40NWYxYjA0IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3RyYW5zYWN0aW9ucy5weQpAQCAtNTIsMTMgKzUyLDEzIEBACiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIENoZWNrRE1MZG9lc0F1dG9Db21taXRCZWZvcmUoc2VsZik6CisgICAgZGVmIENoZWNrRE1MRG9lc05vdEF1dG9Db21taXRCZWZvcmUoc2VsZik6CiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGkpIHZhbHVlcyAoNSkiKQogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QyKGopIikKICAgICAgICAgc2VsZi5jdXIyLmV4ZWN1dGUoInNlbGVjdCBpIGZyb20gdGVzdCIpCiAgICAgICAgIHJlcyA9IHNlbGYuY3VyMi5mZXRjaGFsbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcyksIDApCiAKICAgICBkZWYgQ2hlY2tJbnNlcnRTdGFydHNUcmFuc2FjdGlvbihzZWxmKToKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKQEAgLTE1MywxMSArMTUzLDYgQEAKICAgICAgICAgc2VsZi5jb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQogICAgICAgICBzZWxmLmN1ciA9IHNlbGYuY29uLmN1cnNvcigpCiAKLSAgICBkZWYgQ2hlY2tWYWN1dW0oc2VsZik6Ci0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKLSAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKLSAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgidmFjdXVtIikKLQogICAgIGRlZiBDaGVja0Ryb3BUYWJsZShzZWxmKToKICAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KGkpIHZhbHVlcyAoNSkiKQpAQCAtMTcyLDEwICsxNjcsMzUgQEAKICAgICAgICAgc2VsZi5jdXIuY2xvc2UoKQogICAgICAgICBzZWxmLmNvbi5jbG9zZSgpCiAKK2NsYXNzIFRyYW5zYWN0aW9uYWxEREwodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorCisgICAgZGVmIENoZWNrRGRsRG9lc05vdEF1dG9zdGFydFRyYW5zYWN0aW9uKHNlbGYpOgorICAgICAgICAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBEREwgc3RhdGVtZW50cyBzaG91bGQgbm90CisgICAgICAgICMgaW1wbGljaXRseSBzdGFydCBhIHRyYW5zYWN0aW9uLgorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCisgICAgICAgIHNlbGYuY29uLnJvbGxiYWNrKCkKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ICogZnJvbSB0ZXN0IikuZmV0Y2hhbGwoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgW10pCisKKyAgICBkZWYgQ2hlY2tUcmFuc2FjdGlvbmFsRERMKHNlbGYpOgorICAgICAgICAjIFlvdSBjYW4gYWNoaWV2ZSB0cmFuc2FjdGlvbmFsIERETCBieSBpc3N1aW5nIGEgQkVHSU4KKyAgICAgICAgIyBzdGF0ZW1lbnQgbWFudWFsbHkuCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImJlZ2luIikKKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQorICAgICAgICBzZWxmLmNvbi5yb2xsYmFjaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3FsaXRlLk9wZXJhdGlvbmFsRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgic2VsZWN0ICogZnJvbSB0ZXN0IikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jb24uY2xvc2UoKQorCiBkZWYgc3VpdGUoKToKICAgICBkZWZhdWx0X3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYW5zYWN0aW9uVGVzdHMsICJDaGVjayIpCiAgICAgc3BlY2lhbF9jb21tYW5kX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFNwZWNpYWxDb21tYW5kVGVzdHMsICJDaGVjayIpCi0gICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoZGVmYXVsdF9zdWl0ZSwgc3BlY2lhbF9jb21tYW5kX3N1aXRlKSkKKyAgICBkZGxfc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoVHJhbnNhY3Rpb25hbERETCwgIkNoZWNrIikKKyAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChkZWZhdWx0X3N1aXRlLCBzcGVjaWFsX2NvbW1hbmRfc3VpdGUsIGRkbF9zdWl0ZSkpCiAKIGRlZiB0ZXN0KCk6CiAgICAgcnVubmVyID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9jb21waWxlLnB5IGIvTGliL3NyZV9jb21waWxlLnB5CmluZGV4IDUwMmIwNjEuLjQyMGQ4M2QgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfY29tcGlsZS5weQorKysgYi9MaWIvc3JlX2NvbXBpbGUucHkKQEAgLTcxLDcgKzcxLDggQEAKICAgICBBU1NFUlRfQ09ERVMgPSBfQVNTRVJUX0NPREVTCiAgICAgaWYgKGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSBhbmQKICAgICAgICAgICAgIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpIGFuZAotICAgICAgICAgICAgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKToKKyAgICAgICAgICAgIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSBhbmQKKyAgICAgICAgICAgIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSkpOgogICAgICAgICBmaXhlcyA9IF9pZ25vcmVjYXNlX2ZpeGVzCiAgICAgZWxzZToKICAgICAgICAgZml4ZXMgPSBOb25lCkBAIC0xMzcsMTQgKzEzOCwxNSBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGVtaXQoTUlOX1VOVElMKQogICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46Ci0gICAgICAgICAgICBpZiBhdlswXToKKyAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CisgICAgICAgICAgICBpZiBncm91cDoKICAgICAgICAgICAgICAgICBlbWl0KE1BUkspCi0gICAgICAgICAgICAgICAgZW1pdCgoYXZbMF0tMSkqMikKLSAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBhdlsxXSwgZmxhZ3MpCi0gICAgICAgICAgICBfY29tcGlsZShjb2RlLCBhdlsxXSwgZmxhZ3MpCi0gICAgICAgICAgICBpZiBhdlswXToKKyAgICAgICAgICAgICAgICBlbWl0KChncm91cC0xKSoyKQorICAgICAgICAgICAgIyBfY29tcGlsZV9pbmZvKGNvZGUsIHAsIChmbGFncyB8IGFkZF9mbGFncykgJiB+ZGVsX2ZsYWdzKQorICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgcCwgKGZsYWdzIHwgYWRkX2ZsYWdzKSAmIH5kZWxfZmxhZ3MpCisgICAgICAgICAgICBpZiBncm91cDoKICAgICAgICAgICAgICAgICBlbWl0KE1BUkspCi0gICAgICAgICAgICAgICAgZW1pdCgoYXZbMF0tMSkqMisxKQorICAgICAgICAgICAgICAgIGVtaXQoKGdyb3VwLTEpKjIrMSkKICAgICAgICAgZWxpZiBvcCBpbiBTVUNDRVNTX0NPREVTOgogICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgZWxpZiBvcCBpbiBBU1NFUlRfQ09ERVM6CkBAIC0xNzIsNyArMTc0LDcgQEAKICAgICAgICAgICAgICAgICBhdiA9IEFUX01VTFRJTElORS5nZXQoYXYsIGF2KQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9MT0NBTEUuZ2V0KGF2LCBhdikKLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBhdiA9IEFUX1VOSUNPREUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgpAQCAtMTkzLDcgKzE5NSw3IEBACiAgICAgICAgICAgICBlbWl0KG9wKQogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgYXYgPSBDSF9MT0NBTEVbYXZdCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgYXYgPSBDSF9VTklDT0RFW2F2XQogICAgICAgICAgICAgZW1pdChhdikKICAgICAgICAgZWxpZiBvcCBpcyBHUk9VUFJFRjoKQEAgLTIzNyw3ICsyMzksNyBAQAogICAgICAgICBlbGlmIG9wIGlzIENBVEVHT1JZOgogICAgICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6CiAgICAgICAgICAgICAgICAgZW1pdChDSF9MT0NBTEVbYXZdKQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGVtaXQoQ0hfVU5JQ09ERVthdl0pCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVtaXQoYXYpCkBAIC00MDksNDIgKzQxMSw0MiBAQAogICAgICAgICAgICAgdGFibGVbaV0gPSBpZHggKyAxCiAgICAgcmV0dXJuIHRhYmxlCiAKLWRlZiBfY29tcGlsZV9pbmZvKGNvZGUsIHBhdHRlcm4sIGZsYWdzKToKLSAgICAjIGludGVybmFsOiBjb21waWxlIGFuIGluZm8gYmxvY2suICBpbiB0aGUgY3VycmVudCB2ZXJzaW9uLAotICAgICMgdGhpcyBjb250YWlucyBtaW4vbWF4IHBhdHRlcm4gd2lkdGgsIGFuZCBhbiBvcHRpb25hbCBsaXRlcmFsCi0gICAgIyBwcmVmaXggb3IgYSBjaGFyYWN0ZXIgbWFwCi0gICAgbG8sIGhpID0gcGF0dGVybi5nZXR3aWR0aCgpCi0gICAgaWYgaGkgPiBNQVhDT0RFOgotICAgICAgICBoaSA9IE1BWENPREUKLSAgICBpZiBsbyA9PSAwOgotICAgICAgICBjb2RlLmV4dGVuZChbSU5GTywgNCwgMCwgbG8sIGhpXSkKLSAgICAgICAgcmV0dXJuCi0gICAgIyBsb29rIGZvciBhIGxpdGVyYWwgcHJlZml4CitkZWYgX2dldF9saXRlcmFsX3ByZWZpeChwYXR0ZXJuKToKKyAgICAjIGxvb2sgZm9yIGxpdGVyYWwgcHJlZml4CiAgICAgcHJlZml4ID0gW10KICAgICBwcmVmaXhhcHBlbmQgPSBwcmVmaXguYXBwZW5kCi0gICAgcHJlZml4X3NraXAgPSAwCisgICAgcHJlZml4X3NraXAgPSBOb25lCisgICAgZm9yIG9wLCBhdiBpbiBwYXR0ZXJuLmRhdGE6CisgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CisgICAgICAgICAgICBwcmVmaXhhcHBlbmQoYXYpCisgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKKyAgICAgICAgICAgIGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCA9IGF2CisgICAgICAgICAgICBpZiBhZGRfZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBwcmVmaXgxLCBwcmVmaXhfc2tpcDEsIGdvdF9hbGwgPSBfZ2V0X2xpdGVyYWxfcHJlZml4KHApCisgICAgICAgICAgICBpZiBwcmVmaXhfc2tpcCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIGdyb3VwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IGxlbihwcmVmaXgpCisgICAgICAgICAgICAgICAgZWxpZiBwcmVmaXhfc2tpcDEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gbGVuKHByZWZpeCkgKyBwcmVmaXhfc2tpcDEKKyAgICAgICAgICAgIHByZWZpeC5leHRlbmQocHJlZml4MSkKKyAgICAgICAgICAgIGlmIG5vdCBnb3RfYWxsOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBicmVhaworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBwcmVmaXgsIHByZWZpeF9za2lwLCBUcnVlCisgICAgcmV0dXJuIHByZWZpeCwgcHJlZml4X3NraXAsIEZhbHNlCisKK2RlZiBfZ2V0X2NoYXJzZXRfcHJlZml4KHBhdHRlcm4pOgogICAgIGNoYXJzZXQgPSBbXSAjIG5vdCB1c2VkCiAgICAgY2hhcnNldGFwcGVuZCA9IGNoYXJzZXQuYXBwZW5kCi0gICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgotICAgICAgICAjIGxvb2sgZm9yIGxpdGVyYWwgcHJlZml4Ci0gICAgICAgIGZvciBvcCwgYXYgaW4gcGF0dGVybi5kYXRhOgotICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKLSAgICAgICAgICAgICAgICBpZiBsZW4ocHJlZml4KSA9PSBwcmVmaXhfc2tpcDoKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBwcmVmaXhfc2tpcCArIDEKLSAgICAgICAgICAgICAgICBwcmVmaXhhcHBlbmQoYXYpCi0gICAgICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk4gYW5kIGxlbihhdlsxXSkgPT0gMToKLSAgICAgICAgICAgICAgICBvcCwgYXYgPSBhdlsxXVswXQotICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeGFwcGVuZChhdikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAjIGlmIG5vIHByZWZpeCwgbG9vayBmb3IgY2hhcnNldCBwcmVmaXgKLSAgICAgICAgaWYgbm90IHByZWZpeCBhbmQgcGF0dGVybi5kYXRhOgotICAgICAgICAgICAgb3AsIGF2ID0gcGF0dGVybi5kYXRhWzBdCi0gICAgICAgICAgICBpZiBvcCBpcyBTVUJQQVRURVJOIGFuZCBhdlsxXToKLSAgICAgICAgICAgICAgICBvcCwgYXYgPSBhdlsxXVswXQorICAgIGlmIHBhdHRlcm4uZGF0YToKKyAgICAgICAgb3AsIGF2ID0gcGF0dGVybi5kYXRhWzBdCisgICAgICAgIGlmIG9wIGlzIFNVQlBBVFRFUk46CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgcCBhbmQgbm90IChhZGRfZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKKyAgICAgICAgICAgICAgICBvcCwgYXYgPSBwWzBdCiAgICAgICAgICAgICAgICAgaWYgb3AgaXMgTElURVJBTDoKICAgICAgICAgICAgICAgICAgICAgY2hhcnNldGFwcGVuZCgob3AsIGF2KSkKICAgICAgICAgICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKQEAgLTQ2MCwyMSArNDYyLDQzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBjCi0gICAgICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKLSAgICAgICAgICAgICAgICBjID0gW10KLSAgICAgICAgICAgICAgICBjYXBwZW5kID0gYy5hcHBlbmQKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBhdlsxXToKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBvcCwgYXYgPSBwWzBdCi0gICAgICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXBwZW5kKChvcCwgYXYpKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CisgICAgICAgICAgICBjID0gW10KKyAgICAgICAgICAgIGNhcHBlbmQgPSBjLmFwcGVuZAorICAgICAgICAgICAgZm9yIHAgaW4gYXZbMV06CisgICAgICAgICAgICAgICAgaWYgbm90IHA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQorICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CisgICAgICAgICAgICAgICAgICAgIGNhcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9IGMKLSAgICAgICAgICAgIGVsaWYgb3AgaXMgSU46Ci0gICAgICAgICAgICAgICAgY2hhcnNldCA9IGF2CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBjCisgICAgICAgIGVsaWYgb3AgaXMgSU46CisgICAgICAgICAgICBjaGFyc2V0ID0gYXYKKyAgICByZXR1cm4gY2hhcnNldAorCitkZWYgX2NvbXBpbGVfaW5mbyhjb2RlLCBwYXR0ZXJuLCBmbGFncyk6CisgICAgIyBpbnRlcm5hbDogY29tcGlsZSBhbiBpbmZvIGJsb2NrLiAgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwKKyAgICAjIHRoaXMgY29udGFpbnMgbWluL21heCBwYXR0ZXJuIHdpZHRoLCBhbmQgYW4gb3B0aW9uYWwgbGl0ZXJhbAorICAgICMgcHJlZml4IG9yIGEgY2hhcmFjdGVyIG1hcAorICAgIGxvLCBoaSA9IHBhdHRlcm4uZ2V0d2lkdGgoKQorICAgIGlmIGhpID4gTUFYQ09ERToKKyAgICAgICAgaGkgPSBNQVhDT0RFCisgICAgaWYgbG8gPT0gMDoKKyAgICAgICAgY29kZS5leHRlbmQoW0lORk8sIDQsIDAsIGxvLCBoaV0pCisgICAgICAgIHJldHVybgorICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAorICAgIHByZWZpeCA9IFtdCisgICAgcHJlZml4X3NraXAgPSAwCisgICAgY2hhcnNldCA9IFtdICMgbm90IHVzZWQKKyAgICBpZiBub3QgKGZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6CisgICAgICAgICMgbG9vayBmb3IgbGl0ZXJhbCBwcmVmaXgKKyAgICAgICAgcHJlZml4LCBwcmVmaXhfc2tpcCwgZ290X2FsbCA9IF9nZXRfbGl0ZXJhbF9wcmVmaXgocGF0dGVybikKKyAgICAgICAgIyBpZiBubyBwcmVmaXgsIGxvb2sgZm9yIGNoYXJzZXQgcHJlZml4CisgICAgICAgIGlmIG5vdCBwcmVmaXg6CisgICAgICAgICAgICBjaGFyc2V0ID0gX2dldF9jaGFyc2V0X3ByZWZpeChwYXR0ZXJuKQogIyMgICAgIGlmIHByZWZpeDoKICMjICAgICAgICAgcHJpbnQoIioqKiBQUkVGSVgiLCBwcmVmaXgsIHByZWZpeF9za2lwKQogIyMgICAgIGlmIGNoYXJzZXQ6CkBAIC00ODcsNyArNTExLDcgQEAKICAgICBtYXNrID0gMAogICAgIGlmIHByZWZpeDoKICAgICAgICAgbWFzayA9IFNSRV9JTkZPX1BSRUZJWAotICAgICAgICBpZiBsZW4ocHJlZml4KSA9PSBwcmVmaXhfc2tpcCA9PSBsZW4ocGF0dGVybi5kYXRhKToKKyAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZSBhbmQgZ290X2FsbDoKICAgICAgICAgICAgIG1hc2sgPSBtYXNrIHwgU1JFX0lORk9fTElURVJBTAogICAgIGVsaWYgY2hhcnNldDoKICAgICAgICAgbWFzayA9IG1hc2sgfCBTUkVfSU5GT19DSEFSU0VUCkBAIC01MDIsNiArNTI2LDggQEAKICAgICAjIGFkZCBsaXRlcmFsIHByZWZpeAogICAgIGlmIHByZWZpeDoKICAgICAgICAgZW1pdChsZW4ocHJlZml4KSkgIyBsZW5ndGgKKyAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZToKKyAgICAgICAgICAgIHByZWZpeF9za2lwID0gIGxlbihwcmVmaXgpCiAgICAgICAgIGVtaXQocHJlZml4X3NraXApICMgc2tpcAogICAgICAgICBjb2RlLmV4dGVuZChwcmVmaXgpCiAgICAgICAgICMgZ2VuZXJhdGUgb3ZlcmxhcCB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL3NyZV9wYXJzZS5weSBiL0xpYi9zcmVfcGFyc2UucHkKaW5kZXggNGZmNTBkMS4uYWIzN2ZkMyAxMDA2NDQKLS0tIGEvTGliL3NyZV9wYXJzZS5weQorKysgYi9MaWIvc3JlX3BhcnNlLnB5CkBAIC02NSw2ICs2NSwxMiBAQAogICAgICJ1IjogU1JFX0ZMQUdfVU5JQ09ERSwKIH0KIAorR0xPQkFMX0ZMQUdTID0gKFNSRV9GTEFHX0FTQ0lJIHwgU1JFX0ZMQUdfTE9DQUxFIHwgU1JFX0ZMQUdfVU5JQ09ERSB8CisgICAgICAgICAgICAgICAgU1JFX0ZMQUdfREVCVUcgfCBTUkVfRkxBR19URU1QTEFURSkKKworY2xhc3MgVmVyYm9zZShFeGNlcHRpb24pOgorICAgIHBhc3MKKwogY2xhc3MgUGF0dGVybjoKICAgICAjIG1hc3RlciBwYXR0ZXJuIG9iamVjdC4gIGtlZXBzIHRyYWNrIG9mIGdsb2JhbCBhdHRyaWJ1dGVzCiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtMTg0LDcgKzE5MCw3IEBACiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKICAgICAgICAgICAgICAgICBoaSA9IGhpICsgagogICAgICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgotICAgICAgICAgICAgICAgIGksIGogPSBhdlsxXS5nZXR3aWR0aCgpCisgICAgICAgICAgICAgICAgaSwgaiA9IGF2Wy0xXS5nZXR3aWR0aCgpCiAgICAgICAgICAgICAgICAgbG8gPSBsbyArIGkKICAgICAgICAgICAgICAgICBoaSA9IGhpICsgagogICAgICAgICAgICAgZWxpZiBvcCBpbiBfUkVQRUFUQ09ERVM6CkBAIC0yNzMsNiArMjc5LDkgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgcmVzdWx0ICs9IGMKICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBwb3Moc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgICBkZWYgdGVsbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuaW5kZXggLSBsZW4oc2VsZi5uZXh0IG9yICcnKQogICAgIGRlZiBzZWVrKHNlbGYsIGluZGV4KToKQEAgLTI4MiwzMyArMjkxLDYgQEAKICAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnLCBvZmZzZXQ9MCk6CiAgICAgICAgIHJldHVybiBlcnJvcihtc2csIHNlbGYuc3RyaW5nLCBzZWxmLnRlbGwoKSAtIG9mZnNldCkKIAotIyBUaGUgZm9sbG93aW5nIHRocmVlIGZ1bmN0aW9ucyBhcmUgbm90IHVzZWQgaW4gdGhpcyBtb2R1bGUgYW55bW9yZSwgYnV0IHdlIGtlZXAKLSMgdGhlbSBoZXJlICh3aXRoIERlcHJlY2F0aW9uV2FybmluZ3MpIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KLQotZGVmIGlzaWRlbnQoY2hhcik6Ci0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgd2FybmluZ3Mud2Fybignc3JlX3BhcnNlLmlzaWRlbnQoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiAiYSIgPD0gY2hhciA8PSAieiIgb3IgIkEiIDw9IGNoYXIgPD0gIloiIG9yIGNoYXIgPT0gIl8iCi0KLWRlZiBpc2RpZ2l0KGNoYXIpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc2RpZ2l0KCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gIjAiIDw9IGNoYXIgPD0gIjkiCi0KLWRlZiBpc25hbWUobmFtZSk6Ci0gICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgd2FybmluZ3Mud2Fybignc3JlX3BhcnNlLmlzbmFtZSgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgIyBjaGVjayB0aGF0IGdyb3VwIG5hbWUgaXMgYSB2YWxpZCBzdHJpbmcKLSAgICBpZiBub3QgaXNpZGVudChuYW1lWzBdKToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZm9yIGNoYXIgaW4gbmFtZVsxOl06Ci0gICAgICAgIGlmIG5vdCBpc2lkZW50KGNoYXIpIGFuZCBub3QgaXNkaWdpdChjaGFyKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBUcnVlCi0KIGRlZiBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgZXNjYXBlKToKICAgICAjIGhhbmRsZSBlc2NhcGUgY29kZSBpbnNpZGUgY2hhcmFjdGVyIGNsYXNzCiAgICAgY29kZSA9IEVTQ0FQRVMuZ2V0KGVzY2FwZSkKQEAgLTM1MSw5ICszMzMsNyBAQAogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgogICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCkBAIC00MTUsMTggKzM5NSwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoZ3JvdXAsIHNvdXJjZSkKICAgICAgICAgICAgICAgICByZXR1cm4gR1JPVVBSRUYsIGdyb3VwCi0gICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwgbGVuKGVzY2FwZSkpCisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGdyb3VwLCBsZW4oZXNjYXBlKSAtIDEpCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD04KQorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKIAotZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkPVRydWUpOgorZGVmIF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSwgbmVzdGVkPVRydWUpOgogICAgICMgcGFyc2UgYW4gYWx0ZXJuYXRpb246IGF8YnxjCiAKICAgICBpdGVtcyA9IFtdCkBAIC00MzQsNyArNDEyLDcgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIHN0YXJ0ID0gc291cmNlLnRlbGwoKQogICAgIHdoaWxlIFRydWU6Ci0gICAgICAgIGl0ZW1zYXBwZW5kKF9wYXJzZShzb3VyY2UsIHN0YXRlKSkKKyAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpKQogICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goInwiKToKICAgICAgICAgICAgIGJyZWFrCiAKQEAgLTQ3NiwxMCArNDU0LDEwIEBACiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEJSQU5DSCwgKE5vbmUsIGl0ZW1zKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotZGVmIF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXApOgotICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCitkZWYgX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSk6CisgICAgaXRlbV95ZXMgPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICBpZiBzb3VyY2UubWF0Y2goInwiKToKLSAgICAgICAgaXRlbV9ubyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQorICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgICAgIGlmIHNvdXJjZS5uZXh0ID09ICJ8IjoKICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiKQogICAgIGVsc2U6CkBAIC00ODgsNyArNDY2LDcgQEAKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoR1JPVVBSRUZfRVhJU1RTLCAoY29uZGdyb3VwLCBpdGVtX3llcywgaXRlbV9ubykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLWRlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSk6CitkZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpOgogICAgICMgcGFyc2UgYSBzaW1wbGUgcGF0dGVybgogICAgIHN1YnBhdHRlcm4gPSBTdWJQYXR0ZXJuKHN0YXRlKQogCkBAIC00OTgsNyArNDc2LDYgQEAKICAgICBzb3VyY2VtYXRjaCA9IHNvdXJjZS5tYXRjaAogICAgIF9sZW4gPSBsZW4KICAgICBfb3JkID0gb3JkCi0gICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQogCiAgICAgd2hpbGUgVHJ1ZToKIApAQCAtNjUyLDYgKzYyOSw4IEBACiAgICAgICAgICAgICBncm91cCA9IFRydWUKICAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgICAgICBjb25kZ3JvdXAgPSBOb25lCisgICAgICAgICAgICBhZGRfZmxhZ3MgPSAwCisgICAgICAgICAgICBkZWxfZmxhZ3MgPSAwCiAgICAgICAgICAgICBpZiBzb3VyY2VtYXRjaCgiPyIpOgogICAgICAgICAgICAgICAgICMgb3B0aW9ucwogICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQpAQCAtNzEzLDcgKzY5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBsb29rYmVoaW5kZ3JvdXBzID0gc3RhdGUubG9va2JlaGluZGdyb3VwcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5ncm91cHMKLSAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgaWYgZGlyIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvb2tiZWhpbmRncm91cHMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzID0gTm9uZQpAQCAtNzQ2LDIyICs3MjUsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBncm91cCBudW1iZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbmRncm91cCA+PSBNQVhHUk9VUFM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjb25kbmFtZSkgKyAxKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBjb25kZ3JvdXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY29uZG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoY29uZGdyb3VwLCBzb3VyY2UpCi0gICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluIEZMQUdTOgorICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUyBvciBjaGFyID09ICItIjoKICAgICAgICAgICAgICAgICAgICAgIyBmbGFncwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmxhZ3MgfD0gRkxBR1NbY2hhcl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyApIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIikiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZmxhZyIsIGxlbihjaGFyKSkKLSAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBwb3MgPSBzb3VyY2UucG9zCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6ICAjIGdsb2JhbCBmbGFncworICAgICAgICAgICAgICAgICAgICAgICAgaWYgcG9zICE9IDM6ICAjICIoP3giCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uuc3RyaW5nWzoyMF0sICAjIHRydW5jYXRlIGxvbmcgcmVnZXhlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAodHJ1bmNhdGVkKScgaWYgbGVuKHNvdXJjZS5zdHJpbmcpID4gMjAgZWxzZSAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBhZGRfZmxhZ3MsIGRlbF9mbGFncyA9IGZsYWdzCisgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBleHRlbnNpb24gPyIgKyBjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMSkKQEAgLTc3MywxNSArNzU2LDE3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKGVyci5tc2csIGxlbihuYW1lKSArIDEpIGZyb20gTm9uZQogICAgICAgICAgICAgaWYgY29uZGdyb3VwOgotICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKQorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwLCB2ZXJib3NlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQorICAgICAgICAgICAgICAgIHN1Yl92ZXJib3NlID0gKCh2ZXJib3NlIG9yIChhZGRfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IChkZWxfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSkKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBzdWJfdmVyYm9zZSkKICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubWF0Y2goIikiKToKICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCiAgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzdGF0ZS5jbG9zZWdyb3VwKGdyb3VwLCBwKQotICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCisgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChTVUJQQVRURVJOLCAoZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJeIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFULCBBVF9CRUdJTk5JTkcpKQpAQCAtNzk0LDE0ICs3NzksNTggQEAKIAogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKK2RlZiBfcGFyc2VfZmxhZ3Moc291cmNlLCBzdGF0ZSwgY2hhcik6CisgICAgc291cmNlZ2V0ID0gc291cmNlLmdldAorICAgIGFkZF9mbGFncyA9IDAKKyAgICBkZWxfZmxhZ3MgPSAwCisgICAgaWYgY2hhciAhPSAiLSI6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBhZGRfZmxhZ3MgfD0gRkxBR1NbY2hhcl0KKyAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyAtLCA6IG9yICkiKQorICAgICAgICAgICAgaWYgY2hhciBpbiAiKS06IjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyAtLCA6IG9yICkiCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgIGlmIGNoYXIgPT0gIikiOgorICAgICAgICBpZiAoKGFkZF9mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpIGFuZAorICAgICAgICAgICAgbm90IChzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpKToKKyAgICAgICAgICAgIHJhaXNlIFZlcmJvc2UKKyAgICAgICAgc3RhdGUuZmxhZ3MgfD0gYWRkX2ZsYWdzCisgICAgICAgIHJldHVybiBOb25lCisgICAgaWYgYWRkX2ZsYWdzICYgR0xPQkFMX0ZMQUdTOgorICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9uIGdsb2JhbCBmbGFnIiwgMSkKKyAgICBpZiBjaGFyID09ICItIjoKKyAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyBmbGFnIikKKyAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIGZsYWciCisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY2hhcikpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkZWxfZmxhZ3MgfD0gRkxBR1NbY2hhcl0KKyAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyA6IikKKyAgICAgICAgICAgIGlmIGNoYXIgPT0gIjoiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIDoiCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgIGFzc2VydCBjaGFyID09ICI6IgorICAgIGlmIGRlbF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvZmYgZ2xvYmFsIGZsYWciLCAxKQorICAgIGlmIGFkZF9mbGFncyAmIGRlbF9mbGFnczoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBmbGFnIHR1cm5lZCBvbiBhbmQgb2ZmIiwgMSkKKyAgICByZXR1cm4gYWRkX2ZsYWdzLCBkZWxfZmxhZ3MKKwogZGVmIGZpeF9mbGFncyhzcmMsIGZsYWdzKToKICAgICAjIENoZWNrIGFuZCBmaXggZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIHBhdHRlcm4gKHN0ciBvciBieXRlcykKICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKToKICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkxPQ0FMRSBmbGFnIHdpdGggYSBzdHIgcGF0dGVybiBpcyBkZXByZWNhdGVkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHVzZSBMT0NBTEUgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4iKQogICAgICAgICBpZiBub3QgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKICAgICAgICAgICAgIGZsYWdzIHw9IFNSRV9GTEFHX1VOSUNPREUKICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CkBAIC04MTAsMTAgKzgzOSw3IEBACiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgVU5JQ09ERSBmbGFnIHdpdGggYSBieXRlcyBwYXR0ZXJuIikKICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUgYW5kIGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZSIpCiAgICAgcmV0dXJuIGZsYWdzCiAKIGRlZiBwYXJzZShzdHIsIGZsYWdzPTAsIHBhdHRlcm49Tm9uZSk6CkBAIC04MjYsMTggKzg1MiwyMyBAQAogICAgIHBhdHRlcm4uZmxhZ3MgPSBmbGFncwogICAgIHBhdHRlcm4uc3RyID0gc3RyCiAKLSAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIDApCisgICAgdHJ5OgorICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIGZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSwgRmFsc2UpCisgICAgZXhjZXB0IFZlcmJvc2U6CisgICAgICAgICMgdGhlIFZFUkJPU0UgZmxhZyB3YXMgc3dpdGNoZWQgb24gaW5zaWRlIHRoZSBwYXR0ZXJuLiAgdG8gYmUKKyAgICAgICAgIyBvbiB0aGUgc2FmZSBzaWRlLCB3ZSdsbCBwYXJzZSB0aGUgd2hvbGUgdGhpbmcgYWdhaW4uLi4KKyAgICAgICAgcGF0dGVybiA9IFBhdHRlcm4oKQorICAgICAgICBwYXR0ZXJuLmZsYWdzID0gZmxhZ3MgfCBTUkVfRkxBR19WRVJCT1NFCisgICAgICAgIHBhdHRlcm4uc3RyID0gc3RyCisgICAgICAgIHNvdXJjZS5zZWVrKDApCisgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgVHJ1ZSwgRmFsc2UpCisKICAgICBwLnBhdHRlcm4uZmxhZ3MgPSBmaXhfZmxhZ3Moc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCiAKICAgICBpZiBzb3VyY2UubmV4dCBpcyBub3QgTm9uZToKICAgICAgICAgYXNzZXJ0IHNvdXJjZS5uZXh0ID09ICIpIgogICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQogCi0gICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpIGFuZCBwLnBhdHRlcm4uZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFOgotICAgICAgICAjIHRoZSBWRVJCT1NFIGZsYWcgd2FzIHN3aXRjaGVkIG9uIGluc2lkZSB0aGUgcGF0dGVybi4gIHRvIGJlCi0gICAgICAgICMgb24gdGhlIHNhZmUgc2lkZSwgd2UnbGwgcGFyc2UgdGhlIHdob2xlIHRoaW5nIGFnYWluLi4uCi0gICAgICAgIHJldHVybiBwYXJzZShzdHIsIHAucGF0dGVybi5mbGFncykKLQogICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfREVCVUc6CiAgICAgICAgIHAuZHVtcCgpCiAKQEAgLTg1Miw3ICs4ODMsOSBAQAogICAgIGxpdGVyYWxzID0gW10KICAgICBsaXRlcmFsID0gW10KICAgICBsYXBwZW5kID0gbGl0ZXJhbC5hcHBlbmQKLSAgICBkZWYgYWRkZ3JvdXAoaW5kZXgpOgorICAgIGRlZiBhZGRncm91cChpbmRleCwgcG9zKToKKyAgICAgICAgaWYgaW5kZXggPiBwYXR0ZXJuLmdyb3VwczoKKyAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGluZGV4LCBwb3MpCiAgICAgICAgIGlmIGxpdGVyYWw6CiAgICAgICAgICAgICBsaXRlcmFscy5hcHBlbmQoJycuam9pbihsaXRlcmFsKSkKICAgICAgICAgICAgIGRlbCBsaXRlcmFsWzpdCkBAIC04ODUsOSArOTE4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAlciIgJSBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKICAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXggPj0gTUFYR1JPVVBTOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihuYW1lKSArIDEpCi0gICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW5kZXgpCisgICAgICAgICAgICAgICAgYWRkZ3JvdXAoaW5kZXgsIGxlbihuYW1lKSArIDEpCiAgICAgICAgICAgICBlbGlmIGMgPT0gIjAiOgogICAgICAgICAgICAgICAgIGlmIHMubmV4dCBpbiBPQ1RESUdJVFM6CiAgICAgICAgICAgICAgICAgICAgIHRoaXMgKz0gc2dldCgpCkBAIC05MDgsMTUgKzk0MSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhbmdlIDAtMG8zNzcnICUgdGhpcywgbGVuKHRoaXMpKQogICAgICAgICAgICAgICAgICAgICAgICAgbGFwcGVuZChjaHIoYykpCiAgICAgICAgICAgICAgICAgaWYgbm90IGlzb2N0YWw6Ci0gICAgICAgICAgICAgICAgICAgIGFkZGdyb3VwKGludCh0aGlzWzE6XSkpCisgICAgICAgICAgICAgICAgICAgIGFkZGdyb3VwKGludCh0aGlzWzE6XSksIGxlbih0aGlzKSAtIDEpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgdGhpcyA9IGNocihFU0NBUEVTW3RoaXNdWzFdKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCdiYWQgZXNjYXBlICVzJyAlIHRoaXMsIGxlbih0aGlzKSkKICAgICAgICAgICAgICAgICBsYXBwZW5kKHRoaXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsYXBwZW5kKHRoaXMpCkBAIC05MzcsNSArOTY4LDUgQEAKICAgICAgICAgZm9yIGluZGV4LCBncm91cCBpbiBncm91cHM6CiAgICAgICAgICAgICBsaXRlcmFsc1tpbmRleF0gPSBnKGdyb3VwKSBvciBlbXB0eQogICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICByYWlzZSBlcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiKQorICAgICAgICByYWlzZSBlcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgaW5kZXgpCiAgICAgcmV0dXJuIGVtcHR5LmpvaW4obGl0ZXJhbHMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBlMTkxMzkwLi44YWQ0YTMzIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTUyLDYgKzUyLDggQEAKIFBST1RPQ09MX1NTTHYzCiBQUk9UT0NPTF9TU0x2MjMKIFBST1RPQ09MX1RMUworUFJPVE9DT0xfVExTX0NMSUVOVAorUFJPVE9DT0xfVExTX1NFUlZFUgogUFJPVE9DT0xfVExTdjEKIFBST1RPQ09MX1RMU3YxXzEKIFBST1RPQ09MX1RMU3YxXzIKQEAgLTk0LDE3ICs5NiwxNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCi1mcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0sIEludEVudW0gYXMgX0ludEVudW0KK2Zyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bSwgSW50RmxhZyBhcyBfSW50RmxhZwogCiBpbXBvcnQgX3NzbCAgICAgICAgICAgICAjIGlmIHdlIGNhbid0IGltcG9ydCBpdCwgbGV0IHRoZSBlcnJvciBwcm9wYWdhdGUKIAogZnJvbSBfc3NsIGltcG9ydCBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSLCBPUEVOU1NMX1ZFUlNJT05fSU5GTywgT1BFTlNTTF9WRVJTSU9OCi1mcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8KK2Zyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIE1lbW9yeUJJTywgU1NMU2Vzc2lvbgogZnJvbSBfc3NsIGltcG9ydCAoCiAgICAgU1NMRXJyb3IsIFNTTFplcm9SZXR1cm5FcnJvciwgU1NMV2FudFJlYWRFcnJvciwgU1NMV2FudFdyaXRlRXJyb3IsCiAgICAgU1NMU3lzY2FsbEVycm9yLCBTU0xFT0ZFcnJvciwKICAgICApCi1mcm9tIF9zc2wgaW1wb3J0IENFUlRfTk9ORSwgQ0VSVF9PUFRJT05BTCwgQ0VSVF9SRVFVSVJFRAogZnJvbSBfc3NsIGltcG9ydCB0eHQyb2JqIGFzIF90eHQyb2JqLCBuaWQyb2JqIGFzIF9uaWQyb2JqCiBmcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2FkZCwgUkFORF9ieXRlcywgUkFORF9wc2V1ZG9fYnl0ZXMKIHRyeToKQEAgLTExMywzMiArMTE0LDQ3IEBACiAgICAgIyBMaWJyZVNTTCBkb2VzIG5vdCBwcm92aWRlIFJBTkRfZWdkCiAgICAgcGFzcwogCi1kZWYgX2ltcG9ydF9zeW1ib2xzKHByZWZpeCk6Ci0gICAgZm9yIG4gaW4gZGlyKF9zc2wpOgotICAgICAgICBpZiBuLnN0YXJ0c3dpdGgocHJlZml4KToKLSAgICAgICAgICAgIGdsb2JhbHMoKVtuXSA9IGdldGF0dHIoX3NzbCwgbikKLQotX2ltcG9ydF9zeW1ib2xzKCdPUF8nKQotX2ltcG9ydF9zeW1ib2xzKCdBTEVSVF9ERVNDUklQVElPTl8nKQotX2ltcG9ydF9zeW1ib2xzKCdTU0xfRVJST1JfJykKLV9pbXBvcnRfc3ltYm9scygnVkVSSUZZXycpCiAKIGZyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOCi0KIGZyb20gX3NzbCBpbXBvcnQgX09QRU5TU0xfQVBJX1ZFUlNJT04KIAorCiBfSW50RW51bS5fY29udmVydCgKLSAgICAgICAgJ19TU0xNZXRob2QnLCBfX25hbWVfXywKLSAgICAgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCi0gICAgICAgIHNvdXJjZT1fc3NsKQorICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnUFJPVE9DT0xfJykgYW5kIG5hbWUgIT0gJ1BST1RPQ09MX1NTTHYyMycsCisgICAgc291cmNlPV9zc2wpCisKK19JbnRGbGFnLl9jb252ZXJ0KAorICAgICdPcHRpb25zJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnT1BfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdBbGVydERlc2NyaXB0aW9uJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnQUxFUlRfREVTQ1JJUFRJT05fJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdTU0xFcnJvck51bWJlcicsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1NTTF9FUlJPUl8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEZsYWcuX2NvbnZlcnQoCisgICAgJ1ZlcmlmeUZsYWdzJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnVkVSSUZZXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAnVmVyaWZ5TW9kZScsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ0NFUlRfJyksCisgICAgc291cmNlPV9zc2wpCisKIAogUFJPVE9DT0xfU1NMdjIzID0gX1NTTE1ldGhvZC5QUk9UT0NPTF9TU0x2MjMgPSBfU1NMTWV0aG9kLlBST1RPQ09MX1RMUwogX1BST1RPQ09MX05BTUVTID0ge3ZhbHVlOiBuYW1lIGZvciBuYW1lLCB2YWx1ZSBpbiBfU1NMTWV0aG9kLl9fbWVtYmVyc19fLml0ZW1zKCl9CiAKLXRyeToKLSAgICBfU1NMdjJfSUZfRVhJU1RTID0gUFJPVE9DT0xfU1NMdjIKLWV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgX1NTTHYyX0lGX0VYSVNUUyA9IE5vbmUKK19TU0x2Ml9JRl9FWElTVFMgPSBnZXRhdHRyKF9TU0xNZXRob2QsICdQUk9UT0NPTF9TU0x2MicsIE5vbmUpCisKIAogaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CiAgICAgZnJvbSBfc3NsIGltcG9ydCBlbnVtX2NlcnRpZmljYXRlcywgZW51bV9jcmxzCkBAIC0zNzcsMTggKzM5MywxOCBAQAogICAgIGRlZiB3cmFwX3NvY2tldChzZWxmLCBzb2NrLCBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIHNlcnZlcl9zaWRlPXNlcnZlcl9zaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PWRvX2hhbmRzaGFrZV9vbl9jb25uZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPXN1cHByZXNzX3JhZ2dlZF9lb2ZzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZikKKyAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmLCBfc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHdyYXBfYmlvKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHNzbG9iaiA9IHNlbGYuX3dyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqKQorICAgICAgICByZXR1cm4gU1NMT2JqZWN0KHNzbG9iaiwgc2Vzc2lvbj1zZXNzaW9uKQogCiAgICAgZGVmIHNldF9ucG5fcHJvdG9jb2xzKHNlbGYsIG5wbl9wcm90b2NvbHMpOgogICAgICAgICBwcm90b3MgPSBieXRlYXJyYXkoKQpAQCAtNDM0LDYgKzQ1MCwzNCBAQAogICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyhzdG9yZW5hbWUsIHB1cnBvc2UpCiAgICAgICAgIHNlbGYuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBvcHRpb25zKHNlbGYpOgorICAgICAgICByZXR1cm4gT3B0aW9ucyhzdXBlcigpLm9wdGlvbnMpCisKKyAgICBAb3B0aW9ucy5zZXR0ZXIKKyAgICBkZWYgb3B0aW9ucyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLm9wdGlvbnMuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJpZnlfZmxhZ3Moc2VsZik6CisgICAgICAgIHJldHVybiBWZXJpZnlGbGFncyhzdXBlcigpLnZlcmlmeV9mbGFncykKKworICAgIEB2ZXJpZnlfZmxhZ3Muc2V0dGVyCisgICAgZGVmIHZlcmlmeV9mbGFncyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLnZlcmlmeV9mbGFncy5fX3NldF9fKHNlbGYsIHZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IHN1cGVyKCkudmVyaWZ5X21vZGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFZlcmlmeU1vZGUodmFsdWUpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBAdmVyaWZ5X21vZGUuc2V0dGVyCisgICAgZGVmIHZlcmlmeV9tb2RlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkudmVyaWZ5X21vZGUuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKwogCiBkZWYgY3JlYXRlX2RlZmF1bHRfY29udGV4dChwdXJwb3NlPVB1cnBvc2UuU0VSVkVSX0FVVEgsICosIGNhZmlsZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwYXRoPU5vbmUsIGNhZGF0YT1Ob25lKToKQEAgLTQ0NiwzMiArNDkwLDE2IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKIAorICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICMgYnkgZGVmYXVsdC4KICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChQUk9UT0NPTF9UTFMpCiAKLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKLQotICAgICMgU1NMdjMgaGFzIHByb2JsZW1hdGljIHNlY3VyaXR5IGFuZCBpcyBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkCi0gICAgIyBjbGllbnRzIHN1Y2ggYXMgSUU2IG9uIFdpbmRvd3MgWFAKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjMKLQotICAgICMgZGlzYWJsZSBjb21wcmVzc2lvbiB0byBwcmV2ZW50IENSSU1FIGF0dGFja3MgKE9wZW5TU0wgMS4wKykKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQotCiAgICAgaWYgcHVycG9zZSA9PSBQdXJwb3NlLlNFUlZFUl9BVVRIOgogICAgICAgICAjIHZlcmlmeSBjZXJ0cyBhbmQgaG9zdCBuYW1lIGluIGNsaWVudCBtb2RlCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBDRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICAgZWxpZiBwdXJwb3NlID09IFB1cnBvc2UuQ0xJRU5UX0FVVEg6Ci0gICAgICAgICMgUHJlZmVyIHRoZSBzZXJ2ZXIncyBjaXBoZXJzIGJ5IGRlZmF1bHQgc28gdGhhdCB3ZSBnZXQgc3Ryb25nZXIKLSAgICAgICAgIyBlbmNyeXB0aW9uCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UiLCAwKQotCi0gICAgICAgICMgVXNlIHNpbmdsZSB1c2Uga2V5cyBpbiBvcmRlciB0byBpbXByb3ZlIGZvcndhcmQgc2VjcmVjeQotICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCi0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKQotCi0gICAgICAgICMgZGlzYWxsb3cgY2lwaGVycyB3aXRoIGtub3duIHZ1bG5lcmFiaWxpdGllcwogICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKF9SRVNUUklDVEVEX1NFUlZFUl9DSVBIRVJTKQogCiAgICAgaWYgY2FmaWxlIG9yIGNhcGF0aCBvciBjYWRhdGE6CkBAIC00OTcsMTIgKzUyNSwxMCBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHB1cnBvc2UsIF9BU04xT2JqZWN0KToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKHB1cnBvc2UpCiAKKyAgICAjIFNTTENvbnRleHQgc2V0cyBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX0NPTVBSRVNTSU9OLAorICAgICMgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFIGFuZCBPUF9TSU5HTEVfRUNESF9VU0UKKyAgICAjIGJ5IGRlZmF1bHQuCiAgICAgY29udGV4dCA9IFNTTENvbnRleHQocHJvdG9jb2wpCi0gICAgIyBTU0x2MiBjb25zaWRlcmVkIGhhcm1mdWwuCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYyCi0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MwogCiAgICAgaWYgY2VydF9yZXFzIGlzIG5vdCBOb25lOgogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCkBAIC01NDgsMTAgKzU3NCwxMiBAQAogICAgICAqIFRoZSBgYGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0YGAgYW5kIGBgc3VwcHJlc3NfcmFnZ2VkX2VvZnNgYCBtYWNoaW5lcnkuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3Nsb2JqLCBvd25lcj1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICBzZWxmLl9zc2xvYmogPSBzc2xvYmoKICAgICAgICAgIyBOb3RlOiBfc3Nsb2JqIHRha2VzIGEgd2VhayByZWZlcmVuY2UgdG8gb3duZXIKICAgICAgICAgc2VsZi5fc3Nsb2JqLm93bmVyID0gb3duZXIgb3Igc2VsZgorICAgICAgICBpZiBzZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY29udGV4dChzZWxmKToKQEAgLTU2Myw2ICs1OTEsMjAgQEAKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAogICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCisgICAgQHByb3BlcnR5CiAgICAgZGVmIHNlcnZlcl9zaWRlKHNlbGYpOgogICAgICAgICAiIiJXaGV0aGVyIHRoaXMgaXMgYSBzZXJ2ZXItc2lkZSBzb2NrZXQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2VydmVyX3NpZGUKQEAgLTY3OSw3ICs3MjEsNyBAQAogICAgICAgICAgICAgICAgICBmYW1pbHk9QUZfSU5FVCwgdHlwZT1TT0NLX1NUUkVBTSwgcHJvdG89MCwgZmlsZW5vPU5vbmUsCiAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLAogICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSk6CisgICAgICAgICAgICAgICAgIF9jb250ZXh0PU5vbmUsIF9zZXNzaW9uPU5vbmUpOgogCiAgICAgICAgIGlmIF9jb250ZXh0OgogICAgICAgICAgICAgc2VsZi5fY29udGV4dCA9IF9jb250ZXh0CkBAIC03MTEsMTEgKzc1MywxNiBAQAogICAgICAgICAjIG1peGVkIGluLgogICAgICAgICBpZiBzb2NrLmdldHNvY2tvcHQoU09MX1NPQ0tFVCwgU09fVFlQRSkgIT0gU09DS19TVFJFQU06CiAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQotICAgICAgICBpZiBzZXJ2ZXJfc2lkZSBhbmQgc2VydmVyX2hvc3RuYW1lOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX2hvc3RuYW1lIGNhbiBvbmx5IGJlIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBjbGllbnQgbW9kZSIpCisgICAgICAgIGlmIHNlcnZlcl9zaWRlOgorICAgICAgICAgICAgaWYgc2VydmVyX2hvc3RuYW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlcnZlcl9ob3N0bmFtZSBjYW4gb25seSBiZSBzcGVjaWZpZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNsaWVudCBtb2RlIikKKyAgICAgICAgICAgIGlmIF9zZXNzaW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlc3Npb24gY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGllbnQgbW9kZSIpCiAgICAgICAgIGlmIHNlbGYuX2NvbnRleHQuY2hlY2tfaG9zdG5hbWUgYW5kIG5vdCBzZXJ2ZXJfaG9zdG5hbWU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjaGVja19ob3N0bmFtZSByZXF1aXJlcyBzZXJ2ZXJfaG9zdG5hbWUiKQorICAgICAgICBzZWxmLl9zZXNzaW9uID0gX3Nlc3Npb24KICAgICAgICAgc2VsZi5zZXJ2ZXJfc2lkZSA9IHNlcnZlcl9zaWRlCiAgICAgICAgIHNlbGYuc2VydmVyX2hvc3RuYW1lID0gc2VydmVyX2hvc3RuYW1lCiAgICAgICAgIHNlbGYuZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QgPSBkb19oYW5kc2hha2Vfb25fY29ubmVjdApAQCAtNzUxLDcgKzc5OCw4IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc3Nsb2JqID0gc2VsZi5fY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgc2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLl9zZXNzaW9uKQogICAgICAgICAgICAgICAgIGlmIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0OgogICAgICAgICAgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5nZXR0aW1lb3V0KCkKICAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA9PSAwLjA6CkBAIC03NzIsNiArODIwLDI0IEBACiAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBjdHgKICAgICAgICAgc2VsZi5fc3Nsb2JqLmNvbnRleHQgPSBjdHgKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uKHNlbGYpOgorICAgICAgICAiIiJUaGUgU1NMU2Vzc2lvbiBmb3IgY2xpZW50IHNvY2tldC4iIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uCisKKyAgICBAc2Vzc2lvbi5zZXR0ZXIKKyAgICBkZWYgc2Vzc2lvbihzZWxmLCBzZXNzaW9uKToKKyAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fc3Nsb2JqLnNlc3Npb24gPSBzZXNzaW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbl9yZXVzZWQoc2VsZik6CisgICAgICAgICIiIldhcyB0aGUgY2xpZW50IHNlc3Npb24gcmV1c2VkIGR1cmluZyBoYW5kc2hha2UiIiIKKyAgICAgICAgaWYgc2VsZi5fc3Nsb2JqIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXNzaW9uX3JldXNlZAorCiAgICAgZGVmIGR1cChzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQoIkNhbid0IGR1cCgpICVzIGluc3RhbmNlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKQEAgLTg5OCw3ICs5NjQsNiBAQAogICAgICAgICAgICAgd2hpbGUgKGNvdW50IDwgYW1vdW50KToKICAgICAgICAgICAgICAgICB2ID0gc2VsZi5zZW5kKGRhdGFbY291bnQ6XSkKICAgICAgICAgICAgICAgICBjb3VudCArPSB2Ci0gICAgICAgICAgICByZXR1cm4gYW1vdW50CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3MpCiAKQEAgLTEwMDUsNyArMTA3MCw4IEBACiAgICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImF0dGVtcHQgdG8gY29ubmVjdCBhbHJlYWR5LWNvbm5lY3RlZCBTU0xTb2NrZXQhIikKICAgICAgICAgc3Nsb2JqID0gc2VsZi5jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBGYWxzZSwgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYpCisgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlbGYuX3Nlc3Npb24pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGNvbm5lY3RfZXg6CiAgICAgICAgICAgICAgICAgcmMgPSBzb2NrZXQuY29ubmVjdF9leChzZWxmLCBhZGRyKQpAQCAtMTA2OCw3ICsxMTM0LDYgQEAKICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCiAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lKToKLQogICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBrZXlmaWxlPWtleWZpbGUsIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIGNlcnRfcmVxcz1jZXJ0X3JlcXMsCiAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2xfdmVyc2lvbiwgY2FfY2VydHM9Y2FfY2VydHMsCmRpZmYgLS1naXQgYS9MaWIvc3RhdGlzdGljcy5weSBiL0xpYi9zdGF0aXN0aWNzLnB5CmluZGV4IDRmNWMxYzEuLjMwZmU1NWMgMTAwNjQ0Ci0tLSBhL0xpYi9zdGF0aXN0aWNzLnB5CisrKyBiL0xpYi9zdGF0aXN0aWNzLnB5CkBAIC0xLDIwICsxLDMgQEAKLSMjICBNb2R1bGUgc3RhdGlzdGljcy5weQotIyMKLSMjICBDb3B5cmlnaHQgKGMpIDIwMTMgU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4uCi0jIwotIyMgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotIyMgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSMjICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSMjCi0jIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0jIwotIyMgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSMjICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotIyMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotIyMgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSMjICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotCiAiIiIKIEJhc2ljIHN0YXRpc3RpY3MgbW9kdWxlLgogCkBAIC0yOCw2ICsxMSw3IEBACiBGdW5jdGlvbiAgICAgICAgICAgIERlc2NyaXB0aW9uCiA9PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogbWVhbiAgICAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKGF2ZXJhZ2UpIG9mIGRhdGEuCitoYXJtb25pY19tZWFuICAgICAgIEhhcm1vbmljIG1lYW4gb2YgZGF0YS4KIG1lZGlhbiAgICAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiBtZWRpYW5fbG93ICAgICAgICAgIExvdyBtZWRpYW4gb2YgZGF0YS4KIG1lZGlhbl9oaWdoICAgICAgICAgSGlnaCBtZWRpYW4gb2YgZGF0YS4KQEAgLTk1LDE2ICs3OSwxOCBAQAogX19hbGxfXyA9IFsgJ1N0YXRpc3RpY3NFcnJvcicsCiAgICAgICAgICAgICAncHN0ZGV2JywgJ3B2YXJpYW5jZScsICdzdGRldicsICd2YXJpYW5jZScsCiAgICAgICAgICAgICAnbWVkaWFuJywgICdtZWRpYW5fbG93JywgJ21lZGlhbl9oaWdoJywgJ21lZGlhbl9ncm91cGVkJywKLSAgICAgICAgICAgICdtZWFuJywgJ21vZGUnLAorICAgICAgICAgICAgJ21lYW4nLCAnbW9kZScsICdoYXJtb25pY19tZWFuJywKICAgICAgICAgICBdCiAKLQogaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IG1hdGgKK2ltcG9ydCBudW1iZXJzCiAKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieQorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnksIGNoYWluCitmcm9tIGJpc2VjdCBpbXBvcnQgYmlzZWN0X2xlZnQsIGJpc2VjdF9yaWdodAogCiAKIApAQCAtMTM0LDcgKzEyMCw4IEBACiAKICAgICBTb21lIHNvdXJjZXMgb2Ygcm91bmQtb2ZmIGVycm9yIHdpbGwgYmUgYXZvaWRlZDoKIAotICAgID4+PiBfc3VtKFsxZTUwLCAxLCAtMWU1MF0gKiAxMDAwKSAgIyBCdWlsdC1pbiBzdW0gcmV0dXJucyB6ZXJvLgorICAgICMgQnVpbHQtaW4gc3VtIHJldHVybnMgemVyby4KKyAgICA+Pj4gX3N1bShbMWU1MCwgMSwgLTFlNTBdICogMTAwMCkKICAgICAoPGNsYXNzICdmbG9hdCc+LCBGcmFjdGlvbigxMDAwLCAxKSwgMzAwMCkKIAogICAgIEZyYWN0aW9ucyBhbmQgRGVjaW1hbHMgYXJlIGFsc28gc3VwcG9ydGVkOgpAQCAtMjIzLDU2ICsyMTAsMjYgQEAKICAgICAgICAgIyBPcHRpbWlzZSB0aGUgY29tbW9uIGNhc2Ugb2YgZmxvYXRzLiBXZSBleHBlY3QgdGhhdCB0aGUgbW9zdCBvZnRlbgogICAgICAgICAjIHVzZWQgbnVtZXJpYyB0eXBlIHdpbGwgYmUgYnVpbHRpbiBmbG9hdHMsIHNvIHRyeSB0byBtYWtlIHRoaXMgYXMKICAgICAgICAgIyBmYXN0IGFzIHBvc3NpYmxlLgotICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0OgorICAgICAgICBpZiB0eXBlKHgpIGlzIGZsb2F0IG9yIHR5cGUoeCkgaXMgRGVjaW1hbDoKICAgICAgICAgICAgIHJldHVybiB4LmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHggbWF5IGJlIGFuIGludCwgRnJhY3Rpb24sIG9yIEludGVncmFsIEFCQy4KICAgICAgICAgICAgIHJldHVybiAoeC5udW1lcmF0b3IsIHguZGVub21pbmF0b3IpCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgZmxvYXQgc3ViY2xhc3MuCisgICAgICAgICAgICAgICAgIyB4IG1heSBiZSBhIGZsb2F0IG9yIERlY2ltYWwgc3ViY2xhc3MuCiAgICAgICAgICAgICAgICAgcmV0dXJuIHguYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAjIHggbWF5IGJlIGEgRGVjaW1hbC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9kZWNpbWFsX3RvX3JhdGlvKHgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIEp1c3QgZ2l2ZSB1cD8KLSAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICMgSnVzdCBnaXZlIHVwPworICAgICAgICAgICAgICAgIHBhc3MKICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgogICAgICAgICAjIGZsb2F0IE5BTiBvciBJTkYuCi0gICAgICAgIGFzc2VydCBub3QgbWF0aC5pc2Zpbml0ZSh4KQorICAgICAgICBhc3NlcnQgbm90IF9pc2Zpbml0ZSh4KQogICAgICAgICByZXR1cm4gKHgsIE5vbmUpCiAgICAgbXNnID0gImNhbid0IGNvbnZlcnQgdHlwZSAne30nIHRvIG51bWVyYXRvci9kZW5vbWluYXRvciIKICAgICByYWlzZSBUeXBlRXJyb3IobXNnLmZvcm1hdCh0eXBlKHgpLl9fbmFtZV9fKSkKIAogCi0jIEZJWE1FIFRoaXMgaXMgZmFzdGVyIHRoYW4gRnJhY3Rpb24uZnJvbV9kZWNpbWFsLCBidXQgc3RpbGwgdG9vIHNsb3cuCi1kZWYgX2RlY2ltYWxfdG9fcmF0aW8oZCk6Ci0gICAgIiIiQ29udmVydCBEZWNpbWFsIGQgdG8gZXhhY3QgaW50ZWdlciByYXRpbyAobnVtZXJhdG9yLCBkZW5vbWluYXRvcikuCi0KLSAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCi0gICAgPj4+IF9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjIuNiIpKQotICAgICgyNiwgMTApCi0KLSAgICAiIiIKLSAgICBzaWduLCBkaWdpdHMsIGV4cCA9IGQuYXNfdHVwbGUoKQotICAgIGlmIGV4cCBpbiAoJ0YnLCAnbicsICdOJyk6ICAjIElORiwgTkFOLCBzTkFOCi0gICAgICAgIGFzc2VydCBub3QgZC5pc19maW5pdGUoKQotICAgICAgICByZXR1cm4gKGQsIE5vbmUpCi0gICAgbnVtID0gMAotICAgIGZvciBkaWdpdCBpbiBkaWdpdHM6Ci0gICAgICAgIG51bSA9IG51bSoxMCArIGRpZ2l0Ci0gICAgaWYgZXhwIDwgMDoKLSAgICAgICAgZGVuID0gMTAqKi1leHAKLSAgICBlbHNlOgotICAgICAgICBudW0gKj0gMTAqKmV4cAotICAgICAgICBkZW4gPSAxCi0gICAgaWYgc2lnbjoKLSAgICAgICAgbnVtID0gLW51bQotICAgIHJldHVybiAobnVtLCBkZW4pCi0KLQogZGVmIF9jb252ZXJ0KHZhbHVlLCBUKToKICAgICAiIiJDb252ZXJ0IHZhbHVlIHRvIGdpdmVuIG51bWVyaWMgdHlwZSBULiIiIgogICAgIGlmIHR5cGUodmFsdWUpIGlzIFQ6CkBAIC0zMDUsNiArMjYyLDMwIEBACiAgICAgcmV0dXJuIHRhYmxlCiAKIAorZGVmIF9maW5kX2x0ZXEoYSwgeCk6CisgICAgJ0xvY2F0ZSB0aGUgbGVmdG1vc3QgdmFsdWUgZXhhY3RseSBlcXVhbCB0byB4JworICAgIGkgPSBiaXNlY3RfbGVmdChhLCB4KQorICAgIGlmIGkgIT0gbGVuKGEpIGFuZCBhW2ldID09IHg6CisgICAgICAgIHJldHVybiBpCisgICAgcmFpc2UgVmFsdWVFcnJvcgorCisKK2RlZiBfZmluZF9ydGVxKGEsIGwsIHgpOgorICAgICdMb2NhdGUgdGhlIHJpZ2h0bW9zdCB2YWx1ZSBleGFjdGx5IGVxdWFsIHRvIHgnCisgICAgaSA9IGJpc2VjdF9yaWdodChhLCB4LCBsbz1sKQorICAgIGlmIGkgIT0gKGxlbihhKSsxKSBhbmQgYVtpLTFdID09IHg6CisgICAgICAgIHJldHVybiBpLTEKKyAgICByYWlzZSBWYWx1ZUVycm9yCisKKworZGVmIF9mYWlsX25lZyh2YWx1ZXMsIGVycm1zZz0nbmVnYXRpdmUgdmFsdWUnKToKKyAgICAiIiJJdGVyYXRlIG92ZXIgdmFsdWVzLCBmYWlsaW5nIGlmIGFueSBhcmUgbGVzcyB0aGFuIHplcm8uIiIiCisgICAgZm9yIHggaW4gdmFsdWVzOgorICAgICAgICBpZiB4IDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCisgICAgICAgIHlpZWxkIHgKKworCiAjID09PSBNZWFzdXJlcyBvZiBjZW50cmFsIHRlbmRlbmN5IChhdmVyYWdlcykgPT09CiAKIGRlZiBtZWFuKGRhdGEpOgpAQCAtMzMzLDYgKzMxNCw1MiBAQAogICAgIHJldHVybiBfY29udmVydCh0b3RhbC9uLCBUKQogCiAKK2RlZiBoYXJtb25pY19tZWFuKGRhdGEpOgorICAgICIiIlJldHVybiB0aGUgaGFybW9uaWMgbWVhbiBvZiBkYXRhLgorCisgICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgbWVhbiBvZiB0aGUgcmVjaXByb2NhbHMgb2YgdGhlIGRhdGEsCisgICAgYW5kIGlzIG9mdGVuIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMgd2hpY2ggYXJlIHJhdGVzCisgICAgb3IgcmF0aW9zLCBmb3IgZXhhbXBsZSBzcGVlZHMuIEV4YW1wbGU6CisKKyAgICBTdXBwb3NlIGFuIGludmVzdG9yIHB1cmNoYXNlcyBhbiBlcXVhbCB2YWx1ZSBvZiBzaGFyZXMgaW4gZWFjaCBvZgorICAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgUC9FIHJhdGlvIGZvciB0aGUgaW52ZXN0b3IncyBwb3J0Zm9saW8/CisKKyAgICA+Pj4gaGFybW9uaWNfbWVhbihbMi41LCAzLCAxMF0pICAjIEZvciBhbiBlcXVhbCBpbnZlc3RtZW50IHBvcnRmb2xpby4KKyAgICAzLjYKKworICAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgIGlzIHRvbyBoaWdoLgorCisgICAgSWYgYGBkYXRhYGAgaXMgZW1wdHksIG9yIGFueSBlbGVtZW50IGlzIGxlc3MgdGhhbiB6ZXJvLAorICAgIGBgaGFybW9uaWNfbWVhbmBgIHdpbGwgcmFpc2UgYGBTdGF0aXN0aWNzRXJyb3JgYC4KKyAgICAiIiIKKyAgICAjIEZvciBhIGp1c3RpZmljYXRpb24gZm9yIHVzaW5nIGhhcm1vbmljIG1lYW4gZm9yIFAvRSByYXRpb3MsIHNlZQorICAgICMgaHR0cDovL2ZpeHRoZXBpdGNoLnBlbGx1Y2lkLmNvbS9jb21wcy1hbmFseXNpcy10aGUtbWlzc2luZy1oYXJtb255LW9mLXN1bW1hcnktc3RhdGlzdGljcy8KKyAgICAjIGh0dHA6Ly9wYXBlcnMuc3Nybi5jb20vc29sMy9wYXBlcnMuY2ZtP2Fic3RyYWN0X2lkPTI2MjEwODcKKyAgICBpZiBpdGVyKGRhdGEpIGlzIGRhdGE6CisgICAgICAgIGRhdGEgPSBsaXN0KGRhdGEpCisgICAgZXJybXNnID0gJ2hhcm1vbmljIG1lYW4gZG9lcyBub3Qgc3VwcG9ydCBuZWdhdGl2ZSB2YWx1ZXMnCisgICAgbiA9IGxlbihkYXRhKQorICAgIGlmIG4gPCAxOgorICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoJ2hhcm1vbmljX21lYW4gcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGRhdGEgcG9pbnQnKQorICAgIGVsaWYgbiA9PSAxOgorICAgICAgICB4ID0gZGF0YVswXQorICAgICAgICBpZiBpc2luc3RhbmNlKHgsIChudW1iZXJzLlJlYWwsIERlY2ltYWwpKToKKyAgICAgICAgICAgIGlmIHggPCAwOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0YXRpc3RpY3NFcnJvcihlcnJtc2cpCisgICAgICAgICAgICByZXR1cm4geAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd1bnN1cHBvcnRlZCB0eXBlJykKKyAgICB0cnk6CisgICAgICAgIFQsIHRvdGFsLCBjb3VudCA9IF9zdW0oMS94IGZvciB4IGluIF9mYWlsX25lZyhkYXRhLCBlcnJtc2cpKQorICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgcmV0dXJuIDAKKyAgICBhc3NlcnQgY291bnQgPT0gbgorICAgIHJldHVybiBfY29udmVydChuL3RvdGFsLCBUKQorCisKICMgRklYTUU6IGludmVzdGlnYXRlIHdheXMgdG8gY2FsY3VsYXRlIG1lZGlhbnMgd2l0aG91dCBzb3J0aW5nPyBRdWlja3NlbGVjdD8KIGRlZiBtZWRpYW4oZGF0YSk6CiAgICAgIiIiUmV0dXJuIHRoZSBtZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgbnVtZXJpYyBkYXRhLgpAQCAtNDQyLDkgKzQ2OSwxNSBAQAogICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICMgTWl4ZWQgdHlwZS4gRm9yIG5vdyB3ZSBqdXN0IGNvZXJjZSB0byBmbG9hdC4KICAgICAgICAgTCA9IGZsb2F0KHgpIC0gZmxvYXQoaW50ZXJ2YWwpLzIKLSAgICBjZiA9IGRhdGEuaW5kZXgoeCkgICMgTnVtYmVyIG9mIHZhbHVlcyBiZWxvdyB0aGUgbWVkaWFuIGludGVydmFsLgotICAgICMgRklYTUUgVGhlIGZvbGxvd2luZyBsaW5lIGNvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGZvciBiaWcgbGlzdHMuCi0gICAgZiA9IGRhdGEuY291bnQoeCkgICMgTnVtYmVyIG9mIGRhdGEgcG9pbnRzIGluIHRoZSBtZWRpYW4gaW50ZXJ2YWwuCisKKyAgICAjIFVzZXMgYmlzZWN0aW9uIHNlYXJjaCB0byBzZWFyY2ggZm9yIHggaW4gZGF0YSB3aXRoIGxvZyhuKSB0aW1lIGNvbXBsZXhpdHkKKyAgICAjIEZpbmQgdGhlIHBvc2l0aW9uIG9mIGxlZnRtb3N0IG9jY3VycmVuY2Ugb2YgeCBpbiBkYXRhCisgICAgbDEgPSBfZmluZF9sdGVxKGRhdGEsIHgpCisgICAgIyBGaW5kIHRoZSBwb3NpdGlvbiBvZiByaWdodG1vc3Qgb2NjdXJyZW5jZSBvZiB4IGluIGRhdGFbbDEuLi5sZW4oZGF0YSldCisgICAgIyBBc3N1bWluZyBhbHdheXMgbDEgPD0gbDIKKyAgICBsMiA9IF9maW5kX3J0ZXEoZGF0YSwgbDEsIHgpCisgICAgY2YgPSBsMQorICAgIGYgPSBsMiAtIGwxICsgMQogICAgIHJldHVybiBMICsgaW50ZXJ2YWwqKG4vMiAtIGNmKS9mCiAKIApkaWZmIC0tZ2l0IGEvTGliL3N0cmluZy5weSBiL0xpYi9zdHJpbmcucHkKaW5kZXggODkyODdjNC4uYzkwMjAwNyAxMDA2NDQKLS0tIGEvTGliL3N0cmluZy5weQorKysgYi9MaWIvc3RyaW5nLnB5CkBAIC0yOCw3ICsyOCw3IEBACiBkaWdpdHMgPSAnMDEyMzQ1Njc4OScKIGhleGRpZ2l0cyA9IGRpZ2l0cyArICdhYmNkZWYnICsgJ0FCQ0RFRicKIG9jdGRpZ2l0cyA9ICcwMTIzNDU2NycKLXB1bmN0dWF0aW9uID0gIiIiISIjJCUmJygpKissLS4vOjs8PT4/QFtcXV5fYHt8fX4iIiIKK3B1bmN0dWF0aW9uID0gciIiIiEiIyQlJicoKSorLC0uLzo7PD0+P0BbXF1eX2B7fH1+IiIiCiBwcmludGFibGUgPSBkaWdpdHMgKyBhc2NpaV9sZXR0ZXJzICsgcHVuY3R1YXRpb24gKyB3aGl0ZXNwYWNlCiAKICMgRnVuY3Rpb25zIHdoaWNoIGFyZW4ndCBhdmFpbGFibGUgYXMgc3RyaW5nIG1ldGhvZHMuCkBAIC0xMTYsMTAgKzExNiw3IEBACiAgICAgICAgICAgICAjIENoZWNrIHRoZSBtb3N0IGNvbW1vbiBwYXRoIGZpcnN0LgogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHZhbCA9IG1hcHBpbmdbbmFtZWRdCi0gICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlciB3aWxsCi0gICAgICAgICAgICAgICAgIyBmYWlsIGlmIHZhbCBpcyBhIFVuaWNvZGUgY29udGFpbmluZyBub24tQVNDSUkgY2hhcmFjdGVycy4KLSAgICAgICAgICAgICAgICByZXR1cm4gJyVzJyAlICh2YWwsKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIobWFwcGluZ1tuYW1lZF0pCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlbGltaXRlcgogICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2ludmFsaWQnKSBpcyBub3QgTm9uZToKQEAgLTE0Niw5ICsxNDMsNyBAQAogICAgICAgICAgICAgbmFtZWQgPSBtby5ncm91cCgnbmFtZWQnKSBvciBtby5ncm91cCgnYnJhY2VkJykKICAgICAgICAgICAgIGlmIG5hbWVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyBXZSB1c2UgdGhpcyBpZGlvbSBpbnN0ZWFkIG9mIHN0cigpIGJlY2F1c2UgdGhlIGxhdHRlcgotICAgICAgICAgICAgICAgICAgICAjIHdpbGwgZmFpbCBpZiB2YWwgaXMgYSBVbmljb2RlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJXMnICUgKG1hcHBpbmdbbmFtZWRdLCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihtYXBwaW5nW25hbWVkXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtby5ncm91cCgpCiAgICAgICAgICAgICBpZiBtby5ncm91cCgnZXNjYXBlZCcpIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCA1MDJlMjZiLi5lNzQyYTRlIDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtNzEsNyArNzEsMTYgQEAKICAgICAgICAgc2VsZi5zdGRlcnIgPSBzdGRlcnIKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZCIgJSAoc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGFuZCBzZWxmLnJldHVybmNvZGUgPCAwOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIGRpZWQgd2l0aCAlci4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIHNpZ25hbC5TaWduYWxzKC1zZWxmLnJldHVybmNvZGUpKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgZGllZCB3aXRoIHVua25vd24gc2lnbmFsICVkLiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgLXNlbGYucmV0dXJuY29kZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzICVkLiIgJSAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgc3Rkb3V0KHNlbGYpOgpAQCAtMTYxLDcgKzE3MCw4IEBACiAgICAgX19hbGxfXy5leHRlbmQoWyJDUkVBVEVfTkVXX0NPTlNPTEUiLCAiQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9JTlBVVF9IQU5ETEUiLCAiU1REX09VVFBVVF9IQU5ETEUiLAogICAgICAgICAgICAgICAgICAgICAiU1REX0VSUk9SX0hBTkRMRSIsICJTV19ISURFIiwKLSAgICAgICAgICAgICAgICAgICAgIlNUQVJURl9VU0VTVERIQU5ETEVTIiwgIlNUQVJURl9VU0VTSE9XV0lORE9XIl0pCisgICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyIsCisgICAgICAgICAgICAgICAgICAgICJTVEFSVFVQSU5GTyJdKQogCiAgICAgY2xhc3MgSGFuZGxlKGludCk6CiAgICAgICAgIGNsb3NlZCA9IEZhbHNlCkBAIC0yMTAsNiArMjIwLDE2IEBACiAjIGJ1dCBpdCdzIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgaW1wb3J0ZWQgd2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dAogIyB0aHJlYWRzLgogCitkZWYgX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIG9wdGltaXphdGlvbiBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCisgICAgYXJncyA9IFtdCisgICAgdmFsdWUgPSBzeXMuZmxhZ3Mub3B0aW1pemUKKyAgICBpZiB2YWx1ZSA+IDA6CisgICAgICAgIGFyZ3MuYXBwZW5kKCctJyArICdPJyAqIHZhbHVlKQorICAgIHJldHVybiBhcmdzCisKKwogZGVmIF9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKICAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MgYW5kIHN5cy53YXJub3B0aW9ucy4iIiIKQEAgLTIxNyw3ICsyMzcsNiBAQAogICAgICAgICAnZGVidWcnOiAnZCcsCiAgICAgICAgICMgJ2luc3BlY3QnOiAnaScsCiAgICAgICAgICMgJ2ludGVyYWN0aXZlJzogJ2knLAotICAgICAgICAnb3B0aW1pemUnOiAnTycsCiAgICAgICAgICdkb250X3dyaXRlX2J5dGVjb2RlJzogJ0InLAogICAgICAgICAnbm9fdXNlcl9zaXRlJzogJ3MnLAogICAgICAgICAnbm9fc2l0ZSc6ICdTJywKQEAgLTIyNSw4ICsyNDQsOSBAQAogICAgICAgICAndmVyYm9zZSc6ICd2JywKICAgICAgICAgJ2J5dGVzX3dhcm5pbmcnOiAnYicsCiAgICAgICAgICdxdWlldCc6ICdxJywKKyAgICAgICAgIyAtTyBpcyBoYW5kbGVkIGluIF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgIH0KLSAgICBhcmdzID0gW10KKyAgICBhcmdzID0gX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCiAgICAgZm9yIGZsYWcsIG9wdCBpbiBmbGFnX29wdF9tYXAuaXRlbXMoKToKICAgICAgICAgdiA9IGdldGF0dHIoc3lzLmZsYWdzLCBmbGFnKQogICAgICAgICBpZiB2ID4gMDoKQEAgLTQ3Niw4ICs0OTYsOCBAQAogICAgICIiIiAgICBSZXR1cm4gKHN0YXR1cywgb3V0cHV0KSBvZiBleGVjdXRpbmcgY21kIGluIGEgc2hlbGwuCiAKICAgICBFeGVjdXRlIHRoZSBzdHJpbmcgJ2NtZCcgaW4gYSBzaGVsbCB3aXRoICdjaGVja19vdXRwdXQnIGFuZAotICAgIHJldHVybiBhIDItdHVwbGUgKHN0YXR1cywgb3V0cHV0KS4gVW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMgdXNlZCwKLSAgICBtZWFuaW5nIHRoYXQgdGhlIHJlc3VsdCB3aXRoIGJlIGRlY29kZWQgdG8gYSBzdHJpbmcuCisgICAgcmV0dXJuIGEgMi10dXBsZSAoc3RhdHVzLCBvdXRwdXQpLiBUaGUgbG9jYWxlIGVuY29kaW5nIGlzIHVzZWQKKyAgICB0byBkZWNvZGUgdGhlIG91dHB1dCBhbmQgcHJvY2VzcyBuZXdsaW5lcy4KIAogICAgIEEgdHJhaWxpbmcgbmV3bGluZSBpcyBzdHJpcHBlZCBmcm9tIHRoZSBvdXRwdXQuCiAgICAgVGhlIGV4aXQgc3RhdHVzIGZvciB0aGUgY29tbWFuZCBjYW4gYmUgaW50ZXJwcmV0ZWQKQEAgLTU1NSw2ICs1NzUsOSBAQAogCiAgICAgICBwYXNzX2ZkcyAoUE9TSVggb25seSkKIAorICAgICAgZW5jb2RpbmcgYW5kIGVycm9yczogVGV4dCBtb2RlIGVuY29kaW5nIGFuZCBlcnJvciBoYW5kbGluZyB0byB1c2UgZm9yCisgICAgICAgICAgZmlsZSBvYmplY3RzIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyci4KKwogICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgIHN0ZGluLCBzdGRvdXQsIHN0ZGVyciwgcGlkLCByZXR1cm5jb2RlCiAgICAgIiIiCkBAIC01NjYsNyArNTg5LDcgQEAKICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIGN3ZD1Ob25lLCBlbnY9Tm9uZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLAogICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbz1Ob25lLCBjcmVhdGlvbmZsYWdzPTAsCiAgICAgICAgICAgICAgICAgIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgcGFzc19mZHM9KCkpOgorICAgICAgICAgICAgICAgICBwYXNzX2Zkcz0oKSwgKiwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgbmV3IFBvcGVuIGluc3RhbmNlLiIiIgogICAgICAgICBfY2xlYW51cCgpCiAgICAgICAgICMgSGVsZCB3aGlsZSBhbnl0aGluZyBpcyBjYWxsaW5nIHdhaXRwaWQgYmVmb3JlIHJldHVybmNvZGUgaGFzIGJlZW4KQEAgLTYxOSw2ICs2NDIsOCBAQAogICAgICAgICBzZWxmLnBpZCA9IE5vbmUKICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQogICAgICAgICBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyA9IHVuaXZlcnNhbF9uZXdsaW5lcworICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKKyAgICAgICAgc2VsZi5lcnJvcnMgPSBlcnJvcnMKIAogICAgICAgICAjIElucHV0IGFuZCBvdXRwdXQgb2JqZWN0cy4gVGhlIGdlbmVyYWwgcHJpbmNpcGxlIGlzIGxpa2UKICAgICAgICAgIyB0aGlzOgpAQCAtNjUxLDIyICs2NzYsMjggQEAKICAgICAgICAgICAgIGlmIGVycnJlYWQgIT0gLTE6CiAgICAgICAgICAgICAgICAgZXJycmVhZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShlcnJyZWFkLkRldGFjaCgpLCAwKQogCi0gICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRpbiwgd3JpdGVfdGhyb3VnaD1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPShidWZzaXplID09IDEpKQotICAgICAgICBpZiBjMnByZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3Rkb3V0KQotICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgotICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5vcGVuKGVycnJlYWQsICdyYicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiB1bml2ZXJzYWxfbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyKQorICAgICAgICB0ZXh0X21vZGUgPSBlbmNvZGluZyBvciBlcnJvcnMgb3IgdW5pdmVyc2FsX25ld2xpbmVzCiAKICAgICAgICAgc2VsZi5fY2xvc2VkX2NoaWxkX3BpcGVfZmRzID0gRmFsc2UKKwogICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBwMmN3cml0ZSAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8ub3BlbihwMmN3cml0ZSwgJ3diJywgYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiB0ZXh0X21vZGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz0oYnVmc2l6ZSA9PSAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKKyAgICAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5vcGVuKGMycHJlYWQsICdyYicsIGJ1ZnNpemUpCisgICAgICAgICAgICAgICAgaWYgdGV4dF9tb2RlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoc2VsZi5zdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8ub3BlbihlcnJyZWFkLCAncmInLCBidWZzaXplKQorICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQorCiAgICAgICAgICAgICBzZWxmLl9leGVjdXRlX2NoaWxkKGFyZ3MsIGV4ZWN1dGFibGUsIHByZWV4ZWNfZm4sIGNsb3NlX2ZkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCkBAIC03MDAsOSArNzMxLDggQEAKIAogICAgICAgICAgICAgcmFpc2UKIAotCi0gICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcpOgotICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoZW5jb2RpbmcpCisgICAgZGVmIF90cmFuc2xhdGVfbmV3bGluZXMoc2VsZiwgZGF0YSwgZW5jb2RpbmcsIGVycm9ycyk6CisgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICByZXR1cm4gZGF0YS5yZXBsYWNlKCJcclxuIiwgIlxuIikucmVwbGFjZSgiXHIiLCAiXG4iKQogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTcyNCw2ICs3NTQsMTEgQEAKICAgICAgICAgaWYgbm90IHNlbGYuX2NoaWxkX2NyZWF0ZWQ6CiAgICAgICAgICAgICAjIFdlIGRpZG4ndCBnZXQgdG8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBhIGNoaWxkIHByb2Nlc3MuCiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAjIE5vdCByZWFkaW5nIHN1YnByb2Nlc3MgZXhpdCBzdGF0dXMgY3JlYXRlcyBhIHpvbWJpIHByb2Nlc3Mgd2hpY2gKKyAgICAgICAgICAgICMgaXMgb25seSBkZXN0cm95ZWQgYXQgdGhlIHBhcmVudCBweXRob24gcHJvY2VzcyBleGl0CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJzdWJwcm9jZXNzICVzIGlzIHN0aWxsIHJ1bm5pbmciICUgc2VsZi5waWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlV2FybmluZywgc291cmNlPXNlbGYpCiAgICAgICAgICMgSW4gY2FzZSB0aGUgY2hpbGQgaGFzbid0IGJlZW4gd2FpdGVkIG9uLCBjaGVjayBpZiBpdCdzIGRvbmUuCiAgICAgICAgIHNlbGYuX2ludGVybmFsX3BvbGwoX2RlYWRzdGF0ZT1fbWF4c2l6ZSkKICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmUgYW5kIF9hY3RpdmUgaXMgbm90IE5vbmU6CkBAIC0xMjUxLDkgKzEyODYsMTQgQEAKIAogICAgICAgICAgICAgaWYgZXJycGlwZV9kYXRhOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBzdHMgPSBvcy53YWl0cGlkKHNlbGYucGlkLCAwKQorICAgICAgICAgICAgICAgICAgICBpZiBwaWQgPT0gc2VsZi5waWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBzeXMubWF4c2l6ZQogICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25fbmFtZSwgaGV4X2Vycm5vLCBlcnJfbXNnID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycnBpcGVfZGF0YS5zcGxpdChiJzonLCAyKSkKQEAgLTE0NzksMTMgKzE1MTksMTUgQEAKIAogICAgICAgICAgICAgIyBUcmFuc2xhdGUgbmV3bGluZXMsIGlmIHJlcXVlc3RlZC4KICAgICAgICAgICAgICMgVGhpcyBhbHNvIHR1cm5zIGJ5dGVzIGludG8gc3RyaW5ncy4KLSAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzOgorICAgICAgICAgICAgaWYgc2VsZi5lbmNvZGluZyBvciBzZWxmLmVycm9ycyBvciBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKICAgICAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCA9IHNlbGYuX3RyYW5zbGF0ZV9uZXdsaW5lcyhzdGRvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZXJyb3JzKQogICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fdHJhbnNsYXRlX25ld2xpbmVzKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lcnJvcnMpCiAKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKQEAgLTE0OTcsOCArMTUzOSwxMCBAQAogICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgc2VsZi5faW5wdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgPSAwCiAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBpbnB1dAotICAgICAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzIGFuZCBpbnB1dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLl9pbnB1dC5lbmNvZGUoc2VsZi5zdGRpbi5lbmNvZGluZykKKyAgICAgICAgICAgICAgICBpZiBpbnB1dCBpcyBub3QgTm9uZSBhbmQgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmVuY29kaW5nIG9yIHNlbGYuZXJyb3JzIG9yIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLl9pbnB1dC5lbmNvZGUoc2VsZi5zdGRpbi5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5lcnJvcnMpCiAKIAogICAgICAgICBkZWYgc2VuZF9zaWduYWwoc2VsZiwgc2lnKToKZGlmZiAtLWdpdCBhL0xpYi9zeW1ib2wucHkgYi9MaWIvc3ltYm9sLnB5CmluZGV4IDc1NDE0OTcuLmQ5ZjAxZTAgMTAwNzU1Ci0tLSBhL0xpYi9zeW1ib2wucHkKKysrIGIvTGliL3N5bWJvbC5weQpAQCAtMjcsNzQgKzI3LDc1IEBACiBzaW1wbGVfc3RtdCA9IDI3MAogc21hbGxfc3RtdCA9IDI3MQogZXhwcl9zdG10ID0gMjcyCi10ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzMKLWF1Z2Fzc2lnbiA9IDI3NAotZGVsX3N0bXQgPSAyNzUKLXBhc3Nfc3RtdCA9IDI3NgotZmxvd19zdG10ID0gMjc3Ci1icmVha19zdG10ID0gMjc4Ci1jb250aW51ZV9zdG10ID0gMjc5Ci1yZXR1cm5fc3RtdCA9IDI4MAoteWllbGRfc3RtdCA9IDI4MQotcmFpc2Vfc3RtdCA9IDI4MgotaW1wb3J0X3N0bXQgPSAyODMKLWltcG9ydF9uYW1lID0gMjg0Ci1pbXBvcnRfZnJvbSA9IDI4NQotaW1wb3J0X2FzX25hbWUgPSAyODYKLWRvdHRlZF9hc19uYW1lID0gMjg3Ci1pbXBvcnRfYXNfbmFtZXMgPSAyODgKLWRvdHRlZF9hc19uYW1lcyA9IDI4OQotZG90dGVkX25hbWUgPSAyOTAKLWdsb2JhbF9zdG10ID0gMjkxCi1ub25sb2NhbF9zdG10ID0gMjkyCi1hc3NlcnRfc3RtdCA9IDI5MwotY29tcG91bmRfc3RtdCA9IDI5NAotYXN5bmNfc3RtdCA9IDI5NQotaWZfc3RtdCA9IDI5Ngotd2hpbGVfc3RtdCA9IDI5NwotZm9yX3N0bXQgPSAyOTgKLXRyeV9zdG10ID0gMjk5Ci13aXRoX3N0bXQgPSAzMDAKLXdpdGhfaXRlbSA9IDMwMQotZXhjZXB0X2NsYXVzZSA9IDMwMgotc3VpdGUgPSAzMDMKLXRlc3QgPSAzMDQKLXRlc3Rfbm9jb25kID0gMzA1Ci1sYW1iZGVmID0gMzA2Ci1sYW1iZGVmX25vY29uZCA9IDMwNwotb3JfdGVzdCA9IDMwOAotYW5kX3Rlc3QgPSAzMDkKLW5vdF90ZXN0ID0gMzEwCi1jb21wYXJpc29uID0gMzExCi1jb21wX29wID0gMzEyCi1zdGFyX2V4cHIgPSAzMTMKLWV4cHIgPSAzMTQKLXhvcl9leHByID0gMzE1Ci1hbmRfZXhwciA9IDMxNgotc2hpZnRfZXhwciA9IDMxNwotYXJpdGhfZXhwciA9IDMxOAotdGVybSA9IDMxOQotZmFjdG9yID0gMzIwCi1wb3dlciA9IDMyMQotYXRvbV9leHByID0gMzIyCi1hdG9tID0gMzIzCi10ZXN0bGlzdF9jb21wID0gMzI0Ci10cmFpbGVyID0gMzI1Ci1zdWJzY3JpcHRsaXN0ID0gMzI2Ci1zdWJzY3JpcHQgPSAzMjcKLXNsaWNlb3AgPSAzMjgKLWV4cHJsaXN0ID0gMzI5Ci10ZXN0bGlzdCA9IDMzMAotZGljdG9yc2V0bWFrZXIgPSAzMzEKLWNsYXNzZGVmID0gMzMyCi1hcmdsaXN0ID0gMzMzCi1hcmd1bWVudCA9IDMzNAotY29tcF9pdGVyID0gMzM1Ci1jb21wX2ZvciA9IDMzNgotY29tcF9pZiA9IDMzNwotZW5jb2RpbmdfZGVjbCA9IDMzOAoteWllbGRfZXhwciA9IDMzOQoteWllbGRfYXJnID0gMzQwCithbm5hc3NpZ24gPSAyNzMKK3Rlc3RsaXN0X3N0YXJfZXhwciA9IDI3NAorYXVnYXNzaWduID0gMjc1CitkZWxfc3RtdCA9IDI3NgorcGFzc19zdG10ID0gMjc3CitmbG93X3N0bXQgPSAyNzgKK2JyZWFrX3N0bXQgPSAyNzkKK2NvbnRpbnVlX3N0bXQgPSAyODAKK3JldHVybl9zdG10ID0gMjgxCit5aWVsZF9zdG10ID0gMjgyCityYWlzZV9zdG10ID0gMjgzCitpbXBvcnRfc3RtdCA9IDI4NAoraW1wb3J0X25hbWUgPSAyODUKK2ltcG9ydF9mcm9tID0gMjg2CitpbXBvcnRfYXNfbmFtZSA9IDI4NworZG90dGVkX2FzX25hbWUgPSAyODgKK2ltcG9ydF9hc19uYW1lcyA9IDI4OQorZG90dGVkX2FzX25hbWVzID0gMjkwCitkb3R0ZWRfbmFtZSA9IDI5MQorZ2xvYmFsX3N0bXQgPSAyOTIKK25vbmxvY2FsX3N0bXQgPSAyOTMKK2Fzc2VydF9zdG10ID0gMjk0Citjb21wb3VuZF9zdG10ID0gMjk1Cithc3luY19zdG10ID0gMjk2CitpZl9zdG10ID0gMjk3Cit3aGlsZV9zdG10ID0gMjk4Citmb3Jfc3RtdCA9IDI5OQordHJ5X3N0bXQgPSAzMDAKK3dpdGhfc3RtdCA9IDMwMQord2l0aF9pdGVtID0gMzAyCitleGNlcHRfY2xhdXNlID0gMzAzCitzdWl0ZSA9IDMwNAordGVzdCA9IDMwNQordGVzdF9ub2NvbmQgPSAzMDYKK2xhbWJkZWYgPSAzMDcKK2xhbWJkZWZfbm9jb25kID0gMzA4Citvcl90ZXN0ID0gMzA5CithbmRfdGVzdCA9IDMxMAorbm90X3Rlc3QgPSAzMTEKK2NvbXBhcmlzb24gPSAzMTIKK2NvbXBfb3AgPSAzMTMKK3N0YXJfZXhwciA9IDMxNAorZXhwciA9IDMxNQoreG9yX2V4cHIgPSAzMTYKK2FuZF9leHByID0gMzE3CitzaGlmdF9leHByID0gMzE4Cithcml0aF9leHByID0gMzE5Cit0ZXJtID0gMzIwCitmYWN0b3IgPSAzMjEKK3Bvd2VyID0gMzIyCithdG9tX2V4cHIgPSAzMjMKK2F0b20gPSAzMjQKK3Rlc3RsaXN0X2NvbXAgPSAzMjUKK3RyYWlsZXIgPSAzMjYKK3N1YnNjcmlwdGxpc3QgPSAzMjcKK3N1YnNjcmlwdCA9IDMyOAorc2xpY2VvcCA9IDMyOQorZXhwcmxpc3QgPSAzMzAKK3Rlc3RsaXN0ID0gMzMxCitkaWN0b3JzZXRtYWtlciA9IDMzMgorY2xhc3NkZWYgPSAzMzMKK2FyZ2xpc3QgPSAzMzQKK2FyZ3VtZW50ID0gMzM1Citjb21wX2l0ZXIgPSAzMzYKK2NvbXBfZm9yID0gMzM3Citjb21wX2lmID0gMzM4CitlbmNvZGluZ19kZWNsID0gMzM5Cit5aWVsZF9leHByID0gMzQwCit5aWVsZF9hcmcgPSAzNDEKICMtLWVuZCBjb25zdGFudHMtLQogCiBzeW1fbmFtZSA9IHt9CmRpZmYgLS1naXQgYS9MaWIvc3ltdGFibGUucHkgYi9MaWIvc3ltdGFibGUucHkKaW5kZXggODRmZWM0YS4uYjBlNTI2MCAxMDA2NDQKLS0tIGEvTGliL3N5bXRhYmxlLnB5CisrKyBiL0xpYi9zeW10YWJsZS5weQpAQCAtMiw3ICsyLDcgQEAKIAogaW1wb3J0IF9zeW10YWJsZQogZnJvbSBfc3ltdGFibGUgaW1wb3J0IChVU0UsIERFRl9HTE9CQUwsIERFRl9MT0NBTCwgREVGX1BBUkFNLAotICAgICBERUZfSU1QT1JULCBERUZfQk9VTkQsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKKyAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBERUZfQU5OT1QsIFNDT1BFX09GRiwgU0NPUEVfTUFTSywgRlJFRSwKICAgICAgTE9DQUwsIEdMT0JBTF9JTVBMSUNJVCwgR0xPQkFMX0VYUExJQ0lULCBDRUxMKQogCiBpbXBvcnQgd2Vha3JlZgpAQCAtMTkwLDYgKzE5MCw5IEBACiAgICAgZGVmIGlzX2xvY2FsKHNlbGYpOgogICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBERUZfQk9VTkQpCiAKKyAgICBkZWYgaXNfYW5ub3RhdGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9fZmxhZ3MgJiBERUZfQU5OT1QpCisKICAgICBkZWYgaXNfZnJlZShzZWxmKToKICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX3Njb3BlID09IEZSRUUpCiAKZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5CmluZGV4IDljMzRiZTAuLjkzMTRlNzEgMTAwNjQ0Ci0tLSBhL0xpYi9zeXNjb25maWcucHkKKysrIGIvTGliL3N5c2NvbmZpZy5weQpAQCAtODYsOCArODYsOCBAQAogICMgRklYTUUgZG9uJ3QgcmVseSBvbiBzeXMudmVyc2lvbiBoZXJlLCBpdHMgZm9ybWF0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAogICMgb2YgQ1B5dGhvbiwgdXNlIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLmhleHZlcnNpb24KIF9QWV9WRVJTSU9OID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXQotX1BZX1ZFUlNJT05fU0hPUlQgPSBzeXMudmVyc2lvbls6M10KLV9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVCA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KK19QWV9WRVJTSU9OX1NIT1JUID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCitfUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSAnJWQlZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkKIF9CQVNFX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KQogX0VYRUNfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY19wcmVmaXgpCkBAIC0yMTUsNyArMjE1LDcgQEAKICAgICAjIFJlZ2V4ZXMgbmVlZGVkIGZvciBwYXJzaW5nIE1ha2VmaWxlIChhbmQgc2ltaWxhciBzeW50YXhlcywKICAgICAjIGxpa2Ugb2xkLXN0eWxlIFNldHVwIGZpbGVzKS4KICAgICBpbXBvcnQgcmUKLSAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKKyAgICBfdmFyaWFibGVfcnggPSByZS5jb21waWxlKHIiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCiAgICAgX2ZpbmR2YXIxX3J4ID0gcmUuY29tcGlsZShyIlwkXCgoW0EtWmEtel1bQS1aYS16MC05X10qKVwpIikKICAgICBfZmluZHZhcjJfcnggPSByZS5jb21waWxlKHIiXCR7KFtBLVphLXpdW0EtWmEtejAtOV9dKil9IikKIApAQCAtMzM3LDggKzMzNywyMCBAQAogICAgICAgICBjb25maWdfZGlyX25hbWUgPSAnY29uZmlnLSVzJXMnICUgKF9QWV9WRVJTSU9OX1NIT1JULCBzeXMuYWJpZmxhZ3MpCiAgICAgZWxzZToKICAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZycKKyAgICBpZiBoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnKToKKyAgICAgICAgY29uZmlnX2Rpcl9uYW1lICs9ICctJXMnICUgc3lzLmltcGxlbWVudGF0aW9uLl9tdWx0aWFyY2gKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGdldF9wYXRoKCdzdGRsaWInKSwgY29uZmlnX2Rpcl9uYW1lLCAnTWFrZWZpbGUnKQogCisKK2RlZiBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpOgorICAgIHJldHVybiBvcy5lbnZpcm9uLmdldCgnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnLAorICAgICAgICAnX3N5c2NvbmZpZ2RhdGFfe2FiaX1fe3BsYXRmb3JtfV97bXVsdGlhcmNofScuZm9ybWF0KAorICAgICAgICBhYmk9c3lzLmFiaWZsYWdzLAorICAgICAgICBwbGF0Zm9ybT1zeXMucGxhdGZvcm0sCisgICAgICAgIG11bHRpYXJjaD1nZXRhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnLCAnJyksCisgICAgKSkKKworCiBkZWYgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKToKICAgICAiIiJHZW5lcmF0ZSB0aGUgUHl0aG9uIG1vZHVsZSBjb250YWluaW5nIGJ1aWxkLXRpbWUgdmFyaWFibGVzLiIiIgogICAgIGltcG9ydCBwcHJpbnQKQEAgLTM3OSwxNCArMzkxLDE0IEBACiAgICAgIyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgbWFudWFsbHkgYW5kIHBvcHVsYXRlIGl0IHdpdGggdGhlIGJ1aWxkIHZhcnMuCiAgICAgIyBUaGlzIGlzIG1vcmUgdGhhbiBzdWZmaWNpZW50IGZvciBlbnN1cmluZyB0aGUgc3Vic2VxdWVudCBjYWxsIHRvCiAgICAgIyBnZXRfcGxhdGZvcm0oKSBzdWNjZWVkcy4KLSAgICBuYW1lID0gJ19zeXNjb25maWdkYXRhJworICAgIG5hbWUgPSBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpCiAgICAgaWYgJ2RhcndpbicgaW4gc3lzLnBsYXRmb3JtOgogICAgICAgICBpbXBvcnQgdHlwZXMKICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShuYW1lKQogICAgICAgICBtb2R1bGUuYnVpbGRfdGltZV92YXJzID0gdmFycwogICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogCi0gICAgcHlidWlsZGRpciA9ICdidWlsZC9saWIuJXMtJXMnICUgKGdldF9wbGF0Zm9ybSgpLCBzeXMudmVyc2lvbls6M10pCisgICAgcHlidWlsZGRpciA9ICdidWlsZC9saWIuJXMtJXMnICUgKGdldF9wbGF0Zm9ybSgpLCBfUFlfVkVSU0lPTl9TSE9SVCkKICAgICBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICAgICAgcHlidWlsZGRpciArPSAnLXB5ZGVidWcnCiAgICAgb3MubWFrZWRpcnMocHlidWlsZGRpciwgZXhpc3Rfb2s9VHJ1ZSkKQEAgLTQwNSw3ICs0MTcsOSBAQAogZGVmIF9pbml0X3Bvc2l4KHZhcnMpOgogICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKICAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQotICAgIGZyb20gX3N5c2NvbmZpZ2RhdGEgaW1wb3J0IGJ1aWxkX3RpbWVfdmFycworICAgIG5hbWUgPSBfZ2V0X3N5c2NvbmZpZ2RhdGFfbmFtZSgpCisgICAgX3RlbXAgPSBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHMoKSwgbG9jYWxzKCksIFsnYnVpbGRfdGltZV92YXJzJ10sIDApCisgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQogCiBkZWYgX2luaXRfbm9uX3Bvc2l4KHZhcnMpOgpAQCAtNTE4LDcgKzUzMiw3IEBACiAgICAgICAgIF9DT05GSUdfVkFSU1snZXhlY19wcmVmaXgnXSA9IF9FWEVDX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb24nXSA9IF9QWV9WRVJTSU9OCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9zaG9ydCddID0gX1BZX1ZFUlNJT05fU0hPUlQKLSAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uX25vZG90J10gPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCisgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UCiAgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX2Jhc2UnXSA9IF9CQVNFX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2Jhc2UnXSA9IF9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydpbnN0YWxsZWRfcGxhdGJhc2UnXSA9IF9CQVNFX0VYRUNfUFJFRklYCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IDk5OWE5OWIuLmI3OGIxYjEgMTAwNzU1Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC02NCw3ICs2NCwxMCBAQAogICAgIHBhc3MKIAogIyBmcm9tIHRhcmZpbGUgaW1wb3J0ICoKLV9fYWxsX18gPSBbIlRhckZpbGUiLCAiVGFySW5mbyIsICJpc190YXJmaWxlIiwgIlRhckVycm9yIl0KK19fYWxsX18gPSBbIlRhckZpbGUiLCAiVGFySW5mbyIsICJpc190YXJmaWxlIiwgIlRhckVycm9yIiwgIlJlYWRFcnJvciIsCisgICAgICAgICAgICJDb21wcmVzc2lvbkVycm9yIiwgIlN0cmVhbUVycm9yIiwgIkV4dHJhY3RFcnJvciIsICJIZWFkZXJFcnJvciIsCisgICAgICAgICAgICJFTkNPRElORyIsICJVU1RBUl9GT1JNQVQiLCAiR05VX0ZPUk1BVCIsICJQQVhfRk9STUFUIiwKKyAgICAgICAgICAgIkRFRkFVTFRfRk9STUFUIiwgIm9wZW4iXQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIHRhciBjb25zdGFudHMKQEAgLTE0MSw3ICsxNDQsNyBAQAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBpbml0aWFsaXphdGlvbgogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBvcy5uYW1lID09ICJudCI6CiAgICAgRU5DT0RJTkcgPSAidXRmLTgiCiBlbHNlOgogICAgIEVOQ09ESU5HID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCkBAIC0yMjUsMjEgKzIyOCwyMSBAQAogICAgIHNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFja19mcm9tKCIxNDhiOHgzNTZiIiwgYnVmKSkKICAgICByZXR1cm4gdW5zaWduZWRfY2hrc3VtLCBzaWduZWRfY2hrc3VtCiAKLWRlZiBjb3B5ZmlsZW9iaihzcmMsIGRzdCwgbGVuZ3RoPU5vbmUsIGV4Y2VwdGlvbj1PU0Vycm9yKToKK2RlZiBjb3B5ZmlsZW9iaihzcmMsIGRzdCwgbGVuZ3RoPU5vbmUsIGV4Y2VwdGlvbj1PU0Vycm9yLCBidWZzaXplPU5vbmUpOgogICAgICIiIkNvcHkgbGVuZ3RoIGJ5dGVzIGZyb20gZmlsZW9iaiBzcmMgdG8gZmlsZW9iaiBkc3QuCiAgICAgICAgSWYgbGVuZ3RoIGlzIE5vbmUsIGNvcHkgdGhlIGVudGlyZSBjb250ZW50LgogICAgICIiIgorICAgIGJ1ZnNpemUgPSBidWZzaXplIG9yIDE2ICogMTAyNAogICAgIGlmIGxlbmd0aCA9PSAwOgogICAgICAgICByZXR1cm4KICAgICBpZiBsZW5ndGggaXMgTm9uZToKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0KQorICAgICAgICBzaHV0aWwuY29weWZpbGVvYmooc3JjLCBkc3QsIGJ1ZnNpemUpCiAgICAgICAgIHJldHVybgogCi0gICAgQlVGU0laRSA9IDE2ICogMTAyNAotICAgIGJsb2NrcywgcmVtYWluZGVyID0gZGl2bW9kKGxlbmd0aCwgQlVGU0laRSkKKyAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZChsZW5ndGgsIGJ1ZnNpemUpCiAgICAgZm9yIGIgaW4gcmFuZ2UoYmxvY2tzKToKLSAgICAgICAgYnVmID0gc3JjLnJlYWQoQlVGU0laRSkKLSAgICAgICAgaWYgbGVuKGJ1ZikgPCBCVUZTSVpFOgorICAgICAgICBidWYgPSBzcmMucmVhZChidWZzaXplKQorICAgICAgICBpZiBsZW4oYnVmKSA8IGJ1ZnNpemU6CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb24oInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKQogICAgICAgICBkc3Qud3JpdGUoYnVmKQogCkBAIC0xNDAwLDcgKzE0MDMsOCBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgICB0YXJpbmZvPU5vbmUsIGRlcmVmZXJlbmNlPU5vbmUsIGlnbm9yZV96ZXJvcz1Ob25lLCBlbmNvZGluZz1Ob25lLAotICAgICAgICAgICAgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiLCBwYXhfaGVhZGVycz1Ob25lLCBkZWJ1Zz1Ob25lLCBlcnJvcmxldmVsPU5vbmUpOgorICAgICAgICAgICAgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiLCBwYXhfaGVhZGVycz1Ob25lLCBkZWJ1Zz1Ob25lLAorICAgICAgICAgICAgZXJyb3JsZXZlbD1Ob25lLCBjb3B5YnVmc2l6ZT1Ob25lKToKICAgICAgICAgIiIiT3BlbiBhbiAodW5jb21wcmVzc2VkKSB0YXIgYXJjaGl2ZSBgbmFtZScuIGBtb2RlJyBpcyBlaXRoZXIgJ3InIHRvCiAgICAgICAgICAgIHJlYWQgZnJvbSBhbiBleGlzdGluZyBhcmNoaXZlLCAnYScgdG8gYXBwZW5kIGRhdGEgdG8gYW4gZXhpc3RpbmcKICAgICAgICAgICAgZmlsZSBvciAndycgdG8gY3JlYXRlIGEgbmV3IGZpbGUgb3ZlcndyaXRpbmcgYW4gZXhpc3Rpbmcgb25lLiBgbW9kZScKQEAgLTE0NTYsNiArMTQ2MCw3IEBACiAgICAgICAgICAgICBzZWxmLmVycm9ybGV2ZWwgPSBlcnJvcmxldmVsCiAKICAgICAgICAgIyBJbml0IGRhdGFzdHJ1Y3R1cmVzLgorICAgICAgICBzZWxmLmNvcHlidWZzaXplID0gY29weWJ1ZnNpemUKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQogICAgICAgICBzZWxmLm1lbWJlcnMgPSBbXSAgICAgICAjIGxpc3Qgb2YgbWVtYmVycyBhcyBUYXJJbmZvIG9iamVjdHMKICAgICAgICAgc2VsZi5fbG9hZGVkID0gRmFsc2UgICAgIyBmbGFnIGlmIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkCkBAIC0xNTU3LDcgKzE1NjIsNyBAQAogICAgICAgICAgICAgICAgICAgICBzYXZlZF9wb3MgPSBmaWxlb2JqLnRlbGwoKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMobmFtZSwgInIiLCBmaWxlb2JqLCAqKmt3YXJncykKLSAgICAgICAgICAgICAgICBleGNlcHQgKFJlYWRFcnJvciwgQ29tcHJlc3Npb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICBleGNlcHQgKFJlYWRFcnJvciwgQ29tcHJlc3Npb25FcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoc2F2ZWRfcG9zKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMTk2MiwxMCArMTk2NywxMCBAQAogICAgICAgICBidWYgPSB0YXJpbmZvLnRvYnVmKHNlbGYuZm9ybWF0LCBzZWxmLmVuY29kaW5nLCBzZWxmLmVycm9ycykKICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKGJ1ZikKICAgICAgICAgc2VsZi5vZmZzZXQgKz0gbGVuKGJ1ZikKLQorICAgICAgICBidWZzaXplPXNlbGYuY29weWJ1ZnNpemUKICAgICAgICAgIyBJZiB0aGVyZSdzIGRhdGEgdG8gZm9sbG93LCBhcHBlbmQgaXQuCiAgICAgICAgIGlmIGZpbGVvYmogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSkKKyAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZpbGVvYmosIHNlbGYuZmlsZW9iaiwgdGFyaW5mby5zaXplLCBidWZzaXplPWJ1ZnNpemUpCiAgICAgICAgICAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZCh0YXJpbmZvLnNpemUsIEJMT0NLU0laRSkKICAgICAgICAgICAgIGlmIHJlbWFpbmRlciA+IDA6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKE5VTCAqIChCTE9DS1NJWkUgLSByZW1haW5kZXIpKQpAQCAtMjE0NywxNSArMjE1MiwxNiBAQAogICAgICAgICAiIiIKICAgICAgICAgc291cmNlID0gc2VsZi5maWxlb2JqCiAgICAgICAgIHNvdXJjZS5zZWVrKHRhcmluZm8ub2Zmc2V0X2RhdGEpCisgICAgICAgIGJ1ZnNpemUgPSBzZWxmLmNvcHlidWZzaXplCiAgICAgICAgIHdpdGggYmx0bl9vcGVuKHRhcmdldHBhdGgsICJ3YiIpIGFzIHRhcmdldDoKICAgICAgICAgICAgIGlmIHRhcmluZm8uc3BhcnNlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGZvciBvZmZzZXQsIHNpemUgaW4gdGFyaW5mby5zcGFyc2U6CiAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5zZWVrKG9mZnNldCkKLSAgICAgICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHNpemUsIFJlYWRFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHNpemUsIFJlYWRFcnJvciwgYnVmc2l6ZSkKICAgICAgICAgICAgICAgICB0YXJnZXQuc2Vlayh0YXJpbmZvLnNpemUpCiAgICAgICAgICAgICAgICAgdGFyZ2V0LnRydW5jYXRlKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY29weWZpbGVvYmooc291cmNlLCB0YXJnZXQsIHRhcmluZm8uc2l6ZSwgUmVhZEVycm9yKQorICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvciwgYnVmc2l6ZSkKIAogICAgIGRlZiBtYWtldW5rbm93bihzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKICAgICAgICAgIiIiTWFrZSBhIGZpbGUgZnJvbSBhIFRhckluZm8gb2JqZWN0IHdpdGggYW4gdW5rbm93biB0eXBlCkBAIC0yMjM0LDcgKzIyNDAsNyBAQAogICAgICAgICAgICAgICAgICAgICBvcy5sY2hvd24odGFyZ2V0cGF0aCwgdSwgZykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvcy5jaG93bih0YXJnZXRwYXRoLCB1LCBnKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBvd25lciIpCiAKICAgICBkZWYgY2htb2Qoc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CkBAIC0yMjQzLDcgKzIyNDksNyBAQAogICAgICAgICBpZiBoYXNhdHRyKG9zLCAnY2htb2QnKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5jaG1vZCh0YXJnZXRwYXRoLCB0YXJpbmZvLm1vZGUpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJjb3VsZCBub3QgY2hhbmdlIG1vZGUiKQogCiAgICAgZGVmIHV0aW1lKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjI1Myw3ICsyMjU5LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy51dGltZSh0YXJnZXRwYXRoLCAodGFyaW5mby5tdGltZSwgdGFyaW5mby5tdGltZSkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgcmFpc2UgRXh0cmFjdEVycm9yKCJjb3VsZCBub3QgY2hhbmdlIG1vZGlmaWNhdGlvbiB0aW1lIikKIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM3Niw5ICsyMzgyLDMyIEBACiAgICAgICAgICIiIlByb3ZpZGUgYW4gaXRlcmF0b3Igb2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fbG9hZGVkOgotICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5tZW1iZXJzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIFRhckl0ZXIoc2VsZikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gc2VsZi5tZW1iZXJzCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIFlpZWxkIGl0ZW1zIHVzaW5nIFRhckZpbGUncyBuZXh0KCkgbWV0aG9kLgorICAgICAgICAjIFdoZW4gYWxsIG1lbWJlcnMgaGF2ZSBiZWVuIHJlYWQsIHNldCBUYXJGaWxlIGFzIF9sb2FkZWQuCisgICAgICAgIGluZGV4ID0gMAorICAgICAgICAjIEZpeCBmb3IgU0YgIzExMDA0Mjk6IFVuZGVyIHJhcmUgY2lyY3Vtc3RhbmNlcyBpdCBjYW4KKyAgICAgICAgIyBoYXBwZW4gdGhhdCBnZXRtZW1iZXJzKCkgaXMgY2FsbGVkIGR1cmluZyBpdGVyYXRpb24sCisgICAgICAgICMgd2hpY2ggd2lsbCBoYXZlIGFscmVhZHkgZXhoYXVzdGVkIHRoZSBuZXh0KCkgbWV0aG9kLgorICAgICAgICBpZiBzZWxmLmZpcnN0bWVtYmVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubmV4dCgpCisgICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgICAgICB5aWVsZCB0YXJpbmZvCisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGluZGV4IDwgbGVuKHNlbGYubWVtYmVycyk6CisgICAgICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubWVtYmVyc1tpbmRleF0KKyAgICAgICAgICAgIGVsaWYgbm90IHNlbGYuX2xvYWRlZDoKKyAgICAgICAgICAgICAgICB0YXJpbmZvID0gc2VsZi5uZXh0KCkKKyAgICAgICAgICAgICAgICBpZiBub3QgdGFyaW5mbzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpbmRleCArPSAxCisgICAgICAgICAgICB5aWVsZCB0YXJpbmZvCiAKICAgICBkZWYgX2RiZyhzZWxmLCBsZXZlbCwgbXNnKToKICAgICAgICAgIiIiV3JpdGUgZGVidWdnaW5nIG91dHB1dCB0byBzeXMuc3RkZXJyLgpAQCAtMjM5OSw0NSArMjQyOCw2IEBACiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZXh0ZmlsZW9iajoKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVvYmouY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCi0jIGNsYXNzIFRhckZpbGUKLQotY2xhc3MgVGFySXRlcjoKLSAgICAiIiJJdGVyYXRvciBDbGFzcy4KLQotICAgICAgIGZvciB0YXJpbmZvIGluIFRhckZpbGUoLi4uKToKLSAgICAgICAgICAgc3VpdGUuLi4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJmaWxlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGEgVGFySXRlciBvYmplY3QuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnRhcmZpbGUgPSB0YXJmaWxlCi0gICAgICAgIHNlbGYuaW5kZXggPSAwCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gaXRlcmF0b3Igb2JqZWN0LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYKLSAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbmV4dCBpdGVtIHVzaW5nIFRhckZpbGUncyBuZXh0KCkgbWV0aG9kLgotICAgICAgICAgICBXaGVuIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkLCBzZXQgVGFyRmlsZSBhcyBfbG9hZGVkLgotICAgICAgICAiIiIKLSAgICAgICAgIyBGaXggZm9yIFNGICMxMTAwNDI5OiBVbmRlciByYXJlIGNpcmN1bXN0YW5jZXMgaXQgY2FuCi0gICAgICAgICMgaGFwcGVuIHRoYXQgZ2V0bWVtYmVycygpIGlzIGNhbGxlZCBkdXJpbmcgaXRlcmF0aW9uLAotICAgICAgICAjIHdoaWNoIHdpbGwgY2F1c2UgVGFySXRlciB0byBzdG9wIHByZW1hdHVyZWx5LgotCi0gICAgICAgIGlmIHNlbGYuaW5kZXggPT0gMCBhbmQgc2VsZi50YXJmaWxlLmZpcnN0bWVtYmVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyZmlsZS5uZXh0KCkKLSAgICAgICAgZWxpZiBzZWxmLmluZGV4IDwgbGVuKHNlbGYudGFyZmlsZS5tZW1iZXJzKToKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubWVtYmVyc1tzZWxmLmluZGV4XQotICAgICAgICBlbGlmIG5vdCBzZWxmLnRhcmZpbGUuX2xvYWRlZDoKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubmV4dCgpCi0gICAgICAgICAgICBpZiBub3QgdGFyaW5mbzoKLSAgICAgICAgICAgICAgICBzZWxmLnRhcmZpbGUuX2xvYWRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCi0gICAgICAgIHNlbGYuaW5kZXggKz0gMQotICAgICAgICByZXR1cm4gdGFyaW5mbwogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgZXhwb3J0ZWQgZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9MaWIvdGVsbmV0bGliLnB5IGIvTGliL3RlbG5ldGxpYi5weQppbmRleCA3MmRhYmM3Li5iMDg2M2IxIDEwMDY0NAotLS0gYS9MaWIvdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZWxuZXRsaWIucHkKQEAgLTYzNyw2ICs2MzcsMTIgQEAKICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCiAgICAgICAgIHJldHVybiAoLTEsIE5vbmUsIHRleHQpCiAKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICBzZWxmLmNsb3NlKCkKKwogCiBkZWYgdGVzdCgpOgogICAgICIiIlRlc3QgcHJvZ3JhbSBmb3IgdGVsbmV0bGliLgpAQCAtNjYwLDExICs2NjYsMTAgQEAKICAgICAgICAgICAgIHBvcnQgPSBpbnQocG9ydHN0cikKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICBwb3J0ID0gc29ja2V0LmdldHNlcnZieW5hbWUocG9ydHN0ciwgJ3RjcCcpCi0gICAgdG4gPSBUZWxuZXQoKQotICAgIHRuLnNldF9kZWJ1Z2xldmVsKGRlYnVnbGV2ZWwpCi0gICAgdG4ub3Blbihob3N0LCBwb3J0LCB0aW1lb3V0PTAuNSkKLSAgICB0bi5pbnRlcmFjdCgpCi0gICAgdG4uY2xvc2UoKQorICAgIHdpdGggVGVsbmV0KCkgYXMgdG46CisgICAgICAgIHRuLnNldF9kZWJ1Z2xldmVsKGRlYnVnbGV2ZWwpCisgICAgICAgIHRuLm9wZW4oaG9zdCwgcG9ydCwgdGltZW91dD0wLjUpCisgICAgICAgIHRuLmludGVyYWN0KCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZW1wZmlsZS5weSBiL0xpYi90ZW1wZmlsZS5weQppbmRleCBhZDY4N2I5Li42MTQ2MjM1IDEwMDY0NAotLS0gYS9MaWIvdGVtcGZpbGUucHkKKysrIGIvTGliL3RlbXBmaWxlLnB5CkBAIC03OTcsNyArNzk3LDYgQEAKICAgICAgICAgX3NodXRpbC5ybXRyZWUobmFtZSkKICAgICAgICAgX3dhcm5pbmdzLndhcm4od2Fybl9tZXNzYWdlLCBSZXNvdXJjZVdhcm5pbmcpCiAKLQogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuICI8e30geyFyfT4iLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9fX21haW5fXy5weSBiL0xpYi90ZXN0L19fbWFpbl9fLnB5CmluZGV4IGQ1ZmJlMTUuLjE5YTZiMmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L19fbWFpbl9fLnB5CisrKyBiL0xpYi90ZXN0L19fbWFpbl9fLnB5CkBAIC0xLDMgKzEsMiBAQAotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAotCi1yZWdydGVzdC5tYWluX2luX3RlbXBfY3dkKCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgorbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKaW5kZXggMmJlY2ZhYS4uYzAwODQ2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQpAQCAtMTYyOCwxMyArMTYyOCwzMyBAQAogICAgICAgICBkID0gW2EsIGJdCiAgICAgICAgIGUgPSBzZWxmLmxpc3QoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGVbOl0sCisgICAgICAgICAgICBbZWxlbWVudFs6XSBmb3IgZWxlbWVudCBpbiBlXSwKICAgICAgICAgICAgIFtbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0sIFswLCAxLCAyLCAzLCA0LCAwLCAxLCAyLCAzLCA0XV0KICAgICAgICAgICAgICkKIAogICAgICAgICBmID0gc2VsZi5saXN0KFthXSkKICAgICAgICAgYS5hcHBlbmQoJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmWzpdLCBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksICdoZWxsbyddXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmWzBdWzpdLCBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgJ2hlbGxvJ10pCisKKyAgICBkZWYgdGVzdF9saXN0X3Byb3h5X2luX2xpc3Qoc2VsZik6CisgICAgICAgIGEgPSBzZWxmLmxpc3QoW3NlbGYubGlzdChyYW5nZSgzKSkgZm9yIF9pIGluIHJhbmdlKDMpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaW5uZXJbOl0gZm9yIGlubmVyIGluIGFdLCBbWzAsIDEsIDJdXSAqIDMpCisKKyAgICAgICAgYVswXVstMV0gPSA1NQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFbMF1bOl0sIFswLCAxLCA1NV0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhW2ldWzpdLCBbMCwgMSwgMl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzFdLnBvcCgpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhWzFdKSwgMikKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMywgMik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhW2ldKSwgMykKKworICAgICAgICBkZWwgYQorCisgICAgICAgIGIgPSBzZWxmLmxpc3QoKQorICAgICAgICBiLmFwcGVuZChiKQorICAgICAgICBkZWwgYgogCiAgICAgZGVmIHRlc3RfZGljdChzZWxmKToKICAgICAgICAgZCA9IHNlbGYuZGljdCgpCkBAIC0xNjQ2LDYgKzE2NjYsNTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZC52YWx1ZXMoKSksIFtjaHIoaSkgZm9yIGkgaW4gaW5kaWNlc10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGQuaXRlbXMoKSksIFsoaSwgY2hyKGkpKSBmb3IgaSBpbiBpbmRpY2VzXSkKIAorICAgIGRlZiB0ZXN0X2RpY3RfcHJveHlfbmVzdGVkKHNlbGYpOgorICAgICAgICBwZXRzID0gc2VsZi5kaWN0KGZlcnJldHM9MiwgaGFtc3RlcnM9NCkKKyAgICAgICAgc3VwcGxpZXMgPSBzZWxmLmRpY3Qod2F0ZXI9MTAsIGZlZWQ9MykKKyAgICAgICAgZCA9IHNlbGYuZGljdChwZXRzPXBldHMsIHN1cHBsaWVzPXN1cHBsaWVzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcGxpZXNbJ3dhdGVyJ10sIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ3dhdGVyJ10sIDEwKQorCisgICAgICAgIGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcGxpZXNbJ2JsYW5rZXRzJ10sIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsnc3VwcGxpZXMnXVsnYmxhbmtldHMnXSwgNSkKKworICAgICAgICBkWydzdXBwbGllcyddWyd3YXRlciddID0gNworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ3dhdGVyJ10sIDcpCisKKyAgICAgICAgZGVsIHBldHMKKyAgICAgICAgZGVsIHN1cHBsaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZFsncGV0cyddWydmZXJyZXRzJ10sIDIpCisgICAgICAgIGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10gPSAxMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10sIDExKQorCisgICAgICAgIHBldHMgPSBkWydwZXRzJ10KKyAgICAgICAgc3VwcGxpZXMgPSBkWydzdXBwbGllcyddCisgICAgICAgIHN1cHBsaWVzWyd3YXRlciddID0gNworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ3dhdGVyJ10sIDcpCisKKyAgICAgICAgZC5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGQpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBldHNbJ2hhbXN0ZXJzJ10sIDQpCisKKyAgICAgICAgbCA9IHNlbGYubGlzdChbcGV0cywgc3VwcGxpZXNdKQorICAgICAgICBsWzBdWydtYXJtb3RzJ10gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGV0c1snbWFybW90cyddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMF1bJ21hcm1vdHMnXSwgMSkKKworICAgICAgICBkZWwgcGV0cworICAgICAgICBkZWwgc3VwcGxpZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzBdWydtYXJtb3RzJ10sIDEpCisKKyAgICAgICAgb3V0ZXIgPSBzZWxmLmxpc3QoW1s4OCwgOTldLCBsXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG91dGVyWzBdLCBsaXN0KSAgIyBOb3QgYSBMaXN0UHJveHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRlclstMV1bLTFdWydmZWVkJ10sIDMpCisKICAgICBkZWYgdGVzdF9uYW1lc3BhY2Uoc2VsZik6CiAgICAgICAgIG4gPSBzZWxmLk5hbWVzcGFjZSgpCiAgICAgICAgIG4ubmFtZSA9ICdCb2InCkBAIC0xNjY4LDYgKzE3MzQsMTAgQEAKIGRlZiBtdWwoeCwgeSk6CiAgICAgcmV0dXJuIHgqeQogCitkZWYgcmFpc2VfbGFyZ2VfdmFsdWVycm9yKHdhaXQpOgorICAgIHRpbWUuc2xlZXAod2FpdCkKKyAgICByYWlzZSBWYWx1ZUVycm9yKCJ4IiAqIDEwMjQqKjIpCisKIGNsYXNzIFNheVdoZW5FcnJvcihWYWx1ZUVycm9yKTogcGFzcwogCiBkZWYgZXhjZXB0aW9uX3Rocm93aW5nX2dlbmVyYXRvcih0b3RhbCwgd2hlbik6CkBAIC0xOTEwLDYgKzE5ODAsMjYgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKICAgICAgICAgICAgICAgICBwLmFwcGx5KHNlbGYuX3Rlc3Rfd3JhcHBlZF9leGNlcHRpb24pCiAKKyAgICBkZWYgdGVzdF9tYXBfbm9fZmFpbGZhc3Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzIzOTkyOiB0aGUgZmFpbC1mYXN0IGJlaGF2aW91ciB3aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQKKyAgICAgICAgIyBkdXJpbmcgbWFwKCkgd291bGQgbWFrZSBQb29sLmpvaW4oKSBkZWFkbG9jaywgYmVjYXVzZSBhIHdvcmtlcgorICAgICAgICAjIHByb2Nlc3Mgd291bGQgZmlsbCB0aGUgcmVzdWx0IHF1ZXVlIChhZnRlciB0aGUgcmVzdWx0IGhhbmRsZXIgdGhyZWFkCisgICAgICAgICMgdGVybWluYXRlZCwgaGVuY2Ugbm90IGRyYWluaW5nIGl0IGFueW1vcmUpLgorCisgICAgICAgIHRfc3RhcnQgPSB0aW1lLnRpbWUoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuUG9vbCgyKSBhcyBwOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcC5tYXAocmFpc2VfbGFyZ2VfdmFsdWVycm9yLCBbMCwgMV0pCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAgICAgICAgICAgICAgIHAuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBwLmpvaW4oKQorCisgICAgICAgICMgY2hlY2sgdGhhdCB3ZSBpbmRlZWQgd2FpdGVkIGZvciBhbGwgam9icworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodGltZS50aW1lKCkgLSB0X3N0YXJ0LCAwLjkpCisKIAogZGVmIHJhaXNpbmcoKToKICAgICByYWlzZSBLZXlFcnJvcigia2V5IikKQEAgLTM3NjcsNyArMzg1Nyw3IEBACiAgICAgICAgIHAuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgZXhwZWN0ZWQgPSAnc2VtYXBob3JlX3RyYWNrZXI6IFRoZXJlIGFwcGVhciB0byBiZSAyIGxlYWtlZCBzZW1hcGhvcmVzJwogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgZXhwZWN0ZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyLCAnc2VtYXBob3JlX3RyYWNrZXI6ICVyOiBcW0Vycm5vJyAlIG5hbWUxKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgcidzZW1hcGhvcmVfdHJhY2tlcjogJXI6IFxbRXJybm8nICUgbmFtZTEpCiAKICMKICMgTWl4aW5zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hbm5fbW9kdWxlLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTZiODdkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYW5uX21vZHVsZS5weQpAQCAtMCwwICsxLDUzIEBACisKKworIiIiCitUaGUgbW9kdWxlIGZvciB0ZXN0aW5nIHZhcmlhYmxlIGFubm90YXRpb25zLgorRW1wdHkgbGluZXMgYWJvdmUgYXJlIGZvciBnb29kIHJlYXNvbiAodGVzdGluZyBmb3IgY29ycmVjdCBsaW5lIG51bWJlcnMpCisiIiIKKworZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisKK19fYW5ub3RhdGlvbnNfX1sxXSA9IDIKKworY2xhc3MgQzoKKworICAgIHggPSA1OyB5OiBPcHRpb25hbFsnQyddID0gTm9uZQorCitmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKK3g6IGludCA9IDU7IHk6IHN0ciA9IHg7IGY6IFR1cGxlW2ludCwgaW50XQorCitjbGFzcyBNKHR5cGUpOgorCisgICAgX19hbm5vdGF0aW9uc19fWycxMjMnXSA9IDEyMworICAgIG86IHR5cGUgPSBvYmplY3QKKworKHBhcnMpOiBib29sID0gVHJ1ZQorCitjbGFzcyBEKEMpOgorICAgIGo6IHN0ciA9ICdoaSc7IGs6IHN0cj0gJ2J5ZScKKworZnJvbSB0eXBlcyBpbXBvcnQgbmV3X2NsYXNzCitoX2NsYXNzID0gbmV3X2NsYXNzKCdIJywgKEMsKSkKK2pfY2xhc3MgPSBuZXdfY2xhc3MoJ0onKQorCitjbGFzcyBGKCk6CisgICAgejogaW50ID0gNQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgcGFzcworCitjbGFzcyBZKEYpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoRiwgc2VsZikuX19pbml0X18oMTIzKQorCitjbGFzcyBNZXRhKHR5cGUpOgorICAgIGRlZiBfX25ld19fKG1ldGEsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1ldGEsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKK2NsYXNzIFMobWV0YWNsYXNzID0gTWV0YSk6CisgICAgeDogc3RyID0gJ3NvbWV0aGluZycKKyAgICB5OiBzdHIgPSAnc29tZXRoaW5nIGVsc2UnCisKK2RlZiBmb28oeDogaW50ID0gMTApOgorICAgIGRlZiBiYXIoeTogTGlzdFtzdHJdKToKKyAgICAgICAgeDogc3RyID0gJ3llcycKKyAgICBiYXIoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkgYi9MaWIvdGVzdC9hbm5fbW9kdWxlMi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmNmNWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkKQEAgLTAsMCArMSwzNiBAQAorIiIiCitTb21lIGNvcnJlY3Qgc3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9uIGhlcmUuCitNb3JlIGV4YW1wbGVzIGFyZSBpbiB0ZXN0X2dyYW1tYXIgYW5kIHRlc3RfcGFyc2VyLgorIiIiCisKK2Zyb20gdHlwaW5nIGltcG9ydCBub190eXBlX2NoZWNrLCBDbGFzc1ZhcgorCitpOiBpbnQgPSAxCitqOiBpbnQKK3g6IGZsb2F0ID0gaS8xMAorCitkZWYgZigpOgorICAgIGNsYXNzIEM6IC4uLgorICAgIHJldHVybiBDKCkKKworZigpLm5ld19hdHRyOiBvYmplY3QgPSBvYmplY3QoKQorCitjbGFzcyBDOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4OiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNlbGYueCA9IHgKKworYyA9IEMoNSkKK2MubmV3X2F0dHI6IGludCA9IDEwCisKK19fYW5ub3RhdGlvbnNfXyA9IHt9CisKKworQG5vX3R5cGVfY2hlY2sKK2NsYXNzIE5UQzoKKyAgICBkZWYgbWV0aChzZWxmLCBwYXJhbTogY29tcGxleCkgLT4gTm9uZToKKyAgICAgICAgLi4uCisKK2NsYXNzIENWOgorICAgIHZhcjogQ2xhc3NWYXJbJ0NWJ10KKworQ1YudmFyID0gQ1YoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkgYi9MaWIvdGVzdC9hbm5fbW9kdWxlMy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2NkN2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkKQEAgLTAsMCArMSwxOCBAQAorIiIiCitDb3JyZWN0IHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbiB0aGF0IHNob3VsZCBmYWlsIGF0IHJ1bnRpbWUKK2luIGEgY2VydGFpbiBtYW5uZXIuIE1vcmUgZXhhbXBsZXMgYXJlIGluIHRlc3RfZ3JhbW1hciBhbmQgdGVzdF9wYXJzZXIuCisiIiIKKworZGVmIGZfYmFkX2FubigpOgorICAgIF9fYW5ub3RhdGlvbnNfX1sxXSA9IDIKKworY2xhc3MgQ19PSzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZWxmLng6IG5vX3N1Y2hfbmFtZSA9IHggICMgVGhpcyBvbmUgaXMgT0sgYXMgcHJvcG9zZWQgYnkgR3VpZG8KKworY2xhc3MgRF9iYWRfYW5uOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4OiBpbnQpIC0+IE5vbmU6CisgICAgICAgIHNmZWwueTogaW50ID0gMAorCitkZWYgZ19iYWRfYW5uKCk6CisgICAgbm9fc3VjaF9uYW1lLmF0dHI6IGludCA9IDAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkgYi9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5CmluZGV4IDBhZTIyNDIuLmQzZThlOWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvYXVkaW90ZXN0cy5weQpAQCAtMSw5ICsxLDggQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgVEVTVEZOLCB1bmxpbmsKLWltcG9ydCB1bml0dGVzdAogaW1wb3J0IGFycmF5CiBpbXBvcnQgaW8KIGltcG9ydCBwaWNrbGUKLWltcG9ydCBzeXMKKwogCiBjbGFzcyBVbnNlZWthYmxlSU8oaW8uRmlsZUlPKToKICAgICBkZWYgdGVsbChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2F1dG90ZXN0LnB5IGIvTGliL3Rlc3QvYXV0b3Rlc3QucHkKaW5kZXggNDFjMjA4OC4uZmE4NWNjMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvYXV0b3Rlc3QucHkKKysrIGIvTGliL3Rlc3QvYXV0b3Rlc3QucHkKQEAgLTEsNiArMSw1IEBACiAjIFRoaXMgc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8gcnVubmluZyByZWdydGVzdC5weSBmcm9tIHRoZSBjbWRsaW5lLgogIyBJdCBjYW4gYmUgZXNwZWNpYWxseSBoYW5keSBpZiB5b3UncmUgaW4gYW4gaW50ZXJhY3RpdmUgc2hlbGwsIGUuZy4sCiAjIGZyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QuCi0KLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLXJlZ3J0ZXN0Lm1haW4oKQorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0IGltcG9ydCBtYWluCittYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjg1ZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzEucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiODVlMjkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbyhhPWF3YWl0IHNvbWV0aGluZygpKToKLSAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGRlMWJjNS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMzNiMjguLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIGF3YWl0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxOWFmNi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM1LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1kZWYgZm9vKCk6Ci0gICAgYXdhaXQgc29tZXRoaW5nKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjBhMjNkLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICB5aWVsZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZTRiZjkuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIHlpZWxkIGZyb20gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzYzNmY5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICBhd2FpdCBhd2FpdCBmdXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wIGIvTGliL3Rlc3QvY2FwYXRoLzBlNDAxNWI5LjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDI1OWIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY2FwYXRoLzBlNDAxNWI5LjAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUNsVENDQWY2Z0F3SUJBZ0lKQUtHVTk1d0tSOHBUTUEwR0NTcUdTSWIzRFFFQkJRVUFNSEF4Q3pBSkJnTlYKLUJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXUKLUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhJekFoQmdOVkJBTU1Hbk5sYkdZdGMybG5ibVZrTG5CNWRHaHYKLWJuUmxjM1F1Ym1WME1CNFhEVEUwTVRFd01qRTRNRGt5T1ZvWERUSTBNVEF6TURFNE1Ea3lPVm93Y0RFTE1Ba0cKLUExVUVCaE1DV0ZreEZ6QVZCZ05WQkFjTURrTmhjM1JzWlNCQmJuUm9jbUY0TVNNd0lRWURWUVFLREJwUWVYUm8KLWIyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiakVqTUNFR0ExVUVBd3dhYzJWc1ppMXphV2R1WldRdWNIbDAKLWFHOXVkR1Z6ZEM1dVpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTkRYUVhXOXRqeVoKLVh0MEl2MnRMTDEramlucjR3R2czNmlvTERMRmtNZisyWTFHTDB2MEJuS1lHNE4xT0tsQVUxNUxYR2VHZXI4dm0KLVN2L3lJdm1kckVMdmhBYmJvM3c0YTlUTVlRQTRYa0lWTGR2dTNtdk5PQWV0KzhQTUp4bjI2ZGJEaEc4MDlBTHYKLUVIWTU3bFFzQlMzRzU5Ulp5QlBWcUFxbUltV05KblZ6QWdNQkFBR2pOekExTUNVR0ExVWRFUVFlTUJ5Q0duTmwKLWJHWXRjMmxuYm1Wa0xuQjVkR2h2Ym5SbGMzUXVibVYwTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ1lFQUl1ekFoZ01vdUpwTmRmM1VSQ0hJaW5leW9TdDZXSy85K2V5VWNqbEtPckRvWE5aYUQ3MmgKLVRYTWVLWW9Xdkp5VmNTTEtMOGNrUHREb2JnUDJPVHQwVWt5QWFqMG4rWkhhcXExbEgyeVZmR1VBMUlMSnY1MTUKLUM4QnFidlZadXFtM2k3eWdtdzNicUUvbFlNZ09yWXRYWG5xT3J6Nm52c0U2WWM5VjlyRmZsT009Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMCBiL0xpYi90ZXN0L2NhcGF0aC9iMTkzMDIxOC4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzM0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMApAQCAtMCwwICsxLDIxIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURiVENDQWxXZ0F3SUJBZ0lKQUxDU1pMSHkyaUhRTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE16QXhNRFF4T1RRM01EZGFGdzB5TXpBeE1ESXgKK09UUTNNRGRhTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBU0l3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT2ZlNmVNTW53QzJvZjByVzViU2I4emd2b2E1SUY3c0EzcFYKK3ErcWs2ZmxKaGRKbTFlM0hldXBXamkyUDUwTGlZaWlwbjlZYmp1dTF0SnlmRkt2ZjVwU0xkaDArYlNSaDdReS8KK0FJcGhETjljeURaekZnRE5SN3B0cEtSMGlJTWpDaG44Q2FjOFNrdlQ1eDB0NU9wTVZDSHpKdHVKTnhqVUFydEEKK01sK2sveTBjOTlTNzdJN1BYSUtzNW53SWJFaUZZUWQvSmVCYzRMdzBYK0M1QkVkMXlFY0xqYnpXeUdoZk00TmkKKzBpQkVOYkd0Z1JxS3pidzFzRnlMUjlZWTZad1lsOHdCUENuTTZCN2s1TUc0M3VmQ0VSaUhXcE0wMktZbDl4UngKKzYrUWhvdElQTGk3VVlnQTEwOWJ2WEdCTFRLa1U0dDBWV0VZM015YTM1eTVkN1VMa3hVMENBd0VBQWFOUU1FNHcKK0hRWURWUjBPQkJZRUZMemRZdGwyMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQjhHQTFVZEl3UVlNQmFBRkx6ZFl0bDIKKzJodlNWR3ZQNEdhYkhoNTdWZ3dMTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUIKK0FIMEs5Y3VOMDEyOW1ZNzRLdys2NjhMWnBpZFBMbnN2RG1UWUhEVlFUdTc4a0xtTmJhakZ4Z2F3ci9NdHZ6dTQKK1FnZmRHSDF0bFZSWGhSaGdSeS9yZUJ2NTZCZjlXZzJIRnlpc1RHcm12Q24wOUZWd0tVTGVoZXFyYkNNR1pEQjEKK0FvNVR2RjRCTXpmTUhzMjRwUDNLNUY5bE80TWNodkZWQXFBNmo5dVJ0MEFVdE9lTjB1NXp1dVBsTkMyOGxHOU8KK0pBYjNYNHNPcDQ1cjNsNTE5REthVUxGRU01clFCZUo0Z3YvYjJvcGo2Nm5kMGIrZ1lhM2pub29rWFdJTzUweVIKK2YrL2ZORFk3TDEzMWhMSXZ4RzJUbGhwdk1DangyaEthWkxSQU14MjkzaXRUcU9xKzFyeE9sdlZFK3pJWXJ0VWYKKzltbXZ0azU3SFZqc082bFRvMTVZeUo0PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAgYi9MaWIvdGVzdC9jYXBhdGgvY2U3Yjg2NDMuMApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZkMjU5Yi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jYXBhdGgvY2U3Yjg2NDMuMAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJQ2xUQ0NBZjZnQXdJQkFnSUpBS0dVOTV3S1I4cFRNQTBHQ1NxR1NJYjNEUUVCQlFVQU1IQXhDekFKQmdOVgotQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNnd2FVSGwwYUc5dQotSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEl6QWhCZ05WQkFNTUduTmxiR1l0YzJsbmJtVmtMbkI1ZEdodgotYm5SbGMzUXVibVYwTUI0WERURTBNVEV3TWpFNE1Ea3lPVm9YRFRJME1UQXpNREU0TURreU9Wb3djREVMTUFrRwotQTFVRUJoTUNXRmt4RnpBVkJnTlZCQWNNRGtOaGMzUnNaU0JCYm5Sb2NtRjRNU013SVFZRFZRUUtEQnBRZVhSbwotYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJqRWpNQ0VHQTFVRUF3d2FjMlZzWmkxemFXZHVaV1F1Y0hsMAotYUc5dWRHVnpkQzV1WlhRd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFORFhRWFc5dGp5WgotWHQwSXYydExMMStqaW5yNHdHZzM2aW9MRExGa01mKzJZMUdMMHYwQm5LWUc0TjFPS2xBVTE1TFhHZUdlcjh2bQotU3YveUl2bWRyRUx2aEFiYm8zdzRhOVRNWVFBNFhrSVZMZHZ1M212Tk9BZXQrOFBNSnhuMjZkYkRoRzgwOUFMdgotRUhZNTdsUXNCUzNHNTlSWnlCUFZxQXFtSW1XTkpuVnpBZ01CQUFHak56QTFNQ1VHQTFVZEVRUWVNQnlDR25ObAotYkdZdGMybG5ibVZrTG5CNWRHaHZiblJsYzNRdWJtVjBNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTgotQVFFRkJRQURnWUVBSXV6QWhnTW91SnBOZGYzVVJDSElpbmV5b1N0NldLLzkrZXlVY2psS09yRG9YTlphRDcyaAotVFhNZUtZb1d2SnlWY1NMS0w4Y2tQdERvYmdQMk9UdDBVa3lBYWowbitaSGFxcTFsSDJ5VmZHVUExSUxKdjUxNQotQzhCcWJ2Vlp1cW0zaTd5Z213M2JxRS9sWU1nT3JZdFhYbnFPcno2bnZzRTZZYzlWOXJGZmxPTT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wIGIvTGliL3Rlc3QvY2FwYXRoL2NlZmYxNzEwLjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzczMzQ5YwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wCkBAIC0wLDAgKzEsMjEgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRGJUQ0NBbFdnQXdJQkFnSUpBTENTWkxIeTJpSFFNQTBHQ1NxR1NJYjNEUUVCQlFVQU1FMHhDekFKQmdOVgorQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiaUJEUVRFVworTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQWVGdzB4TXpBeE1EUXhPVFEzTURkYUZ3MHlNekF4TURJeAorT1RRM01EZGFNRTB4Q3pBSkJnTlZCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZworUm05MWJtUmhkR2x2YmlCRFFURVdNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pDQ0FTSXdEUVlKS29aSQoraHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFPZmU2ZU1NbndDMm9mMHJXNWJTYjh6Z3ZvYTVJRjdzQTNwVgorcStxazZmbEpoZEptMWUzSGV1cFdqaTJQNTBMaVlpaXBuOVlianV1MXRKeWZGS3ZmNXBTTGRoMCtiU1JoN1F5LworQUlwaEROOWN5RFp6RmdETlI3cHRwS1IwaUlNakNobjhDYWM4U2t2VDV4MHQ1T3BNVkNIekp0dUpOeGpVQXJ0QQorTWwray95MGM5OVM3N0k3UFhJS3M1bndJYkVpRllRZC9KZUJjNEx3MFgrQzVCRWQxeUVjTGpield5R2hmTTROaQorMGlCRU5iR3RnUnFLemJ3MXNGeUxSOVlZNlp3WWw4d0JQQ25NNkI3azVNRzQzdWZDRVJpSFdwTTAyS1lsOXhSeAorNitRaG90SVBMaTdVWWdBMTA5YnZYR0JMVEtrVTR0MFZXRVkzTXlhMzV5NWQ3VUxreFUwQ0F3RUFBYU5RTUU0dworSFFZRFZSME9CQllFRkx6ZFl0bDIyaHZTVkd2UDRHYWJIaDU3Vmd3TE1COEdBMVVkSXdRWU1CYUFGTHpkWXRsMgorMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQgorQUgwSzljdU4wMTI5bVk3NEt3KzY2OExacGlkUExuc3ZEbVRZSERWUVR1NzhrTG1OYmFqRnhnYXdyL010dnp1NAorUWdmZEdIMXRsVlJYaFJoZ1J5L3JlQnY1NkJmOVdnMkhGeWlzVEdybXZDbjA5RlZ3S1VMZWhlcXJiQ01HWkRCMQorQW81VHZGNEJNemZNSHMyNHBQM0s1RjlsTzRNY2h2RlZBcUE2ajl1UnQwQVV0T2VOMHU1enV1UGxOQzI4bEc5TworSkFiM1g0c09wNDVyM2w1MTlES2FVTEZFTTVyUUJlSjRndi9iMm9wajY2bmQwYitnWWEzam5vb2tYV0lPNTB5UgorZisvZk5EWTdMMTMxaExJdnhHMlRsaHB2TUNqeDJoS2FaTFJBTXgyOTNpdFRxT3ErMXJ4T2x2VkUreklZcnRVZgorOW1tdnRrNTdIVmpzTzZsVG8xNVl5SjQ9CistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0IGIvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dAppbmRleCA5YjA4NjUzLi5kZDdlNDU4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0CisrKyBiL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQKQEAgLTUzLDYgKzUzLDEyIEBACiAtLSBNUEZSIGhvbWVwYWdlIGF0IGh0dHA6Ly93d3cubXBmci5vcmcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCiAtLSBNUEZSIHByb2plY3QuCiAKKy0tIEEgbWlub3JpdHkgb2YgdGhlIHRlc3QgY2FzZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aCB0aGUgaGVscCBvZgorLS0gbXBtYXRoIDAuMTkgYXQgMTAwIGJpdCBhY2N1cmFjeSAoaHR0cDovL21wbWF0aC5vcmcpIHRvIGltcHJvdmUKKy0tIGNvdmVyYWdlIG9mIHJlYWwgZnVuY3Rpb25zIHdpdGggcmVhbC12YWx1ZWQgYXJndW1lbnRzLiBUaGVzZSBhcmUKKy0tIHVzZWQgaW4gdGVzdC50ZXN0X21hdGguTWF0aFRlc3RzLnRlc3RfdGVzdGZpbGUsIGFzIHdlbGwgYXMgaW4KKy0tIHRlc3RfY21hdGguCisKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0tIGFjb3M6IEludmVyc2UgY29zaW5lIC0tCkBAIC04NDgsNiArODU0LDE4IEBACiBhdGFuMDMwMyBhdGFuIC0xZS0xNjUgMS4wIC0+IC0wLjc4NTM5ODE2MzM5NzQ0ODI4IDE5MC4zMDk4NDM3NjIyODg3NQogYXRhbjAzMDQgYXRhbiAtOS45OTk4ODg2NzE4MjY4MzAxZS0zMjEgLTEuMCAtPiAtMC43ODUzOTgxNjMzOTc0NDgyOCAtMzY4Ljc2MDE5NDAzNTc2NjkyCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2F0YW4wNDAwIGF0YW4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggMC4wIC0+IDEuNTcwNzk2MzI2Nzk0ODk2NjE5MiAwLjAKK2F0YW4wNDAxIGF0YW4gLTEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAtMS41NzA3OTYzMjY3OTQ4OTY2MTkyIDAuMAorYXRhbjA0MDIgYXRhbiAxZS0xNyAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwNzE1ZS0xNyAwLjAKK2F0YW4wNDAzIGF0YW4gLTFlLTE3IDAuMCAtPiAtMS4wMDAwMDAwMDAwMDAwMDAwNzE1ZS0xNyAwLjAKK2F0YW4wNDA0IGF0YW4gMC4wMDAxIDAuMCAtPiAwLjAwMDA5OTk5OTk5OTY2NjY2NjY3MzQ1OSAwLjAKK2F0YW4wNDA1IGF0YW4gLTAuMDAwMSAwLjAgLT4gLTAuMDAwMDk5OTk5OTk5NjY2NjY2NjczNDU5IDAuMAorYXRhbjA0MDYgYXRhbiAwLjk5OTk5OTk5OTk5OTk5OSAwLjAgLT4gMC43ODUzOTgxNjMzOTc0NDc4MTAwMiAwLjAKK2F0YW4wNDA3IGF0YW4gMS4wMDAwMDAwMDAwMDAwMDEgMC4wIC0+IDAuNzg1Mzk4MTYzMzk3NDQ4ODY0NzMgMC4wCithdGFuMDQwOCBhdGFuIDE0LjEwMTQxOTk0NzE3MTcxOSAwLjAgLT4gMS40OTk5OTk5OTk5OTk5OTk5OTY5IDAuMAorYXRhbjA0MDkgYXRhbiAxMjU1Ljc2NTU5MTUwMDc4OTcgMC4wIC0+IDEuNTcwMDAwMDAwMDAwMDAwMDYyMiAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIGF0YW4xMDAwIGF0YW4gLTAuMCAwLjAgLT4gLTAuMCAwLjAKIGF0YW4xMDAxIGF0YW4gbmFuIDAuMCAtPiBuYW4gMC4wCkBAIC0xNTE0LDYgKzE1MzIsMTEgQEAKIHNxcnQwMTQwIHNxcnQgMS42OTk5OTk5OTk5OTk5OTk5ZSszMDggLTEuNjk5OTk5OTk5OTk5OTk5OWUrMzA4IC0+IDEuNDMyNTA4ODIzMDE1NDU3M2UrMTU0IC01LjkzMzY0NTgyNzEyMTIyMDdlKzE1Mwogc3FydDAxNDEgc3FydCAtMS43OTdlKzMwOCAtOS45OTk5OTk5OTk5OTk5OTk5ZSszMDYgLT4gMy43Mjg0NDc2NDMyMDU3MzA3ZSsxNTIgLTEuMzQxMDQwNjg5OTgwMjkwMWUrMTU0CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NxcnQwMTUwIHNxcnQgMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDggMC4wIC0+IDEuMzQwNzgwNzkyOTk0MjU5NjM1NWUrMTU0IDAuMAorc3FydDAxNTEgc3FydCAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCAwLjAgLT4gMS40OTE2NjgxNDYyNDAwNDEzNDg3ZS0xNTQgMC4wCitzcXJ0MDE1MiBzcXJ0IDVlLTMyNCAwLjAgLT4gMi4yMjI3NTg3NDk0ODUwNzc0ODM0ZS0xNjIgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBzcXJ0MTAwMCBzcXJ0IDAuMCAwLjAgLT4gMC4wIDAuMAogc3FydDEwMDEgc3FydCAtMC4wIDAuMCAtPiAwLjAgMC4wCkBAIC0xNjE2LDYgKzE2MzksMjAgQEAKIGV4cDAwNTMgZXhwIDcxMC4wIDEuNiAtPiAtNi41MjMxNTc5OTk1NTAxMzcyZSszMDYgaW5mICAgb3ZlcmZsb3cKIGV4cDAwNTQgZXhwIDcxMC4wIDIuOCAtPiAtaW5mIDcuNDgzNjE3NzQxNzQ0ODUyOGUrMzA3ICAgb3ZlcmZsb3cKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorZXhwMDA3MCBleHAgMWUtMDggMC4wIC0+IDEuMDAwMDAwMDEwMDAwMDAwMDUgMC4wCitleHAwMDcxIGV4cCAwLjAwMDMgMC4wIC0+IDEuMDAwMzAwMDQ1MDA0NTAwMzM3NSAwLjAKK2V4cDAwNzIgZXhwIDAuMiAwLjAgLT4gMS4yMjE0MDI3NTgxNjAxNjk4NDc1IDAuMAorZXhwMDA3MyBleHAgMS4wIDAuMCAtPiAyLjcxODI4MTgyODQ1OTA0NTIzNTQgMC4wCitleHAwMDc0IGV4cCAtMWUtMDggMC4wIC0+IDAuOTk5OTk5OTkwMDAwMDAwMDUgMC4wCitleHAwMDc1IGV4cCAtMC4wMDAzIDAuMCAtPiAwLjk5OTcwMDA0NDk5NTUwMDMzNzUxIDAuMAorZXhwMDA3NiBleHAgLTEuMCAwLjAgLT4gMC4zNjc4Nzk0NDExNzE0NDIzMjE2IDAuMAorZXhwMDA3NyBleHAgMi4yMjA0NDYwNDkyNTAzMTNlLTE2IDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDIyMiAwLjAKK2V4cDAwNzggZXhwIC0xLjExMDIyMzAyNDYyNTE1NjVlLTE2IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTg4ODk4IDAuMAorZXhwMDA3OSBleHAgMi4zMDI1ODUwOTI5OTQwNDYgMC4wIC0+IDEwLjAwMDAwMDAwMDAwMDAwMjE3MSAwLjAKK2V4cDAwODAgZXhwIC0yLjMwMjU4NTA5Mjk5NDA0NiAwLjAgLT4gMC4wOTk5OTk5OTk5OTk5OTk5NzgyOTIgMC4wCitleHAwMDgxIGV4cCA3MDkuNzgyNyAwLjAgLT4gMS43OTc2Njk5NTY2NjM4MDE0NjU0ZSszMDggMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBleHAxMDAwIGV4cCAwLjAgMC4wIC0+IDEuMCAwLjAKIGV4cDEwMDEgZXhwIC0wLjAgMC4wIC0+IDEuMCAwLjAKQEAgLTE3MDgsNiArMTc0NSwyMyBAQAogY29zaDAwMzAgY29zaCA3MTAuNSAyLjM1MTk5OTk5OTk5OTk5OTkgLT4gLTEuMjk2NzQ2NTIzOTM1NTk5OGUrMzA4IDEuMzA3NjcwNzkwODg1NzMzM2UrMzA4CiBjb3NoMDAzMSBjb3NoIC03MTAuNSAwLjY5OTk5OTk5OTk5OTk5OTk2IC0+IDEuNDA4NTQ2NjM4MTM5MjQ5OWUrMzA4IC0xLjE4NjQwMjQ2NjY0NTAyMzllKzMwOAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitjb3NoMDA1MCBjb3NoIDFlLTE1MCAwLjAgLT4gMS4wIDAuMAorY29zaDAwNTEgY29zaCAxZS0xOCAwLjAgLT4gMS4wIDAuMAorY29zaDAwNTIgY29zaCAxZS0wOSAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMDA1IDAuMAorY29zaDAwNTMgY29zaCAwLjAwMDMgMC4wIC0+IDEuMDAwMDAwMDQ1MDAwMDAwMzM3NSAwLjAKK2Nvc2gwMDU0IGNvc2ggMC4yIDAuMCAtPiAxLjAyMDA2Njc1NTYxOTA3NTg0ODUgMC4wCitjb3NoMDA1NSBjb3NoIDEuMCAwLjAgLT4gMS41NDMwODA2MzQ4MTUyNDM3Nzg1IDAuMAorY29zaDAwNTYgY29zaCAtMWUtMTggMC4wIC0+IDEuMCAtMC4wCitjb3NoMDA1NyBjb3NoIC0wLjAwMDMgMC4wIC0+IDEuMDAwMDAwMDQ1MDAwMDAwMzM3NSAtMC4wCitjb3NoMDA1OCBjb3NoIC0xLjAgMC4wIC0+IDEuNTQzMDgwNjM0ODE1MjQzNzc4NSAtMC4wCitjb3NoMDA1OSBjb3NoIDEuMzE2OTU3ODk2OTI0ODE2OCAwLjAgLT4gMi4wMDAwMDAwMDAwMDAwMDAxNTA0IDAuMAorY29zaDAwNjAgY29zaCAtMS4zMTY5NTc4OTY5MjQ4MTY4IDAuMCAtPiAyLjAwMDAwMDAwMDAwMDAwMDE1MDQgLTAuMAorY29zaDAwNjEgY29zaCAxNy4zMjg2Nzk1MTM5OTg2MzMgMC4wIC0+IDE2Nzc3MjE2LjAwMDAwMDAyMTkzOCAwLjAKK2Nvc2gwMDYyIGNvc2ggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiA2NzEwODg2NC4wMDAwMDAwNDM2NjIgMC4wCitjb3NoMDA2MyBjb3NoIDcwOS43ODI3IDAuMCAtPiA4Ljk4ODM0OTc4MzMxOTAwNzMyNzJlKzMwNyAwLjAKK2Nvc2gwMDY0IGNvc2ggLTcwOS43ODI3IDAuMCAtPiA4Ljk4ODM0OTc4MzMxOTAwNzMyNzJlKzMwNyAtMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBjb3NoMTAwMCBjb3NoIDAuMCAwLjAgLT4gMS4wIDAuMAogY29zaDEwMDEgY29zaCAwLjAgaW5mIC0+IG5hbiAwLjAgICAgICAgIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMTgwMCw2ICsxODU0LDI0IEBACiBzaW5oMDAzMCBzaW5oIDcxMC41IC0yLjM5OTk5OTk5OTk5OTk5OTkgLT4gLTEuMzU3OTk3MDU2NDg4NTkxOWUrMzA4IC0xLjI0Mzk0NDcwOTA3Nzk4ZSszMDgKIHNpbmgwMDMxIHNpbmggLTcxMC41IDAuODAwMDAwMDAwMDAwMDAwMDQgLT4gLTEuMjgzMDY3MTYwMTczNTE2NGUrMzA4IDEuMzIxMDk1NDE5Mzk5NzY3OGUrMzA4CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NpbmgwMDUwIHNpbmggMWUtMTAwIDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAyZS0xMDAgMC4wCitzaW5oMDA1MSBzaW5oIDVlLTE3IDAuMCAtPiA0Ljk5OTk5OTk5OTk5OTk5OTg5NTVlLTE3IDAuMAorc2luaDAwNTIgc2luaCAxZS0xNiAwLjAgLT4gOS45OTk5OTk5OTk5OTk5OTk3OTFlLTE3IDAuMAorc2luaDAwNTMgc2luaCAzLjdlLTA4IDAuMCAtPiAzLjcwMDAwMDAwMDAwMDAwMDg4ODVlLTggMC4wCitzaW5oMDA1NCBzaW5oIDAuMDAxIDAuMCAtPiAwLjAwMTAwMDAwMDE2NjY2NjY3NTAyMDggMC4wCitzaW5oMDA1NSBzaW5oIDAuMiAwLjAgLT4gMC4yMDEzMzYwMDI1NDEwOTM5OTg5NSAwLjAKK3NpbmgwMDU2IHNpbmggMS4wIDAuMCAtPiAxLjE3NTIwMTE5MzY0MzgwMTQ1NjkgMC4wCitzaW5oMDA1NyBzaW5oIC0zLjdlLTA4IDAuMCAtPiAtMy43MDAwMDAwMDAwMDAwMDA4ODg1ZS04IDAuMAorc2luaDAwNTggc2luaCAtMC4wMDEgMC4wIC0+IC0wLjAwMTAwMDAwMDE2NjY2NjY3NTAyMDggMC4wCitzaW5oMDA1OSBzaW5oIC0xLjAgMC4wIC0+IC0xLjE3NTIwMTE5MzY0MzgwMTQ1NjkgMC4wCitzaW5oMDA2MCBzaW5oIDEuNDQzNjM1NDc1MTc4ODEwMyAwLjAgLT4gMS45OTk5OTk5OTk5OTk5OTk5MDc4IDAuMAorc2luaDAwNjEgc2luaCAtMS40NDM2MzU0NzUxNzg4MTAzIDAuMCAtPiAtMS45OTk5OTk5OTk5OTk5OTk5MDc4IDAuMAorc2luaDAwNjIgc2luaCAxNy4zMjg2Nzk1MTM5OTg2MzMgMC4wIC0+IDE2Nzc3MjE1Ljk5OTk5OTk5MjEzNiAwLjAKK3NpbmgwMDYzIHNpbmggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiA2NzEwODg2NC4wMDAwMDAwMzYyMTEgMC4wCitzaW5oMDA2NCBzaW5oIDcwOS43ODI3IDAuMCAtPiA4Ljk4ODM0OTc4MzMxOTAwNzMyNzJlKzMwNyAwLjAKK3NpbmgwMDY1IHNpbmggLTcwOS43ODI3IDAuMCAtPiAtOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBzaW5oMTAwMCBzaW5oIDAuMCAwLjAgLT4gMC4wIDAuMAogc2luaDEwMDEgc2luaCAwLjAgaW5mIC0+IDAuMCBuYW4gICAgICAgIGludmFsaWQgaWdub3JlLXJlYWwtc2lnbgpAQCAtMTg5Nyw2ICsxOTY5LDI0IEBACiB0YW5oMDAzMiB0YW5oIDEwMDAgLTIuMzE5OTk5OTk5OTk5OTk5OCAtPiAxLjAgMC4wCiB0YW5oMDAzMyB0YW5oIC0xLjAwMDAwMDAwMDAwMDAwMDFlKzMwMCAtOS42Njk5OTk5OTk5OTk5OTk5IC0+IC0xLjAgLTAuMAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCit0YW5oMDA1MCB0YW5oIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAordGFuaDAwNTEgdGFuaCA1ZS0xNyAwLjAgLT4gNC45OTk5OTk5OTk5OTk5OTk4OTU1ZS0xNyAwLjAKK3RhbmgwMDUyIHRhbmggMWUtMTYgMC4wIC0+IDkuOTk5OTk5OTk5OTk5OTk5NzkxZS0xNyAwLjAKK3RhbmgwMDUzIHRhbmggMy43ZS0wOCAwLjAgLT4gMy42OTk5OTk5OTk5OTk5OTgzNTU5ZS04IDAuMAordGFuaDAwNTQgdGFuaCAwLjAwMSAwLjAgLT4gMC4wMDA5OTk5OTk2NjY2NjY4MDAwMjA3NiAwLjAKK3RhbmgwMDU1IHRhbmggMC4yIDAuMCAtPiAwLjE5NzM3NTMyMDIyNDkwNDAxMTQxIDAuMAordGFuaDAwNTYgdGFuaCAxLjAgMC4wIC0+IDAuNzYxNTk0MTU1OTU1NzY0ODg4MTIgMC4wCit0YW5oMDA1NyB0YW5oIC0zLjdlLTA4IDAuMCAtPiAtMy42OTk5OTk5OTk5OTk5OTgzNTU5ZS04IDAuMAordGFuaDAwNTggdGFuaCAtMC4wMDEgMC4wIC0+IC0wLjAwMDk5OTk5OTY2NjY2NjgwMDAyMDc2IDAuMAordGFuaDAwNTkgdGFuaCAtMS4wIDAuMCAtPiAtMC43NjE1OTQxNTU5NTU3NjQ4ODgxMiAwLjAKK3RhbmgwMDYwIHRhbmggMC41NDkzMDYxNDQzMzQwNTQ5IDAuMCAtPiAwLjUwMDAwMDAwMDAwMDAwMDAzNDAyIDAuMAordGFuaDAwNjEgdGFuaCAtMC41NDkzMDYxNDQzMzQwNTQ5IDAuMCAtPiAtMC41MDAwMDAwMDAwMDAwMDAwMzQwMiAwLjAKK3RhbmgwMDYyIHRhbmggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5ODIyMzY0IDAuMAordGFuaDAwNjMgdGFuaCAxOC43MTQ5NzM4NzUxMTg1MjQgMC4wIC0+IDAuOTk5OTk5OTk5OTk5OTk5ODg4OTggMC4wCit0YW5oMDA2NCB0YW5oIDcxMSAwLjAgLT4gMS4wIDAuMAordGFuaDAwNjUgdGFuaCAxLjc5N2UrMzA4IDAuMCAtPiAxLjAgMC4wCisKIC0tc3BlY2lhbCB2YWx1ZXMKIHRhbmgxMDAwIHRhbmggMC4wIDAuMCAtPiAwLjAgMC4wCiB0YW5oMTAwMSB0YW5oIDAuMCBpbmYgLT4gbmFuIG5hbiAgICAgICAgaW52YWxpZApAQCAtMTk4NSw2ICsyMDc1LDIyIEBACiBjb3MwMDIyIGNvcyA3Ljk5MTQ1MTU0MzM4NTg1MTUgMC43MTY1OTk2NjYxNTUwMTQzNiAtPiAtMC4xNzM3NTQzOTkwNjkzNjU2NiAtMC43NzIxNzA0MzUyNzI5NDU4MgogY29zMDAyMyBjb3MgMC40NTEyNDM1MTE1MjU0MDIyNiAxLjY5OTI2OTM5OTM4MTIxNTggLT4gMi41NDM0Nzc5NDg5NzIyMzcgLTEuMTUyODE5MzY5NDg3NTQ3NwogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitjb3MwMDUwIGNvcyAxZS0xNTAgMC4wIC0+IDEuMCAtMC4wCitjb3MwMDUxIGNvcyAxZS0xOCAwLjAgLT4gMS4wIC0wLjAKK2NvczAwNTIgY29zIDFlLTA5IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTk5OTUgLTAuMAorY29zMDA1MyBjb3MgMC4wMDAzIDAuMCAtPiAwLjk5OTk5OTk1NTAwMDAwMDMzNzUgLTAuMAorY29zMDA1NCBjb3MgMC4yIDAuMCAtPiAwLjk4MDA2NjU3Nzg0MTI0MTYyODkyIC0wLjAKK2NvczAwNTUgY29zIDEuMCAwLjAgLT4gMC41NDAzMDIzMDU4NjgxMzk3MTc0IC0wLjAKK2NvczAwNTYgY29zIC0xZS0xOCAwLjAgLT4gMS4wIDAuMAorY29zMDA1NyBjb3MgLTAuMDAwMyAwLjAgLT4gMC45OTk5OTk5NTUwMDAwMDAzMzc1IDAuMAorY29zMDA1OCBjb3MgLTEuMCAwLjAgLT4gMC41NDAzMDIzMDU4NjgxMzk3MTc0IDAuMAorY29zMDA1OSBjb3MgMS4wNDcxOTc1NTExOTY1OTc2IDAuMCAtPiAwLjUwMDAwMDAwMDAwMDAwMDA5OTQ1IC0wLjAKK2NvczAwNjAgY29zIDIuNTcwNzk2MzI2Nzk0ODk2NiAwLjAgLT4gLTAuODQxNDcwOTg0ODA3ODk2NDczNTcgLTAuMAorY29zMDA2MSBjb3MgLTIuNTcwNzk2MzI2Nzk0ODk2NiAwLjAgLT4gLTAuODQxNDcwOTg0ODA3ODk2NDczNTcgMC4wCitjb3MwMDYyIGNvcyA3LjIyNTY2MzEwMzI1NjUyMyAwLjAgLT4gMC41ODc3ODUyNTIyOTI0NzQwNzU1OSAtMC4wCitjb3MwMDYzIGNvcyAtOC43OTY0NTk0MzAwNTE0MiAwLjAgLT4gLTAuODA5MDE2OTk0Mzc0OTQ3MjIyNTUgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBjb3MxMDAwIGNvcyAtMC4wIDAuMCAtPiAxLjAgMC4wCiBjb3MxMDAxIGNvcyAtaW5mIDAuMCAtPiBuYW4gMC4wIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMjA3Myw2ICsyMTc5LDIyIEBACiBzaW4wMDIyIHNpbiAxLjE1MTgwODczNTQ0MDM3MjUgNC44NTk3MjM1OTY2MTUwNTU4IC0+IDU4LjkxOTE0MTk4OTYwMzA0MSAyNi4yMzcwMDM0MDM3NTg4NTIKIHNpbjAwMjMgc2luIDAuMDAwODc3NzMwNzg0MDY2NDkxOTIgMzQuNzkyMzc5MjExMzEyMDk1IC0+IDU2NTU0ODE0NTU2OS4zODI0NSA2NDQzMjk2ODU4MjI3MDAuNjIKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorc2luMDA1MCBzaW4gMWUtMTAwIDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAyZS0xMDAgMC4wCitzaW4wMDUxIHNpbiAzLjdlLTA4IDAuMCAtPiAzLjY5OTk5OTk5OTk5OTk5OTIwMDFlLTggMC4wCitzaW4wMDUyIHNpbiAwLjAwMSAwLjAgLT4gMC4wMDA5OTk5OTk4MzMzMzMzNDE2ODc0OCAwLjAKK3NpbjAwNTMgc2luIDAuMiAwLjAgLT4gMC4xOTg2NjkzMzA3OTUwNjEyMjYzNCAwLjAKK3NpbjAwNTQgc2luIDEuMCAwLjAgLT4gMC44NDE0NzA5ODQ4MDc4OTY1MDY2NSAwLjAKK3NpbjAwNTUgc2luIC0zLjdlLTA4IDAuMCAtPiAtMy42OTk5OTk5OTk5OTk5OTkyMDAxZS04IDAuMAorc2luMDA1NiBzaW4gLTAuMDAxIDAuMCAtPiAtMC4wMDA5OTk5OTk4MzMzMzMzNDE2ODc0OCAwLjAKK3NpbjAwNTcgc2luIC0xLjAgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjUwNjY1IDAuMAorc2luMDA1OCBzaW4gMC41MjM1OTg3NzU1OTgyOTg5IDAuMCAtPiAwLjUwMDAwMDAwMDAwMDAwMDA0NjQyIDAuMAorc2luMDA1OSBzaW4gLTAuNTIzNTk4Nzc1NTk4Mjk4OSAwLjAgLT4gLTAuNTAwMDAwMDAwMDAwMDAwMDQ2NDIgMC4wCitzaW4wMDYwIHNpbiAyLjYxNzk5Mzg3Nzk5MTQ5NDQgMC4wIC0+IDAuNDk5OTk5OTk5OTk5OTk5OTYwMTggLTAuMAorc2luMDA2MSBzaW4gLTIuNjE3OTkzODc3OTkxNDk0NCAwLjAgLT4gLTAuNDk5OTk5OTk5OTk5OTk5OTYwMTggLTAuMAorc2luMDA2MiBzaW4gNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDAuODA5MDE2OTk0Mzc0OTQ2NzM2NDggMC4wCitzaW4wMDYzIHNpbiAtOC43OTY0NTk0MzAwNTE0MiAwLjAgLT4gLTAuNTg3Nzg1MjUyMjkyNDczNDA2NTggLTAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc2luMTAwMCBzaW4gLTAuMCAwLjAgLT4gLTAuMCAwLjAKIHNpbjEwMDEgc2luIC1pbmYgMC4wIC0+IG5hbiAwLjAgaW52YWxpZCBpZ25vcmUtaW1hZy1zaWduCkBAIC0yMTYxLDYgKzIyODMsMjUgQEAKIHRhbjAwMjIgdGFuIDEuMTYxNTMxMzkwMDg4MDU3NyAxLjc5NTYyOTg3Mjg2NDcxMDcgLT4gMC4wNDE3OTMxODY4MjYzOTAzNjIgMS4wMzc1MzM5NTQ2MDM0NzkyCiB0YW4wMDIzIHRhbiAwLjA2NzAxNDc3OTQ3NzkwODk0NSA1Ljg1MTczNjE1Nzc0NTcwOTcgLT4gMi4yMDg4NjM5NzU0ODAwMDM0ZS0wNiAwLjk5OTk4MzYxODI0MjAwNjEKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQordGFuMDA1MCB0YW4gMWUtMTAwIDAuMCAtPiAxLjAwMDAwMDAwMDAwMDAwMDAyZS0xMDAgMC4wCit0YW4wMDUxIHRhbiAzLjdlLTA4IDAuMCAtPiAzLjcwMDAwMDAwMDAwMDAwMTczMjhlLTggMC4wCit0YW4wMDUyIHRhbiAwLjAwMSAwLjAgLT4gMC4wMDEwMDAwMDAzMzMzMzM0NjY2ODc1IDAuMAordGFuMDA1MyB0YW4gMC4yIDAuMCAtPiAwLjIwMjcxMDAzNTUwODY3MjQ5NDg4IDAuMAordGFuMDA1NCB0YW4gMS4wIDAuMCAtPiAxLjU1NzQwNzcyNDY1NDkwMjIzMDUgMC4wCit0YW4wMDU1IHRhbiAtMy43ZS0wOCAwLjAgLT4gLTMuNzAwMDAwMDAwMDAwMDAxNzMyOGUtOCAwLjAKK3RhbjAwNTYgdGFuIC0wLjAwMSAwLjAgLT4gLTAuMDAxMDAwMDAwMzMzMzMzNDY2Njg3NSAwLjAKK3RhbjAwNTcgdGFuIC0xLjAgMC4wIC0+IC0xLjU1NzQwNzcyNDY1NDkwMjIzMDUgMC4wCit0YW4wMDU4IHRhbiAwLjQ2MzY0NzYwOTAwMDgwNjEgMC4wIC0+IDAuNDk5OTk5OTk5OTk5OTk5OTcxNjMgMC4wCit0YW4wMDU5IHRhbiAtMC40NjM2NDc2MDkwMDA4MDYxIDAuMCAtPiAtMC40OTk5OTk5OTk5OTk5OTk5NzE2MyAwLjAKK3RhbjAwNjAgdGFuIDEuMTA3MTQ4NzE3Nzk0MDkwNCAwLjAgLT4gMS45OTk5OTk5OTk5OTk5OTk1Mjk4IDAuMAordGFuMDA2MSB0YW4gLTEuMTA3MTQ4NzE3Nzk0MDkwNCAwLjAgLT4gLTEuOTk5OTk5OTk5OTk5OTk5NTI5OCAwLjAKK3RhbjAwNjIgdGFuIDEuNSAwLjAgLT4gMTQuMTAxNDE5OTQ3MTcxNzE5Mzg4IDAuMAordGFuMDA2MyB0YW4gMS41NyAwLjAgLT4gMTI1NS43NjU1OTE1MDA3ODk2NDc1IDAuMAordGFuMDA2NCB0YW4gMS41NzA3OTYzMjY3OTQ4OTYxIDAuMCAtPiAxOTc4OTM3OTY2MDk1MjE5LjA1MzggMC4wCit0YW4wMDY1IHRhbiA3LjIyNTY2MzEwMzI1NjUyMyAwLjAgLT4gMS4zNzYzODE5MjA0NzExNzAxNTIyIDAuMAordGFuMDA2NiB0YW4gLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IDAuNzI2NTQyNTI4MDA1MzYxNDA5OCAwLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHRhbjEwMDAgdGFuIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiB0YW4xMDAxIHRhbiAtaW5mIDAuMCAtPiBuYW4gbmFuIGludmFsaWQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5IGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKaW5kZXggMDg2MGRiOC4uOTg4YzZmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKQEAgLTIsMTQgKzIsMjIgQEAKIAogU2VlIGh0dHA6Ly93d3cuem9wZS5vcmcvTWVtYmVycy9mZHJha2UvRGF0ZVRpbWVXaWtpL1Rlc3RDYXNlcwogIiIiCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaXNfcmVzb3VyY2VfZW5hYmxlZAorCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgYmlzZWN0CiAKIGltcG9ydCBjb3B5CiBpbXBvcnQgZGVjaW1hbAogaW1wb3J0IHN5cworaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RydWN0CiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKKwogZnJvbSBvcGVyYXRvciBpbXBvcnQgbHQsIGxlLCBndCwgZ2UsIGVxLCBuZSwgdHJ1ZWRpdiwgZmxvb3JkaXYsIG1vZAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTI4NCw3ICsyOTIsOCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6IHNlbGYuRVNULmRzdCg1KQogCiAgICAgZGVmIHRlc3RfdHpuYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMrMDA6MDAnLCB0aW1lem9uZShaRVJPKS50em5hbWUoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQycsIHRpbWV6b25lLnV0Yy50em5hbWUoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQycsIHRpbWV6b25lKFpFUk8pLnR6bmFtZShOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDLTA1OjAwJywgdGltZXpvbmUoLTUgKiBIT1VSKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQyswOTozMCcsIHRpbWV6b25lKDkuNSAqIEhPVVIpLnR6bmFtZShOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDLTAwOjAxJywgdGltZXpvbmUodGltZWRlbHRhKG1pbnV0ZXM9LTEpKS50em5hbWUoTm9uZSkpCkBAIC0xNTU4LDEzICsxNTY3LDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCBkdDIpCiAKICAgICBkZWYgdGVzdF9pc29mb3JtYXQoc2VsZik6Ci0gICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIsIDMsIDIsIDQsIDUsIDEsIDEyMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAgICAiMDAwMi0wMy0wMlQwNDowNTowMS4wMDAxMjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdUJyksICIwMDAyLTAzLTAyVDA0OjA1OjAxLjAwMDEyMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJyAnKSwgIjAwMDItMDMtMDIgMDQ6MDU6MDEuMDAwMTIzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnXHgwMCcpLCAiMDAwMi0wMy0wMlx4MDAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxLCAxMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnVCcpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAxLTAyLTAzIDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1x4MDAnKSwgIjAwMDEtMDItMDNceDAwMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0naG91cnMnKSwgIjAwMDEtMDItMDNUMDQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJyksICIwMDAxLTAyLTAzVDA0OjA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHNlcD0nICcsIHRpbWVzcGVjPSdtaW51dGVzJyksICIwMDAxLTAyLTAzIDA0OjA1IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5pc29mb3JtYXQsIHRpbWVzcGVjPSdmb28nKQogICAgICAgICAjIHN0ciBpcyBJU08gZm9ybWF0IHdpdGggdGhlIHNlcGFyYXRvciBmb3JjZWQgdG8gYSBibGFuay4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodCksICIwMDAyLTAzLTAyIDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMS0wMi0wMyAwNDowNTowMS4wMDAxMjMiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEsIDk5OTUwMCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjk5OSswMDowMCIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSwgOTk5NTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuOTk5IikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAwMDAiKQogCiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIsIDMsIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDItMDMtMDJUMDA6MDA6MDAiKQpAQCAtMTU3Miw2ICsxNjAwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJyAnKSwgIjAwMDItMDMtMDIgMDA6MDA6MDAiKQogICAgICAgICAjIHN0ciBpcyBJU08gZm9ybWF0IHdpdGggdGhlIHNlcGFyYXRvciBmb3JjZWQgdG8gYSBibGFuay4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodCksICIwMDAyLTAzLTAyIDAwOjAwOjAwIikKKyAgICAgICAgIyBJU08gZm9ybWF0IHdpdGggdGltZXpvbmUKKyAgICAgICAgdHogPSBGaXhlZE9mZnNldCh0aW1lZGVsdGEoc2Vjb25kcz0xNiksICdYWFgnKQorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyLCB0emluZm89dHopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgIjAwMDItMDMtMDJUMDA6MDA6MDArMDA6MDA6MTYiKQogCiAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYpOgogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3MoMjAwNywgOSwgMTAsIDQsIDUsIDEsIDEyMykKQEAgLTE2OTEsNiArMTcyMywxNCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAwLCAxLCAzMSwgMjMsIDU5LCA1OSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDAwMCkKKyAgICAgICAgIyBiYWQgZm9sZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAyMDAwLCAxLCAzMSwgZm9sZD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIGZvbGQ9MikKKyAgICAgICAgIyBQb3NpdGlvbmFsIGZvbGQ6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIDIzLCA1OSwgNTksIDAsIE5vbmUsIDEpCiAKICAgICBkZWYgdGVzdF9oYXNoX2VxdWFsaXR5KHNlbGYpOgogICAgICAgICBkID0gc2VsZi50aGVjbGFzcygyMDAwLCAxMiwgMzEsIDIzLCAzMCwgMTcpCkBAIC0xODc0LDE2ICsxOTE0LDIwIEBACiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIDEsIDIsIDMsIDQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAxODAwMC4wICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQotICAgICAgICAjIE1pc3NpbmcgaG91ciBtYXkgcHJvZHVjZSBwbGF0Zm9ybS1kZXBlbmRlbnQgcmVzdWx0Ci0gICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDMsIDExLCAyLCAzMCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksCi0gICAgICAgICAgICAgICAgICAgICAgW3QgLSB0aW1lZGVsdGEoaG91cnM9MSksIHQgKyB0aW1lZGVsdGEoaG91cnM9MSldKQorICAgICAgICAjIE1pc3NpbmcgaG91cgorICAgICAgICB0MCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMywgMTEsIDIsIDMwKQorICAgICAgICB0MSA9IHQwLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0MS50aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdDAgLSB0aW1lZGVsdGEoaG91cnM9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQwLnRpbWVzdGFtcCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0MSArIHRpbWVkZWx0YShob3Vycz0xKSkKICAgICAgICAgIyBBbWJpZ3VvdXMgaG91ciBkZWZhdWx0cyB0byBEU1QKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMTEsIDQsIDEsIDMwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0LnRpbWVzdGFtcCgpKSwgdCkKIAogICAgICAgICAjIFRpbWVzdGFtcCBtYXkgcmFpc2UgYW4gb3ZlcmZsb3cgZXJyb3Igb24gc29tZSBwbGF0Zm9ybXMKLSAgICAgICAgZm9yIHQgaW4gW3NlbGYudGhlY2xhc3MoMSwxLDEpLCBzZWxmLnRoZWNsYXNzKDk5OTksMTIsMTIpXToKKyAgICAgICAgIyBYWFg6IERvIHdlIGNhcmUgdG8gc3VwcG9ydCB0aGUgZmlyc3QgYW5kIGxhc3QgeWVhcj8KKyAgICAgICAgZm9yIHQgaW4gW3NlbGYudGhlY2xhc3MoMiwxLDEpLCBzZWxmLnRoZWNsYXNzKDk5OTgsMTIsMTIpXToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzID0gdC50aW1lc3RhbXAoKQogICAgICAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CkBAIC0xOTAyLDYgKzE5NDYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAgKyAzNjAwICsgMio2MCArIDMgKyA0KjFlLTYpCiAKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignTVNLLTAzJykgICMgU29tZXRoaW5nIGVhc3Qgb2YgR3JlZW53aWNoCiAgICAgZGVmIHRlc3RfbWljcm9zZWNvbmRfcm91bmRpbmcoc2VsZik6CiAgICAgICAgIGZvciBmdHMgaW4gW3NlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wXToKQEAgLTIwNzYsMTEgKzIxMjEsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lKSAjIG5lZWQgYW4gYXJnCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCkgIyBuZWVkIHR3byBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgdCwgZCkgIyBhcmdzIHJldmVyc2VkCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgdCwgMSkgIyB0b28gbWFueSBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgZCwgdCwgMSkgIyB3cm9uZyB0emluZm8gdHlwZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEsIDIpICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCAiZGF0ZSIsICJ0aW1lIikgIyB3cm9uZyB0eXBlcwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsICJ0aW1lIikgIyB3cm9uZyB0eXBlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgImRhdGUiLCB0KSAjIHdyb25nIHR5cGUKIAorICAgICAgICAjIHR6aW5mbz0gYXJndW1lbnQKKyAgICAgICAgZHQgPSBjb21iaW5lKGQsIHQsIHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkdC50emluZm8sIHRpbWV6b25lLnV0YykKKyAgICAgICAgZHQgPSBjb21iaW5lKGQsIHQsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHQudHppbmZvLCB0aW1lem9uZS51dGMpCisgICAgICAgIHQgPSB0aW1lKCkKKyAgICAgICAgZHQgPSBjb21iaW5lKGR0LCB0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmRhdGUoKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC50aW1lKCksIHQpCisKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCiAgICAgICAgIGFyZ3MgPSBbMSwgMiwgMywgNCwgNSwgNiwgN10KQEAgLTIxMDcsNiArMjE2Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJhc2UucmVwbGFjZSwgeWVhcj0yMDAxKQogCiAgICAgZGVmIHRlc3RfYXN0aW1lem9uZShzZWxmKToKKyAgICAgICAgcmV0dXJuICAjIFRoZSByZXN0IGlzIG5vIGxvbmdlciBhcHBsaWNhYmxlCiAgICAgICAgICMgUHJldHR5IGJvcmluZyEgIFRoZSBUWiB0ZXN0IGlzIG1vcmUgaW50ZXJlc3RpbmcgaGVyZS4gIGFzdGltZXpvbmUoKQogICAgICAgICAjIHNpbXBseSBjYW4ndCBiZSBhcHBsaWVkIHRvIGEgbmFpdmUgb2JqZWN0LgogICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3Mubm93KCkKQEAgLTIzMjQsNiArMjM4MSwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICIwMDowMDowMC4xMDAwMDAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksIHN0cih0KSkKIAorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MTIzNDU2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdob3VycycpLCAiMTIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJyksICIxMjozNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J3NlY29uZHMnKSwgIjEyOjM0OjU2IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIxMjozNDo1Ni4xMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjEyOjM0OjU2LjEyMzQ1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjEyOjM0OjU2LjEyMzQ1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuaXNvZm9ybWF0LCB0aW1lc3BlYz0nbW9ua2V5JykKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9OTk5NTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjEyOjM0OjU2Ljk5OSIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMTI6MzQ6NTYuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIxMjozNDo1Ni4wMDAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIxMjozNDo1NiIpCisKICAgICBkZWYgdGVzdF8xNjUzNzM2KHNlbGYpOgogICAgICAgICAjIHZlcmlmeSBpdCBkb2Vzbid0IGFjY2VwdCBleHRyYSBrZXl3b3JkIGFyZ3VtZW50cwogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcyhzZWNvbmQ9MSkKQEAgLTI1ODIsOSArMjY1Niw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQudXRjb2Zmc2V0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LmRzdCkKIAotICAgICAgICAjIE5vdCBhIHdob2xlIG51bWJlciBvZiBtaW51dGVzLgorICAgICAgICAjIE5vdCBhIHdob2xlIG51bWJlciBvZiBzZWNvbmRzLgogICAgICAgICBjbGFzcyBDNyh0emluZm8pOgotICAgICAgICAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6IHJldHVybiB0aW1lZGVsdGEoc2Vjb25kcz02MSkKKyAgICAgICAgICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKG1pY3Jvc2Vjb25kcz02MSkKICAgICAgICAgICAgIGRlZiBkc3Qoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKG1pY3Jvc2Vjb25kcz0tODEpCiAgICAgICAgIHQgPSBjbHMoMSwgMSwgMSwgdHppbmZvPUM3KCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQudXRjb2Zmc2V0KQpAQCAtMzkyNywxMiArNDAwMSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZSh4eCwgeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCkpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15hbiBpbnRlZ2VyIGlzIHJlcXVpcmVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1woZ290IHR5cGUgc3RyXCkkJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcKGdvdCB0eXBlIHN0clwpJCcpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAnMTAnKQogCiAgICAgICAgIGYxMCA9IE51bWJlcigxMC45KQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnXl9faW50X18gcmV0dXJuZWQgbm9uLWludCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKHR5cGUgZmxvYXRcKSQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1wodHlwZSBmbG9hdFwpJCcpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCBmMTApCiAKICAgICAgICAgY2xhc3MgRmxvYXQoZmxvYXQpOgpAQCAtMzk1Nyw1ICs0MDMxLDc5MCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBkYXRldGltZSgxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMC4pCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIExvY2FsIFRpbWUgRGlzYW1iaWd1YXRpb24KKworIyBBbiBleHBlcmltZW50YWwgcmVpbXBsZW1lbnRhdGlvbiBvZiBmcm9tdXRjIHRoYXQgcmVzcGVjdHMgdGhlICJmb2xkIiBmbGFnLgorCitjbGFzcyB0emluZm8yKHR6aW5mbyk6CisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgICJkYXRldGltZSBpbiBVVEMgLT4gZGF0ZXRpbWUgaW4gbG9jYWwgdGltZS4iCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZHQsIGRhdGV0aW1lKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZnJvbXV0YygpIHJlcXVpcmVzIGEgZGF0ZXRpbWUgYXJndW1lbnQiKQorICAgICAgICBpZiBkdC50emluZm8gaXMgbm90IHNlbGY6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdC50emluZm8gaXMgbm90IHNlbGYiKQorICAgICAgICAjIFJldHVybmVkIHZhbHVlIHNhdGlzZmllcworICAgICAgICAjICAgICAgICAgIGR0ICsgbGR0LnV0Y29mZnNldCgpID0gbGR0CisgICAgICAgIG9mZjAgPSBkdC5yZXBsYWNlKGZvbGQ9MCkudXRjb2Zmc2V0KCkKKyAgICAgICAgb2ZmMSA9IGR0LnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKQorICAgICAgICBpZiBvZmYwIGlzIE5vbmUgb3Igb2ZmMSBpcyBOb25lIG9yIGR0LmRzdCgpIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIGlmIG9mZjAgPT0gb2ZmMToKKyAgICAgICAgICAgIGxkdCA9IGR0ICsgb2ZmMAorICAgICAgICAgICAgb2ZmMSA9IGxkdC51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgb2ZmMCA9PSBvZmYxOgorICAgICAgICAgICAgICAgIHJldHVybiBsZHQKKyAgICAgICAgIyBOb3csIHdlIGRpc2NvdmVyZWQgYm90aCBwb3NzaWJsZSBvZmZzZXRzLCBzbworICAgICAgICAjIHdlIGNhbiBqdXN0IHRyeSBmb3VyIHBvc3NpYmxlIHNvbHV0aW9uczoKKyAgICAgICAgZm9yIG9mZiBpbiBbb2ZmMCwgb2ZmMV06CisgICAgICAgICAgICBsZHQgPSBkdCArIG9mZgorICAgICAgICAgICAgaWYgbGR0LnV0Y29mZnNldCgpID09IG9mZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisgICAgICAgICAgICBsZHQgPSBsZHQucmVwbGFjZShmb2xkPTEpCisgICAgICAgICAgICBpZiBsZHQudXRjb2Zmc2V0KCkgPT0gb2ZmOgorICAgICAgICAgICAgICAgIHJldHVybiBsZHQKKworICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJObyBzdWl0YWJsZSBsb2NhbCB0aW1lIGZvdW5kIikKKworIyBSZWltcGxlbWVudGluZyBzaW1wbGlmaWVkIFVTIHRpbWV6b25lcyB0byByZXNwZWN0IHRoZSAiZm9sZCIgZmxhZzoKKworY2xhc3MgVVNUaW1lWm9uZTIodHppbmZvMik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG91cnMsIHJlcHJuYW1lLCBzdGRuYW1lLCBkc3RuYW1lKToKKyAgICAgICAgc2VsZi5zdGRvZmZzZXQgPSB0aW1lZGVsdGEoaG91cnM9aG91cnMpCisgICAgICAgIHNlbGYucmVwcm5hbWUgPSByZXBybmFtZQorICAgICAgICBzZWxmLnN0ZG5hbWUgPSBzdGRuYW1lCisgICAgICAgIHNlbGYuZHN0bmFtZSA9IGRzdG5hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucmVwcm5hbWUKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICBpZiBzZWxmLmRzdChkdCk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kc3RuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zdGRuYW1lCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuc3Rkb2Zmc2V0ICsgc2VsZi5kc3QoZHQpCisKKyAgICBkZWYgZHN0KHNlbGYsIGR0KToKKyAgICAgICAgaWYgZHQgaXMgTm9uZSBvciBkdC50emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgICMgQW4gZXhjZXB0aW9uIGluc3RlYWQgbWF5IGJlIHNlbnNpYmxlIGhlcmUsIGluIG9uZSBvciBtb3JlIG9mCisgICAgICAgICAgICAjIHRoZSBjYXNlcy4KKyAgICAgICAgICAgIHJldHVybiBaRVJPCisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorCisgICAgICAgICMgRmluZCBmaXJzdCBTdW5kYXkgaW4gQXByaWwuCisgICAgICAgIHN0YXJ0ID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKERTVFNUQVJULnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKKyAgICAgICAgYXNzZXJ0IHN0YXJ0LndlZWtkYXkoKSA9PSA2IGFuZCBzdGFydC5tb250aCA9PSA0IGFuZCBzdGFydC5kYXkgPD0gNworCisgICAgICAgICMgRmluZCBsYXN0IFN1bmRheSBpbiBPY3RvYmVyLgorICAgICAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoRFNURU5ELnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKKyAgICAgICAgYXNzZXJ0IGVuZC53ZWVrZGF5KCkgPT0gNiBhbmQgZW5kLm1vbnRoID09IDEwIGFuZCBlbmQuZGF5ID49IDI1CisKKyAgICAgICAgIyBDYW4ndCBjb21wYXJlIG5haXZlIHRvIGF3YXJlIG9iamVjdHMsIHNvIHN0cmlwIHRoZSB0aW1lem9uZSBmcm9tCisgICAgICAgICMgZHQgZmlyc3QuCisgICAgICAgIGR0ID0gZHQucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgaWYgc3RhcnQgKyBIT1VSIDw9IGR0IDwgZW5kOgorICAgICAgICAgICAgIyBEU1QgaXMgaW4gZWZmZWN0LgorICAgICAgICAgICAgcmV0dXJuIEhPVVIKKyAgICAgICAgZWxpZiBlbmQgPD0gZHQgPCBlbmQgKyBIT1VSOgorICAgICAgICAgICAgIyBGb2xkIChhbiBhbWJpZ3VvdXMgaG91cik6IHVzZSBkdC5mb2xkIHRvIGRpc2FtYmlndWF0ZS4KKyAgICAgICAgICAgIHJldHVybiBaRVJPIGlmIGR0LmZvbGQgZWxzZSBIT1VSCisgICAgICAgIGVsaWYgc3RhcnQgPD0gZHQgPCBzdGFydCArIEhPVVI6CisgICAgICAgICAgICAjIEdhcCAoYSBub24tZXhpc3RlbnQgaG91cik6IHJldmVyc2UgdGhlIGZvbGQgcnVsZS4KKyAgICAgICAgICAgIHJldHVybiBIT1VSIGlmIGR0LmZvbGQgZWxzZSBaRVJPCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIERTVCBpcyBvZmYuCisgICAgICAgICAgICByZXR1cm4gWkVSTworCitFYXN0ZXJuMiAgPSBVU1RpbWVab25lMigtNSwgIkVhc3Rlcm4yIiwgICJFU1QiLCAiRURUIikKK0NlbnRyYWwyICA9IFVTVGltZVpvbmUyKC02LCAiQ2VudHJhbDIiLCAgIkNTVCIsICJDRFQiKQorTW91bnRhaW4yID0gVVNUaW1lWm9uZTIoLTcsICJNb3VudGFpbjIiLCAiTVNUIiwgIk1EVCIpCitQYWNpZmljMiAgPSBVU1RpbWVab25lMigtOCwgIlBhY2lmaWMyIiwgICJQU1QiLCAiUERUIikKKworIyBFdXJvcGVfVmlsbml1c18xOTQxIHR6aW5mbyBpbXBsZW1lbnRhdGlvbiByZXByb2R1Y2VzIHRoZSBmb2xsb3dpbmcKKyMgMTk0MSB0cmFuc2l0aW9uIGZyb20gT2xzb24ncyB0emRpc3Q6CisjCisjIFpvbmUgTkFNRSAgICAgICAgICAgR01UT0ZGIFJVTEVTICBGT1JNQVQgW1VOVElMXQorIyBab25lRXVyb3BlL1ZpbG5pdXMgIDE6MDAgICAtICAgICAgQ0VUICAgIDE5NDAgQXVnICAzCisjICAgICAgICAgICAgICAgICAgICAgMzowMCAgIC0gICAgICBNU0sgICAgMTk0MSBKdW4gMjQKKyMgICAgICAgICAgICAgICAgICAgICAxOjAwICAgQy1FdXIgIENFJXNUICAxOTQ0IEF1ZworIworIyAkIHpkdW1wIC12IEV1cm9wZS9WaWxuaXVzIHwgZ3JlcCAxOTQxCisjIEV1cm9wZS9WaWxuaXVzICBNb24gSnVuIDIzIDIwOjU5OjU5IDE5NDEgVVRDID0gTW9uIEp1biAyMyAyMzo1OTo1OSAxOTQxIE1TSyBpc2RzdD0wIGdtdG9mZj0xMDgwMAorIyBFdXJvcGUvVmlsbml1cyAgTW9uIEp1biAyMyAyMTowMDowMCAxOTQxIFVUQyA9IE1vbiBKdW4gMjMgMjM6MDA6MDAgMTk0MSBDRVNUIGlzZHN0PTEgZ210b2ZmPTcyMDAKKworY2xhc3MgRXVyb3BlX1ZpbG5pdXNfMTk0MSh0emluZm8pOgorICAgIGRlZiBfdXRjX2ZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBbZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIxLCB0emluZm89c2VsZiksICAjIE1vbiBKdW4gMjMgMjE6MDA6MDAgMTk0MSBVVEMKKyAgICAgICAgICAgICAgICBkYXRldGltZSgxOTQxLCA2LCAyMywgMjIsIHR6aW5mbz1zZWxmKV0gICMgTW9uIEp1biAyMyAyMjowMDowMCAxOTQxIFVUQworCisgICAgZGVmIF9sb2NfZm9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIFtkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIHR6aW5mbz1zZWxmKSwgICMgTW9uIEp1biAyMyAyMzowMDowMCAxOTQxIE1TSyAvIENFU1QKKyAgICAgICAgICAgICAgICBkYXRldGltZSgxOTQxLCA2LCAyNCwgMCwgdHppbmZvPXNlbGYpXSAgICMgTW9uIEp1biAyNCAwMDowMDowMCAxOTQxIENFU1QKKworICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl9sb2NfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiAzICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoMiBpZiBkdC5mb2xkIGVsc2UgMykgKiBIT1VSCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAyICogSE9VUgorCisgICAgZGVmIGRzdChzZWxmLCBkdCk6CisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX2xvY19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuIDAgKiBIT1VSCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuICgxIGlmIGR0LmZvbGQgZWxzZSAwKSAqIEhPVVIKKyAgICAgICAgIyBpZiBkdCA+PSBmb2xkX3N0b3AKKyAgICAgICAgcmV0dXJuIDEgKiBIT1VSCisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fbG9jX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gJ01TSycKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKCdNU0snLCAnQ0VTVCcpW2R0LmZvbGRdCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAnQ0VTVCcKKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LmZvbGQgPT0gMAorICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKyAgICAgICAgaWYgZHQueWVhciAhPSAxOTQxOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl91dGNfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiBkdCArIDMgKiBIT1VSCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuIChkdCArIDIgKiBIT1VSKS5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgIyBpZiBkdCA+PSBmb2xkX3N0b3AKKyAgICAgICAgcmV0dXJuIGR0ICsgMiAqIEhPVVIKKworCitjbGFzcyBUZXN0TG9jYWxUaW1lRGlzYW1iaWd1YXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfdmlsbml1c18xOTQxX2Zyb211dGMoc2VsZik6CisgICAgICAgIFZpbG5pdXMgPSBFdXJvcGVfVmlsbml1c18xOTQxKCkKKworICAgICAgICBnZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjAsIDU5LCA1OSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbGR0ID0gZ2R0LmFzdGltZXpvbmUoVmlsbml1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuc3RyZnRpbWUoIiVjICVaJXoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMzo1OTo1OSAxOTQxIE1TSyswMzAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZHQuZHN0KCkpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIxLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsZHQgPSBnZHQuYXN0aW1lem9uZShWaWxuaXVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5zdHJmdGltZSgiJWMgJVoleiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIzOjAwOjAwIDE5NDEgQ0VTVCswMjAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxkdC5kc3QoKSkKKworICAgICAgICBnZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjIsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxkdCA9IGdkdC5hc3RpbWV6b25lKFZpbG5pdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnN0cmZ0aW1lKCIlYyAlWiV6IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1R1ZSBKdW4gMjQgMDA6MDA6MDAgMTk0MSBDRVNUKzAyMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGR0LmRzdCgpKQorCisgICAgZGVmIHRlc3Rfdmlsbml1c18xOTQxX3RvdXRjKHNlbGYpOgorICAgICAgICBWaWxuaXVzID0gRXVyb3BlX1ZpbG5pdXNfMTk0MSgpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCA1OSwgNTksIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDE5OjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIDU5LCA1OSwgdHppbmZvPVZpbG5pdXMpCisgICAgICAgIGdkdCA9IGxkdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZHQuc3RyZnRpbWUoIiVjICVaIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjA6NTk6NTkgMTk0MSBVVEMnKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMywgNTksIDU5LCB0emluZm89Vmlsbml1cywgZm9sZD0xKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIxOjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyNCwgMCwgdHppbmZvPVZpbG5pdXMpCisgICAgICAgIGdkdCA9IGxkdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZHQuc3RyZnRpbWUoIiVjICVaIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjI6MDA6MDAgMTk0MSBVVEMnKQorCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcnMoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDAsIGZvbGQ9MSkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LmZvbGQsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRpbWUoMCwgMCwgMCwgMCwgTm9uZSwgMCkKKworICAgIGRlZiB0ZXN0X21lbWJlcihzZWxmKToKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIHQgPSBkdC50aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZvbGQsIDEpCisgICAgICAgIHQgPSBkdC50aW1ldHooKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZm9sZCwgMSkKKworICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UoZm9sZD0xKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0xKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVwbGFjZShmb2xkPTApLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTApLmZvbGQsIDApCisgICAgICAgICMgQ2hlY2sgdGhhdCByZXBsYWNlbWVudCBvZiBvdGhlciBmaWVsZHMgZG9lcyBub3QgY2hhbmdlICJmb2xkIi4KKyAgICAgICAgdCA9IHQucmVwbGFjZShmb2xkPTEsIHR6aW5mbz1FYXN0ZXJuKQorICAgICAgICBkdCA9IGR0LnJlcGxhY2UoZm9sZD0xLCB0emluZm89RWFzdGVybikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UodHppbmZvPU5vbmUpLmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZSh0emluZm89Tm9uZSkuZm9sZCwgMSkKKyAgICAgICAgIyBDaGVjayB0aGF0IGZvbGQgaXMgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdC5yZXBsYWNlKDEsIDEsIDEsIE5vbmUsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGR0LnJlcGxhY2UoMSwgMSwgMSwgMSwgMSwgMSwgMSwgTm9uZSwgMSkKKworICAgIGRlZiB0ZXN0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0LnJlcGxhY2UoZm9sZD0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgZHQucmVwbGFjZShmb2xkPTEpKQorCisgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoMCkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godCksIGhhc2godC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goZHQpLCBoYXNoKGR0LnJlcGxhY2UoZm9sZD0xKSkpCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9mcm9tdGltZXN0YW1wKHNlbGYpOgorICAgICAgICBzID0gMTQxNDkwNjIwMAorICAgICAgICBkdDAgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMpCisgICAgICAgIGR0MSA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocyArIDM2MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQxLmZvbGQsIDEpCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignQXVzdHJhbGlhL0xvcmRfSG93ZScpCisgICAgZGVmIHRlc3RfZnJvbXRpbWVzdGFtcF9sb3JkX2hvd2Uoc2VsZik6CisgICAgICAgIHRtID0gX3RpbWUubG9jYWx0aW1lKDEuNGU5KQorICAgICAgICBpZiBfdGltZS5zdHJmdGltZSgnJVoleicsIHRtKSAhPSAnTEhTVCsxMDMwJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0F1c3RyYWxpYS9Mb3JkX0hvd2UgdGltZXpvbmUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtJykKKyAgICAgICAgIyAkIFRaPUF1c3RyYWxpYS9Mb3JkX0hvd2UgZGF0ZSAtciAxNDI4MTU4NzAwCisgICAgICAgICMgU3VuIEFwciAgNSAwMTo0NTowMCBMSERUIDIwMTUKKyAgICAgICAgIyAkIFRaPUF1c3RyYWxpYS9Mb3JkX0hvd2UgZGF0ZSAtciAxNDI4MTYwNTAwCisgICAgICAgICMgU3VuIEFwciAgNSAwMTo0NTowMCBMSFNUIDIwMTUKKyAgICAgICAgcyA9IDE0MjgxNTg3MDAKKyAgICAgICAgdDAgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMpCisgICAgICAgIHQxID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzICsgMTgwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MCwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS5mb2xkLCAxKQorCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXAoc2VsZik6CisgICAgICAgIGR0MCA9IGRhdGV0aW1lKDIwMTQsIDExLCAyLCAxLCAzMCkKKyAgICAgICAgZHQxID0gZHQwLnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MC50aW1lc3RhbXAoKSArIDM2MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgZHQxLnRpbWVzdGFtcCgpKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0F1c3RyYWxpYS9Mb3JkX0hvd2UnKQorICAgIGRlZiB0ZXN0X3RpbWVzdGFtcF9sb3JkX2hvd2Uoc2VsZik6CisgICAgICAgIHRtID0gX3RpbWUubG9jYWx0aW1lKDEuNGU5KQorICAgICAgICBpZiBfdGltZS5zdHJmdGltZSgnJVoleicsIHRtKSAhPSAnTEhTVCsxMDMwJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0F1c3RyYWxpYS9Mb3JkX0hvd2UgdGltZXpvbmUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtJykKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMTUsIDQsIDUsIDEsIDQ1KQorICAgICAgICBzMCA9IHQucmVwbGFjZShmb2xkPTApLnRpbWVzdGFtcCgpCisgICAgICAgIHMxID0gdC5yZXBsYWNlKGZvbGQ9MSkudGltZXN0YW1wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMCArIDE4MDAsIHMxKQorCisKKyAgICBAc3VwcG9ydC5ydW5fd2l0aF90eignRVNUKzA1RURULE0zLjIuMCxNMTEuMS4wJykKKyAgICBkZWYgdGVzdF9hc3RpbWV6b25lKHNlbGYpOgorICAgICAgICBkdDAgPSBkYXRldGltZSgyMDE0LCAxMSwgMiwgMSwgMzApCisgICAgICAgIGR0MSA9IGR0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgIyBDb252ZXJ0IGJvdGggbmFpdmUgaW5zdGFuY2VzIHRvIGF3YXJlLgorICAgICAgICBhZHQwID0gZHQwLmFzdGltZXpvbmUoKQorICAgICAgICBhZHQxID0gZHQxLmFzdGltZXpvbmUoKQorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGZpcnN0IGluc3RhbmNlIGluIERTVCB6b25lIGFuZCB0aGUgc2Vjb25kIGluIFNURAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDAudHpuYW1lKCksICdFRFQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDEudHpuYW1lKCksICdFU1QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDAgKyBIT1VSLCBhZHQxKQorICAgICAgICAjIEF3YXJlIGluc3RhbmNlcyB3aXRoIGZpeGVkIG9mZnNldCB0emluZm8ncyBhbHdheXMgaGF2ZSBmb2xkPTAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MS5mb2xkLCAwKQorCisKKyAgICBkZWYgdGVzdF9waWNrbGVfZm9sZChzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoZm9sZD0xKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgZm9yIHBpY2tsZXIsIHVucGlja2xlciwgcHJvdG8gaW4gcGlja2xlX2Nob2ljZXM6CisgICAgICAgICAgICBmb3IgeCBpbiBbdCwgZHRdOgorICAgICAgICAgICAgICAgIHMgPSBwaWNrbGVyLmR1bXBzKHgsIHByb3RvKQorICAgICAgICAgICAgICAgIHkgPSB1bnBpY2tsZXIubG9hZHMocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMCBpZiBwcm90byA8IDQgZWxzZSB4LmZvbGQpLCB5LmZvbGQpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICB0ID0gdGltZShmb2xkPTEpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIodCksICdkYXRldGltZS50aW1lKDAsIDAsIGZvbGQ9MSknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRldGltZS5kYXRldGltZSgxLCAxLCAxLCAwLCAwLCBmb2xkPTEpJykKKworICAgIGRlZiB0ZXN0X2RzdChzZWxmKToKKyAgICAgICAgIyBMZXQncyBmaXJzdCBlc3RhYmxpc2ggdGhhdCB0aGluZ3Mgd29yayBpbiByZWd1bGFyIHRpbWVzLgorICAgICAgICBkdF9zdW1tZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIHR6aW5mbz1FYXN0ZXJuMikgLSB0aW1lZGVsdGEucmVzb2x1dGlvbgorICAgICAgICBkdF93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDIsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF9zdW1tZXIuZHN0KCksIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLmRzdCgpLCBaRVJPKQorICAgICAgICAjIFRoZSBkaXNhbWJpZ3VhdGlvbiBmbGFnIGlzIGlnbm9yZWQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF9zdW1tZXIucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5yZXBsYWNlKGZvbGQ9MSkuZHN0KCksIFpFUk8pCisKKyAgICAgICAgIyBQaWNrIGxvY2FsIHRpbWUgaW4gdGhlIGZvbGQuCisgICAgICAgIGZvciBtaW51dGUgaW4gWzAsIDMwLCA1OV06CisgICAgICAgICAgICBkdCA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgbWludXRlLCB0emluZm89RWFzdGVybjIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0wICh0aGUgZGVmYXVsdCkgaXQgaXMgaW4gRFNULgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5kc3QoKSwgSE9VUikKKyAgICAgICAgICAgICMgV2l0aCBmb2xkPTEgaXQgaXMgaW4gU1RELgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZHN0KCksIFpFUk8pCisKKyAgICAgICAgIyBQaWNrIGxvY2FsIHRpbWUgaW4gdGhlIGdhcC4KKyAgICAgICAgZm9yIG1pbnV0ZSBpbiBbMCwgMzAsIDU5XToKKyAgICAgICAgICAgIGR0ID0gZGF0ZXRpbWUoMjAwMiwgNCwgNywgMiwgbWludXRlLCB0emluZm89RWFzdGVybjIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0wICh0aGUgZGVmYXVsdCkgaXQgaXMgaW4gU1RELgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5kc3QoKSwgWkVSTykKKyAgICAgICAgICAgICMgV2l0aCBmb2xkPTEgaXQgaXMgaW4gRFNULgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZHN0KCksIEhPVVIpCisKKworICAgIGRlZiB0ZXN0X3V0Y29mZnNldChzZWxmKToKKyAgICAgICAgIyBMZXQncyBmaXJzdCBlc3RhYmxpc2ggdGhhdCB0aGluZ3Mgd29yayBpbiByZWd1bGFyIHRpbWVzLgorICAgICAgICBkdF9zdW1tZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIHR6aW5mbz1FYXN0ZXJuMikgLSB0aW1lZGVsdGEucmVzb2x1dGlvbgorICAgICAgICBkdF93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDIsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF9zdW1tZXIudXRjb2Zmc2V0KCksIC00ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIudXRjb2Zmc2V0KCksIC01ICogSE9VUikKKyAgICAgICAgIyBUaGUgZGlzYW1iaWd1YXRpb24gZmxhZyBpcyBpZ25vcmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKSwgLTQgKiBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCksIC01ICogSE9VUikKKworICAgIGRlZiB0ZXN0X2Zyb211dGMoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgdV9zdW1tZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDYsIHR6aW5mbz1FYXN0ZXJuMikgLSB0aW1lZGVsdGEucmVzb2x1dGlvbgorICAgICAgICB1X3dpbnRlciA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNywgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X3N1bW1lciA9IEVhc3Rlcm4yLmZyb211dGModV9zdW1tZXIpCisgICAgICAgIHRfd2ludGVyID0gRWFzdGVybjIuZnJvbXV0Yyh1X3dpbnRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3N1bW1lciwgdV9zdW1tZXIgLSA0ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3dpbnRlciwgdV93aW50ZXIgLSA1ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3N1bW1lci5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRfd2ludGVyLmZvbGQsIDApCisKKyAgICAgICAgIyBXaGF0IGhhcHBlbnMgaW4gdGhlIGZhbGwtYmFjayBmb2xkPworICAgICAgICB1ID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA1LCAzMCwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0MCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgdSArPSBIT1VSCisgICAgICAgIHQxID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLCB0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLmZvbGQsIDEpCisgICAgICAgICMgVGhlIHRyaWNreSBwYXJ0IGlzIHdoZW4gdSBpcyBpbiB0aGUgbG9jYWwgZm9sZDoKKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICgyNiwgMjEpKQorICAgICAgICAjIC4uIG9yIGdldHMgaW50byB0aGUgbG9jYWwgZm9sZCBhZnRlciBhIHN0YW5kYXJkIHRpbWUgYWRqdXN0bWVudAorICAgICAgICB1ID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA2LCAzMCwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0ID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh0LmRheSwgdC5ob3VyKSwgKDI3LCAxKSkKKworICAgICAgICAjIFdoYXQgaGFwcGVucyBpbiB0aGUgc3ByaW5nLWZvcndhcmQgZ2FwPworICAgICAgICB1ID0gZGF0ZXRpbWUoMjAwMiwgNCwgNywgMiwgMCwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0ID0gRWFzdGVybjIuZnJvbXV0Yyh1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh0LmRheSwgdC5ob3VyKSwgKDYsIDIxKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2NvbXBhcmVfcmVndWxhcihzZWxmKToKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDEsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSkKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDYsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCB0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2NvbXBhcmVfZm9sZChzZWxmKToKKyAgICAgICAgdF9mb2xkID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2ZvbGRfdXRjID0gdF9mb2xkLmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRfZm9sZCwgdF9mb2xkX3V0YykKKworICAgIGRlZiB0ZXN0X21peGVkX2NvbXBhcmVfZ2FwKHNlbGYpOgorICAgICAgICB0X2dhcCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHRfZ2FwX3V0YyA9IHRfZ2FwLmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRfZ2FwLCB0X2dhcF91dGMpCisKKyAgICBkZWYgdGVzdF9oYXNoX2F3YXJlKHNlbGYpOgorICAgICAgICB0ID0gZGF0ZXRpbWUoMjAwMCwgMSwgMSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godCksIGhhc2godC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICB0X2ZvbGQgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHRfZ2FwID0gZGF0ZXRpbWUoMjAwMiwgNCwgNywgMiwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHRfZm9sZCksIGhhc2godF9mb2xkLnJlcGxhY2UoZm9sZD0xKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0X2dhcCksIGhhc2godF9nYXAucmVwbGFjZShmb2xkPTEpKSkKKworU0VDID0gdGltZWRlbHRhKDAsIDEpCisKK2RlZiBwYWlycyhpdGVyYWJsZSk6CisgICAgYSwgYiA9IGl0ZXJ0b29scy50ZWUoaXRlcmFibGUpCisgICAgbmV4dChiLCBOb25lKQorICAgIHJldHVybiB6aXAoYSwgYikKKworY2xhc3MgWm9uZUluZm8odHppbmZvKToKKyAgICB6b25lcm9vdCA9ICcvdXNyL3NoYXJlL3pvbmVpbmZvJworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1dCwgdGkpOgorICAgICAgICAiIiIKKworICAgICAgICA6cGFyYW0gdXQ6IGFycmF5CisgICAgICAgICAgICBBcnJheSBvZiB0cmFuc2l0aW9uIHBvaW50IHRpbWVzdGFtcHMKKyAgICAgICAgOnBhcmFtIHRpOiBsaXN0CisgICAgICAgICAgICBBIGxpc3Qgb2YgKG9mZnNldCwgaXNkc3QsIGFiYnIpIHR1cGxlcworICAgICAgICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnV0ID0gdXQKKyAgICAgICAgc2VsZi50aSA9IHRpCisgICAgICAgIHNlbGYubHQgPSBzZWxmLmludmVydCh1dCwgdGkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGludmVydCh1dCwgdGkpOgorICAgICAgICBsdCA9IChhcnJheSgncScsIHV0KSwgYXJyYXkoJ3EnLCB1dCkpCisgICAgICAgIGlmIHV0OgorICAgICAgICAgICAgb2Zmc2V0ID0gdGlbMF1bMF0gLy8gU0VDCisgICAgICAgICAgICBsdFswXVswXSArPSBvZmZzZXQKKyAgICAgICAgICAgIGx0WzFdWzBdICs9IG9mZnNldAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgbGVuKHV0KSk6CisgICAgICAgICAgICAgICAgbHRbMF1baV0gKz0gdGlbaS0xXVswXSAvLyBTRUMKKyAgICAgICAgICAgICAgICBsdFsxXVtpXSArPSB0aVtpXVswXSAvLyBTRUMKKyAgICAgICAgcmV0dXJuIGx0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZnJvbWZpbGUoY2xzLCBmaWxlb2JqKToKKyAgICAgICAgaWYgZmlsZW9iai5yZWFkKDQpLmRlY29kZSgpICE9ICJUWmlmIjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vdCBhIHpvbmVpbmZvIGZpbGUiKQorICAgICAgICBmaWxlb2JqLnNlZWsoMzIpCisgICAgICAgIGNvdW50cyA9IGFycmF5KCdpJykKKyAgICAgICAgY291bnRzLmZyb21maWxlKGZpbGVvYmosIDMpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgIT0gJ2JpZyc6CisgICAgICAgICAgICBjb3VudHMuYnl0ZXN3YXAoKQorCisgICAgICAgIHV0ID0gYXJyYXkoJ2knKQorICAgICAgICB1dC5mcm9tZmlsZShmaWxlb2JqLCBjb3VudHNbMF0pCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgIT0gJ2JpZyc6CisgICAgICAgICAgICB1dC5ieXRlc3dhcCgpCisKKyAgICAgICAgdHlwZV9pbmRpY2VzID0gYXJyYXkoJ0InKQorICAgICAgICB0eXBlX2luZGljZXMuZnJvbWZpbGUoZmlsZW9iaiwgY291bnRzWzBdKQorCisgICAgICAgIHR0aXMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudHNbMV0pOgorICAgICAgICAgICAgdHRpcy5hcHBlbmQoc3RydWN0LnVucGFjaygiPmxiYiIsIGZpbGVvYmoucmVhZCg2KSkpCisKKyAgICAgICAgYWJicnMgPSBmaWxlb2JqLnJlYWQoY291bnRzWzJdKQorCisgICAgICAgICMgQ29udmVydCB0dGlzCisgICAgICAgIGZvciBpLCAoZ210b2ZmLCBpc2RzdCwgYWJicmluZCkgaW4gZW51bWVyYXRlKHR0aXMpOgorICAgICAgICAgICAgYWJiciA9IGFiYnJzW2FiYnJpbmQ6YWJicnMuZmluZCgwLCBhYmJyaW5kKV0uZGVjb2RlKCkKKyAgICAgICAgICAgIHR0aXNbaV0gPSAodGltZWRlbHRhKDAsIGdtdG9mZiksIGlzZHN0LCBhYmJyKQorCisgICAgICAgIHRpID0gW05vbmVdICogbGVuKHV0KQorICAgICAgICBmb3IgaSwgaWR4IGluIGVudW1lcmF0ZSh0eXBlX2luZGljZXMpOgorICAgICAgICAgICAgdGlbaV0gPSB0dGlzW2lkeF0KKworICAgICAgICBzZWxmID0gY2xzKHV0LCB0aSkKKworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21uYW1lKGNscywgbmFtZSk6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnpvbmVyb290LCBuYW1lKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHJldHVybiBjbHMuZnJvbWZpbGUoZikKKworICAgIEVQT0NIT1JESU5BTCA9IGRhdGUoMTk3MCwgMSwgMSkudG9vcmRpbmFsKCkKKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgIiIiZGF0ZXRpbWUgaW4gVVRDIC0+IGRhdGV0aW1lIGluIGxvY2FsIHRpbWUuIiIiCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZHQsIGRhdGV0aW1lKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZnJvbXV0YygpIHJlcXVpcmVzIGEgZGF0ZXRpbWUgYXJndW1lbnQiKQorICAgICAgICBpZiBkdC50emluZm8gaXMgbm90IHNlbGY6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkdC50emluZm8gaXMgbm90IHNlbGYiKQorCisgICAgICAgIHRpbWVzdGFtcCA9ICgoZHQudG9vcmRpbmFsKCkgLSBzZWxmLkVQT0NIT1JESU5BTCkgKiA4NjQwMAorICAgICAgICAgICAgICAgICAgICAgKyBkdC5ob3VyICogMzYwMAorICAgICAgICAgICAgICAgICAgICAgKyBkdC5taW51dGUgKiA2MAorICAgICAgICAgICAgICAgICAgICAgKyBkdC5zZWNvbmQpCisKKyAgICAgICAgaWYgdGltZXN0YW1wIDwgc2VsZi51dFsxXToKKyAgICAgICAgICAgIHR0aSA9IHNlbGYudGlbMF0KKyAgICAgICAgICAgIGZvbGQgPSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZHggPSBiaXNlY3QuYmlzZWN0X3JpZ2h0KHNlbGYudXQsIHRpbWVzdGFtcCkKKyAgICAgICAgICAgIGFzc2VydCBzZWxmLnV0W2lkeC0xXSA8PSB0aW1lc3RhbXAKKyAgICAgICAgICAgIGFzc2VydCBpZHggPT0gbGVuKHNlbGYudXQpIG9yIHRpbWVzdGFtcCA8IHNlbGYudXRbaWR4XQorICAgICAgICAgICAgdHRpX3ByZXYsIHR0aSA9IHNlbGYudGlbaWR4LTI6aWR4XQorICAgICAgICAgICAgIyBEZXRlY3QgZm9sZAorICAgICAgICAgICAgc2hpZnQgPSB0dGlfcHJldlswXSAtIHR0aVswXQorICAgICAgICAgICAgZm9sZCA9IChzaGlmdCA+IHRpbWVkZWx0YSgwLCB0aW1lc3RhbXAgLSBzZWxmLnV0W2lkeC0xXSkpCisgICAgICAgIGR0ICs9IHR0aVswXQorICAgICAgICBpZiBmb2xkOgorICAgICAgICAgICAgcmV0dXJuIGR0LnJlcGxhY2UoZm9sZD0xKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGR0CisKKyAgICBkZWYgX2ZpbmRfdGkoc2VsZiwgZHQsIGkpOgorICAgICAgICB0aW1lc3RhbXAgPSAoKGR0LnRvb3JkaW5hbCgpIC0gc2VsZi5FUE9DSE9SRElOQUwpICogODY0MDAKKyAgICAgICAgICAgICArIGR0LmhvdXIgKiAzNjAwCisgICAgICAgICAgICAgKyBkdC5taW51dGUgKiA2MAorICAgICAgICAgICAgICsgZHQuc2Vjb25kKQorICAgICAgICBsdCA9IHNlbGYubHRbZHQuZm9sZF0KKyAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChsdCwgdGltZXN0YW1wKQorCisgICAgICAgIHJldHVybiBzZWxmLnRpW21heCgwLCBpZHggLSAxKV1baV0KKworICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmluZF90aShkdCwgMCkKKworICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgorICAgICAgICBpc2RzdCA9IHNlbGYuX2ZpbmRfdGkoZHQsIDEpCisgICAgICAgICMgWFhYOiBXZSBjYW5ub3QgYWNjdXJhdGVseSBkZXRlcm1pbmUgdGhlICJzYXZlIiB2YWx1ZSwKKyAgICAgICAgIyBzbyBsZXQncyByZXR1cm4gMWggd2hlbmV2ZXIgRFNUIGlzIGluIGVmZmVjdC4gIFNpbmNlCisgICAgICAgICMgd2UgZG9uJ3QgdXNlIGRzdCgpIGluIGZyb211dGMoKSwgaXQgaXMgdW5saWtlbHkgdGhhdAorICAgICAgICAjIGl0IHdpbGwgYmUgbmVlZGVkIGZvciBhbnl0aGluZyBtb3JlIHRoYW4gYm9vbChkc3QoKSkuCisgICAgICAgIHJldHVybiBaRVJPIGlmIGlzZHN0IGVsc2UgSE9VUgorCisgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9maW5kX3RpKGR0LCAyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHpvbmVuYW1lcyhjbHMsIHpvbmVkaXI9Tm9uZSk6CisgICAgICAgIGlmIHpvbmVkaXIgaXMgTm9uZToKKyAgICAgICAgICAgIHpvbmVkaXIgPSBjbHMuem9uZXJvb3QKKyAgICAgICAgem9uZV90YWIgPSBvcy5wYXRoLmpvaW4oem9uZWRpciwgJ3pvbmUudGFiJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IG9wZW4oem9uZV90YWIpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHdpdGggZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIGxpbmUgYW5kIG5vdCBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZS5zcGxpdCgpWzJdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc3RhdHMoY2xzLCBzdGFydF95ZWFyPTEpOgorICAgICAgICBjb3VudCA9IGdhcF9jb3VudCA9IGZvbGRfY291bnQgPSB6ZXJvc19jb3VudCA9IDAKKyAgICAgICAgbWluX2dhcCA9IG1pbl9mb2xkID0gdGltZWRlbHRhLm1heAorICAgICAgICBtYXhfZ2FwID0gbWF4X2ZvbGQgPSBaRVJPCisgICAgICAgIG1pbl9nYXBfZGF0ZXRpbWUgPSBtYXhfZ2FwX2RhdGV0aW1lID0gZGF0ZXRpbWUubWluCisgICAgICAgIG1pbl9nYXBfem9uZSA9IG1heF9nYXBfem9uZSA9IE5vbmUKKyAgICAgICAgbWluX2ZvbGRfZGF0ZXRpbWUgPSBtYXhfZm9sZF9kYXRldGltZSA9IGRhdGV0aW1lLm1pbgorICAgICAgICBtaW5fZm9sZF96b25lID0gbWF4X2ZvbGRfem9uZSA9IE5vbmUKKyAgICAgICAgc3RhdHNfc2luY2UgPSBkYXRldGltZShzdGFydF95ZWFyLCAxLCAxKSAjIFN0YXJ0aW5nIGZyb20gMTk3MCBlbGltaW5hdGVzIGEgbG90IG9mIG5vaXNlCisgICAgICAgIGZvciB6b25lbmFtZSBpbiBjbHMuem9uZW5hbWVzKCk6CisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICB0eiA9IGNscy5mcm9tbmFtZSh6b25lbmFtZSkKKyAgICAgICAgICAgIGZvciBkdCwgc2hpZnQgaW4gdHoudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgICAgICBpZiBkdCA8IHN0YXRzX3NpbmNlOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHNoaWZ0ID4gWkVSTzoKKyAgICAgICAgICAgICAgICAgICAgZ2FwX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0LCBkdCkgPiAobWF4X2dhcCwgbWF4X2dhcF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwID0gc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9nYXBfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0LCBkYXRldGltZS5tYXggLSBkdCkgPCAobWluX2dhcCwgZGF0ZXRpbWUubWF4IC0gbWluX2dhcF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwID0gc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9nYXBfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICBlbGlmIHNoaWZ0IDwgWkVSTzoKKyAgICAgICAgICAgICAgICAgICAgZm9sZF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gLXNoaWZ0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZHQpID4gKG1heF9mb2xkLCBtYXhfZm9sZF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heF9mb2xkX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0LCBkYXRldGltZS5tYXggLSBkdCkgPCAobWluX2ZvbGQsIGRhdGV0aW1lLm1heCAtIG1pbl9mb2xkX2RhdGV0aW1lKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkID0gc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2ZvbGRfZGF0ZXRpbWUgPSBkdAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHplcm9zX2NvdW50ICs9IDEKKyAgICAgICAgdHJhbnNfY291bnRzID0gKGdhcF9jb3VudCwgZm9sZF9jb3VudCwgemVyb3NfY291bnQpCisgICAgICAgIHByaW50KCJOdW1iZXIgb2Ygem9uZXM6ICAgICAgICU1ZCIgJSBjb3VudCkKKyAgICAgICAgcHJpbnQoIk51bWJlciBvZiB0cmFuc2l0aW9uczogJTVkID0gJWQgKGdhcHMpICsgJWQgKGZvbGRzKSArICVkICh6ZXJvcykiICUKKyAgICAgICAgICAgICAgKChzdW0odHJhbnNfY291bnRzKSwpICsgdHJhbnNfY291bnRzKSkKKyAgICAgICAgcHJpbnQoIk1pbiBnYXA6ICAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWluX2dhcCwgbWluX2dhcF9kYXRldGltZSwgbWluX2dhcF96b25lKSkKKyAgICAgICAgcHJpbnQoIk1heCBnYXA6ICAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWF4X2dhcCwgbWF4X2dhcF9kYXRldGltZSwgbWF4X2dhcF96b25lKSkKKyAgICAgICAgcHJpbnQoIk1pbiBmb2xkOiAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWluX2ZvbGQsIG1pbl9mb2xkX2RhdGV0aW1lLCBtaW5fZm9sZF96b25lKSkKKyAgICAgICAgcHJpbnQoIk1heCBmb2xkOiAgICAgICAgJTE2cyBhdCAlcyBpbiAlcyIgJSAobWF4X2ZvbGQsIG1heF9mb2xkX2RhdGV0aW1lLCBtYXhfZm9sZF96b25lKSkKKworCisgICAgZGVmIHRyYW5zaXRpb25zKHNlbGYpOgorICAgICAgICBmb3IgKF8sIHByZXZfdGkpLCAodCwgdGkpIGluIHBhaXJzKHppcChzZWxmLnV0LCBzZWxmLnRpKSk6CisgICAgICAgICAgICBzaGlmdCA9IHRpWzBdIC0gcHJldl90aVswXQorICAgICAgICAgICAgeWllbGQgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0KSwgc2hpZnQKKworICAgIGRlZiBub25kc3RfZm9sZHMoc2VsZik6CisgICAgICAgICIiIkZpbmQgYWxsIGZvbGRzIHdpdGggdGhlIHNhbWUgdmFsdWUgb2YgaXNkc3Qgb24gYm90aCBzaWRlcyBvZiB0aGUgdHJhbnNpdGlvbi4iIiIKKyAgICAgICAgZm9yIChfLCBwcmV2X3RpKSwgKHQsIHRpKSBpbiBwYWlycyh6aXAoc2VsZi51dCwgc2VsZi50aSkpOgorICAgICAgICAgICAgc2hpZnQgPSB0aVswXSAtIHByZXZfdGlbMF0KKyAgICAgICAgICAgIGlmIHNoaWZ0IDwgWkVSTyBhbmQgdGlbMV0gPT0gcHJldl90aVsxXToKKyAgICAgICAgICAgICAgICB5aWVsZCBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHQpLCAtc2hpZnQsIHByZXZfdGlbMl0sIHRpWzJdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcHJpbnRfYWxsX25vbmRzdF9mb2xkcyhjbHMsIHNhbWVfYWJicj1GYWxzZSwgc3RhcnRfeWVhcj0xKToKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIGZvciB6b25lbmFtZSBpbiBjbHMuem9uZW5hbWVzKCk6CisgICAgICAgICAgICB0eiA9IGNscy5mcm9tbmFtZSh6b25lbmFtZSkKKyAgICAgICAgICAgIGZvciBkdCwgc2hpZnQsIHByZXZfYWJiciwgYWJiciBpbiB0ei5ub25kc3RfZm9sZHMoKToKKyAgICAgICAgICAgICAgICBpZiBkdC55ZWFyIDwgc3RhcnRfeWVhciBvciBzYW1lX2FiYnIgYW5kIHByZXZfYWJiciAhPSBhYmJyOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICBwcmludCgiJTNkKSAlLTMwcyAlcyAlMTBzICU1cyAtPiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgIChjb3VudCwgem9uZW5hbWUsIGR0LCBzaGlmdCwgcHJldl9hYmJyLCBhYmJyKSkKKworICAgIGRlZiBmb2xkcyhzZWxmKToKKyAgICAgICAgZm9yIHQsIHNoaWZ0IGluIHNlbGYudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgIGlmIHNoaWZ0IDwgWkVSTzoKKyAgICAgICAgICAgICAgICB5aWVsZCB0LCAtc2hpZnQKKworICAgIGRlZiBnYXBzKHNlbGYpOgorICAgICAgICBmb3IgdCwgc2hpZnQgaW4gc2VsZi50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgaWYgc2hpZnQgPiBaRVJPOgorICAgICAgICAgICAgICAgIHlpZWxkIHQsIHNoaWZ0CisKKyAgICBkZWYgemVyb3Moc2VsZik6CisgICAgICAgIGZvciB0LCBzaGlmdCBpbiBzZWxmLnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICBpZiBub3Qgc2hpZnQ6CisgICAgICAgICAgICAgICAgeWllbGQgdAorCisKK2NsYXNzIFpvbmVJbmZvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgem9uZW5hbWUgPSAnQW1lcmljYS9OZXdfWW9yaycKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTa2lwcGluZyB6b25laW5mbyB0ZXN0cyBvbiBXaW5kb3dzIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi50eiA9IFpvbmVJbmZvLmZyb21uYW1lKHNlbGYuem9uZW5hbWUpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTa2lwcGluZyAlczogJXMiICUgKHNlbGYuem9uZW5hbWUsIGVycikpCisKKyAgICBkZWYgYXNzZXJ0RXF1aXZEYXRldGltZXMoc2VsZiwgYSwgYik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGEucmVwbGFjZSh0emluZm89Tm9uZSksIGEuZm9sZCwgaWQoYS50emluZm8pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYi5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgYi5mb2xkLCBpZChiLnR6aW5mbykpKQorCisgICAgZGVmIHRlc3RfZm9sZHMoc2VsZik6CisgICAgICAgIHR6ID0gc2VsZi50egorICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LmZvbGRzKCk6CisgICAgICAgICAgICBmb3IgeCBpbiBbMCAqIHNoaWZ0LCAwLjUgKiBzaGlmdCwgc2hpZnQgLSB0aW1lZGVsdGEucmVzb2x1dGlvbl06CisgICAgICAgICAgICAgICAgdWR0ID0gZHQgKyB4CisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQucmVwbGFjZSh0emluZm89dHopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDEpCisgICAgICAgICAgICAgICAgYWR0ID0gdWR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykuYXN0aW1lem9uZSh0eikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWl2RGF0ZXRpbWVzKGFkdCwgbGR0KQorICAgICAgICAgICAgICAgIHV0Y29mZnNldCA9IGxkdC51dGNvZmZzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnJlcGxhY2UodHppbmZvPU5vbmUpLCB1ZHQgKyB1dGNvZmZzZXQpCisgICAgICAgICAgICAgICAgIyBSb3VuZCB0cmlwCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykpCisKKworICAgICAgICAgICAgZm9yIHggaW4gWy10aW1lZGVsdGEucmVzb2x1dGlvbiwgc2hpZnRdOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIHVkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10eikKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorCisgICAgZGVmIHRlc3RfZ2FwcyhzZWxmKToKKyAgICAgICAgdHogPSBzZWxmLnR6CisgICAgICAgIGZvciBkdCwgc2hpZnQgaW4gdHouZ2FwcygpOgorICAgICAgICAgICAgZm9yIHggaW4gWzAgKiBzaGlmdCwgMC41ICogc2hpZnQsIHNoaWZ0IC0gdGltZWRlbHRhLnJlc29sdXRpb25dOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIHVkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10eikKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorICAgICAgICAgICAgICAgIGFkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpLmFzdGltZXpvbmUodHopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhhZHQsIGxkdCkKKyAgICAgICAgICAgICAgICB1dGNvZmZzZXQgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgdWR0LnJlcGxhY2UodHppbmZvPU5vbmUpICsgdXRjb2Zmc2V0KQorICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgbG9jYWwgdGltZSBpbnNpZGUgdGhlIGdhcAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGMoZHQucmVwbGFjZSh0emluZm89dHopKSAtIHNoaWZ0ICsgeAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZHQucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZHQucmVwbGFjZShmb2xkPTApLnV0Y29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXQgJXMuIiAlIGxkdCkKKworICAgICAgICAgICAgZm9yIHggaW4gWy10aW1lZGVsdGEucmVzb2x1dGlvbiwgc2hpZnRdOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0LnJlcGxhY2UodHppbmZvPXR6KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAwKQorCisgICAgZGVmIHRlc3Rfc3lzdGVtX3RyYW5zaXRpb25zKHNlbGYpOgorICAgICAgICBpZiAoJ1JpeWFkaDgnIGluIHNlbGYuem9uZW5hbWUgb3IKKyAgICAgICAgICAgICMgRnJvbSB0emRhdGEgTkVXUyBmaWxlOgorICAgICAgICAgICAgIyBUaGUgZmlsZXMgc29sYXI4Nywgc29sYXI4OCwgYW5kIHNvbGFyODkgYXJlIG5vIGxvbmdlciBkaXN0cmlidXRlZC4KKyAgICAgICAgICAgICMgVGhleSB3ZXJlIGEgbmVnYXRpdmUgZXhwZXJpbWVudCAtIHRoYXQgaXMsIGEgZGVtb25zdHJhdGlvbiB0aGF0CisgICAgICAgICAgICAjIHR6IGRhdGEgY2FuIHJlcHJlc2VudCBzb2xhciB0aW1lIG9ubHkgd2l0aCBzb21lIGRpZmZpY3VsdHkgYW5kIGVycm9yLgorICAgICAgICAgICAgIyBUaGVpciBwcmVzZW5jZSBpbiB0aGUgZGlzdHJpYnV0aW9uIGNhdXNlZCBjb25mdXNpb24sIGFzIFJpeWFkaAorICAgICAgICAgICAgIyBjaXZpbCB0aW1lIHdhcyBnZW5lcmFsbHkgbm90IHNvbGFyIHRpbWUgaW4gdGhvc2UgeWVhcnMuCisgICAgICAgICAgICAgICAgc2VsZi56b25lbmFtZS5zdGFydHN3aXRoKCdyaWdodC8nKSk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTa2lwcGluZyAlcyIgJSBzZWxmLnpvbmVuYW1lKQorICAgICAgICB0eiA9IHNlbGYudHoKKyAgICAgICAgVFogPSBvcy5lbnZpcm9uLmdldCgnVFonKQorICAgICAgICBvcy5lbnZpcm9uWydUWiddID0gc2VsZi56b25lbmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfdGltZS50enNldCgpCisgICAgICAgICAgICBmb3IgdWR0LCBzaGlmdCBpbiB0ei50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgICAgIGlmIHVkdC55ZWFyID49IDIwMzc6CisgICAgICAgICAgICAgICAgICAgICMgU3lzdGVtIHN1cHBvcnQgZm9yIHRpbWVzIGFyb3VuZCB0aGUgZW5kIG9mIDMyLWJpdCB0aW1lX3QKKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgbGF0ZXIgaXMgZmxha3kgb24gbWFueSBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHMwID0gKHVkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEpKSAvLyBTRUMKKyAgICAgICAgICAgICAgICBzcyA9IHNoaWZ0IC8vIFNFQyAgICMgc2hpZnQgc2Vjb25kcworICAgICAgICAgICAgICAgIGZvciB4IGluIFstNDAgKiAzNjAwLCAtMjAqMzYwMCwgLTEsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNzIC0gMSwgc3MgKyAyMCAqIDM2MDAsIHNzICsgNDAgKiAzNjAwXToKKyAgICAgICAgICAgICAgICAgICAgcyA9IHMwICsgeAorICAgICAgICAgICAgICAgICAgICBzZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMpCisgICAgICAgICAgICAgICAgICAgIHR6ZHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMsIHR6KS5yZXBsYWNlKHR6aW5mbz1Ob25lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWl2RGF0ZXRpbWVzKHNkdCwgdHpkdCkKKyAgICAgICAgICAgICAgICAgICAgczEgPSBzZHQudGltZXN0YW1wKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzMSkKKyAgICAgICAgICAgICAgICBpZiBzcyA+IDA6ICAjIGdhcAorICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBsb2NhbCB0aW1lIGluc2lkZSB0aGUgZ2FwCisgICAgICAgICAgICAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzMCkgLSBzaGlmdCAvIDIKKyAgICAgICAgICAgICAgICAgICAgdHMwID0gZHQudGltZXN0YW1wKCkKKyAgICAgICAgICAgICAgICAgICAgdHMxID0gZHQucmVwbGFjZShmb2xkPTEpLnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHMwLCBzMCArIHNzIC8gMikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0czEsIHMwIC0gc3MgLyAyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgVFogaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWwgb3MuZW52aXJvblsnVFonXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydUWiddID0gVFoKKyAgICAgICAgICAgIF90aW1lLnR6c2V0KCkKKworCitjbGFzcyBab25lSW5mb0NvbXBsZXRlVGVzdCh1bml0dGVzdC5UZXN0U3VpdGUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgdGVzdHMgPSBbXQorICAgICAgICBpZiBpc19yZXNvdXJjZV9lbmFibGVkKCd0emRhdGEnKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluIFpvbmVJbmZvLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgICAgIFRlc3QgPSB0eXBlKCdab25lSW5mb1Rlc3RbJXNdJyAlIG5hbWUsIChab25lSW5mb1Rlc3QsKSwge30pCisgICAgICAgICAgICAgICAgVGVzdC56b25lbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBmb3IgbWV0aG9kIGluIGRpcihUZXN0KToKKyAgICAgICAgICAgICAgICAgICAgaWYgbWV0aG9kLnN0YXJ0c3dpdGgoJ3Rlc3RfJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdChtZXRob2QpKQorICAgICAgICBzdXBlcigpLl9faW5pdF9fKHRlc3RzKQorCisjIElyYW4gaGFkIGEgc3ViLW1pbnV0ZSBVVEMgb2Zmc2V0IGJlZm9yZSAxOTQ2LgorY2xhc3MgSXJhblRlc3QoWm9uZUluZm9UZXN0KToKKyAgICB6b25lbmFtZSA9ICdBc2lhL1RlaHJhbicKKworZGVmIGxvYWRfdGVzdHMobG9hZGVyLCBzdGFuZGFyZF90ZXN0cywgcGF0dGVybik6CisgICAgc3RhbmRhcmRfdGVzdHMuYWRkVGVzdChab25lSW5mb0NvbXBsZXRlVGVzdCgpKQorICAgIHJldHVybiBzdGFuZGFyZF90ZXN0cworCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMmQ0ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZApAQCAtMCwwICsxLDUgQEAKK0JFR0lOCit7CisgICAgcHJpbnRmKCJwcm9iZTogc3VjY2Vzc1xuIik7CisgICAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvYXNzZXJ0X3VzYWJsZS5zdHAgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZTdlNjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwCkBAIC0wLDAgKzEsNSBAQAorcHJvYmUgYmVnaW4KK3sKKyAgcHJpbnRsbigicHJvYmU6IHN1Y2Nlc3MiKQorICBleGl0ICgpCit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MGU5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZApAQCAtMCwwICsxLDMxIEBACitzZWxmIGludCBpbmRlbnQ7CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworeworICAgIHNlbGYtPnRyYWNlID0gMTsKK30KKworcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5Cisvc2VsZi0+dHJhY2UvCit7CisgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsgCisgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICBzZWxmLT5pbmRlbnQrKzsKK30KKworcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgorL3NlbGYtPnRyYWNlLworeworICAgIHNlbGYtPmluZGVudC0tOworICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7IAorICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDA7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5kLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ODQ5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZApAQCAtMCwwICsxLDE4IEBACisgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyBmdW5jdGlvbi1lbnRyeTogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxMworZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4CitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQorZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTlmM2FlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnB5CkBAIC0wLDAgKzEsMzAgQEAKK2RlZiBmdW5jdGlvbl8xKCk6CisgICAgZnVuY3Rpb25fMygxLCAyKQorCisjIENoZWNrIHN0YWNrdHJhY2UKK2RlZiBmdW5jdGlvbl8yKCk6CisgICAgZnVuY3Rpb25fMSgpCisKKyMgQ0FMTF9GVU5DVElPTl9WQVIKK2RlZiBmdW5jdGlvbl8zKGR1bW15LCBkdW1teTIpOgorICAgIHBhc3MKKworIyBDQUxMX0ZVTkNUSU9OX0tXCitkZWYgZnVuY3Rpb25fNCgqKmR1bW15KToKKyAgICByZXR1cm4gMQorICAgIHJldHVybiAyICAjIHVucmVhY2hhYmxlCisKKyMgQ0FMTF9GVU5DVElPTl9WQVJfS1cKK2RlZiBmdW5jdGlvbl81KGR1bW15LCBkdW1teTIsICoqZHVtbXkzKToKKyAgICBpZiBGYWxzZToKKyAgICAgICAgcmV0dXJuIDcKKyAgICByZXR1cm4gOAorCitkZWYgc3RhcnQoKToKKyAgICBmdW5jdGlvbl8xKCkKKyAgICBmdW5jdGlvbl8yKCkKKyAgICBmdW5jdGlvbl8zKDEsIDIpCisgICAgZnVuY3Rpb25fNCh0ZXN0PTQyKQorICAgIGZ1bmN0aW9uXzUoKigxLCAyKSwgKip7InRlc3QiOiA0Mn0pCisKK3N0YXJ0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MDgyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwCkBAIC0wLDAgKzEsNDEgQEAKK2dsb2JhbCB0cmFjaW5nCisKK2Z1bmN0aW9uIGJhc2VuYW1lOnN0cmluZyhwYXRoOnN0cmluZykKK3sKKyAgICBsYXN0X3Rva2VuID0gdG9rZW4gPSB0b2tlbml6ZShwYXRoLCAiLyIpOworICAgIHdoaWxlICh0b2tlbiAhPSAiIikgeworICAgICAgICBsYXN0X3Rva2VuID0gdG9rZW47CisgICAgICAgIHRva2VuID0gdG9rZW5pemUoIiIsICIvIik7CisgICAgfQorICAgIHJldHVybiBsYXN0X3Rva2VuOworfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpCit7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisKKyAgICBpZiAoZnVuY25hbWUgPT0gInN0YXJ0IikgeworICAgICAgICB0cmFjaW5nID0gMTsKKyAgICB9Cit9CisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX2VudHJ5IiksIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCit7CisgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgbGluZW5vID0gJGFyZzM7CisKKyAgICBpZiAodHJhY2luZykgeworICAgICAgICBwcmludGYoIiVkXHQlczolczolczolZFxuIiwgZ2V0dGltZW9mZGF5X3VzKCksICQkbmFtZSwKKyAgICAgICAgICAgICAgIGJhc2VuYW1lKGZpbGVuYW1lKSwgZnVuY25hbWUsIGxpbmVubyk7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJjZjM5NgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4CitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ5MTQ4NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZApAQCAtMCwwICsxLDE4IEBACitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDE7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpnYy1zdGFydCwKK3B5dGhvbiR0YXJnZXQ6OjpnYy1kb25lCisvc2VsZi0+dHJhY2UvCit7CisgICAgcHJpbnRmKCIlZFx0JXM6JWxkXG4iLCB0aW1lc3RhbXAsIHByb2JlbmFtZSwgYXJnMCk7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDA7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1YWMyYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MuZC5leHBlY3RlZApAQCAtMCwwICsxLDggQEAKK2djLXN0YXJ0OjAKK2djLWRvbmU6MAorZ2Mtc3RhcnQ6MQorZ2MtZG9uZTowCitnYy1zdGFydDoyCitnYy1kb25lOjAKK2djLXN0YXJ0OjIKK2djLWRvbmU6MQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ0YTc4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkKQEAgLTAsMCArMSwxMyBAQAoraW1wb3J0IGdjCisKK2RlZiBzdGFydCgpOgorICAgIGdjLmNvbGxlY3QoMCkKKyAgICBnYy5jb2xsZWN0KDEpCisgICAgZ2MuY29sbGVjdCgyKQorICAgIGwgPSBbXQorICAgIGwuYXBwZW5kKGwpCisgICAgZGVsIGwKKyAgICBnYy5jb2xsZWN0KDIpCisKK2djLmNvbGxlY3QoKQorc3RhcnQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjJjNmQzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAKQEAgLTAsMCArMSwyNiBAQAorZ2xvYmFsIHRyYWNpbmcKKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDE7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImdjX19zdGFydCIpLCBwcm9jZXNzLm1hcmsoImdjX19kb25lIikKK3sKKyAgICBpZiAodHJhY2luZykgeworICAgICAgICBwcmludGYoIiVkXHQlczolbGRcbiIsIGdldHRpbWVvZmRheV91cygpLCAkJG5hbWUsICRhcmcxKTsKKyAgICB9Cit9CisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCit7CisgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisKKyAgICBpZiAoZnVuY25hbWUgPT0gInN0YXJ0IikgeworICAgICAgICB0cmFjaW5nID0gMDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNmU2MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZApAQCAtMCwwICsxLDggQEAKK2djX19zdGFydDowCitnY19fZG9uZTowCitnY19fc3RhcnQ6MQorZ2NfX2RvbmU6MAorZ2NfX3N0YXJ0OjIKK2djX19kb25lOjAKK2djX19zdGFydDoyCitnY19fZG9uZToxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2luc3RhbmNlLnB5IGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTQyMTM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weQpAQCAtMCwwICsxLDI0IEBACitpbXBvcnQgZ2MKKworY2xhc3Mgb2xkX3N0eWxlX2NsYXNzKCk6CisgICAgcGFzcworY2xhc3MgbmV3X3N0eWxlX2NsYXNzKG9iamVjdCk6CisgICAgcGFzcworCithID0gb2xkX3N0eWxlX2NsYXNzKCkKK2RlbCBhCitnYy5jb2xsZWN0KCkKK2IgPSBuZXdfc3R5bGVfY2xhc3MoKQorZGVsIGIKK2djLmNvbGxlY3QoKQorCithID0gb2xkX3N0eWxlX2NsYXNzKCkKK2RlbCBvbGRfc3R5bGVfY2xhc3MKK2djLmNvbGxlY3QoKQorYiA9IG5ld19zdHlsZV9jbGFzcygpCitkZWwgbmV3X3N0eWxlX2NsYXNzCitnYy5jb2xsZWN0KCkKK2RlbCBhCitnYy5jb2xsZWN0KCkKK2RlbCBiCitnYy5jb2xsZWN0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNmMjJkYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kCkBAIC0wLDAgKzEsNyBAQAorcHl0aG9uJHRhcmdldDo6OmxpbmUKKy8oY29weWluc3RyKGFyZzEpPT0idGVzdF9saW5lIikvCit7CisgICAgcHJpbnRmKCIlZFx0JXM6JXM6JXM6JWRcbiIsIHRpbWVzdGFtcCwKKyAgICAgICAgcHJvYmVuYW1lLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLAorICAgICAgICBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjE2Y2U3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSwyMCBAQAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToyCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjMKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo1CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjYKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NworbGluZTpsaW5lLnB5OnRlc3RfbGluZTo4CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjkKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTAKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTEKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo1CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjYKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NworbGluZTpsaW5lLnB5OnRlc3RfbGluZTo4CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEwCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjExCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTIKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MTMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTMwZmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLnB5CkBAIC0wLDAgKzEsMTcgQEAKK2RlZiB0ZXN0X2xpbmUoKToKKyAgICBhID0gMQorICAgIHByaW50KCcjIFByZWFtYmxlJywgYSkKKyAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgYSA9IGkKKyAgICAgICAgYiA9IGkrMgorICAgICAgICBjID0gaSszCisgICAgICAgIGlmIGMgPCA0OgorICAgICAgICAgICAgYSA9IGMKKyAgICAgICAgZCA9IGEgKyBiICtjCisgICAgICAgIHByaW50KCcjJywgYSwgYiwgYywgZCkKKyAgICBhID0gMQorICAgIHByaW50KCcjIEVwaWxvZ3VlJywgYSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbGluZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5IGIvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQppbmRleCBlM2YxYWE1Li45ZmJlMDRkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkKQEAgLTksNyArOSw3IEBACiAiIiIKIAogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBpbworaW1wb3J0IGZhdWx0aGFuZGxlcgogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2lnbmFsCkBAIC01MCw2ICs1MCwxMCBAQAogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgY2xzLnNpZ25hbF9kZWxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMuc2lnbmFsX3BlcmlvZCkKIAorICAgICAgICAjIElzc3VlICMyNTI3NzogVXNlIGZhdWx0aGFuZGxlciB0byB0cnkgdG8gZGVidWcgYSBoYW5nIG9uIEZyZWVCU0QKKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKDEwICogNjAsIGV4aXQ9VHJ1ZSkKKwogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzdG9wX2FsYXJtKGNscyk6CiAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9SRUFMLCAwLCAwKQpAQCAtNTgsNiArNjIsOCBAQAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAgIGNscy5zdG9wX2FsYXJtKCkKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgY2xzLm9yaWdfaGFuZGxlcikKKyAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQogCiAgICAgZGVmIHN1YnByb2Nlc3Moc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgICBjbWRfYXJncyA9IChzeXMuZXhlY3V0YWJsZSwgJy1jJykgKyBhcmdzCkBAIC03Nyw2ICs4Myw5IEBACiAgICAgICAgIHByb2Nlc3NlcyA9IFtzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkgZm9yIF8gaW4gcmFuZ2UobnVtKV0KICAgICAgICAgZm9yIF8gaW4gcmFuZ2UobnVtKToKICAgICAgICAgICAgIHdhaXRfZnVuYygpCisgICAgICAgICMgQ2FsbCB0aGUgUG9wZW4gbWV0aG9kIHRvIGF2b2lkIGEgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgIGZvciBwcm9jIGluIHByb2Nlc3NlczoKKyAgICAgICAgICAgIHByb2Mud2FpdCgpCiAKICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3dhaXRfbXVsdGlwbGUob3Mud2FpdCkKQEAgLTg4LDYgKzk3LDggQEAKICAgICBkZWYgX3Rlc3Rfd2FpdF9zaW5nbGUoc2VsZiwgd2FpdF9mdW5jKToKICAgICAgICAgcHJvYyA9IHNlbGYubmV3X3NsZWVwX3Byb2Nlc3MoKQogICAgICAgICB3YWl0X2Z1bmMocHJvYy5waWQpCisgICAgICAgICMgQ2FsbCB0aGUgUG9wZW4gbWV0aG9kIHRvIGF2b2lkIGEgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgIHByb2Mud2FpdCgpCiAKICAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3dhaXRfc2luZ2xlKGxhbWJkYSBwaWQ6IG9zLndhaXRwaWQocGlkLCAwKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0IGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKaW5kZXggMDUxMzc2NS4uNzMzM2IyYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKKysrIGIvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICstLSBCdWZmZXJFcnJvcgogICAgICAgKy0tIEVPRkVycm9yCiAgICAgICArLS0gSW1wb3J0RXJyb3IKKyAgICAgICAgICAgKy0tIE1vZHVsZU5vdEZvdW5kRXJyb3IKICAgICAgICstLSBMb29rdXBFcnJvcgogICAgICAgfCAgICArLS0gSW5kZXhFcnJvcgogICAgICAgfCAgICArLS0gS2V5RXJyb3IKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2JhMGU2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNSBAQAorIyBXZSBpbXBvcnQgaW1wb3J0bGliICpBU0FQKiBpbiBvcmRlciB0byB0ZXN0ICMxNTM4NgoraW1wb3J0IGltcG9ydGxpYgorCitmcm9tIHRlc3QubGlicmVncnRlc3QuY21kbGluZSBpbXBvcnQgX3BhcnNlX2FyZ3MsIFJFU09VUkNFX05BTUVTCitmcm9tIHRlc3QubGlicmVncnRlc3QubWFpbiBpbXBvcnQgbWFpbgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvY21kbGluZS5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkxYjAwYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkKQEAgLTAsMCArMSwzNDcgQEAKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitVU0FHRSA9ICIiIlwKK3B5dGhvbiAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQorcHl0aG9uIHBhdGgvdG8vTGliL3Rlc3QvcmVncnRlc3QucHkgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCisiIiIKKworREVTQ1JJUFRJT04gPSAiIiJcCitSdW4gUHl0aG9uIHJlZ3Jlc3Npb24gdGVzdHMuCisKK0lmIG5vIGFyZ3VtZW50cyBvciBvcHRpb25zIGFyZSBwcm92aWRlZCwgZmluZHMgYWxsIGZpbGVzIG1hdGNoaW5nCit0aGUgcGF0dGVybiAidGVzdF8qIiBpbiB0aGUgTGliL3Rlc3Qgc3ViZGlyZWN0b3J5IGFuZCBydW5zCit0aGVtIGluIGFscGhhYmV0aWNhbCBvcmRlciAoYnV0IHNlZSAtTSBhbmQgLXUsIGJlbG93LCBmb3IgZXhjZXB0aW9ucykuCisKK0ZvciBtb3JlIHJpZ29yb3VzIHRlc3RpbmcsIGl0IGlzIHVzZWZ1bCB0byB1c2UgdGhlIGZvbGxvd2luZworY29tbWFuZCBsaW5lOgorCitweXRob24gLUUgLVdkIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIC4uLl0KKyIiIgorCitFUElMT0cgPSAiIiJcCitBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzOgorCistciByYW5kb21pemVzIHRlc3QgZXhlY3V0aW9uIG9yZGVyLiBZb3UgY2FuIHVzZSAtLXJhbmRzZWVkPWludCB0byBwcm92aWRlIGFuCitpbnQgc2VlZCB2YWx1ZSBmb3IgdGhlIHJhbmRvbWl6ZXI7IHRoaXMgaXMgdXNlZnVsIGZvciByZXByb2R1Y2luZyB0cm91Ymxlc29tZQordGVzdCBvcmRlcnMuCisKKy1zIE9uIHRoZSBmaXJzdCBpbnZvY2F0aW9uIG9mIHJlZ3J0ZXN0IHVzaW5nIC1zLCB0aGUgZmlyc3QgdGVzdCBmaWxlIGZvdW5kCitvciB0aGUgZmlyc3QgdGVzdCBmaWxlIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUgaXMgcnVuLCBhbmQgdGhlIG5hbWUgb2YKK3RoZSBuZXh0IHRlc3QgaXMgcmVjb3JkZWQgaW4gYSBmaWxlIG5hbWVkIHB5bmV4dHRlc3QuICBJZiBydW4gZnJvbSB0aGUKK1B5dGhvbiBidWlsZCBkaXJlY3RvcnksIHB5bmV4dHRlc3QgaXMgbG9jYXRlZCBpbiB0aGUgJ2J1aWxkJyBzdWJkaXJlY3RvcnksCitvdGhlcndpc2UgaXQgaXMgbG9jYXRlZCBpbiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkuICBPbiBzdWJzZXF1ZW50IHJ1bnMsCit0aGUgdGVzdCBpbiBweW5leHR0ZXN0IGlzIHJ1biwgYW5kIHRoZSBuZXh0IHRlc3QgaXMgd3JpdHRlbiB0byBweW5leHR0ZXN0LgorV2hlbiB0aGUgbGFzdCB0ZXN0IGhhcyBiZWVuIHJ1biwgcHluZXh0dGVzdCBpcyBkZWxldGVkLiAgSW4gdGhpcyB3YXkgaXQKK2lzIHBvc3NpYmxlIHRvIHNpbmdsZSBzdGVwIHRocm91Z2ggdGhlIHRlc3QgZmlsZXMuICBUaGlzIGlzIHVzZWZ1bCB3aGVuCitkb2luZyBtZW1vcnkgYW5hbHlzaXMgb24gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgd2hpY2ggcHJvY2VzcyB0ZW5kcyB0bworY29uc3VtZSB0b28gbWFueSByZXNvdXJjZXMgdG8gcnVuIHRoZSBmdWxsIHJlZ3Jlc3Npb24gdGVzdCBub24tc3RvcC4KKworLVMgaXMgdXNlZCB0byBjb250aW51ZSBydW5uaW5nIHRlc3RzIGFmdGVyIGFuIGFib3J0ZWQgcnVuLiAgSXQgd2lsbAorbWFpbnRhaW4gdGhlIG9yZGVyIGEgc3RhbmRhcmQgcnVuIChpZSwgdGhpcyBhc3N1bWVzIC1yIGlzIG5vdCB1c2VkKS4KK1RoaXMgaXMgdXNlZnVsIGFmdGVyIHRoZSB0ZXN0cyBoYXZlIHByZW1hdHVyZWx5IHN0b3BwZWQgZm9yIHNvbWUgZXh0ZXJuYWwKK3JlYXNvbiBhbmQgeW91IHdhbnQgdG8gc3RhcnQgcnVubmluZyBmcm9tIHdoZXJlIHlvdSBsZWZ0IG9mZiByYXRoZXIKK3RoYW4gc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nLgorCistZiByZWFkcyB0aGUgbmFtZXMgb2YgdGVzdHMgZnJvbSB0aGUgZmlsZSBnaXZlbiBhcyBmJ3MgYXJndW1lbnQsIG9uZQorb3IgbW9yZSB0ZXN0IG5hbWVzIHBlciBsaW5lLiAgV2hpdGVzcGFjZSBpcyBpZ25vcmVkLiAgQmxhbmsgbGluZXMgYW5kCitsaW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIGlnbm9yZWQuICBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIGZvcgord2hpdHRsaW5nIGRvd24gZmFpbHVyZXMgaW52b2x2aW5nIGludGVyYWN0aW9ucyBhbW9uZyB0ZXN0cy4KKworLUwgY2F1c2VzIHRoZSBsZWFrcygxKSBjb21tYW5kIHRvIGJlIHJ1biBqdXN0IGJlZm9yZSBleGl0IGlmIGl0IGV4aXN0cy4KK2xlYWtzKDEpIGlzIGF2YWlsYWJsZSBvbiBNYWMgT1MgWCBhbmQgcHJlc3VtYWJseSBvbiBzb21lIG90aGVyCitGcmVlQlNELWRlcml2ZWQgc3lzdGVtcy4KKworLVIgcnVucyBlYWNoIHRlc3Qgc2V2ZXJhbCB0aW1lcyBhbmQgZXhhbWluZXMgc3lzLmdldHRvdGFscmVmY291bnQoKSB0bworc2VlIGlmIHRoZSB0ZXN0IGFwcGVhcnMgdG8gYmUgbGVha2luZyByZWZlcmVuY2VzLiAgVGhlIGFyZ3VtZW50IHNob3VsZAorYmUgb2YgdGhlIGZvcm0gc3RhYjpydW46Zm5hbWUgd2hlcmUgJ3N0YWInIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCit0ZXN0IGlzIHJ1biB0byBsZXQgZ2V0dG90YWxyZWZjb3VudCBzZXR0bGUgZG93biwgJ3J1bicgaXMgdGhlIG51bWJlcgorb2YgdGltZXMgZnVydGhlciBpdCBpcyBydW4gYW5kICdmbmFtZScgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhlCityZXBvcnRzIGFyZSB3cml0dGVuIHRvLiAgVGhlc2UgcGFyYW1ldGVycyBhbGwgaGF2ZSBkZWZhdWx0cyAoNSwgNCBhbmQKKyJyZWZsb2cudHh0IiByZXNwZWN0aXZlbHkpLCBhbmQgdGhlIG1pbmltYWwgaW52b2NhdGlvbiBpcyAnLVIgOicuCisKKy1NIHJ1bnMgdGVzdHMgdGhhdCByZXF1aXJlIGFuIGV4b3JiaXRhbnQgYW1vdW50IG9mIG1lbW9yeS4gVGhlc2UgdGVzdHMKK3R5cGljYWxseSB0cnkgdG8gYXNjZXJ0YWluIGNvbnRhaW5lcnMga2VlcCB3b3JraW5nIHdoZW4gY29udGFpbmluZyBtb3JlIHRoYW4KKzIgYmlsbGlvbiBvYmplY3RzLCB3aGljaCBvbmx5IHdvcmtzIG9uIDY0LWJpdCBzeXN0ZW1zLiBUaGVyZSBhcmUgYWxzbyBzb21lCit0ZXN0cyB0aGF0IHRyeSB0byBleGhhdXN0IHRoZSBhZGRyZXNzIHNwYWNlIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBvbmx5IG1ha2VzCitzZW5zZSBvbiAzMi1iaXQgc3lzdGVtcyB3aXRoIGF0IGxlYXN0IDJHYiBvZiBtZW1vcnkuIFRoZSBwYXNzZWQtaW4gbWVtbGltaXQsCit3aGljaCBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybSBvZiAnMi41R2InLCBkZXRlcm1pbmVzIGhvd211Y2ggbWVtb3J5IHRoZQordGVzdHMgd2lsbCBsaW1pdCB0aGVtc2VsdmVzIHRvIChidXQgdGhleSBtYXkgZ28gc2xpZ2h0bHkgb3Zlci4pIFRoZSBudW1iZXIKK3Nob3VsZG4ndCBiZSBtb3JlIG1lbW9yeSB0aGFuIHRoZSBtYWNoaW5lIGhhcyAoaW5jbHVkaW5nIHN3YXAgbWVtb3J5KS4gWW91CitzaG91bGQgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBzd2FwIG1lbW9yeSBpcyBnZW5lcmFsbHkgbXVjaCwgbXVjaCBzbG93ZXIKK3RoYW4gUkFNLCBhbmQgc2V0dGluZyBtZW1saW1pdCB0byBhbGwgYXZhaWxhYmxlIFJBTSBvciBoaWdoZXIgd2lsbCBoZWF2aWx5Cit0YXggdGhlIG1hY2hpbmUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBpcyBubyB1c2UgcnVubmluZyB0aGVzZSB0ZXN0cyB3aXRoIGEKK2xpbWl0IG9mIGxlc3MgdGhhbiAyLjVHYiwgYW5kIG1hbnkgcmVxdWlyZSBtb3JlIHRoYW4gMjBHYi4gVGVzdHMgdGhhdCBleHBlY3QKK3RvIHVzZSBtb3JlIHRoYW4gbWVtbGltaXQgbWVtb3J5IHdpbGwgYmUgc2tpcHBlZC4gVGhlIGJpZy1tZW1vcnkgdGVzdHMKK2dlbmVyYWxseSBydW4gdmVyeSwgdmVyeSBsb25nLgorCistdSBpcyB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuLAorc3VjaCBhcyB0aG9zZSByZXF1aXJpbmcgbGFyZ2UgZmlsZSBzdXBwb3J0IG9yIG5ldHdvcmsgY29ubmVjdGl2aXR5LgorVGhlIGFyZ3VtZW50IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgaW5kaWNhdGluZyB0aGUKK3Jlc291cmNlcyB0byB0ZXN0LiAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBhcmUgZGVmaW5lZDoKKworICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCisKKyAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCisKKyAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgorICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgorICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCisKKyAgICBjdXJzZXMgLSAgICBUZXN0cyB0aGF0IHVzZSBjdXJzZXMgYW5kIHdpbGwgbW9kaWZ5IHRoZSB0ZXJtaW5hbCdzCisgICAgICAgICAgICAgICAgc3RhdGUgYW5kIG91dHB1dCBtb2Rlcy4KKworICAgIGxhcmdlZmlsZSAtIEl0IGlzIG9rYXkgdG8gcnVuIHNvbWUgdGVzdCB0aGF0IG1heSBjcmVhdGUgaHVnZQorICAgICAgICAgICAgICAgIGZpbGVzLiAgVGhlc2UgdGVzdHMgY2FuIHRha2UgYSBsb25nIHRpbWUgYW5kIG1heQorICAgICAgICAgICAgICAgIGNvbnN1bWUgPjJHQiBvZiBkaXNrIHNwYWNlIHRlbXBvcmFyaWx5LgorCisgICAgbmV0d29yayAtICAgSXQgaXMgb2theSB0byBydW4gdGVzdHMgdGhhdCB1c2UgZXh0ZXJuYWwgbmV0d29yaworICAgICAgICAgICAgICAgIHJlc291cmNlLCBlLmcuIHRlc3RpbmcgU1NMIHN1cHBvcnQgZm9yIHNvY2tldHMuCisKKyAgICBkZWNpbWFsIC0gICBUZXN0IHRoZSBkZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGEgbGFyZ2Ugc3VpdGUgdGhhdAorICAgICAgICAgICAgICAgIHZlcmlmaWVzIGNvbXBsaWFuY2Ugd2l0aCBzdGFuZGFyZHMuCisKKyAgICBjcHUgLSAgICAgICBVc2VkIGZvciBjZXJ0YWluIENQVS1oZWF2eSB0ZXN0cy4KKworICAgIHN1YnByb2Nlc3MgIFJ1biBhbGwgdGVzdHMgZm9yIHRoZSBzdWJwcm9jZXNzIG1vZHVsZS4KKworICAgIHVybGZldGNoIC0gIEl0IGlzIG9rYXkgdG8gZG93bmxvYWQgZmlsZXMgcmVxdWlyZWQgb24gdGVzdGluZy4KKworICAgIGd1aSAtICAgICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgYSBydW5uaW5nIEdVSS4KKworICAgIHR6ZGF0YSAtICAgIFJ1biB0ZXN0cyB0aGF0IHJlcXVpcmUgdGltZXpvbmUgZGF0YS4KKworVG8gZW5hYmxlIGFsbCByZXNvdXJjZXMgZXhjZXB0IG9uZSwgdXNlICctdWFsbCwtPHJlc291cmNlPicuICBGb3IKK2V4YW1wbGUsIHRvIHJ1biBhbGwgdGhlIHRlc3RzIGV4Y2VwdCBmb3IgdGhlIGd1aSB0ZXN0cywgZ2l2ZSB0aGUKK29wdGlvbiAnLXVhbGwsLWd1aScuCisiIiIKKworCitSRVNPVVJDRV9OQU1FUyA9ICgnYXVkaW8nLCAnY3Vyc2VzJywgJ2xhcmdlZmlsZScsICduZXR3b3JrJywKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsJywgJ2NwdScsICdzdWJwcm9jZXNzJywgJ3VybGZldGNoJywgJ2d1aScsICd0emRhdGEnKQorCitjbGFzcyBfQXJnUGFyc2VyKGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKToKKworICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgc3VwZXIoKS5lcnJvcihtZXNzYWdlICsgIlxuUGFzcyAtaCBvciAtLWhlbHAgZm9yIGNvbXBsZXRlIGhlbHAuIikKKworCitkZWYgX2NyZWF0ZV9wYXJzZXIoKToKKyAgICAjIFNldCBwcm9nIHRvIHByZXZlbnQgdGhlIHVuaW5mb3JtYXRpdmUgIl9fbWFpbl9fLnB5IiBmcm9tIGRpc3BsYXlpbmcgaW4KKyAgICAjIGVycm9yIG1lc3NhZ2VzIHdoZW4gdXNpbmcgInB5dGhvbiAtbSB0ZXN0IC4uLiIuCisgICAgcGFyc2VyID0gX0FyZ1BhcnNlcihwcm9nPSdyZWdydGVzdC5weScsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZT1VU0FHRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPURFU0NSSVBUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPUVQSUxPRywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcikKKworICAgICMgQXJndW1lbnRzIHdpdGggdGhpcyBjbGF1c2UgYWRkZWQgdG8gaXRzIGhlbHAgYXJlIGRlc2NyaWJlZCBmdXJ0aGVyIGluCisgICAgIyB0aGUgZXBpbG9nJ3MgIkFkZGl0aW9uYWwgb3B0aW9uIGRldGFpbHMiIHNlY3Rpb24uCisgICAgbW9yZV9kZXRhaWxzID0gJyAgU2VlIHRoZSBzZWN0aW9uIGF0IGJvdHRvbSBmb3IgbW9yZSBkZXRhaWxzLicKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnR2VuZXJhbCBvcHRpb25zJykKKyAgICAjIFdlIGFkZCBoZWxwIGV4cGxpY2l0bHkgdG8gY29udHJvbCB3aGF0IGFyZ3VtZW50IGdyb3VwIGl0IHJlbmRlcnMgdW5kZXIuCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGltZW91dCcsIG1ldGF2YXI9J1RJTUVPVVQnLCB0eXBlPWZsb2F0LAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3JlIHRoYW4gVElNRU9VVCBzZWNvbmRzOyBkaXNhYmxlZCBpZiBUSU1FT1VUICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5lZ2F0aXZlIG9yIGVxdWFscyB0byB6ZXJvJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2FpdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3dhaXQgZm9yIHVzZXIgaW5wdXQsIGUuZy4sIGFsbG93IGEgZGVidWdnZXIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBiZSBhdHRhY2hlZCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXNsYXZlYXJncycsIG1ldGF2YXI9J0FSR1MnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVMnLCAnLS1zdGFydCcsIG1ldGF2YXI9J1NUQVJUJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndGhlIG5hbWUgb2YgdGhlIHRlc3QgYXQgd2hpY2ggdG8gc3RhcnQuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdWZXJib3NpdHknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlJywgYWN0aW9uPSdjb3VudCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUgd2l0aCBvdXRwdXQgdG8gc3Rkb3V0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy13JywgJy0tdmVyYm9zZTInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctVycsICctLXZlcmJvc2UzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0ZXN0IG91dHB1dCBvbiBmYWlsdXJlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdubyBvdXRwdXQgdW5sZXNzIG9uZSBvciBtb3JlIHRlc3RzIGZhaWwnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1zbG93ZXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncHJpbnRfc2xvdycsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IHRoZSBzbG93ZXN0IDEwIHRlc3RzJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0taGVhZGVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgaGVhZGVyIHdpdGggaW50ZXJwcmV0ZXIgaW5mbycpCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1NlbGVjdGluZyB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcicsICctLXJhbmRvbWl6ZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JhbmRvbWl6ZSB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1yYW5kc2VlZCcsIG1ldGF2YXI9J1NFRUQnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdyYW5kb21fc2VlZCcsIHR5cGU9aW50LAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwYXNzIGEgcmFuZG9tIHNlZWQgdG8gcmVwcm9kdWNlIGEgcHJldmlvdXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5kb20gcnVuJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZnJvbWZpbGUnLCBtZXRhdmFyPSdGSUxFJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmVhZCBuYW1lcyBvZiB0ZXN0cyB0byBydW4gZnJvbSBhIGZpbGUuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXgnLCAnLS1leGNsdWRlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYXJndW1lbnRzIGFyZSB0ZXN0cyB0byAqZXhjbHVkZSonKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zaW5nbGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaW5nbGUgc3RlcCB0aHJvdWdoIGEgc2V0IG9mIHRlc3RzLicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbWF0Y2gnLCBtZXRhdmFyPSdQQVQnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdtYXRjaF90ZXN0cycsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J21hdGNoIHRlc3QgY2FzZXMgYW5kIG1ldGhvZHMgd2l0aCBnbG9iIHBhdHRlcm4gUEFUJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1HJywgJy0tZmFpbGZhc3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmYWlsIGFzIHNvb24gYXMgYSB0ZXN0IGZhaWxzIChvbmx5IHdpdGggLXYgb3IgLVcpJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy11JywgJy0tdXNlJywgbWV0YXZhcj0nUkVTMSxSRVMyLC4uLicsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nYXBwZW5kJywgdHlwZT1yZXNvdXJjZXNfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIHJ1bi4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU0nLCAnLS1tZW1saW1pdCcsIG1ldGF2YXI9J0xJTUlUJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cy4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRlc3RkaXInLCBtZXRhdmFyPSdESVInLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdleGVjdXRlIHRlc3QgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoaW5zdGVhZCBvZiB0aGUgUHl0aG9uIHN0ZGxpYiB0ZXN0IHN1aXRlKScpCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1NwZWNpYWwgcnVucycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbCcsICctLWZpbmRsZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2lmIEdDIGlzIGF2YWlsYWJsZSBkZXRlY3QgdGVzdHMgdGhhdCBsZWFrIG1lbW9yeScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTCcsICctLXJ1bmxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBsZWFrcygxKSBjb21tYW5kIGp1c3QgYmVmb3JlIGV4aXQuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVInLCAnLS1odW50cmxlYWtzJywgbWV0YXZhcj0nUlVOQ09VTlRTJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1odW50cmxlYWtzLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZWFyY2ggZm9yIHJlZmVyZW5jZSBsZWFrcyAobmVlZHMgZGVidWcgYnVpbGQsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyeSBzbG93KS4nICsgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWonLCAnLS1tdWx0aXByb2Nlc3MnLCBtZXRhdmFyPSdQUk9DRVNTRVMnLAorICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfbXAnLCB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIFBST0NFU1NFUyBwcm9jZXNzZXMgYXQgb25jZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctVCcsICctLWNvdmVyYWdlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndHJhY2UnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0dXJuIG9uIGNvZGUgY292ZXJhZ2UgdHJhY2luZyB1c2luZyB0aGUgdHJhY2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2R1bGUnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUQnLCAnLS1jb3ZlcmRpcicsIG1ldGF2YXI9J0RJUicsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2RpcmVjdG9yeSB3aGVyZSBjb3ZlcmFnZSBmaWxlcyBhcmUgcHV0JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1OJywgJy0tbm9jb3ZlcmRpcicsCisgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD1Ob25lLCBkZXN0PSdjb3ZlcmRpcicsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3B1dCBjb3ZlcmFnZSBmaWxlcyBhbG9uZ3NpZGUgbW9kdWxlcycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdCcsICctLXRocmVzaG9sZCcsIG1ldGF2YXI9J1RIUkVTSE9MRCcsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjYWxsIGdjLnNldF90aHJlc2hvbGQoVEhSRVNIT0xEKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbicsICctLW5vd2luZG93cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3N1cHByZXNzIGVycm9yIG1lc3NhZ2UgYm94ZXMgb24gV2luZG93cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRicsICctLWZvcmV2ZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIHNwZWNpZmllZCB0ZXN0cyBpbiBhIGxvb3AsIHVudGlsIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3IgaGFwcGVucycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWxpc3QtdGVzdHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IHdyaXRlIHRoZSBuYW1lIG9mIHRlc3RzIHRoYXQgd2lsbCBiZSBydW4sICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgZXhlY3V0ZSB0aGVtIikKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1QJywgJy0tcGdvJywgZGVzdD0ncGdvJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIFByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiB0cmFpbmluZycpCisKKyAgICByZXR1cm4gcGFyc2VyCisKKworZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6CisgICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQorICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQorCisKK2RlZiBodW50cmxlYWtzKHN0cmluZyk6CisgICAgYXJncyA9IHN0cmluZy5zcGxpdCgnOicpCisgICAgaWYgbGVuKGFyZ3MpIG5vdCBpbiAoMiwgMyk6CisgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKAorICAgICAgICAgICAgJ25lZWRzIDIgb3IgMyBjb2xvbi1zZXBhcmF0ZWQgYXJndW1lbnRzJykKKyAgICBud2FybXVwID0gaW50KGFyZ3NbMF0pIGlmIGFyZ3NbMF0gZWxzZSA1CisgICAgbnRyYWNrZWQgPSBpbnQoYXJnc1sxXSkgaWYgYXJnc1sxXSBlbHNlIDQKKyAgICBmbmFtZSA9IGFyZ3NbMl0gaWYgbGVuKGFyZ3MpID4gMiBhbmQgYXJnc1syXSBlbHNlICdyZWZsb2cudHh0JworICAgIHJldHVybiBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUKKworCitkZWYgcmVzb3VyY2VzX2xpc3Qoc3RyaW5nKToKKyAgICB1ID0gW3gubG93ZXIoKSBmb3IgeCBpbiBzdHJpbmcuc3BsaXQoJywnKV0KKyAgICBmb3IgciBpbiB1OgorICAgICAgICBpZiByID09ICdhbGwnIG9yIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICByID0gclsxOl0KKyAgICAgICAgaWYgciBub3QgaW4gUkVTT1VSQ0VfTkFNRVM6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcignaW52YWxpZCByZXNvdXJjZTogJyArIHIpCisgICAgcmV0dXJuIHUKKworCitkZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgorICAgICMgRGVmYXVsdHMKKyAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCisgICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKKyAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKKyAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKKyAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKKyAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKKyAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQorICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQorICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKKyAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCisKKyAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCisgICAgIyBJc3N1ZSAjMTQxOTE6IGFyZ3BhcnNlIGRvZXNuJ3Qgc3VwcG9ydCAiaW50ZXJtaXhlZCIgcG9zaXRpb25hbCBhbmQKKyAgICAjIG9wdGlvbmFsIGFyZ3VtZW50cy4gVXNlIHBhcnNlX2tub3duX2FyZ3MoKSBhcyB3b3JrYXJvdW5kLgorICAgIG5zLmFyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzPWFyZ3MsIG5hbWVzcGFjZT1ucylbMV0KKyAgICBmb3IgYXJnIGluIG5zLmFyZ3M6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctJyk6CisgICAgICAgICAgICBwYXJzZXIuZXJyb3IoInVucmVjb2duaXplZCBhcmd1bWVudHM6ICVzIiAlIGFyZykKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMudHJhY2U6CisgICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMudXNlX21wIGFuZCBucy5maW5kbGVha3M6CisgICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgbnMuZmFpbGZhc3QgYW5kIG5vdCAobnMudmVyYm9zZSBvciBucy52ZXJib3NlMyk6CisgICAgICAgIHBhcnNlci5lcnJvcigiLUcvLS1mYWlsZmFzdCBuZWVkcyBlaXRoZXIgLXYgb3IgLVciKQorICAgIGlmIG5zLnBnbyBhbmQgKG5zLnZlcmJvc2Ugb3IgbnMudmVyYm9zZTIgb3IgbnMudmVyYm9zZTMpOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi0tcGdvLy12IGRvbid0IGdvIHRvZ2V0aGVyISIpCisKKyAgICBpZiBucy5ub3dpbmRvd3M6CisgICAgICAgIHByaW50KCJXYXJuaW5nOiB0aGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZC4gIgorICAgICAgICAgICAgICAiVXNlIC12diB0byBkaXNwbGF5IGFzc2VydGlvbnMgaW4gc3RkZXJyLiIsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGlmIG5zLnF1aWV0OgorICAgICAgICBucy52ZXJib3NlID0gMAorICAgIGlmIG5zLnRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIG5zLnRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCisgICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBucy51c2VfbXAgPD0gMDoKKyAgICAgICAgICAgICMgVXNlIGFsbCBjb3JlcyArIGV4dHJhcyBmb3IgdGVzdHMgdGhhdCBsaWtlIHRvIHNsZWVwCisgICAgICAgICAgICBucy51c2VfbXAgPSAyICsgKG9zLmNwdV9jb3VudCgpIG9yIDEpCisgICAgaWYgbnMudXNlOgorICAgICAgICBmb3IgYSBpbiBucy51c2U6CisgICAgICAgICAgICBmb3IgciBpbiBhOgorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ2FsbCc6CisgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXNbOl0gPSBSRVNPVVJDRV9OQU1FUworICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHIgPT0gJ25vbmUnOgorICAgICAgICAgICAgICAgICAgICBkZWwgbnMudXNlX3Jlc291cmNlc1s6XQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHJlbW92ZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgclswXSA9PSAnLSc6CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgciA9IHJbMTpdCisgICAgICAgICAgICAgICAgaWYgcmVtb3ZlOgorICAgICAgICAgICAgICAgICAgICBpZiByIGluIG5zLnVzZV9yZXNvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgIGVsaWYgciBub3QgaW4gbnMudXNlX3Jlc291cmNlczoKKyAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5hcHBlbmQocikKKyAgICBpZiBucy5yYW5kb21fc2VlZCBpcyBub3QgTm9uZToKKyAgICAgICAgbnMucmFuZG9taXplID0gVHJ1ZQorCisgICAgcmV0dXJuIG5zCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9tYWluLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVmZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weQpAQCAtMCwwICsxLDUzMiBAQAoraW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgbG9jYWxlCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHRpbWUKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5jbWRsaW5lIGltcG9ydCBfcGFyc2VfYXJncworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3QgaW1wb3J0ICgKKyAgICBmaW5kdGVzdHMsIHJ1bnRlc3QsCisgICAgU1REVEVTVFMsIE5PVFRFU1RTLCBQQVNTRUQsIEZBSUxFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRCwKKyAgICBJTlRFUlJVUFRFRCwgQ0hJTERfRVJST1IsCisgICAgUFJPR1JFU1NfTUlOX1RJTUUsIGZvcm1hdF90ZXN0X3Jlc3VsdCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zZXR1cCBpbXBvcnQgc2V0dXBfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCBnYworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdjID0gTm9uZQorCisKKyMgV2hlbiB0ZXN0cyBhcmUgcnVuIGZyb20gdGhlIFB5dGhvbiBidWlsZCBkaXJlY3RvcnksIGl0IGlzIGJlc3QgcHJhY3RpY2UKKyMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIFRoaXMgZWFzZXMgdGhlIGNsZWFudXAgb2YgbGVmdG92ZXIKKyMgZmlsZXMgdXNpbmcgdGhlICJtYWtlIGRpc3RjbGVhbiIgY29tbWFuZC4KK2lmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICBURU1QRElSID0gb3MucGF0aC5qb2luKHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJyksICdidWlsZCcpCitlbHNlOgorICAgIFRFTVBESVIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKK1RFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgoVEVNUERJUikKKworCitkZWYgZm9ybWF0X2R1cmF0aW9uKHNlY29uZHMpOgorICAgIGlmIHNlY29uZHMgPCAxLjA6CisgICAgICAgIHJldHVybiAnJS4wZiBtcycgJSAoc2Vjb25kcyAqIDFlMykKKyAgICBpZiBzZWNvbmRzIDwgNjAuMDoKKyAgICAgICAgcmV0dXJuICclLjBmIHNlYycgJSBzZWNvbmRzCisKKyAgICBtaW51dGVzLCBzZWNvbmRzID0gZGl2bW9kKHNlY29uZHMsIDYwLjApCisgICAgcmV0dXJuICclLjBmIG1pbiAlLjBmIHNlYycgJSAobWludXRlcywgc2Vjb25kcykKKworCitjbGFzcyBSZWdydGVzdDoKKyAgICAiIiJFeGVjdXRlIGEgdGVzdCBzdWl0ZS4KKworICAgIFRoaXMgYWxzbyBwYXJzZXMgY29tbWFuZC1saW5lIG9wdGlvbnMgYW5kIG1vZGlmaWVzIGl0cyBiZWhhdmlvcgorICAgIGFjY29yZGluZ2x5LgorCisgICAgdGVzdHMgLS0gYSBsaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyB0ZXN0IG5hbWVzIChvcHRpb25hbCkKKyAgICB0ZXN0ZGlyIC0tIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gbG9vayBmb3IgdGVzdHMgKG9wdGlvbmFsKQorCisgICAgVXNlcnMgb3RoZXIgdGhhbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2lsbCBjZXJ0YWlubHkgd2FudCB0bworICAgIHNwZWNpZnkgdGVzdGRpcjsgaWYgaXQncyBvbWl0dGVkLCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlCisgICAgUHl0aG9uIHRlc3Qgc3VpdGUgaXMgc2VhcmNoZWQgZm9yLgorCisgICAgSWYgdGhlIHRlc3RzIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHRoZSB0ZXN0cyBsaXN0ZWQgb24gdGhlCisgICAgY29tbWFuZC1saW5lIHdpbGwgYmUgdXNlZC4gIElmIHRoYXQncyBlbXB0eSwgdG9vLCB0aGVuIGFsbCAqLnB5CisgICAgZmlsZXMgYmVnaW5uaW5nIHdpdGggdGVzdF8gd2lsbCBiZSB1c2VkLgorCisgICAgVGhlIG90aGVyIGRlZmF1bHQgYXJndW1lbnRzICh2ZXJib3NlLCBxdWlldCwgZXhjbHVkZSwKKyAgICBzaW5nbGUsIHJhbmRvbWl6ZSwgZmluZGxlYWtzLCB1c2VfcmVzb3VyY2VzLCB0cmFjZSwgY292ZXJkaXIsCisgICAgcHJpbnRfc2xvdywgYW5kIHJhbmRvbV9zZWVkKSBhbGxvdyBwcm9ncmFtbWVycyBjYWxsaW5nIG1haW4oKQorICAgIGRpcmVjdGx5IHRvIHNldCB0aGUgdmFsdWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgc2V0IGJ5IGZsYWdzCisgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICMgTmFtZXNwYWNlIG9mIGNvbW1hbmQgbGluZSBvcHRpb25zCisgICAgICAgIHNlbGYubnMgPSBOb25lCisKKyAgICAgICAgIyB0ZXN0cworICAgICAgICBzZWxmLnRlc3RzID0gW10KKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IFtdCisKKyAgICAgICAgIyB0ZXN0IHJlc3VsdHMKKyAgICAgICAgc2VsZi5nb29kID0gW10KKyAgICAgICAgc2VsZi5iYWQgPSBbXQorICAgICAgICBzZWxmLnNraXBwZWQgPSBbXQorICAgICAgICBzZWxmLnJlc291cmNlX2RlbmllZHMgPSBbXQorICAgICAgICBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQgPSBbXQorICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKKworICAgICAgICAjIHVzZWQgYnkgLS1zbG93CisgICAgICAgIHNlbGYudGVzdF90aW1lcyA9IFtdCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tY292ZXJhZ2UsIHRyYWNlLlRyYWNlIGluc3RhbmNlCisgICAgICAgIHNlbGYudHJhY2VyID0gTm9uZQorCisgICAgICAgICMgdXNlZCBieSAtLWZpbmRsZWFrcywgc3RvcmUgZm9yIGdjLmdhcmJhZ2UKKyAgICAgICAgc2VsZi5mb3VuZF9nYXJiYWdlID0gW10KKworICAgICAgICAjIHVzZWQgdG8gZGlzcGxheSB0aGUgcHJvZ3Jlc3MgYmFyICJbIDMvMTAwXSIKKyAgICAgICAgc2VsZi5zdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICBzZWxmLnRlc3RfY291bnQgPSAnJworICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAxCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tc2luZ2xlCisgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IE5vbmUKKyAgICAgICAgc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSA9IE5vbmUKKworICAgIGRlZiBhY2N1bXVsYXRlX3Jlc3VsdChzZWxmLCB0ZXN0LCByZXN1bHQpOgorICAgICAgICBvaywgdGVzdF90aW1lID0gcmVzdWx0CisgICAgICAgIGlmIG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKToKKyAgICAgICAgICAgIHNlbGYudGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCisgICAgICAgIGlmIG9rID09IFBBU1NFRDoKKyAgICAgICAgICAgIHNlbGYuZ29vZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6CisgICAgICAgICAgICBzZWxmLmJhZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBFTlZfQ0hBTkdFRDoKKyAgICAgICAgICAgIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBTS0lQUEVEOgorICAgICAgICAgICAgc2VsZi5za2lwcGVkLmFwcGVuZCh0ZXN0KQorICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgIHNlbGYucmVzb3VyY2VfZGVuaWVkcy5hcHBlbmQodGVzdCkKKworICAgIGRlZiBkaXNwbGF5X3Byb2dyZXNzKHNlbGYsIHRlc3RfaW5kZXgsIHRlc3QpOgorICAgICAgICBpZiBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYuYmFkIGFuZCBub3Qgc2VsZi5ucy5wZ286CisgICAgICAgICAgICBmbXQgPSAie3RpbWV9IFt7dGVzdF9pbmRleDp7Y291bnRfd2lkdGh9fXt0ZXN0X2NvdW50fS97bmJhZH1dIHt0ZXN0X25hbWV9IgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm10ID0gInt0aW1lfSBbe3Rlc3RfaW5kZXg6e2NvdW50X3dpZHRofX17dGVzdF9jb3VudH1dIHt0ZXN0X25hbWV9IgorICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpIC0gc2VsZi5zdGFydF90aW1lCisgICAgICAgIHRlc3RfdGltZSA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWludCh0ZXN0X3RpbWUpKQorICAgICAgICBsaW5lID0gZm10LmZvcm1hdChjb3VudF93aWR0aD1zZWxmLnRlc3RfY291bnRfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfaW5kZXg9dGVzdF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudD1zZWxmLnRlc3RfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5iYWQ9bGVuKHNlbGYuYmFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9uYW1lPXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU9dGVzdF90aW1lKQorICAgICAgICBwcmludChsaW5lLCBmbHVzaD1UcnVlKQorCisgICAgZGVmIHBhcnNlX2FyZ3Moc2VsZiwga3dhcmdzKToKKyAgICAgICAgbnMgPSBfcGFyc2VfYXJncyhzeXMuYXJndlsxOl0sICoqa3dhcmdzKQorCisgICAgICAgIGlmIG5zLnRpbWVvdXQgYW5kIG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBwcmludCgiV2FybmluZzogVGhlIHRpbWVvdXQgb3B0aW9uIHJlcXVpcmVzICIKKyAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQorCisgICAgICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZSBhbmQgZ2MgaXMgTm9uZToKKyAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGlnbm9yZSAtLXRocmVzaG9sZC4nLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBucy50aHJlc2hvbGQgPSBOb25lCisKKyAgICAgICAgaWYgbnMuZmluZGxlYWtzOgorICAgICAgICAgICAgaWYgZ2MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgdG8gcmVwb3J0IGdhcmJhZ2UgdGhhdCBpcyBub3QKKyAgICAgICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQorICAgICAgICAgICAgICAgICMgZ2FyYmFnZSB0aGF0IGlzIG5vdCBjb2xsZWN0YWJsZSBieSB0aGUgR0MgaXMgcmVwb3J0ZWQuCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIC0tZmluZGxlYWtzJywKKyAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKKworICAgICAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgorICAgICAgICByZW1vdmVweShucy5hcmdzKQorCisgICAgICAgIHJldHVybiBucworCisgICAgZGVmIGZpbmRfdGVzdHMoc2VsZiwgdGVzdHMpOgorICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKKworICAgICAgICBpZiBzZWxmLm5zLnNpbmdsZToKKyAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgJ3B5bmV4dHRlc3QnKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAncicpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3QgPSBmcC5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RzID0gW25leHRfdGVzdF0KKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBzZWxmLm5zLmZyb21maWxlOgorICAgICAgICAgICAgc2VsZi50ZXN0cyA9IFtdCisgICAgICAgICAgICAjIHJlZ2V4IHRvIG1hdGNoICd0ZXN0X2J1aWx0aW4nIGluIGxpbmU6CisgICAgICAgICAgICAjICcwOjAwOjAwIFsgIDQvNDAwXSB0ZXN0X2J1aWx0aW4gLS0gdGVzdF9kaWN0IHRvb2sgMSBzZWMnCisgICAgICAgICAgICByZWdleCA9IChyJ14oPzpbMC05XSs6WzAtOV0rOlswLTldKyAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyg/OlxbWzAtOS8gXStcXSAqKT8nCisgICAgICAgICAgICAgICAgICAgICByJyh0ZXN0X1thLXpBLVowLTlfXSspJykKKyAgICAgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyZWdleCkKKyAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc2VsZi5ucy5mcm9tZmlsZSkpIGFzIGZwOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZwOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgICAgICBpZiBtYXRjaCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0cy5hcHBlbmQobWF0Y2guZ3JvdXAoMSkpCisKKyAgICAgICAgcmVtb3ZlcHkoc2VsZi50ZXN0cykKKworICAgICAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCisgICAgICAgIG5vdHRlc3RzID0gTk9UVEVTVFMuY29weSgpCisgICAgICAgIGlmIHNlbGYubnMuZXhjbHVkZToKKyAgICAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5ucy5hcmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZyBpbiBzdGR0ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKKyAgICAgICAgICAgICAgICBub3R0ZXN0cy5hZGQoYXJnKQorICAgICAgICAgICAgc2VsZi5ucy5hcmdzID0gW10KKworICAgICAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbworICAgICAgICAjIGRvbid0IGFkZCBkZWZhdWx0IHRlc3RzIHRvIGJlIGV4ZWN1dGVkIG9yIHNraXBwZWQgKHBhc3MgZW1wdHkgdmFsdWVzKQorICAgICAgICBpZiBzZWxmLm5zLnRlc3RkaXI6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIGxpc3QoKSwgc2V0KCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhzZWxmLm5zLnRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKKworICAgICAgICBpZiBub3Qgc2VsZi5ucy5mcm9tZmlsZToKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBzZWxmLnRlc3RzIG9yIHNlbGYubnMuYXJncyBvciBhbGx0ZXN0cworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZCA9IHNlbGYudGVzdHMKKyAgICAgICAgaWYgc2VsZi5ucy5zaW5nbGU6CisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkID0gc2VsZi5zZWxlY3RlZFs6MV0KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwb3MgPSBhbGx0ZXN0cy5pbmRleChzZWxmLnNlbGVjdGVkWzBdKQorICAgICAgICAgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfdGVzdCA9IGFsbHRlc3RzW3BvcyArIDFdCisgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBSZW1vdmUgYWxsIHRoZSBzZWxlY3RlZCB0ZXN0cyB0aGF0IHByZWNlZGUgc3RhcnQgaWYgaXQncyBzZXQuCisgICAgICAgIGlmIHNlbGYubnMuc3RhcnQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuc2VsZWN0ZWRbOnNlbGYuc2VsZWN0ZWQuaW5kZXgoc2VsZi5ucy5zdGFydCldCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIKKyAgICAgICAgICAgICAgICAgICAgICAlIHNlbGYubnMuc3RhcnQsIGZpbGU9c3lzLnN0ZGVycikKKworICAgICAgICBpZiBzZWxmLm5zLnJhbmRvbWl6ZToKKyAgICAgICAgICAgIGlmIHNlbGYubnMucmFuZG9tX3NlZWQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnJhbmRvbV9zZWVkID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwMDAwMCkKKyAgICAgICAgICAgIHJhbmRvbS5zZWVkKHNlbGYubnMucmFuZG9tX3NlZWQpCisgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxmLnNlbGVjdGVkKQorCisgICAgZGVmIGxpc3RfdGVzdHMoc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYuc2VsZWN0ZWQ6CisgICAgICAgICAgICBwcmludChuYW1lKQorCisgICAgZGVmIHJlcnVuX2ZhaWxlZF90ZXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlID0gVHJ1ZQorICAgICAgICBzZWxmLm5zLmZhaWxmYXN0ID0gRmFsc2UKKyAgICAgICAgc2VsZi5ucy52ZXJib3NlMyA9IEZhbHNlCisgICAgICAgIHNlbGYubnMubWF0Y2hfdGVzdHMgPSBOb25lCisKKyAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZSIpCisgICAgICAgIGZvciB0ZXN0IGluIHNlbGYuYmFkWzpdOgorICAgICAgICAgICAgcHJpbnQoIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdCwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLm5zLnZlcmJvc2UgPSBUcnVlCisgICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQworICAgICAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWQucmVtb3ZlKHRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5iYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCisgICAgICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgZGVmIGRpc3BsYXlfcmVzdWx0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgorICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgYWZ0ZXIgXkMKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKKyAgICAgICAgICAgIGV4ZWN1dGVkID0gc2V0KHNlbGYuZ29vZCkgfCBzZXQoc2VsZi5iYWQpIHwgc2V0KHNlbGYuc2tpcHBlZCkKKyAgICAgICAgICAgIG9taXR0ZWQgPSBzZXQoc2VsZi5zZWxlY3RlZCkgLSBleGVjdXRlZAorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKG9taXR0ZWQpLCAidGVzdCIpLCAib21pdHRlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KG9taXR0ZWQpCisKKyAgICAgICAgIyBJZiBydW5uaW5nIHRoZSB0ZXN0IHN1aXRlIGZvciBQR08gdGhlbiBubyBvbmUgY2FyZXMgYWJvdXQKKyAgICAgICAgIyByZXN1bHRzLgorICAgICAgICBpZiBzZWxmLm5zLnBnbzoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHNlbGYuZ29vZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBpZiAobm90IHNlbGYuYmFkCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLnNraXBwZWQKKyAgICAgICAgICAgICAgICBhbmQgbm90IHNlbGYuaW50ZXJydXB0ZWQKKyAgICAgICAgICAgICAgICBhbmQgbGVuKHNlbGYuZ29vZCkgPiAxKToKKyAgICAgICAgICAgICAgICBwcmludCgiQWxsIiwgZW5kPScgJykKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLmdvb2QpLCAidGVzdCIpLCAiT0suIikKKworICAgICAgICBpZiBzZWxmLm5zLnByaW50X3Nsb3c6CisgICAgICAgICAgICBzZWxmLnRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgiMTAgc2xvd2VzdCB0ZXN0czoiKQorICAgICAgICAgICAgZm9yIHRpbWUsIHRlc3QgaW4gc2VsZi50ZXN0X3RpbWVzWzoxMF06CisgICAgICAgICAgICAgICAgcHJpbnQoIi0gJXM6ICVzIiAlICh0ZXN0LCBmb3JtYXRfZHVyYXRpb24odGltZSkpKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuYmFkKSwgInRlc3QiKSwgImZhaWxlZDoiKQorICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuYmFkKQorCisgICAgICAgIGlmIHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZDoKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KCJ7fSBhbHRlcmVkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQ6Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBjb3VudChsZW4oc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKSwgInRlc3QiKSkpCisgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkKQorCisgICAgICAgIGlmIHNlbGYuc2tpcHBlZCBhbmQgbm90IHNlbGYubnMucXVpZXQ6CisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5za2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChzZWxmLnNraXBwZWQpCisKKyAgICBkZWYgcnVuX3Rlc3RzX3NlcXVlbnRpYWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYubnMudHJhY2U6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2UKKyAgICAgICAgICAgIHNlbGYudHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCisKKyAgICAgICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCisKKyAgICAgICAgcHJpbnQoIlJ1biB0ZXN0cyBzZXF1ZW50aWFsbHkiKQorCisgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisgICAgICAgIGZvciB0ZXN0X2luZGV4LCB0ZXN0IGluIGVudW1lcmF0ZShzZWxmLnRlc3RzLCAxKToKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLm1vbm90b25pYygpCisKKyAgICAgICAgICAgIHRleHQgPSB0ZXN0CisgICAgICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgICAgIHRleHQgPSAnJXMgLS0gJXMnICUgKHRleHQsIHByZXZpb3VzX3Rlc3QpCisgICAgICAgICAgICBzZWxmLmRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKworICAgICAgICAgICAgaWYgc2VsZi50cmFjZXI6CisgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSB0cmFjaW5nIGNvZGUgY292ZXJhZ2UsIHRoZW4gd2UgZG9uJ3QgZXhpdCB3aXRoIHN0YXR1cworICAgICAgICAgICAgICAgICMgaWYgb24gYSBmYWxzZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluLgorICAgICAgICAgICAgICAgIGNtZCA9ICgncmVzdWx0ID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KTsgJworICAgICAgICAgICAgICAgICAgICAgICAnc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpJykKKyAgICAgICAgICAgICAgICBucyA9IGRpY3QobG9jYWxzKCkpCisgICAgICAgICAgICAgICAgc2VsZi50cmFjZXIucnVuY3R4KGNtZCwgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz1ucykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBuc1sncmVzdWx0J10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KHNlbGYubnMsIHRlc3QpCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIChJTlRFUlJVUFRFRCwgTm9uZSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisKKyAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdCwgcmVzdWx0WzBdKQorICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS5tb25vdG9uaWMoKSAtIHN0YXJ0X3RpbWUKKyAgICAgICAgICAgIGlmIHRlc3RfdGltZSA+PSBQUk9HUkVTU19NSU5fVElNRToKKyAgICAgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gIiVzIGluICVzIiAlIChwcmV2aW91c190ZXN0LCBmb3JtYXRfZHVyYXRpb24odGVzdF90aW1lKSkKKyAgICAgICAgICAgIGVsaWYgcmVzdWx0WzBdID09IFBBU1NFRDoKKyAgICAgICAgICAgICAgICAjIGJlIHF1aWV0OiBzYXkgbm90aGluZyBpZiB0aGUgdGVzdCBwYXNzZWQgc2hvcnRseQorICAgICAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisKKyAgICAgICAgICAgIGlmIHNlbGYubnMuZmluZGxlYWtzOgorICAgICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgICAgIGlmIGdjLmdhcmJhZ2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiB0ZXN0IGNyZWF0ZWQiLCBsZW4oZ2MuZ2FyYmFnZSksIGVuZD0nICcpCisgICAgICAgICAgICAgICAgICAgIHByaW50KCJ1bmNvbGxlY3RhYmxlIG9iamVjdChzKS4iKQorICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIHVuY29sbGVjdGFibGUgb2JqZWN0cyBzb21ld2hlcmUgc28gd2UgZG9uJ3Qgc2VlCisgICAgICAgICAgICAgICAgICAgICMgdGhlbSBhZ2FpbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZvdW5kX2dhcmJhZ2UuZXh0ZW5kKGdjLmdhcmJhZ2UpCisgICAgICAgICAgICAgICAgICAgIGRlbCBnYy5nYXJiYWdlWzpdCisKKyAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCisgICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6CisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKKworICAgICAgICBpZiBwcmV2aW91c190ZXN0OgorICAgICAgICAgICAgcHJpbnQocHJldmlvdXNfdGVzdCkKKworICAgIGRlZiBfdGVzdF9mb3JldmVyKHNlbGYsIHRlc3RzKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIEZvciBhIHBhcnRpYWwgcnVuLCB3ZSBkbyBub3QgbmVlZCB0byBjbHV0dGVyIHRoZSBvdXRwdXQuCisgICAgICAgIGlmIChzZWxmLm5zLnZlcmJvc2UKKyAgICAgICAgICAgIG9yIHNlbGYubnMuaGVhZGVyCisgICAgICAgICAgICBvciBub3QgKHNlbGYubnMucGdvIG9yIHNlbGYubnMucXVpZXQgb3Igc2VsZi5ucy5zaW5nbGUKKyAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi50ZXN0cyBvciBzZWxmLm5zLmFyZ3MpKToKKyAgICAgICAgICAgICMgUHJpbnQgYmFzaWMgcGxhdGZvcm0gaW5mb3JtYXRpb24KKyAgICAgICAgICAgIHByaW50KCI9PSIsIHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLCAqc3lzLnZlcnNpb24uc3BsaXQoKSkKKyAgICAgICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLWVuZGlhbiIgJSBzeXMuYnl0ZW9yZGVyKQorICAgICAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCisgICAgICAgICAgICAgICAgICAiNjRiaXQiIGlmIHN5cy5tYXhzaXplID4gMioqMzIgZWxzZSAiMzJiaXQiKQorICAgICAgICAgICAgcHJpbnQoIj09ICBjd2Q6Iiwgb3MuZ2V0Y3dkKCkpCisgICAgICAgICAgICBwcmludCgiPT0gIGVuY29kaW5nczogbG9jYWxlPSVzLCBGUz0lcyIKKyAgICAgICAgICAgICAgICAgICUgKGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSksCisgICAgICAgICAgICAgICAgICAgICBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorICAgICAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5yYW5kb21pemU6CisgICAgICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBzZWxmLm5zLnJhbmRvbV9zZWVkKQorCisgICAgICAgIGlmIHNlbGYubnMuZm9yZXZlcjoKKyAgICAgICAgICAgIHNlbGYudGVzdHMgPSBzZWxmLl90ZXN0X2ZvcmV2ZXIobGlzdChzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudCA9ICcnCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSAzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRlc3RzID0gaXRlcihzZWxmLnNlbGVjdGVkKQorICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50ID0gJy97fScuZm9ybWF0KGxlbihzZWxmLnNlbGVjdGVkKSkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudF93aWR0aCA9IGxlbihzZWxmLnRlc3RfY291bnQpIC0gMQorCisgICAgICAgIGlmIHNlbGYubnMudXNlX21wOgorICAgICAgICAgICAgZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3RfbXAgaW1wb3J0IHJ1bl90ZXN0c19tdWx0aXByb2Nlc3MKKyAgICAgICAgICAgIHJ1bl90ZXN0c19tdWx0aXByb2Nlc3Moc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucnVuX3Rlc3RzX3NlcXVlbnRpYWwoKQorCisgICAgZGVmIGZpbmFsaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lOgorICAgICAgICAgICAgaWYgc2VsZi5uZXh0X3NpbmdsZV90ZXN0OgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lLCAndycpIGFzIGZwOgorICAgICAgICAgICAgICAgICAgICBmcC53cml0ZShzZWxmLm5leHRfc2luZ2xlX3Rlc3QgKyAnXG4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSkKKworICAgICAgICBpZiBzZWxmLnRyYWNlcjoKKyAgICAgICAgICAgIHIgPSBzZWxmLnRyYWNlci5yZXN1bHRzKCkKKyAgICAgICAgICAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdmVyZGlyPXNlbGYubnMuY292ZXJkaXIpCisKKyAgICAgICAgcHJpbnQoKQorICAgICAgICBkdXJhdGlvbiA9IHRpbWUubW9ub3RvbmljKCkgLSBzZWxmLnN0YXJ0X3RpbWUKKyAgICAgICAgcHJpbnQoIlRvdGFsIGR1cmF0aW9uOiAlcyIgJSBmb3JtYXRfZHVyYXRpb24oZHVyYXRpb24pKQorCisgICAgICAgIGlmIHNlbGYuYmFkOgorICAgICAgICAgICAgcmVzdWx0ID0gIkZBSUxVUkUiCisgICAgICAgIGVsaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICJJTlRFUlJVUFRFRCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTVUNDRVNTIgorICAgICAgICBwcmludCgiVGVzdHMgcmVzdWx0OiAlcyIgJSByZXN1bHQpCisKKyAgICAgICAgaWYgc2VsZi5ucy5ydW5sZWFrczoKKyAgICAgICAgICAgIG9zLnN5c3RlbSgibGVha3MgJWQiICUgb3MuZ2V0cGlkKCkpCisKKyAgICBkZWYgbWFpbihzZWxmLCB0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGdsb2JhbCBURU1QRElSCisKKyAgICAgICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCisgICAgICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCisgICAgICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKKyAgICAgICAgIyB0ZXN0aW5nIChzZWUgdGhlIC1qIG9wdGlvbikuCisgICAgICAgIHRlc3RfY3dkID0gJ3Rlc3RfcHl0aG9uX3t9Jy5mb3JtYXQob3MuZ2V0cGlkKCkpCisgICAgICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQorCisgICAgICAgICMgUnVuIHRoZSB0ZXN0cyBpbiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IGNoYW5nZXMgdGhlIENXRCB0byBhCisgICAgICAgICMgdGVtcG9yYXJ5IGFuZCB3cml0YWJsZSBkaXJlY3RvcnkuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKKyAgICAgICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCisgICAgICAgICMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHRlc3RfY3dkLCBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuX21haW4odGVzdHMsIGt3YXJncykKKworICAgIGRlZiBfbWFpbihzZWxmLCB0ZXN0cywga3dhcmdzKToKKyAgICAgICAgc2VsZi5ucyA9IHNlbGYucGFyc2VfYXJncyhrd2FyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy5zbGF2ZWFyZ3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdF9tcCBpbXBvcnQgcnVuX3Rlc3RzX3NsYXZlCisgICAgICAgICAgICBydW5fdGVzdHNfc2xhdmUoc2VsZi5ucy5zbGF2ZWFyZ3MpCisKKyAgICAgICAgaWYgc2VsZi5ucy53YWl0OgorICAgICAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQorCisgICAgICAgIHN1cHBvcnQuUEdPID0gc2VsZi5ucy5wZ28KKworICAgICAgICBzZXR1cF90ZXN0cyhzZWxmLm5zKQorCisgICAgICAgIHNlbGYuZmluZF90ZXN0cyh0ZXN0cykKKworICAgICAgICBpZiBzZWxmLm5zLmxpc3RfdGVzdHM6CisgICAgICAgICAgICBzZWxmLmxpc3RfdGVzdHMoKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgICAgICBzZWxmLnJ1bl90ZXN0cygpCisgICAgICAgIHNlbGYuZGlzcGxheV9yZXN1bHQoKQorCisgICAgICAgIGlmIHNlbGYubnMudmVyYm9zZTIgYW5kIHNlbGYuYmFkOgorICAgICAgICAgICAgc2VsZi5yZXJ1bl9mYWlsZWRfdGVzdHMoKQorCisgICAgICAgIHNlbGYuZmluYWxpemUoKQorICAgICAgICBzeXMuZXhpdChsZW4oc2VsZi5iYWQpID4gMCBvciBzZWxmLmludGVycnVwdGVkKQorCisKK2RlZiByZW1vdmVweShuYW1lcyk6CisgICAgaWYgbm90IG5hbWVzOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShuYW1lcyk6CisgICAgICAgIGJhc2VuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIGV4dCA9PSAnLnB5JzoKKyAgICAgICAgICAgIG5hbWVzW2lkeF0gPSBiYXNlbmFtZQorCisKK2RlZiBjb3VudChuLCB3b3JkKToKKyAgICBpZiBuID09IDE6CisgICAgICAgIHJldHVybiAiJWQgJXMiICUgKG4sIHdvcmQpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICIlZCAlc3MiICUgKG4sIHdvcmQpCisKKworZGVmIHByaW50bGlzdCh4LCB3aWR0aD03MCwgaW5kZW50PTQpOgorICAgICIiIlByaW50IHRoZSBlbGVtZW50cyBvZiBpdGVyYWJsZSB4IHRvIHN0ZG91dC4KKworICAgIE9wdGlvbmFsIGFyZyB3aWR0aCAoZGVmYXVsdCA3MCkgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGguCisgICAgT3B0aW9uYWwgYXJnIGluZGVudCAoZGVmYXVsdCA0KSBpcyB0aGUgbnVtYmVyIG9mIGJsYW5rcyB3aXRoIHdoaWNoIHRvCisgICAgYmVnaW4gZWFjaCBsaW5lLgorICAgICIiIgorCisgICAgYmxhbmtzID0gJyAnICogaW5kZW50CisgICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQorICAgIHByaW50KHRleHR3cmFwLmZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKSkKKworCitkZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6CisgICAgIiIiUnVuIHRoZSBQeXRob24gc3VpdGUuIiIiCisgICAgUmVncnRlc3QoKS5tYWluKHRlc3RzPXRlc3RzLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3JlZmxlYWsucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiM2QyNDUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5CkBAIC0wLDAgKzEsMjY5IEBACitpbXBvcnQgZXJybm8KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKwordHJ5OgorICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQorZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICBNQVhGRCA9IDI1NgorCisKK2RlZiBmZF9jb3VudCgpOgorICAgICIiIkNvdW50IHRoZSBudW1iZXIgb2Ygb3BlbiBmaWxlIGRlc2NyaXB0b3JzIiIiCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdmcmVlYnNkJykpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoIi9wcm9jL3NlbGYvZmQiKQorICAgICAgICAgICAgcmV0dXJuIGxlbihuYW1lcykKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgY291bnQgPSAwCisgICAgZm9yIGZkIGluIHJhbmdlKE1BWEZEKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBQcmVmZXIgZHVwKCkgb3ZlciBmc3RhdCgpLiBmc3RhdCgpIGNhbiByZXF1aXJlIGlucHV0L291dHB1dAorICAgICAgICAgICAgIyB3aGVyZWFzIGR1cCgpIGRvZXNuJ3QuCisgICAgICAgICAgICBmZDIgPSBvcy5kdXAoZmQpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVCQURGOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvcy5jbG9zZShmZDIpCisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgcmV0dXJuIGNvdW50CisKKworZGVmIGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCBpbmRpcmVjdF90ZXN0LCBodW50cmxlYWtzKToKKyAgICAiIiJSdW4gYSB0ZXN0IG11bHRpcGxlIHRpbWVzLCBsb29raW5nIGZvciByZWZlcmVuY2UgbGVha3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBGYWxzZSBpZiB0aGUgdGVzdCBkaWRuJ3QgbGVhayByZWZlcmVuY2VzOyBUcnVlIGlmIHdlIGRldGVjdGVkIHJlZmxlYWtzLgorICAgICIiIgorICAgICMgVGhpcyBjb2RlIGlzIGhhY2tpc2ggYW5kIGluZWxlZ2FudCwgYnV0IGl0IHNlZW1zIHRvIGRvIHRoZSBqb2IuCisgICAgaW1wb3J0IGNvcHlyZWcKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCisKKyAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiVHJhY2tpbmcgcmVmZXJlbmNlIGxlYWtzIHJlcXVpcmVzIGEgZGVidWcgYnVpbGQgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9mIFB5dGhvbiIpCisKKyAgICAjIFNhdmUgY3VycmVudCB2YWx1ZXMgZm9yIGRhc2hfUl9jbGVhbnVwKCkgdG8gcmVzdG9yZS4KKyAgICBmcyA9IHdhcm5pbmdzLmZpbHRlcnNbOl0KKyAgICBwcyA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgcGljID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY29weSgpCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICB6ZGMgPSBOb25lICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKKyAgICBlbHNlOgorICAgICAgICB6ZGMgPSB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY29weSgpCisgICAgYWJjcyA9IHt9CisgICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKKyAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKKyAgICAgICAgICAgIGFiY3Nbb2JqXSA9IG9iai5fYWJjX3JlZ2lzdHJ5LmNvcHkoKQorCisgICAgbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lID0gaHVudHJsZWFrcworICAgIGZuYW1lID0gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIGZuYW1lKQorICAgIHJlcGNvdW50ID0gbndhcm11cCArIG50cmFja2VkCisgICAgcmNfZGVsdGFzID0gWzBdICogcmVwY291bnQKKyAgICBhbGxvY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorICAgIGZkX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50CisKKyAgICBwcmludCgiYmVnaW5uaW5nIiwgcmVwY291bnQsICJyZXBldGl0aW9ucyIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICBwcmludCgoIjEyMzQ1Njc4OTAiKihyZXBjb3VudC8vMTAgKyAxKSlbOnJlcGNvdW50XSwgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgIyBpbml0aWFsaXplIHZhcmlhYmxlcyB0byBtYWtlIHB5Zmxha2VzIHF1aWV0CisgICAgcmNfYmVmb3JlID0gYWxsb2NfYmVmb3JlID0gZmRfYmVmb3JlID0gMAorICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKKyAgICAgICAgaW5kaXJlY3RfdGVzdCgpCisgICAgICAgIGFsbG9jX2FmdGVyLCByY19hZnRlciwgZmRfYWZ0ZXIgPSBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJjcykKKyAgICAgICAgcHJpbnQoJy4nLCBlbmQ9JycsIGZsdXNoPVRydWUpCisgICAgICAgIGlmIGkgPj0gbndhcm11cDoKKyAgICAgICAgICAgIHJjX2RlbHRhc1tpXSA9IHJjX2FmdGVyIC0gcmNfYmVmb3JlCisgICAgICAgICAgICBhbGxvY19kZWx0YXNbaV0gPSBhbGxvY19hZnRlciAtIGFsbG9jX2JlZm9yZQorICAgICAgICAgICAgZmRfZGVsdGFzW2ldID0gZmRfYWZ0ZXIgLSBmZF9iZWZvcmUKKyAgICAgICAgYWxsb2NfYmVmb3JlID0gYWxsb2NfYWZ0ZXIKKyAgICAgICAgcmNfYmVmb3JlID0gcmNfYWZ0ZXIKKyAgICAgICAgZmRfYmVmb3JlID0gZmRfYWZ0ZXIKKyAgICBwcmludChmaWxlPXN5cy5zdGRlcnIpCisgICAgIyBUaGVzZSBjaGVja2VycyByZXR1cm4gRmFsc2Ugb24gc3VjY2VzcywgVHJ1ZSBvbiBmYWlsdXJlCisgICAgZGVmIGNoZWNrX3JjX2RlbHRhcyhkZWx0YXMpOgorICAgICAgICByZXR1cm4gYW55KGRlbHRhcykKKyAgICBkZWYgY2hlY2tfYWxsb2NfZGVsdGFzKGRlbHRhcyk6CisgICAgICAgICMgQXQgbGVhc3QgMS8zcmQgb2YgMHMKKyAgICAgICAgaWYgMyAqIGRlbHRhcy5jb3VudCgwKSA8IGxlbihkZWx0YXMpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgIyBOb3RoaW5nIGVsc2UgdGhhbiAxcywgMHMgYW5kIC0xcworICAgICAgICBpZiBub3Qgc2V0KGRlbHRhcykgPD0gezEsMCwtMX06CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmYWlsZWQgPSBGYWxzZQorICAgIGZvciBkZWx0YXMsIGl0ZW1fbmFtZSwgY2hlY2tlciBpbiBbCisgICAgICAgIChyY19kZWx0YXMsICdyZWZlcmVuY2VzJywgY2hlY2tfcmNfZGVsdGFzKSwKKyAgICAgICAgKGFsbG9jX2RlbHRhcywgJ21lbW9yeSBibG9ja3MnLCBjaGVja19hbGxvY19kZWx0YXMpLAorICAgICAgICAoZmRfZGVsdGFzLCAnZmlsZSBkZXNjcmlwdG9ycycsIGNoZWNrX3JjX2RlbHRhcyldOgorICAgICAgICBpZiBjaGVja2VyKGRlbHRhcyk6CisgICAgICAgICAgICBtc2cgPSAnJXMgbGVha2VkICVzICVzLCBzdW09JXMnICUgKAorICAgICAgICAgICAgICAgIHRlc3QsIGRlbHRhc1tud2FybXVwOl0sIGl0ZW1fbmFtZSwgc3VtKGRlbHRhcykpCisgICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgImEiKSBhcyByZWZyZXA6CisgICAgICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXJlZnJlcCkKKyAgICAgICAgICAgICAgICByZWZyZXAuZmx1c2goKQorICAgICAgICAgICAgZmFpbGVkID0gVHJ1ZQorICAgIHJldHVybiBmYWlsZWQKKworCitkZWYgZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcyk6CisgICAgaW1wb3J0IGdjLCBjb3B5cmVnCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworICAgIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha1NldAorCisgICAgIyBSZXN0b3JlIHNvbWUgb3JpZ2luYWwgdmFsdWVzLgorICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBmcworICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY2xlYXIoKQorICAgIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUudXBkYXRlKHBzKQorICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNsZWFyKCkKKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS51cGRhdGUocGljKQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHppcGltcG9ydAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcyAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0CisgICAgZWxzZToKKyAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNsZWFyKCkKKyAgICAgICAgemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLnVwZGF0ZSh6ZGMpCisKKyAgICAjIGNsZWFyIHR5cGUgY2FjaGUKKyAgICBzeXMuX2NsZWFyX3R5cGVfY2FjaGUoKQorCisgICAgIyBDbGVhciBBQkMgcmVnaXN0cmllcywgcmVzdG9yaW5nIHByZXZpb3VzbHkgc2F2ZWQgQUJDIHJlZ2lzdHJpZXMuCisgICAgZm9yIGFiYyBpbiBbZ2V0YXR0cihjb2xsZWN0aW9ucy5hYmMsIGEpIGZvciBhIGluIGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fXToKKyAgICAgICAgaWYgbm90IGlzYWJzdHJhY3QoYWJjKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBvYmogaW4gYWJjLl9fc3ViY2xhc3Nlc19fKCkgKyBbYWJjXToKKyAgICAgICAgICAgIG9iai5fYWJjX3JlZ2lzdHJ5ID0gYWJjcy5nZXQob2JqLCBXZWFrU2V0KCkpLmNvcHkoKQorICAgICAgICAgICAgb2JqLl9hYmNfY2FjaGUuY2xlYXIoKQorICAgICAgICAgICAgb2JqLl9hYmNfbmVnYXRpdmVfY2FjaGUuY2xlYXIoKQorCisgICAgY2xlYXJfY2FjaGVzKCkKKworICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2ggYW5kIHJlYWQgbWVtb3J5IHN0YXRpc3RpY3MgaW1tZWRpYXRlbHkgYWZ0ZXIuCisgICAgZnVuYzEgPSBzeXMuZ2V0YWxsb2NhdGVkYmxvY2tzCisgICAgZnVuYzIgPSBzeXMuZ2V0dG90YWxyZWZjb3VudAorICAgIGdjLmNvbGxlY3QoKQorICAgIHJldHVybiBmdW5jMSgpLCBmdW5jMigpLCBmZF9jb3VudCgpCisKKworZGVmIGNsZWFyX2NhY2hlcygpOgorICAgIGltcG9ydCBnYworCisgICAgIyBDbGVhciB0aGUgd2FybmluZ3MgcmVnaXN0cnksIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBhZ2FpbgorICAgIGZvciBtb2QgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6CisgICAgICAgIGlmIGhhc2F0dHIobW9kLCAnX193YXJuaW5ncmVnaXN0cnlfXycpOgorICAgICAgICAgICAgZGVsIG1vZC5fX3dhcm5pbmdyZWdpc3RyeV9fCisKKyAgICAjIEZsdXNoIHN0YW5kYXJkIG91dHB1dCwgc28gdGhhdCBidWZmZXJlZCBkYXRhIGlzIHNlbnQgdG8gdGhlIE9TIGFuZAorICAgICMgYXNzb2NpYXRlZCBQeXRob24gb2JqZWN0cyBhcmUgcmVjbGFpbWVkLgorICAgIGZvciBzdHJlYW0gaW4gKHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIsIHN5cy5fX3N0ZG91dF9fLCBzeXMuX19zdGRlcnJfXyk6CisgICAgICAgIGlmIHN0cmVhbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpCisKKyAgICAjIENsZWFyIGFzc29ydGVkIG1vZHVsZSBjYWNoZXMuCisgICAgIyBEb24ndCB3b3JyeSBhYm91dCByZXNldHRpbmcgdGhlIGNhY2hlIGlmIHRoZSBtb2R1bGUgaXMgbm90IGxvYWRlZAorICAgIHRyeToKKyAgICAgICAgZGlzdHV0aWxzX2Rpcl91dGlsID0gc3lzLm1vZHVsZXNbJ2Rpc3R1dGlscy5kaXJfdXRpbCddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgZGlzdHV0aWxzX2Rpcl91dGlsLl9wYXRoX2NyZWF0ZWQuY2xlYXIoKQorICAgIHJlLnB1cmdlKCkKKworICAgIHRyeToKKyAgICAgICAgX3N0cnB0aW1lID0gc3lzLm1vZHVsZXNbJ19zdHJwdGltZSddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgX3N0cnB0aW1lLl9yZWdleF9jYWNoZS5jbGVhcigpCisKKyAgICB0cnk6CisgICAgICAgIHVybGxpYl9wYXJzZSA9IHN5cy5tb2R1bGVzWyd1cmxsaWIucGFyc2UnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHVybGxpYl9wYXJzZS5jbGVhcl9jYWNoZSgpCisKKyAgICB0cnk6CisgICAgICAgIHVybGxpYl9yZXF1ZXN0ID0gc3lzLm1vZHVsZXNbJ3VybGxpYi5yZXF1ZXN0J10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICB1cmxsaWJfcmVxdWVzdC51cmxjbGVhbnVwKCkKKworICAgIHRyeToKKyAgICAgICAgbGluZWNhY2hlID0gc3lzLm1vZHVsZXNbJ2xpbmVjYWNoZSddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorCisgICAgdHJ5OgorICAgICAgICBtaW1ldHlwZXMgPSBzeXMubW9kdWxlc1snbWltZXR5cGVzJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBtaW1ldHlwZXMuX2RlZmF1bHRfbWltZV90eXBlcygpCisKKyAgICB0cnk6CisgICAgICAgIGZpbGVjbXAgPSBzeXMubW9kdWxlc1snZmlsZWNtcCddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgZmlsZWNtcC5fY2FjaGUuY2xlYXIoKQorCisgICAgdHJ5OgorICAgICAgICBzdHJ1Y3QgPSBzeXMubW9kdWxlc1snc3RydWN0J10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBzdHJ1Y3QuX2NsZWFyY2FjaGUoKQorCisgICAgdHJ5OgorICAgICAgICBkb2N0ZXN0ID0gc3lzLm1vZHVsZXNbJ2RvY3Rlc3QnXQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGRvY3Rlc3QubWFzdGVyID0gTm9uZQorCisgICAgdHJ5OgorICAgICAgICBjdHlwZXMgPSBzeXMubW9kdWxlc1snY3R5cGVzJ10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBjdHlwZXMuX3Jlc2V0X2NhY2hlKCkKKworICAgIHRyeToKKyAgICAgICAgdHlwaW5nID0gc3lzLm1vZHVsZXNbJ3R5cGluZyddCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgZm9yIGYgaW4gdHlwaW5nLl9jbGVhbnVwczoKKyAgICAgICAgICAgIGYoKQorCisgICAgZ2MuY29sbGVjdCgpCisKKworZGVmIHdhcm1fY2FjaGVzKCk6CisgICAgIyBjaGFyIGNhY2hlCisgICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCisgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKKyAgICAgICAgc1tpOmkrMV0KKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICBbY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NildCisgICAgIyBpbnQgY2FjaGUKKyAgICBsaXN0KHJhbmdlKC01LCAyNTcpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdC5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEwZGYwYQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkKQEAgLTAsMCArMSwyNDUgQEAKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdGltZQoraW1wb3J0IHRyYWNlYmFjaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5yZWZsZWFrIGltcG9ydCBkYXNoX1IsIGNsZWFyX2NhY2hlcworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnNhdmVfZW52IGltcG9ydCBzYXZlZF90ZXN0X2Vudmlyb25tZW50CisKKworIyBUZXN0IHJlc3VsdCBjb25zdGFudHMuCitQQVNTRUQgPSAxCitGQUlMRUQgPSAwCitFTlZfQ0hBTkdFRCA9IC0xCitTS0lQUEVEID0gLTIKK1JFU09VUkNFX0RFTklFRCA9IC0zCitJTlRFUlJVUFRFRCA9IC00CitDSElMRF9FUlJPUiA9IC01ICAgIyBlcnJvciBpbiBhIGNoaWxkIHByb2Nlc3MKKworX0ZPUk1BVF9URVNUX1JFU1VMVCA9IHsKKyAgICBQQVNTRUQ6ICclcyBwYXNzZWQnLAorICAgIEZBSUxFRDogJyVzIGZhaWxlZCcsCisgICAgRU5WX0NIQU5HRUQ6ICclcyBmYWlsZWQgKGVudiBjaGFuZ2VkKScsCisgICAgU0tJUFBFRDogJyVzIHNraXBwZWQnLAorICAgIFJFU09VUkNFX0RFTklFRDogJyVzIHNraXBwZWQgKHJlc291cmNlIGRlbmllZCknLAorICAgIElOVEVSUlVQVEVEOiAnJXMgaW50ZXJydXB0ZWQnLAorICAgIENISUxEX0VSUk9SOiAnJXMgY3Jhc2hlZCcsCit9CisKKyMgTWluaW11bSBkdXJhdGlvbiBvZiBhIHRlc3QgdG8gZGlzcGxheSBpdHMgZHVyYXRpb24gb3IgdG8gbWVudGlvbiB0aGF0CisjIHRoZSB0ZXN0IGlzIHJ1bm5pbmcgaW4gYmFja2dyb3VuZAorUFJPR1JFU1NfTUlOX1RJTUUgPSAzMC4wICAgIyBzZWNvbmRzCisKKyMgc21hbGwgc2V0IG9mIHRlc3RzIHRvIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgYmFzaWNhbGx5IGZ1bmN0aW9uaW5nIGludGVycHJldGVyCisjIChpLmUuIGlmIGFueSBvZiB0aGVzZSBmYWlsLCB0aGVuIGFueXRoaW5nIGVsc2UgaXMgbGlrZWx5IHRvIGZvbGxvdykKK1NURFRFU1RTID0gWworICAgICd0ZXN0X2dyYW1tYXInLAorICAgICd0ZXN0X29wY29kZXMnLAorICAgICd0ZXN0X2RpY3QnLAorICAgICd0ZXN0X2J1aWx0aW4nLAorICAgICd0ZXN0X2V4Y2VwdGlvbnMnLAorICAgICd0ZXN0X3R5cGVzJywKKyAgICAndGVzdF91bml0dGVzdCcsCisgICAgJ3Rlc3RfZG9jdGVzdCcsCisgICAgJ3Rlc3RfZG9jdGVzdDInLAorICAgICd0ZXN0X3N1cHBvcnQnCitdCisKKyMgc2V0IG9mIHRlc3RzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBiZSBleGVjdXRlZCB3aGVuIHVzaW5nIHJlZ3J0ZXN0CitOT1RURVNUUyA9IHNldCgpCisKKworZGVmIGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0X25hbWUsIHJlc3VsdCk6CisgICAgZm10ID0gX0ZPUk1BVF9URVNUX1JFU1VMVC5nZXQocmVzdWx0LCAiJXMiKQorICAgIHJldHVybiBmbXQgJSB0ZXN0X25hbWUKKworCitkZWYgZmluZHRlc3RzKHRlc3RkaXI9Tm9uZSwgc3RkdGVzdHM9U1REVEVTVFMsIG5vdHRlc3RzPU5PVFRFU1RTKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhcHBsaWNhYmxlIHRlc3QgbW9kdWxlcy4iIiIKKyAgICB0ZXN0ZGlyID0gZmluZHRlc3RkaXIodGVzdGRpcikKKyAgICBuYW1lcyA9IG9zLmxpc3RkaXIodGVzdGRpcikKKyAgICB0ZXN0cyA9IFtdCisgICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCisgICAgZm9yIG5hbWUgaW4gbmFtZXM6CisgICAgICAgIG1vZCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQorICAgICAgICBpZiBtb2RbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCBpbiAoIi5weSIsICIiKSBhbmQgbW9kIG5vdCBpbiBvdGhlcnM6CisgICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kKQorICAgIHJldHVybiBzdGR0ZXN0cyArIHNvcnRlZCh0ZXN0cykKKworCitkZWYgcnVudGVzdChucywgdGVzdCk6CisgICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCisKKyAgICBucyAtLSByZWdydGVzdCBuYW1lc3BhY2Ugb2Ygb3B0aW9ucworICAgIHRlc3QgLS0gdGhlIG5hbWUgb2YgdGhlIHRlc3QKKworICAgIFJldHVybnMgdGhlIHR1cGxlIChyZXN1bHQsIHRlc3RfdGltZSksIHdoZXJlIHJlc3VsdCBpcyBvbmUgb2YgdGhlCisgICAgY29uc3RhbnRzOgorCisgICAgICAgIElOVEVSUlVQVEVEICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiBydW4gdW5kZXIgLWoKKyAgICAgICAgUkVTT1VSQ0VfREVOSUVEICB0ZXN0IHNraXBwZWQgYmVjYXVzZSByZXNvdXJjZSBkZW5pZWQKKyAgICAgICAgU0tJUFBFRCAgICAgICAgICB0ZXN0IHNraXBwZWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uCisgICAgICAgIEVOVl9DSEFOR0VEICAgICAgdGVzdCBmYWlsZWQgYmVjYXVzZSBpdCBjaGFuZ2VkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQKKyAgICAgICAgRkFJTEVEICAgICAgICAgICB0ZXN0IGZhaWxlZAorICAgICAgICBQQVNTRUQgICAgICAgICAgIHRlc3QgcGFzc2VkCisgICAgIiIiCisKKyAgICBvdXRwdXRfb25fZmFpbHVyZSA9IG5zLnZlcmJvc2UzCisKKyAgICB1c2VfdGltZW91dCA9IChucy50aW1lb3V0IGlzIG5vdCBOb25lKQorICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIobnMudGltZW91dCwgZXhpdD1UcnVlKQorICAgIHRyeToKKyAgICAgICAgc3VwcG9ydC5tYXRjaF90ZXN0cyA9IG5zLm1hdGNoX3Rlc3RzCisgICAgICAgIGlmIG5zLmZhaWxmYXN0OgorICAgICAgICAgICAgc3VwcG9ydC5mYWlsZmFzdCA9IFRydWUKKyAgICAgICAgaWYgb3V0cHV0X29uX2ZhaWx1cmU6CisgICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSBUcnVlCisKKyAgICAgICAgICAgICMgUmV1c2UgdGhlIHNhbWUgaW5zdGFuY2UgdG8gYWxsIGNhbGxzIHRvIHJ1bnRlc3QoKS4gU29tZQorICAgICAgICAgICAgIyB0ZXN0cyBrZWVwIGEgcmVmZXJlbmNlIHRvIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVycgorICAgICAgICAgICAgIyAoZWcuIHRlc3RfYXJncGFyc2UpLgorICAgICAgICAgICAgaWYgcnVudGVzdC5zdHJpbmdpbyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgICAgICBydW50ZXN0LnN0cmluZ2lvID0gc3RyZWFtCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN0cmVhbSA9IHJ1bnRlc3Quc3RyaW5naW8KKyAgICAgICAgICAgICAgICBzdHJlYW0uc2VlaygwKQorICAgICAgICAgICAgICAgIHN0cmVhbS50cnVuY2F0ZSgpCisKKyAgICAgICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN0cmVhbQorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzdHJlYW0KKyAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKG5zLCB0ZXN0LCBkaXNwbGF5X2ZhaWx1cmU9RmFsc2UpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdICE9IFBBU1NFRDoKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIud3JpdGUob3V0cHV0KQorICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ZGVyci5mbHVzaCgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBvcmlnX3N0ZG91dAorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvcmlnX3N0ZGVycgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gbnMudmVyYm9zZSAgIyBUZWxsIHRlc3RzIHRvIGJlIG1vZGVyYXRlbHkgcXVpZXQKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3RfaW5uZXIobnMsIHRlc3QsIGRpc3BsYXlfZmFpbHVyZT1ub3QgbnMudmVyYm9zZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisgICAgICAgIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdCwgbnMudmVyYm9zZSkKK3J1bnRlc3Quc3RyaW5naW8gPSBOb25lCisKKworZGVmIHJ1bnRlc3RfaW5uZXIobnMsIHRlc3QsIGRpc3BsYXlfZmFpbHVyZT1UcnVlKToKKyAgICBzdXBwb3J0LnVubG9hZCh0ZXN0KQorCisgICAgdGVzdF90aW1lID0gMC4wCisgICAgcmVmbGVhayA9IEZhbHNlICAjIFRydWUgaWYgdGhlIHRlc3QgbGVha2VkIHJlZmVyZW5jZXMuCisgICAgdHJ5OgorICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgoJ3Rlc3QuJykgb3IgbnMudGVzdGRpcjoKKyAgICAgICAgICAgIGFic3Rlc3QgPSB0ZXN0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFsd2F5cyBpbXBvcnQgaXQgZnJvbSB0aGUgdGVzdCBwYWNrYWdlCisgICAgICAgICAgICBhYnN0ZXN0ID0gJ3Rlc3QuJyArIHRlc3QKKyAgICAgICAgY2xlYXJfY2FjaGVzKCkKKyAgICAgICAgd2l0aCBzYXZlZF90ZXN0X2Vudmlyb25tZW50KHRlc3QsIG5zLnZlcmJvc2UsIG5zLnF1aWV0LCBwZ289bnMucGdvKSBhcyBlbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgdGhlX21vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGFic3Rlc3QpCisgICAgICAgICAgICAjIElmIHRoZSB0ZXN0IGhhcyBhIHRlc3RfbWFpbiwgdGhhdCB3aWxsIHJ1biB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICMgdGVzdHMuICBJZiBub3QsIHVzZSBub3JtYWwgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLgorICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQorICAgICAgICAgICAgaWYgdGVzdF9ydW5uZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9ydW5uZXIoKToKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCisgICAgICAgICAgICAgICAgICAgIHRlc3RzID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhlX21vZHVsZSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGVycm9yIGluIGxvYWRlci5lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChlcnJvciwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgICAgICBpZiBsb2FkZXIuZXJyb3JzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJlcnJvcnMgd2hpbGUgbG9hZGluZyB0ZXN0cyIpCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3RzKQorICAgICAgICAgICAgdGVzdF9ydW5uZXIoKQorICAgICAgICAgICAgaWYgbnMuaHVudHJsZWFrczoKKyAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIHRlc3RfcnVubmVyLCBucy5odW50cmxlYWtzKQorICAgICAgICAgICAgdGVzdF90aW1lID0gdGltZS50aW1lKCkgLSBzdGFydF90aW1lCisgICAgZXhjZXB0IHN1cHBvcnQuUmVzb3VyY2VEZW5pZWQgYXMgbXNnOgorICAgICAgICBpZiBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286CisgICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIFJFU09VUkNFX0RFTklFRCwgdGVzdF90aW1lCisgICAgZXhjZXB0IHVuaXR0ZXN0LlNraXBUZXN0IGFzIG1zZzoKKyAgICAgICAgaWYgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgorICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2csIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBTS0lQUEVELCB0ZXN0X3RpbWUKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHJhaXNlCisgICAgZXhjZXB0IHN1cHBvcnQuVGVzdEZhaWxlZCBhcyBtc2c6CisgICAgICAgIGlmIG5vdCBucy5wZ286CisgICAgICAgICAgICBpZiBkaXNwbGF5X2ZhaWx1cmU6CisgICAgICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIsCisgICAgICAgICAgICAgICAgICAgICAgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIiwgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKKyAgICBleGNlcHQ6CisgICAgICAgIG1zZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKKyAgICAgICAgaWYgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImNyYXNoZWQgLS0iLCBtc2csIGZpbGU9c3lzLnN0ZGVyciwKKyAgICAgICAgICAgICAgICAgIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQorICAgIGVsc2U6CisgICAgICAgIGlmIHJlZmxlYWs6CisgICAgICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKKyAgICAgICAgaWYgZW52aXJvbm1lbnQuY2hhbmdlZDoKKyAgICAgICAgICAgIHJldHVybiBFTlZfQ0hBTkdFRCwgdGVzdF90aW1lCisgICAgICAgIHJldHVybiBQQVNTRUQsIHRlc3RfdGltZQorCisKK2RlZiBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3RuYW1lLCB2ZXJib3NlKToKKyAgICBpbXBvcnQgc2h1dGlsCisgICAgaW1wb3J0IHN0YXQKKyAgICBpbXBvcnQgZ2MKKworICAgICMgRmlyc3Qga2lsbCBhbnkgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBvcGVuIGZpbGVzIGV0Yy4KKyAgICAjIFRoaXMgY2FuIGFsc28gaXNzdWUgc29tZSBSZXNvdXJjZVdhcm5pbmdzIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBnZXQKKyAgICAjIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGZvbGxvd2luZyB0ZXN0IHJ1biwgYW5kIHBvc3NpYmx5IHByb2R1Y2UgZmFpbHVyZXMuCisgICAgZ2MuY29sbGVjdCgpCisKKyAgICAjIFRyeSB0byBjbGVhbiB1cCBqdW5rIGNvbW1vbmx5IGxlZnQgYmVoaW5kLiAgV2hpbGUgdGVzdHMgc2hvdWxkbid0IGxlYXZlCisgICAgIyBhbnkgZmlsZXMgb3IgZGlyZWN0b3JpZXMgYmVoaW5kLCB3aGVuIGEgdGVzdCBmYWlscyB0aGF0IGNhbiBiZSB0ZWRpb3VzCisgICAgIyBmb3IgaXQgdG8gYXJyYW5nZS4gIFRoZSBjb25zZXF1ZW5jZXMgY2FuIGJlIGVzcGVjaWFsbHkgbmFzdHkgb24gV2luZG93cywKKyAgICAjIHNpbmNlIGlmIGEgdGVzdCBsZWF2ZXMgYSBmaWxlIG9wZW4sIGl0IGNhbm5vdCBiZSBkZWxldGVkIGJ5IG5hbWUgKHdoaWxlCisgICAgIyB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IHRoYXQgaGVyZSBlaXRoZXIsIHdlIGNhbiBkaXNwbGF5IHRoZQorICAgICMgbmFtZSBvZiB0aGUgb2ZmZW5kaW5nIHRlc3QsIHdoaWNoIGlzIGEgcmVhbCBoZWxwKS4KKyAgICBmb3IgbmFtZSBpbiAoc3VwcG9ydC5URVNURk4sCisgICAgICAgICAgICAgICAgICJkYl9ob21lIiwKKyAgICAgICAgICAgICAgICApOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobmFtZSk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobmFtZSk6CisgICAgICAgICAgICBraW5kLCBudWtlciA9ICJkaXJlY3RvcnkiLCBzaHV0aWwucm10cmVlCisgICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6CisgICAgICAgICAgICBraW5kLCBudWtlciA9ICJmaWxlIiwgb3MudW5saW5rCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigib3MucGF0aCBzYXlzICVyIGV4aXN0cyBidXQgaXMgbmVpdGhlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IG5vciBmaWxlIiAlIG5hbWUpCisKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCIlciBsZWZ0IGJlaGluZCAlcyAlciIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGlmIHdlIGhhdmUgY2htb2QsIGZpeCBwb3NzaWJsZSBwZXJtaXNzaW9ucyBwcm9ibGVtcworICAgICAgICAgICAgIyB0aGF0IG1pZ2h0IHByZXZlbnQgY2xlYW51cAorICAgICAgICAgICAgaWYgKGhhc2F0dHIob3MsICdjaG1vZCcpKToKKyAgICAgICAgICAgICAgICBvcy5jaG1vZChuYW1lLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWEcgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgICAgICBudWtlcihuYW1lKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIG1zZzoKKyAgICAgICAgICAgIHByaW50KCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIgYW5kIGl0IGNvdWxkbid0IGJlICIKKyAgICAgICAgICAgICAgICAicmVtb3ZlZDogJXMiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lLCBtc2cpKSwgZmlsZT1zeXMuc3RkZXJyKQorCisKK2RlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgorICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSBvciBvcy5jdXJkaXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3RfbXAucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0X21wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MDRjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0X21wLnB5CkBAIC0wLDAgKzEsMjQ1IEBACitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcXVldWUKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgdHlwZXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwcmludCgiTXVsdGlwcm9jZXNzIG9wdGlvbiByZXF1aXJlcyB0aHJlYWQgc3VwcG9ydCIpCisgICAgc3lzLmV4aXQoMikKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3QgaW1wb3J0ICgKKyAgICBydW50ZXN0LCBJTlRFUlJVUFRFRCwgQ0hJTERfRVJST1IsIFBST0dSRVNTX01JTl9USU1FLAorICAgIGZvcm1hdF90ZXN0X3Jlc3VsdCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5zZXR1cCBpbXBvcnQgc2V0dXBfdGVzdHMKKworCisjIERpc3BsYXkgdGhlIHJ1bm5pbmcgdGVzdHMgaWYgbm90aGluZyBoYXBwZW5lZCBsYXN0IE4gc2Vjb25kcworUFJPR1JFU1NfVVBEQVRFID0gMzAuMCAgICMgc2Vjb25kcworCisjIElmIGludGVycnVwdGVkLCBkaXNwbGF5IHRoZSB3YWl0IHByb2dyZXNzIGV2ZXJ5IE4gc2Vjb25kcworV0FJVF9QUk9HUkVTUyA9IDIuMCAgICMgc2Vjb25kcworCisKK2RlZiBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3RuYW1lLCBucyk6CisgICAgIiIiUnVuIHRoZSBnaXZlbiB0ZXN0IGluIGEgc3VicHJvY2VzcyB3aXRoIC0tc2xhdmVhcmdzLgorCisgICAgbnMgaXMgdGhlIG9wdGlvbiBOYW1lc3BhY2UgcGFyc2VkIGZyb20gY29tbWFuZC1saW5lIGFyZ3VtZW50cy4gcmVncnRlc3QKKyAgICBpcyBpbnZva2VkIGluIGEgc3VicHJvY2VzcyB3aXRoIHRoZSAtLXNsYXZlYXJncyBhcmd1bWVudDsgd2hlbiB0aGUKKyAgICBzdWJwcm9jZXNzIGV4aXRzLCBpdHMgcmV0dXJuIGNvZGUsIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSByZXR1cm5lZCBhcyBhCisgICAgMy10dXBsZS4KKyAgICAiIiIKKyAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IFBvcGVuLCBQSVBFCisKKyAgICBuc19kaWN0ID0gdmFycyhucykKKyAgICBzbGF2ZWFyZ3MgPSAobnNfZGljdCwgdGVzdG5hbWUpCisgICAgc2xhdmVhcmdzID0ganNvbi5kdW1wcyhzbGF2ZWFyZ3MpCisKKyAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICpzdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpLAorICAgICAgICAgICAnLVgnLCAnZmF1bHRoYW5kbGVyJywKKyAgICAgICAgICAgJy1tJywgJ3Rlc3QucmVncnRlc3QnLAorICAgICAgICAgICAnLS1zbGF2ZWFyZ3MnLCBzbGF2ZWFyZ3NdCisgICAgaWYgbnMucGdvOgorICAgICAgICBjbWQgKz0gWyctLXBnbyddCisKKyAgICAjIFJ1bm5pbmcgdGhlIGNoaWxkIGZyb20gdGhlIHNhbWUgd29ya2luZyBkaXJlY3RvcnkgYXMgcmVncnRlc3QncyBvcmlnaW5hbAorICAgICMgaW52b2NhdGlvbiBlbnN1cmVzIHRoYXQgVEVNUERJUiBmb3IgdGhlIGNoaWxkIGlzIHRoZSBzYW1lIHdoZW4KKyAgICAjIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSBpcyB0cnVlLiBTZWUgaXNzdWUgMTUzMDAuCisgICAgcG9wZW4gPSBQb3BlbihjbWQsCisgICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsCisgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSwKKyAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQorICAgIHdpdGggcG9wZW46CisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQorICAgICAgICByZXRjb2RlID0gcG9wZW4ud2FpdCgpCisgICAgcmV0dXJuIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyCisKKworZGVmIHJ1bl90ZXN0c19zbGF2ZShzbGF2ZWFyZ3MpOgorICAgIG5zX2RpY3QsIHRlc3RuYW1lID0ganNvbi5sb2FkcyhzbGF2ZWFyZ3MpCisgICAgbnMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKipuc19kaWN0KQorCisgICAgc2V0dXBfdGVzdHMobnMpCisKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QobnMsIHRlc3RuYW1lKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsICcnCisgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKKyAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgIHJlc3VsdCA9IENISUxEX0VSUk9SLCBzdHIoZSkKKworICAgIHByaW50KCkgICAjIEZvcmNlIGEgbmV3bGluZSAoanVzdCBpbiBjYXNlKQorICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSwgZmx1c2g9VHJ1ZSkKKyAgICBzeXMuZXhpdCgwKQorCisKKyMgV2UgZG8gbm90IHVzZSBhIGdlbmVyYXRvciBzbyBtdWx0aXBsZSB0aHJlYWRzIGNhbiBjYWxsIG5leHQoKS4KK2NsYXNzIE11bHRpcHJvY2Vzc0l0ZXJhdG9yOgorCisgICAgIiIiQSB0aHJlYWQtc2FmZSBpdGVyYXRvciBvdmVyIHRlc3RzIGZvciBtdWx0aXByb2Nlc3MgbW9kZS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0cyk6CisgICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmxvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYudGVzdHMgPSB0ZXN0cworCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYubG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbigndGVzdHMgaW50ZXJydXB0ZWQnKQorICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi50ZXN0cykKKworCitjbGFzcyBNdWx0aXByb2Nlc3NUaHJlYWQodGhyZWFkaW5nLlRocmVhZCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBlbmRpbmcsIG91dHB1dCwgbnMpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKyAgICAgICAgc2VsZi5wZW5kaW5nID0gcGVuZGluZworICAgICAgICBzZWxmLm91dHB1dCA9IG91dHB1dAorICAgICAgICBzZWxmLm5zID0gbnMKKyAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3QgPSBOb25lCisgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IE5vbmUKKworICAgIGRlZiBfcnVudGVzdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdCA9IG5leHQoc2VsZi5wZW5kaW5nKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHNlbGYub3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudF90ZXN0ID0gdGVzdAorCisgICAgICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdCwgc2VsZi5ucykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuY3VycmVudF90ZXN0ID0gTm9uZQorCisgICAgICAgIHN0ZG91dCwgXywgcmVzdWx0ID0gc3Rkb3V0LnN0cmlwKCkucnBhcnRpdGlvbigiXG4iKQorICAgICAgICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAgICByZXN1bHQgPSAoQ0hJTERfRVJST1IsICJFeGl0IGNvZGUgJXMiICUgcmV0Y29kZSkKKyAgICAgICAgICAgIHNlbGYub3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBzZWxmLm91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICByZXN1bHQgPSBqc29uLmxvYWRzKHJlc3VsdCkKKyAgICAgICAgc2VsZi5vdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0b3AgPSBGYWxzZQorICAgICAgICAgICAgd2hpbGUgbm90IHN0b3A6CisgICAgICAgICAgICAgICAgc3RvcCA9IHNlbGYuX3J1bnRlc3QoKQorICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHNlbGYub3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCisgICAgICAgICAgICByYWlzZQorCisKK2RlZiBydW5fdGVzdHNfbXVsdGlwcm9jZXNzKHJlZ3J0ZXN0KToKKyAgICBvdXRwdXQgPSBxdWV1ZS5RdWV1ZSgpCisgICAgcGVuZGluZyA9IE11bHRpcHJvY2Vzc0l0ZXJhdG9yKHJlZ3J0ZXN0LnRlc3RzKQorICAgIHRlc3RfdGltZW91dCA9IHJlZ3J0ZXN0Lm5zLnRpbWVvdXQKKyAgICB1c2VfdGltZW91dCA9ICh0ZXN0X3RpbWVvdXQgaXMgbm90IE5vbmUpCisKKyAgICB3b3JrZXJzID0gW011bHRpcHJvY2Vzc1RocmVhZChwZW5kaW5nLCBvdXRwdXQsIHJlZ3J0ZXN0Lm5zKQorICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocmVncnRlc3QubnMudXNlX21wKV0KKyAgICBwcmludCgiUnVuIHRlc3RzIGluIHBhcmFsbGVsIHVzaW5nICVzIGNoaWxkIHByb2Nlc3NlcyIKKyAgICAgICAgICAlIGxlbih3b3JrZXJzKSkKKyAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6CisgICAgICAgIHdvcmtlci5zdGFydCgpCisKKyAgICBkZWYgZ2V0X3J1bm5pbmcod29ya2Vycyk6CisgICAgICAgIHJ1bm5pbmcgPSBbXQorICAgICAgICBmb3Igd29ya2VyIGluIHdvcmtlcnM6CisgICAgICAgICAgICBjdXJyZW50X3Rlc3QgPSB3b3JrZXIuY3VycmVudF90ZXN0CisgICAgICAgICAgICBpZiBub3QgY3VycmVudF90ZXN0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB3b3JrZXIuc3RhcnRfdGltZQorICAgICAgICAgICAgaWYgZHQgPj0gUFJPR1JFU1NfTUlOX1RJTUU6CisgICAgICAgICAgICAgICAgcnVubmluZy5hcHBlbmQoJyVzICglLjBmIHNlYyknICUgKGN1cnJlbnRfdGVzdCwgZHQpKQorICAgICAgICByZXR1cm4gcnVubmluZworCisgICAgZmluaXNoZWQgPSAwCisgICAgdGVzdF9pbmRleCA9IDEKKyAgICBnZXRfdGltZW91dCA9IG1heChQUk9HUkVTU19VUERBVEUsIFBST0dSRVNTX01JTl9USU1FKQorICAgIHRyeToKKyAgICAgICAgd2hpbGUgZmluaXNoZWQgPCByZWdydGVzdC5ucy51c2VfbXA6CisgICAgICAgICAgICBpZiB1c2VfdGltZW91dDoKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIodGVzdF90aW1lb3V0LCBleGl0PVRydWUpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdGVtID0gb3V0cHV0LmdldCh0aW1lb3V0PWdldF90aW1lb3V0KQorICAgICAgICAgICAgZXhjZXB0IHF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgICAgIHJ1bm5pbmcgPSBnZXRfcnVubmluZyh3b3JrZXJzKQorICAgICAgICAgICAgICAgIGlmIHJ1bm5pbmcgYW5kIG5vdCByZWdydGVzdC5ucy5wZ286CisgICAgICAgICAgICAgICAgICAgIHByaW50KCdydW5uaW5nOiAlcycgJSAnLCAnLmpvaW4ocnVubmluZykpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdGVzdCwgc3Rkb3V0LCBzdGRlcnIsIHJlc3VsdCA9IGl0ZW0KKyAgICAgICAgICAgIGlmIHRlc3QgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaW5pc2hlZCArPSAxCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJlZ3J0ZXN0LmFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKKworICAgICAgICAgICAgIyBEaXNwbGF5IHByb2dyZXNzCisgICAgICAgICAgICBvaywgdGVzdF90aW1lID0gcmVzdWx0CisgICAgICAgICAgICB0ZXh0ID0gZm9ybWF0X3Rlc3RfcmVzdWx0KHRlc3QsIG9rKQorICAgICAgICAgICAgaWYgKG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKQorICAgICAgICAgICAgICAgIGFuZCB0ZXN0X3RpbWUgPj0gUFJPR1JFU1NfTUlOX1RJTUUKKyAgICAgICAgICAgICAgICBhbmQgbm90IHJlZ3J0ZXN0Lm5zLnBnbyk6CisgICAgICAgICAgICAgICAgdGV4dCArPSAnICglLjBmIHNlYyknICUgdGVzdF90aW1lCisgICAgICAgICAgICBydW5uaW5nID0gZ2V0X3J1bm5pbmcod29ya2VycykKKyAgICAgICAgICAgIGlmIHJ1bm5pbmcgYW5kIG5vdCByZWdydGVzdC5ucy5wZ286CisgICAgICAgICAgICAgICAgdGV4dCArPSAnIC0tIHJ1bm5pbmc6ICVzJyAlICcsICcuam9pbihydW5uaW5nKQorICAgICAgICAgICAgcmVncnRlc3QuZGlzcGxheV9wcm9ncmVzcyh0ZXN0X2luZGV4LCB0ZXh0KQorCisgICAgICAgICAgICAjIENvcHkgc3Rkb3V0IGFuZCBzdGRlcnIgZnJvbSB0aGUgY2hpbGQgcHJvY2VzcworICAgICAgICAgICAgaWYgc3Rkb3V0OgorICAgICAgICAgICAgICAgIHByaW50KHN0ZG91dCwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHN0ZGVyciBhbmQgbm90IHJlZ3J0ZXN0Lm5zLnBnbzoKKyAgICAgICAgICAgICAgICBwcmludChzdGRlcnIsIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKworICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IElOVEVSUlVQVEVEOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0CisgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gQ0hJTERfRVJST1I6CisgICAgICAgICAgICAgICAgbXNnID0gIkNoaWxkIGVycm9yIG9uIHt9OiB7fSIuZm9ybWF0KHRlc3QsIHJlc3VsdFsxXSkKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24obXNnKQorICAgICAgICAgICAgdGVzdF9pbmRleCArPSAxCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICByZWdydGVzdC5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgcGVuZGluZy5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgcHJpbnQoKQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgICAjIElmIHRlc3RzIGFyZSBpbnRlcnJ1cHRlZCwgd2FpdCB1bnRpbCB0ZXN0cyBjb21wbGV0ZQorICAgIHdhaXRfc3RhcnQgPSB0aW1lLm1vbm90b25pYygpCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgcnVubmluZyA9IFt3b3JrZXIuY3VycmVudF90ZXN0IGZvciB3b3JrZXIgaW4gd29ya2Vyc10KKyAgICAgICAgcnVubmluZyA9IGxpc3QoZmlsdGVyKGJvb2wsIHJ1bm5pbmcpKQorICAgICAgICBpZiBub3QgcnVubmluZzoKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgZHQgPSB0aW1lLm1vbm90b25pYygpIC0gd2FpdF9zdGFydAorICAgICAgICBsaW5lID0gIldhaXRpbmcgZm9yICVzICglcyB0ZXN0cykiICUgKCcsICcuam9pbihydW5uaW5nKSwgbGVuKHJ1bm5pbmcpKQorICAgICAgICBpZiBkdCA+PSBXQUlUX1BST0dSRVNTOgorICAgICAgICAgICAgbGluZSA9ICIlcyBzaW5jZSAlLjBmIHNlYyIgJSAobGluZSwgZHQpCisgICAgICAgIHByaW50KGxpbmUpCisgICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKKyAgICAgICAgICAgIHdvcmtlci5qb2luKFdBSVRfUFJPR1JFU1MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9zYXZlX2Vudi5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NhdmVfZW52LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2YWQzYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zYXZlX2Vudi5weQpAQCAtMCwwICsxLDI4NSBAQAoraW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgbG9jYWxlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgd2FybmluZ3MKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcsIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgbXVsdGlwcm9jZXNzaW5nID0gTm9uZQorCisKKyMgVW5pdCB0ZXN0cyBhcmUgc3VwcG9zZWQgdG8gbGVhdmUgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCB1bmNoYW5nZWQKKyMgb25jZSB0aGV5IGNvbXBsZXRlLiAgQnV0IHNvbWV0aW1lcyB0ZXN0cyBoYXZlIGJ1Z3MsIGVzcGVjaWFsbHkgd2hlbgorIyB0ZXN0cyBmYWlsLCBhbmQgdGhlIGNoYW5nZXMgdG8gZW52aXJvbm1lbnQgZ28gb24gdG8gbWVzcyB1cCBvdGhlcgorIyB0ZXN0cy4gIFRoaXMgY2FuIGNhdXNlIGlzc3VlcyB3aXRoIGJ1aWxkYm90IHN0YWJpbGl0eSwgc2luY2UgdGVzdHMKKyMgYXJlIHJ1biBpbiByYW5kb20gb3JkZXIgYW5kIHNvIHByb2JsZW1zIG1heSBhcHBlYXIgdG8gY29tZSBhbmQgZ28uCisjIFRoZXJlIGFyZSBhIGZldyB0aGluZ3Mgd2UgY2FuIHNhdmUgYW5kIHJlc3RvcmUgdG8gbWl0aWdhdGUgdGhpcywgYW5kCisjIHRoZSBmb2xsb3dpbmcgY29udGV4dCBtYW5hZ2VyIGhhbmRsZXMgdGhpcyB0YXNrLgorCitjbGFzcyBzYXZlZF90ZXN0X2Vudmlyb25tZW50OgorICAgICIiIlNhdmUgYml0cyBvZiB0aGUgdGVzdCBlbnZpcm9ubWVudCBhbmQgcmVzdG9yZSB0aGVtIGF0IGJsb2NrIGV4aXQuCisKKyAgICAgICAgd2l0aCBzYXZlZF90ZXN0X2Vudmlyb25tZW50KHRlc3RuYW1lLCB2ZXJib3NlLCBxdWlldCk6CisgICAgICAgICAgICAjc3R1ZmYKKworICAgIFVubGVzcyBxdWlldCBpcyBUcnVlLCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBzdGRlcnIgaWYgYW55IG9mCisgICAgdGhlIHNhdmVkIGl0ZW1zIHdhcyBjaGFuZ2VkIGJ5IHRoZSB0ZXN0LiAgVGhlIGF0dHJpYnV0ZSAnY2hhbmdlZCcKKyAgICBpcyBpbml0aWFsbHkgRmFsc2UsIGJ1dCBpcyBzZXQgdG8gVHJ1ZSBpZiBhIGNoYW5nZSBpcyBkZXRlY3RlZC4KKworICAgIElmIHZlcmJvc2UgaXMgbW9yZSB0aGFuIDEsIHRoZSBiZWZvcmUgYW5kIGFmdGVyIHN0YXRlIG9mIGNoYW5nZWQKKyAgICBpdGVtcyBpcyBhbHNvIHByaW50ZWQuCisgICAgIiIiCisKKyAgICBjaGFuZ2VkID0gRmFsc2UKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0bmFtZSwgdmVyYm9zZT0wLCBxdWlldD1GYWxzZSwgKiwgcGdvPUZhbHNlKToKKyAgICAgICAgc2VsZi50ZXN0bmFtZSA9IHRlc3RuYW1lCisgICAgICAgIHNlbGYudmVyYm9zZSA9IHZlcmJvc2UKKyAgICAgICAgc2VsZi5xdWlldCA9IHF1aWV0CisgICAgICAgIHNlbGYucGdvID0gcGdvCisKKyAgICAjIFRvIGFkZCB0aGluZ3MgdG8gc2F2ZSBhbmQgcmVzdG9yZSwgYWRkIGEgbmFtZSBYWFggdG8gdGhlIHJlc291cmNlcyBsaXN0CisgICAgIyBhbmQgYWRkIGNvcnJlc3BvbmRpbmcgZ2V0X1hYWC9yZXN0b3JlX1hYWCBmdW5jdGlvbnMuICBnZXRfWFhYIHNob3VsZAorICAgICMgcmV0dXJuIHRoZSB2YWx1ZSB0byBiZSBzYXZlZCBhbmQgY29tcGFyZWQgYWdhaW5zdCBhIHNlY29uZCBjYWxsIHRvIHRoZQorICAgICMgZ2V0IGZ1bmN0aW9uIHdoZW4gdGVzdCBleGVjdXRpb24gY29tcGxldGVzLiAgcmVzdG9yZV9YWFggc2hvdWxkIGFjY2VwdAorICAgICMgdGhlIHNhdmVkIHZhbHVlIGFuZCByZXN0b3JlIHRoZSByZXNvdXJjZSB1c2luZyBpdC4gIEl0IHdpbGwgYmUgY2FsbGVkIGlmCisgICAgIyBhbmQgb25seSBpZiBhIGNoYW5nZSBpbiB0aGUgdmFsdWUgaXMgZGV0ZWN0ZWQuCisgICAgIworICAgICMgTm90ZTogWFhYIHdpbGwgaGF2ZSBhbnkgJy4nIHJlcGxhY2VkIHdpdGggJ18nIGNoYXJhY3RlcnMgd2hlbiBkZXRlcm1pbmluZworICAgICMgdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kIG5hbWVzLgorCisgICAgcmVzb3VyY2VzID0gKCdzeXMuYXJndicsICdjd2QnLCAnc3lzLnN0ZGluJywgJ3N5cy5zdGRvdXQnLCAnc3lzLnN0ZGVycicsCisgICAgICAgICAgICAgICAgICdvcy5lbnZpcm9uJywgJ3N5cy5wYXRoJywgJ3N5cy5wYXRoX2hvb2tzJywgJ19faW1wb3J0X18nLAorICAgICAgICAgICAgICAgICAnd2FybmluZ3MuZmlsdGVycycsICdhc3luY29yZS5zb2NrZXRfbWFwJywKKyAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywgJ3N5cy5nZXR0cmFjZScsCisgICAgICAgICAgICAgICAgICdzeXMud2Fybm9wdGlvbnMnLAorICAgICAgICAgICAgICAgICAjIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkgbWF5IHJlbGVhc2UgcmVmCisgICAgICAgICAgICAgICAgICMgdG8gYSB0aHJlYWQsIHNvIGNoZWNrIHByb2Nlc3NlcyBmaXJzdC4KKyAgICAgICAgICAgICAgICAgJ211bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZycsICd0aHJlYWRpbmcuX2RhbmdsaW5nJywKKyAgICAgICAgICAgICAgICAgJ3N5c2NvbmZpZy5fQ09ORklHX1ZBUlMnLCAnc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMnLAorICAgICAgICAgICAgICAgICAnZmlsZXMnLCAnbG9jYWxlJywgJ3dhcm5pbmdzLnNob3d3YXJuaW5nJywKKyAgICAgICAgICAgICAgICAgJ3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMnLCAnc2h1dGlsX3VucGFja19mb3JtYXRzJywKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgZ2V0X3N5c19hcmd2KHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLmFyZ3YpLCBzeXMuYXJndiwgc3lzLmFyZ3ZbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfYXJndihzZWxmLCBzYXZlZF9hcmd2KToKKyAgICAgICAgc3lzLmFyZ3YgPSBzYXZlZF9hcmd2WzFdCisgICAgICAgIHN5cy5hcmd2WzpdID0gc2F2ZWRfYXJndlsyXQorCisgICAgZGVmIGdldF9jd2Qoc2VsZik6CisgICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQorICAgIGRlZiByZXN0b3JlX2N3ZChzZWxmLCBzYXZlZF9jd2QpOgorICAgICAgICBvcy5jaGRpcihzYXZlZF9jd2QpCisKKyAgICBkZWYgZ2V0X3N5c19zdGRvdXQoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuc3Rkb3V0CisgICAgZGVmIHJlc3RvcmVfc3lzX3N0ZG91dChzZWxmLCBzYXZlZF9zdGRvdXQpOgorICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZWRfc3Rkb3V0CisKKyAgICBkZWYgZ2V0X3N5c19zdGRlcnIoc2VsZik6CisgICAgICAgIHJldHVybiBzeXMuc3RkZXJyCisgICAgZGVmIHJlc3RvcmVfc3lzX3N0ZGVycihzZWxmLCBzYXZlZF9zdGRlcnIpOgorICAgICAgICBzeXMuc3RkZXJyID0gc2F2ZWRfc3RkZXJyCisKKyAgICBkZWYgZ2V0X3N5c19zdGRpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5zdGRpbgorICAgIGRlZiByZXN0b3JlX3N5c19zdGRpbihzZWxmLCBzYXZlZF9zdGRpbik6CisgICAgICAgIHN5cy5zdGRpbiA9IHNhdmVkX3N0ZGluCisKKyAgICBkZWYgZ2V0X29zX2Vudmlyb24oc2VsZik6CisgICAgICAgIHJldHVybiBpZChvcy5lbnZpcm9uKSwgb3MuZW52aXJvbiwgZGljdChvcy5lbnZpcm9uKQorICAgIGRlZiByZXN0b3JlX29zX2Vudmlyb24oc2VsZiwgc2F2ZWRfZW52aXJvbik6CisgICAgICAgIG9zLmVudmlyb24gPSBzYXZlZF9lbnZpcm9uWzFdCisgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQorICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShzYXZlZF9lbnZpcm9uWzJdKQorCisgICAgZGVmIGdldF9zeXNfcGF0aChzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy5wYXRoKSwgc3lzLnBhdGgsIHN5cy5wYXRoWzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX3BhdGgoc2VsZiwgc2F2ZWRfcGF0aCk6CisgICAgICAgIHN5cy5wYXRoID0gc2F2ZWRfcGF0aFsxXQorICAgICAgICBzeXMucGF0aFs6XSA9IHNhdmVkX3BhdGhbMl0KKworICAgIGRlZiBnZXRfc3lzX3BhdGhfaG9va3Moc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMucGF0aF9ob29rcyksIHN5cy5wYXRoX2hvb2tzLCBzeXMucGF0aF9ob29rc1s6XQorICAgIGRlZiByZXN0b3JlX3N5c19wYXRoX2hvb2tzKHNlbGYsIHNhdmVkX2hvb2tzKToKKyAgICAgICAgc3lzLnBhdGhfaG9va3MgPSBzYXZlZF9ob29rc1sxXQorICAgICAgICBzeXMucGF0aF9ob29rc1s6XSA9IHNhdmVkX2hvb2tzWzJdCisKKyAgICBkZWYgZ2V0X3N5c19nZXR0cmFjZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5nZXR0cmFjZSgpCisgICAgZGVmIHJlc3RvcmVfc3lzX2dldHRyYWNlKHNlbGYsIHRyYWNlX2Z4bik6CisgICAgICAgIHN5cy5zZXR0cmFjZSh0cmFjZV9meG4pCisKKyAgICBkZWYgZ2V0X19faW1wb3J0X18oc2VsZik6CisgICAgICAgIHJldHVybiBidWlsdGlucy5fX2ltcG9ydF9fCisgICAgZGVmIHJlc3RvcmVfX19pbXBvcnRfXyhzZWxmLCBpbXBvcnRfKToKKyAgICAgICAgYnVpbHRpbnMuX19pbXBvcnRfXyA9IGltcG9ydF8KKworICAgIGRlZiBnZXRfd2FybmluZ3NfZmlsdGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHdhcm5pbmdzLmZpbHRlcnMpLCB3YXJuaW5ncy5maWx0ZXJzLCB3YXJuaW5ncy5maWx0ZXJzWzpdCisgICAgZGVmIHJlc3RvcmVfd2FybmluZ3NfZmlsdGVycyhzZWxmLCBzYXZlZF9maWx0ZXJzKToKKyAgICAgICAgd2FybmluZ3MuZmlsdGVycyA9IHNhdmVkX2ZpbHRlcnNbMV0KKyAgICAgICAgd2FybmluZ3MuZmlsdGVyc1s6XSA9IHNhdmVkX2ZpbHRlcnNbMl0KKworICAgIGRlZiBnZXRfYXN5bmNvcmVfc29ja2V0X21hcChzZWxmKToKKyAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKKyAgICAgICAgIyBYWFggTWFraW5nIGEgY29weSBrZWVwcyBvYmplY3RzIGFsaXZlIHVudGlsIF9fZXhpdF9fIGdldHMgY2FsbGVkLgorICAgICAgICByZXR1cm4gYXN5bmNvcmUgYW5kIGFzeW5jb3JlLnNvY2tldF9tYXAuY29weSgpIG9yIHt9CisgICAgZGVmIHJlc3RvcmVfYXN5bmNvcmVfc29ja2V0X21hcChzZWxmLCBzYXZlZF9tYXApOgorICAgICAgICBhc3luY29yZSA9IHN5cy5tb2R1bGVzLmdldCgnYXN5bmNvcmUnKQorICAgICAgICBpZiBhc3luY29yZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbChpZ25vcmVfYWxsPVRydWUpCisgICAgICAgICAgICBhc3luY29yZS5zb2NrZXRfbWFwLnVwZGF0ZShzYXZlZF9tYXApCisKKyAgICBkZWYgZ2V0X3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMoc2VsZik6CisgICAgICAgICMgd2UgY291bGQgY2FsbCBnZXRfYXJjaGl2ZXNfZm9ybWF0cygpIGJ1dCB0aGF0IG9ubHkgcmV0dXJucyB0aGUKKyAgICAgICAgIyByZWdpc3RyeSBrZXlzOyB3ZSB3YW50IHRvIGNoZWNrIHRoZSB2YWx1ZXMgdG9vICh0aGUgZnVuY3Rpb25zIHRoYXQKKyAgICAgICAgIyBhcmUgcmVnaXN0ZXJlZCkKKyAgICAgICAgcmV0dXJuIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLCBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMgPSBzYXZlZFswXQorICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy5jbGVhcigpCisgICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKKworICAgIGRlZiBnZXRfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2h1dGlsLl9VTlBBQ0tfRk9STUFUUywgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV9zaHV0aWxfdW5wYWNrX2Zvcm1hdHMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTID0gc2F2ZWRbMF0KKyAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy5jbGVhcigpCisgICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMudXBkYXRlKHNhdmVkWzFdKQorCisgICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgIyBfaGFuZGxlcnMgaXMgYSBXZWFrVmFsdWVEaWN0aW9uYXJ5CisgICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVycyksIGxvZ2dpbmcuX2hhbmRsZXJzLCBsb2dnaW5nLl9oYW5kbGVycy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV9sb2dnaW5nX19oYW5kbGVycyhzZWxmLCBzYXZlZF9oYW5kbGVycyk6CisgICAgICAgICMgQ2FuJ3QgZWFzaWx5IHJldmVydCB0aGUgbG9nZ2luZyBzdGF0ZQorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ2V0X2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYpOgorICAgICAgICAjIF9oYW5kbGVyTGlzdCBpcyBhIGxpc3Qgb2Ygd2Vha3JlZnMgdG8gaGFuZGxlcnMKKyAgICAgICAgcmV0dXJuIGlkKGxvZ2dpbmcuX2hhbmRsZXJMaXN0KSwgbG9nZ2luZy5faGFuZGxlckxpc3QsIGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdCisgICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlckxpc3Qoc2VsZiwgc2F2ZWRfaGFuZGxlckxpc3QpOgorICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKKyAgICAgICAgcGFzcworCisgICAgZGVmIGdldF9zeXNfd2Fybm9wdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMud2Fybm9wdGlvbnMpLCBzeXMud2Fybm9wdGlvbnMsIHN5cy53YXJub3B0aW9uc1s6XQorICAgIGRlZiByZXN0b3JlX3N5c193YXJub3B0aW9ucyhzZWxmLCBzYXZlZF9vcHRpb25zKToKKyAgICAgICAgc3lzLndhcm5vcHRpb25zID0gc2F2ZWRfb3B0aW9uc1sxXQorICAgICAgICBzeXMud2Fybm9wdGlvbnNbOl0gPSBzYXZlZF9vcHRpb25zWzJdCisKKyAgICAjIENvbnRyb2xsaW5nIGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gVGhyZWFkIG9iamVjdHMgY2FuIG1ha2UgaXQgZWFzaWVyCisgICAgIyB0byB0cmFjayByZWZlcmVuY2UgbGVha3MuCisgICAgZGVmIGdldF90aHJlYWRpbmdfX2RhbmdsaW5nKHNlbGYpOgorICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKKyAgICAgICAgcmV0dXJuIHRocmVhZGluZy5fZGFuZ2xpbmcuY29weSgpCisgICAgZGVmIHJlc3RvcmVfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmLCBzYXZlZCk6CisgICAgICAgIGlmIG5vdCB0aHJlYWRpbmc6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdGhyZWFkaW5nLl9kYW5nbGluZy5jbGVhcigpCisgICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQorCisgICAgIyBTYW1lIGZvciBQcm9jZXNzIG9iamVjdHMKKyAgICBkZWYgZ2V0X211bHRpcHJvY2Vzc2luZ19wcm9jZXNzX19kYW5nbGluZyhzZWxmKToKKyAgICAgICAgaWYgbm90IG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgVW5qb2luZWQgcHJvY2VzcyBvYmplY3RzIGNhbiBzdXJ2aXZlIGFmdGVyIHByb2Nlc3MgZXhpdHMKKyAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2NsZWFudXAoKQorICAgICAgICAjIFRoaXMgY29waWVzIHRoZSB3ZWFrcmVmcyB3aXRob3V0IG1ha2luZyBhbnkgc3Ryb25nIHJlZmVyZW5jZQorICAgICAgICByZXR1cm4gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX211bHRpcHJvY2Vzc2luZ19wcm9jZXNzX19kYW5nbGluZyhzZWxmLCBzYXZlZCk6CisgICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLmNsZWFyKCkKKyAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKKworICAgIGRlZiBnZXRfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmKToKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGRpY3QgaXMgaW5pdGlhbGl6ZWQKKyAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdwcmVmaXgnKQorICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpLCBzeXNjb25maWcuX0NPTkZJR19WQVJTLAorICAgICAgICAgICAgICAgIGRpY3Qoc3lzY29uZmlnLl9DT05GSUdfVkFSUykpCisgICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzYXZlZFsxXQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy51cGRhdGUoc2F2ZWRbMl0pCisKKyAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYpOgorICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTKSwgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMsCisgICAgICAgICAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY29weSgpKQorICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMgPSBzYXZlZFsxXQorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLnVwZGF0ZShzYXZlZFsyXSkKKworICAgIGRlZiBnZXRfZmlsZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzb3J0ZWQoZm4gKyAoJy8nIGlmIG9zLnBhdGguaXNkaXIoZm4pIGVsc2UgJycpCisgICAgICAgICAgICAgICAgICAgICAgZm9yIGZuIGluIG9zLmxpc3RkaXIoKSkKKyAgICBkZWYgcmVzdG9yZV9maWxlcyhzZWxmLCBzYXZlZF92YWx1ZSk6CisgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgaWYgZm4gbm90IGluIHNhdmVkX3ZhbHVlIGFuZCAoZm4gKyAnLycpIG5vdCBpbiBzYXZlZF92YWx1ZToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhmbikKKyAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2Rpcihmbik6CisgICAgICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoZm4pCisKKyAgICBfbGMgPSBbZ2V0YXR0cihsb2NhbGUsIGxjKSBmb3IgbGMgaW4gZGlyKGxvY2FsZSkKKyAgICAgICAgICAgaWYgbGMuc3RhcnRzd2l0aCgnTENfJyldCisgICAgZGVmIGdldF9sb2NhbGUoc2VsZik6CisgICAgICAgIHBhaXJpbmdzID0gW10KKyAgICAgICAgZm9yIGxjIGluIHNlbGYuX2xjOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHBhaXJpbmdzLmFwcGVuZCgobGMsIGxvY2FsZS5zZXRsb2NhbGUobGMsIE5vbmUpKSkKKyAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICByZXR1cm4gcGFpcmluZ3MKKyAgICBkZWYgcmVzdG9yZV9sb2NhbGUoc2VsZiwgc2F2ZWQpOgorICAgICAgICBmb3IgbGMsIHNldHRpbmcgaW4gc2F2ZWQ6CisgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxjLCBzZXR0aW5nKQorCisgICAgZGVmIGdldF93YXJuaW5nc19zaG93d2FybmluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHdhcm5pbmdzLnNob3d3YXJuaW5nCisgICAgZGVmIHJlc3RvcmVfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZiwgZnhuKToKKyAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcgPSBmeG4KKworICAgIGRlZiByZXNvdXJjZV9pbmZvKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLnJlc291cmNlczoKKyAgICAgICAgICAgIG1ldGhvZF9zdWZmaXggPSBuYW1lLnJlcGxhY2UoJy4nLCAnXycpCisgICAgICAgICAgICBnZXRfbmFtZSA9ICdnZXRfJyArIG1ldGhvZF9zdWZmaXgKKyAgICAgICAgICAgIHJlc3RvcmVfbmFtZSA9ICdyZXN0b3JlXycgKyBtZXRob2Rfc3VmZml4CisgICAgICAgICAgICB5aWVsZCBuYW1lLCBnZXRhdHRyKHNlbGYsIGdldF9uYW1lKSwgZ2V0YXR0cihzZWxmLCByZXN0b3JlX25hbWUpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLnNhdmVkX3ZhbHVlcyA9IGRpY3QoKG5hbWUsIGdldCgpKSBmb3IgbmFtZSwgZ2V0LCByZXN0b3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLnJlc291cmNlX2luZm8oKSkKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKKyAgICAgICAgc2F2ZWRfdmFsdWVzID0gc2VsZi5zYXZlZF92YWx1ZXMKKyAgICAgICAgZGVsIHNlbGYuc2F2ZWRfdmFsdWVzCisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpICAjIFNvbWUgcmVzb3VyY2VzIHVzZSB3ZWFrIHJlZmVyZW5jZXMKKyAgICAgICAgZm9yIG5hbWUsIGdldCwgcmVzdG9yZSBpbiBzZWxmLnJlc291cmNlX2luZm8oKToKKyAgICAgICAgICAgIGN1cnJlbnQgPSBnZXQoKQorICAgICAgICAgICAgb3JpZ2luYWwgPSBzYXZlZF92YWx1ZXMucG9wKG5hbWUpCisgICAgICAgICAgICAjIENoZWNrIGZvciBjaGFuZ2VzIHRvIHRoZSByZXNvdXJjZSdzIHZhbHVlCisgICAgICAgICAgICBpZiBjdXJyZW50ICE9IG9yaWdpbmFsOgorICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlZCA9IFRydWUKKyAgICAgICAgICAgICAgICByZXN0b3JlKG9yaWdpbmFsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnF1aWV0IGFuZCBub3Qgc2VsZi5wZ286CisgICAgICAgICAgICAgICAgICAgIHByaW50KGYiV2FybmluZyAtLSB7bmFtZX0gd2FzIG1vZGlmaWVkIGJ5IHtzZWxmLnRlc3RuYW1lfSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGYiICBCZWZvcmU6IHtvcmlnaW5hbH1cbiAgQWZ0ZXI6ICB7Y3VycmVudH0gIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVyciwgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9zZXR1cC5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NldHVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMjQ1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9zZXR1cC5weQpAQCAtMCwwICsxLDEyMSBAQAoraW1wb3J0IGF0ZXhpdAoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAordHJ5OgorICAgIGltcG9ydCBnYworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGdjID0gTm9uZQorCitmcm9tIHRlc3QubGlicmVncnRlc3QucmVmbGVhayBpbXBvcnQgd2FybV9jYWNoZXMKKworCitkZWYgc2V0dXBfdGVzdHMobnMpOgorICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMgKGUuZy4gc2VnZmF1bHQpCisgICAgZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1UcnVlKQorCisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIFNJR0FMUk0gb3IgU0lHVVNSMSBzaWduYWwKKyAgICBzaWduYWxzID0gW10KKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR0FMUk0nKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR0FMUk0pCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdVU1IxKQorICAgIGZvciBzaWdudW0gaW4gc2lnbmFsczoKKyAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgY2hhaW49VHJ1ZSkKKworICAgIHJlcGxhY2Vfc3Rkb3V0KCkKKyAgICBzdXBwb3J0LnJlY29yZF9vcmlnaW5hbF9zdGRvdXQoc3lzLnN0ZG91dCkKKworICAgIGlmIG5zLnRlc3RkaXI6CisgICAgICAgICMgUHJlcGVuZCB0ZXN0IGRpcmVjdG9yeSB0byBzeXMucGF0aCwgc28gcnVudGVzdCgpIHdpbGwgYmUgYWJsZQorICAgICAgICAjIHRvIGxvY2F0ZSB0ZXN0cworICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5hYnNwYXRoKG5zLnRlc3RkaXIpKQorCisgICAgIyBTb21lIHRpbWVzIF9fcGF0aF9fIGFuZCBfX2ZpbGVfXyBhcmUgbm90IGFic29sdXRlIChlLmcuIHdoaWxlIHJ1bm5pbmcgZnJvbQorICAgICMgTGliLykgYW5kLCBpZiB3ZSBjaGFuZ2UgdGhlIENXRCB0byBydW4gdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpciwgc29tZQorICAgICMgaW1wb3J0cyBtaWdodCBmYWlsLiAgVGhpcyBhZmZlY3RzIG9ubHkgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYmVmb3JlIG9zLmNoZGlyKCkuCisgICAgIyBUaGVzZSBtb2R1bGVzIGFyZSBzZWFyY2hlZCBmaXJzdCBpbiBzeXMucGF0aFswXSAoc28gJycgLS0gdGhlIENXRCkgYW5kIGlmCisgICAgIyB0aGV5IGFyZSBmb3VuZCBpbiB0aGUgQ1dEIHRoZWlyIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIHJlbGF0aXZlICh0aGlzCisgICAgIyBoYXBwZW5zIGJlZm9yZSB0aGUgY2hkaXIpLiAgQWxsIHRoZSBtb2R1bGVzIGltcG9ydGVkIGFmdGVyIHRoZSBjaGRpciwgYXJlCisgICAgIyBub3QgZm91bmQgaW4gdGhlIENXRCwgYW5kIHNpbmNlIHRoZSBvdGhlciBwYXRocyBpbiBzeXMucGF0aFsxOl0gYXJlIGFic29sdXRlCisgICAgIyAoc2l0ZS5weSBhYnNvbHV0aXplIHRoZW0pLCB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgYWJzb2x1dGUgdG9vLgorICAgICMgVGhlcmVmb3JlIGl0IGlzIG5lY2Vzc2FyeSB0byBhYnNvbHV0aXplIG1hbnVhbGx5IHRoZSBfX2ZpbGVfXyBhbmQgX19wYXRoX18gb2YKKyAgICAjIHRoZSBwYWNrYWdlcyB0byBwcmV2ZW50IGxhdGVyIGltcG9ydHMgdG8gZmFpbCB3aGVuIHRoZSBDV0QgaXMgZGlmZmVyZW50LgorICAgIGZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6CisgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgICAgIGZvciBpbmRleCwgcGF0aCBpbiBlbnVtZXJhdGUobW9kdWxlLl9fcGF0aF9fKToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19wYXRoX19baW5kZXhdID0gb3MucGF0aC5hYnNwYXRoKHBhdGgpCisgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKKyAgICAgICAgICAgIG1vZHVsZS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtb2R1bGUuX19maWxlX18pCisKKyAgICAjIE1hY09TWCAoYS5rLmEuIERhcndpbikgaGFzIGEgZGVmYXVsdCBzdGFjayBzaXplIHRoYXQgaXMgdG9vIHNtYWxsCisgICAgIyBmb3IgZGVlcGx5IHJlY3Vyc2l2ZSByZWd1bGFyIGV4cHJlc3Npb25zLiAgV2Ugc2VlIHRoaXMgYXMgY3Jhc2hlcyBpbgorICAgICMgdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdoZW4gcnVubmluZyB0ZXN0X3JlLnB5IGFuZCB0ZXN0X3NyZS5weS4gIFRoZQorICAgICMgZml4IGlzIHRvIHNldCB0aGUgc3RhY2sgbGltaXQgdG8gMjA0OC4KKyAgICAjIFRoaXMgYXBwcm9hY2ggbWF5IGFsc28gYmUgdXNlZnVsIGZvciBvdGhlciBVbml4eSBwbGF0Zm9ybXMgdGhhdAorICAgICMgc3VmZmVyIGZyb20gc21hbGwgZGVmYXVsdCBzdGFjayBsaW1pdHMuCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgcmVzb3VyY2UKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc29mdCwgaGFyZCA9IHJlc291cmNlLmdldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0spCisgICAgICAgICAgICBuZXdzb2Z0ID0gbWluKGhhcmQsIG1heChzb2Z0LCAxMDI0KjIwNDgpKQorICAgICAgICAgICAgcmVzb3VyY2Uuc2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9TVEFDSywgKG5ld3NvZnQsIGhhcmQpKQorCisgICAgaWYgbnMuaHVudHJsZWFrczoKKyAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCisKKyAgICAgICAgIyBBdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZHVlIHRvIHZhcmlvdXMgY2FjaGVzCisgICAgICAgICMgZmlsbGluZyBzbG93bHkgd2l0aCByYW5kb20gZGF0YToKKyAgICAgICAgd2FybV9jYWNoZXMoKQorCisgICAgaWYgbnMubWVtbGltaXQgaXMgbm90IE5vbmU6CisgICAgICAgIHN1cHBvcnQuc2V0X21lbWxpbWl0KG5zLm1lbWxpbWl0KQorCisgICAgaWYgbnMudGhyZXNob2xkIGlzIG5vdCBOb25lOgorICAgICAgICBnYy5zZXRfdGhyZXNob2xkKG5zLnRocmVzaG9sZCkKKworICAgIHRyeToKKyAgICAgICAgaW1wb3J0IG1zdmNydAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIG1zdmNydC5TZXRFcnJvck1vZGUobXN2Y3J0LlNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9HUEZBVUxURVJST1JCT1h8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT09QRU5GSUxFRVJST1JCT1gpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgcmVsZWFzZSBidWlsZAorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIG0gaW4gW21zdmNydC5DUlRfV0FSTiwgbXN2Y3J0LkNSVF9FUlJPUiwgbXN2Y3J0LkNSVF9BU1NFUlRdOgorICAgICAgICAgICAgICAgIGlmIG5zLnZlcmJvc2UgYW5kIG5zLnZlcmJvc2UgPj0gMjoKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgbXN2Y3J0LkNSVERCR19NT0RFX0ZJTEUpCisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKG0sIG1zdmNydC5DUlREQkdfRklMRV9TVERFUlIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgMCkKKworICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IG5zLnVzZV9yZXNvdXJjZXMKKworCitkZWYgcmVwbGFjZV9zdGRvdXQoKToKKyAgICAiIiJTZXQgc3Rkb3V0IGVuY29kZXIgZXJyb3IgaGFuZGxlciB0byBiYWNrc2xhc2hyZXBsYWNlIChhcyBzdGRlcnIgZXJyb3IKKyAgICBoYW5kbGVyKSB0byBhdm9pZCBVbmljb2RlRW5jb2RlRXJyb3Igd2hlbiBwcmludGluZyBhIHRyYWNlYmFjayIiIgorICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICBzeXMuc3Rkb3V0ID0gb3BlbihzdGRvdXQuZmlsZW5vKCksICd3JywKKyAgICAgICAgZW5jb2Rpbmc9c3Rkb3V0LmVuY29kaW5nLAorICAgICAgICBlcnJvcnM9ImJhY2tzbGFzaHJlcGxhY2UiLAorICAgICAgICBjbG9zZWZkPUZhbHNlLAorICAgICAgICBuZXdsaW5lPSdcbicpCisKKyAgICBkZWYgcmVzdG9yZV9zdGRvdXQoKToKKyAgICAgICAgc3lzLnN0ZG91dC5jbG9zZSgpCisgICAgICAgIHN5cy5zdGRvdXQgPSBzdGRvdXQKKyAgICBhdGV4aXQucmVnaXN0ZXIocmVzdG9yZV9zdGRvdXQpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5IGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQppbmRleCBmMjBmZGMwLi4yNmU5MzY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKQEAgLTI2Niw5ICsyNjYsMjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBsaXN0KCJzcGFtZWdncyIpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYS5leHRlbmQsIE5vbmUpCi0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhLmV4dGVuZCkKIAorICAgICAgICAjIG92ZXJmbG93IHRlc3QuIGlzc3VlMTYyMQorICAgICAgICBjbGFzcyBDdXN0b21JdGVyOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgZGVmIF9fbGVuZ3RoX2hpbnRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3lzLm1heHNpemUKKyAgICAgICAgYSA9IHNlbGYudHlwZTJ0ZXN0KFsxLDIsMyw0XSkKKyAgICAgICAgYS5leHRlbmQoQ3VzdG9tSXRlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIFsxLDIsMyw0XSkKKworCiAgICAgZGVmIHRlc3RfaW5zZXJ0KHNlbGYpOgogICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzAsIDEsIDJdKQogICAgICAgICBhLmluc2VydCgwLCAtMikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CmluZGV4IGE2NGFhMTguLmE2Y2IzYjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQpAQCAtNyw2ICs3LDcgQEAKIGZyb20gX3RocmVhZCBpbXBvcnQgc3RhcnRfbmV3X3RocmVhZCwgVElNRU9VVF9NQVgKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTE5OCw2ICsxOTksMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXN1bHRzWzBdKQogICAgICAgICBzZWxmLmFzc2VydFRpbWVvdXQocmVzdWx0c1sxXSwgMC41KQogCisgICAgZGVmIHRlc3Rfd2Vha3JlZl9leGlzdHMoc2VsZik6CisgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKKyAgICAgICAgcmVmID0gd2Vha3JlZi5yZWYobG9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmVmKCkpCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmX2RlbGV0ZWQoc2VsZik6CisgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKKyAgICAgICAgcmVmID0gd2Vha3JlZi5yZWYobG9jaykKKyAgICAgICAgZGVsIGxvY2sKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVmKCkpCisKIAogY2xhc3MgTG9ja1Rlc3RzKEJhc2VMb2NrVGVzdHMpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbWFrZV9zc2xfY2VydHMucHkgYi9MaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weQppbmRleCBhMWYyOThkLi40ZDlmMDFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weQorKysgYi9MaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weQpAQCAtMyw3ICszLDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgKgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKaW5kZXggNzkyMmI1NC4uNWM4MzM2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQpAQCAtMTAwMCw3ICsxMDAwLDcgQEAKICAgICAgICAgICAgIGInMCcsICAgICAgICAgICAgICAgICAgICAgICAjIFBPUAogICAgICAgICAgICAgYicxJywgICAgICAgICAgICAgICAgICAgICAgICMgUE9QX01BUksKICAgICAgICAgICAgIGInMicsICAgICAgICAgICAgICAgICAgICAgICAjIERVUAotICAgICAgICAgICAgIyBiJygyJywgICAgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgZG9lc24ndCByYWlzZQorICAgICAgICAgICAgYicoMicsCiAgICAgICAgICAgICBiJ1InLCAgICAgICAgICAgICAgICAgICAgICAgIyBSRURVQ0UKICAgICAgICAgICAgIGInKVInLAogICAgICAgICAgICAgYidhJywgICAgICAgICAgICAgICAgICAgICAgICMgQVBQRU5ECkBAIC0xMDA5LDcgKzEwMDksNyBAQAogICAgICAgICAgICAgYidOYicsCiAgICAgICAgICAgICBiJ2QnLCAgICAgICAgICAgICAgICAgICAgICAgIyBESUNUCiAgICAgICAgICAgICBiJ2UnLCAgICAgICAgICAgICAgICAgICAgICAgIyBBUFBFTkRTCi0gICAgICAgICAgICAjIGInKGUnLCAgICAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciByYWlzZXMgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgICAgIGInKGUnLAogICAgICAgICAgICAgYidpYnVpbHRpbnNcbmxpc3RcbicsICAgICAgICMgSU5TVAogICAgICAgICAgICAgYidsJywgICAgICAgICAgICAgICAgICAgICAgICMgTElTVAogICAgICAgICAgICAgYidvJywgICAgICAgICAgICAgICAgICAgICAgICMgT0JKCkBAIC0xMDIyLDcgKzEwMjIsNyBAQAogICAgICAgICAgICAgYidOTnMnLAogICAgICAgICAgICAgYid0JywgICAgICAgICAgICAgICAgICAgICAgICMgVFVQTEUKICAgICAgICAgICAgIGIndScsICAgICAgICAgICAgICAgICAgICAgICAjIFNFVElURU1TCi0gICAgICAgICAgICAjIGInKHUnLCAgICAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciBkb2Vzbid0IHJhaXNlCisgICAgICAgICAgICBiJyh1JywKICAgICAgICAgICAgIGInfShOdScsCiAgICAgICAgICAgICBiJ1x4ODEnLCAgICAgICAgICAgICAgICAgICAgIyBORVdPQkoKICAgICAgICAgICAgIGInKVx4ODEnLApAQCAtMTAzMyw3ICsxMDMzLDcgQEAKICAgICAgICAgICAgIGInTlx4ODcnLAogICAgICAgICAgICAgYidOTlx4ODcnLAogICAgICAgICAgICAgYidceDkwJywgICAgICAgICAgICAgICAgICAgICMgQURESVRFTVMKLSAgICAgICAgICAgICMgYicoXHg5MCcsICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgorICAgICAgICAgICAgYicoXHg5MCcsCiAgICAgICAgICAgICBiJ1x4OTEnLCAgICAgICAgICAgICAgICAgICAgIyBGUk9aRU5TRVQKICAgICAgICAgICAgIGInXHg5MicsICAgICAgICAgICAgICAgICAgICAjIE5FV09CSl9FWAogICAgICAgICAgICAgYicpfVx4OTInLApAQCAtMTA0Niw3ICsxMDQ2LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9tYXJrKHNlbGYpOgogICAgICAgICBiYWRwaWNrbGVzID0gWwotICAgICAgICAgICAgIyBiJ04oLicsICAgICAgICAgICAgICAgICAgICAgIyBTVE9QCisgICAgICAgICAgICBiJ04oLicsICAgICAgICAgICAgICAgICAgICAgIyBTVE9QCiAgICAgICAgICAgICBiJ04oMicsICAgICAgICAgICAgICAgICAgICAgIyBEVVAKICAgICAgICAgICAgIGInY2J1aWx0aW5zXG5saXN0XG4pKFInLCAgICAjIFJFRFVDRQogICAgICAgICAgICAgYidjYnVpbHRpbnNcbmxpc3RcbigpUicsCkBAIC0xMDgxLDcgKzEwODEsNyBAQAogICAgICAgICAgICAgYidOKFx4OTQnLCAgICAgICAgICAgICAgICAgICMgTUVNT0laRQogICAgICAgICBdCiAgICAgICAgIGZvciBwIGluIGJhZHBpY2tsZXM6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX3VucGlja2xpbmdfZXJyb3Ioc2VsZi5iYWRfbWFya19lcnJvcnMsIHApCisgICAgICAgICAgICBzZWxmLmNoZWNrX3VucGlja2xpbmdfZXJyb3Ioc2VsZi5iYWRfc3RhY2tfZXJyb3JzLCBwKQogCiAgICAgZGVmIHRlc3RfdHJ1bmNhdGVkX2RhdGEoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfdW5waWNrbGluZ19lcnJvcihFT0ZFcnJvciwgYicnKQpAQCAtMTg1NSwxNiArMTg1NSwxNCBAQAogICAgICAgICB4LmFiYyA9IDY2NgogICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocHJvdG89cHJvdG8pOgotICAgICAgICAgICAgICAgIGlmIDIgPD0gcHJvdG8gPCA0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmR1bXBzLCB4LCBwcm90bykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBzID0gc2VsZi5kdW1wcyh4LCBwcm90bykKICAgICAgICAgICAgICAgICBpZiBwcm90byA8IDE6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidcbkw2NDIwNicsIHMpICAjIExPTkcKICAgICAgICAgICAgICAgICBlbGlmIHByb3RvIDwgMjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ01ceGNlXHhmYScsIHMpICAjIEJJTklOVDIKKyAgICAgICAgICAgICAgICBlbGlmIHByb3RvIDwgNDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1hceDA0XHgwMFx4MDBceDAwRkFDRScsIHMpICAjIEJJTlVOSUNPREUKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcHJvdG8gPj0gNAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInXHg4Y1x4MDRGQUNFJywgcykgICMgU0hPUlRfQklOVU5JQ09ERQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKLCBzKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wY29kZV9pbl9waWNrbGUocGlja2xlLk5FV09CSl9FWCwgcyksCkBAIC0yNTgzLDExICsyNTgxLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocGlja2xlLlBpY2tsaW5nRXJyb3IsIEJhZFBpY2tsZXIoKS5kdW1wLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBCYWRVbnBpY2tsZXIoKS5sb2FkKQogCi0gICAgZGVmIHRlc3RfYmFkX2lucHV0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaXNzdWU0Mjk4Ci0gICAgICAgIHMgPSBieXRlcyhbMHg1OCwgMCwgMCwgMCwgMHg1NF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBwaWNrbGUubG9hZHMsIHMpCi0KIAogY2xhc3MgQWJzdHJhY3RQZXJzaXN0ZW50UGlja2xlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcHlkb2NfbW9kLnB5IGIvTGliL3Rlc3QvcHlkb2NfbW9kLnB5CmluZGV4IGNkYTFjOWUuLjljMWZmZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3B5ZG9jX21vZC5weQorKysgYi9MaWIvdGVzdC9weWRvY19tb2QucHkKQEAgLTEyLDcgKzEyLDcgQEAKICAgICAgICAgcGFzcwogCiBjbGFzcyBCKG9iamVjdCk6Ci0gICAgTk9fTUVBTklORyA9ICJlZ2dzIgorICAgIE5PX01FQU5JTkc6IHN0ciA9ICJlZ2dzIgogICAgIHBhc3MKIAogY2xhc3MgQyhvYmplY3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcmVfdGVzdHMucHkgYi9MaWIvdGVzdC9yZV90ZXN0cy5weQppbmRleCA4YzE1OGY4Li5hMzc5ZDMzIDEwMDc1NQotLS0gYS9MaWIvdGVzdC9yZV90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9yZV90ZXN0cy5weQpAQCAtMTA2LDggKzEwNiw4IEBACiAgICAgKCdhLipiJywgJ2FjY1xuY2NiJywgRkFJTCksCiAgICAgKCdhLns0LDV9YicsICdhY2NcbmNjYicsIEZBSUwpLAogICAgICgnYS5iJywgJ2FccmInLCBTVUNDRUVELCAnZm91bmQnLCAnYVxyYicpLAotICAgICgnYS5iKD9zKScsICdhXG5iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FcbmInKSwKLSAgICAoJ2EuKig/cyliJywgJ2FjY1xuY2NiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FjY1xuY2NiJyksCisgICAgKCcoP3MpYS5iJywgJ2FcbmInLCBTVUNDRUVELCAnZm91bmQnLCAnYVxuYicpLAorICAgICgnKD9zKWEuKmInLCAnYWNjXG5jY2InLCBTVUNDRUVELCAnZm91bmQnLCAnYWNjXG5jY2InKSwKICAgICAoJyg/cylhLns0LDV9YicsICdhY2NcbmNjYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhY2NcbmNjYicpLAogICAgICgnKD9zKWEuYicsICdhXG5iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FcbmInKSwKIApAQCAtMTU4LDcgKzE1OCw3IEBACiAgICAgKCcoYWJjJywgJy0nLCBTWU5UQVhfRVJST1IpLAogICAgICgnYV0nLCAnYV0nLCBTVUNDRUVELCAnZm91bmQnLCAnYV0nKSwKICAgICAoJ2FbXV1iJywgJ2FdYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXWInKSwKLSAgICAoJ2FbXF1dYicsICdhXWInLCBTVUNDRUVELCAnZm91bmQnLCAnYV1iJyksCisgICAgKCdhW1xcXV1iJywgJ2FdYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXWInKSwKICAgICAoJ2FbXmJjXWQnLCAnYWVkJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FlZCcpLAogICAgICgnYVteYmNdZCcsICdhYmQnLCBGQUlMKSwKICAgICAoJ2FbXi1iXWMnLCAnYWRjJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FkYycpLApAQCAtNTUxLDcgKzU1MSw3IEBACiAgICAgIyBsb29rYmVoaW5kOiBzcGxpdCBieSA6IGJ1dCBub3QgaWYgaXQgaXMgZXNjYXBlZCBieSAtLgogICAgICgnKD88IS0pOiguKj8pKD88IS0pOicsICdhOmJjLTpkZTpmJywgU1VDQ0VFRCwgJ2cxJywgJ2JjLTpkZScgKSwKICAgICAjIGVzY2FwaW5nIHdpdGggXCBhcyB3ZSBrbm93IGl0Ci0gICAgKCcoPzwhXFxcKTooLio/KSg/PCFcXFwpOicsICdhOmJjXFw6ZGU6ZicsIFNVQ0NFRUQsICdnMScsICdiY1xcOmRlJyApLAorICAgICgnKD88IVxcXFwpOiguKj8pKD88IVxcXFwpOicsICdhOmJjXFw6ZGU6ZicsIFNVQ0NFRUQsICdnMScsICdiY1xcOmRlJyApLAogICAgICMgdGVybWluYXRpbmcgd2l0aCAnIGFuZCBlc2NhcGluZyB3aXRoID8gYXMgaW4gZWRpZmFjdAogICAgICgiKD88IVxcPyknKC4qPykoPzwhXFw/KSciLCAiYSdiYz8nZGUnZiIsIFNVQ0NFRUQsICdnMScsICJiYz8nZGUiICksCiAKQEAgLTU2Myw3ICs1NjMsNyBAQAogICAgICMgQ2hlY2sgb2RkIHBsYWNlbWVudCBvZiBlbWJlZGRlZCBwYXR0ZXJuIG1vZGlmaWVycwogCiAgICAgIyBub3QgYW4gZXJyb3IgdW5kZXIgUENSRS9QUkU6Ci0gICAgKCd3KD9pKScsICdXJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ1cnKSwKKyAgICAoJyg/aSl3JywgJ1cnLCBTVUNDRUVELCAnZm91bmQnLCAnVycpLAogICAgICMgKCd3KD9pKScsICdXJywgU1lOVEFYX0VSUk9SKSwKIAogICAgICMgQ29tbWVudHMgdXNpbmcgdGhlIHggZW1iZWRkZWQgcGF0dGVybiBtb2RpZmllcgpAQCAtNjI3LDcgKzYyNyw3IEBACiAgICAgIyBidWcgMTE0MDMzOiBub3RoaW5nIHRvIHJlcGVhdAogICAgIChyJyh4Pyk/JywgJ3gnLCBTVUNDRUVELCAnZm91bmQnLCAneCcpLAogICAgICMgYnVnIDExNTA0MDogcmVzY2FuIGlmIGZsYWdzIGFyZSBtb2RpZmllZCBpbnNpZGUgcGF0dGVybgotICAgIChyJyAoP3gpZm9vICcsICdmb28nLCBTVUNDRUVELCAnZm91bmQnLCAnZm9vJyksCisgICAgKHInKD94KSBmb28gJywgJ2ZvbycsIFNVQ0NFRUQsICdmb3VuZCcsICdmb28nKSwKICAgICAjIGJ1ZyAxMTU2MTg6IG5lZ2F0aXZlIGxvb2thaGVhZAogICAgIChyJyg/PCFhYmMpKGQuZiknLCAnYWJjZGVmZG9mJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2RvZicpLAogICAgICMgYnVnIDExNjI1MTogY2hhcmFjdGVyIGNsYXNzIGJ1ZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcmVncnRlc3QucHkgYi9MaWIvdGVzdC9yZWdydGVzdC5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IGRiMjllZmEuLjIxYjBlZGYKLS0tIGEvTGliL3Rlc3QvcmVncnRlc3QucHkKKysrIGIvTGliL3Rlc3QvcmVncnRlc3QucHkKQEAgLTYsMTY3NiArNiwzMyBAQAogUnVuIHRoaXMgc2NyaXB0IHdpdGggLWggb3IgLS1oZWxwIGZvciBkb2N1bWVudGF0aW9uLgogIiIiCiAKLVVTQUdFID0gIiIiXAotcHl0aG9uIC1tIHRlc3QgW29wdGlvbnNdIFt0ZXN0X25hbWUxIFt0ZXN0X25hbWUyIC4uLl1dCi1weXRob24gcGF0aC90by9MaWIvdGVzdC9yZWdydGVzdC5weSBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KLSIiIgotCi1ERVNDUklQVElPTiA9ICIiIlwKLVJ1biBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4KLQotSWYgbm8gYXJndW1lbnRzIG9yIG9wdGlvbnMgYXJlIHByb3ZpZGVkLCBmaW5kcyBhbGwgZmlsZXMgbWF0Y2hpbmcKLXRoZSBwYXR0ZXJuICJ0ZXN0XyoiIGluIHRoZSBMaWIvdGVzdCBzdWJkaXJlY3RvcnkgYW5kIHJ1bnMKLXRoZW0gaW4gYWxwaGFiZXRpY2FsIG9yZGVyIChidXQgc2VlIC1NIGFuZCAtdSwgYmVsb3csIGZvciBleGNlcHRpb25zKS4KLQotRm9yIG1vcmUgcmlnb3JvdXMgdGVzdGluZywgaXQgaXMgdXNlZnVsIHRvIHVzZSB0aGUgZm9sbG93aW5nCi1jb21tYW5kIGxpbmU6Ci0KLXB5dGhvbiAtRSAtV2QgLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgLi4uXQotIiIiCi0KLUVQSUxPRyA9ICIiIlwKLUFkZGl0aW9uYWwgb3B0aW9uIGRldGFpbHM6Ci0KLS1yIHJhbmRvbWl6ZXMgdGVzdCBleGVjdXRpb24gb3JkZXIuIFlvdSBjYW4gdXNlIC0tcmFuZHNlZWQ9aW50IHRvIHByb3ZpZGUgYW4KLWludCBzZWVkIHZhbHVlIGZvciB0aGUgcmFuZG9taXplcjsgdGhpcyBpcyB1c2VmdWwgZm9yIHJlcHJvZHVjaW5nIHRyb3VibGVzb21lCi10ZXN0IG9yZGVycy4KLQotLXMgT24gdGhlIGZpcnN0IGludm9jYXRpb24gb2YgcmVncnRlc3QgdXNpbmcgLXMsIHRoZSBmaXJzdCB0ZXN0IGZpbGUgZm91bmQKLW9yIHRoZSBmaXJzdCB0ZXN0IGZpbGUgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSBpcyBydW4sIGFuZCB0aGUgbmFtZSBvZgotdGhlIG5leHQgdGVzdCBpcyByZWNvcmRlZCBpbiBhIGZpbGUgbmFtZWQgcHluZXh0dGVzdC4gIElmIHJ1biBmcm9tIHRoZQotUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgcHluZXh0dGVzdCBpcyBsb2NhdGVkIGluIHRoZSAnYnVpbGQnIHN1YmRpcmVjdG9yeSwKLW90aGVyd2lzZSBpdCBpcyBsb2NhdGVkIGluIHRlbXBmaWxlLmdldHRlbXBkaXIoKS4gIE9uIHN1YnNlcXVlbnQgcnVucywKLXRoZSB0ZXN0IGluIHB5bmV4dHRlc3QgaXMgcnVuLCBhbmQgdGhlIG5leHQgdGVzdCBpcyB3cml0dGVuIHRvIHB5bmV4dHRlc3QuCi1XaGVuIHRoZSBsYXN0IHRlc3QgaGFzIGJlZW4gcnVuLCBweW5leHR0ZXN0IGlzIGRlbGV0ZWQuICBJbiB0aGlzIHdheSBpdAotaXMgcG9zc2libGUgdG8gc2luZ2xlIHN0ZXAgdGhyb3VnaCB0aGUgdGVzdCBmaWxlcy4gIFRoaXMgaXMgdXNlZnVsIHdoZW4KLWRvaW5nIG1lbW9yeSBhbmFseXNpcyBvbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCB3aGljaCBwcm9jZXNzIHRlbmRzIHRvCi1jb25zdW1lIHRvbyBtYW55IHJlc291cmNlcyB0byBydW4gdGhlIGZ1bGwgcmVncmVzc2lvbiB0ZXN0IG5vbi1zdG9wLgotCi0tUyBpcyB1c2VkIHRvIGNvbnRpbnVlIHJ1bm5pbmcgdGVzdHMgYWZ0ZXIgYW4gYWJvcnRlZCBydW4uICBJdCB3aWxsCi1tYWludGFpbiB0aGUgb3JkZXIgYSBzdGFuZGFyZCBydW4gKGllLCB0aGlzIGFzc3VtZXMgLXIgaXMgbm90IHVzZWQpLgotVGhpcyBpcyB1c2VmdWwgYWZ0ZXIgdGhlIHRlc3RzIGhhdmUgcHJlbWF0dXJlbHkgc3RvcHBlZCBmb3Igc29tZSBleHRlcm5hbAotcmVhc29uIGFuZCB5b3Ugd2FudCB0byBzdGFydCBydW5uaW5nIGZyb20gd2hlcmUgeW91IGxlZnQgb2ZmIHJhdGhlcgotdGhhbiBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcuCi0KLS1mIHJlYWRzIHRoZSBuYW1lcyBvZiB0ZXN0cyBmcm9tIHRoZSBmaWxlIGdpdmVuIGFzIGYncyBhcmd1bWVudCwgb25lCi1vciBtb3JlIHRlc3QgbmFtZXMgcGVyIGxpbmUuICBXaGl0ZXNwYWNlIGlzIGlnbm9yZWQuICBCbGFuayBsaW5lcyBhbmQKLWxpbmVzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgaWdub3JlZC4gIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yCi13aGl0dGxpbmcgZG93biBmYWlsdXJlcyBpbnZvbHZpbmcgaW50ZXJhY3Rpb25zIGFtb25nIHRlc3RzLgotCi0tTCBjYXVzZXMgdGhlIGxlYWtzKDEpIGNvbW1hbmQgdG8gYmUgcnVuIGp1c3QgYmVmb3JlIGV4aXQgaWYgaXQgZXhpc3RzLgotbGVha3MoMSkgaXMgYXZhaWxhYmxlIG9uIE1hYyBPUyBYIGFuZCBwcmVzdW1hYmx5IG9uIHNvbWUgb3RoZXIKLUZyZWVCU0QtZGVyaXZlZCBzeXN0ZW1zLgotCi0tUiBydW5zIGVhY2ggdGVzdCBzZXZlcmFsIHRpbWVzIGFuZCBleGFtaW5lcyBzeXMuZ2V0dG90YWxyZWZjb3VudCgpIHRvCi1zZWUgaWYgdGhlIHRlc3QgYXBwZWFycyB0byBiZSBsZWFraW5nIHJlZmVyZW5jZXMuICBUaGUgYXJndW1lbnQgc2hvdWxkCi1iZSBvZiB0aGUgZm9ybSBzdGFiOnJ1bjpmbmFtZSB3aGVyZSAnc3RhYicgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUKLXRlc3QgaXMgcnVuIHRvIGxldCBnZXR0b3RhbHJlZmNvdW50IHNldHRsZSBkb3duLCAncnVuJyBpcyB0aGUgbnVtYmVyCi1vZiB0aW1lcyBmdXJ0aGVyIGl0IGlzIHJ1biBhbmQgJ2ZuYW1lJyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0aGUKLXJlcG9ydHMgYXJlIHdyaXR0ZW4gdG8uICBUaGVzZSBwYXJhbWV0ZXJzIGFsbCBoYXZlIGRlZmF1bHRzICg1LCA0IGFuZAotInJlZmxvZy50eHQiIHJlc3BlY3RpdmVseSksIGFuZCB0aGUgbWluaW1hbCBpbnZvY2F0aW9uIGlzICctUiA6Jy4KLQotLU0gcnVucyB0ZXN0cyB0aGF0IHJlcXVpcmUgYW4gZXhvcmJpdGFudCBhbW91bnQgb2YgbWVtb3J5LiBUaGVzZSB0ZXN0cwotdHlwaWNhbGx5IHRyeSB0byBhc2NlcnRhaW4gY29udGFpbmVycyBrZWVwIHdvcmtpbmcgd2hlbiBjb250YWluaW5nIG1vcmUgdGhhbgotMiBiaWxsaW9uIG9iamVjdHMsIHdoaWNoIG9ubHkgd29ya3Mgb24gNjQtYml0IHN5c3RlbXMuIFRoZXJlIGFyZSBhbHNvIHNvbWUKLXRlc3RzIHRoYXQgdHJ5IHRvIGV4aGF1c3QgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgdGhlIHByb2Nlc3MsIHdoaWNoIG9ubHkgbWFrZXMKLXNlbnNlIG9uIDMyLWJpdCBzeXN0ZW1zIHdpdGggYXQgbGVhc3QgMkdiIG9mIG1lbW9yeS4gVGhlIHBhc3NlZC1pbiBtZW1saW1pdCwKLXdoaWNoIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtIG9mICcyLjVHYicsIGRldGVybWluZXMgaG93bXVjaCBtZW1vcnkgdGhlCi10ZXN0cyB3aWxsIGxpbWl0IHRoZW1zZWx2ZXMgdG8gKGJ1dCB0aGV5IG1heSBnbyBzbGlnaHRseSBvdmVyLikgVGhlIG51bWJlcgotc2hvdWxkbid0IGJlIG1vcmUgbWVtb3J5IHRoYW4gdGhlIG1hY2hpbmUgaGFzIChpbmNsdWRpbmcgc3dhcCBtZW1vcnkpLiBZb3UKLXNob3VsZCBhbHNvIGtlZXAgaW4gbWluZCB0aGF0IHN3YXAgbWVtb3J5IGlzIGdlbmVyYWxseSBtdWNoLCBtdWNoIHNsb3dlcgotdGhhbiBSQU0sIGFuZCBzZXR0aW5nIG1lbWxpbWl0IHRvIGFsbCBhdmFpbGFibGUgUkFNIG9yIGhpZ2hlciB3aWxsIGhlYXZpbHkKLXRheCB0aGUgbWFjaGluZS4gT24gdGhlIG90aGVyIGhhbmQsIGl0IGlzIG5vIHVzZSBydW5uaW5nIHRoZXNlIHRlc3RzIHdpdGggYQotbGltaXQgb2YgbGVzcyB0aGFuIDIuNUdiLCBhbmQgbWFueSByZXF1aXJlIG1vcmUgdGhhbiAyMEdiLiBUZXN0cyB0aGF0IGV4cGVjdAotdG8gdXNlIG1vcmUgdGhhbiBtZW1saW1pdCBtZW1vcnkgd2lsbCBiZSBza2lwcGVkLiBUaGUgYmlnLW1lbW9yeSB0ZXN0cwotZ2VuZXJhbGx5IHJ1biB2ZXJ5LCB2ZXJ5IGxvbmcuCi0KLS11IGlzIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyB0byBydW4sCi1zdWNoIGFzIHRob3NlIHJlcXVpcmluZyBsYXJnZSBmaWxlIHN1cHBvcnQgb3IgbmV0d29yayBjb25uZWN0aXZpdHkuCi1UaGUgYXJndW1lbnQgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB3b3JkcyBpbmRpY2F0aW5nIHRoZQotcmVzb3VyY2VzIHRvIHRlc3QuICBDdXJyZW50bHkgb25seSB0aGUgZm9sbG93aW5nIGFyZSBkZWZpbmVkOgotCi0gICAgYWxsIC0gICAgICAgRW5hYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcy4KLQotICAgIG5vbmUgLSAgICAgIERpc2FibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzICh0aGlzIGlzIHRoZSBkZWZhdWx0KS4KLQotICAgIGF1ZGlvIC0gICAgIFRlc3RzIHRoYXQgdXNlIHRoZSBhdWRpbyBkZXZpY2UuICAoVGhlcmUgYXJlIGtub3duCi0gICAgICAgICAgICAgICAgY2FzZXMgb2YgYnJva2VuIGF1ZGlvIGRyaXZlcnMgdGhhdCBjYW4gY3Jhc2ggUHl0aG9uIG9yCi0gICAgICAgICAgICAgICAgZXZlbiB0aGUgTGludXgga2VybmVsLikKLQotICAgIGN1cnNlcyAtICAgIFRlc3RzIHRoYXQgdXNlIGN1cnNlcyBhbmQgd2lsbCBtb2RpZnkgdGhlIHRlcm1pbmFsJ3MKLSAgICAgICAgICAgICAgICBzdGF0ZSBhbmQgb3V0cHV0IG1vZGVzLgotCi0gICAgbGFyZ2VmaWxlIC0gSXQgaXMgb2theSB0byBydW4gc29tZSB0ZXN0IHRoYXQgbWF5IGNyZWF0ZSBodWdlCi0gICAgICAgICAgICAgICAgZmlsZXMuICBUaGVzZSB0ZXN0cyBjYW4gdGFrZSBhIGxvbmcgdGltZSBhbmQgbWF5Ci0gICAgICAgICAgICAgICAgY29uc3VtZSA+MkdCIG9mIGRpc2sgc3BhY2UgdGVtcG9yYXJpbHkuCi0KLSAgICBuZXR3b3JrIC0gICBJdCBpcyBva2F5IHRvIHJ1biB0ZXN0cyB0aGF0IHVzZSBleHRlcm5hbCBuZXR3b3JrCi0gICAgICAgICAgICAgICAgcmVzb3VyY2UsIGUuZy4gdGVzdGluZyBTU0wgc3VwcG9ydCBmb3Igc29ja2V0cy4KLQotICAgIGRlY2ltYWwgLSAgIFRlc3QgdGhlIGRlY2ltYWwgbW9kdWxlIGFnYWluc3QgYSBsYXJnZSBzdWl0ZSB0aGF0Ci0gICAgICAgICAgICAgICAgdmVyaWZpZXMgY29tcGxpYW5jZSB3aXRoIHN0YW5kYXJkcy4KLQotICAgIGNwdSAtICAgICAgIFVzZWQgZm9yIGNlcnRhaW4gQ1BVLWhlYXZ5IHRlc3RzLgotCi0gICAgc3VicHJvY2VzcyAgUnVuIGFsbCB0ZXN0cyBmb3IgdGhlIHN1YnByb2Nlc3MgbW9kdWxlLgotCi0gICAgdXJsZmV0Y2ggLSAgSXQgaXMgb2theSB0byBkb3dubG9hZCBmaWxlcyByZXF1aXJlZCBvbiB0ZXN0aW5nLgotCi0gICAgZ3VpIC0gICAgICAgUnVuIHRlc3RzIHRoYXQgcmVxdWlyZSBhIHJ1bm5pbmcgR1VJLgotCi1UbyBlbmFibGUgYWxsIHJlc291cmNlcyBleGNlcHQgb25lLCB1c2UgJy11YWxsLC08cmVzb3VyY2U+Jy4gIEZvcgotZXhhbXBsZSwgdG8gcnVuIGFsbCB0aGUgdGVzdHMgZXhjZXB0IGZvciB0aGUgZ3VpIHRlc3RzLCBnaXZlIHRoZQotb3B0aW9uICctdWFsbCwtZ3VpJy4KLSIiIgotCiAjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CiBpbXBvcnQgaW1wb3J0bGliCiAKLWltcG9ydCBhcmdwYXJzZQotaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgZmF1bHRoYW5kbGVyCi1pbXBvcnQgaW8KLWltcG9ydCBqc29uCi1pbXBvcnQgbG9jYWxlCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLWltcG9ydCByYW5kb20KLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHNpZ25hbAogaW1wb3J0IHN5cwotaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgdGltZQotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKLWZyb20gaW5zcGVjdCBpbXBvcnQgaXNhYnN0cmFjdAorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0IGltcG9ydCBtYWluCiAKLXRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgdGhyZWFkaW5nID0gTm9uZQotdHJ5OgotICAgIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nLCBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAorIyBBbGlhcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoanVzdCBpbiBjYXNlKQorbWFpbl9pbl90ZW1wX2N3ZCA9IG1haW4KIAotIyBTb21lIHRpbWVzIF9fcGF0aF9fIGFuZCBfX2ZpbGVfXyBhcmUgbm90IGFic29sdXRlIChlLmcuIHdoaWxlIHJ1bm5pbmcgZnJvbQotIyBMaWIvKSBhbmQsIGlmIHdlIGNoYW5nZSB0aGUgQ1dEIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSB0ZW1wb3JhcnkgZGlyLCBzb21lCi0jIGltcG9ydHMgbWlnaHQgZmFpbC4gIFRoaXMgYWZmZWN0cyBvbmx5IHRoZSBtb2R1bGVzIGltcG9ydGVkIGJlZm9yZSBvcy5jaGRpcigpLgotIyBUaGVzZSBtb2R1bGVzIGFyZSBzZWFyY2hlZCBmaXJzdCBpbiBzeXMucGF0aFswXSAoc28gJycgLS0gdGhlIENXRCkgYW5kIGlmCi0jIHRoZXkgYXJlIGZvdW5kIGluIHRoZSBDV0QgdGhlaXIgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgcmVsYXRpdmUgKHRoaXMKLSMgaGFwcGVucyBiZWZvcmUgdGhlIGNoZGlyKS4gIEFsbCB0aGUgbW9kdWxlcyBpbXBvcnRlZCBhZnRlciB0aGUgY2hkaXIsIGFyZQotIyBub3QgZm91bmQgaW4gdGhlIENXRCwgYW5kIHNpbmNlIHRoZSBvdGhlciBwYXRocyBpbiBzeXMucGF0aFsxOl0gYXJlIGFic29sdXRlCi0jIChzaXRlLnB5IGFic29sdXRpemUgdGhlbSksIHRoZSBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSBhYnNvbHV0ZSB0b28uCi0jIFRoZXJlZm9yZSBpdCBpcyBuZWNlc3NhcnkgdG8gYWJzb2x1dGl6ZSBtYW51YWxseSB0aGUgX19maWxlX18gYW5kIF9fcGF0aF9fIG9mCi0jIHRoZSBwYWNrYWdlcyB0byBwcmV2ZW50IGxhdGVyIGltcG9ydHMgdG8gZmFpbCB3aGVuIHRoZSBDV0QgaXMgZGlmZmVyZW50LgotZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKLSAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFtvcy5wYXRoLmFic3BhdGgocGF0aCkgZm9yIHBhdGggaW4gbW9kdWxlLl9fcGF0aF9fXQotICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKLSAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG1vZHVsZS5fX2ZpbGVfXykKIAotCi0jIE1hY09TWCAoYS5rLmEuIERhcndpbikgaGFzIGEgZGVmYXVsdCBzdGFjayBzaXplIHRoYXQgaXMgdG9vIHNtYWxsCi0jIGZvciBkZWVwbHkgcmVjdXJzaXZlIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBXZSBzZWUgdGhpcyBhcyBjcmFzaGVzIGluCi0jIHRoZSBQeXRob24gdGVzdCBzdWl0ZSB3aGVuIHJ1bm5pbmcgdGVzdF9yZS5weSBhbmQgdGVzdF9zcmUucHkuICBUaGUKLSMgZml4IGlzIHRvIHNldCB0aGUgc3RhY2sgbGltaXQgdG8gMjA0OC4KLSMgVGhpcyBhcHByb2FjaCBtYXkgYWxzbyBiZSB1c2VmdWwgZm9yIG90aGVyIFVuaXh5IHBsYXRmb3JtcyB0aGF0Ci0jIHN1ZmZlciBmcm9tIHNtYWxsIGRlZmF1bHQgc3RhY2sgbGltaXRzLgotaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHJlc291cmNlCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgc29mdCwgaGFyZCA9IHJlc291cmNlLmdldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0spCi0gICAgICAgIG5ld3NvZnQgPSBtaW4oaGFyZCwgbWF4KHNvZnQsIDEwMjQqMjA0OCkpCi0gICAgICAgIHJlc291cmNlLnNldHJsaW1pdChyZXNvdXJjZS5STElNSVRfU1RBQ0ssIChuZXdzb2Z0LCBoYXJkKSkKLQotIyBUZXN0IHJlc3VsdCBjb25zdGFudHMuCi1QQVNTRUQgPSAxCi1GQUlMRUQgPSAwCi1FTlZfQ0hBTkdFRCA9IC0xCi1TS0lQUEVEID0gLTIKLVJFU09VUkNFX0RFTklFRCA9IC0zCi1JTlRFUlJVUFRFRCA9IC00Ci1DSElMRF9FUlJPUiA9IC01ICAgIyBlcnJvciBpbiBhIGNoaWxkIHByb2Nlc3MKLQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KLVJFU09VUkNFX05BTUVTID0gKCdhdWRpbycsICdjdXJzZXMnLCAnbGFyZ2VmaWxlJywgJ25ldHdvcmsnLAotICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwnLCAnY3B1JywgJ3N1YnByb2Nlc3MnLCAndXJsZmV0Y2gnLCAnZ3VpJykKLQotIyBXaGVuIHRlc3RzIGFyZSBydW4gZnJvbSB0aGUgUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgaXQgaXMgYmVzdCBwcmFjdGljZQotIyB0byBrZWVwIHRoZSB0ZXN0IGZpbGVzIGluIGEgc3ViZm9sZGVyLiAgVGhpcyBlYXNlcyB0aGUgY2xlYW51cCBvZiBsZWZ0b3ZlcgotIyBmaWxlcyB1c2luZyB0aGUgIm1ha2UgZGlzdGNsZWFuIiBjb21tYW5kLgotaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgotICAgIFRFTVBESVIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKSwgJ2J1aWxkJykKLWVsc2U6Ci0gICAgVEVNUERJUiA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotVEVNUERJUiA9IG9zLnBhdGguYWJzcGF0aChURU1QRElSKQotCi1jbGFzcyBfQXJnUGFyc2VyKGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKToKLQotICAgIGRlZiBlcnJvcihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgc3VwZXIoKS5lcnJvcihtZXNzYWdlICsgIlxuUGFzcyAtaCBvciAtLWhlbHAgZm9yIGNvbXBsZXRlIGhlbHAuIikKLQotZGVmIF9jcmVhdGVfcGFyc2VyKCk6Ci0gICAgIyBTZXQgcHJvZyB0byBwcmV2ZW50IHRoZSB1bmluZm9ybWF0aXZlICJfX21haW5fXy5weSIgZnJvbSBkaXNwbGF5aW5nIGluCi0gICAgIyBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nICJweXRob24gLW0gdGVzdCAuLi4iLgotICAgIHBhcnNlciA9IF9BcmdQYXJzZXIocHJvZz0ncmVncnRlc3QucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9VVNBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1ERVNDUklQVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz1FUElMT0csCi0gICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpCi0KLSAgICAjIEFyZ3VtZW50cyB3aXRoIHRoaXMgY2xhdXNlIGFkZGVkIHRvIGl0cyBoZWxwIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbgotICAgICMgdGhlIGVwaWxvZydzICJBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzIiBzZWN0aW9uLgotICAgIG1vcmVfZGV0YWlscyA9ICcgIFNlZSB0aGUgc2VjdGlvbiBhdCBib3R0b20gZm9yIG1vcmUgZGV0YWlscy4nCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0dlbmVyYWwgb3B0aW9ucycpCi0gICAgIyBXZSBhZGQgaGVscCBleHBsaWNpdGx5IHRvIGNvbnRyb2wgd2hhdCBhcmd1bWVudCBncm91cCBpdCByZW5kZXJzIHVuZGVyLgotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWgnLCAnLS1oZWxwJywgYWN0aW9uPSdoZWxwJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRpbWVvdXQnLCBtZXRhdmFyPSdUSU1FT1VUJywgdHlwZT1mbG9hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2R1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBuZWdhdGl2ZSBvciBlcXVhbHMgdG8gemVybycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdhaXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gYmUgYXR0YWNoZWQnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zbGF2ZWFyZ3MnLCBtZXRhdmFyPSdBUkdTJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RhcnQnLCBtZXRhdmFyPSdTVEFSVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3RoZSBuYW1lIG9mIHRoZSB0ZXN0IGF0IHdoaWNoIHRvIHN0YXJ0LicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnVmVyYm9zaXR5JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGVzdHMgaW4gdmVyYm9zZSBtb2RlIHdpdGggb3V0cHV0IHRvIHN0ZG91dCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdycsICctLXZlcmJvc2UyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVcnLCAnLS12ZXJib3NlMycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1vJywgJy0tc2xvdycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3ByaW50X3Nsb3cnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCB0aGUgc2xvd2VzdCAxMCB0ZXN0cycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IGhlYWRlciB3aXRoIGludGVycHJldGVyIGluZm8nKQotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTZWxlY3RpbmcgdGVzdHMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYW5kb21pemUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXIuJyArIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcmFuZHNlZWQnLCBtZXRhdmFyPSdTRUVEJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmFuZG9tX3NlZWQnLCB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncGFzcyBhIHJhbmRvbSBzZWVkIHRvIHJlcHJvZHVjZSBhIHByZXZpb3VzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZG9tIHJ1bicpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb21maWxlJywgbWV0YXZhcj0nRklMRScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlYWQgbmFtZXMgb2YgdGVzdHMgdG8gcnVuIGZyb20gYSBmaWxlLicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy14JywgJy0tZXhjbHVkZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyBhcmUgdGVzdHMgdG8gKmV4Y2x1ZGUqJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2luZ2xlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2luZ2xlIHN0ZXAgdGhyb3VnaCBhIHNldCBvZiB0ZXN0cy4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbScsICctLW1hdGNoJywgbWV0YXZhcj0nUEFUJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWF0Y2hfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdtYXRjaCB0ZXN0IGNhc2VzIGFuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRycsICctLWZhaWxmYXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmFpbCBhcyBzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZScsIG1ldGF2YXI9J1JFUzEsUkVTMiwuLi4nLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsIHR5cGU9cmVzb3VyY2VzX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBydW4uJyArIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1NJywgJy0tbWVtbGltaXQnLCBtZXRhdmFyPSdMSU1JVCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB2ZXJ5IGxhcmdlIG1lbW9yeS1jb25zdW1pbmcgdGVzdHMuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10ZXN0ZGlyJywgbWV0YXZhcj0nRElSJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSknKQotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTcGVjaWFsIHJ1bnMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1maW5kbGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdpZiBHQyBpcyBhdmFpbGFibGUgZGV0ZWN0IHRlc3RzIHRoYXQgbGVhayBtZW1vcnknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUwnLCAnLS1ydW5sZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgbGVha3MoMSkgY29tbWFuZCBqdXN0IGJlZm9yZSBleGl0LicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1SJywgJy0taHVudHJsZWFrcycsIG1ldGF2YXI9J1JVTkNPVU5UUycsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VhcmNoIGZvciByZWZlcmVuY2UgbGVha3MgKG5lZWRzIGRlYnVnIGJ1aWxkLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zlcnkgc2xvdykuJyArIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1qJywgJy0tbXVsdGlwcm9jZXNzJywgbWV0YXZhcj0nUFJPQ0VTU0VTJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX21wJywgdHlwZT1pbnQsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBQUk9DRVNTRVMgcHJvY2Vzc2VzIGF0IG9uY2UnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS1jb3ZlcmFnZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RyYWNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndHVybiBvbiBjb2RlIGNvdmVyYWdlIHRyYWNpbmcgdXNpbmcgdGhlIHRyYWNlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kdWxlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1EJywgJy0tY292ZXJkaXInLCBtZXRhdmFyPSdESVInLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTicsICctLW5vY292ZXJkaXInLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Tm9uZSwgZGVzdD0nY292ZXJkaXInLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwdXQgY292ZXJhZ2UgZmlsZXMgYWxvbmdzaWRlIG1vZHVsZXMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aHJlc2hvbGQnLCBtZXRhdmFyPSdUSFJFU0hPTEQnLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1ub3dpbmRvd3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGJveGVzIG9uIFdpbmRvd3MnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUYnLCAnLS1mb3JldmVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBzcGVjaWZpZWQgdGVzdHMgaW4gYSBsb29wLCB1bnRpbCBhbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yIGhhcHBlbnMnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVAnLCAnLS1wZ28nLCBkZXN0PSdwZ28nLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdlbmFibGUgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIHRyYWluaW5nJykKLQotICAgIHJldHVybiBwYXJzZXIKLQotZGVmIHJlbGF0aXZlX2ZpbGVuYW1lKHN0cmluZyk6Ci0gICAgIyBDV0QgaXMgcmVwbGFjZWQgd2l0aCBhIHRlbXBvcmFyeSBkaXIgYmVmb3JlIGNhbGxpbmcgbWFpbigpLCBzbyB3ZQotICAgICMgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZW5kcyB1cCB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgc3RyaW5nKQotCi1kZWYgaHVudHJsZWFrcyhzdHJpbmcpOgotICAgIGFyZ3MgPSBzdHJpbmcuc3BsaXQoJzonKQotICAgIGlmIGxlbihhcmdzKSBub3QgaW4gKDIsIDMpOgotICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigKLSAgICAgICAgICAgICduZWVkcyAyIG9yIDMgY29sb24tc2VwYXJhdGVkIGFyZ3VtZW50cycpCi0gICAgbndhcm11cCA9IGludChhcmdzWzBdKSBpZiBhcmdzWzBdIGVsc2UgNQotICAgIG50cmFja2VkID0gaW50KGFyZ3NbMV0pIGlmIGFyZ3NbMV0gZWxzZSA0Ci0gICAgZm5hbWUgPSBhcmdzWzJdIGlmIGxlbihhcmdzKSA+IDIgYW5kIGFyZ3NbMl0gZWxzZSAncmVmbG9nLnR4dCcKLSAgICByZXR1cm4gbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lCi0KLWRlZiByZXNvdXJjZXNfbGlzdChzdHJpbmcpOgotICAgIHUgPSBbeC5sb3dlcigpIGZvciB4IGluIHN0cmluZy5zcGxpdCgnLCcpXQotICAgIGZvciByIGluIHU6Ci0gICAgICAgIGlmIHIgPT0gJ2FsbCcgb3IgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgIHIgPSByWzE6XQotICAgICAgICBpZiByIG5vdCBpbiBSRVNPVVJDRV9OQU1FUzoKLSAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKCdpbnZhbGlkIHJlc291cmNlOiAnICsgcikKLSAgICByZXR1cm4gdQotCi1kZWYgX3BhcnNlX2FyZ3MoYXJncywgKiprd2FyZ3MpOgotICAgICMgRGVmYXVsdHMKLSAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSh0ZXN0ZGlyPU5vbmUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsCi0gICAgICAgICBleGNsdWRlPUZhbHNlLCBzaW5nbGU9RmFsc2UsIHJhbmRvbWl6ZT1GYWxzZSwgZnJvbWZpbGU9Tm9uZSwKLSAgICAgICAgIGZpbmRsZWFrcz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLCB0cmFjZT1GYWxzZSwgY292ZXJkaXI9J2NvdmVyYWdlJywKLSAgICAgICAgIHJ1bmxlYWtzPUZhbHNlLCBodW50cmxlYWtzPUZhbHNlLCB2ZXJib3NlMj1GYWxzZSwgcHJpbnRfc2xvdz1GYWxzZSwKLSAgICAgICAgIHJhbmRvbV9zZWVkPU5vbmUsIHVzZV9tcD1Ob25lLCB2ZXJib3NlMz1GYWxzZSwgZm9yZXZlcj1GYWxzZSwKLSAgICAgICAgIGhlYWRlcj1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHBnbz1GYWxzZSkKLSAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIobnMsIGspOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclciBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgdGhpcyBmdW5jdGlvbicgJSBrKQotICAgICAgICBzZXRhdHRyKG5zLCBrLCB2KQotICAgIGlmIG5zLnVzZV9yZXNvdXJjZXMgaXMgTm9uZToKLSAgICAgICAgbnMudXNlX3Jlc291cmNlcyA9IFtdCi0KLSAgICBwYXJzZXIgPSBfY3JlYXRlX3BhcnNlcigpCi0gICAgIyBJc3N1ZSAjMTQxOTE6IGFyZ3BhcnNlIGRvZXNuJ3Qgc3VwcG9ydCAiaW50ZXJtaXhlZCIgcG9zaXRpb25hbCBhbmQKLSAgICAjIG9wdGlvbmFsIGFyZ3VtZW50cy4gVXNlIHBhcnNlX2tub3duX2FyZ3MoKSBhcyB3b3JrYXJvdW5kLgotICAgIG5zLmFyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncyhhcmdzPWFyZ3MsIG5hbWVzcGFjZT1ucylbMV0KLSAgICBmb3IgYXJnIGluIG5zLmFyZ3M6Ci0gICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctJyk6Ci0gICAgICAgICAgICBwYXJzZXIuZXJyb3IoInVucmVjb2duaXplZCBhcmd1bWVudHM6ICVzIiAlIGFyZykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBucy5zaW5nbGUgYW5kIG5zLmZyb21maWxlOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1zIGFuZCAtZiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMudHJhY2U6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLVQgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGFuZCBucy5maW5kbGVha3M6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGFuZCBucy5tZW1saW1pdDoKLSAgICAgICAgcGFyc2VyLmVycm9yKCItTSBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy5mYWlsZmFzdCBhbmQgbm90IChucy52ZXJib3NlIG9yIG5zLnZlcmJvc2UzKToKLSAgICAgICAgcGFyc2VyLmVycm9yKCItRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVyIpCi0KLSAgICBpZiBucy5xdWlldDoKLSAgICAgICAgbnMudmVyYm9zZSA9IDAKLSAgICBpZiBucy50aW1lb3V0IGlzIG5vdCBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6Ci0gICAgICAgICAgICBpZiBucy50aW1lb3V0IDw9IDA6Ci0gICAgICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiBUaGUgdGltZW91dCBvcHRpb24gcmVxdWlyZXMgIgotICAgICAgICAgICAgICAgICAgImZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlciIpCi0gICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQotICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbnMudXNlX21wIDw9IDA6Ci0gICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAotICAgICAgICAgICAgbnMudXNlX21wID0gMiArIChvcy5jcHVfY291bnQoKSBvciAxKQotICAgICAgICBpZiBucy51c2VfbXAgPT0gMToKLSAgICAgICAgICAgIG5zLnVzZV9tcCA9IE5vbmUKLSAgICBpZiBucy51c2U6Ci0gICAgICAgIGZvciBhIGluIG5zLnVzZToKLSAgICAgICAgICAgIGZvciByIGluIGE6Ci0gICAgICAgICAgICAgICAgaWYgciA9PSAnYWxsJzoKLSAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlc1s6XSA9IFJFU09VUkNFX05BTUVTCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgciA9PSAnbm9uZSc6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBucy51c2VfcmVzb3VyY2VzWzpdCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgcmVtb3ZlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBpZiByWzBdID09ICctJzoKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICByID0gclsxOl0KLSAgICAgICAgICAgICAgICBpZiByZW1vdmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHIgaW4gbnMudXNlX3Jlc291cmNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMucmVtb3ZlKHIpCi0gICAgICAgICAgICAgICAgZWxpZiByIG5vdCBpbiBucy51c2VfcmVzb3VyY2VzOgotICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzLmFwcGVuZChyKQotICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIG5vdCBOb25lOgotICAgICAgICBucy5yYW5kb21pemUgPSBUcnVlCi0KLSAgICByZXR1cm4gbnMKLQotCi1kZWYgcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0bmFtZSwgbnMpOgotICAgICIiIlJ1biB0aGUgZ2l2ZW4gdGVzdCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCAtLXNsYXZlYXJncy4KLQotICAgIG5zIGlzIHRoZSBvcHRpb24gTmFtZXNwYWNlIHBhcnNlZCBmcm9tIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuIHJlZ3J0ZXN0Ci0gICAgaXMgaW52b2tlZCBpbiBhIHN1YnByb2Nlc3Mgd2l0aCB0aGUgLS1zbGF2ZWFyZ3MgYXJndW1lbnQ7IHdoZW4gdGhlCi0gICAgc3VicHJvY2VzcyBleGl0cywgaXRzIHJldHVybiBjb2RlLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgcmV0dXJuZWQgYXMgYQotICAgIDMtdHVwbGUuCi0gICAgIiIiCi0gICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQotICAgIGJhc2VfY21kID0gKFtzeXMuZXhlY3V0YWJsZV0gKyBzdXBwb3J0LmFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpICsKLSAgICAgICAgICAgICAgICBbJy1YJywgJ2ZhdWx0aGFuZGxlcicsICctbScsICd0ZXN0LnJlZ3J0ZXN0J10pCi0gICAgIyByZXF1aXJlZCB0byBzcGF3biBhIG5ldyBwcm9jZXNzIHdpdGggUEdPIGZsYWcgb24vb2ZmCi0gICAgaWYgbnMucGdvOgotICAgICAgICBiYXNlX2NtZCA9IGJhc2VfY21kICsgWyctLXBnbyddCi0gICAgc2xhdmVhcmdzID0gKAotICAgICAgICAgICAgKHRlc3RuYW1lLCBucy52ZXJib3NlLCBucy5xdWlldCksCi0gICAgICAgICAgICBkaWN0KGh1bnRybGVha3M9bnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgdXNlX3Jlc291cmNlcz1ucy51c2VfcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBmYWlsZmFzdD1ucy5mYWlsZmFzdCwKLSAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bnMubWF0Y2hfdGVzdHMsIHBnbz1ucy5wZ28pKQotICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBhcyByZWdydGVzdCdzIG9yaWdpbmFsCi0gICAgIyBpbnZvY2F0aW9uIGVuc3VyZXMgdGhhdCBURU1QRElSIGZvciB0aGUgY2hpbGQgaXMgdGhlIHNhbWUgd2hlbgotICAgICMgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpIGlzIHRydWUuIFNlZSBpc3N1ZSAxNTMwMC4KLSAgICBwb3BlbiA9IFBvcGVuKGJhc2VfY21kICsgWyctLXNsYXZlYXJncycsIGpzb24uZHVtcHMoc2xhdmVhcmdzKV0sCi0gICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsCi0gICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSwKLSAgICAgICAgICAgICAgICAgIGN3ZD1zdXBwb3J0LlNBVkVEQ1dEKQotICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQotICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKLSAgICByZXR1cm4gcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIKLQotCi1kZWYgbWFpbih0ZXN0cz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgIiIiRXhlY3V0ZSBhIHRlc3Qgc3VpdGUuCi0KLSAgICBUaGlzIGFsc28gcGFyc2VzIGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBtb2RpZmllcyBpdHMgYmVoYXZpb3IKLSAgICBhY2NvcmRpbmdseS4KLQotICAgIHRlc3RzIC0tIGEgbGlzdCBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgdGVzdCBuYW1lcyAob3B0aW9uYWwpCi0gICAgdGVzdGRpciAtLSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGxvb2sgZm9yIHRlc3RzIChvcHRpb25hbCkKLQotICAgIFVzZXJzIG90aGVyIHRoYW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdpbGwgY2VydGFpbmx5IHdhbnQgdG8KLSAgICBzcGVjaWZ5IHRlc3RkaXI7IGlmIGl0J3Mgb21pdHRlZCwgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZQotICAgIFB5dGhvbiB0ZXN0IHN1aXRlIGlzIHNlYXJjaGVkIGZvci4KLQotICAgIElmIHRoZSB0ZXN0cyBhcmd1bWVudCBpcyBvbWl0dGVkLCB0aGUgdGVzdHMgbGlzdGVkIG9uIHRoZQotICAgIGNvbW1hbmQtbGluZSB3aWxsIGJlIHVzZWQuICBJZiB0aGF0J3MgZW1wdHksIHRvbywgdGhlbiBhbGwgKi5weQotICAgIGZpbGVzIGJlZ2lubmluZyB3aXRoIHRlc3RfIHdpbGwgYmUgdXNlZC4KLQotICAgIFRoZSBvdGhlciBkZWZhdWx0IGFyZ3VtZW50cyAodmVyYm9zZSwgcXVpZXQsIGV4Y2x1ZGUsCi0gICAgc2luZ2xlLCByYW5kb21pemUsIGZpbmRsZWFrcywgdXNlX3Jlc291cmNlcywgdHJhY2UsIGNvdmVyZGlyLAotICAgIHByaW50X3Nsb3csIGFuZCByYW5kb21fc2VlZCkgYWxsb3cgcHJvZ3JhbW1lcnMgY2FsbGluZyBtYWluKCkKLSAgICBkaXJlY3RseSB0byBzZXQgdGhlIHZhbHVlcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHNldCBieSBmbGFncwotICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gICAgIiIiCi0gICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycyAoZS5nLiBzZWdmYXVsdCkKLSAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPVRydWUpCi0KLSAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gU0lHQUxSTSBvciBTSUdVU1IxIHNpZ25hbAotICAgIHNpZ25hbHMgPSBbXQotICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpOgotICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHQUxSTSkKLSAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKToKLSAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR1VTUjEpCi0gICAgZm9yIHNpZ251bSBpbiBzaWduYWxzOgotICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBjaGFpbj1UcnVlKQotCi0gICAgcmVwbGFjZV9zdGRvdXQoKQotCi0gICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCi0KLSAgICBucyA9IF9wYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSwgKiprd2FyZ3MpCi0KLSAgICBpZiBucy5odW50cmxlYWtzOgotICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKLSAgICAgICAgIyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhOgotICAgICAgICB3YXJtX2NhY2hlcygpCi0gICAgaWYgbnMubWVtbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQuc2V0X21lbWxpbWl0KG5zLm1lbWxpbWl0KQotICAgIGlmIG5zLnRocmVzaG9sZCBpcyBub3QgTm9uZToKLSAgICAgICAgaW1wb3J0IGdjCi0gICAgICAgIGdjLnNldF90aHJlc2hvbGQobnMudGhyZXNob2xkKQotICAgIGlmIG5zLm5vd2luZG93czoKLSAgICAgICAgcHJpbnQoJ1RoZSAtLW5vd2luZG93cyAoLW4pIG9wdGlvbiBpcyBkZXByZWNhdGVkLiAnCi0gICAgICAgICAgICAgICdVc2UgLXZ2IHRvIGRpc3BsYXkgYXNzZXJ0aW9ucyBpbiBzdGRlcnIuJykKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBtc3ZjcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBtc3ZjcnQuU2V0RXJyb3JNb2RlKG1zdmNydC5TRU1fRkFJTENSSVRJQ0FMRVJST1JTfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PR1BGQVVMVEVSUk9SQk9YfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9PUEVORklMRUVSUk9SQk9YKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIHJlbGVhc2UgYnVpbGQKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKLSAgICAgICAgICAgICAgICBpZiBucy52ZXJib3NlIGFuZCBucy52ZXJib3NlID49IDI6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIG1zdmNydC5DUlREQkdfTU9ERV9GSUxFKQotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0RmlsZShtLCBtc3ZjcnQuQ1JUREJHX0ZJTEVfU1RERVJSKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCi0gICAgaWYgbnMud2FpdDoKLSAgICAgICAgaW5wdXQoIlByZXNzIGFueSBrZXkgdG8gY29udGludWUuLi4iKQotCi0gICAgaWYgbnMuc2xhdmVhcmdzIGlzIG5vdCBOb25lOgotICAgICAgICBhcmdzLCBrd2FyZ3MgPSBqc29uLmxvYWRzKG5zLnNsYXZlYXJncykKLSAgICAgICAgaWYga3dhcmdzLmdldCgnaHVudHJsZWFrcycpOgotICAgICAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QoKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKLSAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCi0gICAgICAgIHByaW50KGpzb24uZHVtcHMocmVzdWx0KSkKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIGdvb2QgPSBbXQotICAgIGJhZCA9IFtdCi0gICAgc2tpcHBlZCA9IFtdCi0gICAgcmVzb3VyY2VfZGVuaWVkcyA9IFtdCi0gICAgZW52aXJvbm1lbnRfY2hhbmdlZCA9IFtdCi0gICAgaW50ZXJydXB0ZWQgPSBGYWxzZQotCi0gICAgaWYgbnMuZmluZGxlYWtzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcHJpbnQoJ05vIEdDIGF2YWlsYWJsZSwgZGlzYWJsaW5nIGZpbmRsZWFrcy4nKQotICAgICAgICAgICAgbnMuZmluZGxlYWtzID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIHJlcG9ydCBnYXJiYWdlIHRoYXQgaXMgbm90Ci0gICAgICAgICAgICAjIGZyZWVhYmxlIGJ5IHJlZmVyZW5jZSBjb3VudGluZyBhbG9uZS4gIEJ5IGRlZmF1bHQgb25seQotICAgICAgICAgICAgIyBnYXJiYWdlIHRoYXQgaXMgbm90IGNvbGxlY3RhYmxlIGJ5IHRoZSBHQyBpcyByZXBvcnRlZC4KLSAgICAgICAgICAgICNnYy5zZXRfZGVidWcoZ2MuREVCVUdfU0FWRUFMTCkKLSAgICAgICAgICAgIGZvdW5kX2dhcmJhZ2UgPSBbXQotCi0gICAgaWYgbnMuaHVudHJsZWFrczoKLSAgICAgICAgdW5pdHRlc3QuQmFzZVRlc3RTdWl0ZS5fY2xlYW51cCA9IEZhbHNlCi0KLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICdweW5leHR0ZXN0JykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG5leHRfdGVzdCA9IGZwLnJlYWQoKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgdGVzdHMgPSBbbmV4dF90ZXN0XQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGlmIG5zLmZyb21maWxlOgotICAgICAgICB0ZXN0cyA9IFtdCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgbnMuZnJvbWZpbGUpKSBhcyBmcDoKLSAgICAgICAgICAgIGNvdW50X3BhdCA9IHJlLmNvbXBpbGUocidcW1xzKlxkKy9ccypcZCtcXScpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAgICAgICAgICAgICBsaW5lID0gY291bnRfcGF0LnN1YignJywgbGluZSkKLSAgICAgICAgICAgICAgICBndXRzID0gbGluZS5zcGxpdCgpICMgYXNzdW1pbmcgbm8gdGVzdCBoYXMgd2hpdGVzcGFjZSBpbiBpdHMgbmFtZQotICAgICAgICAgICAgICAgIGlmIGd1dHMgYW5kIG5vdCBndXRzWzBdLnN0YXJ0c3dpdGgoJyMnKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKGd1dHMpCi0KLSAgICAjIFN0cmlwIC5weSBleHRlbnNpb25zLgotICAgIHJlbW92ZXB5KG5zLmFyZ3MpCi0gICAgcmVtb3ZlcHkodGVzdHMpCi0KLSAgICBzdGR0ZXN0cyA9IFNURFRFU1RTWzpdCi0gICAgbm90dGVzdHMgPSBOT1RURVNUUy5jb3B5KCkKLSAgICBpZiBucy5leGNsdWRlOgotICAgICAgICBmb3IgYXJnIGluIG5zLmFyZ3M6Ci0gICAgICAgICAgICBpZiBhcmcgaW4gc3RkdGVzdHM6Ci0gICAgICAgICAgICAgICAgc3RkdGVzdHMucmVtb3ZlKGFyZykKLSAgICAgICAgICAgIG5vdHRlc3RzLmFkZChhcmcpCi0gICAgICAgIG5zLmFyZ3MgPSBbXQotCi0gICAgIyBGb3IgYSBwYXJ0aWFsIHJ1biwgd2UgZG8gbm90IG5lZWQgdG8gY2x1dHRlciB0aGUgb3V0cHV0LgotICAgIGlmIChucy52ZXJib3NlIG9yIG5zLmhlYWRlciBvcgotICAgICAgICAgICAgbm90IChucy5wZ28gb3IgbnMucXVpZXQgb3IgbnMuc2luZ2xlIG9yIHRlc3RzIG9yIG5zLmFyZ3MpKToKLSAgICAgICAgIyBQcmludCBiYXNpYyBwbGF0Zm9ybSBpbmZvcm1hdGlvbgotICAgICAgICBwcmludCgiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgKnN5cy52ZXJzaW9uLnNwbGl0KCkpCi0gICAgICAgIHByaW50KCI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKLSAgICAgICAgcHJpbnQoIj09ICAiLCAiaGFzaCBhbGdvcml0aG06Iiwgc3lzLmhhc2hfaW5mby5hbGdvcml0aG0sCi0gICAgICAgICAgICAgICAgIjY0Yml0IiBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyIGVsc2UgIjMyYml0IikKLSAgICAgICAgcHJpbnQoIj09ICAiLCBvcy5nZXRjd2QoKSkKLSAgICAgICAgcHJpbnQoIlRlc3Rpbmcgd2l0aCBmbGFnczoiLCBzeXMuZmxhZ3MpCi0KLSAgICAjIGlmIHRlc3RkaXIgaXMgc2V0LCB0aGVuIHdlIGFyZSBub3QgcnVubmluZyB0aGUgcHl0aG9uIHRlc3RzIHN1aXRlLCBzbwotICAgICMgZG9uJ3QgYWRkIGRlZmF1bHQgdGVzdHMgdG8gYmUgZXhlY3V0ZWQgb3Igc2tpcHBlZCAocGFzcyBlbXB0eSB2YWx1ZXMpCi0gICAgaWYgbnMudGVzdGRpcjoKLSAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMobnMudGVzdGRpciwgbGlzdCgpLCBzZXQoKSkKLSAgICBlbHNlOgotICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhucy50ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCi0KLSAgICBzZWxlY3RlZCA9IHRlc3RzIG9yIG5zLmFyZ3Mgb3IgYWxsdGVzdHMKLSAgICBpZiBucy5zaW5nbGU6Ci0gICAgICAgIHNlbGVjdGVkID0gc2VsZWN0ZWRbOjFdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5leHRfc2luZ2xlX3Rlc3QgPSBhbGx0ZXN0c1thbGx0ZXN0cy5pbmRleChzZWxlY3RlZFswXSkrMV0KLSAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICBuZXh0X3NpbmdsZV90ZXN0ID0gTm9uZQotICAgICMgUmVtb3ZlIGFsbCB0aGUgc2VsZWN0ZWQgdGVzdHMgdGhhdCBwcmVjZWRlIHN0YXJ0IGlmIGl0J3Mgc2V0LgotICAgIGlmIG5zLnN0YXJ0OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgc2VsZWN0ZWRbOnNlbGVjdGVkLmluZGV4KG5zLnN0YXJ0KV0KLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwcmludCgiQ291bGRuJ3QgZmluZCBzdGFydGluZyB0ZXN0ICglcyksIHVzaW5nIGFsbCB0ZXN0cyIgJSBucy5zdGFydCkKLSAgICBpZiBucy5yYW5kb21pemU6Ci0gICAgICAgIGlmIG5zLnJhbmRvbV9zZWVkIGlzIE5vbmU6Ci0gICAgICAgICAgICBucy5yYW5kb21fc2VlZCA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDApCi0gICAgICAgIHJhbmRvbS5zZWVkKG5zLnJhbmRvbV9zZWVkKQotICAgICAgICBwcmludCgiVXNpbmcgcmFuZG9tIHNlZWQiLCBucy5yYW5kb21fc2VlZCkKLSAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZWN0ZWQpCi0gICAgaWYgbnMudHJhY2U6Ci0gICAgICAgIGltcG9ydCB0cmFjZSwgdGVtcGZpbGUKLSAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUuZ2V0dGVtcGRpcigpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCi0KLSAgICB0ZXN0X3RpbWVzID0gW10KLSAgICBzdXBwb3J0LnZlcmJvc2UgPSBucy52ZXJib3NlICAgICAgIyBUZWxsIHRlc3RzIHRvIGJlIG1vZGVyYXRlbHkgcXVpZXQKLSAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSBucy51c2VfcmVzb3VyY2VzCi0gICAgc2F2ZV9tb2R1bGVzID0gc3lzLm1vZHVsZXMua2V5cygpCi0KLSAgICBkZWYgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KToKLSAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAotICAgICAgICBpZiBvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCk6Ci0gICAgICAgICAgICB0ZXN0X3RpbWVzLmFwcGVuZCgodGVzdF90aW1lLCB0ZXN0KSkKLSAgICAgICAgaWYgb2sgPT0gUEFTU0VEOgotICAgICAgICAgICAgZ29vZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBGQUlMRUQ6Ci0gICAgICAgICAgICBiYWQuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gRU5WX0NIQU5HRUQ6Ci0gICAgICAgICAgICBlbnZpcm9ubWVudF9jaGFuZ2VkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFNLSVBQRUQ6Ci0gICAgICAgICAgICBza2lwcGVkLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IFJFU09VUkNFX0RFTklFRDoKLSAgICAgICAgICAgIHNraXBwZWQuYXBwZW5kKHRlc3QpCi0gICAgICAgICAgICByZXNvdXJjZV9kZW5pZWRzLmFwcGVuZCh0ZXN0KQotCi0gICAgaWYgbnMuZm9yZXZlcjoKLSAgICAgICAgZGVmIHRlc3RfZm9yZXZlcih0ZXN0cz1saXN0KHNlbGVjdGVkKSk6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RzOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIGlmIGJhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICB0ZXN0cyA9IHRlc3RfZm9yZXZlcigpCi0gICAgICAgIHRlc3RfY291bnQgPSAnJwotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gMwotICAgIGVsc2U6Ci0gICAgICAgIHRlc3RzID0gaXRlcihzZWxlY3RlZCkKLSAgICAgICAgdGVzdF9jb3VudCA9ICcve30nLmZvcm1hdChsZW4oc2VsZWN0ZWQpKQotICAgICAgICB0ZXN0X2NvdW50X3dpZHRoID0gbGVuKHRlc3RfY291bnQpIC0gMQotCi0gICAgaWYgbnMudXNlX21wOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGhyZWFkCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJNdWx0aXByb2Nlc3Mgb3B0aW9uIHJlcXVpcmVzIHRocmVhZCBzdXBwb3J0IikKLSAgICAgICAgICAgIHN5cy5leGl0KDIpCi0gICAgICAgIGZyb20gcXVldWUgaW1wb3J0IFF1ZXVlCi0gICAgICAgIGRlYnVnX291dHB1dF9wYXQgPSByZS5jb21waWxlKHIiXFtcZCsgcmVmcywgXGQrIGJsb2Nrc1xdJCIpCi0gICAgICAgIG91dHB1dCA9IFF1ZXVlKCkKLSAgICAgICAgcGVuZGluZyA9IE11bHRpcHJvY2Vzc1Rlc3RzKHRlc3RzKQotICAgICAgICBkZWYgd29yaygpOgotICAgICAgICAgICAgIyBBIHdvcmtlciB0aHJlYWQuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IG5leHQocGVuZGluZykKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICByZXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdCwgbnMpCi0gICAgICAgICAgICAgICAgICAgICMgU3RyaXAgbGFzdCByZWZjb3VudCBvdXRwdXQgbGluZSBpZiBpdCBleGlzdHMsIHNpbmNlIGl0Ci0gICAgICAgICAgICAgICAgICAgICMgY29tZXMgZnJvbSB0aGUgc2h1dGRvd24gb2YgdGhlIGludGVycHJldGVyIGluIHRoZSBzdWJjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBkZWJ1Z19vdXRwdXRfcGF0LnN1YigiIiwgc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBzdGRvdXQsIF8sIHJlc3VsdCA9IHN0ZG91dC5zdHJpcCgpLnJwYXJ0aXRpb24oIlxuIikKLSAgICAgICAgICAgICAgICAgICAgaWYgcmV0Y29kZSAhPSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQotICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgd29ya2VycyA9IFtUaHJlYWQodGFyZ2V0PXdvcmspIGZvciBpIGluIHJhbmdlKG5zLnVzZV9tcCldCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAgIGZpbmlzaGVkID0gMAotICAgICAgICB0ZXN0X2luZGV4ID0gMQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSBmaW5pc2hlZCA8IG5zLnVzZV9tcDoKLSAgICAgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gb3V0cHV0LmdldCgpCi0gICAgICAgICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBmaW5pc2hlZCArPSAxCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQotICAgICAgICAgICAgICAgIGlmIG5vdCBucy5xdWlldDoKLSAgICAgICAgICAgICAgICAgICAgaWYgYmFkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9XSB7NH0iCi0gICAgICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJhZCksIHRlc3QpKQotICAgICAgICAgICAgICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3Rkb3V0KQotICAgICAgICAgICAgICAgIGlmIHN0ZGVyciBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoc3RkZXJyLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IElOVEVSUlVQVEVEOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdAotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDaGlsZCBlcnJvciBvbiB7fToge30iLmZvcm1hdCh0ZXN0LCByZXN1bHRbMV0pKQotICAgICAgICAgICAgICAgIHRlc3RfaW5kZXggKz0gMQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgIHBlbmRpbmcuaW50ZXJydXB0ZWQgPSBUcnVlCi0gICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgICAgIHdvcmtlci5qb2luKCkKLSAgICBlbHNlOgotICAgICAgICBmb3IgdGVzdF9pbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgotICAgICAgICAgICAgaWYgbm90IG5zLnF1aWV0OgotICAgICAgICAgICAgICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9L3szfV0gezR9IgotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfV0gezR9IgotICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnRfd2lkdGgsIHRlc3RfaW5kZXgsIHRlc3RfY291bnQsIGxlbihiYWQpLCB0ZXN0KSkKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgIGlmIG5zLnRyYWNlOgotICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKLSAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KLSAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIG5zLnZlcmJvc2UsIG5zLnF1aWV0LCB0aW1lb3V0PW5zLnRpbWVvdXQpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9dmFycygpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QodGVzdCwgbnMudmVyYm9zZSwgbnMucXVpZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1ucy52ZXJib3NlMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQsIGZhaWxmYXN0PW5zLmZhaWxmYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW5zLm1hdGNoX3Rlc3RzLCBwZ289bnMucGdvKQotICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKLSAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKLSAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZzogdGVzdCBjcmVhdGVkIiwgbGVuKGdjLmdhcmJhZ2UpLCBlbmQ9JyAnKQotICAgICAgICAgICAgICAgICAgICBwcmludCgidW5jb2xsZWN0YWJsZSBvYmplY3QocykuIikKLSAgICAgICAgICAgICAgICAgICAgIyBtb3ZlIHRoZSB1bmNvbGxlY3RhYmxlIG9iamVjdHMgc29tZXdoZXJlIHNvIHdlIGRvbid0IHNlZQotICAgICAgICAgICAgICAgICAgICAjIHRoZW0gYWdhaW4KLSAgICAgICAgICAgICAgICAgICAgZm91bmRfZ2FyYmFnZS5leHRlbmQoZ2MuZ2FyYmFnZSkKLSAgICAgICAgICAgICAgICAgICAgZGVsIGdjLmdhcmJhZ2VbOl0KLSAgICAgICAgICAgICMgVW5sb2FkIHRoZSBuZXdseSBpbXBvcnRlZCBtb2R1bGVzIChiZXN0IGVmZm9ydCBmaW5hbGl6YXRpb24pCi0gICAgICAgICAgICBmb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLmtleXMoKToKLSAgICAgICAgICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6Ci0gICAgICAgICAgICAgICAgICAgIHN1cHBvcnQudW5sb2FkKG1vZHVsZSkKLQotICAgIGlmIGludGVycnVwdGVkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAjIHByaW50IGEgbmV3bGluZSBhZnRlciBeQwotICAgICAgICBwcmludCgpCi0gICAgICAgIHByaW50KCJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIikKLSAgICAgICAgb21pdHRlZCA9IHNldChzZWxlY3RlZCkgLSBzZXQoZ29vZCkgLSBzZXQoYmFkKSAtIHNldChza2lwcGVkKQotICAgICAgICBwcmludChjb3VudChsZW4ob21pdHRlZCksICJ0ZXN0IiksICJvbWl0dGVkOiIpCi0gICAgICAgIHByaW50bGlzdChvbWl0dGVkKQotICAgIGlmIGdvb2QgYW5kIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgaWYgbm90IGJhZCBhbmQgbm90IHNraXBwZWQgYW5kIG5vdCBpbnRlcnJ1cHRlZCBhbmQgbGVuKGdvb2QpID4gMToKLSAgICAgICAgICAgIHByaW50KCJBbGwiLCBlbmQ9JyAnKQotICAgICAgICBwcmludChjb3VudChsZW4oZ29vZCksICJ0ZXN0IiksICJPSy4iKQotICAgIGlmIG5zLnByaW50X3Nsb3c6Ci0gICAgICAgIHRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCi0gICAgICAgIHByaW50KCIxMCBzbG93ZXN0IHRlc3RzOiIpCi0gICAgICAgIGZvciB0aW1lLCB0ZXN0IGluIHRlc3RfdGltZXNbOjEwXToKLSAgICAgICAgICAgIHByaW50KCIlczogJS4xZnMiICUgKHRlc3QsIHRpbWUpKQotICAgIGlmIGJhZCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgcHJpbnQoY291bnQobGVuKGJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KGJhZCkKLSAgICBpZiBlbnZpcm9ubWVudF9jaGFuZ2VkIGFuZCBub3QgbnMucGdvOgotICAgICAgICBwcmludCgie30gYWx0ZXJlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiIuZm9ybWF0KAotICAgICAgICAgICAgICAgICBjb3VudChsZW4oZW52aXJvbm1lbnRfY2hhbmdlZCksICJ0ZXN0IikpKQotICAgICAgICBwcmludGxpc3QoZW52aXJvbm1lbnRfY2hhbmdlZCkKLSAgICBpZiBza2lwcGVkIGFuZCBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIHByaW50KGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KHNraXBwZWQpCi0KLSAgICBpZiBucy52ZXJib3NlMiBhbmQgYmFkOgotICAgICAgICBwcmludCgiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIikKLSAgICAgICAgZm9yIHRlc3QgaW4gYmFkWzpdOgotICAgICAgICAgICAgaWYgbm90IG5zLnBnbzoKLSAgICAgICAgICAgICAgICBwcmludCgiUmUtcnVubmluZyB0ZXN0ICVyIGluIHZlcmJvc2UgbW9kZSIgJSB0ZXN0KQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbnMudmVyYm9zZSA9IFRydWUKLSAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3QodGVzdCwgVHJ1ZSwgbnMucXVpZXQsIG5zLmh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgcGdvPW5zLnBnbykKLSAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQwotICAgICAgICAgICAgICAgIHByaW50KCkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBva1swXSBpbiB7UEFTU0VELCBFTlZfQ0hBTkdFRCwgU0tJUFBFRCwgUkVTT1VSQ0VfREVOSUVEfToKLSAgICAgICAgICAgICAgICAgICAgYmFkLnJlbW92ZSh0ZXN0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgYmFkOgotICAgICAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihiYWQpLCAndGVzdCcpLCAiZmFpbGVkIGFnYWluOiIpCi0gICAgICAgICAgICAgICAgcHJpbnRsaXN0KGJhZCkKLQotICAgIGlmIG5zLnNpbmdsZToKLSAgICAgICAgaWYgbmV4dF9zaW5nbGVfdGVzdDoKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBmcC53cml0ZShuZXh0X3NpbmdsZV90ZXN0ICsgJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKLQotICAgIGlmIG5zLnRyYWNlOgotICAgICAgICByID0gdHJhY2VyLnJlc3VsdHMoKQotICAgICAgICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9VHJ1ZSwgY292ZXJkaXI9bnMuY292ZXJkaXIpCi0KLSAgICBpZiBucy5ydW5sZWFrczoKLSAgICAgICAgb3Muc3lzdGVtKCJsZWFrcyAlZCIgJSBvcy5nZXRwaWQoKSkKLQotICAgIHN5cy5leGl0KGxlbihiYWQpID4gMCBvciBpbnRlcnJ1cHRlZCkKLQotCi0jIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgotIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCi1TVERURVNUUyA9IFsKLSAgICAndGVzdF9ncmFtbWFyJywKLSAgICAndGVzdF9vcGNvZGVzJywKLSAgICAndGVzdF9kaWN0JywKLSAgICAndGVzdF9idWlsdGluJywKLSAgICAndGVzdF9leGNlcHRpb25zJywKLSAgICAndGVzdF90eXBlcycsCi0gICAgJ3Rlc3RfdW5pdHRlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QnLAotICAgICd0ZXN0X2RvY3Rlc3QyJywKLSAgICAndGVzdF9zdXBwb3J0JwotXQotCi0jIHNldCBvZiB0ZXN0cyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB1c2luZyByZWdydGVzdAotTk9UVEVTVFMgPSBzZXQoKQotCi1kZWYgZmluZHRlc3RzKHRlc3RkaXI9Tm9uZSwgc3RkdGVzdHM9U1REVEVTVFMsIG5vdHRlc3RzPU5PVFRFU1RTKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCBhcHBsaWNhYmxlIHRlc3QgbW9kdWxlcy4iIiIKLSAgICB0ZXN0ZGlyID0gZmluZHRlc3RkaXIodGVzdGRpcikKLSAgICBuYW1lcyA9IG9zLmxpc3RkaXIodGVzdGRpcikKLSAgICB0ZXN0cyA9IFtdCi0gICAgb3RoZXJzID0gc2V0KHN0ZHRlc3RzKSB8IG5vdHRlc3RzCi0gICAgZm9yIG5hbWUgaW4gbmFtZXM6Ci0gICAgICAgIG1vZCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQotICAgICAgICBpZiBtb2RbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCBpbiAoIi5weSIsICIiKSBhbmQgbW9kIG5vdCBpbiBvdGhlcnM6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kKQotICAgIHJldHVybiBzdGR0ZXN0cyArIHNvcnRlZCh0ZXN0cykKLQotIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgotY2xhc3MgTXVsdGlwcm9jZXNzVGVzdHMob2JqZWN0KToKLQotICAgICIiIkEgdGhyZWFkLXNhZmUgaXRlcmF0b3Igb3ZlciB0ZXN0cyBmb3IgbXVsdGlwcm9jZXNzIG1vZGUuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHMpOgotICAgICAgICBzZWxmLmludGVycnVwdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5sb2NrID0gdGhyZWFkaW5nLkxvY2soKQotICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX25leHRfXyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmxvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLmludGVycnVwdGVkOgotICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oJ3Rlc3RzIGludGVycnVwdGVkJykKLSAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYudGVzdHMpCi0KLWRlZiByZXBsYWNlX3N0ZG91dCgpOgotICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgotICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCi0gICAgaW1wb3J0IGF0ZXhpdAotCi0gICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAotICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCi0gICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCi0gICAgICAgIGNsb3NlZmQ9RmFsc2UsCi0gICAgICAgIG5ld2xpbmU9J1xuJykKLQotICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgotICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAotICAgIGF0ZXhpdC5yZWdpc3RlcihyZXN0b3JlX3N0ZG91dCkKLQotZGVmIHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsCi0gICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsCi0gICAgICAgICAgICBvdXRwdXRfb25fZmFpbHVyZT1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsCi0gICAgICAgICAgICB0aW1lb3V0PU5vbmUsICosIHBnbz1GYWxzZSk6Ci0gICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCi0KLSAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0Ci0gICAgdmVyYm9zZSAtLSBpZiB0cnVlLCBwcmludCBtb3JlIG1lc3NhZ2VzCi0gICAgcXVpZXQgLS0gaWYgdHJ1ZSwgZG9uJ3QgcHJpbnQgJ3NraXBwZWQnIG1lc3NhZ2VzIChwcm9iYWJseSByZWR1bmRhbnQpCi0gICAgaHVudHJsZWFrcyAtLSBydW4gbXVsdGlwbGUgdGltZXMgdG8gdGVzdCBmb3IgbGVha3M7IHJlcXVpcmVzIGEgZGVidWcKLSAgICAgICAgICAgICAgICAgIGJ1aWxkOyBhIHRyaXBsZSBjb3JyZXNwb25kaW5nIHRvIC1SJ3MgdGhyZWUgYXJndW1lbnRzCi0gICAgdXNlX3Jlc291cmNlcyAtLSBsaXN0IG9mIGV4dHJhIHJlc291cmNlcyB0byB1c2UKLSAgICBvdXRwdXRfb25fZmFpbHVyZSAtLSBpZiB0cnVlLCBkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUKLSAgICB0aW1lb3V0IC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCi0gICAgICAgICAgICAgICB0aW1lb3V0IHNlY29uZHMKLSAgICBmYWlsZmFzdCwgbWF0Y2hfdGVzdHMgLS0gU2VlIHJlZ3J0ZXN0IGNvbW1hbmQtbGluZSBmbGFncyBmb3IgdGhlc2UuCi0gICAgcGdvIC0tIGlmIHRydWUsIGRvIG5vdCBwcmludCB1bm5lY2Vzc2FyeSBpbmZvIHdoZW4gcnVubmluZyB0aGUgdGVzdAotICAgICAgICAgICBmb3IgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIGJ1aWxkCi0KLSAgICBSZXR1cm5zIHRoZSB0dXBsZSByZXN1bHQsIHRlc3RfdGltZSwgd2hlcmUgcmVzdWx0IGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzOgotICAgICAgICBJTlRFUlJVUFRFRCAgICAgIEtleWJvYXJkSW50ZXJydXB0IHdoZW4gcnVuIHVuZGVyIC1qCi0gICAgICAgIFJFU09VUkNFX0RFTklFRCAgdGVzdCBza2lwcGVkIGJlY2F1c2UgcmVzb3VyY2UgZGVuaWVkCi0gICAgICAgIFNLSVBQRUQgICAgICAgICAgdGVzdCBza2lwcGVkIGZvciBzb21lIG90aGVyIHJlYXNvbgotICAgICAgICBFTlZfQ0hBTkdFRCAgICAgIHRlc3QgZmFpbGVkIGJlY2F1c2UgaXQgY2hhbmdlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50Ci0gICAgICAgIEZBSUxFRCAgICAgICAgICAgdGVzdCBmYWlsZWQKLSAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAotICAgICIiIgotICAgIGlmIHVzZV9yZXNvdXJjZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IHVzZV9yZXNvdXJjZXMKLSAgICB1c2VfdGltZW91dCA9ICh0aW1lb3V0IGlzIG5vdCBOb25lKQotICAgIGlmIHVzZV90aW1lb3V0OgotICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgZXhpdD1UcnVlKQotICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5tYXRjaF90ZXN0cyA9IG1hdGNoX3Rlc3RzCi0gICAgICAgIGlmIGZhaWxmYXN0OgotICAgICAgICAgICAgc3VwcG9ydC5mYWlsZmFzdCA9IFRydWUKLSAgICAgICAgaWYgb3V0cHV0X29uX2ZhaWx1cmU6Ci0gICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSBUcnVlCi0KLSAgICAgICAgICAgICMgUmV1c2UgdGhlIHNhbWUgaW5zdGFuY2UgdG8gYWxsIGNhbGxzIHRvIHJ1bnRlc3QoKS4gU29tZQotICAgICAgICAgICAgIyB0ZXN0cyBrZWVwIGEgcmVmZXJlbmNlIHRvIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVycgotICAgICAgICAgICAgIyAoZWcuIHRlc3RfYXJncGFyc2UpLgotICAgICAgICAgICAgaWYgcnVudGVzdC5zdHJpbmdpbyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgICAgICAgICBydW50ZXN0LnN0cmluZ2lvID0gc3RyZWFtCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IHJ1bnRlc3Quc3RyaW5naW8KLSAgICAgICAgICAgICAgICBzdHJlYW0uc2VlaygwKQotICAgICAgICAgICAgICAgIHN0cmVhbS50cnVuY2F0ZSgpCi0KLSAgICAgICAgICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAotICAgICAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN0cmVhbQotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzdHJlYW0KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9mYWlsdXJlPUZhbHNlLCBwZ289cGdvKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdFswXSAhPSBQQVNTRUQgYW5kIG5vdCBwZ286Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHN0cmVhbS5nZXR2YWx1ZSgpCi0gICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLndyaXRlKG91dHB1dCkKLSAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gb3JpZ19zdGRvdXQKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gb3JpZ19zdGRlcnIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IHZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0Ci0gICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2ZhaWx1cmU9bm90IHZlcmJvc2UsIHBnbz1wZ28pCi0gICAgICAgIHJldHVybiByZXN1bHQKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiB1c2VfdGltZW91dDoKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5jYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQotICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIHZlcmJvc2UpCi1ydW50ZXN0LnN0cmluZ2lvID0gTm9uZQotCi0jIFVuaXQgdGVzdHMgYXJlIHN1cHBvc2VkIHRvIGxlYXZlIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQgdW5jaGFuZ2VkCi0jIG9uY2UgdGhleSBjb21wbGV0ZS4gIEJ1dCBzb21ldGltZXMgdGVzdHMgaGF2ZSBidWdzLCBlc3BlY2lhbGx5IHdoZW4KLSMgdGVzdHMgZmFpbCwgYW5kIHRoZSBjaGFuZ2VzIHRvIGVudmlyb25tZW50IGdvIG9uIHRvIG1lc3MgdXAgb3RoZXIKLSMgdGVzdHMuICBUaGlzIGNhbiBjYXVzZSBpc3N1ZXMgd2l0aCBidWlsZGJvdCBzdGFiaWxpdHksIHNpbmNlIHRlc3RzCi0jIGFyZSBydW4gaW4gcmFuZG9tIG9yZGVyIGFuZCBzbyBwcm9ibGVtcyBtYXkgYXBwZWFyIHRvIGNvbWUgYW5kIGdvLgotIyBUaGVyZSBhcmUgYSBmZXcgdGhpbmdzIHdlIGNhbiBzYXZlIGFuZCByZXN0b3JlIHRvIG1pdGlnYXRlIHRoaXMsIGFuZAotIyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbWFuYWdlciBoYW5kbGVzIHRoaXMgdGFzay4KLQotY2xhc3Mgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudDoKLSAgICAiIiJTYXZlIGJpdHMgb2YgdGhlIHRlc3QgZW52aXJvbm1lbnQgYW5kIHJlc3RvcmUgdGhlbSBhdCBibG9jayBleGl0LgotCi0gICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0bmFtZSwgdmVyYm9zZSwgcXVpZXQpOgotICAgICAgICAgICAgI3N0dWZmCi0KLSAgICBVbmxlc3MgcXVpZXQgaXMgVHJ1ZSwgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gc3RkZXJyIGlmIGFueSBvZgotICAgIHRoZSBzYXZlZCBpdGVtcyB3YXMgY2hhbmdlZCBieSB0aGUgdGVzdC4gIFRoZSBhdHRyaWJ1dGUgJ2NoYW5nZWQnCi0gICAgaXMgaW5pdGlhbGx5IEZhbHNlLCBidXQgaXMgc2V0IHRvIFRydWUgaWYgYSBjaGFuZ2UgaXMgZGV0ZWN0ZWQuCi0KLSAgICBJZiB2ZXJib3NlIGlzIG1vcmUgdGhhbiAxLCB0aGUgYmVmb3JlIGFuZCBhZnRlciBzdGF0ZSBvZiBjaGFuZ2VkCi0gICAgaXRlbXMgaXMgYWxzbyBwcmludGVkLgotICAgICIiIgotCi0gICAgY2hhbmdlZCA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdG5hbWUsIHZlcmJvc2U9MCwgcXVpZXQ9RmFsc2UsICosIHBnbz1GYWxzZSk6Ci0gICAgICAgIHNlbGYudGVzdG5hbWUgPSB0ZXN0bmFtZQotICAgICAgICBzZWxmLnZlcmJvc2UgPSB2ZXJib3NlCi0gICAgICAgIHNlbGYucXVpZXQgPSBxdWlldAotICAgICAgICBzZWxmLnBnbyA9IHBnbwotCi0gICAgIyBUbyBhZGQgdGhpbmdzIHRvIHNhdmUgYW5kIHJlc3RvcmUsIGFkZCBhIG5hbWUgWFhYIHRvIHRoZSByZXNvdXJjZXMgbGlzdAotICAgICMgYW5kIGFkZCBjb3JyZXNwb25kaW5nIGdldF9YWFgvcmVzdG9yZV9YWFggZnVuY3Rpb25zLiAgZ2V0X1hYWCBzaG91bGQKLSAgICAjIHJldHVybiB0aGUgdmFsdWUgdG8gYmUgc2F2ZWQgYW5kIGNvbXBhcmVkIGFnYWluc3QgYSBzZWNvbmQgY2FsbCB0byB0aGUKLSAgICAjIGdldCBmdW5jdGlvbiB3aGVuIHRlc3QgZXhlY3V0aW9uIGNvbXBsZXRlcy4gIHJlc3RvcmVfWFhYIHNob3VsZCBhY2NlcHQKLSAgICAjIHRoZSBzYXZlZCB2YWx1ZSBhbmQgcmVzdG9yZSB0aGUgcmVzb3VyY2UgdXNpbmcgaXQuICBJdCB3aWxsIGJlIGNhbGxlZCBpZgotICAgICMgYW5kIG9ubHkgaWYgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIGlzIGRldGVjdGVkLgotICAgICMKLSAgICAjIE5vdGU6IFhYWCB3aWxsIGhhdmUgYW55ICcuJyByZXBsYWNlZCB3aXRoICdfJyBjaGFyYWN0ZXJzIHdoZW4gZGV0ZXJtaW5pbmcKLSAgICAjIHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZCBuYW1lcy4KLQotICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAotICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKLSAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCi0gICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAotICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywKLSAgICAgICAgICAgICAgICAgIyBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpIG1heSByZWxlYXNlIHJlZgotICAgICAgICAgICAgICAgICAjIHRvIGEgdGhyZWFkLCBzbyBjaGVjayBwcm9jZXNzZXMgZmlyc3QuCi0gICAgICAgICAgICAgICAgICdtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcnLCAndGhyZWFkaW5nLl9kYW5nbGluZycsCi0gICAgICAgICAgICAgICAgICdzeXNjb25maWcuX0NPTkZJR19WQVJTJywgJ3N5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTJywKLSAgICAgICAgICAgICAgICAgJ2ZpbGVzJywgJ2xvY2FsZScsICd3YXJuaW5ncy5zaG93d2FybmluZycsCi0gICAgICAgICAgICAgICAgICdzaHV0aWxfYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbF91bnBhY2tfZm9ybWF0cycsCi0gICAgICAgICAgICAgICAgKQotCi0gICAgZGVmIGdldF9zeXNfYXJndihzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy5hcmd2KSwgc3lzLmFyZ3YsIHN5cy5hcmd2WzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX2FyZ3Yoc2VsZiwgc2F2ZWRfYXJndik6Ci0gICAgICAgIHN5cy5hcmd2ID0gc2F2ZWRfYXJndlsxXQotICAgICAgICBzeXMuYXJndls6XSA9IHNhdmVkX2FyZ3ZbMl0KLQotICAgIGRlZiBnZXRfY3dkKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MuZ2V0Y3dkKCkKLSAgICBkZWYgcmVzdG9yZV9jd2Qoc2VsZiwgc2F2ZWRfY3dkKToKLSAgICAgICAgb3MuY2hkaXIoc2F2ZWRfY3dkKQotCi0gICAgZGVmIGdldF9zeXNfc3Rkb3V0KHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZG91dAotICAgIGRlZiByZXN0b3JlX3N5c19zdGRvdXQoc2VsZiwgc2F2ZWRfc3Rkb3V0KToKLSAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVkX3N0ZG91dAotCi0gICAgZGVmIGdldF9zeXNfc3RkZXJyKHNlbGYpOgotICAgICAgICByZXR1cm4gc3lzLnN0ZGVycgotICAgIGRlZiByZXN0b3JlX3N5c19zdGRlcnIoc2VsZiwgc2F2ZWRfc3RkZXJyKToKLSAgICAgICAgc3lzLnN0ZGVyciA9IHNhdmVkX3N0ZGVycgotCi0gICAgZGVmIGdldF9zeXNfc3RkaW4oc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuc3RkaW4KLSAgICBkZWYgcmVzdG9yZV9zeXNfc3RkaW4oc2VsZiwgc2F2ZWRfc3RkaW4pOgotICAgICAgICBzeXMuc3RkaW4gPSBzYXZlZF9zdGRpbgotCi0gICAgZGVmIGdldF9vc19lbnZpcm9uKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQob3MuZW52aXJvbiksIG9zLmVudmlyb24sIGRpY3Qob3MuZW52aXJvbikKLSAgICBkZWYgcmVzdG9yZV9vc19lbnZpcm9uKHNlbGYsIHNhdmVkX2Vudmlyb24pOgotICAgICAgICBvcy5lbnZpcm9uID0gc2F2ZWRfZW52aXJvblsxXQotICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKLSAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoc2F2ZWRfZW52aXJvblsyXSkKLQotICAgIGRlZiBnZXRfc3lzX3BhdGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMucGF0aCksIHN5cy5wYXRoLCBzeXMucGF0aFs6XQotICAgIGRlZiByZXN0b3JlX3N5c19wYXRoKHNlbGYsIHNhdmVkX3BhdGgpOgotICAgICAgICBzeXMucGF0aCA9IHNhdmVkX3BhdGhbMV0KLSAgICAgICAgc3lzLnBhdGhbOl0gPSBzYXZlZF9wYXRoWzJdCi0KLSAgICBkZWYgZ2V0X3N5c19wYXRoX2hvb2tzKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGhfaG9va3MpLCBzeXMucGF0aF9ob29rcywgc3lzLnBhdGhfaG9va3NbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aF9ob29rcyhzZWxmLCBzYXZlZF9ob29rcyk6Ci0gICAgICAgIHN5cy5wYXRoX2hvb2tzID0gc2F2ZWRfaG9va3NbMV0KLSAgICAgICAgc3lzLnBhdGhfaG9va3NbOl0gPSBzYXZlZF9ob29rc1syXQotCi0gICAgZGVmIGdldF9zeXNfZ2V0dHJhY2Uoc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuZ2V0dHJhY2UoKQotICAgIGRlZiByZXN0b3JlX3N5c19nZXR0cmFjZShzZWxmLCB0cmFjZV9meG4pOgotICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VfZnhuKQotCi0gICAgZGVmIGdldF9fX2ltcG9ydF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gYnVpbHRpbnMuX19pbXBvcnRfXwotICAgIGRlZiByZXN0b3JlX19faW1wb3J0X18oc2VsZiwgaW1wb3J0Xyk6Ci0gICAgICAgIGJ1aWx0aW5zLl9faW1wb3J0X18gPSBpbXBvcnRfCi0KLSAgICBkZWYgZ2V0X3dhcm5pbmdzX2ZpbHRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZCh3YXJuaW5ncy5maWx0ZXJzKSwgd2FybmluZ3MuZmlsdGVycywgd2FybmluZ3MuZmlsdGVyc1s6XQotICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX2ZpbHRlcnMoc2VsZiwgc2F2ZWRfZmlsdGVycyk6Ci0gICAgICAgIHdhcm5pbmdzLmZpbHRlcnMgPSBzYXZlZF9maWx0ZXJzWzFdCi0gICAgICAgIHdhcm5pbmdzLmZpbHRlcnNbOl0gPSBzYXZlZF9maWx0ZXJzWzJdCi0KLSAgICBkZWYgZ2V0X2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZik6Ci0gICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCi0gICAgICAgICMgWFhYIE1ha2luZyBhIGNvcHkga2VlcHMgb2JqZWN0cyBhbGl2ZSB1bnRpbCBfX2V4aXRfXyBnZXRzIGNhbGxlZC4KLSAgICAgICAgcmV0dXJuIGFzeW5jb3JlIGFuZCBhc3luY29yZS5zb2NrZXRfbWFwLmNvcHkoKSBvciB7fQotICAgIGRlZiByZXN0b3JlX2FzeW5jb3JlX3NvY2tldF9tYXAoc2VsZiwgc2F2ZWRfbWFwKToKLSAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKLSAgICAgICAgaWYgYXN5bmNvcmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQotICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQotCi0gICAgZGVmIGdldF9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYpOgotICAgICAgICAjIHdlIGNvdWxkIGNhbGwgZ2V0X2FyY2hpdmVzX2Zvcm1hdHMoKSBidXQgdGhhdCBvbmx5IHJldHVybnMgdGhlCi0gICAgICAgICMgcmVnaXN0cnkga2V5czsgd2Ugd2FudCB0byBjaGVjayB0aGUgdmFsdWVzIHRvbyAodGhlIGZ1bmN0aW9ucyB0aGF0Ci0gICAgICAgICMgYXJlIHJlZ2lzdGVyZWQpCi0gICAgICAgIHJldHVybiBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUywgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTID0gc2F2ZWRbMF0KLSAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMuY2xlYXIoKQotICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCi0KLSAgICBkZWYgZ2V0X3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMsIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUyA9IHNhdmVkWzBdCi0gICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMuY2xlYXIoKQotICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKLQotICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlcnMoc2VsZik6Ci0gICAgICAgICMgX2hhbmRsZXJzIGlzIGEgV2Vha1ZhbHVlRGljdGlvbmFyeQotICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlcnMpLCBsb2dnaW5nLl9oYW5kbGVycywgbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlcnMoc2VsZiwgc2F2ZWRfaGFuZGxlcnMpOgotICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmKToKLSAgICAgICAgIyBfaGFuZGxlckxpc3QgaXMgYSBsaXN0IG9mIHdlYWtyZWZzIHRvIGhhbmRsZXJzCi0gICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVyTGlzdCksIGxvZ2dpbmcuX2hhbmRsZXJMaXN0LCBsb2dnaW5nLl9oYW5kbGVyTGlzdFs6XQotICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYsIHNhdmVkX2hhbmRsZXJMaXN0KToKLSAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiBnZXRfc3lzX3dhcm5vcHRpb25zKHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLndhcm5vcHRpb25zKSwgc3lzLndhcm5vcHRpb25zLCBzeXMud2Fybm9wdGlvbnNbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfd2Fybm9wdGlvbnMoc2VsZiwgc2F2ZWRfb3B0aW9ucyk6Ci0gICAgICAgIHN5cy53YXJub3B0aW9ucyA9IHNhdmVkX29wdGlvbnNbMV0KLSAgICAgICAgc3lzLndhcm5vcHRpb25zWzpdID0gc2F2ZWRfb3B0aW9uc1syXQotCi0gICAgIyBDb250cm9sbGluZyBkYW5nbGluZyByZWZlcmVuY2VzIHRvIFRocmVhZCBvYmplY3RzIGNhbiBtYWtlIGl0IGVhc2llcgotICAgICMgdG8gdHJhY2sgcmVmZXJlbmNlIGxlYWtzLgotICAgIGRlZiBnZXRfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmKToKLSAgICAgICAgaWYgbm90IHRocmVhZGluZzoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCi0gICAgICAgIHJldHVybiB0aHJlYWRpbmcuX2RhbmdsaW5nLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgotICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcuY2xlYXIoKQotICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKLQotICAgICMgU2FtZSBmb3IgUHJvY2VzcyBvYmplY3RzCi0gICAgZGVmIGdldF9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZik6Ci0gICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIFVuam9pbmVkIHByb2Nlc3Mgb2JqZWN0cyBjYW4gc3Vydml2ZSBhZnRlciBwcm9jZXNzIGV4aXRzCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkKLSAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKLSAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9tdWx0aXByb2Nlc3NpbmdfcHJvY2Vzc19fZGFuZ2xpbmcoc2VsZiwgc2F2ZWQpOgotICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy5jbGVhcigpCi0gICAgICAgIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCi0KLSAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZik6Ci0gICAgICAgICMgbWFrZSBzdXJlIHRoZSBkaWN0IGlzIGluaXRpYWxpemVkCi0gICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigncHJlZml4JykKLSAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0NPTkZJR19WQVJTKSwgc3lzY29uZmlnLl9DT05GSUdfVkFSUywKLSAgICAgICAgICAgICAgICBkaWN0KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpKQotICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fQ09ORklHX1ZBUlMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2F2ZWRbMV0KLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCi0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNhdmVkWzJdKQotCi0gICAgZGVmIGdldF9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChpZChzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyksIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLAotICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNvcHkoKSkKLSAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0lOU1RBTExfU0NIRU1FUyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTID0gc2F2ZWRbMV0KLSAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY2xlYXIoKQotICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy51cGRhdGUoc2F2ZWRbMl0pCi0KLSAgICBkZWYgZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc29ydGVkKGZuICsgKCcvJyBpZiBvcy5wYXRoLmlzZGlyKGZuKSBlbHNlICcnKQotICAgICAgICAgICAgICAgICAgICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKCkpCi0gICAgZGVmIHJlc3RvcmVfZmlsZXMoc2VsZiwgc2F2ZWRfdmFsdWUpOgotICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCi0gICAgICAgIGlmIGZuIG5vdCBpbiBzYXZlZF92YWx1ZSBhbmQgKGZuICsgJy8nKSBub3QgaW4gc2F2ZWRfdmFsdWU6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbik6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoZm4pCi0gICAgICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoZm4pOgotICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQotCi0gICAgX2xjID0gW2dldGF0dHIobG9jYWxlLCBsYykgZm9yIGxjIGluIGRpcihsb2NhbGUpCi0gICAgICAgICAgIGlmIGxjLnN0YXJ0c3dpdGgoJ0xDXycpXQotICAgIGRlZiBnZXRfbG9jYWxlKHNlbGYpOgotICAgICAgICBwYWlyaW5ncyA9IFtdCi0gICAgICAgIGZvciBsYyBpbiBzZWxmLl9sYzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwYWlyaW5ncy5hcHBlbmQoKGxjLCBsb2NhbGUuc2V0bG9jYWxlKGxjLCBOb25lKSkpCi0gICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcmV0dXJuIHBhaXJpbmdzCi0gICAgZGVmIHJlc3RvcmVfbG9jYWxlKHNlbGYsIHNhdmVkKToKLSAgICAgICAgZm9yIGxjLCBzZXR0aW5nIGluIHNhdmVkOgotICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsYywgc2V0dGluZykKLQotICAgIGRlZiBnZXRfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiB3YXJuaW5ncy5zaG93d2FybmluZwotICAgIGRlZiByZXN0b3JlX3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYsIGZ4bik6Ci0gICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nID0gZnhuCi0KLSAgICBkZWYgcmVzb3VyY2VfaW5mbyhzZWxmKToKLSAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5yZXNvdXJjZXM6Ci0gICAgICAgICAgICBtZXRob2Rfc3VmZml4ID0gbmFtZS5yZXBsYWNlKCcuJywgJ18nKQotICAgICAgICAgICAgZ2V0X25hbWUgPSAnZ2V0XycgKyBtZXRob2Rfc3VmZml4Ci0gICAgICAgICAgICByZXN0b3JlX25hbWUgPSAncmVzdG9yZV8nICsgbWV0aG9kX3N1ZmZpeAotICAgICAgICAgICAgeWllbGQgbmFtZSwgZ2V0YXR0cihzZWxmLCBnZXRfbmFtZSksIGdldGF0dHIoc2VsZiwgcmVzdG9yZV9uYW1lKQotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zYXZlZF92YWx1ZXMgPSBkaWN0KChuYW1lLCBnZXQoKSkgZm9yIG5hbWUsIGdldCwgcmVzdG9yZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCkpCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6Ci0gICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCi0gICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcwotICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKSAgIyBTb21lIHJlc291cmNlcyB1c2Ugd2VhayByZWZlcmVuY2VzCi0gICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6Ci0gICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKLSAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQotICAgICAgICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyB0byB0aGUgcmVzb3VyY2UncyB2YWx1ZQotICAgICAgICAgICAgaWYgY3VycmVudCAhPSBvcmlnaW5hbDoKLSAgICAgICAgICAgICAgICBzZWxmLmNoYW5nZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmVzdG9yZShvcmlnaW5hbCkKLSAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5xdWlldCBhbmQgbm90IHNlbGYucGdvOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZyAtLSB7fSB3YXMgbW9kaWZpZWQgYnkge30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLnRlc3RuYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudmVyYm9zZSA+IDEgYW5kIG5vdCBzZWxmLnBnbzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgIEJlZm9yZToge31cbiAgQWZ0ZXI6ICB7fSAiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwsIGN1cnJlbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LAotICAgICAgICAgICAgICAgICAgaHVudHJsZWFrcz1GYWxzZSwgZGlzcGxheV9mYWlsdXJlPVRydWUsIHBnbz1GYWxzZSk6Ci0gICAgc3VwcG9ydC51bmxvYWQodGVzdCkKLQotICAgIHRlc3RfdGltZSA9IDAuMAotICAgIHJlZmxlYWsgPSBGYWxzZSAgIyBUcnVlIGlmIHRoZSB0ZXN0IGxlYWtlZCByZWZlcmVuY2VzLgotICAgIHRyeToKLSAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpOgotICAgICAgICAgICAgYWJzdGVzdCA9IHRlc3QKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQWx3YXlzIGltcG9ydCBpdCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UKLSAgICAgICAgICAgIGFic3Rlc3QgPSAndGVzdC4nICsgdGVzdAotICAgICAgICBjbGVhcl9jYWNoZXMoKQotICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdCwgdmVyYm9zZSwgcXVpZXQsIHBnbz1wZ28pIGFzIGVudmlyb25tZW50OgotICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICB0aGVfbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoYWJzdGVzdCkKLSAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCi0gICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCi0gICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bm5lcigpOgotICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGVfbW9kdWxlKQotICAgICAgICAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gbG9hZGVyLmVycm9yczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGVycm9yLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxvYWRlci5lcnJvcnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImVycm9ycyB3aGlsZSBsb2FkaW5nIHRlc3RzIikKLSAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCi0gICAgICAgICAgICB0ZXN0X3J1bm5lcigpCi0gICAgICAgICAgICBpZiBodW50cmxlYWtzOgotICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgdGVzdF9ydW5uZXIsIGh1bnRybGVha3MpCi0gICAgICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKLSAgICBleGNlcHQgc3VwcG9ydC5SZXNvdXJjZURlbmllZCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJldHVybiBSRVNPVVJDRV9ERU5JRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdCB1bml0dGVzdC5Ta2lwVGVzdCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKLSAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnKQotICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgIHJldHVybiBTS0lQUEVELCB0ZXN0X3RpbWUKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHJhaXNlCi0gICAgZXhjZXB0IHN1cHBvcnQuVGVzdEZhaWxlZCBhcyBtc2c6Ci0gICAgICAgIGlmIG5vdCBwZ286Ci0gICAgICAgICAgICBpZiBkaXNwbGF5X2ZhaWx1cmU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50KCJ0ZXN0IiwgdGVzdCwgImZhaWxlZCIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdDoKLSAgICAgICAgbXNnID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQotICAgICAgICBpZiBub3QgcGdvOgotICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiY3Jhc2hlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCi0gICAgZWxzZToKLSAgICAgICAgaWYgcmVmbGVhazoKLSAgICAgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQotICAgICAgICBpZiBlbnZpcm9ubWVudC5jaGFuZ2VkOgotICAgICAgICAgICAgcmV0dXJuIEVOVl9DSEFOR0VELCB0ZXN0X3RpbWUKLSAgICAgICAgcmV0dXJuIFBBU1NFRCwgdGVzdF90aW1lCi0KLWRlZiBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3RuYW1lLCB2ZXJib3NlKToKLSAgICBpbXBvcnQgc2h1dGlsCi0gICAgaW1wb3J0IHN0YXQKLSAgICBpbXBvcnQgZ2MKLQotICAgICMgRmlyc3Qga2lsbCBhbnkgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBvcGVuIGZpbGVzIGV0Yy4KLSAgICAjIFRoaXMgY2FuIGFsc28gaXNzdWUgc29tZSBSZXNvdXJjZVdhcm5pbmdzIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBnZXQKLSAgICAjIHRyaWdnZXJlZCBkdXJpbmcgdGhlIGZvbGxvd2luZyB0ZXN0IHJ1biwgYW5kIHBvc3NpYmx5IHByb2R1Y2UgZmFpbHVyZXMuCi0gICAgZ2MuY29sbGVjdCgpCi0KLSAgICAjIFRyeSB0byBjbGVhbiB1cCBqdW5rIGNvbW1vbmx5IGxlZnQgYmVoaW5kLiAgV2hpbGUgdGVzdHMgc2hvdWxkbid0IGxlYXZlCi0gICAgIyBhbnkgZmlsZXMgb3IgZGlyZWN0b3JpZXMgYmVoaW5kLCB3aGVuIGEgdGVzdCBmYWlscyB0aGF0IGNhbiBiZSB0ZWRpb3VzCi0gICAgIyBmb3IgaXQgdG8gYXJyYW5nZS4gIFRoZSBjb25zZXF1ZW5jZXMgY2FuIGJlIGVzcGVjaWFsbHkgbmFzdHkgb24gV2luZG93cywKLSAgICAjIHNpbmNlIGlmIGEgdGVzdCBsZWF2ZXMgYSBmaWxlIG9wZW4sIGl0IGNhbm5vdCBiZSBkZWxldGVkIGJ5IG5hbWUgKHdoaWxlCi0gICAgIyB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IHRoYXQgaGVyZSBlaXRoZXIsIHdlIGNhbiBkaXNwbGF5IHRoZQotICAgICMgbmFtZSBvZiB0aGUgb2ZmZW5kaW5nIHRlc3QsIHdoaWNoIGlzIGEgcmVhbCBoZWxwKS4KLSAgICBmb3IgbmFtZSBpbiAoc3VwcG9ydC5URVNURk4sCi0gICAgICAgICAgICAgICAgICJkYl9ob21lIiwKLSAgICAgICAgICAgICAgICApOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobmFtZSk6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIobmFtZSk6Ci0gICAgICAgICAgICBraW5kLCBudWtlciA9ICJkaXJlY3RvcnkiLCBzaHV0aWwucm10cmVlCi0gICAgICAgIGVsaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6Ci0gICAgICAgICAgICBraW5kLCBudWtlciA9ICJmaWxlIiwgb3MudW5saW5rCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigib3MucGF0aCBzYXlzICVyIGV4aXN0cyBidXQgaXMgbmVpdGhlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IG5vciBmaWxlIiAlIG5hbWUpCi0KLSAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCIlciBsZWZ0IGJlaGluZCAlcyAlciIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIGlmIHdlIGhhdmUgY2htb2QsIGZpeCBwb3NzaWJsZSBwZXJtaXNzaW9ucyBwcm9ibGVtcwotICAgICAgICAgICAgIyB0aGF0IG1pZ2h0IHByZXZlbnQgY2xlYW51cAotICAgICAgICAgICAgaWYgKGhhc2F0dHIob3MsICdjaG1vZCcpKToKLSAgICAgICAgICAgICAgICBvcy5jaG1vZChuYW1lLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWEcgfCBzdGF0LlNfSVJXWE8pCi0gICAgICAgICAgICBudWtlcihuYW1lKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIG1zZzoKLSAgICAgICAgICAgIHByaW50KCgiJXIgbGVmdCBiZWhpbmQgJXMgJXIgYW5kIGl0IGNvdWxkbid0IGJlICIKLSAgICAgICAgICAgICAgICAicmVtb3ZlZDogJXMiICUgKHRlc3RuYW1lLCBraW5kLCBuYW1lLCBtc2cpKSwgZmlsZT1zeXMuc3RkZXJyKQotCi1kZWYgZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIGluZGlyZWN0X3Rlc3QsIGh1bnRybGVha3MpOgotICAgICIiIlJ1biBhIHRlc3QgbXVsdGlwbGUgdGltZXMsIGxvb2tpbmcgZm9yIHJlZmVyZW5jZSBsZWFrcy4KLQotICAgIFJldHVybnM6Ci0gICAgICAgIEZhbHNlIGlmIHRoZSB0ZXN0IGRpZG4ndCBsZWFrIHJlZmVyZW5jZXM7IFRydWUgaWYgd2UgZGV0ZWN0ZWQgcmVmbGVha3MuCi0gICAgIiIiCi0gICAgIyBUaGlzIGNvZGUgaXMgaGFja2lzaCBhbmQgaW5lbGVnYW50LCBidXQgaXQgc2VlbXMgdG8gZG8gdGhlIGpvYi4KLSAgICBpbXBvcnQgY29weXJlZwotICAgIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLQotICAgIGlmIG5vdCBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJUcmFja2luZyByZWZlcmVuY2UgbGVha3MgcmVxdWlyZXMgYSBkZWJ1ZyBidWlsZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAib2YgUHl0aG9uIikKLQotICAgICMgU2F2ZSBjdXJyZW50IHZhbHVlcyBmb3IgZGFzaF9SX2NsZWFudXAoKSB0byByZXN0b3JlLgotICAgIGZzID0gd2FybmluZ3MuZmlsdGVyc1s6XQotICAgIHBzID0gY29weXJlZy5kaXNwYXRjaF90YWJsZS5jb3B5KCkKLSAgICBwaWMgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jb3B5KCkKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB6aXBpbXBvcnQKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHpkYyA9IE5vbmUgIyBSdW4gdW5tb2RpZmllZCBvbiBwbGF0Zm9ybXMgd2l0aG91dCB6aXBpbXBvcnQgc3VwcG9ydAotICAgIGVsc2U6Ci0gICAgICAgIHpkYyA9IHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jb3B5KCkKLSAgICBhYmNzID0ge30KLSAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgotICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgotICAgICAgICAgICAgYWJjc1tvYmpdID0gb2JqLl9hYmNfcmVnaXN0cnkuY29weSgpCi0KLSAgICBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUgPSBodW50cmxlYWtzCi0gICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgZm5hbWUpCi0gICAgcmVwY291bnQgPSBud2FybXVwICsgbnRyYWNrZWQKLSAgICByY19kZWx0YXMgPSBbMF0gKiByZXBjb3VudAotICAgIGFsbG9jX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50Ci0KLSAgICBwcmludCgiYmVnaW5uaW5nIiwgcmVwY291bnQsICJyZXBldGl0aW9ucyIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICBwcmludCgoIjEyMzQ1Njc4OTAiKihyZXBjb3VudC8vMTAgKyAxKSlbOnJlcGNvdW50XSwgZmlsZT1zeXMuc3RkZXJyKQotICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgIGZvciBpIGluIHJhbmdlKHJlcGNvdW50KToKLSAgICAgICAgaW5kaXJlY3RfdGVzdCgpCi0gICAgICAgIGFsbG9jX2FmdGVyLCByY19hZnRlciA9IGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsIGFiY3MpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJy4nKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgaWYgaSA+PSBud2FybXVwOgotICAgICAgICAgICAgcmNfZGVsdGFzW2ldID0gcmNfYWZ0ZXIgLSByY19iZWZvcmUKLSAgICAgICAgICAgIGFsbG9jX2RlbHRhc1tpXSA9IGFsbG9jX2FmdGVyIC0gYWxsb2NfYmVmb3JlCi0gICAgICAgIGFsbG9jX2JlZm9yZSwgcmNfYmVmb3JlID0gYWxsb2NfYWZ0ZXIsIHJjX2FmdGVyCi0gICAgcHJpbnQoZmlsZT1zeXMuc3RkZXJyKQotICAgICMgVGhlc2UgY2hlY2tlcnMgcmV0dXJuIEZhbHNlIG9uIHN1Y2Nlc3MsIFRydWUgb24gZmFpbHVyZQotICAgIGRlZiBjaGVja19yY19kZWx0YXMoZGVsdGFzKToKLSAgICAgICAgcmV0dXJuIGFueShkZWx0YXMpCi0gICAgZGVmIGNoZWNrX2FsbG9jX2RlbHRhcyhkZWx0YXMpOgotICAgICAgICAjIEF0IGxlYXN0IDEvM3JkIG9mIDBzCi0gICAgICAgIGlmIDMgKiBkZWx0YXMuY291bnQoMCkgPCBsZW4oZGVsdGFzKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICMgTm90aGluZyBlbHNlIHRoYW4gMXMsIDBzIGFuZCAtMXMKLSAgICAgICAgaWYgbm90IHNldChkZWx0YXMpIDw9IHsxLDAsLTF9OgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZmFpbGVkID0gRmFsc2UKLSAgICBmb3IgZGVsdGFzLCBpdGVtX25hbWUsIGNoZWNrZXIgaW4gWwotICAgICAgICAocmNfZGVsdGFzLCAncmVmZXJlbmNlcycsIGNoZWNrX3JjX2RlbHRhcyksCi0gICAgICAgIChhbGxvY19kZWx0YXMsICdtZW1vcnkgYmxvY2tzJywgY2hlY2tfYWxsb2NfZGVsdGFzKV06Ci0gICAgICAgIGlmIGNoZWNrZXIoZGVsdGFzKToKLSAgICAgICAgICAgIG1zZyA9ICclcyBsZWFrZWQgJXMgJXMsIHN1bT0lcycgJSAoCi0gICAgICAgICAgICAgICAgdGVzdCwgZGVsdGFzW253YXJtdXA6XSwgaXRlbV9uYW1lLCBzdW0oZGVsdGFzKSkKLSAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJhIikgYXMgcmVmcmVwOgotICAgICAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1yZWZyZXApCi0gICAgICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKLSAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKLSAgICByZXR1cm4gZmFpbGVkCi0KLWRlZiBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKToKLSAgICBpbXBvcnQgZ2MsIGNvcHlyZWcKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi0gICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0Ci0KLSAgICAjIFJlc3RvcmUgc29tZSBvcmlnaW5hbCB2YWx1ZXMuCi0gICAgd2FybmluZ3MuZmlsdGVyc1s6XSA9IGZzCi0gICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS5jbGVhcigpCi0gICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS51cGRhdGUocHMpCi0gICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnVwZGF0ZShwaWMpCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgemlwaW1wb3J0Ci0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKLSAgICBlbHNlOgotICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY2xlYXIoKQotICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUudXBkYXRlKHpkYykKLQotICAgICMgY2xlYXIgdHlwZSBjYWNoZQotICAgIHN5cy5fY2xlYXJfdHlwZV9jYWNoZSgpCi0KLSAgICAjIENsZWFyIEFCQyByZWdpc3RyaWVzLCByZXN0b3JpbmcgcHJldmlvdXNseSBzYXZlZCBBQkMgcmVnaXN0cmllcy4KLSAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgotICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgotICAgICAgICAgICAgb2JqLl9hYmNfcmVnaXN0cnkgPSBhYmNzLmdldChvYmosIFdlYWtTZXQoKSkuY29weSgpCi0gICAgICAgICAgICBvYmouX2FiY19jYWNoZS5jbGVhcigpCi0gICAgICAgICAgICBvYmouX2FiY19uZWdhdGl2ZV9jYWNoZS5jbGVhcigpCi0KLSAgICBjbGVhcl9jYWNoZXMoKQotCi0gICAgIyBDb2xsZWN0IGN5Y2xpYyB0cmFzaCBhbmQgcmVhZCBtZW1vcnkgc3RhdGlzdGljcyBpbW1lZGlhdGVseSBhZnRlci4KLSAgICBmdW5jMSA9IHN5cy5nZXRhbGxvY2F0ZWRibG9ja3MKLSAgICBmdW5jMiA9IHN5cy5nZXR0b3RhbHJlZmNvdW50Ci0gICAgZ2MuY29sbGVjdCgpCi0gICAgcmV0dXJuIGZ1bmMxKCksIGZ1bmMyKCkKLQotZGVmIGNsZWFyX2NhY2hlcygpOgotICAgIGltcG9ydCBnYwotCi0gICAgIyBDbGVhciB0aGUgd2FybmluZ3MgcmVnaXN0cnksIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBhZ2FpbgotICAgIGZvciBtb2QgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6Ci0gICAgICAgIGlmIGhhc2F0dHIobW9kLCAnX193YXJuaW5ncmVnaXN0cnlfXycpOgotICAgICAgICAgICAgZGVsIG1vZC5fX3dhcm5pbmdyZWdpc3RyeV9fCi0KLSAgICAjIEZsdXNoIHN0YW5kYXJkIG91dHB1dCwgc28gdGhhdCBidWZmZXJlZCBkYXRhIGlzIHNlbnQgdG8gdGhlIE9TIGFuZAotICAgICMgYXNzb2NpYXRlZCBQeXRob24gb2JqZWN0cyBhcmUgcmVjbGFpbWVkLgotICAgIGZvciBzdHJlYW0gaW4gKHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIsIHN5cy5fX3N0ZG91dF9fLCBzeXMuX19zdGRlcnJfXyk6Ci0gICAgICAgIGlmIHN0cmVhbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpCi0KLSAgICAjIENsZWFyIGFzc29ydGVkIG1vZHVsZSBjYWNoZXMuCi0gICAgIyBEb24ndCB3b3JyeSBhYm91dCByZXNldHRpbmcgdGhlIGNhY2hlIGlmIHRoZSBtb2R1bGUgaXMgbm90IGxvYWRlZAotICAgIHRyeToKLSAgICAgICAgZGlzdHV0aWxzX2Rpcl91dGlsID0gc3lzLm1vZHVsZXNbJ2Rpc3R1dGlscy5kaXJfdXRpbCddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgZGlzdHV0aWxzX2Rpcl91dGlsLl9wYXRoX2NyZWF0ZWQuY2xlYXIoKQotCi0gICAgcmUucHVyZ2UoKQotCi0gICAgdHJ5OgotICAgICAgICBfc3RycHRpbWUgPSBzeXMubW9kdWxlc1snX3N0cnB0aW1lJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBfc3RycHRpbWUuX3JlZ2V4X2NhY2hlLmNsZWFyKCkKLQotICAgIHRyeToKLSAgICAgICAgdXJsbGliX3BhcnNlID0gc3lzLm1vZHVsZXNbJ3VybGxpYi5wYXJzZSddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgdXJsbGliX3BhcnNlLmNsZWFyX2NhY2hlKCkKLQotICAgIHRyeToKLSAgICAgICAgdXJsbGliX3JlcXVlc3QgPSBzeXMubW9kdWxlc1sndXJsbGliLnJlcXVlc3QnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHVybGxpYl9yZXF1ZXN0LnVybGNsZWFudXAoKQotCi0gICAgdHJ5OgotICAgICAgICBsaW5lY2FjaGUgPSBzeXMubW9kdWxlc1snbGluZWNhY2hlJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBsaW5lY2FjaGUuY2xlYXJjYWNoZSgpCi0KLSAgICB0cnk6Ci0gICAgICAgIG1pbWV0eXBlcyA9IHN5cy5tb2R1bGVzWydtaW1ldHlwZXMnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIG1pbWV0eXBlcy5fZGVmYXVsdF9taW1lX3R5cGVzKCkKLQotICAgIHRyeToKLSAgICAgICAgZmlsZWNtcCA9IHN5cy5tb2R1bGVzWydmaWxlY21wJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBmaWxlY21wLl9jYWNoZS5jbGVhcigpCi0KLSAgICB0cnk6Ci0gICAgICAgIHN0cnVjdCA9IHN5cy5tb2R1bGVzWydzdHJ1Y3QnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIHN0cnVjdC5fY2xlYXJjYWNoZSgpCi0KLSAgICB0cnk6Ci0gICAgICAgIGRvY3Rlc3QgPSBzeXMubW9kdWxlc1snZG9jdGVzdCddCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgZG9jdGVzdC5tYXN0ZXIgPSBOb25lCi0KLSAgICB0cnk6Ci0gICAgICAgIGN0eXBlcyA9IHN5cy5tb2R1bGVzWydjdHlwZXMnXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGN0eXBlcy5fcmVzZXRfY2FjaGUoKQotCi0gICAgdHJ5OgotICAgICAgICB0eXBpbmcgPSBzeXMubW9kdWxlc1sndHlwaW5nJ10KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBmb3IgZiBpbiB0eXBpbmcuX2NsZWFudXBzOgotICAgICAgICAgICAgZigpCi0KLSAgICBnYy5jb2xsZWN0KCkKLQotZGVmIHdhcm1fY2FjaGVzKCk6Ci0gICAgIyBjaGFyIGNhY2hlCi0gICAgcyA9IGJ5dGVzKHJhbmdlKDI1NikpCi0gICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgc1tpOmkrMV0KLSAgICAjIHVuaWNvZGUgY2FjaGUKLSAgICB4ID0gW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQotICAgICMgaW50IGNhY2hlCi0gICAgeCA9IGxpc3QocmFuZ2UoLTUsIDI1NykpCi0KLWRlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgotICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyCi0KLWRlZiByZW1vdmVweShuYW1lcyk6Ci0gICAgaWYgbm90IG5hbWVzOgotICAgICAgICByZXR1cm4KLSAgICBmb3IgaWR4LCBuYW1lIGluIGVudW1lcmF0ZShuYW1lcyk6Ci0gICAgICAgIGJhc2VuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIGV4dCA9PSAnLnB5JzoKLSAgICAgICAgICAgIG5hbWVzW2lkeF0gPSBiYXNlbmFtZQotCi1kZWYgY291bnQobiwgd29yZCk6Ci0gICAgaWYgbiA9PSAxOgotICAgICAgICByZXR1cm4gIiVkICVzIiAlIChuLCB3b3JkKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAiJWQgJXNzIiAlIChuLCB3b3JkKQotCi1kZWYgcHJpbnRsaXN0KHgsIHdpZHRoPTcwLCBpbmRlbnQ9NCk6Ci0gICAgIiIiUHJpbnQgdGhlIGVsZW1lbnRzIG9mIGl0ZXJhYmxlIHggdG8gc3Rkb3V0LgotCi0gICAgT3B0aW9uYWwgYXJnIHdpZHRoIChkZWZhdWx0IDcwKSBpcyB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aC4KLSAgICBPcHRpb25hbCBhcmcgaW5kZW50IChkZWZhdWx0IDQpIGlzIHRoZSBudW1iZXIgb2YgYmxhbmtzIHdpdGggd2hpY2ggdG8KLSAgICBiZWdpbiBlYWNoIGxpbmUuCi0gICAgIiIiCi0KLSAgICBmcm9tIHRleHR3cmFwIGltcG9ydCBmaWxsCi0gICAgYmxhbmtzID0gJyAnICogaW5kZW50Ci0gICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQotICAgIHByaW50KGZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKLSAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKSkKLQotCi1kZWYgbWFpbl9pbl90ZW1wX2N3ZCgpOgotICAgICIiIlJ1biBtYWluKCkgaW4gYSB0ZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcnkuIiIiCi0gICAgaWYgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5ta2RpcihURU1QRElSKQotICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZwotICAgICMgdGhlIHRlc3RzLiBUaGUgbmFtZSBvZiB0aGUgZGlyIGluY2x1ZGVzIHRoZSBwaWQgdG8gYWxsb3cgcGFyYWxsZWwKLSAgICAjIHRlc3RpbmcgKHNlZSB0aGUgLWogb3B0aW9uKS4KLSAgICB0ZXN0X2N3ZCA9ICd0ZXN0X3B5dGhvbl97fScuZm9ybWF0KG9zLmdldHBpZCgpKQotICAgIHRlc3RfY3dkID0gb3MucGF0aC5qb2luKFRFTVBESVIsIHRlc3RfY3dkKQotCi0gICAgIyBSdW4gdGhlIHRlc3RzIGluIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgQ1dEIHRvIGEKLSAgICAjIHRlbXBvcmFyeSBhbmQgd3JpdGFibGUgZGlyZWN0b3J5LiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yCi0gICAgIyBjaGFuZ2UgdGhlIENXRCwgdGhlIG9yaWdpbmFsIENXRCB3aWxsIGJlIHVzZWQuICBUaGUgb3JpZ2luYWwgQ1dEIGlzCi0gICAgIyBhdmFpbGFibGUgZnJvbSBzdXBwb3J0LlNBVkVEQ1dELgotICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCh0ZXN0X2N3ZCwgcXVpZXQ9VHJ1ZSk6Ci0gICAgICAgIG1haW4oKQotCitkZWYgX21haW4oKToKKyAgICBnbG9iYWwgX19maWxlX18KIAotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAjIFJlbW92ZSByZWdydGVzdC5weSdzIG93biBkaXJlY3RvcnkgZnJvbSB0aGUgbW9kdWxlIHNlYXJjaCBwYXRoLiBEZXNwaXRlCiAgICAgIyB0aGUgZWxpbWluYXRpb24gb2YgaW1wbGljaXQgcmVsYXRpdmUgaW1wb3J0cywgdGhpcyBpcyBzdGlsbCBuZWVkZWQgdG8KICAgICAjIGVuc3VyZSB0aGF0IHN1Ym1vZHVsZXMgb2YgdGhlIHRlc3QgcGFja2FnZSBkbyBub3QgaW5hcHByb3ByaWF0ZWx5IGFwcGVhcgogICAgICMgYXMgdG9wLWxldmVsIG1vZHVsZXMgZXZlbiB3aGVuIHBlb3BsZSAob3IgYnVpbGRib3RzISkgaW52b2tlIHJlZ3J0ZXN0LnB5CiAgICAgIyBkaXJlY3RseSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSAtbSBzd2l0Y2gKICAgICBteWRpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguZGlybmFtZShzeXMuYXJndlswXSkpKQotICAgIGkgPSBsZW4oc3lzLnBhdGgpCisgICAgaSA9IGxlbihzeXMucGF0aCkgLSAxCiAgICAgd2hpbGUgaSA+PSAwOgotICAgICAgICBpIC09IDEKICAgICAgICAgaWYgb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgoc3lzLnBhdGhbaV0pKSA9PSBteWRpcjoKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFtpXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaSAtPSAxCiAKICAgICAjIGZpbmR0ZXN0ZGlyKCkgZ2V0cyB0aGUgZGlybmFtZSBvdXQgb2YgX19maWxlX18sIHNvIHdlIGhhdmUgdG8gbWFrZSBpdAogICAgICMgYWJzb2x1dGUgYmVmb3JlIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4KQEAgLTE2ODYsNCArNDMsOCBAQAogICAgICMgc2FuaXR5IGNoZWNrCiAgICAgYXNzZXJ0IF9fZmlsZV9fID09IG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkKIAotICAgIG1haW5faW5fdGVtcF9jd2QoKQorICAgIG1haW4oKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgX21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CmluZGV4IDcyZjQ4NDUuLjFlN2E2ZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKQEAgLTMxOCw3ICszMTgsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChzKSwgaWQocyoxKSkKIAogICAgIGRlZiB0ZXN0X2JpZ3JlcGVhdChzZWxmKToKLSAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICBpZiBzeXMubWF4c2l6ZSA8PSAyMTQ3NDgzNjQ3OgogICAgICAgICAgICAgeCA9IHNlbGYudHlwZTJ0ZXN0KFswXSkKICAgICAgICAgICAgIHggKj0gMioqMTYKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weSBiL0xpYi90ZXN0L3NpZ25hbGludGVycHJvY3Rlc3Rlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2FlMTcwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5CkBAIC0wLDAgKzEsODQgQEAKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBTSUdVU1IxRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK2NsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZ290X3NpZ25hbHMgPSB7J1NJR0hVUCc6IDAsICdTSUdVU1IxJzogMCwgJ1NJR0FMUk0nOiAwfQorCisgICAgZGVmIHNpZ2h1cF9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzWydTSUdIVVAnXSArPSAxCisKKyAgICBkZWYgc2lndXNyMV9oYW5kbGVyKHNlbGYsIHNpZ251bSwgZnJhbWUpOgorICAgICAgICBzZWxmLmdvdF9zaWduYWxzWydTSUdVU1IxJ10gKz0gMQorICAgICAgICByYWlzZSBTSUdVU1IxRXhjZXB0aW9uCisKKyAgICBkZWYgd2FpdF9zaWduYWwoc2VsZiwgY2hpbGQsIHNpZ25hbWUsIGV4Y19jbGFzcz1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgY2hpbGQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIyBUaGlzIHdhaXQgc2hvdWxkIGJlIGludGVycnVwdGVkIGJ5IGV4Y19jbGFzcworICAgICAgICAgICAgICAgICMgKGlmIHNldCkKKyAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKKworICAgICAgICAgICAgdGltZW91dCA9IDEwLjAKKyAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZS5tb25vdG9uaWMoKSArIHRpbWVvdXQKKworICAgICAgICAgICAgd2hpbGUgdGltZS5tb25vdG9uaWMoKSA8IGRlYWRsaW5lOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuZ290X3NpZ25hbHNbc2lnbmFtZV06CisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Y19jbGFzcyBpcyBub3QgTm9uZSBhbmQgaXNpbnN0YW5jZShleGMsIGV4Y19jbGFzcyk6CisgICAgICAgICAgICAgICAgIyBnb3QgdGhlIGV4cGVjdGVkIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBzZWxmLmZhaWwoJ3NpZ25hbCAlcyBub3QgcmVjZWl2ZWQgYWZ0ZXIgJXMgc2Vjb25kcycKKyAgICAgICAgICAgICAgICAgICUgKHNpZ25hbWUsIHRpbWVvdXQpKQorCisgICAgZGVmIHN1YnByb2Nlc3Nfc2VuZF9zaWduYWwoc2VsZiwgcGlkLCBzaWduYW1lKToKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgb3MsIHNpZ25hbDsgb3Mua2lsbCglcywgc2lnbmFsLiVzKScgJSAocGlkLCBzaWduYW1lKQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLWMnLCBjb2RlXQorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbihhcmdzKQorCisgICAgZGVmIHRlc3RfaW50ZXJwcm9jZXNzX3NpZ25hbChzZWxmKToKKyAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKKyAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuc2lnaHVwX2hhbmRsZXIpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuc2lndXNyMV9oYW5kbGVyKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IyLCBzaWduYWwuU0lHX0lHTikKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2lnbmFsLmRlZmF1bHRfaW50X2hhbmRsZXIpCisKKyAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgorICAgICAgICBwaWQgPSBzdHIob3MuZ2V0cGlkKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHSFVQIikgYXMgY2hpbGQ6CisgICAgICAgICAgICBzZWxmLndhaXRfc2lnbmFsKGNoaWxkLCAnU0lHSFVQJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworICAgICAgICB3aXRoIHNlbGYuc3VicHJvY2Vzc19zZW5kX3NpZ25hbChwaWQsICJTSUdVU1IxIikgYXMgY2hpbGQ6CisgICAgICAgICAgICBzZWxmLndhaXRfc2lnbmFsKGNoaWxkLCAnU0lHVVNSMScsIFNJR1VTUjFFeGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nb3Rfc2lnbmFscywgeydTSUdIVVAnOiAxLCAnU0lHVVNSMSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTSUdBTFJNJzogMH0pCisKKyAgICAgICAgd2l0aCBzZWxmLnN1YnByb2Nlc3Nfc2VuZF9zaWduYWwocGlkLCAiU0lHVVNSMiIpIGFzIGNoaWxkOgorICAgICAgICAgICAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW46IFNJR1VTUjIgaXMgaWdub3JlZAorICAgICAgICAgICAgY2hpbGQud2FpdCgpCisKKyAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgIHNlbGYud2FpdF9zaWduYWwoTm9uZSwgJ1NJR0FMUk0nLCBLZXlib2FyZEludGVycnVwdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc29ydHBlcmYucHkgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQppbmRleCA5MDcyMmY3Li4xNzFlNWNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zb3J0cGVyZi5weQorKysgYi9MaWIvdGVzdC9zb3J0cGVyZi5weQpAQCAtNjQsNyArNjQsNyBAQAogICAgIGZsdXNoKCkKIAogZGVmIHRhYnVsYXRlKHIpOgotICAgICIiIlRhYnVsYXRlIHNvcnQgc3BlZWQgZm9yIGxpc3RzIG9mIHZhcmlvdXMgc2l6ZXMuCisgICAgciIiIlRhYnVsYXRlIHNvcnQgc3BlZWQgZm9yIGxpc3RzIG9mIHZhcmlvdXMgc2l6ZXMuCiAKICAgICBUaGUgc2l6ZXMgYXJlIDIqKmkgZm9yIGkgaW4gciAodGhlIGFyZ3VtZW50LCBhIGxpc3QpLgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQppbmRleCAwOTA5NWRiLi44MTEzNjEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKQEAgLTI2LDYgKzI2LDcgQEAKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKK2ltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliLmVycm9yCiBpbXBvcnQgd2FybmluZ3MKQEAgLTg5LDkgKzkwLDkgQEAKICAgICAiYmlnbWVtdGVzdCIsICJiaWdhZGRyc3BhY2V0ZXN0IiwgImNweXRob25fb25seSIsICJnZXRfYXR0cmlidXRlIiwKICAgICAicmVxdWlyZXNfSUVFRV83NTQiLCAic2tpcF91bmxlc3NfeGF0dHIiLCAicmVxdWlyZXNfemxpYiIsCiAgICAgImFudGljaXBhdGVfZmFpbHVyZSIsICJsb2FkX3BhY2thZ2VfdGVzdHMiLCAiZGV0ZWN0X2FwaV9taXNtYXRjaCIsCi0gICAgICJyZXF1aXJlc19tdWx0aXByb2Nlc3NpbmdfcXVldWUiLAorICAgICJjaGVja19fYWxsX18iLCAicmVxdWlyZXNfYW5kcm9pZF9sZXZlbCIsICJyZXF1aXJlc19tdWx0aXByb2Nlc3NpbmdfcXVldWUiLAogICAgICMgc3lzCi0gICAgImlzX2p5dGhvbiIsICJjaGVja19pbXBsX2RldGFpbCIsCisgICAgImlzX2p5dGhvbiIsICJpc19hbmRyb2lkIiwgImNoZWNrX2ltcGxfZGV0YWlsIiwgInVuaXhfc2hlbGwiLAogICAgICMgbmV0d29yawogICAgICJIT1NUIiwgIklQVjZfRU5BQkxFRCIsICJmaW5kX3VudXNlZF9wb3J0IiwgImJpbmRfcG9ydCIsICJvcGVuX3VybHJlc291cmNlIiwKICAgICAjIHByb2Nlc3NlcwpAQCAtMTA0LDcgKzEwNSw3IEBACiAgICAgImNoZWNrX3dhcm5pbmdzIiwgImNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmciLCAiRW52aXJvbm1lbnRWYXJHdWFyZCIsCiAgICAgInJ1bl93aXRoX2xvY2FsZSIsICJzd2FwX2l0ZW0iLAogICAgICJzd2FwX2F0dHIiLCAiTWF0Y2hlciIsICJzZXRfbWVtbGltaXQiLCAiU3VwcHJlc3NDcmFzaFJlcG9ydCIsICJzb3J0ZGljdCIsCi0gICAgInJ1bl93aXRoX3R6IiwKKyAgICAicnVuX3dpdGhfdHoiLCAiUEdPIiwKICAgICBdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CkBAIC03MzQsNiArNzM1LDE0IEBACiAKIGlzX2p5dGhvbiA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykKIAorX0FORFJPSURfQVBJX0xFVkVMID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdBTkRST0lEX0FQSV9MRVZFTCcpCitpc19hbmRyb2lkID0gKF9BTkRST0lEX0FQSV9MRVZFTCBpcyBub3QgTm9uZSBhbmQgX0FORFJPSURfQVBJX0xFVkVMID4gMCkKKworaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgdW5peF9zaGVsbCA9ICcvc3lzdGVtL2Jpbi9zaCcgaWYgaXNfYW5kcm9pZCBlbHNlICcvYmluL3NoJworZWxzZToKKyAgICB1bml4X3NoZWxsID0gTm9uZQorCiAjIEZpbGVuYW1lIHVzZWQgZm9yIHRlc3RpbmcKIGlmIG9zLm5hbWUgPT0gJ2phdmEnOgogICAgICMgSnl0aG9uIGRpc2FsbG93cyBAIGluIG1vZHVsZSBuYW1lcwpAQCAtODAzLDcgKzgxMiw3IEBACiAjIGVuY29kZWQgYnkgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKGluIHN0cmljdCBtb2RlKS4gSXQgY2FuIGJlIE5vbmUgaWYgd2UKICMgY2Fubm90IGdlbmVyYXRlIHN1Y2ggZmlsZW5hbWUuCiBURVNURk5fVU5FTkNPREFCTEUgPSBOb25lCi1pZiBvcy5uYW1lIGluICgnbnQnLCAnY2UnKToKK2lmIG9zLm5hbWUgPT0gJ250JzoKICAgICAjIHNraXAgd2luMzJzICgwKSBvciBXaW5kb3dzIDl4L01FICgxKQogICAgIGlmIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLnBsYXRmb3JtID49IDI6CiAgICAgICAgICMgRGlmZmVyZW50IGtpbmRzIG9mIGNoYXJhY3RlcnMgZnJvbSB2YXJpb3VzIGxhbmd1YWdlcyB0byBtaW5pbWl6ZSB0aGUKQEAgLTg3MCw2ICs4NzksMTAgQEAKICMgU2F2ZSB0aGUgaW5pdGlhbCBjd2QKIFNBVkVEQ1dEID0gb3MuZ2V0Y3dkKCkKIAorIyBTZXQgYnkgbGlicmVncnRlc3QvbWFpbi5weSBzbyB3ZSBjYW4gc2tpcCB0ZXN0cyB0aGF0IGFyZSBub3QKKyMgdXNlZnVsIGZvciBQR08KK1BHTyA9IEZhbHNlCisKIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgdGVtcF9kaXIocGF0aD1Ob25lLCBxdWlldD1GYWxzZSk6CiAgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgY3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuCkBAIC05MDIsNyArOTE1LDcgQEAKICAgICAgICAgeWllbGQgcGF0aAogICAgIGZpbmFsbHk6CiAgICAgICAgIGlmIGRpcl9jcmVhdGVkOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorICAgICAgICAgICAgcm10cmVlKHBhdGgpCiAKIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgY2hhbmdlX2N3ZChwYXRoLCBxdWlldD1GYWxzZSk6CkBAIC0xNzEzLDYgKzE3MjYsMTMgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcCgicmVzb3VyY2UgezAhcn0gaXMgbm90IGVuYWJsZWQiLmZvcm1hdChyZXNvdXJjZSkpCiAKK2RlZiByZXF1aXJlc19hbmRyb2lkX2xldmVsKGxldmVsLCByZWFzb24pOgorICAgIGlmIGlzX2FuZHJvaWQgYW5kIF9BTkRST0lEX0FQSV9MRVZFTCA8IGxldmVsOgorICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcCgnJXMgYXQgQW5kcm9pZCBBUEkgbGV2ZWwgJWQnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlYXNvbiwgX0FORFJPSURfQVBJX0xFVkVMKSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gX2lkCisKIGRlZiBjcHl0aG9uX29ubHkodGVzdCk6CiAgICAgIiIiCiAgICAgRGVjb3JhdG9yIGZvciB0ZXN0cyBvbmx5IGFwcGxpY2FibGUgb24gQ1B5dGhvbi4KQEAgLTIwOTUsNiArMjExNSwxMSBAQAogICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgogICAgIHJldHVybiBzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogCitkZWYgb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CisgICAgb3B0aW1pemF0aW9uIHNldHRpbmdzIGluIHN5cy5mbGFncy4iIiIKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5fb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKKwogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBTdXBwb3J0IGZvciBhc3NlcnRpb25zIGFib3V0IGxvZ2dpbmcuCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yMjAxLDcgKzIyMjYsNyBAQAogICAgICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCiAgICAgICAgICAgICAgICAgICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgogICAgICAgICAgICAgICAgICAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQotICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQogICAgICAgICAgICAgICAgICAgICBjYW4gPSBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNhbiA9IEZhbHNlCkBAIC0yMjQ2LDYgKzIyNzEsNjUgQEAKICAgICByZXR1cm4gbWlzc2luZ19pdGVtcwogCiAKK2RlZiBjaGVja19fYWxsX18odGVzdF9jYXNlLCBtb2R1bGUsIG5hbWVfb2ZfbW9kdWxlPU5vbmUsIGV4dHJhPSgpLAorICAgICAgICAgICAgICAgICBibGFja2xpc3Q9KCkpOgorICAgICIiIkFzc2VydCB0aGF0IHRoZSBfX2FsbF9fIHZhcmlhYmxlIG9mICdtb2R1bGUnIGNvbnRhaW5zIGFsbCBwdWJsaWMgbmFtZXMuCisKKyAgICBUaGUgbW9kdWxlJ3MgcHVibGljIG5hbWVzIChpdHMgQVBJKSBhcmUgZGV0ZWN0ZWQgYXV0b21hdGljYWxseSBiYXNlZCBvbgorICAgIHdoZXRoZXIgdGhleSBtYXRjaCB0aGUgcHVibGljIG5hbWUgY29udmVudGlvbiBhbmQgd2VyZSBkZWZpbmVkIGluCisgICAgJ21vZHVsZScuCisKKyAgICBUaGUgJ25hbWVfb2ZfbW9kdWxlJyBhcmd1bWVudCBjYW4gc3BlY2lmeSAoYXMgYSBzdHJpbmcgb3IgdHVwbGUgdGhlcmVvZikKKyAgICB3aGF0IG1vZHVsZShzKSBhbiBBUEkgY291bGQgYmUgZGVmaW5lZCBpbiBpbiBvcmRlciB0byBiZSBkZXRlY3RlZCBhcyBhCisgICAgcHVibGljIEFQSS4gT25lIGNhc2UgZm9yIHRoaXMgaXMgd2hlbiAnbW9kdWxlJyBpbXBvcnRzIHBhcnQgb2YgaXRzIHB1YmxpYworICAgIEFQSSBmcm9tIG90aGVyIG1vZHVsZXMsIHBvc3NpYmx5IGEgQyBiYWNrZW5kIChsaWtlICdjc3YnIGFuZCBpdHMgJ19jc3YnKS4KKworICAgIFRoZSAnZXh0cmEnIGFyZ3VtZW50IGNhbiBiZSBhIHNldCBvZiBuYW1lcyB0aGF0IHdvdWxkbid0IG90aGVyd2lzZSBiZQorICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgYXMgInB1YmxpYyIsIGxpa2Ugb2JqZWN0cyB3aXRob3V0IGEgcHJvcGVyCisgICAgJ19fbW9kdWxlX18nIGF0dHJpdWJ1dGUuIElmIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZQorICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgb25lcy4KKworICAgIFRoZSAnYmxhY2tsaXN0JyBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCBtdXN0IG5vdCBiZSB0cmVhdGVkCisgICAgYXMgcGFydCBvZiB0aGUgcHVibGljIEFQSSBldmVuIHRob3VnaCB0aGVpciBuYW1lcyBpbmRpY2F0ZSBvdGhlcndpc2UuCisKKyAgICBVc2FnZToKKyAgICAgICAgaW1wb3J0IGJhcgorICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgICBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZvbykKKworICAgICAgICBjbGFzcyBPdGhlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBleHRyYSA9IHsnQkFSX0NPTlNUJywgJ0ZPT19DT05TVCd9CisgICAgICAgICAgICAgICAgYmxhY2tsaXN0ID0geydiYXonfSAgIyBVbmRvY3VtZW50ZWQgbmFtZS4KKyAgICAgICAgICAgICAgICAjIGJhciBpbXBvcnRzIHBhcnQgb2YgaXRzIEFQSSBmcm9tIF9iYXIuCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgYmFyLCAoJ2JhcicsICdfYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgICAiIiIKKworICAgIGlmIG5hbWVfb2ZfbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIG5hbWVfb2ZfbW9kdWxlID0gKG1vZHVsZS5fX25hbWVfXywgKQorICAgIGVsaWYgaXNpbnN0YW5jZShuYW1lX29mX21vZHVsZSwgc3RyKToKKyAgICAgICAgbmFtZV9vZl9tb2R1bGUgPSAobmFtZV9vZl9tb2R1bGUsICkKKworICAgIGV4cGVjdGVkID0gc2V0KGV4dHJhKQorCisgICAgZm9yIG5hbWUgaW4gZGlyKG1vZHVsZSk6CisgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnXycpIG9yIG5hbWUgaW4gYmxhY2tsaXN0OgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgb2JqID0gZ2V0YXR0cihtb2R1bGUsIG5hbWUpCisgICAgICAgIGlmIChnZXRhdHRyKG9iaiwgJ19fbW9kdWxlX18nLCBOb25lKSBpbiBuYW1lX29mX21vZHVsZSBvcgorICAgICAgICAgICAgICAgIChub3QgaGFzYXR0cihvYmosICdfX21vZHVsZV9fJykgYW5kCisgICAgICAgICAgICAgICAgIG5vdCBpc2luc3RhbmNlKG9iaiwgdHlwZXMuTW9kdWxlVHlwZSkpKToKKyAgICAgICAgICAgIGV4cGVjdGVkLmFkZChuYW1lKQorICAgIHRlc3RfY2FzZS5hc3NlcnRDb3VudEVxdWFsKG1vZHVsZS5fX2FsbF9fLCBleHBlY3RlZCkKKworCiBjbGFzcyBTdXBwcmVzc0NyYXNoUmVwb3J0OgogICAgICIiIlRyeSB0byBwcmV2ZW50IGEgY3Jhc2ggcmVwb3J0IGZyb20gcG9wcGluZyB1cC4KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CmluZGV4IGU5NGQ5ODQuLmFlOTExNGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKQEAgLTM4LDYgKzM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kbmFtZSwgZS5fX2NsYXNzX18uX19uYW1lX18sIGUpKQogICAgICAgICAgICAgaWYgIl9fYnVpbHRpbnNfXyIgaW4gbmFtZXM6CiAgICAgICAgICAgICAgICAgZGVsIG5hbWVzWyJfX2J1aWx0aW5zX18iXQorICAgICAgICAgICAgaWYgJ19fYW5ub3RhdGlvbnNfXycgaW4gbmFtZXM6CisgICAgICAgICAgICAgICAgZGVsIG5hbWVzWydfX2Fubm90YXRpb25zX18nXQogICAgICAgICAgICAga2V5cyA9IHNldChuYW1lcykKICAgICAgICAgICAgIGFsbF9saXN0ID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0uX19hbGxfXwogICAgICAgICAgICAgYWxsX3NldCA9IHNldChhbGxfbGlzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weSBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQppbmRleCA1OGYyZjA0Li5hYjRlMjQ3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CkBAIC00LDcgKzQsNiBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIG5sX2xhbmdpbmZvID0gTm9uZQogCi1pbXBvcnQgY29kZWNzCiBpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKaW5kZXggYWM2MzI1YS4uYmNiYThjYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fb3N4X3N1cHBvcnQucHkKQEAgLTQsNyArNCw2IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKaW5kZXggYWI1MTQzNy4uMWJkMWY4OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBhdWRpb3Rlc3RzCiBmcm9tIGF1ZGlvb3AgaW1wb3J0IGJ5dGVzd2FwCi1pbXBvcnQgb3MKIGltcG9ydCBpbwogaW1wb3J0IHN5cwogaW1wb3J0IHN0cnVjdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKaW5kZXggNDc3OWExMy4uYmM4MzE2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CkBAIC00NTEyLDYgKzQ1MTIsMjEgQEAKICAgICAgICAgc3RyaW5nID0gIk5hbWVzcGFjZShiYXI9J3NwYW0nLCBmb289NDIpIgogICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCiAKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Vfc3Rhcmt3YXJnc19ub3RpZGVudGlmaWVyKHNlbGYpOgorICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSgqKnsnIic6ICdxdW90ZSd9KQorICAgICAgICBzdHJpbmcgPSAiIiJOYW1lc3BhY2UoKip7JyInOiAncXVvdGUnfSkiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQorCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX2t3YXJnc19hbmRfc3Rhcmt3YXJnc19ub3RpZGVudGlmaWVyKHNlbGYpOgorICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZShhPTEsICoqeyciJzogJ3F1b3RlJ30pCisgICAgICAgIHN0cmluZyA9ICIiIk5hbWVzcGFjZShhPTEsICoqeyciJzogJ3F1b3RlJ30pIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKKworICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9zdGFya3dhcmdzX2lkZW50aWZpZXIoc2VsZik6CisgICAgICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKCoqeyd2YWxpZCc6IFRydWV9KQorICAgICAgICBzdHJpbmcgPSAiTmFtZXNwYWNlKHZhbGlkPVRydWUpIgorICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCisKICAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnKQogICAgICAgICBzdHJpbmcgPSAoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5IGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQppbmRleCAyYTIxZTc0Li4xZjg5NjdjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKQEAgLTcsOCArNyw2IEBACiBpbXBvcnQgd2Vha3JlZgogaW1wb3J0IHBpY2tsZQogaW1wb3J0IG9wZXJhdG9yCi1pbXBvcnQgaW8KLWltcG9ydCBtYXRoCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKQEAgLTMyOCw4ICszMjYsMTkgQEAKICAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoKGl0b3JpZywgb3JpZyksIHByb3RvKQogICAgICAgICAgICAgaXQsIGEgPSBwaWNrbGUubG9hZHMoZCkKICAgICAgICAgICAgIGEuZnJvbWxpc3QoZGF0YTIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXQpLCB0eXBlKGl0b3JpZykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBkYXRhMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIFtdKQorCisgICAgZGVmIHRlc3RfZXhoYXVzdGVkX2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxpc3Qoc2VsZi5leGFtcGxlKSkKKyAgICAgICAgZXhoaXQgPSBpdGVyKGEpCisgICAgICAgIGVtcGl0ID0gaXRlcihhKQorICAgICAgICBmb3IgeCBpbiBleGhpdDogICMgZXhoYXVzdCB0aGUgaXRlcmF0b3IKKyAgICAgICAgICAgIG5leHQoZW1waXQpICAjIG5vdCBleGhhdXN0ZWQKKyAgICAgICAgYS5hcHBlbmQoc2VsZi5vdXRzaWRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZXhoaXQpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGVtcGl0KSwgW3NlbGYub3V0c2lkZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbGlzdChzZWxmLmV4YW1wbGUpICsgW3NlbGYub3V0c2lkZV0pCiAKICAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CiAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCkBAIC0xMDgwLDYgKzEwODksMTIgQEAKICAgICAgICAgYSA9IGFycmF5LmFycmF5KCdCJywgYiIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0YnVmZmVyX3dpdGhfbnVsbF92aWV3LCBhKQogCisgICAgZGVmIHRlc3RfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgYXJyYXkuYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYudHlwZWNvZGUsKSkKKyAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCByZXZlcnNlZCwgYXJyYXkuYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYudHlwZWNvZGUsKSkKKwogY2xhc3MgU3RyaW5nVGVzdChCYXNlVGVzdCk6CiAKICAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3QucHkgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQppbmRleCBkM2U2ZDM1Li44YzYyNDA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQpAQCAtMSw3ICsxLDggQEAKK2ltcG9ydCBhc3QKK2ltcG9ydCBkaXMKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgYXN0CiBpbXBvcnQgd2Vha3JlZgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTExNSw2ICsxMTYsOCBAQAogICAgICMgUEVQIDQ0ODogQWRkaXRpb25hbCBVbnBhY2tpbmcgR2VuZXJhbGl6YXRpb25zCiAgICAgInsqKnsxOjJ9LCAyOjN9IiwKICAgICAieyp7MSwgMn0sIDN9IiwKKyAgICAjIEFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucworICAgICJhc3luYyBkZWYgZigpOlxuIFtpIGFzeW5jIGZvciBiIGluIGNdIiwKIF0KIAogIyBUaGVzZSBhcmUgY29tcGlsZWQgdGhyb3VnaCAic2luZ2xlIgpAQCAtMjM4LDcgKzI0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFzdF90cmVlID0gY29tcGlsZShpLCAiPyIsIGtpbmQsIGFzdC5QeUNGX09OTFlfQVNUKQogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvX3R1cGxlKGFzdF90cmVlKSwgbykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0VHJ1ZW9yZGVyKGFzdF90cmVlLCAoMCwgMCkpCi0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJjb21waWxpbmciLCBpbnB1dD1pKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChhY3Rpb249ImNvbXBpbGluZyIsIGlucHV0PWksIGtpbmQ9a2luZCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUoYXN0X3RyZWUsICI/Iiwga2luZCkKIAogICAgIGRlZiB0ZXN0X3NsaWNlKHNlbGYpOgpAQCAtNTQ3LDYgKzU1MCwxNyBAQAogICAgICAgICAgICAgY29tcGlsZShtb2QsICd0ZXN0JywgJ2V4ZWMnKQogICAgICAgICBzZWxmLmFzc2VydEluKCJpbnZhbGlkIGludGVnZXIgdmFsdWU6IE5vbmUiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAorICAgIGRlZiB0ZXN0X2xldmVsX2FzX25vbmUoc2VsZik6CisgICAgICAgIGJvZHkgPSBbYXN0LkltcG9ydEZyb20obW9kdWxlPSd0aW1lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcz1bYXN0LmFsaWFzKG5hbWU9J3NsZWVwJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vPTAsIGNvbF9vZmZzZXQ9MCldCisgICAgICAgIG1vZCA9IGFzdC5Nb2R1bGUoYm9keSkKKyAgICAgICAgY29kZSA9IGNvbXBpbGUobW9kLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzbGVlcCcsIG5zKQorCiAKIGNsYXNzIEFTVFZhbGlkYXRvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNzQyLDcgKzc1Niw3IEBACiAKICAgICBkZWYgdGVzdF9pbXBvcnRmcm9tKHNlbGYpOgogICAgICAgICBpbXAgPSBhc3QuSW1wb3J0RnJvbShOb25lLCBbYXN0LmFsaWFzKCJ4IiwgTm9uZSldLCAtNDIpCi0gICAgICAgIHNlbGYuc3RtdChpbXAsICJsZXZlbCBsZXNzIHRoYW4gLTEiKQorICAgICAgICBzZWxmLnN0bXQoaW1wLCAiTmVnYXRpdmUgSW1wb3J0RnJvbSBsZXZlbCIpCiAgICAgICAgIHNlbGYuc3RtdChhc3QuSW1wb3J0RnJvbShOb25lLCBbXSwgMCksICJlbXB0eSBuYW1lcyBvbiBJbXBvcnRGcm9tIikKIAogICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKQEAgLTc5NywyMSArODExLDIxIEBACiAgICAgZGVmIF9jaGVja19jb21wcmVoZW5zaW9uKHNlbGYsIGZhYyk6CiAgICAgICAgIHNlbGYuZXhwcihmYWMoW10pLCAiY29tcHJlaGVuc2lvbiB3aXRoIG5vIGdlbmVyYXRvcnMiKQogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKICAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCiAgICAgICAgIHkgPSBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpCi0gICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbTm9uZV0pCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbTm9uZV0sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIk5vbmUgZGlzYWxsb3dlZCIpCi0gICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbih4LCB5LCBbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAKICAgICBkZWYgX3NpbXBsZV9jb21wKHNlbGYsIGZhYyk6CiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwgW10sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIFtnXSksCiAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIGRlZiB3cmFwKGdlbnMpOgpAQCAtODI5LDcgKzg0Myw3IEBACiAKICAgICBkZWYgdGVzdF9kaWN0Y29tcChzZWxmKToKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKSwgW10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpLCBbXSwgMCkKICAgICAgICAgYyA9IGFzdC5EaWN0Q29tcChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpLCBbZ10pCiAgICAgICAgIHNlbGYuZXhwcihjLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCkBAIC05MzMsNiArOTQ3LDEyNSBAQAogICAgICAgICAgICAgY29tcGlsZShtb2QsIGZuLCAiZXhlYyIpCiAKIAorY2xhc3MgQ29uc3RhbnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb24gdGhlIGFzdC5Db25zdGFudCBub2RlIHR5cGUuIiIiCisKKyAgICBkZWYgY29tcGlsZV9jb25zdGFudChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoInggPSAxMjMiKQorCisgICAgICAgIG5vZGUgPSB0cmVlLmJvZHlbMF0udmFsdWUKKyAgICAgICAgbmV3X25vZGUgPSBhc3QuQ29uc3RhbnQodmFsdWU9dmFsdWUpCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19ub2RlLCBub2RlKQorICAgICAgICB0cmVlLmJvZHlbMF0udmFsdWUgPSBuZXdfbm9kZQorCisgICAgICAgIGNvZGUgPSBjb21waWxlKHRyZWUsICI8c3RyaW5nPiIsICJleGVjIikKKworICAgICAgICBucyA9IHt9CisgICAgICAgIGV4ZWMoY29kZSwgbnMpCisgICAgICAgIHJldHVybiBuc1sneCddCisKKyAgICBkZWYgdGVzdF92YWxpZGF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBzZWxmLmNvbXBpbGVfY29uc3RhbnQoWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYW4gaW52YWxpZCB0eXBlIGluIENvbnN0YW50OiBsaXN0IikKKworICAgIGRlZiB0ZXN0X3NpbmdsZXRvbnMoc2VsZik6CisgICAgICAgIGZvciBjb25zdCBpbiAoTm9uZSwgRmFsc2UsIFRydWUsIEVsbGlwc2lzLCBiJycsIGZyb3plbnNldCgpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvbnN0PWNvbnN0KToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuY29tcGlsZV9jb25zdGFudChjb25zdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHZhbHVlLCBjb25zdCkKKworICAgIGRlZiB0ZXN0X3ZhbHVlcyhzZWxmKToKKyAgICAgICAgbmVzdGVkX3R1cGxlID0gKDEsKQorICAgICAgICBuZXN0ZWRfZnJvemVuc2V0ID0gZnJvemVuc2V0KHsxfSkKKyAgICAgICAgZm9yIGxldmVsIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgbmVzdGVkX3R1cGxlID0gKG5lc3RlZF90dXBsZSwgMikKKyAgICAgICAgICAgIG5lc3RlZF9mcm96ZW5zZXQgPSBmcm96ZW5zZXQoe25lc3RlZF9mcm96ZW5zZXQsIDJ9KQorICAgICAgICB2YWx1ZXMgPSAoMTIzLCAxMjMuMCwgMTIzaiwKKyAgICAgICAgICAgICAgICAgICJ1bmljb2RlIiwgYidieXRlcycsCisgICAgICAgICAgICAgICAgICB0dXBsZSgidHVwbGUiKSwgZnJvemVuc2V0KCJmcm96ZW5zZXQiKSwKKyAgICAgICAgICAgICAgICAgIG5lc3RlZF90dXBsZSwgbmVzdGVkX2Zyb3plbnNldCkKKyAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZhbHVlPXZhbHVlKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmNvbXBpbGVfY29uc3RhbnQodmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIHZhbHVlKQorCisgICAgZGVmIHRlc3RfYXNzaWduX3RvX2NvbnN0YW50KHNlbGYpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCJ4ID0gMSIpCisKKyAgICAgICAgdGFyZ2V0ID0gdHJlZS5ib2R5WzBdLnRhcmdldHNbMF0KKyAgICAgICAgbmV3X3RhcmdldCA9IGFzdC5Db25zdGFudCh2YWx1ZT0xKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfdGFyZ2V0LCB0YXJnZXQpCisgICAgICAgIHRyZWUuYm9keVswXS50YXJnZXRzWzBdID0gbmV3X3RhcmdldAorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjb21waWxlKHRyZWUsICJzdHJpbmciLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImV4cHJlc3Npb24gd2hpY2ggY2FuJ3QgYmUgYXNzaWduZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBpbiBTdG9yZSBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2dldF9kb2NzdHJpbmcoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoIidkb2NzdHJpbmcnXG54ID0gMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmdldF9kb2NzdHJpbmcodHJlZSksICdkb2NzdHJpbmcnKQorCisgICAgICAgIHRyZWUuYm9keVswXS52YWx1ZSA9IGFzdC5Db25zdGFudCh2YWx1ZT0nY29uc3RhbnQgZG9jc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QuZ2V0X2RvY3N0cmluZyh0cmVlKSwgJ2NvbnN0YW50IGRvY3N0cmluZycpCisKKyAgICBkZWYgZ2V0X2xvYWRfY29uc3Qoc2VsZiwgdHJlZSk6CisgICAgICAgICMgQ29tcGlsZSB0byBieXRlY29kZSwgZGlzYXNzZW1ibGUgYW5kIGdldCBwYXJhbWV0ZXIgb2YgTE9BRF9DT05TVAorICAgICAgICAjIGluc3RydWN0aW9ucworICAgICAgICBjbyA9IGNvbXBpbGUodHJlZSwgJzxzdHJpbmc+JywgJ2V4ZWMnKQorICAgICAgICBjb25zdHMgPSBbXQorICAgICAgICBmb3IgaW5zdHIgaW4gZGlzLmdldF9pbnN0cnVjdGlvbnMoY28pOgorICAgICAgICAgICAgaWYgaW5zdHIub3BuYW1lID09ICdMT0FEX0NPTlNUJzoKKyAgICAgICAgICAgICAgICBjb25zdHMuYXBwZW5kKGluc3RyLmFyZ3ZhbCkKKyAgICAgICAgcmV0dXJuIGNvbnN0cworCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfbG9hZF9jb25zdChzZWxmKToKKyAgICAgICAgY29uc3RzID0gW05vbmUsCisgICAgICAgICAgICAgICAgICBUcnVlLCBGYWxzZSwKKyAgICAgICAgICAgICAgICAgIDEyNCwKKyAgICAgICAgICAgICAgICAgIDIuMCwKKyAgICAgICAgICAgICAgICAgIDNqLAorICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLAorICAgICAgICAgICAgICAgICAgYidieXRlcycsCisgICAgICAgICAgICAgICAgICAoMSwgMiwgMyldCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbihbJ3g9eyFyfScuZm9ybWF0KGNvbnN0KSBmb3IgY29uc3QgaW4gY29uc3RzXSkKKyAgICAgICAgY29kZSArPSAnXG54ID0gLi4uJworICAgICAgICBjb25zdHMuZXh0ZW5kKChFbGxpcHNpcywgTm9uZSkpCisKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2xvYWRfY29uc3QodHJlZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzKQorCisgICAgICAgICMgUmVwbGFjZSBleHByZXNzaW9uIG5vZGVzIHdpdGggY29uc3RhbnRzCisgICAgICAgIGZvciBhc3NpZ24sIGNvbnN0IGluIHppcCh0cmVlLmJvZHksIGNvbnN0cyk6CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhc3NpZ24sIGFzdC5Bc3NpZ24pLCBhc3QuZHVtcChhc3NpZ24pCisgICAgICAgICAgICBuZXdfbm9kZSA9IGFzdC5Db25zdGFudCh2YWx1ZT1jb25zdCkKKyAgICAgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19ub2RlLCBhc3NpZ24udmFsdWUpCisgICAgICAgICAgICBhc3NpZ24udmFsdWUgPSBuZXdfbm9kZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfbG9hZF9jb25zdCh0cmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMpCisKKyAgICBkZWYgdGVzdF9saXRlcmFsX2V2YWwoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoIjEgKyAyIikKKyAgICAgICAgYmlub3AgPSB0cmVlLmJvZHlbMF0udmFsdWUKKworICAgICAgICBuZXdfbGVmdCA9IGFzdC5Db25zdGFudCh2YWx1ZT0xMCkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X2xlZnQsIGJpbm9wLmxlZnQpCisgICAgICAgIGJpbm9wLmxlZnQgPSBuZXdfbGVmdAorCisgICAgICAgIG5ld19yaWdodCA9IGFzdC5Db25zdGFudCh2YWx1ZT0yMCkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X3JpZ2h0LCBiaW5vcC5yaWdodCkKKyAgICAgICAgYmlub3AucmlnaHQgPSBuZXdfcmlnaHQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoYmlub3ApLCAzMCkKKworCiBkZWYgbWFpbigpOgogICAgIGlmIF9fbmFtZV9fICE9ICdfX21haW5fXyc6CiAgICAgICAgIHJldHVybgpAQCAtOTQwLDggKzEwNzMsOSBAQAogICAgICAgICBmb3Igc3RhdGVtZW50cywga2luZCBpbiAoKGV4ZWNfdGVzdHMsICJleGVjIiksIChzaW5nbGVfdGVzdHMsICJzaW5nbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmFsX3Rlc3RzLCAiZXZhbCIpKToKICAgICAgICAgICAgIHByaW50KGtpbmQrIl9yZXN1bHRzID0gWyIpCi0gICAgICAgICAgICBmb3IgcyBpbiBzdGF0ZW1lbnRzOgotICAgICAgICAgICAgICAgIHByaW50KHJlcHIodG9fdHVwbGUoY29tcGlsZShzLCAiPyIsIGtpbmQsIDB4NDAwKSkpKyIsIikKKyAgICAgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gc3RhdGVtZW50czoKKyAgICAgICAgICAgICAgICB0cmVlID0gYXN0LnBhcnNlKHN0YXRlbWVudCwgIj8iLCBraW5kKQorICAgICAgICAgICAgICAgIHByaW50KCIlciwiICUgKHRvX3R1cGxlKHRyZWUpLCkpCiAgICAgICAgICAgICBwcmludCgiXSIpCiAgICAgICAgIHByaW50KCJtYWluKCkiKQogICAgICAgICByYWlzZSBTeXN0ZW1FeGl0CkBAIC05NzksMTkgKzExMTMsMjAgQEAKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdCcmVhaycsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICd2JywgKCdMb2FkJywpKSwgWygnQ29udGludWUnLCAoMSwgMTEpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnVHVwbGUnLCAoMSwgNCksIFsoJ05hbWUnLCAoMSwgNCksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA2KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTEpLCAnYycsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgMTQpKV0sIFtdKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMiksIFsoJ05hbWUnLCAoMSwgMTIpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyMCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDIsIDQpLCAoJ1R1cGxlJywgKDMsIDQpLCBbKCdOYW1lJywgKDMsIDQpLCAnQWEnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoNSwgNyksICdCYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICg4LCA0KSwgWygnTmFtZScsICg4LCA0KSwgJ0FhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgNCksICdCYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgMTApLCAnQ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDExKSwgJ3cnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE2KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSksICgnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAyMiksICdtJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyNyksICdwJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAzMiksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnRXhwcicsICgyLCAxKSwgKCdBd2FpdCcsICgyLCAxKSwgKCdDYWxsJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgNyksICdzb21ldGhpbmcnLCAoJ0xvYWQnLCkpLCBbXSwgW10pKSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnQXN5bmNGb3InLCAoMiwgNyksICgnTmFtZScsICgyLCAxMSksICdlJywgKCdTdG9yZScsKSksICgnTmFtZScsICgyLCAxNiksICdpJywgKCdMb2FkJywpKSwgWygnRXhwcicsICgyLCAxOSksICgnTnVtJywgKDIsIDE5KSwgMSkpXSwgWygnRXhwcicsICgzLCA3KSwgKCdOdW0nLCAoMywgNyksIDIpKV0pXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jV2l0aCcsICgyLCA3KSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMiwgMTIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgyLCAxNyksICdiJywgKCdTdG9yZScsKSkpXSwgWygnRXhwcicsICgyLCAyMCksICgnTnVtJywgKDIsIDIwKSwgMSkpXSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0JywgKDEsIDApLCBbTm9uZSwgKCdOdW0nLCAoMSwgMTApLCAyKV0sIFsoJ0RpY3QnLCAoMSwgMyksIFsoJ051bScsICgxLCA0KSwgMSldLCBbKCdOdW0nLCAoMSwgNiksIDIpXSksICgnTnVtJywgKDEsIDEyKSwgMyldKSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXQnLCAoMSwgMCksIFsoJ1N0YXJyZWQnLCAoMSwgMSksICgnU2V0JywgKDEsIDIpLCBbKCdOdW0nLCAoMSwgMyksIDEpLCAoJ051bScsICgxLCA2KSwgMildKSwgKCdMb2FkJywpKSwgKCdOdW0nLCAoMSwgMTApLCAzKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdFeHByJywgKDIsIDEpLCAoJ0xpc3RDb21wJywgKDIsIDIpLCAoJ05hbWUnLCAoMiwgMiksICdpJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgyLCAxNCksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgyLCAxOSksICdjJywgKCdMb2FkJywpKSwgW10sIDEpXSkpXSwgW10sIE5vbmUpXSksCiBdCiBzaW5nbGVfcmVzdWx0cyA9IFsKICgnSW50ZXJhY3RpdmUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0Jpbk9wJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksICgnQWRkJywpLCAoJ051bScsICgxLCAyKSwgMikpKV0pLApAQCAtMTAwNiw4ICsxMTQxLDggQEAKICgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgW10sIFtdKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1NldCcsICgxLCAwKSwgWygnTmFtZUNvbnN0YW50JywgKDEsIDEpLCBOb25lKV0pKSwKICgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgWygnTnVtJywgKDIsIDYpLCAxKV0sIFsoJ051bScsICg0LCAxMCksIDIpXSkpLAotKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAotKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKKygnRXhwcmVzc2lvbicsICgnTGlzdENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldLCAwKV0pKSwKKygnRXhwcmVzc2lvbicsICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSwgMCldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0NvbXBhcmUnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgWygnTHQnLCksICgnTHQnLCldLCBbKCdOdW0nLCAoMSwgNCksIDIpLCAoJ051bScsICgxLCA4KSwgMyldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2YnLCAoJ0xvYWQnLCkpLCBbKCdOdW0nLCAoMSwgMiksIDEpLCAoJ051bScsICgxLCA0KSwgMiksICgnU3RhcnJlZCcsICgxLCAxMCksICgnTmFtZScsICgxLCAxMSksICdkJywgKCdMb2FkJywpKSwgKCdMb2FkJywpKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSksICgna2V5d29yZCcsIE5vbmUsICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ051bScsICgxLCAwKSwgMTApKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZDIwMjkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5CkBAIC0wLDAgKzEsOTA0IEBACitpbXBvcnQgaW5zcGVjdAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQorYXN5bmNpbyA9IGltcG9ydF9tb2R1bGUoImFzeW5jaW8iKQorCisKK2NsYXNzIEF3YWl0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKK0B0eXBlcy5jb3JvdXRpbmUKK2RlZiBhd2FpdGFibGUoKiwgdGhyb3c9RmFsc2UpOgorICAgIGlmIHRocm93OgorICAgICAgICB5aWVsZCAoJ3Rocm93JywpCisgICAgZWxzZToKKyAgICAgICAgeWllbGQgKCdyZXN1bHQnLCkKKworCitkZWYgcnVuX3VudGlsX2NvbXBsZXRlKGNvcm8pOgorICAgIGV4YyA9IEZhbHNlCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgZXhjOgorICAgICAgICAgICAgICAgIGV4YyA9IEZhbHNlCisgICAgICAgICAgICAgICAgZnV0ID0gY29yby50aHJvdyhBd2FpdEV4Y2VwdGlvbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZnV0ID0gY29yby5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0KKworICAgICAgICBpZiBmdXQgPT0gKCd0aHJvdycsKToKKyAgICAgICAgICAgIGV4YyA9IFRydWUKKworCitkZWYgdG9fbGlzdChnZW4pOgorICAgIGFzeW5jIGRlZiBpdGVyYXRlKCk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGFzeW5jIGZvciBpIGluIGdlbjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoaSkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgcmV0dXJuIHJ1bl91bnRpbF9jb21wbGV0ZShpdGVyYXRlKCkpCisKKworY2xhc3MgQXN5bmNHZW5TeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDEoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkIGZyb20gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3lpZWxkIGZyb20uKmluc2lkZSBhc3luYycpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAyKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAneWllbGQgZnJvbS4qaW5zaWRlIGFzeW5jJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDMoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBhd2FpdCBhYmMKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzA0KHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiAxMjMKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9zeW50YXhfMDUoc2VsZik6CisgICAgICAgIGNvZGUgPSAnJydhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICBpZiAwOgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIKKyAgICAgICAgJycnCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAncmV0dXJuLip2YWx1ZS4qYXN5bmMgZ2VuJyk6CisgICAgICAgICAgICBleGVjKGNvZGUsIHt9LCB7fSkKKworCitjbGFzcyBBc3luY0dlblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGNvbXBhcmVfZ2VuZXJhdG9ycyhzZWxmLCBzeW5jX2dlbiwgYXN5bmNfZ2VuKToKKyAgICAgICAgZGVmIHN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnLl9fbmV4dF9fKCkpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ1NUT1AnKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHR5cGUoZXgpKSkKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBkZWYgYXN5bmNfaXRlcmF0ZShnKToKKyAgICAgICAgICAgIHJlcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZy5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnU1RPUCcpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIGlmIGV4LmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKGV4LmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdFTVBUWSBTdG9wSXRlcmF0aW9uJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIodHlwZShleCkpKQorICAgICAgICAgICAgcmV0dXJuIHJlcworCisgICAgICAgIHN5bmNfZ2VuX3Jlc3VsdCA9IHN5bmNfaXRlcmF0ZShzeW5jX2dlbikKKyAgICAgICAgYXN5bmNfZ2VuX3Jlc3VsdCA9IGFzeW5jX2l0ZXJhdGUoYXN5bmNfZ2VuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5bmNfZ2VuX3Jlc3VsdCwgYXN5bmNfZ2VuX3Jlc3VsdCkKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl9yZXN1bHQKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9pdGVyYXRpb25fMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICBhID0geWllbGQgMTIzCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGEsIE5vbmUpCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNDU2CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgNzg5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b19saXN0KGdlbigpKSwgWzEyMywgNDU2LCA3ODldKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2l0ZXJhdGlvbl8wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEFzeW5jSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDMoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSh0aHJvdz1UcnVlKQorICAgICAgICAgICAgeWllbGQgNDU2CisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBd2FpdEV4Y2VwdGlvbik6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgYWkgPSBnLl9fYWl0ZXJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKSwgKCdyZXN1bHQnLCkpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWkuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTIzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEFzeW5jSXRlcmF0aW9uCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhc3luYyBnZW5lcmF0b3IuKlN0b3BBc3luY0l0ZXJhdGlvbicpOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDYoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXN5bmMgZ2VuZXJhdG9yLipTdG9wSXRlcmF0aW9uJyk6CisgICAgICAgICAgICB0b19saXN0KGdlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wNyhzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA4KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA5KHNlbGYpOgorICAgICAgICBkZWYgc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIGFzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICAgICAgeWllbGQgMTAwCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2dlbmVyYXRvcnMoc3luY19nZW4oKSwgYXN5bmNfZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzEwKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tTm9uZSB2YWx1ZSAuKiBhc3luYyBnZW5lcmF0b3IiKToKKyAgICAgICAgICAgIGdlbigpLl9fYW5leHRfXygpLnNlbmQoMTAwKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FwaV8wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisKKyAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLl9fbmFtZV9fLCAnZ2VuJykKKyAgICAgICAgZy5fX25hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX25hbWVfXywgJzEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbignLmdlbicsIGcuX19xdWFsbmFtZV9fKQorICAgICAgICBnLl9fcXVhbG5hbWVfXyA9ICcxMjMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX3F1YWxuYW1lX18sICcxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGcuYWdfYXdhaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShnLmFnX2ZyYW1lLCB0eXBlcy5GcmFtZVR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZy5hZ19ydW5uaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZy5hZ19jb2RlLCB0eXBlcy5Db2RlVHlwZSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2F3YWl0YWJsZShnLmFjbG9zZSgpKSkKKworCitjbGFzcyBBc3luY0dlbkFzeW5jaW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5sb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCisgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AoTm9uZSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5sb29wLmNsb3NlKCkKKyAgICAgICAgc2VsZi5sb29wID0gTm9uZQorCisgICAgYXN5bmMgZGVmIHRvX2xpc3Qoc2VsZiwgZ2VuKToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgYXN5bmMgZm9yIGkgaW4gZ2VuOgorICAgICAgICAgICAgcmVzLmFwcGVuZChpKQorICAgICAgICByZXR1cm4gcmVzCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHlpZWxkIDMKKworICAgICAgICByZXMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMSwgMl0pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYudG9fbGlzdChnZW4oKSkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb18wMyhzZWxmKToKKyAgICAgICAgbG9vcCA9IHNlbGYubG9vcAorCisgICAgICAgIGNsYXNzIEdlbjoKKyAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDIKKworICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoR2VuKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfMDQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgICAgIHlpZWxkIDMKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAxMDAwCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgeWllbGQgNAorCisgICAgICAgIGFzeW5jIGRlZiBydW4xKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDQpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4yKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAyKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnRocm93KFplcm9EaXZpc2lvbkVycm9yKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMDAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgNCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuMSgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bjIoKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA1KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgdiA9IHlpZWxkIHYKKyAgICAgICAgICAgIHlpZWxkIHYgKiAxMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBpdCA9IGZvbygpLl9fYWl0ZXJfXygpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKDEwKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0Ll9fYW5leHRfXygpLnNlbmQoMTIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUocnVuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hbmV4dF90dXBsZShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkICgxLCkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCAoMiwpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAoMSwpKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSBhcyBjbToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS50aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmFyZ3NbMF0sICgyLCkpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYW5leHRfc3RvcGl0ZXJhdGlvbihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIFN0b3BJdGVyYXRpb24oMSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICB5aWVsZCBTdG9wSXRlcmF0aW9uKDMpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgaXQuX19hbmV4dF9fKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2LCBTdG9wSXRlcmF0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnZhbHVlLCAxKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSBhcyBjbToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS50aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIHYgPSBjbS5leGNlcHRpb24uYXJnc1swXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHYsIFN0b3BJdGVyYXRpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudmFsdWUsIDMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA2KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMTIKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJhc3luYyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0Iik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA3KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgKz0gMQorICAgICAgICAgICAgRE9ORSArPSAxMDAwCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZ2VuID0gZm9vKCkKKyAgICAgICAgICAgIGl0ID0gZ2VuLl9fYWl0ZXJfXygpCisgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA4KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgZnV0CisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSArPSAxCisgICAgICAgICAgICBET05FICs9IDEwMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICB0ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKGl0Ll9fYW5leHRfXygpKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorICAgICAgICAgICAgcmV0dXJuIHQKKworICAgICAgICB0ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgICAgICMgU2lsZW5jZSBSZXNvdXJjZVdhcm5pbmdzCisgICAgICAgIGZ1dC5jYW5jZWwoKQorICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19nY19hY2xvc2VfMDkoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBkZWwgZworCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXNlbmRfMDEoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6CisgICAgICAgIGRlZiBzZ2VuKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgc2cgPSBzZ2VuKCkKKyAgICAgICAgdiA9IHNnLnNlbmQoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorICAgICAgICB2ID0gc2cuc2VuZCgxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwKQorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZCgxMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMihzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKGRlbGF5LCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoMTAwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXNlbmRfMDMoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHNsZWVwX25fY3Jhc2goZGVsYXkpOgorICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5lbnN1cmVfZnV0dXJlKGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKGRlbGF5IC8gMiwgbGFtYmRhOiBmdXQuY2FuY2VsKCkpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoMTAwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfMDEoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgY2xhc3MgRm9vRXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFNhbml0eSBjaGVjazoKKyAgICAgICAgZGVmIHNnZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgIHYgPSAxMDAwCisgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICBzZyA9IHNnZW4oKQorICAgICAgICB2ID0gc2cuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgIHYgPSBzZy50aHJvdyhGb29FcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgc2cuc2VuZChOb25lKQorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgICAgIHYgPSAxMDAwCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICMgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hdGhyb3coRm9vRXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMDApCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXRocm93XzAyKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGNsYXNzIEZvb0VyKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIHNsZWVwX25fY3Jhc2goZGVsYXkpOgorICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5lbnN1cmVfZnV0dXJlKGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKGRlbGF5IC8gMiwgbGFtYmRhOiBmdXQuY2FuY2VsKCkpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2xlZXBfbl9jcmFzaCgwLjAxKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICAjIHJldHVybgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXRocm93KEZvb0VyKQorICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnQ2FuY2VsbGVkRXJyb3Igd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfdHVwbGUoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgeWllbGQgKDIsKQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmF0aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgKDIsKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2F0aHJvd19zdG9waXRlcmF0aW9uKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHlpZWxkIFN0b3BJdGVyYXRpb24oMikKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hdGhyb3coWmVyb0RpdmlzaW9uRXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgU3RvcEl0ZXJhdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi52YWx1ZSwgMikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX3NodXRkb3duXzAxKHNlbGYpOgorICAgICAgICBmaW5hbGl6ZWQgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXRlcih0aW1lb3V0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGZpbmFsaXplZAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGZpbmFsaXplZCArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXQoKToKKyAgICAgICAgICAgIGFzeW5jIGZvciBfIGluIHdhaXRlcigxKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdDEgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICB0MiA9IHNlbGYubG9vcC5jcmVhdGVfdGFzayh3YWl0KCkpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmFsaXplZCwgMikKKworICAgICAgICAjIFNpbGVuY2Ugd2FybmluZ3MKKyAgICAgICAgdDEuY2FuY2VsKCkKKyAgICAgICAgdDIuY2FuY2VsKCkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fc2h1dGRvd25fMDIoc2VsZik6CisgICAgICAgIGxvZ2dlZCA9IDAKKworICAgICAgICBkZWYgbG9nZ2VyKGxvb3AsIGNvbnRleHQpOgorICAgICAgICAgICAgbm9ubG9jYWwgbG9nZ2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhc3luY2dlbicsIGNvbnRleHQpCisgICAgICAgICAgICBleHBlY3RlZCA9ICdhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xvc2luZyBvZiBhc3luY2hyb25vdXMnCisgICAgICAgICAgICBpZiBleHBlY3RlZCBpbiBjb250ZXh0WydtZXNzYWdlJ106CisgICAgICAgICAgICAgICAgbG9nZ2VkICs9IDEKKworICAgICAgICBhc3luYyBkZWYgd2FpdGVyKHRpbWVvdXQpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAodGltZW91dCwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAxIC8gMAorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0KCk6CisgICAgICAgICAgICBhc3luYyBmb3IgXyBpbiB3YWl0ZXIoMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHQgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgc2VsZi5sb29wLnNldF9leGNlcHRpb25faGFuZGxlcihsb2dnZXIpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5sb29wLnNodXRkb3duX2FzeW5jZ2VucygpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2VkLCAxKQorCisgICAgICAgICMgU2lsZW5jZSB3YXJuaW5ncworICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CmluZGV4IDNhMzNmYzguLjBlYmE3NmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QubW9jawogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTI5NywzNyArMjk2LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luY2hhdC5maW5kX3ByZWZpeF9hdF9lbmQoInF3ZXJ0eWRramYiLCAiXHJcbiIpLCAwKQogCiAKLWNsYXNzIFRlc3RGaWZvKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206Ci0gICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgZi5wdXNoKDcpCi0gICAgICAgIGYucHVzaChiJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIDcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZpcnN0KCksIGInYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5pc19lbXB0eSgpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgYidhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuaXNfZW1wdHkoKSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMCwgTm9uZSkpCi0KLSAgICBkZWYgdGVzdF9naXZlbl9saXN0KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKLSAgICAgICAgICAgIGYgPSBhc3luY2hhdC5maWZvKFtiJ3gnLCAxNywgM10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLndhcm5pbmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIGIneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCAxNykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgwLCBOb25lKSkKLQotCiBjbGFzcyBUZXN0Tm90Q29ubmVjdGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kaXNhbGxvd19uZWdhdGl2ZV90ZXJtaW5hdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTI1OQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2Z1dHVyZXMucHkKaW5kZXggYzMwNmI3Ny4uODlhZmRjYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9mdXR1cmVzLnB5CkBAIC05LDYgKzksNyBAQAogCiBpbXBvcnQgYXN5bmNpbwogZnJvbSBhc3luY2lvIGltcG9ydCB0ZXN0X3V0aWxzCitmcm9tIGFzeW5jaW8gaW1wb3J0IGZ1dHVyZXMKIHRyeToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTk0LDcgKzk1LDEwIEBACiAgICAgICAgIGFzc2VydCBnIGlzIGYKIAogCi1jbGFzcyBGdXR1cmVUZXN0cyh0ZXN0X3V0aWxzLlRlc3RDYXNlKToKK2NsYXNzIEJhc2VGdXR1cmVUZXN0czoKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmLCBsb29wPU5vbmUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQpAQCAtMTEwLDIyICsxMTQsMjIgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzeW5jaW8uaXNmdXR1cmUoTXlGdXR1cmUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShNeUZ1dHVyZSgpKSkKLQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzeW5jaW8uaXNmdXR1cmUoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN5bmNpby5pc2Z1dHVyZShhc3luY2lvLkZ1dHVyZSkpCiAKICAgICAgICAgIyBBcyBgaXNpbnN0YW5jZShNb2NrKCksIEZ1dHVyZSlgIHJldHVybnMgYEZhbHNlYAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFzeW5jaW8uaXNmdXR1cmUobW9jay5Nb2NrKCkpKQogCi0gICAgICAgICMgQXMgYGlzaW5zdGFuY2UoTW9jayhGdXR1cmUpLCBGdXR1cmUpYCByZXR1cm5zIGBUcnVlYAotICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShtb2NrLk1vY2soYXN5bmNpby5GdXR1cmUpKSkKLQotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhc3luY2lvLmlzZnV0dXJlKHR5cGUoZikpKQorCisgICAgICAgICMgQXMgYGlzaW5zdGFuY2UoTW9jayhGdXR1cmUpLCBGdXR1cmUpYCByZXR1cm5zIGBUcnVlYAorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShtb2NrLk1vY2sodHlwZShmKSkpKQorCiAgICAgICAgIGYuY2FuY2VsKCkKIAogICAgIGRlZiB0ZXN0X2luaXRpYWxfc3RhdGUoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmRvbmUoKSkKICAgICAgICAgZi5jYW5jZWwoKQpAQCAtMTMzLDE1ICsxMzcsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2luaXRfY29uc3RydWN0b3JfZGVmYXVsdF9sb29wKHNlbGYpOgogICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKHNlbGYubG9vcCkKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUoKQogICAgICAgICBzZWxmLmFzc2VydElzKGYuX2xvb3AsIHNlbGYubG9vcCkKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX3Bvc2l0aW9uYWwoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIEZ1dHVyZSBkb2Vzbid0IGFjY2VwdCBhIHBvc2l0aW9uYWwgYXJndW1lbnQKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhc3luY2lvLkZ1dHVyZSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5fbmV3X2Z1dHVyZSwgNDIpCiAKICAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNhbmNlbCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuZG9uZSgpKQpAQCAtMTUyLDcgKzE1Niw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdChzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5JbnZhbGlkU3RhdGVFcnJvciwgZi5yZXN1bHQpCiAKICAgICAgICAgZi5zZXRfcmVzdWx0KDQyKQpAQCAtMTY2LDcgKzE3MCw3IEBACiAKICAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgIGV4YyA9IFJ1bnRpbWVFcnJvcigpCi0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uSW52YWxpZFN0YXRlRXJyb3IsIGYuZXhjZXB0aW9uKQogCiAgICAgICAgICMgU3RvcEl0ZXJhdGlvbiBjYW5ub3QgYmUgcmFpc2VkIGludG8gYSBGdXR1cmUgLSBDUHl0aG9uIGlzc3VlMjYyMjEKQEAgLTE4MywxMiArMTg3LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9jbGFzcyhzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZi5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYuZXhjZXB0aW9uKCksIFJ1bnRpbWVFcnJvcikKIAogICAgIGRlZiB0ZXN0X3lpZWxkX2Zyb21fdHdpY2Uoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAKICAgICAgICAgZGVmIGZpeHR1cmUoKToKICAgICAgICAgICAgIHlpZWxkICdBJwpAQCAtMjA3LDcgKzIxMSw3IEBACiAKICAgICBkZWYgdGVzdF9mdXR1cmVfcmVwcihzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQotICAgICAgICBmX3BlbmRpbmdfZGVidWcgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9wZW5kaW5nX2RlYnVnID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnJhbWUgPSBmX3BlbmRpbmdfZGVidWcuX3NvdXJjZV90cmFjZWJhY2tbLTFdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX3BlbmRpbmdfZGVidWcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIHBlbmRpbmcgY3JlYXRlZCBhdCAlczolcz4nCkBAIC0yMTUsMjEgKzIxOSwyMSBAQAogICAgICAgICBmX3BlbmRpbmdfZGVidWcuY2FuY2VsKCkKIAogICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKEZhbHNlKQotICAgICAgICBmX3BlbmRpbmcgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9wZW5kaW5nID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcGVuZGluZyksICc8RnV0dXJlIHBlbmRpbmc+JykKICAgICAgICAgZl9wZW5kaW5nLmNhbmNlbCgpCiAKLSAgICAgICAgZl9jYW5jZWxsZWQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9jYW5jZWxsZWQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX2NhbmNlbGxlZC5jYW5jZWwoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9jYW5jZWxsZWQpLCAnPEZ1dHVyZSBjYW5jZWxsZWQ+JykKIAotICAgICAgICBmX3Jlc3VsdCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3Jlc3VsdCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfcmVzdWx0LnNldF9yZXN1bHQoNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcmVzdWx0KSwgJzxGdXR1cmUgZmluaXNoZWQgcmVzdWx0PTQ+JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmX3Jlc3VsdC5yZXN1bHQoKSwgNCkKIAogICAgICAgICBleGMgPSBSdW50aW1lRXJyb3IoKQotICAgICAgICBmX2V4Y2VwdGlvbiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX2V4Y2VwdGlvbiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfZXhjZXB0aW9uLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9leGNlcHRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1SdW50aW1lRXJyb3IoKT4nKQpAQCAtMjQwLDcgKzI0NCw3IEBACiAgICAgICAgICAgICB0ZXh0ID0gJyVzKCkgYXQgJXM6JXMnICUgKGZ1bmMuX19xdWFsbmFtZV9fLCBmaWxlbmFtZSwgbGluZW5vKQogICAgICAgICAgICAgcmV0dXJuIHJlLmVzY2FwZSh0ZXh0KQogCi0gICAgICAgIGZfb25lX2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX29uZV9jYWxsYmFja3MgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX29uZV9jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2soX2Zha2VmdW5jKQogICAgICAgICBmYWtlX3JlcHIgPSBmdW5jX3JlcHIoX2Zha2VmdW5jKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZl9vbmVfY2FsbGJhY2tzKSwKQEAgLTI0OSw3ICsyNTMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9vbmVfY2FsbGJhY2tzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnPEZ1dHVyZSBjYW5jZWxsZWQ+JykKIAotICAgICAgICBmX3R3b19jYWxsYmFja3MgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl90d29fY2FsbGJhY2tzID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl90d29fY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKGZpcnN0X2NiKQogICAgICAgICBmX3R3b19jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2sobGFzdF9jYikKICAgICAgICAgZmlyc3RfcmVwciA9IGZ1bmNfcmVwcihmaXJzdF9jYikKQEAgLTI1OCw3ICsyNjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHInPEZ1dHVyZSBwZW5kaW5nIGNiPVxbJXMsICVzXF0+JwogICAgICAgICAgICAgICAgICAgICAgICAgICUgKGZpcnN0X3JlcHIsIGxhc3RfcmVwcikpCiAKLSAgICAgICAgZl9tYW55X2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX21hbnlfY2FsbGJhY2tzID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9tYW55X2NhbGxiYWNrcy5hZGRfZG9uZV9jYWxsYmFjayhmaXJzdF9jYikKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOCk6CiAgICAgICAgICAgICBmX21hbnlfY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKF9mYWtlZnVuYykKQEAgLTI3MywzMSArMjc3LDMxIEBACiAgICAgZGVmIHRlc3RfY29weV9zdGF0ZShzZWxmKToKICAgICAgICAgZnJvbSBhc3luY2lvLmZ1dHVyZXMgaW1wb3J0IF9jb3B5X2Z1dHVyZV9zdGF0ZQogCi0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGYuc2V0X3Jlc3VsdCgxMCkKIAotICAgICAgICBuZXdmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIG5ld2YgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBfY29weV9mdXR1cmVfc3RhdGUoZiwgbmV3ZikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld2YuZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2YucmVzdWx0KCksIDEwKQogCi0gICAgICAgIGZfZXhjZXB0aW9uID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfZXhjZXB0aW9uID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9leGNlcHRpb24uc2V0X2V4Y2VwdGlvbihSdW50aW1lRXJyb3IoKSkKIAotICAgICAgICBuZXdmX2V4Y2VwdGlvbiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBuZXdmX2V4Y2VwdGlvbiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmX2V4Y2VwdGlvbiwgbmV3Zl9leGNlcHRpb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdmX2V4Y2VwdGlvbi5kb25lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbmV3Zl9leGNlcHRpb24ucmVzdWx0KQogCi0gICAgICAgIGZfY2FuY2VsbGVkID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfY2FuY2VsbGVkID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9jYW5jZWxsZWQuY2FuY2VsKCkKIAotICAgICAgICBuZXdmX2NhbmNlbGxlZCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBuZXdmX2NhbmNlbGxlZCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmX2NhbmNlbGxlZCwgbmV3Zl9jYW5jZWxsZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdmX2NhbmNlbGxlZC5jYW5jZWxsZWQoKSkKIAogICAgIGRlZiB0ZXN0X2l0ZXIoc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogCiAgICAgICAgIGRlZiBjb3JvKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dApAQCAtMzEwLDIwICszMTQsMjAgQEAKIAogICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCiAgICAgZGVmIHRlc3RfdGJfbG9nZ2VyX2FiYW5kb25lZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobV9sb2cuZXJyb3IuY2FsbGVkKQogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfcmVzdWx0X3VucmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KDQyKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobV9sb2cuZXJyb3IuY2FsbGVkKQogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfcmVzdWx0X3JldHJpZXZlZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X3Jlc3VsdCg0MikKICAgICAgICAgZnV0LnJlc3VsdCgpCiAgICAgICAgIGRlbCBmdXQKQEAgLTMzMSw3ICszMzUsNyBAQAogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfZXhjZXB0aW9uX3VucmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQpAQCAtMzQwLDcgKzM0NCw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fcmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBmdXQuZXhjZXB0aW9uKCkKICAgICAgICAgZGVsIGZ1dApAQCAtMzQ4LDcgKzM1Miw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fcmVzdWx0X3JldHJpZXZlZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihSdW50aW1lRXJyb3IoJ2Jvb20nKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmdXQucmVzdWx0KQogICAgICAgICBkZWwgZnV0CkBAIC0zNjIsMTIgKzM2NiwxMiBAQAogICAgICAgICBmMSA9IGV4LnN1Ym1pdChydW4sICdvaScpCiAgICAgICAgIGYyID0gYXN5bmNpby53cmFwX2Z1dHVyZShmMSwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHJlcywgaWRlbnQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGYyKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZjIsIGFzeW5jaW8uRnV0dXJlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShmMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAnb2knKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkZW50LCB0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAKICAgICBkZWYgdGVzdF93cmFwX2Z1dHVyZV9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGYxID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYxID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZjIgPSBhc3luY2lvLndyYXBfZnV0dXJlKGYxKQogICAgICAgICBzZWxmLmFzc2VydElzKGYxLCBmMikKIApAQCAtNDAyLDEwICs0MDYsMTAgQEAKICAgICBkZWYgdGVzdF9mdXR1cmVfc291cmNlX3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQogCi0gICAgICAgIGZ1dHVyZSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXR1cmUgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBsaW5lbm8gPSBzeXMuX2dldGZyYW1lKCkuZl9saW5lbm8gLSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2ssIGxpc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXVs6M10sCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0yXVs6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fZmlsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2Z1dHVyZV9zb3VyY2VfdHJhY2ViYWNrJykpCkBAIC00MjEsNTcgKzQyNSwxOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBleGMKICAgICAgICAgZXhjID0gbWVtb3J5X2Vycm9yKCkKIAotICAgICAgICBmdXR1cmUgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICBzb3VyY2VfdHJhY2ViYWNrID0gZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrCisgICAgICAgIGZ1dHVyZSA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dHVyZS5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICAgZnV0dXJlID0gTm9uZQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKIAogICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA0KToKLSAgICAgICAgICAgIGlmIGRlYnVnOgotICAgICAgICAgICAgICAgIGZyYW1lID0gc291cmNlX3RyYWNlYmFja1stMV0KLSAgICAgICAgICAgICAgICByZWdleCA9IChyJ15GdXR1cmUgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ2Z1dHVyZTogPEZ1dHVyZSBmaW5pc2hlZCBleGNlcHRpb249TWVtb3J5RXJyb3JcKFwpICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidjcmVhdGVkIGF0IHtmaWxlbmFtZX06e2xpbmVub30+XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidzb3VyY2VfdHJhY2ViYWNrOiBPYmplY3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInY3JlYXRlZCBhdCBcKG1vc3QgcmVjZW50IGNhbGwgbGFzdFwpOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgRmlsZSAie2ZpbGVuYW1lfSIsIGxpbmUge2xpbmVub30sICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2luIGNoZWNrX2Z1dHVyZV9leGNlcHRpb25fbmV2ZXJfcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgICAgZnV0dXJlID0gYXN5bmNpb1wuRnV0dXJlXChsb29wPXNlbGZcLmxvb3BcKSQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZmlsZW5hbWU9cmUuZXNjYXBlKGZyYW1lWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89ZnJhbWVbMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInZnV0dXJlOiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1NZW1vcnlFcnJvclwoXCk+JCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZWdleCA9IHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwogICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShleGMpLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKQogICAgICAgICAgICAgbV9sb2cuZXJyb3IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgobW9jay5BTlksIGV4Y19pbmZvPWV4Y19pbmZvKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgZnJhbWUgPSBzb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidGdXR1cmUvVGFzayBjcmVhdGVkIGF0IFwobW9zdCByZWNlbnQgY2FsbCBsYXN0XCk6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgIEZpbGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicuKlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlICJ7ZmlsZW5hbWV9IiwgbGluZSB7bGluZW5vfSwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInaW4gY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgICBmdXR1cmUgPSBhc3luY2lvXC5GdXR1cmVcKGxvb3A9c2VsZlwubG9vcFwpXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidUcmFjZWJhY2sgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidNZW1vcnlFcnJvciQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZmlsZW5hbWU9cmUuZXNjYXBlKGZyYW1lWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89ZnJhbWVbMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidUcmFjZWJhY2sgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidNZW1vcnlFcnJvciQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmVnZXggPSByJ15GdXR1cmUvVGFzayBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwogICAgICAgICAgICAgbV9sb2cuZXJyb3IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgobW9jay5BTlksIGV4Y19pbmZvPUZhbHNlKQogICAgICAgICBtZXNzYWdlID0gbV9sb2cuZXJyb3IuY2FsbF9hcmdzWzBdWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobWVzc2FnZSwgcmUuY29tcGlsZShyZWdleCwgcmUuRE9UQUxMKSkKQEAgLTQ4MywxNCArNDQ4LDQ5IEBACiAgICAgICAgIHNlbGYuY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWQoVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZChzZWxmKToKLSAgICAgICAgZnJvbSBhc3luY2lvIGltcG9ydCBmdXR1cmVzCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuY2FuY2VsKCkKICAgICAgICAgZnV0dXJlcy5fc2V0X3Jlc3VsdF91bmxlc3NfY2FuY2VsbGVkKGZ1dCwgMikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZ1dC5jYW5jZWxsZWQoKSkKIAorICAgIGRlZiB0ZXN0X2Z1dHVyZV9zdG9wX2l0ZXJhdGlvbl9hcmdzKHNlbGYpOgorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQuc2V0X3Jlc3VsdCgoMSwgMikpCisgICAgICAgIGZpID0gZnV0Ll9faXRlcl9fKCkKKyAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaS5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmVzdWx0ID0gZXguYXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBleHBlY3RlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAoMSwgMikpCiAKLWNsYXNzIEZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Z1dHVyZV9pdGVyX3Rocm93KHNlbGYpOgorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmaSA9IGl0ZXIoZnV0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpLnRocm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb24sIEV4Y2VwdGlvbigiZWxlcGhhbnQiKSwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmkudGhyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbigiZWxlcGhhbnQiKSwgRXhjZXB0aW9uKCJlbGVwaGFudCIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZpLnRocm93LCBsaXN0KQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENGdXR1cmVUZXN0cyhCYXNlRnV0dXJlVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsICAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gZnV0dXJlcy5fQ0Z1dHVyZSgqYXJncywgKiprd2FyZ3MpCisKKworY2xhc3MgUHlGdXR1cmVUZXN0cyhCYXNlRnV0dXJlVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBmdXR1cmVzLl9QeUZ1dHVyZSgqYXJncywgKiprd2FyZ3MpCisKKworY2xhc3MgQmFzZUZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzKCk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQpAQCAtNTA2LDcgKzUwNiw3IEBACiAgICAgICAgIHJldHVybiBiYWdfYXBwZW5kZXIKIAogICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKLSAgICAgICAgcmV0dXJuIGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgdGVzdF9jYWxsYmFja3NfaW52b2tlZF9vbl9zZXRfcmVzdWx0KHNlbGYpOgogICAgICAgICBiYWcgPSBbXQpAQCAtNTcwLDUgKzU3MCwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVzdWx0KCksICdmb28nKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cyhCYXNlRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX25ld19mdXR1cmUoc2VsZik6CisgICAgICAgIHJldHVybiBmdXR1cmVzLl9DRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisKK2NsYXNzIFB5RnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMoQmFzZUZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGZ1dHVyZXMuX1B5RnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF90YXNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CmluZGV4IDk4NzI5MjYuLmUwNDgzODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CkBAIC0xLDUgKzEsNiBAQAogIiIiVGVzdHMgZm9yIHRhc2tzLnB5LiIiIgogCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KQEAgLTE0LDYgKzE1LDggQEAKIAogaW1wb3J0IGFzeW5jaW8KIGZyb20gYXN5bmNpbyBpbXBvcnQgY29yb3V0aW5lcworZnJvbSBhc3luY2lvIGltcG9ydCBmdXR1cmVzCitmcm9tIGFzeW5jaW8gaW1wb3J0IHRhc2tzCiBmcm9tIGFzeW5jaW8gaW1wb3J0IHRlc3RfdXRpbHMKIHRyeToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTcyLDE1ICs3NSwyNiBAQAogICAgICAgICBwYXNzCiAKIAotY2xhc3MgVGFza1Rlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRhc2tUZXN0czoKKworICAgIFRhc2sgPSBOb25lCisgICAgRnV0dXJlID0gTm9uZQorCisgICAgZGVmIG5ld190YXNrKHNlbGYsIGxvb3AsIGNvcm8pOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uVGFzayhjb3JvLCBsb29wPWxvb3ApCisKKyAgICBkZWYgbmV3X2Z1dHVyZShzZWxmLCBsb29wKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLkZ1dHVyZShsb29wPWxvb3ApCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQogICAgICAgICBzZWxmLmxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoKQorICAgICAgICBzZWxmLmxvb3Auc2V0X3Rhc2tfZmFjdG9yeShzZWxmLm5ld190YXNrKQorICAgICAgICBzZWxmLmxvb3AuY3JlYXRlX2Z1dHVyZSA9IGxhbWJkYTogc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgIGRlZiB0ZXN0X290aGVyX2xvb3BfZnV0dXJlKHNlbGYpOgogICAgICAgICBvdGhlcl9sb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9b3RoZXJfbG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKG90aGVyX2xvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBydW4oZnV0KToKQEAgLTEwOCw3ICsxMjIsNyBAQAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIG5vdG11Y2goKToKICAgICAgICAgICAgIHJldHVybiAnb2snCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sobm90bXVjaCgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBub3RtdWNoKCkpCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVzdWx0KCksICdvaycpCkBAIC0xMTYsNyArMTMwLDcgQEAKIAogICAgICAgICBsb29wID0gYXN5bmNpby5uZXdfZXZlbnRfbG9vcCgpCiAgICAgICAgIHNlbGYuc2V0X2V2ZW50X2xvb3AobG9vcCkKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhub3RtdWNoKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgbm90bXVjaCgpKQogICAgICAgICBzZWxmLmFzc2VydElzKHQuX2xvb3AsIGxvb3ApCiAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIGxvb3AuY2xvc2UoKQpAQCAtMTM5LDcgKzE1Myw3IEBACiAgICAgICAgIGxvb3AuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZW5zdXJlX2Z1dHVyZV9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGZfb3JpZyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX29yaWcgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBmX29yaWcuc2V0X3Jlc3VsdCgna28nKQogCiAgICAgICAgIGYgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoZl9vcmlnKQpAQCAtMTYzLDcgKzE3Nyw3IEBACiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgbm90bXVjaCgpOgogICAgICAgICAgICAgcmV0dXJuICdvaycKLSAgICAgICAgdF9vcmlnID0gYXN5bmNpby5UYXNrKG5vdG11Y2goKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRfb3JpZyA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBub3RtdWNoKCkpCiAgICAgICAgIHQgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUodF9vcmlnKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmRvbmUoKSkKQEAgLTIwNCw3ICsyMTgsNyBAQAogICAgICAgICAgICAgYXN5bmNpby5lbnN1cmVfZnV0dXJlKCdvaycpCiAKICAgICBkZWYgdGVzdF9hc3luY193YXJuaW5nKHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgZW5zdXJlXycpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmLCBhc3luY2lvLmFzeW5jKGYpKQpAQCAtMjUxLDggKzI2NSw4IEBACiAgICAgICAgICMgdGVzdCBjb3JvdXRpbmUgZnVuY3Rpb24KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fbmFtZV9fLCAnbm90bXVjaCcpCiAgICAgICAgIGlmIFBZMzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19xdWFsbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFza1Rlc3RzLnRlc3RfdGFza19yZXByLjxsb2NhbHM+Lm5vdG11Y2gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChub3RtdWNoLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcdysudGVzdF90YXNrX3JlcHIuPGxvY2Fscz4ubm90bXVjaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX21vZHVsZV9fLCBfX25hbWVfXykKIAogICAgICAgICBmaWxlbmFtZSwgbGluZW5vID0gdGVzdF91dGlscy5nZXRfZnVuY3Rpb25fc291cmNlKG5vdG11Y2gpCkBAIC0yNjEsNyArMjc1LDcgQEAKICAgICAgICAgIyB0ZXN0IGNvcm91dGluZSBvYmplY3QKICAgICAgICAgZ2VuID0gbm90bXVjaCgpCiAgICAgICAgIGlmIGNvcm91dGluZXMuX0RFQlVHIG9yIFBZMzU6Ci0gICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gJ1Rhc2tUZXN0cy50ZXN0X3Rhc2tfcmVwci48bG9jYWxzPi5ub3RtdWNoJworICAgICAgICAgICAgY29yb19xdWFsbmFtZSA9ICdCYXNlVGFza1Rlc3RzLnRlc3RfdGFza19yZXByLjxsb2NhbHM+Lm5vdG11Y2gnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gJ25vdG11Y2gnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuLl9fbmFtZV9fLCAnbm90bXVjaCcpCkBAIC0yNzAsNyArMjg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yb19xdWFsbmFtZSkKIAogICAgICAgICAjIHRlc3QgcGVuZGluZyBUYXNrCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2soZ2VuLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBnZW4pCiAgICAgICAgIHQuYWRkX2RvbmVfY2FsbGJhY2soRHVtbXkoKSkKIAogICAgICAgICBjb3JvID0gZm9ybWF0X2Nvcm91dGluZShjb3JvX3F1YWxuYW1lLCAncnVubmluZycsIHNyYywKQEAgLTI5Miw3ICszMDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICc8VGFzayBjYW5jZWxsZWQgJXM+JyAlIGNvcm8pCiAKICAgICAgICAgIyB0ZXN0IGZpbmlzaGVkIFRhc2sKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhub3RtdWNoKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIG5vdG11Y2goKSkKICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQogICAgICAgICBjb3JvID0gZm9ybWF0X2Nvcm91dGluZShjb3JvX3F1YWxuYW1lLCAnZG9uZScsIHNyYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5fc291cmNlX3RyYWNlYmFjaykKQEAgLTMxMSw5ICszMjUsOSBAQAogICAgICAgICAjIHRlc3QgY29yb3V0aW5lIGZ1bmN0aW9uCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX25hbWVfXywgJ25vdG11Y2gnKQogICAgICAgICBpZiBQWTM1OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fcXVhbG5hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rhc2tUZXN0cy50ZXN0X3Rhc2tfcmVwcl9jb3JvX2RlY29yYXRvcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy48bG9jYWxzPi5ub3RtdWNoJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobm90bXVjaC5fX3F1YWxuYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHcrLnRlc3RfdGFza19yZXByX2Nvcm9fZGVjb3JhdG9yJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1wuPGxvY2Fscz5cLm5vdG11Y2gnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19tb2R1bGVfXywgX19uYW1lX18pCiAKICAgICAgICAgIyB0ZXN0IGNvcm91dGluZSBvYmplY3QKQEAgLTMyMyw3ICszMzcsNyBAQAogICAgICAgICAgICAgIyBmdW5jdGlvbiwgYXMgZXhwZWN0ZWQsIGFuZCBoYXZlIGEgcXVhbGlmaWVkIG5hbWUgKF9fcXVhbG5hbWVfXwogICAgICAgICAgICAgIyBhdHRyaWJ1dGUpLgogICAgICAgICAgICAgY29yb19uYW1lID0gJ25vdG11Y2gnCi0gICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gKCdUYXNrVGVzdHMudGVzdF90YXNrX3JlcHJfY29yb19kZWNvcmF0b3InCisgICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gKCdCYXNlVGFza1Rlc3RzLnRlc3RfdGFza19yZXByX2Nvcm9fZGVjb3JhdG9yJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLjxsb2NhbHM+Lm5vdG11Y2gnKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBPbiBQeXRob24gPCAzLjUsIGdlbmVyYXRvcnMgaW5oZXJpdCB0aGUgbmFtZSBvZiB0aGUgY29kZSwgbm90IG9mCkBAIC0zNTEsNyArMzY1LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihnZW4pLCAnPENvcm9XcmFwcGVyICVzPicgJSBjb3JvKQogCiAgICAgICAgICMgdGVzdCBwZW5kaW5nIFRhc2sKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhnZW4sIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGdlbikKICAgICAgICAgdC5hZGRfZG9uZV9jYWxsYmFjayhEdW1teSgpKQogCiAgICAgICAgICMgZm9ybWF0IHRoZSBjb3JvdXRpbmUgb2JqZWN0CkBAIC0zNzQsOCArMzg4LDggQEAKICAgICAgICAgZGVmIHdhaXRfZm9yKGZ1dCk6CiAgICAgICAgICAgICByZXR1cm4gKHlpZWxkIGZyb20gZnV0KQogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKHdhaXRfZm9yKGZ1dCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHdhaXRfZm9yKGZ1dCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIodGFzayksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxUYXNrIC4qIHdhaXRfZm9yPSVzPicgJSByZS5lc2NhcGUocmVwcihmdXQpKSkKQEAgLTQwMSwxMCArNDE1LDExIEBACiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodGFzay5fY29yby5jbG9zZSkKIAogICAgICAgICBjb3JvX3JlcHIgPSByZXByKHRhc2suX2Nvcm8pCi0gICAgICAgIGV4cGVjdGVkID0gKCc8Q29yb1dyYXBwZXIgVGFza1Rlc3RzLnRlc3RfdGFza19yZXByX3BhcnRpYWxfY29yb3dyYXBwZXInCi0gICAgICAgICAgICAgICAgICAgICcuPGxvY2Fscz4uZnVuYygxKSgpIHJ1bm5pbmcsICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3JvX3JlcHIuc3RhcnRzd2l0aChleHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3JlcHIpCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICAgcic8Q29yb1dyYXBwZXIgXHcrLnRlc3RfdGFza19yZXByX3BhcnRpYWxfY29yb3dyYXBwZXInCisgICAgICAgICAgICByJ1wuPGxvY2Fscz5cLmZ1bmNcKDFcKVwoXCkgcnVubmluZywgJworICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29yb19yZXByLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0X3Rhc2tfYmFzaWNzKHNlbGYpOgogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKQEAgLTQzOCw3ICs0NTMsNyBAQAogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIHRhc2soKSkKICAgICAgICAgbG9vcC5jYWxsX3Nvb24odC5jYW5jZWwpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CiAgICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQpAQCAtNDUzLDcgKzQ2OCw3IEBACiAgICAgICAgICAgICB5aWVsZAogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHRhc2soKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApICAjIHN0YXJ0IGNvcm8KICAgICAgICAgdC5jYW5jZWwoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKQEAgLTQ2MywxNCArNDc4LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X2NhbmNlbF9pbm5lcl9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB0YXNrKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGYKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0YXNrKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKSAgIyBzdGFydCB0YXNrCiAgICAgICAgIGYuY2FuY2VsKCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKQEAgLTQ3OSwxNCArNDk0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3RfY2FuY2VsX2JvdGhfdGFza19hbmRfaW5uZXJfZnV0dXJlKHNlbGYpOgotICAgICAgICBmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgdGFzaygpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBmCiAgICAgICAgICAgICByZXR1cm4gMTIKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKIAogICAgICAgICBmLmNhbmNlbCgpCkBAIC01MDAsOCArNTE1LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuY2FuY2VsbGVkKCkpCiAKICAgICBkZWYgdGVzdF9jYW5jZWxfdGFza19jYXRjaGluZyhzZWxmKToKLSAgICAgICAgZnV0MSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBmdXQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dDEgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICBmdXQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHRhc2soKToKQEAgLTUxMSw3ICs1MjYsNyBAQAogICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDQyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHRhc2soKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXModC5fZnV0X3dhaXRlciwgZnV0MSkgICMgV2hpdGUtYm94IHRlc3QuCiAgICAgICAgIGZ1dDEuc2V0X3Jlc3VsdChOb25lKQpAQCAtNTI0LDkgKzUzOSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodC5jYW5jZWxsZWQoKSkKIAogICAgIGRlZiB0ZXN0X2NhbmNlbF90YXNrX2lnbm9yaW5nKHNlbGYpOgotICAgICAgICBmdXQxID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIGZ1dDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgZnV0MyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgZnV0MiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGZ1dDMgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgdGFzaygpOgpAQCAtNTM4LDcgKzU1Myw3IEBACiAgICAgICAgICAgICByZXMgPSB5aWVsZCBmcm9tIGZ1dDMKICAgICAgICAgICAgIHJldHVybiByZXMKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0Ll9mdXRfd2FpdGVyLCBmdXQxKSAgIyBXaGl0ZS1ib3ggdGVzdC4KICAgICAgICAgZnV0MS5zZXRfcmVzdWx0KE5vbmUpCkBAIC01NjYsNyArNTgxLDcgQEAKICAgICAgICAgICAgIHlpZWxkIGZyb20gYXN5bmNpby5zbGVlcCgxMDAsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIHRhc2soKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBhc3luY2lvLkNhbmNlbGxlZEVycm9yLCBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSwgdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQpAQCAtNTk5LDcgKzYxNCw3IEBACiAgICAgICAgICAgICAgICAgaWYgeCA9PSAyOgogICAgICAgICAgICAgICAgICAgICBsb29wLnN0b3AoKQogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIHRhc2soKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKQEAgLTYzNyw3ICs2NTIsNyBAQAogICAgICAgICAgICAgICAgIGZvb19ydW5uaW5nID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiAnZG9uZScKIAotICAgICAgICBmdXQgPSBhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uVGltZW91dEVycm9yKToKICAgICAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8ud2FpdF9mb3IoZnV0LCAwLjEsIGxvb3A9bG9vcCkpCkBAIC02NzcsNyArNjkyLDcgQEAKIAogICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKGxvb3ApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKQorICAgICAgICAgICAgZnV0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5UaW1lb3V0RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8ud2FpdF9mb3IoZnV0LCAwLjAxKSkKICAgICAgICAgZmluYWxseToKQEAgLTY5Niw3ICs3MTEsNyBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9bG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKGxvb3ApCiAgICAgICAgIHRhc2sgPSBhc3luY2lvLndhaXRfZm9yKGZ1dCwgdGltZW91dD0wLjIsIGxvb3A9bG9vcCkKICAgICAgICAgbG9vcC5jYWxsX2xhdGVyKDAuMSwgZnV0LnNldF9yZXN1bHQsICJvayIpCiAgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCkBAIC03MTMsOCArNzI4LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTcyMywxMiArNzM4LDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlbmRpbmcsIHNldCgpKQogICAgICAgICAgICAgcmV0dXJuIDQyCiAKLSAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogCiAgICAgICAgICMgRG9pbmcgaXQgYWdhaW4gc2hvdWxkIHRha2Ugbm8gdGltZSBhbmQgZXhlcmNpc2UgYSBkaWZmZXJlbnQgcGF0aC4KLSAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogCkBAIC03NDMsOCArNzU4LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICBiID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4wMTUsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMDE1LCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZm9vKCk6CkBAIC03NTUsNyArNzcwLDcgQEAKIAogICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKGxvb3ApCiAgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAotICAgICAgICAgICAgYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICAgICAgc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogCkBAIC03NjUsOSArNzgwLDkgQEAKICAgICAgICAgICAgIHJldHVybiBzCiAgICAgICAgIGMgPSBjb3JvKCd0ZXN0JykKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKAotICAgICAgICAgICAgYXN5bmNpby53YWl0KFtjLCBjLCBjb3JvKCdzcGFtJyldLCBsb29wPXNlbGYubG9vcCksCi0gICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9c2VsZi5uZXdfdGFzaygKKyAgICAgICAgICAgIHNlbGYubG9vcCwKKyAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYywgYywgY29ybygnc3BhbScpXSwgbG9vcD1zZWxmLmxvb3ApKQogCiAgICAgICAgIGRvbmUsIHBlbmRpbmcgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCiAKQEAgLTc5OCwxMiArODEzLDEyIEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKAorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzaygKKyAgICAgICAgICAgIGxvb3AsCiAgICAgICAgICAgICBhc3luY2lvLndhaXQoW2IsIGFdLCByZXR1cm5fd2hlbj1hc3luY2lvLkZJUlNUX0NPTVBMRVRFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApLAotICAgICAgICAgICAgbG9vcD1sb29wKQorICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCkpCiAKICAgICAgICAgZG9uZSwgcGVuZGluZyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe2J9LCBkb25lKQpAQCAtODMwLDEyICs4NDUsMTIgQEAKICAgICAgICAgICAgIHlpZWxkCiAgICAgICAgICAgICB5aWVsZAogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soY29ybzEoKSwgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soY29ybzIoKSwgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybzEoKSkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMigpKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzaygKKyAgICAgICAgICAgIHNlbGYubG9vcCwKICAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfQ09NUExFVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKSwKLSAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHthLCBifSwgZG9uZSkKQEAgLTg1NCwxNyArODY5LDE3IEBACiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCiAgICAgICAgICMgZmlyc3RfZXhjZXB0aW9uLCB0YXNrIGFscmVhZHkgaGFzIGV4Y2VwdGlvbgotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBleGMoKToKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKCdlcnInKQogCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soZXhjKCksIGxvb3A9bG9vcCkKLSAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzaygKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgZXhjKCkpCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKAorICAgICAgICAgICAgbG9vcCwKICAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfRVhDRVBUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCksCi0gICAgICAgICAgICBsb29wPWxvb3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7Yn0sIGRvbmUpCkBAIC04ODcsMTQgKzkwMiwxNCBAQAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAogICAgICAgICAjIGZpcnN0X2V4Y2VwdGlvbiwgZXhjZXB0aW9uIGR1cmluZyB3YWl0aW5nCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgxMC4wLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGV4YygpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKCdlcnInKQogCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soZXhjKCksIGxvb3A9bG9vcCkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgZXhjKCkpCiAgICAgICAgIHRhc2sgPSBhc3luY2lvLndhaXQoW2IsIGFdLCByZXR1cm5fd2hlbj1hc3luY2lvLkZJUlNUX0VYQ0VQVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApCiAKQEAgLTkxOCwxNCArOTMzLDE0IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHNsZWVwZXIoKToKICAgICAgICAgICAgIHlpZWxkIGZyb20gYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApCiAgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcigncmVhbGx5JykKIAotICAgICAgICBiID0gYXN5bmNpby5UYXNrKHNsZWVwZXIoKSwgbG9vcD1sb29wKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBzbGVlcGVyKCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTkzNSwxMCArOTUwLDEwIEBACiAgICAgICAgICAgICBlcnJvcnMgPSBzZXQoZiBmb3IgZiBpbiBkb25lIGlmIGYuZXhjZXB0aW9uKCkgaXMgbm90IE5vbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlcnJvcnMpLCAxKQogCi0gICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAKLSAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKIAogICAgIGRlZiB0ZXN0X3dhaXRfd2l0aF90aW1lb3V0KHNlbGYpOgpAQCAtOTU0LDggKzk2OSw4IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICBiID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xNSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1sb29wKSkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZm9vKCk6CkBAIC05NjQsNyArOTc5LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9uZSwgc2V0KFthXSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlbmRpbmcsIHNldChbYl0pKQogCi0gICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xMSwgbG9vcC50aW1lKCkpCiAKICAgICAgICAgIyBtb3ZlIGZvcndhcmQgdG8gY2xvc2UgZ2VuZXJhdG9yCkBAIC05ODQsOCArOTk5LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgZG9uZSwgcGVuZGluZyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKAogICAgICAgICAgICAgYXN5bmNpby53YWl0KFtiLCBhXSwgdGltZW91dD0wLjEsIGxvb3A9bG9vcCkpCkBAIC0xMDMzLDE0ICsxMDQ4LDE0IEBACiAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgoeWllbGQgZnJvbSBmKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMKIAotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2EnIGluIHJlc1s6Ml0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYicgaW4gcmVzWzoyXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMl0sICdjJykKIAogICAgICAgICAjIERvaW5nIGl0IGFnYWluIHNob3VsZCB0YWtlIG5vIHRpbWUgYW5kIGV4ZXJjaXNlIGEgZGlmZmVyZW50IHBhdGguCi0gICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAKICAgICBkZWYgdGVzdF9hc19jb21wbGV0ZWRfd2l0aF90aW1lb3V0KHNlbGYpOgpAQCAtMTA2OSw3ICsxMDg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCgoMiwgZXhjKSkKICAgICAgICAgICAgIHJldHVybiB2YWx1ZXMKIAotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAyLCByZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzBdLCAoMSwgJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMV1bMF0sIDIpCkBAIC0xMDk3LDcgKzExMTIsNyBAQAogICAgICAgICAgICAgICAgIHYgPSB5aWVsZCBmcm9tIGYKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsICdhJykKIAotICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogCiAgICAgZGVmIHRlc3RfYXNfY29tcGxldGVkX3JldmVyc2Vfd2FpdChzZWxmKToKIApAQCAtMTE1Nyw3ICsxMTcyLDcgQEAKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCh5aWVsZCBmcm9tIGYpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uVGFzayhydW5uZXIoKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBydW5uZXIoKSkKICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShmdXQpCiAgICAgICAgIHJlc3VsdCA9IGZ1dC5yZXN1bHQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChyZXN1bHQpLCB7J2hhbScsICdzcGFtJ30pCkBAIC0xMTgwLDcgKzExOTUsNyBAQAogICAgICAgICAgICAgcmVzID0geWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKGR0LzIsIGFyZywgbG9vcD1sb29wKQogICAgICAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2soc2xlZXBlcigwLjEsICd5ZWFoJyksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgc2xlZXBlcigwLjEsICd5ZWFoJykpCiAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0LmRvbmUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlc3VsdCgpLCAneWVhaCcpCkBAIC0xMTk1LDggKzEyMTAsNyBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgxMC4wLCAneWVhaCcsIGxvb3A9bG9vcCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDEwLjAsICd5ZWFoJywgbG9vcD1sb29wKSkKIAogICAgICAgICBoYW5kbGUgPSBOb25lCiAgICAgICAgIG9yaWdfY2FsbF9sYXRlciA9IGxvb3AuY2FsbF9sYXRlcgpAQCAtMTIzMiw3ICsxMjQ2LDcgQEAKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGRvaXQoKToKLSAgICAgICAgICAgIHNsZWVwZXIgPSBhc3luY2lvLlRhc2soc2xlZXAoNTAwMCksIGxvb3A9bG9vcCkKKyAgICAgICAgICAgIHNsZWVwZXIgPSBzZWxmLm5ld190YXNrKGxvb3AsIHNsZWVwKDUwMDApKQogICAgICAgICAgICAgbG9vcC5jYWxsX2xhdGVyKDAuMSwgc2xlZXBlci5jYW5jZWwpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBzbGVlcGVyCkBAIC0xMjQ2LDEzICsxMjYwLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xLCBsb29wLnRpbWUoKSkKIAogICAgIGRlZiB0ZXN0X3Rhc2tfY2FuY2VsX3dhaXRlcl9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgY29ybygpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGNvcm8oKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0YXNrLl9mdXRfd2FpdGVyLCBmdXQpCiAKQEAgLTEyNjksNyArMTI4Myw3IEBACiAgICAgICAgICAgICByZXR1cm4gJ2tvJwogCiAgICAgICAgIGdlbiA9IG5vdG11Y2goKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGdlbiwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgZ2VuKQogICAgICAgICB0YXNrLnNldF9yZXN1bHQoJ29rJykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgdGFzay5fc3RlcCkKQEAgLTEzMDUsNyArMTMxOSw3IEBACiAgICAgICAgICAgICBub25sb2NhbCByZXN1bHQKICAgICAgICAgICAgIHJlc3VsdCA9IHlpZWxkIGZyb20gZnV0CiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh3YWl0X2Zvcl9mdXR1cmUoKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgd2FpdF9mb3JfZnV0dXJlKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZnV0LmNiX2FkZGVkKQogCkBAIC0xMzIxLDcgKzEzMzUsNyBAQAogICAgICAgICBkZWYgbm90bXV0Y2goKToKICAgICAgICAgICAgIHJhaXNlIEJhc2VFeGNlcHRpb24oKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2sobm90bXV0Y2goKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgbm90bXV0Y2goKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQmFzZUV4Y2VwdGlvbiwgdGFzay5fc3RlcCkKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUodGFzay5kb25lKCkpCkBAIC0xMzQ5LDcgKzEzNjMsNyBAQAogICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgYmFzZV9leGMKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKG5vdG11dGNoKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2sobG9vcCwgbm90bXV0Y2goKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShsb29wKQogCiAgICAgICAgIHRhc2suY2FuY2VsKCkKQEAgLTEzNzksNyArMTM5Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uKG1vY2suTW9jaygpKSkKIAogICAgIGRlZiB0ZXN0X3lpZWxkX3ZzX3lpZWxkX2Zyb20oc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgd2FpdF9mb3JfZnV0dXJlKCk6CkBAIC0xNDIzLDcgKzE0MzcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgJ3Rlc3QnKQogCiAgICAgZGVmIHRlc3RfY29yb3V0aW5lX25vbl9nZW5fZnVuY3Rpb25fcmV0dXJuX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmdW5jKCk6CkBAIC0xNDMzLDQ5ICsxNDQ3LDUzIEBACiAgICAgICAgIGRlZiBjb3JvKCk6CiAgICAgICAgICAgICBmdXQuc2V0X3Jlc3VsdCgndGVzdCcpCiAKLSAgICAgICAgdDEgPSBhc3luY2lvLlRhc2soZnVuYygpLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgdDIgPSBhc3luY2lvLlRhc2soY29ybygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdDEgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgZnVuYygpKQorICAgICAgICB0MiA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKCkpCiAgICAgICAgIHJlcyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAndGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHQyLnJlc3VsdCgpKQogCiAgICAgZGVmIHRlc3RfY3VycmVudF90YXNrKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKKyAgICAgICAgVGFzayA9IHNlbGYuX19jbGFzc19fLlRhc2sKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvKGxvb3ApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzaykKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGNvcm8oc2VsZi5sb29wKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybyhzZWxmLmxvb3ApKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCiAKICAgICBkZWYgdGVzdF9jdXJyZW50X3Rhc2tfd2l0aF9pbnRlcmxlYXZpbmdfdGFza3Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBUYXNrID0gc2VsZi5fX2NsYXNzX18uVGFzawogCi0gICAgICAgIGZ1dDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgZnV0MiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCisKKyAgICAgICAgZnV0MSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGZ1dDIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgY29ybzEobG9vcCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2sxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazEpCiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dDEKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMSkKICAgICAgICAgICAgIGZ1dDIuc2V0X3Jlc3VsdChUcnVlKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgY29ybzIobG9vcCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2syKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazIpCiAgICAgICAgICAgICBmdXQxLnNldF9yZXN1bHQoVHJ1ZSkKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0MgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2syKQogCi0gICAgICAgIHRhc2sxID0gYXN5bmNpby5UYXNrKGNvcm8xKHNlbGYubG9vcCksIGxvb3A9c2VsZi5sb29wKQotICAgICAgICB0YXNrMiA9IGFzeW5jaW8uVGFzayhjb3JvMihzZWxmLmxvb3ApLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzazEgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybzEoc2VsZi5sb29wKSkKKyAgICAgICAgdGFzazIgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgY29ybzIoc2VsZi5sb29wKSkKIAogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8ud2FpdCgodGFzazEsIHRhc2syKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQogCiAgICAgIyBTb21lIHRob3JvdWdoIHRlc3RzIGZvciBjYW5jZWxsYXRpb24gcHJvcGFnYXRpb24gdGhyb3VnaAogICAgICMgY29yb3V0aW5lcywgdGFza3MgYW5kIHdhaXQoKS4KQEAgLTE0ODMsNyArMTUwMSw3IEBACiAgICAgZGVmIHRlc3RfeWllbGRfZnV0dXJlX3Bhc3Nlc19jYW5jZWwoc2VsZik6CiAgICAgICAgICMgQ2FuY2VsbGluZyBvdXRlcigpIGNhbmNlbHMgaW5uZXIoKSBjYW5jZWxzIHdhaXRlci4KICAgICAgICAgcHJvb2YgPSAwCi0gICAgICAgIHdhaXRlciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICB3YWl0ZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgaW5uZXIoKToKQEAgLTE1MTcsNyArMTUzNSw3IEBACiAgICAgICAgICMgQ2FuY2VsbGluZyBvdXRlcigpIG1ha2VzIHdhaXQoKSByZXR1cm4gZWFybHksIGxlYXZlcyBpbm5lcigpCiAgICAgICAgICMgcnVubmluZy4KICAgICAgICAgcHJvb2YgPSAwCi0gICAgICAgIHdhaXRlciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICB3YWl0ZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgaW5uZXIoKToKQEAgLTE1NDEsMTQgKzE1NTksMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9vZiwgMSkKIAogICAgIGRlZiB0ZXN0X3NoaWVsZF9yZXN1bHQoc2VsZik6Ci0gICAgICAgIGlubmVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGlubmVyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgb3V0ZXIgPSBhc3luY2lvLnNoaWVsZChpbm5lcikKICAgICAgICAgaW5uZXIuc2V0X3Jlc3VsdCg0MikKICAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShvdXRlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQogCiAgICAgZGVmIHRlc3Rfc2hpZWxkX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAgaW5uZXIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgaW5uZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBvdXRlciA9IGFzeW5jaW8uc2hpZWxkKGlubmVyKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgZXhjID0gUnVudGltZUVycm9yKCdleHBlY3RlZCcpCkBAIC0xNTU3LDcgKzE1NzUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzKG91dGVyLmV4Y2VwdGlvbigpLCBleGMpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfY2FuY2VsKHNlbGYpOgotICAgICAgICBpbm5lciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBpbm5lciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIG91dGVyID0gYXN5bmNpby5zaGllbGQoaW5uZXIpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBpbm5lci5jYW5jZWwoKQpAQCAtMTU2NSw3ICsxNTgzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG91dGVyLmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3Rfc2hpZWxkX3Nob3J0Y3V0KHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgZnV0LnNldF9yZXN1bHQoNDIpCiAgICAgICAgIHJlcyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zaGllbGQoZnV0KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIDQyKQpAQCAtMTU3Myw3ICsxNTkxLDcgQEAKICAgICBkZWYgdGVzdF9zaGllbGRfZWZmZWN0KHNlbGYpOgogICAgICAgICAjIENhbmNlbGxpbmcgb3V0ZXIoKSBkb2VzIG5vdCBhZmZlY3QgaW5uZXIoKS4KICAgICAgICAgcHJvb2YgPSAwCi0gICAgICAgIHdhaXRlciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICB3YWl0ZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgaW5uZXIoKToKQEAgLTE1OTcsOCArMTYxNSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvb2YsIDEpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfZ2F0aGVyKHNlbGYpOgotICAgICAgICBjaGlsZDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgY2hpbGQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIHBhcmVudCA9IGFzeW5jaW8uZ2F0aGVyKGNoaWxkMSwgY2hpbGQyLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgb3V0ZXIgPSBhc3luY2lvLnNoaWVsZChwYXJlbnQsIGxvb3A9c2VsZi5sb29wKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKQEAgLTE2MTEsOCArMTYyOSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyZW50LnJlc3VsdCgpLCBbMSwgMl0pCiAKICAgICBkZWYgdGVzdF9nYXRoZXJfc2hpZWxkKHNlbGYpOgotICAgICAgICBjaGlsZDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgY2hpbGQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGNoaWxkMiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIGlubmVyMSA9IGFzeW5jaW8uc2hpZWxkKGNoaWxkMSwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGlubmVyMiA9IGFzeW5jaW8uc2hpZWxkKGNoaWxkMiwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHBhcmVudCA9IGFzeW5jaW8uZ2F0aGVyKGlubmVyMSwgaW5uZXIyLCBsb29wPXNlbGYubG9vcCkKQEAgLTE2MjgsNyArMTY0Niw3IEBACiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogCiAgICAgZGVmIHRlc3RfYXNfY29tcGxldGVkX2ludmFsaWRfYXJncyhzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgIyBhc19jb21wbGV0ZWQoKSBleHBlY3RzIGEgbGlzdCBvZiBmdXR1cmVzLCBub3QgYSBmdXR1cmUgaW5zdGFuY2UKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlLApAQCAtMTYzOSw3ICsxNjU3LDcgQEAKICAgICAgICAgY29yby5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF93YWl0X2ludmFsaWRfYXJncyhzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgIyB3YWl0KCkgZXhwZWN0cyBhIGxpc3Qgb2YgZnV0dXJlcywgbm90IGEgZnV0dXJlIGluc3RhbmNlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSwKQEAgLTE2NjYsNyArMTY4NCw3IEBACiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQKIAogICAgICAgICAgICAgIyBBIGNvbXBsZXRlZCBGdXR1cmUgdXNlZCB0byBydW4gdGhlIGNvcm91dGluZS4KLSAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KE5vbmUpCiAKICAgICAgICAgICAgICMgQ2FsbCB0aGUgY29yb3V0aW5lLgpAQCAtMTcwMCwxNSArMTcxOCwxNSBAQAogCiAgICAgICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgICAgIGRlZiB0MigpOgotICAgICAgICAgICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgICAgICAgICBhc3luY2lvLlRhc2sodDMoZiksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGYgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0MyhmKSkKICAgICAgICAgICAgICAgICByZXR1cm4gKHlpZWxkIGZyb20gZikKIAogICAgICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgICAgICBkZWYgdDMoZik6CiAgICAgICAgICAgICAgICAgZi5zZXRfcmVzdWx0KCgxLCAyLCAzKSkKIAotICAgICAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzayh0MSgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdDEoKSkKICAgICAgICAgICAgIHZhbCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsLCAoMSwgMiwgMykpCiAKQEAgLTE3NzEsOSArMTc4OSwxMSBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFBZMzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgcHl0aG9uIDMuNCBvciBsYXRlcicpCiAgICAgZGVmIHRlc3RfbG9nX2Rlc3Ryb3llZF9wZW5kaW5nX3Rhc2soc2VsZik6CisgICAgICAgIFRhc2sgPSBzZWxmLl9fY2xhc3NfXy5UYXNrCisKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBraWxsX21lKGxvb3ApOgotICAgICAgICAgICAgZnV0dXJlID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICAgICAgZnV0dXJlID0gc2VsZi5uZXdfZnV0dXJlKGxvb3ApCiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dHVyZQogICAgICAgICAgICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgb25seSByZWZlcmVuY2UgdG8ga2lsbF9tZSgpIHRhc2sgaXMKICAgICAgICAgICAgICMgdGhlIFRhc2suX3dha2V1cCgpIG1ldGhvZCBpbiBmdXR1cmUuX2NhbGxiYWNrcwpAQCAtMTc4Niw3ICsxODA2LDcgQEAKICAgICAgICAgIyBzY2hlZHVsZSB0aGUgdGFzawogICAgICAgICBjb3JvID0ga2lsbF9tZShzZWxmLmxvb3ApCiAgICAgICAgIHRhc2sgPSBhc3luY2lvLmVuc3VyZV9mdXR1cmUoY29ybywgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmNpby5UYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHt0YXNrfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHt0YXNrfSkKIAogICAgICAgICAjIGV4ZWN1dGUgdGhlIHRhc2sgc28gaXQgd2FpdHMgZm9yIGZ1dHVyZQogICAgICAgICBzZWxmLmxvb3AuX3J1bl9vbmNlKCkKQEAgLTE4MDEsNyArMTgyMSw3IEBACiAgICAgICAgICMgbm8gbW9yZSByZWZlcmVuY2UgdG8ga2lsbF9tZSgpIHRhc2s6IHRoZSB0YXNrIGlzIGRlc3Ryb3llZCBieSB0aGUgR0MKICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jaW8uVGFzay5hbGxfdGFza3MobG9vcD1zZWxmLmxvb3ApLCBzZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHNldCgpKQogCiAgICAgICAgIG1vY2tfaGFuZGxlci5hc3NlcnRfY2FsbGVkX3dpdGgoc2VsZi5sb29wLCB7CiAgICAgICAgICAgICAnbWVzc2FnZSc6ICdUYXNrIHdhcyBkZXN0cm95ZWQgYnV0IGl0IGlzIHBlbmRpbmchJywKQEAgLTE4NjYsMTAgKzE4ODYsMTAgQEAKICAgICBkZWYgdGVzdF90YXNrX3NvdXJjZV90cmFjZWJhY2soc2VsZik6CiAgICAgICAgIHNlbGYubG9vcC5zZXRfZGVidWcoVHJ1ZSkKIAotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKGNvcm91dGluZV9mdW5jdGlvbigpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvdXRpbmVfZnVuY3Rpb24oKSkKICAgICAgICAgbGluZW5vID0gc3lzLl9nZXRmcmFtZSgpLmZfbGluZW5vIC0gMQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodGFzay5fc291cmNlX3RyYWNlYmFjaywgbGlzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXNrLl9zb3VyY2VfdHJhY2ViYWNrWy0xXVs6M10sCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFzay5fc291cmNlX3RyYWNlYmFja1stMl1bOjNdLAogICAgICAgICAgICAgICAgICAgICAgICAgIChfX2ZpbGVfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF90YXNrX3NvdXJjZV90cmFjZWJhY2snKSkKQEAgLTE4ODEsNyArMTkwMSw3IEBACiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBibG9ja2luZ19jb3JvdXRpbmUoKToKLSAgICAgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9bG9vcCkKKyAgICAgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShsb29wKQogICAgICAgICAgICAgIyBCbG9jazogZnV0IHJlc3VsdCBpcyBuZXZlciBzZXQKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0CiAKQEAgLTE5MDgsNyArMTkyOCw3IEBACiAgICAgICAgIGxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvb3AuY2xvc2UpCiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUobG9vcCkKICAgICAgICAgIyBUaGUgaW5kaXJlY3Rpb24gZnV0LT5jaGlsZF9jb3JvIGlzIG5lZWRlZCBzaW5jZSBvdGhlcndpc2UgdGhlCiAgICAgICAgICMgZ2F0aGVyaW5nIHRhc2sgaXMgZG9uZSBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBjaGlsZCBmdXR1cmUKICAgICAgICAgZGVmIGNoaWxkX2Nvcm8oKToKQEAgLTE5MzIsNiArMTk1MiwxNTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnYXRoZXJfdGFzay5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnYXRoZXJfdGFzay5yZXN1bHQoKSwgWzQyXSkKIAorICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCisgICAgZGVmIHRlc3RfZXJyb3JfaW5fY2FsbF9zb29uKHNlbGYsIG1fbG9nKToKKyAgICAgICAgZGVmIGNhbGxfc29vbihjYWxsYmFjaywgKmFyZ3MpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBzZWxmLmxvb3AuY2FsbF9zb29uID0gY2FsbF9zb29uCisKKyAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCisgICAgICAgIGRlZiBjb3JvKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtX2xvZy5lcnJvci5jYWxsZWQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1fbG9nLmVycm9yLmNhbGxlZCkKKyAgICAgICAgbWVzc2FnZSA9IG1fbG9nLmVycm9yLmNhbGxfYXJnc1swXVswXQorICAgICAgICBzZWxmLmFzc2VydEluKCdUYXNrIHdhcyBkZXN0cm95ZWQgYnV0IGl0IGlzIHBlbmRpbmcnLCBtZXNzYWdlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5UYXNrLmFsbF90YXNrcyhzZWxmLmxvb3ApLCBzZXQoKSkKKworCitkZWYgYWRkX3N1YmNsYXNzX3Rlc3RzKGNscyk6CisgICAgQmFzZVRhc2sgPSBjbHMuVGFzaworICAgIEJhc2VGdXR1cmUgPSBjbHMuRnV0dXJlCisKKyAgICBpZiBCYXNlVGFzayBpcyBOb25lIG9yIEJhc2VGdXR1cmUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIGNscworCisgICAgY2xhc3MgQ29tbW9uRnV0dXJlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsYW1iZGE6IDApCisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBkZWYgX3NjaGVkdWxlX2NhbGxiYWNrcyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHNbJ19zY2hlZHVsZV9jYWxsYmFja3MnXSArPSAxCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fc2NoZWR1bGVfY2FsbGJhY2tzKCkKKworICAgICAgICBkZWYgYWRkX2RvbmVfY2FsbGJhY2soc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYWxsc1snYWRkX2RvbmVfY2FsbGJhY2snXSArPSAxCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5hZGRfZG9uZV9jYWxsYmFjaygqYXJncykKKworICAgIGNsYXNzIFRhc2soQ29tbW9uRnV0dXJlLCBCYXNlVGFzayk6CisgICAgICAgIGRlZiBfc3RlcChzZWxmLCAqYXJncyk6CisgICAgICAgICAgICBzZWxmLmNhbGxzWydfc3RlcCddICs9IDEKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9zdGVwKCphcmdzKQorCisgICAgICAgIGRlZiBfd2FrZXVwKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHNbJ193YWtldXAnXSArPSAxCisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fd2FrZXVwKCphcmdzKQorCisgICAgY2xhc3MgRnV0dXJlKENvbW1vbkZ1dHVyZSwgQmFzZUZ1dHVyZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXNfY3Rhc2tfY2Z1dHVyZShzZWxmKToKKyAgICAgICAgZnV0ID0gc2VsZi5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgYXN5bmMgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX3Nvb24obGFtYmRhOiBmdXQuc2V0X3Jlc3VsdCgnc3BhbScpKQorICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGZ1dAorCisgICAgICAgIHRhc2sgPSBzZWxmLlRhc2soZnVuYygpLCBsb29wPXNlbGYubG9vcCkKKworICAgICAgICByZXN1bHQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICdzcGFtJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZGljdCh0YXNrLmNhbGxzKSwKKyAgICAgICAgICAgIHsnX3N0ZXAnOiAyLCAnX3dha2V1cCc6IDEsICdhZGRfZG9uZV9jYWxsYmFjayc6IDEsCisgICAgICAgICAgICAgJ19zY2hlZHVsZV9jYWxsYmFja3MnOiAxfSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZGljdChmdXQuY2FsbHMpLAorICAgICAgICAgICAgeydhZGRfZG9uZV9jYWxsYmFjayc6IDEsICdfc2NoZWR1bGVfY2FsbGJhY2tzJzogMX0pCisKKyAgICAjIEFkZCBwYXRjaGVkIFRhc2sgJiBGdXR1cmUgYmFjayB0byB0aGUgdGVzdCBjYXNlCisgICAgY2xzLlRhc2sgPSBUYXNrCisgICAgY2xzLkZ1dHVyZSA9IEZ1dHVyZQorCisgICAgIyBBZGQgYW4gZXh0cmEgdW5pdC10ZXN0CisgICAgY2xzLnRlc3Rfc3ViY2xhc3Nlc19jdGFza19jZnV0dXJlID0gdGVzdF9zdWJjbGFzc2VzX2N0YXNrX2NmdXR1cmUKKworICAgICMgRGlzYWJsZSB0aGUgInRlc3RfdGFza19zb3VyY2VfdHJhY2ViYWNrIiB0ZXN0CisgICAgIyAodGhlIHRlc3QgaXMgaGFyZGNvZGVkIGZvciBhIHBhcnRpY3VsYXIgY2FsbCBzdGFjaywgd2hpY2gKKyAgICAjIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmb3IgVGFzayBzdWJjbGFzc2VzKQorICAgIGNscy50ZXN0X3Rhc2tfc291cmNlX3RyYWNlYmFjayA9IE5vbmUKKworICAgIHJldHVybiBjbHMKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScpLAorICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHRoZSBDIF9hc3luY2lvIG1vZHVsZScpCitjbGFzcyBDVGFza19DRnV0dXJlX1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSBnZXRhdHRyKHRhc2tzLCAnX0NUYXNrJywgTm9uZSkKKyAgICBGdXR1cmUgPSBnZXRhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScsIE5vbmUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorQGFkZF9zdWJjbGFzc190ZXN0cworY2xhc3MgQ1Rhc2tfQ0Z1dHVyZV9TdWJjbGFzc1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSBnZXRhdHRyKHRhc2tzLCAnX0NUYXNrJywgTm9uZSkKKyAgICBGdXR1cmUgPSBnZXRhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScsIE5vbmUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgQ1Rhc2tfUHlGdXR1cmVfVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IGdldGF0dHIodGFza3MsICdfQ1Rhc2snLCBOb25lKQorICAgIEZ1dHVyZSA9IGZ1dHVyZXMuX1B5RnV0dXJlCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmdXR1cmVzLCAnX0NGdXR1cmUnKSwKKyAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB0aGUgQyBfYXN5bmNpbyBtb2R1bGUnKQorY2xhc3MgUHlUYXNrX0NGdXR1cmVfVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IHRhc2tzLl9QeVRhc2sKKyAgICBGdXR1cmUgPSBnZXRhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScsIE5vbmUpCisKKworY2xhc3MgUHlUYXNrX1B5RnV0dXJlX1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSB0YXNrcy5fUHlUYXNrCisgICAgRnV0dXJlID0gZnV0dXJlcy5fUHlGdXR1cmUKKworCitAYWRkX3N1YmNsYXNzX3Rlc3RzCitjbGFzcyBQeVRhc2tfUHlGdXR1cmVfU3ViY2xhc3NUZXN0cyhCYXNlVGFza1Rlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICBUYXNrID0gdGFza3MuX1B5VGFzaworICAgIEZ1dHVyZSA9IGZ1dHVyZXMuX1B5RnV0dXJlCisKKworY2xhc3MgR2VuZXJpY1Rhc2tUZXN0cyh0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Z1dHVyZV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXN5bmNpby5UYXNrLCBhc3luY2lvLkZ1dHVyZSkpCisKKyAgICBkZWYgdGVzdF9hc3luY2lvX21vZHVsZV9jb21waWxlZChzZWxmKToKKyAgICAgICAgIyBCZWNhdXNlIG9mIGNpcmN1bGFyIGltcG9ydHMgaXQncyBlYXN5IHRvIG1ha2UgX2FzeW5jaW8KKyAgICAgICAgIyBtb2R1bGUgbm9uLWltcG9ydGFibGUuICBUaGlzIGlzIGEgc2ltcGxlIHRlc3QgdGhhdCB3aWxsCisgICAgICAgICMgZmFpbCBvbiBzeXN0ZW1zIHdoZXJlIEMgbW9kdWxlcyB3ZXJlIHN1Y2Nlc3NmdWxseSBjb21waWxlZAorICAgICAgICAjIChoZW5jZSB0aGUgdGVzdCBmb3IgX2Z1bmN0b29scyksIGJ1dCBfYXN5bmNpbyBzb21laG93IGRpZG4ndC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IF9mdW5jdG9vbHMKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBfYXN5bmNpbworICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnX2FzeW5jaW8gbW9kdWxlIGlzIG1pc3NpbmcnKQorCiAKIGNsYXNzIEdhdGhlclRlc3RzQmFzZToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKaW5kZXggMzg1NzkxNi4uZGJlZTU5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CkBAIC0xMSw2ICsxMSw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weSBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CmluZGV4IDUwOTNlOWQuLjU5MzBkOWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5CkBAIC04Myw2ICs4MywxMCBAQAogICAgICAgICAgICAgZGVmIF9faWFkZF9fKHNlbGYsIHZhbCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF1Z190ZXN0MyhzZWxmLnZhbCArIHZhbCkKIAorICAgICAgICBjbGFzcyBhdWdfdGVzdDQoYXVnX3Rlc3QzKToKKyAgICAgICAgICAgICIiIkJsb2NrcyBpbmhlcml0YW5jZSwgYW5kIGZhbGxiYWNrIHRvIF9fYWRkX18iIiIKKyAgICAgICAgICAgIF9faWFkZF9fID0gTm9uZQorCiAgICAgICAgIHggPSBhdWdfdGVzdCgxKQogICAgICAgICB5ID0geAogICAgICAgICB4ICs9IDEwCkBAIC0xMDYsNiArMTEwLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudmFsLCAxMykKIAorICAgICAgICB4ID0gYXVnX3Rlc3Q0KDQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHggKz0gMTAKKwogCiAgICAgZGVmIHRlc3RDdXN0b21NZXRob2RzMih0ZXN0X3NlbGYpOgogICAgICAgICBvdXRwdXQgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkgYi9MaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfYmFzZWV4Y2VwdGlvbi5weQppbmRleCA3Yzk4YzQ2Li4yN2Q1MTRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDM1Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgb3MKIGZyb20gcGxhdGZvcm0gaW1wb3J0IHN5c3RlbSBhcyBwbGF0Zm9ybV9zeXN0ZW0KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQppbmRleCA0MGFjOWJmLi42MTMzYmJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQpAQCAtMTQsNyArMTQsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBzeXMKLWltcG9ydCBmdW5jdG9vbHMKIAogIyBUaGVzZSB0ZXN0cyBhbGwgdXNlIG9uZSBvZiB0aGUgYmlnbWVtdGVzdCBkZWNvcmF0b3JzIHRvIGluZGljYXRlIGhvdyBtdWNoCiAjIG1lbW9yeSB0aGV5IHVzZSBhbmQgaG93IG11Y2ggbWVtb3J5IHRoZXkgbmVlZCB0byBiZSBldmVuIG1lYW5pbmdmdWwuICBUaGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CmluZGV4IDAzNDI0NWQuLjZiM2U0MzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQpAQCAtMTU5LDExICsxNTksMjUgQEAKICAgICAgICAgIyBUaGVuIGNhbGN1bGF0ZSB0aGUgaGV4YmluNCBiaW5hcnktdG8tQVNDSUkgdHJhbnNsYXRpb24KICAgICAgICAgcmxlID0gYmluYXNjaWkucmxlY29kZV9ocXgoc2VsZi5kYXRhKQogICAgICAgICBhID0gYmluYXNjaWkuYjJhX2hxeChzZWxmLnR5cGUydGVzdChybGUpKQorCiAgICAgICAgIGIsIF8gPSBiaW5hc2NpaS5hMmJfaHF4KHNlbGYudHlwZTJ0ZXN0KGEpKQogICAgICAgICByZXMgPSBiaW5hc2NpaS5ybGVkZWNvZGVfaHF4KGIpCi0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHNlbGYucmF3ZGF0YSkKIAorICAgIGRlZiB0ZXN0X3JsZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IHJlcGV0aXRpb24gd2l0aCBhIHJlcGV0aXRpb24gbG9uZ2VyIHRoYW4gdGhlIGxpbWl0IG9mIDI1NQorICAgICAgICBkYXRhID0gKGInYScgKiAxMDAgKyBiJ2InICsgYidjJyAqIDMwMCkKKworICAgICAgICBlbmNvZGVkID0gYmluYXNjaWkucmxlY29kZV9ocXgoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIChiJ2FceDkwZCcgICAgICAjICdhJyAqIDEwMAorICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2InICAgICAgICAgICAjICdiJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2NceDkwXHhmZicgICAjICdjJyAqIDI1NQorICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2NceDkwLScpKSAgICAjICdjJyAqIDQ1CisKKyAgICAgICAgZGVjb2RlZCA9IGJpbmFzY2lpLnJsZWRlY29kZV9ocXgoZW5jb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBkYXRhKQorCiAgICAgZGVmIHRlc3RfaGV4KHNlbGYpOgogICAgICAgICAjIHRlc3QgaGV4bGlmaWNhdGlvbgogICAgICAgICBzID0gYid7c1wwMDVcMDAwXDAwMFwwMDB3b3JsZGlcMDAyXDAwMFwwMDBcMDAwc1wwMDVcMDAwXDAwMFwwMDBoZWxsb2lcMDAxXDAwMFwwMDBcMDAwMCcKQEAgLTMzMSw2ICszNDUsMTYgQEAKICAgICAgICAgICAgICMgbm9uLUFTQ0lJIHN0cmluZwogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYTJiLCAiXHg4MCIpCiAKKyAgICBkZWYgdGVzdF9iMmFfYmFzZTY0X25ld2xpbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1MzU3OiB0ZXN0IG5ld2xpbmUgcGFyYW1ldGVyCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW5hc2NpaS5iMmFfYmFzZTY0KGIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD1cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiLCBuZXdsaW5lPVRydWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD1cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiLCBuZXdsaW5lPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9JykKKwogCiBjbGFzcyBBcnJheUJpbkFTQ0lJVGVzdChCaW5BU0NJSVRlc3QpOgogICAgIGRlZiB0eXBlMnRlc3Qoc2VsZiwgcyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpbmhleC5weSBiL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CmluZGV4IDlkNGM4NWEuLjIxZjQ0NjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5CkBAIC00LDcgKzQsNiBAQAogICAgQmFzZWQgb24gYW4gb3JpZ2luYWwgdGVzdCBieSBSb2dlciBFLiBNYXNzZS4KICIiIgogaW1wb3J0IGJpbmhleAotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQppbmRleCBlOWRiZGRjLi4zZWQwMThlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIG9wZXJhdG9yIGltcG9ydCBlcSwgbmUsIGx0LCBndCwgbGUsIGdlCitmcm9tIG9wZXJhdG9yIGltcG9ydCBlcSwgbGUsIG5lCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YQogCiBkZWYgZ2NkKGEsIGIpOgpAQCAtMzg4LDYgKzM4OCw1NCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGVxLCBCLCBWKSwgWydCLl9fZXFfXycsICdWLl9fZXFfXyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wX3NlcXVlbmNlKGxlLCBCLCBWKSwgWydCLl9fbGVfXycsICdWLl9fZ2VfXyddKQogCitjbGFzcyBTdXBFcShvYmplY3QpOgorICAgICIiIkNsYXNzIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHkiIiIKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworY2xhc3MgUyhTdXBFcSk6CisgICAgIiIiU3ViY2xhc3Mgb2YgU3VwRXEgdGhhdCBzaG91bGQgZmFpbCIiIgorICAgIF9fZXFfXyA9IE5vbmUKKworY2xhc3MgRihvYmplY3QpOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgc2hvdWxkIGZhbGwgYmFjayIiIgorCitjbGFzcyBYKG9iamVjdCk6CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBzaG91bGQgZmFpbCIiIgorICAgIF9fZXFfXyA9IE5vbmUKKworY2xhc3MgU04oU3VwRXEpOgorICAgICIiIlN1YmNsYXNzIG9mIFN1cEVxIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHksIGJ1dCBub3Qgbm9uLWVxdWFsaXR5IiIiCisgICAgX19uZV9fID0gTm9uZQorCitjbGFzcyBYTjoKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5LCBidXQgbm90IG5vbi1lcXVhbGl0eSIiIgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIF9fbmVfXyA9IE5vbmUKKworY2xhc3MgRmFsbGJhY2tCbG9ja2luZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBOb25lIG1ldGhvZCBibG9ja2luZyIiIgorCisgICAgZGVmIHRlc3RfZmFsbGJhY2tfcm1ldGhvZF9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZSwgZiwgcywgeCA9IFN1cEVxKCksIEYoKSwgUygpLCBYKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgZSkKKyAgICAgICAgIyBsZWZ0IG9wZXJhbmQgaXMgY2hlY2tlZCBmaXJzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIHgsIGUpCisgICAgICAgICMgUyBpcyBhIHN1YmNsYXNzLCBzbyBpdCdzIGFsd2F5cyBjaGVja2VkIGZpcnN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIGUsIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXEsIHMsIGUpCisKKyAgICBkZWYgdGVzdF9mYWxsYmFja19uZV9ibG9ja2luZyhzZWxmKToKKyAgICAgICAgZSwgc24sIHhuID0gU3VwRXEoKSwgU04oKSwgWE4oKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUgIT0gZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZSwgZSwgc24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIHNuLCBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUgIT0geG4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIHhuLCBlKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5IGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CmluZGV4IGQzMGEzYjkuLjlmOGYwZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKQEAgLTk2LDYgKzk2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UvMSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGYWxzZS8xLCBGYWxzZSkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUlMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChUcnVlJTEsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUlMiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChUcnVlJTIsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UlMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGYWxzZSUxLCBGYWxzZSkKKwogICAgICAgICBmb3IgYiBpbiBGYWxzZSwgVHJ1ZToKICAgICAgICAgICAgIGZvciBpIGluIDAsIDEsIDI6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiKippLCBpbnQoYikqKmkpCkBAIC0zMzMsNiArMzQwLDE3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IChFeGNlcHRpb24pIGFzIGVfbGVuOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlX2Jvb2wpLCBzdHIoZV9sZW4pKQogCisgICAgZGVmIHRlc3RfYmxvY2tlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIF9fYm9vbF9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJvb2wsIEEoKSkKKworICAgICAgICBjbGFzcyBCOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEwCisgICAgICAgICAgICBfX2Jvb2xfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBib29sLCBCKCkpCisKICAgICBkZWYgdGVzdF9yZWFsX2FuZF9pbWFnKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUucmVhbCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLmltYWcsIDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CmluZGV4IDJlZWY5ZmMuLmI4M2YyZjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5CkBAIC0xNiw3ICsxNiw2IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBwZXJtdXRhdGlvbnMsIHByb2R1Y3QKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNhbXBsZSwgY2hvaWNlCi1mcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ192YXIKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHN5cywgYXJyYXksIGlvCiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CmluZGV4IDk5MzFjODQuLmZlYTZkYTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZpby5weQpAQCAtNTksNyArNTksNyBAQAogICAgICAgICBzZWxmLmRyaXZlX29uZShiIjEyMzQ1Njc4OTBcMDBcMDFcMDJcMDNcMDRcMDVcMDYiKQogCiAgICAgZGVmIHRlc3RfbnVsbHBhdChzZWxmKToKLSAgICAgICAgc2VsZi5kcml2ZV9vbmUoYnl0ZXMoMTAwMCkpCisgICAgICAgIHNlbGYuZHJpdmVfb25lKGInXDAnICogMTAwMCkKIAogCiBjbGFzcyBDQnVmZmVyU2l6ZVRlc3QoQnVmZmVyU2l6ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weSBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQppbmRleCAwYjAzMzQwLi5hNzkyMDk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgICgnJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICcsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAgXHRcdCAgJywgVmFsdWVFcnJvciksCi0gICAgICAgIChzdHIoYidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCisgICAgICAgIChzdHIoYnInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAogICAgICAgICAoY2hyKDB4MjAwKSwgVmFsdWVFcnJvciksCiBdCiAKQEAgLTEwNCw3ICsxMDQsNyBAQAogICAgICAgICAoJycsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgIFx0XHQgICcsIFZhbHVlRXJyb3IpLAotICAgICAgICAoc3RyKGInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAorICAgICAgICAoc3RyKGJyJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKICAgICAgICAgKGNocigweDIwMCksIFZhbHVlRXJyb3IpLAogXQogCkBAIC0xNzA4LDIxICsxNzA4LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5zcGFtKCksICdzcGFtNDInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgudG9fYnl0ZXMoMiwgJ2xpdHRsZScpLCBiJ1x4MmFceDAwJykKIAotICAgIGRlZiB0ZXN0X3R5cGVfbmV3X2tleXdvcmRzKHNlbGYpOgotICAgICAgICBjbGFzcyBCOgotICAgICAgICAgICAgZGVmIGhhbShzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2hhbSVkJyAlIHNlbGYKLSAgICAgICAgQyA9IHR5cGUuX19uZXdfXyh0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9J0MnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VzPShCLCBpbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3Q9eydzcGFtJzogbGFtYmRhIHNlbGY6ICdzcGFtJXMnICUgc2VsZn0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX25hbWVfXywgJ0MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19xdWFsbmFtZV9fLCAnQycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX21vZHVsZV9fLCBfX25hbWVfXykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKEIsIGludCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoQy5fX2Jhc2VfXywgaW50KQotICAgICAgICBzZWxmLmFzc2VydEluKCdzcGFtJywgQy5fX2RpY3RfXykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignaGFtJywgQy5fX2RpY3RfXykKKyAgICBkZWYgdGVzdF90eXBlX25va3dhcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKCdhJywgKCksIHt9LCB4PTUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGUoJ2EnLCAoKSwgZGljdD17fSkKIAogICAgIGRlZiB0ZXN0X3R5cGVfbmFtZShzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gJ0EnLCAnXHhjNCcsICdcVTAwMDFmNDBkJywgJ0IuQScsICc0MicsICcnOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weSBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKaW5kZXggMzI4OGE1Yi4uYjM5NmE3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CkBAIC0yMTYsNyArMjE2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLnR5cGUydGVzdChzYW1wbGVbOi0zXSwgInV0Zi04IikpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6Ci0gICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjXGRlZjBcZGVmMCIKKyAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmMiCiAgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5kZWNvZGUoZW5jKSwgc2FtcGxlKQpAQCAtMjY5LDYgKzI2OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oMjAwLCBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IDMwMCBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IC0xIGluIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogc3lzLm1heHNpemUrMSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTm9uZSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogZmxvYXQob3JkKCdhJykpIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAiYSIgaW4gYikKQEAgLTMwMCw2ICszMDEsMjAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJ1x4MDAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5mcm9taGV4LCAnMTIgICBceDAwICAgMzQnKQogCisgICAgICAgIGZvciBkYXRhLCBwb3MgaW4gKAorICAgICAgICAgICAgIyBpbnZhbGlkIGZpcnN0IGhleGFkZWNpbWFsIGNoYXJhY3RlcgorICAgICAgICAgICAgKCcxMiB4NCA1NicsIDMpLAorICAgICAgICAgICAgIyBpbnZhbGlkIHNlY29uZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICgnMTIgM3ggNTYnLCA0KSwKKyAgICAgICAgICAgICMgdHdvIGludmFsaWQgaGV4YWRlY2ltYWwgY2hhcmFjdGVycworICAgICAgICAgICAgKCcxMiB4eSA1NicsIDMpLAorICAgICAgICAgICAgIyB0ZXN0IG5vbi1BU0NJSSBzdHJpbmcKKyAgICAgICAgICAgICgnMTIgM1x4ZmYgNTYnLCA0KSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QuZnJvbWhleChkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYXQgcG9zaXRpb24gJXMnICUgcG9zLCBzdHIoY20uZXhjZXB0aW9uKSkKKwogICAgIGRlZiB0ZXN0X2hleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4LCAxKQpAQCAtNjc0LDYgKzY4OSwzNyBAQAogICAgICAgICB0ZXN0LnN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgc2VsZi50eXBlMnRlc3QpCiAgICAgICAgIHRlc3Quc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCByZXZlcnNlZCwgc2VsZi50eXBlMnRlc3QpCiAKKyAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKyAgICAgICAgcm9zZXR0YSA9IGJ5dGVhcnJheShyYW5nZSgyNTYpKQorICAgICAgICByb3NldHRhW29yZCgnbycpXSA9IG9yZCgnZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi50cmFuc2xhdGUsIGJ5dGVzKHJhbmdlKDI1NSkpKQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIHNlbGYudHlwZTJ0ZXN0KQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhKQorICAgICAgICBkID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWxsZScpCisKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgYidlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQorCisgICAgICAgICMgdGVzdCBkZWxldGUgYXMgYSBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBkZWxldGU9YicnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVsbGUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgZGVsZXRlPWInbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQorICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgZGVsZXRlPWInZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKKwogCiBjbGFzcyBCeXRlc1Rlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVzCkBAIC03MjIsMzEgKzc2OCwxNDIgQEAKIAogICAgICMgVGVzdCBQeUJ5dGVzX0Zyb21Gb3JtYXQoKQogICAgIGRlZiB0ZXN0X2Zyb21fZm9ybWF0KHNlbGYpOgotICAgICAgICB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY3R5cGVzJykKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHB5dGhvbmFwaSwgcHlfb2JqZWN0LCBjX2ludCwgY19jaGFyX3AKKyAgICAgICAgY3R5cGVzID0gdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCisgICAgICAgIF90ZXN0Y2FwaSA9IHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0ICgKKyAgICAgICAgICAgIGNfaW50LCBjX3VpbnQsCisgICAgICAgICAgICBjX2xvbmcsIGNfdWxvbmcsCisgICAgICAgICAgICBjX3NpemVfdCwgY19zc2l6ZV90LAorICAgICAgICAgICAgY19jaGFyX3ApCisKICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0ID0gcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbUZvcm1hdAogICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQucmVzdHlwZSA9IHB5X29iamVjdAogCisgICAgICAgICMgYmFzaWMgdGVzdHMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidmb3JtYXQnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Zvcm1hdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInSGVsbG8gJXMgIScsIGInd29ybGQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0hlbGxvIHdvcmxkICEnKQogCisgICAgICAgICMgdGVzdCBmb3JtYXR0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KDApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9XDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludChvcmQoJ0AnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1AJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQoMjU1KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPVx4ZmYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Q9JWQgbGQ9JWxkIHpkPSV6ZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfaW50KDEpLCBjX2xvbmcoMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Q9MSBsZD0yIHpkPTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Q9JWQgbGQ9JWxkIHpkPSV6ZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfaW50KC0xKSwgY19sb25nKC0yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19zaXplX3QoLTMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2Q9LTEgbGQ9LTIgemQ9LTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3U9JXUgbHU9JWx1IHp1PSV6dScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfdWludCgxMjMpLCBjX3Vsb25nKDQ1NiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KDc4OSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIndT0xMjMgbHU9NDU2IHp1PTc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInaT0laScsIGNfaW50KDEyMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInaT0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2k9JWknLCBjX2ludCgtMTIzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidpPS0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3g9JXgnLCBjX2ludCgweGFiYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIneD1hYmMnKQorCisgICAgICAgIHNpemVvZl9wdHIgPSBjdHlwZXMuc2l6ZW9mKGNfY2hhcl9wKQorCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgICMgV2luZG93cyAoTVNDUlQpCisgICAgICAgICAgICBwdHJfZm9ybWF0ID0gJzB4JTB7fVgnLmZvcm1hdCgyICogc2l6ZW9mX3B0cikKKyAgICAgICAgICAgIGRlZiBwdHJfZm9ybWF0dGVyKHB0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuIChwdHJfZm9ybWF0ICUgcHRyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBVTklYIChnbGliYykKKyAgICAgICAgICAgIGRlZiBwdHJfZm9ybWF0dGVyKHB0cik6CisgICAgICAgICAgICAgICAgcmV0dXJuICclI3gnICUgcHRyCisKKyAgICAgICAgcHRyID0gMHhhYmNkZWYKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidwdHI9JXAnLCBjX2NoYXJfcChwdHIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ3B0cj0nICsgcHRyX2Zvcm1hdHRlcihwdHIpKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIncz0lcycsIGNfY2hhcl9wKGInY3N0cicpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3M9Y3N0cicpCisKKyAgICAgICAgIyB0ZXN0IG1pbmltdW0gYW5kIG1heGltdW0gaW50ZWdlciB2YWx1ZXMKKyAgICAgICAgc2l6ZV9tYXggPSBjX3NpemVfdCgtMSkudmFsdWUKKyAgICAgICAgZm9yIGZvcm1hdHN0ciwgY3R5cGVzX3R5cGUsIHZhbHVlLCBweV9mb3JtYXR0ZXIgaW4gKAorICAgICAgICAgICAgKGInJWQnLCBjX2ludCwgX3Rlc3RjYXBpLklOVF9NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclZCcsIGNfaW50LCBfdGVzdGNhcGkuSU5UX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsZCcsIGNfbG9uZywgX3Rlc3RjYXBpLkxPTkdfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJWxkJywgY19sb25nLCBfdGVzdGNhcGkuTE9OR19NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclbHUnLCBjX3Vsb25nLCBfdGVzdGNhcGkuVUxPTkdfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJXpkJywgY19zc2l6ZV90LCBfdGVzdGNhcGkuUFlfU1NJWkVfVF9NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclemQnLCBjX3NzaXplX3QsIF90ZXN0Y2FwaS5QWV9TU0laRV9UX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6dScsIGNfc2l6ZV90LCBzaXplX21heCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVwJywgY19jaGFyX3AsIHNpemVfbWF4LCBwdHJfZm9ybWF0dGVyKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGZvcm1hdHN0ciwgY3R5cGVzX3R5cGUodmFsdWUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHlfZm9ybWF0dGVyKHZhbHVlKS5lbmNvZGUoJ2FzY2lpJykpLAorCisgICAgICAgICMgd2lkdGggYW5kIHByZWNpc2lvbiAod2lkdGggaXMgY3VycmVudGx5IGlnbm9yZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJTVzJywgYidhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclLjNzJywgYidhYmNkZWYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FiYycpCisKKyAgICAgICAgIyAnJSUnIGZvcm1hdHRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiclJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidbJSVdJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbJV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJWMnLCBjX2ludChvcmQoJ18nKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJV8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJXMnKQorCisgICAgICAgICMgSW52YWxpZCBmb3JtYXRzIGFuZCBwYXJ0aWFsIGZvcm1hdHRpbmcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJyksIGInJScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUnKSwgYiclJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJXMnKSwgYiclcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInWyUlXScpLCBiJ1slXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUlYycsIGNfaW50KG9yZCgnXycpKSksIGInJV8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3g9JWkgeT0lJywgY19pbnQoMiksIGNfaW50KDMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3g9MiB5PSUnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYzolYycsIGNfaW50KDI1NSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInYzpceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidzOiVzJywgY19jaGFyX3AoYidjc3RyJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInczpjc3RyJykKLQotICAgICAgICAjIElzc3VlICMxOTk2OQorICAgICAgICAjIElzc3VlICMxOTk2OTogJWMgbXVzdCByYWlzZSBPdmVyZmxvd0Vycm9yIGZvciB2YWx1ZXMKKyAgICAgICAgIyBub3QgaW4gdGhlIHJhbmdlIFswOyAyNTVdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCwgYiclYycsIGNfaW50KC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LCBiJyVjJywgY19pbnQoMjU2KSkKIAorICAgIGRlZiB0ZXN0X2J5dGVzX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBJdGVyYXRpb25CbG9ja2VkKGxpc3QpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBpID0gWzAsIDEsIDIsIDNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoaSksIGInXHgwMFx4MDFceDAyXHgwMycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIEl0ZXJhdGlvbkJsb2NrZWQoaSkpCisKKyAgICAgICAgIyBBdCBsZWFzdCBpbiBDUHl0aG9uLCBiZWNhdXNlIGJ5dGVzLl9fbmV3X18gYW5kIHRoZSBDIEFQSQorICAgICAgICAjIFB5Qnl0ZXNfRnJvbU9iamVjdCBoYXZlIGRpZmZlcmVudCBmYWxsYmFjayBydWxlcywgaW50ZWdlcgorICAgICAgICAjIGZhbGxiYWNrIGlzIGhhbmRsZWQgc3BlY2lhbGx5LCBzbyB0ZXN0IHNlcGFyYXRlbHkuCisgICAgICAgIGNsYXNzIEludEJsb2NrZWQoaW50KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygzKSwgYidcMFwwXDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBJbnRCbG9ja2VkKDMpKQorCisgICAgICAgICMgV2hpbGUgdGhlcmUgaXMgbm8gc2VwYXJhdGVseS1kZWZpbmVkIHJ1bGUgZm9yIGhhbmRsaW5nIGJ5dGVzCisgICAgICAgICMgc3ViY2xhc3NlcyBkaWZmZXJlbnRseSBmcm9tIG90aGVyIGJ1ZmZlci1pbnRlcmZhY2UgY2xhc3NlcywKKyAgICAgICAgIyBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgd2VsbCBzcGVjaWFsLWNhc2UgdGhlbSAoYXMgQ1B5dGhvbiAyLngKKyAgICAgICAgIyBzdHIgZGlkKSwgc28gdGVzdCB0aGVtIHNlcGFyYXRlbHkuCisgICAgICAgIGNsYXNzIEJ5dGVzU3ViY2xhc3NCbG9ja2VkKGJ5dGVzKToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiJ2FiJyksIGInYWInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBCeXRlc1N1YmNsYXNzQmxvY2tlZChiJ2FiJykpCisKKyAgICAgICAgY2xhc3MgQnVmZmVyQmxvY2tlZChieXRlYXJyYXkpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBiYSwgYmIgPSBieXRlYXJyYXkoYidhYicpLCBCdWZmZXJCbG9ja2VkKGInYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGJhKSwgYidhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIGJiKQorCiAKIGNsYXNzIEJ5dGVBcnJheVRlc3QoQmFzZUJ5dGVzVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVhcnJheQpAQCAtMTMzMiwyNCArMTQ4OSw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiIiVzIicgJSBjaHIoYykpCiAKLSAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZik6Ci0gICAgICAgIGIgPSBiJ2hlbGxvJwotICAgICAgICBiYSA9IGJ5dGVhcnJheShiKQotICAgICAgICByb3NldHRhID0gYnl0ZWFycmF5KHJhbmdlKDAsIDI1NikpCi0gICAgICAgIHJvc2V0dGFbb3JkKCdvJyldID0gb3JkKCdlJykKLSAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQotICAgICAgICBjID0gYmEudHJhbnNsYXRlKHJvc2V0dGEsIGInbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKLSAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGInZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKLSAgICAgICAgYyA9IGJhLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmEudHJhbnNsYXRlLCBOb25lLCBOb25lKQotCiAgICAgZGVmIHRlc3Rfc3BsaXRfYnl0ZWFycmF5KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYSBiJy5zcGxpdChtZW1vcnl2aWV3KGInICcpKSwgW2InYScsIGInYiddKQogCkBAIC0xNTEzLDcgKzE2NTIsMzIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShhKSwgdHlwZShiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShhLnkpLCB0eXBlKGIueSkpCiAKLSAgICB0ZXN0X2Zyb21oZXggPSBCYXNlQnl0ZXNUZXN0LnRlc3RfZnJvbWhleAorICAgIGRlZiB0ZXN0X2Zyb21oZXgoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdC5mcm9taGV4KCcxYTJCMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInXHgxYVx4MmJceDMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBzZWxmLnR5cGUydGVzdCkKKworICAgICAgICBjbGFzcyBCMShzZWxmLmJhc2V0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUpOgorICAgICAgICAgICAgICAgIG1lID0gc2VsZi5iYXNldHlwZS5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgICAgICAgICAgbWUuZm9vID0gJ2JhcicKKyAgICAgICAgICAgICAgICByZXR1cm4gbWUKKworICAgICAgICBiID0gQjEuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgQjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sICdiYXInKQorCisgICAgICAgIGNsYXNzIEIyKHNlbGYuYmFzZXR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKG1lLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuYmFzZXR5cGUgaXMgbm90IGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmJhc2V0eXBlLl9faW5pdF9fKG1lLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgbWUuZm9vID0gJ2JhcicKKworICAgICAgICBiID0gQjIuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgQjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sICdiYXInKQogCiAKIGNsYXNzIEJ5dGVBcnJheVN1YmNsYXNzKGJ5dGVhcnJheSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J6Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CmluZGV4IDM0ZjY0NzguLmVhYTQ3MmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnoyLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgZ2xvYgoraW1wb3J0IHBhdGhsaWIKIGltcG9ydCByYW5kb20KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC01NTMsMTMgKzU1NCwyMCBAQAogICAgICAgICB3aXRoIEJaMkZpbGUoc3RyX2ZpbGVuYW1lLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQogCisgICAgZGVmIHRlc3RPcGVuUGF0aExpa2VGaWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoc2VsZi5maWxlbmFtZSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLkRBVEEpCisgICAgICAgIHdpdGggQloyRmlsZShmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKKwogICAgIGRlZiB0ZXN0RGVjb21wcmVzc0xpbWl0ZWQoc2VsZik6CiAgICAgICAgICIiIkRlY29tcHJlc3NlZCBkYXRhIGJ1ZmZlcmluZyBzaG91bGQgYmUgbGltaXRlZCIiIgotICAgICAgICBib21iID0gYnoyLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgY29tcHJlc3NsZXZlbD05KQorICAgICAgICBib21iID0gYnoyLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIGNvbXByZXNzbGV2ZWw9OSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgX2NvbXByZXNzaW9uLkJVRkZFUl9TSVpFKQogCiAgICAgICAgIGRlY29tcCA9IEJaMkZpbGUoQnl0ZXNJTyhib21iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIERFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5IGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQppbmRleCBhY2NmMjUxLi4yYmM0ZmVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKQEAgLTcyMiwxOSArNzIyLDE5IEBACiAKICAgICBkZWYgYXNzZXJ0RmFpbHVyZShzZWxmLCAqYXJncyk6CiAgICAgICAgIHJjLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAnY2FsZW5kYXInLCAqYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1VzYWdlOicsIHN0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3VzYWdlOicsIHN0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMikKIAogICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CiAgICAgICAgIHN0ZG91dCA9IHNlbGYucnVuX29rKCctaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYidVc2FnZTonLCBzdGRvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYid1c2FnZTonLCBzdGRvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidjYWxlbmRhci5weScsIHN0ZG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJy0taGVscCcsIHN0ZG91dCkKIAogICAgIGRlZiB0ZXN0X2lsbGVnYWxfYXJndW1lbnRzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJy16JykKLSAgICAgICAgI3NlbGYuYXNzZXJ0RmFpbHVyZSgnc3BhbScpCi0gICAgICAgICNzZWxmLmFzc2VydEZhaWx1cmUoJzIwMDQnLCAnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnMjAwNCcsICdzcGFtJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCctdCcsICdodG1sJywgJzIwMDQnLCAnMScpCiAKICAgICBkZWYgdGVzdF9vdXRwdXRfY3VycmVudF95ZWFyKHNlbGYpOgpAQCAtODM1LDUgKzgzNSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgIGInaHJlZj0iY3VzdG9tLmNzcyIgLz4nLCBzdGRvdXQpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbWRheXMnLCAnSmFudWFyeScsICdGZWJydWFyeScsICdFUE9DSCcsCisgICAgICAgICAgICAgICAgICAgICAnTU9OREFZJywgJ1RVRVNEQVknLCAnV0VETkVTREFZJywgJ1RIVVJTREFZJywgJ0ZSSURBWScsCisgICAgICAgICAgICAgICAgICAgICAnU0FUVVJEQVknLCAnU1VOREFZJywgJ2RpZmZlcmVudF9sb2NhbGUnLCAnYycsCisgICAgICAgICAgICAgICAgICAgICAncHJ3ZWVrJywgJ3dlZWsnLCAnZm9ybWF0JywgJ2Zvcm1hdHN0cmluZycsICdtYWluJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY2FsZW5kYXIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQppbmRleCAxZWFkZDIyLi42YzM2MjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CkBAIC00LDggKzQsMTAgQEAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yMjAsOCArMjIyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnIncmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1ZhbHVlRXJyb3JcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ0R1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ2Fub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidTeXN0ZW1FcnJvcjogPGJ1aWx0LWluICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInZnVuY3Rpb24gcmV0dXJuX3Jlc3VsdF93aXRoX2Vycm9yPiAnCkBAIC00NDIsNiArNDQ0LDcgQEAKICAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBleHBlY3RlZF9vdXRwdXQpCiAKKwogY2xhc3MgU2tpcGl0ZW1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3NraXBpdGVtKHNlbGYpOgpAQCAtNDkxLDEwICs0OTQsMTAgQEAKICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHR1cGxlXzEsIGRpY3RfYiwKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCiAgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCi0gICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBzID0gImFyZ3VtZW50IDEgKGltcG9zc2libGU8YmFkIGZvcm1hdCBjaGFyPikiCiAgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IChzdHIoZSkgPT0gcykKLSAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCiAKICAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBza2lwcGVkCkBAIC01MDMsNyArNTA2LDcgQEAKICAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKGVtcHR5X3R1cGxlLCBkaWN0X2IsCiAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQogICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IEZhbHNlCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBzID0gImltcG9zc2libGU8YmFkIGZvcm1hdCBjaGFyPjogJ3t9JyIuZm9ybWF0KGZvcm1hdCkKICAgICAgICAgICAgICAgICB3aGVuX3NraXBwZWQgPSAoc3RyKGUpID09IHMpCiAKQEAgLTUyNCw2ICs1MjcsMzIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCksIHt9LCBiJycsIFs0Ml0pCiAKKyAgICBkZWYgdGVzdF9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIHBhcnNlID0gX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcworCisgICAgICAgIHBhcnNlKCgxLCAyLCAzKSwge30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsIDIpLCB7J2EnOiAzfSwgYidPT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMSBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7J2EnOiAzfSwgYidPT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKCksIHt9LCBiJ098T08nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwgMiksIHsnYSc6IDN9LCBiJ09PJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBleGFjdGx5IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgxIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHsnYSc6IDN9LCBiJ09PJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfE8kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgpLCB7fSwgYidPfE8kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeXN0ZW1FcnJvciwgcidFbXB0eSBwYXJhbWV0ZXIgbmFtZSBhZnRlciBcJCcpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3wkT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3lzdGVtRXJyb3IsICdFbXB0eSBrZXl3b3JkJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfE9PJywgWycnLCAnYScsICcnXSkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgVGVzdFRocmVhZFN0YXRlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTQ4LDYgKzU3Nyw3IEBACiAgICAgICAgIHQuc3RhcnQoKQogICAgICAgICB0LmpvaW4oKQogCisKIGNsYXNzIFRlc3RfdGVzdGNhcGkodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X190ZXN0Y2FwaShzZWxmKToKICAgICAgICAgZm9yIG5hbWUgaW4gZGlyKF90ZXN0Y2FwaSk6CkBAIC01NTYsNSArNTg2LDg1IEBACiAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBnZXRhdHRyKF90ZXN0Y2FwaSwgbmFtZSkKICAgICAgICAgICAgICAgICAgICAgdGVzdCgpCiAKKworY2xhc3MgUHlNZW1EZWJ1Z1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBQWVRIT05NQUxMT0MgPSAnZGVidWcnCisgICAgIyAnMHgwNGMwNmUwJyBvciAnMDRDMDZFMCcKKyAgICBQVFJfUkVHRVggPSByJyg/OjB4KT9bMC05YS1mQS1GXSsnCisKKyAgICBkZWYgY2hlY2soc2VsZiwgY29kZSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCk6CisgICAgICAgICAgICBvdXQgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05NQUxMT0M9c2VsZi5QWVRIT05NQUxMT0MpCisgICAgICAgIHN0ZGVyciA9IG91dC5lcnIKKyAgICAgICAgcmV0dXJuIHN0ZGVyci5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKQorCisgICAgZGVmIHRlc3RfYnVmZmVyX292ZXJmbG93KHNlbGYpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKCdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHltZW1fYnVmZmVyX292ZXJmbG93KCknKQorICAgICAgICByZWdleCA9IChyIkRlYnVnIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzIHA9e3B0cn06IEFQSSAnbSdcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgMTYgYnl0ZXMgb3JpZ2luYWxseSByZXF1ZXN0ZWRcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCBwLVswLTldIGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCB0YWlsPXtwdHJ9IGFyZSBub3QgYWxsIEZPUkJJRERFTkJZVEUgXCgweFswLTlhLWZde3syfX1cKTpcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIGF0IHRhaWxcKzA6IDB4NzggXCpcKlwqIE9VQ0hcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIGF0IHRhaWxcKzE6IDB4ZmJcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIGF0IHRhaWxcKzI6IDB4ZmJcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgICAgIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICNbMC05XSsgdG8gZGVidWcgbWFsbG9jL3JlYWxsb2MuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIERhdGEgYXQgcDogY2IgY2IgY2IgLipcbiIKKyAgICAgICAgICAgICAgICAgciJcbiIKKyAgICAgICAgICAgICAgICAgciJGYXRhbCBQeXRob24gZXJyb3I6IGJhZCB0cmFpbGluZyBwYWQgYnl0ZSIpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KHB0cj1zZWxmLlBUUl9SRUdFWCkKKyAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHJlZ2V4LCBmbGFncz1yZS5ET1RBTEwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2FwaV9taXN1c2Uoc2VsZik6CisgICAgICAgIG91dCA9IHNlbGYuY2hlY2soJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9hcGlfbWlzdXNlKCknKQorICAgICAgICByZWdleCA9IChyIkRlYnVnIG1lbW9yeSBibG9jayBhdCBhZGRyZXNzIHA9e3B0cn06IEFQSSAnbSdcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgMTYgYnl0ZXMgb3JpZ2luYWxseSByZXF1ZXN0ZWRcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCBwLVswLTldIGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIFswLTldIHBhZCBieXRlcyBhdCB0YWlsPXtwdHJ9IGFyZSBGT1JCSURERU5CWVRFLCBhcyBleHBlY3RlZC5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIGJsb2NrIHdhcyBtYWRlIGJ5IGNhbGwgI1swLTldKyB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgRGF0YSBhdCBwOiBjYiBjYiBjYiAuKlxuIgorICAgICAgICAgICAgICAgICByIlxuIgorICAgICAgICAgICAgICAgICByIkZhdGFsIFB5dGhvbiBlcnJvcjogYmFkIElEOiBBbGxvY2F0ZWQgdXNpbmcgQVBJICdtJywgdmVyaWZpZWQgdXNpbmcgQVBJICdyJ1xuIikKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQocHRyPXNlbGYuUFRSX1JFR0VYKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgcmVnZXgpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUZXN0IHJlcXVpcmVzIGEgR0lMIChtdWx0aXRocmVhZGluZyknKQorICAgIGRlZiBjaGVja19tYWxsb2Nfd2l0aG91dF9naWwoc2VsZiwgY29kZSk6CisgICAgICAgIG91dCA9IHNlbGYuY2hlY2soY29kZSkKKyAgICAgICAgZXhwZWN0ZWQgPSAoJ0ZhdGFsIFB5dGhvbiBlcnJvcjogUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgICAgJ3dpdGhvdXQgaG9sZGluZyB0aGUgR0lMJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCwgb3V0KQorCisgICAgZGVmIHRlc3RfcHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIERlYnVnIGhvb2tzIG11c3QgcmFpc2UgYW4gZXJyb3IgaWYgUHlNZW1fTWFsbG9jKCkgaXMgY2FsbGVkCisgICAgICAgICMgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsKCknCisgICAgICAgIHNlbGYuY2hlY2tfbWFsbG9jX3dpdGhvdXRfZ2lsKGNvZGUpCisKKyAgICBkZWYgdGVzdF9weW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwoc2VsZik6CisgICAgICAgICMgRGVidWcgaG9va3MgbXVzdCByYWlzZSBhbiBlcnJvciBpZiBQeU9iamVjdF9NYWxsb2MoKSBpcyBjYWxsZWQKKyAgICAgICAgIyB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTAorICAgICAgICBjb2RlID0gJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwoKScKKyAgICAgICAgc2VsZi5jaGVja19tYWxsb2Nfd2l0aG91dF9naWwoY29kZSkKKworCitjbGFzcyBQeU1lbU1hbGxvY0RlYnVnVGVzdHMoUHlNZW1EZWJ1Z1Rlc3RzKToKKyAgICBQWVRIT05NQUxMT0MgPSAnbWFsbG9jX2RlYnVnJworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9QWU1BTExPQycpID09IDEsCisgICAgICAgICAgICAgICAgICAgICAnbmVlZCBweW1hbGxvYycpCitjbGFzcyBQeU1lbVB5bWFsbG9jRGVidWdUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgIFBZVEhPTk1BTExPQyA9ICdweW1hbGxvY19kZWJ1ZycKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhQeV9ERUJVRywgJ25lZWQgUHlfREVCVUcnKQorY2xhc3MgUHlNZW1EZWZhdWx0VGVzdHMoUHlNZW1EZWJ1Z1Rlc3RzKToKKyAgICAjIHRlc3QgZGVmYXVsdCBhbGxvY2F0b3Igb2YgUHl0aG9uIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUKKyAgICBQWVRIT05NQUxMT0MgPSAnJworCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NnaS5weSBiL0xpYi90ZXN0L3Rlc3RfY2dpLnB5CmluZGV4IGFiOWY2YWIuLjYzNzMyMjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2dpLnB5CkBAIC03LDYgKzcsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIEhhY2tlZFN5c01vZHVsZToKICAgICAjIFRoZSByZWdyZXNzaW9uIHRlc3Qgd2lsbCBoYXZlIHJlYWwgdmFsdWVzIGluIHN5cy5hcmd2LCB3aGljaApAQCAtMTQ3LDcgKzE0OCw3IEBACiAgICAgZGVmIHRlc3RfZXNjYXBlKHNlbGYpOgogICAgICAgICAjIGNnaS5lc2NhcGUoKSBpcyBkZXByZWNhdGVkLgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnaWdub3JlJywgJ2NnaVwuZXNjYXBlJywKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCByJ2NnaVwuZXNjYXBlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0ICZhbXA7IHN0cmluZyIsIGNnaS5lc2NhcGUoInRlc3QgJiBzdHJpbmciKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiZsdDt0ZXN0IHN0cmluZyZndDsiLCBjZ2kuZXNjYXBlKCI8dGVzdCBzdHJpbmc+IikpCkBAIC00NzMsNiArNDc0LDExIEBACiAgICAgICAgICAgICBjZ2kucGFyc2VfaGVhZGVyKCdmb3JtLWRhdGE7IG5hbWU9ImZpbGVzIjsgZmlsZW5hbWU9ImZvXFwibztiYXIiJyksCiAgICAgICAgICAgICAoImZvcm0tZGF0YSIsIHsibmFtZSI6ICJmaWxlcyIsICJmaWxlbmFtZSI6ICdmbyJvO2Jhcid9KSkKIAorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geyJsb2dmaWxlIiwgImxvZ2ZwIiwgImluaXRsb2ciLCAiZG9sb2ciLCAibm9sb2ciLAorICAgICAgICAgICAgICAgICAgICAgImNsb3NlbG9nIiwgImxvZyIsICJtYXhsZW4iLCAidmFsaWRfYm91bmRhcnkifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjZ2ksIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKIAogQk9VTkRBUlkgPSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tNzIxODM3MzczMzUwNzA1NTI2Njg4MTY0Njg0IgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NoYXJtYXBjb2RlYy5weSBiL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CmluZGV4IDQwNjRhZWYuLjBkNDU5NGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5CkBAIC05LDcgKzksNyBAQAogCiAiIiIjIgogCi1pbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCBjb2RlY3MKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKaW5kZXggMWY4ODRlNS4uMDQ1MWZiMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CkBAIC00LDYgKzQsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY21hdGgsIG1hdGgKIGZyb20gY21hdGggaW1wb3J0IHBoYXNlLCBwb2xhciwgcmVjdCwgcGkKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwogCiBJTkYgPSBmbG9hdCgnaW5mJykKQEAgLTE1NCw2ICsxNTYsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjbWF0aC5lLCBlX2V4cGVjdGVkLCBwbGFjZXM9OSwKICAgICAgICAgICAgIG1zZz0iY21hdGguZSBpcyB7fTsgc2hvdWxkIGJlIHt9Ii5mb3JtYXQoY21hdGguZSwgZV9leHBlY3RlZCkpCiAKKyAgICBkZWYgdGVzdF9pbmZpbml0eV9hbmRfbmFuX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmYucmVhbCwgbWF0aC5pbmYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGguaW5mLmltYWcsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmZqLnJlYWwsIDAuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmZqLmltYWcsIG1hdGguaW5mKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGNtYXRoLm5hbi5yZWFsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5uYW4uaW1hZywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLm5hbmoucmVhbCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihjbWF0aC5uYW5qLmltYWcpKQorCisgICAgICAgICMgQ2hlY2sgY29uc2lzdGVuY3kgd2l0aCByZXBycy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLmluZiksICJpbmYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGguaW5maiksICJpbmZqIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNtYXRoLm5hbiksICJuYW4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGgubmFuaiksICJuYW5qIikKKwogICAgIGRlZiB0ZXN0X3VzZXJfb2JqZWN0KHNlbGYpOgogICAgICAgICAjIFRlc3QgYXV0b21hdGljIGNhbGxpbmcgb2YgX19jb21wbGV4X18gYW5kIF9fZmxvYXRfXyBieSBjbWF0aAogICAgICAgICAjIGZ1bmN0aW9ucwpAQCAtMzE1LDYgKzMzNCwxOCBAQAogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3Rfc3BlY2lmaWNfdmFsdWVzKHNlbGYpOgorICAgICAgICAjIFNvbWUgdGVzdHMgbmVlZCB0byBiZSBza2lwcGVkIG9uIGFuY2llbnQgT1MgWCB2ZXJzaW9ucy4KKyAgICAgICAgIyBTZWUgaXNzdWUgIzI3OTUzLgorICAgICAgICBTS0lQX09OX1RJR0VSID0geyd0YW4wMDY0J30KKworICAgICAgICBvc3hfdmVyc2lvbiA9IE5vbmUKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5tYWNfdmVyKClbMF0KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvc3hfdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHZlcnNpb25fdHh0LnNwbGl0KCcuJykpKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCiAgICAgICAgIGRlZiByZWN0X2NvbXBsZXgoeik6CiAgICAgICAgICAgICAiIiJXcmFwcGVkIHZlcnNpb24gb2YgcmVjdCB0aGF0IGFjY2VwdHMgYSBjb21wbGV4IG51bWJlciBpbnN0ZWFkIG9mCiAgICAgICAgICAgICB0d28gZmxvYXQgYXJndW1lbnRzLiIiIgpAQCAtMzI4LDYgKzM1OSwxMiBAQAogICAgICAgICBmb3IgaWQsIGZuLCBhciwgYWksIGVyLCBlaSwgZmxhZ3MgaW4gcGFyc2VfdGVzdGZpbGUodGVzdF9maWxlKToKICAgICAgICAgICAgIGFyZyA9IGNvbXBsZXgoYXIsIGFpKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBjb21wbGV4KGVyLCBlaSkKKworICAgICAgICAgICAgIyBTa2lwIGNlcnRhaW4gdGVzdHMgb24gT1MgWCAxMC40LgorICAgICAgICAgICAgaWYgb3N4X3ZlcnNpb24gaXMgbm90IE5vbmUgYW5kIG9zeF92ZXJzaW9uIDwgKDEwLCA1KToKKyAgICAgICAgICAgICAgICBpZiBpZCBpbiBTS0lQX09OX1RJR0VSOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICBpZiBmbiA9PSAncmVjdCc6CiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gPSByZWN0X2NvbXBsZXgKICAgICAgICAgICAgIGVsaWYgZm4gPT0gJ3BvbGFyJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CmluZGV4IDNkMmY3NjkuLjg3NTcxZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQpAQCAtMzQ4LDggKzM0OCw5IEBACiAgICAgICAgICAgICB0ZXN0LnN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpLl9fZW50ZXJfXygpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCd4JykKICAgICAgICAgICAgIG9zLmNsb3NlKHN5cy5zdGRvdXQuZmlsZW5vKCkpIiIiCi0gICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsIGNvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIwLCByYykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhjZXB0aW9uIGlnbm9yZWQgaW4uKlxuT1NFcnJvcjogLionKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CmluZGV4IGJlZmUwZTQuLjM4Y2IyZTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5CkBAIC0xMzgsOSArMTM4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9hcmd2MCwgZXhwZWN0ZWRfcGF0aDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZSwgZXhwZWN0ZWRfbG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjbWRfbGluZV9zd2l0Y2hlcyk6Ci0gICAgICAgIGlmIG5vdCBfX2RlYnVnX186Ci0gICAgICAgICAgICBjbWRfbGluZV9zd2l0Y2hlcyArPSAoJy0nICsgJ08nICogc3lzLmZsYWdzLm9wdGltaXplLCkKLSAgICAgICAgcnVuX2FyZ3MgPSBjbWRfbGluZV9zd2l0Y2hlcyArIChzY3JpcHRfbmFtZSwpICsgdHVwbGUoZXhhbXBsZV9hcmdzKQorICAgICAgICBydW5fYXJncyA9IFsqc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgKmNtZF9saW5lX3N3aXRjaGVzLCBzY3JpcHRfbmFtZSwgKmV4YW1wbGVfYXJnc10KICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqcnVuX2FyZ3MsIF9faXNvbGF0ZWQ9RmFsc2UpCiAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCArIGVyciwgZXhwZWN0ZWRfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKQEAgLTQyOSw3ICs0MjgsNyBAQAogICAgICAgICAgICAgKCdidWlsdGlucy54JywgYnInRXJyb3Igd2hpbGUgZmluZGluZyBtb2R1bGUgc3BlY2lmaWNhdGlvbi4qJwogICAgICAgICAgICAgICAgIGJyJ0F0dHJpYnV0ZUVycm9yJyksCiAgICAgICAgICAgICAoJ2J1aWx0aW5zLngueScsIGJyJ0Vycm9yIHdoaWxlIGZpbmRpbmcgbW9kdWxlIHNwZWNpZmljYXRpb24uKicKLSAgICAgICAgICAgICAgICBicidJbXBvcnRFcnJvci4qTm8gbW9kdWxlIG5hbWVkLipub3QgYSBwYWNrYWdlJyksCisgICAgICAgICAgICAgICAgYnInTW9kdWxlTm90Rm91bmRFcnJvci4qTm8gbW9kdWxlIG5hbWVkLipub3QgYSBwYWNrYWdlJyksCiAgICAgICAgICAgICAoJ29zLnBhdGgnLCBicidsb2FkZXIuKmNhbm5vdCBoYW5kbGUnKSwKICAgICAgICAgICAgICgnaW1wb3J0bGliJywgYnInTm8gbW9kdWxlIG5hbWVkLionCiAgICAgICAgICAgICAgICAgYnInaXMgYSBwYWNrYWdlIGFuZCBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQnKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CmluZGV4IDMzOTRiMzkuLjFhOGY2OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQpAQCAtNjksNyArNjksNyBAQAogICAgICAgICAjIHdpdGggYmFubmVyCiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKICAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nRm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMykKICAgICAgICAgYmFubmVyX2NhbGwgPSBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYW5uZXJfY2FsbCwgWyd3cml0ZScsICgnRm9vXG4nLCksIHt9XSkKIApAQCAtNzcsOCArNzcsMzYgQEAKICAgICAgICAgc2VsZi5zdGRlcnIucmVzZXRfbW9jaygpCiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKICAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKworICAgIGRlZiB0ZXN0X2V4aXRfbXNnKHNlbGYpOgorICAgICAgICAjIGRlZmF1bHQgZXhpdCBtZXNzYWdlCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgZXJyX21zZyA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1sxXQorICAgICAgICBleHBlY3RlZCA9ICdub3cgZXhpdGluZyBJbnRlcmFjdGl2ZUNvbnNvbGUuLi5cbicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJfbXNnLCBbJ3dyaXRlJywgKGV4cGVjdGVkLCksIHt9XSkKKworICAgICAgICAjIG5vIGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnLCBleGl0bXNnPScnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAxKQogCisgICAgICAgICMgY3VzdG9tIGV4aXQgbWVzc2FnZQorICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKKyAgICAgICAgbWVzc2FnZSA9ICgKKyAgICAgICAgICAgICdieWUhIFxOe0dSRUVLIFNNQUxMIExFVFRFUiBaRVRBfVxOe0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEV9JworICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycsIGV4aXRtc2c9bWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzKSwgMikKKyAgICAgICAgZXJyX21zZyA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1sxXQorICAgICAgICBleHBlY3RlZCA9IG1lc3NhZ2UgKyAnXG4nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyX21zZywgWyd3cml0ZScsIChleHBlY3RlZCwpLCB7fV0pCisKKwogICAgIGRlZiB0ZXN0X2NhdXNlX3RiKHNlbGYpOgogICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsicmFpc2UgVmFsdWVFcnJvcignJykgZnJvbSBBdHRyaWJ1dGVFcnJvciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFT0ZFcnJvcignRmluaXNoZWQnKV0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CmluZGV4IGVlMWUyOGEuLjZhM2U5OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIGltcG9ydCB1bmljb2RlZGF0YQogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIAogY2xhc3MgUG9zUmV0dXJuOgogICAgICMgdGhpcyBjYW4gYmUgdXNlZCBmb3IgY29uZmlndXJhYmxlIGNhbGxiYWNrcwpAQCAtMjgxLDEyICsyODAsMTIgQEAKICAgICAgICAgKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBiIlxcdTMwNDJcdTN4eHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAorICAgICAgICAgICAgYiJcXHUzMDQyXFx1M3h4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCiAgICAgICAgICAgICAiXHUzMDQyWzw5Mj48MTE3Pjw1MT5deHh4IgogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGIiXFx1MzA0Mlx1M3h4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKKyAgICAgICAgICAgIGIiXFx1MzA0MlxcdTN4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCiAgICAgICAgICAgICAiXHUzMDQyWzw5Mj48MTE3Pjw1MT5deHgiCiAgICAgICAgICkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggZDBlM2ExNS4uM2JkZjdkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBQUkMgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CmluZGV4IGJiOWJlMTEuLmM1ZTJmOTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSG9uZ0tvbmcgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YTNjYTcwLi4wMGVhMWMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0xLDYgKzEsNSBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CmluZGV4IDQ0YjYzYTAuLjk0Mzc4ZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSmFwYW5lc2UgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CmluZGV4IGI2YTc0ZmIuLjg2M2QxNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUk9LIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQppbmRleCA5MTc0Mjk2Li5iYjFkMTMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFJPQyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQppbmRleCBmMWJkMzg0Li44OWU1MWM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBQUkMgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCA0YzBjNDE1Li43YTQ4ZDI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBIb25nS29uZyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19qcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CmluZGV4IDU3NzM4MjMuLmZkZmVjODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIEphcGFuZXNlIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKaW5kZXggNmNiNDFjOC4uNDcxY2Q3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUk9LIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKaW5kZXggMmVhNDRiNS4uMTQ1YTk3ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgUk9DIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggMDEzZWM2NC4uMWU2M2VkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTQsMTYgKzQsMTAgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgZW5jb2RpbmdzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCi1pZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICBWSVNUQV9PUl9MQVRFUiA9IChzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5tYWpvciA+PSA2KQotZWxzZToKLSAgICBWSVNUQV9PUl9MQVRFUiA9IEZhbHNlCi0KIHRyeToKICAgICBpbXBvcnQgY3R5cGVzCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yNyw2ICsyMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZXIoaW5wdXQpLCAoZXhwZWN0LCBsZW4oaW5wdXQpKSkKICAgICByZXR1cm4gY2hlY2sKIAorCiBjbGFzcyBRdWV1ZShvYmplY3QpOgogICAgICIiIgogICAgIHF1ZXVlOiB3cml0ZSBieXRlcyBhdCBvbmUgZW5kLCByZWFkIGJ5dGVzIGZyb20gdGhlIG90aGVyIGVuZApAQCAtNDcsNiArNDIsNyBAQAogICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NpemU6XQogICAgICAgICAgICAgcmV0dXJuIHMKIAorCiBjbGFzcyBNaXhJbkNoZWNrU3RhdGVIYW5kbGluZzoKICAgICBkZWYgY2hlY2tfc3RhdGVfaGFuZGxpbmdfZGVjb2RlKHNlbGYsIGVuY29kaW5nLCB1LCBzKToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpKzEpOgpAQCAtODAsNiArNzYsNyBAQAogICAgICAgICAgICAgcGFydDIgPSBkLmVuY29kZSh1W2k6XSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgcGFydDErcGFydDIpCiAKKwogY2xhc3MgUmVhZFRlc3QoTWl4SW5DaGVja1N0YXRlSGFuZGxpbmcpOgogICAgIGRlZiBjaGVja19wYXJ0aWFsKHNlbGYsIGlucHV0LCBwYXJ0aWFscmVzdWx0cyk6CiAgICAgICAgICMgZ2V0IGEgU3RyZWFtUmVhZGVyIGZvciB0aGUgZW5jb2RpbmcgYW5kIGZlZWQgdGhlIGJ5dGVzdHJpbmcgdmVyc2lvbgpAQCAtMzU4LDYgKzM1NSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIls/XSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQogCisgICAgICAgICMgc2VxdWVudGlhbCBzdXJyb2dhdGUgY2hhcmFjdGVycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJpZ25vcmUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiW10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1RDgwMFx1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbPz9dIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCisKICAgICAgICAgYm9tID0gIiIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpCiAgICAgICAgIGZvciBiZWZvcmUsIGFmdGVyIGluIFsoIlxVMDAwMTBmZmYiLCAiQSIpLCAoIlsiLCAiXSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJBIiwgIlxVMDAwMTBmZmYiKV06CkBAIC0zODMsNiArMzg2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9zZXF1ZW5jZS5kZWNvZGUoc2VsZi5lbmNvZGluZywgImJhY2tzbGFzaHJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlICsgYmFja3NsYXNocmVwbGFjZSArIGFmdGVyKQogCisKIGNsYXNzIFVURjMyVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMiIKICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgpAQCAtNDc4LDYgKzQ4Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDAnICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzMyX2RlY29kZShlbmNvZGVkX2JlKVswXSkKIAorCiBjbGFzcyBVVEYzMkxFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1sZSIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceDgwXHhkY1x4MDBceDAwIgpAQCAtNTIzLDYgKzUyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDAnICogMTAyNCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MudXRmXzMyX2xlX2RlY29kZShlbmNvZGVkKVswXSkKIAorCiBjbGFzcyBVVEYzMkJFVGVzdChSZWFkVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gInV0Zi0zMi1iZSIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceDAwXHgwMFx4ZGNceDgwIgpAQCAtNzQ3LDYgKzc1Myw3IEBACiAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZSA9IGIiXHhlZFx4YjJceDgwIgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2VfcmVwbGFjZSA9ICJcdWZmZmQiICogMworICAgIEJPTSA9IGInJwogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19wYXJ0aWFsKApAQCAtNzc1LDI3ICs3ODIsNDkgQEAKICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoc2VsZi5lbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdS5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAKKyAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkYzgwXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgJ1tcXHg4MFxceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZShzZWxmLmVuY29kaW5nLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfbG9uZV9zdXJyb2dhdGVzKHNlbGYpOgogICAgICAgICBzdXBlcigpLnRlc3RfbG9uZV9zdXJyb2dhdGVzKCkKICAgICAgICAgIyBub3Qgc3VyZSBpZiB0aGlzIGlzIG1ha2luZyBzZW5zZSBmb3IKICAgICAgICAgIyBVVEYtMTYgYW5kIFVURi0zMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCd1dGYtOCcsICJzdXJyb2dhdGVlc2NhcGUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tceDgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYidbXHg4MF0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICJbXHVEQzgwXHVEODAwXHVERkZGXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVlc2NhcGUiKQorICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMub2JqZWN0W2V4Yy5zdGFydDpleGMuZW5kXSwgJ1x1RDgwMFx1REZGRicpCiAKICAgICBkZWYgdGVzdF9zdXJyb2dhdGVwYXNzX2hhbmRsZXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiYWJjXHhlZFx4YTBceDgwZGVmIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiJ1tceGVkXHhhMFx4ODBceGVkXHhiMlx4ODBdJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiYWJjXHhlZFx4YTBceDgwZGVmIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjXHVkODAwZGVmIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXFUwMDAxMGZmZlx1RDgwMCIuZW5jb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKHNlbGYuZW5jb2RpbmcsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwX2Vycm9yKCJzdXJyb2dhdGVwYXNzIikpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKLSAgICAgICAgICAgIGIiYWJjXHhlZFx4YTAiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpCisgICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6Ci0gICAgICAgICAgICBiImFiY1x4ZWRceGEweiIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIikKKyAgICAgICAgICAgIGIiYWJjXHhlZFx4YTB6Ii5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAogICAgICAgICAgICAgICAgICAgICAgJ2NwNjUwMDEgaXMgYSBXaW5kb3dzLW9ubHkgY29kZWMnKQpAQCAtODA3LDE4ICs4MzYsMTMgQEAKICAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCiAgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInXHhjM1x4YTlceGUyXHg4Mlx4YWMnKSwKICAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCBiJ1x4ZjRceDhmXHhiZlx4YmYnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnaWdub3JlJywgYicnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ25hbWVyZXBsYWNlJywgYidcXHVkYzgwJyksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKICAgICAgICAgXQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgTm9uZSksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnaWdub3JlJywgYicnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdyZXBsYWNlJywgYic/JyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnYmFja3NsYXNocmVwbGFjZScsIGInXFx1ZGM4MCcpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ25hbWVyZXBsYWNlJywgYidcXHVkYzgwJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3Vycm9nYXRlcGFzcycsIGInXHhlZFx4YjJceDgwJyksCi0gICAgICAgICAgICApKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKCgnXHVkYzgwJywgJ3N0cmljdCcsIGInXHhlZFx4YjJceDgwJykpCiAgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtODQ1LDE3ICs4NjksMTAgQEAKICAgICAgICAgICAgIChiJ1tceGZmXScsICdpZ25vcmUnLCAnW10nKSwKICAgICAgICAgICAgIChiJ1tceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRdJyksCiAgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXHVmZmZkXScpLAogICAgICAgICBdCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdpZ25vcmUnLCAnW10nKSwKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRcdWZmZmRdJyksCi0gICAgICAgICAgICApKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCAnW1x1ZGM4MF0nKSwKLSAgICAgICAgICAgICkpCiAgICAgICAgIGZvciByYXcsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CiAgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC04NzAsNyArODg3LDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIHJhdy5kZWNvZGUsICdjcDY1MDAxJywgZXJyb3JzKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQogICAgIGRlZiB0ZXN0X2xvbmVfc3Vycm9nYXRlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCAiXHVkODAwIi5lbmNvZGUsICJjcDY1MDAxIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLCBiIlx4ZWRceGEwXHg4MCIuZGVjb2RlLCAiY3A2NTAwMSIpCkBAIC04ODcsNyArOTAzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJyZXBsYWNlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidbP10nKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoVklTVEFfT1JfTEFURVIsICdyZXF1aXJlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXInKQogICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoImNwNjUwMDEiLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGIiYWJjXHhlZFx4YTBceDgwZGVmIikKQEAgLTEwNTksNiArMTA3NCw3IEBACiAKIGNsYXNzIFVURjhTaWdUZXN0KFVURjhUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTgtc2lnIgorICAgIEJPTSA9IGNvZGVjcy5CT01fVVRGOAogCiAgICAgZGVmIHRlc3RfcGFydGlhbChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19wYXJ0aWFsKApAQCAtMTE1OSw3ICsxMTc1LDcgQEAKICAgICAgICAgY2hlY2soYiJbXFxcbl0iLCBiIltdIikKICAgICAgICAgY2hlY2soYnInW1wiXScsIGInWyJdJykKICAgICAgICAgY2hlY2soYnIiW1wnXSIsIGIiWyddIikKLSAgICAgICAgY2hlY2soYnIiW1xcXSIsIGJyIltcXSIpCisgICAgICAgIGNoZWNrKGJyIltcXF0iLCBiIltcXF0iKQogICAgICAgICBjaGVjayhiciJbXGFdIiwgYiJbXHgwN10iKQogICAgICAgICBjaGVjayhiciJbXGJdIiwgYiJbXHgwOF0iKQogICAgICAgICBjaGVjayhiciJbXHRdIiwgYiJbXHgwOV0iKQpAQCAtMTE2OCw3ICsxMTg0LDYgQEAKICAgICAgICAgY2hlY2soYnIiW1xmXSIsIGIiW1x4MGNdIikKICAgICAgICAgY2hlY2soYnIiW1xyXSIsIGIiW1x4MGRdIikKICAgICAgICAgY2hlY2soYnIiW1w3XSIsIGIiW1x4MDddIikKLSAgICAgICAgY2hlY2soYnIiW1w4XSIsIGJyIltcOF0iKQogICAgICAgICBjaGVjayhiciJbXDc4XSIsIGIiW1x4MDc4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDFdIiwgYiJbIV0iKQogICAgICAgICBjaGVjayhiciJbXDQxOF0iLCBiIlshOF0iKQpAQCAtMTE3NiwxMiArMTE5MSwxOCBAQAogICAgICAgICBjaGVjayhiciJbXDEwMTBdIiwgYiJbQTBdIikKICAgICAgICAgY2hlY2soYnIiW1w1MDFdIiwgYiJbQV0iKQogICAgICAgICBjaGVjayhiciJbXHg0MV0iLCBiIltBXSIpCi0gICAgICAgIGNoZWNrKGJyIltcWDQxXSIsIGJyIltcWDQxXSIpCiAgICAgICAgIGNoZWNrKGJyIltceDQxMF0iLCBiIltBMF0iKQotICAgICAgICBmb3IgYiBpbiByYW5nZSgyNTYpOgotICAgICAgICAgICAgaWYgYiBub3QgaW4gYidcbiJcJ1xcYWJ0bnZmcjAxMjM0NTY3eCc6Ci0gICAgICAgICAgICAgICAgYiA9IGJ5dGVzKFtiXSkKLSAgICAgICAgICAgICAgICBjaGVjayhiJ1xcJyArIGIsIGInXFwnICsgYikKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOTcsIDEyMyk6CisgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQorICAgICAgICAgICAgaWYgYiBub3QgaW4gYidhYmZucnR2eCc6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYiwgYiJcXCIgKyBiKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLnVwcGVyKCksIGIiXFwiICsgYi51cHBlcigpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw4IiwgYiJcXDgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw5IiwgYiJcXDkiKQogCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgogICAgICAgICBkZWNvZGUgPSBjb2RlY3MuZXNjYXBlX2RlY29kZQpAQCAtMTE5NCw2ICsxMjE1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGUoYnIiW1x4MF1ceDAiLCAiaWdub3JlIiksIChiIltdIiwgOCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlKGJyIltceDBdXHgwIiwgInJlcGxhY2UiKSwgKGIiWz9dPyIsIDgpKQogCisKIGNsYXNzIFJlY29kaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVjb2Rpbmcoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKQEAgLTEzMTMsNiArMTMzNSw3IEBACiAgICAgaWYgbGVuKGkpIT0yOgogICAgICAgICBwcmludChyZXByKGkpKQogCisKIGNsYXNzIFB1bnljb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgogICAgICAgICBmb3IgdW5pLCBwdW55IGluIHB1bnljb2RlX3Rlc3RjYXNlczoKQEAgLTEzMzIsNiArMTM1NSw3IEBACiAgICAgICAgICAgICBwdW55ID0gcHVueS5kZWNvZGUoImFzY2lpIikuZW5jb2RlKCJhc2NpaSIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaSwgcHVueS5kZWNvZGUoInB1bnljb2RlIikpCiAKKwogY2xhc3MgVW5pY29kZUludGVybmFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9idWcxMjUxMzAwKHNlbGYpOgpAQCAtMTU4Niw2ICsxNjEwLDcgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiVGVzdCAzLiVkOiAlcyIgJSAocG9zKzEsIHN0cihlKSkpCiAKKwogY2xhc3MgSUROQUNvZGVjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVpbHRpbl9kZWNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGIicHl0aG9uLm9yZyIsICJpZG5hIiksICJweXRob24ub3JnIikKQEAgLTE2NzIsNiArMTY5Nyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgYiJweXRob24ub3JnIi5kZWNvZGUsICJpZG5hIiwgZXJyb3JzKQogCisKIGNsYXNzIENvZGVjc01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgpAQCAtMTc4MCw2ICsxODA2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwKICAgICAgICAgICAgICAgICBjb2RlY3MuZGVjb2RlLCBiJ2FiYycsICd1bmRlZmluZWQnLCBlcnJvcnMpCiAKKwogY2xhc3MgU3RyZWFtUmVhZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xNzkwLDYgKzE4MTcsNyBAQAogICAgICAgICBmID0gc2VsZi5yZWFkZXIoc2VsZi5zdHJlYW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgWydcdWQ1NWNcbicsICdcdWFlMDAnXSkKIAorCiBjbGFzcyBFbmNvZGVkRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CkBAIC0xOTA5LDYgKzE5MzcsOCBAQAogCiBpZiBoYXNhdHRyKGNvZGVjcywgIm1iY3NfZW5jb2RlIik6CiAgICAgYWxsX3VuaWNvZGVfZW5jb2RpbmdzLmFwcGVuZCgibWJjcyIpCitpZiBoYXNhdHRyKGNvZGVjcywgIm9lbV9lbmNvZGUiKToKKyAgICBhbGxfdW5pY29kZV9lbmNvZGluZ3MuYXBwZW5kKCJvZW0iKQogCiAjIFRoZSBmb2xsb3dpbmcgZW5jb2RpbmcgaXMgbm90IHRlc3RlZCwgYmVjYXVzZSBpdCdzIG5vdCBzdXBwb3NlZAogIyB0byB3b3JrOgpAQCAtMTkyMCw2ICsxOTUwLDcgQEAKICAgICAidW5pY29kZV9pbnRlcm5hbCIKIF0KIAorCiBjbGFzcyBCYXNpY1VuaWNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBNaXhJbkNoZWNrU3RhdGVIYW5kbGluZyk6CiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgogICAgICAgICBzID0gImFiYzEyMyIgICMgYWxsIGNvZGVjcyBzaG91bGQgYmUgYWJsZSB0byBlbmNvZGUgdGhlc2UKQEAgLTIwODIsNiArMjExMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoZW5jb2RpbmcsIHUsIHUuZW5jb2RlKGVuY29kaW5nKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRlX2hhbmRsaW5nX2VuY29kZShlbmNvZGluZywgdSwgdS5lbmNvZGUoZW5jb2RpbmcpKQogCisKIGNsYXNzIENoYXJtYXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZWNvZGVfd2l0aF9zdHJpbmdfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMjMzMiw2ICsyMzY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uc3RyZWFtd3JpdGVyLCAnc3RyaWN0JykgYXMgc3J3OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcncucmVhZCgpLCAiXHhmYyIpCiAKKwogY2xhc3MgVHlwZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZWNvZGVfdW5pY29kZShzZWxmKToKICAgICAgICAgIyBNb3N0IGRlY29kZXJzIGRvbid0IGFjY2VwdCB1bmljb2RlIGlucHV0CkBAIC0yNDIwLDcgKzI0NTMsNiBAQAogICAgICAgICBjaGVjayhiciJbXGZdIiwgIltceDBjXSIpCiAgICAgICAgIGNoZWNrKGJyIltccl0iLCAiW1x4MGRdIikKICAgICAgICAgY2hlY2soYnIiW1w3XSIsICJbXHgwN10iKQotICAgICAgICBjaGVjayhiciJbXDhdIiwgciJbXDhdIikKICAgICAgICAgY2hlY2soYnIiW1w3OF0iLCAiW1x4MDc4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDFdIiwgIlshXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDE4XSIsICJbIThdIikKQEAgLTI0MzAsOSArMjQ2MiwxOCBAQAogICAgICAgICBjaGVjayhiciJbXHg0MTBdIiwgIltBMF0iKQogICAgICAgICBjaGVjayhiciJcdTIwYWMiLCAiXHUyMGFjIikKICAgICAgICAgY2hlY2soYnIiXFUwMDAxZDEyMCIsICJcVTAwMDFkMTIwIikKLSAgICAgICAgZm9yIGIgaW4gcmFuZ2UoMjU2KToKLSAgICAgICAgICAgIGlmIGIgbm90IGluIGInXG4iXCdcXGFidG52ZnIwMTIzNDU2N3h1VU4nOgotICAgICAgICAgICAgICAgIGNoZWNrKGInXFwnICsgYnl0ZXMoW2JdKSwgJ1xcJyArIGNocihiKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOTcsIDEyMyk6CisgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQorICAgICAgICAgICAgaWYgYiBub3QgaW4gYidhYmZucnR1dngnOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIsICJcXCIgKyBjaHIoaSkpCisgICAgICAgICAgICBpZiBiLnVwcGVyKCkgbm90IGluIGInVU4nOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIudXBwZXIoKSwgIlxcIiArIGNocihpLTMyKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBjaGVjayhiciJcOCIsICJcXDgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw5IiwgIlxcOSIpCiAKICAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3JzKHNlbGYpOgogICAgICAgICBkZWNvZGUgPSBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlCkBAIC0yNjQyLDYgKzI2ODMsNyBAQAogICAgIGJ5dGVzX3RyYW5zZm9ybV9lbmNvZGluZ3MuYXBwZW5kKCJiejJfY29kZWMiKQogICAgIHRyYW5zZm9ybV9hbGlhc2VzWyJiejJfY29kZWMiXSA9IFsiYnoyIl0KIAorCiBjbGFzcyBUcmFuc2Zvcm1Db2RlY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgpAQCAtMjY5NCw4ICsyNzM2LDggQEAKICAgICAgICAgYmFkX2lucHV0ID0gImJhZCBpbnB1dCB0eXBlIgogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gYnl0ZXNfdHJhbnNmb3JtX2VuY29kaW5nczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVuY29kaW5nPWVuY29kaW5nKToKLSAgICAgICAgICAgICAgICBmbXQgPSAoICJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgIGZtdCA9IChyInshcn0gaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgbXNnID0gZm10LmZvcm1hdChlbmNvZGluZykKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZykgYXMgZmFpbHVyZToKICAgICAgICAgICAgICAgICAgICAgYmFkX2lucHV0LmVuY29kZShlbmNvZGluZykKQEAgLTI3MDQsNyArMjc0Niw3IEBACiAgICAgZGVmIHRlc3RfdGV4dF90b19iaW5hcnlfYmxhY2tsaXN0c190ZXh0X3RyYW5zZm9ybXMoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgc3RyLmVuY29kZSBnaXZlcyBhIGdvb2QgZXJyb3IgbWVzc2FnZSBmb3Igc3RyIC0+IHN0ciBjb2RlY3MKICAgICAgICAgbXNnID0gKHIiXidyb3RfMTMnIGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KExvb2t1cEVycm9yLCBtc2cpOgogICAgICAgICAgICAgImp1c3QgYW4gZXhhbXBsZSBtZXNzYWdlIi5lbmNvZGUoInJvdF8xMyIpCiAKQEAgLTI3MTYsNyArMjc1OCw3IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbmNvZGluZz1lbmNvZGluZyk6CiAgICAgICAgICAgICAgICAgZW5jb2RlZF9kYXRhID0gY29kZWNzLmVuY29kZShkYXRhLCBlbmNvZGluZykKICAgICAgICAgICAgICAgICBmbXQgPSAociJ7IXJ9IGlzIG5vdCBhIHRleHQgZW5jb2Rpbmc7ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCiAgICAgICAgICAgICAgICAgbXNnID0gZm10LmZvcm1hdChlbmNvZGluZykKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAgICAgICAgIGVuY29kZWRfZGF0YS5kZWNvZGUoZW5jb2RpbmcpCkBAIC0yNzI4LDcgKzI3NzAsNyBAQAogICAgICAgICBmb3IgYmFkX2lucHV0IGluIChiImltbXV0YWJsZSIsIGJ5dGVhcnJheShiIm11dGFibGUiKSk6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChiYWRfaW5wdXQ9YmFkX2lucHV0KToKICAgICAgICAgICAgICAgICBtc2cgPSAociJeJ3JvdF8xMycgaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZykgYXMgZmFpbHVyZToKICAgICAgICAgICAgICAgICAgICAgYmFkX2lucHV0LmRlY29kZSgicm90XzEzIikKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmYWlsdXJlLmV4Y2VwdGlvbi5fX2NhdXNlX18pCkBAIC0yOTQ3LDEyICsyOTg5LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgYiJub3Qgc3RyISIpCiAgICAgICAgICMgVGV4dCBtb2RlbCBtZXRob2RzIHNob3VsZCBjb21wbGFpbgogICAgICAgICBmbXQgPSAociJeeyFyfSBlbmNvZGVyIHJldHVybmVkICdzdHInIGluc3RlYWQgb2YgJ2J5dGVzJzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gZW5jb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gZW5jb2RlIHRvIGFyYml0cmFyeSB0eXBlcyQiKQogICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgICJzdHJfaW5wdXQiLmVuY29kZShzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIGZtdCA9IChyIl57IXJ9IGRlY29kZXIgcmV0dXJuZWQgJ2J5dGVzJyBpbnN0ZWFkIG9mICdzdHInOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBkZWNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBkZWNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCiAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgYiJieXRlcyBpbnB1dCIuZGVjb2RlKHNlbGYuY29kZWNfbmFtZSkKQEAgLTMwOTMsMTEgKzMxMzUsMTAgQEAKICAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ2lnbm9yZScsICdcVTAwMTBmZmZmJyksCiAgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdyZXBsYWNlJywgJ1x1ZmZmZFxVMDAxMGZmZmYnKSwKICAgICAgICAgKSkKLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShzZWxmLkNQX1VURjgsICgKLSAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdpZ25vcmUnLCBiJ1tceGY0XHg4Zlx4YmZceGJmXScpLAotICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ3JlcGxhY2UnLCBiJ1tceGY0XHg4Zlx4YmZceGJmP10nKSwKLSAgICAgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAorICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAnaWdub3JlJywgYidbXHhmNFx4OGZceGJmXHhiZl0nKSwKKyAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ3JlcGxhY2UnLCBiJ1tceGY0XHg4Zlx4YmZceGJmP10nKSwKKyAgICAgICAgKSkKIAogICAgIGRlZiB0ZXN0X2luY3JlbWVudGFsKHNlbGYpOgogICAgICAgICBkZWNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUoOTMyLCBiJ1x4ODInLCAnc3RyaWN0JywgRmFsc2UpCkBAIC0zMTE4LDYgKzMxNTksOTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnYWJjJywgMykpCiAKKyAgICBkZWYgdGVzdF9tYmNzX2FsaWFzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbG9va2luZyB1cCBvdXIgJ2RlZmF1bHQnIGNvZGVwYWdlIHdpbGwgcmV0dXJuCisgICAgICAgICMgbWJjcyB3aGVuIHdlIGRvbid0IGhhdmUgYSBtb3JlIHNwZWNpZmljIG9uZSBhdmFpbGFibGUKKyAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCisgICAgICAgIGRlZiBfZ2V0X2Zha2VfY29kZXBhZ2UoKmEpOgorICAgICAgICAgICAgcmV0dXJuICdjcDEyMycKKyAgICAgICAgb2xkX2dldHByZWZlcnJlZGVuY29kaW5nID0gX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcKKyAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfZ2V0X2Zha2VfY29kZXBhZ2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29kZWMgPSBjb2RlY3MubG9va3VwKCdjcDEyMycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjLm5hbWUsICdtYmNzJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nID0gb2xkX2dldHByZWZlcnJlZGVuY29kaW5nCisKKworY2xhc3MgQVNDSUlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYzEyMycuZW5jb2RlKCdhc2NpaScpLCBiJ2FiYzEyMycpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAnaWdub3JlJywgYidbXScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNdJywgJ3JlcGxhY2UnLCBiJ1s/Pz9dJyksCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzEyODsmIzI1NTsmIzgzNjQ7XScpLAorICAgICAgICAgICAgKCdbXHg4MFx4ZmZcdTIwYWNcVTAwMGFiY2RlXScsICdiYWNrc2xhc2hyZXBsYWNlJywKKyAgICAgICAgICAgICBiJ1tcXHg4MFxceGZmXFx1MjBhY1xcVTAwMGFiY2RlXScpLAorICAgICAgICAgICAgKCdbXHVkYzgwXHVkY2ZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCBiJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2FzY2lpJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9zdXJyb2dhdGVlc2NhcGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKToKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IGNoYXJhY3RlciBjYW4gYmUgZGVjb2RlZCwgYnV0IG5vdCB0aGUgc2Vjb25kCisgICAgICAgICAgICAnXHVkYzgwXHhmZicuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYWJjJy5kZWNvZGUoJ2FzY2lpJyksICdhYmMnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlX2Vycm9yKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGM4MFx1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsICdbXFx4ODBcXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXJyb3JfaGFuZGxlcj1lcnJvcl9oYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoJ2FzY2lpJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworCitjbGFzcyBMYXRpbjFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ2FiYycsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ODBceGU5XHhmZicsIGInXHg4MFx4ZTlceGZmJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdsYXRpbjEnKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXJyb3JfaGFuZGxlciwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ3JlcGxhY2UnLCBiJ1s/P10nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1xVMDAwYWJjZGVdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLAorICAgICAgICAgICAgIGInW1xcdTIwYWNcXFUwMDBhYmNkZV0nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzgzNjQ7JiM1NjQ0ODtdJyksCisgICAgICAgICAgICAoJ1tcdWRjODBcdWRjZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsIGInW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnbGF0aW4xJywgZXJyb3JfaGFuZGxlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9zdXJyb2dhdGVlc2NhcGVfZXJyb3Ioc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yKToKKyAgICAgICAgICAgICMgdGhlIGZpcnN0IGNoYXJhY3RlciBjYW4gYmUgZGVjb2RlZCwgYnV0IG5vdCB0aGUgc2Vjb25kCisgICAgICAgICAgICAnXHVkYzgwXHUyMGFjJy5lbmNvZGUoJ2xhdGluMScsICdzdXJyb2dhdGVlc2NhcGUnKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgKGInYWJjJywgJ2FiYycpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKCdsYXRpbjEnKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZW9wLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKaW5kZXggNTA5YmY1ZC4uOThkYTI2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkKQEAgLTI4Miw3ICsyODIsNiBAQAogICAgICAgICBhaSgiaWYgKGEgPT0gMSBhbmQgYiA9IDIpOiBwYXNzIikKIAogICAgICAgICBhaSgiZGVsIDEiKQotICAgICAgICBhaSgiZGVsICgpIikKICAgICAgICAgYWkoImRlbCAoMSwpIikKICAgICAgICAgYWkoImRlbCBbMV0iKQogICAgICAgICBhaSgiZGVsICcxJyIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQppbmRleCA1MjM4MzgyLi41MmZmMjU2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKQEAgLTIwLDEwICsyMCwxMCBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgQXdhaXRhYmxlLCBDb3JvdXRpbmUsIEFzeW5jSXRlcmF0b3IsIEFzeW5jSXRlcmFibGUKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBHZW5lcmF0b3IKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvciwgUmV2ZXJzaWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlLCBDb2xsZWN0aW9uCiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Ci1mcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIEtleXNWaWV3LCBJdGVtc1ZpZXcKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldywgVmFsdWVzVmlldwogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNlcXVlbmNlLCBNdXRhYmxlU2VxdWVuY2UKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBCeXRlU3RyaW5nCiAKQEAgLTI0Miw2ICsyNDIsMTAgQEAKICAgICAgICAgXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZWR0dXBsZSgnTlQnLCBzcGVjLCByZW5hbWU9VHJ1ZSkuX2ZpZWxkcywgcmVuYW1lZCkKIAorICAgIGRlZiB0ZXN0X21vZHVsZV9wYXJhbWV0ZXIoc2VsZik6CisgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCBtb2R1bGU9Y29sbGVjdGlvbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlQuX19tb2R1bGVfXywgY29sbGVjdGlvbnMpCisKICAgICBkZWYgdGVzdF9pbnN0YW5jZShzZWxmKToKICAgICAgICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKQogICAgICAgICBwID0gUG9pbnQoMTEsIDIyKQpAQCAtNDEyLDYgKzQxNiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5UQ29sb3IuX2ZpZWxkcywgKCdyZWQnLCAnZ3JlZW4nLCAnYmx1ZScpKQogICAgICAgICBnbG9iYWxzKCkucG9wKCdOVENvbG9yJywgTm9uZSkgICAgICAgICAgIyBjbGVhbi11cCBhZnRlciB0aGlzIHRlc3QKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRfb25seV9hcmd1bWVudHMoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlIDI1NjI4CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyB0ZW1wbGF0ZToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ3gnLCAneSddLCB2ZXJib3NlPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NsYXNzIE5UJywgTlQuX3NvdXJjZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsneCcsICd5J10sIFRydWUpCisKKyAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsnYWJjJywgJ2RlZiddLCByZW5hbWU9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVC5fZmllbGRzLCAoJ2FiYycsICdfMScpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWydhYmMnLCAnZGVmJ10sIEZhbHNlLCBUcnVlKQogCiAgICAgZGVmIHRlc3RfbmFtZWR0dXBsZV9zdWJjbGFzc19pc3N1ZV8yNDkzMShzZWxmKToKICAgICAgICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnX1BvaW50JywgWyd4JywgJ3knXSkpOgpAQCAtNDg3LDYgKzUwMyw5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3RoZXIucmlnaHRfc2lkZSwnUmlnaHQgc2lkZSBub3QgY2FsbGVkIGZvciAlcy4lcycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh0eXBlKGluc3RhbmNlKSwgbmFtZSkpCiAKK2RlZiBfdGVzdF9nZW4oKToKKyAgICB5aWVsZAorCiBjbGFzcyBUZXN0T25lVHJpY2tQb255QUJDcyhBQkNUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9Bd2FpdGFibGUoc2VsZik6CkBAIC02NzQsNyArNjkzLDcgQEAKICAgICAgICAgc2FtcGxlcyA9IFtieXRlcygpLCBzdHIoKSwKICAgICAgICAgICAgICAgICAgICB0dXBsZSgpLCBsaXN0KCksIHNldCgpLCBmcm96ZW5zZXQoKSwgZGljdCgpLAogICAgICAgICAgICAgICAgICAgIGRpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpLCBkaWN0KCkudmFsdWVzKCksCi0gICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgpAQCAtNjg4LDYgKzcwNywxNjEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHN0ciwgSSkpCiAgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhJdGVyYWJsZSwgJ19faXRlcl9fJykKICAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKEl0ZXJhYmxlLCAnX19pdGVyX18nKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcKKyAgICAgICAgY2xhc3MgSXQ6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICBjbGFzcyBJdEJsb2NrZWQoSXQpOgorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEl0LCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKEl0KCksIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEl0QmxvY2tlZCwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoSXRCbG9ja2VkKCksIEl0ZXJhYmxlKSkKKworICAgIGRlZiB0ZXN0X1JldmVyc2libGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgc29tZSBub24tcmV2ZXJzaWJsZXMKKyAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBkaWN0KCksIHNldCgpLCBmcm96ZW5zZXQoKV0KKyAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1yZXZlcnNpYmxlIGl0ZXJhYmxlcworICAgICAgICBub25fcmV2ZXJzaWJsZXMgPSBbZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCksIGRpY3QoKS52YWx1ZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIoKSwgQ291bnRlcigpLmtleXMoKSwgQ291bnRlcigpLml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudGVyKCkudmFsdWVzKCksIF90ZXN0X2dlbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLCBpdGVyKFtdKSwgcmV2ZXJzZWQoW10pXQorICAgICAgICBmb3IgeCBpbiBub25fcmV2ZXJzaWJsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBSZXZlcnNpYmxlKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIHJldmVyc2libGUgaXRlcmFibGVzCisgICAgICAgIHNhbXBsZXMgPSBbYnl0ZXMoKSwgc3RyKCksIHR1cGxlKCksIGxpc3QoKSwgT3JkZXJlZERpY3QoKSwKKyAgICAgICAgICAgICAgICAgICBPcmRlcmVkRGljdCgpLmtleXMoKSwgT3JkZXJlZERpY3QoKS5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgIE9yZGVyZWREaWN0KCkudmFsdWVzKCldCisgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoeCwgUmV2ZXJzaWJsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUoeCksIFJldmVyc2libGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIGFsc28gTWFwcGluZywgTXV0YWJsZU1hcHBpbmcsIGFuZCBTZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgUmV2ZXJzaWJsZSksIHJlcHIoU2VxdWVuY2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoTWFwcGluZywgUmV2ZXJzaWJsZSksIHJlcHIoTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhNdXRhYmxlTWFwcGluZywgUmV2ZXJzaWJsZSksIHJlcHIoTXV0YWJsZU1hcHBpbmcpKQorICAgICAgICAjIENoZWNrIGRpcmVjdCBzdWJjbGFzc2luZworICAgICAgICBjbGFzcyBSKFJldmVyc2libGUpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmV2ZXJzZWQoUigpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIFIpKQorICAgICAgICBzZWxmLnZhbGlkYXRlX2Fic3RyYWN0X21ldGhvZHMoUmV2ZXJzaWJsZSwgJ19fcmV2ZXJzZWRfXycsICdfX2l0ZXJfXycpCisgICAgICAgICMgQ2hlY2sgcmV2ZXJzaWJsZSBub24taXRlcmFibGUgKHdoaWNoIGlzIG5vdCBSZXZlcnNpYmxlKQorICAgICAgICBjbGFzcyBSZXZOb0l0ZXI6CisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOiByZXR1cm4gcmV2ZXJzZWQoW10pCisgICAgICAgIGNsYXNzIFJldlBsdXNJdGVyKFJldk5vSXRlcik6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2Tm9JdGVyLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldk5vSXRlcigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoUmV2UGx1c0l0ZXIsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShSZXZQbHVzSXRlcigpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIFJldjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19yZXZlcnNlZF9fKHNlbGYpOiByZXR1cm4gcmV2ZXJzZWQoW10pCisgICAgICAgIGNsYXNzIFJldkl0QmxvY2tlZChSZXYpOgorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIGNsYXNzIFJldlJldkJsb2NrZWQoUmV2KToKKyAgICAgICAgICAgIF9fcmV2ZXJzZWRfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoUmV2LCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUmV2KCksIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2SXRCbG9ja2VkLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFJldkl0QmxvY2tlZCgpLCBSZXZlcnNpYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKFJldlJldkJsb2NrZWQsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoUmV2UmV2QmxvY2tlZCgpLCBSZXZlcnNpYmxlKSkKKworICAgIGRlZiB0ZXN0X0NvbGxlY3Rpb24oc2VsZik6CisgICAgICAgICMgQ2hlY2sgc29tZSBub24tY29sbGVjdGlvbnMKKyAgICAgICAgbm9uX2NvbGxlY3Rpb25zID0gW05vbmUsIDQyLCAzLjE0LCAxaiwgbGFtYmRhIHg6IDIqeF0KKyAgICAgICAgZm9yIHggaW4gbm9uX2NvbGxlY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIENvbGxlY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBub24tY29sbGVjdGlvbiBpdGVyYWJsZXMKKyAgICAgICAgbm9uX2NvbF9pdGVyYWJsZXMgPSBbX3Rlc3RfZ2VuKCksIGl0ZXIoYicnKSwgaXRlcihieXRlYXJyYXkoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwgZGljdCgpLnZhbHVlcygpXQorICAgICAgICBmb3IgeCBpbiBub25fY29sX2l0ZXJhYmxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIENvbGxlY3Rpb24pLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgY29sbGVjdGlvbnMKKyAgICAgICAgc2FtcGxlcyA9IFtzZXQoKSwgZnJvemVuc2V0KCksIGRpY3QoKSwgYnl0ZXMoKSwgc3RyKCksIHR1cGxlKCksCisgICAgICAgICAgICAgICAgICAgbGlzdCgpLCBkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBDb2xsZWN0aW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgYWxzbyBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgZXRjLgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhTZXF1ZW5jZSwgQ29sbGVjdGlvbiksIHJlcHIoU2VxdWVuY2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNYXBwaW5nLCBDb2xsZWN0aW9uKSwgcmVwcihNYXBwaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXV0YWJsZU1hcHBpbmcsIENvbGxlY3Rpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihNdXRhYmxlTWFwcGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNldCwgQ29sbGVjdGlvbiksIHJlcHIoU2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXV0YWJsZVNldCwgQ29sbGVjdGlvbiksIHJlcHIoTXV0YWJsZVNldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNlcXVlbmNlLCBDb2xsZWN0aW9uKSwgcmVwcihNdXRhYmxlU2V0KSkKKyAgICAgICAgIyBDaGVjayBkaXJlY3Qgc3ViY2xhc3NpbmcKKyAgICAgICAgY2xhc3MgQ29sKENvbGxlY3Rpb24pOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBEZXJDb2woQ29sKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihDb2woKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGxpc3QsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzZXQsIENvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhmbG9hdCwgQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoRGVyQ29sKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhsaXN0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc2V0LCBEZXJDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoZmxvYXQsIERlckNvbCkpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhDb2xsZWN0aW9uLCAnX19sZW5fXycsICdfX2l0ZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19jb250YWluc19fJykKKyAgICAgICAgIyBDaGVjayBzaXplZCBjb250YWluZXIgbm9uLWl0ZXJhYmxlICh3aGljaCBpcyBub3QgQ29sbGVjdGlvbikgZXRjLgorICAgICAgICBjbGFzcyBDb2xOb0l0ZXI6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6IHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBDb2xOb1NpemU6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6IHJldHVybiBpdGVyKFtdKQorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKTogcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIENvbE5vQ29udDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKTogcmV0dXJuIDAKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vSXRlciwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb0l0ZXIoKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb1NpemUsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9TaXplKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9Db250LCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vQ29udCgpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nCisgICAgICAgIGNsYXNzIFNpemVCbG9jazoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYpOiByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIF9fbGVuX18gPSBOb25lCisgICAgICAgIGNsYXNzIEl0ZXJCbG9jazoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmKTogcmV0dXJuIFRydWUKKyAgICAgICAgICAgIF9faXRlcl9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoU2l6ZUJsb2NrLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKFNpemVCbG9jaygpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEl0ZXJCbG9jaywgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShJdGVyQmxvY2soKSwgQ29sbGVjdGlvbikpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZyBpbiBzdWJjbGFzcworICAgICAgICBjbGFzcyBDb2xJbXBsOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKGxpc3QoKSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjbGFzcyBOb25Db2woQ29sSW1wbCk6CisgICAgICAgICAgICBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhOb25Db2wsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoTm9uQ29sKCksIENvbGxlY3Rpb24pKQorCiAKICAgICBkZWYgdGVzdF9JdGVyYXRvcihzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBiIiIsICIiLCAoKSwgW10sIHt9LCBzZXQoKV0KQEAgLTY5OSw3ICs4NzMsNyBAQAogICAgICAgICAgICAgICAgICAgIGl0ZXIoc2V0KCkpLCBpdGVyKGZyb3plbnNldCgpKSwKICAgICAgICAgICAgICAgICAgICBpdGVyKGRpY3QoKS5rZXlzKCkpLCBpdGVyKGRpY3QoKS5pdGVtcygpKSwKICAgICAgICAgICAgICAgICAgICBpdGVyKGRpY3QoKS52YWx1ZXMoKSksCi0gICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgpAQCAtNzg3LDcgKzk2MSw3IEBACiAKICAgICBkZWYgdGVzdF9TaXplZChzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAotICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgpAQCAtODA1LDcgKzk3OSw3IEBACiAKICAgICBkZWYgdGVzdF9Db250YWluZXIoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYTogKHlpZWxkKSkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RfZ2VuKCksCiAgICAgICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKQEAgLTgyNCw3ICs5OTgsNyBAQAogICAgIGRlZiB0ZXN0X0NhbGxhYmxlKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCiAgICAgICAgICAgICAgICAgICAgICAgICIiLCBiIiIsICgpLCBbXSwge30sIHNldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgpAQCAtODQyLDE0ICsxMDE2LDE0IEBACiAgICAgICAgIHNlbGYudmFsaWRhdGVfaXNpbnN0YW5jZShDYWxsYWJsZSwgJ19fY2FsbF9fJykKIAogICAgIGRlZiB0ZXN0X2RpcmVjdF9zdWJjbGFzc2luZyhzZWxmKToKLSAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CisgICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFJldmVyc2libGUsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgogICAgICAgICAgICAgY2xhc3MgQyhCKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCBCKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhpbnQsIEMpKQogCiAgICAgZGVmIHRlc3RfcmVnaXN0cmF0aW9uKHNlbGYpOgotICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKKyAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgUmV2ZXJzaWJsZSwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CiAgICAgICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICAgICAgIF9faGFzaF9fID0gTm9uZSAgIyBNYWtlIHN1cmUgaXQgaXNuJ3QgaGFzaGFibGUgYnkgZGVmYXVsdAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEMsIEIpLCBCLl9fbmFtZV9fKQpAQCAtMTA0OSw2ICsxMjIzLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmNzID4gY3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuY3MgPj0gY3MpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTI2OTE1KHNlbGYpOgorICAgICAgICAjIENvbnRhaW5lciBtZW1iZXJzaGlwIHRlc3Qgc2hvdWxkIGNoZWNrIGlkZW50aXR5IGZpcnN0CisgICAgICAgIGNsYXNzIEN1c3RvbUVxdWFsT2JqZWN0OgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIEN1c3RvbVNlcXVlbmNlKGxpc3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFNlcXVlbmNlLl9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSkKKworICAgICAgICBuYW4gPSBmbG9hdCgnbmFuJykKKyAgICAgICAgb2JqID0gQ3VzdG9tRXF1YWxPYmplY3QoKQorICAgICAgICBjb250YWluZXJzID0gWworICAgICAgICAgICAgQ3VzdG9tU2VxdWVuY2UoW25hbiwgb2JqXSksCisgICAgICAgICAgICBJdGVtc1ZpZXcoezE6IG5hbiwgMjogb2JqfSksCisgICAgICAgICAgICBWYWx1ZXNWaWV3KHsxOiBuYW4sIDI6IG9ian0pCisgICAgICAgIF0KKyAgICAgICAgZm9yIGNvbnRhaW5lciBpbiBjb250YWluZXJzOgorICAgICAgICAgICAgZm9yIGVsZW0gaW4gY29udGFpbmVyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgY29udGFpbmVyKQorCiAgICAgZGVmIGFzc2VydFNhbWVTZXQoc2VsZiwgczEsIHMyKToKICAgICAgICAgIyBjb2VyY2UgYm90aCB0byBhIHJlYWwgc2V0IHRoZW4gY2hlY2sgZXF1YWxpdHkKICAgICAgICAgc2VsZi5hc3NlcnRTZXRFcXVhbChzZXQoczEpLCBzZXQoczIpKQpAQCAtMTIxOSw2ICsxNDEzLDcgQEAKICAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcigoKSkKICAgICAgICAgc2VsZi52YWxpZGF0ZV9jb21wYXJpc29uKE15TWFwcGluZygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBNeU1hcHBpbmcoKSkKIAogICAgIGRlZiB0ZXN0X011dGFibGVNYXBwaW5nKHNlbGYpOgogICAgICAgICBmb3Igc2FtcGxlIGluIFtkaWN0XToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQppbmRleCA4MjRlODQzLi40MDllYzg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CkBAIC00NzMsMTAgKzQ3MywxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIHsxOiAyLCAzOiA0fSkKIAogICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIGZvciBmaWxlbmFtZSBpbiAoJ2ZpbGUucHknLCBiJ2ZpbGUucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKSk6CisgICAgICAgIGZvciBmaWxlbmFtZSBpbiAnZmlsZS5weScsIGInZmlsZS5weSc6CiAgICAgICAgICAgICBjb2RlID0gY29tcGlsZSgncGFzcycsIGZpbGVuYW1lLCAnZXhlYycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKCdwYXNzJywgZmlsZW5hbWUsICdleGVjJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBpbGUsICdwYXNzJywgbGlzdChiJ2ZpbGUucHknKSwgJ2V4ZWMnKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CkBAIC02NjEsNiArNjY0LDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMSgwKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYyKDAuMCkpCiAKKyAgICBkZWYgdGVzdF9wYXRoX2xpa2Vfb2JqZWN0cyhzZWxmKToKKyAgICAgICAgIyBBbiBpbXBsaWNpdCB0ZXN0IGZvciBQeVVuaWNvZGVfRlNEZWNvZGVyKCkuCisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcGF0aAorCisgICAgICAgIGNvbXBpbGUoIjQyIiwgUGF0aExpa2UoInRlc3RfY29tcGlsZV9wYXRobGlrZSIpLCAic2luZ2xlIikKKwogCiBjbGFzcyBUZXN0U3RhY2tTaXplKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIFRoZXNlIHRlc3RzIGNoZWNrIHRoYXQgdGhlIGNvbXB1dGVkIHN0YWNrIHNpemUgZm9yIGEgY29kZSBvYmplY3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQppbmRleCAyY2U4YTYxLi4yMzU2ZWZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IGNvbXBpbGVhbGwKIGltcG9ydCBpbXBvcnRsaWIudXRpbAoraW1wb3J0IHRlc3QudGVzdF9pbXBvcnRsaWIudXRpbAogaW1wb3J0IG9zCiBpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHB5X2NvbXBpbGUKQEAgLTQwLDYgKzQxLDExIEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZGlyZWN0b3J5KQogCisgICAgZGVmIGFkZF9iYWRfc291cmNlX2ZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYmFkX3NvdXJjZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuZGlyZWN0b3J5LCAnX3Rlc3RfYmFkLnB5JykKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuYmFkX3NvdXJjZV9wYXRoLCAndycpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKCd4IChcbicpCisKICAgICBkZWYgZGF0YShzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuYmNfcGF0aCwgJ3JiJykgYXMgZmlsZToKICAgICAgICAgICAgIGRhdGEgPSBmaWxlLnJlYWQoOCkKQEAgLTc4LDE1ICs4NCw0NyBAQAogICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHNlbGYuc291cmNlX3BhdGgsIGZvcmNlPUZhbHNlLCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUoc2VsZi5zb3VyY2VfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD1UcnVlKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICBub3Qgb3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoMikpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgpCi0gICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIGZvcmNlPUZhbHNlLCBxdWlldD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgZm9yY2U9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1aWV0PVRydWUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aDIpKQogICAgICAgICBvcy51bmxpbmsoc2VsZi5iY19wYXRoKQogICAgICAgICBvcy51bmxpbmsoc2VsZi5iY19wYXRoMikKKyAgICAgICAgIyBUZXN0IGFnYWluc3QgYmFkIGZpbGVzCisgICAgICAgIHNlbGYuYWRkX2JhZF9zb3VyY2VfZmlsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUoc2VsZi5iYWRfc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PTIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9MikpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX2ZpbGVfcGF0aGxpa2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKyAgICAgICAgIyB3ZSBzaG91bGQgYWxzbyB0ZXN0IHRoZSBvdXRwdXQKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShwYXRobGliLlBhdGgoc2VsZi5zb3VyY2VfcGF0aCkpKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0ZG91dC5nZXR2YWx1ZSgpLCByJ0NvbXBpbGluZyAoW15XaW5kb3dzUGF0aHxQb3NpeFBhdGhdLiopJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX2ZpbGVfcGF0aGxpa2VfZGRpcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29tcGlsZWFsbC5jb21waWxlX2ZpbGUocGF0aGxpYi5QYXRoKHNlbGYuc291cmNlX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRpcj1wYXRobGliLlBhdGgoJ2RkaXJfcGF0aCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV9wYXRoKHNlbGYpOgorICAgICAgICB3aXRoIHRlc3QudGVzdF9pbXBvcnRsaWIudXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bc2VsZi5kaXJlY3RvcnldKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfcGF0aChxdWlldD0yKSkKKworICAgICAgICB3aXRoIHRlc3QudGVzdF9pbXBvcnRsaWIudXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bc2VsZi5kaXJlY3RvcnldKToKKyAgICAgICAgICAgIHNlbGYuYWRkX2JhZF9zb3VyY2VfZmlsZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbXBpbGVhbGwuY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1UcnVlLCBxdWlldD0yKSkKIAogICAgIGRlZiB0ZXN0X25vX3B5Y2FjaGVfaW5fbm9uX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgQnVnIDg1NjMgcmVwb3J0ZWQgdGhhdCBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBnb3QgY3JlYXRlZCBieQpAQCAtMTE1LDYgKzE1MywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uPW9wdCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGNhY2hlZDMpKQogCisgICAgZGVmIHRlc3RfY29tcGlsZV9kaXJfcGF0aGxpa2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKKyAgICAgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIocGF0aGxpYi5QYXRoKHNlbGYuZGlyZWN0b3J5KSkKKyAgICAgICAgbGluZSA9IHN0ZG91dC5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKVswXQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGxpbmUsIHInTGlzdGluZyAoW15XaW5kb3dzUGF0aHxQb3NpeFBhdGhdLiopJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisKICAgICBAbW9jay5wYXRjaCgnY29tcGlsZWFsbC5Qcm9jZXNzUG9vbEV4ZWN1dG9yJykKICAgICBkZWYgdGVzdF9jb21waWxlX3Bvb2xfY2FsbGVkKHNlbGYsIHBvb2xfbW9jayk6CiAgICAgICAgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoc2VsZi5kaXJlY3RvcnksIHF1aWV0PVRydWUsIHdvcmtlcnM9NSkKQEAgLTE5NywxMCArMjQzLDkgQEAKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdub3QgYWxsIGVudHJpZXMgb24gc3lzLnBhdGggYXJlIHdyaXRhYmxlJykKIAogICAgIGRlZiBfZ2V0X3J1bl9hcmdzKHNlbGYsIGFyZ3MpOgotICAgICAgICBpbnRlcnBfYXJncyA9IFsnLVMnXQotICAgICAgICBpZiBzeXMuZmxhZ3Mub3B0aW1pemU6Ci0gICAgICAgICAgICBpbnRlcnBfYXJncy5hcHBlbmQoezEgOiAnLU8nLCAyIDogJy1PTyd9W3N5cy5mbGFncy5vcHRpbWl6ZV0pCi0gICAgICAgIHJldHVybiBpbnRlcnBfYXJncyArIFsnLW0nLCAnY29tcGlsZWFsbCddICsgbGlzdChhcmdzKQorICAgICAgICByZXR1cm4gWypzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpLAorICAgICAgICAgICAgICAgICctUycsICctbScsICdjb21waWxlYWxsJywKKyAgICAgICAgICAgICAgICAqYXJnc10KIAogICAgIGRlZiBhc3NlcnRSdW5PSyhzZWxmLCAqYXJncywgKiplbnZfdmFycyk6CiAgICAgICAgIHJjLCBvdXQsIGVyciA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQppbmRleCA0MDNlZTNiLi5jMjQ5Y2E3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CkBAIC0xLDUgKzEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC50ZXN0X2dyYW1tYXIgaW1wb3J0IChWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUykKIAogZnJvbSByYW5kb20gaW1wb3J0IHJhbmRvbQogZnJvbSBtYXRoIGltcG9ydCBhdGFuMiwgaXNuYW4sIGNvcHlzaWduCkBAIC0zODUsNiArMzg3LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoY29tcGxleChjb21wbGV4MSgxaikpLCAyaikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wbGV4LCBjb21wbGV4MigxaikpCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlcyhzZWxmKToKKyAgICAgICAgIyBjaGVjayB1bmRlcnNjb3JlcworICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ3hYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleChsaXQpLCBldmFsKGxpdCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4KGxpdCksIGNvbXBsZXgobGl0LnJlcGxhY2UoJ18nLCAnJykpKQorICAgICAgICBmb3IgbGl0IGluIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIGxpdCBpbiAoJzBfNycsICcwOV85OScpOiAgIyBvY3RhbHMgYXJlIG5vdCByZWNvZ25pemVkIGhlcmUKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbm90IGFueShjaCBpbiBsaXQgZm9yIGNoIGluICd4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb21wbGV4LCBsaXQpCisKICAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgogICAgICAgICBmb3IgeCBpbiByYW5nZSgtMzAsIDMwKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh4KSwgaGFzaChjb21wbGV4KHgsIDApKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uY3VycmVudF9mdXR1cmVzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkKaW5kZXggNzUxMzgxNS4uMjNlOTViMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkKQEAgLTE1NCw2ICsxNTQsMzAgQEAKICAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKICAgICAgICAgICAgIHQuam9pbigpCiAKKyAgICBkZWYgdGVzdF90aHJlYWRfbmFtZXNfYXNzaWduZWQoc2VsZik6CisgICAgICAgIGV4ZWN1dG9yID0gZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IoCisgICAgICAgICAgICBtYXhfd29ya2Vycz01LCB0aHJlYWRfbmFtZV9wcmVmaXg9J1NwZWNpYWxQb29sJykKKyAgICAgICAgZXhlY3V0b3IubWFwKGFicywgcmFuZ2UoLTUsIDUpKQorICAgICAgICB0aHJlYWRzID0gZXhlY3V0b3IuX3RocmVhZHMKKyAgICAgICAgZGVsIGV4ZWN1dG9yCisKKyAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodC5uYW1lLCByJ15TcGVjaWFsUG9vbF9bMC00XSQnKQorICAgICAgICAgICAgdC5qb2luKCkKKworICAgIGRlZiB0ZXN0X3RocmVhZF9uYW1lc19kZWZhdWx0KHNlbGYpOgorICAgICAgICBleGVjdXRvciA9IGZ1dHVyZXMuVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPTUpCisgICAgICAgIGV4ZWN1dG9yLm1hcChhYnMsIHJhbmdlKC01LCA1KSkKKyAgICAgICAgdGhyZWFkcyA9IGV4ZWN1dG9yLl90aHJlYWRzCisgICAgICAgIGRlbCBleGVjdXRvcgorCisgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICAjIFdlIGRvbid0IHBhcnRpY3VsYXJseSBjYXJlIHdoYXQgdGhlIGRlZmF1bHQgbmFtZSBpcywganVzdCB0aGF0CisgICAgICAgICAgICAjIGl0IGhhcyBhIGRlZmF1bHQgbmFtZSBpbXBseWluZyB0aGF0IGl0IGlzIGEgVGhyZWFkUG9vbEV4ZWN1dG9yCisgICAgICAgICAgICAjIGZvbGxvd2VkIGJ5IHdoYXQgbG9va3MgbGlrZSBhIHRocmVhZCBudW1iZXIuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHQubmFtZSwgcideLipUaHJlYWRQb29sRXhlY3V0b3IuKl9bMC00XSQnKQorICAgICAgICAgICAgdC5qb2luKCkKKwogCiBjbGFzcyBQcm9jZXNzUG9vbFNodXRkb3duVGVzdChQcm9jZXNzUG9vbE1peGluLCBFeGVjdXRvclNodXRkb3duVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBfcHJpbWVfZXhlY3V0b3Ioc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CmluZGV4IDcxYThmM2YuLjJiMDgxOTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5CkBAIC0yMDUyLDUgKzIwNTIsMTEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2ZnWyd0d28nXS5nZXRsZW4oJ29uZScpLCA1KQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7IkVycm9yIn0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY29uZmlncGFyc2VyLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQppbmRleCAzYzZiZGVmLi4wMzZhMWQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKQEAgLTg0LDYgKzg0LDMxIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGFpbmVyID09IGNvbnN0cnVjdG9yKHZhbHVlcykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGFpbmVyID09IGNvbnRhaW5lcikKIAorICAgIGRlZiB0ZXN0X2Jsb2NrX2ZhbGxiYWNrKHNlbGYpOgorICAgICAgICAjIGJsb2NraW5nIGZhbGxiYWNrIHdpdGggX19jb250YWluc19fID0gTm9uZQorICAgICAgICBjbGFzcyBCeUNvbnRhaW5zKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgYyA9IEJ5Q29udGFpbnMoKQorICAgICAgICBjbGFzcyBCbG9ja0NvbnRhaW5zKEJ5Q29udGFpbnMpOgorICAgICAgICAgICAgIiIiSXMgbm90IGEgY29udGFpbmVyCisKKyAgICAgICAgICAgIFRoaXMgY2xhc3MgaXMgYSBwZXJmZWN0bHkgZ29vZCBpdGVyYWJsZSAoYXMgdGVzdGVkIGJ5CisgICAgICAgICAgICBsaXN0KGJjKSksIGFzIHdlbGwgYXMgaW5oZXJpdGluZyBmcm9tIGEgcGVyZmVjdGx5IGdvb2QKKyAgICAgICAgICAgIGNvbnRhaW5lciwgYnV0IF9fY29udGFpbnNfXyA9IE5vbmUgcHJldmVudHMgdGhlIHVzdWFsCisgICAgICAgICAgICBmYWxsYmFjayB0byBpdGVyYXRpb24gaW4gdGhlIGNvbnRhaW5lciBwcm90b2NvbC4gVGhhdAorICAgICAgICAgICAgaXMsIG5vcm1hbGx5LCAwIGluIGJjIHdvdWxkIGZhbGwgYmFjayB0byB0aGUgZXF1aXZhbGVudAorICAgICAgICAgICAgb2YgYW55KHg9PTAgZm9yIHggaW4gYmMpLCBidXQgaGVyZSBpdCdzIGJsb2NrZWQgZnJvbQorICAgICAgICAgICAgZG9pbmcgc28uCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB3aGlsZSBGYWxzZToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgTm9uZQorICAgICAgICAgICAgX19jb250YWluc19fID0gTm9uZQorICAgICAgICBiYyA9IEJsb2NrQ29udGFpbnMoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gYykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgwIGluIGxpc3QoYmMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogMCBpbiBiYykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQppbmRleCA1MTY0MDNlLi5jMDRjODA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CkBAIC0xMiw2ICsxMiwzOSBAQAogICAgIHRocmVhZGluZyA9IE5vbmUKIAogCitjbGFzcyBUZXN0QWJzdHJhY3RDb250ZXh0TWFuYWdlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9lbnRlcihzZWxmKToKKyAgICAgICAgY2xhc3MgRGVmYXVsdEVudGVyKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9fZXhpdF9fKCphcmdzKQorCisgICAgICAgIG1hbmFnZXIgPSBEZWZhdWx0RW50ZXIoKQorICAgICAgICBzZWxmLmFzc2VydElzKG1hbmFnZXIuX19lbnRlcl9fKCksIG1hbmFnZXIpCisKKyAgICBkZWYgdGVzdF9leGl0X2lzX2Fic3RyYWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBNaXNzaW5nRXhpdChBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBNaXNzaW5nRXhpdCgpCisKKyAgICBkZWYgdGVzdF9zdHJ1Y3R1cmFsX3N1YmNsYXNzaW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBNYW5hZ2VyRnJvbVNjcmF0Y2g6CisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hbmFnZXJGcm9tU2NyYXRjaCwgQWJzdHJhY3RDb250ZXh0TWFuYWdlcikpCisKKyAgICAgICAgY2xhc3MgRGVmYXVsdEVudGVyKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9fZXhpdF9fKCphcmdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERlZmF1bHRFbnRlciwgQWJzdHJhY3RDb250ZXh0TWFuYWdlcikpCisKKwogY2xhc3MgQ29udGV4dE1hbmFnZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jb250ZXh0bWFuYWdlcl9wbGFpbihzZWxmKToKQEAgLTg5LDcgKzEyMiw3IEBACiAgICAgICAgIGRlZiB3b29ob28oKToKICAgICAgICAgICAgIHlpZWxkCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgICAgIHdpdGggd29vaG9vKCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHN0b3BfZXhjCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKaW5kZXggMGUxZjY3MC4uNDVhNjkyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQpAQCAtOTgsNyArOTgsNyBAQAogICAgICAgICB0ZXN0cyA9IFtOb25lLCAuLi4sIE5vdEltcGxlbWVudGVkLAogICAgICAgICAgICAgICAgICA0MiwgMioqMTAwLCAzLjE0LCBUcnVlLCBGYWxzZSwgMWosCiAgICAgICAgICAgICAgICAgICJoZWxsbyIsICJoZWxsb1x1MTIzNCIsIGYuX19jb2RlX18sCi0gICAgICAgICAgICAgICAgIGIid29ybGQiLCBieXRlcyhyYW5nZSgyNTYpKSwgcmFuZ2UoMTApLAorICAgICAgICAgICAgICAgICBiIndvcmxkIiwgYnl0ZXMocmFuZ2UoMjU2KSksIHJhbmdlKDEwKSwgc2xpY2UoMSwgMTAsIDIpLAogICAgICAgICAgICAgICAgICBOZXdTdHlsZSwgQ2xhc3NpYywgbWF4LCBXaXRoTWV0YWNsYXNzXQogICAgICAgICBmb3IgeCBpbiB0ZXN0czoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY29weS5jb3B5KHgpLCB4KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CmluZGV4IDRhMzI3YjUuLjc4NDM5YTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKQEAgLTY5LDU1ICs2OSwxMzAgQEAKIGNsYXNzIEFzeW5jQmFkU3ludGF4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9iYWRzeW50YXhfMShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAiJ2F3YWl0JyBvdXRzaWRlIik6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMxCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfMihzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAiJ2F3YWl0JyBvdXRzaWRlIik6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmMyCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfMyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzMKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF80KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNAotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM1Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNihzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAotICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOgotCi0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM2Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAotICAgICAgICAgICAgU3ludGF4RXJyb3IsICIneWllbGQgZnJvbScgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik6Ci0KLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzcKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF84KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jOAotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzkoc2VsZik6Ci0gICAgICAgIG5zID0ge30KLSAgICAgICAgZm9yIGNvbXAgaW4geycoYXdhaXQgYSBmb3IgYSBpbiBiKScsCi0gICAgICAgICAgICAgICAgICAgICAnW2F3YWl0IGEgZm9yIGEgaW4gYl0nLAotICAgICAgICAgICAgICAgICAgICAgJ3thd2FpdCBhIGZvciBhIGluIGJ9JywKLSAgICAgICAgICAgICAgICAgICAgICd7YXdhaXQgYTogYyBmb3IgYSBpbiBifSd9OgotCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdhd2FpdC4qaW4gY29tcHJlaGVuJyk6Ci0gICAgICAgICAgICAgICAgZXhlYygnYXN5bmMgZGVmIGYoKTpcblx0e30nLmZvcm1hdChjb21wKSwgbnMsIG5zKQotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzEwKHNlbGYpOgotICAgICAgICAjIFRlc3RzIGZvciBpc3N1ZSAyNDYxOQotCiAgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgc29tZXRoaW5nKCkKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXdhaXQgc29tZXRoaW5nKCkiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIFtdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdCBmdXQKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhPWF3YWl0IHNvbWV0aGluZygpKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oYTphd2FpdCBzb21ldGhpbmcoKSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBhc3luYyBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFthd2FpdCBpIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGIKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGJdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBhd2FpdCBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGF3YWl0IGJdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGF3YWl0IGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzIGlmIGF3YWl0IGldCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgYXN5bmMgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFthd2FpdCBpIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBiCisgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBiIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGJdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGF3YWl0IGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhd2FpdCBiXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGF3YWl0IGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMgaWYgYXdhaXQgaV0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0CisgICAgICAgICAgICAiIiIsCisKICAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKICAgICAgICAgICAgICAgICAgICBkZWYgYmFyKCk6IHBhc3MKICAgICAgICAgICAgICAgICAgICBhd2FpdCA9IDEKQEAgLTI4Myw1NyArMzU4LDExMCBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29kZT1jb2RlKSwgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgogICAgICAgICAgICAgICAgIGNvbXBpbGUoY29kZSwgIjx0ZXN0PiIsICJleGVjIikKIAorICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8yKHNlbGYpOgorICAgICAgICBzYW1wbGVzID0gWworICAgICAgICAgICAgIiIiZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0ID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBCYXI6CisgICAgICAgICAgICAgICAgZGVmIGFzeW5jKCk6IHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgQmFyOgorICAgICAgICAgICAgICAgIGFzeW5jID0gMQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBhc3luYzoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIGF3YWl0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiaW1wb3J0IG1hdGggYXMgYXdhaXQiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBhc3luYygpOgorICAgICAgICAgICAgICAgIHBhc3MiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBmb28oKiwgYXdhaXQ9MSk6CisgICAgICAgICAgICAgICAgcGFzcyIiIgorCisgICAgICAgICAgICAiIiJhc3luYyA9IDEiIiIsCisKKyAgICAgICAgICAgICIiInByaW50KGF3YWl0PTEpIiIiCisgICAgICAgIF0KKworICAgICAgICBmb3IgY29kZSBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29kZT1jb2RlKSwgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICInYXdhaXQnIHdpbGwgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzIik6CisgICAgICAgICAgICAgICAgY29tcGlsZShjb2RlLCAiPHRlc3Q+IiwgImV4ZWMiKQorCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIikKKyAgICAgICAgICAgICAgICBjb21waWxlKCJhc3luYyA9IDEiLCAiPHRlc3Q+IiwgImV4ZWMiKQorCiAgICAgZGVmIHRlc3RfZ29vZHN5bnRheF8xKHNlbGYpOgogICAgICAgICAjIFRlc3RzIGZvciBpc3N1ZSAyNDYxOQogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygxMCksIDExKQorICAgICAgICBzYW1wbGVzID0gWworICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgogCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKIAotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCiAKLSAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oMjApLCAyMikKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICAiIiJzcGFtIiIiCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IFwKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAjIDEyMwotICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICAjIDQ1NgotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgIiIic3BhbSIiIgorICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogXAorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgIyAxMjMKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICAjIDQ1NgorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICBhc3luYyBkZWYgYmFyKCk6IHJldHVybiBhd2FpdF8KLSAgICAgICAgICAgIGF3YWl0XyA9IGF3YWl0Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYmFyKCkuc2VuZChOb25lKQotICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28oNDIpLCA0MikKKyAgICAgICAgICAgICcnJ2RlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcmV0dXJuIGF3YWl0XworICAgICAgICAgICAgICAgIGF3YWl0XyA9IGF3YWl0CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiYXIoKS5zZW5kKE5vbmUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdICsgMQorICAgICAgICAgICAgJycnCisgICAgICAgIF0KIAotICAgICAgICBhc3luYyBkZWYgZigpOgotICAgICAgICAgICAgYXN5bmMgZGVmIGcoKTogcGFzcwotICAgICAgICAgICAgYXdhaXQgegotICAgICAgICBhd2FpdCA9IDEKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbihmKSkKKyAgICAgICAgZm9yIGNvZGUgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNvZGU9Y29kZSk6CisgICAgICAgICAgICAgICAgbG9jID0ge30KKworICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgICAgICAgICBleGVjKGNvZGUsIGxvYywgbG9jKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NbJ2ZvbyddKDEwKSwgMTEpCiAKIAogY2xhc3MgVG9rZW5pemVyUmVnclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtOTA2LDcgKzEwMzQsNyBAQAogICAgICAgICAgICAgcmV0dXJuIGF3YWl0IEF3YWl0YWJsZSgpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAotICAgICAgICAgICAgVHlwZUVycm9yLCAiX19hd2FpdF9fXChcKSByZXR1cm5lZCBhIGNvcm91dGluZSIpOgorICAgICAgICAgICAgVHlwZUVycm9yLCByIl9fYXdhaXRfX1woXCkgcmV0dXJuZWQgYSBjb3JvdXRpbmUiKToKIAogICAgICAgICAgICAgcnVuX2FzeW5jKGZvbygpKQogCkBAIC0xMjcwLDcgKzEzOTgsNyBAQAogCiAgICAgICAgIGJ1ZmZlciA9IFtdCiAgICAgICAgIGFzeW5jIGRlZiB0ZXN0MSgpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CiAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkxLCBpMiBpbiBBc3luY0l0ZXIoKToKICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpMSArIGkyKQogCkBAIC0xMjg0LDcgKzE0MTIsNyBAQAogICAgICAgICBidWZmZXIgPSBbXQogICAgICAgICBhc3luYyBkZWYgdGVzdDIoKToKICAgICAgICAgICAgIG5vbmxvY2FsIGJ1ZmZlcgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CiAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQXN5bmNJdGVyKCk6CiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoaVswXSkKICAgICAgICAgICAgICAgICAgICAgaWYgaVswXSA9PSAyMDoKQEAgLTEzMDMsNyArMTQzMSw3IEBACiAgICAgICAgIGJ1ZmZlciA9IFtdCiAgICAgICAgIGFzeW5jIGRlZiB0ZXN0MygpOgogICAgICAgICAgICAgbm9ubG9jYWwgYnVmZmVyCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBBc3luY0l0ZXIoKToKICAgICAgICAgICAgICAgICAgICAgaWYgaVswXSA+IDIwOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTEzNDgsNyArMTQ3Niw3IEBACiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAogICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19haXRlci4qXDogSSIpOgorICAgICAgICAgICAgICAgIHIiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19haXRlci4qXDogSSIpOgogCiAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKQEAgLTEzODYsNyArMTUxNCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDEyMwogCiAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJsZWdhY3kiKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgogICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIEkoKToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ25ldmVyIGdvaW5nIHRvIGhhcHBlbicpCiAKQEAgLTE0OTUsNyArMTYyMyw3IEBACiAgICAgICAgICAgICAgICAgMS8wCiAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKICAgICAgICAgICAgIG5vbmxvY2FsIENOVAotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgImxlZ2FjeSIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAibGVnYWN5Iik6CiAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUkoKToKICAgICAgICAgICAgICAgICAgICAgQ05UICs9IDEKICAgICAgICAgICAgIENOVCArPSAxMApAQCAtMTUyMiw3ICsxNjUwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDTlQsIDApCiAKICAgICBkZWYgdGVzdF9mb3JfOShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBjYW4gc2FmZWx5IGJlIGNvbnZlcnRlZCBpbnRvCisgICAgICAgICMgVGVzdCB0aGF0IERlcHJlY2F0aW9uV2FybmluZyBjYW4gc2FmZWx5IGJlIGNvbnZlcnRlZCBpbnRvCiAgICAgICAgICMgYW4gZXhjZXB0aW9uIChfX2FpdGVyX18gc2hvdWxkIG5vdCBoYXZlIGEgY2hhbmNlIHRvIHJhaXNlCiAgICAgICAgICMgYSBaZXJvRGl2aXNpb25FcnJvci4pCiAgICAgICAgIGNsYXNzIEFJOgpAQCAtMTUzMiwxMyArMTY2MCwxMyBAQAogICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUkoKToKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQogICAgICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKIAogICAgIGRlZiB0ZXN0X2Zvcl8xMChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBjYW4gc2FmZWx5IGJlIGNvbnZlcnRlZCBpbnRvCisgICAgICAgICMgVGVzdCB0aGF0IERlcHJlY2F0aW9uV2FybmluZyBjYW4gc2FmZWx5IGJlIGNvbnZlcnRlZCBpbnRvCiAgICAgICAgICMgYW4gZXhjZXB0aW9uLgogICAgICAgICBjbGFzcyBBSToKICAgICAgICAgICAgIGFzeW5jIGRlZiBfX2FpdGVyX18oc2VsZik6CkBAIC0xNTQ3LDcgKzE2NzUsNyBAQAogICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gQUkoKToKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQogICAgICAgICAgICAgICAgIHJ1bl9hc3luYyhmb28oKSkKQEAgLTE1OTgsNiArMTcyNiwxODUgQEAKICAgICAgICAgICAgIGZvbygpLnNlbmQoTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFs0Ml0pCiAKKyAgICBkZWYgdGVzdF9jb21wXzEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGkpOgorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbYXdhaXQgYyBmb3IgYyBpbiBbZigxKSwgZig0MSldXQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2F3YWl0IGMgZm9yIGMgaW4gW2YoMSksIGYoNDEpXX0KKworICAgICAgICBhc3luYyBkZWYgcnVuX2RpY3QxKCk6CisgICAgICAgICAgICByZXR1cm4ge2F3YWl0IGM6ICdhJyBmb3IgYyBpbiBbZigxKSwgZig0MSldfQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdDIoKToKKyAgICAgICAgICAgIHJldHVybiB7aTogYXdhaXQgYyBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoW2YoMSksIGYoNDEpXSl9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2xpc3QoKSksIChbXSwgWzEsIDQxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9zZXQoKSksIChbXSwgezEsIDQxfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9kaWN0MSgpKSwgKFtdLCB7MTogJ2EnLCA0MTogJ2EnfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9kaWN0MigpKSwgKFtdLCB7MDogMSwgMTogNDF9KSkKKworICAgIGRlZiB0ZXN0X2NvbXBfMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaSk6CisgICAgICAgICAgICByZXR1cm4gaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtzIGZvciBjIGluIFtmKCcnKSwgZignYWJjJyksIGYoJycpLCBmKFsnZGUnLCAnZmcnXSldCisgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGF3YWl0IGNdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWydhJywgJ2InLCAnYycsICdkZScsICdmZyddKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtkCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIFtmKFtmKFsxMCwgMzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYoWzIwXSldKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgYworICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBhd2FpdCBzfQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezEwLCAyMCwgMzB9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldDIoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgcworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBbZihbZigxMCksIGYoMjApXSldCisgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGF3YWl0IGN9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0MigpKSwKKyAgICAgICAgICAgIChbXSwgezEwLCAyMH0pKQorCisgICAgZGVmIHRlc3RfY29tcF8zKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMTEsIDIxXSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSl9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezExLCAyMX0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMTogaSArIDIgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSl9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2RpY3QoKSksCisgICAgICAgICAgICAoW10sIHsxMTogMTIsIDIxOiAyMn0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZ2VuKCk6CisgICAgICAgICAgICBnZW4gPSAoaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkpCisgICAgICAgICAgICByZXR1cm4gW2cgKyAxMDAgYXN5bmMgZm9yIGcgaW4gZ2VuXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9nZW4oKSksCisgICAgICAgICAgICAoW10sIFsxMTEsIDEyMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF80KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzIxXSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQoKSksCisgICAgICAgICAgICAoW10sIHsyMX0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMTogaSArIDIgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9kaWN0KCkpLAorICAgICAgICAgICAgKFtdLCB7MjE6IDIyfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9nZW4oKToKKyAgICAgICAgICAgIGdlbiA9IChpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTApCisgICAgICAgICAgICByZXR1cm4gW2cgKyAxMDAgYXN5bmMgZm9yIGcgaW4gZ2VuXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9nZW4oKSksCisgICAgICAgICAgICAoW10sIFsxMjFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaXQpOgorICAgICAgICAgICAgZm9yIGkgaW4gaXQ6CisgICAgICAgICAgICAgICAgeWllbGQgaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtpICsgMSBmb3IgcGFpciBpbiAoWzEwLCAyMF0sIFszMCwgNDBdKSBpZiBwYWlyWzBdID4gMTAKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gZihwYWlyKSBpZiBpID4gMzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFs0MV0pKQorCisgICAgZGVmIHRlc3RfY29tcF82KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBzZXEgaW4gZihbKDEwLCAyMCksICgzMCwpXSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gc2VxXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsxMSwgMjEsIDMxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzcoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2FhYScpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgYXN5bmMgZm9yIGkgaW4gZigpXQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICdhYWEnKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKQorCisgICAgZGVmIHRlc3RfY29tcF84KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgcmV0dXJuIFtpIGZvciBpIGluIFsxLCAyLCAzXV0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKGYoKSksCisgICAgICAgICAgICAoW10sIFsxLCAyLCAzXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzkoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGwgPSBbaSBhc3luYyBmb3IgaSBpbiBnZW4oKV0KKyAgICAgICAgICAgIHJldHVybiBbaSBmb3IgaSBpbiBsXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgWzEsIDJdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfMTAoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICB4eCA9IHtpIGZvciBpIGluIFsxLCAyLCAzXX0KKyAgICAgICAgICAgIHJldHVybiB7eDogeCBmb3IgeCBpbiB4eH0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKGYoKSksCisgICAgICAgICAgICAoW10sIHsxOiAxLCAyOiAyLCAzOiAzfSkpCisKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBhc3luYyBkZWYgZnVuYygpOiBwYXNzCiAgICAgICAgIGNvcm8gPSBmdW5jKCkKQEAgLTE3MjgsOCArMjAzNSw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCksIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCiAgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICJjb3JvdXRpbmUgd3JhcHBlci4qXC53cmFwcGVyIGF0IDB4LiphdHRlbXB0ZWQgdG8gIgotICAgICAgICAgICAgICAgICJyZWN1cnNpdmVseSB3cmFwIC4qIHdyYXAgLioiKToKKyAgICAgICAgICAgICAgICByImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCisgICAgICAgICAgICAgICAgciJyZWN1cnNpdmVseSB3cmFwIC4qIHdyYXAgLioiKToKIAogICAgICAgICAgICAgICAgIGZvbygpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBmMTg5ODNmLi41M2Y4OTE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTYsNyArNiw3IEBACiAjIHJpcCBvZmYgYWxsIGludGVyZXN0aW5nIHN0dWZmIGZyb20gdGVzdF9wcm9maWxlCiBpbXBvcnQgY1Byb2ZpbGUKIGZyb20gdGVzdC50ZXN0X3Byb2ZpbGUgaW1wb3J0IFByb2ZpbGVUZXN0LCByZWdlbmVyYXRlX2V4cGVjdGVkX291dHB1dAotZnJvbSB0ZXN0LnByb2ZpbGVlIGltcG9ydCB0ZXN0ZnVuYworCiAKIGNsYXNzIENQcm9maWxlVGVzdChQcm9maWxlVGVzdCk6CiAgICAgcHJvZmlsZXJjbGFzcyA9IGNQcm9maWxlLlByb2ZpbGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5IGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKaW5kZXggNzdjMzE1ZS4uMDNhYjE4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jc3YucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKQEAgLTIsOSArMiw3IEBACiAjIGNzdiBwYWNrYWdlIHVuaXQgdGVzdHMKIAogaW1wb3J0IGNvcHkKLWltcG9ydCBpbwogaW1wb3J0IHN5cwotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCkBAIC0xMiw2ICsxMCw5IEBACiBpbXBvcnQgZ2MKIGltcG9ydCBwaWNrbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucworZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogCiBjbGFzcyBUZXN0X0Nzdih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiCkBAIC00MjYsMTcgKzQyNywxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNzdi5yZWFkZXIsIFtdLCBxdW90aW5nID0gLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LnJlYWRlciwgW10sIHF1b3RpbmcgPSAxMDApCiAKLSAgICAjIFNlZSBpc3N1ZSAjMjI5OTUKLSAgICAjIyBkZWYgdGVzdF9jb3B5KHNlbGYpOgotICAgICMjICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgotICAgICMjICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQotICAgICMjICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb3B5LmNvcHksIGRpYWxlY3QpCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKKyAgICAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29weS5jb3B5LCBkaWFsZWN0KQogCi0gICAgIyMgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICMjICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgotICAgICMjICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQotICAgICMjICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKKyAgICAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkaWFsZWN0LCBwcm90bykKIAogY2xhc3MgVGVzdENzdkJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiByZWFkZXJBc3NlcnRFcXVhbChzZWxmLCBpbnB1dCwgZXhwZWN0ZWRfcmVzdWx0KToKQEAgLTYyNiw2ICs2MjYsMjQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIidmMiciLCBleGNlcHRpb24pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIxIiwgZXhjZXB0aW9uKQogCisgICAgZGVmIHRlc3RfdHlwb19pbl9leHRyYXNhY3Rpb25fcmFpc2VzX2Vycm9yKHNlbGYpOgorICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjc3YuRGljdFdyaXRlciwgZmlsZW9iaiwgWydmMScsICdmMiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYXNhY3Rpb249InJhaXNlZCIpCisKKyAgICBkZWYgdGVzdF93cml0ZV9maWVsZF9ub3RfaW5fZmllbGRfbmFtZXNfcmFpc2Uoc2VsZik6CisgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCisgICAgICAgIHdyaXRlciA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmosIFsnZjEnLCAnZjInXSwgZXh0cmFzYWN0aW9uPSJyYWlzZSIpCisgICAgICAgIGRpY3Ryb3cgPSB7J2YwJzogMCwgJ2YxJzogMSwgJ2YyJzogMiwgJ2YzJzogM30KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3N2LkRpY3RXcml0ZXIud3JpdGVyb3csIHdyaXRlciwgZGljdHJvdykKKworICAgIGRlZiB0ZXN0X3dyaXRlX2ZpZWxkX25vdF9pbl9maWVsZF9uYW1lc19pZ25vcmUoc2VsZik6CisgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCisgICAgICAgIHdyaXRlciA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmosIFsnZjEnLCAnZjInXSwgZXh0cmFzYWN0aW9uPSJpZ25vcmUiKQorICAgICAgICBkaWN0cm93ID0geydmMCc6IDAsICdmMSc6IDEsICdmMic6IDIsICdmMyc6IDN9CisgICAgICAgIGNzdi5EaWN0V3JpdGVyLndyaXRlcm93KHdyaXRlciwgZGljdHJvdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLmdldHZhbHVlKCksICIxLDJcclxuIikKKwogICAgIGRlZiB0ZXN0X3JlYWRfZGljdF9maWVsZHMoc2VsZik6CiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgidysiKSBhcyBmaWxlb2JqOgogICAgICAgICAgICAgZmlsZW9iai53cml0ZSgiMSwyLGFiY1xyXG4iKQpAQCAtMTA4MCw3ICsxMDk4LDYgQEAKICAgICAgICAgICAgICAiRnJhbsOnb2lzIFBpbmFyZCJdCiAKICAgICBkZWYgdGVzdF91bmljb2RlX3JlYWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIGZpbGVvYmoud3JpdGUoIiwiLmpvaW4oc2VsZi5uYW1lcykgKyAiXHJcbiIpCiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKQEAgLTEwODksNyArMTEwNiw2IEBACiAKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGVfd3JpdGUoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIHdyaXRlciA9IGNzdi53cml0ZXIoZmlsZW9iaikKICAgICAgICAgICAgIHdyaXRlci53cml0ZXJvdyhzZWxmLm5hbWVzKQpAQCAtMTA5Nyw2ICsxMTEzLDYzIEBACiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5yZWFkKCksIGV4cGVjdGVkKQogCitjbGFzcyBLZXlPcmRlcmluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb3JkZXJpbmdfZm9yX3RoZV9kaWN0X3JlYWRlcl9hbmRfd3JpdGVyKHNlbGYpOgorICAgICAgICByZXN1bHRzZXQgPSBzZXQoKQorICAgICAgICBmb3Iga2V5cyBpbiBwZXJtdXRhdGlvbnMoImFiY2RlIik6CisgICAgICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoJ3crJywgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iamVjdDoKKyAgICAgICAgICAgICAgICBkdyA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmplY3QsIGtleXMpCisgICAgICAgICAgICAgICAgZHcud3JpdGVoZWFkZXIoKQorICAgICAgICAgICAgICAgIGZpbGVvYmplY3Quc2VlaygwKQorICAgICAgICAgICAgICAgIGRyID0gY3N2LkRpY3RSZWFkZXIoZmlsZW9iamVjdCkKKyAgICAgICAgICAgICAgICBrdCA9IHR1cGxlKGRyLmZpZWxkbmFtZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBrdCkKKyAgICAgICAgICAgICAgICByZXN1bHRzZXQuYWRkKGt0KQorICAgICAgICAjIEZpbmFsIHNhbml0eSBjaGVjazogd2VyZSBhbGwgcGVybXV0YXRpb25zIHVuaXF1ZT8KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0c2V0KSwgMTIwLCAiS2V5IG9yZGVyaW5nOiBzb21lIGtleSBwZXJtdXRhdGlvbnMgbm90IGNvbGxlY3RlZCAoZXhwZWN0ZWQgMTIwKSIpCisKKyAgICBkZWYgdGVzdF9vcmRlcmVkX2RpY3RfcmVhZGVyKHNlbGYpOgorICAgICAgICBkYXRhID0gZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIEZpcnN0TmFtZSxMYXN0TmFtZQorICAgICAgICAgICAgRXJpYyxJZGxlCisgICAgICAgICAgICBHcmFoYW0sQ2hhcG1hbixPdmVyMSxPdmVyMgorCisgICAgICAgICAgICBVbmRlcjEKKyAgICAgICAgICAgIEpvaG4sQ2xlZXNlCisgICAgICAgICcnJykuc3BsaXRsaW5lcygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEpKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnRXJpYycpLCAoJ0xhc3ROYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdHcmFoYW0nKSwgKCdMYXN0TmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ1VuZGVyMScpLCAoJ0xhc3ROYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnSm9obicpLCAoJ0xhc3ROYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhLCByZXN0a2V5PSdPdGhlckluZm8nKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0VyaWMnKSwgKCdMYXN0TmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnR3JhaGFtJyksICgnTGFzdE5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ090aGVySW5mbycsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnVW5kZXIxJyksICgnTGFzdE5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdKb2huJyksICgnTGFzdE5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAgZGVsIGRhdGFbMF0gICAgICAgICAgICAjIFJlbW92ZSB0aGUgaGVhZGVyIHJvdworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSwgZmllbGRuYW1lcz1bJ2ZuYW1lJywgJ2xuYW1lJ10pKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdmbmFtZScsICdFcmljJyksICgnbG5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnR3JhaGFtJyksICgnbG5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ1VuZGVyMScpLCAoJ2xuYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdKb2huJyksICgnbG5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geydfX2RvY19fJywgJ19fdmVyc2lvbl9fJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY3N2LCAoJ2NzdicsICdfY3N2JyksIGV4dHJhPWV4dHJhKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQppbmRleCAyZDRlYjUyLi4yNDJlMWJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKQEAgLTIzLDkgKzIzLDE2IEBACiB0ZXN0X2NsYXNzZXMgPSBbXQogCiBmb3IgbW9kdWxlLCBzdWZmaXggaW4gemlwKHRlc3RfbW9kdWxlcywgdGVzdF9zdWZmaXhlcyk6CisgICAgdGVzdF9jbGFzc2VzID0gW10KICAgICBmb3IgbmFtZSwgY2xzIGluIG1vZHVsZS5fX2RpY3RfXy5pdGVtcygpOgotICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UoY2xzLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RDYXNlKSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgdHlwZSk6CiAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgdGVzdF9jbGFzc2VzLmFwcGVuZChjbHMpCisgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSk6CisgICAgICAgICAgICBzdWl0ID0gY2xzKCkKKyAgICAgICAgICAgIHRlc3RfY2xhc3Nlcy5leHRlbmQodHlwZSh0ZXN0KSBmb3IgdGVzdCBpbiBzdWl0KQorICAgIGZvciBjbHMgaW4gdGVzdF9jbGFzc2VzOgogICAgICAgICBjbHMuX19uYW1lX18gPSBuYW1lICsgc3VmZml4CiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgc2V0VXBDbGFzcyhjbHNfLCBtb2R1bGU9bW9kdWxlKToKQEAgLTM5LDcgKzQ2LDYgQEAKICAgICAgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShjbHNfLl9zYXZlX3N5c19tb2R1bGVzKQogICAgICAgICBjbHMuc2V0VXBDbGFzcyA9IHNldFVwQ2xhc3MKICAgICAgICAgY2xzLnRlYXJEb3duQ2xhc3MgPSB0ZWFyRG93bkNsYXNzCi0gICAgICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQoY2xzKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CmluZGV4IDYyM2Q5OTIuLmYwYTQyOGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBzY3JpcHQgZm9yIHRoZSBkYm0ub3BlbiBmdW5jdGlvbiBiYXNlZCBvbiB0ZXN0ZHVtYmRibS5weSIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGdsb2IKIGltcG9ydCB0ZXN0LnN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CmluZGV4IGZmNjNjODguLjJkNzdmMDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGRibS5kdW1iIGFzIGR1bWJkYm0KIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKQEAgLTc4LDYgKzc5LDEyIEBACiAgICAgICAgIHNlbGYuaW5pdF9kYigpCiAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAncicpCiAgICAgICAgIHNlbGYucmVhZF9oZWxwZXIoZikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5Jyk6CisgICAgICAgICAgICBmW2InZyddID0gYid4JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknKToKKyAgICAgICAgICAgIGRlbCBmW2InYSddCiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZHVtYmRibV9rZXlzKHNlbGYpOgpAQCAtMTQ4LDcgKzE1NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2RpY3Rba2V5XSwgZltrZXldKQogCiAgICAgZGVmIGluaXRfZGIoc2VsZik6Ci0gICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAndycpCisgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIGZvciBrIGluIHNlbGYuX2RpY3Q6CiAgICAgICAgICAgICBmW2tdID0gc2VsZi5fZGljdFtrXQogICAgICAgICBmLmNsb3NlKCkKQEAgLTIzNCw2ICsyNDEsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJycpCiAKKyAgICBkZWYgdGVzdF93YXJuX29uX2lnbm9yZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIGZvciB2YWx1ZSBpbiAoJ3InLCAndycpOgorICAgICAgICAgICAgX2RlbGV0ZV9maWxlcygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGRhdGFiYXNlIGZpbGUgaXMgbWlzc2luZywgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW1hbnRpY3Mgb2YgdGhlICdjJyBmbGFnIHdpbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIHVzZWQuIik6CisgICAgICAgICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsIHZhbHVlKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2ZsYWcoc2VsZik6CisgICAgICAgIGZvciBmbGFnIGluICgneCcsICdyZicsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWcgbXVzdCBiZSBvbmUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidyJywgJ3cnLCAnYycsIG9yICduJyIpOgorICAgICAgICAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCBmbGFnKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIF9kZWxldGVfZmlsZXMoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKaW5kZXggYTc4MDhmNS4uMzA0YjMzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQpAQCAtMiw3ICsyLDcgQEAKIGdkYm0gPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5nbnUiKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmsKIAogCiBmaWxlbmFtZSA9IFRFU1RGTgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKaW5kZXggMjI5MTU2MS4uNDlmNDQyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CkBAIC0xLDggKzEsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5uZGJtIikgI3NraXAgaWYgbm90IHN1cHBvcnRlZAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KIGltcG9ydCBkYm0ubmRibQogZnJvbSBkYm0ubmRibSBpbXBvcnQgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDFhYTBiZjguLjYxN2EzN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTU1NCw2ICs1NTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnICAtNy44OScpKSwgJy03Ljg5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiICAzLjQ1Njc5ICAiKSksICczLjQ1Njc5JykKIAorICAgICAgICAjIHVuZGVyc2NvcmVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJzFfMy4zZTRfMCcpKSwgJzEuMzNFKzQxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMV8wXzBfMCcpKSwgJzEwMDAnKQorCiAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCiAgICAgICAgIGZvciBsZWFkIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgogICAgICAgICAgICAgZm9yIHRyYWlsIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgpAQCAtNTc4LDYgKzU4Miw5IEBACiAgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCiAKKyAgICAgICAgICAgICMgdW5kZXJzY29yZXMgZG9uJ3QgcHJldmVudCBlcnJvcnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxXzJfXHUwMDAwMyIpCisKICAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQpAQCAtNzcyLDYgKzc3OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAieHl6IikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICgxLCAieHl6IiwgLTI1KSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyMzQiLCAiNTY3OCIpCisgICAgICAgICMgbm8gd2hpdGVzcGFjZSBhbmQgdW5kZXJzY29yZSBzdHJpcHBpbmcgaXMgZG9uZSB3aXRoIHRoaXMgbWV0aG9kCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAiIDEyMzQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyXzM0IikKIAogICAgICAgICAjIHRvbyBtYW55IE5hTiBwYXlsb2FkIGRpZ2l0cwogICAgICAgICBuYy5wcmVjID0gMwpAQCAtMjA0Nyw2ICsyMDU3LDM5IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCisgICAgZGVmIHRlc3RfYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgIyBleGNlcHRpb25hbCBjYXNlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCctbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnc25hbjEyMycpKQorCisgICAgICAgIGZvciBleHAgaW4gcmFuZ2UoLTQsIDIpOgorICAgICAgICAgICAgZm9yIGNvZWZmIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgICAgIGZvciBzaWduIGluICcrJywgJy0nOgorICAgICAgICAgICAgICAgICAgICBkID0gRGVjaW1hbCgnJXMlZEUlZCcgJSAoc2lnbiwgY29lZmYsIGV4cCkpCisgICAgICAgICAgICAgICAgICAgIHBxID0gZC5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAgICAgICAgICAgcCwgcSA9IHBxCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayByZXR1cm4gdHlwZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocHEsIHR1cGxlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocCwgaW50KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocSwgaW50KQorCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgbm9ybWFsaXphdGlvbjogIHEgc2hvdWxkIGJlIHBvc2l0aXZlOworICAgICAgICAgICAgICAgICAgICAjIHAgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gcS4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5nY2QocCwgcSksIDEpCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IHAvcSBhY3R1YWxseSBnaXZlcyB0aGUgY29ycmVjdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwocCkgLyBEZWNpbWFsKHEpLCBkKQorCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CiAgICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCiAgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKaW5kZXggMThlMWRmMC4uY2U1MTdiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CkBAIC0yODksNyArMjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCksIHRhcmdldCkKIAotICAgIGRlZiB0ZXN0X2luc2VydF9idWdfMjQ5MTMoc2VsZik6CisgICAgZGVmIHRlc3RfaW5kZXhfYnVnXzI0OTEzKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ0EnICogMykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGkgPSBkLmluZGV4KCJIZWxsbyB3b3JsZCIsIDAsIDQpCkBAIC02MjIsMjAgKzYyMiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGQgPSBkZXF1ZShyYW5nZSgyMDApKQotICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhkLCBpKQotICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisgICAgICAgIGZvciBkIGluIGRlcXVlKHJhbmdlKDIwMCkpLCBkZXF1ZShyYW5nZSgyMDApLCAxMDApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlLmR1bXBzKGQsIGkpCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlKSwgbGlzdChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKLSMjICAgICAgICBkID0gZGVxdWUoJ2FiYycpCi0jIyAgICAgICAgZC5hcHBlbmQoZCkKLSMjICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotIyMgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBpKSkKLSMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0jIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKKyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBmb3IgZCBpbiBkZXF1ZSgnYWJjJyksIGRlcXVlKCdhYmMnLCAzKToKKyAgICAgICAgICAgIGQuYXBwZW5kKGQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIGkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZVstMV0pLCBpZChlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKICAgICAgICAgb3JpZyA9IGRlcXVlKHJhbmdlKDIwMCkpCkBAIC02OTYsNiArNjk4LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBmb3IgbWF4bGVuIGluIHJhbmdlKC0xLCA2KToKKyAgICAgICAgICAgICAgICBzID0gW3JhbmRvbS5yYW5kb20oKSBmb3IgaiBpbiByYW5nZShpKV0KKyAgICAgICAgICAgICAgICBkID0gZGVxdWUocykgaWYgbWF4bGVuID09IC0xIGVsc2UgZGVxdWUocywgbWF4bGVuKQorICAgICAgICAgICAgICAgIGUgPSBkLmNvcHkoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQubWF4bGVuLCBlLm1heGxlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKHggaXMgeSBmb3IgeCwgeSBpbiB6aXAoZCwgZSkpKQorCiAgICAgZGVmIHRlc3RfY29weV9tZXRob2Qoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtODQ1LDI0ICs4NTYsMjYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKSwgdHlwZShlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotIyMgICAgICAgIGQgPSBEZXF1ZSgnYWJjJykKLSMjICAgICAgICBkLmFwcGVuZChkKQotIyMKLSMjICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkKSkKLSMjICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZCksIHR5cGUoZSkpCi0jIyAgICAgICAgZGQgPSBkLnBvcCgpCi0jIyAgICAgICAgZWUgPSBlLnBvcCgpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZWUpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKLSMjCi0jIyAgICAgICAgZC54ID0gZAotIyMgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGUueCkpCi0jIwotIyMgICAgICAgIGQgPSBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkKQorICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWUoJ2FiYycpLCBEZXF1ZSgnYWJjJywgMyk6CisgICAgICAgICAgICAgICAgZC5hcHBlbmQoZCkKKworICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGUpLCBpZChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSksIHR5cGUoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm1heGxlbiwgZC5tYXhsZW4pCisgICAgICAgICAgICAgICAgZGQgPSBkLnBvcCgpCisgICAgICAgICAgICAgICAgZWUgPSBlLnBvcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlZSksIGlkKGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZCkKKworICAgICAgICAgICAgICAgIGQueCA9IGQKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlLngpLCBpZChlKSkKKworICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWVXaXRoQmFkSXRlcignYWJjJyksIERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycsIDIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkLCBwcm90bykKIAogICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnZ2FsbGFoYWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggNDE4ZjhkMi4uMWUwOGVkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC00NzM4LDExICs0NzM4LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKGFyZ3MsIGt3YXJncykKICAgICAgICAgb2JqID0gQzMoKQogICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgotICAgICAgICAgICAgaWYgcHJvdG8gPj0gNDoKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVkdWNlKHByb3RvLCBvYmosIGFyZ3MsIGt3YXJncykKLSAgICAgICAgICAgIGVsaWYgcHJvdG8gPj0gMjoKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBvYmouX19yZWR1Y2VfZXhfXyhwcm90bykKIAogICAgICAgICBjbGFzcyBDNDoKICAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfZXhfXyhzZWxmKToKQEAgLTUwNjEsMTAgKzUwNTgsNiBAQAogICAgICAgICAgICAgICAgIGt3YXJncyA9IGdldGF0dHIoY2xzLCAnS1dBUkdTJywge30pCiAgICAgICAgICAgICAgICAgb2JqID0gY2xzKCpjbHMuQVJHUywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICAgcHJvdG8gPSBwaWNrbGVfY29waWVyLnByb3RvCi0gICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQgYW5kIGhhc2F0dHIoY2xzLCAnX19nZXRuZXdhcmdzX2V4X18nKToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZV9jb3BpZXIuZHVtcHMob2JqLCBwcm90bykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBvYmpjb3B5ID0gcGlja2xlX2NvcGllci5jb3B5KG9iaikKICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaXNfY29weShvYmosIG9iamNvcHkpCiAgICAgICAgICAgICAgICAgIyBGb3IgdGVzdCBjbGFzc2VzIHRoYXQgc3VwcG9ydHMgdGhpcywgbWFrZSBzdXJlIHdlIGRpZG4ndCBnbwpAQCAtNTEyMywxMiArNTExNiwxNCBAQAogICAgICAgICBhLCBiID0gQSgpLCBCKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGEueCwgYS55LCBhLnosIGEudyA9IHJhbmdlKDQpCisgICAgICAgICMgSW5pdGlhbCBoYXNoIHRhYmxlIGNhbiBjb250YWluIGF0IG1vc3QgNSBlbGVtZW50cy4KKyAgICAgICAgIyBTZXQgNiBhdHRyaWJ1dGVzIHRvIGNhdXNlIGludGVybmFsIHJlc2l6aW5nLgorICAgICAgICBhLngsIGEueSwgYS56LCBhLncsIGEudiwgYS51ID0gcmFuZ2UoNikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBhMiA9IEEoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhhMikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGIudSwgYi52LCBiLncsIGIudCA9IHJhbmdlKDQpCisgICAgICAgIGIudSwgYi52LCBiLncsIGIudCwgYi5zLCBiLnIgPSByYW5nZSg2KQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGIpKSwgc3lzLmdldHNpemVvZih7fSkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggNTA2ZDFhYi4uYjg0ZDY0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xODIsNiArMTgyLDcgQEAKICAgICAgJ19faWFkZF9fJywKICAgICAgJ19faW11bF9fJywKICAgICAgJ19faW5pdF9fJywKKyAgICAgJ19faW5pdF9zdWJjbGFzc19fJywKICAgICAgJ19faXRlcl9fJywKICAgICAgJ19fbGVfXycsCiAgICAgICdfX2xlbl9fJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQppbmRleCA5NTU2MThhLi5jMTMzYzgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC01LDkgKzUsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc2VsZWN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcHl0aG9uX29ubHkKIAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAnZGV2cG9sbCcpIDoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndGVzdCB3b3JrcyBvbmx5IG9uIFNvbGFyaXMgT1MgZmFtaWx5JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCA2ZDY4ZTc2Li5jZDA3N2ZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0xLDEwICsxLDEzIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1pbXBvcnQgY29sbGVjdGlvbnMsIHJhbmRvbSwgc3RyaW5nCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLWltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04MzYsNiArODM5LDEwMCBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl90cmFja2VkKE15RGljdCgpKQogCisgICAgZGVmIG1ha2Vfc2hhcmVkX2tleV9kaWN0KHNlbGYsIG4pOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRpY3RzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBhID0gQygpCisgICAgICAgICAgICBhLngsIGEueSwgYS56ID0gMSwgMiwgMworICAgICAgICAgICAgZGljdHMuYXBwZW5kKGEuX19kaWN0X18pCisKKyAgICAgICAgcmV0dXJuIGRpY3RzCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBzZXRkZWZhdWx0KCkKKyAgICAgICAgYnJlYWtzIGluc2VydGlvbiBvcmRlciIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIGFbJ2EnXSA9IDEKKyAgICAgICAgc2l6ZV9hID0gc3lzLmdldHNpemVvZihhKQorICAgICAgICBhWydiJ10gPSAyCisgICAgICAgIGIuc2V0ZGVmYXVsdCgnYicsIDIpCisgICAgICAgIHNpemVfYiA9IHN5cy5nZXRzaXplb2YoYikKKyAgICAgICAgYlsnYSddID0gMQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzaXplX2IsIHNpemVfYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneScsICd6JywgJ2EnLCAnYiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onLCAnYicsICdhJ10pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX2RlbChzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGRlbCBkW2tdIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGRlbCBhWyd5J10gICMgc3BsaXQgdGFibGUgaXMgY29tYmluZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgYVsneSddCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2YoYSksIG9yaWdfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgICAgICAjIFR3byBkaWN0cyBoYXZlIGRpZmZlcmVudCBpbnNlcnRpb24gb3JkZXIuCisgICAgICAgIGFbJ3knXSA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onLCAneSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9wKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZC5wb3AoaykiIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgYS5wb3AoJ3knKSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGEucG9wKCd5JykKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgICAgICMgVHdvIGRpY3RzIGhhdmUgZGlmZmVyZW50IGluc2VydGlvbiBvcmRlci4KKyAgICAgICAgYVsneSddID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneicsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3BfcGVuZGluZyhzZWxmKToKKyAgICAgICAgIiIicG9wIGEgcGVuZGluZyBrZXkgaW4gYSBzcGxpdHRlZCB0YWJsZSBzaG91bGQgbm90IGNyYXNoIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgYVsnYSddID0gNAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGIucG9wKCdhJykKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9waXRlbShzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGQucG9waXRlbSgpIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGl0ZW0gPSBhLnBvcGl0ZW0oKSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0sICgneicsIDMpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGRlbCBhWyd6J10KKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCiAgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQpAQCAtOTU4LDYgKzEwNTUsMzcgQEAKICAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBsYW1iZGEgZDogaXRlcihkLnZhbHVlcygpKSwgZGljdCkKICAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBsYW1iZGEgZDogaXRlcihkLml0ZW1zKCkpLCBkaWN0KQogCisKK2NsYXNzIENBUElUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgVGVzdCBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKCkKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9nZXRpdGVtX2tub3duaGFzaChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGRpY3RfZ2V0aXRlbV9rbm93bmhhc2gKKworICAgICAgICBkID0geyd4JzogMSwgJ3knOiAyLCAneic6IDN9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCAneCcsIGhhc2goJ3gnKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCAneScsIGhhc2goJ3knKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCAneicsIGhhc2goJ3onKSksIDMpCisKKyAgICAgICAgIyBub3QgYSBkaWN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yLCBkaWN0X2dldGl0ZW1fa25vd25oYXNoLCBbXSwgMSwgaGFzaCgxKSkKKyAgICAgICAgIyBrZXkgZG9lcyBub3QgZXhpc3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGRpY3RfZ2V0aXRlbV9rbm93bmhhc2gsIHt9LCAxLCBoYXNoKDEpKQorCisgICAgICAgIGNsYXNzIEV4YyhFeGNlcHRpb24pOiBwYXNzCisgICAgICAgIGNsYXNzIEJhZEVxOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDcKKworICAgICAgICBrMSwgazIgPSBCYWRFcSgpLCBCYWRFcSgpCisgICAgICAgIGQgPSB7azE6IDF9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdF9nZXRpdGVtX2tub3duaGFzaChkLCBrMSwgaGFzaChrMSkpLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGMsIGRpY3RfZ2V0aXRlbV9rbm93bmhhc2gsIGQsIGsyLCBoYXNoKGsyKSkKKworCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIAogY2xhc3MgR2VuZXJhbE1hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CkBAIC05NjksNSArMTA5Nyw2IEBACiBjbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CiAgICAgdHlwZTJ0ZXN0ID0gRGljdAogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdF92ZXJzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzFmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weQpAQCAtMCwwICsxLDE4NiBAQAorIiIiCitUZXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQRVAgNTA5OiBkaWN0aW9uYXJ5IHZlcnNpb25uaW5nLgorIiIiCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisjIFBFUCA1MDkgaXMgaW1wbGVtZW50ZWQgaW4gQ1B5dGhvbiBidXQgb3RoZXIgUHl0aG9uIGltcGxlbWVudGF0aW9ucworIyBkb24ndCByZXF1aXJlIHRvIGltcGxlbWVudCBpdAorX3Rlc3RjYXBpID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorCisKK2NsYXNzIERpY3RWZXJzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHR5cGUydGVzdCA9IGRpY3QKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zID0gc2V0KCkKKyAgICAgICAgc2VsZi5kaWN0ID0gTm9uZQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fdW5pcXVlKHNlbGYsIG15ZGljdCk6CisgICAgICAgIHZlcnNpb24gPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odmVyc2lvbiwgc2VsZi5zZWVuX3ZlcnNpb25zKQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24pCisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX3VuaXF1ZShteWRpY3QpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHZlcnNpb24xID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24xKQorCisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKworICAgICAgICB2ZXJzaW9uMiA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uMiwgdmVyc2lvbjEsICJ2ZXJzaW9uIGNoYW5nZWQiKQorCisgICAgICAgIHJldHVybiAgcmVzdWx0CisKKyAgICBkZWYgbmV3X2RpY3Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBkID0gc2VsZi50eXBlMnRlc3QoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZCkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICAjIG5ldyBlbXB0eSBkaWN0aW9uYXJpZXMgbXVzdCBhbGwgaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBlbXB0eTEgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgZW1wdHkyID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIGVtcHR5MyA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgbm9uLWVtcHR5IGRpY3Rpb25hcmllcyBtdXN0IGFsc28gaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBub25lbXB0eTEgPSBzZWxmLm5ld19kaWN0KHg9J3gnKQorICAgICAgICBub25lbXB0eTIgPSBzZWxmLm5ld19kaWN0KHg9J3gnLCB5PSd5JykKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGE9MSwgYj0yKQorCisgICAgICAgIGQyID0gc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuY29weSkKKworICAgICAgICAjIGRpY3QuY29weSgpIG11c3QgY3JlYXRlIGEgZGljdGlvbmFyeSB3aXRoIGEgbmV3IHVuaXF1ZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBjcmVhdGluZyBuZXcga2V5cyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneCcsICd4JykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3knLCAneScpCisKKyAgICAgICAgIyBjaGFuZ2luZyB2YWx1ZXMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3gnLCAxKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneScsIDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX3NhbWVfdmFsdWUoc2VsZik6CisgICAgICAgIHZhbHVlID0gb2JqZWN0KCkKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIHRoZSBzYW1lIHZhbHVlIHdpdGggZGljdC5fX3NldGl0ZW1fXworICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gdGhlIHNhbWUgdmFsdWUgd2l0aCBkaWN0LnVwZGF0ZQorICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9dmFsdWUpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZSkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGQyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9lcXVhbChzZWxmKToKKyAgICAgICAgY2xhc3MgQWx3YXlzRXF1YWw6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHZhbHVlMSA9IEFsd2F5c0VxdWFsKCkKKyAgICAgICAgdmFsdWUyID0gQWx3YXlzRXF1YWwoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUxID09IHZhbHVlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2YWx1ZTEgIT0gdmFsdWUyKQorCisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlMSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gYSB2YWx1ZSBlcXVhbCB0byB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICAjIHdpdGggZGljdC5fX3NldGl0ZW1fXygpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZTIpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgIyB3aXRoIGRpY3QudXBkYXRlKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGtleT12YWx1ZTEpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZTIpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgd2l0aCBkaWN0LnNldGRlZmF1bHQoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUxJykKKworICAgICAgICAjIGRvbid0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUyJykKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgZGVsZXRpbmcgYSBrZXkgd2l0aCBkaWN0Ll9fZGVsaXRlbV9fKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX2RlbGl0ZW1fXywgJ2tleScpCisKKyAgICAgICAgIyBkb24ndCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9fZGVsaXRlbV9fLCAna2V5JykKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnBvcCwgJ2tleScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdAorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wb3AsICdrZXknKQorCisgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3BpdGVtKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQucG9waXRlbSkKKworICAgICAgICAjIHBvcGl0ZW0oKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucG9waXRlbSkKKworICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyB1cGRhdGUoKSBjYWxsaW5nIHdpdGggbm8gYXJndW1lbnQgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnVwZGF0ZSkKKworICAgICAgICAjIHVwZGF0ZSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9J25ldyB2YWx1ZScpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUgMycpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIGNsZWFyKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuY2xlYXIpCisKKyAgICAgICAgIyBjbGVhcigpIG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5jbGVhcikKKworCitjbGFzcyBEaWN0KGRpY3QpOgorICAgIHBhc3MKKworCitjbGFzcyBEaWN0U3VidHlwZVZlcnNpb25UZXN0cyhEaWN0VmVyc2lvblRlc3RzKToKKyAgICB0eXBlMnRlc3QgPSBEaWN0CisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKaW5kZXggM2M4Yjk1Yy4uMDg3MzA3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KICMgRm9yIHNjb3BlIHRlc3RpbmcuCiBnID0gIkdsb2JhbCB2YXJpYWJsZSIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCAwYzk5NjUyLi40OWE5ZTljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMjQ1LDYgKzI0NiwyNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpLAogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcywgZC5pdGVtcygpLCBwcm90bykKIAorICAgIGRlZiB0ZXN0X2FiY19yZWdpc3RyeShzZWxmKToKKyAgICAgICAgZCA9IGRpY3QoYT0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuS2V5c1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLlNpemVkKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuVmFsdWVzVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlbXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CmluZGV4IGFiOWRlYmYuLjE1NmI1MjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKQEAgLTEyMiwxNyArMTIyLDE3IEBACiAiIiIKIAogcGF0Y2g5MTQ1NzVfZnJvbTIgPSAiIiIKLVx0XHRMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCi0gIFx0XHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCi0gIFx0IFx0TGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCitcdFx0TGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgIFx0XHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgXHQgXHRMaW5lIDM6IHByZWNlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQogTGluZSA0OiAgXHRoYXMgZnJvbTpbc3N0XSB0bzpbc3NzXSBhZnRlciA6CiBMaW5lIDU6IGhhcyBmcm9tOlt0XSB0bzpbc3NdIGF0IGVuZFx0CiAiIiIKIAogcGF0Y2g5MTQ1NzVfdG8yID0gIiIiCi0gICAgTGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQotICAgIFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQotICAgICAgTGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCisgICAgTGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgICAgXHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgICAgIExpbmUgMzogcHJlY2VkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCiBMaW5lIDQ6ICAgaGFzIGZyb206W3NzdF0gdG86W3Nzc10gYWZ0ZXIgOgogTGluZSA1OiBoYXMgZnJvbTpbdF0gdG86W3NzXSBhdCBlbmQKICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCmluZGV4IGVhN2EyNGUuLjNlNmE3YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKQEAgLTM4Nyw5ICszODcsOSBAQAogICAgICAgICAKICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0IiBpZD0iZGlmZmxpYl9jaGdfdG85X18wIj48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X18wIj5mPC9hPjwvdGQ+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+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQogICAgICAgICAgIChQZGIpIHByaW50KHkpCiAgICAgICAgICAgMgpAQCAtMjc5OCw3ICsyNzk3LDYgQEAKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgiICAgICAgICdhYmMgZGVmJ1xuIikKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgiXG4iKQogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCcgICBcIlwiXCJcbicpCi0gICAgLi4uICAgICBpbXBvcnQgc2h1dGlsCiAgICAgLi4uICAgICByYzEsIG91dDEsIGVycjEgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZSgKICAgICAuLi4gICAgICAgICAgICAgJy1tJywgJ2RvY3Rlc3QnLCBmbiwgZm4yKQogICAgIC4uLiAgICAgcmMyLCBvdXQyLCBlcnIyID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKApAQCAtMjk0MiwxMiArMjk0MCwxMSBAQAogZGVmIHRlc3RfbWFpbigpOgogICAgICMgQ2hlY2sgdGhlIGRvY3Rlc3QgY2FzZXMgaW4gZG9jdGVzdCBpdHNlbGY6CiAgICAgcmV0ID0gc3VwcG9ydC5ydW5fZG9jdGVzdChkb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKKwogICAgICMgQ2hlY2sgdGhlIGRvY3Rlc3QgY2FzZXMgZGVmaW5lZCBoZXJlOgogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9kb2N0ZXN0CiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X2RvY3Rlc3QsIHZlcmJvc2l0eT1UcnVlKQogCi1pbXBvcnQgc3lzLCByZSwgaW8KLQogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCiAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2E1MDEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkKQEAgLTAsMCArMSwxNzggQEAKK2ltcG9ydCBkaXMKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdAorCisKK2RlZiBhYnNwYXRoKGZpbGVuYW1lKToKKyAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKGZpbmRmaWxlKGZpbGVuYW1lLCBzdWJkaXI9ImR0cmFjZWRhdGEiKSkKKworCitkZWYgbm9ybWFsaXplX3RyYWNlX291dHB1dChvdXRwdXQpOgorICAgICIiIk5vcm1hbGl6ZSBEVHJhY2Ugb3V0cHV0IGZvciBjb21wYXJpc29uLgorCisgICAgRFRyYWNlIGtlZXBzIGEgcGVyLUNQVSBidWZmZXIsIGFuZCB3aGVuIHNob3dpbmcgdGhlIGZpcmVkIHByb2JlcywgYnVmZmVycworICAgIGFyZSBjb25jYXRlbmF0ZWQuIFNvIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1vdmVzIG91ciB0aHJlYWQgYXJvdW5kLCB0aGUKKyAgICBzdHJhaWdodCByZXN1bHQgY2FuIGJlICJub24tY2F1c2FsIi4gU28gd2UgYWRkIHRpbWVzdGFtcHMgdG8gdGhlIHByb2JlCisgICAgZmlyaW5nLCBzb3J0IGJ5IHRoYXQgZmllbGQsIHRoZW4gc3RyaXAgaXQgZnJvbSB0aGUgb3V0cHV0IiIiCisKKyAgICAjIFdoZW4gY29tcGlsaW5nIHdpdGggJy0td2l0aC1weWRlYnVnJywgc3RyaXAgJ1sjIHJlZnNdJyBkZWJ1ZyBvdXRwdXQuCisgICAgb3V0cHV0ID0gcmUuc3ViKHIiXFtbMC05XSsgcmVmc1xdIiwgIiIsIG91dHB1dCkKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IFsKKyAgICAgICAgICAgIHJvdy5zcGxpdCgiXHQiKQorICAgICAgICAgICAgZm9yIHJvdyBpbiBvdXRwdXQuc3BsaXRsaW5lcygpCisgICAgICAgICAgICBpZiByb3cgYW5kIG5vdCByb3cuc3RhcnRzd2l0aCgnIycpCisgICAgICAgIF0KKyAgICAgICAgcmVzdWx0LnNvcnQoa2V5PWxhbWJkYSByb3c6IGludChyb3dbMF0pKQorICAgICAgICByZXN1bHQgPSBbcm93WzFdIGZvciByb3cgaW4gcmVzdWx0XQorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHJlc3VsdCkKKyAgICBleGNlcHQgKEluZGV4RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICJ0cmFjZXIgcHJvZHVjZWQgdW5wYXJzZWFibGUgb3V0cHV0Olxue30iLmZvcm1hdChvdXRwdXQpCisgICAgICAgICkKKworCitjbGFzcyBUcmFjZUJhY2tlbmQ6CisgICAgRVhURU5TSU9OID0gTm9uZQorICAgIENPTU1BTkQgPSBOb25lCisgICAgQ09NTUFORF9BUkdTID0gW10KKworICAgIGRlZiBydW5fY2FzZShzZWxmLCBuYW1lLCBvcHRpbWl6ZV9weXRob249Tm9uZSk6CisgICAgICAgIGFjdHVhbF9vdXRwdXQgPSBub3JtYWxpemVfdHJhY2Vfb3V0cHV0KHNlbGYudHJhY2VfcHl0aG9uKAorICAgICAgICAgICAgc2NyaXB0X2ZpbGU9YWJzcGF0aChuYW1lICsgc2VsZi5FWFRFTlNJT04pLAorICAgICAgICAgICAgcHl0aG9uX2ZpbGU9YWJzcGF0aChuYW1lICsgIi5weSIpLAorICAgICAgICAgICAgb3B0aW1pemVfcHl0aG9uPW9wdGltaXplX3B5dGhvbikpCisKKyAgICAgICAgd2l0aCBvcGVuKGFic3BhdGgobmFtZSArIHNlbGYuRVhURU5TSU9OICsgIi5leHBlY3RlZCIpKSBhcyBmOgorICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gZi5yZWFkKCkucnN0cmlwKCkKKworICAgICAgICByZXR1cm4gKGV4cGVjdGVkX291dHB1dCwgYWN0dWFsX291dHB1dCkKKworICAgIGRlZiBnZW5lcmF0ZV90cmFjZV9jb21tYW5kKHNlbGYsIHNjcmlwdF9maWxlLCBzdWJjb21tYW5kPU5vbmUpOgorICAgICAgICBjb21tYW5kID0gc2VsZi5DT01NQU5EICsgW3NjcmlwdF9maWxlXQorICAgICAgICBpZiBzdWJjb21tYW5kOgorICAgICAgICAgICAgY29tbWFuZCArPSBbIi1jIiwgc3ViY29tbWFuZF0KKyAgICAgICAgcmV0dXJuIGNvbW1hbmQKKworICAgIGRlZiB0cmFjZShzZWxmLCBzY3JpcHRfZmlsZSwgc3ViY29tbWFuZD1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHNlbGYuZ2VuZXJhdGVfdHJhY2VfY29tbWFuZChzY3JpcHRfZmlsZSwgc3ViY29tbWFuZCkKKyAgICAgICAgc3Rkb3V0LCBfID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKS5jb21tdW5pY2F0ZSgpCisgICAgICAgIHJldHVybiBzdGRvdXQKKworICAgIGRlZiB0cmFjZV9weXRob24oc2VsZiwgc2NyaXB0X2ZpbGUsIHB5dGhvbl9maWxlLCBvcHRpbWl6ZV9weXRob249Tm9uZSk6CisgICAgICAgIHB5dGhvbl9mbGFncyA9IFtdCisgICAgICAgIGlmIG9wdGltaXplX3B5dGhvbjoKKyAgICAgICAgICAgIHB5dGhvbl9mbGFncy5leHRlbmQoWyItTyJdICogb3B0aW1pemVfcHl0aG9uKQorICAgICAgICBzdWJjb21tYW5kID0gIiAiLmpvaW4oW3N5cy5leGVjdXRhYmxlXSArIHB5dGhvbl9mbGFncyArIFtweXRob25fZmlsZV0pCisgICAgICAgIHJldHVybiBzZWxmLnRyYWNlKHNjcmlwdF9maWxlLCBzdWJjb21tYW5kKQorCisgICAgZGVmIGFzc2VydF91c2FibGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYudHJhY2UoYWJzcGF0aCgiYXNzZXJ0X3VzYWJsZSIgKyBzZWxmLkVYVEVOU0lPTikpCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuc3RyaXAoKQorICAgICAgICBleGNlcHQgKEZpbGVOb3RGb3VuZEVycm9yLCBQZXJtaXNzaW9uRXJyb3IpIGFzIGZuZmU6CisgICAgICAgICAgICBvdXRwdXQgPSBzdHIoZm5mZSkKKyAgICAgICAgaWYgb3V0cHV0ICE9ICJwcm9iZTogc3VjY2VzcyI6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICAgICAgICAgICAie30oMSkgZmFpbGVkOiB7fSIuZm9ybWF0KHNlbGYuQ09NTUFORFswXSwgb3V0cHV0KQorICAgICAgICAgICAgKQorCisKK2NsYXNzIERUcmFjZUJhY2tlbmQoVHJhY2VCYWNrZW5kKToKKyAgICBFWFRFTlNJT04gPSAiLmQiCisgICAgQ09NTUFORCA9IFsiZHRyYWNlIiwgIi1xIiwgIi1zIl0KKworCitjbGFzcyBTeXN0ZW1UYXBCYWNrZW5kKFRyYWNlQmFja2VuZCk6CisgICAgRVhURU5TSU9OID0gIi5zdHAiCisgICAgQ09NTUFORCA9IFsic3RhcCIsICItZyJdCisKKworY2xhc3MgVHJhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB1bml0dGVzdC5UZXN0Q2FzZSBvcHRpb25zCisgICAgbWF4RGlmZiA9IE5vbmUKKworICAgICMgVHJhY2VUZXN0cyBvcHRpb25zCisgICAgYmFja2VuZCA9IE5vbmUKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5iYWNrZW5kLmFzc2VydF91c2FibGUoKQorCisgICAgZGVmIHJ1bl9jYXNlKHNlbGYsIG5hbWUpOgorICAgICAgICBhY3R1YWxfb3V0cHV0LCBleHBlY3RlZF9vdXRwdXQgPSBzZWxmLmJhY2tlbmQucnVuX2Nhc2UoCisgICAgICAgICAgICBuYW1lLCBvcHRpbWl6ZV9weXRob249c2VsZi5vcHRpbWl6ZV9weXRob24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX291dHB1dCwgZXhwZWN0ZWRfb3V0cHV0KQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fZW50cnlfcmV0dXJuKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jYXNlKCJjYWxsX3N0YWNrIikKKworICAgIGRlZiB0ZXN0X3ZlcmlmeV9jYWxsX29wY29kZXMoc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBvdXIgY2FsbCBzdGFjayB0ZXN0IGhpdHMgYWxsIGZ1bmN0aW9uIGNhbGwgb3Bjb2RlcyIiIgorCisgICAgICAgIG9wY29kZXMgPSBzZXQoWyJDQUxMX0ZVTkNUSU9OIiwgIkNBTExfRlVOQ1RJT05fRVgiLCAiQ0FMTF9GVU5DVElPTl9LVyJdKQorCisgICAgICAgIHdpdGggb3BlbihhYnNwYXRoKCJjYWxsX3N0YWNrLnB5IikpIGFzIGY6CisgICAgICAgICAgICBjb2RlX3N0cmluZyA9IGYucmVhZCgpCisKKyAgICAgICAgZGVmIGdldF9mdW5jdGlvbl9pbnN0cnVjdGlvbnMoZnVuY25hbWUpOgorICAgICAgICAgICAgIyBSZWNvbXBpbGUgd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb24gc2V0dGluZworICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoc291cmNlPWNvZGVfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9IjxzdHJpbmc+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9ImV4ZWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9c2VsZi5vcHRpbWl6ZV9weXRob24pCisKKyAgICAgICAgICAgIGZvciBjIGluIGNvZGUuY29fY29uc3RzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYywgdHlwZXMuQ29kZVR5cGUpIGFuZCBjLmNvX25hbWUgPT0gZnVuY25hbWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaXMuZ2V0X2luc3RydWN0aW9ucyhjKQorICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAgICAgZm9yIGluc3RydWN0aW9uIGluIGdldF9mdW5jdGlvbl9pbnN0cnVjdGlvbnMoJ3N0YXJ0Jyk6CisgICAgICAgICAgICBvcGNvZGVzLmRpc2NhcmQoaW5zdHJ1Y3Rpb24ub3BuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG9wY29kZXMpCisKKyAgICBkZWYgdGVzdF9nYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgiZ2MiKQorCisgICAgZGVmIHRlc3RfbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgibGluZSIpCisKKworY2xhc3MgRFRyYWNlTm9ybWFsVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IERUcmFjZUJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDAKKworCitjbGFzcyBEVHJhY2VPcHRpbWl6ZWRUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gRFRyYWNlQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMgorCisKK2NsYXNzIFN5c3RlbVRhcE5vcm1hbFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBTeXN0ZW1UYXBCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKworY2xhc3MgU3lzdGVtVGFwT3B0aW1pemVkVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IFN5c3RlbVRhcEJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDIKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KERUcmFjZU5vcm1hbFRlc3RzLCBEVHJhY2VPcHRpbWl6ZWRUZXN0cywgU3lzdGVtVGFwTm9ybWFsVGVzdHMsCisgICAgICAgICAgICAgICAgIFN5c3RlbVRhcE9wdGltaXplZFRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weSBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQppbmRleCA1MDgwZWM5Li4zYWUwOTBmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CkBAIC0xLDcgKzEsNiBAQAogIyBUZXN0IHRoZSBtb3N0IGR5bmFtaWMgY29ybmVyIGNhc2VzIG9mIFB5dGhvbidzIHJ1bnRpbWUgc2VtYW50aWNzLgogCiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHN3YXBfaXRlbSwgc3dhcF9hdHRyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQppbmRleCBhYWJhZDgzLi4yNWY4NmQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xNiwxNCArMTQsOCBAQAogICAgICAgICAjIFJ1biB0aGUgdGVzdGVyIGluIGEgc3ViLXByb2Nlc3MsIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBvbmx5IG9uZQogICAgICAgICAjIHRocmVhZCAoZm9yIHJlbGlhYmxlIHNpZ25hbCBkZWxpdmVyeSkuCiAgICAgICAgIHRlc3RlciA9IHN1cHBvcnQuZmluZGZpbGUoImVpbnRyX3Rlc3Rlci5weSIsIHN1YmRpcj0iZWludHJkYXRhIikKLQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCB0ZXN0ZXJdCi0gICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oYXJncykgYXMgcHJvYzoKLSAgICAgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Mud2FpdCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKHRlc3RlcikKKyAgICAgICAgIyB1c2UgLXUgdG8gdHJ5IHRvIGdldCB0aGUgZnVsbCBvdXRwdXQgaWYgdGhlIHRlc3QgaGFuZ3Mgb3IgY3Jhc2gKKyAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKCItdSIsIHRlc3RlcikKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKaW5kZXggZDRhMDNlZS4uODg4NzUxZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGVtYWlsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKaW5kZXggZjdhYzBlMy4uMjZlY2U2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpAQCAtNTgxLDcgKzU4MSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9xdW90ZWRfcGFyZW5zKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKLSAgICAgICAgICAgICcoZm9vXCkgXChcKWJhciknLCAnKGZvb1wpIFwoXCliYXIpJywgJyAnLCBbXSwgJycsIFsnZm9vKSAoKWJhciddKQorICAgICAgICAgICAgcicoZm9vXCkgXChcKWJhciknLCByJyhmb29cKSBcKFwpYmFyKScsICcgJywgW10sICcnLCBbJ2ZvbykgKCliYXInXSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X25vbl9wcmludGFibGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LApAQCAtNjI1LDcgKzYyNSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9xc19pbl9uZXN0ZWRfY29tbWVudChzZWxmKToKICAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAotICAgICAgICAgICAgJyhmb28gKGJcKSkpJywgJyhmb28gKGJcKSkpJywgJyAnLCBbXSwgJycsIFsnZm9vIChiXCkpJ10pCisgICAgICAgICAgICByJyhmb28gKGJcKSkpJywgcicoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbcidmb28gKGJcKSknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzJdLmNvbnRlbnQsICdiKScpCiAKICAgICAjIGdldF9jZndzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQppbmRleCBmOWNkN2Q5Li4xZTBjYWVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKQEAgLTMsNyArMyw2IEBACiAjIGVtYWlsIHBhY2thZ2UgdW5pdCB0ZXN0cyBmb3IgKG9wdGlvbmFsKSBBc2lhbiBjb2RlY3MKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCBhNTNjYzliLi5kYWExMjg1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CkBAIC0zMSw2ICszMSw3IEBACiBmcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKIGZyb20gZW1haWwubWltZS5tZXNzYWdlIGltcG9ydCBNSU1FTWVzc2FnZQogZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAorZnJvbSBlbWFpbC5taW1lLm5vbm11bHRpcGFydCBpbXBvcnQgTUlNRU5vbk11bHRpcGFydAogZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgZW5jb2RlcnMKQEAgLTIwNzcsNyArMjA3OCwxMyBAQAogLS09PT09PT09PT09PT09PT0wMDEyMzk0MTY0PT0tLSIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdldF9wYXlsb2FkKDApLmdldF9wYXlsb2FkKCksICdZWE5rWmc9PScpCiAKKyAgICBkZWYgdGVzdF9taW1lYmFzZV9kZWZhdWx0X3BvbGljeShzZWxmKToKKyAgICAgICAgbSA9IE1JTUVCYXNlKCdtdWx0aXBhcnQnLCAnbWl4ZWQnKQorICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuY29tcGF0MzIpCiAKKyAgICBkZWYgdGVzdF9taW1lYmFzZV9jdXN0b21fcG9saWN5KHNlbGYpOgorICAgICAgICBtID0gTUlNRUJhc2UoJ211bHRpcGFydCcsICdtaXhlZCcsIHBvbGljeT1lbWFpbC5wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmRlZmF1bHQpCiAKICMgVGVzdCBzb21lIGJhZGx5IGZvcm1hdHRlZCBtZXNzYWdlcwogY2xhc3MgVGVzdE5vbkNvbmZvcm1hbnQoVGVzdEVtYWlsQmFzZSk6CkBAIC0yNjc5LDYgKzI2ODYsMTkgQEAKICAgICAgICAgbXNnID0gTUlNRU11bHRpcGFydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtc2cuaXNfbXVsdGlwYXJ0KCkpCiAKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfZGVmYXVsdF9wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQoKQorICAgICAgICBtc2dbJ1RvJ10gPSAnYUBiLmNvbScKKyAgICAgICAgbXNnWydUbyddID0gJ2NAZC5jb20nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9hbGwoJ3RvJyksIFsnYUBiLmNvbScsICdjQGQuY29tJ10pCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfY3VzdG9tX3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gTUlNRU11bHRpcGFydChwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1zZ1snVG8nXSA9ICdhQGIuY29tJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgbXNnWydUbyddID0gJ2NAZC5jb20nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZXJlIG1heSBiZSBhdCBtb3N0IDEgVG8gaGVhZGVycyBpbiBhIG1lc3NhZ2UnKQogCiAjIEEgZ2VuZXJhbCB0ZXN0IG9mIHBhcnNlci0+bW9kZWwtPmdlbmVyYXRvciBpZGVtcG90ZW5jeS4gIElPVywgcmVhZCBhIG1lc3NhZ2UKICMgaW4sIHBhcnNlIGl0IGludG8gYSBtZXNzYWdlIG9iamVjdCB0cmVlLCB0aGVuIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHRyZWUsCkBAIC0zMDMyLDcgKzMwNTIsNyBAQAogCiAgICAgZGVmIHRlc3RfZXNjYXBlX2JhY2tzbGFzaGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigoJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLCAncGVyc29uQGRvbS5haW4nKSksCisgICAgICAgICAgICB1dGlscy5mb3JtYXRhZGRyKChyJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLCAncGVyc29uQGRvbS5haW4nKSksCiAgICAgICAgICAgICByJyJBcnRodXIgXFxCYWNrc2xhc2hcXCBGb29iYXIiIDxwZXJzb25AZG9tLmFpbj4nKQogICAgICAgICBhID0gcidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJwogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwpAQCAtMzMyOCw2ICszMzQ4LDI3IEBACiAgICAgICAgIGcuZmxhdHRlbihtc2csIGxpbmVzZXA9J1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgbXNndHh0KQogCisgICAgZGVmIHRlc3RfbWltZV9jbGFzc2VzX3BvbGljeV9hcmd1bWVudChzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnYXVkaW90ZXN0LmF1JywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBhdWRpb2RhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnUHlCYW5uZXIwNDguZ2lmJywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBiaW5kYXRhID0gZnAucmVhZCgpCisgICAgICAgIGNsYXNzZXMgPSBbCisgICAgICAgICAgICAoTUlNRUFwcGxpY2F0aW9uLCAoJycsKSksCisgICAgICAgICAgICAoTUlNRUF1ZGlvLCAoYXVkaW9kYXRhLCkpLAorICAgICAgICAgICAgKE1JTUVJbWFnZSwgKGJpbmRhdGEsKSksCisgICAgICAgICAgICAoTUlNRU1lc3NhZ2UsIChNZXNzYWdlKCksKSksCisgICAgICAgICAgICAoTUlNRU5vbk11bHRpcGFydCwgKCdtdWx0aXBhcnQnLCAnbWl4ZWQnKSksCisgICAgICAgICAgICAoTUlNRVRleHQsICgnJywpKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgY2xzLCBjb25zdHJ1Y3RvciBpbiBjbGFzc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xzPWNscy5fX25hbWVfXywgcG9saWN5PSdjb21wYXQzMicpOgorICAgICAgICAgICAgICAgIG0gPSBjbHMoKmNvbnN0cnVjdG9yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5jb21wYXQzMikKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNscz1jbHMuX19uYW1lX18sIHBvbGljeT0nZGVmYXVsdCcpOgorICAgICAgICAgICAgICAgIG0gPSBjbHMoKmNvbnN0cnVjdG9yLCBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmRlZmF1bHQpCisKIAogIyBUZXN0IHRoZSBpdGVyYXRvci9nZW5lcmF0b3JzCiBjbGFzcyBUZXN0SXRlcmF0b3JzKFRlc3RFbWFpbEJhc2UpOgpAQCAtMzQzNiw3ICszNDc3LDYgQEAKIGNsYXNzIFRlc3RGZWVkUGFyc2VycyhUZXN0RW1haWxCYXNlKToKIAogICAgIGRlZiBwYXJzZShzZWxmLCBjaHVua3MpOgotICAgICAgICBmcm9tIGVtYWlsLmZlZWRwYXJzZXIgaW1wb3J0IEZlZWRQYXJzZXIKICAgICAgICAgZmVlZHBhcnNlciA9IEZlZWRQYXJzZXIoKQogICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgogICAgICAgICAgICAgZmVlZHBhcnNlci5mZWVkKGNodW5rKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKaW5kZXggYjFjYmNlMi4uN2M4ODc3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICBkZWYgdGVzdF9zZXRfbWFuZ2xlX2Zyb21fdmlhX3BvbGljeShzZWxmKToKICAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICAgICAgICAgIFN1YmplY3Q6IHRlc3QgdGhhdAotICAgICAgICAgICAgIGZyb20gaXMgbWFuZ2VsZCBpbiB0aGUgYm9keSEKKyAgICAgICAgICAgICBmcm9tIGlzIG1hbmdsZWQgaW4gdGhlIGJvZHkhCiAKICAgICAgICAgICAgIEZyb20gdGltZSB0byB0aW1lIEkgd3JpdGUgYSByaHltZS4KICAgICAgICAgICAgICIiIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQppbmRleCA1NWVjZGVhLi5hZjgzNmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHR5cGVzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IHBvbGljeQogZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CmluZGV4IDQzNDUxNjIuLmYzYTU3ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CkBAIC03NjQsNiArNzY0LDI2IEBACiAgICAgICAgIG0uc2V0X2NvbnRlbnQoY29udGVudF9tYW5hZ2VyPWNtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ01JTUUtVmVyc2lvbiddLCAnMS4wJykKIAorICAgIGRlZiB0ZXN0X2FzX3N0cmluZ191c2VzX21heF9oZWFkZXJfbGVuZ3RoX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiBsb25nIGxpbmUnICsgJyBhYicqNTAgKyAnXG5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLCAzKQorCisgICAgZGVmIHRlc3RfYXNfc3RyaW5nX2FsbG93c19tYXhoZWFkZXJsZW4oc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiBsb25nIGxpbmUnICsgJyBhYicqNTAgKyAnXG5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKG1heGhlYWRlcmxlbj0wKS5zdHJpcCgpLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5hc19zdHJpbmcobWF4aGVhZGVybGVuPTM0KS5zdHJpcCgpLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgNikKKworICAgIGRlZiB0ZXN0X3N0cl9kZWZhdWx0c190b19wb2xpY3lfbWF4X2xpbmVfbGVuZ3RoKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdHIobSkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLCAzKQorCisgICAgZGVmIHRlc3Rfc3RyX2RlZmF1bHRzX3RvX3V0Zjgoc2VsZik6CisgICAgICAgIG0gPSBFbWFpbE1lc3NhZ2UoKQorICAgICAgICBtWydTdWJqZWN0J10gPSAndW5pY8O2ZGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG0pLCAnU3ViamVjdDogdW5pY8O2ZGVcblxuJykKKwogCiBjbGFzcyBUZXN0TUlNRVBhcnQoVGVzdEVtYWlsTWVzc2FnZUJhc2UsIFRlc3RFbWFpbEJhc2UpOgogICAgICMgRG9pbmcgdGhlIGZ1bGwgdGVzdCBydW4gaGVyZSBtYXkgc2VlbSBhIGJpdCByZWR1bmRhbnQsIHNpbmNlIHRoZSB0d28KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CmluZGV4IDhkZGMxNzYzLi4wNmM4NjQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBlbWFpbAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZSwgRW1haWxNZXNzYWdlCiBmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAogZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKIApAQCAtMzksMzggKzM5LDcxIEBACiAgICAgICAgICMgVGhlIHVuaWNvZGUgbGluZSBzcGxpdHRlciBzcGxpdHMgb24gdW5pY29kZSBsaW5lYnJlYWtzLCB3aGljaCBhcmUKICAgICAgICAgIyBtb3JlIG51bWVyb3VzIHRoYW4gYWxsb3dlZCBieSB0aGUgZW1haWwgUkZDczsgbWFrZSBzdXJlIHdlIGFyZSBvbmx5CiAgICAgICAgICMgc3BsaXR0aW5nIG9uIHRob3NlIHR3by4KLSAgICAgICAgbXNnID0gc2VsZi5wYXJzZXIoCi0gICAgICAgICAgICAiTmV4dC1MaW5lOiBub3RceDg1YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJOdWxsOiBub3RceDAwYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJWZXJ0aWNhbC1UYWI6IG5vdFx2YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJGb3JtLUZlZWQ6IG5vdFxmYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJGaWxlLVNlcGFyYXRvcjogbm90XHgxQ2Jyb2tlblxyXG4iCi0gICAgICAgICAgICAiR3JvdXAtU2VwYXJhdG9yOiBub3RceDFEYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJSZWNvcmQtU2VwYXJhdG9yOiBub3RceDFFYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJMaW5lLVNlcGFyYXRvcjogbm90XHUyMDI4YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJQYXJhZ3JhcGgtU2VwYXJhdG9yOiBub3RcdTIwMjlicm9rZW5cclxuIgotICAgICAgICAgICAgIlxyXG4iLAotICAgICAgICAgICAgcG9saWN5PWRlZmF1bHQsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuaXRlbXMoKSwgWwotICAgICAgICAgICAgKCJOZXh0LUxpbmUiLCAibm90XHg4NWJyb2tlbiIpLAotICAgICAgICAgICAgKCJOdWxsIiwgIm5vdFx4MDBicm9rZW4iKSwKLSAgICAgICAgICAgICgiVmVydGljYWwtVGFiIiwgIm5vdFx2YnJva2VuIiksCi0gICAgICAgICAgICAoIkZvcm0tRmVlZCIsICJub3RcZmJyb2tlbiIpLAotICAgICAgICAgICAgKCJGaWxlLVNlcGFyYXRvciIsICJub3RceDFDYnJva2VuIiksCi0gICAgICAgICAgICAoIkdyb3VwLVNlcGFyYXRvciIsICJub3RceDFEYnJva2VuIiksCi0gICAgICAgICAgICAoIlJlY29yZC1TZXBhcmF0b3IiLCAibm90XHgxRWJyb2tlbiIpLAotICAgICAgICAgICAgKCJMaW5lLVNlcGFyYXRvciIsICJub3RcdTIwMjhicm9rZW4iKSwKLSAgICAgICAgICAgICgiUGFyYWdyYXBoLVNlcGFyYXRvciIsICJub3RcdTIwMjlicm9rZW4iKSwKLSAgICAgICAgXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoKSwgIiIpCisgICAgICAgIGZvciBwYXJzZXIgaW4gc2VsZi5wYXJzZXJzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFyc2VyPXBhcnNlci5fX25hbWVfXyk6CisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKAorICAgICAgICAgICAgICAgICAgICAiTmV4dC1MaW5lOiBub3RceDg1YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIk51bGw6IG5vdFx4MDBicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiVmVydGljYWwtVGFiOiBub3RcdmJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJGb3JtLUZlZWQ6IG5vdFxmYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkZpbGUtU2VwYXJhdG9yOiBub3RceDFDYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkdyb3VwLVNlcGFyYXRvcjogbm90XHgxRGJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJSZWNvcmQtU2VwYXJhdG9yOiBub3RceDFFYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkxpbmUtU2VwYXJhdG9yOiBub3RcdTIwMjhicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiUGFyYWdyYXBoLVNlcGFyYXRvcjogbm90XHUyMDI5YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBwb2xpY3k9ZGVmYXVsdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuaXRlbXMoKSwgWworICAgICAgICAgICAgICAgICAgICAoIk5leHQtTGluZSIsICJub3RceDg1YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiTnVsbCIsICJub3RceDAwYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiVmVydGljYWwtVGFiIiwgIm5vdFx2YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiRm9ybS1GZWVkIiwgIm5vdFxmYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiRmlsZS1TZXBhcmF0b3IiLCAibm90XHgxQ2Jyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkdyb3VwLVNlcGFyYXRvciIsICJub3RceDFEYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiUmVjb3JkLVNlcGFyYXRvciIsICJub3RceDFFYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiTGluZS1TZXBhcmF0b3IiLCAibm90XHUyMDI4YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiUGFyYWdyYXBoLVNlcGFyYXRvciIsICJub3RcdTIwMjlicm9rZW4iKSwKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICIiKQorCisgICAgY2xhc3MgTXlNZXNzYWdlKEVtYWlsTWVzc2FnZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2ZhY3Rvcnlfb25fcG9saWN5KHNlbGYpOgorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIE15UG9saWN5ID0gZGVmYXVsdC5jbG9uZShtZXNzYWdlX2ZhY3Rvcnk9c2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKCJUbzogZm9vXG5cbnRlc3QiLCBwb2xpY3k9TXlQb2xpY3kpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpCisKKyAgICBkZWYgdGVzdF9mYWN0b3J5X2FyZ19vdmVycmlkZXNfcG9saWN5KHNlbGYpOgorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIE15UG9saWN5ID0gZGVmYXVsdC5jbG9uZShtZXNzYWdlX2ZhY3Rvcnk9c2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKCJUbzogZm9vXG5cbnRlc3QiLCBNZXNzYWdlLCBwb2xpY3k9TXlQb2xpY3kpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZywgTWVzc2FnZSkKKworIyBQbGF5IHNvbWUgZ2FtZXMgdG8gZ2V0IG5pY2Ugb3V0cHV0IGluIHN1YlRlc3QuICBUaGlzIGNvZGUgY291bGQgYmUgY2xlYXJlcgorIyBpZiBzdGF0aWNtZXRob2Qgc3VwcG9ydGVkIF9fbmFtZV9fLgorCitkZWYgbWVzc2FnZV9mcm9tX2ZpbGUocywgKmFyZ3MsICoqa3cpOgorICAgIGYgPSBpby5TdHJpbmdJTyhzKQorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmLCAqYXJncywgKiprdykKIAogY2xhc3MgVGVzdFBhcnNlcihUZXN0UGFyc2VyQmFzZSwgVGVzdEVtYWlsQmFzZSk6Ci0gICAgcGFyc2VyID0gc3RhdGljbWV0aG9kKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcpCisgICAgcGFyc2VycyA9IChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nLCBtZXNzYWdlX2Zyb21fZmlsZSkKKworZGVmIG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCAqYXJncywgKiprdyk6CisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzLmVuY29kZSgpLCAqYXJncywgKiprdykKKworZGVmIG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShzLCAqYXJncywgKiprdyk6CisgICAgZiA9IGlvLkJ5dGVzSU8ocy5lbmNvZGUoKSkKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsICphcmdzLCAqKmt3KQogCiBjbGFzcyBUZXN0Qnl0ZXNQYXJzZXIoVGVzdFBhcnNlckJhc2UsIFRlc3RFbWFpbEJhc2UpOgotICAgIGRlZiBwYXJzZXIoc2VsZiwgcywgKmFyZ3MsICoqa3cpOgotICAgICAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKHMuZW5jb2RlKCksICphcmdzLCAqKmt3KQorICAgIHBhcnNlcnMgPSAobWVzc2FnZV9mcm9tX2J5dGVzLCBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CmluZGV4IDcwYWM0ZGIuLjhmZWNiOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydCBlbWFpbC5wb2xpY3kKIGltcG9ydCBlbWFpbC5wYXJzZXIKIGltcG9ydCBlbWFpbC5nZW5lcmF0b3IKK2ltcG9ydCBlbWFpbC5tZXNzYWdlCiBmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXJyZWdpc3RyeQogCiBkZWYgbWFrZV9kZWZhdWx0cyhiYXNlX2RlZmF1bHRzLCBkaWZmZXJlbmNlcyk6CkBAIC0yMyw2ICsyNCw3IEBACiAgICAgICAgICdjdGVfdHlwZSc6ICAgICAgICAgICAgICAgICAnOGJpdCcsCiAgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKICAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIFRydWUsCisgICAgICAgICdtZXNzYWdlX2ZhY3RvcnknOiAgICAgICAgICBOb25lLAogICAgICAgICB9CiAgICAgIyBUaGVzZSBkZWZhdWx0IHZhbHVlcyBhcmUgdGhlIG9uZXMgc2V0IG9uIGVtYWlsLnBvbGljeS5kZWZhdWx0LgogICAgICMgSWYgYW55IG9mIHRoZXNlIGRlZmF1bHRzIGNoYW5nZSwgdGhlIGRvY3MgbXVzdCBiZSB1cGRhdGVkLgpAQCAtMzQsNiArMzYsNyBAQAogICAgICAgICAncmVmb2xkX3NvdXJjZSc6ICAgICAgICAgICAgJ2xvbmcnLAogICAgICAgICAnY29udGVudF9tYW5hZ2VyJzogICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmNvbnRlbnRfbWFuYWdlciwKICAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAnbWVzc2FnZV9mYWN0b3J5JzogICAgICAgICAgZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UsCiAgICAgICAgIH0pCiAKICAgICAjIEZvciBlYWNoIHBvbGljeSB1bmRlciB0ZXN0LCB3ZSBnaXZlIGhlcmUgd2hhdCB3ZSBleHBlY3QgdGhlIGRlZmF1bHRzIHRvCkBAIC02MiwyMCArNjUsMjIgQEAKICAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKICAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBvbGljeSwgYXR0ciksIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNoYW5nZSB7fSBkb2NzL2RvY3N0cmluZ3MgaWYgZGVmYXVsdHMgaGF2ZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocG9saWN5PXBvbGljeSwgYXR0cj1hdHRyKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBvbGljeSwgYXR0ciksIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiKS5mb3JtYXQocG9saWN5KSkKIAogICAgIGRlZiB0ZXN0X2FsbF9hdHRyaWJ1dGVzX2NvdmVyZWQoc2VsZik6CiAgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBhdHRyIGluIGRpcihwb2xpY3kpOgotICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSwgYXR0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5GdW5jdGlvblR5cGUpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocG9saWN5PXBvbGljeSwgYXR0cj1hdHRyKToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKIAogICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgpAQCAtMjM3LDYgKzI0Miw5IEBACiAgICAgIyB3aW5zKSwgYnV0IHRoYXQgdGhlIG9yZGVyIHN0aWxsIHdvcmtzIChyaWdodCBvdmVycmlkZXMgbGVmdCkuCiAKIAorY2xhc3MgVGVzdEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKwogY2xhc3MgVGVzdFBvbGljeVByb3BhZ2F0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgVGhlIGFic3RyYWN0IG1ldGhvZHMgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBidXQgbm90IGJ5IHRoZSB3cmFwcGVyCkBAIC0yNDQsNDAgKzI1Miw0MCBAQAogICAgICMgcG9saWN5IHdhcyBhY3R1YWxseSBwcm9wYWdhdGVkIGFsbCB0aGUgd2F5IHRvIGZlZWRwYXJzZXIuCiAgICAgY2xhc3MgTXlQb2xpY3koZW1haWwucG9saWN5LlBvbGljeSk6CiAgICAgICAgIGRlZiBiYWRtZXRob2Qoc2VsZiwgKmFyZ3MsICoqa3cpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ0ZXN0IikKKyAgICAgICAgICAgIHJhaXNlIFRlc3RFeGNlcHRpb24oInRlc3QiKQogICAgICAgICBmb2xkID0gZm9sZF9iaW5hcnkgPSBoZWFkZXJfZmV0Y2hfcGFyc2VyID0gYmFkbWV0aG9kCiAgICAgICAgIGhlYWRlcl9zb3VyY2VfcGFyc2UgPSBoZWFkZXJfc3RvcmVfcGFyc2UgPSBiYWRtZXRob2QKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9zdHJpbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IHRlc3RcblxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYnl0ZXMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhiIlN1YmplY3Q6IHRlc3RcblxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9maWxlKHNlbGYpOgogICAgICAgICBmID0gaW8uU3RyaW5nSU8oJ1N1YmplY3Q6IHRlc3RcblxuJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKGInU3ViamVjdDogdGVzdFxuXG4nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICAjIFRoZXNlIGFyZSByZWR1bmRhbnQsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIGJsYWNrLWJveCBjb21wbGV0ZW5lc3MuCiAKICAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CiAgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBwLnBhcnNlc3RyKCdTdWJqZWN0OiB0ZXN0XG5cbicpCiAKICAgICBkZWYgdGVzdF9ieXRlc19wYXJzZXIoc2VsZik6CiAgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIHAucGFyc2VieXRlcyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKIAogICAgICMgTm93IHRoYXQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCBhbGwgdGhlIHBhcnNlIG1ldGhvZHMgZ2V0IHRoZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQppbmRleCBhNzhjYTE0Li45YjA0YzE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQpAQCAtOSwxOSArOSw2IEBACiBpbXBvcnQgZW5zdXJlcGlwCiBpbXBvcnQgZW5zdXJlcGlwLl91bmluc3RhbGwKIAotIyBwaXAgY3VycmVudGx5IHJlcXVpcmVzIHNzbCBzdXBwb3J0LCBzbyB3ZSBlbnN1cmUgd2UgaGFuZGxlCi0jIGl0IGJlaW5nIG1pc3NpbmcgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTc0NCkKLWVuc3VyZXBpcF9ub19zc2wgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiZW5zdXJlcGlwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPVsic3NsIl0pCi10cnk6Ci0gICAgaW1wb3J0IHNzbAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGRlZiByZXF1aXJlc191c2FibGVfcGlwKGYpOgotICAgICAgICBkZWNvID0gdW5pdHRlc3Quc2tpcChlbnN1cmVwaXAuX01JU1NJTkdfU1NMX01FU1NBR0UpCi0gICAgICAgIHJldHVybiBkZWNvKGYpCi1lbHNlOgotICAgIGRlZiByZXF1aXJlc191c2FibGVfcGlwKGYpOgotICAgICAgICByZXR1cm4gZgogCiBjbGFzcyBUZXN0RW5zdXJlUGlwVmVyc2lvbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTQ3LDcgKzM0LDYgQEAKIAogY2xhc3MgVGVzdEJvb3RzdHJhcChFbnN1cmVwaXBNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9iYXNpY19ib290c3RyYXBwaW5nKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKCkKIApAQCAtNjIsNyArNDgsNiBAQAogICAgICAgICBhZGRpdGlvbmFsX3BhdGhzID0gc2VsZi5ydW5fcGlwLmNhbGxfYXJnc1swXVsxXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRpdGlvbmFsX3BhdGhzKSwgMikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX3Jvb3Qoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAocm9vdD0iL2Zvby9iYXIvIikKIApAQCAtNzUsNyArNjAsNiBAQAogICAgICAgICAgICAgdW5pdHRlc3QubW9jay5BTlksCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX3VzZXIoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAodXNlcj1UcnVlKQogCkBAIC04Nyw3ICs3MSw2IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfdXBncmFkZShzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCh1cGdyYWRlPVRydWUpCiAKQEAgLTk5LDcgKzgyLDYgQEAKICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suQU5ZLAogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF92ZXJib3NpdHlfMShzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCh2ZXJib3NpdHk9MSkKIApAQCAtMTExLDcgKzkzLDYgQEAKICAgICAgICAgICAgIHVuaXR0ZXN0Lm1vY2suQU5ZLAogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfd2l0aF92ZXJib3NpdHlfMihzZWxmKToKICAgICAgICAgZW5zdXJlcGlwLmJvb3RzdHJhcCh2ZXJib3NpdHk9MikKIApAQCAtMTIzLDcgKzEwNCw2IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfdmVyYm9zaXR5XzMoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAodmVyYm9zaXR5PTMpCiAKQEAgLTEzNSwxNyArMTE1LDE0IEBACiAgICAgICAgICAgICB1bml0dGVzdC5tb2NrLkFOWSwKICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9ib290c3RyYXBwaW5nX3dpdGhfcmVndWxhcl9pbnN0YWxsKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9zX2Vudmlyb25bIkVOU1VSRVBJUF9PUFRJT05TIl0sICJpbnN0YWxsIikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX2FsdF9pbnN0YWxsKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKGFsdGluc3RhbGw9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9zX2Vudmlyb25bIkVOU1VSRVBJUF9PUFRJT05TIl0sICJhbHRpbnN0YWxsIikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwcGluZ193aXRoX2RlZmF1bHRfcGlwKHNlbGYpOgogICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKGRlZmF1bHRfcGlwPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkVOU1VSRVBJUF9PUFRJT05TIiwgc2VsZi5vc19lbnZpcm9uKQpAQCAtMTU1LDcgKzEzMiw2IEBACiAgICAgICAgICAgICBlbnN1cmVwaXAuYm9vdHN0cmFwKGFsdGluc3RhbGw9VHJ1ZSwgZGVmYXVsdF9waXA9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9waXBfZW52aXJvbm1lbnRfdmFyaWFibGVzX3JlbW92ZWQoc2VsZik6CiAgICAgICAgICMgZW5zdXJlcGlwIGRlbGliZXJhdGVseSBpZ25vcmVzIGFsbCBwaXAgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTczNCBmb3IgZGV0YWlscwpAQCAtMTYzLDcgKzEzOSw2IEBACiAgICAgICAgIGVuc3VyZXBpcC5ib290c3RyYXAoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJQSVBfVEhJU19TSE9VTERfR09fQVdBWSIsIHNlbGYub3NfZW52aXJvbikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfcGlwX2NvbmZpZ19maWxlX2Rpc2FibGVkKHNlbGYpOgogICAgICAgICAjIGVuc3VyZXBpcCBkZWxpYmVyYXRlbHkgaWdub3JlcyB0aGUgcGlwIGNvbmZpZyBmaWxlCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDA1MyBmb3IgZGV0YWlscwpAQCAtMjA1LDcgKzE4MCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKIAogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF91bmluc3RhbGwoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKICAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsX2hlbHBlcigpCkBAIC0yMTcsNyArMTkxLDYgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF91bmluc3RhbGxfd2l0aF92ZXJib3NpdHlfMShzZWxmKToKICAgICAgICAgd2l0aCBmYWtlX3BpcCgpOgogICAgICAgICAgICAgZW5zdXJlcGlwLl91bmluc3RhbGxfaGVscGVyKHZlcmJvc2l0eT0xKQpAQCAtMjI5LDcgKzIwMiw2IEBACiAgICAgICAgICAgICBdCiAgICAgICAgICkKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfdW5pbnN0YWxsX3dpdGhfdmVyYm9zaXR5XzIoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKICAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsX2hlbHBlcih2ZXJib3NpdHk9MikKQEAgLTI0MSw3ICsyMTMsNiBAQAogICAgICAgICAgICAgXQogICAgICAgICApCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X3VuaW5zdGFsbF93aXRoX3ZlcmJvc2l0eV8zKHNlbGYpOgogICAgICAgICB3aXRoIGZha2VfcGlwKCk6CiAgICAgICAgICAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIodmVyYm9zaXR5PTMpCkBAIC0yNTMsNyArMjI0LDYgQEAKICAgICAgICAgICAgIF0KICAgICAgICAgKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9waXBfZW52aXJvbm1lbnRfdmFyaWFibGVzX3JlbW92ZWQoc2VsZik6CiAgICAgICAgICMgZW5zdXJlcGlwIGRlbGliZXJhdGVseSBpZ25vcmVzIGFsbCBwaXAgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTczNCBmb3IgZGV0YWlscwpAQCAtMjYyLDcgKzIzMiw2IEBACiAgICAgICAgICAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJQSVBfVEhJU19TSE9VTERfR09fQVdBWSIsIHNlbGYub3NfZW52aXJvbikKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfcGlwX2NvbmZpZ19maWxlX2Rpc2FibGVkKHNlbGYpOgogICAgICAgICAjIGVuc3VyZXBpcCBkZWxpYmVyYXRlbHkgaWdub3JlcyB0aGUgcGlwIGNvbmZpZyBmaWxlCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDA1MyBmb3IgZGV0YWlscwpAQCAtMjcxLDQ0ICsyNDAsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLm9zX2Vudmlyb25bIlBJUF9DT05GSUdfRklMRSJdLCBvcy5kZXZudWxsKQogCiAKLWNsYXNzIFRlc3RNaXNzaW5nU1NMKEVuc3VyZXBpcE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHN5cy5tb2R1bGVzWyJlbnN1cmVwaXAiXSA9IGVuc3VyZXBpcF9ub19zc2wKLSAgICAgICAgQHNlbGYuYWRkQ2xlYW51cAotICAgICAgICBkZWYgcmVzdG9yZV9tb2R1bGUoKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzWyJlbnN1cmVwaXAiXSA9IGVuc3VyZXBpcAotICAgICAgICBzdXBlcigpLnNldFVwKCkKLQotICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcF9yZXF1aXJlc19zc2woc2VsZik6Ci0gICAgICAgIHNlbGYub3NfZW52aXJvblsiUElQX1RISVNfU0hPVUxEX1NUQVkiXSA9ICJ0ZXN0IGZvZGRlciIKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwgInJlcXVpcmVzIFNTTC9UTFMiKToKLSAgICAgICAgICAgIGVuc3VyZXBpcF9ub19zc2wuYm9vdHN0cmFwKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQotICAgICAgICBzZWxmLmFzc2VydEluKCJQSVBfVEhJU19TSE9VTERfU1RBWSIsIHNlbGYub3NfZW52aXJvbikKLQotICAgIGRlZiB0ZXN0X3VuaW5zdGFsbF9yZXF1aXJlc19zc2woc2VsZik6Ci0gICAgICAgIHNlbGYub3NfZW52aXJvblsiUElQX1RISVNfU0hPVUxEX1NUQVkiXSA9ICJ0ZXN0IGZvZGRlciIKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFJ1bnRpbWVFcnJvciwgInJlcXVpcmVzIFNTTC9UTFMiKToKLSAgICAgICAgICAgIHdpdGggZmFrZV9waXAoKToKLSAgICAgICAgICAgICAgICBlbnN1cmVwaXBfbm9fc3NsLl91bmluc3RhbGxfaGVscGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQotICAgICAgICBzZWxmLmFzc2VydEluKCJQSVBfVEhJU19TSE9VTERfU1RBWSIsIHNlbGYub3NfZW52aXJvbikKLQotICAgIGRlZiB0ZXN0X21haW5fZXhpdHNfZWFybHlfd2l0aF93YXJuaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6Ci0gICAgICAgICAgICBlbnN1cmVwaXBfbm9fc3NsLl9tYWluKFsiLS12ZXJzaW9uIl0pCi0gICAgICAgIHdhcm5pbmcgPSBzdGRlcnIuZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YXJuaW5nLmVuZHN3aXRoKCJyZXF1aXJlcyBTU0wvVExTIiksIHdhcm5pbmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5ydW5fcGlwLmNhbGxlZCkKLQogIyBCYXNpYyB0ZXN0aW5nIG9mIHRoZSBtYWluIGZ1bmN0aW9ucyBhbmQgdGhlaXIgYXJndW1lbnQgcGFyc2luZwogCiBFWFBFQ1RFRF9WRVJTSU9OX09VVFBVVCA9ICJwaXAgIiArIGVuc3VyZXBpcC5fUElQX1ZFUlNJT04KIAogY2xhc3MgVGVzdEJvb3RzdHJhcHBpbmdNYWluRnVuY3Rpb24oRW5zdXJlcGlwTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIEByZXF1aXJlc191c2FibGVfcGlwCiAgICAgZGVmIHRlc3RfYm9vdHN0cmFwX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCk6CkBAIC0zMTcsNyArMjU0LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIEVYUEVDVEVEX1ZFUlNJT05fT1VUUFVUKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucnVuX3BpcC5jYWxsZWQpCiAKLSAgICBAcmVxdWlyZXNfdXNhYmxlX3BpcAogICAgIGRlZiB0ZXN0X2Jhc2ljX2Jvb3RzdHJhcHBpbmcoc2VsZik6CiAgICAgICAgIGVuc3VyZXBpcC5fbWFpbihbXSkKIApAQCAtMzQyLDcgKzI3OCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBFWFBFQ1RFRF9WRVJTSU9OX09VVFBVVCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQogCi0gICAgQHJlcXVpcmVzX3VzYWJsZV9waXAKICAgICBkZWYgdGVzdF9iYXNpY191bmluc3RhbGwoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKICAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsLl9tYWluKFtdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CmluZGV4IDYzMGIxNTUuLjJiM2JmZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKQEAgLTMsOSArMywxMCBAQAogaW1wb3J0IHB5ZG9jCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0sIEVudW1NZXRhLCB1bmlxdWUKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bSwgRW51bU1ldGEsIEZsYWcsIEludEZsYWcsIHVuaXF1ZSwgYXV0bwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMsIFBpY2tsaW5nRXJyb3IsIEhJR0hFU1RfUFJPVE9DT0wKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIGZvciBwaWNrbGUgdGVzdHMKIHRyeToKQEAgLTMyLDYgKzMzLDE0IEBACiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKICAgICBGbG9hdFN0b29nZXMgPSBleGMKIAordHJ5OgorICAgIGNsYXNzIEZsYWdTdG9vZ2VzKEZsYWcpOgorICAgICAgICBMQVJSWSA9IDEKKyAgICAgICAgQ1VSTFkgPSAyCisgICAgICAgIE1PRSA9IDMKK2V4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgIEZsYWdTdG9vZ2VzID0gZXhjCisKICMgZm9yIHBpY2tsZSB0ZXN0IGFuZCBzdWJjbGFzcyB0ZXN0cwogdHJ5OgogICAgIGNsYXNzIFN0ckVudW0oc3RyLCBFbnVtKToKQEAgLTEwNCw2ICsxMTMsNyBAQAogICAgICAgICAgICAgICAgICdfXycsICdfX18nLCAnX19fXycsICdfX19fXycsKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW51bS5faXNfZHVuZGVyKHMpKQogCisjIHRlc3RzCiAKIGNsYXNzIFRlc3RFbnVtKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjgzLDYgKzI5MywyOCBAQAogICAgICAgICAgICAgY2xhc3MgV3JvbmcoRW51bSk6CiAgICAgICAgICAgICAgICAgX2FueV9uYW1lXyA9IDkKIAorICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgICMgcGxhaW4gRW51bSBtZW1iZXJzIGFyZSBhbHdheXMgVHJ1ZQorICAgICAgICBjbGFzcyBMb2dpYyhFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSBUcnVlCisgICAgICAgICAgICBmYWxzZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTG9naWMuZmFsc2UpCisgICAgICAgICMgdW5sZXNzIG92ZXJyaWRkZW4KKyAgICAgICAgY2xhc3MgUmVhbExvZ2ljKEVudW0pOgorICAgICAgICAgICAgdHJ1ZSA9IFRydWUKKyAgICAgICAgICAgIGZhbHNlID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYm9vbChzZWxmLl92YWx1ZV8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSZWFsTG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSZWFsTG9naWMuZmFsc2UpCisgICAgICAgICMgbWl4ZWQgRW51bXMgZGVwZW5kIG9uIG1peGVkLWluIHR5cGUKKyAgICAgICAgY2xhc3MgSW50TG9naWMoaW50LCBFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSAxCisgICAgICAgICAgICBmYWxzZSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEludExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoSW50TG9naWMuZmFsc2UpCisKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKICAgICAgICAgU2Vhc29uID0gc2VsZi5TZWFzb24KICAgICAgICAgc2VsZi5hc3NlcnRJbihTZWFzb24uQVVUVU1OLCBTZWFzb24pCkBAIC0xNTQ3LDYgKzE1NzksNzAxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGFiZWxsZWRMaXN0LnVucHJvY2Vzc2VkLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExhYmVsbGVkTGlzdCgxKSwgTGFiZWxsZWRMaXN0LnVucHJvY2Vzc2VkKQogCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXIoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgMykKKworICAgIGRlZiB0ZXN0X2F1dG9fbmFtZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAnYmx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsICdncmVlbicpCisKKyAgICBkZWYgdGVzdF9hdXRvX25hbWVfaW5oZXJpdChzZWxmKToKKyAgICAgICAgY2xhc3MgQXV0b05hbWVFbnVtKEVudW0pOgorICAgICAgICAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgIGNsYXNzIENvbG9yKEF1dG9OYW1lRW51bSk6CisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgJ2JsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAnZ3JlZW4nKQorCisgICAgZGVmIHRlc3RfYXV0b19nYXJiYWdlKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9ICdyZWQnCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMSkKKworICAgIGRlZiB0ZXN0X2F1dG9fZ2FyYmFnZV9jb3JyZWN0ZWQoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gJ3JlZCcKKyAgICAgICAgICAgIGJsdWUgPSAyCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDMpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVfYXV0byhzZWxmKToKKyAgICAgICAgY2xhc3MgRHVwZXMoRW51bSk6CisgICAgICAgICAgICBmaXJzdCA9IHByaW1lcm8gPSBhdXRvKCkKKyAgICAgICAgICAgIHNlY29uZCA9IGF1dG8oKQorICAgICAgICAgICAgdGhpcmQgPSBhdXRvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbRHVwZXMuZmlyc3QsIER1cGVzLnNlY29uZCwgRHVwZXMudGhpcmRdLCBsaXN0KER1cGVzKSkKKworCitjbGFzcyBUZXN0T3JkZXIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2FtZV9tZW1iZXJzKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgIGJsdWUgPSAzCisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnNfd3Jvbmdfb3JkZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKworICAgIGRlZiB0ZXN0X29yZGVyX2hhc19leHRyYV9tZW1iZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUgcHVycGxlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworCisgICAgZGVmIHRlc3Rfb3JkZXJfaGFzX2V4dHJhX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUgcHVycGxlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworICAgIGRlZiB0ZXN0X2VudW1faGFzX2V4dHJhX21lbWJlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBwdXJwbGUgPSA0CisKKyAgICBkZWYgdGVzdF9lbnVtX2hhc19leHRyYV9tZW1iZXJzX3dpdGhfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHB1cnBsZSA9IDQKKyAgICAgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKworY2xhc3MgVGVzdEZsYWcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIG9mIHRoZSBGbGFncy4iIiIKKworICAgIGNsYXNzIFBlcm0oRmxhZyk6CisgICAgICAgIFIsIFcsIFggPSA0LCAyLCAxCisKKyAgICBjbGFzcyBPcGVuKEZsYWcpOgorICAgICAgICBSTyA9IDAKKyAgICAgICAgV08gPSAxCisgICAgICAgIFJXID0gMgorICAgICAgICBBQyA9IDMKKyAgICAgICAgQ0UgPSAxPDwxOQorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiksICdQZXJtLlInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlcpLCAnUGVybS5XJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5YKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSgwKSksICdQZXJtLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5SKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uVyksICdQZXJtLlJ8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlgpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVykpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjApKSwgJ1Blcm0uUnxXfFgnKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyksICdPcGVuLlJPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyksICdPcGVuLldPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5BQyksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08gfCBPcGVuLkNFKSwgJ09wZW4uQ0V8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5STyksICdPcGVuLkNFfEFDfFJXfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uV08pLCAnT3Blbi5DRXxSVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLkFDKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnT3Blbi5SVycpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIpLCAnPFBlcm0uUjogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5XKSwgJzxQZXJtLlc6IDI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uWCksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnPFBlcm0uUnxXfFg6IDc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0oMCkpLCAnPFBlcm0uMDogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uUiksICc8UGVybS5XfFg6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlcpLCAnPFBlcm0uUnxYOiA1PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5YKSwgJzxQZXJtLlJ8VzogNj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH4wKSksICc8UGVybS5SfFd8WDogNz4nKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8pLCAnPE9wZW4uUk86IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08pLCAnPE9wZW4uV086IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uQUMpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8gfCBPcGVuLkNFKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08gfCBPcGVuLkNFKSwgJzxPcGVuLkNFfFdPOiA1MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLlJPKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiA1MjQyOTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLldPKSwgJzxPcGVuLkNFfFJXOiA1MjQyOTA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLkFDKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uV08gfCBPcGVuLkNFKSksICc8T3Blbi5SVzogMj4nKQorCisgICAgZGVmIHRlc3Rfb3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLCBQZXJtKGkudmFsdWUgfCBqLnZhbHVlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyB8IE9wZW4uQ0UsIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9hbmQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBmb3IgaiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIFJXWCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUldYICYgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gJiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfeG9yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSBeIFBlcm0oMCksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBlcm0oMCkgXiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyBeIE9wZW4uQ0UsIE9wZW4uQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5DRSBeIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUofmkpLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+fmksIGkpCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKH5+aSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uV08gJiB+T3Blbi5XTywgT3Blbi5STykKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoT3Blbi5XT3xPcGVuLkNFKSAmIH5PcGVuLldPLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChmLnZhbHVlKSwgYm9vbChmKSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZyhzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAnUiBXIFgnKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgJ1IgVyBYJywgc3RhcnQ9OCkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSA4PDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsIFsnUicsICdXJywgJ1gnXSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9mcm9tX2RpY3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgT3JkZXJlZERpY3QoKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoRmxhZ1N0b29nZXMsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBGbGFnU3Rvb2dlcworICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgRmxhZ1N0b29nZXMuQ1VSTFl8RmxhZ1N0b29nZXMuTU9FKQorICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgRmxhZ1N0b29nZXMpCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSLCBXLCBYID0gUGVybQorICAgICAgICBSVyA9IFIgfCBXCisgICAgICAgIFJYID0gUiB8IFgKKyAgICAgICAgV1ggPSBXIHwgWAorICAgICAgICBSV1ggPSBSIHwgVyB8IFgKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFcgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoWCBpbiBSVykKKworICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDQpCisKKyAgICBkZWYgdGVzdF9hdXRvX251bWJlcl9nYXJiYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnSW52YWxpZCBGbGFnIHZhbHVlOiAubm90IGFuIGludC4nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEZsYWcpOgorICAgICAgICAgICAgICAgIHJlZCA9ICdub3QgYW4gaW50JworICAgICAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKworICAgIGRlZiB0ZXN0X2Nhc2NhZGluZ19mYWlsdXJlKHNlbGYpOgorICAgICAgICBjbGFzcyBCaXphcnJlKEZsYWcpOgorICAgICAgICAgICAgYyA9IDMKKyAgICAgICAgICAgIGQgPSA0CisgICAgICAgICAgICBmID0gNgorICAgICAgICAjIEJpemFycmUuYyB8IEJpemFycmUuZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICI1IGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICI1IGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIyIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIyIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIxIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIxIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAxKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2F1dG8oc2VsZik6CisgICAgICAgIGNsYXNzIER1cGVzKEVudW0pOgorICAgICAgICAgICAgZmlyc3QgPSBwcmltZXJvID0gYXV0bygpCisgICAgICAgICAgICBzZWNvbmQgPSBhdXRvKCkKKyAgICAgICAgICAgIHRoaXJkID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0R1cGVzLmZpcnN0LCBEdXBlcy5zZWNvbmQsIER1cGVzLnRoaXJkXSwgbGlzdChEdXBlcykpCisKKyAgICBkZWYgdGVzdF9iaXphcnJlKHNlbGYpOgorICAgICAgICBjbGFzcyBCaXphcnJlKEZsYWcpOgorICAgICAgICAgICAgYiA9IDMKKyAgICAgICAgICAgIGMgPSA0CisgICAgICAgICAgICBkID0gNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQml6YXJyZSg3KSksICc8Qml6YXJyZS5kfGN8YjogNz4nKQorCisKK2NsYXNzIFRlc3RJbnRGbGFnKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvZiB0aGUgSW50RmxhZ3MuIiIiCisKKyAgICBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgICAgICBYID0gMSA8PCAwCisgICAgICAgIFcgPSAxIDw8IDEKKyAgICAgICAgUiA9IDEgPDwgMgorCisgICAgY2xhc3MgT3BlbihJbnRGbGFnKToKKyAgICAgICAgUk8gPSAwCisgICAgICAgIFdPID0gMQorICAgICAgICBSVyA9IDIKKyAgICAgICAgQUMgPSAzCisgICAgICAgIENFID0gMTw8MTkKKworICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZiwgUGVybSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGYudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFBlcm0uVyB8IFBlcm0uWCwgUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUGVybS5XIHwgUGVybS5YLCAzKQorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZiwgT3BlbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGYudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKE9wZW4uV08gfCBPcGVuLlJXLCBPcGVuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPcGVuLldPIHwgT3Blbi5SVywgMykKKworCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiksICdQZXJtLlInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlcpLCAnUGVybS5XJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5YKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgOCksICdQZXJtLjh8UicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oMCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSg4KSksICdQZXJtLjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5SKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uVyksICdQZXJtLlJ8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlgpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVykpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJ1Blcm0uLTgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IDgpKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+MCkpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjgpKSwgJ1Blcm0uUnxXfFgnKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyksICdPcGVuLlJPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyksICdPcGVuLldPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5BQyksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08gfCBPcGVuLkNFKSwgJ09wZW4uQ0V8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuKDQpKSwgJ09wZW4uNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLlJPKSwgJ09wZW4uQ0V8QUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5XTyksICdPcGVuLkNFfFJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uQUMpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJ09wZW4uQUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uV08gfCBPcGVuLkNFKSksICdPcGVuLlJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbih+NCkpLCAnT3Blbi5DRXxBQ3xSV3xXTycpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIpLCAnPFBlcm0uUjogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5XKSwgJzxQZXJtLlc6IDI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uWCksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnPFBlcm0uUnxXfFg6IDc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IDgpLCAnPFBlcm0uOHxSOiAxMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSgwKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDgpKSwgJzxQZXJtLjg6IDg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlIpLCAnPFBlcm0uV3xYOiAtNT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uVyksICc8UGVybS5SfFg6IC0zPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5YKSwgJzxQZXJtLlJ8VzogLTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XKSksICc8UGVybS5YOiAtNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJzxQZXJtLi04OiAtOD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCA4KSksICc8UGVybS5XfFg6IC0xMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+MCkpLCAnPFBlcm0uUnxXfFg6IC0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH44KSksICc8UGVybS5SfFd8WDogLTk+JykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPKSwgJzxPcGVuLlJPOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPKSwgJzxPcGVuLldPOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLkFDKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPIHwgT3Blbi5DRSksICc8T3Blbi5DRTogNTI0Mjg4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPIHwgT3Blbi5DRSksICc8T3Blbi5DRXxXTzogNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuKDQpKSwgJzxPcGVuLjQ6IDQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLlJPKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiAtMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uV08pLCAnPE9wZW4uQ0V8Ulc6IC0yPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5BQyksICc8T3Blbi5DRTogLTQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJzxPcGVuLkFDfFJXfFdPOiAtNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uV08gfCBPcGVuLkNFKSksICc8T3Blbi5SVzogLTUyNDI5MD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbih+NCkpLCAnPE9wZW4uQ0V8QUN8Uld8V086IC01PicpCisKKyAgICBkZWYgdGVzdF9vcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgfCBqLCBpLnZhbHVlIHwgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgfCBqLCBpLnZhbHVlIHwgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqIHwgaSwgaiB8IGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiB8IGkpLnZhbHVlLCBqIHwgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiB8IGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IDAsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDAgfCBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyB8IE9wZW4uQ0UsIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9hbmQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBmb3IgaiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpICYgaiwgaS52YWx1ZSAmIGoudmFsdWUsICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqLnZhbHVlLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgJiBqKSwgUGVybSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpICYgaiwgaS52YWx1ZSAmIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiAmIGksIGogJiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogJiBpKS52YWx1ZSwgaiAmIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogJiBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIGksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiA3LCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyg3ICYgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gJiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfeG9yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSBeIGosIGkudmFsdWUgXiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSBeIGosIGkudmFsdWUgXiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogXiBpLCBqIF4gaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqIF4gaSkudmFsdWUsIGogXiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqIF4gaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgXiAwLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcygwIF4gaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gXiBPcGVuLkNFLCBPcGVuLkNFKQorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uQ0UgXiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfaW52ZXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+aSwgfmkudmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh+aSkudmFsdWUsIH5pLnZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKH5pKSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwofn5pLCBpKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh+fmksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLldPICYgfk9wZW4uV08sIE9wZW4uUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoKE9wZW4uV098T3Blbi5DRSkgJiB+T3Blbi5XTywgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZyhzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAnUiBXIFgnKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgJ1IgVyBYJywgc3RhcnQ9OCkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSA4PDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsIFsnUicsICdXJywgJ1gnXSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9mcm9tX2RpY3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgT3JkZXJlZERpY3QoKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFIsIFcsIFggPSBQZXJtCisgICAgICAgIFJXID0gUiB8IFcKKyAgICAgICAgUlggPSBSIHwgWAorICAgICAgICBXWCA9IFcgfCBYCisgICAgICAgIFJXWCA9IFIgfCBXIHwgWAorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFIgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVyBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShYIGluIFJXKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChmLnZhbHVlKSwgYm9vbChmKSkKIAogY2xhc3MgVGVzdFVuaXF1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE3MzksNSArMjQ2Niw0NyBAQAogICAgICAgICBpZiBmYWlsZWQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoInJlc3VsdCBkb2VzIG5vdCBlcXVhbCBleHBlY3RlZCwgc2VlIHByaW50IGFib3ZlIikKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZW51bSkKKworCisjIFRoZXNlIGFyZSB1bm9yZGVyZWQgaGVyZSBvbiBwdXJwb3NlIHRvIGVuc3VyZSB0aGF0IGRlY2xhcmF0aW9uIG9yZGVyCisjIG1ha2VzIG5vIGRpZmZlcmVuY2UuCitDT05WRVJUX1RFU1RfTkFNRV9EID0gNQorQ09OVkVSVF9URVNUX05BTUVfQyA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0IgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9BID0gNSAgIyBUaGlzIG9uZSBzaG91bGQgc29ydCBmaXJzdC4KK0NPTlZFUlRfVEVTVF9OQU1FX0UgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9GID0gNQorCitjbGFzcyBUZXN0SW50RW51bUNvbnZlcnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2NvbnZlcnRfdmFsdWVfbG9va3VwX3ByaW9yaXR5KHNlbGYpOgorICAgICAgICB0ZXN0X3R5cGUgPSBlbnVtLkludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAgICAgJ1VuaXR0ZXN0Q29udmVydCcsICd0ZXN0LnRlc3RfZW51bScsCisgICAgICAgICAgICAgICAgZmlsdGVyPWxhbWJkYSB4OiB4LnN0YXJ0c3dpdGgoJ0NPTlZFUlRfVEVTVF8nKSkKKyAgICAgICAgIyBXZSBkb24ndCB3YW50IHRoZSByZXZlcnNlIGxvb2t1cCB2YWx1ZSB0byB2YXJ5IHdoZW4gdGhlcmUgYXJlCisgICAgICAgICMgbXVsdGlwbGUgcG9zc2libGUgbmFtZXMgZm9yIGEgZ2l2ZW4gdmFsdWUuICBJdCBzaG91bGQgYWx3YXlzCisgICAgICAgICMgcmVwb3J0IHRoZSBmaXJzdCBsZXhpZ3JhcGhpY2FsIG5hbWUgaW4gdGhhdCBjYXNlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZSg1KS5uYW1lLCAnQ09OVkVSVF9URVNUX05BTUVfQScpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0KHNlbGYpOgorICAgICAgICB0ZXN0X3R5cGUgPSBlbnVtLkludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAgICAgJ1VuaXR0ZXN0Q29udmVydCcsICd0ZXN0LnRlc3RfZW51bScsCisgICAgICAgICAgICAgICAgZmlsdGVyPWxhbWJkYSB4OiB4LnN0YXJ0c3dpdGgoJ0NPTlZFUlRfVEVTVF8nKSkKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0ZXN0X3R5cGUgaGFzIGFsbCBvZiB0aGUgZGVzaXJlZCBuYW1lcyBhbmQgdmFsdWVzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9GLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9BKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9CLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9DLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9ELCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9FLCA1KQorICAgICAgICAjIEVuc3VyZSB0aGF0IHRlc3RfdHlwZSBvbmx5IHBpY2tlZCB1cCBuYW1lcyBtYXRjaGluZyB0aGUgZmlsdGVyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtuYW1lIGZvciBuYW1lIGluIGRpcih0ZXN0X3R5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWVbMDoyXSBub3QgaW4gKCdDTycsICdfXycpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbXSwgbXNnPSdOYW1lcyBvdGhlciB0aGFuIENPTlZFUlRfVEVTVF8qIGZvdW5kLicpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMjYzMGNmMi4uZTQ1NWFkZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTIyMyw3ICsyMjMsNyBAQAogICAgIGRlZiB0ZXN0X29iam1ldGhvZHMoc2VsZik6CiAgICAgICAgICMgT2JqZWN0cyBtdXN0IGhhdmUgX19sZW5fXygpIGFuZCBfX2dldGl0ZW1fXygpIGltcGxlbWVudGVkLgogICAgICAgICBjbGFzcyBOb0xlbihvYmplY3QpOgotICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYpOiByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOiByZXR1cm4gMQogICAgICAgICBubCA9IE5vTGVuKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgbmwpCiAKQEAgLTIzMiw2ICsyMzIsMTMgQEAKICAgICAgICAgbmdpID0gTm9HZXRJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgbmdpKQogCisgICAgICAgIGNsYXNzIEJsb2NrZWQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKTogcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMgorICAgICAgICAgICAgX19yZXZlcnNlZF9fID0gTm9uZQorICAgICAgICBiID0gQmxvY2tlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIGIpCisKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CiAgICAgICAgIGZvciBkYXRhIGluICdhYmMnLCByYW5nZSg1KSwgdHVwbGUoZW51bWVyYXRlKCdhYmMnKSksIHJhbmdlKDEsMTcsNSk6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShyZXZlcnNlZChkYXRhKSwgbGlzdChkYXRhKVs6Oi0xXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CmluZGV4IGE3MzU5ZTkuLmE3YWZmOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQpAQCAtMjgsNyArMjgsNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGlmIG5vdCBoYXNhdHRyKHNlbGVjdCwgImVwb2xsIik6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3Qgd29ya3Mgb25seSBvbiBMaW51eCAyLjYiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKaW5kZXggN2IwZDQ2NS4uODY0OTU5NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgZXJybm8KIGZyb20gZXJybm8gaW1wb3J0IEVFWElTVApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CmluZGV4IDk2YzNhNDguLjQ4Mzc5MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKQEAgLTExMDksNyArMTEwOSw2IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICBJbXBvcnRFcnJvcihpbnZhbGlkPSdrZXl3b3JkJykKIAotICAgICAgICBtc2cgPSAiJ2ludmFsaWR8YW5vdGhlcicgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgSW1wb3J0RXJyb3IoJ3Rlc3QnLCBpbnZhbGlkPSdrZXl3b3JkJywgYW5vdGhlcj1UcnVlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKaW5kZXggOWNiMGQzOC4uMDQzZGYwMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQpAQCAtMjM4LDYgKzIzOCwxMSBAQAogICAgICAgLi4uCiAgICAgVHlwZUVycm9yOiBoKCkgYXJndW1lbnQgYWZ0ZXIgKiBtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgZnVuY3Rpb24KIAorICAgID4+PiBoKCpbMV0sICpoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogaCgpIGFyZ3VtZW50IGFmdGVyICogbXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90IGZ1bmN0aW9uCisKICAgICA+Pj4gZGlyKCpoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQppbmRleCAxNTYyZWVjLi5iZGQ4ZDFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzY3JpcHRfaGVscGVyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlciwgaXNfYW5kcm9pZCwgcmVxdWlyZXNfYW5kcm9pZF9sZXZlbAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudApAQCAtMjMsNiArMjMsNyBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogVElNRU9VVCA9IDAuNQorTVNfV0lORE9XUyA9IChvcy5uYW1lID09ICdudCcpCiAKIGRlZiBleHBlY3RlZF90cmFjZWJhY2sobGluZW5vMSwgbGluZW5vMiwgaGVhZGVyLCBtaW5fY291bnQ9MSk6CiAgICAgcmVnZXggPSBoZWFkZXIKQEAgLTQxLDYgKzQyLDEwIEBACiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoZmlsZW5hbWUpCiAKK2RlZiByZXF1aXJlc19yYWlzZSh0ZXN0KToKKyAgICByZXR1cm4gKHRlc3QgaWYgbm90IGlzX2FuZHJvaWQgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXF1aXJlc19hbmRyb2lkX2xldmVsKDI0LCAncmFpc2UoKSBpcyBidWdneScpKHRlc3QpKQorCiBjbGFzcyBGYXVsdEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgY29kZSwgZmlsZW5hbWU9Tm9uZSwgZmQ9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtNTgsOCArNjMsOSBAQAogICAgICAgICAgICAgcGFzc19mZHMuYXBwZW5kKGZkKQogICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgogICAgICAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUsIHBhc3NfZmRzPXBhc3NfZmRzKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICB3aXRoIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCiAgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRvdXQpCiAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQogICAgICAgICBpZiBmaWxlbmFtZToKQEAgLTczLDE0ICs3OSwxMSBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKGZkLCAicmIiLCBjbG9zZWZkPUZhbHNlKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQotICAgICAgICBvdXRwdXQgPSByZS5zdWIoJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdDdXJyZW50IHRocmVhZCBYWFgnLAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0bGluZXMoKSwgZXhpdGNvZGUKIAotICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSk6CisgICAgZGVmIGNoZWNrX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiwKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSwga25vd19jdXJyZW50X3RocmVhZD1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIHRoYXQgdGhlIGZhdWx0IGhhbmRsZXIgZm9yIGZhdGFsIGVycm9ycyBpcyBlbmFibGVkIGFuZCBjaGVjayB0aGUKICAgICAgICAgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgb3V0cHV0LgpAQCAtODgsMTkgKzkxLDIyIEBACiAgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgYWxsX3RocmVhZHM6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgWFhYIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKKyAgICAgICAgICAgIGlmIGtub3dfY3VycmVudF90aHJlYWQ6CisgICAgICAgICAgICAgICAgaGVhZGVyID0gJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSAnVGhyZWFkIDB4WzAtOWEtZl0rJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKLSAgICAgICAgcmVnZXggPSAiIiIKLSAgICAgICAgICAgIF5GYXRhbCBQeXRob24gZXJyb3I6IHtuYW1lfQorICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrJworICAgICAgICByZWdleCA9IHIiIiIKKyAgICAgICAgICAgIF57ZmF0YWxfZXJyb3J9CiAKLSAgICAgICAgICAgIHtoZWFkZXJ9OgorICAgICAgICAgICAge2hlYWRlcn0gXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiA8bW9kdWxlPgogICAgICAgICAgICAgIiIiCiAgICAgICAgIHJlZ2V4ID0gZGVkZW50KHJlZ2V4LmZvcm1hdCgKICAgICAgICAgICAgIGxpbmVubz1saW5lX251bWJlciwKLSAgICAgICAgICAgIG5hbWU9bmFtZV9yZWdleCwKLSAgICAgICAgICAgIGhlYWRlcj1yZS5lc2NhcGUoaGVhZGVyKSkpLnN0cmlwKCkKKyAgICAgICAgICAgIGZhdGFsX2Vycm9yPWZhdGFsX2Vycm9yLAorICAgICAgICAgICAgaGVhZGVyPWhlYWRlcikpLnN0cmlwKCkKICAgICAgICAgaWYgb3RoZXJfcmVnZXg6CiAgICAgICAgICAgICByZWdleCArPSAnfCcgKyBvdGhlcl9yZWdleAogICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lPWZpbGVuYW1lLCBmZD1mZCkKQEAgLTEwOCwxOCArMTE0LDM4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKIAorICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ0ZhdGFsIFB5dGhvbiBlcnJvcjogJXMnICUgbmFtZV9yZWdleAorICAgICAgICBzZWxmLmNoZWNrX2Vycm9yKGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiprdykKKworICAgIGRlZiBjaGVja193aW5kb3dzX2V4Y2VwdGlvbihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ1dpbmRvd3MgZmF0YWwgZXhjZXB0aW9uOiAlcycgJSBuYW1lX3JlZ2V4CisgICAgICAgIHNlbGYuY2hlY2tfZXJyb3IoY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqKmt3KQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnYWl4JyksCiAgICAgICAgICAgICAgICAgICAgICAidGhlIGZpcnN0IHBhZ2Ugb2YgbWVtb3J5IGlzIGEgbWFwcGVkIHJlYWQtb25seSBvbiBBSVgiKQogICAgIGRlZiB0ZXN0X3JlYWRfbnVsbChzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKLSAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQotICAgICAgICAgICAgIiIiLAotICAgICAgICAgICAgMywKLSAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCi0gICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisgICAgICAgIGlmIG5vdCBNU19XSU5ET1dTOgorICAgICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCisgICAgICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdCcKKyAgICAgICAgICAgICAgICAgICAgJ3xCdXMgZXJyb3InCisgICAgICAgICAgICAgICAgICAgICd8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja193aW5kb3dzX2V4Y2VwdGlvbigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICdhY2Nlc3MgdmlvbGF0aW9uJykKIAorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X3NpZ3NlZ3Yoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCkBAIC0xMjksNiArMTU1LDE3IEBACiAgICAgICAgICAgICAzLAogICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBIQVZFX1RIUkVBRFMsICduZWVkIHRocmVhZHMnKQorICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yX2NfdGhyZWFkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX2ZhdGFsX2Vycm9yX2NfdGhyZWFkKCkKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnaW4gbmV3IHRocmVhZCcsCisgICAgICAgICAgICBrbm93X2N1cnJlbnRfdGhyZWFkPUZhbHNlKQorCiAgICAgZGVmIHRlc3Rfc2lnYWJydChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTE1MSw2ICsxODgsNyBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ1NJR0JVUycpLCAnbmVlZCBzaWduYWwuU0lHQlVTJykKKyAgICBAcmVxdWlyZXNfcmFpc2UKICAgICBkZWYgdGVzdF9zaWdidXMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCkBAIC0xNjUsNiArMjAzLDcgQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdJTEwnKSwgJ25lZWQgc2lnbmFsLlNJR0lMTCcpCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3Rfc2lnaWxsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgogICAgICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQpAQCAtMjA4LDYgKzI0Nyw3IEBACiAgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvciknLAogICAgICAgICAgICAgb3RoZXJfcmVnZXg9J3VuYWJsZSB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93JykKIAorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X2dpbF9yZWxlYXNlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTIxNyw2ICsyNTcsNyBAQAogICAgICAgICAgICAgMywKICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnKQogCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3RfZW5hYmxlX2ZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgpAQCAtMjMxLDYgKzI3Miw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAogICAgICAgICAgICAgICAgICAgICAgInN1YnByb2Nlc3MgZG9lc24ndCBzdXBwb3J0IHBhc3NfZmRzIG9uIFdpbmRvd3MiKQorICAgIEByZXF1aXJlc19yYWlzZQogICAgIGRlZiB0ZXN0X2VuYWJsZV9mZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCd3YisnKSBhcyBmcDoKICAgICAgICAgICAgIGZkID0gZnAuZmlsZW5vKCkKQEAgLTI0NCw2ICsyODYsNyBAQAogICAgICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnLAogICAgICAgICAgICAgICAgIGZkPWZkKQogCisgICAgQHJlcXVpcmVzX3JhaXNlCiAgICAgZGVmIHRlc3RfZW5hYmxlX3NpbmdsZV90aHJlYWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCkBAIC0yNTQsNiArMjk3LDcgQEAKICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnLAogICAgICAgICAgICAgYWxsX3RocmVhZHM9RmFsc2UpCiAKKyAgICBAcmVxdWlyZXNfcmFpc2UKICAgICBkZWYgdGVzdF9kaXNhYmxlKHNlbGYpOgogICAgICAgICBjb2RlID0gIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCkBAIC00NTgsMTQgKzUwMiwxNCBAQAogICAgICAgICAgICAgbGluZW5vID0gOAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGluZW5vID0gMTAKLSAgICAgICAgcmVnZXggPSAiIiIKKyAgICAgICAgcmVnZXggPSByIiIiCiAgICAgICAgICAgICBeVGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgogICAgICAgICAgICAgKD86ICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIFtfYS16XSsKICAgICAgICAgICAgICl7ezEsM319ICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjMgaW4gcnVuCiAgICAgICAgICAgICAgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcF9pbm5lcgogICAgICAgICAgICAgICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXAKIAotICAgICAgICAgICAgQ3VycmVudCB0aHJlYWQgWFhYIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICAgICAgICAgICAgQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiBkdW1wCiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyOCBpbiA8bW9kdWxlPiQKICAgICAgICAgICAgICIiIgpAQCAtNjM3LDkgKzY4MSw5IEBACiAgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQogICAgICAgICBpZiBub3QgdW5yZWdpc3RlcjoKICAgICAgICAgICAgIGlmIGFsbF90aHJlYWRzOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWCBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKKyAgICAgICAgICAgICAgICByZWdleCA9IHInQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgICAgIHJlZ2V4ID0gcidTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDE0LCAzMiwgcmVnZXgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHRyYWNlLCByZWdleCkKICAgICAgICAgZWxzZToKQEAgLTY5Niw2ICs3NDAsMjIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5jaGVja19zdGRlcnJfbm9uZSgpOgogICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWduYWwuU0lHVVNSMSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE1TX1dJTkRPV1MsICdzcGVjaWZpYyB0byBXaW5kb3dzJykKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGZvciBleGMsIG5hbWUgaW4gKAorICAgICAgICAgICAgKCdFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTicsICdhY2Nlc3MgdmlvbGF0aW9uJyksCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk8nLCAnaW50IGRpdmlkZSBieSB6ZXJvJyksCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9TVEFDS19PVkVSRkxPVycsICdzdGFjayBvdmVyZmxvdycpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5jaGVja193aW5kb3dzX2V4Y2VwdGlvbihmIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fcmFpc2VfZXhjZXB0aW9uKGZhdWx0aGFuZGxlci5fe2V4Y30pCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgbmFtZSkKKworCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKaW5kZXggNGUzOTJiNy4uNjViZTMwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IF9weWlvIGFzIHB5aW8KIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAogCiBjbGFzcyBBdXRvRmlsZVRlc3RzOgpAQCAtMTM5LDcgKzEzOSw3IEBACiAKICAgICBkZWYgdGVzdE1vZGVTdHJpbmdzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGludmFsaWQgbW9kZSBzdHJpbmdzCi0gICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIpOgorICAgICAgICBmb3IgbW9kZSBpbiAoIiIsICJhVSIsICJ3VSsiLCAiVSsiLCAiK1UiLCAiclUrIik6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sIG1vZGUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKaW5kZXggNzg0YmM5Mi4uNTY1NjMzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKQEAgLTIyLDggKzIyLDkgQEAKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiBmcm9tIGZpbGVpbnB1dCBpbXBvcnQgRmlsZUlucHV0LCBob29rX2VuY29kZWQKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgY2hlY2tfd2FybmluZ3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bmxpbmsgYXMgc2FmZV91bmxpbmsKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCiAKQEAgLTkyLDcgKzkzLDExIEBACiAgICAgICAgICAgICAgICAgdDIgPSB3cml0ZVRtcCgyLCBbIkxpbmUgJXMgb2YgZmlsZSAyXG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoMTApXSkKICAgICAgICAgICAgICAgICB0MyA9IHdyaXRlVG1wKDMsIFsiTGluZSAlcyBvZiBmaWxlIDNcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSg1KV0pCiAgICAgICAgICAgICAgICAgdDQgPSB3cml0ZVRtcCg0LCBbIkxpbmUgJXMgb2YgZmlsZSA0XG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoMSldKQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQorICAgICAgICAgICAgICAgIGlmIGJzOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxLCB0MiwgdDMsIHQ0KQogCkBAIC05NDAsNyArOTQ1LDggQEAKIAogICAgIGRlZiB0ZXN0KHNlbGYpOgogICAgICAgICBlbmNvZGluZyA9IG9iamVjdCgpCi0gICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoZW5jb2RpbmcpCisgICAgICAgIGVycm9ycyA9IG9iamVjdCgpCisgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAKICAgICAgICAgZmFrZV9vcGVuID0gSW52b2NhdGlvblJlY29yZGVyKCkKICAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KQEAgLTk1OCw4ICs5NjQsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzBdLCBmaWxlbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBtb2RlKQogICAgICAgICBzZWxmLmFzc2VydElzKGt3YXJncy5wb3AoJ2VuY29kaW5nJyksIGVuY29kaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzKGt3YXJncy5wb3AoJ2Vycm9ycycpLCBlcnJvcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiJ1x4ODBhYmMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2FmZV91bmxpbmssIFRFU1RGTikKKworICAgICAgICBkZWYgY2hlY2soZXJyb3JzLCBleHBlY3RlZF9saW5lcyk6CisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1URVNURk4sIG1vZGU9J3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbmhvb2s9aG9va19lbmNvZGVkKCd1dGYtOCcsIGVycm9ycz1lcnJvcnMpKSBhcyBmaToKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGxpc3QoZmkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBleHBlY3RlZF9saW5lcykKKworICAgICAgICBjaGVjaygnaWdub3JlJywgWydhYmMnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgorICAgICAgICAgICAgY2hlY2soJ3N0cmljdCcsIFsnYWJjJ10pCisgICAgICAgIGNoZWNrKCdyZXBsYWNlJywgWydcdWZmZmRhYmMnXSkKKyAgICAgICAgY2hlY2soJ2JhY2tzbGFzaHJlcGxhY2UnLCBbJ1xceDgwYWJjJ10pCisKICAgICBkZWYgdGVzdF9tb2RlcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjoKICAgICAgICAgICAgICMgVVRGLTcgaXMgYSBjb252ZW5pZW50LCBzZWxkb20gdXNlZCBlbmNvZGluZwpAQCAtOTgxLDUgKzEwMDUsMTEgQEAKICAgICAgICAgICAgIGNoZWNrKCdyYicsIFsnQVxuJywgJ0JcclxuJywgJ0NccicsICdEXHUyMGFjJ10pCiAKIAorY2xhc3MgTWlzY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmaWxlaW5wdXQpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CmluZGV4IGNiMWY2ZGIuLmFjODQ3M2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQpAQCAtMSw2ICsxLDQgQEAKLQogaW1wb3J0IGZyYWN0aW9ucwotaW1wb3J0IG1hdGgKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCkBAIC0xMCw2ICs4LDggQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC50ZXN0X2dyYW1tYXIgaW1wb3J0IChWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUykKIGZyb20gbWF0aCBpbXBvcnQgaXNpbmYsIGlzbmFuLCBjb3B5c2lnbiwgbGRleHAKIAogSU5GID0gZmxvYXQoImluZiIpCkBAIC02MSw2ICs2MSwyNyBAQAogICAgICAgICBmbG9hdChiJy4nICsgYicxJyoxMDAwKQogICAgICAgICBmbG9hdCgnLicgKyAnMScqMTAwMCkKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ2pKeFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChsaXQpLCBldmFsKGxpdCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChsaXQpLCBmbG9hdChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbGl0IGluICgnMF83JywgJzA5Xzk5Jyk6ICAjIG9jdGFscyBhcmUgbm90IHJlY29nbml6ZWQgaGVyZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ2pKeFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGxpdCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXM7IG5hbiBhbmQgaW5mIGFyZSBuZXZlciB2YWxpZCBhcyBsaXRlcmFscywKKyAgICAgICAgIyBvbmx5IGluIHRoZSBmbG9hdCgpIGNvbnN0cnVjdG9yLCBidXQgd2UgZG9uJ3QgYWxsb3cgdW5kZXJzY29yZXMKKyAgICAgICAgIyBpbiBvciBhcm91bmQgdGhlbS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdfTmFOJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdOYV9OJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdJTl9GJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICctX0lORicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnLUlORl8nKQorICAgICAgICAjIENoZWNrIHRoYXQgd2UgaGFuZGxlIGJ5dGVzIHZhbHVlcyBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBiJzBfLlx4ZmY5JykKKwogICAgIGRlZiB0ZXN0X25vbl9udW1lcmljX2lucHV0X3R5cGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgcG9zc2libGUgbm9uLW51bWVyaWMgdHlwZXMgZm9yIHRoZSBhcmd1bWVudCB4LCBpbmNsdWRpbmcKICAgICAgICAgIyBzdWJjbGFzc2VzIG9mIHRoZSBleHBsaWNpdGx5IGRvY3VtZW50ZWQgYWNjZXB0ZWQgdHlwZXMuCkBAIC0xNjIsMTEgKzE4MywxMiBAQAogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQoc3RyKHNlbGYpKSArIDEKIAotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzEoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28yKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMygyMSkpLCA0Mi4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMSgpKSwgNDIuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzIoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzMoMjEpKSwgNDIuKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZsb2F0LCBGb280KDQyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb29TdHIoJzgnKSksIDkuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvb1N0cignOCcpKSwgOS4pCiAKICAgICAgICAgY2xhc3MgRm9vNToKICAgICAgICAgICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CkBAIC0xNzcsMTAgKzE5OSwxNCBAQAogICAgICAgICBjbGFzcyBGOgogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gT3RoZXJGbG9hdFN1YmNsYXNzKDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShmbG9hdChGKCkpKSwgT3RoZXJGbG9hdFN1YmNsYXNzKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKEZsb2F0U3ViY2xhc3MoRigpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmxvYXRTdWJjbGFzcyhGKCkpKSwgRmxvYXRTdWJjbGFzcykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEYoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZmxvYXQoRigpKSksIGZsb2F0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmxvYXRTdWJjbGFzcyhGKCkpLCA0Mi4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZsb2F0U3ViY2xhc3MoRigpKSksIEZsb2F0U3ViY2xhc3MpCiAKICAgICBkZWYgdGVzdF9pc19pbnRlZ2VyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgxLjEpLmlzX2ludGVnZXIoKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weSBiL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQppbmRleCBmYTM3ZjkwLi5mYjc0MjQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CkBAIC02MiwxNCArNjIsMTQgQEAKIGNsYXNzIFRyYW5zbGF0ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJyonKSwgJy4qXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCc/JyksICcuXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdhP2IqJyksICdhLmIuKlxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW2FiY10nKSwgJ1thYmNdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXV0nKSwgJ1tdXVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnWyF4XScpLCAnW154XVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW154XScpLCAnW1xcXnhdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbeCcpLCAnXFxbeFxaKD9tcyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnKicpLCByJyg/czouKilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCc/JyksIHInKD9zOi4pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnYT9iKicpLCByJyg/czphLmIuKilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbYWJjXScpLCByJyg/czpbYWJjXSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXV0nKSwgcicoP3M6W11dKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1sheF0nKSwgcicoP3M6W154XSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXnhdJyksIHInKD9zOltcXnhdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1t4JyksIHInKD9zOlxbeClcWicpCiAKIAogY2xhc3MgRmlsdGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQppbmRleCA5YjEzNjMyLi44YWZkNWI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQpAQCAtMjc0LDcgKzI3NCw3IEBACiAgICAgICAgIHRlc3RfZXhjKCclZCcsICcxJywgVHlwZUVycm9yLCAiJWQgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCcleCcsICcxJywgVHlwZUVycm9yLCAiJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJyV4JywgMy4xNCwgVHlwZUVycm9yLCAiJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgZmxvYXQiKQotICAgICAgICB0ZXN0X2V4YygnJWcnLCAnMScsIFR5cGVFcnJvciwgImEgZmxvYXQgaXMgcmVxdWlyZWQiKQorICAgICAgICB0ZXN0X2V4YygnJWcnLCAnMScsIFR5cGVFcnJvciwgIm11c3QgYmUgcmVhbCBudW1iZXIsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4Yygnbm8gZm9ybWF0JywgJzEnLCBUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIikKICAgICAgICAgdGVzdF9leGMoJyVjJywgLTEsIE92ZXJmbG93RXJyb3IsICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCkBAIC0zMDAsNiArMzAwLDggQEAKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgNywgYiJceDA3IikKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYiJaIiwgYiJaIikKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYnl0ZWFycmF5KGIiWiIpLCBiIloiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJTVjIiwgNjUsIGIiICAgIEEiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJS01YyIsIDY1LCBiIkEgICAgIikKICAgICAgICAgIyAlYiB3aWxsIGluc2VydCBhIHNlcmllcyBvZiBieXRlcywgZWl0aGVyIGZyb20gYSB0eXBlIHRoYXQgc3VwcG9ydHMKICAgICAgICAgIyB0aGUgUHlfYnVmZmVyIHByb3RvY29sLCBvciBzb21ldGhpbmcgdGhhdCBoYXMgYSBfX2J5dGVzX18gbWV0aG9kCiAgICAgICAgIGNsYXNzIEZha2VCeXRlcyhvYmplY3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCA5ZGY0YTU0Li43OTA1YzM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtMTUwLDYgKzE1MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgIjMvMiIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMywgMGopCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMywgMWopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMSwgMiwgMykKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0SW5pdEZyb21GbG9hdChzZWxmKToKQEAgLTI2MywxMyArMjY0LDEzIEBACiAgICAgICAgIG5hbiA9IGluZiAtIGluZgogICAgICAgICAjIGJ1ZyAxNjQ2OTogZXJyb3IgdHlwZXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBmbG9hdCAtPiBpbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IGluZiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCBpbmYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCAtaW5mIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIC1pbmYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBuYW4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIG5hbikKIAogICAgIGRlZiB0ZXN0RnJvbURlY2ltYWwoc2VsZik6CkBAIC0yODQsMTYgKzI4NSwxNiBAQAogCiAgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGRlY2ltYWwgLT4gaW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoImluZiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgLUluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgiLWluZiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgTmFOIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoIm5hbiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgc05hTiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJzbmFuIikpCiAKICAgICBkZWYgdGVzdExpbWl0RGVub21pbmF0b3Ioc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIwNTA4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weQpAQCAtMCwwICsxLDc2MCBAQAoraW1wb3J0IGFzdAoraW1wb3J0IHR5cGVzCitpbXBvcnQgZGVjaW1hbAoraW1wb3J0IHVuaXR0ZXN0CisKK2FfZ2xvYmFsID0gJ2dsb2JhbCB2YXJpYWJsZScKKworIyBZb3UgY291bGQgYXJndWUgdGhhdCBJJ20gdG9vIHN0cmljdCBpbiBsb29raW5nIGZvciBzcGVjaWZpYyBlcnJvcgorIyAgdmFsdWVzIHdpdGggYXNzZXJ0UmFpc2VzUmVnZXgsIGJ1dCB3aXRob3V0IGl0IGl0J3Mgd2F5IHRvbyBlYXN5IHRvCisjICBtYWtlIGEgc3ludGF4IGVycm9yIGluIHRoZSB0ZXN0IHN0cmluZ3MuIEVzcGVjaWFsbHkgd2l0aCBhbGwgb2YgdGhlCisjICB0cmlwbGUgcXVvdGVzLCByYXcgc3RyaW5ncywgYmFja3NsYXNoZXMsIGV0Yy4gSSB0aGluayBpdCdzIGEKKyMgIHdvcnRod2hpbGUgdHJhZGVvZmYuIFdoZW4gSSBzd2l0Y2hlZCB0byB0aGlzIG1ldGhvZCwgSSBmb3VuZCBtYW55CisjICBleGFtcGxlcyB3aGVyZSBJIHdhc24ndCB0ZXN0aW5nIHdoYXQgSSB0aG91Z2h0IEkgd2FzLgorCitjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydEFsbFJhaXNlKHNlbGYsIGV4Y2VwdGlvbl90eXBlLCByZWdleCwgZXJyb3Jfc3RyaW5ncyk6CisgICAgICAgIGZvciBzdHIgaW4gZXJyb3Jfc3RyaW5nczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0cj1zdHIpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb25fdHlwZSwgcmVnZXgpOgorICAgICAgICAgICAgICAgICAgICBldmFsKHN0cikKKworICAgIGRlZiB0ZXN0X19mb3JtYXRfX2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgX19mb3JtYXRfXyBpcyBsb29rZWQgdXAgb24gdGhlIHR5cGUsIG5vdCB0aGUgaW5zdGFuY2UuCisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NsYXNzJworCisgICAgICAgIHggPSBYKCkKKworICAgICAgICAjIEFkZCBhIGJvdW5kIF9fZm9ybWF0X18gbWV0aG9kIHRvIHRoZSAneScgaW5zdGFuY2UsIGJ1dCBub3QKKyAgICAgICAgIyAgdGhlICd4JyBpbnN0YW5jZS4KKyAgICAgICAgeSA9IFgoKQorICAgICAgICB5Ll9fZm9ybWF0X18gPSB0eXBlcy5NZXRob2RUeXBlKGxhbWJkYSBzZWxmLCBzcGVjOiAnaW5zdGFuY2UnLCB5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eX0nLCBmb3JtYXQoeSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eX0nLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCh4KSwgZm9ybWF0KHkpKQorCisgICAgICAgICMgX19mb3JtYXRfXyBpcyBub3QgY2FsbGVkIHRoaXMgd2F5LCBidXQgc3RpbGwgbWFrZSBzdXJlIGl0CisgICAgICAgICMgIHJldHVybnMgd2hhdCB3ZSBleHBlY3QgKHNvIHdlIGNhbiBtYWtlIHN1cmUgd2UncmUgYnlwYXNzaW5nCisgICAgICAgICMgIGl0KS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZm9ybWF0X18oJycpLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuX19mb3JtYXRfXygnJyksICdpbnN0YW5jZScpCisKKyAgICAgICAgIyBUaGlzIGlzIGhvdyBfX2Zvcm1hdF9fIGlzIGFjdHVhbGx5IGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHgpLl9fZm9ybWF0X18oeCwgJycpLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoeSkuX19mb3JtYXRfXyh5LCAnJyksICdjbGFzcycpCisKKyAgICBkZWYgdGVzdF9hc3Qoc2VsZik6CisgICAgICAgICMgSW5zcGlyZWQgYnkgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0OTc1CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiA0CisgICAgICAgIHggPSBYKCkKKyAgICAgICAgZXhwciA9ICIiIgorYSA9IDEwCitmJ3thICogeCgpfSciIiIKKyAgICAgICAgdCA9IGFzdC5wYXJzZShleHByKQorICAgICAgICBjID0gY29tcGlsZSh0LCAnJywgJ2V4ZWMnKQorCisgICAgICAgICMgTWFrZSBzdXJlIHggd2FzIG5vdCBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeC5jYWxsZWQpCisKKyAgICAgICAgIyBBY3R1YWxseSBydW4gdGhlIGNvZGUuCisgICAgICAgIGV4ZWMoYykKKworICAgICAgICAjIE1ha2Ugc3VyZSB4IHdhcyBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2xpdGVyYWxfZXZhbChzZWxmKToKKyAgICAgICAgIyBXaXRoIG5vIGV4cHJlc3Npb25zLCBhbiBmLXN0cmluZyBpcyBva2F5LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoImYneCciKSwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoImYneCcgJ3knIiksICd4eScpCisKKyAgICAgICAgIyBCdXQgdGhpcyBzaG91bGQgcmFpc2UgYW4gZXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nJyk6CisgICAgICAgICAgICBhc3QubGl0ZXJhbF9ldmFsKCJmJ3h7M30nIikKKworICAgICAgICAjIEFzIHNob3VsZCB0aGlzLCB3aGljaCB1c2VzIGEgZGlmZmVyZW50IGFzdCBub2RlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nJyk6CisgICAgICAgICAgICBhc3QubGl0ZXJhbF9ldmFsKCJmJ3szfSciKQorCisgICAgZGVmIHRlc3RfYXN0X2NvbXBpbGVfdGltZV9jb25jYXQoc2VsZik6CisgICAgICAgIHggPSBbJyddCisKKyAgICAgICAgZXhwciA9ICIiInhbMF0gPSAnZm9vJyBmJ3szfSciIiIKKyAgICAgICAgdCA9IGFzdC5wYXJzZShleHByKQorICAgICAgICBjID0gY29tcGlsZSh0LCAnJywgJ2V4ZWMnKQorICAgICAgICBleGVjKGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeFswXSwgJ2ZvbzMnKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV90aW1lX2NvbmNhdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Nhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciIiImYnJyBiJyciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJiJycgZicnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbGl0ZXJhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYScsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJyAnLCAnICcpCisKKyAgICBkZWYgdGVzdF91bnRlcm1pbmF0ZWRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIiIiZid7IngnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7Inh9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneygieCciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3soInh9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21pc21hdGNoZWRfcGFyZW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IG1pc21hdGNoZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7KCh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kb3VibGVfYnJhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3snLCAneycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3snLCAnYXsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tiJywgJ3tiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2InLCAnYXtiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319JywgJ30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYX19JywgJ2F9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319YicsICd9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhfX1iJywgJ2F9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e319JywgJ3t9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e319JywgJ2F7fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2J9fScsICd7Yn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t9fWMnLCAne31jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2J9fScsICdhe2J9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e319YycsICdhe31jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7Yn19YycsICd7Yn1jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2J9fWMnLCAnYXtifWMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e3sxMH0nLCAnezEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319ezEwfScsICd9MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX17e3sxMH0nLCAnfXsxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fWF7e3sxMH0nLCAnfWF7MTAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9e3snLCAnMTB7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fScsICcxMH0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19e3snLCAnMTB9eycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX1he3snICd9JywgJzEwfWF7fScpCisKKyAgICAgICAgIyBJbnNpZGUgb2Ygc3RyaW5ncywgZG9uJ3QgaW50ZXJwcmV0IGRvdWJsZWQgYnJhY2tldHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Int7fX0ifScsICd7e319JykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3sge3t9fSB9JyIsICMgZGljdCBpbiBhIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV90aW1lX2NvbmNhdChzZWxmKToKKyAgICAgICAgeCA9ICdkZWYnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZicjIyB7eH1naGknLCAnYWJjIyMgZGVmZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJ3t4fScgJ2doaScsICdhYmNkZWZnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYne3h9JyAnZ2gnIGYnaXt4OjR9JywgJ2FiY2RlZmdoaWRlZiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eH0nIGYne3h9JywgJ3t4fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4JyBmJ3t4fScsICd7eGRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4fScgZid7eH0nLCAne3h9ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3t4fX0nIGYne3h9JywgJ3t7eH19ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3t4JyBmJ3t4fScsICd7e3hkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4fX0nIGYne3h9JywgJ3h9fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICd4fX0nLCAnZGVmeH19JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJycsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYne3h9JyAnJywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZid7eH0nLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJzInLCAnZGVmMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEnIGYne3h9JyAnMicsICcxZGVmMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEnIGYne3h9JywgJzFkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyBmJy17eH0nLCAnZGVmLWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycgJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJyAnJyBmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycgZicnICcnLCAnJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MycgZid9JyIsICAjIGNhbid0IGNvbmNhdCB0byBnZXQgYSB2YWxpZCBmLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfY29tbWVudHMoc2VsZik6CisgICAgICAgICMgVGhlc2UgYXJlbid0IGNvbW1lbnRzLCBzaW5jZSB0aGV5J3JlIGluIHN0cmluZ3MuCisgICAgICAgIGQgPSB7JyMnOiAnaGFzaCd9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IiMifScsICcjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkWyIjIl19JywgJ2hhc2gnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgJyMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezEjfSciLCAgICMgZXJyb3IgYmVjYXVzZSB0aGUgZXhwcmVzc2lvbiBiZWNvbWVzICIoMSMpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MygjKX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3spI30nIiwgICAjIFdoZW4gd3JhcHBlZCBpbiBwYXJlbnMsIHRoaXMgYmVjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgJygpIyknLiAgTWFrZSBzdXJlIHRoYXQgZG9lc24ndCBjb21waWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWFueV9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgIyBDcmVhdGUgYSBzdHJpbmcgd2l0aCBtYW55IGV4cHJlc3Npb25zIGluIGl0LiBOb3RlIHRoYXQKKyAgICAgICAgIyAgYmVjYXVzZSB3ZSBoYXZlIGEgc3BhY2UgaW4gaGVyZSBhcyBhIGxpdGVyYWwsIHdlJ3JlIGFjdHVhbGx5CisgICAgICAgICMgIGdvaW5nIHRvIHVzZSB0d2ljZSBhcyBtYW55IGFzdCBub2Rlczogb25lIGZvciBlYWNoIGxpdGVyYWwKKyAgICAgICAgIyAgcGx1cyBvbmUgZm9yIGVhY2ggZXhwcmVzc2lvbi4KKyAgICAgICAgZGVmIGJ1aWxkX2ZzdHIobiwgZXh0cmE9JycpOgorICAgICAgICAgICAgcmV0dXJuICJmJyIgKyAoJ3t4fSAnICogbikgKyBleHRyYSArICInIgorCisgICAgICAgIHggPSAnWCcKKyAgICAgICAgd2lkdGggPSAxCisKKyAgICAgICAgIyBUZXN0IGFyb3VuZCAyNTYuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDI1MCwgMjYwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChidWlsZF9mc3RyKGkpKSwgKHgrJyAnKSppKQorCisgICAgICAgICMgVGVzdCBjb25jYXRlbmF0aW5nIDIgbGFyZ3MgZnN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChidWlsZF9mc3RyKDI1NSkqMjU2KSwgKHgrJyAnKSooMjU1KjI1NikpCisKKyAgICAgICAgcyA9IGJ1aWxkX2ZzdHIoMjUzLCAne3g6e3dpZHRofX0gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHMpLCAoeCsnICcpKjI1NCkKKworICAgICAgICAjIFRlc3QgbG90cyBvZiBleHByZXNzaW9ucyBhbmQgY29uc3RhbnRzLCBjb25jYXRlbmF0ZWQuCisgICAgICAgIHMgPSAiZid7MX0nICd4JyAneSciICogMTAyNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwocyksICcxeHknICogMTAyNCkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF9zcGVjaWZpZXJfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHdpZHRoID0gMTAKKyAgICAgICAgcHJlY2lzaW9uID0gNAorICAgICAgICB2YWx1ZSA9IGRlY2ltYWwuRGVjaW1hbCgnMTIuMzQ1NjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6e3dpZHRofS57cHJlY2lzaW9ufX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aCFyfS57cHJlY2lzaW9ufX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aDowfS57cHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6ezF9ezA6MH0ue3ByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnsgMX17IDA6MH0ueyBwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6I3sxfTB4fScsICcgICAgICAgMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDp7IiMifTF7MH17IngifX0nLCAnICAgICAgIDB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7LTEwOi17IiMifTF7MH14fScsICcgICAgICAtMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3stMTA6eyItIn0jezF9MHsieCJ9fScsICcgICAgICAtMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDojezMgIT0gezQ6NX0gYW5kIHdpZHRofXh9JywgJyAgICAgICAweGEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyIiImYneyJzIiFyeyI6MTAifX0nIiIiLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBsb29rcyBsaWtlIGEgbmVzdGVkIGZvcm1hdCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJpbnZhbGlkIHN5bnRheCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgSW52YWxpZCBzeW50YXggaW5zaWRlIGEgbmVzdGVkIHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s0OnsvNX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgQ2FuJ3QgbmVzdCBmb3JtYXQgc3BlY2lmaWVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYncmVzdWx0OiB7dmFsdWU6e3dpZHRoOnswfX0ue3ByZWNpc2lvbjoxfX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGludmFsaWQgY29udmVyc2lvbiBjaGFyYWN0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIE5vIGV4cGFuc2lvbiBpbnNpZGUgY29udmVyc2lvbiBvciBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgdGhlIDogb3IgISBpdHNlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiImYneyJzIiF7InIifX0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3Rfb3JkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pID0gMAorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuaSkKKworICAgICAgICB4ID0gWCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0ge3h9JywgJzEgMicpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2V4cHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogZW1wdHkgZXhwcmVzc2lvbiBub3QgYWxsb3dlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgfSciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJyB7fSAnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyFyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICFyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MTA6eyB9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZicgeyB9ICciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2F0Y2ggdGhlIGVtcHR5IGV4cHJlc3Npb24gYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBpbnZhbGlkIGNvbnZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHJ9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheDp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheDphfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cjp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyOmF9JyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s6fSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgZmluZCB0aGUgZW1wdHkgZXhwcmVzc2lvbiBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIG1pc3NpbmcgY2xvc2luZyBicmFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyFzOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7OiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7OngnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3BhcmVuc19pbl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLH0nLCAnKDMsKScpCisKKyAgICAgICAgIyBBZGQgdGhlc2UgYmVjYXVzZSB3aGVuIGFuIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBwYXJlbnMKKyAgICAgICAgIyAgYXJlIGFkZGVkIGFyb3VuZCBpdC4gQnV0IHdlIHNob3VsZG4ndCBnbyBmcm9tIGFuIGludmFsaWQKKyAgICAgICAgIyAgZXhwcmVzc2lvbiB0byBhIHZhbGlkIG9uZS4gVGhlIGFkZGVkIHBhcmVucyBhcmUganVzdAorICAgICAgICAjICBzdXBwb3NlZCB0byBhbGxvdyB3aGl0ZXNwYWNlIChpbmNsdWRpbmcgbmV3bGluZXMpLgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7LH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyx9JyIsICAjIHRoaXMgaXMgKCwpLCB3aGljaCBpcyBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szKSsoNH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnRU9MIHdoaWxlIHNjYW5uaW5nIHN0cmluZyBsaXRlcmFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne1xufSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYmFja3NsYXNoZXNfaW5fc3RyaW5nX3BhcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdCcsICdcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcdCcsICdcXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x0JywgJ1xcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdCcsICcyXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHR7M30nLCAnMlx0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdHszfScsICdcdDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdTAzOTQnLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x1MDM5NCcsICdcXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcdTAzOTQnLCAnXFx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdTAzOTQnLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdTAzOTR7M30nLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMzk0ezN9JywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcVTAwMDAwMzk0JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcVTAwMDAwMzk0JywgJ1xcVTAwMDAwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcVTAwMDAwMzk0JywgJ1xcVTAwMDAwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxVMDAwMDAzOTQnLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cVTAwMDAwMzk0ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xVMDAwMDAzOTR7M30nLCAnXHUwMzk0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfXszfScsICdcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9MycsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0zJywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwJywgJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHgyMCcsICdcXHgyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHgyMCcsICdcXHgyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1ceDIwJywgJzIgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx4MjB7M30nLCAnMiAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjB7M30nLCAnIDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXHgyMCcsICcyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXHgyMDMnLCAnMiAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjAzJywgJyAzJykKKworICAgIGRlZiB0ZXN0X21pc2Zvcm1lZF91bmljb2RlX2NoYXJhY3Rlcl9uYW1lKHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3QgYXJlIG5lZWRlZCBiZWNhdXNlIHVuaWNvZGUgbmFtZXMgYXJlIHBhcnNlZAorICAgICAgICAjIGRpZmZlcmVudGx5IGluc2lkZSBmLXN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsIHIiXCh1bmljb2RlIGVycm9yXCkgJ3VuaWNvZGVlc2NhcGUnIGNvZGVjIGNhbid0IGRlY29kZSBieXRlcyBpbiBwb3NpdGlvbiAuKjogbWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ1xOJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZidcTnsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBJyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIZXJlIGFyZSB0aGUgbm9uLWYtc3RyaW5nIHZlcnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICB3aGljaCBzaG91bGQgZ2l2ZSB0aGUgc2FtZSBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOeyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfbm9fYmFja3NsYXNoZXNfaW5fZXhwcmVzc2lvbl9wYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3tcJ2FcJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3tcdDN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7XH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XCdhXCd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1x0M30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiInJmJ3siXE57TEVGVCBDVVJMWSBCUkFDS0VUfSJ9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3tcbn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X25vX2VzY2FwZXNfZm9yX2JyYWNlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE9ubHkgbGl0ZXJhbCBjdXJseSBicmFjZXMgYmVnaW4gYW4gZXhwcmVzc2lvbi4KKyAgICAgICAgIiIiCisgICAgICAgICMgXHg3YiBpcyAneycuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDdiMSsxfX0nLCAnezErMX0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHg3YjErMScsICd7MSsxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDA3YjErMScsICd7MSsxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0xFRlQgQ1VSTFkgQlJBQ0tFVH0xKzFcTntSSUdIVCBDVVJMWSBCUkFDS0VUfScsICd7MSsxfScpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lc19pbl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3swfScsICcwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZicnJ3szKworNH0nJycsICc3JykKKworICAgIGRlZiB0ZXN0X2xhbWJkYShzZWxmKToKKyAgICAgICAgeCA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpIXJ9JywgIic4ODg4OCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4IikhcjoxMH0nLCAiJzg4ODg4JyAgICIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKToxMH0nLCAiODg4ODggICAgICIpCisKKyAgICAgICAgIyBsYW1iZGEgZG9lc24ndCB3b3JrIHdpdGhvdXQgcGFyZW5zLCBiZWNhdXNlIHRoZSBjb2xvbgorICAgICAgICAjICBtYWtlcyB0aGUgcGFyc2VyIHRoaW5rIGl0J3MgYSBmb3JtYXRfc3BlYworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAndW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3tsYW1iZGEgeDp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfeWllbGQoc2VsZik6CisgICAgICAgICMgTm90IHRlcnJpYmx5IHVzZWZ1bCwgYnV0IG1ha2Ugc3VyZSB0aGUgeWllbGQgdHVybnMKKyAgICAgICAgIyAgYSBmdW5jdGlvbiBpbnRvIGEgZ2VuZXJhdG9yCisgICAgICAgIGRlZiBmbih5KToKKyAgICAgICAgICAgIGYneTp7eWllbGQgeSoyfScKKworICAgICAgICBnID0gZm4oNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCA4KQorCisgICAgZGVmIHRlc3RfeWllbGRfc2VuZChzZWxmKToKKyAgICAgICAgZGVmIGZuKHgpOgorICAgICAgICAgICAgeWllbGQgZid4Ont5aWVsZCAobGFtYmRhIGk6IHggKiBpKX0nCisKKyAgICAgICAgZyA9IGZuKDEwKQorICAgICAgICB0aGVfbGFtYmRhID0gbmV4dChnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9sYW1iZGEoNCksIDQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuc2VuZCgnc3RyaW5nJyksICd4OnN0cmluZycpCisKKyAgICBkZWYgdGVzdF9leHByZXNzaW9uc193aXRoX3RyaXBsZV9xdW90ZWRfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJyd4JycnfSIsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmInsnJydlcmljJ3MnJyd9IiwgImVyaWMncyIpCisKKyAgICAgICAgIyBUZXN0IGNvbmNhdGVuYXRpb24gd2l0aGluIGFuIGV4cHJlc3Npb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieCIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ4IiAiIiJlcmljInMiIiJ9JywgJ3hlcmljInMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiImVyaWMicyIiIiAieSJ9JywgJ2VyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICJ5In0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyIiIngiIiIgIiIiZXJpYyJzIiIiICIiInkiIiJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tyIiIieCIiIiAiIiJlcmljInMiIiIgIiIieSIiIn0nLCAneGVyaWMic3knKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfdmFycyhzZWxmKToKKyAgICAgICAgeCA9IDk4CisgICAgICAgIHkgPSAnYWJjJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9JywgJzk4YWJjJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fXt5fScsICdYOThhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fScsICc5OFhhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9e3l9WCcsICc5OGFiY1gnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9WXt5fScsICdYOThZYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH17eX1ZJywgJ1g5OGFiY1knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9WHt5fVknLCAnOThYYWJjWScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH1Ze3l9WicsICdYOThZYWJjWicpCisKKyAgICBkZWYgdGVzdF9jbG9zdXJlKHNlbGYpOgorICAgICAgICBkZWYgb3V0ZXIoeCk6CisgICAgICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZid4Ont4fScKKyAgICAgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoJzk4NycpKCksICd4Ojk4NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXIoNykoKSwgJ3g6NycpCisKKyAgICBkZWYgdGVzdF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHkgPSAyCisgICAgICAgIGRlZiBmKHgsIHdpZHRoKToKKyAgICAgICAgICAgIHJldHVybiBmJ3g9e3gqeTp7d2lkdGh9fScKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoJ2ZvbycsIDEwKSwgJ3g9Zm9vZm9vICAgICcpCisgICAgICAgIHggPSAnYmFyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMTAsIDEwKSwgJ3g9ICAgICAgICAyMCcpCisKKyAgICBkZWYgdGVzdF9sb2NhbHMoc2VsZik6CisgICAgICAgIHZhbHVlID0gMTIzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid2Ont2YWx1ZX0nLCAndjoxMjMnKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ192YXJpYWJsZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZid2Ont2YWx1ZX0nCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2Zvcm1hdF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBPOgorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgaWYgbm90IHNwZWM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnKicKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlYworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOnh9JywgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKX0nLCAnKicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpOn0nLCAnKicpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szOn0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyFzOn0nLCAnMycpCisKKyAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpnbG9iYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLCAiZzonZ2xvYmFsIHZhcmlhYmxlJyIpCisKKyAgICAgICAgYV9sb2NhbCA9ICdsb2NhbCB2YXJpYWJsZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2c6Z2xvYmFsIHZhcmlhYmxlIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidnbG9iYWwgdmFyaWFibGUnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzpnbG9iYWwgdmFyaWFibGUgbDonbG9jYWwgdmFyaWFibGUnIikKKworICAgICAgICBzZWxmLmFzc2VydEluKCJtb2R1bGUgJ3VuaXR0ZXN0JyBmcm9tIiwgZid7dW5pdHRlc3R9JykKKworICAgIGRlZiB0ZXN0X3NoYWRvd2VkX2dsb2JhbChzZWxmKToKKyAgICAgICAgYV9nbG9iYWwgPSAncmVhbGx5IGEgbG9jYWwnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0nLCAnZzpyZWFsbHkgYSBsb2NhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbCFyfScsICJnOidyZWFsbHkgYSBsb2NhbCciKQorCisgICAgICAgIGFfbG9jYWwgPSAnbG9jYWwgdmFyaWFibGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnOnJlYWxseSBhIGxvY2FsIGw6bG9jYWwgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOidyZWFsbHkgYSBsb2NhbCciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOnJlYWxseSBhIGxvY2FsIGw6J2xvY2FsIHZhcmlhYmxlJyIpCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBkZWYgZm9vKHgpOgorICAgICAgICAgICAgcmV0dXJuICd4PScgKyBzdHIoeCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2ZvbygxMCl9JywgJ3g9MTAnKQorCisgICAgZGVmIHRlc3RfbmVzdGVkX2ZzdHJpbmdzKHNlbGYpOgorICAgICAgICB5ID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2YiezB9IiozfScsICcwMDAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2Yie3l9IiozfScsICc1NTUnKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9zdHJpbmdfcHJlZml4ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICd1bmV4cGVjdGVkIEVPRiB3aGlsZSBwYXJzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImZ1JyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZVJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1RicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVmcicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVyZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZydScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJmdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJ1ZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZVUicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1cicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZiJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZkInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZCJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiRicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQkYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9sZWFkaW5nX3RyYWlsaW5nX3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sgM30nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ICAzfScsICczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIH0nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyAgfScsICczJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZXhwcj17IHt4OiB5IGZvciB4LCB5IGluIFsoMSwgMiksIF19fScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cHI9ezE6IDJ9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2V4cHI9eyB7eDogeSBmb3IgeCwgeSBpbiBbKDEsIDIpLCBdfSB9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwcj17MTogMn0nKQorCisgICAgZGVmIHRlc3Rfbm90X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRoZXJlJ3MgYSBzcGVjaWFsIHRlc3QgZm9yIHRoaXMgYmVjYXVzZSB0aGVyZSdzIGEgc3BlY2lhbAorICAgICAgICAjICBjYXNlIGluIHRoZSBmLXN0cmluZyBwYXJzZXIgdG8gbG9vayBmb3IgIT0gYXMgbm90IGVuZGluZyBhbgorICAgICAgICAjICBleHByZXNzaW9uLiBOb3JtYWxseSBpdCB3b3VsZCwgd2hpbGUgbG9va2luZyBmb3IgIXMgb3IgIXIuCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00fScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00On0nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NCFzfScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00IXM6LjN9JywgJ1RydScpCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OjEwLjEwfScsICcgICAgICAzLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IXM6MTAuMTB9JywgJzMuMTQgICAgICAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhcjoxMC4xMH0nLCAnMy4xNCAgICAgICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFhOjEwLjEwfScsICczLjE0ICAgICAgJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIn0nLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIXJ9JywgIidhJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEiIWF9JywgIidhJyIpCisKKyAgICAgICAgIyBOb3QgYSBjb252ZXJzaW9uLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIXIifScsICJhIXIiKQorCisgICAgICAgICMgTm90IGEgY29udmVyc2lvbiwgYnV0IHNob3cgdGhhdCAhIGlzIGFsbG93ZWQgaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0OiE8MTAuMTB9JywgJzMuMTQhISEhISEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szIWd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIUd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szITp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISBzfSciLCAgIyBubyBzcGFjZSBiZWZvcmUgY29udmVyc2lvbiBjaGFyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne3ghc3t5fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3N9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzOn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3M6c30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Fzc2lnbm1lbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJycgPSAzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezB9JyA9IHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7eH0nID0geCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJkZWwgZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlbCAnJyBmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWlzbWF0Y2hlZF9icmFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t7fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e319fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h9eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnXHUwMDdifSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2FuJ3QgaGF2ZSB7IG9yIH0gaW4gYSBmb3JtYXQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fT4xMH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6fX0+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezM6e3s+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szISciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MzonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzOjMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneHt4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t4JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOnMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7fX17JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3snIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICAjIEJ1dCB0aGVzZSBhcmUganVzdCBub3JtYWwgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieyJ9JywgJ3snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ9In0nLCAnfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mzp7In0ifT4xMH0nLCAnfX19fX19fX19MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mjp7InsifT4xMH0nLCAne3t7e3t7e3t7MicpCisKKyAgICBkZWYgdGVzdF9pZl9jb25kaXRpb25hbChzZWxmKToKKyAgICAgICAgIyBUaGVyZSdzIHNwZWNpYWwgbG9naWMgaW4gY29tcGlsZS5jIHRvIHRlc3QgaWYgdGhlCisgICAgICAgICMgIGNvbmRpdGlvbmFsIGZvciBhbiBpZiAoYW5kIHdoaWxlKSBhcmUgY29uc3RhbnRzLiBFeGVyY2lzZQorICAgICAgICAjICB0aGF0IGNvZGUuCisKKyAgICAgICAgZGVmIHRlc3RfZnN0cmluZyh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9lbXB0eSh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgJycgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmICcgJyBmJ3t4fSc6CisgICAgICAgICAgICAgICAgZmxhZyA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmxhZyA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgZXhwZWN0ZWQpCisKKyAgICAgICAgdGVzdF9mc3RyaW5nKCcnLCAyKQorICAgICAgICB0ZXN0X2ZzdHJpbmcoJyAnLCAxKQorCisgICAgICAgIHRlc3RfY29uY2F0X2VtcHR5KCcnLCAyKQorICAgICAgICB0ZXN0X2NvbmNhdF9lbXB0eSgnICcsIDEpCisKKyAgICAgICAgdGVzdF9jb25jYXRfbm9uX2VtcHR5KCcnLCAxKQorICAgICAgICB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoJyAnLCAxKQorCisgICAgZGVmIHRlc3RfZW1wdHlfZm9ybWF0X3NwZWNpZmllcihzZWxmKToKKyAgICAgICAgeCA9ICd0ZXN0JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3g6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXM6fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4IXI6fScsICIndGVzdCciKQorCisgICAgZGVmIHRlc3Rfc3RyX2Zvcm1hdF9kaWZmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgZCA9IHsnYSc6ICdzdHJpbmcnLAorICAgICAgICAgICAgIDA6ICdpbnRlZ2VyJywKKyAgICAgICAgICAgICB9CisgICAgICAgIGEgPSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFswXX0nLCAnaW50ZWdlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiYSJdfScsICdzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbYV19JywgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7ZFthXX0nLmZvcm1hdChkPWQpLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne2RbMF19Jy5mb3JtYXQoZD1kKSwgJ2ludGVnZXInKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3thWzQpfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne2EoNF19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBzZWUgaXNzdWUgMjYyODcKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShUeXBlRXJyb3IsICd1bnN1cHBvcnRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7KGxhbWJkYTogMCk6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3soMCwpOnh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVmFsdWVFcnJvciwgJ1Vua25vd24gZm9ybWF0IGNvZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYnezEwMDA6an0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3sxMDAwOmp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2xvb3Aoc2VsZik6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2k6e2l9JywgJ2k6JyArIHN0cihpKSkKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSB7JyInOiAnZHF1b3RlJywKKyAgICAgICAgICAgICAiJyI6ICdzcXVvdGUnLAorICAgICAgICAgICAgICdmb28nOiAnYmFyJywKKyAgICAgICAgICAgICB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnJ3tkWyInIl19JycnLCAnc3F1b3RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmIiIie2RbJyInXX0iIiIsICdkcXVvdGUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiZm9vIl19JywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7ZFsnZm9vJ119IiwgJ2JhcicpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CmluZGV4IGFlZjY2ZGEuLjEyZmFiYzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CkBAIC0zMTEsMTAgKzMxMSwxMiBAQAogICAgICAgICBfc3NsX2Nsb3NpbmcgPSBGYWxzZQogCiAgICAgICAgIGRlZiBzZWN1cmVfY29ubmVjdGlvbihzZWxmKToKLSAgICAgICAgICAgIHNvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHNvY2tldCA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNvY2tldCkKICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCkBAIC0xMDQ5LDEwICsxMDUxLDE5IEBACiAgICAgICAgIGZ0cC5jbG9zZSgpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnTVNHX09PQicsICdGVFBfUE9SVCcsICdNQVhMSU5FJywgJ0NSTEYnLCAnQl9DUkxGJywKKyAgICAgICAgICAgICAgICAgICAgICdFcnJvcicsICdwYXJzZTE1MCcsICdwYXJzZTIyNycsICdwYXJzZTIyOScsICdwYXJzZTI1NycsCisgICAgICAgICAgICAgICAgICAgICAncHJpbnRfbGluZScsICdmdHBjcCcsICd0ZXN0J30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZnRwbGliLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0cywKICAgICAgICAgICAgICBUZXN0SVB2NkVudmlyb25tZW50LAotICAgICAgICAgICAgIFRlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzc10KKyAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3MsCisgICAgICAgICAgICAgTWlzY1Rlc3RDYXNlXQogCiAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQppbmRleCA2YTNiZjY0Li43NTQyN2RmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQpAQCAtOCw2ICs4LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5CitpbXBvcnQgY29udGV4dGxpYgogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTIwLDYgKzIxLDE0IEBACiAKIGRlY2ltYWwgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCiAKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgcmVwbGFjZWRfbW9kdWxlKG5hbWUsIHJlcGxhY2VtZW50KToKKyAgICBvcmlnaW5hbF9tb2R1bGUgPSBzeXMubW9kdWxlc1tuYW1lXQorICAgIHN5cy5tb2R1bGVzW25hbWVdID0gcmVwbGFjZW1lbnQKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBvcmlnaW5hbF9tb2R1bGUKIAogZGVmIGNhcHR1cmUoKmFyZ3MsICoqa3cpOgogICAgICIiImNhcHR1cmUgYWxsIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIiIiCkBAIC0xNjcsNTggKzE3NiwzNSBAQAogICAgICAgICBwMi5uZXdfYXR0ciA9ICdzcGFtJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLm5ld19hdHRyLCAnc3BhbScpCiAKLQotQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCi1jbGFzcyBUZXN0UGFydGlhbEMoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpZiBjX2Z1bmN0b29sczoKLSAgICAgICAgcGFydGlhbCA9IGNfZnVuY3Rvb2xzLnBhcnRpYWwKLQotICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfdW53cml0YWJsZShzZWxmKToKLSAgICAgICAgIyBhdHRyaWJ1dGVzIHNob3VsZCBub3QgYmUgd3JpdGFibGUKLSAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAxLCAyLCBhPTEwLCBiPTIwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2Z1bmMnLCBtYXApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnYXJncycsICgxLCAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdrZXl3b3JkcycsIGRpY3QoYT0xLCBiPTIpKQotCi0gICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoaGV4KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgcC5fX2RpY3RfXwotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdwYXJ0aWFsIG9iamVjdCBhbGxvd2VkIF9fZGljdF9fIHRvIGJlIGRlbGV0ZWQnKQotCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgYXJncyA9IChvYmplY3QoKSwgb2JqZWN0KCkpCiAgICAgICAgIGFyZ3NfcmVwciA9ICcsICcuam9pbihyZXByKGEpIGZvciBhIGluIGFyZ3MpCiAgICAgICAgIGt3YXJncyA9IHsnYSc6IG9iamVjdCgpLCAnYic6IG9iamVjdCgpfQogICAgICAgICBrd2FyZ3NfcmVwcnMgPSBbJ2E9e2Ehcn0sIGI9e2Ihcn0nLmZvcm1hdF9tYXAoa3dhcmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdiPXtiIXJ9LCBhPXthIXJ9Jy5mb3JtYXRfbWFwKGt3YXJncyldCi0gICAgICAgIGlmIHNlbGYucGFydGlhbCBpcyBjX2Z1bmN0b29scy5wYXJ0aWFsOgorICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaW4gKGNfZnVuY3Rvb2xzLnBhcnRpYWwsIHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgICAgIG5hbWUgPSAnZnVuY3Rvb2xzLnBhcnRpYWwnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuYW1lID0gc2VsZi5wYXJ0aWFsLl9fbmFtZV9fCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7fSh7IXJ9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7bmFtZX0oe2NhcHR1cmUhcn0pJywgcmVwcihmKSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICphcmdzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7fSh7IXJ9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBhcmdzX3JlcHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7bmFtZX0oe2NhcHR1cmUhcn0sIHthcmdzX3JlcHJ9KScsIHJlcHIoZikpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXByKGYpLAotICAgICAgICAgICAgICAgICAgICAgIFsne30oeyFyfSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwga3dhcmdzX3JlcHIpCisgICAgICAgICAgICAgICAgICAgICAgW2Yne25hbWV9KHtjYXB0dXJlIXJ9LCB7a3dhcmdzX3JlcHJ9KScKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJnc19yZXByIGluIGt3YXJnc19yZXByc10pCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVwcihmKSwKLSAgICAgICAgICAgICAgICAgICAgICBbJ3t9KHshcn0sIHt9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBhcmdzX3JlcHIsIGt3YXJnc19yZXByKQorICAgICAgICAgICAgICAgICAgICAgIFtmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2FyZ3NfcmVwcn0sIHtrd2FyZ3NfcmVwcn0pJwogICAgICAgICAgICAgICAgICAgICAgICBmb3Iga3dhcmdzX3JlcHIgaW4ga3dhcmdzX3JlcHJzXSkKIAogICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaXMgY19mdW5jdG9vbHMucGFydGlhbDoKKyAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGluIChjX2Z1bmN0b29scy5wYXJ0aWFsLCBweV9mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgICAgICBuYW1lID0gJ2Z1bmN0b29scy5wYXJ0aWFsJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYucGFydGlhbC5fX25hbWVfXwpAQCAtMjI2LDMwICsyMTIsMzEgQEAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVzKC4uLikpJyAlIChuYW1lLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKC4uLiknICUgKG5hbWUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoZiwpLCB7fSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgJXMoLi4uKSknICUgKG5hbWUsIGNhcHR1cmUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIC4uLiknICUgKG5hbWUsIGNhcHR1cmUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIGE9JXMoLi4uKSknICUgKG5hbWUsIGNhcHR1cmUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIGE9Li4uKScgJSAobmFtZSwgY2FwdHVyZSwpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCi0gICAgICAgIGYuYXR0ciA9IFtdCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmX2NvcHkpLCBzaWduYXR1cmUoZikpCisgICAgICAgIHdpdGggc2VsZi5BbGxvd1BpY2tsZSgpOgorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQorICAgICAgICAgICAgZi5hdHRyID0gW10KKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGZfY29weSksIHNpZ25hdHVyZShmKSkKIAogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKQEAgLTI3NCwxMSArMjYxLDEzIEBACiAgICAgZGVmIHRlc3Rfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwgZGljdChhdHRyPVtdKSkpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIGRpY3QoYXR0cj1bXSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMiwgYj0yMCksICgoMSwgMiksIHsnYSc6IDEwLCAnYic6IDIwfSkpCiAKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIE5vbmUpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGYpLCAoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwge30pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMiwgYj0yMCksICgoMSwgMiksIHsnYSc6IDEwLCAnYic6IDIwfSkpCiAKQEAgLTMyNSwzOCArMzE0LDM5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyWzBdKSwgdHVwbGUpCiAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcGlja2xlKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIGYuX19zZXRzdGF0ZV9fKChmLCAoKSwge30sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhmLCBwcm90bykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgd2l0aCBzZWxmLkFsbG93UGlja2xlKCk6CisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKGYsIHByb3RvKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5hcmdzWzBdLCBmX2NvcHkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmFyZ3NbMF0sIGZfY29weSkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkua2V5d29yZHNbJ2EnXSwgZl9jb3B5KQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkua2V5d29yZHNbJ2EnXSwgZl9jb3B5KQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICMgSXNzdWUgNjA4MzogUmVmZXJlbmNlIGNvdW50aW5nIGJ1ZwogICAgIGRlZiB0ZXN0X3NldHN0YXRlX3JlZmNvdW50KHNlbGYpOgpAQCAtMzc1LDI0ICszNjUsNjAgQEAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChvYmplY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5fX3NldHN0YXRlX18sIEJhZFNlcXVlbmNlKCkpCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQorY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgaWYgY19mdW5jdG9vbHM6CisgICAgICAgIHBhcnRpYWwgPSBjX2Z1bmN0b29scy5wYXJ0aWFsCisKKyAgICBjbGFzcyBBbGxvd1BpY2tsZToKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3Vud3JpdGFibGUoc2VsZik6CisgICAgICAgICMgYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHdyaXRhYmxlCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgMSwgMiwgYT0xMCwgYj0yMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdmdW5jJywgbWFwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2FyZ3MnLCAoMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAna2V5d29yZHMnLCBkaWN0KGE9MSwgYj0yKSkKKworICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGhleCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHAuX19kaWN0X18KKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgncGFydGlhbCBvYmplY3QgYWxsb3dlZCBfX2RpY3RfXyB0byBiZSBkZWxldGVkJykKIAogY2xhc3MgVGVzdFBhcnRpYWxQeShUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHBhcnRpYWwgPSBzdGF0aWNtZXRob2QocHlfZnVuY3Rvb2xzLnBhcnRpYWwpCisgICAgcGFydGlhbCA9IHB5X2Z1bmN0b29scy5wYXJ0aWFsCiAKKyAgICBjbGFzcyBBbGxvd1BpY2tsZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fY20gPSByZXBsYWNlZF9tb2R1bGUoImZ1bmN0b29scyIsIHB5X2Z1bmN0b29scykKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbS5fX2VudGVyX18oKQorICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRiKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbS5fX2V4aXRfXyh0eXBlLCB2YWx1ZSwgdGIpCiAKIGlmIGNfZnVuY3Rvb2xzOgotICAgIGNsYXNzIFBhcnRpYWxTdWJjbGFzcyhjX2Z1bmN0b29scy5wYXJ0aWFsKToKKyAgICBjbGFzcyBDUGFydGlhbFN1YmNsYXNzKGNfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICBwYXNzCiAKK2NsYXNzIFB5UGFydGlhbFN1YmNsYXNzKHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKKyAgICBwYXNzCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQogY2xhc3MgVGVzdFBhcnRpYWxDU3ViY2xhc3MoVGVzdFBhcnRpYWxDKToKICAgICBpZiBjX2Z1bmN0b29sczoKLSAgICAgICAgcGFydGlhbCA9IFBhcnRpYWxTdWJjbGFzcworICAgICAgICBwYXJ0aWFsID0gQ1BhcnRpYWxTdWJjbGFzcwogCiAgICAgIyBwYXJ0aWFsIHN1YmNsYXNzZXMgYXJlIG5vdCBvcHRpbWl6ZWQgZm9yIG5lc3RlZCBjYWxscwogICAgIHRlc3RfbmVzdGVkX29wdGltaXphdGlvbiA9IE5vbmUKIAorY2xhc3MgVGVzdFBhcnRpYWxQeVN1YmNsYXNzKFRlc3RQYXJ0aWFsUHkpOgorICAgIHBhcnRpYWwgPSBQeVBhcnRpYWxTdWJjbGFzcwogCiBjbGFzcyBUZXN0UGFydGlhbE1ldGhvZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY4Myw5ICs3MDksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGEgZGlmZmVyZW50IHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuZGljdF9hdHRyLCBmLmRpY3RfYXR0cikKIAotCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKIGNsYXNzIFRlc3RSZWR1Y2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGZ1bmMgPSBmdW5jdG9vbHMucmVkdWNlCisgICAgaWYgY19mdW5jdG9vbHM6CisgICAgICAgIGZ1bmMgPSBjX2Z1bmN0b29scy5yZWR1Y2UKIAogICAgIGRlZiB0ZXN0X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgU3F1YXJlczoKQEAgLTE1NjcsMTMgKzE1OTQsMTUgQEAKICAgICAgICAgYmFzZXMgPSBbYy5TZXF1ZW5jZSwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNldF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGRpY3QsIGhheXN0YWNrKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKICAgICAgICAgYmFzZXMgPSBbYy5Db250YWluZXIsIGMuTWFwcGluZywgYy5NdXRhYmxlTWFwcGluZywgYy5PcmRlcmVkRGljdF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGMuQ2hhaW5NYXAsIGhheXN0YWNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbYy5DaGFpbk1hcCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKIAogICAgICAgICAjIElmIHRoZXJlJ3MgYSBnZW5lcmljIGZ1bmN0aW9uIHdpdGggaW1wbGVtZW50YXRpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICMgYm90aCBTaXplZCBhbmQgQ29udGFpbmVyLCBwYXNzaW5nIGEgZGVmYXVsdGRpY3QgdG8gaXQgcmVzdWx0cyBpbiBhbgpAQCAtMTU5NCw5ICsxNjIzLDkgQEAKICAgICAgICAgYmFzZXMgPSBbYy5NdXRhYmxlU2VxdWVuY2UsIGMuTXV0YWJsZU1hcHBpbmddCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhELCBiYXNlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0QsIGMuTXV0YWJsZVNlcXVlbmNlLCBjLlNlcXVlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuTWFwcGluZywgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtELCBjLk11dGFibGVTZXF1ZW5jZSwgYy5TZXF1ZW5jZSwgYy5SZXZlcnNpYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF0pCiAKICAgICAgICAgIyBDb250YWluZXIgYW5kIENhbGxhYmxlIGFyZSByZWdpc3RlcmVkIG9uIGRpZmZlcmVudCBiYXNlIGNsYXNzZXMgYW5kCkBAIC0xNjA5LDcgKzE2MzgsOCBAQAogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oQywgaGF5c3RhY2spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtDLCBjLkNhbGxhYmxlLCBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfYWJjKHNlbGYpOgogICAgICAgICBjID0gY29sbGVjdGlvbnMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggYmVhYzk5My4uMjEzYjJiYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTQsNyArNCw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCByZQogCi1yeCA9IHJlLmNvbXBpbGUoJ1woKFxTKykucHksIGxpbmUgKFxkKyknKQorcnggPSByZS5jb21waWxlKHInXCgoXFMrKS5weSwgbGluZSAoXGQrKScpCiAKIGRlZiBnZXRfZXJyb3JfbG9jYXRpb24obXNnKToKICAgICBtbyA9IHJ4LnNlYXJjaChzdHIobXNnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IGE0ZDY4NGIuLmU3Mjc0OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtNjg0LDcgKzY4NCw2IEBACiAgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggdGhlIF9fbWFpbl9fIG1vZHVsZSBhbmQgY2hlY2sKICAgICAgICAgIyBpdCBnZXRzIGNvbGxlY3RlZCBhdCBpbnRlcnByZXRlciBzaHV0ZG93bi4KICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICBpbXBvcnQgd2Vha3JlZgogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ19fZGVsX18gY2FsbGVkJykKQEAgLTY5OSw3ICs2OTgsNiBAQAogICAgICAgICAjIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIGEgbm9uLV9fbWFpbl9fIG1vZHVsZS4KICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBtb2R1bGUgPSAiIiJpZiAxOgotICAgICAgICAgICAgICAgIGltcG9ydCB3ZWFrcmVmCiAgICAgICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnX19kZWxfXyBjYWxsZWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCAzZGIxMGI2Li41ZmJmMTU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtNSwxMyArNSwxNSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHBwcmludAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGxvY2FsZQogCisjIEZJWE1FOiBpc3N1ZSAjMjgwMjMKK3JhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJGSVhNRTogaXNzdWUgIzI4MDIzLCBjb21wYWN0IGRpY3QgKGlzc3VlICMyNzM1MCkgYnJva2UgcHl0aG9uLWdkYi5weSIpCisKICMgSXMgdGhpcyBQeXRob24gY29uZmlndXJlZCB0byBzdXBwb3J0IHRocmVhZHM/CiB0cnk6CiAgICAgaW1wb3J0IF90aHJlYWQKQEAgLTExMSw2ICsxMTMsNyBAQAogCiBCUkVBS1BPSU5UX0ZOPSdidWlsdGluX2lkJwogCitAdW5pdHRlc3Quc2tpcElmKHN1cHBvcnQuUEdPLCAibm90IHVzZWZ1bCBmb3IgUEdPIikKIGNsYXNzIERlYnVnZ2VyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGF0IHRoZSBkZWJ1Z2dlciBjYW4gZGVidWcgUHl0aG9uLiIiIgpAQCAtMTc3LDYgKzE4MCw3IEBACiAgICAgICAgIGFyZ3MgPSBbJy0tZXZhbC1jb21tYW5kPSVzJyAlIGNtZCBmb3IgY21kIGluIGNvbW1hbmRzXQogICAgICAgICBhcmdzICs9IFsiLS1hcmdzIiwKICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGVdCisgICAgICAgIGFyZ3MuZXh0ZW5kKHN1YnByb2Nlc3MuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQogCiAgICAgICAgIGlmIG5vdCBpbXBvcnRfc2l0ZToKICAgICAgICAgICAgICMgLVMgc3VwcHJlc3NlcyB0aGUgZGVmYXVsdCAnaW1wb3J0IHNpdGUnCkBAIC0yNDAsNyArMjQ0LDcgQEAKICAgICAgICAgIyBnZGIgY2FuIGluc2VydCBhZGRpdGlvbmFsICdcbicgYW5kIHNwYWNlIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBwbGFjZXMKICAgICAgICAgIyBpbiBpdHMgb3V0cHV0LCBkZXBlbmRpbmcgb24gdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCBpdCdzIGNvbm5lY3RlZAogICAgICAgICAjIHRvICh1c2luZyBpdHMgIndyYXBfaGVyZSIgZnVuY3Rpb24pCi0gICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrXFMqUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCisgICAgICAgIG0gPSByZS5tYXRjaChyJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAogICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwgcmUuRE9UQUxMKQogICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBnZGIgb3V0cHV0OiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpAQCAtMjkyLDcgKzI5Niw5IEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBkaWN0aW9uYXJpZXMnCiAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7fSkKICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2Jhcid9LCAieydmb28nOiAnYmFyJ30iKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJywgJ2RvdWdsYXMnOiA0Mn0sICJ7J2RvdWdsYXMnOiA0MiwgJ2Zvbyc6ICdiYXInfSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJywgJ2RvdWdsYXMnOiA0Mn0sICJ7J2RvdWdsYXMnOiA0MiwgJ2Zvbyc6ICdiYXInfSIpCiAKICAgICBkZWYgdGVzdF9saXN0cyhzZWxmKToKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGxpc3RzJwpAQCAtMzU1LDkgKzM2MSwxMiBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cycKICAgICAgICAgaWYgKGdkYl9tYWpvcl92ZXJzaW9uLCBnZGJfbWlub3JfdmVyc2lvbikgPCAoNywgMyk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cyBuZWVkcyBnZGIgNy4zIG9yIGxhdGVyIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldCgpLCAnc2V0KCknKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYScsICdiJ10pLCAieydhJywgJ2InfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWzQsIDUsIDZdKSwgIns0LCA1LCA2fSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoKSwgInNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnXSksICJ7J2EnfSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGZyb3plbnNldCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnLCAnYiddKSwgInsnYScsICdiJ30iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbNCwgNSwgNl0pLCAiezQsIDUsIDZ9IikKIAogICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGhhbmRsZSBzZXRzIGNvbnRhaW5pbmcgdGhlICJkdW1teSIga2V5IHZhbHVlLAogICAgICAgICAjIHdoaWNoIGhhcHBlbnMgb24gZGVsZXRpb246CkBAIC0zNzAsOSArMzc5LDEyIEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzJwogICAgICAgICBpZiAoZ2RiX21ham9yX3ZlcnNpb24sIGdkYl9taW5vcl92ZXJzaW9uKSA8ICg3LCAzKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzIG5lZWRzIGdkYiA3LjMgb3IgbGF0ZXIiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KCksICdmcm96ZW5zZXQoKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJywgJ2InXSksICJmcm96ZW5zZXQoeydhJywgJ2InfSkiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFs0LCA1LCA2XSksICJmcm96ZW5zZXQoezQsIDUsIDZ9KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoKSwgImZyb3plbnNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnXSksICJmcm96ZW5zZXQoeydhJ30pIikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgZnJvemVuc2V0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYScsICdiJ10pLCAiZnJvemVuc2V0KHsnYScsICdiJ30pIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWzQsIDUsIDZdKSwgImZyb3plbnNldCh7NCwgNSwgNn0pIikKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbnMoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIFJ1bnRpbWVFcnJvcgpAQCAtNTAxLDYgKzUxMywxMCBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbnNfaGVscChzZWxmKToKICAgICAgICAgJ0Vuc3VyZSB0aGF0IHRoZSBuZXctc3R5bGUgY2xhc3MgX0hlbHBlciBpbiBzaXRlLnB5IGNhbiBiZSBoYW5kbGVkJworCisgICAgICAgIGlmIHN5cy5mbGFncy5ub19zaXRlOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibmVlZCBzaXRlIG1vZHVsZSwgYnV0IC1TIG9wdGlvbiB3YXMgdXNlZCIpCisKICAgICAgICAgIyAodGhpcyB3YXMgdGhlIGlzc3VlIGNhdXNpbmcgdHJhY2ViYWNrcyBpbgogICAgICAgICAjICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODAzMiNtc2cxMDA1MzcgKQogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpZChfX2J1aWx0aW5zX18uaGVscCknLCBpbXBvcnRfc2l0ZT1UcnVlKQpAQCAtNTM2LDcgKzU1Miw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NDksNyArNTY1LDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU2Myw3ICs1NzksNyBAQAogYS5hbl9hdHRyID0gYgogYi5hbl9hdHRyID0gYQogaWQoYSknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTk4LDcgKzYxNCw3IEBACiAKICAgICBkZWYgdGVzdF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaW1wb3J0IHN5czsgaWQoc3lzLnN0ZG91dC5yZWFkbGluZXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTYxMyw3ICs2MjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0nYnVpbHRpbl9pZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydwcmludCAoUHlGcmFtZU9iamVjdCopKCgoUHlDb2RlT2JqZWN0Kil2KS0+Y29fem9tYmllZnJhbWUpJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJy4qXHMrXCQxID1ccytGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5ET1RBTEwpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcl9zdG9wLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDQ3OS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3Jfc3RvcC5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CmluZGV4IGNkNmE0M2QuLmY4MWM4MmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKQEAgLTI0NSwxMSArMjQ1LDExIEBACiAgICAgICAgICAgICB5aWVsZAogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiksIFwKLSAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogCiAgICAgICAgICAgICBuZXh0KGdlbigpKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAuKiByYWlzZWQgU3RvcEl0ZXJhdGlvbiIpLCBcCiAgICAgICAgICAgICAgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKIApAQCAtMjY4LDcgKzI2OCw3IEBACiAgICAgICAgIGcgPSBmKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCAxKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CiAgICAgICAgICAgICAgICAgbmV4dChnKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQppbmRleCBiNzdkMWQ3Li5hZTVkZDZhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKQEAgLTEwLDExICsxMCw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCi1kZWYgc2FmZV9ybWRpcihkaXJuYW1lKToKLSAgICB0cnk6Ci0gICAgICAgIG9zLnJtZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHBhc3MKK2RlZiBjcmVhdGVfZmlsZShmaWxlbmFtZSwgZGF0YT1iJ2ZvbycpOgorICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3hiJywgMCkgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKGRhdGEpCiAKIAogY2xhc3MgR2VuZXJpY1Rlc3Q6CkBAIC05Nyw1MiArOTUsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzMVtuOm4rMV0sIHMyW246bisxXSkKIAogICAgIGRlZiB0ZXN0X2dldHNpemUoc2VsZik6Ci0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShzdXBwb3J0LlRFU1RGTiksIDMpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQogCi0gICAgZGVmIHRlc3RfdGltZShzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgImFiIikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInSGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKGZpbGVuYW1lKSwgNSkKKyAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBiJ0hlbGxvIFdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoZmlsZW5hbWUpLCAxMikKKworICAgIGRlZiB0ZXN0X2ZpbGV0aW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInZm9vJykKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJhYiIsIDApIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIiYmFyIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJyYiIpCi0gICAgICAgICAgICBkID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBiImZvb2JhciIpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKAotICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRjdGltZShzdXBwb3J0LlRFU1RGTiksCi0gICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldG10aW1lKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2VkOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIiZm9vYmFyIikKKworICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCgKKyAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRjdGltZShmaWxlbmFtZSksCisgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0bXRpbWUoZmlsZW5hbWUpCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2V4aXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ4YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnBhdGhtb2R1bGUgPT0gZ2VuZXJpY3BhdGg6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUubGV4aXN0cyhzdXBwb3J0LlRFU1RGTiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhmaWxlbmFtZSksIFRydWUpCisKKyAgICAgICAgaWYgbm90IHNlbGYucGF0aG1vZHVsZSA9PSBnZW5lcmljcGF0aDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmxleGlzdHMoZmlsZW5hbWUpLCBUcnVlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCiAgICAgZGVmIHRlc3RfZXhpc3RzX2ZkKHNlbGYpOgpAQCAtMTU0LDUzICsxNDcsNjYgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKHcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhyKSkKIAotICAgIGRlZiB0ZXN0X2lzZGlyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgICAgICBvcy5yZW1vdmUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKHN1cHBvcnQuVEVTVEZOKSwgVHJ1ZSkKLSAgICAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2FmZV9ybWRpcihzdXBwb3J0LlRFU1RGTikKKyAgICBkZWYgdGVzdF9pc2Rpcl9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCiAKLSAgICBkZWYgdGVzdF9pc2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBvcy5yZW1vdmUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzYWZlX3JtZGlyKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBGYWxzZSkKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2NyZWF0ZV9maWxlKGZpbGVuYW1lKToKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShiJ2ZvbycpCisgICAgZGVmIHRlc3RfaXNkaXJfZGlyKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICBvcy5ta2RpcihmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgZGVmIHRlc3RfaXNmaWxlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIFRydWUpCisKKyAgICBkZWYgdGVzdF9pc2ZpbGVfZGlyKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgb3MubWtkaXIoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQogCiAgICAgZGVmIHRlc3Rfc2FtZWZpbGUoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbiwgdGVzdF9mbikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuKQorICAgICAgICBmaWxlMSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGZpbGUyID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlMikKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZShmaWxlMSwgZmlsZTEpKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZShmaWxlMSwgZmlsZTIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKQorCisgICAgZGVmIF90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisKKyAgICAgICAgZnVuYyh0ZXN0X2ZuMSwgdGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKKyAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3NhbWVmaWxlX29uX3N5bWxpbmsoc2VsZik6CkBAIC0yMDksMzEgKzIxNSwzNyBAQAogICAgIGRlZiB0ZXN0X3NhbWVmaWxlX29uX2xpbmsoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc2FtZWZpbGVfb25fbGlua19mdW5jKG9zLmxpbmspCiAKLSAgICBkZWYgX3Rlc3Rfc2FtZWZpbGVfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKLQotICAgICAgICAgICAgZnVuYyh0ZXN0X2ZuMSwgdGVzdF9mbjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4yKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQogICAgIGRlZiB0ZXN0X3NhbWVzdGF0KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4pCi0gICAgICAgICAgICB0ZXN0X2ZucyA9IFt0ZXN0X2ZuXSoyCi0gICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuKQorICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKKyAgICAgICAgc3RhdDEgPSBvcy5zdGF0KHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KHN0YXQxLCBvcy5zdGF0KHRlc3RfZm4xKSkpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjIpCisgICAgICAgIHN0YXQyID0gb3Muc3RhdCh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoc3RhdDEsIHN0YXQyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCkKKworICAgIGRlZiBfdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6CisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChvcy5zdGF0KHRlc3RfZm4xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KHRlc3RfZm4yKSkpCisgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQob3Muc3RhdCh0ZXN0X2ZuMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQodGVzdF9mbjIpKSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9zeW1saW5rKHNlbGYpOgpAQCAtMjQyLDMxICsyNTQsMTcgQEAKICAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhvcy5saW5rKQogCi0gICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjEpCi0gICAgICAgICAgICB0ZXN0X2ZucyA9ICh0ZXN0X2ZuMSwgdGVzdF9mbjIpCi0gICAgICAgICAgICBmdW5jKCp0ZXN0X2ZucykKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMikKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjEpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KICAgICBkZWYgdGVzdF9zYW1lb3BlbmZpbGUoc2VsZik6Ci0gICAgICAgIGZuYW1lID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAid2IiKSBhcyBhLCBvcGVuKGZuYW1lLCAid2IiKSBhcyBiOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lb3BlbmZpbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZmlsZW5vKCksIGIuZmlsZW5vKCkpKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZnAxOgorICAgICAgICAgICAgZmQxID0gZnAxLmZpbGVubygpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGZwMjoKKyAgICAgICAgICAgICAgICBmZDIgPSBmcDIuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVvcGVuZmlsZShmZDEsIGZkMikpCisKIAogY2xhc3MgVGVzdEdlbmVyaWNUZXN0KEdlbmVyaWNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBJc3N1ZSAxNjg1MjogR2VuZXJpY1Rlc3QgY2FuJ3QgaW5oZXJpdCBmcm9tIHVuaXR0ZXN0LlRlc3RDYXNlCkBAIC0zOTAsMTAgKzM4OCwxMyBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKIAorICAgICAgICAjIGF2b2lkIFVuaWNvZGVEZWNvZGVFcnJvciBvbiBXaW5kb3dzCisgICAgICAgIHVuZGVjb2RhYmxlX3BhdGggPSBiJycgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSBiJ2ZceGYyXHhmMicKKwogICAgICAgICAjIEFic3BhdGggcmV0dXJucyBieXRlcyB3aGVuIHRoZSBhcmcgaXMgYnl0ZXMKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIHVuZGVjb2RhYmxlX3BhdGgsIGInL2ZvbycsIGInQzpcXCcpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChwYXRoKSwgYnl0ZXMpCiAKICAgICBkZWYgdGVzdF9yZWFscGF0aChzZWxmKToKQEAgLTQ1MiwxNiArNDUzLDE1IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCBiJ2J5dGVzJykKICAgICAgICAgICAgICMgcmVncmVzc2lvbiwgc2VlICMxNTM3NwotICAgICAgICAgICAgZXJybXNnID0gcidqb2luXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyLCAnc3RyJykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnbGlzdCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2xpc3QnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihbXSkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKICAgICBkZWYgdGVzdF9yZWxwYXRoX2Vycm9ycyhzZWxmKToKQEAgLTQ3MywxNCArNDczLDU5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYidieXRlcycsICdzdHInKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgYidieXRlcycpCi0gICAgICAgICAgICBlcnJtc2cgPSByJ3JlbHBhdGhcKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoNDIsICdzdHInKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCA0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShzZWxmLmZpbGVfbmFtZSwgYiJ0ZXN0X2dlbmVyaWNwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5leGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5pc2ZpbGUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmlzZGlyKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wcmVmaXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5jb21tb25wcmVmaXgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRzaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldHNpemUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldG10aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldGF0aW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRjdGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRjdGltZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc2FtZWZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZSkpCisKKwogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCA5ODRhYWM3Li44YTE5NGFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTUsMTAgKzUsNiBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3Rlc3RjYXBpIG1vZHVsZSBpc24ndCBhdmFpbGFibGUuCiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCiBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19rZXl3b3JkcywgZ2V0YXJnc19rZXl3b3JkX29ubHkKLXRyeToKLSAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19MLCBnZXRhcmdzX0sKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBnZXRhcmdzX0wgPSBOb25lICMgUFlfTE9OR19MT05HIG5vdCBhdmFpbGFibGUKIAogIyA+IEhvdyBhYm91dCB0aGUgZm9sbG93aW5nIGNvdW50ZXJwcm9wb3NhbC4gVGhpcyBhbHNvIGNoYW5nZXMgc29tZSBvZgogIyA+IHRoZSBvdGhlciBmb3JtYXQgY29kZXMgdG8gYmUgYSBsaXR0bGUgbW9yZSByZWd1bGFyLgpAQCAtMzA5LDcgKzMwNSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGFyZ3NfbiwgVkVSWV9MQVJHRSkKIAogCi1AdW5pdHRlc3Quc2tpcElmKGdldGFyZ3NfTCBpcyBOb25lLCAnUFlfTE9OR19MT05HIGlzIG5vdCBhdmFpbGFibGUnKQogY2xhc3MgTG9uZ0xvbmdfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X0woc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wKQEAgLTM2NSw3ICszNjAsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihGbG9hdFN1YmNsYXNzKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEZsb2F0U3ViY2xhc3MyKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19mLCBCYWRGbG9hdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDIoKSksIDQuMjUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQyKCkpLCA0LjI1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDMoNy41KSksIDcuNSkKIAogICAgICAgICBmb3IgeCBpbiAoRkxUX01JTiwgLUZMVF9NSU4sIEZMVF9NQVgsIC1GTFRfTUFYLCBJTkYsIC1JTkYpOgpAQCAtMzkwLDcgKzM4Niw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEZsb2F0U3ViY2xhc3MoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoRmxvYXRTdWJjbGFzczIoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2QsIEJhZEZsb2F0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0MigpKSwgNC4yNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDIoKSksIDQuMjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0Myg3LjUpKSwgNy41KQogCiAgICAgICAgIGZvciB4IGluIChEQkxfTUlOLCAtREJMX01JTiwgREJMX01BWCwgLURCTF9NQVgsIElORiwgLUlORik6CkBAIC00NzQsNyArNDcxLDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfYXJncygqVHVwbGVTdWJjbGFzcyhbMSwgMl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgKDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmV0LCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIHR1cGxlKQogCiAgICAgICAgIHJldCA9IGdldF9hcmdzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXQsICgoKSwgTm9uZSkpCkBAIC01MTIsNyArNTA5LDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfa3dhcmdzKCoqRGljdFN1YmNsYXNzKHsnYSc6IDEsICdiJzogMn0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgeydhJzogMSwgJ2InOiAyfSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldCwgZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIGRpY3QpCiAKICAgICAgICAgcmV0ID0gZ2V0X2t3YXJncygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmV0LCAoe30sIE5vbmUpKQpAQCAtNjI4LDIwICs2MjUsMjAgQEAKICAgICAgICAgICAgICkKICAgICAgICAgIyByZXF1aXJlZCBhcmcgbWlzc2luZwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgciJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KG9wdGlvbmFsPTIpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIHIiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShrZXl3b3JkX29ubHk9MykKIAogICAgIGRlZiB0ZXN0X3Rvb19tYW55X2FyZ3Moc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKKyAgICAgICAgICAgIHIiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMywga2V5d29yZF9vbmx5PTUpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2tleXdvcmQoc2VsZik6CkBAIC02NTYsNiArNjUzLDM5IEBACiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAqKnsnXHVEQzgwJzogMTB9KQogCiAKK2NsYXNzIFBvc2l0aW9uYWxPbmx5QW5kS2V5d29yZHNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMgYXMgZ2V0YXJncworCisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIHVzaW5nIGFsbCBwb3NzaWJsZSBwb3NpdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2FyZ3Moc2VsZik6CisgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIsIGtleXdvcmQ9MyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgbWlzc2luZyBvcHRpb25hbCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIpLCAoMSwgMiwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCBrZXl3b3JkPTMpLCAoMSwgLTEsIDMpKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSksICgxLCAtMSwgLTEpKQorICAgICAgICAjIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJnIG1pc3NpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3Moa2V5d29yZD0zKQorCisgICAgZGVmIHRlc3RfZW1wdHlfa2V5d29yZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncygxLCAyLCAqKnsnJzogNjY2fSkKKworCiBjbGFzcyBCeXRlc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfYwpAQCAtODIyLDEwICs4NTIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2VzX2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfZXRfaGFzaChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfZXRfaGFzaApAQCAtODQ4LDEwICs4NzgsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2V0X2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfdShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfdQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5IGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CmluZGV4IGY1N2U1NDYuLmE4NTI0NDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgb3MKIGltcG9ydCBiYXNlNjQKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBnZXR0ZXh0CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNTI3LDYgKzUyNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19jbGFzc19fLCBEdW1teUdOVVRyYW5zbGF0aW9ucykKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydjMnB5JywgJ0VOT0VOVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGdldHRleHQsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggMTU0ZTNiNi4uNjVlMjZiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtOCw2ICs4LDk1IEBACiAjIHRlc3RpbmcgaW1wb3J0ICoKIGZyb20gc3lzIGltcG9ydCAqCiAKKyMgZGlmZmVyZW50IGltcG9ydCBwYXR0ZXJucyB0byBjaGVjayB0aGF0IF9fYW5ub3RhdGlvbnNfXyBkb2VzIG5vdCBpbnRlcmZlcmUKKyMgd2l0aCBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgdGVzdC5hbm5fbW9kdWxlIGFzIGFubl9tb2R1bGUKK2ltcG9ydCB0eXBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIHRlc3QgaW1wb3J0IGFubl9tb2R1bGUyCitpbXBvcnQgdGVzdAorCisjIFRoZXNlIGFyZSBzaGFyZWQgd2l0aCB0ZXN0X3Rva2VuaXplIGFuZCBvdGhlciB0ZXN0IG1vZHVsZXMuCisjCisjIE5vdGU6IHNpbmNlIHNldmVyYWwgdGVzdCBjYXNlcyBmaWx0ZXIgb3V0IGZsb2F0cyBieSBsb29raW5nIGZvciAiZSIgYW5kICIuIiwKKyMgZG9uJ3QgYWRkIGhleGFkZWNpbWFsIGxpdGVyYWxzIHRoYXQgY29udGFpbiAiZSIgb3IgIkUiLgorVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUyA9IFsKKyAgICAnMF8wXzAnLAorICAgICc0XzInLAorICAgICcxXzAwMDBfMDAwMCcsCisgICAgJzBiMTAwMV8wMTAwJywKKyAgICAnMHhmZmZmX2ZmZmYnLAorICAgICcwbzVfN183JywKKyAgICAnMV8wMF8wMC41JywKKyAgICAnMV8wMF8wMC41ZTUnLAorICAgICcxXzAwXzAwZTVfMScsCisgICAgJzFlMV8wJywKKyAgICAnLjFfNCcsCisgICAgJy4xXzRlMScsCisgICAgJzBiXzAnLAorICAgICcweF9mJywKKyAgICAnMG9fNScsCisgICAgJzFfMDBfMDBqJywKKyAgICAnMV8wMF8wMC41aicsCisgICAgJzFfMDBfMDBlNV8xaicsCisgICAgJy4xXzRqJywKKyAgICAnKDFfMi41KzNfM2opJywKKyAgICAnKC41XzZqKScsCitdCitJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMgPSBbCisgICAgIyBUcmFpbGluZyB1bmRlcnNjb3JlczoKKyAgICAnMF8nLAorICAgICc0Ml8nLAorICAgICcxLjRqXycsCisgICAgJzB4XycsCisgICAgJzBiMV8nLAorICAgICcweGZfJywKKyAgICAnMG81XycsCisgICAgJzAgaWYgMV9FbHNlIDEnLAorICAgICMgVW5kZXJzY29yZXMgaW4gdGhlIGJhc2Ugc2VsZWN0b3I6CisgICAgJzBfYjAnLAorICAgICcwX3hmJywKKyAgICAnMF9vNScsCisgICAgIyBPbGQtc3R5bGUgb2N0YWwsIHN0aWxsIGRpc2FsbG93ZWQ6CisgICAgJzBfNycsCisgICAgJzA5Xzk5JywKKyAgICAjIE11bHRpcGxlIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzOgorICAgICc0X19fX19fXzInLAorICAgICcwLjFfXzQnLAorICAgICcwLjFfXzRqJywKKyAgICAnMGIxMDAxX18wMTAwJywKKyAgICAnMHhmZmZmX19mZmZmJywKKyAgICAnMHhfX18nLAorICAgICcwbzVfXzc3JywKKyAgICAnMWUxX18wJywKKyAgICAnMWUxX18waicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBhIGRvdDoKKyAgICAnMV8uNCcsCisgICAgJzFfLjRqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgYSBkb3Q6CisgICAgJzEuXzQnLAorICAgICcxLl80aicsCisgICAgJy5fNScsCisgICAgJy5fNWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBhIHNpZ246CisgICAgJzEuMGUrXzEnLAorICAgICcxLjBlK18xaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBqOgorICAgICcxLjRfaicsCisgICAgJzEuNGU1X2onLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgZToKKyAgICAnMV9lMScsCisgICAgJzEuNF9lMScsCisgICAgJzEuNF9lMWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBlOgorICAgICcxZV8xJywKKyAgICAnMS40ZV8xJywKKyAgICAnMS40ZV8xaicsCisgICAgIyBDb21wbGV4IGNhc2VzIHdpdGggcGFyZW5zOgorICAgICcoMSsxLjVfal8pJywKKyAgICAnKDErMS41X2opJywKK10KKwogCiBjbGFzcyBUb2tlblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODcsNiArMTc2LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSBpZiAwZWxzZSAwLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIjAgaWYgMUVsc2UgMCIpCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwobGl0KSwgZXZhbChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIGxpdCkKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6IG5vIGxpdGVyYWwgYmVnaW5zIHdpdGggYW4gdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGV2YWwsICJfMCIpCisKICAgICBkZWYgdGVzdF9zdHJpbmdfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIHggPSAnJzsgeSA9ICIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDAgYW5kIHggPT0geSkKICAgICAgICAgeCA9ICdcJyc7IHkgPSAiJyI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzkpCkBAIC0xMzksNiArMjM2LDE5IEBACiAgICAgICAgICAgICAgICAgY29tcGlsZShzLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigidW5leHBlY3RlZCBFT0YiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAordmFyX2Fubm90X2dsb2JhbDogaW50ICMgYSBnbG9iYWwgYW5ub3RhdGVkIGlzIG5lY2Vzc2FyeSBmb3IgdGVzdF92YXJfYW5ub3QKKworIyBjdXN0b20gbmFtZXNwYWNlIGZvciB0ZXN0aW5nIF9fYW5ub3RhdGlvbnNfXworCitjbGFzcyBDTlM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9kY3QgPSB7fQorICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2RjdFtpdGVtLmxvd2VyKCldID0gdmFsdWUKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CisgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKworCiBjbGFzcyBHcmFtbWFyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBzaW5nbGVfaW5wdXQ6IE5FV0xJTkUgfCBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQgTkVXTElORQpAQCAtMTU0LDYgKzI2NCwxNjAgQEAKICAgICAgICAgIyB0ZXN0bGlzdCBFTkRNQVJLRVIKICAgICAgICAgeCA9IGV2YWwoJzEsIDAgb3IgMScpCiAKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfYmFzaWNzKHNlbGYpOgorICAgICAgICAjIGFsbCB0aGVzZSBzaG91bGQgYmUgYWxsb3dlZAorICAgICAgICB2YXIxOiBpbnQgPSA1CisgICAgICAgIHZhcjI6IFtpbnQsIHN0cl0KKyAgICAgICAgbXlfbHN0ID0gWzQyXQorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBpbnQubmV3X2F0dHI6IGludAorICAgICAgICBbbGlzdF1bMF06IHR5cGUKKyAgICAgICAgbXlfbHN0W29uZSgpLTFdOiBpbnQgPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfbHN0LCBbNV0pCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc3ludGF4X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBwYXJzZXIgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng6IGludDogc3RyIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBub25sb2NhbCB4OiBpbnRcbiIpCisgICAgICAgICMgQVNUIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJbeCwgMF06IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCk6IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICIoeCwpOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICh4LCB5KTogaW50ID0gKDEsIDIpXG4iKQorICAgICAgICAjIHN5bXRhYmxlIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2Jhc2ljX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgIyBleGVjdXRpb24gb3JkZXIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogbm9fbmFtZV9hZ2FpbiA9IDEvMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogMS8wID0gMAorICAgICAgICBnbG9iYWwgdmFyX2Fubm90X2dsb2JhbAorCisgICAgICAgICMgZnVuY3Rpb24gc2VtYW50aWNzCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBzdDogc3RyID0gIkhlbGxvIgorICAgICAgICAgICAgYS5iOiBpbnQgPSAoMSwgMikKKyAgICAgICAgICAgIHJldHVybiBzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7fSkKKyAgICAgICAgZGVmIGZfT0soKToKKyAgICAgICAgICAgIHg6IDEvMAorICAgICAgICBmX09LKCkKKyAgICAgICAgZGVmIGZiYWQoKToKKyAgICAgICAgICAgIHg6IGludAorICAgICAgICAgICAgcHJpbnQoeCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmJvdW5kTG9jYWxFcnJvcik6CisgICAgICAgICAgICBmYmFkKCkKKyAgICAgICAgZGVmIGYyYmFkKCk6CisgICAgICAgICAgICAobm9fc3VjaF9nbG9iYWwpOiBpbnQKKyAgICAgICAgICAgIHByaW50KG5vX3N1Y2hfZ2xvYmFsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmMmJhZCgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgTmFtZUVycm9yKQorCisgICAgICAgICMgY2xhc3Mgc2VtYW50aWNzCisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBfX2ZvbzogaW50CisgICAgICAgICAgICBzOiBzdHIgPSAiYXR0ciIKKyAgICAgICAgICAgIHogPSAyCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54OiBpbnQgPSB4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Fubm90YXRpb25zX18sIHsnX0NfX2Zvbyc6IGludCwgJ3MnOiBzdHJ9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDQmFkOgorICAgICAgICAgICAgICAgIG5vX3N1Y2hfbmFtZV9kZWZpbmVkLmF0dHI6IGludCA9IDAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQ2JhZDIoQyk6CisgICAgICAgICAgICAgICAgeDogaW50CisgICAgICAgICAgICAgICAgeC55OiBsaXN0ID0gW10KKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9tZXRhY2xhc3Nfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDTWV0YSh0eXBlKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiB7J19fYW5ub3RhdGlvbnNfXyc6IENOUygpfQorICAgICAgICBjbGFzcyBDQyhtZXRhY2xhc3M9Q01ldGEpOgorICAgICAgICAgICAgWFg6ICdBTk5PVCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDQy5fX2Fubm90YXRpb25zX19bJ3h4J10sICdBTk5PVCcpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfbW9kdWxlX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwcmludCh0ZXN0Ll9fYW5ub3RhdGlvbnNfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgIHsxOiAyLCAneCc6IGludCwgJ3knOiBzdHIsICdmJzogdHlwaW5nLlR1cGxlW2ludCwgaW50XX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZS5NLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnMTIzJzogMTIzLCAnbyc6IHR5cGV9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUyLl9fYW5ub3RhdGlvbnNfXywge30pCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfaW5fbW9kdWxlKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGZhaWwgdGhlIHNhbWUgd2F5IHdoZW4gZXhlY3V0ZWQKKyAgICAgICAgIyBvdXRzaWRlIG9mIG1vZHVsZSB3aGVyZSB0aGV5IHdlcmUgZGVmaW5lZAorICAgICAgICBmcm9tIHRlc3QuYW5uX21vZHVsZTMgaW1wb3J0IGZfYmFkX2FubiwgZ19iYWRfYW5uLCBEX2JhZF9hbm4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZl9iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZ19iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgRF9iYWRfYW5uKDUpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc2ltcGxlX2V4ZWMoc2VsZik6CisgICAgICAgIGducyA9IHt9OyBsbnM9IHt9CisgICAgICAgIGV4ZWMoIidkb2NzdHJpbmcnXG4iCisgICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfX1sxXSA9IDJcbiIKKyAgICAgICAgICAgICAieDogaW50ID0gNVxuIiwgZ25zLCBsbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG5zWyJfX2Fubm90YXRpb25zX18iXSwgezE6IDIsICd4JzogaW50fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBnbnNbJ19fYW5ub3RhdGlvbnNfXyddCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfY3VzdG9tX21hcHMoc2VsZik6CisgICAgICAgICMgdGVzdHMgd2l0aCBjdXN0b20gbG9jYWxzKCkgYW5kIF9fYW5ub3RhdGlvbnNfXworICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogQ05TKCl9CisgICAgICAgIGV4ZWMoJ1g6IGludDsgWjogc3RyID0gIloiOyAodyk6IGNvbXBsZXggPSAxaicsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddWyd6J10sIHN0cikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBuc1snX19hbm5vdGF0aW9uc19fJ11bJ3cnXQorICAgICAgICBub25sb2NfbnMgPSB7fQorICAgICAgICBjbGFzcyBDTlMyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RjdCA9IHt9CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5vbmxvY19ucworICAgICAgICAgICAgICAgIHNlbGYuX2RjdFtpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgbm9ubG9jX25zW2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisgICAgICAgIGV4ZWMoJ3g6IGludCA9IDEnLCB7fSwgQ05TMigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vbmxvY19uc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgaW50KQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3JlZmxlYWsoc2VsZik6CisgICAgICAgICMgY29tcGxleCBjYXNlOiBjdXN0b20gbG9jYWxzIHBsdXMgY3VzdG9tIF9fYW5ub3RhdGlvbnNfXworICAgICAgICAjIHRoaXMgd2FzIGNhdXNpbmcgcmVmbGVhaworICAgICAgICBjbnMgPSBDTlMoKQorICAgICAgICBub25sb2NfbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgY2xhc3MgQ05TMjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3QgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbm9ubG9jX25zCisgICAgICAgICAgICAgICAgc2VsZi5fZGN0W2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBub25sb2NfbnNbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKyAgICAgICAgZXhlYygnWDogc3RyJywge30sIENOUzIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub25sb2NfbnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIHN0cikKKwogICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CiAgICAgICAgICMjIyBbZGVjb3JhdG9yc10gJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogICAgICAgICAjIyMgZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKQEAgLTI5NSw2ICs1NTksMTAgQEAKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMixrMj0xMDAsdG9rd2FyZzE9MTAwLHRva3dhcmcyPTIwMCkKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMix0b2t3YXJnMT0xMDAsdG9rd2FyZzI9MjAwLCBrMj0xMDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqKTogcGFzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZGVmIGYoKiwpOiBwYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqLCAqKmt3ZHMpOiBwYXNzIikKKwogICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIGFmdGVyICphcmdsaXN0CiAgICAgICAgIGRlZiBmKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCkBAIC0zNDEsNyArNjA5LDcgQEAKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmdzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCkBAIC0zNTIsNiArNjIwLDIzIEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCisgICAgICAgICMgQ2hlY2sgdHJhaWxpbmcgY29tbWFzIGFyZSBwZXJtaXR0ZWQgaW4gZnVuY2RlZiBhcmd1bWVudCBsaXN0CisgICAgICAgIGRlZiBmKGEsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywpOiBwYXNzCisgICAgICAgIGRlZiBmKCoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsIGIsKTogcGFzcworICAgICAgICBkZWYgZigqLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiwgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiwgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsIGIsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICosIGIsICoqa3dkcywpOiBwYXNzCisKICAgICBkZWYgdGVzdF9sYW1iZGVmKHNlbGYpOgogICAgICAgICAjIyMgbGFtYmRlZjogJ2xhbWJkYScgW3ZhcmFyZ3NsaXN0XSAnOicgdGVzdAogICAgICAgICBsMSA9IGxhbWJkYSA6IDAKQEAgLTM3MCw2ICs2NTUsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsNigxLDIpLCAxKzIrMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDYoMSwyLGs9MTApLCAxKzIrMTApCiAKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyYWlsaW5nIGNvbW1hcyBhcmUgcGVybWl0dGVkCisgICAgICAgIGwxMCA9IGxhbWJkYSBhLDogMAorICAgICAgICBsMTEgPSBsYW1iZGEgKmFyZ3MsOiAwCisgICAgICAgIGwxMiA9IGxhbWJkYSAqKmt3ZHMsOiAwCisgICAgICAgIGwxMyA9IGxhbWJkYSBhLCAqYXJncyw6IDAKKyAgICAgICAgbDE0ID0gbGFtYmRhIGEsICoqa3dkcyw6IDAKKyAgICAgICAgbDE1ID0gbGFtYmRhICphcmdzLCBiLDogMAorICAgICAgICBsMTYgPSBsYW1iZGEgKiwgYiw6IDAKKyAgICAgICAgbDE3ID0gbGFtYmRhICphcmdzLCAqKmt3ZHMsOiAwCisgICAgICAgIGwxOCA9IGxhbWJkYSBhLCAqYXJncywgYiw6IDAKKyAgICAgICAgbDE5ID0gbGFtYmRhIGEsICosIGIsOiAwCisgICAgICAgIGwyMCA9IGxhbWJkYSBhLCAqYXJncywgKiprd2RzLDogMAorICAgICAgICBsMjEgPSBsYW1iZGEgKmFyZ3MsIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIyID0gbGFtYmRhICosIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIzID0gbGFtYmRhIGEsICphcmdzLCBiLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyNCA9IGxhbWJkYSBhLCAqLCBiLCAqKmt3ZHMsOiAwCisKIAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwpAQCAtMTA0MCwxOCArMTM0Miw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5vdGhlciwgNDIpCiAKICAgICBkZWYgdGVzdF9hc3luY19hd2FpdChzZWxmKToKLSAgICAgICAgYXN5bmMgPSAxCi0gICAgICAgIGF3YWl0ID0gMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jLCAxKQotCi0gICAgICAgIGRlZiBhc3luYygpOgotICAgICAgICAgICAgbm9ubG9jYWwgYXdhaXQKLSAgICAgICAgICAgIGF3YWl0ID0gMTAKLSAgICAgICAgYXN5bmMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0LCAxMCkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYXN5bmMuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCi0KICAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKICAgICAgICAgICAgIGRlZiBzdW0oKToKICAgICAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dycC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CmluZGV4IDI3MmIwODYuLjY5MDk1YTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CkBAIC05Miw1ICs5MiwxNSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBncnAuZ2V0Z3JnaWQsIGZha2VnaWQpCiAKKyAgICBkZWYgdGVzdF9ub25pbnRlZ2VyX2dpZChzZWxmKToKKyAgICAgICAgZW50cmllcyA9IGdycC5nZXRncmFsbCgpCisgICAgICAgIGlmIG5vdCBlbnRyaWVzOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbm8gZ3JvdXBzJykKKyAgICAgICAgIyBDaG9vc2UgYW4gZXhpc3RlbnQgZ2lkLgorICAgICAgICBnaWQgPSBlbnRyaWVzWzBdWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIGZsb2F0KGdpZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIHN0cihnaWQpKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggM2M1MTY3My4uYjQ1N2JkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtNSw2ICs1LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF80RwogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IGlvCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYXJyYXkKQEAgLTY3LDYgKzY4LDE4IEBACiAgICAgICAgICMgVGVzdCBtdWx0aXBsZSBjbG9zZSgpIGNhbGxzLgogICAgICAgICBmLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3JlYWRfd2l0aF9wYXRobGlrZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYubmFtZSwgc3RyKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIGQgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRhdGExICogNTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLm5hbWUsIHN0cikKKwogICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0X3dyaXRlX3h5IG1ldGhvZHMgdGVzdCB0aGF0IHdyaXRlIGFjY2VwdHMKICAgICAjIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzLWxpa2Ugb2JqZWN0IHR5cGUgYXMgaW5wdXQKICAgICAjIGFuZCB0aGF0IHRoZSBkYXRhIHdyaXR0ZW4gZXF1YWxzIGJ5dGVzKHh5KSBpbiBhbGwgY2FzZXMuCkBAIC00MzQsMTIgKzQ0NywxMiBAQAogCiAgICAgZGVmIHRlc3RfZGVjb21wcmVzc19saW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGd6aXAuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIGJvbWIgPSBnemlwLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIGNvbXByZXNzbGV2ZWw9OSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKIAogICAgICAgICBib21iID0gaW8uQnl0ZXNJTyhib21iKQogICAgICAgICBkZWNvbXAgPSBnemlwLkd6aXBGaWxlKGZpbGVvYmo9Ym9tYikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCkBAIC01MjEsNiArNTM0LDE1IEBACiAgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoc2VsZi5maWxlbmFtZSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExICogNTApCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBkYXRhMSAqIDUxKQorCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfYmluYXJ5X21vZGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW1wbGljaXQgYmluYXJ5IG1vZGVzIChubyAiYiIgb3IgInQiIGluIG1vZGUgc3RyaW5nKS4KICAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IGM5YjExM2UuLmY3NDhiNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTcsNiArNyw3IEBACiAjCiAKIGltcG9ydCBhcnJheQorZnJvbSBiaW5hc2NpaSBpbXBvcnQgdW5oZXhsaWZ5CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9zCkBAIC0xOSw2ICsyMCw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IF80RywgYmlnbWVtdGVzdCwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogCiAjIFdlcmUgd2UgY29tcGlsZWQgLS13aXRoLXB5ZGVidWcgb3Igd2l0aCAjZGVmaW5lIFB5X0RFQlVHPwogQ09NUElMRURfV0lUSF9QWURFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKQEAgLTI2LDYgKzI4LDIxIEBACiBjX2hhc2hsaWIgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdoYXNobGliJywgZnJlc2g9WydfaGFzaGxpYiddKQogcHlfaGFzaGxpYiA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2hhc2hsaWInLCBibG9ja2VkPVsnX2hhc2hsaWInXSkKIAordHJ5OgorICAgIGltcG9ydCBfYmxha2UyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX2JsYWtlMiA9IE5vbmUKKworcmVxdWlyZXNfYmxha2UyID0gdW5pdHRlc3Quc2tpcFVubGVzcyhfYmxha2UyLCAncmVxdWlyZXMgX2JsYWtlMicpCisKK3RyeToKKyAgICBpbXBvcnQgX3NoYTMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfc2hhMyA9IE5vbmUKKworcmVxdWlyZXNfc2hhMyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoX3NoYTMsICdyZXF1aXJlcyBfc2hhMycpCisKKwogZGVmIGhleHN0cihzKToKICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBieXRlcyksIHJlcHIocykKICAgICBoID0gIjAxMjM0NTY3ODlhYmNkZWYiCkBAIC0zNSwxMCArNTIsMzMgQEAKICAgICByZXR1cm4gcgogCiAKK1VSTCA9ICJodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L2hhc2hsaWIve30udHh0IgorCitkZWYgcmVhZF92ZWN0b3JzKGhhc2hfbmFtZSk6CisgICAgdXJsID0gVVJMLmZvcm1hdChoYXNoX25hbWUpCisgICAgdHJ5OgorICAgICAgICB0ZXN0ZGF0YSA9IHN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSh1cmwpCisgICAgZXhjZXB0IChPU0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSB7fSIuZm9ybWF0KHVybCkpCisgICAgd2l0aCB0ZXN0ZGF0YToKKyAgICAgICAgZm9yIGxpbmUgaW4gdGVzdGRhdGE6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCcsJykKKyAgICAgICAgICAgIHBhcnRzWzBdID0gYnl0ZXMuZnJvbWhleChwYXJ0c1swXSkKKyAgICAgICAgICAgIHlpZWxkIHBhcnRzCisKKwogY2xhc3MgSGFzaExpYlRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzdXBwb3J0ZWRfaGFzaF9uYW1lcyA9ICggJ21kNScsICdNRDUnLCAnc2hhMScsICdTSEExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWtlMmInLCAnYmxha2UycycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKworICAgIHNoYWtlcyA9IHsnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9CiAKICAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCiAgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKQEAgLTU2LDYgKzk2LDExIEBACiAgICAgICAgIGFsZ29yaXRobXMgPSBzZXQoKQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXM6CiAgICAgICAgICAgICBhbGdvcml0aG1zLmFkZChhbGdvcml0aG0ubG93ZXIoKSkKKworICAgICAgICBfYmxha2UyID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX2JsYWtlMicpCisgICAgICAgIGlmIF9ibGFrZTI6CisgICAgICAgICAgICBhbGdvcml0aG1zLnVwZGF0ZSh7J2JsYWtlMmInLCAnYmxha2Uycyd9KQorCiAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QgPSB7fQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIGFsZ29yaXRobXM6CiAgICAgICAgICAgICBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W2FsZ29yaXRobV0gPSBzZXQoKQpAQCAtNjQsMTAgKzEwOSwxMCBAQAogICAgICAgICAjIG9mIGhhc2hsaWIubmV3IGdpdmVuIHRoZSBhbGdvcml0aG0gbmFtZS4KICAgICAgICAgZm9yIGFsZ29yaXRobSwgY29uc3RydWN0b3JzIGluIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QuaXRlbXMoKToKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoZ2V0YXR0cihoYXNobGliLCBhbGdvcml0aG0pKQotICAgICAgICAgICAgZGVmIF90ZXN0X2FsZ29yaXRobV92aWFfaGFzaGxpYl9uZXcoZGF0YT1Ob25lLCBfYWxnPWFsZ29yaXRobSk6CisgICAgICAgICAgICBkZWYgX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldyhkYXRhPU5vbmUsIF9hbGc9YWxnb3JpdGhtLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCBkYXRhLCAqKmt3YXJncykKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldykKIAogICAgICAgICBfaGFzaGxpYiA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19oYXNobGliJykKQEAgLTk5LDYgKzE0NCwxOCBAQAogICAgICAgICBpZiBfc2hhNTEyOgogICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTM4NCcpCiAgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhNTEyJykKKyAgICAgICAgaWYgX2JsYWtlMjoKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJzJykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJiJykKKworICAgICAgICBfc2hhMyA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19zaGEzJykKKyAgICAgICAgaWYgX3NoYTM6CisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18yMjQnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMjU2JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzM4NCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM181MTInKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYWtlXzEyOCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hha2VfMjU2JykKIAogICAgICAgICBzdXBlcihIYXNoTGliVGVzdENhc2UsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKIApAQCAtMTExLDcgKzE2OCwxMCBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoImIiLCByYW5nZSgxMCkpCiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBjID0gY29ucyhhKQotICAgICAgICAgICAgYy5oZXhkaWdlc3QoKQorICAgICAgICAgICAgaWYgYy5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIGMuaGV4ZGlnZXN0KDE2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjLmhleGRpZ2VzdCgpCiAKICAgICBkZWYgdGVzdF9hbGdvcml0aG1zX2d1YXJhbnRlZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGxpYi5hbGdvcml0aG1zX2d1YXJhbnRlZWQsCkBAIC0xNTUsMTQgKzIxNSwyMSBAQAogICAgIGRlZiB0ZXN0X2hleGRpZ2VzdChzZWxmKToKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGggPSBjb25zKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQorICAgICAgICAgICAgaWYgaC5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgxNiksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KDE2KSksIGguaGV4ZGlnZXN0KDE2KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KCksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQogCiAgICAgZGVmIHRlc3RfbmFtZV9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBoID0gY29ucygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5uYW1lLCBzdHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKKyAgICAgICAgICAgIGlmIGgubmFtZSBpbiBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCBoYXNobGliLm5ldyhoLm5hbWUpLm5hbWUpCiAKICAgICBkZWYgdGVzdF9sYXJnZV91cGRhdGUoc2VsZik6CkBAIC0xNzcsNDAgKzI0NCw0NiBAQAogICAgICAgICAgICAgbTEudXBkYXRlKGJlZXMpCiAgICAgICAgICAgICBtMS51cGRhdGUoY2VlcykKICAgICAgICAgICAgIG0xLnVwZGF0ZShkZWVzKQorICAgICAgICAgICAgaWYgbTEubmFtZSBpbiBzZWxmLnNoYWtlczoKKyAgICAgICAgICAgICAgICBhcmdzID0gKDE2LCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgpCiAKICAgICAgICAgICAgIG0yID0gY29ucygpCiAgICAgICAgICAgICBtMi51cGRhdGUoYWFzICsgYmVlcyArIGNlZXMgKyBkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTIuZGlnZXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgqYXJncyksIG0yLmRpZ2VzdCgqYXJncykpCiAKICAgICAgICAgICAgIG0zID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcyArIGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtMy5kaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTMuZGlnZXN0KCphcmdzKSkKIAogICAgICAgICAgICAgIyB2ZXJpZnkgY29weSgpIGRvZXNuJ3QgdG91Y2ggb3JpZ2luYWwKICAgICAgICAgICAgIG00ID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcykKLSAgICAgICAgICAgIG00X2RpZ2VzdCA9IG00LmRpZ2VzdCgpCisgICAgICAgICAgICBtNF9kaWdlc3QgPSBtNC5kaWdlc3QoKmFyZ3MpCiAgICAgICAgICAgICBtNF9jb3B5ID0gbTQuY29weSgpCiAgICAgICAgICAgICBtNF9jb3B5LnVwZGF0ZShkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTRfY29weS5kaWdlc3QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTQuZGlnZXN0KCksIG00X2RpZ2VzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTRfY29weS5kaWdlc3QoKmFyZ3MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtNC5kaWdlc3QoKmFyZ3MpLCBtNF9kaWdlc3QpCiAKLSAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0KToKKyAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0LCBzaGFrZT1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBsZW5ndGggPSBsZW4oaGV4ZGlnZXN0KS8vMgogICAgICAgICBoZXhkaWdlc3QgPSBoZXhkaWdlc3QubG93ZXIoKQogICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCiAgICAgICAgICMgMiBpcyBmb3IgaGFzaGxpYi5uYW1lKC4uLikgYW5kIGhhc2hsaWIubmV3KG5hbWUsIC4uLikKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKGNvbnN0cnVjdG9ycyksIDIpCiAgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6Ci0gICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoZGF0YSkKLSAgICAgICAgICAgIGNvbXB1dGVkID0gbS5oZXhkaWdlc3QoKQorICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKGRhdGEsICoqa3dhcmdzKQorICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmhleGRpZ2VzdCgpIGlmIG5vdCBzaGFrZSBlbHNlIG0uaGV4ZGlnZXN0KGxlbmd0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkLCBoZXhkaWdlc3QsCiAgICAgICAgICAgICAgICAgICAgICJIYXNoIGFsZ29yaXRobSAlcyBjb25zdHJ1Y3RlZCB1c2luZyAlcyByZXR1cm5lZCBoZXhkaWdlc3QiCiAgICAgICAgICAgICAgICAgICAgICIgJXIgZm9yICVkIGJ5dGUgaW5wdXQgZGF0YSB0aGF0IHNob3VsZCBoYXZlIGhhc2hlZCB0byAlci4iCiAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZCwgbGVuKGRhdGEpLCBoZXhkaWdlc3QpKQotICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmRpZ2VzdCgpCisgICAgICAgICAgICBjb21wdXRlZCA9IG0uZGlnZXN0KCkgaWYgbm90IHNoYWtlIGVsc2UgbS5kaWdlc3QobGVuZ3RoKQogICAgICAgICAgICAgZGlnZXN0ID0gYnl0ZXMuZnJvbWhleChoZXhkaWdlc3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXB1dGVkLCBkaWdlc3QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWdlc3QpLCBtLmRpZ2VzdF9zaXplKQorICAgICAgICAgICAgaWYgbm90IHNoYWtlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpZ2VzdCksIG0uZGlnZXN0X3NpemUpCiAKICAgICBkZWYgY2hlY2tfbm9fdW5pY29kZShzZWxmLCBhbGdvcml0aG1fbmFtZSk6CiAgICAgICAgICMgVW5pY29kZSBvYmplY3RzIGFyZSBub3QgYWxsb3dlZCBhcyBpbnB1dC4KQEAgLTIyNiwxMyArMjk5LDM1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhMzg0JykKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGE1MTInKQogCi0gICAgZGVmIGNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKHNlbGYsIG5hbWUsIGJsb2NrX3NpemU9MCwgZGlnZXN0X3NpemU9MCk6CisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X25vX3VuaWNvZGVfYmxha2UyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMmInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMnMnKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ub191bmljb2RlX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yMjQnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMjU2JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzM4NCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM181MTInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYWtlXzEyOCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hha2VfMjU2JykKKworICAgIGRlZiBjaGVja19ibG9ja3NpemVfbmFtZShzZWxmLCBuYW1lLCBibG9ja19zaXplPTAsIGRpZ2VzdF9zaXplPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGg9Tm9uZSk6CiAgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KICAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKICAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYmxvY2tfc2l6ZSwgYmxvY2tfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICBpZiBkaWdlc3RfbGVuZ3RoOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KGRpZ2VzdF9sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoZGlnZXN0X2xlbmd0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMipkaWdlc3RfbGVuZ3RoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoKSksIDIqZGlnZXN0X3NpemUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmFtZSwgbmFtZSkKICAgICAgICAgICAgICMgc3BsaXQgZm9yIHNoYTNfNTEyIC8gX3NoYTMuc2hhMyBvYmplY3QKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZS5zcGxpdCgiXyIpWzBdLCByZXByKG0pKQpAQCAtMjQ1LDYgKzM0MCwzOCBAQAogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzODQnLCAxMjgsIDQ4KQogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGE1MTInLCAxMjgsIDY0KQogCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzIyNCcsIDE0NCwgMjgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjU2JywgMTM2LCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18zODQnLCAxMDQsIDQ4KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzUxMicsIDcyLCA2NCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMTI4JywgMTY4LCAwLCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMjU2JywgMTM2LCAwLCA2NCkKKworICAgIGRlZiBjaGVja19zaGEzKHNlbGYsIG5hbWUsIGNhcGFjaXR5LCByYXRlLCBzdWZmaXgpOgorICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCisgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6CisgICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXBhY2l0eSArIHJhdGUsIDE2MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX2NhcGFjaXR5X2JpdHMsIGNhcGFjaXR5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9yYXRlX2JpdHMsIHJhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX3N1ZmZpeCwgc3VmZml4KQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9leHRyYV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjI0JywgNDQ4LCAxMTUyLCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjU2JywgNTEyLCAxMDg4LCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMzg0JywgNzY4LCA4MzIsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM181MTInLCAxMDI0LCA1NzYsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hha2VfMTI4JywgMjU2LCAxMzQ0LCBiJ1x4MWYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYWtlXzI1NicsIDUxMiwgMTA4OCwgYidceDFmJykKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9ibGFrZTIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ2JsYWtlMmInLCAxMjgsIDY0KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdibGFrZTJzJywgNjQsIDMyKQorCiAgICAgZGVmIHRlc3RfY2FzZV9tZDVfMChzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygnbWQ1JywgYicnLCAnZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UnKQogCkBAIC0zNzMsNiArNTAwLDIyMSBAQAogICAgICAgICAgICJlNzE4NDgzZDBjZTc2OTY0NGUyZTQyYzdiYzE1YjQ2MzhlMWY5OGIxM2IyMDQ0Mjg1NjMyYTgwM2FmYTk3M2ViIisKICAgICAgICAgICAiZGUwZmYyNDQ4NzdlYTYwYTRjYjA0MzJjZTU3N2MzMWJlYjAwOWM1YzJjNDlhYTJlNGVhZGIyMTdhZDhjYzA5YiIpCiAKKyAgICBkZWYgY2hlY2tfYmxha2UyKHNlbGYsIGNvbnN0cnVjdG9yLCBzYWx0X3NpemUsIHBlcnNvbl9zaXplLCBrZXlfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9zaXplLCBtYXhfb2Zmc2V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5TQUxUX1NJWkUsIHNhbHRfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2FsdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihzYWx0PWInYScgKiBpKQorICAgICAgICBzYWx0ID0gYidhJyAqIChzYWx0X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgc2FsdD1zYWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuUEVSU09OX1NJWkUsIHBlcnNvbl9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShwZXJzb25fc2l6ZSsxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHBlcnNvbj1iJ2EnICogaSkKKyAgICAgICAgcGVyc29uID0gYidhJyAqIChwZXJzb25fc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBwZXJzb249cGVyc29uKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0RJR0VTVF9TSVpFLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgZGlnZXN0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRpZ2VzdF9zaXplPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT1kaWdlc3Rfc2l6ZSsxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0tFWV9TSVpFLCBrZXlfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoa2V5X3NpemUrMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihrZXk9YidhJyAqIGkpCisgICAgICAgIGtleSA9IGInYScgKiAoa2V5X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwga2V5PWtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3RvcigpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGtleT1iJycpLmhleGRpZ2VzdCgpKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDI1Nik6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihmYW5vdXQ9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRlcHRoPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfZGVwdGg9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX2RlcHRoPTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBkaWdlc3Rfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoaW5uZXJfc2l6ZT1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgaW5uZXJfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGlubmVyX3NpemU9ZGlnZXN0X3NpemUrMSkKKworICAgICAgICBjb25zdHJ1Y3RvcihsZWFmX3NpemU9MCkKKyAgICAgICAgY29uc3RydWN0b3IobGVhZl9zaXplPSgxPDwzMiktMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0xPDwzMikKKworICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD0wKQorICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD1tYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9vZmZzZXQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX29mZnNldD1tYXhfb2Zmc2V0KzEpCisKKyAgICAgICAgY29uc3RydWN0b3IoCisgICAgICAgICAgICBzdHJpbmc9YicnLAorICAgICAgICAgICAga2V5PWInJywKKyAgICAgICAgICAgIHNhbHQ9YicnLAorICAgICAgICAgICAgcGVyc29uPWInJywKKyAgICAgICAgICAgIGRpZ2VzdF9zaXplPTE3LAorICAgICAgICAgICAgZmFub3V0PTEsCisgICAgICAgICAgICBkZXB0aD0xLAorICAgICAgICAgICAgbGVhZl9zaXplPTI1NiwKKyAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTUxMiwKKyAgICAgICAgICAgIG5vZGVfZGVwdGg9MSwKKyAgICAgICAgICAgIGlubmVyX3NpemU9NywKKyAgICAgICAgICAgIGxhc3Rfbm9kZT1UcnVlCisgICAgICAgICkKKworICAgIGRlZiBibGFrZTJfcmZjNzY5MyhzZWxmLCBjb25zdHJ1Y3RvciwgbWRfbGVuLCBpbl9sZW4pOgorICAgICAgICBkZWYgc2VsZnRlc3Rfc2VxKGxlbmd0aCwgc2VlZCk6CisgICAgICAgICAgICBtYXNrID0gKDE8PDMyKS0xCisgICAgICAgICAgICBhID0gKDB4REVBRDRCQUQgKiBzZWVkKSAmIG1hc2sKKyAgICAgICAgICAgIGIgPSAxCisgICAgICAgICAgICBvdXQgPSBieXRlYXJyYXkobGVuZ3RoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgICAgICB0ID0gKGEgKyBiKSAmIG1hc2sKKyAgICAgICAgICAgICAgICBhLCBiID0gYiwgdAorICAgICAgICAgICAgICAgIG91dFtpXSA9ICh0ID4+IDI0KSAmIDB4RkYKKyAgICAgICAgICAgIHJldHVybiBvdXQKKyAgICAgICAgb3V0ZXIgPSBjb25zdHJ1Y3RvcihkaWdlc3Rfc2l6ZT0zMikKKyAgICAgICAgZm9yIG91dGxlbiBpbiBtZF9sZW46CisgICAgICAgICAgICBmb3IgaW5sZW4gaW4gaW5fbGVuOgorICAgICAgICAgICAgICAgIGluZGF0YSA9IHNlbGZ0ZXN0X3NlcShpbmxlbiwgaW5sZW4pCisgICAgICAgICAgICAgICAga2V5ID0gc2VsZnRlc3Rfc2VxKG91dGxlbiwgb3V0bGVuKQorICAgICAgICAgICAgICAgIHVua2V5ZWQgPSBjb25zdHJ1Y3RvcihpbmRhdGEsIGRpZ2VzdF9zaXplPW91dGxlbikKKyAgICAgICAgICAgICAgICBvdXRlci51cGRhdGUodW5rZXllZC5kaWdlc3QoKSkKKyAgICAgICAgICAgICAgICBrZXllZCA9IGNvbnN0cnVjdG9yKGluZGF0YSwga2V5PWtleSwgZGlnZXN0X3NpemU9b3V0bGVuKQorICAgICAgICAgICAgICAgIG91dGVyLnVwZGF0ZShrZXllZC5kaWdlc3QoKSkKKyAgICAgICAgcmV0dXJuIG91dGVyLmhleGRpZ2VzdCgpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UyYihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJiLCAxNiwgMTYsIDY0LCA2NCwgKDE8PDY0KS0xKQorICAgICAgICBiMmJfbWRfbGVuID0gWzIwLCAzMiwgNDgsIDY0XQorICAgICAgICBiMmJfaW5fbGVuID0gWzAsIDMsIDEyOCwgMTI5LCAyNTUsIDEwMjRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmJsYWtlMl9yZmM3NjkzKGhhc2hsaWIuYmxha2UyYiwgYjJiX21kX2xlbiwgYjJiX2luX2xlbiksCisgICAgICAgICAgICAiYzIzYTc4MDBkOTgxMjNiZDEwZjUwNmM2MWUyOWRhNTYwM2Q3NjNiOGJiYWQyZTczN2Y1ZTc2NWE3YmNjZDQ3NSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJiXzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMmInLCBiIiIsCisgICAgICAgICAgIjc4NmEwMmY3NDIwMTU5MDNjNmM2ZmQ4NTI1NTJkMjcyOTEyZjQ3NDBlMTU4NDc2MThhODZlMjE3ZjcxZjU0MTkiKworICAgICAgICAgICJkMjVlMTAzMWFmZWU1ODUzMTM4OTY0NDQ5MzRlYjA0YjkwM2E2ODViMTQ0OGI3NTVkNTZmNzAxYWZlOWJlMmNlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMmJfMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIGIiYWJjIiwKKyAgICAgICAgICAiYmE4MGE1M2Y5ODFjNGQwZDZhMjc5N2I2OWYxMmY2ZTk0YzIxMmYxNDY4NWFjNGI3NGIxMmJiNmZkYmZmYTJkMSIrCisgICAgICAgICAgIjdkODdjNTM5MmFhYjc5MmRjMjUyZDVkZTQ1MzNjYzk1MThkMzhhYThkYmYxOTI1YWI5MjM4NmVkZDQwMDk5MjMiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMmJfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMmInKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJzLCA4LCA4LCAzMiwgMzIsICgxPDw0OCktMSkKKyAgICAgICAgYjJzX21kX2xlbiA9IFsxNiwgMjAsIDI4LCAzMl0KKyAgICAgICAgYjJzX2luX2xlbiA9IFswLCAzLCA2NCwgNjUsIDI1NSwgMTAyNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuYmxha2UyX3JmYzc2OTMoaGFzaGxpYi5ibGFrZTJzLCBiMnNfbWRfbGVuLCBiMnNfaW5fbGVuKSwKKyAgICAgICAgICAgICI2YTQxMWYwOGNlMjVhZGNkZmIwMmFiYTY0MTQ1MWNlYzUzYzU5OGIyNGY0ZmM3ODdmYmRjODg3OTdmNGMxZGZlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMnNfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIGIiIiwKKyAgICAgICAgICAiNjkyMTdhMzA3OTkwODA5NGUxMTEyMWQwNDIzNTRhN2MxZjU1YjY0ODJjYTFhNTFlMWIyNTBkZmQxZWQwZWVmOSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJzXzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMnMnLCBiImFiYyIsCisgICAgICAgICAgIjUwOGM1ZThjMzI3YzE0ZTJlMWE3MmJhMzRlZWI0NTJmMzc0NThiMjA5ZWQ2M2EyOTRkOTk5YjRjODY2NzU5ODIiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMnNfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMnMnKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yMjRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yMjQnLCBiIiIsCisgICAgICAgICAgIjZiNGUwMzQyMzY2N2RiYjczYjZlMTU0NTRmMGViMWFiZDQ1OTdmOWExYjA3OGUzZjViNWE2YmM3IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18yMjQnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIGIiIiwKKyAgICAgICAgICAiYTdmZmM2ZjhiZjFlZDc2NjUxYzE0NzU2YTA2MWQ2NjJmNTgwZmY0ZGU0M2I0OWZhODJkODBhNGI4MGY4NDM0YSIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yNTZfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMjU2Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18zODQnLCBiIiIsCisgICAgICAgICAgIjBjNjNhNzViODQ1ZTRmN2QwMTEwN2Q4NTJlNGMyNDg1YzUxYTUwYWFhYTk0ZmM2MTk5NWU3MWJiZWU5ODNhMmEiKworICAgICAgICAgICJjMzcxMzgzMTI2NGFkYjQ3ZmI2YmQxZTA1OGQ1ZjAwNCIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMzg0Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBiIiIsCisgICAgICAgICAgImE2OWY3M2NjYTIzYTlhYzVjOGI1NjdkYzE4NWE3NTZlOTdjOTgyMTY0ZmUyNTg1OWUwZDFkY2MxNDc1YzgwYTYiKworICAgICAgICAgICIxNWIyMTIzYWYxZjVmOTRjMTFlM2U5NDAyYzNhYzU1OGY1MDAxOTlkOTViNmQzZTMwMTc1ODU4NjI4MWRjZDI2IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM181MTInKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfNTEyJywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZV8xMjhfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMTI4JywgYiIiLAorICAgICAgICAgICI3ZjljMmJhNGU4OGY4MjdkNjE2MDQ1NTA3NjA1ODUzZWQ3M2I4MDkzZjZlZmJjODhlYjFhNmVhY2ZhNjZlZjI2IiwKKyAgICAgICAgICBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBiIiIsICI3ZjljIiwgVHJ1ZSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZTEyOF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hha2VfMTI4Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBtc2csIG1kLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8yNTYnLCBiIiIsCisgICAgICAgICAgIjQ2YjlkZDJiMGJhODhkMTMyMzNiM2ZlYjc0M2VlYjI0M2ZjZDUyZWE2MmI4MWI4MmI1MGMyNzY0NmVkNTc2MmYiLAorICAgICAgICAgIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIGIiIiwgIjQ2YjkiLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlMjU2X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGFrZV8yNTYnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIG1zZywgbWQsIFRydWUpCisKICAgICBkZWYgdGVzdF9naWwoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhpbmdzIHdvcmsgZmluZSB3aXRoIGFuIGlucHV0IGxhcmdlciB0aGFuIHRoZSBzaXplIHJlcXVpcmVkCiAgICAgICAgICMgZm9yIG11bHRpdGhyZWFkZWQgb3BlcmF0aW9uICh3aGljaCBpcyBoYXJkd2lyZWQgdG8gMjA0OCkuCkBAIC00NDcsNiArNzg5LDEyIEBACiAgICAgICAgIChiJ3Bhc3NcMHdvcmQnLCBiJ3NhXDBsdCcsIDQwOTYsIDE2KSwKICAgICBdCiAKKyAgICBzY3J5cHRfdGVzdF92ZWN0b3JzID0gWworICAgICAgICAoYicnLCBiJycsIDE2LCAxLCAxLCB1bmhleGxpZnkoJzc3ZDY1NzYyMzg2NTdiMjAzYjE5Y2E0MmMxOGEwNDk3ZjE2YjQ4NDRlMzA3NGFlOGRmZGZmYTNmZWRlMjE0NDJmY2QwMDY5ZGVkMDk0OGY4MzI2YTc1M2EwZmM4MWYxN2U4ZDNlMGZiMmUwZDM2MjhjZjM1ZTIwYzM4ZDE4OTA2JykpLAorICAgICAgICAoYidwYXNzd29yZCcsIGInTmFDbCcsIDEwMjQsIDgsIDE2LCB1bmhleGxpZnkoJ2ZkYmFiZTFjOWQzNDcyMDA3ODU2ZTcxOTBkMDFlOWZlN2M2YWQ3Y2JjODIzNzgzMGU3NzM3NjYzNGIzNzMxNjIyZWFmMzBkOTJlMjJhMzg4NmZmMTA5Mjc5ZDk4MzBkYWM3MjdhZmI5NGE4M2VlNmQ4MzYwY2JkZmEyY2MwNjQwJykpLAorICAgICAgICAoYidwbGVhc2VsZXRtZWluJywgYidTb2RpdW1DaGxvcmlkZScsIDE2Mzg0LCA4LCAxLCB1bmhleGxpZnkoJzcwMjNiZGNiM2FmZDczNDg0NjFjMDZjZDgxZmQzOGViZmRhOGZiYmE5MDRmOGUzZWE5YjU0M2Y2NTQ1ZGExZjJkNTQzMjk1NTYxM2YwZmNmNjJkNDk3MDUyNDJhOWFmOWU2MWU4NWRjMGQ2NTFlNDBkZmNmMDE3YjQ1NTc1ODg3JykpLAorICAgXQorCiAgICAgcGJrZGYyX3Jlc3VsdHMgPSB7CiAgICAgICAgICJzaGExIjogWwogICAgICAgICAgICAgIyBvZmZpY2lhbCB0ZXN0IHZlY3RvcnMgZnJvbSBSRkMgNjA3MApAQCAtNTI2LDUgKzg3NCw0NSBAQAogICAgICAgICBzZWxmLl90ZXN0X3Bia2RmMl9obWFjKGNfaGFzaGxpYi5wYmtkZjJfaG1hYykKIAogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihjX2hhc2hsaWIsICdzY3J5cHQnKSwKKyAgICAgICAgICAgICAgICAgICAgICcgICB0ZXN0IHJlcXVpcmVzIE9wZW5TU0wgPiAxLjEnKQorICAgIGRlZiB0ZXN0X3NjcnlwdChzZWxmKToKKyAgICAgICAgZm9yIHBhc3N3b3JkLCBzYWx0LCBuLCByLCBwLCBleHBlY3RlZCBpbiBzZWxmLnNjcnlwdF90ZXN0X3ZlY3RvcnM6CisgICAgICAgICAgICByZXN1bHQgPSBoYXNobGliLnNjcnlwdChwYXNzd29yZCwgc2FsdD1zYWx0LCBuPW4sIHI9ciwgcD1wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgICAgICMgdGhpcyB2YWx1ZXMgc2hvdWxkIHdvcmsKKyAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgIyBwYXNzd29yZCBhbmQgc2FsdCBtdXN0IGJlIGJ5dGVzLWxpa2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD0nc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgICMgcmVxdWlyZSBrZXl3b3JkIGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBiJ3NhbHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgMiwgOCwgMSwgc2FsdD1iJ3NhbHQnKQorICAgICAgICBmb3IgbiBpbiBbLTEsIDAsIDEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj1uLCByPTgsIHA9MSkKKyAgICAgICAgZm9yIHIgaW4gWy0xLCAwLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj1yLCBwPTEpCisgICAgICAgIGZvciBwIGluIFstMSwgMCwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD1wKQorICAgICAgICBmb3IgbWF4bWVtIGluIFstMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heG1lbT1tYXhtZW0pCisgICAgICAgIGZvciBka2xlbiBpbiBbLTEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBka2xlbj1ka2xlbikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weSBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKaW5kZXggYjdlODI1OS4uMmY4YzY0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVW5pdHRlc3RzIGZvciBoZWFwcS4iIiIKIAotaW1wb3J0IHN5cwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA5ODgyNmI1Li4wNjdlMTNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgaWdub3JlX3dhcm5pbmcoZnVuYyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggMTE0MjBiMi4uMzI2ZTM0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBodG1sLnBhcnNlcgogaW1wb3J0IHBwcmludAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBFdmVudENvbGxlY3RvcihodG1sLnBhcnNlci5IVE1MUGFyc2VyKToKQEAgLTcwMiw3ICs3MDEsNyBAQAogCiAgICAgZGVmIHRlc3RfYXR0cl9mdW5reV9uYW1lczIoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygKLSAgICAgICAgICAgICI8YSAkPjxiICQ9JT48YyBcPS8+IiwKKyAgICAgICAgICAgIHIiPGEgJD48YiAkPSU+PGMgXD0vPiIsCiAgICAgICAgICAgICBbKCJzdGFydHRhZyIsICJhIiwgWygiJCIsIE5vbmUpXSksCiAgICAgICAgICAgICAgKCJzdGFydHRhZyIsICJiIiwgWygiJCIsICIlIildKSwKICAgICAgICAgICAgICAoInN0YXJ0dGFnIiwgImMiLCBbKCJcXCIsICIvIildKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQppbmRleCA0OWMwMWFlLi42ZmVlNGRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKQEAgLTEwNTEsNyArMTA1MSw3IEBACiAgICAgICAgIHVybCA9ICJodHRwOi8vZm9vLmJhci5jb20vIgogICAgICAgICBpbnRlcmFjdF8yOTY1KGMsIHVybCwgInNwYW09ZWdnczsgVmVyc2lvbj0xOyBQb3J0IikKICAgICAgICAgaCA9IGludGVyYWN0XzI5NjUoYywgdXJsKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGgsICJcJFBvcnQoW149XXwkKSIsCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoaCwgciJcJFBvcnQoW149XXwkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInBvcnQgd2l0aCBubyB2YWx1ZSBub3QgcmV0dXJuZWQgd2l0aCBubyB2YWx1ZSIpCiAKICAgICAgICAgYyA9IENvb2tpZUphcihwb2wpCkBAIC0xMzk2LDkgKzEzOTYsOSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29va2llLCByJ15cJFZlcnNpb249Ij8xIj87JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInUGFydF9OdW1iZXI9Ij9Sb2NrZXRfTGF1bmNoZXJfMDAwMSI/OycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHMqXCRQYXRoPSJcL2FjbWUiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHMqXCRQYXRoPSJcL2FjbWUiJykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInQ3VzdG9tZXI9Ij9XSUxFX0VfQ09ZT1RFIj87JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdccypcJFBhdGg9IlwvYWNtZSInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidccypcJFBhdGg9IlwvYWNtZSInKQogCiAgICAgICAgICMKICAgICAgICAgIyAgIDcuICBVc2VyIEFnZW50IC0+IFNlcnZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CmluZGV4IDYxZWQ2YmIuLjY4ZjY5NDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKQEAgLTM0NCw2ICszNDQsMTM0IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKQogCiAKK2NsYXNzIFRyYW5zZmVyRW5jb2RpbmdUZXN0KFRlc3RDYXNlKToKKyAgICBleHBlY3RlZF9ib2R5ID0gYiJJdCdzIGp1c3QgYSBmbGVzaCB3b3VuZCIKKworICAgIGRlZiB0ZXN0X2VuZGhlYWRlcnNfY2h1bmtlZChzZWxmKToKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQT1NUJywgJy8nKQorICAgICAgICBjb25uLmVuZGhlYWRlcnMoc2VsZi5fbWFrZV9ib2R5KCksIGVuY29kZV9jaHVua2VkPVRydWUpCisKKyAgICAgICAgXywgXywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIyBleHBsaWNpdCBjaHVua2VkCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgICMgdGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgYmUgYXV0b21hdGljYWxseSBjaHVuay1lbmNvZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICMgY2FsbGluZyBjb2RlIGhhcyBleHBsaWNpdGx5IHN0YXRlZCB0aGF0IGl0J3MgdGFraW5nIGNhcmUgb2YgaXQKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuX21ha2VfYm9keSgpLCB7J1RyYW5zZmVyLUVuY29kaW5nJzogJ2NodW5rZWQnfSkKKworICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMua2V5cygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgICAgICMgZXhwbGljaXQgY2h1bmtlZCwgc3RyaW5nIGJvZHkKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuZXhwZWN0ZWRfYm9keS5kZWNvZGUoJ2xhdGluLTEnKSwKKyAgICAgICAgICAgIHsnVHJhbnNmZXItRW5jb2RpbmcnOiAnY2h1bmtlZCd9KQorCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycy5rZXlzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICAgICAgIyBVc2VyLXNwZWNpZmllZCBURSwgYnV0IHJlcXVlc3QoKSBkb2VzIHRoZSBjaHVuayBlbmNvZGluZworICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsCisgICAgICAgICAgICBoZWFkZXJzPXsnVHJhbnNmZXItRW5jb2RpbmcnOiAnZ3ppcCwgY2h1bmtlZCd9LAorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9VHJ1ZSwKKyAgICAgICAgICAgIGJvZHk9c2VsZi5fbWFrZV9ib2R5KCkpCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2d6aXAsIGNodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgIGZvciBlbXB0eV9saW5lcyBpbiAoRmFsc2UsIFRydWUsKToKKyAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgICAgICdQT1NUJywgJy8nLCBzZWxmLl9tYWtlX2JvZHkoZW1wdHlfbGluZXM9ZW1wdHlfbGluZXMpKQorCisgICAgICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorCisgICAgICAgICAgICAjIENvbnRlbnQtTGVuZ3RoIGFuZCBUcmFuc2Zlci1FbmNvZGluZyBTSE9VTEQgbm90IGJlIHNlbnQgaW4gdGhlCisgICAgICAgICAgICAjIHNhbWUgcmVxdWVzdAorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorCisgICAgZGVmIHRlc3RfZW1wdHlfYm9keShzZWxmKToKKyAgICAgICAgIyBaZXJvLWxlbmd0aCBpdGVyYWJsZSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBpdGVyYWJsZQorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsICgpKQorICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBiIjBcclxuXHJcbiIpCisKKyAgICBkZWYgX21ha2VfYm9keShzZWxmLCBlbXB0eV9saW5lcz1GYWxzZSk6CisgICAgICAgIGxpbmVzID0gc2VsZi5leHBlY3RlZF9ib2R5LnNwbGl0KGInICcpCisgICAgICAgIGZvciBpZHgsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgICMgZm9yIHRlc3RpbmcgaGFuZGxpbmcgZW1wdHkgbGluZXMKKyAgICAgICAgICAgIGlmIGVtcHR5X2xpbmVzIGFuZCBpZHggJSAyOgorICAgICAgICAgICAgICAgIHlpZWxkIGInJworICAgICAgICAgICAgaWYgaWR4IDwgbGVuKGxpbmVzKSAtIDE6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZSArIGInICcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIF9wYXJzZV9yZXF1ZXN0KHNlbGYsIGRhdGEpOgorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoYidcclxuJykKKyAgICAgICAgcmVxdWVzdCA9IGxpbmVzWzBdCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBuID0gMQorICAgICAgICB3aGlsZSBuIDwgbGVuKGxpbmVzKSBhbmQgbGVuKGxpbmVzW25dKSA+IDA6CisgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmVzW25dLnNwbGl0KGInOicpCisgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdsYXRpbi0xJykuc3RyaXAoKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLmRlY29kZSgnbGF0aW4tMScpLnN0cmlwKCkKKyAgICAgICAgICAgIG4gKz0gMQorCisgICAgICAgIHJldHVybiByZXF1ZXN0LCBoZWFkZXJzLCBiJ1xyXG4nLmpvaW4obGluZXNbbiArIDE6XSkKKworICAgIGRlZiBfcGFyc2VfY2h1bmtlZChzZWxmLCBkYXRhKToKKyAgICAgICAgYm9keSA9IFtdCisgICAgICAgIHRyYWlsZXJzID0ge30KKyAgICAgICAgbiA9IDAKKyAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KGInXHJcbicpCisgICAgICAgICMgcGFyc2UgYm9keQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgc2l6ZSwgY2h1bmsgPSBsaW5lc1tuOm4rMl0KKyAgICAgICAgICAgIHNpemUgPSBpbnQoc2l6ZSwgMTYpCisKKyAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICBuICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihjaHVuaykpCisgICAgICAgICAgICBib2R5LmFwcGVuZChjaHVuaykKKworICAgICAgICAgICAgbiArPSAyCisgICAgICAgICAgICAjIHdlIC9zaG91bGQvIGhpdCB0aGUgZW5kIGNodW5rLCBidXQgY2hlY2sgYWdhaW5zdCB0aGUgc2l6ZSBvZgorICAgICAgICAgICAgIyBsaW5lcyBzbyB3ZSdyZSBub3Qgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcCBzaG91bGQgd2UgZ2V0CisgICAgICAgICAgICAjIG1hbGZvcm1lZCBkYXRhCisgICAgICAgICAgICBpZiBuID4gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJldHVybiBiJycuam9pbihib2R5KQorCisKIGNsYXNzIEJhc2ljVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RhdHVzX2xpbmVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgSFRUUCBzdGF0dXMgbGluZXMKQEAgLTU2NCw3ICs2OTIsOSBAQAogCiAgICAgZGVmIHRlc3Rfc2VuZF9maWxlKHNlbGYpOgogICAgICAgICBleHBlY3RlZCA9IChiJ0dFVCAvZm9vIEhUVFAvMS4xXHJcbkhvc3Q6IGV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbkNvbnRlbnQtTGVuZ3RoOicpCisgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG4nCisgICAgICAgICAgICAgICAgICAgIGInVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuJworICAgICAgICAgICAgICAgICAgICBiJ1xyXG4nKQogCiAgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgYm9keToKICAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKQEAgLTU5NCwxMSArNzI0LDExIEBACiAgICAgICAgICAgICB5aWVsZCBOb25lCiAgICAgICAgICAgICB5aWVsZCAnZGF0YV90d28nCiAKLSAgICAgICAgY2xhc3MgVXBkYXRpbmdGaWxlKCk6CisgICAgICAgIGNsYXNzIFVwZGF0aW5nRmlsZShpby5UZXh0SU9CYXNlKToKICAgICAgICAgICAgIG1vZGUgPSAncicKICAgICAgICAgICAgIGQgPSBkYXRhKCkKICAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIGJsb2Nrc2l6ZT0tMSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZC5fX25leHRfXygpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5kKQogCiAgICAgICAgIGV4cGVjdGVkID0gYidkYXRhJwogCkBAIC05NzAsNiArMTEwMCw3IEBACiAKICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX3NlcnZlcikKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRocmVhZC5qb2luLCBmbG9hdCgxKSkKICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbigqc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICBjb25uLnJlcXVlc3QoIkNPTk5FQ1QiLCAiZHVtbXk6MTIzNCIpCiAgICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpCkBAIC05ODMsNyArMTExNCw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKyAgICAgICAgdGhyZWFkLmpvaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYiJwcm94aWVkIGRhdGFcbiIpCiAKIGNsYXNzIEV4dGVuZGVkUmVhZFRlc3QoVGVzdENhc2UpOgpAQCAtMTUxMSwxNCArMTY0MiwxNiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICAjIFNhbWUgd2l0aCBleHBsaWNpdCBjaGVja19ob3N0bmFtZT1UcnVlCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgIyBXaXRoIGNoZWNrX2hvc3RuYW1lPUZhbHNlLCB0aGUgbWlzbWF0Y2hpbmcgaXMgaWdub3JlZAogICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPUZhbHNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9RmFsc2UpCiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgcmVzcC5jbG9zZSgpCkBAIC0xNTM1LDggKzE2NjgsOSBAQAogICAgICAgICBoLmNsb3NlKCkKICAgICAgICAgIyBQYXNzaW5nIGNoZWNrX2hvc3RuYW1lIHRvIEhUVFBTQ29ubmVjdGlvbiBzaG91bGQgb3ZlcnJpZGUgdGhlCiAgICAgICAgICMgY29udGV4dCdzIHNldHRpbmcuCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKIApAQCAtMTU3NSw2ICsxNzA5LDI2IEBACiAgICAgICAgIG1lc3NhZ2UgPSBjbGllbnQucGFyc2VfaGVhZGVycyhmKQogICAgICAgICByZXR1cm4gbWVzc2FnZSwgZgogCisgICAgZGVmIHRlc3RfbGlzdF9ib2R5KHNlbGYpOgorICAgICAgICAjIE5vdGUgdGhhdCBubyBjb250ZW50LWxlbmd0aCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZm9yCisgICAgICAgICMgYW4gaXRlcmFibGUuICBUaGUgcmVxdWVzdCB3aWxsIGZhbGwgYmFjayB0byBzZW5kIGNodW5rZWQKKyAgICAgICAgIyB0cmFuc2ZlciBlbmNvZGluZy4KKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAoW2InZm9vJywgYidiYXInXSwgYiczXHJcbmZvb1xyXG4zXHJcbmJhclxyXG4wXHJcblxyXG4nKSwKKyAgICAgICAgICAgICgoYidmb28nLCBiJ2JhcicpLCBiJzNcclxuZm9vXHJcbjNcclxuYmFyXHJcbjBcclxuXHJcbicpLAorICAgICAgICApCisgICAgICAgIGZvciBib2R5LCBleHBlY3RlZCBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJvZHkpOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICAgICAgICAgIHNlbGYuY29ubi5zb2NrID0gc2VsZi5zb2NrID0gRmFrZVNvY2tldCgnJykKKworICAgICAgICAgICAgICAgIHNlbGYuY29ubi5yZXF1ZXN0KCdQVVQnLCAnL3VybCcsIGJvZHkpCisgICAgICAgICAgICAgICAgbXNnLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NvbnRlbnQtVHlwZScsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdDb250ZW50LUxlbmd0aCcsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXQoJ1RyYW5zZmVyLUVuY29kaW5nJyksICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBmLnJlYWQoKSkKKwogICAgIGRlZiB0ZXN0X21hbnVhbF9jb250ZW50X2xlbmd0aChzZWxmKToKICAgICAgICAgIyBTZXQgYW4gaW5jb3JyZWN0IGNvbnRlbnQtbGVuZ3RoIHNvIHRoYXQgd2UgY2FuIHZlcmlmeSB0aGF0CiAgICAgICAgICMgaXQgd2lsbCBub3QgYmUgb3Zlci1yaWRkZW4gYnkgdGhlIGxpYnJhcnkuCkBAIC0xNjA4LDcgKzE3NjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI1IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQogCi0gICAgZGVmIHRlc3RfZmlsZV9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3RleHRfZmlsZV9ib2R5KHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImJvZHkiKQpAQCAtMTYxNyw4ICsxNzcxLDExIEBACiAgICAgICAgICAgICBtZXNzYWdlLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dC9wbGFpbiIsIG1lc3NhZ2UuZ2V0X2NvbnRlbnRfdHlwZSgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXRfY2hhcnNldCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNCIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHknLCBmLnJlYWQoKSkKKyAgICAgICAgICAgICMgTm8gY29udGVudC1sZW5ndGggd2lsbCBiZSBkZXRlcm1pbmVkIGZvciBmaWxlczsgdGhlIGJvZHkKKyAgICAgICAgICAgICMgd2lsbCBiZSBzZW50IHVzaW5nIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJ0cmFuc2Zlci1lbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzRcclxuYm9keVxyXG4wXHJcblxyXG4nLCBmLnJlYWQoKSkKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9maWxlX2JvZHkoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCkBAIC0xNjI5LDggKzE3ODYsOSBAQAogICAgICAgICAgICAgbWVzc2FnZSwgZiA9IHNlbGYuZ2V0X2hlYWRlcnNfYW5kX2ZwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQvcGxhaW4iLCBtZXNzYWdlLmdldF9jb250ZW50X3R5cGUoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0X2NoYXJzZXQoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjUiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJUcmFuc2Zlci1FbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29udGVudC1MZW5ndGgiLCBtZXNzYWdlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzVcclxuYm9keVx4YzFcclxuMFxyXG5cclxuJywgZi5yZWFkKCkpCiAKIAogY2xhc3MgSFRUUFJlc3BvbnNlVGVzdChUZXN0Q2FzZSk6CkBAIC0xNzQxLDEzICsxODk5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignaGVhZGVyOiB7fScuZm9ybWF0KGV4cGVjdGVkX2hlYWRlciksIGxpbmVzKQogCiAKLUBzdXBwb3J0LnJlYXBfdGhyZWFkcwotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlYWRlclRlc3RzLCBPZmZsaW5lVGVzdCwgQmFzaWNUZXN0LCBUaW1lb3V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW5jZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFNUZXN0LCBSZXF1ZXN0Qm9keVRlc3QsIFNvdXJjZUFkZHJlc3NUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIEV4dGVuZGVkUmVhZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQsIFR1bm5lbFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDcyZTZlMDguLjRlOTMxNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtMTgsNiArMTgsNyBAQAogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTE4OSw3ICsxOTAsNyBAQAogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKLSAgICBkZWYgdGVzdF9oZWFkX2tlZXBfYWxpdmUoc2VsZik6CisgICAgZGVmIHRlc3RfaGVhZGVyX2tlZXBfYWxpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjEnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQpAQCAtMzY5LDYgKzM3MCw4IEBACiAgICAgICAgIHJldHVybiBib2R5CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA1KQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAndW5kZWNvZGFibGUgbmFtZSBjYW5ub3QgYmUgZGVjb2RlZCBvbiB3aW4zMicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUnKQogICAgIGRlZiB0ZXN0X3VuZGVjb2RhYmxlX2ZpbGVuYW1lKHNlbGYpOgpAQCAtMzg4LDcgKzM5MSw3IEBACiAgICAgICAgIHF1b3RlZG5hbWUgPSB1cmxsaWIucGFyc2UucXVvdGUoZmlsZW5hbWUsIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdocmVmPSIlcyInICUgcXVvdGVkbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQotICAgICAgICBzZWxmLmFzc2VydEluKCgnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJyArIHF1b3RlZG5hbWUpCiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssCkBAIC00NjYsNiArNDY5LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCJMb2NhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgIi8/aGk9MSIpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAnPHRlc3QmPi50eHQnCisgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3BlbihmdWxscGF0aCwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0NhbiBub3QgY3JlYXRlIGZpbGUgJXMgb24gY3VycmVudCBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0nICUgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJykKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQorICAgICAgICAgICAgZW5jID0gcmVzcG9uc2UuaGVhZGVycy5nZXRfY29udGVudF9jaGFyc2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayhmdWxscGF0aCkgICMgYXZvaWQgYWZmZWN0aW5nIHRlc3RfdW5kZWNvZGFibGVfZmlsZW5hbWUKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmMpCisgICAgICAgIGh0bWxfdGV4dCA9ICc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihodG1sX3RleHQuZW5jb2RlKGVuYyksIGJvZHkpCisKIAogY2dpX2ZpbGUxID0gIiIiXAogIyElcwpAQCAtOTE2LDcgKzk0MCw3IEBACiAgICAgICAgICMgSXNzdWUgIzY3OTE6IHNhbWUgZm9yIGhlYWRlcnMKICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKICAgICAgICAgICAgIGInR0VUIC8gSFRUUC8xLjFcclxuWC1Gb286IGJhcicgKyBiJ3InICogNjU1MzcgKyBiJ1xyXG5cclxuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDAwIExpbmUgdG9vIGxvbmdcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDMxIExpbmUgdG9vIGxvbmdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKQEAgLTkyNyw2ICs5NTEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9vbl9lcnJvcihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKKyAgICAgICAgICAgIGInPHNjcmlwdD5hbGVydCgiaGVsbG8iKTwvc2NyaXB0PiAvIEhUVFAvMS4xJykKKyAgICAgICAgcmVzdWx0ID0gYicnLmpvaW4ocmVzdWx0KQorICAgICAgICB0ZXh0ID0gJzxzY3JpcHQ+YWxlcnQoImhlbGxvIik8L3NjcmlwdD4nCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaHRtbC5lc2NhcGUodGV4dCwgcXVvdGU9RmFsc2UpLmVuY29kZSgnYXNjaWknKSwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3RfY2xvc2VfY29ubmVjdGlvbihzZWxmKToKICAgICAgICAgIyBoYW5kbGVfb25lX3JlcXVlc3QoKSBzaG91bGQgYmUgcmVwZWF0ZWRseSBjYWxsZWQgdW50aWwKICAgICAgICAgIyBpdCBzZXRzIGNsb3NlX2Nvbm5lY3Rpb24KQEAgLTk0Miw2ICs5NzMsMTkgQEAKICAgICAgICAgc2VsZi5oYW5kbGVyLmhhbmRsZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGNsb3NlX3ZhbHVlcykKIAorICAgIGRlZiB0ZXN0X2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICMgdGhpcyBpcyB0aGUgb2xkIGNvZGUgdGhhdCBmb3JtYXRzIHRoZSB0aW1lc3RhbXAKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZShub3cpCisgICAgICAgIGV4cGVjdGVkID0gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci53ZWVrZGF5bmFtZVt3ZF0sCisgICAgICAgICAgICBkYXksCisgICAgICAgICAgICBzZWxmLmhhbmRsZXIubW9udGhuYW1lW21vbnRoXSwKKyAgICAgICAgICAgIHllYXIsIGhoLCBtbSwgc3MKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5kYXRlX3RpbWVfc3RyaW5nKHRpbWVzdGFtcD1ub3cpLCBleHBlY3RlZCkKKworCiBjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiIFRlc3QgdXJsIHBhcnNpbmcgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5IGIvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CmluZGV4IDE0MWU4OWUuLmRhMDVkYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKQEAgLTEsMTYgKzEsMjMgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogCi0jIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCBvciBpZGxlbGliIHdhcyBkZWxldGVkLgorIyBTa2lwIHRlc3QgaWYgX3RocmVhZCBvciBfdGtpbnRlciB3YXNuJ3QgYnVpbHQsIGlmIGlkbGVsaWIgaXMgbWlzc2luZywKKyMgb3IgaWYgdGNsL3RrIGlzIG5vdCB0aGUgOC41KyBuZWVkZWQgZm9yIHR0ayB3aWRnZXRzLgogaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykgICMgaW1wb3J0ZWQgYnkgUHlTaGVsbCwgaW1wb3J0cyBfdGhyZWFkCiB0ayA9IGltcG9ydF9tb2R1bGUoJ3RraW50ZXInKSAgIyBpbXBvcnRzIF90a2ludGVyCi1pZGxldGVzdCA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWIuaWRsZV90ZXN0JykKK2lmIHRrLlRrVmVyc2lvbiA8IDguNToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiSURMRSByZXF1aXJlcyB0ayA4LjUgb3IgbGF0ZXIuIikKK2lkbGVsaWIgPSBpbXBvcnRfbW9kdWxlKCdpZGxlbGliJykKIAotIyBXaXRob3V0IHRlc3RfbWFpbiBwcmVzZW50LCByZWdydGVzdC5ydW50ZXN0X2lubmVyIChsaW5lMTIxOSkgY2FsbHMKLSMgdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhpc19tb2R1bGUpIHdoaWNoIGNhbGxzCi0jIGxvYWRfdGVzdHMoKSBpZiBpdCBmaW5kcyBpdC4gKFVuaXR0ZXN0Lm1haW4gZG9lcyB0aGUgc2FtZS4pCi1sb2FkX3Rlc3RzID0gaWRsZXRlc3QubG9hZF90ZXN0cworIyBCZWZvcmUgdGVzdCBpbXBvcnRzLCB0ZWxsIElETEUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGVudmlyb25tZW50LgoraWRsZWxpYi50ZXN0aW5nID0gVHJ1ZQorCisjIHVuaXR0ZXN0Lm1haW4gYW5kIHRlc3QubGlicmVncnRlc3QucnVudGVzdC5ydW50ZXN0X2lubmVyCisjIGNhbGwgbG9hZF90ZXN0cywgd2hlbiBwcmVzZW50LCB0byBkaXNjb3ZlciB0ZXN0cyB0byBydW4uCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0IGltcG9ydCBsb2FkX3Rlc3RzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICB0ay5Ob0RlZmF1bHRSb290KCkKKyAgICB1bml0dGVzdC5tYWluKGV4aXQ9RmFsc2UpCisgICAgdGsuX3N1cHBvcnRfZGVmYXVsdF9yb290ID0gMQorICAgIHRrLl9kZWZhdWx0X3Jvb3QgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggMDcxNTdmNS4uNjNhYzgxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtNzcsOSArNzcsOSBAQAogCiAgICAgICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKICAgICAgICAgICAgIG5ld3NvY2tldCwgZnJvbWFkZHIgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgY29ubnN0cmVhbSA9IHNzbC53cmFwX3NvY2tldChuZXdzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29ubnN0cmVhbSA9IGNvbnRleHQud3JhcF9zb2NrZXQobmV3c29ja2V0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICAgICAgcmV0dXJuIGNvbm5zdHJlYW0sIGZyb21hZGRyCiAKICAgICBJTUFQNF9TU0wgPSBpbWFwbGliLklNQVA0X1NTTApAQCAtMjQzLDYgKzI0Myw1NSBAQAogICAgICAgICAgICAgY2xpZW50LnNodXRkb3duKCkKIAogICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9icmFja2V0X2ZsYWdzKHNlbGYpOgorCisgICAgICAgICMgVGhpcyB2aW9sYXRlcyBSRkMgMzUwMSwgd2hpY2ggZGlzYWxsb3dzICddJyBjaGFyYWN0ZXJzIGluIHRhZyBuYW1lcywKKyAgICAgICAgIyBidXQgaW1hcGxpYiBoYXMgYWxsb3dlZCBwcm9kdWNpbmcgc3VjaCB0YWdzIGZvcmV2ZXIsIG90aGVyIHByb2dyYW1zCisgICAgICAgICMgYWxzbyBwcm9kdWNlIHRoZW0gKGVnOiBPdGhlckluYm94J3MgT3JnYW5pemVyIGFwcCBhcyBvZiAyMDE0MDcxNiksCisgICAgICAgICMgYW5kIEdtYWlsLCBmb3IgZXhhbXBsZSwgYWNjZXB0cyB0aGVtIGFuZCBwcm9kdWNlcyB0aGVtLiAgU28gd2UKKyAgICAgICAgIyBzdXBwb3J0IHRoZW0uICBTZWUgaXNzdWUgIzIxODE1LgorCisgICAgICAgIGNsYXNzIEJyYWNrZXRGbGFnSGFuZGxlcihTaW1wbGVJTUFQSGFuZGxlcik6CisKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbGFncyA9IFsnQW5zd2VyZWQnLCAnRmxhZ2dlZCcsICdEZWxldGVkJywgJ1NlZW4nLCAnRHJhZnQnXQorICAgICAgICAgICAgICAgIHN1cGVyKCkuaGFuZGxlKCkKKworICAgICAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrJykKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnRkFLRUFVVEggc3VjY2Vzc2Z1bCcpCisKKyAgICAgICAgICAgIGRlZiBjbWRfU0VMRUNUKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgZmxhZ19tc2cgPSAnIFxcJy5qb2luKHNlbGYuZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKCgnKiBGTEFHUyAoJXMpJyAlIGZsYWdfbXNnKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAyIEVYSVNUUycpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAwIFJFQ0VOVCcpCisgICAgICAgICAgICAgICAgbXNnID0gKCcqIE9LIFtQRVJNQU5FTlRGTEFHUyAlcyBcXCopXSBGbGFncyBwZXJtaXR0ZWQuJworICAgICAgICAgICAgICAgICAgICAgICAgJSBmbGFnX21zZykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUobXNnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdbUkVBRC1XUklURV0gU0VMRUNUIGNvbXBsZXRlZC4nKQorCisgICAgICAgICAgICBkZWYgY21kX1NUT1JFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2ZsYWdzID0gYXJnc1syXS5zdHJpcCgnKCcpLnN0cmlwKCcpJykuc3BsaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuZXh0ZW5kKG5ld19mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnc19tc2cgPSAnKEZMQUdTICglcykpJyAlICcgXFwnLmpvaW4oc2VsZi5mbGFncykKKyAgICAgICAgICAgICAgICBtc2cgPSAnKiAlcyBGRVRDSCAlcycgJSAoYXJnc1swXSwgZmxhZ3NfbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShtc2cuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ1NUT1JFIGNvbXBsZXRlZC4nKQorCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihCcmFja2V0RmxhZ0hhbmRsZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwgYidabUZyWlE9PVxyXG4nKQorICAgICAgICAgICAgY2xpZW50LnNlbGVjdCgndGVzdCcpCisgICAgICAgICAgICB0eXAsIFtkYXRhXSA9IGNsaWVudC5zdG9yZShiJzEnLCAiK0ZMQUdTIiwgIlt0ZXN0XSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInW3Rlc3RdJywgZGF0YSkKKyAgICAgICAgICAgIGNsaWVudC5zZWxlY3QoJ3Rlc3QnKQorICAgICAgICAgICAgdHlwLCBbZGF0YV0gPSBjbGllbnQucmVzcG9uc2UoJ1BFUk1BTkVOVEZMQUdTJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidbdGVzdF0nLCBkYXRhKQorCisgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2lzc3VlNTk0OShzZWxmKToKIAogICAgICAgICBjbGFzcyBFT0ZIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CkBAIC01ODksOCArNjM4LDEwIEBACiAKICAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfY2VydGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBjZXJ0ZmlsZT1DRVJURklMRSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKaW5kZXggYjU0ZGFmOC4uNDc2YmE5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgaW1naGRyCiBpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCkBAIC00OSw2ICs1MCwxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWdoZHIud2hhdChOb25lLCBkYXRhKSwgZXhwZWN0ZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltZ2hkci53aGF0KE5vbmUsIGJ5dGVhcnJheShkYXRhKSksIGV4cGVjdGVkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZvciBmaWxlbmFtZSwgZXhwZWN0ZWQgaW4gVEVTVF9GSUxFUzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbmRmaWxlKGZpbGVuYW1lLCBzdWJkaXI9J2ltZ2hkcmRhdGEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1naGRyLndoYXQocGF0aGxpYi5QYXRoKGZpbGVuYW1lKSksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfdGVzdChzZWxmKToKICAgICAgICAgZGVmIHRlc3RfanVtYm8oaCwgZmlsZSk6CiAgICAgICAgICAgICBpZiBoLnN0YXJ0c3dpdGgoYidlZ2dzJyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CmluZGV4IGVlOWVlMWEuLjRlY2UzNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CkBAIC02LDEzICs2LDEyIEBACiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgaW1wb3J0IGltcAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKaW5kZXggMWUzMzI3NC4uNzYwOTA4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKQEAgLTY5LDYgKzY5LDE4IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxvYWQoVEVTVEZOKQogCisgICAgZGVmIHRlc3RfaW1wb3J0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUKKworICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21pc3NpbmdfbW9kdWxlX3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgZnJvbSBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlIGltcG9ydCBibGFoCisKKyAgICBkZWYgdGVzdF9mcm9tX2ltcG9ydF9taXNzaW5nX2F0dHJfcmFpc2VzX0ltcG9ydEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlCisKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICAjIEJyaWVmIGRpZ3Jlc3Npb24gdG8gdGVzdCB0aGF0IGltcG9ydCBpcyBjYXNlLXNlbnNpdGl2ZTogIGlmIHdlIGdvdAogICAgICAgICAjIHRoaXMgZmFyLCB3ZSBrbm93IGZvciBzdXJlIHRoYXQgInJhbmRvbSIgZXhpc3RzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggYzExMmNhNy4uMGRkOWM4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTksOCArOCw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiAKLSMgWFhYIGZpbmRfc3BlYyB0ZXN0cwotCiBAdW5pdHRlc3Quc2tpcElmKHV0aWwuRVhURU5TSU9OUy5maWxlbmFtZSBpcyBOb25lLCAnX3Rlc3RjYXBpIG5vdCBhdmFpbGFibGUnKQogQHV0aWwuY2FzZV9pbnNlbnNpdGl2ZV90ZXN0cwogY2xhc3MgRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdCh1dGlsLkNBU0VPS1Rlc3RCYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCA3MWJmNjdmLi5jOWI0YTM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIAotIyBYWFggZmluZF9zcGVjIHRlc3RzCiAKIGNsYXNzIEZpbmRlclRlc3RzKGFiYy5GaW5kZXJUZXN0cyk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQppbmRleCA4ZjRiOGJiLi5hNGI1YTY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0yLDggKzIsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCA2MDNjN2Q3Li4yOWVjZmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CkBAIC0zLDggKzMsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi0KLWltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKaW5kZXggYzdkM2EyYS4uN2Y2NDU0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNSw2ICs1LDcgQEAKIAogIiIiCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSAuLiBpbXBvcnQgdXRpbAogCiAKQEAgLTMzLDMxICszNCw1MCBAQAogCiAgICAgIiIiCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX3BhY2thZ2VfXyhzZWxmKToKLSAgICAgICAgIyBbX19wYWNrYWdlX19dCisgICAgZGVmIGltcG9ydF9tb2R1bGUoc2VsZiwgZ2xvYmFsc18pOgogICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgogICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz17J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgZGVmIHRlc3RfdXNpbmdfX19wYWNrYWdlX18oc2VsZik6CisgICAgICAgICMgW19fcGFja2FnZV9fXQorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3BhY2thZ2VfXyc6ICdwa2cuZmFrZSd9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX25hbWVfXyhzZWxmLCBwYWNrYWdlX2FzX05vbmU9RmFsc2UpOgorICAgIGRlZiB0ZXN0X3VzaW5nX19fbmFtZV9fKHNlbGYpOgogICAgICAgICAjIFtfX25hbWVfX10KLSAgICAgICAgZ2xvYmFsc18gPSB7J19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW119Ci0gICAgICAgIGlmIHBhY2thZ2VfYXNfTm9uZToKLSAgICAgICAgICAgIGdsb2JhbHNfWydfX3BhY2thZ2VfXyddID0gTm9uZQotICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywgZ2xvYmFscz0gZ2xvYmFsc18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYXRoX18nOiBbXX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3dhcm5fd2hlbl91c2luZ19fX25hbWVfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEltcG9ydFdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXX0pCiAKICAgICBkZWYgdGVzdF9Ob25lX2FzX19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICAjIFtOb25lXQotICAgICAgICBzZWxmLnRlc3RfdXNpbmdfX19uYW1lX18ocGFja2FnZV9hc19Ob25lPVRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7CisgICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW10sICdfX3BhY2thZ2VfXyc6IE5vbmUgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfc3BlY19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpc24ndCBkZWZpbmVkLCBmYWxsIGJhY2sgb24gX19zcGVjX18ucGFyZW50LgorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3NwZWNfXyc6IEZha2VTcGVjKCdwa2cuZmFrZScpfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfd2Fybl93aGVuX3BhY2thZ2VfYW5kX3NwZWNfZGlzYWdyZWUoc2VsZik6CisgICAgICAgICMgUmFpc2UgYW4gSW1wb3J0V2FybmluZyBpZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhJbXBvcnRXYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuaW1wb3J0X21vZHVsZSh7J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fc3BlY19fJzogRmFrZVNwZWMoJ3BrZy5mYWtlZmFrZScpfSkKIAogICAgIGRlZiB0ZXN0X2JhZF9fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6ICc8bm90IHJlYWw+J30KQEAgLTcwLDYgKzkwLDExIEBACiAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJycsIGdsb2JhbHMsIHt9LCBbJ3JlbGltcG9ydCddLCAxKQogCiAKK2NsYXNzIEZha2VTcGVjOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorCisKIGNsYXNzIFVzaW5nX19wYWNrYWdlX19QRVAzMDIoVXNpbmdfX3BhY2thZ2VfXyk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKaW5kZXggNzA2OWQ5ZS4uYTdiZjI3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CkBAIC00Myw2ICs0MywxMCBAQAogICAgICIiIlRlc3QgQVBJLXNwZWNpZmljIGRldGFpbHMgZm9yIF9faW1wb3J0X18gKGUuZy4gcmFpc2luZyB0aGUgcmlnaHQKICAgICBleGNlcHRpb24gd2hlbiBwYXNzaW5nIGluIGFuIGludCBmb3IgdGhlIG1vZHVsZSBuYW1lKS4iIiIKIAorICAgIGRlZiB0ZXN0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdzb21lIG1vZHVsZSB0aGF0IGRvZXMgbm90IGV4aXN0JykKKwogICAgIGRlZiB0ZXN0X25hbWVfcmVxdWlyZXNfcnBhcml0aW9uKHNlbGYpOgogICAgICAgICAjIFJhaXNlIFR5cGVFcnJvciBpZiBhIG5vbi1zdHJpbmcgaXMgcGFzc2VkIGluIGZvciB0aGUgbW9kdWxlIG5hbWUuCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQppbmRleCA4MDQ1NDY1Li4xNDY0MDAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC03MywxNiArNzMsMTYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUuX19uYW1lX18sICdwa2cubW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfSW1wb3J0RXJyb3Ioc2VsZik6Ci0gICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIEltcG9ydEVycm9yIGJlY2F1c2UgaXQgdHJpZXMgdG8gaW1wb3J0Ci0gICAgICAgICMgYSBtb2R1bGUgd2hpY2ggZG9lc24ndCBleGlzdCwgdGhhdCBzaG91bGQgbGV0IHRoZSBJbXBvcnRFcnJvcgotICAgICAgICAjIHByb3BhZ2F0ZS4KKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIE1vZHVsZU5vdEZvdW5kRXJyb3IgYmVjYXVzZSBpdCB0cmllcworICAgICAgICAjIHRvIGltcG9ydCBhIG1vZHVsZSB3aGljaCBkb2Vzbid0IGV4aXN0LCB0aGF0IHNob3VsZCBsZXQgdGhlCisgICAgICAgICMgTW9kdWxlTm90Rm91bmRFcnJvciBwcm9wYWdhdGUuCiAgICAgICAgIGRlZiBtb2R1bGVfY29kZSgpOgogICAgICAgICAgICAgaW1wb3J0IGlfZG9fbm90X2V4aXN0CiAgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5tb2QnOiBtb2R1bGVfY29kZX0pIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXhjOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcikgYXMgZXhjOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3BrZycsIGZyb21saXN0PVsnbW9kJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaV9kb19ub3RfZXhpc3QnLCBleGMuZXhjZXB0aW9uLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQppbmRleCAzNzU1Yjg0Li4yNDM5NjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CkBAIC0xLDcgKzEsNiBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CmluZGV4IGIzMmE4NzYuLjdhYTI2YjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0xNiwxMSArMTYsMTQgQEAKIAogICAgICIiIlRlc3RzIGZvciBQYXRoRmluZGVyLiIiIgogCisgICAgZmluZCA9IE5vbmUKKyAgICBjaGVja19mb3VuZCA9IE5vbmUKKwogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgVGVzdCBOb25lIHJldHVybmVkIHVwb24gbm90IGZpbmRpbmcgYSBzdWl0YWJsZSBsb2FkZXIuCiAgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQobW9kdWxlKSkKIAogICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCkBAIC0zMCw4ICszMyw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCkBAIC00MCw4ICs0Myw4IEBACiAgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2xpc3Qoc2VsZik6CiAgICAgICAgICMgQW4gZW1wdHkgbGlzdCBzaG91bGQgbm90IGNvdW50IGFzIGFza2luZyBmb3Igc3lzLnBhdGguCkBAIC01MCw3ICs1Myw3IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdtb2R1bGUnLCBbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQoJ21vZHVsZScsIFtdKSkKIAogICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCkBAIC02MCw4ICs2Myw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdLCBpbXBvcnRlcikKIApAQCAtNzMsNyArNzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhfZW50cnldKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kKCdvcycpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhfZW50cnldKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKQEAgLTg1LDggKzg4LDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKG9zLmdldGN3ZCgpLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtwYXRoXSwgcGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MuZ2V0Y3dkKCksIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQogCiAgICAgZGVmIHRlc3RfTm9uZV9vbl9zeXNfcGF0aChzZWxmKToKQEAgLTE4MiwxNSArMTg1LDUwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInKSkKIAogCitjbGFzcyBGaW5kTW9kdWxlVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgY2hlY2tfZm91bmQoc2VsZiwgZm91bmQsIGltcG9ydGVyKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZCwgaW1wb3J0ZXIpCiAKIAotKEZyb3plbl9GaW5kZXJUZXN0cywKLSBTb3VyY2VfRmluZGVyVGVzdHMKLSApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisoRnJvemVuX0ZpbmRNb2R1bGVUZXN0cywKKyBTb3VyY2VfRmluZE1vZHVsZVRlc3RzCispID0gdXRpbC50ZXN0X2JvdGgoRmluZE1vZHVsZVRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisKK2NsYXNzIEZpbmRTcGVjVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGNoZWNrX2ZvdW5kKHNlbGYsIGZvdW5kLCBpbXBvcnRlcik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm91bmQubG9hZGVyLCBpbXBvcnRlcikKKworCisoRnJvemVuX0ZpbmRTcGVjVGVzdHMsCisgU291cmNlX0ZpbmRTcGVjVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXJUZXN0czoKIAorICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9zcGVjKHNlbGYpOgorICAgICAgICAjIFBhdGhFbnRyeUZpbmRlciB3aXRoIGZpbmRfbW9kdWxlKCkgZGVmaW5lZCBzaG91bGQgd29yay4KKyAgICAgICAgIyBJc3N1ZSAjMjA3NjMuCisgICAgICAgIGNsYXNzIEZpbmRlcjoKKyAgICAgICAgICAgIHBhdGhfbG9jYXRpb24gPSAndGVzdF9maW5kZXJfd2l0aF9maW5kX21vZHVsZScKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoICE9IHNlbGYucGF0aF9sb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGZpbmRfbW9kdWxlKGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtGaW5kZXIucGF0aF9sb2NhdGlvbl0rc3lzLnBhdGhbOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1bRmluZGVyXSk6CisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnaW1wb3J0bGliJykKKwogICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgUGF0aEVudHJ5RmluZGVyIHdpdGggZmluZF9tb2R1bGUoKSBkZWZpbmVkIHNob3VsZCB3b3JrLgogICAgICAgICAjIElzc3VlICMyMDc2My4KQEAgLTIwNyw3ICsyNDUsNyBAQAogCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bRmluZGVyLnBhdGhfbG9jYXRpb25dK3N5cy5wYXRoWzpdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfaG9va3M9W0ZpbmRlcl0pOgotICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdpbXBvcnRsaWInKQogCiAKIChGcm96ZW5fUEVGVGVzdHMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CmluZGV4IDNiYjgxOWYuLjhhOTVhMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xLDcgKzEsOCBAQAogIiIiVGVzdCByZWxhdGl2ZSBpbXBvcnRzIChQRVAgMzI4KS4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRzOgogCkBAIC02NSw5ICs2NiwxMSBAQAogICAgICAgICAgICAgICAgIHVuY2FjaGVfbmFtZXMuYXBwZW5kKG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXSkKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfc3BlYygqY3JlYXRlKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIGZvciBnbG9iYWxfIGluIGdsb2JhbHNfOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgqdW5jYWNoZV9uYW1lcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgICAgICAgICBmb3IgZ2xvYmFsXyBpbiBnbG9iYWxzXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCp1bmNhY2hlX25hbWVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQogCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9tb2R1bGUoc2VsZik6CkBAIC0yMDQsMTEgKzIwNywxOCBAQAogCiAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CiAgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgotICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ2EnLCB7J19fcGFja2FnZV9fJzogJycsICdfX3NwZWNfXyc6IE5vbmV9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTEpCiAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZV9leGlzdHNfYWJzb2x1dGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgeydfX3BhY2thZ2VfXyc6ICcnLCAnX19zcGVjX18nOiBOb25lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0xKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWJlMTFmLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLVRlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCi1pbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCi1PdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgotdGhpcyBzY3JpcHQuCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IHN5cwotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCi0KLSAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCAzNGI4NmNkLi4xMmNlMGNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTUsNyArNSw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IDczZjRjNjIuLmExNTExNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgICMgUEVQIDMwMgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKSAjIFhYWAorICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgIyBTYW5pdHkgY2hlY2tzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19jYWNoZWRfXywgY29tcGlsZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC54LCA1KQpAQCAtMjQ1LDEyICsyNDUsNyBAQAogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0OgogCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgotICAgICAgICBsb2FkZXIgPSBzZWxmLmxvYWRlcihtb2R1bGVfbmFtZSwgZmlsZSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAjIFhYWCBDaGFuZ2UgdG8gdXNlIGV4ZWNfbW9kdWxlKCkuCi0gICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobW9kdWxlX25hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgbWFuaXB1bGF0ZV9ieXRlY29kZShzZWxmLCBuYW1lLCBtYXBwaW5nLCBtYW5pcHVsYXRvciwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQppbmRleCBlNmEyNDE1Li43OTVkNDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xNiwxMCArMTYsMTkgQEAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19sZWdhY3koc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkoJycpLCAnZmluZF9tb2R1bGUnKSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKaW5kZXggMWUwNzcxYi4uOTgwODU1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKICMgQmVjYXVzZSBzeXMucGF0aCBnZXRzIGVzc2VudGlhbGx5IGJsYW5rZWQsIG5lZWQgdG8gaGF2ZSB1bmljb2RlZGF0YSBhbHJlYWR5CiAjIGltcG9ydGVkIGZvciB0aGUgcGFyc2VyIHRvIHVzZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKaW5kZXggZDRiZjkxNS4uYzg2MjQ4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTIwNyw2ICsyMDcsMTAgQEAKIAogICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCiAKKyAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBzcGVjID0gJ2Egc3BlYycKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbnMuY3JlYXRlX21vZHVsZShzcGVjKSkKKwogICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmxvYWRfbW9kdWxlKCdzb21ldGhpbmcnKQpAQCAtNTE5LDYgKzUyMywxMiBAQAogICAgICAgICBzdXBwb3J0LnVubG9hZChzZWxmLm1vZHVsZV9uYW1lKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxvYWQsIHNlbGYubW9kdWxlX25hbWUpCiAKKyAgICBkZWYgbG9hZChzZWxmLCBsb2FkZXIpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9sb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwgbG9hZGVyKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcC5fbG9hZF91bmxvY2tlZChzcGVjKQorCiAgICAgZGVmIG1vY2tfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgIHJldHVybiBtb2NrLnBhdGNoLm9iamVjdChzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcywgJ2dldF9jb2RlJykKIApAQCAtNTI4LDkgKzUzOCw3IEBACiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUuc2lkZV9lZmZlY3QgPSBJbXBvcnRFcnJvcgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZChsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9nZXRfY29kZV9Ob25lKHNlbGYpOgogICAgICAgICAjIElmIGdldF9jb2RlKCkgcmV0dXJucyBOb25lLCByYWlzZSBJbXBvcnRFcnJvci4KQEAgLTUzOCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IE5vbmUKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWQobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldHVybmVkKHNlbGYpOgogICAgICAgICAjIFRoZSBsb2FkZWQgbW9kdWxlIHNob3VsZCBiZSByZXR1cm5lZC4KQEAgLTU0NiwxNCArNTU0LDE2IEBACiAgICAgICAgIHdpdGggc2VsZi5tb2NrX2dldF9jb2RlKCkgYXMgbW9ja2VkX2dldF9jb2RlOgogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IGNvZGUKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkKGxvYWRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1tzZWxmLm1vZHVsZV9uYW1lXSkKIAogCiAoRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzLAogIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cwogICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQorICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcz1TUExJVF9JTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbml0PWluaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbD11dGlsKQogCiAKICMjIyMjIEV4ZWN1dGlvbkxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CmluZGV4IDZiYzNjNTYuLmIwYTk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC05OSw5ICs5OSw3IEBACiAKIGNsYXNzIEZpbmRMb2FkZXJUZXN0czoKIAotICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOiByZXR1cm4gbmFtZSwgcGF0aAorICAgIEZha2VNZXRhRmluZGVyID0gTm9uZQogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgSWYgYSBtb2R1bGUgd2l0aCBfX2xvYWRlcl9fIGlzIGluIHN5cy5tb2R1bGVzLCB0aGVuIHJldHVybiBpdC4KQEAgLTE3MSw5ICsxNjksMzAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuaW5pdC5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKIAogCi0oRnJvemVuX0ZpbmRMb2FkZXJUZXN0cywKLSBTb3VyY2VfRmluZExvYWRlclRlc3RzCi0gKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclRlc3RzLCBpbml0PWluaXQpCitjbGFzcyBGaW5kTG9hZGVyUEVQNDUxVGVzdHMoRmluZExvYWRlclRlc3RzKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX3NwZWMobmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgICAgICByZXR1cm4gbWFjaGluZXJ5WydTb3VyY2UnXS5Nb2R1bGVTcGVjKG5hbWUsIChuYW1lLCBwYXRoKSkKKworCisoRnJvemVuX0ZpbmRMb2FkZXJQRVA0NTFUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclBFUDQ1MVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclBFUDQ1MVRlc3RzLCBpbml0PWluaXQpCisKKworY2xhc3MgRmluZExvYWRlclBFUDMwMlRlc3RzKEZpbmRMb2FkZXJUZXN0cyk6CisKKyAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLCBwYXRoCisKKworKEZyb3plbl9GaW5kTG9hZGVyUEVQMzAyVGVzdHMsCisgU291cmNlX0ZpbmRMb2FkZXJQRVAzMDJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZpbmRMb2FkZXJQRVAzMDJUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIFJlbG9hZFRlc3RzOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CmluZGV4IGNjMzgzYzIuLmZmZDhkYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKQEAgLTY2LDYgKzY2LDggQEAKICAgICAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2xvYWRlcihUZXN0aW5nSW1wb3J0ZXIubW9kdWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKGxvYWRlcikpCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSkKICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwogICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCiAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CmluZGV4IGRmMGFmMTIuLmIyYWFkZmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMyw3ICszLDYgQEAKIGluaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIAogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdlYWtyZWYKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKaW5kZXggNjYzOTYxMi4uZTM3ZDhhMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CkBAIC0xLDEzICsxLDEwIEBACiBpbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGltcG9ydGxpYi5hYmMKLWltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC50ZXN0X2ltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiAjIG5lZWRlZCB0ZXN0czoKICMKQEAgLTcxLDYgKzY4LDcgQEAKICAgICAgICAgIyBUT0RPOiB3aWxsIHdlIGV2ZXIgd2FudCB0byBwYXNzIGV4Y19pbmZvIHRvIF9fZXhpdF9fPwogICAgICAgICBzZWxmLmN0eC5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQogCisKIGNsYXNzIFNpbmdsZU5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgogICAgIHBhdGhzID0gWydwb3J0aW9uMSddCiAKQEAgLTg3LDcgKzg1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZvbyksICI8bW9kdWxlICdmb28nIChuYW1lc3BhY2UpPiIpCiAKIAotY2xhc3MgRHluYW1pY1BhdGhlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CitjbGFzcyBEeW5hbWljUGF0aE5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgogICAgIHBhdGhzID0gWydwb3J0aW9uMSddCiAKICAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CkBAIC0yODksNSArMjg3LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYV90ZXN0LmF0dHIsICdpbiBtb2R1bGUnKQogCiAKK2NsYXNzIFJlbG9hZFRlc3RzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisgICAgZGVmIHRlc3RfZHluYW1pY19wYXRoKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICAgICAgIyBOb3cgbW9kaWZ5IHN5cy5wYXRoIGFuZCByZWxvYWQuCisgICAgICAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCAncG9ydGlvbjInKSkKKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisKKyAgICAgICAgIyBBbmQgbWFrZSBzdXJlIGZvby50d28gaXMgbm93IGltcG9ydGFibGUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CmluZGV4IDhiMzMzZTguLjVhMTZhMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKQEAgLTUsNiArNSw3IEBACiB1dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBwYXRobGliCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgQ2xlYW5JbXBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwpAQCAtNjU5LDYgKzY2MCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMuY2FjaGVkLCBzZWxmLmNhY2hlZCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNwZWMuaGFzX2xvY2F0aW9uKQogCisgICAgZGVmIHRlc3Rfc3BlY19mcm9tX2ZpbGVfbG9jYXRpb25fcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aGxpYi5QdXJlUGF0aChzZWxmLnBhdGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMub3JpZ2luLCBzZWxmLnBhdGgpCisKICAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9kZWZhdWx0X3dpdGhvdXRfbG9jYXRpb24oc2VsZik6CiAgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oc2VsZi5uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKaW5kZXggNDFjYTMzMy4uZDYxNTM3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydGxpYl91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCiAKIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNDYsMTQgKzQ3LDggQEAKICAgICAgICAgICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBMb2FkZXIoKSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignY3JlYXRlX21vZHVsZScsIHN0cih3WzBdLm1lc3NhZ2UpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX21vZHVsZV9yZXR1cm5zX05vbmUoc2VsZik6CiAgICAgICAgIGNsYXNzIExvYWRlcihzZWxmLmFiYy5Mb2FkZXIpOgpAQCAtNjc3LDYgKzY3MiwxNSBAQAogICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIG5vdCBiZSBOb25lJykKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBwYXRoID0gcGF0aGxpYi5QdXJlUGF0aCgnZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIHRvIG5vdCBiZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbmUnKQogICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlKHNlbGYpOgpAQCAtNzM4LDYgKzc0MiwxNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIHRvIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbmUnKQorICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHBhdGggPSBwYXRobGliLlB1cmVQYXRoKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpLCBleHBlY3QpCisKIAogKEZyb3plbl9QRVAzMTQ3VGVzdHMsCiAgU291cmNlX1BFUDMxNDdUZXN0cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CmluZGV4IGM4OTNiY2YuLjAwNWI2ODUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBlbHNlOgogICAgICAgICByb290ID0gbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5SRUdJU1RSWV9LRVkKICAgICBrZXkgPSByb290LmZvcm1hdChmdWxsbmFtZT1uYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj0nJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgdHJ5OgogICAgICAgICB3aXRoIHRlbXBfbW9kdWxlKG5hbWUsICJhID0gMSIpIGFzIGxvY2F0aW9uOgogICAgICAgICAgICAgc3Via2V5ID0gQ3JlYXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKaW5kZXggNjcxZTA1YS4uOTc2MzRlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQpAQCAtMzAsNiArMzAsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyIGFzIG1vZAogZnJvbSB0ZXN0IGltcG9ydCBpbnNwZWN0X2ZvZGRlcjIgYXMgbW9kMgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGZyb20gdGVzdC50ZXN0X2ltcG9ydCBpbXBvcnQgX3JlYWR5X3RvX2ltcG9ydAogCkBAIC0zOCw3ICszOSw3IEBACiAjIGlzbW9kdWxlLCBpc2NsYXNzLCBpc21ldGhvZCwgaXNmdW5jdGlvbiwgaXN0cmFjZWJhY2ssIGlzZnJhbWUsIGlzY29kZSwKICMgaXNidWlsdGluLCBpc3JvdXRpbmUsIGlzZ2VuZXJhdG9yLCBpc2dlbmVyYXRvcmZ1bmN0aW9uLCBnZXRtZW1iZXJzLAogIyBnZXRkb2MsIGdldGZpbGUsIGdldG1vZHVsZSwgZ2V0c291cmNlZmlsZSwgZ2V0Y29tbWVudHMsIGdldHNvdXJjZSwKLSMgZ2V0Y2xhc3N0cmVlLCBnZXRhcmdzcGVjLCBnZXRhcmd2YWx1ZXMsIGZvcm1hdGFyZ3NwZWMsIGZvcm1hdGFyZ3ZhbHVlcywKKyMgZ2V0Y2xhc3N0cmVlLCBnZXRhcmd2YWx1ZXMsIGZvcm1hdGFyZ3NwZWMsIGZvcm1hdGFyZ3ZhbHVlcywKICMgY3VycmVudGZyYW1lLCBzdGFjaywgdHJhY2UsIGlzZGF0YWRlc2NyaXB0b3IKIAogIyBOT1RFOiBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHRlc3RzIHJlbGF0aW5nIHRvIGludGVyYWN0aW9uIHdpdGgKQEAgLTY0LDcgKzY1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzZnJhbWUsIGluc3BlY3QuaXNmdW5jdGlvbiwgaW5zcGVjdC5pc21ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzbW9kdWxlLCBpbnNwZWN0LmlzdHJhY2ViYWNrLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNnZW5lcmF0b3IsIGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lLCBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb25dKQorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmUsIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzYXN5bmNnZW4sIGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uXSkKIAogICAgIGRlZiBpc3Rlc3Qoc2VsZiwgcHJlZGljYXRlLCBleHApOgogICAgICAgICBvYmogPSBldmFsKGV4cCkKQEAgLTcyLDYgKzc0LDcgQEAKIAogICAgICAgICBmb3Igb3RoZXIgaW4gc2VsZi5wcmVkaWNhdGVzIC0gc2V0KFtwcmVkaWNhdGVdKToKICAgICAgICAgICAgIGlmIChwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uIG9yIFwKKyAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbiBvciBcCiAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKSBhbmQgXAogICAgICAgICAgICAgICAgb3RoZXIgPT0gaW5zcGVjdC5pc2Z1bmN0aW9uOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC04MSw2ICs4NCwxMCBAQAogICAgIGZvciBpIGluIHJhbmdlKDIpOgogICAgICAgICB5aWVsZCBpCiAKK2FzeW5jIGRlZiBhc3luY19nZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKKyAgICBhc3luYyBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgeWllbGQgaQorCiBhc3luYyBkZWYgY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoc2VsZik6CiAgICAgcmV0dXJuICdzcGFtJwogCkBAIC0xMjEsNiArMTI4LDEwIEBACiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvciwgJ2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3IsICcoeCBmb3IgeCBpbiByYW5nZSgyKSknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sICdnZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCisgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNhc3luY2dlbiwKKyAgICAgICAgICAgICAgICAgICAgJ2FzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlKDEpJykKKyAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICdhc3luY19nZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCiAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQpAQCAtNDAwLDcgKzQxMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKG1vZC5zcGFtKSksIG1vZGZpbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGdpdC5hYnVzZSkpLCBtb2RmaWxlKQogICAgICAgICBmbiA9ICJfbm9uX2V4aXN0aW5nX2ZpbGVuYW1lX3VzZWRfZm9yX3NvdXJjZWZpbGVfdGVzdC5weSIKLSAgICAgICAgY28gPSBjb21waWxlKCJOb25lIiwgZm4sICJleGVjIikKKyAgICAgICAgY28gPSBjb21waWxlKCJ4PTEiLCBmbiwgImV4ZWMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbyksIE5vbmUpCiAgICAgICAgIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0gPSAoMSwgTm9uZSwgIk5vbmUiLCBjby5jb19maWxlbmFtZSkKICAgICAgICAgdHJ5OgpAQCAtMjkwMiw2ICsyOTEzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCckJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKIAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJy5hJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CiAgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQpAQCAtMjk4NSw2ICszMDAwLDE3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICduYW1lIG11c3QgYmUgYSBzdHInKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQogCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfaW1wbGljaXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0IGFyZ3VtZW50cyBtdXN0IGJlIHBhc3NlZCBpbiBhcycpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJy4wJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisKKyAgICAgICAgcGFyYW0gPSBpbnNwZWN0LlBhcmFtZXRlcigKKyAgICAgICAgICAgICcuMCcsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLmtpbmQsIGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbS5uYW1lLCAnaW1wbGljaXQwJykKKwogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfaW1tdXRhYmlsaXR5KHNlbGYpOgogICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ3NwYW0nLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKIApAQCAtMzIzMyw2ICszMjU5LDE3IEBACiAgICAgICAgIGJhID0gc2lnLmJpbmQoYXJncz0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLmFyZ3VtZW50cywgeydrd2FyZ3MnOiB7J2FyZ3MnOiAxfX0pCiAKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfaW1wbGljaXRfYXJnKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxOTYxMTogZ2V0Y2FsbGFyZ3Mgc2hvdWxkIHdvcmsgd2l0aCBzZXQgY29tcHJlaGVuc2lvbnMKKyAgICAgICAgZGVmIG1ha2Vfc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge3ogKiB6IGZvciB6IGluIHJhbmdlKDUpfQorICAgICAgICBzZXRjb21wX2NvZGUgPSBtYWtlX3NldC5fX2NvZGVfXy5jb19jb25zdHNbMV0KKyAgICAgICAgc2V0Y29tcF9mdW5jID0gdHlwZXMuRnVuY3Rpb25UeXBlKHNldGNvbXBfY29kZSwge30pCisKKyAgICAgICAgaXRlcmF0b3IgPSBpdGVyKHJhbmdlKDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbChzZXRjb21wX2Z1bmMsIGl0ZXJhdG9yKSwgezAsIDEsIDQsIDksIDE2fSkKKwogCiBjbGFzcyBUZXN0Qm91bmRBcmd1bWVudHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfdW5oYXNoYWJsZShzZWxmKToKQEAgLTM1NDMsMTQgKzM1ODAsMTQgQEAKIAogICAgIGRlZiB0ZXN0X2RldGFpbHMoc2VsZik6CiAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCd1bml0dGVzdCcpCi0gICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ2luc3BlY3QnLAorICAgICAgICBhcmdzID0gc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCphcmdzLCAnLW0nLCAnaW5zcGVjdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaXR0ZXN0JywgJy0tZGV0YWlscycpCiAgICAgICAgIG91dHB1dCA9IG91dC5kZWNvZGUoKQogICAgICAgICAjIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgb24gdGhlIG91dHB1dAogICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX25hbWVfXywgb3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2ZpbGVfXywgb3V0cHV0KQotICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGUuX19jYWNoZWRfXywgb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2NhY2hlZF9fLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnQucHkgYi9MaWIvdGVzdC90ZXN0X2ludC5weQppbmRleCBiNjZjNWQ2Li4xNGJiZDYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ludC5weQpAQCAtMiw2ICsyLDggQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC50ZXN0X2dyYW1tYXIgaW1wb3J0IChWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUykKIAogTCA9IFsKICAgICAgICAgKCcwJywgMCksCkBAIC0yMTIsNiArMjE0LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcyYnI0NXFjJywgMzUpLCA0Mjk0OTY3Mjk3KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgnMXoxNDF6NScsIDM2KSwgNDI5NDk2NzI5NykKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnLmVFakonKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobGl0LCAwKSwgZXZhbChsaXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobGl0LCAwKSwgaW50KGxpdC5yZXBsYWNlKCdfJywgJycpLCAwKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnLmVFakonKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBsaXQsIDApCisgICAgICAgICMgQWRkaXRpb25hbCB0ZXN0IGNhc2VzIHdpdGggYmFzZXMgIT0gMCwgb25seSBmb3IgdGhlIGNvbnN0cnVjdG9yOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgiMV8wMCIsIDMpLCA5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgiMF8xMDAiKSwgMTAwKSAgIyBub3QgdmFsaWQgYXMgYSBsaXRlcmFsIQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChiIjFfMDAiKSwgMTAwKSAgIyBieXRlIHVuZGVyc2NvcmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiXzEwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIitfMTAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiMV9fMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIxMDBfIikKKwogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NtYWxsX2ludHMoc2VsZik6CiAgICAgICAgICMgQnVnICMzMjM2OiBSZXR1cm4gc21hbGwgbG9uZ3MgZnJvbSBQeUxvbmdfRnJvbVN0cmluZwpAQCAtNDMwLDIxICs0NTEsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICBuID0gaW50KGJhZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBpbnQpCiAKICAgICAgICAgYmFkX2ludCA9IEJhZEludDIoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBiYWRfaW50ID0gVHJ1bmNSZXR1cm5zQmFkSW50KCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICBuID0gaW50KGJhZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBpbnQpCiAKICAgICAgICAgZ29vZF9pbnQgPSBUcnVuY1JldHVybnNJbnRTdWJjbGFzcygpCiAgICAgICAgIG4gPSBpbnQoZ29vZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKICAgICAgICAgbiA9IEludFN1YmNsYXNzKGdvb2RfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgSW50U3ViY2xhc3MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lvLnB5IGIvTGliL3Rlc3QvdGVzdF9pby5weQppbmRleCA1MTExODgyLi44YTIxMTFjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKQEAgLTQ5Niw3ICs0OTYsMTEgQEAKICAgICBkZWYgdGVzdF9vcGVuX2hhbmRsZXNfTlVMX2NoYXJzKHNlbGYpOgogICAgICAgICBmbl93aXRoX05VTCA9ICdmb29cMGJhcicKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBmbl93aXRoX05VTCwgJ3cnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQorCisgICAgICAgIGJ5dGVzX2ZuID0gYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBieXRlc19mbiwgJ3cnKQogCiAgICAgZGVmIHRlc3RfcmF3X2ZpbGVfaW8oc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiLCBidWZmZXJpbmc9MCkgYXMgZjoKQEAgLTg1Niw2ICs4NjAsMzIgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoc3RyZWFtLCBtZXRob2QpKGJ1ZmZlciksIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhidWZmZXIpLCBiIjEyMzQ1IikKIAorICAgIGRlZiB0ZXN0X2ZzcGF0aF9zdXBwb3J0KHNlbGYpOgorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgICAgICBkZWYgY2hlY2tfcGF0aF9zdWNjZWVkcyhwYXRoKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKHBhdGgsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJlZ2dcbiIpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKHBhdGgsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiZWdnXG4iKQorCisgICAgICAgIGNoZWNrX3BhdGhfc3VjY2VlZHMoUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pKQorICAgICAgICBjaGVja19wYXRoX3N1Y2NlZWRzKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOLmVuY29kZSgndXRmLTgnKSkpCisKKyAgICAgICAgYmFkX3BhdGggPSBQYXRoTGlrZShUeXBlRXJyb3IpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYub3BlbihiYWRfcGF0aCwgJ3cnKQorCisgICAgICAgICMgZW5zdXJlIHRoYXQgcmVmY291bnRpbmcgaXMgY29ycmVjdCB3aXRoIHNvbWUgZXJyb3IgY29uZGl0aW9ucworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ3JlYWQvd3JpdGUvYXBwZW5kIG1vZGUnKToKKyAgICAgICAgICAgIHNlbGYub3BlbihQYXRoTGlrZShzdXBwb3J0LlRFU1RGTiksICdyd3hhJykKKwogCiBjbGFzcyBDSU9UZXN0KElPVGVzdCk6CiAKQEAgLTE3ODIsNyArMTgxMiw3IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChtZXRob2QpOgogICAgICAgICAgICAgICAgIHBhaXIgPSBzZWxmLnRwKHNlbGYuQnl0ZXNJTyhiImFiY2RlZiIpLCBzZWxmLk1vY2tSYXdJTygpKQogCi0gICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzbGlrZSg1KQorICAgICAgICAgICAgICAgIGRhdGEgPSBieXRlc2xpa2UoYidcMCcgKiA1KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwYWlyLCBtZXRob2QpKGRhdGEpLCA1KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoZGF0YSksIGIiYWJjZGUiKQogCkBAIC0zMjQ2LDggKzMyNzYsNyBAQAogCiBjbGFzcyBQeVRleHRJT1dyYXBwZXJUZXN0KFRleHRJT1dyYXBwZXJUZXN0KToKICAgICBpbyA9IHB5aW8KLSAgICAjc2h1dGRvd25fZXJyb3IgPSAiTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGFzY2lpIgotICAgIHNodXRkb3duX2Vycm9yID0gIlR5cGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaXMgbm90IGl0ZXJhYmxlIgorICAgIHNodXRkb3duX2Vycm9yID0gIkxvb2t1cEVycm9yOiB1bmtub3duIGVuY29kaW5nOiBhc2NpaSIKIAogCiBjbGFzcyBJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weSBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CmluZGV4IDkxYWU4ZDguLjBlMzk1MTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CkBAIC0xMTksNyArMTE5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6Ci0gICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgYWRkciA9IGInXDAnICogbGVuZ3RoCiAgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSA0KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcyIKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCkBAIC0xMzksMTEgKzEzOSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDMyMzIyMzU1MjEsICI6OmMwYTg6MSIpCiAKICAgICBkZWYgdGVzdF9wYWNrZWQoc2VsZik6Ci0gICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCIwMDAwMDAwMCIpCisgICAgICAgIGFkZHIgPSBiJ1wwJyoxMiArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjoiKQotICAgICAgICBhZGRyID0gYnl0ZXMoMTIpICsgYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKQorICAgICAgICBhZGRyID0gYidcMCcqMTIgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6YzBhODoxIikKLSAgICAgICAgYWRkciA9IGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikgKyBieXRlcygxMikKKyAgICAgICAgYWRkciA9IGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikgKyBiJ1wwJyoxMgogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICJjMGE4OjE6OiIpCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9pbnRzX3JlamVjdGVkKHNlbGYpOgpAQCAtMTU4LDcgKzE1OCw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfcGFja2VkX2xlbmd0aChzZWxmKToKICAgICAgICAgZGVmIGFzc2VydEJhZExlbmd0aChsZW5ndGgpOgotICAgICAgICAgICAgYWRkciA9IGJ5dGVzKGxlbmd0aCkKKyAgICAgICAgICAgIGFkZHIgPSBiJ1wwJyAqIGxlbmd0aAogICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gMTYpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKICAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKQEAgLTExNzYsNiArMTE3Niw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmtbNV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6NScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuaXB2Nl9uZXR3b3JrLl9fZ2V0aXRlbV9fLCAxIDw8IDY0KQogCiAgICAgZGVmIHRlc3RHZXRpdGVtKHNlbGYpOgogICAgICAgICAjIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9pcGFkZHItcHkvaXNzdWVzL2RldGFpbD9pZD0xNQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CmluZGV4IGE5MTY3MGIuLjU0MmIyODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKQEAgLTU0LDYgKzU0LDE0IEBACiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgogICAgICAgICByZXR1cm4gaQogCitjbGFzcyBEZWZhdWx0SXRlckNsYXNzOgorICAgIHBhc3MKKworY2xhc3MgTm9JdGVyQ2xhc3M6CisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgorICAgICAgICByZXR1cm4gaQorICAgIF9faXRlcl9fID0gTm9uZQorCiAjIE1haW4gdGVzdCBzdWl0ZQogCiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC05OTUsNiArMTAwMywxMCBAQAogICAgIGRlZiB0ZXN0X2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYpOgogICAgICAgICBjaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBTZXF1ZW5jZUNsYXNzLCAoMCwpKQogCisgICAgZGVmIHRlc3RfZXJyb3JfaXRlcihzZWxmKToKKyAgICAgICAgZm9yIHR5cCBpbiAoRGVmYXVsdEl0ZXJDbGFzcywgTm9JdGVyQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpdGVyLCB0eXAoKSkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KFRlc3RDYXNlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CmluZGV4IDE1MmY1ZmMuLjQxYzk3NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKQEAgLTQyLDcgKzQyLDYgQEAKICIiIgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHJlcGVhdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGxlbmd0aF9oaW50CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CmluZGV4IGUwNTQzMDMuLmVhMWY1N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IHdlYWtyZWYKIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAogZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCByYW5kb20KIGltcG9ydCBjb3B5CkBAIC02NDQsMjQgKzY0Myw1OCBAQAogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChwcm90bywgY3ljbGUoJ2FiYycpKQogCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgIyB0ZXN0IHdpdGggcGFydGlhbCBjb25zdW1lZCBpbnB1dCBpdGVyYWJsZQorICAgICAgICAgICAgaXQgPSBpdGVyKCdhYmNkZScpCisgICAgICAgICAgICBjID0gY3ljbGUoaXQpCisgICAgICAgICAgICBfID0gW25leHQoYykgZm9yIGkgaW4gcmFuZ2UoMildICAgICAgIyBjb25zdW1lIDIgb2YgNSBpbnB1dHMKKyAgICAgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoYywgcHJvdG8pCisgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHApICAgICAgICAgICAgICAgICAgIyByZWJ1aWxkIHRoZSBjeWNsZSBvYmplY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgZCksIGxpc3QoJ2NkZWFiY2RlYWJjZGVhYmNkZWFiJykpCisKKyAgICAgICAgICAgICMgdGVzdCB3aXRoIGNvbXBsZXRlbHkgY29uc3VtZWQgaW5wdXQgaXRlcmFibGUKKyAgICAgICAgICAgIGl0ID0gaXRlcignYWJjZGUnKQorICAgICAgICAgICAgYyA9IGN5Y2xlKGl0KQorICAgICAgICAgICAgXyA9IFtuZXh0KGMpIGZvciBpIGluIHJhbmdlKDcpXSAgICAgICMgY29uc3VtZSA3IG9mIDUgaW5wdXRzCisgICAgICAgICAgICBwID0gcGlja2xlLmR1bXBzKGMsIHByb3RvKQorICAgICAgICAgICAgZCA9IHBpY2tsZS5sb2FkcyhwKSAgICAgICAgICAgICAgICAgICMgcmVidWlsZCB0aGUgY3ljbGUgb2JqZWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGQpLCBsaXN0KCdjZGVhYmNkZWFiY2RlYWJjZGVhYicpKQorCiAgICAgZGVmIHRlc3RfY3ljbGVfc2V0c3RhdGUoc2VsZik6CisgICAgICAgICMgVmVyaWZ5IGJvdGggbW9kZXMgZm9yIHJlc3RvcmluZyBzdGF0ZQorCisgICAgICAgICMgTW9kZSAwIGlzIGVmZmljaWVudC4gIEl0IHVzZXMgYW4gaW5jb21wbGV0ZWx5IGNvbnN1bWVkIGlucHV0CisgICAgICAgICMgaXRlcmF0b3IgdG8gYnVpbGQgYSBjeWNsZSBvYmplY3QgYW5kIHRoZW4gcGFzc2VzIGluIHN0YXRlIHdpdGgKKyAgICAgICAgIyBhIGxpc3Qgb2YgcHJldmlvdXNseSBjb25zdW1lZCB2YWx1ZXMuICBUaGVyZSBpcyBubyBkYXRhCisgICAgICAgICMgb3ZlcmxhcCBiZXR3ZWVuIHRoZSB0d28uCisgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgIGMuX19zZXRzdGF0ZV9fKChsaXN0KCdhYmMnKSwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgYyksIGxpc3QoJ2RlZmdhYmNkZWZnYWJjZGVmZ2FiJykpCisKKyAgICAgICAgIyBNb2RlIDEgaXMgaW5lZmZpY2llbnQuICBJdCBzdGFydHMgd2l0aCBhIGN5Y2xlIG9iamVjdCBidWlsdAorICAgICAgICAjIGZyb20gYW4gaXRlcmF0b3Igb3ZlciB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGluIGEgcGFydGlhbAorICAgICAgICAjIGN5Y2xlIGFuZCB0aGVuIHBhc3NlcyBpbiBzdGF0ZSB3aXRoIGFsbCBvZiB0aGUgcHJldmlvdXNseQorICAgICAgICAjIHNlZW4gdmFsdWVzICh0aGlzIG92ZXJsYXBzIHZhbHVlcyBpbmNsdWRlZCBpbiB0aGUgaXRlcmF0b3IpLgorICAgICAgICBjID0gY3ljbGUoJ2RlZmcnKQorICAgICAgICBjLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjZGVmZycpLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBjKSwgbGlzdCgnZGVmZ2FiY2RlZmdhYmNkZWZnYWInKSkKKworICAgICAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCB0byBzZXRzdGF0ZSBuZWVkcyB0byBiZSBhIHR1cGxlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGN5Y2xlKCdkZWZnJykuX19zZXRzdGF0ZV9fKFtsaXN0KCdhYmNkZWZnJyksIDBdKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGEgbGlzdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjID0gY3ljbGUoJ2RlZmcnKQorICAgICAgICAgICAgYy5fX3NldHN0YXRlX18oKHR1cGxlKCdkZWZnJyksIDApKQorICAgICAgICB0YWtlKDIwLCBjKQorCisgICAgICAgICMgVGhlIHNlY29uZCBhcmd1bWVudCBpbiB0aGUgc2V0c3RhdGUgdHVwbGUgbXVzdCBiZSBhbiBpbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY3ljbGUoJ2RlZmcnKS5fX3NldHN0YXRlX18oKGxpc3QoJ2FiY2RlZmcnKSwgJ3gnKSkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sICgpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sIFtdKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKFtdLCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKCgpLCAwKSkKLSAgICAgICAgaXQgPSBjeWNsZSgnYWJjJykKLSAgICAgICAgaXQuX19zZXRzdGF0ZV9fKChbJ2RlJywgJ2ZnJ10sIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGl0LCAxNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnXSkKLSAgICAgICAgaXQgPSBjeWNsZSgnYWJjJykKLSAgICAgICAgaXQuX19zZXRzdGF0ZV9fKChbJ2RlJywgJ2ZnJ10sIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGl0LCAxNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnZGUnLCAnZmcnLCAnZGUnLCAnZmcnLCAnZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnZmcnLCAnZGUnLCAnZmcnLCAnZGUnLCAnZmcnXSkKIAogICAgIGRlZiB0ZXN0X2dyb3VwYnkoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgd2hldGhlciBpdCBhY2NlcHRzIGFyZ3VtZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQppbmRleCAwODA3ZTZmLi5iYWMzNzBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQganNvbgogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CmluZGV4IGZkYWZlYjYuLjdlNTY4YmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKQEAgLTcyLDEwICs3Miw4IEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2lucHV0X3R5cGUoc2VsZik6CiAgICAgICAgIG1zZyA9ICd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHInCi0gICAgICAgIGZvciB2YWx1ZSBpbiBbMSwgMy4xNCwgYidieXRlcycsIGInXHhmZlx4MDAnLCBbXSwge30sIE5vbmVdOgorICAgICAgICBmb3IgdmFsdWUgaW4gWzEsIDMuMTQsIFtdLCB7fSwgTm9uZV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCB2YWx1ZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKLSAgICAgICAgICAgIHNlbGYuanNvbi5sb2FkKEJ5dGVzSU8oYidbMSwyLDNdJykpCiAKICAgICBkZWYgdGVzdF9zdHJpbmdfd2l0aF91dGY4X2JvbShzZWxmKToKICAgICAgICAgIyBzZWUgIzE4OTU4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQppbmRleCA5NWZmNWI4Li43OTEwNTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIHRlc3QudGVzdF9qc29uIGltcG9ydCBQeVRlc3QsIENUZXN0Ci1pbXBvcnQgcmUKIAogIyAyMDA3LTEwLTA1CiBKU09ORE9DUyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CmluZGV4IGM3Y2M4YTcuLjJlOGJiYTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2RlY3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIHRlc3QudGVzdF9qc29uIGltcG9ydCBQeVRlc3QsIENUZXN0CiAKQEAgLTUyLDkgKzUzLDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kdW1wcywgW2IiaGkiXSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzX2RlY29kZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvYWRzLCBiJyJoaSInKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9hZHMsIGInWyJoaSJdJykKLQorICAgICAgICBmb3IgZW5jb2RpbmcsIGJvbSBpbiBbCisgICAgICAgICAgICAgICAgKCd1dGYtOCcsIGNvZGVjcy5CT01fVVRGOCksCisgICAgICAgICAgICAgICAgKCd1dGYtMTZiZScsIGNvZGVjcy5CT01fVVRGMTZfQkUpLAorICAgICAgICAgICAgICAgICgndXRmLTE2bGUnLCBjb2RlY3MuQk9NX1VURjE2X0xFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0zMmJlJywgY29kZWNzLkJPTV9VVEYzMl9CRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMzJsZScsIGNvZGVjcy5CT01fVVRGMzJfTEUpLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgIGRhdGEgPSBbImFceGI1XHUyMGFjXFUwMDAxZDEyMCJdCisgICAgICAgICAgICBlbmNvZGVkID0gc2VsZi5kdW1wcyhkYXRhKS5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYm9tICsgZW5jb2RlZCksIGRhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoZW5jb2RlZCksIGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgc2VsZi5sb2FkcywgYidbIlx4ODAiXScpCisgICAgICAgICMgUkZDLTcxNTkgYW5kIEVDTUEtNDA0IGV4dGVuZCBKU09OIHRvIGFsbG93IGRvY3VtZW50cyB0aGF0CisgICAgICAgICMgY29uc2lzdCBvZiBvbmx5IGEgc3RyaW5nLCB3aGljaCBjYW4gcHJlc2VudCBhIHNwZWNpYWwgY2FzZQorICAgICAgICAjIG5vdCBjb3ZlcmVkIGJ5IHRoZSBlbmNvZGluZyBkZXRlY3Rpb24gcGF0dGVybnMgc3BlY2lmaWVkIGluCisgICAgICAgICMgUkZDLTQ2MjcgZm9yIHV0Zi0xNi1sZSAoWFggMDAgWFggMDApLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoJyJcdTI2MDAiJy5lbmNvZGUoJ3V0Zi0xNi1sZScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXHUyNjAwJykKKyAgICAgICAgIyBFbmNvZGluZyBkZXRlY3Rpb24gZm9yIHNtYWxsICg8NCkgYnl0ZXMgb2JqZWN0cworICAgICAgICAjIGlzIGltcGxlbWVudGVkIGFzIGEgc3BlY2lhbCBjYXNlLiBSRkMtNzE1OSBhbmQgRUNNQS00MDQKKyAgICAgICAgIyBhbGxvdyBzaW5nbGUgY29kZXBvaW50IEpTT04gZG9jdW1lbnRzIHdoaWNoIGFyZSBvbmx5IHR3bworICAgICAgICAjIGJ5dGVzIGluIHV0Zi0xNiBlbmNvZGluZ3Mgdy9vIEJPTS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRzKGInNVx4MDAnKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRzKGInXHgwMDcnKSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRzKGInNTcnKSwgNTcpCiAKICAgICBkZWYgdGVzdF9vYmplY3RfcGFpcnNfaG9va193aXRoX3VuaWNvZGUoc2VsZik6CiAgICAgICAgIHMgPSAneyJ4a2QiOjEsICJrY3ciOjIsICJhcnQiOjMsICJoeG0iOjQsICJxcnQiOjUsICJwYWQiOjYsICJob3kiOjd9JwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQppbmRleCBmODIyMDI0Li45ZjQ5ODg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weSBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CmluZGV4IDQ3ZTJlZGQuLjM3NWQ5YzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CkBAIC0zLDYgKzMsOCBAQAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdG9rZW5pemUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKQEAgLTEwLDggKzEyLDYgQEAKIE5PTkVYSVNURU5UX0ZJTEVOQU1FID0gRklMRU5BTUUgKyAnLm1pc3NpbmcnCiBJTlZBTElEX05BTUUgPSAnIUAkKSghQCNfMScKIEVNUFRZID0gJycKLVRFU1RTID0gJ2luc3BlY3RfZm9kZGVyIGluc3BlY3RfZm9kZGVyMiBtYXBwaW5nX3Rlc3RzJwotVEVTVFMgPSBURVNUUy5zcGxpdCgpCiBURVNUX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCiBNT0RVTEVTID0gImxpbmVjYWNoZSBhYmMiLnNwbGl0KCkKIE1PRFVMRV9QQVRIID0gb3MucGF0aC5kaXJuYW1lKEZJTEVOQU1FKQpAQCAtMzcsNiArMzcsNjUgQEAKICAgICByZXR1cm4gMycnJyAjIE5vIGVuZGluZyBuZXdsaW5lCiAKIAorY2xhc3MgVGVtcEZpbGU6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5maWxlX25hbWUgPSBmcC5uYW1lCisgICAgICAgICAgICBmcC53cml0ZShzZWxmLmZpbGVfYnl0ZV9zdHJpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisKKworY2xhc3MgR2V0TGluZVRlc3RzR29vZERhdGEoVGVtcEZpbGUpOgorICAgICMgZmlsZV9saXN0ICAgPSBbJ2xpc3RcbicsICdvZlxuJywgJ2dvb2RcbicsICdzdHJpbmdzXG4nXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfYnl0ZV9zdHJpbmcgPSAnJy5qb2luKHNlbGYuZmlsZV9saXN0KS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgorICAgICAgICB3aXRoIHRva2VuaXplLm9wZW4oc2VsZi5maWxlX25hbWUpIGFzIGZwOgorICAgICAgICAgICAgZm9yIGluZGV4LCBsaW5lIGluIGVudW1lcmF0ZShmcCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmUuZW5kc3dpdGgoJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJ1xuJworCisgICAgICAgICAgICAgICAgY2FjaGVkX2xpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShzZWxmLmZpbGVfbmFtZSwgaW5kZXggKyAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgY2FjaGVkX2xpbmUpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lcyhzZWxmKToKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoc2VsZi5maWxlX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIHNlbGYuZmlsZV9saXN0KQorCisKK2NsYXNzIEdldExpbmVUZXN0c0JhZERhdGEoVGVtcEZpbGUpOgorICAgICMgZmlsZV9ieXRlX3N0cmluZyA9IGInQmFkIGRhdGEgZ29lcyBoZXJlJworCisgICAgZGVmIHRlc3RfZ2V0bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFN5bnRheEVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZSwgc2VsZi5maWxlX25hbWUsIDEpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFN5bnRheEVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMsIHNlbGYuZmlsZV9uYW1lKQorCisKK2NsYXNzIEVtcHR5RmlsZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFtdCisKKworY2xhc3MgU2luZ2xlRW1wdHlMaW5lKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gWydcbiddCisKKworY2xhc3MgR29vZFVuaWNvZGUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbJ8OhXG4nLCAnYlxuJywgJ2FiY2RlZlxuJywgJ8Ohw6HDocOhw6FcbiddCisKKworY2xhc3MgQmFkVW5pY29kZShHZXRMaW5lVGVzdHNCYWREYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9ieXRlX3N0cmluZyA9IGInXHg4MGFiYycKKworCiBjbGFzcyBMaW5lQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgpAQCAtNTMsMTMgKzExMiw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0bGluZShFTVBUWSwgMSksIEVNUFRZKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGxpbmUoSU5WQUxJRF9OQU1FLCAxKSwgRU1QVFkpCiAKLSAgICAgICAgIyBDaGVjayB3aGV0aGVyIGxpbmVzIGNvcnJlc3BvbmQgdG8gdGhvc2UgZnJvbSBmaWxlIGl0ZXJhdGlvbgotICAgICAgICBmb3IgZW50cnkgaW4gVEVTVFM6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihURVNUX1BBVEgsIGVudHJ5KSArICcucHknCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZm9yIGluZGV4LCBsaW5lIGluIGVudW1lcmF0ZShmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBnZXRsaW5lKGZpbGVuYW1lLCBpbmRleCArIDEpKQotCiAgICAgICAgICMgQ2hlY2sgbW9kdWxlIGxvYWRpbmcKICAgICAgICAgZm9yIGVudHJ5IGluIE1PRFVMRVM6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihNT0RVTEVfUEFUSCwgZW50cnkpICsgJy5weScKQEAgLTgwLDEyICsxMzIsMTMgQEAKIAogICAgIGRlZiB0ZXN0X2NsZWFyY2FjaGUoc2VsZik6CiAgICAgICAgIGNhY2hlZCA9IFtdCi0gICAgICAgIGZvciBlbnRyeSBpbiBURVNUUzoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFU1RfUEFUSCwgZW50cnkpICsgJy5weScKKyAgICAgICAgZm9yIGVudHJ5IGluIE1PRFVMRVM6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihNT0RVTEVfUEFUSCwgZW50cnkpICsgJy5weScKICAgICAgICAgICAgIGNhY2hlZC5hcHBlbmQoZmlsZW5hbWUpCiAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgMSkKIAogICAgICAgICAjIEFyZSBhbGwgZmlsZXMgY2FjaGVkPworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNhY2hlZCwgW10pCiAgICAgICAgIGNhY2hlZF9lbXB0eSA9IFtmbiBmb3IgZm4gaW4gY2FjaGVkIGlmIGZuIG5vdCBpbiBsaW5lY2FjaGUuY2FjaGVdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FjaGVkX2VtcHR5LCBbXSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CmluZGV4IDhmODJhYjUuLmFlZTYyZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgbGlzdF90ZXN0cwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQppbmRleCAwZTcwY2NkLi4wOGNkZDdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgY29uZmlncGFyc2VyCiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaW8KIGltcG9ydCBnYwpAQCAtMzA4LDYgKzMwOSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKCdJTkZPJyksIGxvZ2dpbmcuSU5GTykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExldmVsTmFtZShsb2dnaW5nLklORk8pLCAnSU5GTycpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTI3OTM1KHNlbGYpOgorICAgICAgICBmYXRhbCA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKCdGQVRBTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmF0YWwsIGxvZ2dpbmcuRkFUQUwpCisKIGNsYXNzIEJhc2ljRmlsdGVyVGVzdChCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0IHRoZSBidW5kbGVkIEZpbHRlciBjbGFzcy4iIiIKQEAgLTU3NSw2ICs1ODAsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoLnNob3VsZEZsdXNoKHIpKQogICAgICAgICBoLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3BhdGhfb2JqZWN0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBQYXRoIG9iamVjdHMgYXJlIGFjY2VwdGVkIGFzIGZpbGVuYW1lIGFyZ3VtZW50cyB0byBoYW5kbGVycy4KKworICAgICAgICBTZWUgSXNzdWUgIzI3NDkzLgorICAgICAgICAiIiIKKyAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgIHBmbiA9IHBhdGhsaWIuUGF0aChmbikKKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLkZpbGVIYW5kbGVyLCAocGZuLCAndycpKSwKKyAgICAgICAgICAgICAgICAgICAgKGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlciwgKHBmbiwgJ2EnKSksCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwgKHBmbiwgJ2gnKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdsaW51eCcsICdkYXJ3aW4nKToKKyAgICAgICAgICAgIGNhc2VzICs9ICgobG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIsIChwZm4sICd3JykpLCkKKyAgICAgICAgZm9yIGNscywgYXJncyBpbiBjYXNlczoKKyAgICAgICAgICAgIGggPSBjbHMoKmFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ1dhdGNoZWRGaWxlSGFuZGxlciBub3QgYXBwcm9wcmlhdGUgZm9yIFdpbmRvd3MuJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X3JhY2Uoc2VsZik6CkBAIC05NTgsNyArOTg2LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCiAgICAgICAgIHNlbGYubWVtX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLk1lbW9yeUhhbmRsZXIoMTAsIGxvZ2dpbmcuV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIpCiAgICAgICAgIHNlbGYubWVtX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdtZW0nKQogICAgICAgICBzZWxmLm1lbV9sb2dnZXIucHJvcGFnYXRlID0gMAogICAgICAgICBzZWxmLm1lbV9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLm1lbV9oZGxyKQpAQCAtOTk1LDYgKzEwMjMsMzYgQEAKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykKIAorICAgIGRlZiB0ZXN0X2ZsdXNoX29uX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBmbHVzaC1vbi1jbG9zZSBjb25maWd1cmF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmluZm8oc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICAjIERlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGZsdXNoIG9uIGNsb3NlLiBDaGVjayB0aGF0IGl0IGhhcHBlbnMuCisgICAgICAgIHNlbGYubWVtX2hkbHIuY2xvc2UoKQorICAgICAgICBsaW5lcyA9IFsKKyAgICAgICAgICAgICgnREVCVUcnLCAnMScpLAorICAgICAgICAgICAgKCdJTkZPJywgJzInKSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpCisgICAgICAgICMgTm93IGNvbmZpZ3VyZSBmb3IgZmx1c2hpbmcgbm90IHRvIGJlIGRvbmUgb24gY2xvc2UuCisgICAgICAgIHNlbGYubWVtX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLk1lbW9yeUhhbmRsZXIoMTAsIGxvZ2dpbmcuV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RfaGRsciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgIHNlbGYubWVtX2hkbHIuY2xvc2UoKQorICAgICAgICAjIGFzc2VydCB0aGF0IG5vIG5ldyBsaW5lcyBoYXZlIGJlZW4gYWRkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKSAgIyBubyBjaGFuZ2UKKwogCiBjbGFzcyBFeGNlcHRpb25Gb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIpOgogICAgICIiIkEgc3BlY2lhbCBleGNlcHRpb24gZm9ybWF0dGVyLiIiIgpAQCAtNDI0MSw2ICs0Mjk5LDE3IEBACiAgICAgICAgIG1zZyA9ICdSZWNvcmQgbm90IGZvdW5kIGluIGV2ZW50IGxvZywgd2VudCBiYWNrICVkIHJlY29yZHMnICUgR09fQkFDSwogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIG1zZz1tc2cpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbG9nVGhyZWFkcycsICdsb2dNdWx0aXByb2Nlc3NpbmcnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvZ1Byb2Nlc3NlcycsICdjdXJyZW50ZnJhbWUnLAorICAgICAgICAgICAgICAgICAgICAgJ1BlcmNlbnRTdHlsZScsICdTdHJGb3JtYXRTdHlsZScsICdTdHJpbmdUZW1wbGF0ZVN0eWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdGaWx0ZXJlcicsICdQbGFjZUhvbGRlcicsICdNYW5hZ2VyJywgJ1Jvb3RMb2dnZXInLAorICAgICAgICAgICAgICAgICAgICAgJ3Jvb3QnLCAndGhyZWFkaW5nJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgbG9nZ2luZywgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiAjIFNldCB0aGUgbG9jYWxlIHRvIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdC4gIEkgaGF2ZSBubyBpZGVhCiAjIHdoeSB0aGUgdGVzdCBkb2VzIHRoaXMsIGJ1dCBpbiBhbnkgY2FzZSB3ZSBzYXZlIHRoZSBjdXJyZW50IGxvY2FsZQogIyBmaXJzdCBhbmQgcmVzdG9yZSBpdCBhdCB0aGUgZW5kLgpAQCAtNDI1OCw2ICs0MzI3LDcgQEAKICAgICAgICAgRXhjZXB0aW9uVGVzdCwgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwKICAgICAgICAgTlRFdmVudExvZ0hhbmRsZXJUZXN0LCBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAogICAgICAgICBVbml4U29ja2V0SGFuZGxlclRlc3QsIFVuaXhEYXRhZ3JhbUhhbmRsZXJUZXN0LCBVbml4U3lzTG9nSGFuZGxlclRlc3QsCisgICAgICAgIE1pc2NUZXN0Q2FzZQogICAgIF0KICAgICBpZiBoYXNhdHRyKGxvZ2dpbmcuaGFuZGxlcnMsICdRdWV1ZUxpc3RlbmVyJyk6CiAgICAgICAgIHRlc3RzLmFwcGVuZChRdWV1ZUxpc3RlbmVyVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCA0YjJkODFjLi5mZDE1ZjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC02MjEsNiArNjIxLDggQEAKICAgICBkZWYgdGVzdF9fZm9ybWF0X18oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ2QnKSwgJzEyMzQ1Njc4OScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ2QnKSwgJzEyMzQ1Njc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJywnKSwgJzEyMyw0NTYsNzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnXycpLCAnMTIzXzQ1Nl83ODknKQogCiAgICAgICAgICMgc2lnbiBhbmQgYWxpZ25pbmcgYXJlIGludGVyZGVwZW5kZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEsICItIiksICcxJykKQEAgLTY0OSw4ICs2NTEsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoaW50KCdiZScsIDE2KSwgIlgiKSwgIkJFIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLWludCgnYmUnLCAxNiksICJ4IiksICItYmUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtaW50KCdiZScsIDE2KSwgIlgiKSwgIi1CRSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyx4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ194JyksICc0OTk2XzAyZDInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODkwLCAnX1gnKSwgJzQ5OTZfMDJEMicpCiAKICAgICAgICAgIyBvY3RhbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgzLCAibyIpLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0zLCAibyIpLCAiLTMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAibyIpLCAiMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAibyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiLW8iKSwgIjIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIi1vIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIgbyIpLCAiIDIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIiBvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIrbyIpLCAiKzIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIitvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ19vJyksICcxMTFfNDU0MF8xMzIyJykKKworICAgICAgICAjIGJpbmFyeQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgzLCAiYiIpLCAiMTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMywgImIiKSwgIi0xMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICJiIiksICIxMDAxMTAxMDAxMCIpCkBAIC02NjEsMTIgKzY4MCwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIiBiIiksICItMTAwMTEwMTAwMTAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiK2IiKSwgIisxMDAxMTAxMDAxMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiK2IiKSwgIi0xMDAxMTAxMDAxMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDUsICdfYicpLCAnMTFfMDAwMF8wMDExXzEwMDEnKQogCiAgICAgICAgICMgbWFrZSBzdXJlIHRoZXNlIGFyZSBlcnJvcnMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiMS4zIikgICMgcHJlY2lzaW9uIGRpc2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiX2MiKSAgICMgdW5kZXJzY29yZSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiLGMiKSAgICMgY29tbWEsIGFuZAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICIrYyIpICAgIyBzaWduIG5vdCBhbGxvd2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggJ2MnCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJ18sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJyxfJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJ18sZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICcsX2QnKQorCiAgICAgICAgICMgZW5zdXJlIHRoYXQgb25seSBpbnQgYW5kIGZsb2F0IHR5cGUgc3BlY2lmaWVycyB3b3JrCiAgICAgICAgIGZvciBmb3JtYXRfc3BlYyBpbiAoW2Nocih4KSBmb3IgeCBpbiByYW5nZShvcmQoJ2EnKSwgb3JkKCd6JykrMSldICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hyKHgpIGZvciB4IGluIHJhbmdlKG9yZCgnQScpLCBvcmQoJ1onKSsxKV0pOgpAQCAtNjg5LDYgKzcxNywyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIGZsb2F0KCctaW5mJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgZmxvYXQoJ25hbicpKQogCisgICAgZGVmIHRlc3RfbW9kX2RpdmlzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIF8gPSAxICUgMAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTMgJSAxMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTMgJSAxMCwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMyAlIC0xMCwgLTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEzICUgLTEwLCAtMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyICUgNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgJSA0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyICUgLTQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyICUgLTQsIDApCisKICAgICBkZWYgdGVzdF90cnVlX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICBodWdlID0gMSA8PCA0MDAwMAogICAgICAgICBtaHVnZSA9IC1odWdlCkBAIC03MjMsNiArNzY1LDI1IEBACiAgICAgICAgIGZvciB6ZXJvIGluIFsiaHVnZSAvIDAiLCAibWh1Z2UgLyAwIl06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgZXZhbCwgemVybywgbmFtZXNwYWNlKQogCisgICAgZGVmIHRlc3RfZmxvb3JkaXYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgXyA9IDEgLy8gMAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAvLyAzLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgLy8gLTMsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yIC8vIDMsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yIC8vIC0zLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTExIC8vIC0zLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMSAvLyAzLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMSAvLyAtMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEgLy8gMywgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAvLyAtMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgLy8gMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgLy8gLTMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyIC8vIDMsIDQpCisKICAgICBkZWYgY2hlY2tfdHJ1ZWRpdihzZWxmLCBhLCBiLCBza2lwX3NtYWxsPVRydWUpOgogICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgcmVzdWx0IG9mIGEvYiBpcyBjb3JyZWN0bHkgcm91bmRlZCwgYnkKICAgICAgICAgY29tcGFyaW5nIGl0IHdpdGggYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBjb3JyZWN0bHkKQEAgLTg0NSw2ICs5MDYsMjEgQEAKICAgICAgICAgICAgIHNlbGYuY2hlY2tfdHJ1ZWRpdigteCwgeSkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfdHJ1ZWRpdigteCwgLXkpCiAKKyAgICBkZWYgdGVzdF9sc2hpZnRfb2ZfemVybyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwIDw8IDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCAxMCwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIDAgPDwgLTEKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2h1Z2VfbHNoaWZ0X29mX3plcm8oc2VsZik6CisgICAgICAgICMgU2hvdWxkbid0IHRyeSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgaHVnZSBzaGlmdC4gU2VlIGlzc3VlICMyNzg3MC4KKyAgICAgICAgIyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IGhhdmUgYSBkaWZmZXJlbnQgYm91bmRhcnkgZm9yIG92ZXJmbG93LAorICAgICAgICAjIG9yIG5vdCByYWlzZSBhdCBhbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCBzeXMubWF4c2l6ZSwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIDAgPDwgKHN5cy5tYXhzaXplICsgMSkKKwogICAgIGRlZiB0ZXN0X3NtYWxsX2ludHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCAyNTcpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpLCBpICsgMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQppbmRleCBiNjlkYTA2Li5kN2E4NTc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IF9jb21wcmVzc2lvbgogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24sIERFRkFVTFRfQlVGRkVSX1NJWkUKIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdApAQCAtNTI2LDYgKzUyNywxNiBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgImEiKSBhcyBmOgogICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIHRlc3RfaW5pdF93aXRoX1BhdGhMaWtlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChURVNURk4pCisgICAgICAgIHdpdGggVGVtcEZpbGUoZmlsZW5hbWUsIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUsICJhIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCisKICAgICBkZWYgdGVzdF9pbml0X3dpdGhfZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOLCBDT01QUkVTU0VEX1haKToKICAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOKSBhcyBmOgpAQCAtOTczLDExICs5ODQsMTEgQEAKIAogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgcHJlc2V0PTYpCisgICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIHByZXNldD02KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCiAKICAgICAgICAgZGVjb21wID0gTFpNQUZpbGUoQnl0ZXNJTyhib21iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIERFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCkBAIC0xMjE4LDYgKzEyMjksMTcgQEAKICAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3BhdGhsaWtlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChURVNURk4pCisgICAgICAgIHdpdGggVGVtcEZpbGUoZmlsZW5hbWUpOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKICAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CmluZGV4IDgwYmVjN2EuLjA2OThmZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgbWFjcGF0aAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCitmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZ2VuZXJpY3BhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQppbmRleCAwOTkxZjc0Li5hZWFiZGJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CkBAIC03LDE3ICs3LDEyIEBACiBpbXBvcnQgZW1haWwubWVzc2FnZQogaW1wb3J0IHJlCiBpbXBvcnQgaW8KLWltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IG1haWxib3gKIGltcG9ydCBnbG9iCi10cnk6Ci0gICAgaW1wb3J0IGZjbnRsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwogCiAKIGNsYXNzIFRlc3RCYXNlOgpAQCAtMjI3MywxMiArMjI2OCwxOCBAQAogIiIiKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7ImxpbmVzZXAiLCAiZmNudGwifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtYWlsYm94LCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IChUZXN0TWFpbGJveFN1cGVyY2xhc3MsIFRlc3RNYWlsZGlyLCBUZXN0TWJveCwgVGVzdE1NREYsIFRlc3RNSCwKICAgICAgICAgICAgICBUZXN0QmFieWwsIFRlc3RNZXNzYWdlLCBUZXN0TWFpbGRpck1lc3NhZ2UsIFRlc3RNYm94TWVzc2FnZSwKICAgICAgICAgICAgICBUZXN0TUhNZXNzYWdlLCBUZXN0QmFieWxNZXNzYWdlLCBUZXN0TU1ERk1lc3NhZ2UsCiAgICAgICAgICAgICAgVGVzdE1lc3NhZ2VDb252ZXJzaW9uLCBUZXN0UHJveHlGaWxlLCBUZXN0UGFydGlhbEZpbGUsCi0gICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gpCisgICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gsIE1pc2NUZXN0Q2FzZSkKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CmluZGV4IGE4NWM2OTEuLmMwODQyM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgbWFpbGNhcAogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgY29weQogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMjMsNyArMTIyLDcgQEAKICAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXMiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvby50eHQiKSwKICAgICAgICAgICAgIChbImVjaG8gJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGF1ZGlvLyoiKSwKLSAgICAgICAgICAgIChbImVjaG8gXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAorICAgICAgICAgICAgKFsiZWNobyBcXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAogICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXt0b3RhbH0iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyAzIikKICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IGM3ZGVmOWEuLmIzNzhmZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTEzNSw2ICsxMzUsMTMgQEAKICAgICAgICAgZm9yIGNvbnN0cnVjdG9yIGluIChzZXQsIGZyb3plbnNldCk6CiAgICAgICAgICAgICBzZWxmLmhlbHBlcihjb25zdHJ1Y3RvcihzZWxmLmQua2V5cygpKSkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2VtcHR5X2Zyb3plbnNldF9zaW5nbGV0b24oc2VsZik6CisgICAgICAgICMgbWFyc2hhbC5sb2FkcygpIG11c3QgcmV1c2UgdGhlIGVtcHR5IGZyb3plbnNldCBzaW5nbGV0b24KKyAgICAgICAgb2JqID0gZnJvemVuc2V0KCkKKyAgICAgICAgb2JqMiA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhvYmopKQorICAgICAgICBzZWxmLmFzc2VydElzKG9iajIsIG9iaikKKwogCiBjbGFzcyBCdWZmZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgSGVscGVyTWl4aW4pOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKaW5kZXggYTM3OWE2YS4uZWFhNDFiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQpAQCAtNywxNCArNywxNSBAQAogaW1wb3J0IG1hdGgKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKIGVwcyA9IDFFLTA1CiBOQU4gPSBmbG9hdCgnbmFuJykKIElORiA9IGZsb2F0KCdpbmYnKQogTklORiA9IGZsb2F0KCctaW5mJykKK0ZMT0FUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heAogCiAjIGRldGVjdCBldmlkZW5jZSBvZiBkb3VibGUtcm91bmRpbmc6IGZzdW0gaXMgbm90IGFsd2F5cyBjb3JyZWN0bHkKICMgcm91bmRlZCBvbiBtYWNoaW5lcyB0aGF0IHN1ZmZlciBmcm9tIGRvdWJsZSByb3VuZGluZy4KQEAgLTMwLDYgKzMxLDcgQEAKIG1hdGhfdGVzdGNhc2VzID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnbWF0aF90ZXN0Y2FzZXMudHh0JykKIHRlc3RfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJ2NtYXRoX3Rlc3RjYXNlcy50eHQnKQogCisKIGRlZiB0b191bHBzKHgpOgogICAgICIiIkNvbnZlcnQgYSBub24tTmFOIGZsb2F0IHggdG8gYW4gaW50ZWdlciwgaW4gc3VjaCBhIHdheSB0aGF0CiAgICAgYWRqYWNlbnQgZmxvYXRzIGFyZSBjb252ZXJ0ZWQgdG8gYWRqYWNlbnQgaW50ZWdlcnMuICBUaGVuCkBAIC0zNywyNSArMzksMzkgQEAKICAgICBmbG9hdHMuCiAKICAgICBUaGUgcmVzdWx0cyBmcm9tIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zCi0gICAgd2hlcmUgQyBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgd2hlcmUgbmF0aXZlIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KIAorICAgIE5vdGU6IDAuMCBhbmQgLTAuMCBhcmUgY29udmVydGVkIHRvIDAgYW5kIC0xLCByZXNwZWN0aXZlbHkuCiAgICAgIiIiCiAgICAgbiA9IHN0cnVjdC51bnBhY2soJzxxJywgc3RydWN0LnBhY2soJzxkJywgeCkpWzBdCiAgICAgaWYgbiA8IDA6CiAgICAgICAgIG4gPSB+KG4rMioqNjMpCiAgICAgcmV0dXJuIG4KIAotZGVmIHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwcz0yMCk6Ci0gICAgIiIiR2l2ZW4gbm9uLU5hTiBmbG9hdHMgYGV4cGVjdGVkYCBhbmQgYGdvdGAsCi0gICAgY2hlY2sgdGhhdCB0aGV5J3JlIGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMuCiAKLSAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLiIiIgorZGVmIHVscCh4KToKKyAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgYQorICAgIGZsb2F0IHgsIHN1Y2ggdGhhdCB0aGUgZmlyc3QgZmxvYXQgYmlnZ2VyIHRoYW4geCBpcyB4K3VscCh4KS4KKyAgICBUaGVuLCBnaXZlbiBhbiBleHBlY3RlZCByZXN1bHQgeCBhbmQgYSB0b2xlcmFuY2Ugb2YgbiB1bHBzLAorICAgIHRoZSByZXN1bHQgeSBzaG91bGQgYmUgc3VjaCB0aGF0IGFicyh5LXgpIDw9IG4gKiB1bHAoeCkuCisgICAgVGhlIHJlc3VsdHMgZnJvbSB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcworICAgIHdoZXJlIG5hdGl2ZSBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgIiIiCisgICAgeCA9IGFicyhmbG9hdCh4KSkKKyAgICBpZiBtYXRoLmlzbmFuKHgpIG9yIG1hdGguaXNpbmYoeCk6CisgICAgICAgIHJldHVybiB4CiAKLSAgICB1bHBzX2Vycm9yID0gdG9fdWxwcyhnb3QpIC0gdG9fdWxwcyhleHBlY3RlZCkKLSAgICBpZiBhYnModWxwc19lcnJvcikgPD0gdWxwczoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gImVycm9yID0ge30gdWxwczsgcGVybWl0dGVkIGVycm9yID0ge30gdWxwcyIuZm9ybWF0KHVscHNfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bHBzKQorICAgICMgRmluZCBuZXh0IGZsb2F0IHVwIGZyb20geC4KKyAgICBuID0gc3RydWN0LnVucGFjaygnPHEnLCBzdHJ1Y3QucGFjaygnPGQnLCB4KSlbMF0KKyAgICB4X25leHQgPSBzdHJ1Y3QudW5wYWNrKCc8ZCcsIHN0cnVjdC5wYWNrKCc8cScsIG4gKyAxKSlbMF0KKyAgICBpZiBtYXRoLmlzaW5mKHhfbmV4dCk6CisgICAgICAgICMgQ29ybmVyIGNhc2U6IHggd2FzIHRoZSBsYXJnZXN0IGZpbml0ZSBmbG9hdC4gVGhlbiBpdCdzCisgICAgICAgICMgbm90IGFuIGV4YWN0IHBvd2VyIG9mIHR3bywgc28gd2UgY2FuIHRha2UgdGhlIGRpZmZlcmVuY2UKKyAgICAgICAgIyBiZXR3ZWVuIHggYW5kIHRoZSBwcmV2aW91cyBmbG9hdC4KKyAgICAgICAgeF9wcmV2ID0gc3RydWN0LnVucGFjaygnPGQnLCBzdHJ1Y3QucGFjaygnPHEnLCBuIC0gMSkpWzBdCisgICAgICAgIHJldHVybiB4IC0geF9wcmV2CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHhfbmV4dCAtIHgKIAogIyBIZXJlJ3MgYSBwdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIHRoZSBtYXRoLmZhY3RvcmlhbCBhbGdvcml0aG0sIGZvcgogIyBkb2N1bWVudGF0aW9uIGFuZCBjb21wYXJpc29uIHB1cnBvc2VzLgpAQCAtMTA3LDI0ICsxMjMsMjMgQEAKICAgICAgICAgb3V0ZXIgKj0gaW5uZXIKICAgICByZXR1cm4gb3V0ZXIgPDwgKG4gLSBjb3VudF9zZXRfYml0cyhuKSkKIAotZGVmIGFjY19jaGVjayhleHBlY3RlZCwgZ290LCByZWxfZXJyPTJlLTE1LCBhYnNfZXJyID0gNWUtMzIzKToKLSAgICAiIiJEZXRlcm1pbmUgd2hldGhlciBub24tTmFOIGZsb2F0cyBhIGFuZCBiIGFyZSBlcXVhbCB0byB3aXRoaW4gYQotICAgIChzbWFsbCkgcm91bmRpbmcgZXJyb3IuICBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlbF9lcnIgYW5kCi0gICAgYWJzX2VyciBhcmUgY2hvc2VuIHRvIGJlIHN1aXRhYmxlIGZvciBwbGF0Zm9ybXMgd2hlcmUgYSBmbG9hdCBpcwotICAgIHJlcHJlc2VudGVkIGJ5IGFuIElFRUUgNzU0IGRvdWJsZS4gIFRoZXkgYWxsb3cgYW4gZXJyb3Igb2YgYmV0d2VlbgotICAgIDkgYW5kIDE5IHVscHMuIiIiCitkZWYgdWxwX2Fic19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKToKKyAgICAiIiJHaXZlbiBmaW5pdGUgZmxvYXRzIGBleHBlY3RlZGAgYW5kIGBnb3RgLCBjaGVjayB0aGF0IHRoZXkncmUKKyAgICBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMgb3IgdGhlCisgICAgZ2l2ZW4gYWJzb2x1dGUgdG9sZXJhbmNlLCB3aGljaGV2ZXIgaXMgYmlnZ2VyLgogCi0gICAgIyBuZWVkIHRvIHNwZWNpYWwgY2FzZSBpbmZpbml0aWVzLCBzaW5jZSBpbmYgLSBpbmYgZ2l2ZXMgbmFuCi0gICAgaWYgbWF0aC5pc2luZihleHBlY3RlZCkgYW5kIGdvdCA9PSBleHBlY3RlZDoKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorICAgIHVscF9lcnJvciA9IGFicyh0b191bHBzKGV4cGVjdGVkKSAtIHRvX3VscHMoZ290KSkKKyAgICBhYnNfZXJyb3IgPSBhYnMoZXhwZWN0ZWQgLSBnb3QpCisKKyAgICAjIFN1Y2NlZWQgaWYgZWl0aGVyIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sLgorICAgIGlmIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sOgogICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZXJyb3IgPSBnb3QgLSBleHBlY3RlZAotCi0gICAgcGVybWl0dGVkX2Vycm9yID0gbWF4KGFic19lcnIsIHJlbF9lcnIgKiBhYnMoZXhwZWN0ZWQpKQotICAgIGlmIGFicyhlcnJvcikgPCBwZXJtaXR0ZWRfZXJyb3I6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuICJlcnJvciA9IHt9OyBwZXJtaXR0ZWQgZXJyb3IgPSB7fSIuZm9ybWF0KGVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXR0ZWRfZXJyb3IpCisgICAgZWxzZToKKyAgICAgICAgZm10ID0gKCJlcnJvciA9IHs6LjNnfSAoezpkfSB1bHBzKTsgIgorICAgICAgICAgICAgICAgInBlcm1pdHRlZCBlcnJvciA9IHs6LjNnfSBvciB7OmR9IHVscHMiKQorICAgICAgICByZXR1cm4gZm10LmZvcm1hdChhYnNfZXJyb3IsIHVscF9lcnJvciwgYWJzX3RvbCwgdWxwX3RvbCkKIAogZGVmIHBhcnNlX210ZXN0ZmlsZShmbmFtZSk6CiAgICAgIiIiUGFyc2UgYSBmaWxlIHdpdGggdGVzdCB2YWx1ZXMKQEAgLTE1MSw2ICsxNjYsNyBAQAogCiAgICAgICAgICAgICB5aWVsZCAoaWQsIGZuLCBmbG9hdChhcmcpLCBmbG9hdChleHApLCBmbGFncykKIAorCiBkZWYgcGFyc2VfdGVzdGZpbGUoZm5hbWUpOgogICAgICIiIlBhcnNlIGEgZmlsZSB3aXRoIHRlc3QgdmFsdWVzCiAKQEAgLTE3Miw4ICsxODgsNTMgQEAKICAgICAgICAgICAgIHlpZWxkIChpZCwgZm4sCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoYXJnX3JlYWwpLCBmbG9hdChhcmdfaW1hZyksCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoZXhwX3JlYWwpLCBmbG9hdChleHBfaW1hZyksCi0gICAgICAgICAgICAgICAgICAgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICBmbGFncykKKworCitkZWYgcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICMgQ29tbW9uIGxvZ2ljIG9mIE1hdGhUZXN0cy4oZnRlc3QsIHRlc3RfdGVzdGNhc2VzLCB0ZXN0X210ZXN0Y2FzZXMpCisgICAgIiIiQ29tcGFyZSBhcmd1bWVudHMgZXhwZWN0ZWQgYW5kIGdvdCwgYXMgZmxvYXRzLCBpZiBlaXRoZXIKKyAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgdWxwKGV4cGVjdGVkKSBvciBhYnNvbHV0ZWx5IChpZiBnaXZlbiBhbmQgZ3JlYXRlcikuCisKKyAgICBBcyBhIGNvbnZlbmllbmNlLCB3aGVuIG5laXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdCwgYW5kIGZvcgorICAgIG5vbi1maW5pdGUgZmxvYXRzLCBleGFjdCBlcXVhbGl0eSBpcyBkZW1hbmRlZC4gQWxzbywgbmFuPT1uYW4KKyAgICBhcyBmYXIgYXMgdGhpcyBmdW5jdGlvbiBpcyBjb25jZXJuZWQuCisKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorCisgICAgIyBDaGVjayBleGFjdGx5IGVxdWFsIChhcHBsaWVzIGFsc28gdG8gc3RyaW5ncyByZXByZXNlbnRpbmcgZXhjZXB0aW9ucykKKyAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmYWlsdXJlID0gIm5vdCBlcXVhbCIKKworICAgICMgVHVybiBtaXhlZCBmbG9hdCBhbmQgaW50IGNvbXBhcmlzb24gKGUuZy4gZmxvb3IoKSkgdG8gYWxsLWZsb2F0CisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGdvdCwgaW50KToKKyAgICAgICAgZ290ID0gZmxvYXQoZ290KQorICAgIGVsaWYgaXNpbnN0YW5jZShnb3QsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgaW50KToKKyAgICAgICAgZXhwZWN0ZWQgPSBmbG9hdChleHBlY3RlZCkKKworICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShnb3QsIGZsb2F0KToKKyAgICAgICAgaWYgbWF0aC5pc25hbihleHBlY3RlZCkgYW5kIG1hdGguaXNuYW4oZ290KToKKyAgICAgICAgICAgICMgUGFzcywgc2luY2UgYm90aCBuYW4KKyAgICAgICAgICAgIGZhaWx1cmUgPSBOb25lCisgICAgICAgIGVsaWYgbWF0aC5pc2luZihleHBlY3RlZCkgb3IgbWF0aC5pc2luZihnb3QpOgorICAgICAgICAgICAgIyBXZSBhbHJlYWR5IGtub3cgdGhleSdyZSBub3QgZXF1YWwsIGRyb3AgdGhyb3VnaCB0byBmYWlsdXJlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEJvdGggYXJlIGZpbml0ZSBmbG9hdHMgKG5vdykuIEFyZSB0aGV5IGNsb3NlIGVub3VnaD8KKyAgICAgICAgICAgIGZhaWx1cmUgPSB1bHBfYWJzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisKKyAgICAjIGFyZ3VtZW50cyBhcmUgbm90IGVxdWFsLCBhbmQgaWYgbnVtZXJpYywgYXJlIHRvbyBmYXIgYXBhcnQKKyAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICBmYWlsX2ZtdCA9ICJleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9tc2cgPSBmYWlsX2ZtdC5mb3JtYXQoZXhwZWN0ZWQsIGdvdCkKKyAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoZmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGZhaWxfbXNnCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4KIGNsYXNzIE15SW5kZXhhYmxlKG9iamVjdCk6CkBAIC0xODUsMTggKzI0NiwyNCBAQAogCiBjbGFzcyBNYXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIHZhbHVlLCBleHBlY3RlZCk6Ci0gICAgICAgIGlmIGFicyh2YWx1ZS1leHBlY3RlZCkgPiBlcHM6Ci0gICAgICAgICAgICAjIFVzZSAlciBpbnN0ZWFkIG9mICVmIHNvIHRoZSBlcnJvciBtZXNzYWdlCi0gICAgICAgICAgICAjIGRpc3BsYXlzIGZ1bGwgcHJlY2lzaW9uLiBPdGhlcndpc2UgZGlzY3JlcGFuY2llcwotICAgICAgICAgICAgIyBpbiB0aGUgbGFzdCBmZXcgYml0cyB3aWxsIGxlYWQgdG8gdmVyeSBjb25mdXNpbmcKLSAgICAgICAgICAgICMgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnJXMgcmV0dXJuZWQgJXIsIGV4cGVjdGVkICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlLCBleHBlY3RlZCkpCisgICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIGdvdCwgZXhwZWN0ZWQsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICAgICAiIiJDb21wYXJlIGFyZ3VtZW50cyBleHBlY3RlZCBhbmQgZ290LCBhcyBmbG9hdHMsIGlmIGVpdGhlcgorICAgICAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgICAgIHVscChleHBlY3RlZCkgb3IgYWJzb2x1dGVseSwgd2hpY2hldmVyIGlzIGdyZWF0ZXIuCisKKyAgICAgICAgQXMgYSBjb252ZW5pZW5jZSwgd2hlbiBuZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXQsIGFuZCBmb3IKKyAgICAgICAgbm9uLWZpbml0ZSBmbG9hdHMsIGV4YWN0IGVxdWFsaXR5IGlzIGRlbWFuZGVkLiBBbHNvLCBuYW49PW5hbgorICAgICAgICBpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgZmFpbHVyZSA9IHJlc3VsdF9jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKQorICAgICAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fToge30iLmZvcm1hdChuYW1lLCBmYWlsdXJlKSkKIAogICAgIGRlZiB0ZXN0Q29uc3RhbnRzKHNlbGYpOgotICAgICAgICBzZWxmLmZ0ZXN0KCdwaScsIG1hdGgucGksIDMuMTQxNTkyNikKLSAgICAgICAgc2VsZi5mdGVzdCgnZScsIG1hdGguZSwgMi43MTgyODE4KQorICAgICAgICAjIFJlZjogQWJyYW1vd2l0eiAmIFN0ZWd1biAoRG92ZXIsIDE5NjUpCisgICAgICAgIHNlbGYuZnRlc3QoJ3BpJywgbWF0aC5waSwgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMpCisgICAgICAgIHNlbGYuZnRlc3QoJ2UnLCBtYXRoLmUsIDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgudGF1LCAyKm1hdGgucGkpCiAKICAgICBkZWYgdGVzdEFjb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5hY29zKQpAQCAtMjA1LDYgKzI3Miw4IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2Fjb3MoMSknLCBtYXRoLmFjb3MoMSksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hY29zKE5BTikpKQogCiAgICAgZGVmIHRlc3RBY29zaChzZWxmKToKQEAgLTIyNCw2ICsyOTMsOCBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdhc2luKDEpJywgbWF0aC5hc2luKDEpLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hc2luKE5BTikpKQogCiAgICAgZGVmIHRlc3RBc2luaChzZWxmKToKQEAgLTM3OCw5ICs0NDksOSBAQAogCiAgICAgZGVmIHRlc3RDb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5jb3MpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcygtcGkvMiknLCBtYXRoLmNvcygtbWF0aC5waS8yKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnY29zKC1waS8yKScsIG1hdGguY29zKC1tYXRoLnBpLzIpLCAwLCBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgnY29zKDApJywgbWF0aC5jb3MoMCksIDEpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDAsIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MocGkpJywgbWF0aC5jb3MobWF0aC5waSksIC0xKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmNvcyhJTkYpKSkKQEAgLTQwMyw2ICs0NzQsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKHBpKScsIG1hdGguZGVncmVlcyhtYXRoLnBpKSwgMTgwLjApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMocGkvMiknLCBtYXRoLmRlZ3JlZXMobWF0aC5waS8yKSwgOTAuMCkKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcygtcGkvNCknLCBtYXRoLmRlZ3JlZXMoLW1hdGgucGkvNCksIC00NS4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKDApJywgbWF0aC5kZWdyZWVzKDApLCAwKQogCiAgICAgZGVmIHRlc3RFeHAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5leHApCkBAIC00MTIsNiArNDg0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmV4cChJTkYpLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5leHAoTklORiksIDAuKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmV4cChOQU4pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5leHAsIDEwMDAwMDApCiAKICAgICBkZWYgdGVzdEZhYnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5mYWJzKQpAQCAtNjU0LDYgKzcyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5oeXBvdChJTkYsIE5BTiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5BTiwgTklORiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5JTkYsIE5BTiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5oeXBvdCwgRkxPQVRfTUFYLCBGTE9BVF9NQVgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguaHlwb3QoMS4wLCBOQU4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5oeXBvdChOQU4sIC0yLjApKSkKIApAQCAtNzA3LDggKzc4MSwxMCBAQAogCiAgICAgZGVmIHRlc3RMb2cxcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzFwKQotICAgICAgICBuPSAyKio5MAotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBmb3IgbiBpbiBbMiwgMioqOTAsIDIqKjMwMF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzFwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzFwKElORiksIElORikKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0TG9nMihzZWxmKToKQEAgLTkyMiw2ICs5OTgsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDE4MCknLCBtYXRoLnJhZGlhbnMoMTgwKSwgbWF0aC5waSkKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucyg5MCknLCBtYXRoLnJhZGlhbnMoOTApLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoLTQ1KScsIG1hdGgucmFkaWFucygtNDUpLCAtbWF0aC5waS80KQorICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDApJywgbWF0aC5yYWRpYW5zKDApLCAwKQogCiAgICAgZGVmIHRlc3RTaW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5zaW4pCkBAIC05NTEsNiArMTAyOCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoMSknLCBtYXRoLnNxcnQoMSksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoNCknLCBtYXRoLnNxcnQoNCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5zcXJ0KElORiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCBOSU5GKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnNxcnQoTkFOKSkpCiAKQEAgLTk3MCw3ICsxMDQ4LDggQEAKICAgICBkZWYgdGVzdFRhbmgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC50YW5oKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDApJywgbWF0aC50YW5oKDApLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDEpK3RhbmgoLTEpJywgbWF0aC50YW5oKDEpK21hdGgudGFuaCgtMSksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMSkrdGFuaCgtMSknLCBtYXRoLnRhbmgoMSkrbWF0aC50YW5oKC0xKSwgMCwKKyAgICAgICAgICAgICAgICAgICBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaChpbmYpJywgbWF0aC50YW5oKElORiksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoLWluZiknLCBtYXRoLnRhbmgoTklORiksIC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnRhbmgoTkFOKSkpCkBAIC0xMDIwLDcgKzEwOTksOCBAQAogCiAgICAgZGVmIHRlc3RJc25hbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoIm5hbiIpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoImluZiIpKiAwLikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCItbmFuIikpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiaW5mIikgKiAwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbihmbG9hdCgiaW5mIikpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMC4pKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMS4pKQpAQCAtMTA4NCwzMCArMTE2NCw2NCBAQAogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfdGVzdGZpbGUoc2VsZik6CisgICAgICAgICMgU29tZSB0ZXN0cyBuZWVkIHRvIGJlIHNraXBwZWQgb24gYW5jaWVudCBPUyBYIHZlcnNpb25zLgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjc5NTMuCisgICAgICAgIFNLSVBfT05fVElHRVIgPSB7J3RhbjAwNjQnfQorCisgICAgICAgIG9zeF92ZXJzaW9uID0gTm9uZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKKworICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyLCBhaSwgZXIsIGVpLCBmbGFncyBpbiBwYXJzZV90ZXN0ZmlsZSh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgIyBTa2lwIGlmIGVpdGhlciB0aGUgaW5wdXQgb3IgcmVzdWx0IGlzIGNvbXBsZXgsIG9yIGlmCi0gICAgICAgICAgICAjIGZsYWdzIGlzIG5vbmVtcHR5Ci0gICAgICAgICAgICBpZiBhaSAhPSAwLiBvciBlaSAhPSAwLiBvciBmbGFnczoKKyAgICAgICAgICAgICMgU2tpcCBpZiBlaXRoZXIgdGhlIGlucHV0IG9yIHJlc3VsdCBpcyBjb21wbGV4CisgICAgICAgICAgICBpZiBhaSAhPSAwLjAgb3IgZWkgIT0gMC4wOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBmbiBpbiBbJ3JlY3QnLCAncG9sYXInXToKICAgICAgICAgICAgICAgICAjIG5vIHJlYWwgdmVyc2lvbnMgb2YgcmVjdCwgcG9sYXIKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBTa2lwIGNlcnRhaW4gdGVzdHMgb24gT1MgWCAxMC40LgorICAgICAgICAgICAgaWYgb3N4X3ZlcnNpb24gaXMgbm90IE5vbmUgYW5kIG9zeF92ZXJzaW9uIDwgKDEwLCA1KToKKyAgICAgICAgICAgICAgICBpZiBpZCBpbiBTS0lQX09OX1RJR0VSOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihtYXRoLCBmbikKKworICAgICAgICAgICAgaWYgJ2ludmFsaWQnIGluIGZsYWdzIG9yICdkaXZpZGUtYnktemVybycgaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgZXIgPSAnVmFsdWVFcnJvcicKKyAgICAgICAgICAgIGVsaWYgJ292ZXJmbG93JyBpbiBmbGFnczoKKyAgICAgICAgICAgICAgICBlciA9ICdPdmVyZmxvd0Vycm9yJworCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuYyhhcikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCgiVW5leHBlY3RlZCBWYWx1ZUVycm9yOiAlc1xuICAgICAgICAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0ZXN0ICVzOiVzKCVyKVxuIikgJSAoZXhjLmFyZ3NbMF0sIGlkLCBmbiwgYXIpKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbChtZXNzYWdlKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1ZhbHVlRXJyb3InCiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJVbmV4cGVjdGVkIE92ZXJmbG93RXJyb3IgaW4gIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCAlczolcyglcilcbiIgJSAoaWQsIGZuLCBhcikpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1lc3NhZ2UpCi0gICAgICAgICAgICBzZWxmLmZ0ZXN0KCIlczolcyglcikiICUgKGlkLCBmbiwgYXIpLCByZXN1bHQsIGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9ICdPdmVyZmxvd0Vycm9yJworCisgICAgICAgICAgICAjIERlZmF1bHQgdG9sZXJhbmNlcworICAgICAgICAgICAgdWxwX3RvbCwgYWJzX3RvbCA9IDUsIDAuMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGVyLCByZXN1bHQsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXIsIGZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQobXNnKQorCisgICAgICAgIGlmIGZhaWx1cmVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdGYWlsdXJlcyBpbiB0ZXN0X3Rlc3RmaWxlOlxuICAnICsKKyAgICAgICAgICAgICAgICAgICAgICAnXG4gICcuam9pbihmYWlsdXJlcykpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9tdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIGZhaWxfZm10ID0gInt9Ont9KHshcn0pOiBleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKIAogICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGZsYWdzIGluIHBhcnNlX210ZXN0ZmlsZShtYXRoX3Rlc3RjYXNlcyk6CkBAIC0xMTI1LDQxICsxMjM5LDQ4IEBACiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKICAgICAgICAgICAgICAgICBnb3QgPSAnT3ZlcmZsb3dFcnJvcicKIAotICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ290LCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KToKLSAgICAgICAgICAgICAgICBpZiBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbWF0aC5pc25hbihnb3QpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbm90IG1hdGguaXNuYW4oZ290KToKLSAgICAgICAgICAgICAgICAgICAgaWYgZm4gPT0gJ2xnYW1tYSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHdlIHVzZSBhIHdlYWtlciBhY2N1cmFjeSB0ZXN0IGZvciBsZ2FtbWE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgZmV3IG11bHRpcGxlcyBvZiB0aGUgbWFjaGluZSBhY2N1cmFjeSwgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgZ2VuZXJhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSBhY2NfY2hlY2soZXhwZWN0ZWQsIGdvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsX2VyciA9IDVlLTE1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfZXJyID0gNWUtMTUpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBlcmZjIGhhcyBsZXNzLXRoYW4taWRlYWwgYWNjdXJhY3kgZm9yIGxhcmdlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cyAoeCB+IDI1IG9yIHNvKSwgbWFpbmx5IGR1ZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYIFdvdWxkIGJlIGJldHRlciB0byB3ZWFrZW4gdGhpcyB0ZXN0IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhcmdlIHgsIGluc3RlYWQgb2YgZm9yIGFsbCB4LgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgMjAwMCkKKyAgICAgICAgICAgICMgRGVmYXVsdCB0b2xlcmFuY2VzCisgICAgICAgICAgICB1bHBfdG9sLCBhYnNfdG9sID0gNSwgMC4wCiAKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSB1bHBzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIDIwKQotICAgICAgICAgICAgICAgICAgICBpZiBhY2N1cmFjeV9mYWlsdXJlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBFeGNlcHRpb25zIHRvIHRoZSBkZWZhdWx0cworICAgICAgICAgICAgaWYgZm4gPT0gJ2dhbW1hJzoKKyAgICAgICAgICAgICAgICAjIEV4cGVyaW1lbnRhbCByZXN1bHRzIG9uIG9uZSBwbGF0Zm9ybSBnYXZlCisgICAgICAgICAgICAgICAgIyBhbiBhY2N1cmFjeSBvZiA8PSAxMCB1bHBzIGFjcm9zcyB0aGUgZW50aXJlIGZsb2F0CisgICAgICAgICAgICAgICAgIyBkb21haW4uIFdlIHdlYWtlbiB0aGF0IHRvIHJlcXVpcmUgMjAgdWxwIGFjY3VyYWN5LgorICAgICAgICAgICAgICAgIHVscF90b2wgPSAyMAogCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGdvdCwgc3RyKSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgc3RyKToKLSAgICAgICAgICAgICAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGZuID09ICdsZ2FtbWEnOgorICAgICAgICAgICAgICAgICMgd2UgdXNlIGEgd2Vha2VyIGFjY3VyYWN5IHRlc3QgZm9yIGxnYW1tYTsKKyAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCisgICAgICAgICAgICAgICAgIyBhIGZldyBtdWx0aXBsZXMgb2YgdGhlIG1hY2hpbmUgYWNjdXJhY3ksIGluCisgICAgICAgICAgICAgICAgIyBnZW5lcmFsLgorICAgICAgICAgICAgICAgIGFic190b2wgPSAxZS0xNQogCi0gICAgICAgICAgICBmYWlsX21zZyA9IGZhaWxfZm10LmZvcm1hdChpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGdvdCkKLSAgICAgICAgICAgIGlmIGFjY3VyYWN5X2ZhaWx1cmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoYWNjdXJhY3lfZmFpbHVyZSkKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChmYWlsX21zZykKKyAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnIGFuZCBhcmcgPj0gMC4wOgorICAgICAgICAgICAgICAgICMgZXJmYyBoYXMgbGVzcy10aGFuLWlkZWFsIGFjY3VyYWN5IGZvciBsYXJnZQorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzICh4IH4gMjUgb3Igc28pLCBtYWlubHkgZHVlIHRvIHRoZQorICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBPYnNlcnZlZCBiZXR3ZWVuIENQeXRob24gYW5kIG1wbWF0aCBhdCAyNSBkcDoKKyAgICAgICAgICAgICAgICAjICAgICAgIHggPCAgMCA6IGVyciA8PSAyIHVscAorICAgICAgICAgICAgICAgICMgIDAgPD0geCA8ICAxIDogZXJyIDw9IDEwIHVscAorICAgICAgICAgICAgICAgICMgIDEgPD0geCA8IDEwIDogZXJyIDw9IDEwMCB1bHAKKyAgICAgICAgICAgICAgICAjIDEwIDw9IHggPCAyMCA6IGVyciA8PSAzMDAgdWxwCisgICAgICAgICAgICAgICAgIyAyMCA8PSB4ICAgICAgOiA8IDYwMCB1bHAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgaWYgYXJnIDwgMS4wOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAKKyAgICAgICAgICAgICAgICBlbGlmIGFyZyA8IDEwLjA6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAwMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXJnLCBmYWlsdXJlKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKG1zZykKIAogICAgICAgICBpZiBmYWlsdXJlczoKICAgICAgICAgICAgIHNlbGYuZmFpbCgnRmFpbHVyZXMgaW4gdGVzdF9tdGVzdGZpbGU6XG4gICcgKwpAQCAtMTI3Miw3ICsxMzkzLDggQEAKIAogICAgICAgICBkZWNpbWFsX2V4YW1wbGVzID0gWyhEZWNpbWFsKCcxLjAwMDAwMDAxJyksIERlY2ltYWwoJzEuMCcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMjAnKSwgRGVjaW1hbCgnMS4wZS0yMCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMTAwJyksIERlY2ltYWwoJzEuMGUtMTAwJykpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlMjAnKSwgRGVjaW1hbCgnMS4wZTIwJykpXQogICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShkZWNpbWFsX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCiAKQEAgLTEyODAsOCArMTQwMiwxMCBAQAogICAgICAgICAjIHRlc3Qgd2l0aCBGcmFjdGlvbiB2YWx1ZXMKICAgICAgICAgZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiAKLSAgICAgICAgIyBjb3VsZCB1c2Ugc29tZSBtb3JlIGV4YW1wbGVzIGhlcmUhCi0gICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWyhGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpXQorICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsKKyAgICAgICAgICAgIChGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwMDAwMDAwMSksIEZyYWN0aW9uKDEwMDAwMDAwMCkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwKio4ICsgMSwgMTAqKjI4KSwgRnJhY3Rpb24oMSwgMTAqKjIwKSldCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZnJhY3Rpb25fZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS05KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CmluZGV4IDY4NTY1OTMuLjRlMmM5MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CkBAIC0xMDEsNSArMTAxLDExIEBACiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UuanBnIiksICgiaW1hZ2UvanBlZyIsIE5vbmUpKQogICAgICAgICBlcShzZWxmLmRiLmd1ZXNzX3R5cGUoImltYWdlLnBuZyIpLCAoImltYWdlL3BuZyIsIE5vbmUpKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtaW1ldHlwZXMpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weSBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQppbmRleCBmM2Y3MGNjLi41NmQ4NWU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21tYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CkBAIC03MTMsNiArNzEzLDEzIEBACiAgICAgICAgIGdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9yZXR1cm5pbmdfdGhlX251bWJlcl9vZl9ieXRlc193cml0dGVuKHNlbGYpOgorICAgICAgICBtbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiIiKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiIngiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiInl6IiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiJweXRob24iKSwgNikKKwogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnY2Fubm90IHJlc2l6ZSBhbm9ueW1vdXMgbW1hcHMgb24gV2luZG93cycpCiAgICAgZGVmIHRlc3RfcmVzaXplX3Bhc3RfcG9zKHNlbGYpOgogICAgICAgICBtID0gbW1hcC5tbWFwKC0xLCA4MTkyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQppbmRleCA4ZWYzMzRmLi5mNjU2ZjcyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQpAQCAtMSw2ICsxLDUgQEAKICIiIiBUZXN0IHN1aXRlIGZvciB0aGUgY29kZSBpbiBtc2lsaWIgIiIiCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKIG1zaWxpYiA9IGltcG9ydF9tb2R1bGUoJ21zaWxpYicpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CmluZGV4IDhkN2EyMTMuLjAxYTFjZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQpAQCAtNSw3ICs1LDcgQEAKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCi1pbXBvcnQgdW5pdHRlc3QsIGlvLCBjb2RlY3MsIHN5cywgb3MKK2ltcG9ydCB1bml0dGVzdCwgaW8sIGNvZGVjcywgc3lzCiBpbXBvcnQgX211bHRpYnl0ZWNvZGVjCiAKIEFMTF9DSktFTkNPRElOR1MgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQppbmRleCAyYmY0ZTc1Li45ZjIyNTAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKQEAgLTEsNiArMSwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnZm9yaycpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQppbmRleCAxOTNhMDRhLi40MDdiYjNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKQEAgLTEsNiArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ2ZvcmtzZXJ2ZXInKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKaW5kZXggNTIyNzNlYS4uMzI1OTNkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CkBAIC02LDcgKzYsNiBAQAogCiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQotaW1wb3J0IHppcGltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKQEAgLTE1LDcgKzE0LDEwIEBACiAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKKyAgICBhc3NlcnRfcHl0aG9uX29rKQorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKIAogIyBMb29rIHVwIHdoaWNoIHN0YXJ0IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSB0byB0ZXN0CiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3bi5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CmluZGV4IDMzNGFlOWUuLjY1NTg5NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CkBAIC0xLDYgKzEsMTEgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nCiAKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdzcGF3bicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25pcy5weSBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CmluZGV4IDM4N2E0ZTcuLjIxMDc0YzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CkBAIC0xLDYgKzEsNSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIAogIyBTa2lwIHRlc3QgaWYgbmlzIG1vZHVsZSBkb2VzIG5vdCBleGlzdC4KIG5pcyA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnbmlzJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQppbmRleCAyZWY2ZDAyLi5mZWFiYTNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CkBAIC0xNTQyLDggKzE1NDIsMTAgQEAKICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSBiJ1NUQVJUVExTXHJcbic6CiAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5zZW5kYWxsKGInMzgyIEJlZ2luIFRMUyBuZWdvdGlhdGlvbiBub3dcclxuJykKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50ID0gc3NsLndyYXBfc29ja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1jZXJ0ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNsaWVudCA9IGNvbnRleHQud3JhcF9zb2NrZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgICAgICAgICAgICAgIGNsZWFudXAuZW50ZXJfY29udGV4dChjbGllbnQpCiAgICAgICAgICAgICAgICAgICAgIHJlYWRlciA9IGNsZWFudXAuZW50ZXJfY29udGV4dChjbGllbnQubWFrZWZpbGUoJ3JiJykpCiAgICAgICAgICAgICAgICAgZWxpZiBjbWQgPT0gYidRVUlUXHJcbic6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKaW5kZXggMzBmYTYxMi4uNWI1OTBlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQpAQCAtMyw3ICszLDYgQEAKIAogZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogaW1wb3J0IHN5cwotaW1wb3J0IG9zCiBmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCBub3JtYWxpemUsIHVuaWRhdGFfdmVyc2lvbgogCiBURVNUREFUQUZJTEUgPSAiTm9ybWFsaXphdGlvblRlc3QudHh0IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQppbmRleCA1ODBmMjAzLi45MGVkYjZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQpAQCAtNDUyLDUgKzQ1Miw4OCBAQAogICAgIGF0dHJpYnV0ZXMgPSBbJ3JlbHBhdGgnLCAnc3BsaXR1bmMnXQogCiAKK2NsYXNzIFBhdGhMaWtlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcGF0aCA9IG50cGF0aAorCisgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScnKToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX25hbWUgPSBzdXBwb3J0LlRFU1RGTi5sb3dlcigpCisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gc2VsZi5QYXRoTGlrZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAneGInLCAwKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShiInRlc3RfbnRwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1jYXNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybWNhc2UpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzYWJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNhYnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2pvaW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRoLmpvaW4oJ2EnLCBzZWxmLlBhdGhMaWtlKCdiJyksICdjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmpvaW4oJ2EnLCAnYicsICdjJykpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRleHQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZHJpdmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGRyaXZlKQorCisgICAgZGVmIHRlc3RfcGF0aF9iYXNlbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmJhc2VuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9kaXJuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZGlybmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNsaW5rKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNsaW5rKQorCisgICAgZGVmIHRlc3RfcGF0aF9sZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubGV4aXN0cykKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNtb3VudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbW91bnQpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR1c2VyKQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR2YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdmFycykKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybXBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfYWJzcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmFic3BhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlYWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVhbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBjb21tb25fcGF0aCA9IHNlbGYucGF0aC5jb21tb25wYXRoKFtzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbl9wYXRoLCBzZWxmLmZpbGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2RpcikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CmluZGV4IDZlZjkzZDkuLjY4MDZjNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKQEAgLTEsNiArMSw3IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDIsIG9wY29kZXMKIAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IGFubl9tb2R1bGUKIAogY2xhc3MgT3Bjb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwLDYgKzIxLDMyIEBACiAgICAgICAgIGlmIG4gIT0gOTA6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ3RyeSBpbnNpZGUgZm9yJykKIAorICAgIGRlZiB0ZXN0X3NldHVwX2Fubm90YXRpb25zX2xpbmUoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBTRVRVUF9BTk5PVEFUSU9OUyBkb2VzIG5vdCBjcmVhdGUgc3B1cmlvdXMgbGluZSBudW1iZXJzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3Blbihhbm5fbW9kdWxlLl9fZmlsZV9fKSBhcyBmOgorICAgICAgICAgICAgICAgIHR4dCA9IGYucmVhZCgpCisgICAgICAgICAgICBjbyA9IGNvbXBpbGUodHh0LCBhbm5fbW9kdWxlLl9fZmlsZV9fLCAnZXhlYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvLmNvX2ZpcnN0bGluZW5vLCA2KQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X25vX2Fubm90YXRpb25zX2lmX25vdF9uZWVkZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEM6IHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBDLl9fYW5ub3RhdGlvbnNfXworCisgICAgZGVmIHRlc3RfdXNlX2V4aXN0aW5nX2Fubm90YXRpb25zKHNlbGYpOgorICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogezE6IDJ9fQorICAgICAgICBleGVjKCd4OiBpbnQnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc1snX19hbm5vdGF0aW9uc19fJ10sIHsneCc6IGludCwgMTogMn0pCisKKyAgICBkZWYgdGVzdF9kb19ub3RfcmVjcmVhdGVfYW5ub3RhdGlvbnMoc2VsZik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBkZWwgX19hbm5vdGF0aW9uc19fCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICAgICAgeDogaW50CisKICAgICBkZWYgdGVzdF9yYWlzZV9jbGFzc19leGNlcHRpb25zKHNlbGYpOgogCiAgICAgICAgIGNsYXNzIEFDbGFzcyhFeGNlcHRpb24pOiBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQppbmRleCBiNWJhOTc2Li42MjU0MDkxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKQEAgLTEyMCw2MyArMTIwLDYzIEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYWRkLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuYWRkKDMsIDQpID09IDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuYWRkKDMsIDQpLCA3KQogCiAgICAgZGVmIHRlc3RfYml0d2lzZV9hbmQoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hbmRfKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFuZF8sIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hbmRfKDB4ZiwgMHhhKSA9PSAweGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuYW5kXygweGYsIDB4YSksIDB4YSkKIAogICAgIGRlZiB0ZXN0X2NvbmNhdChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoJ3B5JywgJ3Rob24nKSA9PSAncHl0aG9uJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChbMSwgMl0sIFszLCA0XSkgPT0gWzEsIDIsIDMsIDRdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFNlcTEoWzUsIDZdKSwgU2VxMShbN10pKSA9PSBbNSwgNiwgN10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoU2VxMihbNSwgNl0pLCBTZXEyKFs3XSkpID09IFs1LCA2LCA3XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoJ3B5JywgJ3Rob24nKSwgJ3B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFsxLCAyXSwgWzMsIDRdKSwgWzEsIDIsIDMsIDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChTZXExKFs1LCA2XSksIFNlcTEoWzddKSksIFs1LCA2LCA3XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoU2VxMihbNSwgNl0pLCBTZXEyKFs3XSkpLCBbNSwgNiwgN10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0LCAxMywgMjkpCiAKICAgICBkZWYgdGVzdF9jb3VudE9mKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY291bnRPZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDMpID09IDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgNSkgPT0gMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDUpLCAwKQogCiAgICAgZGVmIHRlc3RfZGVsaXRlbShzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gWzQsIDMsIDIsIDFdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZGVsaXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZGVsaXRlbShhLCAxKSBpcyBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA9PSBbNCwgMiwgMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9wZXJhdG9yLmRlbGl0ZW0oYSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzQsIDIsIDFdKQogCiAgICAgZGVmIHRlc3RfZmxvb3JkaXYoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmZsb29yZGl2KDUsIDIpID09IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuZmxvb3JkaXYoNSwgMiksIDIpCiAKICAgICBkZWYgdGVzdF90cnVlZGl2KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IudHJ1ZWRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IudHJ1ZWRpdig1LCAyKSA9PSAyLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IudHJ1ZWRpdig1LCAyKSwgMi41KQogCiAgICAgZGVmIHRlc3RfZ2V0aXRlbShzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gcmFuZ2UoMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZ2V0aXRlbSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtLCBhLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZ2V0aXRlbShhLCAyKSA9PSAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmdldGl0ZW0oYSwgMiksIDIpCiAKICAgICBkZWYgdGVzdF9pbmRleE9mKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXhPZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuaW5kZXhPZihbNCwgMywgMiwgMV0sIDMpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW5kZXhPZihbNCwgMywgMiwgMV0sIDMpLCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5pbmRleE9mLCBbNCwgMywgMiwgMV0sIDApCiAKICAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CkBAIC0xODksMjEgKzE4OSwyMSBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubHNoaWZ0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmxzaGlmdCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5sc2hpZnQoNSwgMSkgPT0gMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5sc2hpZnQoNSwgMCkgPT0gNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5sc2hpZnQoNSwgMSksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxzaGlmdCg1LCAwKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X21vZChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tb2QsIE5vbmUsIDQyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubW9kKDUsIDIpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubW9kKDUsIDIpLCAxKQogCiAgICAgZGVmIHRlc3RfbXVsKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm11bCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm11bCg1LCAyKSA9PSAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5tdWwoNSwgMiksIDEwKQogCiAgICAgZGVmIHRlc3RfbWF0bXVsKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5vcl8sIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5vcl8oMHhhLCAweDUpID09IDB4ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5vcl8oMHhhLCAweDUpLCAweGYpCiAKICAgICBkZWYgdGVzdF9wb3Moc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTI1MCw4ICsyNTAsOCBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucnNoaWZ0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5yc2hpZnQoNSwgMSkgPT0gMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnJzaGlmdCg1LCAwKSA9PSA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnJzaGlmdCg1LCAxKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5yc2hpZnQoNSwgMCksIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCwgMiwgLTEpCiAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKQEAgLTI2NiwxNSArMjY2LDE1IEBACiAgICAgICAgIGEgPSBsaXN0KHJhbmdlKDMpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnNldGl0ZW0sIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnNldGl0ZW0oYSwgMCwgMikgaXMgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPT0gWzIsIDEsIDJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcGVyYXRvci5zZXRpdGVtKGEsIDAsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIFsyLCAxLCAyXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSwgNCwgMikKIAogICAgIGRlZiB0ZXN0X3N1YihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnN1YikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zdWIsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5zdWIoNSwgMikgPT0gMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5zdWIoNSwgMiksIDMpCiAKICAgICBkZWYgdGVzdF90cnV0aChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IueG9yLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IueG9yKDB4YiwgMHhjKSA9PSAweDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IueG9yKDB4YiwgMHhjKSwgMHg3KQogCiAgICAgZGVmIHRlc3RfaXMoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CmluZGV4IDc2MjFjMjQuLjkxYTAzMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQpAQCAtMTYsNiArMTYsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAoraW1wb3J0IG9wdHBhcnNlCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbiwgT3B0aW9uLCBcCiAgICAgIFRpdGxlZEhlbHBGb3JtYXR0ZXIsIE9wdGlvblBhcnNlciwgT3B0aW9uR3JvdXAsIFwKICAgICAgU1VQUFJFU1NfVVNBR0UsIE9wdGlvbkVycm9yLCBPcHRpb25Db25mbGljdEVycm9yLCBcCkBAIC0xNjUwLDYgKzE2NTEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbiAtbDogaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiAnMHgxMngnIikKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydjaGVja19idWlsdGluJywgJ0FtYmlndW91c09wdGlvbkVycm9yJywgJ05PX0RFRkFVTFQnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBvcHRwYXJzZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKaW5kZXggOTAxZDRiMi4uYTM1ZWQxMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgY29weQogaW1wb3J0IGdjCkBAIC05Nyw2ICs5OCwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQogCisgICAgZGVmIHRlc3RfaW5pdF9jYWxscyhzZWxmKToKKyAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgICAgICAgICAgY2FsbHMuYXBwZW5kKCdrZXlzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKyAgICAgICAgICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoJ2l0ZW1zJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKworICAgICAgICBzZWxmLk9yZGVyZWREaWN0KFNwYW0oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxscywgWydrZXlzJ10pCisKICAgICBkZWYgdGVzdF9mcm9ta2V5cyhzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCkBAIC0yOTgsOSArMzEyLDExIEBACiAgICAgICAgICMgZG8gbm90IHNhdmUgaW5zdGFuY2UgZGljdGlvbmFyeSBpZiBub3QgbmVlZGVkCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvZC5fX2RpY3RfXywgZGljdCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2QuX19yZWR1Y2VfXygpWzJdKQogICAgICAgICBvZC54ID0gMTAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUob2QuX19yZWR1Y2VfXygpWzJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fZGljdF9fWyd4J10sIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fcmVkdWNlX18oKVsyXSwgeyd4JzogMTB9KQogCiAgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CkBAIC00MDMsNiArNDE5LDE0IEBACiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKipkKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihvZCksIHN5cy5nZXRzaXplb2YoZCkpCiAKKyAgICBkZWYgdGVzdF92aWV3cyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNDI4NgorICAgICAgICBzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZyB5ZXN0ZXJkYXkgYmVmb3JlIGRhd24nLnNwbGl0KCkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLmtleXMoKSwgZGljdChvZCkua2V5cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLml0ZW1zKCksIGRpY3Qob2QpLml0ZW1zKCkpCisKICAgICBkZWYgdGVzdF9vdmVycmlkZV91cGRhdGUoc2VsZik6CiAgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICAjIFZlcmlmeSB0aGF0IHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHVwZGF0ZSgpIHdpdGhvdXQgYnJlYWtpbmcgX19pbml0X18oKQpAQCAtNjExLDYgKzYzNSwyNSBAQAogICAgIE9yZGVyZWREaWN0ID0gcHlfY29sbC5PcmRlcmVkRGljdAogCiAKK2NsYXNzIENQeXRob25CdWlsdGluRGljdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCdWlsdGluIGRpY3QgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlci4KKworICAgIFJldXNlIHNvbWUgb2YgdGVzdHMgaW4gT3JkZXJlZERpY3Qgc2VsZWN0aXZlbHkuCisgICAgIiIiCisKKyAgICBtb2R1bGUgPSBidWlsdGlucworICAgIE9yZGVyZWREaWN0ID0gZGljdAorCitmb3IgbWV0aG9kIGluICgKKyAgICAidGVzdF9pbml0IHRlc3RfdXBkYXRlIHRlc3RfYWJjIHRlc3RfY2xlYXIgdGVzdF9kZWxpdGVtICIgKworICAgICJ0ZXN0X3NldGl0ZW0gdGVzdF9kZXRlY3RfZGVsZXRpb25fZHVyaW5nX2l0ZXJhdGlvbiAiICsKKyAgICAidGVzdF9wb3BpdGVtIHRlc3RfcmVpbnNlcnQgdGVzdF9vdmVycmlkZV91cGRhdGUgIiArCisgICAgInRlc3RfaGlnaGx5X25lc3RlZCB0ZXN0X2hpZ2hseV9uZXN0ZWRfc3ViY2xhc3MgIiArCisgICAgInRlc3RfZGVsaXRlbV9oYXNoX2NvbGxpc2lvbiAiKS5zcGxpdCgpOgorICAgIHNldGF0dHIoQ1B5dGhvbkJ1aWx0aW5EaWN0VGVzdHMsIG1ldGhvZCwgZ2V0YXR0cihPcmRlcmVkRGljdFRlc3RzLCBtZXRob2QpKQorZGVsIG1ldGhvZAorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfY29sbCwgJ3JlcXVpcmVzIHRoZSBDIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZScpCiBjbGFzcyBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cyhPcmRlcmVkRGljdFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTYyNSwxOCArNjY4LDIwIEBACiAgICAgICAgIHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKIAotICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduMlAnICsgJzNQblBuMlAnKSArIGNhbGNzaXplKCcyblBuJykKLSAgICAgICAgZW50cnlzaXplID0gY2FsY3NpemUoJ24yUCcpICsgY2FsY3NpemUoJ1AnKQorICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduUTJQJyArICczUG5QbjJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKQorCisgICAgICAgIGVudHJ5c2l6ZSA9IGNhbGNzaXplKCduMlAnKQorICAgICAgICBwID0gY2FsY3NpemUoJ1AnKQogICAgICAgICBub2Rlc2l6ZSA9IGNhbGNzaXplKCdQbjJQJykKIAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplKSAgIyA4Ynl0ZSBpbmRpY2llcyArIDgqMi8vMyAqIGVudHJ5IHRhYmxlCiAgICAgICAgIG9kLnggPSAxCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSkKKyAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqcCArIDggKyA1KmVudHJ5c2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMyldKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUgKyAzKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplICsgMypub2Rlc2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMywgMTApXSkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDE2KmVudHJ5c2l6ZSArIDEwKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqcCArIDE2ICsgMTAqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCiAKICAgICAgICAgY2hlY2sob2Qua2V5cygpLCBzaXplKCdQJykpCiAgICAgICAgIGNoZWNrKG9kLml0ZW1zKCksIHNpemUoJ1AnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IDEwMzgzY2YuLmIzZDBiMWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IG1tYXAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzaWduYWwKQEAgLTU3LDcgKzU2LDcgQEAKIHRyeToKICAgICBpbXBvcnQgcHdkCiAgICAgYWxsX3VzZXJzID0gW3UucHdfdWlkIGZvciB1IGluIHB3ZC5nZXRwd2FsbCgpXQotZXhjZXB0IEltcG9ydEVycm9yOgorZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IpOgogICAgIGFsbF91c2VycyA9IFtdCiB0cnk6CiAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IElOVF9NQVgsIFBZX1NTSVpFX1RfTUFYCkBAIC02NSw2ICs2NCw4IEBACiAgICAgSU5UX01BWCA9IFBZX1NTSVpFX1RfTUFYID0gc3lzLm1heHNpemUKIAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVuaXhfc2hlbGwKKwogCiByb290X2luX3Bvc2l4ID0gRmFsc2UKIGlmIGhhc2F0dHIob3MsICdnZXRldWlkJyk6CkBAIC04Miw2ICs4MywzMiBAQAogIyBJc3N1ZSAjMTQxMTA6IFNvbWUgdGVzdHMgZmFpbCBvbiBGcmVlQlNEIGlmIHRoZSB1c2VyIGlzIGluIHRoZSB3aGVlbCBncm91cC4KIEhBVkVfV0hFRUxfR1JPVVAgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpIGFuZCBvcy5nZXRnaWQoKSA9PSAwCiAKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MobXNnX3JlZ2V4LCBxdWlldD1GYWxzZSk6CisgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2dfcmVnZXgsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aWV0PXF1aWV0KToKKyAgICAgICAgeWllbGQKKworCitkZWYgcmVxdWlyZXNfb3NfZnVuYyhuYW1lKToKKyAgICByZXR1cm4gdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCBuYW1lKSwgJ3JlcXVpcmVzIG9zLiVzJyAlIG5hbWUpCisKKworY2xhc3MgX1BhdGhMaWtlKG9zLlBhdGhMaWtlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPSIiKToKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5wYXRoKQorCisgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisKIGRlZiBjcmVhdGVfZmlsZShmaWxlbmFtZSwgY29udGVudD1iJ2NvbnRlbnQnKToKICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ4YiIsIDApIGFzIGZwOgogICAgICAgICBmcC53cml0ZShjb250ZW50KQpAQCAtMTQ1LDkgKzE3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIElOVF9NQVggPCBQWV9TU0laRV9UX01BWCIpCiAgICAgQHN1cHBvcnQuYmlnbWVtdGVzdChzaXplPUlOVF9NQVggKyAxMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGFyZ2VfcmVhZChzZWxmLCBzaXplKToKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIndGVzdCcpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiJ3Rlc3QnKQogCiAgICAgICAgICMgSXNzdWUgIzIxOTMyOiBNYWtlIHN1cmUgdGhhdCBvcy5yZWFkKCkgZG9lcyBub3QgcmFpc2UgYW4KICAgICAgICAgIyBPdmVyZmxvd0Vycm9yIGZvciBzaXplIGxhcmdlciB0aGFuIElOVF9NQVgKQEAgLTIwNCwxMSArMjMwLDEyIEBACiAKICAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgogICAgICAgICBURVNURk4yID0gc3VwcG9ydC5URVNURk4gKyAiLjIiCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgiMSIpCi0gICAgICAgIHdpdGggb3BlbihURVNURk4yLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCIyIikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgVEVTVEZOMikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNURk4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiIjEiKQorICAgICAgICBjcmVhdGVfZmlsZShURVNURk4yLCBiIjIiKQorCiAgICAgICAgIG9zLnJlcGxhY2Uoc3VwcG9ydC5URVNURk4sIFRFU1RGTjIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBvcy5zdGF0LCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyJykgYXMgZjoKQEAgLTMwOSw5ICszMzYsNyBAQAogICAgICAgICAgICAgZm5hbWUgPSBzZWxmLmZuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3QgZW5jb2RlICVhIGZvciB0aGUgZmlsZXN5c3RlbSIgJSBzZWxmLmZuYW1lKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX3N0YXRfYXR0cmlidXRlcyhmbmFtZSkKIAogICAgIGRlZiB0ZXN0X3N0YXRfcmVzdWx0X3BpY2tsZShzZWxmKToKICAgICAgICAgcmVzdWx0ID0gb3Muc3RhdChzZWxmLmZuYW1lKQpAQCAtNDYyLDE5ICs0ODcsMTQgQEAKIAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYuZGlybmFtZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5kaXJuYW1lKQotICAgICAgICB3aXRoIG9wZW4oc2VsZi5mbmFtZSwgJ3diJykgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShiIkFCQyIpCisgICAgICAgIGNyZWF0ZV9maWxlKHNlbGYuZm5hbWUpCiAKICAgICAgICAgZGVmIHJlc3RvcmVfZmxvYXRfdGltZXMoc3RhdGUpOgotICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCisgICAgICAgICAgICB3aXRoIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncygnc3RhdF9mbG9hdF90aW1lcycpOgogICAgICAgICAgICAgICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoc3RhdGUpCiAKICAgICAgICAgIyBlbnN1cmUgdGhhdCBzdF9hdGltZSBhbmQgc3RfbXRpbWUgYXJlIGZsb2F0Ci0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCisgICAgICAgIHdpdGggaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKCdzdGF0X2Zsb2F0X3RpbWVzJyk6CiAgICAgICAgICAgICBvbGRfZmxvYXRfdGltZXMgPSBvcy5zdGF0X2Zsb2F0X3RpbWVzKC0xKQogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfZmxvYXRfdGltZXMsIG9sZF9mbG9hdF90aW1lcykKIApAQCAtNTY2LDcgKzU4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKICAgICBkZWYgdGVzdF91dGltZV9mZChzZWxmKToKICAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBucyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICAjIHVzZSBhIGZpbGUgZGVzY3JpcHRvciB0byB0ZXN0IGZ1dGltZW5zKHRpbWVzcGVjKQogICAgICAgICAgICAgICAgICMgb3IgZnV0aW1lcyh0aW1ldmFsKQogICAgICAgICAgICAgICAgIG9zLnV0aW1lKGZwLmZpbGVubygpLCBucz1ucykKQEAgLTY3OCwxOCArNjk4LDIwIEBACiAgICAgICAgIHJldHVybiBvcy5lbnZpcm9uCiAKICAgICAjIEJ1ZyAxMTEwNDc4Ci0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHVuaXhfc2hlbGwgYW5kIG9zLnBhdGguZXhpc3RzKHVuaXhfc2hlbGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBhIHNoZWxsJykKICAgICBkZWYgdGVzdF91cGRhdGUyKHNlbGYpOgogICAgICAgICBvcy5lbnZpcm9uLmNsZWFyKCkKICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoSEVMTE89IldvcmxkIikKLSAgICAgICAgd2l0aCBvcy5wb3BlbigiL2Jpbi9zaCAtYyAnZWNobyAkSEVMTE8nIikgYXMgcG9wZW46CisgICAgICAgIHdpdGggb3MucG9wZW4oIiVzIC1jICdlY2hvICRIRUxMTyciICUgdW5peF9zaGVsbCkgYXMgcG9wZW46CiAgICAgICAgICAgICB2YWx1ZSA9IHBvcGVuLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAiV29ybGQiKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHVuaXhfc2hlbGwgYW5kIG9zLnBhdGguZXhpc3RzKHVuaXhfc2hlbGwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBhIHNoZWxsJykKICAgICBkZWYgdGVzdF9vc19wb3Blbl9pdGVyKHNlbGYpOgotICAgICAgICB3aXRoIG9zLnBvcGVuKAotICAgICAgICAgICAgIi9iaW4vc2ggLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIikgYXMgcG9wZW46CisgICAgICAgIHdpdGggb3MucG9wZW4oIiVzIC1jICdlY2hvIFwibGluZTFcbmxpbmUyXG5saW5lM1wiJyIKKyAgICAgICAgICAgICAgICAgICAgICAlIHVuaXhfc2hlbGwpIGFzIHBvcGVuOgogICAgICAgICAgICAgaXQgPSBpdGVyKHBvcGVuKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUxXG4iKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUyXG4iKQpAQCAtODIwLDYgKzg0Miw3IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGpvaW4gPSBvcy5wYXRoLmpvaW4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzdXBwb3J0LlRFU1RGTikKIAogICAgICAgICAjIEJ1aWxkOgogICAgICAgICAjICAgICBURVNURk4vCkBAIC04NDIsMTEgKzg2NSwxMSBAQAogICAgICAgICBzZWxmLnN1YjFfcGF0aCA9IGpvaW4oc2VsZi53YWxrX3BhdGgsICJTVUIxIikKICAgICAgICAgc2VsZi5zdWIxMV9wYXRoID0gam9pbihzZWxmLnN1YjFfcGF0aCwgIlNVQjExIikKICAgICAgICAgc3ViMl9wYXRoID0gam9pbihzZWxmLndhbGtfcGF0aCwgIlNVQjIiKQotICAgICAgICBzZWxmLnN1YjIxX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgIlNVQjIxIikKKyAgICAgICAgc3ViMjFfcGF0aCA9IGpvaW4oc3ViMl9wYXRoLCAiU1VCMjEiKQogICAgICAgICB0bXAxX3BhdGggPSBqb2luKHNlbGYud2Fsa19wYXRoLCAidG1wMSIpCiAgICAgICAgIHRtcDJfcGF0aCA9IGpvaW4oc2VsZi5zdWIxX3BhdGgsICJ0bXAyIikKICAgICAgICAgdG1wM19wYXRoID0gam9pbihzdWIyX3BhdGgsICJ0bXAzIikKLSAgICAgICAgdG1wNV9wYXRoID0gam9pbihzZWxmLnN1YjIxX3BhdGgsICJ0bXAzIikKKyAgICAgICAgdG1wNV9wYXRoID0gam9pbihzdWIyMV9wYXRoLCAidG1wMyIpCiAgICAgICAgIHNlbGYubGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKICAgICAgICAgdDJfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIpCiAgICAgICAgIHRtcDRfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIsICJ0bXA0IikKQEAgLTg1Nyw3ICs4ODAsNyBAQAogICAgICAgICAjIENyZWF0ZSBzdHVmZi4KICAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5zdWIxMV9wYXRoKQogICAgICAgICBvcy5tYWtlZGlycyhzdWIyX3BhdGgpCi0gICAgICAgIG9zLm1ha2VkaXJzKHNlbGYuc3ViMjFfcGF0aCkKKyAgICAgICAgb3MubWFrZWRpcnMoc3ViMjFfcGF0aCkKICAgICAgICAgb3MubWFrZWRpcnModDJfcGF0aCkKIAogICAgICAgICBmb3IgcGF0aCBpbiB0bXAxX3BhdGgsIHRtcDJfcGF0aCwgdG1wM19wYXRoLCB0bXA0X3BhdGgsIHRtcDVfcGF0aDoKQEAgLTg3NSwxNiArODk4LDE1IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFtdLCBbInRtcDMiXSkKIAotICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIDApCisgICAgICAgIG9zLmNobW9kKHN1YjIxX3BhdGgsIDApCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLmxpc3RkaXIoc2VsZi5zdWIyMV9wYXRoKQorICAgICAgICAgICAgb3MubGlzdGRpcihzdWIyMV9wYXRoKQogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgotICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBzdWIyMV9wYXRoLCBzdGF0LlNfSVJXWFUpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKKyAgICAgICAgICAgIG9zLmNobW9kKHN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKICAgICAgICAgICAgIG9zLnVubGluayh0bXA1X3BhdGgpCi0gICAgICAgICAgICBvcy5ybWRpcihzZWxmLnN1YjIxX3BhdGgpCi0gICAgICAgICAgICBzZWxmLnN1YjIxX3BhdGggPSBOb25lCisgICAgICAgICAgICBvcy5ybWRpcihzdWIyMV9wYXRoKQogICAgICAgICAgICAgZGVsIHNlbGYuc3ViMl90cmVlWzFdWzoxXQogCiAgICAgZGVmIHRlc3Rfd2Fsa190b3Bkb3duKHNlbGYpOgpAQCAtOTA0LDEwICs5MjYsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMiArIGZsaXBwZWRdLCAoc2VsZi5zdWIxMV9wYXRoLCBbXSwgW10pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFszIC0gMiAqIGZsaXBwZWRdLCBzZWxmLnN1YjJfdHJlZSkKIAotICAgIGRlZiB0ZXN0X3dhbGtfcHJ1bmUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2Fsa19wcnVuZShzZWxmLCB3YWxrX3BhdGg9Tm9uZSk6CisgICAgICAgIGlmIHdhbGtfcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgd2Fsa19wYXRoID0gc2VsZi53YWxrX3BhdGgKICAgICAgICAgIyBQcnVuZSB0aGUgc2VhcmNoLgogICAgICAgICBhbGwgPSBbXQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gc2VsZi53YWxrKHNlbGYud2Fsa19wYXRoKToKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIHNlbGYud2Fsayh3YWxrX3BhdGgpOgogICAgICAgICAgICAgYWxsLmFwcGVuZCgocm9vdCwgZGlycywgZmlsZXMpKQogICAgICAgICAgICAgIyBEb24ndCBkZXNjZW5kIGludG8gU1VCMS4KICAgICAgICAgICAgIGlmICdTVUIxJyBpbiBkaXJzOgpAQCAtOTE2LDE3ICs5NDAsMjAgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi53YWxrX3BhdGgsIFsiU1VCMiJdLCBbInRtcDEiXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cih3YWxrX3BhdGgpLCBbIlNVQjIiXSwgWyJ0bXAxIl0pKQogCiAgICAgICAgIGFsbFsxXVstMV0uc29ydCgpCiAgICAgICAgIGFsbFsxXVsxXS5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMV0sIHNlbGYuc3ViMl90cmVlKQogCisgICAgZGVmIHRlc3RfZmlsZV9saWtlX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93YWxrX3BydW5lKF9QYXRoTGlrZShzZWxmLndhbGtfcGF0aCkpCisKICAgICBkZWYgdGVzdF93YWxrX2JvdHRvbV91cChzZWxmKToKICAgICAgICAgIyBXYWxrIGJvdHRvbS11cC4KICAgICAgICAgYWxsID0gbGlzdChzZWxmLndhbGsoc2VsZi53YWxrX3BhdGgsIHRvcGRvd249RmFsc2UpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDQsIGFsbCkKICAgICAgICAgIyBXZSBjYW4ndCBrbm93IHdoaWNoIG9yZGVyIFNVQjEgYW5kIFNVQjIgd2lsbCBhcHBlYXIgaW4uCiAgICAgICAgICMgTm90IGZsaXBwZWQ6ICBTVUIxMSwgU1VCMSwgU1VCMiwgVEVTVEZOCiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBTVUIyLCBTVUIxMSwgU1VCMSwgVEVTVEZOCkBAIC05NTcsMjQgKzk4NCw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZG4ndCBmb2xsb3cgc3ltbGluayB3aXRoIGZvbGxvd2xpbmtzPVRydWUiKQogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAjIFRlYXIgZXZlcnl0aGluZyBkb3duLiAgVGhpcyBpcyBhIGRlY2VudCB1c2UgZm9yIGJvdHRvbS11cCBvbgotICAgICAgICAjIFdpbmRvd3MsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHJlY3Vyc2l2ZSBkZWxldGUgY29tbWFuZC4gIFRoZQotICAgICAgICAjIChub3Qgc28pIHN1YnRsZXR5IGlzIHRoYXQgcm1kaXIgd2lsbCBmYWlsIHVubGVzcyB0aGUgZGlyJ3MKLSAgICAgICAgIyBraWRzIGFyZSByZW1vdmVkIGZpcnN0LCBzbyBib3R0b20gdXAgaXMgZXNzZW50aWFsLgotICAgICAgICBpZiBzZWxmLnN1YjIxX3BhdGg6Ci0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguam9pbihyb290LCBuYW1lKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzbGluayhkaXJuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIoZGlybmFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGlybmFtZSkKLSAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0KICAgICBkZWYgdGVzdF93YWxrX2JhZF9kaXIoc2VsZik6CiAgICAgICAgICMgV2FsayB0b3AtZG93bi4KICAgICAgICAgZXJyb3JzID0gW10KQEAgLTEwNjIsMjkgKzEwNzEsMTEgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBuZXdmZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdmZCwgbWluZmQpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICMgY2xlYW51cAotICAgICAgICBpZiBzZWxmLnN1YjIxX3BhdGg6Ci0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLnN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgotICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpOgotICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLQogY2xhc3MgQnl0ZXNXYWxrVGVzdHMoV2Fsa1Rlc3RzKToKICAgICAiIiJUZXN0cyBmb3Igb3Mud2FsaygpIHdpdGggYnl0ZXMuIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcigpLnNldFVwKCkKICAgICAgICAgc2VsZi5zdGFjayA9IGNvbnRleHRsaWIuRXhpdFN0YWNrKCkKLSAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgotICAgICAgICAgICAgc2VsZi5zdGFjay5lbnRlcl9jb250ZXh0KHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCkpCi0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5zdGFjay5jbG9zZSgpCkBAIC0xMjYxLDggKzEyNTIsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJhLCAnZmlsZS50eHQnKSkKICAgICAgICAgb3MucmVtb3ZlZGlycyhkaXJiKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyYSkpCkBAIC0xMjczLDggKzEyNjMsNyBAQAogICAgICAgICBvcy5ta2RpcihkaXJhKQogICAgICAgICBkaXJiID0gb3MucGF0aC5qb2luKGRpcmEsICdkaXJiJykKICAgICAgICAgb3MubWtkaXIoZGlyYikKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZSgndGV4dCcpCisgICAgICAgIGNyZWF0ZV9maWxlKG9zLnBhdGguam9pbihkaXJiLCAnZmlsZS50eHQnKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKICAgICAgICAgICAgIG9zLnJlbW92ZWRpcnMoZGlyYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcmIpKQpAQCAtMTI4NCw3ICsxMjczLDcgQEAKIAogY2xhc3MgRGV2TnVsbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kZXZudWxsKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3diJykgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3YicsIDApIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGInaGVsbG8nKQogICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAncmInKSBhcyBmOgpAQCAtMTMwMSw2ICsxMjkwLDcgQEAKIAogICAgIGRlZiB0ZXN0X3VyYW5kb21fdmFsdWUoc2VsZik6CiAgICAgICAgIGRhdGExID0gb3MudXJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGExLCBieXRlcykKICAgICAgICAgZGF0YTIgPSBvcy51cmFuZG9tKDE2KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKIApAQCAtMTMyMSw2ICsxMzExLDQ5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRyYW5kb20nKSwgJ25lZWQgb3MuZ2V0cmFuZG9tKCknKQorY2xhc3MgR2V0UmFuZG9tVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmdldHJhbmRvbSgxKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRU5PU1lTOgorICAgICAgICAgICAgICAgICMgUHl0aG9uIGNvbXBpbGVkIG9uIGEgbW9yZSByZWNlbnQgTGludXggdmVyc2lvbgorICAgICAgICAgICAgICAgICMgdGhhbiB0aGUgY3VycmVudCBMaW51eCBrZXJuZWwKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2V0cmFuZG9tKCkgc3lzY2FsbCBmYWlscyB3aXRoIEVOT1NZUyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fdHlwZShzZWxmKToKKyAgICAgICAgZGF0YSA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb20wKHNlbGYpOgorICAgICAgICBlbXB0eSA9IG9zLmdldHJhbmRvbSgwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVtcHR5LCBiJycpCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fcmFuZG9tKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvcywgJ0dSTkRfUkFORE9NJykpCisKKyAgICAgICAgIyBEb24ndCB0ZXN0IG9zLmdldHJhbmRvbSgxLCBvcy5HUk5EX1JBTkRPTSkgdG8gbm90IGNvbnN1bWUgdGhlIHJhcmUKKyAgICAgICAgIyByZXNvdXJjZSAvZGV2L3JhbmRvbQorCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX25vbmJsb2NrKHNlbGYpOgorICAgICAgICAjIFRoZSBjYWxsIG11c3Qgbm90IGZhaWwuIENoZWNrIGFsc28gdGhhdCB0aGUgZmxhZyBleGlzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfTk9OQkxPQ0spCisgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CisgICAgICAgICAgICAjIFN5c3RlbSB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV92YWx1ZShzZWxmKToKKyAgICAgICAgZGF0YTEgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIGRhdGEyID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKKworCiAjIG9zLnVyYW5kb20oKSBkb2Vzbid0IHVzZSBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIGl0IGlzIGltcGxlbWVudGVkIHdpdGggdGhlCiAjIGdldGVudHJvcHkoKSBmdW5jdGlvbiwgdGhlIGdldHJhbmRvbSgpIGZ1bmN0aW9uIG9yIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsCiBPU19VUkFORE9NX0RPTlRfVVNFX0ZEID0gKApAQCAtMTM3MSw5ICsxNDA0LDkgQEAKICAgICBkZWYgdGVzdF91cmFuZG9tX2ZkX3Jlb3BlbmVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICMyMTIwNzogdXJhbmRvbSgpIHNob3VsZCBkZXRlY3QgaXRzIGZkIHRvIC9kZXYvdXJhbmRvbQogICAgICAgICAjIGNoYW5nZWQgdG8gc29tZXRoaW5nIGVsc2UsIGFuZCByZW9wZW4gaXQuCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoYiJ4IiAqIDI1NikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBiIngiICogMjU2KQorCiAgICAgICAgIGNvZGUgPSAiIiJpZiAxOgogICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICBpbXBvcnQgc3lzCkBAIC0xMzkwLDcgKzE0MjMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgb3MuY2xvc2VyYW5nZSgzLCAyNTYpCiAgICAgICAgICAgICB3aXRoIG9wZW4oe1RFU1RGTiFyfSwgJ3JiJykgYXMgZjoKLSAgICAgICAgICAgICAgICBvcy5kdXAyKGYuZmlsZW5vKCksIGZkKQorICAgICAgICAgICAgICAgIG5ld19mZCA9IGYuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICAjIElzc3VlICMyNjkzNTogcG9zaXggYWxsb3dzIG5ld19mZCBhbmQgZmQgdG8gYmUgZXF1YWwgYnV0CisgICAgICAgICAgICAgICAgIyBzb21lIGxpYmMgaW1wbGVtZW50YXRpb25zIGhhdmUgZHVwMiByZXR1cm4gYW4gZXJyb3IgaW4gdGhpcworICAgICAgICAgICAgICAgICMgY2FzZS4KKyAgICAgICAgICAgICAgICBpZiBuZXdfZmQgIT0gZmQ6CisgICAgICAgICAgICAgICAgICAgIG9zLmR1cDIobmV3X2ZkLCBmZCkKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShvcy51cmFuZG9tKDQpKQogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuYnVmZmVyLndyaXRlKG9zLnVyYW5kb20oNCkpCiAgICAgICAgICAgICAiIiIuZm9ybWF0KFRFU1RGTj1zdXBwb3J0LlRFU1RGTikKQEAgLTE0MzUsNiArMTQ3Myw3IEBACiAgICAgICAgIG9zLmV4ZWN2ZSA9IG9yaWdfZXhlY3ZlCiAgICAgICAgIG9zLmRlZnBhdGggPSBvcmlnX2RlZnBhdGgKIAorCiBjbGFzcyBFeGVjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYoVVNJTkdfTElOVVhUSFJFQURTLAogICAgICAgICAgICAgICAgICAgICAgImF2b2lkIHRyaWdnZXJpbmcgYSBsaW51eHRocmVhZHMgYnVnOiBzZWUgaXNzdWUgIzQ5NzAiKQpAQCAtMTUwMiw2ICsxNTQxLDE4IEBACiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQogY2xhc3MgV2luMzJFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIGV4aXN0cyA9IEZhbHNlCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4aXN0cyA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdDsgb3Muc3RhdCBmYWlsZWQgd2l0aCAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAlIChzdXBwb3J0LlRFU1RGTiwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdCIgJSBzdXBwb3J0LlRFU1RGTikKKwogICAgIGRlZiB0ZXN0X3JlbmFtZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVuYW1lLCBzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4rIi5iYWsiKQogCkBAIC0xNTEyLDEyICsxNTYzLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNoZGlyLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X21rZGlyKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKQotICAgICAgICB0cnk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAieCIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5ta2Rpciwgc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy51dGltZSwgc3VwcG9ydC5URVNURk4sIE5vbmUpCkBAIC0xNTI1LDYgKzE1NzQsNyBAQAogICAgIGRlZiB0ZXN0X2NobW9kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5jaG1vZCwgc3VwcG9ydC5URVNURk4sIDApCiAKKwogY2xhc3MgVGVzdEludmFsaWRGRCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc2luZ2xlcyA9IFsiZmNoZGlyIiwgImR1cCIsICJmZG9wZW4iLCAiZmRhdGFzeW5jIiwgImZzdGF0IiwKICAgICAgICAgICAgICAgICJmc3RhdHZmcyIsICJmc3luYyIsICJ0Y2dldHBncnAiLCAidHR5bmFtZSJdCkBAIC0xNjM2LDEyICsxNjg2LDkgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKIAogICAgIGRlZiBfdGVzdF9saW5rKHNlbGYsIGZpbGUxLCBmaWxlMik6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmMToKLSAgICAgICAgICAgIGYxLndyaXRlKCJ0ZXN0IikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCiAKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKKyAgICAgICAgb3MubGluayhmaWxlMSwgZmlsZTIpCiAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInIiKSBhcyBmMSwgb3BlbihmaWxlMiwgInIiKSBhcyBmMjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVvcGVuZmlsZShmMS5maWxlbm8oKSwgZjIuZmlsZW5vKCkpKQogCkBAIC0xOTMyLDYgKzE5NzksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOKSksCiAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVkX3BhdGhzKQorCiAgICAgICAgICMgYnl0ZXMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSwKQEAgLTE5NDUsNiArMTk5Myw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIocGF0aCkpLAogICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocykKKwogICAgICAgICAjIGJ5dGVzCiAgICAgICAgIHBhdGggPSBiJ1xcXFw/XFwnICsgb3MuZnNlbmNvZGUob3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTIwMjQsNTEgKzIwNzMsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChsaW5rKSwgb3Muc3RhdChsaW5rKSkKIAogICAgICAgICBieXRlc19saW5rID0gb3MuZnNlbmNvZGUobGluaykKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQogCiAgICAgZGVmIHRlc3RfMTIwODQoc2VsZik6CiAgICAgICAgIGxldmVsMSA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgbGV2ZWwyID0gb3MucGF0aC5qb2luKGxldmVsMSwgImxldmVsMiIpCiAgICAgICAgIGxldmVsMyA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsZXZlbDMiKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIGxldmVsMSkKKworICAgICAgICBvcy5ta2RpcihsZXZlbDEpCisgICAgICAgIG9zLm1rZGlyKGxldmVsMikKKyAgICAgICAgb3MubWtkaXIobGV2ZWwzKQorCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihsZXZlbDEsICJmaWxlMSIpKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKKworICAgICAgICBvcmlnX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMSkKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMikKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMykKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKKyAgICAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGluayIpCisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGgucmVscGF0aChmaWxlMSksICJsaW5rIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKIAotICAgICAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGxldmVsMSwgImZpbGUxIikpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSB0aGUgc2FtZSBkaXIgYXMgdGhlIGxpbmsKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKIAotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiZmlsZTEiKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYmVsb3cgdGhlIGxpbmsKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKIAotICAgICAgICAgICAgb3JpZ19kaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKLSAgICAgICAgICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxpbmsiKQotICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5yZWxwYXRoKGZpbGUxKSwgImxpbmsiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIHRoZSBzYW1lIGRpciBhcyB0aGUgbGluawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGJlbG93IHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBhYm92ZSB0aGUgbGluawotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihvcmlnX2RpcikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgc2VsZi5mYWlsKGVycikKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGFib3ZlIHRoZSBsaW5rCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoZmlsZTEpCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGxldmVsMSkKKyAgICAgICAgICAgIG9zLmNoZGlyKG9yaWdfZGlyKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQpAQCAtMjEwNiw3ICsyMTQ3LDcgQEAKIGNsYXNzIE5vbkxvY2FsU3ltbGlua1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiCisgICAgICAgIHIiIiIKICAgICAgICAgQ3JlYXRlIHRoaXMgc3RydWN0dXJlOgogCiAgICAgICAgIGJhc2UKQEAgLTIxNzcsMTEgKzIyMTgsMTEwIEBACiAKICAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgogICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCi0gICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgIyBBZGQgYW4gaW1wbGljaXQgdGVzdCBmb3IgUHlVbmljb2RlX0ZTQ29udmVydGVyKCkuCisgICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgX1BhdGhMaWtlKGFyZ3NbMF0pLCBhcmdzKQogICAgICAgICBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIChwaWQsIDApKQogCiAKK2NsYXNzIFNwYXduVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfYXJncyhzZWxmLCAqLCB3aXRoX2Vudj1GYWxzZSwgdXNlX2J5dGVzPUZhbHNlKToKKyAgICAgICAgc2VsZi5leGl0Y29kZSA9IDE3CisKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIGlmIG5vdCB3aXRoX2VudjoKKyAgICAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgc3lzLmV4aXQoJXMpJyAlIHNlbGYuZXhpdGNvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgICAgICAgICAgIyBjcmVhdGUgYW4gdW5pcXVlIGtleQorICAgICAgICAgICAgc2VsZi5rZXkgPSBzdHIodXVpZC51dWlkNCgpKQorICAgICAgICAgICAgc2VsZi5lbnZbc2VsZi5rZXldID0gc2VsZi5rZXkKKyAgICAgICAgICAgICMgcmVhZCB0aGUgdmFyaWFibGUgZnJvbSBvcy5lbnZpcm9uIHRvIGNoZWNrIHRoYXQgaXQgZXhpc3RzCisgICAgICAgICAgICBjb2RlID0gKCdpbXBvcnQgc3lzLCBvczsgbWFnaWMgPSBvcy5lbnZpcm9uWyVyXTsgc3lzLmV4aXQoJXMpJworICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmtleSwgc2VsZi5leGl0Y29kZSkpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoY29kZSkKKworICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCBmaWxlbmFtZV0KKyAgICAgICAgaWYgdXNlX2J5dGVzOgorICAgICAgICAgICAgYXJncyA9IFtvcy5mc2VuY29kZShhKSBmb3IgYSBpbiBhcmdzXQorICAgICAgICAgICAgc2VsZi5lbnYgPSB7b3MuZnNlbmNvZGUoayk6IG9zLmZzZW5jb2RlKHYpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLmVudi5pdGVtcygpfQorCisgICAgICAgIHJldHVybiBhcmdzCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sJykKKyAgICBkZWYgdGVzdF9zcGF3bmwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmwob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxlJykKKyAgICBkZWYgdGVzdF9zcGF3bmxlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25scCcpCisgICAgZGVmIHRlc3Rfc3Bhd25scChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubHAob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxwZScpCisgICAgZGVmIHRlc3Rfc3Bhd25scGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25scGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252JykKKyAgICBkZWYgdGVzdF9zcGF3bnYoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnYob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudmUnKQorICAgIGRlZiB0ZXN0X3NwYXdudmUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252ZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudnAnKQorICAgIGRlZiB0ZXN0X3NwYXdudnAoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZwKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZwZScpCisgICAgZGVmIHRlc3Rfc3Bhd252cGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252cGUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnYnKQorICAgIGRlZiB0ZXN0X25vd2FpdChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHJlc3VsdCA9IG9zLndhaXRwaWQocGlkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgcGlkKQorICAgICAgICBzdGF0dXMgPSByZXN1bHRbMV0KKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ1dJRkVYSVRFRCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLldJRkVYSVRFRChzdGF0dXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5XRVhJVFNUQVRVUyhzdGF0dXMpLCBzZWxmLmV4aXRjb2RlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIHNlbGYuZXhpdGNvZGUgPDwgOCkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZlX2J5dGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgYnl0ZXMgaGFuZGxpbmcgaW4gcGFyc2VfYXJnbGlzdCBhbmQgcGFyc2VfZW52bGlzdCAoIzI4MTE0KQorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlLCB1c2VfYnl0ZXM9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKwogIyBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgVGVzdENhc2UgY2F1c2VkIGF0IGxlYXN0IHR3byBkaWZmZXJlbnQgZXJyb3JzIG9uCiAjICpuaXggYnVpbGRib3RzLiBUZW1wb3JhcmlseSBza2lwIHRoaXMgdG8gbGV0IHRoZSBidWlsZGJvdHMgbW92ZSBhbG9uZy4KIEB1bml0dGVzdC5za2lwKCJTa2lwIGR1ZSB0byBwbGF0Zm9ybS9lbnZpcm9ubWVudCBkaWZmZXJlbmNlcyBvbiAqTklYIGJ1aWxkYm90cyIpCkBAIC0yMjA0LDggKzIzNDQsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXdfcHJpbyA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCiAgICAgICAgICAgICBpZiBiYXNlID49IDE5IGFuZCBuZXdfcHJpbyA8PSAxOToKLSAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKLSAgICAgICJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSBhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcHJpbywgYmFzZSArIDEpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yMzE1LDggKzI0NTUsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5rZXkgPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoY2xzLkRBVEEpCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBjbHMuREFUQSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0yNDY2LDEwICsyNjA1LDExIEBACiAgICAgZGVmIHRlc3RfdHJhaWxlcnMoc2VsZik6CiAgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgogICAgICAgICBmaWxlX2RhdGEgPSBiImFiY2RlZiIKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGZpbGVfZGF0YSkKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIFRFU1RGTjIpCisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNURk4yKQorICAgICAgICBjcmVhdGVfZmlsZShURVNURk4yLCBmaWxlX2RhdGEpCisKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgZi5maWxlbm8oKSwgMCwgbGVuKGZpbGVfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGVycz1bYiIxMjM0Il0pCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCkBAIC0yNDkyLDM1ICsyNjMyLDM3IEBACiBkZWYgc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpOgogICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICB0cnk6Ci0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInhiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCi0gICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKLSAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKLSAgICByZXR1cm4gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQorCisgICAgcmV0dXJuIFRydWUKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCisjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KK0BzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMzkpCiBjbGFzcyBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0KICAgICBkZWYgX2NoZWNrX3hhdHRyc19zdHIoc2VsZiwgcywgZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyLCAqKmt3YXJncyk6CiAgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KLSAgICAgICAgb3BlbihmbiwgIndiIikuY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZuKQorICAgICAgICBjcmVhdGVfZmlsZShmbikKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgaW5pdF94YXR0ciA9IGxpc3R4YXR0cihmbikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluaXRfeGF0dHIsIGxpc3QpCisKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiIiIsICoqa3dhcmdzKQogICAgICAgICB4YXR0ciA9IHNldChpbml0X3hhdHRyKQogICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdCIpCkBAIC0yNTI4LDE5ICsyNjcwLDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiIiIpCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJoZWxsbyIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiJoZWxsbyIpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJieWUiLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImJ5ZSIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKwogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImZvbyIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCiAgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0MiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKICAgICAgICAgcmVtb3ZleGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgeGF0dHIucmVtb3ZlKCJ1c2VyLnRlc3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgKiprd2FyZ3MpLCBiImZvbyIpCkBAIC0yNTUzLDExICsyNzAwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCBzZXQoaW5pdF94YXR0cikgfCBzZXQobWFueSkpCiAKICAgICBkZWYgX2NoZWNrX3hhdHRycyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBkZWYgbWFrZV9ieXRlcyhzKToKLSAgICAgICAgICAgIHJldHVybiBieXRlcyhzLCAiYXNjaWkiKQogICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKHN0ciwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihtYWtlX2J5dGVzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihvcy5mc2VuY29kZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCkBAIC0yNTcyLDEwICsyNzE5LDEwIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmdldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIHNldHhhdHRyKHBhdGgsICphcmdzKToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiByZW1vdmV4YXR0cihwYXRoLCAqYXJncyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZleGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgbGlzdHhhdHRyKHBhdGgsICphcmdzKToKICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKQEAgLTI1ODMsNDMgKzI3MzAsNiBAQAogICAgICAgICBzZWxmLl9jaGVja194YXR0cnMoZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQotY2xhc3MgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEkodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBudAotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgZm9yIGZ1bmMsICphcmdzIGluICgKLSAgICAgICAgICAgICAgICAobnQuX2dldGZ1bGxwYXRobmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChudC5faXNkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MuYWNjZXNzLCBmaWxlbmFtZSwgb3MuUl9PSyksCi0gICAgICAgICAgICAgICAgKG9zLmNoZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmNobW9kLCBmaWxlbmFtZSwgMG83NzcpLAotICAgICAgICAgICAgICAgIChvcy5nZXRjd2RiLCksCi0gICAgICAgICAgICAgICAgKG9zLmxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmxpc3RkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubHN0YXQsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubWtkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Mub3BlbiwgZmlsZW5hbWUsIG9zLk9fUkRPTkxZKSwKLSAgICAgICAgICAgICAgICAob3MucmVuYW1lLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5ybWRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5zdGFydGZpbGUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Muc3RhdCwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy51bmxpbmssIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MudXRpbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLCBmdW5jLCAqYXJncykKLQotICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKLSAgICBkZWYgdGVzdF9zeW1saW5rKHNlbGYpOgotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKQotCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfdGVybWluYWxfc2l6ZScpLCAicmVxdWlyZXMgb3MuZ2V0X3Rlcm1pbmFsX3NpemUiKQogY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CkBAIC0yNjgyLDYgKzI3OTIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RlZCA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmJ5dGVzX2ZpbGVuYW1lcy5hcHBlbmQoZW5jb2RlZCkKKyAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGJ5dGVhcnJheShlbmNvZGVkKSkKICAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKG1lbW9yeXZpZXcoZW5jb2RlZCkpCiAKICAgICAgICAgc2VsZi5maWxlbmFtZXMgPSBzZWxmLmJ5dGVzX2ZpbGVuYW1lcyArIHNlbGYudW5pY29kZV9maWxlbmFtZXMKQEAgLTI3MDIsMTYgKzI4MTMsNyBAQAogICAgICAgICAgICAgICAgIChzZWxmLmJ5dGVzX2ZpbGVuYW1lcywgb3MucmVwbGFjZSwgYiJkc3QiKSwKICAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MucmVuYW1lLCAiZHN0IiksCiAgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlcGxhY2UsICJkc3QiKSwKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxNjQxNDogRG9uJ3QgdGVzdCB1bmRlY29kYWJsZSBuYW1lcyB3aXRoIGxpc3RkaXIoKQotICAgICAgICAgICAgICAgICMgYmVjYXVzZSBvZiBhIFdpbmRvd3MgYnVnLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFdpdGggdGhlIEFOU0kgY29kZSBwYWdlIDkzMiwgb3MubGlzdGRpcihiJ1x4ZTcnKSByZXR1cm4gYW4KLSAgICAgICAgICAgICAgICAjIGVtcHR5IGxpc3QgKGluc3RlYWQgb2YgZmFpbGluZyksIHdoZXJlYXMgb3MubGlzdGRpcihiJ1x4ZmYnKQotICAgICAgICAgICAgICAgICMgcmFpc2VzIGEgRmlsZU5vdEZvdW5kRXJyb3IuIEl0IGxvb2tzIGxpa2UgYSBXaW5kb3dzIGJ1ZzoKLSAgICAgICAgICAgICAgICAjIGInXHhlNycgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LCBGaW5kRmlyc3RGaWxlQShiJ1x4ZTcnKQotICAgICAgICAgICAgICAgICMgZmFpbHMgd2l0aCBFUlJPUl9GSUxFX05PVF9GT1VORCAoMiksIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAjIEVSUk9SX1BBVEhfTk9UX0ZPVU5EICgzKS4KLSAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MubGlzdGRpciwpLAorICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5saXN0ZGlyLCApLAogICAgICAgICAgICAgKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZ1bmNzLmV4dGVuZCgoCkBAIC0yNzUyLDEyICsyODU0LDE5IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZCgoc2VsZi5maWxlbmFtZXMsIG9zLnJlYWRsaW5rLCkpCiAKKwogICAgICAgICBmb3IgZmlsZW5hbWVzLCBmdW5jLCAqZnVuY19hcmdzIGluIGZ1bmNzOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdzaG91bGQgYmUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGVyci5maWxlbmFtZSwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlcnIuZmlsZW5hbWUsIG5hbWUsIHN0cihmdW5jKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBleGNlcHRpb24gdGhyb3duIGJ5IHt9Ii5mb3JtYXQoZnVuYykpCiAKQEAgLTI4NTUsNiArMjk2NCw2MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9pbmhlcml0YWJsZShzbGF2ZV9mZCksIEZhbHNlKQogCiAKK2NsYXNzIFBhdGhUQ29udmVydGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdHVwbGVzIG9mIChmdW5jdGlvbiBuYW1lLCBhbGxvd3MgZmQgYXJndW1lbnRzLCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0bworICAgICMgZnVuY3Rpb24sIGNsZWFudXAgZnVuY3Rpb24pCisgICAgZnVuY3Rpb25zID0gWworICAgICAgICAoJ3N0YXQnLCBUcnVlLCAoKSwgTm9uZSksCisgICAgICAgICgnbHN0YXQnLCBGYWxzZSwgKCksIE5vbmUpLAorICAgICAgICAoJ2FjY2VzcycsIEZhbHNlLCAob3MuRl9PSywpLCBOb25lKSwKKyAgICAgICAgKCdjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ2xjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ29wZW4nLCBGYWxzZSwgKDAsKSwgZ2V0YXR0cihvcywgJ2Nsb3NlJywgTm9uZSkpLAorICAgIF0KKworICAgIGRlZiB0ZXN0X3BhdGhfdF9jb252ZXJ0ZXIoc2VsZik6CisgICAgICAgIHN0cl9maWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IGJ5dGVzX2ZpbGVuYW1lID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTi5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IF9QYXRoTGlrZShieXRlc19maWxlbmFtZSkKKyAgICAgICAgZmQgPSBvcy5vcGVuKF9QYXRoTGlrZShzdHJfZmlsZW5hbWUpLCBvcy5PX1dST05MWXxvcy5PX0NSRUFUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorCisgICAgICAgIGludF9mc3BhdGggPSBfUGF0aExpa2UoZmQpCisgICAgICAgIHN0cl9mc3BhdGggPSBfUGF0aExpa2Uoc3RyX2ZpbGVuYW1lKQorCisgICAgICAgIGZvciBuYW1lLCBhbGxvd19mZCwgZXh0cmFfYXJncywgY2xlYW51cF9mbiBpbiBzZWxmLmZ1bmN0aW9uczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmbiA9IGdldGF0dHIob3MsIG5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gKHN0cl9maWxlbmFtZSwgYnl0ZXNfZmlsZW5hbWUsIHN0cl9mc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSwgcGF0aD1wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKHBhdGgsICpleHRyYV9hcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xlYW51cF9mbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzJyk6CisgICAgICAgICAgICAgICAgICAgIGZuKGludF9mc3BhdGgsICpleHRyYV9hcmdzKQorCisgICAgICAgICAgICAgICAgaWYgYWxsb3dfZmQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKGZkLCAqZXh0cmFfYXJncykgICMgc2hvdWxkIG5vdCBmYWlsCisgICAgICAgICAgICAgICAgICAgIGlmIGNsZWFudXBfZm4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcy5QYXRoTGlrZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm4oZmQsICpleHRyYV9hcmdzKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfYmxvY2tpbmcnKSwKICAgICAgICAgICAgICAgICAgICAgICduZWVkcyBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCknKQogY2xhc3MgQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yODc4LDE1ICszMDQ0LDE4IEBACiAKIAogY2xhc3MgVGVzdFNjYW5kaXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcgPSBzdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5yZWFscGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5ieXRlc19wYXRoID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYucGF0aCkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wYXRoKQogCiAgICAgZGVmIGNyZWF0ZV9maWxlKHNlbGYsIG5hbWU9ImZpbGUudHh0Iik6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIncHl0aG9uJykKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidweXRob24nKQogICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIGRlZiBnZXRfZW50cmllcyhzZWxmLCBuYW1lcyk6CkBAIC0yOTA5LDYgKzMwNzgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0MSwgc3RhdDIpCiAKICAgICBkZWYgY2hlY2tfZW50cnkoc2VsZiwgZW50cnksIG5hbWUsIGlzX2RpciwgaXNfZmlsZSwgaXNfc3ltbGluayk6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlbnRyeSwgb3MuRGlyRW50cnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5wYXRoLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pbm9kZSgpLApAQCAtMjk3NCwxNSArMzE0NCwxNiBAQAogICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ3N5bWxpbmtfZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgVHJ1ZSkKIAogICAgIGRlZiBnZXRfZW50cnkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHBhdGgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSkKIAogICAgICAgICBlbnRyeSA9IGVudHJpZXNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQogICAgICAgICByZXR1cm4gZW50cnkKIAotICAgIGRlZiBjcmVhdGVfZmlsZV9lbnRyeShzZWxmKToKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCkKKyAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZiwgbmFtZT0nZmlsZS50eHQnKToKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKG5hbWU9bmFtZSkKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2VudHJ5KG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKQogCiAgICAgZGVmIHRlc3RfY3VycmVudF9kaXJlY3Rvcnkoc2VsZik6CkBAIC0zMDAzLDYgKzMxNzQsMTggQEAKICAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVudHJ5KSwgIjxEaXJFbnRyeSAnZmlsZS50eHQnPiIpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2woc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnNwYXRoKGVudHJ5KSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2ZpbGUudHh0JykpCisKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2xfYnl0ZXMoc2VsZik6CisgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gb3MuZnNlbmNvZGUoJ2J5dGVzZmlsZS50eHQnKQorICAgICAgICBieXRlc19lbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkobmFtZT1ieXRlc19maWxlbmFtZSkKKyAgICAgICAgZnNwYXRoID0gb3MuZnNwYXRoKGJ5dGVzX2VudHJ5KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnNwYXRoLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKHNlbGYucGF0aCksYnl0ZXNfZmlsZW5hbWUpKQorCiAgICAgZGVmIHRlc3RfcmVtb3ZlZF9kaXIoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZGlyJykKIApAQCAtMzA2NiwxMSArMzI0OSw2IEBACiAgICAgICAgIGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCiAgICAgZGVmIHRlc3RfYnl0ZXMoc2VsZik6Ci0gICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgICMgT24gV2luZG93cywgb3Muc2NhbmRpcihieXRlcykgbXVzdCByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgYicuJykKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKIAogICAgICAgICBwYXRoX2J5dGVzID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQpAQCAtMzEwMCw2ICszMjc4LDExMiBAQAogICAgICAgICBmb3Igb2JqIGluIFsxMjM0LCAxLjIzNCwge30sIFtdXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgb2JqKQogCisgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorICAgICAgICAjIG11bHRpcGxlIGNsb3NlcworICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisgICAgZGVmIHRlc3RfcmVzb3VyY2Vfd2FybmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUmVzb3VyY2VXYXJuaW5nKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorICAgICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgIyBleGhhdXN0ZWQgaXRlcmF0b3IKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbGlzdChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisKK2NsYXNzIFRlc3RQRVA1MTkodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBBYnN0cmFjdGVkIHNvIGl0IGNhbiBiZSBvdmVycmlkZGVuIHRvIHRlc3QgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24KKyAgICAjIGlmIGEgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLgorICAgIGZzcGF0aCA9IHN0YXRpY21ldGhvZChvcy5mc3BhdGgpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fYnl0ZXMoc2VsZik6CisgICAgICAgIGZvciBiIGluIGInaGVsbG8nLCBiJ2dvb2RieWUnLCBiJ3NvbWUvcGF0aC9hbmQvZmlsZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYuZnNwYXRoKGIpKQorCisgICAgZGVmIHRlc3RfcmV0dXJuX3N0cmluZyhzZWxmKToKKyAgICAgICAgZm9yIHMgaW4gJ2hlbGxvJywgJ2dvb2RieWUnLCAnc29tZS9wYXRoL2FuZC9maWxlJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgc2VsZi5mc3BhdGgocykpCisKKyAgICBkZWYgdGVzdF9mc2VuY29kZV9mc2RlY29kZShzZWxmKToKKyAgICAgICAgZm9yIHAgaW4gInBhdGgvbGlrZS9vYmplY3QiLCBiInBhdGgvbGlrZS9vYmplY3QiOgorICAgICAgICAgICAgcGF0aGxpa2UgPSBfUGF0aExpa2UocCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBzZWxmLmZzcGF0aChwYXRobGlrZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIicGF0aC9saWtlL29iamVjdCIsIG9zLmZzZW5jb2RlKHBhdGhsaWtlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInBhdGgvbGlrZS9vYmplY3QiLCBvcy5mc2RlY29kZShwYXRobGlrZSkpCisKKyAgICBkZWYgdGVzdF9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnI2ZlZWx0aGVnaWwnLCBzZWxmLmZzcGF0aChfUGF0aExpa2UoJyNmZWVsdGhlZ2lsJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhfUGF0aExpa2UsIG9zLlBhdGhMaWtlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoX1BhdGhMaWtlKCksIG9zLlBhdGhMaWtlKSkKKworICAgIGRlZiB0ZXN0X2dhcmJhZ2VfaW5fZXhjZXB0aW9uX291dChzZWxmKToKKyAgICAgICAgdmFwb3IgPSB0eXBlKCdibGFoJywgKCksIHt9KQorICAgICAgICBmb3IgbyBpbiBpbnQsIHR5cGUsIG9zLCB2YXBvcigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgbykKKworICAgIGRlZiB0ZXN0X2FyZ3VtZW50X3JlcXVpcmVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoKQorCisgICAgZGVmIHRlc3RfYmFkX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICAjIF9fZnNwYXRoX18gcmV0dXJucyBhIHZhbHVlIG90aGVyIHRoYW4gc3RyIG9yIGJ5dGVzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBfUGF0aExpa2UoNDIpKQorICAgICAgICAjIF9fZnNwYXRoX18gYXR0cmlidXRlIHRoYXQgaXMgbm90IGNhbGxhYmxlLgorICAgICAgICBjID0gdHlwZSgnZm9vJywgKCksIHt9KQorICAgICAgICBjLl9fZnNwYXRoX18gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIGMoKSkKKyAgICAgICAgIyBfX2ZzcGF0aF9fIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBzZWxmLmZzcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX1BhdGhMaWtlKFplcm9EaXZpc2lvbkVycm9yKCkpKQorCisjIE9ubHkgdGVzdCBpZiB0aGUgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgVGVzdFBFUDUxOSBhbHJlYWR5IHRlc3RlZAorIyB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCitpZiBoYXNhdHRyKG9zLCAiX2ZzcGF0aCIpOgorICAgIGNsYXNzIFRlc3RQRVA1MTlQdXJlUHl0aG9uKFRlc3RQRVA1MTkpOgorCisgICAgICAgICIiIkV4cGxpY2l0bHkgdGVzdCB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygb3MuZnNwYXRoKCkuIiIiCisKKyAgICAgICAgZnNwYXRoID0gc3RhdGljbWV0aG9kKG9zLl9mc3BhdGgpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKaW5kZXggYWI2NTc3Zi4uZDZlNmY3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgcGFyc2VyCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xMzksNiArMTM4LDQ1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgPSBiIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYSA9IGIgPSBjID0gZCA9IGUiKQogCisgICAgZGVmIHRlc3RfdmFyX2Fubm90KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiBpbnQgPSA1IikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieTogTGlzdFtUXSA9IFtdOyB6OiBbbGlzdF0gPSBmdW4oKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IHR1cGxlID0gKDEsIDIpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZFtmKCldOiBpbnQgPSA0MiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImYoZFt4XSk6IHN0ciA9ICdhYmMnIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieC55LnoudzogY29tcGxleCA9IDQyaiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IGludCIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHNlbGYueDogaW50ID0geFxuIikKKyAgICAgICAgIyBkb3VibGUgY2hlY2sgZm9yIG5vbnNlbnNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiMisyOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiW106IGludCA9IDUiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieCwgKnksIHo6IGludCA9IHJhbmdlKDUpIiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInQ6IHR1cGxlID0gMSwgMiIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ1ID0gdjogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIkZhbHNlOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieC5GYWxzZTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIngueSw6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJbMF06IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJmKCk6IGludCIsIHt9LCB7fSkKKwogICAgIGRlZiB0ZXN0X3NpbXBsZV9hdWdtZW50ZWRfYXNzaWdubWVudHMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgKz0gYiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgLT0gYiIpCkBAIC02MzMsMTIgKzY3MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKLSAgICAgICAgZm9yIGZpbGVuYW1lIGluICgnZmlsZS5weScsIGInZmlsZS5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluICdmaWxlLnB5JywgYidmaWxlLnB5JzoKICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQogICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXJzZXIuY29tcGlsZXN0LCBzdCwgbGlzdChiJ2ZpbGUucHknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdC5jb21waWxlLCBsaXN0KGInZmlsZS5weScpKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKaW5kZXggZmE5NmQ5Zi4uZjk4YzFmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQpAQCAtMTkwLDEzICsxOTAsMTggQEAKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHAgPSBQKCdhJykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIFApCisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICJhL2IvYyIKICAgICAgICAgUCgnYScsICdiJywgJ2MnKQogICAgICAgICBQKCcvYScsICdiJywgJ2MnKQogICAgICAgICBQKCdhL2IvYycpCiAgICAgICAgIFAoJy9hL2IvYycpCisgICAgICAgIFAoUGF0aExpa2UoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSksIFAoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgJ2InKSwgUCgnYS9iJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksIFAoJ2InKSksIFAoJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJyksIFAoJ2MnKSksIFAoUGF0aExpa2UoKSkpCiAKICAgICBkZWYgX2NoZWNrX3N0cl9zdWJjbGFzcyhzZWxmLCAqYXJncyk6CiAgICAgICAgICMgSXNzdWUgIzIxMTI3OiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY29uc3RydWN0IGEgUHVyZVBhdGggb2JqZWN0CkBAIC0zODQsNiArMzg5LDEyIEBACiAgICAgICAgIHBhcnRzID0gcC5wYXJ0cwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzLCAoc2VwLCAnYScsICdiJykpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ2EvYicpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihwLl9fZnNwYXRoX18oKSwgKCdhL2InLCkpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihvcy5mc3BhdGgocCksICgnYS9iJywpKQorCiAgICAgZGVmIHRlc3RfZXF1aXZhbGVuY2VzKHNlbGYpOgogICAgICAgICBmb3IgaywgdHVwbGVzIGluIHNlbGYuZXF1aXZhbGVuY2VzLml0ZW1zKCk6CiAgICAgICAgICAgICBjYW5vbiA9IGsucmVwbGFjZSgnLycsIHNlbGYuc2VwKQpAQCAtMTQ3NCwyMSArMTQ4NSwzMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoImRpckEvLi4vZmlsZSoiKSksIHsgUChCQVNFLCAiZGlyQS8uLi9maWxlQSIpIH0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xvYigiLi4veHl6enkiKSksIHNldCgpKQogCi0gICAgZGVmIF9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHNlbGYsIHAsIGV4cGVjdGVkKToKLSAgICAgICAgcSA9IHAucmVzb2x2ZSgpCisKKyAgICBkZWYgX2NoZWNrX3Jlc29sdmUoc2VsZiwgcCwgZXhwZWN0ZWQsIHN0cmljdD1UcnVlKToKKyAgICAgICAgcSA9IHAucmVzb2x2ZShzdHJpY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwgZXhwZWN0ZWQpCiAKLSAgICBkZWYgX2NoZWNrX3Jlc29sdmVfYWJzb2x1dGUoc2VsZiwgcCwgZXhwZWN0ZWQpOgotICAgICAgICBxID0gcC5yZXNvbHZlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLCBleHBlY3RlZCkKKyAgICAjIHRoaXMgY2FuIGJlIHVzZWQgdG8gY2hlY2sgYm90aCByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcmVzb2x1dGlvbnMKKyAgICBfY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZSA9IF9jaGVja19yZXNvbHZlX2Fic29sdXRlID0gX2NoZWNrX3Jlc29sdmUKIAogICAgIEB3aXRoX3N5bWxpbmtzCiAgICAgZGVmIHRlc3RfcmVzb2x2ZV9jb21tb24oc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwogICAgICAgICBwID0gUChCQVNFLCAnZm9vJykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHAucmVzb2x2ZSgpCisgICAgICAgICAgICBwLnJlc29sdmUoc3RyaWN0PVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwLnJlc29sdmUoc3RyaWN0PUZhbHNlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKEJBU0UsICdmb28nKSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIocC5yZXNvbHZlKHN0cmljdD1GYWxzZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihCQVNFLCAnZm9vJykpCisgICAgICAgIHAgPSBQKEJBU0UsICcuLicsICdmb28nLCAnaW4nLCAnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHAucmVzb2x2ZShzdHJpY3Q9RmFsc2UpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKCdmb28nKSkpCiAgICAgICAgICMgVGhlc2UgYXJlIGFsbCByZWxhdGl2ZSBzeW1saW5rcwogICAgICAgICBwID0gUChCQVNFLCAnZGlyQicsICdmaWxlQicpCiAgICAgICAgIHNlbGYuX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUocCwgcCkKQEAgLTE0OTgsNiArMTUxOCwxOCBAQAogICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKICAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckInLCAnbGlua0QnLCAnZmlsZUInKQogICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKKyAgICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtDJywgJ2ZpbGVCJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZpbGVCJywgJ2ZvbycpLCBGYWxzZSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua0MnLCAnLi4nLCAnZm9vJywgJ2luJywgJ3NwYW0nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIEluIFdpbmRvd3MsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQVxsaW5rWVwuLicKKyAgICAgICAgICAgICMgcmVzb2x2ZXMgdG8gJ2RpckEnIHdpdGhvdXQgcmVzb2x2aW5nIGxpbmtZIGZpcnN0LgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJBJywgJ2ZvbycpLCBGYWxzZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgSW4gUG9zaXgsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQS9saW5rWS8uLicKKyAgICAgICAgICAgICMgcmVzb2x2ZXMgdG8gJ2RpckIvLi4nIGZpcnN0IGJlZm9yZSByZXNvbHZpbmcgdG8gcGFyZW50IG9mIGRpckIuCisgICAgICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHAsIFAoQkFTRSwgJ2ZvbycpLCBGYWxzZSkKICAgICAgICAgIyBOb3cgY3JlYXRlIGFic29sdXRlIHN5bWxpbmtzCiAgICAgICAgIGQgPSB0ZW1wZmlsZS5ta2R0ZW1wKHN1ZmZpeD0nLWRpckQnKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIGQpCkBAIC0xNTA1LDYgKzE1MzcsMTggQEAKICAgICAgICAgb3Muc3ltbGluayhqb2luKCdkaXJCJyksIG9zLnBhdGguam9pbihkLCAnbGlua1knKSkKICAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua1gnLCAnbGlua1knLCAnZmlsZUInKQogICAgICAgICBzZWxmLl9jaGVja19yZXNvbHZlX2Fic29sdXRlKHAsIFAoQkFTRSwgJ2RpckInLCAnZmlsZUInKSkKKyAgICAgICAgIyBOb24tc3RyaWN0CisgICAgICAgIHAgPSBQKEJBU0UsICdkaXJBJywgJ2xpbmtYJywgJ2xpbmtZJywgJ2ZvbycsICdpbicsICdzcGFtJykKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdkaXJCJywgJ2ZvbycpLCBGYWxzZSkKKyAgICAgICAgcCA9IFAoQkFTRSwgJ2RpckEnLCAnbGlua1gnLCAnbGlua1knLCAnLi4nLCAnZm9vJywgJ2luJywgJ3NwYW0nKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIEluIFdpbmRvd3MsIGlmIGxpbmtZIHBvaW50cyB0byBkaXJCLCAnZGlyQVxsaW5rWVwuLicKKyAgICAgICAgICAgICMgcmVzb2x2ZXMgdG8gJ2RpckEnIHdpdGhvdXQgcmVzb2x2aW5nIGxpbmtZIGZpcnN0LgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKGQsICdmb28nKSwgRmFsc2UpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEluIFBvc2l4LCBpZiBsaW5rWSBwb2ludHMgdG8gZGlyQiwgJ2RpckEvbGlua1kvLi4nCisgICAgICAgICAgICAjIHJlc29sdmVzIHRvICdkaXJCLy4uJyBmaXJzdCBiZWZvcmUgcmVzb2x2aW5nIHRvIHBhcmVudCBvZiBkaXJCLgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZShwLCBQKEJBU0UsICdmb28nKSwgRmFsc2UpCiAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfZG90KHNlbGYpOgpAQCAtMTUxNCw3ICsxNTU4LDExIEBACiAgICAgICAgIHNlbGYuZGlybGluayhvcy5wYXRoLmpvaW4oJzAnLCAnMCcpLCBqb2luKCcxJykpCiAgICAgICAgIHNlbGYuZGlybGluayhvcy5wYXRoLmpvaW4oJzEnLCAnMScpLCBqb2luKCcyJykpCiAgICAgICAgIHEgPSBwIC8gJzInCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5yZXNvbHZlKCksIHApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5yZXNvbHZlKHN0cmljdD1UcnVlKSwgcCkKKyAgICAgICAgciA9IHEgLyAnMycgLyAnNCcKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHIucmVzb2x2ZSwgc3RyaWN0PVRydWUpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucmVzb2x2ZShzdHJpY3Q9RmFsc2UpLCBwIC8gJzMnKQogCiAgICAgZGVmIHRlc3Rfd2l0aChzZWxmKToKICAgICAgICAgcCA9IHNlbGYuY2xzKEJBU0UpCkBAIC0xOTYxLDEwICsyMDA5LDEwIEBACiBjbGFzcyBQb3NpeFBhdGhUZXN0KF9CYXNlUGF0aFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBjbHMgPSBwYXRobGliLlBvc2l4UGF0aAogCi0gICAgZGVmIF9jaGVja19zeW1saW5rX2xvb3Aoc2VsZiwgKmFyZ3MpOgorICAgIGRlZiBfY2hlY2tfc3ltbGlua19sb29wKHNlbGYsICphcmdzLCBzdHJpY3Q9VHJ1ZSk6CiAgICAgICAgIHBhdGggPSBzZWxmLmNscygqYXJncykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgotICAgICAgICAgICAgcHJpbnQocGF0aC5yZXNvbHZlKCkpCisgICAgICAgICAgICBwcmludChwYXRoLnJlc29sdmUoc3RyaWN0KSkKIAogICAgIGRlZiB0ZXN0X29wZW5fbW9kZShzZWxmKToKICAgICAgICAgb2xkX21hc2sgPSBvcy51bWFzaygwKQpAQCAtMTk5Nyw3ICsyMDQ1LDYgQEAKIAogICAgIEB3aXRoX3N5bWxpbmtzCiAgICAgZGVmIHRlc3RfcmVzb2x2ZV9sb29wKHNlbGYpOgotICAgICAgICAjIExvb3AgZGV0ZWN0aW9uIGZvciBicm9rZW4gc3ltbGlua3MgdW5kZXIgUE9TSVgKICAgICAgICAgIyBMb29wcyB3aXRoIHJlbGF0aXZlIHN5bWxpbmtzCiAgICAgICAgIG9zLnN5bWxpbmsoJ2xpbmtYL2luc2lkZScsIGpvaW4oJ2xpbmtYJykpCiAgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1gnKQpAQCAtMjAwNSw2ICsyMDUyLDggQEAKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWScpCiAgICAgICAgIG9zLnN5bWxpbmsoJ2xpbmtaLy4uL2xpbmtaJywgam9pbignbGlua1onKSkKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rWicpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtaJywgJ2ZvbycsIHN0cmljdD1GYWxzZSkKICAgICAgICAgIyBMb29wcyB3aXRoIGFic29sdXRlIHN5bWxpbmtzCiAgICAgICAgIG9zLnN5bWxpbmsoam9pbignbGlua1UvaW5zaWRlJyksIGpvaW4oJ2xpbmtVJykpCiAgICAgICAgIHNlbGYuX2NoZWNrX3N5bWxpbmtfbG9vcChCQVNFLCAnbGlua1UnKQpAQCAtMjAxMiw2ICsyMDYxLDggQEAKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rVicpCiAgICAgICAgIG9zLnN5bWxpbmsoam9pbignbGlua1cvLi4vbGlua1cnKSwgam9pbignbGlua1cnKSkKICAgICAgICAgc2VsZi5fY2hlY2tfc3ltbGlua19sb29wKEJBU0UsICdsaW5rVycpCisgICAgICAgICMgTm9uLXN0cmljdAorICAgICAgICBzZWxmLl9jaGVja19zeW1saW5rX2xvb3AoQkFTRSwgJ2xpbmtXJywgJ2ZvbycsIHN0cmljdD1GYWxzZSkKIAogICAgIGRlZiB0ZXN0X2dsb2Ioc2VsZik6CiAgICAgICAgIFAgPSBzZWxmLmNscwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZGIucHkgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQppbmRleCA2NmE3YjU1Li4wZWEyYWY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQpAQCAtMSw2ICsxLDcgQEAKICMgQSB0ZXN0IHN1aXRlIGZvciBwZGI7IG5vdCB2ZXJ5IGNvbXByZWhlbnNpdmUgYXQgdGhlIG1vbWVudC4KIAogaW1wb3J0IGRvY3Rlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHBkYgogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCkBAIC0zNCw3ICszNSw3IEBACiAgICAgIiIiVGhpcyB0ZXN0cyB0aGUgY3VzdG9tIGRpc3BsYXlob29rIGZvciBwZGIuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oZm9vLCBiYXIpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBwYXNzCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNzQsNyArNzUsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIGZvby51cHBlcigpCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIC4uLiAgICAgcHJpbnQocmV0KQogCkBAIC0xNzMsNyArMTc0LDcgQEAKICAgICAiIiJUZXN0IGJhc2ljIGNvbW1hbmRzIHJlbGF0ZWQgdG8gYnJlYWtwb2ludHMuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcHJpbnQoMSkKICAgICAuLi4gICAgIHByaW50KDIpCiAgICAgLi4uICAgICBwcmludCgzKQpAQCAtMzA1LDcgKzMwNiw3IEBACiAgICAgLi4uICAgICByZXR1cm4gZm9vCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsgICMgZG9jdGVzdDogK0VMTElQU0lTLCArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTMyOCw3ICszMjksNyBAQAogICAgIC0+IHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICAoUGRiKSBsaXN0CiAgICAgICAxICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAgIDMgIC0+ICAgICAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIFtFT0ZdCiAgICAgKFBkYikgc3RlcApAQCAtMzkxLDcgKzM5Miw3IEBACiAgICAgLi4uICAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiEnKQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICBwcmludCgnTm90IHJlYWNoZWQuJykKIApAQCAtNDI0LDcgKzQyNSw3IEBACiAgICAgLT4gMS8wCiAgICAgKFBkYikgbGlzdAogICAgICAgMSAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAzICAtPiAgICAgICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgICA0ICAgICAgICAgICAgIHByaW50KCdOb3QgcmVhY2hlZC4nKQogICAgIFtFT0ZdCkBAIC00NDgsNyArNDQ5LDcgQEAKIAogICAgID4+PiBkZWYgc2tpcF9tb2R1bGUoKToKICAgICAuLi4gICAgIGltcG9ydCBzdHJpbmcKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ3N0cmkqJ10sIG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydzdHJpKiddLCBub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBzdHJpbmcuY2Fwd29yZHMoJ0ZPTycpCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNDc3LDcgKzQ3OCw3IEBACiAgICAgPj4+IGRlZiBza2lwX21vZHVsZSgpOgogICAgIC4uLiAgICAgZGVmIGNhbGxiYWNrKCk6CiAgICAgLi4uICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ21vZHVsZV90b19za2lwKiddLCBub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnbW9kdWxlX3RvX3NraXAqJ10sIG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIG1vZC5mb29fcG9ueShjYWxsYmFjaykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCkBAIC01MTgsNyArNTE5LDcgQEAKICAgICAiIiJUZXN0IHRoYXQgImNvbnRpbnVlIiBhbmQgIm5leHQiIHdvcmsgcHJvcGVybHkgaW4gYm90dG9tIGZyYW1lIChpc3N1ZSAjNTI5NCkuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGIsIHN5czsgaW5zdCA9IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkKKyAgICAuLi4gICAgIGltcG9ydCBwZGIsIHN5czsgaW5zdCA9IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKQogICAgIC4uLiAgICAgaW5zdC5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaW5zdC5ib3RmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKSAgIyBoYWNrZXJ5IHRvIGdldCB0aGUgcmlnaHQgYm90ZnJhbWUKICAgICAuLi4gICAgIHByaW50KDEpCkBAIC01NTgsOCArNTU5LDcgQEAKIAogZGVmIHBkYl9pbnZva2UobWV0aG9kLCBhcmcpOgogICAgICIiIlJ1biBwZGIubWV0aG9kKGFyZykuIiIiCi0gICAgaW1wb3J0IHBkYgotICAgIGdldGF0dHIocGRiLlBkYihub3NpZ2ludD1UcnVlKSwgbWV0aG9kKShhcmcpCisgICAgZ2V0YXR0cihwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSksIG1ldGhvZCkoYXJnKQogCiAKIGRlZiB0ZXN0X3BkYl9ydW5fd2l0aF9pbmNvcnJlY3RfYXJndW1lbnQoKToKQEAgLTYwOCw3ICs2MDgsNyBAQAogICAgIC4uLiAgICAgeCA9IDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCkBAIC02NzQsNyArNjc0LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBpdCA9IHRlc3RfZ2VuKCkKICAgICAuLi4gICAgIHRyeToKICAgICAuLi4gICAgICAgICBpZiBuZXh0KGl0KSAhPSAwOgpAQCAtNzM0LDcgKzczNCw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaXQgPSB0ZXN0X2dlbigpCiAgICAgLi4uICAgICB0cnk6CiAgICAgLi4uICAgICAgICAgaWYgbmV4dChpdCkgIT0gMDoKQEAgLTc4OSw3ICs3ODksNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoaSkKICAgICAuLi4gICAgIHByaW50KCJmaW5pc2hlZCIpCkBAIC04MzEsNyArODMxLDcgQEAKICAgICAuLi4gICAgIHJldHVybiAxCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgZm9yIGkgaW4gdGVzdF9nZW4oKToKICAgICAuLi4gICAgICAgICBwcmludCgndmFsdWUnLCBpKQogICAgIC4uLiAgICAgeCA9IDEyMwpAQCAtODc2LDcgKzg3Niw3IEBACiAgICAgLi4uICAgICByZXR1cm4geAogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoJ3ZhbHVlJywgaSkKICAgICAuLi4gICAgIHggPSAxMjMKQEAgLTEwNDksNyArMTA0OSw3IEBACiAgICAgICAgICAgICAgICAgaW1wb3J0IHBkYgogCiAgICAgICAgICAgICAgICAgZGVmIHN0YXJ0X3BkYigpOgotICAgICAgICAgICAgICAgICAgICBwZGIuUGRiKCkuc2V0X3RyYWNlKCkKKyAgICAgICAgICAgICAgICAgICAgcGRiLlBkYihyZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAgICAgICAgICAgICAgIHggPSAxCiAgICAgICAgICAgICAgICAgICAgIHkgPSAxCiAKQEAgLTEwNzgsNiArMTA3OCwzOCBAQAogICAgICAgICAgICAgLmZvcm1hdChleHBlY3RlZCwgc3Rkb3V0KSkKIAogCisgICAgZGVmIHRlc3RfcmVhZHJjX2t3YXJnKHNlbGYpOgorICAgICAgICBzY3JpcHQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKKworICAgICAgICAgICAgcHJpbnQoJ2hlbGxvJykKKyAgICAgICAgIiIiKQorCisgICAgICAgIHNhdmVfaG9tZSA9IG9zLmVudmlyb24ucG9wKCdIT01FJywgTm9uZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCcucGRicmMnLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoImludmFsaWRcbiIpCisKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJ21haW4ucHknLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2NyaXB0KQorCisgICAgICAgICAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAnbWFpbi5weSddCisgICAgICAgICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oCisgICAgICAgICAgICAgICAgICAgIGNtZCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB3aXRoIHByb2M6CisgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZShiJ3FcbicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIk5hbWVFcnJvcjogbmFtZSAnaW52YWxpZCcgaXMgbm90IGRlZmluZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC5kZWNvZGUoKSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc2F2ZV9ob21lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG9zLmVudmlyb25bJ0hPTUUnXSA9IHNhdmVfaG9tZQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQppbmRleCA0MWU1MDkxLi5iMDMzNjQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQpAQCAtMSw5ICsxLDggQEAKIGltcG9ydCBkaXMKIGltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIG1hdGggaW1wb3J0IGNvcHlzaWduCiAKIGZyb20gdGVzdC5ieXRlY29kZV9oZWxwZXIgaW1wb3J0IEJ5dGVjb2RlVGVzdENhc2UKIApAQCAtMzAsMjIgKzI5LDI1IEBACiAKICAgICBkZWYgdGVzdF9nbG9iYWxfYXNfY29uc3RhbnQoc2VsZik6CiAgICAgICAgICMgTE9BRF9HTE9CQUwgTm9uZS9UcnVlL0ZhbHNlICAtLT4gIExPQURfQ09OU1QgTm9uZS9UcnVlL0ZhbHNlCi0gICAgICAgIGRlZiBmKHgpOgotICAgICAgICAgICAgTm9uZQotICAgICAgICAgICAgTm9uZQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgeCA9IE5vbmUKKyAgICAgICAgICAgIHggPSBOb25lCiAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICBkZWYgZyh4KToKLSAgICAgICAgICAgIFRydWUKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHggPSBUcnVlCiAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICBkZWYgaCh4KToKLSAgICAgICAgICAgIEZhbHNlCisgICAgICAgIGRlZiBoKCk6CisgICAgICAgICAgICB4ID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiB4CisKICAgICAgICAgZm9yIGZ1bmMsIGVsZW0gaW4gKChmLCBOb25lKSwgKGcsIFRydWUpLCAoaCwgRmFsc2UpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmdW5jLCAnTE9BRF9HTE9CQUwnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGZ1bmMsICdMT0FEX0NPTlNUJywgZWxlbSkKKwogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgJ0FkZGluZyBhIGRvY3N0cmluZyBtYWRlIHRoaXMgdGVzdCBmYWlsIGluIFB5Mi41LjAnCiAgICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmLCAnTE9BRF9HTE9CQUwnKQogICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZiwgJ0xPQURfQ09OU1QnLCBOb25lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTdjZWVkLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotIiIiCi1UZXN0IHN1aXRlIHRvIGNoZWNrIGNvbXBsaWFuY2Ugd2l0aCBQRVAgMjQ3LCB0aGUgc3RhbmRhcmQgQVBJCi1mb3IgaGFzaGluZyBhbGdvcml0aG1zCi0iIiIKLQotaW1wb3J0IGhtYWMKLWltcG9ydCB1bml0dGVzdAotZnJvbSBoYXNobGliIGltcG9ydCBtZDUsIHNoYTEsIHNoYTIyNCwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMgotCi1jbGFzcyBQZXAyNDdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBjaGVja19tb2R1bGUoc2VsZiwgbW9kdWxlLCBrZXk9Tm9uZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2RpZ2VzdF9zaXplJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUuZGlnZXN0X3NpemUgaXMgTm9uZSBvciBtb2R1bGUuZGlnZXN0X3NpemUgPiAwKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChtb2R1bGUubmV3LCBtb2R1bGUuZGlnZXN0X3NpemUsIGtleSkKLQotICAgIGRlZiBjaGVja19vYmplY3Qoc2VsZiwgY2xzLCBkaWdlc3Rfc2l6ZSwga2V5LCBkaWdlc3Rtb2Q9Tm9uZSk6Ci0gICAgICAgIGlmIGtleSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIGRpZ2VzdG1vZCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRpZ2VzdG1vZCA9IG1kNQotICAgICAgICAgICAgb2JqMSA9IGNscyhrZXksIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBvYmoyID0gY2xzKGtleSwgYidzdHJpbmcnLCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgaDEgPSBjbHMoa2V5LCBiJ3N0cmluZycsIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpLmRpZ2VzdCgpCi0gICAgICAgICAgICBvYmozID0gY2xzKGtleSwgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIG9iajMudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgyID0gb2JqMy5kaWdlc3QoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb2JqMSA9IGNscygpCi0gICAgICAgICAgICBvYmoyID0gY2xzKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgxID0gY2xzKGInc3RyaW5nJykuZGlnZXN0KCkKLSAgICAgICAgICAgIG9iajMgPSBjbHMoKQotICAgICAgICAgICAgb2JqMy51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICAgICAgaDIgPSBvYmozLmRpZ2VzdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvYmoxLCAnZGlnZXN0X3NpemUnKSkKLQotICAgICAgICBpZiBkaWdlc3Rfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdF9zaXplLCBsZW4oaDEpKQotICAgICAgICBvYmoxLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgIG9ial9jb3B5ID0gb2JqMS5jb3B5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdCgpLCBvYmpfY29weS5kaWdlc3QoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmhleGRpZ2VzdCgpLCBvYmpfY29weS5oZXhkaWdlc3QoKSkKLQotICAgICAgICBkaWdlc3QsIGhleGRpZ2VzdCA9IG9iajEuZGlnZXN0KCksIG9iajEuaGV4ZGlnZXN0KCkKLSAgICAgICAgaGQyID0gIiIKLSAgICAgICAgZm9yIGJ5dGUgaW4gZGlnZXN0OgotICAgICAgICAgICAgaGQyICs9ICclMDJ4JyAlIGJ5dGUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZDIsIGhleGRpZ2VzdCkKLQotICAgIGRlZiB0ZXN0X21kNShzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3QobWQ1LCBOb25lLCBOb25lKQotCi0gICAgZGVmIHRlc3Rfc2hhKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGExLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEyMjQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTI1NiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMzg0LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGE1MTIsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9obWFjKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX21vZHVsZShobWFjLCBrZXk9YidhYmMnKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQppbmRleCBkNDY3ZDUyLi5lNmM1ZDA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQpAQCAtMzQsOCArMzQsNiBAQAogCiAgICAgdW5waWNrbGVyID0gcGlja2xlLl9VbnBpY2tsZXIKICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKEluZGV4RXJyb3IsKQotICAgIGJhZF9tYXJrX2Vycm9ycyA9IChJbmRleEVycm9yLCBwaWNrbGUuVW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBFT0ZFcnJvcikKICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuZXJyb3IsIEluZGV4RXJyb3IsIEltcG9ydEVycm9yKQpAQCAtNzAsOCArNjgsNiBAQAogICAgIHBpY2tsZXIgPSBwaWNrbGUuX1BpY2tsZXIKICAgICB1bnBpY2tsZXIgPSBwaWNrbGUuX1VucGlja2xlcgogICAgIGJhZF9zdGFja19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgSW5kZXhFcnJvcikKLSAgICBiYWRfbWFya19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgRU9GRXJyb3IpCiAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmVycm9yLCBJbmRleEVycm9yLCBJbXBvcnRFcnJvcikKQEAgLTE0Myw5ICsxMzksNyBAQAogICAgIGNsYXNzIENVbnBpY2tsZXJUZXN0cyhQeVVucGlja2xlclRlc3RzKToKICAgICAgICAgdW5waWNrbGVyID0gX3BpY2tsZS5VbnBpY2tsZXIKICAgICAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCkKLSAgICAgICAgYmFkX21hcmtfZXJyb3JzID0gKEVPRkVycm9yLCkKLSAgICAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcikKKyAgICAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCkKIAogICAgIGNsYXNzIENQaWNrbGVyVGVzdHMoUHlQaWNrbGVyVGVzdHMpOgogICAgICAgICBwaWNrbGVyID0gX3BpY2tsZS5QaWNrbGVyCkBAIC0zNDEsNiArMzM1LDkgQEAKICAgICAgICAgICAgICAgICBpZiAobW9kdWxlMiwgbmFtZTIpID09ICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJyk6CiAgICAgICAgICAgICAgICAgICAgIGF0dHIgPSBnZXRhdHRyaWJ1dGUobW9kdWxlMywgbmFtZTMpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGF0dHIsIE9TRXJyb3IpKQorICAgICAgICAgICAgICAgIGVsaWYgKG1vZHVsZTIsIG5hbWUyKSA9PSAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKToKKyAgICAgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHJpYnV0ZShtb2R1bGUzLCBuYW1lMykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXR0ciwgSW1wb3J0RXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgbmFtZSA9IG1hcHBpbmcobW9kdWxlMiwgbmFtZTIpCiAgICAgICAgICAgICAgICAgICAgIGlmIG1vZHVsZTNbOjFdICE9ICdfJzoKQEAgLTQwNyw2ICs0MDQsMTEgQEAKICAgICAgICAgICAgICAgICBpZiBleGMgaXMgbm90IE9TRXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgJ09TRXJyb3InKSkKKyAgICAgICAgICAgICAgICBlbGlmIGV4YyBpcyBub3QgSW1wb3J0RXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hcHBpbmcoJ2V4Y2VwdGlvbnMnLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCBuYW1lKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCBuYW1lKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CmluZGV4IGJiZTY4NzUuLjg2YmViZmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQpAQCAtMSw5ICsxLDkgQEAKLWltcG9ydCBzdHJ1Y3QKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBwaWNrbGV0b29scwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzCitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgT3B0aW1pemVkUGlja2xlVGVzdHMoQWJzdHJhY3RQaWNrbGVUZXN0cywgQWJzdHJhY3RQaWNrbGVNb2R1bGVUZXN0cyk6CiAKQEAgLTU5LDggKzU5LDQwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocGlja2xlLkJJTlBVVCwgcGlja2xlZDIpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnYnl0ZXNfdHlwZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ1VQX1RPX05FV0xJTkUnLCAnVEFLRU5fRlJPTV9BUkdVTUVOVDEnLAorICAgICAgICAgICAgICAgICAgICAgJ1RBS0VOX0ZST01fQVJHVU1FTlQ0JywgJ1RBS0VOX0ZST01fQVJHVU1FTlQ0VScsCisgICAgICAgICAgICAgICAgICAgICAnVEFLRU5fRlJPTV9BUkdVTUVOVDhVJywgJ0FyZ3VtZW50RGVzY3JpcHRvcicsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91aW50MScsICdyZWFkX3VpbnQyJywgJ3JlYWRfaW50NCcsICdyZWFkX3VpbnQ0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VpbnQ4JywgJ3JlYWRfc3RyaW5nbmwnLCAncmVhZF9zdHJpbmdubF9ub2VzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9zdHJpbmdubF9ub2VzY2FwZV9wYWlyJywgJ3JlYWRfc3RyaW5nMScsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9zdHJpbmc0JywgJ3JlYWRfYnl0ZXMxJywgJ3JlYWRfYnl0ZXM0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2J5dGVzOCcsICdyZWFkX3VuaWNvZGVzdHJpbmdubCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91bmljb2Rlc3RyaW5nMScsICdyZWFkX3VuaWNvZGVzdHJpbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VuaWNvZGVzdHJpbmc4JywgJ3JlYWRfZGVjaW1hbG5sX3Nob3J0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2RlY2ltYWxubF9sb25nJywgJ3JlYWRfZmxvYXRubCcsICdyZWFkX2Zsb2F0OCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9sb25nMScsICdyZWFkX2xvbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICd1aW50MScsICd1aW50MicsICdpbnQ0JywgJ3VpbnQ0JywgJ3VpbnQ4JywgJ3N0cmluZ25sJywKKyAgICAgICAgICAgICAgICAgICAgICdzdHJpbmdubF9ub2VzY2FwZScsICdzdHJpbmdubF9ub2VzY2FwZV9wYWlyJywgJ3N0cmluZzEnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZzQnLCAnYnl0ZXMxJywgJ2J5dGVzNCcsICdieXRlczgnLAorICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVzdHJpbmdubCcsICd1bmljb2Rlc3RyaW5nMScsICd1bmljb2Rlc3RyaW5nNCcsCisgICAgICAgICAgICAgICAgICAgICAndW5pY29kZXN0cmluZzgnLCAnZGVjaW1hbG5sX3Nob3J0JywgJ2RlY2ltYWxubF9sb25nJywKKyAgICAgICAgICAgICAgICAgICAgICdmbG9hdG5sJywgJ2Zsb2F0OCcsICdsb25nMScsICdsb25nNCcsCisgICAgICAgICAgICAgICAgICAgICAnU3RhY2tPYmplY3QnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5aW50JywgJ3B5bG9uZycsICdweWludGVnZXJfb3JfYm9vbCcsICdweWJvb2wnLCAncHlmbG9hdCcsCisgICAgICAgICAgICAgICAgICAgICAncHlieXRlc19vcl9zdHInLCAncHlzdHJpbmcnLCAncHlieXRlcycsICdweXVuaWNvZGUnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5bm9uZScsICdweXR1cGxlJywgJ3B5bGlzdCcsICdweWRpY3QnLCAncHlzZXQnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5ZnJvemVuc2V0JywgJ2FueW9iamVjdCcsICdtYXJrb2JqZWN0JywgJ3N0YWNrc2xpY2UnLAorICAgICAgICAgICAgICAgICAgICAgJ09wY29kZUluZm8nLCAnb3Bjb2RlcycsICdjb2RlMm9wJywKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgcGlja2xldG9vbHMsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE9wdGltaXplZFBpY2tsZVRlc3RzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1pc2NUZXN0Q2FzZSkKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHBpY2tsZXRvb2xzKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CmluZGV4IDZhN2I0NWYuLmFkMDFkMDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQpAQCAtMiw2ICsyLDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc2h1dGlsCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIHVubGluaywgcmVhcF9jaGlsZHJlbgogCiBpZiBvcy5uYW1lICE9ICdwb3NpeCc6CkBAIC0xOCw2ICsxOSw4IEBACiAgICAgICAgICAgICB1bmxpbmsoZikKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTEoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCiAgICAgICAgIHQuYXBwZW5kKHNfY29tbWFuZCwgcGlwZXMuU1RESU5fU1RET1VUKQogICAgICAgICBmID0gdC5vcGVuKFRFU1RGTiwgJ3cnKQpAQCAtMjcsNiArMzAsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJ0hFTExPIFdPUkxEICMxJykKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTIoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ2hlbGxvIHdvcmxkICMyJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKQEAgLTM2LDYgKzQxLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICdIRUxMTyBXT1JMRCAjMicpCiAKICAgICBkZWYgdGVzdFNpbXBsZVBpcGUzKHNlbGYpOgorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3RyJykgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3RyIGlzIG5vdCBhdmFpbGFibGUnKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCdoZWxsbyB3b3JsZCAjMicpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKaW5kZXggYTgyMDU4Ny4uZmMwNGRjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQpAQCAtODEsOCArODEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlczIsIFJFU09VUkNFX0RBVEEpCiAKICAgICAgICAgbmFtZXMgPSBbXQotICAgICAgICBmb3IgbG9hZGVyLCBuYW1lLCBpc3BrZyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbemlwX2ZpbGVdKToKLSAgICAgICAgICAgIG5hbWVzLmFwcGVuZChuYW1lKQorICAgICAgICBmb3IgbW9kdWxlaW5mbyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbemlwX2ZpbGVdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLCBwa2d1dGlsLk1vZHVsZUluZm8pCisgICAgICAgICAgICBuYW1lcy5hcHBlbmQobW9kdWxlaW5mby5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVzLCBbJ3Rlc3RfZ2V0ZGF0YV96aXBmaWxlJ10pCiAKICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCkBAIC00MTMsNiArNDE0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigidGVzdC5zdXBwb3J0IikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoX19uYW1lX18gPT0gJ19fbWFpbl9fJywgJ25vdCBjb21wYXRpYmxlIHdpdGggX19tYWluX18nKQogICAgIGRlZiB0ZXN0X2dldF9sb2FkZXJfaGFuZGxlc19taXNzaW5nX2xvYWRlcl9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGdsb2JhbCBfX2xvYWRlcl9fCiAgICAgICAgIHRoaXNfbG9hZGVyID0gX19sb2FkZXJfXwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weSBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKaW5kZXggMThkZTExMC4uNWY4NzVlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgICAgICAgICAgJ2ltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0uYXJjaGl0ZWN0dXJlKCkpJ10KICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgICAgIHJldHVybiBwLmNvbW11bmljYXRlKCkKKwogICAgICAgICByZWFsID0gb3MucGF0aC5yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgbGluayA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgb3Muc3ltbGluayhyZWFsLCBsaW5rKQpAQCAtMjYyLDcgKzI2Myw3IEBACiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAogICAgICAgICAgICAgICAgICdpZ25vcmUnLAotICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgcidkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCiAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCiAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICkKQEAgLTMzOCw3ICszMzksNyBAQAogICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKaW5kZXggNjkyY2FjNC4uYzc3YTZiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CkBAIC03LDcgKzcsNiBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGJpbmFzY2lpCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCkBAIC01MzQsOCArNTMzLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VyLCBpbl9kYXRhKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7IlBsaXN0Rm9ybWF0IiwgIlBMSVNUSEVBREVSIn0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgcGxpc3RsaWIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQbGlzdGxpYiwgVGVzdFBsaXN0bGliRGVwcmVjYXRlZCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0UGxpc3RsaWIsIFRlc3RQbGlzdGxpYkRlcHJlY2F0ZWQsIE1pc2NUZXN0Q2FzZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCBiY2VlYjkzLi5lNWIxNmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtOCw3ICs4LDYgQEAKIGltcG9ydCBhc3luY2hhdAogaW1wb3J0IHNvY2tldAogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogaW1wb3J0IGVycm5vCiAKIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lwVW5sZXNzCkBAIC0xNTMsMTAgKzE1MiwxMiBAQAogICAgICAgICBkZWYgY21kX3N0bHMoc2VsZiwgYXJnKToKICAgICAgICAgICAgIGlmIHNlbGYudGxzX2FjdGl2ZSBpcyBGYWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJytPSyBCZWdpbiBUTFMgbmVnb3RpYXRpb24nKQotICAgICAgICAgICAgICAgIHRsc19zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBjZXJ0ZmlsZT1DRVJURklMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICAgICAgdGxzX3NvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCiAgICAgICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHRsc19zb2NrKQogICAgICAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CmluZGV4IDJhNTljMzguLjYzYzc0Y2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQpAQCAtMTEsNyArMTEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMzk4LDcgKzM5Nyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChmcC5maWxlbm8oKSkpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBmbG9hdChmcC5maWxlbm8oKSkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmcC5jbG9zZSgpCkBAIC00MDgsMTYgKzQwNywxOCBAQAogICAgIGRlZiB0ZXN0X3N0YXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoYnl0ZWFycmF5KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpKQogCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGJ5dGVhcnJheShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnY2FuXCd0IHNwZWNpZnkgTm9uZSBmb3IgcGF0aCBhcmd1bWVudCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBsaXN0KHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGxpc3Qob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdta2ZpZm8nKSwgImRvbid0IGhhdmUgbWtmaWZvKCkiKQpAQCAtNzk4LDcgKzc5OSwxMSBAQAogICAgICAgICAgICAgZ3JvdXBzID0gaWRnLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICByZXQgPSBpZGcuY2xvc2UoKQogCi0gICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgZ3JvdXBzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZGdfZ3JvdXBzID0gc2V0KGludChnKSBmb3IgZyBpbiBncm91cHMuc3BsaXQoKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBpZGdfZ3JvdXBzID0gc2V0KCkKKyAgICAgICAgaWYgcmV0IGlzIG5vdCBOb25lIG9yIG5vdCBpZGdfZ3JvdXBzOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm5lZWQgd29ya2luZyAnaWQgLUcnIikKIAogICAgICAgICAjIElzc3VlcyAxNjY5ODogT1MgWCBBQklzIHByaW9yIHRvIDEwLjYgaGF2ZSBsaW1pdHMgb24gZ2V0Z3JvdXBzKCkKQEAgLTgwOSwxMiArODE0LDExIEBACiAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImdldGdyb3VwcygyKSBpcyBicm9rZW4gcHJpb3IgdG8gMTAuNiIpCiAKICAgICAgICAgIyAnaWQgLUcnIGFuZCAnb3MuZ2V0Z3JvdXBzKCknIHNob3VsZCByZXR1cm4gdGhlIHNhbWUKLSAgICAgICAgIyBncm91cHMsIGlnbm9yaW5nIG9yZGVyIGFuZCBkdXBsaWNhdGVzLgotICAgICAgICAjICMxMDgyMiAtIGl0IGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQgd2hldGhlciBwb3NpeC5nZXRncm91cHMoKQotICAgICAgICAjIGluY2x1ZGVzIHRoZSBlZmZlY3RpdmUgZ2lkIHNvIHdlIGluY2x1ZGUgaXQgYW55d2F5LCBzaW5jZSBpZCAtRyBkb2VzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2V0KFtpbnQoeCkgZm9yIHggaW4gZ3JvdXBzLnNwbGl0KCldKSwKLSAgICAgICAgICAgICAgICBzZXQocG9zaXguZ2V0Z3JvdXBzKCkgKyBbcG9zaXguZ2V0ZWdpZCgpXSkpCisgICAgICAgICMgZ3JvdXBzLCBpZ25vcmluZyBvcmRlciwgZHVwbGljYXRlcywgYW5kIHRoZSBlZmZlY3RpdmUgZ2lkLgorICAgICAgICAjICMxMDgyMi8jMjY5NDQgLSBJdCBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHdoZXRoZXIKKyAgICAgICAgIyBwb3NpeC5nZXRncm91cHMoKSBpbmNsdWRlcyB0aGUgZWZmZWN0aXZlIGdpZC4KKyAgICAgICAgc3ltZGlmZiA9IGlkZ19ncm91cHMuc3ltbWV0cmljX2RpZmZlcmVuY2UocG9zaXguZ2V0Z3JvdXBzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc3ltZGlmZiBvciBzeW1kaWZmID09IHtwb3NpeC5nZXRlZ2lkKCl9KQogCiAgICAgIyB0ZXN0cyBmb3IgdGhlIHBvc2l4ICphdCBmdW5jdGlvbnMgZm9sbG93CiAKQEAgLTg2Myw5ICs4NjcsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCiAgICAgICAgICAgICBzMiA9IHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1Ob25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciBvciBOb25lLCBub3QnLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPXBvc2l4LmdldGN3ZCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mbG9hdChmKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9MTAqKjIwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQppbmRleCAwNzgzYzM2Li44YTFlMzNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQpAQCAtNTk2LDUgKzU5Niw4NSBAQAogICAgIGF0dHJpYnV0ZXMgPSBbJ3JlbHBhdGgnLCAnc2FtZWZpbGUnLCAnc2FtZW9wZW5maWxlJywgJ3NhbWVzdGF0J10KIAogCitjbGFzcyBQYXRoTGlrZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHBhdGggPSBwb3NpeHBhdGgKKworICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0nJyk6CisgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9uYW1lID0gc3VwcG9ydC5URVNURk4ubG93ZXIoKQorICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IHNlbGYuUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVfbmFtZSwgJ3hiJywgMCkgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoYiJ0ZXN0X3Bvc2l4cGF0aC5QYXRoTGlrZVRlc3RzIikKKworICAgIGRlZiBhc3NlcnRQYXRoRXF1YWwoc2VsZiwgZnVuYyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyhzZWxmLmZpbGVfcGF0aCksIGZ1bmMoc2VsZi5maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtY2FzZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1jYXNlKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2FicyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzYWJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9qb2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aC5qb2luKCdhJywgc2VsZi5QYXRoTGlrZSgnYicpLCAnYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aC5qb2luKCdhJywgJ2InLCAnYycpKQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZXh0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGRyaXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRkcml2ZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5iYXNlbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZGlybmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmRpcm5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbGluayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbGluaykKKworICAgIGRlZiB0ZXN0X3BhdGhfbGV4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmxleGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbW91bnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc21vdW50KQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR1c2VyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdXNlcikKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdmFycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHZhcnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1wYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybXBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Fic3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5hYnNwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWFscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlYWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfY29tbW9ucGF0aChzZWxmKToKKyAgICAgICAgY29tbW9uX3BhdGggPSBzZWxmLnBhdGguY29tbW9ucGF0aChbc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb25fcGF0aCwgc2VsZi5maWxlX25hbWUpCisKKwogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvdy5weSBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CmluZGV4IDZmZWFjNDAuLmNlOTlmZTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CkBAIC0xLDQgKzEsNCBAQAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBQb3dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdHkucHkgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQppbmRleCBlZjVlOTllLi4xNWY4OGU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQpAQCAtMjc3LDcgKzI3Nyw2IEBACiAgICAgICAgIHNvY2tldHBhaXIgPSBzZWxmLl9zb2NrZXRwYWlyKCkKICAgICAgICAgbWFzdGVycyA9IFtzLmZpbGVubygpIGZvciBzIGluIHNvY2tldHBhaXJdCiAKLSAgICAgICAgb3MuY2xvc2UobWFzdGVyc1sxXSkKICAgICAgICAgc29ja2V0cGFpclsxXS5jbG9zZSgpCiAgICAgICAgIG9zLmNsb3NlKHdyaXRlX3RvX3N0ZGluX2ZkKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKaW5kZXggMTkzMmM2Yi4uM2Q4OWUzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBpbwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgeG1sLnNheAogCiBmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkgYi9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQppbmRleCA2ZmZiYmJkLi4yY2ZmMWM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQpAQCAtMTU2LDkgKzE1Niw5IEBACiAgICAgICAgICMgVGhlc2Ugd2VyZSBvbmNlIGFib3V0IHRoZSAxMCBsb25nZXN0IG1vZHVsZXMKICAgICAgICAgY20oJ3JhbmRvbScsIGlnbm9yZT0oJ1JhbmRvbScsKSkgICMgZnJvbSBfcmFuZG9tIGltcG9ydCBSYW5kb20gYXMgQ29yZUdlbmVyYXRvcgogICAgICAgICBjbSgnY2dpJywgaWdub3JlPSgnbG9nJywpKSAgICAgICMgc2V0IHdpdGggPSBpbiBtb2R1bGUKLSAgICAgICAgY20oJ3BpY2tsZScpCisgICAgICAgIGNtKCdwaWNrbGUnLCBpZ25vcmU9KCdwYXJ0aWFsJywpKQogICAgICAgICBjbSgnYWlmYycsIGlnbm9yZT0oJ29wZW5mcCcsICdfYWlmY19wYXJhbXMnKSkgICMgc2V0IHdpdGggPSBpbiBtb2R1bGUKLSAgICAgICAgY20oJ3NyZV9wYXJzZScsIGlnbm9yZT0oJ2R1bXAnLCAnZ3JvdXBzJykpICMgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqOyBwcm9wZXJ0eQorICAgICAgICBjbSgnc3JlX3BhcnNlJywgaWdub3JlPSgnZHVtcCcsICdncm91cHMnLCAncG9zJykpICMgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqOyBwcm9wZXJ0eQogICAgICAgICBjbSgncGRiJykKICAgICAgICAgY20oJ3B5ZG9jJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weSBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKaW5kZXggMWY3YWI3Zi4uZWQ0MzhkNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CkBAIC04NCw2ICs4NCw4IEBACiAgICAgIHwgIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOgogICAgICB8XHgyMFx4MjAKICAgICAgfCAgTk9fTUVBTklORyA9ICdlZ2dzJworICAgICB8XHgyMFx4MjAKKyAgICAgfCAgX19hbm5vdGF0aW9uc19fID0geydOT19NRUFOSU5HJzogPGNsYXNzICdzdHInPn0KIFx4MjBceDIwXHgyMFx4MjAKICAgICBjbGFzcyBDKGJ1aWx0aW5zLm9iamVjdCkKICAgICAgfCAgTWV0aG9kcyBkZWZpbmVkIGhlcmU6CkBAIC0xOTYsNiArMTk4LDggQEAKIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOjxicj4KIDxkbD48ZHQ+PHN0cm9uZz5OT19NRUFOSU5HPC9zdHJvbmc+ID0gJ2VnZ3MnPC9kbD4KIAorPGRsPjxkdD48c3Ryb25nPl9fYW5ub3RhdGlvbnNfXzwvc3Ryb25nPiA9IHsnTk9fTUVBTklORyc6ICZsdDtjbGFzcyAnc3RyJyZndDt9PC9kbD4KKwogPC90ZD48L3RyPjwvdGFibGU+IDxwPgogPHRhYmxlIHdpZHRoPSIxMDAlJSIgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0yIGJvcmRlcj0wIHN1bW1hcnk9InNlY3Rpb24iPgogPHRyIGJnY29sb3I9IiNmZmM4ZDgiPgpAQCAtMjY0LDcgKzI2OCw3IEBACiBVc2UgaGVscChzdHIpIGZvciBoZWxwIG9uIHRoZSBzdHIgY2xhc3MuJycnLnJlcGxhY2UoJ1xuJywgb3MubGluZXNlcCkKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKLWJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgorYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIE1vZHVsZU5vdEZvdW5kRXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKIAogZXhwZWN0ZWRfZHluYW1pY2F0dHJpYnV0ZV9wYXR0ZXJuID0gIiIiCiBIZWxwIG9uIGNsYXNzIERBIGluIG1vZHVsZSAlczoKQEAgLTYzOSw4ICs2NDMsOSBAQAogICAgICAgICBkZWwgZXhwZWN0ZWRbJ19fZG9jX18nXQogICAgICAgICBkZWwgZXhwZWN0ZWRbJ19fY2xhc3NfXyddCiAgICAgICAgICMgaW5zcGVjdCByZXNvbHZlcyBkZXNjcmlwdG9ycyBvbiB0eXBlIGludG8gbWV0aG9kcywgYnV0IHZhcnMgZG9lc24ndCwKLSAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBfX3N1YmNsYXNzaG9va19fLgorICAgICAgICAjIHNvIHdlIG5lZWQgdG8gdXBkYXRlIF9fc3ViY2xhc3Nob29rX18gYW5kIF9faW5pdF9zdWJjbGFzc19fLgogICAgICAgICBleHBlY3RlZFsnX19zdWJjbGFzc2hvb2tfXyddID0gVGVzdENsYXNzLl9fc3ViY2xhc3Nob29rX18KKyAgICAgICAgZXhwZWN0ZWRbJ19faW5pdF9zdWJjbGFzc19fJ10gPSBUZXN0Q2xhc3MuX19pbml0X3N1YmNsYXNzX18KIAogICAgICAgICBtZXRob2RzID0gcHlkb2MuYWxsbWV0aG9kcyhUZXN0Q2xhc3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKG1ldGhvZHMsIGV4cGVjdGVkKQpAQCAtODY4LDYgKzg3MywyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9zdW1tYXJ5X2xpbmUodC53cmFwKSwKICAgICAgICAgICAgICJ3cmFwKHRleHQpIG1ldGhvZCBvZiB0ZXh0d3JhcC5UZXh0V3JhcHBlciBpbnN0YW5jZSIpCiAKKyAgICBkZWYgdGVzdF9maWVsZF9vcmRlcl9mb3JfbmFtZWRfdHVwbGVzKHNlbGYpOgorICAgICAgICBQZXJzb24gPSBuYW1lZHR1cGxlKCdQZXJzb24nLCBbJ25pY2tuYW1lJywgJ2ZpcnN0bmFtZScsICdhZ2Vncm91cCddKQorICAgICAgICBzID0gcHlkb2MucmVuZGVyX2RvYyhQZXJzb24pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzLmluZGV4KCduaWNrbmFtZScpLCBzLmluZGV4KCdmaXJzdG5hbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHMuaW5kZXgoJ2ZpcnN0bmFtZScpLCBzLmluZGV4KCdhZ2Vncm91cCcpKQorCisgICAgICAgIGNsYXNzIE5vbkl0ZXJhYmxlRmllbGRzOgorICAgICAgICAgICAgX2ZpZWxkcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBOb25IYXNoYWJsZUZpZWxkczoKKyAgICAgICAgICAgIF9maWVsZHMgPSBbW11dCisKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlc2UgZG9lc24ndCBmYWlsCisgICAgICAgIHB5ZG9jLnJlbmRlcl9kb2MoTm9uSXRlcmFibGVGaWVsZHMpCisgICAgICAgIHB5ZG9jLnJlbmRlcl9kb2MoTm9uSGFzaGFibGVGaWVsZHMpCisKICAgICBAcmVxdWlyZXNfZG9jc3RyaW5ncwogICAgIGRlZiB0ZXN0X2JvdW5kX2J1aWx0aW5fbWV0aG9kKHNlbGYpOgogICAgICAgICBzID0gU3RyaW5nSU8oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQppbmRleCA3Y2FjMDEzLi43MTU1NDRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgc3lzLCBvcywgaW8sIHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMsIGlvLCBzdWJwcm9jZXNzCiBpbXBvcnQgcXVvcHJpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQppbmRleCBlODBlZDE3Li5mZDBkMmUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQpAQCAtNyw2ICs3LDcgQEAKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiBmcm9tIG1hdGggaW1wb3J0IGxvZywgZXhwLCBwaSwgZnN1bSwgc2luCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogCiBjbGFzcyBUZXN0QmFzaWNPcHM6CiAgICAgIyBTdXBlcmNsYXNzIHdpdGggdGVzdHMgY29tbW9uIHRvIGFsbCBnZW5lcmF0b3JzLgpAQCAtMTQxLDYgKzE0Miw4MyBAQAogICAgIGRlZiB0ZXN0X3NhbXBsZV9vbl9kaWN0cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmdlbi5zYW1wbGUsIGRpY3QuZnJvbWtleXMoJ2FiY2RlZicpLCAyKQogCisgICAgZGVmIHRlc3RfY2hvaWNlcyhzZWxmKToKKyAgICAgICAgY2hvaWNlcyA9IHNlbGYuZ2VuLmNob2ljZXMKKyAgICAgICAgZGF0YSA9IFsncmVkJywgJ2dyZWVuJywgJ2JsdWUnLCAneWVsbG93J10KKyAgICAgICAgc3RyX2RhdGEgPSAnYWJjZCcKKyAgICAgICAgcmFuZ2VfZGF0YSA9IHJhbmdlKDQpCisgICAgICAgIHNldF9kYXRhID0gc2V0KHJhbmdlKDQpKQorCisgICAgICAgICMgYmFzaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICBmb3Igc2FtcGxlIGluIFsKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgaz01KSwKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgcmFuZ2UoNCksIGs9NSksCisgICAgICAgICAgICBjaG9pY2VzKGs9NSwgcG9wdWxhdGlvbj1kYXRhLCB3ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgICAgIGNob2ljZXMoaz01LCBwb3B1bGF0aW9uPWRhdGEsIGN1bV93ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNhbXBsZSksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2FtcGxlKSwgbGlzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoc2FtcGxlKSA8PSBzZXQoZGF0YSkpCisKKyAgICAgICAgIyB0ZXN0IGFyZ3VtZW50IGhhbmRsaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtaXNzaW5nIGFyZ3VtZW50cworICAgICAgICAgICAgY2hvaWNlcygyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcyhkYXRhLCBrPTApLCBbXSkgICAgICAgICAgICAgICAgICAgICAgICAgIyBrID09IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKGRhdGEsIGs9LTEpLCBbXSkgICAgICAgICAgICAgICAgICAgICAgICAjIG5lZ2F0aXZlIGsgYmVoYXZlcyBsaWtlIGBgWzBdICogLTFgYAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGs9Mi41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrIGlzIGEgZmxvYXQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoc3RyX2RhdGEsIGs9NSkpIDw9IHNldChzdHJfZGF0YSkpICAgICMgcG9wdWxhdGlvbiBpcyBhIHN0cmluZyBzZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMocmFuZ2VfZGF0YSwgaz01KSkgPD0gc2V0KHJhbmdlX2RhdGEpKSAgIyBwb3B1bGF0aW9uIGlzIGEgcmFuZ2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhzZXRfZGF0YSwgaz0yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9wdWxhdGlvbiBpcyBub3QgYSBzZXF1ZW5jZQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCBOb25lLCBrPTUpKSA8PSBzZXQoZGF0YSkpICAgICAgIyB3ZWlnaHRzIGlzIE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIHdlaWdodHM9Tm9uZSwgaz01KSkgPD0gc2V0KGRhdGEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBbMSwyXSwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGVuKHdlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIDEwLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24taXRlcmFibGUgd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIFtOb25lXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24tbnVtZXJpYyB3ZWlnaHRzCisgICAgICAgIGZvciB3ZWlnaHRzIGluIFsKKyAgICAgICAgICAgICAgICBbMTUsIDEwLCAyNSwgMzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVnZXIgd2VpZ2h0cworICAgICAgICAgICAgICAgIFsxNS4xLCAxMC4yLCAyNS4yLCAzMC4zXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmxvYXQgd2VpZ2h0cworICAgICAgICAgICAgICAgIFtGcmFjdGlvbigxLCAzKSwgRnJhY3Rpb24oMiwgNiksIEZyYWN0aW9uKDMsIDYpLCBGcmFjdGlvbig0LCA2KV0sICMgZnJhY3Rpb25hbCB3ZWlnaHRzCisgICAgICAgICAgICAgICAgW1RydWUsIEZhbHNlLCBUcnVlLCBGYWxzZV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBib29sZWFucyAoaW5jbHVkZSAvIGV4Y2x1ZGUpCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgd2VpZ2h0cywgaz01KSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPVsxLDJdLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgIyBsZW4od2VpZ2h0cykgIT0gbGVuKHBvcHVsYXRpb24pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9MTAsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1pdGVyYWJsZSBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPVtOb25lXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgIyBub24tbnVtZXJpYyBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIHJhbmdlKDQpLCBjdW1fd2VpZ2h0cz1yYW5nZSg0KSwgaz01KSAgICAgICAgICAgIyBib3RoIHdlaWdodHMgYW5kIGN1bV93ZWlnaHRzCisgICAgICAgIGZvciB3ZWlnaHRzIGluIFsKKyAgICAgICAgICAgICAgICBbMTUsIDEwLCAyNSwgMzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVnZXIgY3VtX3dlaWdodHMKKyAgICAgICAgICAgICAgICBbMTUuMSwgMTAuMiwgMjUuMiwgMzAuM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsb2F0IGN1bV93ZWlnaHRzCisgICAgICAgICAgICAgICAgW0ZyYWN0aW9uKDEsIDMpLCBGcmFjdGlvbigyLCA2KSwgRnJhY3Rpb24oMywgNiksIEZyYWN0aW9uKDQsIDYpXSwgIyBmcmFjdGlvbmFsIGN1bV93ZWlnaHRzCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9d2VpZ2h0cywgaz01KSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgICMgVGVzdCB3ZWlnaHQgZm9jdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50IG9mIHRoZSBwb3B1bGF0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFsxLCAwLCAwLCAwXSksIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMCwgMSwgMCwgMF0pLCBbJ2InXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKCdhYmNkJywgWzAsIDAsIDEsIDBdKSwgWydjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFswLCAwLCAwLCAxXSksIFsnZCddKQorCisgICAgICAgICMgVGVzdCBjb25zaXN0ZW5jeSB3aXRoIHJhbmRvbS5jaG9pY2UoKSBmb3IgZW1wdHkgcG9wdWxhdGlvbgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgaz0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgd2VpZ2h0cz1bXSwgaz0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgY3VtX3dlaWdodHM9W10sIGs9NSkKKwogICAgIGRlZiB0ZXN0X2dhdXNzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBzZWVkKCkgbWV0aG9kIGluaXRpYWxpemVzIGFsbCB0aGUgaGlkZGVuIHN0YXRlLiAgSW4KICAgICAgICAgIyBwYXJ0aWN1bGFyLCB0aHJvdWdoIDIuMi4xIGl0IGZhaWxlZCB0byByZXNldCBhIHBpZWNlIG9mIHN0YXRlIHVzZWQKQEAgLTU1MSw2ICs2MjksMzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0b3AgPCB4IDw9IHN0YXJ0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh4K3N0b3ApJXN0ZXAsIDApCiAKKyAgICBkZWYgdGVzdF9jaG9pY2VzX2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgVGhlIHZhcmlvdXMgd2F5cyBvZiBzcGVjaWZ5aW5nIHdlaWdodHMgc2hvdWxkIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0cworICAgICAgICBjaG9pY2VzID0gc2VsZi5nZW4uY2hvaWNlcworICAgICAgICBuID0gMTMxMzI4MTcKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDg2NzUzMDkpCisgICAgICAgIGEgPSBzZWxmLmdlbi5jaG9pY2VzKHJhbmdlKG4pLCBrPTEwMDAwKQorCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoODY3NTMwOSkKKyAgICAgICAgYiA9IHNlbGYuZ2VuLmNob2ljZXMocmFuZ2UobiksIFsxXSpuLCBrPTEwMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGIpCisKKyAgICAgICAgc2VsZi5nZW4uc2VlZCg4Njc1MzA5KQorICAgICAgICBjID0gc2VsZi5nZW4uY2hvaWNlcyhyYW5nZShuKSwgY3VtX3dlaWdodHM9cmFuZ2UoMSwgbisxKSwgaz0xMDAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBjKQorCisgICAgICAgICMgQW1lcmlhbiBSb3VsZXR0ZQorICAgICAgICBwb3B1bGF0aW9uID0gWydSZWQnLCAnQmxhY2snLCAnR3JlZW4nXQorICAgICAgICB3ZWlnaHRzID0gWzE4LCAxOCwgMl0KKyAgICAgICAgY3VtX3dlaWdodHMgPSBbMTgsIDM2LCAzOF0KKyAgICAgICAgZXhwYW5kZWRfcG9wdWxhdGlvbiA9IFsnUmVkJ10gKiAxOCArIFsnQmxhY2snXSAqIDE4ICsgWydHcmVlbiddICogMgorCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoOTAzNTc2OCkKKyAgICAgICAgYSA9IHNlbGYuZ2VuLmNob2ljZXMoZXhwYW5kZWRfcG9wdWxhdGlvbiwgaz0xMDAwMCkKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDkwMzU3NjgpCisgICAgICAgIGIgPSBzZWxmLmdlbi5jaG9pY2VzKHBvcHVsYXRpb24sIHdlaWdodHMsIGs9MTAwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDkwMzU3NjgpCisgICAgICAgIGMgPSBzZWxmLmdlbi5jaG9pY2VzKHBvcHVsYXRpb24sIGN1bV93ZWlnaHRzPWN1bV93ZWlnaHRzLCBrPTEwMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGMpCisKIGRlZiBnYW1tYSh6LCBzcXJ0MnBpPSgyLjAqcGkpKiowLjUpOgogICAgICMgUmVmbGVjdGlvbiB0byByaWdodCBoYWxmIG9mIGNvbXBsZXggcGxhbmUKICAgICBpZiB6IDwgMC41OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKaW5kZXggYzAyMmYwNy4uOWUxMWU1MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CkBAIC0xLDkgKzEsMTAgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIGJ1aWx0LWluIGZ1bmN0aW9ucwogCi1pbXBvcnQgdGVzdC5zdXBwb3J0LCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgdGVzdC5zdXBwb3J0CiAKICMgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb25zICgzIGFyZ3Mgb25seSksIGZvciBjb21wYXJpc29uCiBkZWYgcHlyYW5nZShzdGFydCwgc3RvcCwgc3RlcCk6CkBAIC00OTgsMjkgKzQ5OSwzMiBAQAogICAgICAgICBpbXBvcnQgX3Rlc3RjYXBpCiAgICAgICAgIHJhbmdlaXRlcl90eXBlID0gdHlwZShpdGVyKHJhbmdlKDApKSkKIAotICAgICAgICAjIHJhbmdlaXRlcl9uZXcgZG9lc24ndCB0YWtlIGtleXdvcmQgYXJndW1lbnRzCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlKGE9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJhbmdlaXRlcl90eXBlLCAxLCAzLCAxKQogCi0gICAgICAgICMgcmFuZ2VpdGVyX25ldyB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIDEsIDEpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAjIHJhbmdlaXRlcl9uZXcgZG9lc24ndCB0YWtlIGtleXdvcmQgYXJndW1lbnRzCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoYT0xKQogCi0gICAgICAgICMgc3RhcnQsIHN0b3AgYW5kIHN0b3AgbXVzdCBmaXQgaW4gQyBsb25nCi0gICAgICAgIGZvciBnb29kX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYLCBfdGVzdGNhcGkuTE9OR19NSU5dOgotICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoZ29vZF92YWwsIGdvb2RfdmFsLCBnb29kX3ZhbCkKLSAgICAgICAgZm9yIGJhZF92YWwgaW4gW190ZXN0Y2FwaS5MT05HX01BWCArIDEsIF90ZXN0Y2FwaS5MT05HX01JTiAtIDFdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCBiYWRfdmFsLCAxLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCBiYWRfdmFsLCAxKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCAxLCBiYWRfdmFsKQorICAgICAgICAgICAgIyByYW5nZWl0ZXJfbmV3IHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIDEsIDEpCiAKLSAgICAgICAgIyBzdGVwIG11c3RuJ3QgYmUgemVybwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMCkKKyAgICAgICAgICAgICMgc3RhcnQsIHN0b3AgYW5kIHN0b3AgbXVzdCBmaXQgaW4gQyBsb25nCisgICAgICAgICAgICBmb3IgZ29vZF92YWwgaW4gW190ZXN0Y2FwaS5MT05HX01BWCwgX3Rlc3RjYXBpLkxPTkdfTUlOXToKKyAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShnb29kX3ZhbCwgZ29vZF92YWwsIGdvb2RfdmFsKQorICAgICAgICAgICAgZm9yIGJhZF92YWwgaW4gW190ZXN0Y2FwaS5MT05HX01BWCArIDEsIF90ZXN0Y2FwaS5MT05HX01JTiAtIDFdOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIGJhZF92YWwsIDEsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgMSwgYmFkX3ZhbCwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCAxLCBiYWRfdmFsKQorCisgICAgICAgICAgICAjIHN0ZXAgbXVzdG4ndCBiZSB6ZXJvCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMCkKIAogICAgIGRlZiB0ZXN0X3NsaWNlKHNlbGYpOgogICAgICAgICBkZWYgY2hlY2soc3RhcnQsIHN0b3AsIHN0ZXA9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9yZS5weQppbmRleCAwODM0ZmUwLi5hYWMzYTJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgcmUKIGZyb20gcmUgaW1wb3J0IFNjYW5uZXIKIGltcG9ydCBzcmVfY29tcGlsZQotaW1wb3J0IHNyZV9jb25zdGFudHMKIGltcG9ydCBzeXMKIGltcG9ydCBzdHJpbmcKIGltcG9ydCB0cmFjZWJhY2sKQEAgLTExNSwxMCArMTE0LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoLiknLCByZS5lc2NhcGUocyksICd4JyksIHMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoLiknLCBsYW1iZGEgbTogcywgJ3gnKSwgcykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCAnXGc8YT5cZzxhPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsICdcZzxhPlxnPDE+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCAnXGc8dW5rPlxnPHVuaz4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzwxPlxnPDE+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgcidcZzxhPlxnPGE+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgcidcZzxhPlxnPDE+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCByJ1xnPHVuaz5cZzx1bms+JywgJ3h4JyksICd4eHh4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCByJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgcidcdFxuXHZcclxmXGFcYicsICdhJyksICdcdFxuXHZcclxmXGFcYicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKQEAgLTEyNiwxNCArMTI1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNocig5KStjaHIoMTApK2NocigxMSkrY2hyKDEzKStjaHIoMTIpK2Nocig3KStjaHIoOCkpKQogICAgICAgICBmb3IgYyBpbiAnY2RlaGlqa2xtb3Bxc3V3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvcik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1xcJyArIGMsICdhJyksICdcXCcgKyBjKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdeXHMqJywgJ1gnLCAndGVzdCcpLCAnWHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJ15ccyonLCAnWCcsICd0ZXN0JyksICdYdGVzdCcpCiAKICAgICBkZWYgdGVzdF9idWdfNDQ5OTY0KHNlbGYpOgogICAgICAgICAjIGZhaWxzIGZvciBncm91cCBmb2xsb3dlZCBieSBvdGhlciBlc2NhcGUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocicoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT5cXGInLCAneHgnKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocicoP1A8dW5rPngpJywgcidcZzwxPlxnPDE+XGInLCAneHgnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneHhcYnh4XGInKQogCiAgICAgZGVmIHRlc3RfYnVnXzQ0OTAwMChzZWxmKToKQEAgLTE4NiwxOCArMTg1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw3Nzcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDApCiAKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5MCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5OScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcMTEnICsgJzgnCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4MScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1wxOCcgKyAnMScKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4MDAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpICMgcidcODAnICsgJzAnCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxOCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5MCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDkwJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5OScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDk5JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMTgnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMTEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4MScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDE4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4MDAnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA4MCcsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOCcsICcnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOCcsIDEpCiAKICAgICAgICAgIyBpbiBweXRob24yLjMgKGV0YyksIHRoZXNlIGxvb3AgZW5kbGVzc2x5IGluIHNyZV9wYXJzZXIucHkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJygoKCgoKCgoKCgoeCkpKSkpKSkpKSkpJywgcidcMTEnLCAneCcpLCAneCcpCkBAIC0yMjEsMjYgKzIyMSwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YigneCsnLCAnLScsICdhYnhkJyksICdhYi1kJykKIAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX2dyb3VwcyhzZWxmKToKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGE+eCkoP1A9YSkoPyhhKXkpJykKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpKD9QPWExKSg/KGExKXkpJykKLSAgICAgICAgcmUuY29tcGlsZSgnKD9QPGExPngpXDEoPygxKXkpJykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UDxhPiknLAorICAgICAgICByZS5jb21waWxlKHInKD9QPGE+eCkoP1A9YSkoPyhhKXkpJykKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YTE+eClcMSg/KDEpeSknKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/UDxhPiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWRlZmluaXRpb24gb2YgZ3JvdXAgbmFtZSAnYScgYXMgZ3JvdXAgMjsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXMgZ3JvdXAgMSIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPig/UD1hKSknLAorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KD9QPWEpKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCByZWZlciB0byBhbiBvcGVuIGdyb3VwIiwgMTApCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPWEnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgbmFtZScsIDExKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0xKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWEuKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UHh5KScsICd1bmtub3duIGV4dGVuc2lvbiA/UHgnKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/UD1hJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIG5hbWUnLCAxMSkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0nLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9MSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YTEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYTEnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD1hLiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPCknLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwnLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDw+KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPDE+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhLj4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/KCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQpAQCAtMjU5LDM1ICsyNTksMzUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChwYXQsICd4Yzh5eicpLnNwYW4oKSwgKDAsIDUpKQogCiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfcmVmcyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEnLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPGEnLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwnLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPCcsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGcnLCAneHgnLCAnbWlzc2luZyA8JywgMikKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPGEgYT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnJywgJ3h4JywgJ21pc3NpbmcgPCcsIDIpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8YSBhPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EgYSciLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8PicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8PicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGdyb3VwIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8MWExPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8MWExPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzFhMSciLCAzKQogICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPDI+JywgJ3h4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDInLCAzKQogICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1wyJywgJ3h4JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDInLCAxKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgInVua25vd24gZ3JvdXAgbmFtZSAnYWInIik6Ci0gICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgJ1xnPGFiPicsICd4eCcpCisgICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgcidcZzxhYj4nLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1xnPGI+JywgJ3h4JyksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1wyJywgJ3h4JyksICcnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8LTE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwtMT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICctMSciLCAzKQogICAgICAgICAjIE5ldyB2YWxpZC9pbnZhbGlkIGlkZW50aWZpZXJzIGluIFB5dGhvbiAzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8wrU+eCknLCByJ1xnPMK1PicsICd4eCcpLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCknLCByJ1xnPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+JywgJ3h4JyksICd4eCcpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzzCqT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPMKpPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ8KpJyIsIDMpCiAgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCiAgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCAnXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCByJ1xnPDIwMD4nLCAneGM4eXp4Yzh5JyksICdjOHpjOCcpCiAKICAgICBkZWYgdGVzdF9yZV9zdWJuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oIig/aSliKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAoJ3ggeCcsIDIpKQpAQCAtNDE5LDE5ICs0MTksNzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCksICgnYicsIE5vbmUsICdiJywgJ2MnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCIiKSwgKCdiJywgIiIsICdiJywgJ2MnKSkKIAotICAgICAgICAjIEEgc2luZ2xlIGdyb3VwCi0gICAgICAgIG0gPSByZS5tYXRjaCgnKGEpJywgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDApLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMSwgMSksICgnYScsICdhJykpCi0KICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2EnKS5ncm91cCgxLCAyLCAzKSwgKCdhJywgTm9uZSwgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdiJykuZ3JvdXAoJ2ExJywgJ2IyJywgJ2MzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdiJywgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdhYycpLmdyb3VwKDEsICdiMicsIDMpLCAoJ2EnLCBOb25lLCAnYycpKQogCisgICAgZGVmIHRlc3RfZ3JvdXAoc2VsZik6CisgICAgICAgIGNsYXNzIEluZGV4OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKyAgICAgICAgIyBBIHNpbmdsZSBncm91cAorICAgICAgICBtID0gcmUubWF0Y2goJyhhKShiKScsICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgpLCAnYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoSW5kZXgoMSkpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAxPDwxMDAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCBJbmRleCgxPDwxMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgJ3gnKQorICAgICAgICAjIE11bHRpcGxlIGdyb3VwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMiwgMSksICgnYicsICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cChJbmRleCgyKSwgSW5kZXgoMSkpLCAoJ2InLCAnYScpKQorCisgICAgZGVmIHRlc3RfbWF0Y2hfZ2V0aXRlbShzZWxmKToKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydhMSddLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYjInXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydjMyddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1Ob25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVszXSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWydYJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWy0xXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bNF0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWzAsIDFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsoMCwpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bKDAsIDEpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoS2V5RXJyb3IsICdhMicpOgorICAgICAgICAgICAgJ2ExPXthMn0nLmZvcm1hdF9tYXAobSkKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYTEnXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2IyJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYzMnXSwgJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bM10sICdjJykKKworICAgICAgICAjIENhbm5vdCBhc3NpZ24uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG1bMF0gPSAxCisKKyAgICAgICAgIyBObyBsZW4oKS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsZW4sIG0pCisKICAgICBkZWYgdGVzdF9yZV9mdWxsbWF0Y2goc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTYyMDM6IFByb3Bvc2FsOiBhZGQgcmUuZnVsbG1hdGNoKCkgbWV0aG9kLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaChyImEiLCAiYSIpLnNwYW4oKSwgKDAsIDEpKQpAQCAtNDYzLDE5ICs1MjEsMTkgQEAKICAgICAgICAgICAgIHJlLmNvbXBpbGUociIuKj8iKS5mdWxsbWF0Y2goImFiY2QiLCBwb3M9MSwgZW5kcG9zPTMpLnNwYW4oKSwgKDEsIDMpKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWZfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYSknKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhKScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnKCcsICdhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdhYicpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsICdiJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2NkJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdhJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgJycpKQogCiAgICAgICAgICMgVGVzdHMgZm9yIGJ1ZyAjMTE3NzgzMTogZXhlcmNpc2UgZ3JvdXBzIG90aGVyIHRoYW4gdGhlIGZpcnN0IGdyb3VwCkBAIC01MDAsMTAgKzU1OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0d28gYnJhbmNoZXMnLCAxMCkKIAogICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmX292ZXJmbG93KHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKCknLCAnXGc8JXM+JyAlIHNyZV9jb25zdGFudHMuTUFYR1JPVVBTLCAneHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAzKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/KCVkKSknICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMTApCisgICAgICAgIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgTUFYR1JPVVBTCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoKScsIHInXGc8JXM+JyAlIE1BWEdST1VQUywgJ3h4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkJyAlIE1BWEdST1VQUywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoPyglZCkpJyAlIE1BWEdST1VQUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQnICUgTUFYR1JPVVBTLCAxMCkKIAogICAgIGRlZiB0ZXN0X3JlX2dyb3VwcmVmKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcfCk/KFteKCldKylcMSQnLCAnfGF8JykuZ3JvdXBzKCksCkBAIC01MzUsMzcgKzU5NCwzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICIgIikKIAogICAgIGRlZiB0ZXN0X3JlcGVhdF9taW5tYXgoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxfSQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxfT8kIiwgImFiYyIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXihcdyl7MSwyfSQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxLDJ9PyQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MX0kIiwgImFiYyIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl4oXHcpezF9PyQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MSwyfSQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MSwyfT8kIiwgImFiYyIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDR9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7M30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7MSw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7M30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDN9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSw0fSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7M30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7MSwzfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7MSwyfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxLDJ9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MX0kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyIl54ezF9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MSwyfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MSwyfT8kIiwgInh4eCIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7M30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsM30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsM30kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsNH0kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezMsNH0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsM30/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHsxLDR9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsM30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszLDN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSw0fSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7M30/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSwzfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsNH0/JCIsICJ4eHgiKSkKIAotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgiXnh7fSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7fSQiLCAieHt9IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7fSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54e30kIiwgInh7fSIpKQogCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3Iocid4ezIsMX0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW4gcmVwZWF0IGdyZWF0ZXIgdGhhbiBtYXggcmVwZWF0JywgMikKQEAgLTYzOCwxNCArNjk3LDEwIEBACiAgICAgICAgIHJlLnB1cmdlKCkgICMgZm9yIHdhcm5pbmdzCiAgICAgICAgIGZvciBjIGluICdjZWdoaWprbG1vcHF5ekNFRkdISUpLTE1OT1BRUlRWWFknOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKCdcXCVjJyAlIGMsIGMpLmdyb3VwKCksIGMpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdcXCVjJyAlIGMsICdhJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICdcXCVjJyAlIGMpCiAgICAgICAgIGZvciBjIGluICdjZWdoaWprbG1vcHF5ekFCQ0VGR0hJSktMTU5PUFFSVFZYWVonOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYyk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKCdbXFwlY10nICUgYywgYykuZ3JvdXAoKSwgYykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1tcXCVjXScgJSBjLCAnYScpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAnW1xcJWNdJyAlIGMpCiAKICAgICBkZWYgdGVzdF9zdHJpbmdfYm91bmRhcmllcyhzZWxmKToKICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwNzEzCkBAIC02OTIsMTAgKzc0NywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJhXG5cbmIiKQogCiAgICAgZGVmIHRlc3RfbG9va2FoZWFkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoYSg/PVxzW15hXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbXmFdKikpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbYWJjXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbYWJjXSopKSIsICJhIGJjIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbXmFdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbXmFdKikpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW2FiY10pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1thYmNdKikpIiwgImEgYmMiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHNcMSkiLCAiYSBhIikuZ3JvdXAoMSksICJhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKSg/PVxzXDEqKSIsICJhIGFhIikuZ3JvdXAoMSksICJhIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKSg/PVxzKGFiY3xhKSkiLCAiYSBhIikuZ3JvdXAoMSksICJhIikKQEAgLTg0MywxMiArODk4LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goYiJhYmMiLCBiIkFCQyIsIHJlLkl8cmUuTCkuZ3JvdXAoMCksIGIiQUJDIikKIAogICAgIGRlZiB0ZXN0X25vdF9saXRlcmFsKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaCgiXHMoW15hXSopIiwgIiBiYiIpLmdyb3VwKDEpLCAiYmIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKFteYV0pIiwgIiBiIikuZ3JvdXAoMSksICJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJccyhbXmFdKikiLCAiIGJiIikuZ3JvdXAoMSksICJiYiIpCiAKICAgICBkZWYgdGVzdF9zZWFyY2hfY292ZXJhZ2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhiKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJhXHMiLCAiYSAiKS5ncm91cCgwKSwgImEgIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJccyhiKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiYVxzIiwgImEgIikuZ3JvdXAoMCksICJhICIpCiAKICAgICBkZWYgYXNzZXJ0TWF0Y2goc2VsZiwgcGF0dGVybiwgdGV4dCwgbWF0Y2g9Tm9uZSwgc3Bhbj1Ob25lLAogICAgICAgICAgICAgICAgICAgICBtYXRjaGVyPXJlLm1hdGNoKToKQEAgLTk1Myw3ICsxMDA4LDcgQEAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlw1NjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA5MScsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJceDEiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJceDF6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXHUxMjMiLCByJ2luY29tcGxldGUgZXNjYXBlIFx1MTIzJywgMCkKQEAgLTk5OCwxMCArMTA1Myw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4IiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngwIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pK2IiMCIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeHoiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiJ6IikpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlx1MTIzNCIsIGIndTEyMzQnKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXFUwMDAxMjM0NSIsIGInVTAwMDEyMzQ1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJcdTEyMzQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiXFUwMDAxMjM0NSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMCIsIGIiXDAwMCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDA4IiwgYiJcMDAwOCIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXDAxIiwgYiJcMDAxIikpCkBAIC0xMDA5LDcgKzEwNjIsNyBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw1NjciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDkxJywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJceDEiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXHgxeiIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKIApAQCAtMTAyMywxMCArMTA3Niw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMngwXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeHpdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1x1MTIzNF0iLCBiJ3UnKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiW1xVMDAwMTIzNDVdIiwgYidVJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJbXHUxMjM0XSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJbXFUwMDAxMjM0NV0iKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIltcNTY3XSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAxKQpAQCAtMTA1NCw4ICsxMTA1LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoYSk/YScsJ2EnKS5sYXN0aW5kZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoYSkoYik/YicsJ2FiJykubGFzdGluZGV4LCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKD9QPGE+YSkoP1A8Yj5iKT9iJywnYWInKS5sYXN0Z3JvdXAsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKD9QPGE+YShiKSkiLCAiYWIiKS5sYXN0Z3JvdXAsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKChhKSkiLCAiYSIpLmxhc3RpbmRleCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoKGEpKSIsICJhIikubGFzdGluZGV4LCAxKQogCiAgICAgZGVmIHRlc3RfYnVnXzQxODYyNihzZWxmKToKICAgICAgICAgIyBidWdzIDQxODYyNiBhdCBhbC4gLS0gVGVzdGluZyBHcmVnIENoYXBtYW4ncyBhZGRpdGlvbiBvZiBvcCBjb2RlCkBAIC0xMjI3LDcgKzEyNzgsNyBAQAogICAgICAgICAgICAgJ1x1ZmYxMCcsICMgJ1xOe0ZVTExXSURUSCBESUdJVCBaRVJPfScsIGNhdGVnb3J5ICdOZCcKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gZGVjaW1hbF9kaWdpdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeXGQkJywgeCkuZ3JvdXAoMCksIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXlxkJCcsIHgpLmdyb3VwKDApLCB4KQogCiAgICAgICAgIG5vdF9kZWNpbWFsX2RpZ2l0cyA9IFsKICAgICAgICAgICAgICdcdTIxNjUnLCAjICdcTntST01BTiBOVU1FUkFMIFNJWH0nLCBjYXRlZ29yeSAnTmwnCkBAIC0xMjM2LDcgKzEyODcsNyBAQAogICAgICAgICAgICAgJ1x1MzJiNCcsICMgJ1xOe0NJUkNMRUQgTlVNQkVSIFRISVJUWSBOSU5FfScsIGNhdGVnb3J5ICdObycKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm90X2RlY2ltYWxfZGlnaXRzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ15cZCQnLCB4KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXlxkJCcsIHgpKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfYXJyYXkoc2VsZik6CiAgICAgICAgICMgU0YgYnVmIDE2NDc1NDEKQEAgLTEyNzgsNiArMTMyOSwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJyg/aXh1KSAnICsgdXBwZXJfY2hhciwgbG93ZXJfY2hhcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnKD9peHUpICcgKyBsb3dlcl9jaGFyLCB1cHBlcl9jaGFyKSkKIAorICAgICAgICBwID0gdXBwZXJfY2hhciArICcoP2kpJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyB3YXJuczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChwLCBsb3dlcl9jaGFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cih3YXJucy53YXJuaW5nc1swXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzJyAlIHAKKyAgICAgICAgKQorCisgICAgICAgIHAgPSB1cHBlcl9jaGFyICsgJyg/aSklcycgJSAoJy4/JyAqIDEwMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2FybnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocCwgbG93ZXJfY2hhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIod2FybnMud2FybmluZ3NbMF0ubWVzc2FnZSksCisgICAgICAgICAgICAnRmxhZ3Mgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiAlcyAodHJ1bmNhdGVkKScgJSBwWzoyMF0KKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3RfZG9sbGFyX21hdGNoZXNfdHdpY2Uoc2VsZik6CiAgICAgICAgICIkIG1hdGNoZXMgdGhlIGVuZCBvZiBzdHJpbmcsIGFuZCBqdXN0IGJlZm9yZSB0aGUgdGVybWluYXRpbmcgXG4iCiAgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKCckJykKQEAgLTEzMDgsMjkgKzEzNzUsMjkgQEAKICAgICAgICAgZm9yIGZsYWdzIGluICgwLCByZS5VTklDT0RFKToKICAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x4YzAnLCBmbGFncyB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKCdcdycsIGZsYWdzKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ1x3JywgZmxhZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x4YzAnLCByZS5BU0NJSSB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoP2EpXHhjMCcsIHJlLklHTk9SRUNBU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKCdcdycsIHJlLkFTQ0lJKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInXHcnLCByZS5BU0NJSSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyg/YSlcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocicoP2EpXHcnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgIyBCeXRlcyBwYXR0ZXJucwogICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIHJlLkFTQ0lJKToKICAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidceGMwJywgZmxhZ3MgfCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGInXHhlMCcpKQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JywgZmxhZ3MpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JywgZmxhZ3MpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYidceGUwJykpCiAgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYidcdycsIHJlLlVOSUNPREUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD91KVx3JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJ1x3JywgcmUuVU5JQ09ERSB8IHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD91KVx3JywgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP2EpXHcnLCByZS5VTklDT0RFKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hdSlcdycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGJyJ1x3JywgcmUuVU5JQ09ERSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYnInKD91KVx3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcidcdycsIHJlLlVOSUNPREUgfCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP3UpXHcnLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP2EpXHcnLCByZS5VTklDT0RFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJyg/YXUpXHcnKQogCiAgICAgZGVmIHRlc3RfbG9jYWxlX2ZsYWcoc2VsZik6CiAgICAgICAgIGltcG9ydCBsb2NhbGUKQEAgLTEzNjEsMjcgKzE0MjgsNTkgQEAKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicGF0LCByZS5JR05PUkVDQVNFKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnLCByZS5MT0NBTEUpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnLCByZS5MT0NBTEUpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInKD9MKVx3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicicoP0wpXHcnKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCiAgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcnLCByZS5MT0NBTEUpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnKD9MKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJycsIHJlLkxPQ0FMRSB8IHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP0wpJywgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YSknLCByZS5MT0NBTEUpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/YUwpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJycsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/TCknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJycsIHJlLkxPQ0FMRSB8IHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/TCknLCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP2EpJywgcmUuTE9DQUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/YUwpJykKKworICAgIGRlZiB0ZXN0X3Njb3BlZF9mbGFncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD9pOmEpYicsICdBYicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/aTphKWInLCAnYUInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPy1pOmEpYicsICdBYicsIHJlLklHTk9SRUNBU0UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPy1pOmEpYicsICdhQicsIHJlLklHTk9SRUNBU0UpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/aTooPy1pOmEpYiknLCAnQWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD9pOig/LWk6YSliKScsICdhQicpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/eDogYSkgYicsICdhIGInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP3g6IGEpIGInLCAnIGEgYicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoPy14OiBhKSBiJywgJyBhYicsIHJlLlZFUkJPU0UpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/LXg6IGEpIGInLCAnYWInLCByZS5WRVJCT1NFKSkKKworICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9hOlx3KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9uIGdsb2JhbCBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/YSkoPy1hOlx3KScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9mZiBnbG9iYWwgZmxhZycsIDgpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2ktaTphKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhZCBpbmxpbmUgZmxhZ3M6IGZsYWcgdHVybmVkIG9uIGFuZCBvZmYnLCA1KQorCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy0nLCAnbWlzc2luZyBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LSsnLCAnbWlzc2luZyBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LXonLCAndW5rbm93biBmbGFnJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWknLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWkpJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pKycsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taXonLCAndW5rbm93biBmbGFnJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aTonLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgc3VicGF0dGVybicsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pKycsICdtaXNzaW5nIC0sIDogb3IgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6JywgJ3Vua25vd24gZmxhZycsIDMpCiAKICAgICBkZWYgdGVzdF9idWdfNjUwOShzZWxmKToKICAgICAgICAgIyBSZXBsYWNlbWVudCBzdHJpbmdzIG9mIGJvdGggdHlwZXMgbXVzdCBwYXJzZSBwcm9wZXJseS4KICAgICAgICAgIyBhbGwgc3RyaW5ncwotICAgICAgICBwYXQgPSByZS5jb21waWxlKCdhKFx3KScpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidhKFx3KScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YignYlxcMScsICdhYycpLCAnYmMnKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCdhKC4pJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKCdiXFwxJywgJ2FcdTEyMzQnKSwgJ2JcdTEyMzQnKQpAQCAtMTM4OSw3ICsxNDg4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGxhbWJkYSBtOiAnc3RyJywgJ2E1JyksICdzdHInKQogCiAgICAgICAgICMgYWxsIGJ5dGVzCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidhKFx3KScpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInYShcdyknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoYidiXFwxJywgYidhYycpLCBiJ2JjJykKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ2EoLiknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoYidiXFwxJywgYidhXHhDRCcpLCBiJ2JceENEJykKQEAgLTE0MjcsMTMgKzE1MjYsNiBAQAogICAgICAgICAjIFRlc3QgYmVoYXZpb3VyIHdoZW4gbm90IGdpdmVuIGEgc3RyaW5nIG9yIHBhdHRlcm4gYXMgcGFyYW1ldGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmUuY29tcGlsZSwgMCkKIAotICAgIGRlZiB0ZXN0X2J1Z18xMzg5OShzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTM4OTk6IHJlIHBhdHRlcm4gciJbXEFdIiBzaG91bGQgd29yayBsaWtlICJBIiBidXQgbWF0Y2hlcwotICAgICAgICAjIG5vdGhpbmcuIERpdHRvIEIgYW5kIFouCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0EnLCAnQicsICdcYicsICdDJywgJ1onXSkKLQogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MSkKICAgICBkZWYgdGVzdF9sYXJnZV9zZWFyY2goc2VsZiwgc2l6ZSk6CiAgICAgICAgICMgSXNzdWUgIzEwMTgyOiBpbmRpY2VzIHdlcmUgMzItYml0LXRydW5jYXRlZC4KQEAgLTE1MTgsNyArMTYxMCw3IEBACiAgICAgICAgIGZvciBzdHJpbmcgaW4gKGInW2FicmFjYWRhYnJhXScsIEIoYidbYWJyYWNhZGFicmFdJyksCiAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShiJ1thYnJhY2FkYWJyYV0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyhiJ1thYnJhY2FkYWJyYV0nKSk6Ci0gICAgICAgICAgICBtID0gcmUuc2VhcmNoKHJiJyguKykoLio/KVwxJywgc3RyaW5nKQorICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChicicoLispKC4qPylcMScsIHN0cmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjwlcy4lcyBvYmplY3Q7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwYW49KDEsIDEyKSwgbWF0Y2g9YidhYnJhY2FkYWJyYSc+IiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlKG0pLl9fbW9kdWxlX18sIHR5cGUobSkuX19xdWFsbmFtZV9fKSkKQEAgLTE1NDcsOSArMTYzOSw5IEBACiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0OgogICAgICAgICAgICAgcmUuY29tcGlsZShwYXQsIHJlLkRFQlVHKQogICAgICAgICBkdW1wID0gJycnXAotU1VCUEFUVEVSTiAxCitTVUJQQVRURVJOIDEgMCAwCiAgIExJVEVSQUwgNDYKLVNVQlBBVFRFUk4gTm9uZQorU1VCUEFUVEVSTiBOb25lIDAgMAogICBCUkFOQ0gKICAgICBJTgogICAgICAgTElURVJBTCA5OQpAQCAtMTU1Nyw3ICsxNjQ5LDcgQEAKICAgT1IKICAgICBMSVRFUkFMIDExMgogICAgIExJVEVSQUwgMTIxCi1TVUJQQVRURVJOIE5vbmUKK1NVQlBBVFRFUk4gTm9uZSAwIDAKICAgR1JPVVBSRUZfRVhJU1RTIDEKICAgICBBVCBBVF9FTkQKICAgRUxTRQpAQCAtMTY3MywxMiArMTc2NSwxOCBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QJywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD96KScsICd1bmtub3duIGV4dGVuc2lvbiA/eicsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6KScsICd1bmtub3duIGZsYWcnLCAzKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8jYWJjJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88PiknLCAndW5rbm93biBleHRlbnNpb24gPzw+JywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAyKQogCisgICAgZGVmIHRlc3RfZW51bShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjgwODI6IENoZWNrIHRoYXQgc3RyKGZsYWcpIHJldHVybnMgYSBodW1hbiByZWFkYWJsZSBzdHJpbmcKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGFuIGludGVnZXIKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQVNDSUknLCBzdHIocmUuQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0RPVEFMTCcsIHN0cihyZS5TKSkKKwogCiBjbGFzcyBQYXR0ZXJuUmVwclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY2hlY2soc2VsZiwgcGF0dGVybiwgZXhwZWN0ZWQpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKaW5kZXggMmM3M2RmMi4uMDZhOTE0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CkBAIC0xMjEsNiArMTIxLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVSTT0neHRlcm0tMjU2Y29sb3InKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYicnKQogCisgICAgYXV0b19oaXN0b3J5X3NjcmlwdCA9ICIiIlwKK2ltcG9ydCByZWFkbGluZQorcmVhZGxpbmUuc2V0X2F1dG9faGlzdG9yeSh7fSkKK2lucHV0KCkKK3ByaW50KCJIaXN0b3J5IGxlbmd0aDoiLCByZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpKQorIiIiCisKKyAgICBkZWYgdGVzdF9hdXRvX2hpc3RvcnlfZW5hYmxlZChzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gcnVuX3B0eShzZWxmLmF1dG9faGlzdG9yeV9zY3JpcHQuZm9ybWF0KFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiSGlzdG9yeSBsZW5ndGg6IDFcclxuIiwgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfYXV0b19oaXN0b3J5X2Rpc2FibGVkKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBydW5fcHR5KHNlbGYuYXV0b19oaXN0b3J5X3NjcmlwdC5mb3JtYXQoRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiSGlzdG9yeSBsZW5ndGg6IDBcclxuIiwgb3V0cHV0KQorCiAgICAgZGVmIHRlc3Rfbm9uYXNjaWkoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlYWRsaW5lLmFkZF9oaXN0b3J5KCJceEVCXHhFRiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQppbmRleCBhZTE4MzI3Li41MjkwOWQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKQEAgLTEsMjEgKzEsNDggQEAKICIiIgogVGVzdHMgb2YgcmVncnRlc3QucHkuCisKK05vdGU6IHRlc3RfcmVncnRlc3QgY2Fubm90IGJlIHJ1biB0d2ljZSBpbiBwYXJhbGxlbC4KICIiIgogCi1pbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZmF1bHRoYW5kbGVyCi1pbXBvcnQgZ2V0b3B0CitpbXBvcnQgaW8KIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QsIHN1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbGlicmVncnRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK1B5X0RFQlVHID0gaGFzYXR0cihzeXMsICdnZXRvYmplY3RzJykKK1JPT1RfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpCitST09UX0RJUiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKFJPT1RfRElSKSkKKworVEVTVF9JTlRFUlJVUFRFRCA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICBmcm9tIHNpZ25hbCBpbXBvcnQgU0lHSU5UCisgICAgdHJ5OgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcmFpc2Vfc2lnbmFsCisgICAgICAgIHJhaXNlX3NpZ25hbChTSUdJTlQpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgU0lHSU5UKQorICAgICIiIikKKwogCiBjbGFzcyBQYXJzZUFyZ3NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHJlZ3J0ZXN0J3MgYXJndW1lbnQgcGFyc2luZy4iIiIKKyAgICAiIiIKKyAgICBUZXN0IHJlZ3J0ZXN0J3MgYXJndW1lbnQgcGFyc2luZywgZnVuY3Rpb24gX3BhcnNlX2FyZ3MoKS4KKyAgICAiIiIKIAogICAgIGRlZiBjaGVja0Vycm9yKHNlbGYsIGFyZ3MsIG1zZyk6CiAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnIsIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgcmVncnRlc3QuX3BhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgICAgIGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBlcnIuZ2V0dmFsdWUoKSkKIAogICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CkBAIC0yMyw4MiArNTAsODIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgogICAgICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXQsIFwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgICAgICAgICByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICAgICAgbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLicsIG91dC5nZXR2YWx1ZSgpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGltZW91dCcsICc0LjInXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGltZW91dCcsICc0LjInXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy50aW1lb3V0LCA0LjIpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGltZW91dCddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10aW1lb3V0JywgJ2ZvbyddLCAnaW52YWxpZCBmbG9hdCB2YWx1ZScpCiAKICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS13YWl0J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXdhaXQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLndhaXQpCiAKICAgICBkZWYgdGVzdF9zbGF2ZWFyZ3Moc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXNsYXZlYXJncycsICdbW10sIHt9XSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zbGF2ZWFyZ3MnLCAnW1tdLCB7fV0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zbGF2ZWFyZ3MsICdbW10sIHt9XScpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tc2xhdmVhcmdzJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1TJywgJy0tc3RhcnQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zdGFydCwgJ2ZvbycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2Uoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdiddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXZ2diddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXZ2diddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDMpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDEpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSAqIDMpCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSAqIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMykKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZTIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy13JywgJy0tdmVyYm9zZTInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy52ZXJib3NlMikKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2UzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctVycsICctLXZlcmJvc2UzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudmVyYm9zZTMpCiAKICAgICBkZWYgdGVzdF9xdWlldChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXEnLCAnLS1xdWlldCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3Nsb3coc2VsZik6Ci0gICAgICAgIGZvciBvcHQgaW4gJy1vJywgJy0tc2xvdyc6CisgICAgICAgIGZvciBvcHQgaW4gJy1vJywgJy0tc2xvd2VzdCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnByaW50X3Nsb3cpCiAKICAgICBkZWYgdGVzdF9oZWFkZXIoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLWhlYWRlciddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1oZWFkZXInXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmhlYWRlcikKIAogICAgIGRlZiB0ZXN0X3JhbmRvbWl6ZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXInLCAnLS1yYW5kb21pemUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5yYW5kb21pemUpCiAKICAgICBkZWYgdGVzdF9yYW5kc2VlZChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcmFuZHNlZWQnLCAnMTIzNDUnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcmFuZHNlZWQnLCAnMTIzNDUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5yYW5kb21fc2VlZCwgMTIzNDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5yYW5kb21pemUpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tcmFuZHNlZWQnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCkBAIC0xMDcsNyArMTM0LDcgQEAKICAgICBkZWYgdGVzdF9mcm9tZmlsZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLWYnLCAnLS1mcm9tZmlsZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmZyb21maWxlLCAnZm9vJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJywgJy1zJ10sICJkb24ndCBnbyB0b2dldGhlciIpCkBAIC0xMTUsNDIgKzE0Miw0MiBAQAogICAgIGRlZiB0ZXN0X2V4Y2x1ZGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy14JywgJy0tZXhjbHVkZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmV4Y2x1ZGUpCiAKICAgICBkZWYgdGVzdF9zaW5nbGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1zJywgJy0tc2luZ2xlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuc2luZ2xlKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnLWYnLCAnZm9vJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAKICAgICBkZWYgdGVzdF9tYXRjaChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLW0nLCAnLS1tYXRjaCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdwYXR0ZXJuJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAncGF0dGVybiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMubWF0Y2hfdGVzdHMsICdwYXR0ZXJuJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfZmFpbGZhc3Qoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1HJywgJy0tZmFpbGZhc3QnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLXYnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctdiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mYWlsZmFzdCkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctVyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy1XJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZhaWxmYXN0KQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJy1HLy0tZmFpbGZhc3QgbmVlZHMgZWl0aGVyIC12IG9yIC1XJykKIAogICAgIGRlZiB0ZXN0X3VzZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXUnLCAnLS11c2UnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5ldHdvcmsnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbmV0d29yayddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgWydndWknLCAnbmV0d29yayddKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxub25lLG5ldHdvcmsnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbm9uZSxuZXR3b3JrJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBbJ25ldHdvcmsnXSkKLSAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QocmVncnRlc3QuUkVTT1VSQ0VfTkFNRVMpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBsaXN0KGxpYnJlZ3J0ZXN0LlJFU09VUkNFX05BTUVTKQogICAgICAgICAgICAgICAgIGV4cGVjdGVkLnJlbW92ZSgnZ3VpJykKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdhbGwsLWd1aSddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2FsbCwtZ3VpJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBleHBlY3RlZCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIHJlc291cmNlJykKQEAgLTE1OCwzMSArMTg1LDMxIEBACiAgICAgZGVmIHRlc3RfbWVtbGltaXQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1NJywgJy0tbWVtbGltaXQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNEcnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc0RyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMubWVtbGltaXQsICc0RycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3Rlc3RkaXIoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRlc3RkaXInLCAnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRlc3RkaXInLCAnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGVzdGRpciwgb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsICdmb28nKSkKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10ZXN0ZGlyJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfcnVubGVha3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1MJywgJy0tcnVubGVha3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5ydW5sZWFrcykKIAogICAgIGRlZiB0ZXN0X2h1bnRybGVha3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1SJywgJy0taHVudHJsZWFrcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDUsIDQsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjonXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDYsIDQsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOjMnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6MyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDUsIDMsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjozOmxlYWtzLmxvZyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6MzpsZWFrcy5sb2cnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg2LCAzLCAnbGVha3MubG9nJykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzYnXSwKQEAgLTE5MywyNCArMjIwLDIzIEBACiAgICAgZGVmIHRlc3RfbXVsdGlwcm9jZXNzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctaicsICctLW11bHRpcHJvY2Vzcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcyJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX21wLCAyKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgaW50IHZhbHVlJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLVQnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLWwnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKLSAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLU0nLCAnNEcnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKIAogICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctVCcsICctLWNvdmVyYWdlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudHJhY2UpCiAKICAgICBkZWYgdGVzdF9jb3ZlcmRpcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUQnLCAnLS1jb3ZlcmRpcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmNvdmVyZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsICdmb28nKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQpAQCAtMjE4LDEzICsyNDQsMTMgQEAKICAgICBkZWYgdGVzdF9ub2NvdmVyZGlyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTicsICctLW5vY292ZXJkaXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5zLmNvdmVyZGlyKQogCiAgICAgZGVmIHRlc3RfdGhyZXNob2xkKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdCcsICctLXRocmVzaG9sZCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcxMDAwJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMTAwMCddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGhyZXNob2xkLCAxMDAwKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgaW50IHZhbHVlJykKQEAgLTIzMiwxMyArMjU4LDE2IEBACiAgICAgZGVmIHRlc3Rfbm93aW5kb3dzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctbicsICctLW5vd2luZG93cyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5yZWRpcmVjdF9zdGRlcnIoaW8uU3RyaW5nSU8oKSkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5ub3dpbmRvd3MpCisgICAgICAgICAgICAgICAgZXJyID0gc3RkZXJyLmdldHZhbHVlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0aGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZCcsIGVycikKIAogICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1GJywgJy0tZm9yZXZlcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZvcmV2ZXIpCiAKIApAQCAtMjQ2LDMyICsyNzUsMzIgQEAKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS14eHgnXSwgJ3VzYWdlOicpCiAKICAgICBkZWYgdGVzdF9sb25nX29wdGlvbl9fcGFydGlhbChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3R3b19vcHRpb25zKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICctLWV4Y2x1ZGUnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnLS1leGNsdWRlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZXhjbHVkZSkKIAogICAgIGRlZiB0ZXN0X29wdGlvbl93aXRoX2VtcHR5X3N0cmluZ192YWx1ZShzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc3RhcnQnLCAnJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXN0YXJ0JywgJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnN0YXJ0LCAnJykKIAogICAgIGRlZiB0ZXN0X2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJ2ZvbyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuYXJncywgWydmb28nXSkKIAogICAgIGRlZiB0ZXN0X29wdGlvbl9hbmRfYXJnKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICdmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsnZm9vJ10pCiAKICAgICBkZWYgdGVzdF9hcmdfb3B0aW9uX2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJ3Rlc3RfdW5hcnlvcCcsICctdicsICd0ZXN0X2Jpbm9wJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyd0ZXN0X3VuYXJ5b3AnLCAnLXYnLCAndGVzdF9iaW5vcCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuYXJncywgWyd0ZXN0X3VuYXJ5b3AnLCAndGVzdF9iaW5vcCddKQogCkBAIC0yODAsNiArMzA5LDQ5NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC0tdW5rbm93bi1vcHRpb24nKQogCiAKK2NsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgVEVTVF9VTklRVUVfSUQgPSAxCisgICAgVEVTVE5BTUVfUFJFRklYID0gJ3Rlc3RfcmVncnRlc3RfJworICAgIFRFU1ROQU1FX1JFR0VYID0gcid0ZXN0X1thLXpBLVowLTlfXSsnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGVzdGRpciA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworICAgICAgICBzZWxmLnRtcHRlc3RkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLnRtcHRlc3RkaXIpCisKKyAgICBkZWYgY3JlYXRlX3Rlc3Qoc2VsZiwgbmFtZT1Ob25lLCBjb2RlPScnKToKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBuYW1lID0gJ25vb3AlcycgJSBCYXNlVGVzdENhc2UuVEVTVF9VTklRVUVfSUQKKyAgICAgICAgICAgIEJhc2VUZXN0Q2FzZS5URVNUX1VOSVFVRV9JRCArPSAxCisKKyAgICAgICAgIyB0ZXN0X3JlZ3J0ZXN0IGNhbm5vdCBiZSBydW4gdHdpY2UgaW4gcGFyYWxsZWwgYmVjYXVzZQorICAgICAgICAjIG9mIHNldFVwKCkgYW5kIGNyZWF0ZV90ZXN0KCkKKyAgICAgICAgbmFtZSA9IHNlbGYuVEVTVE5BTUVfUFJFRklYICsgbmFtZQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudG1wdGVzdGRpciwgbmFtZSArICcucHknKQorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgIyBVc2UgJ3gnIG1vZGUgdG8gZW5zdXJlIHRoYXQgd2UgZG8gbm90IG92ZXJyaWRlIGV4aXN0aW5nIHRlc3RzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAneCcsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGZwOgorICAgICAgICAgICAgICAgIGZwLndyaXRlKGNvZGUpCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3Qgd3JpdGUgJXM6ICVzIiAlIChwYXRoLCBleGMpKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIG5hbWUKKworICAgIGRlZiByZWdleF9zZWFyY2goc2VsZiwgcmVnZXgsIG91dHB1dCk6CisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHJlZ2V4LCBvdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgc2VsZi5mYWlsKCIlciBub3QgZm91bmQgaW4gJXIiICUgKHJlZ2V4LCBvdXRwdXQpKQorICAgICAgICByZXR1cm4gbWF0Y2gKKworICAgIGRlZiBjaGVja19saW5lKHNlbGYsIG91dHB1dCwgcmVnZXgpOgorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocideJyArIHJlZ2V4LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKKworICAgIGRlZiBwYXJzZV9leGVjdXRlZF90ZXN0cyhzZWxmLCBvdXRwdXQpOgorICAgICAgICByZWdleCA9IChyJ15bMC05XSs6WzAtOV0rOlswLTldKyBcWyAqWzAtOV0rKD86LyAqWzAtOV0rKT9cXSAoJXMpJworICAgICAgICAgICAgICAgICAlIHNlbGYuVEVTVE5BTUVfUkVHRVgpCisgICAgICAgIHBhcnNlciA9IHJlLmZpbmRpdGVyKHJlZ2V4LCBvdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIGxpc3QobWF0Y2guZ3JvdXAoMSkgZm9yIG1hdGNoIGluIHBhcnNlcikKKworICAgIGRlZiBjaGVja19leGVjdXRlZF90ZXN0cyhzZWxmLCBvdXRwdXQsIHRlc3RzLCBza2lwcGVkPSgpLCBmYWlsZWQ9KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9taXR0ZWQ9KCksIHJhbmRvbWl6ZT1GYWxzZSwgaW50ZXJydXB0ZWQ9RmFsc2UpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHRlc3RzLCBzdHIpOgorICAgICAgICAgICAgdGVzdHMgPSBbdGVzdHNdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2tpcHBlZCwgc3RyKToKKyAgICAgICAgICAgIHNraXBwZWQgPSBbc2tpcHBlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmYWlsZWQsIHN0cik6CisgICAgICAgICAgICBmYWlsZWQgPSBbZmFpbGVkXQorICAgICAgICBpZiBpc2luc3RhbmNlKG9taXR0ZWQsIHN0cik6CisgICAgICAgICAgICBvbWl0dGVkID0gW29taXR0ZWRdCisgICAgICAgIG50ZXN0ID0gbGVuKHRlc3RzKQorICAgICAgICBuc2tpcHBlZCA9IGxlbihza2lwcGVkKQorICAgICAgICBuZmFpbGVkID0gbGVuKGZhaWxlZCkKKyAgICAgICAgbm9taXR0ZWQgPSBsZW4ob21pdHRlZCkKKworICAgICAgICBleGVjdXRlZCA9IHNlbGYucGFyc2VfZXhlY3V0ZWRfdGVzdHMob3V0cHV0KQorICAgICAgICBpZiByYW5kb21pemU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChleGVjdXRlZCksIHNldCh0ZXN0cyksIG91dHB1dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhlY3V0ZWQsIHRlc3RzLCBvdXRwdXQpCisKKyAgICAgICAgZGVmIHBsdXJhbChjb3VudCk6CisgICAgICAgICAgICByZXR1cm4gJ3MnIGlmIGNvdW50ICE9IDEgZWxzZSAnJworCisgICAgICAgIGRlZiBsaXN0X3JlZ2V4KGxpbmVfZm9ybWF0LCB0ZXN0cyk6CisgICAgICAgICAgICBjb3VudCA9IGxlbih0ZXN0cykKKyAgICAgICAgICAgIG5hbWVzID0gJyAnLmpvaW4oc29ydGVkKHRlc3RzKSkKKyAgICAgICAgICAgIHJlZ2V4ID0gbGluZV9mb3JtYXQgJSAoY291bnQsIHBsdXJhbChjb3VudCkpCisgICAgICAgICAgICByZWdleCA9IHInJXM6XG4gICAgJXMkJyAlIChyZWdleCwgbmFtZXMpCisgICAgICAgICAgICByZXR1cm4gcmVnZXgKKworICAgICAgICBpZiBza2lwcGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgc2tpcHBlZCcsIHNraXBwZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBmYWlsZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBmYWlsZWQnLCBmYWlsZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBvbWl0dGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgb21pdHRlZCcsIG9taXR0ZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBnb29kID0gbnRlc3QgLSBuc2tpcHBlZCAtIG5mYWlsZWQgLSBub21pdHRlZAorICAgICAgICBpZiBnb29kOgorICAgICAgICAgICAgcmVnZXggPSByJyVzIHRlc3QlcyBPS1wuJCcgJSAoZ29vZCwgcGx1cmFsKGdvb2QpKQorICAgICAgICAgICAgaWYgbm90IHNraXBwZWQgYW5kIG5vdCBmYWlsZWQgYW5kIGdvb2QgPiAxOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0FsbCAlcycgJSByZWdleAorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULicpCisKKyAgICAgICAgaWYgbmZhaWxlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICdGQUlMVVJFJworICAgICAgICBlbGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgcmVzdWx0ID0gJ0lOVEVSUlVQVEVEJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gJ1NVQ0NFU1MnCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdUZXN0cyByZXN1bHQ6ICVzJyAlIHJlc3VsdCkKKworICAgIGRlZiBwYXJzZV9yYW5kb21fc2VlZChzZWxmLCBvdXRwdXQpOgorICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVXNpbmcgcmFuZG9tIHNlZWQgKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHJhbmRzZWVkID0gaW50KG1hdGNoLmdyb3VwKDEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMCA8PSByYW5kc2VlZCA8PSAxMDAwMDAwMCwgcmFuZHNlZWQpCisgICAgICAgIHJldHVybiByYW5kc2VlZAorCisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGlucHV0PU5vbmUsIGV4aXRjb2RlPTAsICoqa3cpOgorICAgICAgICBpZiBub3QgaW5wdXQ6CisgICAgICAgICAgICBpbnB1dCA9ICcnCisgICAgICAgIGlmICdzdGRlcnInIG5vdCBpbiBrdzoKKyAgICAgICAgICAgIGt3WydzdGRlcnInXSA9IHN1YnByb2Nlc3MuUElQRQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5ydW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ9aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprdykKKyAgICAgICAgaWYgcHJvYy5yZXR1cm5jb2RlICE9IGV4aXRjb2RlOgorICAgICAgICAgICAgbXNnID0gKCJDb21tYW5kICVzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlc1xuIgorICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAic3Rkb3V0OlxuIgorICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAiJXNcbiIKKyAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgJSAoc3RyKGFyZ3MpLCBwcm9jLnJldHVybmNvZGUsIHByb2Muc3Rkb3V0KSkKKyAgICAgICAgICAgIGlmIHByb2Muc3RkZXJyOgorICAgICAgICAgICAgICAgIG1zZyArPSAoIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgInN0ZGVycjpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgcHJvYy5zdGRlcnIpCisgICAgICAgICAgICBzZWxmLmZhaWwobXNnKQorICAgICAgICByZXR1cm4gcHJvYworCisKKyAgICBkZWYgcnVuX3B5dGhvbihzZWxmLCBhcmdzLCAqKmt3KToKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1YJywgJ2ZhdWx0aGFuZGxlcicsICctSScsICphcmdzXQorICAgICAgICBwcm9jID0gc2VsZi5ydW5fY29tbWFuZChhcmdzLCAqKmt3KQorICAgICAgICByZXR1cm4gcHJvYy5zdGRvdXQKKworCitjbGFzcyBQcm9ncmFtc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB2YXJpb3VzIHdheXMgdG8gcnVuIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4gVXNlIG9wdGlvbnMgY2xvc2UKKyAgICB0byBvcHRpb25zIHVzZWQgb24gdGhlIGJ1aWxkYm90LgorICAgICIiIgorCisgICAgTlRFU1QgPSA0CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgICAgICMgQ3JlYXRlIE5URVNUIHRlc3RzIGRvaW5nIG5vdGhpbmcKKyAgICAgICAgc2VsZi50ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKHNlbGYuTlRFU1QpXQorCisgICAgICAgIHNlbGYucHl0aG9uX2FyZ3MgPSBbJy1XZCcsICctRScsICctYmInXQorICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MgPSBbJy11YWxsJywgJy1yd1cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXJdCisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIHNlbGYucmVncnRlc3RfYXJncy5leHRlbmQoKCctLXRpbWVvdXQnLCAnMzYwMCcsICctajQnKSkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MuYXBwZW5kKCctbicpCisKKyAgICBkZWYgY2hlY2tfb3V0cHV0KHNlbGYsIG91dHB1dCk6CisgICAgICAgIHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgc2VsZi50ZXN0cywgcmFuZG9taXplPVRydWUpCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGFyZ3MpOgorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9weXRob24oYXJncykKKyAgICAgICAgc2VsZi5jaGVja19vdXRwdXQob3V0cHV0KQorCisgICAgZGVmIHRlc3Rfc2NyaXB0X3JlZ3J0ZXN0KHNlbGYpOgorICAgICAgICAjIExpYi90ZXN0L3JlZ3J0ZXN0LnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdyZWdydGVzdC5weScpCisKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV90ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlZ3J0ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QucmVncnRlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QucmVncnRlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QuYXV0b3Rlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QuYXV0b3Rlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fdGVzdF9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyBmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0CisgICAgICAgIGNvZGUgPSAnZnJvbSB0ZXN0IGltcG9ydCBhdXRvdGVzdCcKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1jJywgY29kZSwKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X3NjcmlwdF9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyBMaWIvdGVzdC9hdXRvdGVzdC5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAnYXV0b3Rlc3QucHknKQorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCBzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdydW5fdGVzdHMucHkgc2NyaXB0IGlzIG5vdCBpbnN0YWxsZWQnKQorICAgIGRlZiB0ZXN0X3Rvb2xzX3NjcmlwdF9ydW5fdGVzdHMoc2VsZik6CisgICAgICAgICMgVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCAnVG9vbHMnLCAnc2NyaXB0cycsICdydW5fdGVzdHMucHknKQorICAgICAgICBhcmdzID0gW3NjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgcnVuX2JhdGNoKHNlbGYsICphcmdzKToKKyAgICAgICAgcHJvYyA9IHNlbGYucnVuX2NvbW1hbmQoYXJncykKKyAgICAgICAgc2VsZi5jaGVja19vdXRwdXQocHJvYy5zdGRvdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QuYmF0IHNjcmlwdCBpcyBub3QgaW5zdGFsbGVkJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgJ1dpbmRvd3Mgb25seScpCisgICAgZGVmIHRlc3RfdG9vbHNfYnVpbGRib3RfdGVzdChzZWxmKToKKyAgICAgICAgIyBUb29sc1xidWlsZGJvdFx0ZXN0LmJhdAorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsICdUb29scycsICdidWlsZGJvdCcsICd0ZXN0LmJhdCcpCisgICAgICAgIHRlc3RfYXJncyA9IFsnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcl0KKyAgICAgICAgaWYgcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKClbMF0gPT0gJzY0Yml0JzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJy14NjQnKSAgICMgNjQtYml0IGJ1aWxkCisgICAgICAgIGlmIG5vdCBQeV9ERUJVRzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJytkJykgICAgICMgUmVsZWFzZSBidWlsZCwgdXNlIHB5dGhvbi5leGUKKyAgICAgICAgc2VsZi5ydW5fYmF0Y2goc2NyaXB0LCAqdGVzdF9hcmdzLCAqc2VsZi50ZXN0cykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAnV2luZG93cyBvbmx5JykKKyAgICBkZWYgdGVzdF9wY2J1aWxkX3J0KHNlbGYpOgorICAgICAgICAjIFBDYnVpbGRccnQuYmF0CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgcidQQ2J1aWxkXHJ0LmJhdCcpCisgICAgICAgIHJ0X2FyZ3MgPSBbIi1xIl0gICAgICAgICAgICAgIyBRdWljaywgZG9uJ3QgcnVuIHRlc3RzIHR3aWNlCisgICAgICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdID09ICc2NGJpdCc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLXg2NCcpICAgIyA2NC1iaXQgYnVpbGQKKyAgICAgICAgaWYgUHlfREVCVUc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLWQnKSAgICAgIyBEZWJ1ZyBidWlsZCwgdXNlIHB5dGhvbl9kLmV4ZQorICAgICAgICBzZWxmLnJ1bl9iYXRjaChzY3JpcHQsICpydF9hcmdzLCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0cykKKworCitjbGFzcyBBcmdzVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IGFyZ3VtZW50cyBvZiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCisgICAgIiIiCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsICp0ZXN0YXJncywgKiprdyk6CisgICAgICAgIGNtZGFyZ3MgPSBbJy1tJywgJ3Rlc3QnLCAnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpciwgKnRlc3RhcmdzXQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fcHl0aG9uKGNtZGFyZ3MsICoqa3cpCisKKyAgICBkZWYgdGVzdF9mYWlsaW5nX3Rlc3Qoc2VsZik6CisgICAgICAgICMgdGVzdCBhIGZhaWxpbmcgdGVzdAorICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIEZhaWxpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mYWlsaW5nKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImJ1ZyIpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdF9vayA9IHNlbGYuY3JlYXRlX3Rlc3QoJ29rJykKKyAgICAgICAgdGVzdF9mYWlsaW5nID0gc2VsZi5jcmVhdGVfdGVzdCgnZmFpbGluZycsIGNvZGU9Y29kZSkKKyAgICAgICAgdGVzdHMgPSBbdGVzdF9vaywgdGVzdF9mYWlsaW5nXQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCp0ZXN0cywgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzLCBmYWlsZWQ9dGVzdF9mYWlsaW5nKQorCisgICAgZGVmIHRlc3RfcmVzb3VyY2VzKHNlbGYpOgorICAgICAgICAjIHRlc3QgLXUgY29tbWFuZCBsaW5lIG9wdGlvbgorICAgICAgICB0ZXN0cyA9IHt9CisgICAgICAgIGZvciByZXNvdXJjZSBpbiAoJ2F1ZGlvJywgJ25ldHdvcmsnKToKKyAgICAgICAgICAgIGNvZGUgPSAnZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0XG5zdXBwb3J0LnJlcXVpcmVzKCVyKScgJSByZXNvdXJjZQorICAgICAgICAgICAgdGVzdHNbcmVzb3VyY2VdID0gc2VsZi5jcmVhdGVfdGVzdChyZXNvdXJjZSwgY29kZSkKKyAgICAgICAgdGVzdF9uYW1lcyA9IHNvcnRlZCh0ZXN0cy52YWx1ZXMoKSkKKworICAgICAgICAjIC11IGFsbDogMiByZXNvdXJjZXMgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXUnLCAnYWxsJywgKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzKQorCisgICAgICAgICMgLXUgYXVkaW86IDEgcmVzb3VyY2UgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXVhdWRpbycsICp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkPXRlc3RzWyduZXR3b3JrJ10pCisKKyAgICAgICAgIyBubyBvcHRpb246IDAgcmVzb3VyY2VzIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWQ9dGVzdF9uYW1lcykKKworICAgIGRlZiB0ZXN0X3JhbmRvbShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC1yIGFuZCAtLXJhbmRzZWVkIGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCByYW5kb20KKyAgICAgICAgICAgIHByaW50KCJURVNUUkFORE9NOiAlcyIgJSByYW5kb20ucmFuZGludCgxLCAxMDAwKSkKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgncmFuZG9tJywgY29kZSkKKworICAgICAgICAjIGZpcnN0IHJ1biB0byBnZXQgdGhlIG91dHB1dCB3aXRoIHRoZSByYW5kb20gc2VlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXInLCB0ZXN0KQorICAgICAgICByYW5kc2VlZCA9IHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVEVTVFJBTkRPTTogKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHRlc3RfcmFuZG9tID0gaW50KG1hdGNoLmdyb3VwKDEpKQorCisgICAgICAgICMgdHJ5IHRvIHJlcHJvZHVjZSB3aXRoIHRoZSByYW5kb20gc2VlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXInLCAnLS1yYW5kc2VlZD0lcycgJSByYW5kc2VlZCwgdGVzdCkKKyAgICAgICAgcmFuZHNlZWQyID0gc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZHNlZWQyLCByYW5kc2VlZCkKKworICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVEVTVFJBTkRPTTogKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHRlc3RfcmFuZG9tMiA9IGludChtYXRjaC5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3JhbmRvbTIsIHRlc3RfcmFuZG9tKQorCisgICAgZGVmIHRlc3RfZnJvbWZpbGUoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZyb21maWxlCisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2UoNSldCisKKyAgICAgICAgIyBXcml0ZSB0aGUgbGlzdCBvZiBmaWxlcyB1c2luZyBhIGZvcm1hdCBzaW1pbGFyIHRvIHJlZ3J0ZXN0IG91dHB1dDoKKyAgICAgICAgIyBbMS8yXSB0ZXN0XzEKKyAgICAgICAgIyBbMi8yXSB0ZXN0XzIKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJzA6MDA6MDAgWzIvN10gdGVzdF9vcGNvZGVzIC0tIHRlc3RfZ3JhbW1hciB0b29rIDAgc2VjJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBwcmV2aW91cyA9IE5vbmUKKyAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgorICAgICAgICAgICAgICAgIGxpbmUgPSAoIjAwOjAwOiUwMmkgWyVzLyVzXSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGluZGV4LCBpbmRleCwgbGVuKHRlc3RzKSwgbmFtZSkpCisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXM6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gIiAtLSAlcyB0b29rIDAgc2VjIiAlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1mcCkKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IG5hbWUKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAnWzIvN10gdGVzdF9vcGNvZGVzJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKKyAgICAgICAgICAgICAgICBwcmludCgiWyVzLyVzXSAlcyIgJSAoaW5kZXgsIGxlbih0ZXN0cyksIG5hbWUpLCBmaWxlPWZwKQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICd0ZXN0X29wY29kZXMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHByaW50KG5hbWUsIGZpbGU9ZnApCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgZGVmIHRlc3RfaW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgIGNvZGUgPSBURVNUX0lOVEVSUlVQVEVECisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdzaWdpbnQnLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKHRlc3QsIGV4aXRjb2RlPTEpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0LCBvbWl0dGVkPXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3Nsb3dlc3Qoc2VsZik6CisgICAgICAgICMgdGVzdCAtLXNsb3dlc3QKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZSgzKV0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0tc2xvd2VzdCIsICp0ZXN0cykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicKKyAgICAgICAgICAgICAgICAgJyg/Oi0gJXM6IC4qXG4peyVzfScKKyAgICAgICAgICAgICAgICAgJSAoc2VsZi5URVNUTkFNRV9SRUdFWCwgbGVuKHRlc3RzKSkpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3Rfc2xvd19pbnRlcnJ1cHRlZChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjUzNzM6IHRlc3QgLS1zbG93ZXN0IHdpdGggYW4gaW50ZXJydXB0ZWQgdGVzdAorICAgICAgICBjb2RlID0gVEVTVF9JTlRFUlJVUFRFRAorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgic2lnaW50IiwgY29kZT1jb2RlKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgICAgIHRlc3RzID0gKEZhbHNlLCBUcnVlKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICB0ZXN0cyA9IChGYWxzZSwpCisgICAgICAgIGZvciBtdWx0aXByb2Nlc3NpbmcgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBtdWx0aXByb2Nlc3Npbmc6CisgICAgICAgICAgICAgICAgYXJncyA9ICgiLS1zbG93ZXN0IiwgIi1qMiIsIHRlc3QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoIi0tc2xvd2VzdCIsIHRlc3QpCisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygqYXJncywgZXhpdGNvZGU9MSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWl0dGVkPXRlc3QsIGludGVycnVwdGVkPVRydWUpCisKKyAgICAgICAgICAgIHJlZ2V4ID0gKCcxMCBzbG93ZXN0IHRlc3RzOlxuJykKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3RfY292ZXJhZ2Uoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWNvdmVyYWdlCisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdjb3ZlcmFnZScpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCItLWNvdmVyYWdlIiwgdGVzdCkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIFt0ZXN0XSkKKyAgICAgICAgcmVnZXggPSAocidsaW5lcyArY292JSArbW9kdWxlICtcKHBhdGhcKVxuJworICAgICAgICAgICAgICAgICByJyg/OiAqWzAtOV0rICpbMC05XXsxLDJ9JSAqW14gXSsgK1woW14pXStcKSspKycpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0td2FpdAorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnd2FpdCcpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCItLXdhaXQiLCB0ZXN0LCBpbnB1dD0na2V5JykKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1ByZXNzIGFueSBrZXkgdG8gY29udGludWUnKQorCisgICAgZGVmIHRlc3RfZm9yZXZlcihzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tZm9yZXZlcgorICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IGJ1aWx0aW5zCisgICAgICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKworICAgICAgICAgICAgY2xhc3MgRm9yZXZlclRlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAjIFN0b3JlIHRoZSBzdGF0ZSBpbiB0aGUgYnVpbHRpbnMgbW9kdWxlLCBiZWNhdXNlIHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgICAgICMgbW9kdWxlIGlzIHJlbG9hZCBhdCBlYWNoIHJ1bgorICAgICAgICAgICAgICAgICAgICBpZiAnUlVOJyBpbiBidWlsdGlucy5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zLl9fZGljdF9fWydSVU4nXSArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gPj0gMzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImZhaWwgYXQgdGhlIDNyZCBydW5zIikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zLl9fZGljdF9fWydSVU4nXSA9IDEKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnZm9yZXZlcicsIGNvZGU9Y29kZSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZm9yZXZlcicsIHRlc3QsIGV4aXRjb2RlPTEpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0qMywgZmFpbGVkPXRlc3QpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhQeV9ERUJVRywgJ25lZWQgYSBkZWJ1ZyBidWlsZCcpCisgICAgZGVmIHRlc3RfaHVudHJsZWFrc19mZF9sZWFrKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1odW50cmxlYWtzIGZvciBmaWxlIGRlc2NyaXB0b3IgbGVhaworICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKworICAgICAgICAgICAgIyBJc3N1ZSAjMjUzMDY6IERpc2FibGUgcG9wdXBzIGFuZCBsb2dzIHRvIHN0ZGVyciBvbiBhc3NlcnRpb24KKyAgICAgICAgICAgICMgZmFpbHVyZXMgaW4gTVNDUlQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpbXBvcnQgbXN2Y3J0CisgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUKKyAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICAjIG5vIFdpbmRvd3MsIG8gcmVsZWFzZSBidWlsZAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIG0gaW4gW21zdmNydC5DUlRfV0FSTiwgbXN2Y3J0LkNSVF9FUlJPUiwgbXN2Y3J0LkNSVF9BU1NFUlRdOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCAwKQorCisgICAgICAgICAgICBjbGFzcyBGRExlYWtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9sZWFrKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oX19maWxlX18sIG9zLk9fUkRPTkxZKQorICAgICAgICAgICAgICAgICAgICAjIGJ1ZzogbmV2ZXIgY2xvZXMgdGhlIGZpbGUgZGVzY3JpcHRvcgorICAgICAgICAiIiIpCisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdodW50cmxlYWtzJywgY29kZT1jb2RlKQorCisgICAgICAgIGZpbGVuYW1lID0gJ3JlZmxvZy50eHQnCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWh1bnRybGVha3MnLCAnMzozOicsIHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRjb2RlPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIFt0ZXN0XSwgZmFpbGVkPXRlc3QpCisKKyAgICAgICAgbGluZSA9ICdiZWdpbm5pbmcgNiByZXBldGl0aW9uc1xuMTIzNDU2XG4uLi4uLi5cbicKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmUuZXNjYXBlKGxpbmUpKQorCisgICAgICAgIGxpbmUyID0gJyVzIGxlYWtlZCBbMSwgMSwgMV0gZmlsZSBkZXNjcmlwdG9ycywgc3VtPTNcbicgJSB0ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0SW4obGluZTIsIG91dHB1dCkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZwOgorICAgICAgICAgICAgcmVmbG9nID0gZnAucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGxpbmUyLCByZWZsb2cpCisKKyAgICBkZWYgdGVzdF9saXN0X3Rlc3RzKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1saXN0LXRlc3RzCisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaSBpbiByYW5nZSg1KV0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tbGlzdC10ZXN0cycsICp0ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCkuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKaW5kZXggMTU4MmNhYS4uNTg3MjlhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQpAQCAtMjUzLDYgKzI1MywzMSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSAhPSBiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA8IGIpCiAKKyAgICBkZWYgdGVzdF9leGNlcHRpb25fbWVzc2FnZShzZWxmKToKKyAgICAgICAgY2xhc3MgU3BhbToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0ZXN0cyA9IFsKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDwgTm9uZSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IE5vbmUgPCA0MiwgciInPCcgLiogb2YgJ05vbmVUeXBlJyBhbmQgJ2ludCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyID4gTm9uZSwgciInPicgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6ICJmb28iIDwgTm9uZSwgciInPCcgLiogb2YgJ3N0cicgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6ICJmb28iID49IDY2NiwgciInPj0nIC4qIG9mICdzdHInIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPD0gTm9uZSwgciInPD0nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA+PSBOb25lLCByIic+PScgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDwgW10sIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnbGlzdCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6ICgpID4gW10sIHIiJz4nIC4qIG9mICd0dXBsZScgYW5kICdsaXN0JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogTm9uZSA+PSBOb25lLCByIic+PScgLiogb2YgJ05vbmVUeXBlJyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogU3BhbSgpIDwgNDIsIHIiJzwnIC4qIG9mICdTcGFtJyBhbmQgJ2ludCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDwgU3BhbSgpLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ1NwYW0nIiksCisgICAgICAgICAgICAobGFtYmRhOiBTcGFtKCkgPD0gU3BhbSgpLCByIic8PScgLiogb2YgJ1NwYW0nIGFuZCAnU3BhbSciKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgaSwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodGVzdD1pKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCB0ZXN0WzFdKToKKyAgICAgICAgICAgICAgICAgICAgdGVzdFswXSgpCisKKwogY2xhc3MgRGljdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZGljdHMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQppbmRleCA4NTNlNzczLi4wZGMxMDgwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKQEAgLTEsMTEgKzEsMTIgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IHJsY29tcGxldGVyCiAKIGNsYXNzIENvbXBsZXRlTWU6CiAgICAgIiIiIFRyaXZpYWwgY2xhc3MgdXNlZCBpbiB0ZXN0aW5nIHJsY29tcGxldGVyLkNvbXBsZXRlci4gIiIiCiAgICAgc3BhbSA9IDEKKyAgICBfaGFtID0gMgogCiAKIGNsYXNzIFRlc3RSbGNvbXBsZXRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01MiwxOCArNTMsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3N0ci57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQogICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCd0dXBsZS5mb29zcGFtZWdnJyksIFtdKQorICAgICAgICBleHBlY3RlZCA9IHNvcnRlZCh7J05vbmUuJXMlcycgJSAoeCwgJygnIGlmIHggIT0gJ19fZG9jX18nIGVsc2UgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBkaXIoTm9uZSl9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS4nKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdOb25lLl8nKSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdOb25lLl9fJyksIGV4cGVjdGVkKQogCiAgICAgICAgICMgdGVzdCB3aXRoIGEgY3VzdG9taXplZCBuYW1lc3BhY2UKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuc3AnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUuc3BhbSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVtZS5lZ2cnKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5tcm8oJywgJ0NvbXBsZXRlTWUuc3BhbSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5fJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLl9oYW0nXSkKKyAgICAgICAgbWF0Y2hlcyA9IHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5fXycpCisgICAgICAgIGZvciB4IGluIG1hdGNoZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5zdGFydHN3aXRoKCdDb21wbGV0ZU1lLl9fJyksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0NvbXBsZXRlTWUuX19uYW1lX18nLCBtYXRjaGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdDb21wbGV0ZU1lLl9fbmV3X18oJywgbWF0Y2hlcykKIAotICAgICAgICBDb21wbGV0ZU1lLm1lID0gQ29tcGxldGVNZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5tZS5tZS5zcCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5tZS5tZS5zcGFtJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdlZ2cucycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnZWdnLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKKyAgICAgICAgd2l0aCBwYXRjaC5vYmplY3QoQ29tcGxldGVNZSwgIm1lIiwgQ29tcGxldGVNZSwgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUubWUubWUuc3AnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1lLm1lLnNwYW0nXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdlZ2cucycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2VnZy57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQogCiAgICAgZGVmIHRlc3RfZXhjZXNzaXZlX2dldGF0dHIoc2VsZik6CiAgICAgICAgICMgRW5zdXJlIGdldGF0dHIoKSBpcyBpbnZva2VkIG5vIG1vcmUgdGhhbiBvbmNlIHBlciBhdHRyaWJ1dGUKQEAgLTc4LDE0ICs5MywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZi5iJywgMCksICdmLmJhcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5jYWxscywgMSkKIAorICAgIGRlZiB0ZXN0X3VuY3JlYXRlZF9hdHRyKHNlbGYpOgorICAgICAgICAjIEF0dHJpYnV0ZXMgbGlrZSBwcm9wZXJ0aWVzIGFuZCBzbG90cyBzaG91bGQgYmUgY29tcGxldGVkIGV2ZW4gd2hlbgorICAgICAgICAjIHRoZXkgaGF2ZW4ndCBiZWVuIGNyZWF0ZWQgb24gYW4gaW5zdGFuY2UKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgX19zbG90c19fID0gKCJiYXIiLCkKKyAgICAgICAgY29tcGxldGVyID0gcmxjb21wbGV0ZXIuQ29tcGxldGVyKGRpY3QoZj1Gb28oKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdmLicsIDApLCAnZi5iYXInKQorCiAgICAgQHVuaXR0ZXN0Lm1vY2sucGF0Y2goJ3JsY29tcGxldGVyLl9yZWFkbGluZV9hdmFpbGFibGUnLCBGYWxzZSkKICAgICBkZWYgdGVzdF9jb21wbGV0ZShzZWxmKToKICAgICAgICAgY29tcGxldGVyID0gcmxjb21wbGV0ZXIuQ29tcGxldGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJycsIDApLCAnXHQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDApLCAnYW5kJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAxKSwgJ2FzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FzJywgMiksICdhc3NlcnQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYW4nLCAwKSwgJ2FuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMCksICdhbmQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAxKSwgJ2FzICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhcycsIDIpLCAnYXNzZXJ0ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhbicsIDApLCAnYW5kICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdwYScsIDApLCAncGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdGYScsIDApLCAnRmFsc2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZWwnLCAwKSwgJ2VsaWYgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2VsJywgMSksICdlbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyJywgMCksICd0cnk6JykKIAogICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9nbG9iYWxzKHNlbGYpOgogICAgICAgICBuYW1lc3BhY2UgPSB7CkBAIC05OCw5ICsxMjYsMTAgQEAKICAgICAgICAgY29tcGxldGVyID0gcmxjb21wbGV0ZXIuQ29tcGxldGVyKG5hbWVzcGFjZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ0ZhbHNlJywgMCksICdGYWxzZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbXBsZXRlci5jb21wbGV0ZSgnRmFsc2UnLCAxKSkgICMgTm8gZHVwbGljYXRlcwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXNzZXJ0JywgMCksICdhc3NlcnQnKQorICAgICAgICAjIFNwYWNlIG9yIGNvbG9uIGFkZGVkIGR1ZSB0byBiZWluZyBhIHJlc2VydmVkIGtleXdvcmQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDApLCAnYXNzZXJ0ICcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbXBsZXRlci5jb21wbGV0ZSgnYXNzZXJ0JywgMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCd0cnknLCAwKSwgJ3RyeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCd0cnknLCAwKSwgJ3RyeTonKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDEpKQogICAgICAgICAjIE5vIG9wZW5pbmcgYnJhY2tldCAiKCIgYmVjYXVzZSB3ZSBvdmVycm9kZSB0aGUgYnVpbHQtaW4gY2xhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ21lbW9yeXZpZXcnLCAwKSwgJ21lbW9yeXZpZXcnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKaW5kZXggZDAxMjY2Zi4uMGY2NGJhOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CkBAIC0xLDggKzEsOCBAQAogaW1wb3J0IGlvCitpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHVybGxpYi5yb2JvdHBhcnNlcgotZnJvbSB1cmxsaWIuZXJyb3IgaW1wb3J0IFVSTEVycm9yLCBIVFRQRXJyb3IKLWZyb20gdXJsbGliLnJlcXVlc3QgaW1wb3J0IHVybG9wZW4KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgSFRUUFNlcnZlcgogdHJ5OgpAQCAtMTEsMjQ2ICsxMSwyMzkgQEAKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKIAotY2xhc3MgUm9ib3RUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4PU5vbmUsIHBhcnNlcj1Ob25lLCB1cmw9Tm9uZSwgZ29vZD1Ob25lLCBhZ2VudD1Ob25lKToKLSAgICAgICAgIyB3b3JrYXJvdW5kIHRvIG1ha2UgdW5pdHRlc3QgZGlzY292ZXJ5IHdvcmsgKHNlZSAjMTcwNjYpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGluZGV4LCBpbnQpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIGlmIGdvb2Q6Ci0gICAgICAgICAgICBzZWxmLnN0ciA9ICJSb2JvdFRlc3QoJWQsIGdvb2QsICVzKSIgJSAoaW5kZXgsIHVybCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuc3RyID0gIlJvYm90VGVzdCglZCwgYmFkLCAlcykiICUgKGluZGV4LCB1cmwpCi0gICAgICAgIHNlbGYucGFyc2VyID0gcGFyc2VyCi0gICAgICAgIHNlbGYudXJsID0gdXJsCi0gICAgICAgIHNlbGYuZ29vZCA9IGdvb2QKLSAgICAgICAgc2VsZi5hZ2VudCA9IGFnZW50CitjbGFzcyBCYXNlUm9ib3RUZXN0OgorICAgIHJvYm90c190eHQgPSAnJworICAgIGFnZW50ID0gJ3Rlc3Rfcm9ib3RwYXJzZXInCisgICAgZ29vZCA9IFtdCisgICAgYmFkID0gW10KIAotICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYudXJsLCB0dXBsZSk6Ci0gICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi51cmwKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHVybCA9IHNlbGYudXJsCi0gICAgICAgICAgICBhZ2VudCA9IHNlbGYuYWdlbnQKLSAgICAgICAgaWYgc2VsZi5nb29kOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgbGluZXMgPSBpby5TdHJpbmdJTyhzZWxmLnJvYm90c190eHQpLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYucGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCisgICAgICAgIHNlbGYucGFyc2VyLnBhcnNlKGxpbmVzKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnN0cgorICAgIGRlZiBnZXRfYWdlbnRfYW5kX3VybChzZWxmLCB1cmwpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHVybCwgdHVwbGUpOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHVybAorICAgICAgICAgICAgcmV0dXJuIGFnZW50LCB1cmwKKyAgICAgICAgcmV0dXJuIHNlbGYuYWdlbnQsIHVybAogCi10ZXN0cyA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZGVmIHRlc3RfZ29vZF91cmxzKHNlbGYpOgorICAgICAgICBmb3IgdXJsIGluIHNlbGYuZ29vZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQogCi1kZWYgUm9ib3RUZXN0KGluZGV4LCByb2JvdHNfdHh0LCBnb29kX3VybHMsIGJhZF91cmxzLAotICAgICAgICAgICAgICBhZ2VudD0idGVzdF9yb2JvdHBhcnNlciIpOgorICAgIGRlZiB0ZXN0X2JhZF91cmxzKHNlbGYpOgorICAgICAgICBmb3IgdXJsIGluIHNlbGYuYmFkOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQogCi0gICAgbGluZXMgPSBpby5TdHJpbmdJTyhyb2JvdHNfdHh0KS5yZWFkbGluZXMoKQotICAgIHBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoKQotICAgIHBhcnNlci5wYXJzZShsaW5lcykKLSAgICBmb3IgdXJsIGluIGdvb2RfdXJsczoKLSAgICAgICAgdGVzdHMuYWRkVGVzdChSb2JvdFRlc3RDYXNlKGluZGV4LCBwYXJzZXIsIHVybCwgMSwgYWdlbnQpKQotICAgIGZvciB1cmwgaW4gYmFkX3VybHM6Ci0gICAgICAgIHRlc3RzLmFkZFRlc3QoUm9ib3RUZXN0Q2FzZShpbmRleCwgcGFyc2VyLCB1cmwsIDAsIGFnZW50KSkKIAotIyBFeGFtcGxlcyBmcm9tIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy93Yy9ub3JvYm90cy5odG1sIChmZXRjaGVkIDIwMDIpCi0KLSMgMS4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50V2lsZGNhcmRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8gIyBUaGlzIGlzIGFuIGluZmluaXRlIHZpcnR1YWwgVVJMIHNwYWNlCiBEaXNhbGxvdzogL3RtcC8gIyB0aGVzZSB3aWxsIHNvb24gZGlzYXBwZWFyCiBEaXNhbGxvdzogL2Zvby5odG1sCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCAnL3RtcC94eHgnLCAnL2Zvby5odG1sJ10KIAotZ29vZCA9IFsnLycsJy90ZXN0Lmh0bWwnXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsJy90bXAveHh4JywnL2Zvby5odG1sJ10KIAotUm9ib3RUZXN0KDEsIGRvYywgZ29vZCwgYmFkKQotCi0jIDIuCi1kb2MgPSAiIiIKK2NsYXNzIENyYXdsRGVsYXlBbmRDdXN0b21BZ2VudFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiAjIHJvYm90cy50eHQgZm9yIGh0dHA6Ly93d3cuZXhhbXBsZS5jb20vCiAKIFVzZXItYWdlbnQ6ICoKK0NyYXdsLWRlbGF5OiAxCitSZXF1ZXN0LXJhdGU6IDMvMTUKIERpc2FsbG93OiAvY3liZXJ3b3JsZC9tYXAvICMgVGhpcyBpcyBhbiBpbmZpbml0ZSB2aXJ0dWFsIFVSTCBzcGFjZQogCiAjIEN5YmVybWFwcGVyIGtub3dzIHdoZXJlIHRvIGdvLgogVXNlci1hZ2VudDogY3liZXJtYXBwZXIKIERpc2FsbG93OgorICAgICIiIgorICAgIGdvb2QgPSBbJy8nLCAnL3Rlc3QuaHRtbCcsICgnY3liZXJtYXBwZXInLCAnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnKV0KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KIAotIiIiCiAKLWdvb2QgPSBbJy8nLCcvdGVzdC5odG1sJywoJ2N5YmVybWFwcGVyJywnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnKV0KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQotCi1Sb2JvdFRlc3QoMiwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMy4KLWRvYyA9ICIiIgorY2xhc3MgUmVqZWN0QWxsUm9ib3RzVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKICMgZ28gYXdheQogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC8KLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCAnLycsICcvdG1wLyddCiAKLWdvb2QgPSBbXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsJy8nLCcvdG1wLyddCiAKLVJvYm90VGVzdCgzLCBkb2MsIGdvb2QsIGJhZCkKK2NsYXNzIEJhc2VSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCk6CiAKLSMgRXhhbXBsZXMgZnJvbSBodHRwOi8vd3d3LnJvYm90c3R4dC5vcmcvd2Mvbm9yb2JvdHMtcmZjLmh0bWwgKGZldGNoZWQgMjAwMikKKyAgICBkZWYgdGVzdF9yZXF1ZXN0X3JhdGUoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5nb29kICsgc2VsZi5iYWQ6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5jcmF3bF9kZWxheToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLmNyYXdsX2RlbGF5KGFnZW50KSwgc2VsZi5jcmF3bF9kZWxheQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3JhdGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoYWdlbnQpLnJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3JhdGUucmVxdWVzdHMKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIucmVxdWVzdF9yYXRlKGFnZW50KS5zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0X3JhdGUuc2Vjb25kcworICAgICAgICAgICAgICAgICAgICApCiAKLSMgNC4KLWRvYyA9ICIiIgorCitjbGFzcyBDcmF3bERlbGF5QW5kUmVxdWVzdFJhdGVUZXN0KEJhc2VSZXF1ZXN0UmF0ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogZmlndHJlZQorQ3Jhd2wtZGVsYXk6IDMKK1JlcXVlc3QtcmF0ZTogOS8zMAogRGlzYWxsb3c6IC90bXAKIERpc2FsbG93OiAvYSUzY2QuaHRtbAogRGlzYWxsb3c6IC9hJTJmYi5odG1sCiBEaXNhbGxvdzogLyU3ZWpvZS9pbmRleC5odG1sCi0iIiIKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdmaWd0cmVlJworICAgIHJlcXVlc3RfcmF0ZSA9IG5hbWVkdHVwbGUoJ3JlcV9yYXRlJywgJ3JlcXVlc3RzIHNlY29uZHMnKSg5LCAzMCkKKyAgICBjcmF3bF9kZWxheSA9IDMKKyAgICBnb29kID0gWygnZmlndHJlZScsICcvZm9vLmh0bWwnKV0KKyAgICBiYWQgPSBbJy90bXAnLCAnL3RtcC5odG1sJywgJy90bXAvYS5odG1sJywgJy9hJTNjZC5odG1sJywgJy9hJTNDZC5odG1sJywKKyAgICAgICAgICAgJy9hJTJmYi5odG1sJywgJy9+am9lL2luZGV4Lmh0bWwnXQogCi1nb29kID0gW10gIyBYRkFJTCAnL2EvYi5odG1sJwotYmFkID0gWycvdG1wJywnL3RtcC5odG1sJywnL3RtcC9hLmh0bWwnLAotICAgICAgICcvYSUzY2QuaHRtbCcsJy9hJTNDZC5odG1sJywnL2ElMmZiLmh0bWwnLAotICAgICAgICcvfmpvZS9pbmRleC5odG1sJwotICAgICAgIF0KIAotUm9ib3RUZXN0KDQsIGRvYywgZ29vZCwgYmFkLCAnZmlndHJlZScpCi1Sb2JvdFRlc3QoNSwgZG9jLCBnb29kLCBiYWQsICdGaWdUcmVlIFJvYm90IGxpYnd3dy1wZXJsLzUuMDQnKQorY2xhc3MgRGlmZmVyZW50QWdlbnRUZXN0KENyYXdsRGVsYXlBbmRSZXF1ZXN0UmF0ZVRlc3QpOgorICAgIGFnZW50ID0gJ0ZpZ1RyZWUgUm9ib3QgbGlid3d3LXBlcmwvNS4wNCcKKyAgICAjIHRoZXNlIGFyZSBub3QgYWN0dWFsbHkgdGVzdGVkLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBwYXJzZSBpdAorICAgICMgaW4gb3JkZXIgdG8gYWNjb21tb2RhdGUgdGhlIGlucHV0IHBhcmFtZXRlcnMKKyAgICByZXF1ZXN0X3JhdGUgPSBOb25lCisgICAgY3Jhd2xfZGVsYXkgPSBOb25lCiAKLSMgNi4KLWRvYyA9ICIiIgorCitjbGFzcyBJbnZhbGlkUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC90bXAvCiBEaXNhbGxvdzogL2ElM0NkLmh0bWwKIERpc2FsbG93OiAvYS9iLmh0bWwKIERpc2FsbG93OiAvJTdlam9lL2luZGV4Lmh0bWwKLSIiIgorQ3Jhd2wtZGVsYXk6IDMKK1JlcXVlc3QtcmF0ZTogOS9iYW5hbmEKKyAgICAiIiIKKyAgICBnb29kID0gWycvdG1wJ10KKyAgICBiYWQgPSBbJy90bXAvJywgJy90bXAvYS5odG1sJywgJy9hJTNjZC5odG1sJywgJy9hJTNDZC5odG1sJywgJy9hL2IuaHRtbCcsCisgICAgICAgICAgICcvJTdFam9lL2luZGV4Lmh0bWwnXQorICAgIGNyYXdsX2RlbGF5ID0gMwogCi1nb29kID0gWycvdG1wJyxdICMgWEZBSUw6ICcvYSUyZmIuaHRtbCcKLWJhZCA9IFsnL3RtcC8nLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCIvYS9iLmh0bWwiLAotICAgICAgICcvJTdFam9lL2luZGV4Lmh0bWwnXQogCi1Sb2JvdFRlc3QoNiwgZG9jLCBnb29kLCBiYWQpCi0KLSMgRnJvbSBidWcgcmVwb3J0ICM1MjMwNDEKLQotIyA3LgotZG9jID0gIiIiCitjbGFzcyBJbnZhbGlkQ3Jhd2xEZWxheVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgRnJvbSBidWcgcmVwb3J0ICM1MjMwNDEKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1BZ2VudDogKgogRGlzYWxsb3c6IC8uCi0iIiIKK0NyYXdsLWRlbGF5OiBwZWFycworICAgICIiIgorICAgIGdvb2QgPSBbJy9mb28uaHRtbCddCisgICAgIyBidWcgcmVwb3J0IHNheXMgIi8iIHNob3VsZCBiZSBkZW5pZWQsIGJ1dCB0aGF0IGlzIG5vdCBpbiB0aGUgUkZDCisgICAgYmFkID0gW10KIAotZ29vZCA9IFsnL2Zvby5odG1sJ10KLWJhZCA9IFtdICMgQnVnIHJlcG9ydCBzYXlzICIvIiBzaG91bGQgYmUgZGVuaWVkLCBidXQgdGhhdCBpcyBub3QgaW4gdGhlIFJGQwogCi1Sb2JvdFRlc3QoNywgZG9jLCBnb29kLCBiYWQpCi0KLSMgRnJvbSBHb29nbGU6IGh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zdXBwb3J0L3dlYm1hc3RlcnMvYmluL2Fuc3dlci5weT9obD1lbiZhbnN3ZXI9NDAzNjQKLQotIyA4LgotZG9jID0gIiIiCitjbGFzcyBBbm90aGVySW52YWxpZFJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBhbHNvIHRlc3QgdGhhdCBBbGxvdyBhbmQgRGlhc2FsbG93IHdvcmtzIHdlbGwgd2l0aCBlYWNoIG90aGVyCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogQWxsb3c6IC9mb2xkZXIxL215ZmlsZS5odG1sCiBEaXNhbGxvdzogL2ZvbGRlcjEvCi0iIiIKK1JlcXVlc3QtcmF0ZTogd2hhbGUvYmFuYW5hCisgICAgIiIiCisgICAgYWdlbnQgPSAnR29vZ2xlYm90JworICAgIGdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KKyAgICBiYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQogCi1nb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCi1iYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQogCi1Sb2JvdFRlc3QoOCwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi0jIDkuICBUaGlzIGZpbGUgaXMgaW5jb3JyZWN0IGJlY2F1c2UgIkdvb2dsZWJvdCIgaXMgYSBzdWJzdHJpbmcgb2YKLSMgICAgICJHb29nbGVib3QtTW9iaWxlIiwgc28gdGVzdCAxMCB3b3JrcyBqdXN0IGxpa2UgdGVzdCA5LgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRPcmRlcmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdGhlIG9yZGVyIG9mIFVzZXItYWdlbnQgc2hvdWxkIGJlIGNvcnJlY3QuIG5vdGUKKyAgICAjIHRoYXQgdGhpcyBmaWxlIGlzIGluY29ycmVjdCBiZWNhdXNlICJHb29nbGVib3QiIGlzIGEKKyAgICAjIHN1YnN0cmluZyBvZiAiR29vZ2xlYm90LU1vYmlsZSIKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBEaXNhbGxvdzogLwogCiBVc2VyLWFnZW50OiBHb29nbGVib3QtTW9iaWxlCiBBbGxvdzogLwotIiIiCi0KLWdvb2QgPSBbXQotYmFkID0gWycvc29tZXRoaW5nLmpwZyddCi0KLVJvYm90VGVzdCg5LCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLWdvb2QgPSBbXQotYmFkID0gWycvc29tZXRoaW5nLmpwZyddCi0KLVJvYm90VGVzdCgxMCwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QtTW9iaWxlIikKLQotIyAxMS4gIEdldCB0aGUgb3JkZXIgY29ycmVjdC4KLWRvYyA9ICIiIgotVXNlci1hZ2VudDogR29vZ2xlYm90LU1vYmlsZQotQWxsb3c6IC8KLQotVXNlci1hZ2VudDogR29vZ2xlYm90Ci1EaXNhbGxvdzogLwotIiIiCi0KLWdvb2QgPSBbXQotYmFkID0gWycvc29tZXRoaW5nLmpwZyddCi0KLVJvYm90VGVzdCgxMSwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi1nb29kID0gWycvc29tZXRoaW5nLmpwZyddCi1iYWQgPSBbXQotCi1Sb2JvdFRlc3QoMTIsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90LU1vYmlsZSIpCisgICAgIiIiCisgICAgYWdlbnQgPSAnR29vZ2xlYm90JworICAgIGJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQogCiAKLSMgMTMuICBHb29nbGUgYWxzbyBnb3QgdGhlIG9yZGVyIHdyb25nIGluICM4LiAgWW91IG5lZWQgdG8gc3BlY2lmeSB0aGUKLSMgICAgICBVUkxzIGZyb20gbW9yZSBzcGVjaWZpYyB0byBtb3JlIGdlbmVyYWwuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudEdvb2dsZU1vYmlsZVRlc3QoVXNlckFnZW50T3JkZXJpbmdUZXN0KToKKyAgICBhZ2VudCA9ICdHb29nbGVib3QtTW9iaWxlJworCisKK2NsYXNzIEdvb2dsZVVSTE9yZGVyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBHb29nbGUgYWxzbyBnb3QgdGhlIG9yZGVyIHdyb25nLiBZb3UgbmVlZAorICAgICMgdG8gc3BlY2lmeSB0aGUgVVJMcyBmcm9tIG1vcmUgc3BlY2lmaWMgdG8gbW9yZSBnZW5lcmFsCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogQWxsb3c6IC9mb2xkZXIxL215ZmlsZS5odG1sCiBEaXNhbGxvdzogL2ZvbGRlcjEvCi0iIiIKLQotZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQotYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KLQotUm9ib3RUZXN0KDEzLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Imdvb2dsZWJvdCIpCisgICAgIiIiCisgICAgYWdlbnQgPSAnZ29vZ2xlYm90JworICAgIGdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KKyAgICBiYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQogCiAKLSMgMTQuIEZvciBpc3N1ZSAjNjMyNSAocXVlcnkgc3RyaW5nIHN1cHBvcnQpCi1kb2MgPSAiIiIKK2NsYXNzIERpc2FsbG93UXVlcnlTdHJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHNlZSBpc3N1ZSAjNjMyNSBmb3IgZGV0YWlscworICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3NvbWUvcGF0aD9uYW1lPXZhbHVlCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvc29tZS9wYXRoJ10KKyAgICBiYWQgPSBbJy9zb21lL3BhdGg/bmFtZT12YWx1ZSddCiAKLWdvb2QgPSBbJy9zb21lL3BhdGgnXQotYmFkID0gWycvc29tZS9wYXRoP25hbWU9dmFsdWUnXQogCi1Sb2JvdFRlc3QoMTQsIGRvYywgZ29vZCwgYmFkKQotCi0jIDE1LiBGb3IgaXNzdWUgIzQxMDggKG9iZXkgZmlyc3QgKiBlbnRyeSkKLWRvYyA9ICIiIgorY2xhc3MgVXNlRmlyc3RVc2VyQWdlbnRXaWxkY2FyZFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgb2JleSBmaXJzdCAqIGVudHJ5ICgjNDEwOCkKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9zb21lL3BhdGgKIAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9hbm90aGVyL3BhdGgKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9hbm90aGVyL3BhdGgnXQorICAgIGJhZCA9IFsnL3NvbWUvcGF0aCddCiAKLWdvb2QgPSBbJy9hbm90aGVyL3BhdGgnXQotYmFkID0gWycvc29tZS9wYXRoJ10KIAotUm9ib3RUZXN0KDE1LCBkb2MsIGdvb2QsIGJhZCkKLQotIyAxNi4gRW1wdHkgcXVlcnkgKGlzc3VlICMxNzQwMykuIE5vcm1hbGl6aW5nIHRoZSB1cmwgZmlyc3QuCi1kb2MgPSAiIiIKK2NsYXNzIEVtcHR5UXVlcnlTdHJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIG5vcm1hbGl6ZSB0aGUgVVJMIGZpcnN0ICgjMTc0MDMpCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIEFsbG93OiAvc29tZS9wYXRoPwogRGlzYWxsb3c6IC9hbm90aGVyL3BhdGg/Ci0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvc29tZS9wYXRoPyddCisgICAgYmFkID0gWycvYW5vdGhlci9wYXRoPyddCiAKLWdvb2QgPSBbJy9zb21lL3BhdGg/J10KLWJhZCA9IFsnL2Fub3RoZXIvcGF0aD8nXQogCi1Sb2JvdFRlc3QoMTYsIGRvYywgZ29vZCwgYmFkKQorY2xhc3MgRGVmYXVsdEVudHJ5VGVzdChCYXNlUmVxdWVzdFJhdGVUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKK1VzZXItYWdlbnQ6ICoKK0NyYXdsLWRlbGF5OiAxCitSZXF1ZXN0LXJhdGU6IDMvMTUKK0Rpc2FsbG93OiAvY3liZXJ3b3JsZC9tYXAvCisgICAgIiIiCisgICAgcmVxdWVzdF9yYXRlID0gbmFtZWR0dXBsZSgncmVxX3JhdGUnLCAncmVxdWVzdHMgc2Vjb25kcycpKDMsIDE1KQorICAgIGNyYXdsX2RlbGF5ID0gMQorICAgIGdvb2QgPSBbJy8nLCAnL3Rlc3QuaHRtbCddCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCddCiAKIAogY2xhc3MgUm9ib3RIYW5kbGVyKEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIpOgpAQCAtMjgzLDkgKzI3Niw3IEBACiAgICAgICAgIHNlbGYudC5qb2luKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKIAotICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICBzZWxmLnRlc3RQYXNzd29yZFByb3RlY3RlZFNpdGUoKQotCisgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3RQYXNzd29yZFByb3RlY3RlZFNpdGUoc2VsZik6CiAgICAgICAgIGFkZHIgPSBzZWxmLnNlcnZlci5zZXJ2ZXJfYWRkcmVzcwogICAgICAgICB1cmwgPSAnaHR0cDovLycgKyBzdXBwb3J0LkhPU1QgKyAnOicgKyBzdHIoYWRkclsxXSkKQEAgLTI5NSwyNiArMjg2LDQ3IEBACiAgICAgICAgIHBhcnNlci5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXJzZXIuY2FuX2ZldGNoKCIqIiwgcm9ib3RzX3VybCkpCiAKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICclcycgJSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogCiBjbGFzcyBOZXR3b3JrVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgQHVuaXR0ZXN0LnNraXAoJ2RvZXMgbm90IGhhbmRsZSB0aGUgZ3ppcCBlbmNvZGluZyBkZWxpdmVyZWQgYnkgcHlkb3RvcmcnKQotICAgIGRlZiB0ZXN0UHl0aG9uT3JnKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnJlcXVpcmVzKCduZXR3b3JrJykKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgnd3d3LnB5dGhvbi5vcmcnKToKLSAgICAgICAgICAgIHBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoCi0gICAgICAgICAgICAgICAgImh0dHA6Ly93d3cucHl0aG9uLm9yZy9yb2JvdHMudHh0IikKLSAgICAgICAgICAgIHBhcnNlci5yZWFkKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgICAgICAgICBwYXJzZXIuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cucHl0aG9uLm9yZy9yb2JvdHMudHh0IikpCisgICAgYmFzZV91cmwgPSAnaHR0cDovL3d3dy5weXRob250ZXN0Lm5ldC8nCisgICAgcm9ib3RzX3R4dCA9ICd7fWVsc2V3aGVyZS9yb2JvdHMudHh0Jy5mb3JtYXQoYmFzZV91cmwpCiAKLWRlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3VpdGUsIHBhdHRlcm4pOgotICAgIHN1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKE5ldHdvcmtUZXN0Q2FzZSkKLSAgICBzdWl0ZS5hZGRUZXN0KHRlc3RzKQotICAgIHN1aXRlLmFkZFRlc3QoUGFzc3dvcmRQcm90ZWN0ZWRTaXRlVGVzdENhc2UoKSkKLSAgICByZXR1cm4gc3VpdGUKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBwb3J0LnJlcXVpcmVzKCduZXR3b3JrJykKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChjbHMuYmFzZV91cmwpOgorICAgICAgICAgICAgY2xzLnBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoY2xzLnJvYm90c190eHQpCisgICAgICAgICAgICBjbHMucGFyc2VyLnJlYWQoKQorCisgICAgZGVmIHVybChzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuICd7fXt9e30nLmZvcm1hdCgKKyAgICAgICAgICAgIHNlbGYuYmFzZV91cmwsIHBhdGgsICcvJyBpZiBub3Qgb3MucGF0aC5zcGxpdGV4dChwYXRoKVsxXSBlbHNlICcnCisgICAgICAgICkKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmRpc2FsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5hbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzZWxmLnBhcnNlci5tdGltZSgpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNyYXdsX2RlbGF5KCcqJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIucmVxdWVzdF9yYXRlKCcqJykpCisKKyAgICBkZWYgdGVzdF9jYW5fZmV0Y2goc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLnVybCgnZWxzZXdoZXJlJykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnTnV0Y2gnLCBzZWxmLmJhc2VfdXJsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi51cmwoJ2JyaWFuJykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnTnV0Y2gnLCBzZWxmLnVybCgnd2Vic3RhdHMnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCcqJywgc2VsZi51cmwoJ3dlYnN0YXRzJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCcqJywgc2VsZi5iYXNlX3VybCkpCisKKyAgICBkZWYgdGVzdF9yZWFkXzQwNChzZWxmKToKKyAgICAgICAgcGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcihzZWxmLnVybCgnaS1yb2JvdC50eHQnKSkKKyAgICAgICAgcGFyc2VyLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocGFyc2VyLmFsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwYXJzZXIuZGlzYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5tdGltZSgpLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIuY3Jhd2xfZGVsYXkoJyonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLnJlcXVlc3RfcmF0ZSgnKicpKQogCiBpZiBfX25hbWVfXz09J19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CmluZGV4IGRiNTVkYjcuLjAyYjRkNjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQpAQCAtNTc3LDEzICs1NzcsMTQgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuX2RlbF9wa2csIHBrZ19kaXIpCiAgICAgICAgIGZvciBkZXB0aCBpbiByYW5nZSgyLCBtYXhfZGVwdGgrMSk6CiAgICAgICAgICAgICBzZWxmLl9hZGRfcmVsYXRpdmVfbW9kdWxlcyhwa2dfZGlyLCAiIiwgZGVwdGgpCi0gICAgICAgIGZvciBmaW5kZXIsIG1vZF9uYW1lLCBpc3BrZyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kZXIsCisgICAgICAgIGZvciBtb2R1bGVpbmZvIGluIHBrZ3V0aWwud2Fsa19wYWNrYWdlcyhbcGtnX2Rpcl0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZWluZm8sIHBrZ3V0aWwuTW9kdWxlSW5mbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLm1vZHVsZV9maW5kZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKQotICAgICAgICAgICAgaWYgaXNwa2c6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICAgICAgaWYgbW9kdWxlaW5mby5pc3BrZzoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5yZW1vdmUobW9kdWxlaW5mby5uYW1lKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9tb2R1bGVzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tb2R1bGVzLnJlbW92ZShtb2R1bGVpbmZvLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX3BhY2thZ2VzKSwgMCwgZXhwZWN0ZWRfcGFja2FnZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX21vZHVsZXMpLCAwLCBleHBlY3RlZF9tb2R1bGVzKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5IGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQppbmRleCBmZThlNzg1Li5mODZmNTk5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKQEAgLTIsNyArMiw2IEBACiBpbXBvcnQgc2NoZWQKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2VjcmV0cy5weSBiL0xpYi90ZXN0L3Rlc3Rfc2VjcmV0cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzY1Y2YwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zZWNyZXRzLnB5CkBAIC0wLDAgKzEsMTIzIEBACisiIiJUZXN0IHRoZSBzZWNyZXRzIG1vZHVsZS4KKworQXMgbW9zdCBvZiB0aGUgZnVuY3Rpb25zIGluIHNlY3JldHMgYXJlIHRoaW4gd3JhcHBlcnMgYXJvdW5kIGZ1bmN0aW9ucworZGVmaW5lZCBlbHNld2hlcmUsIHdlIGRvbid0IG5lZWQgdG8gdGVzdCB0aGVtIGV4aGF1c3RpdmVseS4KKyIiIgorCisKK2ltcG9ydCBzZWNyZXRzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzdHJpbmcKKworCisjID09PSBVbml0IHRlc3RzID09PQorCitjbGFzcyBDb21wYXJlX0RpZ2VzdF9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCBzZWNyZXRzLmNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uLiIiIgorCisgICAgZGVmIHRlc3RfZXF1YWwoc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYXJlX2RpZ2VzdCBmdW5jdGlvbmFsaXR5IHdpdGggZXF1YWwgKGJ5dGUvdGV4dCkgc3RyaW5ncy4KKyAgICAgICAgZm9yIHMgaW4gKCJhIiwgImJjZCIsICJ4eXoxMjMiKToKKyAgICAgICAgICAgIGEgPSBzKjEwMAorICAgICAgICAgICAgYiA9IHMqMTAwCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEuZW5jb2RlKCd1dGYtOCcpLCBiLmVuY29kZSgndXRmLTgnKSkpCisKKyAgICBkZWYgdGVzdF91bmVxdWFsKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29tcGFyZV9kaWdlc3QgZnVuY3Rpb25hbGl0eSB3aXRoIHVuZXF1YWwgKGJ5dGUvdGV4dCkgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KCJhYmMiLCAiYWJjZCIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYiJhYmMiLCBiImFiY2QiKSkKKyAgICAgICAgZm9yIHMgaW4gKCJ4IiwgIm1uIiwgImExYjJjMyIpOgorICAgICAgICAgICAgYSA9IHMqMTAwICsgInEiCisgICAgICAgICAgICBiID0gcyoxMDAgKyAiayIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChhLmVuY29kZSgndXRmLTgnKSwgYi5lbmNvZGUoJ3V0Zi04JykpKQorCisgICAgZGVmIHRlc3RfYmFkX3R5cGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBjb21wYXJlX2RpZ2VzdCByYWlzZXMgd2l0aCBtaXhlZCB0eXBlcy4KKyAgICAgICAgYSA9ICdhYmNkZScKKyAgICAgICAgYiA9IGEuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGEsIHN0cikKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYiwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWNyZXRzLmNvbXBhcmVfZGlnZXN0LCBiLCBhKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY29tcGFyZV9kaWdlc3QgcmV0dXJucyBhIGJvb2wuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KCJhYmMiLCAiYWJjIiksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KCJhYmMiLCAieHl6IiksIGJvb2wpCisKKworY2xhc3MgUmFuZG9tX1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHdyYXBwZXJzIGFyb3VuZCBTeXN0ZW1SYW5kb20gbWV0aG9kcy4iIiIKKworICAgIGRlZiB0ZXN0X3JhbmRiaXRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgcmFuZGJpdHMuCisgICAgICAgIGVycm1zZyA9ICJyYW5kYml0cyglZCkgcmV0dXJuZWQgJWQiCisgICAgICAgIGZvciBudW1iaXRzIGluICgzLCAxMiwgMzApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNik6CisgICAgICAgICAgICAgICAgbiA9IHNlY3JldHMucmFuZGJpdHMobnVtYml0cykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoMCA8PSBuIDwgMioqbnVtYml0cywgZXJybXNnICUgKG51bWJpdHMsIG4pKQorCisgICAgZGVmIHRlc3RfY2hvaWNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgY2hvaWNlLgorICAgICAgICBpdGVtcyA9IFsxLCAyLCA0LCA4LCAxNiwgMzIsIDY0XQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VjcmV0cy5jaG9pY2UoaXRlbXMpIGluIGl0ZW1zKQorCisgICAgZGVmIHRlc3RfcmFuZGJlbG93KHNlbGYpOgorICAgICAgICAjIFRlc3QgcmFuZGJlbG93LgorICAgICAgICBmb3IgaSBpbiByYW5nZSgyLCAxMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlY3JldHMucmFuZGJlbG93KGkpLCByYW5nZShpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VjcmV0cy5yYW5kYmVsb3csIDApCisKKworY2xhc3MgVG9rZW5fVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgdG9rZW4gZnVuY3Rpb25zLiIiIgorCisgICAgZGVmIHRlc3RfdG9rZW5fZGVmYXVsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRva2VuXyogZnVuY3Rpb25zIGhhbmRsZSBkZWZhdWx0IHNpemUgY29ycmVjdGx5LgorICAgICAgICBmb3IgZnVuYyBpbiAoc2VjcmV0cy50b2tlbl9ieXRlcywgc2VjcmV0cy50b2tlbl9oZXgsCisgICAgICAgICAgICAgICAgICAgICBzZWNyZXRzLnRva2VuX3VybHNhZmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZnVuYz1mdW5jKToKKyAgICAgICAgICAgICAgICBuYW1lID0gZnVuYy5fX25hbWVfXworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnQiICUgbmFtZSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoTm9uZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiVzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBOb25lIiAlIG5hbWUpCisgICAgICAgIHNpemUgPSBzZWNyZXRzLkRFRkFVTFRfRU5UUk9QWQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWNyZXRzLnRva2VuX2J5dGVzKE5vbmUpKSwgc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9oZXgoTm9uZSkpLCAyKnNpemUpCisKKyAgICBkZWYgdGVzdF90b2tlbl9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRva2VuX2J5dGVzLgorICAgICAgICBmb3IgbiBpbiAoMSwgOCwgMTcsIDEwMCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWNyZXRzLnRva2VuX2J5dGVzKG4pLCBieXRlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWNyZXRzLnRva2VuX2J5dGVzKG4pKSwgbikKKworICAgIGRlZiB0ZXN0X3Rva2VuX2hleChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRva2VuX2hleC4KKyAgICAgICAgZm9yIG4gaW4gKDEsIDEyLCAyNSwgOTApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzID0gc2VjcmV0cy50b2tlbl9oZXgobikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uocywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMpLCAyKm4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFsbChjIGluIHN0cmluZy5oZXhkaWdpdHMgZm9yIGMgaW4gcykpCisKKyAgICBkZWYgdGVzdF90b2tlbl91cmxzYWZlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdG9rZW5fdXJsc2FmZS4KKyAgICAgICAgbGVnYWwgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAnLV8nCisgICAgICAgIGZvciBuIGluICgxLCAxMSwgMjgsIDc2KToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgcyA9IHNlY3JldHMudG9rZW5fdXJsc2FmZShuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzLCBzdHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFsbChjIGluIGxlZ2FsIGZvciBjIGluIHMpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CmluZGV4IDc1OTQzMDMuLmFmYTZlN2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5CkBAIC02LDEwICs2LDExIEBACiBpbXBvcnQgY29weQogaW1wb3J0IHBpY2tsZQogZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2h1ZmZsZQotaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBzdHJpbmcKIAogY2xhc3MgUGFzc1RocnUoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC03MjksNiArNzMwLDI4IEBACiAgICAgICAgICAgICBhZGRoYXNodmFsdWUoaGFzaChmcm96ZW5zZXQoW2UgZm9yIGUsIG0gaW4gZWxlbW1hc2tzIGlmIG0maV0pKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaGFzaHZhbHVlcyksIDIqKm4pCiAKKyAgICAgICAgZGVmIGxldHRlcl9yYW5nZShuKToKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmcuYXNjaWlfbGV0dGVyc1s6bl0KKworICAgICAgICBkZWYgemZfcmFuZ2Uobik6CisgICAgICAgICAgICAjIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NldC10aGVvcmV0aWNfZGVmaW5pdGlvbl9vZl9uYXR1cmFsX251bWJlcnMKKyAgICAgICAgICAgIG51bXMgPSBbZnJvemVuc2V0KCldCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuLTEpOgorICAgICAgICAgICAgICAgIG51bSA9IGZyb3plbnNldChudW1zKQorICAgICAgICAgICAgICAgIG51bXMuYXBwZW5kKG51bSkKKyAgICAgICAgICAgIHJldHVybiBudW1zWzpuXQorCisgICAgICAgIGRlZiBwb3dlcnNldChzKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzKSsxKToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIG1hcChmcm96ZW5zZXQsIGl0ZXJ0b29scy5jb21iaW5hdGlvbnMocywgaSkpCisKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMTgpOgorICAgICAgICAgICAgdCA9IDIgKiogbgorICAgICAgICAgICAgbWFzayA9IHQgLSAxCisgICAgICAgICAgICBmb3IgbnVtcyBpbiAocmFuZ2UsIGxldHRlcl9yYW5nZSwgemZfcmFuZ2UpOgorICAgICAgICAgICAgICAgIHUgPSBsZW4oe2ggJiBtYXNrIGZvciBoIGluIG1hcChoYXNoLCBwb3dlcnNldChudW1zKG4pKSl9KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcig0KnUsIHQpCisKIGNsYXNzIEZyb3plblNldFN1YmNsYXNzKGZyb3plbnNldCk6CiAgICAgcGFzcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQppbmRleCA1NWI1MzNkLi4zOTM2Yzk3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKQEAgLTE3MywxNiArMTczLDExNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6ICVzICE9ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmRhdGFbaV1bMF0sIGwsIHNlbGYuZGF0YVtpXVsxOl0pKQogCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdEFtcGVyc2FuZEFuZFBpcGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiAmLCB8IiIiCisgICAgICAgICMgQ291bGQgdGFrZSB0aGVzZSBmb3JtczogJiYsICYsIHwmLCA7JiwgOzsmCisgICAgICAgICMgb2YgY291cnNlLCB0aGUgc2FtZSBhcHBsaWVzIHRvIHwgYW5kIHx8CisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgZm9yIGRlbGltaXRlciBpbiAoJyYmJywgJyYnLCAnfCYnLCAnOyYnLCAnOzsmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3x8JywgJ3wnLCAnJnwnLCAnO3wnLCAnOzt8Jyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgZWNobyBieWUnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXNlY2hvIGJ5ZScgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdlY2hvJywgJ2J5ZSddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFNlbWljb2xvbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mIDsiIiIKKyAgICAgICAgIyBDb3VsZCB0YWtlIHRoZXNlIGZvcm1zOiA7LCA7OywgOyYsIDs7JgorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCc7JywgJzs7JywgJzsmJywgJzs7JicpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzZWNobyBieWUnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnZWNobycsICdieWUnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRSZWRpcmVjdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mID4iIiIKKyAgICAgICAgIyBvZiBjb3Vyc2UsIHRoZSBzYW1lIGFwcGxpZXMgdG8gPCwgfAorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCc8JywgJ3wnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBvdXQnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXMgb3V0JyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzb3V0JyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ291dCddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFBhcmVuKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgKCkiIiIKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBzcmMgPSBbJyggZWNobyBoaSApJywKKyAgICAgICAgICAgICAgICcoZWNobyBoaSknXQorICAgICAgICByZWYgPSBbJygnLCAnZWNobycsICdoaScsICcpJ10KKyAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRDdXN0b20oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyB3aXRoIGN1c3RvbSBjaGFycyIiIgorICAgICAgICByZWYgPSBbJ34vYScsICcmJywgJyYnLCAnYi1jJywgJy0tY29sb3I9YXV0bycsICd8fCcsICdkJywgJyoucHk/J10KKyAgICAgICAgc3MgPSAifi9hICYmIGItYyAtLWNvbG9yPWF1dG8gfHwgZCAqLnB5PyIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz0ifCIpCisgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RUb2tlblR5cGVzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgdG9rZW5zIGFyZSBzcGxpdCB3aXRoIHR5cGVzIGFzIGV4cGVjdGVkLiIiIgorICAgICAgICBmb3Igc291cmNlLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYSAmJiBiIHx8IGMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYScsICdhJyksICgnJiYnLCAnYycpLCAoJ2InLCAnYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnfHwnLCAnYycpLCAoJ2MnLCAnYScpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNvdXJjZSwgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgIG9ic2VydmVkID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdCA9IHMuZ2V0X3Rva2VuKCkKKyAgICAgICAgICAgICAgICBpZiB0ID09IHMuZW9mOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGlmIHRbMF0gaW4gcy5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgdHQgPSAnYycKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0dCA9ICdhJworICAgICAgICAgICAgICAgIG9ic2VydmVkLmFwcGVuZCgodCwgdHQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNlcnZlZCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdFB1bmN0dWF0aW9uSW5Xb3JkQ2hhcnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBhbnkgcHVuY3R1YXRpb24gY2hhcnMgYXJlIHJlbW92ZWQgZnJvbSB3b3JkY2hhcnMiIiIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhX2JfX2MnLCBwdW5jdHVhdGlvbl9jaGFycz0nXycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ18nLCBzLndvcmRjaGFycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnXycsICdiJywgJ19fJywgJ2MnXSkKKworICAgIGRlZiB0ZXN0UHVuY3R1YXRpb25XaXRoV2hpdGVzcGFjZVNwbGl0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgd2l0aCB3aGl0ZXNwYWNlX3NwbGl0LCBiZWhhdmlvdXIgaXMgYXMgZXhwZWN0ZWQiIiIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhICAmJiBiICB8fCAgYycsIHB1bmN0dWF0aW9uX2NoYXJzPScmJykKKyAgICAgICAgIyB3aGl0ZXNwYWNlX3NwbGl0IGlzIEZhbHNlLCBzbyBzcGxpdHRpbmcgd2lsbCBiZSBiYXNlZCBvbgorICAgICAgICAjIHB1bmN0dWF0aW9uX2NoYXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJyYmJywgJ2InLCAnfCcsICd8JywgJ2MnXSkKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCdhICAmJiBiICB8fCAgYycsIHB1bmN0dWF0aW9uX2NoYXJzPScmJykKKyAgICAgICAgcy53aGl0ZXNwYWNlX3NwbGl0ID0gVHJ1ZQorICAgICAgICAjIHdoaXRlc3BhY2Vfc3BsaXQgaXMgVHJ1ZSwgc28gc3BsaXR0aW5nIHdpbGwgYmUgYmFzZWQgb24KKyAgICAgICAgIyB3aGl0ZSBzcGFjZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICcmJicsICdiJywgJ3x8JywgJ2MnXSkKKwogICAgIGRlZiB0ZXN0RW1wdHlTdHJpbmdIYW5kbGluZyhzZWxmKToKICAgICAgICAgIiIiVGVzdCB0aGF0IHBhcnNpbmcgb2YgZW1wdHkgc3RyaW5ncyBpcyBjb3JyZWN0bHkgaGFuZGxlZC4iIiIKICAgICAgICAgIyBzZWUgSXNzdWUgIzIxOTk5CiAgICAgICAgIGV4cGVjdGVkID0gWycnLCAnKScsICdhYmMnXQotCi0gICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcG9zaXg9VHJ1ZSkKLSAgICAgICAgc2xpc3QgPSBsaXN0KHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpc3QsIGV4cGVjdGVkKQorICAgICAgICBmb3IgcHVuY3QgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcG9zaXg9VHJ1ZSwgcHVuY3R1YXRpb25fY2hhcnM9cHVuY3QpCisgICAgICAgICAgICBzbGlzdCA9IGxpc3QocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2xpc3QsIGV4cGVjdGVkKQogICAgICAgICBleHBlY3RlZCA9IFsiJyciLCAnKScsICdhYmMnXQotICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIpCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIiwgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBleHBlY3RlZCkKIAogICAgIGRlZiB0ZXN0UXVvdGUoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CmluZGV4IDFlNjVhMmEuLmFmNWYwMGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CkBAIC0xMzIsOSArMTMyLDcgQEAKICAgICAgICAgd3JpdGVfZmlsZShvcy5wYXRoLmpvaW4odmljdGltLCAnc29tZWZpbGUnKSwgJ2ZvbycpCiAgICAgICAgIHZpY3RpbSA9IG9zLmZzZW5jb2RlKHZpY3RpbSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHZpY3RpbSwgYnl0ZXMpCi0gICAgICAgIHdpbiA9IChvcy5uYW1lID09ICdudCcpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGlmIHdpbiBlbHNlIEV4aXRTdGFjaygpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCisgICAgICAgIHNodXRpbC5ybXRyZWUodmljdGltKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3JtdHJlZV9mYWlsc19vbl9zeW1saW5rKHNlbGYpOgpAQCAtMTMxOSwxMCArMTMxNywxMCBAQAogICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc2luZyB1c2VybmFtZScpCisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzdGluZyB1c2VybmFtZScpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPSdub24tZXhpc2luZyBncm91cG5hbWUnKQorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD0nbm9uLWV4aXN0aW5nIGdyb3VwbmFtZScpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBiJ3NwYW0nKQpAQCAtMTg3MSw3ICsxODY5LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNpemUgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3N0dHknLCAnc2l6ZSddKS5kZWNvZGUoKS5zcGxpdCgpCi0gICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yLAorICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInN0dHkgaW52b2NhdGlvbiBmYWlsZWQiKQogICAgICAgICBleHBlY3RlZCA9IChpbnQoc2l6ZVsxXSksIGludChzaXplWzBdKSkgIyByZXZlcnNlZCBvcmRlcgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDFiODBmZjAuLmFiNDJlZDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0yMiwyOSArMjIsNiBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogCi1jbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1kZWYgZXhpdF9zdWJwcm9jZXNzKCk6Ci0gICAgIiIiVXNlIG9zLl9leGl0KDApIHRvIGV4aXQgdGhlIGN1cnJlbnQgc3VicHJvY2Vzcy4KLQotICAgIE90aGVyd2lzZSwgdGhlIHRlc3QgY2F0Y2hlcyB0aGUgU3lzdGVtRXhpdCBhbmQgY29udGludWVzIGV4ZWN1dGluZwotICAgIGluIHBhcmFsbGVsIHdpdGggdGhlIG9yaWdpbmFsIHRlc3QsIHNvIHlvdSB3aW5kIHVwIHdpdGggYW4KLSAgICBleHBvbmVudGlhbCBudW1iZXIgb2YgdGVzdHMgcnVubmluZyBjb25jdXJyZW50bHkuCi0gICAgIiIiCi0gICAgb3MuX2V4aXQoMCkKLQotCi1kZWYgaWdub3JpbmdfZWludHIoX19mdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9fZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHJldHVybiBOb25lCi0KLQogY2xhc3MgR2VuZXJpY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQpAQCAtNjMsMTQ1ICs0MCw2IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBNQVhfRFVSQVRJT04gPSAyMCAgICMgRW50aXJlIHRlc3Qgc2hvdWxkIGxhc3QgYXQgbW9zdCAyMCBzZWMuCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICBnYy5kaXNhYmxlKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi51c2luZ19nYzoKLSAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0KLSAgICBkZWYgZm9ybWF0X2ZyYW1lKHNlbGYsIGZyYW1lLCBsaW1pdD1Ob25lKToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9zdGFjayhmcmFtZSwgbGltaXQ9bGltaXQpKQotCi0gICAgZGVmIGhhbmRsZXJBKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZXJCKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmJfY2FsbGVkID0gVHJ1ZQotICAgICAgICByYWlzZSBIYW5kbGVyQkNhbGxlZChzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lKSkKLQotICAgIGRlZiB3YWl0KHNlbGYsIGNoaWxkKToKLSAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgdG8gZmluaXNoLCBpZ25vcmluZyBFSU5UUi4iIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBydW5fdGVzdChzZWxmKToKLSAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKLSAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuaGFuZGxlckEpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuaGFuZGxlckIpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjIsIHNpZ25hbC5TSUdfSUdOKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcikKLQotICAgICAgICAjIFZhcmlhYmxlcyB0aGUgc2lnbmFscyB3aWxsIG1vZGlmeToKLSAgICAgICAgc2VsZi5hX2NhbGxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KLSAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctSFVQJywgc3RyKHBpZCldKQotICAgICAgICBpZiBjaGlsZDoKLSAgICAgICAgICAgIHNlbGYud2FpdChjaGlsZCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmFfY2FsbGVkOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkgICMgR2l2ZSB0aGUgc2lnbmFsIHRpbWUgdG8gYmUgZGVsaXZlcmVkLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5hX2NhbGxlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmJfY2FsbGVkKQotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2lnbmFsIGlzbid0IGRlbGl2ZXJlZCB3aGlsZSB0aGUgcHJldmlvdXMKLSAgICAgICAgIyBQb3BlbiBvYmplY3QgaXMgYmVpbmcgZGVzdHJveWVkLCBiZWNhdXNlIF9fZGVsX18gc3dhbGxvd3MKLSAgICAgICAgIyBleGNlcHRpb25zLgotICAgICAgICBkZWwgY2hpbGQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hpbGQgPSBzdWJwcm9jZXNzLlBvcGVuKFsna2lsbCcsICctVVNSMScsIHN0cihwaWQpXSkKLSAgICAgICAgICAgICMgVGhpcyB3YWl0IHNob3VsZCBiZSBpbnRlcnJ1cHRlZCBieSB0aGUgc2lnbmFsJ3MgZXhjZXB0aW9uLgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgICAgICBzZWxmLmZhaWwoJ0hhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKLSAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0KLSAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLVVTUjInLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKSAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW4uCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAjIFRoZSByYWNlIGNvbmRpdGlvbiBpbiBwYXVzZSBkb2Vzbid0IG1hdHRlciBpbiB0aGlzIGNhc2UsCi0gICAgICAgICAgICAjIHNpbmNlIGFsYXJtIGlzIGdvaW5nIHRvIHJhaXNlIGEgS2V5Ym9hcmRFeGNlcHRpb24sIHdoaWNoCi0gICAgICAgICAgICAjIHdpbGwgc2tpcCB0aGUgY2FsbC4KLSAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0gICAgICAgICAgICAjIEJ1dCBpZiBhbm90aGVyIHNpZ25hbCBhcnJpdmVzIGJlZm9yZSB0aGUgYWxhcm0sIHBhdXNlCi0gICAgICAgICAgICAjIG1heSByZXR1cm4gZWFybHkuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsKCJTb21lIG90aGVyIGV4Y2VwdGlvbiB3b2tlIHVzIGZyb20gcGF1c2U6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgicGF1c2UgcmV0dXJuZWQgb2YgaXRzIG93biBhY2NvcmQsIGFuZCB0aGUgc2lnbmFsIgotICAgICAgICAgICAgICAgICAgICAgICIgZGlkbid0IGFycml2ZSBhZnRlciBhbm90aGVyIHNlY29uZC4iKQotCi0gICAgIyBJc3N1ZSAzODY0LCB1bmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzbwotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtPT0nZnJlZWJzZDYnLAotICAgICAgICAnaW50ZXIgcHJvY2VzcyBzaWduYWxzIG5vdCByZWxpYWJsZSAoZG8gbm90IG1peCB3ZWxsIHdpdGggdGhyZWFkaW5nKSAnCi0gICAgICAgICdvbiBmcmVlYnNkNicpCi0gICAgZGVmIHRlc3RfbWFpbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHNwYXducyBhIGNoaWxkIHByb2Nlc3MgdG8gaW5zdWxhdGUgdGhlIG1haW4KLSAgICAgICAgIyB0ZXN0LXJ1bm5pbmcgcHJvY2VzcyBmcm9tIGFsbCB0aGUgc2lnbmFscy4gSXQgdGhlbgotICAgICAgICAjIGNvbW11bmljYXRlcyB3aXRoIHRoYXQgY2hpbGQgcHJvY2VzcyBvdmVyIGEgcGlwZSBhbmQKLSAgICAgICAgIyByZS1yYWlzZXMgaW5mb3JtYXRpb24gYWJvdXQgYW55IGV4Y2VwdGlvbnMgdGhlIGNoaWxkCi0gICAgICAgICMgcmFpc2VzLiBUaGUgcmVhbCB3b3JrIGhhcHBlbnMgaW4gc2VsZi5ydW5fdGVzdCgpLgotICAgICAgICBvc19kb25lX3IsIG9zX2RvbmVfdyA9IG9zLnBpcGUoKQotICAgICAgICB3aXRoIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfciwgJ3JiJykpIGFzIGRvbmVfciwgXAotICAgICAgICAgICAgIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfdywgJ3diJykpIGFzIGRvbmVfdzoKLSAgICAgICAgICAgIGNoaWxkID0gb3MuZm9yaygpCi0gICAgICAgICAgICBpZiBjaGlsZCA9PSAwOgotICAgICAgICAgICAgICAgICMgSW4gdGhlIGNoaWxkIHByb2Nlc3M7IHJ1biB0aGUgdGVzdCBhbmQgcmVwb3J0IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAjIHRocm91Z2ggdGhlIHBpcGUuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkb25lX3IuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAjIEhhdmUgdG8gY2xvc2UgZG9uZV93IGFnYWluIGhlcmUgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAjIGV4aXRfc3VicHJvY2VzcygpIHdpbGwgc2tpcCB0aGUgZW5jbG9zaW5nIHdpdGggYmxvY2suCi0gICAgICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhkb25lX3cpOgotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGRvbmVfdykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoTm9uZSwgZG9uZV93KQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1VoIG9oLCByYWlzZWQgZnJvbSBwaWNrbGUuJykKLSAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZXhpdF9zdWJwcm9jZXNzKCkKLQotICAgICAgICAgICAgZG9uZV93LmNsb3NlKCkKLSAgICAgICAgICAgICMgQmxvY2sgZm9yIHVwIHRvIE1BWF9EVVJBVElPTiBzZWNvbmRzIGZvciB0aGUgdGVzdCB0byBmaW5pc2guCi0gICAgICAgICAgICByLCB3LCB4ID0gc2VsZWN0LnNlbGVjdChbZG9uZV9yXSwgW10sIFtdLCBzZWxmLk1BWF9EVVJBVElPTikKLSAgICAgICAgICAgIGlmIGRvbmVfciBpbiByOgotICAgICAgICAgICAgICAgIHRiID0gcGlja2xlLmxvYWQoZG9uZV9yKQotICAgICAgICAgICAgICAgIGlmIHRiOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwodGIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9zLmtpbGwoY2hpbGQsIHNpZ25hbC5TSUdLSUxMKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGVzdCBkZWFkbG9ja2VkIGFmdGVyICVkIHNlY29uZHMuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTUFYX0RVUkFUSU9OKQotCi0KLUB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBQb3NpeFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdHJpdmlhbF9zaWduYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHBhc3MKQEAgLTIyNCw2ICs2MiwxNSBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIGh1cCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdIVVApLCBodXApCiAKKyAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCisgICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKKyAgICAgICAgJ29uIGZyZWVic2Q2JykKKyAgICBkZWYgdGVzdF9pbnRlcnByb2Nlc3Nfc2lnbmFsKHNlbGYpOgorICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3NpZ25hbGludGVycHJvY3Rlc3Rlci5weScpCisgICAgICAgIGFzc2VydF9weXRob25fb2soc2NyaXB0KQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBzcGVjaWZpYyIpCiBjbGFzcyBXaW5kb3dzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGRhMjBhM2QuLmQyNDVmZDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTE0LDYgKzE0LDcgQEAKIGltcG9ydCBlbmNvZGluZ3MKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogaW1wb3J0IHVybGxpYi5lcnJvcgoraW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXNjb25maWcKIGZyb20gY29weSBpbXBvcnQgY29weQpAQCAtNzUsNyArNzYsNyBAQAogICAgIGRlZiB0ZXN0X2luaXRfcGF0aGluZm8oc2VsZik6CiAgICAgICAgIGRpcl9zZXQgPSBzaXRlLl9pbml0X3BhdGhpbmZvKCkKICAgICAgICAgZm9yIGVudHJ5IGluIFtzaXRlLm1ha2VwYXRoKHBhdGgpWzFdIGZvciBwYXRoIGluIHN5cy5wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggYW5kIG9zLnBhdGguZXhpc3RzKHBhdGgpXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZW50cnksIGRpcl9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmcm9tIHN5cy5wYXRoIG5vdCBmb3VuZCBpbiBzZXQgcmV0dXJuZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgX2luaXRfcGF0aGluZm8oKTogJXMiICUgKGVudHJ5LCBkaXJfc2V0KSkKQEAgLTEzOCwxMCArMTM5LDggQEAKICAgICAgICAgICAgIHJlLmVzY2FwZShvcy5wYXRoLmpvaW4ocHRoX2RpciwgcHRoX2ZuKSkpCiAgICAgICAgICMgWFhYOiBkaXR0byBwcmV2aW91cyBYWFggY29tbWVudC4KICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdUcmFjZWJhY2snKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ0ltcG9ydEVycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdNb2R1bGVOb3RGb3VuZEVycm9yJykKIAotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIGRvZXMgbm90IHJhaXNlIGFuICIKLSAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgZm9yIGZpbGUgcGF0aHMgY29udGFpbmluZyBudWxsIGNoYXJhY3RlcnMiKQogICAgIGRlZiB0ZXN0X2FkZHBhY2thZ2VfaW1wb3J0X2JhZF9wdGhfZmlsZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSA1MjU4CiAgICAgICAgIHB0aF9kaXIsIHB0aF9mbiA9IHNlbGYubWFrZV9wdGgoImFiY1x4MDBkZWZcbiIpCkBAIC0yNDMsMTMgKzI0MiwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCiAgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJy9MaWJyYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzFdLCB3YW50ZWQpCiAgICAgICAgIGVsaWYgb3Muc2VwID09ICcvJzoKICAgICAgICAgICAgICMgT1MgWCBub24tZnJhbXdld29yayBidWlsZHMsIExpbnV4LCBGcmVlQlNELCBldGMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAxKQotICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1swXSwgd2FudGVkKQogICAgICAgICBlbHNlOgpAQCAtNDQ2LDEwICs0NDYsOSBAQAogICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAnLUknLCAnLXYnLCAnLWMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBwcmludChzZXQoc3lzLm1vZHVsZXMpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JykKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHN0ZG91dCA9IHN0ZG91dC5kZWNvZGUoJ3V0Zi04JykKLSAgICAgICAgc3RkZXJyID0gc3RkZXJyLmRlY29kZSgndXRmLTgnKQogICAgICAgICBtb2R1bGVzID0gZXZhbChzdGRvdXQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRJbignc2l0ZScsIG1vZHVsZXMpCkBAIC00NjksNyArNDY4LDEwMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYXBxJywgJ2l0ZXJ0b29scycsICdrZXl3b3JkJywgJ29wZXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBybGliJywgJ3R5cGVzJywgJ3dlYWtyZWYnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uZGlmZmVyZW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODA5NQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZXMuaW50ZXJzZWN0aW9uKGNvbGxlY3Rpb25fbW9kcyksIHN0ZGVycikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rKHNlbGYpOgorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBub3QgYWRkZWQgYnkgc2l0ZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgYWRkZWQgaW4gaXNvbGF0ZWQgbW9kZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZF9leHBsaWNpdChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGNhbiBiZSBleHBsaWNpdGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUsIHN5czsgc2l0ZS5lbmFibGVybGNvbXBsZXRlcigpOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBlbmFibGVybGNvbXBsZXRlcigpIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY3JlYXRlX3VuZGVycHRoX2V4ZShzZWxmLCBsaW5lcyk6CisgICAgICAgIGV4ZV9maWxlID0gb3MucGF0aC5qb2luKG9zLmdldGVudignVEVNUCcpLCBvcy5wYXRoLnNwbGl0KHN5cy5leGVjdXRhYmxlKVsxXSkKKyAgICAgICAgc2h1dGlsLmNvcHkoc3lzLmV4ZWN1dGFibGUsIGV4ZV9maWxlKQorCisgICAgICAgIF9wdGhfZmlsZSA9IG9zLnBhdGguc3BsaXRleHQoZXhlX2ZpbGUpWzBdICsgJy5fcHRoJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4oX3B0aF9maWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZikKKyAgICAgICAgICAgIHJldHVybiBleGVfZmlsZQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBvcy51bmxpbmsoX3B0aF9maWxlKQorICAgICAgICAgICAgb3MudW5saW5rKGV4ZV9maWxlKQorICAgICAgICAgICAgcmFpc2UKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2xlYW51cF91bmRlcnB0aF9leGUoc2VsZiwgZXhlX2ZpbGUpOgorICAgICAgICBfcHRoX2ZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KGV4ZV9maWxlKVswXSArICcuX3B0aCcKKyAgICAgICAgb3MudW5saW5rKF9wdGhfZmlsZSkKKyAgICAgICAgb3MudW5saW5rKGV4ZV9maWxlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICJvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzIikKKyAgICBkZWYgdGVzdF91bmRlcnB0aF9ub3NpdGVfZmlsZShzZWxmKToKKyAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoZW5jb2RpbmdzLl9fZmlsZV9fKSkKKyAgICAgICAgZXhlX3ByZWZpeCA9IG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgZXhlX2ZpbGUgPSBzZWxmLl9jcmVhdGVfdW5kZXJwdGhfZXhlKFsKKyAgICAgICAgICAgICdmYWtlLXBhdGgtbmFtZScsCisgICAgICAgICAgICAqW2xpYnBhdGggZm9yIF8gaW4gcmFuZ2UoMjAwKV0sCisgICAgICAgICAgICAnIyBjb21tZW50JywKKyAgICAgICAgICAgICdpbXBvcnQgc2l0ZScKKyAgICAgICAgXSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAgICAgZW52WydQWVRIT05QQVRIJ10gPSAnZnJvbS1lbnYnCisgICAgICAgICAgICBlbnZbJ1BBVEgnXSA9ICd7fTt7fScuZm9ybWF0KGV4ZV9wcmVmaXgsIG9zLmdldGVudignUEFUSCcpKQorICAgICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNhbGwoW2V4ZV9maWxlLCAnLWMnLAorICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChzeXMuZmxhZ3Mubm9fc2l0ZSBhbmQgJworICAgICAgICAgICAgICAgICdsZW4oc3lzLnBhdGgpID4gMjAwIGFuZCAnCisgICAgICAgICAgICAgICAgJyVyIGluIHN5cy5wYXRoIGFuZCAlciBpbiBzeXMucGF0aCBhbmQgJXIgbm90IGluIHN5cy5wYXRoKScgJSAoCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnZmFrZS1wYXRoLW5hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgbGlicGF0aCwKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdmcm9tLWVudicpLAorICAgICAgICAgICAgICAgICldLCBlbnY9ZW52KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF91bmRlcnB0aF9leGUoZXhlX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgIm9ubHkgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3VuZGVycHRoX2ZpbGUoc2VsZik6CisgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKGVuY29kaW5ncy5fX2ZpbGVfXykpCisgICAgICAgIGV4ZV9wcmVmaXggPSBvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIGV4ZV9maWxlID0gc2VsZi5fY3JlYXRlX3VuZGVycHRoX2V4ZShbCisgICAgICAgICAgICAnZmFrZS1wYXRoLW5hbWUnLAorICAgICAgICAgICAgKltsaWJwYXRoIGZvciBfIGluIHJhbmdlKDIwMCldLAorICAgICAgICAgICAgJyMgY29tbWVudCcsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUnCisgICAgICAgIF0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBlbnZbJ1BZVEhPTlBBVEgnXSA9ICdmcm9tLWVudicKKyAgICAgICAgICAgIGVudlsnUEFUSCddID0gJ3t9O3t9Jy5mb3JtYXQoZXhlX3ByZWZpeCwgb3MuZ2V0ZW52KCdQQVRIJykpCisgICAgICAgICAgICByYyA9IHN1YnByb2Nlc3MuY2FsbChbZXhlX2ZpbGUsICctYycsCisgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZSBhbmQgJworICAgICAgICAgICAgICAgICclciBpbiBzeXMucGF0aCBhbmQgJXIgaW4gc3lzLnBhdGggYW5kICVyIG5vdCBpbiBzeXMucGF0aCknICUgKAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2Zha2UtcGF0aC1uYW1lJyksCisgICAgICAgICAgICAgICAgICAgIGxpYnBhdGgsCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnZnJvbS1lbnYnKSwKKyAgICAgICAgICAgICAgICApXSwgZW52PWVudikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfdW5kZXJwdGhfZXhlKGV4ZV9maWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAwKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5IGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQppbmRleCA4OGRiZmRmLi4zZWViZTk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKQEAgLTUzLDEwICs1Myw2IEBACiAgICAgICAgIHdyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgd3JpdGVfbGluZSwgYidzcGFtXHJcbi5cclxuJykKIAotICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybnMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCi0KICAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9hbmRfZW5hYmxlX1NNVFBVVEY4X3JhaXNlcyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBWYWx1ZUVycm9yLApAQCAtMTA4LDEwICsxMDQsOSBAQAogICAgICAgICAgICAgICIiIikpCiAKICAgICBkZWYgdGVzdF9wcm9jZXNzX21lc3NhZ2Vfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKICAgICAgICAgICAgIHNlbGYuc2VuZF9kYXRhKGNoYW5uZWwsIGInRnJvbTogdGVzdFxuXG5oXHhjM1x4YTlsbG9ceGZmXG4nKQogICAgICAgICBzdGRvdXQgPSBzLmdldHZhbHVlKCkKQEAgLTE3NSwxMyArMTcwLDExIEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjYoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVHY2LCAwKSwgKHN1cHBvcnQuSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUNikKIAogICAgIGRlZiB0ZXN0X3NvY2tldF91c2VzX0lQdjQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksIChzdXBwb3J0LkhPU1R2NiwgMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNvY2tldC5mYW1pbHksIHNvY2tldC5BRl9JTkVUKQogCiAKQEAgLTIwNCwxOCArMTk3LDE4IEBACiAgICAgICAgIGNoYW5uZWwuaGFuZGxlX3JlYWQoKQogCiAgICAgZGVmIHRlc3RfcGFyYW1zX3JlamVjdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+IGZvbz1iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIHNlbGYuZXJyb3JfcmVzcG9uc2UpCiAKICAgICBkZWYgdGVzdF9ub3RoaW5nX2FjY2VwdGVkKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCcpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ1JDUFQgdG86IDxmb29AZXhhbXBsZS5jb20+JykKQEAgLTI1Nyw5ICsyNTAsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICBkZWYgdGVzdF93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShjaGFubmVsLCBiJ0VITE8gZXhhbXBsZScpCiAgICAgICAgIGZvciBsaW5lIGluIFsKICAgICAgICAgICAgIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwIFNNVFBVVEY4JywKQEAgLTc2NSwxMyArNzU4LDYgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19hZGRyID0gJ3NwYW0nCiAKLSAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQotICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCiBjbGFzcyBTTVRQRENoYW5uZWxJUHY2VGVzdChTTVRQRENoYW5uZWxUZXN0KToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC04NDUsMTIgKzgzMSw5IEBACiAgICAgICAgIHNtdHBkLnNvY2tldCA9IGFzeW5jb3JlLnNvY2tldCA9IG1vY2tfc29ja2V0CiAgICAgICAgIHNlbGYub2xkX2RlYnVnc3RyZWFtID0gc210cGQuREVCVUdTVFJFQU0KICAgICAgICAgc2VsZi5kZWJ1ZyA9IHNtdHBkLkRFQlVHU1RSRUFNID0gaW8uU3RyaW5nSU8oKQotICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQotICAgICAgICAjIFNldCBkZWNvZGVfZGF0YSB0byBGYWxzZQotICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwKLSAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCkBAIC0xMDE1LDUgKzk5OCwxNiBAQAogICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKGIndGVzdFxyXG4uJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0WzA6M10sIGInMjUwJykKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geworICAgICAgICAgICAgInByb2dyYW0iLCAiRGV2bnVsbCIsICJERUJVR1NUUkVBTSIsICJORVdMSU5FIiwgIkNPTU1BU1BBQ0UiLAorICAgICAgICAgICAgIkRBVEFfU0laRV9ERUZBVUxUIiwgInVzYWdlIiwgIk9wdGlvbnMiLCAicGFyc2VhcmdzIiwKKworICAgICAgICB9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHNtdHBkLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IGRiZmNhYjguLjU5NTY0YzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0xMyw3ICsxMyw2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBhcnJheQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgY29udGV4dGxpYgogZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eQogaW1wb3J0IHNpZ25hbApAQCAtNjYsMTAgKzY1LDIyIEBACiAgICAgICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBUcnVlCiAKK2RlZiBfaGF2ZV9zb2NrZXRfYWxnKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBBRl9BTEcgc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKwogSEFWRV9TT0NLRVRfQ0FOID0gX2hhdmVfc29ja2V0X2NhbigpCiAKIEhBVkVfU09DS0VUX1JEUyA9IF9oYXZlX3NvY2tldF9yZHMoKQogCitIQVZFX1NPQ0tFVF9BTEcgPSBfaGF2ZV9zb2NrZXRfYWxnKCkKKwogIyBTaXplIGluIGJ5dGVzIG9mIHRoZSBpbnQgdHlwZQogU0laRU9GX0lOVCA9IGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUKIApAQCAtMTE2MSw2ICsxMTcyLDE3IEBACiAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzb2NrLnNlbmQsIGIic3BhbSIpCiAKKyAgICBkZWYgdGVzdENsb3NlRXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNvY2tldC5zb2NrZXQoZmlsZW5vPXNvY2suZmlsZW5vKCkpLmNsb3NlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICMgV2luc29jayBhcHBhcmVudGx5IHJhaXNlcyBFTk9UU09DSworICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnIuZXJybm8sIChlcnJuby5FQkFERiwgZXJybm8uRU5PVFNPQ0spKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJjbG9zZSgpIHNob3VsZCByYWlzZSBFQkFERi9FTk9UU09DSyIpCisKICAgICBkZWYgdGVzdE5ld0F0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgICMgdGVzdGluZyAuZmFtaWx5LCAudHlwZSBhbmQgLnByb3RvY29sCiAKQEAgLTEyMDcsNiArMTIyOSwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzLmlvY3RsLCAtMSwgTm9uZSkKICAgICAgICAgcy5pb2N0bChzb2NrZXQuU0lPX0tFRVBBTElWRV9WQUxTLCAoMSwgMTAwLCAxMDApKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cyBzcGVjaWZpYyIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0xvb3BiYWNrIGZhc3QgcGF0aCBzdXBwb3J0IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQorICAgIGRlZiB0ZXN0X3Npb19sb29wYmFja19mYXN0X3BhdGgoc2VsZik6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMuaW9jdGwoc29ja2V0LlNJT19MT09QQkFDS19GQVNUX1BBVEgsIFRydWUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIFdTQUVPUE5PVFNVUFAgPSAxMDA0NQorICAgICAgICAgICAgaWYgZXhjLndpbmVycm9yID09IFdTQUVPUE5PVFNVUFA6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCBpcyBkZWZpbmVkIGJ1dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lc24ndCBpbXBsZW1lbnRlZCBpbiB0aGlzIFdpbmRvd3MgdmVyc2lvbiIpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHMuaW9jdGwsIHNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRILCBOb25lKQorCiAgICAgZGVmIHRlc3RHZXRhZGRyaW5mbyhzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCdsb2NhbGhvc3QnLCA4MCkKQEAgLTI4NDMsNiArMjg4MSw3IEBACiAgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihtc2cpKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gImRhcndpbiIsICJzZWUgaXNzdWUgIzI0NzI1IikKICAgICBkZWYgdGVzdEZEUGFzc0VtcHR5KHNlbGYpOgogICAgICAgICAjIFRyeSB0byBwYXNzIGFuIGVtcHR5IEZEIGFycmF5LiAgQ2FuIHJlY2VpdmUgZWl0aGVyIG5vIGFycmF5CiAgICAgICAgICMgb3IgYW4gZW1wdHkgYXJyYXkuCkBAIC00NTE0LDYgKzQ1NTMsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc29ja2V0LmdhaWVycm9yLCBPU0Vycm9yKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Moc29ja2V0LnRpbWVvdXQsIE9TRXJyb3IpKQogCisgICAgZGVmIHRlc3Rfc2V0YmxvY2tpbmdfaW52YWxpZGZkKHNlbGYpOgorICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWUgIzI4NDcxCisKKyAgICAgICAgc29jazAgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0sIDApCisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KAorICAgICAgICAgICAgc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwgMCwgc29jazAuZmlsZW5vKCkpCisgICAgICAgIHNvY2swLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suZGV0YWNoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcik6CisgICAgICAgICAgICBzb2NrLnNldGJsb2NraW5nKEZhbHNlKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnbGludXgnLCAnTGludXggc3BlY2lmaWMgdGVzdCcpCiBjbGFzcyBUZXN0TGludXhBYnN0cmFjdE5hbWVzcGFjZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTUzMjEsNiArNTM3MywxODMgQEAKICAgICAgICAgcmV0dXJuIGdldGF0dHIoc29jaywgIl9zZW5kZmlsZV91c2Vfc2VuZGZpbGUiKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBVkVfU09DS0VUX0FMRywgJ0FGX0FMRyByZXF1aXJlZCcpCitjbGFzcyBMaW51eEtlcm5lbENyeXB0b0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0ZXN0cyBmb3IgQUZfQUxHCisgICAgZGVmIGNyZWF0ZV9hbGcoc2VsZiwgdHlwLCBuYW1lKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0FMRywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmJpbmQoKHR5cCwgbmFtZSkpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvciBhcyBlOgorICAgICAgICAgICAgIyB0eXBlIC8gYWxnb3JpdGhtIGlzIG5vdCBhdmFpbGFibGUKKyAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKGUpLCB0eXAsIG5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc29jaworCisgICAgZGVmIHRlc3Rfc2hhMjU2KHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IGJ5dGVzLmZyb21oZXgoImJhNzgxNmJmOGYwMWNmZWE0MTQxNDBkZTVkYWUyMjIzYjAwMzYxYTM5NiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxNzdhOWNiNDEwZmY2MWYyMDAxNWFkIikKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2hhc2gnLCAnc2hhMjU2JykgYXMgYWxnbzoKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGIiYWJjIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YoNTEyKSwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInYScsIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInYicsIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInYycsIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kKGInJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YoNTEyKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9obWFjX3NoYTEoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnl0ZXMuZnJvbWhleCgiZWZmY2RmNmFlNWViMmZhMmQyNzQxNmQ1ZjE4NGRmOWMyNTlhN2M3OSIpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdoYXNoJywgJ2htYWMoc2hhMSknKSBhcyBhbGdvOgorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGIiSmVmZSIpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChiIndoYXQgZG8geWEgd2FudCBmb3Igbm90aGluZz8iKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgICMgQWx0aG91Z2ggaXQgc2hvdWxkIHdvcmsgd2l0aCAzLjE5IGFuZCBuZXdlciB0aGUgdGVzdCBibG9ja3Mgb24KKyAgICAjIFVidW50dSAxNS4xMCB3aXRoIEtlcm5lbCA0LjIuMC0xOS4KKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpCisgICAgZGVmIHRlc3RfYWVzX2NiYyhzZWxmKToKKyAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleCgnMDZhOTIxNDAzNmI4YTE1YjUxMmUwM2Q1MzQxMjAwMDYnKQorICAgICAgICBpdiA9IGJ5dGVzLmZyb21oZXgoJzNkYWZiYTQyOWQ5ZWI0MzBiNDIyZGE4MDJjOWZhYzQxJykKKyAgICAgICAgbXNnID0gYiJTaW5nbGUgYmxvY2sgbXNnIgorICAgICAgICBjaXBoZXJ0ZXh0ID0gYnl0ZXMuZnJvbWhleCgnZTM1Mzc3OWMxMDc5YWViODI3MDg5NDJkYmU3NzE4MWEnKQorICAgICAgICBtc2dsZW4gPSBsZW4obXNnKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnc2tjaXBoZXInLCAnY2JjKGFlcyknKSBhcyBhbGdvOgorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGtleSkKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgaXY9aXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1zb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KG1zZ2xlbiksIGNpcGhlcnRleHQpCisKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFtjaXBoZXJ0ZXh0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KG1zZ2xlbiksIG1zZykKKworICAgICAgICAgICAgIyBsb25nIG1lc3NhZ2UKKyAgICAgICAgICAgIG11bHRpcGxpZXIgPSAxMDI0CisgICAgICAgICAgICBsb25nbXNnID0gW21zZ10gKiBtdWx0aXBsaWVyCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhsb25nbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBlbmMgPSBvcC5yZWN2KG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbmMpLCBtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY1s6bXNnbGVuXSwgY2lwaGVydGV4dCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW2VuY10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIGRlYyA9IG9wLnJlY3YobXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRlYyksIG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlYywgbXNnICogbXVsdGlwbGllcikKKworICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykgICMgc2VlIHRlc3RfYWVzX2NiYworICAgIGRlZiB0ZXN0X2FlYWRfYWVzX2djbShzZWxmKToKKyAgICAgICAga2V5ID0gYnl0ZXMuZnJvbWhleCgnYzkzOWNjMTMzOTdjMWQzN2RlNmFlMGUxY2I3YzQyM2MnKQorICAgICAgICBpdiA9IGJ5dGVzLmZyb21oZXgoJ2IzZDhjYzAxN2NiYjg5YjM5ZTBmNjdlMicpCisgICAgICAgIHBsYWluID0gYnl0ZXMuZnJvbWhleCgnYzNiM2M0MWYxMTNhMzFiNzNkOWE1Y2Q0MzIxMDMwNjknKQorICAgICAgICBhc3NvYyA9IGJ5dGVzLmZyb21oZXgoJzI0ODI1NjAyYmQxMmE5ODRlMDA5MmQzZTQ0OGVkYTVmJykKKyAgICAgICAgZXhwZWN0ZWRfY3QgPSBieXRlcy5mcm9taGV4KCc5M2ZlN2Q5ZTliZmQxMDM0OGE1NjA2ZTVjYWZhNzM1NCcpCisgICAgICAgIGV4cGVjdGVkX3RhZyA9IGJ5dGVzLmZyb21oZXgoJzAwMzJhMWRjODVmMWM5Nzg2OTI1YTJlNzFkODI3MmRkJykKKworICAgICAgICB0YWdsZW4gPSBsZW4oZXhwZWN0ZWRfdGFnKQorICAgICAgICBhc3NvY2xlbiA9IGxlbihhc3NvYykKKworICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnYWVhZCcsICdnY20oYWVzKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwga2V5KQorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9BRUFEX0FVVEhTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHRhZ2xlbikKKworICAgICAgICAgICAgIyBzZW5kIGFzc29jLCBwbGFpbiBhbmQgdGFnIGJ1ZmZlciBpbiBzZXBhcmF0ZSBzdGVwcworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jbGVuPWFzc29jbGVuLCBmbGFncz1zb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChhc3NvYywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwocGxhaW4sIHNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGInXHgwMCcgKiB0YWdsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihhc3NvY2xlbiArIGxlbihwbGFpbikgKyB0YWdsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIG5vdyB3aXRoIG1zZworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgcGxhaW4gKyBiJ1x4MDAnICogdGFnbGVuCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbbXNnXSwgb3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jbGVuPWFzc29jbGVuKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YoYXNzb2NsZW4gKyBsZW4ocGxhaW4pICsgdGFnbGVuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfY3QsIHJlc1thc3NvY2xlbjotdGFnbGVuXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RhZywgcmVzWy10YWdsZW46XSkKKworICAgICAgICAgICAgIyBjcmVhdGUgYW5jIGRhdGEgbWFudWFsbHkKKyAgICAgICAgICAgIHBhY2tfdWludDMyID0gc3RydWN0LlN0cnVjdCgnSScpLnBhY2sKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBtc2cgPSBhc3NvYyArIHBsYWluICsgYidceDAwJyAqIHRhZ2xlbgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2coCisgICAgICAgICAgICAgICAgICAgIFttc2ddLAorICAgICAgICAgICAgICAgICAgICAoW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9PUCwgcGFja191aW50MzIoc29ja2V0LkFMR19PUF9FTkNSWVBUKV0sCisgICAgICAgICAgICAgICAgICAgICBbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0lWLCBwYWNrX3VpbnQzMihsZW4oaXYpKSArIGl2XSwKKyAgICAgICAgICAgICAgICAgICAgIFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfQUVBRF9BU1NPQ0xFTiwgcGFja191aW50MzIoYXNzb2NsZW4pXSwKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGxlbihtc2cpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfY3QsIHJlc1thc3NvY2xlbjotdGFnbGVuXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3RhZywgcmVzWy10YWdsZW46XSkKKworICAgICAgICAgICAgIyBkZWNyeXB0IGFuZCB2ZXJpZnkKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBtc2cgPSBhc3NvYyArIGV4cGVjdGVkX2N0ICsgZXhwZWN0ZWRfdGFnCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbbXNnXSwgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc29jbGVuPWFzc29jbGVuKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YobGVuKG1zZykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGFpbiwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKSAgIyBzZWUgdGVzdF9hZXNfY2JjCisgICAgZGVmIHRlc3RfZHJiZ19wcl9zaGEyNTYoc2VsZik6CisgICAgICAgICMgZGV0ZXJtaW5pc3RpYyByYW5kb20gYml0IGdlbmVyYXRvciwgcHJlZGljdGlvbiByZXNpc3RhbmNlLCBzaGEyNTYKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ3JuZycsICdkcmJnX3ByX3NoYTI1NicpIGFzIGFsZ286CisgICAgICAgICAgICBleHRyYV9zZWVkID0gb3MudXJhbmRvbSgzMikKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBleHRyYV9zZWVkKQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIHJuID0gb3AucmVjdigzMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihybiksIDMyKQorCisgICAgZGVmIHRlc3Rfc2VuZG1zZ19hZmFsZ19hcmdzKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcoKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPU5vbmUpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcoMSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGFzc29jbGVuPU5vbmUpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBhc3NvY2xlbj0tMSkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbR2VuZXJhbE1vZHVsZVRlc3RzLCBCYXNpY1RDUFRlc3QsIFRDUENsb3NlclRlc3QsIFRDUFRpbWVvdXRUZXN0LAogICAgICAgICAgICAgIFRlc3RFeGNlcHRpb25zLCBCdWZmZXJJT1Rlc3QsIEJhc2ljVENQVGVzdDIsIEJhc2ljVURQVGVzdCwgVURQVGltZW91dFRlc3QgXQpAQCAtNTM0Nyw2ICs1NTc2LDcgQEAKICAgICB0ZXN0cy5leHRlbmQoW1RJUENUZXN0LCBUSVBDVGhyZWFkYWJsZVRlc3RdKQogICAgIHRlc3RzLmV4dGVuZChbQmFzaWNDQU5UZXN0LCBDQU5UZXN0XSkKICAgICB0ZXN0cy5leHRlbmQoW0Jhc2ljUkRTVGVzdCwgUkRTVGVzdF0pCisgICAgdGVzdHMuYXBwZW5kKExpbnV4S2VybmVsQ3J5cHRvQVBJKQogICAgIHRlc3RzLmV4dGVuZChbCiAgICAgICAgIENtc2dNYWNyb1Rlc3RzLAogICAgICAgICBTZW5kbXNnVURQVGVzdCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggMGQwZjg2Zi4uMTQwYTZhYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKQEAgLTMsMTIgKzMsMTEgQEAKICIiIgogCiBpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaWduYWwKIGltcG9ydCBzb2NrZXQKLWltcG9ydCBzZWxlY3QKLWltcG9ydCBlcnJubwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzb2NrZXRzZXJ2ZXIKQEAgLTQ2LDcgKzQ1LDcgQEAKICAgICBlbHNlOgogICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRpbWVkIG91dCBvbiAlciIgJSAoc29jaywpKQogCi1pZiBIQVZFX1VOSVhfU09DS0VUUzoKK2lmIEhBVkVfVU5JWF9TT0NLRVRTIGFuZCBIQVZFX0ZPUktJTkc6CiAgICAgY2xhc3MgRm9ya2luZ1VuaXhTdHJlYW1TZXJ2ZXIoc29ja2V0c2VydmVyLkZvcmtpbmdNaXhJbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuVW5peFN0cmVhbVNlcnZlcik6CiAgICAgICAgIHBhc3MKQEAgLTU4LDYgKzU3LDcgQEAKIAogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKIGRlZiBzaW1wbGVfc3VicHJvY2Vzcyh0ZXN0Y2FzZSk6CisgICAgIiIiVGVzdHMgdGhhdCBhIGN1c3RvbSBjaGlsZCBwcm9jZXNzIGlzIG5vdCB3YWl0ZWQgb24gKElzc3VlIDE1NDAzODYpIiIiCiAgICAgcGlkID0gb3MuZm9yaygpCiAgICAgaWYgcGlkID09IDA6CiAgICAgICAgICMgRG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uOyBpdCB3b3VsZCBiZSBjYXVnaHQgYnkgdGhlIHRlc3QgaGFybmVzcy4KQEAgLTEwMyw3ICsxMDMsNiBAQAogICAgICAgICBjbGFzcyBNeVNlcnZlcihzdnJjbHMpOgogICAgICAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAgICAgY2xhc3MgTXlIYW5kbGVyKGhkbHJiYXNlKToKQEAgLTI3OSw2ICsyNzgsMTgyIEBACiAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgLTEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKQogCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEsIHNlcnZlci5zb2NrZXQuZmlsZW5vKCkpCisKKworY2xhc3MgRXJyb3JIYW5kbGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBzZXJ2ZXJzIHBhc3Mgbm9ybWFsIGV4Y2VwdGlvbnMgZnJvbSB0aGUgaGFuZGxlciB0bworICAgIGhhbmRsZV9lcnJvcigpLCBhbmQgdGhhdCBleGl0aW5nIGV4Y2VwdGlvbnMgbGlrZSBTeXN0ZW1FeGl0IGFuZAorICAgIEtleWJvYXJkSW50ZXJydXB0IGFyZSBub3QgcGFzc2VkLiIiIgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKHRlc3Quc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgdGVzdF9zeW5jX2hhbmRsZWQoc2VsZik6CisgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIoVmFsdWVFcnJvcikKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1UcnVlKQorCisgICAgZGVmIHRlc3Rfc3luY19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKKyAgICAgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkaW5nX2hhbmRsZWQoc2VsZik6CisgICAgICAgIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3RocmVhZGluZ19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKFN5c3RlbUV4aXQpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9RmFsc2UpCisKKyAgICBAcmVxdWlyZXNfZm9ya2luZworICAgIGRlZiB0ZXN0X2ZvcmtpbmdfaGFuZGxlZChzZWxmKToKKyAgICAgICAgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBAcmVxdWlyZXNfZm9ya2luZworICAgIGRlZiB0ZXN0X2Zvcmtpbmdfbm90X2hhbmRsZWQoc2VsZik6CisgICAgICAgIEZvcmtpbmdFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIGRlZiBjaGVja19yZXN1bHQoc2VsZiwgaGFuZGxlZCk6CisgICAgICAgIHdpdGggb3Blbih0ZXN0LnN1cHBvcnQuVEVTVEZOKSBhcyBsb2c6CisgICAgICAgICAgICBleHBlY3RlZCA9ICdIYW5kbGVyIGNhbGxlZFxuJyArICdFcnJvciBoYW5kbGVkXG4nICogaGFuZGxlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2cucmVhZCgpLCBleHBlY3RlZCkKKworCitjbGFzcyBCYXNlRXJyb3JUZXN0U2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGNlcHRpb24pOgorICAgICAgICBzZWxmLmV4Y2VwdGlvbiA9IGV4Y2VwdGlvbgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKChIT1NULCAwKSwgQmFkSGFuZGxlcikKKyAgICAgICAgd2l0aCBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oc2VsZi5zZXJ2ZXJfYWRkcmVzcyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBzZWxmLndhaXRfZG9uZSgpCisKKyAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4sICdhJykgYXMgbG9nOgorICAgICAgICAgICAgbG9nLndyaXRlKCdFcnJvciBoYW5kbGVkXG4nKQorCisgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgcGFzcworCisKK2NsYXNzIEJhZEhhbmRsZXIoc29ja2V0c2VydmVyLkJhc2VSZXF1ZXN0SGFuZGxlcik6CisgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4sICdhJykgYXMgbG9nOgorICAgICAgICAgICAgbG9nLndyaXRlKCdIYW5kbGVyIGNhbGxlZFxuJykKKyAgICAgICAgcmFpc2Ugc2VsZi5zZXJ2ZXIuZXhjZXB0aW9uKCdUZXN0IGVycm9yJykKKworCitjbGFzcyBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLlRocmVhZGluZ01peEluLAorICAgICAgICBCYXNlRXJyb3JUZXN0U2VydmVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHNlbGYuZG9uZSA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKnBvcywgKiprdykKKworICAgIGRlZiBzaHV0ZG93bl9yZXF1ZXN0KHNlbGYsICpwb3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLnNodXRkb3duX3JlcXVlc3QoKnBvcywgKiprdykKKyAgICAgICAgc2VsZi5kb25lLnNldCgpCisKKyAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICBzZWxmLmRvbmUud2FpdCgpCisKKworaWYgSEFWRV9GT1JLSU5HOgorICAgIGNsYXNzIEZvcmtpbmdFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLkZvcmtpbmdNaXhJbiwgQmFzZUVycm9yVGVzdFNlcnZlcik6CisgICAgICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgICAgICBbY2hpbGRdID0gc2VsZi5hY3RpdmVfY2hpbGRyZW4KKyAgICAgICAgICAgIG9zLndhaXRwaWQoY2hpbGQsIDApCisgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCisKKworY2xhc3MgU29ja2V0V3JpdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYmFzaWNzKHNlbGYpOgorICAgICAgICBjbGFzcyBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLndmaWxlID0gc2VsZi53ZmlsZQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLndmaWxlX2ZpbGVubyA9IHNlbGYud2ZpbGUuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXF1ZXN0X2ZpbGVubyA9IHNlbGYucmVxdWVzdC5maWxlbm8oKQorCisgICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIDApLCBIYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLnNlcnZlcl9jbG9zZSkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoCisgICAgICAgICAgICBzZXJ2ZXIuYWRkcmVzc19mYW1pbHksIHNvY2tldC5TT0NLX1NUUkVBTSwgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICB3aXRoIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VydmVyLndmaWxlLCBpby5CdWZmZXJlZElPQmFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIud2ZpbGVfZmlsZW5vLCBzZXJ2ZXIucmVxdWVzdF9maWxlbm8pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB3ZmlsZS53cml0ZSgpIHNlbmRzIGRhdGEgaW1tZWRpYXRlbHksIGFuZCB0aGF0IGl0IGRvZXMKKyAgICAgICAgIyBub3QgdHJ1bmNhdGUgc2VuZHMgd2hlbiBpbnRlcnJ1cHRlZCBieSBhIFVuaXggc2lnbmFsCisgICAgICAgIHB0aHJlYWRfa2lsbCA9IHRlc3Quc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNpZ25hbCwgJ3B0aHJlYWRfa2lsbCcpCisKKyAgICAgICAgY2xhc3MgSGFuZGxlcihzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgorICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZW50MSA9IHNlbGYud2ZpbGUud3JpdGUoYid3cml0ZSBkYXRhXG4nKQorICAgICAgICAgICAgICAgICMgU2hvdWxkIGJlIHNlbnQgaW1tZWRpYXRlbHksIHdpdGhvdXQgcmVxdWlyaW5nIGZsdXNoKCkKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZWNlaXZlZCA9IHNlbGYucmZpbGUucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGJpZ19jaHVuayA9IGInXDAnICogdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5zZW50MiA9IHNlbGYud2ZpbGUud3JpdGUoYmlnX2NodW5rKQorCisgICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIDApLCBIYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLnNlcnZlcl9jbG9zZSkKKyAgICAgICAgaW50ZXJydXB0ZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgICAgIGRlZiBzaWduYWxfaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIGludGVycnVwdGVkLnNldCgpCisKKyAgICAgICAgb3JpZ2luYWwgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdVU1IxLCBzaWduYWxfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5zaWduYWwsIHNpZ25hbC5TSUdVU1IxLCBvcmlnaW5hbCkKKyAgICAgICAgcmVzcG9uc2UxID0gTm9uZQorICAgICAgICByZWNlaXZlZDIgPSBOb25lCisgICAgICAgIG1haW5fdGhyZWFkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisKKyAgICAgICAgZGVmIHJ1bl9jbGllbnQoKToKKyAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNlcnZlci5hZGRyZXNzX2ZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgIHNvY2tldC5JUFBST1RPX1RDUCkKKyAgICAgICAgICAgIHdpdGggcywgcy5tYWtlZmlsZSgncmInKSBhcyByZWFkZXI6CisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlcnZlci5zZXJ2ZXJfYWRkcmVzcykKKyAgICAgICAgICAgICAgICBub25sb2NhbCByZXNwb25zZTEKKyAgICAgICAgICAgICAgICByZXNwb25zZTEgPSByZWFkZXIucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIHMuc2VuZGFsbChiJ2NsaWVudCByZXNwb25zZVxuJykKKworICAgICAgICAgICAgICAgIHJlYWRlci5yZWFkKDEwMCkKKyAgICAgICAgICAgICAgICAjIFRoZSBtYWluIHRocmVhZCBzaG91bGQgbm93IGJlIGJsb2NraW5nIGluIGEgc2VuZCgpIHN5c2NhbGwuCisgICAgICAgICAgICAgICAgIyBCdXQgaW4gdGhlb3J5LCBpdCBjb3VsZCBnZXQgaW50ZXJydXB0ZWQgYnkgb3RoZXIgc2lnbmFscywKKyAgICAgICAgICAgICAgICAjIGFuZCB0aGVuIHJldHJpZWQuIFNvIGtlZXAgc2VuZGluZyB0aGUgc2lnbmFsIGluIGEgbG9vcCwgaW4KKyAgICAgICAgICAgICAgICAjIGNhc2UgYW4gZWFybGllciBzaWduYWwgaGFwcGVucyB0byBiZSBkZWxpdmVyZWQgYXQgYW4KKyAgICAgICAgICAgICAgICAjIGluY29udmVuaWVudCBtb21lbnQuCisgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgcHRocmVhZF9raWxsKG1haW5fdGhyZWFkLCBzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgaW50ZXJydXB0ZWQud2FpdCh0aW1lb3V0PWZsb2F0KDEpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbm9ubG9jYWwgcmVjZWl2ZWQyCisgICAgICAgICAgICAgICAgcmVjZWl2ZWQyID0gbGVuKHJlYWRlci5yZWFkKCkpCisKKyAgICAgICAgYmFja2dyb3VuZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bl9jbGllbnQpCisgICAgICAgIGJhY2tncm91bmQuc3RhcnQoKQorICAgICAgICBzZXJ2ZXIuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICBiYWNrZ3JvdW5kLmpvaW4oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZW50MSwgbGVuKHJlc3BvbnNlMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UxLCBiJ3dyaXRlIGRhdGFcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnJlY2VpdmVkLCBiJ2NsaWVudCByZXNwb25zZVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc2VudDIsIHRlc3Quc3VwcG9ydC5TT0NLX01BWF9TSVpFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkMiwgdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUgLSAxMDApCisKIAogY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CmluZGV4IGE1ZDBlYmYuLjk4Y2NhYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKQEAgLTEsNiArMSw1IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCByYW5kb20KLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IGNtcF90b19rZXkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zcHdkLnB5IGIvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CmluZGV4IGJlYTdhYjEuLmU4OTNmM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKQEAgLTU2LDUgKzU2LDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNwd2QuZ2V0c3BuYW0sIGJ5dGVzX25hbWUpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGV1aWQnKSBhbmQgb3MuZ2V0ZXVpZCgpICE9IDAsCisgICAgICAgICAgICAgICAgICAgICAnbm9uLXJvb3QgdXNlciByZXF1aXJlZCcpCitjbGFzcyBUZXN0U3B3ZE5vblJvb3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZ2V0c3BuYW1fZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2JpbicKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhQZXJtaXNzaW9uRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNwd2QuZ2V0c3BuYW0obmFtZSkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInNwd2QgZW50cnkgJXIgZG9lc24ndCBleGlzdDogJXMiICUgKG5hbWUsIGV4YykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAnW0Vycm5vIDEzXSBQZXJtaXNzaW9uIGRlbmllZCcpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggNTUxNTU4My4uZDIwM2NkZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKQEAgLTIxLDYgKzIxLDEzIEBACiAKIHNzbCA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgic3NsIikKIAordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfaGF2ZV90aHJlYWRzID0gRmFsc2UKK2Vsc2U6CisgICAgX2hhdmVfdGhyZWFkcyA9IFRydWUKKwogUFJPVE9DT0xTID0gc29ydGVkKHNzbC5fUFJPVE9DT0xfTkFNRVMpCiBIT1NUID0gc3VwcG9ydC5IT1NUCiBJU19MSUJSRVNTTCA9IHNzbC5PUEVOU1NMX1ZFUlNJT04uc3RhcnRzd2l0aCgnTGlicmVTU0wnKQpAQCAtNTYsMTIgKzYzLDEyIEBACiAjIFR3byBrZXlzIGFuZCBjZXJ0cyBzaWduZWQgYnkgdGhlIHNhbWUgQ0EgKGZvciBTTkkgdGVzdHMpCiBTSUdORURfQ0VSVEZJTEUgPSBkYXRhX2ZpbGUoImtleWNlcnQzLnBlbSIpCiBTSUdORURfQ0VSVEZJTEUyID0gZGF0YV9maWxlKCJrZXljZXJ0NC5wZW0iKQotU0lHTklOR19DQSA9IGRhdGFfZmlsZSgicHljYWNlcnQucGVtIikKKyMgU2FtZSBjZXJ0aWZpY2F0ZSBhcyBweWNhY2VydC5wZW0sIGJ1dCB3aXRob3V0IGV4dHJhIHRleHQgaW4gZmlsZQorU0lHTklOR19DQSA9IGRhdGFfZmlsZSgiY2FwYXRoIiwgImNlZmYxNzEwLjAiKQogIyBjZXJ0IHdpdGggYWxsIGtpbmRzIG9mIHN1YmplY3QgYWx0IG5hbWVzCiBBTExTQU5GSUxFID0gZGF0YV9maWxlKCJhbGxzYW5zLnBlbSIpCiAKIFJFTU9URV9IT1NUID0gInNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0IgotUkVNT1RFX1JPT1RfQ0VSVCA9IGRhdGFfZmlsZSgic2VsZnNpZ25lZF9weXRob250ZXN0ZG90bmV0LnBlbSIpCiAKIEVNUFRZQ0VSVCA9IGRhdGFfZmlsZSgibnVsbGNlcnQucGVtIikKIEJBRENFUlQgPSBkYXRhX2ZpbGUoImJhZGNlcnQucGVtIikKQEAgLTczLDYgKzgwLDEyIEBACiBESEZJTEUgPSBkYXRhX2ZpbGUoImRoMTAyNC5wZW0iKQogQllURVNfREhGSUxFID0gb3MuZnNlbmNvZGUoREhGSUxFKQogCisjIE5vdCBkZWZpbmVkIGluIGFsbCB2ZXJzaW9ucyBvZiBPcGVuU1NMCitPUF9OT19DT01QUkVTU0lPTiA9IGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKQorT1BfU0lOR0xFX0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApCitPUF9TSU5HTEVfRUNESF9VU0UgPSBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApCitPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgPSBnZXRhdHRyKHNzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCisKIAogZGVmIGhhbmRsZV9lcnJvcihwcmVmaXgpOgogICAgIGV4Y19mb3JtYXQgPSAnICcuam9pbih0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqc3lzLmV4Y19pbmZvKCkpKQpAQCAtMTMwLDYgKzE0MywyMSBAQAogbmVlZHNfc25pID0gdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX1NOSSwgIlNOSSBzdXBwb3J0IG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKIAogCitkZWYgdGVzdF93cmFwX3NvY2tldChzb2NrLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTLCAqLAorICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNhX2NlcnRzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGtleWZpbGU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKKyAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsX3ZlcnNpb24pCisgICAgaWYgY2VydF9yZXFzIGlzIG5vdCBOb25lOgorICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gY2VydF9yZXFzCisgICAgaWYgY2FfY2VydHMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhX2NlcnRzKQorICAgIGlmIGNlcnRmaWxlIGlzIG5vdCBOb25lIG9yIGtleWZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlKQorICAgIGlmIGNpcGhlcnMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKKyAgICByZXR1cm4gY29udGV4dC53cmFwX3NvY2tldChzb2NrLCAqKmt3YXJncykKKwogY2xhc3MgQmFzaWNTb2NrZXRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jb25zdGFudHMoc2VsZik6CkBAIC0zNTAsMTcgKzM3OCwxNyBAQAogICAgICAgICAjIElzc3VlICM3OTQzOiBhbiBTU0wgb2JqZWN0IGRvZXNuJ3QgY3JlYXRlIHJlZmVyZW5jZSBjeWNsZXMgd2l0aAogICAgICAgICAjIGl0c2VsZi4KICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHMpCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzKQogICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHNzKQogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBSZXNvdXJjZVdhcm5pbmcpKToKICAgICAgICAgICAgIGRlbCBzcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cigpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCiAKICAgICBkZWYgdGVzdF93cmFwcGVkX3VuY29ubmVjdGVkKHNlbGYpOgogICAgICAgICAjIE1ldGhvZHMgb24gYW4gdW5jb25uZWN0ZWQgU1NMU29ja2V0IHByb3BhZ2F0ZSB0aGUgb3JpZ2luYWwKICAgICAgICAgIyBPU0Vycm9yIHJhaXNlIGJ5IHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMpIGFzIHNzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdiwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNzLnJlY3ZfaW50bywgYnl0ZWFycmF5KGIneCcpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdmZyb20sIDEpCkBAIC0zNzQsMTAgKzQwMiwxMCBAQAogICAgICAgICBmb3IgdGltZW91dCBpbiAoTm9uZSwgMC4wLCA1LjApOgogICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgICAgICBzLnNldHRpbWVvdXQodGltZW91dCkKLSAgICAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMpIGFzIHNzOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZW91dCwgc3MuZ2V0dGltZW91dCgpKQogCi0gICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Vycm9yc19zc2x3cmFwKHNlbGYpOgogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCIsCkBAIC0zODcsMTAgKzQxNSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0LCBzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2VydGZpbGUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHNlcnZlci1zaWRlIG9wZXJhdGlvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0LCBzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT0iIikKKyAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQogICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbid0IGNvbm5lY3QgaW4gc2VydmVyLXNpZGUgbW9kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChIT1NULCA4MDgwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChIT1NULCA4MDgwKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHNvY2s6CiAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0KHNvY2ssIGNlcnRmaWxlPU5PTkVYSVNUSU5HQ0VSVCkKQEAgLTQxMyw3ICs0NDEsNyBAQAogICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6Ci0gICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywKKyAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQoc29jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1jZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCiAKQEAgLTYwMCw3ICs2MjgsNyBAQAogICAgICAgICBzLmxpc3RlbigpCiAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQogICAgICAgICBjLmNvbm5lY3Qocy5nZXRzb2NrbmFtZSgpKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChjLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChjLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkgYXMgc3M6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInVua25vd24tdHlwZSIpCiAgICAgICAgIHMuY2xvc2UoKQpAQCAtNjEwLDE1ICs2MzgsMTUgQEAKICAgICBkZWYgdGVzdF90bHNfdW5pcXVlX2NoYW5uZWxfYmluZGluZyhzZWxmKToKICAgICAgICAgIyB1bmNvbm5lY3RlZCBzaG91bGQgcmV0dXJuIE5vbmUgZm9yIGtub3duIHR5cGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCiAgICAgICAgICMgdGhlIHNhbWUgZm9yIHNlcnZlci1zaWRlCiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzLCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1DRVJURklMRSkgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCiAKICAgICBkZWYgdGVzdF9kZWFsbG9jX3dhcm4oc2VsZik6Ci0gICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCiAgICAgICAgIHIgPSByZXByKHNzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUmVzb3VyY2VXYXJuaW5nKSBhcyBjbToKICAgICAgICAgICAgIHNzID0gTm9uZQpAQCAtNzM3LDcgKzc2NSw3IEBACiAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcikgYXMgY3g6Ci0gICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQocywgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCisgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHMsIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjeC5leGNlcHRpb24pLCAib25seSBzdHJlYW0gc29ja2V0cyBhcmUgc3VwcG9ydGVkIikKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKSBhcyBjeDoKQEAgLTgwOSw2ICs4MzcsMjIgQEAKICAgICAgICAgc2VsZi5jZXJ0X3RpbWVfb2soIkZlYiAgOSAwMDowMDowMCAyMDA3IEdNVCIsIDExNzA5NzkyMDAuMCkKICAgICAgICAgc2VsZi5jZXJ0X3RpbWVfZmFpbChsb2NhbF9mZWJydWFyeV9uYW1lKCkgKyAiICA5IDAwOjAwOjAwIDIwMDcgR01UIikKIAorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXhfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlcnZlciA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuY2xvc2UpCisgICAgICAgIHBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZXJ2ZXIpICAjIFJlc2VydmUgcG9ydCBidXQgZG9uJ3QgbGlzdGVuCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChIT1NULCBwb3J0KSkKKyAgICAgICAgIyBJc3N1ZSAjMTk5MTk6IFdpbmRvd3MgbWFjaGluZXMgb3IgVk1zIGhvc3RlZCBvbiBXaW5kb3dzCisgICAgICAgICMgbWFjaGluZXMgc29tZXRpbWVzIHJldHVybiBFV09VTERCTE9DSy4KKyAgICAgICAgZXJyb3JzID0gKAorICAgICAgICAgICAgZXJybm8uRUNPTk5SRUZVU0VELCBlcnJuby5FSE9TVFVOUkVBQ0gsIGVycm5vLkVUSU1FRE9VVCwKKyAgICAgICAgICAgIGVycm5vLkVXT1VMREJMT0NLLAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsIGVycm9ycykKKwogCiBjbGFzcyBDb250ZXh0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04MzQsMTMgKzg3OCwyMiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgogICAgICAgICAgICAgY3R4LnNldF9jaXBoZXJzKCJeJDosOz8qJ2Rvcm90aHl4IikKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPIDwgKDEsIDAsIDIsIDAsIDApLCAnT3BlblNTTCB0b28gb2xkJykKKyAgICBkZWYgdGVzdF9nZXRfY2lwaGVycyhzZWxmKToKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHguc2V0X2NpcGhlcnMoJ0FFU0dDTScpCisgICAgICAgIG5hbWVzID0gc2V0KGRbJ25hbWUnXSBmb3IgZCBpbiBjdHguZ2V0X2NpcGhlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQUVTMjU2LUdDTS1TSEEzODQnLCBuYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQUVTMTI4LUdDTS1TSEEyNTYnLCBuYW1lcykKKwogICAgIEBza2lwX2lmX2Jyb2tlbl91YnVudHVfc3NsCiAgICAgZGVmIHRlc3Rfb3B0aW9ucyhzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICAjIE9QX0FMTCB8IE9QX05PX1NTTHYyIHwgT1BfTk9fU1NMdjMgaXMgdGhlIGRlZmF1bHQgdmFsdWUKICAgICAgICAgZGVmYXVsdCA9IChzc2wuT1BfQUxMIHwgc3NsLk9QX05PX1NTTHYyIHwgc3NsLk9QX05PX1NTTHYzKQotICAgICAgICBpZiBub3QgSVNfTElCUkVTU0wgYW5kIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+PSAoMSwgMSwgMCk6Ci0gICAgICAgICAgICBkZWZhdWx0IHw9IHNzbC5PUF9OT19DT01QUkVTU0lPTgorICAgICAgICAjIFNTTENvbnRleHQgYWxzbyBlbmFibGVzIHRoZXNlIGJ5IGRlZmF1bHQKKyAgICAgICAgZGVmYXVsdCB8PSAoT1BfTk9fQ09NUFJFU1NJT04gfCBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UgfAorICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFIHwgT1BfU0lOR0xFX0VDREhfVVNFKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQsIGN0eC5vcHRpb25zKQogICAgICAgICBjdHgub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0IHwgc3NsLk9QX05PX1RMU3YxLCBjdHgub3B0aW9ucykKQEAgLTEyMDUsMTYgKzEyNTgsMjkgQEAKICAgICAgICAgICAgIHN0YXRzWyJ4NTA5Il0gKz0gMQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHguY2VydF9zdG9yZV9zdGF0cygpLCBzdGF0cykKIAorICAgIGRlZiBfYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhzZWxmLCBjdHgpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIGlmIE9QX05PX0NPTVBSRVNTSU9OICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX05PX0NPTVBSRVNTSU9OKQorICAgICAgICBpZiBPUF9TSU5HTEVfREhfVVNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfU0lOR0xFX0RIX1VTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfU0lOR0xFX0RIX1VTRSkKKyAgICAgICAgaWYgT1BfU0lOR0xFX0VDREhfVVNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfU0lOR0xFX0VDREhfVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfRUNESF9VU0UpCisgICAgICAgIGlmIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSAhPSAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKQorCiAgICAgZGVmIHRlc3RfY3JlYXRlX2RlZmF1bHRfY29udGV4dChzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQorCiAKICAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CiAgICAgICAgICAgICBjYWRhdGEgPSBmLnJlYWQoKQpAQCAtMTIyMiw0MCArMTI4OCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWRhdGE9Y2FkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dChzc2wuUHVycG9zZS5DTElFTlRfQVVUSCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9OT05FKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfTk9fQ09NUFJFU1NJT04iLCAwKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgZGVmIHRlc3RfX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCkBAIC0xMjYzLDEyICsxMzEzLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChwdXJwb3NlPXNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICBkZWYgdGVzdF9jaGVja19ob3N0bmFtZShzZWxmKToKICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQpAQCAtMTI5Miw2ICsxMzQyLDE3IEBACiAgICAgICAgIGN0eC5jaGVja19ob3N0bmFtZSA9IEZhbHNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQogCisgICAgZGVmIHRlc3RfY29udGV4dF9jbGllbnRfc2VydmVyKHNlbGYpOgorICAgICAgICAjIFBST1RPQ09MX1RMU19DTElFTlQgaGFzIHNhbmUgZGVmYXVsdHMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdHguY2hlY2tfaG9zdG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKKworICAgICAgICAjIFBST1RPQ09MX1RMU19TRVJWRVIgaGFzIGRpZmZlcmVudCBidXQgYWxzbyBzYW5lIGRlZmF1bHRzCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN0eC5jaGVja19ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCisKIAogY2xhc3MgU1NMRXJyb3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTEzOTcsMTQwICsxNDU4LDEwNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJpby53cml0ZSwgMSkKIAogCi1jbGFzcyBOZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitAdW5pdHRlc3Quc2tpcFVubGVzcyhfaGF2ZV90aHJlYWRzLCAiTmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCitjbGFzcyBTaW1wbGVCYWNrZ3JvdW5kVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgdGhhdCBjb25uZWN0IHRvIGEgc2ltcGxlIHNlcnZlciBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihTSUdORURfQ0VSVEZJTEUpCisgICAgICAgIHNlbGYuc2VydmVyX2FkZHIgPSAoSE9TVCwgc2VydmVyLnBvcnQpCisgICAgICAgIHNlcnZlci5fX2VudGVyX18oKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLl9fZXhpdF9fLCBOb25lLCBOb25lLCBOb25lKQogCiAgICAgZGVmIHRlc3RfY29ubmVjdChzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe30sIHMuZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlcnZlcl9zaWRlKQogCi0gICAgICAgICAgICAjIHRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vIHZlcmlmaWNhdGlvbiBjZXJ0cwotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCAoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyB0aGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9U0lHTklOR19DQSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uocy5zZXJ2ZXJfc2lkZSkKIAotICAgICAgICAgICAgIyB0aGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICBkZWYgdGVzdF9jb25uZWN0X2ZhaWwoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzLiBDb25uZWN0aW9uCisgICAgICAgICMgZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgIyB0ZXN0IG1ldGhvZC4KKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJjZXJ0aWZpY2F0ZSB2ZXJpZnkgZmFpbGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTMyNjogY2hlY2sgY29ubmVjdF9leCgpIGltcGxlbWVudGF0aW9uCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQzKSkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzLmNvbm5lY3RfZXgoc2VsZi5zZXJ2ZXJfYWRkcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAKICAgICBkZWYgdGVzdF9ub25fYmxvY2tpbmdfY29ubmVjdF9leChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTEzMjY6IG5vbi1ibG9ja2luZyBjb25uZWN0X2V4KCkgc2hvdWxkIGFsbG93IGhhbmRzaGFrZQogICAgICAgICAjIHRvIHByb2NlZWQgYWZ0ZXIgdGhlIHNvY2tldCBnZXRzIHJlYWR5LgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgIyBFV09VTERCTE9DSyB1bmRlciBXaW5kb3dzLCBFSU5QUk9HUkVTUyBlbHNld2hlcmUKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKDAsIGVycm5vLkVJTlBST0dSRVNTLCBlcnJuby5FV09VTERCTE9DSykpCisgICAgICAgICMgV2FpdCBmb3IgY29ubmVjdCB0byBmaW5pc2gKKyAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQorICAgICAgICAjIE5vbi1ibG9ja2luZyBoYW5kc2hha2UKKyAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICAjIEVXT1VMREJMT0NLIHVuZGVyIFdpbmRvd3MsIEVJTlBST0dSRVNTIGVsc2V3aGVyZQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsICgwLCBlcnJuby5FSU5QUk9HUkVTUywgZXJybm8uRVdPVUxEQkxPQ0spKQotICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgY29ubmVjdCB0byBmaW5pc2gKKyAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgogICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAjIE5vbi1ibG9ja2luZyBoYW5kc2hha2UKLSAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X3RpbWVvdXRfY29ubmVjdF9leChzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTIwNjU6IG9uIGEgdGltZW91dCwgY29ubmVjdF9leCgpIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsCi0gICAgICAgICMgZXJybm8gKG1pbWlja2luZyB0aGUgYmVoYXZpb3VyIG9mIG5vbi1TU0wgc29ja2V0cykuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLnNldHRpbWVvdXQoMC4wMDAwMDAxKQotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBpZiByYyA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJSRU1PVEVfSE9TVCByZXNwb25kZWQgdG9vIHF1aWNrbHkiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsIChlcnJuby5FQUdBSU4sIGVycm5vLkVXT1VMREJMT0NLKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF9jb25uZWN0X2V4X2Vycm9yKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0NCkpCi0gICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTk5MTk6IFdpbmRvd3MgbWFjaGluZXMgb3IgVk1zIGhvc3RlZCBvbiBXaW5kb3dzCi0gICAgICAgICAgICAgICAgIyBtYWNoaW5lcyBzb21ldGltZXMgcmV0dXJuIEVXT1VMREJMT0NLLgotICAgICAgICAgICAgICAgIGVycm9ycyA9ICgKLSAgICAgICAgICAgICAgICAgICAgZXJybm8uRUNPTk5SRUZVU0VELCBlcnJuby5FSE9TVFVOUkVBQ0gsIGVycm5vLkVUSU1FRE9VVCwKLSAgICAgICAgICAgICAgICAgICAgZXJybm8uRVdPVUxEQkxPQ0ssCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmMsIGVycm9ycykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgICAgICMgU1NMIGVzdGFibGlzaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY29udGV4dChzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICAjIFNhbWUgYXMgdGVzdF9jb25uZWN0LCBidXQgd2l0aCBhIHNlcGFyYXRlbHkgY3JlYXRlZCBjb250ZXh0Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgU2FtZSB3aXRoIGEgc2VydmVyIGhvc3RuYW1lCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9UkVNT1RFX0hPU1QpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vIHZlcmlmaWNhdGlvbiBjZXJ0cwotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0LCAoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyBTYW1lIGFzIHRlc3RfY29ubmVjdCwgYnV0IHdpdGggYSBzZXBhcmF0ZWx5IGNyZWF0ZWQgY29udGV4dAorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQorICAgICAgICAjIFNhbWUgd2l0aCBhIHNlcnZlciBob3N0bmFtZQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9ImR1bW15IikgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAjIFRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisKKyAgICBkZWYgdGVzdF9jb25uZWN0X3dpdGhfY29udGV4dF9mYWlsKHNlbGYpOgorICAgICAgICAjIFRoaXMgc2hvdWxkIGZhaWwgYmVjYXVzZSB3ZSBoYXZlIG5vIHZlcmlmaWNhdGlvbiBjZXJ0cy4gQ29ubmVjdGlvbgorICAgICAgICAjIGZhaWx1cmUgY3Jhc2hlcyBUaHJlYWRlZEVjaG9TZXJ2ZXIsIHNvIHJ1biB0aGlzIGluIGFuIGluZGVwZW5kZW50CisgICAgICAgICMgdGVzdCBtZXRob2QuCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2NhcGF0aChzZWxmKToKICAgICAgICAgIyBWZXJpZnkgc2VydmVyIGNlcnRpZmljYXRlcyB1c2luZyB0aGUgYGNhcGF0aGAgYXJndW1lbnQKQEAgLTE1MzgsMTk4ICsxNTY0LDEzMCBAQAogICAgICAgICAjIE9wZW5TU0wgMC45LjhuIGFuZCAxLjAuMCwgYXMgYSByZXN1bHQgdGhlIGNhcGF0aCBkaXJlY3RvcnkgbXVzdAogICAgICAgICAjIGNvbnRhaW4gYm90aCB2ZXJzaW9ucyBvZiBlYWNoIGNlcnRpZmljYXRlIChzYW1lIGNvbnRlbnQsIGRpZmZlcmVudAogICAgICAgICAjIGZpbGVuYW1lKSBmb3IgdGhpcyB0ZXN0IHRvIGJlIHBvcnRhYmxlIGFjcm9zcyBPcGVuU1NMIHJlbGVhc2VzLgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9Q0FQQVRIKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgU2FtZSB3aXRoIGEgYnl0ZXMgYGNhcGF0aGAgYXJndW1lbnQKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9QllURVNfQ0FQQVRIKQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9Q0FQQVRIKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgICMgU2FtZSB3aXRoIGEgYnl0ZXMgYGNhcGF0aGAgYXJndW1lbnQKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9QllURVNfQ0FQQVRIKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2NhZGF0YShzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKFJFTU9URV9ST09UX0NFUlQpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihTSUdOSU5HX0NBKSBhcyBmOgogICAgICAgICAgICAgcGVtID0gZi5yZWFkKCkKICAgICAgICAgZGVyID0gc3NsLlBFTV9jZXJ0X3RvX0RFUl9jZXJ0KHBlbSkKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPXBlbSkKLSAgICAgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1wZW0pCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAotICAgICAgICAgICAgIyBzYW1lIHdpdGggREVSCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPWRlcikKLSAgICAgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICAjIHNhbWUgd2l0aCBERVIKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9ZGVyKQorICAgICAgICB3aXRoIGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAgICAgY2VydCA9IHMuZ2V0cGVlcmNlcnQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gIm50IiwgIkNhbid0IHVzZSBhIHNvY2tldCBhcyBhIGZpbGUgdW5kZXIgV2luZG93cyIpCiAgICAgZGVmIHRlc3RfbWFrZWZpbGVfY2xvc2Uoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzUyMzg6IGNyZWF0aW5nIGEgZmlsZS1saWtlIG9iamVjdCB3aXRoIG1ha2VmaWxlKCkgc2hvdWxkbid0CiAgICAgICAgICMgZGVsYXkgY2xvc2luZyB0aGUgdW5kZXJseWluZyAicmVhbCBzb2NrZXQiIChoZXJlIHRlc3RlZCB3aXRoIGl0cwogICAgICAgICAjIGZpbGUgZGVzY3JpcHRvciwgaGVuY2Ugc2tpcHBpbmcgdGhlIHRlc3QgdW5kZXIgV2luZG93cykuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIGZkID0gc3MuZmlsZW5vKCkKLSAgICAgICAgICAgIGYgPSBzcy5tYWtlZmlsZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhlIGZkIGlzIHN0aWxsIG9wZW4KKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQorICAgICAgICBzcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGZkID0gc3MuZmlsZW5vKCkKKyAgICAgICAgZiA9IHNzLm1ha2VmaWxlKCkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICMgVGhlIGZkIGlzIHN0aWxsIG9wZW4KKyAgICAgICAgb3MucmVhZChmZCwgMCkKKyAgICAgICAgIyBDbG9zaW5nIHRoZSBTU0wgc29ja2V0IHNob3VsZCBjbG9zZSB0aGUgZmQgdG9vCisgICAgICAgIHNzLmNsb3NlKCkKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgZToKICAgICAgICAgICAgIG9zLnJlYWQoZmQsIDApCi0gICAgICAgICAgICAjIENsb3NpbmcgdGhlIFNTTCBzb2NrZXQgc2hvdWxkIGNsb3NlIHRoZSBmZCB0b28KLSAgICAgICAgICAgIHNzLmNsb3NlKCkKLSAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlOgotICAgICAgICAgICAgICAgIG9zLnJlYWQoZmQsIDApCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUJBREYpCiAKICAgICBkZWYgdGVzdF9ub25fYmxvY2tpbmdfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKLSAgICAgICAgICAgIGNvdW50ID0gMAotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKLSAgICAgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQotICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5OZWVkZWQgJWQgY2FsbHMgdG8gZG9faGFuZHNoYWtlKCkgdG8gZXN0YWJsaXNoIHNlc3Npb24uXG4iICUgY291bnQpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQorICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKIAogICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZik6Ci0gICAgICAgIGRlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6Ci0gICAgICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGhvc3QpOgotICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQorICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYsICpzZWxmLnNlcnZlcl9hZGRyLCBjZXJ0PVNJR05JTkdfQ0EpCiAKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgotICAgICAgICAgICAgICAgICAgICAjc2hvdWxkIGZhaWwKLSAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3IgJXM6JXMhIiAlIChwZW0sIGhvc3QsIHBvcnQpKQotCi0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPWNlcnQpCi0gICAgICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKLSAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQotCi0gICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoUkVNT1RFX0hPU1QsIDQ0MywgUkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgaWYgc3VwcG9ydC5JUFY2X0VOQUJMRUQ6Ci0gICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKCdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHNlbGYpOgorICAgICAgICAjIENvbm5lY3Rpb24gZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4KKyAgICAgICAgIyBpbmRlcGVuZGVudCB0ZXN0IG1ldGhvZAorICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZiwgKnNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9jaXBoZXJzKHNlbGYpOgotICAgICAgICByZW1vdGUgPSAoUkVNT1RFX0hPU1QsIDQ0MykKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChyZW1vdGVbMF0pOgotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iQUxMIikgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iREVGQVVMVCIpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLSAgICAgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQiKToKLSAgICAgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpIGFzIHNvY2s6Ci0gICAgICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iXiQ6LDs/Kidkb3JvdGh5eCIpCi0gICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0KLSAgICBkZWYgdGVzdF9hbGdvcml0aG1zKHNlbGYpOgotICAgICAgICAjIElzc3VlICM4NDg0OiBhbGwgYWxnb3JpdGhtcyBzaG91bGQgYmUgYXZhaWxhYmxlIHdoZW4gdmVyaWZ5aW5nIGEKLSAgICAgICAgIyBjZXJ0aWZpY2F0ZS4KLSAgICAgICAgIyBTSEEyNTYgd2FzIGFkZGVkIGluIE9wZW5TU0wgMC45LjgKLSAgICAgICAgaWYgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPIDwgKDAsIDksIDgsIDAsIDE1KToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNIQTI1NiBub3QgYXZhaWxhYmxlIG9uICVyIiAlIHNzbC5PUEVOU1NMX1ZFUlNJT04pCi0gICAgICAgICMgc2hhMjU2LnRicy1pbnRlcm5ldC5jb20gbmVlZHMgU05JIHRvIHVzZSB0aGUgY29ycmVjdCBjZXJ0aWZpY2F0ZQotICAgICAgICBpZiBub3Qgc3NsLkhBU19TTkk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTTkkgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQotICAgICAgICAjIGh0dHBzOi8vc2hhMi5oYm9lY2suZGUvIHdhcyB1c2VkIHVudGlsIDIwMTEtMDEtMDggKG5vIHJvdXRlIHRvIGhvc3QpCi0gICAgICAgIHJlbW90ZSA9ICgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iLCA0NDMpCi0gICAgICAgIHNoYTI1Nl9jZXJ0ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJzaGEyNTYucGVtIikKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKHNoYTI1Nl9jZXJ0KQotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPSJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLSAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuQ2lwaGVyIHdpdGggJXIgaXMgJXJcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdGUsIHMuY2lwaGVyKCkpKQotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJDZXJ0aWZpY2F0ZSBpczpcbiVzXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcHJpbnQucGZvcm1hdChzLmdldHBlZXJjZXJ0KCkpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iQUxMIikgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAjIEVycm9yIGNoZWNraW5nIGNhbiBoYXBwZW4gYXQgaW5zdGFudGlhdGlvbiBvciB3aGVuIGNvbm5lY3RpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQiKToKKyAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9Il4kOiw7PyonZG9yb3RoeXgiKQorICAgICAgICAgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQogCiAgICAgZGVmIHRlc3RfZ2V0X2NhX2NlcnRzX2NhcGF0aChzZWxmKToKICAgICAgICAgIyBjYXBhdGggY2VydHMgYXJlIGxvYWRlZCBvbiByZXF1ZXN0Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5nZXRfY2FfY2VydHMoKSwgW10pCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY3R4LmdldF9jYV9jZXJ0cygpKSwgMSkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYXBhdGg9Q0FQQVRIKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5nZXRfY2FfY2VydHMoKSwgW10pCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY3R4LmdldF9jYV9jZXJ0cygpKSwgMSkKIAogICAgIEBuZWVkc19zbmkKICAgICBkZWYgdGVzdF9jb250ZXh0X3NldGdldChzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjb250ZXh0IG9mIGEgY29ubmVjdGVkIHNvY2tldCBjYW4gYmUgcmVwbGFjZWQuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4MSA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKLSAgICAgICAgICAgIGN0eDIgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICB3aXRoIGN0eDEud3JhcF9zb2NrZXQocykgYXMgc3M6Ci0gICAgICAgICAgICAgICAgc3MuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5jb250ZXh0LCBjdHgxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgxKQotICAgICAgICAgICAgICAgIHNzLmNvbnRleHQgPSBjdHgyCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5jb250ZXh0LCBjdHgyKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQotCi0KLWNsYXNzIE5ldHdvcmtlZEJJT1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgY3R4MSA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY3R4MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICB3aXRoIGN0eDEud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICBzcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MSkKKyAgICAgICAgICAgIHNzLmNvbnRleHQgPSBjdHgyCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLl9zc2xvYmouY29udGV4dCwgY3R4MikKIAogICAgIGRlZiBzc2xfaW9fbG9vcChzZWxmLCBzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIGZ1bmMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICMgQSBzaW1wbGUgSU8gbG9vcC4gQ2FsbCBmdW5jKCphcmdzKSBkZXBlbmRpbmcgb24gdGhlIGVycm9yIHdlIGdldApAQCAtMTc2NSw2NCArMTcyMywxMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY291bnQsIGZ1bmMuX19uYW1lX18pKQogICAgICAgICByZXR1cm4gcmV0CiAKLSAgICBkZWYgdGVzdF9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoUkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIGN0eC5jaGVja19ob3N0bmFtZSA9IFRydWUKLSAgICAgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCBSRU1PVEVfSE9TVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3Nsb2JqLl9zc2xvYmoub3duZXIsIHNzbG9iaikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5jaXBoZXIoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc3Nsb2JqLmdldHBlZXJjZXJ0KQotICAgICAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5jaXBoZXIoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgaWYgJ3Rscy11bmlxdWUnIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCi0gICAgICAgICAgICBleGNlcHQgc3NsLlNTTFN5c2NhbGxFcnJvcjoKLSAgICAgICAgICAgICAgICAjIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0IHByb2JhYmx5IHNodXRzIGRvd24gdGhlIFRDUAotICAgICAgICAgICAgICAgICMgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcgYSBzZWN1cmUgc2h1dGRvd24gbWVzc2FnZSwgYW5kCi0gICAgICAgICAgICAgICAgIyB0aGlzIGlzIHJlcG9ydGVkIGFzIFNTTF9FUlJPUl9TWVNDQUxMCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yLCBzc2xvYmoud3JpdGUsIGInZm9vJykKLSAgICAgICAgICAgIHNvY2suY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfcmVhZF93cml0ZV9kYXRhKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgc29jay5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX05PTkUKLSAgICAgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCi0gICAgICAgICAgICByZXEgPSBiJ0dFVCAvIEhUVFAvMS4wXHJcblxyXG4nCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLndyaXRlLCByZXEpCi0gICAgICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1Zls6NV0sIGInSFRUUC8nKQorICAgIGRlZiB0ZXN0X2Jpb19oYW5kc2hha2Uoc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5jbG9zZSkKKyAgICAgICAgc29jay5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGluY29taW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQorICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSwgJ2xvY2FsaG9zdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3Nsb2JqLl9zc2xvYmoub3duZXIsIHNzbG9iaikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc3Nsb2JqLmdldHBlZXJjZXJ0KQorICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmouZG9faGFuZHNoYWtlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzc2xvYmouc2hhcmVkX2NpcGhlcnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRwZWVyY2VydCgpKQorICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQorICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKLSAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICBleGNlcHQgc3NsLlNTTFN5c2NhbGxFcnJvcjoKKyAgICAgICAgICAgICMgSWYgdGhlIHNlcnZlciBzaHV0cyBkb3duIHRoZSBUQ1AgY29ubmVjdGlvbiB3aXRob3V0IHNlbmRpbmcgYQorICAgICAgICAgICAgIyBzZWN1cmUgc2h1dGRvd24gbWVzc2FnZSwgdGhpcyBpcyByZXBvcnRlZCBhcyBTU0xfRVJST1JfU1lTQ0FMTAorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQorCisgICAgZGVmIHRlc3RfYmlvX3JlYWRfd3JpdGVfZGF0YShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQorICAgICAgICBzb2NrLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQorICAgICAgICBzc2xvYmogPSBjdHgud3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBGYWxzZSkKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgIHJlcSA9IGInRk9PXG4nCisgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKKyAgICAgICAgYnVmID0gc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5yZWFkLCAxMDI0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYidmb29cbicpCisgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQogCiAKLXRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgX2hhdmVfdGhyZWFkcyA9IEZhbHNlCi1lbHNlOgotICAgIF9oYXZlX3RocmVhZHMgPSBUcnVlCitjbGFzcyBOZXR3b3JrZWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgdGVzdF90aW1lb3V0X2Nvbm5lY3RfZXgoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzEyMDY1OiBvbiBhIHRpbWVvdXQsIGNvbm5lY3RfZXgoKSBzaG91bGQgcmV0dXJuIHRoZSBvcmlnaW5hbAorICAgICAgICAjIGVycm5vIChtaW1pY2tpbmcgdGhlIGJlaGF2aW91ciBvZiBub24tU1NMIHNvY2tldHMpLgorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKKyAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgICAgICBzLnNldHRpbWVvdXQoMC4wMDAwMDAxKQorICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQorICAgICAgICAgICAgaWYgcmMgPT0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJSRU1PVEVfSE9TVCByZXNwb25kZWQgdG9vIHF1aWNrbHkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICdOZWVkcyBJUHY2JykKKyAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2lwdjYoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoJ2lwdjYuZ29vZ2xlLmNvbScpOgorICAgICAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmLCAnaXB2Ni5nb29nbGUuY29tJywgNDQzKQorICAgICAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHNlbGYsICdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisKKyAgICBkZWYgdGVzdF9hbGdvcml0aG1zKHNlbGYpOgorICAgICAgICAjIElzc3VlICM4NDg0OiBhbGwgYWxnb3JpdGhtcyBzaG91bGQgYmUgYXZhaWxhYmxlIHdoZW4gdmVyaWZ5aW5nIGEKKyAgICAgICAgIyBjZXJ0aWZpY2F0ZS4KKyAgICAgICAgIyBTSEEyNTYgd2FzIGFkZGVkIGluIE9wZW5TU0wgMC45LjgKKyAgICAgICAgaWYgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPIDwgKDAsIDksIDgsIDAsIDE1KToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNIQTI1NiBub3QgYXZhaWxhYmxlIG9uICVyIiAlIHNzbC5PUEVOU1NMX1ZFUlNJT04pCisgICAgICAgICMgc2hhMjU2LnRicy1pbnRlcm5ldC5jb20gbmVlZHMgU05JIHRvIHVzZSB0aGUgY29ycmVjdCBjZXJ0aWZpY2F0ZQorICAgICAgICBpZiBub3Qgc3NsLkhBU19TTkk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTTkkgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorICAgICAgICAjIGh0dHBzOi8vc2hhMi5oYm9lY2suZGUvIHdhcyB1c2VkIHVudGlsIDIwMTEtMDEtMDggKG5vIHJvdXRlIHRvIGhvc3QpCisgICAgICAgIHJlbW90ZSA9ICgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iLCA0NDMpCisgICAgICAgIHNoYTI1Nl9jZXJ0ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJzaGEyNTYucGVtIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iKToKKyAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKHNoYTI1Nl9jZXJ0KQorICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPSJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKKyAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuQ2lwaGVyIHdpdGggJXIgaXMgJXJcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdGUsIHMuY2lwaGVyKCkpKQorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJDZXJ0aWZpY2F0ZSBpczpcbiVzXG4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcHJpbnQucGZvcm1hdChzLmdldHBlZXJjZXJ0KCkpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKworCitkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSh0ZXN0LCBob3N0LCBwb3J0LCBjZXJ0PU5vbmUpOgorICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSkKKyAgICBpZiBub3QgcGVtOgorICAgICAgICB0ZXN0LmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQorCisgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1jZXJ0KQorICAgIGlmIG5vdCBwZW06CisgICAgICAgIHRlc3QuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblZlcmlmaWVkIGNlcnRpZmljYXRlIGZvciAlczolcyBpc1xuJXNcbiIgJSAoaG9zdCwgcG9ydCAscGVtKSkKKworZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbCh0ZXN0LCBob3N0LCBwb3J0KToKKyAgICB0cnk6CisgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Q0VSVEZJTEUpCisgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyB4OgorICAgICAgICAjc2hvdWxkIGZhaWwKKyAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQorICAgIGVsc2U6CisgICAgICAgIHRlc3QuZmFpbCgiR290IHNlcnZlciBjZXJ0aWZpY2F0ZSAlcyBmb3IgJXM6JXMhIiAlIChwZW0sIGhvc3QsIHBvcnQpKQorCisKK2lmIF9oYXZlX3RocmVhZHM6CiAgICAgZnJvbSB0ZXN0LnNzbF9zZXJ2ZXJzIGltcG9ydCBtYWtlX2h0dHBzX3NlcnZlcgogCiAgICAgY2xhc3MgVGhyZWFkZWRFY2hvU2VydmVyKHRocmVhZGluZy5UaHJlYWQpOgpAQCAtMTkxMCw2ICsxOTMyLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc3RyaXBwZWQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBlb2YsIHNvIHF1aXQgdGhpcyBoYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuc3NsY29ubi51bndyYXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1hbnkgdGVzdHMgc2h1dCB0aGUgVENQIGNvbm5lY3Rpb24gZG93bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhvdXQgYW4gU1NMIHNodXRkb3duLiBUaGlzIGNhdXNlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVud3JhcCgpIHRvIHJhaXNlIE9TRXJyb3Igd2l0aCBlcnJubz0wIQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zc2xjb25uID0gTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBzdHJpcHBlZCA9PSBiJ292ZXInOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eToKQEAgLTIwMzcsNyArMjA2OCw3IEBACiAgICAgICAgICAgICBjbGFzcyBDb25uZWN0aW9uSGFuZGxlciAoYXN5bmNvcmUuZGlzcGF0Y2hlcl93aXRoX3NlbmQpOgogCiAgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4sIGNlcnRmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQoY29ubiwgc2VydmVyX3NpZGU9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSB0ZXN0X3dyYXBfc29ja2V0KGNvbm4sIHNlcnZlcl9zaWRlPVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKICAgICAgICAgICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlcl93aXRoX3NlbmQuX19pbml0X18oc2VsZiwgc2VsZi5zb2NrZXQpCkBAIC0yMTQ1LDcgKzIxNzYsOCBAQAogICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuY2xvc2UoKQogCiAgICAgZGVmIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsIGluZGF0YT1iIkZPT1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzbmlfbmFtZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PUZhbHNlLCBzbmlfbmFtZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIExhdW5jaCBhIHNlcnZlciwgY29ubmVjdCBhIGNsaWVudCB0byBpdCBhbmQgdHJ5IHZhcmlvdXMgcmVhZHMKICAgICAgICAgYW5kIHdyaXRlcy4KQEAgLTIxNTYsNyArMjE4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICB3aXRoIHNlcnZlcjoKICAgICAgICAgICAgIHdpdGggY2xpZW50X2NvbnRleHQud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c25pX25hbWUpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zbmlfbmFtZSwgc2Vzc2lvbj1zZXNzaW9uKSBhcyBzOgogICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gW2luZGF0YSwgYnl0ZWFycmF5KGluZGF0YSksIG1lbW9yeXZpZXcoaW5kYXRhKV06CiAgICAgICAgICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb25jaGF0dHk6CkBAIC0yMTg0LDYgKzIyMTYsOCBAQAogICAgICAgICAgICAgICAgICAgICAnY2xpZW50X2FscG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX2FscG5fcHJvdG9jb2woKSwKICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudF9ucG5fcHJvdG9jb2wnOiBzLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpLAogICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6IHMudmVyc2lvbigpLAorICAgICAgICAgICAgICAgICAgICAnc2Vzc2lvbl9yZXVzZWQnOiBzLnNlc3Npb25fcmV1c2VkLAorICAgICAgICAgICAgICAgICAgICAnc2Vzc2lvbic6IHMuc2Vzc2lvbiwKICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9hbHBuX3Byb3RvY29scyddID0gc2VydmVyLnNlbGVjdGVkX2FscG5fcHJvdG9jb2xzCkBAIC0yMjU5LDEyICsyMjkzLDUzIEBACiAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQogICAgICAgICAgICAgZm9yIHByb3RvY29sIGluIFBST1RPQ09MUzoKKyAgICAgICAgICAgICAgICBpZiBwcm90b2NvbCBpbiB7c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSfToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90b2NvbD1zc2wuX1BST1RPQ09MX05BTUVTW3Byb3RvY29sXSk6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChwcm90b2NvbCkKICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCiAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKIAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX1NFUlZFUikKKyAgICAgICAgICAgICMgc2VydmVyX2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oU0lHTkVEX0NFUlRGSUxFMikKKworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xpZW50PXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5ULCBzZXJ2ZXI9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIpOgorICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1jbGllbnRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9c2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaV9uYW1lPSdmYWtlaG9zdG5hbWUnKQorCisgICAgICAgICAgICBjbGllbnRfY29udGV4dC5jaGVja19ob3N0bmFtZSA9IEZhbHNlCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuaV9uYW1lPSdmYWtlaG9zdG5hbWUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xpZW50PXNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSLCBzZXJ2ZXI9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQ9c2VydmVyX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKwogICAgICAgICBkZWYgdGVzdF9nZXRwZWVyY2VydChzZWxmKToKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCkBAIC0yMzk4LDcgKzI0NzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICAgICB3aXRoIHNlcnZlciwgXAogICAgICAgICAgICAgICAgICAgICBzb2NrZXQuc29ja2V0KCkgYXMgc29jaywgXAotICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywKKyAgICAgICAgICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkgYXMgczoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0yNDQ1LDcgKzI1MjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjLmNvbm5lY3QoKEhPU1QsIHBvcnQpKQogICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcl9nb25lLndhaXQoKQogICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzc2xfc29jayA9IHNzbC53cmFwX3NvY2tldChjKQorICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3NvY2sgPSB0ZXN0X3dyYXBfc29ja2V0KGMpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMjYzNSw3ICsyNzEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGNsaWVudDogIHJlYWQgJXIgZnJvbSBzZXJ2ZXIsIHN0YXJ0aW5nIFRMUy4uLlxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG1zZykKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbm4gPSBzc2wud3JhcF9zb2NrZXQocywgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgICAgICAgICAgY29ubiA9IHRlc3Rfd3JhcF9zb2NrZXQocywgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgZWxpZiBpbmRhdGEgPT0gYiJFTkRUTFMiIGFuZCBtc2cuc3RhcnRzd2l0aChiIm9rIik6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIEVORFRMUyBvaywgc3dpdGNoIGJhY2sgdG8gY2xlYXIgdGV4dApAQCAtMjY5NCw3ICsyNzY5LDcgQEAKICAgICAgICAgICAgIGluZGF0YSA9IGIiRk9PXG4iCiAgICAgICAgICAgICBzZXJ2ZXIgPSBBc3luY29yZUVjaG9TZXJ2ZXIoQ0VSVEZJTEUpCiAgICAgICAgICAgICB3aXRoIHNlcnZlcjoKLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpCiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KCgnMTI3LjAuMC4xJywgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgKQEAgLTI3MjcsNyArMjgwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTI3NDUsMTIgKzI4MjAsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgY291bnQsIGFkZHIgPSBzLnJlY3Zmcm9tX2ludG8oYikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJbOmNvdW50XQogCi0gICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCB3aGV0aGVyIHRvIGV4cGVjdCBzdWNjZXNzLCAqYXJncykKKyAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIGV4cGVjdCBzdWNjZXNzPywgKmFyZ3MsIHJldHVybiB2YWx1ZSBmdW5jKQogICAgICAgICAgICAgICAgIHNlbmRfbWV0aG9kcyA9IFsKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kJywgcy5zZW5kLCBUcnVlLCBbXSksCi0gICAgICAgICAgICAgICAgICAgICgnc2VuZHRvJywgcy5zZW5kdG8sIEZhbHNlLCBbInNvbWUuYWRkcmVzcyJdKSwKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kYWxsJywgcy5zZW5kYWxsLCBUcnVlLCBbXSksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZCcsIHMuc2VuZCwgVHJ1ZSwgW10sIGxlbiksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZHRvJywgcy5zZW5kdG8sIEZhbHNlLCBbInNvbWUuYWRkcmVzcyJdLCBsZW4pLAorICAgICAgICAgICAgICAgICAgICAoJ3NlbmRhbGwnLCBzLnNlbmRhbGwsIFRydWUsIFtdLCBsYW1iZGEgeDogTm9uZSksCiAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgd2hldGhlciB0byBleHBlY3Qgc3VjY2VzcywgKmFyZ3MpCiAgICAgICAgICAgICAgICAgcmVjdl9tZXRob2RzID0gWwogICAgICAgICAgICAgICAgICAgICAoJ3JlY3YnLCBzLnJlY3YsIFRydWUsIFtdKSwKICAgICAgICAgICAgICAgICAgICAgKCdyZWN2ZnJvbScsIHMucmVjdmZyb20sIEZhbHNlLCBbInNvbWUuYWRkcmVzcyJdKSwKQEAgLTI3NTksMTAgKzI4MzUsMTMgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICAgZGF0YV9wcmVmaXggPSAiUFJFRklYXyIKIAotICAgICAgICAgICAgICAgIGZvciBtZXRoX25hbWUsIHNlbmRfbWV0aCwgZXhwZWN0X3N1Y2Nlc3MsIGFyZ3MgaW4gc2VuZF9tZXRob2RzOgorICAgICAgICAgICAgICAgIGZvciAobWV0aF9uYW1lLCBzZW5kX21ldGgsIGV4cGVjdF9zdWNjZXNzLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0X3ZhbF9tZXRoKSBpbiBzZW5kX21ldGhvZHM6CiAgICAgICAgICAgICAgICAgICAgIGluZGF0YSA9IChkYXRhX3ByZWZpeCArIG1ldGhfbmFtZSkuZW5jb2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfbWV0aChpbmRhdGEsICphcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gc2VuZF9tZXRoKGluZGF0YSwgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAic2VuZGluZyB3aXRoIHt9Ii5mb3JtYXQobWV0aF9uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQsIHJldF92YWxfbWV0aChpbmRhdGEpLCBtc2c9bXNnKQogICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZGF0YSA9IHMucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvdXRkYXRhICE9IGluZGF0YS5sb3dlcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgKQEAgLTI4NDcsNyArMjkyNiw3IEBACiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VydmVyLl9fZXhpdF9fLCBOb25lLCBOb25lKQogICAgICAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoSE9TVCwgc2VydmVyLnBvcnQpKQogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHMsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQorICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQocywgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKIAogICAgICAgICAgICAgIyByZWN2L3JlYWQoMCkgc2hvdWxkIHJldHVybiBubyBkYXRhCkBAIC0yODY5LDcgKzI5NDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICAgICB3aXRoIHNlcnZlcjoKLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCkBAIC0yOTIzLDEyICszMDAyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGMuY29ubmVjdCgoaG9zdCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgICMgV2lsbCBhdHRlbXB0IGhhbmRzaGFrZSBhbmQgdGltZSBvdXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQudGltZW91dCwgInRpbWVkIG91dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsLndyYXBfc29ja2V0LCBjKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQsIGMpCiAgICAgICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICAgICAgYy5jbG9zZSgpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBjID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgICAgICAgICAgYyA9IHNzbC53cmFwX3NvY2tldChjKQorICAgICAgICAgICAgICAgICAgICBjID0gdGVzdF93cmFwX3NvY2tldChjKQogICAgICAgICAgICAgICAgICAgICBjLnNldHRpbWVvdXQoMC4yKQogICAgICAgICAgICAgICAgICAgICAjIFdpbGwgYXR0ZW1wdCBoYW5kc2hha2UgYW5kIHRpbWUgb3V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc29ja2V0LnRpbWVvdXQsICJ0aW1lZCBvdXQiLApAQCAtMjk1MSw2ICszMDMwLDcgQEAKICAgICAgICAgICAgIGhvc3QgPSAiMTI3LjAuMC4xIgogICAgICAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlcnZlcikKICAgICAgICAgICAgIHNlcnZlciA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VydmVyLCBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5zZXJ2ZXJfc2lkZSkKIAogICAgICAgICAgICAgZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKICAgICAgICAgICAgIHJlbW90ZSA9IE5vbmUKQEAgLTMwNTMsNyArMzEzMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMwNzgsNyArMzE1OCw3IEBACiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAKICAgICAgICAgICAgICAgICAjIG5vdywgYWdhaW4KLSAgICAgICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKKyAgICAgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCkBAIC0zMzg4LDYgKzM0NjgsMTExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzLnNlbmRmaWxlKGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMucmVjdigxMDI0KSwgVEVTVF9EQVRBKQogCisgICAgICAgIGRlZiB0ZXN0X3Nlc3Npb24oc2VsZik6CisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUpCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorCisgICAgICAgICAgICAjIGZpcnN0IGNvbm5lY3Rpb24gd2l0aG91dCBzZXNzaW9uCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICBzZXNzaW9uID0gc3RhdHNbJ3Nlc3Npb24nXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlc3Npb24udGltZW91dCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXNzaW9uLmhhc190aWNrZXQpCisgICAgICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPiAoMSwgMCwgMSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlc3Npb24udGlja2V0X2xpZmV0aW1lX2hpbnQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAwKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjIgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc2Vzc2lvbjIsIHNlc3Npb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uMi50aW1lLCBzZXNzaW9uLnRpbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uMi50aW1lb3V0LCBzZXNzaW9uLnRpbWVvdXQpCisKKyAgICAgICAgICAgICMgYW5vdGhlciBvbmUgd2l0aG91dCBzZXNzaW9uCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjMgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZXNzaW9uMywgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMSkKKworICAgICAgICAgICAgIyByZXVzZSBzZXNzaW9uIGFnYWluCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dCwgc2VydmVyX2NvbnRleHQsIHNlc3Npb249c2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0c1snc2Vzc2lvbl9yZXVzZWQnXSkKKyAgICAgICAgICAgIHNlc3Npb240ID0gc3RhdHNbJ3Nlc3Npb24nXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNC5pZCwgc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjQsIHNlc3Npb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uNC50aW1lLCBzZXNzaW9uLnRpbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZXNzaW9uNC50aW1lb3V0LCBzZXNzaW9uLnRpbWVvdXQpCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDIpCisKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbl9oYW5kbGluZyhzZWxmKToKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorCisgICAgICAgICAgICBjb250ZXh0MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0Mi52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICAgICBjb250ZXh0Mi5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0Mi5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PWNvbnRleHQsIGNoYXR0eT1GYWxzZSkKKyAgICAgICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgc2Vzc2lvbiBpcyBOb25lIGJlZm9yZSBoYW5kc2hha2UKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb24sIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uX3JldXNlZCwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24gPSBzLnNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gb2JqZWN0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwgJ1ZhbHVlIGlzIG5vdCBhIFNTTFNlc3Npb24uJykKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UuJykKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2FuIHNldCBzZXNzaW9uIGJlZm9yZSBoYW5kc2hha2UgYW5kIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdhcyBlc3RhYmxpc2hlZAorICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoSE9TVCwgc2VydmVyLnBvcnQpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbi5pZCwgc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb24sIHNlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uX3JldXNlZCwgVHJ1ZSkKKworICAgICAgICAgICAgICAgIHdpdGggY29udGV4dDIud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKSBhcyBzOgorICAgICAgICAgICAgICAgICAgICAjIGNhbm5vdCByZS11c2Ugc2Vzc2lvbiB3aXRoIGEgZGlmZmVyZW50IFNTTENvbnRleHQKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgcy5zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2Vzc2lvbiByZWZlcnMgdG8gYSBkaWZmZXJlbnQgU1NMQ29udGV4dC4nKQorCiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgpAQCAtMzQwMCw3ICszNTg1LDcgQEAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpAQCAtMzQyMiwxOCArMzYwNywyMCBAQAogICAgICAgICAgICAgcGFzcwogCiAgICAgZm9yIGZpbGVuYW1lIGluIFsKLSAgICAgICAgQ0VSVEZJTEUsIFJFTU9URV9ST09UX0NFUlQsIEJZVEVTX0NFUlRGSUxFLAorICAgICAgICBDRVJURklMRSwgQllURVNfQ0VSVEZJTEUsCiAgICAgICAgIE9OTFlDRVJULCBPTkxZS0VZLCBCWVRFU19PTkxZQ0VSVCwgQllURVNfT05MWUtFWSwKICAgICAgICAgU0lHTkVEX0NFUlRGSUxFLCBTSUdORURfQ0VSVEZJTEUyLCBTSUdOSU5HX0NBLAogICAgICAgICBCQURDRVJULCBCQURLRVksIEVNUFRZQ0VSVF06CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICByYWlzZSBzdXBwb3J0LlRlc3RGYWlsZWQoIkNhbid0IHJlYWQgY2VydGlmaWNhdGUgZmlsZSAlciIgJSBmaWxlbmFtZSkKIAotICAgIHRlc3RzID0gW0NvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0cywgTWVtb3J5QklPVGVzdHNdCisgICAgdGVzdHMgPSBbCisgICAgICAgIENvbnRleHRUZXN0cywgQmFzaWNTb2NrZXRUZXN0cywgU1NMRXJyb3JUZXN0cywgTWVtb3J5QklPVGVzdHMsCisgICAgICAgIFNpbXBsZUJhY2tncm91bmRUZXN0cywKKyAgICBdCiAKICAgICBpZiBzdXBwb3J0LmlzX3Jlc291cmNlX2VuYWJsZWQoJ25ldHdvcmsnKToKICAgICAgICAgdGVzdHMuYXBwZW5kKE5ldHdvcmtlZFRlc3RzKQotICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkQklPVGVzdHMpCiAKICAgICBpZiBfaGF2ZV90aHJlYWRzOgogICAgICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQppbmRleCAwMDg5YWU4Li40YjNmZDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CkBAIC0yMSw2ICsyMSwxMCBAQAogCiAjID09PSBIZWxwZXIgZnVuY3Rpb25zIGFuZCBjbGFzcyA9PT0KIAorZGVmIHNpZ24oeCk6CisgICAgIiIiUmV0dXJuIC0xLjAgZm9yIG5lZ2F0aXZlcywgaW5jbHVkaW5nIC0wLjAsIG90aGVyd2lzZSArMS4wLiIiIgorICAgIHJldHVybiBtYXRoLmNvcHlzaWduKDEsIHgpCisKIGRlZiBfbmFuX2VxdWFsKGEsIGIpOgogICAgICIiIlJldHVybiBUcnVlIGlmIGEgYW5kIGIgYXJlIGJvdGggdGhlIHNhbWUga2luZCBvZiBOQU4uCiAKQEAgLTI2NCw2ICsyNjgsMTMgQEAKICMgPT09IFRlc3QgdGhlIGhlbHBlcnMgPT09CiAjID09PT09PT09PT09PT09PT09PT09PT09PQogCitjbGFzcyBUZXN0U2lnbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGF0IHRoZSBoZWxwZXIgZnVuY3Rpb24gc2lnbigpIHdvcmtzIGNvcnJlY3RseS4iIiIKKyAgICBkZWYgdGVzdFplcm9lcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgc2lnbmVkIHplcm9lcyByZXBvcnQgdGhlaXIgc2lnbiBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbigwLjApLCArMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKC0wLjApLCAtMSkKKwogCiAjIC0tLSBUZXN0cyBmb3IgYXBwcm94X2VxdWFsIC0tLQogCkBAIC02NTksNyArNjcwLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtT08gYW5kIGFib3ZlIikKICAgICBkZWYgdGVzdF9kb2NfdGVzdHMoc2VsZik6Ci0gICAgICAgIGZhaWxlZCwgdHJpZWQgPSBkb2N0ZXN0LnRlc3Rtb2Qoc3RhdGlzdGljcykKKyAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzLCBvcHRpb25mbGFncz1kb2N0ZXN0LkVMTElQU0lTKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodHJpZWQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmFpbGVkLCAwKQogCkBAIC03MDIsOSArNzEzLDkgQEAKICAgICBkZWYgdGVzdF9kZWNpbWFsKHNlbGYpOgogICAgICAgICBEID0gRGVjaW1hbAogICAgICAgICBfZXhhY3RfcmF0aW8gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEyNSwgMTAwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDEyMzQ1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiLTEuOTgiKSksICgtMTk4LCAxMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIwLjEyNSIpKSwgKDEsIDgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCIxMi4zNDUiKSksICgyNDY5LCAyMDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC05OSwgNTApKQogCiAgICAgZGVmIHRlc3RfaW5mKHNlbGYpOgogICAgICAgICBJTkYgPSBmbG9hdCgiSU5GIikKQEAgLTc0MywxOCArNzU0LDE4IEBACiAKIAogY2xhc3MgRGVjaW1hbFRvUmF0aW9UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRlc3QgX2RlY2ltYWxfdG9fcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KKyAgICAjIFRlc3QgX2V4YWN0X3JhdGlvIHByaXZhdGUgZnVuY3Rpb24uCiAKICAgICBkZWYgdGVzdF9pbmZpbml0eShzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgSU5GcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGluZiA9IERlY2ltYWwoJ0lORicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1pbmYpLCAoLWluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oaW5mKSwgKGluZiwgTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X25hbihzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgTkFOcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgIGZvciBuYW4gaW4gKERlY2ltYWwoJ05BTicpLCBEZWNpbWFsKCdzTkFOJykpOgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKG5hbikKKyAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8obmFuKQogICAgICAgICAgICAgIyBCZWNhdXNlIE5BTnMgYWx3YXlzIGNvbXBhcmUgbm9uLWVxdWFsLCB3ZSBjYW5ub3QgdXNlIGFzc2VydEVxdWFsLgogICAgICAgICAgICAgIyBOb3IgY2FuIHdlIHVzZSBhbiBpZGVudGl0eSB0ZXN0LCBhcyB3ZSBkb24ndCBndWFyYW50ZWUgYW55dGhpbmcKICAgICAgICAgICAgICMgYWJvdXQgdGhlIG9iamVjdCBpZGVudGl0eS4KQEAgLTc2NywzMCArNzc4LDMwIEBACiAgICAgICAgIGZvciBkIGluIG51bWJlcnM6CiAgICAgICAgICAgICAjIEZpcnN0IHRlc3QgcG9zaXRpdmUgZGVjaW1hbHMuCiAgICAgICAgICAgICBhc3NlcnQgZCA+IDAKLSAgICAgICAgICAgIG51bSwgZGVuID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhkKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKICAgICAgICAgICAgICMgVGhlbiB0ZXN0IG5lZ2F0aXZlIGRlY2ltYWxzLgotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKC1kKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKG51bSwgMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihkZW4sIDApCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdCB3aGVuIHRoZSBleHBvbmVudCBpcyBuZWdhdGl2ZS4KLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQsIDEwMDAwKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjAuMTIzNCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsICg2MTcsIDUwMDApKQogCiAgICAgZGVmIHRlc3RfcG9zaXRpdmVfZXhwb25lbnQoc2VsZik6CiAgICAgICAgICMgVGVzdCByZXN1bHRzIHdoZW4gdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjIzNGU3IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEyMzQwMDAwLCAxKSkKIAogICAgIGRlZiB0ZXN0X3JlZ3Jlc3Npb25fMjA1MzYoc2VsZik6CiAgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAyMDUzNi4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTM2Ci0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjFlMiIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMWUyIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDEwMCwgMSkpCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuNDdlNSIpKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDE0NzAwMCwgMSkpCiAKIApAQCAtOTcxLDYgKzk4MiwzNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9uYW5fZXF1YWwoeCwgbmFuKSkKIAogCitjbGFzcyBGYWlsTmVnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCBfZmFpbF9uZWcgcHJpdmF0ZSBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X3Bhc3NfdGhyb3VnaChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdmFsdWVzIGFyZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQuCisgICAgICAgIHZhbHVlcyA9IFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXQorICAgICAgICBuZXcgPSBsaXN0KHN0YXRpc3RpY3MuX2ZhaWxfbmVnKHZhbHVlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzLCBuZXcpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZXNfcmFpc2Uoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IG5lZ2F0aXZlcyByYWlzZSBhbiBleGNlcHRpb24uCisgICAgICAgIGZvciB4IGluIFsxLCAyLjAsIEZyYWN0aW9uKDMpLCBEZWNpbWFsKDQpXToKKyAgICAgICAgICAgIHNlcSA9IFsteF0KKyAgICAgICAgICAgIGl0ID0gc3RhdGlzdGljcy5fZmFpbF9uZWcoc2VxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IsIG5leHQsIGl0KQorCisgICAgZGVmIHRlc3RfZXJyb3JfbXNnKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIGdpdmVuIGVycm9yIG1lc3NhZ2UgaXMgdXNlZC4KKyAgICAgICAgbXNnID0gImJhZG5lc3MgIyVkIiAlIHJhbmRvbS5yYW5kaW50KDEwMDAwLCA5OTk5OSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV4dChzdGF0aXN0aWNzLl9mYWlsX25lZyhbLTFdLCBtc2cpKQorICAgICAgICBleGNlcHQgc3RhdGlzdGljcy5TdGF0aXN0aWNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGVycm1zZyA9IGUuYXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJleHBlY3RlZCBleGNlcHRpb24sIGJ1dCBpdCBkaWRuJ3QgaGFwcGVuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJtc2csIG1zZykKKworCiAjID09PSBUZXN0cyBmb3IgcHVibGljIGZ1bmN0aW9ucyA9PT0KIAogY2xhc3MgVW5pdmFyaWF0ZUNvbW1vbk1peGluOgpAQCAtMTA4MiwxMyArMTEyMSwxMyBAQAogICAgIE5vdCBhbGwgdGVzdHMgdG8gZG8gd2l0aCB0eXBlcyBuZWVkIGdvIGluIHRoaXMgY2xhc3MuIE9ubHkgdGhvc2UgdGhhdAogICAgIHJlbHkgb24gdGhlIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgc2FtZSB0eXBlIGFzIGl0cyBpbnB1dCBkYXRhLgogICAgICIiIgotICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCi0gICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgotICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KKyAgICBkZWYgcHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgdHlwZXMgd2hpY2ggYXJlIGV4cGVjdGVkIHRvIGJlIGNvbnNlcnZlZC4iIiIKICAgICAgICAgY2xhc3MgTXlGbG9hdChmbG9hdCk6CiAgICAgICAgICAgICBkZWYgX190cnVlZGl2X18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX190cnVlZGl2X18ob3RoZXIpKQorICAgICAgICAgICAgZGVmIF9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3J0cnVlZGl2X18ob3RoZXIpKQogICAgICAgICAgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAgICAgICAgIHJldHVybiB0eXBlKHNlbGYpKHN1cGVyKCkuX19zdWJfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19yc3ViX18oc2VsZiwgb3RoZXIpOgpAQCAtMTA5OCw5ICsxMTM3LDE0IEBACiAgICAgICAgICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX2FkZF9fKG90aGVyKSkKICAgICAgICAgICAgIF9fcmFkZF9fID0gX19hZGRfXworICAgICAgICByZXR1cm4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCkKIAorICAgIGRlZiB0ZXN0X3R5cGVzX2NvbnNlcnZlZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgZnVuY3Rpb25zIGtlZXBzIHRoZSBzYW1lIHR5cGUgYXMgdGhlaXIgZGF0YSBwb2ludHMuCisgICAgICAgICMgKEV4Y2x1ZGVzIG1peGVkIGRhdGEgdHlwZXMuKSBUaGlzIG9ubHkgdGVzdHMgdGhlIHR5cGUgb2YgdGhlIHJldHVybgorICAgICAgICAjIHJlc3VsdCwgbm90IHRoZSB2YWx1ZS4KICAgICAgICAgZGF0YSA9IHNlbGYucHJlcGFyZV9kYXRhKCkKLSAgICAgICAgZm9yIGtpbmQgaW4gKGZsb2F0LCBEZWNpbWFsLCBGcmFjdGlvbiwgTXlGbG9hdCk6CisgICAgICAgIGZvciBraW5kIGluIHNlbGYucHJlcGFyZV90eXBlc19mb3JfY29uc2VydmF0aW9uX3Rlc3QoKToKICAgICAgICAgICAgIGQgPSBba2luZCh4KSBmb3IgeCBpbiBkYXRhXQogICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5mdW5jKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmVzdWx0KSwga2luZCkKQEAgLTEyNzUsMTIgKzEzMTksMTYgQEAKICAgICAgICAgZm9yIHggaW4gKDIzLCA0Mi41LCAxLjNlMTUsIEZyYWN0aW9uKDE1LCAxOSksIERlY2ltYWwoJzAuMjgnKSk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbeF0pLCB4KQogCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKQorCiAgICAgZGVmIHRlc3RfcmVwZWF0ZWRfc2luZ2xlX3ZhbHVlKHNlbGYpOgogICAgICAgICAjIFRoZSBhdmVyYWdlIG9mIGEgc2luZ2xlIHJlcGVhdGVkIHZhbHVlIGlzIHRoZSB2YWx1ZSBpdHNlbGYuCi0gICAgICAgIGZvciB4IGluICgzLjUsIDE3LCAyLjVlMTUsIEZyYWN0aW9uKDYxLCA2NyksIERlY2ltYWwoJzQuOTcxMicpKToKKyAgICAgICAgZm9yIHggaW4gc2VsZi5wcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3QoKToKICAgICAgICAgICAgIGZvciBjb3VudCBpbiAoMiwgNSwgMTAsIDIwKToKLSAgICAgICAgICAgICAgICBkYXRhID0gW3hdKmNvdW50Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoeD14LCBjb3VudD1jb3VudCk6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIHgpCiAKIAogY2xhc3MgVGVzdE1lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgpAQCAtMTMwNCw3ICsxMzUyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDIyLjAxNTYyNSkKIAogICAgIGRlZiB0ZXN0X2RlY2ltYWxzKHNlbGYpOgotICAgICAgICAjIFRlc3QgbWVhbiB3aXRoIGludHMuCisgICAgICAgICMgVGVzdCBtZWFuIHdpdGggRGVjaW1hbHMuCiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIGRhdGEgPSBbRCgiMS42MzQiKSwgRCgiMi41MTciKSwgRCgiMy45MTIiKSwgRCgiNC4wNzIiKSwgRCgiNS44MTMiKV0KICAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKQEAgLTEzNzksNiArMTQyNyw5NCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLm1lYW4oW3RpbnldKm4pLCB0aW55KQogCiAKK2NsYXNzIFRlc3RIYXJtb25pY01lYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5mdW5jID0gc3RhdGlzdGljcy5oYXJtb25pY19tZWFuCisKKyAgICBkZWYgcHJlcGFyZV9kYXRhKHNlbGYpOgorICAgICAgICAjIE92ZXJyaWRlIG1peGluIG1ldGhvZC4KKyAgICAgICAgdmFsdWVzID0gc3VwZXIoKS5wcmVwYXJlX2RhdGEoKQorICAgICAgICB2YWx1ZXMucmVtb3ZlKDApCisgICAgICAgIHJldHVybiB2YWx1ZXMKKworICAgIGRlZiBwcmVwYXJlX3ZhbHVlc19mb3JfcmVwZWF0ZWRfc2luZ2xlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC4xMjUnKSkKKworICAgIGRlZiB0ZXN0X3plcm8oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4gcmV0dXJucyB6ZXJvIHdoZW4gZ2l2ZW4gemVyby4KKyAgICAgICAgdmFsdWVzID0gWzEsIDAsIDJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDApCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByYWlzZXMgd2hlbiBnaXZlbiBhIG5lZ2F0aXZlIHZhbHVlLgorICAgICAgICBleGMgPSBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvcgorICAgICAgICBmb3IgdmFsdWVzIGluIChbLTFdLCBbMSwgLTIsIDNdKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHZhbHVlcz12YWx1ZXMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2VsZi5mdW5jLCB2YWx1ZXMpCisKKyAgICBkZWYgdGVzdF9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIGludHMuCisgICAgICAgIGRhdGEgPSBbMiwgNCwgNCwgOCwgMTYsIDE2XQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgNio0LzUpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfZXhhY3Qoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggc29tZSBjYXJlZnVsbHkgY2hvc2VuIGZsb2F0cy4KKyAgICAgICAgZGF0YSA9IFsxLzgsIDEvNCwgMS80LCAxLzIsIDEvMl0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIDEvNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoWzAuMjUsIDAuNSwgMS4wLCAxLjBdKSwgMC41KQorCisgICAgZGVmIHRlc3Rfc2luZ2xldG9uX2xpc3RzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuKFt4XSkgcmV0dXJucyAoYXBwcm94aW1hdGVseSkgeC4KKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoMSwgMTAxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCisKKyAgICBkZWYgdGVzdF9kZWNpbWFsc19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gRGVjaW1hbHMuCisgICAgICAgIEQgPSBEZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFtEKDE1KSwgRCgzMCksIEQoNjApLCBEKDYwKV0pLCBEKDMwKSkKKyAgICAgICAgZGF0YSA9IFtEKCIwLjA1IiksIEQoIjAuMTAiKSwgRCgiMC4yMCIpLCBEKCIwLjIwIildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKCIwLjEwIikpCisgICAgICAgIGRhdGEgPSBbRCgiMS42OCIpLCBEKCIwLjMyIiksIEQoIjUuOTQiKSwgRCgiMi43NSIpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRCg2NjUyOCkvNzA3MjMpCisKKyAgICBkZWYgdGVzdF9mcmFjdGlvbnMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggRnJhY3Rpb25zLgorICAgICAgICBGID0gRnJhY3Rpb24KKyAgICAgICAgZGF0YSA9IFtGKDEsIDIpLCBGKDIsIDMpLCBGKDMsIDQpLCBGKDQsIDUpLCBGKDUsIDYpLCBGKDYsIDcpLCBGKDcsIDgpXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgRig3KjQyMCwgNDAyOSkpCisKKyAgICBkZWYgdGVzdF9pbmYoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW5maW5pdHkuCisgICAgICAgIHZhbHVlcyA9IFsyLjAsIGZsb2F0KCdpbmYnKSwgMS4wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyh2YWx1ZXMpLCAyLjApCisKKyAgICBkZWYgdGVzdF9uYW4oc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggTkFOcy4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ25hbicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHNlbGYuZnVuYyh2YWx1ZXMpKSkKKworICAgIGRlZiB0ZXN0X211bHRpcGx5X2RhdGFfcG9pbnRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgbXVsdGlwbHlpbmcgZXZlcnkgZGF0YSBwb2ludCBieSBhIGNvbnN0YW50LgorICAgICAgICBjID0gMTExCisgICAgICAgIGRhdGEgPSBbMy40LCA0LjUsIDQuOSwgNi43LCA2LjgsIDcuMiwgOC4wLCA4LjEsIDkuNF0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkqYworICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoW3gqYyBmb3IgeCBpbiBkYXRhXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZG91YmxlZF9kYXRhKHNlbGYpOgorICAgICAgICAjIEhhcm1vbmljIG1lYW4gb2YgW2EsYi4uLnpdIHNob3VsZCBiZSBzYW1lIGFzIGZvciBbYSxhLGIsYi4uLnosel0uCisgICAgICAgIGRhdGEgPSBbcmFuZG9tLnVuaWZvcm0oMSwgNSkgZm9yIF8gaW4gcmFuZ2UoMTAwMCldCisgICAgICAgIGV4cGVjdGVkID0gc2VsZi5mdW5jKGRhdGEpCisgICAgICAgIGFjdHVhbCA9IHNlbGYuZnVuYyhkYXRhKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0QXBwcm94RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0TWVkaWFuKE51bWVyaWNUZXN0Q2FzZSwgQXZlcmFnZU1peGluKToKICAgICAjIENvbW1vbiB0ZXN0cyBmb3IgbWVkaWFuIGFuZCBhbGwgbWVkaWFuLiogZnVuY3Rpb25zLgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE2MDAsNiArMTczNiwyMiBAQAogICAgICAgICBkYXRhID0gWzIyMCwgMjIwLCAyNDAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjgwLCAyODAsIDMwMCwgMzIwLCAzNDBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEsIDIwKSwgMjY1LjApCiAKKyAgICBkZWYgdGVzdF9kYXRhX3R5cGVfZXJyb3Ioc2VsZik6CisgICAgICAgICMgVGVzdCBtZWRpYW5fZ3JvdXBlZCB3aXRoIHN0ciwgYnl0ZXMgZGF0YSB0eXBlcyBmb3IgZGF0YSBhbmQgaW50ZXJ2YWwKKyAgICAgICAgZGF0YSA9IFsiIiwgIiIsICIiXQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gW2IiIiwgYiIiLCBiIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbMSwgMiwgM10KKyAgICAgICAgaW50ZXJ2YWwgPSAiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9IGIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnVuYywgZGF0YSwgaW50ZXJ2YWwpCisKIAogY2xhc3MgVGVzdE1vZGUoTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4sIFVuaXZhcmlhdGVUeXBlTWl4aW4pOgogICAgICMgVGVzdCBjYXNlcyBmb3IgdGhlIGRpc2NyZXRlIHZlcnNpb24gb2YgbW9kZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CmluZGV4IDc3MmNkMDYuLjcyYjE5MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQpAQCAtMjMsOSArMjMsOSBAQAogICAgICIiIgogICAgIG5ld190ZXh0ID0gcmUuZXNjYXBlKHRleHQpCiAgICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKHJlLmVzY2FwZShhbXBtKSwgYW1wbSkKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1wlJywgJyUnKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXDonLCAnOicpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcPycsICc/JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcJScsICclJykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcOicsICc6JykKKyAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocidcPycsICc/JykKICAgICByZXR1cm4gbmV3X3RleHQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CnNpbWlsYXJpdHkgaW5kZXggNzklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQppbmRleCA4N2NmZmU4Li5hYmE0ZmM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmluZ19saXRlcmFscy5weQpAQCAtMzEsNiArMzEsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogCiAKQEAgLTEwNCw2ICsxMDUsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIHIiIiIgJ1xVMDAwMDAwJyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCByIiIiICdcVTAwMDAwMDAnICIiIikKIAorICAgIGRlZiB0ZXN0X2V2YWxfc3RyX2ludmFsaWRfZXNjYXBlKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiByYW5nZSgxLCAxMjgpOgorICAgICAgICAgICAgaWYgYiBpbiBiIiIiXG5cciInMDEyMzQ1NjdOVVxcYWJmbnJ0dXZ4IiIiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociInXCVjJyIgJSBiKSwgJ1xcJyArIGNocihiKSkKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBldmFsKCInJydcblxceicnJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbMF0uZmlsZW5hbWUsICc8c3RyaW5nPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1swXS5saW5lbm8sIDIpCisKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZXJyb3InLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBldmFsKCInJydcblxceicnJyIpCisgICAgICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMuZmlsZW5hbWUsICc8c3RyaW5nPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhjLmxpbmVubywgMikKKwogICAgIGRlZiB0ZXN0X2V2YWxfc3RyX3JhdyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByJ3gnICIiIiksICd4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcidceDAxJyAiIiIpLCAnXFwnICsgJ3gwMScpCkBAIC0xMjEsMTUgKzE0NSwzOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIiIiIGInXHgwMScgIiIiKSwgYnl0ZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidceDgxJyAiIiIpLCBieXRlKDB4ODEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXHg4MScgIiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1x1MTg4MScgIiIiKSwgYidcXCcgKyBiJ3UxODgxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHUxODgxJyAiIiIpLCBiJ1xcJyArIGIndTE4ODEnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXHUxODgxJyAiIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXFUwMDAxZDEyMCcgIiIiKSwgYidcXCcgKyBiJ1UwMDAxZDEyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1xVMDAwMWQxMjAnICIiIiksIGInXFwnICsgYidVMDAwMWQxMjAnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGInXFUwMDAxZDEyMCcgIiIiKQogCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19pbmNvbXBsZXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgciIiIiBiJ1x4JyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCByIiIiIGInXHgwJyAiIiIpCiAKKyAgICBkZWYgdGVzdF9ldmFsX2J5dGVzX2ludmFsaWRfZXNjYXBlKHNlbGYpOgorICAgICAgICBmb3IgYiBpbiByYW5nZSgxLCAxMjgpOgorICAgICAgICAgICAgaWYgYiBpbiBiIiIiXG5cciInMDEyMzQ1NjdcXGFiZm5ydHZ4IiIiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociJiJ1wlYyciICUgYiksIGInXFwnICsgYnl0ZXMoW2JdKSkKKworICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBldmFsKCJiJycnXG5cXHonJyciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3WzBdLmZpbGVuYW1lLCAnPHN0cmluZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbMF0ubGluZW5vLCAyKQorCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Vycm9yJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgZXZhbCgiYicnJ1xuXFx6JycnIikKKyAgICAgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5maWxlbmFtZSwgJzxzdHJpbmc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGMubGluZW5vLCAyKQorCiAgICAgZGVmIHRlc3RfZXZhbF9ieXRlc19yYXcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgYnIneCcgIiIiKSwgYid4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiByYid4JyAiIiIpLCBiJ3gnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKaW5kZXggODUxMjZlNi4uMmNmMDkyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHJlCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZSBhcyBkYXRldGltZV9kYXRlCiAKQEAgLTEzMCw3ICsxMjksNyBAQAogICAgIGRlZiB0ZXN0X3BhdHRlcm5fZXNjYXBpbmcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGFueSBjaGFyYWN0ZXJzIGluIHRoZSBmb3JtYXQgc3RyaW5nIHRoYXQgbWlnaHQgYmUgdGFrZW4gYXMKICAgICAgICAgIyByZWdleCBzeW50YXggaXMgZXNjYXBlZC4KLSAgICAgICAgcGF0dGVybl9zdHJpbmcgPSBzZWxmLnRpbWVfcmUucGF0dGVybigiXGQrIikKKyAgICAgICAgcGF0dGVybl9zdHJpbmcgPSBzZWxmLnRpbWVfcmUucGF0dGVybihyIlxkKyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ociJcXGRcKyIsIHBhdHRlcm5fc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICIlcyBkb2VzIG5vdCBoYXZlIHJlIGNoYXJhY3RlcnMgZXNjYXBlZCBwcm9wZXJseSIgJQogICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm5fc3RyaW5nKQpAQCAtMTUzLDggKzE1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgdXNpbmcgJyVzJzsgZ3JvdXAgJ2EnID0gJyVzJywgZ3JvdXAgJ2InID0gJXMnIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvdW5kLnN0cmluZywgZm91bmQucmUucGF0dGVybiwgZm91bmQuZ3JvdXAoJ2EnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQuZ3JvdXAoJ2InKSkpCi0gICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdhJywnQScsJ2InLCdCJywnYycsJ2QnLCdIJywnSScsJ2onLCdtJywnTScsJ3AnLCdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ1UnLCd3JywnVycsJ3gnLCdYJywneScsJ1knLCdaJywnJScpOgorICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnYScsJ0EnLCdiJywnQicsJ2MnLCdkJywnRycsJ0gnLCdJJywnaicsJ20nLCdNJywncCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdTJywndScsJ1UnLCdWJywndycsJ1cnLCd4JywnWCcsJ3knLCdZJywnWicsJyUnKToKICAgICAgICAgICAgIGNvbXBpbGVkID0gc2VsZi50aW1lX3JlLmNvbXBpbGUoIiUiICsgZGlyZWN0aXZlKQogICAgICAgICAgICAgZm91bmQgPSBjb21waWxlZC5tYXRjaCh0aW1lLnN0cmZ0aW1lKCIlIiArIGRpcmVjdGl2ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJNYXRjaGluZyBmYWlsZWQgb24gJyVzJyB1c2luZyAnJXMnIHJlZ2V4IiAlCkBAIC0xNzEsOSArMTcwLDkgQEAKIAogICAgIGRlZiB0ZXN0X21hdGNoaW5nX3dpdGhfZXNjYXBlcyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgYSBmb3JtYXQgdGhhdCByZXF1aXJlcyBlc2NhcGluZyBvZiBjaGFyYWN0ZXJzIHdvcmtzCi0gICAgICAgIGNvbXBpbGVkX3JlID0gc2VsZi50aW1lX3JlLmNvbXBpbGUoIlx3KyAlbSIpCi0gICAgICAgIGZvdW5kID0gY29tcGlsZWRfcmUubWF0Y2goIlx3KyAxMCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgIkVzY2FwaW5nIGZhaWxlZCBvZiBmb3JtYXQgJ1x3KyAxMCciKQorICAgICAgICBjb21waWxlZF9yZSA9IHNlbGYudGltZV9yZS5jb21waWxlKHIiXHcrICVtIikKKyAgICAgICAgZm91bmQgPSBjb21waWxlZF9yZS5tYXRjaChyIlx3KyAxMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgciJFc2NhcGluZyBmYWlsZWQgb2YgZm9ybWF0ICdcdysgMTAnIikKIAogICAgIGRlZiB0ZXN0X2xvY2FsZV9kYXRhX3dfcmVnZXhfbWV0YWNoYXJhY3RlcnMoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBpZiBsb2NhbGUgZGF0YSBjb250YWlucyByZWdleCBtZXRhY2hhcmFjdGVycyB0aGV5IGFyZQpAQCAtMjE5LDYgKzIxOCwyNiBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiclcycgZGlkIG5vdCByYWlzZSBWYWx1ZUVycm9yIiAlIGJhZF9mb3JtYXQpCiAKKyAgICAgICAgIyBBbWJpZ3VvdXMgb3IgaW5jb21wbGV0ZSBjYXNlcyB1c2luZyBJU08geWVhci93ZWVrL3dlZWtkYXkgZGlyZWN0aXZlcworICAgICAgICAjIDEuIElTTyB3ZWVrICglVikgaXMgc3BlY2lmaWVkLCBidXQgdGhlIHllYXIgaXMgc3BlY2lmaWVkIHdpdGggJVkKKyAgICAgICAgIyBpbnN0ZWFkIG9mICVHCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUwIiwgIiVZICVWIikKKyAgICAgICAgIyAyLiBJU08geWVhciAoJUcpIGFuZCBJU08gd2VlayAoJVYpIGFyZSBzcGVjaWZpZWQsIGJ1dCB3ZWVrZGF5IGlzIG5vdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MSIsICIlRyAlViIpCisgICAgICAgICMgMy4gSVNPIHllYXIgKCVHKSBhbmQgd2Vla2RheSBhcmUgc3BlY2lmaWVkLCBidXQgSVNPIHdlZWsgKCVWKSBpcyBub3QKKyAgICAgICAgZm9yIHcgaW4gKCdBJywgJ2EnLCAndycsICd1Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTEiLCIlRyAle30iLmZvcm1hdCh3KSkKKyAgICAgICAgIyA0LiBJU08geWVhciBpcyBzcGVjaWZpZWQgYWxvbmUgKGUuZy4gdGltZS5zdHJwdGltZSgnMjAxNScsICclRycpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMjAxNSIsICIlRyIpCisgICAgICAgICMgNS4gSnVsaWFuL29yZGluYWwgZGF5ICglaikgaXMgc3BlY2lmaWVkIHdpdGggJUcsIGJ1dCBub3QgJVkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgMjU2IiwgIiVHICVqIikKKworCiAgICAgZGVmIHRlc3Rfc3RycHRpbWVfZXhjZXB0aW9uX2NvbnRleHQoc2VsZik6CiAgICAgICAgICMgY2hlY2sgdGhhdCB0aGlzIGRvZXNuJ3QgY2hhaW4gZXhjZXB0aW9ucyBuZWVkbGVzc2x5IChzZWUgIzE3NTcyKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CkBAIC0yOTAsNyArMzA5LDcgQEAKIAogICAgIGRlZiB0ZXN0X3dlZWtkYXkoc2VsZik6CiAgICAgICAgICMgVGVzdCB3ZWVrZGF5IGRpcmVjdGl2ZXMKLSAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ0EnLCAnYScsICd3Jyk6CisgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdBJywgJ2EnLCAndycsICd1Jyk6CiAgICAgICAgICAgICBzZWxmLmhlbHBlcihkaXJlY3RpdmUsNikKIAogICAgIGRlZiB0ZXN0X2p1bGlhbihzZWxmKToKQEAgLTM4NCw3ICs0MDMsNyBAQAogICAgICAgICAjIHVuYmFsYW5jZWQgcGFyZW50aGVzZXMgd2hlbiB0aGUgcmVnZXggaXMgY29tcGlsZWQgaWYgdGhleSBhcmUgbm90CiAgICAgICAgICMgZXNjYXBlZC4KICAgICAgICAgIyBUZXN0IGluc3RpZ2F0ZWQgYnkgYnVnICM3OTYxNDkgLgotICAgICAgICBuZWVkX2VzY2FwaW5nID0gIi5eJCorP3t9XFtdfCkoIgorICAgICAgICBuZWVkX2VzY2FwaW5nID0gciIuXiQqKz97fVxbXXwpKCIKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShuZWVkX2VzY2FwaW5nLCBuZWVkX2VzY2FwaW5nKSkKIAogICAgIGRlZiB0ZXN0X2ZlYjI5X29uX2xlYXBfeWVhcl93aXRob3V0X3llYXIoc2VsZik6CkBAIC00NTMsMjAgKzQ3MiwzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbGN1bGF0aW9uIG9mIGRheSBvZiB0aGUgd2VlayBmYWlsZWQ7IgogICAgICAgICAgICAgICAgICAgICAgICAgICIlcyAhPSAlcyIgJSAocmVzdWx0LnRtX3dkYXksIHNlbGYudGltZV90dXBsZS50bV93ZGF5KSkKIAorICAgIGlmIHN1cHBvcnQuaXNfYW5kcm9pZDoKKyAgICAgICAgIyBJc3N1ZSAjMjY5Mjk6IHN0cmZ0aW1lKCkgb24gQW5kcm9pZCBpbmNvcnJlY3RseSBmb3JtYXRzICVWIG9yICVHIGZvcgorICAgICAgICAjIHRoZSBsYXN0IG9yIHRoZSBmaXJzdCBpbmNvbXBsZXRlIHdlZWsgaW4gYSB5ZWFyLgorICAgICAgICBfeW1kX2V4Y2x1ZGVkID0gKCgxOTA1LCAxLCAxKSwgKDE5MDYsIDEyLCAzMSksICgyMDA4LCAxMiwgMjkpLAorICAgICAgICAgICAgICAgICAgICAgICAgKDE5MTcsIDEyLCAzMSkpCisgICAgICAgIF9mb3JtYXRzX2V4Y2x1ZGVkID0gKCclRyAlVicsKQorICAgIGVsc2U6CisgICAgICAgIF95bWRfZXhjbHVkZWQgPSAoKQorICAgICAgICBfZm9ybWF0c19leGNsdWRlZCA9ICgpCisKICAgICBkZWYgdGVzdF93ZWVrX29mX3llYXJfYW5kX2RheV9vZl93ZWVrX2NhbGN1bGF0aW9uKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBiZSBhYmxlIHRvIGluZmVyIGRhdGUgaWYgZ2l2ZW4geWVhciwgd2VlayBvZiB5ZWFyICglVSBvciAlVykKICAgICAgICAgIyBhbmQgZGF5IG9mIHRoZSB3ZWVrCiAgICAgICAgIGRlZiB0ZXN0X2hlbHBlcih5bWRfdHVwbGUsIHRlc3RfcmVhc29uKToKLSAgICAgICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdXJywgJ1UnKToKLSAgICAgICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gIiUlWSAlJSVzICUldyIgJSBkaXJlY3RpdmUKLSAgICAgICAgICAgICAgICBkdF9kYXRlID0gZGF0ZXRpbWVfZGF0ZSgqeW1kX3R1cGxlKQotICAgICAgICAgICAgICAgIHN0cnBfaW5wdXQgPSBkdF9kYXRlLnN0cmZ0aW1lKGZvcm1hdF9zdHJpbmcpCi0gICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwgZm9ybWF0X3N0cmluZykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RycF9vdXRwdXRbOjNdID09IHltZF90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlcyglcykgdGVzdCBmYWlsZWQgdy8gJyVzJzogJXMgIT0gJXMgKCVzICE9ICVzKSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0X3JlYXNvbiwgZGlyZWN0aXZlLCBzdHJwX2lucHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sIGR0X2RhdGUudGltZXR1cGxlKClbN10pKQorICAgICAgICAgICAgZm9yIHllYXJfd2Vla19mb3JtYXQgaW4gKCclWSAlVycsICclWSAlVScsICclRyAlVicpOgorICAgICAgICAgICAgICAgIGlmICh5ZWFyX3dlZWtfZm9ybWF0IGluIHNlbGYuX2Zvcm1hdHNfZXhjbHVkZWQgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICB5bWRfdHVwbGUgaW4gc2VsZi5feW1kX2V4Y2x1ZGVkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgZm9yIHdlZWtkYXlfZm9ybWF0IGluICgnJXcnLCAnJXUnLCAnJWEnLCAnJUEnKToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9IHllYXJfd2Vla19mb3JtYXQgKyAnICcgKyB3ZWVrZGF5X2Zvcm1hdAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0X3JlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZT15bWRfdHVwbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mb3JtYXRfc3RyaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUgPSBkYXRldGltZV9kYXRlKCp5bWRfdHVwbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXQgPSBfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUoc3RycF9pbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiJXI6ICVzICE9ICVzIiAlIChzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJwX291dHB1dFs6M10sIHltZF90dXBsZSwgbXNnKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgMyksICJ3ZWVrIDAiKQogICAgICAgICB0ZXN0X2hlbHBlcigoMTkwMSwgMSwgOCksICJjb21tb24gY2FzZSIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAxMyksICJkYXkgb24gU3VuZGF5IikKQEAgLTQ5OCwzMyArNTM0LDQ4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9zdHJwdGltZS5fc3RycHRpbWVfdGltZSh2YWx1ZSwgZm9ybWF0KVs6LTFdLCBleHBlY3RlZCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVVICV3JywgMjAxNCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMCcsICclWSAlVyAldycsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMScsICclRyAlViAldScsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKICAgICAgICAgY2hlY2soJzIwMTUgMCAxJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMicsICclRyAlViAldScsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMTUgMCAyJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgMycsICclRyAlViAldScsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMTUgMCAzJywgJyVZICVXICV3JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNCcsICclRyAlViAldScsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVSAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNCcsICclWSAlVyAldycsIDIwMTUsIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNScsICclRyAlViAldScsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVSAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNScsICclWSAlVyAldycsIDIwMTUsIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNicsICclRyAlViAldScsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVSAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgNicsICclWSAlVyAldycsIDIwMTUsIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDE1IDEgNycsICclRyAlViAldScsIDIwMTUsIDEsIDQsIDAsIDAsIDAsIDYsIDQpCiAKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVVICV3JywgMjAwOCwgMTIsIDI4LCAwLCAwLCAwLCA2LCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMCcsICclWSAlVyAldycsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMScsICclRyAlViAldScsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKICAgICAgICAgY2hlY2soJzIwMDkgMCAxJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMicsICclRyAlViAldScsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKICAgICAgICAgY2hlY2soJzIwMDkgMCAyJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgMycsICclRyAlViAldScsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKICAgICAgICAgY2hlY2soJzIwMDkgMCAzJywgJyVZICVXICV3JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNCcsICclRyAlViAldScsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVSAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNCcsICclWSAlVyAldycsIDIwMDksIDEsIDEsIDAsIDAsIDAsIDMsIDEpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNScsICclRyAlViAldScsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVSAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNScsICclWSAlVyAldycsIDIwMDksIDEsIDIsIDAsIDAsIDAsIDQsIDIpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNicsICclRyAlViAldScsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVSAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgNicsICclWSAlVyAldycsIDIwMDksIDEsIDMsIDAsIDAsIDAsIDUsIDMpCisgICAgICAgIGNoZWNrKCcyMDA5IDEgNycsICclRyAlViAldScsIDIwMDksIDEsIDQsIDAsIDAsIDAsIDYsIDQpCisKIAogY2xhc3MgQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IGNhY2hpbmcgd29ya3MgcHJvcGVybHkuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CmluZGV4IGVmYmRiZmMuLjRkOWQ2MDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgYWJjCiBpbXBvcnQgYXJyYXkKK2ltcG9ydCBtYXRoCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN0cnVjdApAQCAtMTUsMjIgKzE2LDEwIEBACiBkZWYgaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoYnl0ZW9yZGVycz1ieXRlb3JkZXJzKToKICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgogICAgICAgICBmb3IgYnl0ZW9yZGVyIGluIGJ5dGVvcmRlcnM6Ci0gICAgICAgICAgICBpZiAoYnl0ZW9yZGVyIGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ3EnLCAnUScpIGFuZAotICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgbm90IGluICgnJywgJ0AnKSBhbmQgY29kZSBpbiAoJ24nLCAnTicpKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgeWllbGQgY29kZSwgYnl0ZW9yZGVyCiAKLSMgTmF0aXZlICdxJyBwYWNraW5nIGlzbid0IGF2YWlsYWJsZSBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgQwotIyBsb25nIGxvbmcgdHlwZS4KLXRyeToKLSAgICBzdHJ1Y3QucGFjaygncScsIDUpCi1leGNlcHQgc3RydWN0LmVycm9yOgotICAgIEhBVkVfTE9OR19MT05HID0gRmFsc2UKLWVsc2U6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBUcnVlCi0KIGRlZiBzdHJpbmdfcmV2ZXJzZShzKToKICAgICByZXR1cm4gc1s6Oi0xXQogCkBAIC0xNTgsOSArMTQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcsICduTicKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBuYXRpdmVfcGFpcnMgKz0gJ3FRJywKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJywgJ3FRJwogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgogICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiAnJywgJ0AnOgogICAgICAgICAgICAgICAgIHNpZ25lZF9zaXplID0gc3RydWN0LmNhbGNzaXplKGJ5dGVvcmRlciArIGZvcm1hdF9wYWlyWzBdKQpAQCAtMTczLDkgKzE2MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDQsIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ2gnKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaScpLCBzdHJ1Y3QuY2FsY3NpemUoJ2wnKSkKLSAgICAgICAgaWYgSEFWRV9MT05HX0xPTkc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoOCwgc3RydWN0LmNhbGNzaXplKCdxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc3RydWN0LmNhbGNzaXplKCduJyksIHN0cnVjdC5jYWxjc2l6ZSgnaScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdQJykpCiAKQEAgLTM2Niw4ICszNTIsNiBAQAogICAgICAgICAjIFNGIGJ1ZyA3MDU4MzYuICAiPGYiIGFuZCAiPmYiIGhhZCBhIHNldmVyZSByb3VuZGluZyBidWcsIHdoZXJlIGEgY2FycnkKICAgICAgICAgIyBmcm9tIHRoZSBsb3ctb3JkZXIgZGlzY2FyZGVkIGJpdHMgY291bGQgcHJvcGFnYXRlIGludG8gdGhlIGV4cG9uZW50CiAgICAgICAgICMgZmllbGQsIGNhdXNpbmcgdGhlIHJlc3VsdCB0byBiZSB3cm9uZyBieSBhIGZhY3RvciBvZiAyLgotICAgICAgICBpbXBvcnQgbWF0aAotCiAgICAgICAgIGZvciBiYXNlIGluIHJhbmdlKDEsIDMzKToKICAgICAgICAgICAgICMgc21hbGxlciA8LSBsYXJnZXN0IHJlcHJlc2VudGFibGUgZmxvYXQgbGVzcyB0aGFuIGJhc2UuCiAgICAgICAgICAgICBkZWx0YSA9IDAuNQpAQCAtNjU5LDYgKzY0MywxMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQogCisgICAgZGVmIHRlc3RfaGFsZl9mbG9hdChzZWxmKToKKyAgICAgICAgIyBMaXR0bGUtZW5kaWFuIGV4YW1wbGVzIGZyb206CisgICAgICAgICMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxmX3ByZWNpc2lvbl9mbG9hdGluZy1wb2ludF9mb3JtYXQKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3QgPSBbCisgICAgICAgICAgICAoYidceDAwXHgzYycsIDEuMCksCisgICAgICAgICAgICAoYidceDAwXHhjMCcsIC0yLjApLAorICAgICAgICAgICAgKGInXHhmZlx4N2InLCA2NTUwNC4wKSwgIyAgKG1heCBoYWxmIHByZWNpc2lvbikKKyAgICAgICAgICAgIChiJ1x4MDBceDA0JywgMioqLTE0KSwgIyB+PSA2LjEwMzUyICogMTAqKi01IChtaW4gcG9zIG5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDFceDAwJywgMioqLTI0KSwgIyB+PSA1Ljk2MDQ2ICogMTAqKi04IChtaW4gcG9zIHN1Ym5vcm1hbCkKKyAgICAgICAgICAgIChiJ1x4MDBceDAwJywgMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDgwJywgLTAuMCksCisgICAgICAgICAgICAoYidceDAwXHg3YycsIGZsb2F0KCcraW5mJykpLAorICAgICAgICAgICAgKGInXHgwMFx4ZmMnLCBmbG9hdCgnLWluZicpKSwKKyAgICAgICAgICAgIChiJ1x4NTVceDM1JywgMC4zMzMyNTE5NTMxMjUpLCAjIH49IDEvMworICAgICAgICBdCisKKyAgICAgICAgZm9yIGxlX2JpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX2NsZWFuUm91bmR0cmlwX2xpc3Q6CisgICAgICAgICAgICBiZV9iaXRzID0gbGVfYml0c1s6Oi0xXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc8ZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnPGUnLCBmKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnPmUnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmVfYml0cywgc3RydWN0LnBhY2soJz5lJywgZikpCisgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICdsaXR0bGUnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgc3RydWN0LnVucGFjaygnZScsIGxlX2JpdHMpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVfYml0cywgc3RydWN0LnBhY2soJ2UnLCBmKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgYmVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorCisgICAgICAgICMgQ2hlY2sgZm9yIE5hTiBoYW5kbGluZzoKKyAgICAgICAgZm9ybWF0X2JpdHNfX25hbl9saXN0ID0gWworICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4ZmMnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceGZlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHhmZicpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMVx4N2MnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4MDBceDdlJyksCisgICAgICAgICAgICAoJzxlJywgYidceGZmXHg3ZicpLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMgaW4gZm9ybWF0X2JpdHNfX25hbl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc3RydWN0LnVucGFjaygnPGUnLCBiaXRzKVswXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc+ZScsIGJpdHNbOjotMV0pWzBdKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgcGFja2luZyBwcm9kdWNlcyBhIGJpdCBwYXR0ZXJuIHJlcHJlc2VudGluZyBhIHF1aWV0IE5hTjoKKyAgICAgICAgIyBhbGwgZXhwb25lbnQgYml0cyBhbmQgdGhlIG1zYiBvZiB0aGUgZnJhY3Rpb24gc2hvdWxkIGFsbCBiZSAxLgorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCBtYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorICAgICAgICBwYWNrZWQgPSBzdHJ1Y3QucGFjaygnPGUnLCAtbWF0aC5uYW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2VkWzFdICYgMHg3ZSwgMHg3ZSkKKworICAgICAgICAjIENoZWNrcyBmb3Igcm91bmQtdG8tZXZlbiBiZWhhdmlvcgorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fcm91bmRpbmdfbGlzdCA9IFsKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAxJywgMi4wKiotMjUgKyAyLjAqKi0zNSksICMgUm91bmRzIHRvIG1pbmltdW0gc3Vibm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDAnLCAyLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjQpLCAjIExhcmdlc3Qgc3Vibm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgwM1x4ZmYnLCAyLjAqKi0xNCAtIDIuMCoqLTI1IC0gMi4wKiotNjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCAtIDIuMCoqLTI1KSwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDRceDAwJywgMi4wKiotMTQpLCAjIFNtYWxsZXN0IG5vcm1hbC4KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAxJywgMS4wKzIuMCoqLTExICsgMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4M2NceDAwJywgMS4wKzIuMCoqLTEyKSwgIyByb3VuZHMgdG8gMS4wCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTA0KSwgIyBsYXJnZXN0IG5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg3Ylx4ZmYnLCA2NTUxOSksICMgcm91bmRzIHRvIDY1NTA0CisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMScsIC0yLjAqKi0yNSAtIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAwJywgLTIuMCoqLTI1KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8gKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjYpLCAjIFVuZGVyZmxvd3MgdG8gemVybworICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDEnLCAtMS4wLTIuMCoqLTExIC0gMi4wKiotMTYpLCAjIHJvdW5kcyB0byAxLjArMioqKC0xMCkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMSksICMgcm91bmRzIHRvIDEuMCAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMCcsIC0xLjAtMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ZmJceGZmJywgLTY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKworICAgICAgICAjIFRoaXMgb3ZlcmZsb3dzLCBhbmQgc28gcmFpc2VzIGFuIGVycm9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAjIFZhbHVlcyB0aGF0IHJvdW5kIHRvIGluZmluaXR5LgorICAgICAgICAgICAgKCc+ZScsIDY1NTIwLjApLAorICAgICAgICAgICAgKCc+ZScsIDY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIDFlMzAwKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgLTY1NTM2LjApLAorICAgICAgICAgICAgKCc+ZScsIC0xZTMwMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJzxlJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgMWUzMDApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJzxlJywgLTFlMzAwKSwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0Y29kZSwgZikKKworICAgICAgICAjIERvdWJsZSByb3VuZGluZworICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHg2N1x4ZmYnLCAweDFmZmRmZmZmZmYgKiAyKiotMjYpLCAjIHNob3VsZCBiZSAyMDQ3LCBpZiBkb3VibGUtcm91bmRlZCA2ND4zMj4xNiwgYmVjb21lcyAyMDQ4CisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fZG91YmxlUm91bmRpbmdFcnJvcl9saXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRzLCBzdHJ1Y3QucGFjayhmb3JtYXRjb2RlLCBmKSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTEyZmIxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJjbGFzc2luaXQucHkKQEAgLTAsMCArMSwyNjggQEAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGluaXRpYWxpemVkID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShBLmluaXRpYWxpemVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoQi5pbml0aWFsaXplZCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZGljdChzZWxmKToKKyAgICAgICAgY2xhc3MgQShkaWN0KToKKyAgICAgICAgICAgIGluaXRpYWxpemVkID0gRmFsc2UKKworICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gVHJ1ZQorCisgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShBLmluaXRpYWxpemVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoQi5pbml0aWFsaXplZCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfa3dhcmdzKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGNscy5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBjbGFzcyBCKEEsIHg9Myk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLmt3YXJncywgZGljdCh4PTMpKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19lcnJvcihzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEIoQSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc193cm9uZyhzZWxmKToKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIHdoYXRldmVyKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX3NraXBwZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2VXaXRoSW5pdDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5pbml0aWFsaXplZCA9IGNscworCisgICAgICAgIGNsYXNzIEJhc2VXaXRob3V0SW5pdChCYXNlV2l0aEluaXQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEEoQmFzZVdpdGhvdXRJbml0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydElzKEEuaW5pdGlhbGl6ZWQsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQmFzZVdpdGhvdXRJbml0LmluaXRpYWxpemVkLCBCYXNlV2l0aG91dEluaXQpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2RpYW1vbmQoc2VsZik6CisgICAgICAgIGNsYXNzIEJhc2U6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgPSBbXQorCisgICAgICAgIGNsYXNzIExlZnQoQmFzZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTWlkZGxlOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgbWlkZGxlLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgICBjbHMuY2FsbHMgKz0gW21pZGRsZV0KKworICAgICAgICBjbGFzcyBSaWdodChCYXNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIHJpZ2h0PSJyaWdodCIsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyArPSBbcmlnaHRdCisKKyAgICAgICAgY2xhc3MgQShMZWZ0LCBNaWRkbGUsIFJpZ2h0LCBtaWRkbGU9Im1pZGRsZSIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQS5jYWxscywgWyJyaWdodCIsICJtaWRkbGUiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMZWZ0LmNhbGxzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChSaWdodC5jYWxscywgW10pCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZShzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZCA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQS5kLm5hbWUsICJkIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBLmQub3duZXIsIEEpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9tZXRhY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgcmV0ID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LmQubmFtZSwgImQiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0LmQub3duZXIsIHJldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorCisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gb3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQSwgMCkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xhc3MgTm90R29pbmdUb1dvcms6CisgICAgICAgICAgICAgICAgYXR0ciA9IERlc2NyaXB0b3IoKQorCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiTm90R29pbmdUb1dvcmtcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJhdHRyXGInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiRGVzY3JpcHRvclxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NhdXNlX18sIFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfd3Jvbmcoc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGFzcyBOb3RHb2luZ1RvV29yazoKKyAgICAgICAgICAgICAgICBhdHRyID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJOb3RHb2luZ1RvV29ya1xiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYmF0dHJcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJEZXNjcmlwdG9yXGInKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY2F1c2VfXywgVHlwZUVycm9yKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfbG9va3VwKHNlbGYpOgorICAgICAgICByZXNvbHZlZCA9IFtdCisgICAgICAgIGNsYXNzIE5vbkRlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICAgICAgcmVzb2x2ZWQuYXBwZW5kKG5hbWUpCisKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGQgPSBOb25EZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdfX3NldF9uYW1lX18nLCByZXNvbHZlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnX19zZXRfbmFtZV9fIGlzIGxvb2tlZCB1cCBpbiBpbnN0YW5jZSBkaWN0JykKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX2luaXRfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gb3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgICAgIHNlbGYubWV0YV9vd25lciA9IHNlbGYub3duZXIKKyAgICAgICAgICAgICAgICBzZWxmLm1ldGFfbmFtZSA9IHNlbGYubmFtZQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMpOgorICAgICAgICAgICAgICAgIGNscy5vd25lciA9IGNscy5kLm93bmVyCisgICAgICAgICAgICAgICAgY2xzLm5hbWUgPSBjbHMuZC5uYW1lCisKKyAgICAgICAgY2xhc3MgQihBLCBtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLm93bmVyLCBCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIubmFtZSwgJ2QnKQorICAgICAgICBzZWxmLmFzc2VydElzKEIubWV0YV9vd25lciwgQikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLm5hbWUsICdkJykKKworICAgIGRlZiB0ZXN0X2Vycm9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGVzLm5ld19jbGFzcygiTXlDbGFzcyIsIChvYmplY3QsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpKQorICAgICAgICB0eXBlcy5wcmVwYXJlX2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYub3RoZXJhcmcgPSBvdGhlcmFyZworCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfZXJyb3JzX2NoYW5nZWRfcGVwNDg3KHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3RzIGZhaWxlZCBiZWZvcmUgUHl0aG9uIDMuNiwgUEVQIDQ4NworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lPW5hbWUsIGJhc2VzPWJhc2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdD1uYW1lc3BhY2UpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXlNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCBvdGhlcmFyZyk6CisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlDbGFzcy5vdGhlcmFyZywgMSkKKworICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIHQgPSB0eXBlKCdOZXdDbGFzcycsIChvYmplY3QsKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0LCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19uYW1lX18sICdOZXdDbGFzcycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZShuYW1lPSdOZXdDbGFzcycsIGJhc2VzPShvYmplY3QsKSwgZGljdD17fSkKKworCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CmluZGV4IDc1OGUwOTQuLjczZGExOTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKQEAgLTEsMjAgKzEsMTYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHNjcmlwdF9oZWxwZXIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCBzaWduYWwKIGltcG9ydCBpbwotaW1wb3J0IGxvY2FsZQogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHRpbWUKLWltcG9ydCByZQogaW1wb3J0IHNlbGVjdG9ycwogaW1wb3J0IHN5c2NvbmZpZwotaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2MKQEAgLTI1LDYgKzIxLDkgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiBtc3dpbmRvd3MgPSAoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIpCiAKICMKQEAgLTI5NCw3ICsyOTMsOCBAQAogICAgICAgICAjIFZlcmlmeSBmaXJzdCB0aGF0IHRoZSBjYWxsIHN1Y2NlZWRzIHdpdGhvdXQgdGhlIGV4ZWN1dGFibGUgYXJnLgogICAgICAgICBwcmVfYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIl0KICAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihwcmVfYXJncykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoRmlsZU5vdEZvdW5kRXJyb3IsIFBlcm1pc3Npb25FcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPSJkb2Vzbm90ZXhpc3QiKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJleGVjdXRhYmxlIGFyZ3VtZW50IHJlcGxhY2VzIHNoZWxsIikKQEAgLTQ0OCw4ICs0NDgsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKCJvcmFuZ2UiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIib3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZG91dCBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTQ3OSw4ICs0NzksOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuc3RkZXJyLndyaXRlKCJzdHJhd2JlcnJ5IiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3RkZXJyLnJlYWQoKSwgYiJzdHJhd2JlcnJ5IikKIAogICAgIGRlZiB0ZXN0X3N0ZGVycl9maWxlZGVzKHNlbGYpOgogICAgICAgICAjIHN0ZGVyciBpcyBzZXQgdG8gb3BlbiBmaWxlIGRlc2NyaXB0b3IKQEAgLTUzNSw4ICs1MzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZW9yYW5nZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKIAogICAgIGRlZiB0ZXN0X3N0ZG91dF9zdGRlcnJfZmlsZShzZWxmKToKICAgICAgICAgIyBjYXB0dXJlIHN0ZG91dCBhbmQgc3RkZXJyIHRvIHRoZSBzYW1lIG9wZW4gZmlsZQpAQCAtNzk0LDE4ICs3OTQsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTFcbiIpCi0gICAgICAgIHAuc3RkaW4uZmx1c2goKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi53cml0ZSgibGluZTNcbiIpCi0gICAgICAgIHAuc3RkaW4uY2xvc2UoKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTNcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLCAibGluZTFcbiIpCisgICAgICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKKyAgICAgICAgICAgIHAuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTRcbmxpbmU1XG5saW5lNlxubGluZTdcbmxpbmU4IikKIAogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZShzZWxmKToKICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpCkBAIC04OTQsMzEgKzg5NSw0MiBAQAogICAgICAgICAjCiAgICAgICAgICMgVVRGLTE2IGFuZCBVVEYtMzItQkUgYXJlIHN1ZmZpY2llbnQgdG8gY2hlY2sgYm90aCB3aXRoIEJPTSBhbmQKICAgICAgICAgIyB3aXRob3V0LCBhbmQgVVRGLTE2IGFuZCBVVEYtMzIuCi0gICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQogICAgICAgICBmb3IgZW5jb2RpbmcgaW4gWyd1dGYtMTYnLCAndXRmLTMyLWJlJ106Ci0gICAgICAgICAgICBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgIyBJbmRpcmVjdGx5IHZpYSBpby5UZXh0SU9XcmFwcGVyLCBQb3BlbigpIGRlZmF1bHRzIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgYW5kIGVhcmxpZXIgaW4gUHl0aG9uIDMuMiB0bwotICAgICAgICAgICAgIyBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKS4KLSAgICAgICAgICAgIGRlZiBnZXRwcmVmZXJyZWRlbmNvZGluZyhkb19zZXRsb2NhbGU9VHJ1ZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5nCiAgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCiAgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoJzFcclxuMlxyM1xuNCcuZW5jb2RlKCclcycpKSIgJQogICAgICAgICAgICAgICAgICAgICBlbmNvZGluZykKICAgICAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctYycsIGNvZGVdCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBnZXRwcmVmZXJyZWRlbmNvZGluZwotICAgICAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKLSAgICAgICAgICAgICAgICAjIGEgZGlmZmVyZW50IGNvZGUgcGF0aCBpcyB1c2VkIHdoZW4gdGhlIG51bWJlciBvZiBwaXBlcyBpcwotICAgICAgICAgICAgICAgICMgemVybyBvciBvbmUuCi0gICAgICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICcxXG4yXG4zXG40JykKIAorICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZm9yIGVycm9ycywgZXhwZWN0ZWQgaW4gWworICAgICAgICAgICAgKCdpZ25vcmUnLCAnJyksCisgICAgICAgICAgICAoJ3JlcGxhY2UnLCAnXHVmZmZkXHVmZmZkJyksCisgICAgICAgICAgICAoJ3N1cnJvZ2F0ZWVzY2FwZScsICdcdWRjODBcdWRjODAnKSwKKyAgICAgICAgICAgICgnYmFja3NsYXNocmVwbGFjZScsICdcXHg4MFxceDgwJyksCisgICAgICAgIF06CisgICAgICAgICAgICBjb2RlID0gKCJpbXBvcnQgc3lzOyAiCisgICAgICAgICAgICAgICAgICAgIHIic3lzLnN0ZG91dC5idWZmZXIud3JpdGUoYidbXHg4MFx4ODBdJykiKQorICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KKyAgICAgICAgICAgICMgV2Ugc2V0IHN0ZGluIHRvIGJlIG5vbi1Ob25lIGJlY2F1c2UsIGFzIG9mIHRoaXMgd3JpdGluZywKKyAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCisgICAgICAgICAgICAjIHplcm8gb3Igb25lLgorICAgICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9ZXJyb3JzKQorICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZShpbnB1dD0nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAnW3t9XScuZm9ybWF0KGV4cGVjdGVkKSkKKwogICAgIGRlZiB0ZXN0X25vX2xlYWtpbmcoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGxlYWsgbm8gcmVzb3VyY2VzCiAgICAgICAgIGlmIG5vdCBtc3dpbmRvd3M6CkBAIC0xNDMxLDYgKzE0NDMsMjcgQEAKICAgICAgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLXAucmV0dXJuY29kZSwgc2lnbmFsLlNJR0FCUlQpCiAKKyAgICBkZWYgdGVzdF9DYWxsZWRQcm9jZXNzRXJyb3Jfc3RyX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLWludChzaWduYWwuU0lHQUJSVCksICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgICMgV2UncmUgcmVseWluZyBvbiB0aGUgcmVwcigpIG9mIHRoZSBzaWduYWwuU2lnbmFscyBpbnRlbnVtIHRvIHByb3ZpZGUKKyAgICAgICAgIyB0aGUgd29yZCBzaWduYWwsIHRoZSBzaWduYWwgbmFtZSBhbmQgdGhlIG51bWVyaWMgdmFsdWUuCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNpZ25hbCIsIGVycm9yX3N0cmluZy5sb3dlcigpKQorICAgICAgICAjIFdlJ3JlIG5vdCBiZWluZyBzcGVjaWZpYyBhYm91dCB0aGUgc2lnbmFsIG5hbWUgYXMgc29tZSBzaWduYWxzIGhhdmUKKyAgICAgICAgIyBtdWx0aXBsZSBuYW1lcyBhbmQgd2hpY2ggbmFtZSBpcyByZXZlYWxlZCBjYW4gdmFyeS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigiU0lHIiwgZXJyb3Jfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEluKHN0cihzaWduYWwuU0lHQUJSVCksIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfdW5rbm93bl9zaWduYWwoc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKC05ODc2NTQzLCAiZmFrZSBjbWQiKQorICAgICAgICBlcnJvcl9zdHJpbmcgPSBzdHIoZXJyKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ1bmtub3duIHNpZ25hbCA5ODc2NTQzLiIsIGVycm9yX3N0cmluZykKKworICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfbm9uX3plcm8oc2VsZik6CisgICAgICAgIGVyciA9IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKDIsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5vbi16ZXJvIGV4aXQgc3RhdHVzIDIuIiwgZXJyb3Jfc3RyaW5nKQorCiAgICAgZGVmIHRlc3RfcHJlZXhlYyhzZWxmKToKICAgICAgICAgIyBESVNDTEFJTUVSOiBTZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBpcyAqbm90KiBhIGdvb2QgdXNlCiAgICAgICAgICMgb2YgYSBwcmVleGVjX2ZuLiAgVGhpcyBpcyBtZXJlbHkgYSB0ZXN0LgpAQCAtMTQzOSw4ICsxNDcyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0LndyaXRlKG9zLmdldGVudigiRlJVSVQiKSknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1sYW1iZGE6IG9zLnB1dGVudigiRlJVSVQiLCAiYXBwbGUiKSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3ByZWV4ZWNfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICBkZWYgcmFpc2VfaXQoKToKQEAgLTE1NjEsNyArMTU5NCw3IEBACiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTU4OCw4ICsxNjIxLDggQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWyJlY2hvICRGUlVJVCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQpAQCAtMTU5OCwxNSArMTYzMSwxNSBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigiZWNobyAkRlJVSVQiLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcChiIiBcdFxyXG5cZiIpLCBiImFwcGxlIikKIAogICAgIGRlZiB0ZXN0X2NhbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCBvbiBVTklYCiAgICAgICAgIGZkLCBmbmFtZSA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICAjIHJlb3BlbiBpbiB0ZXh0IG1vZGUKICAgICAgICAgd2l0aCBvcGVuKGZkLCAidyIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikgYXMgZm9iajoKLSAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhL2Jpbi9zaFxuIikKKyAgICAgICAgICAgIGZvYmoud3JpdGUoIiMhJXNcbiIgJSBzdXBwb3J0LnVuaXhfc2hlbGwpCiAgICAgICAgICAgICBmb2JqLndyaXRlKCJleGVjICclcycgLWMgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSdcbiIgJQogICAgICAgICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgb3MuY2htb2QoZm5hbWUsIDBvNzAwKQpAQCAtMTYzMSw4ICsxNjY0LDggQEAKICAgICAgICAgZm9yIHNoIGluIHNoZWxsczoKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICQwIiwgZXhlY3V0YWJsZT1zaCwgc2hlbGw9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCisgICAgICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoKSwgYnl0ZXMoc2gsICdhc2NpaScpKQogCiAgICAgZGVmIF9raWxsX3Byb2Nlc3Moc2VsZiwgbWV0aG9kLCAqYXJncyk6CiAgICAgICAgICMgRG8gbm90IGluaGVyaXQgZmlsZSBoYW5kbGVzIGZyb20gdGhlIHBhcmVudC4KQEAgLTIyOTAsNyArMjMyMyw5IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKICAgICAgICAgaWRlbnQgPSBpZChwKQogICAgICAgICBwaWQgPSBwLnBpZAotICAgICAgICBkZWwgcAorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBSZXNvdXJjZVdhcm5pbmcpKToKKyAgICAgICAgICAgIHAgPSBOb25lCisKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKIApAQCAtMjMwOSw3ICsyMzQ0LDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiAgICAgICAgICMgY2hlY2sgdGhhdCBwIGlzIGluIHRoZSBhY3RpdmUgcHJvY2Vzc2VzIGxpc3QKICAgICAgICAgc2VsZi5hc3NlcnRJbihpZGVudCwgW2lkKG8pIGZvciBvIGluIHN1YnByb2Nlc3MuX2FjdGl2ZV0pCkBAIC0yNTAxLDggKzI1MzgsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbInNldCJdLCBzaGVsbD0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52KQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0yNTExLDggKzI1NDgsMjAgQEAKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisKKyAgICBkZWYgdGVzdF9zaGVsbF9lbmNvZGluZ3Moc2VsZik6CisgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKKyAgICAgICAgZm9yIGVuYyBpbiBbJ2Fuc2knLCAnb2VtJ106CisgICAgICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAgICAgbmV3ZW52WyJGUlVJVCJdID0gInBoeXNhbGlzIgorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oInNldCIsIHNoZWxsPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuYykKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSwgZW5jKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFdpbmRvd3MKQEAgLTI1MzEsMTYgKzI1ODAsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKLSAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCi0gICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCisgICAgICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLCBiJycpCisgICAgICAgICAgICByZXR1cm5jb2RlID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXR1cm5jb2RlLCAwKQogCiAgICAgZGVmIF9raWxsX2RlYWRfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKQEAgLTI1NTMsMTkgKzI2MDAsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkaW4uY2xvc2UpCi0gICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCi0gICAgICAgICMgc2VuZGluZyBhbnkgc2lnbmFsLgotICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCi0gICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmMgPSBwLndhaXQoKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICAjIFdhaXQgZm9yIHRoZSBpbnRlcnByZXRlciB0byBiZSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGJlZm9yZQorICAgICAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCisgICAgICAgICAgICBwLnN0ZG91dC5yZWFkKDEpCisgICAgICAgICAgICAjIFRoZSBwcm9jZXNzIHNob3VsZCBlbmQgYWZ0ZXIgdGhpcworICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICAgICAgIyBUaGlzIHNob3VsZG4ndCByYWlzZSBldmVuIHRob3VnaCB0aGUgY2hpbGQgaXMgbm93IGRlYWQKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJjID0gcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgNDIpCiAKICAgICBkZWYgdGVzdF9zZW5kX3NpZ25hbChzZWxmKToKQEAgLTI2MDgsOCArMjY1Myw3IEBACiAKICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CiAgICAgICAgICIiIkVuc3VyZSB0aGF0IF9fYWxsX18gaXMgcG9wdWxhdGVkIHByb3Blcmx5LiIiIgotICAgICAgICAjIFNUQVJUVVBJTkZPIGFkZGVkIHRvIF9fYWxsX18gaW4gMy42Ci0gICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJTVEFSVFVQSU5GTyIsICJIYW5kbGUifQorICAgICAgICBpbnRlbnRpb25hbGx5X2V4Y2x1ZGVkID0geyJsaXN0MmNtZGxpbmUiLCAiSGFuZGxlIn0KICAgICAgICAgZXhwb3J0ZWQgPSBzZXQoc3VicHJvY2Vzcy5fX2FsbF9fKQogICAgICAgICBwb3NzaWJsZV9leHBvcnRzID0gc2V0KCkKICAgICAgICAgaW1wb3J0IHR5cGVzCkBAIC0yNjU0LDExICsyNjk4LDExIEBACiAgICAgZGVmIHdpdGhfc3BhY2VzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIGt3YXJnc1snc3Rkb3V0J10gPSBzdWJwcm9jZXNzLlBJUEUKICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgcC5zdGRvdXQucmVhZCAoKS5kZWNvZGUoIm1iY3MiKSwKLSAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKLSAgICAgICAgKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAorICAgICAgICAgICAgICAiMiBbJXIsICdhYiBjZCddIiAlIHNlbGYuZm5hbWUKKyAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X3NoZWxsX3N0cmluZ193aXRoX3NwYWNlcyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgd2l0aCBzcGFjZXMgb24gV2luZG93cwpAQCAtMjcxMCw3ICsyNzU0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvYy5yZXR1cm5jb2RlLCAxKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yKSBhcyBjOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChGaWxlTm90Rm91bmRFcnJvciwgUGVybWlzc2lvbkVycm9yKSkgYXMgYzoKICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJ25vbmV4aXN0aW5nX2lfaG9wZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkgYXMgcHJvYzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkgYi9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CmluZGV4IDBmNDEzNGUuLmJjMWY0NmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBhdWRpb3Rlc3RzCiBmcm9tIGF1ZGlvb3AgaW1wb3J0IGJ5dGVzd2FwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBlci5weQppbmRleCBiODQ4NjNmLi5hN2NlZGVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKQEAgLTE0Myw2ICsxNDMsODcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoWC5mKCksIFgpCiAKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fbmV3KHNlbGYpOgorICAgICAgICB0ZXN0X2NsYXNzID0gTm9uZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHRlc3RfY2xhc3MKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICB0ZXN0X2NsYXNzID0gc2VsZi5mKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXN0X2NsYXNzLCBBKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX2RlbGF5ZWQoc2VsZik6CisgICAgICAgIHRlc3RfbmFtZXNwYWNlID0gTm9uZQorCisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHRlc3RfbmFtZXNwYWNlCisgICAgICAgICAgICAgICAgdGVzdF9uYW1lc3BhY2UgPSBuYW1lc3BhY2UKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhBLCBOb25lKQorCisgICAgICAgIEIgPSB0eXBlKCJCIiwgKCksIHRlc3RfbmFtZXNwYWNlKQorICAgICAgICBzZWxmLmFzc2VydElzKEIuZigpLCBCKQorCisgICAgZGVmIHRlc3RfX19jbGFzc19fX21ybyhzZWxmKToKKyAgICAgICAgdGVzdF9jbGFzcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIG1ybyhzZWxmKToKKyAgICAgICAgICAgICAgICAjIHNlbGYuZigpIGRvZXNuJ3Qgd29yayB5ZXQuLi4KKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fWyJmIl0oKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLm1ybygpCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHRlc3RfY2xhc3MKKyAgICAgICAgICAgICAgICB0ZXN0X2NsYXNzID0gX19jbGFzc19fCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXN0X2NsYXNzLCBBKQorCisgICAgZGVmIHRlc3RfX19jbGFzc2NlbGxfX19kZWxldGVkKHNlbGYpOgorICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBkZWwgbmFtZXNwYWNlWydfX2NsYXNzY2VsbF9fJ10KKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgX19jbGFzc19fCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgQS5mKCkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NjZWxsX19fcmVzZXQoc2VsZik6CisgICAgICAgIGNsYXNzIE1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpOgorICAgICAgICAgICAgICAgIG5hbWVzcGFjZVsnX19jbGFzc2NlbGxfXyddID0gMAorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBfX2NsYXNzX18KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBBLmYoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEEuX19jbGFzc2NlbGxfXywgMCkKKwogICAgIGRlZiB0ZXN0X29ic2N1cmVfc3VwZXJfZXJyb3JzKHNlbGYpOgogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgc3VwZXIoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CmluZGV4IDJjMDA0MTcuLjI2OWQ5YmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKQEAgLTksMTMgKzksMTEgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBURVNURk4gPSBzdXBwb3J0LlRFU1RGTgotVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCiAKIAogY2xhc3MgVGVzdFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQotICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKICAgICB0ZWFyRG93biA9IHNldFVwCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfbW9kdWxlKHNlbGYpOgpAQCAtNDgsNiArNDYsMTAgQEAKICAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQogCiAgICAgZGVmIHRlc3Rfcm10cmVlKHNlbGYpOgorICAgICAgICBURVNURElSTiA9IG9zLnBhdGguYmFzZW5hbWUodGVtcGZpbGUubWtkdGVtcChkaXI9Jy4nKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBURVNURElSTikKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCisKICAgICAgICAgb3MubWtkaXIoVEVTVERJUk4pCiAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihURVNURElSTiwgVEVTVERJUk4pKQogICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKQEAgLTIyOCw3ICsyMzAsOCBAQAogCiAgICAgZGVmIHRlc3RfY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYpOgogICAgICAgICBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGNsYXNzIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yLCBzZWxmLCAiMSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng9MSIpCiAKICAgICBkZWYgdGVzdF9DbGVhbkltcG9ydChzZWxmKToKICAgICAgICAgaW1wb3J0IGltcG9ydGxpYgpAQCAtMzEyLDYgKzMxNSwyOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuT3RoZXJDbGFzcywgc2VsZi5SZWZDbGFzcywgaWdub3JlPWlnbm9yZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgbWlzc2luZ19pdGVtcykKIAorICAgIGRlZiB0ZXN0X2NoZWNrX19hbGxfXyhzZWxmKToKKyAgICAgICAgZXh0cmEgPSB7J3RlbXBkaXInfQorICAgICAgICBibGFja2xpc3QgPSB7J3RlbXBsYXRlJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAgICAgIGV4dHJhID0geydUZXh0VGVzdFJlc3VsdCcsICdpbnN0YWxsSGFuZGxlcid9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbG9hZF90ZXN0cycsICJUZXN0UHJvZ3JhbSIsICJCYXNlVGVzdFN1aXRlIn0KKworICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ1bml0dGVzdC5yZXN1bHQiLCAidW5pdHRlc3QuY2FzZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3Quc3VpdGUiLCAidW5pdHRlc3QubG9hZGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bml0dGVzdC5tYWluIiwgInVuaXR0ZXN0LnJ1bm5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3Quc2lnbmFscyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgc3VwcG9ydC5jaGVja19fYWxsX18sIHNlbGYsIHVuaXR0ZXN0KQorCiAgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQogICAgICMgbWFrZV9sZWdhY3lfcHljCiAgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ltYm9sLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzA2ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weQpAQCAtMCwwICsxLDU0IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgc3VicHJvY2VzcworCisKK1NZTUJPTF9GSUxFICAgICAgICAgICAgICA9IHN1cHBvcnQuZmluZGZpbGUoJ3N5bWJvbC5weScpCitHUkFNTUFSX0ZJTEUgICAgICAgICAgICAgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLi4nLCAnLi4nLCAnSW5jbHVkZScsICdncmFtaW5pdC5oJykKK1RFU1RfUFlfRklMRSAgICAgICAgICAgICA9ICdzeW1ib2xfdGVzdC5weScKKworCitjbGFzcyBUZXN0U3ltYm9sR2VuZXJhdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9zeW1ib2xzKHNlbGYsIHNvdXJjZV9maWxlLCBkZXN0X2ZpbGUpOgorICAgICAgICB3aXRoIG9wZW4oc291cmNlX2ZpbGUpIGFzIGZwOgorICAgICAgICAgICAgbGluZXMgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIG9wZW4oZGVzdF9maWxlLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGVsaW5lcyhsaW5lc1s6bGluZXMuaW5kZXgoIiMtLXN0YXJ0IGNvbnN0YW50cy0tXG4iKSArIDFdKQorICAgICAgICAgICAgZnAud3JpdGVsaW5lcyhsaW5lc1tsaW5lcy5pbmRleCgiIy0tZW5kIGNvbnN0YW50cy0tXG4iKTpdKQorCisgICAgZGVmIF9nZW5lcmF0ZV9zeW1ib2xzKHNlbGYsIGdyYW1tYXJfZmlsZSwgdGFyZ2V0X3N5bWJvbF9weV9maWxlKToKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lNQk9MX0ZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyX2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfc3ltYm9sX3B5X2ZpbGVdLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKClbMV0KKyAgICAgICAgcmV0dXJuIHByb2MucmV0dXJuY29kZSwgc3RkZXJyCisKKyAgICBkZWYgY29tcGFyZV9maWxlcyhzZWxmLCBmaWxlMSwgZmlsZTIpOgorICAgICAgICB3aXRoIG9wZW4oZmlsZTEpIGFzIGZwOgorICAgICAgICAgICAgbGluZXMxID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUyKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzMiA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMxLCBsaW5lczIpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBvcy5wYXRoLmV4aXN0cyhHUkFNTUFSX0ZJTEUpLAorICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgb25seSB3b3JrcyBmcm9tIHNvdXJjZSBidWlsZCBkaXJlY3RvcnknKQorICAgIGRlZiB0ZXN0X3JlYWxfZ3JhbW1hcl9hbmRfc3ltYm9sX2ZpbGUoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgb3V0cHV0KQorCisgICAgICAgIHNlbGYuX2NvcHlfZmlsZV93aXRob3V0X2dlbmVyYXRlZF9zeW1ib2xzKFNZTUJPTF9GSUxFLCBvdXRwdXQpCisKKyAgICAgICAgZXhpdGNvZGUsIHN0ZGVyciA9IHNlbGYuX2dlbmVyYXRlX3N5bWJvbHMoR1JBTU1BUl9GSUxFLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLCBzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZXhpdGNvZGUpCisKKyAgICAgICAgc2VsZi5jb21wYXJlX2ZpbGVzKFNZTUJPTF9GSUxFLCBvdXRwdXQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkgYi9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CmluZGV4IGM1ZDdmYWMuLjMwNDcxNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQpAQCAtMTMzLDYgKzEzMywxNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5NaW5lLmxvb2t1cCgiYV9tZXRob2QiKS5pc19hc3NpZ25lZCgpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaW50ZXJuYWwubG9va3VwKCJ4IikuaXNfYXNzaWduZWQoKSkKIAorICAgIGRlZiB0ZXN0X2Fubm90YXRlZChzZWxmKToKKyAgICAgICAgc3QxID0gc3ltdGFibGUuc3ltdGFibGUoJ2RlZiBmKCk6XG4gICAgeDogaW50XG4nLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgc3QyID0gc3QxLmdldF9jaGlsZHJlbigpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDIubG9va3VwKCd4JykuaXNfbG9jYWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0Mi5sb29rdXAoJ3gnKS5pc19hbm5vdGF0ZWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdDIubG9va3VwKCd4JykuaXNfZ2xvYmFsKCkpCisgICAgICAgIHN0MyA9IHN5bXRhYmxlLnN5bXRhYmxlKCdkZWYgZigpOlxuICAgIHggPSAxXG4nLCAndGVzdCcsICdleGVjJykKKyAgICAgICAgc3Q0ID0gc3QzLmdldF9jaGlsZHJlbigpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDQubG9va3VwKCd4JykuaXNfbG9jYWwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdDQubG9va3VwKCd4JykuaXNfYW5ub3RhdGVkKCkpCisKICAgICBkZWYgdGVzdF9pbXBvcnRlZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudG9wLmxvb2t1cCgic3lzIikuaXNfaW1wb3J0ZWQoKSkKIApAQCAtMTU4LDkgKzE2OSwxMSBAQAogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZm9vKSgiKSAgIyBwYXJzZS10aW1lCiAgICAgICAgIGNoZWNrZmlsZW5hbWUoImRlZiBmKHgpOiBnbG9iYWwgeCIpICAjIHN5bXRhYmxlLWJ1aWxkLXRpbWUKICAgICAgICAgc3ltdGFibGUuc3ltdGFibGUoInBhc3MiLCBiInNwYW0iLCAiZXhlYyIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyksIFwKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc3ltdGFibGUuc3ltdGFibGUoInBhc3MiLCBieXRlYXJyYXkoYiJzcGFtIiksICJleGVjIikKLSAgICAgICAgc3ltdGFibGUuc3ltdGFibGUoInBhc3MiLCBtZW1vcnl2aWV3KGIic3BhbSIpLCAiZXhlYyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc3ltdGFibGUuc3ltdGFibGUoInBhc3MiLCBtZW1vcnl2aWV3KGIic3BhbSIpLCAiZXhlYyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbGlzdChiInNwYW0iKSwgImV4ZWMiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bnRheC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5CmluZGV4IDgzZjQ5ZjYuLjgwZTM2ZmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5CkBAIC0zNSwxNCArMzUsNiBAQAogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogU3ludGF4RXJyb3I6IGNhbid0IGFzc2lnbiB0byBrZXl3b3JkCiAKLUl0J3MgYSBzeW50YXggZXJyb3IgdG8gYXNzaWduIHRvIHRoZSBlbXB0eSB0dXBsZS4gIFdoeSBpc24ndCBpdCBhbgotZXJyb3IgdG8gYXNzaWduIHRvIHRoZSBlbXB0eSBsaXN0PyAgSXQgd2lsbCBhbHdheXMgcmFpc2Ugc29tZSBlcnJvciBhdAotcnVudGltZS4KLQotPj4+ICgpID0gMQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotU3ludGF4RXJyb3I6IGNhbid0IGFzc2lnbiB0byAoKQotCiA+Pj4gZigpID0gMQogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogU3ludGF4RXJyb3I6IGNhbid0IGFzc2lnbiB0byBmdW5jdGlvbiBjYWxsCkBAIC0zNzQsNyArMzY2LDIzIEBACiAgICAgIC4uLgogICAgU3ludGF4RXJyb3I6IHRvbyBtYW55IHN0YXRpY2FsbHkgbmVzdGVkIGJsb2NrcwogCi1NaXN1c2Ugb2YgdGhlIG5vbmxvY2FsIHN0YXRlbWVudCBjYW4gbGVhZCB0byBhIGZldyB1bmlxdWUgc3ludGF4IGVycm9ycy4KK01pc3VzZSBvZiB0aGUgbm9ubG9jYWwgYW5kIGdsb2JhbCBzdGF0ZW1lbnQgY2FuIGxlYWQgdG8gYSBmZXcgdW5pcXVlIHN5bnRheCBlcnJvcnMuCisKKyAgID4+PiBkZWYgZigpOgorICAgLi4uICAgICB4ID0gMQorICAgLi4uICAgICBnbG9iYWwgeAorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFN5bnRheEVycm9yOiBuYW1lICd4JyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uCisKKyAgID4+PiBkZWYgZigpOgorICAgLi4uICAgICB4ID0gMQorICAgLi4uICAgICBkZWYgZygpOgorICAgLi4uICAgICAgICAgcHJpbnQoeCkKKyAgIC4uLiAgICAgICAgIG5vbmxvY2FsIHgKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBTeW50YXhFcnJvcjogbmFtZSAneCcgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbgogCiAgICA+Pj4gZGVmIGYoeCk6CiAgICAuLi4gICAgIG5vbmxvY2FsIHgKQEAgLTQ5MywxMCArNTAxLDYgQEAKICAgIC4uLgogU3ludGF4RXJyb3I6IGtleXdvcmQgYXJndW1lbnQgcmVwZWF0ZWQKIAotPj4+IGRlbCAoKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotU3ludGF4RXJyb3I6IGNhbid0IGRlbGV0ZSAoKQotCiA+Pj4gezEsIDIsIDN9ID0gNDIKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gbGl0ZXJhbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXMucHkgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQppbmRleCA0NDM1ZDY5Li5kZjllYmQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5cy5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IGdjCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCBsb2NhbGUKIAogIyBjb3VudCB0aGUgbnVtYmVyIG9mIHRlc3QgcnVucywgdXNlZCB0byBjcmVhdGUgdW5pcXVlCiAjIHN0cmluZ3MgdG8gaW50ZXJuIGluIHRlc3RfaW50ZXJuKCkKQEAgLTYyNyw2ICs2MjgsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGVzdC5zdXBwb3J0LkZTX05PTkFTQ0lJLAogICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBPUyBzdXBwb3J0IG9mIG5vbi1BU0NJSSBlbmNvZGluZ3MnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSA9PSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBGUyBlbmNvZGluZyB0byBtYXRjaCBsb2NhbGUnKQogICAgIGRlZiB0ZXN0X2lvZW5jb2Rpbmdfbm9uYXNjaWkoc2VsZik6CiAgICAgICAgIGVudiA9IGRpY3Qob3MuZW52aXJvbikKIApAQCAtNjY5LDggKzY3Miw2IEBACiAgICAgICAgIGZzX2VuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIGV4cGVjdGVkID0gJ3V0Zi04JwotICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgZXhwZWN0ZWQgPSAnbWJjcycKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4cGVjdGVkID0gTm9uZQogICAgICAgICBzZWxmLmNoZWNrX2ZzZW5jb2RpbmcoZnNfZW5jb2RpbmcsIGV4cGVjdGVkKQpAQCAtOTEyLDEzICs5MTMsMTMgQEAKICAgICAgICAgICAgIHJldHVybiBpbm5lcgogICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY2xvc3VyZV9fWzBdLCBzaXplKCdQJykpCiAgICAgICAgICMgY29kZQotICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCi0gICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jb2RlX18sIHNpemUoJzZpMTNQJykpCisgICAgICAgIGNoZWNrKGdldF9jZWxsLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpKQogICAgICAgICBkZWYgZ2V0X2NlbGwyKHgpOgogICAgICAgICAgICAgZGVmIGlubmVyKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHgKICAgICAgICAgICAgIHJldHVybiBpbm5lcgotICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSArIDEpCisgICAgICAgIGNoZWNrKGdldF9jZWxsMi5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSArIDEpCiAgICAgICAgICMgY29tcGxleAogICAgICAgICBjaGVjayhjb21wbGV4KDAsMSksIHNpemUoJzJkJykpCiAgICAgICAgICMgbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQpAQCAtOTM2LDkgKzkzNyw5IEBACiAgICAgICAgICMgbWV0aG9kLXdyYXBwZXIgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICBjaGVjayh7fS5fX2l0ZXJfXywgc2l6ZSgnMlAnKSkKICAgICAgICAgIyBkaWN0Ci0gICAgICAgIGNoZWNrKHt9LCBzaXplKCduMlAnKSArIGNhbGNzaXplKCcyblBuJykgKyA4KmNhbGNzaXplKCduMlAnKSkKKyAgICAgICAgY2hlY2soe30sIHNpemUoJ25RMlAnKSArIGNhbGNzaXplKCcyblAybicpICsgOCArICg4KjIvLzMpKmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgbG9uZ2RpY3QgPSB7MToxLCAyOjIsIDM6MywgNDo0LCA1OjUsIDY6NiwgNzo3LCA4Ojh9Ci0gICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduMlAnKSArIGNhbGNzaXplKCcyblBuJykgKyAxNipjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduUTJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKSArIDE2ICsgKDE2KjIvLzMpKmNhbGNzaXplKCduMlAnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LWtleXZpZXcKICAgICAgICAgY2hlY2soe30ua2V5cygpLCBzaXplKCdQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS12YWx1ZXZpZXcKQEAgLTEwOTYsMTMgKzEwOTcsMTMgQEAKICAgICAgICAgICAgICAgICAgICcxMFAnICAgICAgICAgICAgICAgICAjIFB5U2VxdWVuY2VNZXRob2RzCiAgICAgICAgICAgICAgICAgICAnMlAnICAgICAgICAgICAgICAgICAgIyBQeUJ1ZmZlclByb2NzCiAgICAgICAgICAgICAgICAgICAnNFAnKQotICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggNCBlbnRyaWVzCi0gICAgICAgIHMgKz0gY2FsY3NpemUoIjJuUG4iKSArIDQqY2FsY3NpemUoIm4yUCIpCisgICAgICAgICMgU2VwYXJhdGUgYmxvY2sgZm9yIFB5RGljdEtleXNPYmplY3Qgd2l0aCA4IGtleXMgYW5kIDUgZW50cmllcworICAgICAgICBzICs9IGNhbGNzaXplKCIyblAybiIpICsgOCArIDUqY2FsY3NpemUoIm4yUCIpCiAgICAgICAgICMgY2xhc3MKICAgICAgICAgY2xhc3MgbmV3c3R5bGVjbGFzcyhvYmplY3QpOiBwYXNzCiAgICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MsIHMpCiAgICAgICAgICMgZGljdCB3aXRoIHNoYXJlZCBrZXlzCi0gICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MoKS5fX2RpY3RfXywgc2l6ZSgnbjJQJyArICcyblBuJykpCisgICAgICAgIGNoZWNrKG5ld3N0eWxlY2xhc3MoKS5fX2RpY3RfXywgc2l6ZSgnblEyUCcgKyAnMm5QMm4nKSkKICAgICAgICAgIyB1bmljb2RlCiAgICAgICAgICMgZWFjaCB0dXBsZSBjb250YWlucyBhIHN0cmluZyBhbmQgaXRzIGV4cGVjdGVkIGNoYXJhY3RlciBzaXplCiAgICAgICAgICMgZG9uJ3QgcHV0IGFueSBzdGF0aWMgc3RyaW5ncyBoZXJlLCBhcyB0aGV5IG1heSBjb250YWluCkBAIC0xMTkxLDYgKzExOTIsMzIgQEAKICAgICAgICAgIyBzeXMuZmxhZ3MKICAgICAgICAgY2hlY2soc3lzLmZsYWdzLCB2c2l6ZSgnJykgKyBzZWxmLlAgKiBsZW4oc3lzLmZsYWdzKSkKIAorICAgIGRlZiB0ZXN0X2FzeW5jZ2VuX2hvb2tzKHNlbGYpOgorICAgICAgICBvbGQgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2xkLmZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2xkLmZpbmFsaXplcikKKworICAgICAgICBmaXJzdGl0ZXIgPSBsYW1iZGEgKmE6IE5vbmUKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaXJzdGl0ZXI9Zmlyc3RpdGVyKQorICAgICAgICBob29rcyA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpcnN0aXRlciwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzBdLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmluYWxpemVyLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzFdLCBOb25lKQorCisgICAgICAgIGZpbmFsaXplciA9IGxhbWJkYSAqYTogTm9uZQorICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKGZpbmFsaXplcj1maW5hbGl6ZXIpCisgICAgICAgIGhvb2tzID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmlyc3RpdGVyLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMF0sIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maW5hbGl6ZXIsIGZpbmFsaXplcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1sxXSwgZmluYWxpemVyKQorCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoKm9sZCkKKyAgICAgICAgY3VyID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGN1ci5maXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGN1ci5maW5hbGl6ZXIpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3lzTW9kdWxlVGVzdCwgU2l6ZW9mVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKaW5kZXggNTA5YmMzZS4uMjVjNTgzNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkKQEAgLTMzOCw4ICszMzgsOCBAQAogCiAgICAgZGVmIHRlc3RfMTRfb25saW5lcl9pZihzZWxmKToKICAgICAgICAgZGVmIG9ubGluZXJzKCk6Ci0gICAgICAgICAgICBpZiBUcnVlOiBGYWxzZQotICAgICAgICAgICAgZWxzZTogVHJ1ZQorICAgICAgICAgICAgaWYgVHJ1ZTogeD1GYWxzZQorICAgICAgICAgICAgZWxzZTogeD1UcnVlCiAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICBzZWxmLnJ1bl9hbmRfY29tcGFyZSgKICAgICAgICAgICAgIG9ubGluZXJzLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQppbmRleCBhMjNiZjA2YS4uMDkxZTkwNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKQEAgLTM5NCw4ICszOTQsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdsaW51eCcgaW4gc3VmZml4LCBzdWZmaXgpCiAgICAgICAgIGlmIHJlLm1hdGNoKCcoaVszLTZdODZ8eDg2XzY0KSQnLCBtYWNoaW5lKToKICAgICAgICAgICAgIGlmIGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfY2hhcl9wKCkpID09IDQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1ZmZpeC5lbmRzd2l0aCgnaTM4Ni1saW51eC1nbnUuc28nKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudXgzMi5zbycpLAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LmVuZHN3aXRoKCdpNjg2LWxpbnV4LWFuZHJvaWQuc28nKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4KQogICAgICAgICAgICAgZWxzZTogIyA4IGJ5dGUgcG9pbnRlciBzaXplCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1ZmZpeC5lbmRzd2l0aCgneDg2XzY0LWxpbnV4LWdudS5zbycpLCBzdWZmaXgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKaW5kZXggMWVmYjg0MS4uNjE5Y2JjMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQpAQCAtMjA4MCw2ICsyMDgwLDI0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICB0YXJmaWxlLml0bigweDEwMDAwMDAwMDAwLCA2LCB0YXJmaWxlLkdOVV9GT1JNQVQpCiAKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsndmVyc2lvbicsICdncnAnLCAncHdkJywgJ3N5bWxpbmtfZXhjZXB0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICdOVUwnLCAnQkxPQ0tTSVpFJywgJ1JFQ09SRFNJWkUnLCAnR05VX01BR0lDJywKKyAgICAgICAgICAgICAgICAgICAgICdQT1NJWF9NQUdJQycsICdMRU5HVEhfTkFNRScsICdMRU5HVEhfTElOSycsCisgICAgICAgICAgICAgICAgICAgICAnTEVOR1RIX1BSRUZJWCcsICdSRUdUWVBFJywgJ0FSRUdUWVBFJywgJ0xOS1RZUEUnLAorICAgICAgICAgICAgICAgICAgICAgJ1NZTVRZUEUnLCAnQ0hSVFlQRScsICdCTEtUWVBFJywgJ0RJUlRZUEUnLCAnRklGT1RZUEUnLAorICAgICAgICAgICAgICAgICAgICAgJ0NPTlRUWVBFJywgJ0dOVVRZUEVfTE9OR05BTUUnLCAnR05VVFlQRV9MT05HTElOSycsCisgICAgICAgICAgICAgICAgICAgICAnR05VVFlQRV9TUEFSU0UnLCAnWEhEVFlQRScsICdYR0xUWVBFJywgJ1NPTEFSSVNfWEhEVFlQRScsCisgICAgICAgICAgICAgICAgICAgICAnU1VQUE9SVEVEX1RZUEVTJywgJ1JFR1VMQVJfVFlQRVMnLCAnR05VX1RZUEVTJywKKyAgICAgICAgICAgICAgICAgICAgICdQQVhfRklFTERTJywgJ1BBWF9OQU1FX0ZJRUxEUycsICdQQVhfTlVNQkVSX0ZJRUxEUycsCisgICAgICAgICAgICAgICAgICAgICAnc3RuJywgJ250cycsICdudGknLCAnaXRuJywgJ2NhbGNfY2hrc3VtcycsICdjb3B5ZmlsZW9iaicsCisgICAgICAgICAgICAgICAgICAgICAnZmlsZW1vZGUnLAorICAgICAgICAgICAgICAgICAgICAgJ0VtcHR5SGVhZGVyRXJyb3InLCAnVHJ1bmNhdGVkSGVhZGVyRXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgJ0VPRkhlYWRlckVycm9yJywgJ0ludmFsaWRIZWFkZXJFcnJvcicsCisgICAgICAgICAgICAgICAgICAgICAnU3Vic2VxdWVudEhlYWRlckVycm9yJywgJ0V4RmlsZU9iamVjdCcsCisgICAgICAgICAgICAgICAgICAgICAnbWFpbid9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHRhcmZpbGUsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKIAogY2xhc3MgQ29tbWFuZExpbmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weQppbmRleCA4ZTIxOWY0Li41MWQ4MmUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weQpAQCAtMSw3ICsxLDYgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzZWxlY3RvcnMKIGltcG9ydCB0ZWxuZXRsaWIKLWltcG9ydCB0aW1lCiBpbXBvcnQgY29udGV4dGxpYgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTQyLDYgKzQxLDExIEBACiAgICAgICAgIHRlbG5ldCA9IHRlbG5ldGxpYi5UZWxuZXQoSE9TVCwgc2VsZi5wb3J0KQogICAgICAgICB0ZWxuZXQuc29jay5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdENvbnRleHRNYW5hZ2VyKHNlbGYpOgorICAgICAgICB3aXRoIHRlbG5ldGxpYi5UZWxuZXQoSE9TVCwgc2VsZi5wb3J0KSBhcyB0bjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHRuLmdldF9zb2NrZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodG4uZ2V0X3NvY2tldCgpKQorCiAgICAgZGVmIHRlc3RUaW1lb3V0RGVmYXVsdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpIGlzIE5vbmUpCiAgICAgICAgIHNvY2tldC5zZXRkZWZhdWx0dGltZW91dCgzMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKaW5kZXggYjYzMDUwOS4uODQ1ZTdkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRpbmcucHkKQEAgLTgsNyArOCw2IEBACiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKIAogaW1wb3J0IHJhbmRvbQotaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBfdGhyZWFkID0gaW1wb3J0X21vZHVsZSgnX3RocmVhZCcpCiB0aHJlYWRpbmcgPSBpbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQpAQCAtMTksNiArMTgsNyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIAogZnJvbSB0ZXN0IGltcG9ydCBsb2NrX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiAjIEJldHdlZW4gZm9yaygpIGFuZCBleGVjKCksIG9ubHkgYXN5bmMtc2FmZSBmdW5jdGlvbnMgYXJlIGFsbG93ZWQgKGlzc3VlcwpAQCAtMTExNyw1ICsxMTE3LDEyIEBACiBjbGFzcyBCYXJyaWVyVGVzdHMobG9ja190ZXN0cy5CYXJyaWVyVGVzdHMpOgogICAgIGJhcnJpZXJ0eXBlID0gc3RhdGljbWV0aG9kKHRocmVhZGluZy5CYXJyaWVyKQogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgZXh0cmEgPSB7IlRocmVhZEVycm9yIn0KKyAgICAgICAgYmxhY2tsaXN0ID0geydjdXJyZW50VGhyZWFkJywgJ2FjdGl2ZUNvdW50J30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgdGhyZWFkaW5nLCAoJ3RocmVhZGluZycsICdfdGhyZWFkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CmluZGV4IDc2Yjg5NGUuLmYyMjQyMTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKQEAgLTEsNiArMSw4IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgZW51bQogaW1wb3J0IGxvY2FsZQoraW1wb3J0IG1hdGgKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwpAQCAtMjEsMTcgKzIzLDI3IEBACiBUSU1FX01BWFlFQVIgPSAoMSA8PCA4ICogU0laRU9GX0lOVCAtIDEpIC0gMQogVElNRV9NSU5ZRUFSID0gLVRJTUVfTUFYWUVBUiAtIDEKIAorU0VDX1RPX1VTID0gMTAgKiogNgogVVNfVE9fTlMgPSAxMCAqKiAzCiBNU19UT19OUyA9IDEwICoqIDYKIFNFQ19UT19OUyA9IDEwICoqIDkKK05TX1RPX1NFQyA9IDEwICoqIDkKIAogY2xhc3MgX1B5VGltZShlbnVtLkludEVudW0pOgogICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKICAgICBST1VORF9GTE9PUiA9IDAKICAgICAjIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpCiAgICAgUk9VTkRfQ0VJTElORyA9IDEKKyAgICAjIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyCisgICAgUk9VTkRfSEFMRl9FVkVOID0gMgogCi1BTExfUk9VTkRJTkdfTUVUSE9EUyA9IChfUHlUaW1lLlJPVU5EX0ZMT09SLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpCisjIFJvdW5kaW5nIG1vZGVzIHN1cHBvcnRlZCBieSBQeVRpbWUKK1JPVU5ESU5HX01PREVTID0gKAorICAgICMgKFB5VGltZSByb3VuZGluZyBtZXRob2QsIGRlY2ltYWwgcm91bmRpbmcgbWV0aG9kKQorICAgIChfUHlUaW1lLlJPVU5EX0ZMT09SLCBkZWNpbWFsLlJPVU5EX0ZMT09SKSwKKyAgICAoX1B5VGltZS5ST1VORF9DRUlMSU5HLCBkZWNpbWFsLlJPVU5EX0NFSUxJTkcpLAorICAgIChfUHlUaW1lLlJPVU5EX0hBTEZfRVZFTiwgZGVjaW1hbC5ST1VORF9IQUxGX0VWRU4pLAorKQogCiAKIGNsYXNzIFRpbWVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC02MDcsNzkgKzYxOSw2IEBACiAKIAogY2xhc3MgVGVzdFB5dGltZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmludmFsaWRfdmFsdWVzID0gKAotICAgICAgICAgICAgLSgyICoqIDEwMCksIDIgKiogMTAwLAotICAgICAgICAgICAgLSgyLjAgKiogMTAwLjApLCAyLjAgKiogMTAwLjAsCi0gICAgICAgICkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWVfdChzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90Ci0gICAgICAgIGZvciBvYmosIHRpbWVfdCwgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMSwgLTEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS45LCAtMiwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS4wLCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxLjksIDEsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQotICAgICAgICAgICAgKDAsIDAsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjAsIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjksIC0xLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjksIDIsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB5dGltZV9vYmplY3RfdG9fdGltZV90KG9iaiwgcm5kKSwgdGltZV90KQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwgaW52YWxpZCwgcm5kKQotCi0gICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5Ci0gICAgZGVmIHRlc3RfdGltZXNwZWMoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjCi0gICAgICAgIGZvciBvYmosIHRpbWVzcGVjLCBybmQgaW4gKAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKQotICAgICAgICAgICAgKDAsICgwLCAwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjAsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDFlLTksICgwLCAxKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTFlLTksICgtMSwgOTk5OTk5OTk5KSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTFlLTEwLCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMC45OTk5OTk5OTk5LCAoMCwgOTk5OTk5OTk5KSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS4xMjM0NTY3ODkwLCAoMSwgMTIzNDU2Nzg5KSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS4xMjM0NTY3ODk5LCAoMSwgMTIzNDU2Nzg5KSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkxLCAoLTIsIDg3NjU0MzIxMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQotICAgICAgICAgICAgKDAsICgwLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDFlLTksICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxZS0xMCwgKDAsIDEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMiwgKC0yLCA4MDAwMDAwMDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDEsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS4xMjM0NTY3ODk5LCAoMSwgMTIzNDU2NzkwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODkwLCAoLTIsIDg3NjU0MzIxMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob2JqPW9iaiwgcm91bmQ9cm5kLCB0aW1lc3BlYz10aW1lc3BlYyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjKG9iaiwgcm5kKSwgdGltZXNwZWMpCi0KLSAgICAgICAgcm5kID0gX1B5VGltZS5ST1VORF9GTE9PUgotICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsIGludmFsaWQsIHJuZCkKLQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRpbWUuX1NUUlVDVF9UTV9JVEVNUyA9PSAxMSwgIm5lZWRzIHRtX3pvbmUgc3VwcG9ydCIpCiAgICAgZGVmIHRlc3RfbG9jYWx0aW1lX3RpbWV6b25lKHNlbGYpOgogCkBAIC03MzQsMjY2ICs2NzMsMjkxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMobHQudG1fem9uZSwgTm9uZSkKIAogCi1AdW5pdHRlc3Quc2tpcFVubGVzcyhfdGVzdGNhcGkgaXMgbm90IE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aGUgX3Rlc3RjYXBpIG1vZHVsZScpCi1jbGFzcyBUZXN0UHlUaW1lX3QodW5pdHRlc3QuVGVzdENhc2UpOgorQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgdGhlIF90ZXN0Y2FwaSBtb2R1bGUnKQorY2xhc3MgQ1B5VGltZVRlc3RDYXNlOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgdG8gdGVzdCB0aGUgQyBfUHlUaW1lX3QgQVBJLgorICAgICIiIgorICAgIE9WRVJGTE9XX1NFQ09ORFMgPSBOb25lCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBTSVpFT0ZfVElNRV9UCisgICAgICAgIGJpdHMgPSBTSVpFT0ZfVElNRV9UICogOCAtIDEKKyAgICAgICAgc2VsZi50aW1lX3RfbWluID0gLTIgKiogYml0cworICAgICAgICBzZWxmLnRpbWVfdF9tYXggPSAyICoqIGJpdHMgLSAxCisKKyAgICBkZWYgdGltZV90X2ZpbHRlcihzZWxmLCBzZWNvbmRzKToKKyAgICAgICAgcmV0dXJuIChzZWxmLnRpbWVfdF9taW4gPD0gc2Vjb25kcyA8PSBzZWxmLnRpbWVfdF9tYXgpCisKKyAgICBkZWYgX3JvdW5kaW5nX3ZhbHVlcyhzZWxmLCB1c2VfZmxvYXQpOgorICAgICAgICAiQnVpbGQgdGltZXN0YW1wcyB1c2VkIHRvIHRlc3Qgcm91bmRpbmcuIgorCisgICAgICAgIHVuaXRzID0gWzEsIFVTX1RPX05TLCBNU19UT19OUywgU0VDX1RPX05TXQorICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAjIHBpY29zZWNvbmRzIGFyZSBvbmx5IHRlc3RlZCB0byBweXRpbWVfY29udmVydGVyIGFjY2VwdGluZyBmbG9hdHMKKyAgICAgICAgICAgIHVuaXRzLmFwcGVuZCgxZS0zKQorCisgICAgICAgIHZhbHVlcyA9ICgKKyAgICAgICAgICAgICMgc21hbGwgdmFsdWVzCisgICAgICAgICAgICAxLCAyLCA1LCA3LCAxMjMsIDQ1NiwgMTIzNCwKKyAgICAgICAgICAgICMgMTBeayAtIDEKKyAgICAgICAgICAgIDksCisgICAgICAgICAgICA5OSwKKyAgICAgICAgICAgIDk5OSwKKyAgICAgICAgICAgIDk5OTksCisgICAgICAgICAgICA5OTk5OSwKKyAgICAgICAgICAgIDk5OTk5OSwKKyAgICAgICAgICAgICMgdGVzdCBoYWxmIGV2ZW4gcm91bmRpbmcgbmVhciAwLjUsIDEuNSwgMi41LCAzLjUsIDQuNQorICAgICAgICAgICAgNDk5LCA1MDAsIDUwMSwKKyAgICAgICAgICAgIDE0OTksIDE1MDAsIDE1MDEsCisgICAgICAgICAgICAyNTAwLAorICAgICAgICAgICAgMzUwMCwKKyAgICAgICAgICAgIDQ1MDAsCisgICAgICAgICkKKworICAgICAgICBuc190aW1lc3RhbXBzID0gWzBdCisgICAgICAgIGZvciB1bml0IGluIHVuaXRzOgorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBucyA9IHZhbHVlICogdW5pdAorICAgICAgICAgICAgICAgIG5zX3RpbWVzdGFtcHMuZXh0ZW5kKCgtbnMsIG5zKSkKKyAgICAgICAgZm9yIHBvdzIgaW4gKDAsIDUsIDEwLCAxNSwgMjIsIDIzLCAyNCwgMzAsIDMzKToKKyAgICAgICAgICAgIG5zID0gKDIgKiogcG93MikgKiBTRUNfVE9fTlMKKyAgICAgICAgICAgIG5zX3RpbWVzdGFtcHMuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAtbnMtMSwgLW5zLCAtbnMrMSwKKyAgICAgICAgICAgICAgICBucy0xLCBucywgbnMrMQorICAgICAgICAgICAgKSkKKyAgICAgICAgZm9yIHNlY29uZHMgaW4gKF90ZXN0Y2FwaS5JTlRfTUlOLCBfdGVzdGNhcGkuSU5UX01BWCk6CisgICAgICAgICAgICBuc190aW1lc3RhbXBzLmFwcGVuZChzZWNvbmRzICogU0VDX1RPX05TKQorICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAjIG51bWJlcnMgd2l0aCBhbiBleGFjdCByZXByZXNlbnRhdGlvbiBpbiBJRUVFIDc1NCAoYmFzZSAyKQorICAgICAgICAgICAgZm9yIHBvdzIgaW4gKDMsIDcsIDEwLCAxNSk6CisgICAgICAgICAgICAgICAgbnMgPSAyLjAgKiogKC1wb3cyKQorICAgICAgICAgICAgICAgIG5zX3RpbWVzdGFtcHMuZXh0ZW5kKCgtbnMsIG5zKSkKKworICAgICAgICAjIHNlY29uZHMgY2xvc2UgdG8gX1B5VGltZV90IHR5cGUgbGltaXQKKyAgICAgICAgbnMgPSAoMiAqKiA2MyAvLyBTRUNfVE9fTlMpICogU0VDX1RPX05TCisgICAgICAgIG5zX3RpbWVzdGFtcHMuZXh0ZW5kKCgtbnMsIG5zKSkKKworICAgICAgICByZXR1cm4gbnNfdGltZXN0YW1wcworCisgICAgZGVmIF9jaGVja19yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2Zsb2F0LCB1bml0X3RvX3NlYywgdmFsdWVfZmlsdGVyPU5vbmUpOgorCisgICAgICAgIGRlZiBjb252ZXJ0X3ZhbHVlcyhuc190aW1lc3RhbXBzKToKKyAgICAgICAgICAgIGlmIHVzZV9mbG9hdDoKKyAgICAgICAgICAgICAgICB1bml0X3RvX25zID0gU0VDX1RPX05TIC8gZmxvYXQodW5pdF90b19zZWMpCisgICAgICAgICAgICAgICAgdmFsdWVzID0gW25zIC8gdW5pdF90b19ucyBmb3IgbnMgaW4gbnNfdGltZXN0YW1wc10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdW5pdF90b19ucyA9IFNFQ19UT19OUyAvLyB1bml0X3RvX3NlYworICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtucyAvLyB1bml0X3RvX25zIGZvciBucyBpbiBuc190aW1lc3RhbXBzXQorCisgICAgICAgICAgICBpZiB2YWx1ZV9maWx0ZXI6CisgICAgICAgICAgICAgICAgdmFsdWVzID0gZmlsdGVyKHZhbHVlX2ZpbHRlciwgdmFsdWVzKQorCisgICAgICAgICAgICAjIHJlbW92ZSBkdXBsaWNhdGVzIGFuZCBzb3J0CisgICAgICAgICAgICByZXR1cm4gc29ydGVkKHNldCh2YWx1ZXMpKQorCisgICAgICAgICMgdGVzdCByb3VuZGluZworICAgICAgICBuc190aW1lc3RhbXBzID0gc2VsZi5fcm91bmRpbmdfdmFsdWVzKHVzZV9mbG9hdCkKKyAgICAgICAgdmFsaWRfdmFsdWVzID0gY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcykKKyAgICAgICAgZm9yIHRpbWVfcm5kLCBkZWNpbWFsX3JuZCBpbiBST1VORElOR19NT0RFUyA6CisgICAgICAgICAgICBjb250ZXh0ID0gZGVjaW1hbC5nZXRjb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSBkZWNpbWFsX3JuZAorCisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsaWRfdmFsdWVzOgorICAgICAgICAgICAgICAgIGRlYnVnX2luZm8gPSB7J3ZhbHVlJzogdmFsdWUsICdyb3VuZGluZyc6IGRlY2ltYWxfcm5kfQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHl0aW1lX2NvbnZlcnRlcih2YWx1ZSwgdGltZV9ybmQpCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWRfZnVuYyh2YWx1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJFcnJvciBvbiB0aW1lc3RhbXAgY29udmVyc2lvbjogJXMiICUgZGVidWdfaW5mbykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdfaW5mbykKKworICAgICAgICAjIHRlc3Qgb3ZlcmZsb3cKKyAgICAgICAgbnMgPSBzZWxmLk9WRVJGTE9XX1NFQ09ORFMgKiBTRUNfVE9fTlMKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9ICgtbnMsIG5zKQorICAgICAgICBvdmVyZmxvd192YWx1ZXMgPSBjb252ZXJ0X3ZhbHVlcyhuc190aW1lc3RhbXBzKQorICAgICAgICBmb3IgdGltZV9ybmQsIF8gaW4gUk9VTkRJTkdfTU9ERVMgOgorICAgICAgICAgICAgZm9yIHZhbHVlIGluIG92ZXJmbG93X3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvID0geyd2YWx1ZSc6IHZhbHVlLCAncm91bmRpbmcnOiB0aW1lX3JuZH0KKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG1zZz1kZWJ1Z19pbmZvKToKKyAgICAgICAgICAgICAgICAgICAgcHl0aW1lX2NvbnZlcnRlcih2YWx1ZSwgdGltZV9ybmQpCisKKyAgICBkZWYgY2hlY2tfaW50X3JvdW5kaW5nKHNlbGYsIHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3RvX3NlYz0xLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3JvdW5kaW5nKHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCB1bml0X3RvX3NlYywgdmFsdWVfZmlsdGVyKQorCisgICAgZGVmIGNoZWNrX2Zsb2F0X3JvdW5kaW5nKHNlbGYsIHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdG9fc2VjPTEsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcm91bmRpbmcocHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcikKKworICAgIGRlZiBkZWNpbWFsX3JvdW5kKHNlbGYsIHgpOgorICAgICAgICBkID0gZGVjaW1hbC5EZWNpbWFsKHgpCisgICAgICAgIGQgPSBkLnF1YW50aXplKDEpCisgICAgICAgIHJldHVybiBpbnQoZCkKKworCitjbGFzcyBUZXN0Q1B5VGltZShDUHlUaW1lVGVzdENhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHRoZSBDIF9QeVRpbWVfdCBBUEkuCisgICAgIiIiCisgICAgIyBfUHlUaW1lX3QgaXMgYSA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gbWF0aC5jZWlsKCgyKio2MyArIDEpIC8gU0VDX1RPX05TKQorCiAgICAgZGVmIHRlc3RfRnJvbVNlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfRnJvbVNlY29uZHMKLSAgICAgICAgZm9yIHNlY29uZHMgaW4gKDAsIDMsIC00NTYsIF90ZXN0Y2FwaS5JTlRfTUFYLCBfdGVzdGNhcGkuSU5UX01JTik6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0Zyb21TZWNvbmRzKHNlY29uZHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcyAqIFNFQ19UT19OUykKKworICAgICAgICAjIFB5VGltZV9Gcm9tU2Vjb25kcygpIGV4cGVjdHMgYSBDIGludCwgcmVqZWN0IHZhbHVlcyBvdXQgb2YgcmFuZ2UKKyAgICAgICAgZGVmIGNfaW50X2ZpbHRlcihzZWNzKToKKyAgICAgICAgICAgIHJldHVybiAoX3Rlc3RjYXBpLklOVF9NSU4gPD0gc2VjcyA8PSBfdGVzdGNhcGkuSU5UX01BWCkKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhsYW1iZGEgc2Vjcywgcm5kOiBQeVRpbWVfRnJvbVNlY29uZHMoc2VjcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzICogU0VDX1RPX05TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9Y19pbnRfZmlsdGVyKQogCiAgICAgZGVmIHRlc3RfRnJvbVNlY29uZHNPYmplY3Qoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QKIAotICAgICAgICAjIENvbnZlcnNpb24gZ2l2aW5nIHRoZSBzYW1lIHJlc3VsdCBmb3IgYWxsIHJvdW5kaW5nIG1ldGhvZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBvYmosIHRzIGluICgKLSAgICAgICAgICAgICAgICAjIGludGVnZXJzCi0gICAgICAgICAgICAgICAgKDAsIDApLAotICAgICAgICAgICAgICAgICgxLCBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtMywgLTMgKiBTRUNfVE9fTlMpLAorICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZygKKyAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCwKKyAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzICogU0VDX1RPX05TKQogCi0gICAgICAgICAgICAgICAgIyBmbG9hdDogc3Vic2Vjb25kcwotICAgICAgICAgICAgICAgICgwLjAsIDApLAotICAgICAgICAgICAgICAgICgxZS05LCAxKSwKLSAgICAgICAgICAgICAgICAoMWUtNiwgMTAgKiogMyksCi0gICAgICAgICAgICAgICAgKDFlLTMsIDEwICoqIDYpLAotCi0gICAgICAgICAgICAgICAgIyBmbG9hdDogc2Vjb25kcwotICAgICAgICAgICAgICAgICgyLjAsIDIgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgxMjMuMCwgMTIzICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTcuMCwgLTcgKiBTRUNfVE9fTlMpLAotCi0gICAgICAgICAgICAgICAgIyBuYW5vc2Vjb25kIGFyZSBrZXB0IGZvciB2YWx1ZSA8PSAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjIgLSAxZS05LCAgNDE5NDMwMzk5OTk5OTk5OSksCi0gICAgICAgICAgICAgICAgKDIqKjIyLCAgICAgICAgIDQxOTQzMDQwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyMiArIDFlLTksICA0MTk0MzA0MDAwMDAwMDAxKSwKLSAgICAgICAgICAgICAgICAoMioqMjMgLSAxZS05LCAgODM4ODYwNzk5OTk5OTk5OSksCi0gICAgICAgICAgICAgICAgKDIqKjIzLCAgICAgICAgIDgzODg2MDgwMDAwMDAwMDApLAotCi0gICAgICAgICAgICAgICAgIyBzdGFydCBsb3NpbmcgcHJlY2lzaW9uIGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyMyArIDFlLTksICA4Mzg4NjA4MDAwMDAwMDAyKSwKLQotICAgICAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjI0IC0gMWUtOSwgMTY3NzcyMTU5OTk5OTk5OTgpLAotICAgICAgICAgICAgICAgICgyKioyNCwgICAgICAgIDE2Nzc3MjE2MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjQgKyAxZS05LCAxNjc3NzIxNjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1IC0gMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSAgICAgICAsIDMzNTU0NDMyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgKyAxZS05LCAzMzU1NDQzMjAwMDAwMDAwMCksCi0KLSAgICAgICAgICAgICAgICAjIGNsb3NlIHRvIDJeNjMgbmFub3NlY29uZHMgKF9QeVRpbWVfdCBsaW1pdCkKLSAgICAgICAgICAgICAgICAoOTIyMzM3MjAzNiwgOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYuMCwgOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC05MjIzMzcyMDM2LCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC05MjIzMzcyMDM2LjAsIC05MjIzMzcyMDM2ICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob2JqPW9iaiwgcm91bmQ9cm5kLCB0aW1lc3RhbXA9dHMpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdChvYmosIHJuZCksIHRzKQotCi0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChyb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCg5MjIzMzcyMDM3LCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCg5MjIzMzcyMDM3LjAsIHJuZCkKLSAgICAgICAgICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KC05MjIzMzcyMDM3LCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNy4wLCBybmQpCi0KLSAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyBkaWZmZXJlbnQgcmVzdWx0cyBkZXBlbmRpbmcgb24gdGhlIHJvdW5kaW5nIG1ldGhvZAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3Igb2JqLCB0cywgcm5kIGluICgKLSAgICAgICAgICAgICMgY2xvc2UgdG8gemVybwotICAgICAgICAgICAgKCAxZS0xMCwgIDAsIEZMT09SKSwKLSAgICAgICAgICAgICggMWUtMTAsICAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtMTAsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTFlLTEwLCAgMCwgQ0VJTElORyksCi0KLSAgICAgICAgICAgICMgdGVzdCByb3VuZGluZyBvZiB0aGUgbGFzdCBuYW5vc2Vjb25kCi0gICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3ODksIEZMT09SKSwKLSAgICAgICAgICAgICggMS4xMjM0NTY3ODk5LCAgMTEyMzQ1Njc5MCwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3OTAsIEZMT09SKSwKLSAgICAgICAgICAgICgtMS4xMjM0NTY3ODk5LCAtMTEyMzQ1Njc4OSwgQ0VJTElORyksCi0KLSAgICAgICAgICAgICMgY2xvc2UgdG8gMSBzZWNvbmQKLSAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgIDk5OTk5OTk5OSwgRkxPT1IpLAotICAgICAgICAgICAgKCAwLjk5OTk5OTk5OTksICAxMDAwMDAwMDAwLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAtMTAwMDAwMDAwMCwgRkxPT1IpLAotICAgICAgICAgICAgKC0wLjk5OTk5OTk5OTksICAtOTk5OTk5OTk5LCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdChvYmosIHJuZCksIHRzKQorICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKAorICAgICAgICAgICAgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0LAorICAgICAgICAgICAgbGFtYmRhIG5zOiBzZWxmLmRlY2ltYWxfcm91bmQobnMgKiBTRUNfVE9fTlMpKQogCiAgICAgZGVmIHRlc3RfQXNTZWNvbmRzRG91YmxlKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzU2Vjb25kc0RvdWJsZQogCi0gICAgICAgIGZvciBuYW5vc2Vjb25kcywgc2Vjb25kcyBpbiAoCi0gICAgICAgICAgICAjIG5lYXIgMSBuYW5vc2Vjb25kCi0gICAgICAgICAgICAoIDAsICAwLjApLAotICAgICAgICAgICAgKCAxLCAgMWUtOSksCi0gICAgICAgICAgICAoLTEsIC0xZS05KSwKKyAgICAgICAgZGVmIGZsb2F0X2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICBpZiBhYnMobnMpICUgU0VDX1RPX05TID09IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0KG5zIC8vIFNFQ19UT19OUykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsb2F0KG5zKSAvIFNFQ19UT19OUwogCi0gICAgICAgICAgICAjIG5lYXIgMSBzZWNvbmQKLSAgICAgICAgICAgIChTRUNfVE9fTlMgKyAxLCAxLjAgKyAxZS05KSwKLSAgICAgICAgICAgIChTRUNfVE9fTlMsICAgICAxLjApLAotICAgICAgICAgICAgKFNFQ19UT19OUyAtIDEsIDEuMCAtIDFlLTkpLAorICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhsYW1iZGEgbnMsIHJuZDogUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0X2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDKQogCi0gICAgICAgICAgICAjIGEgZmV3IHNlY29uZHMKLSAgICAgICAgICAgICgxMjMgKiBTRUNfVE9fTlMsIDEyMy4wKSwKLSAgICAgICAgICAgICgtNTY3ICogU0VDX1RPX05TLCAtNTY3LjApLAorICAgIGRlZiBjcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoc2VsZiwgZGVub21pbmF0b3IpOgorICAgICAgICBkZW5vbSA9IGRlY2ltYWwuRGVjaW1hbChkZW5vbWluYXRvcikKIAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kIGFyZSBrZXB0IGZvciB2YWx1ZSA8PSAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICg0MTk0MzAzOTk5OTk5OTk5LCAyKioyMiAtIDFlLTkpLAotICAgICAgICAgICAgKDQxOTQzMDQwMDAwMDAwMDAsIDIqKjIyKSwKLSAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAxLCAyKioyMiArIDFlLTkpLAorICAgICAgICBkZWYgY29udmVydGVyKHZhbHVlKToKKyAgICAgICAgICAgIGQgPSBkZWNpbWFsLkRlY2ltYWwodmFsdWUpIC8gZGVub20KKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY2ltYWxfcm91bmQoZCkKIAotICAgICAgICAgICAgIyBzdGFydCBsb3NpbmcgcHJlY2lzaW9uIGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgKDgzODg2MDgwMDAwMDAwMDIsIDIqKjIzICsgMWUtOSksCisgICAgICAgIHJldHVybiBjb252ZXJ0ZXIKIAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcyBhcmUgbG9zdCBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICgxNjc3NzIxNTk5OTk5OTk5OCwgMioqMjQgLSAxZS05KSwKLSAgICAgICAgICAgICgxNjc3NzIxNTk5OTk5OTk5OSwgMioqMjQgLSAxZS05KSwKLSAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMCwgMioqMjQgICAgICAgKSwKLSAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMSwgMioqMjQgICAgICAgKSwKLSAgICAgICAgICAgICgxNjc3NzIxNjAwMDAwMDAwMiwgMioqMjQgKyAyZS05KSwKLQotICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDAwLCAyKioyNSAgICAgICApLAotICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDAyLCAyKioyNSAgICAgICApLAotICAgICAgICAgICAgKDMzNTU0NDMyMDAwMDAwMDA0LCAyKioyNSArIDRlLTkpLAotCi0gICAgICAgICAgICAjIGNsb3NlIHRvIDJeNjMgbmFub3NlY29uZHMgKF9QeVRpbWVfdCBsaW1pdCkKLSAgICAgICAgICAgICg5MjIzMzcyMDM2ICogU0VDX1RPX05TLCA5MjIzMzcyMDM2LjApLAotICAgICAgICAgICAgKC05MjIzMzcyMDM2ICogU0VDX1RPX05TLCAtOTIyMzM3MjAzNi4wKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5hbm9zZWNvbmRzLCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShuYW5vc2Vjb25kcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzKQotCi0gICAgZGVmIHRlc3RfdGltZXZhbChzZWxmKToKKyAgICBkZWYgdGVzdF9Bc1RpbWV2YWwoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNUaW1ldmFsCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pY3Jvc2Vjb25kcwotICAgICAgICAgICAgICAgICgwLCAoMCwgMCkpLAotICAgICAgICAgICAgICAgICgxMDAwLCAoMCwgMSkpLAotICAgICAgICAgICAgICAgICgtMTAwMCwgKC0xLCA5OTk5OTkpKSwKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAotICAgICAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgKC0zLCAwKSksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWV2YWwobnMsIHJuZCksIHR2KQorICAgICAgICB1c19jb252ZXJ0ZXIgPSBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihVU19UT19OUykKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIHR2LCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsICgwLCAwKSwgRkxPT1IpLAotICAgICAgICAgICAgKDEsICgwLCAxKSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsICgtMSwgOTk5OTk5KSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAoMCwgMCksIENFSUxJTkcpLAorICAgICAgICBkZWYgdGltZXZhbF9jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgdXMgPSB1c19jb252ZXJ0ZXIobnMpCisgICAgICAgICAgICByZXR1cm4gZGl2bW9kKHVzLCBTRUNfVE9fVVMpCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2NyksIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0NTY3MDAxLCAoMSwgMjM0NTY4KSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEyMzQ1NjcwMDEsICgtMiwgNzY1NDMyKSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMyksIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgTE9OR19NSU4sIExPTkdfTUFYCisKKyAgICAgICAgICAgICMgT24gV2luZG93cywgdGltZXZhbC50dl9zZWMgdHlwZSBpcyBhIEMgbG9uZworICAgICAgICAgICAgZGVmIHNlY29uZHNfZmlsdGVyKHNlY3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBMT05HX01JTiA8PSBzZWNzIDw9IExPTkdfTUFYCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWNvbmRzX2ZpbHRlciA9IHNlbGYudGltZV90X2ZpbHRlcgorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc1RpbWV2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWV2YWxfY29udmVydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWNvbmRzX2ZpbHRlcikKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoX3Rlc3RjYXBpLCAnUHlUaW1lX0FzVGltZXNwZWMnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBfdGVzdGNhcGkuUHlUaW1lX0FzVGltZXNwZWMnKQotICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzVGltZXNwZWMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNUaW1lc3BlYwotICAgICAgICBmb3IgbnMsIHRzIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgwLCAoMCwgMCkpLAotICAgICAgICAgICAgKDEsICgwLCAxKSksCi0gICAgICAgICAgICAoLTEsICgtMSwgOTk5OTk5OTk5KSksCiAKLSAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsICgyLCAwKSksCi0gICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAorICAgICAgICBkZWYgdGltZXNwZWNfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIHJldHVybiBkaXZtb2QobnMsIFNFQ19UT19OUykKIAotICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxMjM0NTY3ODkwLCAoMSwgMjM0NTY3ODkwKSksCi0gICAgICAgICAgICAoLTEyMzQ1Njc4OTAsICgtMiwgNzY1NDMyMTEwKSksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXNwZWM9dHMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXNwZWMobnMpLCB0cykKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIG5zLCBybmQ6IFB5VGltZV9Bc1RpbWVzcGVjKG5zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXNwZWNfY29udmVydGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCiAKLSAgICBkZWYgdGVzdF9taWxsaXNlY29uZHMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNNaWxsaXNlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWxsaXNlY29uZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMSksCi0gICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yKSwKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWlsbGlzZWNvbmRzKG5zLCBybmQpLCB0dikKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzTWlsbGlzZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihNU19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCi0KLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNCAqIE1TX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0ICogTVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0ICogTVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWlsbGlzZWNvbmRzKG5zLCBybmQpLCBtcykKLQotICAgIGRlZiB0ZXN0X21pY3Jvc2Vjb25kcyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc01pY3Jvc2Vjb25kcyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc01pY3Jvc2Vjb25kcwotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWNyb3NlY29uZHMKLSAgICAgICAgICAgICAgICAoMSAqIFVTX1RPX05TLCAxKSwKLSAgICAgICAgICAgICAgICAoLTIgKiBVU19UT19OUywgLTIpLAogCi0gICAgICAgICAgICAgICAgIyBtaWxsaXNlY29uZHMKLSAgICAgICAgICAgICAgICAoMSAqIE1TX1RPX05TLCAxMDAwKSwKLSAgICAgICAgICAgICAgICAoLTIgKiBNU19UT19OUywgLTIwMDApLAorICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNNaWNyb3NlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKFVTX1RPX05TKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDKQogCi0gICAgICAgICAgICAgICAgIyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIgKiBTRUNfVE9fTlMsIDIwMDAwMDApLAotICAgICAgICAgICAgICAgICgtMyAqIFNFQ19UT19OUywgLTMwMDAwMDApLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWNyb3NlY29uZHMobnMsIHJuZCksIHR2KQogCi0gICAgICAgIEZMT09SID0gX1B5VGltZS5ST1VORF9GTE9PUgotICAgICAgICBDRUlMSU5HID0gX1B5VGltZS5ST1VORF9DRUlMSU5HCi0gICAgICAgIGZvciBucywgbXMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMSwgMCwgRkxPT1IpLAotICAgICAgICAgICAgKDEsIDEsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAwLCBDRUlMSU5HKSwKK2NsYXNzIFRlc3RPbGRQeVRpbWUoQ1B5VGltZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgb2xkIEMgX1B5VGltZV90IEFQSTogX1B5VGltZV9PYmplY3RUb1hYWCgpIGZ1bmN0aW9ucy4KKyAgICAiIiIKIAotICAgICAgICAgICAgIyBzZWNvbmRzICsgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxMjM0ICogVVNfVE9fTlMgKyAxLCAxMjM0LCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEyMzQgKiBVU19UT19OUyAtIDEsIC0xMjM1LCBGTE9PUiksCi0gICAgICAgICAgICAoLTEyMzQgKiBVU19UT19OUyAtIDEsIC0xMjM0LCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCBtaWxsaXNlY29uZHM9bXMsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNNaWNyb3NlY29uZHMobnMsIHJuZCksIG1zKQorICAgICMgdGltZV90IGlzIGEgMzItYml0IG9yIDY0LWJpdCBzaWduZWQgaW50ZWdlcgorICAgIE9WRVJGTE9XX1NFQ09ORFMgPSAyICoqIDY0CisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZV90KHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lX3QKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IHNlY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlY2ltYWxfcm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgIGRlZiBjcmVhdGVfY29udmVydGVyKHNlbGYsIHNlY190b191bml0KToKKyAgICAgICAgZGVmIGNvbnZlcnRlcihzZWNzKToKKyAgICAgICAgICAgIGZsb2F0cGFydCwgaW50cGFydCA9IG1hdGgubW9kZihzZWNzKQorICAgICAgICAgICAgaW50cGFydCA9IGludChpbnRwYXJ0KQorICAgICAgICAgICAgZmxvYXRwYXJ0ICo9IHNlY190b191bml0CisgICAgICAgICAgICBmbG9hdHBhcnQgPSBzZWxmLmRlY2ltYWxfcm91bmQoZmxvYXRwYXJ0KQorICAgICAgICAgICAgaWYgZmxvYXRwYXJ0IDwgMDoKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgKz0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgICAgICBpbnRwYXJ0IC09IDEKKyAgICAgICAgICAgIGVsaWYgZmxvYXRwYXJ0ID49IHNlY190b191bml0OgorICAgICAgICAgICAgICAgIGZsb2F0cGFydCAtPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMQorICAgICAgICAgICAgcmV0dXJuIChpbnRwYXJ0LCBmbG9hdHBhcnQpCisgICAgICAgIHJldHVybiBjb252ZXJ0ZXIKKworICAgIGRlZiB0ZXN0X29iamVjdF90b190aW1ldmFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1ldmFsCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2VjczogKHNlY3MsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbnZlcnRlcihTRUNfVE9fVVMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZXNwZWMoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IChzZWNzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfY29udmVydGVyKFNFQ19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQppbmRleCAyZGIzYzFiLi4xYTk1ZTI5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWVpdC5weQpAQCAtMzU0LDYgKzM1NCwyOCBAQAogICAgICAgICAgICAgcyA9IHNlbGYucnVuX21haW4oc3dpdGNoZXM9WyctbjEnLCAnMS8wJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0X2V4Y19zdHJpbmcoZXJyb3Jfc3RyaW5naW8uZ2V0dmFsdWUoKSwgJ1plcm9EaXZpc2lvbkVycm9yJykKIAorICAgIGRlZiBhdXRvcmFuZ2Uoc2VsZiwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgIHRpbWVyID0gRmFrZVRpbWVyKHNlY29uZHNfcGVyX2luY3JlbWVudD0wLjAwMSkKKyAgICAgICAgdCA9IHRpbWVpdC5UaW1lcihzdG10PXNlbGYuZmFrZV9zdG10LCBzZXR1cD1zZWxmLmZha2Vfc2V0dXAsIHRpbWVyPXRpbWVyKQorICAgICAgICByZXR1cm4gdC5hdXRvcmFuZ2UoY2FsbGJhY2spCisKKyAgICBkZWYgdGVzdF9hdXRvcmFuZ2Uoc2VsZik6CisgICAgICAgIG51bV9sb29wcywgdGltZV90YWtlbiA9IHNlbGYuYXV0b3JhbmdlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW1fbG9vcHMsIDEwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZV90YWtlbiwgMS4wKQorCisgICAgZGVmIHRlc3RfYXV0b3JhbmdlX3dpdGhfY2FsbGJhY2soc2VsZik6CisgICAgICAgIGRlZiBjYWxsYmFjayhhLCBiKToKKyAgICAgICAgICAgIHByaW50KCJ7fSB7Oi4zZn0iLmZvcm1hdChhLCBiKSkKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICAgICAgbnVtX2xvb3BzLCB0aW1lX3Rha2VuID0gc2VsZi5hdXRvcmFuZ2UoY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtX2xvb3BzLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVfdGFrZW4sIDEuMCkKKyAgICAgICAgZXhwZWN0ZWQgPSAoJzEwIDAuMDEwXG4nCisgICAgICAgICAgICAgICAgICAgICcxMDAgMC4xMDBcbicKKyAgICAgICAgICAgICAgICAgICAgJzEwMDAgMS4wMDBcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKaW5kZXggM2IxN2NhNi4uNWE4MWE1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CkBAIC00LDYgKzQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgb3BlbiBhcyB0b2tlbml6ZV9vcGVuLCBVbnRva2VuaXplcikKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBtb2NrCitmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiBpbXBvcnQgb3MKIGltcG9ydCB0b2tlbgogCkBAIC0yNCw4ICsyNiw3IEBACiAgICAgICAgICAgICBpZiB0eXBlID09IEVORE1BUktFUjoKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgdHlwZSA9IHRva19uYW1lW3R5cGVdCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgICAgJSh0eXBlKS0xMC4xMHMgJSh0b2tlbiktMTMuMTNyICUoc3RhcnQpcyAlKGVuZClzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscygpKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmIiAgICB7dHlwZToxMH0ge3Rva2VuIXI6MTN9IHtzdGFydH0ge2VuZH0iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBbIiAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKSJdICsKICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZC5yc3RyaXAoKS5zcGxpdGxpbmVzKCkpCkBAIC0xMzIsMTggKzEzMywxOCBAQAogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMHhmZmZmZmZmZmZmZiIsICIiIlwKICAgICBOQU1FICAgICAgICd4JyAgICAgICAgICAgKDEsIDApICgxLCAxKQogICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMSwgMikgKDEsIDMpCi0gICAgTlVNQkVSICAgICAnMHhmZmZmZmZmZmZmICgxLCA0KSAoMSwgMTcpCisgICAgTlVNQkVSICAgICAnMHhmZmZmZmZmZmZmZicgKDEsIDQpICgxLCAxNykKICAgICAiIiIpCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoInggPSAxMjMxNDEyNDIxNTEyNTE2MTYxMTAiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQotICAgIE5VTUJFUiAgICAgJzEyMzE0MTI0MjE1MSAoMSwgNCkgKDEsIDI1KQorICAgIE5VTUJFUiAgICAgJzEyMzE0MTI0MjE1MTI1MTYxNjExMCcgKDEsIDQpICgxLCAyNSkKICAgICAiIiIpCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoInggPSAtMTU5MjE1OTAyMTUwMTI1OTEiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQogICAgIE9QICAgICAgICAgJy0nICAgICAgICAgICAoMSwgNCkgKDEsIDUpCi0gICAgTlVNQkVSICAgICAnMTU5MjE1OTAyMTUwICgxLCA1KSAoMSwgMjIpCisgICAgTlVNQkVSICAgICAnMTU5MjE1OTAyMTUwMTI1OTEnICgxLCA1KSAoMSwgMjIpCiAgICAgIiIiKQogCiAgICAgZGVmIHRlc3RfZmxvYXQoc2VsZik6CkBAIC0xODYsNiArMTg3LDIxIEBACiAgICAgTlVNQkVSICAgICAnMy4xNGUxNTknICAgICgxLCA0KSAoMSwgMTIpCiAgICAgIiIiKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZV9saXRlcmFscyhzZWxmKToKKyAgICAgICAgZGVmIG51bWJlcl90b2tlbihzKToKKyAgICAgICAgICAgIGYgPSBCeXRlc0lPKHMuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgZm9yIHRva3R5cGUsIHRva2VuLCBzdGFydCwgZW5kLCBsaW5lIGluIHRva2VuaXplKGYucmVhZGxpbmUpOgorICAgICAgICAgICAgICAgIGlmIHRva3R5cGUgPT0gTlVNQkVSOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4KKyAgICAgICAgICAgIHJldHVybiAnaW52YWxpZCB0b2tlbicKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgJygnIGluIGxpdDoKKyAgICAgICAgICAgICAgICAjIHRoaXMgd29uJ3Qgd29yayB3aXRoIGNvbXBvdW5kIGNvbXBsZXggaW5wdXRzCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtYmVyX3Rva2VuKGxpdCksIGxpdCkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG51bWJlcl90b2tlbihsaXQpLCBsaXQpCisKICAgICBkZWYgdGVzdF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgU3RyaW5nIGxpdGVyYWxzCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoInggPSAnJzsgeSA9IFwiXCIiLCAiIiJcCkBAIC0zMDcsNiArMzIzLDUwIEBACiAgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQogICAgIFNUUklORyAgICAgJ1JCImFiYyInICAgICAoMSwgMzApICgxLCAzNykKICAgICAiIiIpCisgICAgICAgICMgQ2hlY2sgMCwgMSwgYW5kIDIgY2hhcmFjdGVyIHN0cmluZyBwcmVmaXhlcy4KKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJyJhXAorZGVcCitmZyInLCAiIiJcCisgICAgU1RSSU5HICAgICAnImFcXFxcXFxuZGVcXFxcXFxuZmciXCcgKDEsIDApICgzLCAzKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ3UiYVwKK2RlIicsICIiIlwKKyAgICBTVFJJTkcgICAgICd1ImFcXFxcXFxuZGUiXCcgICgxLCAwKSAoMiwgMykKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidyYiJhXAorZCInLCAiIiJcCisgICAgU1RSSU5HICAgICAncmIiYVxcXFxcXG5kIlwnICAoMSwgMCkgKDIsIDIpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInIiIiYVwKK2IiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAnXCJcIiJhXFxcXFxcbmJcIlwiIicgKDEsIDApICgyLCA0KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ3UiIiJhXAorYiIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICd1XCJcIiJhXFxcXFxcbmJcIlwiIicgKDEsIDApICgyLCA0KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ3JiIiIiYVwKK2JcCitjIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3JiIlwiImFcXFxcXFxuYlxcXFxcXG5jIlwiIicgKDEsIDApICgzLCA0KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZiJhYmMiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2YiYWJjIicgICAgICAoMSwgMCkgKDEsIDYpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmUiJhe2J9YyInLCAiIiJcCisgICAgU1RSSU5HICAgICAnZlIiYXtifWMiJyAgICgxLCAwKSAoMSwgOSkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2YiIiJhYmMiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAnZlwiXCJcImFiY1wiXCJcIicgICgxLCAwKSAoMSwgMTApCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInZiJhYmNcCitkZWYiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2YiYWJjXFxcXFxcbmRlZiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidSZiJhYmNcCitkZWYiJywgIiIiXAorICAgIFNUUklORyAgICAgJ1JmImFiY1xcXFxcXG5kZWYiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQogCiAgICAgZGVmIHRlc3RfZnVuY3Rpb24oc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoImRlZiBkMjIoYSwgYiwgYz0yLCBkPTIsICprKTogcGFzcyIsICIiIlwKQEAgLTUwNSw3ICs1NjUsNyBAQAogICAgICAgICAjIE1ldGhvZHMKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgiQHN0YXRpY21ldGhvZFxuZGVmIGZvbyh4LHkpOiBwYXNzIiwgIiIiXAogICAgIE9QICAgICAgICAgJ0AnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCi0gICAgTkFNRSAgICAgICAnc3RhdGljbWV0aG9kICgxLCAxKSAoMSwgMTMpCisgICAgTkFNRSAgICAgICAnc3RhdGljbWV0aG9kJyAoMSwgMSkgKDEsIDEzKQogICAgIE5FV0xJTkUgICAgJ1xcbicgICAgICAgICAgKDEsIDEzKSAoMSwgMTQpCiAgICAgTkFNRSAgICAgICAnZGVmJyAgICAgICAgICgyLCAwKSAoMiwgMykKICAgICBOQU1FICAgICAgICdmb28nICAgICAgICAgKDIsIDQpICgyLCA3KQpAQCAtMTQ4OCwxMCArMTU0OCwxMCBAQAogCiAgICAgICAgICMgVG9rZW5pemUgaXMgYnJva2VuIG9uIHRlc3RfcGVwMzEzMS5weSBiZWNhdXNlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYXJlCiAgICAgICAgICMgYnJva2VuIG9uIHRoZSBvYnNjdXJlIHVuaWNvZGUgaWRlbnRpZmllcnMgaW4gaXQuICpzaWdoKgotICAgICAgICAjIFdpdGggcm91bmR0cmlwIGV4dGVuZGVkIHRvIHRlc3QgdGhlIDUtdHVwbGUgbW9kZSBvZiAgdW50b2tlbml6ZSwKKyAgICAgICAgIyBXaXRoIHJvdW5kdHJpcCBleHRlbmRlZCB0byB0ZXN0IHRoZSA1LXR1cGxlIG1vZGUgb2YgdW50b2tlbml6ZSwKICAgICAgICAgIyA3IG1vcmUgdGVzdGZpbGVzIGZhaWwuICBSZW1vdmUgdGhlbSBhbHNvIHVudGlsIHRoZSBmYWlsdXJlIGlzIGRpYWdub3NlZC4KIAotICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF9wZXAzMTMxLnB5IikpCisgICAgICAgIHRlc3RmaWxlcy5yZW1vdmUob3MucGF0aC5qb2luKHRlbXBkaXIsICJ0ZXN0X3VuaWNvZGVfaWRlbnRpZmllcnMucHkiKSkKICAgICAgICAgZm9yIGYgaW4gKCdidWZmZXInLCAnYnVpbHRpbicsICdmaWxlaW8nLCAnaW5zcGVjdCcsICdvcycsICdwbGF0Zm9ybScsICdzeXMnKToKICAgICAgICAgICAgIHRlc3RmaWxlcy5yZW1vdmUob3MucGF0aC5qb2luKHRlbXBkaXIsICJ0ZXN0XyVzLnB5IikgJSBmKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQppbmRleCAwNGM4NzI2Li40ZDBmY2EzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbXBvcnRsaWIKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoCiAKIGJhc2VwYXRoID0gb3MucGF0aC5kaXJuYW1lKCAgICAgICAgICAgICAgICAgIyA8c3JjL2luc3RhbGwgZGlyPgogICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZSggICAgICAgICAgICAgICAgIyBMaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X2dwcm9mMmh0bWwucHkKaW5kZXggMGMyOTRlYy4uOTQ4OWVkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X2dwcm9mMmh0bWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X2dwcm9mMmh0bWwucHkKQEAgLTIsMTIgKzIsMTEgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIGltcG9ydCB0ZW1wZmlsZQogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2Rpciwgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAorZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKIAogc2tpcF9pZl9taXNzaW5nKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKaW5kZXggMTMwNTI5NS4uZmI1NjViNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CkBAIC0xLDEyICsxLDExIEBACiAiIiJUZXN0cyBmb3IgdGhlIG1kNXN1bSBzY3JpcHQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBpbXBvcnRfdG9vbCwgc2tpcF9pZl9taXNzaW5nCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2Rpciwgc2tpcF9pZl9taXNzaW5nCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQppbmRleCAwOTFmYTZhLi4yN2NiZmUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CkBAIC0xLDEyICsxLDEwIEBACiAiIiJUZXN0cyBmb3IgdGhlIHBkZXBzIHNjcmlwdCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3VucGFyc2UucHkKaW5kZXggNzM0YmJjMi4uNjVkZWUxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3VucGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3VucGFyc2UucHkKQEAgLTEzNCw2ICsxMzQsMTEgQEAKIGNsYXNzIFVucGFyc2VUZXN0Q2FzZShBU1RUZXN0Q2FzZSk6CiAgICAgIyBUZXN0cyBmb3Igc3BlY2lmaWMgYnVncyBmb3VuZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mIHVucGFyc2UKIAorICAgIGRlZiB0ZXN0X2ZzdHJpbmdzKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAyNTE4MAorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChyIiIiZid7ZiJ7MH0iKjN9JyIiIikKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAociIiImYne2Yie3l9IiozfSciIiIpCisKICAgICBkZWYgdGVzdF9kZWxfc3RhdGVtZW50KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCgiZGVsIHgsIHksIHoiKQogCkBAIC0yNzksOCArMjg0LDE4IEBACiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCdUZXN0aW5nICVzJyAlIGZpbGVuYW1lKQotICAgICAgICAgICAgc291cmNlID0gcmVhZF9weWZpbGUoZmlsZW5hbWUpCi0gICAgICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChzb3VyY2UpCisKKyAgICAgICAgICAgICMgU29tZSBmLXN0cmluZ3MgYXJlIG5vdCBjb3JyZWN0bHkgcm91bmQtdHJpcHBlZCBieQorICAgICAgICAgICAgIyAgVG9vbHMvcGFyc2VyL3VucGFyc2UucHkuICBTZWUgaXNzdWUgMjgwMDIgZm9yIGRldGFpbHMuCisgICAgICAgICAgICAjICBXZSBuZWVkIHRvIHNraXAgZmlsZXMgdGhhdCBjb250YWluIHN1Y2ggZi1zdHJpbmdzLgorICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkgaW4gKCd0ZXN0X2ZzdHJpbmcucHknLCApOgorICAgICAgICAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBwcmludChmJ1NraXBwaW5nIHtmaWxlbmFtZX06IHNlZSBpc3N1ZSAyODAwMicpCisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZmlsZW5hbWU9ZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IHJlYWRfcHlmaWxlKGZpbGVuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHNvdXJjZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKaW5kZXggZjY2YTNiYy4uMWQ4N2FlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CkBAIC0xLDExICsxLDExIEBACiBpbXBvcnQgb3MKLWltcG9ydCBpbwogaW1wb3J0IHN5cwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcm10cmVlLCB1bmxpbmssIGNhcHR1cmVkX3N0ZG91dAorZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiBpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IHRyYWNlCi1mcm9tIHRyYWNlIGltcG9ydCBDb3ZlcmFnZVJlc3VsdHMsIFRyYWNlCitmcm9tIHRyYWNlIGltcG9ydCBUcmFjZQogCiBmcm9tIHRlc3QudHJhY2VkbW9kdWxlcyBpbXBvcnQgdGVzdG1vZAogCkBAIC0zNjUsNTEgKzM2NSwyNyBAQAogICAgICAgICAjIE1hdGNoZWQgYmVmb3JlLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoaWdub3JlLm5hbWVzKGpuKCdiYXInLCAnYmF6LnB5JyksICdiYXonKSkKIAorY2xhc3MgVGVzdENvbW1hbmRMaW5lKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotY2xhc3MgVGVzdERlcHJlY2F0ZWRNZXRob2RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9mYWlsdXJlcyhzZWxmKToKKyAgICAgICAgX2Vycm9ycyA9ICgKKyAgICAgICAgICAgIChiJ2ZpbGVuYW1lIGlzIG1pc3Npbmc6IHJlcXVpcmVkIHdpdGggdGhlIG1haW4gb3B0aW9ucycsICctbCcsICctVCcpLAorICAgICAgICAgICAgKGInY2Fubm90IHNwZWNpZnkgYm90aCAtLWxpc3RmdW5jcyBhbmQgKC0tdHJhY2Ugb3IgLS1jb3VudCknLCAnLWxjJyksCisgICAgICAgICAgICAoYidhcmd1bWVudCAtUi8tLW5vLXJlcG9ydDogbm90IGFsbG93ZWQgd2l0aCBhcmd1bWVudCAtci8tLXJlcG9ydCcsICctclInKSwKKyAgICAgICAgICAgIChiJ211c3Qgc3BlY2lmeSBvbmUgb2YgLS10cmFjZSwgLS1jb3VudCwgLS1yZXBvcnQsIC0tbGlzdGZ1bmNzLCBvciAtLXRyYWNrY2FsbHMnLCAnLWcnKSwKKyAgICAgICAgICAgIChiJy1yLy0tcmVwb3J0IHJlcXVpcmVzIC1mLy0tZmlsZScsICctcicpLAorICAgICAgICAgICAgKGInLS1zdW1tYXJ5IGNhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0JywgJy1zVCcpLAorICAgICAgICAgICAgKGIndW5yZWNvZ25pemVkIGFyZ3VtZW50czogLXknLCAnLXknKSkKKyAgICAgICAgZm9yIG1lc3NhZ2UsICphcmdzIGluIF9lcnJvcnM6CisgICAgICAgICAgICAqXywgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctbScsICd0cmFjZScsICphcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtZXNzYWdlLCBzdGRlcnIpCiAKLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX3VzYWdlKHNlbGYpOgotICAgICAgICBzaW8gPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UudXNhZ2Uoc2lvKQotICAgICAgICBzZWxmLmFzc2VydEluKCdVc2FnZTonLCBzaW8uZ2V0dmFsdWUoKSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfSWdub3JlKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLklnbm9yZSgpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX21vZG5hbWUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgic3BhbSIsIHRyYWNlLm1vZG5hbWUoInNwYW0iKSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZnVsbG1vZG5hbWUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgic3BhbSIsIHRyYWNlLmZ1bGxtb2RuYW1lKCJzcGFtIikpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2ZpbmRfbGluZXNfZnJvbV9jb2RlKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIGRlZiBmb28oKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICB0cmFjZS5maW5kX2xpbmVzX2Zyb21fY29kZShmb28uX19jb2RlX18sIFsiZWdncyJdKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIGRlZiBmb28oKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICB0cmFjZS5maW5kX2xpbmVzKGZvby5fX2NvZGVfXywgWyJlZ2dzIl0pCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2ZpbmRfc3RyaW5ncyhzZWxmKToKKyAgICBkZWYgdGVzdF9saXN0ZnVuY3NfZmxhZ19zdWNjZXNzKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGZkOgogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgVEVTVEZOKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLmZpbmRfc3RyaW5ncyhmZC5uYW1lKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmZDoKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmZC5uYW1lKQotCisgICAgICAgICAgICBmZC53cml0ZSgiYSA9IDFcbiIpCisgICAgICAgICAgICBzdGF0dXMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLW0nLCAndHJhY2UnLCAnLWwnLCBURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInZnVuY3Rpb25zIGNhbGxlZDonLCBzdGRvdXQpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5CmluZGV4IDQ5Y2VkZGEuLjcyNzZiYzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5CkBAIC0xMjUsMTIgKzEyNSwxMiBAQAogICAgICAgICBkZWYgZG9fdGVzdChmaXJzdGxpbmVzLCBtZXNzYWdlLCBjaGFyc2V0LCBsaW5lbm8pOgogICAgICAgICAgICAgIyBSYWlzZSB0aGUgbWVzc2FnZSBpbiBhIHN1YnByb2Nlc3MsIGFuZCBjYXRjaCB0aGUgb3V0cHV0CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gb3BlbihURVNURk4sICJ3IiwgZW5jb2Rpbmc9Y2hhcnNldCkKLSAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoIiIiezB9aWYgMToKLSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjazsKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCd7MX0nKQotICAgICAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KGZpcnN0bGluZXMsIG1lc3NhZ2UpKQotICAgICAgICAgICAgICAgIG91dHB1dC5jbG9zZSgpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInciLCBlbmNvZGluZz1jaGFyc2V0KSBhcyBvdXRwdXQ6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dC53cml0ZSgiIiJ7MH1pZiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjazsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignezF9JykKKyAgICAgICAgICAgICAgICAgICAgICAgICIiIi5mb3JtYXQoZmlyc3RsaW5lcywgbWVzc2FnZSkpCisKICAgICAgICAgICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsIFRFU1RGTl0sCiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQpAQCAtMTcxLDggKzE3MSw4IEBACiAgICAgICAgICAgICAgICAgICAgIHRleHQsIGNoYXJzZXQsIDUpCiAgICAgICAgICAgICBkb190ZXN0KCIgXHRcZlxuIyBjb2Rpbmc6IHswfVxuIi5mb3JtYXQoY2hhcnNldCksCiAgICAgICAgICAgICAgICAgICAgIHRleHQsIGNoYXJzZXQsIDUpCi0gICAgICAgICMgSXNzdWUgIzE4OTYwOiBjb2Rpbmcgc3BlYyBzaG91bGQgaGFzIG5vIGVmZmVjdAotICAgICAgICBkb190ZXN0KCIwXG4jIGNvZGluZzogR0JLXG4iLCAiaFx4ZTkgaG8iLCAndXRmLTgnLCA1KQorICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhdmUgbm8gZWZmZWN0CisgICAgICAgIGRvX3Rlc3QoIng9MFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKIAogICAgIEBzdXBwb3J0LnJlcXVpcmVzX3R5cGVfY29sbGVjdGluZwogICAgIGRlZiB0ZXN0X3ByaW50X3RyYWNlYmFja19hdF9leGl0KHNlbGYpOgpAQCAtMjk5LDYgKzI5OSwxMzcgQEAKICAgICAgICAgICAgICcgICAgdHJhY2ViYWNrLnByaW50X3N0YWNrKCknLAogICAgICAgICBdKQogCisgICAgIyBpc3N1ZSAyNjgyMyAtIFNocmluayByZWN1cnNpdmUgdHJhY2ViYWNrcworICAgIGRlZiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5KHNlbGYsIHJlbmRlcl9leGMpOgorICAgICAgICAjIEFsd2F5cyBzaG93IGZ1bGwgZGlmZnMgd2hlbiB0aGlzIHRlc3QgZmFpbHMKKyAgICAgICAgIyBOb3RlIHRoYXQgcmVhcnJhbmdpbmcgdGhpbmdzIG1heSByZXF1aXJlIGFkanVzdGluZworICAgICAgICAjIHRoZSByZWxhdGl2ZSBsaW5lIG51bWJlcnMgaW4gdGhlIGV4cGVjdGVkIHRyYWNlYmFja3MKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorCisgICAgICAgICMgQ2hlY2sgaGl0dGluZyB0aGUgcmVjdXJzaW9uIGxpbWl0CisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBmKCkKKworICAgICAgICB3aXRoIGNhcHR1cmVkX291dHB1dCgic3RkZXJyIikgYXMgc3RkZXJyX2Y6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZigpCisgICAgICAgICAgICBleGNlcHQgUmVjdXJzaW9uRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHJlbmRlcl9leGMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHJlY3Vyc2lvbiBvY2N1cnJlZCIpCisKKyAgICAgICAgbGluZW5vX2YgPSBmLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vCisgICAgICAgIHJlc3VsdF9mID0gKAorICAgICAgICAgICAgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrNX0sIGluIF9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXlcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICAjIFhYWDogVGhlIGZvbGxvd2luZyBsaW5lIGNoYW5nZXMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHRlc3RzCisgICAgICAgICAgICAjIGFyZSBydW4gdGhyb3VnaCB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgb3Igd2l0aCAtbQorICAgICAgICAgICAgIyBJdCBhbHNvIHZhcmllcyBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIChzdGFjayBzaXplKQorICAgICAgICAgICAgIyBGb3J0dW5hdGVseSwgd2UgZG9uJ3QgY2FyZSBhYm91dCBleGFjdG5lc3MgaGVyZSwgc28gd2UgdXNlIHJlZ2V4CisgICAgICAgICAgICByJyAgXFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIChcZCspIG1vcmUgdGltZXNcXScgJ1xuJworICAgICAgICAgICAgJ1JlY3Vyc2lvbkVycm9yOiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZFxuJworICAgICAgICApCisKKyAgICAgICAgZXhwZWN0ZWQgPSByZXN1bHRfZi5zcGxpdGxpbmVzKCkKKyAgICAgICAgYWN0dWFsID0gc3RkZXJyX2YuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKworICAgICAgICAjIENoZWNrIHRoZSBvdXRwdXQgdGV4dCBtYXRjaGVzIGV4cGVjdGF0aW9ucworICAgICAgICAjIDJuZCBsYXN0IGxpbmUgY29udGFpbnMgdGhlIHJlcGV0aXRpb24gY291bnQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxbOi0yXSwgZXhwZWN0ZWRbOi0yXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChhY3R1YWxbLTJdLCBleHBlY3RlZFstMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWy0xXSwgZXhwZWN0ZWRbLTFdKQorCisgICAgICAgICMgQ2hlY2sgdGhlIHJlY3Vyc2lvbiBjb3VudCBpcyByb3VnaGx5IGFzIGV4cGVjdGVkCisgICAgICAgIHJlY19saW1pdCA9IHN5cy5nZXRyZWN1cnNpb25saW1pdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaW50KHJlLnNlYXJjaChyIlxkKyIsIGFjdHVhbFstMl0pLmdyb3VwKCkpLCByYW5nZShyZWNfbGltaXQtNjAsIHJlY19saW1pdCkpCisKKyAgICAgICAgIyBDaGVjayBhIGtub3duIChsaW1pdGVkKSBudW1iZXIgb2YgcmVjdXJzaXZlIGludm9jYXRpb25zCisgICAgICAgIGRlZiBnKGNvdW50PTEwKToKKyAgICAgICAgICAgIGlmIGNvdW50OgorICAgICAgICAgICAgICAgIHJldHVybiBnKGNvdW50LTEpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9nOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGcoKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHJlbmRlcl9leGMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHZhbHVlIGVycm9yIHdhcyByYWlzZWQiKQorCisgICAgICAgIGxpbmVub19nID0gZy5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfZyA9ICgKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2crMn0sIGluIGdcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGcoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2crMn0sIGluIGdcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGcoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2crMn0sIGluIGdcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGcoY291bnQtMSlcbicKKyAgICAgICAgICAgICcgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDYgbW9yZSB0aW1lc11cbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2crM30sIGluIGdcbicKKyAgICAgICAgICAgICcgICAgcmFpc2UgVmFsdWVFcnJvclxuJworICAgICAgICAgICAgJ1ZhbHVlRXJyb3JcbicKKyAgICAgICAgKQorICAgICAgICB0Yl9saW5lID0gKAorICAgICAgICAgICAgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2crN30sIGluIF9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXlcbicKKyAgICAgICAgICAgICcgICAgZygpXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSAodGJfbGluZSArIHJlc3VsdF9nKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgYWN0dWFsID0gc3RkZXJyX2cuZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorCisgICAgICAgICMgQ2hlY2sgMiBkaWZmZXJlbnQgcmVwZXRpdGl2ZSBzZWN0aW9ucworICAgICAgICBkZWYgaChjb3VudD0xMCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gaChjb3VudC0xKQorICAgICAgICAgICAgZygpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9oOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGgoKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHJlbmRlcl9leGMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIm5vIHZhbHVlIGVycm9yIHdhcyByYWlzZWQiKQorCisgICAgICAgIGxpbmVub19oID0gaC5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfaCA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19oKzd9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGgoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCsyfSwgaW4gaFxuJworICAgICAgICAgICAgJyAgICByZXR1cm4gaChjb3VudC0xKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCsyfSwgaW4gaFxuJworICAgICAgICAgICAgJyAgICByZXR1cm4gaChjb3VudC0xKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCsyfSwgaW4gaFxuJworICAgICAgICAgICAgJyAgICByZXR1cm4gaChjb3VudC0xKVxuJworICAgICAgICAgICAgJyAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgNiBtb3JlIHRpbWVzXVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCszfSwgaW4gaFxuJworICAgICAgICAgICAgJyAgICBnKClcbicKKyAgICAgICAgKQorICAgICAgICBleHBlY3RlZCA9IChyZXN1bHRfaCArIHJlc3VsdF9nKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgYWN0dWFsID0gc3RkZXJyX2guZ2V0dmFsdWUoKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3RyYWNlYmFja19weXRob24oc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheSh0cmFjZWJhY2sucHJpbnRfZXhjKQorCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV90cmFjZWJhY2tfY3B5dGhvbl9pbnRlcm5hbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGV4Y2VwdGlvbl9wcmludAorICAgICAgICBkZWYgcmVuZGVyX2V4YygpOgorICAgICAgICAgICAgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIGV4Y2VwdGlvbl9wcmludChleGNfdmFsdWUpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheShyZW5kZXJfZXhjKQorCiAgICAgZGVmIHRlc3RfZm9ybWF0X3N0YWNrKHNlbGYpOgogICAgICAgICBkZWYgZm10KCk6CiAgICAgICAgICAgICByZXR1cm4gdHJhY2ViYWNrLmZvcm1hdF9zdGFjaygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQppbmRleCBkYTg5YTlhLi43OTBhYjdlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKQEAgLTExLDkgKzExLDE1IEBACiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgX3Rlc3RjYXBpCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3Rlc3RjYXBpID0gTm9uZQorCiAKIEVNUFRZX1NUUklOR19TSVpFID0gc3lzLmdldHNpemVvZihiJycpCiAKKwogZGVmIGdldF9mcmFtZXMobmZyYW1lLCBsaW5lbm9fZGVsdGEpOgogICAgIGZyYW1lcyA9IFtdCiAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpCkBAIC0zNywyOCArNDMsMzEgQEAKIGRlZiBjcmVhdGVfc25hcHNob3RzKCk6CiAgICAgdHJhY2ViYWNrX2xpbWl0ID0gMgogCisgICAgIyBfdHJhY2VtYWxsb2MuX2dldF90cmFjZXMoKSByZXR1cm5zIGEgbGlzdCBvZiAoZG9tYWluLCBzaXplLAorICAgICMgdHJhY2ViYWNrX2ZyYW1lcykgdHVwbGVzLiB0cmFjZWJhY2tfZnJhbWVzIGlzIGEgdHVwbGUgb2YgKGZpbGVuYW1lLAorICAgICMgbGluZV9udW1iZXIpIHR1cGxlcy4KICAgICByYXdfdHJhY2VzID0gWwotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICgyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCiAKLSAgICAgICAgKDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAogCi0gICAgICAgICg3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAogICAgIF0KICAgICBzbmFwc2hvdCA9IHRyYWNlbWFsbG9jLlNuYXBzaG90KHJhd190cmFjZXMsIHRyYWNlYmFja19saW1pdCkKIAogICAgIHJhd190cmFjZXMyID0gWwotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICgyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCi0gICAgICAgICg1MDAwLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICgyLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICgyLCA1MDAwLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCiAKLSAgICAgICAgKDQwMCwgKCgnYy5weScsIDU3OCksKSksCisgICAgICAgICg0LCA0MDAsICgoJ2MucHknLCA1NzgpLCkpLAogICAgIF0KICAgICBzbmFwc2hvdDIgPSB0cmFjZW1hbGxvYy5TbmFwc2hvdChyYXdfdHJhY2VzMiwgdHJhY2ViYWNrX2xpbWl0KQogCkBAIC0xMjYsNyArMTM1LDcgQEAKIAogICAgIGRlZiBmaW5kX3RyYWNlKHNlbGYsIHRyYWNlcywgdHJhY2ViYWNrKToKICAgICAgICAgZm9yIHRyYWNlIGluIHRyYWNlczoKLSAgICAgICAgICAgIGlmIHRyYWNlWzFdID09IHRyYWNlYmFjay5fZnJhbWVzOgorICAgICAgICAgICAgaWYgdHJhY2VbMl0gPT0gdHJhY2ViYWNrLl9mcmFtZXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNlCiAKICAgICAgICAgc2VsZi5mYWlsKCJ0cmFjZSBub3QgZm91bmQiKQpAQCAtMTQwLDcgKzE0OSw3IEBACiAgICAgICAgIHRyYWNlID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqX3RyYWNlYmFjaykKIAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodHJhY2UsIHR1cGxlKQotICAgICAgICBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlYmFjayA9IHRyYWNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgb2JqX3NpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2ViYWNrLCBvYmpfdHJhY2ViYWNrLl9mcmFtZXMpCiAKQEAgLTE2Nyw5ICsxNzYsOCBAQAogCiAgICAgICAgIHRyYWNlMSA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9iajFfdHJhY2ViYWNrKQogICAgICAgICB0cmFjZTIgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmoyX3RyYWNlYmFjaykKLSAgICAgICAgc2l6ZTEsIHRyYWNlYmFjazEgPSB0cmFjZTEKLSAgICAgICAgc2l6ZTIsIHRyYWNlYmFjazIgPSB0cmFjZTIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZWJhY2syLCB0cmFjZWJhY2sxKQorICAgICAgICBkb21haW4xLCBzaXplMSwgdHJhY2ViYWNrMSA9IHRyYWNlMQorICAgICAgICBkb21haW4yLCBzaXplMiwgdHJhY2ViYWNrMiA9IHRyYWNlMgogICAgICAgICBzZWxmLmFzc2VydElzKHRyYWNlYmFjazIsIHRyYWNlYmFjazEpCiAKICAgICBkZWYgdGVzdF9nZXRfdHJhY2VkX21lbW9yeShzZWxmKToKQEAgLTI5Miw3ICszMDAsNyBAQAogICAgIG1heERpZmYgPSA0MDAwCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfc25hcHNob3Qoc2VsZik6Ci0gICAgICAgIHJhd190cmFjZXMgPSBbKDUsICgoJ2EucHknLCAyKSwpKV0KKyAgICAgICAgcmF3X3RyYWNlcyA9IFsoMCwgNSwgKCgnYS5weScsIDIpLCkpXQogCiAgICAgICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKICAgICAgICAgICAgIHN0YWNrLmVudGVyX2NvbnRleHQocGF0Y2gub2JqZWN0KHRyYWNlbWFsbG9jLCAnaXNfdHJhY2luZycsCkBAIC0zMjIsMTEgKzMzMCwxMSBAQAogICAgICAgICAjIGV4Y2x1ZGUgYi5weQogICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKICAgICAgICAgXSkKIAogICAgICAgICAjIGZpbHRlcl90cmFjZXMoKSBtdXN0IG5vdCB0b3VjaCB0aGUgb3JpZ2luYWwgc25hcHNob3QKQEAgLTMzNSwxMCArMzQzLDEwIEBACiAgICAgICAgICMgb25seSBpbmNsdWRlIHR3byBsaW5lcyBvZiBhLnB5CiAgICAgICAgIHNuYXBzaG90NCA9IHNuYXBzaG90My5maWx0ZXJfdHJhY2VzKChmaWx0ZXIyLCBmaWx0ZXIzKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDQudHJhY2VzLl90cmFjZXMsIFsKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogICAgICAgICBdKQogCiAgICAgICAgICMgTm8gZmlsdGVyOiBqdXN0IGR1cGxpY2F0ZSB0aGUgc25hcHNob3QKQEAgLTM0OSw2ICszNTcsNTQgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNuYXBzaG90LmZpbHRlcl90cmFjZXMsIGZpbHRlcjEpCiAKKyAgICBkZWYgdGVzdF9maWx0ZXJfdHJhY2VzX2RvbWFpbihzZWxmKToKKyAgICAgICAgc25hcHNob3QsIHNuYXBzaG90MiA9IGNyZWF0ZV9zbmFwc2hvdHMoKQorICAgICAgICBmaWx0ZXIxID0gdHJhY2VtYWxsb2MuRmlsdGVyKEZhbHNlLCAiYS5weSIsIGRvbWFpbj0xKQorICAgICAgICBmaWx0ZXIyID0gdHJhY2VtYWxsb2MuRmlsdGVyKFRydWUsICJhLnB5IiwgZG9tYWluPTEpCisKKyAgICAgICAgb3JpZ2luYWxfdHJhY2VzID0gbGlzdChzbmFwc2hvdC50cmFjZXMuX3RyYWNlcykKKworICAgICAgICAjIGV4Y2x1ZGUgYS5weSBvZiBkb21haW4gMQorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKworICAgICAgICAjIGluY2x1ZGUgZG9tYWluIDEKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfdHJhY2VzX2RvbWFpbl9maWx0ZXIoc2VsZik6CisgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKKyAgICAgICAgZmlsdGVyMSA9IHRyYWNlbWFsbG9jLkRvbWFpbkZpbHRlcihGYWxzZSwgZG9tYWluPTMpCisgICAgICAgIGZpbHRlcjIgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoVHJ1ZSwgZG9tYWluPTMpCisKKyAgICAgICAgIyBleGNsdWRlIGRvbWFpbiAyCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKKyAgICAgICAgXSkKKworICAgICAgICAjIGluY2x1ZGUgZG9tYWluIDIKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMiwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCiAgICAgZGVmIHRlc3Rfc25hcHNob3RfZ3JvdXBfYnlfbGluZShzZWxmKToKICAgICAgICAgc25hcHNob3QsIHNuYXBzaG90MiA9IGNyZWF0ZV9zbmFwc2hvdHMoKQogICAgICAgICB0Yl8wID0gdHJhY2ViYWNrX2xpbmVubygnPHVua25vd24+JywgMCkKQEAgLTgxNiwxMiArODcyLDEyMSBAQAogICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctWCcsICd0cmFjZW1hbGxvYycsICctYycsIGNvZGUpCiAKIAorQHVuaXR0ZXN0LnNraXBJZihfdGVzdGNhcGkgaXMgTm9uZSwgJ25lZWQgX3Rlc3RjYXBpJykKK2NsYXNzIFRlc3RDQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBtYXhEaWZmID0gODAgKiAyMAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiB0cmFjZW1hbGxvYy5pc190cmFjaW5nKCk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0cmFjZW1hbGxvYyBtdXN0IGJlIHN0b3BwZWQgYmVmb3JlIHRoZSB0ZXN0IikKKworICAgICAgICBzZWxmLmRvbWFpbiA9IDUKKyAgICAgICAgc2VsZi5zaXplID0gMTIzCisgICAgICAgIHNlbGYub2JqID0gYWxsb2NhdGVfYnl0ZXMoc2VsZi5zaXplKVswXQorCisgICAgICAgICMgZm9yIHRoZSB0eXBlICJvYmplY3QiLCBpZChvYmopIGlzIHRoZSBhZGRyZXNzIG9mIGl0cyBtZW1vcnkgYmxvY2suCisgICAgICAgICMgVGhpcyB0eXBlIGlzIG5vdCB0cmFja2VkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3RvcgorICAgICAgICBzZWxmLnB0ciA9IGlkKHNlbGYub2JqKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdG9wKCkKKworICAgIGRlZiBnZXRfdHJhY2ViYWNrKHNlbGYpOgorICAgICAgICBmcmFtZXMgPSBfdGVzdGNhcGkudHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIpCisgICAgICAgIGlmIGZyYW1lcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiB0cmFjZW1hbGxvYy5UcmFjZWJhY2soZnJhbWVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiB0cmFjayhzZWxmLCByZWxlYXNlX2dpbD1GYWxzZSwgbmZyYW1lPTEpOgorICAgICAgICBmcmFtZXMgPSBnZXRfZnJhbWVzKG5mcmFtZSwgMikKKyAgICAgICAgX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX3RyYWNrKHNlbGYuZG9tYWluLCBzZWxmLnB0ciwgc2VsZi5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9naWwpCisgICAgICAgIHJldHVybiBmcmFtZXMKKworICAgIGRlZiB1bnRyYWNrKHNlbGYpOgorICAgICAgICBfdGVzdGNhcGkudHJhY2VtYWxsb2NfdW50cmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIpCisKKyAgICBkZWYgZ2V0X3RyYWNlZF9tZW1vcnkoc2VsZik6CisgICAgICAgICMgR2V0IHRoZSB0cmFjZWQgc2l6ZSBpbiB0aGUgZG9tYWluCisgICAgICAgIHNuYXBzaG90ID0gdHJhY2VtYWxsb2MudGFrZV9zbmFwc2hvdCgpCisgICAgICAgIGRvbWFpbl9maWx0ZXIgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoVHJ1ZSwgc2VsZi5kb21haW4pCisgICAgICAgIHNuYXBzaG90ID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcyhbZG9tYWluX2ZpbHRlcl0pCisgICAgICAgIHJldHVybiBzdW0odHJhY2Uuc2l6ZSBmb3IgdHJhY2UgaW4gc25hcHNob3QudHJhY2VzKQorCisgICAgZGVmIGNoZWNrX3RyYWNrKHNlbGYsIHJlbGVhc2VfZ2lsKToKKyAgICAgICAgbmZyYW1lID0gNQorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydChuZnJhbWUpCisKKyAgICAgICAgc2l6ZSA9IHRyYWNlbWFsbG9jLmdldF90cmFjZWRfbWVtb3J5KClbMF0KKworICAgICAgICBmcmFtZXMgPSBzZWxmLnRyYWNrKHJlbGVhc2VfZ2lsLCBuZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2ViYWNrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF90cmFjZWRfbWVtb3J5KCksIHNlbGYuc2l6ZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3RyYWNrKEZhbHNlKQorCisgICAgZGVmIHRlc3RfdHJhY2tfd2l0aG91dF9naWwoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1RyYWNrKCkgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwKKyAgICAgICAgIyB3b3JrcyB0b28KKyAgICAgICAgc2VsZi5jaGVja190cmFjayhUcnVlKQorCisgICAgZGVmIHRlc3RfdHJhY2tfYWxyZWFkeV90cmFja2VkKHNlbGYpOgorICAgICAgICBuZnJhbWUgPSA1CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KG5mcmFtZSkKKworICAgICAgICAjIHRyYWNrIGEgZmlyc3QgdGltZQorICAgICAgICBzZWxmLnRyYWNrKCkKKworICAgICAgICAjIGNhbGxpbmcgX1B5VHJhY2VNYWxsb2NfVHJhY2soKSBtdXN0IHJlbW92ZSB0aGUgb2xkIHRyYWNlIGFuZCBhZGQKKyAgICAgICAgIyBhIG5ldyB0cmFjZSB3aXRoIHRoZSBuZXcgdHJhY2ViYWNrCisgICAgICAgIGZyYW1lcyA9IHNlbGYudHJhY2sobmZyYW1lPW5mcmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF90cmFjZWJhY2soKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZW1hbGxvYy5UcmFjZWJhY2soZnJhbWVzKSkKKworICAgIGRlZiB0ZXN0X3VudHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKworICAgICAgICBzZWxmLnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCBzZWxmLnNpemUpCisKKyAgICAgICAgIyB1bnRyYWNrIG11c3QgcmVtb3ZlIHRoZSB0cmFjZQorICAgICAgICBzZWxmLnVudHJhY2soKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmdldF90cmFjZWJhY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF90cmFjZWRfbWVtb3J5KCksIDApCisKKyAgICAgICAgIyBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1VudHJhY2soKSBtdWx0aXBsZSB0aW1lcyBtdXN0IG5vdCBjcmFzaAorICAgICAgICBzZWxmLnVudHJhY2soKQorICAgICAgICBzZWxmLnVudHJhY2soKQorCisgICAgZGVmIHRlc3Rfc3RvcF90cmFjayhzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQoKQorICAgICAgICB0cmFjZW1hbGxvYy5zdG9wKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisKKyAgICBkZWYgdGVzdF9zdG9wX3VudHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKyAgICAgICAgc2VsZi50cmFjaygpCisKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYudW50cmFjaygpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBUZXN0VHJhY2VtYWxsb2NFbmFibGVkLAogICAgICAgICBUZXN0U25hcHNob3QsCiAgICAgICAgIFRlc3RGaWx0ZXJzLAogICAgICAgICBUZXN0Q29tbWFuZExpbmUsCisgICAgICAgIFRlc3RDQVBJLAogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkgYi9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CmluZGV4IDQ5MGU3MjMuLjQ2MjY2NWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQpAQCAtMSw0ICsxLDMgQEAKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkgYi9MaWIvdGVzdC90ZXN0X3R0a190ZXh0b25seS5weQppbmRleCA1NjZmYzlkLi43NTQwYTQzMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIFNraXAgdGhpcyB0ZXN0IGlmIF90a2ludGVyIGRvZXMgbm90IGV4aXN0LgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKaW5kZXggNWU3NDExNS4uMzgyY2EwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CkBAIC00OCw2ICs0OCw3IEBACiAgICAgZGVmIHRlc3RfZmxvYXRfY29uc3RydWN0b3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICc1XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJzVfNVwwJykKIAogICAgIGRlZiB0ZXN0X3plcm9fZGl2aXNpb24oc2VsZik6CiAgICAgICAgIHRyeTogNS4wIC8gMC4wCkBAIC0xMDAwLDYgKzEwMDEsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgWCA9IHR5cGVzLm5ld19jbGFzcygiWCIsIChpbnQoKSwgQykpCiAKKyAgICBkZWYgdGVzdF9vbmVfYXJndW1lbnRfdHlwZShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICd0eXBlLl9fbmV3X18oKSB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzICgxIGdpdmVuKScKKworICAgICAgICAjIE9ubHkgdHlwZSBpdHNlbGYgY2FuIHVzZSB0aGUgb25lLWFyZ3VtZW50IGZvcm0gKCMyNzE1NykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKDUpLCBpbnQpCisKKyAgICAgICAgY2xhc3MgTSh0eXBlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgTSg1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCBleHBlY3RlZF9tZXNzYWdlKQorCisgICAgICAgIGNsYXNzIE4odHlwZSwgbWV0YWNsYXNzPU0pOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBOKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksIGV4cGVjdGVkX21lc3NhZ2UpCisKIAogY2xhc3MgU2ltcGxlTmFtZXNwYWNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKaW5kZXggODFlNDlkNi4uMDczNzE0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwpAQCAtOTg2LDYgKzk4NywxOSBAQAogICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnQuX19mb3JtYXRfXyhzZWxmICogMiwgZm9ybWF0X3NwZWMpCiAKKyAgICAgICAgY2xhc3MgTToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICBzZWxmLnggPSB4CisgICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdNKCcgKyBzZWxmLnggKyAnKScKKyAgICAgICAgICAgIF9fc3RyX18gPSBOb25lCisKKyAgICAgICAgY2xhc3MgTjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICBzZWxmLnggPSB4CisgICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdOKCcgKyBzZWxmLnggKyAnKScKKyAgICAgICAgICAgIF9fZm9ybWF0X18gPSBOb25lCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXQoKSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycuZm9ybWF0KCksICdhYmMnKQpAQCAtMTIwMCw2ICsxMjE0LDE2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiMHh7OjB7OmR9WH0iLmZvcm1hdCgweDAsMTYpLCAiMHgwMDAwMDAwMDAwMDAwMDAwIikKIAorICAgICAgICAjIEJsb2NraW5nIGZhbGxiYWNrCisgICAgICAgIG0gPSBNKCdkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFyfSIuZm9ybWF0KG0pLCAnTShkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInshc30iLmZvcm1hdCwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAie30iLmZvcm1hdCwgbSkKKyAgICAgICAgbiA9IE4oJ2RhdGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7IXJ9Ii5mb3JtYXQobiksICdOKGRhdGEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFzfSIuZm9ybWF0KG4pLCAnTihkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInt9Ii5mb3JtYXQsIG4pCisKICAgICBkZWYgdGVzdF9mb3JtYXRfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmZvcm1hdF9tYXAoe30pLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYScuZm9ybWF0X21hcCh7fSksICdhJykKQEAgLTE1NDEsNyArMTU2NSw3IEBACiAgICAgICAgICAgICAoJysnLCBiJystJyksCiAgICAgICAgICAgICAoJystJywgYicrLS0nKSwKICAgICAgICAgICAgICgnKz8nLCBiJystPycpLAotICAgICAgICAgICAgKCdcPycsIGInK0FGdz8nKSwKKyAgICAgICAgICAgIChyJ1w/JywgYicrQUZ3PycpLAogICAgICAgICAgICAgKCcrPycsIGInKy0/JyksCiAgICAgICAgICAgICAocidcXD8nLCBiJytBRndBWEE/JyksCiAgICAgICAgICAgICAocidcXFw/JywgYicrQUZ3QVhBQmM/JyksCkBAIC0yNDIwLDcgKzI0NDQsNyBAQAogICAgICAgICAjIG5vbi1hc2NpaSBmb3JtYXQsIGFzY2lpIGFyZ3VtZW50OiBlbnN1cmUgdGhhdCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKQogICAgICAgICAjIHJhaXNlcyBhbiBlcnJvcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAnXlB5VW5pY29kZV9Gcm9tRm9ybWF0VlwoXCkgZXhwZWN0cyBhbiBBU0NJSS1lbmNvZGVkIGZvcm1hdCAnCisgICAgICAgICAgICByJ15QeVVuaWNvZGVfRnJvbUZvcm1hdFZcKFwpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgJwogICAgICAgICAgICAgJ3N0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4ZTkkJywKICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tRm9ybWF0LCBiJ3VuaWNvZGVceGU5PSVzJywgJ2FzY2lpJykKIApAQCAtMjc5Miw3ICsyODE2LDYgQEAKICAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHNlY29uZCBjYWxsIHJldHVybnMgdGhlIHNhbWUgcmVzdWx0CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX3NfaGFzaChzKSwgY2hyKGspLmVuY29kZSgpICogKGkgKyAxKSkKIAotCiBjbGFzcyBTdHJpbmdNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9mb3JtYXR0ZXJfcGFyc2VyKHNlbGYpOgogICAgICAgICBkZWYgcGFyc2UoZm9ybWF0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGVfZnVuY3Rpb25zLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGVfZnVuY3Rpb25zLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfaWRlbnRpZmllcnMucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQppbmRleCA2ZWNjOTEzLi40ZmMxMWVjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKQEAgLTIwLDcgKzIwLDcgQEAKIGNsYXNzIFVuaWNvZGVNZXRob2RzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHVwZGF0ZSB0aGlzLCBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcwotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnNTk3MTc2MDg3MmIyZjk4YmI5YzcwMWU2YzBkYjMyNzNkNzU2YjNlYycKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2MxZmE5ODY3NGE2ODNhYThhOGQ4ZGVlMGM4NDQ5NGY4ZDM2MzQ2ZTYnCiAKICAgICBkZWYgdGVzdF9tZXRob2RfY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtODAsNyArODAsNyBAQAogCiAgICAgIyBVcGRhdGUgdGhpcyBpZiB0aGUgZGF0YWJhc2UgY2hhbmdlcy4gTWFrZSBzdXJlIHRvIGRvIGEgZnVsbCByZWJ1aWxkCiAgICAgIyAoZS5nLiAnbWFrZSBkaXN0Y2xlYW4gJiYgbWFrZScpIHRvIGdldCB0aGUgY29ycmVjdCBjaGVja3N1bS4KLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzVlNzQ4MjdjZDA3ZjllNTQ2YTMwZjM0YjdiY2Y2Y2MyZWFjMzhjOGMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdmODkxYjFlNjQzMGM3MTI1MzFiOWJjOTM1YTM4ZTIyZDc4YmExYmYzJwogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBkYXRhID0gW10KICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC0yMjIsNiArMjIyLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWF3KCdcdTIwMTAnKSwgJ0EnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVhdygnXFUwMDAyMDAwMCcpLCAnVycpCiAKKyAgICBkZWYgdGVzdF9lYXN0X2FzaWFuX3dpZHRoXzlfMF9jaGFuZ2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIudWNkXzNfMl8wLmVhc3RfYXNpYW5fd2lkdGgoJ1x1MjMxYScpLCAnTicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5lYXN0X2FzaWFuX3dpZHRoKCdcdTIzMWEnKSwgJ1cnKQorCiBjbGFzcyBVbmljb2RlTWlzY1Rlc3QoVW5pY29kZURhdGFiYXNlVGVzdCk6CiAKICAgICBkZWYgdGVzdF9mYWlsZWRfaW1wb3J0X2R1cmluZ19jb21waWxpbmcoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CmluZGV4IGQxY2NiMzguLjNmY2IxOGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5CkBAIC0xMTcsNiArMTE3LDI3IEBACiAgICAgICAuLi4KICAgICB0ZXN0LnRlc3RfdW5wYWNrLkJvem9FcnJvcgogCitBbGxvdyB1bnBhY2tpbmcgZW1wdHkgaXRlcmFibGVzCisKKyAgICA+Pj4gKCkgPSBbXQorICAgID4+PiBbXSA9ICgpCisgICAgPj4+IFtdID0gW10KKyAgICA+Pj4gKCkgPSAoKQorCitVbnBhY2tpbmcgbm9uLWl0ZXJhYmxlcyBzaG91bGQgcmFpc2UgVHlwZUVycm9yCisKKyAgICA+Pj4gKCkgPSA0MgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogJ2ludCcgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZQorCitVbnBhY2tpbmcgdG8gYW4gZW1wdHkgaXRlcmFibGUgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IKKworICAgID4+PiAoKSA9IFs0Ml0KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBWYWx1ZUVycm9yOiB0b28gbWFueSB2YWx1ZXMgdG8gdW5wYWNrIChleHBlY3RlZCAwKQorCiAiIiIKIAogX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQppbmRleCA3NDM0NmI0Li42YmU4ZjU1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weQpAQCAtMzU3LDcgKzM1Nyw2IEBACiBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6Ci0gICAgaW1wb3J0IHN5cwogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF91bnBhY2tfZXgKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfdW5wYWNrX2V4LCB2ZXJib3NlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQppbmRleCAyNDc1OThhLi40M2VhNmI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQpAQCAtNDY5LDEwICs0NjksMTEgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wsICJzc2wgbW9kdWxlIHJlcXVpcmVkIikKICAgICBkZWYgdGVzdF9jYWZpbGVfYW5kX2NvbnRleHQoc2VsZik6CiAgICAgICAgIGNvbnRleHQgPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAotICAgICAgICAgICAgICAgICJodHRwczovL2xvY2FsaG9zdCIsIGNhZmlsZT0iL25vbmV4aXN0ZW50L3BhdGgiLCBjb250ZXh0PWNvbnRleHQKLSAgICAgICAgICAgICkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oCisgICAgICAgICAgICAgICAgICAgICJodHRwczovL2xvY2FsaG9zdCIsIGNhZmlsZT0iL25vbmV4aXN0ZW50L3BhdGgiLCBjb250ZXh0PWNvbnRleHQKKyAgICAgICAgICAgICAgICApCiAKIGNsYXNzIHVybG9wZW5fRGF0YVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHVybG9wZW4oKSBvcGVuaW5nIGEgZGF0YSBVUkwuIiIiCkBAIC03MjksNyArNzMwLDcgQEAKIAogCiBjbGFzcyBRdW90aW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciB1cmxsaWIucXVvdGUoKSBhbmQgdXJsbGliLnF1b3RlX3BsdXMoKQorICAgIHIiIiJUZXN0cyBmb3IgdXJsbGliLnF1b3RlKCkgYW5kIHVybGxpYi5xdW90ZV9wbHVzKCkKIAogICAgIEFjY29yZGluZyB0byBSRkMgMjM5NiAoVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVycyksIHRvIGVzY2FwZSBhCiAgICAgY2hhcmFjdGVyIHlvdSB3cml0ZSBpdCBhcyAnJScgKyA8MiBjaGFyYWN0ZXIgVVMtQVNDSUkgaGV4IHZhbHVlPi4KQEAgLTgwNCw3ICs4MDUsNyBAQAogICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBiZSBxdW90ZWQgYXJlIGJ5IGRlZmF1bHQgc2FucwogICAgICAgICAjIHNwYWNlIChzZXBhcmF0ZSB0ZXN0IGZvciB0aGF0KS4KICAgICAgICAgc2hvdWxkX3F1b3RlID0gW2NocihudW0pIGZvciBudW0gaW4gcmFuZ2UoMzIpXSAjIEZvciAweDAwIC0gMHgxRgotICAgICAgICBzaG91bGRfcXVvdGUuYXBwZW5kKCc8PiMlInt9fFxeW11gJykKKyAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZChyJzw+IyUie318XF5bXWAnKQogICAgICAgICBzaG91bGRfcXVvdGUuYXBwZW5kKGNocigxMjcpKSAjIEZvciAweDdGCiAgICAgICAgIHNob3VsZF9xdW90ZSA9ICcnLmpvaW4oc2hvdWxkX3F1b3RlKQogICAgICAgICBmb3IgY2hhciBpbiBzaG91bGRfcXVvdGU6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKaW5kZXggZWRhN2NjYy4uMzQzMjlmOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQpAQCAtNyw2ICs3LDggQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBhcnJheQogaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgc3VicHJvY2VzcwogCiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKICMgVGhlIHByb3h5IGJ5cGFzcyBtZXRob2QgaW1wb3J0ZWQgYmVsb3cgaGFzIGxvZ2ljIHNwZWNpZmljIHRvIHRoZSBPU1gKQEAgLTMzNSw3ICszMzcsOCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fdHVubmVsX2hlYWRlcnMuY2xlYXIoKQogCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz1Ob25lKToKKyAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPU5vbmUsICosCisgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAogICAgICAgICBzZWxmLnNlbGVjdG9yID0gdXJsCiAgICAgICAgIGlmIGhlYWRlcnMgaXMgbm90IE5vbmU6CkBAIC0zNDMsNiArMzQ2LDcgQEAKICAgICAgICAgc2VsZi5yZXFfaGVhZGVycy5zb3J0KCkKICAgICAgICAgaWYgYm9keToKICAgICAgICAgICAgIHNlbGYuZGF0YSA9IGJvZHkKKyAgICAgICAgc2VsZi5lbmNvZGVfY2h1bmtlZCA9IGVuY29kZV9jaHVua2VkCiAgICAgICAgIGlmIHNlbGYucmFpc2Vfb25fZW5kaGVhZGVyczoKICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoKQogCkBAIC05MDgsNDEgKzkxMiwxMTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLnVucmVkaXJlY3RlZF9oZHJzWyJIb3N0Il0sICJiYXoiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEudW5yZWRpcmVjdGVkX2hkcnNbIlNwYW0iXSwgImZvbyIpCiAKLSAgICAgICAgIyBDaGVjayBpdGVyYWJsZSBib2R5IHN1cHBvcnQKLSAgICAgICAgZGVmIGl0ZXJhYmxlX2JvZHkoKToKLSAgICAgICAgICAgIHlpZWxkIGIib25lIgotICAgICAgICAgICAgeWllbGQgYiJ0d28iCi0gICAgICAgICAgICB5aWVsZCBiInRocmVlIgorICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9maWxlKHNlbGYpOgorICAgICAgICAjIEEgcmVndWxhciBmaWxlIC0gY2h1bmtlZCBlbmNvZGluZyBpcyB1c2VkIHVubGVzcyBDb250ZW50IExlbmd0aCBpcworICAgICAgICAjIGFscmVhZHkgc2V0LgogCi0gICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMTF9OgotICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGl0ZXJhYmxlX2JvZHkoKSwgaGVhZGVycykKLSAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgotICAgICAgICAgICAgICAgICMgSGF2aW5nIGFuIGl0ZXJhYmxlIGJvZHkgd2l0aG91dCBhIENvbnRlbnQtTGVuZ3RoIHNob3VsZAotICAgICAgICAgICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaC5kb19yZXF1ZXN0XywgcmVxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKIAotICAgICAgICAjIEEgZmlsZSBvYmplY3QuCi0gICAgICAgICMgVGVzdCBvbmx5IENvbnRlbnQtTGVuZ3RoIGF0dHJpYnV0ZSBvZiByZXF1ZXN0LgorICAgICAgICBmaWxlX29iaiA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShtb2RlPSd3K2InLCBkZWxldGU9RmFsc2UpCisgICAgICAgIGZpbGVfcGF0aCA9IGZpbGVfb2JqLm5hbWUKKyAgICAgICAgZmlsZV9vYmouY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBmaWxlX3BhdGgpCiAKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmLCB7fSkKKyAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgdGUgPSBuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZSwgImNodW5rZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGYsIHsiQ29udGVudC1MZW5ndGgiOiAzMH0pCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCJUcmFuc2Zlci1lbmNvZGluZyIpKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2ZpbGVvYmooc2VsZik6CisgICAgICAgICMgQSBmaWxlIG9iamVjdCAtIGNodW5rZWQgZW5jb2RpbmcgaXMgdXNlZAorICAgICAgICAjIHVubGVzcyBDb250ZW50IExlbmd0aCBpcyBhbHJlYWR5IHNldC4KKyAgICAgICAgIyAoTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHN1YnRsZSBkaWZmZXJlbmNlcyB0byBhIHJlZ3VsYXIKKyAgICAgICAgIyBmaWxlLCB0aGF0IGlzIHdoeSB3ZSBhcmUgdGVzdGluZyBib3RoIGNhc2VzLikKKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQogICAgICAgICBmaWxlX29iaiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBmaWxlX29iai53cml0ZShiIlNvbWV0aGluZ1xuU29tZXRoaW5nXG5Tb21ldGhpbmdcbiIpCiAKLSAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAzMH06Ci0gICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmlsZV9vYmosIGhlYWRlcnMpCi0gICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKLSAgICAgICAgICAgICAgICAjIEhhdmluZyBhbiBpdGVyYWJsZSBib2R5IHdpdGhvdXQgYSBDb250ZW50LUxlbmd0aCBzaG91bGQKLSAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGguZG9fcmVxdWVzdF8sIHJlcSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCB7fSkKKyAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKSkKKworICAgICAgICBoZWFkZXJzID0geyJDb250ZW50LUxlbmd0aCI6IDMwfQorICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmlsZV9vYmosIGhlYWRlcnMpCisgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCJUcmFuc2Zlci1lbmNvZGluZyIpKQogCiAgICAgICAgIGZpbGVfb2JqLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9waXBlKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSByZWFkaW5nIGZyb20gYSBwaXBlLgorICAgICAgICAjIEEgcGlwZSBjYW5ub3QgYmUgc2VlaydlZC4gIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhlCisgICAgICAgICMgY29udGVudCBsZW5ndGggdXAgZnJvbnQuICBUaHVzLCBkb19yZXF1ZXN0XygpIHNob3VsZCBmYWxsCisgICAgICAgICMgYmFjayB0byBUcmFuc2Zlci1lbmNvZGluZyBjaHVua2VkLgorCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCisKKyAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCByInBhc3MiXQorICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDMwfToKKyAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpIGFzIHByb2M6CisgICAgICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIHByb2Muc3Rkb3V0LCBoZWFkZXJzKQorICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzApCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfaXRlcmFibGUoc2VsZik6CisgICAgICAgICMgR2VuZXJpYyBpdGVyYWJsZS4gIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhlIGNvbnRlbnQKKyAgICAgICAgIyBsZW5ndGggdXAgZnJvbnQuICBGYWxsIGJhY2sgdG8gVHJhbnNmZXItZW5jb2RpbmcgY2h1bmtlZC4KKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCisgICAgICAgIGRlZiBpdGVyYWJsZV9ib2R5KCk6CisgICAgICAgICAgICB5aWVsZCBiIm9uZSIKKworICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDExfToKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBpdGVyYWJsZV9ib2R5KCksIGhlYWRlcnMpCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJyksIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaHVua2VkJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAxMSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9lbXB0eV9zZXEoc2VsZik6CisgICAgICAgICMgWmVyby1sZW5ndGggaXRlcmFibGUgYm9keSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBpdGVyYWJsZQorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIGgucGFyZW50ID0gTW9ja09wZW5lcigpCisgICAgICAgIHJlcSA9IGguZG9fcmVxdWVzdF8oUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSwgImNodW5rZWQiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcS5oYXNfaGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2FycmF5KHNlbGYpOgogICAgICAgICAjIGFycmF5LmFycmF5IEl0ZXJhYmxlIC0gQ29udGVudCBMZW5ndGggaXMgY2FsY3VsYXRlZAogCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCisKICAgICAgICAgaXRlcmFibGVfYXJyYXkgPSBhcnJheS5hcnJheSgiSSIsWzEsMiwzLDRdKQogCiAgICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMTZ9OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CmluZGV4IDY4YzUyM2EuLjcwYzRjMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKQEAgLTU1NywyNiArNTU3LDI4IEBACiAKICAgICBkZWYgdGVzdF9odHRwc193aXRoX2NhZmlsZShzZWxmKToKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICAjIEdvb2QgY2VydAotICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9sb2NhbGhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJ3ZSBjYXJlIGEgYml0IikKLSAgICAgICAgIyBCYWQgY2VydAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKLSAgICAgICAgIyBHb29kIGNlcnQsIGJ1dCBtaXNtYXRjaGluZyBob3N0bmFtZQotICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgIyBHb29kIGNlcnQKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9sb2NhbGhvc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCisgICAgICAgICAgICAjIEJhZCBjZXJ0CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICAgICAgIyBHb29kIGNlcnQsIGJ1dCBtaXNtYXRjaGluZyBob3N0bmFtZQorICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWRlZmF1bHQoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKICAgICAgICAgIyBTZWxmLXNpZ25lZCBjZXJ0IHNob3VsZCBmYWlsIHZlcmlmaWNhdGlvbiB3aXRoIHN5c3RlbSBjZXJ0aWZpY2F0ZSBzdG9yZQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206Ci0gICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGVmYXVsdD1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnVybG9wZW4oImh0dHBzOi8vbG9jYWxob3N0OiVzL2JpemFycmUiICUgaGFuZGxlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3NuaShzZWxmKToKICAgICAgICAgaWYgc3NsIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CmluZGV4IGI4MTE5MzAuLjk0OTcxNmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBzb2NrZXQKIGltcG9ydCB1cmxsaWIucmVxdWVzdAotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgZW1haWwubWVzc2FnZQogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CmluZGV4IDcxYWJjMTQuLjk5YzVjMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQpAQCAtNjA3LDI5ICs2MDcsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvcnQsIDgwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZ2V0dXJsKCksIHVybCkKIAotICAgICAgICAjIFZlcmlmeSBhbiBpbGxlZ2FsIHBvcnQgaXMgcmV0dXJuZWQgYXMgTm9uZQorICAgICAgICAjIFZlcmlmeSBhbiBpbGxlZ2FsIHBvcnQgcmFpc2VzIFZhbHVlRXJyb3IKICAgICAgICAgdXJsID0gYiJIVFRQOi8vV1dXLlBZVEhPTi5PUkc6NjU1MzYvZG9jLyNmcmFnIgogICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KHVybCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvcnQsIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAib3V0IG9mIHJhbmdlIik6CisgICAgICAgICAgICBwLnBvcnQKIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfYmFkX3BvcnQoc2VsZik6Ci0gICAgICAgICIiIkNoZWNrIGhhbmRsaW5nIG9mIG5vbi1pbnRlZ2VyIHBvcnRzLiIiIgotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KCJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsICJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCi0KLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZSgiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCAid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgICMgT25jZSBhZ2FpbiwgcmVwZWF0IG91cnNlbHZlcyB0byB0ZXN0IGJ5dGVzCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoYiJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsIGIid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UoYiJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsIGIid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQorICAgICAgICAiIiJDaGVjayBoYW5kbGluZyBvZiBpbnZhbGlkIHBvcnRzLiIiIgorICAgICAgICBmb3IgYnl0ZXMgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGZvciBwYXJzZSBpbiAodXJsbGliLnBhcnNlLnVybHNwbGl0LCB1cmxsaWIucGFyc2UudXJscGFyc2UpOgorICAgICAgICAgICAgICAgIGZvciBwb3J0IGluICgiZm9vIiwgIjEuNSIsICItMSIsICIweDEwIik6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJ5dGVzPWJ5dGVzLCBwYXJzZT1wYXJzZSwgcG9ydD1wb3J0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldGxvYyA9ICJ3d3cuZXhhbXBsZS5uZXQ6IiArIHBvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICJodHRwOi8vIiArIG5ldGxvYworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0bG9jID0gbmV0bG9jLmVuY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IHVybC5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBwYXJzZSh1cmwpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBuZXRsb2MpCisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAucG9ydAogCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlc193aXRob3V0X25ldGxvYyhzZWxmKToKICAgICAgICAgIyBUaGlzIGV4YW1wbGUgaXMgc3RyYWlnaHQgZnJvbSBSRkMgMzI2MS4gIEl0IGxvb2tzIGxpa2UgaXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CmluZGV4IDgzNTdmOGIuLjY2MmM3ZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQpAQCAtMSw2ICsxLDYgQEAKICMgQ2hlY2sgZXZlcnkgcGF0aCB0aHJvdWdoIGV2ZXJ5IG1ldGhvZCBvZiBVc2VyRGljdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1hcHBpbmdfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgbWFwcGluZ190ZXN0cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgY29sbGVjdGlvbnMKIApAQCAtMzAsNyArMzAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KG9uZT0xLCB0d289MiksIGQyKQogICAgICAgICAjIGl0ZW0gc2VxdWVuY2UgY29uc3RydWN0b3IKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChbKCdvbmUnLDEpLCAoJ3R3bycsMildKSwgZDIpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KGRpY3Q9Wygnb25lJywxKSwgKCd0d28nLDIpXSksIGQyKQogICAgICAgICAjIGJvdGggdG9nZXRoZXIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChbKCdvbmUnLDEpLCAoJ3R3bycsMildLCB0d289MywgdGhyZWU9NSksIGQzKQpAQCAtMTQ5LDcgKzE0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZGljdCcsIDQyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsZWN0aW9ucy5Vc2VyRGljdCh7fSwgZGljdD1Ob25lKS5pdGVtcygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdkaWN0JywgTm9uZSldKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxlY3Rpb25zLlVzZXJEaWN0KGRpY3Q9eydhJzogNDJ9KS5pdGVtcygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYScsIDQyKV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29sbGVjdGlvbnMuVXNlckRpY3QsIDQyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKaW5kZXggZjkyZTRkMy4uOGRlNmMxNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CkBAIC0xLDcgKzEsNyBAQAogIyBDaGVjayBldmVyeSBwYXRoIHRocm91Z2ggZXZlcnkgbWV0aG9kIG9mIFVzZXJMaXN0CiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgbGlzdF90ZXN0cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGNsYXNzIFVzZXJMaXN0VGVzdChsaXN0X3Rlc3RzLkNvbW1vblRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CmluZGV4IDliYzhlZGQuLjcxNTI4MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKQEAgLTEsOSArMSw4IEBACiAjIFVzZXJTdHJpbmcgaXMgYSB3cmFwcGVyIGFyb3VuZCB0aGUgbmF0aXZlIGJ1aWx0aW4gc3RyaW5nIHR5cGUuCiAjIFVzZXJTdHJpbmcgaW5zdGFuY2VzIHNob3VsZCBiZWhhdmUgc2ltaWxhciB0byBidWlsdGluIHN0cmluZyBvYmplY3RzLgogCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc3RyaW5nX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IHN0cmluZ190ZXN0cwogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyU3RyaW5nCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weSBiL0xpYi90ZXN0L3Rlc3RfdXRmOHNvdXJjZS5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3V0Zjhzb3VyY2UucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXUucHkgYi9MaWIvdGVzdC90ZXN0X3V1LnB5CmluZGV4IDI1ZmZmYmYuLmFkMmYyYzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91dS5weQpAQCAtOCw3ICs4LDYgQEAKIAogaW1wb3J0IHN5cywgb3MKIGltcG9ydCB1dQotZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IGlvCiAKIHBsYWludGV4dCA9IGIiVGhlIHNtb290aC1zY2FsZWQgcHl0aG9uIGNyZXB0IG92ZXIgdGhlIHNsZWVwaW5nIGRvZ1xuIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5IGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CmluZGV4IDM5OTlkMWYuLjBmZjk3OGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKQEAgLTE1LDE2ICsxNSw5IEBACiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBFbnZpcm9ubWVudFZhckd1YXJkLCBybXRyZWUpCi1pbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHZlbnYKIAotIyBwaXAgY3VycmVudGx5IHJlcXVpcmVzIHNzbCBzdXBwb3J0LCBzbyB3ZSBlbnN1cmUgd2UgaGFuZGxlCi0jIGl0IGJlaW5nIG1pc3NpbmcgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTc0NCkKLXRyeToKLSAgICBpbXBvcnQgc3NsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgc3NsID0gTm9uZQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMzksMTUgKzMyLDkgQEAKIHNraXBJblZlbnYgPSB1bml0dGVzdC5za2lwSWYoc3lzLnByZWZpeCAhPSBzeXMuYmFzZV9wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IG5vdCBhcHByb3ByaWF0ZSBpbiBhIHZlbnYnKQogCi0jIG9zLnBhdGguZXhpc3RzKCdudWwnKSBpcyBGYWxzZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTQxCi1pZiBvcy5kZXZudWxsLmxvd2VyKCkgPT0gJ251bCc6Ci0gICAgZmFpbHNPbldpbmRvd3MgPSB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKLWVsc2U6Ci0gICAgZGVmIGZhaWxzT25XaW5kb3dzKGYpOgotICAgICAgICByZXR1cm4gZgotCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgdmVudiB0ZXN0cy4iIiIKKyAgICBtYXhEaWZmID0gODAgKiA1MAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmVudl9kaXIgPSBvcy5wYXRoLnJlYWxwYXRoKHRlbXBmaWxlLm1rZHRlbXAoKSkKQEAgLTU3LDcgKzQ0LDcgQEAKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdJbmNsdWRlJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSAnYmluJwotICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lcycgJSBzeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICBzZWxmLmxpYiA9ICgnbGliJywgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ2luY2x1ZGUnCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCkBAIC0xMjEsNiArMTA4LDE3IEBACiAgICAgICAgICAgICBwcmludCgnICAgICVyJyAlIG9zLmxpc3RkaXIoYmQpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pLCAnRmlsZSAlciBzaG91bGQgZXhpc3QuJyAlIGZuKQogCisgICAgZGVmIHRlc3RfcHJvbXB0KHNlbGYpOgorICAgICAgICBlbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoc2VsZi5lbnZfZGlyKVsxXQorCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoKQorICAgICAgICBjb250ZXh0ID0gYnVpbGRlci5lbnN1cmVfZGlyZWN0b3JpZXMoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucHJvbXB0LCAnKCVzKSAnICUgZW52X25hbWUpCisKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihwcm9tcHQ9J015IHByb21wdCcpCisgICAgICAgIGNvbnRleHQgPSBidWlsZGVyLmVuc3VyZV9kaXJlY3RvcmllcyhzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5wcm9tcHQsICcoTXkgcHJvbXB0KSAnKQorCiAgICAgQHNraXBJblZlbnYKICAgICBkZWYgdGVzdF9wcmVmaXhlcyhzZWxmKToKICAgICAgICAgIiIiCkBAIC0zMTgsMTggKzMxNiwyMSBAQAogICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2Rpciwgd2l0aF9waXA9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0X3BpcF9ub3RfaW5zdGFsbGVkKCkKIAotICAgIEBmYWlsc09uV2luZG93cwotICAgIGRlZiB0ZXN0X2Rldm51bGxfZXhpc3RzX2FuZF9pc19lbXB0eShzZWxmKToKKyAgICBkZWYgdGVzdF9kZXZudWxsKHNlbGYpOgogICAgICAgICAjIEZpeCBmb3IgaXNzdWUgIzIwMDUzIHVzZXMgb3MuZGV2bnVsbCB0byBmb3JjZSBhIGNvbmZpZyBmaWxlIHRvCiAgICAgICAgICMgYXBwZWFyIGVtcHR5LiBIb3dldmVyIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDU0MSBtZWFucwogICAgICAgICAjIHRoYXQgZG9lc24ndCBjdXJyZW50bHkgd29yayBwcm9wZXJseSBvbiBXaW5kb3dzLiBPbmNlIHRoYXQgaXMKICAgICAgICAgIyBmaXhlZCwgdGhlICJ3aW5fbG9jYXRpb24iIHBhcnQgb2YgdGVzdF93aXRoX3BpcCBzaG91bGQgYmUgcmVzdG9yZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpKQogICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKIAotICAgICMgUmVxdWVzdGluZyBwaXAgZmFpbHMgd2l0aG91dCBTU0wgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTc0NCkKLSAgICBAdW5pdHRlc3Quc2tpcElmKHNzbCBpcyBOb25lLCBlbnN1cmVwaXAuX01JU1NJTkdfU1NMX01FU1NBR0UpCisgICAgICAgICMgSXNzdWUgIzIwNTQxOiBvcy5wYXRoLmV4aXN0cygnbnVsJykgaXMgRmFsc2Ugb24gV2luZG93cworICAgICAgICBpZiBvcy5kZXZudWxsLmxvd2VyKCkgPT0gJ251bCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpKQorCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdzb21lIGRlcGVuZGVuY2llcyBvZiBwaXAgaW1wb3J0IHRocmVhZGluZycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgbW9kdWxlIHVuY29uZGl0aW9uYWxseScpCiAgICAgIyBJc3N1ZSAjMjY2MTA6IHBpcC9wZXA0MjV0YWdzLnB5IHJlcXVpcmVzIGN0eXBlcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKaW5kZXggODRhNmZiNS4uYzExZWU0MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CkBAIC0yLDcgKzIsOSBAQAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IHJlCiBpbXBvcnQgc3lzCitpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUKQEAgLTcyMCw2ICs3MjIsMTcgQEAKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdHJlYW0uZ2V0dmFsdWUoKQogICAgICAgICBzZWxmLmFzc2VydEluKHRleHQsIHJlc3VsdCkKIAorICAgIGRlZiB0ZXN0X3Nob3d3YXJubXNnX21pc3Npbmcoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IF9zaG93d2Fybm1zZygpIG1pc3NpbmcgaXMgb2theS4KKyAgICAgICAgdGV4dCA9ICdkZWwgX3Nob3d3YXJubXNnIHRlc3QnCisgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKToKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKKyAgICAgICAgICAgIGRlbCBzZWxmLm1vZHVsZS5fc2hvd3dhcm5tc2cKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9vdXRwdXQoJ3N0ZGVycicpIGFzIHN0cmVhbToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKHRleHQpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCByZXN1bHQpCisKICAgICBkZWYgdGVzdF9zaG93d2FybmluZ19ub3RfY2FsbGFibGUoc2VsZik6CiAgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXNlbGYubW9kdWxlKToKICAgICAgICAgICAgIHNlbGYubW9kdWxlLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKQEAgLTgyMSwxMiArODM0LDQ0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfb2JqZWN0LCBleHBlY3RlZF9maWxlX2xpbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBmaWxlX29iamVjdC5nZXR2YWx1ZSgpKQogCisKIGNsYXNzIENXYXJuaW5nc0Rpc3BsYXlUZXN0cyhXYXJuaW5nc0Rpc3BsYXlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IGNfd2FybmluZ3MKIAogY2xhc3MgUHlXYXJuaW5nc0Rpc3BsYXlUZXN0cyhXYXJuaW5nc0Rpc3BsYXlUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIG1vZHVsZSA9IHB5X3dhcm5pbmdzCiAKKyAgICBkZWYgdGVzdF90cmFjZW1hbGxvYyhzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZSh0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICAgICAgZiA9IG9wZW4oX19maWxlX18pCisgICAgICAgICAgICAgICAgICAgICMgRW1pdCBSZXNvdXJjZVdhcm5pbmcKKyAgICAgICAgICAgICAgICAgICAgZiA9IE5vbmUKKworICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgIiIiKSkKKworICAgICAgICByZXMgPSBhc3NlcnRfcHl0aG9uX29rKCctV2QnLCAnLVgnLCAndHJhY2VtYWxsb2M9MicsIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHN0ZGVyciA9IHJlcy5lcnIuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKKyAgICAgICAgIyBub3JtYWxpemUgbmV3bGluZXMKKyAgICAgICAgc3RkZXJyID0gJ1xuJy5qb2luKHN0ZGVyci5zcGxpdGxpbmVzKCkpCisgICAgICAgIHN0ZGVyciA9IHJlLnN1YignPC4qPicsICc8Li4uPicsIHN0ZGVycikKKyAgICAgICAgZXhwZWN0ZWQgPSB0ZXh0d3JhcC5kZWRlbnQoJycnCisgICAgICAgICAgICB7Zm5hbWV9OjU6IFJlc291cmNlV2FybmluZzogdW5jbG9zZWQgZmlsZSA8Li4uPgorICAgICAgICAgICAgICBmID0gTm9uZQorICAgICAgICAgICAgT2JqZWN0IGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6CisgICAgICAgICAgICAgIEZpbGUgIntmbmFtZX0iLCBsaW5lbm8gMworICAgICAgICAgICAgICAgIGYgPSBvcGVuKF9fZmlsZV9fKQorICAgICAgICAgICAgICBGaWxlICJ7Zm5hbWV9IiwgbGluZW5vIDcKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgJycnKQorICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLmZvcm1hdChmbmFtZT1zdXBwb3J0LlRFU1RGTikuc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZGVyciwgZXhwZWN0ZWQpCisKIAogY2xhc3MgQ2F0Y2hXYXJuaW5nVGVzdHMoQmFzZVRlc3QpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhdmUucHkgYi9MaWIvdGVzdC90ZXN0X3dhdmUucHkKaW5kZXggM2VmZjc3My4uODY2NmY3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXZlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQpAQCAtMSw2ICsxLDYgQEAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBhdWRpb3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gYXVkaW9vcCBpbXBvcnQgYnl0ZXN3YXAKIGltcG9ydCBzeXMKIGltcG9ydCB3YXZlCkBAIC0xMDMsNSArMTAzLDExIEBACiAgICAgICAgIGZyYW1lcyA9IGJ5dGVzd2FwKGZyYW1lcywgNCkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydXQVZFX0ZPUk1BVF9QQ00nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCB3YXZlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKaW5kZXggNGNmYWE1NC4uYTQ3NGEwNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQpAQCAtOTE5LDcgKzkxOSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihyLCAiX19kaWN0X18iKSkKIAogICAgIGRlZiB0ZXN0X3N1YmNsYXNzX3JlZnNfd2l0aF9jeWNsZShzZWxmKToKLSAgICAgICAgIyBCdWcgIzMxMTAKKyAgICAgICAgIiIiQ29uZmlybSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMxMDAgaXMgZml4ZWQuIiIiCiAgICAgICAgICMgQW4gaW5zdGFuY2Ugb2YgYSB3ZWFrcmVmIHN1YmNsYXNzIGNhbiBoYXZlIGF0dHJpYnV0ZXMuCiAgICAgICAgICMgSWYgc3VjaCBhIHdlYWtyZWYgaG9sZHMgdGhlIG9ubHkgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0LAogICAgICAgICAjIGRlbGV0aW5nIHRoZSB3ZWFrcmVmIHdpbGwgZGVsZXRlIHRoZSBvYmplY3QuIEluIHRoaXMgY2FzZSwKQEAgLTEzMzMsMTMgKzEzMzMsMTYgQEAKICAgICAgICAgbyA9IE9iamVjdCgxMjM0NTYpCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIG4gPSBsZW4oZGljdCkKLSAgICAgICAgICAgIGRpY3QucG9waXRlbSgpCisgICAgICAgICAgICAjIFNpbmNlIHVuZGVybGF5aW5nIGRpY3QgaXMgb3JkZXJlZCwgZmlyc3QgaXRlbSBpcyBwb3BwZWQKKyAgICAgICAgICAgIGRpY3QucG9wKG5leHQoZGljdC5rZXlzKCkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAxKQogICAgICAgICAgICAgZGljdFtvXSA9IG8KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuKQorICAgICAgICAjIGxhc3QgaXRlbSBpbiBvYmplY3RzIGlzIHJlbW92ZWQgZnJvbSBkaWN0IGluIGNvbnRleHQgc2h1dGRvd24KICAgICAgICAgd2l0aCB0ZXN0Y29udGV4dCgpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAxKQotICAgICAgICAgICAgZGljdC5wb3AobmV4dChkaWN0LmtleXMoKSkpCisgICAgICAgICAgICAjIFRoZW4sIChvLCBvKSBpcyBwb3BwZWQKKyAgICAgICAgICAgIGRpY3QucG9waXRlbSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDIpCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQppbmRleCA5Y2U2NzJiLi42OTFiOTVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CkBAIC0xLDEzICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB3ZWFrcmVmIGltcG9ydCBwcm94eSwgcmVmLCBXZWFrU2V0Ci1pbXBvcnQgb3BlcmF0b3IKLWltcG9ydCBjb3B5Citmcm9tIHdlYWtyZWYgaW1wb3J0IFdlYWtTZXQKIGltcG9ydCBzdHJpbmcKLWltcG9ydCBvcwotZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2h1ZmZsZQotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJTdHJpbmcgYXMgdXN0cgogaW1wb3J0IGdjCiBpbXBvcnQgY29udGV4dGxpYgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkgYi9MaWIvdGVzdC90ZXN0X3dpbmNvbnNvbGVpby5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWEyZjdhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkKQEAgLTAsMCArMSwxNDcgQEAKKycnJ1Rlc3RzIGZvciBXaW5kb3dzQ29uc29sZUlPCisnJycKKworaW1wb3J0IGlvCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKKworaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3Qgb25seSByZWxldmFudCBvbiB3aW4zMiIpCisKK2Zyb20gX3Rlc3Rjb25zb2xlIGltcG9ydCB3cml0ZV9pbnB1dAorCitDb25JTyA9IGlvLl9XaW5kb3dzQ29uc29sZUlPCisKK2NsYXNzIFdpbmRvd3NDb25zb2xlSU9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfYWJjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDb25JTywgaW8uUmF3SU9CYXNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbklPLCBpby5CdWZmZXJlZElPQmFzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb25JTywgaW8uVGV4dElPQmFzZSkpCisKKyAgICBkZWYgdGVzdF9vcGVuX2ZkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpICAgIyBtdWx0aXBsZSBjbG9zZSBzaG91bGQgbm90IGNyYXNoCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMSwgJ3cnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBDb25JTygyLCAndycpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9vcGVuX25hbWUoc2VsZik6CisgICAgICAgIGYgPSBDb25JTygiQ09OIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKSAgICMgbXVsdGlwbGUgY2xvc2Ugc2hvdWxkIG5vdCBjcmFzaAorICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICBmID0gQ29uSU8oJ0NPTklOJCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgZiA9IENvbklPKCdDT05PVVQkJywgJ3cnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIGFzc2VydFN0ZGluUm91bmRUcmlwKHNlbGYsIHRleHQpOgorICAgICAgICBzdGRpbiA9IG9wZW4oJ0NPTklOJCcsICdyJykKKyAgICAgICAgb2xkX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5zdGRpbiA9IHN0ZGluCisgICAgICAgICAgICB3cml0ZV9pbnB1dCgKKyAgICAgICAgICAgICAgICBzdGRpbi5idWZmZXIucmF3LAorICAgICAgICAgICAgICAgICh0ZXh0ICsgJ1xyXG4nKS5lbmNvZGUoJ3V0Zi0xNi1sZScsICdzdXJyb2dhdGVwYXNzJykKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGFjdHVhbCA9IGlucHV0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zdGRpbiA9IG9sZF9zdGRpbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2lucHV0KHNlbGYpOgorICAgICAgICAjIEFTQ0lJCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ2FiYzEyMycpCisgICAgICAgICMgTm9uLUFTQ0lJCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ8+80Z7Qos670KTQmScpCisgICAgICAgICMgQ29tYmluaW5nIGNoYXJhY3RlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnQc2PQiDvrJbMs0FBzJ0nKQorICAgICAgICAjIE5vbi1CTVAKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnXFUwMDEwMDAwMFxVMDAxMGZmZmZcVTAwMTBmZmZkJykKKworICAgIGRlZiB0ZXN0X3BhcnRpYWxfcmVhZHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgbGVzcyB0aGFuIDEgZnVsbCBjaGFyYWN0ZXIgd29ya3Mgd2hlbiBzdGRpbgorICAgICAgICAjIGNvbnRhaW5zIG11bHRpYnl0ZSBVVEYtOCBzZXF1ZW5jZXMKKyAgICAgICAgc291cmNlID0gJ8+80Z7Qos670KTQmVxyXG4nLmVuY29kZSgndXRmLTE2LWxlJykKKyAgICAgICAgZXhwZWN0ZWQgPSAnz7zRntCizrvQpNCZXHJcbicuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGZvciByZWFkX2NvdW50IGluIHJhbmdlKDEsIDE2KToKKyAgICAgICAgICAgIHdpdGggb3BlbignQ09OSU4kJywgJ3JiJywgYnVmZmVyaW5nPTApIGFzIHN0ZGluOgorICAgICAgICAgICAgICAgIHdyaXRlX2lucHV0KHN0ZGluLCBzb3VyY2UpCisKKyAgICAgICAgICAgICAgICBhY3R1YWwgPSBiJycKKyAgICAgICAgICAgICAgICB3aGlsZSBub3QgYWN0dWFsLmVuZHN3aXRoKGInXG4nKToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHN0ZGluLnJlYWQocmVhZF9jb3VudCkKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsICs9IGIKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgJ3N0ZGluLnJlYWQoe30pJy5mb3JtYXQocmVhZF9jb3VudCkpCisKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3N1cnJvZ2F0ZV9yZWFkcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgcmVhZGluZyBsZXNzIHRoYW4gMSBmdWxsIGNoYXJhY3RlciB3b3JrcyB3aGVuIHN0ZGluCisgICAgICAgICMgY29udGFpbnMgc3Vycm9nYXRlIHBhaXJzIHRoYXQgY2Fubm90IGJlIGRlY29kZWQgdG8gVVRGLTggd2l0aG91dAorICAgICAgICAjIHJlYWRpbmcgYW4gZXh0cmEgY2hhcmFjdGVyLgorICAgICAgICBzb3VyY2UgPSAnXFUwMDEwMUZGRlxVMDAxMDEwMDFcclxuJy5lbmNvZGUoJ3V0Zi0xNi1sZScpCisgICAgICAgIGV4cGVjdGVkID0gJ1xVMDAxMDFGRkZcVTAwMTAxMDAxXHJcbicuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGZvciByZWFkX2NvdW50IGluIHJhbmdlKDEsIDE2KToKKyAgICAgICAgICAgIHdpdGggb3BlbignQ09OSU4kJywgJ3JiJywgYnVmZmVyaW5nPTApIGFzIHN0ZGluOgorICAgICAgICAgICAgICAgIHdyaXRlX2lucHV0KHN0ZGluLCBzb3VyY2UpCisKKyAgICAgICAgICAgICAgICBhY3R1YWwgPSBiJycKKyAgICAgICAgICAgICAgICB3aGlsZSBub3QgYWN0dWFsLmVuZHN3aXRoKGInXG4nKToKKyAgICAgICAgICAgICAgICAgICAgYiA9IHN0ZGluLnJlYWQocmVhZF9jb3VudCkKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsICs9IGIKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgJ3N0ZGluLnJlYWQoe30pJy5mb3JtYXQocmVhZF9jb3VudCkpCisKKyAgICBkZWYgdGVzdF9jdHJsX3ooc2VsZik6CisgICAgICAgIHdpdGggb3BlbignQ09OSU4kJywgJ3JiJywgYnVmZmVyaW5nPTApIGFzIHN0ZGluOgorICAgICAgICAgICAgc291cmNlID0gJ1x4QzRceDFBXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnXHhDNCcuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorICAgICAgICAgICAgYSwgYiA9IHN0ZGluLnJlYWQoMSksIHN0ZGluLnJlYWRhbGwoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFswOjFdLCBhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZFsxOl0sIGIpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CmluZGV4IDYwMjA3ZmIuLmQ2NDJiMTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5CkBAIC0zNyw2ICszNyw3IEBACiAKIHRlc3RfZGF0YSA9IFsKICAgICAoIkludCBWYWx1ZSIsICAgICA0NSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFR19EV09SRCksCisgICAgKCJRd29yZCBWYWx1ZSIsICAgMHgxMTIyMzM0NDU1NjY3Nzg4LCAgICAgICAgICAgICAgICAgICAgICBSRUdfUVdPUkQpLAogICAgICgiU3RyaW5nIFZhbCIsICAgICJBIHN0cmluZyB2YWx1ZSIsICAgICAgICAgICAgICAgICAgICAgICAgUkVHX1NaKSwKICAgICAoIlN0cmluZ0V4cGFuZCIsICAiVGhlIHBhdGggaXMgJXBhdGglIiwgICAgICAgICAgICAgICAgICAgIFJFR19FWFBBTkRfU1opLAogICAgICgiTXVsdGktc3RyaW5nIiwgIFsiTG90cyIsICJvZiIsICJzdHJpbmciLCAidmFsdWVzIl0sICAgICAgUkVHX01VTFRJX1NaKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CmluZGV4IDRhOGFiN2QuLjE3OWUwNjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQpAQCAtNTEsNiArNTEsMTAgQEAKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwLCAyMDAwLCAxMDApOgogICAgICAgICAgICAgc2FmZV9CZWVwKGksIDc1KQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX0JlZXAoZHVyYXRpb249NzUsIGZyZXF1ZW5jeT0yMDAwKQorCisKIGNsYXNzIE1lc3NhZ2VCZWVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC03Niw2ICs4MCw5IEBACiAgICAgZGVmIHRlc3RfcXVlc3Rpb24oc2VsZik6CiAgICAgICAgIHNhZmVfTWVzc2FnZUJlZXAod2luc291bmQuTUJfSUNPTlFVRVNUSU9OKQogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX01lc3NhZ2VCZWVwKHR5cGU9d2luc291bmQuTUJfT0spCisKIAogY2xhc3MgUGxheVNvdW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTg3LDYgKzk0LDI1IEBACiAgICAgICAgICAgICB3aW5zb3VuZC5QbGF5U291bmQsCiAgICAgICAgICAgICAibm9uZSIsIHdpbnNvdW5kLlNORF9BU1lOQyB8IHdpbnNvdW5kLlNORF9NRU1PUlkKICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgYiJiYWQiLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgImJhZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbnNvdW5kLlNORF9NRU1PUlkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCAxLCAwKQorCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbGFncz13aW5zb3VuZC5TTkRfQUxJQVMsIHNvdW5kPSJTeXN0ZW1FeGl0IikKKworICAgIGRlZiB0ZXN0X3NuZF9tZW1vcnkoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LmZpbmRmaWxlKCdwbHVjay1wY204LndhdicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcj0nYXVkaW9kYXRhJyksICdyYicpIGFzIGY6CisgICAgICAgICAgICBhdWRpb19kYXRhID0gZi5yZWFkKCkKKyAgICAgICAgc2FmZV9QbGF5U291bmQoYXVkaW9fZGF0YSwgd2luc291bmQuU05EX01FTU9SWSkKKyAgICAgICAgYXVkaW9fZGF0YSA9IGJ5dGVhcnJheShhdWRpb19kYXRhKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChhdWRpb19kYXRhLCB3aW5zb3VuZC5TTkRfTUVNT1JZKQorCisgICAgZGVmIHRlc3Rfc25kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmbiA9IHN1cHBvcnQuZmluZGZpbGUoJ3BsdWNrLXBjbTgud2F2Jywgc3ViZGlyPSdhdWRpb2RhdGEnKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChmbiwgd2luc291bmQuU05EX0ZJTEVOQU1FIHwgd2luc291bmQuU05EX05PREVGQVVMVCkKIAogICAgIGRlZiB0ZXN0X2FsaWFzZXMoc2VsZik6CiAgICAgICAgIGFsaWFzZXMgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKaW5kZXggZThkNzg5Yi4uZTI0N2ZmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQpAQCAtMTQwLDExICsxNDAsNiBAQAogICAgICAgICAgICAgJ3dpdGggbW9jayBhcyAoTm9uZSk6XG4nCiAgICAgICAgICAgICAnICBwYXNzJykKIAotICAgIGRlZiB0ZXN0QXNzaWdubWVudFRvRW1wdHlUdXBsZUVycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1N5bnRheEVycm9yKAotICAgICAgICAgICAgJ3dpdGggbW9jayBhcyAoKTpcbicKLSAgICAgICAgICAgICcgIHBhc3MnKQotCiAgICAgZGVmIHRlc3RBc3NpZ25tZW50VG9UdXBsZU9ubHlDb250YWluaW5nTm9uZUVycm9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1N5bnRheEVycm9yKCd3aXRoIG1vY2sgYXMgTm9uZSw6XG4gIHBhc3MnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1N5bnRheEVycm9yKApAQCAtNDU0LDcgKzQ0OSw3IEBACiAgICAgICAgICAgICB3aXRoIGNtKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbigiZnJvbSB3aXRoIikKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKIAogICAgIGRlZiB0ZXN0UmFpc2VkU3RvcEl0ZXJhdGlvbjIoc2VsZik6CkBAIC00ODIsNyArNDc3LDcgQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBuZXh0KGl0ZXIoW10pKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRHZW5lcmF0b3JFeGl0MShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQppbmRleCA2MWE3NTBjLi43NzA4ZTIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CkBAIC0yNTgsNyArMjU4LDcgQEAKIAogICAgICAgICBkZWYgYXBwKGVudmlyb24sIHN0YXJ0X3Jlc3BvbnNlKToKICAgICAgICAgICAgIHN0YXJ0X3Jlc3BvbnNlKCIyMDAgT0siLCBbXSkKLSAgICAgICAgICAgIHJldHVybiBbYnl0ZXMoc3VwcG9ydC5TT0NLX01BWF9TSVpFKV0KKyAgICAgICAgICAgIHJldHVybiBbYidcMCcgKiBzdXBwb3J0LlNPQ0tfTUFYX1NJWkVdCiAKICAgICAgICAgY2xhc3MgV3NnaUhhbmRsZXIoTm9Mb2dSZXF1ZXN0SGFuZGxlciwgV1NHSVJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKaW5kZXggNmM3NjE2Yi4uYzAxNDRkMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkKQEAgLTkxLDggKzkxLDYgQEAKIAogCiBjbGFzcyBNb2R1bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRPRE86IHRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB3ZSBnZXQgcmlkIG9mIHRoZSBnbG9iYWwgbW9kdWxlIHZhcnMKLQogICAgIGRlZiB0ZXN0X3Nhbml0eShzZWxmKToKICAgICAgICAgIyBJbXBvcnQgc2FuaXR5LgogCkBAIC0xMDAsNiArOTgsMTAgQEAKICAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCiAgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBuYW1lcyA9ICgieG1sLmV0cmVlLkVsZW1lbnRUcmVlIiwgIl9lbGVtZW50dHJlZSIpCisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIEVULCBuYW1lcywgYmxhY2tsaXN0PSgiSFRNTF9FTVBUWSIsKSkKKwogCiBkZWYgc2VyaWFsaXplKGVsZW0sIHRvX3N0cmluZz1UcnVlLCBlbmNvZGluZz0ndW5pY29kZScsICoqb3B0aW9ucyk6CiAgICAgaWYgZW5jb2RpbmcgIT0gJ3VuaWNvZGUnOgpAQCAtMTgyLDEwICsxODQsMTIgQEAKIAogICAgICAgICBkZWYgY2hlY2tfZWxlbWVudChlbGVtZW50KToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShFVC5pc2VsZW1lbnQoZWxlbWVudCksIG1zZz0ibm90IGFuIGVsZW1lbnQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgInRhZyIpLCBtc2c9Im5vIHRhZyBtZW1iZXIiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgImF0dHJpYiIpLCBtc2c9Im5vIGF0dHJpYiBtZW1iZXIiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgInRleHQiKSwgbXNnPSJubyB0ZXh0IG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFpbCIpLCBtc2c9Im5vIHRhaWwgbWVtYmVyIikKKyAgICAgICAgICAgIGRpcmVsZW0gPSBkaXIoZWxlbWVudCkKKyAgICAgICAgICAgIGZvciBhdHRyIGluICd0YWcnLCAnYXR0cmliJywgJ3RleHQnLCAndGFpbCc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J25vICVzIG1lbWJlcicgJSBhdHRyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZGlyZWxlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nbm8gJXMgdmlzaWJsZSBieSBkaXInICUgYXR0cikKIAogICAgICAgICAgICAgY2hlY2tfc3RyaW5nKGVsZW1lbnQudGFnKQogICAgICAgICAgICAgY2hlY2tfbWFwcGluZyhlbGVtZW50LmF0dHJpYikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CmluZGV4IDk2YjQ0NmUuLjg3ZjNmMjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQpAQCAtMSw1ICsxLDUgQEAKICMgeG1sLmV0cmVlIHRlc3QgZm9yIGNFbGVtZW50VHJlZQotaW1wb3J0IHN5cywgc3RydWN0CitpbXBvcnQgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCiBpbXBvcnQgdHlwZXMKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuY2FsY3NpemUoJzhQJykpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlLCB0ZXN0X3htbF9ldHJlZV9jCisgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZQogCiAgICAgIyBSdW4gdGhlIHRlc3RzIHNwZWNpZmljIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uCiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CmluZGV4IDAyZDlmNWMuLmRmOWM3OWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtOSw3ICsxMCw2IEBACiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCBodHRwLCBodHRwLnNlcnZlcgogaW1wb3J0IHNvY2tldAotaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBpbwogaW1wb3J0IGNvbnRleHRsaWIKQEAgLTIzOCw2ICsyMzgsNTQgQEAKICAgICAgICAgICAgICAgICAnPC9zdHJ1Y3Q+PC92YWx1ZT48L3BhcmFtPjwvcGFyYW1zPicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlc3BvbnNlRXJyb3IsIHhtbHJwY2xpYi5sb2FkcywgZGF0YSkKIAorICAgIGRlZiBjaGVja19sb2FkcyhzZWxmLCBzLCB2YWx1ZSwgKiprd2FyZ3MpOgorICAgICAgICBkdW1wID0gJzxwYXJhbXM+PHBhcmFtPjx2YWx1ZT4lczwvdmFsdWU+PC9wYXJhbT48L3BhcmFtcz4nICUgcworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMoZHVtcCwgKiprd2FyZ3MpCisgICAgICAgIChuZXd2YWx1ZSwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3dmFsdWUsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3dmFsdWUpLCB0eXBlKHZhbHVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgIGRlZiB0ZXN0X2xvYWRfc3RhbmRhcmRfdHlwZXMoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19sb2FkcworICAgICAgICBjaGVjaygnc3RyaW5nJywgJ3N0cmluZycpCisgICAgICAgIGNoZWNrKCc8c3RyaW5nPnN0cmluZzwvc3RyaW5nPicsICdzdHJpbmcnKQorICAgICAgICBjaGVjaygnPHN0cmluZz7wnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiIHN0cmluZzwvc3RyaW5nPicsICfwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiIHN0cmluZycpCisgICAgICAgIGNoZWNrKCc8aW50PjIwNTYxODM5NDc8L2ludD4nLCAyMDU2MTgzOTQ3KQorICAgICAgICBjaGVjaygnPGludD4tMjA1NjE4Mzk0NzwvaW50PicsIC0yMDU2MTgzOTQ3KQorICAgICAgICBjaGVjaygnPGk0PjIwNTYxODM5NDc8L2k0PicsIDIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8ZG91YmxlPjQ2MDkzLjc4MTI1PC9kb3VibGU+JywgNDYwOTMuNzgxMjUpCisgICAgICAgIGNoZWNrKCc8Ym9vbGVhbj4wPC9ib29sZWFuPicsIEZhbHNlKQorICAgICAgICBjaGVjaygnPGJhc2U2ND5BR0o1ZEdVZ2MzUnlhVzVuL3c9PTwvYmFzZTY0PicsCisgICAgICAgICAgICAgIHhtbHJwY2xpYi5CaW5hcnkoYidceDAwYnl0ZSBzdHJpbmdceGZmJykpCisgICAgICAgIGNoZWNrKCc8YmFzZTY0PkFHSjVkR1VnYzNSeWFXNW4vdz09PC9iYXNlNjQ+JywKKyAgICAgICAgICAgICAgYidceDAwYnl0ZSBzdHJpbmdceGZmJywgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgY2hlY2soJzxkYXRlVGltZS5pc284NjAxPjIwMDUwMjEwVDExOjQxOjIzPC9kYXRlVGltZS5pc284NjAxPicsCisgICAgICAgICAgICAgIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKKyAgICAgICAgY2hlY2soJzxkYXRlVGltZS5pc284NjAxPjIwMDUwMjEwVDExOjQxOjIzPC9kYXRlVGltZS5pc284NjAxPicsCisgICAgICAgICAgICAgIGRhdGV0aW1lLmRhdGV0aW1lKDIwMDUsIDIsIDEwLCAxMSwgNDEsIDIzKSwKKyAgICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgY2hlY2soJzxhcnJheT48ZGF0YT4nCisgICAgICAgICAgICAgICc8dmFsdWU+PGludD4xPC9pbnQ+PC92YWx1ZT48dmFsdWU+PGludD4yPC9pbnQ+PC92YWx1ZT4nCisgICAgICAgICAgICAgICc8L2RhdGE+PC9hcnJheT4nLCBbMSwgMl0pCisgICAgICAgIGNoZWNrKCc8c3RydWN0PicKKyAgICAgICAgICAgICAgJzxtZW1iZXI+PG5hbWU+YjwvbmFtZT48dmFsdWU+PGludD4yPC9pbnQ+PC92YWx1ZT48L21lbWJlcj4nCisgICAgICAgICAgICAgICc8bWVtYmVyPjxuYW1lPmE8L25hbWU+PHZhbHVlPjxpbnQ+MTwvaW50PjwvdmFsdWU+PC9tZW1iZXI+JworICAgICAgICAgICAgICAnPC9zdHJ1Y3Q+JywgeydhJzogMSwgJ2InOiAyfSkKKworICAgIGRlZiB0ZXN0X2xvYWRfZXh0ZW5zaW9uX3R5cGVzKHNlbGYpOgorICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfbG9hZHMKKyAgICAgICAgY2hlY2soJzxuaWwvPicsIE5vbmUpCisgICAgICAgIGNoZWNrKCc8ZXg6bmlsLz4nLCBOb25lKQorICAgICAgICBjaGVjaygnPGkxPjIwNTwvaTE+JywgMjA1KQorICAgICAgICBjaGVjaygnPGkyPjIwNTYxPC9pMj4nLCAyMDU2MSkKKyAgICAgICAgY2hlY2soJzxpOD45ODc2NTQzMjEwPC9pOD4nLCA5ODc2NTQzMjEwKQorICAgICAgICBjaGVjaygnPGJpZ2ludGVnZXI+OTg3NjU0MzIxMDAxMjM0NTY3ODk8L2JpZ2ludGVnZXI+JywKKyAgICAgICAgICAgICAgOTg3NjU0MzIxMDAxMjM0NTY3ODkpCisgICAgICAgIGNoZWNrKCc8ZmxvYXQ+OTMuNzgxMjU8L2Zsb2F0PicsIDkzLjc4MTI1KQorICAgICAgICBjaGVjaygnPGJpZ2RlY2ltYWw+OTg3NjU0MzIxMC4wMTIzNDU2Nzg5PC9iaWdkZWNpbWFsPicsCisgICAgICAgICAgICAgIGRlY2ltYWwuRGVjaW1hbCgnOTg3NjU0MzIxMC4wMTIzNDU2Nzg5JykpCisKICAgICBkZWYgdGVzdF9nZXRfaG9zdF9pbmZvKHNlbGYpOgogICAgICAgICAjIHNlZSBidWcgIzM2MTMsIHRoaXMgcmFpc2VkIGEgVHlwZUVycm9yCiAgICAgICAgIHRyYW5zcCA9IHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0KCkKQEAgLTExNDcsNyArMTE5NSw2IEBACiAgICAgIiIiQSB2YXJpYXRpb24gb24gc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSB3aGljaCBnaXZlcyBhIHRleHQgc3RyZWFtCiAgICAgaGF2aW5nIGEgYGJ1ZmZlcmAgYXR0cmlidXRlLgogICAgICIiIgotICAgIGltcG9ydCBpbwogICAgIG9yaWdfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgIHN5cy5zdGRvdXQgPSBpby5UZXh0SU9XcmFwcGVyKGlvLkJ5dGVzSU8oKSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCiAgICAgdHJ5OgpAQCAtMTIyMCw3ICsxMjY3LDcgQEAKICAgICAgICAgY29udGVudCA9IGhhbmRsZVtoYW5kbGUuZmluZCgiPD94bWwiKTpdCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGludChyZS5zZWFyY2goJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScsIGhhbmRsZSkuZ3JvdXAoMSkpLAorICAgICAgICAgICAgaW50KHJlLnNlYXJjaChyJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScsIGhhbmRsZSkuZ3JvdXAoMSkpLAogICAgICAgICAgICAgbGVuKGNvbnRlbnQpKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQppbmRleCBiNjBiODJmLi5hZTBhMjhlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CkBAIC0xLDcgKzEsNCBAQAogaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwotaW1wb3J0IGVycm5vCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM4MC5weSBiL0xpYi90ZXN0L3Rlc3RfeWllbGRfZnJvbS5weQpzaW1pbGFyaXR5IGluZGV4IDkyJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CmluZGV4IDIzZmZiZWQuLjdlOTcxMWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeWllbGRfZnJvbS5weQpAQCAtMzg0LDkgKzM4NCwxMCBAQAogICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCiAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgogICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBnMigpCi0gICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKLSAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIoNDIpCi0gICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJldHVybmVkICVzIiAlIChyZXQsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmV0dXJuZWQgJXIiICUgKHJldCwpKQorICAgICAgICAgICAgZm9yIHYgaW4gMSwgKDIsKSwgU3RvcEl0ZXJhdGlvbigzKToKKyAgICAgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIGcyKHYpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZXR1cm5lZCAlciIgJSAocmV0LCkpCiAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKICAgICAgICAgZGVmIGcyKHYgPSBOb25lKToKQEAgLTQxMCw3ICs0MTEsMTcgQEAKICAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAogICAgICAgICAgICAgIllpZWxkZWQgZzIgbW9yZSBzcGFtIiwKICAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAotICAgICAgICAgICAgImcyIHJldHVybmVkIDQyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCAxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCAoMiwpIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJnMiByZXR1cm5lZCBTdG9wSXRlcmF0aW9uKDMsKSIsCiAgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKICAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAogICAgICAgICBdKQpAQCAtNjcwLDE0ICs2ODEsMTYgQEAKICAgICAgICAgICAgICAgICBuZXh0KGdpKQogICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBTSE9VTEQgTk9UIEJFIEhFUkUiKQogICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZToKLSAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgY2F1Z2h0ICVzIiAlIChyZXByKGUpLCkpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIGNhdWdodCAlciIgJSAoZSwpKQogICAgICAgICBkZWYgZyhyKToKICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyBzdGFydGluZyIpCiAgICAgICAgICAgICB5aWVsZAotICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlcyIgJSAociwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlciIgJSAociwpKQogICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgZihOb25lKQotICAgICAgICBmKDQyKQorICAgICAgICBmKDEpCisgICAgICAgIGYoKDIsKSkKKyAgICAgICAgZihTdG9wSXRlcmF0aW9uKDMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKICAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKICAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLApAQCAtNjg1LDggKzY5OCwxNiBAQAogICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKSIsCiAgICAgICAgICAgICAiZyBzdGFydGluZyIsCiAgICAgICAgICAgICAiZiByZXN1bWluZyBnIiwKLSAgICAgICAgICAgICJnIHJldHVybmluZyA0MiIsCi0gICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbig0MiwpIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyAxIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDEsKSIsCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiByZXN1bWluZyBnIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyAoMiwpIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCgyLCksKSIsCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiByZXN1bWluZyBnIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyBTdG9wSXRlcmF0aW9uKDMsKSIsCisgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbihTdG9wSXRlcmF0aW9uKDMsKSwpIiwKICAgICAgICAgXSkKIAogICAgIGRlZiB0ZXN0X3NlbmRfYW5kX3JldHVybl93aXRoX3ZhbHVlKHNlbGYpOgpAQCAtNzA2LDIyICs3MjcsMzQgQEAKICAgICAgICAgZGVmIGcocik6CiAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc3RhcnRpbmciKQogICAgICAgICAgICAgeCA9IHlpZWxkCi0gICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmVjZWl2ZWQgJXMiICUgKHgsKSkKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZXR1cm5pbmcgJXMiICUgKHIsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZWNlaXZlZCAlciIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHJldHVybmluZyAlciIgJSAociwpKQogICAgICAgICAgICAgcmV0dXJuIHIKICAgICAgICAgZihOb25lKQotICAgICAgICBmKDQyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgZigxKQorICAgICAgICBmKCgyLCkpCisgICAgICAgIGYoU3RvcEl0ZXJhdGlvbigzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWwogICAgICAgICAgICAgImcgc3RhcnRpbmciLAogICAgICAgICAgICAgImYgc2VuZGluZyBzcGFtIHRvIGciLAotICAgICAgICAgICAgImcgcmVjZWl2ZWQgc3BhbSIsCisgICAgICAgICAgICAiZyByZWNlaXZlZCAnc3BhbSciLAogICAgICAgICAgICAgImcgcmV0dXJuaW5nIE5vbmUiLAogICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oKSIsCiAgICAgICAgICAgICAiZyBzdGFydGluZyIsCiAgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCi0gICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKLSAgICAgICAgICAgICJnIHJldHVybmluZyA0MiIsCi0gICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbig0MiwpIiwKKyAgICAgICAgICAgICJnIHJlY2VpdmVkICdzcGFtJyIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgMSIsCisgICAgICAgICAgICAnZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigxLCknLAorICAgICAgICAgICAgJ2cgc3RhcnRpbmcnLAorICAgICAgICAgICAgJ2Ygc2VuZGluZyBzcGFtIHRvIGcnLAorICAgICAgICAgICAgImcgcmVjZWl2ZWQgJ3NwYW0nIiwKKyAgICAgICAgICAgICdnIHJldHVybmluZyAoMiwpJywKKyAgICAgICAgICAgICdmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCgyLCksKScsCisgICAgICAgICAgICAnZyBzdGFydGluZycsCisgICAgICAgICAgICAnZiBzZW5kaW5nIHNwYW0gdG8gZycsCisgICAgICAgICAgICAiZyByZWNlaXZlZCAnc3BhbSciLAorICAgICAgICAgICAgJ2cgcmV0dXJuaW5nIFN0b3BJdGVyYXRpb24oMywpJywKKyAgICAgICAgICAgICdmIGNhdWdodCBTdG9wSXRlcmF0aW9uKFN0b3BJdGVyYXRpb24oMywpLCknCiAgICAgICAgIF0pCiAKICAgICBkZWYgdGVzdF9jYXRjaGluZ19leGNlcHRpb25fZnJvbV9zdWJnZW5fYW5kX3JldHVybmluZyhzZWxmKToKQEAgLTcyOSwyNyArNzYyLDI5IEBACiAgICAgICAgIFRlc3QgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHRocm93biBpbnRvIGEKICAgICAgICAgc3ViZ2VuZXJhdG9yIGFuZCByZXR1cm5pbmcgYSB2YWx1ZQogICAgICAgICAiIiIKLSAgICAgICAgdHJhY2UgPSBbXQogICAgICAgICBkZWYgaW5uZXIoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB5aWVsZCAxCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIikKLSAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgICAgICByZXR1cm4gdmFsdWUKIAogICAgICAgICBkZWYgb3V0ZXIoKToKICAgICAgICAgICAgIHYgPSB5aWVsZCBmcm9tIGlubmVyKCkKLSAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgcmV0dXJuZWQgJXIgdG8gb3V0ZXIiICUgdikKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiaW5uZXIgcmV0dXJuZWQgJXIgdG8gb3V0ZXIiICUgKHYsKSkKICAgICAgICAgICAgIHlpZWxkIHYKLSAgICAgICAgZyA9IG91dGVyKCkKLSAgICAgICAgdHJhY2UuYXBwZW5kKG5leHQoZykpCi0gICAgICAgIHRyYWNlLmFwcGVuZChnLnRocm93KFZhbHVlRXJyb3IpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKLSAgICAgICAgICAgIDEsCi0gICAgICAgICAgICAiaW5uZXIgY2F1Z2h0IFZhbHVlRXJyb3IiLAotICAgICAgICAgICAgImlubmVyIHJldHVybmVkIDIgdG8gb3V0ZXIiLAotICAgICAgICAgICAgMiwKLSAgICAgICAgXSkKKworICAgICAgICBmb3IgdmFsdWUgaW4gMiwgKDIsKSwgU3RvcEl0ZXJhdGlvbigyKToKKyAgICAgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgICAgIGcgPSBvdXRlcigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQobmV4dChnKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZChyZXByKGcudGhyb3coVmFsdWVFcnJvcikpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWworICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIiwKKyAgICAgICAgICAgICAgICAiaW5uZXIgcmV0dXJuZWQgJXIgdG8gb3V0ZXIiICUgKHZhbHVlLCksCisgICAgICAgICAgICAgICAgcmVwcih2YWx1ZSksCisgICAgICAgICAgICBdKQogCiAgICAgZGVmIHRlc3RfdGhyb3dpbmdfR2VuZXJhdG9yRXhpdF9pbnRvX3N1Ymdlbl90aGF0X3JldHVybnMoc2VsZik6CiAgICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CmluZGV4IDBkZDRiY2EuLjBhNDNiMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKQEAgLTEsOCArMSw4IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGlvCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAoraW1wb3J0IHBvc2l4cGF0aAogaW1wb3J0IHRpbWUKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCB6aXBmaWxlCkBAIC0zOSwxMCArMzksNiBAQAogICAgICAgICB5aWVsZCBmCiAgICAgICAgIHRlc3QuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCiAKLWRlZiBvcGVuVSh6aXBmcCwgZm4pOgotICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKLSAgICAgICAgcmV0dXJuIHppcGZwLm9wZW4oZm4sICdyVScpCi0KIGNsYXNzIEFic3RyYWN0VGVzdHNXaXRoU291cmNlRmlsZToKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgpAQCAtNjIsNiArNTgsOSBAQAogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCAiYW5vdGhlci5uYW1lIikKICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgVEVTVEZOKQogICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInN0cmZpbGUiLCBzZWxmLmRhdGEpCisgICAgICAgICAgICB3aXRoIHppcGZwLm9wZW4oJ3dyaXR0ZW4tb3Blbi13JywgbW9kZT0ndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5saW5lX2dlbjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShsaW5lKQogCiAgICAgZGVmIHppcF90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKQEAgLTc3LDcgKzc2LDcgQEAKICAgICAgICAgICAgIHppcGZwLnByaW50ZGlyKGZpbGU9ZnApCiAgICAgICAgICAgICBkaXJlY3RvcnkgPSBmcC5nZXR2YWx1ZSgpCiAgICAgICAgICAgICBsaW5lcyA9IGRpcmVjdG9yeS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNCkgIyBOdW1iZXIgb2YgZmlsZXMgKyBoZWFkZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNSkgIyBOdW1iZXIgb2YgZmlsZXMgKyBoZWFkZXIKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRmlsZSBOYW1lJywgbGluZXNbMF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdNb2RpZmllZCcsIGxpbmVzWzBdKQpAQCAtOTEsMjMgKzkwLDI1IEBACiAKICAgICAgICAgICAgICMgQ2hlY2sgdGhlIG5hbWVsaXN0CiAgICAgICAgICAgICBuYW1lcyA9IHppcGZwLm5hbWVsaXN0KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgNCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImFub3RoZXIubmFtZSIsIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic3RyZmlsZSIsIG5hbWVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigid3JpdHRlbi1vcGVuLXciLCBuYW1lcykKIAogICAgICAgICAgICAgIyBDaGVjayBpbmZvbGlzdAogICAgICAgICAgICAgaW5mb3MgPSB6aXBmcC5pbmZvbGlzdCgpCiAgICAgICAgICAgICBuYW1lcyA9IFtpLmZpbGVuYW1lIGZvciBpIGluIGluZm9zXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCA0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihURVNURk4sIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYW5vdGhlci5uYW1lIiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJmaWxlIiwgbmFtZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ3cml0dGVuLW9wZW4tdyIsIG5hbWVzKQogICAgICAgICAgICAgZm9yIGkgaW4gaW5mb3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLmZpbGVfc2l6ZSwgbGVuKHNlbGYuZGF0YSkpCiAKICAgICAgICAgICAgICMgY2hlY2sgZ2V0aW5mbwotICAgICAgICAgICAgZm9yIG5tIGluIChURVNURk4sICJhbm90aGVyLm5hbWUiLCAic3RyZmlsZSIpOgorICAgICAgICAgICAgZm9yIG5tIGluIChURVNURk4sICJhbm90aGVyLm5hbWUiLCAic3RyZmlsZSIsICJ3cml0dGVuLW9wZW4tdyIpOgogICAgICAgICAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKG5tKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5maWxlbmFtZSwgbm0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmZpbGVfc2l6ZSwgbGVuKHNlbGYuZGF0YSkpCkBAIC0zNzMsMTQgKzM3NCwxOCBAQAogICAgIHRlc3RfbG93X2NvbXByZXNzaW9uID0gTm9uZQogCiAgICAgZGVmIHppcF90ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3cml0ZXN0ciBjcmVhdGVzIGZpbGVzIHdpdGggbW9kZSAwNjAwLAotICAgICAgICAjIHdoZW4gaXQgaXMgcGFzc2VkIGEgbmFtZSByYXRoZXIgdGhhbiBhIFppcEluZm8gaW5zdGFuY2UuCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd3JpdGVzdHIgYW5kIG9wZW4oLi4uIG1vZGU9J3cnKSBjcmVhdGUgZmlsZXMgd2l0aAorICAgICAgICAjIG1vZGUgMDYwMCwgd2hlbiB0aGV5IGFyZSBwYXNzZWQgYSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbworICAgICAgICAjIGluc3RhbmNlLgogCiAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6CiAgICAgICAgICAgICB6aW5mbyA9IHppcGZwLmdldGluZm8oJ3N0cmZpbGUnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aW5mby5leHRlcm5hbF9hdHRyLCAwbzYwMCA8PCAxNikKIAorICAgICAgICAgICAgemluZm8yID0gemlwZnAuZ2V0aW5mbygnd3JpdHRlbi1vcGVuLXcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aW5mbzIuZXh0ZXJuYWxfYXR0ciwgMG82MDAgPDwgMTYpCisKICAgICBkZWYgdGVzdF93cml0ZXN0cl9wZXJtaXNzaW9ucyhzZWxmKToKICAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdF93cml0ZXN0cl9wZXJtaXNzaW9ucyhmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCkBAIC00ODgsMTIgKzQ5MywxNiBAQAogCiAgICAgZGVmIHRlc3Rfd3JpdGVfdG9fcmVhZG9ubHkoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgdHJ5aW5nIHRvIGNhbGwgd3JpdGUoKSBvbiBhIHJlYWRvbmx5IFppcEZpbGUgb2JqZWN0Ci0gICAgICAgIHJhaXNlcyBhIFJ1bnRpbWVFcnJvci4iIiIKKyAgICAgICAgcmFpc2VzIGEgVmFsdWVFcnJvci4iIiIKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0idyIpIGFzIHppcGZwOgogICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoInNvbWVmaWxlLnR4dCIsICJib2d1cyIpCiAKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0iciIpIGFzIHppcGZwOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZnAud3JpdGUsIFRFU1RGTikKKworICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZnA6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIHppcGZwLm9wZW4oVEVTVEZOLCBtb2RlPSd3JykKIAogICAgIGRlZiB0ZXN0X2FkZF9maWxlX2JlZm9yZV8xOTgwKHNlbGYpOgogICAgICAgICAjIFNldCBhdGltZSBhbmQgbXRpbWUgdG8gMTk3MC0wMS0wMQpAQCAtMTA2NiwzMiArMTA3NSw2IEBACiAgICAgICAgICAgICAgICAgZGF0YSArPSB6aXBmcC5yZWFkKGluZm8pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGRhdGEsIHtiImZvb2JhciIsIGIiYmFyZm9vIn0pCiAKLSAgICBkZWYgdGVzdF91bml2ZXJzYWxfZGVwcmVjYXRpb24oc2VsZik6Ci0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInciKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCdzcGFtLnR4dCcsIGInYWJhYmFnYWxhbWFnYScpCi0KLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBtb2RlIGluICdVJywgJ3JVJzoKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgemlwb3BlbiA9IHppcGZwLm9wZW4oJ3NwYW0udHh0JywgbW9kZSkKLSAgICAgICAgICAgICAgICB6aXBvcGVuLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9yZWFkYWhlYWRzKHNlbGYpOgotICAgICAgICBmID0gaW8uQnl0ZXNJTygpCi0KLSAgICAgICAgZGF0YSA9IGInYVxyXG4nICogMTYgKiAxMDI0Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKFRFU1RGTiwgZGF0YSkKLQotICAgICAgICBkYXRhMiA9IGInJwotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAncicpIGFzIHppcGZwLCBcCi0gICAgICAgICAgICAgb3BlblUoemlwZnAsIFRFU1RGTikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHppcG9wZW46Ci0gICAgICAgICAgICAgICAgZGF0YTIgKz0gbGluZQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZGF0YTIucmVwbGFjZShiJ1xuJywgYidcclxuJykpCi0KICAgICBkZWYgdGVzdF93cml0ZXN0cl9leHRlbmRlZF9sb2NhbF9oZWFkZXJfaXNzdWUxMjAyKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycpIGFzIG9yaWdfemlwOgogICAgICAgICAgICAgZm9yIGRhdGEgaW4gJ2FiY2RlZmdoaWprbG1ub3AnOgpAQCAtMTI3MSwyNyArMTI1NCwyNyBAQAogICAgICAgICAgICAgZnAud3JpdGUoInNob3J0IGZpbGUiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh6aXBmaWxlLkJhZFppcEZpbGUsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOKQogCi0gICAgZGVmIHRlc3RfY2xvc2VkX3ppcF9yYWlzZXNfUnVudGltZUVycm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X2Nsb3NlZF96aXBfcmFpc2VzX1ZhbHVlRXJyb3Ioc2VsZik6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRlc3R6aXAoKSBkb2Vzbid0IHN3YWxsb3cgaW5hcHByb3ByaWF0ZSBleGNlcHRpb25zLiIiIgogICAgICAgICBkYXRhID0gaW8uQnl0ZXNJTygpCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGRhdGEsIG1vZGU9InciKSBhcyB6aXBmOgogICAgICAgICAgICAgemlwZi53cml0ZXN0cigiZm9vLnR4dCIsICJPLCBmb3IgYSBNdXNlIG9mIEZpcmUhIikKIAogICAgICAgICAjIFRoaXMgaXMgY29ycmVjdDsgY2FsbGluZyAucmVhZCBvbiBhIGNsb3NlZCBaaXBGaWxlIHNob3VsZCByYWlzZQotICAgICAgICAjIGEgUnVudGltZUVycm9yLCBhbmQgc28gc2hvdWxkIGNhbGxpbmcgLnRlc3R6aXAuICBBbiBlYXJsaWVyCisgICAgICAgICMgYSBWYWx1ZUVycm9yLCBhbmQgc28gc2hvdWxkIGNhbGxpbmcgLnRlc3R6aXAuICBBbiBlYXJsaWVyCiAgICAgICAgICMgdmVyc2lvbiBvZiAudGVzdHppcCB3b3VsZCBzd2FsbG93IHRoaXMgZXhjZXB0aW9uIChhbmQgYW55IG90aGVyKQogICAgICAgICAjIGFuZCByZXBvcnQgdGhhdCB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgYXJjaGl2ZSB3YXMgY29ycnVwdC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLnJlYWQsICJmb28udHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLnRlc3R6aXApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi53cml0ZXN0ciwgImJvZ3VzLnR4dCIsICJib2d1cyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYucmVhZCwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi50ZXN0emlwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLndyaXRlc3RyLCAiYm9ndXMudHh0IiwgImJvZ3VzIikKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgnemlwZmlsZSB0ZXN0IGRhdGEnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYud3JpdGUsIFRFU1RGTikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi53cml0ZSwgVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfYmFkX2NvbnN0cnVjdG9yX21vZGUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYmFkIG1vZGVzIHBhc3NlZCB0byBaaXBGaWxlIGNvbnN0cnVjdG9yIGFyZSBjYXVnaHQuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJxIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJxIikKIAogICAgIGRlZiB0ZXN0X2JhZF9vcGVuX21vZGUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYmFkIG1vZGVzIHBhc3NlZCB0byBaaXBGaWxlLm9wZW4gYXJlIGNhdWdodC4iIiIKQEAgLTEyOTksOSArMTI4MiwxMiBAQAogICAgICAgICAgICAgemlwZi53cml0ZXN0cigiZm9vLnR4dCIsICJPLCBmb3IgYSBNdXNlIG9mIEZpcmUhIikKIAogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4sIG1vZGU9InIiKSBhcyB6aXBmOgotICAgICAgICAjIHJlYWQgdGhlIGRhdGEgdG8gbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHRoZXJlCisgICAgICAgICAgICAjIHJlYWQgdGhlIGRhdGEgdG8gbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHRoZXJlCiAgICAgICAgICAgICB6aXBmLnJlYWQoImZvby50eHQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInEiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJxIikKKyAgICAgICAgICAgICMgdW5pdmVyc2FsIG5ld2xpbmVzIHN1cHBvcnQgaXMgcmVtb3ZlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJVIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAiclUiKQogCiAgICAgZGVmIHRlc3RfcmVhZDAoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgY2FsbGluZyByZWFkKDApIG9uIGEgWmlwRXh0RmlsZSBvYmplY3QgcmV0dXJucyBhbiBlbXB0eQpAQCAtMTMyNCw3ICsxMzEwLDcgQEAKICAgICBkZWYgdGVzdF9iYWRfY29tcHJlc3Npb25fbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgY29tcHJlc3Npb24gbWV0aG9kcyBwYXNzZWQgdG8gWmlwRmlsZS5vcGVuIGFyZQogICAgICAgICBjYXVnaHQuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJ3IiwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOLCAidyIsIC0xKQogCiAgICAgZGVmIHRlc3RfdW5zdXBwb3J0ZWRfY29tcHJlc3Npb24oc2VsZik6CiAgICAgICAgICMgZGF0YSBpcyBkZWNsYXJlZCBhcyBzaHJ1bmssIGJ1dCBhY3R1YWxseSBkZWZsYXRlZApAQCAtMTQ3Miw2ICsxNDU4LDM1IEBACiAgICAgICAgICAgICAjIHRlc3R6aXAgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgY29ycnVwdCBmaWxlLCBvciBOb25lCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh6aXBmLnRlc3R6aXAoKSkKIAorICAgIGRlZiB0ZXN0X29wZW5fY29uZmxpY3RpbmdfaGFuZGxlcyhzZWxmKToKKyAgICAgICAgIyBJdCdzIG9ubHkgcG9zc2libGUgdG8gb3BlbiBvbmUgd3JpdGFibGUgZmlsZSBoYW5kbGUgYXQgYSB0aW1lCisgICAgICAgIG1zZzEgPSBiIkl0J3MgZnVuIHRvIGNoYXJ0ZXIgYW4gYWNjb3VudGFudCEiCisgICAgICAgIG1zZzIgPSBiIkFuZCBzYWlsIHRoZSB3aWRlIGFjY291bnRhbnQgc2VhIgorICAgICAgICBtc2czID0gYiJUbyBmaW5kLCBleHBsb3JlIHRoZSBmdW5kcyBvZmZzaG9yZSIKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGY6CisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignZm9vJywgbW9kZT0ndycpIGFzIHcyOgorICAgICAgICAgICAgICAgIHcyLndyaXRlKG1zZzEpCisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignYmFyJywgbW9kZT0ndycpIGFzIHcxOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYub3BlbignaGFuZGxlJywgbW9kZT0ndycpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5vcGVuKCdmb28nLCBtb2RlPSdyJykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdzdHInLCAnYWJjZGUnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGUoX19maWxlX18sICdmaWxlJykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICB3MS53cml0ZShtc2cyKQorICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ2JheicsIG1vZGU9J3cnKSBhcyB3MjoKKyAgICAgICAgICAgICAgICB3Mi53cml0ZShtc2czKQorCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdyJykgYXMgemlwZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdmb28nKSwgbXNnMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdiYXInKSwgbXNnMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdiYXonKSwgbXNnMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5uYW1lbGlzdCgpLCBbJ2ZvbycsICdiYXInLCAnYmF6J10pCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4pCiAgICAgICAgIHVubGluayhURVNURk4yKQpAQCAtMTgwNSw2ICsxODIwLDIyIEBACiAgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJykgYXMgem9wZW46CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpvcGVuLnJlYWQoKSwgYicyMjInKQogCisgICAgZGVmIHRlc3Rfb3Blbl93cml0ZShzZWxmKToKKyAgICAgICAgZm9yIHdyYXBwZXIgaW4gKGxhbWJkYSBmOiBmKSwgVGVsbGFibGUsIFVuc2Vla2FibGU6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3cmFwcGVyPXdyYXBwZXIpOgorICAgICAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgICAgICBmLndyaXRlKGInYWJjJykKKyAgICAgICAgICAgICAgICBiZiA9IGlvLkJ1ZmZlcmVkV3JpdGVyKGYpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUod3JhcHBlcihiZiksICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycsICd3JykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICB6b3Blbi53cml0ZShiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJywgJ3cnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvcGVuLndyaXRlKGInMjIyJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0dmFsdWUoKVs6NV0sIGInYWJjUEsnKQorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCdvbmVzJyksIGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ3R3b3MnKSwgYicyMjInKQorCiAKIEByZXF1aXJlc196bGliCiBjbGFzcyBUZXN0c1dpdGhNdWx0aXBsZU9wZW5zKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE5MTUsNiArMTk0NiwxOSBAQAogICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhmLmZpbGVubygpLCAxMDApCiAKKyAgICBkZWYgdGVzdF93cml0ZV93aGlsZV9yZWFkaW5nKHNlbGYpOgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgorICAgICAgICAgICAgemlwZi53cml0ZXN0cignb25lcycsIHNlbGYuZGF0YTEpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICdhJywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICB3aXRoIHppcGYub3Blbignb25lcycsICdyJykgYXMgcjE6CisgICAgICAgICAgICAgICAgZGF0YTEgPSByMS5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycsICd3JykgYXMgdzE6CisgICAgICAgICAgICAgICAgICAgIHcxLndyaXRlKHNlbGYuZGF0YTIpCisgICAgICAgICAgICAgICAgZGF0YTEgKz0gcjEucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YTEsIHNlbGYuZGF0YTEpCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIpIGFzIHppcGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgndHdvcycpLCBzZWxmLmRhdGEyKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxpbmsoVEVTVEZOMikKIApAQCAtMTk4NCwxMzcgKzIwMjgsMTkgQEAKICAgICAgICAgICAgIHVubGluayhURVNURk4pCiAKIAotY2xhc3MgQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHM6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmxpbmVfZ2VuID0gW2J5dGVzKCJUZXN0IG9mIHppcGZpbGUgbGluZSAlZC4iICUgaSwgImFzY2lpIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKEZJWEVEVEVTVF9TSVpFKV0KLSAgICAgICAgY2xzLnNlcHMgPSAoYidccicsIGInXHJcbicsIGInXG4nKQotICAgICAgICBjbHMuYXJjZGF0YSA9IHt9Ci0gICAgICAgIGZvciBuLCBzIGluIGVudW1lcmF0ZShjbHMuc2Vwcyk6Ci0gICAgICAgICAgICBjbHMuYXJjZGF0YVtzXSA9IHMuam9pbihjbHMubGluZV9nZW4pICsgcworY2xhc3MgWmlwSW5mb1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9mcm9tX2ZpbGUoc2VsZik6CisgICAgICAgIHppID0gemlwZmlsZS5aaXBJbmZvLmZyb21fZmlsZShfX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeHBhdGguYmFzZW5hbWUoemkuZmlsZW5hbWUpLCAndGVzdF96aXBmaWxlLnB5JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh6aS5pc19kaXIoKSkKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5hcmNmaWxlcyA9IHt9Ci0gICAgICAgIGZvciBuLCBzIGluIGVudW1lcmF0ZShzZWxmLnNlcHMpOgotICAgICAgICAgICAgc2VsZi5hcmNmaWxlc1tzXSA9ICclcy0lZCcgJSAoVEVTVEZOLCBuKQotICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuYXJjZmlsZXNbc10sICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmFyY2RhdGFbc10pCi0KLSAgICBkZWYgbWFrZV90ZXN0X2FyY2hpdmUoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInciLCBjb21wcmVzc2lvbikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3IgZm4gaW4gc2VsZi5hcmNmaWxlcy52YWx1ZXMoKToKLSAgICAgICAgICAgICAgICB6aXBmcC53cml0ZShmbiwgZm4pCi0KLSAgICBkZWYgcmVhZF90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIGZwOgotICAgICAgICAgICAgICAgICAgICB6aXBkYXRhID0gZnAucmVhZCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmFyY2RhdGFbc2VwXSwgemlwZGF0YSkKLQotICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZF90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVfcmVhZF90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIHppcG9wZW46Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgPSB6aXBvcGVuLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZWFkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhICs9IHJlYWQKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCA9IHppcG9wZW4ucmVhZCg1KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gcmVhZAotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuYXJjZGF0YVtiJ1xuJ10pCi0KLSAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHJlYWRsaW5lX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5saW5lX2dlbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVkYXRhID0gemlwb3Blbi5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVkYXRhLCBsaW5lICsgYidcbicpCi0KLSAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVzX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIHppcGxpbmVzID0gZnAucmVhZGxpbmVzKCkKLSAgICAgICAgICAgICAgICBmb3IgbGluZSwgemlwbGluZSBpbiB6aXAoc2VsZi5saW5lX2dlbiwgemlwbGluZXMpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGxpbmUsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIGl0ZXJsaW5lc190ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIGZwOgotICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSwgemlwbGluZSBpbiB6aXAoc2VsZi5saW5lX2dlbiwgZnApOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBsaW5lLCBsaW5lICsgYidcbicpCi0KLSAgICBkZWYgdGVzdF9pdGVybGluZXMoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgdW5saW5rKGZuKQotICAgICAgICB1bmxpbmsoVEVTVEZOKQotICAgICAgICB1bmxpbmsoVEVTVEZOMikKLQotCi1jbGFzcyBTdG9yZWRVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfU1RPUkVECi0KLUByZXF1aXJlc196bGliCi1jbGFzcyBEZWZsYXRlVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9ERUZMQVRFRAotCi1AcmVxdWlyZXNfYnoyCi1jbGFzcyBCemlwMlVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0JaSVAyCi0KLUByZXF1aXJlc19sem1hCi1jbGFzcyBMem1hVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9MWk1BCisgICAgZGVmIHRlc3RfZnJvbV9kaXIoc2VsZik6CisgICAgICAgIGRpcnBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKKyAgICAgICAgemkgPSB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKGRpcnBhdGgsICdzdGRsaWJfdGVzdHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmZpbGVuYW1lLCAnc3RkbGliX3Rlc3RzLycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh6aS5pc19kaXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9TVE9SRUQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZmlsZV9zaXplLCAwKQogCiAKIGNsYXNzIENvbW1hbmRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMTc1LDcgKzIxMDEsNyBAQAogICAgICAgICAgICAgICAgIGZvciB6aSBpbiB6Zi5pbmZvbGlzdCgpOgogICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGV4dGRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemkuZmlsZW5hbWUucmVwbGFjZSgnLycsIG9zLnNlcCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIHppLmZpbGVuYW1lLmVuZHN3aXRoKCcvJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIHppLmlzX2RpcigpOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIocGF0aCkpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocGF0aCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGQ1YjNiMjIuLjdkZGJjNTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC0zOTgsNyArMzk4LDggQEAKICAgICAgICAgcGFja2RpcjIgPSBwYWNrZGlyICsgVEVTVFBBQ0syICsgb3Muc2VwCiAgICAgICAgIGZpbGVzID0ge3BhY2tkaXIgKyAiX19pbml0X18iICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAogICAgICAgICAgICAgICAgICBwYWNrZGlyMiArICJfX2luaXRfXyIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCi0gICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKX0KKyAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyBURVNUTU9EICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAorICAgICAgICAgICAgICAgICAic3BhbSIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5Yyl9CiAKICAgICAgICAgeiA9IFppcEZpbGUoVEVNUF9aSVAsICJ3IikKICAgICAgICAgdHJ5OgpAQCAtNDEyLDYgKzQxMywxNCBAQAogICAgICAgICAgICAgemkgPSB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoVEVNUF9aSVApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmFyY2hpdmUsIFRFTVBfWklQKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKFRFU1RQQUNLKSwgVHJ1ZSkKKworICAgICAgICAgICAgZmluZF9tb2QgPSB6aS5maW5kX21vZHVsZSgnc3BhbScpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kX21vZCwgemlwaW1wb3J0LnppcGltcG9ydGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaW5kX21vZC5pc19wYWNrYWdlKCdzcGFtJykpCisgICAgICAgICAgICBsb2FkX21vZCA9IGZpbmRfbW9kLmxvYWRfbW9kdWxlKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZF9tb2QuZ2V0X2ZpbGVuYW1lKCdzcGFtJyksIGxvYWRfbW9kLl9fZmlsZV9fKQorCiAgICAgICAgICAgICBtb2QgPSB6aS5sb2FkX21vZHVsZShURVNUUEFDSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZ2V0X2ZpbGVuYW1lKFRFU1RQQUNLKSwgbW9kLl9fZmlsZV9fKQogCkBAIC00NzEsNiArNDgwLDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHppLmlzX3BhY2thZ2UoVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRCksIEZhbHNlKQogCisgICAgICAgICAgICBwa2dfcGF0aCA9IFRFTVBfWklQICsgb3Muc2VwICsgcGFja2RpciArIFRFU1RQQUNLMgorICAgICAgICAgICAgemkyID0gemlwaW1wb3J0LnppcGltcG9ydGVyKHBrZ19wYXRoKQorICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkID0gemkyLmZpbmRfbW9kdWxlKFRFU1RNT0QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZF9kb3R0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZF9tb2RfZG90dGVkLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppMi5pc19wYWNrYWdlKFRFU1RNT0QpKQorICAgICAgICAgICAgbG9hZF9tb2QgPSBmaW5kX21vZF9kb3R0ZWQubG9hZF9tb2R1bGUoVEVTVE1PRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkLmdldF9maWxlbmFtZShURVNUTU9EKSwgbG9hZF9tb2QuX19maWxlX18pCisKICAgICAgICAgICAgIG1vZF9wYXRoID0gVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRAogICAgICAgICAgICAgbW9kX25hbWUgPSBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShtb2RfcGF0aCkKICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZF9uYW1lKQpAQCAtNjIzLDggKzY0MiwxMCBAQAogCiAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihmaWxlbmFtZSkKICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkKLSAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGJ5dGVhcnJheShvcy5mc2VuY29kZShmaWxlbmFtZSkpKQotICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihieXRlYXJyYXkob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQogCiAKIEBzdXBwb3J0LnJlcXVpcmVzX3psaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CmluZGV4IDU5MTM2MjIuLjg0ZDUyNmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgbGluZWNhY2hlCi1pbXBvcnQgcGRiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNmZlYTg5My4uMjAxNzRkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtMTY0LDYgKzE2NCwxNiBAQAogICAgICAgICB4ID0gemxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgpLCBIQU1MRVRfU0NFTkUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgeCA9IHpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4KSwgSEFNTEVUX1NDRU5FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB6bGliLmNvbXByZXNzKGRhdGE9SEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz16bGliLk1BWF9XQklUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZT16bGliLkRFRl9CVUZfU0laRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFNTEVUX1NDRU5FKQorCiAgICAgZGVmIHRlc3Rfc3BlZWNoMTI4KHNlbGYpOgogICAgICAgICAjIGNvbXByZXNzIG1vcmUgZGF0YQogICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTI4CkBAIC0yMzQsNiArMjQ0LDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVuY29uc3VtZWRfdGFpbCwgYnl0ZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVudXNlZF9kYXRhLCBieXRlcykKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRzKHNlbGYpOgorICAgICAgICBsZXZlbCA9IDIKKyAgICAgICAgbWV0aG9kID0gemxpYi5ERUZMQVRFRAorICAgICAgICB3Yml0cyA9IC0xMgorICAgICAgICBtZW1MZXZlbCA9IDkKKyAgICAgICAgc3RyYXRlZ3kgPSB6bGliLlpfRklMVEVSRUQKKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPW1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiaXRzPXdiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtTGV2ZWw9bWVtTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT1zdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpkaWN0PWIiIikKKyAgICAgICAgZG8gPSB6bGliLmRlY29tcHJlc3NvYmood2JpdHM9d2JpdHMsIHpkaWN0PWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY28uY29tcHJlc3MoZGF0YT1IQU1MRVRfU0NFTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRvLmRlY29tcHJlc3MoZGF0YT16bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkpCisgICAgICAgIHggPSBjby5jb21wcmVzcyhIQU1MRVRfU0NFTkUpICsgY28uZmx1c2goKQorICAgICAgICB5ID0gZG8uZGVjb21wcmVzcyh4LCBtYXhfbGVuZ3RoPWxlbihIQU1MRVRfU0NFTkUpKSArIGRvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIQU1MRVRfU0NFTkUsIHkpCisKICAgICBkZWYgdGVzdF9jb21wcmVzc29wdGlvbnMoc2VsZik6CiAgICAgICAgICMgc3BlY2lmeSBsb3RzIG9mIG9wdGlvbnMgdG8gY29tcHJlc3NvYmooKQogICAgICAgICBsZXZlbCA9IDIKQEAgLTI0OSwxMCArMjgwLDYgQEAKICAgICAgICAgeTIgPSBkY28uZmx1c2goKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhBTUxFVF9TQ0VORSwgeTEgKyB5MikKIAotICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIHNob3VsZCBhbHNvIGJlIHN1cHBvcnRlZAotICAgICAgICB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLCBtZXRob2Q9bWV0aG9kLCB3Yml0cz13Yml0cywKLSAgICAgICAgICAgIG1lbUxldmVsPW1lbUxldmVsLCBzdHJhdGVneT1zdHJhdGVneSwgemRpY3Q9YiIiKQotCiAgICAgZGVmIHRlc3RfY29tcHJlc3NpbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgIyBjb21wcmVzcyBvYmplY3QgaW4gc3RlcHMsIGRlY29tcHJlc3Mgb2JqZWN0IGFzIG9uZS1zaG90CiAgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMjgKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDA2YjdiOWIuLjQ4MjlmZjQgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMjIsOSArMjIsMTEgQEAKICMgd2l0aCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSwgd2hpY2ggZG9lc24ndCBwcm92aWRlIHRoZSBvbGQKICMgSmF2YSBpbnNwaXJlZCBuYW1lcy4KIAotX19hbGxfXyA9IFsnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsICdlbnVtZXJhdGUnLCAnRXZlbnQnLAotICAgICAgICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLCAnQmFycmllcicsCi0gICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQorX19hbGxfXyA9IFsnZ2V0X2lkZW50JywgJ2FjdGl2ZV9jb3VudCcsICdDb25kaXRpb24nLCAnY3VycmVudF90aHJlYWQnLAorICAgICAgICAgICAnZW51bWVyYXRlJywgJ21haW5fdGhyZWFkJywgJ1RJTUVPVVRfTUFYJywKKyAgICAgICAgICAgJ0V2ZW50JywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnVGhyZWFkJywKKyAgICAgICAgICAgJ0JhcnJpZXInLCAnQnJva2VuQmFycmllckVycm9yJywgJ1RpbWVyJywgJ1RocmVhZEVycm9yJywKKyAgICAgICAgICAgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCiAKICMgUmVuYW1lIHNvbWUgc3R1ZmYgc28gImZyb20gdGhyZWFkaW5nIGltcG9ydCAqIiBpcyBzYWZlCiBfc3RhcnRfbmV3X3RocmVhZCA9IF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZApkaWZmIC0tZ2l0IGEvTGliL3RpbWVpdC5weSBiL0xpYi90aW1laXQucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAyZGU4OGY3Li4yNzcwZWZhCi0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtMjA3LDYgKzIwNywyNiBAQAogICAgICAgICAgICAgci5hcHBlbmQodCkKICAgICAgICAgcmV0dXJuIHIKIAorICAgIGRlZiBhdXRvcmFuZ2Uoc2VsZiwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGxvb3BzIHNvIHRoYXQgdG90YWwgdGltZSA+PSAwLjIuCisKKyAgICAgICAgQ2FsbHMgdGhlIHRpbWVpdCBtZXRob2Qgd2l0aCAqbnVtYmVyKiBzZXQgdG8gc3VjY2Vzc2l2ZSBwb3dlcnMgb2YKKyAgICAgICAgdGVuICgxMCwgMTAwLCAxMDAwLCAuLi4pIHVwIHRvIGEgbWF4aW11bSBvZiBvbmUgYmlsbGlvbiwgdW50aWwKKyAgICAgICAgdGhlIHRpbWUgdGFrZW4gaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBgYChudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgSWYgKmNhbGxiYWNrKiBpcyBnaXZlbiBhbmQgaXMgbm90IE5vbmUsIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG51bWJlciA9IDEwKippCisgICAgICAgICAgICB0aW1lX3Rha2VuID0gc2VsZi50aW1laXQobnVtYmVyKQorICAgICAgICAgICAgaWYgY2FsbGJhY2s6CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKQorICAgICAgICAgICAgaWYgdGltZV90YWtlbiA+PSAwLjI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIChudW1iZXIsIHRpbWVfdGFrZW4pCisKIGRlZiB0aW1laXQoc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKICAgICAgICAgICAgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgdGltZWl0IG1ldGhvZC4iIiIKQEAgLTI5NSwxNyArMzE1LDE2IEBACiAgICAgdCA9IFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikKICAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICAgIyBkZXRlcm1pbmUgbnVtYmVyIHNvIHRoYXQgMC4yIDw9IHRvdGFsIHRpbWUgPCAyLjAKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB4ID0gdC50aW1laXQobnVtYmVyKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiJWQgbG9vcHMgLT4gJS4qZyBzZWNzIiAlIChudW1iZXIsIHByZWNpc2lvbiwgeCkpCi0gICAgICAgICAgICBpZiB4ID49IDAuMjoKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBjYWxsYmFjayA9IE5vbmUKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIGRlZiBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ7bnVtfSBsb29wcyAtPiB7c2Vjczoue3ByZWN9Z30gc2VjcyIKKyAgICAgICAgICAgICAgICBwcmludChtc2cuZm9ybWF0KG51bT1udW1iZXIsIHNlY3M9dGltZV90YWtlbiwgcHJlYz1wcmVjaXNpb24pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBudW1iZXIsIF8gPSB0LmF1dG9yYW5nZShjYWxsYmFjaykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdC5wcmludF9leGMoKQorICAgICAgICAgICAgcmV0dXJuIDEKICAgICB0cnk6CiAgICAgICAgIHIgPSB0LnJlcGVhdChyZXBlYXQsIG51bWJlcikKICAgICBleGNlcHQ6CkBAIC0zMTcsMjAgKzMzNiwyNiBAQAogICAgIHByaW50KCIlZCBsb29wcywiICUgbnVtYmVyLCBlbmQ9JyAnKQogICAgIHVzZWMgPSBiZXN0ICogMWU2IC8gbnVtYmVyCiAgICAgaWYgdGltZV91bml0IGlzIG5vdCBOb25lOgotICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyAlcyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3VuaXRzW3RpbWVfdW5pdF0sIHRpbWVfdW5pdCkpCisgICAgICAgIHNjYWxlID0gdW5pdHNbdGltZV91bml0XQogICAgIGVsc2U6Ci0gICAgICAgIGlmIHVzZWMgPCAxMDAwOgotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNlYyA9IHVzZWMgLyAxMDAwCi0gICAgICAgICAgICBpZiBtc2VjIDwgMTAwMDoKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBtc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBtc2VjKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VjID0gbXNlYyAvIDEwMDAKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgc2VjKSkKKyAgICAgICAgc2NhbGVzID0gWyhzY2FsZSwgdW5pdCkgZm9yIHVuaXQsIHNjYWxlIGluIHVuaXRzLml0ZW1zKCldCisgICAgICAgIHNjYWxlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgZm9yIHNjYWxlLCB0aW1lX3VuaXQgaW4gc2NhbGVzOgorICAgICAgICAgICAgaWYgdXNlYyA+PSBzY2FsZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy9zY2FsZSwgdGltZV91bml0KSkKKyAgICBiZXN0ID0gbWluKHIpCisgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKKyAgICB3b3JzdCA9IG1heChyKQorICAgIGlmIHdvcnN0ID49IGJlc3QgKiA0OgorICAgICAgICB1c2VjID0gd29yc3QgKiAxZTYgLyBudW1iZXIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICAiVGhlIHRlc3QgcmVzdWx0cyBhcmUgbGlrZWx5IHVucmVsaWFibGUuIFRoZSB3b3JzdFxuIgorICAgICAgICAgICAgInRpbWUgKCUuKmcgJXMpIHdhcyBtb3JlIHRoYW4gZm91ciB0aW1lcyBzbG93ZXIgdGhhbiB0aGUgYmVzdCB0aW1lLiIgJQorICAgICAgICAgICAgKHByZWNpc2lvbiwgdXNlYy9zY2FsZSwgdGltZV91bml0KSwKKyAgICAgICAgICAgICBVc2VyV2FybmluZywgJycsIDApCiAgICAgcmV0dXJuIE5vbmUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggMWVhYWI0NC4uZWUyNDE1ZCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMwLDYgKzMwLDcgQEAKIHRrLm1haW5sb29wKCkKICIiIgogCitpbXBvcnQgZW51bQogaW1wb3J0IHN5cwogCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKQEAgLTEzMiw2ICsxMzMsNTAgQEAKICAgICAgICAgZGljdFtrZXldID0gdmFsdWUKICAgICByZXR1cm4gZGljdAogCisKK2NsYXNzIEV2ZW50VHlwZShzdHIsIGVudW0uRW51bSk6CisgICAgS2V5UHJlc3MgPSAnMicKKyAgICBLZXkgPSBLZXlQcmVzcywKKyAgICBLZXlSZWxlYXNlID0gJzMnCisgICAgQnV0dG9uUHJlc3MgPSAnNCcKKyAgICBCdXR0b24gPSBCdXR0b25QcmVzcywKKyAgICBCdXR0b25SZWxlYXNlID0gJzUnCisgICAgTW90aW9uID0gJzYnCisgICAgRW50ZXIgPSAnNycKKyAgICBMZWF2ZSA9ICc4JworICAgIEZvY3VzSW4gPSAnOScKKyAgICBGb2N1c091dCA9ICcxMCcKKyAgICBLZXltYXAgPSAnMTEnICAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIEV4cG9zZSA9ICcxMicKKyAgICBHcmFwaGljc0V4cG9zZSA9ICcxMycgICAjIHVuZG9jdW1lbnRlZAorICAgIE5vRXhwb3NlID0gJzE0JyAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgVmlzaWJpbGl0eSA9ICcxNScKKyAgICBDcmVhdGUgPSAnMTYnCisgICAgRGVzdHJveSA9ICcxNycKKyAgICBVbm1hcCA9ICcxOCcKKyAgICBNYXAgPSAnMTknCisgICAgTWFwUmVxdWVzdCA9ICcyMCcKKyAgICBSZXBhcmVudCA9ICcyMScKKyAgICBDb25maWd1cmUgPSAnMjInCisgICAgQ29uZmlndXJlUmVxdWVzdCA9ICcyMycKKyAgICBHcmF2aXR5ID0gJzI0JworICAgIFJlc2l6ZVJlcXVlc3QgPSAnMjUnCisgICAgQ2lyY3VsYXRlID0gJzI2JworICAgIENpcmN1bGF0ZVJlcXVlc3QgPSAnMjcnCisgICAgUHJvcGVydHkgPSAnMjgnCisgICAgU2VsZWN0aW9uQ2xlYXIgPSAnMjknICAgIyB1bmRvY3VtZW50ZWQKKyAgICBTZWxlY3Rpb25SZXF1ZXN0ID0gJzMwJyAjIHVuZG9jdW1lbnRlZAorICAgIFNlbGVjdGlvbiA9ICczMScgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgQ29sb3JtYXAgPSAnMzInCisgICAgQ2xpZW50TWVzc2FnZSA9ICczMycgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBNYXBwaW5nID0gJzM0JyAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIFZpcnR1YWxFdmVudCA9ICczNScsICAgICMgdW5kb2N1bWVudGVkCisgICAgQWN0aXZhdGUgPSAnMzYnLAorICAgIERlYWN0aXZhdGUgPSAnMzcnLAorICAgIE1vdXNlV2hlZWwgPSAnMzgnLAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisKIGNsYXNzIEV2ZW50OgogICAgICIiIkNvbnRhaW5lciBmb3IgdGhlIHByb3BlcnRpZXMgb2YgYW4gZXZlbnQuCiAKQEAgLTE3NCw3ICsyMTksNDMgQEAKICAgICB3aWRnZXQgLSB3aWRnZXQgaW4gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkCiAgICAgZGVsdGEgLSBkZWx0YSBvZiB3aGVlbCBtb3ZlbWVudCAoTW91c2VXaGVlbCkKICAgICAiIiIKLSAgICBwYXNzCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhdHRycyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBpZiB2ICE9ICc/Pyd9CisgICAgICAgIGlmIG5vdCBzZWxmLmNoYXI6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ2NoYXInXQorICAgICAgICBlbGlmIHNlbGYuY2hhciAhPSAnPz8nOgorICAgICAgICAgICAgYXR0cnNbJ2NoYXInXSA9IHJlcHIoc2VsZi5jaGFyKQorICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnc2VuZF9ldmVudCcsIFRydWUpOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzZW5kX2V2ZW50J10KKyAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSAwOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzdGF0ZSddCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLnN0YXRlLCBpbnQpOgorICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlCisgICAgICAgICAgICBtb2RzID0gKCdTaGlmdCcsICdMb2NrJywgJ0NvbnRyb2wnLAorICAgICAgICAgICAgICAgICAgICAnTW9kMScsICdNb2QyJywgJ01vZDMnLCAnTW9kNCcsICdNb2Q1JywKKyAgICAgICAgICAgICAgICAgICAgJ0J1dHRvbjEnLCAnQnV0dG9uMicsICdCdXR0b24zJywgJ0J1dHRvbjQnLCAnQnV0dG9uNScpCisgICAgICAgICAgICBzID0gW10KKyAgICAgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2RzKToKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSAmICgxIDw8IGkpOgorICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChuKQorICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZSAmIH4oKDE8PCBsZW4obW9kcykpIC0gMSkKKyAgICAgICAgICAgIGlmIHN0YXRlIG9yIG5vdCBzOgorICAgICAgICAgICAgICAgIHMuYXBwZW5kKGhleChzdGF0ZSkpCisgICAgICAgICAgICBhdHRyc1snc3RhdGUnXSA9ICd8Jy5qb2luKHMpCisgICAgICAgIGlmIHNlbGYuZGVsdGEgPT0gMDoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snZGVsdGEnXQorICAgICAgICAjIHdpZGdldCB1c3VhbGx5IGlzIGtub3duCisgICAgICAgICMgc2VyaWFsIGFuZCB0aW1lIGFyZSBub3QgdmVyeSBpbnRlcmVzdGluZworICAgICAgICAjIGtleXN5bV9udW0gZHVwbGljYXRlcyBrZXlzeW0KKyAgICAgICAgIyB4X3Jvb3QgYW5kIHlfcm9vdCBtb3N0bHkgZHVwbGljYXRlIHggYW5kIHkKKyAgICAgICAga2V5cyA9ICgnc2VuZF9ldmVudCcsCisgICAgICAgICAgICAgICAgJ3N0YXRlJywgJ2tleXN5bScsICdrZXljb2RlJywgJ2NoYXInLAorICAgICAgICAgICAgICAgICdudW0nLCAnZGVsdGEnLCAnZm9jdXMnLAorICAgICAgICAgICAgICAgICd4JywgJ3knLCAnd2lkdGgnLCAnaGVpZ2h0JykKKyAgICAgICAgcmV0dXJuICc8JXMgZXZlbnQlcz4nICUgKAorICAgICAgICAgICAgc2VsZi50eXBlLAorICAgICAgICAgICAgJycuam9pbignICVzPSVzJyAlIChrLCBhdHRyc1trXSkgZm9yIGsgaW4ga2V5cyBpZiBrIGluIGF0dHJzKQorICAgICAgICApCiAKIF9zdXBwb3J0X2RlZmF1bHRfcm9vdCA9IDEKIF9kZWZhdWx0X3Jvb3QgPSBOb25lCkBAIC0yNjIsMTUgKzM0Myw4IEBACiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHZhbHVlIG9mIHZhcmlhYmxlLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpCi0gICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKLSAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgotICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KLSAgICAgICAgIiIiCisgICAgZGVmIF9yZWdpc3RlcihzZWxmLCBjYWxsYmFjayk6CiAgICAgICAgIGYgPSBDYWxsV3JhcHBlcihjYWxsYmFjaywgTm9uZSwgc2VsZi5fcm9vdCkuX19jYWxsX18KICAgICAgICAgY2JuYW1lID0gcmVwcihpZChmKSkKICAgICAgICAgdHJ5OgpAQCAtMjg1LDE4ICszNTksMzMgQEAKICAgICAgICAgaWYgc2VsZi5fdGNsQ29tbWFuZHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzID0gW10KICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMuYXBwZW5kKGNibmFtZSkKLSAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmFyaWFibGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCiAgICAgICAgIHJldHVybiBjYm5hbWUKLSAgICB0cmFjZSA9IHRyYWNlX3ZhcmlhYmxlCi0gICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKworICAgIGRlZiB0cmFjZV9hZGQoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgorICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgorCisgICAgICAgIE1vZGUgaXMgb25lIG9mICJyZWFkIiwgIndyaXRlIiwgInVuc2V0Iiwgb3IgYSBsaXN0IG9yIHR1cGxlIG9mCisgICAgICAgIHN1Y2ggc3RyaW5ncy4KKyAgICAgICAgQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSB2YXJpYWJsZSBpcworICAgICAgICByZWFkLCB3cml0dGVuIG9yIHVuc2V0LgorCisgICAgICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2suCisgICAgICAgICIiIgorICAgICAgICBjYm5hbWUgPSBzZWxmLl9yZWdpc3RlcihjYWxsYmFjaykKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAnYWRkJywgJ3ZhcmlhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lLCBtb2RlLCAoY2JuYW1lLCkpCisgICAgICAgIHJldHVybiBjYm5hbWUKKworICAgIGRlZiB0cmFjZV9yZW1vdmUoc2VsZiwgbW9kZSwgY2JuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKyAgICAgICAgTW9kZSBpcyBvbmUgb2YgInJlYWQiLCAid3JpdGUiLCAidW5zZXQiIG9yIGEgbGlzdCBvciB0dXBsZSBvZgorICAgICAgICBzdWNoIHN0cmluZ3MuICBNdXN0IGJlIHNhbWUgYXMgd2VyZSBzcGVjaWZpZWQgaW4gdHJhY2VfYWRkKCkuCisgICAgICAgIGNibmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV9hZGQoKS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCi0gICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCi0gICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX3ZpbmZvKCk6CisgICAgICAgIHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ3JlbW92ZScsICd2YXJpYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICBmb3IgbSwgY2EgaW4gc2VsZi50cmFjZV9pbmZvKCk6CiAgICAgICAgICAgICBpZiBzZWxmLl90ay5zcGxpdGxpc3QoY2EpWzBdID09IGNibmFtZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgpAQCAtMzA1LDEwICszOTQsNjQgQEAKICAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgIGRlZiB0cmFjZV92aW5mbyhzZWxmKToKKworICAgIGRlZiB0cmFjZV9pbmZvKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLiIiIgorICAgICAgICBzcGxpdGxpc3QgPSBzZWxmLl90ay5zcGxpdGxpc3QKKyAgICAgICAgcmV0dXJuIFsoc3BsaXRsaXN0KGspLCB2KSBmb3IgaywgdiBpbiBtYXAoc3BsaXRsaXN0LAorICAgICAgICAgICAgc3BsaXRsaXN0KHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ2luZm8nLCAndmFyaWFibGUnLCBzZWxmLl9uYW1lKSkpXQorCisgICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKKyAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgorICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCisKKyAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX2FkZCgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3JlZ2lzdGVyKGNhbGxiYWNrKQorICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2YXJpYWJsZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgcmV0dXJuIGNibmFtZQorCisgICAgdHJhY2UgPSB0cmFjZV92YXJpYWJsZQorCisgICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKyAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX3JlbW92ZSgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCisgICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX2luZm8oKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3RrLnNwbGl0bGlzdChjYSlbMF0gPT0gY2JuYW1lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90ay5kZWxldGVjb21tYW5kKGNibmFtZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRyYWNlX3ZpbmZvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfaW5mbygpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCiAgICAgICAgIHJldHVybiBbc2VsZi5fdGsuc3BsaXRsaXN0KHgpIGZvciB4IGluIHNlbGYuX3RrLnNwbGl0bGlzdCgKICAgICAgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZpbmZvIiwgc2VsZi5fbmFtZSkpXQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIkNvbXBhcmlzb24gZm9yIGVxdWFsaXR5ICg9PSkuCiAKQEAgLTQzMCw2ICs1NzMsOSBAQAogCiAgICAgQmFzZSBjbGFzcyB3aGljaCBkZWZpbmVzIG1ldGhvZHMgY29tbW9uIGZvciBpbnRlcmlvciB3aWRnZXRzLiIiIgogCisgICAgIyB1c2VkIGZvciBnZW5lcmF0aW5nIGNoaWxkIHdpZGdldCBuYW1lcworICAgIF9sYXN0X2NoaWxkX2lkcyA9IE5vbmUKKwogICAgICMgWFhYIGZvbnQgY29tbWFuZD8KICAgICBfdGNsQ29tbWFuZHMgPSBOb25lCiAgICAgZGVmIGRlc3Ryb3koc2VsZik6CkBAIC00NzcsMTIgKzYyMyw2IEBACiAgICAgICAgIGRpc2FibGVkRm9yZWdyb3VuZCwgaW5zZXJ0QmFja2dyb3VuZCwgdHJvdWdoQ29sb3IuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgoJ3RrX3NldFBhbGV0dGUnLCkKICAgICAgICAgICAgICAgKyBfZmxhdHRlbihhcmdzKSArIF9mbGF0dGVuKGxpc3Qoa3cuaXRlbXMoKSkpKQotICAgIGRlZiB0a19tZW51QmFyKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiRG8gbm90IHVzZS4gTmVlZGVkIGluIFRrIDMuNiBhbmQgZWFybGllci4iIiIKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX21lbnVCYXIoKSBkb2VzIG5vdGhpbmcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGRlZiB3YWl0X3ZhcmlhYmxlKHNlbGYsIG5hbWU9J1BZX1ZBUicpOgogICAgICAgICAiIiJXYWl0IHVudGlsIHRoZSB2YXJpYWJsZSBpcyBtb2RpZmllZC4KIApAQCAtODU0LDggKzk5NCw3IEBACiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2hlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19pZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgSUQgZm9yIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdykpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi50ay5jYWxsKCd3aW5mbycsICdpZCcsIHNlbGYuX3cpLCAwKQogICAgIGRlZiB3aW5mb19pbnRlcnBzKHNlbGYsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIGFsbCBUY2wgaW50ZXJwcmV0ZXJzIGZvciB0aGlzIGRpc3BsYXkuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2ludGVycHMnKSArIHNlbGYuX2Rpc3BsYXlvZihkaXNwbGF5b2YpCkBAIC05NzUsMTggKzExMTQsMTYgQEAKICAgICBkZWYgd2luZm9fdmlzdWFsaWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgWCBpZGVudGlmaWVyIGZvciB0aGUgdmlzdWFsIGZvciB0aGlzIHdpZGdldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsaWQnLCBzZWxmLl93KQotICAgIGRlZiB3aW5mb192aXN1YWxzYXZhaWxhYmxlKHNlbGYsIGluY2x1ZGVpZHM9MCk6CisgICAgZGVmIHdpbmZvX3Zpc3VhbHNhdmFpbGFibGUoc2VsZiwgaW5jbHVkZWlkcz1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHZpc3VhbHMgYXZhaWxhYmxlIGZvciB0aGUgc2NyZWVuCiAgICAgICAgIG9mIHRoaXMgd2lkZ2V0LgogCiAgICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCBjb25zaXN0cyBvZiBhIHZpc3VhbCBuYW1lIChzZWUgd2luZm9fdmlzdWFsKSwgYQotICAgICAgICBkZXB0aCBhbmQgaWYgSU5DTFVERUlEUz0xIGlzIGdpdmVuIGFsc28gdGhlIFggaWRlbnRpZmllci4iIiIKLSAgICAgICAgZGF0YSA9IHNlbGYudGsuc3BsaXQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWlkcyBhbmQgJ2luY2x1ZGVpZHMnIG9yIE5vbmUpKQotICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICBkYXRhID0gW3NlbGYudGsuc3BsaXQoZGF0YSldCi0gICAgICAgIHJldHVybiBbc2VsZi5fX3dpbmZvX3BhcnNlaXRlbSh4KSBmb3IgeCBpbiAgZGF0YV0KKyAgICAgICAgZGVwdGggYW5kIGlmIGluY2x1ZGVpZHMgaXMgdHJ1ZSBpcyBnaXZlbiBhbHNvIHRoZSBYIGlkZW50aWZpZXIuIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlaWRzJyBpZiBpbmNsdWRlaWRzIGVsc2UgTm9uZSkKKyAgICAgICAgZGF0YSA9IFtzZWxmLnRrLnNwbGl0bGlzdCh4KSBmb3IgeCBpbiBzZWxmLnRrLnNwbGl0bGlzdChkYXRhKV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9fd2luZm9fcGFyc2VpdGVtKHgpIGZvciB4IGluIGRhdGFdCiAgICAgZGVmIF9fd2luZm9fcGFyc2VpdGVtKHNlbGYsIHQpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgcmV0dXJuIHRbOjFdICsgdHVwbGUobWFwKHNlbGYuX193aW5mb19nZXRpbnQsIHRbMTpdKSkKQEAgLTEyODcsNyArMTQyNCwxMCBAQAogICAgICAgICBleGNlcHQgVGNsRXJyb3I6IHBhc3MKICAgICAgICAgZS5rZXlzeW0gPSBLCiAgICAgICAgIGUua2V5c3ltX251bSA9IGdldGludF9ldmVudChOKQotICAgICAgICBlLnR5cGUgPSBUCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGUudHlwZSA9IEV2ZW50VHlwZShUKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGUudHlwZSA9IFQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZS53aWRnZXQgPSBzZWxmLl9uYW1ldG93aWRnZXQoVykKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtMTg5Nyw5ICsyMDM3LDYgQEAKICAgICAgICAgaWYgdGNsX3ZlcnNpb24gIT0gX3RraW50ZXIuVENMX1ZFUlNJT046CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRjbC5oIHZlcnNpb24gKCVzKSBkb2Vzbid0IG1hdGNoIGxpYnRjbC5hIHZlcnNpb24gKCVzKSIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKF90a2ludGVyLlRDTF9WRVJTSU9OLCB0Y2xfdmVyc2lvbikpCi0gICAgICAgIGlmIFRrVmVyc2lvbiA8IDQuMDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGsgNC4wIG9yIGhpZ2hlciBpcyByZXF1aXJlZDsgZm91bmQgVGsgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzdHIoVGtWZXJzaW9uKSkKICAgICAgICAgIyBDcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSB0a2Vycm9yIGFuZCBleGl0IGNvbW1hbmRzCiAgICAgICAgICMgV2UgbmVlZCB0byBpbmxpbmUgcGFydHMgb2YgX3JlZ2lzdGVyIGhlcmUsIF8gcmVnaXN0ZXIKICAgICAgICAgIyB3b3VsZCByZWdpc3RlciBkaWZmZXJlbnRseS1uYW1lZCBjb21tYW5kcy4KQEAgLTIxMjIsNyArMjI1OSwxNSBAQAogICAgICAgICAgICAgbmFtZSA9IGNuZlsnbmFtZSddCiAgICAgICAgICAgICBkZWwgY25mWyduYW1lJ10KICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gcmVwcihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXy5sb3dlcigpCisgICAgICAgICAgICBpZiBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkcyA9IHt9CisgICAgICAgICAgICBjb3VudCA9IG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMuZ2V0KG5hbWUsIDApICsgMQorICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkc1tuYW1lXSA9IGNvdW50CisgICAgICAgICAgICBpZiBjb3VudCA9PSAxOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnISVzJyAlIChuYW1lLCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9ICchJXMlZCcgJSAobmFtZSwgY291bnQpCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIGlmIG1hc3Rlci5fdz09Jy4nOgogICAgICAgICAgICAgc2VsZi5fdyA9ICcuJyArIG5hbWUKQEAgLTI3MTgsMTIgKzI4NjMsNiBAQAogICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6CiAgICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKLSAgICBkZWYgdGtfYmluZEZvclRyYXZlcnNhbChzZWxmKToKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX2JpbmRGb3JUcmF2ZXJzYWwoKSBkb2VzIG5vdGhpbmcgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiQWN0aXZhdGUgZW50cnkgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkKQEAgLTMzNDYsOSArMzQ4NSw2IEBACiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgSW1hZ2UuX2xhc3RfaWQgKz0gMQogICAgICAgICAgICAgbmFtZSA9ICJweWltYWdlJXIiICUgKEltYWdlLl9sYXN0X2lkLCkgIyB0ayBpdHNlbGYgd291bGQgdXNlIGltYWdlPHg+Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIGZvciBzeXN0ZW1zIHdoZXJlIGlkKHgpCi0gICAgICAgICAgICAjIGNhbiByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIsIHN1Y2ggYXMgTGludXgvbTY4azoKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gPT0gJy0nOiBuYW1lID0gJ18nICsgbmFtZVsxOl0KICAgICAgICAgaWYga3cgYW5kIGNuZjogY25mID0gX2NuZm1lcmdlKChjbmYsIGt3KSkKICAgICAgICAgZWxpZiBrdzogY25mID0ga3cKICAgICAgICAgb3B0aW9ucyA9ICgpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKaW5kZXggZDI2ODhkYi4uMWU3NWNhZSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQpAQCAtMTUsMTEgKzE1LDYgQEAKICAgICBjb21tYW5kICA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKipvcHRpb25zKToKLQotICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBwbGFjZWQgb24gdGhlIG1vZHVsZSBsZXZlbCBpbnN0ZWFkPwotICAgICAgICBpZiBUa1ZlcnNpb24gPCA0LjI6Ci0gICAgICAgICAgICByYWlzZSBUY2xFcnJvcigidGhpcyBtb2R1bGUgcmVxdWlyZXMgVGsgNC4yIG9yIG5ld2VyIikKLQogICAgICAgICBzZWxmLm1hc3RlciAgPSBtYXN0ZXIKICAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBub3QgbWFzdGVyIGFuZCBvcHRpb25zLmdldCgncGFyZW50Jyk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9kaWFsb2cucHkKaW5kZXggYmUwODVhYi4uZjYxYzVmNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2RpYWxvZy5weQpAQCAtMywxMCArMyw3IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLWlmIFRrVmVyc2lvbiA8PSAzLjY6Ci0gICAgRElBTE9HX0lDT04gPSAnd2FybmluZycKLWVsc2U6Ci0gICAgRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJworRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJwogCiAKIGNsYXNzIERpYWxvZyhXaWRnZXQpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5IGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CmluZGV4IGRiZTVlODguLjMzZGM1NGEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKQEAgLTcsOCArNyw2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CmluZGV4IDg1ZWUyYzcuLjlkYzFlMzcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKQEAgLTEyLDYgKzEyLDE0IEBACiAgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQsIG5hbWU9J2NoaWxkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnPHRraW50ZXIuRnJhbWUgb2JqZWN0IC50b3AuY2hpbGQ+JykKIAorICAgIGRlZiB0ZXN0X2dlbmVyYXRlZF9uYW1lcyhzZWxmKToKKyAgICAgICAgdCA9IHRraW50ZXIuVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBmID0gdGtpbnRlci5GcmFtZSh0KQorICAgICAgICBmMiA9IHRraW50ZXIuRnJhbWUodCkKKyAgICAgICAgYiA9IHRraW50ZXIuQnV0dG9uKGYyKQorICAgICAgICBmb3IgbmFtZSBpbiBzdHIoYikuc3BsaXQoJy4nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmFtZS5pc2lkZW50aWZpZXIoKSwgbXNnPXJlcHIobmFtZSkpCisKICAgICBkZWYgdGVzdF90a19zZXRQYWxldHRlKHNlbGYpOgogICAgICAgICByb290ID0gc2VsZi5yb290CiAgICAgICAgIHJvb3QudGtfc2V0UGFsZXR0ZSgnYmxhY2snKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQppbmRleCBkOGJhOWNlLi4yZWIxZTEyIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpAQCAtODcsNyArODcsOCBAQAogICAgICAgICB2LnNldCgidmFsdWUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodi5zaWRlX2VmZmVjdCkKIAotICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3RyYWNlX29sZChzZWxmKToKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCiAgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCiAgICAgICAgIHZuYW1lID0gc3RyKHYpCiAgICAgICAgIHRyYWNlID0gW10KQEAgLTEzNiw2ICsxMzcsNTUgQEAKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAndScpXSkKIAorICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQorICAgICAgICB2bmFtZSA9IHN0cih2KQorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiByZWFkX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCdyZWFkJywpICsgYXJncykKKyAgICAgICAgZGVmIHdyaXRlX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCd3cml0ZScsKSArIGFyZ3MpCisgICAgICAgIHRyMSA9IHYudHJhY2VfYWRkKCdyZWFkJywgcmVhZF90cmFjZXIpCisgICAgICAgIHRyMiA9IHYudHJhY2VfYWRkKFsnd3JpdGUnLCAndW5zZXQnXSwgd3JpdGVfdHJhY2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh2LnRyYWNlX2luZm8oKSksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCdyZWFkJywpLCB0cjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ3dyaXRlJywgJ3Vuc2V0JyksIHRyMildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbXSkKKworICAgICAgICB2LnNldCgnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3JlYWQnLCB2bmFtZSwgJycsICdyZWFkJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgaW5mbyA9IHNvcnRlZCh2LnRyYWNlX2luZm8oKSkKKyAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3dyaXRlJywgdHIxKSAgIyBXcm9uZyBtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvcik6CisgICAgICAgICAgICB2LnRyYWNlX3JlbW92ZSgncmVhZCcsICdzcGFtJykgICMgV3JvbmcgY29tbWFuZCBuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCdyZWFkJywgdm5hbWUsICcnLCAncmVhZCcpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIHYudHJhY2VfcmVtb3ZlKCdyZWFkJywgdHIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudHJhY2VfaW5mbygpLCBbKCgnd3JpdGUnLCAndW5zZXQnKSwgdHIyKV0pCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgW10pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgd3JpdGVfdHJhY2VyCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICB2LnNldCgnZWdncycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgdgorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd1bnNldCcpXSkKKwogCiBjbGFzcyBUZXN0U3RyaW5nVmFyKFRlc3RCYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CmluZGV4IGM5MjRkNTUuLjgxYjUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTkxLDkgKzkxLDEwIEBACiAgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXRbJ3VzZSddLCAnJykKICAgICAgICAgcGFyZW50ID0gc2VsZi5jcmVhdGUoY29udGFpbmVyPVRydWUpCi0gICAgICAgIHdpZCA9IHBhcmVudC53aW5mb19pZCgpCi0gICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh3aWRnZXQyWyd1c2UnXSksIHdpZCkKKyAgICAgICAgd2lkID0gaGV4KHBhcmVudC53aW5mb19pZCgpKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3aWQ9d2lkKToKKyAgICAgICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXQyWyd1c2UnXSwgd2lkKQogCiAKIEBhZGRfc3RhbmRhcmRfb3B0aW9ucyhTdGFuZGFyZE9wdGlvbnNUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CmluZGV4IGM2OGE2NTAuLmExYjdjZGYgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQpAQCAtMSw2ICsxLDUgQEAKICMgLSotIGVuY29kaW5nOiB1dGYtOCAtKi0KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgdHRrCiAKIGNsYXNzIE1vY2tUa0FwcDoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKaW5kZXggOGJkMjJkMC4uMjY3NjZhOCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKQEAgLTE0ODcsNiArMTQ4Nyw3IEBACiAKIAogICAgIGRlZiB0ZXN0X3NlbGVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbiwgJ3NwYW0nKQogICAgICAgICAjIGl0ZW0gJ25vbmUnIGRvZXNuJ3QgZXhpc3QKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5zZWxlY3Rpb25fc2V0LCAnbm9uZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uX2FkZCwgJ25vbmUnKQpAQCAtMTUwMCwyNSArMTUwMSwzMSBAQAogICAgICAgICBjMyA9IHNlbGYudHYuaW5zZXJ0KGl0ZW0xLCAnZW5kJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzIsKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBjMiwgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoaXRlbTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgYzIsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBjMiwgaXRlbTIpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZSgoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKGl0ZW0xLCBjMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGMyLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZShjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShjMSwgYzMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKIAogICAgICAgICBzZWxmLnR2Lmluc2VydCgnJywgJ2VuZCcsIGlkPSd3aXRoIHNwYWNlcycpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgnd2l0aCBzcGFjZXMnKQpAQCAtMTUzNiw2ICsxNTQzLDQwIEBACiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChiJ2J5dGVzXHhlMlx4ODJceGFjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoJ2J5dGVzXHhlMlx4ODJceGFjJywpKQogCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCkpCisKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCisKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNyk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgJ0RlcHJlY2F0ZWQgQVBJIG9mIFRyZWV2aWV3LnNlbGVjdGlvbigpIHNob3VsZCBiZSByZW1vdmVkJykKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbignc2V0JywgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ2FkZCcsIChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbigncmVtb3ZlJywgKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ3RvZ2dsZScsIChjMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGYudHYuc2VsZWN0aW9uKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZWN0aW9uLCAoYzMsIGl0ZW0yKSkKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKICAgICAgICAgc2VsZi50dlsnY29sdW1ucyddID0gWydBJywgJ0InXQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGl4LnB5IGIvTGliL3RraW50ZXIvdGl4LnB5CmluZGV4IDJlZDZhNzcuLmU3Y2IxMGEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3RpeC5weQorKysgYi9MaWIvdGtpbnRlci90aXgucHkKQEAgLTMxLDEwICszMSw2IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLSMgV0FSTklORyAtIFRrVmVyc2lvbiBpcyBhIGxpbWl0ZWQgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcgotaWYgVGtWZXJzaW9uIDwgMy45OTk6Ci0gICAgcmFpc2UgSW1wb3J0RXJyb3IoIlRoaXMgdmVyc2lvbiBvZiBUaXgucHkgcmVxdWlyZXMgVGsgNC4wIG9yIGhpZ2hlciIpCi0KIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogCiAjIFNvbWUgbW9yZSBjb25zdGFudHMgKGZvciBjb25zaXN0ZW5jeSB3aXRoIFRraW50ZXIpCkBAIC00NzYsMTYgKzQ3MiwxNyBAQAogICAgICIiIkRpc3BsYXlTdHlsZSAtIGhhbmRsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hhcmVkIGJ5CiAgICAgKG11bHRpcGxlKSBEaXNwbGF5IEl0ZW1zIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbXR5cGUsIGNuZj17fSwgKiprdyk6Ci0gICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgotICAgICAgICAgICAgbWFzdGVyID0ga3dbJ3JlZndpbmRvdyddCi0gICAgICAgIGVsaWYgJ3JlZndpbmRvdycgaW4gY25mOgotICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWFzdGVyID0gdGtpbnRlci5fZGVmYXVsdF9yb290Ci0gICAgICAgICAgICBpZiBub3QgbWFzdGVyOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVG9vIGVhcmx5IHRvIGNyZWF0ZSBkaXNwbGF5IHN0eWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyByb290IHdpbmRvdyIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW10eXBlLCBjbmY9e30sICosIG1hc3Rlcj1Ob25lLCAqKmt3KToKKyAgICAgICAgaWYgbm90IG1hc3RlcjoKKyAgICAgICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgorICAgICAgICAgICAgICAgIG1hc3RlciA9IGt3WydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxpZiAncmVmd2luZG93JyBpbiBjbmY6CisgICAgICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYXN0ZXIgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKKyAgICAgICAgICAgICAgICBpZiBub3QgbWFzdGVyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRvbyBlYXJseSB0byBjcmVhdGUgZGlzcGxheSBzdHlsZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHJvb3Qgd2luZG93IikKICAgICAgICAgc2VsZi50ayA9IG1hc3Rlci50awogICAgICAgICBzZWxmLnN0eWxlbmFtZSA9IHNlbGYudGsuY2FsbCgndGl4RGlzcGxheVN0eWxlJywgaXRlbXR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoY25mLGt3KSApCkBAIC0xMTIwLDcgKzExMTcsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xMTY2LDcgKzExNjMsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xNTg5LDggKzE1ODYsNyBAQAogICAgICAgICAnJydSZXR1cm5zIGEgbGlzdCBvZiBpdGVtcyB3aG9zZSBzdGF0dXMgbWF0Y2hlcyBzdGF0dXMuIElmIHN0YXR1cyBpcwogICAgICBub3Qgc3BlY2lmaWVkLCB0aGUgbGlzdCBvZiBpdGVtcyBpbiB0aGUgIm9uIiBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZC4KICAgICAgTW9kZSBjYW4gYmUgb24sIG9mZiwgZGVmYXVsdCcnJwotICAgICAgICBjID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldHNlbGVjdGlvbicsIG1vZGUpKQotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3QoYykKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0c2VsZWN0aW9uJywgbW9kZSkpCiAKICAgICBkZWYgZ2V0c3RhdHVzKHNlbGYsIGVudHJ5cGF0aCk6CiAgICAgICAgICcnJ1JldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVudHJ5UGF0aC4nJycKQEAgLTE5MTEsNyArMTkwNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLl9vcHRpb25zKHt9LCBrdykpKQogCiAgICAgZGVmIHNpemVfcm93KHNlbGYsIGluZGV4LCAqKmt3KToKQEAgLTE5MzYsNyArMTkzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSByb3cgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgICAgICAgICBzZWxmLCAnc2l6ZScsICdyb3cnLCBpbmRleCwgKnNlbGYuX29wdGlvbnMoe30sIGt3KSkpCiAKICAgICBkZWYgdW5zZXQoc2VsZiwgeCwgeSk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90dGsucHkgYi9MaWIvdGtpbnRlci90dGsucHkKaW5kZXggZjRhNmQ4Yy4uYzQ3NGU2MCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdHRrLnB5CisrKyBiL0xpYi90a2ludGVyL3R0ay5weQpAQCAtMjgsNiArMjgsOCBAQAogaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZsYXR0ZW4sIF9qb2luLCBfc3RyaW5naWZ5LCBfc3BsaXRkaWN0CiAKK19zZW50aW5lbCA9IG9iamVjdCgpCisKICMgVmVyaWZ5IGlmIFRrIGlzIG5ldyBlbm91Z2ggdG8gbm90IG5lZWQgdGhlIFRpbGUgcGFja2FnZQogX1JFUVVJUkVfVElMRSA9IFRydWUgaWYgdGtpbnRlci5Ua1ZlcnNpb24gPCA4LjUgZWxzZSBGYWxzZQogCkBAIC0zODEsNyArMzgzLDkgQEAKICAgICAgICAgYSBzZXF1ZW5jZSBpZGVudGlmeWluZyB0aGUgdmFsdWUgZm9yIHRoYXQgb3B0aW9uLiIiIgogICAgICAgICBpZiBxdWVyeV9vcHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd1txdWVyeV9vcHRdID0gTm9uZQotICAgICAgICByZXR1cm4gX3ZhbF9vcl9kaWN0KHNlbGYudGssIGt3LCBzZWxmLl9uYW1lLCAiY29uZmlndXJlIiwgc3R5bGUpCisgICAgICAgIHJlc3VsdCA9IF92YWxfb3JfZGljdChzZWxmLnRrLCBrdywgc2VsZi5fbmFtZSwgImNvbmZpZ3VyZSIsIHN0eWxlKQorICAgICAgICBpZiByZXN1bHQgb3IgcXVlcnlfb3B0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKICAgICBkZWYgbWFwKHNlbGYsIHN0eWxlLCBxdWVyeV9vcHQ9Tm9uZSwgKiprdyk6CkBAIC00NjYsMTIgKzQ3MCwxNCBAQAogCiAgICAgZGVmIGVsZW1lbnRfbmFtZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCB0aGVtZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKQorICAgICAgICByZXR1cm4gdHVwbGUobi5sc3RyaXAoJy0nKSBmb3IgbiBpbiBzZWxmLnRrLnNwbGl0bGlzdCgKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKSkKIAogCiAgICAgZGVmIGVsZW1lbnRfb3B0aW9ucyhzZWxmLCBlbGVtZW50bmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBlbGVtZW50bmFtZSdzIG9wdGlvbnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkKKyAgICAgICAgcmV0dXJuIHR1cGxlKG8ubHN0cmlwKCctJykgZm9yIG8gaW4gc2VsZi50ay5zcGxpdGxpc3QoCisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkpCiAKIAogICAgIGRlZiB0aGVtZV9jcmVhdGUoc2VsZiwgdGhlbWVuYW1lLCBwYXJlbnQ9Tm9uZSwgc2V0dGluZ3M9Tm9uZSk6CkBAIC0xMzkwLDMxICsxMzk2LDUzIEBACiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VlIiwgaXRlbSkKIAogCi0gICAgZGVmIHNlbGVjdGlvbihzZWxmLCBzZWxvcD1Ob25lLCBpdGVtcz1Ob25lKToKLSAgICAgICAgIiIiSWYgc2Vsb3AgaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBzZWxlY3RlZCBpdGVtcy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtcywgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgIGl0ZW1zID0gKGl0ZW1zLCkKKyAgICBkZWYgc2VsZWN0aW9uKHNlbGYsIHNlbG9wPV9zZW50aW5lbCwgaXRlbXM9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHR1cGxlIG9mIHNlbGVjdGVkIGl0ZW1zLiIiIgorICAgICAgICBpZiBzZWxvcCBpcyBfc2VudGluZWw6CisgICAgICAgICAgICBzZWxvcCA9IE5vbmUKKyAgICAgICAgZWxpZiBzZWxvcCBpcyBOb25lOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJUaGUgc2Vsb3A9Tm9uZSBhcmd1bWVudCBvZiBzZWxlY3Rpb24oKSBpcyBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43IiwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgIGVsaWYgc2Vsb3AgaW4gKCdzZXQnLCAnYWRkJywgJ3JlbW92ZScsICd0b2dnbGUnKToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAiVGhlIHNlbG9wIGFyZ3VtZW50IG9mIHNlbGVjdGlvbigpIGlzIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcsICIKKyAgICAgICAgICAgICAgICAidXNlIHNlbGVjdGlvbl8lcygpIGluc3RlYWQiICUgKHNlbG9wLCksCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWxlY3Rpb24iLCBzZWxvcCwgaXRlbXMpKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3NldChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIml0ZW1zIGJlY29tZXMgdGhlIG5ldyBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJzZXQiLCBpdGVtcykKKyAgICBkZWYgX3NlbGVjdGlvbihzZWxmLCBzZWxvcCwgaXRlbXMpOgorICAgICAgICBpZiBsZW4oaXRlbXMpID09IDEgYW5kIGlzaW5zdGFuY2UoaXRlbXNbMF0sICh0dXBsZSwgbGlzdCkpOgorICAgICAgICAgICAgaXRlbXMgPSBpdGVtc1swXQorCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VsZWN0aW9uIiwgc2Vsb3AsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIkFkZCBpdGVtcyB0byB0aGUgc2VsZWN0aW9uLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigiYWRkIiwgaXRlbXMpCisgICAgZGVmIHNlbGVjdGlvbl9zZXQoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiVGhlIHNwZWNpZmllZCBpdGVtcyBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInNldCIsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIlJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJyZW1vdmUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJBZGQgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgdG8gdGhlIHNlbGVjdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJhZGQiLCBpdGVtcykKIAogCi0gICAgZGVmIHNlbGVjdGlvbl90b2dnbGUoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIGl0ZW0gaW4gaXRlbXMuIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJ0b2dnbGUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJSZW1vdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgZnJvbSB0aGUgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInJlbW92ZSIsIGl0ZW1zKQorCisKKyAgICBkZWYgc2VsZWN0aW9uX3RvZ2dsZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIHNwZWNpZmllZCBpdGVtLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInRvZ2dsZSIsIGl0ZW1zKQogCiAKICAgICBkZWYgc2V0KHNlbGYsIGl0ZW0sIGNvbHVtbj1Ob25lLCB2YWx1ZT1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCBiMWQwYzgzLi44MjVhYTkwIDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gaW8gaW1wb3J0IFRleHRJT1dyYXBwZXIKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGZyb20gdG9rZW4gaW1wb3J0ICoKQEAgLTExOSwxOSArMTIwLDQxIEBACiBJZ25vcmUgPSBXaGl0ZXNwYWNlICsgYW55KHInXFxccj9cbicgKyBXaGl0ZXNwYWNlKSArIG1heWJlKENvbW1lbnQpCiBOYW1lID0gcidcdysnCiAKLUhleG51bWJlciA9IHInMFt4WF1bMC05YS1mQS1GXSsnCi1CaW5udW1iZXIgPSByJzBbYkJdWzAxXSsnCi1PY3RudW1iZXIgPSByJzBbb09dWzAtN10rJwotRGVjbnVtYmVyID0gcicoPzowK3xbMS05XVswLTldKiknCitIZXhudW1iZXIgPSByJzBbeFhdKD86Xz9bMC05YS1mQS1GXSkrJworQmlubnVtYmVyID0gcicwW2JCXSg/Ol8/WzAxXSkrJworT2N0bnVtYmVyID0gcicwW29PXSg/Ol8/WzAtN10pKycKK0RlY251bWJlciA9IHInKD86MCg/Ol8/MCkqfFsxLTldKD86Xz9bMC05XSkqKScKIEludG51bWJlciA9IGdyb3VwKEhleG51bWJlciwgQmlubnVtYmVyLCBPY3RudW1iZXIsIERlY251bWJlcikKLUV4cG9uZW50ID0gcidbZUVdWy0rXT9bMC05XSsnCi1Qb2ludGZsb2F0ID0gZ3JvdXAocidbMC05XStcLlswLTldKicsIHInXC5bMC05XSsnKSArIG1heWJlKEV4cG9uZW50KQotRXhwZmxvYXQgPSByJ1swLTldKycgKyBFeHBvbmVudAorRXhwb25lbnQgPSByJ1tlRV1bLStdP1swLTldKD86Xz9bMC05XSkqJworUG9pbnRmbG9hdCA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpcLig/OlswLTldKD86Xz9bMC05XSkqKT8nLAorICAgICAgICAgICAgICAgICAgIHInXC5bMC05XSg/Ol8/WzAtOV0pKicpICsgbWF5YmUoRXhwb25lbnQpCitFeHBmbG9hdCA9IHInWzAtOV0oPzpfP1swLTldKSonICsgRXhwb25lbnQKIEZsb2F0bnVtYmVyID0gZ3JvdXAoUG9pbnRmbG9hdCwgRXhwZmxvYXQpCi1JbWFnbnVtYmVyID0gZ3JvdXAocidbMC05XStbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQorSW1hZ251bWJlciA9IGdyb3VwKHInWzAtOV0oPzpfP1swLTldKSpbakpdJywgRmxvYXRudW1iZXIgKyByJ1tqSl0nKQogTnVtYmVyID0gZ3JvdXAoSW1hZ251bWJlciwgRmxvYXRudW1iZXIsIEludG51bWJlcikKIAotU3RyaW5nUHJlZml4ID0gcicoPzpbYkJdW3JSXT98W3JSXVtiQl0/fFt1VV0pPycKKyMgUmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcsIHBsdXMgYWxsIG9mIHRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuCitkZWYgX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICAjIFRoZSB2YWxpZCBzdHJpbmcgcHJlZml4ZXMuIE9ubHkgY29udGFpbiB0aGUgbG93ZXIgY2FzZSB2ZXJzaW9ucywKKyAgICAjICBhbmQgZG9uJ3QgY29udGFpbiBhbnkgcGVybXVhdGlvbnMgKGluY2x1ZGUgJ2ZyJywgYnV0IG5vdAorICAgICMgICdyZicpLiBUaGUgdmFyaW91cyBwZXJtdXRhdGlvbnMgd2lsbCBiZSBnZW5lcmF0ZWQuCisgICAgX3ZhbGlkX3N0cmluZ19wcmVmaXhlcyA9IFsnYicsICdyJywgJ3UnLCAnZicsICdicicsICdmciddCisgICAgIyBpZiB3ZSBhZGQgYmluYXJ5IGYtc3RyaW5ncywgYWRkOiBbJ2ZiJywgJ2ZiciddCisgICAgcmVzdWx0ID0gc2V0KFsnJ10pCisgICAgZm9yIHByZWZpeCBpbiBfdmFsaWRfc3RyaW5nX3ByZWZpeGVzOgorICAgICAgICBmb3IgdCBpbiBfaXRlcnRvb2xzLnBlcm11dGF0aW9ucyhwcmVmaXgpOgorICAgICAgICAgICAgIyBjcmVhdGUgYSBsaXN0IHdpdGggdXBwZXIgYW5kIGxvd2VyIHZlcnNpb25zIG9mIGVhY2gKKyAgICAgICAgICAgICMgIGNoYXJhY3RlcgorICAgICAgICAgICAgZm9yIHUgaW4gX2l0ZXJ0b29scy5wcm9kdWN0KCpbKGMsIGMudXBwZXIoKSkgZm9yIGMgaW4gdF0pOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoJycuam9pbih1KSkKKyAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBfY29tcGlsZShleHByKToKKyAgICByZXR1cm4gcmUuY29tcGlsZShleHByLCByZS5VTklDT0RFKQorCisjIE5vdGUgdGhhdCBzaW5jZSBfYWxsX3N0cmluZ19wcmVmaXhlcyBpbmNsdWRlcyB0aGUgZW1wdHkgc3RyaW5nLAorIyAgU3RyaW5nUHJlZml4IGNhbiBiZSB0aGUgZW1wdHkgc3RyaW5nIChtYWtpbmcgaXQgb3B0aW9uYWwpLgorU3RyaW5nUHJlZml4ID0gZ3JvdXAoKl9hbGxfc3RyaW5nX3ByZWZpeGVzKCkpCiAKICMgVGFpbCBlbmQgb2YgJyBzdHJpbmcuCiBTaW5nbGUgPSByIlteJ1xcXSooPzpcXC5bXidcXF0qKSonIgpAQCAtMTY5LDUwICsxOTIsMjUgQEAKIFBzZXVkb0V4dHJhcyA9IGdyb3VwKHInXFxccj9cbnxcWicsIENvbW1lbnQsIFRyaXBsZSkKIFBzZXVkb1Rva2VuID0gV2hpdGVzcGFjZSArIGdyb3VwKFBzZXVkb0V4dHJhcywgTnVtYmVyLCBGdW5ueSwgQ29udFN0ciwgTmFtZSkKIAotZGVmIF9jb21waWxlKGV4cHIpOgotICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCisjIEZvciBhIGdpdmVuIHN0cmluZyBwcmVmaXggcGx1cyBxdW90ZXMsIGVuZHBhdHMgbWFwcyBpdCB0byBhIHJlZ2V4CisjICB0byBtYXRjaCB0aGUgcmVtYWluZGVyIG9mIHRoYXQgc3RyaW5nLiBfcHJlZml4IGNhbiBiZSBlbXB0eSwgZm9yCisjICBhIG5vcm1hbCBzaW5nbGUgb3IgdHJpcGxlIHF1b3RlZCBzdHJpbmcgKHdpdGggbm8gcHJlZml4KS4KK2VuZHBhdHMgPSB7fQorZm9yIF9wcmVmaXggaW4gX2FsbF9zdHJpbmdfcHJlZml4ZXMoKToKKyAgICBlbmRwYXRzW19wcmVmaXggKyAiJyJdID0gU2luZ2xlCisgICAgZW5kcGF0c1tfcHJlZml4ICsgJyInXSA9IERvdWJsZQorICAgIGVuZHBhdHNbX3ByZWZpeCArICInJyciXSA9IFNpbmdsZTMKKyAgICBlbmRwYXRzW19wcmVmaXggKyAnIiIiJ10gPSBEb3VibGUzCiAKLWVuZHBhdHMgPSB7IiciOiBTaW5nbGUsICciJzogRG91YmxlLAotICAgICAgICAgICAiJycnIjogU2luZ2xlMywgJyIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJyJycnIjogU2luZ2xlMywgJ3IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYicnJyI6IFNpbmdsZTMsICdiIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlInJyciOiBTaW5nbGUzLCAnUiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJCJycnIjogU2luZ2xlMywgJ0IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYnInJyciOiBTaW5nbGUzLCAnYnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiYlInJyciOiBTaW5nbGUzLCAnYlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQnInJyciOiBTaW5nbGUzLCAnQnIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQlInJyciOiBTaW5nbGUzLCAnQlIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAicmInJyciOiBTaW5nbGUzLCAncmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUmInJyciOiBTaW5nbGUzLCAnUmIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAickInJyciOiBTaW5nbGUzLCAnckIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiUkInJyciOiBTaW5nbGUzLCAnUkIiIiInOiBEb3VibGUzLAotICAgICAgICAgICAidScnJyI6IFNpbmdsZTMsICd1IiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlUnJyciOiBTaW5nbGUzLCAnVSIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZSwKLSAgICAgICAgICAgJ3UnOiBOb25lLCAnVSc6IE5vbmV9Ci0KLXRyaXBsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInJyciLCAnIiIiJywKLSAgICAgICAgICAicicnJyIsICdyIiIiJywgIlInJyciLCAnUiIiIicsCi0gICAgICAgICAgImInJyciLCAnYiIiIicsICJCJycnIiwgJ0IiIiInLAotICAgICAgICAgICJicicnJyIsICdiciIiIicsICJCcicnJyIsICdCciIiIicsCi0gICAgICAgICAgImJSJycnIiwgJ2JSIiIiJywgIkJSJycnIiwgJ0JSIiIiJywKLSAgICAgICAgICAicmInJyciLCAncmIiIiInLCAickInJyciLCAnckIiIiInLAotICAgICAgICAgICJSYicnJyIsICdSYiIiIicsICJSQicnJyIsICdSQiIiIicsCi0gICAgICAgICAgInUnJyciLCAndSIiIicsICJVJycnIiwgJ1UiIiInLAotICAgICAgICAgICk6Ci0gICAgdHJpcGxlX3F1b3RlZFt0XSA9IHQKLXNpbmdsZV9xdW90ZWQgPSB7fQotZm9yIHQgaW4gKCInIiwgJyInLAotICAgICAgICAgICJyJyIsICdyIicsICJSJyIsICdSIicsCi0gICAgICAgICAgImInIiwgJ2IiJywgIkInIiwgJ0IiJywKLSAgICAgICAgICAiYnInIiwgJ2JyIicsICJCciciLCAnQnIiJywKLSAgICAgICAgICAiYlInIiwgJ2JSIicsICJCUiciLCAnQlIiJyAsCi0gICAgICAgICAgInJiJyIsICdyYiInLCAickInIiwgJ3JCIicsCi0gICAgICAgICAgIlJiJyIsICdSYiInLCAiUkInIiwgJ1JCIicgLAotICAgICAgICAgICJ1JyIsICd1IicsICJVJyIsICdVIicsCi0gICAgICAgICAgKToKLSAgICBzaW5nbGVfcXVvdGVkW3RdID0gdAorIyBBIHNldCBvZiBhbGwgb2YgdGhlIHNpbmdsZSBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmcgcHJlZml4ZXMsCisjICBpbmNsdWRpbmcgdGhlIG9wZW5pbmcgcXVvdGVzLgorc2luZ2xlX3F1b3RlZCA9IHNldCgpCit0cmlwbGVfcXVvdGVkID0gc2V0KCkKK2ZvciB0IGluIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CisgICAgZm9yIHUgaW4gKHQgKyAnIicsIHQgKyAiJyIpOgorICAgICAgICBzaW5nbGVfcXVvdGVkLmFkZCh1KQorICAgIGZvciB1IGluICh0ICsgJyIiIicsIHQgKyAiJycnIik6CisgICAgICAgIHRyaXBsZV9xdW90ZWQuYWRkKHUpCiAKIHRhYnNpemUgPSA4CiAKQEAgLTYyNiw2ICs2MjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgc3Rhc2hlZAogICAgICAgICAgICAgICAgICAgICAgICAgc3Rhc2hlZCA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgeWllbGQgVG9rZW5JbmZvKENPTU1FTlQsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gX2NvbXBpbGUoZW5kcGF0c1t0b2tlbl0pCiAgICAgICAgICAgICAgICAgICAgIGVuZG1hdGNoID0gZW5kcHJvZy5tYXRjaChsaW5lLCBwb3MpCkBAIC02MzgsMTkgKzYzNywzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciA9IGxpbmVbc3RhcnQ6XQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGxpbmUgPSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbCBpbiBzaW5nbGVfcXVvdGVkIG9yIFwKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjJdIGluIHNpbmdsZV9xdW90ZWQgb3IgXAotICAgICAgICAgICAgICAgICAgICB0b2tlbls6M10gaW4gc2luZ2xlX3F1b3RlZDoKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdXAgdG8gdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlIHRva2VuIHRvIHNlZSBpZgorICAgICAgICAgICAgICAgICMgIHRoZXkncmUgaW4gdGhlIHNpbmdsZV9xdW90ZWQgc2V0LiBJZiBzbywgdGhleSBzdGFydAorICAgICAgICAgICAgICAgICMgIGEgc3RyaW5nLgorICAgICAgICAgICAgICAgICMgV2UncmUgdXNpbmcgdGhlIGZpcnN0IDMsIGJlY2F1c2Ugd2UncmUgbG9va2luZyBmb3IKKyAgICAgICAgICAgICAgICAjICAicmInIiAoZm9yIGV4YW1wbGUpIGF0IHRoZSBzdGFydCBvZiB0aGUgdG9rZW4uIElmCisgICAgICAgICAgICAgICAgIyAgd2Ugc3dpdGNoIHRvIGxvbmdlciBwcmVmaXhlcywgdGhpcyBuZWVkcyB0byBiZQorICAgICAgICAgICAgICAgICMgIGFkanVzdGVkLgorICAgICAgICAgICAgICAgICMgTm90ZSB0aGF0IGluaXRpYWwgPT0gdG9rZW5bOjFdLgorICAgICAgICAgICAgICAgICMgQWxzbyBub3RlIHRoYXQgc2luZ2xlIHF1b3RlIGNoZWNraW5nIG11c3QgY29tZSBhZnRlcgorICAgICAgICAgICAgICAgICMgIHRyaXBsZSBxdW90ZSBjaGVja2luZyAoYWJvdmUpLgorICAgICAgICAgICAgICAgIGVsaWYgKGluaXRpYWwgaW4gc2luZ2xlX3F1b3RlZCBvcgorICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzoyXSBpbiBzaW5nbGVfcXVvdGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQpOgogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlblstMV0gPT0gJ1xuJzogICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ID0gKGxudW0sIHN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbaW5pdGlhbF0gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzFdXSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMl1dKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBBZ2FpbiwgdXNpbmcgdGhlIGZpcnN0IDMgY2hhcnMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjICB0b2tlbi4gVGhpcyBpcyBsb29raW5nIGZvciB0aGUgbWF0Y2hpbmcgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjICByZWdleCBmb3IgdGhlIGNvcnJlY3QgdHlwZSBvZiBxdW90ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgY2hhcmFjdGVyLiBTbyBpdCdzIHJlYWxseSBsb29raW5nIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgIyAgZW5kcGF0c1siJyJdIG9yIGVuZHBhdHNbJyInXSwgYnkgdHJ5aW5nIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAjICBza2lwIHN0cmluZyBwcmVmaXggY2hhcmFjdGVycywgaWYgYW55LgorICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHMuZ2V0KGluaXRpYWwpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMV0pIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0cy5nZXQodG9rZW5bMl0pKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciwgbmVlZGNvbnQgPSBsaW5lW3N0YXJ0Ol0sIDEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcmRpbmFyeSBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhTVFJJTkcsIHRva2VuLCBzcG9zLCBlcG9zLCBsaW5lKQorCiAgICAgICAgICAgICAgICAgZWxpZiBpbml0aWFsLmlzaWRlbnRpZmllcigpOiAgICAgICAgICAgICAgICMgb3JkaW5hcnkgbmFtZQogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiAoJ2FzeW5jJywgJ2F3YWl0Jyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhc3luY19kZWY6CmRpZmYgLS1naXQgYS9MaWIvdHJhY2UucHkgYi9MaWIvdHJhY2UucHkKaW5kZXggZjEwODI2Ni4uYWUxNTQ2MSAxMDA3NTUKLS0tIGEvTGliL3RyYWNlLnB5CisrKyBiL0xpYi90cmFjZS5weQpAQCAtNDgsNiArNDgsNyBAQAogICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIGNvdmVyZGlyPSIvdG1wIikKICIiIgogX19hbGxfXyA9IFsnVHJhY2UnLCAnQ292ZXJhZ2VSZXN1bHRzJ10KK2ltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IG9zCiBpbXBvcnQgcmUKQEAgLTU4LDcgKzU5LDYgQEAKIGltcG9ydCBnYwogaW1wb3J0IGRpcwogaW1wb3J0IHBpY2tsZQotZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybiBhcyBfd2FybgogZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKIAogdHJ5OgpAQCAtNzcsNTEgKzc3LDYgQEAKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgIHRocmVhZGluZy5zZXR0cmFjZShOb25lKQogCi1kZWYgX3VzYWdlKG91dGZpbGUpOgotICAgIG91dGZpbGUud3JpdGUoIiIiVXNhZ2U6ICVzIFtPUFRJT05TXSA8ZmlsZT4gW0FSR1NdCi0KLU1ldGEtb3B0aW9uczoKLS0taGVscCAgICAgICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCB0aGVuIGV4aXQuCi0tLXZlcnNpb24gICAgICAgICAgICAgT3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24gdGhlbiBleGl0LgotCi1PdGhlcndpc2UsIGV4YWN0bHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgb3B0aW9ucyBtdXN0IGJlIGdpdmVuOgotLXQsIC0tdHJhY2UgICAgICAgICAgIFByaW50IGVhY2ggbGluZSB0byBzeXMuc3Rkb3V0IGJlZm9yZSBpdCBpcyBleGVjdXRlZC4KLS1jLCAtLWNvdW50ICAgICAgICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZAotICAgICAgICAgICAgICAgICAgICAgIGFuZCB3cml0ZSB0aGUgY291bnRzIHRvIDxtb2R1bGU+LmNvdmVyIGZvciBlYWNoCi0gICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIGV4ZWN1dGVkLCBpbiB0aGUgbW9kdWxlJ3MgZGlyZWN0b3J5LgotICAgICAgICAgICAgICAgICAgICAgIFNlZSBhbHNvIGAtLWNvdmVyZGlyJywgYC0tZmlsZScsIGAtLW5vLXJlcG9ydCcgYmVsb3cuCi0tbCwgLS1saXN0ZnVuY3MgICAgICAgS2VlcCB0cmFjayBvZiB3aGljaCBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkIGF0IGxlYXN0Ci0gICAgICAgICAgICAgICAgICAgICAgb25jZSBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgdG8gc3lzLnN0ZG91dCBhZnRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtIGV4aXRzLgotLVQsIC0tdHJhY2tjYWxscyAgICAgIEtlZXAgdHJhY2sgb2YgY2FsbGVyL2NhbGxlZCBwYWlycyBhbmQgd3JpdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLgotLXIsIC0tcmVwb3J0ICAgICAgICAgIEdlbmVyYXRlIGEgcmVwb3J0IGZyb20gYSBjb3VudHMgZmlsZTsgZG8gbm90IGV4ZWN1dGUKLSAgICAgICAgICAgICAgICAgICAgICBhbnkgY29kZS4gIGAtLWZpbGUnIG11c3Qgc3BlY2lmeSB0aGUgcmVzdWx0cyBmaWxlIHRvCi0gICAgICAgICAgICAgICAgICAgICAgcmVhZCwgd2hpY2ggbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1bgotICAgICAgICAgICAgICAgICAgICAgIHdpdGggYC0tY291bnQgLS1maWxlPUZJTEUnLgotCi1Nb2RpZmllcnM6Ci0tZiwgLS1maWxlPTxmaWxlPiAgICAgRmlsZSB0byBhY2N1bXVsYXRlIGNvdW50cyBvdmVyIHNldmVyYWwgcnVucy4KLS1SLCAtLW5vLXJlcG9ydCAgICAgICBEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4KLSAgICAgICAgICAgICAgICAgICAgICBVc2VmdWwgaWYgeW91IHdhbnQgdG8gYWNjdW11bGF0ZSBvdmVyIHNldmVyYWwgcnVucy4KLS1DLCAtLWNvdmVyZGlyPTxkaXI+ICBEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlcG9ydCBmaWxlcy4gIFRoZSBjb3ZlcmFnZQotICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydCBmb3IgPHBhY2thZ2U+Ljxtb2R1bGU+IGlzIHdyaXR0ZW4gdG8gZmlsZQotICAgICAgICAgICAgICAgICAgICAgIDxkaXI+LzxwYWNrYWdlPi88bW9kdWxlPi5jb3Zlci4KLS1tLCAtLW1pc3NpbmcgICAgICAgICBBbm5vdGF0ZSBleGVjdXRhYmxlIGxpbmVzIHRoYXQgd2VyZSBub3QgZXhlY3V0ZWQKLSAgICAgICAgICAgICAgICAgICAgICB3aXRoICc+Pj4+Pj4gJy4KLS1zLCAtLXN1bW1hcnkgICAgICAgICBXcml0ZSBhIGJyaWVmIHN1bW1hcnkgb24gc3Rkb3V0IGZvciBlYWNoIGZpbGUuCi0gICAgICAgICAgICAgICAgICAgICAgKENhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0LikKLS1nLCAtLXRpbWluZyAgICAgICAgICBQcmVmaXggZWFjaCBsaW5lIHdpdGggdGhlIHRpbWUgc2luY2UgdGhlIHByb2dyYW0gc3RhcnRlZC4KLSAgICAgICAgICAgICAgICAgICAgICBPbmx5IHVzZWQgd2hpbGUgdHJhY2luZy4KLQotRmlsdGVycywgbWF5IGJlIHJlcGVhdGVkIG11bHRpcGxlIHRpbWVzOgotLS1pZ25vcmUtbW9kdWxlPTxtb2Q+IElnbm9yZSB0aGUgZ2l2ZW4gbW9kdWxlKHMpIGFuZCBpdHMgc3VibW9kdWxlcwotICAgICAgICAgICAgICAgICAgICAgIChpZiBpdCBpcyBhIHBhY2thZ2UpLiAgQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBsaXN0IG9mIG1vZHVsZSBuYW1lcwotLS1pZ25vcmUtZGlyPTxkaXI+ICAgIElnbm9yZSBmaWxlcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5IChtdWx0aXBsZQotICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGNhbiBiZSBqb2luZWQgYnkgb3MucGF0aHNlcCkuCi0iIiIgJSBzeXMuYXJndlswXSkKLQogUFJBR01BX05PQ09WRVIgPSAiI3ByYWdtYSBOTyBDT1ZFUiIKIAogIyBTaW1wbGUgcnggdG8gZmluZCBsaW5lcyB3aXRoIG5vIGNvZGUuCkBAIC0yNjUsNyArMjIwLDEzIEBACiAKICAgICBkZWYgd3JpdGVfcmVzdWx0cyhzZWxmLCBzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1GYWxzZSwgY292ZXJkaXI9Tm9uZSk6CiAgICAgICAgICIiIgotICAgICAgICBAcGFyYW0gY292ZXJkaXIKKyAgICAgICAgV3JpdGUgdGhlIGNvdmVyYWdlIHJlc3VsdHMuCisKKyAgICAgICAgOnBhcmFtIHNob3dfbWlzc2luZzogU2hvdyBsaW5lcyB0aGF0IGhhZCBubyBoaXRzLgorICAgICAgICA6cGFyYW0gc3VtbWFyeTogSW5jbHVkZSBjb3ZlcmFnZSBzdW1tYXJ5IHBlciBtb2R1bGUuCisgICAgICAgIDpwYXJhbSBjb3ZlcmRpcjogSWYgTm9uZSwgdGhlIHJlc3VsdHMgb2YgZWFjaCBtb2R1bGUgYXJlIHBsYWNlZCBpbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcnksIG90aGVyd2lzZSBpdCBpcyBpbmNsdWRlZCBpbiB0aGUgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5jYWxsZWRmdW5jczoKICAgICAgICAgICAgIHByaW50KCkKQEAgLTY0NywyMTAgKzYwOCwxMzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWRmdW5jcz1zZWxmLl9jYWxsZWRmdW5jcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZXJzPXNlbGYuX2NhbGxlcnMpCiAKLWRlZiBfZXJyX2V4aXQobXNnKToKLSAgICBzeXMuc3RkZXJyLndyaXRlKCIlczogJXNcbiIgJSAoc3lzLmFyZ3ZbMF0sIG1zZykpCi0gICAgc3lzLmV4aXQoMSkKK2RlZiBtYWluKCk6CiAKLWRlZiBtYWluKGFyZ3Y9Tm9uZSk6Ci0gICAgaW1wb3J0IGdldG9wdAorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSd0cmFjZSAyLjAnKQogCi0gICAgaWYgYXJndiBpcyBOb25lOgotICAgICAgICBhcmd2ID0gc3lzLmFyZ3YKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNYWluIG9wdGlvbnMnLAorICAgICAgICAgICAgJ09uZSBvZiB0aGVzZSAob3IgLS1yZXBvcnQpIG11c3QgYmUgZ2l2ZW4nKQorCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb3VudCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdDb3VudCB0aGUgbnVtYmVyIG9mIHRpbWVzIGVhY2ggbGluZSBpcyBleGVjdXRlZCBhbmQgd3JpdGUgJworICAgICAgICAgICAgICAgICAndGhlIGNvdW50cyB0byA8bW9kdWxlPi5jb3ZlciBmb3IgZWFjaCBtb2R1bGUgZXhlY3V0ZWQsIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtb2R1bGVcJ3MgZGlyZWN0b3J5LiBTZWUgYWxzbyAtLWNvdmVyZGlyLCAtLWZpbGUsICcKKyAgICAgICAgICAgICAgICAgJy0tbm8tcmVwb3J0IGJlbG93LicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10cmFjZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdQcmludCBlYWNoIGxpbmUgdG8gc3lzLnN0ZG91dCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGlzdGZ1bmNzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0tlZXAgdHJhY2sgb2Ygd2hpY2ggZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBhdCBsZWFzdCBvbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byBzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLiAnCisgICAgICAgICAgICAgICAgICdDYW5ub3QgYmUgc3BlY2lmaWVkIGFsb25nc2lkZSAtLXRyYWNlIG9yIC0tY291bnQuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctVCcsICctLXRyYWNrY2FsbHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nS2VlcCB0cmFjayBvZiBjYWxsZXIvY2FsbGVkIHBhaXJzIGFuZCB3cml0ZSB0aGUgcmVzdWx0cyB0byAnCisgICAgICAgICAgICAgICAgICdzeXMuc3Rkb3V0IGFmdGVyIHRoZSBwcm9ncmFtIGV4aXRzLicpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdNb2RpZmllcnMnKQorCisgICAgX2dycCA9IGdycC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKKyAgICBfZ3JwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yZXBvcnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nR2VuZXJhdGUgYSByZXBvcnQgZnJvbSBhIGNvdW50cyBmaWxlOyBkb2VzIG5vdCBleGVjdXRlIGFueSAnCisgICAgICAgICAgICAgICAgICdjb2RlLiAtLWZpbGUgbXVzdCBzcGVjaWZ5IHRoZSByZXN1bHRzIGZpbGUgdG8gcmVhZCwgd2hpY2ggJworICAgICAgICAgICAgICAgICAnbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBpbiBhIHByZXZpb3VzIHJ1biB3aXRoIC0tY291bnQgJworICAgICAgICAgICAgICAgICAnLS1maWxlPUZJTEUnKQorICAgIF9ncnAuYWRkX2FyZ3VtZW50KCctUicsICctLW5vLXJlcG9ydCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdEbyBub3QgZ2VuZXJhdGUgdGhlIGNvdmVyYWdlIHJlcG9ydCBmaWxlcy4gJworICAgICAgICAgICAgICAgICAnVXNlZnVsIGlmIHlvdSB3YW50IHRvIGFjY3VtdWxhdGUgb3ZlciBzZXZlcmFsIHJ1bnMuJykKKworICAgIGdycC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZScsCisgICAgICAgICAgICBoZWxwPSdGaWxlIHRvIGFjY3VtdWxhdGUgY291bnRzIG92ZXIgc2V2ZXJhbCBydW5zJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctQycsICctLWNvdmVyZGlyJywKKyAgICAgICAgICAgIGhlbHA9J0RpcmVjdG9yeSB3aGVyZSB0aGUgcmVwb3J0IGZpbGVzIGdvLiBUaGUgY292ZXJhZ2UgcmVwb3J0ICcKKyAgICAgICAgICAgICAgICAgJ2ZvciA8cGFja2FnZT4uPG1vZHVsZT4gd2lsbCBiZSB3cml0dGVuIHRvIGZpbGUgJworICAgICAgICAgICAgICAgICAnPGRpcj4vPHBhY2thZ2U+Lzxtb2R1bGU+LmNvdmVyJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctbScsICctLW1pc3NpbmcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nQW5ub3RhdGUgZXhlY3V0YWJsZSBsaW5lcyB0aGF0IHdlcmUgbm90IGV4ZWN1dGVkIHdpdGggJworICAgICAgICAgICAgICAgICAnIj4+Pj4+PiAiJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctcycsICctLXN1bW1hcnknLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nV3JpdGUgYSBicmllZiBzdW1tYXJ5IGZvciBlYWNoIGZpbGUgdG8gc3lzLnN0ZG91dC4gJworICAgICAgICAgICAgICAgICAnQ2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQnKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy1nJywgJy0tdGltaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J1ByZWZpeCBlYWNoIGxpbmUgd2l0aCB0aGUgdGltZSBzaW5jZSB0aGUgcHJvZ3JhbSBzdGFydGVkLiAnCisgICAgICAgICAgICAgICAgICdPbmx5IHVzZWQgd2hpbGUgdHJhY2luZycpCisKKyAgICBncnAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdGaWx0ZXJzJywKKyAgICAgICAgICAgICdDYW4gYmUgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1tb2R1bGUnLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgdGhlIGdpdmVuIG1vZHVsZShzKSBhbmQgaXRzIHN1Ym1vZHVsZXMnCisgICAgICAgICAgICAgICAgICcoaWYgaXQgaXMgYSBwYWNrYWdlKS4gQWNjZXB0cyBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgbmFtZXMuJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctLWlnbm9yZS1kaXInLCBhY3Rpb249J2FwcGVuZCcsIGRlZmF1bHQ9W10sCisgICAgICAgICAgICBoZWxwPSdJZ25vcmUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSAnCisgICAgICAgICAgICAgICAgICcobXVsdGlwbGUgZGlyZWN0b3JpZXMgY2FuIGJlIGpvaW5lZCBieSBvcy5wYXRoc2VwKS4nKQorCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZmlsZW5hbWUnLCBuYXJncz0nPycsCisgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHJ1biBhcyBtYWluIHByb2dyYW0nKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2FyZ3VtZW50cycsIG5hcmdzPWFyZ3BhcnNlLlJFTUFJTkRFUiwKKyAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyB0byB0aGUgcHJvZ3JhbScpCisKKyAgICBvcHRzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorCisgICAgaWYgb3B0cy5pZ25vcmVfZGlyOgorICAgICAgICByZWxfcGF0aCA9ICdsaWInLCAncHl0aG9uezAubWFqb3J9LnswLm1pbm9yfScuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pCisgICAgICAgIF9wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAqcmVsX3BhdGgpCisgICAgICAgIF9leGVjX3ByZWZpeCA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgKnJlbF9wYXRoKQorCisgICAgZGVmIHBhcnNlX2lnbm9yZV9kaXIocyk6CisgICAgICAgIHMgPSBvcy5wYXRoLmV4cGFuZHVzZXIob3MucGF0aC5leHBhbmR2YXJzKHMpKQorICAgICAgICBzID0gcy5yZXBsYWNlKCckcHJlZml4JywgX3ByZWZpeCkucmVwbGFjZSgnJGV4ZWNfcHJlZml4JywgX2V4ZWNfcHJlZml4KQorICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChzKQorCisgICAgb3B0cy5pZ25vcmVfbW9kdWxlID0gW21vZC5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIG9wdHMuaWdub3JlX21vZHVsZSBmb3IgbW9kIGluIGkuc3BsaXQoJywnKV0KKyAgICBvcHRzLmlnbm9yZV9kaXIgPSBbcGFyc2VfaWdub3JlX2RpcihzKQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvcHRzLmlnbm9yZV9kaXIgZm9yIHMgaW4gaS5zcGxpdChvcy5wYXRoc2VwKV0KKworICAgIGlmIG9wdHMucmVwb3J0OgorICAgICAgICBpZiBub3Qgb3B0cy5maWxlOgorICAgICAgICAgICAgcGFyc2VyLmVycm9yKCctci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnKQorICAgICAgICByZXN1bHRzID0gQ292ZXJhZ2VSZXN1bHRzKGluZmlsZT1vcHRzLmZpbGUsIG91dGZpbGU9b3B0cy5maWxlKQorICAgICAgICByZXR1cm4gcmVzdWx0cy53cml0ZV9yZXN1bHRzKG9wdHMubWlzc2luZywgb3B0cy5zdW1tYXJ5LCBvcHRzLmNvdmVyZGlyKQorCisgICAgaWYgbm90IGFueShbb3B0cy50cmFjZSwgb3B0cy5jb3VudCwgb3B0cy5saXN0ZnVuY3MsIG9wdHMudHJhY2tjYWxsc10pOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ211c3Qgc3BlY2lmeSBvbmUgb2YgLS10cmFjZSwgLS1jb3VudCwgLS1yZXBvcnQsICcKKyAgICAgICAgICAgICAgICAgICAgICctLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJykKKworICAgIGlmIG9wdHMubGlzdGZ1bmNzIGFuZCAob3B0cy5jb3VudCBvciBvcHRzLnRyYWNlKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KScpCisKKyAgICBpZiBvcHRzLnN1bW1hcnkgYW5kIG5vdCBvcHRzLmNvdW50OgorICAgICAgICBwYXJzZXIuZXJyb3IoJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcpCisKKyAgICBpZiBvcHRzLmZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgIHBhcnNlci5lcnJvcignZmlsZW5hbWUgaXMgbWlzc2luZzogcmVxdWlyZWQgd2l0aCB0aGUgbWFpbiBvcHRpb25zJykKKworICAgIHN5cy5hcmd2ID0gb3B0cy5maWxlbmFtZSwgKm9wdHMuYXJndW1lbnRzCisgICAgc3lzLnBhdGhbMF0gPSBvcy5wYXRoLmRpcm5hbWUob3B0cy5maWxlbmFtZSkKKworICAgIHQgPSBUcmFjZShvcHRzLmNvdW50LCBvcHRzLnRyYWNlLCBjb3VudGZ1bmNzPW9wdHMubGlzdGZ1bmNzLAorICAgICAgICAgICAgICBjb3VudGNhbGxlcnM9b3B0cy50cmFja2NhbGxzLCBpZ25vcmVtb2RzPW9wdHMuaWdub3JlX21vZHVsZSwKKyAgICAgICAgICAgICAgaWdub3JlZGlycz1vcHRzLmlnbm9yZV9kaXIsIGluZmlsZT1vcHRzLmZpbGUsCisgICAgICAgICAgICAgIG91dGZpbGU9b3B0cy5maWxlLCB0aW1pbmc9b3B0cy50aW1pbmcpCiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBwcm9nX2FyZ3YgPSBnZXRvcHQuZ2V0b3B0KGFyZ3ZbMTpdLCAidGNyUmY6ZDptc0M6bFRnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImhlbHAiLCAidmVyc2lvbiIsICJ0cmFjZSIsICJjb3VudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBvcnQiLCAibm8tcmVwb3J0IiwgInN1bW1hcnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZT0iLCAibWlzc2luZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZ25vcmUtbW9kdWxlPSIsICJpZ25vcmUtZGlyPSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3ZlcmRpcj0iLCAibGlzdGZ1bmNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWNrY2FsbHMiLCAidGltaW5nIl0pCisgICAgICAgIHdpdGggb3BlbihvcHRzLmZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgb3B0cy5maWxlbmFtZSwgJ2V4ZWMnKQorICAgICAgICAjIHRyeSB0byBlbXVsYXRlIF9fbWFpbl9fIG5hbWVzcGFjZSBhcyBtdWNoIGFzIHBvc3NpYmxlCisgICAgICAgIGdsb2JzID0geworICAgICAgICAgICAgJ19fZmlsZV9fJzogb3B0cy5maWxlbmFtZSwKKyAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCisgICAgICAgICAgICAnX19wYWNrYWdlX18nOiBOb25lLAorICAgICAgICAgICAgJ19fY2FjaGVkX18nOiBOb25lLAorICAgICAgICB9CisgICAgICAgIHQucnVuY3R4KGNvZGUsIGdsb2JzLCBnbG9icykKKyAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgIHN5cy5leGl0KCJDYW5ub3QgcnVuIGZpbGUgJXIgYmVjYXVzZTogJXMiICUgKHN5cy5hcmd2WzBdLCBlcnIpKQorICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgorICAgICAgICBwYXNzCiAKLSAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKHN5cy5hcmd2WzBdLCBtc2cpKQotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAlIHN5cy5hcmd2WzBdKQotICAgICAgICBzeXMuZXhpdCgxKQorICAgIHJlc3VsdHMgPSB0LnJlc3VsdHMoKQogCi0gICAgdHJhY2UgPSAwCi0gICAgY291bnQgPSAwCi0gICAgcmVwb3J0ID0gMAotICAgIG5vX3JlcG9ydCA9IDAKLSAgICBjb3VudHNfZmlsZSA9IE5vbmUKLSAgICBtaXNzaW5nID0gMAotICAgIGlnbm9yZV9tb2R1bGVzID0gW10KLSAgICBpZ25vcmVfZGlycyA9IFtdCi0gICAgY292ZXJkaXIgPSBOb25lCi0gICAgc3VtbWFyeSA9IDAKLSAgICBsaXN0ZnVuY3MgPSBGYWxzZQotICAgIGNvdW50Y2FsbGVycyA9IEZhbHNlCi0gICAgdGltaW5nID0gRmFsc2UKLQotICAgIGZvciBvcHQsIHZhbCBpbiBvcHRzOgotICAgICAgICBpZiBvcHQgPT0gIi0taGVscCI6Ci0gICAgICAgICAgICBfdXNhZ2Uoc3lzLnN0ZG91dCkKLSAgICAgICAgICAgIHN5cy5leGl0KDApCi0KLSAgICAgICAgaWYgb3B0ID09ICItLXZlcnNpb24iOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgidHJhY2UgMi4wXG4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgICAgICBpZiBvcHQgPT0gIi1UIiBvciBvcHQgPT0gIi0tdHJhY2tjYWxscyI6Ci0gICAgICAgICAgICBjb3VudGNhbGxlcnMgPSBUcnVlCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWwiIG9yIG9wdCA9PSAiLS1saXN0ZnVuY3MiOgotICAgICAgICAgICAgbGlzdGZ1bmNzID0gVHJ1ZQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1nIiBvciBvcHQgPT0gIi0tdGltaW5nIjoKLSAgICAgICAgICAgIHRpbWluZyA9IFRydWUKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItdCIgb3Igb3B0ID09ICItLXRyYWNlIjoKLSAgICAgICAgICAgIHRyYWNlID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1jIiBvciBvcHQgPT0gIi0tY291bnQiOgotICAgICAgICAgICAgY291bnQgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXIiIG9yIG9wdCA9PSAiLS1yZXBvcnQiOgotICAgICAgICAgICAgcmVwb3J0ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1SIiBvciBvcHQgPT0gIi0tbm8tcmVwb3J0IjoKLSAgICAgICAgICAgIG5vX3JlcG9ydCA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItZiIgb3Igb3B0ID09ICItLWZpbGUiOgotICAgICAgICAgICAgY291bnRzX2ZpbGUgPSB2YWwKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItbSIgb3Igb3B0ID09ICItLW1pc3NpbmciOgotICAgICAgICAgICAgbWlzc2luZyA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItQyIgb3Igb3B0ID09ICItLWNvdmVyZGlyIjoKLSAgICAgICAgICAgIGNvdmVyZGlyID0gdmFsCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXMiIG9yIG9wdCA9PSAiLS1zdW1tYXJ5IjoKLSAgICAgICAgICAgIHN1bW1hcnkgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLS1pZ25vcmUtbW9kdWxlIjoKLSAgICAgICAgICAgIGZvciBtb2QgaW4gdmFsLnNwbGl0KCIsIik6Ci0gICAgICAgICAgICAgICAgaWdub3JlX21vZHVsZXMuYXBwZW5kKG1vZC5zdHJpcCgpKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi0taWdub3JlLWRpciI6Ci0gICAgICAgICAgICBmb3IgcyBpbiB2YWwuc3BsaXQob3MucGF0aHNlcCk6Ci0gICAgICAgICAgICAgICAgcyA9IG9zLnBhdGguZXhwYW5kdmFycyhzKQotICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKLQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgImxpYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRleGVjX3ByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICJsaWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQotICAgICAgICAgICAgICAgIGlnbm9yZV9kaXJzLmFwcGVuZChzKQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBhc3NlcnQgMCwgIlNob3VsZCBuZXZlciBnZXQgaGVyZSIKLQotICAgIGlmIGxpc3RmdW5jcyBhbmQgKGNvdW50IG9yIHRyYWNlKToKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tbGlzdGZ1bmNzIGFuZCAoLS10cmFjZSBvciAtLWNvdW50KSIpCi0KLSAgICBpZiBub3QgKGNvdW50IG9yIHRyYWNlIG9yIHJlcG9ydCBvciBsaXN0ZnVuY3Mgb3IgY291bnRjYWxsZXJzKToKLSAgICAgICAgX2Vycl9leGl0KCJtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAiCi0gICAgICAgICAgICAgICAgICAiLS1saXN0ZnVuY3MsIG9yIC0tdHJhY2tjYWxscyIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vX3JlcG9ydDoKLSAgICAgICAgX2Vycl9leGl0KCJjYW5ub3Qgc3BlY2lmeSBib3RoIC0tcmVwb3J0IGFuZCAtLW5vLXJlcG9ydCIpCi0KLSAgICBpZiByZXBvcnQgYW5kIG5vdCBjb3VudHNfZmlsZToKLSAgICAgICAgX2Vycl9leGl0KCItLXJlcG9ydCByZXF1aXJlcyBhIC0tZmlsZSIpCi0KLSAgICBpZiBub19yZXBvcnQgYW5kIGxlbihwcm9nX2FyZ3YpID09IDA6Ci0gICAgICAgIF9lcnJfZXhpdCgibWlzc2luZyBuYW1lIG9mIGZpbGUgdG8gcnVuIikKLQotICAgICMgZXZlcnl0aGluZyBpcyByZWFkeQotICAgIGlmIHJlcG9ydDoKLSAgICAgICAgcmVzdWx0cyA9IENvdmVyYWdlUmVzdWx0cyhpbmZpbGU9Y291bnRzX2ZpbGUsIG91dGZpbGU9Y291bnRzX2ZpbGUpCi0gICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotICAgIGVsc2U6Ci0gICAgICAgIHN5cy5hcmd2ID0gcHJvZ19hcmd2Ci0gICAgICAgIHByb2duYW1lID0gcHJvZ19hcmd2WzBdCi0gICAgICAgIHN5cy5wYXRoWzBdID0gb3MucGF0aC5zcGxpdChwcm9nbmFtZSlbMF0KLQotICAgICAgICB0ID0gVHJhY2UoY291bnQsIHRyYWNlLCBjb3VudGZ1bmNzPWxpc3RmdW5jcywKLSAgICAgICAgICAgICAgICAgIGNvdW50Y2FsbGVycz1jb3VudGNhbGxlcnMsIGlnbm9yZW1vZHM9aWdub3JlX21vZHVsZXMsCi0gICAgICAgICAgICAgICAgICBpZ25vcmVkaXJzPWlnbm9yZV9kaXJzLCBpbmZpbGU9Y291bnRzX2ZpbGUsCi0gICAgICAgICAgICAgICAgICBvdXRmaWxlPWNvdW50c19maWxlLCB0aW1pbmc9dGltaW5nKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocHJvZ25hbWUpIGFzIGZwOgotICAgICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGZwLnJlYWQoKSwgcHJvZ25hbWUsICdleGVjJykKLSAgICAgICAgICAgICMgdHJ5IHRvIGVtdWxhdGUgX19tYWluX18gbmFtZXNwYWNlIGFzIG11Y2ggYXMgcG9zc2libGUKLSAgICAgICAgICAgIGdsb2JzID0gewotICAgICAgICAgICAgICAgICdfX2ZpbGVfXyc6IHByb2duYW1lLAotICAgICAgICAgICAgICAgICdfX25hbWVfXyc6ICdfX21haW5fXycsCi0gICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogTm9uZSwKLSAgICAgICAgICAgICAgICAnX19jYWNoZWRfXyc6IE5vbmUsCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0LnJ1bmN0eChjb2RlLCBnbG9icywgZ2xvYnMpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKLSAgICAgICAgICAgIF9lcnJfZXhpdCgiQ2Fubm90IHJ1biBmaWxlICVyIGJlY2F1c2U6ICVzIiAlIChzeXMuYXJndlswXSwgZXJyKSkKLSAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQ6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgcmVzdWx0cyA9IHQucmVzdWx0cygpCi0KLSAgICAgICAgaWYgbm90IG5vX3JlcG9ydDoKLSAgICAgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhtaXNzaW5nLCBzdW1tYXJ5PXN1bW1hcnksIGNvdmVyZGlyPWNvdmVyZGlyKQotCi0jICBEZXByZWNhdGVkIEFQSQotZGVmIHVzYWdlKG91dGZpbGUpOgotICAgIF93YXJuKCJUaGUgdHJhY2UudXNhZ2UoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICBfdXNhZ2Uob3V0ZmlsZSkKLQotY2xhc3MgSWdub3JlKF9JZ25vcmUpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGVzPU5vbmUsIGRpcnM9Tm9uZSk6Ci0gICAgICAgIF93YXJuKCJUaGUgY2xhc3MgdHJhY2UuSWdub3JlIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgX0lnbm9yZS5fX2luaXRfXyhzZWxmLCBtb2R1bGVzLCBkaXJzKQotCi1kZWYgbW9kbmFtZShwYXRoKToKLSAgICBfd2FybigiVGhlIHRyYWNlLm1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX21vZG5hbWUocGF0aCkKLQotZGVmIGZ1bGxtb2RuYW1lKHBhdGgpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZnVsbG1vZG5hbWUoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2Z1bGxtb2RuYW1lKHBhdGgpCi0KLWRlZiBmaW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXNfZnJvbV9jb2RlKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2xpbmVzX2Zyb21fY29kZShjb2RlLCBzdHJzKQotCi1kZWYgZmluZF9saW5lcyhjb2RlLCBzdHJzKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfbGluZXMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfbGluZXMoY29kZSwgc3RycykKLQotZGVmIGZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5maW5kX3N0cmluZ3MoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICByZXR1cm4gX2ZpbmRfc3RyaW5ncyhmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSkKLQotZGVmIGZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKGZpbGVuYW1lKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZpbmRfZXhlY3V0YWJsZV9saW5lbm9zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmaWxlbmFtZSkKKyAgICBpZiBub3Qgb3B0cy5ub19yZXBvcnQ6CisgICAgICAgIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhvcHRzLm1pc3NpbmcsIG9wdHMuc3VtbWFyeSwgb3B0cy5jb3ZlcmRpcikKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdHJhY2ViYWNrLnB5IGIvTGliL3RyYWNlYmFjay5weQppbmRleCBjNWZkNjE3Li4wOWJkYTcxIDEwMDY0NAotLS0gYS9MaWIvdHJhY2ViYWNrLnB5CisrKyBiL0xpYi90cmFjZWJhY2sucHkKQEAgLTM4NSw5ICszODUsMzAgQEAKICAgICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCiAgICAgICAgIEVhY2ggc3RyaW5nIGVuZHMgaW4gYSBuZXdsaW5lOyB0aGUgc3RyaW5ncyBtYXkgY29udGFpbiBpbnRlcm5hbAogICAgICAgICBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMgd2l0aCBzb3VyY2UgdGV4dCBsaW5lcy4KKworICAgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgICAgcmVwZXRpdGlvbnMgYXJlIHNob3duLCBmb2xsb3dlZCBieSBhIHN1bW1hcnkgbGluZSBzdGF0aW5nIHRoZSBleGFjdAorICAgICAgICBudW1iZXIgb2YgZnVydGhlciByZXBldGl0aW9ucy4KICAgICAgICAgIiIiCiAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGxhc3RfZmlsZSA9IE5vbmUKKyAgICAgICAgbGFzdF9saW5lID0gTm9uZQorICAgICAgICBsYXN0X25hbWUgPSBOb25lCisgICAgICAgIGNvdW50ID0gMAogICAgICAgICBmb3IgZnJhbWUgaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIChsYXN0X2ZpbGUgaXMgbm90IE5vbmUgYW5kIGxhc3RfZmlsZSA9PSBmcmFtZS5maWxlbmFtZSBhbmQKKyAgICAgICAgICAgICAgICBsYXN0X2xpbmUgaXMgbm90IE5vbmUgYW5kIGxhc3RfbGluZSA9PSBmcmFtZS5saW5lbm8gYW5kCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lIGlzIG5vdCBOb25lIGFuZCBsYXN0X25hbWUgPT0gZnJhbWUubmFtZSk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZicgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIHtjb3VudC0zfSBtb3JlIHRpbWVzXVxuJykKKyAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSBmcmFtZS5maWxlbmFtZQorICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IGZyYW1lLmxpbmVubworICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IGZyYW1lLm5hbWUKKyAgICAgICAgICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgICAgIGlmIGNvdW50ID49IDM6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIHJvdyA9IFtdCiAgICAgICAgICAgICByb3cuYXBwZW5kKCcgIEZpbGUgInt9IiwgbGluZSB7fSwgaW4ge31cbicuZm9ybWF0KAogICAgICAgICAgICAgICAgIGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8sIGZyYW1lLm5hbWUpKQpAQCAtMzk3LDYgKzQxOCw4IEBACiAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChmcmFtZS5sb2NhbHMuaXRlbXMoKSk6CiAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmQoJyAgICB7bmFtZX0gPSB7dmFsdWV9XG4nLmZvcm1hdChuYW1lPW5hbWUsIHZhbHVlPXZhbHVlKSkKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJycuam9pbihyb3cpKQorICAgICAgICBpZiBjb3VudCA+IDM6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnQtM30gbW9yZSB0aW1lc11cbicpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogCkBAIC00ODcsMTAgKzUxMCw5IEBACiAgICAgICAgICAgICBzZWxmLl9sb2FkX2xpbmVzKCkKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2V4Y2VwdGlvbihzZWxmLCBleGMsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIGZyb21fZXhjZXB0aW9uKGNscywgZXhjLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJDcmVhdGUgYSBUcmFjZWJhY2tFeGNlcHRpb24gZnJvbSBhbiBleGNlcHRpb24uIiIiCi0gICAgICAgIHJldHVybiBUcmFjZWJhY2tFeGNlcHRpb24oCi0gICAgICAgICAgICB0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGNscyh0eXBlKGV4YyksIGV4YywgZXhjLl9fdHJhY2ViYWNrX18sICphcmdzLCAqKmt3YXJncykKIAogICAgIGRlZiBfbG9hZF9saW5lcyhzZWxmKToKICAgICAgICAgIiIiUHJpdmF0ZSBBUEkuIGZvcmNlIGFsbCBsaW5lcyBpbiB0aGUgc3RhY2sgdG8gYmUgbG9hZGVkLiIiIgpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlbWFsbG9jLnB5IGIvTGliL3RyYWNlbWFsbG9jLnB5CmluZGV4IDYyODhkYTguLjc1YjM5MTggMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdHJhY2VtYWxsb2MucHkKQEAgLTI0NCwxNyArMjQ0LDIxIEBACiAgICAgX19zbG90c19fID0gKCJfdHJhY2UiLCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFjZSk6Ci0gICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKHNpemUsIHRyYWNlYmFjayksIHNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IKLSAgICAgICAgIyBmb3IgdGhlIGZvcm1hdCBvZiB0aGUgdHJhY2ViYWNrIHR1cGxlCisgICAgICAgICMgdHJhY2UgaXMgYSB0dXBsZTogKGRvbWFpbjogaW50LCBzaXplOiBpbnQsIHRyYWNlYmFjazogdHVwbGUpLgorICAgICAgICAjIFNlZSBUcmFjZWJhY2sgY29uc3RydWN0b3IgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIHRyYWNlYmFjayB0dXBsZS4KICAgICAgICAgc2VsZi5fdHJhY2UgPSB0cmFjZQogCiAgICAgQHByb3BlcnR5Ci0gICAgZGVmIHNpemUoc2VsZik6CisgICAgZGVmIGRvbWFpbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzBdCiAKICAgICBAcHJvcGVydHkKKyAgICBkZWYgc2l6ZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyYWNlWzFdCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgdHJhY2ViYWNrKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzFdKQorICAgICAgICByZXR1cm4gVHJhY2ViYWNrKHNlbGYuX3RyYWNlWzJdKQogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiAoc2VsZi5fdHJhY2UgPT0gb3RoZXIuX3RyYWNlKQpAQCAtMjY2LDggKzI3MCw4IEBACiAgICAgICAgIHJldHVybiAiJXM6ICVzIiAlIChzZWxmLnRyYWNlYmFjaywgX2Zvcm1hdF9zaXplKHNlbGYuc2l6ZSwgRmFsc2UpKQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKCI8VHJhY2Ugc2l6ZT0lcywgdHJhY2ViYWNrPSVyPiIKLSAgICAgICAgICAgICAgICAlIChfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKKyAgICAgICAgcmV0dXJuICgiPFRyYWNlIGRvbWFpbj0lcyBzaXplPSVzLCB0cmFjZWJhY2s9JXI+IgorICAgICAgICAgICAgICAgICUgKHNlbGYuZG9tYWluLCBfZm9ybWF0X3NpemUoc2VsZi5zaXplLCBGYWxzZSksIHNlbGYudHJhY2ViYWNrKSkKIAogCiBjbGFzcyBfVHJhY2VzKFNlcXVlbmNlKToKQEAgLTMwMiwxOSArMzA2LDI5IEBACiAgICAgcmV0dXJuIGZpbGVuYW1lCiAKIAotY2xhc3MgRmlsdGVyOgorY2xhc3MgQmFzZUZpbHRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlKToKKyAgICAgICAgc2VsZi5pbmNsdXNpdmUgPSBpbmNsdXNpdmUKKworICAgIGRlZiBfbWF0Y2goc2VsZiwgdHJhY2UpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKworY2xhc3MgRmlsdGVyKEJhc2VGaWx0ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUsIGZpbGVuYW1lX3BhdHRlcm4sCi0gICAgICAgICAgICAgICAgIGxpbmVubz1Ob25lLCBhbGxfZnJhbWVzPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgbGluZW5vPU5vbmUsIGFsbF9mcmFtZXM9RmFsc2UsIGRvbWFpbj1Ob25lKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCiAgICAgICAgIHNlbGYuaW5jbHVzaXZlID0gaW5jbHVzaXZlCiAgICAgICAgIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4gPSBfbm9ybWFsaXplX2ZpbGVuYW1lKGZpbGVuYW1lX3BhdHRlcm4pCiAgICAgICAgIHNlbGYubGluZW5vID0gbGluZW5vCiAgICAgICAgIHNlbGYuYWxsX2ZyYW1lcyA9IGFsbF9mcmFtZXMKKyAgICAgICAgc2VsZi5kb21haW4gPSBkb21haW4KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBmaWxlbmFtZV9wYXR0ZXJuKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZW5hbWVfcGF0dGVybgogCi0gICAgZGVmIF9fbWF0Y2hfZnJhbWUoc2VsZiwgZmlsZW5hbWUsIGxpbmVubyk6CisgICAgZGVmIF9tYXRjaF9mcmFtZV9pbXBsKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgogICAgICAgICBmaWxlbmFtZSA9IF9ub3JtYWxpemVfZmlsZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgIGlmIG5vdCBmbm1hdGNoLmZubWF0Y2goZmlsZW5hbWUsIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4pOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0zMjQsMTEgKzMzOCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIChsaW5lbm8gPT0gc2VsZi5saW5lbm8pCiAKICAgICBkZWYgX21hdGNoX2ZyYW1lKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgotICAgICAgICByZXR1cm4gc2VsZi5fX21hdGNoX2ZyYW1lKGZpbGVuYW1lLCBsaW5lbm8pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykgXiAobm90IHNlbGYuaW5jbHVzaXZlKQogCiAgICAgZGVmIF9tYXRjaF90cmFjZWJhY2soc2VsZiwgdHJhY2ViYWNrKToKICAgICAgICAgaWYgc2VsZi5hbGxfZnJhbWVzOgotICAgICAgICAgICAgaWYgYW55KHNlbGYuX19tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQorICAgICAgICAgICAgaWYgYW55KHNlbGYuX21hdGNoX2ZyYW1lX2ltcGwoZmlsZW5hbWUsIGxpbmVubykKICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZW5hbWUsIGxpbmVubyBpbiB0cmFjZWJhY2spOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmluY2x1c2l2ZQogICAgICAgICAgICAgZWxzZToKQEAgLTMzNyw2ICszNTEsMzAgQEAKICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8gPSB0cmFjZWJhY2tbMF0KICAgICAgICAgICAgIHJldHVybiBzZWxmLl9tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKQogCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmVzID0gc2VsZi5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgaWYgc2VsZi5kb21haW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLmluY2x1c2l2ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIGFuZCAoZG9tYWluID09IHNlbGYuZG9tYWluKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzIG9yIChkb21haW4gIT0gc2VsZi5kb21haW4pCisgICAgICAgIHJldHVybiByZXMKKworCitjbGFzcyBEb21haW5GaWx0ZXIoQmFzZUZpbHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluY2x1c2l2ZSwgZG9tYWluKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhpbmNsdXNpdmUpCisgICAgICAgIHNlbGYuX2RvbWFpbiA9IGRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbWFpbgorCisgICAgZGVmIF9tYXRjaChzZWxmLCB0cmFjZSk6CisgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgcmV0dXJuIChkb21haW4gPT0gc2VsZi5kb21haW4pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKKwogCiBjbGFzcyBTbmFwc2hvdDoKICAgICAiIiIKQEAgLTM2NSwxMyArNDAzLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gcGlja2xlLmxvYWQoZnApCiAKICAgICBkZWYgX2ZpbHRlcl90cmFjZShzZWxmLCBpbmNsdWRlX2ZpbHRlcnMsIGV4Y2x1ZGVfZmlsdGVycywgdHJhY2UpOgotICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZVsxXQogICAgICAgICBpZiBpbmNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBub3QgYW55KHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIG5vdCBhbnkodHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRyYWNlX2ZpbHRlciBpbiBpbmNsdWRlX2ZpbHRlcnMpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBleGNsdWRlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBhbnkobm90IHRyYWNlX2ZpbHRlci5fbWF0Y2hfdHJhY2ViYWNrKHRyYWNlYmFjaykKKyAgICAgICAgICAgIGlmIGFueShub3QgdHJhY2VfZmlsdGVyLl9tYXRjaCh0cmFjZSkKICAgICAgICAgICAgICAgICAgICBmb3IgdHJhY2VfZmlsdGVyIGluIGV4Y2x1ZGVfZmlsdGVycyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zNzksOCArNDE2LDggQEAKICAgICBkZWYgZmlsdGVyX3RyYWNlcyhzZWxmLCBmaWx0ZXJzKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIG5ldyBTbmFwc2hvdCBpbnN0YW5jZSB3aXRoIGEgZmlsdGVyZWQgdHJhY2VzIHNlcXVlbmNlLCBmaWx0ZXJzCi0gICAgICAgIGlzIGEgbGlzdCBvZiBGaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYQotICAgICAgICBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KKyAgICAgICAgaXMgYSBsaXN0IG9mIEZpbHRlciBvciBEb21haW5GaWx0ZXIgaW5zdGFuY2VzLiAgSWYgZmlsdGVycyBpcyBhbiBlbXB0eQorICAgICAgICBsaXN0LCByZXR1cm4gYSBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbHRlcnMsIEl0ZXJhYmxlKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsdGVycyBtdXN0IGJlIGEgbGlzdCBvZiBmaWx0ZXJzLCBub3QgJXMiCkBAIC00MTIsNyArNDQ5LDcgQEAKICAgICAgICAgdHJhY2ViYWNrcyA9IHt9CiAgICAgICAgIGlmIG5vdCBjdW11bGF0aXZlOgogICAgICAgICAgICAgZm9yIHRyYWNlIGluIHNlbGYudHJhY2VzLl90cmFjZXM6Ci0gICAgICAgICAgICAgICAgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW3RyYWNlX3RyYWNlYmFja10KICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC00MzMsNyArNDcwLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgY3VtdWxhdGl2ZSBzdGF0aXN0aWNzCiAgICAgICAgICAgICBmb3IgdHJhY2UgaW4gc2VsZi50cmFjZXMuX3RyYWNlczoKLSAgICAgICAgICAgICAgICBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQorICAgICAgICAgICAgICAgIGRvbWFpbiwgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKICAgICAgICAgICAgICAgICBmb3IgZnJhbWUgaW4gdHJhY2VfdHJhY2ViYWNrOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tzW2ZyYW1lXQpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQppbmRleCA3MTFkMGFiLi4wYTU4MzMyIDEwMDY0NAotLS0gYS9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQorKysgYi9MaWIvdHVydGxlZGVtby9fX21haW5fXy5weQpAQCAtODksMTMgKzg5LDEyIEBACiBpbXBvcnQgb3MKIAogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKLWZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi1mcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfdGV4dAorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IsIGNvbG9yX2NvbmZpZworZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKK2Zyb20gaWRsZWxpYi50ZXh0dmlldyBpbXBvcnQgdmlld190ZXh0CiBmcm9tIHR1cnRsZWRlbW8gaW1wb3J0IF9fZG9jX18gYXMgYWJvdXRfdHVydGxlZGVtbwogCiBpbXBvcnQgdHVydGxlCi1pbXBvcnQgdGltZQogCiBkZW1vX2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQogZGFyd2luID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCmRpZmYgLS1naXQgYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5IGIvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weQppbmRleCA2NGIxZDdkLi5iM2IwOTViIDEwMDc1NQotLS0gYS9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5CisrKyBiL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkKQEAgLTIyLDcgKzIyLDYgQEAKIG1vZGUgYXMgZmFzdCBhcyBwb3NzaWJsZS4KICIiIgogCi1pbXBvcnQgbWF0aAogZnJvbSB0dXJ0bGUgaW1wb3J0IFR1cnRsZSwgbWFpbmxvb3AKIGZyb20gdGltZSBpbXBvcnQgY2xvY2sKIApkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5IGIvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5CmluZGV4IDI2YWJmZGIuLjAyMWZmOTkgMTAwNzU1Ci0tLSBhL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weQorKysgYi9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkKQEAgLTE4LDcgKzE4LDYgQEAKIAogIiIiCiBmcm9tIHR1cnRsZSBpbXBvcnQgU2hhcGUsIFR1cnRsZSwgbWFpbmxvb3AsIFZlYzJEIGFzIFZlYwotZnJvbSB0aW1lIGltcG9ydCBzbGVlcAogCiBHID0gOAogCmRpZmYgLS1naXQgYS9MaWIvdHlwZXMucHkgYi9MaWIvdHlwZXMucHkKaW5kZXggNDg4OTFjZC4uZDhkODQ3MCAxMDA2NDQKLS0tIGEvTGliL3R5cGVzLnB5CisrKyBiL0xpYi90eXBlcy5weQpAQCAtMjQsNiArMjQsMTEgQEAKIENvcm91dGluZVR5cGUgPSB0eXBlKF9jKQogX2MuY2xvc2UoKSAgIyBQcmV2ZW50IFJlc291cmNlV2FybmluZwogCithc3luYyBkZWYgX2FnKCk6CisgICAgeWllbGQKK19hZyA9IF9hZygpCitBc3luY0dlbmVyYXRvclR5cGUgPSB0eXBlKF9hZykKKwogY2xhc3MgX0M6CiAgICAgZGVmIF9tKHNlbGYpOiBwYXNzCiBNZXRob2RUeXBlID0gdHlwZShfQygpLl9tKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L21vY2sucHkgYi9MaWIvdW5pdHRlc3QvbW9jay5weQppbmRleCA2Njk4OTBhLi5mMTM0OTE5IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbW9jay5weQorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtNjAsMTggKzYwLDYgQEAKICAgICApCiAKIAotY2xhc3MgX3Nsb3R0ZWQob2JqZWN0KToKLSAgICBfX3Nsb3RzX18gPSBbJ2EnXQotCi0KLSMgRG8gbm90IHVzZSB0aGlzIHR1cGxlLiAgSXQgd2FzIG5ldmVyIGRvY3VtZW50ZWQgYXMgYSBwdWJsaWMgQVBJLgotIyBJdCB3aWxsIGJlIHJlbW92ZWQuICBJdCBoYXMgbm8gb2J2aW91cyBzaWducyBvZiB1c2VycyBvbiBnaXRodWIuCi1EZXNjcmlwdG9yVHlwZXMgPSAoCi0gICAgdHlwZShfc2xvdHRlZC5hKSwKLSAgICBwcm9wZXJ0eSwKLSkKLQotCiBkZWYgX2dldF9zaWduYXR1cmVfb2JqZWN0KGZ1bmMsIGFzX2luc3RhbmNlLCBlYXRfc2VsZik6CiAgICAgIiIiCiAgICAgR2l2ZW4gYW4gYXJiaXRyYXJ5LCBwb3NzaWJseSBjYWxsYWJsZSBvYmplY3QsIHRyeSB0byBjcmVhdGUgYSBzdWl0YWJsZQpAQCAtMjA1LDYgKzE5MywxMiBAQAogCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfbm90X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZSgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKmFyZ3MsICoqa3dhcmdzKQogICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgqYXJncywgKiprd2FyZ3MpCiAgICAgZGVmIGFzc2VydF9oYXNfY2FsbHMoKmFyZ3MsICoqa3dhcmdzKToKQEAgLTIzNSw2ICsyMjksOSBAQAogICAgIGZ1bmNvcHkuYXNzZXJ0X2hhc19jYWxscyA9IGFzc2VydF9oYXNfY2FsbHMKICAgICBmdW5jb3B5LmFzc2VydF9hbnlfY2FsbCA9IGFzc2VydF9hbnlfY2FsbAogICAgIGZ1bmNvcHkucmVzZXRfbW9jayA9IHJlc2V0X21vY2sKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWQgPSBhc3NlcnRfY2FsbGVkCisgICAgZnVuY29weS5hc3NlcnRfbm90X2NhbGxlZCA9IGFzc2VydF9ub3RfY2FsbGVkCisgICAgZnVuY29weS5hc3NlcnRfY2FsbGVkX29uY2UgPSBhc3NlcnRfY2FsbGVkX29uY2UKIAogICAgIG1vY2suX21vY2tfZGVsZWdhdGUgPSBmdW5jb3B5CiAKQEAgLTUyNSw3ICs1MjIsNyBAQAogICAgIHNpZGVfZWZmZWN0ID0gcHJvcGVydHkoX19nZXRfc2lkZV9lZmZlY3QsIF9fc2V0X3NpZGVfZWZmZWN0KQogCiAKLSAgICBkZWYgcmVzZXRfbW9jayhzZWxmLCB2aXNpdGVkPU5vbmUpOgorICAgIGRlZiByZXNldF9tb2NrKHNlbGYsICB2aXNpdGVkPU5vbmUsKiwgcmV0dXJuX3ZhbHVlPUZhbHNlLCBzaWRlX2VmZmVjdD1GYWxzZSk6CiAgICAgICAgICJSZXN0b3JlIHRoZSBtb2NrIG9iamVjdCB0byBpdHMgaW5pdGlhbCBzdGF0ZS4iCiAgICAgICAgIGlmIHZpc2l0ZWQgaXMgTm9uZToKICAgICAgICAgICAgIHZpc2l0ZWQgPSBbXQpAQCAtNTQwLDYgKzUzNywxMSBAQAogICAgICAgICBzZWxmLmNhbGxfYXJnc19saXN0ID0gX0NhbGxMaXN0KCkKICAgICAgICAgc2VsZi5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQogCisgICAgICAgIGlmIHJldHVybl92YWx1ZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlID0gREVGQVVMVAorICAgICAgICBpZiBzaWRlX2VmZmVjdDoKKyAgICAgICAgICAgIHNlbGYuX21vY2tfc2lkZV9lZmZlY3QgPSBOb25lCisKICAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYuX21vY2tfY2hpbGRyZW4udmFsdWVzKCk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBfU3BlY1N0YXRlKToKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtNzc0LDYgKzc3NiwyNCBAQAogICAgICAgICAgICAgICAgICAgIChzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snLCBzZWxmLmNhbGxfY291bnQpKQogICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQogCisgICAgZGVmIGFzc2VydF9jYWxsZWQoX21vY2tfc2VsZik6CisgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgYXQgbGVhc3Qgb25jZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgc2VsZi5jYWxsX2NvdW50ID09IDA6CisgICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gaGF2ZSBiZWVuIGNhbGxlZC4iICUKKyAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQorCisgICAgZGVmIGFzc2VydF9jYWxsZWRfb25jZShfbW9ja19zZWxmKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBvbmx5IG9uY2UuCisgICAgICAgICIiIgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBpZiBub3Qgc2VsZi5jYWxsX2NvdW50ID09IDE6CisgICAgICAgICAgICBtc2cgPSAoIkV4cGVjdGVkICclcycgdG8gaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLiBDYWxsZWQgJXMgdGltZXMuIiAlCisgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKICAgICBkZWYgYXNzZXJ0X2NhbGxlZF93aXRoKF9tb2NrX3NlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KIApAQCAtODIyLDcgKzg0Miw3IEBACiAgICAgICAgICAgICBpZiBleHBlY3RlZCBub3QgaW4gYWxsX2NhbGxzOgogICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAogICAgICAgICAgICAgICAgICAgICAnQ2FsbHMgbm90IGZvdW5kLlxuRXhwZWN0ZWQ6ICVyXG4nCi0gICAgICAgICAgICAgICAgICAgICdBY3R1YWw6ICVyJyAlIChjYWxscywgc2VsZi5tb2NrX2NhbGxzKQorICAgICAgICAgICAgICAgICAgICAnQWN0dWFsOiAlcicgJSAoX0NhbGxMaXN0KGNhbGxzKSwgc2VsZi5tb2NrX2NhbGxzKQogICAgICAgICAgICAgICAgICkgZnJvbSBjYXVzZQogICAgICAgICAgICAgcmV0dXJuCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkgYi9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CmluZGV4IDIxMTIyNjIuLjJjNWVhNGEgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9ydW5uZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQpAQCAtMTY3LDcgKzE2Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi53YXJuaW5ncyBpbiBbJ2RlZmF1bHQnLCAnYWx3YXlzJ106CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdtb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5PURlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQbGVhc2UgdXNlIGFzc2VydFx3KyBpbnN0ZWFkLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1yJ1BsZWFzZSB1c2UgYXNzZXJ0XHcrIGluc3RlYWQuJykKICAgICAgICAgICAgIHN0YXJ0VGltZSA9IHRpbWUudGltZSgpCiAgICAgICAgICAgICBzdGFydFRlc3RSdW4gPSBnZXRhdHRyKHJlc3VsdCwgJ3N0YXJ0VGVzdFJ1bicsIE5vbmUpCiAgICAgICAgICAgICBpZiBzdGFydFRlc3RSdW4gaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKaW5kZXggZTZlMmJjMi4uMWIwZTgzMyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgICAgICMgRXJyb3IgbWVzc2FnZXMgYXJlIG11bHRpbGluZSBzbyBub3QgdGVzdGluZyBvbiBmdWxsIG1lc3NhZ2UKICAgICAgICAgIyBhc3NlcnRUdXBsZUVxdWFsIGFuZCBhc3NlcnRMaXN0RXF1YWwgZGVsZWdhdGUgdG8gdGhpcyBtZXRob2QKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0U2VxdWVuY2VFcXVhbCcsIChbXSwgW05vbmVdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIlwrIFxbTm9uZVxdJCIsICJeb29wcyQiLCByIlwrIFxbTm9uZVxdJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiXCsgXFtOb25lXF0kIiwgIl5vb3BzJCIsIHIiXCsgXFtOb25lXF0kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJcKyBcW05vbmVcXSA6IG9vcHMkIl0pCiAKICAgICBkZWYgdGVzdEFzc2VydFNldEVxdWFsKHNlbGYpOgpAQCAtMjUwLDIxICsyNTAsMjEgQEAKIAogICAgIGRlZiB0ZXN0QXNzZXJ0SW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydEluJywgKE5vbmUsIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsICJeb29wcyQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdIDogb29wcyQnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcideTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLCAiXm9vcHMkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdIDogb29wcyQnXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0Tm90SW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydE5vdEluJywgKE5vbmUsIFtOb25lXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywgIl5vb3BzJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSA6IG9vcHMkJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3InXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsICJeb29wcyQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSA6IG9vcHMkJ10pCiAKICAgICBkZWYgdGVzdEFzc2VydERpY3RFcXVhbChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlcygnYXNzZXJ0RGljdEVxdWFsJywgKHt9LCB7J2tleSc6ICd2YWx1ZSd9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJcKyBceydrZXknOiAndmFsdWUnXH0kIiwgIl5vb3BzJCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcKyBceydrZXknOiAndmFsdWUnXH0kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSA6IG9vcHMkIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9JCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9IDogb29wcyQiXSkKIAogICAgIGRlZiB0ZXN0QXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0KHNlbGYpOgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CmluZGV4IDRiOTc4ODIuLmIyZjljODggMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CkBAIC0zOTAsNyArMzkwLDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ2FiYyAoKSAvLycpCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIHN1aXRlKQogICAgICAgICBleHBlY3RlZCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgKCkgLy8iCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCkBAIC01MDIsNyArNTAyLDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ2FiYyAoKSAvLycsIHVuaXR0ZXN0KQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKICAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjICgpIC8vJyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpAQCAtODA5LDcgKzgwOSw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyhbJ2FiYyAoKSAvLyddKQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKICAgICAgICAgZXhwZWN0ZWQgPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjICgpIC8vIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsICBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKQEAgLTkyOCw3ICs5MjgsNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydhYmMgKCkgLy8nXSwgdW5pdHRlc3QpCiAgICAgICAgIGVycm9yLCB0ZXN0ID0gc2VsZi5jaGVja19kZWZlcnJlZF9lcnJvcihsb2FkZXIsIGxpc3Qoc3VpdGUpWzBdKQogICAgICAgICBleHBlY3RlZCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgKCkgLy8nIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJtb2R1bGUgJ3VuaXR0ZXN0JyBoYXMgbm8gYXR0cmlidXRlICdhYmMgXChcKSAvLyciCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oCiAgICAgICAgICAgICBleHBlY3RlZCwgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQppbmRleCBmNDczODc5Li4yMDU0MzFhIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKQEAgLTEsNSArMSwzIEBACi1pbXBvcnQgc3lzCi0KIGRlZiBpc19pbnN0YW5jZShvYmosIGtsYXNzKToKICAgICAiIiJWZXJzaW9uIG9mIGlzX2luc3RhbmNlIHRoYXQgZG9lc24ndCBhY2Nlc3MgX19jbGFzc19fIiIiCiAgICAgcmV0dXJuIGlzc3ViY2xhc3ModHlwZShvYmopLCBrbGFzcykKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CmluZGV4IGJiOWI5NTYuLjI0NTY5YjUgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGluc3BlY3QKIGltcG9ydCBzeXMKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgTWFnaWNNb2NrLCBfbWFnaWNzCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKaW5kZXggNWY4MmI4Mi4uYjA3YTdjYyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKQEAgLTEyMzksNiArMTIzOSwyNyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKICAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X25vdF9jYWxsZWQoKQogCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZChzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZCgpCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWQoKQorCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWQoKQorCisgICAgZGVmIHRlc3RfYXNzZXJ0X2NhbGxlZF9vbmNlKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorICAgICAgICBtLmhlbGxvKCkKKyAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkX29uY2UoKQorCisgICAgICAgIG0uaGVsbG8oKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKwogICAgICNJc3N1ZTIxMjU2IHByaW50b3V0IG9mIGtleXdvcmQgYXJncyBzaG91bGQgYmUgaW4gZGV0ZXJtaW5pc3RpYyBvcmRlcgogICAgIGRlZiB0ZXN0X3NvcnRlZF9jYWxsX3NpZ25hdHVyZShzZWxmKToKICAgICAgICAgbSA9IE1vY2soKQpAQCAtMTI1Niw2ICsxMjc3LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMF0sIGMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHNbMV0sIGkpCiAKKyAgICBkZWYgdGVzdF9yZXNldF9yZXR1cm5fc2lkZWVmZmVjdChzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHJldHVybl92YWx1ZT1UcnVlLCBzaWRlX2VmZmVjdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobS5yZXR1cm5fdmFsdWUsIE1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zaWRlX2VmZmVjdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0X3JldHVybihzZWxmKToKKyAgICAgICAgbSA9IE1vY2socmV0dXJuX3ZhbHVlPTEwLCBzaWRlX2VmZmVjdD1bMiwzXSkKKyAgICAgICAgbS5yZXNldF9tb2NrKHJldHVybl92YWx1ZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobS5yZXR1cm5fdmFsdWUsIE1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobS5zaWRlX2VmZmVjdCwgTm9uZSkKKworICAgIGRlZiB0ZXN0X3Jlc2V0X3NpZGVlZmZlY3Qoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKHJldHVybl92YWx1ZT0xMCwgc2lkZV9lZmZlY3Q9WzIsM10pCisgICAgICAgIG0ucmVzZXRfbW9jayhzaWRlX2VmZmVjdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmV0dXJuX3ZhbHVlLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNpZGVfZWZmZWN0LCBOb25lKQorCiAgICAgZGVmIHRlc3RfbW9ja19hZGRfc3BlYyhzZWxmKToKICAgICAgICAgY2xhc3MgX09uZShvYmplY3QpOgogICAgICAgICAgICAgb25lID0gMQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CmluZGV4IGRmY2UzNjkuLmZlNGVjZWYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKQEAgLTEwLDkgKzEwLDkgQEAKIGZyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBTb21lQ2xhc3MsIGlzX2luc3RhbmNlCiAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAotICAgIE5vbkNhbGxhYmxlTW9jaywgQ2FsbGFibGVNaXhpbiwgcGF0Y2gsIHNlbnRpbmVsLAorICAgIE5vbkNhbGxhYmxlTW9jaywgQ2FsbGFibGVNaXhpbiwgc2VudGluZWwsCiAgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgcGF0Y2gsIF9wYXRjaCwKLSAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldCwgX3BhdGNoCisgICAgREVGQVVMVCwgY2FsbCwgX2dldF90YXJnZXQKICkKIAogCkBAIC05NjksOCArOTY5LDE0IEBACiAgICAgZGVmIHRlc3RfYXV0b3NwZWNfZnVuY3Rpb24oc2VsZik6CiAgICAgICAgIEBwYXRjaCgnJXMuZnVuY3Rpb24nICUgX19uYW1lX18sIGF1dG9zcGVjPVRydWUpCiAgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X25vdF9jYWxsZWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF9vbmNlKQogICAgICAgICAgICAgZnVuY3Rpb24oMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBmdW5jdGlvbi5hc3NlcnRfbm90X2NhbGxlZCkKICAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZCgpCisgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX29uY2UoKQogICAgICAgICAgICAgZnVuY3Rpb24oMiwgMykKICAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfd2l0aCgyLCAzKQogCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3BhcnNlLnB5IGIvTGliL3VybGxpYi9wYXJzZS5weQppbmRleCA1NjZmYmY3Li45NTg3NjdhIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3BhcnNlLnB5CisrKyBiL0xpYi91cmxsaWIvcGFyc2UucHkKQEAgLTE1Nyw5ICsxNTcsOCBAQAogICAgICAgICBwb3J0ID0gc2VsZi5faG9zdGluZm9bMV0KICAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHBvcnQgPSBpbnQocG9ydCwgMTApCi0gICAgICAgICAgICAjIFJldHVybiBOb25lIG9uIGFuIGlsbGVnYWwgcG9ydAogICAgICAgICAgICAgaWYgbm90ICggMCA8PSBwb3J0IDw9IDY1NTM1KToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvcnQgb3V0IG9mIHJhbmdlIDAtNjU1MzUiKQogICAgICAgICByZXR1cm4gcG9ydAogCiAKQEAgLTIyNiw4ICsyMjUsNzEgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIAogX0RlZnJhZ1Jlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdEZWZyYWdSZXN1bHQnLCAndXJsIGZyYWdtZW50JykKLV9TcGxpdFJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdTcGxpdFJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcXVlcnkgZnJhZ21lbnQnKQotX1BhcnNlUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoJ1BhcnNlUmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBwYXJhbXMgcXVlcnkgZnJhZ21lbnQnKQorX1NwbGl0UmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoCisgICAgJ1NwbGl0UmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBxdWVyeSBmcmFnbWVudCcpCitfUGFyc2VSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgKKyAgICAnUGFyc2VSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHBhcmFtcyBxdWVyeSBmcmFnbWVudCcpCisKK19EZWZyYWdSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK0RlZnJhZ1Jlc3VsdCh1cmwsIGZyYWdtZW50KQorCitBIDItdHVwbGUgdGhhdCBjb250YWlucyB0aGUgdXJsIHdpdGhvdXQgZnJhZ21lbnQgaWRlbnRpZmllciBhbmQgdGhlIGZyYWdtZW50CitpZGVudGlmaWVyIGFzIGEgc2VwYXJhdGUgYXJndW1lbnQuCisiIiIKKworX0RlZnJhZ1Jlc3VsdEJhc2UudXJsLl9fZG9jX18gPSAiIiJUaGUgVVJMIHdpdGggbm8gZnJhZ21lbnQgaWRlbnRpZmllci4iIiIKKworX0RlZnJhZ1Jlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9ICIiIgorRnJhZ21lbnQgaWRlbnRpZmllciBzZXBhcmF0ZWQgZnJvbSBVUkwsIHRoYXQgYWxsb3dzIGluZGlyZWN0IGlkZW50aWZpY2F0aW9uIG9mIGEKK3NlY29uZGFyeSByZXNvdXJjZSBieSByZWZlcmVuY2UgdG8gYSBwcmltYXJ5IHJlc291cmNlIGFuZCBhZGRpdGlvbmFsIGlkZW50aWZ5aW5nCitpbmZvcm1hdGlvbi4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLl9fZG9jX18gPSAiIiIKK1NwbGl0UmVzdWx0KHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBxdWVyeSwgZnJhZ21lbnQpCisKK0EgNS10dXBsZSB0aGF0IGNvbnRhaW5zIHRoZSBkaWZmZXJlbnQgY29tcG9uZW50cyBvZiBhIFVSTC4gU2ltaWxhciB0bworUGFyc2VSZXN1bHQsIGJ1dCBkb2VzIG5vdCBzcGxpdCBwYXJhbXMuCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXyA9ICIiIlNwZWNpZmllcyBVUkwgc2NoZW1lIGZvciB0aGUgcmVxdWVzdC4iIiIKKworX1NwbGl0UmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXyA9ICIiIgorTmV0d29yayBsb2NhdGlvbiB3aGVyZSB0aGUgcmVxdWVzdCBpcyBtYWRlIHRvLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gIiIiCitUaGUgaGllcmFyY2hpY2FsIHBhdGgsIHN1Y2ggYXMgdGhlIHBhdGggdG8gYSBmaWxlIHRvIGRvd25sb2FkLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UucXVlcnkuX19kb2NfXyA9ICIiIgorVGhlIHF1ZXJ5IGNvbXBvbmVudCwgdGhhdCBjb250YWlucyBub24taGllcmFyY2hpY2FsIGRhdGEsIHRoYXQgYWxvbmcgd2l0aCBkYXRhCitpbiBwYXRoIGNvbXBvbmVudCwgaWRlbnRpZmllcyBhIHJlc291cmNlIGluIHRoZSBzY29wZSBvZiBVUkkncyBzY2hlbWUgYW5kCituZXR3b3JrIGxvY2F0aW9uLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2UuZnJhZ21lbnQuX19kb2NfXyA9ICIiIgorRnJhZ21lbnQgaWRlbnRpZmllciwgdGhhdCBhbGxvd3MgaW5kaXJlY3QgaWRlbnRpZmljYXRpb24gb2YgYSBzZWNvbmRhcnkgcmVzb3VyY2UKK2J5IHJlZmVyZW5jZSB0byBhIHByaW1hcnkgcmVzb3VyY2UgYW5kIGFkZGl0aW9uYWwgaWRlbnRpZnlpbmcgaW5mb3JtYXRpb24uCisiIiIKKworX1BhcnNlUmVzdWx0QmFzZS5fX2RvY19fID0gIiIiCitQYXJzZVJlc3VsdChzY2hlbWUsIG5ldGxvYywgcGF0aCwgcGFyYW1zLCAgcXVlcnksIGZyYWdtZW50KQorCitBIDYtdHVwbGUgdGhhdCBjb250YWlucyBjb21wb25lbnRzIG9mIGEgcGFyc2VkIFVSTC4KKyIiIgorCitfUGFyc2VSZXN1bHRCYXNlLnNjaGVtZS5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5uZXRsb2MuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UubmV0bG9jLl9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UucGF0aC5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5wYXRoLl9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UucGFyYW1zLl9fZG9jX18gPSAiIiIKK1BhcmFtZXRlcnMgZm9yIGxhc3QgcGF0aCBlbGVtZW50IHVzZWQgdG8gZGVyZWZlcmVuY2UgdGhlIFVSSSBpbiBvcmRlciB0byBwcm92aWRlCithY2Nlc3MgdG8gcGVyZm9ybSBzb21lIG9wZXJhdGlvbiBvbiB0aGUgcmVzb3VyY2UuCisiIiIKKworX1BhcnNlUmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5xdWVyeS5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18KKwogCiAjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYWxpYXMgX05ldGxvY1Jlc3VsdE1peGluU3RyCiAjIFJlc3VsdEJhc2UgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRvY3VtZW50ZWQgQVBJLCBidXQgaXQgaXMKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQppbmRleCBhNGJmOTdkLi41ZjE1Yjc0IDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CkBAIC0xMzQsMTMgKzEzNCw3MyBAQAogXQogCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAotX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KK19fdmVyc2lvbl9fID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKIF9vcGVuZXIgPSBOb25lCiBkZWYgdXJsb3Blbih1cmwsIGRhdGE9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCiAgICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1GYWxzZSwgY29udGV4dD1Ob25lKToKKyAgICAnJydPcGVuIHRoZSBVUkwgdXJsLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEgUmVxdWVzdCBvYmplY3QuCisKKyAgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gYmUgc2VudCB0bworICAgIHRoZSBzZXJ2ZXIsIG9yIE5vbmUgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIFNlZSBSZXF1ZXN0IGZvcgorICAgIGRldGFpbHMuCisKKyAgICB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcyBIVFRQLzEuMSBhbmQgaW5jbHVkZXMgYSAiQ29ubmVjdGlvbjpjbG9zZSIKKyAgICBoZWFkZXIgaW4gaXRzIEhUVFAgcmVxdWVzdHMuCisKKyAgICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yCisgICAgYmxvY2tpbmcgb3BlcmF0aW9ucyBsaWtlIHRoZSBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZQorICAgIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZyB3aWxsIGJlIHVzZWQpLiBUaGlzIG9ubHkgd29ya3MgZm9yIEhUVFAsCisgICAgSFRUUFMgYW5kIEZUUCBjb25uZWN0aW9ucy4KKworICAgIElmICpjb250ZXh0KiBpcyBzcGVjaWZpZWQsIGl0IG11c3QgYmUgYSBzc2wuU1NMQ29udGV4dCBpbnN0YW5jZSBkZXNjcmliaW5nCisgICAgdGhlIHZhcmlvdXMgU1NMIG9wdGlvbnMuIFNlZSBIVFRQU0Nvbm5lY3Rpb24gZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFRoZSBvcHRpb25hbCAqY2FmaWxlKiBhbmQgKmNhcGF0aCogcGFyYW1ldGVycyBzcGVjaWZ5IGEgc2V0IG9mIHRydXN0ZWQgQ0EKKyAgICBjZXJ0aWZpY2F0ZXMgZm9yIEhUVFBTIHJlcXVlc3RzLiBjYWZpbGUgc2hvdWxkIHBvaW50IHRvIGEgc2luZ2xlIGZpbGUKKyAgICBjb250YWluaW5nIGEgYnVuZGxlIG9mIENBIGNlcnRpZmljYXRlcywgd2hlcmVhcyBjYXBhdGggc2hvdWxkIHBvaW50IHRvIGEKKyAgICBkaXJlY3Rvcnkgb2YgaGFzaGVkIGNlcnRpZmljYXRlIGZpbGVzLiBNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbgorICAgIHNzbC5TU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucygpLgorCisgICAgVGhlICpjYWRlZmF1bHQqIHBhcmFtZXRlciBpcyBpZ25vcmVkLgorCisgICAgVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBhbiBvYmplY3Qgd2hpY2ggY2FuIHdvcmsgYXMgYSBjb250ZXh0CisgICAgbWFuYWdlciBhbmQgaGFzIG1ldGhvZHMgc3VjaCBhcworCisgICAgKiBnZXR1cmwoKSAtIHJldHVybiB0aGUgVVJMIG9mIHRoZSByZXNvdXJjZSByZXRyaWV2ZWQsIGNvbW1vbmx5IHVzZWQgdG8KKyAgICAgIGRldGVybWluZSBpZiBhIHJlZGlyZWN0IHdhcyBmb2xsb3dlZAorCisgICAgKiBpbmZvKCkgLSByZXR1cm4gdGhlIG1ldGEtaW5mb3JtYXRpb24gb2YgdGhlIHBhZ2UsIHN1Y2ggYXMgaGVhZGVycywgaW4gdGhlCisgICAgICBmb3JtIG9mIGFuIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoKSBpbnN0YW5jZSAoc2VlIFF1aWNrIFJlZmVyZW5jZSB0bworICAgICAgSFRUUCBIZWFkZXJzKQorCisgICAgKiBnZXRjb2RlKCkgLSByZXR1cm4gdGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlLiAgUmFpc2VzIFVSTEVycm9yCisgICAgICBvbiBlcnJvcnMuCisKKyAgICBGb3IgSFRUUCBhbmQgSFRUUFMgVVJMcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlCisgICAgb2JqZWN0IHNsaWdodGx5IG1vZGlmaWVkLiBJbiBhZGRpdGlvbiB0byB0aGUgdGhyZWUgbmV3IG1ldGhvZHMgYWJvdmUsIHRoZQorICAgIG1zZyBhdHRyaWJ1dGUgY29udGFpbnMgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlIHJlYXNvbiBhdHRyaWJ1dGUgLS0tCisgICAgdGhlIHJlYXNvbiBwaHJhc2UgcmV0dXJuZWQgYnkgdGhlIHNlcnZlciAtLS0gaW5zdGVhZCBvZiB0aGUgcmVzcG9uc2UKKyAgICBoZWFkZXJzIGFzIGl0IGlzIHNwZWNpZmllZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgSFRUUFJlc3BvbnNlLgorCisgICAgRm9yIEZUUCwgZmlsZSwgYW5kIGRhdGEgVVJMcyBhbmQgcmVxdWVzdHMgZXhwbGljaXRseSBoYW5kbGVkIGJ5IGxlZ2FjeQorICAgIFVSTG9wZW5lciBhbmQgRmFuY3lVUkxvcGVuZXIgY2xhc3NlcywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIGEKKyAgICB1cmxsaWIucmVzcG9uc2UuYWRkaW5mb3VybCBvYmplY3QuCisKKyAgICBOb3RlIHRoYXQgTm9uZSBtYXkgYmUgcmV0dXJuZWQgaWYgbm8gaGFuZGxlciBoYW5kbGVzIHRoZSByZXF1ZXN0ICh0aG91Z2gKKyAgICB0aGUgZGVmYXVsdCBpbnN0YWxsZWQgZ2xvYmFsIE9wZW5lckRpcmVjdG9yIHVzZXMgVW5rbm93bkhhbmRsZXIgdG8gZW5zdXJlCisgICAgdGhpcyBuZXZlciBoYXBwZW5zKS4KKworICAgIEluIGFkZGl0aW9uLCBpZiBwcm94eSBzZXR0aW5ncyBhcmUgZGV0ZWN0ZWQgKGZvciBleGFtcGxlLCB3aGVuIGEgKl9wcm94eQorICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGxpa2UgaHR0cF9wcm94eSBpcyBzZXQpLCBQcm94eUhhbmRsZXIgaXMgZGVmYXVsdAorICAgIGluc3RhbGxlZCBhbmQgbWFrZXMgc3VyZSB0aGUgcmVxdWVzdHMgYXJlIGhhbmRsZWQgdGhyb3VnaCB0aGUgcHJveHkuCisKKyAgICAnJycKICAgICBnbG9iYWwgX29wZW5lcgogICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkZWZhdWx0OgorICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgd2FybmluZ3Mud2FybigiY2FmaWxlLCBjcGF0aCBhbmQgY2FkZWZhdWx0IGFyZSBkZXByZWNhdGVkLCB1c2UgYSAiCisgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQuIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiWW91IGNhbid0IHBhc3MgYm90aCBjb250ZXh0IGFuZCBhbnkgb2YgY2FmaWxlLCBjYXBhdGgsIGFuZCAiCkBAIC0xMTcwLDYgKzEyMzAsMTEgQEAKICAgICBkZWYgc2V0X2h0dHBfZGVidWdsZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgIHNlbGYuX2RlYnVnbGV2ZWwgPSBsZXZlbAogCisgICAgZGVmIF9nZXRfY29udGVudF9sZW5ndGgoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHJldHVybiBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKAorICAgICAgICAgICAgcmVxdWVzdC5kYXRhLAorICAgICAgICAgICAgcmVxdWVzdC5nZXRfbWV0aG9kKCkpCisKICAgICBkZWYgZG9fcmVxdWVzdF8oc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIGhvc3QgPSByZXF1ZXN0Lmhvc3QKICAgICAgICAgaWYgbm90IGhvc3Q6CkBAIC0xMTc4LDI0ICsxMjQzLDIyIEBACiAgICAgICAgIGlmIHJlcXVlc3QuZGF0YSBpcyBub3QgTm9uZTogICMgUE9TVAogICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3QuZGF0YQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgotICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzIG9yIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLiAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAiSXQgY2Fubm90IGJlIG9mIHR5cGUgc3RyLiIKKyAgICAgICAgICAgICAgICBtc2cgPSAiUE9TVCBkYXRhIHNob3VsZCBiZSBieXRlcywgYW4gaXRlcmFibGUgb2YgYnl0ZXMsICIgXAorICAgICAgICAgICAgICAgICAgICAgICJvciBhIGZpbGUgb2JqZWN0LiBJdCBjYW5ub3QgYmUgb2YgdHlwZSBzdHIuIgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LXR5cGUnKToKICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAogICAgICAgICAgICAgICAgICAgICAnQ29udGVudC10eXBlJywKICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpCi0gICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGRhdGEpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBjb2xsZWN0aW9ucy5JdGVyYWJsZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb250ZW50LUxlbmd0aCBzaG91bGQgYmUgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvciBpdGVyYWJsZSBkYXRhIG9mIHR5cGUgJXIgJXIiICUgKHR5cGUoZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEpKQorICAgICAgICAgICAgaWYgKG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykKKyAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCByZXF1ZXN0Lmhhc19oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykpOgorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gc2VsZi5fZ2V0X2NvbnRlbnRfbGVuZ3RoKHJlcXVlc3QpCisgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYWRkX3VucmVkaXJlY3RlZF9oZWFkZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtbGVuZ3RoJywgc3RyKGNvbnRlbnRfbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LWxlbmd0aCcsICclZCcgJSAobGVuKG12KSAqIG12Lml0ZW1zaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVHJhbnNmZXItZW5jb2RpbmcnLCAnY2h1bmtlZCcpCiAKICAgICAgICAgc2VsX2hvc3QgPSBob3N0CiAgICAgICAgIGlmIHJlcXVlc3QuaGFzX3Byb3h5KCk6CkBAIC0xMjUxLDcgKzEzMTQsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBoLnJlcXVlc3QocmVxLmdldF9tZXRob2QoKSwgcmVxLnNlbGVjdG9yLCByZXEuZGF0YSwgaGVhZGVycykKKyAgICAgICAgICAgICAgICBoLnJlcXVlc3QocmVxLmdldF9tZXRob2QoKSwgcmVxLnNlbGVjdG9yLCByZXEuZGF0YSwgaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9cmVxLmhhc19oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6ICMgdGltZW91dCBlcnJvcgogICAgICAgICAgICAgICAgIHJhaXNlIFVSTEVycm9yKGVycikKICAgICAgICAgICAgIHIgPSBoLmdldHJlc3BvbnNlKCkKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkgYi9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CmluZGV4IDhiNjlmZDkuLjlkYWI0YzEgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQpAQCAtMTAsNyArMTAsOSBAQAogICAgIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy9ub3JvYm90cy1yZmMudHh0CiAiIiIKIAotaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHVybGxpYi5wYXJzZQoraW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAKIF9fYWxsX18gPSBbIlJvYm90RmlsZVBhcnNlciJdCiAKQEAgLTEyMCwxMCArMTIyLDI5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5ydWxlbGluZXMuYXBwZW5kKFJ1bGVMaW5lKGxpbmVbMV0sIFRydWUpKQogICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCisgICAgICAgICAgICAgICAgZWxpZiBsaW5lWzBdID09ICJjcmF3bC1kZWxheSI6CisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJlZm9yZSB0cnlpbmcgdG8gY29udmVydCB0byBpbnQgd2UgbmVlZCB0byBtYWtlCisgICAgICAgICAgICAgICAgICAgICAgICAjIHN1cmUgdGhhdCByb2JvdHMudHh0IGhhcyB2YWxpZCBzeW50YXggb3RoZXJ3aXNlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGl0IHdpbGwgY3Jhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVbMV0uc3RyaXAoKS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkuZGVsYXkgPSBpbnQobGluZVsxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMgorICAgICAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAicmVxdWVzdC1yYXRlIjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RhdGUgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlcnMgPSBsaW5lWzFdLnNwbGl0KCcvJykKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgYWxsIHZhbHVlcyBhcmUgc2FuZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbihudW1iZXJzKSA9PSAyIGFuZCBudW1iZXJzWzBdLnN0cmlwKCkuaXNkaWdpdCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG51bWJlcnNbMV0uc3RyaXAoKS5pc2RpZ2l0KCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcV9yYXRlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgncmVxX3JhdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdHMgc2Vjb25kcycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUgPSByZXFfcmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJlcV9yYXRlLnJlcXVlc3RzID0gaW50KG51bWJlcnNbMF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucmVxX3JhdGUuc2Vjb25kcyA9IGludChudW1iZXJzWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAyCiAgICAgICAgIGlmIHN0YXRlID09IDI6CiAgICAgICAgICAgICBzZWxmLl9hZGRfZW50cnkoZW50cnkpCiAKLQogICAgIGRlZiBjYW5fZmV0Y2goc2VsZiwgdXNlcmFnZW50LCB1cmwpOgogICAgICAgICAiIiJ1c2luZyB0aGUgcGFyc2VkIHJvYm90cy50eHQgZGVjaWRlIGlmIHVzZXJhZ2VudCBjYW4gZmV0Y2ggdXJsIiIiCiAgICAgICAgIGlmIHNlbGYuZGlzYWxsb3dfYWxsOgpAQCAtMTUzLDYgKzE3NCwyMiBAQAogICAgICAgICAjIGFnZW50IG5vdCBmb3VuZCA9PT4gYWNjZXNzIGdyYW50ZWQKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBjcmF3bF9kZWxheShzZWxmLCB1c2VyYWdlbnQpOgorICAgICAgICBpZiBub3Qgc2VsZi5tdGltZSgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllczoKKyAgICAgICAgICAgIGlmIGVudHJ5LmFwcGxpZXNfdG8odXNlcmFnZW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkuZGVsYXkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5kZWxheQorCisgICAgZGVmIHJlcXVlc3RfcmF0ZShzZWxmLCB1c2VyYWdlbnQpOgorICAgICAgICBpZiBub3Qgc2VsZi5tdGltZSgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllczoKKyAgICAgICAgICAgIGlmIGVudHJ5LmFwcGxpZXNfdG8odXNlcmFnZW50KToKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnkucmVxX3JhdGUKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9lbnRyeS5yZXFfcmF0ZQorCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldHVybiAnJy5qb2luKFtzdHIoZW50cnkpICsgIlxuIiBmb3IgZW50cnkgaW4gc2VsZi5lbnRyaWVzXSkKIApAQCAtMTgwLDYgKzIxNyw4IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLnVzZXJhZ2VudHMgPSBbXQogICAgICAgICBzZWxmLnJ1bGVsaW5lcyA9IFtdCisgICAgICAgIHNlbGYuZGVsYXkgPSBOb25lCisgICAgICAgIHNlbGYucmVxX3JhdGUgPSBOb25lCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKICAgICAgICAgcmV0ID0gW10KZGlmZiAtLWdpdCBhL0xpYi91dWlkLnB5IGIvTGliL3V1aWQucHkKaW5kZXggZTk2ZTdlMC4uMjAwYzgwMCAxMDA2NDQKLS0tIGEvTGliL3V1aWQucHkKKysrIGIvTGliL3V1aWQucHkKQEAgLTQ4Nyw3ICs0ODcsNiBAQAogICAgICMgQXNzdW1lIHRoYXQgdGhlIHV1aWRfZ2VuZXJhdGUgZnVuY3Rpb25zIGFyZSBicm9rZW4gZnJvbSAxMC41IG9ud2FyZCwKICAgICAjIHRoZSB0ZXN0IGNhbiBiZSBhZGp1c3RlZCB3aGVuIGEgbGF0ZXIgdmVyc2lvbiBpcyBmaXhlZC4KICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgIGltcG9ydCBvcwogICAgICAgICBpZiBpbnQob3MudW5hbWUoKS5yZWxlYXNlLnNwbGl0KCcuJylbMF0pID49IDk6CiAgICAgICAgICAgICBfdXVpZF9nZW5lcmF0ZV90aW1lID0gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvdmVudi9fX2luaXRfXy5weSBiL0xpYi92ZW52L19faW5pdF9fLnB5CmluZGV4IDc0MjQ1YWIuLjBhMDk0ZTMgMTAwNjQ0Ci0tLSBhL0xpYi92ZW52L19faW5pdF9fLnB5CisrKyBiL0xpYi92ZW52L19faW5pdF9fLnB5CkBAIC0zLDI4ICszLDYgQEAKIAogQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgVmluYXkgU2FqaXAuCiBMaWNlbnNlZCB0byB0aGUgUFNGIHVuZGVyIGEgY29udHJpYnV0b3IgYWdyZWVtZW50LgotCi11c2FnZTogcHl0aG9uIC1tIHZlbnYgWy1oXSBbLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc10gWy0tc3ltbGlua3NdIFstLWNsZWFyXQotICAgICAgICAgICAgWy0tdXBncmFkZV0KLSAgICAgICAgICAgIEVOVl9ESVIgW0VOVl9ESVIgLi4uXQotCi1DcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCi0KLXBvc2l0aW9uYWwgYXJndW1lbnRzOgotICBFTlZfRElSICAgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KLQotb3B0aW9uYWwgYXJndW1lbnRzOgotICAtaCwgLS1oZWxwICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzCi0gICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KLSAgLS1zeW1saW5rcyAgICAgICAgICAgIEF0dGVtcHQgdG8gc3ltbGluayByYXRoZXIgdGhhbiBjb3B5LgotICAtLWNsZWFyICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgotICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgotICAtLXdpdGhvdXQtcGlwICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQogIiIiCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCkBAIC01OCwxNSArMzYsMTcgQEAKICAgICA6cGFyYW0gdXBncmFkZTogSWYgVHJ1ZSwgdXBncmFkZSBhbiBleGlzdGluZyB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgIDpwYXJhbSB3aXRoX3BpcDogSWYgVHJ1ZSwgZW5zdXJlIHBpcCBpcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50CisgICAgOnBhcmFtIHByb21wdDogQWx0ZXJuYXRpdmUgdGVybWluYWwgcHJlZml4IGZvciB0aGUgZW52aXJvbm1lbnQuCiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAotICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UpOgorICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIHByb21wdD1Ob25lKToKICAgICAgICAgc2VsZi5zeXN0ZW1fc2l0ZV9wYWNrYWdlcyA9IHN5c3RlbV9zaXRlX3BhY2thZ2VzCiAgICAgICAgIHNlbGYuY2xlYXIgPSBjbGVhcgogICAgICAgICBzZWxmLnN5bWxpbmtzID0gc3ltbGlua3MKICAgICAgICAgc2VsZi51cGdyYWRlID0gdXBncmFkZQogICAgICAgICBzZWxmLndpdGhfcGlwID0gd2l0aF9waXAKKyAgICAgICAgc2VsZi5wcm9tcHQgPSBwcm9tcHQKIAogICAgIGRlZiBjcmVhdGUoc2VsZiwgZW52X2Rpcik6CiAgICAgICAgICIiIgpAQCAtMTEyLDcgKzkyLDggQEAKICAgICAgICAgY29udGV4dCA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCiAgICAgICAgIGNvbnRleHQuZW52X2RpciA9IGVudl9kaXIKICAgICAgICAgY29udGV4dC5lbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoZW52X2RpcilbMV0KLSAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgY29udGV4dC5lbnZfbmFtZQorICAgICAgICBwcm9tcHQgPSBzZWxmLnByb21wdCBpZiBzZWxmLnByb21wdCBpcyBub3QgTm9uZSBlbHNlIGNvbnRleHQuZW52X25hbWUKKyAgICAgICAgY29udGV4dC5wcm9tcHQgPSAnKCVzKSAnICUgcHJvbXB0CiAgICAgICAgIGNyZWF0ZV9pZl9uZWVkZWQoZW52X2RpcikKICAgICAgICAgZW52ID0gb3MuZW52aXJvbgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBlbnY6CkBAIC0zNDgsMjYgKzMyOSwxMSBAQAogCiAKIGRlZiBjcmVhdGUoZW52X2Rpciwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgd2l0aF9waXA9RmFsc2UpOgotICAgICIiIgotICAgIENyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuCi0KLSAgICBCeSBkZWZhdWx0LCBtYWtlcyB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMgZGlyICp1biphdmFpbGFibGUgdG8KLSAgICB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudCwgYW5kIHVzZXMgY29weWluZyByYXRoZXIgdGhhbiBzeW1saW5raW5nIGZvciBmaWxlcwotICAgIG9idGFpbmVkIGZyb20gdGhlIHNvdXJjZSBQeXRob24gaW5zdGFsbGF0aW9uLgotCi0gICAgOnBhcmFtIGVudl9kaXI6IFRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KLSAgICA6cGFyYW0gc3lzdGVtX3NpdGVfcGFja2FnZXM6IElmIFRydWUsIHRoZSBzeXN0ZW0gKGdsb2JhbCkgc2l0ZS1wYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyIGlzIGF2YWlsYWJsZSB0byB0aGUgZW52aXJvbm1lbnQuCi0gICAgOnBhcmFtIGNsZWFyOiBJZiBUcnVlLCBkZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYKLSAgICAgICAgICAgICAgICAgIGl0IGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gICAgOnBhcmFtIHN5bWxpbmtzOiBJZiBUcnVlLCBhdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weSBmaWxlcyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgotICAgIDpwYXJhbSB3aXRoX3BpcDogSWYgVHJ1ZSwgZW5zdXJlIHBpcCBpcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50Ci0gICAgIiIiCisgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgcHJvbXB0PU5vbmUpOgorICAgICIiIkNyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYSBkaXJlY3RvcnkuIiIiCiAgICAgYnVpbGRlciA9IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9c3lzdGVtX3NpdGVfcGFja2FnZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9Y2xlYXIsIHN5bWxpbmtzPXN5bWxpbmtzLCB3aXRoX3BpcD13aXRoX3BpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MsIHdpdGhfcGlwPXdpdGhfcGlwLAorICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdD1wcm9tcHQpCiAgICAgYnVpbGRlci5jcmVhdGUoZW52X2RpcikKIAogZGVmIG1haW4oYXJncz1Ob25lKToKQEAgLTQyNyw2ICszOTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1NraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J5IGRlZmF1bHQpJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wcm9tcHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Byb3ZpZGVzIGFuIGFsdGVybmF0aXZlIHByb21wdCBwcmVmaXggZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGVudmlyb25tZW50LicpCiAgICAgICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQogICAgICAgICBpZiBvcHRpb25zLnVwZ3JhZGUgYW5kIG9wdGlvbnMuY2xlYXI6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd5b3UgY2Fubm90IHN1cHBseSAtLXVwZ3JhZGUgYW5kIC0tY2xlYXIgdG9nZXRoZXIuJykKQEAgLTQzNCw3ICs0MDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1vcHRpb25zLmNsZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1vcHRpb25zLnN5bWxpbmtzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGdyYWRlPW9wdGlvbnMudXBncmFkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9waXA9b3B0aW9ucy53aXRoX3BpcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9waXA9b3B0aW9ucy53aXRoX3BpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbXB0PW9wdGlvbnMucHJvbXB0KQogICAgICAgICBmb3IgZCBpbiBvcHRpb25zLmRpcnM6CiAgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShkKQogCmRpZmYgLS1naXQgYS9MaWIvd2FybmluZ3MucHkgYi9MaWIvd2FybmluZ3MucHkKaW5kZXggYzY2MzFmYy4uMmI0MDdmZiAxMDA2NDQKLS0tIGEvTGliL3dhcm5pbmdzLnB5CisrKyBiL0xpYi93YXJuaW5ncy5weQpAQCAtMiwzOSArMiwxMTIgQEAKIAogaW1wb3J0IHN5cwogCisKIF9fYWxsX18gPSBbIndhcm4iLCAid2Fybl9leHBsaWNpdCIsICJzaG93d2FybmluZyIsCiAgICAgICAgICAgICJmb3JtYXR3YXJuaW5nIiwgImZpbHRlcndhcm5pbmdzIiwgInNpbXBsZWZpbHRlciIsCiAgICAgICAgICAgICJyZXNldHdhcm5pbmdzIiwgImNhdGNoX3dhcm5pbmdzIl0KIAotCiBkZWYgc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKICAgICAiIiJIb29rIHRvIHdyaXRlIGEgd2FybmluZyB0byBhIGZpbGU7IHJlcGxhY2UgaWYgeW91IGxpa2UuIiIiCi0gICAgaWYgZmlsZSBpcyBOb25lOgotICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgotICAgICAgICBpZiBmaWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICAjIHN5cy5zdGRlcnIgaXMgTm9uZSB3aGVuIHJ1biB3aXRoIHB5dGhvbncuZXhlIC0gd2FybmluZ3MgZ2V0IGxvc3QKLSAgICAgICAgICAgIHJldHVybgotICAgIHRyeToKLSAgICAgICAgZmlsZS53cml0ZShmb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcyAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgorICAgIG1zZyA9IFdhcm5pbmdNZXNzYWdlKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlLCBsaW5lKQorICAgIF9zaG93d2Fybm1zZ19pbXBsKG1zZykKIAogZGVmIGZvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6CiAgICAgIiIiRnVuY3Rpb24gdG8gZm9ybWF0IGEgd2FybmluZyB0aGUgc3RhbmRhcmQgd2F5LiIiIgotICAgIHMgPSAgIiVzOiVzOiAlczogJXNcbiIgJSAoZmlsZW5hbWUsIGxpbmVubywgY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCi0gICAgaWYgbGluZSBpcyBOb25lOgorICAgIG1zZyA9IFdhcm5pbmdNZXNzYWdlKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBOb25lLCBsaW5lKQorICAgIHJldHVybiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZykKKworZGVmIF9zaG93d2Fybm1zZ19pbXBsKG1zZyk6CisgICAgZmlsZSA9IG1zZy5maWxlCisgICAgaWYgZmlsZSBpcyBOb25lOgorICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgorICAgICAgICBpZiBmaWxlIGlzIE5vbmU6CisgICAgICAgICAgICAjIHN5cy5zdGRlcnIgaXMgTm9uZSB3aGVuIHJ1biB3aXRoIHB5dGhvbncuZXhlOgorICAgICAgICAgICAgIyB3YXJuaW5ncyBnZXQgbG9zdAorICAgICAgICAgICAgcmV0dXJuCisgICAgdGV4dCA9IF9mb3JtYXR3YXJubXNnKG1zZykKKyAgICB0cnk6CisgICAgICAgIGZpbGUud3JpdGUodGV4dCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIyB0aGUgZmlsZSAocHJvYmFibHkgc3RkZXJyKSBpcyBpbnZhbGlkIC0gdGhpcyB3YXJuaW5nIGdldHMgbG9zdC4KKyAgICAgICAgcGFzcworCitkZWYgX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpOgorICAgIHMgPSAgKCIlczolczogJXM6ICVzXG4iCisgICAgICAgICAgJSAobXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLCBtc2cuY2F0ZWdvcnkuX19uYW1lX18sCisgICAgICAgICAgICAgbXNnLm1lc3NhZ2UpKQorCisgICAgaWYgbXNnLmxpbmUgaXMgTm9uZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaW1wb3J0IGxpbmVjYWNoZQotICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUobXNnLmZpbGVuYW1lLCBtc2cubGluZW5vKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgIyBXaGVuIGEgd2FybmluZyBpcyBsb2dnZWQgZHVyaW5nIFB5dGhvbiBzaHV0ZG93biwgbGluZWNhY2hlCiAgICAgICAgICAgICAjIGFuZCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBkb24ndCB3b3JrIGFueW1vcmUKICAgICAgICAgICAgIGxpbmUgPSBOb25lCisgICAgICAgICAgICBsaW5lY2FjaGUgPSBOb25lCisgICAgZWxzZToKKyAgICAgICAgbGluZSA9IG1zZy5saW5lCiAgICAgaWYgbGluZToKICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQogICAgICAgICBzICs9ICIgICVzXG4iICUgbGluZQorCisgICAgaWYgbXNnLnNvdXJjZSBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRyYWNlbWFsbG9jCisgICAgICAgICAgICB0YiA9IHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrKG1zZy5zb3VyY2UpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAjIFdoZW4gYSB3YXJuaW5nIGlzIGxvZ2dlZCBkdXJpbmcgUHl0aG9uIHNodXRkb3duLCB0cmFjZW1hbGxvYworICAgICAgICAgICAgIyBhbmQgdGhlIGltcG9ydCBtYWNoaW5lcnkgZG9uJ3Qgd29yayBhbnltb3JlCisgICAgICAgICAgICB0YiA9IE5vbmUKKworICAgICAgICBpZiB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHMgKz0gJ09iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuJworICAgICAgICAgICAgZm9yIGZyYW1lIGluIHRiOgorICAgICAgICAgICAgICAgIHMgKz0gKCcgIEZpbGUgIiVzIiwgbGluZW5vICVzXG4nCisgICAgICAgICAgICAgICAgICAgICAgJSAoZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubykpCisKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVjYWNoZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgcyArPSAnICAgICVzXG4nICUgbGluZQogICAgIHJldHVybiBzCiAKKyMgS2VlcCBhIHJlZmVyZW5jZSB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gd2FzIHJlcGxhY2VkCitfc2hvd3dhcm5pbmcgPSBzaG93d2FybmluZworCitkZWYgX3Nob3d3YXJubXNnKG1zZyk6CisgICAgIiIiSG9vayB0byB3cml0ZSBhIHdhcm5pbmcgdG8gYSBmaWxlOyByZXBsYWNlIGlmIHlvdSBsaWtlLiIiIgorICAgIHNob3d3YXJuaW5nID0gZ2xvYmFscygpLmdldCgnc2hvd3dhcm5pbmcnLCBfc2hvd3dhcm5pbmcpCisgICAgaWYgc2hvd3dhcm5pbmcgaXMgbm90IF9zaG93d2FybmluZzoKKyAgICAgICAgIyB3YXJuaW5ncy5zaG93d2FybmluZygpIHdhcyByZXBsYWNlZAorICAgICAgICBpZiBub3QgY2FsbGFibGUoc2hvd3dhcm5pbmcpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBvciBtZXRob2QiKQorCisgICAgICAgIHNob3d3YXJuaW5nKG1zZy5tZXNzYWdlLCBtc2cuY2F0ZWdvcnksIG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgbXNnLmZpbGUsIG1zZy5saW5lKQorICAgICAgICByZXR1cm4KKyAgICBfc2hvd3dhcm5tc2dfaW1wbChtc2cpCisKKyMgS2VlcCBhIHJlZmVyZW5jZSB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gd2FzIHJlcGxhY2VkCitfZm9ybWF0d2FybmluZyA9IGZvcm1hdHdhcm5pbmcKKworZGVmIF9mb3JtYXR3YXJubXNnKG1zZyk6CisgICAgIiIiRnVuY3Rpb24gdG8gZm9ybWF0IGEgd2FybmluZyB0aGUgc3RhbmRhcmQgd2F5LiIiIgorICAgIGZvcm1hdHdhcm5pbmcgPSBnbG9iYWxzKCkuZ2V0KCdmb3JtYXR3YXJuaW5nJywgX2Zvcm1hdHdhcm5pbmcpCisgICAgaWYgZm9ybWF0d2FybmluZyBpcyBub3QgX2Zvcm1hdHdhcm5pbmc6CisgICAgICAgICMgd2FybmluZ3MuZm9ybWF0d2FybmluZygpIHdhcyByZXBsYWNlZAorICAgICAgICByZXR1cm4gZm9ybWF0d2FybmluZyhtc2cubWVzc2FnZSwgbXNnLmNhdGVnb3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sIGxpbmU9bXNnLmxpbmUpCisgICAgcmV0dXJuIF9mb3JtYXR3YXJubXNnX2ltcGwobXNnKQorCiBkZWYgZmlsdGVyd2FybmluZ3MoYWN0aW9uLCBtZXNzYWdlPSIiLCBjYXRlZ29yeT1XYXJuaW5nLCBtb2R1bGU9IiIsIGxpbmVubz0wLAogICAgICAgICAgICAgICAgICAgIGFwcGVuZD1GYWxzZSk6CiAgICAgIiIiSW5zZXJ0IGFuIGVudHJ5IGludG8gdGhlIGxpc3Qgb2Ygd2FybmluZ3MgZmlsdGVycyAoYXQgdGhlIGZyb250KS4KQEAgLTE4NSw3ICsyNTgsNyBAQAogCiAKICMgQ29kZSB0eXBpY2FsbHkgcmVwbGFjZWQgYnkgX3dhcm5pbmdzCi1kZWYgd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpOgorZGVmIHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSk6CiAgICAgIiIiSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiIiIgogICAgICMgQ2hlY2sgaWYgbWVzc2FnZSBpcyBhbHJlYWR5IGEgV2FybmluZyBvYmplY3QKICAgICBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIFdhcm5pbmcpOgpAQCAtMjM1LDEwICszMDgsMTEgQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gbW9kdWxlCiAgICAgcmVnaXN0cnkgPSBnbG9iYWxzLnNldGRlZmF1bHQoIl9fd2FybmluZ3JlZ2lzdHJ5X18iLCB7fSkKICAgICB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsIHJlZ2lzdHJ5LAotICAgICAgICAgICAgICAgICAgZ2xvYmFscykKKyAgICAgICAgICAgICAgICAgIGdsb2JhbHMsIHNvdXJjZSkKIAogZGVmIHdhcm5fZXhwbGljaXQobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sCi0gICAgICAgICAgICAgICAgICBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSk6CisgICAgICAgICAgICAgICAgICBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZT1Ob25lKToKICAgICBsaW5lbm8gPSBpbnQobGluZW5vKQogICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICBtb2R1bGUgPSBmaWxlbmFtZSBvciAiPHVua25vd24+IgpAQCAtMzAzLDIyICszNzcsMTggQEAKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGFjdGlvbiAoJXIpIGluIHdhcm5pbmdzLmZpbHRlcnM6XG4gJXMiICUKICAgICAgICAgICAgICAgKGFjdGlvbiwgaXRlbSkpCi0gICAgaWYgbm90IGNhbGxhYmxlKHNob3d3YXJuaW5nKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIG9yIG1ldGhvZCIpCiAgICAgIyBQcmludCBtZXNzYWdlIGFuZCBjb250ZXh0Ci0gICAgc2hvd3dhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8pCisgICAgbXNnID0gV2FybmluZ01lc3NhZ2UobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIHNvdXJjZSkKKyAgICBfc2hvd3dhcm5tc2cobXNnKQogCiAKIGNsYXNzIFdhcm5pbmdNZXNzYWdlKG9iamVjdCk6CiAKLSAgICAiIiJIb2xkcyB0aGUgcmVzdWx0IG9mIGEgc2luZ2xlIHNob3d3YXJuaW5nKCkgY2FsbC4iIiIKLQogICAgIF9XQVJOSU5HX0RFVEFJTFMgPSAoIm1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAiZmlsZW5hbWUiLCAibGluZW5vIiwgImZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiKQorICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUiLCAic291cmNlIikKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICBsaW5lPU5vbmUpOgorICAgICAgICAgICAgICAgICBsaW5lPU5vbmUsIHNvdXJjZT1Ob25lKToKICAgICAgICAgbG9jYWxfdmFsdWVzID0gbG9jYWxzKCkKICAgICAgICAgZm9yIGF0dHIgaW4gc2VsZi5fV0FSTklOR19ERVRBSUxTOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCBsb2NhbF92YWx1ZXNbYXR0cl0pCkBAIC0zNzYsMTEgKzQ0NiwxMiBAQAogICAgICAgICBzZWxmLl9tb2R1bGUuZmlsdGVycyA9IHNlbGYuX2ZpbHRlcnNbOl0KICAgICAgICAgc2VsZi5fbW9kdWxlLl9maWx0ZXJzX211dGF0ZWQoKQogICAgICAgICBzZWxmLl9zaG93d2FybmluZyA9IHNlbGYuX21vZHVsZS5zaG93d2FybmluZworICAgICAgICBzZWxmLl9zaG93d2Fybm1zZyA9IHNlbGYuX21vZHVsZS5fc2hvd3dhcm5tc2cKICAgICAgICAgaWYgc2VsZi5fcmVjb3JkOgogICAgICAgICAgICAgbG9nID0gW10KLSAgICAgICAgICAgIGRlZiBzaG93d2FybmluZygqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQoV2FybmluZ01lc3NhZ2UoKmFyZ3MsICoqa3dhcmdzKSkKLSAgICAgICAgICAgIHNlbGYuX21vZHVsZS5zaG93d2FybmluZyA9IHNob3d3YXJuaW5nCisgICAgICAgICAgICBkZWYgc2hvd2Fybm1zZyhtc2cpOgorICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQobXNnKQorICAgICAgICAgICAgc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZyA9IHNob3dhcm5tc2cKICAgICAgICAgICAgIHJldHVybiBsb2cKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCkBAIC0zOTEsNiArNDYyLDcgQEAKICAgICAgICAgc2VsZi5fbW9kdWxlLmZpbHRlcnMgPSBzZWxmLl9maWx0ZXJzCiAgICAgICAgIHNlbGYuX21vZHVsZS5fZmlsdGVyc19tdXRhdGVkKCkKICAgICAgICAgc2VsZi5fbW9kdWxlLnNob3d3YXJuaW5nID0gc2VsZi5fc2hvd3dhcm5pbmcKKyAgICAgICAgc2VsZi5fbW9kdWxlLl9zaG93d2Fybm1zZyA9IHNlbGYuX3Nob3d3YXJubXNnCiAKIAogIyBmaWx0ZXJzIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgZmlsdGVyIDUtdHVwbGVzCmRpZmYgLS1naXQgYS9MaWIvd2F2ZS5weSBiL0xpYi93YXZlLnB5CmluZGV4IDhhMTAxZTMuLmY3MWY3ZTUgMTAwNjQ0Ci0tLSBhL0xpYi93YXZlLnB5CisrKyBiL0xpYi93YXZlLnB5CkBAIC03Myw3ICs3Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogCi1fX2FsbF9fID0gWyJvcGVuIiwgIm9wZW5mcCIsICJFcnJvciJdCitfX2FsbF9fID0gWyJvcGVuIiwgIm9wZW5mcCIsICJFcnJvciIsICJXYXZlX3JlYWQiLCAiV2F2ZV93cml0ZSJdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CiAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weSBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKaW5kZXggN2ZkZGJlOC4uZjcxNTYzYSAxMDA2NDQKLS0tIGEvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQorKysgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CkBAIC0xMSw3ICsxMSw2IEBACiAiIiIKIAogZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciwgSFRUUFNlcnZlcgotZnJvbSBpbyBpbXBvcnQgQnVmZmVyZWRXcml0ZXIKIGltcG9ydCBzeXMKIGltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20gd3NnaXJlZi5oYW5kbGVycyBpbXBvcnQgU2ltcGxlSGFuZGxlcgpAQCAtMTI3LDE3ICsxMjYsMTEgQEAKICAgICAgICAgaWYgbm90IHNlbGYucGFyc2VfcmVxdWVzdCgpOiAjIEFuIGVycm9yIGNvZGUgaGFzIGJlZW4gc2VudCwganVzdCBleGl0CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIEF2b2lkIHBhc3NpbmcgdGhlIHJhdyBmaWxlIG9iamVjdCB3ZmlsZSwgd2hpY2ggY2FuIGRvIHBhcnRpYWwKLSAgICAgICAgIyB3cml0ZXMgKElzc3VlIDI0MjkxKQotICAgICAgICBzdGRvdXQgPSBCdWZmZXJlZFdyaXRlcihzZWxmLndmaWxlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gU2VydmVySGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxmLnJmaWxlLCBzdGRvdXQsIHNlbGYuZ2V0X3N0ZGVycigpLCBzZWxmLmdldF9lbnZpcm9uKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGhhbmRsZXIucmVxdWVzdF9oYW5kbGVyID0gc2VsZiAgICAgICMgYmFja3BvaW50ZXIgZm9yIGxvZ2dpbmcKLSAgICAgICAgICAgIGhhbmRsZXIucnVuKHNlbGYuc2VydmVyLmdldF9hcHAoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHN0ZG91dC5kZXRhY2goKQorICAgICAgICBoYW5kbGVyID0gU2VydmVySGFuZGxlcigKKyAgICAgICAgICAgIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUsIHNlbGYuZ2V0X3N0ZGVycigpLCBzZWxmLmdldF9lbnZpcm9uKCkKKyAgICAgICAgKQorICAgICAgICBoYW5kbGVyLnJlcXVlc3RfaGFuZGxlciA9IHNlbGYgICAgICAjIGJhY2twb2ludGVyIGZvciBsb2dnaW5nCisgICAgICAgIGhhbmRsZXIucnVuKHNlbGYuc2VydmVyLmdldF9hcHAoKSkKIAogCiAKQEAgLTE2MywxMCArMTU2LDkgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKQotICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKLSAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQotICAgIGltcG9ydCB3ZWJicm93c2VyCi0gICAgd2ViYnJvd3Nlci5vcGVuKCdodHRwOi8vbG9jYWxob3N0OjgwMDAveHl6P2FiYycpCi0gICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKSAgIyBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0Ci0gICAgaHR0cGQuc2VydmVyX2Nsb3NlKCkKKyAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKKyAgICAgICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiIsIHNhWzBdLCAicG9ydCIsIHNhWzFdLCAiLi4uIikKKyAgICAgICAgaW1wb3J0IHdlYmJyb3dzZXIKKyAgICAgICAgd2ViYnJvd3Nlci5vcGVuKCdodHRwOi8vbG9jYWxob3N0OjgwMDAveHl6P2FiYycpCisgICAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkgICMgc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdApkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weSBiL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKaW5kZXggNDQ0ZjBiMi4uZTlhMTUzNiAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20veG1sYnVpbGRlci5weQorKysgYi9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CkBAIC0zNTMsMTQgKzM1MywxNCBAQAogY2xhc3MgRG9jdW1lbnRMUzoKICAgICAiIiJNaXhpbiB0byBjcmVhdGUgZG9jdW1lbnRzIHRoYXQgY29uZm9ybSB0byB0aGUgbG9hZC9zYXZlIHNwZWMuIiIiCiAKLSAgICBhc3luYyA9IF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eSgpCiAgICAgYXN5bmNfID0gRmFsc2UKKyAgICBsb2NhbHMoKVsnYXN5bmMnXSA9IF9Bc3luY0RlcHJlY2F0ZWRQcm9wZXJ0eSgpICAjIEF2b2lkIERlcHJlY2F0aW9uV2FybmluZwogCiAgICAgZGVmIF9nZXRfYXN5bmMoc2VsZik6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIF9zZXRfYXN5bmMoc2VsZiwgYXN5bmMpOgotICAgICAgICBpZiBhc3luYzoKKyAgICBkZWYgX3NldF9hc3luYyhzZWxmLCBmbGFnKToKKyAgICAgICAgaWYgZmxhZzoKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90U3VwcG9ydGVkRXJyKAogICAgICAgICAgICAgICAgICJhc3luY2hyb25vdXMgZG9jdW1lbnQgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIikKIApkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weSBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKaW5kZXggNWRlNDIzMi4uYWI2Yjc5YSAxMDA2NDQKLS0tIGEvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQorKysgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CkBAIC01OSwxNSArNTksMTUgQEAKIGltcG9ydCByZQogCiB4cGF0aF90b2tlbml6ZXJfcmUgPSByZS5jb21waWxlKAotICAgICIoIgotICAgICInW14nXSonfFwiW15cIl0qXCJ8IgotICAgICI6OnwiCi0gICAgIi8vP3wiCi0gICAgIlwuXC58IgotICAgICJcKFwpfCIKLSAgICAiWy8uKjpcW1xdXChcKUA9XSl8IgotICAgICIoKD86XHtbXn1dK1x9KT9bXi9cW1xdXChcKUA9XHNdKyl8IgotICAgICJccysiCisgICAgciIoIgorICAgIHIiJ1teJ10qJ3xcIlteXCJdKlwifCIKKyAgICByIjo6fCIKKyAgICByIi8vP3wiCisgICAgciJcLlwufCIKKyAgICByIlwoXCl8IgorICAgIHIiWy8uKjpcW1xdXChcKUA9XSl8IgorICAgIHIiKCg/Olx7W159XStcfSk/W14vXFtcXVwoXClAPVxzXSspfCIKKyAgICByIlxzKyIKICAgICApCiAKIGRlZiB4cGF0aF90b2tlbml6ZXIocGF0dGVybiwgbmFtZXNwYWNlcz1Ob25lKToKQEAgLTE4MCw3ICsxODAsNyBAQAogICAgICAgICAgICAgICAgIGlmIGVsZW0uZ2V0KGtleSkgPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KICAgICAgICAgcmV0dXJuIHNlbGVjdAotICAgIGlmIHNpZ25hdHVyZSA9PSAiLSIgYW5kIG5vdCByZS5tYXRjaCgiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CisgICAgaWYgc2lnbmF0dXJlID09ICItIiBhbmQgbm90IHJlLm1hdGNoKHIiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CiAgICAgICAgICMgW3RhZ10KICAgICAgICAgdGFnID0gcHJlZGljYXRlWzBdCiAgICAgICAgIGRlZiBzZWxlY3QoY29udGV4dCwgcmVzdWx0KToKQEAgLTE4OCw3ICsxODgsNyBAQAogICAgICAgICAgICAgICAgIGlmIGVsZW0uZmluZCh0YWcpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCiAgICAgICAgIHJldHVybiBzZWxlY3QKLSAgICBpZiBzaWduYXR1cmUgPT0gIi09JyIgYW5kIG5vdCByZS5tYXRjaCgiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CisgICAgaWYgc2lnbmF0dXJlID09ICItPSciIGFuZCBub3QgcmUubWF0Y2gociJcLT9cZCskIiwgcHJlZGljYXRlWzBdKToKICAgICAgICAgIyBbdGFnPSd2YWx1ZSddCiAgICAgICAgIHRhZyA9IHByZWRpY2F0ZVswXQogICAgICAgICB2YWx1ZSA9IHByZWRpY2F0ZVstMV0KZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CmluZGV4IDkyODIxYzUuLjczNTQwNTYgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQpAQCAtODUsNyArODUsNyBAQAogICAgICJUcmVlQnVpbGRlciIsCiAgICAgIlZFUlNJT04iLAogICAgICJYTUwiLCAiWE1MSUQiLAotICAgICJYTUxQYXJzZXIiLAorICAgICJYTUxQYXJzZXIiLCAiWE1MUHVsbFBhcnNlciIsCiAgICAgInJlZ2lzdGVyX25hbWVzcGFjZSIsCiAgICAgXQogCkBAIC05NSw2ICs5NSw3IEBACiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGlvCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb250ZXh0bGliCiAKIGZyb20gLiBpbXBvcnQgRWxlbWVudFBhdGgKQEAgLTEwMjksNyArMTAzMCw3IEBACiAgICAgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgcHJlZml4IGlzIHJlc2VydmVkIG9yIGlzIGludmFsaWQuCiAKICAgICAiIiIKLSAgICBpZiByZS5tYXRjaCgibnNcZCskIiwgcHJlZml4KToKKyAgICBpZiByZS5tYXRjaChyIm5zXGQrJCIsIHByZWZpeCk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlByZWZpeCBmb3JtYXQgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZSIpCiAgICAgZm9yIGssIHYgaW4gbGlzdChfbmFtZXNwYWNlX21hcC5pdGVtcygpKToKICAgICAgICAgaWYgayA9PSB1cmkgb3IgdiA9PSBwcmVmaXg6CkBAIC0xMDg0LDcgKzEwODUsNyBAQAogICAgICAgICBpZiAiXCIiIGluIHRleHQ6CiAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCJcIiIsICImcXVvdDsiKQogICAgICAgICAjIFRoZSBmb2xsb3dpbmcgYnVzaW5lc3Mgd2l0aCBjYXJyaWFnZSByZXR1cm5zIGlzIHRvIHNhdGlzZnkKLSAgICAgICAgIyBTZWN0aW9uIDIuMTEgb2YgdGhlIFhNTCBzcGVjaWZpY2F0aW9uLCBzdGF0aW5nIHRoYXQgCisgICAgICAgICMgU2VjdGlvbiAyLjExIG9mIHRoZSBYTUwgc3BlY2lmaWNhdGlvbiwgc3RhdGluZyB0aGF0CiAgICAgICAgICMgQ1Igb3IgQ1IgTE4gc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGgganVzdCBMTgogICAgICAgICAjIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI3NlYy1saW5lLWVuZHMKICAgICAgICAgaWYgIlxyXG4iIGluIHRleHQ6CkBAIC0xMjExLDE2ICsxMjEyLDM3IEBACiAgICAgUmV0dXJucyBhbiBpdGVyYXRvciBwcm92aWRpbmcgKGV2ZW50LCBlbGVtKSBwYWlycy4KIAogICAgICIiIgorICAgICMgVXNlIHRoZSBpbnRlcm5hbCwgdW5kb2N1bWVudGVkIF9wYXJzZXIgYXJndW1lbnQgZm9yIG5vdzsgV2hlbiB0aGUKKyAgICAjIHBhcnNlciBhcmd1bWVudCBvZiBpdGVycGFyc2UgaXMgcmVtb3ZlZCwgdGhpcyBjYW4gYmUga2lsbGVkLgorICAgIHB1bGxwYXJzZXIgPSBYTUxQdWxsUGFyc2VyKGV2ZW50cz1ldmVudHMsIF9wYXJzZXI9cGFyc2VyKQorICAgIGRlZiBpdGVyYXRvcigpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcHVsbHBhcnNlci5yZWFkX2V2ZW50cygpCisgICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgorICAgICAgICAgICAgICAgIGRhdGEgPSBzb3VyY2UucmVhZCgxNiAqIDEwMjQpCisgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcHVsbHBhcnNlci5mZWVkKGRhdGEpCisgICAgICAgICAgICByb290ID0gcHVsbHBhcnNlci5fY2xvc2VfYW5kX3JldHVybl9yb290KCkKKyAgICAgICAgICAgIHlpZWxkIGZyb20gcHVsbHBhcnNlci5yZWFkX2V2ZW50cygpCisgICAgICAgICAgICBpdC5yb290ID0gcm9vdAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgY2xvc2Vfc291cmNlOgorICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKyAgICBjbGFzcyBJdGVyUGFyc2VJdGVyYXRvcihjb2xsZWN0aW9ucy5JdGVyYXRvcik6CisgICAgICAgIF9fbmV4dF9fID0gaXRlcmF0b3IoKS5fX25leHRfXworICAgIGl0ID0gSXRlclBhcnNlSXRlcmF0b3IoKQorICAgIGl0LnJvb3QgPSBOb25lCisgICAgZGVsIGl0ZXJhdG9yLCBJdGVyUGFyc2VJdGVyYXRvcgorCiAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKICAgICBpZiBub3QgaGFzYXR0cihzb3VyY2UsICJyZWFkIik6CiAgICAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAicmIiKQogICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gX0l0ZXJQYXJzZUl0ZXJhdG9yKHNvdXJjZSwgZXZlbnRzLCBwYXJzZXIsIGNsb3NlX3NvdXJjZSkKLSAgICBleGNlcHQ6Ci0gICAgICAgIGlmIGNsb3NlX3NvdXJjZToKLSAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCi0gICAgICAgIHJhaXNlCisKKyAgICByZXR1cm4gaXQKIAogCiBjbGFzcyBYTUxQdWxsUGFyc2VyOgpAQCAtMTIzMCw5ICsxMjUyLDcgQEAKICAgICAgICAgIyB1cG9uIGluIHVzZXIgY29kZS4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuCiAgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNzc0MSBmb3IgbW9yZSBkZXRhaWxzLgogCi0gICAgICAgICMgX2VsZW1lbnR0cmVlLmMgZXhwZWN0cyBhIGxpc3QsIG5vdCBhIGRlcXVlCi0gICAgICAgIHNlbGYuX2V2ZW50c19xdWV1ZSA9IFtdCi0gICAgICAgIHNlbGYuX2luZGV4ID0gMAorICAgICAgICBzZWxmLl9ldmVudHNfcXVldWUgPSBjb2xsZWN0aW9ucy5kZXF1ZSgpCiAgICAgICAgIHNlbGYuX3BhcnNlciA9IF9wYXJzZXIgb3IgWE1MUGFyc2VyKHRhcmdldD1UcmVlQnVpbGRlcigpKQogICAgICAgICAjIHdpcmUgdXAgdGhlIHBhcnNlciBmb3IgZXZlbnQgcmVwb3J0aW5nCiAgICAgICAgIGlmIGV2ZW50cyBpcyBOb25lOgpAQCAtMTI3MCw2NCArMTI5MCwxNCBAQAogICAgICAgICByZXRyaWV2ZWQgZnJvbSB0aGUgaXRlcmF0b3IuCiAgICAgICAgICIiIgogICAgICAgICBldmVudHMgPSBzZWxmLl9ldmVudHNfcXVldWUKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGluZGV4ID0gc2VsZi5faW5kZXgKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBldmVudCA9IGV2ZW50c1tzZWxmLl9pbmRleF0KLSAgICAgICAgICAgICAgICAjIEF2b2lkIHJldGFpbmluZyByZWZlcmVuY2VzIHRvIHBhc3QgZXZlbnRzCi0gICAgICAgICAgICAgICAgZXZlbnRzW3NlbGYuX2luZGV4XSA9IE5vbmUKLSAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpbmRleCArPSAxCi0gICAgICAgICAgICAjIENvbXBhY3QgdGhlIGxpc3QgaW4gYSBPKDEpIGFtb3J0aXplZCBmYXNoaW9uCi0gICAgICAgICAgICAjIEFzIG5vdGVkIGFib3ZlLCBfZWxlbWVudHJlZS5jIG5lZWRzIGEgbGlzdCwgbm90IGEgZGVxdWUKLSAgICAgICAgICAgIGlmIGluZGV4ICogMiA+PSBsZW4oZXZlbnRzKToKLSAgICAgICAgICAgICAgICBldmVudHNbOmluZGV4XSA9IFtdCi0gICAgICAgICAgICAgICAgc2VsZi5faW5kZXggPSAwCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gaW5kZXgKKyAgICAgICAgd2hpbGUgZXZlbnRzOgorICAgICAgICAgICAgZXZlbnQgPSBldmVudHMucG9wbGVmdCgpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgIHJhaXNlIGV2ZW50CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHlpZWxkIGV2ZW50CiAKIAotY2xhc3MgX0l0ZXJQYXJzZUl0ZXJhdG9yOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZSwgZXZlbnRzLCBwYXJzZXIsIGNsb3NlX3NvdXJjZT1GYWxzZSk6Ci0gICAgICAgICMgVXNlIHRoZSBpbnRlcm5hbCwgdW5kb2N1bWVudGVkIF9wYXJzZXIgYXJndW1lbnQgZm9yIG5vdzsgV2hlbiB0aGUKLSAgICAgICAgIyBwYXJzZXIgYXJndW1lbnQgb2YgaXRlcnBhcnNlIGlzIHJlbW92ZWQsIHRoaXMgY2FuIGJlIGtpbGxlZC4KLSAgICAgICAgc2VsZi5fcGFyc2VyID0gWE1MUHVsbFBhcnNlcihldmVudHM9ZXZlbnRzLCBfcGFyc2VyPXBhcnNlcikKLSAgICAgICAgc2VsZi5fZmlsZSA9IHNvdXJjZQotICAgICAgICBzZWxmLl9jbG9zZV9maWxlID0gY2xvc2Vfc291cmNlCi0gICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QgPSBOb25lCi0KLSAgICBkZWYgX19uZXh0X18oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICAgICAgZm9yIGV2ZW50IGluIHNlbGYuX3BhcnNlci5yZWFkX2V2ZW50cygpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXZlbnQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9wYXJzZXIuX3BhcnNlciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKDE2ICogMTAyNCkKLSAgICAgICAgICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBzZWxmLl9wYXJzZXIuX2Nsb3NlX2FuZF9yZXR1cm5fcm9vdCgpCi0gICAgICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290Ci0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICByYWlzZQotICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOgotICAgICAgICAgICAgc2VsZi5fZmlsZS5jbG9zZSgpCi0gICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotCiBkZWYgWE1MKHRleHQsIHBhcnNlcj1Ob25lKToKICAgICAiIiJQYXJzZSBYTUwgZG9jdW1lbnQgZnJvbSBzdHJpbmcgY29uc3RhbnQuCiAKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvY2xpZW50LnB5IGIvTGliL3htbHJwYy9jbGllbnQucHkKaW5kZXggYmJmOWVlNi4uYmQzMjc4ZSAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9jbGllbnQucHkKKysrIGIvTGliL3htbHJwYy9jbGllbnQucHkKQEAgLTEzMiw2ICsxMzIsNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKQEAgLTE1MSw3ICsxNTIsNyBAQAogICAgIHJldHVybiBzLnJlcGxhY2UoIj4iLCAiJmd0OyIsKQogCiAjIHVzZWQgaW4gVXNlci1BZ2VudCBoZWFkZXIgc2VudAotX192ZXJzaW9uX18gPSBzeXMudmVyc2lvbls6M10KK19fdmVyc2lvbl9fID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKICMgeG1scnBjIGludGVnZXIgbGltaXRzCiBNQVhJTlQgPSAgMioqMzEtMQpAQCAtNjY3LDYgKzY2OCw4IEBACiAKICAgICBkZWYgc3RhcnQoc2VsZiwgdGFnLCBhdHRycyk6CiAgICAgICAgICMgcHJlcGFyZSB0byBoYW5kbGUgdGhpcyBlbGVtZW50CisgICAgICAgIGlmICc6JyBpbiB0YWc6CisgICAgICAgICAgICB0YWcgPSB0YWcuc3BsaXQoJzonKVstMV0KICAgICAgICAgaWYgdGFnID09ICJhcnJheSIgb3IgdGFnID09ICJzdHJ1Y3QiOgogICAgICAgICAgICAgc2VsZi5fbWFya3MuYXBwZW5kKGxlbihzZWxmLl9zdGFjaykpCiAgICAgICAgIHNlbGYuX2RhdGEgPSBbXQpAQCAtNjgyLDkgKzY4NSwxMyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWddCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MgIyB1bmtub3duIHRhZyA/Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZihzZWxmLCAiIi5qb2luKHNlbGYuX2RhdGEpKQorICAgICAgICAgICAgaWYgJzonIG5vdCBpbiB0YWc6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZy5zcGxpdCgnOicpWy0xXV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgIHJldHVybiBmKHNlbGYsICIiLmpvaW4oc2VsZi5fZGF0YSkpCiAKICAgICAjCiAgICAgIyBhY2NlbGVyYXRvciBzdXBwb3J0CkBAIC02OTQsOSArNzAxLDEzIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZ10KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcyAjIHVua25vd24gdGFnID8KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmKHNlbGYsIGRhdGEpCisgICAgICAgICAgICBpZiAnOicgbm90IGluIHRhZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnLnNwbGl0KCc6JylbLTFdXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgcmV0dXJuIGYoc2VsZiwgZGF0YSkKIAogICAgICMKICAgICAjIGVsZW1lbnQgZGVjb2RlcnMKQEAgLTcyMSwxNCArNzMyLDIzIEBACiAgICAgZGVmIGVuZF9pbnQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYXBwZW5kKGludChkYXRhKSkKICAgICAgICAgc2VsZi5fdmFsdWUgPSAwCisgICAgZGlzcGF0Y2hbImkxIl0gPSBlbmRfaW50CisgICAgZGlzcGF0Y2hbImkyIl0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImk0Il0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImk4Il0gPSBlbmRfaW50CiAgICAgZGlzcGF0Y2hbImludCJdID0gZW5kX2ludAorICAgIGRpc3BhdGNoWyJiaWdpbnRlZ2VyIl0gPSBlbmRfaW50CiAKICAgICBkZWYgZW5kX2RvdWJsZShzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5hcHBlbmQoZmxvYXQoZGF0YSkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gMAogICAgIGRpc3BhdGNoWyJkb3VibGUiXSA9IGVuZF9kb3VibGUKKyAgICBkaXNwYXRjaFsiZmxvYXQiXSA9IGVuZF9kb3VibGUKKworICAgIGRlZiBlbmRfYmlnZGVjaW1hbChzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5hcHBlbmQoRGVjaW1hbChkYXRhKSkKKyAgICAgICAgc2VsZi5fdmFsdWUgPSAwCisgICAgZGlzcGF0Y2hbImJpZ2RlY2ltYWwiXSA9IGVuZF9iaWdkZWNpbWFsCiAKICAgICBkZWYgZW5kX3N0cmluZyhzZWxmLCBkYXRhKToKICAgICAgICAgaWYgc2VsZi5fZW5jb2Rpbmc6CmRpZmYgLS1naXQgYS9MaWIveG1scnBjL3NlcnZlci5weSBiL0xpYi94bWxycGMvc2VydmVyLnB5CmluZGV4IDc4MTc2OTMuLjg0OWJmZGQgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvc2VydmVyLnB5CisrKyBiL0xpYi94bWxycGMvc2VydmVyLnB5CkBAIC05NzEsMTYgKzk3MSwxNSBAQAogICAgICAgICAgICAgZGVmIGdldEN1cnJlbnRUaW1lKCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCiAKLSAgICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQotICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCi0gICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKLSAgICBwcmludCgnSXQgaXMgYWR2aXNhYmxlIHRvIHJ1biB0aGlzIGV4YW1wbGUgc2VydmVyIHdpdGhpbiBhIHNlY3VyZSwgY2xvc2VkIG5ldHdvcmsuJykKLSAgICB0cnk6Ci0gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQotICAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc3lzLmV4aXQoMCkKKyAgICB3aXRoIFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKSBhcyBzZXJ2ZXI6CisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKKyAgICAgICAgcHJpbnQoJ1NlcnZpbmcgWE1MLVJQQyBvbiBsb2NhbGhvc3QgcG9ydCA4MDAwJykKKyAgICAgICAgcHJpbnQoJ0l0IGlzIGFkdmlzYWJsZSB0byBydW4gdGhpcyBleGFtcGxlIHNlcnZlciB3aXRoaW4gYSBzZWN1cmUsIGNsb3NlZCBuZXR3b3JrLicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQpkaWZmIC0tZ2l0IGEvTGliL3ppcGZpbGUucHkgYi9MaWIvemlwZmlsZS5weQppbmRleCAyNDc2NzE3Li5lMmFlMDQyIDEwMDY0NAotLS0gYS9MaWIvemlwZmlsZS5weQorKysgYi9MaWIvemlwZmlsZS5weQpAQCAtMzcxLDcgKzM3MSw3IEBACiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZW1vZGU9JXInICUgc3RhdC5maWxlbW9kZShoaSkpCiAgICAgICAgIGlmIGxvOgogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGV4dGVybmFsX2F0dHI9JSN4JyAlIGxvKQotICAgICAgICBpc2RpciA9IHNlbGYuZmlsZW5hbWVbLTE6XSA9PSAnLycKKyAgICAgICAgaXNkaXIgPSBzZWxmLmlzX2RpcigpCiAgICAgICAgIGlmIG5vdCBpc2RpciBvciBzZWxmLmZpbGVfc2l6ZToKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBmaWxlX3NpemU9JXInICUgc2VsZi5maWxlX3NpemUpCiAgICAgICAgIGlmICgobm90IGlzZGlyIG9yIHNlbGYuY29tcHJlc3Nfc2l6ZSkgYW5kCkBAIC00NDksNyArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICBlbGlmIGxuID09IDA6CiAgICAgICAgICAgICAgICAgICAgIGNvdW50cyA9ICgpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJDb3JydXB0IGV4dHJhIGZpZWxkICVzIiUobG4sKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkWmlwRmlsZSgiQ29ycnVwdCBleHRyYSBmaWVsZCAlMDR4IChzaXplPSVkKSIgJSAodHAsIGxuKSkKIAogICAgICAgICAgICAgICAgIGlkeCA9IDAKIApAQCAtNDY5LDYgKzQ2OSw0MiBAQAogCiAgICAgICAgICAgICBleHRyYSA9IGV4dHJhW2xuKzQ6XQogCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21fZmlsZShjbHMsIGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gYXBwcm9wcmlhdGUgWmlwSW5mbyBmb3IgYSBmaWxlIG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICAgICAgIGZpbGVuYW1lIHNob3VsZCBiZSB0aGUgcGF0aCB0byBhIGZpbGUgb3IgZGlyZWN0b3J5IG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICAgICAgIGFyY25hbWUgaXMgdGhlIG5hbWUgd2hpY2ggaXQgd2lsbCBoYXZlIHdpdGhpbiB0aGUgYXJjaGl2ZSAoYnkgZGVmYXVsdCwKKyAgICAgICAgdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzIGZpbGVuYW1lLCBidXQgd2l0aG91dCBhIGRyaXZlIGxldHRlciBhbmQgd2l0aAorICAgICAgICBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4KKyAgICAgICAgIiIiCisgICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKKyAgICAgICAgaXNkaXIgPSBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSkKKyAgICAgICAgbXRpbWUgPSB0aW1lLmxvY2FsdGltZShzdC5zdF9tdGltZSkKKyAgICAgICAgZGF0ZV90aW1lID0gbXRpbWVbMDo2XQorICAgICAgICAjIENyZWF0ZSBaaXBJbmZvIGluc3RhbmNlIHRvIHN0b3JlIGZpbGUgaW5mb3JtYXRpb24KKyAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVuYW1lCisgICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguc3BsaXRkcml2ZShhcmNuYW1lKVsxXSkKKyAgICAgICAgd2hpbGUgYXJjbmFtZVswXSBpbiAob3Muc2VwLCBvcy5hbHRzZXApOgorICAgICAgICAgICAgYXJjbmFtZSA9IGFyY25hbWVbMTpdCisgICAgICAgIGlmIGlzZGlyOgorICAgICAgICAgICAgYXJjbmFtZSArPSAnLycKKyAgICAgICAgemluZm8gPSBjbHMoYXJjbmFtZSwgZGF0ZV90aW1lKQorICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gKHN0LnN0X21vZGUgJiAweEZGRkYpIDw8IDE2ICAjIFVuaXggYXR0cmlidXRlcworICAgICAgICBpZiBpc2RpcjoKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKKyAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKKworICAgICAgICByZXR1cm4gemluZm8KKworICAgIGRlZiBpc19kaXIoc2VsZik6CisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoaXMgYXJjaGl2ZSBtZW1iZXIgaXMgYSBkaXJlY3RvcnkuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmZpbGVuYW1lWy0xXSA9PSAnLycKKwogCiBjbGFzcyBfWmlwRGVjcnlwdGVyOgogICAgICIiIkNsYXNzIHRvIGhhbmRsZSBkZWNyeXB0aW9uIG9mIGZpbGVzIHN0b3JlZCB3aXRoaW4gYSBaSVAgYXJjaGl2ZS4KQEAgLTYxOCw3ICs2NTQsNyBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAogICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIGx6bWEgbW9kdWxlIikKICAgICBlbHNlOgotICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKIAogCiBkZWYgX2dldF9jb21wcmVzc29yKGNvbXByZXNzX3R5cGUpOgpAQCAtNjUxLDE0ICs2ODcsMTkgQEAKIAogCiBjbGFzcyBfU2hhcmVkRmlsZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgcG9zLCBjbG9zZSwgbG9jayk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIHBvcywgY2xvc2UsIGxvY2ssIHdyaXRpbmcpOgogICAgICAgICBzZWxmLl9maWxlID0gZmlsZQogICAgICAgICBzZWxmLl9wb3MgPSBwb3MKICAgICAgICAgc2VsZi5fY2xvc2UgPSBjbG9zZQogICAgICAgICBzZWxmLl9sb2NrID0gbG9jaworICAgICAgICBzZWxmLl93cml0aW5nID0gd3JpdGluZwogCiAgICAgZGVmIHJlYWQoc2VsZiwgbj0tMSk6CiAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX3dyaXRpbmcoKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZWFkIGZyb20gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpcyBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZC4iKQogICAgICAgICAgICAgc2VsZi5fZmlsZS5zZWVrKHNlbGYuX3BvcykKICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9maWxlLnJlYWQobikKICAgICAgICAgICAgIHNlbGYuX3BvcyA9IHNlbGYuX2ZpbGUudGVsbCgpCkBAIC03MDIsOSArNzQzLDYgQEAKICAgICAjIFJlYWQgZnJvbSBjb21wcmVzc2VkIGZpbGVzIGluIDRrIGJsb2Nrcy4KICAgICBNSU5fUkVBRF9TSVpFID0gNDA5NgogCi0gICAgIyBTZWFyY2ggZm9yIHVuaXZlcnNhbCBuZXdsaW5lcyBvciBsaW5lIGNodW5rcy4KLSAgICBQQVRURVJOID0gcmUuY29tcGlsZShicideKD9QPGNodW5rPlteXHJcbl0rKXwoP1A8bmV3bGluZT5cbnxcclxuPyknKQotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVvYmosIG1vZGUsIHppcGluZm8sIGRlY3J5cHRlcj1Ob25lLAogICAgICAgICAgICAgICAgICBjbG9zZV9maWxlb2JqPUZhbHNlKToKICAgICAgICAgc2VsZi5fZmlsZW9iaiA9IGZpbGVvYmoKQEAgLTcyMSw3ICs3NTksNiBAQAogICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCiAgICAgICAgIHNlbGYuX29mZnNldCA9IDAKIAotICAgICAgICBzZWxmLl91bml2ZXJzYWwgPSAnVScgaW4gbW9kZQogICAgICAgICBzZWxmLm5ld2xpbmVzID0gTm9uZQogCiAgICAgICAgICMgQWRqdXN0IHJlYWQgc2l6ZSBmb3IgZW5jcnlwdGVkIGZpbGVzIHNpbmNlIHRoZSBmaXJzdCAxMiBieXRlcwpAQCAtNzU4LDcgKzc5NSw3IEBACiAgICAgICAgIElmIGxpbWl0IGlzIHNwZWNpZmllZCwgYXQgbW9zdCBsaW1pdCBieXRlcyB3aWxsIGJlIHJlYWQuCiAgICAgICAgICIiIgogCi0gICAgICAgIGlmIG5vdCBzZWxmLl91bml2ZXJzYWwgYW5kIGxpbWl0IDwgMDoKKyAgICAgICAgaWYgbGltaXQgPCAwOgogICAgICAgICAgICAgIyBTaG9ydGN1dCBjb21tb24gY2FzZSAtIG5ld2xpbmUgZm91bmQgaW4gYnVmZmVyLgogICAgICAgICAgICAgaSA9IHNlbGYuX3JlYWRidWZmZXIuZmluZChiJ1xuJywgc2VsZi5fb2Zmc2V0KSArIDEKICAgICAgICAgICAgIGlmIGkgPiAwOgpAQCAtNzY2LDQxICs4MDMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IGkKICAgICAgICAgICAgICAgICByZXR1cm4gbGluZQogCi0gICAgICAgIGlmIG5vdCBzZWxmLl91bml2ZXJzYWw6Ci0gICAgICAgICAgICByZXR1cm4gaW8uQnVmZmVyZWRJT0Jhc2UucmVhZGxpbmUoc2VsZiwgbGltaXQpCi0KLSAgICAgICAgbGluZSA9IGInJwotICAgICAgICB3aGlsZSBsaW1pdCA8IDAgb3IgbGVuKGxpbmUpIDwgbGltaXQ6Ci0gICAgICAgICAgICByZWFkYWhlYWQgPSBzZWxmLnBlZWsoMikKLSAgICAgICAgICAgIGlmIHJlYWRhaGVhZCA9PSBiJyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLQotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBTZWFyY2ggZm9yIHVuaXZlcnNhbCBuZXdsaW5lcyBvciBsaW5lIGNodW5rcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVGhlIHBhdHRlcm4gcmV0dXJucyBlaXRoZXIgYSBsaW5lIGNodW5rIG9yIGEgbmV3bGluZSwgYnV0IG5vdAotICAgICAgICAgICAgIyBib3RoLiBDb21iaW5lZCB3aXRoIHBlZWsoMiksIHdlIGFyZSBhc3N1cmVkIHRoYXQgdGhlIHNlcXVlbmNlCi0gICAgICAgICAgICAjICdcclxuJyBpcyBhbHdheXMgcmV0cmlldmVkIGNvbXBsZXRlbHkgYW5kIG5ldmVyIHNwbGl0IGludG8KLSAgICAgICAgICAgICMgc2VwYXJhdGUgbmV3bGluZXMgLSAnXHInLCAnXG4nIGR1ZSB0byBjb2luY2lkZW50YWwgcmVhZGFoZWFkcy4KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgIG1hdGNoID0gc2VsZi5QQVRURVJOLnNlYXJjaChyZWFkYWhlYWQpCi0gICAgICAgICAgICBuZXdsaW5lID0gbWF0Y2guZ3JvdXAoJ25ld2xpbmUnKQotICAgICAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLm5ld2xpbmVzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZXMgPSBbXQotICAgICAgICAgICAgICAgIGlmIG5ld2xpbmUgbm90IGluIHNlbGYubmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubmV3bGluZXMuYXBwZW5kKG5ld2xpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ICs9IGxlbihuZXdsaW5lKQotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lICsgYidcbicKLQotICAgICAgICAgICAgY2h1bmsgPSBtYXRjaC5ncm91cCgnY2h1bmsnKQotICAgICAgICAgICAgaWYgbGltaXQgPj0gMDoKLSAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rWzogbGltaXQgLSBsZW4obGluZSldCi0KLSAgICAgICAgICAgIHNlbGYuX29mZnNldCArPSBsZW4oY2h1bmspCi0gICAgICAgICAgICBsaW5lICs9IGNodW5rCi0KLSAgICAgICAgcmV0dXJuIGxpbmUKKyAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIGxpbWl0KQogCiAgICAgZGVmIHBlZWsoc2VsZiwgbj0xKToKICAgICAgICAgIiIiUmV0dXJucyBidWZmZXJlZCBieXRlcyB3aXRob3V0IGFkdmFuY2luZyB0aGUgcG9zaXRpb24uIiIiCkBAIC05NTgsNiArOTYxLDc2IEBACiAgICAgICAgICAgICBzdXBlcigpLmNsb3NlKCkKIAogCitjbGFzcyBfWmlwV3JpdGVGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgemYsIHppbmZvLCB6aXA2NCk6CisgICAgICAgIHNlbGYuX3ppbmZvID0gemluZm8KKyAgICAgICAgc2VsZi5femlwNjQgPSB6aXA2NAorICAgICAgICBzZWxmLl96aXBmaWxlID0gemYKKyAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICBzZWxmLl9maWxlX3NpemUgPSAwCisgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgPSAwCisgICAgICAgIHNlbGYuX2NyYyA9IDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfZmlsZW9iaihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ppcGZpbGUuZnAKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgbmJ5dGVzID0gbGVuKGRhdGEpCisgICAgICAgIHNlbGYuX2ZpbGVfc2l6ZSArPSBuYnl0ZXMKKyAgICAgICAgc2VsZi5fY3JjID0gY3JjMzIoZGF0YSwgc2VsZi5fY3JjKQorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc29yOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgKz0gbGVuKGRhdGEpCisgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoZGF0YSkKKyAgICAgICAgcmV0dXJuIG5ieXRlcworCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNsb3NlKCkKKyAgICAgICAgIyBGbHVzaCBhbnkgZGF0YSBmcm9tIHRoZSBjb21wcmVzc29yLCBhbmQgdXBkYXRlIGhlYWRlciBpbmZvCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzb3I6CisgICAgICAgICAgICBidWYgPSBzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkKKyAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgKz0gbGVuKGJ1ZikKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoYnVmKQorICAgICAgICAgICAgc2VsZi5femluZm8uY29tcHJlc3Nfc2l6ZSA9IHNlbGYuX2NvbXByZXNzX3NpemUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUgPSBzZWxmLl9maWxlX3NpemUKKyAgICAgICAgc2VsZi5femluZm8uQ1JDID0gc2VsZi5fY3JjCisgICAgICAgIHNlbGYuX3ppbmZvLmZpbGVfc2l6ZSA9IHNlbGYuX2ZpbGVfc2l6ZQorCisgICAgICAgICMgV3JpdGUgdXBkYXRlZCBoZWFkZXIgaW5mbworICAgICAgICBpZiBzZWxmLl96aW5mby5mbGFnX2JpdHMgJiAweDA4OgorICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQorICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHNlbGYuX3ppcDY0IGVsc2UgJzxMTEwnCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKHN0cnVjdC5wYWNrKGZtdCwgc2VsZi5femluZm8uQ1JDLAorICAgICAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUsIHNlbGYuX3ppbmZvLmZpbGVfc2l6ZSkpCisgICAgICAgICAgICBzZWxmLl96aXBmaWxlLnN0YXJ0X2RpciA9IHNlbGYuX2ZpbGVvYmoudGVsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5femlwNjQ6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZmlsZV9zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIHVuZXhwZWN0ZWRseSBleGNlZWRlZCBaSVA2NCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGltaXQnKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzX3NpemUgPiBaSVA2NF9MSU1JVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgdW5leHBlY3RlZGx5IGV4Y2VlZGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdaSVA2NCBsaW1pdCcpCisgICAgICAgICAgICAjIFNlZWsgYmFja3dhcmRzIGFuZCB3cml0ZSBmaWxlIGhlYWRlciAod2hpY2ggd2lsbCBub3cgaW5jbHVkZQorICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKKworICAgICAgICAgICAgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKKyAgICAgICAgICAgIHNlbGYuX3ppcGZpbGUuc3RhcnRfZGlyID0gc2VsZi5fZmlsZW9iai50ZWxsKCkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmouc2VlayhzZWxmLl96aW5mby5oZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShzZWxmLl96aW5mby5GaWxlSGVhZGVyKHNlbGYuX3ppcDY0KSkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmouc2VlayhzZWxmLl96aXBmaWxlLnN0YXJ0X2RpcikKKworICAgICAgICBzZWxmLl96aXBmaWxlLl93cml0aW5nID0gRmFsc2UKKworICAgICAgICAjIFN1Y2Nlc3NmdWxseSB3cml0dGVuOiBBZGQgZmlsZSB0byBvdXIgY2FjaGVzCisgICAgICAgIHNlbGYuX3ppcGZpbGUuZmlsZWxpc3QuYXBwZW5kKHNlbGYuX3ppbmZvKQorICAgICAgICBzZWxmLl96aXBmaWxlLk5hbWVUb0luZm9bc2VsZi5femluZm8uZmlsZW5hbWVdID0gc2VsZi5femluZm8KKwogY2xhc3MgWmlwRmlsZToKICAgICAiIiIgQ2xhc3Mgd2l0aCBtZXRob2RzIHRvIG9wZW4sIHJlYWQsIHdyaXRlLCBjbG9zZSwgbGlzdCB6aXAgZmlsZXMuCiAKQEAgLTk4Miw3ICsxMDU1LDcgQEAKICAgICAgICAgIiIiT3BlbiB0aGUgWklQIGZpbGUgd2l0aCBtb2RlIHJlYWQgJ3InLCB3cml0ZSAndycsIGV4Y2x1c2l2ZSBjcmVhdGUgJ3gnLAogICAgICAgICBvciBhcHBlbmQgJ2EnLiIiIgogICAgICAgICBpZiBtb2RlIG5vdCBpbiAoJ3InLCAndycsICd4JywgJ2EnKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiWmlwRmlsZSByZXF1aXJlcyBtb2RlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJaaXBGaWxlIHJlcXVpcmVzIG1vZGUgJ3InLCAndycsICd4Jywgb3IgJ2EnIikKIAogICAgICAgICBfY2hlY2tfY29tcHJlc3Npb24oY29tcHJlc3Npb24pCiAKQEAgLTEwMjAsNiArMTA5Myw3IEBACiAgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgPSAxCiAgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQogICAgICAgICBzZWxmLl9zZWVrYWJsZSA9IFRydWUKKyAgICAgICAgc2VsZi5fd3JpdGluZyA9IEZhbHNlCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgbW9kZSA9PSAncic6CkBAIC0xMDU1LDcgKzExMjksNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5fc3RhcnRfZGlzayA9IHNlbGYuZnAudGVsbCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTW9kZSBtdXN0IGJlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGZwID0gc2VsZi5mcAogICAgICAgICAgICAgc2VsZi5mcCA9IE5vbmUKQEAgLTEyMDQsNyArMTI3OCw3IEBACiAgICAgZGVmIHNldHBhc3N3b3JkKHNlbGYsIHB3ZCk6CiAgICAgICAgICIiIlNldCBkZWZhdWx0IHBhc3N3b3JkIGZvciBlbmNyeXB0ZWQgZmlsZXMuIiIiCiAgICAgICAgIGlmIHB3ZCBhbmQgbm90IGlzaW5zdGFuY2UocHdkLCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkuX19uYW1lX18pCiAgICAgICAgIGlmIHB3ZDoKICAgICAgICAgICAgIHNlbGYucHdkID0gcHdkCiAgICAgICAgIGVsc2U6CkBAIC0xMjE4LDcgKzEyOTIsNyBAQAogICAgIEBjb21tZW50LnNldHRlcgogICAgIGRlZiBjb21tZW50KHNlbGYsIGNvbW1lbnQpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjb21tZW50LCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbW1lbnQ6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShjb21tZW50KSkKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY29tbWVudDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKGNvbW1lbnQpLl9fbmFtZV9fKQogICAgICAgICAjIGNoZWNrIGZvciB2YWxpZCBjb21tZW50IGxlbmd0aAogICAgICAgICBpZiBsZW4oY29tbWVudCkgPiBaSVBfTUFYX0NPTU1FTlQ6CiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKQEAgLTEyMzMsMzAgKzEzMDcsNTUgQEAKICAgICAgICAgd2l0aCBzZWxmLm9wZW4obmFtZSwgInIiLCBwd2QpIGFzIGZwOgogICAgICAgICAgICAgcmV0dXJuIGZwLnJlYWQoKQogCi0gICAgZGVmIG9wZW4oc2VsZiwgbmFtZSwgbW9kZT0iciIsIHB3ZD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJuIGZpbGUtbGlrZSBvYmplY3QgZm9yICduYW1lJy4iIiIKLSAgICAgICAgaWYgbW9kZSBub3QgaW4gKCJyIiwgIlUiLCAiclUiKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignb3BlbigpIHJlcXVpcmVzIG1vZGUgInIiLCAiVSIsIG9yICJyVSInKQotICAgICAgICBpZiAnVScgaW4gbW9kZToKLSAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgd2FybmluZ3Mud2FybigiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBkZWYgb3BlbihzZWxmLCBuYW1lLCBtb2RlPSJyIiwgcHdkPU5vbmUsICosIGZvcmNlX3ppcDY0PUZhbHNlKToKKyAgICAgICAgIiIiUmV0dXJuIGZpbGUtbGlrZSBvYmplY3QgZm9yICduYW1lJy4KKworICAgICAgICBuYW1lIGlzIGEgc3RyaW5nIGZvciB0aGUgZmlsZSBuYW1lIHdpdGhpbiB0aGUgWklQIGZpbGUsIG9yIGEgWmlwSW5mbworICAgICAgICBvYmplY3QuCisKKyAgICAgICAgbW9kZSBzaG91bGQgYmUgJ3InIHRvIHJlYWQgYSBmaWxlIGFscmVhZHkgaW4gdGhlIFpJUCBmaWxlLCBvciAndycgdG8KKyAgICAgICAgd3JpdGUgdG8gYSBmaWxlIG5ld2x5IGFkZGVkIHRvIHRoZSBhcmNoaXZlLgorCisgICAgICAgIHB3ZCBpcyB0aGUgcGFzc3dvcmQgdG8gZGVjcnlwdCBmaWxlcyAob25seSB1c2VkIGZvciByZWFkaW5nKS4KKworICAgICAgICBXaGVuIHdyaXRpbmcsIGlmIHRoZSBmaWxlIHNpemUgaXMgbm90IGtub3duIGluIGFkdmFuY2UgYnV0IG1heSBleGNlZWQKKyAgICAgICAgMiBHaUIsIHBhc3MgZm9yY2VfemlwNjQgdG8gdXNlIHRoZSBaSVA2NCBmb3JtYXQsIHdoaWNoIGNhbiBoYW5kbGUgbGFyZ2UKKyAgICAgICAgZmlsZXMuICBJZiB0aGUgc2l6ZSBpcyBrbm93biBpbiBhZHZhbmNlLCBpdCBpcyBiZXN0IHRvIHBhc3MgYSBaaXBJbmZvCisgICAgICAgIGluc3RhbmNlIGZvciBuYW1lLCB3aXRoIHppbmZvLmZpbGVfc2l6ZSBzZXQuCisgICAgICAgICIiIgorICAgICAgICBpZiBtb2RlIG5vdCBpbiB7InIiLCAidyJ9OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignb3BlbigpIHJlcXVpcmVzIG1vZGUgInIiIG9yICJ3IicpCiAgICAgICAgIGlmIHB3ZCBhbmQgbm90IGlzaW5zdGFuY2UocHdkLCBieXRlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInB3ZDogZXhwZWN0ZWQgYnl0ZXMsIGdvdCAlcyIgJSB0eXBlKHB3ZCkuX19uYW1lX18pCisgICAgICAgIGlmIHB3ZCBhbmQgKG1vZGUgPT0gInciKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInB3ZCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgcmVhZGluZyBmaWxlcyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHJlYWQgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB1c2UgWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQogCiAgICAgICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5mbyBvYmplY3QKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lLCBaaXBJbmZvKToKICAgICAgICAgICAgICMgJ25hbWUnIGlzIGFscmVhZHkgYW4gaW5mbyBvYmplY3QKICAgICAgICAgICAgIHppbmZvID0gbmFtZQorICAgICAgICBlbGlmIG1vZGUgPT0gJ3cnOgorICAgICAgICAgICAgemluZm8gPSBaaXBJbmZvKG5hbWUpCisgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBHZXQgaW5mbyBvYmplY3QgZm9yIG5hbWUKICAgICAgICAgICAgIHppbmZvID0gc2VsZi5nZXRpbmZvKG5hbWUpCiAKKyAgICAgICAgaWYgbW9kZSA9PSAndyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb3Blbl90b193cml0ZSh6aW5mbywgZm9yY2VfemlwNjQ9Zm9yY2VfemlwNjQpCisKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlYWQgZnJvbSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgIgorICAgICAgICAgICAgICAgICAgICAiaXMgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSB0cnlpbmcgdG8gcmVhZC4iKQorCisgICAgICAgICMgT3BlbiBmb3IgcmVhZGluZzoKICAgICAgICAgc2VsZi5fZmlsZVJlZkNudCArPSAxCi0gICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwgc2VsZi5fZnBjbG9zZSwgc2VsZi5fbG9jaykKKyAgICAgICAgemVmX2ZpbGUgPSBfU2hhcmVkRmlsZShzZWxmLmZwLCB6aW5mby5oZWFkZXJfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2ssIGxhbWJkYTogc2VsZi5fd3JpdGluZykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyBTa2lwIHRoZSBmaWxlIGhlYWRlcjoKICAgICAgICAgICAgIGZoZWFkZXIgPSB6ZWZfZmlsZS5yZWFkKHNpemVGaWxlSGVhZGVyKQpAQCAtMTI5Niw3ICsxMzk1LDcgQEAKICAgICAgICAgICAgICAgICBpZiBub3QgcHdkOgogICAgICAgICAgICAgICAgICAgICBwd2QgPSBzZWxmLnB3ZAogICAgICAgICAgICAgICAgIGlmIG5vdCBwd2Q6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRmlsZSAlcyBpcyBlbmNyeXB0ZWQsIHBhc3N3b3JkICIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGaWxlICVyIGlzIGVuY3J5cHRlZCwgcGFzc3dvcmQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIGZvciBleHRyYWN0aW9uIiAlIG5hbWUpCiAKICAgICAgICAgICAgICAgICB6ZCA9IF9aaXBEZWNyeXB0ZXIocHdkKQpAQCAtMTMxNCwxMyArMTQxMyw1NiBAQAogICAgICAgICAgICAgICAgICAgICAjIGNvbXBhcmUgYWdhaW5zdCB0aGUgQ1JDIG90aGVyd2lzZQogICAgICAgICAgICAgICAgICAgICBjaGVja19ieXRlID0gKHppbmZvLkNSQyA+PiAyNCkgJiAweGZmCiAgICAgICAgICAgICAgICAgaWYgaFsxMV0gIT0gY2hlY2tfYnl0ZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJCYWQgcGFzc3dvcmQgZm9yIGZpbGUiLCBuYW1lKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkJhZCBwYXNzd29yZCBmb3IgZmlsZSAlciIgJSBuYW1lKQogCiAgICAgICAgICAgICByZXR1cm4gWmlwRXh0RmlsZSh6ZWZfZmlsZSwgbW9kZSwgemluZm8sIHpkLCBUcnVlKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICB6ZWZfZmlsZS5jbG9zZSgpCiAgICAgICAgICAgICByYWlzZQogCisgICAgZGVmIF9vcGVuX3RvX3dyaXRlKHNlbGYsIHppbmZvLCBmb3JjZV96aXA2ND1GYWxzZSk6CisgICAgICAgIGlmIGZvcmNlX3ppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgImZvcmNlX3ppcDY0IGlzIFRydWUsIGJ1dCBhbGxvd1ppcDY0IHdhcyBGYWxzZSB3aGVuIG9wZW5pbmcgIgorICAgICAgICAgICAgICAgICJ0aGUgWklQIGZpbGUuIgorICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3Qgd3JpdGUgdG8gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlIGlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFub3RoZXIgd3JpdGUgaGFuZGxlIG9wZW4gb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSBmaXJzdCBoYW5kbGUgYmVmb3JlIG9wZW5pbmcgYW5vdGhlci4iKQorCisgICAgICAgICMgU2l6ZXMgYW5kIENSQyBhcmUgb3ZlcndyaXR0ZW4gd2l0aCBjb3JyZWN0IGRhdGEgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgZmlsZQorICAgICAgICBpZiBub3QgaGFzYXR0cih6aW5mbywgJ2ZpbGVfc2l6ZScpOgorICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAorICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAorICAgICAgICB6aW5mby5DUkMgPSAwCisKKyAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAorICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDAyCisgICAgICAgIGlmIG5vdCBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDA4CisKKyAgICAgICAgaWYgbm90IHppbmZvLmV4dGVybmFsX2F0dHI6CisgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gMG82MDAgPDwgMTYgICMgcGVybWlzc2lvbnM6ID9ydy0tLS0tLS0KKworICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKKyAgICAgICAgemlwNjQgPSBzZWxmLl9hbGxvd1ppcDY0IGFuZCBcCisgICAgICAgICAgICAgICAgKGZvcmNlX3ppcDY0IG9yIHppbmZvLmZpbGVfc2l6ZSAqIDEuMDUgPiBaSVA2NF9MSU1JVCkKKworICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKKyAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpCisKKyAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKKyAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorCisgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcih6aXA2NCkpCisKKyAgICAgICAgc2VsZi5fd3JpdGluZyA9IFRydWUKKyAgICAgICAgcmV0dXJuIF9aaXBXcml0ZUZpbGUoc2VsZiwgemluZm8sIHppcDY0KQorCiAgICAgZGVmIGV4dHJhY3Qoc2VsZiwgbWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAogICAgICAgICAgICB1c2luZyBpdHMgZnVsbCBuYW1lLiBJdHMgZmlsZSBpbmZvcm1hdGlvbiBpcyBleHRyYWN0ZWQgYXMgYWNjdXJhdGVseQpAQCAtMTM5MCw3ICsxNTMyLDcgQEAKICAgICAgICAgaWYgdXBwZXJkaXJzIGFuZCBub3Qgb3MucGF0aC5leGlzdHModXBwZXJkaXJzKToKICAgICAgICAgICAgIG9zLm1ha2VkaXJzKHVwcGVyZGlycykKIAotICAgICAgICBpZiBtZW1iZXIuZmlsZW5hbWVbLTFdID09ICcvJzoKKyAgICAgICAgaWYgbWVtYmVyLmlzX2RpcigpOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIodGFyZ2V0cGF0aCk6CiAgICAgICAgICAgICAgICAgb3MubWtkaXIodGFyZ2V0cGF0aCkKICAgICAgICAgICAgIHJldHVybiB0YXJnZXRwYXRoCkBAIC0xNDA3LDkgKzE1NDksOSBAQAogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdEdXBsaWNhdGUgbmFtZTogJXInICUgemluZm8uZmlsZW5hbWUsIHN0YWNrbGV2ZWw9MykKICAgICAgICAgaWYgc2VsZi5tb2RlIG5vdCBpbiAoJ3cnLCAneCcsICdhJyk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlKCkgcmVxdWlyZXMgbW9kZSAndycsICd4Jywgb3IgJ2EnIikKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKICAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKHppbmZvLmNvbXByZXNzX3R5cGUpCiAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgpAQCAtMTQyOCwxMDUgKzE1NzAsNDMgQEAKICAgICAgICAgIiIiUHV0IHRoZSBieXRlcyBmcm9tIGZpbGVuYW1lIGludG8gdGhlIGFyY2hpdmUgdW5kZXIgdGhlIG5hbWUKICAgICAgICAgYXJjbmFtZS4iIiIKICAgICAgICAgaWYgbm90IHNlbGYuZnA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAogICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIHRvIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgIkNhbid0IHdyaXRlIHRvIFpJUCBhcmNoaXZlIHdoaWxlIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgZXhpc3RzIgorICAgICAgICAgICAgKQogCi0gICAgICAgIHN0ID0gb3Muc3RhdChmaWxlbmFtZSkKLSAgICAgICAgaXNkaXIgPSBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSkKLSAgICAgICAgbXRpbWUgPSB0aW1lLmxvY2FsdGltZShzdC5zdF9tdGltZSkKLSAgICAgICAgZGF0ZV90aW1lID0gbXRpbWVbMDo2XQotICAgICAgICAjIENyZWF0ZSBaaXBJbmZvIGluc3RhbmNlIHRvIHN0b3JlIGZpbGUgaW5mb3JtYXRpb24KLSAgICAgICAgaWYgYXJjbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgYXJjbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIGFyY25hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguc3BsaXRkcml2ZShhcmNuYW1lKVsxXSkKLSAgICAgICAgd2hpbGUgYXJjbmFtZVswXSBpbiAob3Muc2VwLCBvcy5hbHRzZXApOgotICAgICAgICAgICAgYXJjbmFtZSA9IGFyY25hbWVbMTpdCi0gICAgICAgIGlmIGlzZGlyOgotICAgICAgICAgICAgYXJjbmFtZSArPSAnLycKLSAgICAgICAgemluZm8gPSBaaXBJbmZvKGFyY25hbWUsIGRhdGVfdGltZSkKLSAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IChzdFswXSAmIDB4RkZGRikgPDwgMTYgICAgICAjIFVuaXggYXR0cmlidXRlcwotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBaSVBfU1RPUkVECi0gICAgICAgIGVsaWYgY29tcHJlc3NfdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KKyAgICAgICAgemluZm8gPSBaaXBJbmZvLmZyb21fZmlsZShmaWxlbmFtZSwgYXJjbmFtZSkKKworICAgICAgICBpZiB6aW5mby5pc19kaXIoKToKKyAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCisgICAgICAgICAgICB6aW5mby5DUkMgPSAwCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gc2VsZi5jb21wcmVzc2lvbgogCi0gICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKLSAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAotICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKLSAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgIGlmIHppbmZvLmlzX2RpcigpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAjIFN0YXJ0IG9mIGhlYWRlciBieXRlcworICAgICAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CiAgICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCi0gICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQogCi0gICAgICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5DUkMgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciB8PSAweDEwICAjIE1TLURPUyBkaXJlY3RvcnkgZmxhZwogICAgICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQogICAgICAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbwogICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcihGYWxzZSkpCiAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICAgICBjbXByID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDgKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCi0gICAgICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplID0gMAotICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBzaXplIGNhbiBiZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAotICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkKDEwMjQgKiA4KQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgYnVmOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplID0gZmlsZV9zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgQ1JDID0gY3JjMzIoYnVmLCBDUkMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNtcHI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBjbXByLmNvbXByZXNzKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgICAgIGJ1ZiA9IGNtcHIuZmx1c2goKQotICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSBjb21wcmVzc19zaXplICsgbGVuKGJ1ZikKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKGJ1ZikKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gZmlsZV9zaXplCi0gICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMKLSAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKLSAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCi0gICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCi0gICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBzZWxmLmZwLnRlbGwoKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBub3QgemlwNjQgYW5kIHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdGaWxlIHNpemUgaGFzIGluY3JlYXNlZCBkdXJpbmcgY29tcHJlc3NpbmcnKQotICAgICAgICAgICAgICAgICAgICBpZiBjb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0NvbXByZXNzZWQgc2l6ZSBsYXJnZXIgdGhhbiB1bmNvbXByZXNzZWQgc2l6ZScpCi0gICAgICAgICAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKLSAgICAgICAgICAgICAgICAjIGNvcnJlY3QgQ1JDIGFuZCBmaWxlIHNpemVzKQotICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkgIyBQcmVzZXJ2ZSBjdXJyZW50IHBvc2l0aW9uIGluIGZpbGUKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoemluZm8uaGVhZGVyX29mZnNldCkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgICAgIHNlbGYuZnAuc2VlayhzZWxmLnN0YXJ0X2RpcikKLSAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIHNyYywgc2VsZi5vcGVuKHppbmZvLCAndycpIGFzIGRlc3Q6CisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZGVzdCwgMTAyNCo4KQogCiAgICAgZGVmIHdyaXRlc3RyKHNlbGYsIHppbmZvX29yX2FyY25hbWUsIGRhdGEsIGNvbXByZXNzX3R5cGU9Tm9uZSk6CiAgICAgICAgICIiIldyaXRlIGEgZmlsZSBpbnRvIHRoZSBhcmNoaXZlLiAgVGhlIGNvbnRlbnRzIGlzICdkYXRhJywgd2hpY2gKQEAgLTE1NDksNDcgKzE2MjksMjAgQEAKICAgICAgICAgICAgIHppbmZvID0gemluZm9fb3JfYXJjbmFtZQogCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSB0byBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW4ndCB3cml0ZSB0byBaSVAgYXJjaGl2ZSB3aGlsZSBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIGV4aXN0cy4iCisgICAgICAgICAgICApCisKKyAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCiAKICAgICAgICAgemluZm8uZmlsZV9zaXplID0gbGVuKGRhdGEpICAgICAgICAgICAgIyBVbmNvbXByZXNzZWQgc2l6ZQogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgZGF0YQotICAgICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKLSAgICAgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6Ci0gICAgICAgICAgICAgICAgIyBDb21wcmVzc2VkIGRhdGEgaW5jbHVkZXMgYW4gZW5kLW9mLXN0cmVhbSAoRU9TKSBtYXJrZXIKLSAgICAgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgotCi0gICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQotICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICAgICAgemluZm8uQ1JDID0gY3JjMzIoZGF0YSkgICAgICAgIyBDUkMtMzIgY2hlY2tzdW0KLSAgICAgICAgICAgIGNvID0gX2dldF9jb21wcmVzc29yKHppbmZvLmNvbXByZXNzX3R5cGUpCi0gICAgICAgICAgICBpZiBjbzoKLSAgICAgICAgICAgICAgICBkYXRhID0gY28uY29tcHJlc3MoZGF0YSkgKyBjby5mbHVzaCgpCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGxlbihkYXRhKSAgICAjIENvbXByZXNzZWQgc2l6ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gemluZm8uZmlsZV9zaXplCi0gICAgICAgICAgICB6aXA2NCA9IHppbmZvLmZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUIG9yIFwKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQKLSAgICAgICAgICAgIGlmIHppcDY0IGFuZCBub3Qgc2VsZi5fYWxsb3daaXA2NDoKLSAgICAgICAgICAgICAgICByYWlzZSBMYXJnZVppcEZpbGUoIkZpbGVzaXplIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucyIpCi0gICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZShkYXRhKQotICAgICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgwODoKLSAgICAgICAgICAgICAgICAjIFdyaXRlIENSQyBhbmQgZmlsZSBzaXplcyBhZnRlciB0aGUgZmlsZSBkYXRhCi0gICAgICAgICAgICAgICAgZm10ID0gJzxMUVEnIGlmIHppcDY0IGVsc2UgJzxMTEwnCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHppbmZvLkNSQywgemluZm8uY29tcHJlc3Nfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSkpCi0gICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKLSAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHppbmZvKQotICAgICAgICAgICAgc2VsZi5OYW1lVG9JbmZvW3ppbmZvLmZpbGVuYW1lXSA9IHppbmZvCisgICAgICAgICAgICB3aXRoIHNlbGYub3Blbih6aW5mbywgbW9kZT0ndycpIGFzIGRlc3Q6CisgICAgICAgICAgICAgICAgZGVzdC53cml0ZShkYXRhKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICIiIkNhbGwgdGhlICJjbG9zZSgpIiBtZXRob2QgaW4gY2FzZSB0aGUgdXNlciBmb3Jnb3QuIiIiCkBAIC0xNjAxLDYgKzE2NTQsMTEgQEAKICAgICAgICAgaWYgc2VsZi5mcCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IGNsb3NlIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgd3JpdGluZyBoYW5kbGUgYmVmb3JlIGNsb3NpbmcgdGhlIHppcC4iKQorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNlbGYubW9kZSBpbiAoJ3cnLCAneCcsICdhJykgYW5kIHNlbGYuX2RpZE1vZGlmeTogIyB3cml0ZSBlbmRpbmcgcmVjb3JkcwogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKQEAgLTE3NDUsNyArMTgwMyw3IEBACiAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGhuYW1lKToKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgICAgICAgbGFiZWwgPSAncGF0aCcgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSkgZWxzZSAnZmlsZScKLSAgICAgICAgICAgICAgICBwcmludCgnJXMgIiVzIiBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgKGxhYmVsLCBwYXRobmFtZSkpCisgICAgICAgICAgICAgICAgcHJpbnQoJyVzICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSAobGFiZWwsIHBhdGhuYW1lKSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBkaXIsIG5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHBhdGhuYW1lKToKQEAgLTE3NzYsNyArMTgzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXh0ID09ICIucHkiOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmlsdGVyZnVuYyBhbmQgbm90IGZpbHRlcmZ1bmMocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgIiVzIiBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ2ZpbGUgJXIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lLCBhcmNuYW1lID0gc2VsZi5fZ2V0X2NvZGVuYW1lKHBhdGhbMDotM10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSkKQEAgLTE3OTMsNyArMTg1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGV4dCA9PSAiLnB5IjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRoWzA6LTNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUpCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5IGIvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQppbmRleCBjNzZjNGYxLi44ZGZkMDkyIDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CisrKyBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKQEAgLTEwMSw2ICsxMDEsNyBAQAogCiBGV19QUkVGSVggPSBbIkxpYnJhcnkiLCAiRnJhbWV3b3JrcyIsICJQeXRob24uZnJhbWV3b3JrIl0KIEZXX1ZFUlNJT05fUFJFRklYID0gIi0tdW5kZWZpbmVkLS0iICMgaW5pdGlhbGl6ZWQgaW4gcGFyc2VPcHRpb25zCitGV19TU0xfRElSRUNUT1JZID0gIi0tdW5kZWZpbmVkLS0iICMgaW5pdGlhbGl6ZWQgaW4gcGFyc2VPcHRpb25zCiAKICMgVGhlIGRpcmVjdG9yeSB3ZSdsbCB1c2UgdG8gY3JlYXRlIHRoZSBidWlsZCAod2lsbCBiZSBlcmFzZWQgYW5kIHJlY3JlYXRlZCkKIFdPUktESVIgPSAiL3RtcC9fcHkiCkBAIC0yMDYsNDEgKzIwNywxMSBAQAogCiAgICAgTFRfMTBfNSA9IGJvb2woZ2V0RGVwdGFyZ2V0VHVwbGUoKSA8ICgxMCwgNSkpCiAKLSAgICBpZiBub3QgKDEwLCA1KSA8IGdldERlcHRhcmdldFR1cGxlKCkgPCAoMTAsIDEwKToKLSAgICAgICAgIyBUaGUgT3BlblNTTCBsaWJzIHNoaXBwZWQgd2l0aCBPUyBYIDEwLjUgYW5kIGVhcmxpZXIgYXJlCi0gICAgICAgICMgaG9wZWxlc3NseSBvdXQtb2YtZGF0ZSBhbmQgZG8gbm90IGluY2x1ZGUgQXBwbGUncyB0aWUtaW4gdG8KLSAgICAgICAgIyB0aGUgcm9vdCBjZXJ0aWZpY2F0ZXMgaW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgdmlhIFRFQQotICAgICAgICAjIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gT1MgWCAxMC42LiAgTm90ZSB0aGF0IHRoaXMgYXBwbGllcyB0bwotICAgICAgICAjIHByb2dyYW1zIGJ1aWx0IGFuZCBsaW5rZWQgd2l0aCBhIDEwLjUgU0RLIGV2ZW4gd2hlbiBydW4gb24KLSAgICAgICAgIyBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLgotICAgICAgICAjCi0gICAgICAgICMgRGVhbGluZyB3aXRoIENBcyBpcyBtZXNzeS4gIEZvciBub3csIGp1c3Qgc3VwcGx5IGEKLSAgICAgICAgIyBsb2NhbCBsaWJzc2wgYW5kIGxpYmNyeXB0byBmb3IgdGhlIG9sZGVyIGluc3RhbGxlciB2YXJpYW50cwotICAgICAgICAjIChlLmcuIHRoZSBweXRob24ub3JnIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlcikgdGhhdCB1c2UgdGhlCi0gICAgICAgICMgc2FtZSBkZWZhdWx0IHNzbCBjZXJ0ZmlsZSBsb2NhdGlvbiBhcyB0aGUgc3lzdGVtIGxpYnMgZG86Ci0gICAgICAgICMgICAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTC9jZXJ0LnBlbQotICAgICAgICAjIFRoZW4gYXQgbGVhc3QgVExTIGNvbm5lY3Rpb25zIGNhbiBiZSBuZWdvdGlhdGVkIHdpdGggc2l0ZXMgdGhhdAotICAgICAgICAjIHVzZSBzaGEtMjU2IGNlcnRzIGxpa2UgcHl0aG9uLm9yZywgYXNzdW1pbmcgdGhlIHByb3BlciBDQSBjZXJ0cwotICAgICAgICAjIGhhdmUgYmVlbiBzdXBwbGllZC4gIFRoZSBkZWZhdWx0IENBIGNlcnQgbWFuYWdlbWVudCBpc3N1ZXMgZm9yCi0gICAgICAgICMgMTAuNSBhbmQgZWFybGllciBidWlsZHMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZSwgb3RoZXIgdGhhbiBpdCBpcwotICAgICAgICAjIG5vdyBtb3JlIG9idmlvdXMgd2l0aCBjZXJ0IGNoZWNraW5nIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUKLSAgICAgICAgIyBzdGFuZGFyZCBsaWJyYXJ5LgotICAgICAgICAjCi0gICAgICAgICMgRm9yIGJ1aWxkcyB3aXRoIDEwLjYgdGhyb3VnaCAxMC45IFNES3MsCi0gICAgICAgICMgY29udGludWUgdG8gdXNlIHRoZSBkZXByZWNhdGVkIGJ1dAotICAgICAgICAjIGxlc3Mgb3V0LW9mLWRhdGUgQXBwbGUgMC45LjggbGlicyBmb3Igbm93LiAgV2hpbGUgdGhleSBhcmUgbGVzcwotICAgICAgICAjIHNlY3VyZSB0aGFuIHVzaW5nIGFuIHVwLXRvLWRhdGUgMS4wLjEgdmVyc2lvbiwgZG9pbmcgc28KLSAgICAgICAgIyBhdm9pZHMgdGhlIGJpZyBwcm9ibGVtcyBvZiBmb3JjaW5nIHVzZXJzIHRvIGhhdmUgdG8gbWFuYWdlCi0gICAgICAgICMgZGVmYXVsdCBDQXMgdGhlbXNlbHZlcywgdGhhbmtzIHRvIHRoZSBBcHBsZSBsaWJzIHVzaW5nIHByaXZhdGUgVEVBCi0gICAgICAgICMgQVBJcyBmb3IgY2VydCB2YWxpZGF0aW9uIGZyb20ga2V5Y2hhaW5zIGlmIHZhbGlkYXRpb24gdXNpbmcgdGhlCi0gICAgICAgICMgc3RhbmRhcmQgT3BlblNTTCBsb2NhdGlvbnMgKC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMLCBub3JtYWxseSBlbXB0eSkKLSAgICAgICAgIyBmYWlscy4KLSAgICAgICAgIwotICAgICAgICAjIFNpbmNlIEFwcGxlIHJlbW92ZWQgdGhlIGhlYWRlciBmaWxlcyBmb3IgdGhlIGRlcHJlY2F0ZWQgc3lzdGVtCi0gICAgICAgICMgT3BlblNTTCBhcyBvZiB0aGUgWGNvZGUgNyByZWxlYXNlIChmb3IgT1MgWCAxMC4xMCspLCB3ZSBkbyBub3QKLSAgICAgICAgIyBoYXZlIG11Y2ggY2hvaWNlIGJ1dCB0byBidWlsZCBvdXIgb3duIGNvcHkgaGVyZSwgdG9vLgorICAgICMgU2luY2UgQXBwbGUgcmVtb3ZlZCB0aGUgaGVhZGVyIGZpbGVzIGZvciB0aGUgZGVwcmVjYXRlZCBzeXN0ZW0KKyAgICAjIE9wZW5TU0wgYXMgb2YgdGhlIFhjb2RlIDcgcmVsZWFzZSAoZm9yIE9TIFggMTAuMTArKSwgd2UgZG8gbm90CisgICAgIyBoYXZlIG11Y2ggY2hvaWNlIGJ1dCB0byBidWlsZCBvdXIgb3duIGNvcHkgaGVyZSwgdG9vLgogCi0gICAgICAgIHJlc3VsdC5leHRlbmQoWworICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCiAgICAgICAgICAgICAgIG5hbWU9Ik9wZW5TU0wgMS4wLjJqIiwKICAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0xLjAuMmoudGFyLmd6IiwKQEAgLTI1Miw3ICsyMjMsNyBAQAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKICAgICAgICAgICAgICAgaW5zdGFsbD1Ob25lLAogICAgICAgICAgICksCi0gICAgICAgIF0pCisgICAgXSkKIAogIyAgIERpc2FibGUgZm9yIG5vdwogICAgIGlmIEZhbHNlOiAgICMgaWYgZ2V0RGVwdGFyZ2V0VHVwbGUoKSA+ICgxMCwgNSk6CkBAIC0yOTksOSArMjcwLDkgQEAKICAgICBpZiBQWVRIT05fMzoKICAgICAgICAgcmVzdWx0LmV4dGVuZChbCiAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgbmFtZT0iWFogNS4wLjUiLAotICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjAuNS50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nMTlkOTI0ZTA2NmI2ZmZmMGJjOWQxOTgxYjRlNTMxOTYnLAorICAgICAgICAgICAgICBuYW1lPSJYWiA1LjIuMiIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LTUuMi4yLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc3Y2Y2YTg1NDRhN2RhZThlODEwNmZkZjdhZGRmYTI4YycsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZV9wcmU9WwogICAgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcnLAogICAgICAgICAgICAgICBdCkBAIC0zNDQsMTAgKzMxNSwxMSBAQAogICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICApLAogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlNRTGl0ZSAzLjguMTEiLAotICAgICAgICAgICAgICB1cmw9Imh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvMjAxNS9zcWxpdGUtYXV0b2NvbmYtMzA4MTEwMC50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nNzdiNDUxOTI1MTIxMDI4YmVmYmRkYmY0NWVhMmJjNDknLAorICAgICAgICAgICAgICBuYW1lPSJTUUxpdGUgMy4xNC4yIiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5zcWxpdGUub3JnLzIwMTYvc3FsaXRlLWF1dG9jb25mLTMxNDAyMDAudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09JzkwYzUzY2FjYjgxMWRiMjdmOTkwYjgyOTJiZDk2MTU5JywKICAgICAgICAgICAgICAgZXh0cmFfY2ZsYWdzPSgnLU9zICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTNCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFMzX1BBUkVOVEhFU0lTICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX1JUUkVFICcKQEAgLTY3NSw2ICs2NDcsNyBAQAogICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCiAgICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MsIENYWAogICAgIGdsb2JhbCBGV19WRVJTSU9OX1BSRUZJWAorICAgIGdsb2JhbCBGV19TU0xfRElSRUNUT1JZCiAKICAgICBpZiBhcmdzIGlzIE5vbmU6CiAgICAgICAgIGFyZ3MgPSBzeXMuYXJndlsxOl0KQEAgLTczNSw2ICs3MDgsNyBAQAogICAgIENDLCBDWFggPSBnZXRUYXJnZXRDb21waWxlcnMoKQogCiAgICAgRldfVkVSU0lPTl9QUkVGSVggPSBGV19QUkVGSVhbOl0gKyBbIlZlcnNpb25zIiwgZ2V0VmVyc2lvbigpXQorICAgIEZXX1NTTF9ESVJFQ1RPUlkgPSBGV19WRVJTSU9OX1BSRUZJWFs6XSArIFsiZXRjIiwgIm9wZW5zc2wiXQogCiAgICAgcHJpbnQoIi0tIFNldHRpbmdzOiIpCiAgICAgcHJpbnQoIiAgICogU291cmNlIGRpcmVjdG9yeTogICAgJXMiICUgU1JDRElSKQpAQCAtODc2LDcgKzg1MCw3IEBACiAgICAgICAgICAgICAic2hhcmVkIiwKICAgICAgICAgICAgICItLWluc3RhbGxfcHJlZml4PSVzIiVzaGVsbFF1b3RlKGFyY2hiYXNlKSwKICAgICAgICAgICAgICItLXByZWZpeD0lcyIlb3MucGF0aC5qb2luKCIvIiwgKkZXX1ZFUlNJT05fUFJFRklYKSwKLSAgICAgICAgICAgICItLW9wZW5zc2xkaXI9L1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wiLAorICAgICAgICAgICAgIi0tb3BlbnNzbGRpcj0lcyIlb3MucGF0aC5qb2luKCIvIiwgKkZXX1NTTF9ESVJFQ1RPUlkpLAogICAgICAgICBdCiAgICAgICAgIGlmIG5vX2FzbToKICAgICAgICAgICAgIGNvbmZpZ3VyZV9vcHRzLmFwcGVuZCgibm8tYXNtIikKQEAgLTExOTQsMTIgKzExNjgsMTQgQEAKICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsIGdldFZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAnbGliJykpKSkKIAotICAgIHBhdGhfdG9fbGliID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCisgICAgZnJtRGlyVmVyc2lvbmVkID0gb3MucGF0aC5qb2luKGZybURpciwgJ1ZlcnNpb25zJywgdmVyc2lvbikKKyAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgIyBjcmVhdGUgZGlyZWN0b3J5IGZvciBPcGVuU1NMIGNlcnRpZmljYXRlcworICAgIHNzbERpciA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdldGMnLCAnb3BlbnNzbCcpCisgICAgb3MubWFrZWRpcnMoc3NsRGlyKQogCiAgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKLSAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKICAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKQEAgLTEyNDksNiArMTIyNSw4IEBACiAgICAgICAgIExEVkVSU0lPTiA9IExEVkVSU0lPTi5yZXBsYWNlKCckKFZFUlNJT04pJywgVkVSU0lPTikKICAgICAgICAgTERWRVJTSU9OID0gTERWRVJTSU9OLnJlcGxhY2UoJyQoQUJJRkxBR1MpJywgQUJJRkxBR1MpCiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnLScgKyBMRFZFUlNJT04KKyAgICAgICAgaWYgZ2V0VmVyc2lvbk1ham9yTWlub3IoKSA+PSAoMywgNik6CisgICAgICAgICAgICBjb25maWdfc3VmZml4ID0gY29uZmlnX3N1ZmZpeCArICctZGFyd2luJwogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnJyAgICAgICMgUHl0aG9uIDIueAogCkBAIC0xMjc0LDcgKzEyNTIsNyBAQAogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQogCi0gICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEgaWYgaXQgZXhpc3RzCisgICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEKICAgICAjCiAgICAgIyBUT0RPOiBtYWtlIHRoaXMgbW9yZSByb2J1c3QhICB0ZXN0X3N5c2NvbmZpZ19tb2R1bGUgb2YKICAgICAjIGRpc3R1dGlscy50ZXN0cy50ZXN0X3N5c2NvbmZpZy5TeXNjb25maWdUZXN0Q2FzZSB0ZXN0cyB0aGF0CkBAIC0xMjg4LDI4ICsxMjY2LDMxIEBACiAgICAgIyBfc3lzY29uZmlnZGF0YS5weSkuCiAKICAgICBpbXBvcnQgcHByaW50Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKLSAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQotICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0Ci0gICAgICAgIGV4ZWMoZGF0YSkKLSAgICAgICAgdmFycyA9IHt9Ci0gICAgICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgotICAgICAgICAgICAgaWYgdHlwZSh2KSA9PSB0eXBlKCcnKToKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCi0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UocCArICcgJywgJycpCi0gICAgICAgICAgICB2YXJzW2tdID0gdgorICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAjIFhYWCB0aGlzIGlzIGV4dHJhLWZyYWdpbGUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhX21fZGFyd2luX2Rhcndpbi5weScpCisgICAgZWxzZToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKKyAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQorICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICBmcC5jbG9zZSgpCisgICAgIyBjcmVhdGUgYnVpbGRfdGltZV92YXJzIGRpY3QKKyAgICBleGVjKGRhdGEpCisgICAgdmFycyA9IHt9CisgICAgZm9yIGssIHYgaW4gYnVpbGRfdGltZV92YXJzLml0ZW1zKCk6CisgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6CisgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6CisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgnICcgKyBwLCAnJykKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQorICAgICAgICB2YXJzW2tdID0gdgogCi0gICAgICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgICAgICMgZHVwbGljYXRlZCBmcm9tIHN5c2NvbmZpZy5fZ2VuZXJhdGVfcG9zaXhfdmFycygpCi0gICAgICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKLSAgICAgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKLSAgICAgICAgZnAud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCi0gICAgICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQotICAgICAgICBmcC5jbG9zZSgpCisgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKKyAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQorICAgIGZwLmNsb3NlKCkKIAogICAgICMgQWRkIHN5bWxpbmtzIGluIC91c3IvbG9jYWwvYmluLCB1c2luZyByZWxhdGl2ZSBsaW5rcwogICAgIHVzcl9sb2NhbF9iaW4gPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ3VzcicsICdsb2NhbCcsICdiaW4nKQpAQCAtMTYzNiw2ICsxNjE3LDggQEAKICAgICBwYXRjaEZpbGUoInJlc291cmNlcy9SZWFkTWUucnRmIiwgIGZuKQogICAgIGZuID0gb3MucGF0aC5qb2luKGZvbGRlciwgIlVwZGF0ZSBTaGVsbCBQcm9maWxlLmNvbW1hbmQiKQogICAgIHBhdGNoU2NyaXB0KCJzY3JpcHRzL3Bvc3RmbGlnaHQucGF0Y2gtcHJvZmlsZSIsICBmbikKKyAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJJbnN0YWxsIENlcnRpZmljYXRlcy5jb21tYW5kIikKKyAgICBwYXRjaFNjcmlwdCgicmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQiLCAgZm4pCiAgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCmluZGV4IDY1ZTNmMTQuLjUyM2ZhYmIgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKQEAgLTEsMTA2ICsxLDc2IEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDhcY29jb2FzdWJydGYxNzAKK3tccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTUwNFxjb2NvYXN1YnJ0ZjM5MAoge1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO1xmMVxmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyTmV3UFNNVDt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9Cit7XCpcZXhwYW5kZWRjb2xvcnRibDtcY3NncmF5XGMxMDAwMDA7fQogXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMzM4MFx2aWV3aDE0NjAwXHZpZXdraW5kMAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIFB5dGhvbiAkRlVMTF9WRVJTSU9OIGZvciBNYWMgT1MgWCAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGZvciB0aGUgZm9sbG93aW5nIGFyY2hpdGVjdHVyZShzKTogJEFSQ0hJVEVDVFVSRVMuXAogXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGIgXGNmMCBcdWwgXHVsYzAgV2hpY2ggaW5zdGFsbGVyIHZhcmlhbnQgc2hvdWxkIEkgdXNlPwogXGIwIFx1bG5vbmUgXAogXAotUHl0aG9uLm9yZyBwcm92aWRlcyB0d28gaW5zdGFsbGVyIHZhcmlhbnRzIGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgRm9yIFB5dGhvbiAzLjYsIHRoZSBweXRob24ub3JnIHdlYnNpdGUgbm93IHByb3ZpZGVzIG9ubHkgb25lIGluc3RhbGxlciB2YXJpYW50IGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKIFxpIDY0LWJpdC8zMi1iaXQgSW50ZWwKIFxpMCAgUHl0aG9uIGNhcGFibGUgb2YgcnVubmluZyBvbiAKIFxpIE1hYyBPUyBYIDEwLjYgKFNub3cgTGVvcGFyZCkKLVxpMCAgb3IgbGF0ZXI7IGFuZCBvbmUgdGhhdCBpbnN0YWxscyBhIAotXGkgMzItYml0LW9ubHkgKEludGVsIGFuZCBQUEMpCi1caTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCi1caSBNYWMgT1MgWCAxMC41IChMZW9wYXJkKQogXGkwICBvciBsYXRlci4gIFRoaXMgUmVhZE1lIHdhcyBpbnN0YWxsZWQgd2l0aCB0aGUgCiBcaSAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi1caTAgIHZhcmlhbnQuICBVbmxlc3MgeW91IGFyZSBpbnN0YWxsaW5nIHRvIGFuIDEwLjUgc3lzdGVtIG9yIHlvdSBuZWVkIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiBydW4gb24gMTAuNSBzeXN0ZW1zLCB1c2UgdGhlIDEwLjYgdmFyaWFudCBpZiBwb3NzaWJsZS4gIFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgb3BlcmF0aW5nIHN5c3RlbSBmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggMTAuNiBhbmQgeW91IG1heSBzZWUgYmV0dGVyIHBlcmZvcm1hbmNlIHVzaW5nIDY0LWJpdCBtb2RlLiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBBbHNvIHNlZSAKLVxpIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTAotXGkwICBiZWxvdy4gIFRoZSBQeXRob25zIGluc3RhbGxlZCBieSB0aGVzZSBpbnN0YWxsZXJzIGFyZSBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgdmFyaWVzIGJ5IGluc3RhbGxlciB2YXJpYW50IGFuZCBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoZSBMaWNlbnNlLnJ0ZiBmaWxlLgorXGkwICB2YXJpYW50LiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBUaGUgUHl0aG9uIGluc3RhbGxlZCBieSB0aGlzIGluc3RhbGxlciBpcyBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KIFxiIFx1bCBcCiBcCi1VcGRhdGUgeW91ciB2ZXJzaW9uIG9mIFRjbC9UayB0byB1c2UgSURMRSBvciBvdGhlciBUayBhcHBsaWNhdGlvbnMKK0NlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYjAgXGNmMCBcdWxub25lIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgVGhpcyB2YXJpYW50IG9mIFB5dGhvbiAzLjYgbm93IGluY2x1ZGVzIGl0cyBvd24gcHJpdmF0ZSBjb3B5IG9mIE9wZW5TU0wgMS4wLjIuICBVbmxpa2UgcHJldmlvdXMgcmVsZWFzZXMsIHRoZSBkZXByZWNhdGVkIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIGFyZSBubyBsb25nZXIgdXNlZC4gIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKK1xpIEtleWNoYWluIEFjY2VzcyAKK1xpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAorXGkgc2VjdXJpdHkKK1xpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYXJlIG5vIGxvbmdlciB1c2VkIGFzIGRlZmF1bHRzIGJ5IHRoZSBQeXRob24gCitcZjEgc3NsCitcZjAgIG1vZHVsZS4gIEZvciAzLjYuMGIxLCBhIHNhbXBsZSBjb21tYW5kIHNjcmlwdCBpcyBpbmNsdWRlZCBpbiAKK1xmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAzLjYKK1xmMCAgdG8gaW5zdGFsbCBhIGN1cmF0ZWQgYnVuZGxlIG9mIGRlZmF1bHQgcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgCitcZjEgY2VydGlmaQorXGYwICBwYWNrYWdlICh7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NlcnRpZmkifX17XGZsZHJzbHQgaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpfX0pLiAgSWYgeW91IGNob29zZSB0byB1c2UgCitcZjEgY2VydGlmaQorXGYwICwgeW91IHNob3VsZCBjb25zaWRlciBzdWJzY3JpYmluZyB0byB0aGV7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL2NlcnRpZmkuaW8vZW4vbGF0ZXN0LyJ9fXtcZmxkcnNsdCAgcHJvamVjdCdzIGVtYWlsIHVwZGF0ZSBzZXJ2aWNlfX0gdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY2VydGlmaWNhdGUgYnVuZGxlIGlzIHVwZGF0ZWQuICBNb3JlIG9wdGlvbnMgd2lsbCBiZSBwcm92aWRlZCBwcmlvciB0byB0aGUgZmluYWwgcmVsZWFzZSBvZiAzLjYuMC5cCitcCitUaGUgYnVuZGxlZCAKK1xmMSBwaXAKK1xmMCAgaW5jbHVkZWQgd2l0aCB0aGUgUHl0aG9uIDMuNiBpbnN0YWxsZXIgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKK1wKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwIFx1bCBVcGRhdGUgeW91ciB2ZXJzaW9uIG9mIFRjbC9UayB0byB1c2UgSURMRSBvciBvdGhlciBUayBhcHBsaWNhdGlvbnMKIFxiMCBcdWxub25lIFwKIFwKIFRvIHVzZSBJRExFIG9yIG90aGVyIHByb2dyYW1zIHRoYXQgdXNlIHRoZSBUa2ludGVyIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSB0b29sa2l0LCB5b3UgbmVlZCB0byBpbnN0YWxsIGEgbmV3ZXIgdGhpcmQtcGFydHkgdmVyc2lvbiBvZiB0aGUgCiBcaSBUY2wvVGsKIFxpMCAgZnJhbWV3b3Jrcy4gIFZpc2l0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy90Y2x0ay99fSBmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mIAogXGkgVGNsL1RrCi1caTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC5cCitcaTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC4gIEZvciB0aGUgaW5pdGlhbCBwcmV2aWV3IHJlbGVhc2VzIG9mIFB5dGhvbiAzLjYsIHRoZSBpbnN0YWxsZXIgaXMgc3RpbGwgbGlua2VkIHdpdGggVGNsL1RrIDguNTsgdGhpcyB3aWxsIGxpa2VseSBjaGFuZ2UgcHJpb3IgdG8gdGhlIGZpbmFsIHJlbGVhc2Ugb2YgMy42LjAuXAogCiBcYiBcdWwgXAotQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAorT3RoZXIgY2hhbmdlc1wKIAogXGIwIFx1bG5vbmUgXAotUHl0aG9uIDMuNSBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IHdlcmUgcmVsZWFzZWQgaW4gUHl0aG9uIDMuNC4zIGFuZCBQeXRob24gMi43LjEwLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCi1caSBodHRwbGliCi1caTAgLCAKLVxpIHVybGxpYgotXGkwICwgYW5kIAotXGkgeG1scnBjbGliCi1caTAgLCB0byBieSBkZWZhdWx0IHZlcmlmeSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHNlcnZlcnMgb3ZlciBzZWN1cmUgKFRMUykgY29ubmVjdGlvbnMuICBUaGUgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCBieSB0aGUgT3BlblNTTCBsaWJyYXJpZXMgdGhhdCBQeXRob24gaXMgbGlua2VkIHRvLiAgUHJpb3IgdG8gMy40LjMsIGJvdGggcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKLVxpIEtleWNoYWluIEFjY2VzcyAKLVxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAotXGkgc2VjdXJpdHkKLVxpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkuXAotXAotRm9yIE9TIFggMTAuNSwgQXBwbGUgcHJvdmlkZXMgCi1caSBPcGVuU1NMIDAuOS43Ci1caTAgIGxpYnJhcmllcy4gIFRoaXMgdmVyc2lvbiBvZiBBcHBsZSdzIE9wZW5TU0wgCi1cYiBkb2VzIG5vdAotXGIwICB1c2UgdGhlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrLCBldmVuIHdoZW4gdXNlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLiAgSW5zdGVhZCBpdCBjb25zdWx0cyBhIHRyYWRpdGlvbmFsIE9wZW5TU0wgY29uY2F0ZW5hdGVkIGNlcnRpZmljYXRlIGZpbGUgKAotXGkgY2FmaWxlCi1caTAgKSBvciBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnkgKAotXGkgY2FwYXRoCi1caTAgKSwgbG9jYXRlZCBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKLVxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHRoZSAKLVxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wLjIKLVxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKLVxmMSBweTJhcHB9fSwgeW91IG1heSBub3cgbmVlZCB0byBidW5kbGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZW0gb3Igb3RoZXJ3aXNlIHN1cHBseSBub24tZGVmYXVsdCBTU0wgY29udGV4dHMuXAotXAotRm9yIE9TIFggMTAuNissIEFwcGxlIGFsc28gcHJvdmlkZXMgCi1caSBPcGVuU1NMCi1caTAgIAotXGkgMC45LjggbGlicmFyaWVzCi1caTAgLiAgQXBwbGUncyAwLjkuOCB2ZXJzaW9uIGluY2x1ZGVzIGFuIGltcG9ydGFudCBhZGRpdGlvbmFsIGZlYXR1cmU6IGlmIGEgY2VydGlmaWNhdGUgY2Fubm90IGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBtYW51YWxseSBhZG1pbmlzdGVyZWQgY2VydGlmaWNhdGVzIGluIAotXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCi1caSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKLVxpIFB5UEkKLVxpMCAuXAotXAotVGhlIGJ1bmRsZWQgCi1cZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAotXAotCi1cYiBcdWwgT3RoZXIgY2hhbmdlc1wKLQotXGIwIFx1bG5vbmUgXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIEZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKK0ZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKIFxpIFdoYXQncyBuZXcKIFxpMCAgc2VjdGlvbiBpbiB0aGUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb2MvIn19e1xmbGRyc2x0IERvY3VtZW50YXRpb24gU2V0fX0gZm9yIHRoaXMgcmVsZWFzZSBhbmQgaXRzIAogXGkgUmVsZWFzZSBOb3RlcwogXGkwICBsaW5rIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKIAotXGIgXGNmMCBcdWwgXAorXGIgXHVsIFwKIFB5dGhvbiAzIGFuZCBQeXRob24gMiBDby1leGlzdGVuY2VcCiAKIFxiMCBcdWxub25lIFwKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGRmYjc1ZDguLjNhOWFiMDQgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSw4ICsxLDkgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0M1xjb2NvYXN1YnJ0ZjE2MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTA0CiBcY29jb2FzY3JlZW5mb250czF7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTE2LDggKzE3LDE0IEBACiBcYiBJRExFCiBcYjAgLlwKIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAotXGIgSU1QT1JUQU5UOgorXGIgXGNmMCBORVc6CitcYjAgICBUaGVyZSBhcmUgaW1wb3J0YW50IGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlIHJlZ2FyZGluZyBuZXR3b3JrIHNlY3VyaXR5IGFuZCB0cnVzdCBjZXJ0aWZpY2F0ZXMuICBQbGVhc2Ugc2VlIHRoZSBSZWFkTWUgZm9yIG1vcmUgZGV0YWlscy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKIFxiMCAgYW5kIG90aGVyIHByb2dyYW1zIHVzaW5nIHRoZSAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZCBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDJlMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorCisvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQFBZVkVSQC9iaW4vcHl0aG9uQFBZVkVSQCA8PCAiRU9GIgorCisjIGluc3RhbGxfY2VydGlmaS5weQorIworIyBzYW1wbGUgc2NyaXB0IHRvIGluc3RhbGwgb3IgdXBkYXRlIGEgc2V0IG9mIGRlZmF1bHQgUm9vdCBDZXJ0aWZpY2F0ZXMKKyMgZm9yIHRoZSBzc2wgbW9kdWxlLiAgVXNlcyB0aGUgY2VydGlmaWNhdGVzIHByb3ZpZGVkIGJ5IHRoZSBjZXJ0aWZpIHBhY2thZ2U6CisjICAgICAgIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaQorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3NsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworU1RBVF8wbzc3NSA9ICggc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSIHwgc3RhdC5TX0lYVVNSCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVdHUlAgfCBzdGF0LlNfSVhHUlAKKyAgICAgICAgICAgICB8IHN0YXQuU19JUk9USCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWE9USCApCisKK2RlZiBtYWluKCk6CisgICAgb3BlbnNzbF9kaXIsIG9wZW5zc2xfY2FmaWxlID0gb3MucGF0aC5zcGxpdCgKKyAgICAgICAgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpLm9wZW5zc2xfY2FmaWxlKQorCisgICAgcHJpbnQoIiAtLSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgY2VydGlmaSIpCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgIi1FIiwgIi1zIiwgIi1tIiwgInBpcCIsICJpbnN0YWxsIiwgIi0tdXBncmFkZSIsICJjZXJ0aWZpIl0pCisKKyAgICBpbXBvcnQgY2VydGlmaQorCisgICAgIyBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRlZmF1bHQgU1NMIGRpcmVjdG9yeQorICAgIG9zLmNoZGlyKG9wZW5zc2xfZGlyKQorICAgIHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUgPSBvcy5wYXRoLnJlbHBhdGgoY2VydGlmaS53aGVyZSgpKQorICAgIHByaW50KCIgLS0gcmVtb3ZpbmcgYW55IGV4aXN0aW5nIGZpbGUgb3IgbGluayIpCisgICAgdHJ5OgorICAgICAgICBvcy5yZW1vdmUob3BlbnNzbF9jYWZpbGUpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgcHJpbnQoIiAtLSBjcmVhdGluZyBzeW1saW5rIHRvIGNlcnRpZmkgY2VydGlmaWNhdGUgYnVuZGxlIikKKyAgICBvcy5zeW1saW5rKHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUsIG9wZW5zc2xfY2FmaWxlKQorICAgIHByaW50KCIgLS0gc2V0dGluZyBwZXJtaXNzaW9ucyIpCisgICAgb3MuY2htb2Qob3BlbnNzbF9jYWZpbGUsIFNUQVRfMG83NzUpCisgICAgcHJpbnQoIiAtLSB1cGRhdGUgY29tcGxldGUiKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorRU9GCmRpZmYgLS1naXQgYS9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKaW5kZXggOTg2NzYwZC4uNTk5NGMxOCAxMDA2NDQKLS0tIGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CisrKyBiL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQpAQCAtNjgsNiArNjgsNiBAQAogICAgICAgICBicmVhawogCiAjIE5vdyBpdCBpcyBzYWZlIHRvIGltcG9ydCBpZGxlbGliLgotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IGJhNjMzZGEuLjUxOTA0MzYgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQ5LDYgKzQ5LDEwIEBACiBMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAogTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAogTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKK0RUUkFDRT0gICAgICAgICBARFRSQUNFQAorREZMQUdTPSAgICAgICAgIEBERkxBR1NACitEVFJBQ0VfSEVBREVSUz0gQERUUkFDRV9IRUFERVJTQAorRFRSQUNFX09CSlM9ICAgIEBEVFJBQ0VfT0JKU0AKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTExMCw2ICsxMTQsNyBAQAogCiAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKK01VTFRJQVJDSF9DUFBGTEFHUyA9IEBNVUxUSUFSQ0hfQ1BQRkxBR1NACiAKICMgSW5zdGFsbCBwcmVmaXggZm9yIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcwogcHJlZml4PQkJQHByZWZpeEAKQEAgLTIzNSw3ICsyNDAsNyBAQAogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudGVkIHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldC4KICMgV2UgZXhjbHVkZSB1bml0dGVzdHMgd2l0aCAteCB0aGF0IHRha2UgYSByZWRpY3VsaW91cyBhbW91bnQgb2YgdGltZSB0bwogIyBydW4gaW4gdGhlIGluc3RydW1lbnRlZCB0cmFpbmluZyBidWlsZCBvciBkbyBub3QgcHJvdmlkZSBtdWNoIHZhbHVlLgotUFJPRklMRV9UQVNLPS1tIHRlc3QucmVncnRlc3QgLS1wZ28gLXggdGVzdF9hc3luY29yZSB0ZXN0X2dkYiB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrIHRlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZyB0ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3biB0ZXN0X3N1YnByb2Nlc3MKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvCiAKICMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKIENPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCkBAIC0yNTQsOSArMjU5LDYgQEAKIAkJTW9kdWxlcy9tYWluLm8gXAogCQlNb2R1bGVzL2djbW9kdWxlLm8KIAotIyBVc2VkIG9mIHNpZ25hbG1vZHVsZS5vIGlzIG5vdCBhdmFpbGFibGUKLVNJR05BTF9PQkpTPQlAU0lHTkFMX09CSlNACi0KIElPX0g9CQlNb2R1bGVzL19pby9faW9tb2R1bGUuaAogCiBJT19PQkpTPQlcCkBAIC0yODEsMTggKzI4Myw2IEBACiAjIFBhcnNlcgogUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCiAKLVBTUkNTPQkJXAotCQlQYXJzZXIvYWNjZWxlci5jIFwKLQkJUGFyc2VyL2dyYW1tYXIxLmMgXAotCQlQYXJzZXIvbGlzdG5vZGUuYyBcCi0JCVBhcnNlci9ub2RlLmMgXAotCQlQYXJzZXIvcGFyc2VyLmMgXAotCQlQYXJzZXIvYml0c2V0LmMgXAotCQlQYXJzZXIvbWV0YWdyYW1tYXIuYyBcCi0JCVBhcnNlci9maXJzdHNldHMuYyBcCi0JCVBhcnNlci9ncmFtbWFyLmMgXAotCQlQYXJzZXIvcGdlbi5jCi0KIFBPQkpTPQkJXAogCQlQYXJzZXIvYWNjZWxlci5vIFwKIAkJUGFyc2VyL2dyYW1tYXIxLm8gXApAQCAtMzA3LDE2ICsyOTcsNiBAQAogCiBQQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvcGFyc2V0b2subyBQYXJzZXIvdG9rZW5pemVyLm8KIAotUEdTUkNTPQkJXAotCQlPYmplY3RzL29ibWFsbG9jLmMgXAotCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5jIFwKLQkJUHl0aG9uL215c25wcmludGYuYyBcCi0JCVB5dGhvbi9weWN0eXBlLmMgXAotCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4uYyBcCi0JCVBhcnNlci9wcmludGdyYW1tYXIuYyBcCi0JCVBhcnNlci9wYXJzZXRva19wZ2VuLmMgXAotCQlQYXJzZXIvcGdlbm1haW4uYwotCiBQR09CSlM9CQlcCiAJCU9iamVjdHMvb2JtYWxsb2MubyBcCiAJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLm8gXApAQCAtMzMyLDcgKzMxMiw2IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAogCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM0MSw3ICszMjAsNyBAQAogT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQogT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAogT1BDT0RFX0hfR0VOPQkkKFBZVEhPTl9GT1JfR0VOKSAkKE9QQ09ERV9IX1NDUklQVCkgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSCkKLSMKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKQEAgLTQxNyw3ICszOTYsOCBAQAogCQlQeXRob24vJChEWU5MT0FERklMRSkgXAogCQkkKExJQk9CSlMpIFwKIAkJJChNQUNIREVQX09CSlMpIFwKLQkJJChUSFJFQURPQkopCisJCSQoVEhSRUFET0JKKSBcCisJCSQoRFRSQUNFX09CSlMpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTQ3MSwxMyArNDUxLDIxIEBACiAJCSQoT0JKRUNUX09CSlMpIFwKIAkJJChQWVRIT05fT0JKUykgXAogCQkkKE1PRFVMRV9PQkpTKSBcCi0JCSQoU0lHTkFMX09CSlMpIFwKIAkJJChNT0RPQkpTKQogCiBMSUJSQVJZX09CSlM9CVwKIAkJJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pIFwKIAkJUHl0aG9uL2Zyb3plbi5vCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIERUcmFjZQorCisjIE9uIHNvbWUgc3lzdGVtcywgb2JqZWN0IGZpbGVzIHRoYXQgcmVmZXJlbmNlIERUcmFjZSBwcm9iZXMgbmVlZCB0byBiZSBtb2RpZmllZAorIyBpbi1wbGFjZSBieSBkdHJhY2UoMSkuCitEVFJBQ0VfREVQUyA9IFwKKwlQeXRob24vY2V2YWwubworIyBYWFg6IHNob3VsZCBnY21vZHVsZSwgZXRjLiBiZSBoZXJlLCB0b28/CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUnVsZXMKIApAQCAtNTMzLDE1ICs1MjEsMjMgQEAKIAkgICAgLS1iYXNlLWRpcmVjdG9yeSAkKHJlYWxwYXRoICQoYWJzX2J1aWxkZGlyKSkgXAogCSAgICAtLXBhdGggJChyZWFscGF0aCAkKGFic19zcmNkaXIpKSBcCiAJICAgIC0tb3V0cHV0LWZpbGUgJChDT1ZFUkFHRV9JTkZPKQotCTogIyByZW1vdmUgM3JkIHBhcnR5IG1vZHVsZXMgYW5kIHN5c3RlbSBoZWFkZXJzCisJOiAjIHJlbW92ZSAzcmQgcGFydHkgbW9kdWxlcywgc3lzdGVtIGhlYWRlcnMgYW5kIGludGVybmFsIGZpbGVzIHdpdGgKKwk6ICMgZGVidWcsIHRlc3Qgb3IgZHVtbXkgZnVuY3Rpb25zLgogCUBsY292IC0tcmVtb3ZlICQoQ09WRVJBR0VfSU5GTykgXAorCSAgICAnKi9Nb2R1bGVzL19ibGFrZTIvaW1wbC8qJyBcCiAJICAgICcqL01vZHVsZXMvX2N0eXBlcy9saWJmZmkqLyonIFwKIAkgICAgJyovTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy8qJyBcCisJICAgICcqL01vZHVsZXMvX3NoYTMva2NwLyonIFwKIAkgICAgJyovTW9kdWxlcy9leHBhdC8qJyBcCiAJICAgICcqL01vZHVsZXMvemxpYi8qJyBcCiAJICAgICcqL0luY2x1ZGUvKicgXAorCSAgICAnKi9Nb2R1bGVzL3h4Ki5jJyBcCisJICAgICcqL1BhcnNlci9saXN0bm9kZS5jJyBcCisJICAgICcqL1B5dGhvbi9weWZwZS5jJyBcCisJICAgICcqL1B5dGhvbi9weXN0cmNtcC5jJyBcCiAJICAgICcvdXNyL2luY2x1ZGUvKicgXAogCSAgICAnL3Vzci9sb2NhbC9pbmNsdWRlLyonIFwKKwkgICAgJy91c3IvbGliL2djYy8qJyBcCiAJICAgIC0tb3V0cHV0LWZpbGUgJChDT1ZFUkFHRV9JTkZPKQogCUBnZW5odG1sICQoQ09WRVJBR0VfSU5GTykgLS1vdXRwdXQtZGlyZWN0b3J5ICQoQ09WRVJBR0VfUkVQT1JUKSBcCiAJICAgICQoQ09WRVJBR0VfUkVQT1JUX09QVElPTlMpCkBAIC01NjQsNyArNTYwLDcgQEAKICMgUnVuICJBcmd1bWVudCBDbGluaWMiIG92ZXIgYWxsIHNvdXJjZSBmaWxlcwogIyAoZGVwZW5kcyBvbiBweXRob24gaGF2aW5nIGFscmVhZHkgYmVlbiBidWlsdCkKIC5QSE9OWT1jbGluaWMKLWNsaW5pYzogJChCVUlMRFBZVEhPTikKK2NsaW5pYzogJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYwogCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC4vVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtLW1ha2UKIAogIyBCdWlsZCB0aGUgaW50ZXJwcmV0ZXIKQEAgLTU3Miw3ICs1NjgsNyBAQAogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpICQoTElOS0ZPUlNIQVJFRCkgLW8gJEAgUHJvZ3JhbXMvcHl0aG9uLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAogcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0Ci0JJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludCgiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pKScgPnBsYXRmb3JtCiAKICMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCiAjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCkBAIC01OTQsNiArNTkwLDExIEBACiBNb2R1bGVzL19tYXRoLm86IE1vZHVsZXMvX21hdGguYyBNb2R1bGVzL19tYXRoLmgKIAkkKENDKSAtYyAkKENDU0hBUkVEKSAkKFBZX0NPUkVfQ0ZMQUdTKSAtbyAkQCAkPAogCisjIGJsYWtlMnMgaXMgYXV0by1nZW5lcmF0ZWQgZnJvbSBibGFrZTJiCiskKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jOiAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2RpcikvVG9vbHMvY2xpbmljL2NsaW5pYy5weSAtZiAkQAorCiAjIEJ1aWxkIHRoZSBzaGFyZWQgbW9kdWxlcwogIyBVbmRlciBHTlUgbWFrZSwgTUFLRUZMQUdTIGFyZSBzb3J0ZWQgYW5kIG5vcm1hbGl6ZWQ7IHRoZSAncycgZm9yCiAjIC1zLCAtLXNpbGVudCBvciAtLXF1aWV0IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hhci4KQEAgLTYwNyw2ICs2MDgsNyBAQAogCQlfVENMVEtfSU5DTFVERVM9JyQoVENMVEtfSU5DTFVERVMpJyBfVENMVEtfTElCUz0nJChUQ0xUS19MSUJTKScgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSAkJHF1aWV0IGJ1aWxkCiAKKwogIyBCdWlsZCBzdGF0aWMgbGlicmFyeQogIyBhdm9pZCBsb25nIGNvbW1hbmQgbGluZXMsIHNhbWUgYXMgTElCUkFSWV9PQkpTCiAkKExJQlJBUlkpOiAkKExJQlJBUllfT0JKUykKQEAgLTYxNSw3ICs2MTcsNyBAQAogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQQVJTRVJfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNUX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKSBQeXRob24vZnJvemVuLm8KLQkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpICQoU0lHTkFMX09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RPQkpTKQogCSQoUkFOTElCKSAkQAogCkBAIC03MTksMTEgKzcyMSwxMSBAQAogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pCiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgLW8gJEAgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKLVB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKLVB5dGhvbi9pbXBvcnRsaWIuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliCitQeXRob24vaW1wb3J0bGliLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBQeXRob24vbWFyc2hhbC5jCiAJLi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYiBcCiAJICAgICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHl0aG9uL2ltcG9ydGxpYi5oCiAKQEAgLTczNSw3ICs3MzcsNiBAQAogCQkkKE9CSkVDVF9PQkpTKSBcCiAJCSQoUFlUSE9OX09CSlMpIFwKIAkJJChNT0RVTEVfT0JKUykgXAotCQkkKFNJR05BTF9PQkpTKSBcCiAJCSQoTU9ET0JKUykgXAogCQkkKHNyY2RpcikvTW9kdWxlcy9nZXRidWlsZGluZm8uYwogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKQEAgLTc4MSw2ICs3ODIsNyBAQAogUHl0aG9uL3N5c21vZHVsZS5vOiAkKHNyY2RpcikvUHl0aG9uL3N5c21vZHVsZS5jIE1ha2VmaWxlCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAogCQktREFCSUZMQUdTPSciJChBQklGTEFHUykiJyBcCisJCSQoTVVMVElBUkNIX0NQUEZMQUdTKSBcCiAJCS1vICRAICQoc3JjZGlyKS9QeXRob24vc3lzbW9kdWxlLmMKIAogJChJT19PQkpTKTogJChJT19IKQpAQCAtODYyLDcgKzg2NCw4IEBACiAKIE9iamVjdHMvdW5pY29kZW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgJChVTklDT0RFX0RFUFMpCiAKLU9iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAorT2JqZWN0cy9vZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCitPYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmggJChzcmNkaXIpL09iamVjdHMvZGljdC1jb21tb24uaAogT2JqZWN0cy9zZXRvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKIAogJChPUENPREVUQVJHRVRTX0gpOiAkKE9QQ09ERVRBUkdFVEdFTl9GSUxFUykKQEAgLTg3Miw2ICs4NzUsMTggQEAKIAogUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmggUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCiAKKyMgR2VuZXJhdGUgRFRyYWNlIHByb2JlIG1hY3JvcywgdGhlbiByZW5hbWUgdGhlbSAoUFlUSE9OXyAtPiBQeURUcmFjZV8pIHRvCisjIGZvbGxvdyBvdXIgbmFtaW5nIGNvbnZlbnRpb25zLiBkdHJhY2UoMSkgdXNlcyB0aGUgb3V0cHV0IGZpbGVuYW1lIHRvIGdlbmVyYXRlCisjIGFuIGluY2x1ZGUgZ3VhcmQsIHNvIHdlIGNhbid0IHVzZSBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBpdHMgb3V0cHV0LgorSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaDogJChzcmNkaXIpL0luY2x1ZGUvcHlkdHJhY2UuZAorCSQoRFRSQUNFKSAkKERGTEFHUykgLW8gJEAgLWggLXMgJDwKKwk6IHNlZCBpbi1wbGFjZSBlZGl0IHdpdGggUE9TSVgtb25seSB0b29scworCXNlZCAncy9QWVRIT05fL1B5RFRyYWNlXy8nICRAID4gJEAudG1wCisJbXYgJEAudG1wICRACisKK1B5dGhvbi9weWR0cmFjZS5vOiAkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5kICQoRFRSQUNFX0RFUFMpCisJJChEVFJBQ0UpICQoREZMQUdTKSAtbyAkQCAtRyAtcyAkPCAkKERUUkFDRV9ERVBTKQorCiBPYmplY3RzL3R5cGVvYmplY3QubzogT2JqZWN0cy90eXBlc2xvdHMuaW5jCiBPYmplY3RzL3R5cGVzbG90cy5pbmM6ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weQogCSQoUFlUSE9OX0ZPUl9HRU4pICQoc3JjZGlyKS9PYmplY3RzL3R5cGVzbG90cy5weSA8ICQoc3JjZGlyKS9JbmNsdWRlL3R5cGVzbG90cy5oIE9iamVjdHMvdHlwZXNsb3RzLmluYwpAQCAtOTI5LDYgKzk0NCw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCiAJCSQoT1BDT0RFX0gpIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vc21vZHVsZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbi5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcGdlbmhlYWRlcnMuaCBcCkBAIC05MzcsNiArOTUzLDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHljYXBzdWxlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWN0eXBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWRlYnVnLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWhhc2guaCBcCkBAIC05NjgsNyArOTg1LDggQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKIAkJcHljb25maWcuaCBcCiAJCSQoUEFSU0VSX0hFQURFUlMpIFwKLQkJJChBU1RfSCkKKwkJJChBU1RfSCkgXAorCQkkKERUUkFDRV9IRUFERVJTKQogCiAkKExJQlJBUllfT0JKUykgJChNT0RPQkpTKSBQcm9ncmFtcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKIApAQCAtOTc4LDcgKzk5Niw3IEBACiBURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQogVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5Ci1URVNUVElNRU9VVD0JMzYwMAorVEVTVFRJTUVPVVQ9CTEyMDAKIAogIyBSdW4gYSBiYXNpYyBzZXQgb2YgcmVncmVzc2lvbiB0ZXN0cy4KICMgVGhpcyBleGNsdWRlcyBzb21lIHRlc3RzIHRoYXQgYXJlIHBhcnRpY3VsYXJseSByZXNvdXJjZS1pbnRlbnNpdmUuCkBAIC0xMDE2LDcgKzEwMzQsNyBAQAogCQktQGlmIHdoaWNoIHB5YnVpbGRib3QuaWRlbnRpZnkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKIAkJCXB5YnVpbGRib3QuaWRlbnRpZnkgIkNDPSckKENDKSciICJDWFg9JyQoQ1hYKSciOyBcCiAJCWZpCi0JCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLWogMSAtdSBhbGwgLVcgLS1zbG93ZXN0IC0tdGltZW91dD0kKFRFU1RUSU1FT1VUKSAkKFRFU1RPUFRTKQogCiBRVUlDS1RFU1RPUFRTPQkkKFRFU1RPUFRTKSAteCB0ZXN0X3N1YnByb2Nlc3MgdGVzdF9pbyB0ZXN0X2xpYjJ0bzMgXAogCQl0ZXN0X211bHRpYnl0ZWNvZGVjIHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0X2l0ZXJ0b29scyBcCkBAIC0xMTY5LDE2ICsxMTg3LDE2IEBACiAJKGNkICQoREVTVERJUikkKE1BTkRJUikvbWFuMTsgJChMTikgLXMgcHl0aG9uJChWRVJTSU9OKS4xIHB5dGhvbjMuMSkKIAogIyBJbnN0YWxsIHRoZSBsaWJyYXJ5Ci1QTEFURElSPQlAUExBVERJUkAKLU1BQ0hERVBTPQkkKFBMQVRESVIpCiBYTUxMSUJTVUJESVJTPSAgeG1sIHhtbC9kb20geG1sL2V0cmVlIHhtbC9wYXJzZXJzIHhtbC9zYXgKIExJQlNVQkRJUlM9CXRraW50ZXIgdGtpbnRlci90ZXN0IHRraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIgXAogCQl0a2ludGVyL3Rlc3QvdGVzdF90dGsgc2l0ZS1wYWNrYWdlcyB0ZXN0IFwKIAkJdGVzdC9hdWRpb2RhdGEgXAogCQl0ZXN0L2NhcGF0aCB0ZXN0L2RhdGEgXAogCQl0ZXN0L2Nqa2VuY29kaW5ncyB0ZXN0L2RlY2ltYWx0ZXN0ZGF0YSB0ZXN0L3htbHRlc3RkYXRhIFwKKwkJdGVzdC9kdHJhY2VkYXRhIFwKIAkJdGVzdC9laW50cmRhdGEgXAogCQl0ZXN0L2ltZ2hkcmRhdGEgXAorCQl0ZXN0L2xpYnJlZ3J0ZXN0IFwKIAkJdGVzdC9zdWJwcm9jZXNzZGF0YSB0ZXN0L3NuZGhkcmRhdGEgdGVzdC9zdXBwb3J0IFwKIAkJdGVzdC90cmFjZWRtb2R1bGVzIHRlc3QvZW5jb2RlZF9tb2R1bGVzIFwKIAkJdGVzdC90ZXN0X2ltcG9ydCBcCkBAIC0xMjI3LDggKzEyNDUsOCBAQAogCQltdWx0aXByb2Nlc3NpbmcgbXVsdGlwcm9jZXNzaW5nL2R1bW15IFwKIAkJdW5pdHRlc3QgdW5pdHRlc3QvdGVzdCB1bml0dGVzdC90ZXN0L3Rlc3Rtb2NrIFwKIAkJdmVudiB2ZW52L3NjcmlwdHMgdmVudi9zY3JpcHRzL3Bvc2l4IFwKLQkJY3Vyc2VzIHB5ZG9jX2RhdGEgJChNQUNIREVQUykKLWxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUExBVERJUikgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYworCQljdXJzZXMgcHlkb2NfZGF0YQorbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKIAlAZm9yIGkgaW4gJChTQ1JJUFRESVIpICQoTElCREVTVCk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgISAtZCAkKERFU1RESVIpJCRpOyB0aGVuIFwKQEAgLTEyNDgsNyArMTI2Niw3IEBACiAJCWVsc2UJdHJ1ZTsgXAogCQlmaTsgXAogCWRvbmUKLQlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5IGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhLnB5OyBcCisJQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weTsgXAogCWRvIFwKIAkJaWYgdGVzdCAteCAkJGk7IHRoZW4gXAogCQkJJChJTlNUQUxMX1NDUklQVCkgJCRpICQoREVTVERJUikkKExJQkRFU1QpOyBcCkBAIC0xMjgzLDYgKzEzMDEsOCBAQAogCQkJZXNhYzsgXAogCQlkb25lOyBcCiAJZG9uZQorCSQoSU5TVEFMTF9EQVRBKSBgY2F0IHB5YnVpbGRkaXIudHh0YC9fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKS5weSBcCisJCSQoREVTVERJUikkKExJQkRFU1QpOyBcCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9MSUNFTlNFICQoREVTVERJUikkKExJQkRFU1QpL0xJQ0VOU0UudHh0CiAJaWYgdGVzdCAtZCAkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHM7IHRoZW4gXAogCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYyBcCkBAIC0xMzIwLDIzICsxMzQwLDYgQEAKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CiAKLSMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgotJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOgotCW1rZGlyICQoc3JjZGlyKS9MaWIvJChQTEFURElSKQotCWNwICQoc3JjZGlyKS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuICQoc3JjZGlyKS9MaWIvJChQTEFURElSKS9yZWdlbgotCWV4cG9ydCBQQVRIOyBQQVRIPSJgcHdkYDokJFBBVEgiOyBcCi0JZXhwb3J0IFBZVEhPTlBBVEg7IFBZVEhPTlBBVEg9ImBwd2RgL0xpYiI7IFwKLQlleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSDsgRFlMRF9GUkFNRVdPUktfUEFUSD0iYHB3ZGAiOyBcCi0JZXhwb3J0IEVYRTsgRVhFPSIkKEJVSUxERVhFKSI7IFwKLQlpZiBbIC1uICIkKE1VTFRJQVJDSCkiIF07IHRoZW4gZXhwb3J0IE1VTFRJQVJDSDsgTVVMVElBUkNIPSQoTVVMVElBUkNIKTsgZmk7IFwKLQlleHBvcnQgUFlUSE9OX0ZPUl9CVUlMRDsgXAotCWlmIFsgIiQoQlVJTERfR05VX1RZUEUpIiA9ICIkKEhPU1RfR05VX1RZUEUpIiBdOyB0aGVuIFwKLQkgIFBZVEhPTl9GT1JfQlVJTEQ9IiQoQlVJTERQWVRIT04pIjsgXAotCWVsc2UgXAotCSAgUFlUSE9OX0ZPUl9CVUlMRD0iJChQWVRIT05fRk9SX0JVSUxEKSI7IFwKLQlmaTsgXAotCWNkICQoc3JjZGlyKS9MaWIvJChQTEFURElSKTsgJChSVU5TSEFSRUQpIC4vcmVnZW4KLQogcHl0aG9uLWNvbmZpZzogJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBNaXNjL3B5dGhvbi1jb25maWcuc2gKIAkjIFN1YnN0aXR1dGlvbiBoYXBwZW5zIGhlcmUsIGFzIHRoZSBjb21wbGV0ZWx5LWV4cGFuZGVkIEJJTkRJUgogCSMgaXMgbm90IGF2YWlsYWJsZSBpbiBjb25maWd1cmUKQEAgLTE0MzMsNyArMTQzNiw3IEBACiAJCS0taW5zdGFsbC1zY3JpcHRzPSQoQklORElSKSBcCiAJCS0taW5zdGFsbC1wbGF0bGliPSQoREVTVFNIQVJFRCkgXAogCQktLXJvb3Q9JChERVNURElSKS8KLQktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGEucHkKKwktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkucHkKIAktcm0gLXIgJChERVNURElSKSQoREVTVFNIQVJFRCkvX19weWNhY2hlX18KIAogIyBIZXJlIGFyZSBhIGNvdXBsZSBvZiB0YXJnZXRzIGZvciBNYWNPU1ggYWdhaW4sIHRvIGluc3RhbGwgYSBmdWxsCkBAIC0xNDc5LDEwICsxNDgyLDEwIEBACiAjIEluc3RhbGwgYSBudW1iZXIgb2Ygc3ltbGlua3MgdG8ga2VlcCBzb2Z0d2FyZSB0aGF0IGV4cGVjdHMgYSBub3JtYWwgdW5peAogIyBpbnN0YWxsICh3aGljaCBpbmNsdWRlcyBweXRob24tY29uZmlnKSBoYXBweS4KIGZyYW1ld29ya2luc3RhbGxtYWNsaWI6Ci0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmEiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoVkVSU0lPTikuYSIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5hIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKFZFUlNJT04pLmEiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCiAKQEAgLTE1OTcsNiArMTYwMCw3IEBACiAJLXJtIC1mIExpYi9saWIydG8zLypHcmFtbWFyKi5waWNrbGUKIAktcm0gLWYgUHJvZ3JhbXMvX3Rlc3RlbWJlZCBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgogCS1maW5kIGJ1aWxkIC10eXBlIGYgLWEgISAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKKwktcm0gLWYgSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaAogCiBwcm9maWxlLXJlbW92YWw6CiAJZmluZCAuIC1uYW1lICcqLmdjPz8nIC1leGVjIHJtIC1mIHt9ICc7JwpAQCAtMTY2MSw3ICsxNjY1LDYgQEAKIAkJLW8gLW5hbWUgJyoudG1TbmlwcGV0JyBcCiAJCS1vIC1uYW1lICdTZXR1cCcgXAogCQktbyAtbmFtZSAnU2V0dXAuKicgXAotCQktbyAtbmFtZSByZWdlbiBcCiAJCS1vIC1uYW1lIFJFQURNRSBcCiAJCS1vIC1uYW1lIE5FV1MgXAogCQktbyAtbmFtZSBISVNUT1JZIFwKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCA2OWRjOWY1Li4yNzE5Y2I5IDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xMjAsNiArMTIwLDcgQEAKIFRob21hcyBCZWxsbWFuCiBBbGV4YW5kZXIg4oCc0KHQsNGI0LDigJ0gQmVsb3BvbHNreQogRWxpIEJlbmRlcnNreQorTmlraGlsIEJlbmVzY2gKIERhdmlkIEJlbmphbWluCiBPc2NhciBCZW5qYW1pbgogQW5kcmV3IEJlbm5ldHRzCkBAIC0xNTUsNiArMTU2LDcgQEAKIFBhdWwgQm9kZGllCiBNYXR0aGV3IEJvZWRpY2tlcgogUm9iaW4gQm9lcmRpamsKK05pa29sYXkgQm9nb3ljaGV2CiBEYXZpZCBCb2xlbgogV291dGVyIEJvbHN0ZXJsZWUKIEdhd2FpbiBCb2x0b24KQEAgLTI0MSw2ICsyNDMsNyBAQAogTWljaGFlbCBDZXRydWxvCiBEYXZlIENoYW1iZXJzCiBQYXNjYWwgQ2hhbWJvbgorTmljaG9sYXMgQ2hhbW1hcwogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKQEAgLTMwNSwxNSArMzA4LDE4IEBACiBEYXZpZCBDb3VybmFwZWF1CiBKdWxpZW4gQ291cnRlYXUKIFN0ZXZlIENvdXNpbnMKK0ZyYW5jaXNjbyBDb3V6bwogQWxleCBDb3ZlbnRyeQogTWF0dGhldyBEaXhvbiBDb3dsZXMKIFJ5YW4gQ295bmVyCiBDaHJpc3RvcGhlciBBLiBDcmFpZwogSmVyZW15IENyYXZlbgogTGF1cmEgQ3JlaWdodG9uCitUeWxlciBDcm9tcHRvbgogU2ltb24gQ3Jvc3MKIEZlbGlwZSBDcnV6CiBEcmV3IENzaWxsYWcKK0FsZXNzYW5kcm8gQ3VjY2kKIEpvYXF1aW4gQ3VlbmNhIEFiZWxhCiBTZWJhc3RpYW4gQ3VmcmUKIEpvaG4gQ3VnaW5pCkBAIC0zNTgsNiArMzY0LDcgQEAKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgogSm9zaXAgRGpvbG9uZ2EKK1dhbHRlciBEw7Zyd2FsZAogSmFyb21pciBEb2xlY2VrCiBJc21haWwgRG9ubWV6CiBSb2JlcnQgRG9ub2h1ZQpAQCAtMzg1LDcgKzM5Miw2IEBACiBLYXJtZW4gRHlrc3RyYQogSm9zaXAgRHpvbG9uZ2EKIE1heGltIER6dW1hbmVua28KLVdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAogVWxyaWNoIEVja2hhcmR0CkBAIC01NDQsOCArNTUwLDEwIEBACiBMYXJzIEd1c3TDpGJlbAogVGhvbWFzIEfDvHR0bGVyCiBKb25hcyBILgorSm9zZXBoIEhhY2ttYW4KIEJhcnJ5IEhhZGRvdwogUGhpbGlwcCBIYWdlbWVpc3RlcgorSm9obiBIYWdlbgogUGF1bCB0ZW4gSGFnZW4KIFJhc211cyBIYWhuCiBQZXRlciBIYWlnaHQKQEAgLTc4Miw2ICs3OTAsNyBAQAogTWFya28gS29odGFsYQogVmFqcmFza3kgS29rCiBHdWlkbyBLb2xsZXJpZQorSmFjZWsgS2/Fgm9kemllagogSmFjZWsgS29uaWVjem55CiBBcmthZHkgS29wbHlhcm92CiBQZXRlciBBLiBLb3JlbgpAQCAtNzkzLDYgKzgwMiw3IEBACiBKZXJ6eSBLb3plcmEKIE1ha3NpbSBLb3p5YXJjaHVrCiBTdGVmYW4gS3JhaAorUm9sZiBLcmFobAogQm9iIEtyYXMKIFNlYmFzdGlhbiBLcmVmdAogSG9sZ2VyIEtyZWtlbApAQCAtODI1LDYgKzgzNSw3IEBACiBUaW5vIExhbmdlCiBHbGVubiBMYW5nZm9yZAogQW5kcmV3IExhbmdtZWFkCitXb2xmZ2FuZyBMYW5nbmVyCiBEZXRsZWYgTGFubmVydAogU29yZW4gTGFyc2VuCiBBbW9zIExhdHRlaWVyCkBAIC04ODcsMjQgKzg5OCwyNyBAQAogR3JlZ29yIExpbmdsCiBFdmVyZXR0IExpcG1hbgogTWlya28gTGlzcworQWxleGFuZGVyIExpdQogTmljayBMb2Nrd29vZAogU3RlcGhhbmllIExvY2t3b29kCitNYXJ0aW4gdm9uIEzDtndpcwogSHVnbyBMb3BlcyBUYXZhcmVzCiBHdWlsbGVybW8gTMOzcGV6LUFuZ2xhZGEKIEFubmUgTG9yZAorQWxleCBMb3JkVGhvcnNlbgogVG9tIExvcmVkbwogSnVzdGluIExvdmUKIE5lZCBKYWNrc29uIExvdmVseQogUGV0ZXIgTG92ZXR0CiBDaGFsbWVyIExvd2UKIEphc29uIExvd2UKLU1hcnRpbiB2b24gTMO2d2lzCiBUb255IExvd25kcwogUmF5IExveXphZ2EKIEthbmctSGFvIChLZW5ueSkgTHUKIEx1a2FzIEx1ZWcKIExvcmVuIEx1a2UKIEZyZWRyaWsgTHVuZGgKK01pa2UgTHVuZHkKIFpob25neXVlIEx1bwogTWFyayBMdXR6CiBUYXJhcyBMeWFwdW4KQEAgLTExNDYsOSArMTE2MCwxMSBAQAogR2VvZmYgUGhpbGJyaWNrCiBHYXZyaWUgUGhpbGlwc29uCiBBZHJpYW4gUGhpbGxpcHMKK0R1c3R5IFBoaWxsaXBzCiBDaHJpc3RvcGhlciBKLiBQaG9lbml4CiBKYW1lcyBQaWNrZXJpbmcKIE5lYWxlIFBpY2tldHQKK1N0ZXZlIFBpZXJjeQogSmltIFN0LiBQaWVycmUKIERhbiBQaWVyc29uCiBNYXJ0aWpuIFBpZXRlcnMKQEAgLTEyMDAsNiArMTIxNiw3IEBACiBCYXlhcmQgUmFuZGVsCiBWYXJwdSBSYW50YWxhCiBCcm9kaWUgUmFvCitSw6ltaSBSYW1waW4KIFNlbmtvIFJhc2ljCiBBbnR0aSBSYXNpbmVuCiBOaWtvbGF1cyBSYXRoCkBAIC0xMjUwLDYgKzEyNjcsNyBAQAogS2V2aW4gUm9kZ2VycwogU2VhbiBSb2RtYW4KIEdpYW1wYW9sbyBSb2RvbGEKK01hdXJvIFMuIE0uIFJvZHJpZ3VlcwogRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCiBMdWlzIFJvamFzCkBAIC0xMjkzLDYgKzEzMTEsNyBAQAogTWF0dGhpZXUgUwogUGF0cmljayBTYWJpbgogU8OpYmFzdGllbiBTYWJsw6kKK0FtaXQgU2FoYQogU3VtYW4gU2FoYQogSGFqaW1lIFNhaXRvdQogR2VvcmdlIFNha2tpcwpAQCAtMTMyNiw2ICsxMzQ1LDcgQEAKIFBldGVyIFNjaG5laWRlci1LYW1wCiBBcnZpbiBTY2huZWxsCiBOb2ZhciBTY2huaWRlcgorRWQgU2Nob3V0ZW4KIFNjb3R0IFNjaHJhbQogUm9iaW4gU2NocmVpYmVyCiBDaGFkIEouIFNjaHJvZWRlcgpAQCAtMTQwMCw2ICsxNDIwLDcgQEAKIFJveSBTbWl0aAogUnlhbiBTbWl0aC1Sb2JlcnRzCiBSYWZhbCBTbW90cnp5aworSm9zaCBTbmlkZXIKIEVyaWMgU25vdwogRGlyayBTb2VkZQogTmlyIFNvZmZlcgpAQCAtMTQyNywxMSArMTQ0OCwxMyBAQAogTWFyZWsgU3RlcG5pb3dza2kKIEJhcnVjaCBTdGVyaW4KIENocmlzIFN0ZXJuCitFbGkgU3RldmVucwogQWxleCBTdGV3YXJ0CiBWaWN0b3IgU3Rpbm5lcgogUmljaGFyZCBTdG9ha2xleQogUGV0ZXIgU3RvZWhyCiBDYXNwZXIgU3RvZWwKK0RhbmllbCBTdG9rZXMKIE1pY2hhZWwgU3RvbmUKIFNlcmhpeSBTdG9yY2hha2EKIEtlbiBTdG94CkBAIC0xNDU3LDYgKzE0ODAsNyBAQAogUGlvdHIgU3pjemVwYW5pYWsKIEFtaXIgU3pla2VseQogTWFjaWVqIFN6dWxpaworSm9lbCBUYWRkZWkKIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzCiBIaWRlYWtpIFRha2FoYXNoaQogVGFrYXNlIEFyaWhpcm8KQEAgLTE0NjksOCArMTQ5MywxMCBAQAogQ2hyaXN0aWFuIFRhbnplcgogU3RldmVuIFRhc2NodWsKIEFteSBUYXlsb3IKK0p1bGlhbiBUYXlsb3IKIE1vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKK01hcnRpbiBUZWljaG1hbm4KIEd1c3Rhdm8gVGVtcGxlCiBNaWtoYWlsIFRlcmVraG92CiBWaWN0b3IgVGVycsOzbgpAQCAtMTY1Miw2ICsxNjc4LDcgQEAKIEFsYWtzaGVuZHJhIFlhZGF2CiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKK0NoaSBIc3VhbiBZZW4KIEphc29uIFllbwogRXVuZ0p1biBZaQogQm9iIFlvZGxvd3NraQpAQCAtMTY4MCw0ICsxNzA3LDMgQEAKIERvdWcgWm9uZ2tlcgogUGV0ZXIgw4VzdHJhbmQKIGV2aWx6ZXJvCi1DaGkgSHN1YW4gWWVuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggOWU2ZTBkZS4uMGI5MDMxOSAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwxMzMgKzIsMTE5IEBACiBQeXRob24gTmV3cwogKysrKysrKysrKysKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjMgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IFRCQQorKlJlbGVhc2UgZGF0ZTogWFhYWC1YWC1YWCoKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzI2OTIwOiBGaXggbm90IGdldHRpbmcgdGhlIGxvY2FsZSdzIGNoYXJzZXQgdXBvbiBpbml0aWFsaXppbmcgdGhlCisgIGludGVycHJldGVyLCBvbiBwbGF0Zm9ybXMgdGhhdCBkbyBub3QgaGF2ZSBsYW5naW5mby4KKwogLSBJc3N1ZSAjMjg2NDg6IEZpeGVkIGNyYXNoIGluIFB5X0RlY29kZUxvY2FsZSgpIGluIGRlYnVnIGJ1aWxkIG9uIE1hYyBPUyBYCiAgIHdoZW4gZGVjb2RlIGFzdHJhbCBjaGFyYWN0ZXJzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCiAKIC0gSXNzdWUgIzE5Mzk4OiBFeHRyYSBzbGFzaCBubyBsb25nZXIgYWRkZWQgdG8gc3lzLnBhdGggY29tcG9uZW50cyBpbiBjYXNlIG9mCiAgIGVtcHR5IGNvbXBpbGUtdGltZSBQWVRIT05QQVRIIGNvbXBvbmVudHMuCiAKLS0gSXNzdWUgIzI4NDI2OiBGaXhlZCBwb3RlbnRpYWwgY3Jhc2ggaW4gUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCgpIGluIGRlYnVnCi0gIGJ1aWxkLgorLSBJc3N1ZSAjMjg2NjU6ICBJbXByb3ZlIHNwZWVkIG9mIHRoZSBTVE9SRV9ERVJFRiBvcGNvZGUgYnkgNDAlLgogCi0tIElzc3VlICMyMzc4MjogRml4ZWQgcG9zc2libGUgbWVtb3J5IGxlYWsgaW4gX1B5VHJhY2ViYWNrX0FkZCgpIGFuZCBleGNlcHRpb24KLSAgbG9zcyBpbiBQeVRyYWNlQmFja19IZXJlKCkuCi0KLS0gSXNzdWUgIzI4Mzc5OiBBZGRlZCBzYW5pdHkgY2hlY2tzIGFuZCB0ZXN0cyBmb3IgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCkuCistIElzc3VlICMyODU4MzogUHlEaWN0X1NldERlZmF1bHQgZGlkbid0IGNvbWJpbmUgc3BsaXQgdGFibGUgd2hlbiBuZWVkZWQuCiAgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCi0tIElzc3VlICMyODM3NjogVGhlIHR5cGUgb2YgbG9uZyByYW5nZSBpdGVyYXRvciBpcyBub3cgcmVnaXN0ZXJlZCBhcyBJdGVyYXRvci4KLSAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCistIElzc3VlICMyNzI0MzogQ2hhbmdlIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgLT4gRGVwcmVjYXRpb25XYXJuaW5nLgorICBBcyBpdCB3YXMgYWdyZWVkIGluIHRoZSBpc3N1ZSwgX19haXRlcl9fIHJldHVybmluZyBhbiBhd2FpdGFibGUKKyAgc2hvdWxkIHJlc3VsdCBpbiBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGluIDMuNSBhbmQgaW4KKyAgRGVwcmVjYXRpb25XYXJuaW5nIGluIDMuNi4KIAotLSBJc3N1ZSAjMjgzNzY6IFRoZSBjb25zdHJ1Y3RvciBvZiByYW5nZV9pdGVyYXRvciBub3cgY2hlY2tzIHRoYXQgc3RlcCBpcyBub3QgMC4KLSAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCi0KLS0gSXNzdWUgIzI2OTA2OiBSZXNvbHZpbmcgc3BlY2lhbCBtZXRob2RzIG9mIHVuaW5pdGlhbGl6ZWQgdHlwZSBub3cgY2F1c2VzCi0gIGltcGxpY2l0IGluaXRpYWxpemF0aW9uIG9mIHRoZSB0eXBlIGluc3RlYWQgb2YgYSBmYWlsLgotCi0tIElzc3VlICMxODI4NzogUHlUeXBlX1JlYWR5KCkgbm93IGNoZWNrcyB0aGF0IHRwX25hbWUgaXMgbm90IE5VTEwuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IE5pa2xhcyBLb2VwLgotCi0tIElzc3VlICMyNDA5ODogRml4ZWQgcG9zc2libGUgY3Jhc2ggd2hlbiBBU1QgaXMgY2hhbmdlZCBpbiBwcm9jZXNzIG9mCi0gIGNvbXBpbGluZyBpdC4KLQotLSBJc3N1ZSAjMjgzNTA6IFN0cmluZyBjb25zdGFudHMgd2l0aCBudWxsIGNoYXJhY3RlciBubyBsb25nZXIgaW50ZXJuZWQuCi0KLS0gSXNzdWUgIzI2NjE3OiBGaXggY3Jhc2ggd2hlbiBHQyBydW5zIGR1cmluZyB3ZWFrcmVmIGNhbGxiYWNrcy4KLQotLSBJc3N1ZSAjMjc5NDI6IFN0cmluZyBjb25zdGFudHMgbm93IGludGVybmVkIHJlY3Vyc2l2ZWx5IGluIHR1cGxlcyBhbmQgZnJvemVuc2V0cy4KLQotLSBJc3N1ZSAjMjE1Nzg6IEZpeGVkIG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIEltcG9ydEVycm9yIGNhbGxlZCB3aXRoCi0gIGludmFsaWQga2V5d29yZCBhcmdzLgotCi0tIElzc3VlICMyODIwMzogRml4IGluY29ycmVjdCB0eXBlIGluIGVycm9yIG1lc3NhZ2UgZnJvbQotICBgYGNvbXBsZXgoMS4wLCB7MjozfSlgYC4gUGF0Y2ggYnkgU291bXlhIFNoYXJtYS4KLQotLSBJc3N1ZSAjMjc5NTU6IEZhbGxiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tIGRldmljZSB3aGVuIHRoZSBnZXRyYW5kb20oKQotICBzeXNjYWxsIGZhaWxzIHdpdGggRVBFUk0sIGZvciBleGFtcGxlIHdoZW4gYmxvY2tlZCBieSBTRUNDT01QLgotCi0tIElzc3VlICMyODEzMTogRml4IGEgcmVncmVzc2lvbiBpbiB6aXBpbXBvcnQncyBjb21waWxlX3NvdXJjZSgpLiAgemlwaW1wb3J0Ci0gIHNob3VsZCB1c2UgdGhlIHNhbWUgb3B0aW1pemF0aW9uIGxldmVsIGFzIHRoZSBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjMjUyMjE6IEZpeCBjb3JydXB0ZWQgcmVzdWx0IGZyb20gUHlMb25nX0Zyb21Mb25nKDApIHdoZW4KLSAgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggTlNNQUxMUE9TSU5UUyA9IDAuCi0KLS0gSXNzdWUgIzI1NzU4OiBQcmV2ZW50cyB6aXBpbXBvcnQgZnJvbSB1bm5lY2Vzc2FyaWx5IGVuY29kaW5nIGEgZmlsZW5hbWUKLSAgKHBhdGNoIGJ5IEVyeWsgU3VuKQotCi0tIElzc3VlICMyODE4OTogZGljdGl0ZW1zX2NvbnRhaW5zIG5vIGxvbmdlciBzd2FsbG93cyBjb21wYXJlIGVycm9ycy4KLSAgKFBhdGNoIGJ5IFhpYW5nIFpoYW5nKQotCi0tIElzc3VlICMyNzgxMjogUHJvcGVybHkgY2xlYXIgb3V0IGEgZ2VuZXJhdG9yJ3MgZnJhbWUncyBiYWNrcmVmZXJlbmNlIHRvIHRoZQotICBnZW5lcmF0b3IgdG8gcHJldmVudCBjcmFzaGVzIGluIGZyYW1lLmNsZWFyKCkuCi0KLS0gSXNzdWUgIzI3ODExOiBGaXggYSBjcmFzaCB3aGVuIGEgY29yb3V0aW5lIHRoYXQgaGFzIG5vdCBiZWVuIGF3YWl0ZWQgaXMKLSAgZmluYWxpemVkIHdpdGggd2FybmluZ3MtYXMtZXJyb3JzIGVuYWJsZWQuCi0KLS0gSXNzdWUgIzI3NTg3OiBGaXggYW5vdGhlciBpc3N1ZSBmb3VuZCBieSBQVlMtU3R1ZGlvOiBOdWxsIHBvaW50ZXIgY2hlY2sKLSAgYWZ0ZXIgdXNlIG9mICdkZWYnIGluIF9QeVN0YXRlX0FkZE1vZHVsZSgpLgotICBJbml0aWFsIHBhdGNoIGJ5IENocmlzdGlhbiBIZWltZXMuCi0KLS0gSXNzdWUgIzI2MDIwOiBzZXQgbGl0ZXJhbCBldmFsdWF0aW9uIG9yZGVyIGRpZCBub3QgbWF0Y2ggZG9jdW1lbnRlZCBiZWhhdmlvdXIuCi0KLS0gSXNzdWUgIzI3NzgyOiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGltcG9ydCBub3cgY29ycmVjdGx5IGFsbG93cyB0aGUKLSAgYGBtX21ldGhvZHNgYCBmaWVsZCB0byBiZSB1c2VkIHRvIGFkZCBtb2R1bGUgbGV2ZWwgZnVuY3Rpb25zIHRvIGluc3RhbmNlcwotICBvZiBub24tbW9kdWxlIHR5cGVzIHJldHVybmVkIGZyb20gYGBQeV9jcmVhdGVfbW9kYGAuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzkzNjogVGhlIHJvdW5kKCkgZnVuY3Rpb24gYWNjZXB0ZWQgYSBzZWNvbmQgTm9uZSBhcmd1bWVudAotICBmb3Igc29tZSB0eXBlcyBidXQgbm90IGZvciBvdGhlcnMuICBGaXhlZCB0aGUgaW5jb25zaXN0ZW5jeSBieQotICBhY2NlcHRpbmcgTm9uZSBmb3IgYWxsIG51bWVyaWMgdHlwZXMuCi0KLS0gSXNzdWUgIzI3NDg3OiBXYXJuIGlmIGEgc3VibW9kdWxlIGFyZ3VtZW50IHRvICJweXRob24gLW0iIG9yCi0gIHJ1bnB5LnJ1bl9tb2R1bGUoKSBpcyBmb3VuZCBpbiBzeXMubW9kdWxlcyBhZnRlciBwYXJlbnQgcGFja2FnZXMgYXJlCi0gIGltcG9ydGVkLCBidXQgYmVmb3JlIHRoZSBzdWJtb2R1bGUgaXMgZXhlY3V0ZWQuCi0KLS0gSXNzdWUgIzI3NTU4OiBGaXggYSBTeXN0ZW1FcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgInJhaXNlIiBzdGF0ZW1lbnQuCi0gIEluIGEgYnJhbmQgbmV3IHRocmVhZCwgcmFpc2UgYSBSdW50aW1lRXJyb3Igc2luY2UgdGhlcmUgaXMgbm8gYWN0aXZlCi0gIGV4Y2VwdGlvbiB0byByZXJhaXNlLiBQYXRjaCB3cml0dGVuIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzQxOTogU3RhbmRhcmQgX19pbXBvcnRfXygpIG5vIGxvbmdlciBsb29rIHVwICJfX2ltcG9ydF9fIiBpbiBnbG9iYWxzCi0gIG9yIGJ1aWx0aW5zIGZvciBpbXBvcnRpbmcgc3VibW9kdWxlcyBvciAiZnJvbSBpbXBvcnQiLiAgRml4ZWQgaGFuZGxpbmcgYW4KLSAgZXJyb3Igb2Ygbm9uLXN0cmluZyBwYWNrYWdlIG5hbWUuCi0KLS0gSXNzdWUgIzI3MDgzOiBSZXNwZWN0IHRoZSBQWVRIT05DQVNFT0sgZW52aXJvbm1lbnQgdmFyaWFibGUgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMjc1MTQ6IE1ha2UgaGF2aW5nIHRvbyBtYW55IHN0YXRpY2FsbHkgbmVzdGVkIGJsb2NrcyBhIFN5bnRheEVycm9yCi0gIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IuCi0KLS0gSXNzdWUgIzI3NDczOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJ5dGVzIGFuZCBieXRlYXJyYXkKLSAgY29uY2F0ZW5hdGlvbnMuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc1MDc6IEFkZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoIGJ5Ci0gIFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzU4MTogRG9uJ3QgcmVseSBvbiB3cmFwcGluZyBmb3Igb3ZlcmZsb3cgY2hlY2sgaW4KLSAgUHlTZXF1ZW5jZV9UdXBsZSgpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NDQzOiBfX2xlbmd0aF9oaW50X18oKSBvZiBieXRlYXJyYXkgaXRlcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYQotICBuZWdhdGl2ZSBpbnRlZ2VyIGZvciBhIHJlc2l6ZWQgYnl0ZWFycmF5LgotCi0tIElzc3VlICMyNzk0MjogRml4IG1lbW9yeSBsZWFrIGluIGNvZGVvYmplY3QuYworLSBJc3N1ZSAjMjYxODI6IEZpeCBhIHJlZmxlYWsgaW4gY29kZSB0aGF0IHJhaXNlcyBEZXByZWNhdGlvbldhcm5pbmcuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMjg0ODU6IEFsd2F5cyByYWlzZSBWYWx1ZUVycm9yIGZvciBuZWdhdGl2ZQotICBjb21waWxlYWxsLmNvbXBpbGVfZGlyKHdvcmtlcnM9Li4uKSBwYXJhbWV0ZXIsIGV2ZW4gd2hlbiBtdWx0aXRocmVhZGluZyBpcwotICB1bmF2YWlsYWJsZS4KKy0gSXNzdWUgIzE5NzE3OiBNYWtlcyBQYXRoLnJlc29sdmUoKSBzdWNjZWVkIG9uIHBhdGhzIHRoYXQgZG8gbm90IGV4aXN0LgorICBQYXRjaCBieSBWYWpyYXNreSBLb2sKKworLSBJc3N1ZSAjMjg1NjM6IEZpeGVkIHBvc3NpYmxlIERvUyBhbmQgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHdoZW4gaGFuZGxlCisgIHBsdXJhbCBmb3JtIHNlbGVjdGlvbnMgaW4gdGhlIGdldHRleHQgbW9kdWxlLiAgVGhlIGV4cHJlc3Npb24gcGFyc2VyIG5vdworICBzdXBwb3J0cyBleGFjdCBzeW50YXggc3VwcG9ydGVkIGJ5IEdOVSBnZXR0ZXh0LgogCiAtIElzc3VlICMyODM4NzogRml4ZWQgcG9zc2libGUgY3Jhc2ggaW4gX2lvLlRleHRJT1dyYXBwZXIgZGVhbGxvY2F0b3Igd2hlbgogICB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgaW52b2tlZCBpbiBvdGhlciB0aHJlYWQuICBCYXNlZCBvbiBwYXRjaCBieQogICBTZWJhc3RpYW4gQ3VmcmUuCiAKKy0gSXNzdWUgIzI4NjAwOiBPcHRpbWl6ZSBsb29wLmNhbGxfc29vbi4KKworLSBJc3N1ZSAjMjg2MTM6IEZpeCBnZXRfZXZlbnRfbG9vcCgpIHJldHVybiB0aGUgY3VycmVudCBsb29wIGlmCisgIGNhbGxlZCBmcm9tIGNvcm91dGluZXMvY2FsbGJhY2tzLgorCistIElzc3VlICMyODYzNDogRml4IGFzeW5jaW8uaXNmdXR1cmUoKSB0byBzdXBwb3J0IHVuaXR0ZXN0Lk1vY2suCisKKy0gSXNzdWUgIzI2MDgxOiBGaXggcmVmbGVhayBpbiBfYXN5bmNpby5GdXR1cmUuX19pdGVyX18oKS50aHJvdy4KKworLSBJc3N1ZSAjMjg2Mzk6IEZpeCBpbnNwZWN0LmlzYXdhaXRhYmxlIHRvIGFsd2F5cyByZXR1cm4gYm9vbAorICBQYXRjaCBieSBKdXN0aW4gTWF5ZmllbGQuCisKKy0gSXNzdWUgIzI4NjUyOiBNYWtlIGxvb3AgbWV0aG9kcyByZWplY3Qgc29ja2V0IGtpbmRzIHRoZXkgZG8gbm90IHN1cHBvcnQuCisKKy0gSXNzdWUgIzI4NjUzOiBGaXggYSByZWZsZWFrIGluIGZ1bmN0b29scy5scnVfY2FjaGUuCisKKy0gSXNzdWUgIzI4NzAzOiBGaXggYXN5bmNpby5pc2Nvcm91dGluZWZ1bmN0aW9uIHRvIGhhbmRsZSBNb2NrIG9iamVjdHMuCisKKy0gSXNzdWUgIzI4NzA0OiBGaXggY3JlYXRlX3VuaXhfc2VydmVyIHRvIHN1cHBvcnQgUGF0aC1saWtlIG9iamVjdHMgCisgIChQRVAgNTE5KS4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODUxMzogRG9jdW1lbnRlZCBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHppcGZpbGUuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyMzgzOTogVmFyaW91cyBjYWNoZXMgbm93IGFyZSBjbGVhcmVkIGJlZm9yZSBydW5uaW5nIGV2ZXJ5IHRlc3QgZmlsZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI4Njc2OiBQcmV2ZW50IG1pc3NpbmcgJ2dldGVudHJvcHknIGRlY2xhcmF0aW9uIHdhcm5pbmcgb24gbWFjT1MuCisgIFBhdGNoIGJ5IEdhcmV0aCBSZWVzLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGJldGEgMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMTAtMzEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyODEyODogRGVwcmVjYXRpb24gd2FybmluZyBmb3IgaW52YWxpZCBzdHIgYW5kIGJ5dGUgZXNjYXBlCisgIHNlcXVlbmNlcyBub3cgcHJpbnRzIGJldHRlciBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGUgZXJyb3IKKyAgb2NjdXJzLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthIGFuZCBFcmljIFNtaXRoLgorCistIElzc3VlICMyODUwOTogZGljdC51cGRhdGUoKSBubyBsb25nZXIgYWxsb2NhdGUgdW5uZWNlc3NhcnkgbGFyZ2UgbWVtb3J5LgorCistIElzc3VlICMyODQyNjogRml4ZWQgcG90ZW50aWFsIGNyYXNoIGluIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoKSBpbiBkZWJ1ZworICBidWlsZC4KKworLSBJc3N1ZSAjMjg1MTc6IEZpeGVkIG9mLWJ5LW9uZSBlcnJvciBpbiB0aGUgcGVlcGhvbGUgb3B0aW1pemVyIHRoYXQgY2F1c2VkCisgIGtlZXBpbmcgdW5yZWFjaGFibGUgY29kZS4KKworLSBJc3N1ZSAjMjgyMTQ6IEltcHJvdmVkIGV4Y2VwdGlvbiByZXBvcnRpbmcgZm9yIHByb2JsZW1hdGljIF9fc2V0X25hbWVfXworICBhdHRyaWJ1dGVzLgorCistIElzc3VlICMyMzc4MjogRml4ZWQgcG9zc2libGUgbWVtb3J5IGxlYWsgaW4gX1B5VHJhY2ViYWNrX0FkZCgpIGFuZCBleGNlcHRpb24KKyAgbG9zcyBpbiBQeVRyYWNlQmFja19IZXJlKCkuCisKKy0gSXNzdWUgIzI4NDcxOiBGaXggIlB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGNhbGxlZCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCIKKyAgY3Jhc2ggaW4gc29ja2V0LnNldGJsb2NraW5nLgorCitMaWJyYXJ5CistLS0tLS0tCisKIC0gSXNzdWUgIzI3NTE3OiBMWk1BIGNvbXByZXNzb3IgYW5kIGRlY29tcHJlc3NvciBubyBsb25nZXIgcmFpc2UgZXhjZXB0aW9ucyBpZgogICBnaXZlbiBlbXB0eSBkYXRhIHR3aWNlLiAgUGF0Y2ggYnkgQmVuamFtaW4gRm9nbGUuCiAKQEAgLTE0NSw2ICsxMzEsOSBAQAogICBieSByZXByZXNlbnRpbmcgdGhlIHNjYWxlIGFzIGZsb2F0IHZhbHVlIGludGVybmFsbHkgaW4gVGsuICB0a2ludGVyLkludFZhcgogICBub3cgd29ya3MgaWYgZmxvYXQgdmFsdWUgaXMgc2V0IHRvIHVuZGVybHlpbmcgVGsgdmFyaWFibGUuCiAKKy0gSXNzdWUgIzE4ODQ0OiBUaGUgdmFyaW91cyB3YXlzIG9mIHNwZWNpZnlpbmcgd2VpZ2h0cyBmb3IgcmFuZG9tLmNob2ljZXMoKQorICBub3cgcHJvZHVjZSB0aGUgc2FtZSByZXN1bHQgc2VxdWVuY2VzLgorCiAtIElzc3VlICMyODI1NTogY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkucHJtb250aCgpIG5vIGxvbmdlciBwcmludHMgYSBzcGFjZQogICBhdCB0aGUgc3RhcnQgb2YgbmV3IGxpbmUgYWZ0ZXIgcHJpbnRpbmcgYSBtb250aCdzIGNhbGVuZGFyLiAgUGF0Y2ggYnkKICAgWGlhbmcgWmhhbmcuCkBAIC0xNTQsMzAgKzE0MywxOTQgQEAKIAogLSBJc3N1ZSAjMjgzNTM6IG9zLmZ3YWxrKCkgbm8gbG9uZ2VyIGZhaWxzIG9uIGJyb2tlbiBsaW5rcy4KIAorLSBJc3N1ZSAjMjg0MzA6IEZpeCBpdGVyYXRvciBvZiBDIGltcGxlbWVudGVkIGFzeW5jaW8uRnV0dXJlIGRvZXNuJ3QgYWNjZXB0CisgIG5vbi1Ob25lIHZhbHVlIGlzIHBhc3NlZCB0byBpdC5zZW5kKHZhbCkuCisKKy0gSXNzdWUgIzI3MDI1OiBHZW5lcmF0ZWQgbmFtZXMgZm9yIFRraW50ZXIgd2lkZ2V0cyBub3cgc3RhcnQgYnkgdGhlICIhIiBwcmVmaXgKKyAgZm9yIHJlYWRhYmlsaXR5ICh3YXMgImAiKS4KKwogLSBJc3N1ZSAjMjU0NjQ6IEZpeGVkIEhMaXN0LmhlYWRlcl9leGlzdHMoKSBpbiB0a2ludGVyLnRpeCBtb2R1bGUgYnkgYWRkaW4KICAgYSB3b3JrYXJvdW5kIHRvIFRpeCBsaWJyYXJ5IGJ1Zy4KIAotLSBJc3N1ZSAjMjg0ODg6IHNodXRpbC5tYWtlX2FyY2hpdmUoKSBubyBsb25nZXIgYWRkIGVudHJ5ICIuLyIgdG8gWklQIGFyY2hpdmUuCistIElzc3VlICMyODQ4ODogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIG5vIGxvbmdlciBhZGRzIGVudHJ5ICIuLyIgdG8gWklQIGFyY2hpdmUuCisKKy0gSXNzdWUgIzI1OTUzOiByZS5zdWIoKSBub3cgcmFpc2VzIGFuIGVycm9yIGZvciBpbnZhbGlkIG51bWVyaWNhbCBncm91cAorICByZWZlcmVuY2UgaW4gcmVwbGFjZW1lbnQgdGVtcGxhdGUgZXZlbiBpZiB0aGUgcGF0dGVybiBpcyBub3QgZm91bmQgaW4KKyAgdGhlIHN0cmluZy4gIEVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIG5vdyBpbmNsdWRlcyB0aGUKKyAgZ3JvdXAgaW5kZXggYW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgcmVmZXJlbmNlLgorICBCYXNlZCBvbiBwYXRjaCBieSBTaWxlbnRHaG9zdC4KKworLSBJc3N1ZSAjMTgyMTk6IE9wdGltaXplIGNzdi5EaWN0V3JpdGVyIGZvciBsYXJnZSBudW1iZXIgb2YgY29sdW1ucy4KKyAgUGF0Y2ggYnkgTWFyaWF0dGEgV2lqYXlhLgorCistIElzc3VlICMyODQ0ODogRml4IEMgaW1wbGVtZW50ZWQgYXN5bmNpby5GdXR1cmUgZGlkbid0IHdvcmsgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjg0ODA6IEZpeCBlcnJvciBidWlsZGluZyBzb2NrZXQgbW9kdWxlIHdoZW4gbXVsdGl0aHJlYWRpbmcgaXMKKyAgZGlzYWJsZWQuCiAKIC0gSXNzdWUgIzI0NDUyOiBNYWtlIHdlYmJyb3dzZXIgc3VwcG9ydCBDaHJvbWUgb24gTWFjIE9TIFguCiAKIC0gSXNzdWUgIzIwNzY2OiBGaXggcmVmZXJlbmNlcyBsZWFrZWQgYnkgcGRiIGluIHRoZSBoYW5kbGluZyBvZiBTSUdJTlQKICAgaGFuZGxlcnMuCiAKKy0gSXNzdWUgIzI4NDkyOiBGaXggaG93IFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiBfYXN5bmNpby5GdXR1cmUuCisKKy0gSXNzdWUgIzI4NTAwOiBGaXggYXN5bmNpbyB0byBoYW5kbGUgYXN5bmMgZ2VucyBHQyBmcm9tIGFub3RoZXIgdGhyZWFkLgorCistIElzc3VlICMyNjkyMzogRml4IGFzeW5jaW8uR2F0aGVyIHRvIHJlZnVzZSBiZWluZyBjYW5jZWxsZWQgb25jZSBhbGwKKyAgY2hpbGRyZW4gYXJlIGRvbmUuCisgIFBhdGNoIGJ5IEpvaGFubmVzIEVia2UuCisKKy0gSXNzdWUgIzI2Nzk2OiBEb24ndCBjb25maWd1cmUgdGhlIG51bWJlciBvZiB3b3JrZXJzIGZvciBkZWZhdWx0CisgIHRocmVhZHBvb2wgZXhlY3V0b3IuCisgIEluaXRpYWwgcGF0Y2ggYnkgSGFucyBMYXdyZW56LgorCistIElzc3VlICMyODU0NDogSW1wbGVtZW50IGFzeW5jaW8uVGFzayBpbiBDLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI4NTIyOiBGaXhlcyBtaXNoYW5kbGVkIGJ1ZmZlciByZWFsbG9jYXRpb24gaW4gZ2V0cGF0aHAuYworCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjg0NDQ6IEZpeCBtaXNzaW5nIGV4dGVuc2lvbnMgbW9kdWxlcyB3aGVuIGNyb3NzIGNvbXBpbGluZy4KKworLSBJc3N1ZSAjMjgyMDg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkIGFuZCBPUyBYIGluc3RhbGxlcnMgdG8gdXNlIFNRTGl0ZSAzLjE0LjIuCisKKy0gSXNzdWUgIzI4MjQ4OiBVcGRhdGUgV2luZG93cyBidWlsZCBhbmQgT1MgWCBpbnN0YWxsZXJzIHRvIHVzZSBPcGVuU1NMIDEuMC4yai4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI2OTQ0OiBGaXggdGVzdF9wb3NpeCBmb3IgQW5kcm9pZCB3aGVyZSAnaWQgLUcnIGlzIGVudGlyZWx5IHdyb25nIG9yCisgIG1pc3NpbmcgdGhlIGVmZmVjdGl2ZSBnaWQuCisKKy0gSXNzdWUgIzI4NDA5OiByZWdydGVzdDogZml4IHRoZSBwYXJzZXIgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTEwLTEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjgxODM6IE9wdGltaXplIGFuZCBjbGVhbnVwIGRpY3QgaXRlcmF0aW9uLgorCistIElzc3VlICMyNjA4MTogQWRkZWQgQyBpbXBsZW1lbnRhdGlvbiBvZiBhc3luY2lvLkZ1dHVyZS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKKy0gSXNzdWUgIzI4Mzc5OiBBZGRlZCBzYW5pdHkgY2hlY2tzIGFuZCB0ZXN0cyBmb3IgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCkuCisgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyODM3NjogVGhlIHR5cGUgb2YgbG9uZyByYW5nZSBpdGVyYXRvciBpcyBub3cgcmVnaXN0ZXJlZCBhcyBJdGVyYXRvci4KKyAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy0gSXNzdWUgIzI4Mzc2OiBDcmVhdGluZyBpbnN0YW5jZXMgb2YgcmFuZ2VfaXRlcmF0b3IgYnkgY2FsbGluZyByYW5nZV9pdGVyYXRvcgorICB0eXBlIG5vdyBpcyBkZXByZWNhdGVkLiAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy0gSXNzdWUgIzI4Mzc2OiBUaGUgY29uc3RydWN0b3Igb2YgcmFuZ2VfaXRlcmF0b3Igbm93IGNoZWNrcyB0aGF0IHN0ZXAgaXMgbm90IDAuCisgIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgorCistIElzc3VlICMyNjkwNjogUmVzb2x2aW5nIHNwZWNpYWwgbWV0aG9kcyBvZiB1bmluaXRpYWxpemVkIHR5cGUgbm93IGNhdXNlcworICBpbXBsaWNpdCBpbml0aWFsaXphdGlvbiBvZiB0aGUgdHlwZSBpbnN0ZWFkIG9mIGEgZmFpbC4KKworLSBJc3N1ZSAjMTgyODc6IFB5VHlwZV9SZWFkeSgpIG5vdyBjaGVja3MgdGhhdCB0cF9uYW1lIGlzIG5vdCBOVUxMLgorICBPcmlnaW5hbCBwYXRjaCBieSBOaWtsYXMgS29lcC4KKworLSBJc3N1ZSAjMjQwOTg6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIHdoZW4gQVNUIGlzIGNoYW5nZWQgaW4gcHJvY2VzcyBvZgorICBjb21waWxpbmcgaXQuCisKKy0gSXNzdWUgIzI4MjAxOiBEaWN0IHJlZHVjZXMgcG9zc2liaWxpdHkgb2YgMm5kIGNvbmZsaWN0IGluIGhhc2ggdGFibGUgd2hlbgorICBoYXNoZXMgaGF2ZSBzYW1lIGxvd2VyIGJpdHMuCisKKy0gSXNzdWUgIzI4MzUwOiBTdHJpbmcgY29uc3RhbnRzIHdpdGggbnVsbCBjaGFyYWN0ZXIgbm8gbG9uZ2VyIGludGVybmVkLgorCistIElzc3VlICMyNjYxNzogRml4IGNyYXNoIHdoZW4gR0MgcnVucyBkdXJpbmcgd2Vha3JlZiBjYWxsYmFja3MuCisKKy0gSXNzdWUgIzI3OTQyOiBTdHJpbmcgY29uc3RhbnRzIG5vdyBpbnRlcm5lZCByZWN1cnNpdmVseSBpbiB0dXBsZXMgYW5kIGZyb3plbnNldHMuCisKKy0gSXNzdWUgIzIxNTc4OiBGaXhlZCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBJbXBvcnRFcnJvciBjYWxsZWQgd2l0aAorICBpbnZhbGlkIGtleXdvcmQgYXJncy4KKworLSBJc3N1ZSAjMjgyMDM6IEZpeCBpbmNvcnJlY3QgdHlwZSBpbiBjb21wbGV4KDEuMCwgezI6M30pIGVycm9yIG1lc3NhZ2UuCisgIFBhdGNoIGJ5IFNvdW15YSBTaGFybWEuCisKKy0gSXNzdWUgIzI4MDg2OiBTaW5nbGUgdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQgb2YgdHVwbGUgc3VidHlwZSB3YXMgcGFzc2VkCisgIHVuc2NhdGhlZCB0byB0aGUgQy1kZWZpbmVkIGZ1bmN0aW9uLiAgTm93IGl0IGlzIGNvbnZlcnRlZCB0byBleGFjdCB0dXBsZS4KKworLSBJc3N1ZSAjMjgyMTQ6IE5vdyBfX3NldF9uYW1lX18gaXMgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBpbnN0ZWFkIG9mIHRoZQorICBpbnN0YW5jZS4KKworLSBJc3N1ZSAjMjc5NTU6IEZhbGxiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tIGRldmljZSB3aGVuIHRoZSBnZXRyYW5kb20oKQorICBzeXNjYWxsIGZhaWxzIHdpdGggRVBFUk0sIGZvciBleGFtcGxlIHdoZW4gYmxvY2tlZCBieSBTRUNDT01QLgorCistIElzc3VlICMyODE5MjogRG9uJ3QgaW1wb3J0IHJlYWRsaW5lIGluIGlzb2xhdGVkIG1vZGUuCisKKy0gVXBncmFkZSBpbnRlcm5hbCB1bmljb2RlIGRhdGFiYXNlcyB0byBVbmljb2RlIHZlcnNpb24gOS4wLjAuCisKKy0gSXNzdWUgIzI4MTMxOiBGaXggYSByZWdyZXNzaW9uIGluIHppcGltcG9ydCdzIGNvbXBpbGVfc291cmNlKCkuICB6aXBpbXBvcnQKKyAgc2hvdWxkIHVzZSB0aGUgc2FtZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgdGhlIGludGVycHJldGVyLgorCistIElzc3VlICMyODEyNjogUmVwbGFjZSBQeV9NRU1DUFkgd2l0aCBtZW1jcHkoKS4gVmlzdWFsIFN0dWRpbyBjYW4gcHJvcGVybHkKKyAgb3B0aW1pemUgbWVtY3B5KCkuCisKKy0gSXNzdWUgIzI4MTIwOiBGaXggZGljdC5wb3AoKSBmb3Igc3BsaXR0ZWQgZGljdGlvbmFyeSB3aGVuIHRyeWluZyB0byByZW1vdmUgYQorICAicGVuZGluZyBrZXkiIChOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlKS4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2MTgyOiBSYWlzZSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhc3luYyBhbmQgYXdhaXQga2V5d29yZHMgYXJlCisgIHVzZWQgYXMgdmFyaWFibGUvYXR0cmlidXRlL2NsYXNzL2Z1bmN0aW9uIG5hbWUuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjc5OTg6IEZpeGVkIGJ5dGVzIHBhdGggc3VwcG9ydCBpbiBvcy5zY2FuZGlyKCkgb24gV2luZG93cy4KKyAgUGF0Y2ggYnkgRXJ5ayBTdW4uCisKKy0gSXNzdWUgIzI4MzE3OiBUaGUgZGlzYXNzZW1ibGVyIG5vdyBkZWNvZGVzIEZPUk1BVF9WQUxVRSBhcmd1bWVudC4KKwogLSBJc3N1ZSAjMjYyOTM6IEZpeGVkIHdyaXRpbmcgWklQIGZpbGVzIHRoYXQgc3RhcnRzIG5vdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUKICAgZmlsZS4gIE9mZnNldHMgaW4gWklQIGZpbGUgbm93IGFyZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUgaW4KICAgY29uZm9ybWluZyB0byB0aGUgc3BlY2lmaWNhdGlvbi4KIAorLSBJc3N1ZSAjMjgzODA6IHVuaXR0ZXN0Lm1vY2sgTW9jayBhdXRvc3BlYyBmdW5jdGlvbnMgbm93IHByb3Blcmx5IHN1cHBvcnQKKyAgYXNzZXJ0X2NhbGxlZCwgYXNzZXJ0X25vdF9jYWxsZWQsIGFuZCBhc3NlcnRfY2FsbGVkX29uY2UuCisKKy0gSXNzdWUgIzI3MTgxIHJlbW92ZSBzdGF0aXN0aWNzLmdlb21ldHJpY19tZWFuIGFuZCBkZWZlciB1bnRpbCAzLjcuCisKKy0gSXNzdWUgIzI4MjI5OiBsem1hIG1vZHVsZSBub3cgc3VwcG9ydHMgcGF0aGxpYi4KKwogLSBJc3N1ZSAjMjgzMjE6IEZpeGVkIHdyaXRpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzIHdpdGggYmluYXJ5IGZvcm1hdCBpbiBwbGlzdGxpYi4KIAorLSBJc3N1ZSAjMjgyMjU6IGJ6MiBtb2R1bGUgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBJbml0aWFsIHBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KKworLSBJc3N1ZSAjMjgyMjc6IGd6aXAgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBQYXRjaCBieSBFdGhhbiBGdXJtYW4uCisKKy0gSXNzdWUgIzI3MzU4OiBPcHRpbWl6ZWQgbWVyZ2luZyB2YXIta2V5d29yZCBhcmd1bWVudHMgYW5kIGltcHJvdmVkIGVycm9yCisgIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLW1hcHBpbmcgYXMgYSB2YXIta2V5d29yZCBhcmd1bWVudC4KKworLSBJc3N1ZSAjMjgyNTc6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLWl0ZXJhYmxlIGFzCisgIGEgdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQuICBBZGRlZCBvcGNvZGUgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTC4KKwogLSBJc3N1ZSAjMjgzMjI6IEZpeGVkIHBvc3NpYmxlIGNyYXNoZXMgd2hlbiB1bnBpY2tsZSBpdGVydG9vbHMgb2JqZWN0cyBmcm9tCiAgIGluY29ycmVjdCBwaWNrbGUgZGF0YS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvaG4gTGVpdGNoLgogCi0tIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCi0gIHVzYWdlIHBhdHRlcm5zLgorLSBJc3N1ZSAjMjgyMjg6IGltZ2hkciBub3cgc3VwcG9ydHMgcGF0aGxpYi4KIAotLSBJc3N1ZSAjMTcwMzE3ODogRml4IHRoZSBhYmlsaXR5IHRvIHBhc3MgdGhlIC0tbGluay1vYmplY3RzIG9wdGlvbiB0byB0aGUKLSAgZGlzdHV0aWxzIGJ1aWxkX2V4dCBjb21tYW5kLgorLSBJc3N1ZSAjMjgyMjY6IGNvbXBpbGVhbGwgbm93IHN1cHBvcnRzIHBhdGhsaWIuCisKKy0gSXNzdWUgIzI4MzE0OiBGaXggZnVuY3Rpb24gZGVjbGFyYXRpb24gKEMgZmxhZ3MpIGZvciB0aGUgZ2V0aXRlcmF0b3IoKSBtZXRob2QKKyAgb2YgeG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnQuCisKKy0gSXNzdWUgIzI4MTQ4OiBTdG9wIHVzaW5nIGxvY2FsdGltZSgpIGFuZCBnbXRpbWUoKSBpbiB0aGUgdGltZQorICBtb2R1bGUuCisKKyAgSW50cm9kdWNlZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBfUHlUaW1lX2xvY2FsdGltZSBBUEkgdGhhdCBpcworICBzaW1pbGFyIHRvIFBPU0lYIGxvY2FsdGltZV9yLCBidXQgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBQYXRjaAorICBieSBFZCBTY2hvdXRlbi4KIAogLSBJc3N1ZSAjMjgyNTM6IEZpeGVkIGNhbGVuZGFyIGZ1bmN0aW9ucyBmb3IgZXh0cmVtZSBtb250aHM6IDAwMDEtMDEKICAgYW5kIDk5OTktMTIuCkBAIC0xOTMsMTAgKzM0NiwxNSBAQAogLSBJc3N1ZSAjMjc4OTc6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkKICAgaWYgcGFzcyBpbnZhbGlkIHN0cmluZy1saWtlIG9iamVjdCBhcyBhIG5hbWUuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAorLSBJc3N1ZSAjMTg4NDQ6IHJhbmRvbS5jaG9pY2VzKCkgbm93IGhhcyBrIGFzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIGNvbW1vbiBjYXNlcyBhbmQgdGhlIGNvbWUgaW50byBsaW5lCisgIHdpdGggdGhlIHNpZ25hdHVyZSB1c2VkIGluIG90aGVyIGxhbmd1YWdlcy4KKwogLSBJc3N1ZSAjMTg4OTM6IEZpeCBpbnZhbGlkIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBMaWIvY3R5cGVzL21hY2hvbGliL2R5bGQucHkuCiAgIFBhdGNoIGJ5IE1hZGlzb24gTWF5LgogCiAtIElzc3VlICMyNzYxMTogRml4ZWQgc3VwcG9ydCBvZiBkZWZhdWx0IHJvb3Qgd2luZG93IGluIHRoZSB0a2ludGVyLnRpeCBtb2R1bGUuCisgIEFkZGVkIHRoZSBtYXN0ZXIgcGFyYW1ldGVyIGluIHRoZSBEaXNwbGF5U3R5bGUgY29uc3RydWN0b3IuCiAKIC0gSXNzdWUgIzI3MzQ4OiBJbiB0aGUgdHJhY2ViYWNrIG1vZHVsZSwgcmVzdG9yZSB0aGUgZm9ybWF0dGluZyBvZiBleGNlcHRpb24KICAgbWVzc2FnZXMgbGlrZSAiRXhjZXB0aW9uOiBOb25lIi4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4KQEAgLTIwNCw2ICszNjIsMTUgQEAKIAogLSBJc3N1ZSAjMjU2NTE6IEFsbG93IGZhbHN5IHZhbHVlcyB0byBiZSB1c2VkIGZvciBtc2cgcGFyYW1ldGVyIG9mIHN1YlRlc3QoKS4KIAorLSBJc3N1ZSAjMjc3Nzg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIG9zLmdldHJhbmRvbSgpIHdoZW4gdGhlIGdldHJhbmRvbSgpIGlzCisgIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCBhIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhIFB5dGhvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI4MjAwOiBGaXggbWVtb3J5IGxlYWsgb24gV2luZG93cyBpbiB0aGUgb3MgbW9kdWxlIChmaXgKKyAgcGF0aF9jb252ZXJ0ZXIoKSBmdW5jdGlvbikuCisKKy0gSXNzdWUgIzI1NDAwOiBSb2JvdEZpbGVQYXJzZXIgbm93IGNvcnJlY3RseSByZXR1cm5zIGRlZmF1bHQgdmFsdWVzIGZvcgorICBjcmF3bF9kZWxheSBhbmQgcmVxdWVzdF9yYXRlLiAgSW5pdGlhbCBwYXRjaCBieSBQZXRlciBXaXJ0ei4KKwogLSBJc3N1ZSAjMjc5MzI6IFByZXZlbnQgbWVtb3J5IGxlYWsgaW4gd2luMzJfdmVyKCkuCiAKIC0gRml4IFVuYm91bmRMb2NhbEVycm9yIGluIHNvY2tldC5fc2VuZGZpbGVfdXNlX3NlbmRmaWxlLgpAQCAtMjExLDYgKzM3OCwxMCBAQAogLSBJc3N1ZSAjMjgwNzU6IENoZWNrIGZvciBFUlJPUl9BQ0NFU1NfREVOSUVEIGluIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YKICAgb3Muc3RhdCgpLiAgUGF0Y2ggYnkgRXJ5ayBTdW4uCiAKKy0gSXNzdWUgIzIyNDkzOiBXYXJuaW5nIG1lc3NhZ2UgZW1pdHRlZCBieSB1c2luZyBpbmxpbmUgZmxhZ3MgaW4gdGhlIG1pZGRsZSBvZgorICByZWd1bGFyIGV4cHJlc3Npb24gbm93IGNvbnRhaW5zIGEgKHRydW5jYXRlZCkgcmVnZXggcGF0dGVybi4KKyAgUGF0Y2ggYnkgVGltIEdyYWhhbS4KKwogLSBJc3N1ZSAjMjUyNzA6IFByZXZlbnQgY29kZWNzLmVzY2FwZV9lbmNvZGUoKSBmcm9tIHJhaXNpbmcgU3lzdGVtRXJyb3Igd2hlbgogICBhbiBlbXB0eSBieXRlc3RyaW5nIGlzIHBhc3NlZC4KIApAQCAtMjE5LDIwICszOTAsMzE3IEBACiAtIElzc3VlICMyNTg5NTogRW5hYmxlIFdlYlNvY2tldCBVUkwgc2NoZW1lcyBpbiB1cmxsaWIucGFyc2UudXJsam9pbi4KICAgUGF0Y2ggYnkgR2VyZ2VseSBJbXJlaCBhbmQgTWFya3VzIEhvbHRlcm1hbm4uCiAKKy0gSXNzdWUgIzI4MTE0OiBGaXggYSBjcmFzaCBpbiBwYXJzZV9lbnZsaXN0KCkgd2hlbiBlbnYgY29udGFpbnMgYnl0ZSBzdHJpbmdzLgorICBQYXRjaCBieSBFcnlrIFN1bi4KKwogLSBJc3N1ZSAjMjc1OTk6IEZpeGVkIGJ1ZmZlciBvdmVycnVuIGluIGJpbmFzY2lpLmIyYV9xcCgpIGFuZCBiaW5hc2NpaS5hMmJfcXAoKS4KIAotLSBJc3N1ZSAjMTkwMDM6bSBlbWFpbC5nZW5lcmF0b3Igbm93IHJlcGxhY2VzIG9ubHkgXHIgYW5kL29yIFxuIGxpbmUKLSAgZW5kaW5ncywgcGVyIHRoZSBSRkMsIGluc3RlYWQgb2YgYWxsIHVuaWNvZGUgbGluZSBlbmRpbmdzLgorLSBJc3N1ZSAjMjc5MDY6IEZpeCBzb2NrZXQgYWNjZXB0IGV4aGF1c3Rpb24gZHVyaW5nIGhpZ2ggVENQIHRyYWZmaWMuCisgIFBhdGNoIGJ5IEtldmluIENvbndheS4KKworLSBJc3N1ZSAjMjgxNzQ6IEhhbmRsZSB3aGVuIFNPX1JFVVNFUE9SVCBpc24ndCBwcm9wZXJseSBzdXBwb3J0ZWQuCisgIFBhdGNoIGJ5IFNldGggTWljaGFlbCBMYXJzb24uCisKKy0gSXNzdWUgIzI2NjU0OiBJbnNwZWN0IGZ1bmN0b29scy5wYXJ0aWFsIGluIGFzeW5jaW8uSGFuZGxlLl9fcmVwcl9fLgorICBQYXRjaCBieSBpY2Vib3kuCisKKy0gSXNzdWUgIzI2OTA5OiBGaXggc2xvdyBwaXBlcyBJTyBpbiBhc3luY2lvLgorICBQYXRjaCBieSBJTkFEQSBOYW9raS4KKworLSBJc3N1ZSAjMjgxNzY6IEZpeCBjYWxsYmFja3MgcmFjZSBpbiBhc3luY2lvLlNlbGVjdG9yTG9vcC5zb2NrX2Nvbm5lY3QuCisKKy0gSXNzdWUgIzI3NzU5OiBGaXggc2VsZWN0b3JzIGluY29ycmVjdGx5IHJldGFpbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCisgIFBhdGNoIGJ5IE1hcmsgV2lsbGlhbXMuCisKKy0gSXNzdWUgIzI4MzY4OiBSZWZ1c2UgbW9uaXRvcmluZyBwcm9jZXNzZXMgaWYgdGhlIGNoaWxkIHdhdGNoZXIgaGFzIG5vCisgIGxvb3AgYXR0YWNoZWQuCisgIFBhdGNoIGJ5IFZpbmNlbnQgTWljaGVsLgorCistIElzc3VlICMyODM2OTogUmFpc2UgUnVudGltZUVycm9yIHdoZW4gdHJhbnNwb3J0J3MgRkQgaXMgdXNlZCB3aXRoCisgIGFkZF9yZWFkZXIsIGFkZF93cml0ZXIsIGV0Yy4KKworLSBJc3N1ZSAjMjgzNzA6IFNwZWVkdXAgYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkuCisgIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KKworLSBJc3N1ZSAjMjgzNzE6IERlcHJlY2F0ZSBwYXNzaW5nIGFzeW5jaW8uSGFuZGxlcyB0byBydW5faW5fZXhlY3V0b3IuCisKKy0gSXNzdWUgIzI4MzcyOiBGaXggYXN5bmNpbyB0byBzdXBwb3J0IGZvcm1hdHRpbmcgb2Ygbm9uLXB5dGhvbiBjb3JvdXRpbmVzLgorCistIElzc3VlICMyODM5OTogUmVtb3ZlIFVOSVggc29ja2V0IGZyb20gRlMgYmVmb3JlIGJpbmRpbmcuCisgIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KKworLSBJc3N1ZSAjMjc5NzI6IFByb2hpYml0IFRhc2tzIHRvIGF3YWl0IG9uIHRoZW1zZWx2ZXMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjg0MDI6IEFkZHMgc2lnbmVkIGNhdGFsb2cgZmlsZXMgZm9yIHN0ZGxpYiBvbiBXaW5kb3dzLgorCistIElzc3VlICMyODMzMzogRW5hYmxlcyBVbmljb2RlIGZvciBwczEvcHMyIGFuZCBpbnB1dCgpIHByb21wdHMuIChQYXRjaCBieQorICBFcnlrIFN1bikKKworLSBJc3N1ZSAjMjgyNTE6IEltcHJvdmVtZW50cyB0byBoZWxwIG1hbnVhbHMgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjgxMTA6IGxhdW5jaGVyLm1zaSBoYXMgZGlmZmVyZW50IHByb2R1Y3QgY29kZXMgYmV0d2VlbiAzMi1iaXQgYW5kCisgIDY0LWJpdAorCistIElzc3VlICMyODE2MTogT3BlbmluZyBDT04gZm9yIHdyaXRlIGFjY2VzcyBmYWlscworCistIElzc3VlICMyODE2MjogV2luZG93c0NvbnNvbGVJTyByZWFkYWxsKCkgZmFpbHMgaWYgZmlyc3QgbGluZSBzdGFydHMgd2l0aAorICBDdHJsK1oKKworLSBJc3N1ZSAjMjgxNjM6IFdpbmRvd3NDb25zb2xlSU8gZmlsZW5vKCkgcGFzc2VzIHdyb25nIGZsYWdzIHRvCisgIF9vcGVuX29zZmhhbmRsZQorCistIElzc3VlICMyODE2NDogX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZSBmYWlscyBmb3IgdmFyaW91cyBwYXRocworCistIElzc3VlICMyODEzNzogUmVuYW1lcyBXaW5kb3dzIHBhdGggZmlsZSB0byAuX3B0aAorCistIElzc3VlICMyODEzODogV2luZG93cyAuX3B0aCBmaWxlIHNob3VsZCBhbGxvdyBpbXBvcnQgc2l0ZQorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjg0MjY6IERlcHJlY2F0ZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KCksCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoKSwgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoKSBhbmQKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoKS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI4MjU4OiBGaXhlZCBidWlsZCB3aXRoIEVzdG9uaWFuIGxvY2FsZSAocHl0aG9uLWNvbmZpZyBhbmQgZGlzdGNsZWFuCisgIHRhcmdldHMgaW4gTWFrZWZpbGUpLiAgUGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCisKKy0gSXNzdWUgIzI2NjYxOiBzZXR1cC5weSBub3cgZGV0ZWN0cyBzeXN0ZW0gbGliZmZpIHdpdGggbXVsdGlhcmNoIHdyYXBwZXIuCisKKy0gSXNzdWUgIzE1ODE5OiBSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgc2VhcmNoIGRpcmVjdG9yeSBvcHRpb24gZm9yIGJ1aWxkaW5nCisgIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjgyMTc6IEFkZHMgX3Rlc3Rjb25zb2xlIG1vZHVsZSB0byB0ZXN0IGNvbnNvbGUgaW5wdXQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0wOS0xMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIzNzIyOiBUaGUgX19jbGFzc19fIGNlbGwgdXNlZCBieSB6ZXJvLWFyZ3VtZW50IHN1cGVyKCkgaXMgbm93CisgIGluaXRpYWxpemVkIGZyb20gdHlwZS5fX25ld19fIHJhdGhlciB0aGFuIF9fYnVpbGRfY2xhc3NfXywgc28gY2xhc3MgbWV0aG9kcworICByZWx5aW5nIG9uIHRoYXQgd2lsbCBub3cgd29yayBjb3JyZWN0bHkgd2hlbiBjYWxsZWQgZnJvbSBtZXRhY2xhc3MgbWV0aG9kcworICBkdXJpbmcgY2xhc3MgY3JlYXRpb24uIFBhdGNoIGJ5IE1hcnRpbiBUZWljaG1hbm4uCisKKy0gSXNzdWUgIzI1MjIxOiBGaXggY29ycnVwdGVkIHJlc3VsdCBmcm9tIFB5TG9uZ19Gcm9tTG9uZygwKSB3aGVuIFB5dGhvbgorICBpcyBjb21waWxlZCB3aXRoIE5TTUFMTFBPU0lOVFMgPSAwLgorCistIElzc3VlICMyNzA4MDogSW1wbGVtZW50IGZvcm1hdHRpbmcgc3VwcG9ydCBmb3IgUEVQIDUxNS4gIEluaXRpYWwgcGF0Y2gKKyAgYnkgQ2hyaXMgQW5nZWxpY28uCisKKy0gSXNzdWUgIzI3MTk5OiBJbiB0YXJmaWxlLCBleHBvc2UgY29weWZpbGVvYmogYnVmc2l6ZSB0byBpbXByb3ZlIHRocm91Z2hwdXQuCisgIFBhdGNoIGJ5IEphc29uIEZyaWVkLgorCistIElzc3VlICMyNzk0ODogSW4gZi1zdHJpbmdzLCBvbmx5IGFsbG93IGJhY2tzbGFzaGVzIGluc2lkZSB0aGUgYnJhY2VzCisgICh3aGVyZSB0aGUgZXhwcmVzc2lvbnMgYXJlKS4gIFRoaXMgaXMgYSBicmVha2luZyBjaGFuZ2UgZnJvbSB0aGUgMy42CisgIGFscGhhIHJlbGVhc2VzLCB3aGVyZSBiYWNrc2xhc2hlcyBhcmUgYWxsb3dlZCBhbnl3aGVyZSBpbiBhbgorICBmLXN0cmluZy4gIEFsc28sIHJlcXVpcmUgdGhhdCBleHByZXNzaW9ucyBpbnNpZGUgZi1zdHJpbmdzIGJlCisgIGVuY2xvc2VkIHdpdGhpbiBsaXRlcmFsIGJyYWNlcywgYW5kIG5vdCBlc2NhcGVzIGxpa2UKKyAgZidceDdiImhpIlx4N2QnLgorCistIElzc3VlICMyODA0NjogUmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzIGZyb20gc3lzLnBhdGguCisKKy0gSXNzdWUgIzI4MDcxOiBBZGQgZWFybHktb3V0IGZvciBkaWZmZXJlbmNpbmcgZnJvbSBhbiBlbXB0eSBzZXQuCisKKy0gSXNzdWUgIzI1NzU4OiBQcmV2ZW50cyB6aXBpbXBvcnQgZnJvbSB1bm5lY2Vzc2FyaWx5IGVuY29kaW5nIGEgZmlsZW5hbWUKKyAgKHBhdGNoIGJ5IEVyeWsgU3VuKQorCistIElzc3VlICMyNTg1NjogVGhlIF9fbW9kdWxlX18gYXR0cmlidXRlIG9mIGV4dGVuc2lvbiBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKKyAgbm93IGlzIGludGVybmVkLiBUaGlzIGxlYWRzIHRvIG1vcmUgY29tcGFjdCBwaWNrbGUgZGF0YSB3aXRoIHByb3RvY29sIDQuCisKKy0gSXNzdWUgIzI3MjEzOiBSZXdvcmsgQ0FMTF9GVU5DVElPTiogb3Bjb2RlcyB0byBwcm9kdWNlIHNob3J0ZXIgYW5kIG1vcmUKKyAgZWZmaWNpZW50IGJ5dGVjb2RlLiBQYXRjaCBieSBEZW11ciBSdW1lZCwgZGVzaWduIGJ5IFNlcmhpeSBTdG9yY2hha2EsCisgIHJldmlld2VkIGJ5IFNlcmhpeSBTdG9yY2hha2EgYW5kIFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMyNjMzMTogSW1wbGVtZW50IHRva2VuaXppbmcgc3VwcG9ydCBmb3IgUEVQIDUxNS4gUGF0Y2ggYnkgR2VvcmcgQnJhbmRsLgorCistIElzc3VlICMyNzk5OTogTWFrZSAiZ2xvYmFsIGFmdGVyIHVzZSIgYSBTeW50YXhFcnJvciwgYW5kIGRpdHRvIGZvciBub25sb2NhbC4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMyODAwMzogSW1wbGVtZW50IFBFUCA1MjUgLS0gQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMuCisKKy0gSXNzdWUgIzI3OTg1OiBJbXBsZW1lbnQgUEVQIDUyNiAtLSBTeW50YXggZm9yIFZhcmlhYmxlIEFubm90YXRpb25zLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWkuCisKKy0gSXNzdWUgIzI2MDU4OiBBZGQgYSBuZXcgcHJpdmF0ZSB2ZXJzaW9uIHRvIHRoZSBidWlsdGluIGRpY3QgdHlwZSwgaW5jcmVtZW50ZWQKKyAgYXQgZWFjaCBkaWN0aW9uYXJ5IGNyZWF0aW9uIGFuZCBhdCBlYWNoIGRpY3Rpb25hcnkgY2hhbmdlLiBJbXBsZW1lbnRhdGlvbiBvZgorICB0aGUgUEVQIDUwOS4KKworLSBJc3N1ZSAjMjczNjQ6IEEgYmFja3NsYXNoLWNoYXJhY3RlciBwYWlyIHRoYXQgaXMgbm90IGEgdmFsaWQgZXNjYXBlIHNlcXVlbmNlCisgIG5vdyBnZW5lcmF0ZXMgYSBEZXByZWNhdGlvbldhcm5pbmcuICBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzM1MDogYGRpY3RgIGltcGxlbWVudGF0aW9uIGlzIGNoYW5nZWQgbGlrZSBQeVB5LiBJdCBpcyBtb3JlIGNvbXBhY3QKKyAgYW5kIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIuCisgIChDb25jZXB0IGRldmVsb3BlZCBieSBSYXltb25kIEhldHRpbmdlciBhbmQgcGF0Y2ggYnkgSW5hZGEgTmFva2kuKQorCistIElzc3VlICMyNzkxMTogUmVtb3ZlIHVubmVjZXNzYXJ5IGVycm9yIGNoZWNrcyBpbgorICBgYGV4ZWNfYnVpbHRpbl9vcl9keW5hbWljKClgYC4KKworLSBJc3N1ZSAjMjcwNzg6IEFkZGVkIEJVSUxEX1NUUklORyBvcGNvZGUuICBPcHRpbWl6ZWQgZi1zdHJpbmdzIGV2YWx1YXRpb24uCisKKy0gSXNzdWUgIzE3ODg0OiBQeXRob24gbm93IHJlcXVpcmVzIHN5c3RlbXMgd2l0aCBpbnR0eXBlcy5oIGFuZCBzdGRpbnQuaAorCistIElzc3VlICMyNzk2MTogUmVxdWlyZSBwbGF0Zm9ybXMgdG8gc3VwcG9ydCBgYGxvbmcgbG9uZ2BgLiBQeXRob24gaGFzbid0CisgIGNvbXBpbGVkIHdpdGhvdXQgYGBsb25nIGxvbmdgYCBmb3IgeWVhcnMsIHNvIHRoaXMgaXMgYmFzaWNhbGx5IGEgZm9ybWFsaXR5LgorCistIElzc3VlICMyNzM1NTogUmVtb3ZlZCBzdXBwb3J0IGZvciBXaW5kb3dzIENFLiAgSXQgd2FzIG5ldmVyIGZpbmlzaGVkLAorICBhbmQgV2luZG93cyBDRSBpcyBubyBsb25nZXIgYSByZWxldmFudCBwbGF0Zm9ybSBmb3IgUHl0aG9uLgorCistIEltcGxlbWVudCBQRVAgNTIzLgorCistIElzc3VlICMyNzg3MDogQSBsZWZ0IHNoaWZ0IG9mIHplcm8gYnkgYSBsYXJnZSBpbnRlZ2VyIG5vIGxvbmdlciBhdHRlbXB0cworICB0byBhbGxvY2F0ZSBsYXJnZSBhbW91bnRzIG9mIG1lbW9yeS4KKworLSBJc3N1ZSAjMjU0MDI6IEluIGludC10by1kZWNpbWFsLXN0cmluZyBjb252ZXJzaW9uLCBpbXByb3ZlIHRoZSBlc3RpbWF0ZQorICBvZiB0aGUgaW50ZXJtZWRpYXRlIG1lbW9yeSByZXF1aXJlZCwgYW5kIHJlbW92ZSBhbiB1bm5lY2Vzc2FyaWx5IHN0cmljdAorICBvdmVyZmxvdyBjaGVjay4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjcyMTQ6IEluIGxvbmdfaW52ZXJ0LCBiZSBtb3JlIGNhcmVmdWwgYWJvdXQgbW9kaWZ5aW5nIG9iamVjdAorICByZXR1cm5lZCBieSBsb25nX2FkZCwgYW5kIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBjaGVjayBmb3Igc21hbGwgbG9uZ3MuCisgIFRoYW5rcyBPcmVuIE1pbG1hbiBmb3IgYW5hbHlzaXMgYW5kIHBhdGNoLgorCistIElzc3VlICMyNzUwNjogU3VwcG9ydCBwYXNzaW5nIHRoZSBieXRlcy9ieXRlYXJyYXkudHJhbnNsYXRlKCkgImRlbGV0ZSIKKyAgYXJndW1lbnQgYnkga2V5d29yZC4KKworLSBJc3N1ZSAjMjc4MTI6IFByb3Blcmx5IGNsZWFyIG91dCBhIGdlbmVyYXRvcidzIGZyYW1lJ3MgYmFja3JlZmVyZW5jZSB0byB0aGUKKyAgZ2VuZXJhdG9yIHRvIHByZXZlbnQgY3Jhc2hlcyBpbiBmcmFtZS5jbGVhcigpLgorCistIElzc3VlICMyNzgxMTogRml4IGEgY3Jhc2ggd2hlbiBhIGNvcm91dGluZSB0aGF0IGhhcyBub3QgYmVlbiBhd2FpdGVkIGlzCisgIGZpbmFsaXplZCB3aXRoIHdhcm5pbmdzLWFzLWVycm9ycyBlbmFibGVkLgorCistIElzc3VlICMyNzU4NzogRml4IGFub3RoZXIgaXNzdWUgZm91bmQgYnkgUFZTLVN0dWRpbzogTnVsbCBwb2ludGVyIGNoZWNrCisgIGFmdGVyIHVzZSBvZiAnZGVmJyBpbiBfUHlTdGF0ZV9BZGRNb2R1bGUoKS4KKyAgSW5pdGlhbCBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgorCistIElzc3VlICMyNzc5MjogVGhlIG1vZHVsbyBvcGVyYXRpb24gYXBwbGllZCB0byBgYGJvb2xgYCBhbmQgb3RoZXIKKyAgYGBpbnRgYCBzdWJjbGFzc2VzIG5vdyBhbHdheXMgcmV0dXJucyBhbiBgYGludGBgLiBQcmV2aW91c2x5CisgIHRoZSByZXR1cm4gdHlwZSBkZXBlbmRlZCBvbiB0aGUgaW5wdXQgdmFsdWVzLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjY5ODQ6IGludCgpIG5vdyBhbHdheXMgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBleGFjdCBpbnQuCisKKy0gSXNzdWUgIzI1NjA0OiBGaXggYSBtaW5vciBidWcgaW4gaW50ZWdlciB0cnVlIGRpdmlzaW9uOyB0aGlzIGJ1ZyBjb3VsZAorICBwb3RlbnRpYWxseSBoYXZlIGNhdXNlZCBvZmYtYnktb25lLXVscCByZXN1bHRzIG9uIHBsYXRmb3JtcyB3aXRoCisgIHVucmVsaWFibGUgbGRleHAgaW1wbGVtZW50YXRpb25zLgorCistIElzc3VlICMyNDI1NDogTWFrZSBjbGFzcyBkZWZpbml0aW9uIG5hbWVzcGFjZSBvcmRlcmVkIGJ5IGRlZmF1bHQuCisKKy0gSXNzdWUgIzI3NjYyOiBGaXggYW4gb3ZlcmZsb3cgY2hlY2sgaW4gYGBMaXN0X05ld2BgOiB0aGUgb3JpZ2luYWwgY29kZSB3YXMKKyAgY2hlY2tpbmcgYWdhaW5zdCBgYFB5X1NJWkVfTUFYYGAgaW5zdGVhZCBvZiB0aGUgY29ycmVjdCB1cHBlciBib3VuZCBvZgorICBgYFB5X1NTSVpFX1RfTUFYYGAuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzc4MjogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbXBvcnQgbm93IGNvcnJlY3RseSBhbGxvd3MgdGhlCisgIGBgbV9tZXRob2RzYGAgZmllbGQgdG8gYmUgdXNlZCB0byBhZGQgbW9kdWxlIGxldmVsIGZ1bmN0aW9ucyB0byBpbnN0YW5jZXMKKyAgb2Ygbm9uLW1vZHVsZSB0eXBlcyByZXR1cm5lZCBmcm9tIGBgUHlfY3JlYXRlX21vZGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc5MzY6IFRoZSByb3VuZCgpIGZ1bmN0aW9uIGFjY2VwdGVkIGEgc2Vjb25kIE5vbmUgYXJndW1lbnQKKyAgZm9yIHNvbWUgdHlwZXMgYnV0IG5vdCBmb3Igb3RoZXJzLiAgRml4ZWQgdGhlIGluY29uc2lzdGVuY3kgYnkKKyAgYWNjZXB0aW5nIE5vbmUgZm9yIGFsbCBudW1lcmljIHR5cGVzLgorCistIElzc3VlICMyNzQ4NzogV2FybiBpZiBhIHN1Ym1vZHVsZSBhcmd1bWVudCB0byAicHl0aG9uIC1tIiBvcgorICBydW5weS5ydW5fbW9kdWxlKCkgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMgYWZ0ZXIgcGFyZW50IHBhY2thZ2VzIGFyZQorICBpbXBvcnRlZCwgYnV0IGJlZm9yZSB0aGUgc3VibW9kdWxlIGlzIGV4ZWN1dGVkLgorCistIElzc3VlICMyNzE1NzogTWFrZSBvbmx5IHR5cGUoKSBpdHNlbGYgYWNjZXB0IHRoZSBvbmUtYXJndW1lbnQgZm9ybS4KKyAgUGF0Y2ggYnkgRXJ5ayBTdW4gYW5kIEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI3NTU4OiBGaXggYSBTeXN0ZW1FcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgInJhaXNlIiBzdGF0ZW1lbnQuCisgIEluIGEgYnJhbmQgbmV3IHRocmVhZCwgcmFpc2UgYSBSdW50aW1lRXJyb3Igc2luY2UgdGhlcmUgaXMgbm8gYWN0aXZlCisgIGV4Y2VwdGlvbiB0byByZXJhaXNlLiBQYXRjaCB3cml0dGVuIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyODAwODogSW1wbGVtZW50IFBFUCA1MzAgLS0gYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25zLgorCistIElzc3VlICMyNzk0MjogRml4IG1lbW9yeSBsZWFrIGluIGNvZGVvYmplY3QuYworCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI4NDg1OiBBbHdheXMgcmFpc2UgVmFsdWVFcnJvciBmb3IgbmVnYXRpdmUKKyAgY29tcGlsZWFsbC5jb21waWxlX2Rpcih3b3JrZXJzPS4uLikgcGFyYW1ldGVyLCBldmVuIHdoZW4gbXVsdGl0aHJlYWRpbmcgaXMKKyAgdW5hdmFpbGFibGUuCisKKy0gSXNzdWUgIzI4MDM3OiBVc2Ugc3FsaXRlM19nZXRfYXV0b2NvbW1pdCgpIGluc3RlYWQgb2Ygc2V0dGluZworICBDb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uIG1hbnVhbGx5LgorCistIElzc3VlICMyNTI4MzogQXR0cmlidXRlcyB0bV9nbXRvZmYgYW5kIHRtX3pvbmUgYXJlIG5vdyBhdmFpbGFibGUgb24KKyAgYWxsIHBsYXRmb3JtcyBpbiB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aW1lLmxvY2FsdGltZSgpIGFuZAorICB0aW1lLmdtdGltZSgpLgorCistIElzc3VlICMyNDQ1NDogUmVndWxhciBleHByZXNzaW9uIG1hdGNoIG9iamVjdCBncm91cHMgYXJlIG5vdworICBhY2Nlc3NpYmxlIHVzaW5nIF9fZ2V0aXRlbV9fLiAgIm1vW3hdIiBpcyBlcXVpdmFsZW50IHRvCisgICJtby5ncm91cCh4KSIuCisKKy0gSXNzdWUgIzEwNzQwOiBzcWxpdGUzIG5vIGxvbmdlciBpbXBsaWNpdGx5IGNvbW1pdCBhbiBvcGVuIHRyYW5zYWN0aW9uCisgIGJlZm9yZSBEREwgc3RhdGVtZW50cy4KKworLSBJc3N1ZSAjMTc5NDE6IEFkZCBhICptb2R1bGUqIHBhcmFtZXRlciB0byBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkuCisKKy0gSXNzdWUgIzIyNDkzOiBJbmxpbmUgZmxhZ3Mgbm93IHNob3VsZCBiZSB1c2VkIG9ubHkgYXQgdGhlIHN0YXJ0IG9mIHRoZQorICByZWd1bGFyIGV4cHJlc3Npb24uICBEZXByZWNhdGlvbiB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgdXNlcyB0aGVtIGluIHRoZQorICBtaWRkbGUgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworLSBJc3N1ZSAjMjY4ODU6IHhtbHJwYyBub3cgc3VwcG9ydHMgdW5tYXJzaGFsbGluZyBhZGRpdGlvbmFsIGRhdGEgdHlwZXMgdXNlZAorICBieSBBcGFjaGUgWE1MLVJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgbnVtZXJpY3MgYW5kIE5vbmUuCisKKy0gSXNzdWUgIzI4MDcwOiBGaXhlZCBwYXJzaW5nIGlubGluZSB2ZXJib3NlIGZsYWcgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjMTk1MDA6IEFkZCBjbGllbnQtc2lkZSBTU0wgc2Vzc2lvbiByZXN1bXB0aW9uIHRvIHRoZSBzc2wgbW9kdWxlLgorCistIElzc3VlICMyODAyMjogRGVwcmVjYXRlIHNzbC1yZWxhdGVkIGFyZ3VtZW50cyBpbiBmYXZvciBvZiBTU0xDb250ZXh0LiBUaGUKKyAgZGVwcmVjYXRpb24gaW5jbHVkZSBtYW51YWwgY3JlYXRpb24gb2YgU1NMU29ja2V0IGFuZCBjZXJ0ZmlsZS9rZXlmaWxlCisgIChvciBzaW1pbGFyKSBpbiBmdHBsaWIsIGh0dHBsaWIsIGltYXBsaWIsIHNtdHBsaWIsIHBvcGxpYiBhbmQgdXJsbGliLgorCistIElzc3VlICMyODA0MzogU1NMQ29udGV4dCBoYXMgaW1wcm92ZWQgZGVmYXVsdCBzZXR0aW5nczogT1BfTk9fU1NMdjIsCisgIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICBPUF9TSU5HTEVfREhfVVNFLCBPUF9TSU5HTEVfRUNESF9VU0UgYW5kIEhJR0ggY2lwaGVycyB3aXRob3V0IE1ENS4KKworLSBJc3N1ZSAjMjQ2OTM6IENoYW5nZWQgc29tZSBSdW50aW1lRXJyb3IncyBpbiB0aGUgemlwZmlsZSBtb2R1bGUgdG8gbW9yZQorICBhcHByb3ByaWF0ZSB0eXBlcy4gSW1wcm92ZWQgc29tZSBlcnJvciBtZXNzYWdlcyBhbmQgZGVidWdnaW5nIG91dHB1dC4KKworLSBJc3N1ZSAjMTc5MDk6IGBganNvbi5sb2FkYGAgYW5kIGBganNvbi5sb2Fkc2BgIG5vdyBzdXBwb3J0IGJpbmFyeSBpbnB1dAorICBlbmNvZGVkIGFzIFVURi04LCBVVEYtMTYgb3IgVVRGLTMyLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNzEzNzogdGhlIHB1cmUgUHl0aG9uIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYAorICBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3VyIG9mIGl0cyBhY2NlbGVyYXRlZCBDIGNvdW50ZXJwYXJ0IGZvciBzdWJjbGFzc2luZywKKyAgcGlja2xpbmcgYW5kIHRleHQgcmVwcmVzZW50YXRpb24gcHVycG9zZXMuIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkgYW5kCisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGFuZCBjcmFzaGVzIGluIHRoZSBtbWFwIG1vZHVsZSB3aXRoIHVudXN1YWwKKyAgdXNhZ2UgcGF0dGVybnMuCisKKy0gSXNzdWUgIzE3MDMxNzg6IEZpeCB0aGUgYWJpbGl0eSB0byBwYXNzIHRoZSAtLWxpbmstb2JqZWN0cyBvcHRpb24gdG8gdGhlCisgIGRpc3R1dGlscyBidWlsZF9leHQgY29tbWFuZC4KIAogLSBJc3N1ZSAjMjgwMTk6IGl0ZXJ0b29scy5jb3VudCgpIG5vIGxvbmdlciByb3VuZHMgbm9uLWludGVnZXIgc3RlcCBpbiByYW5nZQogICBiZXR3ZWVuIDEuMCBhbmQgMi4wIHRvIDEuCiAKKy0gSXNzdWUgIzE4NDAxOiBQZGIgbm93IHN1cHBvcnRzIHRoZSAncmVhZHJjJyBrZXl3b3JkIGFyZ3VtZW50IHRvIGNvbnRyb2wKKyAgd2hldGhlciAucGRicmMgZmlsZXMgc2hvdWxkIGJlIHJlYWQuICBQYXRjaCBieSBNYXJ0aW4gTWF0dXNpYWsgYW5kCisgIFNhbSBLaW1icmVsLgorCiAtIElzc3VlICMyNTk2OTogVXBkYXRlIHRoZSBsaWIydG8zIGdyYW1tYXIgdG8gaGFuZGxlIHRoZSB1bnBhY2tpbmcKICAgZ2VuZXJhbGl6YXRpb25zIGFkZGVkIGluIDMuNS4KIAogLSBJc3N1ZSAjMTQ5Nzc6IG1haWxjYXAgbm93IHJlc3BlY3RzIHRoZSBvcmRlciBvZiB0aGUgbGluZXMgaW4gdGhlIG1haWxjYXAKICAgZmlsZXMgKCJmaXJzdCBtYXRjaCIpLCBhcyByZXF1aXJlZCBieSBSRkMgMTU0Mi4gIFBhdGNoIGJ5IE1pY2hhZWwgTGF6YXIuCiAKKy0gSXNzdWUgIzI4MDI1OiBDb252ZXJ0IGFsbCBzc2wgbW9kdWxlIGNvbnN0YW50cyB0byBJbnRFbnVtIGFuZCBJbnRGbGFncy4KKyAgU1NMQ29udGV4dCBwcm9wZXJ0aWVzIG5vdyByZXR1cm4gZmxhZ3MgYW5kIGVudW1zLgorCistIElzc3VlICM0MzMwMjg6IEFkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKwogLSBJc3N1ZSAjMjQ1OTQ6IFZhbGlkYXRlcyBwZXJzaXN0IHBhcmFtZXRlciB3aGVuIG9wZW5pbmcgTVNJIGRhdGFiYXNlCiAKIC0gSXNzdWUgIzE3NTgyOiB4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93cyBwcmVzZXJ2ZXMgd2hpdGVzcGFjZXMgaW4gYXR0cmlidXRlcwpAQCAtMjQxLDkgKzcwOSwxOSBAQAogLSBJc3N1ZSAjMjgwNDc6IEZpeGVkIGNhbGN1bGF0aW9uIG9mIGxpbmUgbGVuZ3RoIHVzZWQgZm9yIHRoZSBiYXNlNjQgQ1RFCiAgIGluIHRoZSBuZXcgZW1haWwgcG9saWNpZXMuCiAKKy0gSXNzdWUgIzI3NTc2OiBGaXggY2FsbCBvcmRlciBpbiBPcmRlcmVkRGljdC5fX2luaXRfXygpLgorCistIGVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yIG5vdyBzdXBwb3J0cyB0aGUgcG9saWN5IGtleXdvcmQuCisKKy0gSXNzdWUgIzI4MDI3OiBSZW1vdmUgdW5kb2N1bWVudGVkIG1vZHVsZXMgZnJvbSBgYExpYi9wbGF0LSpgYDogSU4sIENEUk9NLAorICBETEZDTiwgVFlQRVMsIENESU8sIGFuZCBTVFJPUFRTLgorCiAtIElzc3VlICMyNzQ0NTogRG9uJ3QgcGFzcyBzdHIoX2NoYXJzZXQpIHRvIE1JTUVUZXh0LnNldF9wYXlsb2FkKCkuCiAgIFBhdGNoIGJ5IENsYXVkZSBQYXJvei4KIAorLSBJc3N1ZSAjMjQyNzc6IFRoZSBuZXcgZW1haWwgQVBJIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbCwgYW5kIHRoZSBkb2NzCisgIGhhdmUgYmVlbiByZW9yZ2FuaXplZCBhbmQgcmV3cml0dGVuIHRvIGVtcGhhc2l6ZSB0aGUgbmV3IEFQSS4KKwogLSBJc3N1ZSAjMjI0NTA6IHVybGxpYiBub3cgaW5jbHVkZXMgYW4gIkFjY2VwdDogKi8qIiBoZWFkZXIgYW1vbmcgdGhlCiAgIGRlZmF1bHQgaGVhZGVycy4gIFRoaXMgbWFrZXMgdGhlIHJlc3VsdHMgb2YgUkVTVCBBUEkgcmVxdWVzdHMgbW9yZQogICBjb25zaXN0ZW50IGFuZCBwcmVkaWN0YWJsZSBlc3BlY2lhbGx5IHdoZW4gcHJveHkgc2VydmVycyBhcmUgaW52b2x2ZWQuCkBAIC0yNTIsNiArNzMwLDEwIEBACiAgIGJldHdlZW4gcnVucyBnaXZlbiB0aGUgc2FtZSBHcmFtbWFyLnR4dCBpbnB1dCByZWdhcmRsZXNzIG9mIHRoZSBoYXNoCiAgIHJhbmRvbWl6YXRpb24gc2V0dGluZy4KIAorLSBJc3N1ZSAjMjgwMDU6IEFsbG93IEltcG9ydEVycm9ycyBpbiBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiB0byBwcm9wYWdhdGUuCisKKy0gSXNzdWUgIzI2NjY3OiBTdXBwb3J0IHBhdGgtbGlrZSBvYmplY3RzIGluIGltcG9ydGxpYi51dGlsLgorCiAtIElzc3VlICMyNzU3MDogQXZvaWQgemVyby1sZW5ndGggbWVtY3B5KCkgZXRjIGNhbGxzIHdpdGggbnVsbCBzb3VyY2UKICAgcG9pbnRlcnMgaW4gdGhlICJjdHlwZXMiIGFuZCAiYXJyYXkiIG1vZHVsZXMuCiAKQEAgLTI1OSwxOSArNzQxLDcyIEBACiAgIGNoYXJhY3RlcnMsIG5vdCBvbiBhcmJpdHJhcnkgdW5pY29kZSBsaW5lIGJyZWFrcy4gIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyBpbgogICBIVFRQIGhlYWRlciBwYXJzaW5nLgogCistIElzc3VlIDI3MzMxOiBUaGUgZW1haWwubWltZSBjbGFzc2VzIG5vdyBhbGwgYWNjZXB0IGFuIG9wdGlvbmFsIHBvbGljeSBrZXl3b3JkLgorCiAtIElzc3VlIDI3OTg4OiBGaXggZW1haWwgaXRlcl9hdHRhY2htZW50cyBpbmNvcnJlY3QgbXV0YXRpb24gb2YgcGF5bG9hZCBsaXN0LgogCistIElzc3VlICMxNjExMzogQWRkIFNIQS0zIGFuZCBTSEFLRSBzdXBwb3J0IHRvIGhhc2hsaWIgbW9kdWxlLgorCistIEVsaW1pbmF0ZSBhIHRhdXRvbG9naWNhbC1wb2ludGVyLWNvbXBhcmUgd2FybmluZyBpbiBfc2Nwcm94eS5jLgorCistIElzc3VlICMyNzc3NjogVGhlIDpmdW5jOmBvcy51cmFuZG9tYCBmdW5jdGlvbiBkb2VzIG5vdyBibG9jayBvbiBMaW51eCAzLjE3CisgIGFuZCBuZXdlciB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkIHRvIGluY3JlYXNlCisgIHRoZSBzZWN1cml0eS4gVGhpcyBjaGFuZ2UgaXMgcGFydCBvZiB0aGUgOnBlcDpgNTI0YC4KKworLSBJc3N1ZSAjMjc3Nzg6IEV4cG9zZSB0aGUgTGludXggYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgYXMgYSBuZXcKKyAgOmZ1bmM6YG9zLmdldHJhbmRvbWAgZnVuY3Rpb24uIFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGAuCisKIC0gSXNzdWUgIzI3NjkxOiBGaXggc3NsIG1vZHVsZSdzIHBhcnNpbmcgb2YgR0VOX1JJRCBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUKICAgZmllbGRzIGluIFguNTA5IGNlcnRzLgogCistIElzc3VlICMxODg0NDogQWRkIHJhbmRvbS5jaG9pY2VzKCkuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBlcnJvciByZXBvcnRpbmcgYWJvdXQgdHJ1bmNhdGVkIHBpY2tsZSBkYXRhIGluCisgIEMgaW1wbGVtZW50YXRpb24gb2YgdW5waWNrbGVyLiAgVW5waWNrbGluZ0Vycm9yIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZgorICBBdHRyaWJ1dGVFcnJvciBhbmQgVmFsdWVFcnJvciBpbiBzb21lIGNhc2VzLgorCistIElzc3VlICMyNjc5ODogQWRkIEJMQUtFMiAoYmxha2UyYiBhbmQgYmxha2UycykgdG8gaGFzaGxpYi4KKworLSBJc3N1ZSAjMjYwMzI6IE9wdGltaXplZCBnbG9iYmluZyBpbiBwYXRobGliIGJ5IHVzaW5nIG9zLnNjYW5kaXIoKTsgaXQgaXMgbm93CisgIGFib3V0IDEuNS0tNCB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NTk2OiBPcHRpbWl6ZWQgZ2xvYigpIGFuZCBpZ2xvYigpIGZ1bmN0aW9ucyBpbiB0aGUKKyAgZ2xvYiBtb2R1bGU7IHRoZXkgYXJlIG5vdyBhYm91dCAzLS02IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjc5Mjg6IEFkZCBzY3J5cHQgKHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uKSB0bworICBoYXNobGliIG1vZHVsZSAocmVxdWlyZXMgT3BlblNTTCAxLjEuMCkuCisKIC0gSXNzdWUgIzI3ODUwOiBSZW1vdmUgM0RFUyBmcm9tIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0IHRvIGNvdW50ZXIKICAgbWVhc3VyZSBzd2VldDMyIGF0dGFjayAoQ1ZFLTIwMTYtMjE4MykuCiAKIC0gSXNzdWUgIzI3NzY2OiBBZGQgQ2hhQ2hhMjAgUG9seTEzMDUgdG8gc3NsIG1vZHVsZSdzIGRlZmF1bHQgY2lwZXIgbGlzdC4KICAgKFJlcXVpcmVkIE9wZW5TU0wgMS4xLjAgb3IgTGlicmVTU0wpLgogCistIElzc3VlICMyNTM4NzogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHdpbnNvdW5kLk1lc3NhZ2VCZWVwLgorCistIElzc3VlICMyNzg2NjogQWRkIFNTTENvbnRleHQuZ2V0X2NpcGhlcnMoKSBtZXRob2QgdG8gZ2V0IGEgbGlzdCBvZiBhbGwKKyAgZW5hYmxlZCBjaXBoZXJzLgorCistIElzc3VlICMyNzc0NDogQWRkIEFGX0FMRyAoTGludXggS2VybmVsIGNyeXB0bykgdG8gc29ja2V0IG1vZHVsZS4KKwogLSBJc3N1ZSAjMjY0NzA6IFBvcnQgc3NsIGFuZCBoYXNobGliIG1vZHVsZSB0byBPcGVuU1NMIDEuMS4wLgogCistIElzc3VlICMxMTYyMDogRml4IHN1cHBvcnQgZm9yIFNORF9NRU1PUlkgaW4gd2luc291bmQuUGxheVNvdW5kLiAgQmFzZWQgb24gYQorICBwYXRjaCBieSBUaW0gTGVzaGVyLgorCistIElzc3VlICMxMTczNDogQWRkIHN1cHBvcnQgZm9yIElFRUUgNzU0IGhhbGYtcHJlY2lzaW9uIGZsb2F0cyB0byB0aGUKKyAgc3RydWN0IG1vZHVsZS4gQmFzZWQgb24gYSBwYXRjaCBieSBFbGkgU3RldmVucy4KKworLSBJc3N1ZSAjMjc5MTk6IERlcHJlY2F0ZWQgYGBleHRyYV9wYXRoYGAgZGlzdHJpYnV0aW9uIG9wdGlvbiBpbiBkaXN0dXRpbHMKKyAgcGFja2FnaW5nLgorCistIElzc3VlICMyMzIyOTogQWRkIG5ldyBgYGNtYXRoYGAgY29uc3RhbnRzOiBgYGNtYXRoLmluZmBgIGFuZCBgYGNtYXRoLm5hbmBgIHRvCisgIG1hdGNoIGBgbWF0aC5pbmZgYCBhbmQgYGBtYXRoLm5hbmBgLCBhbmQgYWxzbyBgYGNtYXRoLmluZmpgYCBhbmQKKyAgYGBjbWF0aC5uYW5qYGAgdG8gbWF0Y2ggdGhlIGZvcm1hdCB1c2VkIGJ5IGNvbXBsZXggcmVwci4KKworLSBJc3N1ZSAjMjc4NDI6IFRoZSBjc3YuRGljdFJlYWRlciBub3cgcmV0dXJucyByb3dzIG9mIHR5cGUgT3JkZXJlZERpY3QuCisgIChDb250cmlidXRlZCBieSBTdGV2ZSBIb2xkZW4uKQorCiAtIFJlbW92ZSBzdXBwb3J0IGZvciBwYXNzaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRvIG9zLmFjY2Vzcy4gSXQgbmV2ZXIgd29ya2VkIGJ1dAogICBwcmV2aW91c2x5IGRpZG4ndCByYWlzZS4KIApAQCAtMjkzLDI1ICs4MjgsMjc2IEBACiAtIElzc3VlICMxMDUxMzogRml4IGEgcmVncmVzc2lvbiBpbiBDb25uZWN0aW9uLmNvbW1pdCgpLiAgU3RhdGVtZW50cyBzaG91bGQKICAgbm90IGJlIHJlc2V0IGFmdGVyIGEgY29tbWl0LgogCistIElzc3VlICMxMjMxOTogQ2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBzdXBwb3J0IGFkZGVkIHRvCisgIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uIHJlcXVlc3RzLiAgVGhlCisgIHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIgY2xhc3MgZG9lcyBub3QgZW5mb3JjZSBhIENvbnRlbnQtTGVuZ3RoCisgIGhlYWRlciBhbnkgbW9yZS4gIElmIGEgSFRUUCByZXF1ZXN0IGhhcyBhIGZpbGUgb3IgaXRlcmFibGUgYm9keSwgYnV0IG5vCisgIENvbnRlbnQtTGVuZ3RoIGhlYWRlciwgdGhlIGxpYnJhcnkgbm93IGZhbGxzIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXItCisgIGVuY29kaW5nLgorCiAtIEEgbmV3IHZlcnNpb24gb2YgdHlwaW5nLnB5IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmc6CiAgIC0gQ29sbGVjdGlvbiAob25seSBmb3IgMy42KSAoSXNzdWUgIzI3NTk4KQogICAtIEFkZCBGcm96ZW5TZXQgdG8gX19hbGxfXyAodXBzdHJlYW0gIzI2MSkKICAgLSBmaXggY3Jhc2ggaW4gX2dldF90eXBlX3ZhcnMoKSAodXBzdHJlYW0gIzI1OSkKICAgLSBSZW1vdmUgdGhlIGRpY3QgY29uc3RyYWludCBpbiBGb3J3YXJkUmVmLl9ldmFsX3R5cGUgKHVwc3RyZWFtICMyNTIpCiAKKy0gSXNzdWUgIzI3ODMyOiBNYWtlIGBgX25vcm1hbGl6ZWBgIHBhcmFtZXRlciB0byBgYEZyYWN0aW9uYGAgY29uc3R1Y3RvcgorICBrZXl3b3JkLW9ubHksIHNvIHRoYXQgYGBGcmFjdGlvbigyLCAzLCA0KWBgIG5vdyByYWlzZXMgYGBUeXBlRXJyb3JgYC4KKwogLSBJc3N1ZSAjMjc1Mzk6IEZpeCB1bm5vcm1hbGlzZWQgYGBGcmFjdGlvbi5fX3Bvd19fYGAgcmVzdWx0IGluIHRoZSBjYXNlCiAgIG9mIG5lZ2F0aXZlIGV4cG9uZW50IGFuZCBuZWdhdGl2ZSBiYXNlLgogCiAtIElzc3VlICMyMTcxODogY3Vyc29yLmRlc2NyaXB0aW9uIGlzIG5vdyBhdmFpbGFibGUgZm9yIHF1ZXJpZXMgdXNpbmcgQ1RFcy4KIAorLSBJc3N1ZSAjMjc4MTk6IEluIGRpc3R1dGlscyBzZGlzdHMsIHNpbXBseSBwcm9kdWNlIHRoZSAiZ3p0YXIiIChnemlwcGVkIHRhcgorICBmb3JtYXQpIGRpc3RyaWJ1dGlvbnMgb24gYWxsIHBsYXRmb3JtcyB1bmxlc3MgImZvcm1hdHMiIGlzIHN1cHBsaWVkLgorCiAtIElzc3VlICMyNDY2OiBwb3NpeHBhdGguaXNtb3VudCBub3cgY29ycmVjdGx5IHJlY29nbml6ZXMgbW91bnQgcG9pbnRzIHdoaWNoCiAgIHRoZSB1c2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MuCiAKKy0gSXNzdWUgIzk5OTg6IE9uIExpbnV4LCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgbm93IGxvb2tzIGluIExEX0xJQlJBUllfUEFUSAorICBmb3Igc2hhcmVkIGxpYnJhcmllcy4KKworLSBJc3N1ZSAjMjc1NzM6IGV4aXQgbWVzc2FnZSBmb3IgY29kZS5pbnRlcmFjdCBpcyBub3cgY29uZmlndXJhYmxlLgorCistIElzc3VlICMyNzkzMDogSW1wcm92ZWQgYmVoYXZpb3VyIG9mIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lci4KKyAgVGhhbmtzIHRvIFBhdWxvIEFuZHJhZGUgYW5kIFBldHIgVmlrdG9yaW4gZm9yIHRoZSBhbmFseXNpcyBhbmQgcGF0Y2guCisKKy0gSXNzdWUgIzY3NjY6IERpc3RyaWJ1dGVkIHJlZmVyZW5jZSBjb3VudGluZyBhZGRlZCB0byBtdWx0aXByb2Nlc3NpbmcKKyAgdG8gc3VwcG9ydCBuZXN0aW5nIG9mIHNoYXJlZCB2YWx1ZXMgLyBwcm94eSBvYmplY3RzLgorCistIElzc3VlICMyMTIwMTogSW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgbXVsdGlwcm9jZXNzaW5nIGVycm9yIG1lc3NhZ2UuICBUaGFua3MKKyAgdG8gV29qY2llY2ggV2FsY3phayBmb3IgcGF0Y2guCisKKy0gYXN5bmNpbzogQWRkIHNldF9wcm90b2NvbCAvIGdldF9wcm90b2NvbCB0byBUcmFuc3BvcnRzLgorCistIElzc3VlICMyNzQ1NjogYXN5bmNpbzogU2V0IFRDUF9OT0RFTEFZIGJ5IGRlZmF1bHQuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMTUzMDg6IEFkZCAnaW50ZXJydXB0IGV4ZWN1dGlvbicgKF5DKSB0byBTaGVsbCBtZW51LgorICBQYXRjaCBieSBSb2dlciBTZXJ3eSwgdXBkYXRlZCBieSBCYXlhcmQgUmFuZGVsLgorCistIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgorCistIElzc3VlICMyNzg5MTogQ29uc2lzdGVudGx5IGdyb3VwIGFuZCBzb3J0IGltcG9ydHMgd2l0aGluIGlkbGVsaWIgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTc2NDI6IGFkZCBsYXJnZXIgZm9udCBzaXplcyBmb3IgY2xhc3Nyb29tIHByb2plY3Rpb24uCisKKy0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KKworLSBJc3N1ZSAjMjU1NjQ6IEluIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQKKyAgdXNpbmcgZXhlYyBtZWFucyB0aGF0IF9fYnVpbHRpbnNfXyBpcyBkZWZpbmVkIGZvciBlYWNoIHN0YXRlbWVudC4KKworLSBJc3N1ZSAjMjc4MjE6IEZpeCAzLjYuMGEzIHJlZ3Jlc3Npb24gdGhhdCBwcmV2ZW50ZWQgY3VzdG9tIGtleSBzZXRzCisgIGZyb20gYmVpbmcgc2VsZWN0ZWQgd2hlbiBubyBjdXN0b20gdGhlbWUgd2FzIGRlZmluZWQuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNjkwMDogRXhjbHVkZWQgdW5kZXJzY29yZWQgbmFtZXMgYW5kIG90aGVyIHByaXZhdGUgQVBJIGZyb20gbGltaXRlZCBBUEkuCisKKy0gSXNzdWUgIzI2MDI3OiBBZGQgc3VwcG9ydCBmb3IgcGF0aC1saWtlIG9iamVjdHMgaW4gUHlVbmljb2RlX0ZTQ29udmVydGVyKCkgJgorICBQeVVuaWNvZGVfRlNEZWNvZGVyKCkuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNzQyNzogQWRkaXRpb25hbCB0ZXN0cyBmb3IgdGhlIG1hdGggbW9kdWxlLiBQYXRjaCBieSBGcmFuY2lzY28gQ291em8uCisKKy0gSXNzdWUgIzI3OTUzOiBTa2lwIG1hdGggYW5kIGNtYXRoIHRlc3RzIHRoYXQgZmFpbCBvbiBPUyBYIDEwLjQgZHVlIHRvIGEKKyAgcG9vciBsaWJtIGltcGxlbWVudGF0aW9uIG9mIHRhbi4KKworLSBJc3N1ZSAjMjYwNDA6IEltcHJvdmUgdGVzdF9tYXRoIGFuZCB0ZXN0X2NtYXRoIGNvdmVyYWdlIGFuZCByaWdvdXIuIFBhdGNoIGJ5CisgIEplZmYgQWxsZW4uCisKKy0gSXNzdWUgIzI3Nzg3OiBDYWxsIGdjLmNvbGxlY3QoKSBiZWZvcmUgY2hlY2tpbmcgZWFjaCB0ZXN0IGZvciAiZGFuZ2xpbmcKKyAgdGhyZWFkcyIsIHNpbmNlIHRoZSBkYW5nbGluZyB0aHJlYWRzIGFyZSB3ZWFrIHJlZmVyZW5jZXMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNzU2NjogRml4IGNsZWFuIHRhcmdldCBpbiBmcmVlemUgbWFrZWZpbGUgKHBhdGNoIGJ5IExpc2EgUm9hY2gpCisKKy0gSXNzdWUgIzI3NzA1OiBVcGRhdGUgbWVzc2FnZSBpbiB2YWxpZGF0ZV91Y3J0YmFzZS5weQorCistIElzc3VlICMyNzk3NjogRGVwcmVjYXRlIGJ1aWxkaW5nIF9jdHlwZXMgd2l0aCB0aGUgYnVuZGxlZCBjb3B5IG9mIGxpYmZmaSBvbgorICBub24tT1NYIFVOSVggcGxhdGZvcm1zLgorCistIElzc3VlICMyNzk4MzogQ2F1c2UgbGFjayBvZiBsbHZtLXByb2ZkYXRhIHRvb2wgd2hlbiB1c2luZyBjbGFuZyBhcworICByZXF1aXJlZCBmb3IgUEdPIGxpbmtpbmcgdG8gYmUgYSBjb25maWd1cmUgdGltZSBlcnJvciByYXRoZXIgdGhhbgorICBtYWtlIHRpbWUgd2hlbiAtLXdpdGgtb3B0aW1pemF0aW9ucyBpcyBlbmFibGVkLiAgQWxzbyBpbXByb3ZlIG91cgorICBhYmlsaXR5IHRvIGZpbmQgdGhlIGxsdm0tcHJvZmRhdGEgdG9vbCBvbiBNYWNPUyBhbmQgc29tZSBMaW51eGVzLgorCistIElzc3VlICMyMTU5MDogU3VwcG9ydCBmb3IgRFRyYWNlIGFuZCBTeXN0ZW1UYXAgcHJvYmVzLgorCistIElzc3VlICMyNjMwNzogVGhlIHByb2ZpbGUtb3B0IGJ1aWxkIG5vdyBhcHBsaWVzIFBHTyB0byB0aGUgYnVpbHQtaW4gbW9kdWxlcy4KKworLSBJc3N1ZSAjMjY1Mzk6IEFkZCB0aGUgLS13aXRoLW9wdGltaXphdGlvbnMgZmxhZyB0byB0dXJuIG9uIExUTyBhbmQgUEdPIGJ1aWxkCisgIHN1cHBvcnQgd2hlbiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI3OTE3OiBTZXQgcGxhdGZvcm0gdHJpcGxldHMgZm9yIEFuZHJvaWQgYnVpbGRzLgorCistIElzc3VlICMyNTgyNTogVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlICQoTElCUEwpIGluc3RhbGxhdGlvbiBwYXRoIG9uIEFJWC4KKyAgVGhpcyBwYXRoIHdhcyBjaGFuZ2VkIGluIDMuMmE0LgorCistIFVwZGF0ZSBPUyBYIGluc3RhbGxlciB0byB1c2UgU1FMaXRlIDMuMTQuMSBhbmQgWFogNS4yLjIuCisKKy0gSXNzdWUgIzIxMTIyOiBGaXggTFRPIGJ1aWxkcyBvbiBPUyBYLgorCistIElzc3VlICMxNzEyODogQnVpbGQgT1MgWCBpbnN0YWxsZXIgd2l0aCBhIHByaXZhdGUgY29weSBvZiBPcGVuU1NMLgorICBBbHNvIHByb3ZpZGUgYSBzYW1wbGUgSW5zdGFsbCBDZXJ0aWZpY2F0ZXMgY29tbWFuZCBzY3JpcHQgdG8gaW5zdGFsbCBhCisgIHNldCBvZiByb290IGNlcnRpZmljYXRlcyBmcm9tIHRoZSB0aGlyZC1wYXJ0eSBjZXJ0aWZpIG1vZHVsZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3OTUyOiBHZXQgVG9vbHMvc2NyaXB0cy9maXhjaWQucHkgd29ya2luZyB3aXRoIFB5dGhvbiAzIGFuZCB0aGUKKyAgY3VycmVudCAicmUiIG1vZHVsZSwgYXZvaWQgaW52YWxpZCBQeXRob24gYmFja3NsYXNoIGVzY2FwZXMsIGFuZCBmaXggYSBidWcKKyAgcGFyc2luZyBlc2NhcGVkIEMgcXVvdGUgc2lnbnMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjgwNjU6IFVwZGF0ZSB4eiBkZXBlbmRlbmN5IHRvIDUuMi4yIGFuZCBidWlsZCBpdCBmcm9tIHNvdXJjZS4KKworLSBJc3N1ZSAjMjUxNDQ6IEVuc3VyZXMgVGFyZ2V0RGlyIGlzIHNldCBiZWZvcmUgY29udGludWluZyB3aXRoIGN1c3RvbQorICBpbnN0YWxsLgorCistIElzc3VlICMxNjAyOiBXaW5kb3dzIGNvbnNvbGUgZG9lc24ndCBpbnB1dCBvciBwcmludCBVbmljb2RlIChQRVAgNTI4KQorCistIElzc3VlICMyNzc4MTogQ2hhbmdlIGZpbGUgc3lzdGVtIGVuY29kaW5nIG9uIFdpbmRvd3MgdG8gVVRGLTggKFBFUCA1MjkpCisKKy0gSXNzdWUgIzI3NzMxOiBPcHQtb3V0IG9mIE1BWF9QQVRIIG9uIFdpbmRvd3MgMTAKKworLSBJc3N1ZSAjNjEzNTogQWRkcyBlbmNvZGluZyBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgdG8gc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMjc5NTk6IEFkZHMgb2VtIGVuY29kaW5nLCBhbGlhcyBhbnNpIHRvIG1iY3MsIG1vdmUgYWxpYXNtYmNzIHRvCisgIGNvZGVjIGxvb2t1cC4KKworLSBJc3N1ZSAjMjc5ODI6IFRoZSBmdW5jdGlvbnMgb2YgdGhlIHdpbnNvdW5kIG1vZHVsZSBub3cgYWNjZXB0IGtleXdvcmQKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMyMDM2NjogQnVpbGQgZnVsbCB0ZXh0IHNlYXJjaCBzdXBwb3J0IGludG8gU1FMaXRlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NzU2OiBBZGRzIG5ldyBpY29ucyBmb3IgUHl0aG9uIGZpbGVzIGFuZCBwcm9jZXNzZXMgb24gV2luZG93cy4KKyAgRGVzaWducyBieSBDaGVycnkgV2FuZy4KKworLSBJc3N1ZSAjMjc4ODM6IFVwZGF0ZSBzcWxpdGUgdG8gMy4xNC4xLjAgb24gV2luZG93cy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSA0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDgtMTUqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNzcwNDogT3B0aW1pemVkIGNyZWF0aW5nIGJ5dGVzIGFuZCBieXRlYXJyYXkgZnJvbSBieXRlLWxpa2Ugb2JqZWN0cworICBhbmQgaXRlcmFibGVzLiAgU3BlZWQgdXAgdG8gMyB0aW1lcyBmb3Igc2hvcnQgb2JqZWN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIE5hb2tpIEluYWRhLgorCistIElzc3VlICMyNjgyMzogTGFyZ2Ugc2VjdGlvbnMgb2YgcmVwZWF0ZWQgbGluZXMgaW4gdHJhY2ViYWNrcyBhcmUgbm93CisgIGFiYnJldmlhdGVkIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiBieSB0aGUgYnVpbHRpbgorICB0cmFjZWJhY2sgcmVuZGVyaW5nLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU3NDogRGVjcmVhc2VkIGFuIG92ZXJoZWFkIG9mIHBhcnNpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zCisgIGltcGxlbWVudGVkIHdpdGggdXNpbmcgQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMyMjU1NzogTm93IGltcG9ydGluZyBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZXMgaXMgdXAgdG8gMi41IHRpbWVzCisgIGZhc3Rlci4KKworLSBJc3N1ZSAjMTc1OTY6IEluY2x1ZGUgPHdpbmNyeXB0Lmg+IHRvIGhlbHAgd2l0aCBNaW4gR1cgYnVpbGRpbmcuCisKKy0gSXNzdWUgIzE3NTk5OiBPbiBXaW5kb3dzLCByZW5hbWUgdGhlIHByaXZhdGVseSBkZWZpbmVkIFJFUEFSU0VfREFUQV9CVUZGRVIKKyAgc3RydWN0dXJlIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGhlIGRlZmluaXRpb24gZnJvbSBNaW4gR1cuCisKKy0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQorICBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCisgIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMxNjIxOiBBdm9pZCBzaWduZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBsaXN0IGFuZCB0dXBsZSBvcGVyYXRpb25zLgorICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscworICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGEgY3Jhc2ggaWYKKyAgcmFpc2UgYSB3YXJuaW5nIGFib3V0IHVuYWJsaW5nIHRvIHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yCisgIF9fcGFja2FnZV9fLgorCistIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgorICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgorCistIElzc3VlICMyNzM2NjogSW1wbGVtZW50ZWQgUEVQIDQ4NyAoU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uKS4KKyAgVXBvbiBzdWJjbGFzc2luZywgdGhlIF9faW5pdF9zdWJjbGFzc19fIGNsYXNzbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgYmFzZQorICBjbGFzcy4gRGVzY3JpcHRvcnMgYXJlIGluaXRpYWxpemVkIHdpdGggX19zZXRfbmFtZV9fIGFmdGVyIGNsYXNzIGNyZWF0aW9uLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI2MDI3LCAjMjc1MjQ6IEFkZCBQRVAgNTE5L19fZnNwYXRoX18oKSBzdXBwb3J0IHRvIHRoZSBvcyBhbmQgb3MucGF0aAorICBtb2R1bGVzLiBJbmNsdWRlcyBjb2RlIGZyb20gSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI3NTk4OiBBZGQgQ29sbGVjdGlvbnMgdG8gY29sbGVjdGlvbnMuYWJjLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWksIGRvY3MgYnkgTmVpbCBHaXJkaGFyLgorCistIElzc3VlICMyNTk1ODogU3VwcG9ydCAiYW50aS1yZWdpc3RyYXRpb24iIG9mIHNwZWNpYWwgbWV0aG9kcyBmcm9tCisgIHZhcmlvdXMgQUJDcywgbGlrZSBfX2hhc2hfXywgX19pdGVyX18gb3IgX19sZW5fXy4gIEFsbCB0aGVzZSAoYW5kCisgIHNldmVyYWwgbW9yZSkgY2FuIGJlIHNldCB0byBOb25lIGluIGFuIGltcGxlbWVudGF0aW9uIGNsYXNzIGFuZCB0aGUKKyAgYmVoYXZpb3Igd2lsbCBiZSBhcyBpZiB0aGUgbWV0aG9kIGlzIG5vdCBkZWZpbmVkIGF0IGFsbC4KKyAgKFByZXZpb3VzbHksIHRoaXMgbWVjaGFuaXNtIGV4aXN0ZWQgb25seSBmb3IgX19oYXNoX18sIHRvIG1ha2UKKyAgbXV0YWJsZSBjbGFzc2VzIHVuaGFzaGFibGUuKSAgQ29kZSBjb250cmlidXRlZCBieSBBbmRyZXcgQmFybmVydCBhbmQKKyAgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMxNjc2NDogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmRlY29tcHJlc3MoKS4gIFBhdGNoIGJ5CisgIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzczNjogUHJldmVudCBzZWdmYXVsdCBhZnRlciBpbnRlcnByZXRlciByZS1pbml0aWFsaXphdGlvbiBkdWUKKyAgdG8gcmVmIGNvdW50IHByb2JsZW0gaW50cm9kdWNlZCBpbiBjb2RlIGZvciBJc3N1ZSAjMjcwMzggaW4gMy42LjBhMy4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1NjI4OiAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBmb3IKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSBhcmUgbm93IGtleXdvcmQtb25seS4KKworLSBJc3N1ZSAjMTIzNDU6IEFkZCBtYXRoZW1hdGljYWwgY29uc3RhbnQgdGF1IHRvIG1hdGggYW5kIGNtYXRoLiBTZWUgYWxzbworICBQRVAgNjI4LgorCistIElzc3VlICMyNjgyMzogdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mb3JtYXQgbm93IGFiYnJldmlhdGVzIGxhcmdlIHNlY3Rpb25zIG9mCisgIHJlcGVhdGVkIGxpbmVzIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiAodGhpcyBjaGFuZ2UKKyAgdGhlbiBmdXJ0aGVyIGFmZmVjdHMgb3RoZXIgdHJhY2ViYWNrIGRpc3BsYXkgb3BlcmF0aW9ucyBpbiB0aGUgbW9kdWxlKS4gUGF0Y2gKKyAgYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc2NjQ6IEFkZCB0byBjb25jdXJyZW50LmZ1dHVyZXMudGhyZWFkLlRocmVhZFBvb2xFeGVjdXRvcigpCisgIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSB0aHJlYWQgbmFtZSBwcmVmaXguCisKKy0gSXNzdWUgIzI3MTgxOiBBZGQgZ2VvbWV0cmljX21lYW4gYW5kIGhhcm1vbmljX21lYW4gdG8gc3RhdGlzdGljcyBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTczOiBjb2RlLmludGVyYWN0IG5vdyBwcmludHMgYW4gbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKKy0gSXNzdWUgIzY0MjI6IEFkZCBhdXRvcmFuZ2UgbWV0aG9kIHRvIHRpbWVpdC5UaW1lciBvYmplY3RzLgorCiAtIElzc3VlICMyNzc3MzogQ29ycmVjdCBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGVycm9ycyBzZXJ2ZXJfaG9zdG5hbWUgaW4KICAgX3NzbC53cmFwX3NvY2tldCgpLgogCiAtIElzc3VlICMyNjc1MDogdW5pdHRlc3QubW9jay5jcmVhdGVfYXV0b3NwZWMoKSBub3cgd29ya3MgcHJvcGVybHkgZm9yCi0gIHN1YmNsYXNzZXMgb2YgcHJvcGVydHkoKSBhbmQgb3RoZXIgZGF0YSBkZXNjcmlwdG9ycy4KKyAgc3ViY2xhc3NlcyBvZiBwcm9wZXJ0eSgpIGFuZCBvdGhlciBkYXRhIGRlc2NyaXB0b3JzLiAgUmVtb3ZlcyB0aGUgbmV2ZXIKKyAgcHVibGljbHkgdXNlZCwgbmV2ZXIgZG9jdW1lbnRlZCB1bml0dGVzdC5tb2NrLkRlc2NyaXB0b3JUeXBlcyB0dXBsZS4KKworLSBJc3N1ZSAjMjY3NTQ6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGggaW4gY29tcGlsZSgpIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY4MDA6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGhzIGluIG9zIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY5ODE6IEFkZCBfb3JkZXJfIGNvbXBhdGliaWxpdHkgc2hpbSB0byBlbnVtLkVudW0gZm9yCisgIFB5dGhvbiAyLzMgY29kZSBiYXNlcy4KKworLSBJc3N1ZSAjMjc2NjE6IEFkZGVkIHR6aW5mbyBrZXl3b3JkIGFyZ3VtZW50IHRvIGRhdGV0aW1lLmNvbWJpbmUuCiAKIC0gSW4gdGhlIGN1cnNlcyBtb2R1bGUsIHJhaXNlIGFuIGVycm9yIGlmIHdpbmRvdy5nZXRzdHIoKSBvciB3aW5kb3cuaW5zdHIoKSBpcwogICBwYXNzZWQgYSBuZWdhdGl2ZSB2YWx1ZS4KQEAgLTMzMCw2ICsxMTE2LDkgQEAKICAgSFRUUF9QUk9YWSB2YXJpYWJsZSB3aGVuIFJFUVVFU1RfTUVUSE9EIGVudmlyb25tZW50IGlzIHNldCwgd2hpY2ggaW5kaWNhdGVzCiAgIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KIAorLSBJc3N1ZSAjNzA2MzogUmVtb3ZlIGRlYWQgY29kZSBmcm9tIHRoZSAiYXJyYXkiIG1vZHVsZSdzIHNsaWNlIGhhbmRsaW5nLgorICBQYXRjaCBieSBDaHVjay4KKwogLSBJc3N1ZSAjMjc2NTY6IERvIG5vdCBhc3N1bWUgc2NoZWQuaCBkZWZpbmVzIGFueSBTQ0hFRF8qIGNvbnN0YW50cy4KIAogLSBJc3N1ZSAjMjcxMzA6IEluIHRoZSAiemxpYiIgbW9kdWxlLCBmaXggaGFuZGxpbmcgb2YgbGFyZ2UgYnVmZmVycwpAQCAtMzM3LDYgKzExMjYsMTUgQEAKICAgd2VyZSBsaW1pdGVkIHRvIDQgR2lCLCBhbmQgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gb3BlcmF0aW9ucyBkaWQgbm90CiAgIHByb3Blcmx5IGhhbmRsZSByZXN1bHRzIG9mIDQgR2lCLgogCistIElzc3VlICMyNDc3MzogSW1wbGVtZW50ZWQgUEVQIDQ5NSAoTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbikuCisKKy0gRXhwb3NlIHRoZSBFUE9MTEVYQ0xVU0lWRSBjb25zdGFudCAod2hlbiBpdCBpcyBkZWZpbmVkKSBpbiB0aGUgc2VsZWN0IG1vZHVsZS4KKworLSBJc3N1ZSAjMjc1Njc6IEV4cG9zZSB0aGUgRVBPTExSREhVUCBhbmQgUE9MTFJESFVQIGNvbnN0YW50cyBpbiB0aGUgc2VsZWN0CisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMTYyMTogQXZvaWQgc2lnbmVkIGludCBuZWdhdGlvbiBvdmVyZmxvdyBpbiB0aGUgImF1ZGlvb3AiIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjc1MzM6IFJlbGVhc2UgR0lMIGluIG50Ll9pc2RpcgogCiAtIElzc3VlICMxNzcxMTogRml4ZWQgdW5waWNrbGluZyBieSB0aGUgcGVyc2lzdGVudCBJRCB3aXRoIHByb3RvY29sIDAuCkBAIC0zNDQsNiArMTE0MiwxMTMgQEAKIAogLSBJc3N1ZSAjMjc1MjI6IEF2b2lkIGFuIHVuaW50ZW50aW9uYWwgcmVmZXJlbmNlIGN5Y2xlIGluIGVtYWlsLmZlZWRwYXJzZXIuCiAKKy0gSXNzdWUgIzI3NTEyOiBGaXggYSBzZWdmYXVsdCB3aGVuIG9zLmZzcGF0aCgpIGNhbGxlZCBhbiBfX2ZzcGF0aF9fKCkgbWV0aG9kCisgIHRoYXQgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCisgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQorICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KKworLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKKy0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgorICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTgwNTogU2tpcCBhIHRlc3QgaW4gdGVzdF9wa2d1dGlsIGFzIG5lZWRlZCB0aGF0IGRvZXNuJ3Qgd29yayB3aGVuCisgIGBgX19uYW1lX18gPT0gX19tYWluX19gYC4gUGF0Y2ggYnkgU2lsZW50R2hvc3QuCisKKy0gSXNzdWUgIzI3NDcyOiBBZGQgdGVzdC5zdXBwb3J0LnVuaXhfc2hlbGwgYXMgdGhlIHBhdGggdG8gdGhlIGRlZmF1bHQgc2hlbGwuCisKKy0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAorICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorCistIElzc3VlICMyNzU5NDogUHJldmVudCBhc3NlcnRpb24gZXJyb3Igd2hlbiBydW5uaW5nIHRlc3RfYXN0IHdpdGggY292ZXJhZ2UKKyAgZW5hYmxlZDogZW5zdXJlIGNvZGUgb2JqZWN0IGhhcyBhIHZhbGlkIGZpcnN0IGxpbmUgbnVtYmVyLgorICBQYXRjaCBzdWdnZXN0ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3NjQ3OiBVcGRhdGUgYnVuZGxlZCBUY2wvVGsgdG8gOC42LjYuCisKKy0gSXNzdWUgIzI3NjEwOiBBZGRzIFBFUCA1MTQgbWV0YWRhdGEgdG8gV2luZG93cyBpbnN0YWxsZXIKKworLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAorICB3b3JrcyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzI3MzA5OiBFbmFibGVzIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKKyAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKKworLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwLCB3aGljaCBpcworICByZXF1aXJlZCBvbiBBSVguICBUaGUgcmVmZXJlbmNlcyB3ZXJlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGluIDMuNS4wYTEuCisKKy0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5CisgIENoaSBIc3VhbiBZZW4uCisKKy0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQorICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQorICBjb21waWxlZC4KKworLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCisgIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgorCistIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgorICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA3LTExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjc0NzM6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gYnl0ZXMgYW5kIGJ5dGVhcnJheQorICBjb25jYXRlbmF0aW9ucy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyMzAzNDogVGhlIG91dHB1dCBvZiBhIHNwZWNpYWwgUHl0aG9uIGJ1aWxkIHdpdGggZGVmaW5lZCBDT1VOVF9BTExPQ1MsCisgIFNIT1dfQUxMT0NfQ09VTlQgb3IgU0hPV19UUkFDS19DT1VOVCBtYWNyb3MgaXMgbm93IG9mZiBieSAgZGVmYXVsdC4gIEl0IGNhbgorICBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSAiLVggc2hvd2FsbG9jY291bnQiIG9wdGlvbi4gIEl0IG5vdyBvdXRwdXRzIHRvIHN0ZGVycgorICBpbnN0ZWFkIG9mIHN0ZG91dC4KKworLSBJc3N1ZSAjMjc0NDM6IF9fbGVuZ3RoX2hpbnRfXygpIG9mIGJ5dGVhcnJheSBpdGVyYXRvcnMgbm8gbG9uZ2VyIHJldHVybiBhCisgIG5lZ2F0aXZlIGludGVnZXIgZm9yIGEgcmVzaXplZCBieXRlYXJyYXkuCisKKy0gSXNzdWUgIzI3MDA3OiBUaGUgZnJvbWhleCgpIGNsYXNzIG1ldGhvZHMgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBzdWJjbGFzc2VzCisgIG5vdyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgY29ycmVzcG9uZGluZyBzdWJjbGFzcy4KKworTGlicmFyeQorLS0tLS0tLQorCiAtIElzc3VlICMyNjg0NDogRml4IGVycm9yIG1lc3NhZ2UgZm9yIGltcC5maW5kX21vZHVsZSgpIHRvIHJlZmVyIHRvICdwYXRoJwogICBpbnN0ZWFkIG9mICduYW1lJy4gUGF0Y2ggYnkgTGV2IE1heGltb3YuCiAKQEAgLTM1NCwyMiArMTI1OSw1NCBAQAogICBjb25maXJtaW5nIHRoZSBuZXRzY2FwZSBjb29raWUgZm9ybWF0IGFuZCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoCiAgIGRvY3VtZW50YXRpb24uCiAKLS0gSXNzdWUgIzI2NjY0OiBGaXggYWN0aXZhdGUuZmlzaCBieSByZW1vdmluZyBtaXMtdXNlIG9mIGBgJGBgLgorLSBJc3N1ZSAjMjE3MDg6IERlcHJlY2F0ZWQgZGJtLmR1bWIgYmVoYXZpb3IgdGhhdCBkaWZmZXJzIGZyb20gY29tbW9uIGRibQorICBiZWhhdmlvcjogY3JlYXRpbmcgYSBkYXRhYmFzZSBpbiAncicgYW5kICd3JyBtb2RlcyBhbmQgbW9kaWZ5aW5nIGEgZGF0YWJhc2UKKyAgaW4gJ3InIG1vZGUuCiAKLS0gSXNzdWUgIzIyMTE1OiBGaXhlZCB0cmFjaW5nIFRraW50ZXIgdmFyaWFibGVzOiB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZwotICBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdyBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YKLSAgcGFpcnMgb2Ygc3RyaW5ncywgdHJhY2luZyBpbiB0aGUgInUiIG1vZGUgbm93IHdvcmtzLgorLSBJc3N1ZSAjMjY3MjE6IENoYW5nZSB0aGUgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLndmaWxlIGF0dHJpYnV0ZQorICB0byBpbXBsZW1lbnQgQnVmZmVyZWRJT0Jhc2UuIEluIHBhcnRpY3VsYXIsIHRoZSB3cml0ZSgpIG1ldGhvZCBubyBsb25nZXIKKyAgZG9lcyBwYXJ0aWFsIHdyaXRlcy4KIAotLSBGaXggYSBzY29waW5nIGlzc3VlIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIgd2hpY2ggdHJpZ2dlcmVkIGFuCi0gIFVuYm91bmRMb2NhbEVycm9yIHdoZW4gbGF6eS1sb2FkaW5nIGEgbW9kdWxlIHRoYXQgd2FzIGFscmVhZHkgcHV0IGludG8KLSAgc3lzLm1vZHVsZXMuCistIElzc3VlICMyMjExNTogQWRkZWQgbWV0aG9kcyB0cmFjZV9hZGQsIHRyYWNlX3JlbW92ZSBhbmQgdHJhY2VfaW5mbyBpbiB0aGUKKyAgdGtpbnRlci5WYXJpYWJsZSBjbGFzcy4gIFRoZXkgcmVwbGFjZSBvbGQgbWV0aG9kcyB0cmFjZV92YXJpYWJsZSwgdHJhY2UsCisgIHRyYWNlX3ZkZWxldGUgYW5kIHRyYWNlX3ZpbmZvIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKKyAgbm90IHdvcmsgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFRjbC4gIEZpeGVkIG9sZCB0cmFjaW5nIG1ldGhvZHM6CisgIHRyYWNlX3ZkZWxldGUoKSB3aXRoIHdyb25nIG1vZGUgbm8gbG9uZ2VyIGJyZWFrIHRyYWNpbmcsIHRyYWNlX3ZpbmZvKCkgbm93CisgIGFsd2F5cyByZXR1cm5zIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzLCB0cmFjaW5nIGluIHRoZSAidSIgbW9kZSBub3cgd29ya3MuCisKKy0gSXNzdWUgIzI2MjQzOiBPbmx5IHRoZSBsZXZlbCBhcmd1bWVudCB0byB6bGliLmNvbXByZXNzKCkgaXMga2V5d29yZCBhcmd1bWVudAorICBub3cuICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgcG9zaXRpb25hbC1vbmx5LgorCistIElzc3VlICMyNzAzODogRXhwb3NlIHRoZSBEaXJFbnRyeSB0eXBlIGFzIG9zLkRpckVudHJ5LiBDb2RlIHBhdGNoIGJ5CisgIEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNzE4NjogVXBkYXRlIG9zLmZzcGF0aCgpL1B5T1NfRlNQYXRoKCkgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZgorICBfX2ZzcGF0aF9fKCkgdG8gYmUgZWl0aGVyIHN0ciBvciBieXRlcy4KKworLSBJc3N1ZSAjMTg3MjY6IEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIG9mIHRoZSBkdW1wKCksIGR1bXBzKCksCisgIGxvYWQoKSBhbmQgbG9hZHMoKSBmdW5jdGlvbnMgYW5kIEpTT05FbmNvZGVyIGFuZCBKU09ORGVjb2RlciBjbGFzcworICBjb25zdHJ1Y3RvcnMgaW4gdGhlIGpzb24gbW9kdWxlIGFyZSBub3cga2V5d29yZC1vbmx5LgorCistIElzc3VlICMyNzMxOTogTWV0aG9kcyBzZWxlY3Rpb25fc2V0KCksIHNlbGVjdGlvbl9hZGQoKSwgc2VsZWN0aW9uX3JlbW92ZSgpCisgIGFuZCBzZWxlY3Rpb25fdG9nZ2xlKCkgb2YgdHRrLlRyZWVWaWV3IG5vdyBhbGxvdyBwYXNzaW5nIG11bHRpcGxlIGl0ZW1zIGFzCisgIG11bHRpcGxlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlbSBhcyBhIHR1cGxlLiAgRGVwcmVjYXRlZAorICB1bmRvY3VtZW50ZWQgYWJpbGl0eSBvZiBjYWxsaW5nIHRoZSBzZWxlY3Rpb24oKSBtZXRob2Qgd2l0aCBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzI3MDc5OiBGaXhlZCBjdXJzZXMuYXNjaWkgZnVuY3Rpb25zIGlzYmxhbmsoKSwgaXNjbnRybCgpIGFuZCBpc3B1bmN0KCkuCiAKKy0gSXNzdWUgIzI3Mjk0OiBOdW1lcmljYWwgc3RhdGUgaW4gdGhlIHJlcHIgZm9yIFRraW50ZXIgZXZlbnQgb2JqZWN0cyBpcyBub3cKKyAgcmVwcmVzZW50ZWQgYXMgYSBjb21iaW5hdGlvbiBvZiBrbm93biBmbGFncy4KKworLSBJc3N1ZSAjMjcxNzc6IE1hdGNoIG9iamVjdHMgaW4gdGhlIHJlIG1vZHVsZSBub3cgc3VwcG9ydCBpbmRleC1saWtlIG9iamVjdHMKKyAgYXMgZ3JvdXAgaW5kaWNlcy4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgSmVyb2VuIERlbWV5ZXIgYW5kIFhpYW5nIFpoYW5nLgorCiAtIElzc3VlICMyNjc1NDogU29tZSBmdW5jdGlvbnMgKGNvbXBpbGUoKSBldGMpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQKICAgZW5jb2RlZCBhcyBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZS1saWtlIG9iamVjdHMKICAgYXJlIGFjY2VwdGVkLgogCistIElzc3VlICMyNjUzNjogc29ja2V0LmlvY3RsIG5vdyBzdXBwb3J0cyBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRILiBQYXRjaCBieQorICBEYW5pZWwgU3Rva2VzLgorCiAtIElzc3VlICMyNzA0ODogUHJldmVudHMgZGlzdHV0aWxzIGZhaWxpbmcgb24gV2luZG93cyB3aGVuIGVudmlyb25tZW50CiAgIHZhcmlhYmxlcyBjb250YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzCiAKQEAgLTM4OCw5ICsxMzI1LDE1IEBACiAgIExpbnV4LiAgVHJ1bmNhdGUgc2l6ZSB0byBJTlRfTUFYIGFuZCBsb29wIHVudGlsIHdlIGNvbGxlY3RlZCBlbm91Z2ggcmFuZG9tCiAgIGJ5dGVzLCBpbnN0ZWFkIG9mIGNhc3RpbmcgYSBkaXJlY3RseSBQeV9zc2l6ZV90IHRvIGludC4KIAorLSBJc3N1ZSAjMTY4NjQ6IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCBub3cgc3VwcG9ydHMgUkVQTEFDRSBzdGF0ZW1lbnQuCisgIEluaXRpYWwgcGF0Y2ggYnkgQWxleCBMb3JkVGhvcnNlbi4KKwogLSBJc3N1ZSAjMjYzODY6IEZpeGVkIHR0ay5UcmVlVmlldyBzZWxlY3Rpb24gb3BlcmF0aW9ucyB3aXRoIGl0ZW0gaWQncwogICBjb250YWluaW5nIHNwYWNlcy4KIAorLSBJc3N1ZSAjODYzNzogSG9ub3IgYSBwYWdlciBzZXQgYnkgdGhlIGVudiB2YXIgTUFOUEFHRVIgKGluIHByZWZlcmVuY2UgdG8KKyAgb25lIHNldCBieSB0aGUgZW52IHZhciBQQUdFUikuCisKIC0gW1NlY3VyaXR5XSBJc3N1ZSAjMjI2MzY6IEF2b2lkIHNoZWxsIGluamVjdGlvbiBwcm9ibGVtcyB3aXRoCiAgIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpLgogCkBAIC00MDEsMjQwICsxMzQ0LDQwMCBAQAogLSBJc3N1ZSAjMjczOTI6IEFkZCBsb29wLmNvbm5lY3RfYWNjZXB0ZWRfc29ja2V0KCkuCiAgIFBhdGNoIGJ5IEppbSBGdWx0b24uCiAKLS0gSXNzdWUgIzI3OTMwOiBJbXByb3ZlZCBiZWhhdmlvdXIgb2YgbG9nZ2luZy5oYW5kbGVycy5RdWV1ZUxpc3RlbmVyLgotICBUaGFua3MgdG8gUGF1bG8gQW5kcmFkZSBhbmQgUGV0ciBWaWt0b3JpbiBmb3IgdGhlIGFuYWx5c2lzIGFuZCBwYXRjaC4KLQotLSBJc3N1ZSAjMjEyMDE6IEltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIG11bHRpcHJvY2Vzc2luZyBlcnJvciBtZXNzYWdlLiAgVGhhbmtzCi0gIHRvIFdvamNpZWNoIFdhbGN6YWsgZm9yIHBhdGNoLgotCi0tIElzc3VlICMyNzQ1NjogYXN5bmNpbzogU2V0IFRDUF9OT0RFTEFZIGJ5IGRlZmF1bHQuCi0KLS0gSXNzdWUgIzI3OTA2OiBGaXggc29ja2V0IGFjY2VwdCBleGhhdXN0aW9uIGR1cmluZyBoaWdoIFRDUCB0cmFmZmljLgotICBQYXRjaCBieSBLZXZpbiBDb253YXkuCi0KLS0gSXNzdWUgIzI4MTc0OiBIYW5kbGUgd2hlbiBTT19SRVVTRVBPUlQgaXNuJ3QgcHJvcGVybHkgc3VwcG9ydGVkLgotICBQYXRjaCBieSBTZXRoIE1pY2hhZWwgTGFyc29uLgotCi0tIElzc3VlICMyNjY1NDogSW5zcGVjdCBmdW5jdG9vbHMucGFydGlhbCBpbiBhc3luY2lvLkhhbmRsZS5fX3JlcHJfXy4KLSAgUGF0Y2ggYnkgaWNlYm95LgotCi0tIElzc3VlICMyNjkwOTogRml4IHNsb3cgcGlwZXMgSU8gaW4gYXN5bmNpby4KLSAgUGF0Y2ggYnkgSU5BREEgTmFva2kuCi0KLS0gSXNzdWUgIzI4MTc2OiBGaXggY2FsbGJhY2tzIHJhY2UgaW4gYXN5bmNpby5TZWxlY3Rvckxvb3Auc29ja19jb25uZWN0LgotCi0tIElzc3VlICMyNzc1OTogRml4IHNlbGVjdG9ycyBpbmNvcnJlY3RseSByZXRhaW4gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLgotICBQYXRjaCBieSBNYXJrIFdpbGxpYW1zLgotCi0tIElzc3VlICMyODM2ODogUmVmdXNlIG1vbml0b3JpbmcgcHJvY2Vzc2VzIGlmIHRoZSBjaGlsZCB3YXRjaGVyIGhhcwotICBubyBsb29wIGF0dGFjaGVkLgotICBQYXRjaCBieSBWaW5jZW50IE1pY2hlbC4KLQotLSBJc3N1ZSAjMjgzNjk6IFJhaXNlIFJ1bnRpbWVFcnJvciB3aGVuIHRyYW5zcG9ydCdzIEZEIGlzIHVzZWQgd2l0aAotICBhZGRfcmVhZGVyLCBhZGRfd3JpdGVyLCBldGMuCi0KLS0gSXNzdWUgIzI4MzcwOiBTcGVlZHVwIGFzeW5jaW8uU3RyZWFtUmVhZGVyLnJlYWRleGFjdGx5LgotICBQYXRjaCBieSDQmtC+0YDQtdC90LHQtdGA0LMg0JzQsNGA0LouCi0KLS0gSXNzdWUgIzI4MzcxOiBEZXByZWNhdGUgcGFzc2luZyBhc3luY2lvLkhhbmRsZXMgdG8gcnVuX2luX2V4ZWN1dG9yLgotCi0tIElzc3VlICMyODM3MjogRml4IGFzeW5jaW8gdG8gc3VwcG9ydCBmb3JtYXR0aW5nIG9mIG5vbi1weXRob24gY29yb3V0aW5lcy4KLQotLSBJc3N1ZSAjMjgzOTk6IFJlbW92ZSBVTklYIHNvY2tldCBmcm9tIEZTIGJlZm9yZSBiaW5kaW5nLgotICBQYXRjaCBieSDQmtC+0YDQtdC90LHQtdGA0LMg0JzQsNGA0LouCi0KLS0gSXNzdWUgIzI3OTcyOiBQcm9oaWJpdCBUYXNrcyB0byBhd2FpdCBvbiB0aGVtc2VsdmVzLgotCi0tIElzc3VlICMyNjkyMzogRml4IGFzeW5jaW8uR2F0aGVyIHRvIHJlZnVzZSBiZWluZyBjYW5jZWxsZWQgb25jZSBhbGwgCi0gIGNoaWxkcmVuIGFyZSBkb25lLgotICBQYXRjaCBieSBKb2hhbm5lcyBFYmtlLgotCi0tIElzc3VlICMyNjc5NjogRG9uJ3QgY29uZmlndXJlIHRoZSBudW1iZXIgb2Ygd29ya2VycyBmb3IgZGVmYXVsdCAKLSAgdGhyZWFkcG9vbCBleGVjdXRvci4KLSAgSW5pdGlhbCBwYXRjaCBieSBIYW5zIExhd3JlbnouCi0KLS0gSXNzdWUgIzI4NjAwOiBPcHRpbWl6ZSBsb29wLmNhbGxfc29vbigpLgotCi0tIElzc3VlICMyODYxMzogRml4IGdldF9ldmVudF9sb29wKCkgcmV0dXJuIHRoZSBjdXJyZW50IGxvb3AgaWYgCi0gIGNhbGxlZCBmcm9tIGNvcm91dGluZXMvY2FsbGJhY2tzLgotCi0tIElzc3VlICMyODYzOTogRml4IGluc3BlY3QuaXNhd2FpdGFibGUgdG8gYWx3YXlzIHJldHVybiBib29sCi0gIFBhdGNoIGJ5IEp1c3RpbiBNYXlmaWVsZC4KLQotLSBJc3N1ZSAjMjg2NTI6IE1ha2UgbG9vcCBtZXRob2RzIHJlamVjdCBzb2NrZXQga2luZHMgdGhleSBkbyBub3Qgc3VwcG9ydC4KLQotLSBJc3N1ZSAjMjg2NTM6IEZpeCBhIHJlZmxlYWsgaW4gZnVuY3Rvb2xzLmxydV9jYWNoZS4KLQotLSBJc3N1ZSAjMjg3MDM6IEZpeCBhc3luY2lvLmlzY29yb3V0aW5lZnVuY3Rpb24gdG8gaGFuZGxlIE1vY2sgb2JqZWN0cy4KLQogSURMRQogLS0tLQogCi0tIElzc3VlICMxNTMwODogQWRkICdpbnRlcnJ1cHQgZXhlY3V0aW9uJyAoXkMpIHRvIFNoZWxsIG1lbnUuCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LCB1cGRhdGVkIGJ5IEJheWFyZCBSYW5kZWwuCistIElzc3VlICMyNzQ3NzogSURMRSBzZWFyY2ggZGlhbG9ncyBub3cgdXNlIHR0ayB3aWRnZXRzLgogCi0tIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgorLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KIAotLSBBZGQgdmVyc2lvbiB0byB0aXRsZSBvZiBJRExFIGhlbHAgd2luZG93LgotCi0tIElzc3VlICMyNTU2NDogSW4gc2VjdGlvbiBvbiBJRExFIC0tIGNvbnNvbGUgZGlmZmVyZW5jZXMsIG1lbnRpb24gdGhhdAotICB1c2luZyBleGVjIG1lYW5zIHRoYXQgX19idWlsdGluc19fIGlzIGRlZmluZWQgZm9yIGVhY2ggc3RhdGVtZW50LgotCi0tIElzc3VlICMyNzcxNDogdGV4dF90ZXh0dmlldyBhbmQgdGVzdF9hdXRvY29tcGxldGUgbm93IHBhc3Mgd2hlbiByZS1ydW4KLSAgaW4gdGhlIHNhbWUgcHJvY2Vzcy4gIFRoaXMgb2NjdXJzIHdoZW4gdGVzdF9pZGxlIGZhaWxzIHdoZW4gcnVuIHdpdGggdGhlCi0gIC13IG9wdGlvbiBidXQgd2l0aG91dCAtam4uICBGaXggd2FybmluZyBmcm9tIHRlc3RfY29uZmlnLgotCi0tIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KLSAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KKy0gSXNzdWUgIzI3NDUyOiBtYWtlIGNvbW1hbmQgbGluZSAiaWRsZS10ZXN0PiBweXRob24gdGVzdF9oZWxwLnB5IiB3b3JrLgorICBfX2ZpbGVfXyBpcyByZWxhdGl2ZSB3aGVuIHB5dGhvbiBpcyBzdGFydGVkIGluIHRoZSBmaWxlJ3MgZGlyZWN0b3J5LgogCiAtIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCiAKKy0gSXNzdWUgIzI3MzgwOiBJRExFOiBhZGQgcXVlcnkucHkgd2l0aCBiYXNlIFF1ZXJ5IGRpYWxvZyBhbmQgdHRrIHdpZGdldHMuCisgIE1vZHVsZSBoYWQgc3ViY2xhc3NlcyBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UsIHdoaWNoIGFyZQorICB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbiBmcm9tIHVzZXJzIGJ5IGNvbmZpZ2RpYWxvZyBhbmQgZmlsZSA9PkxvYWQgTW9kdWxlLgorICBFYWNoIHN1YmNsYXNzIGhhcyBpdHcgb3duIHZhbGlkaXR5IGNoZWNrcy4gIFVzaW5nIE1vZHVsZU5hbWUgYWxsb3dzIHVzZXJzCisgIHRvIGVkaXQgYmFkIG1vZHVsZSBuYW1lcyBpbnN0ZWFkIG9mIHN0YXJ0aW5nIG92ZXIuCisgIEFkZCB0ZXN0cyBhbmQgZGVsZXRlIHRoZSB0d28gZmlsZXMgY29tYmluZWQgaW50byB0aGUgbmV3IG9uZS4KKworLSBJc3N1ZSAjMjczNzI6IFRlc3RfaWRsZSBubyBsb25nZXIgY2hhbmdlcyB0aGUgbG9jYWxlLgorCiAtIElzc3VlICMyNzM2NTogQWxsb3cgbm9uLWFzY2lpIGNoYXJzIGluIElETEUgTkVXUy50eHQsIGZvciBjb250cmlidXRvciBuYW1lcy4KIAogLSBJc3N1ZSAjMjcyNDU6IElETEU6IENsZWFubHkgZGVsZXRlIGN1c3RvbSB0aGVtZXMgYW5kIGtleSBiaW5kaW5ncy4KICAgUHJldmlvdXNseSwgd2hlbiBJRExFIHdhcyBzdGFydGVkIGZyb20gYSBjb25zb2xlIG9yIGJ5IGltcG9ydCwgYSBjYXNjYWRlCiAgIG9mIHdhcm5pbmdzIHdhcyBlbWl0dGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQxMzc6IFJ1biBJRExFLCB0ZXN0X2lkbGUsIGFuZCBodGVzdCB3aXRoIHRraW50ZXIgZGVmYXVsdCByb290CisgIGRpc2FibGVkLiAgRml4IGNvZGUgYW5kIHRlc3RzIHRoYXQgZmFpbCB3aXRoIHRoaXMgcmVzdHJpY3Rpb24uICBGaXggaHRlc3RzIHRvCisgIG5vdCBjcmVhdGUgYSBzZWNvbmQgYW5kIHJlZHVuZGFudCByb290IGFuZCBtYWlubG9vcC4KKworLSBJc3N1ZSAjMjczMTA6IEZpeCBJRExFLmFwcCBmYWlsdXJlIHRvIGxhdW5jaCBvbiBPUyBYIGR1ZSB0byB2ZXN0aWdpYWwgaW1wb3J0LgorCiBDIEFQSQogLS0tLS0KIAogLSBJc3N1ZSAjMjY3NTQ6IFB5VW5pY29kZV9GU0RlY29kZXIoKSBhY2NlcHRlZCBhIGZpbGVuYW1lIGFyZ3VtZW50IGVuY29kZWQgYXMKLSAgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGVzLWxpa2Ugb2JqZWN0cyBhcmUgYWNjZXB0ZWQuCisgIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzLiBOb3cgb25seSBzdHJpbmdzIGFuZCBieXRlLWxpa2Ugb2JqZWN0cyBhcmUgYWNjZXB0ZWQuCiAKLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjg1MTM6IERvY3VtZW50ZWQgY29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB6aXBmaWxlLgotCi1UZXN0cworQnVpbGQKIC0tLS0tCiAKLS0gSXNzdWUgIzIzODM5OiBWYXJpb3VzIGNhY2hlcyBub3cgYXJlIGNsZWFyZWQgYmVmb3JlIHJ1bm5pbmcgZXZlcnkgdGVzdCBmaWxlLgorLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCisgIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KIAotLSBJc3N1ZSAjMjg0MDk6IHJlZ3J0ZXN0OiBmaXggdGhlIHBhcnNlciBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgorLSBJc3N1ZSAjMjc0NDI6IEV4cG9zZSB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwgdGhhdCBweXRob24gd2FzIGJ1aWx0IGFnYWluc3QsIGluCisgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSBhcyAnQU5EUk9JRF9BUElfTEVWRUwnLgogCi0tIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCi0gIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorLSBJc3N1ZSAjMjc0MzQ6IFRoZSBpbnRlcnByZXRlciB0aGF0IHJ1bnMgdGhlIGNyb3NzLWJ1aWxkLCBmb3VuZCBpbiBQQVRILCBtdXN0CisgIG5vdyBiZSBvZiB0aGUgc2FtZSBmZWF0dXJlIHZlcnNpb24gKGUuZy4gMy42KSBhcyB0aGUgc291cmNlIGJlaW5nIGJ1aWx0LgogCi0tIElzc3VlICMyNzM2OTogSW4gdGVzdF9weWV4cGF0LCBhdm9pZCB0ZXN0aW5nIGFuIGVycm9yIG1lc3NhZ2UgZGV0YWlsIHRoYXQKLSAgY2hhbmdlZCBpbiBFeHBhdCAyLjIuMC4KKy0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJoLgorCistIElzc3VlICMyMzk2ODogUmVuYW1lIHRoZSBwbGF0Zm9ybSBkaXJlY3RvcnkgZnJvbSBwbGF0LSQoTUFDSERFUCkgdG8KKyAgcGxhdC0kKFBMQVRGT1JNX1RSSVBMRVQpLgorICBSZW5hbWUgdGhlIGNvbmZpZyBkaXJlY3RvcnkgKExJQlBMKSBmcm9tIGNvbmZpZy0kKExEVkVSU0lPTikgdG8KKyAgY29uZmlnLSQoTERWRVJTSU9OKS0kKFBMQVRGT1JNX1RSSVBMRVQpLgorICBJbnN0YWxsIHRoZSBwbGF0Zm9ybSBzcGVjaWZjIF9zeXNjb25maWdkYXRhIG1vZHVsZSBpbnRvIHRoZSBwbGF0Zm9ybQorICBkaXJlY3RvcnkgYW5kIHJlbmFtZSBpdCB0byBpbmNsdWRlIHRoZSBBQklGTEFHUy4KKworLSBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkLgogCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjc5NTI6IEdldCBUb29scy9zY3JpcHRzL2ZpeGNpZC5weSB3b3JraW5nIHdpdGggUHl0aG9uIDMgYW5kIHRoZQotICBjdXJyZW50ICJyZSIgbW9kdWxlLCBhdm9pZCBpbnZhbGlkIFB5dGhvbiBiYWNrc2xhc2ggZXNjYXBlcywgYW5kIGZpeCBhIGJ1ZwotICBwYXJzaW5nIGVzY2FwZWQgQyBxdW90ZSBzaWducy4KLQogLSBJc3N1ZSAjMjczMzI6IEZpeGVkIHRoZSB0eXBlIG9mIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBtb2R1bGUtbGV2ZWwgZnVuY3Rpb25zCiAgIGdlbmVyYXRlZCBieSBBcmd1bWVudCBDbGluaWMuICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgogCiAtIElzc3VlICMyNzQxODogRml4ZWQgVG9vbHMvaW1wb3J0YmVuY2gvaW1wb3J0YmVuY2gucHkuCiAKLVdpbmRvd3MKLS0tLS0tLS0KK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjgyNTE6IEltcHJvdmVtZW50cyB0byBoZWxwIG1hbnVhbHMgb24gV2luZG93cy4KKy0gSXNzdWUgIzE5NDg5OiBNb3ZlZCB0aGUgc2VhcmNoIGJveCBmcm9tIHRoZSBzaWRlYmFyIHRvIHRoZSBoZWFkZXIgYW5kIGZvb3RlcgorICBvZiBlYWNoIHBhZ2UuICBQYXRjaCBieSBBbW1hciBBc2thci4KIAotLSBJc3N1ZSAjMjgxMTA6IGxhdW5jaGVyLm1zaSBoYXMgZGlmZmVyZW50IHByb2R1Y3QgY29kZXMgYmV0d2VlbiAzMi1iaXQgYW5kCi0gIDY0LWJpdAotCi0tIElzc3VlICMyNTE0NDogRW5zdXJlcyBUYXJnZXREaXIgaXMgc2V0IGJlZm9yZSBjb250aW51aW5nIHdpdGggY3VzdG9tCi0gIGluc3RhbGwuCi0KLS0gSXNzdWUgIzI3NDY5OiBBZGRzIGEgc2hlbGwgZXh0ZW5zaW9uIHRvIHRoZSBsYXVuY2hlciBzbyB0aGF0IGRyYWcgYW5kIGRyb3AKLSAgd29ya3MgY29ycmVjdGx5LgotCi0tIElzc3VlICMyNzMwOTogRW5hYmxlZCBwcm9wZXIgV2luZG93cyBzdHlsZXMgaW4gcHl0aG9uW3ddLmV4ZSBtYW5pZmVzdC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzI4NDQ0OiBGaXggbWlzc2luZyBleHRlbnNpb25zIG1vZHVsZXMgd2hlbiBjcm9zcyBjb21waWxpbmcuCi0KLS0gSXNzdWUgIzI4MjQ4OiBVcGRhdGUgV2luZG93cyBidWlsZCBhbmQgT1MgWCBpbnN0YWxsZXJzIHRvIHVzZSBPcGVuU1NMIDEuMC4yai4KLQotLSBJc3N1ZSAjMjgyNTg6IEZpeGVkIGJ1aWxkIHdpdGggRXN0b25pYW4gbG9jYWxlIChweXRob24tY29uZmlnIGFuZCBkaXN0Y2xlYW4KLSAgdGFyZ2V0cyBpbiBNYWtlZmlsZSkuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KLQotLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KLQotLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCi0gIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMTU4MTk6IFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBzZWFyY2ggZGlyZWN0b3J5IG9wdGlvbiBmb3IgYnVpbGRpbmcKLSAgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzI3NTY2OiBGaXggY2xlYW4gdGFyZ2V0IGluIGZyZWV6ZSBtYWtlZmlsZSAocGF0Y2ggYnkgTGlzYSBSb2FjaCkKLQotLSBJc3N1ZSAjMjc3MDU6IFVwZGF0ZSBtZXNzYWdlIGluIHZhbGlkYXRlX3VjcnRiYXNlLnB5Ci0KLS0gSXNzdWUgIzI3OTgzOiBDYXVzZSBsYWNrIG9mIGxsdm0tcHJvZmRhdGEgdG9vbCB3aGVuIHVzaW5nIGNsYW5nIGFzCi0gIHJlcXVpcmVkIGZvciBQR08gbGlua2luZyB0byBiZSBhIGNvbmZpZ3VyZSB0aW1lIGVycm9yIHJhdGhlciB0aGFuCi0gIG1ha2UgdGltZSB3aGVuIC0td2l0aC1vcHRpbWl6YXRpb25zIGlzIGVuYWJsZWQuICBBbHNvIGltcHJvdmUgb3VyCi0gIGFiaWxpdHkgdG8gZmluZCB0aGUgbGx2bS1wcm9mZGF0YSB0b29sIG9uIE1hY09TIGFuZCBzb21lIExpbnV4ZXMuCi0KLS0gSXNzdWUgIzI2MzA3OiBUaGUgcHJvZmlsZS1vcHQgYnVpbGQgbm93IGFwcGxpZXMgUEdPIHRvIHRoZSBidWlsdC1pbiBtb2R1bGVzLgotCi0tIElzc3VlICMyNjM1OTogQWRkIHRoZSAtLXdpdGgtb3B0aW1pemF0aW9ucyBjb25maWd1cmUgZmxhZy4KLQotLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKLSAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKLQotLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwIGFuZCBsZF9zb19haXgsCi0gIHdoaWNoIGFyZSByZXF1aXJlZCBvbiBBSVguICBUaGlzIHVwZGF0ZXMgcmVmZXJlbmNlcyB0byBhbiBpbnN0YWxsYXRpb24gcGF0aAotICB0aGF0IHdhcyBjaGFuZ2VkIGluIDMuMmE0LCBhbmQgdW5kb2VzIGNoYW5nZWQgcmVmZXJlbmNlcyB0byB0aGUgYnVpbGQgdHJlZQotICB0aGF0IHdlcmUgbWFkZSBpbiAzLjUuMGExLgotCi0tIElzc3VlICMyNzQ1MzogQ1BQIGludm9jYXRpb24gaW4gY29uZmlndXJlIG11c3QgdXNlIENQUEZMQUdTLiBQYXRjaCBieQotICBDaGkgSHN1YW4gWWVuLgotCi0tIElzc3VlICMyNzY0MTogVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGluc2VydHMgY29tbWVudHMgaW50byB0aGUgbWFrZWZpbGUKLSAgdG8gcHJldmVudCB0aGUgcGdlbiBhbmQgX2ZyZWV6ZV9pbXBvcnRsaWIgZXhlY3V0YWJsZXMgZnJvbSBiZWluZyBjcm9zcy0KLSAgY29tcGlsZWQuCi0KLS0gSXNzdWUgIzI2NjYyOiBTZXQgUFlUSE9OX0ZPUl9HRU4gaW4gY29uZmlndXJlIGFzIHRoZSBQeXRob24gcHJvZ3JhbSB0byBiZQotICB1c2VkIGZvciBmaWxlIGdlbmVyYXRpb24gZHVyaW5nIHRoZSBidWlsZC4KLQotLSBJc3N1ZSAjMTA5MTA6IEF2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4KLSAgQWxzbyB1cGRhdGUgRnJlZWRCU0QgdmVyc2lvbiBjaGVja3MgZm9yIHRoZSBvcmlnaW5hbCBjdHlwZSBVVEYtOCB3b3JrYXJvdW5kLgotCi0tIElzc3VlICMyODY3NjogUHJldmVudCBtaXNzaW5nICdnZXRlbnRyb3B5JyBkZWNsYXJhdGlvbiB3YXJuaW5nIG9uIG1hY09TLgotICBQYXRjaCBieSBHYXJldGggUmVlcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1SZWxlYXNlIGRhdGU6IDIwMTYtMDYtMjYKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJoLgorLSBJc3N1ZSAjMjcyODU6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3QgdGhlIGRlcHJlY2F0aW9uIG9mIGBgcHl2ZW52YGAKKyAgYW5kIG5vcm1hbGl6ZSBvbiB0aGUgdGVybSAidmlydHVhbCBlbnZpcm9ubWVudCIuIFBhdGNoIGJ5IFN0ZXZlIFBpZXJjeS4KIAogVGVzdHMKIC0tLS0tCiAKLS0gSXNzdWUgIzI2ODY3OiBVYnVudHUncyBvcGVuc3NsIE9QX05PX1NTTHYzIGlzIGZvcmNlZCBvbiBieSBkZWZhdWx0OyBmaXggdGVzdC4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMyNzM2NTogQWxsb3cgbm9uLWFzY2lpIGluIGlkbGVsaWIvTkVXUy50eHQgLSBtaW5pbWFsIHBhcnQgZm9yIDMuNS4yLgorLSBJc3N1ZSAjMjcwMjc6IEFkZGVkIHRlc3Quc3VwcG9ydC5pc19hbmRyb2lkIHRoYXQgaXMgVHJ1ZSB3aGVuIHRoaXMgaXMgYW4KKyAgQW5kcm9pZCBidWlsZC4KIAogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMiByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTEyCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTEzKgogCiBDb3JlIGFuZCBCdWlsdGlucwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMjcwOTU6IFNpbXBsaWZpZWQgTUFLRV9GVU5DVElPTiBhbmQgcmVtb3ZlZCBNQUtFX0NMT1NVUkUgb3Bjb2Rlcy4KKyAgUGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzI3MTkwOiBSYWlzZSBOb3RTdXBwb3J0ZWRFcnJvciBpZiBzcWxpdGUzIGlzIG9sZGVyIHRoYW4gMy4zLjEuCisgIFBhdGNoIGJ5IERhdmUgU2F3eWVyLgorCistIElzc3VlICMyNzI4NjogRml4ZWQgY29tcGlsaW5nIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMIG9wY29kZS4gIENhbGxpbmcKKyAgZnVuY3Rpb24gd2l0aCBnZW5lcmFsaXplZCB1bnBhY2tpbmcgKFBFUCA0NDgpIGFuZCBjb25mbGljdGluZyBrZXl3b3JkIG5hbWVzCisgIGNvdWxkIGNhdXNlIHVuZGVmaW5lZCBiZWhhdmlvci4KKworLSBJc3N1ZSAjMjcxNDA6IEFkZGVkIEJVSUxEX0NPTlNUX0tFWV9NQVAgb3Bjb2RlLgorCistIElzc3VlICMyNzE4NjogQWRkIHN1cHBvcnQgZm9yIG9zLlBhdGhMaWtlIG9iamVjdHMgdG8gb3BlbigpIChwYXJ0IG9mIFBFUCA1MTkpLgorCiAtIElzc3VlICMyNzA2NjogRml4ZWQgU3lzdGVtRXJyb3IgaWYgYSBjdXN0b20gb3BlbmVyIChmb3Igb3BlbigpKSByZXR1cm5zIGEKICAgbmVnYXRpdmUgbnVtYmVyIHdpdGhvdXQgc2V0dGluZyBhbiBleGNlcHRpb24uCiAKKy0gSXNzdWUgIzI2OTgzOiBmbG9hdCgpIG5vdyBhbHdheXMgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGV4YWN0IGZsb2F0LgorICBUaGUgZGVwcmVjYXRpb24gd2FybmluZyBpcyBlbWl0dGVkIGlmIF9fZmxvYXRfXyByZXR1cm5zIGFuIGluc3RhbmNlIG9mCisgIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGZsb2F0LiAgSW4gYSBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uIHRoaXMgY2FuCisgIGJlIGFuIGVycm9yLgorCistIElzc3VlICMyNzA5NzogUHl0aG9uIGludGVycHJldGVyIGlzIG5vdyBhYm91dCA3JSBmYXN0ZXIgZHVlIHRvIG9wdGltaXplZAorICBpbnN0cnVjdGlvbiBkZWNvZGluZy4gIEJhc2VkIG9uIHBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyNjY0NzogUHl0aG9uIGludGVycHJldGVyIG5vdyB1c2VzIDE2LWJpdCB3b3JkY29kZSBpbnN0ZWFkIG9mIGJ5dGVjb2RlLgorICBQYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjMyNzU6IEFsbG93IGFzc2lnbmluZyB0byBhbiBlbXB0eSB0YXJnZXQgbGlzdCBpbiByb3VuZCBicmFja2V0czoKKyAgKCkgPSBpdGVyYWJsZS4KKworLSBJc3N1ZSAjMjcyNDM6IFVwZGF0ZSB0aGUgX19haXRlcl9fIHByb3RvY29sOiBpbnN0ZWFkIG9mIHJldHVybmluZworICBhbiBhd2FpdGFibGUgdGhhdCByZXNvbHZlcyB0byBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IsIHRoZSBhc3luY2hyb25vdXMKKyAgaXRlcmF0b3Igc2hvdWxkIGJlIHJldHVybmVkIGRpcmVjdGx5LiAgRG9pbmcgdGhlIGZvcm1lciB3aWxsIHRyaWdnZXIgYQorICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLgorCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBDb21tZW50IG91dCBzb2NrZXQgKFNPX1JFVVNFUE9SVCkgYW5kIHBvc2l4IChPX1NITE9DSywgT19FWExPQ0spIGNvbnN0YW50cworICBleHBvc2VkIG9uIHRoZSBBUEkgd2hpY2ggYXJlIG5vdCBpbXBsZW1lbnRlZCBvbiBHTlUvSHVyZC4gVGhleSB3b3VsZCBub3QKKyAgd29yayBhdCBydW50aW1lIGFueXdheS4KKworLSBJc3N1ZSAjMjcwMjU6IEdlbmVyYXRlZCBuYW1lcyBmb3IgVGtpbnRlciB3aWRnZXRzIGFyZSBub3cgbW9yZSBtZWFuZnVsCisgIGFuZCByZWNvZ25pemlyYWJsZS4KKworLSBJc3N1ZSAjMjU0NTU6IEZpeGVkIGNyYXNoZXMgaW4gcmVwciBvZiByZWN1cnNpdmUgRWxlbWVudFRyZWUuRWxlbWVudCBhbmQKKyAgZnVuY3Rvb2xzLnBhcnRpYWwgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjcyOTQ6IEltcHJvdmVkIHJlcHIgZm9yIFRraW50ZXIgZXZlbnQgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjA1MDg6IEltcHJvdmUgZXhjZXB0aW9uIG1lc3NhZ2Ugb2YgSVB2ezQsNn1OZXR3b3JrLl9fZ2V0aXRlbV9fLgorICBQYXRjaCBieSBHYXJldGggUmVlcy4KKworLSBbU2VjdXJpdHldIElzc3VlICMyNjU1NjogVXBkYXRlIGV4cGF0IHRvIDIuMS4xLCBmaXhlcyBDVkUtMjAxNS0xMjgzLgorCistIFtTZWN1cml0eV0gRml4IFRMUyBzdHJpcHBpbmcgdnVsbmVyYWJpbGl0eSBpbiBzbXRwbGliLCBDVkUtMjAxNi0wNzcyLgorICBSZXBvcnRlZCBieSBUZWFtIE9zdHN0cm9tLgorCistIElzc3VlICMyMTM4NjogSW1wbGVtZW50IG1pc3NpbmcgSVB2NEFkZHJlc3MuaXNfZ2xvYmFsIHByb3BlcnR5LiAgSXQgd2FzCisgIGRvY3VtZW50ZWQgc2luY2UgMDdhNTYxMGJhZTlkLiAgSW5pdGlhbCBwYXRjaCBieSBSb2dlciBMdWV0aGkuCisKKy0gSXNzdWUgIzI3MDI5OiBSZW1vdmVkIGRlcHJlY2F0ZWQgc3VwcG9ydCBvZiB1bml2ZXJzYWwgbmV3bGluZXMgbW9kZSBmcm9tCisgIFppcEZpbGUub3BlbigpLgorCistIElzc3VlICMyNzAzMDogVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyIGluCisgIHJlZ3VsYXIgZXhwcmVzc2lvbnMgbm93IGFyZSBlcnJvcnMuICBUaGUgcmUuTE9DQUxFIGZsYWcgbm93IGNhbiBiZSB1c2VkCisgIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBvcy5QYXRoTGlrZSBzdXBwb3J0IHRvIERpckVudHJ5IChwYXJ0IG9mIFBFUCA1MTkpLgorICBJbml0aWFsIHBhdGNoIGJ5IEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyMDkwMDogZGlzdHV0aWxzIHJlZ2lzdGVyIGNvbW1hbmQgbm93IGRlY29kZXMgSFRUUCByZXNwb25zZXMKKyAgY29ycmVjdGx5LiAgSW5pdGlhbCBwYXRjaCBieSBpbmdyaWQuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgb3MuUGF0aExpa2Ugc3VwcG9ydCB0byBwYXRobGliLCByZW1vdmluZyBpdHMgcHJvdmlzaW9uYWwKKyAgc3RhdHVzIChwYXJ0IG9mIFBFUCA1MTkpLiBJbml0aWFsIHBhdGNoIGJ5IER1c3R5IFBoaWxsaXBzLgorCistIElzc3VlICMyNzE4NjogQWRkIHN1cHBvcnQgZm9yIG9zLlBhdGhMaWtlIG9iamVjdHMgdG8gb3MuZnNlbmNvZGUoKSBhbmQKKyAgb3MuZnNkZWNvZGUoKSAocGFydCBvZiBQRVAgNTE5KS4KKworLSBJc3N1ZSAjMjcxODY6IEludHJvZHVjZSBvcy5QYXRoTGlrZSBhbmQgb3MuZnNwYXRoKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKKy0gQSBuZXcgdmVyc2lvbiBvZiB0eXBpbmcucHkgcHJvdmlkZXMgc2V2ZXJhbCBuZXcgY2xhc3NlcyBhbmQKKyAgZmVhdHVyZXM6IEBvdmVybG9hZCBvdXRzaWRlIHN0dWJzLCBSZXZlcnNpYmxlLCBEZWZhdWx0RGljdCwgVGV4dCwKKyAgQ29udGV4dE1hbmFnZXIsIFR5cGVbXSwgTmV3VHlwZSgpLCBUWVBFX0NIRUNLSU5HLCBhbmQgbnVtZXJvdXMgYnVnCisgIGZpeGVzIChub3RlIHRoYXQgc29tZSBvZiB0aGUgbmV3IGZlYXR1cmVzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkIGluCisgIG15cHkgb3Igb3RoZXIgc3RhdGljIGFuYWx5emVycykuICBBbHNvIGNsYXNzZXMgZm9yIFBFUCA0OTIKKyAgKEF3YWl0YWJsZSwgQXN5bmNJdGVyYWJsZSwgQXN5bmNJdGVyYXRvcikgaGF2ZSBiZWVuIGFkZGVkIChpbiBmYWN0CisgIHRoZXkgbWFkZSBpdCBpbnRvIDMuNS4xIGJ1dCB3ZXJlIG5ldmVyIG1lbnRpb25lZCkuCisKKy0gSXNzdWUgIzI1NzM4OiBTdG9wIGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuc2VuZF9lcnJvcigpIGZyb20KKyAgc2VuZGluZyBhIG1lc3NhZ2UgYm9keSBmb3IgMjA1IFJlc2V0IENvbnRlbnQuICBBbHNvLCBkb24ndCBzZW5kIENvbnRlbnQKKyAgaGVhZGVyIGZpZWxkcyBpbiByZXNwb25zZXMgdGhhdCBkb24ndCBoYXZlIGEgYm9keS4gIFBhdGNoIGJ5IFN1c3VtdQorICBLb3NoaWJhLgorCistIElzc3VlICMyMTMxMzogRml4IHRoZSAicGxhdGZvcm0iIG1vZHVsZSB0byB0b2xlcmF0ZSB3aGVuIHN5cy52ZXJzaW9uCisgIGNvbnRhaW5zIHRydW5jYXRlZCBidWlsZCBpbmZvcm1hdGlvbi4KKworLSBbU2VjdXJpdHldIElzc3VlICMyNjgzOTogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgY2FsbHMKKyAgYGBnZXRyYW5kb20oKWBgIHdpdGggYGBHUk5EX05PTkJMT0NLYGAgdG8gZmFsbCBiYWNrIG9uIHJlYWRpbmcKKyAgYGAvZGV2L3VyYW5kb21gYCBpZiB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90IGluaXRpYWxpemVkIHlldC4gUGF0Y2gKKyAgd3JpdHRlbiBieSBDb2xtIEJ1Y2tsZXkuCisKKy0gSXNzdWUgIzIzODgzOiBBZGRlZCBtaXNzaW5nIEFQSXMgdG8gX19hbGxfXyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzCisgIGZvciB0aGUgZm9sbG93aW5nIG1vZHVsZXM6IGNnaSwgbWFpbGJveCwgbWltZXR5cGVzLCBwbGlzdGxpYiBhbmQgc210cGQuCisgIFBhdGNoZXMgYnkgSmFjZWsgS2/Fgm9kemllai4KKworLSBJc3N1ZSAjMjcxNjQ6IEluIHRoZSB6bGliIG1vZHVsZSwgYWxsb3cgZGVjb21wcmVzc2luZyByYXcgRGVmbGF0ZSBzdHJlYW1zCisgIHdpdGggYSBwcmVkZWZpbmVkIHpkaWN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI0MjkxOiBGaXggd3NnaXJlZi5zaW1wbGVfc2VydmVyLldTR0lSZXF1ZXN0SGFuZGxlciB0byBjb21wbGV0ZWx5CisgIHdyaXRlIGRhdGEgdG8gdGhlIGNsaWVudC4gIFByZXZpb3VzbHkgaXQgY291bGQgZG8gcGFydGlhbCB3cml0ZXMgYW5kCisgIHRydW5jYXRlIGRhdGEuICBBbHNvLCB3c2dpcmVmLmhhbmRsZXIuU2VydmVySGFuZGxlciBjYW4gbm93IGhhbmRsZSBzdGRvdXQKKyAgZG9pbmcgcGFydGlhbCB3cml0ZXMsIGJ1dCB0aGlzIGlzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzIxMjcyOiBVc2UgX3N5c2NvbmZpZ2RhdGEucHkgdG8gaW5pdGlhbGl6ZSBkaXN0dXRpbHMuc3lzY29uZmlnLgorCistIElzc3VlICMxOTYxMTogOm1vZDpgaW5zcGVjdGAgbm93IHJlcG9ydHMgdGhlIGltcGxpY2l0IGBgLjBgYCBwYXJhbWV0ZXJzCisgIGdlbmVyYXRlZCBieSB0aGUgY29tcGlsZXIgZm9yIGNvbXByZWhlbnNpb24gYW5kIGdlbmVyYXRvciBleHByZXNzaW9uIHNjb3BlcworICBhcyBpZiB0aGV5IHdlcmUgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgY2FsbGVkIGBgaW1wbGljaXQwYGAuCisgIFBhdGNoIGJ5IEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNjgwOTogQWRkIGBgX19hbGxfX2BgIHRvIDptb2Q6YHN0cmluZ2AuICBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNjM3Mzogc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZSBub3cgY29ycmVjdGx5IGlnbm9yZXMKKyAgQnJva2VuUGlwZUVycm9yIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZGllcyBiZWZvcmUgLmNvbW11bmljYXRlKCkKKyAgaXMgY2FsbGVkIGluIG1vcmUvYWxsIGNpcmN1bXN0YW5jZXMuCisKKy0gc2lnbmFsLCBzb2NrZXQsIGFuZCBzc2wgbW9kdWxlIEludEVudW0gY29uc3RhbnQgbmFtZSBsb29rdXBzIG5vdyByZXR1cm4gYQorICBjb25zaXN0ZW50IG5hbWUgZm9yIHZhbHVlcyBoYXZpbmcgbXVsdGlwbGUgbmFtZXMuICBFeDogc2lnbmFsLlNpZ25hbHMoNikKKyAgbm93IHJlZmVycyB0byBpdHNlbGYgYXMgc2lnbmFsLlNJR0FMUk0gcmF0aGVyIHRoYW4gZmxpcHBpbmcgYmV0d2VlbiB0aGF0CisgIGFuZCBzaWduYWwuU0lHSU9UIGJhc2VkIG9uIHRoZSBpbnRlcnByZXRlcidzIGhhc2ggcmFuZG9taXphdGlvbiBzZWVkLgorCistIElzc3VlICMyNzE2NzogQ2xhcmlmeSB0aGUgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgZXJyb3IgbWVzc2FnZSB0ZXh0CisgIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZGllZCBkdWUgdG8gYSBzaWduYWwuCisKKy0gSXNzdWUgIzI1OTMxOiBEb24ndCBkZWZpbmUgc29ja2V0c2VydmVyLkZvcmtpbmcqIG5hbWVzIG9uIHBsYXRmb3JtcyBzdWNoCisgIGFzIFdpbmRvd3MgdGhhdCBkbyBub3Qgc3VwcG9ydCBvcy5mb3JrKCkuCisKKy0gSXNzdWUgIzIxNzc2OiBkaXN0dXRpbHMudXBsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBIVFRQRXJyb3IuCisgIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCistIElzc3VlICMyNjUyNjogUmVwbGFjZSBjdXN0b20gcGFyc2UgdHJlZSB2YWxpZGF0aW9uIGluIHRoZSBwYXJzZXIKKyAgbW9kdWxlIHdpdGggYSBzaW1wbGUgREZBIHZhbGlkYXRvci4KKworLSBJc3N1ZSAjMjcxMTQ6IEZpeCBTU0xDb250ZXh0Ll9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMgZmFpbHMgd2l0aAorICBQZXJtaXNzaW9uRXJyb3IKKworLSBJc3N1ZSAjMTgzODM6IEF2b2lkIGNyZWF0aW5nIGR1cGxpY2F0ZSBmaWx0ZXJzIHdoZW4gdXNpbmcgZmlsdGVyd2FybmluZ3MKKyAgYW5kIHNpbXBsZWZpbHRlci4gIEJhc2VkIG9uIHBhdGNoIGJ5IEFsZXggU2hrb3AuCisKKy0gSXNzdWUgIzIzMDI2OiB3aW5yZWcuUXVlcnlWYWx1ZUV4KCkgbm93IHJldHVybiBhbiBpbnRlZ2VyIGZvciBSRUdfUVdPUkQgdHlwZS4KKworLSBJc3N1ZSAjMjY3NDE6IHN1YnByb2Nlc3MuUG9wZW4gZGVzdHJ1Y3RvciBub3cgZW1pdHMgYSBSZXNvdXJjZVdhcm5pbmcgd2FybmluZworICBpZiB0aGUgY2hpbGQgcHJvY2VzcyBpcyBzdGlsbCBydW5uaW5nLgorCistIElzc3VlICMyNzA1NjogT3B0aW1pemUgcGlja2xlLmxvYWQoKSBhbmQgcGlja2xlLmxvYWRzKCksIHVwIHRvIDEwJSBmYXN0ZXIKKyAgdG8gZGVzZXJpYWxpemUgYSBsb3Qgb2Ygc21hbGwgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjEyNzE6IE5ldyBrZXl3b3JkIG9ubHkgcGFyYW1ldGVycyBpbiByZXNldF9tb2NrIGNhbGwuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjNTEyNDogUGFzdGUgd2l0aCB0ZXh0IHNlbGVjdGVkIG5vdyByZXBsYWNlcyB0aGUgc2VsZWN0aW9uIG9uIFgxMS4KKyAgVGhpcyBtYXRjaGVzIGhvdyBwYXN0ZSB3b3JrcyBvbiBXaW5kb3dzLCBNYWMsIG1vc3QgbW9kZXJuIExpbnV4IGFwcHMsCisgIGFuZCB0dGsgd2lkZ2V0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI0NzUwOiBTd2l0Y2ggYWxsIHNjcm9sbGJhcnMgaW4gSURMRSB0byB0dGsgdmVyc2lvbnMuCisgIFdoZXJlIG5lZWRlZCwgbWluaW1hbCB0ZXN0cyBhcmUgYWRkZWQgdG8gY292ZXIgY2hhbmdlcy4KKworLSBJc3N1ZSAjMjQ3NTk6IElETEUgcmVxdWlyZXMgdGsgOC41IGFuZCBhdmFpbGFiaWxpdHkgdHRrIHdpZGdldHMuCisgIERlbGV0ZSBub3cgdW5uZWVkZWQgdGsgdmVyc2lvbiB0ZXN0cyBhbmQgY29kZSBmb3Igb2xkZXIgdmVyc2lvbnMuCisgIEFkZCB0ZXN0IGZvciBJRExFIHN5bnRheCBjb2xvcml6b2VyLgorCistIElzc3VlICMyNzIzOTogaWRsZWxpYi5tYWNvc3guaXNYeXpUayBmdW5jdGlvbnMgaW5pdGlhbGl6ZSBhcyBuZWVkZWQuCisKKy0gSXNzdWUgIzI3MjYyOiBtb3ZlIEFxdWEgdW5iaW5kaW5nIGNvZGUsIHdoaWNoIGVuYWJsZSBjb250ZXh0IG1lbnVzLCB0byBtYXhvc3guCisKKy0gSXNzdWUgIzI0NzU5OiBNYWtlIGNsZWFyIGluIGlkbGVsaWIuaWRsZV90ZXN0Ll9faW5pdF9fIHRoYXQgdGhlIGRpcmVjdG9yeQorICBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUgYW5kIHRvb2wgZm9yIG1haW50YWluZXJzLgorCistIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VkJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KKyAgVGhlc2UgcGVyc2lzdGVkIGFmdGVyIG90aGVyIHdhcm5pbmdzIHdlcmUgc3VwcHJlc3NlZCBpbiAjMjA1NjcuCisgIEFwcGx5IFNlcmhpeSBTdG9yY2hha2EncyB1cGRhdGVfaWRsZXRhc2tzIHNvbHV0aW9uIHRvIGZvdXIgdGVzdCBmaWxlcy4KKyAgUmVjb3JkIHRoaXMgYWRkaXRpb25hbCBhZHZpY2UgaW4gaWRsZV90ZXN0L1JFQURNRS50eHQKKworLSBJc3N1ZSAjMjA1Njc6IFJldmlzZSBpZGxlX3Rlc3QvUkVBRE1FLnR4dCB3aXRoIGFkdmljZSBhYm91dCBhdm9pZGluZworICB0ayB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGVzdHMuICBBcHBseSBhZHZpY2UgdG8gc2V2ZXJhbCBJRExFIHRlc3RzLgorCistIElzc3VlICMyNDIyNTogVXBkYXRlIGlkbGVsaWIvUkVBRE1FLnR4dCB3aXRoIG5ldyBmaWxlIG5hbWVzCisgIGFuZCBldmVudCBoYW5kbGVycy4KKworLSBJc3N1ZSAjMjcxNTY6IFJlbW92ZSBvYnNvbGV0ZSBjb2RlIG5vdCB1c2VkIGJ5IElETEUuICBSZXBsYWNlbWVudHM6CisgIDEuIGhlbHAudHh0LCByZXBsYWNlZCBieSBoZWxwLmh0bWwsIGlzIG91dC1vZi1kYXRlIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisgIEl0cyBkZWRpY2F0ZWQgdmlld2VyIGhhcyBiZSByZXBsYWNlZCBieSB0aGUgaHRtbCB2aWV3ZXIgaW4gaGVscC5weS4KKyAgMi4gYGBpbXBvcnQgaWRsZXZlcjsgSSA9IGlkbGV2ZXIuSURMRV9WRVJTSU9OYGAgaXMgdGhlIHNhbWUgYXMKKyAgYGBpbXBvcnQgc3lzOyBJID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXWBgCisgIDMuIEFmdGVyIGBgb2IgPSBzdGFja3ZpZXdlci5WYXJpYWJsZXNUcmVlSXRlbSgqYXJncylgYCwKKyAgYGBvYi5rZXlzKCkgPT0gbGlzdChvYi5vYmplY3Qua2V5cylgYC4KKyAgNC4gSW4gbWFjb3NjLCBydW5uaW5nQXNPU1hBUFAgPT0gaXNBcXVhVGs7IGlkQ2FyYm9uQXF1YVRrID09IGlzQ2FyYm9uVGsKKworLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KKyAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzI0MjI1OiBSZW5hbWUgbWFueSBgaWRsZWxpYi8qLnB5YCBhbmQgYGlkbGVfdGVzdC90ZXN0XyoucHlgIGZpbGVzLgorICBFZGl0IGZpbGVzIHRvIHJlcGxhY2Ugb2xkIG5hbWVzIHdpdGggbmV3IG5hbWVzIHdoZW4gdGhlIG9sZCBuYW1lCisgIHJlZmVycmVkIHRvIHRoZSBtb2R1bGUgcmF0aGVyIHRoYW4gdGhlIGNsYXNzIGl0IGNvbnRhaW5lZC4KKyAgU2VlIHRoZSBpc3N1ZSBhbmQgSURMRSBzZWN0aW9uIGluIFdoYXQncyBOZXcgaW4gMy42IGZvciBtb3JlLgorCistIElzc3VlICMyNjY3MzogV2hlbiB0ayByZXBvcnRzIGZvbnQgc2l6ZSBhcyAwLCBjaGFuZ2UgdG8gc2l6ZSAxMC4KKyAgU3VjaCBmb250cyBvbiBMaW51eCBwcmV2ZW50ZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGZyb20gb3BlbmluZy4KKworLSBJc3N1ZSAjMjE5Mzk6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcGVyY29sYXRvci4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgorCistIElzc3VlICMyMTY3NjogQWRkIHRlc3QgZm9yIElETEUncyByZXBsYWNlIGRpYWxvZy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgorCistIElzc3VlICMxODQxMDogQWRkIHRlc3QgZm9yIElETEUncyBzZWFyY2ggZGlhbG9nLgorICBPcmlnaW5hbCBwYXRjaCBieSBXZXN0bGV5IE1hcnTDrW5lei4KKworLSBJc3N1ZSAjMjE3MDM6IEFkZCB0ZXN0IGZvciB1bmRvIGRlbGVnYXRvci4gIFBhdGNoIG1vc3RseSBieQorICBTYWltYWRoYXYgSGVibGlrYXIgLgorCistIElzc3VlICMyNzA0NDogQWRkIENvbmZpZ0RpYWxvZy5yZW1vdmVfdmFyX2NhbGxiYWNrcyB0byBzdG9wIG1lbW9yeSBsZWFrcy4KKworLSBJc3N1ZSAjMjM5Nzc6IEFkZCBtb3JlIGFzc2VydHMgdG8gdGVzdF9kZWxlZ2F0b3IuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTY0ODQ6IENoYW5nZSB0aGUgZGVmYXVsdCBQWVRIT05ET0NTIFVSTCB0byAiaHR0cHM6IiwgYW5kIGZpeCB0aGUKKyAgcmVzdWx0aW5nIGxpbmtzIHRvIHVzZSBsb3dlcmNhc2UuICBQYXRjaCBieSBTZWFuIFJvZG1hbiwgdGVzdCBieSBLYXVzaGlrCisgIE5hZGlrdWRpdGkuCisKKy0gSXNzdWUgIzI0MTM2OiBEb2N1bWVudCB0aGUgbmV3IFBFUCA0NDggdW5wYWNraW5nIHN5bnRheCBvZiAzLjUuCisKKy0gSXNzdWUgIzIyNTU4OiBBZGQgcmVtYWluaW5nIGRvYyBsaW5rcyB0byBzb3VyY2UgY29kZSBmb3IgUHl0aG9uLWNvZGVkIG1vZHVsZXMuCisgIFBhdGNoIGJ5IFlvbmkgTGF2aS4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI1Mjg1OiByZWdydGVzdCBub3cgdXNlcyBzdWJwcm9jZXNzZXMgd2hlbiB0aGUgLWoxIGNvbW1hbmQgbGluZSBvcHRpb24KKyAgaXMgdXNlZDogZWFjaCB0ZXN0IGZpbGUgcnVucyBpbiBhIGZyZXNoIGNoaWxkIHByb2Nlc3MuIEJlZm9yZSwgdGhlIC1qMSBvcHRpb24KKyAgd2FzIGlnbm9yZWQuCisKKy0gSXNzdWUgIzI1Mjg1OiBUb29scy9idWlsZGJvdC90ZXN0LmJhdCBzY3JpcHQgbm93IHVzZXMgLWoxIGJ5IGRlZmF1bHQgdG8gcnVuCisgIGVhY2ggdGVzdCBmaWxlIGluIGZyZXNoIGNoaWxkIHByb2Nlc3MuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjcwNjQ6IFRoZSBweS5leGUgbGF1bmNoZXIgbm93IGRlZmF1bHRzIHRvIFB5dGhvbiAzLgorICBUaGUgV2luZG93cyBsYXVuY2hlciBgYHB5LmV4ZWBgIG5vIGxvbmdlciBwcmVmZXJzIGFuIGluc3RhbGxlZAorICBQeXRob24gMiB2ZXJzaW9uIG92ZXIgUHl0aG9uIDMgYnkgZGVmYXVsdCB3aGVuIHVzZWQgaW50ZXJhY3RpdmVseS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI3MjI5OiBGaXggdGhlIGNyb3NzLWNvbXBpbGluZyBwZ2VuIHJ1bGUgZm9yIGluLXRyZWUgYnVpbGRzLiAgUGF0Y2gKKyAgYnkgWGF2aWVyIGRlIEdheWUuCisKKy0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKKyAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yaC4KKworTWlzYworLS0tLQorCistIElzc3VlICMxNzUwMCwgYW5kIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vcHl0aG9uZG90b3JnL2lzc3Vlcy85NDU6IFJlbW92ZQorICB1bnVzZWQgYW5kIG91dGRhdGVkIGljb25zLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjcxODY6IEFkZCB0aGUgUHlPU19GU1BhdGgoKSBmdW5jdGlvbiAocGFydCBvZiBQRVAgNTE5KS4KKworLSBJc3N1ZSAjMjYyODI6IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygpIG5vdyBzdXBwb3J0cyBwb3NpdGlvbmFsLW9ubHkKKyAgcGFyYW1ldGVycy4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI2MjgyOiBBcmd1bWVudCBDbGluaWMgbm93IHN1cHBvcnRzIHBvc2l0aW9uYWwtb25seSBhbmQga2V5d29yZAorICBwYXJhbWV0ZXJzIGluIHRoZSBzYW1lIGZ1bmN0aW9uLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSZWxlYXNlIGRhdGU6IDIwMTYtMDUtMTYKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKIC0gSXNzdWUgIzIwMDQxOiBGaXhlZCBUeXBlRXJyb3Igd2hlbiBmcmFtZS5mX3RyYWNlIGlzIHNldCB0byBOb25lLgogICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KIApAQCAtNjQzLDExICsxNzQ2LDE3IEBACiAKIC0gSXNzdWUgIzI2OTkxOiBGaXggcG9zc2libGUgcmVmbGVhayB3aGVuIGNyZWF0aW5nIGEgZnVuY3Rpb24gd2l0aCBhbm5vdGF0aW9ucy4KIAotLSBJc3N1ZSAjMjcwMzk6IEZpeGVkIGJ5dGVhcnJheS5yZW1vdmUoKSBmb3IgdmFsdWVzIGdyZWF0ZXIgdGhhbiAxMjcuICBQYXRjaCBieQotICBKb2UgSmV2bmlrLgorLSBJc3N1ZSAjMjcwMzk6IEZpeGVkIGJ5dGVhcnJheS5yZW1vdmUoKSBmb3IgdmFsdWVzIGdyZWF0ZXIgdGhhbiAxMjcuICBCYXNlZCBvbgorICBwYXRjaCBieSBKb2UgSmV2bmlrLgogCiAtIElzc3VlICMyMzY0MDogaW50LmZyb21fYnl0ZXMoKSBubyBsb25nZXIgYnlwYXNzZXMgY29uc3RydWN0b3JzIGZvciBzdWJjbGFzc2VzLgogCistIElzc3VlICMyNzAwNTogT3B0aW1pemVkIHRoZSBmbG9hdC5mcm9taGV4KCkgY2xhc3MgbWV0aG9kIGZvciBleGFjdCBmbG9hdC4KKyAgSXQgaXMgbm93IDIgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMxODUzMTogU2luZ2xlIHZhci1rZXl3b3JkIGFyZ3VtZW50IG9mIGRpY3Qgc3VidHlwZSB3YXMgcGFzc2VkCisgIHVuc2NhdGhlZCB0byB0aGUgQy1kZWZpbmVkIGZ1bmN0aW9uLiAgTm93IGl0IGlzIGNvbnZlcnRlZCB0byBleGFjdCBkaWN0LgorCiAtIElzc3VlICMyNjgxMTogZ2MuZ2V0X29iamVjdHMoKSBubyBsb25nZXIgY29udGFpbnMgYSBicm9rZW4gdHVwbGUgd2l0aCBOVUxMCiAgIHBvaW50ZXIuCiAKQEAgLTY1NywxMSArMTc2NiwyNiBAQAogICBpbnRlcnBvbGF0aW9uIGluIC5weXBpcmMgZmlsZXMsIG1hdGNoaW5nIGJlaGF2aW9yIGluIFB5dGhvbgogICAyLjcgYW5kIFNldHVwdG9vbHMgMTkuMC4KIAorLSBJc3N1ZSAjMjYyNDk6IE1lbW9yeSBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZG9tYWluCisgICg6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCkgbm93IHVzZSB0aGUgOnJlZjpgcHltYWxsb2MgYWxsb2NhdG9yIDxweW1hbGxvYz5gCisgIHJhdGhlciB0aGFuIHN5c3RlbSA6YzpmdW5jOmBtYWxsb2NgLiBBcHBsaWNhdGlvbnMgY2FsbGluZworICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMIGNhbiBub3cgY3Jhc2g6IHVzZQorICBgYFBZVEhPTk1BTExPQz1kZWJ1Z2BgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHZhbGlkYXRlIHRoZSB1c2FnZSBvZiBtZW1vcnkKKyAgYWxsb2NhdG9ycyBpbiB5b3VyIGFwcGxpY2F0aW9uLgorCistIElzc3VlICMyNjgwMjogT3B0aW1pemUgZnVuY3Rpb24gY2FsbHMgb25seSB1c2luZyB1bnBhY2tpbmcgbGlrZQorICBgYGZ1bmMoKnR1cGxlKWBgIChubyBvdGhlciBwb3NpdGlvbmFsIGFyZ3VtZW50LCBubyBrZXl3b3JkKTogYXZvaWQgY29weWluZworICB0aGUgdHVwbGUuIFBhdGNoIHdyaXR0ZW4gYnkgSm9lIEpldm5pay4KKwogLSBJc3N1ZSAjMjY2NTk6IE1ha2UgdGhlIGJ1aWx0aW4gc2xpY2UgdHlwZSBzdXBwb3J0IGN5Y2xlIGNvbGxlY3Rpb24uCiAKIC0gSXNzdWUgIzI2NzE4OiBzdXBlci5fX2luaXRfXyBubyBsb25nZXIgbGVha3MgbWVtb3J5IGlmIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KICAgTk9URTogQSBkaXJlY3QgY2FsbCBvZiBzdXBlci5fX2luaXRfXyBpcyBub3QgZW5kb3JzZWQhCiAKKy0gSXNzdWUgIzI3MTM4OiBGaXggdGhlIGRvYyBjb21tZW50IGZvciBGaWxlRmluZGVyLmZpbmRfc3BlYygpLgorCistIElzc3VlICMyNzE0NzogTWVudGlvbiBQRVAgNDIwIGluIHRoZSBpbXBvcnRsaWIgZG9jcy4KKwogLSBJc3N1ZSAjMjUzMzk6IFBZVEhPTklPRU5DT0RJTkcgbm93IGhhcyBwcmlvcml0eSBvdmVyIGxvY2FsZSBpbiBzZXR0aW5nIHRoZQogICBlcnJvciBoYW5kbGVyIGZvciBzdGRpbiBhbmQgc3Rkb3V0LgogCkBAIC02NzAsOSArMTc5NCw0MSBAQAogICBieXRlYXJyYXksIGxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgT3JkZXJlZERpY3QsIGNvcnJlc3BvbmRpbmcKICAgdmlld3MgYW5kIG9zLnNjYW5kaXIoKSBpdGVyYXRvci4KIAorLSBJc3N1ZSAjMjY1NzQ6IE9wdGltaXplIGBgYnl0ZXMucmVwbGFjZShiJycsIGInLicpYGAgYW5kCisgIGBgYnl0ZWFycmF5LnJlcGxhY2UoYicnLCBiJy4nKWBgLiBQYXRjaCB3cml0dGVuIGJ5IEpvc2ggU25pZGVyLgorCiAtIElzc3VlICMyNjU4MTogSWYgY29kaW5nIGNvb2tpZSBpcyBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMgb24gYSBsaW5lIGluCiAgIFB5dGhvbiBzb3VyY2UgY29kZSBmaWxlLCBvbmx5IHRoZSBmaXJzdCBvbmUgaXMgdGFrZW4gdG8gYWNjb3VudC4KIAorLSBJc3N1ZSAjMTk3MTE6IEFkZCB0ZXN0cyBmb3IgcmVsb2FkaW5nIG5hbWVzcGFjZSBwYWNrYWdlcy4KKworLSBJc3N1ZSAjMjEwOTk6IFN3aXRjaCBhcHBsaWNhYmxlIGltcG9ydGxpYiB0ZXN0cyB0byB1c2UgUEVQIDQ1MSBBUEkuCisKKy0gSXNzdWUgIzI2NTYzOiBEZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgbm93IHJhaXNlIGEgZmF0YWwKKyAgZXJyb3IgaWYgZnVuY3Rpb25zIG9mIHRoZSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGZhbWlseSBhcmUgY2FsbGVkIHdpdGhvdXQKKyAgaG9sZGluZyB0aGUgR0lMLgorCistIElzc3VlICMyNjU2NDogT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgbm93IHVzZQorICB0aGUgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZSB0byBnZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMKKyAgYWxsb2NhdGVkLgorCistIElzc3VlICMyNjU1ODogVGhlIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yCisgIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2Agbm93IGRldGVjdCB3aGVuIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGhvdXQKKyAgaG9sZGluZyB0aGUgR0lMLgorCistIElzc3VlICMyNjUxNjogQWRkIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2V0IHRoZQorICBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgYW5kL29yIGluc3RhbGwgZGVidWcgaG9va3MuCisKKy0gSXNzdWUgIzI2NTE2OiBUaGUgOmM6ZnVuYzpgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzYCBmdW5jdGlvbiBjYW4gbm93IGFsc28gYmUKKyAgdXNlZCBvbiBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorCistIElzc3VlICMyNjUxNjogVGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ1NUQVRTYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gbm93CisgIGFsc28gYmUgdXNlZCBvbiBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLiBJdCBub3cgaGFzIG5vIGVmZmVjdCBpZgorICBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nLgorCistIElzc3VlICMyNjUxNjogSW4gZGVidWcgbW9kZSwgZGVidWcgaG9va3MgYXJlIG5vdyBhbHNvIGluc3RhbGxlZCBvbiBQeXRob24KKyAgbWVtb3J5IGFsbG9jYXRvcnMgd2hlbiBQeXRob24gaXMgY29uZmlndXJlZCB3aXRob3V0IHB5bWFsbG9jLgorCiAtIElzc3VlICMyNjQ2NDogRml4IHN0ci50cmFuc2xhdGUoKSB3aGVuIHN0cmluZyBpcyBBU0NJSSBhbmQgZmlyc3QgcmVwbGFjZW1lbnRzCiAgIHJlbW92ZXMgY2hhcmFjdGVyLCBidXQgbmV4dCByZXBsYWNlbWVudCB1c2VzIGEgbm9uLUFTQ0lJIGNoYXJhY3RlciBvciBhCiAgIHN0cmluZyBsb25nZXIgdGhhbiAxIGNoYXJhY3Rlci4gUmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjUuMC4KQEAgLTY4NSwxMSArMTg0MSwzNyBAQAogLSBJc3N1ZSAjMjYzMDI6IENvcnJlY3QgYmVoYXZpb3IgdG8gcmVqZWN0IGNvbW1hIGFzIGEgbGVnYWwgY2hhcmFjdGVyIGZvcgogICBjb29raWUgbmFtZXMuCiAKKy0gSXNzdWUgIzI2MTM2OiBVcGdyYWRlIHRoZSB3YXJuaW5nIHdoZW4gYSBnZW5lcmF0b3IgcmFpc2VzIFN0b3BJdGVyYXRpb24KKyAgZnJvbSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIHRvIERlcHJlY2F0aW9uV2FybmluZy4gIFBhdGNoIGJ5IEFuaXNoCisgIFNoYWguCisKKy0gSXNzdWUgIzI2MjA0OiBUaGUgY29tcGlsZXIgbm93IGlnbm9yZXMgYWxsIGNvbnN0YW50IHN0YXRlbWVudHM6IGJ5dGVzLCBzdHIsCisgIGludCwgZmxvYXQsIGNvbXBsZXgsIG5hbWUgY29uc3RhbnRzIChOb25lLCBGYWxzZSwgVHJ1ZSksIEVsbGlwc2lzCisgIGFuZCBhc3QuQ29uc3RhbnQ7IG5vdCBvbmx5IHN0ciBhbmQgaW50LiBGb3IgZXhhbXBsZSwgYGAxLjBgYCBpcyBub3cgaWdub3JlZAorICBpbiBgYGRlZiBmKCk6IDEuMGBgLgorCiAtIElzc3VlICM0ODA2OiBBdm9pZCBtYXNraW5nIHRoZSBvcmlnaW5hbCBUeXBlRXJyb3IgZXhjZXB0aW9uIHdoZW4gdXNpbmcgc3RhcgogICAoKikgdW5wYWNraW5nIGluIGZ1bmN0aW9uIGNhbGxzLiAgQmFzZWQgb24gcGF0Y2ggYnkgSGFnZW4gRsO8cnN0ZW5hdSBhbmQKICAgRGFuaWVsIFVyYmFuLgogCi0tIElzc3VlICMyNzEzODogRml4IHRoZSBkb2MgY29tbWVudCBmb3IgRmlsZUZpbmRlci5maW5kX3NwZWMoKS4KKy0gSXNzdWUgIzI2MTQ2OiBBZGQgYSBuZXcga2luZCBvZiBBU1Qgbm9kZTogYGBhc3QuQ29uc3RhbnRgYC4gSXQgY2FuIGJlIHVzZWQKKyAgYnkgZXh0ZXJuYWwgQVNUIG9wdGltaXplcnMsIGJ1dCB0aGUgY29tcGlsZXIgZG9lcyBub3QgZW1pdCBkaXJlY3RseSBzdWNoCisgIG5vZGUuCisKKy0gSXNzdWUgIzIzNjAxOiAgU3BlZC11cCBhbGxvY2F0aW9uIG9mIGRpY3Qga2V5IG9iamVjdHMgYnkgdXNpbmcgUHl0aG9uJ3MKKyAgc21hbGwgb2JqZWN0IGFsbG9jYXRvci4gIChDb250cmlidXRlZCBieSBKdWxpYW4gVGF5bG9yLikKKworLSBJc3N1ZSAjMTgwMTg6IEltcG9ydCByYWlzZXMgSW1wb3J0RXJyb3IgaW5zdGVhZCBvZiBTeXN0ZW1FcnJvciBpZiBhIHJlbGF0aXZlCisgIGltcG9ydCBpcyBhdHRlbXB0ZWQgd2l0aG91dCBhIGtub3duIHBhcmVudCBwYWNrYWdlLgorCistIElzc3VlICMyNTg0MzogV2hlbiBjb21waWxpbmcgY29kZSwgZG9uJ3QgbWVyZ2UgY29uc3RhbnRzIGlmIHRoZXkgYXJlIGVxdWFsCisgIGJ1dCBoYXZlIGEgZGlmZmVyZW50IHR5cGVzLiBGb3IgZXhhbXBsZSwgYGBmMSwgZjIgPSBsYW1iZGE6IDEsIGxhbWJkYTogMS4wYGAKKyAgaXMgbm93IGNvcnJlY3RseSBjb21waWxlZCB0byB0d28gZGlmZmVyZW50IGZ1bmN0aW9uczogYGBmMSgpYGAgcmV0dXJucyBgYDFgYAorICAoYGBpbnRgYCkgYW5kIGBgZjIoKWBgIHJldHVybnMgYGAxLjBgYCAoYGBmbG9hdGBgKSwgZXZlbiBpZiBgYDFgYCBhbmQgYGAxLjBgYAorICBhcmUgZXF1YWwuCisKKy0gSXNzdWUgIzI2MTA3OiBUaGUgZm9ybWF0IG9mIHRoZSBgYGNvX2xub3RhYmBgIGF0dHJpYnV0ZSBvZiBjb2RlIG9iamVjdHMKKyAgY2hhbmdlcyB0byBzdXBwb3J0IG5lZ2F0aXZlIGxpbmUgbnVtYmVyIGRlbHRhLgogCiAtIElzc3VlICMyNjE1NDogQWRkIGEgbmV3IHByaXZhdGUgX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCkgZnVuY3Rpb24gdG8gZ2V0CiAgIHRoZSBjdXJyZW50IFB5dGhvbiB0aHJlYWQgc3RhdGUsIGJ1dCBkb24ndCBpc3N1ZSBhIGZhdGFsIGVycm9yIGlmIGl0IGlzIE5VTEwuCkBAIC02OTgsMTUgKzE4ODAsOCBAQAogICBQeXRob24gMy41LjEgdG8gaGlkZSB0aGUgZXhhY3QgaW1wbGVtZW50YXRpb24gb2YgYXRvbWljIEMgdHlwZXMsIHRvIGF2b2lkCiAgIGNvbXBpbGVyIGlzc3Vlcy4KIAotLSBJc3N1ZSAjMjYxOTQ6ICBEZXF1ZS5pbnNlcnQoKSBnYXZlIG9kZCByZXN1bHRzIGZvciBib3VuZGVkIGRlcXVlcyB0aGF0IGhhZAotICByZWFjaGVkIHRoZWlyIG1heGltdW0gc2l6ZS4gIE5vdyBhbiBJbmRleEVycm9yIHdpbGwgYmUgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZwotICB0byBpbnNlcnQgaW50byBhIGZ1bGwgZGVxdWUuCi0KLS0gSXNzdWUgIzI1ODQzOiBXaGVuIGNvbXBpbGluZyBjb2RlLCBkb24ndCBtZXJnZSBjb25zdGFudHMgaWYgdGhleSBhcmUgZXF1YWwKLSAgYnV0IGhhdmUgYSBkaWZmZXJlbnQgdHlwZXMuIEZvciBleGFtcGxlLCBgYGYxLCBmMiA9IGxhbWJkYTogMSwgbGFtYmRhOiAxLjBgYAotICBpcyBub3cgY29ycmVjdGx5IGNvbXBpbGVkIHRvIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25zOiBgYGYxKClgYCByZXR1cm5zIGBgMWBgCi0gIChgYGludGBgKSBhbmQgYGBmMigpYGAgcmV0dXJucyBgYDEuMGBgIChgYGludGBgKSwgZXZlbiBpZiBgYDFgYCBhbmQgYGAxLjBgYAotICBhcmUgZXF1YWwuCistIElzc3VlICMyNTc5MTogSWYgX19wYWNrYWdlX18gIT0gX19zcGVjX18ucGFyZW50IG9yIGlmIG5laXRoZXIgX19wYWNrYWdlX18gb3IKKyAgX19zcGVjX18gYXJlIGRlZmluZWQgdGhlbiBJbXBvcnRXYXJuaW5nIGlzIHJhaXNlZC4KIAogLSBJc3N1ZSAjMjI5OTU6IFtVUERBVEVdIENvbW1lbnQgb3V0IHRoZSBvbmUgb2YgdGhlIHBpY2tsZWFiaWxpdHkgdGVzdHMgaW4KICAgX1B5T2JqZWN0X0dldFN0YXRlKCkgZHVlIHRvIHJlZ3Jlc3Npb25zIG9ic2VydmVkIGluIEN5dGhvbi1iYXNlZCBwcm9qZWN0cy4KQEAgLTczMyw3ICsxOTA4LDEwIEBACiAtIElzc3VlICMyNTcwOTogRml4ZWQgcHJvYmxlbSB3aXRoIGluLXBsYWNlIHN0cmluZyBjb25jYXRlbmF0aW9uIGFuZCB1dGYtOAogICBjYWNoZS4KIAotLSBJc3N1ZSAjMjcxNDc6IE1lbnRpb24gUEVQIDQyMCBpbiB0aGUgaW1wb3J0bGliIGRvY3MuCistIElzc3VlICM1MzE5OiBOZXcgUHlfRmluYWxpemVFeCgpIEFQSSBhbGxvd2luZyBQeXRob24gdG8gc2V0IGFuIGV4aXQgc3RhdHVzCisgIG9mIDEyMCBvbiBmYWlsdXJlIHRvIGZsdXNoIGJ1ZmZlcmVkIHN0cmVhbXMuCisKKy0gSXNzdWUgIzI1NDg1OiB0ZWxuZXRsaWIuVGVsbmV0IGlzIG5vdyBhIGNvbnRleHQgbWFuYWdlci4KIAogLSBJc3N1ZSAjMjQwOTc6IEZpeGVkIGNyYXNoIGluIG9iamVjdC5fX3JlZHVjZV9fKCkgaWYgc2xvdCBuYW1lIGlzIGZyZWVkIGluc2lkZQogICBfX2dldGF0dHJfXy4KQEAgLTc0Miw2ICsxOTIwLDg4IEBACiAgIF9fYnl0ZXNfXywgX190cnVuY19fLCBhbmQgX19mbG9hdF9fIHJldHVybmluZyBpbnN0YW5jZXMgb2Ygc3ViY2xhc3NlcyBvZgogICBieXRlcywgaW50LCBhbmQgZmxvYXQgdG8gc3ViY2xhc3NlcyBvZiBieXRlcywgaW50LCBhbmQgZmxvYXQgY29ycmVzcG9uZGluZ2x5LgogCistIElzc3VlICMyNTYzMDogRml4IGEgcG9zc2libGUgc2VnZmF1bHQgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcgaW4gZnVuY3Rpb25zCisgIHRoYXQgYWNjZXB0IGZpbGVzeXN0ZW0gcGF0aHMuCisKKy0gSXNzdWUgIzIzNTY0OiBGaXhlZCBhIHBhcnRpYWxseSBicm9rZW4gc2FuaXR5IGNoZWNrIGluIHRoZSBfcG9zaXhzdWJwcm9jZXNzCisgIGludGVybmFscyByZWdhcmRpbmcgaG93IGZkc190b19wYXNzIHdlcmUgcGFzc2VkIHRvIHRoZSBjaGlsZC4gIFRoZSBidWcgaGFkCisgIG5vIGFjdHVhbCBpbXBhY3QgYXMgc3VicHJvY2Vzcy5weSBhbHJlYWR5IGF2b2lkZWQgaXQuCisKKy0gSXNzdWUgIzI1Mzg4OiBGaXhlZCB0b2tlbml6ZXIgY3Jhc2ggd2hlbiBwcm9jZXNzaW5nIHVuZGVjb2RhYmxlIHNvdXJjZSBjb2RlCisgIHdpdGggYSBudWxsIGJ5dGUuCisKKy0gSXNzdWUgIzI1NDYyOiBUaGUgaGFzaCBvZiB0aGUga2V5IG5vdyBpcyBjYWxjdWxhdGVkIG9ubHkgb25jZSBpbiBtb3N0CisgIG9wZXJhdGlvbnMgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZiBPcmRlcmVkRGljdC4KKworLSBJc3N1ZSAjMjI5OTU6IERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgX19yZWR1Y2VfXyBhbmQgX19yZWR1Y2VfZXhfXyBub3cKKyAgcmVqZWN0cyBidWlsdGluIHR5cGVzIHdpdGggbm90IGRlZmluZWQgX19uZXdfXy4KKworLSBJc3N1ZSAjMjQ4MDI6IEF2b2lkIGJ1ZmZlciBvdmVycmVhZHMgd2hlbiBpbnQoKSwgZmxvYXQoKSwgY29tcGlsZSgpLCBleGVjKCkKKyAgYW5kIGV2YWwoKSBhcmUgcGFzc2VkIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gIFRoZXNlIG9iamVjdHMgYXJlIG5vdAorICBuZWNlc3NhcmlseSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBieXRlLCBidXQgdGhlIGZ1bmN0aW9ucyBhc3N1bWVkIHRoZXkgd2VyZS4KKworLSBJc3N1ZSAjMjU1NTU6IEZpeCBwYXJzZXIgYW5kIEFTVDogZmlsbCBsaW5lbm8gYW5kIGNvbF9vZmZzZXQgb2YgImFyZyIgbm9kZQorICB3aGVuIGNvbXBpbGluZyBBU1QgZnJvbSBQeXRob24gb2JqZWN0cy4KKworLSBJc3N1ZSAjMjQ3MjY6IEZpeGVkIGEgY3Jhc2ggYW5kIGxlYWtpbmcgTlVMTCBpbiByZXByKCkgb2YgT3JkZXJlZERpY3QgdGhhdAorICB3YXMgbXV0YXRlZCBieSBkaXJlY3QgY2FsbHMgb2YgZGljdCBtZXRob2RzLgorCistIElzc3VlICMyNTQ0OTogSXRlcmF0aW5nIE9yZGVyZWREaWN0IHdpdGgga2V5cyB3aXRoIHVuc3RhYmxlIGhhc2ggbm93IHJhaXNlcworICBLZXlFcnJvciBpbiBDIGltcGxlbWVudGF0aW9ucyBhcyB3ZWxsIGFzIGluIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMjUzOTU6IEZpeGVkIGNyYXNoIHdoZW4gaGlnaGx5IG5lc3RlZCBPcmRlcmVkRGljdCBzdHJ1Y3R1cmVzIHdlcmUKKyAgZ2FyYmFnZSBjb2xsZWN0ZWQuCisKKy0gSXNzdWUgIzI1NDAxOiBPcHRpbWl6ZSBieXRlcy5mcm9taGV4KCkgYW5kIGJ5dGVhcnJheS5mcm9taGV4KCk6IHRoZXkgYXJlIG5vdworICBiZXR3ZWVuIDJ4IGFuZCAzLjV4IGZhc3Rlci4KKworLSBJc3N1ZSAjMjUzOTk6IE9wdGltaXplIGJ5dGVhcnJheSAlIGFyZ3MgdXNpbmcgdGhlIG5ldyBwcml2YXRlIF9QeUJ5dGVzV3JpdGVyCisgIEFQSS4gRm9ybWF0dGluZyBpcyBub3cgYmV0d2VlbiAyLjUgYW5kIDUgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTI3NDogc3lzLnNldHJlY3Vyc2lvbmxpbWl0KCkgbm93IHJhaXNlcyBhIFJlY3Vyc2lvbkVycm9yIGlmIHRoZSBuZXcKKyAgcmVjdXJzaW9uIGxpbWl0IGlzIHRvbyBsb3cgZGVwZW5kaW5nIGF0IHRoZSBjdXJyZW50IHJlY3Vyc2lvbiBkZXB0aC4gTW9kaWZ5CisgIGFsc28gdGhlICJsb3dlci13YXRlciBtYXJrIiBmb3JtdWxhIHRvIG1ha2UgaXQgbW9ub3RvbmljLiBUaGlzIG1hcmsgaXMgdXNlZAorICB0byBkZWNpZGUgd2hlbiB0aGUgb3ZlcmZsb3dlZCBmbGFnIG9mIHRoZSB0aHJlYWQgc3RhdGUgaXMgcmVzZXQuCisKKy0gSXNzdWUgIzI0NDAyOiBGaXggaW5wdXQoKSB0byBwcm9tcHQgdG8gdGhlIHJlZGlyZWN0ZWQgc3Rkb3V0IHdoZW4KKyAgc3lzLnN0ZG91dC5maWxlbm8oKSBmYWlscy4KKworLSBJc3N1ZSAjMjUzNDk6IE9wdGltaXplIGJ5dGVzICUgYXJncyB1c2luZyB0aGUgbmV3IHByaXZhdGUgX1B5Qnl0ZXNXcml0ZXIgQVBJLgorICBGb3JtYXR0aW5nIGlzIG5vdyB1cCB0byAyIHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjQ4MDY6IFByZXZlbnQgYnVpbHRpbiB0eXBlcyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBiZSBzdWJjbGFzc2VkIGZyb20KKyAgYmVpbmcgc3ViY2xhc3NlZCB0aHJvdWdoIG11bHRpcGxlIGluaGVyaXRhbmNlLgorCistIElzc3VlICMyNTMwMTogVGhlIFVURi04IGRlY29kZXIgaXMgbm93IHVwIHRvIDE1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yCisgIGhhbmRsZXJzOiBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCBhbmQgYGBzdXJyb2dhdGVlc2NhcGVgYC4KKworLSBJc3N1ZSAjMjQ4NDg6IEZpeGVkIGEgbnVtYmVyIG9mIGJ1Z3MgaW4gVVRGLTcgZGVjb2Rpbmcgb2YgbWlzZm9ybWVkIGRhdGEuCisKKy0gSXNzdWUgIzI1MjY3OiBUaGUgVVRGLTggZW5jb2RlciBpcyBub3cgdXAgdG8gNzUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IKKyAgaGFuZGxlcnM6IGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgLCBgYHN1cnJvZ2F0ZWVzY2FwZWBgLCBgYHN1cnJvZ2F0ZXBhc3NgYC4KKyAgUGF0Y2ggY28td3JpdHRlbiB3aXRoIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI1MjgwOiBJbXBvcnQgdHJhY2UgbWVzc2FnZXMgZW1pdHRlZCBpbiB2ZXJib3NlICgtdikgbW9kZSBhcmUgbm8KKyAgbG9uZ2VyIGZvcm1hdHRlZCB0d2ljZS4KKworLSBJc3N1ZSAjMjUyMjc6IE9wdGltaXplIEFTQ0lJIGFuZCBsYXRpbjEgZW5jb2RlcnMgd2l0aCB0aGUgYGBzdXJyb2dhdGVlc2NhcGVgYAorICBlcnJvciBoYW5kbGVyOiB0aGUgZW5jb2RlcnMgYXJlIG5vdyB1cCB0byAzIHRpbWVzIGFzIGZhc3QuIEluaXRpYWwgcGF0Y2gKKyAgd3JpdHRlbiBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNTAwMzogT24gU29sYXJpcyAxMS4zIG9yIG5ld2VyLCBvcy51cmFuZG9tKCkgbm93IHVzZXMgdGhlCisgIGdldHJhbmRvbSgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGhlIGdldGVudHJvcHkoKSBmdW5jdGlvbi4gVGhlIGdldGVudHJvcHkoKQorICBmdW5jdGlvbiBpcyBibG9ja2luZyB0byBnZW5lcmF0ZSB2ZXJ5IGdvb2QgcXVhbGl0eSBlbnRyb3B5LCBvcy51cmFuZG9tKCkKKyAgZG9lc24ndCBuZWVkIHN1Y2ggaGlnaC1xdWFsaXR5IGVudHJvcHkuCisKKy0gSXNzdWUgIzkyMzI6IE1vZGlmeSBQeXRob24ncyBncmFtbWFyIHRvIGFsbG93IHRyYWlsaW5nIGNvbW1hcyBpbiB0aGUKKyAgYXJndW1lbnQgbGlzdCBvZiBhIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLiAgRm9yIGV4YW1wbGUsICJkZWYgZihcKiwgYSA9CisgIDMsKTogcGFzcyIgaXMgbm93IGxlZ2FsLiBQYXRjaCBmcm9tIE1hcmsgRGlja2luc29uLgorCistIElzc3VlICMyNDk2NTogSW1wbGVtZW50IFBFUCA0OTggIkxpdGVyYWwgU3RyaW5nIEludGVycG9sYXRpb24iLiBUaGlzCisgIGFsbG93cyB5b3UgdG8gZW1iZWQgZXhwcmVzc2lvbnMgaW5zaWRlIGYtc3RyaW5ncywgd2hpY2ggYXJlCisgIGNvbnZlcnRlZCB0byBub3JtYWwgc3RyaW5ncyBhdCBydW4gdGltZS4gR2l2ZW4geD0zLCB0aGVuCisgIGYndmFsdWU9e3h9JyA9PSAndmFsdWU9MycuIFBhdGNoIGJ5IEVyaWMgVi4gU21pdGguCisKIC0gSXNzdWUgIzI2NDc4OiBGaXggc2VtYW50aWMgYnVncyB3aGVuIHVzaW5nIGJpbmFyeSBvcGVyYXRvcnMgd2l0aCBkaWN0aW9uYXJ5CiAgIHZpZXdzIGFuZCB0dXBsZXMuCiAKQEAgLTc1MCw3OSArMjAxMCwyNyBAQAogCiAtIElzc3VlICMyNTY2MDogRml4IFRBQiBrZXkgYmVoYXZpb3VyIGluIFJFUEwgd2l0aCByZWFkbGluZS4KIAorLSBJc3N1ZSAjMjYyODg6IE9wdGltaXplIFB5TG9uZ19Bc0RvdWJsZS4KKworLSBJc3N1ZXMgIzI2Mjg5IGFuZCAjMjYzMTU6IE9wdGltaXplIGZsb29yIGFuZCBtb2R1bG8gZGl2aXNpb24gZm9yCisgIHNpbmdsZS1kaWdpdCBsb25ncy4gIE1pY3JvYmVuY2htYXJrcyBzaG93IDItMi41eCBpbXByb3ZlbWVudC4gIEJ1aWx0LWluCisgICdkaXZtb2QnIGZ1bmN0aW9uIGlzIG5vdyBhbHNvIH4xMCUgZmFzdGVyLgorCiAtIElzc3VlICMyNTg4NzogUmFpc2UgYSBSdW50aW1lRXJyb3Igd2hlbiBhIGNvcm91dGluZSBvYmplY3QgaXMgYXdhaXRlZAogICBtb3JlIHRoYW4gb25jZS4KIAotLSBJc3N1ZSAjMjcyNDM6IFVwZGF0ZSB0aGUgX19haXRlcl9fIHByb3RvY29sOiBpbnN0ZWFkIG9mIHJldHVybmluZwotICBhbiBhd2FpdGFibGUgdGhhdCByZXNvbHZlcyB0byBhbiBhc3luY2hyb25vdXMgaXRlcmF0b3IsIHRoZSBhc3luY2hyb25vdXMKLSAgaXRlcmF0b3Igc2hvdWxkIGJlIHJldHVybmVkIGRpcmVjdGx5LiAgRG9pbmcgdGhlIGZvcm1lciB3aWxsIHRyaWdnZXIgYQotICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLgotCi0KIExpYnJhcnkKIC0tLS0tLS0KIAotLSBbU2VjdXJpdHldIElzc3VlICMyNjU1NjogVXBkYXRlIGV4cGF0IHRvIDIuMS4xLCBmaXhlcyBDVkUtMjAxNS0xMjgzLgotCi0tIFtTZWN1cml0eV0gRml4IFRMUyBzdHJpcHBpbmcgdnVsbmVyYWJpbGl0eSBpbiBzbXRwbGliLCBDVkUtMjAxNi0wNzcyLgotICBSZXBvcnRlZCBieSBUZWFtIE9zdHN0cm9tCi0KLS0gSXNzdWUgIzIxMzg2OiBJbXBsZW1lbnQgbWlzc2luZyBJUHY0QWRkcmVzcy5pc19nbG9iYWwgcHJvcGVydHkuICBJdCB3YXMKLSAgZG9jdW1lbnRlZCBzaW5jZSAwN2E1NjEwYmFlOWQuICBJbml0aWFsIHBhdGNoIGJ5IFJvZ2VyIEx1ZXRoaS4KLQotLSBJc3N1ZSAjMjA5MDA6IGRpc3R1dGlscyByZWdpc3RlciBjb21tYW5kIG5vdyBkZWNvZGVzIEhUVFAgcmVzcG9uc2VzCi0gIGNvcnJlY3RseS4gIEluaXRpYWwgcGF0Y2ggYnkgaW5ncmlkLgotCi0tIEEgbmV3IHZlcnNpb24gb2YgdHlwaW5nLnB5IHByb3ZpZGVzIHNldmVyYWwgbmV3IGNsYXNzZXMgYW5kCi0gIGZlYXR1cmVzOiBAb3ZlcmxvYWQgb3V0c2lkZSBzdHVicywgUmV2ZXJzaWJsZSwgRGVmYXVsdERpY3QsIFRleHQsCi0gIENvbnRleHRNYW5hZ2VyLCBUeXBlW10sIE5ld1R5cGUoKSwgVFlQRV9DSEVDS0lORywgYW5kIG51bWVyb3VzIGJ1ZwotICBmaXhlcyAobm90ZSB0aGF0IHNvbWUgb2YgdGhlIG5ldyBmZWF0dXJlcyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZCBpbgotICBteXB5IG9yIG90aGVyIHN0YXRpYyBhbmFseXplcnMpLiAgQWxzbyBjbGFzc2VzIGZvciBQRVAgNDkyCi0gIChBd2FpdGFibGUsIEFzeW5jSXRlcmFibGUsIEFzeW5jSXRlcmF0b3IpIGhhdmUgYmVlbiBhZGRlZCAoaW4gZmFjdAotICB0aGV5IG1hZGUgaXQgaW50byAzLjUuMSBidXQgd2VyZSBuZXZlciBtZW50aW9uZWQpLgotCi0tIElzc3VlICMyNTczODogU3RvcCBodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLnNlbmRfZXJyb3IoKSBmcm9tCi0gIHNlbmRpbmcgYSBtZXNzYWdlIGJvZHkgZm9yIDIwNSBSZXNldCBDb250ZW50LiAgQWxzbywgZG9uJ3Qgc2VuZCBDb250ZW50Ci0gIGhlYWRlciBmaWVsZHMgaW4gcmVzcG9uc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJvZHkuICBQYXRjaCBieSBTdXN1bXUKLSAgS29zaGliYS4KLQotLSBJc3N1ZSAjMjEzMTM6IEZpeCB0aGUgInBsYXRmb3JtIiBtb2R1bGUgdG8gdG9sZXJhdGUgd2hlbiBzeXMudmVyc2lvbgotICBjb250YWlucyB0cnVuY2F0ZWQgYnVpbGQgaW5mb3JtYXRpb24uCi0KLS0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY4Mzk6IE9uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGNhbGxzCi0gIGBgZ2V0cmFuZG9tKClgYCB3aXRoIGBgR1JORF9OT05CTE9DS2BgIHRvIGZhbGwgYmFjayBvbiByZWFkaW5nCi0gIGBgL2Rldi91cmFuZG9tYGAgaWYgdGhlIHVyYW5kb20gZW50cm9weSBwb29sIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ29sbSBCdWNrbGV5LgotCi0tIElzc3VlICMyNzE2NDogSW4gdGhlIHpsaWIgbW9kdWxlLCBhbGxvdyBkZWNvbXByZXNzaW5nIHJhdyBEZWZsYXRlIHN0cmVhbXMKLSAgd2l0aCBhIHByZWRlZmluZWQgemRpY3QuICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjQyOTE6IEZpeCB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIuV1NHSVJlcXVlc3RIYW5kbGVyIHRvIGNvbXBsZXRlbHkKLSAgd3JpdGUgZGF0YSB0byB0aGUgY2xpZW50LiAgUHJldmlvdXNseSBpdCBjb3VsZCBkbyBwYXJ0aWFsIHdyaXRlcyBhbmQKLSAgdHJ1bmNhdGUgZGF0YS4gIEFsc28sIHdzZ2lyZWYuaGFuZGxlci5TZXJ2ZXJIYW5kbGVyIGNhbiBub3cgaGFuZGxlIHN0ZG91dAotICBkb2luZyBwYXJ0aWFsIHdyaXRlcywgYnV0IHRoaXMgaXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMjY4MDk6IEFkZCBgYF9fYWxsX19gYCB0byA6bW9kOmBzdHJpbmdgLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KLQotLSBJc3N1ZSAjMjYzNzM6IHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGUgbm93IGNvcnJlY3RseSBpZ25vcmVzCi0gIEJyb2tlblBpcGVFcnJvciB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRpZXMgYmVmb3JlIC5jb21tdW5pY2F0ZSgpCi0gIGlzIGNhbGxlZCBpbiBtb3JlL2FsbCBjaXJjdW1zdGFuY2VzLgotCi0tIElzc3VlICMyMTc3NjogZGlzdHV0aWxzLnVwbG9hZCBub3cgY29ycmVjdGx5IGhhbmRsZXMgSFRUUEVycm9yLgotICBJbml0aWFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KLQotLSBJc3N1ZSAjMjcxMTQ6IEZpeCBTU0xDb250ZXh0Ll9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMgZmFpbHMgd2l0aAotICBQZXJtaXNzaW9uRXJyb3IKLQotLSBJc3N1ZSAjMTgzODM6IEF2b2lkIGNyZWF0aW5nIGR1cGxpY2F0ZSBmaWx0ZXJzIHdoZW4gdXNpbmcgZmlsdGVyd2FybmluZ3MKLSAgYW5kIHNpbXBsZWZpbHRlci4gIEJhc2VkIG9uIHBhdGNoIGJ5IEFsZXggU2hrb3AuCi0KIC0gSXNzdWUgIzI3MDU3OiBGaXggb3Muc2V0X2luaGVyaXRhYmxlKCkgb24gQW5kcm9pZCwgaW9jdGwoKSBpcyBibG9ja2VkIGJ5CiAgIFNFTGludXggYW5kIGZhaWxzIHdpdGggRUFDQ0VTUy4gVGhlIGZ1bmN0aW9uIG5vdyBmYWxscyBiYWNrIHRvIGZjbnRsKCkuCiAgIFBhdGNoIHdyaXR0ZW4gYnkgTWljaGHFgiBCZWRuYXJza2kuCiAKIC0gSXNzdWUgIzI3MDE0OiBGaXggaW5maW5pdGUgcmVjdXJzaW9uIHVzaW5nIHR5cGluZy5weS4gIFRoYW5rcyB0byBLYWxsZSBUdXVyZSEKIAorLSBJc3N1ZSAjMjcwMzE6IFJlbW92ZWQgZHVtbXkgbWV0aG9kcyBpbiBUa2ludGVyIHdpZGdldCBjbGFzc2VzOiB0a19tZW51QmFyKCkKKyAgYW5kIHRrX2JpbmRGb3JUcmF2ZXJzYWwoKS4KKwogLSBJc3N1ZSAjMTQxMzI6IEZpeCB1cmxsaWIucmVxdWVzdCByZWRpcmVjdCBoYW5kbGluZyB3aGVuIHRoZSB0YXJnZXQgb25seSBoYXMKICAgYSBxdWVyeSBzdHJpbmcuICBPcmlnaW5hbCBmaXggYnkgSsOhbiBKYW5lY2guCiAKQEAgLTgzMiw2ICsyMDQwLDE4IEBACiAgIHRvIGJlIEFTQ0lJLWVuY29kYWJsZSwgb3RoZXJ3aXNlIGEgVW5pY29kZUVuY29kZUVycm9yIGlzIHJhaXNlZC4gIEJhc2VkIG9uCiAgIHBhdGNoIGJ5IENocmlzdGlhbiBIZWltZXMuCiAKKy0gSXNzdWUgIzI3MDMzOiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgZGVjb2RlX2RhdGEgcGFyYW1ldGVyIGZvcgorICBzbXRwZC5TTVRQQ2hhbm5lbCBhbmQgc210cGQuU01UUFNlcnZlciBjb25zdHJ1Y3RvcnMgaXMgY2hhbmdlZCB0byBGYWxzZS4KKworLSBJc3N1ZSAjMjcwMzQ6IFJlbW92ZWQgZGVwcmVjYXRlZCBjbGFzcyBhc3luY2hhdC5maWZvLgorCistIElzc3VlICMyNjg3MDogQWRkZWQgcmVhZGxpbmUuc2V0X2F1dG9faGlzdG9yeSgpLCB3aGljaCBjYW4gc3RvcCBlbnRyaWVzCisgIGJlaW5nIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFR5bGVyCisgIENyb21wdG9uLgorCistIElzc3VlICMyNjAzOTogemlwZmlsZS5aaXBGaWxlLm9wZW4oKSBjYW4gbm93IGJlIHVzZWQgdG8gd3JpdGUgZGF0YSBpbnRvIGEgWklQCisgIGZpbGUsIGFzIHdlbGwgYXMgZm9yIGV4dHJhY3RpbmcgZGF0YS4gIFBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgorCiAtIElzc3VlICMyNjg5MjogSG9ub3IgZGVidWdsZXZlbCBmbGFnIGluIHVybGxpYi5yZXF1ZXN0LkhUVFBIYW5kbGVyLiBQYXRjaAogICBjb250cmlidXRlZCBieSBDaGkgSHN1YW4gWWVuLgogCkBAIC04NDYsNiArMjA2NiwxNCBAQAogLSBJc3N1ZSAjMjY5Nzc6IFJlbW92ZWQgdW5uZWNlc3NhcnksIGFuZCBpZ25vcmVkLCBjYWxsIHRvIHN1bSBvZiBzcXVhcmVzIGhlbHBlcgogICBpbiBzdGF0aXN0aWNzLnB2YXJpYW5jZS4KIAorLSBJc3N1ZSAjMjYwMDI6IFVzZSBiaXNlY3QgaW4gc3RhdGlzdGljcy5tZWRpYW4gaW5zdGVhZCBvZiBhIGxpbmVhciBzZWFyY2guCisgIFBhdGNoIGJ5IFVwZW5kcmEgS3VtYS4KKworLSBJc3N1ZSAjMjU5NzQ6IE1ha2UgdXNlIG9mIG5ldyBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8oKSBtZXRob2QgaW4gc3RhdGlzdGljcworICBtb2R1bGUuIFBhdGNoIGJ5IFN0ZWZhbiBLcmFoLgorCistIElzc3VlICMyNjk5NjogQWRkIHNlY3JldHMgbW9kdWxlIGFzIGRlc2NyaWJlZCBpbiBQRVAgNTA2LgorCiAtIElzc3VlICMyNjg4MTogVGhlIG1vZHVsZWZpbmRlciBtb2R1bGUgbm93IHN1cHBvcnRzIGV4dGVuZGVkIG9wY29kZSBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzIzODE1OiBGaXhlZCBjcmFzaGVzIHJlbGF0ZWQgdG8gZGlyZWN0bHkgY3JlYXRlZCBpbnN0YW5jZXMgb2YgdHlwZXMgaW4KQEAgLTg1Nyw2ICsyMDg1LDExIEBACiAtIElzc3VlICMyNjg3MzogeG1scnBjIG5vdyByYWlzZXMgUmVzcG9uc2VFcnJvciBvbiB1bnN1cHBvcnRlZCB0eXBlIHRhZ3MKICAgaW5zdGVhZCBvZiBzaWxlbnRseSByZXR1cm4gaW5jb3JyZWN0IHJlc3VsdC4KIAorLSBJc3N1ZSAjMjY5MTU6ICBUaGUgX19jb250YWluc19fIG1ldGhvZHMgaW4gdGhlIGNvbGxlY3Rpb25zIEFCQ3Mgbm93IGNoZWNrCisgIGZvciBpZGVudGl0eSBiZWZvcmUgY2hlY2tpbmcgZXF1YWxpdHkuICBUaGlzIGJldHRlciBtYXRjaGVzIHRoZSBiZWhhdmlvcgorICBvZiB0aGUgY29uY3JldGUgY2xhc3NlcywgYWxsb3dzIHNlbnNpYmxlIGhhbmRsaW5nIG9mIE5hTnMsIGFuZCBtYWtlcyBpdAorICBlYXNpZXIgdG8gcmVhc29uIGFib3V0IGNvbnRhaW5lciBpbnZhcmlhbnRzLgorCiAtIElzc3VlICMyNjcxMTogRml4ZWQgdGhlIGNvbXBhcmlzb24gb2YgcGxpc3RsaWIuRGF0YSB3aXRoIG90aGVyIHR5cGVzLgogCiAtIElzc3VlICMyNDExNDogRml4IGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gYGN0eXBlcy51dGlsYC4KQEAgLTg3MCw2ICsyMTAzLDEyIEBACiAgIG5hbWVzIHRoYXQgaGFwcGVuIHRvIGhhdmUgYSBieXBhc3NlZCBob3N0bmFtZSBhcyBhIHN1ZmZpeC4gIFBhdGNoIGJ5IFhpYW5nCiAgIFpoYW5nLgogCistIElzc3VlICMyNDkwMjogUHJpbnQgc2VydmVyIFVSTCBvbiBodHRwLnNlcnZlciBzdGFydHVwLiAgSW5pdGlhbCBwYXRjaCBieQorICBGZWxpeCBLYWlzZXIuCisKKy0gSXNzdWUgIzI1Nzg4OiBmaWxlaW5wdXQuaG9va19lbmNvZGVkKCkgbm93IHN1cHBvcnRzIGFuICJlcnJvcnMiIGFyZ3VtZW50CisgIGZvciBwYXNzaW5nIHRvIG9wZW4uICBPcmlnaW5hbCBwYXRjaCBieSBKb3NlcGggSGFja21hbi4KKwogLSBJc3N1ZSAjMjY2MzQ6IHJlY3Vyc2l2ZV9yZXByKCkgbm93IHNldHMgX19xdWFsbmFtZV9fIG9mIHdyYXBwZXIuICBQYXRjaCBieQogICBYaWFuZyBaaGFuZy4KIApAQCAtOTA1LDI2ICsyMTQ0LDU0IEBACiAtIElzc3VlICMyNjcxNzogU3RvcCBlbmNvZGluZyBMYXRpbi0xLWl6ZWQgV1NHSSBwYXRocyB3aXRoIFVURi04LiAgUGF0Y2ggYnkKICAgQW50aG9ueSBTb3R0aWxlLgogCistIElzc3VlICMyNjc4MjogQWRkIFNUQVJUVVBJTkZPIHRvIHN1YnByb2Nlc3MuX19hbGxfXyBvbiBXaW5kb3dzLgorCistIElzc3VlICMyNjQwNDogQWRkIGNvbnRleHQgbWFuYWdlciB0byBzb2NrZXRzZXJ2ZXIuICBQYXRjaCBieSBBdml2IFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjczNTogRml4IDpmdW5jOmBvcy51cmFuZG9tYCBvbiBTb2xhcmlzIDExLjMgYW5kIG5ld2VyIHdoZW4gcmVhZGluZwogICBtb3JlIHRoYW4gMSwwMjQgYnl0ZXM6IGNhbGwgYGBnZXRyYW5kb20oKWBgIG11bHRpcGxlIHRpbWVzIHdpdGggYSBsaW1pdCBvZgogICAxMDI0IGJ5dGVzIHBlciBjYWxsLgogCistIElzc3VlICMyNjU4NTogRWxpbWluYXRlIGh0dHAuc2VydmVyLl9xdW90ZV9odG1sKCkgYW5kIHVzZQorICBodG1sLmVzY2FwZShxdW90ZT1GYWxzZSkuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjY2ODU6IFJhaXNlIE9TRXJyb3IgaWYgY2xvc2luZyBhIHNvY2tldCBmYWlscy4KKwogLSBJc3N1ZSAjMTYzMjk6IEFkZCAud2VibSB0byBtaW1ldHlwZXMudHlwZXNfbWFwLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScuCiAKIC0gSXNzdWUgIzEzOTUyOiBBZGQgLmNzdiB0byBtaW1ldHlwZXMudHlwZXNfbWFwLiAgUGF0Y2ggYnkgR2VvZmYgV2lsc29uLgogCistIElzc3VlICMyNjU4NzogdGhlIHNpdGUgbW9kdWxlIG5vdyBhbGxvd3MgLnB0aCBmaWxlcyB0byBzcGVjaWZ5IGZpbGVzIHRvIGJlCisgIGFkZGVkIHRvIHN5cy5wYXRoIChlLmcuIHppcCBmaWxlcykuCisKKy0gSXNzdWUgIzI1NjA5OiBJbnRyb2R1Y2UgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyIGFuZAorICB0eXBpbmcuQ29udGV4dE1hbmFnZXIuCisKIC0gSXNzdWUgIzI2NzA5OiBGaXhlZCBZMjAzOCBwcm9ibGVtIGluIGxvYWRpbmcgYmluYXJ5IFBMaXN0cy4KIAogLSBJc3N1ZSAjMjM3MzU6IEhhbmRsZSB0ZXJtaW5hbCByZXNpemluZyB3aXRoIFJlYWRsaW5lIDYuMysgYnkgaW5zdGFsbGluZyBvdXIKICAgb3duIFNJR1dJTkNIIGhhbmRsZXIuICBQYXRjaCBieSBFcmljIFByaWNlLgogCistIElzc3VlICMyNTk1MTogQ2hhbmdlIFNTTFNvY2tldC5zZW5kYWxsKCkgdG8gcmV0dXJuIE5vbmUsIGFzIGV4cGxpY2l0bHkKKyAgZG9jdW1lbnRlZCBmb3IgcGxhaW4gc29ja2V0IG9iamVjdHMuICBQYXRjaCBieSBBdml2IFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjU4NjogSW4gaHR0cC5zZXJ2ZXIsIHJlc3BvbmQgd2l0aCAiNDEzIFJlcXVlc3QgaGVhZGVyIGZpZWxkcyB0b28KICAgbGFyZ2UiIGlmIHRoZXJlIGFyZSB0b28gbWFueSBoZWFkZXIgZmllbGRzIHRvIHBhcnNlLCByYXRoZXIgdGhhbiBraWxsaW5nCiAgIHRoZSBjb25uZWN0aW9uIGFuZCByYWlzaW5nIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAorLSBJc3N1ZSAjMjY2NzY6IEFkZGVkIG1pc3NpbmcgWE1MUHVsbFBhcnNlciB0byBFbGVtZW50VHJlZS5fX2FsbF9fLgorCiAtIElzc3VlICMyMjg1NDogQ2hhbmdlIEJ1ZmZlcmVkUmVhZGVyLndyaXRhYmxlKCkgYW5kCiAgIEJ1ZmZlcmVkV3JpdGVyLnJlYWRhYmxlKCkgdG8gYWx3YXlzIHJldHVybiBGYWxzZS4KIAorLSBJc3N1ZSAjMjY0OTI6IEV4aGF1c3RlZCBpdGVyYXRvciBvZiBhcnJheS5hcnJheSBub3cgY29uZm9ybXMgd2l0aCB0aGUgYmVoYXZpb3IKKyAgb2YgaXRlcmF0b3JzIG9mIG90aGVyIG11dGFibGUgc2VxdWVuY2VzOiBpdCBsZWZ0cyBleGhhdXN0ZWQgZXZlbiBpZiBpdGVyYXRlZAorICBhcnJheSBpcyBleHRlbmRlZC4KKworLSBJc3N1ZSAjMjY2NDE6IGRvY3Rlc3QuRG9jRmlsZVRlc3QgYW5kIGRvY3Rlc3QudGVzdGZpbGUoKSBub3cgc3VwcG9ydAorICBwYWNrYWdlcyAobW9kdWxlIHNwbGl0dGVkIGludG8gbXVsdGlwbGUgZGlyZWN0b3JpZXMpIGZvciB0aGUgcGFja2FnZQorICBwYXJhbWV0ZXIuCisKIC0gSXNzdWUgIzI1MTk1OiBGaXggYSByZWdyZXNzaW9uIGluIG1vY2suTWFnaWNNb2NrLiBfQ2FsbCBpcyBhIHN1YmNsYXNzIG9mCiAgIHR1cGxlIChjaGFuZ2VzZXQgMzYwM2JhZTYzYzEzIG9ubHkgd29ya3MgZm9yIGNsYXNzZXMpIHNvIHdlIG5lZWQgdG8KICAgaW1wbGVtZW50IF9fbmVfXyBvdXJzZWx2ZXMuICBQYXRjaCBieSBBbmRyZXcgUGx1bW1lci4KQEAgLTkzNywxNiArMjIwNCw0NSBAQAogCiAtIElzc3VlICMyNjYxNjogRml4ZWQgYSBidWcgaW4gZGF0ZXRpbWUuYXN0aW1lem9uZSgpIG1ldGhvZC4KIAotLSBJc3N1ZSAjMjE5MjU6IDpmdW5jOmB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nYCBub3cgY2F0Y2hlcyBleGNlcHRpb25zIG9uCi0gIGBgbGluZWNhY2hlLmdldGxpbmUoLi4uKWBgIHRvIGJlIGFibGUgdG8gbG9nIDpleGM6YFJlc291cmNlV2FybmluZ2AgZW1pdHRlZAotICBsYXRlIGR1cmluZyB0aGUgUHl0aG9uIHNodXRkb3duIHByb2Nlc3MuCistIElzc3VlICMyNjYzNzogVGhlIDptb2Q6YGltcG9ydGxpYmAgbW9kdWxlIG5vdyBlbWl0cyBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAKKyAgcmF0aGVyIHRoYW4gYSA6ZXhjOmBUeXBlRXJyb3JgIGlmIDpmdW5jOmBfX2ltcG9ydF9fYCBpcyB0cmllZCBkdXJpbmcgdGhlCisgIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzIGJ1dCA6ZGF0YTpgc3lzLnBhdGhgIGlzIGFscmVhZHkgY2xlYXJlZCAoc2V0IHRvCisgIGBgTm9uZWBgKS4KKworLSBJc3N1ZSAjMjE5MjU6IDpmdW5jOmB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nYCBub3cgY2F0Y2hlcyBleGNlcHRpb25zIHdoZW4KKyAgY2FsbGluZyA6ZnVuYzpgbGluZWNhY2hlLmdldGxpbmVgIGFuZAorICA6ZnVuYzpgdHJhY2VtYWxsb2MuZ2V0X29iamVjdF90cmFjZWJhY2tgIHRvIGJlIGFibGUgdG8gbG9nCisgIDpleGM6YFJlc291cmNlV2FybmluZ2AgZW1pdHRlZCBsYXRlIGR1cmluZyB0aGUgUHl0aG9uIHNodXRkb3duIHByb2Nlc3MuCisKKy0gSXNzdWUgIzIzODQ4OiBPbiBXaW5kb3dzLCBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgbm93IGFsc28gaW5zdGFsbHMgYW4KKyAgZXhjZXB0aW9uIGhhbmRsZXIgdG8gZHVtcCB0aGUgdHJhY2ViYWNrIG9mIGFsbCBQeXRob24gdGhyZWFkcyBvbiBhbnkgV2luZG93cworICBleGNlcHRpb24sIG5vdCBvbmx5IG9uIFVOSVggc2lnbmFscyAoU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJUKS4KKworLSBJc3N1ZSAjMjY1MzA6IEFkZCBDIGZ1bmN0aW9ucyA6YzpmdW5jOmBfUHlUcmFjZU1hbGxvY19UcmFja2AgYW5kCisgIDpjOmZ1bmM6YF9QeVRyYWNlTWFsbG9jX1VudHJhY2tgIHRvIHRyYWNrIG1lbW9yeSBibG9ja3MgdXNpbmcgdGhlCisgIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUuIEFkZCA6YzpmdW5jOmBfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2tgIHRvIGdldAorICB0aGUgdHJhY2ViYWNrIG9mIGFuIG9iamVjdC4KKworLSBJc3N1ZSAjMjY1ODg6IFRoZSBfdHJhY2VtYWxsb2Mgbm93IHN1cHBvcnRzIHRyYWNpbmcgbWVtb3J5IGFsbG9jYXRpb25zIG9mCisgIG11bHRpcGxlIGFkZHJlc3Mgc3BhY2VzIChkb21haW5zKS4KIAogLSBJc3N1ZSAjMjQyNjY6IEN0cmwrQyBkdXJpbmcgUmVhZGxpbmUgaGlzdG9yeSBzZWFyY2ggbm93IGNhbmNlbHMgdGhlIHNlYXJjaAogICBtb2RlIHdoZW4gY29tcGlsZWQgd2l0aCBSZWFkbGluZSA3LgogCistIElzc3VlICMyNjU5MDogSW1wbGVtZW50IGEgc2FmZSBmaW5hbGl6ZXIgZm9yIHRoZSBfc29ja2V0LnNvY2tldCB0eXBlLiBJdCBub3cKKyAgcmVsZWFzZXMgdGhlIEdJTCB0byBjbG9zZSB0aGUgc29ja2V0LgorCistIElzc3VlICMxODc4Nzogc3B3ZC5nZXRzcG5hbSgpIG5vdyByYWlzZXMgYSBQZXJtaXNzaW9uRXJyb3IgaWYgdGhlIHVzZXIKKyAgZG9lc24ndCBoYXZlIHByaXZpbGVnZXMuCisKIC0gSXNzdWUgIzI2NTYwOiBBdm9pZCBwb3RlbnRpYWwgVmFsdWVFcnJvciBpbiBCYXNlSGFuZGxlci5zdGFydF9yZXNwb25zZS4KICAgSW5pdGlhbCBwYXRjaCBieSBQZXRlciBJbmdsZXNieS4KIAorLSBJc3N1ZSAjMjY1Njc6IEFkZCBhIG5ldyBmdW5jdGlvbiA6YzpmdW5jOmBQeUVycl9SZXNvdXJjZVdhcm5pbmdgIGZ1bmN0aW9uIHRvCisgIHBhc3MgdGhlIGRlc3Ryb3llZCBvYmplY3QuIEFkZCBhICpzb3VyY2UqIGF0dHJpYnV0ZSB0bworICA6Y2xhc3M6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4gQWRkIHdhcm5pbmdzLl9zaG93d2Fybm1zZygpIHdoaWNoIHVzZXMKKyAgdHJhY2VtYWxsb2MgdG8gZ2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgc291cmNlIG9iamVjdCB3YXMgYWxsb2NhdGVkLgorCiAtIFtTZWN1cml0eV0gSXNzdWUgIzI2MzEzOiBzc2wucHkgX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyBpZiB3aW5kb3dzCiAgIGNlcnQgc3RvcmUgaXMgZW1wdHkuIFBhdGNoIGJ5IEJhamkuCiAKQEAgLTk2OCwyNCArMjI2NCwzOSBAQAogLSBJc3N1ZSAjMjM3MTg6IEZpeGVkIHBhcnNpbmcgdGltZSBpbiB3ZWVrIDAgYmVmb3JlIEphbiAxLiAgT3JpZ2luYWwgcGF0Y2ggYnkKICAgVGFtw6FzIEJlbmNlIEdlZGFpLgogCistIElzc3VlICMyNjMyMzogQWRkIE1vY2suYXNzZXJ0X2NhbGxlZCgpIGFuZCBNb2NrLmFzc2VydF9jYWxsZWRfb25jZSgpCisgIG1ldGhvZHMgdG8gdW5pdHRlc3QubW9jay4gUGF0Y2ggd3JpdHRlbiBieSBBbWl0IFNhaGEuCisKIC0gSXNzdWUgIzIwNTg5OiBJbnZva2luZyBQYXRoLm93bmVyKCkgYW5kIFBhdGguZ3JvdXAoKSBvbiBXaW5kb3dzIG5vdyByYWlzZQogICBOb3RJbXBsZW1lbnRlZEVycm9yIGluc3RlYWQgb2YgSW1wb3J0RXJyb3IuCiAKIC0gSXNzdWUgIzI2MTc3OiBGaXhlZCB0aGUga2V5cygpIG1ldGhvZCBmb3IgQ2FudmFzIGFuZCBTY3JvbGxiYXIgd2lkZ2V0cy4KIAotLSBJc3N1ZSAjMTUwNjg6IEdvdCByaWQgb2YgZXhjZXNzaXZlIGJ1ZmZlcmluZyBpbiB0aGUgZmlsZWlucHV0IG1vZHVsZS4KLSAgVGhlIGJ1ZnNpemUgcGFyYW1ldGVyIGlzIG5vIGxvbmdlciB1c2VkLgorLSBJc3N1ZSAjMTUwNjg6IEdvdCByaWQgb2YgZXhjZXNzaXZlIGJ1ZmZlcmluZyBpbiBmaWxlaW5wdXQuCisgIFRoZSBidWZzaXplIHBhcmFtZXRlciBpcyBub3cgZGVwcmVjYXRlZCBhbmQgaWdub3JlZC4KKworLSBJc3N1ZSAjMTk0NzU6IEFkZGVkIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHRvIHRoZSBkYXRldGltZQorICBpc29mb3JtYXQoKSBtZXRob2QgdG8gY2hvb3NlIHRoZSBwcmVjaXNpb24gb2YgdGhlIHRpbWUgY29tcG9uZW50LgogCiAtIElzc3VlICMyMjAyOiBGaXggVW5ib3VuZExvY2FsRXJyb3IgaW4KICAgQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlci5nZXRfYWxnb3JpdGhtX2ltcGxzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXRoaWV1CiAgIER1cHV5LgogCistIElzc3VlICMyNjE2NzogTWluaW1pemVkIG92ZXJoZWFkIGluIGNvcHkuY29weSgpIGFuZCBjb3B5LmRlZXBjb3B5KCkuCisgIE9wdGltaXplZCBjb3B5aW5nIGFuZCBkZWVwY29weWluZyBieXRlYXJyYXlzLCBOb3RJbXBsZW1lbnRlZCwgc2xpY2VzLAorICBzaG9ydCBsaXN0cywgdHVwbGVzLCBkaWN0cywgc2V0cy4KKwogLSBJc3N1ZSAjMjU3MTg6IEZpeGVkIHBpY2tsaW5nIGFuZCBjb3B5aW5nIHRoZSBhY2N1bXVsYXRlKCkgaXRlcmF0b3Igd2l0aAogICB0b3RhbCBpcyBOb25lLgogCiAtIElzc3VlICMyNjQ3NTogRml4ZWQgZGVidWdnaW5nIG91dHB1dCBmb3IgcmVndWxhciBleHByZXNzaW9ucyB3aXRoIHRoZSAoP3gpCiAgIGZsYWcuCiAKKy0gSXNzdWUgIzI2NDgyOiBBbGxvd2VkIHBpY2tsaW5nIHJlY3Vyc2l2ZSBkZXF1ZXVlcy4KKworLSBJc3N1ZSAjMjYzMzU6IE1ha2UgbW1hcC53cml0ZSgpIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gbGlrZQorICBvdGhlciB3cml0ZSBtZXRob2RzLiAgUGF0Y2ggYnkgSmFrdWIgU3Rhc2lhay4KKwogLSBJc3N1ZSAjMjY0NTc6IEZpeGVkIHRoZSBzdWJuZXRzKCkgbWV0aG9kcyBpbiBJUCBuZXR3b3JrIGNsYXNzZXMgZm9yIHRoZSBjYXNlCiAgIHdoZW4gcmVzdWx0aW5nIHByZWZpeCBsZW5ndGggaXMgZXF1YWwgdG8gbWF4aW1hbCBwcmVmaXggbGVuZ3RoLgogICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KQEAgLTEwMDIsNyArMjMxMyw3IEBACiAKIC0gSXNzdWUgIzI2MTg2OiBSZW1vdmUgYW4gaW52YWxpZCB0eXBlIGNoZWNrIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuCiAKLS0gSXNzdWUgIzI2MzY3OiBpbXBvcnRsaWIuX19pbXBvcnRfXygpIHJhaXNlcyBTeXN0ZW1FcnJvciBsaWtlCistIElzc3VlICMyNjM2NzogaW1wb3J0bGliLl9faW1wb3J0X18oKSByYWlzZXMgSW1wb3J0RXJyb3IgbGlrZQogICBidWlsdGlucy5fX2ltcG9ydF9fKCkgd2hlbiBgYGxldmVsYGAgaXMgc3BlY2lmaWVkIGJ1dCB3aXRob3V0IGFuIGFjY29tcGFueWluZwogICBwYWNrYWdlIHNwZWNpZmllZC4KIApAQCAtMTAxMCwxOSArMjMyMSwzOSBAQAogICB0aGUgY29ubmVjdGVkIHNvY2tldCkgd2hlbiB2ZXJpZnlfcmVxdWVzdCgpIHJldHVybnMgZmFsc2UuICBQYXRjaCBieSBBdml2CiAgIFBhbGl2b2RhLgogCistIElzc3VlICMyMzQzMDogQ2hhbmdlIHRoZSBzb2NrZXRzZXJ2ZXIgbW9kdWxlIHRvIG9ubHkgY2F0Y2ggZXhjZXB0aW9ucworICByYWlzZWQgZnJvbSBhIHJlcXVlc3QgaGFuZGxlciB0aGF0IGFyZSBkZXJpdmVkIGZyb20gRXhjZXB0aW9uIChpbnN0ZWFkIG9mCisgIEJhc2VFeGNlcHRpb24pLiAgVGhlcmVmb3JlIFN5c3RlbUV4aXQgYW5kIEtleWJvYXJkSW50ZXJydXB0IG5vIGxvbmdlcgorICB0cmlnZ2VyIHRoZSBoYW5kbGVfZXJyb3IoKSBtZXRob2QsIGFuZCB3aWxsIG5vdyB0byBzdG9wIGEgc2luZ2xlLXRocmVhZGVkCisgIHNlcnZlci4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNTkzOTogT24gV2luZG93cyBvcGVuIHRoZSBjZXJ0IHN0b3JlIHJlYWRvbmx5IGluCiAgIHNzbC5lbnVtX2NlcnRpZmljYXRlcy4KIAogLSBJc3N1ZSAjMjU5OTU6IG9zLndhbGsoKSBubyBsb25nZXIgdXNlcyBGRHMgcHJvcG9ydGlvbmFsIHRvIHRoZSB0cmVlIGRlcHRoLgogCistIElzc3VlICMyNTk5NDogQWRkZWQgdGhlIGNsb3NlKCkgbWV0aG9kIGFuZCB0aGUgc3VwcG9ydCBvZiB0aGUgY29udGV4dCBtYW5hZ2VyCisgIHByb3RvY29sIGZvciB0aGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgorCistIElzc3VlICMyMzk5MjogbXVsdGlwcm9jZXNzaW5nOiBtYWtlIE1hcFJlc3VsdCBub3QgZmFpbC1mYXN0IHVwb24gZXhjZXB0aW9uLgorCistIElzc3VlICMyNjI0MzogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmNvbXByZXNzKCkuICBQYXRjaCBieSBBdml2CisgIFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjExNzogVGhlIG9zLnNjYW5kaXIoKSBpdGVyYXRvciBub3cgY2xvc2VzIGZpbGUgZGVzY3JpcHRvciBub3Qgb25seQogICB3aGVuIHRoZSBpdGVyYXRpb24gaXMgZmluaXNoZWQsIGJ1dCB3aGVuIGl0IHdhcyBmYWlsZWQgd2l0aCBlcnJvci4KIAorLSBJc3N1ZSAjMjU5NDk6IF9fZGljdF9fIGZvciBhbiBPcmRlcmVkRGljdCBpbnN0YW5jZSBpcyBub3cgY3JlYXRlZCBvbmx5IHdoZW4KKyAgbmVlZGVkLgorCiAtIElzc3VlICMyNTkxMTogUmVzdG9yZWQgc3VwcG9ydCBvZiBieXRlcyBwYXRocyBpbiBvcy53YWxrKCkgb24gV2luZG93cy4KIAogLSBJc3N1ZSAjMjYwNDU6IEFkZCBVVEYtOCBzdWdnZXN0aW9uIHRvIGVycm9yIG1lc3NhZ2Ugd2hlbiBwb3N0aW5nIGEKICAgbm9uLUxhdGluLTEgc3RyaW5nIHdpdGggaHR0cC5jbGllbnQuCiAKKy0gSXNzdWUgIzI2MDM5OiBBZGRlZCB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKCkgYW5kIHppcGluZm8uWmlwSW5mby5pc19kaXIoKS4KKyAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzEyOTIzOiBSZXNldCBGYW5jeVVSTG9wZW5lcidzIHJlZGlyZWN0IGNvdW50ZXIgZXZlbiBpZiB0aGVyZSBpcyBhbgogICBleGNlcHRpb24uICBCYXNlZCBvbiBwYXRjaGVzIGJ5IEJyaWFuIEJyYXppbCBhbmQgRGFuaWVsIFJvY2NvLgogCkBAIC0xMDQzLDYgKzIzNzQsMTAgQEAKICAgZ2V0aG9zdGJ5bmFtZV9leCgpIGZ1bmN0aW9ucyBvZiB0aGUgc29ja2V0IG1vZHVsZSBub3cgZGVjb2RlIHRoZSBob3N0bmFtZQogICBmcm9tIHRoZSBBTlNJIGNvZGUgcGFnZSByYXRoZXIgdGhhbiBVVEYtOC4KIAorLSBJc3N1ZSAjMjYwOTk6IFRoZSBzaXRlIG1vZHVsZSBub3cgd3JpdGVzIGFuIGVycm9yIGludG8gc3RkZXJyIGlmCisgIHNpdGVjdXN0b21pemUgbW9kdWxlIGNhbiBiZSBpbXBvcnRlZCBidXQgZXhlY3V0aW5nIHRoZSBtb2R1bGUgcmFpc2UgYW4KKyAgSW1wb3J0RXJyb3IuIFNhbWUgY2hhbmdlIGZvciB1c2VyY3VzdG9taXplLgorCiAtIElzc3VlICMyNjE0NzogeG1scnBjIG5vdyB3b3JrcyB3aXRoIHN0cmluZ3Mgbm90IGVuY29kYWJsZSB3aXRoIHVzZWQKICAgbm9uLVVURi04IGVuY29kaW5nLgogCkBAIC0xMDUzLDEzICsyMzg4LDIxIEBACiAtIElzc3VlICMyNjAxMzogQWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIGJyb2tlbiBwcm90b2NvbCAyIHBpY2tsZXMgY3JlYXRlZAogICBpbiBvbGQgUHl0aG9uIDMgdmVyc2lvbnMgKDMuNC4zIGFuZCBsb3dlcikuCiAKKy0gSXNzdWUgIzI2MTI5OiBEZXByZWNhdGVkIGFjY2VwdGluZyBub24taW50ZWdlcnMgaW4gZ3JwLmdldGdyZ2lkKCkuCisKIC0gSXNzdWUgIzI1ODUwOiBVc2UgY3Jvc3MtY29tcGlsYXRpb24gYnkgZGVmYXVsdCBmb3IgNjQtYml0IFdpbmRvd3MuCiAKLS0gSXNzdWUgIzE3NjMzOiBJbXByb3ZlIHppcGltcG9ydCdzIHN1cHBvcnQgZm9yIG5hbWVzcGFjZSBwYWNrYWdlcy4KKy0gSXNzdWUgIzI1ODIyOiBBZGQgZG9jc3RyaW5ncyB0byB0aGUgZmllbGRzIG9mIHVybGxpYi5wYXJzZSByZXN1bHRzLgorICBQYXRjaCBjb250cmlidXRlZCBieSBTd2F0aSBKYWlzd2FsLgorCistIElzc3VlICMyMjY0MjogQ29udmVydCB0cmFjZSBtb2R1bGUgb3B0aW9uIHBhcnNpbmcgbWVjaGFuaXNtIHRvIGFyZ3BhcnNlLgorICBQYXRjaCBjb250cmlidXRlZCBieSBTaWxlbnRHaG9zdC4KIAogLSBJc3N1ZSAjMjQ3MDU6IEZpeCBzeXNjb25maWcuX3BhcnNlX21ha2VmaWxlIG5vdCBleHBhbmRpbmcgJHt9IHZhcnMKICAgYXBwZWFyaW5nIGJlZm9yZSAkKCkgdmFycy4KIAorLSBJc3N1ZSAjMjYwNjk6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBhcGlzIGluIHRoZSB0cmFjZSBtb2R1bGUuCisKIC0gSXNzdWUgIzIyMTM4OiBGaXggbW9jay5wYXRjaCBiZWhhdmlvciB3aGVuIHBhdGNoaW5nIGRlc2NyaXB0b3JzLiBSZXN0b3JlCiAgIG9yaWdpbmFsIHZhbHVlcyBhZnRlciBwYXRjaGluZy4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgU2VhbiBNY0N1bGx5LgogCkBAIC0xMDcyLDEzICsyNDE1LDI4IEBACiAtIElzc3VlICMyNDEyMDogSWdub3JlIFBlcm1pc3Npb25FcnJvciB3aGVuIHRyYXZlcnNpbmcgYSB0cmVlIHdpdGgKICAgcGF0aGxpYi5QYXRoLltyXWdsb2IoKS4gIFBhdGNoIGJ5IFVscmljaCBQZXRyaS4KIAorLSBJc3N1ZSAjMjE4MTU6IEFjY2VwdCBdIGNoYXJhY3RlcnMgaW4gdGhlIGRhdGEgcG9ydGlvbiBvZiBpbWFwIHJlc3BvbnNlcywKKyAgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBmbGFncyB3aXRoIHNxdWFyZSBicmFja2V0cyBhY2NlcHRlZCBhbmQgcHJvZHVjZWQKKyAgYnkgc2VydmVycyBzdWNoIGFzIGdtYWlsLgorCiAtIElzc3VlICMyNTQ0NzogZmlsZWlucHV0IG5vdyB1c2VzIHN5cy5zdGRpbiBhcy1pcyBpZiBpdCBkb2VzIG5vdCBoYXZlIGEKICAgYnVmZmVyIGF0dHJpYnV0ZSAocmVzdG9yZXMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkuCiAKKy0gSXNzdWUgIzI1OTcxOiBPcHRpbWl6ZWQgY3JlYXRpbmcgRnJhY3Rpb25zIGZyb20gZmxvYXRzIGJ5IDIgdGltZXMgYW5kIGZyb20KKyAgRGVjaW1hbHMgYnkgMyB0aW1lcy4KKworLSBJc3N1ZSAjMjU4MDI6IERvY3VtZW50IGFzIGRlcHJlY2F0ZWQgdGhlIHJlbWFpbmluZyBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGUoKS4KKworLSBJc3N1ZSAjMjU5Mjg6IEFkZCBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8oKS4KKwogLSBJc3N1ZSAjMjU0NDc6IENvcHlpbmcgdGhlIGxydV9jYWNoZSgpIHdyYXBwZXIgb2JqZWN0IG5vdyBhbHdheXMgd29ya3MsCi0gIGluZGVwZW5kZWRseSBmcm9tIHRoZSB0eXBlIG9mIHRoZSB3cmFwcGVkIG9iamVjdCAoYnkgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbAorICBpbmRlcGVuZGVudGx5IGZyb20gdGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0IChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsCiAgIG9iamVjdCB1bmNoYW5nZWQpLgogCistIElzc3VlICMyNTc2ODogSGF2ZSB0aGUgZnVuY3Rpb25zIGluIGNvbXBpbGVhbGwgcmV0dXJuIGJvb2xlYW5zIGluc3RlYWQgb2YKKyAgaW50cyBhbmQgYWRkIHByb3BlciBkb2N1bWVudGF0aW9uIGFuZCB0ZXN0cyBmb3IgdGhlIHJldHVybiB2YWx1ZXMuCisKIC0gSXNzdWUgIzI0MTAzOiBGaXhlZCBwb3NzaWJsZSB1c2UgYWZ0ZXIgZnJlZSBpbiBFbGVtZW50VHJlZS5YTUxQdWxsUGFyc2VyLgogCiAtIElzc3VlICMyNTg2MDogb3MuZndhbGsoKSBubyBsb25nZXIgc2tpcHMgcmVtYWluaW5nIGRpcmVjdG9yaWVzIHdoZW4gZXJyb3IKQEAgLTEwODYsOCArMjQ0NCwyMiBAQAogCiAtIElzc3VlICMyNTkxNDogRml4ZWQgYW5kIHNpbXBsaWZpZWQgT3JkZXJlZERpY3QuX19zaXplb2ZfXy4KIAorLSBJc3N1ZSAjMjU4Njk6IE9wdGltaXplZCBkZWVwY29weWluZyBFbGVtZW50VHJlZTsgaXQgaXMgbm93IDIwIHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjU4NzM6IE9wdGltaXplZCBpdGVyYXRpbmcgRWxlbWVudFRyZWUuICBJdGVyYXRpbmcgZWxlbWVudHMKKyAgRWxlbWVudC5pdGVyKCkgaXMgbm93IDQwJSBmYXN0ZXIsIGl0ZXJhdGluZyB0ZXh0IEVsZW1lbnQuaXRlcnRleHQoKQorICBpcyBub3cgdXAgdG8gMi41IHRpbWVzIGZhc3Rlci4KKwogLSBJc3N1ZSAjMjU5MDI6IEZpeGVkIHZhcmlvdXMgcmVmY291bnQgaXNzdWVzIGluIEVsZW1lbnRUcmVlIGl0ZXJhdGlvbi4KIAorLSBJc3N1ZSAjMjIyMjc6IFRoZSBUYXJGaWxlIGl0ZXJhdG9yIGlzIHJlaW1wbGVtZW50ZWQgdXNpbmcgZ2VuZXJhdG9yLgorICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIHNpbXBsZXIgdGhhdCB1c2luZyBjbGFzcy4KKworLSBJc3N1ZSAjMjU2Mzg6IE9wdGltaXplZCBFbGVtZW50VHJlZS5pdGVycGFyc2UoKTsgaXQgaXMgbm93IDJ4IGZhc3Rlci4KKyAgT3B0aW1pemVkIEVsZW1lbnRUcmVlIHBhcnNpbmc7IGl0IGlzIG5vdyAxMCUgZmFzdGVyLgorCistIElzc3VlICMyNTc2MTogSW1wcm92ZWQgZGV0ZWN0aW5nIGVycm9ycyBpbiBicm9rZW4gcGlja2xlIGRhdGEuCisKIC0gSXNzdWUgIzI1NzE3OiBSZXN0b3JlIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIgb2YgdG9sZXJhdGluZyBtb3N0IGZzdGF0KCkKICAgZXJyb3JzIHdoZW4gb3BlbmluZyBmaWxlcy4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBpbiAzLjVhMSwgYW5kIHN0b3BwZWQKICAgYW5vbnltb3VzIHRlbXBvcmFyeSBmaWxlcyBmcm9tIHdvcmtpbmcgaW4gc3BlY2lhbCBjYXNlcy4KQEAgLTEwOTksNiArMjQ3MSw5IEBACiAtIElzc3VlICMyNTc2NDogSW4gdGhlIHN1YnByb2Nlc3MgbW9kdWxlLCBwcmVzZXJ2ZSBhbnkgZXhjZXB0aW9uIGNhdXNlZCBieQogICBmb3JrKCkgZmFpbHVyZSB3aGVuIHByZWV4ZWNfZm4gaXMgdXNlZC4KIAorLSBJc3N1ZSAjMjU3NzE6IFR3ZWFrIHRoZSBleGNlcHRpb24gbWVzc2FnZSBmb3IgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCkKKyAgd2hlbiAncGFja2FnZScgaXNuJ3Qgc3BlY2lmaWVkIGJ1dCBuZWNlc3NhcnkuCisKIC0gSXNzdWUgIzY0Nzg6IF9zdHJwdGltZSdzIHJlZ2V4cCBjYWNoZSBub3cgaXMgcmVzZXQgYWZ0ZXIgY2hhbmdpbmcgdGltZXpvbmUKICAgd2l0aCB0aW1lLnR6c2V0KCkuCiAKQEAgLTExMjAsNiArMjQ5NSw5IEBACiAtIElzc3VlICMxMDEzMTogRml4ZWQgZGVlcCBjb3B5aW5nIG9mIG1pbmlkb20gZG9jdW1lbnRzLiAgQmFzZWQgb24gcGF0Y2gKICAgYnkgTWFyaWFuIEdhbmlzaW4uCiAKKy0gSXNzdWUgIzc5OTA6IGRpcigpIG9uIEVsZW1lbnRUcmVlLkVsZW1lbnQgbm93IGxpc3RzIHByb3BlcnRpZXM6ICJ0YWciLAorICAidGV4dCIsICJ0YWlsIiBhbmQgImF0dHJpYiIuICBPcmlnaW5hbCBwYXRjaCBieSBTYW50b3NvIFdpamF5YS4KKwogLSBJc3N1ZSAjMjU3MjU6IEZpeGVkIGEgcmVmZXJlbmNlIGxlYWsgaW4gcGlja2xlLmxvYWRzKCkgd2hlbiB1bnBpY2tsaW5nCiAgIGludmFsaWQgZGF0YSBpbmNsdWRpbmcgdHVwbGUgaW5zdHJ1Y3Rpb25zLgogCkBAIC0xMTM1LDYgKzI1MTMsMjAzIEBACiAtIElzc3VlICMyNTYyNDogWmlwRmlsZSBub3cgYWx3YXlzIHdyaXRlcyBhIFpJUF9TVE9SRUQgaGVhZGVyIGZvciBkaXJlY3RvcnkKICAgZW50cmllcy4gIFBhdGNoIGJ5IERpbmd5dWFuIFdhbmcuCiAKKy0gSXNzdWUgIzI1NjI2OiBDaGFuZ2UgdGhyZWUgemxpYiBmdW5jdGlvbnMgdG8gYWNjZXB0IHNpemVzIHRoYXQgZml0IGluCisgIFB5X3NzaXplX3QsIGJ1dCBpbnRlcm5hbGx5IGNhcCB0aG9zZSBzaXplcyB0byBVSU5UX01BWC4gIFRoaXMgcmVzb2x2ZXMgYQorICByZWdyZXNzaW9uIGluIDMuNSB3aGVyZSBHemlwRmlsZS5yZWFkKCkgZmFpbGVkIHRvIHJlYWQgY2h1bmtzIGxhcmdlciB0aGFuIDIKKyAgb3IgNCBHaUIuICBUaGUgY2hhbmdlIGFmZmVjdHMgdGhlIHpsaWIuRGVjb21wcmVzcy5kZWNvbXByZXNzKCkgbWF4X2xlbmd0aAorICBwYXJhbWV0ZXIsIHRoZSB6bGliLmRlY29tcHJlc3MoKSBidWZzaXplIHBhcmFtZXRlciwgYW5kIHRoZQorICB6bGliLkRlY29tcHJlc3MuZmx1c2goKSBsZW5ndGggcGFyYW1ldGVyLgorCistIElzc3VlICMyNTU4MzogQXZvaWQgaW5jb3JyZWN0IGVycm9ycyByYWlzZWQgYnkgb3MubWFrZWRpcnMoZXhpc3Rfb2s9VHJ1ZSkKKyAgd2hlbiB0aGUgT1MgZ2l2ZXMgcHJpb3JpdHkgdG8gZXJyb3JzIHN1Y2ggYXMgRUFDQ0VTIG92ZXIgRUVYSVNULgorCistIElzc3VlICMyNTU5MzogQ2hhbmdlIHNlbWFudGljcyBvZiBFdmVudExvb3Auc3RvcCgpIGluIGFzeW5jaW8uCisKKy0gSXNzdWUgIzY5NzM6IFdoZW4gd2Uga25vdyBhIHN1YnByb2Nlc3MuUG9wZW4gcHJvY2VzcyBoYXMgZGllZCwgZG8KKyAgbm90IGFsbG93IHRoZSBzZW5kX3NpZ25hbCgpLCB0ZXJtaW5hdGUoKSwgb3Iga2lsbCgpIG1ldGhvZHMgdG8gZG8KKyAgYW55dGhpbmcgYXMgdGhleSBjb3VsZCBwb3RlbnRpYWxseSBzaWduYWwgYSBkaWZmZXJlbnQgcHJvY2Vzcy4KKworLSBJc3N1ZSAjMjM4ODM6IEFkZGVkIG1pc3NpbmcgQVBJcyB0byBfX2FsbF9fIHRvIG1hdGNoIHRoZSBkb2N1bWVudGVkIEFQSXMKKyAgZm9yIHRoZSBmb2xsb3dpbmcgbW9kdWxlczogY2FsZW5kYXIsIGNzdiwgZW51bSwgZmlsZWlucHV0LCBmdHBsaWIsIGxvZ2dpbmcsCisgIG9wdHBhcnNlLCB0YXJmaWxlLCB0aHJlYWRpbmcgYW5kIHdhdmUuICBBbHNvIGFkZGVkIGEKKyAgdGVzdC5zdXBwb3J0LmNoZWNrX19hbGxfXygpIGhlbHBlci4gIFBhdGNoZXMgYnkgSmFjZWsgS2/Fgm9kemllaiwgTWF1cm8KKyAgUy4gTS4gUm9kcmlndWVzIGFuZCBKb2VsIFRhZGRlaS4KKworLSBJc3N1ZSAjMjU1OTA6IEluIHRoZSBSZWFkbGluZSBjb21wbGV0ZXIsIG9ubHkgY2FsbCBnZXRhdHRyKCkgb25jZSBwZXIKKyAgYXR0cmlidXRlLiAgQWxzbyBjb21wbGV0ZSBuYW1lcyBvZiBhdHRyaWJ1dGVzIHN1Y2ggYXMgcHJvcGVydGllcyBhbmQgc2xvdHMKKyAgd2hpY2ggYXJlIGxpc3RlZCBieSBkaXIoKSBidXQgbm90IHlldCBjcmVhdGVkIG9uIGFuIGluc3RhbmNlLgorCistIElzc3VlICMyNTQ5ODogRml4IGEgY3Jhc2ggd2hlbiBnYXJiYWdlLWNvbGxlY3RpbmcgY3R5cGVzIG9iamVjdHMgY3JlYXRlZAorICBieSB3cmFwcGluZyBhIG1lbW9yeXZpZXcuICBUaGlzIHdhcyBhIHJlZ3Jlc3Npb24gbWFkZSBpbiAzLjVhMS4gIEJhc2VkCisgIG9uIHBhdGNoIGJ5IEVyeWtzdW4uCisKKy0gSXNzdWUgIzI1NTg0OiBBZGRlZCAiZXNjYXBlIiB0byB0aGUgX19hbGxfXyBsaXN0IGluIHRoZSBnbG9iIG1vZHVsZS4KKworLSBJc3N1ZSAjMjU1ODQ6IEZpeGVkIHJlY3Vyc2l2ZSBnbG9iKCkgd2l0aCBwYXR0ZXJucyBzdGFydGluZyB3aXRoICdcKlwqJy4KKworLSBJc3N1ZSAjMjU0NDY6IEZpeCByZWdyZXNzaW9uIGluIHNtdHBsaWIncyBBVVRIIExPR0lOIHN1cHBvcnQuCisKKy0gSXNzdWUgIzE4MDEwOiBGaXggdGhlIHB5ZG9jIHdlYiBzZXJ2ZXIncyBtb2R1bGUgc2VhcmNoIGZ1bmN0aW9uIHRvIGhhbmRsZQorICBleGNlcHRpb25zIGZyb20gaW1wb3J0aW5nIHBhY2thZ2VzLgorCistIElzc3VlICMyNTU1NDogR290IHJpZCBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXJzaW5nLgorCistIElzc3VlICMxODk3MzogQ29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB0aGUgY2FsZW5kYXIgbW9kdWxlIG5vdyB1c2VzIGFyZ3BhcnNlCisgIGluc3RlYWQgb2Ygb3B0cGFyc2UuCisKKy0gSXNzdWUgIzI1NTEwOiBmaWxlaW5wdXQuRmlsZUlucHV0LnJlYWRsaW5lKCkgbm93IHJldHVybnMgYicnIGluc3RlYWQgb2YgJycKKyAgYXQgdGhlIGVuZCBpZiB0aGUgRmlsZUlucHV0IHdhcyBvcGVuZWQgd2l0aCBiaW5hcnkgbW9kZS4KKyAgUGF0Y2ggYnkgUnlvc3VrZSBJdG8uCisKKy0gSXNzdWUgIzI1NTAzOiBGaXhlZCBpbnNwZWN0LmdldGRvYygpIGZvciBpbmhlcml0ZWQgZG9jc3RyaW5ncyBvZiBwcm9wZXJ0aWVzLgorICBPcmlnaW5hbCBwYXRjaCBieSBKb2huIE1hcmsgVmFuZGVuYmVyZy4KKworLSBJc3N1ZSAjMjU1MTU6IEFsd2F5cyB1c2Ugb3MudXJhbmRvbSBhcyBhIHNvdXJjZSBvZiByYW5kb21uZXNzIGluIHV1aWQudXVpZDQuCisKKy0gSXNzdWUgIzIxODI3OiBGaXhlZCB0ZXh0d3JhcC5kZWRlbnQoKSBmb3IgdGhlIGNhc2Ugd2hlbiBsYXJnZXN0IGNvbW1vbgorICB3aGl0ZXNwYWNlIGlzIGEgc3Vic3RyaW5nIG9mIHNtYWxsZXN0IGxlYWRpbmcgd2hpdGVzcGFjZS4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgUm9iZXJ0IExpLgorCistIElzc3VlICMyNTQ0NzogVGhlIGxydV9jYWNoZSgpIHdyYXBwZXIgb2JqZWN0cyBub3cgY2FuIGJlIGNvcGllZCBhbmQgcGlja2xlZAorICAoYnkgcmV0dXJuaW5nIHRoZSBvcmlnaW5hbCBvYmplY3QgdW5jaGFuZ2VkKS4KKworLSBJc3N1ZSAjMjUzOTA6IHR5cGluZzogRG9uJ3QgY3Jhc2ggb24gVW5pb25bc3RyLCBQYXR0ZXJuXS4KKworLSBJc3N1ZSAjMjU0NDE6IGFzeW5jaW86IFJhaXNlIGVycm9yIGZyb20gZHJhaW4oKSB3aGVuIHNvY2tldCBpcyBjbG9zZWQuCisKKy0gSXNzdWUgIzI1NDEwOiBDbGVhbmVkIHVwIGFuZCBmaXhlZCBtaW5vciBidWdzIGluIEMgaW1wbGVtZW50YXRpb24gb2YKKyAgT3JkZXJlZERpY3QuCisKKy0gSXNzdWUgIzI1NDExOiBJbXByb3ZlZCBVbmljb2RlIHN1cHBvcnQgaW4gU01UUEhhbmRsZXIgdGhyb3VnaCBiZXR0ZXIgdXNlIG9mCisgIHRoZSBlbWFpbCBwYWNrYWdlLiBUaGFua3MgdG8gdXNlciBzaW1vbjA0IGZvciB0aGUgcGF0Y2guCisKKy0gTW92ZSB0aGUgaW1wIG1vZHVsZSBmcm9tIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyB0byBEZXByZWNhdGlvbldhcm5pbmcuCisKKy0gSXNzdWUgIzI1NDA3OiBSZW1vdmUgbWVudGlvbnMgb2YgdGhlIGZvcm1hdHRlciBtb2R1bGUgYmVpbmcgcmVtb3ZlZCBpbgorICBQeXRob24gMy42LgorCistIElzc3VlICMyNTQwNjogRml4ZWQgYSBidWcgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZiBPcmRlcmVkRGljdC5tb3ZlX3RvX2VuZCgpCisgIHRoYXQgY2F1c2VkIHNlZ21lbnRhdGlvbiBmYXVsdCBvciBoYW5nIGluIGl0ZXJhdGluZyBhZnRlciBtb3Zpbmcgc2V2ZXJhbAorICBpdGVtcyB0byB0aGUgc3RhcnQgb2Ygb3JkZXJlZCBkaWN0LgorCistIElzc3VlICMyNTM4MjogcGlja2xldG9vbHMuZGlzKCkgbm93IG91dHB1dHMgaW1wbGljaXQgbWVtbyBpbmRleCBmb3IgdGhlCisgIE1FTU9JWkUgb3Bjb2RlLgorCistIElzc3VlICMyNTM1NzogQWRkIGFuIG9wdGlvbmFsIG5ld2xpbmUgcGFyYW1lciB0byBiaW5hc2NpaS5iMmFfYmFzZTY0KCkuCisgIGJhc2U2NC5iNjRlbmNvZGUoKSB1c2VzIGl0IHRvIGF2b2lkIGEgbWVtb3J5IGNvcHkuCisKKy0gSXNzdWUgIzI0MTY0OiBPYmplY3RzIHRoYXQgbmVlZCBjYWxsaW5nIGBgX19uZXdfX2BgIHdpdGgga2V5d29yZCBhcmd1bWVudHMsCisgIGNhbiBub3cgYmUgcGlja2xlZCB1c2luZyBwaWNrbGUgcHJvdG9jb2xzIG9sZGVyIHRoYW4gcHJvdG9jb2wgdmVyc2lvbiA0LgorCistIElzc3VlICMyNTM2NDogemlwZmlsZSBub3cgd29ya3MgaW4gdGhyZWFkcyBkaXNhYmxlZCBidWlsZHMuCisKKy0gSXNzdWUgIzI1MzI4OiBzbXRwZCdzIFNNVFBDaGFubmVsIG5vdyBjb3JyZWN0bHkgcmFpc2VzIGEgVmFsdWVFcnJvciBpZiBib3RoCisgIGRlY29kZV9kYXRhIGFuZCBlbmFibGVfU01UUFVURjggYXJlIHNldCB0byB0cnVlLgorCistIElzc3VlICMxNjA5OTogUm9ib3RGaWxlUGFyc2VyIG5vdyBzdXBwb3J0cyBDcmF3bC1kZWxheSBhbmQgUmVxdWVzdC1yYXRlCisgIGV4dGVuc2lvbnMuICBQYXRjaCBieSBOaWtvbGF5IEJvZ295Y2hldi4KKworLSBJc3N1ZSAjMjUzMTY6IGRpc3R1dGlscyByYWlzZXMgT1NFcnJvciBpbnN0ZWFkIG9mIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IKKyAgd2hlbiBNU1ZDIGlzIG5vdCBpbnN0YWxsZWQuCisKKy0gSXNzdWUgIzI1MzgwOiBGaXhlZCBwcm90b2NvbCBmb3IgdGhlIFNUQUNLX0dMT0JBTCBvcGNvZGUgaW4KKyAgcGlja2xldG9vbHMub3Bjb2Rlcy4KKworLSBJc3N1ZSAjMjM5NzI6IFVwZGF0ZXMgYXN5bmNpbyBkYXRhZ3JhbSBjcmVhdGUgbWV0aG9kIGFsbG93aW5nIHJldXNlcG9ydAorICBhbmQgcmV1c2VhZGRyIHNvY2tldCBvcHRpb25zIHRvIGJlIHNldCBwcmlvciB0byBiaW5kaW5nIHRoZSBzb2NrZXQuCisgIE1pcnJvcmluZyB0aGUgZXhpc3RpbmcgYXN5bmNpbyBjcmVhdGVfc2VydmVyIG1ldGhvZCB0aGUgcmV1c2VhZGRyIG9wdGlvbgorICBmb3IgZGF0YWdyYW0gc29ja2V0cyBkZWZhdWx0cyB0byBUcnVlIGlmIHRoZSBPL1MgaXMgJ3Bvc2l4JyAoZXhjZXB0IGlmIHRoZQorICBwbGF0Zm9ybSBpcyBDeWd3aW4pLiBQYXRjaCBieSBDaHJpcyBMYXdzLgorCistIElzc3VlICMyNTMwNDogQWRkIGFzeW5jaW8ucnVuX2Nvcm91dGluZV90aHJlYWRzYWZlKCkuICBUaGlzIGxldHMgeW91CisgIHN1Ym1pdCBhIGNvcm91dGluZSB0byBhIGxvb3AgZnJvbSBhbm90aGVyIHRocmVhZCwgcmV0dXJuaW5nIGEKKyAgY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZS4gIEJ5IFZpbmNlbnQgTWljaGVsLgorCistIElzc3VlICMyNTIzMjogRml4IENHSVJlcXVlc3RIYW5kbGVyIHRvIHNwbGl0IHRoZSBxdWVyeSBmcm9tIHRoZSBVUkwgYXQgdGhlCisgIGZpcnN0IHF1ZXN0aW9uIG1hcmsgKD8pIHJhdGhlciB0aGFuIHRoZSBsYXN0LiBQYXRjaCBmcm9tIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNDY1NzogUHJldmVudCBDR0lSZXF1ZXN0SGFuZGxlciBmcm9tIGNvbGxhcHNpbmcgc2xhc2hlcyBpbiB0aGUKKyAgcXVlcnkgcGFydCBvZiB0aGUgVVJMIGFzIGlmIGl0IHdlcmUgYSBwYXRoLiBQYXRjaCBmcm9tIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNTI4NzogRG9uJ3QgYWRkIGNyeXB0Lk1FVEhPRF9DUllQVCB0byBjcnlwdC5tZXRob2RzIGlmIGl0J3Mgbm90CisgIHN1cHBvcnRlZC4gQ2hlY2sgaWYgaXQgaXMgc3VwcG9ydGVkLCBpdCBtYXkgbm90IGJlIHN1cHBvcnRlZCBvbiBPcGVuQlNEIGZvcgorICBleGFtcGxlLgorCistIElzc3VlICMyMzYwMDogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0emluZm8uZnJvbXV0YygpIHdhcyByZXR1cm5pbmcKKyAgd3JvbmcgcmVzdWx0cyBpbiBzb21lIGNhc2VzLgorCistIElzc3VlICMyNTIwMzogRmFpbGVkIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCkgbm8gbG9uZ2VyIGxlZnQgdGhlCisgIG1vZHVsZSBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCisKKy0gSXNzdWUgIzI1MDExOiBybGNvbXBsZXRlciBub3cgb21pdHMgcHJpdmF0ZSBhbmQgc3BlY2lhbCBhdHRyaWJ1dGUgbmFtZXMgdW5sZXNzCisgIHRoZSBwcmVmaXggc3RhcnRzIHdpdGggdW5kZXJzY29yZXMuCisKKy0gSXNzdWUgIzI1MjA5OiBybGNvbXBsZXRlciBub3cgY2FuIGFkZCBhIHNwYWNlIG9yIGEgY29sb24gYWZ0ZXIgY29tcGxldGVkCisgIGtleXdvcmQuCisKKy0gSXNzdWUgIzIyMjQxOiB0aW1lem9uZS51dGMgbmFtZSBpcyBub3cgcGxhaW4gJ1VUQycsIG5vdCAnVVRDLTAwOjAwJy4KKworLSBJc3N1ZSAjMjM1MTc6IGZyb210aW1lc3RhbXAoKSBhbmQgdXRjZnJvbXRpbWVzdGFtcCgpIG1ldGhvZHMgb2YKKyAgZGF0ZXRpbWUuZGF0ZXRpbWUgbm93IHJvdW5kIG1pY3Jvc2Vjb25kcyB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0bworICBuZWFyZXN0IGV2ZW4gaW50ZWdlciAoUk9VTkRfSEFMRl9FVkVOKSwgYXMgcm91bmQoZmxvYXQpLCBpbnN0ZWFkIG9mIHJvdW5kaW5nCisgIHRvd2FyZHMgLUluZmluaXR5IChST1VORF9GTE9PUikuCisKKy0gSXNzdWUgIzIzNTUyOiBUaW1laXQgbm93IHdhcm5zIHdoZW4gdGhlcmUgaXMgc3Vic3RhbnRpYWwgKDR4KSB2YXJpYW5jZQorICBiZXR3ZWVuIGJlc3QgYW5kIHdvcnN0IHRpbWVzLiBQYXRjaCBmcm9tIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI0NjMzOiBzaXRlLXBhY2thZ2VzL1JFQURNRSAtPiBSRUFETUUudHh0LgorCistIElzc3VlICMyNDg3OTogaGVscCgpIGFuZCBweWRvYyBjYW4gbm93IGxpc3QgbmFtZWQgdHVwbGUgZmllbGRzIGluIHRoZQorICBvcmRlciB0aGV5IHdlcmUgZGVmaW5lZCByYXRoZXIgdGhhbiBhbHBoYWJldGljYWxseS4gIFRoZSBvcmRlcmluZyBpcworICBkZXRlcm1pbmVkIGJ5IHRoZSBfZmllbGRzIGF0dHJpYnV0ZSBpZiBwcmVzZW50LgorCistIElzc3VlICMyNDg3NDogSW1wcm92ZSBzcGVlZCBvZiBpdGVydG9vbHMuY3ljbGUoKSBhbmQgbWFrZSBpdHMKKyAgcGlja2xlIG1vcmUgY29tcGFjdC4KKworLSBGaXggY3Jhc2ggaW4gaXRlcnRvb2xzLmN5Y2xlLl9fc2V0c3RhdGVfXygpIHdoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IHdhc24ndAorICBhIGxpc3QuCisKKy0gSXNzdWUgIzIwMDU5OiB1cmxsaWIucGFyc2UgcmFpc2VzIFZhbHVlRXJyb3Igb24gYWxsIGludmFsaWQgcG9ydHMuCisgIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy0gSXNzdWUgIzI0MzYwOiBJbXByb3ZlIF9fcmVwcl9fIG9mIGFyZ3BhcnNlLk5hbWVzcGFjZSgpIGZvciBpbnZhbGlkCisgIGlkZW50aWZpZXJzLiAgUGF0Y2ggYnkgTWF0dGhpYXMgQnVzc29ubmllci4KKworLSBJc3N1ZSAjMjM0MjY6IHJ1bl9zZXR1cCB3YXMgYnJva2VuIGluIGRpc3R1dGlscy4KKyAgUGF0Y2ggZnJvbSBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjMTM5Mzg6IDJ0bzMgY29udmVydHMgU3RyaW5nVHlwZXMgdG8gYSB0dXBsZS4gUGF0Y2ggZnJvbSBNYXJrIEhhbW1vbmQuCisKKy0gSXNzdWUgIzIwOTE6IG9wZW4oKSBhY2NlcHRlZCBhICdVJyBtb2RlIHN0cmluZyBjb250YWluaW5nICcrJywgYnV0ICdVJyBjYW4KKyAgb25seSBiZSB1c2VkIHdpdGggJ3InLiBQYXRjaCBmcm9tIEplZmYgQmFsb2doIGFuZCBKb2huIE8nQ29ubm9yLgorCistIElzc3VlICM4NTg1OiBpbXByb3ZlZCB0ZXN0cyBmb3IgemlwaW1wb3J0ZXIyLiBQYXRjaCBmcm9tIE1hcmsgTGF3cmVuY2UuCisKKy0gSXNzdWUgIzE4NjIyOiB1bml0dGVzdC5tb2NrLm1vY2tfb3BlbigpLnJlc2V0X21vY2sgd291bGQgcmVjdXJzZSBpbmZpbml0ZWx5LgorICBQYXRjaCBmcm9tIE5pY29sYSBQYWx1bWJvIGFuZCBMYXVyZW50IERlIEJ1eXN0LgorCistIElzc3VlICMyNDQyNjogRmFzdCBzZWFyY2hpbmcgb3B0aW1pemF0aW9uIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMgbm93IHdvcmtzCisgIGZvciBwYXR0ZXJucyB0aGF0IHN0YXJ0cyB3aXRoIGNhcHR1cmluZyBncm91cHMuICBGYXN0IHNlYXJjaGluZyBvcHRpbWl6YXRpb24KKyAgbm93IGNhbid0IGJlIGRpc2FibGVkIGF0IGNvbXBpbGUgdGltZS4KKworLSBJc3N1ZSAjMjM2NjE6IHVuaXR0ZXN0Lm1vY2sgc2lkZV9lZmZlY3RzIGNhbiBub3cgYmUgZXhjZXB0aW9ucyBhZ2Fpbi4gVGhpcworICB3YXMgYSByZWdyZXNzaW9uIHZzIFB5dGhvbiAzLjQuIFBhdGNoIGZyb20gSWduYWNpbyBSb3NzaQorCistIElzc3VlICMxMzI0ODogUmVtb3ZlIGRlcHJlY2F0ZWQgaW5zcGVjdC5nZXRtb2R1bGVpbmZvIGZ1bmN0aW9uLgorCistIElzc3VlICMyNTU3ODogRml4IChhbm90aGVyKSBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcigpLgorCistIElzc3VlICMyNTUzMDogRGlzYWJsZSB0aGUgdnVsbmVyYWJsZSBTU0x2MyBwcm90b2NvbCBieSBkZWZhdWx0IHdoZW4gY3JlYXRpbmcKKyAgc3NsLlNTTENvbnRleHQuCisKKy0gSXNzdWUgIzI1NTY5OiBGaXggbWVtb3J5IGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkuCisKKy0gSXNzdWUgIzI1NDcxOiBTb2NrZXRzIHJldHVybmVkIGZyb20gYWNjZXB0KCkgc2hvdWxkbid0IGFwcGVhciB0byBiZQorICBub25ibG9ja2luZy4KKworLSBJc3N1ZSAjMjUzMTk6IFdoZW4gdGhyZWFkaW5nLkV2ZW50IGlzIHJlaW5pdGlhbGl6ZWQsIHRoZSB1bmRlcmx5aW5nIGNvbmRpdGlvbgorICBzaG91bGQgdXNlIGEgcmVndWxhciBsb2NrIHJhdGhlciB0aGFuIGEgcmVjdXJzaXZlIGxvY2suCisKIC0gU2tpcCBnZXRhZGRyaW5mbyBpZiBob3N0IGlzIGFscmVhZHkgcmVzb2x2ZWQuCiAgIFBhdGNoIGJ5IEEuIEplc3NlIEppcnl1IERhdmlzLgogCkBAIC0xMTU0LDUzICsyNzI5LDkgQEAKIAogLSBJc3N1ZSAjMjcwNDE6IGFzeW5jaW86IEFkZCBsb29wLmNyZWF0ZV9mdXR1cmUgbWV0aG9kCiAKLS0gSXNzdWUgIzI3MjIzOiBhc3luY2lvOiBGaXggX3JlYWRfcmVhZHkgYW5kIF93cml0ZV9yZWFkeSB0byByZXNwZWN0Ci0gIF9jb25uX2xvc3QuCi0gIFBhdGNoIGJ5IMWBdWthc3ogTGFuZ2EuCi0KLS0gSXNzdWUgIzIyOTcwOiBhc3luY2lvOiBGaXggaW5jb25zaXN0ZW5jeSBjYW5jZWxsaW5nIENvbmRpdGlvbi53YWl0LgotICBQYXRjaCBieSBEYXZpZCBDb2xlcy4KLQogSURMRQogLS0tLQogCi0tIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgotICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKLSAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5Ci0gIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCi0KLS0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgotICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KLSAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgotICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dAotCi0tIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCi0gIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCi0KLS0gSXNzdWUgIzI3MTE3OiBNYWtlIGNvbG9yaXplciBodGVzdCBhbmQgdHVydGxlZGVtbyB3b3JrIHdpdGggZGFyayB0aGVtZXMuCi0gIE1vdmUgY29kZSBmb3IgY29uZmlndXJpbmcgdGV4dCB3aWRnZXQgY29sb3JzIHRvIGEgbmV3IGZ1bmN0aW9uLgotCi0tIElzc3VlICMyNjY3MzogV2hlbiB0ayByZXBvcnRzIGZvbnQgc2l6ZSBhcyAwLCBjaGFuZ2UgdG8gc2l6ZSAxMC4KLSAgU3VjaCBmb250cyBvbiBMaW51eCBwcmV2ZW50ZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGZyb20gb3BlbmluZy4KLQotLSBJc3N1ZSAjMjE5Mzk6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcGVyY29sYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgotCi0tIElzc3VlICMyMTY3NjogQWRkIHRlc3QgZm9yIElETEUncyByZXBsYWNlIGRpYWxvZy4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgotCi0tIElzc3VlICMxODQxMDogQWRkIHRlc3QgZm9yIElETEUncyBzZWFyY2ggZGlhbG9nLgotICBPcmlnaW5hbCBwYXRjaCBieSBXZXN0bGV5IE1hcnTDrW5lei4KLQotLSBJc3N1ZSAjMjE3MDM6IEFkZCB0ZXN0IGZvciBJRExFJ3MgdW5kbyBkZWxlZ2F0b3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthciAuCi0KLS0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgotCi0tIElzc3VlICMyMzk3NzogQWRkIG1vcmUgYXNzZXJ0cyB0byB0ZXN0X2RlbGVnYXRvci4KLQogLSBJc3N1ZSAjMjA2NDA6IEFkZCB0ZXN0cyBmb3IgaWRsZWxpYi5jb25maWdIZWxwU291cmNlRWRpdC4KICAgUGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgogCkBAIC0xMjE0LDE0ICsyNzQ1LDEwMyBAQAogICBNQVJLIGluIFJFQURNRS50eHQgYW5kIG9wZW4gdGhpcyBhbmQgTkVXUy50eHQgd2l0aCAnYXNjaWknLgogICBSZS1lbmNvZGUgQ1JFRElUUy50eHQgdG8gdXRmLTggYW5kIG9wZW4gaXQgd2l0aCAndXRmLTgnLgogCistIElzc3VlICMxNTM0ODogU3RvcCB0aGUgZGVidWdnZXIgZW5naW5lIChub3JtYWxseSBpbiBhIHVzZXIgcHJvY2VzcykKKyAgYmVmb3JlIGNsb3NpbmcgdGhlIGRlYnVnZ2VyIHdpbmRvdyAocnVubmluZyBpbiB0aGUgSURMRSBwcm9jZXNzKS4KKyAgVGhpcyBwcmV2ZW50cyB0aGUgUnVudGltZUVycm9ycyB0aGF0IHdlcmUgYmVpbmcgY2F1Z2h0IGFuZCBpZ25vcmVkLgorCistIElzc3VlICMyNDQ1NTogUHJldmVudCBJRExFIGZyb20gaGFuZ2luZyB3aGVuIGEpIGNsb3NpbmcgdGhlIHNoZWxsIHdoaWxlIHRoZQorICBkZWJ1Z2dlciBpcyBhY3RpdmUgKDE1MzQ3KTsgYikgY2xvc2luZyB0aGUgZGVidWdnZXIgd2l0aCB0aGUgW1hdIGJ1dHRvbgorICAoMTUzNDgpOyBhbmQgYykgYWN0aXZhdGluZyB0aGUgZGVidWdnZXIgd2hlbiBhbHJlYWR5IGFjdGl2ZSAoMjQ0NTUpLgorICBUaGUgcGF0Y2ggYnkgTWFyayBSb3NlbWFuIGRvZXMgdGhpcyBieSBtYWtpbmcgdHdvIGNoYW5nZXMuCisgIDEuIFN1c3BlbmQgYW5kIHJlc3VtZSB0aGUgZ3VpLmludGVyYWN0aW9uIG1ldGhvZCB3aXRoIHRoZSB0Y2wgdndhaXQKKyAgbWVjaGFuaXNtIGludGVuZGVkIGZvciB0aGlzIHB1cnBvc2UgKGluc3RlYWQgb2Ygcm9vdC5tYWlubG9vcCAmIC5xdWl0KS4KKyAgMi4gSW4gZ3VpLnJ1biwgYWxsb3cgYW55IGV4aXN0aW5nIGludGVyYWN0aW9uIHRvIHRlcm1pbmF0ZSBmaXJzdC4KKworLSBDaGFuZ2UgJ1RoZSBwcm9ncmFtJyB0byAnWW91ciBwcm9ncmFtJyBpbiBhbiBJRExFICdraWxsIHByb2dyYW0/JyBtZXNzYWdlCisgIHRvIG1ha2UgaXQgY2xlYXJlciB0aGF0IHRoZSBwcm9ncmFtIHJlZmVycmVkIHRvIGlzIHRoZSBjdXJyZW50bHkgcnVubmluZworICB1c2VyIHByb2dyYW0sIG5vdCBJRExFIGl0c2VsZi4KKworLSBJc3N1ZSAjMjQ3NTA6IEltcHJvdmUgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlIElETEUgZWRpdG9yIHdpbmRvdyBzdGF0dXMgYmFyLgorICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MzEzOiBDaGFuZ2UgdGhlIGhhbmRsaW5nIG9mIG5ldyBidWlsdC1pbiB0ZXh0IGNvbG9yIHRoZW1lcyB0byBiZXR0ZXIKKyAgYWRkcmVzcyB0aGUgY29tcGF0aWJpbGl0eSBwcm9ibGVtIGludHJvZHVjZWQgYnkgdGhlIGFkZGl0aW9uIG9mIElETEUgRGFyay4KKyAgQ29uc2lzdGVudGx5IHVzZSB0aGUgcmV2aXNlZCBpZGxlQ29uZi5DdXJyZW50VGhlbWUgZXZlcnl3aGVyZSBpbiBpZGxlbGliLgorCistIElzc3VlICMyNDc4MjogRXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gaXMgbm93IGEgdGFiIGluIHRoZSBJRExFIFByZWZlcmVuY2VzCisgIGRpYWxvZyByYXRoZXIgdGhhbiBhIHNlcGFyYXRlIGRpYWxvZy4gIFRoZSBmb3JtZXIgdGFicyBhcmUgbm93IGEgc29ydGVkCisgIGxpc3QuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzIyNzI2OiBSZS1hY3RpdmF0ZSB0aGUgY29uZmlnIGRpYWxvZyBoZWxwIGJ1dHRvbiB3aXRoIHNvbWUgY29udGVudAorICBhYm91dCB0aGUgb3RoZXIgYnV0dG9ucyBhbmQgdGhlIG5ldyBJRExFIERhcmsgdGhlbWUuCisKKy0gSXNzdWUgIzI0ODIwOiBJRExFIG5vdyBoYXMgYW4gJ0lETEUgRGFyaycgYnVpbHQtaW4gdGV4dCBjb2xvciB0aGVtZS4KKyAgSXQgaXMgbW9yZSBvciBsZXNzIElETEUgQ2xhc3NpYyBpbnZlcnRlZCwgd2l0aCBhIGNvYmFsdCBibHVlIGJhY2tncm91bmQuCisgIFN0cmluZ3MsIGNvbW1lbnRzLCBrZXl3b3JkcywgLi4uIGFyZSBzdGlsbCBncmVlbiwgcmVkLCBvcmFuZ2UsIC4uLiAuCisgIFRvIHVzZSBpdCB3aXRoIElETEVzIHJlbGVhc2VkIGJlZm9yZSBOb3ZlbWJlciAyMDE1LCBoaXQgdGhlCisgICdTYXZlIGFzIE5ldyBDdXN0b20gVGhlbWUnIGJ1dHRvbiBhbmQgZW50ZXIgYSBuZXcgbmFtZSwKKyAgc3VjaCBhcyAnQ3VzdG9tIERhcmsnLiAgVGhlIGN1c3RvbSB0aGVtZSB3aWxsIHdvcmsgd2l0aCBhbnkgSURMRQorICByZWxlYXNlLCBhbmQgY2FuIGJlIG1vZGlmaWVkLgorCistIElzc3VlICMyNTIyNDogUkVBRE1FLnR4dCBpcyBub3cgYW4gaWRsZWxpYiBpbmRleCBmb3IgSURMRSBkZXZlbG9wZXJzIGFuZAorICBjdXJpb3VzIHVzZXJzLiAgVGhlIHByZXZpb3VzIHVzZXIgY29udGVudCBpcyBub3cgaW4gdGhlIElETEUgZG9jIGNoYXB0ZXIuCisgICdJRExFJyBub3cgbWVhbnMgJ0ludGVncmF0ZWQgRGV2ZWxvcG1lbnQgYW5kIExlYXJuaW5nIEVudmlyb25tZW50Jy4KKworLSBJc3N1ZSAjMjQ4MjA6IFVzZXJzIGNhbiBub3cgc2V0IGJyZWFrcG9pbnQgY29sb3JzIGluCisgIFNldHRpbmdzIC0+IEN1c3RvbSBIaWdobGlnaHRpbmcuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0OTcyOiBJbmFjdGl2ZSBzZWxlY3Rpb24gYmFja2dyb3VuZCBub3cgbWF0Y2hlcyBhY3RpdmUgc2VsZWN0aW9uCisgIGJhY2tncm91bmQsIGFzIGNvbmZpZ3VyZWQgYnkgdXNlcnMsIG9uIGFsbCBzeXN0ZW1zLiAgRm91bmQgaXRlbXMgYXJlIG5vdworICBhbHdheXMgaGlnaGxpZ2h0ZWQgb24gV2luZG93cy4gIEluaXRpYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDU3MDogSWRsZTogbWFrZSBjYWxsdGlwIGFuZCBjb21wbGV0aW9uIGJveGVzIGFwcGVhciBvbiBNYWNzCisgIGFmZmVjdGVkIGJ5IGEgdGsgcmVncmVzc2lvbi4gIEluaXRpYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNDk4ODogSWRsZSBTY3JvbGxlZExpc3QgY29udGV4dCBtZW51cyAodXNlZCBpbiBkZWJ1Z2dlcikKKyAgbm93IHdvcmsgb24gTWFjIEFxdWEuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0ODAxOiBNYWtlIHJpZ2h0LWNsaWNrIGZvciBjb250ZXh0IG1lbnUgd29yayBvbiBNYWMgQXF1YS4KKyAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNTE3MzogQXNzb2NpYXRlIHRraW50ZXIgbWVzc2FnZWJveGVzIHdpdGggYSBzcGVjaWZpYyB3aWRnZXQuCisgIEZvciBNYWMgT1NYLCBtYWtlIHRoZW0gYSAnc2hlZXQnLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNTE5ODogRW5oYW5jZSB0aGUgaW5pdGlhbCBodG1sIHZpZXdlciBub3cgdXNlZCBmb3IgSWRsZSBIZWxwLgorICAqIFByb3Blcmx5IGluZGVudCBmaXhlZC1waXRjaCB0ZXh0IChwYXRjaCBieSBNYXJrIFJvc2VtYW4pLgorICAqIEdpdmUgY29kZSBzbmlwcGV0IGEgdmVyeSBTcGhpbngtbGlrZSBsaWdodCBibHVlaXNoLWdyYXkgYmFja2dyb3VuZC4KKyAgKiBSZS11c2UgaW5pdGlhbCB3aWR0aCBhbmQgaGVpZ2h0IHNldCBieSB1c2VycyBmb3Igc2hlbGwgYW5kIGVkaXRvci4KKyAgKiBXaGVuIHRoZSBUYWJsZSBvZiBDb250ZW50cyAoVE9DKSBtZW51IGlzIHVzZWQsIHB1dCB0aGUgc2VjdGlvbiBoZWFkZXIKKyAgYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuLgorCistIElzc3VlICMyNTIyNTogQ29uZGVuc2UgYW5kIHJld3JpdGUgSWRsZSBkb2Mgc2VjdGlvbiBvbiB0ZXh0IGNvbG9ycy4KKworLSBJc3N1ZSAjMjE5OTU6IEV4cGxhaW4gc29tZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIElETEUgYW5kIGNvbnNvbGUgUHl0aG9uLgorCistIElzc3VlICMyMjgyMDogRXhwbGFpbiBuZWVkIGZvciAqcHJpbnQqIHdoZW4gcnVubmluZyBmaWxlIGZyb20gSWRsZSBlZGl0b3IuCisKKy0gSXNzdWUgIzI1MjI0OiBEb2M6IGF1Z21lbnQgSWRsZSBmZWF0dXJlIGxpc3QgYW5kIG5vLXN1YnByb2Nlc3Mgc2VjdGlvbi4KKworLSBJc3N1ZSAjMjUyMTk6IFVwZGF0ZSBkb2MgZm9yIElkbGUgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisgIFNvbWUgd2VyZSBtaXNzaW5nIGFuZCBub3RlcyB3ZXJlIG5vdCBjb3JyZWN0LgorCistIElzc3VlICMyNDg2MTogTW9zdCBvZiBpZGxlbGliIGlzIHByaXZhdGUgYW5kIHN1YmplY3QgdG8gY2hhbmdlLgorICBVc2UgaWRsZWliLmlkbGUuKiB0byBzdGFydCBJZGxlLiBTZWUgaWRsZWxpYi5fX2luaXRfXy5fX2RvY19fLgorCistIElzc3VlICMyNTE5OTogSWRsZTogYWRkIHN5bmNocm9uaXphdGlvbiBjb21tZW50cyBmb3IgZnV0dXJlIG1haW50YWluZXJzLgorCistIElzc3VlICMxNjg5MzogUmVwbGFjZSBoZWxwLnR4dCB3aXRoIGhlbHAuaHRtbCBmb3IgSWRsZSBkb2MgZGlzcGxheS4KKyAgVGhlIG5ldyBpZGxlbGliL2hlbHAuaHRtbCBpcyByc3RyaXBwZWQgRG9jL2J1aWxkL2h0bWwvbGlicmFyeS9pZGxlLmh0bWwuCisgIEl0IGxvb2tzIGJldHRlciB0aGFuIGhlbHAudHh0IGFuZCB3aWxsIGJldHRlciBkb2N1bWVudCBJZGxlIGFzIHJlbGVhc2VkLgorICBUaGUgdGtpbnRlciBodG1sIHZpZXdlciB0aGF0IHdvcmtzIGZvciB0aGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgUm9zZSBSb3NlbWFuLgorICBUaGUgbm93IHVudXNlZCBFZGl0b3JXaW5kb3cuSGVscERpYWxvZyBjbGFzcyBhbmQgaGVsdC50eHQgZmlsZSBhcmUgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjQxOTk6IERlcHJlY2F0ZSB1bnVzZWQgaWRsZWxpYi5pZGxldmVyIHdpdGggcG9zc2libGUgcmVtb3ZhbCBpbiAzLjYuCisKKy0gSXNzdWUgIzI0NzkwOiBSZW1vdmUgZXh0cmFuZW91cyBjb2RlICh3aGljaCBhbHNvIGNyZWF0ZSAyICYgMyBjb25mbGljdHMpLgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE5NDg5OiBNb3ZlZCB0aGUgc2VhcmNoIGJveCBmcm9tIHRoZSBzaWRlYmFyIHRvIHRoZSBoZWFkZXIgYW5kIGZvb3RlcgotICBvZiBlYWNoIHBhZ2UuICBQYXRjaCBieSBBbW1hciBBc2thci4KLQotLSBJc3N1ZSAjMjQxMzY6IERvY3VtZW50IHRoZSBuZXcgUEVQIDQ0OCB1bnBhY2tpbmcgc3ludGF4IG9mIDMuNS4KLQogLSBJc3N1ZSAjMjY3MzY6IFVzZWQgSFRUUFMgZm9yIGV4dGVybmFsIGxpbmtzIGluIHRoZSBkb2N1bWVudGF0aW9uIGlmIHBvc3NpYmxlLgogCiAtIElzc3VlICM2OTUzOiBSZXdvcmsgdGhlIFJlYWRsaW5lIG1vZHVsZSBkb2N1bWVudGF0aW9uIHRvIGdyb3VwIHJlbGF0ZWQKQEAgLTEyMzAsOCArMjg1MCw4IEBACiAKIC0gSXNzdWUgIzIzNjA2OiBBZGRzIG5vdGUgdG8gY3R5cGVzIGRvY3VtZW50YXRpb24gcmVnYXJkaW5nIGNkbGwubXN2Y3J0LgogCi0tIElzc3VlICMyNTUwMDogRml4IGRvY3VtZW50YXRpb24gdG8gbm90IGNsYWltIHRoYXQgX19pbXBvcnRfXyBpcyBzZWFyY2hlZCBmb3IKLSAgaW4gdGhlIGdsb2JhbCBzY29wZS4KKy0gSXNzdWUgIzI0OTUyOiBDbGFyaWZ5IHRoZSBkZWZhdWx0IHNpemUgYXJndW1lbnQgb2Ygc3RhY2tfc2l6ZSgpIGluCisgIHRoZSAidGhyZWFkaW5nIiBhbmQgIl90aHJlYWQiIG1vZHVsZXMuIFBhdGNoIGZyb20gTWF0dGlwLgogCiAtIElzc3VlICMyNjAxNDogVXBkYXRlIDMueCBwYWNrYWdpbmcgZG9jdW1lbnRhdGlvbjoKICAgKiAiU2VlIGFsc28iIGxpbmtzIHRvIHRoZSBuZXcgZG9jcyBhcmUgbm93IHByb3ZpZGVkIGluIHRoZSBsZWdhY3kgcGFnZXMKQEAgLTEyNDMsNiArMjg2Myw5IEBACiAtIElzc3VlICMyMTkxNjogQWRkZWQgdGVzdHMgZm9yIHRoZSB0dXJ0bGUgbW9kdWxlLiAgUGF0Y2ggYnkgaW5ncmlkLAogICBHcmVnb3J5IExveXNlIGFuZCBKZWxsZSBaaWpsc3RyYS4KIAorLSBJc3N1ZSAjMjYyOTU6IFdoZW4gdXNpbmcgInB5dGhvbjMgLW0gdGVzdCAtLXRlc3RkaXI9VEVTVERJUiIsIHJlZ3J0ZXN0CisgIGRvZXNuJ3QgYWRkICJ0ZXN0LiIgcHJlZml4IHRvIHRlc3QgbW9kdWxlIG5hbWVzLgorCiAtIElzc3VlICMyNjUyMzogVGhlIG11bHRpcHJvY2Vzc2luZyB0aHJlYWQgcG9vbCAobXVsdGlwcm9jZXNzaW5nLmR1bW15LlBvb2wpCiAgIHdhcyB1bnRlc3RlZC4KIApAQCAtMTI1MSwzMSArMjg3NCw1MCBAQAogLSBJc3N1ZSAjMjYzMjU6IEFkZGVkIHRlc3Quc3VwcG9ydC5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCkgdG8gY2hlY2sgdGhhdAogICBubyBSZXNvdXJjZVdhcm5pbmcgaXMgZW1pdHRlZC4KIAotLSBJc3N1ZSAjMjU5NDA6IENoYW5nZWQgdGVzdF9zc2wgdG8gdXNlIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0LiAgVGhpcworLSBJc3N1ZSAjMjU5NDA6IENoYW5nZWQgdGVzdF9zc2wgdG8gdXNlIGl0cyBpbnRlcm5hbCBsb2NhbCBzZXJ2ZXIgbW9yZS4gIFRoaXMKICAgYXZvaWRzIHJlbHlpbmcgb24gc3ZuLnB5dGhvbi5vcmcsIHdoaWNoIHJlY2VudGx5IGNoYW5nZWQgcm9vdCBjZXJ0aWZpY2F0ZS4KIAogLSBJc3N1ZSAjMjU2MTY6IFRlc3RzIGZvciBPcmRlcmVkRGljdCBhcmUgZXh0cmFjdGVkIGZyb20gdGVzdF9jb2xsZWN0aW9ucwogICBpbnRvIHNlcGFyYXRlIGZpbGUgdGVzdF9vcmRlcmVkX2RpY3QuCiAKKy0gSXNzdWUgIzI1NDQ5OiBBZGRlZCB0ZXN0cyBmb3IgT3JkZXJlZERpY3Qgc3ViY2xhc3Nlcy4KKworLSBJc3N1ZSAjMjUxODg6IEFkZCAtUC8tLXBnbyB0byB0ZXN0LnJlZ3J0ZXN0IHRvIHN1cHByZXNzIGVycm9yIG91dHB1dCB3aGVuCisgIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUgZm9yIHRoZSBwdXJwb3NlcyBvZiBhIFBHTyBidWlsZC4gSW5pdGlhbCBwYXRjaCBieQorICBBbGVjc2FuZHJ1IFBhdHJhc2N1LgorCistIElzc3VlICMyMjgwNjogQWRkIGBgcHl0aG9uIC1tIHRlc3QgLS1saXN0LXRlc3RzYGAgY29tbWFuZCB0byBsaXN0IHRlc3RzLgorCistIElzc3VlICMxODE3NDogYGBweXRob24gLW0gdGVzdCAtLWh1bnRybGVha3MgLi4uYGAgbm93IGFsc28gY2hlY2tzIGZvciBsZWFrIG9mCisgIGZpbGUgZGVzY3JpcHRvcnMuIFBhdGNoIHdyaXR0ZW4gYnkgUmljaGFyZCBPdWRrZXJrLgorCistIElzc3VlICMyNTI2MDogRml4IGBgcHl0aG9uIC1tIHRlc3QgLS1jb3ZlcmFnZWBgIG9uIFdpbmRvd3MuIFJlbW92ZSB0aGUKKyAgbGlzdCBvZiBpZ25vcmVkIGRpcmVjdG9yaWVzLgorCistIGBgUENidWlsZFxydC5iYXRgYCBub3cgYWNjZXB0cyBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBwYXNzIGFsb25nCisgIHRvIHJlZ3J0ZXN0LnB5LiAgUHJldmlvdXNseSB0aGVyZSB3YXMgYSBsaW1pdCBvZiA5LgorCiAtIElzc3VlICMyNjU4MzogU2tpcCB0ZXN0X3RpbWVzdGFtcF9vdmVyZmxvdyBpbiB0ZXN0X2ltcG9ydCBpZiBieXRlY29kZQogICBmaWxlcyBjYW5ub3QgYmUgd3JpdHRlbi4KIAogQnVpbGQKIC0tLS0tCiAKKy0gSXNzdWUgIzIxMjc3OiBEb24ndCB0cnkgdG8gbGluayBfY3R5cGVzIHdpdGggYSBmZmlfY29udmVuaWVuY2UgbGlicmFyeS4KKwogLSBJc3N1ZSAjMjY4ODQ6IEZpeCBsaW5raW5nIGV4dGVuc2lvbiBtb2R1bGVzIGZvciBjcm9zcyBidWlsZHMuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCistIElzc3VlICMyNjkzMjogRml4ZWQgc3VwcG9ydCBvZiBSVExEXyogY29uc3RhbnRzIGRlZmluZWQgYXMgZW51bSB2YWx1ZXMsCisgIG5vdCB2aWEgbWFjcm9zIChpbiBwYXJ0aWN1bGFyIG9uIEFuZHJvaWQpLiAgUGF0Y2ggYnkgQ2hpIEhzdWFuIFllbi4KKwogLSBJc3N1ZSAjMjIzNTk6IERpc2FibGUgdGhlIHJ1bGVzIGZvciBydW5uaW5nIF9mcmVlemVfaW1wb3J0bGliIGFuZCBwZ2VuIHdoZW4KICAgY3Jvc3MtY29tcGlsaW5nLiAgVGhlIG91dHB1dCBvZiB0aGVzZSBwcm9ncmFtcyBpcyBub3JtYWxseSBzYXZlZCB3aXRoIHRoZQogICBzb3VyY2UgY29kZSBhbnl3YXksIGFuZCBpcyBzdGlsbCByZWdlbmVyYXRlZCB3aGVuIGRvaW5nIGEgbmF0aXZlIGJ1aWxkLgogICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KIAotLSBJc3N1ZSAjMjcyMjk6IEZpeCB0aGUgY3Jvc3MtY29tcGlsaW5nIHBnZW4gcnVsZSBmb3IgaW4tdHJlZSBidWlsZHMuICBQYXRjaAotICBieSBYYXZpZXIgZGUgR2F5ZS4KLQogLSBJc3N1ZSAjMjE2Njg6IExpbmsgYXVkaW9vcCwgX2RhdGV0aW1lLCBfY3R5cGVzX3Rlc3QgbW9kdWxlcyB0byBsaWJtLAotICBleGNlcHQgb24gTWFjIE9TIFguIFBhdGNoIHdyaXR0ZW4gYnkgWGF2aWVyIGRlIEdheWUuCisgIGV4Y2VwdCBvbiBNYWMgT1MgWC4gUGF0Y2ggd3JpdHRlbiBieSBDaGkgSHN1YW4gWWVuLgogCiAtIElzc3VlICMyNTcwMjogQSAtLXdpdGgtbHRvIGNvbmZpZ3VyZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdGhhdCB3aWxsCiAgIGVuYWJsZSBsaW5rIHRpbWUgb3B0aW1pemF0aW9ucyBhdCBidWlsZCB0aW1lIGR1cmluZyBhIG1ha2UgcHJvZmlsZS1vcHQuCkBAIC0xMjk0LDIyICsyOTM2LDI0IEBACiAKIC0gSXNzdWUgIzI2NDY1OiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJnLgogCi0tIElzc3VlICMyNDQyMTogQ29tcGlsZSBNb2R1bGVzL19tYXRoLmMgb25jZSwgYmVmb3JlIGJ1aWxkaW5nIGV4dGVuc2lvbnMuCi0gIFByZXZpb3VzbHkgaXQgY291bGQgZmFpbCB0byBjb21waWxlIHByb3Blcmx5IGlmIHRoZSBtYXRoIGFuZCBjbWF0aCBidWlsZHMKLSAgd2VyZSBjb25jdXJyZW50LgotCiAtIElzc3VlICMyNTM0ODogQWRkZWQgYGAtLXBnb2BgIGFuZCBgYC0tcGdvLWpvYmBgIGFyZ3VtZW50cyB0bwogICBgYFBDYnVpbGRcYnVpbGQuYmF0YGAgZm9yIGJ1aWxkaW5nIHdpdGggUHJvZmlsZS1HdWlkZWQgT3B0aW1pemF0aW9uLiAgVGhlCi0gIG9sZCBgYFBDYnVpbGRcYnVpbGRfcGdvLmJhdGBgIHNjcmlwdCBpcyBub3cgZGVwcmVjYXRlZCwgYW5kIHNpbXBseSBjYWxscwotICBgYFBDYnVpbGRcYnVpbGQuYmF0IC0tcGdvICUqYGAuCisgIG9sZCBgYFBDYnVpbGRcYnVpbGRfcGdvLmJhdGBgIHNjcmlwdCBpcyByZW1vdmVkLgogCiAtIElzc3VlICMyNTgyNzogQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpdGggSUNDIHRvIGBgY29uZmlndXJlYGAsIGluY2x1ZGluZwogICBhIG5ldyBgYC0td2l0aC1pY2NgYCBmbGFnLgogCiAtIElzc3VlICMyNTY5NjogRml4IGluc3RhbGxhdGlvbiBvZiBQeXRob24gb24gVU5JWCB3aXRoIG1ha2UgLWo5LgogCi0tIElzc3VlICMyNjkzMDogVXBkYXRlIE9TIFggMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyIHRvIGJ1aWxkCi0gIGFuZCBsaW5rIHdpdGggT3BlblNTTCAxLjAuMmguCistIElzc3VlICMyNDk4NjogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGJ1aWxkIFB5dGhvbiBvbiBXaW5kb3dzIHdpdGhvdXQgZXJyb3JzCisgIHdoZW4gZXh0ZXJuYWwgbGlicmFyaWVzIGFyZSBub3QgYXZhaWxhYmxlLgorCistIElzc3VlICMyNDQyMTogQ29tcGlsZSBNb2R1bGVzL19tYXRoLmMgb25jZSwgYmVmb3JlIGJ1aWxkaW5nIGV4dGVuc2lvbnMuCisgIFByZXZpb3VzbHkgaXQgY291bGQgZmFpbCB0byBjb21waWxlIHByb3Blcmx5IGlmIHRoZSBtYXRoIGFuZCBjbWF0aCBidWlsZHMKKyAgd2VyZSBjb25jdXJyZW50LgorCistIElzc3VlICMyNjQ2NTogVXBkYXRlIE9TIFggMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyIHRvIGJ1aWxkCisgIGFuZCBsaW5rIHdpdGggT3BlblNTTCAxLjAuMmcuCiAKIC0gSXNzdWUgIzI2MjY4OiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJmLgogCkBAIC0xMzM2LDYgKzI5ODAsOCBAQAogLSBJc3N1ZSAjMjYwNjU6IEV4Y2x1ZGVzIHZlbnYgZnJvbSBsaWJyYXJ5IHdoZW4gZ2VuZXJhdGluZyBlbWJlZGRhYmxlCiAgIGRpc3Ryby4KIAorLSBJc3N1ZSAjMjUwMjI6IFJlbW92ZWQgdmVyeSBvdXRkYXRlZCBQQy9leGFtcGxlX250LyBkaXJlY3RvcnkuCisKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCkBAIC0xMzUyLDExICsyOTk4LDIxIEBACiAKIC0gSXNzdWUgIzI2MzE2OiBGaXggdmFyaWFibGUgbmFtZSB0eXBvIGluIEFyZ3VtZW50IENsaW5pYy4KIAotTWlzYwotLS0tLQorLSBJc3N1ZSAjMjU0NDA6IEZpeCBvdXRwdXQgb2YgcHl0aG9uLWNvbmZpZyAtLWV4dGVuc2lvbi1zdWZmaXguCiAKLS0gSXNzdWUgIzE3NTAwLCBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9weXRob25kb3RvcmcvaXNzdWVzLzk0NTogUmVtb3ZlCi0gIHVudXNlZCBhbmQgb3V0ZGF0ZWQgaWNvbnMuCistIElzc3VlICMyNTE1NDogVGhlIHB5dmVudiBzY3JpcHQgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YKKyAgYHB5dGhvbjMgLW0gdmVudmAuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNjMxMjogU3lzdGVtRXJyb3IgaXMgbm93IHJhaXNlZCBpbiBhbGwgcHJvZ3JhbW1pbmcgYnVncyB3aXRoIHVzaW5nCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcygpLiAgUnVudGltZUVycm9yIGRpZCByYWlzZWQgYmVmb3JlIGluIHNvbWUKKyAgcHJvZ3JhbW1pbmcgYnVncy4KKworLSBJc3N1ZSAjMjYxOTg6IFZhbHVlRXJyb3IgaXMgbm93IHJhaXNlZCBpbnN0ZWFkIG9mIFR5cGVFcnJvciBvbiBidWZmZXIKKyAgb3ZlcmZsb3cgaW4gcGFyc2luZyAiZXMjIiBhbmQgImV0IyIgZm9ybWF0IHVuaXRzLiAgU3lzdGVtRXJyb3IgaXMgbm93IHJhaXNlZAorICBpbnN0ZWFkIG9mIFR5cGVFcnJvciBvbiBwcm9ncmFtbWljYWwgZXJyb3IgaW4gcGFyc2luZyBmb3JtYXQgc3RyaW5nLgogCiAKIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4xIGZpbmFsPwpAQCAtMTc3OCw5ICszNDM0LDYgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMjI1NTg6IEFkZCByZW1haW5pbmcgZG9jIGxpbmtzIHRvIHNvdXJjZSBjb2RlIGZvciBQeXRob24tY29kZWQgbW9kdWxlcy4KLSAgUGF0Y2ggYnkgWW9uaSBMYXZpLgotCiAtIElzc3VlICMxMjA2NzogUmV3cml0ZSBDb21wYXJpc29ucyBzZWN0aW9uIGluIHRoZSBFeHByZXNzaW9ucyBjaGFwdGVyIG9mIHRoZQogICBsYW5ndWFnZSByZWZlcmVuY2UuIFNvbWUgb2YgdGhlIGRldGFpbHMgb2YgY29tcGFyaW5nIG1peGVkIHR5cGVzIHdlcmUKICAgaW5jb3JyZWN0IG9yIGFtYmlndW91cy4gTm90SW1wbGVtZW50ZWQgaXMgb25seSByZWxldmFudCBhdCBhIGxvd2VyIGxldmVsCkBAIC0yMTEwLDEyICszNzYzLDYgQEAKIAogLSBJc3N1ZSAjMjQ2MzE6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gdGhlIHRpbWVpdCBtb2R1bGUgd2l0aCBtdWx0aWxpbmUgc2V0dXAuCiAKLS0gSXNzdWUgIzE4NjIyOiB1bml0dGVzdC5tb2NrLm1vY2tfb3BlbigpLnJlc2V0X21vY2sgd291bGQgcmVjdXJzZSBpbmZpbml0ZWx5LgotICBQYXRjaCBmcm9tIE5pY29sYSBQYWx1bWJvIGFuZCBMYXVyZW50IERlIEJ1eXN0LgotCi0tIElzc3VlICMyMzY2MTogdW5pdHRlc3QubW9jayBzaWRlX2VmZmVjdHMgY2FuIG5vdyBiZSBleGNlcHRpb25zIGFnYWluLiBUaGlzCi0gIHdhcyBhIHJlZ3Jlc3Npb24gdnMgUHl0aG9uIDMuNC4gUGF0Y2ggZnJvbSBJZ25hY2lvIFJvc3NpCi0KIC0gSXNzdWUgIzI0NjA4OiBjaHVuay5DaHVuay5yZWFkKCkgbm93IGFsd2F5cyByZXR1cm5zIGJ5dGVzLCBub3Qgc3RyLgogCiAtIElzc3VlICMxODY4NDogRml4ZWQgcmVhZGluZyBvdXQgb2YgdGhlIGJ1ZmZlciBpbiB0aGUgcmUgbW9kdWxlLgpAQCAtMjEyNiw2ICszNzczLDkgQEAKIC0gSXNzdWUgIzE1MDE0OiBTTVRQLmF1dGgoKSBhbmQgU01UUC5sb2dpbigpIG5vdyBzdXBwb3J0IFJGQyA0OTU0J3Mgb3B0aW9uYWwKICAgaW5pdGlhbC1yZXNwb25zZSBhcmd1bWVudCB0byB0aGUgU01UUCBBVVRIIGNvbW1hbmQuCiAKKy0gSXNzdWUgIzY1NDk6IFJlbW92ZSBoeXBoZW4gZnJvbSB0dGsuU3R5bGUoKS5lbGVtZW50IG9wdGlvbnMuICBPbmx5IHJldHVybiByZXN1bHQKKyAgZnJvbSB0dGsuU3R5bGUoKS5jb25maWd1cmUgaWYgYSByZXN1bHQgd2FzIGdlbmVyYXRlZCBvciBhIHF1ZXJ5IHN1Ym1pdHRlZC4KKwogLSBJc3N1ZSAjMjQ2Njk6IEZpeCBpbnNwZWN0LmdldHNvdXJjZSgpIGZvciAnYXN5bmMgZGVmJyBmdW5jdGlvbnMuCiAgIFBhdGNoIGJ5IEthaSBHcm9uZXIuCiAKQEAgLTIxMzcsNyArMzc4Nyw2IEBACiAtIElzc3VlICMyNDYwMzogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIGFuZCBPUyBYIDEwLjUgaW5zdGFsbGVyIHRvIHVzZSBPcGVuU1NMCiAgIDEuMC4yZC4KIAotCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjUuMCBiZXRhIDM/CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKQEAgLTIyOTgsNiArMzk0Nyw5IEBACiAtIElzc3VlICMyNDI2ODogUEVQIDQ4OTogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KICAgUGF0Y2ggYnkgUGV0ciBWaWt0b3Jpbi4KIAorLSBJc3N1ZSAjMjMzNTk6IE9wdGltaXplIHNldCBvYmplY3QgaW50ZXJuYWxzIGJ5IHNwZWNpYWxpemluZyB0aGUKKyAgaGFzaCB0YWJsZSBzZWFyY2ggaW50byBhIGxvb2t1cCBmdW5jdGlvbiBhbmQgYW4gaW5zZXJ0IGZ1bmN0aW9uLgorCiAtIElzc3VlICMyMzk1NTogQWRkIHB5dmVudi5jZmcgb3B0aW9uIHRvIHN1cHByZXNzIHJlZ2lzdHJ5L2Vudmlyb25tZW50CiAgIGxvb2t1cCBmb3IgZ2VuZXJhdGluZyBzeXMucGF0aCBvbiBXaW5kb3dzLgogCkBAIC0yNDE4LDggKzQwNzAsOCBAQAogLSBJc3N1ZSAjMTMyMjogcGxhdGZvcm0uZGlzdCgpIGFuZCBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKSBmdW5jdGlvbnMgYXJlCiAgIG5vdyBkZXByZWNhdGVkLiAgSW5pdGlhbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCiAKLS0gSXNzdWUgIzIyNDg2OiBBZGRlZCB0aGUgbWF0aC5nY2QoKSBmdW5jdGlvbi4gIFRoZSBmcmFjdGlvbnMuZ2NkKCkgZnVuY3Rpb24KLSAgbm93IGlzIGRlcHJlY2F0ZWQuICBCYXNlZCBvbiBwYXRjaCBieSBNYXJrIERpY2tpbnNvbi4KKy0gSXNzdWUgIzIyNDg2OiBBZGRlZCB0aGUgbWF0aC5nY2QoKSBmdW5jdGlvbi4gIFRoZSBmcmFjdGlvbnMuZ2NkKCkgZnVuY3Rpb24gbm93IGlzCisgIGRlcHJlY2F0ZWQuICBCYXNlZCBvbiBwYXRjaCBieSBNYXJrIERpY2tpbnNvbi4KIAogLSBJc3N1ZSAjMjQwNjQ6IFByb3BlcnR5KCkgZG9jc3RyaW5ncyBhcmUgbm93IHdyaXRlYWJsZS4KICAgKFBhdGNoIGJ5IEJlcmtlciBQZWtzYWcuKQpAQCAtMjg0MCw4ICs0NDkyLDggQEAKICAgd3JpdGVyIGZhaWxlZCBpbiBCdWZmZXJlZFJXUGFpci5jbG9zZSgpLgogCiAtIElzc3VlICMyMzYyMjogVW5rbm93biBlc2NhcGVzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBjb25zaXN0IG9mIGBgJ1wnYGAKLSAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbgotICBQeXRob24gMy42LgorICBhbmQgYW4gQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuCisgIGluIFB5dGhvbiAzLjYuCiAKIC0gSXNzdWUgIzIzNjcxOiBzdHJpbmcuVGVtcGxhdGUgbm93IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSAic2VsZiIgcGFyYW1ldGVyIGFzCiAgIGEga2V5d29yZCBhcmd1bWVudC4gIHN0cmluZy5Gb3JtYXR0ZXIgbm93IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSAic2VsZiIgYW5kCkBAIC02MDA2LDYgKzc2NTgsOSBAQAogCiAtIElzc3VlICMxOTM2OTogT3B0aW1pemVkIHRoZSB1c2FnZSBvZiBfX2xlbmd0aF9oaW50X18oKS4KIAorLSBJc3N1ZSAjMjgwMjY6IFJhaXNlIEltcG9ydEVycm9yIHdoZW4gZXhlY19tb2R1bGUoKSBleGlzdHMgYnV0CisgIGNyZWF0ZV9tb2R1bGUoKSBpcyBtaXNzaW5nLgorCiAtIElzc3VlICMxODYwMzogRW5zdXJlIHRoYXQgUHlPU19teXN0cmljbXAgYW5kIFB5T1NfbXlzdHJuaWNtcCBhcmUgaW4gdGhlCiAgIFB5dGhvbiBleGVjdXRhYmxlIGFuZCBub3QgcmVtb3ZlZCBieSB0aGUgbGlua2VyJ3Mgb3B0aW1pemVyLgogCkBAIC02ODkzLDYgKzg1NDgsOSBAQAogLSBJc3N1ZSAjMTY4MDk6IFRraW50ZXIncyBzcGxpdGxpc3QoKSBhbmQgc3BsaXQoKSBtZXRob2RzIG5vdyBhY2NlcHQgVGNsX09iagogICBhcmd1bWVudC4KIAorLSBJc3N1ZSAjMTcyMTE6IFlpZWxkIGEgbmFtZWR0dXBsZSBpbiBwa2d1dGlsLgorICBQYXRjaCBieSBSYW1jaGFuZHJhIEFwdGUuCisKIC0gSXNzdWUgIzE4MzI0OiBzZXRfcGF5bG9hZCBub3cgY29ycmVjdGx5IGhhbmRsZXMgYmluYXJ5IGlucHV0LiAgVGhpcyBhbHNvCiAgIHN1cGVyc2VkZXMgdGhlIHByZXZpb3VzIGZpeGVzIGZvciAjMTQzNjAsICMxNzE3LCBhbmQgIzE2NTY0LgogCkBAIC02OTAyLDYgKzg1NjAsOCBAQAogLSBJc3N1ZSAjMTcxMTk6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3dzIHdoZW4gcHJvY2Vzc2luZyBsYXJnZSBzdHJpbmdzIGFuZCB0dXBsZXMKICAgaW4gdGhlIHRraW50ZXIgbW9kdWxlLgogCistIElzc3VlICMxNTM1MjogUmVidWlsZCBmcm96ZW4gbW9kdWxlcyB3aGVuIG1hcnNoYWwuYyBpcyBjaGFuZ2VkLgorCiAtIElzc3VlICMxODc0NzogUmUtc2VlZCBPcGVuU1NMJ3MgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGFmdGVyIGZvcmsuCiAgIEEgcHRocmVhZF9hdGZvcmsoKSBwYXJlbnQgaGFuZGxlciBpcyB1c2VkIHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBwaWQsIHRpbWUKICAgYW5kIHNvbWUgc3RhY2sgZGF0YS4KQEAgLTcxMDksNiArODc2OSw5IEBACiAtIElzc3VlICMxODEzNzogRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cgb24gcHJlY2lzaW9uIGluIGZsb2F0Ll9fZm9ybWF0X18oKQogICBhbmQgY29tcGxleC5fX2Zvcm1hdF9fKCkuCiAKKy0gSXNzdWUgIzE1NzY3OiBJbnRyb2R1Y2UgTW9kdWxlTm90Rm91bmRFcnJvciB3aGljaCBpcyByYWlzZWQgd2hlbiBhIG1vZHVsZQorICBjb3VsZCBub3QgYmUgZm91bmQuCisKIC0gSXNzdWUgIzE4MTgzOiBGaXggdmFyaW91cyB1bmljb2RlIG9wZXJhdGlvbnMgb24gc3RyaW5ncyB3aXRoIGxhcmdlIHVuaWNvZGUKICAgY29kZXBvaW50cy4KIApAQCAtOTAyOSw2ICsxMDY5MiwxMCBAQAogICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSAoYW5kIHRodXMgYnkgZXh0ZW5zaW9uCiAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlKCkgYW5kIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgoKSkuCiAKKy0gSXNzdWUgIzE1NzY3OiBBZGRlZCBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKCkuCisKKy0gUHlFcnJfU2V0SW1wb3J0RXJyb3IoKSBub3cgc2V0cyBUeXBlRXJyb3Igd2hlbiBpdHMgbXNnIGFyZ3VtZW50IGlzIHNldC4KKwogLSBJc3N1ZSAjOTM2OTogVGhlIHR5cGVzIG9mIGBjaGFyKmAgYXJndW1lbnRzIG9mIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigpIGFuZAogICBQeU9iamVjdF9DYWxsTWV0aG9kKCkgbm93IGNoYW5nZWQgdG8gYGNvbnN0IGNoYXIqYC4gIEJhc2VkIG9uIHBhdGNoZXMgYnkKICAgSsO2cmcgTcO8bGxlciBhbmQgTGFycyBCdWl0aW5jay4KZGlmZiAtLWdpdCBhL01pc2MvUkVBRE1FLnZhbGdyaW5kIGIvTWlzYy9SRUFETUUudmFsZ3JpbmQKaW5kZXggYjVhOWEzMi4uOTA4ZjEzNyAxMDA2NDQKLS0tIGEvTWlzYy9SRUFETUUudmFsZ3JpbmQKKysrIGIvTWlzYy9SRUFETUUudmFsZ3JpbmQKQEAgLTIsNiArMiw5IEBACiBQeXRob24uICBWYWxncmluZCBpcyB1c2VkIHBlcmlvZGljYWxseSBieSBQeXRob24gZGV2ZWxvcGVycyB0byB0cnkKIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWVtb3J5IGxlYWtzIG9yIGludmFsaWQgbWVtb3J5IHJlYWRzL3dyaXRlcy4KIAorVVBEQVRFOiBQeXRob24gMy42IG5vdyBzdXBwb3J0cyBQWVRIT05NQUxMT0M9bWFsbG9jIGVudmlyb25tZW50IHZhcmlhYmxlIHdoaWNoCitjYW4gYmUgdXNlZCB0byBmb3JjZSB0aGUgdXNhZ2Ugb2YgdGhlIG1hbGxvYygpIGFsbG9jYXRvciBvZiB0aGUgQyBsaWJyYXJ5LgorCiBJZiB5b3UgZG9uJ3Qgd2FudCB0byByZWFkIGFib3V0IHRoZSBkZXRhaWxzIG9mIHVzaW5nIFZhbGdyaW5kLCB0aGVyZQogYXJlIHN0aWxsIHR3byB0aGluZ3MgeW91IG11c3QgZG8gdG8gc3VwcHJlc3MgdGhlIHdhcm5pbmdzLiAgRmlyc3QsCiB5b3UgbXVzdCB1c2UgYSBzdXBwcmVzc2lvbnMgZmlsZS4gIE9uZSBpcyBzdXBwbGllZCBpbgpkaWZmIC0tZ2l0IGEvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dCBiL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKaW5kZXggMzAwNDE3NC4uODJmYTIzZSAxMDA2NDQKLS0tIGEvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dAorKysgYi9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CkBAIC02NSw5ICs2NSw5IEBACiAgICAgc2ltcGx5IGJ5IHZpcnR1ZSBvZiBiZWluZyBpbiB0aGUgbGlzdC4KIAogZW52dmFyIFBZVEhPTkRVTVBSRUZTCi0gICAgSWYgdGhpcyBlbnZ2YXIgZXhpc3RzLCBQeV9GaW5hbGl6ZSgpIGFycmFuZ2VzIHRvIHByaW50IGEgbGlzdCBvZiBhbGwKKyAgICBJZiB0aGlzIGVudnZhciBleGlzdHMsIFB5X0ZpbmFsaXplRXgoKSBhcnJhbmdlcyB0byBwcmludCBhIGxpc3Qgb2YgYWxsCiAgICAgc3RpbGwtbGl2ZSBoZWFwIG9iamVjdHMuICBUaGlzIGlzIHByaW50ZWQgdHdpY2UsIGluIGRpZmZlcmVudCBmb3JtYXRzLAotICAgIGJlZm9yZSBhbmQgYWZ0ZXIgUHlfRmluYWxpemUgaGFzIGNsZWFuZWQgdXAgZXZlcnl0aGluZyBpdCBjYW4gY2xlYW4gdXAuICBUaGUKKyAgICBiZWZvcmUgYW5kIGFmdGVyIFB5X0ZpbmFsaXplRXggaGFzIGNsZWFuZWQgdXAgZXZlcnl0aGluZyBpdCBjYW4gY2xlYW4gdXAuICBUaGUKICAgICBmaXJzdCBvdXRwdXQgYmxvY2sgcHJvZHVjZXMgdGhlIHJlcHIoKSBvZiBlYWNoIG9iamVjdCBzbyBpcyBtb3JlCiAgICAgaW5mb3JtYXRpdmU7IGhvd2V2ZXIsIGEgbG90IG9mIHN0dWZmIGRlc3RpbmVkIHRvIGRpZSBpcyBzdGlsbCBhbGl2ZSB0aGVuLgogICAgIFRoZSBzZWNvbmQgb3V0cHV0IGJsb2NrIGlzIG11Y2ggaGFyZGVyIHRvIHdvcmsgd2l0aCAocmVwcigpIGNhbid0IGJlIGludm9rZWQKQEAgLTE0NCw3ICsxNDQsNyBAQAogCiBlbnZ2YXIgUFlUSE9OTUFMTE9DU1RBVFMKICAgICBJZiB0aGlzIGVudnZhciBleGlzdHMsIGEgcmVwb3J0IG9mIHB5bWFsbG9jIHN1bW1hcnkgc3RhdGlzdGljcyBpcyBwcmludGVkIHRvCi0gICAgc3RkZXJyIHdoZW5ldmVyIGEgbmV3IGFyZW5hIGlzIGFsbG9jYXRlZCwgYW5kIGFsc28gYnkgUHlfRmluYWxpemUoKS4KKyAgICBzdGRlcnIgd2hlbmV2ZXIgYSBuZXcgYXJlbmEgaXMgYWxsb2NhdGVkLCBhbmQgYWxzbyBieSBQeV9GaW5hbGl6ZUV4KCkuCiAKIENoYW5nZWQgaW4gMi41OiAgVGhlIG51bWJlciBvZiBleHRyYSBieXRlcyBhbGxvY2F0ZWQgaXMgNCpzaXplb2Yoc2l6ZV90KS4KIEJlZm9yZSBpdCB3YXMgMTYgb24gYWxsIGJveGVzLCByZWZsZWN0aW5nIHRoYXQgUHl0aG9uIGNvdWxkbid0IG1ha2UgdXNlIG9mCkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAgKi8KICAgICBpbnQgdHBfbWF4YWxsb2M7CiAKLUFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIGtlZXBzIHRoZXNlIGNvdW50cyB1cCB0byBkYXRlLiAgUHlfRmluYWxpemUoKQorQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGNvZGUga2VlcHMgdGhlc2UgY291bnRzIHVwIHRvIGRhdGUuICBQeV9GaW5hbGl6ZUV4KCkKIGRpc3BsYXlzIGEgc3VtbWFyeSBvZiB0aGUgaW5mbyByZXR1cm5lZCBieSBzeXMuZ2V0Y291bnRzKCkgKHNlZSBiZWxvdyksIGFsb25nCiB3aXRoIGFzc29ydGVkIG90aGVyIHNwZWNpYWwgYWxsb2NhdGlvbiBjb3VudHMgKGxpa2UgdGhlIG51bWJlciBvZiB0dXBsZQogYWxsb2NhdGlvbnMgc2F0aXNmaWVkIGJ5IGEgdHVwbGUgZnJlZS1saXN0LCB0aGUgbnVtYmVyIG9mIDEtY2hhcmFjdGVyIHN0cmluZ3MKQEAgLTIzNCwyOSArMjM0LDMgQEAKIG51bWJlciBvZiBmdW5jdGlvbiBjYWxscyBtYWRlLiAgSXQga2VlcHMgZGV0YWlsZWQgc3RhdGlzdGljcyBhYm91dCB3aGF0IGtpbmQgb2YKIG9iamVjdCB3YXMgY2FsbGVkIGFuZCB3aGV0aGVyIHRoZSBjYWxsIGhpdCBhbnkgb2YgdGhlIHNwZWNpYWwgZmFzdCBwYXRocyBpbiB0aGUKIGNvZGUuCi0KLQotV0lUSF9UU0MKLS0tLS0tLS0tCi0KLVN1cGVyLWxvd2xldmVsIHByb2ZpbGluZyBvZiB0aGUgaW50ZXJwcmV0ZXIuICBXaGVuIGVuYWJsZWQsIHRoZSBzeXMgbW9kdWxlIGdyb3dzCi1hIG5ldyBmdW5jdGlvbjoKLQotc2V0dHNjZHVtcChib29sKQotICAgIElmIHRydWUsIHRlbGwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byBkdW1wIFZNIG1lYXN1cmVtZW50cyB0byBzdGRlcnIuICBJZgotICAgIGZhbHNlLCB0dXJuIG9mZiBkdW1wLiAgVGhlIG1lYXN1cmVtZW50cyBhcmUgYmFzZWQgb24gdGhlIHByb2Nlc3NvcidzCi0gICAgdGltZS1zdGFtcCBjb3VudGVyLgotCi1UaGlzIGJ1aWxkIG9wdGlvbiByZXF1aXJlcyBhIHNtYWxsIGFtb3VudCBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLiAgQ3VycmVudGx5Ci10aGlzIGNvZGUgaXMgcHJlc2VudCBmb3IgbGludXgveDg2IGFuZCBhbnkgUG93ZXJQQyBwbGF0Zm9ybSB0aGF0IHVzZXMgR0NDCi0oaS5lLiBPUyBYIGFuZCBsaW51eC9wcGMpLgotCi1PbiB0aGUgUG93ZXJQQyB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgdGltZSBiYXNlIHJlZ2lzdGVyIGlzIGluY3JlbWVudGVkIGlzIG5vdAotZGVmaW5lZCBieSB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljYXRpb24sIHNvIHlvdSdsbCBuZWVkIHRvIGZpbmQgdGhlIG1hbnVhbCBmb3IKLXlvdXIgc3BlY2lmaWMgcHJvY2Vzc29yLiAgRm9yIHRoZSA3NTBDWCwgNzUwQ1hlIGFuZCA3NTBGWCAoYWxsIHNvbGQgYXMgdGhlIEczKQotd2UgZmluZDoKLQotICAgIFRoZSB0aW1lIGJhc2UgY291bnRlciBpcyBjbG9ja2VkIGF0IGEgZnJlcXVlbmN5IHRoYXQgaXMgb25lLWZvdXJ0aCB0aGF0IG9mCi0gICAgdGhlIGJ1cyBjbG9jay4KLQotVGhpcyBidWlsZCBpcyBlbmFibGVkIGJ5IHRoZSAtLXdpdGgtdHNjIGZsYWcgdG8gY29uZmlndXJlLgpkaWZmIC0tZ2l0IGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jIGIvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCmluZGV4IDc0OWYyZjAuLjFhZTYxNzkgMTAwNjQ0Ci0tLSBhL01pc2MvY292ZXJpdHlfbW9kZWwuYworKysgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKQEAgLTIyLDcgKzIyLDYgQEAKICNkZWZpbmUgYXNzZXJ0KG9wKSAvKiBlbXB0eSAqLwogdHlwZWRlZiBpbnQgc2RpZ2l0OwogdHlwZWRlZiBsb25nIFB5X3NzaXplX3Q7Ci10eXBlZGVmIGxvbmcgbG9uZyBQWV9MT05HX0xPTkc7CiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHdjaGFyX3Q7CiB0eXBlZGVmIHN0cnVjdCB7fSBQeU9iamVjdDsKIHR5cGVkZWYgc3RydWN0IHt9IGdyYW1tYXI7CkBAIC02Myw3ICs2Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlMb25nX0Zyb21Mb25nTG9uZyhQWV9MT05HX0xPTkcgaXZhbCkKK1B5T2JqZWN0ICpQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyBpdmFsKQogewogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpaXZhbCk7CiB9CkBAIC05NCw3ICs5Myw3IEBACiB9CiAKIC8qIFBhcnNlci9wZ2VubWFpbi5jICovCi1ncmFtbWFyICpnZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKQorZ3JhbW1hciAqZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBncmFtbWFyICpnOwogICAgIF9fY292ZXJpdHlfdGFpbnRlZF9kYXRhX3NpbmtfXyhmaWxlbmFtZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmNvbmZpZy5pbiBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCmluZGV4IGFkYWMwMzAuLjY0NTA1MjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCisrKyBiL01vZHVsZXMvU2V0dXAuY29uZmlnLmluCkBAIC02LDggKzYsNSBAQAogIyBUaHJlYWRpbmcKIEBVU0VfVEhSRUFEX01PRFVMRUBfdGhyZWFkIF90aHJlYWRtb2R1bGUuYwogCi0jIFRoZSBzaWduYWwgbW9kdWxlCi1AVVNFX1NJR05BTF9NT0RVTEVAX3NpZ25hbCBzaWduYWxtb2R1bGUuYwotCiAjIFRoZSByZXN0IG9mIHRoZSBtb2R1bGVzIHByZXZpb3VzbHkgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYnVpbHQKICMgYnkgdGhlIHNldHVwLnB5IHNjcmlwdCBpbiBQeXRob24gMi4xIGFuZCBsYXRlci4KZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuZGlzdCBiL01vZHVsZXMvU2V0dXAuZGlzdAppbmRleCAwNmJhNmFkLi44Yjg3ZmM4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL1NldHVwLmRpc3QKKysrIGIvTW9kdWxlcy9TZXR1cC5kaXN0CkBAIC0xMTcsNiArMTE3LDcgQEAKIF9jb2xsZWN0aW9ucyBfY29sbGVjdGlvbnNtb2R1bGUuYyAjIENvbnRhaW5lciB0eXBlcwogaXRlcnRvb2xzIGl0ZXJ0b29sc21vZHVsZS5jICAgICMgRnVuY3Rpb25zIGNyZWF0aW5nIGl0ZXJhdG9ycyBmb3IgZWZmaWNpZW50IGxvb3BpbmcKIGF0ZXhpdCBhdGV4aXRtb2R1bGUuYyAgICAgICMgUmVnaXN0ZXIgZnVuY3Rpb25zIHRvIGJlIHJ1biBhdCBpbnRlcnByZXRlci1zaHV0ZG93bgorX3NpZ25hbCBzaWduYWxtb2R1bGUuYwogX3N0YXQgX3N0YXQuYwkJCSMgc3RhdC5oIGludGVyZmFjZQogdGltZSB0aW1lbW9kdWxlLmMJIyAtbG0gIyB0aW1lIG9wZXJhdGlvbnMgYW5kIHZhcmlhYmxlcwogCkBAIC0xODAsNiArMTgxLDcgQEAKICNfZGF0ZXRpbWUgX2RhdGV0aW1lbW9kdWxlLmMJIyBkYXRldGltZSBhY2NlbGVyYXRvcgogI19iaXNlY3QgX2Jpc2VjdG1vZHVsZS5jCSMgQmlzZWN0aW9uIGFsZ29yaXRobXMKICNfaGVhcHEgX2hlYXBxbW9kdWxlLmMJIyBIZWFwIHF1ZXVlIGFsZ29yaXRobQorI19hc3luY2lvIF9hc3luY2lvbW9kdWxlLmMgICMgRmFzdCBhc3luY2lvIEZ1dHVyZQogCiAjdW5pY29kZWRhdGEgdW5pY29kZWRhdGEuYyAgICAjIHN0YXRpYyBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZQogCkBAIC0yNDksNiArMjUxLDggQEAKICNfc2hhMjU2IHNoYTI1Nm1vZHVsZS5jCiAjX3NoYTUxMiBzaGE1MTJtb2R1bGUuYwogCisjIF9ibGFrZSBtb2R1bGUKKyNfYmxha2UyIF9ibGFrZTIvYmxha2UybW9kdWxlLmMgX2JsYWtlMi9ibGFrZTJiX2ltcGwuYyBfYmxha2UyL2JsYWtlMnNfaW1wbC5jCiAKICMgVGhlIF90a2ludGVyIG1vZHVsZS4KICMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2FzeW5jaW9tb2R1bGUuYyBiL01vZHVsZXMvX2FzeW5jaW9tb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjVmYzAyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYXN5bmNpb21vZHVsZS5jCkBAIC0wLDAgKzEsMjQ2MyBAQAorI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfYXN5bmNpbworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OGZkMTc4NjJhYTk4OWM2OV0qLworCisKKy8qIGlkZW50aWZpZXJzIHVzZWQgZnJvbSBzb21lIGZ1bmN0aW9ucyAqLworX1B5X0lERU5USUZJRVIoYWRkX2RvbmVfY2FsbGJhY2spOworX1B5X0lERU5USUZJRVIoY2FsbF9zb29uKTsKK19QeV9JREVOVElGSUVSKGNhbmNlbCk7CitfUHlfSURFTlRJRklFUihzZW5kKTsKK19QeV9JREVOVElGSUVSKHRocm93KTsKK19QeV9JREVOVElGSUVSKF9zdGVwKTsKK19QeV9JREVOVElGSUVSKF9zY2hlZHVsZV9jYWxsYmFja3MpOworX1B5X0lERU5USUZJRVIoX3dha2V1cCk7CisKKworLyogU3RhdGUgb2YgdGhlIF9hc3luY2lvIG1vZHVsZSAqLworc3RhdGljIFB5T2JqZWN0ICphbGxfdGFza3M7CitzdGF0aWMgUHlPYmplY3QgKmN1cnJlbnRfdGFza3M7CitzdGF0aWMgUHlPYmplY3QgKnRyYWNlYmFja19leHRyYWN0X3N0YWNrOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX2dldF9ldmVudF9sb29wOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX2Z1dHVyZV9yZXByX2luZm9fZnVuYzsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb190YXNrX3JlcHJfaW5mb19mdW5jOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX3Rhc2tfZ2V0X3N0YWNrX2Z1bmM7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fdGFza19wcmludF9zdGFja19mdW5jOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX0NhbmNlbGxlZEVycm9yOworc3RhdGljIFB5T2JqZWN0ICppbnNwZWN0X2lzZ2VuZXJhdG9yOworCisKK3R5cGVkZWYgZW51bSB7CisgICAgU1RBVEVfUEVORElORywKKyAgICBTVEFURV9DQU5DRUxMRUQsCisgICAgU1RBVEVfRklOSVNIRUQKK30gZnV0X3N0YXRlOworCisjZGVmaW5lIEZ1dHVyZU9ial9IRUFEKHByZWZpeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0X0hFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfbG9vcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX2NhbGxiYWNrczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19leGNlcHRpb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX3NvdXJjZV90YjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGZ1dF9zdGF0ZSBwcmVmaXgjI19zdGF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnQgcHJlZml4IyNfbG9nX3RiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaW50IHByZWZpeCMjX2Jsb2NraW5nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpkaWN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfd2Vha3JlZmxpc3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBGdXR1cmVPYmpfSEVBRChmdXQpCit9IEZ1dHVyZU9iajsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEZ1dHVyZU9ial9IRUFEKHRhc2spCisgICAgUHlPYmplY3QgKnRhc2tfZnV0X3dhaXRlcjsKKyAgICBQeU9iamVjdCAqdGFza19jb3JvOworICAgIGludCB0YXNrX211c3RfY2FuY2VsOworICAgIGludCB0YXNrX2xvZ19kZXN0cm95X3BlbmRpbmc7Cit9IFRhc2tPYmo7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgVGFza09iaiAqc3dfdGFzazsKKyAgICBQeU9iamVjdCAqc3dfYXJnOworfSBUYXNrU2VuZE1ldGhXcmFwcGVyOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFRhc2tPYmogKnd3X3Rhc2s7Cit9IFRhc2tXYWtldXBNZXRoV3JhcHBlcjsKKworCisjaW5jbHVkZSAiY2xpbmljL19hc3luY2lvbW9kdWxlLmMuaCIKKworCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBfYXN5bmNpby5GdXR1cmUgIkZ1dHVyZU9iaiAqIiAiJkZ1dHVyZV9UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MDBkM2U0YWJjYTcxMWUwZl0qLworCisvKiBHZXQgRnV0dXJlSXRlciBmcm9tIEZ1dHVyZSAqLworc3RhdGljIFB5T2JqZWN0KiBmdXR1cmVfbmV3X2l0ZXIoUHlPYmplY3QgKik7CitzdGF0aWMgaW5saW5lIGludCBmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoRnV0dXJlT2JqICopOworCitzdGF0aWMgaW50CitmdXR1cmVfc2NoZWR1bGVfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5T2JqZWN0KiBpdGVyczsKKyAgICBpbnQgaTsKKworICAgIGlmIChmdXQtPmZ1dF9jYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiTlVMTCBjYWxsYmFja3MiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIGlmIChsZW4gPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpdGVycyA9IFB5TGlzdF9HZXRTbGljZShmdXQtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbik7CisgICAgaWYgKGl0ZXJzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGZ1dC0+ZnV0X2NhbGxiYWNrcywgMCwgbGVuLCBOVUxMKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGl0ZXJzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaGFuZGxlID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmNiID0gUHlMaXN0X0dFVF9JVEVNKGl0ZXJzLCBpKTsKKworICAgICAgICBoYW5kbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZnV0LT5mdXRfbG9vcCwgJlB5SWRfY2FsbF9zb29uLCAiT08iLCBjYiwgZnV0LCBOVUxMKTsKKworICAgICAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2Z1dHVyZV9pbml0KEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqbG9vcCkKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihnZXRfZGVidWcpOworCisgICAgaWYgKGxvb3AgPT0gTlVMTCB8fCBsb29wID09IFB5X05vbmUpIHsKKyAgICAgICAgbG9vcCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoYXN5bmNpb19nZXRfZXZlbnRfbG9vcCwgTlVMTCk7CisgICAgICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKGxvb3ApOworICAgIH0KKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9sb29wKTsKKyAgICBmdXQtPmZ1dF9sb29wID0gbG9vcDsKKworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZnV0LT5mdXRfbG9vcCwgJlB5SWRfZ2V0X2RlYnVnLCBOVUxMKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHJlcykpIHsKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICAgICAgZnV0LT5mdXRfc291cmNlX3RiID0gUHlPYmplY3RfQ2FsbE9iamVjdCh0cmFjZWJhY2tfZXh0cmFjdF9zdGFjaywgTlVMTCk7CisgICAgICAgIGlmIChmdXQtPmZ1dF9zb3VyY2VfdGIgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2NhbGxiYWNrcyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGZ1dC0+ZnV0X2NhbGxiYWNrcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9zZXRfcmVzdWx0KEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqcmVzKQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yLCAiaW52YWxpZCBzdGF0ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYocmVzKTsKKyAgICBmdXQtPmZ1dF9yZXN1bHQgPSByZXM7CisgICAgZnV0LT5mdXRfc3RhdGUgPSBTVEFURV9GSU5JU0hFRDsKKworICAgIGlmIChmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdXR1cmVfc2V0X2V4Y2VwdGlvbihGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmV4YykKK3sKKyAgICBQeU9iamVjdCAqZXhjX3ZhbCA9IE5VTEw7CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgImludmFsaWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2soZXhjKSkgeworICAgICAgICBleGNfdmFsID0gUHlPYmplY3RfQ2FsbE9iamVjdChleGMsIE5VTEwpOworICAgICAgICBpZiAoZXhjX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXhjX3ZhbCA9IGV4YzsKKyAgICAgICAgUHlfSU5DUkVGKGV4Y192YWwpOworICAgIH0KKyAgICBpZiAoIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2soZXhjX3ZhbCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGV4Y192YWwpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBleGNlcHRpb24gb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoKFB5T2JqZWN0KilQeV9UWVBFKGV4Y192YWwpID09IFB5RXhjX1N0b3BJdGVyYXRpb24pIHsKKyAgICAgICAgUHlfREVDUkVGKGV4Y192YWwpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlN0b3BJdGVyYXRpb24gaW50ZXJhY3RzIGJhZGx5IHdpdGggZ2VuZXJhdG9ycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIGNhbm5vdCBiZSByYWlzZWQgaW50byBhIEZ1dHVyZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9leGNlcHRpb24gPSBleGNfdmFsOworICAgIGZ1dC0+ZnV0X3N0YXRlID0gU1RBVEVfRklOSVNIRUQ7CisKKyAgICBpZiAoZnV0dXJlX2NhbGxfc2NoZWR1bGVfY2FsbGJhY2tzKGZ1dCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZnV0LT5mdXRfbG9nX3RiID0gMTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIGludAorZnV0dXJlX2dldF9yZXN1bHQoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICoqcmVzdWx0KQoreworICAgIFB5T2JqZWN0ICpleGM7CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgPT0gU1RBVEVfQ0FOQ0VMTEVEKSB7CisgICAgICAgIGV4YyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoYXN5bmNpb19DYW5jZWxsZWRFcnJvcik7CisgICAgICAgIGlmIChleGMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgICpyZXN1bHQgPSBleGM7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9GSU5JU0hFRCkgeworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIlJlc3VsdCBpcyBub3QgcmVhZHkuIik7CisgICAgICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgZXhjID0gX1B5T2JqZWN0X0NhbGxBcmcxKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsIG1zZyk7CisgICAgICAgIFB5X0RFQ1JFRihtc2cpOworICAgICAgICBpZiAoZXhjID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgICpyZXN1bHQgPSBleGM7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2xvZ190YiA9IDA7CisgICAgaWYgKGZ1dC0+ZnV0X2V4Y2VwdGlvbiAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9leGNlcHRpb24pOworICAgICAgICAqcmVzdWx0ID0gZnV0LT5mdXRfZXhjZXB0aW9uOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICAqcmVzdWx0ID0gZnV0LT5mdXRfcmVzdWx0OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrKEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5T2JqZWN0ICpoYW5kbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZnV0LT5mdXRfbG9vcCwgJlB5SWRfY2FsbF9zb29uLCAiT08iLCBhcmcsIGZ1dCwgTlVMTCk7CisKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihoYW5kbGUpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbnQgZXJyID0gUHlMaXN0X0FwcGVuZChmdXQtPmZ1dF9jYWxsYmFja3MsIGFyZyk7CisgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdXR1cmVfY2FuY2VsKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisgICAgZnV0LT5mdXRfc3RhdGUgPSBTVEFURV9DQU5DRUxMRUQ7CisKKyAgICBpZiAoZnV0dXJlX2NhbGxfc2NoZWR1bGVfY2FsbGJhY2tzKGZ1dCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX1RSVUU7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5fX2luaXRfXworCisgICAgKgorICAgIGxvb3A6ICdPJyA9IE5VTEwKKworVGhpcyBjbGFzcyBpcyAqYWxtb3N0KiBjb21wYXRpYmxlIHdpdGggY29uY3VycmVudC5mdXR1cmVzLkZ1dHVyZS4KKworICAgIERpZmZlcmVuY2VzOgorCisgICAgLSByZXN1bHQoKSBhbmQgZXhjZXB0aW9uKCkgZG8gbm90IHRha2UgYSB0aW1lb3V0IGFyZ3VtZW50IGFuZAorICAgICAgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIGZ1dHVyZSBpc24ndCBkb25lIHlldC4KKworICAgIC0gQ2FsbGJhY2tzIHJlZ2lzdGVyZWQgd2l0aCBhZGRfZG9uZV9jYWxsYmFjaygpIGFyZSBhbHdheXMgY2FsbGVkCisgICAgICB2aWEgdGhlIGV2ZW50IGxvb3AncyBjYWxsX3Nvb25fdGhyZWFkc2FmZSgpLgorCisgICAgLSBUaGlzIGNsYXNzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKCkKKyAgICAgIG1ldGhvZHMgaW4gdGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBwYWNrYWdlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgaW50CitfYXN5bmNpb19GdXR1cmVfX19pbml0X19faW1wbChGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpsb29wKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTllZDc1Nzk5ZWFjY2I1ZDYgaW5wdXQ9OGUxNjgxZjIzNjA1YmUyZF0qLworCit7CisgICAgcmV0dXJuIGZ1dHVyZV9pbml0KHNlbGYsIGxvb3ApOworfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfY2xlYXIoRnV0dXJlT2JqICpmdXQpCit7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfbG9vcCk7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9yZXN1bHQpOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfc291cmNlX3RiKTsKKyAgICBQeV9DTEVBUihmdXQtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfdHJhdmVyc2UoRnV0dXJlT2JqICpmdXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X2xvb3ApOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9leGNlcHRpb24pOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X3NvdXJjZV90Yik7CisgICAgUHlfVklTSVQoZnV0LT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLnJlc3VsdAorCitSZXR1cm4gdGhlIHJlc3VsdCB0aGlzIGZ1dHVyZSByZXByZXNlbnRzLgorCitJZiB0aGUgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmFpc2VzIENhbmNlbGxlZEVycm9yLiAgSWYgdGhlCitmdXR1cmUncyByZXN1bHQgaXNuJ3QgeWV0IGF2YWlsYWJsZSwgcmFpc2VzIEludmFsaWRTdGF0ZUVycm9yLiAgSWYKK3RoZSBmdXR1cmUgaXMgZG9uZSBhbmQgaGFzIGFuIGV4Y2VwdGlvbiBzZXQsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9yZXN1bHRfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjM1Zjk0MDkzNmE0YjFlNSBpbnB1dD00OWVjZjljZjVlYzUwZGM1XSovCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpbnQgcmVzID0gZnV0dXJlX2dldF9yZXN1bHQoc2VsZiwgJnJlc3VsdCk7CisKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGFzc2VydChyZXMgPT0gMSk7CisKKyAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhyZXN1bHQpLCByZXN1bHQpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuZXhjZXB0aW9uCisKK1JldHVybiB0aGUgZXhjZXB0aW9uIHRoYXQgd2FzIHNldCBvbiB0aGlzIGZ1dHVyZS4KKworVGhlIGV4Y2VwdGlvbiAob3IgTm9uZSBpZiBubyBleGNlcHRpb24gd2FzIHNldCkgaXMgcmV0dXJuZWQgb25seSBpZgordGhlIGZ1dHVyZSBpcyBkb25lLiAgSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlcworQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGUgZnV0dXJlIGlzbid0IGRvbmUgeWV0LCByYWlzZXMKK0ludmFsaWRTdGF0ZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbl9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04OGIyMGQ0Zjg1NWUwNzEwIGlucHV0PTczMzU0N2E3MGM4NDFjNjhdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19DYW5jZWxsZWRFcnJvciwgIiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlICE9IFNUQVRFX0ZJTklTSEVEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yLCAiUmVzdWx0IGlzIG5vdCByZWFkeS4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNlbGYtPmZ1dF9leGNlcHRpb24gIT0gTlVMTCkgeworICAgICAgICBzZWxmLT5mdXRfbG9nX3RiID0gMDsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPmZ1dF9leGNlcHRpb24pOworICAgICAgICByZXR1cm4gc2VsZi0+ZnV0X2V4Y2VwdGlvbjsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLnNldF9yZXN1bHQKKworICAgIHJlczogJ08nCisgICAgLworCitNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGl0cyByZXN1bHQuCisKK0lmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXMKK0ludmFsaWRTdGF0ZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3NldF9yZXN1bHQoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqcmVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE2MjBhYmZjMjc5NmJmYjYgaW5wdXQ9ODYxOTU2NWUwNTAzMzU3ZV0qLworeworICAgIHJldHVybiBmdXR1cmVfc2V0X3Jlc3VsdChzZWxmLCByZXMpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuc2V0X2V4Y2VwdGlvbgorCisgICAgZXhjZXB0aW9uOiAnTycKKyAgICAvCisKK01hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgYW4gZXhjZXB0aW9uLgorCitJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzCitJbnZhbGlkU3RhdGVFcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9zZXRfZXhjZXB0aW9uKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKmV4Y2VwdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMWMxYjBjZDMyMWJlMzYwIGlucHV0PTEzNzdkYmUxNWU2ZWExODZdKi8KK3sKKyAgICByZXR1cm4gZnV0dXJlX3NldF9leGNlcHRpb24oc2VsZiwgZXhjZXB0aW9uKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLmFkZF9kb25lX2NhbGxiYWNrCisKKyAgICBmbjogJ08nCisgICAgLworCitBZGQgYSBjYWxsYmFjayB0byBiZSBydW4gd2hlbiB0aGUgZnV0dXJlIGJlY29tZXMgZG9uZS4KKworVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IC0gdGhlIGZ1dHVyZSBvYmplY3QuIElmCit0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgaXMgY2FsbGVkLCB0aGUgY2FsbGJhY2sgaXMKK3NjaGVkdWxlZCB3aXRoIGNhbGxfc29vbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9hZGRfZG9uZV9jYWxsYmFjayhGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpmbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MTllMDk2MjliMmVjMmI1IGlucHV0PThjY2UxODdlMzJjZWM2YThdKi8KK3sKKyAgICByZXR1cm4gZnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrKHNlbGYsIGZuKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLnJlbW92ZV9kb25lX2NhbGxiYWNrCisKKyAgICBmbjogJ08nCisgICAgLworCitSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhIGNhbGxiYWNrIGZyb20gdGhlICJjYWxsIHdoZW4gZG9uZSIgbGlzdC4KKworUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNhbGxiYWNrcyByZW1vdmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3JlbW92ZV9kb25lX2NhbGxiYWNrKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKmZuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhYjFmYjUyYjI0ZWYzMWYgaW5wdXQ9M2ZlZGI3M2UxNDA5YzMxY10qLworeworICAgIFB5T2JqZWN0ICpuZXdsaXN0OworICAgIFB5X3NzaXplX3QgbGVuLCBpLCBqPTA7CisKKyAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUoc2VsZi0+ZnV0X2NhbGxiYWNrcyk7CisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoMCk7CisgICAgfQorCisgICAgbmV3bGlzdCA9IFB5TGlzdF9OZXcobGVuKTsKKyAgICBpZiAobmV3bGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpbnQgcmV0OworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShzZWxmLT5mdXRfY2FsbGJhY2tzLCBpKTsKKworICAgICAgICBpZiAoKHJldCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChmbiwgaXRlbSwgUHlfRVEpKSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0ID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShuZXdsaXN0LCBqLCBpdGVtKTsKKyAgICAgICAgICAgIGorKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQeUxpc3RfU2V0U2xpY2UobmV3bGlzdCwgaiwgbGVuLCBOVUxMKSA8IDApIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKHNlbGYtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbiwgbmV3bGlzdCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisgICAgUHlfREVDUkVGKG5ld2xpc3QpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuIC0gaik7CisKK2ZhaWw6CisgICAgUHlfREVDUkVGKG5ld2xpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuY2FuY2VsCisKK0NhbmNlbCB0aGUgZnV0dXJlIGFuZCBzY2hlZHVsZSBjYWxsYmFja3MuCisKK0lmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIG9yIGNhbmNlbGxlZCwgcmV0dXJuIEZhbHNlLiAgT3RoZXJ3aXNlLAorY2hhbmdlIHRoZSBmdXR1cmUncyBzdGF0ZSB0byBjYW5jZWxsZWQsIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kCityZXR1cm4gVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9jYW5jZWxfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTQ1YjkzMmJhOGJkNjhhMSBpbnB1dD01MTU3MDlhMTI3OTk1MTA5XSovCit7CisgICAgcmV0dXJuIGZ1dHVyZV9jYW5jZWwoc2VsZik7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5jYW5jZWxsZWQKKworUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSB3YXMgY2FuY2VsbGVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZF9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDUxOTdjZWQ1ODYzNTdkIGlucHV0PTk0M2FiOGI3YjdiMTdlNDVdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlID09IFNUQVRFX0NBTkNFTExFRCkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5kb25lCisKK1JldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgaXMgZG9uZS4KKworRG9uZSBtZWFucyBlaXRoZXIgdGhhdCBhIHJlc3VsdCAvIGV4Y2VwdGlvbiBhcmUgYXZhaWxhYmxlLCBvciB0aGF0IHRoZQorZnV0dXJlIHdhcyBjYW5jZWxsZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfZG9uZV9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNDRjNWFjMzUxMTQ1MDk2IGlucHV0PTI4ZDdiMjNmZGI2NWQyYWNdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZnV0X3N0YXRlID09IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9ibG9ja2luZyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfYmxvY2tpbmcpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfc2V0X2Jsb2NraW5nKEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqdmFsKQoreworICAgIGludCBpc190cnVlID0gUHlPYmplY3RfSXNUcnVlKHZhbCk7CisgICAgaWYgKGlzX3RydWUgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZnV0LT5mdXRfYmxvY2tpbmcgPSBpc190cnVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9sb2dfdHJhY2ViYWNrKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9sb2dfdGIpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9sb29wKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9sb29wID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9sb29wKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfbG9vcDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfY2FsbGJhY2tzKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9jYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X2NhbGxiYWNrczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfcmVzdWx0KEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X3Jlc3VsdCk7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X3Jlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfZXhjZXB0aW9uKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9leGNlcHRpb24gPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X2V4Y2VwdGlvbjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfc291cmNlX3RyYWNlYmFjayhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfc291cmNlX3RiID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9zb3VyY2VfdGIpOworICAgIHJldHVybiBmdXQtPmZ1dF9zb3VyY2VfdGI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X3N0YXRlKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIF9QeV9JREVOVElGSUVSKFBFTkRJTkcpOworICAgIF9QeV9JREVOVElGSUVSKENBTkNFTExFRCk7CisgICAgX1B5X0lERU5USUZJRVIoRklOSVNIRUQpOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworCisgICAgc3dpdGNoIChmdXQtPmZ1dF9zdGF0ZSkgeworICAgIGNhc2UgU1RBVEVfUEVORElORzoKKyAgICAgICAgcmV0ID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfUEVORElORyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVEVfQ0FOQ0VMTEVEOgorICAgICAgICByZXQgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9DQU5DRUxMRUQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRFX0ZJTklTSEVEOgorICAgICAgICByZXQgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9GSU5JU0hFRCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCAoMCk7CisgICAgfQorICAgIFB5X0lOQ1JFRihyZXQpOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5fcmVwcl9pbmZvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mb19pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYTY5ZTkwMWJkMTc2Y2ZiIGlucHV0PWYyMTUwNGQ4ZTJhZTFjYTJdKi8KK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgYXN5bmNpb19mdXR1cmVfcmVwcl9pbmZvX2Z1bmMsIHNlbGYsIE5VTEwpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuX3NjaGVkdWxlX2NhbGxiYWNrcworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3NfaW1wbChGdXR1cmVPYmogKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWU4OTU4ZDg5ZWExYzVkYyBpbnB1dD00ZjVmMjk1ZjI2M2Y0YTg4XSovCit7CisgICAgaW50IHJldCA9IGZ1dHVyZV9zY2hlZHVsZV9jYWxsYmFja3Moc2VsZik7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfcmVwcihGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfcmVwcl9pbmZvKTsKKworICAgIFB5T2JqZWN0ICpfcmVwcl9pbmZvID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX3JlcHJfaW5mbyk7ICAvLyBib3Jyb3dlZAorICAgIGlmIChfcmVwcl9pbmZvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnJpbmZvID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKFB5T2JqZWN0KilmdXQsIF9yZXByX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKHJpbmZvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnNwID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiAiKTsKKyAgICBpZiAoc3AgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYocmluZm8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqcmluZm9fcyA9IFB5VW5pY29kZV9Kb2luKHNwLCByaW5mbyk7CisgICAgUHlfREVDUkVGKHNwKTsKKyAgICBQeV9ERUNSRUYocmluZm8pOworICAgIGlmIChyaW5mb19zID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnJzdHIgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0eXBlX25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShmdXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyIpOworICAgIGlmICh0eXBlX25hbWUgIT0gTlVMTCkgeworICAgICAgICByc3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlUyAlUz4iLCB0eXBlX25hbWUsIHJpbmZvX3MpOworICAgICAgICBQeV9ERUNSRUYodHlwZV9uYW1lKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHJpbmZvX3MpOworICAgIHJldHVybiByc3RyOworfQorCitzdGF0aWMgdm9pZAorRnV0dXJlT2JqX2ZpbmFsaXplKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIF9QeV9JREVOVElGSUVSKGNhbGxfZXhjZXB0aW9uX2hhbmRsZXIpOworICAgIF9QeV9JREVOVElGSUVSKG1lc3NhZ2UpOworICAgIF9QeV9JREVOVElGSUVSKGV4Y2VwdGlvbik7CisgICAgX1B5X0lERU5USUZJRVIoZnV0dXJlKTsKKyAgICBfUHlfSURFTlRJRklFUihzb3VyY2VfdHJhY2ViYWNrKTsKKworICAgIGlmICghZnV0LT5mdXRfbG9nX3RiKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KGZ1dC0+ZnV0X2V4Y2VwdGlvbiAhPSBOVUxMKTsKKyAgICBmdXQtPmZ1dF9sb2dfdGIgPSAwOzsKKworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIFB5T2JqZWN0ICpjb250ZXh0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdHlwZV9uYW1lID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbWVzc2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgY29udGV4dCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICB0eXBlX25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShmdXQpLCAiX19uYW1lX18iKTsKKyAgICBpZiAodHlwZV9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiVTIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkIiwgdHlwZV9uYW1lKTsKKyAgICBpZiAobWVzc2FnZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfbWVzc2FnZSwgbWVzc2FnZSkgPCAwIHx8CisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX2V4Y2VwdGlvbiwgZnV0LT5mdXRfZXhjZXB0aW9uKSA8IDAgfHwKKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfZnV0dXJlLCAoUHlPYmplY3QqKWZ1dCkgPCAwKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgaWYgKGZ1dC0+ZnV0X3NvdXJjZV90YiAhPSBOVUxMKSB7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9zb3VyY2VfdHJhY2ViYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnV0LT5mdXRfc291cmNlX3RiKSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2NhbGxfZXhjZXB0aW9uX2hhbmRsZXIpOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIGNvbnRleHQpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmdW5jKTsKKyAgICAgICAgfQorICAgIH0KKworZmluYWxseToKKyAgICBQeV9DTEVBUihjb250ZXh0KTsKKyAgICBQeV9DTEVBUih0eXBlX25hbWUpOworICAgIFB5X0NMRUFSKG1lc3NhZ2UpOworICAgIFB5X0NMRUFSKGZ1bmMpOworICAgIFB5X0NMRUFSKHJlcyk7CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgRnV0dXJlVHlwZV9hc19hc3luYyA9IHsKKyAgICAodW5hcnlmdW5jKWZ1dHVyZV9uZXdfaXRlciwgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKK3N0YXRpYyBQeU1ldGhvZERlZiBGdXR1cmVUeXBlX21ldGhvZHNbXSA9IHsKKyAgICBfQVNZTkNJT19GVVRVUkVfUkVTVUxUX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9FWENFUFRJT05fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1NFVF9SRVNVTFRfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1NFVF9FWENFUFRJT05fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0FERF9ET05FX0NBTExCQUNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9SRU1PVkVfRE9ORV9DQUxMQkFDS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfQ0FOQ0VMX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9DQU5DRUxMRURfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0RPTkVfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX19SRVBSX0lORk9fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX19TQ0hFRFVMRV9DQUxMQkFDS1NfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworI2RlZmluZSBGVVRVUkVfQ09NTU9OX0dFVFNFVExJU1QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX3N0YXRlIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X3N0YXRlLCBOVUxMLCBOVUxMfSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2Jsb2NraW5nLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRlcilGdXR1cmVPYmpfc2V0X2Jsb2NraW5nLCBOVUxMfSwgICAgICAgXAorICAgIHsiX2xvb3AiLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfbG9vcCwgTlVMTCwgTlVMTH0sICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX2NhbGxiYWNrcyIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9jYWxsYmFja3MsIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgXAorICAgIHsiX3Jlc3VsdCIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9yZXN1bHQsIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgICAgICAgXAorICAgIHsiX2V4Y2VwdGlvbiIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9leGNlcHRpb24sIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgXAorICAgIHsiX2xvZ190cmFjZWJhY2siLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfbG9nX3RyYWNlYmFjaywgTlVMTCwgTlVMTH0sICAgICAgXAorICAgIHsiX3NvdXJjZV90cmFjZWJhY2siLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfc291cmNlX3RyYWNlYmFjaywgTlVMTCwgTlVMTH0sCisKK3N0YXRpYyBQeUdldFNldERlZiBGdXR1cmVUeXBlX2dldHNldGxpc3RbXSA9IHsKKyAgICBGVVRVUkVfQ09NTU9OX0dFVFNFVExJU1QKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyB2b2lkIEZ1dHVyZU9ial9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBGdXR1cmVUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfYXN5bmNpby5GdXR1cmUiLAorICAgIHNpemVvZihGdXR1cmVPYmopLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgLnRwX2RlYWxsb2MgPSBGdXR1cmVPYmpfZGVhbGxvYywKKyAgICAudHBfYXNfYXN5bmMgPSAmRnV0dXJlVHlwZV9hc19hc3luYywKKyAgICAudHBfcmVwciA9IChyZXByZnVuYylGdXR1cmVPYmpfcmVwciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLAorICAgIC50cF9kb2MgPSBfYXN5bmNpb19GdXR1cmVfX19pbml0X19fX2RvY19fLAorICAgIC50cF90cmF2ZXJzZSA9ICh0cmF2ZXJzZXByb2MpRnV0dXJlT2JqX3RyYXZlcnNlLAorICAgIC50cF9jbGVhciA9IChpbnF1aXJ5KUZ1dHVyZU9ial9jbGVhciwKKyAgICAudHBfd2Vha2xpc3RvZmZzZXQgPSBvZmZzZXRvZihGdXR1cmVPYmosIGZ1dF93ZWFrcmVmbGlzdCksCisgICAgLnRwX2l0ZXIgPSAoZ2V0aXRlcmZ1bmMpZnV0dXJlX25ld19pdGVyLAorICAgIC50cF9tZXRob2RzID0gRnV0dXJlVHlwZV9tZXRob2RzLAorICAgIC50cF9nZXRzZXQgPSBGdXR1cmVUeXBlX2dldHNldGxpc3QsCisgICAgLnRwX2RpY3RvZmZzZXQgPSBvZmZzZXRvZihGdXR1cmVPYmosIGRpY3QpLAorICAgIC50cF9pbml0ID0gKGluaXRwcm9jKV9hc3luY2lvX0Z1dHVyZV9fX2luaXRfXywKKyAgICAudHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXcsCisgICAgLnRwX2ZpbmFsaXplID0gKGRlc3RydWN0b3IpRnV0dXJlT2JqX2ZpbmFsaXplLAorfTsKKworI2RlZmluZSBGdXR1cmVfQ2hlY2tFeGFjdChvYmopIChQeV9UWVBFKG9iaikgPT0gJkZ1dHVyZVR5cGUpCisKK3N0YXRpYyBpbmxpbmUgaW50CitmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKEZ1dHVyZV9DaGVja0V4YWN0KGZ1dCkpIHsKKyAgICAgICAgcmV0dXJuIGZ1dHVyZV9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGBmdXRgIGlzIGEgc3ViY2xhc3Mgb2YgRnV0dXJlICovCisgICAgICAgIFB5T2JqZWN0ICpyZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgKFB5T2JqZWN0KilmdXQsICZQeUlkX19zY2hlZHVsZV9jYWxsYmFja3MsIE5VTEwpOworICAgICAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihyZXQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitGdXR1cmVPYmpfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBGdXR1cmVPYmogKmZ1dCA9IChGdXR1cmVPYmogKilzZWxmOworCisgICAgaWYgKEZ1dHVyZV9DaGVja0V4YWN0KGZ1dCkpIHsKKyAgICAgICAgLyogV2hlbiBmdXQgaXMgc3ViY2xhc3Mgb2YgRnV0dXJlLCBmaW5hbGl6ZXIgaXMgY2FsbGVkIGZyb20KKyAgICAgICAgICogc3VidHlwZV9kZWFsbG9jLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhzZWxmKSA8IDApIHsKKyAgICAgICAgICAgIC8vIHJlc3VycmVjdGVkLgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGZ1dC0+ZnV0X3dlYWtyZWZsaXN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcyhzZWxmKTsKKyAgICB9CisKKyAgICAodm9pZClGdXR1cmVPYmpfY2xlYXIoZnV0KTsKKyAgICBQeV9UWVBFKGZ1dCktPnRwX2ZyZWUoZnV0KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKiogRnV0dXJlIEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEZ1dHVyZU9iaiAqZnV0dXJlOworfSBmdXR1cmVpdGVyb2JqZWN0OworCitzdGF0aWMgdm9pZAorRnV0dXJlSXRlcl9kZWFsbG9jKGZ1dHVyZWl0ZXJvYmplY3QgKml0KQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soaXQpOworICAgIFB5X1hERUNSRUYoaXQtPmZ1dHVyZSk7CisgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfaXRlcm5leHQoZnV0dXJlaXRlcm9iamVjdCAqaXQpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBGdXR1cmVPYmogKmZ1dCA9IGl0LT5mdXR1cmU7CisKKyAgICBpZiAoZnV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlID09IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgaWYgKCFmdXQtPmZ1dF9ibG9ja2luZykgeworICAgICAgICAgICAgZnV0LT5mdXRfYmxvY2tpbmcgPSAxOworICAgICAgICAgICAgUHlfSU5DUkVGKGZ1dCk7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZnV0OworICAgICAgICB9CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Bc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ5aWVsZCBmcm9tIHdhc24ndCB1c2VkIHdpdGggZnV0dXJlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IF9hc3luY2lvX0Z1dHVyZV9yZXN1bHRfaW1wbChmdXQpOworICAgIGlmIChyZXMgIT0gTlVMTCkgeworICAgICAgICAvKiBUaGUgcmVzdWx0IG9mIHRoZSBGdXR1cmUgaXMgbm90IGFuIGV4Y2VwdGlvbi4gKi8KKyAgICAgICAgaWYgKF9QeUdlbl9TZXRTdG9wSXRlcmF0aW9uVmFsdWUocmVzKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgfQorCisgICAgaXQtPmZ1dHVyZSA9IE5VTEw7CisgICAgUHlfREVDUkVGKGZ1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX3NlbmQoZnV0dXJlaXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICAvKiBGdXR1cmUuX19pdGVyX18gZG9lc24ndCBjYXJlIGFib3V0IHZhbHVlcyB0aGF0IGFyZSBwdXNoZWQgdG8gdGhlCisgICAgICogZ2VuZXJhdG9yLCBpdCBqdXN0IHJldHVybnMgInNlbGYucmVzdWx0KCkuCisgICAgICovCisgICAgcmV0dXJuIEZ1dHVyZUl0ZXJfaXRlcm5leHQoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX3Rocm93KGZ1dHVyZWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp0eXBlPU5VTEwsICp2YWw9TlVMTCwgKnRiPU5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9PIiwgJnR5cGUsICZ2YWwsICZ0YikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHZhbCA9PSBQeV9Ob25lKSB7CisgICAgICAgIHZhbCA9IE5VTEw7CisgICAgfQorICAgIGlmICh0YiA9PSBQeV9Ob25lKSB7CisgICAgICAgIHRiID0gTlVMTDsKKyAgICB9IGVsc2UgaWYgKHRiICE9IE5VTEwgJiYgIVB5VHJhY2VCYWNrX0NoZWNrKHRiKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAidGhyb3coKSB0aGlyZCBhcmd1bWVudCBtdXN0IGJlIGEgdHJhY2ViYWNrIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRih0eXBlKTsKKyAgICBQeV9YSU5DUkVGKHZhbCk7CisgICAgUHlfWElOQ1JFRih0Yik7CisKKyAgICBpZiAoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSkgeworICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJnR5cGUsICZ2YWwsICZ0Yik7CisgICAgfSBlbHNlIGlmIChQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKHR5cGUpKSB7CisgICAgICAgIGlmICh2YWwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlIGV4Y2VwdGlvbiBtYXkgbm90IGhhdmUgYSBzZXBhcmF0ZSB2YWx1ZSIpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIHZhbCA9IHR5cGU7CisgICAgICAgIHR5cGUgPSBQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKHR5cGUpOworICAgICAgICBQeV9JTkNSRUYodHlwZSk7CisgICAgICAgIGlmICh0YiA9PSBOVUxMKQorICAgICAgICAgICAgdGIgPSBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sodmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbnMgbXVzdCBiZSBjbGFzc2VzIGRlcml2aW5nIEJhc2VFeGNlcHRpb24gb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlcyBvZiBzdWNoIGEgY2xhc3MiKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisKKyAgICBQeUVycl9SZXN0b3JlKHR5cGUsIHZhbCwgdGIpOworCisgICAgcmV0dXJuIEZ1dHVyZUl0ZXJfaXRlcm5leHQoc2VsZik7CisKKyAgZmFpbDoKKyAgICBQeV9ERUNSRUYodHlwZSk7CisgICAgUHlfWERFQ1JFRih2YWwpOworICAgIFB5X1hERUNSRUYodGIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlSXRlcl9jbG9zZShmdXR1cmVpdGVyb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZUl0ZXJfdHJhdmVyc2UoZnV0dXJlaXRlcm9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGl0LT5mdXR1cmUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgRnV0dXJlSXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3NlbmQsIE1FVEhfTywgTlVMTH0sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3Rocm93LCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pRnV0dXJlSXRlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRnV0dXJlSXRlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9hc3luY2lvLkZ1dHVyZUl0ZXIiLAorICAgIC50cF9iYXNpY3NpemUgPSBzaXplb2YoZnV0dXJlaXRlcm9iamVjdCksCisgICAgLnRwX2l0ZW1zaXplID0gMCwKKyAgICAudHBfZGVhbGxvYyA9IChkZXN0cnVjdG9yKUZ1dHVyZUl0ZXJfZGVhbGxvYywKKyAgICAudHBfZ2V0YXR0cm8gPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylGdXR1cmVJdGVyX3RyYXZlcnNlLAorICAgIC50cF9pdGVyID0gUHlPYmplY3RfU2VsZkl0ZXIsCisgICAgLnRwX2l0ZXJuZXh0ID0gKGl0ZXJuZXh0ZnVuYylGdXR1cmVJdGVyX2l0ZXJuZXh0LAorICAgIC50cF9tZXRob2RzID0gRnV0dXJlSXRlcl9tZXRob2RzLAorfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9uZXdfaXRlcihQeU9iamVjdCAqZnV0KQoreworICAgIGZ1dHVyZWl0ZXJvYmplY3QgKml0OworCisgICAgaWYgKCFQeU9iamVjdF9UeXBlQ2hlY2soZnV0LCAmRnV0dXJlVHlwZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyhmdXR1cmVpdGVyb2JqZWN0LCAmRnV0dXJlSXRlclR5cGUpOworICAgIGlmIChpdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0KTsKKyAgICBpdC0+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/IE5VTEwgOiAmY29uc3VtZWQpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY29kZV9wYWdlX2RlY29kZQogICAgIGNvZGVwYWdlOiBpbnQKICAgICBkYXRhOiBQeV9idWZmZXIKQEAgLTY1MSw3ICs2NjYsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC03MTgsNyArNzMzLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfN19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTcyNiwyNCArNzQxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1mZDkxYTc4ZjEwM2IwNDIxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1kMWE0NzU3OWU3OWNiZTE1XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGNyhzdHIsIDAsIDAsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfOF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTc1MSwxOSArNzU3LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD0yYzIyZDQwNTMyZjA3MWYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD00MmUzYmE3M2M0MzkyZWVmXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc3RyLCAidXRmLTgiLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLyogVGhpcyB2ZXJzaW9uIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYnl0ZW9yZGVyIHBhcmFtZXRlciBvZiB0aGUKQEAgLTc3NSw3ICs3NzIsNyBAQAogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIGJ5dGVvcmRlcjogaW50ID0gMAogICAgIC8KQEAgLTc4NCwyNCArNzgxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PTM5MzVhNDg5YjJkNTM4NWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PWZmNDY0MTZiMDRlZGI5NDRdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9sZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTgwOSwyNCArNzk3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWJjMjdkZjA1ZDFkMjBkZmVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWNiMzg1NDU1ZWE4ZjJmZTBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfYmVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04MzQsMTkgKzgxMywxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD01YTY5ZDQxMTI3NjM0NjJiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD05MTE5OTk3MDY2YmRhZWZkXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qIFRoaXMgdmVyc2lvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJ5dGVvcmRlciBwYXJhbWV0ZXIgb2YgdGhlCkBAIC04NTgsNyArODI4LDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBieXRlb3JkZXI6IGludCA9IDAKICAgICAvCkBAIC04NjcsMjQgKzgzNywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD00MzRhMWVmYTQ5MmI4ZDU4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD1jNWU3N2RhODJmYmU1YzJhXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfbGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04OTIsMjQgKzg1MywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD1kZmEyZDdkYzc4Yjk5NDIyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD05OTkzYjI1ZmUwODc3ODQ4XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2JlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTE3LDI0ICs4NjksMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9NDU5NTYxN2IxODE2OTAwMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9ZDNlMGNjYWEwMjkyMDQzMV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnVuaWNvZGVfZXNjYXBlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTQyLDI0ICs4ODUsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTgyNzM1MDZmMTQwNzY5MTJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTY1ZDllZWZjYTY1YjQ1NWFdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05NjcsMjQgKzkwMSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD0xODE3NTVkNWRmYWNlZjNjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD01YWEzM2U0YTEzMzM5MWFiXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubGF0aW5fMV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTk5MiwyNCArOTE3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9ZjAzZjZkY2YxZDg0YmVlNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9MzBiMTFjOWU0OWE2NTE1MF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5hc2NpaV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTEwMTcsMjQgKzkzMywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ZDg3ZTI1YTEwYTU5M2ZlZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ODQzYTFkMjY4ZTZkZmE4ZV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoc3RyLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY2hhcm1hcF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIG1hcHBpbmc6IG9iamVjdCA9IE5VTEwKICAgICAvCkBAIC0xMDQzLDIyICs5NTAsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICptYXBwaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9ODVmNDE3MjY2MWU4ZGFkOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9MDc1MmNkZTA3YTZkNmQwMF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCiAgICAgaWYgKG1hcHBpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMTA3NCwzNiArOTcyLDQyIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKG1hcCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubWJjc19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD02NWMwOWVlMWU0MjAzMjYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD1kZTQ3MWUwODE1OTQ3NTUzXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Cit9CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm9lbV9lbmNvZGUKKyAgICBzdHI6IHVuaWNvZGUKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjVkNTk4MmM3MzdkZTY0OSBpbnB1dD0zZmM1ZjAwMjhhYWQzY2RhXSovCit7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9PRU1DUCwgc3RyLCBlcnJvcnMpLAorICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlCiAgICAgY29kZV9wYWdlOiBpbnQKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTExMTEsMjQgKzEwMTUsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Yzg1NjJlYzQ2MGMyZTMwOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Nzg2NDIxYWU2MTdkNjgwYl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMjE2LDYgKzExMDksOCBAQAogICAgIF9DT0RFQ1NfUkVBREJVRkZFUl9FTkNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX1JFR0lTVEVSX0VSUk9SX01FVEhPRERFRgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggMTBmYmNmZS4uNjYwODc5OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC04MSw3ICs4MSw3IEBACiAgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7ICAgICAgIC8qIDAgPD0gbGVmdGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXg7ICAgICAgLyogMCA8PSByaWdodGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBzaXplX3Qgc3RhdGU7ICAgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGluZGljZXMgbW92ZSAqLwotICAgIFB5X3NzaXplX3QgbWF4bGVuOworICAgIFB5X3NzaXplX3QgbWF4bGVuOyAgICAgICAgICAvKiBtYXhsZW4gaXMgLTEgZm9yIHVuYm91bmRlZCBkZXF1ZXMgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IGRlcXVlb2JqZWN0OwogCkBAIC0xMDgsMjkgKzEwOCwxOCBAQAogI2RlZmluZSBDSEVDS19OT1RfRU5EKGxpbmspCiAjZW5kaWYKIAotLyogVG8gcHJldmVudCBsZW4gZnJvbSBvdmVyZmxvd2luZyBQWV9TU0laRV9UX01BWCwgd2UgcmVmdXNlIHRvCi0gICBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LgotKi8KLQotI2RlZmluZSBNQVhfREVRVUVfTEVOIChQWV9TU0laRV9UX01BWCAtIDMqQkxPQ0tMRU4pCi0KIC8qIEEgc2ltcGxlIGZyZWVsaXN0aW5nIHNjaGVtZSBpcyB1c2VkIHRvIG1pbmltaXplIGNhbGxzIHRvIHRoZSBtZW1vcnkKICAgIGFsbG9jYXRvci4gIEl0IGFjY29tbW9kYXRlcyBjb21tb24gdXNlIGNhc2VzIHdoZXJlIG5ldyBibG9ja3MgYXJlIGJlaW5nCiAgICBhZGRlZCBhdCBhYm91dCB0aGUgc2FtZSByYXRlIGFzIG9sZCBibG9ja3MgYXJlIGJlaW5nIGZyZWVkLgogICovCiAKLSNkZWZpbmUgTUFYRlJFRUJMT0NLUyAxMAorI2RlZmluZSBNQVhGUkVFQkxPQ0tTIDE2CiBzdGF0aWMgUHlfc3NpemVfdCBudW1mcmVlYmxvY2tzID0gMDsKIHN0YXRpYyBibG9jayAqZnJlZWJsb2Nrc1tNQVhGUkVFQkxPQ0tTXTsKIAogc3RhdGljIGJsb2NrICoKLW5ld2Jsb2NrKFB5X3NzaXplX3QgbGVuKSB7CituZXdibG9jayh2b2lkKSB7CiAgICAgYmxvY2sgKmI7Ci0gICAgaWYgKGxlbiA+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+ZGVmYXVsdF9mYWN0b3J5KTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCAiKCkiKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjIzNSwxMyArMjMwMCwxNSBAQAogCiAgICAgICAgICAgICBvbGR2YWwgPSBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgaGFzaCk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG5ld3ZhbCA9IFB5TnVtYmVyX0FkZChvbGR2YWwsIG9uZSk7CiAgICAgICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBuZXd2YWwsIGhhc2gpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgICAgICAgICBQeV9DTEVBUihuZXd2YWwpOwogICAgICAgICAgICAgfQpAQCAtMjI2Nyw3ICsyMzM0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihvbGR2YWwpOwogICAgICAgICAgICAgaWYgKG5ld3ZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpID09IC0xKQorICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEl0ZW0obWFwcGluZywga2V5LCBuZXd2YWwpIDwgMCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFB5X0NMRUFSKG5ld3ZhbCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Nzdi5jIGIvTW9kdWxlcy9fY3N2LmMKaW5kZXggYjQyODI3OS4uN2E3ODU0MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3N2LmMKKysrIGIvTW9kdWxlcy9fY3N2LmMKQEAgLTYwLDEwICs2MCwxMCBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUXVvdGVTdHlsZSBzdHlsZTsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiB9IFN0eWxlRGVzYzsKIAotc3RhdGljIFN0eWxlRGVzYyBxdW90ZV9zdHlsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBTdHlsZURlc2MgcXVvdGVfc3R5bGVzW10gPSB7CiAgICAgeyBRVU9URV9NSU5JTUFMLCAgICAiUVVPVEVfTUlOSU1BTCIgfSwKICAgICB7IFFVT1RFX0FMTCwgICAgICAgICJRVU9URV9BTEwiIH0sCiAgICAgeyBRVU9URV9OT05OVU1FUklDLCAiUVVPVEVfTk9OTlVNRVJJQyIgfSwKQEAgLTI4Niw3ICsyODYsNyBAQAogc3RhdGljIGludAogZGlhbGVjdF9jaGVja19xdW90aW5nKGludCBxdW90aW5nKQogewotICAgIFN0eWxlRGVzYyAqcXM7CisgICAgY29uc3QgU3R5bGVEZXNjICpxczsKIAogICAgIGZvciAocXMgPSBxdW90ZV9zdHlsZXM7IHFzLT5uYW1lOyBxcysrKSB7CiAgICAgICAgIGlmICgoaW50KXFzLT5zdHlsZSA9PSBxdW90aW5nKQpAQCAtNTE4LDE1ICs1MTgsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY2FsbF9kaWFsZWN0KFB5T2JqZWN0ICpkaWFsZWN0X2luc3QsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKmN0b3JfYXJnczsKLSAgICBQeU9iamVjdCAqZGlhbGVjdDsKLQotICAgIGN0b3JfYXJncyA9IFB5X0J1aWxkVmFsdWUoZGlhbGVjdF9pbnN0ID8gIihPKSIgOiAiKCkiLCBkaWFsZWN0X2luc3QpOwotICAgIGlmIChjdG9yX2FyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZGlhbGVjdCA9IFB5T2JqZWN0X0NhbGwoKFB5T2JqZWN0ICopJkRpYWxlY3RfVHlwZSwgY3Rvcl9hcmdzLCBrd2FyZ3MpOwotICAgIFB5X0RFQ1JFRihjdG9yX2FyZ3MpOwotICAgIHJldHVybiBkaWFsZWN0OworICAgIFB5T2JqZWN0ICp0eXBlID0gKFB5T2JqZWN0ICopJkRpYWxlY3RfVHlwZTsKKyAgICBpZiAoZGlhbGVjdF9pbnN0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHR5cGUsICZkaWFsZWN0X2luc3QsIDEsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCh0eXBlLCBOVUxMLCAwLCBrd2FyZ3MpOworICAgIH0KIH0KIAogLyoKQEAgLTE2NDgsNyArMTY0Niw3IEBACiBQeUluaXRfX2Nzdih2b2lkKQogewogICAgIFB5T2JqZWN0ICptb2R1bGU7Ci0gICAgU3R5bGVEZXNjICpzdHlsZTsKKyAgICBjb25zdCBTdHlsZURlc2MgKnN0eWxlOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmRGlhbGVjdF9UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKaW5kZXggMjkzNTI5Mi4uYjNhOTU4MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCkBAIC0xMTEsMTIgKzExMSw2IEBACiAjaWZuZGVmIElTX0lOVFJFU09VUkNFCiAjZGVmaW5lIElTX0lOVFJFU09VUkNFKHgpICgoKHNpemVfdCkoeCkgPj4gMTYpID09IDApCiAjZW5kaWYKLSMgaWZkZWYgX1dJTjMyX1dDRQotLyogVW5saWtlIGRlc2t0b3AgV2luZG93cywgV2luQ0UgaGFzIGJvdGggVyBhbmQgQSB2YXJpYW50cyBvZgotICAgR2V0UHJvY0FkZHJlc3MsIGJ1dCB0aGUgZGVmYXVsdCBXIHZlcnNpb24gaXMgbm90IHdoYXQgd2Ugd2FudCAqLwotIyAgdW5kZWYgR2V0UHJvY0FkZHJlc3MKLSMgIGRlZmluZSBHZXRQcm9jQWRkcmVzcyBHZXRQcm9jQWRkcmVzc0EKLSMgZW5kaWYKICNlbHNlCiAjaW5jbHVkZSAiY3R5cGVzX2RsZmNuLmgiCiAjZW5kaWYKQEAgLTQzNSw3ICs0MjksNyBAQAogICAgIHJldHVybiBTdHJ1Y3RVbmlvblR5cGVfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMsIDApOwogfQogCi1zdGF0aWMgY2hhciBmcm9tX2FkZHJlc3NfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9hZGRyZXNzX2RvY1tdID0KICJDLmZyb21fYWRkcmVzcyhpbnRlZ2VyKSAtPiBDIGluc3RhbmNlXG5hY2Nlc3MgYSBDIGluc3RhbmNlIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcyI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTMsNyArNDQ3LDcgQEAKICAgICByZXR1cm4gUHlDRGF0YV9BdEFkZHJlc3ModHlwZSwgYnVmKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9idWZmZXJfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9idWZmZXJfZG9jW10gPQogIkMuZnJvbV9idWZmZXIob2JqZWN0LCBvZmZzZXQ9MCkgLT4gQyBpbnN0YW5jZVxuY3JlYXRlIGEgQyBpbnN0YW5jZSBmcm9tIGEgd3JpdGVhYmxlIGJ1ZmZlciI7CiAKIHN0YXRpYyBpbnQKQEAgLTUyNCw3ICs1MTgsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fYnVmZmVyX2NvcHlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJvbV9idWZmZXJfY29weV9kb2NbXSA9CiAiQy5mcm9tX2J1ZmZlcl9jb3B5KG9iamVjdCwgb2Zmc2V0PTApIC0+IEMgaW5zdGFuY2VcbmNyZWF0ZSBhIEMgaW5zdGFuY2UgZnJvbSBhIHJlYWRhYmxlIGJ1ZmZlciI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01NjYsNyArNTYwLDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBpbl9kbGxfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgaW5fZGxsX2RvY1tdID0KICJDLmluX2RsbChkbGwsIG5hbWUpIC0+IEMgaW5zdGFuY2VcbmFjY2VzcyBhIEMgaW5zdGFuY2UgaW4gYSBkbGwiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjIzLDcgKzYxNyw3IEBACiAgICAgcmV0dXJuIFB5Q0RhdGFfQXRBZGRyZXNzKHR5cGUsIGFkZHJlc3MpOwogfQogCi1zdGF0aWMgY2hhciBmcm9tX3BhcmFtX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fcGFyYW1fZG9jW10gPQogIkNvbnZlcnQgYSBQeXRob24gb2JqZWN0IGludG8gYSBmdW5jdGlvbiBjYWxsIHBhcmFtZXRlci4iOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ4OSw3ICsxNDgzLDcgQEAKIAogKi8KIAotc3RhdGljIGNoYXIgKlNJTVBMRV9UWVBFX0NIQVJTID0gImNiQmhIaUlsTGRmdXpacVFQWE92P2ciOworc3RhdGljIGNvbnN0IGNoYXIgU0lNUExFX1RZUEVfQ0hBUlNbXSA9ICJjYkJoSGlJbExkZnV6WnFRUFhPdj9nIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGNfd2NoYXJfcF9mcm9tX3BhcmFtKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUpCkBAIC0yNDE0LDcgKzI0MDgsNyBAQAogICAgIGNoYXIgKmNwID0gc3RyaW5nOwogICAgIHNpemVfdCBieXRlc19sZWZ0OwogCi0gICAgYXNzZXJ0KHNpemVvZihzdHJpbmcpIC0gMSA+IHNpemVvZihQeV9zc2l6ZV90KSAqIDIpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2Yoc3RyaW5nKSAtIDEgPiBzaXplb2YoUHlfc3NpemVfdCkgKiAyKTsKICAgICBjcCArPSBzcHJpbnRmKGNwLCAiJXgiLCBQeV9TQUZFX0RPV05DQVNUKGluZGV4LCBQeV9zc2l6ZV90LCBpbnQpKTsKICAgICB3aGlsZSAodGFyZ2V0LT5iX2Jhc2UpIHsKICAgICAgICAgYnl0ZXNfbGVmdCA9IHNpemVvZihzdHJpbmcpIC0gKGNwIC0gc3RyaW5nKSAtIDE7CkBAIC0zMDc1LDcgKzMwNjksNyBAQAogfTsKIAogI2lmZGVmIE1TX1dJTjMyCi1zdGF0aWMgUFBST0MgRmluZEFkZHJlc3Modm9pZCAqaGFuZGxlLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHlwZSkKK3N0YXRpYyBQUFJPQyBGaW5kQWRkcmVzcyh2b2lkICpoYW5kbGUsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0eXBlKQogewogI2lmZGVmIE1TX1dJTjY0CiAgICAgLyogd2luNjQgaGFzIG5vIHN0ZGNhbGwgY2FsbGluZyBjb252LCBzbyBpdCBzaG91bGQKQEAgLTMyMDksNyArMzIwMyw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9nZXRfbmFtZShQeU9iamVjdCAqb2JqLCBjaGFyICoqcG5hbWUpCitfZ2V0X25hbWUoUHlPYmplY3QgKm9iaiwgY29uc3QgY2hhciAqKnBuYW1lKQogewogI2lmZGVmIE1TX1dJTjMyCiAgICAgaWYgKFB5TG9uZ19DaGVjayhvYmopKSB7CkBAIC0zMjM3LDcgKzMyMzEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q0Z1bmNQdHJfRnJvbURsbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgICAgaW50ICgqIGFkZHJlc3MpKHZvaWQpOwogICAgIFB5T2JqZWN0ICpmdHVwbGU7CiAgICAgUHlPYmplY3QgKmRsbDsKQEAgLTUxMjcsMTMgKzUxMjEsMTIgQEAKIAogI2lmZGVmIE1TX1dJTjMyCiAKLXN0YXRpYyBjaGFyIGNvbWVycm9yX2RvY1tdID0gIlJhaXNlZCB3aGVuIGEgQ09NIG1ldGhvZCBjYWxsIGZhaWxlZC4iOworc3RhdGljIGNvbnN0IGNoYXIgY29tZXJyb3JfZG9jW10gPSAiUmFpc2VkIHdoZW4gYSBDT00gbWV0aG9kIGNhbGwgZmFpbGVkLiI7CiAKIGludAogY29tZXJyb3JfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpocmVzdWx0LCAqdGV4dCwgKmRldGFpbHM7Ci0gICAgUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpic2VsZjsKICAgICBQeU9iamVjdCAqYTsKICAgICBpbnQgc3RhdHVzOwogCkBAIC01MTYwLDkgKzUxNTMsOCBAQAogICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHNlbGYsICJkZXRhaWxzIiwgZGV0YWlscykgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBic2VsZiA9IChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmOwogICAgIFB5X0lOQ1JFRihhcmdzKTsKLSAgICBQeV9TRVRSRUYoYnNlbGYtPmFyZ3MsIGFyZ3MpOworICAgIFB5X1NFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5hcmdzLCBhcmdzKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNTQ5MiwxNCArNTQ4NCwxNCBAQAogI2VuZGlmCiAKIC8qIElmIFJUTERfTE9DQUwgaXMgbm90IGRlZmluZWQgKFdpbmRvd3MhKSwgc2V0IGl0IHRvIHplcm8uICovCi0jaWZuZGVmIFJUTERfTE9DQUwKKyNpZiAhSEFWRV9ERUNMX1JUTERfTE9DQUwKICNkZWZpbmUgUlRMRF9MT0NBTCAwCiAjZW5kaWYKIAogLyogSWYgUlRMRF9HTE9CQUwgaXMgbm90IGRlZmluZWQgKGN5Z3dpbiksIHNldCBpdCB0byB0aGUgc2FtZSB2YWx1ZSBhcwogICAgUlRMRF9MT0NBTC4KICovCi0jaWZuZGVmIFJUTERfR0xPQkFMCisjaWYgIUhBVkVfREVDTF9SVExEX0dMT0JBTAogI2RlZmluZSBSVExEX0dMT0JBTCBSVExEX0xPQ0FMCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCmluZGV4IDNjN2Y4OTIuLjYyOWRkZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKQEAgLTIzMywxNiArMjMzLDE1IEBACiAgICAgcmV0dXJuICgqZnVuYykodGFibGUpOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLUVYUE9SVChQWV9MT05HX0xPTkcpIF90ZXN0ZnVuY19xX2JoaWxmZHEoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZCwgUFlfTE9OR19MT05HIHEpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfcV9iaGlsZmRxKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkLCBsb25nIGxvbmcgcSkKIHsKLSAgICByZXR1cm4gKFBZX0xPTkdfTE9ORykoYiArIGggKyBpICsgbCArIGYgKyBkICsgcSk7CisgICAgcmV0dXJuIChsb25nIGxvbmcpKGIgKyBoICsgaSArIGwgKyBmICsgZCArIHEpOwogfQogCi1FWFBPUlQoUFlfTE9OR19MT05HKSBfdGVzdGZ1bmNfcV9iaGlsZmQoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwgZG91YmxlIGQpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfcV9iaGlsZmQoc2lnbmVkIGNoYXIgYiwgc2hvcnQgaCwgaW50IGksIGxvbmcgbCwgZmxvYXQgZiwgZG91YmxlIGQpCiB7Ci0gICAgcmV0dXJuIChQWV9MT05HX0xPTkcpKGIgKyBoICsgaSArIGwgKyBmICsgZCk7CisgICAgcmV0dXJuIChsb25nIGxvbmcpKGIgKyBoICsgaSArIGwgKyBmICsgZCk7CiB9CiAKIEVYUE9SVChpbnQpIF90ZXN0ZnVuY19jYWxsYmFja19pX2lmKGludCB2YWx1ZSwgaW50ICgqZnVuYykoaW50KSkKQEAgLTI1NSwxMCArMjU0LDEwIEBACiAgICAgcmV0dXJuIHN1bTsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgX3Rlc3RmdW5jX2NhbGxiYWNrX3FfcWYoUFlfTE9OR19MT05HIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfTE9OR19MT05HICgqZnVuYykoUFlfTE9OR19MT05HKSkKK0VYUE9SVChsb25nIGxvbmcpIF90ZXN0ZnVuY19jYWxsYmFja19xX3FmKGxvbmcgbG9uZyB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyAoKmZ1bmMpKGxvbmcgbG9uZykpCiB7Ci0gICAgUFlfTE9OR19MT05HIHN1bSA9IDA7CisgICAgbG9uZyBsb25nIHN1bSA9IDA7CiAKICAgICB3aGlsZSAodmFsdWUgIT0gMCkgewogICAgICAgICBzdW0gKz0gZnVuYyh2YWx1ZSk7CkBAIC0yNjcsOCArMjY2LDYgQEAKICAgICByZXR1cm4gc3VtOwogfQogCi0jZW5kaWYKLQogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGNoYXIgKm5hbWU7CiAgICAgY2hhciAqdmFsdWU7CkBAIC0zODQsOCArMzgxLDggQEAKIHsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgbGFzdF90Zl9hcmdfczsKLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIGxhc3RfdGZfYXJnX3U7CitFWFBPUlQobG9uZyBsb25nKSBsYXN0X3RmX2FyZ19zOworRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgbGFzdF90Zl9hcmdfdTsKIAogc3RydWN0IEJJVFMgewogICAgIGludCBBOiAxLCBCOjIsIEM6MywgRDo0LCBFOiA1LCBGOiA2LCBHOiA3LCBIOiA4LCBJOiA5OwpAQCAtNDQ4LDggKzQ0NSw4IEBACiAgICAgeyBOVUxMLCBOVUxMLCAwLCBOVUxMfSwKIH07CiAKLSNkZWZpbmUgUyBsYXN0X3RmX2FyZ19zID0gKFBZX0xPTkdfTE9ORyljCi0jZGVmaW5lIFUgbGFzdF90Zl9hcmdfdSA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpYworI2RlZmluZSBTIGxhc3RfdGZfYXJnX3MgPSAobG9uZyBsb25nKWMKKyNkZWZpbmUgVSBsYXN0X3RmX2FyZ191ID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljCiAKIEVYUE9SVChzaWduZWQgY2hhcikgdGZfYihzaWduZWQgY2hhciBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBjaGFyKSB0Zl9CKHVuc2lnbmVkIGNoYXIgYykgeyBVOyByZXR1cm4gYy8zOyB9CkBAIC00NTksOCArNDU2LDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIHRmX0kodW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIHRmX2wobG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSB0Zl9MKHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSB0Zl9xKFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHRmX1EodW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgdGZfcShsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSB0Zl9RKHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgdGZfZihmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIHRmX2QoZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSB0Zl9EKGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNDc0LDggKzQ3MSw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSBfX3N0ZGNhbGwgc190Zl9JKHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSBfX3N0ZGNhbGwgc190Zl9sKGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgX19zdGRjYWxsIHNfdGZfTCh1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfcShQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSBfX3N0ZGNhbGwgc190Zl9RKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX3EobG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfUSh1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIF9fc3RkY2FsbCBzX3RmX2YoZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9kKGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfRChsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KQEAgLTQ5MCw4ICs0ODcsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgdGZfYkkoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIHRmX2JsKHNpZ25lZCBjaGFyIHgsIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgdGZfYkwoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIHRmX2JxKHNpZ25lZCBjaGFyIHgsIFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHRmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIHRmX2JxKHNpZ25lZCBjaGFyIHgsIGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIHRmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgdGZfYmYoc2lnbmVkIGNoYXIgeCwgZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSB0Zl9iZChzaWduZWQgY2hhciB4LCBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIHRmX2JEKHNpZ25lZCBjaGFyIHgsIGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpAQCAtNTA2LDggKzUwMyw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSBfX3N0ZGNhbGwgc190Zl9iSShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgX19zdGRjYWxsIHNfdGZfYmwoc2lnbmVkIGNoYXIgeCwgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVCh1bnNpZ25lZCBsb25nKSBfX3N0ZGNhbGwgc190Zl9iTChzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfYnEoc2lnbmVkIGNoYXIgeCwgUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgUFlfTE9OR19MT05HIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfYnEoc2lnbmVkIGNoYXIgeCwgbG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgX19zdGRjYWxsIHNfdGZfYlEoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSBfX3N0ZGNhbGwgc190Zl9iZihzaWduZWQgY2hhciB4LCBmbG9hdCBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChkb3VibGUpIF9fc3RkY2FsbCBzX3RmX2JkKHNpZ25lZCBjaGFyIHgsIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfYkQoc2lnbmVkIGNoYXIgeCwgbG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKaW5kZXggOTE0MTNkNy4uYjk1OGYzMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYwpAQCAtNzcsNyArNzcsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAotUHJpbnRFcnJvcihjaGFyICptc2csIC4uLikKK1ByaW50RXJyb3IoY29uc3QgY2hhciAqbXNnLCAuLi4pCiB7CiAgICAgY2hhciBidWZbNTEyXTsKICAgICBQeU9iamVjdCAqZiA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCmluZGV4IDMwZTNhOTYuLmQzMDQ0ZjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jCkBAIC0zODIsNyArMzgyLDcgQEAKICAgICAgICAgICAgd2hvc2Ugb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50CiAgICAgICAgICAgIG1hY2hpbmUgbW9kZS4gKi8KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uOiBwcml2aWxlZGdlZCBpbnN0cnVjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogcHJpdmlsZWdlZCBpbnN0cnVjdGlvbiIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTjoKQEAgLTQ3NCw3ICs0NzQsNiBAQAogICAgICAgICAgICAgc2VsZi0+dGFnLCBzZWxmLT52YWx1ZS5sKTsKICAgICAgICAgYnJlYWs7CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOgogICAgIGNhc2UgJ1EnOgogICAgICAgICBzcHJpbnRmKGJ1ZmZlciwKQEAgLTQ4NSw3ICs0ODQsNiBAQAogI2VuZGlmCiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLnEpOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGNhc2UgJ2QnOgogICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIjxjcGFyYW0gJyVjJyAoJWYpPiIsCiAgICAgICAgICAgICBzZWxmLT50YWcsIHNlbGYtPnZhbHVlLmQpOwpAQCAtNTkzLDkgKzU5MSw3IEBACiAgICAgc2hvcnQgaDsKICAgICBpbnQgaTsKICAgICBsb25nIGw7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgcTsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyBxOwogICAgIGxvbmcgZG91YmxlIEQ7CiAgICAgZG91YmxlIGQ7CiAgICAgZmxvYXQgZjsKQEAgLTkzMCw3ICs5MjYsNyBAQAogICogUmFpc2UgYSBuZXcgZXhjZXB0aW9uICdleGNfY2xhc3MnLCBhZGRpbmcgYWRkaXRpb25hbCB0ZXh0IHRvIHRoZSBvcmlnaW5hbAogICogZXhjZXB0aW9uIHN0cmluZy4KICAqLwotdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjaGFyICpmbXQsIC4uLikKK3ZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YXJnczsKICAgICBQeU9iamVjdCAqdHAsICp2LCAqdGIsICpzLCAqY2xzX3N0ciwgKm1zZ19zdHI7CkBAIC0xMjAzLDcgKzExOTksNyBAQAogCiAjaWZkZWYgTVNfV0lOMzIKIAotc3RhdGljIGNoYXIgZm9ybWF0X2Vycm9yX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZvcm1hdF9lcnJvcl9kb2NbXSA9CiAiRm9ybWF0RXJyb3IoW2ludGVnZXJdKSAtPiBzdHJpbmdcblwKIFxuXAogQ29udmVydCBhIHdpbjMyIGVycm9yIGNvZGUgaW50byBhIHN0cmluZy4gSWYgdGhlIGVycm9yIGNvZGUgaXMgbm90XG5cCkBAIC0xMjI3LDcgKzEyMjMsNyBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBjaGFyIGxvYWRfbGlicmFyeV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBsb2FkX2xpYnJhcnlfZG9jW10gPQogIkxvYWRMaWJyYXJ5KG5hbWUpIC0+IGhhbmRsZVxuXAogXG5cCiBMb2FkIGFuIGV4ZWN1dGFibGUgKHVzdWFsbHkgYSBETEwpLCBhbmQgcmV0dXJuIGEgaGFuZGxlIHRvIGl0LlxuXApAQCAtMTI1Niw3ICsxMjUyLDcgQEAKICNlbmRpZgogfQogCi1zdGF0aWMgY2hhciBmcmVlX2xpYnJhcnlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZnJlZV9saWJyYXJ5X2RvY1tdID0KICJGcmVlTGlicmFyeShoYW5kbGUpIC0+IHZvaWRcblwKIFxuXAogRnJlZSB0aGUgaGFuZGxlIG9mIGFuIGV4ZWN1dGFibGUgcHJldmlvdXNseSBsb2FkZWQgYnkgTG9hZExpYnJhcnkuXG4iOwpAQCAtMTI3MSw3ICsxMjY3LDcgQEAKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAotc3RhdGljIGNoYXIgY29weV9jb21fcG9pbnRlcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb3B5X2NvbV9wb2ludGVyX2RvY1tdID0KICJDb3B5Q29tUG9pbnRlcihzcmMsIGRzdCkgLT4gSFJFU1VMVCB2YWx1ZVxuIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzMDksNyArMTMwNSw3IEBACiAgICAgUHlPYmplY3QgKm5hbWUsICpuYW1lMjsKICAgICBjaGFyICpuYW1lX3N0cjsKICAgICB2b2lkICogaGFuZGxlOwotI2lmZGVmIFJUTERfTE9DQUwKKyNpZiBIQVZFX0RFQ0xfUlRMRF9MT0NBTAogICAgIGludCBtb2RlID0gUlRMRF9OT1cgfCBSVExEX0xPQ0FMOwogI2Vsc2UKICAgICAvKiBjeWd3aW4gZG9lc24ndCBkZWZpbmUgUlRMRF9MT0NBTCAqLwpAQCAtMTQ0MSw3ICsxNDM3LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogZnVuY3Rpb25zCiAgKi8KLXN0YXRpYyBjaGFyIHNpemVvZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBzaXplb2ZfZG9jW10gPQogInNpemVvZihDIHR5cGUpIC0+IGludGVnZXJcbiIKICJzaXplb2YoQyBpbnN0YW5jZSkgLT4gaW50ZWdlclxuIgogIlJldHVybiB0aGUgc2l6ZSBpbiBieXRlcyBvZiBhIEMgaW5zdGFuY2UiOwpAQCAtMTQ2Miw3ICsxNDU4LDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGNoYXIgYWxpZ25tZW50X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFsaWdubWVudF9kb2NbXSA9CiAiYWxpZ25tZW50KEMgdHlwZSkgLT4gaW50ZWdlclxuIgogImFsaWdubWVudChDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzIG9mIGEgQyBpbnN0YW5jZSI7CkBAIC0xNDg1LDcgKzE0ODEsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgY2hhciBieXJlZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBieXJlZl9kb2NbXSA9CiAiYnlyZWYoQyBpbnN0YW5jZVssIG9mZnNldD0wXSkgLT4gYnlyZWYtb2JqZWN0XG4iCiAiUmV0dXJuIGEgcG9pbnRlciBsb29rYWxpa2UgdG8gYSBDIGluc3RhbmNlLCBvbmx5IHVzYWJsZVxuIgogImFzIGZ1bmN0aW9uIGFyZ3VtZW50IjsKQEAgLTE1MjksNyArMTUyNSw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXBhcmc7CiB9CiAKLXN0YXRpYyBjaGFyIGFkZHJlc3NvZl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhZGRyZXNzb2ZfZG9jW10gPQogImFkZHJlc3NvZihDIGluc3RhbmNlKSAtPiBpbnRlZ2VyXG4iCiAiUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBDIGluc3RhbmNlIGludGVybmFsIGJ1ZmZlciI7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwppbmRleCBkNjY2YmU1Li5hNDM1ODVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCkBAIC0zNzksMTQgKzM3OSwxMiBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgUFlfTE9OR19MT05HICpwKQorZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBsb25nIGxvbmcgKnApCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZXhwZWN0ZWQgaW5zdGVhZCBvZiBmbG9hdCIpOwpAQCAtNDAyLDIzICs0MDAsMjEgQEAKIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgdW5zaWduZWQgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnApCitnZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sodikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJpbnQgZXhwZWN0ZWQgaW5zdGVhZCBvZiBmbG9hdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh2KTsKLSAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKHggPT0gKHVuc2lnbmVkIGxvbmcgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgKnAgPSB4OwogICAgIHJldHVybiAwOwogfQogCi0jZW5kaWYKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBJbnRlZ2VyIGZpZWxkcywgd2l0aCBiaXRmaWVsZCBzdXBwb3J0CiAgKi8KQEAgLTcxNSwxNCArNzExLDYgQEAKIH0KICNlbmRpZgogCi0jaWZkZWYgSEFWRV9DOTlfQk9PTAotI2RlZmluZSBCT09MX1RZUEUgX0Jvb2wKLSNlbHNlCi0jZGVmaW5lIEJPT0xfVFlQRSBjaGFyCi0jdW5kZWYgU0laRU9GX19CT09MCi0jZGVmaW5lIFNJWkVPRl9fQk9PTCAxCi0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJvb2xfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7CkBAIC03MzAsMTAgKzcxOCwxMCBAQAogICAgIGNhc2UgLTE6CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGNhc2UgMDoKLSAgICAgICAgKihCT09MX1RZUEUgKilwdHIgPSAwOworICAgICAgICAqKF9Cb29sICopcHRyID0gMDsKICAgICAgICAgX1JFVCh2YWx1ZSk7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgKihCT09MX1RZUEUgKilwdHIgPSAxOworICAgICAgICAqKF9Cb29sICopcHRyID0gMTsKICAgICAgICAgX1JFVCh2YWx1ZSk7CiAgICAgfQogfQpAQCAtNzQxLDcgKzcyOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYm9vbF9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykqKEJPT0xfVFlQRSAqKXB0cik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykqKF9Cb29sICopcHRyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg4OCwxNiArODc2LDE1IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKHZhbCk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIHFfc2V0KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgdmFsOworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfbG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZ4LCBwdHIsIHNpemVvZih4KSk7Ci0gICAgeCA9IFNFVChQWV9MT05HX0xPTkcsIHgsIHZhbCwgc2l6ZSk7CisgICAgeCA9IFNFVChsb25nIGxvbmcsIHgsIHZhbCwgc2l6ZSk7CiAgICAgbWVtY3B5KHB0ciwgJngsIHNpemVvZih4KSk7CiAgICAgX1JFVCh2YWx1ZSk7CiB9CkBAIC05MDUsMTMgKzg5MiwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHFfc2V0X3N3KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKLSAgICBQWV9MT05HX0xPTkcgZmllbGQ7CisgICAgbG9uZyBsb25nIHZhbDsKKyAgICBsb25nIGxvbmcgZmllbGQ7CiAgICAgaWYgKGdldF9sb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJmZpZWxkLCBwdHIsIHNpemVvZihmaWVsZCkpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKLSAgICBmaWVsZCA9IFNFVChQWV9MT05HX0xPTkcsIGZpZWxkLCB2YWwsIHNpemUpOworICAgIGZpZWxkID0gU0VUKGxvbmcgbG9uZywgZmllbGQsIHZhbCwgc2l6ZSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwogICAgIG1lbWNweShwdHIsICZmaWVsZCwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgX1JFVCh2YWx1ZSk7CkBAIC05MjAsNyArOTA3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOworICAgIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbCk7CkBAIC05MjksNyArOTE2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX2dldF9zdyh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsOworICAgIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIHZhbCA9IFNXQVBfOCh2YWwpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwpAQCAtOTM5LDEyICs5MjYsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X3Vsb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJngsIHB0ciwgc2l6ZW9mKHgpKTsKLSAgICB4ID0gU0VUKFBZX0xPTkdfTE9ORywgeCwgdmFsLCBzaXplKTsKKyAgICB4ID0gU0VUKGxvbmcgbG9uZywgeCwgdmFsLCBzaXplKTsKICAgICBtZW1jcHkocHRyLCAmeCwgc2l6ZW9mKHgpKTsKICAgICBfUkVUKHZhbHVlKTsKIH0KQEAgLTk1MiwxMyArOTM5LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9zZXRfc3codm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmaWVsZDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaWVsZDsKICAgICBpZiAoZ2V0X3Vsb25nbG9uZyh2YWx1ZSwgJnZhbCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBtZW1jcHkoJmZpZWxkLCBwdHIsIHNpemVvZihmaWVsZCkpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKLSAgICBmaWVsZCA9IFNFVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGZpZWxkLCB2YWwsIHNpemUpOworICAgIGZpZWxkID0gU0VUKHVuc2lnbmVkIGxvbmcgbG9uZywgZmllbGQsIHZhbCwgc2l6ZSk7CiAgICAgZmllbGQgPSBTV0FQXzgoZmllbGQpOwogICAgIG1lbWNweShwdHIsICZmaWVsZCwgc2l6ZW9mKGZpZWxkKSk7CiAgICAgX1JFVCh2YWx1ZSk7CkBAIC05NjcsNyArOTU0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBRX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAgICAgbWVtY3B5KCZ2YWwsIHB0ciwgc2l6ZW9mKHZhbCkpOwogICAgIEdFVF9CSVRGSUVMRCh2YWwsIHNpemUpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsKTsKQEAgLTk3NiwxMyArOTYzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9nZXRfc3codm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICB2YWwgPSBTV0FQXzgodmFsKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbCk7CiB9Ci0jZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBub24taW50ZWdlciBhY2Nlc3NvciBtZXRob2RzLCBub3Qgc3VwcG9ydGluZyBiaXQgZmllbGRzCkBAIC0xNDkwLDEwICsxNDc2LDggQEAKICNpZiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HCiAgICAgdiA9ICh2b2lkICopUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayh2YWx1ZSk7CiAjZWxzZQotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VsaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKFBZX0xPTkdfTE9ORykgPCBzaXplb2Yodm9pZCopIgorI2lmIFNJWkVPRl9MT05HX0xPTkcgPCBTSVpFT0ZfVk9JRF9QCisjICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihsb25nIGxvbmcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgogICAgIHYgPSAodm9pZCAqKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKHZhbHVlKTsKICNlbmRpZgpAQCAtMTUzOCwxNCArMTUyMiwxMiBAQAogI2Vsc2UKICMgZXJyb3IKICNlbmRpZgotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4CiAgICAgeyAncScsIHFfc2V0LCBxX2dldCwgJmZmaV90eXBlX3NpbnQ2NCwgcV9zZXRfc3csIHFfZ2V0X3N3fSwKICAgICB7ICdRJywgUV9zZXQsIFFfZ2V0LCAmZmZpX3R5cGVfdWludDY0LCBRX3NldF9zdywgUV9nZXRfc3d9LAogI2Vsc2UKICMgZXJyb3IKICNlbmRpZgotI2VuZGlmCiAgICAgeyAnUCcsIFBfc2V0LCBQX2dldCwgJmZmaV90eXBlX3BvaW50ZXJ9LAogICAgIHsgJ3onLCB6X3NldCwgel9nZXQsICZmZmlfdHlwZV9wb2ludGVyfSwKICNpZmRlZiBDVFlQRVNfVU5JQ09ERQpAQCAtMTYzNSwxMCArMTYxNyw4IEBACiAjZW5kaWYKICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IFBZX0xPTkdfTE9ORyB4OyB9IHNfbG9uZ19sb25nOwotI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YoUFlfTE9OR19MT05HKSkKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGxvbmcgbG9uZyB4OyB9IHNfbG9uZ19sb25nOworI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YobG9uZyBsb25nKSkKIAogLyogZnJvbSBmZmkuaDoKIHR5cGVkZWYgc3RydWN0IF9mZmlfdHlwZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oIGIvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCmluZGV4IGYyZGY1YzAuLjVkM2I5NjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKQEAgLTMxLDkgKzMxLDcgQEAKICAgICAgICAgICAgICAgICBsb25nIGw7CiAgICAgICAgICAgICAgICAgZmxvYXQgZjsKICAgICAgICAgICAgICAgICBkb3VibGUgZDsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgICAgIFBZX0xPTkdfTE9ORyBsbDsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBsbDsKICAgICAgICAgICAgICAgICBsb25nIGRvdWJsZSBEOwogfTsKIApAQCAtMzAzLDkgKzMwMSw3IEBACiAgICAgICAgIHNob3J0IGg7CiAgICAgICAgIGludCBpOwogICAgICAgICBsb25nIGw7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgUFlfTE9OR19MT05HIHE7Ci0jZW5kaWYKKyAgICAgICAgbG9uZyBsb25nIHE7CiAgICAgICAgIGxvbmcgZG91YmxlIEQ7CiAgICAgICAgIGRvdWJsZSBkOwogICAgICAgICBmbG9hdCBmOwpAQCAtMzI3LDcgKzMyMyw3IEBACiBQeUNEYXRhX3NldChQeU9iamVjdCAqZHN0LCBQeU9iamVjdCAqdHlwZSwgU0VURlVOQyBzZXRmdW5jLCBQeU9iamVjdCAqdmFsdWUsCiAgICAgICAgICAgUHlfc3NpemVfdCBpbmRleCwgUHlfc3NpemVfdCBzaXplLCBjaGFyICpwdHIpOwogCi1leHRlcm4gdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjaGFyICpmbXQsIC4uLik7CitleHRlcm4gdm9pZCBfY3R5cGVzX2V4dGVuZF9lcnJvcihQeU9iamVjdCAqZXhjX2NsYXNzLCBjb25zdCBjaGFyICpmbXQsIC4uLik7CiAKIHN0cnVjdCBiYXNlc3BlYyB7CiAgICAgQ0RhdGFPYmplY3QgKmJhc2U7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwppbmRleCA2ZTQ3NGI3Li41NWMyZDc2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKQEAgLTUyNSw3ICs1MjUsNyBAQAogI2RlZmluZSBNTUFQX0NMRUFSUyAxCiAjZW5kaWYgIC8qIE1NQVBfQ0xFQVJTICovCiAjaWZuZGVmIEhBVkVfTVJFTUFQCi0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICNkZWZpbmUgSEFWRV9NUkVNQVAgMQogI2Vsc2UgICAvKiBsaW51eCAqLwogI2RlZmluZSBIQVZFX01SRU1BUCAwCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZGVidWcuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmMWY5Zi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9kZWJ1Zy5jCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGRlYnVnLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYgUmVkIEhhdCwgSW5jLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qIEdlbmVyYWwgZGVidWdnaW5nIHJvdXRpbmVzICovCi0KLXZvaWQgZmZpX3N0b3BfaGVyZSh2b2lkKQotewotICAvKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCi0gICAgIFBsYWNlIGEgYnJlYWtwb2ludCBvbiBmZmlfc3RvcF9oZXJlIHRvIGJlIG5vdGlmaWVkIG9mIAotICAgICBzaWduaWZpY2FudCBldmVudHMuICovCi19Ci0KLS8qIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHZpYSB0aGUgRkZJX0FTU0VSVCgpIG1hY3JvICovCi0KLXZvaWQgZmZpX2Fzc2VydChjaGFyICpleHByLCBjaGFyICpmaWxlLCBpbnQgbGluZSkKLXsKLSAgZnByaW50ZihzdGRlcnIsICJBU1NFUlRJT04gRkFJTFVSRTogJXMgYXQgJXM6JWRcbiIsIGV4cHIsIGZpbGUsIGxpbmUpOwotICBmZmlfc3RvcF9oZXJlKCk7Ci0gIGFib3J0KCk7Ci19Ci0KLS8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gYW4gZmZpX3R5cGUgc3RydWN0dXJlICovCi0KLXZvaWQgZmZpX3R5cGVfdGVzdChmZmlfdHlwZSAqYSwgY2hhciAqZmlsZSwgaW50IGxpbmUpCi17Ci0gIEZGSV9BU1NFUlRfQVQoYSAhPSBOVUxMLCBmaWxlLCBsaW5lKTsKLQotICAvKkAtdXNlZGVmQCovCi0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSA8PSBGRklfVFlQRV9MQVNULCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlID09IEZGSV9UWVBFX1ZPSUQgfHwgYS0+c2l6ZSA+IDAsIGZpbGUsIGxpbmUpOwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgPT0gRkZJX1RZUEVfVk9JRCB8fCBhLT5hbGlnbm1lbnQgPiAwLCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlICE9IEZGSV9UWVBFX1NUUlVDVCB8fCBhLT5lbGVtZW50cyAhPSBOVUxMLCBmaWxlLCBsaW5lKTsKLSAgLypAPXVzZWRlZkAqLwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTE5M2FhYS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuYworKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTggIFJlZCBIYXQsIEluYy4KLSAgIAotICAgQVJNIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIAotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaW5jbHVkZSA8ZmZpLmg+Ci0jaW5jbHVkZSA8ZmZpX2NvbW1vbi5oPgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0jcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTQyKSAgICAvKiBiZW5pZ24gcmVkZWZpbml0aW9uIG9mIHR5cGUgKi8KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotLyogZmZpX3ByZXBfYXJncyBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQotICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMgKi8KLQotLypALWV4cG9ydGhlYWRlckAqLwotdm9pZCBmZmlfcHJlcF9hcmdzKGNoYXIgKnN0YWNrLCBleHRlbmRlZF9jaWYgKmVjaWYpCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi17Ci0gIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpOwotICByZWdpc3RlciB2b2lkICoqcF9hcmd2OwotICByZWdpc3RlciBjaGFyICphcmdwOwotICByZWdpc3RlciBmZmlfdHlwZSAqKnBfYXJnOwotCi0gIGFyZ3AgPSBzdGFjazsKLQotICBpZiAoIGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICkgewotICAgICoodm9pZCAqKikgYXJncCA9IGVjaWYtPnJ2YWx1ZTsKLSAgICBhcmdwICs9IDQ7Ci0gIH0KLQotICBwX2FyZ3YgPSBlY2lmLT5hdmFsdWU7Ci0KLSAgZm9yIChpID0gZWNpZi0+Y2lmLT5uYXJncywgcF9hcmcgPSBlY2lmLT5jaWYtPmFyZ190eXBlczsKLSAgICAgICAoaSAhPSAwKTsKLSAgICAgICBpLS0sIHBfYXJnKyspCi0gICAgewotICAgICAgc2l6ZV90IHo7Ci0gICAgICBzaXplX3QgYXJnYWxpZ24gPSAoKnBfYXJnKS0+YWxpZ25tZW50OwotCi0jaWZkZWYgX1dJTjMyX1dDRQotICAgICAgaWYgKGFyZ2FsaWduID4gNCkKLSAgICAgICAgYXJnYWxpZ24gPSA0OwotI2VuZGlmCi0gICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8KLSAgICAgIGlmICgoYXJnYWxpZ24gLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhcmdhbGlnbik7Ci0gICAgICB9Ci0KLQkgIHogPSAoKnBfYXJnKS0+c2l6ZTsKLQkgIGlmICh6IDwgc2l6ZW9mKGludCkpCi0JICAgIHsKLQkgICAgICB6ID0gc2l6ZW9mKGludCk7Ci0JICAgICAgc3dpdGNoICgoKnBfYXJnKS0+dHlwZSkKLQkJewotCQljYXNlIEZGSV9UWVBFX1NJTlQ4OgotCQkgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UOCAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfVUlOVDg6Ci0JCSAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UOCAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfU0lOVDE2OgotCQkgICooc2lnbmVkIGludCAqKSBhcmdwID0gKHNpZ25lZCBpbnQpKihTSU5UMTYgKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1VJTlQxNjoKLQkJICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQxNiAqKSgqIHBfYXJndik7Ci0JCSAgYnJlYWs7Ci0JCSAgCi0JCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgICAgICAgICAgICAgICAgLyogKnBfYXJndiBtYXkgbm90IGJlIGFsaWduZWQgZm9yIGEgVUlOVDMyICovCi0gICAgICAgICAgICAgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7Ci0JCSAgYnJlYWs7Ci0KLQkJZGVmYXVsdDoKLQkJICBGRklfQVNTRVJUKDApOwotCQl9Ci0JICAgIH0KLQkgIGVsc2UgaWYgKHogPT0gc2l6ZW9mKGludCkpCi0JICAgIHsKLQkgICAgICAqKHVuc2lnbmVkIGludCAqKSBhcmdwID0gKHVuc2lnbmVkIGludCkqKFVJTlQzMiAqKSgqIHBfYXJndik7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIG1lbWNweShhcmdwLCAqcF9hcmd2LCB6KTsKLQkgICAgfQotCSAgcF9hcmd2Kys7Ci0JICBhcmdwICs9IHo7Ci0gICAgfQotICAKLSAgcmV0dXJuOwotfQotCi0vKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGZmaV9jaWYgKmNpZikKLXsKLSAgLyogU2V0IHRoZSByZXR1cm4gdHlwZSBmbGFnICovCi0gIHN3aXRjaCAoY2lmLT5ydHlwZS0+dHlwZSkKLSAgICB7Ci0gICAgY2FzZSBGRklfVFlQRV9WT0lEOgotICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0gICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0gICAgY2FzZSBGRklfVFlQRV9TSU5UNjQ6Ci0gICAgICBjaWYtPmZsYWdzID0gKHVuc2lnbmVkKSBjaWYtPnJ0eXBlLT50eXBlOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKLSAgICAgIGNpZi0+ZmxhZ3MgPSBGRklfVFlQRV9TSU5UNjQ7Ci0gICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfSU5UOwotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gIHJldHVybiBGRklfT0s7Ci19Ci0KLS8qQC1kZWNsdW5kZWZAKi8KLS8qQC1leHBvcnRoZWFkZXJAKi8KLWV4dGVybiB2b2lkIGZmaV9jYWxsX1NZU1Yodm9pZCAoKikoY2hhciAqLCBleHRlbmRlZF9jaWYgKiksIAotCQkJICAvKkBvdXRAKi8gZXh0ZW5kZWRfY2lmICosIAotCQkJICB1bnNpZ25lZCwgdW5zaWduZWQsIAotCQkJICAvKkBvdXRAKi8gdW5zaWduZWQgKiwgCi0JCQkgIHZvaWQgKCpmbikoKSk7Ci0vKkA9ZGVjbHVuZGVmQCovCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi0KLS8qIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSB2b2lkIGZvciBjdHlwZXMgKi8KLWludCBmZmlfY2FsbCgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkgICAgICB2b2lkICgqZm4pKCksIAotCSAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCSAgICAgIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlKQotewotICBleHRlbmRlZF9jaWYgZWNpZjsKLQotICBlY2lmLmNpZiA9IGNpZjsKLSAgZWNpZi5hdmFsdWUgPSBhdmFsdWU7Ci0gIAotICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0IGFuZCB3ZSBkb24ndCBoYXZlIGEgcmV0dXJuCSovCi0gIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugb25lCQkgICAgICAgICovCi0KLSAgaWYgKChydmFsdWUgPT0gTlVMTCkgJiYgCi0gICAgICAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpKQotICAgIHsKLSAgICAgIC8qQC1zeXN1bnJlY29nQCovCi0gICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShjaWYtPnJ0eXBlLT5zaXplKTsKLSAgICAgIC8qQD1zeXN1bnJlY29nQCovCi0gICAgfQotICBlbHNlCi0gICAgZWNpZi5ydmFsdWUgPSBydmFsdWU7Ci0gICAgCi0gIAotICBzd2l0Y2ggKGNpZi0+YWJpKSAKLSAgICB7Ci0gICAgY2FzZSBGRklfU1lTVjoKLSAgICAgIC8qQC11c2VkZWZAKi8KLSAgICAgIGZmaV9jYWxsX1NZU1YoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsIAotCQkgICAgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuKTsKLSAgICAgIC8qQD11c2VkZWZAKi8KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBGRklfQVNTRVJUKDApOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAvKiBJIHRoaW5rIGNhbGN1bGF0aW5nIHRoZSByZWFsIHN0YWNrIHBvaW50ZXIgZGVsdGEgaXMgbm90IHVzZWZ1bAotICAgICBiZWNhdXNlIHN0ZGNhbGwgaXMgbm90IHN1cHBvcnRlZCAqLwotICByZXR1cm4gMDsKLX0KLQotLyoqIHByaXZhdGUgbWVtYmVycyAqKi8KLQotc3RhdGljIHZvaWQgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWIChjaGFyICpzdGFjaywgdm9pZCAqKnJldCwKLQkJCQkJIHZvaWQqKiBhcmdzLCBmZmlfY2lmKiBjaWYpOwotCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBmZmlfY2xvc3VyZV9TWVNWIGluIHN5c3YuYXNtICovCi0KLXVuc2lnbmVkIGludAotZmZpX2Nsb3N1cmVfU1lTVl9pbm5lciAoZmZpX2Nsb3N1cmUgKmNsb3N1cmUsIGNoYXIgKmluX2FyZ3MsIHZvaWQgKnJ2YWx1ZSkKLXsKLSAgZmZpX2NpZiAqY2lmID0gY2xvc3VyZS0+Y2lmOwotICB2b2lkICoqb3V0X2FyZ3M7Ci0KLSAgb3V0X2FyZ3MgPSAodm9pZCAqKikgYWxsb2NhKGNpZi0+bmFyZ3MgKiBzaXplb2YgKHZvaWQgKikpOyAgCi0KLSAgLyogdGhpcyBjYWxsIHdpbGwgaW5pdGlhbGl6ZSBvdXRfYXJncywgc3VjaCB0aGF0IGVhY2gKLSAgICogZWxlbWVudCBpbiB0aGF0IGFycmF5IHBvaW50cyB0byB0aGUgY29ycmVzcG9uZGluZyAKLSAgICogdmFsdWUgb24gdGhlIHN0YWNrOyBhbmQgaWYgdGhlIGZ1bmN0aW9uIHJldHVybnMKLSAgICogYSBzdHJ1Y3R1cmUsIGl0IHdpbGwgcmUtc2V0IHJ2YWx1ZSB0byBwb2ludCB0byB0aGUKLSAgICogc3RydWN0dXJlIHJldHVybiBhZGRyZXNzLiAgKi8KLQotICBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoaW5fYXJncywgJnJ2YWx1ZSwgb3V0X2FyZ3MsIGNpZik7Ci0gIAotICAoY2xvc3VyZS0+ZnVuKShjaWYsIHJ2YWx1ZSwgb3V0X2FyZ3MsIGNsb3N1cmUtPnVzZXJfZGF0YSk7Ci0KLSAgLyogVGVsbCBmZmlfY2xvc3VyZV9TWVNWIHdoYXQgdGhlIHJldHVybnR5cGUgaXMgKi8KLSAgcmV0dXJuIGNpZi0+ZmxhZ3M7Ci19Ci0KLS8qQC1leHBvcnRoZWFkZXJAKi8KLXN0YXRpYyB2b2lkIAotZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGNoYXIgKnN0YWNrLCB2b2lkICoqcnZhbHVlLAotCQkJICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZikKLS8qQD1leHBvcnRoZWFkZXJAKi8KLXsKLSAgdW5zaWduZWQgaW50IGk7Ci0gIHZvaWQgKipwX2FyZ3Y7Ci0gIGNoYXIgKmFyZ3A7Ci0gIGZmaV90eXBlICoqcF9hcmc7Ci0KLSAgYXJncCA9IHN0YWNrOwotCi0gIGlmICggY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgKSB7Ci0gICAgKnJ2YWx1ZSA9ICoodm9pZCAqKikgYXJncDsKLSAgICBhcmdwICs9IDQ7Ci0gIH0KLQotICBwX2FyZ3YgPSBhdmFsdWU7Ci0KLSAgZm9yIChpID0gY2lmLT5uYXJncywgcF9hcmcgPSBjaWYtPmFyZ190eXBlczsgKGkgIT0gMCk7IGktLSwgcF9hcmcrKykKLSAgICB7Ci0gICAgICBzaXplX3QgejsKLSAgICAgIHNpemVfdCBhcmdhbGlnbiA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0gICAgICBpZiAoYXJnYWxpZ24gPiA0KQotICAgICAgICBhcmdhbGlnbiA9IDQ7Ci0jZW5kaWYKLSAgICAgIC8qIEFsaWduIGlmIG5lY2Vzc2FyeSAqLwotICAgICAgaWYgKChhcmdhbGlnbiAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7Ci0JYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFyZ2FsaWduKTsKLSAgICAgIH0KLQotICAgICAgeiA9ICgqcF9hcmcpLT5zaXplOwotICAgICAgaWYgKHogPCBzaXplb2YoaW50KSkKLSAgICAgICAgeiA9IHNpemVvZihpbnQpOwotCi0gICAgICAqcF9hcmd2ID0gKHZvaWQqKSBhcmdwOwotCi0gICAgICBwX2FyZ3YrKzsKLSAgICAgIGFyZ3AgKz0gejsKLSAgICB9Ci19Ci0KLS8qCi0gICAgYWRkICAgaXAsIHBjLCAjLTggICAgIDsgaXAgPSBhZGRyZXNzIG9mIHRoaXMgdHJhbXBvbGluZSA9PSBhZGRyZXNzIG9mIGZmaV9jbG9zdXJlCi0gICAgbGRyICAgcGMsIFtwYywgIy00XSAgIDsganVtcCB0byBfX2Z1bgotICAgIERDRCBfX2Z1bgotKi8KLSNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORShUUkFNUCxGVU4pIFwKLXsgXAotICAgIHVuc2lnbmVkIGludCAqX190cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikoVFJBTVApOyBcCi0gICAgX190cmFtcFswXSA9IDB4ZTI0ZmMwMDg7ICAgICAgICAgICAgLyogYWRkICAgaXAsIHBjLCAjLTggICAgKi8gXAotICAgIF9fdHJhbXBbMV0gPSAweGU1MWZmMDA0OyAgICAgICAgICAgIC8qIGxkciAgIHBjLCBbcGMsICMtNF0gICovIFwKLSAgICBfX3RyYW1wWzJdID0gKHVuc2lnbmVkIGludCkoRlVOKTsgXAotICB9Ci0KLS8qIHRoZSBjaWYgbXVzdCBhbHJlYWR5IGJlIHByZXAnZWQgKi8KLQotLyogZGVmaW5lZCBpbiBzeXN2LmFzbSAqLwotdm9pZCBmZmlfY2xvc3VyZV9TWVNWKHZvaWQpOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9jbG9zdXJlIChmZmlfY2xvc3VyZSogY2xvc3VyZSwKLQkJICBmZmlfY2lmKiBjaWYsCi0JCSAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKSwKLQkJICB2b2lkICp1c2VyX2RhdGEpCi17Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKLSAgCi0gIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwgJmZmaV9jbG9zdXJlX1NZU1YpOwotCi0gIGNsb3N1cmUtPmNpZiAgPSBjaWY7Ci0gIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKLSAgY2xvc3VyZS0+ZnVuICA9IGZ1bjsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgLyogVGhpcyBpcyBpbXBvcnRhbnQgdG8gYWxsb3cgY2FsbGluZyB0aGUgdHJhbXBvbGluZSBzYWZlbHkgKi8KLSAgRmx1c2hJbnN0cnVjdGlvbkNhY2hlKEdldEN1cnJlbnRQcm9jZXNzKCksIDAsIDApOwotI2VuZGlmCi0KLSAgcmV0dXJuIEZGSV9PSzsKLX0KLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc5NzViNi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmkuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxNyArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgbGliZmZpIDIuMDAtYmV0YS13aW5jZSAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLQotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgVGhlIGJhc2ljIEFQSSBpcyBkZXNjcmliZWQgaW4gdGhlIFJFQURNRSBmaWxlLgotCi0gICBUaGUgcmF3IEFQSSBpcyBkZXNpZ25lZCB0byBieXBhc3Mgc29tZSBvZiB0aGUgYXJndW1lbnQgcGFja2luZwotICAgYW5kIHVucGFja2luZyBvbiBhcmNoaXRlY3R1cmVzIGZvciB3aGljaCBpdCBjYW4gYmUgYXZvaWRlZC4KLQotICAgVGhlIGNsb3N1cmUgQVBJIGFsbG93cyBpbnRlcnByZXRlZCBmdW5jdGlvbnMgdG8gYmUgcGFja2FnZWQgdXAKLSAgIGluc2lkZSBhIEMgZnVuY3Rpb24gcG9pbnRlciwgc28gdGhhdCB0aGV5IGNhbiBiZSBjYWxsZWQgYXMgQyBmdW5jdGlvbnMsCi0gICB3aXRoIG5vIHVuZGVyc3RhbmRpbmcgb24gdGhlIGNsaWVudCBzaWRlIHRoYXQgdGhleSBhcmUgaW50ZXJwcmV0ZWQuCi0gICBJdCBjYW4gYWxzbyBiZSB1c2VkIGluIG90aGVyIGNhc2VzIGluIHdoaWNoIGl0IGlzIG5lY2Vzc2FyeSB0byBwYWNrYWdlCi0gICB1cCBhIHVzZXIgc3BlY2lmaWVkIHBhcmFtZXRlciBhbmQgYSBmdW5jdGlvbiBwb2ludGVyIGFzIGEgc2luZ2xlCi0gICBmdW5jdGlvbiBwb2ludGVyLgotCi0gICBUaGUgY2xvc3VyZSBBUEkgbXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBvcmRlciB0byBnZXQgaXRzIGZ1bmN0aW9uYWxpdHksCi0gICBlLmcuIGZvciB1c2UgYnkgZ2lqLiAgUm91dGluZXMgYXJlIHByb3ZpZGVkIHRvIGVtdWxhdGUgdGhlIHJhdyBBUEkKLSAgIGlmIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGRvZXNuJ3QgYWxsb3cgZmFzdGVyIGltcGxlbWVudGF0aW9uLgotCi0gICBNb3JlIGRldGFpbHMgb24gdGhlIHJhdyBhbmQgY2xvdXJlIEFQSSBjYW4gYmUgZm91bmQgaW46Ci0KLSAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9qYXZhLzE5OTktcTMvbXNnMDAxMzguaHRtbAotCi0gICBhbmQKLQotICAgaHR0cDovL2djYy5nbnUub3JnL21sL2phdmEvMTk5OS1xMy9tc2cwMDE3NC5odG1sCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9ICi0jZGVmaW5lIExJQkZGSV9ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotLyogU3BlY2lmeSB3aGljaCBhcmNoaXRlY3R1cmUgbGliZmZpIGlzIGNvbmZpZ3VyZWQgZm9yLiAqLwotLyojZGVmaW5lIEBUQVJHRVRAKi8KLQotLyogLS0tLSBTeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaXRhcmdldC5oPgotCi0jaWZuZGVmIExJQkZGSV9BU00KLQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0vKiBMT05HX0xPTkdfTUFYIGlzIG5vdCBhbHdheXMgZGVmaW5lZCAobm90IGlmIFNUUklDVF9BTlNJLCBmb3IgZXhhbXBsZSkuCi0gICBCdXQgd2UgY2FuIGZpbmQgaXQgZWl0aGVyIHVuZGVyIHRoZSBjb3JyZWN0IEFOU0kgbmFtZSwgb3IgdW5kZXIgR05VCi0gICBDJ3MgaW50ZXJuYWwgbmFtZS4gICovCi0jaWZkZWYgTE9OR19MT05HX01BWAotIyBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTE9OR19MT05HX01BWAotI2Vsc2UKLSMgaWZkZWYgTExPTkdfTUFYCi0jICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTExPTkdfTUFYCi0jIGVsc2UKLSMgIGlmZGVmIF9fR05VQ19fCi0jICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCi0jICBlbmRpZgotIyAgaWZkZWYgX01TQ19WRVIKLSMgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggX0k2NF9NQVgKLSMgIGVuZGlmCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIFNDSEFSX01BWCA9PSAxMjcKLSMgZGVmaW5lIGZmaV90eXBlX3VjaGFyICAgICAgICAgICAgICAgIGZmaV90eXBlX3VpbnQ4Ci0jIGRlZmluZSBmZmlfdHlwZV9zY2hhciAgICAgICAgICAgICAgICBmZmlfdHlwZV9zaW50OAotI2Vsc2UKLSAjZXJyb3IgImNoYXIgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNpZiBTSFJUX01BWCA9PSAzMjc2NwotIyBkZWZpbmUgZmZpX3R5cGVfdXNob3J0ICAgICAgIGZmaV90eXBlX3VpbnQxNgotIyBkZWZpbmUgZmZpX3R5cGVfc3Nob3J0ICAgICAgIGZmaV90eXBlX3NpbnQxNgotI2VsaWYgU0hSVF9NQVggPT0gMjE0NzQ4MzY0NwotIyBkZWZpbmUgZmZpX3R5cGVfdXNob3J0ICAgICAgIGZmaV90eXBlX3VpbnQzMgotIyBkZWZpbmUgZmZpX3R5cGVfc3Nob3J0ICAgICAgIGZmaV90eXBlX3NpbnQzMgotI2Vsc2UKLSAjZXJyb3IgInNob3J0IHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0jaWYgSU5UX01BWCA9PSAzMjc2NwotIyBkZWZpbmUgZmZpX3R5cGVfdWludCAgICAgICAgIGZmaV90eXBlX3VpbnQxNgotIyBkZWZpbmUgZmZpX3R5cGVfc2ludCAgICAgICAgIGZmaV90eXBlX3NpbnQxNgotI2VsaWYgSU5UX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGRlZmluZSBmZmlfdHlwZV91aW50ICAgICAgICAgZmZpX3R5cGVfdWludDMyCi0jIGRlZmluZSBmZmlfdHlwZV9zaW50ICAgICAgICAgZmZpX3R5cGVfc2ludDMyCi0jZWxpZiBJTlRfTUFYID09IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSMgZGVmaW5lIGZmaV90eXBlX3VpbnQgICAgICAgICBmZmlfdHlwZV91aW50NjQKLSMgZGVmaW5lIGZmaV90eXBlX3NpbnQgICAgICAgICBmZmlfdHlwZV9zaW50NjQKLSNlbHNlCi0gI2Vycm9yICJpbnQgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLSNkZWZpbmUgZmZpX3R5cGVfdWxvbmcgICAgICAgICBmZmlfdHlwZV91aW50NjQKLSNkZWZpbmUgZmZpX3R5cGVfc2xvbmcgICAgICAgICBmZmlfdHlwZV9zaW50NjQKLSNpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGlmIEZGSV9MT05HX0xPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSAgI2Vycm9yICJubyA2NC1iaXQgZGF0YSB0eXBlIHN1cHBvcnRlZCIKLSMgZW5kaWYKLSNlbGlmIExPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLSAjZXJyb3IgImxvbmcgc2l6ZSBub3Qgc3VwcG9ydGVkIgotI2VuZGlmCi0KLS8qIFRoZSBjbG9zdXJlIGNvZGUgYXNzdW1lcyB0aGF0IHRoaXMgd29ya3Mgb24gcG9pbnRlcnMsIGkuZS4gYSBzaXplX3QJKi8KLS8qIGNhbiBob2xkIGEgcG9pbnRlci4JCQkJCQkJKi8KLQotdHlwZWRlZiBzdHJ1Y3QgX2ZmaV90eXBlCi17Ci0gIHNpemVfdCBzaXplOwotICB1bnNpZ25lZCBzaG9ydCBhbGlnbm1lbnQ7Ci0gIHVuc2lnbmVkIHNob3J0IHR5cGU7Ci0gIC8qQG51bGxAKi8gc3RydWN0IF9mZmlfdHlwZSAqKmVsZW1lbnRzOwotfSBmZmlfdHlwZTsKLQotLyogVGhlc2UgYXJlIGRlZmluZWQgaW4gdHlwZXMuYyAqLwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3ZvaWQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDg7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDE2OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MzI7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ2NDsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZmxvYXQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfZG91YmxlOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2xvbmdkb3VibGU7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfcG9pbnRlcjsKLQotCi10eXBlZGVmIGVudW0gewotICBGRklfT0sgPSAwLAotICBGRklfQkFEX1RZUEVERUYsCi0gIEZGSV9CQURfQUJJIAotfSBmZmlfc3RhdHVzOwotCi10eXBlZGVmIHVuc2lnbmVkIEZGSV9UWVBFOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGZmaV9hYmkgYWJpOwotICB1bnNpZ25lZCBuYXJnczsKLSAgLypAZGVwZW5kZW50QCovIGZmaV90eXBlICoqYXJnX3R5cGVzOwotICAvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKnJ0eXBlOwotICB1bnNpZ25lZCBieXRlczsKLSAgdW5zaWduZWQgZmxhZ3M7Ci0jaWZkZWYgRkZJX0VYVFJBX0NJRl9GSUVMRFMKLSAgRkZJX0VYVFJBX0NJRl9GSUVMRFM7Ci0jZW5kaWYKLX0gZmZpX2NpZjsKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgdGhlIHJhdyBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBGRklfU0laRU9GX0FSRwotIyBpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDQKLSMgZWxpZiBMT05HX01BWCA9PSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0jICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDgKLSMgZW5kaWYKLSNlbmRpZgotCi10eXBlZGVmIHVuaW9uIHsKLSAgZmZpX3NhcmcgIHNpbnQ7Ci0gIGZmaV9hcmcgICB1aW50OwotICBmbG9hdAkgICAgZmx0OwotICBjaGFyICAgICAgZGF0YVtGRklfU0laRU9GX0FSR107Ci0gIHZvaWQqICAgICBwdHI7Ci19IGZmaV9yYXc7Ci0KLXZvaWQgZmZpX3Jhd19jYWxsICgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkJICAgdm9pZCAoKmZuKSgpLCAKLQkJICAgLypAb3V0QCovIHZvaWQgKnJ2YWx1ZSwgCi0JCSAgIC8qQGRlcGVuZGVudEAqLyBmZmlfcmF3ICphdmFsdWUpOwotCi12b2lkIGZmaV9wdHJhcnJheV90b19yYXcgKGZmaV9jaWYgKmNpZiwgdm9pZCAqKmFyZ3MsIGZmaV9yYXcgKnJhdyk7Ci12b2lkIGZmaV9yYXdfdG9fcHRyYXJyYXkgKGZmaV9jaWYgKmNpZiwgZmZpX3JhdyAqcmF3LCB2b2lkICoqYXJncyk7Ci1zaXplX3QgZmZpX3Jhd19zaXplIChmZmlfY2lmICpjaWYpOwotCi0vKiBUaGlzIGlzIGFuYWxvZ291cyB0byB0aGUgcmF3IEFQSSwgZXhjZXB0IGl0IHVzZXMgSmF2YSBwYXJhbWV0ZXIJKi8KLS8qIHBhY2tpbmcsIGV2ZW4gb24gNjQtYml0IG1hY2hpbmVzLiAgSS5lLiBvbiA2NC1iaXQgbWFjaGluZXMJCSovCi0vKiBsb25ncyBhbmQgZG91YmxlcyBhcmUgZm9sbG93ZWQgYnkgYW4gZW1wdHkgNjQtYml0IHdvcmQuCQkqLwotCi12b2lkIGZmaV9qYXZhX3Jhd19jYWxsICgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkJICAgICAgICB2b2lkICgqZm4pKCksIAotCQkgICAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCQkgICAgICAgIC8qQGRlcGVuZGVudEAqLyBmZmlfcmF3ICphdmFsdWUpOwotCi12b2lkIGZmaV9qYXZhX3B0cmFycmF5X3RvX3JhdyAoZmZpX2NpZiAqY2lmLCB2b2lkICoqYXJncywgZmZpX3JhdyAqcmF3KTsKLXZvaWQgZmZpX2phdmFfcmF3X3RvX3B0cmFycmF5IChmZmlfY2lmICpjaWYsIGZmaV9yYXcgKnJhdywgdm9pZCAqKmFyZ3MpOwotc2l6ZV90IGZmaV9qYXZhX3Jhd19zaXplIChmZmlfY2lmICpjaWYpOwotCi0vKiAtLS0tIERlZmluaXRpb25zIGZvciBjbG9zdXJlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWYgRkZJX0NMT1NVUkVTCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgY2hhciB0cmFtcFtGRklfVFJBTVBPTElORV9TSVpFXTsKLSAgZmZpX2NpZiAgICpjaWY7Ci0gIHZvaWQgICAgICgqZnVuKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwotICB2b2lkICAgICAgKnVzZXJfZGF0YTsKLX0gZmZpX2Nsb3N1cmU7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2Nsb3N1cmUgKGZmaV9jbG9zdXJlKiwKLQkJICBmZmlfY2lmICosCi0JCSAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKSwKLQkJICB2b2lkICp1c2VyX2RhdGEpOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07Ci0KLSAgZmZpX2NpZiAgICpjaWY7Ci0KLSNpZiAhRkZJX05BVElWRV9SQVdfQVBJCi0KLSAgLyogaWYgdGhpcyBpcyBlbmFibGVkLCB0aGVuIGEgcmF3IGNsb3N1cmUgaGFzIHRoZSBzYW1lIGxheW91dCAKLSAgICAgYXMgYSByZWd1bGFyIGNsb3N1cmUuICBXZSB1c2UgdGhpcyB0byBpbnN0YWxsIGFuIGludGVybWVkaWF0ZSAKLSAgICAgaGFuZGxlciB0byBkbyB0aGUgdHJhbnNhbHRpb24sIHZvaWQqKiAtPiBmZmlfcmF3Ki4gKi8KLQotICB2b2lkICAgICAoKnRyYW5zbGF0ZV9hcmdzKShmZmlfY2lmKix2b2lkKix2b2lkKiosdm9pZCopOwotICB2b2lkICAgICAgKnRoaXNfY2xvc3VyZTsKLQotI2VuZGlmCi0KLSAgdm9pZCAgICAgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKTsKLSAgdm9pZCAgICAgICp1c2VyX2RhdGE7Ci0KLX0gZmZpX3Jhd19jbG9zdXJlOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9yYXdfY2xvc3VyZSAoZmZpX3Jhd19jbG9zdXJlKiwKLQkJICAgICAgZmZpX2NpZiAqY2lmLAotCQkgICAgICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKixmZmlfcmF3Kix2b2lkKiksCi0JCSAgICAgIHZvaWQgKnVzZXJfZGF0YSk7Ci0KLWZmaV9zdGF0dXMKLWZmaV9wcmVwX2phdmFfcmF3X2Nsb3N1cmUgKGZmaV9yYXdfY2xvc3VyZSosCi0JCSAgICAgICAgICAgZmZpX2NpZiAqY2lmLAotCQkgICAgICAgICAgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLGZmaV9yYXcqLHZvaWQqKSwKLQkJICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpOwotCi0jZW5kaWYgLyogRkZJX0NMT1NVUkVTICovCi0KLS8qIC0tLS0gUHVibGljIGludGVyZmFjZSBkZWZpbml0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmKC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV9jaWYgKmNpZiwgCi0JCQlmZmlfYWJpIGFiaSwKLQkJCXVuc2lnbmVkIGludCBuYXJncywgCi0JCQkvKkBkZXBlbmRlbnRAKi8gLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX3R5cGUgKnJ0eXBlLCAKLQkJCS8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqKmF0eXBlcyk7Ci0KLS8qIFJldHVybiB0eXBlIGNoYW5nZWQgZnJvbSB2b2lkIGZvciBjdHlwZXMgKi8KLWludCBmZmlfY2FsbCgvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmLCAKLQkgICAgICB2b2lkICgqZm4pKCksIAotCSAgICAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCSAgICAgIC8qQGRlcGVuZGVudEAqLyB2b2lkICoqYXZhbHVlKTsKLQotLyogVXNlZnVsIGZvciBlbGltaW5hdGluZyBjb21waWxlciB3YXJuaW5ncyAqLwotI2RlZmluZSBGRklfRk4oZikgKCh2b2lkICgqKSgpKWYpCi0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgc2hhcmVkIHdpdGggYXNzZW1ibHkgY29kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNlbmRpZgotCi0vKiBJZiB0aGVzZSBjaGFuZ2UsIHVwZGF0ZSBzcmMvbWlwcy9mZml0YXJnZXQuaC4gKi8KLSNkZWZpbmUgRkZJX1RZUEVfVk9JRCAgICAgICAwICAgIAotI2RlZmluZSBGRklfVFlQRV9JTlQgICAgICAgIDEKLSNkZWZpbmUgRkZJX1RZUEVfRkxPQVQgICAgICAyICAgIAotI2RlZmluZSBGRklfVFlQRV9ET1VCTEUgICAgIDMKLSNpZiAwIC8qQEhBVkVfTE9OR19ET1VCTEVAKi8KLSNkZWZpbmUgRkZJX1RZUEVfTE9OR0RPVUJMRSA0Ci0jZWxzZQotI2RlZmluZSBGRklfVFlQRV9MT05HRE9VQkxFIEZGSV9UWVBFX0RPVUJMRQotI2VuZGlmCi0jZGVmaW5lIEZGSV9UWVBFX1VJTlQ4ICAgICAgNSAgIAotI2RlZmluZSBGRklfVFlQRV9TSU5UOCAgICAgIDYKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDE2ICAgICA3IAotI2RlZmluZSBGRklfVFlQRV9TSU5UMTYgICAgIDgKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDMyICAgICA5Ci0jZGVmaW5lIEZGSV9UWVBFX1NJTlQzMiAgICAgMTAKLSNkZWZpbmUgRkZJX1RZUEVfVUlOVDY0ICAgICAxMQotI2RlZmluZSBGRklfVFlQRV9TSU5UNjQgICAgIDEyCi0jZGVmaW5lIEZGSV9UWVBFX1NUUlVDVCAgICAgMTMKLSNkZWZpbmUgRkZJX1RZUEVfUE9JTlRFUiAgICAxNAotCi0vKiBUaGlzIHNob3VsZCBhbHdheXMgcmVmZXIgdG8gdGhlIGxhc3QgdHlwZSBjb2RlIChmb3Igc2FuaXR5IGNoZWNrcykgKi8KLSNkZWZpbmUgRkZJX1RZUEVfTEFTVCAgICAgICBGRklfVFlQRV9QT0lOVEVSCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmlfY29tbW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmODc5ZDEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpX2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmlfY29tbW9uLmggLSBDb3B5cmlnaHQgKGMpIDE5OTYgIFJlZCBIYXQsIEluYy4KLQotICAgQ29tbW9uIGludGVybmFsIGRlZmluaXRpb25zIGFuZCBtYWNyb3MuIE9ubHkgbmVjZXNzYXJ5IGZvciBidWlsZGluZwotICAgbGliZmZpLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBGRklfQ09NTU9OX0gKLSNkZWZpbmUgRkZJX0NPTU1PTl9ICi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGZmaWNvbmZpZy5oPgotCi0vKiBEbyBub3QgbW92ZSB0aGlzLiBTb21lIHZlcnNpb25zIG9mIEFJWCBhcmUgdmVyeSBwaWNreSBhYm91dCB3aGVyZQotICAgdGhpcyBpcyBwb3NpdGlvbmVkLiAqLwotI2lmZGVmIF9fR05VQ19fCi0jIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQotI2Vsc2UKLSMgaWYgSEFWRV9BTExPQ0FfSAotIyAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0jIGVsc2UKLSMgIGlmZGVmIF9BSVgKLSAjcHJhZ21hIGFsbG9jYQotIyAgZWxzZQotIyAgIGlmbmRlZiBhbGxvY2EgLyogcHJlZGVmaW5lZCBieSBIUCBjYyArT2xpYmNhbGxzICovCi1jaGFyICphbGxvY2EgKCk7Ci0jICAgZW5kaWYKLSMgIGVuZGlmCi0jIGVuZGlmCi0jZW5kaWYKLQotLyogQ2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgbWVtY3B5LiAqLwotI2lmIFNURENfSEVBREVSUwotIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jIGlmbmRlZiBIQVZFX01FTUNQWQotIyAgZGVmaW5lIG1lbWNweShkLCBzLCBuKSBiY29weSAoKHMpLCAoZCksIChuKSkKLSMgZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChGRklfREVCVUcpIAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEZGSV9ERUJVRwotLypAZXhpdHNAKi8gdm9pZCBmZmlfYXNzZXJ0KC8qQHRlbXBAKi8gY2hhciAqZXhwciwgLypAdGVtcEAqLyBjaGFyICpmaWxlLCBpbnQgbGluZSk7Ci12b2lkIGZmaV9zdG9wX2hlcmUodm9pZCk7Ci12b2lkIGZmaV90eXBlX3Rlc3QoLypAdGVtcEAqLyAvKkBvdXRAKi8gZmZpX3R5cGUgKmEsIC8qQHRlbXBAKi8gY2hhciAqZmlsZSwgaW50IGxpbmUpOwotCi0jZGVmaW5lIEZGSV9BU1NFUlQoeCkgKCh4KSA/ICh2b2lkKTAgOiBmZmlfYXNzZXJ0KCN4LCBfX0ZJTEVfXyxfX0xJTkVfXykpCi0jZGVmaW5lIEZGSV9BU1NFUlRfQVQoeCwgZiwgbCkgKCh4KSA/IDAgOiBmZmlfYXNzZXJ0KCN4LCAoZiksIChsKSkpCi0jZGVmaW5lIEZGSV9BU1NFUlRfVkFMSURfVFlQRSh4KSBmZmlfdHlwZV90ZXN0ICh4LCBfX0ZJTEVfXywgX19MSU5FX18pCi0jZWxzZQotI2RlZmluZSBGRklfQVNTRVJUKHgpIAotI2RlZmluZSBGRklfQVNTRVJUX0FUKHgsIGYsIGwpCi0jZGVmaW5lIEZGSV9BU1NFUlRfVkFMSURfVFlQRSh4KQotI2VuZGlmCi0KLSNkZWZpbmUgQUxJR04odiwgYSkgICgoKCgoc2l6ZV90KSAodikpLTEpIHwgKChhKS0xKSkrMSkKLQotLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpOwotCi0vKiBFeHRlbmRlZCBjaWYsIHVzZWQgaW4gY2FsbGJhY2sgZnJvbSBhc3NlbWJseSByb3V0aW5lICovCi10eXBlZGVmIHN0cnVjdAotewotICAvKkBkZXBlbmRlbnRAKi8gZmZpX2NpZiAqY2lmOwotICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqcnZhbHVlOwotICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqKmF2YWx1ZTsKLX0gZXh0ZW5kZWRfY2lmOwotCi0vKiBUZXJzZSBzaXplZCB0eXBlIGRlZmluaXRpb25zLiAgKi8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotCi10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UOCAgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19RSV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDggIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fUUlfXykpKTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQxNiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0hJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UMTYgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ISV9fKSkpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fU0lfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQzMiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UNjQgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ESV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDY0IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElfXykpKTsKLQotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLQotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDggIFVJTlQ4OwotdHlwZWRlZiBzaWduZWQgX19pbnQ4ICAgIFNJTlQ4OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2IFVJTlQxNjsKLXR5cGVkZWYgc2lnbmVkIF9faW50MTYgICBTSU5UMTY7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgVUlOVDMyOwotdHlwZWRlZiBzaWduZWQgX19pbnQzMiAgIFNJTlQzMjsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBVSU5UNjQ7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDY0ICAgU0lOVDY0OwotCi0jZWxzZQotI2Vycm9yICJOZWVkIHR5cGVkZWZzIGhlcmUiCi0jZW5kaWYKLQotdHlwZWRlZiBmbG9hdCBGTE9BVDMyOwotCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaWNvbmZpZy5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjNzk2NGMuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyogZmZpY29uZmlnLmggY3JlYXRlZCBtYW51YWxseSBmb3IgV2luZG93cyBDRSBvbiBBUk0gKi8KLS8qIGZmaWNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmFjIGJ5IGF1dG9oZWFkZXIuICAqLwotCi0vKiAxMjM0ID0gTElMX0VORElBTiwgNDMyMSA9IEJJR0VORElBTiAqLwotI2RlZmluZSBCWVRFT1JERVIgMTIzNAotCi0vKiBEZWZpbmUgdG8gb25lIG9mIGBfZ2V0YjY3JywgYEdFVEI2NycsIGBnZXRiNjcnIGZvciBDcmF5LTIgYW5kIENyYXktWU1QCi0gICBzeXN0ZW1zLiBUaGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIGZvciBgYWxsb2NhLmMnIHN1cHBvcnQgb24gdGhvc2Ugc3lzdGVtcy4KLSAgICovCi0vKiAjdW5kZWYgQ1JBWV9TVEFDS1NFR19FTkQgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgdXNpbmcgYGFsbG9jYS5jJy4gKi8KLS8qICN1bmRlZiBDX0FMTE9DQSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuICovCi0vKiAjdW5kZWYgRUhfRlJBTUVfRkxBR1MgKi8KLQotLyogRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgZXh0cmEgZGVidWdnaW5nLiAqLwotI2lmZGVmIERFQlVHICAvKiBEZWZpbmVkIGJ5IHRoZSBwcm9qZWN0IHNldHRpbmdzIGZvciBEZWJ1ZyBidWlsZHMgKi8KLSNkZWZpbmUgRkZJX0RFQlVHCi0jZWxzZQotI3VuZGVmIEZGSV9ERUJVRwotI2VuZGlmCi0KLS8qIERlZmluZSB0aGlzIGlzIHlvdSBkbyBub3Qgd2FudCBzdXBwb3J0IGZvciB0aGUgcmF3IEFQSS4gKi8KLS8qICN1bmRlZiBGRklfTk9fUkFXX0FQSSAqLwotCi0vKiBEZWZpbmUgdGhpcyBpcyB5b3UgZG8gbm90IHdhbnQgc3VwcG9ydCBmb3IgYWdncmVnYXRlIHR5cGVzLiAqLwotLyogI3VuZGVmIEZGSV9OT19TVFJVQ1RTICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIGBhbGxvY2EnLCBhcyBhIGZ1bmN0aW9uIG9yIG1hY3JvLiAqLwotI2RlZmluZSBIQVZFX0FMTE9DQSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIDxhbGxvY2EuaD4gYW5kIGl0IHNob3VsZCBiZSB1c2VkIChub3Qgb24gVWx0cml4KS4KLSAgICovCi0vKiAjdW5kZWYgSEFWRV9BTExPQ0FfSCAqLwotCi0vKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgLnJlZ2lzdGVyLiAqLwotLyogI3VuZGVmIEhBVkVfQVNfUkVHSVNURVJfUFNFVURPX09QICovCi0KLS8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBhbmQgbGlua2VyIHN1cHBvcnQgdW5hbGlnbmVkIFBDIHJlbGF0aXZlIHJlbG9jcy4KLSAgICovCi0vKiAjdW5kZWYgSEFWRV9BU19TUEFSQ19VQV9QQ1JFTCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSCAqLwotCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxvbmcgZG91YmxlIHR5cGUgYW5kIGl0IGlzIGJpZ2dlciB0aGFuIGEgZG91YmxlICovCi0vKiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgTVNWQyBidWlsZCwgYnV0IGV2ZW4gdGhlcmUgaXQgc2hvdWxkIG5vdCBiZSBkZWZpbmVkICovCi0vKiAjdW5kZWYgSEFWRV9MT05HX0RPVUJMRSAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWNweScgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfTUVNQ1BZIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCi0vKiBXaW5DRSBoYXMgdGhpcyBidXQgSSBkb24ndCB0aGluayB3ZSBuZWVkIHRvIHVzZSBpdCAqLwotLyogI3VuZGVmIEhBVkVfTUVNT1JZX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtbWFwJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVAgKi8KLQotLyogRGVmaW5lIGlmIG1tYXAgd2l0aCBNQVBfQU5PTihZTU9VUykgd29ya3MuICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQX0FOT04gKi8KLQotLyogRGVmaW5lIGlmIG1tYXAgb2YgL2Rldi96ZXJvIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9ERVZfWkVSTyAqLwotCi0vKiBEZWZpbmUgaWYgcmVhZC1vbmx5IG1tYXAgb2YgYSBwbGFpbiBmaWxlIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9GSUxFICovCi0KLS8qIERlZmluZSBpZiAuZWhfZnJhbWUgc2VjdGlvbnMgc2hvdWxkIGJlIHJlYWQtb25seS4gKi8KLS8qICN1bmRlZiBIQVZFX1JPX0VIX0ZSQU1FICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1RESU5UX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RETElCX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TVFJJTkdTX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX01NQU5fSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1lTX1NUQVRfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NZU19UWVBFU19IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfVU5JU1REX0ggKi8KLQotLyogRGVmaW5lIGlmIHRoZSBob3N0IG1hY2hpbmUgc3RvcmVzIHdvcmRzIG9mIG11bHRpLXdvcmQgaW50ZWdlcnMgaW4KLSAgIGJpZy1lbmRpYW4gb3JkZXIuICovCi0vKiAjdW5kZWYgSE9TVF9XT1JEU19CSUdfRU5ESUFOICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdXIgQyBjb21waWxlciBkb2Vzbid0IGFjY2VwdCAtYyBhbmQgLW8gdG9nZXRoZXIuICovCi0vKiAjdW5kZWYgTk9fTUlOVVNfQ19NSU5VU19PICovCi0KLS8qIE5hbWUgb2YgcGFja2FnZSAqLwotLyogI3VuZGVmIFBBQ0tBR0UgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfTkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0vKiAjdW5kZWYgUEFDS0FHRV9TVFJJTkcgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTiAqLwotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHR5cGUgZG91YmxlICovCi0jZGVmaW5lIFNJWkVPRl9ET1VCTEUgOAotCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHR5cGUgbG9uZyBkb3VibGUgKi8KLSNkZWZpbmUgU0laRU9GX0xPTkdfRE9VQkxFIDgKLQotLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCi0gICBkaXJlY3Rpb24gb2Ygc3RhY2sgZ3Jvd3RoIGZvciB5b3VyIHN5c3RlbTsgb3RoZXJ3aXNlIGl0IHdpbGwgYmUKLSAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KLQlTVEFDS19ESVJFQ1RJT04gPiAwID0+IGdyb3dzIHRvd2FyZCBoaWdoZXIgYWRkcmVzc2VzCi0JU1RBQ0tfRElSRUNUSU9OIDwgMCA9PiBncm93cyB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzCi0JU1RBQ0tfRElSRUNUSU9OID0gMCA9PiBkaXJlY3Rpb24gb2YgZ3Jvd3RoIHVua25vd24gKi8KLS8qICN1bmRlZiBTVEFDS19ESVJFQ1RJT04gKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIEFOU0kgQyBoZWFkZXIgZmlsZXMuICovCi0jZGVmaW5lIFNURENfSEVBREVSUyAxCi0KLS8qIERlZmluZSB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgUHVyaWZ5IGFuZCB3YW50IHRvIHN1cHByZXNzIHNwdXJpb3VzIG1lc3NhZ2VzLgotICAgKi8KLS8qICN1bmRlZiBVU0lOR19QVVJJRlkgKi8KLQotLyogVmVyc2lvbiBudW1iZXIgb2YgcGFja2FnZSAqLwotLyogI3VuZGVmIFZFUlNJT04gKi8KLQotLyogd2hldGhlciBieXRlb3JkZXIgaXMgYmlnZW5kaWFuICovCi0vKiAjdW5kZWYgV09SRFNfQklHRU5ESUFOICovCi0KLSNkZWZpbmUgYWxsb2NhIF9hbGxvY2EKLQotI2RlZmluZSBhYm9ydCgpIGV4aXQoOTk5KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyN2IyNS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZml0YXJnZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCi0gICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEFSTS4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotCi0gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jaWZuZGVmIExJQkZGSV9UQVJHRVRfSAotI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKLQotI2lmbmRlZiBMSUJGRklfQVNNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKLXR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICAgICBmZmlfc2FyZzsKLQotdHlwZWRlZiBlbnVtIGZmaV9hYmkgewotICBGRklfRklSU1RfQUJJID0gMCwKLSAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCi19IGZmaV9hYmk7Ci0jZW5kaWYKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBGRklfQ0xPU1VSRVMgMQotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDEyCi0KLSNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9wcmVwX2NpZi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWRjZTJmLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3ByZXBfY2lmLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzUgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHByZXBfY2lmLmMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTggIFJlZCBIYXQsIEluYy4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaS5oPgotI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLQotCi0vKiBSb3VuZCB1cCB0byBGRklfU0laRU9GX0FSRy4gKi8KLQotI2RlZmluZSBTVEFDS19BUkdfU0laRSh4KSBBTElHTih4LCBGRklfU0laRU9GX0FSRykKLQotLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIG9mIGFnZ3JlZ2F0ZSB0eXBlCi0gICBzcGVjaWZpY2F0aW9ucy4gKi8KLQotc3RhdGljIGZmaV9zdGF0dXMgaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoLypAb3V0QCovIGZmaV90eXBlICphcmcpCi17Ci0gIGZmaV90eXBlICoqcHRyOyAKLQotICBGRklfQVNTRVJUKGFyZyAhPSBOVUxMKTsKLQotICAvKkAtdXNlZGVmQCovCi0KLSAgRkZJX0FTU0VSVChhcmctPmVsZW1lbnRzICE9IE5VTEwpOwotICBGRklfQVNTRVJUKGFyZy0+c2l6ZSA9PSAwKTsKLSAgRkZJX0FTU0VSVChhcmctPmFsaWdubWVudCA9PSAwKTsKLQotICBwdHIgPSAmKGFyZy0+ZWxlbWVudHNbMF0pOwotCi0gIHdoaWxlICgoKnB0cikgIT0gTlVMTCkKLSAgICB7Ci0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQotCXJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gICAgICAKLSAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUgKi8KLSAgICAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRSgqcHRyKTsKLQotICAgICAgYXJnLT5zaXplID0gQUxJR04oYXJnLT5zaXplLCAoKnB0ciktPmFsaWdubWVudCk7Ci0gICAgICBhcmctPnNpemUgKz0gKCpwdHIpLT5zaXplOwotCi0gICAgICBhcmctPmFsaWdubWVudCA9IChhcmctPmFsaWdubWVudCA+ICgqcHRyKS0+YWxpZ25tZW50KSA/IAotCWFyZy0+YWxpZ25tZW50IDogKCpwdHIpLT5hbGlnbm1lbnQ7Ci0KLSAgICAgIHB0cisrOwotICAgIH0KLQotICAvKiBTdHJ1Y3R1cmUgc2l6ZSBpbmNsdWRlcyB0YWlsIHBhZGRpbmcuICBUaGlzIGlzIGltcG9ydGFudCBmb3IKLSAgICAgc3RydWN0dXJlcyB0aGF0IGZpdCBpbiBvbmUgcmVnaXN0ZXIgb24gQUJJcyBsaWtlIHRoZSBQb3dlclBDNjQKLSAgICAgTGludXggQUJJIHRoYXQgcmlnaHQganVzdGlmeSBzbWFsbCBzdHJ1Y3RzIGluIGEgcmVnaXN0ZXIuCi0gICAgIEl0J3MgYWxzbyBuZWVkZWQgZm9yIG5lc3RlZCBzdHJ1Y3R1cmUgbGF5b3V0LCBmb3IgZXhhbXBsZQotICAgICBzdHJ1Y3QgQSB7IGxvbmcgYTsgY2hhciBiOyB9OyBzdHJ1Y3QgQiB7IHN0cnVjdCBBIHg7IGNoYXIgeTsgfTsKLSAgICAgc2hvdWxkIGZpbmQgeSBhdCBhbiBvZmZzZXQgb2YgMipzaXplb2YobG9uZykgYW5kIHJlc3VsdCBpbiBhCi0gICAgIHRvdGFsIHNpemUgb2YgMypzaXplb2YobG9uZykuICAqLwotICBhcmctPnNpemUgPSBBTElHTiAoYXJnLT5zaXplLCBhcmctPmFsaWdubWVudCk7Ci0KLSAgaWYgKGFyZy0+c2l6ZSA9PSAwKQotICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gIGVsc2UKLSAgICByZXR1cm4gRkZJX09LOwotCi0gIC8qQD11c2VkZWZAKi8KLX0KLQotLyogUGVyZm9ybSBtYWNoaW5lIGluZGVwZW5kZW50IGZmaV9jaWYgcHJlcGFyYXRpb24sIHRoZW4gY2FsbAotICAgbWFjaGluZSBkZXBlbmRlbnQgcm91dGluZS4gKi8KLQotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWYoLypAb3V0QCovIC8qQHBhcnRpYWxAKi8gZmZpX2NpZiAqY2lmLCAKLQkJCWZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsIAotCQkJLypAZGVwZW5kZW50QCovIC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV90eXBlICpydHlwZSwgCi0JCQkvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKiphdHlwZXMpCi17Ci0gIHVuc2lnbmVkIGJ5dGVzID0gMDsKLSAgdW5zaWduZWQgaW50IGk7Ci0gIGZmaV90eXBlICoqcHRyOwotCi0gIEZGSV9BU1NFUlQoY2lmICE9IE5VTEwpOwotICBGRklfQVNTRVJUKChhYmkgPiBGRklfRklSU1RfQUJJKSAmJiAoYWJpIDw9IEZGSV9ERUZBVUxUX0FCSSkpOwotCi0gIGNpZi0+YWJpID0gYWJpOwotICBjaWYtPmFyZ190eXBlcyA9IGF0eXBlczsKLSAgY2lmLT5uYXJncyA9IG5hcmdzOwotICBjaWYtPnJ0eXBlID0gcnR5cGU7Ci0KLSAgY2lmLT5mbGFncyA9IDA7Ci0KLSAgLyogSW5pdGlhbGl6ZSB0aGUgcmV0dXJuIHR5cGUgaWYgbmVjZXNzYXJ5ICovCi0gIC8qQC11c2VkZWZAKi8KLSAgaWYgKChjaWYtPnJ0eXBlLT5zaXplID09IDApICYmIChpbml0aWFsaXplX2FnZ3JlZ2F0ZShjaWYtPnJ0eXBlKSAhPSBGRklfT0spKQotICAgIHJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0gIC8qQD11c2VkZWZAKi8KLQotICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSByZXR1cm4gdHlwZSAqLwotICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoY2lmLT5ydHlwZSk7Ci0KLSAgLyogeDg2LTY0IGFuZCBzMzkwIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gaXMgaGFuZGxlZCBpbiBwcmVwX21hY2hkZXAuICAqLwotI2lmICFkZWZpbmVkIE02OEsgJiYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwCi0gIC8qIE1ha2Ugc3BhY2UgZm9yIHRoZSByZXR1cm4gc3RydWN0dXJlIHBvaW50ZXIgKi8KLSAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAvKiBNU1ZDIHJldHVybnMgc21hbGwgc3RydWN0dXJlcyBpbiByZWdpc3RlcnMuICBCdXQgd2UgaGF2ZSBhIGRpZmZlcmVudAotICAgICAgd29ya2Fyb3VuZDogcHJldGVuZCBpbnQzMiBvciBpbnQ2NCByZXR1cm4gdHlwZSwgYW5kIGNvbnZlcnRpbmcgdG8KLSAgICAgIHN0cnVjdHVyZSBhZnRlcndhcmRzLiAqLwotI2lmZGVmIFNQQVJDCi0gICAgICAmJiAoY2lmLT5hYmkgIT0gRkZJX1Y5IHx8IGNpZi0+cnR5cGUtPnNpemUgPiAzMikKLSNlbmRpZgotICAgICAgKQotICAgIGJ5dGVzID0gU1RBQ0tfQVJHX1NJWkUoc2l6ZW9mKHZvaWQqKSk7Ci0jZW5kaWYKLQotICBmb3IgKHB0ciA9IGNpZi0+YXJnX3R5cGVzLCBpID0gY2lmLT5uYXJnczsgaSA+IDA7IGktLSwgcHRyKyspCi0gICAgewotCi0gICAgICAvKiBJbml0aWFsaXplIGFueSB1bmluaXRpYWxpemVkIGFnZ3JlZ2F0ZSB0eXBlIGRlZmluaXRpb25zICovCi0gICAgICBpZiAoKCgqcHRyKS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKQotCXJldHVybiBGRklfQkFEX1RZUEVERUY7Ci0KLSAgICAgIC8qIFBlcmZvcm0gYSBzYW5pdHkgY2hlY2sgb24gdGhlIGFyZ3VtZW50IHR5cGUsIGRvIHRoaXMgCi0JIGNoZWNrIGFmdGVyIHRoZSBpbml0aWFsaXphdGlvbi4gICovCi0gICAgICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoKnB0cik7Ci0KLSNpZiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAKLSNpZmRlZiBTUEFSQwotICAgICAgaWYgKCgoKnB0ciktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0JICAgJiYgKCgqcHRyKS0+c2l6ZSA+IDE2IHx8IGNpZi0+YWJpICE9IEZGSV9WOSkpCi0JICB8fCAoKCpwdHIpLT50eXBlID09IEZGSV9UWVBFX0xPTkdET1VCTEUKLQkgICAgICAmJiBjaWYtPmFiaSAhPSBGRklfVjkpKQotCWJ5dGVzICs9IHNpemVvZih2b2lkKik7Ci0gICAgICBlbHNlCi0jZW5kaWYKLQl7Ci0jaWZuZGVmIF9NU0NfVkVSCi0JCS8qIERvbid0IGtub3cgaWYgdGhpcyBpcyBhIGxpYmZmaSBidWcgb3Igbm90LiAgQXQgbGVhc3Qgb24KLQkJICAgV2luZG93cyB3aXRoIE1TVkMsIGZ1bmN0aW9uIGNhbGwgcGFyYW1ldGVycyBhcmUgKm5vdCoKLQkJICAgYWxpZ25lZCBpbiB0aGUgc2FtZSB3YXkgYXMgc3RydWN0dXJlIGZpZWxkcyBhcmUsIHRoZXkgYXJlCi0JCSAgIG9ubHkgYWxpZ25lZCBpbiBpbnRlZ2VyIGJvdW5kYXJpZXMuCi0KLQkJICAgVGhpcyBkb2Vzbid0IGRvIGFueSBoYXJtIGZvciBjZGVjbCBmdW5jdGlvbnMgYW5kIGNsb3N1cmVzLAotCQkgICBzaW5jZSB0aGUgY2FsbGVyIGNsZWFucyB1cCB0aGUgc3RhY2ssIGJ1dCBpdCBpcyB3cm9uZyBmb3IKLQkJICAgc3RkY2FsbCBmdW5jdGlvbnMgd2hlcmUgdGhlIGNhbGxlZSBjbGVhbnMuCi0JCSovCi0KLQkgIC8qIEFkZCBhbnkgcGFkZGluZyBpZiBuZWNlc3NhcnkgKi8KLQkgIGlmICgoKCpwdHIpLT5hbGlnbm1lbnQgLSAxKSAmIGJ5dGVzKQotCSAgICBieXRlcyA9IEFMSUdOKGJ5dGVzLCAoKnB0ciktPmFsaWdubWVudCk7Ci0JICAKLSNlbmRpZgotCSAgYnl0ZXMgKz0gU1RBQ0tfQVJHX1NJWkUoKCpwdHIpLT5zaXplKTsKLQl9Ci0jZW5kaWYKLSAgICB9Ci0KLSAgY2lmLT5ieXRlcyA9IGJ5dGVzOwotCi0gIC8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KLSAgcmV0dXJuIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGNpZik7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9zeXN2LmFzbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjc4YjkwLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL3N5c3YuYXNtCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLTsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLTsgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5OCBSZWQgSGF0LCBJbmMuCi07ICAKLTsgIEFSTSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKLTsKLTsgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotOyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi07ICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLTsgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLTsgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotOyAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi07ICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci07Ci07ICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotOyAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi07Ci07ICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi07ICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi07ICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi07ICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi07ICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLTsgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotOyAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotOyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotOyNkZWZpbmUgTElCRkZJX0FTTSAgICAgCi07I2luY2x1ZGUgPGZmaWNvbmZpZy5oPgotOyNpbmNsdWRlIDxmZmkuaD4KLTsjaWZkZWYgSEFWRV9NQUNISU5FX0FTTV9ICi07I2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+Ci07I2Vsc2UKLTsjaWZkZWYgX19VU0VSX0xBQkVMX1BSRUZJWF9fCi07I2RlZmluZSBDT05DQVQxKGEsIGIpIENPTkNBVDIoYSwgYikKLTsjZGVmaW5lIENPTkNBVDIoYSwgYikgYSAjIyBiCi0KLTsvKiBVc2UgdGhlIHJpZ2h0IHByZWZpeCBmb3IgZ2xvYmFsIGxhYmVscy4gICovCi07I2RlZmluZSBDTkFNRSh4KSBDT05DQVQxIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIHgpCi07I2Vsc2UKLTsjZGVmaW5lIENOQU1FKHgpIHgKLTsjZW5kaWYKLTsjZGVmaW5lIEVOVFJZKHgpIC5nbG9ibCBDTkFNRSh4KTsgLnR5cGUgQ05BTUUoeCksJWZ1bmN0aW9uOyBDTkFNRSh4KToKLTsjZW5kaWYKLQotCi1GRklfVFlQRV9WT0lEICAgICAgIEVRVSAwCi1GRklfVFlQRV9JTlQgICAgICAgIEVRVSAxCi1GRklfVFlQRV9GTE9BVCAgICAgIEVRVSAyCi1GRklfVFlQRV9ET1VCTEUgICAgIEVRVSAzCi07RkZJX1RZUEVfTE9OR0RPVUJMRSBFUVUgNAotRkZJX1RZUEVfVUlOVDggICAgICBFUVUgNQotRkZJX1RZUEVfU0lOVDggICAgICBFUVUgNgotRkZJX1RZUEVfVUlOVDE2ICAgICBFUVUgNwotRkZJX1RZUEVfU0lOVDE2ICAgICBFUVUgOAotRkZJX1RZUEVfVUlOVDMyICAgICBFUVUgOQotRkZJX1RZUEVfU0lOVDMyICAgICBFUVUgMTAKLUZGSV9UWVBFX1VJTlQ2NCAgICAgRVFVIDExCi1GRklfVFlQRV9TSU5UNjQgICAgIEVRVSAxMgotRkZJX1RZUEVfU1RSVUNUICAgICBFUVUgMTMKLUZGSV9UWVBFX1BPSU5URVIgICAgRVFVIDE0Ci0KLTsgV2luQ0UgYWx3YXlzIHVzZXMgc29mdHdhcmUgZmxvYXRpbmcgcG9pbnQgKEkgdGhpbmspCi1fX1NPRlRGUF9fIEVRVSB7VFJVRX0KLQotCi0gICAgQVJFQSB8LnRleHR8LCBDT0RFLCBBUk0gICAgIDsgLnRleHQKLQotCi0gICAgOyBhMTogICBmZmlfcHJlcF9hcmdzCi0gICAgOyBhMjogICAmZWNpZgotICAgIDsgYTM6ICAgY2lmLT5ieXRlcwotICAgIDsgYTQ6ICAgZmlnLT5mbGFncwotICAgIDsgc3ArMDogZWNpZi5ydmFsdWUKLSAgICA7IHNwKzQ6IGZuCi0KLSAgICA7IFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgotO0VOVFJZKGZmaV9jYWxsX1NZU1YpCi0KLSAgICBFWFBPUlQgfGZmaV9jYWxsX1NZU1Z8Ci0KLXxmZmlfY2FsbF9TWVNWfCBQUk9DCi0KLSAgICA7IFNhdmUgcmVnaXN0ZXJzCi0gICAgc3RtZmQgc3AhLCB7YTEtYTQsIGZwLCBscn0KLSAgICBtb3YgICBmcCwgc3AKLQotICAgIDsgTWFrZSByb29tIGZvciBhbGwgb2YgdGhlIG5ldyBhcmdzLgotICAgIHN1YiAgIHNwLCBmcCwgYTMKLQotICAgIDsgUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uCi0gICAgbW92ICAgaXAsIGExCi0gICAgbW92ICAgYTEsIHNwCi0gICAgOyAgICAgYTIgYWxyZWFkeSBzZXQKLQotICAgIDsgQW5kIGNhbGwKLSAgICBtb3YgICBsciwgcGMKLSAgICBtb3YgICBwYywgaXAKLQotICAgIDsgbW92ZSBmaXJzdCA0IHBhcmFtZXRlcnMgaW4gcmVnaXN0ZXJzCi0gICAgbGRyICAgYTEsIFtzcCwgIzBdCi0gICAgbGRyICAgYTIsIFtzcCwgIzRdCi0gICAgbGRyICAgYTMsIFtzcCwgIzhdCi0gICAgbGRyICAgYTQsIFtzcCwgIzEyXQotCi0gICAgOyBhbmQgYWRqdXN0IHN0YWNrCi0gICAgbGRyICAgaXAsIFtmcCwgIzhdCi0gICAgY21wICAgaXAsICMxNgotICAgIG1vdmdlIGlwLCAjMTYKLSAgICBhZGQgICBzcCwgc3AsIGlwCi0KLSAgICA7IGNhbGwgZnVuY3Rpb24KLSAgICBtb3YgICBsciwgcGMKLSAgICBsZHIgICBwYywgW2ZwLCAjMjhdCi0KLSAgICA7IFJlbW92ZSB0aGUgc3BhY2Ugd2UgcHVzaGVkIGZvciB0aGUgYXJncwotICAgIG1vdiAgIHNwLCBmcAotCi0gICAgOyBMb2FkIGEzIHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgIGxkciAgIGEzLCBbc3AsICMyNF0KLQotICAgIDsgTG9hZCBhNCB3aXRoIHRoZSByZXR1cm4gdHlwZSBjb2RlIAotICAgIGxkciAgIGE0LCBbc3AsICMxMl0KLQotICAgIDsgSWYgdGhlIHJldHVybiB2YWx1ZSBwb2ludGVyIGlzIE5VTEwsIGFzc3VtZSBubyByZXR1cm4gdmFsdWUuCi0gICAgY21wICAgYTMsICMwCi0gICAgYmVxICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBJTlQKLSAgICBjbXAgICBhNCwgI0ZGSV9UWVBFX0lOVAotICAgIHN0cmVxIGExLCBbYTNdCi0gICAgYmVxICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBGTE9BVAotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9GTE9BVAotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBzdHJlcSAgIGExLCBbYTNdCi0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxcyAgZjAsIFthM10KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBET1VCTEUgb3IgTE9OR0RPVUJMRQotICAgIGNtcCAgICAgYTQsICNGRklfVFlQRV9ET1VCTEUKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgc3RtZXFpYSBhMywge2ExLCBhMn0KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFkICBmMCwgW2EzXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjYWxsX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIFNJTlQ2NCBvciBVSU5UNjQKLSAgICBjbXAgICAgIGE0LCAjRkZJX1RZUEVfU0lOVDY0Ci0gICAgc3RtZXFpYSBhMywge2ExLCBhMn0KLQotY2FsbF9lcGlsb2d1ZQotICAgIGxkbWZkICAgc3AhLCB7YTEtYTQsIGZwLCBwY30KLQotOy5mZmlfY2FsbF9TWVNWX2VuZDoKLSAgICA7LnNpemUgICAgQ05BTUUoZmZpX2NhbGxfU1lTViksLmZmaV9jYWxsX1NZU1ZfZW5kLUNOQU1FKGZmaV9jYWxsX1NZU1YpCi0gICAgRU5EUAotCi0KLVJFU0VSVkVfUkVUVVJOIEVRVSAxNgotCi0gICAgOyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgdHJhbXBvbGluZQotICAgIDsgSXQgaXMgTk9UIGNhbGxhYmxlIGZyb20gQwotICAgIDsgaXAgPSBwb2ludGVyIHRvIHN0cnVjdCBmZmlfY2xvc3VyZQotCi0gICAgSU1QT1JUIHxmZmlfY2xvc3VyZV9TWVNWX2lubmVyfAotCi0gICAgRVhQT1JUIHxmZmlfY2xvc3VyZV9TWVNWfAotfGZmaV9jbG9zdXJlX1NZU1Z8IFBST0MKLQotICAgIDsgU3RvcmUgdGhlIGFyZ3VtZW50IHJlZ2lzdGVycyBvbiB0aGUgc3RhY2sKLSAgICBzdG1mZCAgIHNwISwge2ExLWE0fQotICAgIDsgUHVzaCB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byB0aGUgc3RhY2sKLSAgICBzdG1mZCAgIHNwISwge2xyfQotCi0gICAgbW92ICAgICBhMSwgaXAgICAgICAgICAgICA7IGZpcnN0IGFyZyA9IGFkZHJlc3Mgb2YgZmZpX2Nsb3N1cmUKLSAgICBhZGQgICAgIGEyLCBzcCwgIzQgICAgICAgIDsgc2Vjb25kIGFyZyA9IHNwKzQgKHBvaW50cyB0byBzYXZlZCBhMSkKLQotICAgIDsgQWxsb2NhdGUgc3BhY2UgZm9yIGEgbm9uLXN0cnVjdCByZXR1cm4gdmFsdWUKLSAgICBzdWIgICAgIHNwLCBzcCwgI1JFU0VSVkVfUkVUVVJOCi0gICAgbW92ICAgICBhMywgc3AgICAgICAgICAgICA7IHRoaXJkIGFyZyA9IHJldHVybiB2YWx1ZSBhZGRyZXNzCi0KLSAgICA7IHN0YXRpYyB1bnNpZ25lZCBpbnQKLSAgICA7IGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGZmaV9jbG9zdXJlICpjbG9zdXJlLCBjaGFyICppbl9hcmdzLCB2b2lkICpydmFsdWUpCi0gICAgYmwgICAgICBmZmlfY2xvc3VyZV9TWVNWX2lubmVyCi0gICAgOyBhMSBub3cgY29udGFpbnMgdGhlIHJldHVybiB0eXBlIGNvZGUgCi0KLSAgICA7IEF0IHRoaXMgcG9pbnQgdGhlIHJldHVybiB2YWx1ZSBpcyBvbiB0aGUgc3RhY2sKLSAgICA7IFRyYW5zZmVyIGl0IHRvIHRoZSBjb3JyZWN0IHJlZ2lzdGVycyBpZiBuZWNlc3NhcnkKLQotOyByZXR1cm4gSU5UCi0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX0lOVAotICAgIGxkcmVxICAgYTEsIFtzcF0KLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gRkxPQVQKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfRkxPQVQKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgbGRyZXEgICBhMSwgW3NwXQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcXMgIGYwLCBbc3BdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gRE9VQkxFIG9yIExPTkdET1VCTEUKLSAgICBjbXAgICAgIGExLCAjRkZJX1RZUEVfRE9VQkxFCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIGxkbWVxaWEgc3AsIHthMSwgYTJ9Ci0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxZCAgZjAsIFtzcF0KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2xvc3VyZV9lcGlsb2d1ZQotCi07IHJldHVybiBTSU5UNjQgb3IgVUlOVDY0Ci0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX1NJTlQ2NAotICAgIGxkbWVxaWEgc3AsIHthMSwgYTJ9Ci0KLWNsb3N1cmVfZXBpbG9ndWUKLSAgICBhZGQgICAgIHNwLCBzcCwgI1JFU0VSVkVfUkVUVVJOICAgOyByZW1vdmUgcmV0dXJuIHZhbHVlIGJ1ZmZlcgotICAgIGxkbWZkICAgc3AhLCB7aXB9ICAgICAgICAgOyBpcCA9IHBvcCByZXR1cm4gYWRkcmVzcwotICAgIGFkZCAgICAgc3AsIHNwLCAjMTYgICAgICAgOyByZW1vdmUgc2F2ZWQgYXJndW1lbnQgcmVnaXN0ZXJzIHthMS1hNH0gZnJvbSB0aGUgc3RhY2sKLSAgICBtb3YgICAgIHBjLCBpcCAgICAgICAgICAgIDsgcmV0dXJuCi0KLSAgICBFTkRQICAgIDsgZmZpX2Nsb3N1cmVfU1lTVgotCi0gICAgRU5ECmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCmluZGV4IDIyOGY0OTcuLjE4ZWYzMzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCisrKyBiL01vZHVsZXMvX2N1cnNlc19wYW5lbC5jCkBAIC02LDcgKzYsNyBAQAogCiAvKiBSZWxlYXNlIE51bWJlciAqLwogCi1zdGF0aWMgY2hhciAqUHlDdXJzZXNWZXJzaW9uID0gIjIuMSI7CitzdGF0aWMgY29uc3QgY2hhciBQeUN1cnNlc1ZlcnNpb25bXSA9ICIyLjEiOwogCiAvKiBJbmNsdWRlcyAqLwogCkBAIC01Niw3ICs1Niw3IEBACiAgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNoYXIgKmZuYW1lKQorUHlDdXJzZXNDaGVja0VSUihpbnQgY29kZSwgY29uc3QgY2hhciAqZm5hbWUpCiB7CiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jIGIvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKaW5kZXggODk2ZDQwZC4uM2JmMmNhNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMKQEAgLTIzMDcsNyArMjMwNyw3IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc3RyZWFtLCAmUHlJZF9yZWFkLCAiIik7CisgICAgZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc3RyZWFtLCAmUHlJZF9yZWFkLCBOVUxMKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlmICghUHlCeXRlc19DaGVjayhkYXRhKSkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYyBiL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKaW5kZXggZjQxOWNiMi4uNWRkZjY1MCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCkBAIC01Niw2ICs1Niw3IEBACiAjZGVmaW5lIERBVEVfR0VUX01JTlVURSAgICAgICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfTUlOVVRFCiAjZGVmaW5lIERBVEVfR0VUX1NFQ09ORCAgICAgICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfU0VDT05ECiAjZGVmaW5lIERBVEVfR0VUX01JQ1JPU0VDT05EICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfTUlDUk9TRUNPTkQKKyNkZWZpbmUgREFURV9HRVRfRk9MRCAgICAgICAgICAgUHlEYXRlVGltZV9EQVRFX0dFVF9GT0xECiAKIC8qIERhdGUgYWNjZXNzb3JzIGZvciBkYXRlIGFuZCBkYXRldGltZS4gKi8KICNkZWZpbmUgU0VUX1lFQVIobywgdikgICAgICAgICAgKCgobyktPmRhdGFbMF0gPSAoKHYpICYgMHhmZjAwKSA+PiA4KSwgXApAQCAtNzEsMTIgKzcyLDE0IEBACiAgICAgKCgobyktPmRhdGFbN10gPSAoKHYpICYgMHhmZjAwMDApID4+IDE2KSwgXAogICAgICAoKG8pLT5kYXRhWzhdID0gKCh2KSAmIDB4MDBmZjAwKSA+PiA4KSwgXAogICAgICAoKG8pLT5kYXRhWzldID0gKCh2KSAmIDB4MDAwMGZmKSkpCisjZGVmaW5lIERBVEVfU0VUX0ZPTEQobywgdikgICAoUHlEYXRlVGltZV9EQVRFX0dFVF9GT0xEKG8pID0gKHYpKQogCiAvKiBUaW1lIGFjY2Vzc29ycyBmb3IgdGltZS4gKi8KICNkZWZpbmUgVElNRV9HRVRfSE9VUiAgICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSCiAjZGVmaW5lIFRJTUVfR0VUX01JTlVURSAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfTUlOVVRFCiAjZGVmaW5lIFRJTUVfR0VUX1NFQ09ORCAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfU0VDT05ECiAjZGVmaW5lIFRJTUVfR0VUX01JQ1JPU0VDT05EICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfTUlDUk9TRUNPTkQKKyNkZWZpbmUgVElNRV9HRVRfRk9MRCAgICAgICAgICAgUHlEYXRlVGltZV9USU1FX0dFVF9GT0xECiAjZGVmaW5lIFRJTUVfU0VUX0hPVVIobywgdikgICAgIChQeURhdGVUaW1lX1RJTUVfR0VUX0hPVVIobykgPSAodikpCiAjZGVmaW5lIFRJTUVfU0VUX01JTlVURShvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX01JTlVURShvKSA9ICh2KSkKICNkZWZpbmUgVElNRV9TRVRfU0VDT05EKG8sIHYpICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfU0VDT05EKG8pID0gKHYpKQpAQCAtODQsNiArODcsNyBAQAogICAgICgoKG8pLT5kYXRhWzNdID0gKCh2KSAmIDB4ZmYwMDAwKSA+PiAxNiksIFwKICAgICAgKChvKS0+ZGF0YVs0XSA9ICgodikgJiAweDAwZmYwMCkgPj4gOCksIFwKICAgICAgKChvKS0+ZGF0YVs1XSA9ICgodikgJiAweDAwMDBmZikpKQorI2RlZmluZSBUSU1FX1NFVF9GT0xEKG8sIHYpICAgKFB5RGF0ZVRpbWVfVElNRV9HRVRfRk9MRChvKSA9ICh2KSkKIAogLyogRGVsdGEgYWNjZXNzb3JzIGZvciB0aW1lZGVsdGEuICovCiAjZGVmaW5lIEdFVF9URF9EQVlTKG8pICAgICAgICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEgKikobykpLT5kYXlzKQpAQCAtMTg0LDEyICsxODgsMTIgQEAKICAqIGFuZCB0aGUgbnVtYmVyIG9mIGRheXMgYmVmb3JlIHRoYXQgbW9udGggaW4gdGhlIHNhbWUgeWVhci4gIFRoZXNlCiAgKiBhcmUgY29ycmVjdCBmb3Igbm9uLWxlYXAgeWVhcnMgb25seS4KICAqLwotc3RhdGljIGludCBfZGF5c19pbl9tb250aFtdID0geworc3RhdGljIGNvbnN0IGludCBfZGF5c19pbl9tb250aFtdID0gewogICAgIDAsIC8qIHVudXNlZDsgdGhpcyB2ZWN0b3IgdXNlcyAxLWJhc2VkIGluZGV4aW5nICovCiAgICAgMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMQogfTsKIAotc3RhdGljIGludCBfZGF5c19iZWZvcmVfbW9udGhbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgX2RheXNfYmVmb3JlX21vbnRoW10gPSB7CiAgICAgMCwgLyogdW51c2VkOyB0aGlzIHZlY3RvciB1c2VzIDEtYmFzZWQgaW5kZXhpbmcgKi8KICAgICAwLCAzMSwgNTksIDkwLCAxMjAsIDE1MSwgMTgxLCAyMTIsIDI0MywgMjczLCAzMDQsIDMzNAogfTsKQEAgLTQxNyw3ICs0MjEsNyBAQAogICogYXJlbid0LCByYWlzZSBWYWx1ZUVycm9yIGFuZCByZXR1cm4gLTEuCiAgKi8KIHN0YXRpYyBpbnQKLWNoZWNrX3RpbWVfYXJncyhpbnQgaCwgaW50IG0sIGludCBzLCBpbnQgdXMpCitjaGVja190aW1lX2FyZ3MoaW50IGgsIGludCBtLCBpbnQgcywgaW50IHVzLCBpbnQgZm9sZCkKIHsKICAgICBpZiAoaCA8IDAgfHwgaCA+IDIzKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtNDM5LDYgKzQ0MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3Jvc2Vjb25kIG11c3QgYmUgaW4gMC4uOTk5OTk5Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZm9sZCBtdXN0IGJlIGVpdGhlciAwIG9yIDEiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjc0LDggKzY4Myw4IEBACiAKIC8qIENyZWF0ZSBhIGRhdGV0aW1lIGluc3RhbmNlIHdpdGggbm8gcmFuZ2UgY2hlY2tpbmcuICovCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3X2RhdGV0aW1lX2V4KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLAotICAgICAgICAgICAgIGludCBzZWNvbmQsIGludCB1c2Vjb25kLCBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCituZXdfZGF0ZXRpbWVfZXgyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLAorICAgICAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgaW50IGZvbGQsIFB5VHlwZU9iamVjdCAqdHlwZSkKIHsKICAgICBQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmOwogICAgIGNoYXIgYXdhcmUgPSB0emluZm8gIT0gUHlfTm9uZTsKQEAgLTY5MiwxOCArNzAxLDI3IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgIHNlbGYtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgfQorICAgICAgICBEQVRFX1NFVF9GT0xEKHNlbGYsIGZvbGQpOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKIH0KIAotI2RlZmluZSBuZXdfZGF0ZXRpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbykgICAgICAgICAgIFwKLSAgICBuZXdfZGF0ZXRpbWVfZXgoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgICAgICAgICAgICBcCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X2RhdGV0aW1lX2V4KGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksIGludCBob3VyLCBpbnQgbWludXRlLAorICAgICAgICAgICAgICAgIGludCBzZWNvbmQsIGludCB1c2Vjb25kLCBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvLCAwLCB0eXBlKTsKK30KKworI2RlZmluZSBuZXdfZGF0ZXRpbWUoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCkgXAorICAgIG5ld19kYXRldGltZV9leDIoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCwgXAogICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9EYXRlVGltZVR5cGUpCiAKIC8qIENyZWF0ZSBhIHRpbWUgaW5zdGFuY2Ugd2l0aCBubyByYW5nZSBjaGVja2luZy4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1uZXdfdGltZV9leChpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsCi0gICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvLCBQeVR5cGVPYmplY3QgKnR5cGUpCituZXdfdGltZV9leDIoaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCB1c2Vjb25kLAorICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8sIGludCBmb2xkLCBQeVR5cGVPYmplY3QgKnR5cGUpCiB7CiAgICAgUHlEYXRlVGltZV9UaW1lICpzZWxmOwogICAgIGNoYXIgYXdhcmUgPSB0emluZm8gIT0gUHlfTm9uZTsKQEAgLTcyMCwxMiArNzM4LDIwIEBACiAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgIHNlbGYtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgfQorICAgICAgICBUSU1FX1NFVF9GT0xEKHNlbGYsIGZvbGQpOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKIH0KIAotI2RlZmluZSBuZXdfdGltZShoaCwgbW0sIHNzLCB1cywgdHppbmZvKSAgICAgICAgICAgICAgICBcCi0gICAgbmV3X3RpbWVfZXgoaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgJlB5RGF0ZVRpbWVfVGltZVR5cGUpCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X3RpbWVfZXgoaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCB1c2Vjb25kLAorICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIHJldHVybiBuZXdfdGltZV9leDIoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIHR6aW5mbywgMCwgdHlwZSk7Cit9CisKKyNkZWZpbmUgbmV3X3RpbWUoaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBuZXdfdGltZV9leDIoaGgsIG1tLCBzcywgdXMsIHR6aW5mbywgZm9sZCwgJlB5RGF0ZVRpbWVfVGltZVR5cGUpCiAKIC8qIENyZWF0ZSBhIHRpbWVkZWx0YSBpbnN0YW5jZS4gIE5vcm1hbGl6ZSB0aGUgbWVtYmVycyBpZmYgbm9ybWFsaXplIGlzCiAgKiB0cnVlLiAgUGFzc2luZyBmYWxzZSBpcyBhIHNwZWVkIG9wdGltaXphdGlvbiwgaWYgeW91IGtub3cgZm9yIHN1cmUKQEAgLTg3Myw3ICs4OTksNyBAQAogICogdGhpcyByZXR1cm5zIE5VTEwuICBFbHNlIHJlc3VsdCBpcyByZXR1cm5lZC4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfdHppbmZvX21ldGhvZChQeU9iamVjdCAqdHppbmZvLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHppbmZvYXJnKQorY2FsbF90emluZm9fbWV0aG9kKFB5T2JqZWN0ICp0emluZm8sIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp0emluZm9hcmcpCiB7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKIApAQCAtODg3LDEwICs5MTMsMTAgQEAKICAgICBpZiAob2Zmc2V0ID09IFB5X05vbmUgfHwgb2Zmc2V0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBvZmZzZXQ7CiAgICAgaWYgKFB5RGVsdGFfQ2hlY2sob2Zmc2V0KSkgewotICAgICAgICBpZiAoR0VUX1REX01JQ1JPU0VDT05EUyhvZmZzZXQpICE9IDAgfHwgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSAlIDYwICE9IDApIHsKKyAgICAgICAgaWYgKEdFVF9URF9NSUNST1NFQ09ORFMob2Zmc2V0KSAhPSAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAib2Zmc2V0IG11c3QgYmUgYSB0aW1lZGVsdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiByZXByZXNlbnRpbmcgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIHNlY29uZHMiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICgoR0VUX1REX0RBWVMob2Zmc2V0KSA9PSAtMSAmJiBHRVRfVERfU0VDT05EUyhvZmZzZXQpID09IDApIHx8CkBAIC0xMDAyLDYgKzEwMjgsMzAgQEAKICAgICByZXR1cm4gcmVwcjsKIH0KIAorLyogcmVwciBpcyBsaWtlICJzb21lY2xhc3MoYXJnMSwgYXJnMikiLiAgSWYgZm9sZCBpc24ndCAwLAorICogc3R1ZmYKKyAqICAgICAiLCBmb2xkPSIgKyByZXByKHR6aW5mbykKKyAqIGJlZm9yZSB0aGUgY2xvc2luZyAiKSIuCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCithcHBlbmRfa2V5d29yZF9mb2xkKFB5T2JqZWN0ICpyZXByLCBpbnQgZm9sZCkKK3sKKyAgICBQeU9iamVjdCAqdGVtcDsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVwcikpOworICAgIGlmIChmb2xkID09IDApCisgICAgICAgIHJldHVybiByZXByOworICAgIC8qIEdldCByaWQgb2YgdGhlIHRyYWlsaW5nICcpJy4gKi8KKyAgICBhc3NlcnQoUHlVbmljb2RlX1JFQURfQ0hBUihyZXByLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKS0xKSA9PSAnKScpOworICAgIHRlbXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHJlcHIsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpIC0gMSk7CisgICAgUHlfREVDUkVGKHJlcHIpOworICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUsIGZvbGQ9JWQpIiwgdGVtcCwgZm9sZCk7CisgICAgUHlfREVDUkVGKHRlbXApOworICAgIHJldHVybiByZXByOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmluZyBmb3JtYXQgaGVscGVycy4KICAqLwpAQCAtMTAwOSwxMCArMTA1OSwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZvcm1hdF9jdGltZShQeURhdGVUaW1lX0RhdGUgKmRhdGUsIGludCBob3VycywgaW50IG1pbnV0ZXMsIGludCBzZWNvbmRzKQogewotICAgIHN0YXRpYyBjb25zdCBjaGFyICpEYXlOYW1lc1tdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgRGF5TmFtZXNbXSA9IHsKICAgICAgICAgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IiwgIlN1biIKICAgICB9OwotICAgIHN0YXRpYyBjb25zdCBjaGFyICpNb250aE5hbWVzW10gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBNb250aE5hbWVzW10gPSB7CiAgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKICAgICB9OwpAQCAtMTA1NywxMCArMTEwNyw4IEBACiAgICAgfQogICAgIC8qIE9mZnNldCBpcyBub3JtYWxpemVkLCBzbyBpdCBpcyBuZWdhdGl2ZSBpZiBkYXlzIDwgMCAqLwogICAgIGlmIChHRVRfVERfREFZUyhvZmZzZXQpIDwgMCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IG9mZnNldDsKICAgICAgICAgc2lnbiA9ICctJzsKLSAgICAgICAgb2Zmc2V0ID0gZGVsdGFfbmVnYXRpdmUoKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIFB5X1NFVFJFRihvZmZzZXQsIGRlbHRhX25lZ2F0aXZlKChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0KSk7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0xMDcyLDEwICsxMTIwLDExIEBACiAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgbWludXRlcyA9IGRpdm1vZChzZWNvbmRzLCA2MCwgJnNlY29uZHMpOwogICAgIGhvdXJzID0gZGl2bW9kKG1pbnV0ZXMsIDYwLCAmbWludXRlcyk7Ci0gICAgYXNzZXJ0KHNlY29uZHMgPT0gMCk7Ci0gICAgLyogWFhYIGlnbm9yZSBzdWItbWludXRlIGRhdGEsIGN1cnJlbnRseSBub3QgYWxsb3dlZC4gKi8KLSAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgYnVmbGVuLCAiJWMlMDJkJXMlMDJkIiwgc2lnbiwgaG91cnMsIHNlcCwgbWludXRlcyk7Ci0KKyAgICBpZiAoc2Vjb25kcyA9PSAwKQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgYnVmbGVuLCAiJWMlMDJkJXMlMDJkIiwgc2lnbiwgaG91cnMsIHNlcCwgbWludXRlcyk7CisgICAgZWxzZQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZiwgYnVmbGVuLCAiJWMlMDJkJXMlMDJkJXMlMDJkIiwgc2lnbiwgaG91cnMsCisgICAgICAgICAgICAgICAgICAgICAgc2VwLCBtaW51dGVzLCBzZXAsIHNlY29uZHMpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzIzLDcgKzEzNzIsNyBAQAogICAgIGlmICh0aW1lICE9IE5VTEwpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIodGltZSk7CiAKLSAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCAiKCkiKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aW1lLCAmUHlJZF90aW1lLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjMwNyw3ICsyMzU2LDcgQEAKICAgICB7TlVMTCwgICAgICBOVUxMfSwKIH07CiAKLXN0YXRpYyBjaGFyIGRlbHRhX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGRlbHRhX2RvY1tdID0KIFB5RG9jX1NUUigiRGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRldGltZSB2YWx1ZXMuIik7CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgZGVsdGFfYXNfbnVtYmVyID0gewpAQCAtMjQ2MiwyNyArMjUxMSwxOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfbG9jYWxfZnJvbV9vYmplY3QoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKm9iaikKIHsKLSAgICBzdHJ1Y3QgdG0gKnRtOworICAgIHN0cnVjdCB0bSB0bTsKICAgICB0aW1lX3QgdDsKIAogICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZV90KG9iaiwgJnQsIF9QeVRpbWVfUk9VTkRfRkxPT1IpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHRtID0gbG9jYWx0aW1lKCZ0KTsKLSAgICBpZiAodG0gPT0gTlVMTCkgewotICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHQsICZ0bSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9tZGF5KTsKIH0KIAogLyogUmV0dXJuIG5ldyBkYXRlIGZyb20gY3VycmVudCB0aW1lLgpAQCAtMjY0OCw3ICsyNjg5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX3N0cihQeURhdGVUaW1lX0RhdGUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsIE5VTEwpOwogfQogCiAKQEAgLTI2NzQsNyArMjcxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHR1cGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF90aW1ldHVwbGUsICIoKSIpOworICAgIHR1cGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF90aW1ldHVwbGUsIE5VTEwpOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXN1bHQgPSB3cmFwX3N0cmZ0aW1lKChQeU9iamVjdCAqKXNlbGYsIGZvcm1hdCwgdHVwbGUsCkBAIC0yNzg2LDkgKzI4MjcsMTAgQEAKIHN0YXRpYyBQeV9oYXNoX3QKIGRhdGVfaGFzaChQeURhdGVUaW1lX0RhdGUgKnNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmhhc2hjb2RlID09IC0xKQorICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewogICAgICAgICBzZWxmLT5oYXNoY29kZSA9IGdlbmVyaWNfaGFzaCgKICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopc2VsZi0+ZGF0YSwgX1B5RGF0ZVRpbWVfREFURV9EQVRBU0laRSk7CisgICAgfQogCiAgICAgcmV0dXJuIHNlbGYtPmhhc2hjb2RlOwogfQpAQCAtMjg4Niw3ICsyOTI4LDcgQEAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgZGF0ZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkYXRlX2RvY1tdID0KIFB5RG9jX1NUUigiZGF0ZSh5ZWFyLCBtb250aCwgZGF5KSAtLT4gZGF0ZSBvYmplY3QiKTsKIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBkYXRlX2FzX251bWJlciA9IHsKQEAgLTMwNDcsMTAgKzMwODksOCBAQAogICAgIGlmIChkc3QgPT0gUHlfTm9uZSkKICAgICAgICAgZ290byBJbmNvbnNpc3RlbnQ7CiAgICAgaWYgKGRlbHRhX2Jvb2woKFB5RGF0ZVRpbWVfRGVsdGEgKilkc3QpICE9IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IGFkZF9kYXRldGltZV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilkc3QsIDEpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIGFkZF9kYXRldGltZV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilkc3QsIDEpKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBGYWlsOwogICAgIH0KQEAgLTMwODAsMzcgKzMxMjAsMzQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0emluZm9fcmVkdWNlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqc3RhdGUsICp0bXA7CisgICAgUHlPYmplY3QgKmFyZ3MsICpzdGF0ZTsKICAgICBQeU9iamVjdCAqZ2V0aW5pdGFyZ3MsICpnZXRzdGF0ZTsKICAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CiAKLSAgICB0bXAgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgZ2V0aW5pdGFyZ3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgaWYgKGdldGluaXRhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgYXJncyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0aW5pdGFyZ3MsIHRtcCk7CisgICAgICAgIGFyZ3MgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGdldGluaXRhcmdzKTsKICAgICAgICAgUHlfREVDUkVGKGdldGluaXRhcmdzKTsKICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgYXJncyA9IHRtcDsKLSAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworCisgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAKICAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRzdGF0ZV9fKTsKICAgICBpZiAoZ2V0c3RhdGUgIT0gTlVMTCkgewotICAgICAgICBzdGF0ZSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0c3RhdGUsIHRtcCk7CisgICAgICAgIHN0YXRlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhnZXRzdGF0ZSk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CiAgICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtMzExOSwxMyArMzE1NiwxMiBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBzdGF0ZSA9IFB5X05vbmU7CiAgICAgICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihzZWxmKTsKLSAgICAgICAgaWYgKGRpY3RwdHIgJiYgKmRpY3RwdHIgJiYgUHlEaWN0X1NpemUoKmRpY3RwdHIpKQorICAgICAgICBpZiAoZGljdHB0ciAmJiAqZGljdHB0ciAmJiBQeURpY3RfU2l6ZSgqZGljdHB0cikpIHsKICAgICAgICAgICAgIHN0YXRlID0gKmRpY3RwdHI7CisgICAgICAgIH0KICAgICAgICAgUHlfSU5DUkVGKHN0YXRlKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYodG1wKTsKLQogICAgIGlmIChzdGF0ZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgYXJncyk7CkBAIC0zMTU1LDcgKzMxOTEsNyBAQAogICAgIHtOVUxMLCBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgdHppbmZvX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHR6aW5mb19kb2NbXSA9CiBQeURvY19TVFIoIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIHRpbWUgem9uZSBpbmZvIG9iamVjdHMuIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9UWkluZm9UeXBlID0gewpAQCAtMzI4Nyw2ICszMzIzLDExIEBACiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5uYW1lKTsKICAgICAgICAgcmV0dXJuIHNlbGYtPm5hbWU7CiAgICAgfQorICAgIGlmICgoUHlPYmplY3QgKilzZWxmID09IFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDIHx8CisgICAgICAgICAgIChHRVRfVERfREFZUyhzZWxmLT5vZmZzZXQpID09IDAgJiYKKyAgICAgICAgICAgIEdFVF9URF9TRUNPTkRTKHNlbGYtPm9mZnNldCkgPT0gMCAmJgorICAgICAgICAgICAgR0VUX1REX01JQ1JPU0VDT05EUyhzZWxmLT5vZmZzZXQpID09IDApKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIlVUQyIpOwogICAgIC8qIE9mZnNldCBpcyBub3JtYWxpemVkLCBzbyBpdCBpcyBuZWdhdGl2ZSBpZiBkYXlzIDwgMCAqLwogICAgIGlmIChHRVRfVERfREFZUyhzZWxmLT5vZmZzZXQpIDwgMCkgewogICAgICAgICBzaWduID0gJy0nOwpAQCAtMzM4Miw3ICszNDIzLDcgQEAKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHRpbWV6b25lX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHRpbWV6b25lX2RvY1tdID0KIFB5RG9jX1NUUigiRml4ZWQgb2Zmc2V0IGZyb20gVVRDIGltcGxlbWVudGF0aW9uIG9mIHR6aW5mby4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBQeURhdGVUaW1lX1RpbWVab25lVHlwZSA9IHsKQEAgLTM0NjYsMTIgKzM1MDcsMTkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9mb2xkKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgdm9pZCAqdW51c2VkKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoVElNRV9HRVRfRk9MRChzZWxmKSk7Cit9CisKIHN0YXRpYyBQeUdldFNldERlZiB0aW1lX2dldHNldFtdID0gewogICAgIHsiaG91ciIsICAgICAgICAoZ2V0dGVyKXRpbWVfaG91cn0sCiAgICAgeyJtaW51dGUiLCAgICAgIChnZXR0ZXIpdGltZV9taW51dGV9LAogICAgIHsic2Vjb25kIiwgICAgICAoZ2V0dGVyKXB5X3RpbWVfc2Vjb25kfSwKICAgICB7Im1pY3Jvc2Vjb25kIiwgKGdldHRlcil0aW1lX21pY3Jvc2Vjb25kfSwKLSAgICB7InR6aW5mbyIsICAgICAgICAgIChnZXR0ZXIpdGltZV90emluZm99LAorICAgIHsidHppbmZvIiwgICAgICAoZ2V0dGVyKXRpbWVfdHppbmZvfSwKKyAgICB7ImZvbGQiLCAgICAgICAgKGdldHRlcil0aW1lX2ZvbGR9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzQ4MCw3ICszNTI4LDcgQEAKICAqLwogCiBzdGF0aWMgY2hhciAqdGltZV9rd3NbXSA9IHsiaG91ciIsICJtaW51dGUiLCAic2Vjb25kIiwgIm1pY3Jvc2Vjb25kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0emluZm8iLCBOVUxMfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0emluZm8iLCAiZm9sZCIsIE5VTEx9OwogCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQpAQCAtMzQ5MiwxMyArMzU0MCwxNCBAQAogICAgIGludCBzZWNvbmQgPSAwOwogICAgIGludCB1c2Vjb25kID0gMDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKKyAgICBpbnQgZm9sZCA9IDA7CiAKICAgICAvKiBDaGVjayBmb3IgaW52b2NhdGlvbiBmcm9tIHBpY2tsZSB3aXRoIF9fZ2V0c3RhdGVfXyBzdGF0ZSAqLwogICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID49IDEgJiYKICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA8PSAyICYmCiAgICAgICAgIFB5Qnl0ZXNfQ2hlY2soc3RhdGUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApKSAmJgogICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHN0YXRlKSA9PSBfUHlEYXRlVGltZV9USU1FX0RBVEFTSVpFICYmCi0gICAgICAgICgodW5zaWduZWQgY2hhcikgKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVswXSkpIDwgMjQpCisgICAgICAgICgweDdGICYgKCh1bnNpZ25lZCBjaGFyKSAoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzBdKSkpIDwgMjQpCiAgICAgewogICAgICAgICBQeURhdGVUaW1lX1RpbWUgKm1lOwogICAgICAgICBjaGFyIGF3YXJlOwpAQCAtMzUyMywxOSArMzU3MiwyNiBAQAogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgICAgIG1lLT50emluZm8gPSB0emluZm87CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGRhdGFbMF0gJiAoMSA8PCA3KSkgeworICAgICAgICAgICAgICAgIG1lLT5kYXRhWzBdIC09IDEyODsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1lOwogICAgIH0KIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU8iLCB0aW1lX2t3cywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPJGkiLCB0aW1lX2t3cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZob3VyLCAmbWludXRlLCAmc2Vjb25kLCAmdXNlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8pKSB7Ci0gICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8sICZmb2xkKSkgeworICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzZWxmID0gbmV3X3RpbWVfZXgoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIHR6aW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOworICAgICAgICBzZWxmID0gbmV3X3RpbWVfZXgyKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sIGZvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMzU4NSw2ICszNjQxLDcgQEAKICAgICBpbnQgbSA9IFRJTUVfR0VUX01JTlVURShzZWxmKTsKICAgICBpbnQgcyA9IFRJTUVfR0VUX1NFQ09ORChzZWxmKTsKICAgICBpbnQgdXMgPSBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKKyAgICBpbnQgZm9sZCA9IFRJTUVfR0VUX0ZPTEQoc2VsZik7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICBpZiAodXMpCkBAIC0zNTk3LDMzICszNjU0LDY4IEBACiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglZCwgJWQpIiwgdHlwZV9uYW1lLCBoLCBtKTsKICAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXN1bHQgPSBhcHBlbmRfa2V5d29yZF90emluZm8ocmVzdWx0LCBzZWxmLT50emluZm8pOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBmb2xkKQorICAgICAgICByZXN1bHQgPSBhcHBlbmRfa2V5d29yZF9mb2xkKHJlc3VsdCwgZm9sZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc3RyKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKIHsKLSAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsICIoKSIpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit0aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgY2hhciBidWZbMTAwXTsKKyAgICBjaGFyICp0aW1lc3BlYyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InRpbWVzcGVjIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBpbnQgdXMgPSBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKKyAgICBzdGF0aWMgY2hhciAqc3BlY3NbXVsyXSA9IHsKKyAgICAgICAgeyJob3VycyIsICIlMDJkIn0sCisgICAgICAgIHsibWludXRlcyIsICIlMDJkOiUwMmQifSwKKyAgICAgICAgeyJzZWNvbmRzIiwgIiUwMmQ6JTAyZDolMDJkIn0sCisgICAgICAgIHsibWlsbGlzZWNvbmRzIiwgIiUwMmQ6JTAyZDolMDJkLiUwM2QifSwKKyAgICAgICAgeyJtaWNyb3NlY29uZHMiLCAiJTAyZDolMDJkOiUwMmQuJTA2ZCJ9LAorICAgIH07CisgICAgc2l6ZV90IGdpdmVuX3NwZWM7CiAKLSAgICBpZiAodXMpCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDJkOiUwMmQ6JTAyZC4lMDZkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUihzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9TRUNPTkQoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDJkOiUwMmQ6JTAyZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxzOmlzb2Zvcm1hdCIsIGtleXdvcmRzLCAmdGltZXNwZWMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh0aW1lc3BlYyA9PSBOVUxMIHx8IHN0cmNtcCh0aW1lc3BlYywgImF1dG8iKSA9PSAwKSB7CisgICAgICAgIGlmICh1cyA9PSAwKSB7CisgICAgICAgICAgICAvKiBzZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG1pY3Jvc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoZ2l2ZW5fc3BlYyA9IDA7IGdpdmVuX3NwZWMgPCBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpOyBnaXZlbl9zcGVjKyspIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAodGltZXNwZWMsIHNwZWNzW2dpdmVuX3NwZWNdWzBdKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdpdmVuX3NwZWMgPT0gMykgeworICAgICAgICAgICAgICAgICAgICAvKiBtaWxsaXNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgdXMgPSB1cyAvIDEwMDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdpdmVuX3NwZWMgPT0gUHlfQVJSQVlfTEVOR1RIKHNwZWNzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIlVua25vd24gdGltZXNwZWMgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChzcGVjc1tnaXZlbl9zcGVjXVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUihzZWxmKSwgVElNRV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9TRUNPTkQoc2VsZiksIHVzKTsKKyAgICB9CiAKICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM3NTAsOSArMzg0MiwyMyBAQAogdGltZV9oYXNoKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKLSAgICAgICAgUHlPYmplY3QgKm9mZnNldDsKLQotICAgICAgICBvZmZzZXQgPSB0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKm9mZnNldCwgKnNlbGYwOworICAgICAgICBpZiAoREFURV9HRVRfRk9MRChzZWxmKSkgeworICAgICAgICAgICAgc2VsZjAgPSBuZXdfdGltZV9leDIoREFURV9HRVRfSE9VUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKHNlbGYpID8gc2VsZi0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFB5X1RZUEUoc2VsZikpOworICAgICAgICAgICAgaWYgKHNlbGYwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsZjAgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYwKTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPSB0aW1lX3V0Y29mZnNldChzZWxmMCwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmMCk7CiAKICAgICAgICAgaWYgKG9mZnNldCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMzc5OCwxNSArMzkwNCwyNCBAQAogICAgIGludCBzcyA9IFRJTUVfR0VUX1NFQ09ORChzZWxmKTsKICAgICBpbnQgdXMgPSBUSU1FX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKICAgICBQeU9iamVjdCAqdHppbmZvID0gSEFTVFpJTkZPKHNlbGYpID8gc2VsZi0+dHppbmZvIDogUHlfTm9uZTsKKyAgICBpbnQgZm9sZCA9IFRJTUVfR0VUX0ZPTEQoc2VsZik7CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaU86cmVwbGFjZSIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPJGk6cmVwbGFjZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVfa3dzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGgsICZtbSwgJnNzLCAmdXMsICZ0emluZm8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGgsICZtbSwgJnNzLCAmdXMsICZ0emluZm8sICZmb2xkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaWlpTyIsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjbG9uZSA9IHRpbWVfbmV3KFB5X1RZUEUoc2VsZiksIHR1cGxlLCBOVUxMKTsKKyAgICBpZiAoY2xvbmUgIT0gTlVMTCkgeworICAgICAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBUSU1FX1NFVF9GT0xEKGNsb25lLCBmb2xkKTsKKyAgICB9CiAgICAgUHlfREVDUkVGKHR1cGxlKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CkBAIC0zODE5LDcgKzM5MzQsNyBAQAogICogX19nZXRzdGF0ZV9fIGlzbid0IGV4cG9zZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKK3RpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBpbnQgcHJvdG8pCiB7CiAgICAgUHlPYmplY3QgKmJhc2VzdGF0ZTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKQEAgLTM4MjcsNiArMzk0Miw5IEBACiAgICAgYmFzZXN0YXRlID0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilzZWxmLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9USU1FX0RBVEFTSVpFKTsKICAgICBpZiAoYmFzZXN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHByb3RvID4gMyAmJiBUSU1FX0dFVF9GT0xEKHNlbGYpKQorICAgICAgICAgICAgLyogU2V0IHRoZSBmaXJzdCBiaXQgb2YgdGhlIGZpcnN0IGJ5dGUgKi8KKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJhc2VzdGF0ZSlbMF0gfD0gKDEgPDwgNyk7CiAgICAgICAgIGlmICghIEhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygxLCBiYXNlc3RhdGUpOwogICAgICAgICBlbHNlCkBAIC0zODM3LDE2ICszOTU1LDIxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX3JlZHVjZShQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit0aW1lX3JlZHVjZShQeURhdGVUaW1lX1RpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgdGltZV9nZXRzdGF0ZShzZWxmKSk7CisgICAgaW50IHByb3RvID0gMDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgdGltZV9nZXRzdGF0ZShzZWxmLCBwcm90bykpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgdGltZV9tZXRob2RzW10gPSB7CiAKLSAgICB7Imlzb2Zvcm1hdCIsICAgKFB5Q0Z1bmN0aW9uKXRpbWVfaXNvZm9ybWF0LCAgICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIFB5RG9jX1NUUigiUmV0dXJuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQsIEhIOk1NOlNTWy5tbW1tbW1dIgotICAgICAgICAgICAgICAgIlsrSEg6TU1dLiIpfSwKKyAgICB7Imlzb2Zvcm1hdCIsICAgKFB5Q0Z1bmN0aW9uKXRpbWVfaXNvZm9ybWF0LCAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJSZXR1cm4gc3RyaW5nIGluIElTTyA4NjAxIGZvcm1hdCwgW0hIWzpNTVs6U1NbLm1tbVt1dXVdXV1dXSIKKyAgICAgICAgICAgICAgICJbK0hIOk1NXS5cblxuIgorICAgICAgICAgICAgICAgInRpbWVzcGVjIHNwZWNpZmllcyB3aGF0IGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS5cbiIpfSwKIAogICAgIHsic3RyZnRpbWUiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXRpbWVfc3RyZnRpbWUsICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoImZvcm1hdCAtPiBzdHJmdGltZSgpIHN0eWxlIHN0cmluZy4iKX0sCkBAIC0zODY2LDEzICszOTg5LDEzIEBACiAgICAgeyJyZXBsYWNlIiwgICAgIChQeUNGdW5jdGlvbil0aW1lX3JlcGxhY2UsICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiUmV0dXJuIHRpbWUgd2l0aCBuZXcgc3BlY2lmaWVkIGZpZWxkcy4iKX0sCiAKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pdGltZV9yZWR1Y2UsICAgICAgICBNRVRIX05PQVJHUywKLSAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9fKCkgLT4gKGNscywgc3RhdGUpIil9LAorICAgIHsiX19yZWR1Y2VfZXhfXyIsIChQeUNGdW5jdGlvbil0aW1lX3JlZHVjZSwgICAgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9leF9fKHByb3RvKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCiAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgdGltZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0aW1lX2RvY1tdID0KIFB5RG9jX1NUUigidGltZShbaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWywgdHppbmZvXV1dXV0pIC0tPiBhIHRpbWUgb2JqZWN0XG5cCiBcblwKIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuIGluc3RhbmNlIG9mXG5cCkBAIC0zOTYwLDEyICs0MDgzLDE5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RhdGV0aW1lX2ZvbGQoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgdm9pZCAqdW51c2VkKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoREFURV9HRVRfRk9MRChzZWxmKSk7Cit9CisKIHN0YXRpYyBQeUdldFNldERlZiBkYXRldGltZV9nZXRzZXRbXSA9IHsKICAgICB7ImhvdXIiLCAgICAgICAgKGdldHRlcilkYXRldGltZV9ob3VyfSwKICAgICB7Im1pbnV0ZSIsICAgICAgKGdldHRlcilkYXRldGltZV9taW51dGV9LAogICAgIHsic2Vjb25kIiwgICAgICAoZ2V0dGVyKWRhdGV0aW1lX3NlY29uZH0sCiAgICAgeyJtaWNyb3NlY29uZCIsIChnZXR0ZXIpZGF0ZXRpbWVfbWljcm9zZWNvbmR9LAotICAgIHsidHppbmZvIiwgICAgICAgICAgKGdldHRlcilkYXRldGltZV90emluZm99LAorICAgIHsidHppbmZvIiwgICAgICAoZ2V0dGVyKWRhdGV0aW1lX3R6aW5mb30sCisgICAgeyJmb2xkIiwgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfZm9sZH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0zOTc1LDcgKzQxMDUsNyBAQAogCiBzdGF0aWMgY2hhciAqZGF0ZXRpbWVfa3dzW10gPSB7CiAgICAgInllYXIiLCAibW9udGgiLCAiZGF5IiwgImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsCi0gICAgIm1pY3Jvc2Vjb25kIiwgInR6aW5mbyIsIE5VTEwKKyAgICAibWljcm9zZWNvbmQiLCAidHppbmZvIiwgImZvbGQiLCBOVUxMCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzk5MCw2ICs0MTIwLDcgQEAKICAgICBpbnQgbWludXRlID0gMDsKICAgICBpbnQgc2Vjb25kID0gMDsKICAgICBpbnQgdXNlY29uZCA9IDA7CisgICAgaW50IGZvbGQgPSAwOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogCiAgICAgLyogQ2hlY2sgZm9yIGludm9jYXRpb24gZnJvbSBwaWNrbGUgd2l0aCBfX2dldHN0YXRlX18gc3RhdGUgKi8KQEAgLTM5OTcsNyArNDEyOCw3IEBACiAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPD0gMiAmJgogICAgICAgICBQeUJ5dGVzX0NoZWNrKHN0YXRlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSkgJiYKICAgICAgICAgUHlCeXRlc19HRVRfU0laRShzdGF0ZSkgPT0gX1B5RGF0ZVRpbWVfREFURVRJTUVfREFUQVNJWkUgJiYKLSAgICAgICAgTU9OVEhfSVNfU0FORShQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMl0pKQorICAgICAgICBNT05USF9JU19TQU5FKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVsyXSAmIDB4N0YpKQogICAgIHsKICAgICAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqbWU7CiAgICAgICAgIGNoYXIgYXdhcmU7CkBAIC00MDIyLDI4ICs0MTUzLDczIEBACiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICAgICAgbWUtPnR6aW5mbyA9IHR6aW5mbzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwZGF0YVsyXSAmICgxIDw8IDcpKSB7CisgICAgICAgICAgICAgICAgbWUtPmRhdGFbMl0gLT0gMTI4OworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1lLT5mb2xkID0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbWU7CiAgICAgfQogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImlpaXxpaWlpTyIsIGRhdGV0aW1lX2t3cywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiaWlpfGlpaWlPJGkiLCBkYXRldGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeWVhciwgJm1vbnRoLCAmZGF5LCAmaG91ciwgJm1pbnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWNvbmQsICZ1c2Vjb25kLCAmdHppbmZvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlY29uZCwgJnVzZWNvbmQsICZ0emluZm8sICZmb2xkKSkgewogICAgICAgICBpZiAoY2hlY2tfZGF0ZV9hcmdzKHllYXIsIG1vbnRoLCBkYXkpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSA8IDApCisgICAgICAgIGlmIChjaGVja190aW1lX2FyZ3MoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIGZvbGQpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYgPSBuZXdfZGF0ZXRpbWVfZXgoeWVhciwgbW9udGgsIGRheSwKKyAgICAgICAgc2VsZiA9IG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZCwgdHlwZSk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQogCi0vKiBUTV9GVU5DIGlzIHRoZSBzaGFyZWQgdHlwZSBvZiBsb2NhbHRpbWUoKSBhbmQgZ210aW1lKCkuICovCi10eXBlZGVmIHN0cnVjdCB0bSAqKCpUTV9GVU5DKShjb25zdCB0aW1lX3QgKnRpbWVyKTsKKy8qIFRNX0ZVTkMgaXMgdGhlIHNoYXJlZCB0eXBlIG9mIF9QeVRpbWVfbG9jYWx0aW1lKCkgYW5kCisgKiBfUHlUaW1lX2dtdGltZSgpLiAqLwordHlwZWRlZiBpbnQgKCpUTV9GVU5DKSh0aW1lX3QgdGltZXIsIHN0cnVjdCB0bSopOworCisvKiBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAqIDIzIGhvdXJzIGF0IDE5NjktMDktMzAgMTM6MDA6MDAgaW4gS3dhamFsZWluLiAqLworc3RhdGljIGxvbmcgbG9uZyBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwOworLyogTkI6IGRhdGUoMTk3MCwxLDEpLnRvb3JkaW5hbCgpID09IDcxOTE2MyAqLworc3RhdGljIGxvbmcgbG9uZyBlcG9jaCA9IDcxOTE2M0xMICogMjQgKiA2MCAqIDYwOworCitzdGF0aWMgbG9uZyBsb25nCit1dGNfdG9fc2Vjb25kcyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQpCit7CisgICAgbG9uZyBsb25nIG9yZGluYWwgPSB5bWRfdG9fb3JkKHllYXIsIG1vbnRoLCBkYXkpOworICAgIHJldHVybiAoKG9yZGluYWwgKiAyNCArIGhvdXIpICogNjAgKyBtaW51dGUpICogNjAgKyBzZWNvbmQ7Cit9CisKK3N0YXRpYyBsb25nIGxvbmcKK2xvY2FsKGxvbmcgbG9uZyB1KQoreworICAgIHN0cnVjdCB0bSBsb2NhbF90aW1lOworICAgIHRpbWVfdCB0OworICAgIHUgLT0gZXBvY2g7CisgICAgdCA9IHU7CisgICAgaWYgKHQgIT0gdSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIHBsYXRmb3JtIHRpbWVfdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIC8qIFhYWDogYWRkIGJvdW5kcyBjaGVja2luZyAqLworICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0LCAmbG9jYWxfdGltZSkgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiB1dGNfdG9fc2Vjb25kcyhsb2NhbF90aW1lLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9zZWMpOworfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCiAgKiBCdWlsZCBkYXRldGltZSBmcm9tIGEgdGltZV90IGFuZCBhIGRpc3RpbmN0IGNvdW50IG9mIG1pY3Jvc2Vjb25kcy4KQEAgLTQwNTMsNzIgKzQyMjksNDYgQEAKIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgdGltZV90IHRpbWV0LCBpbnQgdXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewotICAgIHN0cnVjdCB0bSAqdG07CisgICAgc3RydWN0IHRtIHRtOworICAgIGludCB5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgZm9sZCA9IDA7CiAKLSAgICB0bSA9IGYoJnRpbWV0KTsKLSAgICBpZiAodG0gPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgfQorICAgIGlmIChmKHRpbWV0LCAmdG0pICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgeWVhciA9IHRtLnRtX3llYXIgKyAxOTAwOworICAgIG1vbnRoID0gdG0udG1fbW9uICsgMTsKKyAgICBkYXkgPSB0bS50bV9tZGF5OworICAgIGhvdXIgPSB0bS50bV9ob3VyOworICAgIG1pbnV0ZSA9IHRtLnRtX21pbjsKICAgICAvKiBUaGUgcGxhdGZvcm0gbG9jYWx0aW1lL2dtdGltZSBtYXkgaW5zZXJ0IGxlYXAgc2Vjb25kcywKLSAgICAgKiBpbmRpY2F0ZWQgYnkgdG0tPnRtX3NlYyA+IDU5LiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGVtLAorICAgICAqIGluZGljYXRlZCBieSB0bS50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKICAgICAgKiBleGNlcHQgdG8gdGhlIGV4dGVudCB0aGF0IHBhc3NpbmcgdGhlbSBvbiB0byB0aGUgZGF0ZXRpbWUKICAgICAgKiBjb25zdHJ1Y3RvciB3b3VsZCByYWlzZSBWYWx1ZUVycm9yIGZvciBhIHJlYXNvbiB0aGF0CiAgICAgICogbWFkZSBubyBzZW5zZSB0byB0aGUgdXNlci4KICAgICAgKi8KLSAgICBpZiAodG0tPnRtX3NlYyA+IDU5KQotICAgICAgICB0bS0+dG1fc2VjID0gNTk7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3NlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKLX0KKyAgICBzZWNvbmQgPSBQeV9NSU4oNTksIHRtLnRtX3NlYyk7CiAKLXN0YXRpYyB0aW1lX3QKLV9QeVRpbWVfRG91YmxlVG9UaW1ldChkb3VibGUgeCkKLXsKLSAgICB0aW1lX3QgcmVzdWx0OwotICAgIGRvdWJsZSBkaWZmOworICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSAmJiBmID09IF9QeVRpbWVfbG9jYWx0aW1lKSB7CisgICAgICAgIGxvbmcgbG9uZyBwcm9iZV9zZWNvbmRzLCByZXN1bHRfc2Vjb25kcywgdHJhbnNpdGlvbjsKIAotICAgIHJlc3VsdCA9ICh0aW1lX3QpeDsKLSAgICAvKiBIb3cgbXVjaCBpbmZvIGRpZCB3ZSBsb3NlPyAgdGltZV90IG1heSBiZSBhbiBpbnRlZ3JhbCBvcgotICAgICAqIGZsb2F0aW5nIHR5cGUsIGFuZCB3ZSBkb24ndCBrbm93IHdoaWNoLiAgSWYgaXQncyBpbnRlZ3JhbCwKLSAgICAgKiB3ZSBkb24ndCBrbm93IHdoZXRoZXIgQyB0cnVuY2F0ZXMsIHJvdW5kcywgcmV0dXJucyB0aGUgZmxvb3IsCi0gICAgICogZXRjLiAgSWYgd2UgbG9zdCBhIHNlY29uZCBvciBtb3JlLCB0aGUgQyByb3VuZGluZyBpcwotICAgICAqIHVucmVhc29uYWJsZSwgb3IgdGhlIGlucHV0IGp1c3QgZG9lc24ndCBmaXQgaW4gYSB0aW1lX3Q7Ci0gICAgICogY2FsbCBpdCBhbiBlcnJvciByZWdhcmRsZXNzLiAgTm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBjYXN0IHRvCi0gICAgICogdGltZV90IGNhbiBjYXVzZSBhIEMgZXJyb3IgdG9vLCBidXQgbm90aGluZyB3ZSBjYW4gZG8gdG8KLSAgICAgKiB3b3JtIGFyb3VuZCB0aGF0LgotICAgICAqLwotICAgIGRpZmYgPSB4IC0gKGRvdWJsZSlyZXN1bHQ7Ci0gICAgaWYgKGRpZmYgPD0gLTEuMCB8fCBkaWZmID49IDEuMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKLSAgICAgICAgcmVzdWx0ID0gKHRpbWVfdCktMTsKKyAgICAgICAgcmVzdWx0X3NlY29uZHMgPSB1dGNfdG9fc2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKTsKKyAgICAgICAgLyogUHJvYmUgbWF4X2ZvbGRfc2Vjb25kcyB0byBkZXRlY3QgYSBmb2xkLiAqLworICAgICAgICBwcm9iZV9zZWNvbmRzID0gbG9jYWwoZXBvY2ggKyB0aW1ldCAtIG1heF9mb2xkX3NlY29uZHMpOworICAgICAgICBpZiAocHJvYmVfc2Vjb25kcyA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB0cmFuc2l0aW9uID0gcmVzdWx0X3NlY29uZHMgLSBwcm9iZV9zZWNvbmRzIC0gbWF4X2ZvbGRfc2Vjb25kczsKKyAgICAgICAgaWYgKHRyYW5zaXRpb24gPCAwKSB7CisgICAgICAgICAgICBwcm9iZV9zZWNvbmRzID0gbG9jYWwoZXBvY2ggKyB0aW1ldCArIHRyYW5zaXRpb24pOworICAgICAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAocHJvYmVfc2Vjb25kcyA9PSByZXN1bHRfc2Vjb25kcykKKyAgICAgICAgICAgICAgICBmb2xkID0gMTsKKyAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBSb3VuZCBhIGRvdWJsZSB0byB0aGUgbmVhcmVzdCBsb25nLiAgfHh8IG11c3QgYmUgc21hbGwgZW5vdWdoIHRvIGZpdAotICogaW4gYSBDIGxvbmc7IHRoaXMgaXMgbm90IGNoZWNrZWQuCi0gKi8KLXN0YXRpYyBkb3VibGUKLV9QeVRpbWVfUm91bmRIYWxmRXZlbihkb3VibGUgeCkKLXsKLSAgICBkb3VibGUgcm91bmRlZCA9IHJvdW5kKHgpOwotICAgIGlmIChmYWJzKHgtcm91bmRlZCkgPT0gMC41KQotICAgICAgICAvKiBoYWxmd2F5IGNhc2U6IHJvdW5kIHRvIGV2ZW4gKi8KLSAgICAgICAgcm91bmRlZCA9IDIuMCpyb3VuZCh4LzIuMCk7Ci0gICAgcmV0dXJuIHJvdW5kZWQ7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoeWVhciwgbW9udGgsIGRheSwgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW51dGUsIHNlY29uZCwgdXMsIHR6aW5mbywgZm9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlUeXBlT2JqZWN0ICopY2xzKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDEyOSwzMiArNDI3OSwxNyBAQAogICogdG8gZ2V0IHRoYXQgbXVjaCBwcmVjaXNpb24gKGUuZy4sIEMgdGltZSgpIGlzbid0IGdvb2QgZW5vdWdoKS4KICAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgZG91YmxlIHRpbWVzdGFtcCwKK2RhdGV0aW1lX2Zyb21fdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFRNX0ZVTkMgZiwgUHlPYmplY3QgKnRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7CiAgICAgdGltZV90IHRpbWV0OwotICAgIGRvdWJsZSBmcmFjdGlvbjsKLSAgICBpbnQgdXM7CisgICAgbG9uZyB1czsKIAotICAgIHRpbWV0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHRpbWVzdGFtcCk7Ci0gICAgaWYgKHRpbWV0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodGltZXN0YW1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZXQsICZ1cywgX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcmFjdGlvbiA9IHRpbWVzdGFtcCAtIChkb3VibGUpdGltZXQ7Ci0gICAgdXMgPSAoaW50KV9QeVRpbWVfUm91bmRIYWxmRXZlbihmcmFjdGlvbiAqIDFlNik7Ci0gICAgaWYgKHVzIDwgMCkgewotICAgICAgICAvKiBUcnVuY2F0aW9uIHRvd2FyZHMgemVybyBpcyBub3Qgd2hhdCB3ZSB3YW50ZWQKLSAgICAgICAgICAgZm9yIG5lZ2F0aXZlIG51bWJlcnMgKFB5dGhvbidzIG1vZCBzZW1hbnRpY3MpICovCi0gICAgICAgIHRpbWV0IC09IDE7Ci0gICAgICAgIHVzICs9IDEwMDAwMDA7Ci0gICAgfQotICAgIC8qIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCi0gICAgICogZnVsbCBzZWNvbmQsIHJvdW5kIHVwLiBPdGhlcndpc2UsIFZhbHVlRXJyb3JzIGFyZSByYWlzZWQKLSAgICAgKiBmb3Igc29tZSBmbG9hdHMuICovCi0gICAgaWYgKHVzID09IDEwMDAwMDApIHsKLSAgICAgICAgdGltZXQgKz0gMTsKLSAgICAgICAgdXMgPSAwOwotICAgIH0KLSAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgdXMsIHR6aW5mbyk7CisKKyAgICByZXR1cm4gZGF0ZXRpbWVfZnJvbV90aW1ldF9hbmRfdXMoY2xzLCBmLCB0aW1ldCwgKGludCl1cywgdHppbmZvKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLgpAQCAtNDIwMSwxNCArNDMzNiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNlbGYgPSBkYXRldGltZV9iZXN0X3Bvc3NpYmxlKChQeU9iamVjdCAqKXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHogPT0gUHlfTm9uZSA/IGxvY2FsdGltZSA6IGdtdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9PSBQeV9Ob25lID8gX1B5VGltZV9sb2NhbHRpbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfZ210aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6KTsKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6ICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwotICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6LCAmUHlJZF9mcm9tdXRjLCAiTiIsIHNlbGYpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTQyMTksNyArNDM1Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdXRjbm93KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpkdW1teSkKIHsKLSAgICByZXR1cm4gZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZShjbHMsIGdtdGltZSwgUHlfTm9uZSk7CisgICAgcmV0dXJuIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoY2xzLCBfUHlUaW1lX2dtdGltZSwgUHlfTm9uZSk7CiB9CiAKIC8qIFJldHVybiBuZXcgbG9jYWwgZGF0ZXRpbWUgZnJvbSB0aW1lc3RhbXAgKFB5dGhvbiB0aW1lc3RhbXAgLS0gYSBkb3VibGUpLiAqLwpAQCAtNDIyNywyNiArNDM2MCwyNCBAQAogZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXN0YW1wIiwgInR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJkfE86ZnJvbXRpbWVzdGFtcCIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT3xPOmZyb210aW1lc3RhbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywgJnRpbWVzdGFtcCwgJnR6aW5mbykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZiA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvID09IFB5X05vbmUgPyBsb2NhbHRpbWUgOiBnbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyA9PSBQeV9Ob25lID8gX1B5VGltZV9sb2NhbHRpbWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX2dtdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOwogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotCi0gICAgICAgIHNlbGYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJOIiwgc2VsZik7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtNDI1NSwxMSArNDM4NiwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQotICAgICAgICByZXN1bHQgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsIGdtdGltZSwgdGltZXN0YW1wLAorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKKyAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBfUHlUaW1lX2dtdGltZSwgdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDI4OCwyNyArNDQxOSwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2NvbWJpbmUoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZGF0ZSIsICJ0aW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImRhdGUiLCAidGltZSIsICJ0emluZm8iLCBOVUxMfTsKICAgICBQeU9iamVjdCAqZGF0ZTsKICAgICBQeU9iamVjdCAqdGltZTsKKyAgICBQeU9iamVjdCAqdHppbmZvID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPIU8hOmNvbWJpbmUiLCBrZXl3b3JkcywKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyFPIXxPOmNvbWJpbmUiLCBrZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX0RhdGVUeXBlLCAmZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSkpIHsKLSAgICAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7Ci0KLSAgICAgICAgaWYgKEhBU1RaSU5GTyh0aW1lKSkKLSAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RpbWVUeXBlLCAmdGltZSwgJnR6aW5mbykpIHsKKyAgICAgICAgaWYgKHR6aW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoSEFTVFpJTkZPKHRpbWUpKQorICAgICAgICAgICAgICAgIHR6aW5mbyA9ICgoUHlEYXRlVGltZV9UaW1lICopdGltZSktPnR6aW5mbzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0emluZm8gPSBQeV9Ob25lOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUih0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUodGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkYXRlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlDUk9TRUNPTkQodGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICAgICAgREFURV9TRVRfRk9MRChyZXN1bHQsIFRJTUVfR0VUX0ZPTEQodGltZSkpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNDM3Niw3ICs0NTEyLDcgQEAKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBuZXdfZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGRhdGUpID8gZGF0ZS0+dHppbmZvIDogUHlfTm9uZSwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NDY5LDkgKzQ2MDUsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgICAgICBpZiAob2ZmZGlmZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSByZXN1bHQ7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgZGVsdGFfc3VidHJhY3QocmVzdWx0LCBvZmZkaWZmKSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG9mZmRpZmYpOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00NTIxLDYgKzQ2NTUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIEdFVF9ZRUFSKHNlbGYpLCBHRVRfTU9OVEgoc2VsZiksIEdFVF9EQVkoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpKTsKICAgICB9CisgICAgaWYgKGJhc2VyZXByICE9IE5VTEwgJiYgREFURV9HRVRfRk9MRChzZWxmKSAhPSAwKQorICAgICAgICBiYXNlcmVwciA9IGFwcGVuZF9rZXl3b3JkX2ZvbGQoYmFzZXJlcHIsIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogICAgIGlmIChiYXNlcmVwciA9PSBOVUxMIHx8ICEgSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXR1cm4gYmFzZXJlcHI7CiAgICAgcmV0dXJuIGFwcGVuZF9rZXl3b3JkX3R6aW5mbyhiYXNlcmVwciwgc2VsZi0+dHppbmZvKTsKQEAgLTQ1MzYsMjUgKzQ2NzIsNTUgQEAKIGRhdGV0aW1lX2lzb2Zvcm1hdChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIGludCBzZXAgPSAnVCc7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNlcCIsIE5VTEx9OworICAgIGNoYXIgKnRpbWVzcGVjID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic2VwIiwgInRpbWVzcGVjIiwgTlVMTH07CiAgICAgY2hhciBidWZmZXJbMTAwXTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGludCB1cyA9IERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOworICAgIHN0YXRpYyBjaGFyICpzcGVjc1tdWzJdID0geworICAgICAgICB7ImhvdXJzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkIn0sCisgICAgICAgIHsibWludXRlcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkIn0sCisgICAgICAgIHsic2Vjb25kcyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQifSwKKyAgICAgICAgeyJtaWxsaXNlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwM2QifSwKKyAgICAgICAgeyJtaWNyb3NlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkLiUwNmQifSwKKyAgICB9OworICAgIHNpemVfdCBnaXZlbl9zcGVjOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Qzppc29mb3JtYXQiLCBrZXl3b3JkcywgJnNlcCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8Q3M6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZzZXAsICZ0aW1lc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh1cykKLSAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDZkIiwKKworICAgIGlmICh0aW1lc3BlYyA9PSBOVUxMIHx8IHN0cmNtcCh0aW1lc3BlYywgImF1dG8iKSA9PSAwKSB7CisgICAgICAgIGlmICh1cyA9PSAwKSB7CisgICAgICAgICAgICAvKiBzZWNvbmRzICovCisgICAgICAgICAgICBnaXZlbl9zcGVjID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG1pY3Jvc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoZ2l2ZW5fc3BlYyA9IDA7IGdpdmVuX3NwZWMgPCBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpOyBnaXZlbl9zcGVjKyspIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAodGltZXNwZWMsIHNwZWNzW2dpdmVuX3NwZWNdWzBdKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdpdmVuX3NwZWMgPT0gMykgeworICAgICAgICAgICAgICAgICAgICB1cyA9IHVzIC8gMTAwMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fc3BlYyA9PSBQeV9BUlJBWV9MRU5HVEgoc3BlY3MpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiVW5rbm93biB0aW1lc3BlYyB2YWx1ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KHNwZWNzW2dpdmVuX3NwZWNdWzFdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksIHVzKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLCAoaW50KXNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwgREFURV9HRVRfTUlOVVRFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZikpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8ICFIQVNUWklORk8oc2VsZikpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC00NTgxLDYgKzQ3NDcsNzAgQEAKIC8qIE1pc2NlbGxhbmVvdXMgbWV0aG9kcy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ZsaXBfZm9sZChQeU9iamVjdCAqZHQpCit7CisgICAgcmV0dXJuIG5ld19kYXRldGltZV9leDIoR0VUX1lFQVIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oZHQpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopZHQpLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFEQVRFX0dFVF9GT0xEKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGR0KSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfZmxpcF9mb2xkX29mZnNldChQeU9iamVjdCAqZHQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmZsaXBfZHQ7CisKKyAgICBmbGlwX2R0ID0gZmxpcF9mb2xkKGR0KTsKKyAgICBpZiAoZmxpcF9kdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBkYXRldGltZV91dGNvZmZzZXQoZmxpcF9kdCwgTlVMTCk7CisgICAgUHlfREVDUkVGKGZsaXBfZHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFBFUCA0OTUgZXhjZXB0aW9uOiBXaGVuZXZlciBvbmUgb3IgYm90aCBvZiB0aGUgb3BlcmFuZHMgaW4KKyAqIGludGVyLXpvbmUgY29tcGFyaXNvbiBpcyBzdWNoIHRoYXQgaXRzIHV0Y29mZnNldCgpIGRlcGVuZHMKKyAqIG9uIHRoZSB2YWx1ZSBvZiBpdHMgZm9sZCBmb2xkIGF0dHJpYnV0ZSwgdGhlIHJlc3VsdCBpcyBGYWxzZS4KKyAqCisgKiBSZXR1cm4gMSBpZiBleGNlcHRpb24gYXBwbGllcywgMCBpZiBub3QsICBhbmQgLTEgb24gZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK3BlcDQ5NV9lcV9leGNlcHRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9mZnNldF9zZWxmLCBQeU9iamVjdCAqb2Zmc2V0X290aGVyKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIFB5T2JqZWN0ICpmbGlwX29mZnNldDsKKworICAgIGZsaXBfb2Zmc2V0ID0gZ2V0X2ZsaXBfZm9sZF9vZmZzZXQoc2VsZik7CisgICAgaWYgKGZsaXBfb2Zmc2V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgIT0gb2Zmc2V0X3NlbGYgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfc2VsZikpCisgICAgeworICAgICAgICByZXN1bHQgPSAxOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIFB5X0RFQ1JFRihmbGlwX29mZnNldCk7CisKKyAgICBmbGlwX29mZnNldCA9IGdldF9mbGlwX2ZvbGRfb2Zmc2V0KG90aGVyKTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChmbGlwX29mZnNldCAhPSBvZmZzZXRfb3RoZXIgJiYKKyAgICAgICAgZGVsdGFfY21wKGZsaXBfb2Zmc2V0LCBvZmZzZXRfb3RoZXIpKQorICAgICAgICByZXN1bHQgPSAxOworIGRvbmU6CisgICAgUHlfREVDUkVGKGZsaXBfb2Zmc2V0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtNDYyNyw2ICs0ODU3LDEzIEBACiAgICAgICAgIGRpZmYgPSBtZW1jbXAoKChQeURhdGVUaW1lX0RhdGVUaW1lICopc2VsZiktPmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgKChQeURhdGVUaW1lX0RhdGVUaW1lICopb3RoZXIpLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob2Zmc2V0MSAhPSBQeV9Ob25lICYmIG9mZnNldDIgIT0gUHlfTm9uZSkgewpAQCAtNDY0Miw2ICs0ODc5LDEzIEBACiAgICAgICAgICAgICBkaWZmID0gR0VUX1REX1NFQ09ORFMoZGVsdGEpIHwKICAgICAgICAgICAgICAgICAgICBHRVRfVERfTUlDUk9TRUNPTkRTKGRlbHRhKTsKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICAgICAgaWYgKChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgJiYgZGlmZiA9PSAwKSB7CisgICAgICAgICAgICBpbnQgZXggPSBwZXA0OTVfZXFfZXhjZXB0aW9uKHNlbGYsIG90aGVyLCBvZmZzZXQxLCBvZmZzZXQyKTsKKyAgICAgICAgICAgIGlmIChleCA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICBpZiAoZXgpCisgICAgICAgICAgICAgICAgZGlmZiA9IDE7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CiAgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKQEAgLTQ2NjcsOSArNDkxMSwyNiBAQAogZGF0ZXRpbWVfaGFzaChQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQogewogICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkgewotICAgICAgICBQeU9iamVjdCAqb2Zmc2V0OwotCi0gICAgICAgIG9mZnNldCA9IGRhdGV0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKm9mZnNldCwgKnNlbGYwOworICAgICAgICBpZiAoREFURV9HRVRfRk9MRChzZWxmKSkgeworICAgICAgICAgICAgc2VsZjAgPSBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFB5X1RZUEUoc2VsZikpOworICAgICAgICAgICAgaWYgKHNlbGYwID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsZjAgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYwKTsKKyAgICAgICAgfQorICAgICAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoc2VsZjAsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VsZjApOwogCiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTQ3MjMsNzYgKzQ5ODQsODAgQEAKICAgICBpbnQgc3MgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSBEQVRFX0dFVF9GT0xEKHNlbGYpOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlpaWlPOnJlcGxhY2UiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpaWlpTyRpOnJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ5LCAmbSwgJmQsICZoaCwgJm1tLCAmc3MsICZ1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR6aW5mbykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8sICZmb2xkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJpaWlpaWlpTyIsIHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjbG9uZSA9IGRhdGV0aW1lX25ldyhQeV9UWVBFKHNlbGYpLCB0dXBsZSwgTlVMTCk7CisKKyAgICBpZiAoY2xvbmUgIT0gTlVMTCkgeworICAgICAgICBpZiAoZm9sZCAhPSAwICYmIGZvbGQgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBEQVRFX1NFVF9GT0xEKGNsb25lLCBmb2xkKTsKKyAgICB9CiAgICAgUHlfREVDUkVGKHR1cGxlKTsKICAgICByZXR1cm4gY2xvbmU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1sb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK2xvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVfdCB0aW1lc3RhbXApCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RydWN0IHRtICp0aW1lcDsKLSAgICB0aW1lX3QgdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpkZWx0YTsKLSAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKLSAgICBQeU9iamVjdCAqc2Vjb25kczsKKyAgICBzdHJ1Y3QgdG0gbG9jYWxfdGltZV90bTsKICAgICBQeU9iamVjdCAqbmFtZW8gPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnpvbmUgPSBOVUxMOwogCi0gICAgZGVsdGEgPSBuZXdfZGVsdGEoeW1kX3RvX29yZChHRVRfWUVBUih1dGNfdGltZSksIEdFVF9NT05USCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHV0Y190aW1lKSkgLSA3MTkxNjMsCi0gICAgICAgICAgICAgICAgICAgICAgNjAgKiAoNjAgKiBEQVRFX0dFVF9IT1VSKHV0Y190aW1lKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHV0Y190aW1lKSkgKwotICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgMCwgMCk7Ci0gICAgaWYgKGRlbHRhID09IE5VTEwpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHRpbWVzdGFtcCwgJmxvY2FsX3RpbWVfdG0pICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG9uZV9zZWNvbmQgPSBuZXdfZGVsdGEoMCwgMSwgMCwgMCk7Ci0gICAgaWYgKG9uZV9zZWNvbmQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKLSAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7Ci0gICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICBQeV9ERUNSRUYoZGVsdGEpOwotICAgIHRpbWVzdGFtcCA9IFB5TG9uZ19Bc0xvbmcoc2Vjb25kcyk7Ci0gICAgUHlfREVDUkVGKHNlY29uZHMpOwotICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdGltZXAgPSBsb2NhbHRpbWUoJnRpbWVzdGFtcCk7CiAjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQotICAgIHpvbmUgPSB0aW1lcC0+dG1fem9uZTsKLSAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCB0aW1lcC0+dG1fZ210b2ZmLCAwLCAxKTsKKyAgICB6b25lID0gbG9jYWxfdGltZV90bS50bV96b25lOworICAgIGRlbHRhID0gbmV3X2RlbHRhKDAsIGxvY2FsX3RpbWVfdG0udG1fZ210b2ZmLCAwLCAxKTsKICNlbHNlIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpsb2NhbF90aW1lOwotICAgICAgICBsb2NhbF90aW1lID0gbmV3X2RhdGV0aW1lKHRpbWVwLT50bV95ZWFyICsgMTkwMCwgdGltZXAtPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX21kYXksIHRpbWVwLT50bV9ob3VyLCB0aW1lcC0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9zZWMsIERBVEVfR0VUX01JQ1JPU0VDT05EKHV0Y190aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZS0+dHppbmZvKTsKLSAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QobG9jYWxfdGltZSwgKFB5T2JqZWN0Kil1dGNfdGltZSk7Ci0gICAgICAgIC8qIFhYWDogYmVmb3JlIHJlbHlpbmcgb24gdHpuYW1lLCB3ZSBzaG91bGQgY29tcGFyZSBkZWx0YQotICAgICAgICAgICB0byB0aGUgb2Zmc2V0IGltcGxpZWQgYnkgdGltZXpvbmUvYWx0em9uZSAqLwotICAgICAgICBpZiAoZGF5bGlnaHQgJiYgdGltZXAtPnRtX2lzZHN0ID49IDApCi0gICAgICAgICAgICB6b25lID0gdHpuYW1lW3RpbWVwLT50bV9pc2RzdCAlIDJdOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB6b25lID0gdHpuYW1lWzBdOworICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZSwgKnV0Y190aW1lOworICAgICAgICBzdHJ1Y3QgdG0gdXRjX3RpbWVfdG07CisgICAgICAgIGNoYXIgYnVmWzEwMF07CisgICAgICAgIHN0cmZ0aW1lKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlWiIsICZsb2NhbF90aW1lX3RtKTsKKyAgICAgICAgem9uZSA9IGJ1ZjsKKyAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZShsb2NhbF90aW1lX3RtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1fc2VjLCAwLCBQeV9Ob25lLCAwKTsKKyAgICAgICAgaWYgKGxvY2FsX3RpbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVRpbWVfZ210aW1lKHRpbWVzdGFtcCwgJnV0Y190aW1lX3RtKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHV0Y190aW1lID0gbmV3X2RhdGV0aW1lKHV0Y190aW1lX3RtLnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lX3RtLnRtX3NlYywgMCwgUHlfTm9uZSwgMCk7CisgICAgICAgIGlmICh1dGNfdGltZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobG9jYWxfdGltZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIHV0Y190aW1lKTsKICAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgICAgICBQeV9ERUNSRUYodXRjX3RpbWUpOwogICAgIH0KICNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCisgICAgaWYgKGRlbHRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoem9uZSAhPSBOVUxMKSB7CiAgICAgICAgIG5hbWVvID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh6b25lLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgICAgIGlmIChuYW1lbyA9PSBOVUxMKQpAQCAtNDgwNSwxMiArNTA3MCw2NSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK3sKKyAgICB0aW1lX3QgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICpkZWx0YTsKKyAgICBQeU9iamVjdCAqb25lX3NlY29uZDsKKyAgICBQeU9iamVjdCAqc2Vjb25kczsKKworICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QoKFB5T2JqZWN0ICopdXRjX3RpbWUsIFB5RGF0ZVRpbWVfRXBvY2gpOworICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOworICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlY29uZHMgPSBkaXZpZGVfdGltZWRlbHRhX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EZWx0YSAqKWRlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9uZV9zZWNvbmQpOworICAgIFB5X0RFQ1JFRihvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIGlmIChzZWNvbmRzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHRpbWVzdGFtcCA9IF9QeUxvbmdfQXNUaW1lX3Qoc2Vjb25kcyk7CisgICAgUHlfREVDUkVGKHNlY29uZHMpOworICAgIGlmICh0aW1lc3RhbXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGxvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVzdGFtcCk7Cit9CisKK3N0YXRpYyBsb25nIGxvbmcKK2xvY2FsX3RvX3NlY29uZHMoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCBmb2xkKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2xvY2FsX3RpbWV6b25lX2Zyb21fbG9jYWwoUHlEYXRlVGltZV9EYXRlVGltZSAqbG9jYWxfZHQpCit7CisgICAgbG9uZyBsb25nIHNlY29uZHM7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBzZWNvbmRzID0gbG9jYWxfdG9fc2Vjb25kcyhHRVRfWUVBUihsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChsb2NhbF9kdCkpOworICAgIGlmIChzZWNvbmRzID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBYWFg6IGFkZCBib3VuZHMgY2hlY2sgKi8KKyAgICB0aW1lc3RhbXAgPSBzZWNvbmRzIC0gZXBvY2g7CisgICAgcmV0dXJuIGxvY2FsX3RpbWV6b25lX2Zyb21fdGltZXN0YW1wKHRpbWVzdGFtcCk7Cit9CisKIHN0YXRpYyBQeURhdGVUaW1lX0RhdGVUaW1lICoKIGRhdGV0aW1lX2FzdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeURhdGVUaW1lX0RhdGVUaW1lICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKm9mZnNldDsKICAgICBQeU9iamVjdCAqdGVtcDsKKyAgICBQeU9iamVjdCAqc2VsZl90emluZm87CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CiAKQEAgLTQ4MjEsMjcgKzUxMzksMjcgQEAKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCi0gICAgICAgIGdvdG8gTmVlZEF3YXJlOworICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKSB7CisgICAgICAgIHNlbGZfdHppbmZvID0gbG9jYWxfdGltZXpvbmVfZnJvbV9sb2NhbChzZWxmKTsKKyAgICAgICAgaWYgKHNlbGZfdHppbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9IGVsc2UgeworICAgICAgICBzZWxmX3R6aW5mbyA9IHNlbGYtPnR6aW5mbzsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGZfdHppbmZvKTsKKyAgICB9CiAKICAgICAvKiBDb252ZXJzaW9uIHRvIHNlbGYncyBvd24gdGltZSB6b25lIGlzIGEgTk9QLiAqLwotICAgIGlmIChzZWxmLT50emluZm8gPT0gdHppbmZvKSB7CisgICAgaWYgKHNlbGZfdHppbmZvID09IHR6aW5mbykgeworICAgICAgICBQeV9ERUNSRUYoc2VsZl90emluZm8pOwogICAgICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBzZWxmOwogICAgIH0KIAogICAgIC8qIENvbnZlcnQgc2VsZiB0byBVVEMuICovCi0gICAgb2Zmc2V0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KChQeU9iamVjdCAqKXNlbGYsIE5VTEwpOworICAgIG9mZnNldCA9IGNhbGxfdXRjb2Zmc2V0KHNlbGZfdHppbmZvLCAoUHlPYmplY3QgKilzZWxmKTsKKyAgICBQeV9ERUNSRUYoc2VsZl90emluZm8pOwogICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG9mZnNldCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmZzZXQpOwotICAgICAgTmVlZEF3YXJlOgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImFzdGltZXpvbmUoKSBjYW5ub3QgYmUgYXBwbGllZCB0byAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYSBuYWl2ZSBkYXRldGltZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICAvKiByZXN1bHQgPSBzZWxmIC0gb2Zmc2V0ICovCiAgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKHNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCwgLTEpOwpAQCAtNDg0OSw2ICs1MTY3LDMyIEBACiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qIE1ha2Ugc3VyZSByZXN1bHQgaXMgYXdhcmUgYW5kIFVUQy4gKi8KKyAgICBpZiAoIUhBU1RaSU5GTyhyZXN1bHQpKSB7CisgICAgICAgIHRlbXAgPSAoUHlPYmplY3QgKilyZXN1bHQ7CisgICAgICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopCisgICAgICAgICAgICAgICAgICAgbmV3X2RhdGV0aW1lX2V4MihHRVRfWUVBUihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXN1bHQpKTsKKyAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlc3VsdCBpcyBhbHJlYWR5IGF3YXJlIC0ganVzdCByZXBsYWNlIHR6aW5mby4gKi8KKyAgICAgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOworICAgICAgICByZXN1bHQtPnR6aW5mbyA9IFB5RGF0ZVRpbWVfVGltZVpvbmVfVVRDOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0LT50emluZm8pOworICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgfQorCiAgICAgLyogQXR0YWNoIG5ldyB0emluZm8gYW5kIGxldCBmcm9tdXRjKCkgZG8gdGhlIHJlc3QuICovCiAgICAgdGVtcCA9IHJlc3VsdC0+dHppbmZvOwogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSkgewpAQCAtNDg5Niw2ICs1MjQwLDU2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdGZsYWcpOwogfQogCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbF90b19zZWNvbmRzKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgZm9sZCkKK3sKKyAgICBsb25nIGxvbmcgdCwgYSwgYiwgdTEsIHUyLCB0MSwgdDIsIGx0OworICAgIHQgPSB1dGNfdG9fc2Vjb25kcyh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgLyogT3VyIGdvYWwgaXMgdG8gc29sdmUgdCA9IGxvY2FsKHUpIGZvciB1LiAqLworICAgIGx0ID0gbG9jYWwodCk7CisgICAgaWYgKGx0ID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgYSA9IGx0IC0gdDsKKyAgICB1MSA9IHQgLSBhOworICAgIHQxID0gbG9jYWwodTEpOworICAgIGlmICh0MSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MSA9PSB0KSB7CisgICAgICAgIC8qIFdlIGZvdW5kIG9uZSBzb2x1dGlvbiwgYnV0IGl0IG1heSBub3QgYmUgdGhlIG9uZSB3ZSBuZWVkLgorICAgICAgICAgKiBMb29rIGZvciBhbiBlYXJsaWVyIHNvbHV0aW9uIChpZiBgZm9sZGAgaXMgMCksIG9yIGEKKyAgICAgICAgICogbGF0ZXIgb25lIChpZiBgZm9sZGAgaXMgMSkuICovCisgICAgICAgIGlmIChmb2xkKQorICAgICAgICAgICAgdTIgPSB1MSArIG1heF9mb2xkX3NlY29uZHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHUyID0gdTEgLSBtYXhfZm9sZF9zZWNvbmRzOworICAgICAgICBsdCA9IGxvY2FsKHUyKTsKKyAgICAgICAgaWYgKGx0ID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBiID0gbHQgLSB1MjsKKyAgICAgICAgaWYgKGEgPT0gYikKKyAgICAgICAgICAgIHJldHVybiB1MTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGIgPSB0MSAtIHUxOworICAgICAgICBhc3NlcnQoYSAhPSBiKTsKKyAgICB9CisgICAgdTIgPSB0IC0gYjsKKyAgICB0MiA9IGxvY2FsKHUyKTsKKyAgICBpZiAodDIgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDIgPT0gdCkKKyAgICAgICAgcmV0dXJuIHUyOworICAgIGlmICh0MSA9PSB0KQorICAgICAgICByZXR1cm4gdTE7CisgICAgLyogV2UgaGF2ZSBmb3VuZCBib3RoIG9mZnNldHMgYSBhbmQgYiwgYnV0IG5laXRoZXIgdCAtIGEgbm9yIHQgLSBiIGlzCisgICAgICogYSBzb2x1dGlvbi4gIFRoaXMgbWVhbnMgdCBpcyBpbiB0aGUgZ2FwLiAqLworICAgIHJldHVybiBmb2xkP1B5X01JTih1MSwgdTIpOlB5X01BWCh1MSwgdTIpOworfQorCisvKiBkYXRlKDE5NzAsMSwxKS50b29yZGluYWwoKSA9PSA3MTkxNjMgKi8KKyNkZWZpbmUgRVBPQ0hfU0VDT05EUyAoNzE5MTYzTEwgKiAyNCAqIDYwICogNjApCisKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV90aW1lc3RhbXAoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKQEAgLTQ5MTAsMzMgKzUzMDQsMTggQEAKICAgICAgICAgUHlfREVDUkVGKGRlbHRhKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHN0cnVjdCB0bSB0aW1lOwotICAgICAgICB0aW1lX3QgdGltZXN0YW1wOwotICAgICAgICBtZW1zZXQoKHZvaWQgKikgJnRpbWUsICdcMCcsIHNpemVvZihzdHJ1Y3QgdG0pKTsKLSAgICAgICAgdGltZS50bV95ZWFyID0gR0VUX1lFQVIoc2VsZikgLSAxOTAwOwotICAgICAgICB0aW1lLnRtX21vbiA9IEdFVF9NT05USChzZWxmKSAtIDE7Ci0gICAgICAgIHRpbWUudG1fbWRheSA9IEdFVF9EQVkoc2VsZik7Ci0gICAgICAgIHRpbWUudG1faG91ciA9IERBVEVfR0VUX0hPVVIoc2VsZik7Ci0gICAgICAgIHRpbWUudG1fbWluID0gREFURV9HRVRfTUlOVVRFKHNlbGYpOwotICAgICAgICB0aW1lLnRtX3NlYyA9IERBVEVfR0VUX1NFQ09ORChzZWxmKTsKLSAgICAgICAgdGltZS50bV93ZGF5ID0gLTE7Ci0gICAgICAgIHRpbWUudG1faXNkc3QgPSAtMTsKLSAgICAgICAgdGltZXN0YW1wID0gbWt0aW1lKCZ0aW1lKTsKLSAgICAgICAgaWYgKHRpbWVzdGFtcCA9PSAodGltZV90KSgtMSkKLSNpZm5kZWYgX0FJWAotICAgICAgICAgICAgLyogUmV0dXJuIHZhbHVlIG9mIC0xIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gYW4gZXJyb3IsCi0gICAgICAgICAgICAgKiBidXQgdG1fd2RheSBjYW5ub3QgcmVtYWluIHNldCB0byAtMSBpZiBta3RpbWUgc3VjY2VlZGVkLiAqLwotICAgICAgICAgICAgJiYgdGltZS50bV93ZGF5ID09IC0xCi0jZWxzZQotICAgICAgICAgICAgLyogb24gQUlYLCB0bV93ZGF5IGlzIGFsd2F5cyBzZXRzLCBldmVuIG9uIGVycm9yICovCi0jZW5kaWYKLSAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIGxvbmcgbG9uZyBzZWNvbmRzOworICAgICAgICBzZWNvbmRzID0gbG9jYWxfdG9fc2Vjb25kcyhHRVRfWUVBUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX01PTlRIKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChzZWxmKSk7CisgICAgICAgIGlmIChzZWNvbmRzID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHRpbWVzdGFtcCArIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKKyAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHNlY29uZHMgLSBFUE9DSF9TRUNPTkRTICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ5NTYsNyArNTMzNSw4IEBACiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDk2Niw3ICs1MzQ2LDggQEAKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICBHRVRfRFRfVFpJTkZPKHNlbGYpKTsKKyAgICAgICAgICAgICAgICAgICAgR0VUX0RUX1RaSU5GTyhzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfRk9MRChzZWxmKSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01MDE4LDcgKzUzOTksNyBAQAogICogX19nZXRzdGF0ZV9fIGlzbid0IGV4cG9zZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmKQorZGF0ZXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICpiYXNlc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CkBAIC01MDI2LDYgKzU0MDcsOSBAQAogICAgIGJhc2VzdGF0ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilzZWxmLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFKTsKICAgICBpZiAoYmFzZXN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHByb3RvID4gMyAmJiBEQVRFX0dFVF9GT0xEKHNlbGYpKQorICAgICAgICAgICAgLyogU2V0IHRoZSBmaXJzdCBiaXQgb2YgdGhlIHRoaXJkIGJ5dGUgKi8KKyAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJhc2VzdGF0ZSlbMl0gfD0gKDEgPDwgNyk7CiAgICAgICAgIGlmICghIEhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygxLCBiYXNlc3RhdGUpOwogICAgICAgICBlbHNlCkBAIC01MDM2LDkgKzU0MjAsMTMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX3JlZHVjZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJnKQorZGF0ZXRpbWVfcmVkdWNlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoT04pIiwgUHlfVFlQRShzZWxmKSwgZGF0ZXRpbWVfZ2V0c3RhdGUoc2VsZikpOworICAgIGludCBwcm90byA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGRhdGV0aW1lX2dldHN0YXRlKHNlbGYsIHByb3RvKSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBkYXRldGltZV9tZXRob2RzW10gPSB7CkBAIC01MDkzLDkgKzU0ODEsMTIgQEAKIAogICAgIHsiaXNvZm9ybWF0IiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfaXNvZm9ybWF0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoIltzZXBdIC0+IHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQsICIKLSAgICAgICAgICAgICAgICJZWVlZLU1NLUREVEhIOk1NOlNTWy5tbW1tbW1dWytISDpNTV0uXG5cbiIKKyAgICAgICAgICAgICAgICJZWVlZLU1NLUREVFtISFs6TU1bOlNTWy5tbW1bdXV1XV1dXV1bK0hIOk1NXS5cbiIKICAgICAgICAgICAgICAgICJzZXAgaXMgdXNlZCB0byBzZXBhcmF0ZSB0aGUgeWVhciBmcm9tIHRoZSB0aW1lLCBhbmQgIgotICAgICAgICAgICAgICAgImRlZmF1bHRzIHRvICdUJy4iKX0sCisgICAgICAgICAgICAgICAiZGVmYXVsdHMgdG8gJ1QnLlxuIgorICAgICAgICAgICAgICAgInRpbWVzcGVjIHNwZWNpZmllcyB3aGF0IGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZSIKKyAgICAgICAgICAgICAgICIgKGFsbG93ZWQgdmFsdWVzIGFyZSAnYXV0bycsICdob3VycycsICdtaW51dGVzJywgJ3NlY29uZHMnLCIKKyAgICAgICAgICAgICAgICIgJ21pbGxpc2Vjb25kcycsIGFuZCAnbWljcm9zZWNvbmRzJykuXG4iKX0sCiAKICAgICB7InV0Y29mZnNldCIsICAgICAgIChQeUNGdW5jdGlvbilkYXRldGltZV91dGNvZmZzZXQsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIlJldHVybiBzZWxmLnR6aW5mby51dGNvZmZzZXQoc2VsZikuIil9LApAQCAtNTExMiwxMyArNTUwMywxMyBAQAogICAgIHsiYXN0aW1lem9uZSIsICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfYXN0aW1lem9uZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJ0eiAtPiBjb252ZXJ0IHRvIGxvY2FsIHRpbWUgaW4gbmV3IHRpbWV6b25lIHR6XG4iKX0sCiAKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfcmVkdWNlLCAgICAgTUVUSF9OT0FSR1MsCi0gICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfXygpIC0+IChjbHMsIHN0YXRlKSIpfSwKKyAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfcmVkdWNlLCAgICAgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9fcmVkdWNlX2V4X18ocHJvdG8pIC0+IChjbHMsIHN0YXRlKSIpfSwKIAogICAgIHtOVUxMLCAgICAgIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciBkYXRldGltZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkYXRldGltZV9kb2NbXSA9CiBQeURvY19TVFIoImRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXlbLCBob3VyWywgbWludXRlWywgc2Vjb25kWywgbWljcm9zZWNvbmRbLHR6aW5mb11dXV1dKVxuXAogXG5cCiBUaGUgeWVhciwgbW9udGggYW5kIGRheSBhcmd1bWVudHMgYXJlIHJlcXVpcmVkLiB0emluZm8gbWF5IGJlIE5vbmUsIG9yIGFuXG5cCkBAIC01MjAxLDcgKzU1OTIsOSBAQAogICAgIG5ld190aW1lX2V4LAogICAgIG5ld19kZWx0YV9leCwKICAgICBkYXRldGltZV9mcm9tdGltZXN0YW1wLAotICAgIGRhdGVfZnJvbXRpbWVzdGFtcAorICAgIGRhdGVfZnJvbXRpbWVzdGFtcCwKKyAgICBuZXdfZGF0ZXRpbWVfZXgyLAorICAgIG5ld190aW1lX2V4MgogfTsKIAogCkBAIC01MjgyLDEyICs1Njc1LDEyIEBACiAgICAgLyogdGltZSB2YWx1ZXMgKi8KICAgICBkID0gUHlEYXRlVGltZV9UaW1lVHlwZS50cF9kaWN0OwogCi0gICAgeCA9IG5ld190aW1lKDAsIDAsIDAsIDAsIFB5X05vbmUpOworICAgIHggPSBuZXdfdGltZSgwLCAwLCAwLCAwLCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtaW4iLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAotICAgIHggPSBuZXdfdGltZSgyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUpOworICAgIHggPSBuZXdfdGltZSgyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1heCIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwpAQCAtNTMwMCwxMiArNTY5MywxMiBAQAogICAgIC8qIGRhdGV0aW1lIHZhbHVlcyAqLwogICAgIGQgPSBQeURhdGVUaW1lX0RhdGVUaW1lVHlwZS50cF9kaWN0OwogCi0gICAgeCA9IG5ld19kYXRldGltZSgxLCAxLCAxLCAwLCAwLCAwLCAwLCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X2RhdGV0aW1lKDEsIDEsIDEsIDAsIDAsIDAsIDAsIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1pbiIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwogCi0gICAgeCA9IG5ld19kYXRldGltZShNQVhZRUFSLCAxMiwgMzEsIDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSk7CisgICAgeCA9IG5ld19kYXRldGltZShNQVhZRUFSLCAxMiwgMzEsIDIzLCA1OSwgNTksIDk5OTk5OSwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWF4IiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CkBAIC01MzQ3LDcgKzU3NDAsNyBAQAogCiAgICAgLyogRXBvY2ggKi8KICAgICBQeURhdGVUaW1lX0Vwb2NoID0gbmV3X2RhdGV0aW1lKDE5NzAsIDEsIDEsIDAsIDAsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQywgMCk7CiAgICAgaWYgKFB5RGF0ZVRpbWVfRXBvY2ggPT0gTlVMTCkKICAgICAgIHJldHVybiBOVUxMOwogCkBAIC01MzgyLDE5ICs1Nzc1LDE5IEBACiAgICAgLyogQSA0LXllYXIgY3ljbGUgaGFzIGFuIGV4dHJhIGxlYXAgZGF5IG92ZXIgd2hhdCB3ZSdkIGdldCBmcm9tCiAgICAgICogcGFzdGluZyB0b2dldGhlciA0IHNpbmdsZSB5ZWFycy4KICAgICAgKi8KLSAgICBhc3NlcnQoREk0WSA9PSA0ICogMzY1ICsgMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJNFkgPT0gNCAqIDM2NSArIDEpOwogICAgIGFzc2VydChESTRZID09IGRheXNfYmVmb3JlX3llYXIoNCsxKSk7CiAKICAgICAvKiBTaW1pbGFybHksIGEgNDAwLXllYXIgY3ljbGUgaGFzIGFuIGV4dHJhIGxlYXAgZGF5IG92ZXIgd2hhdCB3ZSdkCiAgICAgICogZ2V0IGZyb20gcGFzdGluZyB0b2dldGhlciA0IDEwMC15ZWFyIGN5Y2xlcy4KICAgICAgKi8KLSAgICBhc3NlcnQoREk0MDBZID09IDQgKiBESTEwMFkgKyAxKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoREk0MDBZID09IDQgKiBESTEwMFkgKyAxKTsKICAgICBhc3NlcnQoREk0MDBZID09IGRheXNfYmVmb3JlX3llYXIoNDAwKzEpKTsKIAogICAgIC8qIE9UT0gsIGEgMTAwLXllYXIgY3ljbGUgaGFzIG9uZSBmZXdlciBsZWFwIGRheSB0aGFuIHdlJ2QgZ2V0IGZyb20KICAgICAgKiBwYXN0aW5nIHRvZ2V0aGVyIDI1IDQteWVhciBjeWNsZXMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJMTAwWSA9PSAyNSAqIERJNFkgLSAxKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoREkxMDBZID09IDI1ICogREk0WSAtIDEpOwogICAgIGFzc2VydChESTEwMFkgPT0gZGF5c19iZWZvcmVfeWVhcigxMDArMSkpOwogCiAgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCBlYTg3OTBiLi44MDQ5NzhhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMTQsMTYgKzE0LDE2IEBACiAgKi8KICNpZiBkZWZpbmVkKEhBVkVfTkRCTV9IKQogI2luY2x1ZGUgPG5kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOyAgLyogRU1YIHBvcnQgb2YgR0RCTSAqLworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOyAgLyogRU1YIHBvcnQgb2YgR0RCTSAqLwogI2VsaWYgZGVmaW5lZChIQVZFX0dEQk1fTkRCTV9IKQogI2luY2x1ZGUgPGdkYm0vbmRibS5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJHTlUgZ2RibSI7CitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJHTlUgZ2RibSI7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0RCTV9EQVNIX05EQk1fSCkKICNpbmNsdWRlIDxnZGJtLW5kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOwogI2VsaWYgZGVmaW5lZChIQVZFX0JFUktEQl9IKQogI2luY2x1ZGUgPGRiLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkJlcmtlbGV5IERCIjsKK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkJlcmtlbGV5IERCIjsKICNlbHNlCiAjZXJyb3IgIk5vIG5kYm0uaCBhdmFpbGFibGUhIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKaW5kZXggNmVmZGM5MS4uOTk1Njc4NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCiAjaW5jbHVkZSAiZG9jc3RyaW5ncy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogCiAKICNpZiAhZGVmaW5lZChNUERfVkVSU0lPTl9IRVgpIHx8IE1QRF9WRVJTSU9OX0hFWCA8IDB4MDIwNDAxMDAKQEAgLTE4OTAsMTIgKzE4ODksMTMgQEAKIC8qIFJldHVybiB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24gb2YgYSBudW1lcmljIFVuaWNvZGUgc3RyaW5nLiBUaGUgbnVtZXJpYwogICAgc3RyaW5nIG1heSBjb250YWluIGFzY2lpIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFsxLCAxMjddLCBhbnkgVW5pY29kZQogICAgc3BhY2UgYW5kIGFueSB1bmljb2RlIGRpZ2l0LiBJZiBzdHJpcF93cyBpcyB0cnVlLCBsZWFkaW5nIGFuZCB0cmFpbGluZwotICAgd2hpdGVzcGFjZSBpcyBzdHJpcHBlZC4KKyAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuIElmIGlnbm9yZV91bmRlcnNjb3JlcyBpcyB0cnVlLCB1bmRlcnNjb3JlcyBhcmUKKyAgIGlnbm9yZWQuCiAKICAgIFJldHVybiBOVUxMIGlmIG1hbGxvYyBmYWlscyBhbmQgYW4gZW1wdHkgc3RyaW5nIGlmIGludmFsaWQgY2hhcmFjdGVycwogICAgYXJlIGZvdW5kLiAqLwogc3RhdGljIGNoYXIgKgotbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzKQorbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzLCBpbnQgaWdub3JlX3VuZGVyc2NvcmVzKQogewogICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKICAgICB2b2lkICpkYXRhOwpAQCAtMTkzMCw2ICsxOTMwLDkgQEAKIAogICAgIGZvciAoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBqKTsKKyAgICAgICAgaWYgKGlnbm9yZV91bmRlcnNjb3JlcyAmJiBjaCA9PSAnXycpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPD0gMTI3KSB7CiAgICAgICAgICAgICAqY3ArKyA9IGNoOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0yMDEyLDcgKzIwMTUsNyBAQAogICAgIFB5T2JqZWN0ICpkZWM7CiAgICAgY2hhciAqczsKIAotICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDApOworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDAsIDApOwogICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjAzMiw3ICsyMDM1LDcgQEAKICAgICBQeU9iamVjdCAqZGVjOwogICAgIGNoYXIgKnM7CiAKLSAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAxKTsKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAxLCAxKTsKICAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTMzOTQsNiArMzM5NywxMDUgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHB5bG9uZzsKIH0KIAorLyogQ29udmVydCBhIERlY2ltYWwgdG8gaXRzIGV4YWN0IGludGVnZXIgcmF0aW8gcmVwcmVzZW50YXRpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2FzX2ludGVnZXJfcmF0aW8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqbnVtZXJhdG9yID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGVub21pbmF0b3IgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleHBvbmVudCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBtcGRfc3NpemVfdCBleHA7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKE1QRChzZWxmKSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc25hbihNUEQoc2VsZikpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworCisgICAgdG1wID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghbXBkX3Fjb3B5KE1QRCh0bXApLCBNUEQoc2VsZiksICZzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBleHAgPSBtcGRfaXN6ZXJvKE1QRCh0bXApKSA/IDAgOiBNUEQodG1wKS0+ZXhwOworICAgIE1QRCh0bXApLT5leHAgPSAwOworCisgICAgLyogY29udGV4dCBhbmQgcm91bmRpbmcgYXJlIHVudXNlZCBoZXJlOiB0aGUgY29udmVyc2lvbiBpcyBleGFjdCAqLworICAgIG51bWVyYXRvciA9IGRlY19hc19sb25nKHRtcCwgY29udGV4dCwgTVBEX1JPVU5EX0ZMT09SKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBleHBvbmVudCA9IFB5TG9uZ19Gcm9tU3NpemVfdChleHAgPCAwID8gLWV4cCA6IGV4cCk7CisgICAgaWYgKGV4cG9uZW50ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICB0bXAgPSBQeUxvbmdfRnJvbUxvbmcoMTApOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIFB5X1NFVFJFRihleHBvbmVudCwgX3B5X2xvbmdfcG93ZXIodG1wLCBleHBvbmVudCwgUHlfTm9uZSkpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChleHBvbmVudCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKGV4cCA+PSAwKSB7CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsIF9weV9sb25nX211bHRpcGx5KG51bWVyYXRvciwgZXhwb25lbnQpKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgICAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGVub21pbmF0b3IgPSBleHBvbmVudDsKKyAgICAgICAgZXhwb25lbnQgPSBOVUxMOworICAgICAgICB0bXAgPSBfUHlMb25nX0dDRChudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsIF9weV9sb25nX2Zsb29yX2RpdmlkZShudW1lcmF0b3IsIHRtcCkpOworICAgICAgICBQeV9TRVRSRUYoZGVub21pbmF0b3IsIF9weV9sb25nX2Zsb29yX2RpdmlkZShkZW5vbWluYXRvciwgdG1wKSk7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwgfHwgZGVub21pbmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlc3VsdCA9IFB5VHVwbGVfUGFjaygyLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKKworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGV4cG9uZW50KTsKKyAgICBQeV9YREVDUkVGKGRlbm9taW5hdG9yKTsKKyAgICBQeV9YREVDUkVGKG51bWVyYXRvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIFB5RGVjX1RvSW50ZWdyYWxWYWx1ZShQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC00NzAyLDYgKzQ4MDQsNyBAQAogICAvKiBNaXNjZWxsYW5lb3VzICovCiAgIHsgImZyb21fZmxvYXQiLCBkZWNfZnJvbV9mbG9hdCwgTUVUSF9PfE1FVEhfQ0xBU1MsIGRvY19mcm9tX2Zsb2F0IH0sCiAgIHsgImFzX3R1cGxlIiwgUHlEZWNfQXNUdXBsZSwgTUVUSF9OT0FSR1MsIGRvY19hc190dXBsZSB9LAorICB7ICJhc19pbnRlZ2VyX3JhdGlvIiwgZGVjX2FzX2ludGVnZXJfcmF0aW8sIE1FVEhfTk9BUkdTLCBkb2NfYXNfaW50ZWdlcl9yYXRpbyB9LAogCiAgIC8qIFNwZWNpYWwgbWV0aG9kcyAqLwogICB7ICJfX2NvcHlfXyIsIGRlY19jb3B5LCBNRVRIX05PQVJHUywgTlVMTCB9LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmggYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAppbmRleCA3MTAyOWE5Li5mN2ZkNmU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2RvY3N0cmluZ3MuaApAQCAtNzAsNiArNzAsMTUgQEAKIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCiBcbiIpOwogCitQeURvY19TVFJWQVIoZG9jX2FzX2ludGVnZXJfcmF0aW8sCisiYXNfaW50ZWdlcl9yYXRpbygkc2VsZiwgLylcbi0tXG5cblwKK0RlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIC0+IChpbnQsIGludClcblwKK1xuXAorUmV0dXJuIGEgcGFpciBvZiBpbnRlZ2Vycywgd2hvc2UgcmF0aW8gaXMgZXhhY3RseSBlcXVhbCB0byB0aGUgb3JpZ2luYWxcblwKK0RlY2ltYWwgYW5kIHdpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvci4gVGhlIHJhdGlvIGlzIGluIGxvd2VzdCB0ZXJtcy5cblwKK1JhaXNlIE92ZXJmbG93RXJyb3Igb24gaW5maW5pdGllcyBhbmQgYSBWYWx1ZUVycm9yIG9uIE5hTnMuXG5cCitcbiIpOworCiBQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwKICJjYW5vbmljYWwoJHNlbGYsIC8pXG4tLVxuXG5cCiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBlbmNvZGluZyBvZiB0aGUgYXJndW1lbnQuICBDdXJyZW50bHksIHRoZSBlbmNvZGluZ1xuXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKaW5kZXggMzVkZTZiOC4uZGZlMTUyMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSAiY29uc3RhbnRzLmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCiAjaW5jbHVkZSAidHlwZWFyaXRoLmgiCiAjaW5jbHVkZSAiYmFzZWFyaXRoLmgiCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwppbmRleCBhNDVhNDI5Li4zYWFkZmIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSAiYml0cy5oIgogI2luY2x1ZGUgImNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgImlvLmgiCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCmluZGV4IDBmNDFmZTUuLmE4NTRlMDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwpAQCAtMzAsNyArMzAsMTIgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgIm1wYWxsb2MuaCIKKworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjMyKQorI2VuZGlmCiAKIAogLyogR3VhcmFudGVlZCBtaW5pbXVtIGFsbG9jYXRpb24gZm9yIGEgY29lZmZpY2llbnQuIE1heSBiZSBjaGFuZ2VkIG9uY2UKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaApzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCnJlbmFtZSB0byBNb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaAppbmRleCA5Yzk4ZDFhLi5lZmQ3MTE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oCkBAIC0yNiw4ICsyNiw4IEBACiAgKi8KIAogCi0jaWZuZGVmIE1FTU9SWV9ICi0jZGVmaW5lIE1FTU9SWV9ICisjaWZuZGVmIE1QQUxMT0NfSAorI2RlZmluZSBNUEFMTE9DX0gKIAogCiAjaW5jbHVkZSAibXBkZWNpbWFsLmgiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYwppbmRleCA1OTNmOWY1Li4zMjhhYjkyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJiaXRzLmgiCiAjaW5jbHVkZSAiY29udm9sdXRlLmgiCiAjaW5jbHVkZSAiY3J0LmgiCi0jaW5jbHVkZSAibWVtb3J5LmgiCisjaW5jbHVkZSAibXBhbGxvYy5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgInVtb2Rhcml0aC5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaAppbmRleCA1Y2E3NDEzLi5kYWYyYjlkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKQEAgLTQ4LDYgKzQ4LDggQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgogCiAjaWZkZWYgX01TQ19WRVIKICAgI2luY2x1ZGUgInZjY29tcGF0LmgiCkBAIC01OSwxMiArNjEsNiBAQAogICAjZGVmaW5lIE1QRF9ISURFX1NZTUJPTFNfRU5ECiAgICNkZWZpbmUgRVhUSU5MSU5FIGV4dGVybiBpbmxpbmUKICNlbHNlCi0gICNpZmRlZiBIQVZFX1NURElOVF9ICi0gICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAjZW5kaWYKLSAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAjZW5kaWYKICAgI2lmbmRlZiBfX0dOVUNfU1REQ19JTkxJTkVfXwogICAgICNkZWZpbmUgX19HTlVDX1NURENfSU5MSU5FX18gMQogICAjZW5kaWYKQEAgLTEwOCw5ICsxMDQsOSBAQAogCiAjZGVmaW5lIE1QRF9NQUpPUl9WRVJTSU9OIDIKICNkZWZpbmUgTVBEX01JTk9SX1ZFUlNJT04gNAotI2RlZmluZSBNUERfTUlDUk9fVkVSU0lPTiAxCisjZGVmaW5lIE1QRF9NSUNST19WRVJTSU9OIDIKIAotI2RlZmluZSBNUERfVkVSU0lPTiAiMi40LjEiCisjZGVmaW5lIE1QRF9WRVJTSU9OICIyLjQuMiIKIAogI2RlZmluZSBNUERfVkVSU0lPTl9IRVggKChNUERfTUFKT1JfVkVSU0lPTiA8PCAyNCkgfCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE1QRF9NSU5PUl9WRVJTSU9OIDw8IDE2KSB8IFwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaAppbmRleCBmNThlMDIzLi5kZDEzMWQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCkBAIC0zMiw3ICszMiw2IEBACiAKIC8qIFZpc3VhbCBDIGZpeGVzOiBubyBzdGRpbnQuaCwgbm8gc25wcmludGYgLi4uICovCiAjaWZkZWYgX01TQ19WRVIKLSAgI2luY2x1ZGUgInZjc3RkaW50LmgiCiAgICN1bmRlZiBpbmxpbmUKICAgI2RlZmluZSBpbmxpbmUgX19pbmxpbmUKICAgI3VuZGVmIHJhbmRvbQpAQCAtNDksMTAgKzQ4LDYgQEAKICAgI3VuZGVmIHN0cnRvbGwKICAgI2RlZmluZSBzdHJ0b2xsIF9zdHJ0b2k2NAogICAjZGVmaW5lIHN0cmR1cCBfc3RyZHVwCi0gICNkZWZpbmUgUFJJaTY0ICJJNjRpIgotICAjZGVmaW5lIFBSSXU2NCAiSTY0dSIKLSAgI2RlZmluZSBQUklpMzIgIkkzMmkiCi0gICNkZWZpbmUgUFJJdTMyICJJMzJ1IgogI2VuZGlmCiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKaW5kZXggYWI3ZDViZC4uZjkwNzUzMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CkBAIC01MCw4ICs1MCw4IEBACiAgICAgICAgICdfX2Fic19fJywgJ19fYm9vbF9fJywgJ19fY2VpbF9fJywgJ19fY29tcGxleF9fJywgJ19fY29weV9fJywKICAgICAgICAgJ19fZmxvb3JfXycsICdfX2Zsb2F0X18nLCAnX19oYXNoX18nLCAnX19pbnRfXycsICdfX25lZ19fJywKICAgICAgICAgJ19fcG9zX18nLCAnX19yZWR1Y2VfXycsICdfX3JlcHJfXycsICdfX3N0cl9fJywgJ19fdHJ1bmNfXycsCi0gICAgICAgICdhZGp1c3RlZCcsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywgJ2NvcHlfYWJzJywKLSAgICAgICAgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAorICAgICAgICAnYWRqdXN0ZWQnLCAnYXNfaW50ZWdlcl9yYXRpbycsICdhc190dXBsZScsICdjYW5vbmljYWwnLCAnY29uanVnYXRlJywKKyAgICAgICAgJ2NvcHlfYWJzJywgJ2NvcHlfbmVnYXRlJywgJ2lzX2Nhbm9uaWNhbCcsICdpc19maW5pdGUnLCAnaXNfaW5maW5pdGUnLAogICAgICAgICAnaXNfbmFuJywgJ2lzX3FuYW4nLCAnaXNfc2lnbmVkJywgJ2lzX3NuYW4nLCAnaXNfemVybycsICdyYWRpeCcKICAgICApLAogICAgICMgVW5hcnkgd2l0aCBvcHRpb25hbCBjb250ZXh0OgpAQCAtMTI4LDcgKzEyOCw3IEBACiAjIEZ1bmN0aW9ucyB0aGF0IHJlcXVpcmUgYSByZXN0cmljdGVkIGV4cG9uZW50IHJhbmdlIGZvciByZWFzb25hYmxlIHJ1bnRpbWVzLgogVW5hcnlSZXN0cmljdGVkID0gWwogICAnX19jZWlsX18nLCAnX19mbG9vcl9fJywgJ19faW50X18nLCAnX190cnVuY19fJywKLSAgJ3RvX2ludGVncmFsJywgJ3RvX2ludGVncmFsX3ZhbHVlJworICAnYXNfaW50ZWdlcl9yYXRpbycsICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKIF0KIAogQmluYXJ5UmVzdHJpY3RlZCA9IFsnX19yb3VuZF9fJ10KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCmluZGV4IDFjZGRkYWYuLjU5Mzc1MjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKKysrIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwpAQCAtNTcsOSArNTcsOSBAQAogICAgdGhhdCBhbGwgdXNlIG9mIHRleHQgYW5kIHRhaWwgYXMgb2JqZWN0IHBvaW50ZXJzIG11c3QgYmUgd3JhcHBlZCBpbgogICAgSk9JTl9PQkouICBzZWUgY29tbWVudHMgaW4gdGhlIEVsZW1lbnRPYmplY3QgZGVmaW5pdGlvbiBmb3IgbW9yZQogICAgaW5mby4gKi8KLSNkZWZpbmUgSk9JTl9HRVQocCkgKChQeV91aW50cHRyX3QpIChwKSAmIDEpCi0jZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgoUHlfdWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKLSNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgoUHlfdWludHB0cl90KSAocCkgJiB+KFB5X3VpbnRwdHJfdCkxKSkKKyNkZWZpbmUgSk9JTl9HRVQocCkgKCh1aW50cHRyX3QpIChwKSAmIDEpCisjZGVmaW5lIEpPSU5fU0VUKHAsIGZsYWcpICgodm9pZCopICgodWludHB0cl90KSAoSk9JTl9PQkoocCkpIHwgKGZsYWcpKSkKKyNkZWZpbmUgSk9JTl9PQkoocCkgKChQeU9iamVjdCopICgodWludHB0cl90KSAocCkgJiB+KHVpbnRwdHJfdCkxKSkKIAogLyogUHlfQ0xFQVIgZm9yIGEgUHlPYmplY3QqIHRoYXQgdXNlcyBhIGpvaW4gZmxhZy4gUGFzcyB0aGUgcG9pbnRlciBieQogICogcmVmZXJlbmNlIHNpbmNlIHRoaXMgZnVuY3Rpb24gc2V0cyBpdCB0byBOVUxMLgpAQCAtMTI5LDMwICsxMjksNiBAQAogLyogaGVscGVycyAqLwogCiBMT0NBTChQeU9iamVjdCopCi1kZWVwY29weShQeU9iamVjdCogb2JqZWN0LCBQeU9iamVjdCogbWVtbykKLXsKLSAgICAvKiBkbyBhIGRlZXAgY29weSBvZiB0aGUgZ2l2ZW4gb2JqZWN0ICovCi0gICAgUHlPYmplY3QqIGFyZ3M7Ci0gICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICBlbGVtZW50dHJlZXN0YXRlICpzdCA9IEVUX1NUQVRFX0dMT0JBTDsKLQotICAgIGlmICghc3QtPmRlZXBjb3B5X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiZGVlcGNvcHkgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgb2JqZWN0LCBtZW1vKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3Qoc3QtPmRlZXBjb3B5X29iaiwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUxPQ0FMKFB5T2JqZWN0KikKIGxpc3Rfam9pbihQeU9iamVjdCogbGlzdCkKIHsKICAgICAvKiBqb2luIGxpc3QgZWxlbWVudHMgKGRlc3Ryb3lpbmcgdGhlIGxpc3QgaW4gdGhlIHByb2Nlc3MpICovCkBAIC00MjAsMTAgKzM5Niw4IEBACiAgICAgUHlfWERFQ1JFRihhdHRyaWIpOwogCiAgICAgLyogUmVwbGFjZSB0aGUgb2JqZWN0cyBhbHJlYWR5IHBvaW50ZWQgdG8gYnkgdGFnLCB0ZXh0IGFuZCB0YWlsLiAqLwotICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFnOwogICAgIFB5X0lOQ1JFRih0YWcpOwotICAgIHNlbGZfZWxlbS0+dGFnID0gdGFnOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYoc2VsZl9lbGVtLT50YWcsIHRhZyk7CiAKICAgICB0bXAgPSBzZWxmX2VsZW0tPnRleHQ7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtNzQ4LDYgKzcyMiw5IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopIGVsZW1lbnQ7CiB9CiAKKy8qIEhlbHBlciBmb3IgYSBkZWVwIGNvcHkuICovCitMT0NBTChQeU9iamVjdCAqKSBkZWVwY29weShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKwogLypbY2xpbmljIGlucHV0XQogX2VsZW1lbnR0cmVlLkVsZW1lbnQuX19kZWVwY29weV9fCiAKQEAgLTgyMCw3ICs3OTcsNyBAQAogICAgIH0KIAogICAgIC8qIGFkZCBvYmplY3QgdG8gbWVtbyBkaWN0aW9uYXJ5IChzbyBkZWVwY29weSB3b24ndCB2aXNpdCBpdCBhZ2FpbikgKi8KLSAgICBpZCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgoUHlfdWludHB0cl90KSBzZWxmKTsKKyAgICBpZCA9IFB5TG9uZ19Gcm9tU3NpemVfdCgodWludHB0cl90KSBzZWxmKTsKICAgICBpZiAoIWlkKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC04MzgsNiArODE1LDUzIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK0xPQ0FMKFB5T2JqZWN0ICopCitkZWVwY29weShQeU9iamVjdCAqb2JqZWN0LCBQeU9iamVjdCAqbWVtbykKK3sKKyAgICAvKiBkbyBhIGRlZXAgY29weSBvZiB0aGUgZ2l2ZW4gb2JqZWN0ICovCisgICAgZWxlbWVudHRyZWVzdGF0ZSAqc3Q7CisgICAgUHlPYmplY3QgKnN0YWNrWzJdOworCisgICAgLyogRmFzdCBwYXRocyAqLworICAgIGlmIChvYmplY3QgPT0gUHlfTm9uZSB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgIFB5X0lOQ1JFRihvYmplY3QpOworICAgICAgICByZXR1cm4gb2JqZWN0OworICAgIH0KKworICAgIGlmIChQeV9SRUZDTlQob2JqZWN0KSA9PSAxKSB7CisgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgICAgICAgICBpbnQgc2ltcGxlID0gMTsKKyAgICAgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChvYmplY3QsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgIVB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2ltcGxlKQorICAgICAgICAgICAgICAgIHJldHVybiBQeURpY3RfQ29weShvYmplY3QpOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoIHRvIGdlbmVyYWwgY2FzZSAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKEVsZW1lbnRfQ2hlY2tFeGFjdChvYmplY3QpKSB7CisgICAgICAgICAgICByZXR1cm4gX2VsZW1lbnR0cmVlX0VsZW1lbnRfX19kZWVwY29weV9fKChFbGVtZW50T2JqZWN0ICopb2JqZWN0LCBtZW1vKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEdlbmVyYWwgY2FzZSAqLworICAgIHN0ID0gRVRfU1RBVEVfR0xPQkFMOworICAgIGlmICghc3QtPmRlZXBjb3B5X29iaikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImRlZXBjb3B5IGhlbHBlciBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc3RhY2tbMF0gPSBvYmplY3Q7CisgICAgc3RhY2tbMV0gPSBtZW1vOworICAgIHJldHVybiBfUHlPYmplY3RfRmFzdENhbGwoc3QtPmRlZXBjb3B5X29iaiwgc3RhY2ssIDIpOworfQorCisKIC8qW2NsaW5pYyBpbnB1dF0KIF9lbGVtZW50dHJlZS5FbGVtZW50Ll9fc2l6ZW9mX18gLT4gUHlfc3NpemVfdAogCkBAIC0xNzYzLDcgKzE3ODcsNyBAQAogICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW4gPD0gU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpOwogCiAgICAgICAgICAgICAvKiByZWN5Y2xlIGlzIGEgbGlzdCB0aGF0IHdpbGwgY29udGFpbiBhbGwgdGhlIGNoaWxkcmVuCiAgICAgICAgICAgICAgKiBzY2hlZHVsZWQgZm9yIHJlbW92YWwuCkBAIC0xODkyLDkyICsxOTE2LDkwIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZ2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCitlbGVtZW50X3RhZ19nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgICBQeU9iamVjdCogcmVzOwotICAgIGNoYXIgKm5hbWUgPSAiIjsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCi0gICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotCi0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBoYW5kbGUgY29tbW9uIGF0dHJpYnV0ZXMgZmlyc3QgKi8KLSAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWciKSA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IHNlbGYtPnRhZzsKLSAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRleHQiKSA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X3RleHQoc2VsZik7Ci0gICAgICAgIFB5X1hJTkNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvKiBtZXRob2RzICovCi0gICAgcmVzID0gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKFB5T2JqZWN0Kikgc2VsZiwgbmFtZW9iaik7Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmV0dXJuIHJlczsKLQotICAgIC8qIGxlc3MgY29tbW9uIGF0dHJpYnV0ZXMgKi8KLSAgICBpZiAoc3RyY21wKG5hbWUsICJ0YWlsIikgPT0gMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXMgPSBlbGVtZW50X2dldF90YWlsKHNlbGYpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKLSAgICAgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICBQeU9iamVjdCAqcmVzID0gc2VsZi0+dGFnOwogICAgIFB5X0lOQ1JFRihyZXMpOwogICAgIHJldHVybiByZXM7CiB9CiAKLXN0YXRpYyBpbnQKLWVsZW1lbnRfc2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmosIFB5T2JqZWN0KiB2YWx1ZSkKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfdGV4dF9nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKIHsKLSAgICBjaGFyICpuYW1lID0gIiI7CisgICAgUHlPYmplY3QgKnJlcyA9IGVsZW1lbnRfZ2V0X3RleHQoc2VsZik7CisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CiAKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiY2FuJ3QgZGVsZXRlIGF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm4gLTE7CitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3RhaWxfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlPYmplY3QgKnJlcyA9IGVsZW1lbnRfZ2V0X3RhaWwoc2VsZik7CisgICAgUHlfWElOQ1JFRihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfYXR0cmliX2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLSAgICBpZiAobmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQogCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICBQeV9TRVRSRUYoc2VsZi0+dGFnLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRleHQiKSA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7Ci0gICAgICAgIHNlbGYtPnRleHQgPSB2YWx1ZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRleHQpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0YWlsIikgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOwotICAgICAgICBzZWxmLT50YWlsID0gdmFsdWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT50YWlsKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewotICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7Ci0gICAgICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfU0VUUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIsIHZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAiQ2FuJ3Qgc2V0IGFyYml0cmFyeSBhdHRyaWJ1dGVzIG9uIEVsZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIC0xOworLyogbWFjcm8gZm9yIHNldHRlciB2YWxpZGF0aW9uICovCisjZGVmaW5lIF9WQUxJREFURV9BVFRSX1ZBTFVFKFYpICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgoVikgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBQeUV4Y19BdHRyaWJ1dGVFcnJvciwgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBlbGVtZW50IGF0dHJpYnV0ZSIpOyAgICAgIFwKKyAgICAgICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQogCitzdGF0aWMgaW50CitlbGVtZW50X3RhZ19zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1NFVFJFRihzZWxmLT50YWcsIHZhbHVlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF90ZXh0X3NldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgX1ZBTElEQVRFX0FUVFJfVkFMVUUodmFsdWUpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKKyAgICBzZWxmLT50ZXh0ID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfdGFpbF9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50YWlsKSk7CisgICAgc2VsZi0+dGFpbCA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X2F0dHJpYl9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBpZiAoIXNlbGYtPmV4dHJhKSB7CisgICAgICAgIGlmIChjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X1NFVFJFRihzZWxmLT5leHRyYS0+YXR0cmliLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE5OTcsMjIgKzIwMTksMjIgQEAKICAqIHByZS1vcmRlciB0cmF2ZXJzYWwuIFRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggc3ViLWVsZW1lbnQgc2hvdWxkIGJlIHJldHVybmVkCiAgKiBuZXh0LCBhIHN0YWNrIG9mIHBhcmVudHMgaXMgbWFpbnRhaW5lZC4gVGhpcyBpcyBhIHN0YW5kYXJkIHN0YWNrLWJhc2VkCiAgKiBpdGVyYXRpdmUgcHJlLW9yZGVyIHRyYXZlcnNhbCBvZiBhIHRyZWUuCi0gKiBUaGUgc3RhY2sgaXMgbWFuYWdlZCB1c2luZyBhIHNpbmdsZS1saW5rZWQgbGlzdCBzdGFydGluZyBhdCBwYXJlbnRfc3RhY2suCi0gKiBFYWNoIHN0YWNrIG5vZGUgY29udGFpbnMgdGhlIHNhdmVkIHBhcmVudCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyCisgKiBUaGUgc3RhY2sgaXMgbWFuYWdlZCB1c2luZyBhIGNvbnRpbnVvdXMgYXJyYXkuCisgKiBFYWNoIHN0YWNrIGl0ZW0gY29udGFpbnMgdGhlIHNhdmVkIHBhcmVudCB0byB3aGljaCB3ZSBzaG91bGQgcmV0dXJuIGFmdGVyCiAgKiB0aGUgY3VycmVudCBvbmUgaXMgZXhoYXVzdGVkLCBhbmQgdGhlIG5leHQgY2hpbGQgdG8gZXhhbWluZSBpbiB0aGF0IHBhcmVudC4KICAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90IHsKICAgICBFbGVtZW50T2JqZWN0ICpwYXJlbnQ7CiAgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKLSAgICBzdHJ1Y3QgUGFyZW50TG9jYXRvcl90ICpuZXh0OwogfSBQYXJlbnRMb2NhdG9yOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFBhcmVudExvY2F0b3IgKnBhcmVudF9zdGFjazsKKyAgICBQeV9zc2l6ZV90IHBhcmVudF9zdGFja191c2VkOworICAgIFB5X3NzaXplX3QgcGFyZW50X3N0YWNrX3NpemU7CiAgICAgRWxlbWVudE9iamVjdCAqcm9vdF9lbGVtZW50OwogICAgIFB5T2JqZWN0ICpzb3VnaHRfdGFnOwotICAgIGludCByb290X2RvbmU7CiAgICAgaW50IGdldHRleHQ7CiB9IEVsZW1lbnRJdGVyT2JqZWN0OwogCkBAIC0yMDIwLDEzICsyMDQyLDExIEBACiBzdGF0aWMgdm9pZAogZWxlbWVudGl0ZXJfZGVhbGxvYyhFbGVtZW50SXRlck9iamVjdCAqaXQpCiB7Ci0gICAgUGFyZW50TG9jYXRvciAqcCA9IGl0LT5wYXJlbnRfc3RhY2s7Ci0gICAgd2hpbGUgKHApIHsKLSAgICAgICAgUGFyZW50TG9jYXRvciAqdGVtcCA9IHA7Ci0gICAgICAgIFB5X1hERUNSRUYocC0+cGFyZW50KTsKLSAgICAgICAgcCA9IHAtPm5leHQ7Ci0gICAgICAgIFB5T2JqZWN0X0ZyZWUodGVtcCk7Ci0gICAgfQorICAgIFB5X3NzaXplX3QgaSA9IGl0LT5wYXJlbnRfc3RhY2tfdXNlZDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQgPSAwOworICAgIHdoaWxlIChpLS0pCisgICAgICAgIFB5X1hERUNSRUYoaXQtPnBhcmVudF9zdGFja1tpXS5wYXJlbnQpOworICAgIFB5TWVtX0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7CiAKICAgICBQeV9YREVDUkVGKGl0LT5zb3VnaHRfdGFnKTsKICAgICBQeV9YREVDUkVGKGl0LT5yb290X2VsZW1lbnQpOwpAQCAtMjAzOCwxMSArMjA1OCw5IEBACiBzdGF0aWMgaW50CiBlbGVtZW50aXRlcl90cmF2ZXJzZShFbGVtZW50SXRlck9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOwotICAgIHdoaWxlIChwKSB7Ci0gICAgICAgIFB5X1ZJU0lUKHAtPnBhcmVudCk7Ci0gICAgICAgIHAgPSBwLT5uZXh0OwotICAgIH0KKyAgICBQeV9zc2l6ZV90IGkgPSBpdC0+cGFyZW50X3N0YWNrX3VzZWQ7CisgICAgd2hpbGUgKGktLSkKKyAgICAgICAgUHlfVklTSVQoaXQtPnBhcmVudF9zdGFja1tpXS5wYXJlbnQpOwogCiAgICAgUHlfVklTSVQoaXQtPnJvb3RfZWxlbWVudCk7CiAgICAgUHlfVklTSVQoaXQtPnNvdWdodF90YWcpOwpAQCAtMjA1MSwxNyArMjA2OSwyNSBAQAogCiAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGVsZW1lbnRpdGVyX25leHQuIEFkZCBhIG5ldyBwYXJlbnQgdG8gdGhlIHBhcmVudCBzdGFjay4KICAqLwotc3RhdGljIFBhcmVudExvY2F0b3IgKgotcGFyZW50X3N0YWNrX3B1c2hfbmV3KFBhcmVudExvY2F0b3IgKnN0YWNrLCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCitzdGF0aWMgaW50CitwYXJlbnRfc3RhY2tfcHVzaF9uZXcoRWxlbWVudEl0ZXJPYmplY3QgKml0LCBFbGVtZW50T2JqZWN0ICpwYXJlbnQpCiB7Ci0gICAgUGFyZW50TG9jYXRvciAqbmV3X25vZGUgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKTsKLSAgICBpZiAobmV3X25vZGUpIHsKLSAgICAgICAgbmV3X25vZGUtPnBhcmVudCA9IHBhcmVudDsKLSAgICAgICAgUHlfSU5DUkVGKHBhcmVudCk7Ci0gICAgICAgIG5ld19ub2RlLT5jaGlsZF9pbmRleCA9IDA7Ci0gICAgICAgIG5ld19ub2RlLT5uZXh0ID0gc3RhY2s7CisgICAgUGFyZW50TG9jYXRvciAqaXRlbTsKKworICAgIGlmIChpdC0+cGFyZW50X3N0YWNrX3VzZWQgPj0gaXQtPnBhcmVudF9zdGFja19zaXplKSB7CisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemUgPSBpdC0+cGFyZW50X3N0YWNrX3NpemUgKiAyOyAgLyogbmV2ZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgUGFyZW50TG9jYXRvciAqcGFyZW50X3N0YWNrID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICAgICAgUHlNZW1fUmVzaXplKHBhcmVudF9zdGFjaywgUGFyZW50TG9jYXRvciwgbmV3X3NpemUpOworICAgICAgICBpZiAocGFyZW50X3N0YWNrID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2s7CisgICAgICAgIGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSA9IG5ld19zaXplOwogICAgIH0KLSAgICByZXR1cm4gbmV3X25vZGU7CisgICAgaXRlbSA9IGl0LT5wYXJlbnRfc3RhY2sgKyBpdC0+cGFyZW50X3N0YWNrX3VzZWQrKzsKKyAgICBQeV9JTkNSRUYocGFyZW50KTsKKyAgICBpdGVtLT5wYXJlbnQgPSBwYXJlbnQ7CisgICAgaXRlbS0+Y2hpbGRfaW5kZXggPSAwOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjA3OCwxNTEgKzIxMDQsOTEgQEAKICAgICAgKiAgIC0gaXRlcnRleHQoKSBhbHNvIGhhcyB0byBoYW5kbGUgdGFpbCwgYWZ0ZXIgZmluaXNoaW5nIHdpdGggYWxsIHRoZQogICAgICAqICAgICBjaGlsZHJlbiBvZiBhIG5vZGUuCiAgICAgICovCi0gICAgRWxlbWVudE9iamVjdCAqY3VyX3BhcmVudDsKLSAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4OwogICAgIGludCByYzsKICAgICBFbGVtZW50T2JqZWN0ICplbGVtOworICAgIFB5T2JqZWN0ICp0ZXh0OwogCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgLyogSGFuZGxlIHRoZSBjYXNlIHJlYWNoZWQgaW4gdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGl0ZXJhdGlvbiwgd2hlcmUKLSAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gVGhlIHJvb3RfZG9uZSBmbGFnIGdpdmVzIHVzIGluZGljYXRpb24KLSAgICAgICAgICogd2hldGhlciB3ZSd2ZSBqdXN0IHN0YXJ0ZWQgaXRlcmF0aW5nIChzbyByb290X2RvbmUgaXMgMCksIGluIHdoaWNoCi0gICAgICAgICAqIGNhc2UgdGhlIHJvb3QgaXMgcmV0dXJuZWQuIElmIHJvb3RfZG9uZSBpcyAxIGFuZCB3ZSdyZSBoZXJlLCB0aGUKKyAgICAgICAgICogdGhlIHBhcmVudCBzdGFjayBpcyBlbXB0eS4gSWYgcm9vdF9lbGVtZW50IGlzIE5VTEwgYW5kIHdlJ3JlIGhlcmUsIHRoZQogICAgICAgICAgKiBpdGVyYXRvciBpcyBleGhhdXN0ZWQuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCkgewotICAgICAgICAgICAgaWYgKGl0LT5yb290X2RvbmUpIHsKKyAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrX3VzZWQpIHsKKyAgICAgICAgICAgIGlmICghaXQtPnJvb3RfZWxlbWVudCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVsZW0gPSBpdC0+cm9vdF9lbGVtZW50OwotICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0pOwotICAgICAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgaXQtPnJvb3RfZG9uZSA9IDE7Ci0gICAgICAgICAgICAgICAgcmMgPSAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyYykgewotICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJjID4gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCi0gICAgICAgICAqIHllcywgdmlzaXQgdGhlIG5leHQgY2hpbGQuIElmIG5vdCwgcG9wIHRoZSBzdGFjayBhbmQgdHJ5IGFnYWluLgotICAgICAgICAgKi8KLSAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKLSAgICAgICAgY2hpbGRfaW5kZXggPSBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleDsKLSAgICAgICAgaWYgKGN1cl9wYXJlbnQtPmV4dHJhICYmIGNoaWxkX2luZGV4IDwgY3VyX3BhcmVudC0+ZXh0cmEtPmxlbmd0aCkgewotICAgICAgICAgICAgZWxlbSA9IChFbGVtZW50T2JqZWN0ICopY3VyX3BhcmVudC0+ZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKLSAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4Kys7Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0pOwotICAgICAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBlbGVtZW50X2dldF90ZXh0KGVsZW0pOwotICAgICAgICAgICAgICAgIGlmICghdGV4dCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOwotICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmMgPSAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyYykgewotICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyYykgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxlbSA9IGl0LT5yb290X2VsZW1lbnQ7ICAvKiBzdGVhbHMgYSByZWZlcmVuY2UgKi8KKyAgICAgICAgICAgIGl0LT5yb290X2VsZW1lbnQgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnRhaWw7Ci0gICAgICAgICAgICBQYXJlbnRMb2NhdG9yICpuZXh0OwotICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgIHRhaWwgPSBlbGVtZW50X2dldF90YWlsKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgIGlmICghdGFpbCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3VyX3BhcmVudCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGFpbCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGFpbCA9IFB5X05vbmU7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV4dCA9IGl0LT5wYXJlbnRfc3RhY2stPm5leHQ7Ci0gICAgICAgICAgICBjdXJfcGFyZW50ID0gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50OwotICAgICAgICAgICAgUHlPYmplY3RfRnJlZShpdC0+cGFyZW50X3N0YWNrKTsKLSAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBuZXh0OwotICAgICAgICAgICAgUHlfWERFQ1JFRihjdXJfcGFyZW50KTsKLQotICAgICAgICAgICAgLyogTm90ZSB0aGF0IGV4dHJhIGNvbmRpdGlvbiBvbiBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgaGVyZTsKLSAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKLSAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCisgICAgICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCkgewotICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRhaWwpOwotICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWlsOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFBhcmVudExvY2F0b3IgKml0ZW0gPSAmaXQtPnBhcmVudF9zdGFja1tpdC0+cGFyZW50X3N0YWNrX3VzZWQgLSAxXTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXggPSBpdGVtLT5jaGlsZF9pbmRleDsKKyAgICAgICAgICAgIEVsZW1lbnRPYmplY3RFeHRyYSAqZXh0cmE7CisgICAgICAgICAgICBlbGVtID0gaXRlbS0+cGFyZW50OworICAgICAgICAgICAgZXh0cmEgPSBlbGVtLT5leHRyYTsKKyAgICAgICAgICAgIGlmICghZXh0cmEgfHwgY2hpbGRfaW5kZXggPj0gZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2tfdXNlZC0tOworICAgICAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFja191c2VkIGhlcmU7CisgICAgICAgICAgICAgICAgICogdGhpcyBpcyBiZWNhdXNlIGl0ZXJ0ZXh0KCkgaXMgc3VwcG9zZWQgdG8gb25seSByZXR1cm4gKmlubmVyKgorICAgICAgICAgICAgICAgICAqIHRleHQsIG5vdCB0ZXh0IGZvbGxvd2luZyB0aGUgZWxlbWVudCBpdCBiZWdhbiBpdGVyYXRpb24gd2l0aC4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQgJiYgaXQtPnBhcmVudF9zdGFja191c2VkKSB7CisgICAgICAgICAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X2dldF90YWlsKGVsZW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGdldHRleHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZWxlbSA9IChFbGVtZW50T2JqZWN0ICopZXh0cmEtPmNoaWxkcmVuW2NoaWxkX2luZGV4XTsKKyAgICAgICAgICAgIGl0ZW0tPmNoaWxkX2luZGV4Kys7CisgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LCBlbGVtKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKKyAgICAgICAgICAgIHRleHQgPSBlbGVtZW50X2dldF90ZXh0KGVsZW0pOworICAgICAgICAgICAgZ290byBnZXR0ZXh0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpCisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKKworICAgICAgICByYyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChlbGVtLT50YWcsIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSk7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZWxlbTsKKworICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY29udGludWU7CisKK2dldHRleHQ6CisgICAgICAgIGlmICghdGV4dCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRleHQgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOworICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc1RydWUodGV4dCk7CisgICAgICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgUHlfREVDUkVGKHRleHQpOworICAgICAgICAgICAgaWYgKHJjIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjI3NCw2ICsyMjQwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAorI2RlZmluZSBJTklUX1BBUkVOVF9TVEFDS19TSVpFIDgKIAogc3RhdGljIFB5T2JqZWN0ICoKIGNyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCkKQEAgLTIyODYsMjIgKzIyNTMsMjAgQEAKIAogICAgIFB5X0lOQ1JFRih0YWcpOwogICAgIGl0LT5zb3VnaHRfdGFnID0gdGFnOwotICAgIGl0LT5yb290X2RvbmUgPSAwOwogICAgIGl0LT5nZXR0ZXh0ID0gZ2V0dGV4dDsKICAgICBQeV9JTkNSRUYoc2VsZik7CiAgICAgaXQtPnJvb3RfZWxlbWVudCA9IHNlbGY7CiAKICAgICBQeU9iamVjdF9HQ19UcmFjayhpdCk7CiAKLSAgICBpdC0+cGFyZW50X3N0YWNrID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSk7CisgICAgaXQtPnBhcmVudF9zdGFjayA9IFB5TWVtX05ldyhQYXJlbnRMb2NhdG9yLCBJTklUX1BBUkVOVF9TVEFDS19TSVpFKTsKICAgICBpZiAoaXQtPnBhcmVudF9zdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQgPSBOVUxMOwotICAgIGl0LT5wYXJlbnRfc3RhY2stPmNoaWxkX2luZGV4ID0gMDsKLSAgICBpdC0+cGFyZW50X3N0YWNrLT5uZXh0ID0gTlVMTDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQgPSAwOworICAgIGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSA9IElOSVRfUEFSRU5UX1NUQUNLX1NJWkU7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CkBAIC0yMzI2LDcgKzIyOTEsNyBAQAogICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3Rvcnk7CiAKICAgICAvKiBlbGVtZW50IHRyYWNpbmcgKi8KLSAgICBQeU9iamVjdCAqZXZlbnRzOyAvKiBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCBpZiBub3QgY29sbGVjdGluZyAqLworICAgIFB5T2JqZWN0ICpldmVudHNfYXBwZW5kOyAvKiB0aGUgYXBwZW5kIG1ldGhvZCBvZiB0aGUgbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgKi8KICAgICBQeU9iamVjdCAqc3RhcnRfZXZlbnRfb2JqOyAvKiBldmVudCBvYmplY3RzIChOVUxMIHRvIGlnbm9yZSkgKi8KICAgICBQeU9iamVjdCAqZW5kX2V2ZW50X29iajsKICAgICBQeU9iamVjdCAqc3RhcnRfbnNfZXZlbnRfb2JqOwpAQCAtMjM2MSw3ICsyMzI2LDcgQEAKICAgICAgICAgfQogICAgICAgICB0LT5pbmRleCA9IDA7CiAKLSAgICAgICAgdC0+ZXZlbnRzID0gTlVMTDsKKyAgICAgICAgdC0+ZXZlbnRzX2FwcGVuZCA9IE5VTEw7CiAgICAgICAgIHQtPnN0YXJ0X2V2ZW50X29iaiA9IHQtPmVuZF9ldmVudF9vYmogPSBOVUxMOwogICAgICAgICB0LT5zdGFydF9uc19ldmVudF9vYmogPSB0LT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKICAgICB9CkBAIC0yMzgwLDEzICsyMzQ1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTFjZmE3NTU4OTcwZWU5NiBpbnB1dD0xYjQyNGVlZWZjMzUyNDljXSovCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmIChlbGVtZW50X2ZhY3RvcnkpIHsKICAgICAgICAgUHlfSU5DUkVGKGVsZW1lbnRfZmFjdG9yeSk7Ci0gICAgICAgIHRtcCA9IHNlbGYtPmVsZW1lbnRfZmFjdG9yeTsKLSAgICAgICAgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ID0gZWxlbWVudF9mYWN0b3J5OwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgIFB5X1hTRVRSRUYoc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCBlbGVtZW50X2ZhY3RvcnkpOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMjQxMSw3ICsyMzcyLDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOwogICAgIFB5X0NMRUFSKHNlbGYtPmVuZF9ldmVudF9vYmopOwogICAgIFB5X0NMRUFSKHNlbGYtPnN0YXJ0X2V2ZW50X29iaik7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzKTsKKyAgICBQeV9DTEVBUihzZWxmLT5ldmVudHNfYXBwZW5kKTsKICAgICBQeV9DTEVBUihzZWxmLT5zdGFjayk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZGF0YSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+bGFzdCk7CkBAIC0yNDkyLDEzICsyNDUzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGUpCiB7CiAgICAgaWYgKGFjdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeVR1cGxlX1BhY2soMiwgYWN0aW9uLCBub2RlKTsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgUHlPYmplY3QgKmV2ZW50ID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CisgICAgICAgIGlmIChldmVudCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNlbGYtPmV2ZW50c19hcHBlbmQsIGV2ZW50LCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGV2ZW50KTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzZWxmLT5ldmVudHMsIHJlcykgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0yNTI3LDEwICsyNDg5LDE3IEBACiAgICAgICAgIHNlbGYtPmRhdGEgPSBOVUxMOwogICAgIH0KIAotICAgIGlmIChzZWxmLT5lbGVtZW50X2ZhY3RvcnkgJiYgc2VsZi0+ZWxlbWVudF9mYWN0b3J5ICE9IFB5X05vbmUpIHsKLSAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKLSAgICB9IGVsc2UgeworICAgIGlmICghc2VsZi0+ZWxlbWVudF9mYWN0b3J5IHx8IHNlbGYtPmVsZW1lbnRfZmFjdG9yeSA9PSBQeV9Ob25lKSB7CiAgICAgICAgIG5vZGUgPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOworICAgIH0gZWxzZSBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOworICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7CiAgICAgfQogICAgIGlmICghbm9kZSkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI5ODksMTIgKzI5NTgsOCBAQAogICAgICAgICAgICAgYXR0cmliX2luICs9IDI7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICAvKiBQYXNzIGFuIGVtcHR5IGRpY3Rpb25hcnkgb24gKi8KLSAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIWF0dHJpYikgewotICAgICAgICAgICAgUHlfREVDUkVGKHRhZyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAogICAgIGlmIChUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKQEAgLTMwMDMsNiArMjk2OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnLCBhdHRyaWIpOwogICAgIH0KICAgICBlbHNlIGlmIChzZWxmLT5oYW5kbGVfc3RhcnQpIHsKKyAgICAgICAgaWYgKGF0dHJpYiA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmliKTsKKyAgICAgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmICghYXR0cmliKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfc3RhcnQsICJPTyIsIHRhZywgYXR0cmliKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzID0gTlVMTDsKQEAgLTMwNzYsNyArMzA0OSw3IEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghdGFyZ2V0LT5ldmVudHMgfHwgIXRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKQorICAgIGlmICghdGFyZ2V0LT5ldmVudHNfYXBwZW5kIHx8ICF0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCF1cmkpCkBAIC0zMDk5LDcgKzMwNzIsNyBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldC0+ZXZlbnRzKQorICAgIGlmICghdGFyZ2V0LT5ldmVudHNfYXBwZW5kKQogICAgICAgICByZXR1cm47CiAKICAgICB0cmVlYnVpbGRlcl9hcHBlbmRfZXZlbnQodGFyZ2V0LCB0YXJnZXQtPmVuZF9uc19ldmVudF9vYmosIFB5X05vbmUpOwpAQCAtMzQyNiw3ICszMzk5LDcgQEAKICAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX2Nsb3NlKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmhhbmRsZV9jbG9zZSwgIiIpOworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhzZWxmLT5oYW5kbGVfY2xvc2UpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgcmV0dXJuIHJlczsKQEAgLTM1ODgsNyArMzU2MSw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBfZWxlbWVudHRyZWUuWE1MUGFyc2VyLl9zZXRldmVudHMKIAotICAgIGV2ZW50c19xdWV1ZTogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMaXN0X1R5cGUnKQorICAgIGV2ZW50c19xdWV1ZTogb2JqZWN0CiAgICAgZXZlbnRzX3RvX3JlcG9ydDogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMzU5OCwxMiArMzU3MSwxMiBAQAogX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fc2V0ZXZlbnRzX2ltcGwoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV2ZW50c19xdWV1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9NTlkYjk3NDI5MTBjNjE3NF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NDAwOTI5MjJiMTNlZDEgaW5wdXQ9YWJmOTA4MzBhMWMzYjBmY10qLwogewogICAgIC8qIGFjdGl2YXRlIGVsZW1lbnQgZXZlbnQgcmVwb3J0aW5nICovCiAgICAgUHlfc3NpemVfdCBpOwogICAgIFRyZWVCdWlsZGVyT2JqZWN0ICp0YXJnZXQ7Ci0gICAgUHlPYmplY3QgKmV2ZW50c19zZXE7CisgICAgUHlPYmplY3QgKmV2ZW50c19hcHBlbmQsICpldmVudHNfc2VxOwogCiAgICAgaWYgKCFUcmVlQnVpbGRlcl9DaGVja0V4YWN0KHNlbGYtPnRhcmdldCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMzYxNiw4ICszNTg5LDEwIEBACiAKICAgICB0YXJnZXQgPSAoVHJlZUJ1aWxkZXJPYmplY3QqKSBzZWxmLT50YXJnZXQ7CiAKLSAgICBQeV9JTkNSRUYoZXZlbnRzX3F1ZXVlKTsKLSAgICBQeV9YU0VUUkVGKHRhcmdldC0+ZXZlbnRzLCBldmVudHNfcXVldWUpOworICAgIGV2ZW50c19hcHBlbmQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV2ZW50c19xdWV1ZSwgImFwcGVuZCIpOworICAgIGlmIChldmVudHNfYXBwZW5kID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1hTRVRSRUYodGFyZ2V0LT5ldmVudHNfYXBwZW5kLCBldmVudHNfYXBwZW5kKTsKIAogICAgIC8qIGNsZWFyIG91dCBleGlzdGluZyBldmVudHMgKi8KICAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaik7CkBAIC0zNzI3LDcgKzM3MDIsNyBAQAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJURVhUX01FVEhPRERFRgogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURVJGSU5EX01FVEhPRERFRgogCi0gICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVENISUxEUkVOX01FVEhPRERFRgogCiAgICAgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFTVNfTUVUSE9EREVGCkBAIC0zNzUwLDYgKzM3MjUsMjYgQEAKICAgICAob2Jqb2JqYXJncHJvYykgZWxlbWVudF9hc3Nfc3Vic2NyLAogfTsKIAorc3RhdGljIFB5R2V0U2V0RGVmIGVsZW1lbnRfZ2V0c2V0bGlzdFtdID0geworICAgIHsidGFnIiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X3RhZ19nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90YWdfc2V0dGVyLAorICAgICAgICAiQSBzdHJpbmcgaWRlbnRpZnlpbmcgd2hhdCBraW5kIG9mIGRhdGEgdGhpcyBlbGVtZW50IHJlcHJlc2VudHMifSwKKyAgICB7InRleHQiLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfdGV4dF9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90ZXh0X3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIG9mIHRleHQgZGlyZWN0bHkgYWZ0ZXIgdGhlIHN0YXJ0IHRhZywgb3IgTm9uZSJ9LAorICAgIHsidGFpbCIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF90YWlsX2dldHRlciwKKyAgICAgICAgKHNldHRlcillbGVtZW50X3RhaWxfc2V0dGVyLAorICAgICAgICAiQSBzdHJpbmcgb2YgdGV4dCBkaXJlY3RseSBhZnRlciB0aGUgZW5kIHRhZywgb3IgTm9uZSJ9LAorICAgIHsiYXR0cmliIiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X2F0dHJpYl9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF9hdHRyaWJfc2V0dGVyLAorICAgICAgICAiQSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzIn0sCisgICAge05VTEx9LAorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgInhtbC5ldHJlZS5FbGVtZW50VHJlZS5FbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLApAQCAtMzc2Niw4ICszNzYxLDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIChnZXRhdHRyb2Z1bmMpZWxlbWVudF9nZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCi0gICAgKHNldGF0dHJvZnVuYyllbGVtZW50X3NldGF0dHJvLCAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwpAQCAtMzc4MCw3ICszNzc1LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGVsZW1lbnRfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgZWxlbWVudF9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKaW5kZXggOWM5YWI1Zi4uMjI2OWQwNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKQEAgLTEyOCw0NCArMTI4LDYwIEBACiB7CiAgICAgUHlPYmplY3QgKnJldDsKICAgICBQeU9iamVjdCAqYXJnYXBwbCwgKmt3YXBwbDsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAKICAgICBhc3NlcnQgKFB5Q2FsbGFibGVfQ2hlY2socHRvLT5mbikpOwogICAgIGFzc2VydCAoUHlUdXBsZV9DaGVjayhwdG8tPmFyZ3MpKTsKICAgICBhc3NlcnQgKFB5RGljdF9DaGVjayhwdG8tPmt3KSk7CiAKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShwdG8tPmFyZ3MpID09IDApIHsKLSAgICAgICAgYXJnYXBwbCA9IGFyZ3M7Ci0gICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKLSAgICB9IGVsc2UgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMCkgewotICAgICAgICBhcmdhcHBsID0gcHRvLT5hcmdzOwotICAgICAgICBQeV9JTkNSRUYocHRvLT5hcmdzKTsKLSAgICB9IGVsc2UgeworICAgICAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgIGFyZ2FwcGwgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKKyAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShwdG8tPmFyZ3MsIDApOworICAgICAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUocHRvLT5hcmdzKTsKKyAgICAgICAgYXJnYXBwbCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IE5VTEw7CiAgICAgICAgIGFyZ2FwcGwgPSBQeVNlcXVlbmNlX0NvbmNhdChwdG8tPmFyZ3MsIGFyZ3MpOwotICAgICAgICBpZiAoYXJnYXBwbCA9PSBOVUxMKQorICAgICAgICBpZiAoYXJnYXBwbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCiAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ2FwcGwpKTsKICAgICB9CiAKICAgICBpZiAoUHlEaWN0X1NpemUocHRvLT5rdykgPT0gMCkgewogICAgICAgICBrd2FwcGwgPSBrdzsKICAgICAgICAgUHlfWElOQ1JFRihrd2FwcGwpOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBrd2FwcGwgPSBQeURpY3RfQ29weShwdG8tPmt3KTsKICAgICAgICAgaWYgKGt3YXBwbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJnYXBwbCk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ2FwcGwpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoa3cgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RGljdF9NZXJnZShrd2FwcGwsIGt3LCAxKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoYXJnYXBwbCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXBwbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXQgPSBQeU9iamVjdF9DYWxsKHB0by0+Zm4sIGFyZ2FwcGwsIGt3YXBwbCk7Ci0gICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgIGlmIChzdGFjaykgeworICAgICAgICByZXQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHB0by0+Zm4sIHN0YWNrLCBuYXJncywga3dhcHBsKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGwocHRvLT5mbiwgYXJnYXBwbCwga3dhcHBsKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgIH0KICAgICBQeV9YREVDUkVGKGt3YXBwbCk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTIxMyw3ICsyMjksNyBAQAogICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICBpZiAoc3RhdHVzIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKC4uLikiLCBQeV9UWVBFKHB0byktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIi4uLiIpOwogICAgIH0KIAogICAgIGFyZ2xpc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CkBAIC00NjEsMTIgKzQ3NywxMiBAQAoga2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeU9iamVjdCAqYXJnczsKICAgICBQeU9iamVjdCAqeDsKICAgICBQeU9iamVjdCAqeTsKICAgICBQeU9iamVjdCAqY29tcGFyZTsKICAgICBQeU9iamVjdCAqYW5zd2VyOwogICAgIHN0YXRpYyBQeU9iamVjdCAqemVybzsKKyAgICBQeU9iamVjdCogc3RhY2tbMl07CiAKICAgICBpZiAoemVybyA9PSBOVUxMKSB7CiAgICAgICAgIHplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CkBAIC00OTAsMTcgKzUwNiwxMyBAQAogICAgIC8qIENhbGwgdGhlIHVzZXIncyBjb21wYXJpc29uIGZ1bmN0aW9uIGFuZCB0cmFuc2xhdGUgdGhlIDMtd2F5CiAgICAgICogcmVzdWx0IGludG8gdHJ1ZSBvciBmYWxzZSAob3IgZXJyb3IpLgogICAgICAqLwotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIHN0YWNrWzBdID0geDsKKyAgICBzdGFja1sxXSA9IHk7CisgICAgcmVzID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNvbXBhcmUsIHN0YWNrLCAyKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgUHlfSU5DUkVGKHgpOwotICAgIFB5X0lOQ1JFRih5KTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIHgpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgeSk7Ci0gICAgcmVzID0gUHlPYmplY3RfQ2FsbChjb21wYXJlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBhbnN3ZXIgPSBQeU9iamVjdF9SaWNoQ29tcGFyZShyZXMsIHplcm8sIG9wKTsKICAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gYW5zd2VyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZ2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCmluZGV4IGI4NDBiZjUuLmRhYWU3MWQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKQEAgLTYxNCw3ICs2MTQsNyBAQAogICAgIHJldHVybiBuZXdkYm1vYmplY3QobmFtZSwgaWZsYWdzLCBtb2RlKTsKIH0KIAotc3RhdGljIGNoYXIgZGJtbW9kdWxlX29wZW5fZmxhZ3NbXSA9ICJyd2NuIgorc3RhdGljIGNvbnN0IGNoYXIgZGJtbW9kdWxlX29wZW5fZmxhZ3NbXSA9ICJyd2NuIgogI2lmZGVmIEdEQk1fRkFTVAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmIgogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwppbmRleCBmZjU3NjE0Li5kYWE0ZjNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCisrKyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKQEAgLTI1LDYgKzI1LDEyIEBACiAjaW5jbHVkZSA8b3BlbnNzbC9vYmplY3RzLmg+CiAjaW5jbHVkZSAib3BlbnNzbC9lcnIuaCIKIAorI2luY2x1ZGUgImNsaW5pYy9faGFzaG9wZW5zc2wuYy5oIgorLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9oYXNobGliCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1jMmI0ZmYwODFiYWM0YmUxXSovCisKICNkZWZpbmUgTVVOQ0hfU0laRSBJTlRfTUFYCiAKICNpZm5kZWYgSEFTSF9PQkpfQ09OU1RSVUNUT1IKQEAgLTcxMyw2ICs3MTksMTI4IEBACiAKICNlbmRpZgogCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+IDB4MTAxMDAwMDBMICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fU0NSWVBUKSAmJiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikKKyNkZWZpbmUgUFlfU0NSWVBUIDEKKworLypbY2xpbmljIGlucHV0XQorX2hhc2hsaWIuc2NyeXB0CisKKyAgICBwYXNzd29yZDogUHlfYnVmZmVyCisgICAgKgorICAgIHNhbHQ6IFB5X2J1ZmZlciA9IE5vbmUKKyAgICBuIGFzIG5fb2JqOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxvbmdfVHlwZScpID0gTm9uZQorICAgIHIgYXMgcl9vYmo6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TG9uZ19UeXBlJykgPSBOb25lCisgICAgcCBhcyBwX29iajogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMb25nX1R5cGUnKSA9IE5vbmUKKyAgICBtYXhtZW06IGxvbmcgPSAwCisgICAgZGtsZW46IGxvbmcgPSA2NAorCisKK3NjcnlwdCBwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19oYXNobGliX3NjcnlwdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqcGFzc3dvcmQsIFB5X2J1ZmZlciAqc2FsdCwKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuX29iaiwgUHlPYmplY3QgKnJfb2JqLCBQeU9iamVjdCAqcF9vYmosCisgICAgICAgICAgICAgICAgICAgICBsb25nIG1heG1lbSwgbG9uZyBka2xlbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDg0OWUyYWEyYjdiNDZjIGlucHV0PTQ4YTdkNjNiZjNmNzVjNDJdKi8KK3sKKyAgICBQeU9iamVjdCAqa2V5X29iaiA9IE5VTEw7CisgICAgY2hhciAqa2V5OworICAgIGludCByZXR2YWw7CisgICAgdW5zaWduZWQgbG9uZyBuLCByLCBwOworCisgICAgaWYgKHBhc3N3b3JkLT5sZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInBhc3N3b3JkIGlzIHRvbyBsb25nLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2FsdC0+YnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzYWx0IGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc2FsdC0+bGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzYWx0IGlzIHRvbyBsb25nLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG5fb2JqKTsKKyAgICBpZiAobiA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm4gaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAobiA8IDIgfHwgbiAmIChuIC0gMSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibiBtdXN0IGJlIGEgcG93ZXIgb2YgMi4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgciA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhyX29iaik7CisgICAgaWYgKHIgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiciBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiB1bnNpZ25lZCBpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhwX29iaik7CisgICAgaWYgKHAgPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicCBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhbiB1bnNpZ25lZCBpbnQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG1heG1lbSA8IDAgfHwgbWF4bWVtID4gSU5UX01BWCkgeworICAgICAgICAvKiBPcGVuU1NMIDEuMS4wIHJlc3RyaWN0cyBtYXhtZW0gdG8gMzJNQi4gSXQgbWF5IGNoYW5nZSBpbiB0aGUKKyAgICAgICAgICAgZnV0dXJlLiBUaGUgbWF4bWVtIGNvbnN0YW50IGlzIHByaXZhdGUgdG8gT3BlblNTTC4gKi8KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibWF4bWVtIG11c3QgYmUgcG9zaXRpdmUgYW5kIHNtYWxsZXIgdGhhbiAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChka2xlbiA8IDEgfHwgZGtsZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAiZGtsZW4gbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgc21hbGxlciB0aGFuICVkIiwKKyAgICAgICAgICAgICAgICAgICAgSU5UX01BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGxldCBPcGVuU1NMIHZhbGlkYXRlIHRoZSByZXN0ICovCisgICAgcmV0dmFsID0gRVZQX1BCRV9zY3J5cHQoTlVMTCwgMCwgTlVMTCwgMCwgbiwgciwgcCwgbWF4bWVtLCBOVUxMLCAwKTsKKyAgICBpZiAoIXJldHZhbCkgeworICAgICAgICAvKiBzb3JyeSwgY2FuJ3QgZG8gbXVjaCBiZXR0ZXIgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBwYXJhbWVtdGVyIGNvbWJpbmF0aW9uIGZvciBuLCByLCBwLCBtYXhtZW0uIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgfQorCisgICAga2V5X29iaiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZGtsZW4pOworICAgIGlmIChrZXlfb2JqID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGtleSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGtleV9vYmopOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldHZhbCA9IEVWUF9QQkVfc2NyeXB0KAorICAgICAgICAoY29uc3QgY2hhciopcGFzc3dvcmQtPmJ1ZiwgKHNpemVfdClwYXNzd29yZC0+bGVuLAorICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKXNhbHQtPmJ1ZiwgKHNpemVfdClzYWx0LT5sZW4sCisgICAgICAgIG4sIHIsIHAsIG1heG1lbSwKKyAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilrZXksIChzaXplX3QpZGtsZW4KKyAgICApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJldHZhbCkgeworICAgICAgICBQeV9DTEVBUihrZXlfb2JqKTsKKyAgICAgICAgX3NldEV4Y2VwdGlvbihQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBrZXlfb2JqOworfQorI2VuZGlmCisKIC8qIFN0YXRlIGZvciBvdXIgY2FsbGJhY2sgZnVuY3Rpb24gc28gdGhhdCBpdCBjYW4gYWNjdW11bGF0ZSBhIHJlc3VsdC4gKi8KIHR5cGVkZWYgc3RydWN0IF9pbnRlcm5hbF9uYW1lX21hcHBlcl9zdGF0ZSB7CiAgICAgUHlPYmplY3QgKnNldDsKQEAgLTgzNiw2ICs5NjQsNyBAQAogICAgIHsicGJrZGYyX2htYWMiLCAoUHlDRnVuY3Rpb24pcGJrZGYyX2htYWMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICBwYmtkZjJfaG1hY19fZG9jX199LAogI2VuZGlmCisgICAgX0hBU0hMSUJfU0NSWVBUX01FVEhPRERFRgogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKG1kNSksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMSksCiAgICAgQ09OU1RSVUNUT1JfTUVUSF9ERUYoc2hhMjI0KSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMgYi9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCmluZGV4IDEzNmFiZjUuLmI0OTllMWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwpAQCAtNjYsNyArNjYsNyBAQAogCiAgICAgLyogQnViYmxlIHVwIHRoZSBzbWFsbGVyIGNoaWxkIHVudGlsIGhpdHRpbmcgYSBsZWFmLiAqLwogICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7Ci0gICAgbGltaXQgPSBlbmRwb3MgLyAyOyAgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KKyAgICBsaW1pdCA9IGVuZHBvcyA+PiAxOyAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLwogICAgIHdoaWxlIChwb3MgPCBsaW1pdCkgewogICAgICAgICAvKiBTZXQgY2hpbGRwb3MgdG8gaW5kZXggb2Ygc21hbGxlciBjaGlsZC4gICAqLwogICAgICAgICBjaGlsZHBvcyA9IDIqcG9zICsgMTsgICAgLyogbGVmdG1vc3QgY2hpbGQgcG9zaXRpb24gICovCkBAIC03OCw2ICs3OCw3IEBACiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBjaGlsZHBvcyArPSAoKHVuc2lnbmVkKWNtcCBeIDEpOyAgIC8qIGluY3JlbWVudCB3aGVuIGNtcD09MCAqLworICAgICAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsgICAgICAgICAvKiBhcnIgbWF5IGhhdmUgY2hhbmdlZCAqLwogICAgICAgICAgICAgaWYgKGVuZHBvcyAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwpAQCAtODUsNyArODYsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIE1vdmUgdGhlIHNtYWxsZXIgY2hpbGQgdXAuICovCi0gICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7CiAgICAgICAgIHRtcDEgPSBhcnJbY2hpbGRwb3NdOwogICAgICAgICB0bXAyID0gYXJyW3Bvc107CiAgICAgICAgIGFycltjaGlsZHBvc10gPSB0bXAyOwpAQCAtMzQ3LDcgKzM0Nyw3IEBACiAgICAgICAgbiBpcyBvZGQgPSAyKmorMSwgdGhpcyBpcyAoMipqKzEtMSkvMiA9IGogc28gai0xIGlzIHRoZSBsYXJnZXN0LAogICAgICAgIGFuZCB0aGF0J3MgYWdhaW4gbi8vMi0xLgogICAgICovCi0gICAgZm9yIChpID0gbi8yIC0gMSA7IGkgPj0gMCA7IGktLSkKKyAgICBmb3IgKGkgPSAobiA+PiAxKSAtIDEgOyBpID49IDAgOyBpLS0pCiAgICAgICAgIGlmIChzaWZ0dXBfZnVuYygoUHlMaXN0T2JqZWN0ICopaGVhcCwgaSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTQyMCw3ICs0MjAsNyBAQAogCiAgICAgLyogQnViYmxlIHVwIHRoZSBzbWFsbGVyIGNoaWxkIHVudGlsIGhpdHRpbmcgYSBsZWFmLiAqLwogICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7Ci0gICAgbGltaXQgPSBlbmRwb3MgLyAyOyAgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KKyAgICBsaW1pdCA9IGVuZHBvcyA+PiAxOyAgICAgICAgIC8qIHNtYWxsZXN0IHBvcyB0aGF0IGhhcyBubyBjaGlsZCAqLwogICAgIHdoaWxlIChwb3MgPCBsaW1pdCkgewogICAgICAgICAvKiBTZXQgY2hpbGRwb3MgdG8gaW5kZXggb2Ygc21hbGxlciBjaGlsZC4gICAqLwogICAgICAgICBjaGlsZHBvcyA9IDIqcG9zICsgMTsgICAgLyogbGVmdG1vc3QgY2hpbGQgcG9zaXRpb24gICovCkBAIC00MzIsNiArNDMyLDcgQEAKICAgICAgICAgICAgIGlmIChjbXAgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGNoaWxkcG9zICs9ICgodW5zaWduZWQpY21wIF4gMSk7ICAgLyogaW5jcmVtZW50IHdoZW4gY21wPT0wICovCisgICAgICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOyAgICAgICAgIC8qIGFyciBtYXkgaGF2ZSBjaGFuZ2VkICovCiAgICAgICAgICAgICBpZiAoZW5kcG9zICE9IFB5TGlzdF9HRVRfU0laRShoZWFwKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CkBAIC00MzksNyArNDQwLDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLiAqLwotICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwogICAgICAgICB0bXAxID0gYXJyW2NoaWxkcG9zXTsKICAgICAgICAgdG1wMiA9IGFycltwb3NdOwogICAgICAgICBhcnJbY2hpbGRwb3NdID0gdG1wMjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKaW5kZXggNjVjOTU1YS4uNjBmOGI1NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmMKQEAgLTIwLDYgKzIwLDkgQEAKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2VuZGlmIC8qIEhBVkVfU1lTX1NUQVRfSCAqLwogCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPGNvbnNvbGVhcGkuaD4KKyNlbmRpZgogCiAvKiBWYXJpb3VzIGludGVybmVkIHN0cmluZ3MgKi8KIApAQCAtNTIsNyArNTUsNiBAQAogUHlPYmplY3QgKl9QeUlPX2VtcHR5X2J5dGVzOwogUHlPYmplY3QgKl9QeUlPX3plcm87CiAKLQwKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogIlRoZSBpbyBtb2R1bGUgcHJvdmlkZXMgdGhlIFB5dGhvbiBpbnRlcmZhY2VzIHRvIHN0cmVhbSBoYW5kbGluZy4gVGhlXG4iCiAiYnVpbHRpbiBvcGVuIGZ1bmN0aW9uIGlzIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuXG4iCkBAIC0yMzgsMjAgKzI0MCwzMyBAQAogICAgIGludCB0ZXh0ID0gMCwgYmluYXJ5ID0gMCwgdW5pdmVyc2FsID0gMDsKIAogICAgIGNoYXIgcmF3bW9kZVs2XSwgKm07Ci0gICAgaW50IGxpbmVfYnVmZmVyaW5nLCBpc2F0dHk7CisgICAgaW50IGxpbmVfYnVmZmVyaW5nLCBpc19udW1iZXI7CisgICAgbG9uZyBpc2F0dHk7CiAKLSAgICBQeU9iamVjdCAqcmF3LCAqbW9kZW9iaiA9IE5VTEwsICpidWZmZXIsICp3cmFwcGVyLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmF3LCAqbW9kZW9iaiA9IE5VTEwsICpidWZmZXIsICp3cmFwcGVyLCAqcmVzdWx0ID0gTlVMTCwgKnBhdGhfb3JfZmQgPSBOVUxMOwogCiAgICAgX1B5X0lERU5USUZJRVIoX2Jsa3NpemUpOwogICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CiAgICAgX1B5X0lERU5USUZJRVIobW9kZSk7CiAgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOwogCi0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZmlsZSkgJiYKLQkhUHlCeXRlc19DaGVjayhmaWxlKSAmJgotCSFQeU51bWJlcl9DaGVjayhmaWxlKSkgeworICAgIGlzX251bWJlciA9IFB5TnVtYmVyX0NoZWNrKGZpbGUpOworCisgICAgaWYgKGlzX251bWJlcikgeworICAgICAgICBwYXRoX29yX2ZkID0gZmlsZTsKKyAgICAgICAgUHlfSU5DUkVGKHBhdGhfb3JfZmQpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhdGhfb3JfZmQgPSBQeU9TX0ZTUGF0aChmaWxlKTsKKyAgICAgICAgaWYgKHBhdGhfb3JfZmQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWlzX251bWJlciAmJgorICAgICAgICAhUHlVbmljb2RlX0NoZWNrKHBhdGhfb3JfZmQpICYmCisgICAgICAgICFQeUJ5dGVzX0NoZWNrKHBhdGhfb3JfZmQpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGZpbGU6ICVSIiwgZmlsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIC8qIERlY29kZSBtb2RlICovCkBAIC0yOTIsNyArMzA3LDcgQEAKICAgICAgICAgaWYgKHN0cmNocihtb2RlK2krMSwgYykpIHsKICAgICAgICAgICBpbnZhbGlkX21vZGU6CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgbW9kZTogJyVzJyIsIG1vZGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAKICAgICB9CkBAIC0zMDcsNTQgKzMyMiw2NyBAQAogCiAgICAgLyogUGFyYW1ldGVycyB2YWxpZGF0aW9uICovCiAgICAgaWYgKHVuaXZlcnNhbCkgewotICAgICAgICBpZiAod3JpdGluZyB8fCBhcHBlbmRpbmcpIHsKKyAgICAgICAgaWYgKGNyZWF0aW5nIHx8IHdyaXRpbmcgfHwgYXBwZW5kaW5nIHx8IHVwZGF0aW5nKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIFUgYW5kIHdyaXRpbmcgbW9kZSBhdCBvbmNlIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kZSBVIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIHgnLCAndycsICdhJywgb3IgJysnIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICInVScgbW9kZSBpcyBkZXByZWNhdGVkIiwgMSkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICByZWFkaW5nID0gMTsKICAgICB9CiAKICAgICBpZiAodGV4dCAmJiBiaW5hcnkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgaGF2ZSB0ZXh0IGFuZCBiaW5hcnkgbW9kZSBhdCBvbmNlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChjcmVhdGluZyArIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGJpbmFyeSAmJiBlbmNvZGluZyAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlbmNvZGluZyBhcmd1bWVudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoYmluYXJ5ICYmIGVycm9ycyAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlcnJvcnMgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGJpbmFyeSAmJiBuZXdsaW5lICE9IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGEgbmV3bGluZSBhcmd1bWVudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICAvKiBDcmVhdGUgdGhlIFJhdyBmaWxlIHN0cmVhbSAqLwotICAgIHJhdyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmUHlGaWxlSU9fVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zaU8iLCBmaWxlLCByYXdtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOworICAgIHsKKyAgICAgICAgUHlPYmplY3QgKlJhd0lPX2NsYXNzID0gKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGU7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAoIVB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgJiYgX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShwYXRoX29yX2ZkKSAhPSAnXDAnKSB7CisgICAgICAgICAgICBSYXdJT19jbGFzcyA9IChQeU9iamVjdCAqKSZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIHJhdyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihSYXdJT19jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc2lPIiwgcGF0aF9vcl9mZCwgcmF3bW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKyAgICB9CisKICAgICBpZiAocmF3ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIHJlc3VsdCA9IHJhdzsKIAorICAgIFB5X0RFQ1JFRihwYXRoX29yX2ZkKTsKKyAgICBwYXRoX29yX2ZkID0gTlVMTDsKKwogICAgIG1vZGVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtb2RlKTsKICAgICBpZiAobW9kZW9iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNDM3LDEwICs0NjUsMTAgQEAKIAogICAgIC8qIHdyYXBzIGludG8gYSBUZXh0SU9XcmFwcGVyICovCiAgICAgd3JhcHBlciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmUHlUZXh0SU9XcmFwcGVyX1R5cGUsCi0JCQkJICAgICJPc3NzaSIsCi0JCQkJICAgIGJ1ZmZlciwKLQkJCQkgICAgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwKLQkJCQkgICAgbGluZV9idWZmZXJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zc3NpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZyk7CiAgICAgaWYgKHdyYXBwZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICByZXN1bHQgPSB3cmFwcGVyOwpAQCAtNDYwLDYgKzQ4OCw3IEBACiAgICAgICAgIFB5X1hERUNSRUYoY2xvc2VfcmVzdWx0KTsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgfQorICAgIFB5X1hERUNSRUYocGF0aF9vcl9mZCk7CiAgICAgUHlfWERFQ1JFRihtb2Rlb2JqKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTY5MSw2ICs3MjAsMTIgQEAKICAgICBQeVN0cmluZ0lPX1R5cGUudHBfYmFzZSA9ICZQeVRleHRJT0Jhc2VfVHlwZTsKICAgICBBRERfVFlQRSgmUHlTdHJpbmdJT19UeXBlLCAiU3RyaW5nSU8iKTsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBXaW5kb3dzQ29uc29sZUlPICovCisgICAgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUudHBfYmFzZSA9ICZQeVJhd0lPQmFzZV9UeXBlOworICAgIEFERF9UWVBFKCZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSwgIl9XaW5kb3dzQ29uc29sZUlPIik7CisjZW5kaWYKKwogICAgIC8qIEJ1ZmZlcmVkUmVhZGVyICovCiAgICAgUHlCdWZmZXJlZFJlYWRlcl9UeXBlLnRwX2Jhc2UgPSAmUHlCdWZmZXJlZElPQmFzZV9UeXBlOwogICAgIEFERF9UWVBFKCZQeUJ1ZmZlcmVkUmVhZGVyX1R5cGUsICJCdWZmZXJlZFJlYWRlciIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmggYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAppbmRleCAwYzZlYWUyLi5kYWFlYmQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuaAorKysgYi9Nb2R1bGVzL19pby9faW9tb2R1bGUuaApAQCAtMTksNiArMTksMTMgQEAKIGV4dGVybiBQeVR5cGVPYmplY3QgUHlUZXh0SU9XcmFwcGVyX1R5cGU7CiBleHRlcm4gUHlUeXBlT2JqZWN0IFB5SW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9UeXBlOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjaWZkZWYgTVNfV0lORE9XUworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5V2luZG93c0NvbnNvbGVJT19UeXBlOworI2RlZmluZSBQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2sob3ApIChQeU9iamVjdF9UeXBlQ2hlY2soKG9wKSwgKFB5VHlwZU9iamVjdCopX1B5V2luZG93c0NvbnNvbGVJT19UeXBlKSkKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogZXh0ZXJuIGludCBfUHlJT19Db252ZXJ0U3NpemVfdChQeU9iamVjdCAqLCB2b2lkICopOwogCkBAIC02MCw3ICs2Nyw3IEBACiAgICAqIE90aGVyd2lzZSwgdGhlIGxpbmUgZW5kaW5nIGlzIHNwZWNpZmllZCBieSByZWFkbmwsIGEgc3RyIG9iamVjdCAqLwogZXh0ZXJuIFB5X3NzaXplX3QgX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOworICAgIGludCBraW5kLCBjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCk7CiAKIC8qIFJldHVybiAxIGlmIGFuIEVudmlyb25tZW50RXJyb3Igd2l0aCBlcnJubyA9PSBFSU5UUiBpcyBzZXQgKGFuZCB0aGVuCiAgICBjbGVhcnMgdGhlIGVycm9yIGluZGljYXRvciksIDAgb3RoZXJ3aXNlLgpAQCAtODUsMTIgKzkyLDEyIEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiAvKiBXaW5kb3dzIHVzZXMgbG9uZyBsb25nIGZvciBvZmZzZXRzICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBQeV9vZmZfdDsKK3R5cGVkZWYgbG9uZyBsb25nIFB5X29mZl90OwogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjIGRlZmluZSBQeUxvbmdfRnJvbU9mZl90ICAgUHlMb25nX0Zyb21Mb25nTG9uZwotIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIFBZX0xMT05HX01BWAotIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX0xMT05HX01JTgotIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIFBZX0xPTkdfTE9ORyAvKiB0eXBlIGNvbXBhdGlibGUgd2l0aCBvZmZfdCAqLworIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIExMT05HX01BWAorIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIExMT05HX01JTgorIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIGxvbmcgbG9uZyAgICAvKiB0eXBlIGNvbXBhdGlibGUgd2l0aCBvZmZfdCAqLwogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJsbGQiICAgICAgICAvKiBmb3JtYXQgdG8gdXNlIGZvciB0aGF0IHR5cGUgKi8KIAogI2Vsc2UKQEAgLTEwNCwxMiArMTExLDEyIEBACiAjIGRlZmluZSBQWV9PRkZfVF9NSU4gICAgICAgUFlfU1NJWkVfVF9NSU4KICMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQeV9zc2l6ZV90CiAjIGRlZmluZSBQWV9QUklkT0ZGICAgICAgICAgInpkIgotI2VsaWYgKEhBVkVfTE9OR19MT05HICYmIFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9OR19MT05HKQorI2VsaWYgKFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9OR19MT05HKQogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmdMb25nCiAjIGRlZmluZSBQeUxvbmdfRnJvbU9mZl90ICAgUHlMb25nX0Zyb21Mb25nTG9uZwotIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIFBZX0xMT05HX01BWAotIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX0xMT05HX01JTgotIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIFBZX0xPTkdfTE9ORworIyBkZWZpbmUgUFlfT0ZGX1RfTUFYICAgICAgIExMT05HX01BWAorIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIExMT05HX01JTgorIyBkZWZpbmUgUFlfT0ZGX1RfQ09NUEFUICAgIGxvbmcgbG9uZwogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJsbGQiCiAjZWxpZiAoU0laRU9GX09GRl9UID09IFNJWkVPRl9MT05HKQogIyBkZWZpbmUgUHlMb25nX0FzT2ZmX3QgICAgIFB5TG9uZ19Bc0xvbmcKQEAgLTE0NSw2ICsxNTIsMTAgQEAKIGV4dGVybiBfUHlJT19TdGF0ZSAqX1B5SU9fZ2V0X21vZHVsZV9zdGF0ZSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fZ2V0X2xvY2FsZV9tb2R1bGUoX1B5SU9fU3RhdGUgKik7CiAKKyNpZmRlZiBNU19XSU5ET1dTCitleHRlcm4gY2hhciBfUHlJT19nZXRfY29uc29sZV90eXBlKFB5T2JqZWN0ICopOworI2VuZGlmCisKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2Nsb3NlOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfY2xvc2VkOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfZGVjb2RlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCmluZGV4IDZkNjc3NTEuLmNiZTc0MjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYworKysgYi9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKQEAgLTY1OSw3ICs2NTksNyBAQAogCiAvKiBTZXRzIHRoZSBjdXJyZW50IGVycm9yIHRvIEJsb2NraW5nSU9FcnJvciAqLwogc3RhdGljIHZvaWQKLV9zZXRfQmxvY2tpbmdJT0Vycm9yKGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQorX3NldF9CbG9ja2luZ0lPRXJyb3IoY29uc3QgY2hhciAqbXNnLCBQeV9zc2l6ZV90IHdyaXR0ZW4pCiB7CiAgICAgUHlPYmplY3QgKmVycjsKICAgICBQeUVycl9DbGVhcigpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCmluZGV4IDllNWQ3OGIuLmExYmExMjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYworKysgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKQEAgLTg3LDcgKzg3LDcgQEAKIHN0YXRpYyBpbnQKIHVuc2hhcmVfYnVmZmVyKGJ5dGVzaW8gKnNlbGYsIHNpemVfdCBzaXplKQogewotICAgIFB5T2JqZWN0ICpuZXdfYnVmLCAqb2xkX2J1ZjsKKyAgICBQeU9iamVjdCAqbmV3X2J1ZjsKICAgICBhc3NlcnQoU0hBUkVEX0JVRihzZWxmKSk7CiAgICAgYXNzZXJ0KHNlbGYtPmV4cG9ydHMgPT0gMCk7CiAgICAgYXNzZXJ0KHNpemUgPj0gKHNpemVfdClzZWxmLT5zdHJpbmdfc2l6ZSk7CkBAIC05Niw5ICs5Niw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2J1ZiksIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmJ1ZiksCiAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKLSAgICBvbGRfYnVmID0gc2VsZi0+YnVmOwotICAgIHNlbGYtPmJ1ZiA9IG5ld19idWY7Ci0gICAgUHlfREVDUkVGKG9sZF9idWYpOworICAgIFB5X1NFVFJFRihzZWxmLT5idWYsIG5ld19idWYpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oCmluZGV4IDZjODhlMzIuLmYyZTkxYTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9faW9tb2R1bGUuYy5oCkBAIC0xMjcsNyArMTI3LDcgQEAKICJvcGVuZWQgaW4gYSBiaW5hcnkgbW9kZS4iKTsKIAogI2RlZmluZSBfSU9fT1BFTl9NRVRIT0RERUYgICAgXAotICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilfaW9fb3BlbiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19vcGVuX19kb2NfX30sCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKV9pb19vcGVuLCBNRVRIX0ZBU1RDQUxMLCBfaW9fb3Blbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2lvX29wZW5faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwgY29uc3QgY2hhciAqbW9kZSwKQEAgLTEzNSwxMCArMTM1LDExIEBACiAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkLCBQeU9iamVjdCAqb3BlbmVyKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9pb19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2lvX29wZW4oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJidWZmZXJpbmciLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIGNvbnN0IGNoYXIgKm1vZGUgPSAiciI7CiAgICAgaW50IGJ1ZmZlcmluZyA9IC0xOwpAQCAtMTQ4LDEyICsxNDksMTMgQEAKICAgICBpbnQgY2xvc2VmZCA9IDE7CiAgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpenp6aU86b3BlbiIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZpbGUsICZtb2RlLCAmYnVmZmVyaW5nLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmY2xvc2VmZCwgJm9wZW5lcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX29wZW5faW1wbChtb2R1bGUsIGZpbGUsIG1vZGUsIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSwgY2xvc2VmZCwgb3BlbmVyKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJjMmMwMDNjYjdkYWVhZmUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM1YjhmYzhiODMxMDJiYmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCmluZGV4IDQzN2UyNzUuLjU4MTQ0YTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKQEAgLTE5LDE0ICsxOSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZElPQmFzZV9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDgsMTQgKzUwLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG8xX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC05OSw4ICsxMDMsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBlZWsiLAotICAgICAgICAmc2l6ZSkpCisgICAgICAgICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcGVla19pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMTI1LDggKzEzMCw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZF9pbXBsKHNlbGYsIG4pOwogCiBleGl0OgpAQCAtMTUwLDggKzE1Niw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJuOnJlYWQxIiwgJm4pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjpyZWFkMSIsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfcmVhZDFfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTE3NSwxNCArMTgyLDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMDQsMTQgKzIxMywxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRpbnRvMV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjM0LDggKzI0NSw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0yNjEsOCArMjczLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLAotICAgICAgICAmdGFyZ2V0b2JqLCAmd2hlbmNlKSkKKyAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3NlZWtfaW1wbChzZWxmLCB0YXJnZXRvYmosIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0yODgsOCArMzAxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvcykpCisgICAgICAgICZwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF90cnVuY2F0ZV9pbXBsKHNlbGYsIHBvcyk7CiAKIGV4aXQ6CkBAIC0zMTAsMTMgKzMyNCwxNSBAQAogX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRSZWFkZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRSZWFkZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmVhZGVyX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC0zNDEsMTMgKzM1NywxNSBAQAogX2lvX0J1ZmZlcmVkV3JpdGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRXcml0ZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRXcml0ZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkV3JpdGVyX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC0zNzEsMTQgKzM4OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkV3JpdGVyX3dyaXRlX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MTAsMTEgKzQzMCwxMyBAQAogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZQeUJ1ZmZlcmVkUldQYWlyX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQnVmZmVyZWRSV1BhaXIiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJ1ZmZlcmVkUldQYWlyIiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCdWZmZXJlZFJXUGFpciIsCi0gICAgICAgICZyZWFkZXIsICZ3cml0ZXIsICZidWZmZXJfc2l6ZSkpCisgICAgICAgICZyZWFkZXIsICZ3cml0ZXIsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRSV1BhaXJfX19pbml0X19faW1wbCgocndwYWlyICopc2VsZiwgcmVhZGVyLCB3cml0ZXIsIGJ1ZmZlcl9zaXplKTsKIAogZXhpdDoKQEAgLTQzOSwxNiArNDYxLDE4IEBACiBfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bjpCdWZmZXJlZFJhbmRvbSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnJhdzsKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bjpCdWZmZXJlZFJhbmRvbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnVmZmVyZWRSYW5kb21fX19pbml0X19faW1wbCgoYnVmZmVyZWQgKilzZWxmLCByYXcsIGJ1ZmZlcl9zaXplKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiYmI1ZTIzOWI0ZmZlNmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE5NTZmMzk0ZWNkZTRjZjkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCmluZGV4IDVmMmFiYjAuLmM2NGNlNWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKQEAgLTE3MSw4ICsxNzEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMjE1LDggKzIxNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRsaW5lX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTI0Nyw4ICsyNDksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmVzIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGxpbmVzX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTI3NiwxNCArMjc5LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzExLDggKzMxNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTM0NSw4ICszNTEsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsCi0gICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICAmcG9zLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC00MDgsMTUgKzQxNSwxNyBAQAogX2lvX0J5dGVzSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImluaXRpYWxfYnl0ZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmluaXR2YWx1ZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpCeXRlc0lPIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5pdHZhbHVlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZpbml0dmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fX19pbml0X19faW1wbCgoYnl0ZXNpbyAqKXNlbGYsIGluaXR2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MGNlMmM2MjcyNzE4NDMxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzgyZThlYjU3OGVlYTY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKaW5kZXggMTA0MjAwOC4uOTA4ZmUwZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2ZpbGVpby5jLmgKQEAgLTQ5LDE1ICs0OSwxNyBAQAogX2lvX0ZpbGVJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzaU86RmlsZUlPIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqbmFtZW9iajsKICAgICBjb25zdCBjaGFyICptb2RlID0gInIiOwogICAgIGludCBjbG9zZWZkID0gMTsKICAgICBQeU9iamVjdCAqb3BlbmVyID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c2lPOkZpbGVJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmbmFtZW9iaiwgJm1vZGUsICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fX19pbml0X19faW1wbCgoZmlsZWlvICopc2VsZiwgbmFtZW9iaiwgbW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKIAogZXhpdDoKQEAgLTE1NCwxNCArMTU2LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yMTAsOCArMjE0LDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkX2ltcGwoc2VsZiwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC0yNDAsMTQgKzI0NSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT193cml0ZV9pbXBsKHNlbGYsICZiKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBiICovCi0gICAgaWYgKGIub2JqKQorICAgIGlmIChiLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODAsOCArMjg3LDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLAotICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgJnBvcywgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0zMzMsOCArMzQxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvc29iaikpCisgICAgICAgICZwb3NvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT190cnVuY2F0ZV9pbXBsKHNlbGYsIHBvc29iaik7CiAKIGV4aXQ6CkBAIC0zNjQsNCArMzczLDQgQEAKICNpZm5kZWYgX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0lPX0ZJTEVJT19UUlVOQ0FURV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGNiYzM5YjQ2NjU5ODQ5MiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTE5MjRiYzBlZTExZDU4ZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCmluZGV4IDk3NjJmMTEuLmVkYmY3M2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9pb2Jhc2UuYy5oCkBAIC0xODYsOCArMTg2LDkgQEAKICAgICBQeV9zc2l6ZV90IGxpbWl0ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbGltaXQpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fSU9CYXNlX3JlYWRsaW5lX2ltcGwoc2VsZiwgbGltaXQpOwogCiBleGl0OgpAQCAtMjE3LDggKzIxOCw5IEBACiAgICAgUHlfc3NpemVfdCBoaW50ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZXMiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmhpbnQpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmhpbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19JT0Jhc2VfcmVhZGxpbmVzX2ltcGwoc2VsZiwgaGludCk7CiAKIGV4aXQ6CkBAIC0yNTEsOCArMjUzLDkgQEAKICAgICBQeV9zc2l6ZV90IG4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cmVhZCIsCi0gICAgICAgICZuKSkKKyAgICAgICAgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19SYXdJT0Jhc2VfcmVhZF9pbXBsKHNlbGYsIG4pOwogCiBleGl0OgpAQCAtMjc2LDQgKzI3OSw0IEBACiB7CiAgICAgcmV0dXJuIF9pb19fUmF3SU9CYXNlX3JlYWRhbGxfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iODc0OTUyZjVjYzI0OGE0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wZjUzZmVkOTI4ZDhlMDJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCmluZGV4IGE4ZTMyYTMuLmQyYzA1ZDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaApAQCAtNjEsOCArNjEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTkxLDggKzkyLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3JlYWRsaW5lX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTEyMyw4ICsxMjUsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBhcmcpOwogCiBleGl0OgpAQCAtMTU3LDggKzE2MCw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58aTpzZWVrIiwKLSAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgICZwb3MsICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3NlZWtfaW1wbChzZWxmLCBwb3MsIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0yMTcsMTMgKzIyMSwxNSBAQAogX2lvX1N0cmluZ0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbml0aWFsX3ZhbHVlIiwgIm5ld2xpbmUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbml0aWFsX3ZhbHVlIiwgIm5ld2xpbmUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T086U3RyaW5nSU8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp2YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5ld2xpbmVfb2JqID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPTzpTdHJpbmdJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnZhbHVlLCAmbmV3bGluZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnZhbHVlLCAmbmV3bGluZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX19faW5pdF9fX2ltcGwoKHN0cmluZ2lvICopc2VsZiwgdmFsdWUsIG5ld2xpbmVfb2JqKTsKIAogZXhpdDoKQEAgLTI4Myw0ICsyODksNCBAQAogewogICAgIHJldHVybiBfaW9fU3RyaW5nSU9fc2Vla2FibGVfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMDYxY2YzYTIwY2QxNGVkIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZGQ1YzJhMjEzZTc1NDA1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKaW5kZXggZGM3ZThjNy4uZjM5YzM1NSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL3RleHRpby5jLmgKQEAgLTI0LDE0ICsyNCwxNiBAQAogX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRlY29kZXIiLCAidHJhbnNsYXRlIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9pfE86SW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRlY29kZXI7CiAgICAgaW50IHRyYW5zbGF0ZTsKICAgICBQeU9iamVjdCAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9pfE86SW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRlY29kZXIsICZ0cmFuc2xhdGUsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRlY29kZXIsICZ0cmFuc2xhdGUsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfX19pbml0X19faW1wbCgobmxkZWNvZGVyX29iamVjdCAqKXNlbGYsIGRlY29kZXIsIHRyYW5zbGF0ZSwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTQ0LDIzICs0NiwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0lPX0lOQ1JFTUVOVEFMTkVXTElORURFQ09ERVJfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9pbXBsKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5wdXQsIGludCBmaW5hbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1faW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGUobmxkZWNvZGVyX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAgICAgaW50IGZpbmFsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98aTpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmZpbmFsKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGZpbmFsKTsKIAogZXhpdDoKQEAgLTE1Myw3ICsxNTcsOCBAQAogX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImJ1ZmZlciIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYnVmZmVyIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImxpbmVfYnVmZmVyaW5nIiwgIndyaXRlX3Rocm91Z2giLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHp6emlpOlRleHRJT1dyYXBwZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpidWZmZXI7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CkBAIC0xNjEsOSArMTY2LDEwIEBACiAgICAgaW50IGxpbmVfYnVmZmVyaW5nID0gMDsKICAgICBpbnQgd3JpdGVfdGhyb3VnaCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHp6emlpOlRleHRJT1dyYXBwZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmJ1ZmZlciwgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmxpbmVfYnVmZmVyaW5nLCAmd3JpdGVfdGhyb3VnaCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9fX2luaXRfX19pbXBsKCh0ZXh0aW8gKilzZWxmLCBidWZmZXIsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nLCB3cml0ZV90aHJvdWdoKTsKIAogZXhpdDoKQEAgLTIwNCw4ICsyMTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp0ZXh0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOndyaXRlIiwgJnRleHQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3dyaXRlX2ltcGwoc2VsZiwgdGV4dCk7CiAKIGV4aXQ6CkBAIC0yMzAsOCArMjM3LDkgQEAKICAgICBQeV9zc2l6ZV90IG4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZF9pbXBsKHNlbGYsIG4pOwogCiBleGl0OgpAQCAtMjU2LDggKzI2NCw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWRsaW5lIiwKLSAgICAgICAgJnNpemUpKQorICAgICAgICAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjgzLDggKzI5Miw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJmNvb2tpZU9iaiwgJndoZW5jZSkpCisgICAgICAgICZjb29raWVPYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfc2Vla19pbXBsKHNlbGYsIGNvb2tpZU9iaiwgd2hlbmNlKTsKIAogZXhpdDoKQEAgLTMyNyw4ICszMzcsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmcG9zKSkKKyAgICAgICAgJnBvcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl90cnVuY2F0ZV9pbXBsKHNlbGYsIHBvcyk7CiAKIGV4aXQ6CkBAIC00NTMsNCArNDY0LDQgQEAKIHsKICAgICByZXR1cm4gX2lvX1RleHRJT1dyYXBwZXJfY2xvc2VfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OTA2MDhmODVhYWI4YmE1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03OGFkMTRlYmExNjY3MjU0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3dpbmNvbnNvbGVpby5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ0ZmNiYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oCkBAIC0wLDAgKzEsMzMxIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX19kb2NfXywKKyJjbG9zZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNsb3NlIHRoZSBoYW5kbGUuXG4iCisiXG4iCisiQSBjbG9zZWQgaGFuZGxlIGNhbm5vdCBiZSB1c2VkIGZvciBmdXJ0aGVyIEkvTyBvcGVyYXRpb25zLiAgY2xvc2UoKSBtYXkgYmVcbiIKKyJjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGICAgIFwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZSwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2Nsb3NlX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX19kb2NfXywKKyJfV2luZG93c0NvbnNvbGVJTyhmaWxlLCBtb2RlPVwnclwnLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiT3BlbiBhIGNvbnNvbGUgYnVmZmVyIGJ5IGZpbGUgZGVzY3JpcHRvci5cbiIKKyJcbiIKKyJUaGUgbW9kZSBjYW4gYmUgXCdyYlwnIChkZWZhdWx0KSwgb3IgXCd3YlwnIGZvciByZWFkaW5nIG9yIHdyaXRpbmcgYnl0ZXMuIEFsbFxuIgorIm90aGVyIG1vZGUgY2hhcmFjdGVycyB3aWxsIGJlIGlnbm9yZWQuIE1vZGUgXCdiXCcgd2lsbCBiZSBhc3N1bWVkIGlmIGl0IGlzXG4iCisib21pdHRlZC4gVGhlICpvcGVuZXIqIHBhcmFtZXRlciBpcyBhbHdheXMgaWdub3JlZC4iKTsKKworc3RhdGljIGludAorX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqbmFtZW9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1vZGUsIGludCBjbG9zZWZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9wZW5lcik7CisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2lPOl9XaW5kb3dzQ29uc29sZUlPIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBjb25zdCBjaGFyICptb2RlID0gInIiOworICAgIGludCBjbG9zZWZkID0gMTsKKyAgICBQeU9iamVjdCAqb3BlbmVyID0gUHlfTm9uZTsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19faW1wbCgod2luY29uc29sZWlvICopc2VsZiwgbmFtZW9iaiwgbW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19fZG9jX18sCisiZmlsZW5vKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikuXG4iCisiXG4iCisiZmlsZW5vIGlzIG9ubHkgc2V0IHdoZW4gYSBmaWxlIGRlc2NyaXB0b3IgaXMgdXNlZCB0byBvcGVuXG4iCisib25lIG9mIHRoZSBzdGFuZGFyZCBzdHJlYW1zLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGICAgIFwKKyAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fZmlsZW5vKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX19kb2NfXywKKyJyZWFkYWJsZSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlRydWUgaWYgY29uc29sZSBpcyBhbiBpbnB1dCBidWZmZXIuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGUod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9fZG9jX18sCisid3JpdGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGNvbnNvbGUgaXMgYW4gb3V0cHV0IGJ1ZmZlci4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRhYmxlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZSwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX19kb2NfXywKKyJyZWFkaW50bygkc2VsZiwgYnVmZmVyLCAvKVxuIgorIi0tXG4iCisiXG4iCisiU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50bywgTUVUSF9PLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9fZG9jX18sCisicmVhZGFsbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlYWQgYWxsIGRhdGEgZnJvbSB0aGUgY29uc29sZSwgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCisiXG4iCisiUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGICAgIFwKKyAgICB7InJlYWRhbGwiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGwsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGwod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9pbXBsKHNlbGYpOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfX2RvY19fLAorInJlYWQoJHNlbGYsIHNpemU9LTEsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuXG4iCisiXG4iCisiT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwgd2hlbiBzaXplIGlzIGEgcG9zaXRpdmUgaW50ZWdlcixcbiIKKyJzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkLCBNRVRIX1ZBUkFSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX2ltcGwoc2VsZiwgc2l6ZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9fZG9jX18sCisid3JpdGUoJHNlbGYsIGIsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJXcml0ZSBidWZmZXIgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uXG4iCisiXG4iCisiT25seSBtYWtlcyBvbmUgc3lzdGVtIGNhbGwsIHNvIG5vdCBhbGwgb2YgdGhlIGRhdGEgbWF5IGJlIHdyaXR0ZW4uXG4iCisiVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYgICAgXAorICAgIHsid3JpdGUiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlLCBNRVRIX08sIF9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9idWZmZXIgKmIpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3IgYiAqLworICAgIGlmIChiLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmIpOworICAgIH0KKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X19kb2NfXywKKyJpc2F0dHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJBbHdheXMgVHJ1ZS4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRiAgICBcCisgICAgeyJpc2F0dHkiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eSwgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRElOVE9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZWJhOTE2Zjg1MzdmZmY3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2ZpbGVpby5jIGIvTW9kdWxlcy9faW8vZmlsZWlvLmMKaW5kZXggOTE5Y2Y1MC4uNTRjZmI3ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vZmlsZWlvLmMKKysrIGIvTW9kdWxlcy9faW8vZmlsZWlvLmMKQEAgLTkyLDggKzkyLDcgQEAKICAgICBpZiAoc2VsZi0+ZmQgPj0gMCAmJiBzZWxmLT5jbG9zZWZkKSB7CiAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUmVzb3VyY2VXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5jbG9zZWQgZmlsZSAlUiIsIHNvdXJjZSkpIHsKKyAgICAgICAgaWYgKFB5RXJyX1Jlc291cmNlV2FybmluZyhzb3VyY2UsIDEsICJ1bmNsb3NlZCBmaWxlICVSIiwgc291cmNlKSkgewogICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKQogICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgc2VsZik7CkBAIC0xMTgsMTggKzExNywxMyBAQAogICAgICAgICBpbnQgZmQgPSBzZWxmLT5mZDsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKICAgICAgICAgLyogZmQgaXMgYWNjZXNzaWJsZSBhbmQgc29tZW9uZSBlbHNlIG1heSBoYXZlIGNsb3NlZCBpdCAqLwotICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICAgICAgZXJyID0gY2xvc2UoZmQpOwotICAgICAgICAgICAgaWYgKGVyciA8IDApCi0gICAgICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBlcnIgPSBjbG9zZShmZCk7CisgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CiAgICAgaWYgKGVyciA8IDApIHsKICAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOwpAQCAtNTQ2LDcgKzU0MCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1lcnJfbW9kZShjaGFyICphY3Rpb24pCitlcnJfbW9kZShjb25zdCBjaGFyICphY3Rpb24pCiB7CiAgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fU1RBVEUoKTsKICAgICBpZiAoc3RhdGUgIT0gTlVMTCkKQEAgLTcwMSw4ICs2OTUsNiBAQAogCiAgICAgaWYgKHNlbGYtPmZkIDwgMCkKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChzZWxmLT5mZCkpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwpAQCAtOTE1LDE4ICs5MDcsMTUgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgd2hlbmNlKTsKKyAgICByZXMgPSBfbHNlZWtpNjQoZmQsIHBvcywgd2hlbmNlKTsKICNlbHNlCi0gICAgICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CisgICAgcmVzID0gbHNlZWsoZmQsIHBvcywgd2hlbmNlKTsKICNlbmRpZgotICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0gZWxzZQotICAgICAgICByZXMgPSAtMTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKQEAgLTEwNDksNyArMTAzOCw3IEBACiB9CiAjZW5kaWYgLyogSEFWRV9GVFJVTkNBVEUgKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogbW9kZV9zdHJpbmcoZmlsZWlvICpzZWxmKQogewogICAgIGlmIChzZWxmLT5jcmVhdGVkKSB7CkBAIC0xMTE3LDEwICsxMTA2LDcgQEAKICAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGlmIChfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQotICAgICAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gMDsKKyAgICByZXMgPSBpc2F0dHkoc2VsZi0+ZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlcyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9pb2Jhc2UuYyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCmluZGV4IDU3NTQxYTguLjQ3MmVmM2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2lvYmFzZS5jCisrKyBiL01vZHVsZXMvX2lvL2lvYmFzZS5jCkBAIC04MjgsNyArODI4LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCi0gICAgKGRlc3RydWN0b3IpaW9iYXNlX2ZpbmFsaXplLCAvKiB0cF9maW5hbGl6ZSAqLworICAgIGlvYmFzZV9maW5hbGl6ZSwgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jIGIvTW9kdWxlcy9faW8vc3RyaW5naW8uYwppbmRleCAwNmI0MTQ0Li5lY2Y2ZGMxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9zdHJpbmdpby5jCisrKyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKQEAgLTQzOCw3ICs0MzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUlPX3N0cl9yZWFkbGluZSwgTlVMTCk7CiAgICAgICAgIGlmIChsaW5lICYmICFQeVVuaWNvZGVfQ2hlY2sobGluZSkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGFuIHN0ciBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIHN0ciBvYmplY3QsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICclLjIwMHMnIiwgUHlfVFlQRShsaW5lKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL3RleHRpby5jIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKaW5kZXggNDZjOTliNS4uMmY1NWViMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vdGV4dGlvLmMKKysrIGIvTW9kdWxlcy9faW8vdGV4dGlvLmMKQEAgLTUzMSw3ICs1MzEsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYwZDJjOWMxMzZmNGUwZDAgaW5wdXQ9ZjhmZjEwMTgyNWUzMmU3Zl0qLwogewogICAgIFB5T2JqZWN0ICpidWZmZXI7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGZsYWc7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGZsYWc7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciAhPSBQeV9Ob25lKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzdGF0ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsCkBAIC01NjcsNyArNTY3LDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMTBjNjIyNTA4YjU3NmNiIGlucHV0PWM1M2ZiNTA1YTc2ZGJiZTJdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmbGFnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLCAiT0siLCAmYnVmZmVyLCAmZmxhZykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzcyLDcgKzc3Miw3IEBACiAgICAgZW5jb2RlZnVuY190IGVuY29kZWZ1bmM7CiB9IGVuY29kZWZ1bmNlbnRyeTsKIAotc3RhdGljIGVuY29kZWZ1bmNlbnRyeSBlbmNvZGVmdW5jc1tdID0geworc3RhdGljIGNvbnN0IGVuY29kZWZ1bmNlbnRyeSBlbmNvZGVmdW5jc1tdID0gewogICAgIHsiYXNjaWkiLCAgICAgICAoZW5jb2RlZnVuY190KSBhc2NpaV9lbmNvZGV9LAogICAgIHsiaXNvODg1OS0xIiwgICAoZW5jb2RlZnVuY190KSBsYXRpbjFfZW5jb2RlfSwKICAgICB7InV0Zi04IiwgICAgICAgKGVuY29kZWZ1bmNfdCkgdXRmOF9lbmNvZGV9LApAQCAtMTAyMSw3ICsxMDIxLDcgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhyZXMpKSB7Ci0gICAgICAgICAgICBlbmNvZGVmdW5jZW50cnkgKmUgPSBlbmNvZGVmdW5jczsKKyAgICAgICAgICAgIGNvbnN0IGVuY29kZWZ1bmNlbnRyeSAqZSA9IGVuY29kZWZ1bmNzOwogICAgICAgICAgICAgd2hpbGUgKGUtPm5hbWUgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhyZXMsIGUtPm5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmVuY29kZWZ1bmMgPSBlLT5lbmNvZGVmdW5jOwpAQCAtMTYzNyw4ICsxNjM3LDggQEAKIC8qIE5PVEU6IGBlbmRgIG11c3QgcG9pbnQgdG8gdGhlIHJlYWwgZW5kIG9mIHRoZSBQeV9VQ1M0IHN0b3JhZ2UsCiAgICB0aGF0IGlzIHRvIHRoZSBOVUwgY2hhcmFjdGVyLiBPdGhlcndpc2UgdGhlIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZQogICAgaW5jb3JyZWN0IHJlc3VsdHMuICovCi1zdGF0aWMgY2hhciAqCi1maW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY2hhciAqcywgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQorc3RhdGljIGNvbnN0IGNoYXIgKgorZmluZF9jb250cm9sX2NoYXIoaW50IGtpbmQsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmVuZCwgUHlfVUNTNCBjaCkKIHsKICAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgewogICAgICAgICBhc3NlcnQoY2ggPCAyNTYpOwpAQCAtMTY1OCwxMyArMTY1OCwxMyBAQAogUHlfc3NpemVfdAogX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpCisgICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogewogICAgIFB5X3NzaXplX3QgbGVuID0gKChjaGFyKillbmQgLSAoY2hhciopc3RhcnQpL2tpbmQ7CiAKICAgICBpZiAodHJhbnNsYXRlZCkgewogICAgICAgICAvKiBOZXdsaW5lcyBhcmUgYWxyZWFkeSB0cmFuc2xhdGVkLCBvbmx5IHNlYXJjaCBmb3IgXG4gKi8KLSAgICAgICAgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgJ1xuJyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsICdcbicpOwogICAgICAgICBpZiAocG9zICE9IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgMTsKICAgICAgICAgZWxzZSB7CkBAIC0xNjc2LDcgKzE2NzYsNyBAQAogICAgICAgICAvKiBVbml2ZXJzYWwgbmV3bGluZSBzZWFyY2guIEZpbmQgYW55IG9mIFxyLCBcclxuLCBcbgogICAgICAgICAgKiBUaGUgZGVjb2RlciBlbnN1cmVzIHRoYXQgXHJcbiBhcmUgbm90IHNwbGl0IGluIHR3byBwaWVjZXMKICAgICAgICAgICovCi0gICAgICAgIGNoYXIgKnMgPSBzdGFydDsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0YXJ0OwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICAgICAgLyogRmFzdCBwYXRoIGZvciBub24tY29udHJvbCBjaGFycy4gVGhlIGxvb3AgYWx3YXlzIGVuZHMKQEAgLTE3MDYsMjEgKzE3MDYsMjEgQEAKICAgICAgICAgLyogQXNzdW1lIHRoYXQgcmVhZG5sIGlzIGFuIEFTQ0lJIGNoYXJhY3Rlci4gKi8KICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlYWRubCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwogICAgICAgICBpZiAocmVhZG5sX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCBubFswXSk7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCBubFswXSk7CiAgICAgICAgICAgICBpZiAocG9zICE9IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIDE7CiAgICAgICAgICAgICAqY29uc3VtZWQgPSBsZW47CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjaGFyICpzID0gc3RhcnQ7Ci0gICAgICAgICAgICBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOwotICAgICAgICAgICAgY2hhciAqcG9zOworICAgICAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0YXJ0OworICAgICAgICAgICAgY29uc3QgY2hhciAqZSA9IGVuZCAtIChyZWFkbmxfbGVuIC0gMSkqa2luZDsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvczsKICAgICAgICAgICAgIGlmIChlIDwgcykKICAgICAgICAgICAgICAgICBlID0gczsKICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgewogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzLCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzLCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgICAgICBpZiAocG9zID09IE5VTEwgfHwgcG9zID49IGUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCByZWFkbmxfbGVuOyBpKyspIHsKQEAgLTI2ODIsNyArMjY4Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5SU9fc3RyX3JlYWRsaW5lLCBOVUxMKTsKICAgICAgICAgaWYgKGxpbmUgJiYgIVB5VW5pY29kZV9DaGVjayhsaW5lKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYW4gc3RyIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkbGluZSgpIHNob3VsZCBoYXZlIHJldHVybmVkIGEgc3RyIG9iamVjdCwgIgogICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJyUuMjAwcyciLCBQeV9UWVBFKGxpbmUpLT50cF9uYW1lKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vd2luY29uc29sZWlvLmMgYi9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjAwYTllCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9faW8vd2luY29uc29sZWlvLmMKQEAgLTAsMCArMSwxMTU0IEBACisvKgorICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIFdpbmRvd3MgY29uc29sZSBJL08KKworICAgIENsYXNzZXMgZGVmaW5lZCBoZXJlOiBfV2luZG93c0NvbnNvbGVJTworCisgICAgV3JpdHRlbiBieSBTdGV2ZSBEb3dlcgorKi8KKworI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisjaW5jbHVkZSAiUHl0aG9uLmgiCisKKyNpZmRlZiBNU19XSU5ET1dTCisKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkZGVmLmg+IC8qIEZvciBvZmZzZXRvZiAqLworCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgIl9pb21vZHVsZS5oIgorCisvKiBCVUZTSVogZGV0ZXJtaW5lcyBob3cgbWFueSBjaGFyYWN0ZXJzIGNhbiBiZSB0eXBlZCBhdCB0aGUgY29uc29sZQorICAgYmVmb3JlIGl0IHN0YXJ0cyBibG9ja2luZy4gKi8KKyNpZiBCVUZTSVogPCAoMTYqMTAyNCkKKyNkZWZpbmUgU01BTExDSFVOSyAoMioxMDI0KQorI2VsaWYgKEJVRlNJWiA+PSAoMiA8PCAyNSkpCisjZXJyb3IgInVucmVhc29uYWJsZSBCVUZTSVogPiA2NE1CIGRlZmluZWQiCisjZWxzZQorI2RlZmluZSBTTUFMTENIVU5LIEJVRlNJWgorI2VuZGlmCisKKy8qIEJVRk1BWCBkZXRlcm1pbmVzIGhvdyBtYW55IGJ5dGVzIGNhbiBiZSByZWFkIGluIG9uZSBnby4gKi8KKyNkZWZpbmUgQlVGTUFYICgzMioxMDI0KjEwMjQpCisKKy8qIFNNQUxMQlVGIGRldGVybWluZXMgaG93IG1hbnkgdXRmLTggY2hhcmFjdGVycyB3aWxsIGJlCisgICBidWZmZXJlZCB3aXRoaW4gdGhlIHN0cmVhbSwgaW4gb3JkZXIgdG8gc3VwcG9ydCByZWFkcworICAgb2YgbGVzcyB0aGFuIG9uZSBjaGFyYWN0ZXIgKi8KKyNkZWZpbmUgU01BTExCVUYgNAorCitjaGFyIF9nZXRfY29uc29sZV90eXBlKEhBTkRMRSBoYW5kbGUpIHsKKyAgICBEV09SRCBtb2RlLCBwZWVrX2NvdW50OworCisgICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuICdcMCc7CisKKyAgICBpZiAoIUdldENvbnNvbGVNb2RlKGhhbmRsZSwgJm1vZGUpKQorICAgICAgICByZXR1cm4gJ1wwJzsKKworICAgIC8qIFBlZWsgYXQgdGhlIGhhbmRsZSB0byBzZWUgd2hldGhlciBpdCBpcyBhbiBpbnB1dCBvciBvdXRwdXQgaGFuZGxlICovCisgICAgaWYgKEdldE51bWJlck9mQ29uc29sZUlucHV0RXZlbnRzKGhhbmRsZSwgJnBlZWtfY291bnQpKQorICAgICAgICByZXR1cm4gJ3InOworICAgIHJldHVybiAndyc7Cit9CisKK2NoYXIgX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShQeU9iamVjdCAqcGF0aF9vcl9mZCkgeworICAgIGludCBmZDsKKworICAgIGZkID0gUHlMb25nX0FzTG9uZyhwYXRoX29yX2ZkKTsKKyAgICBQeUVycl9DbGVhcigpOworICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgIEhBTkRMRSBoYW5kbGU7CisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIGlmICghaGFuZGxlKQorICAgICAgICAgICAgcmV0dXJuICdcMCc7CisgICAgICAgIHJldHVybiBfZ2V0X2NvbnNvbGVfdHlwZShoYW5kbGUpOworICAgIH0KKworICAgIFB5T2JqZWN0ICpkZWNvZGVkLCAqZGVjb2RlZF91cHBlcjsKKworICAgIGludCBkID0gUHlVbmljb2RlX0ZTRGVjb2RlcihwYXRoX29yX2ZkLCAmZGVjb2RlZCk7CisgICAgaWYgKCFkKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiAnXDAnOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSkgeworICAgICAgICBQeV9DTEVBUihkZWNvZGVkKTsKKyAgICAgICAgcmV0dXJuICdcMCc7CisgICAgfQorICAgIGRlY29kZWRfdXBwZXIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGRlY29kZWQsICJ1cHBlciIsICIiKTsKKyAgICBQeV9DTEVBUihkZWNvZGVkKTsKKyAgICBpZiAoIWRlY29kZWRfdXBwZXIpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuICdcMCc7CisgICAgfQorCisgICAgY2hhciBtID0gJ1wwJzsKKyAgICBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcoZGVjb2RlZF91cHBlciwgIkNPTklOJCIpKSB7CisgICAgICAgIG0gPSAncic7CisgICAgfSBlbHNlIGlmIChfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OT1VUJCIpKSB7CisgICAgICAgIG0gPSAndyc7CisgICAgfSBlbHNlIGlmIChfUHlVbmljb2RlX0VxdWFsVG9BU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OIikpIHsKKyAgICAgICAgbSA9ICd4JzsKKyAgICB9CisKKyAgICBQeV9DTEVBUihkZWNvZGVkX3VwcGVyKTsKKyAgICByZXR1cm4gbTsKK30KKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9pbworY2xhc3MgX2lvLl9XaW5kb3dzQ29uc29sZUlPICJ3aW5jb25zb2xlaW8gKiIgIiZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWU4OTdmZGMxZmJhNGUxMzFdKi8KKworLypbcHl0aG9uIGlucHV0XQorY2xhc3MgaW9fc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdQeV9zc2l6ZV90JworICAgIGNvbnZlcnRlciA9ICdfUHlJT19Db252ZXJ0U3NpemVfdCcKK1tweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWQwYTgxMWQzY2JmZDFiMzNdKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBmZDsKKyAgICB1bnNpZ25lZCBpbnQgY3JlYXRlZCA6IDE7CisgICAgdW5zaWduZWQgaW50IHJlYWRhYmxlIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgd3JpdGFibGUgOiAxOworICAgIHVuc2lnbmVkIGludCBjbG9zZWhhbmRsZSA6IDE7CisgICAgY2hhciBmaW5hbGl6aW5nOworICAgIHVuc2lnbmVkIGludCBibGtzaXplOworICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBjaGFyIGJ1ZltTTUFMTEJVRl07CisgICAgd2NoYXJfdCB3YnVmOworfSB3aW5jb25zb2xlaW87CisKK1B5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKworX1B5X0lERU5USUZJRVIobmFtZSk7CisKK2ludAorX1B5V2luZG93c0NvbnNvbGVJT19jbG9zZWQoUHlPYmplY3QgKnNlbGYpCit7CisgICAgcmV0dXJuICgod2luY29uc29sZWlvICopc2VsZiktPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKK30KKworCisvKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgd2l0aCBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUuICovCitzdGF0aWMgaW50CitpbnRlcm5hbF9jbG9zZSh3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBpZiAoc2VsZi0+Y2xvc2VoYW5kbGUpIHsKKyAgICAgICAgICAgIGlmIChzZWxmLT5mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICAgICAgICAgIGNsb3NlKHNlbGYtPmZkKTsKKyAgICAgICAgICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICAgICAgfQorICAgICAgICAgICAgQ2xvc2VIYW5kbGUoc2VsZi0+aGFuZGxlKTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICAgICAgc2VsZi0+ZmQgPSAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5jbG9zZQorCitDbG9zZSB0aGUgaGFuZGxlLgorCitBIGNsb3NlZCBoYW5kbGUgY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuICBjbG9zZSgpIG1heSBiZQorY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjdlZjk1YjY2YzI5MDU3YiBpbnB1dD0xODU2MTdlMzQ5YWU0YzdiXSovCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgaW50IHJjOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopJlB5UmF3SU9CYXNlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9jbG9zZSwgIk8iLCBzZWxmKTsKKyAgICBpZiAoIXNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgcmMgPSBpbnRlcm5hbF9jbG9zZShzZWxmKTsKKyAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICBpZiAocmMgPCAwKQorICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5jb25zb2xlaW9fbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHdpbmNvbnNvbGVpbyAqc2VsZjsKKworICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CisKKyAgICBzZWxmID0gKHdpbmNvbnNvbGVpbyAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgICAgICBzZWxmLT5jcmVhdGVkID0gMDsKKyAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAwOworICAgICAgICBzZWxmLT53cml0YWJsZSA9IDA7CisgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID0gMDsKKyAgICAgICAgc2VsZi0+Ymxrc2l6ZSA9IDA7CisgICAgICAgIHNlbGYtPndlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGY7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5fX2luaXRfXworICAgIGZpbGUgYXMgbmFtZW9iajogb2JqZWN0CisgICAgbW9kZTogc3RyID0gInIiCisgICAgY2xvc2VmZDogaW50KGNfZGVmYXVsdD0iMSIpID0gVHJ1ZQorICAgIG9wZW5lcjogb2JqZWN0ID0gTm9uZQorCitPcGVuIGEgY29uc29sZSBidWZmZXIgYnkgZmlsZSBkZXNjcmlwdG9yLgorCitUaGUgbW9kZSBjYW4gYmUgJ3JiJyAoZGVmYXVsdCksIG9yICd3YicgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyBieXRlcy4gQWxsCitvdGhlciBtb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBpZ25vcmVkLiBNb2RlICdiJyB3aWxsIGJlIGFzc3VtZWQgaWYgaXQgaXMKK29taXR0ZWQuIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgaXMgYWx3YXlzIGlnbm9yZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlLCBpbnQgY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvcGVuZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2ZkOWNiY2RkOGQ5NTQyOSBpbnB1dD02MWJlMzk2MzNhODZmNWQ3XSovCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICB3Y2hhcl90ICpuYW1lID0gTlVMTDsKKyAgICBjaGFyIGNvbnNvbGVfdHlwZSA9ICdcMCc7CisgICAgaW50IHJldCA9IDA7CisgICAgaW50IHJ3YSA9IDA7CisgICAgaW50IGZkID0gLTE7CisgICAgaW50IGZkX2lzX293biA9IDA7CisKKyAgICBhc3NlcnQoUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKHNlbGYpKTsKKyAgICBpZiAoc2VsZi0+aGFuZGxlID49IDApIHsKKyAgICAgICAgaWYgKHNlbGYtPmNsb3NlaGFuZGxlKSB7CisgICAgICAgICAgICAvKiBIYXZlIHRvIGNsb3NlIHRoZSBleGlzdGluZyBmaWxlIGZpcnN0LiAqLworICAgICAgICAgICAgaWYgKGludGVybmFsX2Nsb3NlKHNlbGYpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgfQorCisgICAgaWYgKFB5RmxvYXRfQ2hlY2sobmFtZW9iaikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGZkID0gX1B5TG9uZ19Bc0ludChuYW1lb2JqKTsKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGZpbGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIHNlbGYtPmZkID0gZmQ7CisKKyAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkbmFtZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihkZWNvZGVkbmFtZSk7CisKKyAgICAgICAgaW50IGQgPSBQeVVuaWNvZGVfRlNEZWNvZGVyKG5hbWVvYmosICh2b2lkKikmZGVjb2RlZG5hbWUpOworICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgICAgIG5hbWUgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhkZWNvZGVkbmFtZSwgJmxlbmd0aCk7CisgICAgICAgIGNvbnNvbGVfdHlwZSA9IF9QeUlPX2dldF9jb25zb2xlX3R5cGUoZGVjb2RlZG5hbWUpOworICAgICAgICBQeV9DTEVBUihkZWNvZGVkbmFtZSk7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgaWYgKHdjc2xlbihuYW1lKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzID0gbW9kZTsKKyAgICB3aGlsZSAoKnMpIHsKKyAgICAgICAgc3dpdGNoICgqcysrKSB7CisgICAgICAgIGNhc2UgJysnOgorICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3InOgorICAgICAgICAgICAgaWYgKHJ3YSkKKyAgICAgICAgICAgICAgICBnb3RvIGJhZF9tb2RlOworICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjb25zb2xlX3R5cGUgPT0gJ3gnKQorICAgICAgICAgICAgICAgIGNvbnNvbGVfdHlwZSA9ICdyJzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd3JzoKKyAgICAgICAgICAgIGlmIChyd2EpCisgICAgICAgICAgICAgICAgZ290byBiYWRfbW9kZTsKKyAgICAgICAgICAgIHJ3YSA9IDE7CisgICAgICAgICAgICBzZWxmLT53cml0YWJsZSA9IDE7CisgICAgICAgICAgICBpZiAoY29uc29sZV90eXBlID09ICd4JykKKyAgICAgICAgICAgICAgICBjb25zb2xlX3R5cGUgPSAndyc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1vZGU6ICUuMjAwcyIsIG1vZGUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghcndhKQorICAgICAgICBnb3RvIGJhZF9tb2RlOworCisgICAgaWYgKGZkID49IDApIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBzZWxmLT5oYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIERXT1JEIGFjY2VzcyA9IEdFTkVSSUNfUkVBRDsKKworICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA9IDE7CisgICAgICAgIGlmICghY2xvc2VmZCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgY2xvc2VmZD1GYWxzZSB3aXRoIGZpbGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgICAgIGFjY2VzcyA9IEdFTkVSSUNfV1JJVEU7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAvKiBBdHRlbXB0IHRvIG9wZW4gZm9yIHJlYWQvd3JpdGUgaW5pdGlhbGx5LCB0aGVuIGZhbGwgYmFjaworICAgICAgICAgICBvbiB0aGUgc3BlY2lmaWMgYWNjZXNzLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBtb2Rlcm4gbmFtZXMKKyAgICAgICAgICAgQ09OSU4kIGFuZCBDT05PVVQkLCB3aGljaCBhbGxvdyByZWFkaW5nL3dyaXRpbmcgc3RhdGUgYXMKKyAgICAgICAgICAgd2VsbCBhcyByZWFkaW5nL3dyaXRpbmcgY29udGVudC4gKi8KKyAgICAgICAgc2VsZi0+aGFuZGxlID0gQ3JlYXRlRmlsZVcobmFtZSwgR0VORVJJQ19SRUFEIHwgR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIDAsIE5VTEwpOworICAgICAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gQ3JlYXRlRmlsZVcobmFtZSwgYWNjZXNzLAorICAgICAgICAgICAgICAgIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUsIE5VTEwsIE9QRU5fRVhJU1RJTkcsIDAsIE5VTEwpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIEdldExhc3RFcnJvcigpLCBuYW1lb2JqKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY29uc29sZV90eXBlID09ICdcMCcpCisgICAgICAgIGNvbnNvbGVfdHlwZSA9IF9nZXRfY29uc29sZV90eXBlKHNlbGYtPmhhbmRsZSk7CisKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUgJiYgY29uc29sZV90eXBlICE9ICd3JykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJDYW5ub3Qgb3BlbiBjb25zb2xlIGlucHV0IGJ1ZmZlciBmb3Igd3JpdGluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoc2VsZi0+cmVhZGFibGUgJiYgY29uc29sZV90eXBlICE9ICdyJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJDYW5ub3Qgb3BlbiBjb25zb2xlIG91dHB1dCBidWZmZXIgZm9yIHJlYWRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBzZWxmLT5ibGtzaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKKyAgICBtZW1zZXQoc2VsZi0+YnVmLCAwLCA0KTsKKworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX25hbWUsIG5hbWVvYmopIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGdvdG8gZG9uZTsKKworYmFkX21vZGU6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZCBvciB3cml0ZSBtb2RlIik7CitlcnJvcjoKKyAgICByZXQgPSAtMTsKKyAgICBpbnRlcm5hbF9jbG9zZShzZWxmKTsKKworZG9uZToKKyAgICBpZiAobmFtZSkKKyAgICAgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50Cit3aW5jb25zb2xlaW9fdHJhdmVyc2Uod2luY29uc29sZWlvICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAord2luY29uc29sZWlvX2NsZWFyKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3dpbmNvbnNvbGVpb19kZWFsbG9jKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBzZWxmLT5maW5hbGl6aW5nID0gMTsKKyAgICBpZiAoX1B5SU9CYXNlX2ZpbmFsaXplKChQeU9iamVjdCAqKSBzZWxmKSA8IDApCisgICAgICAgIHJldHVybjsKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Vycl9jbG9zZWQodm9pZCkKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Vycl9tb2RlKGNvbnN0IGNoYXIgKmFjdGlvbikKK3sKKyAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19TVEFURSgpOworICAgIGlmIChzdGF0ZSAhPSBOVUxMKQorICAgICAgICBQeUVycl9Gb3JtYXQoc3RhdGUtPnVuc3VwcG9ydGVkX29wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICJDb25zb2xlIGJ1ZmZlciBkb2VzIG5vdCBzdXBwb3J0ICVzIiwgYWN0aW9uKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmZpbGVubworCitSZXR1cm4gdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIChhbiBpbnRlZ2VyKS4KKworZmlsZW5vIGlzIG9ubHkgc2V0IHdoZW4gYSBmaWxlIGRlc2NyaXB0b3IgaXMgdXNlZCB0byBvcGVuCitvbmUgb2YgdGhlIHN0YW5kYXJkIHN0cmVhbXMuCisKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDA2ZmE3NGNlM2I1Y2ZiZiBpbnB1dD0wNzlhZGMzMzBkZGFhYmU2XSovCit7CisgICAgaWYgKHNlbGYtPmZkIDwgMCAmJiBzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgICAgICBzZWxmLT5mZCA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3Qpc2VsZi0+aGFuZGxlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmLT5mZCA9IF9vcGVuX29zZmhhbmRsZSgoaW50cHRyX3Qpc2VsZi0+aGFuZGxlLCBfT19SRE9OTFkgfCBfT19CSU5BUlkpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgIH0KKyAgICBpZiAoc2VsZi0+ZmQgPCAwKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoImZpbGVubyIpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+ZmQpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGFibGUKKworVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIGlucHV0IGJ1ZmZlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWY5Y2VmMjc0M2JlY2YwIGlucHV0PTZiZTlkZWZiNTMwMmRhYWVdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpIHNlbGYtPnJlYWRhYmxlKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLndyaXRhYmxlCisKK1RydWUgaWYgY29uc29sZSBpcyBhbiBvdXRwdXQgYnVmZmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwYTJhZDdlYWU1YWJmNjcgaW5wdXQ9Y2VmYmQ4YWJjMjRkZjZhMF0qLworeworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgc2VsZi0+d3JpdGFibGUpOworfQorCitzdGF0aWMgRFdPUkQKK19idWZsZW4od2luY29uc29sZWlvICpzZWxmKQoreworICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBTTUFMTEJVRjsgKytpKSB7CisgICAgICAgIGlmICghc2VsZi0+YnVmW2ldKQorICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIHJldHVybiBTTUFMTEJVRjsKK30KKworc3RhdGljIERXT1JECitfY29weWZyb21idWYod2luY29uc29sZWlvICpzZWxmLCBjaGFyICpidWYsIERXT1JEIGxlbikKK3sKKyAgICBEV09SRCBuID0gMDsKKworICAgIHdoaWxlIChzZWxmLT5idWZbMF0gJiYgbGVuLS0pIHsKKyAgICAgICAgYnVmW24rK10gPSBzZWxmLT5idWZbMF07CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgU01BTExCVUY7ICsraSkKKyAgICAgICAgICAgIHNlbGYtPmJ1ZltpIC0gMV0gPSBzZWxmLT5idWZbaV07CisgICAgICAgIHNlbGYtPmJ1ZltTTUFMTEJVRiAtIDFdID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworc3RhdGljIHdjaGFyX3QgKgorcmVhZF9jb25zb2xlX3coSEFORExFIGhhbmRsZSwgRFdPUkQgbWF4bGVuLCBEV09SRCAqcmVhZGxlbikgeworICAgIGludCBlcnIgPSAwLCBzaWcgPSAwOworCisgICAgd2NoYXJfdCAqYnVmID0gKHdjaGFyX3QqKVB5TWVtX01hbGxvYyhtYXhsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGlmICghYnVmKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgKnJlYWRsZW4gPSAwOworCisgICAgLy9EZWJ1Z0JyZWFrKCk7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIERXT1JEIG9mZiA9IDA7CisgICAgd2hpbGUgKG9mZiA8IG1heGxlbikgeworICAgICAgICBEV09SRCBuLCBsZW4gPSBtaW4obWF4bGVuIC0gb2ZmLCBCVUZTSVopOworICAgICAgICBTZXRMYXN0RXJyb3IoMCk7CisgICAgICAgIEJPT0wgcmVzID0gUmVhZENvbnNvbGVXKGhhbmRsZSwgJmJ1ZltvZmZdLCBsZW4sICZuLCBOVUxMKTsKKworICAgICAgICBpZiAoIXJlcykgeworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gRVJST1JfT1BFUkFUSU9OX0FCT1JURUQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBlcnIgPSAwOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgICAgICBpZiAoV2FpdEZvclNpbmdsZU9iamVjdEV4KGhJbnRlcnJ1cHRFdmVudCwgMTAwLCBGQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgPT0gV0FJVF9PQkpFQ1RfMCkgeworICAgICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKKyAgICAgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCisgICAgICAgICAgICAgICAgc2lnID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7CisgICAgICAgICAgICAgICAgUHlfVU5CTE9DS19USFJFQURTCisgICAgICAgICAgICAgICAgaWYgKHNpZyA8IDApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICpyZWFkbGVuICs9IG47CisKKyAgICAgICAgLyogSWYgd2UgZGlkbid0IHJlYWQgYSBmdWxsIGJ1ZmZlciB0aGF0IHRpbWUsIGRvbid0IHRyeQorICAgICAgICAgICBhZ2FpbiBvciB3ZSB3aWxsIGJsb2NrIGEgc2Vjb25kIHRpbWUuICovCisgICAgICAgIGlmIChuIDwgbGVuKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIElmIHRoZSBidWZmZXIgZW5kZWQgd2l0aCBhIG5ld2xpbmUsIGJyZWFrIG91dCAqLworICAgICAgICBpZiAoYnVmWypyZWFkbGVuIC0gMV0gPT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBJZiB0aGUgYnVmZmVyIGVuZHMgd2l0aCBhIGhpZ2ggc3Vycm9nYXRlLCBleHBhbmQgdGhlCisgICAgICAgICAgIGJ1ZmZlciBhbmQgcmVhZCBhbiBleHRyYSBjaGFyYWN0ZXIuICovCisgICAgICAgIFdPUkQgY2hhcl90eXBlOworICAgICAgICBpZiAob2ZmICsgQlVGU0laID49IG1heGxlbiAmJgorICAgICAgICAgICAgR2V0U3RyaW5nVHlwZVcoQ1RfQ1RZUEUzLCAmYnVmWypyZWFkbGVuIC0gMV0sIDEsICZjaGFyX3R5cGUpICYmCisgICAgICAgICAgICBjaGFyX3R5cGUgPT0gQzNfSElHSFNVUlJPR0FURSkgeworICAgICAgICAgICAgd2NoYXJfdCAqbmV3YnVmOworICAgICAgICAgICAgbWF4bGVuICs9IDE7CisgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCisgICAgICAgICAgICBuZXdidWYgPSAod2NoYXJfdCopUHlNZW1fUmVhbGxvYyhidWYsIG1heGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgIGlmICghbmV3YnVmKSB7CisgICAgICAgICAgICAgICAgc2lnID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYgPSBuZXdidWY7CisgICAgICAgICAgICAvKiBPbmx5IGFkdmFuY2UgYnkgbiBhbmQgbm90IEJVRlNJWiBpbiB0aGlzIGNhc2UgKi8KKyAgICAgICAgICAgIG9mZiArPSBuOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBvZmYgKz0gQlVGU0laOworICAgIH0KKworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoc2lnKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChlcnIpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKnJlYWRsZW4gPiAwICYmIGJ1ZlswXSA9PSBMJ1x4MWEnKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgYnVmID0gKHdjaGFyX3QgKilQeU1lbV9NYWxsb2Moc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgaWYgKCFidWYpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBidWZbMF0gPSBMJ1wwJzsKKyAgICAgICAgKnJlYWRsZW4gPSAwOworICAgIH0KKworICAgIHJldHVybiBidWY7CisKK2Vycm9yOgorICAgIGlmIChidWYpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlfc3NpemVfdAorcmVhZGludG8od2luY29uc29sZWlvICpzZWxmLCBjaGFyICpidWYsIFB5X3NzaXplX3QgbGVuKQoreworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKKyAgICAgICAgZXJyX2Nsb3NlZCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghc2VsZi0+cmVhZGFibGUpIHsKKyAgICAgICAgZXJyX21vZGUoInJlYWRpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobGVuID09IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChsZW4gPiBCVUZNQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcmVhZCBtb3JlIHRoYW4gJWQgYnl0ZXMiLCBCVUZNQVgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogRWFjaCBjaGFyYWN0ZXIgbWF5IHRha2UgdXAgdG8gNCBieXRlcyBpbiB0aGUgZmluYWwgYnVmZmVyLgorICAgICAgIFRoaXMgaXMgaGlnaGx5IGNvbnNlcnZhdGl2ZSwgYnV0IG5lY2Vzc2FyeSB0byBhdm9pZAorICAgICAgIGZhaWx1cmUgZm9yIGFueSBnaXZlbiBVbmljb2RlIGlucHV0IChlLmcuIFxVMDAxMGZmZmYpLgorICAgICAgIElmIHRoZSBjYWxsZXIgcmVxdWVzdHMgZmV3ZXIgdGhhbiA0IGJ5dGVzLCB3ZSBidWZmZXIgb25lCisgICAgICAgY2hhcmFjdGVyLgorICAgICovCisgICAgRFdPUkQgd2xlbiA9IChEV09SRCkobGVuIC8gNCk7CisgICAgaWYgKHdsZW4gPT0gMCkgeworICAgICAgICB3bGVuID0gMTsKKyAgICB9CisKKyAgICBEV09SRCByZWFkX2xlbiA9IF9jb3B5ZnJvbWJ1ZihzZWxmLCBidWYsIChEV09SRClsZW4pOworICAgIGlmIChyZWFkX2xlbikgeworICAgICAgICBidWYgPSAmYnVmW3JlYWRfbGVuXTsKKyAgICAgICAgbGVuIC09IHJlYWRfbGVuOworICAgICAgICB3bGVuIC09IDE7CisgICAgfQorICAgIGlmIChsZW4gPT0gcmVhZF9sZW4gfHwgd2xlbiA9PSAwKQorICAgICAgICByZXR1cm4gcmVhZF9sZW47CisKKyAgICBEV09SRCBuOworICAgIHdjaGFyX3QgKndidWYgPSByZWFkX2NvbnNvbGVfdyhzZWxmLT5oYW5kbGUsIHdsZW4sICZuKTsKKyAgICBpZiAod2J1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKG4gPT0gMCkgeworICAgICAgICBQeU1lbV9GcmVlKHdidWYpOworICAgICAgICByZXR1cm4gcmVhZF9sZW47CisgICAgfQorCisgICAgaW50IGVyciA9IDA7CisgICAgRFdPUkQgdThuID0gMDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAobGVuIDwgNCkgeworICAgICAgICBpZiAoV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgICAgIHNlbGYtPmJ1Ziwgc2l6ZW9mKHNlbGYtPmJ1ZikgLyBzaXplb2Yoc2VsZi0+YnVmWzBdKSwKKyAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKSkKKyAgICAgICAgICAgIHU4biA9IF9jb3B5ZnJvbWJ1ZihzZWxmLCBidWYsIChEV09SRClsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHU4biA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgIGJ1ZiwgKERXT1JEKWxlbiwgTlVMTCwgTlVMTCk7CisgICAgfQorCisgICAgaWYgKHU4bikgeworICAgICAgICByZWFkX2xlbiArPSB1OG47CisgICAgICAgIHU4biA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU5TVUZGSUNJRU5UX0JVRkZFUikgeworICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBuZWVkZWQgYnVmZmVyIGZvciBhIG1vcmUgdXNlZnVsIGVycm9yLCBhcyB0aGlzCisgICAgICAgICAgICAgICAgbWVhbnMgb3VyICIvIDQiIGxvZ2ljIGFib3ZlIGlzIGluc3VmZmljaWVudCBmb3Igc29tZSBpbnB1dC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICB1OG4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5TWVtX0ZyZWUod2J1Zik7CisKKyAgICBpZiAodThuKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICJCdWZmZXIgaGFkIHJvb20gZm9yICVkIGJ5dGVzIGJ1dCAlZCBieXRlcyByZXF1aXJlZCIsCisgICAgICAgICAgICBsZW4sIHU4bik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGVycikgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIHJlYWRfbGVuOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGludG8KKyAgICBidWZmZXI6IFB5X2J1ZmZlcihhY2NlcHQ9e3J3YnVmZmVyfSkKKyAgICAvCisKK1NhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY2ZDFiZGZhM2YyMGFmMzkgaW5wdXQ9NGVkNjhkYTQ4YTZiYWZmZV0qLworeworICAgIFB5X3NzaXplX3QgbGVuID0gcmVhZGludG8oc2VsZiwgYnVmZmVyLT5idWYsIGJ1ZmZlci0+bGVuKTsKKyAgICBpZiAobGVuIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGxlbik7Cit9CisKK3N0YXRpYyBEV09SRAorbmV3X2J1ZmZlcnNpemUod2luY29uc29sZWlvICpzZWxmLCBEV09SRCBjdXJyZW50c2l6ZSkKK3sKKyAgICBEV09SRCBhZGRlbmQ7CisKKyAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCisgICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gIEZvciBiaWdnZXIgc2l6ZXMsIHVzZSBhCisgICAgICAgbGVzcy10aGFuLWRvdWJsZSBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIGlmIChjdXJyZW50c2l6ZSA+IDY1NTM2KQorICAgICAgICBhZGRlbmQgPSBjdXJyZW50c2l6ZSA+PiAzOworICAgIGVsc2UKKyAgICAgICAgYWRkZW5kID0gMjU2ICsgY3VycmVudHNpemU7CisgICAgaWYgKGFkZGVuZCA8IFNNQUxMQ0hVTkspCisgICAgICAgIC8qIEF2b2lkIHRpbnkgcmVhZCgpIGNhbGxzLiAqLworICAgICAgICBhZGRlbmQgPSBTTUFMTENIVU5LOworICAgIHJldHVybiBhZGRlbmQgKyBjdXJyZW50c2l6ZTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLnJlYWRhbGwKKworUmVhZCBhbGwgZGF0YSBmcm9tIHRoZSBjb25zb2xlLCByZXR1cm5lZCBhcyBieXRlcy4KKworUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFsbF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNmQzMTJjNjg0ZjZlMjNiIGlucHV0PTQwMjRkNjQ5YTEwMDZlNjldKi8KK3sKKyAgICB3Y2hhcl90ICpidWY7CisgICAgRFdPUkQgYnVmc2l6ZSwgbiwgbGVuID0gMDsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgRFdPUkQgYnl0ZXNfc2l6ZSwgcm47CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworCisgICAgYnVmc2l6ZSA9IEJVRlNJWjsKKworICAgIGJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2MoKGJ1ZnNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHdjaGFyX3QgKnN1YmJ1ZjsKKworICAgICAgICBpZiAobGVuID49IChQeV9zc2l6ZV90KWJ1ZnNpemUpIHsKKyAgICAgICAgICAgIERXT1JEIG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCBsZW4pOworICAgICAgICAgICAgaWYgKG5ld3NpemUgPiBCVUZNQVgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobmV3c2l6ZSA8IGJ1ZnNpemUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYm91bmRlZCByZWFkIHJldHVybmVkIG1vcmUgYnl0ZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhhbiBhIFB5dGhvbiBieXRlcyBvYmplY3QgY2FuIGhvbGQiKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZzaXplID0gbmV3c2l6ZTsKKworICAgICAgICAgICAgYnVmID0gUHlNZW1fUmVhbGxvYyhidWYsIChidWZzaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKCFidWYpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzdWJidWYgPSByZWFkX2NvbnNvbGVfdyhzZWxmLT5oYW5kbGUsIGJ1ZnNpemUgLSBsZW4sICZuKTsKKworICAgICAgICBpZiAoc3ViYnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG4gPiAwKQorICAgICAgICAgICAgd2NzbmNweV9zKCZidWZbbGVuXSwgYnVmc2l6ZSAtIGxlbiArIDEsIHN1YmJ1Ziwgbik7CisKKyAgICAgICAgUHlNZW1fRnJlZShzdWJidWYpOworCisgICAgICAgIC8qIHdoZW4gdGhlIHJlYWQgaXMgZW1wdHkgd2UgYnJlYWsgKi8KKyAgICAgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGxlbiArPSBuOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMCAmJiBfYnVmbGVuKHNlbGYpID09IDApIHsKKyAgICAgICAgLyogd2hlbiB0aGUgcmVzdWx0IHN0YXJ0cyB3aXRoIF5aIHdlIHJldHVybiBhbiBlbXB0eSBidWZmZXIgKi8KKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CisKKyAgICBpZiAobGVuKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgYnl0ZXNfc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgYnVmLCBsZW4sCisgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoIWJ5dGVzX3NpemUpIHsKKyAgICAgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBieXRlc19zaXplID0gMDsKKyAgICB9CisKKyAgICBieXRlc19zaXplICs9IF9idWZsZW4oc2VsZik7CisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzX3NpemUpOworICAgIHJuID0gX2NvcHlmcm9tYnVmKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgYnl0ZXNfc2l6ZSk7CisKKyAgICBpZiAobGVuKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgYnl0ZXNfc2l6ZSA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgYnVmLCBsZW4sCisgICAgICAgICAgICAmUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpW3JuXSwgYnl0ZXNfc2l6ZSAtIHJuLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgICAgICBpZiAoIWJ5dGVzX3NpemUpIHsKKyAgICAgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIH0KKworICAgICAgICAvKiBhZGQgYmFjayB0aGUgbnVtYmVyIG9mIHByZXNlcnZlZCBieXRlcyAqLworICAgICAgICBieXRlc19zaXplICs9IHJuOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICBpZiAoYnl0ZXNfc2l6ZSA8IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShieXRlcykpIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIG4gKiBzaXplb2Yod2NoYXJfdCkpIDwgMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGJ5dGVzOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZAorICAgIHNpemU6IGlvX3NzaXplX3QgPSAtMQorICAgIC8KKworUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLgorCitPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCB3aGVuIHNpemUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLAorc28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC4KK1JldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01N2RmNjhhZjlmNGIyMmQwIGlucHV0PTZjNTZmY2VlYzQ2MGYxZGRdKi8KK3sKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBieXRlc19zaXplOworCisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICBpZiAoIXNlbGYtPnJlYWRhYmxlKQorICAgICAgICByZXR1cm4gZXJyX21vZGUoInJlYWRpbmciKTsKKworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwoc2VsZik7CisgICAgaWYgKHNpemUgPiBCVUZNQVgpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJjYW5ub3QgcmVhZCBtb3JlIHRoYW4gJWQgYnl0ZXMiLCBCVUZNQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnl0ZXNfc2l6ZSA9IHJlYWRpbnRvKHNlbGYsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIGlmIChieXRlc19zaXplIDwgMCkgeworICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChieXRlc19zaXplIDwgUHlCeXRlc19HRVRfU0laRShieXRlcykpIHsKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYnl0ZXMsIGJ5dGVzX3NpemUpIDwgMCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoYnl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy53cml0ZQorICAgIGI6IFB5X2J1ZmZlcgorICAgIC8KKworV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCitPbmx5IG1ha2VzIG9uZSBzeXN0ZW0gY2FsbCwgc28gbm90IGFsbCBvZiB0aGUgZGF0YSBtYXkgYmUgd3JpdHRlbi4KK1RoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3NWJkYjE2ZmJmOTEzN2IgaW5wdXQ9YmUzNWZiNjI0Zjk3Yzk0MV0qLworeworICAgIEJPT0wgcmVzID0gVFJVRTsKKyAgICB3Y2hhcl90ICp3YnVmOworICAgIERXT1JEIGxlbiwgd2xlbiwgbiA9IDA7CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIGlmICghc2VsZi0+d3JpdGFibGUpCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgid3JpdGluZyIpOworCisgICAgaWYgKGItPmxlbiA+IEJVRk1BWCkKKyAgICAgICAgbGVuID0gQlVGTUFYOworICAgIGVsc2UKKyAgICAgICAgbGVuID0gKERXT1JEKWItPmxlbjsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwgTlVMTCwgMCk7CisKKyAgICAvKiBpc3N1ZTExMzk1IHRoZXJlIGlzIGFuIHVuc3BlY2lmaWVkIHVwcGVyIGJvdW5kIG9uIGhvdyBtYW55IGJ5dGVzCisgICAgICAgY2FuIGJlIHdyaXR0ZW4gYXQgb25jZS4gV2UgY2FwIGF0IDMyayAtIHRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvCisgICAgICAgaGFuZGxlIHBhcnRpYWwgd3JpdGVzLgorICAgICAgIFNpbmNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgaW5wdXQgYnl0ZXMgYXJlIGJlaW5nIGlnbm9yZWQsIHdlCisgICAgICAgaGF2ZSB0byByZWR1Y2UgYW5kIHJlY2FsY3VsYXRlLiAqLworICAgIHdoaWxlICh3bGVuID4gMzI3NjYgLyBzaXplb2Yod2NoYXJfdCkpIHsKKyAgICAgICAgbGVuIC89IDI7CisgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCBOVUxMLCAwKTsKKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghd2xlbikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9NYWxsb2Mod2xlbiAqIHNpemVvZih3Y2hhcl90KSk7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sIHdidWYsIHdsZW4pOworICAgIGlmICh3bGVuKSB7CisgICAgICAgIHJlcyA9IFdyaXRlQ29uc29sZVcoc2VsZi0+aGFuZGxlLCB3YnVmLCB3bGVuLCAmbiwgTlVMTCk7CisgICAgICAgIGlmIChuIDwgd2xlbikgeworICAgICAgICAgICAgLyogV3JvdGUgZmV3ZXIgY2hhcmFjdGVycyB0aGFuIGV4cGVjdGVkLCB3aGljaCBtZWFucyBvdXIKKyAgICAgICAgICAgICAqIGxlbiB2YWx1ZSBtYXkgYmUgd3JvbmcuIFNvIHJlY2FsY3VsYXRlIGl0IGZyb20gdGhlCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXJzIHRoYXQgd2VyZSB3cml0dGVuLiBBcyB0aGlzIGNvdWxkIHBvdGVudGlhbGx5CisgICAgICAgICAgICAgKiByZXN1bHQgaW4gYSBkaWZmZXJlbnQgdmFsdWUsIHdlIGFsc28gdmFsaWRhdGUgdGhhdCB2YWx1ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLAorICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQod2xlbiA9PSBsZW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJlcyA9IDA7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzKSB7CisgICAgICAgIERXT1JEIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBQeU1lbV9GcmVlKHdidWYpOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICB9CisKKyAgICBQeU1lbV9GcmVlKHdidWYpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmNvbnNvbGVpb19yZXByKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxfaW8uX1dpbmRvd3NDb25zb2xlSU8gW2Nsb3NlZF0+Iik7CisKKyAgICBpZiAoc2VsZi0+cmVhZGFibGUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBtb2RlPSdyYicgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKyAgICBpZiAoc2VsZi0+d3JpdGFibGUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBtb2RlPSd3YicgY2xvc2VmZD0lcz4iLAorICAgICAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPyAiVHJ1ZSIgOiAiRmFsc2UiKTsKKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgIl9XaW5kb3dzQ29uc29sZUlPIGhhcyBpbnZhbGlkIG1vZGUiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmlzYXR0eQorCitBbHdheXMgVHJ1ZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHlfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWVhYzA5ZDI4N2MxMWJkNyBpbnB1dD05YjkxNTkxZGJlMzU2Zjg2XSovCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX2dldHN0YXRlKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiY2Fubm90IHNlcmlhbGl6ZSAnJXMnIG9iamVjdCIsIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOworfQorCisjaW5jbHVkZSAiY2xpbmljL3dpbmNvbnNvbGVpby5jLmgiCisKK3N0YXRpYyBQeU1ldGhvZERlZiB3aW5jb25zb2xlaW9fbWV0aG9kc1tdID0geworICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEFCTEVfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fSVNBVFRZX01FVEhPRERFRgorICAgIHsiX19nZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKXdpbmNvbnNvbGVpb19nZXRzdGF0ZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKy8qICdjbG9zZWQnIGFuZCAnbW9kZScgYXJlIGF0dHJpYnV0ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBGaWxlSU8uICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xvc2VkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbG9zZWZkKHdpbmNvbnNvbGVpbyAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKShzZWxmLT5jbG9zZWhhbmRsZSkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X21vZGUod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhzZWxmLT5yZWFkYWJsZSA/ICJyYiIgOiAid2IiKTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0W10gPSB7CisgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWdldF9jbG9zZWQsIE5VTEwsICJUcnVlIGlmIHRoZSBmaWxlIGlzIGNsb3NlZCJ9LAorICAgIHsiY2xvc2VmZCIsIChnZXR0ZXIpZ2V0X2Nsb3NlZmQsIE5VTEwsCisgICAgICAgICJUcnVlIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSBjbG9zZWQgYnkgY2xvc2UoKS4ifSwKKyAgICB7Im1vZGUiLCAoZ2V0dGVyKWdldF9tb2RlLCBOVUxMLCAiU3RyaW5nIGdpdmluZyB0aGUgZmlsZSBtb2RlIn0sCisgICAge05VTEx9LAorfTsKKworc3RhdGljIFB5TWVtYmVyRGVmIHdpbmNvbnNvbGVpb19tZW1iZXJzW10gPSB7CisgICAgeyJfYmxrc2l6ZSIsIFRfVUlOVCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBibGtzaXplKSwgMH0sCisgICAgeyJfZmluYWxpemluZyIsIFRfQk9PTCwgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBmaW5hbGl6aW5nKSwgMH0sCisgICAge05VTEx9Cit9OworCitQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9pby5fV2luZG93c0NvbnNvbGVJTyIsCisgICAgc2l6ZW9mKHdpbmNvbnNvbGVpbyksCisgICAgMCwKKyAgICAoZGVzdHJ1Y3Rvcil3aW5jb25zb2xlaW9fZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYyl3aW5jb25zb2xlaW9fcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX19kb2NfXywgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXdpbmNvbnNvbGVpb190cmF2ZXJzZSwgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpd2luY29uc29sZWlvX2NsZWFyLCAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZih3aW5jb25zb2xlaW8sIHdlYWtyZWZsaXN0KSwgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHdpbmNvbnNvbGVpb19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHdpbmNvbnNvbGVpb19tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIHdpbmNvbnNvbGVpb19nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgZGljdCksICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfXywgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB3aW5jb25zb2xlaW9fbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5V2luZG93c0NvbnNvbGVJT19UeXBlID0gKFB5T2JqZWN0KikmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggZjgyYWYzNC4uZDNkYmY5OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtMTEyLDcgKzExMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2VuY29kZWRfY29uc3QoUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZAotcmFpc2VfZXJybXNnKGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKTsKK3JhaXNlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCk7CiBzdGF0aWMgUHlPYmplY3QgKgogZW5jb2Rlcl9lbmNvZGVfc3RyaW5nKFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzIxLDcgKzMyMSw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1yYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCityYWlzZV9lcnJtc2coY29uc3QgY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgLyogVXNlIEpTT05EZWNvZGVFcnJvciBleGNlcHRpb24gdG8gcmFpc2UgYSBuaWNlIGxvb2tpbmcgVmFsdWVFcnJvciBzdWJjbGFzcyAqLwogICAgIHN0YXRpYyBQeU9iamVjdCAqSlNPTkRlY29kZUVycm9yID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKaW5kZXggYjEzMDdlZi4uZmViMzgwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogLyogdGhlIGdyb3VwaW5nIGlzIHRlcm1pbmF0ZWQgYnkgZWl0aGVyIDAgb3IgQ0hBUl9NQVggKi8KIHN0YXRpYyBQeU9iamVjdCoKLWNvcHlfZ3JvdXBpbmcoY2hhciogcykKK2NvcHlfZ3JvdXBpbmcoY29uc3QgY2hhciogcykKIHsKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqdmFsID0gTlVMTDsKQEAgLTYyMiw1MyArNjIyLDM0IEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X19sb2NhbGUodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQsICp4OworICAgIFB5T2JqZWN0ICptOwogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAogICAgIGludCBpOwogI2VuZGlmCiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfbG9jYWxlbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQotICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DVFlQRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX0NUWVBFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfVElNRSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX1RJTUUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19DT0xMQVRFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQ09MTEFURSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX01PTkVUQVJZKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfTU9ORVRBUlkiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX0NUWVBFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19USU1FKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19DT0xMQVRFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19NT05FVEFSWSk7CiAKICNpZmRlZiBMQ19NRVNTQUdFUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTUVTU0FHRVMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19NRVNTQUdFUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTUVTU0FHRVMpOwogI2VuZGlmIC8qIExDX01FU1NBR0VTICovCiAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX05VTUVSSUMpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19OVU1FUklDIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfQUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ0hBUl9NQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDSEFSX01BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfTlVNRVJJQyk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfQUxMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDSEFSX01BWCk7CiAKICAgICBFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigibG9jYWxlLkVycm9yIiwgTlVMTCwgTlVMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkVycm9yIiwgRXJyb3IpOworICAgIGlmIChFcnJvciA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRXJyb3IiLCBFcnJvcik7CiAKICNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKICAgICBmb3IgKGkgPSAwOyBsYW5naW5mb19jb25zdGFudHNbaV0ubmFtZTsgaSsrKSB7CkBAIC02NzYsNiArNjU3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdpbmZvX2NvbnN0YW50c1tpXS52YWx1ZSk7CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYobSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gbTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHNwcm9mLmMgYi9Nb2R1bGVzL19sc3Byb2YuYwppbmRleCA3ODc2ZTcxLi4wZTc2MjNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sc3Byb2YuYworKysgYi9Nb2R1bGVzL19sc3Byb2YuYwpAQCAtMiwxNyArMiwxMyBAQAogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAicm90YXRpbmd0cmVlLmgiCiAKLSNpZiAhZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKLSNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgbG9uZyBsb25ncyEiCi0jZW5kaWYKLQogLyoqKiBTZWxlY3Rpb24gb2YgYSBoaWdoLXByZWNpc2lvbiB0aW1lciAqKiovCiAKICNpZmRlZiBNU19XSU5ET1dTCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBMQVJHRV9JTlRFR0VSIGxpOwpAQCAtMzksMTEgKzM1LDExIEBACiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjaW5jbHVkZSA8c3lzL3RpbWVzLmg+CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIGhwVGltZXIodm9pZCkKIHsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICBQWV9MT05HX0xPTkcgcmV0OworICAgIGxvbmcgbG9uZyByZXQ7CiAjaWZkZWYgR0VUVElNRU9GREFZX05PX1RaCiAgICAgZ2V0dGltZW9mZGF5KCZ0dik7CiAjZWxzZQpAQCAtNzAsOCArNjYsOCBAQAogLyogcmVwcmVzZW50cyBhIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGFub3RoZXIgZnVuY3Rpb24gKi8KIHR5cGVkZWYgc3RydWN0IF9Qcm9maWxlclN1YkVudHJ5IHsKICAgICByb3RhdGluZ19ub2RlX3QgaGVhZGVyOwotICAgIFBZX0xPTkdfTE9ORyB0dDsKLSAgICBQWV9MT05HX0xPTkcgaXQ7CisgICAgbG9uZyBsb25nIHR0OworICAgIGxvbmcgbG9uZyBpdDsKICAgICBsb25nIGNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsKICAgICBsb25nIHJlY3Vyc2lvbkxldmVsOwpAQCAtODEsOCArNzcsOCBAQAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyRW50cnkgewogICAgIHJvdGF0aW5nX25vZGVfdCBoZWFkZXI7CiAgICAgUHlPYmplY3QgKnVzZXJPYmo7IC8qIFB5Q29kZU9iamVjdCwgb3IgYSBkZXNjcmlwdGl2ZSBzdHIgZm9yIGJ1aWx0aW5zICovCi0gICAgUFlfTE9OR19MT05HIHR0OyAvKiB0b3RhbCB0aW1lIGluIHRoaXMgZW50cnkgKi8KLSAgICBQWV9MT05HX0xPTkcgaXQ7IC8qIGlubGluZSB0aW1lIGluIHRoaXMgZW50cnkgKG5vdCBpbiBzdWJjYWxscykgKi8KKyAgICBsb25nIGxvbmcgdHQ7IC8qIHRvdGFsIHRpbWUgaW4gdGhpcyBlbnRyeSAqLworICAgIGxvbmcgbG9uZyBpdDsgLyogaW5saW5lIHRpbWUgaW4gdGhpcyBlbnRyeSAobm90IGluIHN1YmNhbGxzKSAqLwogICAgIGxvbmcgY2FsbGNvdW50OyAvKiBob3cgbWFueSB0aW1lcyB0aGlzIHdhcyBjYWxsZWQgKi8KICAgICBsb25nIHJlY3Vyc2l2ZWNhbGxjb3VudDsgLyogaG93IG1hbnkgdGltZXMgY2FsbGVkIHJlY3Vyc2l2ZWx5ICovCiAgICAgbG9uZyByZWN1cnNpb25MZXZlbDsKQEAgLTkwLDggKzg2LDggQEAKIH0gUHJvZmlsZXJFbnRyeTsKIAogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCB7Ci0gICAgUFlfTE9OR19MT05HIHQwOwotICAgIFBZX0xPTkdfTE9ORyBzdWJ0OworICAgIGxvbmcgbG9uZyB0MDsKKyAgICBsb25nIGxvbmcgc3VidDsKICAgICBzdHJ1Y3QgX1Byb2ZpbGVyQ29udGV4dCAqcHJldmlvdXM7CiAgICAgUHJvZmlsZXJFbnRyeSAqY3R4RW50cnk7CiB9IFByb2ZpbGVyQ29udGV4dDsKQEAgLTEyMSw5ICsxMTcsOSBAQAogI2RlZmluZSBET1VCTEVfVElNRVJfUFJFQ0lTSU9OICAgNDI5NDk2NzI5Ni4wCiBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3R1cGxlOwogCi1zdGF0aWMgUFlfTE9OR19MT05HIENhbGxFeHRlcm5hbFRpbWVyKFByb2ZpbGVyT2JqZWN0ICpwT2JqKQorc3RhdGljIGxvbmcgbG9uZyBDYWxsRXh0ZXJuYWxUaW1lcihQcm9maWxlck9iamVjdCAqcE9iaikKIHsKLSAgICBQWV9MT05HX0xPTkcgcmVzdWx0OworICAgIGxvbmcgbG9uZyByZXN1bHQ7CiAgICAgUHlPYmplY3QgKm8gPSBQeU9iamVjdF9DYWxsKHBPYmotPmV4dGVybmFsVGltZXIsIGVtcHR5X3R1cGxlLCBOVUxMKTsKICAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShwT2JqLT5leHRlcm5hbFRpbWVyKTsKQEAgLTEzNiwxMSArMTMyLDExIEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBpbnRlcnByZXQgdGhlIHJlc3VsdCBhcyBhIGRvdWJsZSBtZWFzdXJlZCBpbiBzZWNvbmRzLgotICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBQWV9MT05HX0xPTkcgaW50ZXJuYWxseQorICAgICAgICAgICBBcyB0aGUgcHJvZmlsZXIgd29ya3Mgd2l0aCBsb25nIGxvbmcgaW50ZXJuYWxseQogICAgICAgICAgICB3ZSBjb252ZXJ0IGl0IHRvIGEgbGFyZ2UgaW50ZWdlciAqLwogICAgICAgICBkb3VibGUgdmFsID0gUHlGbG9hdF9Bc0RvdWJsZShvKTsKICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgZGVsYXllZCB0byB0aGUgY29kZSBiZWxvdyAqLwotICAgICAgICByZXN1bHQgPSAoUFlfTE9OR19MT05HKSAodmFsICogRE9VQkxFX1RJTUVSX1BSRUNJU0lPTik7CisgICAgICAgIHJlc3VsdCA9IChsb25nIGxvbmcpICh2YWwgKiBET1VCTEVfVElNRVJfUFJFQ0lTSU9OKTsKICAgICB9CiAgICAgUHlfREVDUkVGKG8pOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC0zNDIsOCArMzM4LDggQEAKIHN0YXRpYyB2b2lkCiBTdG9wKFByb2ZpbGVyT2JqZWN0ICpwT2JqLCBQcm9maWxlckNvbnRleHQgKnNlbGYsIFByb2ZpbGVyRW50cnkgKmVudHJ5KQogewotICAgIFBZX0xPTkdfTE9ORyB0dCA9IENBTExfVElNRVIocE9iaikgLSBzZWxmLT50MDsKLSAgICBQWV9MT05HX0xPTkcgaXQgPSB0dCAtIHNlbGYtPnN1YnQ7CisgICAgbG9uZyBsb25nIHR0ID0gQ0FMTF9USU1FUihwT2JqKSAtIHNlbGYtPnQwOworICAgIGxvbmcgbG9uZyBpdCA9IHR0IC0gc2VsZi0+c3VidDsKICAgICBpZiAoc2VsZi0+cHJldmlvdXMpCiAgICAgICAgIHNlbGYtPnByZXZpb3VzLT5zdWJ0ICs9IHR0OwogICAgIHBPYmotPmN1cnJlbnRQcm9maWxlckNvbnRleHQgPSBzZWxmLT5wcmV2aW91czsKQEAgLTc2Miw3ICs3NTgsNiBAQAogc3RhdGljIGludAogcHJvZmlsZXJfaW5pdChQcm9maWxlck9iamVjdCAqcE9iaiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqbzsKICAgICBQeU9iamVjdCAqdGltZXIgPSBOVUxMOwogICAgIGRvdWJsZSB0aW1ldW5pdCA9IDAuMDsKICAgICBpbnQgc3ViY2FsbHMgPSAxOwpAQCAtNzc3LDExICs3NzIsOSBAQAogCiAgICAgaWYgKHNldFN1YmNhbGxzKHBPYmosIHN1YmNhbGxzKSA8IDAgfHwgc2V0QnVpbHRpbnMocE9iaiwgYnVpbHRpbnMpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIG8gPSBwT2JqLT5leHRlcm5hbFRpbWVyOwotICAgIHBPYmotPmV4dGVybmFsVGltZXIgPSB0aW1lcjsKLSAgICBQeV9YSU5DUkVGKHRpbWVyKTsKLSAgICBQeV9YREVDUkVGKG8pOwogICAgIHBPYmotPmV4dGVybmFsVGltZXJVbml0ID0gdGltZXVuaXQ7CisgICAgUHlfWElOQ1JFRih0aW1lcik7CisgICAgUHlfWFNFVFJFRihwT2JqLT5leHRlcm5hbFRpbWVyLCB0aW1lcik7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwppbmRleCBlN2IxZWQ5Li5iYjc3NTUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCkBAIC0xOCwxMiArMTgsNiBAQAogCiAjaW5jbHVkZSA8bHptYS5oPgogCi0KLSNpZm5kZWYgUFlfTE9OR19MT05HCi0jZXJyb3IgIlRoaXMgbW9kdWxlIHJlcXVpcmVzIFBZX0xPTkdfTE9ORyB0byBiZSBkZWZpbmVkIgotI2VuZGlmCi0KLQogI2lmZGVmIFdJVEhfVEhSRUFECiAjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopIGRvIHsgXAogICAgIGlmICghUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAwKSkgeyBcCkBAIC0xNjMsNyArMTU3LDcgQEAKICAgICAgIHVpbnQzMl90IC0gdGhlICJJIiAodW5zaWduZWQgaW50KSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0IHNpemUsIGJ1dAogICAgICAgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAotICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKKyAgICAgIGx6bWFfdmxpIC0gdGhlICJLIiAodW5zaWduZWQgbG9uZyBsb25nKSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0CiAgICAgICBzaXplLCBidXQgbGlrZSAiSSIgaXQgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KIAogICAgICAgbHptYV9tb2RlIGFuZCBsem1hX21hdGNoX2ZpbmRlciAtIHRoZXNlIGFyZSBlbnVtZXJhdGlvbiB0eXBlcywgYW5kCkBAIC0xNzYsMTIgKzE3MCwxMiBAQAogICAgIHN0YXRpYyBpbnQgXAogICAgIEZVTkNOQU1FKFB5T2JqZWN0ICpvYmosIHZvaWQgKnB0cikgXAogICAgIHsgXAotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOyBcCisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7IFwKICAgICAgICAgXAogICAgICAgICB2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKG9iaik7IFwKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIFwKICAgICAgICAgICAgIHJldHVybiAwOyBcCi0gICAgICAgIGlmICgodW5zaWduZWQgUFlfTE9OR19MT05HKShUWVBFKXZhbCAhPSB2YWwpIHsgXAorICAgICAgICBpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZykoVFlQRSl2YWwgIT0gdmFsKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbHVlIHRvbyBsYXJnZSBmb3IgIiAjVFlQRSAiIHR5cGUiKTsgXAogICAgICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTM5OCw3ICszOTIsNyBAQAogICAgUHl0aG9uLWxldmVsIGZpbHRlciBzcGVjaWZpZXJzIChyZXByZXNlbnRlZCBhcyBkaWN0cykuICovCiAKIHN0YXRpYyBpbnQKLXNwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWUpCitzcGVjX2FkZF9maWVsZChQeU9iamVjdCAqc3BlYywgX1B5X0lkZW50aWZpZXIgKmtleSwgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlKQogewogICAgIGludCBzdGF0dXM7CiAgICAgUHlPYmplY3QgKnZhbHVlX29iamVjdDsKQEAgLTU1NSw3ICs1NDksNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAvCiAKQEAgLTU2OSw3ICs1NjIsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChDb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD04YjYwY2IxM2UwY2U2NDIwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzFmNjE1MTM2OTYzZTAwZiBpbnB1dD02NDAxOWVhYzdmMmNjOGQwXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTU4NSw4ICs1NzgsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuZmx1c2gKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKLQogRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLgogCiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdCBpbiBpbnRlcm5hbCBidWZmZXJzLgpAQCAtNTk2LDcgKzU4Nyw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BQ29tcHJlc3Nvcl9mbHVzaF9pbXBsKENvbXByZXNzb3IgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD0zMDYwZmIyNmY5YjQwNDJjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmVjMjFmM2UyMjUwNGY1MCBpbnB1dD02YjM2OTMwM2Y2N2FkMGE4XSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTcwMCw3ICs2OTEsNiBAQAogLypbLWNsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFDb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkNvbXByZXNzb3IgKiIpCiAgICAgZm9ybWF0OiBpbnQoY19kZWZhdWx0PSJGT1JNQVRfWFoiKSA9IEZPUk1BVF9YWgogICAgICAgICBUaGUgY29udGFpbmVyIGZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQuICBUaGlzIGNhbgogICAgICAgICBiZSBGT1JNQVRfWFogKGRlZmF1bHQpLCBGT1JNQVRfQUxPTkUsIG9yIEZPUk1BVF9SQVcuCkBAIC0xMDcwLDcgKzEwNjAsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQURlY29tcHJlc3Nvci5kZWNvbXByZXNzCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICBtYXhfbGVuZ3RoOiBQeV9zc2l6ZV90PS0xCiAKQEAgLTEwOTMsNyArMTA4Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD1mMmJiOTAyY2MxY2FmMjAzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZWY0ZTIwZWM3MTIyMjQxZCBpbnB1dD02MGMxZjEzNTgyMGUzMDlkXSovCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKQEAgLTExMzMsNyArMTEyMiw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BRGVjb21wcmVzc29yLl9faW5pdF9fCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IkRlY29tcHJlc3NvciAqIikKICAgICBmb3JtYXQ6IGludChjX2RlZmF1bHQ9IkZPUk1BVF9BVVRPIikgPSBGT1JNQVRfQVVUTwogICAgICAgICBTcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgb2YgdGhlIGlucHV0IHN0cmVhbS4gIElmIHRoaXMgaXMKICAgICAgICAgRk9STUFUX0FVVE8gKHRoZSBkZWZhdWx0KSwgdGhlIGRlY29tcHJlc3NvciB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0CkBAIC0xMTU5LDcgKzExNDcsNyBAQAogc3RhdGljIGludAogX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKERlY29tcHJlc3NvciAqc2VsZiwgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWVtbGltaXQsIFB5T2JqZWN0ICpmaWx0ZXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9NDU4Y2E2MTMyZWYyOTgwMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNlMTgyMWY4YWEzNjU2NGMgaW5wdXQ9ODFmZTY4NGE2YzJmOGEyN10qLwogewogICAgIGNvbnN0IHVpbnQzMl90IGRlY29kZXJfZmxhZ3MgPSBMWk1BX1RFTExfQU5ZX0NIRUNLIHwgTFpNQV9URUxMX05PX0NIRUNLOwogICAgIHVpbnQ2NF90IG1lbWxpbWl0XyA9IFVJTlQ2NF9NQVg7CkBAIC0xNDU0LDcgKzE0NDIsNyBAQAogLyogU29tZSBvZiBvdXIgY29uc3RhbnRzIGFyZSBtb3JlIHRoYW4gMzIgYml0cyB3aWRlLCBzbyBQeU1vZHVsZV9BZGRJbnRDb25zdGFudAogICAgd291bGQgbm90IHdvcmsgY29ycmVjdGx5IG9uIHBsYXRmb3JtcyB3aXRoIDMyLWJpdCBsb25ncy4gKi8KIHN0YXRpYyBpbnQKLW1vZHVsZV9hZGRfaW50X2NvbnN0YW50KFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpuYW1lLCBQWV9MT05HX0xPTkcgdmFsdWUpCittb2R1bGVfYWRkX2ludF9jb25zdGFudChQeU9iamVjdCAqbSwgY29uc3QgY2hhciAqbmFtZSwgbG9uZyBsb25nIHZhbHVlKQogewogICAgIFB5T2JqZWN0ICpvID0gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CiAgICAgaWYgKG8gPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwppbmRleCA0YWU2MzhlLi5kOTJhOGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICB7InJlY3YiLCBtdWx0aXByb2Nlc3NpbmdfcmVjdiwgTUVUSF9WQVJBUkdTLCAiIn0sCiAgICAgeyJzZW5kIiwgbXVsdGlwcm9jZXNzaW5nX3NlbmQsIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCi0jaWZuZGVmIFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQKKyNpZiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKSAmJiAhZGVmaW5lZChfX0FORFJPSURfXykKICAgICB7InNlbV91bmxpbmsiLCBfUHlNcF9zZW1fdW5saW5rLCBNRVRIX1ZBUkFSR1MsICIifSwKICNlbmRpZgogICAgIHtOVUxMfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCmluZGV4IDlhZWVhOGQuLjUxMmJjMTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAorKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKQEAgLTYwLDcgKzYwLDcgQEAKICNpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJrIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HCi0jZWxpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiAoU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HKQorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSBTSVpFT0ZfTE9OR19MT05HCiAjICBkZWZpbmUgRl9QT0lOVEVSICJLIgogIyAgZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HTE9ORwogI2Vsc2UKZGlmZiAtLWdpdCBhL01vZHVsZXMvX29wZXJhdG9yLmMgYi9Nb2R1bGVzL19vcGVyYXRvci5jCmluZGV4IGRmZmYxZDIuLmZiOGVhZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX29wZXJhdG9yLmMKKysrIGIvTW9kdWxlcy9fb3BlcmF0b3IuYwpAQCAtMTExMSw2ICsxMTExLDggQEAKICAgICAgICAgUHlPYmplY3QgKmZ1bmN0b29sczsKICAgICAgICAgUHlPYmplY3QgKnBhcnRpYWw7CiAgICAgICAgIFB5T2JqZWN0ICpjb25zdHJ1Y3RvcjsKKyAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3NbMl07CisKICAgICAgICAgX1B5X0lERU5USUZJRVIocGFydGlhbCk7CiAgICAgICAgIGZ1bmN0b29scyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZnVuY3Rvb2xzIik7CiAgICAgICAgIGlmICghZnVuY3Rvb2xzKQpAQCAtMTExOSwxNyArMTEyMSwxMSBAQAogICAgICAgICBQeV9ERUNSRUYoZnVuY3Rvb2xzKTsKICAgICAgICAgaWYgKCFwYXJ0aWFsKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKFB5X1RZUEUobWMpKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAoUHlPYmplY3QgKilQeV9UWVBFKG1jKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihtYy0+bmFtZSk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMSwgbWMtPm5hbWUpOwotICAgICAgICBjb25zdHJ1Y3RvciA9IFB5T2JqZWN0X0NhbGwocGFydGlhbCwgbmV3YXJncywgbWMtPmt3ZHMpOwotICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICAgICAgbmV3YXJnc1swXSA9IChQeU9iamVjdCAqKVB5X1RZUEUobWMpOworICAgICAgICBuZXdhcmdzWzFdID0gbWMtPm5hbWU7CisgICAgICAgIGNvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwYXJ0aWFsLCBuZXdhcmdzLCAyLCBtYy0+a3dkcyk7CisKICAgICAgICAgUHlfREVDUkVGKHBhcnRpYWwpOwogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk8iLCBjb25zdHJ1Y3RvciwgbWMtPmFyZ3MpOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3BpY2tsZS5jIGIvTW9kdWxlcy9fcGlja2xlLmMKaW5kZXggYWM3ZjVjNC4uNTRiMTg1NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcGlja2xlLmMKKysrIGIvTW9kdWxlcy9fcGlja2xlLmMKQEAgLTE1Myw2ICsxNTMsOSBAQAogICAgIFB5T2JqZWN0ICpjb2RlY3NfZW5jb2RlOwogICAgIC8qIGJ1aWx0aW5zLmdldGF0dHIsIHVzZWQgZm9yIHNhdmluZyBuZXN0ZWQgbmFtZXMgd2l0aCBwcm90b2NvbCA8IDQgKi8KICAgICBQeU9iamVjdCAqZ2V0YXR0cjsKKyAgICAvKiBmdW5jdG9vbHMucGFydGlhbCwgdXNlZCBmb3IgaW1wbGVtZW50aW5nIF9fbmV3b2JqX2V4X18gd2l0aCBwcm90b2NvbHMKKyAgICAgICAyIGFuZCAzICovCisgICAgUHlPYmplY3QgKnBhcnRpYWw7CiB9IFBpY2tsZVN0YXRlOwogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHRoZSBfcGlja2xlIG1vZHVsZSBkZWZpbml0aW9uLiAqLwpAQCAtMTkwLDYgKzE5Myw3IEBACiAgICAgUHlfQ0xFQVIoc3QtPmltcG9ydF9tYXBwaW5nXzN0bzIpOwogICAgIFB5X0NMRUFSKHN0LT5jb2RlY3NfZW5jb2RlKTsKICAgICBQeV9DTEVBUihzdC0+Z2V0YXR0cik7CisgICAgUHlfQ0xFQVIoc3QtPnBhcnRpYWwpOwogfQogCiAvKiBJbml0aWFsaXplIHRoZSBnaXZlbiBwaWNrbGUgbW9kdWxlIHN0YXRlLiAqLwpAQCAtMjAwLDYgKzIwNCw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb21wYXRfcGlja2xlID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29kZWNzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuY3Rvb2xzID0gTlVMTDsKIAogICAgIGJ1aWx0aW5zID0gUHlFdmFsX0dldEJ1aWx0aW5zKCk7CiAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCkBAIC0zMTQsMTIgKzMxOSwyMSBAQAogICAgIH0KICAgICBQeV9DTEVBUihjb2RlY3MpOwogCisgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKKyAgICBpZiAoIWZ1bmN0b29scykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBzdC0+cGFydGlhbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuY3Rvb2xzLCAicGFydGlhbCIpOworICAgIGlmICghc3QtPnBhcnRpYWwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKKwogICAgIHJldHVybiAwOwogCiAgIGVycm9yOgogICAgIFB5X0NMRUFSKGNvcHlyZWcpOwogICAgIFB5X0NMRUFSKGNvbXBhdF9waWNrbGUpOwogICAgIFB5X0NMRUFSKGNvZGVjcyk7CisgICAgUHlfQ0xFQVIoZnVuY3Rvb2xzKTsKICAgICBfUGlja2xlX0NsZWFyU3RhdGUoc3QpOwogICAgIHJldHVybiAtMTsKIH0KQEAgLTMzMSw0MyArMzQ1LDIwIEBACiBfUGlja2xlX0Zhc3RDYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlPYmplY3QgKmFyZ190dXBsZSA9IFB5VHVwbGVfTmV3KDEpOwogCi0gICAgLyogTm90ZTogdGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJldXNlIHRoZSBhcmd1bWVudCB0dXBsZS4gVGhpcyB1c2VkIHRvIGdpdmUKLSAgICAgICBhIHNsaWdodCBwZXJmb3JtYW5jZSBib29zdCB3aXRoIG9sZGVyIHBpY2tsZSBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgbWFueQotICAgICAgIHVuYnVmZmVyZWQgcmVhZHMgb2NjdXJyZWQgKHRodXMgbmVlZGluZyBtYW55IGZ1bmN0aW9uIGNhbGxzKS4KLQotICAgICAgIEhvd2V2ZXIsIHRoaXMgb3B0aW1pemF0aW9uIHdhcyByZW1vdmVkIGJlY2F1c2UgaXQgd2FzIHRvbyBjb21wbGljYXRlZAotICAgICAgIHRvIGdldCByaWdodC4gSXQgYWJ1c2VkIHRoZSBDIEFQSSBmb3IgdHVwbGVzIHRvIG11dGF0ZSB0aGVtIHdoaWNoIGxlZAotICAgICAgIHRvIHN1YnRsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIGNvbmN1cnJlbmN5IGJ1Z3MuIEZ1cnRoZXJtb3JlLCB0aGUKLSAgICAgICBpbnRyb2R1Y3Rpb24gb2YgcHJvdG9jb2wgNCBhbmQgdGhlIHByZWZldGNoaW5nIG9wdGltaXphdGlvbiB2aWEgcGVlaygpCi0gICAgICAgc2lnbmlmaWNhbnRseSByZWR1Y2VkIHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gY2FsbHMgd2UgZG8uIFRodXMsIHRoZQotICAgICAgIGJlbmVmaXRzIGJlY2FtZSBtYXJnaW5hbCBhdCBiZXN0LiAqLwotCi0gICAgaWYgKGFyZ190dXBsZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdfdHVwbGUsIDAsIG9iaik7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdfdHVwbGUsIE5VTEwpOwotICAgIFB5X0NMRUFSKGFyZ190dXBsZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG9iaik7CisgICAgUHlfREVDUkVGKG9iaik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLXN0YXRpYyBpbnQKLXN0YWNrX3VuZGVyZmxvdyh2b2lkKQotewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInVucGlja2xpbmcgc3RhY2sgdW5kZXJmbG93Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCiAvKiBJbnRlcm5hbCBkYXRhIHR5cGUgdXNlZCBhcyB0aGUgdW5waWNrbGluZyBzdGFjay4gKi8KIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9WQVJfSEVBRAogICAgIFB5T2JqZWN0ICoqZGF0YTsKKyAgICBpbnQgbWFya19zZXQ7ICAgICAgICAgIC8qIGlzIE1BUksgc2V0PyAqLworICAgIFB5X3NzaXplX3QgZmVuY2U7ICAgICAgLyogcG9zaXRpb24gb2YgdG9wIE1BUksgb3IgMCAqLwogICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOyAgLyogbnVtYmVyIG9mIHNsb3RzIGluIGRhdGEgYWxsb2NhdGVkICovCiB9IFBkYXRhOwogCkBAIC0zOTgsNiArMzg5LDggQEAKICAgICBpZiAoIShzZWxmID0gUHlPYmplY3RfTmV3KFBkYXRhLCAmUGRhdGFfVHlwZSkpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9TSVpFKHNlbGYpID0gMDsKKyAgICBzZWxmLT5tYXJrX3NldCA9IDA7CisgICAgc2VsZi0+ZmVuY2UgPSAwOwogICAgIHNlbGYtPmFsbG9jYXRlZCA9IDg7CiAgICAgc2VsZi0+ZGF0YSA9IFB5TWVtX01BTExPQyhzZWxmLT5hbGxvY2F0ZWQgKiBzaXplb2YoUHlPYmplY3QgKikpOwogICAgIGlmIChzZWxmLT5kYXRhKQpAQCAtNDE1LDggKzQwOCw3IEBACiB7CiAgICAgUHlfc3NpemVfdCBpID0gUHlfU0laRShzZWxmKTsKIAotICAgIGlmIChjbGVhcnRvIDwgMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGFzc2VydChjbGVhcnRvID49IHNlbGYtPmZlbmNlKTsKICAgICBpZiAoY2xlYXJ0byA+PSBpKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtNDUyLDYgKzQ0NCwxNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAorc3RhdGljIGludAorUGRhdGFfc3RhY2tfdW5kZXJmbG93KFBkYXRhICpzZWxmKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+bWFya19zZXQgPworICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBNQVJLIGZvdW5kIiA6CisgICAgICAgICAgICAgICAgICAgICJ1bnBpY2tsaW5nIHN0YWNrIHVuZGVyZmxvdyIpOworICAgIHJldHVybiAtMTsKK30KKwogLyogRCBpcyBhIFBkYXRhKi4gIFBvcCB0aGUgdG9wbW9zdCBlbGVtZW50IGFuZCBzdG9yZSBpdCBpbnRvIFYsIHdoaWNoCiAgKiBtdXN0IGJlIGFuIGx2YWx1ZSBob2xkaW5nIFB5T2JqZWN0Ki4gIE9uIHN0YWNrIHVuZGVyZmxvdywgVW5waWNrbGluZ0Vycm9yCiAgKiBpcyByYWlzZWQgYW5kIFYgaXMgc2V0IHRvIE5VTEwuCkBAIC00NTksOSArNDYyLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQZGF0YV9wb3AoUGRhdGEgKnNlbGYpCiB7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAiYmFkIHBpY2tsZSBkYXRhIik7CisgICAgaWYgKFB5X1NJWkUoc2VsZikgPD0gc2VsZi0+ZmVuY2UpIHsKKyAgICAgICAgUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIHNlbGYtPmRhdGFbLS1QeV9TSVpFKHNlbGYpXTsKQEAgLTQ5Myw2ICs0OTUsMTAgQEAKICAgICBQeU9iamVjdCAqdHVwbGU7CiAgICAgUHlfc3NpemVfdCBsZW4sIGksIGo7CiAKKyAgICBpZiAoc3RhcnQgPCBzZWxmLT5mZW5jZSkgeworICAgICAgICBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBsZW4gPSBQeV9TSVpFKHNlbGYpIC0gc3RhcnQ7CiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOwogICAgIGlmICh0dXBsZSA9PSBOVUxMKQpAQCAtODYwLDcgKzg2Niw3IEBACiB7CiAgICAgc2l6ZV90IGk7CiAKLSAgICBhc3NlcnQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihzaXplX3QpIDw9IDgpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZihzaXplX3QpOyBpKyspIHsKICAgICAgICAgb3V0W2ldID0gKHVuc2lnbmVkIGNoYXIpKCh2YWx1ZSA+PiAoOCAqIGkpKSAmIDB4ZmYpOwpAQCAtMTA4Niw2ICsxMDkyLDE0IEBACiB9CiAKIHN0YXRpYyBpbnQKK2JhZF9yZWFkbGluZSh2b2lkKQoreworICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInBpY2tsZSBkYXRhIHdhcyB0cnVuY2F0ZWQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKIF9VbnBpY2tsZXJfU2tpcENvbnN1bWVkKFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwpAQCAtMTEzNCw5ICsxMTQ4LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKG4gPT0gUkVBRF9XSE9MRV9MSU5FKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBkYXRhID0gUHlPYmplY3RfQ2FsbChzZWxmLT5yZWFkbGluZSwgZW1wdHlfdHVwbGUsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoZW1wdHlfdHVwbGUpOworICAgICAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhzZWxmLT5yZWFkbGluZSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbGVuOwpAQCAtMTE3NCw2ICsxMTg2LDM2IEBACiAgICAgcmV0dXJuIHJlYWRfc2l6ZTsKIH0KIAorLyogRG9uJ3QgY2FsbCBpdCBkaXJlY3RseTogdXNlIF9VbnBpY2tsZXJfUmVhZCgpICovCitzdGF0aWMgUHlfc3NpemVfdAorX1VucGlja2xlcl9SZWFkSW1wbChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKipzLCBQeV9zc2l6ZV90IG4pCit7CisgICAgUHlfc3NpemVfdCBudW1fcmVhZDsKKworICAgICpzID0gTlVMTDsKKyAgICBpZiAoc2VsZi0+bmV4dF9yZWFkX2lkeCA+IFBZX1NTSVpFX1RfTUFYIC0gbikgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQgd291bGQgb3ZlcmZsb3cgKGludmFsaWQgYnl0ZWNvZGUpIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBUaGlzIGNhc2UgaXMgaGFuZGxlZCBieSB0aGUgX1VucGlja2xlcl9SZWFkKCkgbWFjcm8gZm9yIGVmZmljaWVuY3kgKi8KKyAgICBhc3NlcnQoc2VsZi0+bmV4dF9yZWFkX2lkeCArIG4gPiBzZWxmLT5pbnB1dF9sZW4pOworCisgICAgaWYgKCFzZWxmLT5yZWFkKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisKKyAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIG4pOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPCBuKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXI7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG47CisgICAgcmV0dXJuIG47Cit9CisKIC8qIFJlYWQgYG5gIGJ5dGVzIGZyb20gdGhlIHVucGlja2xlcidzIGRhdGEgc291cmNlLCBzdG9yaW5nIHRoZSByZXN1bHQgaW4gYCpzYC4KIAogICAgVGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgYWxsIGRhdGEgcmVhZHMsIHJhdGhlciB0aGFuIGFjY2Vzc2luZyB0aGUgdW5waWNrbGVyJ3MKQEAgLTExODcsMzggKzEyMjksMTIgQEAKIAogICAgUmV0dXJucyAtMSAod2l0aCBhbiBleGNlcHRpb24gc2V0KSBvbiBmYWlsdXJlLiBPbiBzdWNjZXNzLCByZXR1cm4gdGhlCiAgICBudW1iZXIgb2YgY2hhcnMgcmVhZC4gKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1fVW5waWNrbGVyX1JlYWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICoqcywgUHlfc3NpemVfdCBuKQotewotICAgIFB5X3NzaXplX3QgbnVtX3JlYWQ7Ci0KLSAgICAqcyA9IE5VTEw7Ci0gICAgaWYgKHNlbGYtPm5leHRfcmVhZF9pZHggPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKLSAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkIHdvdWxkIG92ZXJmbG93IChpbnZhbGlkIGJ5dGVjb2RlKSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChzZWxmLT5uZXh0X3JlYWRfaWR4ICsgbiA8PSBzZWxmLT5pbnB1dF9sZW4pIHsKLSAgICAgICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXIgKyBzZWxmLT5uZXh0X3JlYWRfaWR4OwotICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ICs9IG47Ci0gICAgICAgIHJldHVybiBuOwotICAgIH0KLSAgICBpZiAoIXNlbGYtPnJlYWQpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgbik7Ci0gICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChudW1fcmVhZCA8IG4pIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0VPRkVycm9yLCAiUmFuIG91dCBvZiBpbnB1dCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpzID0gc2VsZi0+aW5wdXRfYnVmZmVyOwotICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBuOwotICAgIHJldHVybiBuOwotfQorI2RlZmluZSBfVW5waWNrbGVyX1JlYWQoc2VsZiwgcywgbikgXAorICAgICgoKG4pIDw9IChzZWxmKS0+aW5wdXRfbGVuIC0gKHNlbGYpLT5uZXh0X3JlYWRfaWR4KSAgICAgIFwKKyAgICAgPyAoKihzKSA9IChzZWxmKS0+aW5wdXRfYnVmZmVyICsgKHNlbGYpLT5uZXh0X3JlYWRfaWR4LCBcCisgICAgICAgIChzZWxmKS0+bmV4dF9yZWFkX2lkeCArPSAobiksICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAobikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgOiBfVW5waWNrbGVyX1JlYWRJbXBsKHNlbGYsIChzKSwgKG4pKSkKIAogc3RhdGljIFB5X3NzaXplX3QKIF9VbnBpY2tsZXJfQ29weUxpbmUoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICpsaW5lLCBQeV9zc2l6ZV90IGxlbiwKQEAgLTEyMzgsNyArMTI1NCw3IEBACiB9CiAKIC8qIFJlYWQgYSBsaW5lIGZyb20gdGhlIGlucHV0IHN0cmVhbS9idWZmZXIuIElmIHdlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQKLSAgIGJlZm9yZSBoaXR0aW5nIFxuLCByZXR1cm4gdGhlIGRhdGEgd2UgZm91bmQuCisgICBiZWZvcmUgaGl0dGluZyBcbiwgcmFpc2UgYW4gZXJyb3IuCiAKICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFycyByZWFkLCBvciAtMSBvbiBmYWlsdXJlLiAqLwogc3RhdGljIFB5X3NzaXplX3QKQEAgLTEyNTQsMjAgKzEyNzAsMTYgQEAKICAgICAgICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIGxpbmVfc3RhcnQsIG51bV9yZWFkLCByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChzZWxmLT5yZWFkKSB7Ci0gICAgICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgUkVBRF9XSE9MRV9MSU5FKTsKLSAgICAgICAgaWYgKG51bV9yZWFkIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOwotICAgICAgICByZXR1cm4gX1VucGlja2xlcl9Db3B5TGluZShzZWxmLCBzZWxmLT5pbnB1dF9idWZmZXIsIG51bV9yZWFkLCByZXN1bHQpOwotICAgIH0KKyAgICBpZiAoIXNlbGYtPnJlYWQpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKIAotICAgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSd2ZSBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmluZy4gUmV0dXJuIHRoZQotICAgICAgIHJlbWFpbmluZyBzdHJpbmcgYW5kIGxldCB0aGUgY2FsbGVyIGZpZ3VyZSBpdCBvdXQuICovCi0gICAgKnJlc3VsdCA9IHNlbGYtPmlucHV0X2J1ZmZlciArIHNlbGYtPm5leHRfcmVhZF9pZHg7Ci0gICAgbnVtX3JlYWQgPSBpIC0gc2VsZi0+bmV4dF9yZWFkX2lkeDsKLSAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gaTsKLSAgICByZXR1cm4gbnVtX3JlYWQ7CisgICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBSRUFEX1dIT0xFX0xJTkUpOworICAgIGlmIChudW1fcmVhZCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobnVtX3JlYWQgPT0gMCB8fCBzZWxmLT5pbnB1dF9idWZmZXJbbnVtX3JlYWQgLSAxXSAhPSAnXG4nKQorICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CisgICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG51bV9yZWFkOworICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7CiB9CiAKIC8qIFJldHVybnMgLTEgKHdpdGggYW4gZXhjZXB0aW9uIHNldCkgb24gZmFpbHVyZSwgMCBvbiBzdWNjZXNzLiBUaGUgbWVtbyBhcnJheQpAQCAtMjA5NiwzOCArMjEwOCwzNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHJhd191bmljb2RlX2VzY2FwZShQeU9iamVjdCAqb2JqKQogewotICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwotICAgIHNpemVfdCBleHBhbmRzaXplOwogICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisKICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEob2JqKTsKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQob2JqKTsKLSAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKLSAgICAgICAgZXhwYW5kc2l6ZSA9IDEwOwotICAgIGVsc2UKLSAgICAgICAgZXhwYW5kc2l6ZSA9IDY7CiAKLSAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gcmVwcjsKLSAgICBhc3NlcnQoUHlfUkVGQ05UKHJlcHIpID09IDEpOworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgLyogLTE6IHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHAsIDEwLTEpOworICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOwpAQCAtMjEzOSw4ICsyMTQ4LDEzIEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLworICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMsICdcXCcgYW5kICdcbicgdG8gJ1x1eHh4eCcgKi8KICAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2IHx8IGNoID09ICdcXCcgfHwgY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgLyogLTE6IHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHAsIDYtMSk7CisgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CkBAIC0yMTUyLDE0ICsyMTY2LDE2IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVwcjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKLXdyaXRlX3V0ZjgoUGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqZGF0YSwgUHlfc3NpemVfdCBzaXplKQord3JpdGVfdXRmOChQaWNrbGVyT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpkYXRhLCBQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgY2hhciBoZWFkZXJbOV07CiAgICAgUHlfc3NpemVfdCBsZW47CkBAIC0yODU4LDcgKzI4NzQsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOwogCi0gICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIigpIik7CisgICAgICAgICAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgTlVMTCk7CiAgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgaXRlciA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlbXMpOwpAQCAtMzUzNSwxMSArMzU1MSw5IEBACiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgewotICAgICAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKLSAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld29ial9leF9fKTsKLSAgICAgICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NvbXBhcmUoCi0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOworICAgICAgICAgICAgdXNlX25ld29ial9leCA9IFB5VW5pY29kZV9Db21wYXJlKAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX25ld29ial9leF9fKSkgPT0gMDsKICAgICAgICAgICAgIGlmICghdXNlX25ld29ial9leCkgewogICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX18pOwogICAgICAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ29tcGFyZSgKQEAgLTM1ODMsMTEgKzM1OTcsNTggQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzYXZlKHNlbGYsIGNscywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBzYXZlKHNlbGYsIGFyZ3MsIDApIDwgMCB8fAotICAgICAgICAgICAgc2F2ZShzZWxmLCBrd2FyZ3MsIDApIDwgMCB8fAotICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm5ld29ial9leF9vcCwgMSkgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChzZWxmLT5wcm90byA+PSA0KSB7CisgICAgICAgICAgICBpZiAoc2F2ZShzZWxmLCBjbHMsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIHNhdmUoc2VsZiwgYXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgc2F2ZShzZWxmLCBrd2FyZ3MsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZuZXdvYmpfZXhfb3AsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdhcmdzOworICAgICAgICAgICAgUHlPYmplY3QgKmNsc19uZXc7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX25ld19fKTsKKworICAgICAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KFB5X1NJWkUoYXJncykgKyAyKTsKKyAgICAgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICBjbHNfbmV3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmV3X18pOworICAgICAgICAgICAgaWYgKGNsc19uZXcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIGNsc19uZXcpOworICAgICAgICAgICAgUHlfSU5DUkVGKGNscyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDEsIGNscyk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRShhcmdzKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIGkgKyAyLCBpdGVtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGFibGUgPSBQeU9iamVjdF9DYWxsKHN0LT5wYXJ0aWFsLCBuZXdhcmdzLCBrd2FyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzYXZlKHNlbGYsIGNhbGxhYmxlLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBzYXZlKHNlbGYsIG5ld2FyZ3MsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZyZWR1Y2Vfb3AsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSBpZiAodXNlX25ld29iaikgewpAQCAtMzg3NywxMCArMzkzOCw3IEBACiAgICAgICAgICAgICAvKiBDaGVjayBmb3IgYSBfX3JlZHVjZV9fIG1ldGhvZC4gKi8KICAgICAgICAgICAgIHJlZHVjZV9mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX19fcmVkdWNlX18pOwogICAgICAgICAgICAgaWYgKHJlZHVjZV9mdW5jICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZW1wdHlfdHVwbGUgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBQeU9iamVjdF9DYWxsKHJlZHVjZV9mdW5jLCBlbXB0eV90dXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbXB0eV90dXBsZSk7CisgICAgICAgICAgICAgICAgcmVkdWNlX3ZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhyZWR1Y2VfZnVuYyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlBpY2tsaW5nRXJyb3IsCkBAIC00Mzk3LDcgKzQ0NTUsNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInbWVtbycgYXR0cmlidXRlIG11c3QgYmUgYW4gUGlja2xlck1lbW9Qcm94eSBvYmplY3QiCisgICAgICAgICAgICAgICAgICAgICAiJ21lbW8nIGF0dHJpYnV0ZSBtdXN0IGJlIGEgUGlja2xlck1lbW9Qcm94eSBvYmplY3QiCiAgICAgICAgICAgICAgICAgICAgICAib3IgZGljdCwgbm90ICUuMjAwcyIsIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NDI2LDggKzQ0ODQsNiBAQAogc3RhdGljIGludAogUGlja2xlcl9zZXRfcGVyc2lkKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgZGVsZXRpb24gaXMgbm90IHN1cHBvcnRlZCIpOwpAQCAtNDQzOSwxMCArNDQ5NSw4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICB0bXAgPSBzZWxmLT5wZXJzX2Z1bmM7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBzZWxmLT5wZXJzX2Z1bmMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7ICAgICAgLyogc2VsZi0+cGVyc19mdW5jIGNhbiBiZSBOVUxMLCBzbyBiZSBjYXJlZnVsLiAqLworICAgIFB5X1hTRVRSRUYoc2VsZi0+cGVyc19mdW5jLCB2YWx1ZSk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ1MjQsMTMgKzQ1NzgsMTkgQEAKIHN0YXRpYyBQeV9zc2l6ZV90CiBtYXJrZXIoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICBQeV9zc2l6ZV90IG1hcms7CisKICAgICBpZiAoc2VsZi0+bnVtX21hcmtzIDwgMSkgeworICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAiY291bGQgbm90IGZpbmQgTUFSSyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmV0dXJuIHNlbGYtPm1hcmtzWy0tc2VsZi0+bnVtX21hcmtzXTsKKyAgICBtYXJrID0gc2VsZi0+bWFya3NbLS1zZWxmLT5udW1fbWFya3NdOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IHNlbGYtPm51bV9tYXJrcyAhPSAwOworICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IHNlbGYtPm51bV9tYXJrcyA/CisgICAgICAgICAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MgLSAxXSA6IDA7CisgICAgcmV0dXJuIG1hcms7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTQ1NDEsMTQgKzQ2MDEsNiBAQAogfQogCiBzdGF0aWMgaW50Ci1iYWRfcmVhZGxpbmUodm9pZCkKLXsKLSAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJwaWNrbGUgZGF0YSB3YXMgdHJ1bmNhdGVkIik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgaW50CiBsb2FkX2ludChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwpAQCAtNDk5MSw3ICs1MDQzLDcgQEAKICAgICBQeU9iamVjdCAqdHVwbGU7CiAKICAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPCBsZW4pCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICB0dXBsZSA9IFBkYXRhX3BvcHR1cGxlKHNlbGYtPnN0YWNrLCBQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIGxlbik7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC01MDczLDYgKzUxMjUsMTMgQEAKICAgICBpZiAoKGRpY3QgPSBQeURpY3RfTmV3KCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIAorICAgIGlmICgoaiAtIGkpICUgMiAhPSAwKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJvZGQgbnVtYmVyIG9mIGl0ZW1zIGZvciBESUNUIik7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIGZvciAoayA9IGkgKyAxOyBrIDwgajsgayArPSAyKSB7CiAgICAgICAgIGtleSA9IHNlbGYtPnN0YWNrLT5kYXRhW2sgLSAxXTsKICAgICAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtrXTsKQEAgLTUxNDAsNyArNTE5OSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIGkgPCAxKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogCiAgICAgYXJncyA9IFBkYXRhX3BvcHR1cGxlKHNlbGYtPnN0YWNrLCBpICsgMSk7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTU0NjMsMTIgKzU1MjIsMTUgQEAKICAgICAgKi8KICAgICBpZiAoc2VsZi0+bnVtX21hcmtzID4gMCAmJiBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MgLSAxXSA9PSBsZW4pIHsKICAgICAgICAgc2VsZi0+bnVtX21hcmtzLS07Ci0gICAgfSBlbHNlIGlmIChsZW4gPiAwKSB7CisgICAgICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IHNlbGYtPm51bV9tYXJrcyAhPSAwOworICAgICAgICBzZWxmLT5zdGFjay0+ZmVuY2UgPSBzZWxmLT5udW1fbWFya3MgPworICAgICAgICAgICAgICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdIDogMDsKKyAgICB9IGVsc2UgaWYgKGxlbiA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOworICAgIGVsc2UgewogICAgICAgICBsZW4tLTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnN0YWNrLT5kYXRhW2xlbl0pOwogICAgICAgICBQeV9TSVpFKHNlbGYtPnN0YWNrKSA9IGxlbjsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNTQ5MCwxMCArNTU1MiwxMCBAQAogbG9hZF9kdXAoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpsYXN0OwotICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7CiAKLSAgICBpZiAoKGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKGxlbiA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGxhc3QgPSBzZWxmLT5zdGFjay0+ZGF0YVtsZW4gLSAxXTsKICAgICBQREFUQV9BUFBFTkQoc2VsZi0+c3RhY2ssIGxhc3QsIC0xKTsKICAgICByZXR1cm4gMDsKQEAgLTU2NzYsOCArNTczOCw4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAobGVuIDwgMikKICAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOwotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAga2V5ID0gUHlMb25nX0Zyb21TdHJpbmcocywgTlVMTCwgMTApOwpAQCAtNTcwNSw4ICs1NzY3LDggQEAKICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCAxKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAgaWR4ID0gUHlfQ0hBUk1BU0soc1swXSk7CkBAIC01NzI0LDggKzU3ODYsOCBAQAogICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDQpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBpZHggPSBjYWxjX2JpbnNpemUocywgNCk7CkBAIC01NzQzLDggKzU4MDUsOCBAQAogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgdmFsdWUgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCiAgICAgcmV0dXJuIF9VbnBpY2tsZXJfTWVtb1B1dChzZWxmLCBzZWxmLT5tZW1vX2xlbiwgdmFsdWUpOwpAQCAtNTc1OCw4ICs1ODIwLDggQEAKICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKIAogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmICh4ID4gbGVuIHx8IHggPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmICh4ID4gbGVuIHx8IHggPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01ODA4LDggKzU4NzAsOCBAQAogc3RhdGljIGludAogbG9hZF9hcHBlbmQoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDEgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDEgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICByZXR1cm4gZG9fYXBwZW5kKHNlbGYsIFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSk7CiB9CiAKQEAgLTU4MzEsOCArNTg5Myw4IEBACiAgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKLSAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoeCA+IGxlbiB8fCB4IDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgaWYgKGxlbiA9PSB4KSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoKGxlbiAtIHgpICUgMiAhPSAwKSB7CkBAIC01ODg1LDggKzU5NDcsOCBAQAogICAgIGlmIChtYXJrIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmIChtYXJrID4gbGVuIHx8IG1hcmsgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChtYXJrID4gbGVuIHx8IG1hcmsgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IG1hcmspICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogCkBAIC01OTQxLDggKzYwMDMsOCBAQAogICAgIC8qIFN0YWNrIGlzIC4uLiBpbnN0YW5jZSwgc3RhdGUuICBXZSB3YW50IHRvIGxlYXZlIGluc3RhbmNlIGF0CiAgICAgICogdGhlIHN0YWNrIHRvcCwgcG9zc2libHkgbXV0YXRlZCB2aWEgaW5zdGFuY2UuX19zZXRzdGF0ZV9fKHN0YXRlKS4KICAgICAgKi8KLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPCAyKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMiA8IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICBQREFUQV9QT1Aoc2VsZi0+c3RhY2ssIHN0YXRlKTsKICAgICBpZiAoc3RhdGUgPT0gTlVMTCkKQEAgLTYwNzgsNyArNjE0MCw4IEBACiAgICAgICAgIHNlbGYtPm1hcmtzX3NpemUgPSAoUHlfc3NpemVfdClhbGxvYzsKICAgICB9CiAKLSAgICBzZWxmLT5tYXJrc1tzZWxmLT5udW1fbWFya3MrK10gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKKyAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSAxOworICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcysrXSA9IHNlbGYtPnN0YWNrLT5mZW5jZSA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC02MTYxLDYgKzYyMjQsOCBAQAogICAgIGNoYXIgKnMgPSBOVUxMOwogCiAgICAgc2VsZi0+bnVtX21hcmtzID0gMDsKKyAgICBzZWxmLT5zdGFjay0+bWFya19zZXQgPSAwOworICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IDA7CiAgICAgc2VsZi0+cHJvdG8gPSAwOwogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSkKICAgICAgICAgUGRhdGFfY2xlYXIoc2VsZi0+c3RhY2ssIDApOwpAQCAtNjE3Myw4ICs2MjM4LDEzIEBACiAgICAgY2FzZSBvcGNvZGU6IGlmIChsb2FkX2Z1bmMoc2VsZiwgKGFyZykpIDwgMCkgYnJlYWs7IGNvbnRpbnVlOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgMSkgPCAwKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDEpIDwgMCkgeworICAgICAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoc3QtPlVucGlja2xpbmdFcnJvcikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfRU9GRXJyb3IsICJSYW4gb3V0IG9mIGlucHV0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoKGVudW0gb3Bjb2RlKXNbMF0pIHsKICAgICAgICAgT1AoTk9ORSwgbG9hZF9ub25lKQpAQCAtNjI0NiwxNSArNjMxNiwxOSBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChzWzBdID09ICdcMCcpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX0VPRkVycm9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlVucGlja2xpbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbG9hZCBrZXksICclYycuIiwgc1swXSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzOworICAgICAgICAgICAgICAgIGlmICgweDIwIDw9IGMgJiYgYyA8PSAweDdlICYmIGMgIT0gJ1wnJyAmJiBjICE9ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJyVjJy4iLCBjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbG9hZCBrZXksICdcXHglMDJ4Jy4iLCBjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgIC8qIGFuZCB3ZSBhcmUgZG9uZSEgKi8KQEAgLTY4NjUsOCArNjkzOSw2IEBACiBzdGF0aWMgaW50CiBVbnBpY2tsZXJfc2V0X3BlcnNsb2FkKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBkZWxldGlvbiBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC02ODc5LDEwICs2OTUxLDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHRtcCA9IHNlbGYtPnBlcnNfZnVuYzsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNlbGYtPnBlcnNfZnVuYyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsgICAgICAvKiBzZWxmLT5wZXJzX2Z1bmMgY2FuIGJlIE5VTEwsIHNvIGJlIGNhcmVmdWwuICovCisgICAgUHlfWFNFVFJFRihzZWxmLT5wZXJzX2Z1bmMsIHZhbHVlKTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwppbmRleCBjMDI0MGUyLi41MDA3YTM5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYworKysgYi9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYwpAQCAtMjEsOCArMjEsNyBAQAogI2luY2x1ZGUgPGRpcmVudC5oPgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChTWVNfZ2V0ZGVudHM2NCkKLS8qIEFuZHJvaWQgZG9lc24ndCBleHBvc2Ugc3lzY2FsbHMsIGFkZCB0aGUgZGVmaW5pdGlvbiBtYW51YWxseS4gKi8KKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMSAmJiAhZGVmaW5lZChTWVNfZ2V0ZGVudHM2NCkKICMgaW5jbHVkZSA8c3lzL2xpbnV4LXN5c2NhbGxzLmg+CiAjIGRlZmluZSBTWVNfZ2V0ZGVudHM2NCAgX19OUl9nZXRkZW50czY0CiAjZW5kaWYKQEAgLTcyLDcgKzcxLDcgQEAKIAogLyogQ29udmVydCBBU0NJSSB0byBhIHBvc2l0aXZlIGludCwgbm8gbGliYyBjYWxsLiBubyBvdmVyZmxvdy4gLTEgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1fcG9zX2ludF9mcm9tX2FzY2lpKGNoYXIgKm5hbWUpCitfcG9zX2ludF9mcm9tX2FzY2lpKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgaW50IG51bSA9IDA7CiAgICAgd2hpbGUgKCpuYW1lID49ICcwJyAmJiAqbmFtZSA8PSAnOScpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jIGIvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKaW5kZXggOTVhZDRhNC4uNjM3NTlkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMKQEAgLTY4LDkgKzY4LDggQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgPHRpbWUuaD4gICAgICAgICAgICAgICAvKiBmb3Igc2VlZGluZyB0byBjdXJyZW50IHRpbWUgKi8KLQotI2lmbmRlZiBQWV9VSU5UMzJfVAotIyAgZXJyb3IgIkZhaWxlZCB0byBmaW5kIGFuIGV4YWN0LXdpZHRoIDMyLWJpdCBpbnRlZ2VyIHR5cGUiCisjaWZkZWYgSEFWRV9QUk9DRVNTX0gKKyMgIGluY2x1ZGUgPHByb2Nlc3MuaD4gICAgICAgICAgLyogbmVlZGVkIGZvciBnZXRwaWQoKSAqLwogI2VuZGlmCiAKIC8qIFBlcmlvZCBwYXJhbWV0ZXJzIC0tIFRoZXNlIGFyZSBhbGwgbWFnaWMuICBEb24ndCBjaGFuZ2UuICovCkBAIC04Myw3ICs4Miw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIGludCBpbmRleDsKLSAgICBQWV9VSU5UMzJfVCBzdGF0ZVtOXTsKKyAgICB1aW50MzJfdCBzdGF0ZVtOXTsKIH0gUmFuZG9tT2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFJhbmRvbV9UeXBlOwpAQCAtOTUsMTMgKzk0LDEzIEBACiAKIAogLyogZ2VuZXJhdGVzIGEgcmFuZG9tIG51bWJlciBvbiBbMCwweGZmZmZmZmZmXS1pbnRlcnZhbCAqLwotc3RhdGljIFBZX1VJTlQzMl9UCitzdGF0aWMgdWludDMyX3QKIGdlbnJhbmRfaW50MzIoUmFuZG9tT2JqZWN0ICpzZWxmKQogewotICAgIFBZX1VJTlQzMl9UIHk7Ci0gICAgc3RhdGljIFBZX1VJTlQzMl9UIG1hZzAxWzJdPXsweDBVLCBNQVRSSVhfQX07CisgICAgdWludDMyX3QgeTsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgbWFnMDFbMl0gPSB7MHgwVSwgTUFUUklYX0F9OwogICAgIC8qIG1hZzAxW3hdID0geCAqIE1BVFJJWF9BICBmb3IgeD0wLDEgKi8KLSAgICBQWV9VSU5UMzJfVCAqbXQ7CisgICAgdWludDMyX3QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBpZiAoc2VsZi0+aW5kZXggPj0gTikgeyAvKiBnZW5lcmF0ZSBOIHdvcmRzIGF0IG9uZSB0aW1lICovCkBAIC0xMzYsMjEgKzEzNSwyMSBAQAogICogb3B0aW1pemUgdGhlIGRpdmlzaW9uIGF3YXkgYXQgY29tcGlsZS10aW1lLiAgNjcxMDg4NjQgaXMgMioqMjYuICBJbgogICogZWZmZWN0LCBhIGNvbnRhaW5zIDI3IHJhbmRvbSBiaXRzIHNoaWZ0ZWQgbGVmdCAyNiwgYW5kIGIgZmlsbHMgaW4gdGhlCiAgKiBsb3dlciAyNiBiaXRzIG9mIHRoZSA1My1iaXQgbnVtZXJhdG9yLgotICogVGhlIG9yZ2luYWwgY29kZSBjcmVkaXRlZCBJc2FrdSBXYWRhIGZvciB0aGlzIGFsZ29yaXRobSwgMjAwMi8wMS8wOS4KKyAqIFRoZSBvcmlnaW5hbCBjb2RlIGNyZWRpdGVkIElzYWt1IFdhZGEgZm9yIHRoaXMgYWxnb3JpdGhtLCAyMDAyLzAxLzA5LgogICovCiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX3JhbmRvbShSYW5kb21PYmplY3QgKnNlbGYpCiB7Ci0gICAgUFlfVUlOVDMyX1QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CisgICAgdWludDMyX3QgYT1nZW5yYW5kX2ludDMyKHNlbGYpPj41LCBiPWdlbnJhbmRfaW50MzIoc2VsZik+PjY7CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoYSo2NzEwODg2NC4wK2IpKigxLjAvOTAwNzE5OTI1NDc0MDk5Mi4wKSk7CiB9CiAKIC8qIGluaXRpYWxpemVzIG10W05dIHdpdGggYSBzZWVkICovCiBzdGF0aWMgdm9pZAotaW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgcykKK2luaXRfZ2VucmFuZChSYW5kb21PYmplY3QgKnNlbGYsIHVpbnQzMl90IHMpCiB7CiAgICAgaW50IG10aTsKLSAgICBQWV9VSU5UMzJfVCAqbXQ7CisgICAgdWludDMyX3QgKm10OwogCiAgICAgbXQgPSBzZWxmLT5zdGF0ZTsKICAgICBtdFswXT0gczsKQEAgLTE2OSwxMSArMTY4LDExIEBACiAvKiBpbml0aWFsaXplIGJ5IGFuIGFycmF5IHdpdGggYXJyYXktbGVuZ3RoICovCiAvKiBpbml0X2tleSBpcyB0aGUgYXJyYXkgZm9yIGluaXRpYWxpemluZyBrZXlzICovCiAvKiBrZXlfbGVuZ3RoIGlzIGl0cyBsZW5ndGggKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1pbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgUFlfVUlOVDMyX1QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCitzdGF0aWMgdm9pZAoraW5pdF9ieV9hcnJheShSYW5kb21PYmplY3QgKnNlbGYsIHVpbnQzMl90IGluaXRfa2V5W10sIHNpemVfdCBrZXlfbGVuZ3RoKQogewogICAgIHNpemVfdCBpLCBqLCBrOyAgICAgICAvKiB3YXMgc2lnbmVkIGluIHRoZSBvcmlnaW5hbCBjb2RlLiBSREggMTIvMTYvMjAwMiAqLwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIGluaXRfZ2VucmFuZChzZWxmLCAxOTY1MDIxOFUpOwpAQCAtMTgxLDIxICsxODAsMTkgQEAKICAgICBrID0gKE4+a2V5X2xlbmd0aCA/IE4gOiBrZXlfbGVuZ3RoKTsKICAgICBmb3IgKDsgazsgay0tKSB7CiAgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE2NjQ1MjVVKSkKLSAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArIChQWV9VSU5UMzJfVClqOyAvKiBub24gbGluZWFyICovCisgICAgICAgICAgICAgICAgICsgaW5pdF9rZXlbal0gKyAodWludDMyX3QpajsgLyogbm9uIGxpbmVhciAqLwogICAgICAgICBpKys7IGorKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICAgICAgaWYgKGo+PWtleV9sZW5ndGgpIGo9MDsKICAgICB9CiAgICAgZm9yIChrPU4tMTsgazsgay0tKSB7CiAgICAgICAgIG10W2ldID0gKG10W2ldIF4gKChtdFtpLTFdIF4gKG10W2ktMV0gPj4gMzApKSAqIDE1NjYwODM5NDFVKSkKLSAgICAgICAgICAgICAgICAgLSAoUFlfVUlOVDMyX1QpaTsgLyogbm9uIGxpbmVhciAqLworICAgICAgICAgICAgICAgICAtICh1aW50MzJfdClpOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGk+PU4pIHsgbXRbMF0gPSBtdFtOLTFdOyBpPTE7IH0KICAgICB9CiAKICAgICBtdFswXSA9IDB4ODAwMDAwMDBVOyAvKiBNU0IgaXMgMTsgYXNzdXJpbmcgbm9uLXplcm8gaW5pdGlhbCBhcnJheSAqLwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAogLyoKQEAgLTIwMywxMiArMjAwLDQzIEBACiAgKiBUd2lzdGVyIGRvd25sb2FkLgogICovCiAKK3N0YXRpYyBpbnQKK3JhbmRvbV9zZWVkX3VyYW5kb20oUmFuZG9tT2JqZWN0ICpzZWxmKQoreworICAgIFBZX1VJTlQzMl9UIGtleVtOXTsKKworICAgIGlmIChfUHlPU19VUmFuZG9tTm9uYmxvY2soa2V5LCBzaXplb2Yoa2V5KSkgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIFB5X0FSUkFZX0xFTkdUSChrZXkpKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3JhbmRvbV9zZWVkX3RpbWVfcGlkKFJhbmRvbU9iamVjdCAqc2VsZikKK3sKKyAgICBfUHlUaW1lX3Qgbm93OworICAgIHVpbnQzMl90IGtleVs1XTsKKworICAgIG5vdyA9IF9QeVRpbWVfR2V0U3lzdGVtQ2xvY2soKTsKKyAgICBrZXlbMF0gPSAoUFlfVUlOVDMyX1QpKG5vdyAmIDB4ZmZmZmZmZmZVKTsKKyAgICBrZXlbMV0gPSAoUFlfVUlOVDMyX1QpKG5vdyA+PiAzMik7CisKKyAgICBrZXlbMl0gPSAoUFlfVUlOVDMyX1QpZ2V0cGlkKCk7CisKKyAgICBub3cgPSBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCk7CisgICAga2V5WzNdID0gKFBZX1VJTlQzMl9UKShub3cgJiAweGZmZmZmZmZmVSk7CisgICAga2V5WzRdID0gKFBZX1VJTlQzMl9UKShub3cgPj4gMzIpOworCisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIFB5X0FSUkFZX0xFTkdUSChrZXkpKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHJhbmRvbV9zZWVkKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7ICAgICAgICAgICAgLyogZ3VpbHR5IHVudGlsIHByb3ZlZCBpbm5vY2VudCAqLwogICAgIFB5T2JqZWN0ICpuID0gTlVMTDsKLSAgICBQWV9VSU5UMzJfVCAqa2V5ID0gTlVMTDsKKyAgICB1aW50MzJfdCAqa2V5ID0gTlVMTDsKICAgICBzaXplX3QgYml0cywga2V5dXNlZDsKICAgICBpbnQgcmVzOwogICAgIFB5T2JqZWN0ICphcmcgPSBOVUxMOwpAQCAtMjE2LDE0ICsyNDQsMTcgQEAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZWVkIiwgMCwgMSwgJmFyZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIHRpbWVfdCBub3c7CisgICAgIGlmIChhcmcgPT0gTlVMTCB8fCBhcmcgPT0gUHlfTm9uZSkgeworICAgICAgICBpZiAocmFuZG9tX3NlZWRfdXJhbmRvbShzZWxmKSA+PSAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHRpbWUoJm5vdyk7Ci0gICAgICAgIGluaXRfZ2VucmFuZChzZWxmLCAoUFlfVUlOVDMyX1Qpbm93KTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgICAgIC8qIFJlYWRpbmcgc3lzdGVtIGVudHJvcHkgZmFpbGVkLCBmYWxsIGJhY2sgb24gdGhlIHdvcnN0IGVudHJvcHk6CisgICAgICAgICAgICAgICB1c2UgdGhlIGN1cnJlbnQgdGltZSBhbmQgcHJvY2VzcyBpZGVudGlmaWVyLiAqLworICAgICAgICAgICAgcmFuZG9tX3NlZWRfdGltZV9waWQoc2VsZik7CisgICAgICAgIH0KKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQorCiAgICAgLyogVGhpcyBhbGdvcml0aG0gcmVsaWVzIG9uIHRoZSBudW1iZXIgYmVpbmcgdW5zaWduZWQuCiAgICAgICogU286IGlmIHRoZSBhcmcgaXMgYSBQeUxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWUuCiAgICAgICogT3RoZXJ3aXNlIHVzZSBpdHMgaGFzaCB2YWx1ZSwgY2FzdCB0byB1bnNpZ25lZC4KQEAgLTI0OCw3ICsyNzksNyBAQAogICAgIGtleXVzZWQgPSBiaXRzID09IDAgPyAxIDogKGJpdHMgLSAxKSAvIDMyICsgMTsKIAogICAgIC8qIENvbnZlcnQgc2VlZCB0byBieXRlIHNlcXVlbmNlLiAqLwotICAgIGtleSA9IChQWV9VSU5UMzJfVCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKKyAgICBrZXkgPSAodWludDMyX3QgKilQeU1lbV9NYWxsb2MoKHNpemVfdCk0ICoga2V5dXNlZCk7CiAgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTI2NywxMyArMjk4LDE3IEBACiAgICAgICAgIHNpemVfdCBpLCBqOwogICAgICAgICAvKiBSZXZlcnNlIGFuIGFycmF5LiAqLwogICAgICAgICBmb3IgKGkgPSAwLCBqID0ga2V5dXNlZCAtIDE7IGkgPCBqOyBpKyssIGotLSkgewotICAgICAgICAgICAgUFlfVUlOVDMyX1QgdG1wID0ga2V5W2ldOworICAgICAgICAgICAgdWludDMyX3QgdG1wID0ga2V5W2ldOwogICAgICAgICAgICAga2V5W2ldID0ga2V5W2pdOwogICAgICAgICAgICAga2V5W2pdID0gdG1wOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCi0gICAgcmVzdWx0ID0gaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIGtleXVzZWQpOworICAgIGluaXRfYnlfYXJyYXkoc2VsZiwga2V5LCBrZXl1c2VkKTsKKworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXN1bHQgPSBQeV9Ob25lOworCiBEb25lOgogICAgIFB5X1hERUNSRUYobik7CiAgICAgUHlNZW1fRnJlZShrZXkpOwpAQCAtMzI5LDcgKzM2NCw3IEBACiAgICAgICAgIGVsZW1lbnQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwogICAgICAgICBpZiAoZWxlbWVudCA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKFBZX1VJTlQzMl9UKWVsZW1lbnQ7CisgICAgICAgIHNlbGYtPnN0YXRlW2ldID0gKHVpbnQzMl90KWVsZW1lbnQ7CiAgICAgfQogCiAgICAgaW5kZXggPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpKTsKQEAgLTM0OSw4ICszODQsOCBAQAogcmFuZG9tX2dldHJhbmRiaXRzKFJhbmRvbU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IGssIGksIHdvcmRzOwotICAgIFBZX1VJTlQzMl9UIHI7Ci0gICAgUFlfVUlOVDMyX1QgKndvcmRhcnJheTsKKyAgICB1aW50MzJfdCByOworICAgIHVpbnQzMl90ICp3b3JkYXJyYXk7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXRyYW5kYml0cyIsICZrKSkKQEAgLTM2Niw3ICs0MDEsNyBAQAogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoZ2VucmFuZF9pbnQzMihzZWxmKSA+PiAoMzIgLSBrKSk7CiAKICAgICB3b3JkcyA9IChrIC0gMSkgLyAzMiArIDE7Ci0gICAgd29yZGFycmF5ID0gKFBZX1VJTlQzMl9UICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CisgICAgd29yZGFycmF5ID0gKHVpbnQzMl90ICopUHlNZW1fTWFsbG9jKHdvcmRzICogNCk7CiAgICAgaWYgKHdvcmRhcnJheSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2Nwcm94eS5jIGIvTW9kdWxlcy9fc2Nwcm94eS5jCmluZGV4IDY2YjZlMzQuLjFjZTRiNzcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NjcHJveHkuYworKysgYi9Nb2R1bGVzL19zY3Byb3h5LmMKQEAgLTcxLDE2ICs3MSwxMiBAQAogICAgIHJlc3VsdCA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoJmtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyAhPSBOVUxMKSB7Ci0gICAgICAgIGFOdW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3QsCi0gICAgICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOwotICAgICAgICBpZiAoYU51bSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKDApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZyhjZm51bV90b19pbnQzMihhTnVtKSk7Ci0gICAgICAgIH0KLSAgICB9ICBlbHNlIHsKKyAgICBhTnVtID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlEaWN0LAorICAgICAgICBrU0NQcm9wTmV0UHJveGllc0V4Y2x1ZGVTaW1wbGVIb3N0bmFtZXMpOworICAgIGlmIChhTnVtID09IE5VTEwpIHsKICAgICAgICAgdiA9IFB5Qm9vbF9Gcm9tTG9uZygwKTsKKyAgICB9IGVsc2UgeworICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKGNmbnVtX3RvX2ludDMyKGFOdW0pKTsKICAgICB9CiAKICAgICBpZiAodiA9PSBOVUxMKSBnb3RvIGVycm9yOwpAQCAtMTMwLDcgKzEyNiw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNldF9wcm94eShQeU9iamVjdCogcHJveGllcywgY2hhciogcHJvdG8sIENGRGljdGlvbmFyeVJlZiBwcm94eURpY3QsCitzZXRfcHJveHkoUHlPYmplY3QqIHByb3hpZXMsIGNvbnN0IGNoYXIqIHByb3RvLCBDRkRpY3Rpb25hcnlSZWYgcHJveHlEaWN0LAogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuYWJsZWRLZXksCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgaG9zdEtleSwgQ0ZTdHJpbmdSZWYgcG9ydEtleSkKIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dCBiL01vZHVsZXMvX3NoYTMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzRiMWQxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0tlY2NhayBDb2RlIFBhY2thZ2UKKz09PT09PT09PT09PT09PT09PT0KKworVGhlIGZpbGVzIGluIGtjcCBhcmUgdGFrZW4gZnJvbSB0aGUgS2VjY2FrIENvZGUgUGFja2FnZS4gVGhleSBoYXZlIGJlZW4KK3NsaWdodGx5IHRvIGJlIEM4OSBjb21wYXRpYmxlLiBUaGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGhlYWRlciBmaWxlCitLZWNjYWtQLTE2MDAtU25QLmggaGEgYmVlbiByZW5hbWVkIHRvIEtlY2Nha1AtMTYwMC1TblAtb3B0MzIuaCBvcgorS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oLgorCitUaGUgNjRiaXQgZmlsZXMgd2VyZSBnZW5lcmF0ZWQgd2l0aCBnZW5lcmljNjRsYy9saWJrZWNjYWsuYS5wYWNrIHRhcmdldCwgdGhlCiszMmJpdCBmaWxlcyB3aXRoIGdlbmVyaWMzMmxjL2xpYmtlY2Nhay5hLnBhY2suCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weSBiL01vZHVsZXMvX3NoYTMvY2xlYW51cC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xN2M1NmIzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5CkBAIC0wLDAgKzEsNTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgICBDaHJpc3RpYW4gSGVpbWVzIChjaHJpc3RpYW5AcHl0aG9uLm9yZykKKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorIworIyBjbGVhbnVwIEtlY2NhayBzb3VyY2VzCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0NQUDEgPSByZS5jb21waWxlKCJeLy8oLiopIikKK0NQUDIgPSByZS5jb21waWxlKCJcIC8vKC4qKSIpCisKK1NUQVRJQ1MgPSAoInZvaWQgIiwgImludCAiLCAiSGFzaFJldHVybiAiLAorICAgICAgICAgICAiY29uc3QgVUlOVDY0ICIsICJVSU5UMTYgIiwgIiAgICBpbnQgcHJlZml4IyMiKQorCitIRVJFID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCitLRUNDQUsgPSBvcy5wYXRoLmpvaW4oSEVSRSwgImtjcCIpCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoS0VDQ0FLKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihLRUNDQUssIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCitkZWYgY2xlYW51cChmKToKKyAgICBidWYgPSBbXQorICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICMgbWFyayBhbGwgZnVuY3Rpb25zIGFuZCBnbG9iYWwgZGF0YSBhcyBzdGF0aWMKKyAgICAgICAgI2lmIGxpbmUuc3RhcnRzd2l0aChTVEFUSUNTKToKKyAgICAgICAgIyAgICBidWYuYXBwZW5kKCJzdGF0aWMgIiArIGxpbmUpCisgICAgICAgICMgICAgY29udGludWUKKyAgICAgICAgIyByZW1vdmUgVUlOVDY0IHR5cGVkZWYsIHdlIGhhdmUgb3VyIG93bgorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoInR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCIpOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLyogJXMgKi9cbiIgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIyByZW1vdmUgI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIKKyAgICAgICAgaWYgImJyZ19lbmRpYW4uaCIgaW4gbGluZToKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIi8qICVzICovXG4iICUgbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgIyB0cmFuc2Zvcm0gQysrIGNvbW1lbnRzIGludG8gQU5TSSBDIGNvbW1lbnRzCisgICAgICAgIGxpbmUgPSBDUFAxLnN1YihyIi8qXDEgKi9cbiIsIGxpbmUpCisgICAgICAgIGxpbmUgPSBDUFAyLnN1YihyIiAvKlwxICovXG4iLCBsaW5lKQorICAgICAgICBidWYuYXBwZW5kKGxpbmUpCisgICAgcmV0dXJuICIiLmpvaW4oYnVmKQorCitmb3IgbmFtZSBpbiBnZXRmaWxlcygpOgorICAgIHdpdGggb3BlbihuYW1lKSBhcyBmOgorICAgICAgICByZXMgPSBjbGVhbnVwKGYpCisgICAgd2l0aCBvcGVuKG5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgZi53cml0ZShyZXMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaCBiL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ODhlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2NsaW5pYy9zaGEzbW9kdWxlLmMuaApAQCAtMCwwICsxLDE1NCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X3NoYTNfbmV3X19kb2NfXywKKyJzaGEzXzIyNChzdHJpbmc9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zaGEzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTNfMjI0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZGF0YSA9IE5VTEw7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkYXRhKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X3NoYTNfbmV3X2ltcGwodHlwZSwgZGF0YSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2NvcHlfX2RvY19fLAorImNvcHkoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4iKTsKKworI2RlZmluZSBfU0hBM19TSEEzXzIyNF9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2NvcHksIE1FVEhfTk9BUkdTLCBfc2hhM19zaGEzXzIyNF9jb3B5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfZGlnZXN0LCBNRVRIX05PQVJHUywgX3NoYTNfc2hhM18yMjRfZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdCwgTUVUSF9OT0FSR1MsIF9zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19fLAorInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVXBkYXRlIHRoaXMgaGFzaCBvYmplY3RcJ3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYgICAgXAorICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYTNfMjI0X3VwZGF0ZSwgTUVUSF9PLCBfc2hhM19zaGEzXzIyNF91cGRhdGVfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBS0VfMTI4X0RJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYWtlXzEyOF9kaWdlc3QsIE1FVEhfRkFTVENBTEwsIF9zaGEzX3NoYWtlXzEyOF9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiazpkaWdlc3QiLCBfa2V5d29yZHMsIDB9OworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZW5ndGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKHNlbGYsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfX2RvY19fLAorImhleGRpZ2VzdCgkc2VsZiwgLywgbGVuZ3RoKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9TSEEzX1NIQUtFXzEyOF9IRVhESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImhleGRpZ2VzdCIsIChQeUNGdW5jdGlvbilfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ims6aGV4ZGlnZXN0IiwgX2tleXdvcmRzLCAwfTsKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGVuZ3RoKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChzZWxmLCBsZW5ndGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTg4OGJlYWI0NTEzNmE1NiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5ZmI0MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYwpAQCAtMCwwICsxLDgyIEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiS2VjY2FrSGFzaC5oIgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hJbml0aWFsaXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpCit7CisgICAgSGFzaFJldHVybiByZXN1bHQ7CisKKyAgICBpZiAoZGVsaW1pdGVkU3VmZml4ID09IDApCisgICAgICAgIHJldHVybiBGQUlMOworICAgIHJlc3VsdCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCZpbnN0YW5jZS0+c3BvbmdlLCByYXRlLCBjYXBhY2l0eSk7CisgICAgaWYgKHJlc3VsdCAhPSBTVUNDRVNTKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGluc3RhbmNlLT5maXhlZE91dHB1dExlbmd0aCA9IGhhc2hiaXRsZW47CisgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IGRlbGltaXRlZFN1ZmZpeDsKKyAgICByZXR1cm4gU1VDQ0VTUzsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoVXBkYXRlKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKQoreworICAgIGlmICgoZGF0YWJpdGxlbiAlIDgpID09IDApCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiKCZpbnN0YW5jZS0+c3BvbmdlLCBkYXRhLCBkYXRhYml0bGVuLzgpOworICAgIGVsc2UgeworICAgICAgICBIYXNoUmV0dXJuIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7CisgICAgICAgIGlmIChyZXQgPT0gU1VDQ0VTUykgeworICAgICAgICAgICAgLyogVGhlIGxhc3QgcGFydGlhbCBieXRlIGlzIGFzc3VtZWQgdG8gYmUgYWxpZ25lZCBvbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyAqLworCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGxhc3RCeXRlID0gZGF0YVtkYXRhYml0bGVuLzhdOworICAgICAgICAgICAgLyogQ29uY2F0ZW5hdGUgdGhlIGxhc3QgZmV3IGJpdHMgcHJvdmlkZWQgaGVyZSB3aXRoIHRob3NlIG9mIHRoZSBzdWZmaXggKi8KKworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgZGVsaW1pdGVkTGFzdEJ5dGVzID0gKHVuc2lnbmVkIHNob3J0KSgodW5zaWduZWQgc2hvcnQpbGFzdEJ5dGUgfCAoKHVuc2lnbmVkIHNob3J0KWluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPDwgKGRhdGFiaXRsZW4gJSA4KSkpOworICAgICAgICAgICAgaWYgKChkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGMDApID09IDB4MDAwMCkgeworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBvbmVCeXRlWzFdOworICAgICAgICAgICAgICAgIG9uZUJ5dGVbMF0gPSBkZWxpbWl0ZWRMYXN0Qnl0ZXMgJiAweEZGOworICAgICAgICAgICAgICAgIHJldCA9IChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIG9uZUJ5dGUsIDEpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXggPSAoZGVsaW1pdGVkTGFzdEJ5dGVzID4+IDgpICYgMHhGRjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoRmluYWwoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKQoreworICAgIEhhc2hSZXR1cm4gcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCZpbnN0YW5jZS0+c3BvbmdlLCBpbnN0YW5jZS0+ZGVsaW1pdGVkU3VmZml4KTsKKyAgICBpZiAocmV0ID09IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgmaW5zdGFuY2UtPnNwb25nZSwgaGFzaHZhbCwgaW5zdGFuY2UtPmZpeGVkT3V0cHV0TGVuZ3RoLzgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHJldDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoU3F1ZWV6ZShLZWNjYWtfSGFzaEluc3RhbmNlICppbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbikKK3sKKyAgICBpZiAoKGRhdGFiaXRsZW4gJSA4KSAhPSAwKQorICAgICAgICByZXR1cm4gRkFJTDsKKyAgICByZXR1cm4gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZVNxdWVlemUoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtIYXNoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkM2RjNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaApAQCAtMCwwICsxLDExNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworI2RlZmluZSBfS2VjY2FrSGFzaEludGVyZmFjZV9oXworCisjaWZuZGVmIEtlY2Nha1AxNjAwX2V4Y2x1ZGVkCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIEJpdFNlcXVlbmNlOwordHlwZWRlZiBzaXplX3QgRGF0YUxlbmd0aDsKK3R5cGVkZWYgZW51bSB7IFNVQ0NFU1MgPSAwLCBGQUlMID0gMSwgQkFEX0hBU0hMRU4gPSAyIH0gSGFzaFJldHVybjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbnN0YW5jZSBzcG9uZ2U7CisgICAgdW5zaWduZWQgaW50IGZpeGVkT3V0cHV0TGVuZ3RoOworICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkU3VmZml4OworfSBLZWNjYWtfSGFzaEluc3RhbmNlOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBpbml0aWFsaXplIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uIGluc3RhbmNlIHVzZWQgaW4gc2VxdWVudGlhbCBoYXNoaW5nIG1vZGUuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSB0byBiZSBpbml0aWFsaXplZC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaGFzaGJpdGxlbiAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBiaXRzLAorICAqICAgICAgICAgICAgICAgICAgICAgb3IgMCBmb3IgYW4gYXJiaXRyYXJpbHktbG9uZyBvdXRwdXQuCisgICogQHBhcmFtICBkZWxpbWl0ZWRTdWZmaXggQml0cyB0aGF0IHdpbGwgYmUgYXV0b21hdGljYWxseSBhcHBlbmRlZCB0byB0aGUgZW5kCisgICogICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGlucHV0IG1lc3NhZ2UsIGFzIGluIGRvbWFpbiBzZXBhcmF0aW9uLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBieXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCBsaWtlIHRoZSBAYSBkZWxpbWl0ZWREYXRhIHBhcmFtZXRlciBvZgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBLZWNjYWtfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBmdW5jdGlvbi4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjPTE2MDAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaEluaXRpYWxpemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaGFzaEluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCB1bnNpZ25lZCBpbnQgaGFzaGJpdGxlbiwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXgpOworCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQUtFMTI4IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTEyOChoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMzQ0LCAgMjU2LCAgIDAsIDB4MUYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBS0UyNTYgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMjU2KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEwODgsICA1MTIsICAgMCwgMHgxRikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTIyNCBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yMjQoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgMTE1MiwgIDQ0OCwgMjI0LCAweDA2KQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtMjU2IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzI1NihoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMDg4LCAgNTEyLCAyNTYsIDB4MDYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBMy0zODQgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMzg0KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsICA4MzIsICA3NjgsIDM4NCwgMHgwNikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTUxMiBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM181MTIoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgIDU3NiwgMTAyNCwgNTEyLCAweDA2KQorCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgdG8gYmUgYWJzb3JiZWQuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IGRhdGEuCisgICogICAgICAgICAgICAgICAgICAgICBXaGVuIEBhIGRhdGFiaXRMZW4gaXMgbm90IGEgbXVsdGlwbGUgb2YgOCwgdGhlIGxhc3QgYml0cyBvZiBkYXRhIG11c3QgYmUKKyAgKiAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIG9mIHRoZSBsYXN0IGJ5dGUgKGxpdHRsZS1lbmRpYW4gY29udmVudGlvbikuCisgICogQHBhcmFtICBkYXRhYml0TGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJpdHMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBJbiB0aGUgcHJldmlvdXMgY2FsbCB0byBLZWNjYWtfSGFzaFVwZGF0ZSgpLCBkYXRhYml0bGVuIHdhcyBhIG11bHRpcGxlIG9mIDguCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaFVwZGF0ZShLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBjYWxsIGFmdGVyIGFsbCBpbnB1dCBibG9ja3MgaGF2ZSBiZWVuIGlucHV0IGFuZCB0byBnZXQKKyAgKiBvdXRwdXQgYml0cyBpZiB0aGUgbGVuZ3RoIHdhcyBzcGVjaWZpZWQgd2hlbiBjYWxsaW5nIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgaGFzaEluc3RhbmNlICAgIFBvaW50ZXIgdG8gdGhlIGhhc2ggaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgS2VjY2FrX0hhc2hJbml0aWFsaXplKCkuCisgICogSWYgQGEgaGFzaGJpdGxlbiB3YXMgbm90IDAgaW4gdGhlIGNhbGwgdG8gS2VjY2FrX0hhc2hJbml0aWFsaXplKCksIHRoZSBudW1iZXIgb2YKKyAgKiAgICAgb3V0cHV0IGJpdHMgaXMgZXF1YWwgdG8gQGEgaGFzaGJpdGxlbi4KKyAgKiBJZiBAYSBoYXNoYml0bGVuIHdhcyAwIGluIHRoZSBjYWxsIHRvIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLCB0aGUgb3V0cHV0IGJpdHMKKyAgKiAgICAgbXVzdCBiZSBleHRyYWN0ZWQgdXNpbmcgdGhlIEtlY2Nha19IYXNoU3F1ZWV6ZSgpIGZ1bmN0aW9uLgorICAqIEBwYXJhbSAgc3RhdGUgICAgICAgUG9pbnRlciB0byB0aGUgc3RhdGUgb2YgdGhlIHNwb25nZSBmdW5jdGlvbiBpbml0aWFsaXplZCBieSBJbml0KCkuCisgICogQHBhcmFtICBoYXNodmFsICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hGaW5hbChLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIEJpdFNlcXVlbmNlICpoYXNodmFsKTsKKworIC8qKgorICAqIEZ1bmN0aW9uIHRvIHNxdWVlemUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBkYXRhYml0bGVuICBUaGUgbnVtYmVyIG9mIG91dHB1dCBiaXRzIGRlc2lyZWQgKG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4KS4KKyAgKiBAcHJlICAgIEtlY2Nha19IYXNoRmluYWwoKSBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGNhbGxlZC4KKyAgKiBAcHJlICAgIEBhIGRhdGFiaXRsZW4gaXMgYSBtdWx0aXBsZSBvZiA4LgorICAqIEByZXR1cm4gU1VDQ0VTUyBpZiBzdWNjZXNzZnVsLCBGQUlMIG90aGVyd2lzZS4KKyAgKi8KK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hTcXVlZXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbik7CisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMTFmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtNjQubWFjcm9zCkBAIC0wLDAgKzEsMjIwOCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBkZWNsYXJlQUJDREUgXAorICAgIFVJTlQ2NCBBYmEsIEFiZSwgQWJpLCBBYm8sIEFidTsgXAorICAgIFVJTlQ2NCBBZ2EsIEFnZSwgQWdpLCBBZ28sIEFndTsgXAorICAgIFVJTlQ2NCBBa2EsIEFrZSwgQWtpLCBBa28sIEFrdTsgXAorICAgIFVJTlQ2NCBBbWEsIEFtZSwgQW1pLCBBbW8sIEFtdTsgXAorICAgIFVJTlQ2NCBBc2EsIEFzZSwgQXNpLCBBc28sIEFzdTsgXAorICAgIFVJTlQ2NCBCYmEsIEJiZSwgQmJpLCBCYm8sIEJidTsgXAorICAgIFVJTlQ2NCBCZ2EsIEJnZSwgQmdpLCBCZ28sIEJndTsgXAorICAgIFVJTlQ2NCBCa2EsIEJrZSwgQmtpLCBCa28sIEJrdTsgXAorICAgIFVJTlQ2NCBCbWEsIEJtZSwgQm1pLCBCbW8sIEJtdTsgXAorICAgIFVJTlQ2NCBCc2EsIEJzZSwgQnNpLCBCc28sIEJzdTsgXAorICAgIFVJTlQ2NCBDYSwgQ2UsIENpLCBDbywgQ3U7IFwKKyAgICBVSU5UNjQgRGEsIERlLCBEaSwgRG8sIER1OyBcCisgICAgVUlOVDY0IEViYSwgRWJlLCBFYmksIEVibywgRWJ1OyBcCisgICAgVUlOVDY0IEVnYSwgRWdlLCBFZ2ksIEVnbywgRWd1OyBcCisgICAgVUlOVDY0IEVrYSwgRWtlLCBFa2ksIEVrbywgRWt1OyBcCisgICAgVUlOVDY0IEVtYSwgRW1lLCBFbWksIEVtbywgRW11OyBcCisgICAgVUlOVDY0IEVzYSwgRXNlLCBFc2ksIEVzbywgRXN1OyBcCisKKyNkZWZpbmUgcHJlcGFyZVRoZXRhIFwKKyAgICBDYSA9IEFiYV5BZ2FeQWthXkFtYV5Bc2E7IFwKKyAgICBDZSA9IEFiZV5BZ2VeQWtlXkFtZV5Bc2U7IFwKKyAgICBDaSA9IEFiaV5BZ2leQWtpXkFtaV5Bc2k7IFwKKyAgICBDbyA9IEFib15BZ29eQWtvXkFtb15Bc287IFwKKyAgICBDdSA9IEFidV5BZ3VeQWt1XkFtdV5Bc3U7IFwKKworI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSl8ICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXiggIEJiYSAmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCAgQmdpICYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCAgQmdhICYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCAgQm1lICYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAofkJtbyleKCAgQm11ICYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICh+QnNlKV4oICBCc2kgfCAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oICBCc2EgJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAtLS0gQ29kZSBmb3Igcm91bmQgKGxhbmUgY29tcGxlbWVudGluZyBwYXR0ZXJuICdiZWJpZ29raW1pc2EnKSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oICBCYmUgfCAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKXwgIEJibyApOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCAgQmJvICYgIEJidSApOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCAgQmJ1IHwgIEJiYSApOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCAgQmJhICYgIEJiZSApOyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oICBCZ2UgfCAgQmdpICk7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oICBCZ2kgJiAgQmdvICk7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oICBCZ28gfCh+Qmd1KSk7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oICBCZ3UgfCAgQmdhICk7IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oICBCZ2EgJiAgQmdlICk7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oICBCa2UgfCAgQmtpICk7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oICBCa2kgJiAgQmtvICk7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBFIyNrbyA9ICh+QmtvKV4oICBCa3UgfCAgQmthICk7IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oICBCa2EgJiAgQmtlICk7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oICBCbWUgJiAgQm1pICk7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oICBCbWkgfCAgQm1vICk7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pfCAgQm11ICk7IFwKKyAgICBFIyNtbyA9ICh+Qm1vKV4oICBCbXUgJiAgQm1hICk7IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oICBCbWEgfCAgQm1lICk7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIEUjI3NlID0gKH5Cc2UpXiggIEJzaSB8ICBCc28gKTsgXAorICAgIEUjI3NpID0gICBCc2kgXiggIEJzbyAmICBCc3UgKTsgXAorICAgIEUjI3NvID0gICBCc28gXiggIEJzdSB8ICBCc2EgKTsgXAorICAgIEUjI3N1ID0gICBCc3UgXiggIEJzYSAmICBCc2UgKTsgXAorXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworLyogLS0tIENvZGUgZm9yIHJvdW5kLCB3aXRoIHByZXBhcmUtdGhldGEgKi8KKworLyogLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisKKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIENhID0gRSMjYmE7IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBDZSA9IEUjI2JlOyBcCisgICAgRSMjYmkgPSAgIEJiaSBeKCh+QmJvKSYgIEJidSApOyBcCisgICAgQ2kgPSBFIyNiaTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIENvID0gRSMjYm87IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKKyAgICBDdSA9IEUjI2J1OyBcCitcCisgICAgQSMjYm8gXj0gRG87IFwKKyAgICBCZ2EgPSBST0w2NChBIyNibywgMjgpOyBcCisgICAgQSMjZ3UgXj0gRHU7IFwKKyAgICBCZ2UgPSBST0w2NChBIyNndSwgMjApOyBcCisgICAgQSMja2EgXj0gRGE7IFwKKyAgICBCZ2kgPSBST0w2NChBIyNrYSwgMyk7IFwKKyAgICBBIyNtZSBePSBEZTsgXAorICAgIEJnbyA9IFJPTDY0KEEjI21lLCA0NSk7IFwKKyAgICBBIyNzaSBePSBEaTsgXAorICAgIEJndSA9IFJPTDY0KEEjI3NpLCA2MSk7IFwKKyAgICBFIyNnYSA9ICAgQmdhIF4oKH5CZ2UpJiAgQmdpICk7IFwKKyAgICBDYSBePSBFIyNnYTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIENlIF49IEUjI2dlOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgQ2kgXj0gRSMjZ2k7IFwKKyAgICBFIyNnbyA9ICAgQmdvIF4oKH5CZ3UpJiAgQmdhICk7IFwKKyAgICBDbyBePSBFIyNnbzsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorICAgIEN1IF49IEUjI2d1OyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgQ2EgXj0gRSMja2E7IFwKKyAgICBFIyNrZSA9ICAgQmtlIF4oKH5Ca2kpJiAgQmtvICk7IFwKKyAgICBDZSBePSBFIyNrZTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIENpIF49IEUjI2tpOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgQ28gXj0gRSMja287IFwKKyAgICBFIyNrdSA9ICAgQmt1IF4oKH5Ca2EpJiAgQmtlICk7IFwKKyAgICBDdSBePSBFIyNrdTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIENhIF49IEUjI21hOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgQ2UgXj0gRSMjbWU7IFwKKyAgICBFIyNtaSA9ICAgQm1pIF4oKH5CbW8pJiAgQm11ICk7IFwKKyAgICBDaSBePSBFIyNtaTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIENvIF49IEUjI21vOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCisgICAgQ3UgXj0gRSMjbXU7IFwKK1wKKyAgICBBIyNiaSBePSBEaTsgXAorICAgIEJzYSA9IFJPTDY0KEEjI2JpLCA2Mik7IFwKKyAgICBBIyNnbyBePSBEbzsgXAorICAgIEJzZSA9IFJPTDY0KEEjI2dvLCA1NSk7IFwKKyAgICBBIyNrdSBePSBEdTsgXAorICAgIEJzaSA9IFJPTDY0KEEjI2t1LCAzOSk7IFwKKyAgICBBIyNtYSBePSBEYTsgXAorICAgIEJzbyA9IFJPTDY0KEEjI21hLCA0MSk7IFwKKyAgICBBIyNzZSBePSBEZTsgXAorICAgIEJzdSA9IFJPTDY0KEEjI3NlLCAyKTsgXAorICAgIEUjI3NhID0gICBCc2EgXigofkJzZSkmICBCc2kgKTsgXAorICAgIENhIF49IEUjI3NhOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgQ2UgXj0gRSMjc2U7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBDaSBePSBFIyNzaTsgXAorICAgIEUjI3NvID0gICBCc28gXigofkJzdSkmICBCc2EgKTsgXAorICAgIENvIF49IEUjI3NvOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCisgICAgQ3UgXj0gRSMjc3U7IFwKK1wKKworLyogLS0tIENvZGUgZm9yIHJvdW5kICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXigofkJiZSkmICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpJiAgQmJvICk7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oKH5CYm8pJiAgQmJ1ICk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oKH5CYnUpJiAgQmJhICk7IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oKH5CYmEpJiAgQmJlICk7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXigofkJnZSkmICBCZ2kgKTsgXAorICAgIEUjI2dlID0gICBCZ2UgXigofkJnaSkmICBCZ28gKTsgXAorICAgIEUjI2dpID0gICBCZ2kgXigofkJnbykmICBCZ3UgKTsgXAorICAgIEUjI2dvID0gICBCZ28gXigofkJndSkmICBCZ2EgKTsgXAorICAgIEUjI2d1ID0gICBCZ3UgXigofkJnYSkmICBCZ2UgKTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXigofkJrZSkmICBCa2kgKTsgXAorICAgIEUjI2tlID0gICBCa2UgXigofkJraSkmICBCa28gKTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIEUjI2tvID0gICBCa28gXigofkJrdSkmICBCa2EgKTsgXAorICAgIEUjI2t1ID0gICBCa3UgXigofkJrYSkmICBCa2UgKTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXigofkJtZSkmICBCbWkgKTsgXAorICAgIEUjI21lID0gICBCbWUgXigofkJtaSkmICBCbW8gKTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbykmICBCbXUgKTsgXAorICAgIEUjI21vID0gICBCbW8gXigofkJtdSkmICBCbWEgKTsgXAorICAgIEUjI211ID0gICBCbXUgXigofkJtYSkmICBCbWUgKTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgRSMjc2UgPSAgIEJzZSBeKCh+QnNpKSYgIEJzbyApOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCh+QnNvKSYgIEJzdSApOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCh+QnN1KSYgIEJzYSApOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCh+QnNhKSYgIEJzZSApOyBcCitcCisKKyNlbmRpZiAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlGcm9tU3RhdGUoWCwgc3RhdGUpIFwKKyAgICBYIyNiYSA9IHN0YXRlWyAwXTsgXAorICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgWCMjYmkgPSBzdGF0ZVsgMl07IFwKKyAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgIFgjI2dpID0gc3RhdGVbIDddOyBcCisgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICBYIyNtYSA9IHN0YXRlWzE1XTsgXAorICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorCisjZGVmaW5lIGNvcHlUb1N0YXRlKHN0YXRlLCBYKSBcCisgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKworI2RlZmluZSBjb3B5U3RhdGVWYXJpYWJsZXMoWCwgWSkgXAorICAgIFgjI2JhID0gWSMjYmE7IFwKKyAgICBYIyNiZSA9IFkjI2JlOyBcCisgICAgWCMjYmkgPSBZIyNiaTsgXAorICAgIFgjI2JvID0gWSMjYm87IFwKKyAgICBYIyNidSA9IFkjI2J1OyBcCisgICAgWCMjZ2EgPSBZIyNnYTsgXAorICAgIFgjI2dlID0gWSMjZ2U7IFwKKyAgICBYIyNnaSA9IFkjI2dpOyBcCisgICAgWCMjZ28gPSBZIyNnbzsgXAorICAgIFgjI2d1ID0gWSMjZ3U7IFwKKyAgICBYIyNrYSA9IFkjI2thOyBcCisgICAgWCMja2UgPSBZIyNrZTsgXAorICAgIFgjI2tpID0gWSMja2k7IFwKKyAgICBYIyNrbyA9IFkjI2tvOyBcCisgICAgWCMja3UgPSBZIyNrdTsgXAorICAgIFgjI21hID0gWSMjbWE7IFwKKyAgICBYIyNtZSA9IFkjI21lOyBcCisgICAgWCMjbWkgPSBZIyNtaTsgXAorICAgIFgjI21vID0gWSMjbW87IFwKKyAgICBYIyNtdSA9IFkjI211OyBcCisgICAgWCMjc2EgPSBZIyNzYTsgXAorICAgIFgjI3NlID0gWSMjc2U7IFwKKyAgICBYIyNzaSA9IFkjI3NpOyBcCisgICAgWCMjc28gPSBZIyNzbzsgXAorICAgIFgjI3N1ID0gWSMjc3U7IFwKKworI2RlZmluZSBjb3B5RnJvbVN0YXRlQW5kQWRkKFgsIHN0YXRlLCBpbnB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNibyA9IHN0YXRlWyAzXTsgXAorICAgICAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdOyBcCisgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgIFgjI2JvID0gc3RhdGVbIDNdXmlucHV0WyAzXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdXmlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdOyBcCisgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XTsgXAorICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdOyBcCisgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICBYIyNiZSA9IHN0YXRlWyAxXV5pbnB1dFsgMV07IFwKKyAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgICAgICBYIyNnaSA9IHN0YXRlWyA3XV5pbnB1dFsgN107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF1eaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXV5pbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgICAgIFgjI21pID0gc3RhdGVbMTddOyBcCisgICAgICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgIFgjI3NvID0gc3RhdGVbMjNdOyBcCisgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICBYIyNiaSA9IHN0YXRlWyAyXV5pbnB1dFsgMl07IFwKKyAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICBYIyNnYSA9IHN0YXRlWyA1XV5pbnB1dFsgNV07IFwKKyAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICBYIyNrZSA9IHN0YXRlWzExXV5pbnB1dFsxMV07IFwKKyAgICAgICAgWCMja2kgPSBzdGF0ZVsxMl1eaW5wdXRbMTJdOyBcCisgICAgICAgIFgjI2tvID0gc3RhdGVbMTNdXmlucHV0WzEzXTsgXAorICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XV5pbnB1dFsxNF07IFwKKyAgICAgICAgWCMjbWEgPSBzdGF0ZVsxNV1eaW5wdXRbMTVdOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN11eaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNtdSA9IHN0YXRlWzE5XTsgXAorICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211ID0gc3RhdGVbMTldXmlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdXmlucHV0WzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICAgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdXmlucHV0WzE4XTsgXAorICAgICAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV1eaW5wdXRbMTldOyBcCisgICAgICAgICAgICBYIyNzYSA9IHN0YXRlWzIwXV5pbnB1dFsyMF07IFwKKyAgICAgICAgICAgIFgjI3NlID0gc3RhdGVbMjFdXmlucHV0WzIxXTsgXAorICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl1eaW5wdXRbMjJdOyBcCisgICAgICAgICAgICBYIyNzbyA9IHN0YXRlWzIzXV5pbnB1dFsyM107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSA9IHN0YXRlWzI0XV5pbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgYWRkSW5wdXQoWCwgaW5wdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPT0gMjEpIHsgXAorICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICBYIyNibyBePSBpbnB1dFsgM107IFwKKyAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICBYIyNnZSBePSBpbnB1dFsgNl07IFwKKyAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgWCMja2EgXj0gaW5wdXRbMTBdOyBcCisgICAgICAgIFgjI2tlIF49IGlucHV0WzExXTsgXAorICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgIFgjI2t1IF49IGlucHV0WzE0XTsgXAorICAgICAgICBYIyNtYSBePSBpbnB1dFsxNV07IFwKKyAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgWCMjbXUgXj0gaW5wdXRbMTldOyBcCisgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgIH0gXAorICAgIGVsc2UgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IGlucHV0WyA0XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgWCMjYmUgXj0gaW5wdXRbIDFdOyBcCisgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICAgICAgWCMjZ2kgXj0gaW5wdXRbIDddOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICBYIyNndSBePSBpbnB1dFsgOV07IFwKKyAgICAgICAgICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgICAgICAgICBYIyNrZSBePSBpbnB1dFsxMV07IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNraSBePSBpbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gaW5wdXRbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgWCMjZ2EgXj0gaW5wdXRbIDVdOyBcCisgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgWCMja2UgXj0gaW5wdXRbMTFdOyBcCisgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgIFgjI21hIF49IGlucHV0WzE1XTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgICAgIFgjI21vIF49IGlucHV0WzE4XTsgXAorICAgICAgICAgICAgICAgIFgjI211IF49IGlucHV0WzE5XTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSBpbnB1dFsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgICAgIFgjI21pIF49IGlucHV0WzE3XTsgXAorICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICBYIyNtdSBePSBpbnB1dFsxOV07IFwKKyAgICAgICAgICAgIFgjI3NhIF49IGlucHV0WzIwXTsgXAorICAgICAgICAgICAgWCMjc2UgXj0gaW5wdXRbMjFdOyBcCisgICAgICAgICAgICBYIyNzaSBePSBpbnB1dFsyMl07IFwKKyAgICAgICAgICAgIFgjI3NvIF49IGlucHV0WzIzXTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSBpbnB1dFsyNF07IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNpZmRlZiBVc2VCZWJpZ29raW1pc2EKKworI2RlZmluZSBjb3B5VG9TdGF0ZUFuZE91dHB1dChYLCBzdGF0ZSwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBvdXRwdXRbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgb3V0cHV0KFgsIG91dHB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNV0gPSBYIyNtYTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyNSkgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSBYIyNuYW1lOworCisjZGVmaW5lIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBYIyNuYW1lIF49IGlucHV0W2luZGV4XTsgXAorICAgIG91dHB1dFtpbmRleF0gPSB+WCMjbmFtZTsKKworI2RlZmluZSB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2RlZmluZSB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gfihpbnB1dFtpbmRleF0gXiBYIyNuYW1lKTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsgXAorCisjZWxzZSAvKiBVc2VCZWJpZ29raW1pc2EgKi8KKworCisjZGVmaW5lIGNvcHlUb1N0YXRlQW5kT3V0cHV0KFgsIHN0YXRlLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIHN0YXRlWzE1XSA9IFgjI21hOyBcCisgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBzdGF0ZVsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgb3V0cHV0WzEyXT0gWCMja2k7IFwKKyAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIHN0YXRlWzI0XSA9IFgjI3N1OyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBvdXRwdXQoWCwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgIG91dHB1dFsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNkZWZpbmUgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgb3V0cHV0W2luZGV4XSA9IGlucHV0W2luZGV4XSBeIFgjI25hbWU7IFwKKyAgICBYIyNuYW1lIF49IG91dHB1dFtpbmRleF07CisKKyNlbmRpZgorCisjZGVmaW5lIHdyYXAoWCwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCB0cmFpbGluZ0JpdHMpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21hIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTEsIGtlKSBcCisgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTQsIGt1KSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTUsIG1hKSBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMSwgc2UpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMywgc28pIFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNSkgeyBcCisgICAgICAgICAgICAgICAgWCMjc3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyNCwgc3UpIFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgdW53cmFwKFgsIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgdHJhaWxpbmdCaXRzKSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2d1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEwLCBrYSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEzLCBrbykgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNywgZ2kpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA5LCBndSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE1LCBtYSkgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbXUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOSwgbXUpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE4LCBtbykgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIyLCBzaSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIzLCBzbykgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjQsIHN1KSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZjc2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uICAgICAgImluLXBsYWNlIDMyLWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24iCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlU2l6ZUluQnl0ZXMgICAgMjAwCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlQWxpZ25tZW50ICAgICAgOAorCisjZGVmaW5lIEtlY2Nha1AxNjAwX1N0YXRpY0luaXRpYWxpemUoKQordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KTsKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OWEzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmgKQEAgLTAsMCArMSw0OSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrUF8xNjAwX1NuUF9oXworI2RlZmluZSBfS2VjY2FrUF8xNjAwX1NuUF9oXworCisvKiogRm9yIHRoZSBkb2N1bWVudGF0aW9uLCBzZWUgU25QLWRvY3VtZW50YXRpb24uaC4KKyAqLworCisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCIKKworI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbiAgICAgICJnZW5lcmljIDY0LWJpdCBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb24gKCIgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb25fY29uZmlnICIpIgorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZVNpemVJbkJ5dGVzICAgIDIwMAorI2RlZmluZSBLZWNjYWtQMTYwMF9zdGF0ZUFsaWdubWVudCAgICAgIDgKKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3Bfc3VwcG9ydGVkCisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworI2RlZmluZSBLZWNjYWtQMTYwMF9TdGF0aWNJbml0aWFsaXplKCkKK3ZvaWQgS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZSh2b2lkICpzdGF0ZSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZShzdGF0ZSwgYnl0ZSwgb2Zmc2V0KSBcCisgICAgKCh1bnNpZ25lZCBjaGFyKikoc3RhdGUpKVsob2Zmc2V0KV0gXj0gKGJ5dGUpCisjZWxzZQordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQpOworI2VuZGlmCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHModm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOworc2l6ZV90IEtlY2Nha0YxNjAwX0Zhc3RMb29wX0Fic29yYih2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyM2YwOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaApAQCAtMCwwICsxLDcgQEAKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAtb3B0NjQuaCIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIgorI2Vsc2UKKyAgI2Vycm9yICJObyBLZWNjYWtPcHQiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJmOWZmZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jCkBAIC0wLDAgKzEsMTE2MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgICAgPHN0cmluZy5oPgorLyogI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIgKi8KKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisjaW5jbHVkZSAiU25QLVJlbGFuZWQuaCIKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OwordHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDMyOworLyogV0FSTklORzogb24gOC1iaXQgYW5kIDE2LWJpdCBwbGF0Zm9ybXMsIHRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5OiAqLworCisvKnR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICBVSU5UMzI7ICovCisKKworI2RlZmluZSBST0wzMihhLCBvZmZzZXQpICgoKChVSU5UMzIpYSkgPDwgKG9mZnNldCkpIF4gKCgoVUlOVDMyKWEpID4+ICgzMi0ob2Zmc2V0KSkpKQorCisvKiBDcmVkaXQgdG8gSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworCisjZGVmaW5lIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChsb3cpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAxID0gKGhpZ2gpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOworCisjZGVmaW5lIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGV2ZW4gXj0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCBePSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7CisKKyNkZWZpbmUgdG9CaXRJbnRlcmxlYXZpbmdBbmRBTkQobG93LCBoaWdoLCBldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlVG9CaXRJbnRlcmxlYXZpbmcobG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgZXZlbiAmPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkICY9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworI2RlZmluZSB0b0JpdEludGVybGVhdmluZ0FuZFNldChsb3csIGhpZ2gsIGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBldmVuID0gKHRlbXAwICYgMHgwMDAwRkZGRikgfCAodGVtcDEgPDwgMTYpOyBcCisgICAgICAgIG9kZCA9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworLyogQ3JlZGl0IHRvIEhlbnJ5IFMuIFdhcnJlbiwgSGFja2VyJ3MgRGVsaWdodCwgQWRkaXNvbi1XZXNsZXksIDIwMDIgKi8KKworI2RlZmluZSBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICB0ZW1wMCA9IChldmVuKTsgXAorICAgICAgICB0ZW1wMSA9IChvZGQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgdGVtcDEgPSAodGVtcDAgPj4gMTYpIHwgKHRlbXAxICYgMHhGRkZGMDAwMCk7IFwKKyAgICAgICAgdGVtcDAgPSB0ZW1wOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDAgXiAodGVtcDAgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAwID0gdGVtcDAgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDgpKSAmIDB4MDAwMEZGMDBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDgpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDQpKSAmIDB4MDBGMDAwRjBVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDQpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDIpKSAmIDB4MEMwQzBDMENVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDIpOyBcCisgICAgICAgIHRlbXAgPSAodGVtcDEgXiAodGVtcDEgPj4gIDEpKSAmIDB4MjIyMjIyMjJVTDsgIHRlbXAxID0gdGVtcDEgXiB0ZW1wIF4gKHRlbXAgPDwgIDEpOworCisjZGVmaW5lIGZyb21CaXRJbnRlcmxlYXZpbmcoZXZlbiwgb2RkLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlRnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBsb3cgPSB0ZW1wMDsgXAorICAgICAgICBoaWdoID0gdGVtcDE7CisKKyNkZWZpbmUgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUihldmVuLCBvZGQsIGxvd0luLCBoaWdoSW4sIGxvd091dCwgaGlnaE91dCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGxvd091dCA9IGxvd0luIF4gdGVtcDA7IFwKKyAgICAgICAgaGlnaE91dCA9IGhpZ2hJbiBeIHRlbXAxOworCit2b2lkIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMHhGRiwgb2Zmc2V0KTsKKyAgICBtZW1zZXQobGFuZUFzQnl0ZXMrb2Zmc2V0LCAweDAwLCBsZW5ndGgpOworICAgIG1lbXNldChsYW5lQXNCeXRlcytvZmZzZXQrbGVuZ3RoLCAweEZGLCA4LW9mZnNldC1sZW5ndGgpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgbG93ID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgIGhpZ2ggPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisjZWxzZQorICAgIGxvdyA9IGxhbmVBc0J5dGVzWzBdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzNdKSA8PCAyNCk7CisgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s2XSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisjZW5kaWYKKyAgICB0b0JpdEludGVybGVhdmluZ0FuZEFORChsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKQoreworICAgIG1lbXNldChzdGF0ZSwgMCwgMjAwKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uID0gb2Zmc2V0Lzg7CisgICAgdW5zaWduZWQgaW50IG9mZnNldEluTGFuZSA9IG9mZnNldCU4OworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIGlmIChvZmZzZXRJbkxhbmUgPCA0KSB7CisgICAgICAgIGxvdyA9IChVSU5UMzIpYnl0ZSA8PCAob2Zmc2V0SW5MYW5lKjgpOworICAgICAgICBoaWdoID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxvdyA9IDA7CisgICAgICAgIGhpZ2ggPSAoVUlOVDMyKWJ5dGUgPDwgKChvZmZzZXRJbkxhbmUtNCkqOCk7CisgICAgfQorICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMiswXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIFVJTlQzMiBsb3csIGhpZ2g7CisgICAgVUlOVDMyIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKworICAgIG1lbXNldChsYW5lQXNCeXRlcywgMCwgOCk7CisgICAgbWVtY3B5KGxhbmVBc0J5dGVzK29mZnNldCwgZGF0YSwgbGVuZ3RoKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGxvdyA9ICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKTsKKyAgICBoaWdoID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworI2Vsc2UKKyAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1sxXSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgIGhpZ2ggPSBsYW5lQXNCeXRlc1s0XQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s3XSkgPDwgMjQpOworI2VuZGlmCisgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBjb25zdCBVSU5UMzIgKiBwSSA9IChjb25zdCBVSU5UMzIgKilkYXRhOworICAgIFVJTlQzMiAqIHBTID0gKFVJTlQzMiopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kWE9SKCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHN0YXRlLCBsYW5lUG9zaXRpb24sIG9mZnNldCwgbGVuZ3RoKTsKKyAgICBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgbGFuZVBvc2l0aW9uLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWRhdGE7CisgICAgVUlOVDMyICogcFMgPSAoVUlOVDMyICopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBtZW1jcHkoJmxvdywgcEkrKywgNCk7CisgICAgICAgIG1lbWNweSgmaGlnaCwgcEkrKywgNCk7CisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KGxvdywgaGlnaCwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKTsKKyNlbHNlCisgICAgICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KCoocEkrKyksICoocEkrKyksICoocFMrKyksICoocFMrKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lczsKKyAgICAgICAgbWVtY3B5KGxhbmVBc0J5dGVzLCBkYXRhK2xhbmVQb3NpdGlvbio4LCA4KTsKKyAgICAgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICAgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s1XSkgPDwgOCkKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGJ5dGVDb3VudC84OyBpKyspIHsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lc1tpKjIrMF0gPSAwOworICAgICAgICBzdGF0ZUFzSGFsZkxhbmVzW2kqMisxXSA9IDA7CisgICAgfQorICAgIGlmIChieXRlQ291bnQlOCAhPSAwKQorICAgICAgICBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyhzdGF0ZSwgYnl0ZUNvdW50LzgsIDAsIGJ5dGVDb3VudCU4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisKKyAgICBmcm9tQml0SW50ZXJsZWF2aW5nKHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjJdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcyswKSkgPSBsb3c7CisgICAgKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpID0gaGlnaDsKKyNlbHNlCisgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMl0gPSAobG93ID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s1XSA9IChoaWdoID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworI2VuZGlmCisgICAgbWVtY3B5KGRhdGEsIGxhbmVBc0J5dGVzK29mZnNldCwgbGVuZ3RoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIFVJTlQzMiAqIHBJID0gKFVJTlQzMiAqKWRhdGE7CisgICAgY29uc3QgVUlOVDMyICogcFMgPSAoIGNvbnN0IFVJTlQzMiAqKXN0YXRlOworICAgIFVJTlQzMiB0LCB4MCwgeDE7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gbGFuZUNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisjaWZkZWYgTk9fTUlTQUxJR05FRF9BQ0NFU1NFUworICAgICAgICBVSU5UMzIgbG93OworICAgICAgICBVSU5UMzIgaGlnaDsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCBsb3csIGhpZ2gsIHQsIHgwLCB4MSk7CisgICAgICAgIG1lbWNweShwSSsrLCAmbG93LCA0KTsKKyAgICAgICAgbWVtY3B5KHBJKyssICZoaWdoLCA0KTsKKyNlbHNlCisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgKihwSSsrKSwgKihwSSsrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMF0gPSBsb3cgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1sxXSA9IChsb3cgPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbM10gPSAobG93ID4+IDI0KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzRdID0gaGlnaCAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s2XSA9IChoaWdoID4+IDE2KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzddID0gKGhpZ2ggPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbWVtY3B5KGRhdGErbGFuZVBvc2l0aW9uKjgsIGxhbmVBc0J5dGVzLCA4KTsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKSA9IGxvdzsKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSkgPSBoaWdoOworI2Vsc2UKKyAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisjZW5kaWYKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIGxhbmVBc0J5dGVzW29mZnNldCtpXTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWlucHV0OworICAgIFVJTlQzMiAqIHBPID0gKFVJTlQzMiAqKW91dHB1dDsKKyAgICBjb25zdCBVSU5UMzIgKiBwUyA9IChjb25zdCBVSU5UMzIgKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoKihwUysrKSwgKihwUysrKSwgbG93LCBoaWdoLCB0LCB4MCwgeDEpOworICAgICAgICAqKHBPKyspID0gKihwSSsrKSBeIGxvdzsKKyAgICAgICAgKihwTysrKSA9ICoocEkrKykgXiBoaWdoOworI2Vsc2UKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZ0FuZFhPUigqKHBTKyspLCAqKHBTKyspLCAqKHBJKyspLCAqKHBJKyspLCAqKHBPKyspLCAqKHBPKyspLCB0LCB4MCwgeDEpCisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisgICAgZm9yKGxhbmVQb3NpdGlvbj0wOyBsYW5lUG9zaXRpb248bGFuZUNvdW50OyBsYW5lUG9zaXRpb24rKykgeworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgICAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgICAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzBdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgICAgICAoKFVJTlQzMiopKG91dHB1dCtsYW5lUG9zaXRpb24qOCkpWzFdID0gKChVSU5UMzIqKShpbnB1dCtsYW5lUG9zaXRpb24qOCkpWzBdIF4gKCooY29uc3QgVUlOVDMyKikobGFuZUFzQnl0ZXMrNCkpOworICAgIH0KKyNlbmRpZgorfQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3N0YXRpYyBjb25zdCBVSU5UMzIgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyWzIqMjQrMV0gPQoreworICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4OVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwMDA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDAwYVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4MlVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODA4YlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDAwYlVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4YVVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4MVVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDAwOFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHgwMDAwMDA4M1VMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODAwM1VMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHg4MDAwODA4OFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwMDA4OFVMLAorICAgIDB4MDAwMDAwMDFVTCwgICAgMHgwMDAwODAwMFVMLAorICAgIDB4MDAwMDAwMDBVTCwgICAgMHg4MDAwODA4MlVMLAorICAgIDB4MDAwMDAwRkZVTAorfTsKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMCgpIFwKKyAgICAgICAgQ3ggPSBBYnUwXkFndTBeQWt1MF5BbXUwXkFzdTA7IFwKKyAgICAgICAgRHUxID0gQWJlMV5BZ2UxXkFrZTFeQW1lMV5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYnUxXkFndTFeQWt1MV5BbXUxXkFzdTE7IFwKKyAgICAgICAgRHUwID0gQWJlMF5BZ2UwXkFrZTBeQW1lMF5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFiaTBeQWdpMF5Ba2kwXkFtaTBeQXNpMDsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBYmkxXkFnaTFeQWtpMV5BbWkxXkFzaTE7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFnYTBeQWthMF5BbWEwXkFzYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BZ2ExXkFrYTFeQW1hMV5Bc2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWJvMV5BZ28xXkFrbzFeQW1vMV5Bc28xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBYm8wXkFnbzBeQWtvMF5BbW8wXkFzbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQxKCkgXAorICAgICAgICBDeCA9IEFzdTBeQWd1MF5BbXUwXkFidTFeQWt1MTsgXAorICAgICAgICBEdTEgPSBBZ2UxXkFtZTBeQWJlMF5Ba2UxXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFzdTFeQWd1MV5BbXUxXkFidTBeQWt1MDsgXAorICAgICAgICBEdTAgPSBBZ2UwXkFtZTFeQWJlMV5Ba2UwXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQWtpMV5Bc2kxXkFnaTBeQW1pMV5BYmkwOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFraTBeQXNpMF5BZ2kxXkFtaTBeQWJpMTsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQWthMV5Bc2EwXkFnYTBeQW1hMTsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFrYTBeQXNhMV5BZ2ExXkFtYTA7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBbW8wXkFibzFeQWtvMF5Bc28xXkFnbzA7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFtbzFeQWJvMF5Ba28xXkFzbzBeQWdvMTsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKKyNkZWZpbmUgS2VjY2FrQXRvRF9yb3VuZDIoKSBcCisgICAgICAgIEN4ID0gQWt1MV5BZ3UwXkFidTFeQXN1MV5BbXUxOyBcCisgICAgICAgIER1MSA9IEFtZTBeQWtlMF5BZ2UwXkFiZTBeQXNlMTsgXAorICAgICAgICBEYTAgPSBDeF5ST0wzMihEdTEsIDEpOyBcCisgICAgICAgIEN6ID0gQWt1MF5BZ3UxXkFidTBeQXN1MF5BbXUwOyBcCisgICAgICAgIER1MCA9IEFtZTFeQWtlMV5BZ2UxXkFiZTFeQXNlMDsgXAorICAgICAgICBEYTEgPSBDel5EdTA7IFwKK1wKKyAgICAgICAgQ3cgPSBBZ2kxXkFiaTFeQXNpMV5BbWkwXkFraTE7IFwKKyAgICAgICAgRG8wID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIEN5ID0gQWdpMF5BYmkwXkFzaTBeQW1pMV5Ba2kwOyBcCisgICAgICAgIERvMSA9IEN5XkN4OyBcCitcCisgICAgICAgIEN4ID0gQWJhMF5Bc2ExXkFtYTFeQWthMV5BZ2ExOyBcCisgICAgICAgIERlMCA9IEN4XlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDeiA9IEFiYTFeQXNhMF5BbWEwXkFrYTBeQWdhMDsgXAorICAgICAgICBEZTEgPSBDel5DdzsgXAorXAorICAgICAgICBDeSA9IEFzbzBeQW1vMF5Ba28xXkFnbzBeQWJvMDsgXAorICAgICAgICBEaTAgPSBEdTBeUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN3ID0gQXNvMV5BbW8xXkFrbzBeQWdvMV5BYm8xOyBcCisgICAgICAgIERpMSA9IER1MV5DdzsgXAorXAorICAgICAgICBEdTAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgRHUxID0gQ3leQ3g7IFwKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMygpIFwKKyAgICAgICAgQ3ggPSBBbXUxXkFndTBeQXN1MV5Ba3UwXkFidTA7IFwKKyAgICAgICAgRHUxID0gQWtlMF5BYmUxXkFtZTFeQWdlMF5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBbXUwXkFndTFeQXN1MF5Ba3UxXkFidTE7IFwKKyAgICAgICAgRHUwID0gQWtlMV5BYmUwXkFtZTBeQWdlMV5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFzaTBeQWtpMF5BYmkxXkFtaTFeQWdpMTsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBc2kxXkFraTFeQWJpMF5BbWkwXkFnaTA7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFtYTBeQWdhMV5Bc2ExXkFrYTA7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5BbWExXkFnYTBeQXNhMF5Ba2ExOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQWdvMV5Bc28wXkFrbzBeQWJvMF5BbW8xOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBZ28wXkFzbzFeQWtvMV5BYm8xXkFtbzA7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IG5Sb3VuZHMpCit7CisgICAgeworICAgICAgICBVSU5UMzIgRGEwLCBEZTAsIERpMCwgRG8wLCBEdTA7CisgICAgICAgIFVJTlQzMiBEYTEsIERlMSwgRGkxLCBEbzEsIER1MTsKKyAgICAgICAgVUlOVDMyIENhMCwgQ2UwLCBDaTAsIENvMCwgQ3UwOworICAgICAgICBVSU5UMzIgQ3gsIEN5LCBDeiwgQ3c7CisgICAgICAgICNkZWZpbmUgQmEgQ2EwCisgICAgICAgICNkZWZpbmUgQmUgQ2UwCisgICAgICAgICNkZWZpbmUgQmkgQ2kwCisgICAgICAgICNkZWZpbmUgQm8gQ28wCisgICAgICAgICNkZWZpbmUgQnUgQ3UwCisgICAgICAgIGNvbnN0IFVJTlQzMiAqcFJvdW5kQ29uc3RhbnRzID0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c19pbnQyKygyNC1uUm91bmRzKSoyOworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgI2RlZmluZSBBYmEwIHN0YXRlQXNIYWxmTGFuZXNbIDBdCisgICAgICAgICNkZWZpbmUgQWJhMSBzdGF0ZUFzSGFsZkxhbmVzWyAxXQorICAgICAgICAjZGVmaW5lIEFiZTAgc3RhdGVBc0hhbGZMYW5lc1sgMl0KKyAgICAgICAgI2RlZmluZSBBYmUxIHN0YXRlQXNIYWxmTGFuZXNbIDNdCisgICAgICAgICNkZWZpbmUgQWJpMCBzdGF0ZUFzSGFsZkxhbmVzWyA0XQorICAgICAgICAjZGVmaW5lIEFiaTEgc3RhdGVBc0hhbGZMYW5lc1sgNV0KKyAgICAgICAgI2RlZmluZSBBYm8wIHN0YXRlQXNIYWxmTGFuZXNbIDZdCisgICAgICAgICNkZWZpbmUgQWJvMSBzdGF0ZUFzSGFsZkxhbmVzWyA3XQorICAgICAgICAjZGVmaW5lIEFidTAgc3RhdGVBc0hhbGZMYW5lc1sgOF0KKyAgICAgICAgI2RlZmluZSBBYnUxIHN0YXRlQXNIYWxmTGFuZXNbIDldCisgICAgICAgICNkZWZpbmUgQWdhMCBzdGF0ZUFzSGFsZkxhbmVzWzEwXQorICAgICAgICAjZGVmaW5lIEFnYTEgc3RhdGVBc0hhbGZMYW5lc1sxMV0KKyAgICAgICAgI2RlZmluZSBBZ2UwIHN0YXRlQXNIYWxmTGFuZXNbMTJdCisgICAgICAgICNkZWZpbmUgQWdlMSBzdGF0ZUFzSGFsZkxhbmVzWzEzXQorICAgICAgICAjZGVmaW5lIEFnaTAgc3RhdGVBc0hhbGZMYW5lc1sxNF0KKyAgICAgICAgI2RlZmluZSBBZ2kxIHN0YXRlQXNIYWxmTGFuZXNbMTVdCisgICAgICAgICNkZWZpbmUgQWdvMCBzdGF0ZUFzSGFsZkxhbmVzWzE2XQorICAgICAgICAjZGVmaW5lIEFnbzEgc3RhdGVBc0hhbGZMYW5lc1sxN10KKyAgICAgICAgI2RlZmluZSBBZ3UwIHN0YXRlQXNIYWxmTGFuZXNbMThdCisgICAgICAgICNkZWZpbmUgQWd1MSBzdGF0ZUFzSGFsZkxhbmVzWzE5XQorICAgICAgICAjZGVmaW5lIEFrYTAgc3RhdGVBc0hhbGZMYW5lc1syMF0KKyAgICAgICAgI2RlZmluZSBBa2ExIHN0YXRlQXNIYWxmTGFuZXNbMjFdCisgICAgICAgICNkZWZpbmUgQWtlMCBzdGF0ZUFzSGFsZkxhbmVzWzIyXQorICAgICAgICAjZGVmaW5lIEFrZTEgc3RhdGVBc0hhbGZMYW5lc1syM10KKyAgICAgICAgI2RlZmluZSBBa2kwIHN0YXRlQXNIYWxmTGFuZXNbMjRdCisgICAgICAgICNkZWZpbmUgQWtpMSBzdGF0ZUFzSGFsZkxhbmVzWzI1XQorICAgICAgICAjZGVmaW5lIEFrbzAgc3RhdGVBc0hhbGZMYW5lc1syNl0KKyAgICAgICAgI2RlZmluZSBBa28xIHN0YXRlQXNIYWxmTGFuZXNbMjddCisgICAgICAgICNkZWZpbmUgQWt1MCBzdGF0ZUFzSGFsZkxhbmVzWzI4XQorICAgICAgICAjZGVmaW5lIEFrdTEgc3RhdGVBc0hhbGZMYW5lc1syOV0KKyAgICAgICAgI2RlZmluZSBBbWEwIHN0YXRlQXNIYWxmTGFuZXNbMzBdCisgICAgICAgICNkZWZpbmUgQW1hMSBzdGF0ZUFzSGFsZkxhbmVzWzMxXQorICAgICAgICAjZGVmaW5lIEFtZTAgc3RhdGVBc0hhbGZMYW5lc1szMl0KKyAgICAgICAgI2RlZmluZSBBbWUxIHN0YXRlQXNIYWxmTGFuZXNbMzNdCisgICAgICAgICNkZWZpbmUgQW1pMCBzdGF0ZUFzSGFsZkxhbmVzWzM0XQorICAgICAgICAjZGVmaW5lIEFtaTEgc3RhdGVBc0hhbGZMYW5lc1szNV0KKyAgICAgICAgI2RlZmluZSBBbW8wIHN0YXRlQXNIYWxmTGFuZXNbMzZdCisgICAgICAgICNkZWZpbmUgQW1vMSBzdGF0ZUFzSGFsZkxhbmVzWzM3XQorICAgICAgICAjZGVmaW5lIEFtdTAgc3RhdGVBc0hhbGZMYW5lc1szOF0KKyAgICAgICAgI2RlZmluZSBBbXUxIHN0YXRlQXNIYWxmTGFuZXNbMzldCisgICAgICAgICNkZWZpbmUgQXNhMCBzdGF0ZUFzSGFsZkxhbmVzWzQwXQorICAgICAgICAjZGVmaW5lIEFzYTEgc3RhdGVBc0hhbGZMYW5lc1s0MV0KKyAgICAgICAgI2RlZmluZSBBc2UwIHN0YXRlQXNIYWxmTGFuZXNbNDJdCisgICAgICAgICNkZWZpbmUgQXNlMSBzdGF0ZUFzSGFsZkxhbmVzWzQzXQorICAgICAgICAjZGVmaW5lIEFzaTAgc3RhdGVBc0hhbGZMYW5lc1s0NF0KKyAgICAgICAgI2RlZmluZSBBc2kxIHN0YXRlQXNIYWxmTGFuZXNbNDVdCisgICAgICAgICNkZWZpbmUgQXNvMCBzdGF0ZUFzSGFsZkxhbmVzWzQ2XQorICAgICAgICAjZGVmaW5lIEFzbzEgc3RhdGVBc0hhbGZMYW5lc1s0N10KKyAgICAgICAgI2RlZmluZSBBc3UwIHN0YXRlQXNIYWxmTGFuZXNbNDhdCisgICAgICAgICNkZWZpbmUgQXN1MSBzdGF0ZUFzSGFsZkxhbmVzWzQ5XQorCisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIC0tLSBDb2RlIGZvciA0IHJvdW5kcyAqLworCisgICAgICAgICAgICAvKiAtLS0gdXNpbmcgZmFjdG9yIDIgaW50ZXJsZWF2aW5nLCA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDMyLWJpdCB3b3JkcyAqLworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMCgpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFraTFeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1vMV5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc3UwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtpMF5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbW8wXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzdTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMV5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTFeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWthMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWthMF5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNpMF5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYm8xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFiZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbXUwXkR1MCksIDQpOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNhMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFiZTBeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnaTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28wXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ2EwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNvMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYnUxXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtlMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTBeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFidTBeRHUwKSwgMTMpOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMV5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTFeRHUxKSwgMjApOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1hMF5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ28wXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrdTBeRHUwKSwgMTkpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgS2VjY2FrQXRvRF9yb3VuZDEoKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMF5EYTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1lMV5EZTApLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2kxXkRpMSksIDIyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzbzFeRG8xKSwgMTEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWt1MV5EdTApLCA3KTsKKyAgICAgICAgICAgIEFiYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMCBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCYSA9IChBYmExXkRhMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWUwXkRlMSksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnaTBeRGkwKSwgMjEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNvMF5EbzApLCAxMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa3UwXkR1MSksIDcpOworICAgICAgICAgICAgQWJhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTFeRGExKSwgMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UxXkRlMSksIDIzKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTFeRGkxKSwgMzEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMV5EbzApLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UwXkR1MCksIDEwKTsKKyAgICAgICAgICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzYTBeRGEwKSwgMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2UwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFiaTBeRGkwKSwgMzApOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1vMF5EbzEpLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UxXkR1MSksIDEwKTsKKyAgICAgICAgICAgIEFzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTFeRGEwKSwgOSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNpMV5EaTApLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8xKSwgMTMpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJ1MV5EdTApLCA0KTsKKyAgICAgICAgICAgIEFtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWdlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBc2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtYTBeRGExKSwgOSk7CisgICAgICAgICAgICBCYSA9IChBZ2UwXkRlMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2kwXkRpMSksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMV5EbzApLCAxMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYnUwXkR1MSksIDQpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQWthMV5EYTApLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYmUxXkRlMCksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTEpLCA4KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnbzFeRG8wKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXN1MV5EdTEpLCAxNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2EwXkRhMSksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiZTBeRGUxKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkxXkRpMCksIDcpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdvMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc3UwXkR1MCksIDEzKTsKKyAgICAgICAgICAgIEFrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTFeRGExKSwgMjEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMF5EZTApLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTFeRGkwKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMV5EbzEpLCAyOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUxXkR1MSksIDIwKTsKKyAgICAgICAgICAgIEFnYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnYTBeRGEwKSwgMjApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFraTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJvMF5EbzApLCAyNyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbXUwXkR1MCksIDE5KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQyKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFrZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNpMF5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBZ28wXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtdTFeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtlMF5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBc2kxXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnbzFeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW11MF5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWEwXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMF5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzFeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWExXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2kxXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzbzBeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2ExXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW1lMF5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiaTFeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFzdTFeRHUwKSwgNCk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2EwXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQW1lMV5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJpMF5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXN1MF5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFnYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzYTFeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdlMV5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYm8xXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrdTBeRHUxKSwgMTQpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNhMF5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2UwXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFibzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWt1MV5EdTApLCAxMyk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2EwXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kxXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MF5EdTEpLCAyMCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa2ExXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtbzFeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJ1MV5EdTApLCAxOSk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMygpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYmUwXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiaTBeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWJvMF5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBYnUwXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiZTFeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJpMV5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYm8xXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFidTFeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBYmUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMF5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTBeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMF5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28wXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdhMV5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnZTFeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdpMV5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBZ28xXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMF5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFrZTBeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2kwXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBa3UwXkR1MCksIDQpOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQWthMV5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFrZTFeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFraTFeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrdTFeRHUxKSwgNCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWEwXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtZTBeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1vMF5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbXUwXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFtYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtYTFeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQW1lMV5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbW8xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFtdTFeRHUwKSwgMTMpOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMF5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMF5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28wXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTBeRHUxKSwgMjApOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNhMV5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc28xXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzdTFeRHUwKSwgMTkpOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoICpwUm91bmRDb25zdGFudHMgIT0gMHhGRiApOworCisgICAgICAgICN1bmRlZiBBYmEwCisgICAgICAgICN1bmRlZiBBYmExCisgICAgICAgICN1bmRlZiBBYmUwCisgICAgICAgICN1bmRlZiBBYmUxCisgICAgICAgICN1bmRlZiBBYmkwCisgICAgICAgICN1bmRlZiBBYmkxCisgICAgICAgICN1bmRlZiBBYm8wCisgICAgICAgICN1bmRlZiBBYm8xCisgICAgICAgICN1bmRlZiBBYnUwCisgICAgICAgICN1bmRlZiBBYnUxCisgICAgICAgICN1bmRlZiBBZ2EwCisgICAgICAgICN1bmRlZiBBZ2ExCisgICAgICAgICN1bmRlZiBBZ2UwCisgICAgICAgICN1bmRlZiBBZ2UxCisgICAgICAgICN1bmRlZiBBZ2kwCisgICAgICAgICN1bmRlZiBBZ2kxCisgICAgICAgICN1bmRlZiBBZ28wCisgICAgICAgICN1bmRlZiBBZ28xCisgICAgICAgICN1bmRlZiBBZ3UwCisgICAgICAgICN1bmRlZiBBZ3UxCisgICAgICAgICN1bmRlZiBBa2EwCisgICAgICAgICN1bmRlZiBBa2ExCisgICAgICAgICN1bmRlZiBBa2UwCisgICAgICAgICN1bmRlZiBBa2UxCisgICAgICAgICN1bmRlZiBBa2kwCisgICAgICAgICN1bmRlZiBBa2kxCisgICAgICAgICN1bmRlZiBBa28wCisgICAgICAgICN1bmRlZiBBa28xCisgICAgICAgICN1bmRlZiBBa3UwCisgICAgICAgICN1bmRlZiBBa3UxCisgICAgICAgICN1bmRlZiBBbWEwCisgICAgICAgICN1bmRlZiBBbWExCisgICAgICAgICN1bmRlZiBBbWUwCisgICAgICAgICN1bmRlZiBBbWUxCisgICAgICAgICN1bmRlZiBBbWkwCisgICAgICAgICN1bmRlZiBBbWkxCisgICAgICAgICN1bmRlZiBBbW8wCisgICAgICAgICN1bmRlZiBBbW8xCisgICAgICAgICN1bmRlZiBBbXUwCisgICAgICAgICN1bmRlZiBBbXUxCisgICAgICAgICN1bmRlZiBBc2EwCisgICAgICAgICN1bmRlZiBBc2ExCisgICAgICAgICN1bmRlZiBBc2UwCisgICAgICAgICN1bmRlZiBBc2UxCisgICAgICAgICN1bmRlZiBBc2kwCisgICAgICAgICN1bmRlZiBBc2kxCisgICAgICAgICN1bmRlZiBBc28wCisgICAgICAgICN1bmRlZiBBc28xCisgICAgICAgICN1bmRlZiBBc3UwCisgICAgICAgICN1bmRlZiBBc3UxCisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICAgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzKHN0YXRlLCAxMik7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgICBLZWNjYWtQMTYwMF9QZXJtdXRlX05yb3VuZHMoc3RhdGUsIDI0KTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC1jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTAxYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oCkBAIC0wLDAgKzEsMyBAQAorI2RlZmluZSBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbl9jb25maWcgImxhbmUgY29tcGxlbWVudGluZywgYWxsIHJvdW5kcyB1bnJvbGxlZCIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworI2RlZmluZSBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTAwMTBkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LmMKQEAgLTAsMCArMSw0NzQgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKy8qICNpbmNsdWRlICJicmdfZW5kaWFuLmgiICovCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIgorCisjaWYgTk9UX1BZVEhPTgordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworLyogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IFVJTlQ2NDsgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZChLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZykKKyNkZWZpbmUgVXNlQmViaWdva2ltaXNhCisjZW5kaWYKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgX3JvdGw2NChhLCBvZmZzZXQpCisjZWxpZiBkZWZpbmVkKEtlY2Nha1AxNjAwX3VzZVNITEQpCisgICAgI2RlZmluZSBST0w2NCh4LE4pICh7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19vdXQ7IFwKKyAgICByZWdpc3RlciBVSU5UNjQgX19pbiA9IHg7IFwKKyAgICBfX2FzbV9fICgic2hsZCAlMiwlMCwlMCIgOiAiPXIiKF9fb3V0KSA6ICIwIihfX2luKSwgImkiKE4pKTsgXAorICAgIF9fb3V0OyBcCisgICAgfSkKKyNlbHNlCisjZGVmaW5lIFJPTDY0KGEsIG9mZnNldCkgKCgoKFVJTlQ2NClhKSA8PCBvZmZzZXQpIF4gKCgoVUlOVDY0KWEpID4+ICg2NC1vZmZzZXQpKSkKKyNlbmRpZgorCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLTY0Lm1hY3JvcyIKKyNpZmRlZiBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisjZGVmaW5lIEZ1bGxVbnJvbGxpbmcKKyNlbHNlCisjZGVmaW5lIFVucm9sbGluZyBLZWNjYWtQMTYwMF91bnJvbGxpbmcKKyNlbmRpZgorI2luY2x1ZGUgIktlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zIgorI2luY2x1ZGUgIlNuUC1SZWxhbmVkLmgiCisKK3N0YXRpYyBjb25zdCBVSU5UNjQgS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1syNF0gPSB7CisgICAgMHgwMDAwMDAwMDAwMDAwMDAxVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4MlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwOGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDAwVUxMLAorICAgIDB4MDAwMDAwMDAwMDAwODA4YlVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMDFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDA4MDgxVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwOGFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDAwMDg4VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwODAwOVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDAwMGFVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4YlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODlVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAzVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODAwMlVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDAwODBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDgwVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDhVTEwgfTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpCit7CisgICAgbWVtc2V0KHN0YXRlLCAwLCAyMDApOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgKChVSU5UNjQqKXN0YXRlKVsgMV0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDJdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyA4XSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMTddID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzIwXSA9IH4oVUlOVDY0KTA7CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgVUlOVDY0IGxhbmU7CisgICAgaWYgKGxlbmd0aCA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICBsYW5lID0gZGF0YVswXTsKKyAgICBlbHNlIHsKKyAgICAgICAgbGFuZSA9IDA7CisgICAgICAgIG1lbWNweSgmbGFuZSwgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisgICAgbGFuZSA8PD0gb2Zmc2V0Kjg7CisjZWxzZQorICAgIFVJTlQ2NCBsYW5lID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICBsYW5lIHw9ICgoVUlOVDY0KWRhdGFbaV0pIDw8ICgoaStvZmZzZXQpKjgpOworI2VuZGlmCisgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dIF49IGxhbmU7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHVuc2lnbmVkIGludCBpID0gMDsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgLyogSWYgZWl0aGVyIHBvaW50ZXIgaXMgbWlzYWxpZ25lZCwgZmFsbCBiYWNrIHRvIGJ5dGUtd2lzZSB4b3IuICovCisKKyAgICBpZiAoKCgoKHVpbnRwdHJfdClzdGF0ZSkgJiA3KSAhPSAwKSB8fCAoKCgodWludHB0cl90KWRhdGEpICYgNykgIT0gMCkpIHsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBsYW5lQ291bnQgKiA4OyBpKyspIHsKKyAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbaV0gXj0gZGF0YVtpXTsKKyAgICAgIH0KKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgLyogT3RoZXJ3aXNlLi4uICovCisKKyAgICAgIGZvciggOyAoaSs4KTw9bGFuZUNvdW50OyBpKz04KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs0XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs0XTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krNV0gXj0gKChVSU5UNjQqKWRhdGEpW2krNV07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzZdIF49ICgoVUlOVDY0KilkYXRhKVtpKzZdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs3XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs3XTsKKyAgICAgIH0KKyAgICAgIGZvciggOyAoaSs0KTw9bGFuZUNvdW50OyBpKz00KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsxXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsxXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMl0gXj0gKChVSU5UNjQqKWRhdGEpW2krMl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzNdIF49ICgoVUlOVDY0KilkYXRhKVtpKzNdOworICAgICAgfQorICAgICAgZm9yKCA7IChpKzIpPD1sYW5lQ291bnQ7IGkrPTIpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgfQorICAgICAgaWYgKGk8bGFuZUNvdW50KSB7CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzBdIF49ICgoVUlOVDY0KilkYXRhKVtpKzBdOworICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgVUlOVDggKmN1ckRhdGEgPSBkYXRhOworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyssIGN1ckRhdGErPTgpIHsKKyAgICAgICAgVUlOVDY0IGxhbmUgPSAoVUlOVDY0KWN1ckRhdGFbMF0KKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVsxXSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzJdIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzNdIDw8IDI0KQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzRdIDw8MzIpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNV0gPDwgNDApCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNl0gPDwgNDgpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbN10gPDwgNTYpOworICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2ldIF49IGxhbmU7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9IGJ5dGU7CisgICAgbGFuZSA8PD0gKG9mZnNldCU4KSo4OworICAgICgoVUlOVDY0KilzdGF0ZSlbb2Zmc2V0LzhdIF49IGxhbmU7Cit9CisjZW5kaWYKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0FkZExhbmVzLCBLZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlc0luTGFuZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKSB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilzdGF0ZSlbbGFuZVBvc2l0aW9uKjgrb2Zmc2V0K2ldID0gfmRhdGFbaV07CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgIHsKKyAgICAgICAgbWVtY3B5KCh1bnNpZ25lZCBjaGFyKilzdGF0ZStsYW5lUG9zaXRpb24qOCtvZmZzZXQsIGRhdGEsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKQorICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSB+KChjb25zdCBVSU5UNjQqKWRhdGEpW2xhbmVQb3NpdGlvbl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9ICgoY29uc3QgVUlOVDY0KilkYXRhKVtsYW5lUG9zaXRpb25dOworI2Vsc2UKKyAgICBtZW1jcHkoc3RhdGUsIGRhdGEsIGxhbmVDb3VudCo4KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMsIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxieXRlQ291bnQvODsgbGFuZVBvc2l0aW9uKyspCisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IH4wOworICAgICAgICBlbHNlCisgICAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gPSAwOworICAgIGlmIChieXRlQ291bnQlOCAhPSAwKSB7CisgICAgICAgIGxhbmVQb3NpdGlvbiA9IGJ5dGVDb3VudC84OworICAgICAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpCisgICAgICAgICAgICBtZW1zZXQoKHVuc2lnbmVkIGNoYXIqKXN0YXRlK2xhbmVQb3NpdGlvbio4LCAweEZGLCBieXRlQ291bnQlOCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbXNldCgodW5zaWduZWQgY2hhciopc3RhdGUrbGFuZVBvc2l0aW9uKjgsIDAsIGJ5dGVDb3VudCU4KTsKKyAgICB9CisjZWxzZQorICAgIG1lbXNldChzdGF0ZSwgMCwgYnl0ZUNvdW50KTsKKyNlbmRpZgorI2Vsc2UKKyNlcnJvciAiTm90IHlldCBpbXBsZW1lbnRlZCIKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSkKK3sKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworCisgICAgY29weUZyb21TdGF0ZShBLCBzdGF0ZUFzTGFuZXMpCisgICAgcm91bmRzMjQKKyAgICBjb3B5VG9TdGF0ZShzdGF0ZUFzTGFuZXMsIEEpCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICByb3VuZHMxMgorICAgIGNvcHlUb1N0YXRlKHN0YXRlQXNMYW5lcywgQSkKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIFVJTlQ2NCBsYW5lMVsxXTsKKyAgICAgICAgbGFuZTFbMF0gPSBsYW5lOworICAgICAgICBtZW1jcHkoZGF0YSwgKFVJTlQ4KilsYW5lMStvZmZzZXQsIGxlbmd0aCk7CisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBsYW5lID4+PSBvZmZzZXQqODsKKyAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGRhdGFbaV0gPSBsYW5lICYgMHhGRjsKKyAgICAgICAgbGFuZSA+Pj0gODsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKK3ZvaWQgZnJvbVdvcmRUb0J5dGVzKFVJTlQ4ICpieXRlcywgY29uc3QgVUlOVDY0IHdvcmQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPCg2NC84KTsgaSsrKQorICAgICAgICBieXRlc1tpXSA9ICh3b3JkID4+ICg4KmkpKSAmIDB4RkY7Cit9CisjZW5kaWYKKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0TGFuZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBtZW1jcHkoZGF0YSwgc3RhdGUsIGxhbmVDb3VudCo4KTsKKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKQorICAgICAgICBmcm9tV29yZFRvQnl0ZXMoZGF0YSsoaSo4KSwgKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXSk7CisjZW5kaWYKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMV0gPSB+KChVSU5UNjQqKWRhdGEpWyAxXTsKKyAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsgMl0gPSB+KChVSU5UNjQqKWRhdGEpWyAyXTsKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiA4KSB7CisgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWyA4XSA9IH4oKFVJTlQ2NCopZGF0YSlbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMTJdID0gfigoVUlOVDY0KilkYXRhKVsxMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzE3XSA9IH4oKFVJTlQ2NCopZGF0YSlbMTddOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWzIwXSA9IH4oKFVJTlQ2NCopZGF0YSlbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZShjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbiwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBVSU5UNjQgbGFuZSA9ICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXTsKKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgbGFuZSA9IH5sYW5lOworI2VuZGlmCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBpOworICAgICAgICBVSU5UNjQgbGFuZTFbMV07CisgICAgICAgIGxhbmUxWzBdID0gbGFuZTsKKyAgICAgICAgZm9yKGk9MDsgaTxsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dHB1dFtpXSA9IGlucHV0W2ldIF4gKChVSU5UOCopbGFuZTEpW29mZnNldCtpXTsKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBpOworICAgIGxhbmUgPj49IG9mZnNldCo4OworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgb3V0cHV0W2ldID0gaW5wdXRbaV0gXiAobGFuZSAmIDB4RkYpOworICAgICAgICBsYW5lID4+PSA4OworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworICAgIHVuc2lnbmVkIGludCBpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSICE9IElTX0xJVFRMRV9FTkRJQU4pCisgICAgdW5zaWduZWQgY2hhciB0ZW1wWzhdOworICAgIHVuc2lnbmVkIGludCBqOworI2VuZGlmCisKKyAgICBmb3IoaT0wOyBpPGxhbmVDb3VudDsgaSsrKSB7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICAgICAgKChVSU5UNjQqKW91dHB1dClbaV0gPSAoKFVJTlQ2NCopaW5wdXQpW2ldIF4gKChjb25zdCBVSU5UNjQqKXN0YXRlKVtpXTsKKyNlbHNlCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyh0ZW1wLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyAgICAgICAgZm9yKGo9MDsgajw4OyBqKyspCisgICAgICAgICAgICBvdXRwdXRbaSo4K2pdID0gaW5wdXRbaSo4K2pdIF4gdGVtcFtqXTsKKyNlbmRpZgorICAgIH0KKyNpZmRlZiBLZWNjYWtQMTYwMF91c2VMYW5lQ29tcGxlbWVudGluZworICAgIGlmIChsYW5lQ291bnQgPiAxKSB7CisgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyAxXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgMV07CisgICAgICAgIGlmIChsYW5lQ291bnQgPiAyKSB7CisgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgMl0gPSB+KChVSU5UNjQqKW91dHB1dClbIDJdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsgOF0gPSB+KChVSU5UNjQqKW91dHB1dClbIDhdOworICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxMikgeworICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsxMl0gPSB+KChVSU5UNjQqKW91dHB1dClbMTJdOworICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMTcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzE3XSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsxN107CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVsyMF0gPSB+KChVSU5UNjQqKW91dHB1dClbMjBdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcywgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitzaXplX3QgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IG9yaWdpbmFsRGF0YUJ5dGVMZW4gPSBkYXRhQnl0ZUxlbjsKKyAgICBkZWNsYXJlQUJDREUKKyAgICAjaWZuZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICAjZW5kaWYKKyAgICBVSU5UNjQgKnN0YXRlQXNMYW5lcyA9IChVSU5UNjQqKXN0YXRlOworICAgIFVJTlQ2NCAqaW5EYXRhQXNMYW5lcyA9IChVSU5UNjQqKWRhdGE7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICB3aGlsZShkYXRhQnl0ZUxlbiA+PSBsYW5lQ291bnQqOCkgeworICAgICAgICBhZGRJbnB1dChBLCBpbkRhdGFBc0xhbmVzLCBsYW5lQ291bnQpCisgICAgICAgIHJvdW5kczI0CisgICAgICAgIGluRGF0YUFzTGFuZXMgKz0gbGFuZUNvdW50OworICAgICAgICBkYXRhQnl0ZUxlbiAtPSBsYW5lQ291bnQqODsKKyAgICB9CisgICAgY29weVRvU3RhdGUoc3RhdGVBc0xhbmVzLCBBKQorICAgIHJldHVybiBvcmlnaW5hbERhdGFCeXRlTGVuIC0gZGF0YUJ5dGVMZW47Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNWNlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtdW5yb2xsaW5nLm1hY3JvcwpAQCAtMCwwICsxLDE4NSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmIChkZWZpbmVkKEZ1bGxVbnJvbGxpbmcpKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA0LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDUsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA3LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDgsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGEoMjMsIEUsIEEpIFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MTIpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAzLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDQsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA2LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDcsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgOCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA5LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMTAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxMSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDYpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTYpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz02KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzUsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSA0KQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz00KSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSszLCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MTI7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAzKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0zKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbGlmIChVbnJvbGxpbmcgPT0gMikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9MikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAxKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKyspIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSsrKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIGNvcHlTdGF0ZVZhcmlhYmxlcyhBLCBFKSBcCisgICAgfSBcCisKKyNlbHNlCisjZXJyb3IgIlVucm9sbGluZyBpcyBub3QgY29ycmVjdGx5IHNwZWNpZmllZCEiCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkYjczMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5jCkBAIC0wLDAgKzEsOTIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaCIKKworI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICNpbmNsdWRlICJkaXNwbGF5SW50ZXJtZWRpYXRlVmFsdWVzLmgiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMjAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGgyMDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMjAwCisgICAgI2RlZmluZSBTblBfd2lkdGggMjAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQMjAwX1Blcm11dGVfMThyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMjAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0YyMDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQNDAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtNDAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg0MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQNDAwCisgICAgI2RlZmluZSBTblBfd2lkdGggNDAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQNDAwX1Blcm11dGVfMjByb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGNDAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y0MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQODAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtODAwLVNuUC5oIgorCisgICAgI2RlZmluZSBwcmVmaXggS2VjY2FrV2lkdGg4MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQODAwCisgICAgI2RlZmluZSBTblBfd2lkdGggODAwCisgICAgI2RlZmluZSBTblBfUGVybXV0ZSBLZWNjYWtQODAwX1Blcm11dGVfMjJyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGODAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0Y4MDBfRmFzdExvb3BfQWJzb3JiCisgICAgI2VuZGlmCisgICAgICAgICNpbmNsdWRlICJLZWNjYWtTcG9uZ2UuaW5jIgorICAgICN1bmRlZiBwcmVmaXgKKyAgICAjdW5kZWYgU25QCisgICAgI3VuZGVmIFNuUF93aWR0aAorICAgICN1bmRlZiBTblBfUGVybXV0ZQorICAgICN1bmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMTYwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDE2MDAKKyAgICAjZGVmaW5lIFNuUCBLZWNjYWtQMTYwMAorICAgICNkZWZpbmUgU25QX3dpZHRoIDE2MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHMKKyAgICAjaWYgZGVmaW5lZChLZWNjYWtGMTYwMF9GYXN0TG9vcF9zdXBwb3J0ZWQpCisgICAgICAgICNkZWZpbmUgU25QX0Zhc3RMb29wX0Fic29yYiBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjRiYWRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpZm5kZWYgX0tlY2Nha1Nwb25nZV9oXworI2RlZmluZSBfS2VjY2FrU3BvbmdlX2hfCisKKy8qKiBHZW5lcmFsIGluZm9ybWF0aW9uCisgICoKKyAgKiBUaGUgZm9sbG93aW5nIHR5cGUgYW5kIGZ1bmN0aW9ucyBhcmUgbm90IGFjdHVhbGx5IGltcGxlbWVudGVkLiBUaGVpcgorICAqIGRvY3VtZW50YXRpb24gaXMgZ2VuZXJpYywgd2l0aCB0aGUgcHJlZml4IFByZWZpeCByZXBsYWNlZCBieQorICAqIC0gS2VjY2FrV2lkdGgyMDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzIwMF0KKyAgKiAtIEtlY2Nha1dpZHRoNDAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZls0MDBdCisgICogLSBLZWNjYWtXaWR0aDgwMCBmb3IgYSBzcG9uZ2UgZnVuY3Rpb24gYmFzZWQgb24gS2VjY2FrLWZbODAwXQorICAqIC0gS2VjY2FrV2lkdGgxNjAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZlsxNjAwXQorICAqCisgICogSW4gYWxsIHRoZXNlIGZ1bmN0aW9ucywgdGhlIHJhdGUgYW5kIGNhcGFjaXR5IG11c3Qgc3VtIHRvIHRoZSB3aWR0aCBvZiB0aGUKKyAgKiBjaG9zZW4gcGVybXV0YXRpb24uIEZvciBpbnN0YW5jZSwgdG8gdXNlIHRoZSBzcG9uZ2UgZnVuY3Rpb24KKyAgKiBLZWNjYWtbcj0xMzQ0LCBjPTI1Nl0sIG9uZSBtdXN0IHVzZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlKCkgb3IgYSBjb21iaW5hdGlvbgorICAqIG9mIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplKCksIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoKSwKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKSBhbmQKKyAgKiBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgpLgorICAqCisgICogVGhlIFByZWZpeF9TcG9uZ2VJbnN0YW5jZSBjb250YWlucyB0aGUgc3BvbmdlIGluc3RhbmNlIGF0dHJpYnV0ZXMgZm9yIHVzZQorICAqIHdpdGggdGhlIFByZWZpeF9TcG9uZ2UqIGZ1bmN0aW9ucy4KKyAgKiBJdCBnYXRoZXJzIHRoZSBzdGF0ZSBwcm9jZXNzZWQgYnkgdGhlIHBlcm11dGF0aW9uIGFzIHdlbGwgYXMgdGhlIHJhdGUsCisgICogdGhlIHBvc2l0aW9uIG9mIGlucHV0L291dHB1dCBieXRlcyBpbiB0aGUgc3RhdGUgYW5kIHRoZSBwaGFzZQorICAqIChhYnNvcmJpbmcgb3Igc3F1ZWV6aW5nKS4KKyAgKi8KKworI2lmZGVmIERvbnRSZWFsbHlJbmNsdWRlX0RvY3VtZW50YXRpb25Pbmx5CisvKiogRnVuY3Rpb24gdG8gZXZhbHVhdGUgdGhlIHNwb25nZSBmdW5jdGlvbiBLZWNjYWtbciwgY10gaW4gYSBzaW5nbGUgY2FsbC4KKyAgKiBAcGFyYW0gIHJhdGUgICAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgcmF0ZSByLgorICAqIEBwYXJhbSAgY2FwYWNpdHkgICAgVGhlIHZhbHVlIG9mIHRoZSBjYXBhY2l0eSBjLgorICAqIEBwYXJhbSAgaW5wdXQgICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIGlucHV0IG1lc3NhZ2UgKGJlZm9yZSB0aGUgc3VmZml4KS4KKyAgKiBAcGFyYW0gIGlucHV0Qnl0ZUxlbiAgICBUaGUgbGVuZ3RoIG9mIHRoZSBpbnB1dCBtZXNzYWdlIGluIGJ5dGVzLgorICAqIEBwYXJhbSAgc3VmZml4ICAgICAgICAgIEJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyBzdWZmaXggYml0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbXVzdCBiZSBhYnNvcmJlZCBhZnRlciBAYSBpbnB1dC4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSA8aT5uPC9pPiBiaXRzIG11c3QgYmUgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbnMuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAoY291bnRpbmcgZnJvbSAwPUxTQiB0byA3PU1TQikgYW5kIGZvbGxvd2VkIGJ5IGJpdHMgMAorICAqICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gcG9zaXRpb24gPGk+bjwvaT4rMSB0byBwb3NpdGlvbiA3LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgbm8gYml0cyBhcmUgdG8gYmUgYWJzb3JiZWQsIHRoZW4gQGEgc3VmZml4IG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgMi1iaXQgc2VxdWVuY2UgMCwwIGlzIHRvIGJlIGFic29yYmVkLCBAYSBzdWZmaXggbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSA1LWJpdCBzZXF1ZW5jZSAwLDEsMCwwLDEgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDctYml0IHNlcXVlbmNlIDEsMSwwLDEsMCwwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLgorICAqIEBwYXJhbSAgb3V0cHV0ICAgICAgICAgIFBvaW50ZXIgdG8gdGhlIG91dHB1dCBidWZmZXIuCisgICogQHBhcmFtICBvdXRwdXRCeXRlTGVuICAgVGhlIGRlc2lyZWQgbnVtYmVyIG9mIG91dHB1dCBieXRlcy4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjIGVxdWFsIHRvIHRoZSBzdXBwb3J0ZWQgd2lkdGggb2YgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAqICAgICAgICAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIChvbmUgYnl0ZSkgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcHJlICAgIEBhIHN1ZmZpeCDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIHN0YXRlIG9mIHRoZSBLZWNjYWtbciwgY10gc3BvbmdlIGZ1bmN0aW9uLgorICAqIFRoZSBwaGFzZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGlzIHNldCB0byBhYnNvcmJpbmcuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHByZSAgICBPbmUgbXVzdCBoYXZlIHIrYyBlcXVhbCB0byB0aGUgc3VwcG9ydGVkIHdpZHRoIG9mIHRoaXMgaW1wbGVtZW50YXRpb24KKyAgKiAgICAgICAgIGFuZCB0aGUgcmF0ZSBhIG11bHRpcGxlIG9mIDggYml0cyAob25lIGJ5dGUpIGluIHRoaXMgaW1wbGVtZW50YXRpb24uCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKFByZWZpeF9TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYnl0ZXMgZm9yIHRoZSBzcG9uZ2UgZnVuY3Rpb24gdG8gYWJzb3JiLgorICAqIEBwYXJhbSAgc3BvbmdlSW5zdGFuY2UgIFBvaW50ZXIgdG8gdGhlIHNwb25nZSBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBQcmVmaXhfU3BvbmdlSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGRhdGFCeXRlTGVuICBUaGUgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHByb3ZpZGVkIGluIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwcmUgICAgVGhlIHNwb25nZSBmdW5jdGlvbiBtdXN0IGJlIGluIHRoZSBhYnNvcmJpbmcgcGhhc2UsCisgICogICAgICAgICBpLmUuLCBQcmVmaXhfU3BvbmdlU3F1ZWV6ZSgpIG9yIFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpCisgICogICAgICAgICBtdXN0IG5vdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZS4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZUFic29yYihQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBnaXZlIGlucHV0IGRhdGEgYml0cyBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIKKyAgKiBhbmQgdGhlbiB0byBzd2l0Y2ggdG8gdGhlIHNxdWVlemluZyBwaGFzZS4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRlbGltaXRlZERhdGEgICBCeXRlIGNvbnRhaW5pbmcgZnJvbSAwIHRvIDcgdHJhaWxpbmcgYml0cworICAqICAgICAgICAgICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGFic29yYmVkLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgPGk+bjwvaT4gYml0cyBtdXN0IGJlIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcG9zaXRpb25zLgorICAqICAgICAgICAgICAgICAgICAgICAgVGhlc2UgYml0cyBtdXN0IGJlIGRlbGltaXRlZCB3aXRoIGEgYml0IDEgYXQgcG9zaXRpb24gPGk+bjwvaT4KKyAgKiAgICAgICAgICAgICAgICAgICAgIChjb3VudGluZyBmcm9tIDA9TFNCIHRvIDc9TVNCKSBhbmQgZm9sbG93ZWQgYnkgYml0cyAwCisgICogICAgICAgICAgICAgICAgICAgICBmcm9tIHBvc2l0aW9uIDxpPm48L2k+KzEgdG8gcG9zaXRpb24gNy4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFNvbWUgZXhhbXBsZXM6CisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBubyBiaXRzIGFyZSB0byBiZSBhYnNvcmJlZCwgdGhlbiBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHgwMS4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSAyLWJpdCBzZXF1ZW5jZSAwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIGRlbGltaXRlZERhdGEgbXVzdCBiZSAweDA0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDUtYml0IHNlcXVlbmNlIDAsMSwwLDAsMSBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4MzIuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNy1iaXQgc2VxdWVuY2UgMSwxLDAsMSwwLDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4OEIuCisgICogICAgICAgICAgICAgICAgICAgICAuCisgICogQHByZSAgICBUaGUgc3BvbmdlIGZ1bmN0aW9uIG11c3QgYmUgaW4gdGhlIGFic29yYmluZyBwaGFzZSwKKyAgKiAgICAgICAgIGkuZS4sIFByZWZpeF9TcG9uZ2VTcXVlZXplKCkgb3IgUHJlZml4X1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCkKKyAgKiAgICAgICAgIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEBwcmUgICAgQGEgZGVsaW1pdGVkRGF0YSDiiaAgMHgwMAorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YSBmcm9tIHRoZSBzcG9uZ2UgZnVuY3Rpb24uCisgICogSWYgdGhlIHNwb25nZSBmdW5jdGlvbiB3YXMgaW4gdGhlIGFic29yYmluZyBwaGFzZSwgdGhpcyBmdW5jdGlvbgorICAqIHN3aXRjaGVzIGl0IHRvIHRoZSBzcXVlZXppbmcgcGhhc2UKKyAgKiBhcyBpZiBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoc3BvbmdlSW5zdGFuY2UsIDB4MDEpIHdhcyBjYWxsZWQuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdG8gc3RvcmUgdGhlIG91dHB1dCBkYXRhLgorICAqIEBwYXJhbSAgZGF0YUJ5dGVMZW4gVGhlIG51bWJlciBvZiBvdXRwdXQgYnl0ZXMgZGVzaXJlZC4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZVNxdWVlemUoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiYWxpZ24uaCIKKworI2RlZmluZSBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShwcmVmaXgsIHNpemUsIGFsaWdubWVudCkgXAorICAgIEFMSUdOKGFsaWdubWVudCkgdHlwZWRlZiBzdHJ1Y3QgcHJlZml4IyNfU3BvbmdlSW5zdGFuY2VTdHJ1Y3QgeyBcCisgICAgICAgIHVuc2lnbmVkIGNoYXIgc3RhdGVbc2l6ZV07IFwKKyAgICAgICAgdW5zaWduZWQgaW50IHJhdGU7IFwKKyAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVJT0luZGV4OyBcCisgICAgICAgIGludCBzcXVlZXppbmc7IFwKKyAgICB9IHByZWZpeCMjX1Nwb25nZUluc3RhbmNlOworCisjZGVmaW5lIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKHByZWZpeCkgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VJbml0aWFsaXplKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlQWJzb3JiKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSk7IFwKKyAgICBpbnQgcHJlZml4IyNfU3BvbmdlU3F1ZWV6ZShwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbik7CisKKyNpZm5kZWYgS2VjY2FrUDIwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTIwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDIwMCwgS2VjY2FrUDIwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQMjAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoMjAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDQwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTQwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDQwMCwgS2VjY2FrUDQwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQNDAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoNDAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDgwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTgwMC1TblAuaCIKKyAgICBLQ1BfRGVjbGFyZVNwb25nZVN0cnVjdHVyZShLZWNjYWtXaWR0aDgwMCwgS2VjY2FrUDgwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQODAwX3N0YXRlQWxpZ25tZW50KQorICAgIEtDUF9EZWNsYXJlU3BvbmdlRnVuY3Rpb25zKEtlY2Nha1dpZHRoODAwKQorI2VuZGlmCisKKyNpZm5kZWYgS2VjY2FrUDE2MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoMTYwMCwgS2VjY2FrUDE2MDBfc3RhdGVTaXplSW5CeXRlcywgS2VjY2FrUDE2MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGgxNjAwKQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwNzM5ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5pbmMKQEAgLTAsMCArMSwzMzIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNkZWZpbmUgSk9JTjAoYSwgYikgICAgICAgICAgICAgICAgICAgICBhICMjIGIKKyNkZWZpbmUgSk9JTihhLCBiKSAgICAgICAgICAgICAgICAgICAgICBKT0lOMChhLCBiKQorCisjZGVmaW5lIFNwb25nZSAgICAgICAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2UpCisjZGVmaW5lIFNwb25nZUluc3RhbmNlICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VJbnN0YW5jZSkKKyNkZWZpbmUgU3BvbmdlSW5pdGlhbGl6ZSAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUluaXRpYWxpemUpCisjZGVmaW5lIFNwb25nZUFic29yYiAgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmIpCisjZGVmaW5lIFNwb25nZUFic29yYkxhc3RGZXdCaXRzICAgICAgICAgSk9JTihwcmVmaXgsIF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cykKKyNkZWZpbmUgU3BvbmdlU3F1ZWV6ZSAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZVNxdWVlemUpCisKKyNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlU2l6ZUluQnl0ZXMpCisjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZUFsaWdubWVudCkKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfQWRkQnl0ZSAgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZSkKKyNkZWZpbmUgU25QX0FkZEJ5dGVzICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGVzKQorI2RlZmluZSBTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfRXh0cmFjdEJ5dGVzKQorCitpbnQgU3BvbmdlKHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCBzaXplX3QgaW5wdXRCeXRlTGVuLCB1bnNpZ25lZCBjaGFyIHN1ZmZpeCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCBzaXplX3Qgb3V0cHV0Qnl0ZUxlbikKK3sKKyAgICBBTElHTihTblBfc3RhdGVBbGlnbm1lbnQpIHVuc2lnbmVkIGNoYXIgc3RhdGVbU25QX3N0YXRlU2l6ZUluQnl0ZXNdOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VySW5wdXQgPSBpbnB1dDsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJPdXRwdXQgPSBvdXRwdXQ7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gcmF0ZS84OworCisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoc3VmZml4ID09IDApCisgICAgICAgIHJldHVybiAxOworCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgc3RhdGUgKi8KKworICAgIFNuUF9TdGF0aWNJbml0aWFsaXplKCk7CisgICAgU25QX0luaXRpYWxpemUoc3RhdGUpOworCisgICAgLyogRmlyc3QsIGFic29yYiB3aG9sZSBibG9ja3MgKi8KKworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICBpZiAoKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgJiYgKGlucHV0Qnl0ZUxlbiA+PSByYXRlSW5CeXRlcykpIHsKKyAgICAgICAgLyogZmFzdCBsYW5lOiB3aG9sZSBsYW5lIHJhdGUgKi8KKworICAgICAgICBzaXplX3QgajsKKyAgICAgICAgaiA9IFNuUF9GYXN0TG9vcF9BYnNvcmIoc3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VySW5wdXQsIGlucHV0Qnl0ZUxlbik7CisgICAgICAgIGN1cklucHV0ICs9IGo7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSBqOworICAgIH0KKyNlbmRpZgorICAgIHdoaWxlKGlucHV0Qnl0ZUxlbiA+PSAoc2l6ZV90KXJhdGVJbkJ5dGVzKSB7CisgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCIsIGN1cklucHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgY3VySW5wdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIGlucHV0Qnl0ZUxlbiAtPSByYXRlSW5CeXRlczsKKyAgICB9CisKKyAgICAvKiBUaGVuLCBhYnNvcmIgd2hhdCByZW1haW5zICovCisKKyAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KWlucHV0Qnl0ZUxlbjsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCAocGFydCkiLCBjdXJJbnB1dCwgcGFydGlhbEJsb2NrKTsKKyAgICAjZW5kaWYKKyAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGN1cklucHV0LCAwLCBwYXJ0aWFsQmxvY2spOworCisgICAgLyogRmluYWxseSwgYWJzb3JiIHRoZSBzdWZmaXggKi8KKworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YTFbMV07CisgICAgICAgIGRlbGltaXRlZERhdGExWzBdID0gc3VmZml4OworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChsYXN0IGZldyBiaXRzICsgZmlyc3QgYml0IG9mIHBhZGRpbmcpIiwgZGVsaW1pdGVkRGF0YTEsIDEpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICAvKiBMYXN0IGZldyBiaXRzLCB3aG9zZSBkZWxpbWl0ZXIgY29pbmNpZGVzIHdpdGggZmlyc3QgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKHN0YXRlLCBzdWZmaXgsIHBhcnRpYWxCbG9jayk7CisgICAgLyogSWYgdGhlIGZpcnN0IGJpdCBvZiBwYWRkaW5nIGlzIGF0IHBvc2l0aW9uIHJhdGUtMSwgd2UgbmVlZCBhIHdob2xlIG5ldyBibG9jayBmb3IgdGhlIHNlY29uZCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgaWYgKChzdWZmaXggPj0gMHg4MCkgJiYgKHBhcnRpYWxCbG9jayA9PSAocmF0ZUluQnl0ZXMtMSkpKQorICAgICAgICBTblBfUGVybXV0ZShzdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShzdGF0ZSwgMHg4MCwgcmF0ZUluQnl0ZXMtMSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBibG9ja1tTblBfd2lkdGgvOF07CisgICAgICAgIG1lbXNldChibG9jaywgMCwgU25QX3dpZHRoLzgpOworICAgICAgICBibG9ja1tyYXRlSW5CeXRlcy0xXSA9IDB4ODA7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU2Vjb25kIGJpdCBvZiBwYWRkaW5nIiwgYmxvY2ssIHJhdGVJbkJ5dGVzKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5VGV4dCgxLCAiLS0tIFN3aXRjaGluZyB0byBzcXVlZXppbmcgcGhhc2UgLS0tIik7CisgICAgI2VuZGlmCisKKyAgICAvKiBGaXJzdCwgb3V0cHV0IHdob2xlIGJsb2NrcyAqLworCisgICAgd2hpbGUob3V0cHV0Qnl0ZUxlbiA+IChzaXplX3QpcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgY3VyT3V0cHV0LCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIiwgY3VyT3V0cHV0LCByYXRlSW5CeXRlcyk7CisgICAgICAgICNlbmRpZgorICAgICAgICBjdXJPdXRwdXQgKz0gcmF0ZUluQnl0ZXM7CisgICAgICAgIG91dHB1dEJ5dGVMZW4gLT0gcmF0ZUluQnl0ZXM7CisgICAgfQorCisgICAgLyogRmluYWxseSwgb3V0cHV0IHdoYXQgcmVtYWlucyAqLworCisgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludClvdXRwdXRCeXRlTGVuOworICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGUsIGN1ck91dHB1dCwgMCwgcGFydGlhbEJsb2NrKTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJPdXRwdXQsIHBhcnRpYWxCbG9jayk7CisgICAgI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlSW5pdGlhbGl6ZShTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHkpCit7CisgICAgaWYgKHJhdGUrY2FwYWNpdHkgIT0gU25QX3dpZHRoKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoKHJhdGUgPD0gMCkgfHwgKHJhdGUgPiBTblBfd2lkdGgpIHx8ICgocmF0ZSAlIDgpICE9IDApKQorICAgICAgICByZXR1cm4gMTsKKyAgICBTblBfU3RhdGljSW5pdGlhbGl6ZSgpOworICAgIFNuUF9Jbml0aWFsaXplKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPnJhdGUgPSByYXRlOworICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCA9IDA7CisgICAgaW5zdGFuY2UtPnNxdWVlemluZyA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCitpbnQgU3BvbmdlQWJzb3JiKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY3VyRGF0YTsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gMCkgJiYgKGRhdGFCeXRlTGVuID49IChpICsgcmF0ZUluQnl0ZXMpKSkgeworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICAgICAgICAgIC8qIHByb2Nlc3NpbmcgZnVsbCBibG9ja3MgZmlyc3QgKi8KKworICAgICAgICAgICAgaWYgKChyYXRlSW5CeXRlcyAlIChTblBfd2lkdGgvMjAwKSkgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGZhc3QgbGFuZTogd2hvbGUgbGFuZSByYXRlICovCisKKyAgICAgICAgICAgICAgICBqID0gU25QX0Zhc3RMb29wX0Fic29yYihpbnN0YW5jZS0+c3RhdGUsIHJhdGVJbkJ5dGVzLyhTblBfd2lkdGgvMjAwKSwgY3VyRGF0YSwgZGF0YUJ5dGVMZW4gLSBpKTsKKyAgICAgICAgICAgICAgICBpICs9IGo7CisgICAgICAgICAgICAgICAgY3VyRGF0YSArPSBqOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBmb3Ioaj1kYXRhQnl0ZUxlbi1pOyBqPj1yYXRlSW5CeXRlczsgai09cmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VyRGF0YSwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgU25QX0FkZEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgMCwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICAgICBTblBfUGVybXV0ZShpbnN0YW5jZS0+c3RhdGUpOworICAgICAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSA9IGRhdGFCeXRlTGVuIC0gajsKKyNpZmRlZiBTblBfRmFzdExvb3BfQWJzb3JiCisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBsYW5lOiB1c2luZyB0aGUgbWVzc2FnZSBxdWV1ZSAqLworCisgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KShkYXRhQnl0ZUxlbiAtIGkpOworICAgICAgICAgICAgaWYgKHBhcnRpYWxCbG9jaytpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPiByYXRlSW5CeXRlcykKKyAgICAgICAgICAgICAgICBwYXJ0aWFsQmxvY2sgPSByYXRlSW5CeXRlcy1pbnN0YW5jZS0+Ynl0ZUlPSW5kZXg7CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChwYXJ0KSIsIGN1ckRhdGEsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfQWRkQnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IHJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhTcG9uZ2VJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworCisgICAgaWYgKGRlbGltaXRlZERhdGEgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIHJldHVybiAxOyAvKiBUb28gbGF0ZSBmb3IgYWRkaXRpb25hbCBpbnB1dCAqLworCisKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZERhdGExWzFdOworICAgICAgICBkZWxpbWl0ZWREYXRhMVswXSA9IGRlbGltaXRlZERhdGE7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKGxhc3QgZmV3IGJpdHMgKyBmaXJzdCBiaXQgb2YgcGFkZGluZykiLCBkZWxpbWl0ZWREYXRhMSwgMSk7CisgICAgfQorICAgICNlbmRpZgorICAgIC8qIExhc3QgZmV3IGJpdHMsIHdob3NlIGRlbGltaXRlciBjb2luY2lkZXMgd2l0aCBmaXJzdCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgU25QX0FkZEJ5dGUoaW5zdGFuY2UtPnN0YXRlLCBkZWxpbWl0ZWREYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgpOworICAgIC8qIElmIHRoZSBmaXJzdCBiaXQgb2YgcGFkZGluZyBpcyBhdCBwb3NpdGlvbiByYXRlLTEsIHdlIG5lZWQgYSB3aG9sZSBuZXcgYmxvY2sgZm9yIHRoZSBzZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIGlmICgoZGVsaW1pdGVkRGF0YSA+PSAweDgwKSAmJiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IChyYXRlSW5CeXRlcy0xKSkpCisgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgLyogU2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShpbnN0YW5jZS0+c3RhdGUsIDB4ODAsIHJhdGVJbkJ5dGVzLTEpOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYmxvY2tbU25QX3dpZHRoLzhdOworICAgICAgICBtZW1zZXQoYmxvY2ssIDAsIFNuUF93aWR0aC84KTsKKyAgICAgICAgYmxvY2tbcmF0ZUluQnl0ZXMtMV0gPSAweDgwOworICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNlY29uZCBiaXQgb2YgcGFkZGluZyIsIGJsb2NrLCByYXRlSW5CeXRlcyk7CisgICAgfQorICAgICNlbmRpZgorICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICBpbnN0YW5jZS0+c3F1ZWV6aW5nID0gMTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgZGlzcGxheVRleHQoMSwgIi0tLSBTd2l0Y2hpbmcgdG8gc3F1ZWV6aW5nIHBoYXNlIC0tLSIpOworICAgICNlbmRpZgorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VTcXVlZXplKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKQoreworICAgIHNpemVfdCBpLCBqOworICAgIHVuc2lnbmVkIGludCBwYXJ0aWFsQmxvY2s7CisgICAgdW5zaWduZWQgaW50IHJhdGVJbkJ5dGVzID0gaW5zdGFuY2UtPnJhdGUvODsKKyAgICB1bnNpZ25lZCBjaGFyICpjdXJEYXRhOworCisgICAgaWYgKCFpbnN0YW5jZS0+c3F1ZWV6aW5nKQorICAgICAgICBTcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhpbnN0YW5jZSwgMHgwMSk7CisKKyAgICBpID0gMDsKKyAgICBjdXJEYXRhID0gZGF0YTsKKyAgICB3aGlsZShpIDwgZGF0YUJ5dGVMZW4pIHsKKyAgICAgICAgaWYgKChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gcmF0ZUluQnl0ZXMpICYmIChkYXRhQnl0ZUxlbiA+PSAoaSArIHJhdGVJbkJ5dGVzKSkpIHsKKyAgICAgICAgICAgIGZvcihqPWRhdGFCeXRlTGVuLWk7IGo+PXJhdGVJbkJ5dGVzOyBqLT1yYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhpbnN0YW5jZS0+c3RhdGUsIGN1ckRhdGEsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayIsIGN1ckRhdGEsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBjdXJEYXRhKz1yYXRlSW5CeXRlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGkgPSBkYXRhQnl0ZUxlbiAtIGo7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBub3JtYWwgbGFuZTogdXNpbmcgdGhlIG1lc3NhZ2UgcXVldWUgKi8KKworICAgICAgICAgICAgaWYgKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSByYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKGRhdGFCeXRlTGVuIC0gaSk7CisgICAgICAgICAgICBpZiAocGFydGlhbEJsb2NrK2luc3RhbmNlLT5ieXRlSU9JbmRleCA+IHJhdGVJbkJ5dGVzKQorICAgICAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9IHJhdGVJbkJ5dGVzLWluc3RhbmNlLT5ieXRlSU9JbmRleDsKKyAgICAgICAgICAgIGkgKz0gcGFydGlhbEJsb2NrOworCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgaW5zdGFuY2UtPmJ5dGVJT0luZGV4LCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTcXVlZXplZCBibG9jayAocGFydCkiLCBjdXJEYXRhLCBwYXJ0aWFsQmxvY2spOworICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICBjdXJEYXRhICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCArPSBwYXJ0aWFsQmxvY2s7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworI3VuZGVmIFNwb25nZQorI3VuZGVmIFNwb25nZUluc3RhbmNlCisjdW5kZWYgU3BvbmdlSW5pdGlhbGl6ZQorI3VuZGVmIFNwb25nZUFic29yYgorI3VuZGVmIFNwb25nZUFic29yYkxhc3RGZXdCaXRzCisjdW5kZWYgU3BvbmdlU3F1ZWV6ZQorI3VuZGVmIFNuUF9zdGF0ZVNpemVJbkJ5dGVzCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RCeXRlcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvUGxTblAtRmFsbGJhY2suaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhOTExOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMKQEAgLTAsMCArMSwyNTcgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKy8qIGV4cGVjdCBQbFNuUF9iYXNlUGFyYWxsZWxpc20sIFBsU25QX3RhcmdldFBhcmFsbGVsaXNtICovCisKKy8qIGV4cGVjdCBTblBfc3RhdGVTaXplSW5CeXRlcywgU25QX3N0YXRlQWxpZ25tZW50ICovCisKKy8qIGV4cGVjdCBwcmVmaXggKi8KKworLyogZXhwZWN0IFNuUF8qICovCisKKworI2RlZmluZSBKT0lOMChhLCBiKSAgICAgICAgICAgICAgICAgICAgIGEgIyMgYgorI2RlZmluZSBKT0lOKGEsIGIpICAgICAgICAgICAgICAgICAgICAgIEpPSU4wKGEsIGIpCisKKyNkZWZpbmUgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICBKT0lOKHByZWZpeCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFBsU25QX0luaXRpYWxpemVBbGwgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9Jbml0aWFsaXplQWxsKQorI2RlZmluZSBQbFNuUF9BZGRCeXRlICAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkQnl0ZSkKKyNkZWZpbmUgUGxTblBfQWRkQnl0ZXMgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0FkZEJ5dGVzKQorI2RlZmluZSBQbFNuUF9BZGRMYW5lc0FsbCAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkTGFuZXNBbGwpCisjZGVmaW5lIFBsU25QX092ZXJ3cml0ZUJ5dGVzICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9PdmVyd3JpdGVCeXRlcykKKyNkZWZpbmUgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwgICAgICAgICBKT0lOKHByZWZpeCwgX092ZXJ3cml0ZUxhbmVzQWxsKQorI2RlZmluZSBQbFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzICAgICAgIEpPSU4ocHJlZml4LCBfT3ZlcndyaXRlV2l0aFplcm9lcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEJ5dGVzICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdExhbmVzQWxsICAgICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RMYW5lc0FsbCkKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzICAgICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRCeXRlcykKKyNkZWZpbmUgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsICAgICBKT0lOKHByZWZpeCwgX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCkKKworI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZVNpemVJbkJ5dGVzKQorICAgICNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlQWxpZ25tZW50KQorI2Vsc2UKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZVNpemVJbkJ5dGVzICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNTaXplSW5CeXRlcykKKyAgICAjZGVmaW5lIFNuUF9zdGF0ZUFsaWdubWVudCAgICAgICAgICAgICAgSk9JTihTblAsIF9zdGF0ZXNBbGlnbm1lbnQpCisjZW5kaWYKKyNkZWZpbmUgUGxTblBfZmFjdG9yICgoUGxTblBfdGFyZ2V0UGFyYWxsZWxpc20pLyhQbFNuUF9iYXNlUGFyYWxsZWxpc20pKQorI2RlZmluZSBTblBfc3RhdGVPZmZzZXQgKCgoU25QX3N0YXRlU2l6ZUluQnl0ZXMrKFNuUF9zdGF0ZUFsaWdubWVudC0xKSkvU25QX3N0YXRlQWxpZ25tZW50KSpTblBfc3RhdGVBbGlnbm1lbnQpCisjZGVmaW5lIHN0YXRlV2l0aEluZGV4KGkpICgodW5zaWduZWQgY2hhciAqKXN0YXRlcysoKGkpKlNuUF9zdGF0ZU9mZnNldCkpCisKKyNkZWZpbmUgU25QX1N0YXRpY0luaXRpYWxpemUgICAgICAgICAgICBKT0lOKFNuUCwgX1N0YXRpY0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplKQorI2RlZmluZSBTblBfSW5pdGlhbGl6ZUFsbCAgICAgICAgICAgICAgIEpPSU4oU25QLCBfSW5pdGlhbGl6ZUFsbCkKKyNkZWZpbmUgU25QX0FkZEJ5dGUgICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGUpCisjZGVmaW5lIFNuUF9BZGRCeXRlcyAgICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9BZGRCeXRlcykKKyNkZWZpbmUgU25QX0FkZExhbmVzQWxsICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZExhbmVzQWxsKQorI2RlZmluZSBTblBfT3ZlcndyaXRlQnl0ZXMgICAgICAgICAgICAgIEpPSU4oU25QLCBfT3ZlcndyaXRlQnl0ZXMpCisjZGVmaW5lIFNuUF9PdmVyd3JpdGVMYW5lc0FsbCAgICAgICAgICAgSk9JTihTblAsIF9PdmVyd3JpdGVMYW5lc0FsbCkKKyNkZWZpbmUgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMgICAgICAgICBKT0lOKFNuUCwgX092ZXJ3cml0ZVdpdGhaZXJvZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0Qnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0TGFuZXNBbGwgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0TGFuZXNBbGwpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkQnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwgICAgICAgSk9JTihTblAsIF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwpCisKK3ZvaWQgUGxTblBfU3RhdGljSW5pdGlhbGl6ZSggdm9pZCApCit7CisgICAgU25QX1N0YXRpY0luaXRpYWxpemUoKTsKK30KKwordm9pZCBQbFNuUF9Jbml0aWFsaXplQWxsKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspCisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0luaXRpYWxpemUoc3RhdGVXaXRoSW5kZXgoaSkpOworICAgICNlbHNlCisgICAgICAgIFNuUF9Jbml0aWFsaXplQWxsKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRCeXRlKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGNoYXIgYnl0ZSwgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgYnl0ZSwgb2Zmc2V0KTsKKyAgICAjZWxzZQorICAgICAgICBTblBfQWRkQnl0ZShzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBieXRlLCBvZmZzZXQpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZEJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9BZGRMYW5lc0FsbCh2b2lkICpzdGF0ZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX0FkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9BZGRMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gUGxTblBfYmFzZVBhcmFsbGVsaXNtKmxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzOworICAgIH0KK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlTGFuZXNBbGwodm9pZCAqc3RhdGVzLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlcyhzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgMCwgbGFuZUNvdW50KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBkYXRhICs9IFBsU25QX2Jhc2VQYXJhbGxlbGlzbSpsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlczsKKyAgICB9Cit9CisKK3ZvaWQgUGxTblBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBpbnQgYnl0ZUNvdW50KQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBieXRlQ291bnQpOworICAgICNlbHNlCisgICAgICAgIFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGJ5dGVDb3VudCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbCh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZShzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbChzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKworI2lmIChkZWZpbmVkKFNuUF9QZXJtdXRlXzEycm91bmRzKSB8fCBkZWZpbmVkKFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKSkKK3ZvaWQgUGxTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyh2b2lkICpzdGF0ZXMpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfUGVybXV0ZV8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfUGVybXV0ZUFsbF8xMnJvdW5kcyhzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgICAgICNlbmRpZgorICAgIH0KK30KKyNlbmRpZgorCit2b2lkIFBsU25QX0V4dHJhY3RCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9FeHRyYWN0TGFuZXNBbGwoY29uc3Qgdm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0V4dHJhY3RMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gbGFuZU9mZnNldCpTblBfbGFuZUxlbmd0aEluQnl0ZXMqUGxTblBfYmFzZVBhcmFsbGVsaXNtOworICAgIH0KK30KKwordm9pZCBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXModm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4L1BsU25QX2Jhc2VQYXJhbGxlbGlzbSksIGluc3RhbmNlSW5kZXglUGxTblBfYmFzZVBhcmFsbGVsaXNtLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsKGNvbnN0IHZvaWQgKnN0YXRlcywgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgdW5zaWduZWQgaW50IGxhbmVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBpbnB1dCwgb3V0cHV0LCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwoc3RhdGVXaXRoSW5kZXgoaSksIGlucHV0LCBvdXRwdXQsIGxhbmVDb3VudCwgbGFuZU9mZnNldCk7CisgICAgICAgICNlbmRpZgorICAgICAgICBpbnB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgICAgIG91dHB1dCArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgfQorfQorCisjdW5kZWYgUGxTblBfZmFjdG9yCisjdW5kZWYgU25QX3N0YXRlT2Zmc2V0CisjdW5kZWYgc3RhdGVXaXRoSW5kZXgKKyN1bmRlZiBKT0lOMAorI3VuZGVmIEpPSU4KKyN1bmRlZiBQbFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgUGxTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFBsU25QX0FkZEJ5dGUKKyN1bmRlZiBQbFNuUF9BZGRCeXRlcworI3VuZGVmIFBsU25QX0FkZExhbmVzQWxsCisjdW5kZWYgUGxTblBfT3ZlcndyaXRlQnl0ZXMKKyN1bmRlZiBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbAorI3VuZGVmIFBsU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBQbFNuUF9QZXJtdXRlQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdExhbmVzQWxsCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZEJ5dGVzCisjdW5kZWYgUGxTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCisjdW5kZWYgU25QX3N0YXRlQWxpZ25tZW50CisjdW5kZWYgU25QX3N0YXRlU2l6ZUluQnl0ZXMKKyN1bmRlZiBQbFNuUF9mYWN0b3IKKyN1bmRlZiBTblBfc3RhdGVPZmZzZXQKKyN1bmRlZiBzdGF0ZVdpdGhJbmRleAorI3VuZGVmIFNuUF9TdGF0aWNJbml0aWFsaXplCisjdW5kZWYgU25QX0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZUFsbAorI3VuZGVmIFNuUF9BZGRCeXRlCisjdW5kZWYgU25QX0FkZEJ5dGVzCisjdW5kZWYgU25QX0FkZExhbmVzQWxsCisjdW5kZWYgU25QX092ZXJ3cml0ZUJ5dGVzCisjdW5kZWYgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMKKyN1bmRlZiBTblBfT3ZlcndyaXRlTGFuZXNBbGwKKyN1bmRlZiBTblBfRXh0cmFjdEJ5dGVzCisjdW5kZWYgU25QX0V4dHJhY3RMYW5lc0FsbAorI3VuZGVmIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdEFuZEFkZExhbmVzQWxsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODZlNjM1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvU25QLVJlbGFuZWQuaApAQCAtMCwwICsxLDEzNCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfU25QX1JlbGFuZWRfaF8KKyNkZWZpbmUgX1NuUF9SZWxhbmVkX2hfCisKKyNkZWZpbmUgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX0FkZExhbmVzLCBTblBfQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfQWRkTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9BZGRCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX092ZXJ3cml0ZUxhbmVzLCBTblBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfT3ZlcndyaXRlTGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChkYXRhKSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VyRGF0YSA9IChkYXRhKTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0TGFuZXMsIFNuUF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdExhbmVzKHN0YXRlLCBkYXRhLCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlc0luTGFuZShzdGF0ZSwgX2xhbmVQb3NpdGlvbiwgX2N1ckRhdGEsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VyRGF0YSArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyhzdGF0ZSwgaW5wdXQsIG91dHB1dCwgb2Zmc2V0LCBsZW5ndGgsIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXMsIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIFNuUF9sYW5lTGVuZ3RoSW5CeXRlcykgXAorICAgIHsgXAorICAgICAgICBpZiAoKG9mZnNldCkgPT0gMCkgeyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZExhbmVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGlucHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAob3V0cHV0KSsoKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSpTblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAwLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfc2l6ZUxlZnQgPSAobGVuZ3RoKTsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9sYW5lUG9zaXRpb24gPSAob2Zmc2V0KS9TblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfb2Zmc2V0SW5MYW5lID0gKG9mZnNldCklU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpfY3VySW5wdXQgPSAoaW5wdXQpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpfY3VyT3V0cHV0ID0gKG91dHB1dCk7IFwKKyAgICAgICAgICAgIHdoaWxlKF9zaXplTGVmdCA+IDApIHsgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfYnl0ZXNJbkxhbmUgPSBTblBfbGFuZUxlbmd0aEluQnl0ZXMgLSBfb2Zmc2V0SW5MYW5lOyBcCisgICAgICAgICAgICAgICAgaWYgKF9ieXRlc0luTGFuZSA+IF9zaXplTGVmdCkgXAorICAgICAgICAgICAgICAgICAgICBfYnl0ZXNJbkxhbmUgPSBfc2l6ZUxlZnQ7IFwKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VySW5wdXQsIF9jdXJPdXRwdXQsIF9vZmZzZXRJbkxhbmUsIF9ieXRlc0luTGFuZSk7IFwKKyAgICAgICAgICAgICAgICBfc2l6ZUxlZnQgLT0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2xhbmVQb3NpdGlvbisrOyBcCisgICAgICAgICAgICAgICAgX29mZnNldEluTGFuZSA9IDA7IFwKKyAgICAgICAgICAgICAgICBfY3VySW5wdXQgKz0gX2J5dGVzSW5MYW5lOyBcCisgICAgICAgICAgICAgICAgX2N1ck91dHB1dCArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaCBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY1MGZlOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL2FsaWduLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfYWxpZ25faF8KKyNkZWZpbmUgX2FsaWduX2hfCisKKy8qIG9uIE1hYyBPUy1YIGFuZCBwb3NzaWJseSBvdGhlcnMsIEFMSUdOKHgpIGlzIGRlZmluZWQgaW4gcGFyYW0uaCwgYW5kIC1XZXJyb3IgY2hva2VzIG9uIHRoZSByZWRlZi4gKi8KKworI2lmZGVmIEFMSUdOCisjdW5kZWYgQUxJR04KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0dOVUNfXykKKyNkZWZpbmUgQUxJR04oeCkgX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoeCkpKQorI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgQUxJR04oeCkgX19kZWNsc3BlYyhhbGlnbih4KSkKKyNlbGlmIGRlZmluZWQoX19BUk1DQ19WRVJTSU9OKQorI2RlZmluZSBBTElHTih4KSBfX2FsaWduKHgpCisjZWxzZQorI2RlZmluZSBBTElHTih4KQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMgYi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWFhYTFmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9zaGEzbW9kdWxlLmMKQEAgLTAsMCArMSw3NTcgQEAKKy8qIFNIQTMgbW9kdWxlCisgKgorICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRoZSBTSEEzIGFsZ29yaXRobQorICoKKyAqIFNlZSBiZWxvdyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG9yaWdpbmFsIGNvZGUgdGhpcyBtb2R1bGUgd2FzCisgKiBiYXNlZCB1cG9uLiBBZGRpdGlvbmFsIHdvcmsgcGVyZm9ybWVkIGJ5OgorICoKKyAqICBBbmRyZXcgS3VjaGxpbmcgKGFta0BhbWsuY2EpCisgKiAgR3JlZyBTdGVpbiAoZ3N0ZWluQGx5cmEub3JnKQorICogIFRyZXZvciBQZXJyaW4gKHRyZXZwQHRyZXZwLm5ldCkKKyAqICBHcmVnb3J5IFAuIFNtaXRoIChncmVnQGtyeXB0by5vcmcpCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgIENocmlzdGlhbiBIZWltZXMgKGNocmlzdGlhbkBweXRob24ub3JnKQorICogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorICoKKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpbmNsdWRlICIuLi9oYXNobGliLmgiCisKKy8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBLTMgKEtlY2NhaykgYW5kIFNIQUtFCisgKgorICogVGhlIGNvZGUgaXMgYmFzZWQgb24gS2VjY2FrQ29kZVBhY2thZ2UgZnJvbSAyMDE2LTA0LTIzCisgKiBjb21taXQgNjQ3ZjkzMDc5YWZjNGFkYTNkMjM3Mzc0NzdhNmU1MjUxMWNhNDFmZAorICoKKyAqIFRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gaXMgYWx0ZXJlZCBpbiB0aGlzIHBvaW50czoKKyAqICAtIEMrKyBjb21tZW50cyBhcmUgY29udmVydGVkIHRvIEFOU0kgQyBjb21tZW50cy4KKyAqICAtIGFsbCBmdW5jdGlvbiBuYW1lcyBhcmUgbWFuZ2xlZAorICogIC0gdHlwZWRlZiBmb3IgVUlOVDY0IGlzIGNvbW1lbnRlZCBvdXQuCisgKiAgLSBicmdfZW5kaWFuLmggaXMgcmVtb3ZlZAorICoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZmRlZiBfX3NwYXJjCisgIC8qIG9wdDY0IHVzZXMgdW4tYWxpZ25lZCBtZW1vcnkgYWNjZXNzIHRoYXQgY2F1c2VzIGEgQlVTIGVycm9yIHdpdGggbXNnCisgICAqICdpbnZhbGlkIGFkZHJlc3MgYWxpZ25tZW50JyBvbiBTUEFSQy4gKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFBZX0JJR19FTkRJQU4KKyAgLyogb3B0NjQgaXMgbm90IHlldCBzdXBwb3J0ZWQgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybXMgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgMzIKKyNlbGlmIFNJWkVPRl9WT0lEX1AgPT0gOCAmJiBkZWZpbmVkKFBZX1VJTlQ2NF9UKQorICAvKiBvcHQ2NCB3b3JrcyBvbmx5IG9uIGxpdHRsZS1lbmRpYW4gNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgI2RlZmluZSBLZWNjYWtPcHQgNjQKKyNlbHNlCisgIC8qIG9wdDMyIGlzIHVzZWQgZm9yIHRoZSByZW1haW5pbmcgMzIgYW5kIDY0Yml0IHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VuZGlmCisKKyNpZiBLZWNjYWtPcHQgPT0gNjQgJiYgZGVmaW5lZChQWV9VSU5UNjRfVCkKKyAgLyogNjRiaXQgcGxhdGZvcm1zIHdpdGggdW5zaWduZWQgaW50NjQgKi8KKyAgdHlwZWRlZiBQWV9VSU5UNjRfVCBVSU5UNjQ7CisgIHR5cGVkZWYgdW5zaWduZWQgY2hhciBVSU5UODsKKyNlbmRpZgorCisvKiByZXBsYWNlbWVudCBmb3IgYnJnX2VuZGlhbi5oICovCisjZGVmaW5lIElTX0xJVFRMRV9FTkRJQU4gMTIzNAorI2RlZmluZSBJU19CSUdfRU5ESUFOIDQzMjEKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisjZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfTElUVExFX0VORElBTgorI2VuZGlmCisjaWYgUFlfQklHX0VORElBTgorI2RlZmluZSBQTEFURk9STV9CWVRFX09SREVSIElTX0JJR19FTkRJQU4KKyNlbmRpZgorCisvKiBtYW5nbGUgbmFtZXMgKi8KKyNkZWZpbmUgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiIF9QeVNIQTNfS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiCisjZGVmaW5lIEtlY2Nha19IYXNoRmluYWwgX1B5U0hBM19LZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZSBfUHlTSEEzX0tlY2Nha19IYXNoSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtfSGFzaFNxdWVlemUgX1B5U0hBM19LZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgS2VjY2FrX0hhc2hVcGRhdGUgX1B5U0hBM19LZWNjYWtfSGFzaFVwZGF0ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZEJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9Jbml0aWFsaXplIF9QeVNIQTNfS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfT3ZlcndyaXRlTGFuZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcworI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8xMnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcworI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYgorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMKKyNkZWZpbmUgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlSW5pdGlhbGl6ZQorI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplCisjaWYgS2VjY2FrT3B0ID09IDMyCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGUgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRCeXRlCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyBfUHlTSEEzX0tlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcworI2RlZmluZSBLZWNjYWtQMTYwMF9TZXRCeXRlc0luTGFuZVRvWmVybyBfUHlTSEEzX0tlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvCisjZW5kaWYKKworLyogd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBLZWNjYWtQMTYwMCAqLworI2RlZmluZSBLZWNjYWtQMjAwX2V4Y2x1ZGVkIDEKKyNkZWZpbmUgS2VjY2FrUDQwMF9leGNsdWRlZCAxCisjZGVmaW5lIEtlY2Nha1A4MDBfZXhjbHVkZWQgMQorCisvKiBpbmxpbmUgYWxsIEtlY2NhayBkZXBlbmRlbmNpZXMgKi8KKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5oIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuaCIKKyNpbmNsdWRlICJrY3AvS2VjY2FrSGFzaC5jIgorI2luY2x1ZGUgImtjcC9LZWNjYWtTcG9uZ2UuYyIKKyNpZiBLZWNjYWtPcHQgPT0gNjQKKyAgI2luY2x1ZGUgImtjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYyIKKyNlbGlmIEtlY2Nha09wdCA9PSAzMgorICAjaW5jbHVkZSAia2NwL0tlY2Nha1AtMTYwMC1pbnBsYWNlMzJCSS5jIgorI2VuZGlmCisKKyNkZWZpbmUgU0hBM19NQVhfRElHRVNUU0laRSA2NCAvKiA2NCBCeXRlcyAoNTEyIEJpdHMpIGZvciAyMjQgdG8gNTEyICovCisjZGVmaW5lIFNIQTNfTEFORVNJWkUgKDIwICogOCkgLyogRXh0cmFjdExhbmUgbmVlZHMgbWF4IHVpbnQ2NF90WzIwXSBleHRyYS4gKi8KKyNkZWZpbmUgU0hBM19zdGF0ZSBLZWNjYWtfSGFzaEluc3RhbmNlCisjZGVmaW5lIFNIQTNfaW5pdCBLZWNjYWtfSGFzaEluaXRpYWxpemUKKyNkZWZpbmUgU0hBM19wcm9jZXNzIEtlY2Nha19IYXNoVXBkYXRlCisjZGVmaW5lIFNIQTNfZG9uZSBLZWNjYWtfSGFzaEZpbmFsCisjZGVmaW5lIFNIQTNfc3F1ZWV6ZSBLZWNjYWtfSGFzaFNxdWVlemUKKyNkZWZpbmUgU0hBM19jb3B5c3RhdGUoZGVzdCwgc3JjKSBtZW1jcHkoJihkZXN0KSwgJihzcmMpLCBzaXplb2YoU0hBM19zdGF0ZSkpCisKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9zaGEzCitjbGFzcyBfc2hhMy5zaGEzXzIyNCAiU0hBM29iamVjdCAqIiAiJlNIQTNfMjI0dHlwIgorY2xhc3MgX3NoYTMuc2hhM18yNTYgIlNIQTNvYmplY3QgKiIgIiZTSEEzXzI1NnR5cCIKK2NsYXNzIF9zaGEzLnNoYTNfMzg0ICJTSEEzb2JqZWN0ICoiICImU0hBM18zODR0eXAiCitjbGFzcyBfc2hhMy5zaGEzXzUxMiAiU0hBM29iamVjdCAqIiAiJlNIQTNfNTEydHlwIgorY2xhc3MgX3NoYTMuc2hha2VfMTI4ICJTSEEzb2JqZWN0ICoiICImU0hBS0UxMjh0eXBlIgorY2xhc3MgX3NoYTMuc2hha2VfMjU2ICJTSEEzb2JqZWN0ICoiICImU0hBS0UyNTZ0eXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjhhNTM2ODBmMzcwMjg1YV0qLworCisvKiBUaGUgc3RydWN0dXJlIGZvciBzdG9yaW5nIFNIQTMgaW5mbyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFNIQTNfc3RhdGUgaGFzaF9zdGF0ZTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOworI2VuZGlmCit9IFNIQTNvYmplY3Q7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM18yMjR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzI1NnR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfMzg0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM181MTJ0eXBlOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha18yMjR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfMjU2dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzM4NHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha181MTJ0eXBlOworI2VuZGlmCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQUtFMTI4dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBS0UyNTZ0eXBlOworCisjaW5jbHVkZSAiY2xpbmljL3NoYTNtb2R1bGUuYy5oIgorCitzdGF0aWMgU0hBM29iamVjdCAqCituZXdTSEEzb2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBTSEEzb2JqZWN0ICpuZXdvYmo7CisgICAgbmV3b2JqID0gKFNIQTNvYmplY3QgKilQeU9iamVjdF9OZXcoU0hBM29iamVjdCwgdHlwZSk7CisgICAgaWYgKG5ld29iaiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIG5ld29iai0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gbmV3b2JqOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX3NoYTMuc2hhM18yMjQuX19uZXdfXyBhcyBweV9zaGEzX25ldworICAgIHN0cmluZyBhcyBkYXRhOiBvYmplY3QgPSBOVUxMCisKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqZGF0YSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZDVjMzQyNzllNjliZjA5IGlucHV0PWQ3YzU4MmI5NTBhODU4YjZdKi8KK3sKKyAgICBTSEEzb2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeV9idWZmZXIgYnVmID0ge05VTEwsIE5VTEx9OworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgc2VsZiA9IG5ld1NIQTNvYmplY3QodHlwZSk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICh0eXBlID09ICZTSEEzXzIyNHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMjI0KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yNTYoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18zODR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzM4NCgmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzUxMnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfNTEyKCZzZWxmLT5oYXNoX3N0YXRlKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzIyNHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCAxMTUyLCA0NDgsIDIyNCwgMHgwMSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDEwODgsIDUxMiwgMjU2LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18zODR0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgODMyLCA3NjgsIDM4NCwgMHgwMSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfNTEydHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDU3NiwgMTAyNCwgNTEyLCAweDAxKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UxMjh0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEFLRTEyOCgmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTI1NnR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMjU2KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1IoZGF0YSwgJmJ1ZiwgZ290byBlcnJvcik7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgaWYgKGJ1Zi5sZW4gPj0gSEFTSExJQl9HSUxfTUlOU0laRSkgeworICAgICAgICAgICAgLyogaW52YXJpYW50OiBOZXcgb2JqZWN0cyBjYW4ndCBiZSBhY2Nlc3NlZCBieSBvdGhlciBjb2RlIHlldCwKKyAgICAgICAgICAgICAqIHRodXMgaXQncyBzYWZlIHRvIHJlbGVhc2UgdGhlIEdJTCB3aXRob3V0IGxvY2tpbmcgdGhlIG9iamVjdC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworI2VuZGlmCisgICAgICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworCisgIGVycm9yOgorICAgIGlmIChzZWxmKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICB9CisgICAgaWYgKGRhdGEgJiYgYnVmLm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworCisvKiBJbnRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCisKK3N0YXRpYyB2b2lkCitTSEEzX2RlYWxsb2MoU0hBM29iamVjdCAqc2VsZikKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICB9CisjZW5kaWYKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKKworLyogRXh0ZXJuYWwgbWV0aG9kcyBmb3IgYSBoYXNoIG9iamVjdCAqLworCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LmNvcHkKKworUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9jb3B5X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YzUzNzQxMWVjZGNkYTRjIGlucHV0PTkzYTQ0YWFlYmVhNTFiYThdKi8KK3sKKyAgICBTSEEzb2JqZWN0ICpuZXdvYmo7CisKKyAgICBpZiAoKG5ld29iaiA9IG5ld1NIQTNvYmplY3QoUHlfVFlQRShzZWxmKSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgU0hBM19jb3B5c3RhdGUobmV3b2JqLT5oYXNoX3N0YXRlLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdvYmo7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQuZGlnZXN0CisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZDUzMTg0MmUyMGIyZDViIGlucHV0PWE1ODA3OTE3ZDIxOWIzMGVdKi8KK3sKKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEzX01BWF9ESUdFU1RTSVpFICsgU0hBM19MQU5FU0laRV07CisgICAgU0hBM19zdGF0ZSB0ZW1wOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgZGlnZXN0KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgRmluYWwoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmhhc2hfc3RhdGUuZml4ZWRPdXRwdXRMZW5ndGggLyA4KTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NWFkMDMyNTc5MDY5MThkIGlucHV0PTJkOTFiYjZlMGQxMTRlZTNdKi8KK3sKKyAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEEzX01BWF9ESUdFU1RTSVpFICsgU0hBM19MQU5FU0laRV07CisgICAgU0hBM19zdGF0ZSB0ZW1wOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgZGlnZXN0KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgRmluYWwoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeV9zdHJoZXgoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LnVwZGF0ZQorCisgICAgb2JqOiBvYmplY3QKKyAgICAvCisKK1VwZGF0ZSB0aGlzIGhhc2ggb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGUgcHJvdmlkZWQgc3RyaW5nLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfdXBkYXRlKFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDY3MjFkNTViNDgzZTBhZiBpbnB1dD1iZTQ0YmYwZDFjMjc5NzkxXSovCit7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBIYXNoUmV0dXJuIHJlczsKKworICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCAmYnVmKTsKKworICAgIC8qIGFkZCBuZXcgZGF0YSwgdGhlIGZ1bmN0aW9uIHRha2VzIHRoZSBsZW5ndGggaW4gYml0cyBub3QgYnl0ZXMgKi8KKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgfQorICAgIC8qIE9uY2UgYSBsb2NrIGV4aXN0cyBhbGwgY29kZSBwYXRocyBtdXN0IGJlIHN5bmNocm9uaXplZC4gV2UgaGF2ZSB0bworICAgICAqIHJlbGVhc2UgdGhlIEdJTCBldmVuIGZvciBzbWFsbCBidWZmZXJzIGFzIGFjcXVpcmluZyB0aGUgbG9jayBtYXkgdGFrZQorICAgICAqIGFuIHVubGltaXRlZCBhbW91bnQgb2YgdGltZSB3aGVuIGFub3RoZXIgdGhyZWFkIHVwZGF0ZXMgdGhpcyBvYmplY3QKKyAgICAgKiB3aXRoIGxvdHMgb2YgZGF0YS4gKi8KKyAgICBpZiAoc2VsZi0+bG9jaykgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrLCAxKTsKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlcyA9IFNIQTNfcHJvY2Vzcygmc2VsZi0+aGFzaF9zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbiAqIDgpOworICAgIH0KKyNlbHNlCisgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisjZW5kaWYKKworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIFNIQTMgVXBkYXRlKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmKTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIFNIQTNfbWV0aG9kc1tdID0geworICAgIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9VUERBVEVfTUVUSE9EREVGCisgICAge05VTEwsICAgICAgICBOVUxMfSAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9ibG9ja19zaXplKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IHJhdGUgPSBzZWxmLT5oYXNoX3N0YXRlLnNwb25nZS5yYXRlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocmF0ZSAvIDgpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9uYW1lKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKKyAgICBpZiAodHlwZSA9PSAmU0hBM18yMjR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM18yMjQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMjU2dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfMjU2Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzM4NHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzM4NCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM181MTJ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM181MTIiKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzIyNHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfMjI0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjU2dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha18yNTYiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18zODR0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzM4NCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzUxMnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfNTEyIik7CisjZW5kaWYKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMTI4dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYWtlXzEyOCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UyNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hha2VfMjU2Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfZGlnZXN0X3NpemUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmhhc2hfc3RhdGUuZml4ZWRPdXRwdXRMZW5ndGggLyA4KTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfY2FwYWNpdHlfYml0cyhTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIGludCBjYXBhY2l0eSA9IDE2MDAgLSBzZWxmLT5oYXNoX3N0YXRlLnNwb25nZS5yYXRlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoY2FwYWNpdHkpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9yYXRlX2JpdHMoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZSA9IHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYXRlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X3N1ZmZpeChTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc3VmZml4WzJdOworICAgIHN1ZmZpeFswXSA9IHNlbGYtPmhhc2hfc3RhdGUuZGVsaW1pdGVkU3VmZml4OworICAgIHN1ZmZpeFsxXSA9IDA7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilzdWZmaXgsIDEpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBTSEEzX2dldHNldGVyc1tdID0geworICAgIHsiYmxvY2tfc2l6ZSIsIChnZXR0ZXIpU0hBM19nZXRfYmxvY2tfc2l6ZSwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJuYW1lIiwgKGdldHRlcilTSEEzX2dldF9uYW1lLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7ImRpZ2VzdF9zaXplIiwgKGdldHRlcilTSEEzX2dldF9kaWdlc3Rfc2l6ZSwgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfY2FwYWNpdHlfYml0cyIsIChnZXR0ZXIpU0hBM19nZXRfY2FwYWNpdHlfYml0cywgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfcmF0ZV9iaXRzIiwgKGdldHRlcilTSEEzX2dldF9yYXRlX2JpdHMsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiX3N1ZmZpeCIsIChnZXR0ZXIpU0hBM19nZXRfc3VmZml4LCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCit9OworCisKKyNkZWZpbmUgU0hBM19UWVBFKHR5cGVfb2JqLCB0eXBlX25hbWUsIHR5cGVfZG9jLCB0eXBlX21ldGhvZHMpIFwKKyAgICBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqID0geyBcCisgICAgICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKSBcCisgICAgICAgIHR5cGVfbmFtZSwgICAgICAgICAgLyogdHBfbmFtZSAqLyBcCisgICAgICAgIHNpemVvZihTSEEzb2JqZWN0KSwgLyogdHBfc2l6ZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8gXAorICAgICAgICAvKiAgbWV0aG9kcyAgKi8gXAorICAgICAgICAoZGVzdHJ1Y3RvcilTSEEzX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLyBcCisgICAgICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8gXAorICAgICAgICB0eXBlX2RvYywgICAgICAgICAgIC8qIHRwX2RvYyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovIFwKKyAgICAgICAgdHlwZV9tZXRob2RzLCAgICAgICAvKiB0cF9tZXRob2RzICovIFwKKyAgICAgICAgTlVMTCwgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovIFwKKyAgICAgICAgU0hBM19nZXRzZXRlcnMsICAgICAvKiB0cF9nZXRzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLyBcCisgICAgICAgIHB5X3NoYTNfbmV3LCAgICAgICAgLyogdHBfbmV3ICovIFwKKyAgICB9CisKK1B5RG9jX1NUUlZBUihzaGEzXzI1Nl9fZG9jX18sCisic2hhM18yNTYoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAzMiBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKHNoYTNfMzg0X19kb2NfXywKKyJzaGEzXzM4NChbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDQ4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoc2hhM181MTJfX2RvY19fLAorInNoYTNfNTEyKFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNjQgYnl0ZXMuIik7CisKK1NIQTNfVFlQRShTSEEzXzIyNHR5cGUsICJfc2hhMy5zaGEzXzIyNCIsIHB5X3NoYTNfbmV3X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzI1NnR5cGUsICJfc2hhMy5zaGEzXzI1NiIsIHNoYTNfMjU2X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzM4NHR5cGUsICJfc2hhMy5zaGEzXzM4NCIsIHNoYTNfMzg0X19kb2NfXywgU0hBM19tZXRob2RzKTsKK1NIQTNfVFlQRShTSEEzXzUxMnR5cGUsICJfc2hhMy5zaGEzXzUxMiIsIHNoYTNfNTEyX19kb2NfXywgU0hBM19tZXRob2RzKTsKKworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCitQeURvY19TVFJWQVIoa2VjY2FrXzIyNF9fZG9jX18sCisia2VjY2FrXzIyNChbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAyOCBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKGtlY2Nha18yNTZfX2RvY19fLAorImtlY2Nha18yNTYoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgMzIgYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihrZWNjYWtfMzg0X19kb2NfXywKKyJrZWNjYWtfMzg0KFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDQ4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoa2VjY2FrXzUxMl9fZG9jX18sCisia2VjY2FrXzUxMihbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA2NCBieXRlcy4iKTsKKworU0hBM19UWVBFKEtlY2Nha18yMjR0eXBlLCAiX3NoYTMua2VjY2FrXzIyNCIsIGtlY2Nha18yMjRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha18yNTZ0eXBlLCAiX3NoYTMua2VjY2FrXzI1NiIsIGtlY2Nha18yNTZfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha18zODR0eXBlLCAiX3NoYTMua2VjY2FrXzM4NCIsIGtlY2Nha18zODRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKEtlY2Nha181MTJ0eXBlLCAiX3NoYTMua2VjY2FrXzUxMiIsIGtlY2Nha181MTJfX2RvY19fLCBTSEEzX21ldGhvZHMpOworI2VuZGlmCisKKworc3RhdGljIFB5T2JqZWN0ICoKK19TSEFLRV9kaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBkaWdlc3RsZW4sIGludCBoZXgpCit7CisgICAgdW5zaWduZWQgY2hhciAqZGlnZXN0ID0gTlVMTDsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIC8qIEV4dHJhY3RMYW5lIG5lZWRzIGF0IGxlYXN0IFNIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFIGFuZAorICAgICAqIFNIQTNfTEFORVNJWkUgZXh0cmEgc3BhY2UuCisgICAgICovCisgICAgZGlnZXN0ID0gKHVuc2lnbmVkIGNoYXIqKVB5TWVtX01hbGxvYyhkaWdlc3RsZW4gKyBTSEEzX0xBTkVTSVpFKTsKKyAgICBpZiAoZGlnZXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorCisgICAgLyogR2V0IHRoZSByYXcgKGJpbmFyeSkgZGlnZXN0IHZhbHVlICovCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZSh0ZW1wLCBzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJlcyA9IFNIQTNfZG9uZSgmdGVtcCwgTlVMTCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIGRvbmUoKSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICByZXMgPSBTSEEzX3NxdWVlemUoJnRlbXAsIGRpZ2VzdCwgZGlnZXN0bGVuICogOCk7CisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIFNxdWVlemUoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGhleCkgeworICAgICAgICAgcmVzdWx0ID0gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgZGlnZXN0bGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopZGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdGxlbik7CisgICAgfQorICBlcnJvcjoKKyAgICBpZiAoZGlnZXN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShkaWdlc3QpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYWtlXzEyOC5kaWdlc3QKKworICAgIGxlbmd0aDogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisgICAgXAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMzEzNjA1ZTJmODdiYjhmIGlucHV0PTYwOGM4Y2E4MGFlOWQxMTVdKi8KK3sKKyAgICByZXR1cm4gX1NIQUtFX2RpZ2VzdChzZWxmLCBsZW5ndGgsIDApOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYWtlXzEyOC5oZXhkaWdlc3QKKworICAgIGxlbmd0aDogdW5zaWduZWRfbG9uZyhiaXR3aXNlPVRydWUpCisgICAgXAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0X2ltcGwoU0hBM29iamVjdCAqc2VsZiwgdW5zaWduZWQgbG9uZyBsZW5ndGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY4ZTJmMWU0OTA5NDRhOCBpbnB1dD02NGU1NmI0NzYwZGI0NTczXSovCit7CisgICAgcmV0dXJuIF9TSEFLRV9kaWdlc3Qoc2VsZiwgbGVuZ3RoLCAxKTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgU0hBS0VfbWV0aG9kc1tdID0geworICAgIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBS0VfMTI4X0RJR0VTVF9NRVRIT0RERUYKKyAgICBfU0hBM19TSEFLRV8xMjhfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK1B5RG9jX1NUUlZBUihzaGFrZV8xMjhfX2RvY19fLAorInNoYWtlXzEyOChbc3RyaW5nXSkgLT4gU0hBS0Ugb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEFLRSBoYXNoIG9iamVjdC4iKTsKKworUHlEb2NfU1RSVkFSKHNoYWtlXzI1Nl9fZG9jX18sCisic2hha2VfMjU2KFtzdHJpbmddKSAtPiBTSEFLRSBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQUtFIGhhc2ggb2JqZWN0LiIpOworCitTSEEzX1RZUEUoU0hBS0UxMjh0eXBlLCAiX3NoYTMuc2hha2VfMTI4Iiwgc2hha2VfMTI4X19kb2NfXywgU0hBS0VfbWV0aG9kcyk7CitTSEEzX1RZUEUoU0hBS0UyNTZ0eXBlLCAiX3NoYTMuc2hha2VfMjU2Iiwgc2hha2VfMjU2X19kb2NfXywgU0hBS0VfbWV0aG9kcyk7CisKKworLyogSW5pdGlhbGl6ZSB0aGlzIG1vZHVsZS4gKi8KK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX1NIQTNtb2R1bGUgPSB7CisgICAgICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKKyAgICAgICAgIl9zaGEzIiwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgLTEsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwsCisgICAgICAgIE5VTEwKK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fc2hhMyh2b2lkKQoreworICAgIFB5T2JqZWN0ICptID0gTlVMTDsKKworICAgIGlmICgobSA9IFB5TW9kdWxlX0NyZWF0ZSgmX1NIQTNtb2R1bGUpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworI2RlZmluZSBpbml0X3NoYTN0eXBlKG5hbWUsIHR5cGUpICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfVFlQRSh0eXBlKSA9ICZQeVR5cGVfVHlwZTsgXAorICAgICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkgeyBcCisgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopdHlwZSk7ICBcCisgICAgICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgbmFtZSwgKFB5T2JqZWN0ICopdHlwZSkgPCAwKSB7IFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSgwKQorCisgICAgaW5pdF9zaGEzdHlwZSgic2hhM18yMjQiLCAmU0hBM18yMjR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzI1NiIsICZTSEEzXzI1NnR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfMzg0IiwgJlNIQTNfMzg0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hhM181MTIiLCAmU0hBM181MTJ0eXBlKTsKKyNpZmRlZiBQWV9XSVRIX0tFQ0NBSworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18yMjQiLCAmS2VjY2FrXzIyNHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18yNTYiLCAmS2VjY2FrXzI1NnR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha18zODQiLCAmS2VjY2FrXzM4NHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoImtlY2Nha181MTIiLCAmS2VjY2FrXzUxMnR5cGUpOworI2VuZGlmCisgICAgaW5pdF9zaGEzdHlwZSgic2hha2VfMTI4IiwgJlNIQUtFMTI4dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hha2VfMjU2IiwgJlNIQUtFMjU2dHlwZSk7CisKKyN1bmRlZiBpbml0X3NoYTN0eXBlCisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImtlY2Nha29wdCIsIEtlY2Nha09wdCkgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiaW1wbGVtZW50YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbikgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIG07CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihtKTsKKyAgICByZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKaW5kZXggMzY4OWE0ZS4uNjJjNTg5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKQEAgLTI0NCw4ICsyNDQsNyBAQAogICAgICAgICBwdHIgPSBwdHItPm5leHQ7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgY2FjaGVfbWV0aG9kc1tdID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKaW5kZXggNzBkMDk5NS4uZjM3ZGU0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCkBAIC0xNjUsNyArMTY1LDYgQEAKICAgICBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmRlY3JlZl9mYWN0b3J5ID0gMDsKICAgICBQeV9ERUNSRUYoc2VsZik7CiAKLSAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKICAgICBzZWxmLT5kZXRlY3RfdHlwZXMgPSBkZXRlY3RfdHlwZXM7CiAgICAgc2VsZi0+dGltZW91dCA9IHRpbWVvdXQ7CiAgICAgKHZvaWQpc3FsaXRlM19idXN5X3RpbWVvdXQoc2VsZi0+ZGIsIChpbnQpKHRpbWVvdXQqMTAwMCkpOwpAQCAtMjAyLDI2ICsyMDEsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiBFbXB0eSB0aGUgZW50aXJlIHN0YXRlbWVudCBjYWNoZSBvZiB0aGlzIGNvbm5lY3Rpb24gKi8KLXZvaWQgcHlzcWxpdGVfZmx1c2hfc3RhdGVtZW50X2NhY2hlKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYpCi17Ci0gICAgcHlzcWxpdGVfTm9kZSogbm9kZTsKLSAgICBweXNxbGl0ZV9TdGF0ZW1lbnQqIHN0YXRlbWVudDsKLQotICAgIG5vZGUgPSBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmZpcnN0OwotCi0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgc3RhdGVtZW50ID0gKHB5c3FsaXRlX1N0YXRlbWVudCopKG5vZGUtPmRhdGEpOwotICAgICAgICAodm9pZClweXNxbGl0ZV9zdGF0ZW1lbnRfZmluYWxpemUoc3RhdGVtZW50KTsKLSAgICAgICAgbm9kZSA9IG5vZGUtPm5leHQ7Ci0gICAgfQotCi0gICAgUHlfU0VUUkVGKHNlbGYtPnN0YXRlbWVudF9jYWNoZSwKLSAgICAgICAgICAgICAgKHB5c3FsaXRlX0NhY2hlICopUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZweXNxbGl0ZV9DYWNoZVR5cGUsICJPIiwgc2VsZikpOwotICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICBzZWxmLT5zdGF0ZW1lbnRfY2FjaGUtPmRlY3JlZl9mYWN0b3J5ID0gMDsKLX0KLQogLyogYWN0aW9uIGluIChBQ1RJT05fUkVTRVQsIEFDVElPTl9GSU5BTElaRSkgKi8KIHZvaWQgcHlzcWxpdGVfZG9fYWxsX3N0YXRlbWVudHMocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgaW50IGFjdGlvbiwgaW50IHJlc2V0X2N1cnNvcnMpCiB7CkBAIC0zNjYsOCArMzQ1LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogLyoKQEAgLTQwNiw5ICszODQsNyBAQAogICAgIH0KIAogICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgIGlmIChyYyA9PSBTUUxJVEVfRE9ORSkgewotICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMTsKLSAgICB9IGVsc2UgeworICAgIGlmIChyYyAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICBfcHlzcWxpdGVfc2V0ZXJyb3Ioc2VsZi0+ZGIsIHN0YXRlbWVudCk7CiAgICAgfQogCkBAIC00MzksNyArNDE1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHNlbGYtPmluVHJhbnNhY3Rpb24pIHsKKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICByYyA9IHNxbGl0ZTNfcHJlcGFyZShzZWxmLT5kYiwgIkNPTU1JVCIsIC0xLCAmc3RhdGVtZW50LCAmdGFpbCk7CkBAIC00NTAsOSArNDI2LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgICAgICBpZiAocmMgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAocmMgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICAgICAgfQogCkBAIC00ODQsNyArNDU4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKHNlbGYtPmluVHJhbnNhY3Rpb24pIHsKKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CiAgICAgICAgIHB5c3FsaXRlX2RvX2FsbF9zdGF0ZW1lbnRzKHNlbGYsIEFDVElPTl9SRVNFVCwgMSk7CiAKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNDk2LDkgKzQ3MCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICByYyA9IHB5c3FsaXRlX3N0ZXAoc3RhdGVtZW50LCBzZWxmKTsKLSAgICAgICAgaWYgKHJjID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHJjICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICBfcHlzcWxpdGVfc2V0ZXJyb3Ioc2VsZi0+ZGIsIHN0YXRlbWVudCk7CiAgICAgICAgIH0KIApAQCAtNjczLDcgKzY0NSw3IEBACiAgICAgYWdncmVnYXRlX2luc3RhbmNlID0gKFB5T2JqZWN0Kiopc3FsaXRlM19hZ2dyZWdhdGVfY29udGV4dChjb250ZXh0LCBzaXplb2YoUHlPYmplY3QqKSk7CiAKICAgICBpZiAoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9PSAwKSB7Ci0gICAgICAgICphZ2dyZWdhdGVfaW5zdGFuY2UgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oYWdncmVnYXRlX2NsYXNzLCAiIik7CisgICAgICAgICphZ2dyZWdhdGVfaW5zdGFuY2UgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oYWdncmVnYXRlX2NsYXNzLCBOVUxMKTsKIAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IDA7CkBAIC03NDUsNyArNzE3LDcgQEAKICAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdmFsdWUsICZ0Yik7CiAgICAgcmVzdG9yZSA9IDE7CiAKLSAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCAiIik7CisgICAgZnVuY3Rpb25fcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgqYWdncmVnYXRlX2luc3RhbmNlLCAmUHlJZF9maW5hbGl6ZSwgTlVMTCk7CiAKICAgICBQeV9ERUNSRUYoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSk7CiAKQEAgLTg3NCw4ICs4NDYsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGZ1bmMsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC05MDYsOCArODc3LDcgQEAKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmZ1bmN0aW9uX3BpbmJvYXJkLCBhZ2dyZWdhdGVfY2xhc3MsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC05NjMsNyArOTMzLDcgQEAKIAogICAgIGdpbHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKICNlbmRpZgotICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKXVzZXJfYXJnLCAiIik7CisgICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopdXNlcl9hcmcsIE5VTEwpOwogCiAgICAgaWYgKCFyZXQpIHsKICAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewpAQCAtMTA0Miw4ICsxMDEyLDcgQEAKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHNlbGYtPmZ1bmN0aW9uX3BpbmJvYXJkLCBhdXRob3JpemVyX2NiLCBQeV9Ob25lKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtMTA3Miw4ICsxMDQxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX3NldF90cmFjZV9jYWxsYmFjayhweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3YXJncykKQEAgLTExMDAsOCArMTA2OCw3IEBACiAgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIF90cmFjZV9jYWxsYmFjaywgdHJhY2VfY2FsbGJhY2spOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogI2lmZGVmIEhBVkVfTE9BRF9FWFRFTlNJT04KQEAgLTExMjQsOCArMTA5MSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCAiRXJyb3IgZW5hYmxpbmcgbG9hZCBleHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xMTQ4LDggKzExMTQsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgZXJybXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xMTg2LDYgKzExNTEsMTcgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCogcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaW5fdHJhbnNhY3Rpb24ocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgdm9pZCogdW51c2VkKQoreworICAgIGlmICghcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmRiKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgUHlfUkVUVVJOX0ZBTFNFOworfQorCiBzdGF0aWMgaW50IHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2lzb2xhdGlvbl9sZXZlbChweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogaXNvbGF0aW9uX2xldmVsKQogewogICAgIGlmIChpc29sYXRpb25fbGV2ZWwgPT0gUHlfTm9uZSkgewpAQCAtMTE5Niw3ICsxMTcyLDYgQEAKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAKICAgICAgICAgc2VsZi0+YmVnaW5fc3RhdGVtZW50ID0gTlVMTDsKLSAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpjYW5kaWRhdGU7CiAgICAgICAgIFB5T2JqZWN0ICp1cHBlcmNhc2VfbGV2ZWw7CkBAIC0xMjk5LDcgKzEyNzQsNyBAQAogICAgIFB5T2JqZWN0KiByZXN1bHQgPSAwOwogICAgIFB5T2JqZWN0KiBtZXRob2QgPSAwOwogCi0gICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsIE5VTEwpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTMyOCw3ICsxMzAzLDcgQEAKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKIAotICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKKyAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCBOVUxMKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEzNTcsNyArMTMzMiw3IEBACiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CiAKLSAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgTlVMTCk7CiAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0xNjIxLDcgKzE1OTYsNyBAQAogICAgICAgICBtZXRob2RfbmFtZSA9ICJyb2xsYmFjayI7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsIG1ldGhvZF9uYW1lLCAiIik7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKXNlbGYsIG1ldGhvZF9uYW1lLCBOVUxMKTsKICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNjMwLDEyICsxNjA1LDEzIEBACiAgICAgUHlfUkVUVVJOX0ZBTFNFOwogfQogCi1zdGF0aWMgY2hhciBjb25uZWN0aW9uX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvbm5lY3Rpb25fZG9jW10gPQogUHlEb2NfU1RSKCJTUUxpdGUgZGF0YWJhc2UgY29ubmVjdGlvbiBvYmplY3QuIik7CiAKIHN0YXRpYyBQeUdldFNldERlZiBjb25uZWN0aW9uX2dldHNldFtdID0gewogICAgIHsiaXNvbGF0aW9uX2xldmVsIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaXNvbGF0aW9uX2xldmVsLCAoc2V0dGVyKXB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X2lzb2xhdGlvbl9sZXZlbH0sCiAgICAgeyJ0b3RhbF9jaGFuZ2VzIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfdG90YWxfY2hhbmdlcywgKHNldHRlcikwfSwKKyAgICB7ImluX3RyYW5zYWN0aW9uIiwgIChnZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9nZXRfaW5fdHJhbnNhY3Rpb24sIChzZXR0ZXIpMH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xNjk3LDcgKzE2NzMsNiBAQAogICAgIHsiTm90U3VwcG9ydGVkRXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgTm90U3VwcG9ydGVkRXJyb3IpLCBSRUFET05MWX0sCiAgICAgeyJyb3dfZmFjdG9yeSIsIFRfT0JKRUNULCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCByb3dfZmFjdG9yeSl9LAogICAgIHsidGV4dF9mYWN0b3J5IiwgVF9PQkpFQ1QsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIHRleHRfZmFjdG9yeSl9LAotICAgIHsiaW5fdHJhbnNhY3Rpb24iLCBUX0JPT0wsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIGluVHJhbnNhY3Rpb24pLCBSRUFET05MWX0sCiAgICAge05VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCBhZGJmYjU0Li4yODYwYTBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTM3LDEwICszNyw2IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIHNxbGl0ZTMqIGRiOwogCi0gICAgLyogMSBpZiB3ZSBhcmUgY3VycmVudGx5IHdpdGhpbiBhIHRyYW5zYWN0aW9uLCBpLiBlLiBpZiBhIEJFR0lOIGhhcyBiZWVuCi0gICAgICogaXNzdWVkICovCi0gICAgY2hhciBpblRyYW5zYWN0aW9uOwotCiAgICAgLyogdGhlIHR5cGUgZGV0ZWN0aW9uIG1vZGUuIE9ubHkgMCwgUEFSU0VfREVDTFRZUEVTLCBQQVJTRV9DT0xOQU1FUyBvciBhCiAgICAgICogYml0d2lzZSBjb21iaW5hdGlvbiB0aGVyZW9mIG1ha2VzIHNlbnNlICovCiAgICAgaW50IGRldGVjdF90eXBlczsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwppbmRleCBlMTY3NmRlLi5jNzE2OWY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCkBAIC0yNyw0NSArMjcsNyBAQAogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2l0ZXJuZXh0KHB5c3FsaXRlX0N1cnNvciogc2VsZik7CiAKLXN0YXRpYyBjaGFyKiBlcnJtc2dfZmV0Y2hfYWNyb3NzX3JvbGxiYWNrID0gIkN1cnNvciBuZWVkZWQgdG8gYmUgcmVzZXQgYmVjYXVzZSBvZiBjb21taXQvcm9sbGJhY2sgYW5kIGNhbiBubyBsb25nZXIgYmUgZmV0Y2hlZCBmcm9tLiI7Ci0KLXN0YXRpYyBweXNxbGl0ZV9TdGF0ZW1lbnRLaW5kIGRldGVjdF9zdGF0ZW1lbnRfdHlwZShjb25zdCBjaGFyKiBzdGF0ZW1lbnQpCi17Ci0gICAgY2hhciBidWZbMjBdOwotICAgIGNvbnN0IGNoYXIqIHNyYzsKLSAgICBjaGFyKiBkc3Q7Ci0KLSAgICBzcmMgPSBzdGF0ZW1lbnQ7Ci0gICAgLyogc2tpcCBvdmVyIHdoaXRlcGFjZSAqLwotICAgIHdoaWxlICgqc3JjID09ICdccicgfHwgKnNyYyA9PSAnXG4nIHx8ICpzcmMgPT0gJyAnIHx8ICpzcmMgPT0gJ1x0JykgewotICAgICAgICBzcmMrKzsKLSAgICB9Ci0KLSAgICBpZiAoKnNyYyA9PSAwKQotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0lOVkFMSUQ7Ci0KLSAgICBkc3QgPSBidWY7Ci0gICAgKmRzdCA9IDA7Ci0gICAgd2hpbGUgKFB5X0lTQUxQSEEoKnNyYykgJiYgKGRzdCAtIGJ1ZikgPCAoKFB5X3NzaXplX3Qpc2l6ZW9mKGJ1ZikgLSAyKSkgewotICAgICAgICAqZHN0KysgPSBQeV9UT0xPV0VSKCpzcmMrKyk7Ci0gICAgfQotCi0gICAgKmRzdCA9IDA7Ci0KLSAgICBpZiAoIXN0cmNtcChidWYsICJzZWxlY3QiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX1NFTEVDVDsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAiaW5zZXJ0IikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9JTlNFUlQ7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgInVwZGF0ZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfVVBEQVRFOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJkZWxldGUiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0RFTEVURTsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAicmVwbGFjZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfUkVQTEFDRTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX09USEVSOwotICAgIH0KLX0KK3N0YXRpYyBjb25zdCBjaGFyIGVycm1zZ19mZXRjaF9hY3Jvc3Nfcm9sbGJhY2tbXSA9ICJDdXJzb3IgbmVlZGVkIHRvIGJlIHJlc2V0IGJlY2F1c2Ugb2YgY29tbWl0L3JvbGxiYWNrIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIGZldGNoZWQgZnJvbS4iOwogCiBzdGF0aWMgaW50IHB5c3FsaXRlX2N1cnNvcl9pbml0KHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrd2FyZ3MpCiB7CkBAIC0xNDMsNyArMTA1LDcgQEAKICAgICBQeU9iamVjdCogcmV0dmFsOwogICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKIAotICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsICIiKTsKKyAgICB1cGNhc2Vfa2V5ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChrZXksICZQeUlkX3VwcGVyLCBOVUxMKTsKICAgICBpZiAoIXVwY2FzZV9rZXkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjQyLDggKzIwNCw3IEBACiAgICAgY29uc3QgY2hhciogcG9zOwogCiAgICAgaWYgKCFjb2xuYW1lKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAogICAgIGZvciAocG9zID0gY29sbmFtZTs7IHBvcysrKSB7CkBAIC00MjgsOSArMzg5LDkgQEAKICAgICBQeU9iamVjdCogZnVuY19hcmdzOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7CiAgICAgaW50IG51bWNvbHM7Ci0gICAgaW50IHN0YXRlbWVudF90eXBlOwogICAgIFB5T2JqZWN0KiBkZXNjcmlwdG9yOwogICAgIFB5T2JqZWN0KiBzZWNvbmRfYXJndW1lbnQgPSBOVUxMOworICAgIHNxbGl0ZV9pbnQ2NCBsYXN0cm93aWQ7CiAKICAgICBpZiAoIWNoZWNrX2N1cnNvcihzZWxmKSkgewogICAgICAgICBnb3RvIGVycm9yOwpAQCAtNTExLDcgKzQ3Miw3IEBACiAgICAgLyogcmVzZXQgZGVzY3JpcHRpb24gYW5kIHJvd2NvdW50ICovCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIFB5X1NFVFJFRihzZWxmLT5kZXNjcmlwdGlvbiwgUHlfTm9uZSk7Ci0gICAgc2VsZi0+cm93Y291bnQgPSAtMUw7CisgICAgc2VsZi0+cm93Y291bnQgPSAwTDsKIAogICAgIGZ1bmNfYXJncyA9IFB5VHVwbGVfTmV3KDEpOwogICAgIGlmICghZnVuY19hcmdzKSB7CkBAIC01NTAsNDMgKzUxMSwxOSBAQAogICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgIHB5c3FsaXRlX3N0YXRlbWVudF9tYXJrX2RpcnR5KHNlbGYtPnN0YXRlbWVudCk7CiAKLSAgICBzdGF0ZW1lbnRfdHlwZSA9IGRldGVjdF9zdGF0ZW1lbnRfdHlwZShvcGVyYXRpb25fY3N0cik7Ci0gICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmJlZ2luX3N0YXRlbWVudCkgewotICAgICAgICBzd2l0Y2ggKHN0YXRlbWVudF90eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9VUERBVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9ERUxFVEU6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9JTlNFUlQ6Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9SRVBMQUNFOgotICAgICAgICAgICAgICAgIGlmICghc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbikgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBfcHlzcWxpdGVfY29ubmVjdGlvbl9iZWdpbihzZWxmLT5jb25uZWN0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfT1RIRVI6Ci0gICAgICAgICAgICAgICAgLyogaXQncyBhIERETCBzdGF0ZW1lbnQgb3Igc29tZXRoaW5nIHNpbWlsYXIKLSAgICAgICAgICAgICAgICAgICAtIHdlIGJldHRlciBDT01NSVQgZmlyc3Qgc28gaXQgd29ya3MgZm9yIGFsbCBjYXNlcyAqLwotICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5c3FsaXRlX2Nvbm5lY3Rpb25fY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24sIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9TRUxFQ1Q6Ci0gICAgICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Qcm9ncmFtbWluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91IGNhbm5vdCBleGVjdXRlIFNFTEVDVCBzdGF0ZW1lbnRzIGluIGV4ZWN1dGVtYW55KCkuIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgIC8qIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBkbyBub3Qgc3RhcnQgYSB0cmFuc2FjdGlvbiBpZiBhCisgICAgICAgRERMIHN0YXRlbWVudCBpcyBlbmNvdW50ZXJlZC4gIElmIGFueWJvZHkgd2FudHMgdHJhbnNhY3Rpb25hbCBEREwsCisgICAgICAgdGhleSBjYW4gaXNzdWUgYSBCRUdJTiBzdGF0ZW1lbnQgbWFudWFsbHkuICovCisgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmJlZ2luX3N0YXRlbWVudCAmJiAhc3FsaXRlM19zdG10X3JlYWRvbmx5KHNlbGYtPnN0YXRlbWVudC0+c3QpICYmICFzZWxmLT5zdGF0ZW1lbnQtPmlzX2RkbCkgeworICAgICAgICBpZiAoc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5jb25uZWN0aW9uLT5kYikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9weXNxbGl0ZV9jb25uZWN0aW9uX2JlZ2luKHNlbGYtPmNvbm5lY3Rpb24pOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CiAKLQogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHBhcmFtZXRlcnMgPSBQeUl0ZXJfTmV4dChwYXJhbWV0ZXJzX2l0ZXIpOwogICAgICAgICBpZiAoIXBhcmFtZXRlcnMpIHsKQEAgLTY3Miw2ICs2MDksMjAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIGlmICghc3FsaXRlM19zdG10X3JlYWRvbmx5KHNlbGYtPnN0YXRlbWVudC0+c3QpKSB7CisgICAgICAgICAgICBzZWxmLT5yb3djb3VudCArPSAobG9uZylzcWxpdGUzX2NoYW5nZXMoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VsZi0+cm93Y291bnQ9IC0xTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbXVsdGlwbGUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5sYXN0cm93aWQpOworICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgbGFzdHJvd2lkID0gc3FsaXRlM19sYXN0X2luc2VydF9yb3dpZChzZWxmLT5jb25uZWN0aW9uLT5kYik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgc2VsZi0+bGFzdHJvd2lkID0gX3B5c3FsaXRlX2xvbmdfZnJvbV9pbnQ2NChsYXN0cm93aWQpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHJjID09IFNRTElURV9ST1cpIHsKICAgICAgICAgICAgIGlmIChtdWx0aXBsZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Qcm9ncmFtbWluZ0Vycm9yLCAiZXhlY3V0ZW1hbnkoKSBjYW4gb25seSBleGVjdXRlIERNTCBzdGF0ZW1lbnRzLiIpOwpAQCAtNjg2LDI5ICs2MzcsNiBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaCAoc3RhdGVtZW50X3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1VQREFURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0RFTEVURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0lOU0VSVDoKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1JFUExBQ0U6Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGYtPnJvd2NvdW50ID09IC0xTCkgewotICAgICAgICAgICAgICAgICAgICBzZWxmLT5yb3djb3VudCA9IDBMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZWxmLT5yb3djb3VudCArPSAobG9uZylzcWxpdGUzX2NoYW5nZXMoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICAgICB9Ci0KLSAgICAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3Ryb3dpZCk7Ci0gICAgICAgIGlmICghbXVsdGlwbGUgJiYgc3RhdGVtZW50X3R5cGUgPT0gU1RBVEVNRU5UX0lOU0VSVCkgewotICAgICAgICAgICAgc3FsaXRlX2ludDY0IGxhc3Ryb3dpZDsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIGxhc3Ryb3dpZCA9IHNxbGl0ZTNfbGFzdF9pbnNlcnRfcm93aWQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IF9weXNxbGl0ZV9sb25nX2Zyb21faW50NjQobGFzdHJvd2lkKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3Ryb3dpZCA9IFB5X05vbmU7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAobXVsdGlwbGUpIHsKICAgICAgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICB9CkBAIC03MTYsMTUgKzY0NCw2IEBACiAgICAgfQogCiBlcnJvcjoKLSAgICAvKiBqdXN0IHRvIGJlIHN1cmUgKGltcGxpY2l0IFJPTExCQUNLcyB3aXRoIE9OIENPTkZMSUNUIFJPTExCQUNLL09SCi0gICAgICogUk9MTEJBQ0sgY291bGQgaGF2ZSBoYXBwZW5lZCAqLwotICAgICNpZmRlZiBTUUxJVEVfVkVSU0lPTl9OVU1CRVIKLSAgICAjaWYgU1FMSVRFX1ZFUlNJT05fTlVNQkVSID49IDMwMDIwMDIKLSAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbiAmJiBzZWxmLT5jb25uZWN0aW9uLT5kYikKLSAgICAgICAgc2VsZi0+Y29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbiA9ICFzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKLSAgICAjZW5kaWYKLSAgICAjZW5kaWYKLQogICAgIFB5X1hERUNSRUYocGFyYW1ldGVycyk7CiAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzX2l0ZXIpOwogICAgIFB5X1hERUNSRUYocGFyYW1ldGVyc19saXN0KTsKQEAgLTkxMyw4ICs4MzIsNyBAQAogCiAgICAgcm93ID0gcHlzcWxpdGVfY3Vyc29yX2l0ZXJuZXh0KHNlbGYpOwogICAgIGlmICghcm93ICYmICFQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIAogICAgIHJldHVybiByb3c7CkBAIC05OTUsOCArOTEzLDcgQEAKIFB5T2JqZWN0KiBweXNxbGl0ZV9ub29wKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIC8qIGRvbid0IGNhcmUsIHJldHVybiBOb25lICovCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2Nsb3NlKHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCkBAIC0xMDEyLDggKzkyOSw3IEBACiAKICAgICBzZWxmLT5jbG9zZWQgPSAxOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgY3Vyc29yX21ldGhvZHNbXSA9IHsKQEAgLTEwNDksNyArOTY1LDcgQEAKICAgICB7TlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIGN1cnNvcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjdXJzb3JfZG9jW10gPQogUHlEb2NfU1RSKCJTUUxpdGUgZGF0YWJhc2UgY3Vyc29yIGNsYXNzLiIpOwogCiBQeVR5cGVPYmplY3QgcHlzcWxpdGVfQ3Vyc29yVHlwZSA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaCBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaAppbmRleCAxMThiYTM4Li4yOGJiZDVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oCkBAIC01MSwxMiArNTEsNiBAQAogICAgIFB5T2JqZWN0KiBpbl93ZWFrcmVmbGlzdDsgLyogTGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgKi8KIH0gcHlzcWxpdGVfQ3Vyc29yOwogCi10eXBlZGVmIGVudW0gewotICAgIFNUQVRFTUVOVF9JTlZBTElELCBTVEFURU1FTlRfSU5TRVJULCBTVEFURU1FTlRfREVMRVRFLAotICAgIFNUQVRFTUVOVF9VUERBVEUsIFNUQVRFTUVOVF9SRVBMQUNFLCBTVEFURU1FTlRfU0VMRUNULAotICAgIFNUQVRFTUVOVF9PVEhFUgotfSBweXNxbGl0ZV9TdGF0ZW1lbnRLaW5kOwotCiBleHRlcm4gUHlUeXBlT2JqZWN0IHB5c3FsaXRlX0N1cnNvclR5cGU7CiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jdXJzb3JfZXhlY3V0ZShweXNxbGl0ZV9DdXJzb3IqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwppbmRleCA3YTdlODYwLi5jYzQ1MzMxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCkBAIC0xMzksOCArMTM5LDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX09wZXJhdGlvbmFsRXJyb3IsICJDaGFuZ2luZyB0aGUgc2hhcmVkX2NhY2hlIGZsYWcgZmFpbGVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KIH0KIApAQCAtMTcyLDggKzE3MSw3IEBACiAgICAgaWYgKHJjID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9yZWdpc3Rlcl9hZGFwdGVyX2RvYywKQEAgLTE5NCw3ICsxOTIsNyBAQAogICAgIH0KIAogICAgIC8qIGNvbnZlcnQgdGhlIG5hbWUgdG8gdXBwZXIgY2FzZSAqLwotICAgIG5hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9yaWdfbmFtZSwgJlB5SWRfdXBwZXIsICIiKTsKKyAgICBuYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvcmlnX25hbWUsICZQeUlkX3VwcGVyLCBOVUxMKTsKICAgICBpZiAoIW5hbWUpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0yMjEsOCArMjE5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3NfZG9jLApAQCAtMjYxLDEzICsyNTgsMTMgQEAKIH07CiAKIHN0cnVjdCBfSW50Q29uc3RhbnRQYWlyIHsKLSAgICBjaGFyKiBjb25zdGFudF9uYW1lOworICAgIGNvbnN0IGNoYXIgKmNvbnN0YW50X25hbWU7CiAgICAgaW50IGNvbnN0YW50X3ZhbHVlOwogfTsKIAogdHlwZWRlZiBzdHJ1Y3QgX0ludENvbnN0YW50UGFpciBJbnRDb25zdGFudFBhaXI7CiAKLXN0YXRpYyBJbnRDb25zdGFudFBhaXIgX2ludF9jb25zdGFudHNbXSA9IHsKK3N0YXRpYyBjb25zdCBJbnRDb25zdGFudFBhaXIgX2ludF9jb25zdGFudHNbXSA9IHsKICAgICB7IlBBUlNFX0RFQ0xUWVBFUyIsIFBBUlNFX0RFQ0xUWVBFU30sCiAgICAgeyJQQVJTRV9DT0xOQU1FUyIsIFBBUlNFX0NPTE5BTUVTfSwKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCmluZGV4IGU4NzA2MzMuLjdiOTgwMTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKQEAgLTU0LDYgKzU0LDcgQEAKICAgICBpbnQgcmM7CiAgICAgY29uc3QgY2hhciogc3FsX2NzdHI7CiAgICAgUHlfc3NpemVfdCBzcWxfY3N0cl9sZW47CisgICAgY29uc3QgY2hhciogcDsKIAogICAgIHNlbGYtPnN0ID0gTlVMTDsKICAgICBzZWxmLT5pbl91c2UgPSAwOwpAQCAtNzIsNiArNzMsMjMgQEAKICAgICBQeV9JTkNSRUYoc3FsKTsKICAgICBzZWxmLT5zcWwgPSBzcWw7CiAKKyAgICAvKiBkZXRlcm1pbmUgaWYgdGhlIHN0YXRlbWVudCBpcyBhIERETCBzdGF0ZW1lbnQgKi8KKyAgICBzZWxmLT5pc19kZGwgPSAwOworICAgIGZvciAocCA9IHNxbF9jc3RyOyAqcCAhPSAwOyBwKyspIHsKKyAgICAgICAgc3dpdGNoICgqcCkgeworICAgICAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICBjYXNlICdcdCc6CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzZWxmLT5pc19kZGwgPSAoUHlPU19zdHJuaWNtcChwLCAiY3JlYXRlICIsIDcpID09IDApCisgICAgICAgICAgICAgICAgICAgIHx8IChQeU9TX3N0cm5pY21wKHAsICJkcm9wICIsIDUpID09IDApCisgICAgICAgICAgICAgICAgICAgIHx8IChQeU9TX3N0cm5pY21wKHAsICJyZWluZGV4ICIsIDgpID09IDApOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmMgPSBzcWxpdGUzX3ByZXBhcmUoY29ubmVjdGlvbi0+ZGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsX2NzdHIsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmggYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKaW5kZXggNDY4MTQ0My4uNmVlZjE2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaApAQCAtMzgsNiArMzgsNyBAQAogICAgIHNxbGl0ZTNfc3RtdCogc3Q7CiAgICAgUHlPYmplY3QqIHNxbDsKICAgICBpbnQgaW5fdXNlOworICAgIGludCBpc19kZGw7CiAgICAgUHlPYmplY3QqIGluX3dlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogfSBweXNxbGl0ZV9TdGF0ZW1lbnQ7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMgYi9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCmluZGV4IDMxMmZlM2IuLjM1MWIxYjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYwpAQCAtMTEzLDcgKzExMyw2IEBACiBQeU9iamVjdCAqCiBfcHlzcWxpdGVfbG9uZ19mcm9tX2ludDY0KHNxbGl0ZV9pbnQ2NCB2YWx1ZSkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogIyBpZiBTSVpFT0ZfTE9OR19MT05HIDwgOAogICAgIGlmICh2YWx1ZSA+IFBZX0xMT05HX01BWCB8fCB2YWx1ZSA8IFBZX0xMT05HX01JTikgewogICAgICAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KCZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSwKQEAgLTEyNCwxNCArMTIzLDYgQEAKICAgICBpZiAodmFsdWUgPiBMT05HX01BWCB8fCB2YWx1ZSA8IExPTkdfTUlOKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CiAjIGVuZGlmCi0jZWxzZQotIyBpZiBTSVpFT0ZfTE9ORyA8IDgKLSAgICBpZiAodmFsdWUgPiBMT05HX01BWCB8fCB2YWx1ZSA8IExPTkdfTUlOKSB7Ci0gICAgICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoJnZhbHVlLCBzaXplb2YodmFsdWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTX0xJVFRMRV9FTkRJQU4sIDEgLyogc2lnbmVkICovKTsKLSAgICB9Ci0jIGVuZGlmCi0jZW5kaWYKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QodmFsdWUsIHNxbGl0ZV9pbnQ2NCwgbG9uZykpOwogfQogCkBAIC0xMzksMjMgKzEzMCwxMyBAQAogX3B5c3FsaXRlX2xvbmdfYXNfaW50NjQoUHlPYmplY3QgKiBweV92YWwpCiB7CiAgICAgaW50IG92ZXJmbG93OwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7Ci0jZWxzZQotICAgIGxvbmcgdmFsdWUgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cocHlfdmFsLCAmb3ZlcmZsb3cpOwotI2VuZGlmCisgICAgbG9uZyBsb25nIHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7CiAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIW92ZXJmbG93KSB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICMgaWYgU0laRU9GX0xPTkdfTE9ORyA+IDgKICAgICAgICAgaWYgKC0weDgwMDAwMDAwMDAwMDAwMDBMTCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweDdGRkZGRkZGRkZGRkZGRkZMTCkKICMgZW5kaWYKLSNlbHNlCi0jIGlmIFNJWkVPRl9MT05HID4gOAotICAgICAgICBpZiAoLTB4ODAwMDAwMDAwMDAwMDAwMEwgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHg3RkZGRkZGRkZGRkZGRkZGTCkKLSMgZW5kaWYKLSNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0KICAgICBlbHNlIGlmIChzaXplb2YodmFsdWUpIDwgc2l6ZW9mKHNxbGl0ZV9pbnQ2NCkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NyZS5jIGIvTW9kdWxlcy9fc3JlLmMKaW5kZXggMDliNTgzNS4uNjljN2JjMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3JlLmMKKysrIGIvTW9kdWxlcy9fc3JlLmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqIG90aGVyIGNvbXBhdGliaWxpdHkgd29yay4KICAqLwogCi1zdGF0aWMgY2hhciBjb3B5cmlnaHRbXSA9CitzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9CiAgICAgIiBTUkUgMi4yLjIgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDIgYnkgU2VjcmV0IExhYnMgQUIgIjsKIAogI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCkBAIC02Miw5ICs2Miw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogb3B0aW9uYWwgZmVhdHVyZXMgKi8KIAotLyogZW5hYmxlcyBmYXN0IHNlYXJjaGluZyAqLwotI2RlZmluZSBVU0VfRkFTVF9TRUFSQ0gKLQogLyogZW5hYmxlcyBjb3B5L2RlZXBjb3B5IGhhbmRsaW5nICh3b3JrIGluIHByb2dyZXNzKSAqLwogI3VuZGVmIFVTRV9CVUlMVElOX0NPUFkKIApAQCAtNzE3LDcgKzcxNCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWNhbGwoY2hhciogbW9kdWxlLCBjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGFyZ3MpCitjYWxsKGNvbnN0IGNoYXIqIG1vZHVsZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5T2JqZWN0KiBuYW1lOwogICAgIFB5T2JqZWN0KiBtb2Q7CkBAIC0xMDU5LDcgKzEwNTYsNiBAQAogICAgIFB5T2JqZWN0KiBqb2luZXI7CiAgICAgUHlPYmplY3QqIGl0ZW07CiAgICAgUHlPYmplY3QqIGZpbHRlcjsKLSAgICBQeU9iamVjdCogYXJnczsKICAgICBQeU9iamVjdCogbWF0Y2g7CiAgICAgdm9pZCogcHRyOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzOwpAQCAtMTE2MSwxMyArMTE1Nyw3IEBACiAgICAgICAgICAgICBtYXRjaCA9IHBhdHRlcm5fbmV3X21hdGNoKHNlbGYsICZzdGF0ZSwgMSk7CiAgICAgICAgICAgICBpZiAoIW1hdGNoKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG1hdGNoKTsKLSAgICAgICAgICAgIGlmICghYXJncykgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYXRjaCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGl0ZW0gPSBQeU9iamVjdF9DYWxsT2JqZWN0KGZpbHRlciwgYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgICAgICBpdGVtID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZpbHRlciwgbWF0Y2gpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1hdGNoKTsKICAgICAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTU5Miw3ICsxNTgyLDcgQEAKICAgICAgICAgc2tpcCA9ICpjb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBWVFJBQ0UoKCIlbHUgKHNraXAgdG8gJXApXG4iLCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylza2lwLCBjb2RlK3NraXApKTsgICAgICAgIFwKLSAgICAgICAgaWYgKHNraXAtYWRqID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpICAgICAgXAorICAgICAgICBpZiAoc2tpcC1hZGogPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkgICAgICBcCiAgICAgICAgICAgICBGQUlMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgY29kZSsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCkBAIC0xNjI2LDcgKzE2MTYsNyBAQAogCiAgICAgICAgIGNhc2UgU1JFX09QX0NIQVJTRVQ6CiAgICAgICAgICAgICBvZmZzZXQgPSAyNTYvU1JFX0NPREVfQklUUzsgLyogMjU2LWJpdCBiaXRtYXAgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgY29kZSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2MzQsNyArMTYyNCw3IEBACiAgICAgICAgIGNhc2UgU1JFX09QX0JJR0NIQVJTRVQ6CiAgICAgICAgICAgICBHRVRfQVJHOyAvKiBOdW1iZXIgb2YgYmxvY2tzICovCiAgICAgICAgICAgICBvZmZzZXQgPSAyNTYvc2l6ZW9mKFNSRV9DT0RFKTsgLyogMjU2LWJ5dGUgdGFibGUgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAodWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgZWFjaCBieXRlIHBvaW50cyB0byBhIHZhbGlkIGJsb2NrICovCiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKQEAgLTE2NDMsNyArMTYzMyw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIG9mZnNldCA9IGFyZyAqICgyNTYvU1JFX0NPREVfQklUUyk7IC8qIDI1Ni1iaXQgYml0bWFwIHRpbWVzIGFyZyAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc5NCwxMSArMTc4NCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOyBwcmVmaXhfbGVuID0gYXJnOwogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOwogICAgICAgICAgICAgICAgICAgICAvKiBIZXJlIGNvbWVzIHRoZSBwcmVmaXggc3RyaW5nICovCi0gICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKFB5X3VpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQorICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+ICh1aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgICAgIGNvZGUgKz0gcHJlZml4X2xlbjsKICAgICAgICAgICAgICAgICAgICAgLyogQW5kIGhlcmUgY29tZXMgdGhlIG92ZXJsYXAgdGFibGUgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAoUHlfdWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKHVpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAgICAgLyogRWFjaCBvdmVybGFwIHZhbHVlIHNob3VsZCBiZSA8IHByZWZpeF9sZW4gKi8KICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHByZWZpeF9sZW47IGkrKykgewpAQCAtMTkyNyw3ICsxOTE3LDcgQEAKICAgICAgICAgICAgICAgIHRvIGFsbG93IGFyYml0cmFyeSBqdW1wcyBhbnl3aGVyZSBpbiB0aGUgY29kZTsgc28gd2UganVzdCBsb29rCiAgICAgICAgICAgICAgICBmb3IgYSBKVU1QIG9wY29kZSBwcmVjZWRpbmcgb3VyIHNraXAgdGFyZ2V0LgogICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChza2lwID49IDMgJiYgc2tpcC0zIDwgKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkgJiYKKyAgICAgICAgICAgIGlmIChza2lwID49IDMgJiYgc2tpcC0zIDwgKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkgJiYKICAgICAgICAgICAgICAgICBjb2RlW3NraXAtM10gPT0gU1JFX09QX0pVTVApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVlRSQUNFKCgiYm90aCB0aGVuIGFuZCBlbHNlIHBhcnRzIHByZXNlbnRcbiIpKTsKQEAgLTIwNTIsOCArMjA0Miw5IEBACiAgICAgICAgIC8qIERlZmF1bHQgdmFsdWUgKi8KICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoUHlMb25nX0NoZWNrKGluZGV4KSkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Bc1NzaXplX3QoaW5kZXgpOworICAgIGlmIChQeUluZGV4X0NoZWNrKGluZGV4KSkgeworICAgICAgICByZXR1cm4gUHlOdW1iZXJfQXNTc2l6ZV90KGluZGV4LCBOVUxMKTsKKyAgICB9CiAKICAgICBpID0gLTE7CiAKQEAgLTIxMzAsNiArMjEyMSwxMiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK21hdGNoX2dldGl0ZW0oTWF0Y2hPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lKQoreworICAgIHJldHVybiBtYXRjaF9nZXRzbGljZShzZWxmLCBuYW1lLCBQeV9Ob25lKTsKK30KKwogLypbY2xpbmljIGlucHV0XQogX3NyZS5TUkVfTWF0Y2guZ3JvdXBzCiAKQEAgLTI3MTUsNiArMjcxMiwxMyBAQAogICAgIHBhdHRlcm5fZ2V0c2V0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAorLyogTWF0Y2ggb2JqZWN0cyBkbyBub3Qgc3VwcG9ydCBsZW5ndGggb3IgYXNzaWdubWVudCwgYnV0IGRvIHN1cHBvcnQKKyAgIF9fZ2V0aXRlbV9fLiAqLworc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbWF0Y2hfYXNfbWFwcGluZyA9IHsKKyAgICBOVUxMLAorICAgIChiaW5hcnlmdW5jKW1hdGNoX2dldGl0ZW0sCisgICAgTlVMTAorfTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1hdGNoX21ldGhvZHNbXSA9IHsKICAgICB7Imdyb3VwIiwgKFB5Q0Z1bmN0aW9uKSBtYXRjaF9ncm91cCwgTUVUSF9WQVJBUkdTLCBtYXRjaF9ncm91cF9kb2N9LApAQCAtMjc2MCw3ICsyNzY0LDcgQEAKICAgICAocmVwcmZ1bmMpbWF0Y2hfcmVwciwgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgICZtYXRjaF9hc19tYXBwaW5nLCAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKaW5kZXggYTc5YzNhOC4uYjE5ODg1NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3NsLmMKKysrIGIvTW9kdWxlcy9fc3NsLmMKQEAgLTE0MCw2ICsxNDAsOCBAQAogI2VuZGlmCiAKICNkZWZpbmUgVExTX21ldGhvZCBTU0x2MjNfbWV0aG9kCisjZGVmaW5lIFRMU19jbGllbnRfbWV0aG9kIFNTTHYyM19jbGllbnRfbWV0aG9kCisjZGVmaW5lIFRMU19zZXJ2ZXJfbWV0aG9kIFNTTHYyM19zZXJ2ZXJfbWV0aG9kCiAKIHN0YXRpYyBpbnQgWDUwOV9OQU1FX0VOVFJZX3NldChjb25zdCBYNTA5X05BTUVfRU5UUlkgKm5lKQogewpAQCAtMTQ3LDEwICsxNDksMTIgQEAKIH0KIAogI2lmbmRlZiBPUEVOU1NMX05PX0NPTVAKKy8qIExDT1ZfRVhDTF9TVEFSVCAqLwogc3RhdGljIGludCBDT01QX2dldF90eXBlKGNvbnN0IENPTVBfTUVUSE9EICptZXRoKQogewogICAgIHJldHVybiBtZXRoLT50eXBlOwogfQorLyogTENPVl9FWENMX1NUT1AgKi8KICNlbmRpZgogCiBzdGF0aWMgcGVtX3Bhc3N3b3JkX2NiICpTU0xfQ1RYX2dldF9kZWZhdWx0X3Bhc3N3ZF9jYihTU0xfQ1RYICpjdHgpCkBAIC0xODcsNiArMTkxLDE5IEBACiB7CiAgICAgcmV0dXJuIHN0b3JlLT5wYXJhbTsKIH0KKworc3RhdGljIGludAorU1NMX1NFU1NJT05faGFzX3RpY2tldChjb25zdCBTU0xfU0VTU0lPTiAqcykKK3sKKyAgICByZXR1cm4gKHMtPnRsc2V4dF90aWNrbGVuID4gMCkgPyAxIDogMDsKK30KKworc3RhdGljIHVuc2lnbmVkIGxvbmcKK1NTTF9TRVNTSU9OX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChjb25zdCBTU0xfU0VTU0lPTiAqcykKK3sKKyAgICByZXR1cm4gcy0+dGxzZXh0X3RpY2tfbGlmZXRpbWVfaGludDsKK30KKwogI2VuZGlmIC8qIE9wZW5TU0wgPCAxLjEuMCBvciBMaWJyZVNTTCAqLwogCiAKQEAgLTIyMCwxNCArMjM3LDE2IEBACiBlbnVtIHB5X3NzbF92ZXJzaW9uIHsKICAgICBQWV9TU0xfVkVSU0lPTl9TU0wyLAogICAgIFBZX1NTTF9WRVJTSU9OX1NTTDM9MSwKLSAgICBQWV9TU0xfVkVSU0lPTl9UTFMsCisgICAgUFlfU1NMX1ZFUlNJT05fVExTLCAvKiBTU0x2MjMgKi8KICNpZiBIQVZFX1RMU3YxXzIKICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxLAogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMSwKLSAgICBQWV9TU0xfVkVSU0lPTl9UTFMxXzIKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMxXzIsCiAjZWxzZQotICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMxLAogI2VuZGlmCisgICAgUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVD0weDEwLAorICAgIFBZX1NTTF9WRVJTSU9OX1RMU19TRVJWRVIsCiB9OwogCiAjaWZkZWYgV0lUSF9USFJFQUQKQEAgLTI5MywyNSArMzEyLDM1IEBACiAgICAgaW50IGVvZl93cml0dGVuOwogfSBQeVNTTE1lbW9yeUJJTzsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBTU0xfU0VTU0lPTiAqc2Vzc2lvbjsKKyAgICBQeVNTTENvbnRleHQgKmN0eDsKK30gUHlTU0xTZXNzaW9uOworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMQ29udGV4dF9UeXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNvY2tldF9UeXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTE1lbW9yeUJJT19UeXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNlc3Npb25fVHlwZTsKIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIF9zc2wKIGNsYXNzIF9zc2wuX1NTTENvbnRleHQgIlB5U1NMQ29udGV4dCAqIiAiJlB5U1NMQ29udGV4dF9UeXBlIgogY2xhc3MgX3NzbC5fU1NMU29ja2V0ICJQeVNTTFNvY2tldCAqIiAiJlB5U1NMU29ja2V0X1R5cGUiCiBjbGFzcyBfc3NsLk1lbW9yeUJJTyAiUHlTU0xNZW1vcnlCSU8gKiIgIiZQeVNTTE1lbW9yeUJJT19UeXBlIgorY2xhc3MgX3NzbC5TU0xTZXNzaW9uICJQeVNTTFNlc3Npb24gKiIgIiZQeVNTTFNlc3Npb25fVHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdiZjdjYjgzMjYzOGUyZTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWJkYzY3ZmFmZWVhYTgxMDldKi8KIAogI2luY2x1ZGUgImNsaW5pYy9fc3NsLmMuaCIKIAogc3RhdGljIGludCBQeVNTTF9zZWxlY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgd3JpdGluZywgX1B5VGltZV90IHRpbWVvdXQpOwogCisKICNkZWZpbmUgUHlTU0xDb250ZXh0X0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5U1NMQ29udGV4dF9UeXBlKQogI2RlZmluZSBQeVNTTFNvY2tldF9DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xTb2NrZXRfVHlwZSkKICNkZWZpbmUgUHlTU0xNZW1vcnlCSU9fQ2hlY2sodikgICAgKFB5X1RZUEUodikgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpCisjZGVmaW5lIFB5U1NMU2Vzc2lvbl9DaGVjayh2KSAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNlc3Npb25fVHlwZSkKIAogdHlwZWRlZiBlbnVtIHsKICAgICBTT0NLRVRfSVNfTk9OQkxPQ0tJTkcsCkBAIC00NTUsNyArNDg0LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5U1NMX1NldEVycm9yKFB5U1NMU29ja2V0ICpvYmosIGludCByZXQsIGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQorUHlTU0xfU2V0RXJyb3IoUHlTU0xTb2NrZXQgKm9iaiwgaW50IHJldCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7CiAgICAgUHlPYmplY3QgKnR5cGUgPSBQeVNTTEVycm9yT2JqZWN0OwogICAgIGNoYXIgKmVycnN0ciA9IE5VTEw7CkBAIC01MzcsNyArNTY2LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zZXRTU0xFcnJvciAoY2hhciAqZXJyc3RyLCBpbnQgZXJyY29kZSwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pIHsKK19zZXRTU0xFcnJvciAoY29uc3QgY2hhciAqZXJyc3RyLCBpbnQgZXJyY29kZSwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pIHsKIAogICAgIGlmIChlcnJzdHIgPT0gTlVMTCkKICAgICAgICAgZXJyY29kZSA9IEVSUl9wZWVrX2xhc3RfZXJyb3IoKTsKQEAgLTE1NDcsNiArMTU3Niw2NSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAwVUwKK3N0YXRpYyBQeU9iamVjdCAqCitjaXBoZXJfdG9fZGljdChjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXIpCit7CisgICAgY29uc3QgY2hhciAqY2lwaGVyX25hbWUsICpjaXBoZXJfcHJvdG9jb2w7CisKKyAgICB1bnNpZ25lZCBsb25nIGNpcGhlcl9pZDsKKyAgICBpbnQgYWxnX2JpdHMsIHN0cmVuZ3RoX2JpdHMsIGxlbjsKKyAgICBjaGFyIGJ1Zls1MTJdID0gezB9OworI2lmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICBpbnQgYWVhZCwgbmlkOworICAgIGNvbnN0IGNoYXIgKnNrY2lwaGVyID0gTlVMTCwgKmRpZ2VzdCA9IE5VTEwsICpreCA9IE5VTEwsICphdXRoID0gTlVMTDsKKyNlbmRpZgorCisgICAgLyogY2FuIGJlIE5VTEwgKi8KKyAgICBjaXBoZXJfbmFtZSA9IFNTTF9DSVBIRVJfZ2V0X25hbWUoY2lwaGVyKTsKKyAgICBjaXBoZXJfcHJvdG9jb2wgPSBTU0xfQ0lQSEVSX2dldF92ZXJzaW9uKGNpcGhlcik7CisgICAgY2lwaGVyX2lkID0gU1NMX0NJUEhFUl9nZXRfaWQoY2lwaGVyKTsKKyAgICBTU0xfQ0lQSEVSX2Rlc2NyaXB0aW9uKGNpcGhlciwgYnVmLCBzaXplb2YoYnVmKSAtIDEpOworICAgIGxlbiA9IHN0cmxlbihidWYpOworICAgIGlmIChsZW4gPiAxICYmIGJ1ZltsZW4tMV0gPT0gJ1xuJykKKyAgICAgICAgYnVmW2xlbi0xXSA9ICdcMCc7CisgICAgc3RyZW5ndGhfYml0cyA9IFNTTF9DSVBIRVJfZ2V0X2JpdHMoY2lwaGVyLCAmYWxnX2JpdHMpOworCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIGFlYWQgPSBTU0xfQ0lQSEVSX2lzX2FlYWQoY2lwaGVyKTsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9jaXBoZXJfbmlkKGNpcGhlcik7CisgICAgc2tjaXBoZXIgPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9kaWdlc3RfbmlkKGNpcGhlcik7CisgICAgZGlnZXN0ID0gbmlkICE9IE5JRF91bmRlZiA/IE9CSl9uaWQybG4obmlkKSA6IE5VTEw7CisgICAgbmlkID0gU1NMX0NJUEhFUl9nZXRfa3hfbmlkKGNpcGhlcik7CisgICAga3ggPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9hdXRoX25pZChjaXBoZXIpOworICAgIGF1dGggPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyNlbmRpZgorCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCisgICAgICAgICJ7c2tzc3Nzc3NzaXNpIgorI2lmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAgICAgInNPc3Nzc3Nzc3MiCisjZW5kaWYKKyAgICAgICAgIn0iLAorICAgICAgICAiaWQiLCBjaXBoZXJfaWQsCisgICAgICAgICJuYW1lIiwgY2lwaGVyX25hbWUsCisgICAgICAgICJwcm90b2NvbCIsIGNpcGhlcl9wcm90b2NvbCwKKyAgICAgICAgImRlc2NyaXB0aW9uIiwgYnVmLAorICAgICAgICAic3RyZW5ndGhfYml0cyIsIHN0cmVuZ3RoX2JpdHMsCisgICAgICAgICJhbGdfYml0cyIsIGFsZ19iaXRzCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgICAgICAsImFlYWQiLCBhZWFkID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlLAorICAgICAgICAic3ltbWV0cmljIiwgc2tjaXBoZXIsCisgICAgICAgICJkaWdlc3QiLCBkaWdlc3QsCisgICAgICAgICJrZWEiLCBreCwKKyAgICAgICAgImF1dGgiLCBhdXRoCisjZW5kaWYKKyAgICAgICApOworfQorI2VuZGlmCisKIC8qW2NsaW5pYyBpbnB1dF0KIF9zc2wuX1NTTFNvY2tldC5zaGFyZWRfY2lwaGVycwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtMjI1NSw2ICsyMzQzLDE1MiBAQAogICAgIHJldHVybiByZXR2YWw7CiB9CiAKKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisKK3N0YXRpYyBTU0xfU0VTU0lPTioKK19zc2xfc2Vzc2lvbl9kdXAoU1NMX1NFU1NJT04gKnNlc3Npb24pIHsKKyAgICBTU0xfU0VTU0lPTiAqbmV3c2Vzc2lvbiA9IE5VTEw7CisgICAgaW50IHNsZW47CisgICAgdW5zaWduZWQgY2hhciAqc2VuYyA9IE5VTEwsICpwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbnN0X3A7CisKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBzZXNzaW9uIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogZ2V0IGxlbmd0aCAqLworICAgIHNsZW4gPSBpMmRfU1NMX1NFU1NJT04oc2Vzc2lvbiwgTlVMTCk7CisgICAgaWYgKHNsZW4gPT0gMCB8fCBzbGVuID4gMHhGRjAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaTJkKCkgZmFpbGVkLiIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBpZiAoKHNlbmMgPSBQeU1lbV9NYWxsb2Moc2xlbikpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcCA9IHNlbmM7CisgICAgaWYgKCFpMmRfU1NMX1NFU1NJT04oc2Vzc2lvbiwgJnApKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaTJkKCkgZmFpbGVkLiIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBjb25zdF9wID0gc2VuYzsKKyAgICBuZXdzZXNzaW9uID0gZDJpX1NTTF9TRVNTSU9OKE5VTEwsICZjb25zdF9wLCBzbGVuKTsKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIFB5TWVtX0ZyZWUoc2VuYyk7CisgICAgcmV0dXJuIG5ld3Nlc3Npb247CisgIGVycm9yOgorICAgIGlmIChzZW5jICE9IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShzZW5jKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgLyogZ2V0X3Nlc3Npb24gY2FuIHJldHVybiBzZXNzaW9ucyBmcm9tIGEgc2VydmVyLXNpZGUgY29ubmVjdGlvbiwKKyAgICAgKiBpdCBkb2VzIG5vdCBjaGVjayBmb3IgaGFuZHNoYWtlIGRvbmUgb3IgY2xpZW50IHNvY2tldC4gKi8KKyAgICBQeVNTTFNlc3Npb24gKnB5c2VzczsKKyAgICBTU0xfU0VTU0lPTiAqc2Vzc2lvbjsKKworI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAvKiBkdXBsaWNhdGUgc2Vzc2lvbiBhcyB3b3JrYXJvdW5kIGZvciBzZXNzaW9uIGJ1ZyBpbiBPcGVuU1NMIDEuMS4wLAorICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvaXNzdWVzLzE1NTAgKi8KKyAgICBzZXNzaW9uID0gU1NMX2dldDBfc2Vzc2lvbihzZWxmLT5zc2wpOyAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCisgICAgaWYgKHNlc3Npb24gPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgaWYgKChzZXNzaW9uID0gX3NzbF9zZXNzaW9uX2R1cChzZXNzaW9uKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisjZWxzZQorICAgIHNlc3Npb24gPSBTU0xfZ2V0MV9zZXNzaW9uKHNlbGYtPnNzbCk7CisgICAgaWYgKHNlc3Npb24gPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisjZW5kaWYKKyAgICBweXNlc3MgPSBQeU9iamVjdF9HQ19OZXcoUHlTU0xTZXNzaW9uLCAmUHlTU0xTZXNzaW9uX1R5cGUpOworICAgIGlmIChweXNlc3MgPT0gTlVMTCkgeworICAgICAgICBTU0xfU0VTU0lPTl9mcmVlKHNlc3Npb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBhc3NlcnQoc2VsZi0+Y3R4KTsKKyAgICBweXNlc3MtPmN0eCA9IHNlbGYtPmN0eDsKKyAgICBQeV9JTkNSRUYocHlzZXNzLT5jdHgpOworICAgIHB5c2Vzcy0+c2Vzc2lvbiA9IHNlc3Npb247CisgICAgUHlPYmplY3RfR0NfVHJhY2socHlzZXNzKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopcHlzZXNzOworfQorCitzdGF0aWMgaW50IFB5U1NMX3NldF9zZXNzaW9uKFB5U1NMU29ja2V0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsb3N1cmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgUHlTU0xTZXNzaW9uICpweXNlc3M7CisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworI2VuZGlmCisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghUHlTU0xTZXNzaW9uX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiVmFsdWUgaXMgbm90IGEgU1NMU2Vzc2lvbi4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBweXNlc3MgPSAoUHlTU0xTZXNzaW9uICopdmFsdWU7CisKKyAgICBpZiAoc2VsZi0+Y3R4LT5jdHggIT0gcHlzZXNzLT5jdHgtPmN0eCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJTZXNzaW9uIHJlZmVycyB0byBhIGRpZmZlcmVudCBTU0xDb250ZXh0LiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzZWxmLT5zb2NrZXRfdHlwZSAhPSBQWV9TU0xfQ0xJRU5UKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZXQgc2Vzc2lvbiBmb3Igc2VydmVyLXNpZGUgU1NMU29ja2V0LiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzZWxmLT5oYW5kc2hha2VfZG9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2V0IHNlc3Npb24gYWZ0ZXIgaGFuZHNoYWtlLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAvKiBkdXBsaWNhdGUgc2Vzc2lvbiAqLworICAgIGlmICgoc2Vzc2lvbiA9IF9zc2xfc2Vzc2lvbl9kdXAocHlzZXNzLT5zZXNzaW9uKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJlc3VsdCA9IFNTTF9zZXRfc2Vzc2lvbihzZWxmLT5zc2wsIHNlc3Npb24pOworICAgIC8qIGZyZWUgZHVwbGljYXRlLCBTU0xfc2V0X3Nlc3Npb24oKSBidW1wcyByZWYgY291bnQgKi8KKyAgICBTU0xfU0VTU0lPTl9mcmVlKHNlc3Npb24pOworI2Vsc2UKKyAgICByZXN1bHQgPSBTU0xfc2V0X3Nlc3Npb24oc2VsZi0+c3NsLCBweXNlc3MtPnNlc3Npb24pOworI2VuZGlmCisgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfc2V0X3Nlc3Npb25fZG9jLAorIl9zZXR0ZXJfc2Vzc2lvbihzZXNzaW9uKVxuXAorXAorR2V0IC8gc2V0IFNTTFNlc3Npb24uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9nZXRfc2Vzc2lvbl9yZXVzZWQoUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBpZiAoU1NMX3Nlc3Npb25fcmV1c2VkKHNlbGYtPnNzbCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZF9kb2MsCisiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZT8iKTsKKwogc3RhdGljIFB5R2V0U2V0RGVmIHNzbF9nZXRzZXRsaXN0W10gPSB7CiAgICAgeyJjb250ZXh0IiwgKGdldHRlcikgUHlTU0xfZ2V0X2NvbnRleHQsCiAgICAgICAgICAgICAgICAgKHNldHRlcikgUHlTU0xfc2V0X2NvbnRleHQsIFB5U1NMX3NldF9jb250ZXh0X2RvY30sCkBAIC0yMjY0LDYgKzI0OTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXJ2ZXJfaG9zdG5hbWVfZG9jfSwKICAgICB7Im93bmVyIiwgKGdldHRlcikgUHlTU0xfZ2V0X293bmVyLCAoc2V0dGVyKSBQeVNTTF9zZXRfb3duZXIsCiAgICAgICAgICAgICAgIFB5U1NMX2dldF9vd25lcl9kb2N9LAorICAgIHsic2Vzc2lvbiIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXNzaW9uLAorICAgICAgICAgICAgICAgIChzZXR0ZXIpIFB5U1NMX3NldF9zZXNzaW9uLCBQeVNTTF9zZXRfc2Vzc2lvbl9kb2N9LAorICAgIHsic2Vzc2lvbl9yZXVzZWQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfc2Vzc2lvbl9yZXVzZWQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZF9kb2N9LAogICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjMyMyw2ICsyNTYxLDMzIEBACiAgKiBfU1NMQ29udGV4dCBvYmplY3RzCiAgKi8KIAorc3RhdGljIGludAorX3NldF92ZXJpZnlfbW9kZShTU0xfQ1RYICpjdHgsIGVudW0gcHlfc3NsX2NlcnRfcmVxdWlyZW1lbnRzIG4pCit7CisgICAgaW50IG1vZGU7CisgICAgaW50ICgqdmVyaWZ5X2NiKShpbnQsIFg1MDlfU1RPUkVfQ1RYICopID0gTlVMTDsKKworICAgIHN3aXRjaChuKSB7CisgICAgY2FzZSBQWV9TU0xfQ0VSVF9OT05FOgorICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9OT05FOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX09QVElPTkFMOgorICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9QRUVSOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX1JFUVVJUkVEOgorICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9QRUVSIHwgU1NMX1ZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUgZm9yIHZlcmlmeV9tb2RlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyoga2VlcCBjdXJyZW50IHZlcmlmeSBjYiAqLworICAgIHZlcmlmeV9jYiA9IFNTTF9DVFhfZ2V0X3ZlcmlmeV9jYWxsYmFjayhjdHgpOworICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShjdHgsIG1vZGUsIHZlcmlmeV9jYik7CisgICAgcmV0dXJuIDA7Cit9CisKIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogX3NzbC5fU1NMQ29udGV4dC5fX25ld19fCkBAIC0yMzM3LDYgKzI2MDIsNyBAQAogICAgIFB5U1NMQ29udGV4dCAqc2VsZjsKICAgICBsb25nIG9wdGlvbnM7CiAgICAgU1NMX0NUWCAqY3R4ID0gTlVMTDsKKyAgICBpbnQgcmVzdWx0OwogI2lmIGRlZmluZWQoU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTKQogICAgIHVuc2lnbmVkIGxvbmcgbGlidmVyOwogI2VuZGlmCkBAIC0yMzU4LDggKzI2MjQsMTIgQEAKICAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1NTTDIpCiAgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFNTTHYyX21ldGhvZCgpKTsKICNlbmRpZgotICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTKQorICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTKSAvKiBTU0x2MjMgKi8KICAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX21ldGhvZCgpKTsKKyAgICBlbHNlIGlmIChwcm90b192ZXJzaW9uID09IFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQpCisgICAgICAgIGN0eCA9IFNTTF9DVFhfbmV3KFRMU19jbGllbnRfbWV0aG9kKCkpOworICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUikKKyAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX3NlcnZlcl9tZXRob2QoKSk7CiAgICAgZWxzZQogICAgICAgICBwcm90b192ZXJzaW9uID0gLTE7CiAgICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTIzOTIsMTYgKzI2NjIsNTcgQEAKICAgICBzZWxmLT5zZXRfaG9zdG5hbWUgPSBOVUxMOwogI2VuZGlmCiAgICAgLyogRG9uJ3QgY2hlY2sgaG9zdCBuYW1lIGJ5IGRlZmF1bHQgKi8KLSAgICBzZWxmLT5jaGVja19ob3N0bmFtZSA9IDA7CisgICAgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVCkgeworICAgICAgICBzZWxmLT5jaGVja19ob3N0bmFtZSA9IDE7CisgICAgICAgIGlmIChfc2V0X3ZlcmlmeV9tb2RlKHNlbGYtPmN0eCwgUFlfU1NMX0NFUlRfUkVRVUlSRUQpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMDsKKyAgICAgICAgaWYgKF9zZXRfdmVyaWZ5X21vZGUoc2VsZi0+Y3R4LCBQWV9TU0xfQ0VSVF9OT05FKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CiAgICAgLyogRGVmYXVsdHMgKi8KLSAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VsZi0+Y3R4LCBTU0xfVkVSSUZZX05PTkUsIE5VTEwpOwogICAgIG9wdGlvbnMgPSBTU0xfT1BfQUxMICYgflNTTF9PUF9ET05UX0lOU0VSVF9FTVBUWV9GUkFHTUVOVFM7CiAgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMikKICAgICAgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fU1NMdjI7CiAgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMykKICAgICAgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fU1NMdjM7CisgICAgLyogTWluaW1hbCBzZWN1cml0eSBmbGFncyBmb3Igc2VydmVyIGFuZCBjbGllbnQgc2lkZSBjb250ZXh0LgorICAgICAqIENsaWVudCBzb2NrZXRzIGlnbm9yZSBzZXJ2ZXItc2lkZSBwYXJhbWV0ZXJzLiAqLworI2lmZGVmIFNTTF9PUF9OT19DT01QUkVTU0lPTgorICAgIG9wdGlvbnMgfD0gU1NMX09QX05PX0NPTVBSRVNTSU9OOworI2VuZGlmCisjaWZkZWYgU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorICAgIG9wdGlvbnMgfD0gU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRTsKKyNlbmRpZgorI2lmZGVmIFNTTF9PUF9TSU5HTEVfREhfVVNFCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfU0lOR0xFX0RIX1VTRTsKKyNlbmRpZgorI2lmZGVmIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UKKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfRUNESF9VU0U7CisjZW5kaWYKICAgICBTU0xfQ1RYX3NldF9vcHRpb25zKHNlbGYtPmN0eCwgb3B0aW9ucyk7CiAKKyAgICAvKiBBIGJhcmUgbWluaW11bSBjaXBoZXIgbGlzdCB3aXRob3V0IGNvbXBsZXRseSBicm9rZW4gY2lwaGVyIHN1aXRlcy4KKyAgICAgKiBJdCdzIGZhciBmcm9tIHBlcmZlY3QgYnV0IGdpdmVzIHVzZXJzIGEgYmV0dGVyIGhlYWQgc3RhcnQuICovCisgICAgaWYgKHByb3RvX3ZlcnNpb24gIT0gUFlfU1NMX1ZFUlNJT05fU1NMMikgeworICAgICAgICByZXN1bHQgPSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChjdHgsICJISUdIOiFhTlVMTDohZU5VTEw6IU1ENSIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFNTTHYyIG5lZWRzIE1ENSAqLworICAgICAgICByZXN1bHQgPSBTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdChjdHgsICJISUdIOiFhTlVMTDohZU5VTEwiKTsKKyAgICB9CisgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeVNTTEVycm9yT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIk5vIGNpcGhlciBjYW4gYmUgc2VsZWN0ZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogI2lmIGRlZmluZWQoU1NMX01PREVfUkVMRUFTRV9CVUZGRVJTKQogICAgIC8qIFNldCBTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMuIFRoaXMgcG90ZW50aWFsbHkgZ3JlYXRseSByZWR1Y2VzIG1lbW9yeQogICAgICAgIHVzYWdlIGZvciBubyBjb3N0IGF0IGFsbC4gSG93ZXZlciwgZG9uJ3QgZG8gdGhpcyBmb3IgT3BlblNTTCB2ZXJzaW9ucwpAQCAtMjUwNiw2ICsyODE3LDUyIEBACiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTAorLypbY2xpbmljIGlucHV0XQorX3NzbC5fU1NMQ29udGV4dC5nZXRfY2lwaGVycworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNTZlNGQ2OGE0MDZkZmM0IGlucHV0PWEyYWFkYzlhZjg5Yjc5YzVdKi8KK3sKKyAgICBTU0wgKnNzbCA9IE5VTEw7CisgICAgU1RBQ0tfT0YoU1NMX0NJUEhFUikgKnNrID0gTlVMTDsKKyAgICBjb25zdCBTU0xfQ0lQSEVSICpjaXBoZXI7CisgICAgaW50IGk9MDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTCwgKmRjdDsKKworICAgIHNzbCA9IFNTTF9uZXcoc2VsZi0+Y3R4KTsKKyAgICBpZiAoc3NsID09IE5VTEwpIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgc2sgPSBTU0xfZ2V0X2NpcGhlcnMoc3NsKTsKKworICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoc2tfU1NMX0NJUEhFUl9udW0oc2spKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBza19TU0xfQ0lQSEVSX251bShzayk7IGkrKykgeworICAgICAgICBjaXBoZXIgPSBza19TU0xfQ0lQSEVSX3ZhbHVlKHNrLCBpKTsKKyAgICAgICAgZGN0ID0gY2lwaGVyX3RvX2RpY3QoY2lwaGVyKTsKKyAgICAgICAgaWYgKGRjdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9DTEVBUihyZXN1bHQpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShyZXN1bHQsIGksIGRjdCk7CisgICAgfQorCisgIGV4aXQ6CisgICAgaWYgKHNzbCAhPSBOVUxMKQorICAgICAgICBTU0xfZnJlZShzc2wpOworICAgIHJldHVybiByZXN1bHQ7CisKK30KKyNlbmRpZgorCisKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECiBzdGF0aWMgaW50CiBkb19wcm90b2NvbF9zZWxlY3Rpb24oaW50IGFscG4sIHVuc2lnbmVkIGNoYXIgKipvdXQsIHVuc2lnbmVkIGNoYXIgKm91dGxlbiwKQEAgLTI2NjIsMjggKzMwMTksMTYgQEAKIHN0YXRpYyBpbnQKIHNldF92ZXJpZnlfbW9kZShQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmcsIHZvaWQgKmMpCiB7Ci0gICAgaW50IG4sIG1vZGU7CisgICAgaW50IG47CiAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpIiwgJm4pKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKG4gPT0gUFlfU1NMX0NFUlRfTk9ORSkKLSAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfTk9ORTsKLSAgICBlbHNlIGlmIChuID09IFBZX1NTTF9DRVJUX09QVElPTkFMKQotICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9QRUVSOwotICAgIGVsc2UgaWYgKG4gPT0gUFlfU1NMX0NFUlRfUkVRVUlSRUQpCi0gICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUOwotICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHZhbHVlIGZvciB2ZXJpZnlfbW9kZSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChtb2RlID09IFNTTF9WRVJJRllfTk9ORSAmJiBzZWxmLT5jaGVja19ob3N0bmFtZSkgeworICAgIGlmIChuID09IFBZX1NTTF9DRVJUX05PTkUgJiYgc2VsZi0+Y2hlY2tfaG9zdG5hbWUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNldCB2ZXJpZnlfbW9kZSB0byBDRVJUX05PTkUgd2hlbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hlY2tfaG9zdG5hbWUgaXMgZW5hYmxlZC4iKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VsZi0+Y3R4LCBtb2RlLCBOVUxMKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gX3NldF92ZXJpZnlfbW9kZShzZWxmLT5jdHgsIG4pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMzY3Myw2ICs0MDE4LDcgQEAKICAgICBfU1NMX19TU0xDT05URVhUX1NFVF9TRVJWRVJOQU1FX0NBTExCQUNLX01FVEhPRERFRgogICAgIF9TU0xfX1NTTENPTlRFWFRfQ0VSVF9TVE9SRV9TVEFUU19NRVRIT0RERUYKICAgICBfU1NMX19TU0xDT05URVhUX0dFVF9DQV9DRVJUU19NRVRIT0RERUYKKyAgICBfU1NMX19TU0xDT05URVhUX0dFVF9DSVBIRVJTX01FVEhPRERFRgogICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTM5MzgsNiArNDI4NCwxOTQgQEAKIH07CiAKIAorLyoKKyAqIFNTTCBTZXNzaW9uIG9iamVjdAorICovCisKK3N0YXRpYyB2b2lkCitQeVNTTFNlc3Npb25fZGVhbGxvYyhQeVNTTFNlc3Npb24gKnNlbGYpCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPmN0eCk7CisgICAgaWYgKHNlbGYtPnNlc3Npb24gIT0gTlVMTCkgeworICAgICAgICBTU0xfU0VTU0lPTl9mcmVlKHNlbGYtPnNlc3Npb24pOworICAgIH0KKyAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fcmljaGNvbXBhcmUoUHlPYmplY3QgKmxlZnQsIFB5T2JqZWN0ICpyaWdodCwgaW50IG9wKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAobGVmdCA9PSBOVUxMIHx8IHJpZ2h0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlTU0xTZXNzaW9uX0NoZWNrKGxlZnQpIHx8ICFQeVNTTFNlc3Npb25fQ2hlY2socmlnaHQpKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICB9CisKKyAgICBpZiAobGVmdCA9PSByaWdodCkgeworICAgICAgICByZXN1bHQgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmxlZnRfaWQsICpyaWdodF9pZDsKKyAgICAgICAgdW5zaWduZWQgaW50IGxlZnRfbGVuLCByaWdodF9sZW47CisgICAgICAgIGxlZnRfaWQgPSBTU0xfU0VTU0lPTl9nZXRfaWQoKChQeVNTTFNlc3Npb24gKilsZWZ0KS0+c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVmdF9sZW4pOworICAgICAgICByaWdodF9pZCA9IFNTTF9TRVNTSU9OX2dldF9pZCgoKFB5U1NMU2Vzc2lvbiAqKXJpZ2h0KS0+c2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJpZ2h0X2xlbik7CisgICAgICAgIGlmIChsZWZ0X2xlbiA9PSByaWdodF9sZW4pIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1lbWNtcChsZWZ0X2lkLCByaWdodF9pZCwgbGVmdF9sZW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3aXRjaCAob3ApIHsKKyAgICAgIGNhc2UgUHlfRVE6CisgICAgICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFB5X05FOgorICAgICAgICBpZiAocmVzdWx0ICE9IDApIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBQeV9MVDoKKyAgICAgIGNhc2UgUHlfTEU6CisgICAgICBjYXNlIFB5X0dUOgorICAgICAgY2FzZSBQeV9HRToKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3RhdGljIGludAorUHlTU0xTZXNzaW9uX3RyYXZlcnNlKFB5U1NMU2Vzc2lvbiAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+Y3R4KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorUHlTU0xTZXNzaW9uX2NsZWFyKFB5U1NMU2Vzc2lvbiAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5jdHgpOworICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3RpbWUoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhTU0xfU0VTU0lPTl9nZXRfdGltZShzZWxmLT5zZXNzaW9uKSk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3RpbWVfZG9jLAorIlNlc3Npb24gY3JlYXRpb24gdGltZSAoc2Vjb25kcyBzaW5jZSBlcG9jaCkuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfdGltZW91dChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFNTTF9TRVNTSU9OX2dldF90aW1lb3V0KHNlbGYtPnNlc3Npb24pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dF9kb2MsCisiU2Vzc2lvbiB0aW1lb3V0IChkZWx0YSBpbiBzZWNvbmRzKS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICB1bnNpZ25lZCBsb25nIGhpbnQgPSBTU0xfU0VTU0lPTl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQoc2VsZi0+c2Vzc2lvbik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGhpbnQpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF90aWNrZXRfbGlmZXRpbWVfaGludF9kb2MsCisiVGlja2V0IGxpZmUgdGltZSBoaW50LiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWQoUHlTU0xTZXNzaW9uICpzZWxmLCB2b2lkICpjbG9zdXJlKSB7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaWQ7CisgICAgdW5zaWduZWQgaW50IGxlbjsKKyAgICBpZCA9IFNTTF9TRVNTSU9OX2dldF9pZChzZWxmLT5zZXNzaW9uLCAmbGVuKTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWlkLCBsZW4pOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkX2RvYywKKyJTZXNzaW9uIGlkIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBpZiAoU1NMX1NFU1NJT05faGFzX3RpY2tldChzZWxmLT5zZXNzaW9uKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0X2RvYywKKyJEb2VzIHRoZSBzZXNzaW9uIGNvbnRhaW4gYSB0aWNrZXQ/Iik7CisKKworc3RhdGljIFB5R2V0U2V0RGVmIFB5U1NMU2Vzc2lvbl9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJoYXNfdGlja2V0IiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0LCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXRfZG9jfSwKKyAgICB7ImlkIiwgICAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZF9kb2N9LAorICAgIHsidGlja2V0X2xpZmV0aW1lX2hpbnQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50LAorICAgICAgICAgICAgICBOVUxMLCBQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50X2RvY30sCisgICAgeyJ0aW1lIiwgKGdldHRlcikgUHlTU0xTZXNzaW9uX2dldF90aW1lLCBOVUxMLAorICAgICAgICAgICAgICBQeVNTTFNlc3Npb25fZ2V0X3RpbWVfZG9jfSwKKyAgICB7InRpbWVvdXQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpbWVvdXQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dF9kb2N9LAorICAgIHtOVUxMfSwgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeVNTTFNlc3Npb25fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX3NzbC5TZXNzaW9uIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KKyAgICBzaXplb2YoUHlTU0xTZXNzaW9uKSwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KKyAgICAoZGVzdHJ1Y3RvcilQeVNTTFNlc3Npb25fZGVhbGxvYywgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAvKnRwX2ZsYWdzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgICh0cmF2ZXJzZXByb2MpUHlTU0xTZXNzaW9uX3RyYXZlcnNlLCAgICAgICAvKnRwX3RyYXZlcnNlKi8KKyAgICAoaW5xdWlyeSlQeVNTTFNlc3Npb25fY2xlYXIsICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCisgICAgUHlTU0xTZXNzaW9uX3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyovCisgICAgUHlTU0xTZXNzaW9uX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0Ki8KK307CisKKwogLyogaGVscGVyIHJvdXRpbmVzIGZvciBzZWVkaW5nIHRoZSBTU0wgUFJORyAqLwogLypbY2xpbmljIGlucHV0XQogX3NzbC5SQU5EX2FkZApAQCAtNDA1OSw2ICs0NTkzLDcgQEAKIH0KIAogI2lmbmRlZiBPUEVOU1NMX05PX0VHRAorLyogTENPVl9FWENMX1NUQVJUICovCiAvKltjbGluaWMgaW5wdXRdCiBfc3NsLlJBTkRfZWdkCiAgICAgcGF0aDogb2JqZWN0KGNvbnZlcnRlcj0iUHlVbmljb2RlX0ZTQ29udmVydGVyIikKQEAgLTQwODQsNiArNDYxOSw3IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoYnl0ZXMpOwogfQorLyogTENPVl9FWENMX1NUT1AgKi8KICNlbmRpZiAvKiBPUEVOU1NMX05PX0VHRCAqLwogCiAKQEAgLTQ1NDIsMTMgKzUwNzgsMTIgQEAKIAogICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpIHsKICAgICAgICAgX3NzbF9sb2Nrc19jb3VudCA9IENSWVBUT19udW1fbG9ja3MoKTsKLSAgICAgICAgX3NzbF9sb2NrcyA9IFB5TWVtX05ldyhQeVRocmVhZF90eXBlX2xvY2ssIF9zc2xfbG9ja3NfY291bnQpOworICAgICAgICBfc3NsX2xvY2tzID0gUHlNZW1fQ2FsbG9jKF9zc2xfbG9ja3NfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5VGhyZWFkX3R5cGVfbG9jaykpOwogICAgICAgICBpZiAoX3NzbF9sb2NrcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgbWVtc2V0KF9zc2xfbG9ja3MsIDAsCi0gICAgICAgICAgICAgICBzaXplb2YoUHlUaHJlYWRfdHlwZV9sb2NrKSAqIF9zc2xfbG9ja3NfY291bnQpOwogICAgICAgICBmb3IgKGkgPSAwOyAgaSA8IF9zc2xfbG9ja3NfY291bnQ7ICBpKyspIHsKICAgICAgICAgICAgIF9zc2xfbG9ja3NbaV0gPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CiAgICAgICAgICAgICBpZiAoX3NzbF9sb2Nrc1tpXSA9PSBOVUxMKSB7CkBAIC00NjIzLDYgKzUxNTgsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNTTE1lbW9yeUJJT19UeXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMU2Vzc2lvbl9UeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfc3NsbW9kdWxlKTsKICAgICBpZiAobSA9PSBOVUxMKQpAQCAtNDY5NCw2ICs1MjMyLDEwIEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJNZW1vcnlCSU8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xNZW1vcnlCSU9fVHlwZSkgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xTZXNzaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMU2Vzc2lvbl9UeXBlKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTU0xfRVJST1JfWkVST19SRVRVUk4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9FUlJPUl9aRVJPX1JFVFVSTik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9XQU5UX1JFQUQiLApAQCAtNDc5OCw2ICs1MzQwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX1ZFUlNJT05fVExTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFNfQ0xJRU5UIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTX1NFUlZFUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMU3YxIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxKTsKICNpZiBIQVZFX1RMU3YxXzIKQEAgLTQ4MjAsNiArNTM2Niw3IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9ESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0RIX1VTRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RJQ0tFVCIsIFNTTF9PUF9OT19USUNLRVQpOwogI2lmZGVmIFNTTF9PUF9TSU5HTEVfRUNESF9VU0UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0cnVjdC5jIGIvTW9kdWxlcy9fc3RydWN0LmMKaW5kZXggZjk2NTU0MS4uNzk2ZDE2OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fc3RydWN0LmMKQEAgLTYwLDYgKzYwLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBkb3VibGUgeDsgfSBzdF9kb3VibGU7CiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgdm9pZCAqeDsgfSBzdF92b2lkX3A7CiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgc2l6ZV90IHg7IH0gc3Rfc2l6ZV90OwordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IF9Cb29sIHg7IH0gc3RfYm9vbDsKIAogI2RlZmluZSBTSE9SVF9BTElHTiAoc2l6ZW9mKHN0X3Nob3J0KSAtIHNpemVvZihzaG9ydCkpCiAjZGVmaW5lIElOVF9BTElHTiAoc2l6ZW9mKHN0X2ludCkgLSBzaXplb2YoaW50KSkKQEAgLTY4LDIyICs2OSwxMiBAQAogI2RlZmluZSBET1VCTEVfQUxJR04gKHNpemVvZihzdF9kb3VibGUpIC0gc2l6ZW9mKGRvdWJsZSkpCiAjZGVmaW5lIFZPSURfUF9BTElHTiAoc2l6ZW9mKHN0X3ZvaWRfcCkgLSBzaXplb2Yodm9pZCAqKSkKICNkZWZpbmUgU0laRV9UX0FMSUdOIChzaXplb2Yoc3Rfc2l6ZV90KSAtIHNpemVvZihzaXplX3QpKQorI2RlZmluZSBCT09MX0FMSUdOIChzaXplb2Yoc3RfYm9vbCkgLSBzaXplb2YoX0Jvb2wpKQogCiAvKiBXZSBjYW4ndCBzdXBwb3J0IHEgYW5kIFEgaW4gbmF0aXZlIG1vZGUgdW5sZXNzIHRoZSBjb21waWxlciBkb2VzOwogICAgaW4gc3RkIG1vZGUsIHRoZXkncmUgOCBieXRlcyBvbiBhbGwgcGxhdGZvcm1zLiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgUFlfTE9OR19MT05HIHg7IH0gc19sb25nX2xvbmc7Ci0jZGVmaW5lIExPTkdfTE9OR19BTElHTiAoc2l6ZW9mKHNfbG9uZ19sb25nKSAtIHNpemVvZihQWV9MT05HX0xPTkcpKQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0M5OV9CT09MCi0jZGVmaW5lIEJPT0xfVFlQRSBfQm9vbAotdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IF9Cb29sIHg7IH0gc19ib29sOwotI2RlZmluZSBCT09MX0FMSUdOIChzaXplb2Yoc19ib29sKSAtIHNpemVvZihCT09MX1RZUEUpKQotI2Vsc2UKLSNkZWZpbmUgQk9PTF9UWVBFIGNoYXIKLSNkZWZpbmUgQk9PTF9BTElHTiAwCi0jZW5kaWYKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBsb25nIGxvbmcgeDsgfSBzX2xvbmdfbG9uZzsKKyNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKGxvbmcgbG9uZykpCiAKICNpZmRlZiBfX3Bvd2VyYwogI3ByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CkBAIC0xNjQsMTQgKzE1NSwxMiBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogLyogU2FtZSwgYnV0IGhhbmRsaW5nIG5hdGl2ZSBsb25nIGxvbmcuICovCiAKIHN0YXRpYyBpbnQKLWdldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgUFlfTE9OR19MT05HICpwKQorZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBsb25nIGxvbmcgKnApCiB7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHg7CiAKICAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMTc5LDcgKzE2OCw3IEBACiAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CiAgICAgeCA9IFB5TG9uZ19Bc0xvbmdMb25nKHYpOwogICAgIFB5X0RFQ1JFRih2KTsKLSAgICBpZiAoeCA9PSAoUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICBpZiAoeCA9PSAobG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwpAQCAtMTkyLDkgKzE4MSw5IEBACiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIHVuc2lnbmVkIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgUFlfTE9OR19MT05HICpwKQorZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgbG9uZyBsb25nICpwKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogCiAgICAgdiA9IGdldF9weWxvbmcodik7CiAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTIwMiw3ICsxOTEsNyBAQAogICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodikpOwogICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOwogICAgIFB5X0RFQ1JFRih2KTsKLSAgICBpZiAoeCA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICBpZiAoeCA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOwpAQCAtMjEyLDggKzIwMSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNlbmRpZgotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgUHlfc3NpemVfdCAqLwogCiBzdGF0aWMgaW50CkBAIC0yNjcsNiArMjU0LDMzIEBACiAvKiBGbG9hdGluZyBwb2ludCBoZWxwZXJzICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCit1bnBhY2tfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsICAvKiBzdGFydCBvZiAyLWJ5dGUgc3RyaW5nICovCisgICAgICAgICAgICAgICAgIGludCBsZSkgICAgICAgICAvKiB0cnVlIGZvciBsaXR0bGUtZW5kaWFuLCBmYWxzZSBmb3IgYmlnLWVuZGlhbiAqLworeworICAgIGRvdWJsZSB4OworCisgICAgeCA9IF9QeUZsb2F0X1VucGFjazIoKHVuc2lnbmVkIGNoYXIgKilwLCBsZSk7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOworfQorCitzdGF0aWMgaW50CitwYWNrX2hhbGZmbG9hdChjaGFyICpwLCAgICAgIC8qIHN0YXJ0IG9mIDItYnl0ZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2LCAgLyogdmFsdWUgdG8gcGFjayAqLworICAgICAgICAgICAgICAgaW50IGxlKSAgICAgICAvKiB0cnVlIGZvciBsaXR0bGUtZW5kaWFuLCBmYWxzZSBmb3IgYmlnLWVuZGlhbiAqLworeworICAgIGRvdWJsZSB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIGFyZ3VtZW50IGlzIG5vdCBhIGZsb2F0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIF9QeUZsb2F0X1BhY2syKHgsICh1bnNpZ25lZCBjaGFyICopcCwgbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogdW5wYWNrX2Zsb2F0KGNvbnN0IGNoYXIgKnAsICAvKiBzdGFydCBvZiA0LWJ5dGUgc3RyaW5nICovCiAgICAgICAgICBpbnQgbGUpICAgICAgICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCiB7CkBAIC00MzYsNDAgKzQ1MCw0NiBAQAogLyogTmF0aXZlIG1vZGUgZG9lc24ndCBzdXBwb3J0IHEgb3IgUSB1bmxlc3MgdGhlIHBsYXRmb3JtIEMgc3VwcG9ydHMKICAgIGxvbmcgbG9uZyAob3IsIG9uIFdpbmRvd3MsIF9faW50NjQpLiAqLwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIG51X2xvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIGlmICh4ID49IExPTkdfTUlOICYmIHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfdWxvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIGlmICh4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHgpOwogfQogCi0jZW5kaWYKLQogc3RhdGljIFB5T2JqZWN0ICoKIG51X2Jvb2woY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIEJPT0xfVFlQRSB4OworICAgIF9Cb29sIHg7CiAgICAgbWVtY3B5KChjaGFyICopJngsIHAsIHNpemVvZiB4KTsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHggIT0gMCk7CiB9CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKK251X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisjaWYgUFlfTElUVExFX0VORElBTgorICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDEpOworI2Vsc2UKKyAgICByZXR1cm4gdW5wYWNrX2hhbGZmbG9hdChwLCAwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgogbnVfZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGZsb2F0IHg7CkBAIC02NDMsMTIgKzY2MywxMCBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIGludAogbnBfbG9uZ2xvbmcoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X2xvbmdsb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOwpAQCAtNjU4LDIwICs2NzYsMTkgQEAKIHN0YXRpYyBpbnQKIG5wX3Vsb25nbG9uZyhjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfdWxvbmdsb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOwogICAgIHJldHVybiAwOwogfQotI2VuZGlmCiAKIAogc3RhdGljIGludAogbnBfYm9vbChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGludCB5OwotICAgIEJPT0xfVFlQRSB4OworICAgIF9Cb29sIHg7CiAgICAgeSA9IFB5T2JqZWN0X0lzVHJ1ZSh2KTsKICAgICBpZiAoeSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTY4MSw2ICs2OTgsMTYgQEAKIH0KIAogc3RhdGljIGludAorbnBfaGFsZmZsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisjaWYgUFlfTElUVExFX0VORElBTgorICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAxKTsKKyNlbHNlCisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDApOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKIG5wX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZmxvYXQgeCA9IChmbG9hdClQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtNzIzLDcgKzc1MCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBmb3JtYXRkZWYgbmF0aXZlX3RhYmxlW10gPSB7CitzdGF0aWMgY29uc3QgZm9ybWF0ZGVmIG5hdGl2ZV90YWJsZVtdID0gewogICAgIHsneCcsICAgICAgIHNpemVvZihjaGFyKSwgICAwLCAgICAgICAgICAgICAgTlVMTH0sCiAgICAgeydiJywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBudV9ieXRlLCAgICAgICAgbnBfYnl0ZX0sCiAgICAgeydCJywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBudV91Ynl0ZSwgICAgICAgbnBfdWJ5dGV9LApAQCAtNzM4LDExICs3NjUsMTAgQEAKICAgICB7J0wnLCAgICAgICBzaXplb2YobG9uZyksICAgTE9OR19BTElHTiwgICAgIG51X3Vsb25nLCAgICAgICBucF91bG9uZ30sCiAgICAgeyduJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zc2l6ZV90LCAgICAgbnBfc3NpemVfdH0sCiAgICAgeydOJywgICAgICAgc2l6ZW9mKHNpemVfdCksIFNJWkVfVF9BTElHTiwgICBudV9zaXplX3QsICAgICAgbnBfc2l6ZV90fSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHsncScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCi0gICAgeydRJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCi0jZW5kaWYKLSAgICB7Jz8nLCAgICAgICBzaXplb2YoQk9PTF9UWVBFKSwgICAgICBCT09MX0FMSUdOLCAgICAgbnVfYm9vbCwgICAgICAgIG5wX2Jvb2x9LAorICAgIHsncScsICAgICAgIHNpemVvZihsb25nIGxvbmcpLCBMT05HX0xPTkdfQUxJR04sIG51X2xvbmdsb25nLCBucF9sb25nbG9uZ30sCisgICAgeydRJywgICAgICAgc2l6ZW9mKGxvbmcgbG9uZyksIExPTkdfTE9OR19BTElHTiwgbnVfdWxvbmdsb25nLG5wX3Vsb25nbG9uZ30sCisgICAgeyc/JywgICAgICAgc2l6ZW9mKF9Cb29sKSwgICAgICBCT09MX0FMSUdOLCAgICAgbnVfYm9vbCwgICAgICAgIG5wX2Jvb2x9LAorICAgIHsnZScsICAgICAgIHNpemVvZihzaG9ydCksICBTSE9SVF9BTElHTiwgICAgbnVfaGFsZmZsb2F0LCAgIG5wX2hhbGZmbG9hdH0sCiAgICAgeydmJywgICAgICAgc2l6ZW9mKGZsb2F0KSwgIEZMT0FUX0FMSUdOLCAgICBudV9mbG9hdCwgICAgICAgbnBfZmxvYXR9LAogICAgIHsnZCcsICAgICAgIHNpemVvZihkb3VibGUpLCBET1VCTEVfQUxJR04sICAgbnVfZG91YmxlLCAgICAgIG5wX2RvdWJsZX0sCiAgICAgeydQJywgICAgICAgc2l6ZW9mKHZvaWQgKiksIFZPSURfUF9BTElHTiwgICBudV92b2lkX3AsICAgICAgbnBfdm9pZF9wfSwKQEAgLTc4Myw4ICs4MDksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1X2xvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CkBAIC03OTIsMzcgKzgxNywzMCBAQAogICAgIH0gd2hpbGUgKC0taSA+IDApOwogICAgIC8qIEV4dGVuZCB0aGUgc2lnbiBiaXQuICovCiAgICAgaWYgKFNJWkVPRl9MT05HX0xPTkcgPiBmLT5zaXplKQotICAgICAgICB4IHw9IC0oeCAmICgoUFlfTE9OR19MT05HKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOworICAgICAgICB4IHw9IC0oeCAmICgobG9uZyBsb25nKTEgPDwgKCg4ICogZi0+c2l6ZSkgLSAxKSkpOwogICAgIGlmICh4ID49IExPTkdfTUlOICYmIHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAxICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHggPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKICAgICAgICAgeCA9ICh4PDw4KSB8ICpieXRlcysrOwogICAgIH0gd2hpbGUgKC0taSA+IDApOwogICAgIGlmICh4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHgpOwotI2Vsc2UKLSAgICByZXR1cm4gX1B5TG9uZ19Gcm9tQnl0ZUFycmF5KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIGxpdHRsZS1lbmRpYW4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAwICAvKiBzaWduZWQgKi8pOwotI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitidV9oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtOTIyLDYgKzk0MCwxMiBAQAogfQogCiBzdGF0aWMgaW50CiticF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMCk7Cit9CisKK3N0YXRpYyBpbnQKIGJwX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtOTcyLDYgKzk5Niw3IEBACiAgICAgeydxJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9sb25nbG9uZywgICAgYnBfbG9uZ2xvbmd9LAogICAgIHsnUScsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfdWxvbmdsb25nLCAgIGJwX3Vsb25nbG9uZ30sCiAgICAgeyc/JywgICAgICAgMSwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9ib29sLCAgICAgICAgYnBfYm9vbH0sCisgICAgeydlJywgICAgICAgMiwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9oYWxmZmxvYXQsICAgYnBfaGFsZmZsb2F0fSwKICAgICB7J2YnLCAgICAgICA0LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Zsb2F0LCAgICAgICBicF9mbG9hdH0sCiAgICAgeydkJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV9kb3VibGUsICAgICAgYnBfZG91YmxlfSwKICAgICB7MH0KQEAgLTEwMTEsOCArMTAzNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbHVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHggPSAwOworICAgIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKQEAgLTEwMjAsMzcgKzEwNDQsMzAgQEAKICAgICB9IHdoaWxlIChpID4gMCk7CiAgICAgLyogRXh0ZW5kIHRoZSBzaWduIGJpdC4gKi8KICAgICBpZiAoU0laRU9GX0xPTkdfTE9ORyA+IGYtPnNpemUpCi0gICAgICAgIHggfD0gLSh4ICYgKChQWV9MT05HX0xPTkcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CisgICAgICAgIHggfD0gLSh4ICYgKChsb25nIGxvbmcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDEgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGx1X3Vsb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewogICAgICAgICB4ID0gKHg8PDgpIHwgYnl0ZXNbLS1pXTsKICAgICB9IHdoaWxlIChpID4gMCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDAgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2x1X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTQyLDYgKzExNTksMTIgQEAKIH0KIAogc3RhdGljIGludAorbHBfaGFsZmZsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDEpOworfQorCitzdGF0aWMgaW50CiBscF9mbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewogICAgIGRvdWJsZSB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKQEAgLTExODIsNiArMTIwNSw3IEBACiAgICAgeydRJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV91bG9uZ2xvbmcsICAgbHBfdWxvbmdsb25nfSwKICAgICB7Jz8nLCAgICAgICAxLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Jvb2wsICAgICAgICBicF9ib29sfSwgLyogU3RkIHJlcCBub3QgZW5kaWFuIGRlcCwKICAgICAgICAgYnV0IHBvdGVudGlhbGx5IGRpZmZlcmVudCBmcm9tIG5hdGl2ZSByZXAgLS0gcmV1c2UgYnhfYm9vbCBmdW5jcy4gKi8KKyAgICB7J2UnLCAgICAgICAyLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X2hhbGZmbG9hdCwgICBscF9oYWxmZmxvYXR9LAogICAgIHsnZicsICAgICAgIDQsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfZmxvYXQsICAgICAgIGxwX2Zsb2F0fSwKICAgICB7J2QnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X2RvdWJsZSwgICAgICBscF9kb3VibGV9LAogICAgIHswfQpAQCAtMTE4OSw3ICsxMjEzLDcgQEAKIAogCiBzdGF0aWMgY29uc3QgZm9ybWF0ZGVmICoKLXdoaWNodGFibGUoY2hhciAqKnBmbXQpCit3aGljaHRhYmxlKGNvbnN0IGNoYXIgKipwZm10KQogewogICAgIGNvbnN0IGNoYXIgKmZtdCA9ICgqcGZtdCkrKzsgLyogTWF5IGJlIGJhY2tlZCBvdXQgb2YgbGF0ZXIgKi8KICAgICBzd2l0Y2ggKCpmbXQpIHsKQEAgLTEyNjgsNyArMTI5Miw3IEBACiAKICAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5zX2Zvcm1hdCk7CiAKLSAgICBmID0gd2hpY2h0YWJsZSgoY2hhciAqKikmZm10KTsKKyAgICBmID0gd2hpY2h0YWJsZSgmZm10KTsKIAogICAgIHMgPSBmbXQ7CiAgICAgc2l6ZSA9IDA7CkBAIC0xNDU2LDcgKzE0ODAsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotc191bnBhY2tfaW50ZXJuYWwoUHlTdHJ1Y3RPYmplY3QgKnNvc2VsZiwgY2hhciAqc3RhcnRmcm9tKSB7CitzX3VucGFja19pbnRlcm5hbChQeVN0cnVjdE9iamVjdCAqc29zZWxmLCBjb25zdCBjaGFyICpzdGFydGZyb20pIHsKICAgICBmb3JtYXRjb2RlICpjb2RlOwogICAgIFB5X3NzaXplX3QgaSA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5VHVwbGVfTmV3KHNvc2VsZi0+c19sZW4pOwpAQCAtMjIzOSw3ICsyMjYzLDcgQEAKICAgeDogcGFkIGJ5dGUgKG5vIGRhdGEpOyBjOmNoYXI7IGI6c2lnbmVkIGJ5dGU7IEI6dW5zaWduZWQgYnl0ZTtcblwKICAgPzogX0Jvb2wgKHJlcXVpcmVzIEM5OTsgaWYgbm90IGF2YWlsYWJsZSwgY2hhciBpcyB1c2VkIGluc3RlYWQpXG5cCiAgIGg6c2hvcnQ7IEg6dW5zaWduZWQgc2hvcnQ7IGk6aW50OyBJOnVuc2lnbmVkIGludDtcblwKLSAgbDpsb25nOyBMOnVuc2lnbmVkIGxvbmc7IGY6ZmxvYXQ7IGQ6ZG91YmxlLlxuXAorICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGU7IGU6aGFsZi1mbG9hdC5cblwKIFNwZWNpYWwgY2FzZXMgKHByZWNlZGluZyBkZWNpbWFsIGNvdW50IGluZGljYXRlcyBsZW5ndGgpOlxuXAogICBzOnN0cmluZyAoYXJyYXkgb2YgY2hhcik7IHA6IHBhc2NhbCBzdHJpbmcgKHdpdGggY291bnQgYnl0ZSkuXG5cCiBTcGVjaWFsIGNhc2VzIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKQEAgLTIyNzksNyArMjMwMyw3IEBACiAKICAgICAvKiBDaGVjayBlbmRpYW4gYW5kIHN3YXAgaW4gZmFzdGVyIGZ1bmN0aW9ucyAqLwogICAgIHsKLSAgICAgICAgZm9ybWF0ZGVmICpuYXRpdmUgPSBuYXRpdmVfdGFibGU7CisgICAgICAgIGNvbnN0IGZvcm1hdGRlZiAqbmF0aXZlID0gbmF0aXZlX3RhYmxlOwogICAgICAgICBmb3JtYXRkZWYgKm90aGVyLCAqcHRyOwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICAgICAgb3RoZXIgPSBsaWxlbmRpYW5fdGFibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKaW5kZXggNDNkYjhhOC4uMTNkM2NjYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCisrKyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpAQCAtMTMsNyArMTMsNyBAQAogUHlPYmplY3QgKmNhbGNzaXplID0gTlVMTDsKIAogLyogY2FjaGUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzaW1wbGVfZm10ID0gIkIiOworc3RhdGljIGNvbnN0IGNoYXIgc2ltcGxlX2ZtdFtdID0gIkIiOwogUHlPYmplY3QgKnNpbXBsZV9mb3JtYXQgPSBOVUxMOwogI2RlZmluZSBTSU1QTEVfRk9STUFUKGZtdCkgKGZtdCA9PSBOVUxMIHx8IHN0cmNtcChmbXQsICJCIikgPT0gMCkKICNkZWZpbmUgRklYX0ZPUk1BVChmbXQpIChmbXQgPT0gTlVMTCA/ICJCIiA6IGZtdCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCmluZGV4IDI5YTI4YTcuLmVjZmMwODUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwpAQCAtNjAsOSArNjAsNyBAQAogICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9ORywgbG9uZyk7CiAgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9WT0lEX1AsIHZvaWQqKTsKICAgICBDSEVDS19TSVpFT0YoU0laRU9GX1RJTUVfVCwgdGltZV90KTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfTE9OR19MT05HLCBQWV9MT05HX0xPTkcpOwotI2VuZGlmCisgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HX0xPTkcsIGxvbmcgbG9uZyk7CiAKICN1bmRlZiBDSEVDS19TSVpFT0YKIApAQCAtMTAwLDIyICs5OCwxNCBAQAogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzEsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzIsIDApOwogICAgIENIRUNLX1NJR05ORVNTKFB5X1VDUzQsIDApOwotI2lmZGVmIEhBVkVfSU5UMzJfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQzMl9ULCA0KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQzMl9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDMyX1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDMyX1QsIDQpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQzMl9ULCAwKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfSU5UNjRfVAotICAgIENIRUNLX1NJWkVPRihQWV9JTlQ2NF9ULCA4KTsKLSAgICBDSEVDS19TSUdOTkVTUyhQWV9JTlQ2NF9ULCAxKTsKLSNlbmRpZgotI2lmZGVmIEhBVkVfVUlOVDY0X1QKLSAgICBDSEVDS19TSVpFT0YoUFlfVUlOVDY0X1QsIDgpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX1VJTlQ2NF9ULCAwKTsKLSNlbmRpZgorICAgIENIRUNLX1NJWkVPRihpbnQzMl90LCA0KTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnQzMl90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludDMyX3QsIDQpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnQzMl90LCAwKTsKKyAgICBDSEVDS19TSVpFT0YoaW50NjRfdCwgOCk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50NjRfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnQ2NF90LCA4KTsKKyAgICBDSEVDS19TSUdOTkVTUyh1aW50NjRfdCwgMCk7CiAKICAgICAvKiBwb2ludGVyL3NpemUgdHlwZXMgKi8KICAgICBDSEVDS19TSVpFT0Yoc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CkBAIC0xMjMsMTAgKzExMywxMCBAQAogICAgIENIRUNLX1NJWkVPRihQeV9zc2l6ZV90LCBzaXplb2Yodm9pZCAqKSk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfc3NpemVfdCwgMSk7CiAKLSAgICBDSEVDS19TSVpFT0YoUHlfdWludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUHlfdWludHB0cl90LCAwKTsKLSAgICBDSEVDS19TSVpFT0YoUHlfaW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKLSAgICBDSEVDS19TSUdOTkVTUyhQeV9pbnRwdHJfdCwgMSk7CisgICAgQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnRwdHJfdCwgMCk7CisgICAgQ0hFQ0tfU0laRU9GKGludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7CisgICAgQ0hFQ0tfU0lHTk5FU1MoaW50cHRyX3QsIDEpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtMjQ4LDYgKzIzOCwyNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCitzdGF0aWMgUHlPYmplY3QqCitkaWN0X2dldGl0ZW1fa25vd25oYXNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqbXAsICprZXksICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBoYXNoOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT246ZGljdF9nZXRpdGVtX2tub3duaGFzaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZtcCwgJmtleSwgJmhhc2gpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2gobXAsIGtleSwgKFB5X2hhc2hfdCloYXNoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1hJTkNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQogCiAvKiBJc3N1ZSAjNDcwMTogQ2hlY2sgdGhhdCBQeU9iamVjdF9IYXNoIGltcGxpY2l0bHkgY2FsbHMKICAqICAgUHlUeXBlX1JlYWR5IGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gY2FsbGVkCkBAIC0zNTcsMTIgKzM2NywxMiBAQAogfQogCiAKLS8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZCAoI2lmZGVmIEhBVkVfTE9OR19MT05HKQorLyogVGVzdHMgb2YgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmcoKSwgYW5kCiAgICBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZ0xvbmcoKS4KIAogICAgTm90ZSB0aGF0IHRoZSBtZWF0IG9mIHRoZSB0ZXN0IGlzIGNvbnRhaW5lZCBpbiB0ZXN0Y2FwaV9sb25nLmguCiAgICBUaGlzIGlzIHJldm9sdGluZywgYnV0IGRlbGljYXRlIGNvZGUgZHVwbGljYXRpb24gaXMgd29yc2U6ICAiYWxtb3N0Ci0gICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IFBZX0xPTkdfTE9ORywgYnV0IHRoZSB1YmlxdWl0b3VzCisgICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IGxvbmcgbG9uZywgYnV0IHRoZSB1YmlxdWl0b3VzCiAgICBkZXBlbmRlbmNlIG9uIHR5cGUgbmFtZXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB1c2UgYSBwYXJhbWV0ZXJpemVkCiAgICBmdW5jdGlvbi4gIEEgZ2lhbnQgbWFjcm8gd291bGQgYmUgZXZlbiB3b3JzZSB0aGFuIHRoaXMuICBBIEMrKyB0ZW1wbGF0ZQogICAgd291bGQgYmUgcGVyZmVjdC4KQEAgLTQwMiw4ICs0MTIsNiBAQAogI3VuZGVmIEZfVV9UT19QWQogI3VuZGVmIEZfUFlfVE9fVQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIHJhaXNlX3Rlc3RfbG9uZ2xvbmdfZXJyb3IoY29uc3QgY2hhciogbXNnKQogewpAQCAtNDExLDcgKzQxOSw3IEBACiB9CiAKICNkZWZpbmUgVEVTVE5BTUUgICAgICAgIHRlc3RfbG9uZ2xvbmdfYXBpX2lubmVyCi0jZGVmaW5lIFRZUEVOQU1FICAgICAgICBQWV9MT05HX0xPTkcKKyNkZWZpbmUgVFlQRU5BTUUgICAgICAgIGxvbmcgbG9uZwogI2RlZmluZSBGX1NfVE9fUFkgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZwogI2RlZmluZSBGX1BZX1RPX1MgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcKICNkZWZpbmUgRl9VX1RPX1BZICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwpAQCAtNTk4LDcgKzYwNiw3IEBACiB9CiAKIC8qIFRlc3QgdGhlIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cgQVBJLiBHZW5lcmFsIGNvbnZlcnNpb24gdG8KLSAgIFBZX0xPTkdfTE9ORyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKKyAgIGxvbmcgbG9uZyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKICAgIGNvbmNlbnRyYXRlIG9uIHByb3BlciBoYW5kbGluZyBvZiBvdmVyZmxvdy4KICovCiAKQEAgLTYwNiw3ICs2MTQsNyBAQAogdGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpudW0sICpvbmUsICp0ZW1wOwotICAgIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICBsb25nIGxvbmcgdmFsdWU7CiAgICAgaW50IG92ZXJmbG93OwogCiAgICAgLyogVGVzdCB0aGF0IG92ZXJmbG93IGlzIHNldCBwcm9wZXJseSBmb3IgYSBsYXJnZSB2YWx1ZS4gKi8KQEAgLTgyNCw3ICs4MzIsNyBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0vKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgUFlfTE9OR19MT05HCisvKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgbG9uZyBsb25nCiAgICBmb3IgYm90aCBsb25nIGFuZCBpbnQgYXJndW1lbnRzLiAgVGhlIHRlc3QgbWF5IGxlYWsgYSBsaXR0bGUgbWVtb3J5IGlmCiAgICBpdCBmYWlscy4KICovCkBAIC04MzIsNyArODQwLDcgQEAKIHRlc3RfTF9jb2RlKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0dXBsZSwgKm51bTsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogCiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldygxKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTg3MCw4ICs4NzgsNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0jZW5kaWYgIC8qIGlmZGVmIEhBVkVfTE9OR19MT05HICovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiByZXR1cm5fbm9uZSh2b2lkICp1bnVzZWQpCiB7CkBAIC0xMDAxLDcgKzEwMDcsNyBAQAogZ2V0YXJnc19rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImFyZzEiLCJhcmcyIiwiYXJnMyIsImFyZzQiLCJhcmc1IiwgTlVMTH07Ci0gICAgc3RhdGljIGNoYXIgKmZtdD0iKGlpKWl8KGkoaWkpKShpaWkpaSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgZm10W10gPSAiKGlpKWl8KGkoaWkpKShpaWkpaSI7CiAgICAgaW50IGludF9hcmdzWzEwXT17LTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTF9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCBmbXQsIGtleXdvcmRzLApAQCAtMTAyOCw2ICsxMDM0LDIxIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZF9vbmx5KTsKIH0KIAorLyogdGVzdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgcG9zaXRpb25hbC1vbmx5IGFyZ3VtZW50cyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7IiIsICIiLCAia2V5d29yZCIsIE5VTEx9OworICAgIGludCByZXF1aXJlZCA9IC0xOworICAgIGludCBvcHRpb25hbCA9IC0xOworICAgIGludCBrZXl3b3JkID0gLTE7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpfGlpIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcXVpcmVkLCAmb3B0aW9uYWwsICZrZXl3b3JkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlpaSIsIHJlcXVpcmVkLCBvcHRpb25hbCwga2V5d29yZCk7Cit9CisKIC8qIEZ1bmN0aW9ucyB0byBjYWxsIFB5QXJnX1BhcnNlVHVwbGUgd2l0aCBpbnRlZ2VyIGZvcm1hdCBjb2RlcywKICAgIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICovCkBAIC0xMTIxLDExICsxMTQyLDEwIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogc3RhdGljIFB5T2JqZWN0ICoKIGdldGFyZ3NfTChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbHVlOworICAgIGxvbmcgbG9uZyB2YWx1ZTsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkwiLCAmdmFsdWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWx1ZSk7CkBAIC0xMTM0LDEyICsxMTU0LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19LKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSyIsICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOwogfQotI2VuZGlmCiAKIC8qIFRoaXMgZnVuY3Rpb24gbm90IG9ubHkgdGVzdHMgdGhlICdrJyBnZXRhcmdzIGNvZGUsIGJ1dCBhbHNvIHRoZQogICAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIGFuZCBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgZnVuY3Rpb25zLiAqLwpAQCAtMTE2MSw3ICsxMTgwLDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gVUxPTkdfTUFYKQogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfa19jb2RlIiwKLSAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOworICAgICAgICAgICAgIlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOwogCiAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgMCwgbnVtKTsKIApAQCAtMTE4MCw3ICsxMTk5LDcgQEAKICAgICB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sobnVtKTsKICAgICBpZiAodmFsdWUgIT0gKHVuc2lnbmVkIGxvbmcpLTB4NDIpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAotICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CisgICAgICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CiAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCkBAIC0yMTkzLDcgKzIyMTIsNyBAQAogICAgIFB5T2JqZWN0ICpyYzsKICAgICBpbnQgc3VjY2VzczsKICAgICBQeUdJTFN0YXRlX1NUQVRFIHMgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwotICAgIHJjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKWNhbGxhYmxlLCAiIik7CisgICAgcmMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKChQeU9iamVjdCAqKWNhbGxhYmxlKTsKICAgICBzdWNjZXNzID0gKHJjICE9IE5VTEwpOwogICAgIFB5X1hERUNSRUYocmMpOwogICAgIFB5R0lMU3RhdGVfUmVsZWFzZShzKTsKQEAgLTIzMjcsMTAgKzIzNDYsOCBAQAogICAgIENIRUNLXzFfRk9STUFUKCIlenUiLCBzaXplX3QpOwogCiAgICAgLyogIiVsbGQiIGFuZCAiJWxsdSIgc3VwcG9ydCBhZGRlZCBpbiBQeXRob24gMi43LiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbHUiLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOwotICAgIENIRUNLXzFfRk9STUFUKCIlbGxkIiwgUFlfTE9OR19MT05HKTsKLSNlbmRpZgorICAgIENIRUNLXzFfRk9STUFUKCIlbGx1IiwgdW5zaWduZWQgbG9uZyBsb25nKTsKKyAgICBDSEVDS18xX0ZPUk1BVCgiJWxsZCIsIGxvbmcgbG9uZyk7CiAKICAgICBQeV9SRVRVUk5fTk9ORTsKIApAQCAtMjM3NSw3ICsyMzkyLDcgQEAKICAgICByZXN1bHQgPSBQeU9TX3N0cmluZ190b19kb3VibGUoU1RSLCBOVUxMLCBOVUxMKTsgICAgICAgICAgICBcCiAgICAgaWYgKHJlc3VsdCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAocmVzdWx0ICE9IGV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJlc3VsdCAhPSAoZG91YmxlKWV4cGVjdGVkKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBtc2cgPSAiY29udmVyc2lvbiBvZiAiIFNUUiAiIHRvIGZsb2F0IGZhaWxlZCI7ICAgICAgICAgIFwKICAgICAgICAgZ290byBmYWlsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfQpAQCAtMjk2Nyw3ICsyOTg0LDkgQEAKIHN0YXRpYyBpbnQKIGNoZWNrX3RpbWVfcm91bmRpbmcoaW50IHJvdW5kKQogewotICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0ZMT09SCisgICAgICAgICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfQ0VJTElORworICAgICAgICAmJiByb3VuZCAhPSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgcm91bmRpbmciKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTM0NjIsNyArMzQ4MSw3IEBACiAgICAgLyogQWxsb2NhdGUgYSBQeXRob24gdGhyZWFkIHN0YXRlIGZvciB0aGlzIHRocmVhZCAqLwogICAgIHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKIAotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbih0ZXN0X2NfdGhyZWFkLT5jYWxsYmFjaywgIiIsIE5VTEwpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcodGVzdF9jX3RocmVhZC0+Y2FsbGJhY2spOwogICAgIFB5X0NMRUFSKHRlc3RfY190aHJlYWQtPmNhbGxiYWNrKTsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkgewpAQCAtMzc1Miw3ICszNzcxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X3B5dGltZV9hc3NlY29uZHNkb3VibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHRzOwogICAgIGRvdWJsZSBkOwogCkBAIC0zNzY2LDcgKzM3ODUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXZhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBpbnQgcm91bmQ7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWV2YWwgdHY7CkBAIC0zNzgwLDcgKzM3OTksNyBAQAogICAgIGlmIChfUHlUaW1lX0FzVGltZXZhbCh0LCAmdHYsIHJvdW5kKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygoUFlfTE9OR19MT05HKXR2LnR2X3NlYyk7CisgICAgc2Vjb25kcyA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyBsb25nKXR2LnR2X3NlYyk7CiAgICAgaWYgKHNlY29uZHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgc2Vjb25kcywgdHYudHZfdXNlYyk7CkBAIC0zNzkwLDcgKzM4MDksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzVGltZXNwZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgX1B5VGltZV90IHQ7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRzOwogCkBAIC0zODA2LDcgKzM4MjUsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfUHlUaW1lX0FzTWlsbGlzZWNvbmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIGludCByb3VuZDsKICAgICBfUHlUaW1lX3QgdCwgbXM7CiAKQEAgLTM4MjQsNyArMzg0Myw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNNaWNyb3NlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgaW50IHJvdW5kOwogICAgIF9QeVRpbWVfdCB0LCBtczsKIApAQCAtMzg0OCw2ICszODY3LDE1MiBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodHN0YXRlLT5yZWN1cnNpb25fZGVwdGggLSAxKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorcHltZW1fYnVmZmVyX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZmZlciBvdmVyZmxvdyB0byBjaGVjayB0aGF0IFB5TWVtX0ZyZWUoKSBkZXRlY3RzCisgICAgICAgdGhlIG92ZXJmbG93IHdoZW4gZGVidWcgaG9va3MgYXJlIGluc3RhbGxlZC4gKi8KKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTYpOworICAgIGJ1ZmZlclsxNl0gPSAneCc7CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX2FwaV9taXN1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgbWlzdXNhZ2Ugb2YgUHl0aG9uIGFsbG9jYXRvcnM6CisgICAgICAgYWxsb2NvY2F0ZSB3aXRoIFB5TWVtIGJ1dCByZWxlYXNlIHdpdGggUHlNZW1fUmF3LiAqLworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxNik7CisgICAgUHlNZW1fUmF3RnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5bWVtX21hbGxvY193aXRob3V0X2dpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBidWcgdG8gdGVzdCBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnM6CisgICAgICAgY2FsbCBQeU1lbV9NYWxsb2MoKSB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBidWZmZXIgPSBQeU1lbV9NYWxsb2MoMTApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHlvYmplY3RfbWFsbG9jX3dpdGhvdXRfZ2lsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZyB0byB0ZXN0IGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yczoKKyAgICAgICBjYWxsIFB5T2JqZWN0X01hbGxvYygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYygxMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5T2JqZWN0X0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdHJhY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBkb21haW47CisgICAgUHlPYmplY3QgKnB0cl9vYmo7CisgICAgdm9pZCAqcHRyOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgcmVsZWFzZV9naWwgPSAwOworICAgIGludCByZXM7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIklPbnxpIiwgJmRvbWFpbiwgJnB0cl9vYmosICZzaXplLCAmcmVsZWFzZV9naWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwdHIgPSBQeUxvbmdfQXNWb2lkUHRyKHB0cl9vYmopOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChyZWxlYXNlX2dpbCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJlcyA9IF9QeVRyYWNlTWFsbG9jX1RyYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIsIHNpemUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVHJhY2soZG9tYWluLCAodWludHB0cl90KXB0ciwgc2l6ZSk7CisgICAgfQorCisgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIl9QeVRyYWNlTWFsbG9jX1RyYWNrIGVycm9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordHJhY2VtYWxsb2NfdW50cmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGRvbWFpbjsKKyAgICBQeU9iamVjdCAqcHRyX29iajsKKyAgICB2b2lkICpwdHI7CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVW50cmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiX1B5VHJhY2VNYWxsb2NfVHJhY2sgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgZG9tYWluOworICAgIFB5T2JqZWN0ICpwdHJfb2JqOworICAgIHZvaWQgKnB0cjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU8iLCAmZG9tYWluLCAmcHRyX29iaikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RfZ2V0X3ZlcnNpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RGljdE9iamVjdCAqZGljdDsKKyAgICB1aW50NjRfdCB2ZXJzaW9uOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPISIsICZQeURpY3RfVHlwZSwgJmRpY3QpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZlcnNpb24gPSBkaWN0LT5tYV92ZXJzaW9uX3RhZzsKKworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodW5zaWduZWQgUFlfTE9OR19MT05HKSA+PSBzaXplb2YodmVyc2lvbikpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyl2ZXJzaW9uKTsKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTM4NTgsNiArNDAyMyw3IEBACiAgICAgeyJ0ZXN0X2RhdGV0aW1lX2NhcGkiLCAgdGVzdF9kYXRldGltZV9jYXBpLCAgICAgICAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9saXN0X2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9saXN0X2FwaSwgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2RpY3RfaXRlcmF0aW9uIiwgICAgIChQeUNGdW5jdGlvbil0ZXN0X2RpY3RfaXRlcmF0aW9uLE1FVEhfTk9BUkdTfSwKKyAgICB7ImRpY3RfZ2V0aXRlbV9rbm93bmhhc2giLCAgZGljdF9nZXRpdGVtX2tub3duaGFzaCwgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlc3RfbGF6eV9oYXNoX2luaGVyaXRhbmNlIiwgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sYXp5X2hhc2hfaW5oZXJpdGFuY2UsTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FwaSwgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3hpbmNyZWZfZG9lc250X2xlYWsiLChQeUNGdW5jdGlvbil0ZXN0X3hpbmNyZWZfZG9lc250X2xlYWssICAgICAgTUVUSF9OT0FSR1N9LApAQCAtMzg5Myw2ICs0MDU5LDkgQEAKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3Nfa2V5d29yZF9vbmx5IiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZF9vbmx5LAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAorICAgIHsiZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzIiwKKyAgICAgIChQeUNGdW5jdGlvbilnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMsCisgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRhcmdzX2IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfQiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2giLCAgICAgICAgICAgICAgIGdldGFyZ3NfaCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0zOTAzLDE0ICs0MDcyLDEyIEBACiAgICAgeyJnZXRhcmdzX2wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfbCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX24iLCAgICAgICAgICAgICAgIGdldGFyZ3NfbiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3AiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7ImdldGFyZ3NfTCIsICAgICAgICAgICAgICAgZ2V0YXJnc19MLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfSyIsICAgICAgICAgICAgICAgZ2V0YXJnc19LLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlc3RfbG9uZ2xvbmdfYXBpIiwgICAgICAgdGVzdF9sb25nbG9uZ19hcGksICAgICAgICAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93IiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdywgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9MX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9MX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCi0jZW5kaWYKICAgICB7ImdldGFyZ3NfZiIsICAgICAgICAgICAgICAgZ2V0YXJnc19mLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfZCIsICAgICAgICAgICAgICAgZ2V0YXJnc19kLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfRCIsICAgICAgICAgICAgICAgZ2V0YXJnc19ELCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTQwNDEsNiArNDIwOCwxNCBAQAogICAgIHsiUHlUaW1lX0FzTWlsbGlzZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJQeVRpbWVfQXNNaWNyb3NlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldF9yZWN1cnNpb25fZGVwdGgiLCBnZXRfcmVjdXJzaW9uX2RlcHRoLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9idWZmZXJfb3ZlcmZsb3ciLCBweW1lbV9idWZmZXJfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5bWVtX2FwaV9taXN1c2UiLCBweW1lbV9hcGlfbWlzdXNlLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwiLCBweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwsIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCIsIHB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCwgTUVUSF9OT0FSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfdHJhY2siLCB0cmFjZW1hbGxvY190cmFjaywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX3VudHJhY2siLCB0cmFjZW1hbGxvY191bnRyYWNrLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayIsIHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2ssIE1FVEhfVkFSQVJHU30sCisgICAgeyJkaWN0X2dldF92ZXJzaW9uIiwgZGljdF9nZXRfdmVyc2lvbiwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQwNjAsMTAgKzQyMzUsOCBAQAogICAgIGZsb2F0IGZsb2F0X21lbWJlcjsKICAgICBkb3VibGUgZG91YmxlX21lbWJlcjsKICAgICBjaGFyIGlucGxhY2VfbWVtYmVyWzZdOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIGxvbmdsb25nX21lbWJlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdWxvbmdsb25nX21lbWJlcjsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyBsb25nbG9uZ19tZW1iZXI7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHVsb25nbG9uZ19tZW1iZXI7CiB9IGFsbF9zdHJ1Y3RtZW1iZXJzOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC00MDg1LDEwICs0MjU4LDggQEAKICAgICB7IlRfRkxPQVQiLCBUX0ZMT0FULCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyKSwgMCwgTlVMTH0sCiAgICAgeyJUX0RPVUJMRSIsIFRfRE9VQkxFLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZG91YmxlX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9TVFJJTkdfSU5QTEFDRSIsIFRfU1RSSU5HX0lOUExBQ0UsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5pbnBsYWNlX21lbWJlciksIDAsIE5VTEx9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeyJUX0xPTkdMT05HIiwgVF9MT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmxvbmdsb25nX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9VTE9OR0xPTkciLCBUX1VMT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLnVsb25nbG9uZ19tZW1iZXIpLCAwLCBOVUxMfSwKLSNlbmRpZgogICAgIHtOVUxMfQogfTsKIApAQCAtNDEwMCwxNSArNDI3MSw5IEBACiAgICAgICAgICJUX0JPT0wiLCAiVF9CWVRFIiwgIlRfVUJZVEUiLCAiVF9TSE9SVCIsICJUX1VTSE9SVCIsCiAgICAgICAgICJUX0lOVCIsICJUX1VJTlQiLCAiVF9MT05HIiwgIlRfVUxPTkciLCAiVF9QWVNTSVpFVCIsCiAgICAgICAgICJUX0ZMT0FUIiwgIlRfRE9VQkxFIiwgIlRfU1RSSU5HX0lOUExBQ0UiLAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICJUX0xPTkdMT05HIiwgIlRfVUxPTkdMT05HIiwKLSNlbmRpZgogICAgICAgICBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10ID0gInxiYkJoSGlJbGtuZmRzIyIKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAiTEsiCi0jZW5kaWYKLSAgICAgICAgOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gInxiYkJoSGlJbGtuZmRzI0xLIjsKICAgICB0ZXN0X3N0cnVjdG1lbWJlcnMgKm9iOwogICAgIGNvbnN0IGNoYXIgKnMgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RyaW5nX2xlbiA9IDA7CkBAIC00MTMwLDEwICs0Mjk1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy5kb3VibGVfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzLCAmc3RyaW5nX2xlbgotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmb2ItPnN0cnVjdG1lbWJlcnMubG9uZ2xvbmdfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy51bG9uZ2xvbmdfbWVtYmVyCi0jZW5kaWYKICAgICAgICAgKSkgewogICAgICAgICBQeV9ERUNSRUYob2IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ0NTksNiArNDYyMiw3IEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJQWV9TU0laRV9UX01BWCIsIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01BWCkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUFlfU1NJWkVfVF9NSU4iLCBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NSU4pKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9QWUdDX0hFQUQiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKFB5R0NfSGVhZCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9USU1FX1QiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKHRpbWVfdCkpKTsKICAgICBQeV9JTkNSRUYoJlB5SW5zdGFuY2VNZXRob2RfVHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbnN0YW5jZW1ldGhvZCIsIChQeU9iamVjdCAqKSZQeUluc3RhbmNlTWV0aG9kX1R5cGUpOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwppbmRleCA0MWRhOTk3Li40ZGFhMzRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKQEAgLTYxLDcgKzYxLDcgQEAKIH0KIAogc3RhdGljIGludAotRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggMTYzYzg3Zi4uM2U5NmFhMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtNDYyLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0odiwgaSwgdyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHcpOwogICAgICAgICB9CiAgICAgfQogICAgIFRjbF9GcmVlKEZSRUVDQVNUIGFyZ3YpOwpAQCAtNDgwLDEzICs0ODAsMTMgQEAKICAgICAgICAgUHlfc3NpemVfdCBpLCBzaXplOwogICAgICAgICBQeU9iamVjdCAqZWxlbSwgKm5ld2VsZW0sICpyZXN1bHQ7CiAKLSAgICAgICAgc2l6ZSA9IFB5VHVwbGVfU2l6ZShhcmcpOworICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmcpOwogICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgICAgICAvKiBSZWN1cnNpdmVseSBpbnZva2UgU3BsaXRPYmogZm9yIGFsbCB0dXBsZSBpdGVtcy4KICAgICAgICAgICAgSWYgdGhpcyBkb2VzIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0LCBubyBhY3Rpb24gaXMKICAgICAgICAgICAgbmVlZGVkLiAqLwogICAgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dldEl0ZW0oYXJnLCBpKTsKKyAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7CiAgICAgICAgICAgICBuZXdlbGVtID0gU3BsaXRPYmooZWxlbSk7CiAgICAgICAgICAgICBpZiAoIW5ld2VsZW0pIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CkBAIC01MDIsMTIgKzUwMiwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBpOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR2V0SXRlbShhcmcsIGspOworICAgICAgICAgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmcsIGspOwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGssIGVsZW0pOworICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaywgZWxlbSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01MjksNyArNTI5LDcgQEAKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKICAgICAgICAgY29uc3QgY2hhciAqKmFyZ3Y7Ci0gICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FzU3RyaW5nKGFyZyk7CisgICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOwogCiAgICAgICAgIGlmIChUY2xfU3BsaXRMaXN0KChUY2xfSW50ZXJwICopTlVMTCwgbGlzdCwgJmFyZ2MsICZhcmd2KSAhPSBUQ0xfT0spIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNTU5LDcgKzU1OSw3IEBACiAgICAgICAgIH0KICAgICAgICAgVGNsX0ZyZWUoRlJFRUNBU1QgYXJndik7CiAgICAgICAgIGlmIChhcmdjID4gMSkKLSAgICAgICAgICAgIHJldHVybiBTcGxpdChQeUJ5dGVzX0FzU3RyaW5nKGFyZykpOworICAgICAgICAgICAgcmV0dXJuIFNwbGl0KFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZykpOwogICAgICAgICAvKiBGYWxsIHRocm91Z2gsIHJldHVybmluZyBhcmcuICovCiAgICAgfQogICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNzU4LDcgKzc1OCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFRjbF9TZXRWYXIodi0+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+PSAweDEwMDAyMDAwVUwpICovCisKIFB5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19fZG9jX18sCiAiX3NldF9ucG5fcHJvdG9jb2xzKCRzZWxmLCBwcm90b3MsIC8pXG4iCiAiLS1cbiIKQEAgLTM4NiwxNCArNDE3LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHByb3RvcyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCi0gICAgaWYgKHByb3Rvcy5vYmopCisgICAgaWYgKHByb3Rvcy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MTYsMTQgKzQ0OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBwcm90b3MgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfYWxwbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfYWxwbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKHNlbGYsICZwcm90b3MpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHByb3RvcyAqLwotICAgIGlmIChwcm90b3Mub2JqKQorICAgIGlmIChwcm90b3Mub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDM0LDI0ICs0NjksMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9DRVJUX0NIQUlOX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX199LAorICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpjZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleWZpbGUsIFB5T2JqZWN0ICpwYXNzd29yZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE9POmxvYWRfY2VydF9jaGFpbiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmNlcnRmaWxlOwogICAgIFB5T2JqZWN0ICprZXlmaWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGFzc3dvcmQgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9pbXBsKHNlbGYsIGNlcnRmaWxlLCBrZXlmaWxlLCBwYXNzd29yZCk7CiAKIGV4aXQ6CkBAIC00NjQsNyArNTAxLDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9WRVJJRllfTE9DQVRJT05TX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19fZG9jX199LAorICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCkBAIC00NzMsMTcgKzUxMCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNhZmlsZSIsICJjYXBhdGgiLCAiY2FkYXRhIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9PTzpsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpjYWZpbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjYXBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjYWRhdGEgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9PTzpsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCBfa2V5d29yZHMsCi0gICAgICAgICZjYWZpbGUsICZjYXBhdGgsICZjYWRhdGEpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoc2VsZiwgY2FmaWxlLCBjYXBhdGgsIGNhZGF0YSk7CiAKIGV4aXQ6CkBAIC01MDQsMjQgKzU0MywyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGICAgIFwKLSAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCisgICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQsIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzb2NrIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8haXxPOl93cmFwX3NvY2tldCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNvY2s7CiAgICAgaW50IHNlcnZlcl9zaWRlOwogICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyFpfE86X3dyYXBfc29ja2V0IiwgX2tleXdvcmRzLAotICAgICAgICBQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUsICZzb2NrLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUsICZzb2NrLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfaW1wbChzZWxmLCBzb2NrLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWVfb2JqKTsKIAogZXhpdDoKQEAgLTUzNSw3ICs1NzYsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGICAgIFwKLSAgICB7Il93cmFwX2JpbyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCisgICAgeyJfd3JhcF9iaW8iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8sIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nLApAQCAtNTQzLDE4ICs1ODQsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X193cmFwX2JpbyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyFPIWl8Tzpfd3JhcF9iaW8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5U1NMTWVtb3J5QklPICppbmNvbWluZzsKICAgICBQeVNTTE1lbW9yeUJJTyAqb3V0Z29pbmc7CiAgICAgaW50IHNlcnZlcl9zaWRlOwogICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyFPIWl8Tzpfd3JhcF9iaW8iLCBfa2V5d29yZHMsCi0gICAgICAgICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmaW5jb21pbmcsICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmb3V0Z29pbmcsICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmaW5jb21pbmcsICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmb3V0Z29pbmcsICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGUsIGhvc3RuYW1lX29iaik7CiAKIGV4aXQ6CkBAIC02NTcsMjEgKzcwMCwyMyBAQAogImJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRfY2FfY2VydHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX199LAorICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGludCBiaW5hcnlfZm9ybSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJiaW5hcnlfZm9ybSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGJpbmFyeV9mb3JtID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmJpbmFyeV9mb3JtKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmJpbmFyeV9mb3JtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoc2VsZiwgYmluYXJ5X2Zvcm0pOwogCiBleGl0OgpAQCAtNjg3LDExICs3MzIsMTMgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICgodHlwZSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIk1lbW9yeUJJTyIsIGFyZ3MpKQorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiTWVtb3J5QklPIiwgYXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJNZW1vcnlCSU8iLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9faW1wbCh0eXBlKTsKIAogZXhpdDoKQEAgLTcyMiw4ICs3NjksOSBAQAogICAgIGludCBsZW4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6cmVhZCIsCi0gICAgICAgICZsZW4pKQorICAgICAgICAmbGVuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX3JlYWRfaW1wbChzZWxmLCBsZW4pOwogCiBleGl0OgpAQCAtNzUwLDE0ICs3OTgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGIgKi8KLSAgICBpZiAoYi5vYmopCisgICAgaWYgKGIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwNSwxNCArODU1LDE2IEBACiAgICAgZG91YmxlIGVudHJvcHk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqZDpSQU5EX2FkZCIsCi0gICAgICAgICZ2aWV3LCAmZW50cm9weSkpCisgICAgICAgICZ2aWV3LCAmZW50cm9weSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYWRkX2ltcGwobW9kdWxlLCAmdmlldywgZW50cm9weSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgdmlldyAqLwotICAgIGlmICh2aWV3Lm9iaikKKyAgICBpZiAodmlldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODM1LDggKzg4Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9ieXRlcyIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9ieXRlcyIsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9ieXRlc19pbXBsKG1vZHVsZSwgbik7CiAKIGV4aXQ6CkBAIC04NjQsOCArOTE3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKIAogZXhpdDoKQEAgLTkxNiw4ICs5NzAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpSQU5EX2VnZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UkFORF9lZ2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9lZ2RfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtOTU2LDIyICsxMDExLDI0IEBACiAibG9uZyBuYW1lIGFyZSBhbHNvIG1hdGNoZWQuIik7CiAKICNkZWZpbmUgX1NTTF9UWFQyT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJ0eHQyb2JqIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfdHh0Mm9iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfdHh0Mm9ial9fZG9jX199LAorICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilfc3NsX3R4dDJvYmosIE1FVEhfRkFTVENBTEwsIF9zc2xfdHh0Mm9ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF90eHQyb2JqX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqdHh0LCBpbnQgbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX3R4dDJvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX3R4dDJvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHh0IiwgIm5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJzfHA6dHh0Mm9iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqdHh0OwogICAgIGludCBuYW1lID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInN8cDp0eHQyb2JqIiwgX2tleXdvcmRzLAotICAgICAgICAmdHh0LCAmbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0eHQsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfdHh0Mm9ial9pbXBsKG1vZHVsZSwgdHh0LCBuYW1lKTsKIAogZXhpdDoKQEAgLTk5Niw4ICsxMDUzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pZDJvYmoiLCAmbmlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmlkMm9iaiIsICZuaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9uaWQyb2JqX2ltcGwobW9kdWxlLCBuaWQpOwogCiBleGl0OgpAQCAtMTAxOSwyMSArMTA3NywyMyBAQAogImEgc2V0IG9mIE9JRHMgb3IgdGhlIGJvb2xlYW4gVHJ1ZS4iKTsKIAogI2RlZmluZSBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRiAgICBcCi0gICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY2VydGlmaWNhdGVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAorICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NlcnRpZmljYXRlcywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9lbnVtX2NlcnRpZmljYXRlcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiczplbnVtX2NlcnRpZmljYXRlcyIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jZXJ0aWZpY2F0ZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdG9yZV9uYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0b3JlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CiAKIGV4aXQ6CkBAIC0xMDU2LDIxICsxMTE2LDIzIEBACiAiWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4iKTsKIAogI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYgICAgXAotICAgIHsiZW51bV9jcmxzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jcmxzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NybHNfX2RvY19ffSwKKyAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9lbnVtX2NybHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfZW51bV9jcmxzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX2VudW1fY3JscyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfZW51bV9jcmxzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NybHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdG9yZV9uYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0b3JlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NybHNfaW1wbChtb2R1bGUsIHN0b3JlX25hbWUpOwogCiBleGl0OgpAQCAtMTA4Nyw2ICsxMTQ5LDEwIEBACiAgICAgI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYpICovCisKICNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYpICovCkBAIC0xMTAyLDQgKzExNjgsNCBAQAogI2lmbmRlZiBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKICAgICAjZGVmaW5lIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZmIxMDU5NGQ4MzUxZGM1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODU5YjIxZmU2OGE2MTE1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaCBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaAppbmRleCA3N2FmMDgzLi5lZGQ1MzgwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqc2NyaXB0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbCIsICZzY3JpcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbF9pbXBsKHNlbGYsIHNjcmlwdCk7CiAKIGV4aXQ6CkBAIC00NCw4ICs0NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZmlsZU5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbGZpbGUiLCAmZmlsZU5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsZmlsZSIsICZmaWxlTmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9pbXBsKHNlbGYsIGZpbGVOYW1lKTsKIAogZXhpdDoKQEAgLTY5LDggKzcxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzY3JpcHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnJlY29yZCIsICZzY3JpcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfcmVjb3JkX2ltcGwoc2VsZiwgc2NyaXB0KTsKIAogZXhpdDoKQEAgLTk0LDggKzk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICptc2c7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6YWRkZXJyaW5mbyIsICZtc2cpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczphZGRlcnJpbmZvIiwgJm1zZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoc2VsZiwgbXNnKTsKIAogZXhpdDoKQEAgLTE0Myw4ICsxNDcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTE2OCw4ICsxNzMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmxvbmciLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJsb25nIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTE5Myw4ICsxOTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmRvdWJsZSIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmRvdWJsZSIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTIxOCw4ICsyMjUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmJvb2xlYW4iLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJib29sZWFuIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmJvb2xlYW5faW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTI2Miw4ICsyNzAsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpjcmVhdGVjb21tYW5kIiwKLSAgICAgICAgJm5hbWUsICZmdW5jKSkKKyAgICAgICAgJm5hbWUsICZmdW5jKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfaW1wbChzZWxmLCBuYW1lLCBmdW5jKTsKIAogZXhpdDoKQEAgLTI4Nyw4ICsyOTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZGVsZXRlY29tbWFuZCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZGVsZXRlY29tbWFuZCIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmRfaW1wbChzZWxmLCBuYW1lKTsKIAogZXhpdDoKQEAgLTMxOCw4ICszMjgsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaU86Y3JlYXRlZmlsZWhhbmRsZXIiLAotICAgICAgICAmZmlsZSwgJm1hc2ssICZmdW5jKSkKKyAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9pbXBsKHNlbGYsIGZpbGUsIG1hc2ssIGZ1bmMpOwogCiBleGl0OgpAQCAtMzc3LDggKzM4OCw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmNyZWF0ZXRpbWVyaGFuZGxlciIsCi0gICAgICAgICZtaWxsaXNlY29uZHMsICZmdW5jKSkKKyAgICAgICAgJm1pbGxpc2Vjb25kcywgJmZ1bmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyX2ltcGwoc2VsZiwgbWlsbGlzZWNvbmRzLCBmdW5jKTsKIAogZXhpdDoKQEAgLTQwMyw4ICs0MTUsOSBAQAogICAgIGludCB0aHJlc2hvbGQgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsCi0gICAgICAgICZ0aHJlc2hvbGQpKQorICAgICAgICAmdGhyZXNob2xkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoc2VsZiwgdGhyZXNob2xkKTsKIAogZXhpdDoKQEAgLTQyOSw4ICs0NDIsOSBAQAogICAgIGludCBmbGFncyA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmRvb25lZXZlbnQiLAotICAgICAgICAmZmxhZ3MpKQorICAgICAgICAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKHNlbGYsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTU1MSw4ICs1NjUsOSBAQAogICAgIGNvbnN0IGNoYXIgKnVzZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInx6c3NpaWlpejpjcmVhdGUiLAotICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLCAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywgJnN5bmMsICZ1c2UpKQorICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLCAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywgJnN5bmMsICZ1c2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfY3JlYXRlX2ltcGwobW9kdWxlLCBzY3JlZW5OYW1lLCBiYXNlTmFtZSwgY2xhc3NOYW1lLCBpbnRlcmFjdGl2ZSwgd2FudG9iamVjdHMsIHdhbnRUaywgc3luYywgdXNlKTsKIAogZXhpdDoKQEAgLTU3OSw4ICs1OTQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuZXdfdmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlLCBuZXdfdmFsKTsKIAogZXhpdDoKQEAgLTYwNiw4ICs2MjIsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02MjEsNCArNjM4LDQgQEAKICNpZm5kZWYgX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjkwNTdjOGJmMjg4NjMzZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODM2YzU3OGI3MWQ2OTA5NyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKaW5kZXggYjgzYjMzZS4uYzE5MmU3MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaApAQCAtMjEsMTEgKzIxLDEyIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9pbXBsKG1vZHVsZSwgb2JqZWN0KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDkwODZjODU3NmQ0NjkzMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTFhZDU4NzE0NzMyM2UxOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaCBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCmluZGV4IGFjMzhkMzcuLjViZmJhZjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHdhaXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInA6R2V0T3ZlcmxhcHBlZFJlc3VsdCIsICZ3YWl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInA6R2V0T3ZlcmxhcHBlZFJlc3VsdCIsICZ3YWl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X2ltcGwoc2VsZiwgd2FpdCk7CiAKIGV4aXQ6CkBAIC03OSw4ICs4MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEFORExFIGhhbmRsZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ2xvc2VIYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSk7CiAKIGV4aXQ6CkBAIC05MywyMyArOTUsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfQ09OTkVDVE5BTUVEUElQRV9NRVRIT0RERUYgICAgXAotICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19ffSwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CkBAIC0xNDcsMTMgKzE1MSwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJza2siIEZfUE9JTlRFUiAia2siIEZfSEFORExFICI6Q3JlYXRlRmlsZSIsCi0gICAgICAgICZmaWxlX25hbWUsICZkZXNpcmVkX2FjY2VzcywgJnNoYXJlX21vZGUsICZzZWN1cml0eV9hdHRyaWJ1dGVzLCAmY3JlYXRpb25fZGlzcG9zaXRpb24sICZmbGFnc19hbmRfYXR0cmlidXRlcywgJnRlbXBsYXRlX2ZpbGUpKQorICAgICAgICAmZmlsZV9uYW1lLCAmZGVzaXJlZF9hY2Nlc3MsICZzaGFyZV9tb2RlLCAmc2VjdXJpdHlfYXR0cmlidXRlcywgJmNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCAmZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsICZ0ZW1wbGF0ZV9maWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUZpbGVfaW1wbChtb2R1bGUsIGZpbGVfbmFtZSwgZGVzaXJlZF9hY2Nlc3MsIHNoYXJlX21vZGUsIHNlY3VyaXR5X2F0dHJpYnV0ZXMsIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTgwLDggKzE4Nyw5IEBACiAgICAgTFBXU1RSIGRzdF9wYXRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1dTpDcmVhdGVKdW5jdGlvbiIsCi0gICAgICAgICZzcmNfcGF0aCwgJmRzdF9wYXRoKSkKKyAgICAgICAgJnNyY19wYXRoLCAmZHN0X3BhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9pbXBsKG1vZHVsZSwgc3JjX3BhdGgsIGRzdF9wYXRoKTsKIAogZXhpdDoKQEAgLTIyMCwxMyArMjI4LDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNra2tra2siIEZfUE9JTlRFUiAiOkNyZWF0ZU5hbWVkUGlwZSIsCi0gICAgICAgICZuYW1lLCAmb3Blbl9tb2RlLCAmcGlwZV9tb2RlLCAmbWF4X2luc3RhbmNlcywgJm91dF9idWZmZXJfc2l6ZSwgJmluX2J1ZmZlcl9zaXplLCAmZGVmYXVsdF90aW1lb3V0LCAmc2VjdXJpdHlfYXR0cmlidXRlcykpCisgICAgICAgICZuYW1lLCAmb3Blbl9tb2RlLCAmcGlwZV9tb2RlLCAmbWF4X2luc3RhbmNlcywgJm91dF9idWZmZXJfc2l6ZSwgJmluX2J1ZmZlcl9zaXplLCAmZGVmYXVsdF90aW1lb3V0LCAmc2VjdXJpdHlfYXR0cmlidXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChtb2R1bGUsIG5hbWUsIG9wZW5fbW9kZSwgcGlwZV9tb2RlLCBtYXhfaW5zdGFuY2VzLCBvdXRfYnVmZmVyX3NpemUsIGluX2J1ZmZlcl9zaXplLCBkZWZhdWx0X3RpbWVvdXQsIHNlY3VyaXR5X2F0dHJpYnV0ZXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI1OCw4ICsyNjksOSBAQAogICAgIERXT1JEIHNpemU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9rOkNyZWF0ZVBpcGUiLAotICAgICAgICAmcGlwZV9hdHRycywgJnNpemUpKQorICAgICAgICAmcGlwZV9hdHRycywgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwobW9kdWxlLCBwaXBlX2F0dHJzLCBzaXplKTsKIAogZXhpdDoKQEAgLTMwOCw4ICszMjAsOSBAQAogICAgIFB5T2JqZWN0ICpzdGFydHVwX2luZm87CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpaT09pa09aTzpDcmVhdGVQcm9jZXNzIiwKLSAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsICZjb21tYW5kX2xpbmUsICZwcm9jX2F0dHJzLCAmdGhyZWFkX2F0dHJzLCAmaW5oZXJpdF9oYW5kbGVzLCAmY3JlYXRpb25fZmxhZ3MsICZlbnZfbWFwcGluZywgJmN1cnJlbnRfZGlyZWN0b3J5LCAmc3RhcnR1cF9pbmZvKSkKKyAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsICZjb21tYW5kX2xpbmUsICZwcm9jX2F0dHJzLCAmdGhyZWFkX2F0dHJzLCAmaW5oZXJpdF9oYW5kbGVzLCAmY3JlYXRpb25fZmxhZ3MsICZlbnZfbWFwcGluZywgJmN1cnJlbnRfZGlyZWN0b3J5LCAmc3RhcnR1cF9pbmZvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19pbXBsKG1vZHVsZSwgYXBwbGljYXRpb25fbmFtZSwgY29tbWFuZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsIGluaGVyaXRfaGFuZGxlcywgY3JlYXRpb25fZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJyZW50X2RpcmVjdG9yeSwgc3RhcnR1cF9pbmZvKTsKIAogZXhpdDoKQEAgLTM1MSwxMyArMzY0LDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIiIgRl9IQU5ETEUgIiIgRl9IQU5ETEUgImtpfGs6RHVwbGljYXRlSGFuZGxlIiwKLSAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwgJnNvdXJjZV9oYW5kbGUsICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmb3B0aW9ucykpCisgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsICZzb3VyY2VfaGFuZGxlLCAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX2ltcGwobW9kdWxlLCBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBvcHRpb25zKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zODEsOCArMzk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBVSU5UIEV4aXRDb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOkV4aXRQcm9jZXNzIiwgJkV4aXRDb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6RXhpdFByb2Nlc3MiLCAmRXhpdENvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9FeGl0UHJvY2Vzc19pbXBsKG1vZHVsZSwgRXhpdENvZGUpOwogCiBleGl0OgpAQCAtNDA4LDEwICs0MjUsMTIgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzcsMTEgKzQ1NiwxMyBAQAogICAgIEhBTkRMRSBwcm9jZXNzOwogICAgIERXT1JEIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX2ltcGwobW9kdWxlLCBwcm9jZXNzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NjYsOCArNDg3LDkgQEAKICAgICBEV09SRCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TGFzdEVycm9yX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00OTksOCArNTIxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBITU9EVUxFIG1vZHVsZV9oYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsICZtb2R1bGVfaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsICZtb2R1bGVfaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWVfaW1wbChtb2R1bGUsIG1vZHVsZV9oYW5kbGUpOwogCiBleGl0OgpAQCAtNTMxLDEzICs1NTQsMTYgQEAKICAgICBEV09SRCBzdGRfaGFuZGxlOwogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJrOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIms6R2V0U3RkSGFuZGxlIiwgJnN0ZF9oYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0U3RkSGFuZGxlX2ltcGwobW9kdWxlLCBzdGRfaGFuZGxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NjMsOCArNTg5LDkgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTkzLDEzICs2MjAsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAia2lrOk9wZW5Qcm9jZXNzIiwKLSAgICAgICAgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZwcm9jZXNzX2lkKSkKKyAgICAgICAgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZwcm9jZXNzX2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX09wZW5Qcm9jZXNzX2ltcGwobW9kdWxlLCBkZXNpcmVkX2FjY2VzcywgaW5oZXJpdF9oYW5kbGUsIHByb2Nlc3NfaWQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTYyNSw4ICs2NTUsOSBAQAogICAgIGludCBzaXplID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIsCi0gICAgICAgICZoYW5kbGUsICZzaXplKSkKKyAgICAgICAgJmhhbmRsZSwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9QZWVrTmFtZWRQaXBlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHNpemUpOwogCiBleGl0OgpAQCAtNjM5LDI0ICs2NzAsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfUkVBREZJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7IlJlYWRGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfUmVhZEZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1JlYWRGaWxlX19kb2NfX30sCisgICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1JlYWRGaWxlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX1JlYWRGaWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfd2luYXBpX1JlYWRGaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfUmVhZEZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBpbnQgc2l6ZTsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAiaXxpOlJlYWRGaWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1JlYWRGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHNpemUsIHVzZV9vdmVybGFwcGVkKTsKIAogZXhpdDoKQEAgLTY4OCw4ICs3MjEsOSBAQAogICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiT09POlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwKLSAgICAgICAgJm5hbWVkX3BpcGUsICZtb2RlLCAmbWF4X2NvbGxlY3Rpb25fY291bnQsICZjb2xsZWN0X2RhdGFfdGltZW91dCkpCisgICAgICAgICZuYW1lZF9waXBlLCAmbW9kZSwgJm1heF9jb2xsZWN0aW9uX2NvdW50LCAmY29sbGVjdF9kYXRhX3RpbWVvdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9pbXBsKG1vZHVsZSwgbmFtZWRfcGlwZSwgbW9kZSwgbWF4X2NvbGxlY3Rpb25fY291bnQsIGNvbGxlY3RfZGF0YV90aW1lb3V0KTsKIAogZXhpdDoKQEAgLTcxNyw4ICs3NTEsOSBAQAogICAgIFVJTlQgZXhpdF9jb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJJOlRlcm1pbmF0ZVByb2Nlc3MiLAotICAgICAgICAmaGFuZGxlLCAmZXhpdF9jb2RlKSkKKyAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGhhbmRsZSwgZXhpdF9jb2RlKTsKIAogZXhpdDoKQEAgLTc0NCw4ICs3NzksOSBAQAogICAgIERXT1JEIHRpbWVvdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrOldhaXROYW1lZFBpcGUiLAotICAgICAgICAmbmFtZSwgJnRpbWVvdXQpKQorICAgICAgICAmbmFtZSwgJnRpbWVvdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0TmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCB0aW1lb3V0KTsKIAogZXhpdDoKQEAgLTc3NCw4ICs4MTAsOSBAQAogICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaXxrOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAotICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgICZoYW5kbGVfc2VxLCAmd2FpdF9mbGFnLCAmbWlsbGlzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKG1vZHVsZSwgaGFuZGxlX3NlcSwgd2FpdF9mbGFnLCBtaWxsaXNlY29uZHMpOwogCiBleGl0OgpAQCAtODA4LDExICs4NDUsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIms6V2FpdEZvclNpbmdsZU9iamVjdCIsCi0gICAgICAgICZoYW5kbGUsICZtaWxsaXNlY29uZHMpKQorICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtODI1LDI3ICs4NjQsMjkgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAorICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV3JpdGVGaWxlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfd2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJPfGk6V3JpdGVGaWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmaGFuZGxlLCAmYnVmZmVyLCAmdXNlX292ZXJsYXBwZWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaGFuZGxlLCAmYnVmZmVyLCAmdXNlX292ZXJsYXBwZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgYnVmZmVyLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGM0YjJhOWZjYjBiZWExIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NmQ2MzgyYTY2NjJjNGE5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaAppbmRleCAwYzcwNjFhLi4zYjlmY2RhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCkBAIC03Nyw4ICs3Nyw5IEBACiAgICAgUHlfc3NpemVfdCBpID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCi0gICAgICAgICZpKSkKKyAgICAgICAgJmkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfcG9wX2ltcGwoc2VsZiwgaSk7CiAKIGV4aXQ6CkBAIC0xMTQsOCArMTE1LDkgQEAKICAgICBQeU9iamVjdCAqdjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwKLSAgICAgICAgJmksICZ2KSkKKyAgICAgICAgJmksICZ2KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X2luc2VydF9pbXBsKHNlbGYsIGksIHYpOwogCiBleGl0OgpAQCAtMjExLDggKzIxMyw5IEBACiAgICAgUHlfc3NpemVfdCBuOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbjpmcm9tZmlsZSIsCi0gICAgICAgICZmLCAmbikpCisgICAgICAgICZmLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tZmlsZV9pbXBsKHNlbGYsIGYsIG4pOwogCiBleGl0OgpAQCAtMjc1LDE0ICsyNzgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzKjpmcm9tc3RyaW5nIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzKjpmcm9tc3RyaW5nIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMDUsMTQgKzMxMCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6ZnJvbWJ5dGVzIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM3OSw4ICszODYsOSBAQAogICAgIFB5X1VOSUNPREUgKnVzdHI7CiAgICAgUHlfc3NpemVfY2xlYW5fdCB1c3RyX2xlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidSM6ZnJvbXVuaWNvZGUiLCAmdXN0ciwgJnVzdHJfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZ1c3RyX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tdW5pY29kZV9pbXBsKHNlbGYsIHVzdHIsIHVzdHJfbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjEsOSBAQAogICAgIFB5T2JqZWN0ICppdGVtczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT0NpTzpfYXJyYXlfcmVjb25zdHJ1Y3RvciIsCi0gICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZSwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkKKyAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMpOwogCiBleGl0OgpAQCAtNDk2LDQgKzUwNSw0IEBACiAKICNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKICAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXywgTUVUSF9PLCBhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMwNWRmM2Y1Nzk2MDM5ZTQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMDU0ZmI3NjRjOGNjNjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAppbmRleCA2MmUzMTNiNS4uYmU0YjcxOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKQEAgLTI0LDE0ICsyNCwxNiBAQAogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaW46Z2V0c2FtcGxlIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZpbmRleCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9nZXRzYW1wbGVfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGluZGV4KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTYsMTQgKzU4LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX21heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg4LDE0ICs5MiwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1pbm1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9taW5tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMjAsMTQgKzEyNiwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2ZyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTIsMTQgKzE2MCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJtcyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ybXNfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xODUsMTcgKzE5NSwyMCBAQAogICAgIFB5X2J1ZmZlciByZWZlcmVuY2UgPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZpdCIsCi0gICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCisgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmaXRfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIHJlZmVyZW5jZSAqLwotICAgIGlmIChyZWZlcmVuY2Uub2JqKQorICAgIGlmIChyZWZlcmVuY2Uub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcmVmZXJlbmNlKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjIxLDE3ICsyMzQsMjAgQEAKICAgICBQeV9idWZmZXIgcmVmZXJlbmNlID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmYWN0b3IiLAotICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQorICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciByZWZlcmVuY2UgKi8KLSAgICBpZiAocmVmZXJlbmNlLm9iaikKKyAgICBpZiAocmVmZXJlbmNlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnJlZmVyZW5jZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI1NywxNCArMjczLDE2IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqbjpmaW5kbWF4IiwKLSAgICAgICAgJmZyYWdtZW50LCAmbGVuZ3RoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZG1heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCBsZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODksMTQgKzMwNywxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2Z3BwIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2F2Z3BwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzIxLDE0ICszNDEsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptYXhwcCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1MywxNCArMzc1LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Y3Jvc3MiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfY3Jvc3NfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zODcsMTQgKzQxMSwxNiBAQAogICAgIGRvdWJsZSBmYWN0b3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWQ6bXVsIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmZhY3RvcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX211bF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDIyLDE0ICs0NDgsMTYgQEAKICAgICBkb3VibGUgcmZhY3RvcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9tb25vIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF90b21vbm9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00NTcsMTQgKzQ4NSwxNiBAQAogICAgIGRvdWJsZSByZmFjdG9yOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkZDp0b3N0ZXJlbyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdG9zdGVyZW9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00OTEsMTcgKzUyMSwyMCBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5Kmk6YWRkIiwKLSAgICAgICAgJmZyYWdtZW50MSwgJmZyYWdtZW50MiwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50MSwgJmZyYWdtZW50MiwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWRkX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQxLCAmZnJhZ21lbnQyLCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQxICovCi0gICAgaWYgKGZyYWdtZW50MS5vYmopCisgICAgaWYgKGZyYWdtZW50MS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudDEpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudDIgKi8KLSAgICBpZiAoZnJhZ21lbnQyLm9iaikKKyAgICBpZiAoZnJhZ21lbnQyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50Mik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUyNywxNCArNTYwLDE2IEBACiAgICAgaW50IGJpYXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWk6YmlhcyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmYmlhcykpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmYmlhcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2JpYXNfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGJpYXMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01NTksMTQgKzU5NCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJldmVyc2UiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmV2ZXJzZV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU5MSwxNCArNjI4LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Ynl0ZXN3YXAiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYnl0ZXN3YXBfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02MjUsMTQgKzY2NCwxNiBAQAogICAgIGludCBuZXd3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaTpsaW4ybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuZXd3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmV3d2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4ybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuZXd3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY2NiwxNCArNzA3LDE2IEBACiAgICAgaW50IHdlaWdodEIgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpaWlPfGlpOnJhdGVjdiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmNoYW5uZWxzLCAmaW5yYXRlLCAmb3V0cmF0ZSwgJnN0YXRlLCAmd2VpZ2h0QSwgJndlaWdodEIpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5jaGFubmVscywgJmlucmF0ZSwgJm91dHJhdGUsICZzdGF0ZSwgJndlaWdodEEsICZ3ZWlnaHRCKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmF0ZWN2X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuY2hhbm5lbHMsIGlucmF0ZSwgb3V0cmF0ZSwgc3RhdGUsIHdlaWdodEEsIHdlaWdodEIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02OTgsMTQgKzc0MSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmxpbjJ1bGF3IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJ1bGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzMwLDE0ICs3NzUsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTp1bGF3MmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF91bGF3Mmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTc2MiwxNCArODA5LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMmFsYXciLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmFsYXdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03OTQsMTQgKzg0MywxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmFsYXcybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODI4LDE0ICs4NzksMTYgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86bGluMmFkcGNtIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4yYWRwY21faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODYyLDE1ICs5MTUsMTcgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86YWRwY20ybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hZHBjbTJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4NWZiMDlmYTIxYTYyYzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwYWI3NGMzZmE1N2MzOWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCmluZGV4IGUyMGNhYzIuLmFjYWZjYmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKQEAgLTIwLDggKzIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX3V1X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CkBAIC01MCwxNCArNTEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX3V1IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX3V1IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3V1X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODAsOCArODMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfYmFzZTY0IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKQEAgLTkzLDMxICs5NywzNyBAQAogfQogCiBQeURvY19TVFJWQVIoYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX18sCi0iYjJhX2Jhc2U2NCgkbW9kdWxlLCBkYXRhLCAvKVxuIgorImIyYV9iYXNlNjQoJG1vZHVsZSwgLywgZGF0YSwgKiwgbmV3bGluZT1UcnVlKVxuIgogIi0tXG4iCiAiXG4iCiAiQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9CQVNFNjRfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2Jhc2U2NCwgTUVUSF9PLCBiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfX30sCisgICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfRkFTVENBTEwsIGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOworYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IG5ld2xpbmUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQorYmluYXNjaWlfYjJhX2Jhc2U2NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibmV3bGluZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfCRpOmIyYV9iYXNlNjQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGludCBuZXdsaW5lID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2Jhc2U2NCIsICZkYXRhKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZuZXdsaW5lKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSwgbmV3bGluZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTQwLDggKzE1MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9ocXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgpAQCAtMTcwLDE0ICsxODEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlY29kZV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVjb2RlX2hxeCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX3JsZWNvZGVfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjAwLDE0ICsyMTMsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hxeCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjMwLDE0ICsyNDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlZGVjb2RlX2hxeCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWRlY29kZV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjYzLDE3ICsyODAsMjAgQEAKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpJOmNyY19ocXgiLAotICAgICAgICAmZGF0YSwgJmNyYykpCisgICAgICAgICZkYXRhLCAmY3JjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9jcmNfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSwgY3JjKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI5OSwxNyArMzE5LDIwIEBACiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAotICAgICAgICAmZGF0YSwgJmNyYykpCisgICAgICAgICZkYXRhLCAmY3JjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMzUsMTQgKzM1OCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaGV4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9oZXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNjcsMTQgKzM5MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpoZXhsaWZ5IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2hleGxpZnlfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDAsOCArNDI3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgaGV4c3RyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfaGV4X2ltcGwobW9kdWxlLCAmaGV4c3RyKTsKIAogZXhpdDoKQEAgLTQzMiw4ICs0NjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuaGV4bGlmeSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5oZXhsaWZ5IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV91bmhleGxpZnlfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCiBleGl0OgpAQCAtNDUxLDIyICs0ODAsMjQgQEAKICJEZWNvZGUgYSBzdHJpbmcgb2YgcXAtZW5jb2RlZCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9RUF9NRVRIT0RERUYgICAgXAotICAgIHsiYTJiX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9xcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJpbmFzY2lpX2EyYl9xcF9fZG9jX199LAorICAgIHsiYTJiX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9xcCwgTUVUSF9GQVNUQ0FMTCwgYmluYXNjaWlfYTJiX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9hMmJfcXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBoZWFkZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYTJiX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYmluYXNjaWlfYTJiX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhLCAmaGVhZGVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEsICZoZWFkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgaGVhZGVyKTsKIAogZXhpdDoKQEAgLTQ4OCwzMiArNTE5LDM1IEBACiAiYXJlIGJvdGggZW5jb2RlZC4gIFdoZW4gcXVvdGV0YWJzIGlzIHNldCwgc3BhY2UgYW5kIHRhYnMgYXJlIGVuY29kZWQuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQjJBX1FQX01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCisgICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX0ZBU1RDQUxMLCBiaW5hc2NpaV9iMmFfcXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV9xcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywKICAgICAgICAgICAgICAgICAgICAgIGludCBpc3RleHQsIGludCBoZWFkZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYmluYXNjaWlfYjJhX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgInF1b3RldGFicyIsICJpc3RleHQiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJxdW90ZXRhYnMiLCAiaXN0ZXh0IiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBxdW90ZXRhYnMgPSAwOwogICAgIGludCBpc3RleHQgPSAxOwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJnF1b3RldGFicywgJmlzdGV4dCwgJmhlYWRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBxdW90ZXRhYnMsIGlzdGV4dCwgaGVhZGVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTExNzNmYzk3MThhNWVkYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWY4ZDZlNDhmNzVmNmQxZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKaW5kZXggYTI1NTM1My4uMDU0MzFmYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaApAQCAtMjEsOCArMjEsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvcyIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvcyIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zX2ltcGwobW9kdWxlLCB6KTsKQEAgLTYyLDggKzYzLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3NoIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0xMDMsOCArMTA1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbl9pbXBsKG1vZHVsZSwgeik7CkBAIC0xNDQsOCArMTQ3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0xODUsOCArMTg5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbl9pbXBsKG1vZHVsZSwgeik7CkBAIC0yMjYsOCArMjMxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0yNjcsOCArMjczLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvcyIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6Y29zIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Nvc19pbXBsKG1vZHVsZSwgeik7CkBAIC0zMDgsOCArMzE1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0zNDksOCArMzU3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmV4cCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6ZXhwIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2V4cF9pbXBsKG1vZHVsZSwgeik7CkBAIC0zOTAsOCArMzk5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmxvZzEwIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpsb2cxMCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9sb2cxMF9pbXBsKG1vZHVsZSwgeik7CkBAIC00MzEsOCArNDQxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Npbl9pbXBsKG1vZHVsZSwgeik7CkBAIC00NzIsOCArNDgzLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgeik7CkBAIC01MTMsOCArNTI1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNxcnQiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNxcnQiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgeik7CkBAIC01NTQsOCArNTY3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Rhbl9pbXBsKG1vZHVsZSwgeik7CkBAIC01OTUsOCArNjA5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfdGFuaF9pbXBsKG1vZHVsZSwgeik7CkBAIC02MzksOCArNjU0LDkgQEAKICAgICBQeU9iamVjdCAqeV9vYmogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEfE86bG9nIiwKLSAgICAgICAgJngsICZ5X29iaikpCisgICAgICAgICZ4LCAmeV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nX2ltcGwobW9kdWxlLCB4LCB5X29iaik7CiAKIGV4aXQ6CkBAIC02NjUsOCArNjgxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cGhhc2UiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBoYXNlIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfcGhhc2VfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNjkzLDggKzcxMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBvbGFyIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BvbGFyX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTcyMSw4ICs3MzksOSBAQAogICAgIGRvdWJsZSBwaGk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLAotICAgICAgICAmciwgJnBoaSkpCisgICAgICAgICZyLCAmcGhpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3JlY3RfaW1wbChtb2R1bGUsIHIsIHBoaSk7CiAKIGV4aXQ6CkBAIC03NDcsOCArNzY2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNmaW5pdGUiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzZmluaXRlIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNmaW5pdGVfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNzczLDggKzc5Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzbmFuIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzbmFuX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTc5OSw4ICs4MjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2luZiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNpbmYiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc2luZl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC04MjksMzIgKzg1MSwzNSBAQAogIm5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOwogCiAjZGVmaW5lIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGICAgIFwKLSAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9GQVNUQ0FMTCwgY21hdGhfaXNjbG9zZV9fZG9jX199LAogCiBzdGF0aWMgaW50CiBjbWF0aF9pc2Nsb3NlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIsCiAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlbF90b2wsIGRvdWJsZSBhYnNfdG9sKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitjbWF0aF9pc2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJhIiwgImIiLCAicmVsX3RvbCIsICJhYnNfdG9sIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IkREfCRkZDppc2Nsb3NlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9jb21wbGV4IGE7CiAgICAgUHlfY29tcGxleCBiOwogICAgIGRvdWJsZSByZWxfdG9sID0gMWUtMDk7CiAgICAgZG91YmxlIGFic190b2wgPSAwLjA7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJERHwkZGQ6aXNjbG9zZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNjbG9zZV9pbXBsKG1vZHVsZSwgYSwgYiwgcmVsX3RvbCwgYWJzX3RvbCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczMjE5NDAyOWI3ZmIxZTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3OGY1OTcwMmI0MTY1NWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCmluZGV4IDY3NjYwZWIuLjg0YTAwNGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfE86ZmNudGwiLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmNudGxfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBhcmcpOwogCiBleGl0OgpAQCAtOTEsOCArOTIsOSBAQAogICAgIGludCBtdXRhdGVfYXJnID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJfE9wOmlvY3RsIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmb2JfYXJnLCAmbXV0YXRlX2FyZykpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJm9iX2FyZywgJm11dGF0ZV9hcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfaW9jdGxfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBvYl9hcmcsIG11dGF0ZV9hcmcpOwogCiBleGl0OgpAQCAtMTIyLDggKzEyNCw5IEBACiAgICAgaW50IGNvZGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpmbG9jayIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBmY250bF9mbG9ja19pbXBsKG1vZHVsZSwgZmQsIGNvZGUpOwogCiBleGl0OgpAQCAtMTc1LDExICsxNzgsMTIgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfE9PaTpsb2NrZiIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmxlbm9iaiwgJnN0YXJ0b2JqLCAmd2hlbmNlKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBsZW5vYmosIHN0YXJ0b2JqLCB3aGVuY2UpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTdiMTMwNmI4NjRjMDFjOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZjZmY3NmE4ZmIyYzlhNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaAppbmRleCAyYzQ3YTQyLi4wMjgyYjRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmgKQEAgLTExLDIxICsxMSwyMyBAQAogIklmIGlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CiAKICNkZWZpbmUgR1JQX0dFVEdSR0lEX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JnaWRfX2RvY19ffSwKKyAgICB7ImdldGdyZ2lkIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncmdpZCwgTUVUSF9GQVNUQ0FMTCwgZ3JwX2dldGdyZ2lkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBncnBfZ2V0Z3JnaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpnZXRncmdpZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpnZXRncmdpZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGdycF9nZXRncmdpZF9pbXBsKG1vZHVsZSwgaWQpOwogCiBleGl0OgpAQCAtNDEsMjEgKzQzLDIzIEBACiAiSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOwogCiAjZGVmaW5lIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdybmFtX19kb2NfX30sCisgICAgeyJnZXRncm5hbSIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JuYW0sIE1FVEhfRkFTVENBTEwsIGdycF9nZXRncm5hbV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogZ3JwX2dldGdybmFtX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdybmFtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZ3JwX2dldGdybmFtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IlU6Z2V0Z3JuYW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVTpnZXRncm5hbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JuYW1faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtODIsNCArODYsNCBAQAogewogICAgIHJldHVybiBncnBfZ2V0Z3JhbGxfaW1wbChtb2R1bGUpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZTA5ZmVlZmM1NGEyY2IgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NDE3YWUwYTcyOThlMGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmgKaW5kZXggMGJkOTU4YS4uYTg0MWZlNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCkBAIC03MiwyNCArNzIsMjYgQEAKICJSZXR1cm4gYSBuZXcgTUQ1IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX01ENV9NRDVfTUVUSE9EREVGICAgIFwKLSAgICB7Im1kNSIsIChQeUNGdW5jdGlvbilfbWQ1X21kNSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tZDVfbWQ1X19kb2NfX30sCisgICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pX21kNV9tZDUsIE1FVEhfRkFTVENBTEwsIF9tZDVfbWQ1X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbWQ1X21kNV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX21kNV9tZDUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbWQ1X21kNShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86bWQ1IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOm1kNSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX21kNV9tZDVfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00Y2QzY2M5NmUzNTU2M2QyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NGNkNTBkYjA1MGYyNTg5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaAppbmRleCBiMzUyMWQ4Li5mNjNhM2JlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCkBAIC0yNywyMyArMjcsMjUgQEAKICIgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX1NUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXRfX2RvY19ffSwKKyAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3RhdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mcDpzdGF0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0IiwgInBhdGgiLCAwLCAxKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdF9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTYzLDIyICs2NSwyNCBAQAogIkVxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xTVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJsc3RhdCIsIChQeUNGdW5jdGlvbilvc19sc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xzdGF0X19kb2NfX30sCisgICAgeyJsc3RhdCIsIChQeUNGdW5jdGlvbilvc19sc3RhdCwgTUVUSF9GQVNUQ0FMTCwgb3NfbHN0YXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xzdGF0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbHN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxzdGF0IiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbHN0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTIxLDE3ICsxMjUsMTggQEAKICIgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC4iKTsKIAogI2RlZmluZSBPU19BQ0NFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImFjY2VzcyIsIChQeUNGdW5jdGlvbilvc19hY2Nlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19hY2Nlc3NfX2RvY19ffSwKKyAgICB7ImFjY2VzcyIsIChQeUNGdW5jdGlvbilvc19hY2Nlc3MsIE1FVEhfRkFTVENBTEwsIG9zX2FjY2Vzc19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19hY2Nlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAogICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfYWNjZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImVmZmVjdGl2ZV9pZHMiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGU7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwpAQCAtMTM5LDEyICsxNDQsMTQgQEAKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfYWNjZXNzX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBmb2xsb3dfc3ltbGlua3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNzgsMTEgKzE4NSwxMyBAQAogICAgIGludCBmZDsKICAgICBjaGFyICpfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnR0eW5hbWUiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0dHluYW1lIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc190dHluYW1lX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIyNCwyMSArMjMzLDIzIEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfQ0hESVJfTUVUSE9EREVGICAgIFwKLSAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hkaXJfX2RvY19ffSwKKyAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19jaGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpjaGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hkaXIiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hESVIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtMjYwLDIxICsyNzEsMjMgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKIAogI2RlZmluZSBPU19GQ0hESVJfTUVUSE9EREVGICAgIFwKLSAgICB7ImZjaGRpciIsIChQeUNGdW5jdGlvbilvc19mY2hkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2hkaXJfX2RvY19ffSwKKyAgICB7ImZjaGRpciIsIChQeUNGdW5jdGlvbilvc19mY2hkaXIsIE1FVEhfRkFTVENBTEwsIG9zX2ZjaGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmNoZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZjaGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmNoZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNoZGlyX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMTAsMjUgKzMyMywyNyBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hNT0RfTUVUSE9EREVGICAgIFwKLSAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2htb2RfX2RvY19ffSwKKyAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19jaG1vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAogICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2NobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8JE8mcDpjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2htb2QiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hNT0QpOwogICAgIGludCBtb2RlOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaG1vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTM0OSwyMiArMzY0LDI0IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CiAKICNkZWZpbmUgT1NfRkNITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfZmNobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNobW9kX19kb2NfX30sCisgICAgeyJmY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfZmNobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaG1vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOmZjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogICAgIGludCBtb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWk6ZmNobW9kIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsICZtb2RlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mY2htb2RfaW1wbChtb2R1bGUsIGZkLCBtb2RlKTsKIAogZXhpdDoKQEAgLTM4NSwyMiArNDAyLDI0IEBACiAiRXF1aXZhbGVudCB0byBjaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLlwiIik7CiAKICNkZWZpbmUgT1NfTENITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJsY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfbGNobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGNobW9kX19kb2NfX30sCisgICAgeyJsY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfbGNobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19sY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xjaG1vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJmk6bGNobW9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2htb2QiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNobW9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSk7CiAKIGV4aXQ6CkBAIC00MjcsMjQgKzQ0NiwyNiBAQAogInVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRiAgICBcCi0gICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGZsYWdzX19kb2NfX30sCisgICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfRkFTVENBTEwsIG9zX2NoZmxhZ3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NoZmxhZ3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8ma3xwOmNoZmxhZ3MiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8cDpjaGZsYWdzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTQ2OCwyMiArNDg5LDI0IEBACiAiRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xDSEZMQUdTX01FVEhPRERFRiAgICBcCi0gICAgeyJsY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19sY2hmbGFncywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaGZsYWdzX19kb2NfX30sCisgICAgeyJsY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19sY2hmbGFncywgTUVUSF9GQVNUQ0FMTCwgb3NfbGNoZmxhZ3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xjaGZsYWdzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGNoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZrOmxjaGZsYWdzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mazpsY2hmbGFncyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hmbGFnc19pbXBsKG1vZHVsZSwgJnBhdGgsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTUwNCwyMSArNTI3LDIzIEBACiAiQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CiAKICNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRiAgICBcCi0gICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hyb290X19kb2NfX30sCisgICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX0ZBU1RDQUxMLCBvc19jaHJvb3RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nocm9vdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaHJvb3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaHJvb3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6Y2hyb290IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaHJvb3QiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hyb290IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hyb290X2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC01MzksMjEgKzU2NCwyMyBAQAogIkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2suIik7CiAKICNkZWZpbmUgT1NfRlNZTkNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzeW5jLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZnN5bmNfX2RvY19ffSwKKyAgICB7ImZzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzeW5jLCBNRVRIX0ZBU1RDQUxMLCBvc19mc3luY19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZnN5bmNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZnN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZzeW5jIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpmc3luYyIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzeW5jX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC01OTMsMjEgKzYyMCwyMyBAQAogIkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2sgd2l0aG91dCBmb3JjaW5nIHVwZGF0ZSBvZiBtZXRhZGF0YS4iKTsKIAogI2RlZmluZSBPU19GREFUQVNZTkNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZkYXRhc3luYyIsIChQeUNGdW5jdGlvbilvc19mZGF0YXN5bmMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mZGF0YXN5bmNfX2RvY19ffSwKKyAgICB7ImZkYXRhc3luYyIsIChQeUNGdW5jdGlvbilvc19mZGF0YXN5bmMsIE1FVEhfRkFTVENBTEwsIG9zX2ZkYXRhc3luY19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmRhdGFzeW5jX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZkYXRhc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZkYXRhc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZkYXRhc3luYyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmRhdGFzeW5jIiwgX2tleXdvcmRzLAotICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmRhdGFzeW5jX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC02NDksMjYgKzY3OCwyOCBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGICAgIFwKLSAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hvd25fX2RvY19ffSwKKyAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX0ZBU1RDQUxMLCBvc19jaG93bl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2Nob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mTyZ8JE8mcDpjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hvd24iLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hPV04pOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQsIEZDSE9XTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNjkxLDIzICs3MjIsMjUgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CiAKICNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNob3duX19kb2NfX30sCisgICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2hvd25fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaG93bl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlPJk8mOmZjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpTyZPJjpmY2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNob3duX2ltcGwobW9kdWxlLCBmZCwgdWlkLCBnaWQpOwogCiBleGl0OgpAQCAtNzI4LDIzICs3NjEsMjUgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYgICAgXAotICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG93bl9fZG9jX199LAorICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfbGNob3duX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJk8mOmxjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNob3duIiwgInBhdGgiLCAwLCAwKTsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mOmxjaG93biIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCk7CiAKIGV4aXQ6CkBAIC04MTIsMjYgKzg0NywyOCBAQAogIiAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJsaW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saW5rX19kb2NfX30sCisgICAgeyJsaW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpbmssIE1FVEhfRkFTVENBTEwsIG9zX2xpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAogICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mcDpsaW5rIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgImRzdCIsIDAsIDApOwogICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyZwOmxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlua19pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTg2MywyMSArOTAwLDIzIEBACiAiZW50cmllcyBcJy5cJyBhbmQgXCcuLlwnIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOwogCiAjZGVmaW5lIE9TX0xJU1RESVJfTUVUSE9EREVGICAgIFwKLSAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3RkaXJfX2RvY19ffSwKKyAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9GQVNUQ0FMTCwgb3NfbGlzdGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGlzdGRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saXN0ZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlzdGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyY6bGlzdGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdGRpciIsICJwYXRoIiwgMSwgUEFUSF9IQVZFX0ZET1BFTkRJUik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6bGlzdGRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3RkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTkwNiw4ICs5NDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9nZXRmdWxscGF0aG5hbWUiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9nZXRmdWxscGF0aG5hbWUiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZ1bGxwYXRobmFtZV9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtOTM5LDggKzk3OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtOTY5LDggKzEwMTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9pc2RpciIsICJwYXRoIiwgMCwgMCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9pc2RpciIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfaXNkaXIiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2lzZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC05OTEsMjEgKzEwMzMsMjMgQEAKICJBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4iKTsKIAogI2RlZmluZSBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGICAgIFwKLSAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKKyAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfRkFTVENBTEwsIG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2dldHZvbHVtZXBhdGhuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2dldHZvbHVtZXBhdGhuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfX2dldHZvbHVtZXBhdGhuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKG1vZHVsZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC0xMDI4LDIzICsxMDcyLDI1IEBACiAiVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOwogCiAjZGVmaW5lIE9TX01LRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZGlyX19kb2NfX30sCisgICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9GQVNUQ0FMTCwgb3NfbWtkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX21rZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta2RpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGkkTyY6bWtkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZGlyIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZSA9IDUxMTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtkaXJfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTA3NCw4ICsxMTIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaW5jcmVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmljZSIsICZpbmNyZW1lbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbmljZV9pbXBsKG1vZHVsZSwgaW5jcmVtZW50KTsKIAogZXhpdDoKQEAgLTEwOTMsMjIgKzExNDAsMjQgQEAKICJSZXR1cm4gcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOwogCiAjZGVmaW5lIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19nZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHByaW9yaXR5X19kb2NfX30sCisgICAgeyJnZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19nZXRwcmlvcml0eSwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0cHJpb3JpdHlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldHByaW9yaXR5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgd2hpY2g7CiAgICAgaW50IHdobzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLAotICAgICAgICAmd2hpY2gsICZ3aG8pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2hpY2gsICZ3aG8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8pOwogCiBleGl0OgpAQCAtMTEyNiwyMyArMTE3NSwyNSBAQAogIlNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CiAKICNkZWZpbmUgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGICAgIFwKLSAgICB7InNldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2V0cHJpb3JpdHlfX2RvY19ffSwKKyAgICB7InNldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHByaW9yaXR5LCBNRVRIX0ZBU1RDQUxMLCBvc19zZXRwcmlvcml0eV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2V0cHJpb3JpdHlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8sIGludCBwcmlvcml0eSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCAicHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCAicHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaWk6c2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCB3aGljaDsKICAgICBpbnQgd2hvOwogICAgIGludCBwcmlvcml0eTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpaTpzZXRwcmlvcml0eSIsIF9rZXl3b3JkcywKLSAgICAgICAgJndoaWNoLCAmd2hvLCAmcHJpb3JpdHkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2hpY2gsICZ3aG8sICZwcmlvcml0eSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobywgcHJpb3JpdHkpOwogCiBleGl0OgpAQCAtMTE2NCwyNSArMTIxNSwyNyBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfUkVOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJyZW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfcmVuYW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVuYW1lX19kb2NfX30sCisgICAgeyJyZW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfcmVuYW1lLCBNRVRIX0ZBU1RDQUxMLCBvc19yZW5hbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlbmFtZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCiAgICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZW5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mOnJlbmFtZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVuYW1lX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyMDcsMjUgKzEyNjAsMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlwiIik7CiAKICNkZWZpbmUgT1NfUkVQTEFDRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilvc19yZXBsYWNlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVwbGFjZV9fZG9jX199LAorICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilvc19yZXBsYWNlLCBNRVRIX0ZBU1RDQUxMLCBvc19yZXBsYWNlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZXBsYWNlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKICAgICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZXBsYWNlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVwbGFjZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JE8mTyY6cmVwbGFjZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZXBsYWNlIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mOnJlcGxhY2UiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVwbGFjZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjQ5LDIyICsxMzA0LDI0IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfUk1ESVJfTUVUSE9EREVGICAgIFwKLSAgICB7InJtZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JtZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfcm1kaXJfX2RvY19ffSwKKyAgICB7InJtZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JtZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19ybWRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfcm1kaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfcm1kaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ybWRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicm1kaXIiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JtZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyODMsMjUgKzEzNDAsMjggQEAKICJFeGVjdXRlIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwuIik7CiAKICNkZWZpbmUgT1NfU1lTVEVNX01FVEhPRERFRiAgICBcCi0gICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3lzdGVtX19kb2NfX30sCisgICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX0ZBU1RDQUxMLCBvc19zeXN0ZW1fX2RvY19ffSwKIAogc3RhdGljIGxvbmcKIG9zX3N5c3RlbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKmNvbW1hbmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InU6c3lzdGVtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9VTklDT0RFICpjb21tYW5kOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInU6c3lzdGVtIiwgX2tleXdvcmRzLAotICAgICAgICAmY29tbWFuZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZjb21tYW5kKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXN0ZW1faW1wbChtb2R1bGUsIGNvbW1hbmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzE5LDI1ICsxMzc5LDI4IEBACiAiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOwogCiAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAotICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3lzdGVtX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19zeXN0ZW1faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqY29tbWFuZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6c3lzdGVtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqY29tbWFuZCA9IE5VTEw7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3lzdGVtIiwgX2tleXdvcmRzLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY29tbWFuZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzdGVtX2ltcGwobW9kdWxlLCBjb21tYW5kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTM2Nyw4ICsxNDMwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbWFzazsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp1bWFzayIsICZtYXNrKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dW1hc2siLCAmbWFzaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bWFza19pbXBsKG1vZHVsZSwgbWFzayk7CiAKIGV4aXQ6CkBAIC0xMzg3LDIyICsxNDUxLDI0IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfVU5MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJ1bmxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfdW5saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdW5saW5rX19kb2NfX30sCisgICAgeyJ1bmxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfdW5saW5rLCBNRVRIX0ZBU1RDQUxMLCBvc191bmxpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3VubGlua19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc191bmxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191bmxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1bmxpbmsiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bmxpbmtfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTQyNCwyMiArMTQ5MCwyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JFTU9WRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZV9fZG9jX199LAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVtb3ZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW1vdmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVtb3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVtb3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOnJlbW92ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZlIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cmVtb3ZlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVtb3ZlX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTE1MDQsMjYgKzE1NzIsMjggQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1VUSU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3V0aW1lX19kb2NfX30sCisgICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9GQVNUQ0FMTCwgb3NfdXRpbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3V0aW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqdGltZXMsIFB5T2JqZWN0ICpucywKICAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc191dGltZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3V0aW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInV0aW1lIiwgInBhdGgiLCAwLCBQQVRIX1VUSU1FX0hBVkVfRkQpOwogICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191dGltZV9pbXBsKG1vZHVsZSwgJnBhdGgsIHRpbWVzLCBucywgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtMTU0MCwyMSArMTYxMCwyMyBAQAogIkV4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4iKTsKIAogI2RlZmluZSBPU19fRVhJVF9NRVRIT0RERUYgICAgXAotICAgIHsiX2V4aXQiLCAoUHlDRnVuY3Rpb24pb3NfX2V4aXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZXhpdF9fZG9jX199LAorICAgIHsiX2V4aXQiLCAoUHlDRnVuY3Rpb24pb3NfX2V4aXQsIE1FVEhfRkFTVENBTEwsIG9zX19leGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19fZXhpdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2V4aXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19fZXhpdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpfZXhpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6X2V4aXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19leGl0X2ltcGwobW9kdWxlLCBzdGF0dXMpOwogCiBleGl0OgpAQCAtMTU3OCwyMyArMTY1MCwyNCBAQAogICAgIHsiZXhlY3YiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3YsIE1FVEhfVkFSQVJHUywgb3NfZXhlY3ZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKK29zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19leGVjdihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3YiLCAicGF0aCIsIDAsIDApOwogICAgIFB5T2JqZWN0ICphcmd2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgcGF0aCwgYXJndik7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2X2ltcGwobW9kdWxlLCAmcGF0aCwgYXJndik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNjE3LDIzICsxNjkwLDI1IEBACiAiICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuIik7CiAKICNkZWZpbmUgT1NfRVhFQ1ZFX01FVEhPRERFRiAgICBcCi0gICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZXhlY3ZlX19kb2NfX30sCisgICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX0ZBU1RDQUxMLCBvc19leGVjdmVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2V4ZWN2ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZXhlY3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZXhlY3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhcmd2IiwgImVudiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJleGVjdmUiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GRVhFQ1ZFKTsKICAgICBQeU9iamVjdCAqYXJndjsKICAgICBQeU9iamVjdCAqZW52OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YsIGVudik7CiAKIGV4aXQ6CkBAIC0xNjQ1LDcgKzE3MjAsNyBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0VYRUNWKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKyNpZiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKQogCiBQeURvY19TVFJWQVIob3Nfc3Bhd252X19kb2NfXywKICJzcGF3bnYoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgLylcbiIKQEAgLTE2NjQsMzEgKzE3MzksMzIgQEAKICAgICB7InNwYXdudiIsIChQeUNGdW5jdGlvbilvc19zcGF3bnYsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKK29zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NwYXdudihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZTsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3Bhd252IiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTzpzcGF3bnYiLAotICAgICAgICAmbW9kZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICAmbW9kZSwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndik7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgJnBhdGgsIGFyZ3YpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBQeV9YREVDUkVGKHBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKyNpZiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKQogCiBQeURvY19TVFJWQVIob3Nfc3Bhd252ZV9fZG9jX18sCiAic3Bhd252ZSgkbW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYsIC8pXG4iCkBAIC0xNzA5LDcgKzE3ODUsNyBAQAogICAgIHsic3Bhd252ZSIsIChQeUNGdW5jdGlvbilvc19zcGF3bnZlLCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudmVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAorb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbnYpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTcxNywyMyArMTc5MywyNCBAQAogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBtb2RlOwotICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzcGF3bnZlIiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKICAgICBQeU9iamVjdCAqZW52OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPTzpzcGF3bnZlIiwKLSAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICAgICAgJm1vZGUsIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCAmcGF0aCwgYXJndiwgZW52KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkgKi8KIAogI2lmIGRlZmluZWQoSEFWRV9GT1JLMSkKIApAQCAtMTc5MiwyMSArMTg2OSwyMyBAQAogIkdldCB0aGUgbWF4aW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CiAKICNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYgICAgXAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX0ZBU1RDQUxMLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHBvbGljeSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgcG9saWN5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLAotICAgICAgICAmcG9saWN5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBvbGljeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwobW9kdWxlLCBwb2xpY3kpOwogCiBleGl0OgpAQCAtMTgyNCwyMSArMTkwMywyMyBAQAogIkdldCB0aGUgbWluaW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CiAKICNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYgICAgXAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX0ZBU1RDQUxMLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHBvbGljeSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgcG9saWN5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgX2tleXdvcmRzLAotICAgICAgICAmcG9saWN5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBvbGljeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwobW9kdWxlLCBwb2xpY3kpOwogCiBleGl0OgpAQCAtMTg2OSw4ICsxOTUwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0xODk3LDEyICsxOTc5LDE0IEBACiBvc19zY2hlZF9wYXJhbShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86c2NoZWRfcGFyYW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzY2hlZF9wcmlvcml0eTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86c2NoZWRfcGFyYW0iLCBfa2V5d29yZHMsCi0gICAgICAgICZzY2hlZF9wcmlvcml0eSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcGFyYW1faW1wbCh0eXBlLCBzY2hlZF9wcmlvcml0eSk7CiAKIGV4aXQ6CkBAIC0xOTM4LDggKzIwMjIsOSBAQAogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpTyY6c2NoZWRfc2V0c2NoZWR1bGVyIiwKLSAgICAgICAgJnBpZCwgJnBvbGljeSwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgJnBpZCwgJnBvbGljeSwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldHNjaGVkdWxlcl9pbXBsKG1vZHVsZSwgcGlkLCBwb2xpY3ksICZwYXJhbSk7CiAKIGV4aXQ6CkBAIC0xOTcxLDggKzIwNTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0cGFyYW0iLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTIwMDcsOCArMjA5Myw5IEBACiAgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKLSAgICAgICAgJnBpZCwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgJnBpZCwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldHBhcmFtX2ltcGwobW9kdWxlLCBwaWQsICZwYXJhbSk7CiAKIGV4aXQ6CkBAIC0yMDQwLDExICsyMTI3LDEzIEBACiAgICAgcGlkX3QgcGlkOwogICAgIGRvdWJsZSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX3JyX2dldF9pbnRlcnZhbCIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3NjaGVkX3JyX2dldF9pbnRlcnZhbF9pbXBsKG1vZHVsZSwgcGlkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEuMCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEuMCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5RmxvYXRfRnJvbURvdWJsZShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIwOTksOCArMjE4OCw5IEBACiAgICAgUHlPYmplY3QgKm1hc2s7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCi0gICAgICAgICZwaWQsICZtYXNrKSkKKyAgICAgICAgJnBpZCwgJm1hc2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCwgbWFzayk7CiAKIGV4aXQ6CkBAIC0yMTE1LDcgKzIyMDUsNyBAQAogInNjaGVkX2dldGFmZmluaXR5KCRtb2R1bGUsIHBpZCwgLylcbiIKICItLVxuIgogIlxuIgotIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuXG4iCisiUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpZiB6ZXJvKS5cbiIKICJcbiIKICJUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLiIpOwogCkBAIC0yMTMxLDggKzIyMjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTIyNTksNiArMjM1MCw4IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUR0lEKSAqLwogCisjaWYgZGVmaW5lZChIQVZFX0dFVFBJRCkKKwogUHlEb2NfU1RSVkFSKG9zX2dldHBpZF9fZG9jX18sCiAiZ2V0cGlkKCRtb2R1bGUsIC8pXG4iCiAiLS1cbiIKQEAgLTIyNzcsNiArMjM3MCw4IEBACiAgICAgcmV0dXJuIG9zX2dldHBpZF9pbXBsKG1vZHVsZSk7CiB9CiAKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUElEKSAqLworCiAjaWYgZGVmaW5lZChIQVZFX0dFVEdST1VQUykKIAogUHlEb2NfU1RSVkFSKG9zX2dldGdyb3Vwc19fZG9jX18sCkBAIC0yMzA4LDIxICsyNDAzLDIzIEBACiAiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuIik7CiAKICNkZWZpbmUgT1NfR0VUUEdJRF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0cGdpZF9fZG9jX199LAorICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXRwZ2lkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRwZ2lkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGlkX3QgcGlkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHBnaWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19nZXRwZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIF9QeV9QQVJTRV9QSUQgIjpnZXRwZ2lkIiwgX2tleXdvcmRzLCAwfTsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRwZ2lkIiwgX2tleXdvcmRzLAotICAgICAgICAmcGlkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMjQ2Niw4ICsyNTYzLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpZ25hbDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJuOmtpbGwiLAotICAgICAgICAmcGlkLCAmc2lnbmFsKSkKKyAgICAgICAgJnBpZCwgJnNpZ25hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19raWxsX2ltcGwobW9kdWxlLCBwaWQsIHNpZ25hbCk7CiAKIGV4aXQ6CkBAIC0yNDk4LDggKzI1OTYsOSBAQAogICAgIGludCBzaWduYWw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTpraWxscGciLAotICAgICAgICAmcGdpZCwgJnNpZ25hbCkpCisgICAgICAgICZwZ2lkLCAmc2lnbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxwZ19pbXBsKG1vZHVsZSwgcGdpZCwgc2lnbmFsKTsKIAogZXhpdDoKQEAgLTI1MjgsOCArMjYyNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG9wOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBsb2NrIiwgJm9wKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGxvY2siLCAmb3ApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGxvY2tfaW1wbChtb2R1bGUsIG9wKTsKIAogZXhpdDoKQEAgLTI1NTgsOCArMjY1OCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdWlkX3QgdWlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR1aWRfaW1wbChtb2R1bGUsIHVpZCk7CiAKIGV4aXQ6CkBAIC0yNTg4LDggKzI2ODksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHVpZF90IGV1aWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRldWlkX2ltcGwobW9kdWxlLCBldWlkKTsKIAogZXhpdDoKQEAgLTI2MTgsOCArMjcyMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgZ2lkX3QgZWdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZWdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGVnaWRfaW1wbChtb2R1bGUsIGVnaWQpOwogCiBleGl0OgpAQCAtMjY1MCw4ICsyNzUzLDkgQEAKICAgICB1aWRfdCBldWlkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJldWlkIiwKLSAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXVpZF9pbXBsKG1vZHVsZSwgcnVpZCwgZXVpZCk7CiAKIGV4aXQ6CkBAIC0yNjgyLDggKzI3ODYsOSBAQAogICAgIGdpZF90IGVnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmVnaWQiLAotICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCisgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlZ2lkX2ltcGwobW9kdWxlLCByZ2lkLCBlZ2lkKTsKIAogZXhpdDoKQEAgLTI3MTIsOCArMjgxNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRnaWRfaW1wbChtb2R1bGUsIGdpZCk7CiAKIGV4aXQ6CkBAIC0yNzQ3LDIxICsyODUzLDIzIEBACiAiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKIAogI2RlZmluZSBPU19XQUlUM19NRVRIT0RERUYgICAgXAotICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0M19fZG9jX199LAorICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfRkFTVENBTEwsIG9zX3dhaXQzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0M19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBvcHRpb25zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3dhaXQzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfd2FpdDMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTp3YWl0MyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IG9wdGlvbnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOndhaXQzIiwgX2tleXdvcmRzLAotICAgICAgICAmb3B0aW9ucykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQzX2ltcGwobW9kdWxlLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI3ODIsMjIgKzI4OTAsMjQgQEAKICIgIChwaWQsIHN0YXR1cywgcnVzYWdlKSIpOwogCiAjZGVmaW5lIE9TX1dBSVQ0X01FVEhPRERFRiAgICBcCi0gICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3dhaXQ0X19kb2NfX30sCisgICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9GQVNUQ0FMTCwgb3Nfd2FpdDRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3dhaXQ0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3dhaXQ0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBpZCIsICJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBfUHlfUEFSU0VfUElEICJpOndhaXQ0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50IG9wdGlvbnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdDRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yODQwLDggKzI5NTAsOSBAQAogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICJpOndhaXRpZCIsCi0gICAgICAgICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKQorICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRpZF9pbXBsKG1vZHVsZSwgaWR0eXBlLCBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yODc3LDggKzI5ODgsOSBAQAogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdHBpZCIsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdHBpZF9pbXBsKG1vZHVsZSwgcGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI5MDQsMTggKzMwMTYsMTkgQEAKICAgICB7IndhaXRwaWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBvc193YWl0cGlkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7Citvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0cGlkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IHBpZDsKKyAgICBpbnRwdHJfdCBwaWQ7CiAgICAgaW50IG9wdGlvbnM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX0lOVFBUUiAiaTp3YWl0cGlkIiwKLSAgICAgICAgJnBpZCwgJm9wdGlvbnMpKQorICAgICAgICAmcGlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjk2OCwyNSArMzA4MSwyNyBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1NZTUxJTktfTUVUSE9EREVGICAgIFwKLSAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pb3Nfc3ltbGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5bWxpbmtfX2RvY19ffSwKKyAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pb3Nfc3ltbGluaywgTUVUSF9GQVNUQ0FMTCwgb3Nfc3ltbGlua19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3ltbGlua19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zeW1saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3ltbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfHAkTyY6c3ltbGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJzeW1saW5rIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCAmdGFyZ2V0X2lzX2RpcmVjdG9yeSwgU1lNTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3ltbGlua19pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTMwNDYsOCArMzE2MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0c2lkX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMzEwMCw4ICszMjE2LDkgQEAKICAgICBwaWRfdCBwZ3JwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIiIgX1B5X1BBUlNFX1BJRCAiOnNldHBnaWQiLAotICAgICAgICAmcGlkLCAmcGdycCkpCisgICAgICAgICZwaWQsICZwZ3JwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHBnaWRfaW1wbChtb2R1bGUsIHBpZCwgcGdycCk7CiAKIGV4aXQ6CkBAIC0zMTMwLDggKzMyNDcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNnZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMTYyLDggKzMyODAsOSBAQAogICAgIHBpZF90IHBnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgIjp0Y3NldHBncnAiLAotICAgICAgICAmZmQsICZwZ2lkKSkKKyAgICAgICAgJmZkLCAmcGdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc190Y3NldHBncnBfaW1wbChtb2R1bGUsIGZkLCBwZ2lkKTsKIAogZXhpdDoKQEAgLTMxODQsMjggKzMzMDMsMzEgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19PUEVOX01FVEhPRERFRiAgICBcCi0gICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19vcGVuX19kb2NfX30sCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfRkFTVENBTEwsIG9zX29wZW5fX2RvY19ffSwKIAogc3RhdGljIGludAogb3Nfb3Blbl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8aSRPJjpvcGVuIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJvcGVuIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG1vZGUgPSA1MTE7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfGkkTyY6b3BlbiIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZtb2RlLCBPUEVOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX29wZW5faW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgbW9kZSwgZGlyX2ZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzIyMiwyMSArMzM0NCwyMyBAQAogIkNsb3NlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX0NMT1NFX01FVEhPRERFRiAgICBcCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nsb3NlX19kb2NfX30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9GQVNUQ0FMTCwgb3NfY2xvc2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nsb3NlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOmNsb3NlIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmNsb3NlIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2xvc2VfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTMyNjMsOCArMzM4Nyw5IEBACiAgICAgaW50IGZkX2hpZ2g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmNsb3NlcmFuZ2UiLAotICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpCisgICAgICAgICZmZF9sb3csICZmZF9oaWdoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlcmFuZ2VfaW1wbChtb2R1bGUsIGZkX2xvdywgZmRfaGlnaCk7CiAKIGV4aXQ6CkBAIC0zMjkwLDExICszNDE1LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmR1cCIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmR1cCIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZHVwX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMzMDgsMjMgKzM0MzUsMjUgQEAKICJEdXBsaWNhdGUgZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX0RVUDJfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1cDIiLCAoUHlDRnVuY3Rpb24pb3NfZHVwMiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2R1cDJfX2RvY19ffSwKKyAgICB7ImR1cDIiLCAoUHlDRnVuY3Rpb24pb3NfZHVwMiwgTUVUSF9GQVNUQ0FMTCwgb3NfZHVwMl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZHVwMl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgaW50IGZkMiwgaW50IGluaGVyaXRhYmxlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2R1cDIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19kdXAyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaXxwOmR1cDIiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICBpbnQgZmQyOwogICAgIGludCBpbmhlcml0YWJsZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaXxwOmR1cDIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCAmZmQyLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZHVwMl9pbXBsKG1vZHVsZSwgZmQsIGZkMiwgaW5oZXJpdGFibGUpOwogCiBleGl0OgpAQCAtMzM2MSw4ICszNDkwLDkgQEAKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6bG9ja2YiLAotICAgICAgICAmZmQsICZjb21tYW5kLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICAmZmQsICZjb21tYW5kLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb21tYW5kLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzM5NiwxMSArMzUyNiwxMyBAQAogICAgIFB5X29mZl90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJmk6bHNlZWsiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJnBvc2l0aW9uLCAmaG93KSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbHNlZWtfaW1wbChtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21QeV9vZmZfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM0MjcsOCArMzU1OSw5IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImluOnJlYWQiLAotICAgICAgICAmZmQsICZsZW5ndGgpKQorICAgICAgICAmZmQsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC0zNDY2LDExICszNTk5LDEzIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpyZWFkdiIsCi0gICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICAmZmQsICZidWZmZXJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19yZWFkdl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNTA1LDggKzM2NDAsOSBAQAogICAgIFB5X29mZl90IG9mZnNldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsCi0gICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgJmZkLCAmbGVuZ3RoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHJlYWRfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgsIG9mZnNldCk7CiAKIGV4aXQ6CkBAIC0zNTM2LDE3ICszNjcyLDIwIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6d3JpdGUiLAotICAgICAgICAmZmQsICZkYXRhKSkKKyAgICAgICAgJmZkLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmZGF0YSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNTYxLDIxICszNzAwLDIzIEBACiAiRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4iKTsKIAogI2RlZmluZSBPU19GU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3RhdF9fZG9jX199LAorICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfRkFTVENBTEwsIG9zX2ZzdGF0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpmc3RhdCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpmc3RhdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0X2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zNjA0LDExICszNzQ1LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzYXR0eSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzYXR0eSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfaXNhdHR5X2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM2NjYsOCArMzgwOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGlwZTIiLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGlwZTJfaW1wbChtb2R1bGUsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTM3MDIsMTEgKzM4NDYsMTMgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOndyaXRldiIsCi0gICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICAmZmQsICZidWZmZXJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc193cml0ZXZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzc0MywxNyArMzg4OSwyMCBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwKLSAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKQorICAgICAgICAmZmQsICZidWZmZXIsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcHdyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmJ1ZmZlciwgb2Zmc2V0KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzc3NCwyMyArMzkyMywyNSBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX01LRklGT19NRVRIT0RERUYgICAgXAotICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZmlmb19fZG9jX199LAorICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9GQVNUQ0FMTCwgb3NfbWtmaWZvX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta2ZpZm9faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX21rZmlmbyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rZmlmbyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtmaWZvIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZSA9IDQzODsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtmaWZvX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTM4MjMsMjUgKzM5NzQsMjcgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19NS05PRF9NRVRIT0RERUYgICAgXAotICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta25vZF9fZG9jX199LAorICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfRkFTVENBTEwsIG9zX21rbm9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta25vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGRldl90IGRldmljZSwKICAgICAgICAgICAgICAgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta25vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rbm9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta25vZCIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSAzODQ7CiAgICAgZGV2X3QgZGV2aWNlID0gMDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpTyYkTyY6bWtub2QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlLCBNS05PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rbm9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGV2aWNlLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMzg3NCwxMSArNDAyNywxMyBAQAogICAgIGRldl90IGRldmljZTsKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWpvcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzkwOCwxMSArNDA2MywxMyBAQAogICAgIGRldl90IGRldmljZTsKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19taW5vcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzk0NCwxMSArNDEwMSwxMyBAQAogICAgIGRldl90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOm1ha2VkZXYiLAotICAgICAgICAmbWFqb3IsICZtaW5vcikpCisgICAgICAgICZtYWpvciwgJm1pbm9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWtlZGV2X2ltcGwobW9kdWxlLCBtYWpvciwgbWlub3IpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IChkZXZfdCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9QeUxvbmdfRnJvbURldihfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5NzksOCArNDEzOCw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnRydW5jYXRlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mdHJ1bmNhdGVfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtNDAwMSwyMiArNDE2MSwyNCBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3RydW5jYXRlX19kb2NfX30sCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfdHJ1bmNhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3RydW5jYXRlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeV9vZmZfdCBsZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdHJ1bmNhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc190cnVuY2F0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyY6dHJ1bmNhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInRydW5jYXRlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlRSVU5DQVRFKTsKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3RydW5jYXRlX2ltcGwobW9kdWxlLCAmcGF0aCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQwNTUsOCArNDIxNyw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWxsb2NhdGVfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC00MDk4LDggKzQyNjEsOSBAQAogICAgIGludCBhZHZpY2U7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8maTpwb3NpeF9mYWR2aXNlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCwgJmFkdmljZSkpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFkdmlzZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UpOwogCiBleGl0OgpAQCAtNDEzMCw4ICs0Mjk0LDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOnB1dGVudiIsCi0gICAgICAgICZuYW1lLCAmdmFsdWUpKQorICAgICAgICAmbmFtZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDE2Miw4ICs0MzI3LDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnB1dGVudiIsCi0gICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MTk3LDggKzQzNjMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5zZXRlbnYiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuc2V0ZW52IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bnNldGVudl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC00MjI4LDggKzQzOTUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnN0cmVycm9yIiwgJmNvZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0cmVycm9yX2ltcGwobW9kdWxlLCBjb2RlKTsKIAogZXhpdDoKQEAgLTQyNTcsMTEgKzQ0MjUsMTMgQEAKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOldDT1JFRFVNUCIsICZzdGF0dXMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XQ09SRURVTVBfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQyODIsMjUgKzQ0NTIsMjggQEAKICJqb2IgY29udHJvbCBzdG9wLiIpOwogCiAjZGVmaW5lIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAorICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGQ09OVElOVUVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRkNPTlRJTlVFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGQ09OVElOVUVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGQ09OVElOVUVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGQ09OVElOVUVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGQ09OVElOVUVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzE4LDI1ICs0NDkxLDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgc3RvcHBlZC4iKTsKIAogI2RlZmluZSBPU19XSUZTVE9QUEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCisgICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRlNUT1BQRURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGU1RPUFBFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGU1RPUFBFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRlNUT1BQRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGU1RPUFBFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGU1RPUFBFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNUT1BQRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzNTQsMjUgKzQ1MzAsMjggQEAKICJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsLiIpOwogCiAjZGVmaW5lIE9TX1dJRlNJR05BTEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZTSUdOQUxFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTSUdOQUxFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRlNJR05BTEVEX19kb2NfX30sCisgICAgeyJXSUZTSUdOQUxFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTSUdOQUxFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGU0lHTkFMRURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGU0lHTkFMRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRlNJR05BTEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGU0lHTkFMRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGU0lHTkFMRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNJR05BTEVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGU0lHTkFMRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzOTAsMjUgKzQ1NjksMjggQEAKICJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4iKTsKIAogI2RlZmluZSBPU19XSUZFWElURURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZFWElURURfX2RvY19ffSwKKyAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRkVYSVRFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZFWElURURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRkVYSVRFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRkVYSVRFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkVYSVRFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkVYSVRFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQyNiwyNSArNDYwOCwyOCBAQAogIlJldHVybiB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBmcm9tIHN0YXR1cy4iKTsKIAogI2RlZmluZSBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYgICAgXAotICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAorICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfRkFTVENBTEwsIG9zX1dFWElUU1RBVFVTX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dFWElUU1RBVFVTX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XRVhJVFNUQVRVUyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dFWElUU1RBVFVTKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldFWElUU1RBVFVTIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dFWElUU1RBVFVTX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NDYyLDI1ICs0NjQ3LDI4IEBACiAiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKIAogI2RlZmluZSBPU19XVEVSTVNJR19NRVRIT0RERUYgICAgXAotICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XVEVSTVNJR19fZG9jX199LAorICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfRkFTVENBTEwsIG9zX1dURVJNU0lHX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dURVJNU0lHX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XVEVSTVNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dURVJNU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldURVJNU0lHIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dURVJNU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NDk4LDI1ICs0Njg2LDI4IEBACiAiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCBzdG9wcGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKIAogI2RlZmluZSBPU19XU1RPUFNJR19NRVRIT0RERUYgICAgXAotICAgIHsiV1NUT1BTSUciLCAoUHlDRnVuY3Rpb24pb3NfV1NUT1BTSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XU1RPUFNJR19fZG9jX199LAorICAgIHsiV1NUT1BTSUciLCAoUHlDRnVuY3Rpb24pb3NfV1NUT1BTSUcsIE1FVEhfRkFTVENBTEwsIG9zX1dTVE9QU0lHX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dTVE9QU0lHX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XU1RPUFNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dTVE9QU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldTVE9QU0lHIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXU1RPUFNJRyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dTVE9QU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NTQ3LDggKzQ3MzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpmc3RhdHZmcyIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmZzdGF0dmZzIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0dmZzX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC00NTcwLDIxICs0NzYyLDIzIEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfU1RBVFZGU19NRVRIT0RERUYgICAgXAotICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdHZmc19fZG9jX199LAorICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX0ZBU1RDQUxMLCBvc19zdGF0dmZzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zdGF0dmZzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXR2ZnMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zdGF0dmZzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOnN0YXR2ZnMiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXR2ZnMiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GU1RBVFZGUyk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdHZmc19pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtNDYwNSwyMSArNDc5OSwyMyBAQAogIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSAodG90YWwsIGZyZWUpIHR1cGxlLiIpOwogCiAjZGVmaW5lIE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGICAgIFwKLSAgICB7Il9nZXRkaXNrdXNhZ2UiLCAoUHlDRnVuY3Rpb24pb3NfX2dldGRpc2t1c2FnZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKKyAgICB7Il9nZXRkaXNrdXNhZ2UiLCAoUHlDRnVuY3Rpb24pb3NfX2dldGRpc2t1c2FnZSwgTUVUSF9GQVNUQ0FMTCwgb3NfX2dldGRpc2t1c2FnZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2dldGRpc2t1c2FnZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9VTklDT0RFICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRkaXNrdXNhZ2VfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtNDY1MywxMSArNDg0OSwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZwYXRoY29uZiIsCi0gICAgICAgICZmZCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgICAgICZmZCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZnBhdGhjb25mX2ltcGwobW9kdWxlLCBmZCwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ2NzksMjYgKzQ4NzcsMjkgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19QQVRIQ09ORl9NRVRIT0RERUYgICAgXAotICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19wYXRoY29uZl9fZG9jX199LAorICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfRkFTVENBTEwsIG9zX3BhdGhjb25mX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19wYXRoY29uZl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcGF0aGNvbmYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19wYXRoY29uZihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJjpwYXRoY29uZiIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicGF0aGNvbmYiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GUEFUSENPTkYpOwogICAgIGludCBuYW1lOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcGF0aGNvbmZfaW1wbChtb2R1bGUsICZwYXRoLCBuYW1lKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDczMCw4ICs0OTMxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Y29uZnN0ciIsIGNvbnZfY29uZnN0cl9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Y29uZnN0ciIsIGNvbnZfY29uZnN0cl9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY29uZnN0cl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC00NzYxLDExICs0OTYzLDEzIEBACiAgICAgaW50IG5hbWU7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzY29uZl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ3OTUsNiArNDk5OSw2MSBAQAogICAgIHJldHVybiBvc19hYm9ydF9pbXBsKG1vZHVsZSk7CiB9CiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19zdGFydGZpbGVfX2RvY19fLAorInN0YXJ0ZmlsZSgkbW9kdWxlLCAvLCBmaWxlcGF0aCwgb3BlcmF0aW9uPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJzdGFydGZpbGUoZmlsZXBhdGggWywgb3BlcmF0aW9uXSlcbiIKKyJcbiIKKyJTdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cbiIKKyJcbiIKKyJXaGVuIFwib3BlcmF0aW9uXCIgaXMgbm90IHNwZWNpZmllZCBvciBcIm9wZW5cIiwgdGhpcyBhY3RzIGxpa2VcbiIKKyJkb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG4iCisiYXJndW1lbnQgdG8gdGhlIERPUyBcInN0YXJ0XCIgY29tbWFuZDogdGhlIGZpbGUgaXMgb3BlbmVkIHdpdGggd2hhdGV2ZXJcbiIKKyJhcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuXG4iCisiV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcbiIKKyJ0aGUgZmlsZS4gIEEgdHlwaWNhbCBvcGVyYXRpb24gaXMgXCJwcmludFwiLlxuIgorIlxuIgorInN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG4iCisiVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheVxuIgorInRvIHJldHJpZXZlIHRoZSBhcHBsaWNhdGlvblwncyBleGl0IHN0YXR1cy5cbiIKKyJcbiIKKyJUaGUgZmlsZXBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgSWYgeW91IHdhbnQgdG8gdXNlXG4iCisiYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcbiIKKyJ0aGUgdW5kZXJseWluZyBXaW4zMiBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24gZG9lc25cJ3Qgd29yayBpZiBpdCBpcy4iKTsKKworI2RlZmluZSBPU19TVEFSVEZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InN0YXJ0ZmlsZSIsIChQeUNGdW5jdGlvbilvc19zdGFydGZpbGUsIE1FVEhfRkFTVENBTEwsIG9zX3N0YXJ0ZmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhcnRmaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpmaWxlcGF0aCwgUHlfVU5JQ09ERSAqb3BlcmF0aW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGVwYXRoIiwgIm9wZXJhdGlvbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfHU6c3RhcnRmaWxlIiwgX2tleXdvcmRzLCAwfTsKKyAgICBwYXRoX3QgZmlsZXBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhcnRmaWxlIiwgImZpbGVwYXRoIiwgMCwgMCk7CisgICAgUHlfVU5JQ09ERSAqb3BlcmF0aW9uID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmZpbGVwYXRoLCAmb3BlcmF0aW9uKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXJ0ZmlsZV9pbXBsKG1vZHVsZSwgJmZpbGVwYXRoLCBvcGVyYXRpb24pOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGZpbGVwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZmaWxlcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCiAjaWYgZGVmaW5lZChIQVZFX0dFVExPQURBVkcpCiAKIFB5RG9jX1NUUlZBUihvc19nZXRsb2FkYXZnX19kb2NfXywKQEAgLTQ4MzEsMjEgKzUwOTAsMjMgQEAKICJJZiB0aGUgZGV2aWNlIGlzIG5vdCBhIHRlcm1pbmFsLCByZXR1cm4gTm9uZS4iKTsKIAogI2RlZmluZSBPU19ERVZJQ0VfRU5DT0RJTkdfTUVUSE9EREVGICAgIFwKLSAgICB7ImRldmljZV9lbmNvZGluZyIsIChQeUNGdW5jdGlvbilvc19kZXZpY2VfZW5jb2RpbmcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKKyAgICB7ImRldmljZV9lbmNvZGluZyIsIChQeUNGdW5jdGlvbilvc19kZXZpY2VfZW5jb2RpbmcsIE1FVEhfRkFTVENBTEwsIG9zX2RldmljZV9lbmNvZGluZ19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2RldmljZV9lbmNvZGluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2RldmljZV9lbmNvZGluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6ZGV2aWNlX2VuY29kaW5nIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2RldmljZV9lbmNvZGluZ19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNDg3NSw4ICs1MTM2LDkgQEAKICAgICB1aWRfdCBzdWlkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKLSAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVzdWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkLCBzdWlkKTsKIAogZXhpdDoKQEAgLTQ5MDgsOCArNTE3MCw5IEBACiAgICAgZ2lkX3Qgc2dpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc2dpZCIsCi0gICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJnNnaWQpKQorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc2dpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCwgc2dpZCk7CiAKIGV4aXQ6CkBAIC00OTc2LDI0ICs1MjM5LDI2IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfR0VUWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0eGF0dHJfX2RvY19ffSwKKyAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXR4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0eGF0dHJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAogICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKICAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTAyMiwyNiArNTI4NywyOCBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX1NFVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHhhdHRyX19kb2NfX30sCisgICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2V0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NldHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICp2YWx1ZSwgaW50IGZsYWdzLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKICAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOwogICAgIFB5X2J1ZmZlciB2YWx1ZSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgZmxhZ3MgPSAwOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmdmFsdWUsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MDUwLDggKzUzMTcsOSBAQAogICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLwogICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKICAgICAvKiBDbGVhbnVwIGZvciB2YWx1ZSAqLwotICAgIGlmICh2YWx1ZS5vYmopCisgICAgaWYgKHZhbHVlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTA3MiwyNCArNTM0MCwyNiBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX1JFTU9WRVhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCisgICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVtb3ZleGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlbW92ZXhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZW1vdmV4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZXhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZXhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUxMTgsMjIgKzUzODgsMjQgQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19MSVNUWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0eGF0dHJfX2RvY19ffSwKKyAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX2xpc3R4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGlzdHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xpc3R4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpc3R4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdHhhdHRyIiwgInBhdGgiLCAxLCAxKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3R4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MTYzLDggKzU0MzUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC01MTc1LDcgKzU0NDgsMTEgQEAKICJjcHVfY291bnQoJG1vZHVsZSwgLylcbiIKICItLVxuIgogIlxuIgotIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuIik7CisiUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtOyByZXR1cm4gTm9uZSBpZiBpbmRldGVybWluYWJsZS5cbiIKKyJcbiIKKyJUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW5cbiIKKyJ1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoXG4iCisiYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAiKTsKIAogI2RlZmluZSBPU19DUFVfQ09VTlRfTUVUSE9EREVGICAgIFwKICAgICB7ImNwdV9jb3VudCIsIChQeUNGdW5jdGlvbilvc19jcHVfY291bnQsIE1FVEhfTk9BUkdTLCBvc19jcHVfY291bnRfX2RvY19ffSwKQEAgLTUyMDgsMTEgKzU0ODUsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTIzOSw4ICs1NTE4LDkgQEAKICAgICBpbnQgaW5oZXJpdGFibGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9pbmhlcml0YWJsZSIsCi0gICAgICAgICZmZCwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgJmZkLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCwgaW5oZXJpdGFibGUpOwogCiBleGl0OgpAQCAtNTI1OSwyMCArNTUzOSwyMiBAQAogICAgIHsiZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX08sIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSk7Citvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50cHRyX3QgaGFuZGxlOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTI5MywxOSArNTU3NSwyMCBAQAogICAgIHsic2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX1ZBUkFSR1MsIG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGluaGVyaXRhYmxlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgInA6c2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsCi0gICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpCisgICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTUzMTQsNiArNTU5Nyw3NSBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCitQeURvY19TVFJWQVIob3NfZnNwYXRoX19kb2NfXywKKyJmc3BhdGgoJG1vZHVsZSwgLywgcGF0aClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LlxuIgorIlxuIgorIklmIHRoZSBvYmplY3QgaXMgc3RyIG9yIGJ5dGVzLCB0aGVuIGFsbG93IGl0IHRvIHBhc3MgdGhyb3VnaCBhcy1pcy4gSWYgdGhlXG4iCisib2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXJcbiIKKyJ0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4iKTsKKworI2RlZmluZSBPU19GU1BBVEhfTUVUSE9EREVGICAgIFwKKyAgICB7ImZzcGF0aCIsIChQeUNGdW5jdGlvbilvc19mc3BhdGgsIE1FVEhfRkFTVENBTEwsIG9zX2ZzcGF0aF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86ZnNwYXRoIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19mc3BhdGhfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NX1NZU0NBTEwpCisKK1B5RG9jX1NUUlZBUihvc19nZXRyYW5kb21fX2RvY19fLAorImdldHJhbmRvbSgkbW9kdWxlLCAvLCBzaXplLCBmbGFncz0wKVxuIgorIi0tXG4iCisiXG4iCisiT2J0YWluIGEgc2VyaWVzIG9mIHJhbmRvbSBieXRlcy4iKTsKKworI2RlZmluZSBPU19HRVRSQU5ET01fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHJhbmRvbSIsIChQeUNGdW5jdGlvbilvc19nZXRyYW5kb20sIE1FVEhfRkFTVENBTEwsIG9zX2dldHJhbmRvbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2l6ZSIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Im58aTpnZXRyYW5kb20iLCBfa2V5d29yZHMsIDB9OworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzaXplLCAmZmxhZ3MpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cmFuZG9tX2ltcGwobW9kdWxlLCBzaXplLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkgKi8KKwogI2lmbmRlZiBPU19UVFlOQU1FX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfVFRZTkFNRV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19UVFlOQU1FX01FVEhPRERFRikgKi8KQEAgLTU0OTQsNiArNTg0NiwxMCBAQAogICAgICNkZWZpbmUgT1NfR0VUR0lEX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdJRF9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgT1NfR0VUUElEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBJRF9NRVRIT0RERUYpICovCisKICNpZm5kZWYgT1NfR0VUR1JPVVBTX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfR0VUR1JPVVBTX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdST1VQU19NRVRIT0RERUYpICovCkBAIC01NzQyLDYgKzYwOTgsMTAgQEAKICAgICAjZGVmaW5lIE9TX1NZU0NPTkZfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lTQ09ORl9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgT1NfU1RBUlRGSUxFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU1RBUlRGSUxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NUQVJURklMRV9NRVRIT0RERUYpICovCisKICNpZm5kZWYgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUTE9BREFWR19NRVRIT0RERUYpICovCkBAIC01Nzg1LDQgKzYxNDUsOCBAQAogI2lmbmRlZiBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NjkwYjcyNTQ5ZDI1MjRlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKworI2lmbmRlZiBPU19HRVRSQU5ET01fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRSQU5ET01fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUkFORE9NX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MGNmYjdlYmM0NGVmYjY3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oCmluZGV4IGNiMTkxYTAuLmY5ZTA2NDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaApAQCAtMzMsOCArMzMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICphcmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHB3bmFtIiwgJmFyZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRwd25hbSIsICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHdkX2dldHB3bmFtX2ltcGwobW9kdWxlLCBhcmcpOwogCiBleGl0OgpAQCAtNjgsNCArNjksNCBAQAogI2lmbmRlZiBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAgICAgI2RlZmluZSBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoUFdEX0dFVFBXQUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMGVhMWM1YzgzMmYwYzFhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYzQxZDhkODhlYzIwNmQ4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKaW5kZXggYzViNWM3MS4uNzVhMDk2YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKQEAgLTI1LDggKzI1LDkgQEAKICAgICBpbnQgaXNmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpQYXJzZSIsCi0gICAgICAgICZkYXRhLCAmaXNmaW5hbCkpCisgICAgICAgICZkYXRhLCAmaXNmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9pbXBsKHNlbGYsIGRhdGEsIGlzZmluYWwpOwogCiBleGl0OgpAQCAtNjAsOCArNjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmJhc2U7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbChzZWxmLCBiYXNlKTsKIAogZXhpdDoKQEAgLTEyOSw4ICsxMzEsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienxzOkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlIiwKLSAgICAgICAgJmNvbnRleHQsICZlbmNvZGluZykpCisgICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbChzZWxmLCBjb250ZXh0LCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC0xNjAsOCArMTYzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmxhZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlNldFBhcmFtRW50aXR5UGFyc2luZyIsICZmbGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19pbXBsKHNlbGYsIGZsYWcpOwogCiBleGl0OgpAQCAtMTkzLDggKzE5Nyw5IEBACiAgICAgaW50IGZsYWcgPSAxOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwKLSAgICAgICAgJmZsYWcpKQorICAgICAgICAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREX2ltcGwoc2VsZiwgZmxhZyk7CiAKIGV4aXQ6CkBAIC0yMjgsMjQgKzIzMywyNiBAQAogIlJldHVybiBhIG5ldyBYTUwgcGFyc2VyIG9iamVjdC4iKTsKIAogI2RlZmluZSBQWUVYUEFUX1BBUlNFUkNSRUFURV9NRVRIT0RERUYgICAgXAotICAgIHsiUGFyc2VyQ3JlYXRlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfUGFyc2VyQ3JlYXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgcHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19ffSwKKyAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9GQVNUQ0FMTCwgcHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IsIFB5T2JqZWN0ICppbnRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitweWV4cGF0X1BhcnNlckNyZWF0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJuYW1lc3BhY2Vfc2VwYXJhdG9yIiwgImludGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Inx6ek86UGFyc2VyQ3JlYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmludGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChtb2R1bGUsIGVuY29kaW5nLCBuYW1lc3BhY2Vfc2VwYXJhdG9yLCBpbnRlcm4pOwogCiBleGl0OgpAQCAtMjcwLDggKzI3Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgbG9uZyBjb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJsOkVycm9yU3RyaW5nIiwgJmNvZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChtb2R1bGUsIGNvZGUpOwogCiBleGl0OgpAQCAtMjgxLDQgKzI4OSw0IEBACiAjaWZuZGVmIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCiAgICAgI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0NzljZmFiNjA3ZTlkYzggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU4ODlmN2M2YWY2Y2M0MmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaAppbmRleCA1YjhkYjgwLi5iMDhlOTJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaApAQCAtNzIsMjQgKzcyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQTEgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMV9TSEExX01FVEhPRERFRiAgICBcCi0gICAgeyJzaGExIiwgKFB5Q0Z1bmN0aW9uKV9zaGExX3NoYTEsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhMV9zaGExX19kb2NfX30sCisgICAgeyJzaGExIiwgKFB5Q0Z1bmN0aW9uKV9zaGExX3NoYTEsIE1FVEhfRkFTVENBTEwsIF9zaGExX3NoYTFfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGExX3NoYTFfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGExX3NoYTEoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMV9zaGExKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGExIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTEiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGExX3NoYTFfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjZhMTk0ZmJiMGI5NGYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDMwNDUwZjNmODA2ODk1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oCmluZGV4IDY2MTU2OWMuLjExNWRiNTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaApAQCAtNzIsMjEgKzcyLDIzIEBACiAiUmV0dXJuIGEgbmV3IFNIQS0yNTYgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMjU2X1NIQTI1Nl9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjU2LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKKyAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTI1NiwgTUVUSF9GQVNUQ0FMTCwgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGEyNTZfc2hhMjU2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMjU2X3NoYTI1NihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGEyNTZfc2hhMjU2KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEyNTYiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjU2IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTI1Nl9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKQEAgLTEwMCwyNCArMTAyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQS0yMjQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMjU2X1NIQTIyNF9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjI0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKKyAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGEyNTZfc2hhMjI0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMjU2X3NoYTIyNChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGEyNTZfc2hhMjI0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEyMjQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjI0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTIyNF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhMWZjNTQ4MGUzOTlmOTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5NDM5ZDcwZGI3ZWFkNWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKaW5kZXggZDY0YzJhNC4uYTJiNTdmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oCkBAIC0yLDggKzIsNiBAQAogcHJlc2VydmUKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9jb3B5X19kb2NfXywKICJjb3B5KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC0yMiwxMCArMjAsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2NvcHlfaW1wbChzZWxmKTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2RpZ2VzdF9fZG9jX18sCiAiZGlnZXN0KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC00NCwxMCArMzgsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfaGV4ZGlnZXN0X19kb2NfXywKICJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCiAiLS1cbiIKQEAgLTY2LDEwICs1Niw2IEBACiAgICAgcmV0dXJuIFNIQTUxMlR5cGVfaGV4ZGlnZXN0X2ltcGwoc2VsZik7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV91cGRhdGVfX2RvY19fLAogInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgogIi0tXG4iCkBAIC03OSwxMCArNjUsNiBAQAogI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAogICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfdXBkYXRlLCBNRVRIX08sIFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfX30sCiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoX3NoYTUxMl9zaGE1MTJfX2RvY19fLAogInNoYTUxMigkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCiAiLS1cbiIKQEAgLTkwLDMxICs3MiwyOSBAQAogIlJldHVybiBhIG5ldyBTSEEtNTEyIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTUxMiIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTUxMiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGE1MTJfc2hhNTEyX19kb2NfX30sCisgICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfRkFTVENBTEwsIF9zaGE1MTJfc2hhNTEyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhNTEyX3NoYTUxMl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTUxMl9zaGE1MTIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhNTEyX3NoYTUxMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhNTEyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTUxMiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGE1MTJfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihfc2hhNTEyX3NoYTM4NF9fZG9jX18sCiAic2hhMzg0KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKICItLVxuIgpAQCAtMTIyLDUwICsxMDIsMjYgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRiAgICBcCi0gICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGEzODQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAorICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhMzg0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTUxMl9zaGEzODRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGE1MTJfc2hhMzg0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTUxMl9zaGEzODQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTM4NCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEzODQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhMzg0X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKLSAgICAjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYjg3ZjQ5NGRmNTBmZmMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOGYxNTU5OGMzNDg3MDQ1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oCmluZGV4IGM4ZjRjZDUuLmY4ZDViZDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaApAQCAtMjMsMTEgKzIzLDEzIEBACiAgICAgaW50IHNlY29uZHM7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmFsYXJtIiwgJnNlY29uZHMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBzaWduYWxfYWxhcm1faW1wbChtb2R1bGUsIHNlY29uZHMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC04NSw4ICs4Nyw5IEBACiAgICAgUHlPYmplY3QgKmhhbmRsZXI7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnNpZ25hbCIsCi0gICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkKKyAgICAgICAgJnNpZ25hbG51bSwgJmhhbmRsZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtLCBoYW5kbGVyKTsKIAogZXhpdDoKQEAgLTExNyw4ICsxMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBzaWduYWxudW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0c2lnbmFsIiwgJnNpZ25hbG51bSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldHNpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtKTsKIAogZXhpdDoKQEAgLTE1MCw4ICsxNTQsOSBAQAogICAgIGludCBmbGFnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzaWdpbnRlcnJ1cHQiLAotICAgICAgICAmc2lnbmFsbnVtLCAmZmxhZykpCisgICAgICAgICZzaWduYWxudW0sICZmbGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgZmxhZyk7CiAKIGV4aXQ6CkBAIC0xODksOCArMTk0LDkgQEAKICAgICBkb3VibGUgaW50ZXJ2YWwgPSAwLjA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlkfGQ6c2V0aXRpbWVyIiwKLSAgICAgICAgJndoaWNoLCAmc2Vjb25kcywgJmludGVydmFsKSkKKyAgICAgICAgJndoaWNoLCAmc2Vjb25kcywgJmludGVydmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zZXRpdGltZXJfaW1wbChtb2R1bGUsIHdoaWNoLCBzZWNvbmRzLCBpbnRlcnZhbCk7CiAKIGV4aXQ6CkBAIC0yMTksOCArMjI1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgd2hpY2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9nZXRpdGltZXJfaW1wbChtb2R1bGUsIHdoaWNoKTsKIAogZXhpdDoKQEAgLTI1MSw4ICsyNTgsOSBAQAogICAgIFB5T2JqZWN0ICptYXNrOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpwdGhyZWFkX3NpZ21hc2siLAotICAgICAgICAmaG93LCAmbWFzaykpCisgICAgICAgICZob3csICZtYXNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfaW1wbChtb2R1bGUsIGhvdywgbWFzayk7CiAKIGV4aXQ6CkBAIC0zNDQsOCArMzUyLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNpZ3RpbWVkd2FpdCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpCisgICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lndGltZWR3YWl0X2ltcGwobW9kdWxlLCBzaWdzZXQsIHRpbWVvdXRfb2JqKTsKIAogZXhpdDoKQEAgLTM3Niw4ICszODUsOSBAQAogICAgIGludCBzaWduYWxudW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxpOnB0aHJlYWRfa2lsbCIsCi0gICAgICAgICZ0aHJlYWRfaWQsICZzaWduYWxudW0pKQorICAgICAgICAmdGhyZWFkX2lkLCAmc2lnbmFsbnVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9wdGhyZWFkX2tpbGxfaW1wbChtb2R1bGUsIHRocmVhZF9pZCwgc2lnbmFsbnVtKTsKIAogZXhpdDoKQEAgLTQyOSw0ICs0MzksNCBAQAogI2lmbmRlZiBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWZhNTk4NDEyYmZiOGQyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjk5MGVmMGQwYmE3MmI2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKaW5kZXggZTI2YWNmMS4uYjI0NzlmZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKQEAgLTI0LDggKzI0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqYXJnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRzcG5hbSIsICZhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNwd2RfZ2V0c3BuYW1faW1wbChtb2R1bGUsIGFyZyk7CiAKIGV4aXQ6CkBAIC02NSw0ICs2Niw0IEBACiAjaWZuZGVmIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCiAgICAgI2RlZmluZSBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFNQV0RfR0VUU1BBTExfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxMGY2ODFiMzZmNTRjMzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA3Y2Q4YWYwYWZkNzdmZTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCmluZGV4IGQ1MjBjMWUuLmQ0ODFjY2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKQEAgLTI3LDggKzI3LDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkZWNpbWFsIiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01OSw4ICs2MCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGlnaXQiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC05Miw4ICs5NCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bnVtZXJpYyIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX251bWVyaWNfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTE4LDggKzEyMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTE0Niw4ICsxNTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpiaWRpcmVjdGlvbmFsIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0xNzUsMTEgKzE4MCwxMyBAQAogICAgIGludCBjaHI7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y29tYmluaW5nIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChzZWxmLCBjaHIpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMDgsMTEgKzIxNSwxMyBAQAogICAgIGludCBjaHI7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfaW1wbChzZWxmLCBjaHIpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMzcsOCArMjQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZWFzdF9hc2lhbl93aWR0aCIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMjY1LDggKzI3NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmRlY29tcG9zaXRpb24iLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uX2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTI5Niw4ICszMDcsOSBAQAogICAgIFB5T2JqZWN0ICppbnB1dDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08hOm5vcm1hbGl6ZSIsCi0gICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCisgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplX2ltcGwoc2VsZiwgZm9ybSwgaW5wdXQpOwogCiBleGl0OgpAQCAtMzI3LDggKzMzOSw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bmFtZSIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25hbWVfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMzU4LDExICszNzEsMTIgQEAKICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoc2VsZiwgbmFtZSwgbmFtZV9sZW5ndGgpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGY4ZGEzM2M2YmM2ZWZjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTMxM2NlMTI5ZGE4N2IyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCmluZGV4IGIxYWY3Y2UuLmZkYTM5MmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCkBAIC0zLDQ0ICszLDQ4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIFB5RG9jX1NUUlZBUih6bGliX2NvbXByZXNzX19kb2NfXywKLSJjb21wcmVzcygkbW9kdWxlLCBieXRlcywgbGV2ZWw9Wl9ERUZBVUxUX0NPTVBSRVNTSU9OLCAvKVxuIgorImNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIC8sIGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTilcbiIKICItLVxuIgogIlxuIgogIlJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuXG4iCiAiXG4iCi0iICBieXRlc1xuIgorIiAgZGF0YVxuIgogIiAgICBCaW5hcnkgZGF0YSB0byBiZSBjb21wcmVzc2VkLlxuIgogIiAgbGV2ZWxcbiIKLSIgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4iKTsKKyIgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOSBvciAtMS4iKTsKIAogI2RlZmluZSBaTElCX0NPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIHpsaWJfY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmJ5dGVzLCBpbnQgbGV2ZWwpOworemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGxldmVsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit6bGliX2NvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIGJ5dGVzID0ge05VTEwsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJsZXZlbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGk6Y29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aTpjb21wcmVzcyIsCi0gICAgICAgICZieXRlcywgJmxldmVsKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZsZXZlbCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NfaW1wbChtb2R1bGUsICZieXRlcywgbGV2ZWwpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzX2ltcGwobW9kdWxlLCAmZGF0YSwgbGV2ZWwpOwogCiBleGl0OgotICAgIC8qIENsZWFudXAgZm9yIGJ5dGVzICovCi0gICAgaWYgKGJ5dGVzLm9iaikKLSAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZieXRlcyk7CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIFB5RG9jX1NUUlZBUih6bGliX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJG1vZHVsZSwgZGF0YSwgd2JpdHM9TUFYX1dCSVRTLCBidWZzaXplPURFRl9CVUZfU0laRSwgLylcbiIKKyJkZWNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIC8sIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUpXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhLlxuIgpAQCAtNTMsMjkgKzU3LDMzIEBACiAiICAgIFRoZSBpbml0aWFsIG91dHB1dCBidWZmZXIgc2l6ZS4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIHpsaWJfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoremxpYl9kZWNvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgIndiaXRzIiwgImJ1ZnNpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpTyY6ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5X3NzaXplX3QgYnVmc2l6ZSA9IERFRl9CVUZfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aU8mOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSwgJndiaXRzLCBzc2l6ZV90X2NvbnZlcnRlciwgJmJ1ZnNpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJndiaXRzLCBzc2l6ZV90X2NvbnZlcnRlciwgJmJ1ZnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzX2ltcGwobW9kdWxlLCAmZGF0YSwgd2JpdHMsIGJ1ZnNpemUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTExMSwxNyArMTE5LDE4IEBACiAiICAgIGNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGxpa2VseSB0byBvY2N1ciBpbiB0aGUgaW5wdXQgZGF0YS4iKTsKIAogI2RlZmluZSBaTElCX0NPTVBSRVNTT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgemxpYl9jb21wcmVzc29ial9fZG9jX199LAorICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9GQVNUQ0FMTCwgemxpYl9jb21wcmVzc29ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9jb21wcmVzc29ial9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBsZXZlbCwgaW50IG1ldGhvZCwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgIGludCBtZW1MZXZlbCwgaW50IHN0cmF0ZWd5LCBQeV9idWZmZXIgKnpkaWN0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit6bGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLCAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLCAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aWlpaWl5Kjpjb21wcmVzc29iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGxldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwogICAgIGludCBtZXRob2QgPSBERUZMQVRFRDsKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CkBAIC0xMjksMTUgKzEzOCwxNyBAQAogICAgIGludCBzdHJhdGVneSA9IFpfREVGQVVMVF9TVFJBVEVHWTsKICAgICBQeV9idWZmZXIgemRpY3QgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aWlpaWl5Kjpjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsICZtZW1MZXZlbCwgJnN0cmF0ZWd5LCAmemRpY3QpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzb2JqX2ltcGwobW9kdWxlLCBsZXZlbCwgbWV0aG9kLCB3Yml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCAmemRpY3QpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHpkaWN0ICovCi0gICAgaWYgKHpkaWN0Lm9iaikKKyAgICBpZiAoemRpY3Qub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmemRpY3QpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTUsMjIgKzE2NiwyNCBAQAogIiAgICBkaWN0aW9uYXJ5IGFzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdCBwcm9kdWNlZCB0aGUgaW5wdXQgZGF0YS4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NPQkpfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgemxpYl9kZWNvbXByZXNzb2JqX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9GQVNUQ0FMTCwgemxpYl9kZWNvbXByZXNzb2JqX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgd2JpdHMsIFB5T2JqZWN0ICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit6bGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndiaXRzIiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsid2JpdHMiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5T2JqZWN0ICp6ZGljdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJndiaXRzLCAmemRpY3QpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2JpdHMsICZ6ZGljdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIHdiaXRzLCB6ZGljdCk7CiAKIGV4aXQ6CkBAIC0yMDIsMjAgKzIxNSwyMiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9Db21wcmVzc19jb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIFB5RG9jX1NUUlZBUih6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgbWF4X2xlbmd0aD0wLCAvKVxuIgorImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIC8sIG1heF9sZW5ndGg9MClcbiIKICItLVxuIgogIlxuIgogIlJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgZGF0YS5cbiIKQEAgLTIzMiwyOCArMjQ3LDMyIEBACiAiQ2FsbCB0aGUgZmx1c2goKSBtZXRob2QgdG8gY2xlYXIgdGhlc2UgYnVmZmVycy4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8TyY6ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8TyY6ZGVjb21wcmVzcyIsCi0gICAgICAgICZkYXRhLCBzc2l6ZV90X2NvbnZlcnRlciwgJm1heF9sZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgc3NpemVfdF9jb252ZXJ0ZXIsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI4Myw4ICszMDIsOSBAQAogICAgIGludCBtb2RlID0gWl9GSU5JU0g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmZsdXNoIiwKLSAgICAgICAgJm1vZGUpKQorICAgICAgICAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0NvbXByZXNzX2ZsdXNoX2ltcGwoc2VsZiwgbW9kZSk7CiAKIGV4aXQ6CkBAIC0zNTcsOCArMzc3LDkgQEAKICAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IERFRl9CVUZfU0laRTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmZsdXNoIiwKLSAgICAgICAgc3NpemVfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICBzc2l6ZV90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0RlY29tcHJlc3NfZmx1c2hfaW1wbChzZWxmLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzkwLDE0ICs0MTEsMTYgQEAKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAxOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmFkbGVyMzIiLAotICAgICAgICAmZGF0YSwgJnZhbHVlKSkKKyAgICAgICAgJmRhdGEsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2FkbGVyMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDI3LDE0ICs0NTAsMTYgQEAKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmNyYzMyIiwKLSAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCisgICAgICAgICZkYXRhLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00NDIsNCArNDY3LDQgQEAKICNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgogICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzcxMWVmMDJkMWQ1Nzc2YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2E0ZTJiZmU3NTA0MjNhMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKaW5kZXggY2JhNDJhNy4uODMxOTc2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwpAQCAtODEsNiArODEsNTQgQEAKICNlbmRpZgogI2RlZmluZSBDTV9TQ0FMRV9ET1dOICgtKENNX1NDQUxFX1VQKzEpLzIpCiAKKy8qIENvbnN0YW50cyBjbWF0aC5pbmYsIGNtYXRoLmluZmosIGNtYXRoLm5hbiwgY21hdGgubmFuai4KKyAgIGNtYXRoLm5hbiBhbmQgY21hdGgubmFuaiBhcmUgZGVmaW5lZCBvbmx5IHdoZW4gZWl0aGVyCisgICBQWV9OT19TSE9SVF9GTE9BVF9SRVBSIGlzICpub3QqIGRlZmluZWQgKHdoaWNoIHNob3VsZCBiZQorICAgdGhlIG1vc3QgY29tbW9uIHNpdHVhdGlvbiBvbiBtYWNoaW5lcyB1c2luZyBhbiBJRUVFIDc1NAorICAgcmVwcmVzZW50YXRpb24pLCBvciBQeV9OQU4gaXMgZGVmaW5lZC4gKi8KKworc3RhdGljIGRvdWJsZQorbV9pbmYodm9pZCkKK3sKKyNpZm5kZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgIHJldHVybiBfUHlfZGdfaW5maW5pdHkoMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9IVUdFX1ZBTDsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlfY29tcGxleAorY19pbmZqKHZvaWQpCit7CisgICAgUHlfY29tcGxleCByOworICAgIHIucmVhbCA9IDAuMDsKKyAgICByLmltYWcgPSBtX2luZigpOworICAgIHJldHVybiByOworfQorCisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisKK3N0YXRpYyBkb3VibGUKK21fbmFuKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX3N0ZG5hbigwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X05BTjsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlfY29tcGxleAorY19uYW5qKHZvaWQpCit7CisgICAgUHlfY29tcGxleCByOworICAgIHIucmVhbCA9IDAuMDsKKyAgICByLmltYWcgPSBtX25hbigpOworICAgIHJldHVybiByOworfQorCisjZW5kaWYKKwogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2FzaW5oX2ltcGwoUHlPYmplY3QgKiwgUHlfY29tcGxleCk7CiBzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hdGFuaF9pbXBsKFB5T2JqZWN0ICosIFB5X2NvbXBsZXgpOwpAQCAtMTIzOSw2ICsxMjg3LDEzIEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsCiAgICAgICAgICAgICAgICAgICAgICAgIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGF1IiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfVEFVKSk7IC8qIDJwaSAqLworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5mIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1faW5mKCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZmoiLCBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KGNfaW5maigpKSk7CisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuaiIsIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoY19uYW5qKCkpKTsKKyNlbmRpZgogCiAgICAgLyogaW5pdGlhbGl6ZSBzcGVjaWFsIHZhbHVlIHRhYmxlcyAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwppbmRleCBmMWZkYTQ4Li4xYzFlNGZiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCisrKyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKQEAgLTExOSw3ICsxMTksNyBAQAogICAgICAgIGhhbmRsZXIgZmFpbHMgaW4gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgKi8KICAgICB7U0lHU0VHViwgMCwgIlNlZ21lbnRhdGlvbiBmYXVsdCIsIH0KIH07Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmYXVsdGhhbmRsZXJfbnNpZ25hbHMgPSBcCitzdGF0aWMgY29uc3Qgc2l6ZV90IGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKICAgICBQeV9BUlJBWV9MRU5HVEgoZmF1bHRoYW5kbGVyX2hhbmRsZXJzKTsKIAogI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICBmZCA9IF9QeUxvbmdfQXNJbnQoZmlsZSk7CiAgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRlciIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgIHJldHVybiBmZDsKICAgICB9CiAKLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtMTg2LDcgKzE4Niw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICBlbHNlIHsKQEAgLTIwMiw4ICsyMDIsOSBAQAogc3RhdGljIFB5VGhyZWFkU3RhdGUqCiBnZXRfdGhyZWFkX3N0YXRlKHZvaWQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKICAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyoganVzdCBpbiBjYXNlIGJ1dCB2ZXJ5IHVubGlrZWx5Li4uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzQsMTEgKzIzNSwxMiBAQAogICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCiAgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKICNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICB0c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKICNlbmRpZgogCi0gICAgaWYgKGFsbF90aHJlYWRzKQotICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGludGVycCwgdHN0YXRlKTsKKyAgICBpZiAoYWxsX3RocmVhZHMpIHsKKyAgICAgICAgKHZvaWQpX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCB0c3RhdGUpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQogICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CkBAIC0yNzIsNyArMjc0LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoYWxsX3RocmVhZHMpIHsKLSAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCB0c3RhdGUpOwogICAgICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4OCw2ICsyOTAsMTkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyKQoreworICAgIGlmICghaGFuZGxlci0+ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgKHZvaWQpc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgKHZvaWQpc2lnbmFsKGhhbmRsZXItPnNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOworI2VuZGlmCit9CisKIAogLyogSGFuZGxlciBmb3IgU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBzaWduYWxzLgogCkBAIC0zMDYsNyArMzIxLDcgQEAKIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcihpbnQgc2lnbnVtKQogewogICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOwotICAgIHVuc2lnbmVkIGludCBpOworICAgIHNpemVfdCBpOwogICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKIApAQCAtMzI0LDEyICszMzksNyBAQAogICAgIH0KIAogICAgIC8qIHJlc3RvcmUgdGhlIHByZXZpb3VzIGhhbmRsZXIgKi8KLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7Ci0jZWxzZQotICAgICh2b2lkKXNpZ25hbChzaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKLSNlbmRpZgotICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoaGFuZGxlcik7CiAKICAgICBQVVRTKGZkLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKICAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKQEAgLTM1MSwyMCArMzYxLDExNyBAQAogICAgIHJhaXNlKHNpZ251bSk7CiB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgTE9ORyBXSU5BUEkKK2ZhdWx0aGFuZGxlcl9leGNfaGFuZGxlcihzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyAqZXhjX2luZm8pCit7CisgICAgY29uc3QgaW50IGZkID0gZmF0YWxfZXJyb3IuZmQ7CisgICAgRFdPUkQgY29kZSA9IGV4Y19pbmZvLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkNvZGU7CisgICAgRFdPUkQgZmxhZ3MgPSBleGNfaW5mby0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25GbGFnczsKKworICAgIC8qIG9ubHkgbG9nIGZhdGFsIGV4Y2VwdGlvbnMgKi8KKyAgICBpZiAoZmxhZ3MgJiBFWENFUFRJT05fTk9OQ09OVElOVUFCTEUpIHsKKyAgICAgICAgLyogY2FsbCB0aGUgbmV4dCBleGNlcHRpb24gaGFuZGxlciAqLworICAgICAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKKyAgICB9CisKKyAgICBQVVRTKGZkLCAiV2luZG93cyBmYXRhbCBleGNlcHRpb246ICIpOworICAgIHN3aXRjaCAoY29kZSkKKyAgICB7CisgICAgLyogb25seSBmb3JtYXQgbW9zdCBjb21tb24gZXJyb3JzICovCisgICAgY2FzZSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTjogUFVUUyhmZCwgImFjY2VzcyB2aW9sYXRpb24iKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fRkxUX0RJVklERV9CWV9aRVJPOiBQVVRTKGZkLCAiZmxvYXQgZGl2aWRlIGJ5IHplcm8iKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fRkxUX09WRVJGTE9XOiBQVVRTKGZkLCAiZmxvYXQgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPOiBQVVRTKGZkLCAiaW50IGRpdmlkZSBieSB6ZXJvIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9PVkVSRkxPVzogUFVUUyhmZCwgImludGVnZXIgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fSU5fUEFHRV9FUlJPUjogUFVUUyhmZCwgInBhZ2UgZXJyb3IiKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1c6IFBVVFMoZmQsICJzdGFjayBvdmVyZmxvdyIpOyBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQVVRTKGZkLCAiY29kZSAiKTsKKyAgICAgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCBjb2RlKTsKKyAgICB9CisgICAgUFVUUyhmZCwgIlxuXG4iKTsKKworICAgIGlmIChjb2RlID09IEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OKSB7CisgICAgICAgIC8qIGRpc2FibGUgc2lnbmFsIGhhbmRsZXIgZm9yIFNJR1NFR1YgKi8KKyAgICAgICAgc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgICAgICBpZiAoaGFuZGxlci0+c2lnbnVtID09IFNJR1NFR1YpIHsKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGhhbmRsZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrKGZkLCBmYXRhbF9lcnJvci5hbGxfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWxfZXJyb3IuaW50ZXJwKTsKKworICAgIC8qIGNhbGwgdGhlIG5leHQgZXhjZXB0aW9uIGhhbmRsZXIgKi8KKyAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKK30KKyNlbmRpZgorCiAvKiBJbnN0YWxsIHRoZSBoYW5kbGVyIGZvciBmYXRhbCBzaWduYWxzLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKS4gKi8KIAorc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2VuYWJsZSh2b2lkKQoreworICAgIHNpemVfdCBpOworCisgICAgaWYgKGZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAxOworCisgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXI7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisjZW5kaWYKKyAgICAgICAgaW50IGVycjsKKworICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyAgICAgICAgYXNzZXJ0KCFoYW5kbGVyLT5lbmFibGVkKTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICBhY3Rpb24uc2FfaGFuZGxlciA9IGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcjsKKyAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCisgICAgICAgICAgIGl0cyBvd24gc2lnbmFsIGhhbmRsZXIgKi8KKyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCisgICAgICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCisgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGVyciA9IHNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZhY3Rpb24sICZoYW5kbGVyLT5wcmV2aW91cyk7CisjZWxzZQorICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKTsKKyAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOworI2VuZGlmCisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDE7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIEFkZFZlY3RvcmVkRXhjZXB0aW9uSGFuZGxlcigxLCBmYXVsdGhhbmRsZXJfZXhjX2hhbmRsZXIpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKLWZhdWx0aGFuZGxlcl9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZmF1bHRoYW5kbGVyX3B5X2VuYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgImFsbF90aHJlYWRzIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOwogICAgIGludCBhbGxfdGhyZWFkcyA9IDE7Ci0gICAgdW5zaWduZWQgaW50IGk7Ci0gICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOwotI2lmZGVmIEhBVkVfU0lHQUNUSU9OCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0jZW5kaWYKLSAgICBpbnQgZXJyOwogICAgIGludCBmZDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAKQEAgLTM4NiwzNyArNDkzLDEwIEBACiAgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKICAgICBmYXRhbF9lcnJvci5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKIAotICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgewotICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKLQotICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7Ci0gICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7Ci0gICAgICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOwotICAgICAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCi0gICAgICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCi0gICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOwotI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKLSAgICAgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjawotICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KLSAgICAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKLSNlbHNlCi0gICAgICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOwotICAgICAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKLSAgICAgICAgfQorICAgIGlmIChmYXVsdGhhbmRsZXJfZW5hYmxlKCkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC00MzAsMTQgKzUxMCw3IEBACiAgICAgICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAwOwogICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CiAgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKLSAgICAgICAgICAgIGlmICghaGFuZGxlci0+ZW5hYmxlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICAgICAgICAgKHZvaWQpc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKLSNlbHNlCi0gICAgICAgICAgICAodm9pZClzaWduYWwoaGFuZGxlci0+c2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihoYW5kbGVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDY5LDcgKzU0Miw2IEBACiB7CiAgICAgUHlMb2NrU3RhdHVzIHN0OwogICAgIGNvbnN0IGNoYXIqIGVycm1zZzsKLSAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50OwogICAgIGludCBvazsKICNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCiAgICAgc2lnc2V0X3Qgc2V0OwpAQCAtNDg5LDEyICs1NjEsOSBAQAogICAgICAgICAvKiBUaW1lb3V0ID0+IGR1bXAgdHJhY2ViYWNrICovCiAgICAgICAgIGFzc2VydChzdCA9PSBQWV9MT0NLX0ZBSUxVUkUpOwogCi0gICAgICAgIC8qIGdldCB0aGUgdGhyZWFkIGhvbGRpbmcgdGhlIEdJTCwgTlVMTCBpZiBubyB0aHJlYWQgaG9sZCB0aGUgR0lMICovCi0gICAgICAgIGN1cnJlbnQgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKLQogICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIChpbnQpdGhyZWFkLmhlYWRlcl9sZW4pOwogCi0gICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh0aHJlYWQuZmQsIHRocmVhZC5pbnRlcnAsIGN1cnJlbnQpOworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBOVUxMKTsKICAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOwogCiAgICAgICAgIGlmICh0aHJlYWQuZXhpdCkKQEAgLTg5NCw3ICs5NjMsNyBAQAogZmF1bHRoYW5kbGVyX3NpZ3NlZ3YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCByZWxlYXNlX2dpbCA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfcmVhZF9udWxsIiwgJnJlbGVhc2VfZ2lsKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9zaWdzZWd2IiwgJnJlbGVhc2VfZ2lsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAocmVsZWFzZV9naWwpIHsKQEAgLTkwNyw2ICs5NzYsNDkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmZGVmIFdJVEhfVEhSRUFECitzdGF0aWMgdm9pZAorZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3RocmVhZCh2b2lkICpwbG9jaykKK3sKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgKmxvY2sgPSAoUHlUaHJlYWRfdHlwZV9sb2NrICopcGxvY2s7CisKKyAgICBQeV9GYXRhbEVycm9yKCJpbiBuZXcgdGhyZWFkIik7CisKKyAgICAvKiBub3RpZnkgdGhlIGNhbGxlciB0aGF0IHdlIGFyZSBkb25lICovCisgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKGxvY2spOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX2NfdGhyZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBsb25nIHRocmVhZDsKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKworICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKKworICAgIGxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKGxvY2sgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sobG9jaywgV0FJVF9MT0NLKTsKKworICAgIHRocmVhZCA9IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQoZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3RocmVhZCwgbG9jayk7CisgICAgaWYgKHRocmVhZCA9PSAtMSkgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sobG9jayk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gc3RhcnQgdGhlIHRocmVhZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiB3YWl0IHVudGlsIHRoZSB0aHJlYWQgY29tcGxldGVzOiBpdCB3aWxsIG5ldmVyIG9jY3VyLCBzaW5jZSBQeV9GYXRhbEVycm9yKCkKKyAgICAgICBleGl0cyB0aGUgcHJvY2VzcyBpbW1lZGlhbHR5LiAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2NrLCBXQUlUX0xPQ0spOworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2NrKTsKKyAgICBQeVRocmVhZF9mcmVlX2xvY2sobG9jayk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QgKgogZmF1bHRoYW5kbGVyX3NpZ2ZwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC05NTEsNiArMTA2Myw4IEBACiB9CiAKICNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisjZGVmaW5lIEZBVUxUSEFORExFUl9TVEFDS19PVkVSRkxPVworCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgogICAgLyogSXNzdWUgIzIzNjU0OiBUdXJuIG9mZiBJQ0MncyB0YWlsIGNhbGwgb3B0aW1pemF0aW9uIGZvciB0aGUKICAgICAqIHN0YWNrX292ZXJmbG93IGdlbmVyYXRvci4gSUNDIHR1cm5zIHRoZSByZWN1cnNpdmUgdGFpbCBjYWxsIGludG8KQEAgLTk1OCwxMiArMTA3MiwxMiBAQAogIyAgcHJhZ21hIGludGVsIG9wdGltaXphdGlvbl9sZXZlbCAwCiAjZW5kaWYKIHN0YXRpYwotUHlfdWludHB0cl90Ci1zdGFja19vdmVyZmxvdyhQeV91aW50cHRyX3QgbWluX3NwLCBQeV91aW50cHRyX3QgbWF4X3NwLCBzaXplX3QgKmRlcHRoKQordWludHB0cl90CitzdGFja19vdmVyZmxvdyh1aW50cHRyX3QgbWluX3NwLCB1aW50cHRyX3QgbWF4X3NwLCBzaXplX3QgKmRlcHRoKQogewogICAgIC8qIGFsbG9jYXRlIDQwOTYgYnl0ZXMgb24gdGhlIHN0YWNrIGF0IGVhY2ggY2FsbCAqLwogICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzQwOTZdOwotICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmJ1ZmZlcjsKKyAgICB1aW50cHRyX3Qgc3AgPSAodWludHB0cl90KSZidWZmZXI7CiAgICAgKmRlcHRoICs9IDE7CiAgICAgaWYgKHNwIDwgbWluX3NwIHx8IG1heF9zcCA8IHNwKQogICAgICAgICByZXR1cm4gc3A7CkBAIC05NzYsOCArMTA5MCw4IEBACiBmYXVsdGhhbmRsZXJfc3RhY2tfb3ZlcmZsb3coUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgc2l6ZV90IGRlcHRoLCBzaXplOwotICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmRlcHRoOwotICAgIFB5X3VpbnRwdHJfdCBzdG9wOworICAgIHVpbnRwdHJfdCBzcCA9ICh1aW50cHRyX3QpJmRlcHRoOworICAgIHVpbnRwdHJfdCBzdG9wOwogCiAgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGRlcHRoID0gMDsKQEAgLTk5NCw3ICsxMTA4LDcgQEAKICAgICAgICAgc2l6ZSwgZGVwdGgpOwogICAgIHJldHVybiBOVUxMOwogfQotI2VuZGlmCisjZW5kaWYgICAvKiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pICovCiAKIAogc3RhdGljIGludApAQCAtMTAxNywxMiArMTEzMSwyNSBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9yYWlzZV9leGNlcHRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBjb2RlLCBmbGFncyA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJfEk6X3JhaXNlX2V4Y2VwdGlvbiIsICZjb2RlLCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CisgICAgUmFpc2VFeGNlcHRpb24oY29kZSwgZmxhZ3MsIDAsIE5VTEwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogImZhdWx0aGFuZGxlciBtb2R1bGUuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewogICAgIHsiZW5hYmxlIiwKLSAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3B5X2VuYWJsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSk6ICIKICAgICAgICAgICAgICAgICJlbmFibGUgdGhlIGZhdWx0IGhhbmRsZXIiKX0sCiAgICAgeyJkaXNhYmxlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9kaXNhYmxlX3B5LCBNRVRIX05PQVJHUywKQEAgLTEwNjUsMTYgKzExOTIsMjUgQEAKICAgICAgICAgICAgICAgICJhIFNJR1NFR1Ygb3IgU0lHQlVTIHNpZ25hbCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIil9LAogICAgIHsiX3NpZ3NlZ3YiLCBmYXVsdGhhbmRsZXJfc2lnc2VndiwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdzZWd2KHJlbGVhc2VfZ2lsPUZhbHNlKTogcmFpc2UgYSBTSUdTRUdWIHNpZ25hbCIpfSwKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHsiX2ZhdGFsX2Vycm9yX2NfdGhyZWFkIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX2NfdGhyZWFkLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJmYXRhbF9lcnJvcl9jX3RocmVhZCgpOiAiCisgICAgICAgICAgICAgICAiY2FsbCBQeV9GYXRhbEVycm9yKCkgaW4gYSBuZXcgQyB0aHJlYWQuIil9LAorI2VuZGlmCiAgICAgeyJfc2lnYWJydCIsIGZhdWx0aGFuZGxlcl9zaWdhYnJ0LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnYWJydCgpOiByYWlzZSBhIFNJR0FCUlQgc2lnbmFsIil9LAogICAgIHsiX3NpZ2ZwZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnZnBlLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnZnBlKCk6IHJhaXNlIGEgU0lHRlBFIHNpZ25hbCIpfSwKICAgICB7Il9mYXRhbF9lcnJvciIsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9weSwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoIl9mYXRhbF9lcnJvcihtZXNzYWdlKTogY2FsbCBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpIil9LAotI2lmIGRlZmluZWQoSEFWRV9TSUdBTFRTVEFDSykgJiYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikKKyNpZmRlZiBGQVVMVEhBTkRMRVJfU1RBQ0tfT1ZFUkZMT1cKICAgICB7Il9zdGFja19vdmVyZmxvdyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc3RhY2tfb3ZlcmZsb3csIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zdGFja19vdmVyZmxvdygpOiByZWN1cnNpdmUgY2FsbCB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93Iil9LAogI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsiX3JhaXNlX2V4Y2VwdGlvbiIsIGZhdWx0aGFuZGxlcl9yYWlzZV9leGNlcHRpb24sIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJyYWlzZV9leGNlcHRpb24oY29kZSwgZmxhZ3M9MCk6IENhbGwgUmFpc2VFeGNlcHRpb24oY29kZSwgZmxhZ3MpLiIpfSwKKyNlbmRpZgogICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwOTMsNyArMTIyOSwzMyBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9mYXVsdGhhbmRsZXIodm9pZCkKIHsKLSAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVfZGVmKTsKKyAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmbW9kdWxlX2RlZik7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBBZGQgY29uc3RhbnRzIGZvciB1bml0IHRlc3RzICovCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIFJhaXNlRXhjZXB0aW9uKCkgY29kZXMgKHByZWZpeGVkIGJ5IGFuIHVuZGVyc2NvcmUpICovCisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBSYWlzZUV4Y2VwdGlvbigpIGZsYWdzIChwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlKSAqLworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9OT05DT05USU5VQUJMRSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKworICAgIHJldHVybiBtOwogfQogCiAvKiBDYWxsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBpZiB0aGUgUFlUSE9ORkFVTFRIQU5ETEVSIGVudmlyb25tZW50IHZhcmlhYmxlCkBAIC0xMTI4LDcgKzEyOTAsNyBAQAogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobW9kdWxlLCAmUHlJZF9lbmFibGUsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCBOVUxMKTsKICAgICBQeV9ERUNSRUYobW9kdWxlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCBjYjcyMjJkLi43NTQzNDhlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIiAgICAgICAgLyogZm9yIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCAqLworI2luY2x1ZGUgInB5ZHRyYWNlLmgiCiAjaW5jbHVkZSAicHl0aW1lLmgiICAgICAgICAgICAgIC8qIGZvciBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKi8KIAogLyogR2V0IGFuIG9iamVjdCdzIEdDIGhlYWQgKi8KQEAgLTczOCw3ICs3MzksNyBAQAogfQogCiBzdGF0aWMgdm9pZAotZGVidWdfY3ljbGUoY2hhciAqbXNnLCBQeU9iamVjdCAqb3ApCitkZWJ1Z19jeWNsZShjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImdjOiAlcyA8JXMgJXA+XG4iLAogICAgICAgICAgICAgICAgICAgICAgICBtc2csIFB5X1RZUEUob3ApLT50cF9uYW1lLCBvcCk7CkBAIC04OTIsNiArODkzLDcgQEAKICAgICAodm9pZClQeUxpc3RfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5RGljdF9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHMoKTsKIH0KIAogLyogVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbi4gIFJlYWQgdGhpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUKQEAgLTkyNCw2ICs5MjYsOSBAQAogICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiXG4iKTsKICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCgpKQorICAgICAgICBQeURUcmFjZV9HQ19TVEFSVChnZW5lcmF0aW9uKTsKKwogICAgIC8qIHVwZGF0ZSBjb2xsZWN0aW9uIGFuZCBhbGxvY2F0aW9uIGNvdW50ZXJzICovCiAgICAgaWYgKGdlbmVyYXRpb24rMSA8IE5VTV9HRU5FUkFUSU9OUykKICAgICAgICAgZ2VuZXJhdGlvbnNbZ2VuZXJhdGlvbisxXS5jb3VudCArPSAxOwpAQCAtMTA2OCw2ICsxMDczLDEwIEBACiAgICAgc3RhdHMtPmNvbGxlY3Rpb25zKys7CiAgICAgc3RhdHMtPmNvbGxlY3RlZCArPSBtOwogICAgIHN0YXRzLT51bmNvbGxlY3RhYmxlICs9IG47CisKKyAgICBpZiAoUHlEVHJhY2VfR0NfRE9ORV9FTkFCTEVEKCkpCisgICAgICAgIFB5RFRyYWNlX0dDX0RPTkUobittKTsKKwogICAgIHJldHVybiBuK207CiB9CiAKQEAgLTE1ODgsNiArMTU5NywxNSBAQAogfQogCiBQeV9zc2l6ZV90CitfUHlHQ19Db2xsZWN0SWZFbmFibGVkKHZvaWQpCit7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBQeUdDX0NvbGxlY3QoKTsKK30KKworUHlfc3NpemVfdAogX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKQogewogICAgIFB5X3NzaXplX3QgbjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0YWRkcmluZm8uYyBiL01vZHVsZXMvZ2V0YWRkcmluZm8uYwppbmRleCBkODE2N2VhLi5iNmZiNTNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldGFkZHJpbmZvLmMKKysrIGIvTW9kdWxlcy9nZXRhZGRyaW5mby5jCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqLCBpbnQpOwogc3RhdGljIGludCBzdHJfaXNudW1iZXIoY29uc3QgY2hhciAqKTsKIAotc3RhdGljIGNoYXIgKmFpX2Vycmxpc3RbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYWlfZXJybGlzdFtdID0gewogICAgICJzdWNjZXNzLiIsCiAgICAgImFkZHJlc3MgZmFtaWx5IGZvciBob3N0bmFtZSBub3Qgc3VwcG9ydGVkLiIsICAgICAgIC8qIEVBSV9BRERSRkFNSUxZICovCiAgICAgInRlbXBvcmFyeSBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4iLCAgICAgICAgICAgIC8qIEVBSV9BR0FJTiAgICAgICovCkBAIC0xOTgsNyArMTk4LDcgQEAKIAogI2RlZmluZSBFUlIoZXJyKSB7IGVycm9yID0gKGVycik7IGdvdG8gYmFkOyB9CiAKLWNoYXIgKgorY29uc3QgY2hhciAqCiBnYWlfc3RyZXJyb3IoaW50IGVjb2RlKQogewogICAgIGlmIChlY29kZSA8IDAgfHwgZWNvZGUgPiBFQUlfTUFYKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRwYXRoLmMgYi9Nb2R1bGVzL2dldHBhdGguYwppbmRleCBjNDM4YjhlLi4wZjkxNjQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldHBhdGguYworKysgYi9Nb2R1bGVzL2dldHBhdGguYwpAQCAtNDYwLDggKzQ2MCw4IEBACiB7CiAgICAgZXh0ZXJuIHdjaGFyX3QgKlB5X0dldFByb2dyYW1OYW1lKHZvaWQpOwogCi0gICAgc3RhdGljIHdjaGFyX3QgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKLSAgICBzdGF0aWMgd2NoYXJfdCBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKKyAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCBkZWxpbWl0ZXJbMl0gPSB7REVMSU0sICdcMCd9OworICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90IHNlcGFyYXRvclsyXSA9IHtTRVAsICdcMCd9OwogICAgIGNoYXIgKl9ydHB5cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOyAvKiBYWFggdXNlIHdpZGUgdmVyc2lvbiBvbiBXaW5kb3dzICovCiAgICAgd2NoYXJfdCAqcnRweXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dycG1vZHVsZS5jIGIvTW9kdWxlcy9ncnBtb2R1bGUuYwppbmRleCAzYTEzNGEwLi45NDM3YWU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dycG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKQEAgLTEwMCwxNCArMTAwLDI1IEBACiAgICAgZ2lkX3QgZ2lkOwogICAgIHN0cnVjdCBncm91cCAqcDsKIAotICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcoaWQpOwotICAgIGlmICghcHlfaW50X2lkKQorICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIoaWQsICZnaWQpKSB7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKHB5X2ludF9pZCwgJmdpZCkpIHsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncm91cCBpZCBtdXN0IGJlIGludCwgbm90ICUuMjAwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQtPm9iX3R5cGUtPnRwX25hbWUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcHlfaW50X2lkID0gUHlOdW1iZXJfTG9uZyhpZCk7CisgICAgICAgIGlmICghcHlfaW50X2lkKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIocHlfaW50X2lkLCAmZ2lkKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHB5X2ludF9pZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocHlfaW50X2lkKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihweV9pbnRfaWQpOwogCiAgICAgaWYgKChwID0gZ2V0Z3JnaWQoZ2lkKSkgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZ2lkX29iaiA9IF9QeUxvbmdfRnJvbUdpZChnaWQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9oYXNobGliLmggYi9Nb2R1bGVzL2hhc2hsaWIuaAppbmRleCAzNTgwNDUzLi41MzBiNmIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2hsaWIuaAorKysgYi9Nb2R1bGVzL2hhc2hsaWIuaApAQCAtMiwzMCArMiwzMyBAQAogCiAvKgogICogR2l2ZW4gYSBQeU9iamVjdCogb2JqLCBmaWxsIGluIHRoZSBQeV9idWZmZXIqIHZpZXdwIHdpdGggdGhlIHJlc3VsdAotICogb2YgUHlPYmplY3RfR2V0QnVmZmVyLiAgU2V0cyBhbiBleGNlcHRpb24gYW5kIGlzc3VlcyBhIHJldHVybiBOVUxMCi0gKiBvbiBhbnkgZXJyb3JzLgorICogb2YgUHlPYmplY3RfR2V0QnVmZmVyLiAgU2V0cyBhbiBleGNlcHRpb24gYW5kIGlzc3VlcyB0aGUgZXJyYWN0aW9uCisgKiBvbiBhbnkgZXJyb3JzLCBlLmcuICdyZXR1cm4gTlVMTCcgb3IgJ2dvdG8gZXJyb3InLgogICovCi0jZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCB2aWV3cCkgZG8geyBcCisjZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihvYmosIHZpZXdwLCBlcnJhY3Rpb24pIGRvIHsgXAogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKChvYmopKSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuaWNvZGUtb2JqZWN0cyBtdXN0IGJlIGVuY29kZWQgYmVmb3JlIGhhc2hpbmciKTtcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAogICAgICAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKChvYmopKSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgQVBJIHJlcXVpcmVkIik7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCiAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoKG9iaiksICh2aWV3cCksIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsgXAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKICAgICAgICAgaWYgKCh2aWV3cCktPm5kaW0gPiAxKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uIik7IFwKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKHZpZXdwKSk7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCi0gICAgfSB3aGlsZSgwKTsKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosIHZpZXdwKSBcCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKG9iaiwgdmlld3AsIHJldHVybiBOVUxMKQogCiAvKgogICogSGVscGVyIGNvZGUgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvIHRoZSBoYXNoIG9iamVjdCB3aGVuIHRoZSBHSUwgaXMKZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaHRhYmxlLmMgYi9Nb2R1bGVzL2hhc2h0YWJsZS5jCmluZGV4IGZkZGRjMTkuLjA1NDdhNmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaGFzaHRhYmxlLmMKKysrIGIvTW9kdWxlcy9oYXNodGFibGUuYwpAQCAtMSw1ICsxLDUgQEAKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFzaCB0YWJsZSAoX1B5X2hhc2h0YWJsZV90KSBpcyBiYXNlZCBvbiB0aGUgY2Z1aGFzaAotICAgcHJvamVjdDoKKy8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFzaCB0YWJsZSAoX1B5X2hhc2h0YWJsZV90KSBpcyBiYXNlZCBvbiB0aGUKKyAgIGNmdWhhc2ggcHJvamVjdDoKICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGliY2Z1LwogCiAgICBDb3B5cmlnaHQgb2YgY2Z1aGFzaDoKQEAgLTU5LDcgKzU5LDIxIEBACiAjZGVmaW5lIEVOVFJZX05FWFQoRU5UUlkpIFwKICAgICAgICAgKChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKilfUHlfU0xJU1RfSVRFTV9ORVhUKEVOVFJZKSkKICNkZWZpbmUgSEFTSFRBQkxFX0lURU1fU0laRShIVCkgXAotICAgICAgICAoc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkgKyAoSFQpLT5kYXRhX3NpemUpCisgICAgICAgIChzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSArIChIVCktPmtleV9zaXplICsgKEhUKS0+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+PSAyCi0gICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCBpKzEpKSA9PSBDT0xPTikgfHwKLSAgICAgICAgICAgIChUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBET1VCTEVTVEFSKSkpIHsKLSAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5IG9yIGRpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gNCAmJiBUWVBFKENISUxEKHRyZWUsIGkrMykpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyh0cmVlLCAmaSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkuICovCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUoCi0gICAgICAgICAgICAgICAgICAgIHRyZWUsCi0gICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9kaWN0X2VsZW1lbnRfaW5jLAotICAgICAgICAgICAgICAgICAgICAmaSwKLSAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKiBTZXQgZGlzcGxheSBvciBzZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gMiAmJiBUWVBFKENISUxEKHRyZWUsIGkgKyAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIC8qIFNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIFNldCBkaXNwbGF5LiAqLwotICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChuY2ggLSBpID4gMCkgewotICAgICAgICBlcnJfc3RyaW5nKCJJbGxlZ2FsIHRyYWlsaW5nIG5vZGVzIGZvciBkaWN0b3JzZXRtYWtlci4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXZhbF9pbnB1dChub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV2YWxfaW5wdXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCAtIDEpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCAobmNoIC0gMSkpOyArK3BvcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgcG9zKSwgTkVXTElORSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbm9kZShub2RlICp0cmVlKQotewotICAgIGludCAgIG5jaCAgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG51bS4gY2hpbGRyZW4gb24gY3VycmVudCBub2RlICAqLwotICAgIGludCAgIHJlcyAgPSAxOyAgICAgICAgICAgICAgICAgICAgIC8qIHJlc3VsdCB2YWx1ZSAgICAgICAgICAgICAgICAgICAqLwotICAgIG5vZGUqIG5leHQgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gcHJvY2VzcyBhZnRlciB0aGlzIG9uZSAqLwotCi0gICAgd2hpbGUgKHJlcyAmJiAodHJlZSAhPSAwKSkgewotICAgICAgICBuY2ggID0gTkNIKHRyZWUpOwotICAgICAgICBuZXh0ID0gMDsKLSAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIERlZmluaXRpb24gbm9kZXMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIGFzeW5jX2Z1bmNkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19mdW5jZGVmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhc3luY19zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZnVuY2RlZjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Z1bmNkZWYodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHdpdGhfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY2xhc3NkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jbGFzcyh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZGVjb3JhdGVkOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVjb3JhdGVkKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogICJUcml2aWFsIiBwYXJzZSB0cmVlIG5vZGVzLgotICAgICAgICAgICAgICogIChXaHkgZGlkIEkgY2FsbCB0aGVzZSB0cml2aWFsPykKLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2Ugc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNtYWxsX3N0bXQ6Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIGV4cHJfc3RtdCB8IGRlbF9zdG10IHwgcGFzc19zdG10IHwgZmxvd19zdG10IHwKLSAgICAgICAgICAgICAqICBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgbm9ubG9jYWxfc3RtdCB8IGFzc2VydF9zdG10Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NtYWxsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZsb3dfc3RtdDoKLSAgICAgICAgICAgIHJlcyAgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImZsb3dfc3RtdCIpCi0gICAgICAgICAgICAgICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gYnJlYWtfc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBjb250aW51ZV9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHlpZWxkX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmV0dXJuX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmFpc2Vfc3RtdCkpKTsKLSAgICAgICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICAgICAgbmV4dCA9IENISUxEKHRyZWUsIDApOwotICAgICAgICAgICAgZWxzZSBpZiAobmNoID09IDEpCi0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBmbG93X3N0bXQgdHlwZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBDb21wb3VuZCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBzaW1wbGVfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NpbXBsZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wb3VuZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcG91bmRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBGdW5kYW1lbnRhbCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBleHByX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGRlbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHBhc3Nfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAicGFzcyIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInBhc3MiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGJyZWFrX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImJyZWFrIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiYnJlYWsiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbnRpbnVlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImNvbnRpbnVlIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiY29udGludWUiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJldHVybl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcmV0dXJuX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJhaXNlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9yYWlzZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfbmFtZToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9uYW1lKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfZnJvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9mcm9tKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBnbG9iYWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2dsb2JhbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBub25sb2NhbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9ubG9jYWxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXNzZXJ0X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3NlcnRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaWZfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2lmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB3aGlsZV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfd2hpbGUodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZvcl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZm9yKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB0cnlfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyeSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugc3VpdGU6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdWl0ZSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBFeHByZXNzaW9uIG5vZGVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSB0ZXN0bGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIG5vdF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm90X3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbXBhcmlzb246Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wYXJpc29uKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBleHBybGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHJsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wX29wOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9vcCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHhvcl9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeG9yX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNoaWZ0X2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaGlmdF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhcml0aF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXJpdGhfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVybToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlcm0odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZhY3RvcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZhY3Rvcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgcG93ZXI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9wb3dlcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXRvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2F0b20odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAvKiBIb3BlZnVsbHkgbmV2ZXIgcmVhY2hlZCEgKi8KLSAgICAgICAgICAgIGVycl9zdHJpbmcoInVucmVjb2duaXplZCBub2RlIHR5cGUiKTsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB0cmVlID0gbmV4dDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJfdHJlZShub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSB2YWxpZGF0ZV9ldmFsX2lucHV0KHRyZWUpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImNvdWxkIG5vdCB2YWxpZGF0ZSBleHByZXNzaW9uIHR1cGxlIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGZpbGVfaW5wdXQ6Ci0gKiAgICAgIChORVdMSU5FIHwgc3RtdCkqIEVORE1BUktFUgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9maWxlX2lucHV0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKSAtIDE7Ci0gICAgaW50IHJlcyA9ICgobmNoID49IDApCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2gpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAoaiA9IDA7IHJlcyAmJiAoaiA8IG5jaCk7ICsraikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBqKSkgPT0gc3RtdCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQoQ0hJTEQodHJlZSwgaikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIGopKTsKLSAgICB9Ci0gICAgLyogIFRoaXMgc3RheXMgaW4gdG8gcHJldmVudCBhbnkgaW50ZXJuYWwgZmFpbHVyZXMgZnJvbSBnZXR0aW5nIHRvIHRoZQotICAgICAqICB1c2VyLiAgSG9wZWZ1bGx5LCB0aGlzIHdvbid0IGJlIG5lZWRlZC4gIElmIGEgdXNlciByZXBvcnRzIGdldHRpbmcKLSAgICAgKiAgdGhpcywgd2UgaGF2ZSBzb21lIGRlYnVnZ2luZyB0byBkby4KLSAgICAgKi8KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiVkFMSURBVElPTiBGQUlMVVJFOiByZXBvcnQgdGhpcyB0byB0aGUgbWFpbnRhaW5lciEiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZW5jb2RpbmdfZGVjbChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICgobmNoID09IDEpCi0gICAgICAgICYmIHZhbGlkYXRlX2ZpbGVfaW5wdXQoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHBpY2tsZV9jb25zdHJ1Y3RvciA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCA1YTIzODI0Li45ZWU5MDVmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC0zMiw2ICszMiwxMiBAQAogI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKICNlbmRpZgogCisvKiBPbiBhbmRyb2lkIEFQSSBsZXZlbCAyMSwgJ0FUX0VBQ0NFU1MnIGlzIG5vdCBkZWNsYXJlZCBhbHRob3VnaAorICogSEFWRV9GQUNDRVNTQVQgaXMgZGVmaW5lZC4gKi8KKyNpZmRlZiBfX0FORFJPSURfXworI3VuZGVmIEhBVkVfRkFDQ0VTU0FUCisjZW5kaWYKKwogI2luY2x1ZGUgPHN0ZGlvLmg+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+b2JqZWN0KTsKKyAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7CisgICAgcmV0dXJuIHY7CiB9CiAKIApAQCAtMzgyMSw3ICszNjczLDcgQEAKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXI7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aF93Y2hhcjsKIAogICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOwogICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCkBAIC0zODgxLDEwICszNzMzLDcgQEAKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMzkxMCw3ICszNzU5LDggQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYmRjYmQxMDU5Y2VlZjRjIGlucHV0PTdlYWNhZGM0MGFjYmRhNmJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXIsICptb3VudHBhdGg9TlVMTDsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoX3djaGFyOworICAgIHdjaGFyX3QgKm1vdW50cGF0aD1OVUxMOwogICAgIHNpemVfdCBidWZsZW47CiAgICAgQk9PTCByZXQ7CiAKQEAgLTM5ODEsMTAgKzM4MzEsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLT53aWRlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeUEocGF0aC0+bmFycm93LCBOVUxMKTsKKyAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgtPndpZGUsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKQEAgLTQwMDQsNyArMzg1MSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQxMDgsNyArMzk1NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW50ZXJuYWxfcmVuYW1lKHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkLCBpbnQgaXNfcmVwbGFjZSkKIHsKLSAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBpc19yZXBsYWNlID8gInJlcGxhY2UiIDogInJlbmFtZSI7CiAgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC00MTI3LDMxICszOTc0LDI4IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy0+d2lkZSwgZHN0LT53aWRlLCBmbGFncyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3csIGZsYWdzKTsKKyAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMtPndpZGUsIGRzdC0+d2lkZSwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKIAogI2Vsc2UKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9SRU5BTUVBVAogICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQogICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKKyAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkKQEAgLTQyMzIsMTEgKzQwNzYsOCBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeUEocGF0aC0+bmFycm93KTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgcmVzdWx0ID0gIVJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDI4OCw3ICs0MTI5LDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTBmYzQzN2RkNGYzM2EwIGlucHV0PTg2YTU4NTU0YmE2MDk0YWZdKi8KIHsKICAgICBsb25nIHJlc3VsdDsKLSAgICBjaGFyICpieXRlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZCk7CisgICAgY29uc3QgY2hhciAqYnl0ZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmQpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBzeXN0ZW0oYnl0ZXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC00MzgyLDExICs0MjIzLDggQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICByZXN1bHQgPSAhUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDU2OCw3ICs0NDA2LDcgQEAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQogCiBzdGF0aWMgaW50Ci11dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCit1dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAjaWZkZWYgSEFWRV9VVElNRU5TQVQKICAgICBpbnQgZmxhZ3MgPSBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVzsKQEAgLTQ2MTAsMTQgKzQ0NDgsMTQgQEAKICAgICAjZGVmaW5lIFBBVEhfVVRJTUVfSEFWRV9GRCAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKQorIyAgZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNlbmRpZgogCi0jZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAotICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQotCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKIAogc3RhdGljIGludAotdXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXQsIGNoYXIgKnBhdGgpCit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDYzMyw3ICs0NDcxLDcgQEAKICNpZm5kZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgaW50Ci11dGltZV9kZWZhdWx0KHV0aW1lX3QgKnV0LCBjaGFyICpwYXRoKQordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDc3Niw3ICs0NjE0LDcgQEAKICAgICAgICAgdXRpbWUubm93ID0gMTsKICAgICB9CiAKLSNpZiAhVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmICFkZWZpbmVkKFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCkBAIC00Nzk3LDE0ICs0NjM1LDkgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLT5uYXJyb3csIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgtPndpZGUsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTQ4MzAsNyArNDY2Myw3IEBACiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQogICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgtPm5hcnJvdyk7CiAgICAgZWxzZQpAQCAtNDg5MCw5ICs0NzIzLDE1IEBACiAgICAgcmV0dXJuIE5VTEw7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKKyNpZiBkZWZpbmVkKEhBVkVfV0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKKyNkZWZpbmUgRVhFQ1ZfQ0hBUiB3Y2hhcl90CisjZWxzZQorI2RlZmluZSBFWEVDVl9DSEFSIGNoYXIKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfU1BBV05WKQogc3RhdGljIHZvaWQKLWZyZWVfc3RyaW5nX2FycmF5KGNoYXIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKK2ZyZWVfc3RyaW5nX2FycmF5KEVYRUNWX0NIQVIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCkBAIC00OTAwLDQwICs0NzM5LDQ3IEBACiAgICAgUHlNZW1fREVMKGFycmF5KTsKIH0KIAotc3RhdGljCi1pbnQgZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgY2hhcioqb3V0KQorc3RhdGljIGludAorZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgRVhFQ1ZfQ0hBUiAqKm91dCkKIHsKLSAgICBQeU9iamVjdCAqYnl0ZXM7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpCisgICAgUHlPYmplY3QgKnViOworICAgIGludCByZXN1bHQgPSAwOworI2lmIGRlZmluZWQoSEFWRV9XRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKQorICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihvLCAmdWIpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplKzEpOwotICAgIGlmICghKm91dCkgeworICAgICpvdXQgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh1YiwgJnNpemUpOworICAgIGlmICgqb3V0KQorICAgICAgICByZXN1bHQgPSAxOworI2Vsc2UKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmdWIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh1Yik7CisgICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplICsgMSk7CisgICAgaWYgKCpvdXQpIHsKKyAgICAgICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHViKSwgc2l6ZSArIDEpOworICAgICAgICByZXN1bHQgPSAxOworICAgIH0gZWxzZQogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQXNTdHJpbmcoYnl0ZXMpLCBzaXplKzEpOwotICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodWIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQotc3RhdGljIGNoYXIqKgorc3RhdGljIEVYRUNWX0NIQVIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKLSAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGksIHBvcywgZW52YzsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqdmFscz1OVUxMOwotICAgIFB5T2JqZWN0ICprZXksICp2YWwsICprZXkyLCAqdmFsMjsKLSAgICBjaGFyICpwLCAqaywgKnY7Ci0gICAgc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsLCAqa2V5MiwgKnZhbDIsICprZXl2YWw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAKICAgICBpID0gUHlNYXBwaW5nX1NpemUoZW52KTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGVudmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBpICsgMSk7CisgICAgZW52bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosIGkgKyAxKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDk1NywyOCArNDgwMywzNSBAQAogICAgICAgICBpZiAoIWtleSB8fCAhdmFsKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAotICAgICAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKGtleSwgJmtleTIpID09IDApCisjaWYgZGVmaW5lZChIQVZFX1dFWEVDVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihrZXksICZrZXkyKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodmFsLCAmdmFsMikgPT0gMCkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIodmFsLCAmdmFsMikpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkyKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLQotICAgICAgICBrID0gUHlCeXRlc19Bc1N0cmluZyhrZXkyKTsKLSAgICAgICAgdiA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsMik7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoa2V5MikgKyBQeUJ5dGVzX0dFVF9TSVpFKHZhbDIpICsgMjsKLQotICAgICAgICBwID0gUHlNZW1fTkVXKGNoYXIsIGxlbik7Ci0gICAgICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGtleXZhbCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIGtleTIsIHZhbDIpOworI2Vsc2UKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoa2V5LCAma2V5MikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcih2YWwsICZ2YWwyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleTIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbDIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBQeU9TX3NucHJpbnRmKHAsIGxlbiwgIiVzPSVzIiwgaywgdik7Ci0gICAgICAgIGVudmxpc3RbZW52YysrXSA9IHA7CisgICAgICAgIGtleXZhbCA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBQeUJ5dGVzX0FTX1NUUklORyhrZXkyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHZhbDIpKTsKKyNlbmRpZgogICAgICAgICBQeV9ERUNSRUYoa2V5Mik7CiAgICAgICAgIFB5X0RFQ1JFRih2YWwyKTsKKyAgICAgICAgaWYgKCFrZXl2YWwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChrZXl2YWwsICZlbnZsaXN0W2VudmMrK10pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKICAgICB9CiAgICAgUHlfREVDUkVGKHZhbHMpOwogICAgIFB5X0RFQ1JFRihrZXlzKTsKQEAgLTQ5OTAsMTcgKzQ4NDMsMTUgQEAKIGVycm9yOgogICAgIFB5X1hERUNSRUYoa2V5cyk7CiAgICAgUHlfWERFQ1JFRih2YWxzKTsKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyKioKK3N0YXRpYyBFWEVDVl9DSEFSKioKIHBhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCiB7CiAgICAgaW50IGk7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgKmFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDIyLDYgKzQ4NzMsNyBAQAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZgogCiAKQEAgLTUwMjksNyArNDg4MSw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBvcy5leGVjdgogCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUwMzksMTcgKzQ4OTEsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMWRjMzRkZWViNWIwMDQgaW5wdXQ9OTYwNDE1NTk5MjVlNTIyOV0qLworb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiNTJmZWMzNGNkMGRhZmQgaW5wdXQ9OWJhYzMxZWZhZTA3ZGFjN10qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYzsKIAogICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CkBAIC01MDY2LDcgKzQ5MTYsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZXhlY3YocGF0aF9jaGFyLCBhcmd2bGlzdCk7CisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICBfd2V4ZWN2KHBhdGgtPndpZGUsIGFyZ3ZsaXN0KTsKKyNlbHNlCisgICAgZXhlY3YocGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCkBAIC01MDkyLDggKzQ5NDYsOCBAQAogb3NfZXhlY3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjlmYThlNGRhOGJkZTU4IGlucHV0PTYyNjgwNGZhMDkyNjA2ZDldKi8KIHsKLSAgICBjaGFyICoqYXJndmxpc3QgPSBOVUxMOwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdCA9IE5VTEw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQpAQCAtNTEyNiwzMCArNDk4MCwzMyBAQAogICAgICAgICBmZXhlY3ZlKHBhdGgtPmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CiAgICAgZWxzZQogI2VuZGlmCisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICAgICAgX3dleGVjdmUocGF0aC0+d2lkZSwgYXJndmxpc3QsIGVudmxpc3QpOworI2Vsc2UKICAgICAgICAgZXhlY3ZlKHBhdGgtPm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworI2VuZGlmCiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAogICAgIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgIGZhaWw6CiAgICAgaWYgKGFyZ3ZsaXN0KQogICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCiAKIAotI2lmZGVmIEhBVkVfU1BBV05WCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCiAvKltjbGluaWMgaW5wdXRdCiBvcy5zcGF3bnYKIAogICAgIG1vZGU6IGludAogICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUxNTksMjAgKzUwMTYsMTggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzQyN2MwY2U0MGYxMDYzOCBpbnB1dD0wNDJjOTFkZmMxZTZkZWJjXSovCitvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MWNkMDM3YTlkOTZiODE2IGlucHV0PTQzMjI0MjQyMzAzMjkxYmVdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAKICAgICAvKiBzcGF3bnYgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01MTg3LDcgKzUwNDIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KQEAgLTUyMDcsNyArNTA2MiwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aF9jaGFyLCBhcmd2bGlzdCk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIEhBVkVfV1NQQVdOVgorICAgIHNwYXdudmFsID0gX3dzcGF3bnYobW9kZSwgcGF0aC0+d2lkZSwgYXJndmxpc3QpOworI2Vsc2UKKyAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CkBAIC01MjI0LDcgKzUwODUsNyBAQAogCiAgICAgbW9kZTogaW50CiAgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTIzNiwxNiArNTA5NywxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCitvc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYmNmYTVmN2JhMmY0MjE5IGlucHV0PTAyMzYyZmQ5Mzc5NjNmOGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMGZlODViZTU2ZmUzN2FkIGlucHV0PTNlNDA4MDNlZTdjNGM1ODZdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqZW52bGlzdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGksIGVudmM7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKIApAQCAtNTI1Myw3ICs1MTEzLDYgQEAKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKICAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwpAQCAtNTI3Myw3ICs1MTMyLDcgQEAKICAgICAgICAgZ290byBmYWlsXzA7CiAgICAgfQogCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOworICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgYXJnYysxKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGZhaWxfMDsKQEAgLTUyOTcsNyArNTE1NiwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBIQVZFX1dTUEFXTlYKKyAgICBzcGF3bnZhbCA9IF93c3Bhd252ZShtb2RlLCBwYXRoLT53aWRlLCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZWxzZQorICAgIHNwYXdudmFsID0gX3NwYXdudmUobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCkBAIC01NzYwLDE0ICs1NjI1LDE0IEBACiAgICAgcGlkOiBwaWRfdAogICAgIC8KIAotUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KK1JldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuCiAKIFRoZSBhZmZpbml0eSBpcyByZXR1cm5lZCBhcyBhIHNldCBvZiBDUFUgaWRlbnRpZmllcnMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PWVhZjE2MTkzNjg3NGI4YTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PTk4M2NlN2NiNGE1NjU5ODBdKi8KIHsKICAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CiAgICAgc2l6ZV90IHNldHNpemU7CkBAIC01OTI4LDcgKzU3OTMsNyBAQAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKG1hc3Rlcl9mZCwgMCwgTlVMTCkgPCAwKQogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwogCi0jaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRDKQorI2lmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVEMpCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgInB0ZW0iKTsgLyogcHVzaCBwdGVtICovCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgImxkdGVybSIpOyAvKiBwdXNoIGxkdGVybSAqLwogI2lmbmRlZiBfX2hwdXgKQEAgLTYwNDAsNiArNTkwNSw3IEBACiAjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KIAogCisjaWZkZWYgSEFWRV9HRVRQSUQKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLmdldHBpZAogCkBAIC02MDUyLDYgKzU5MTgsNyBAQAogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CisjZW5kaWYgLyogSEFWRV9HRVRQSUQgKi8KIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCiAKQEAgLTYyNTMsNyArNjEyMCw3IEBACiBwb3NpeF9pbml0Z3JvdXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqb25hbWU7Ci0gICAgY2hhciAqdXNlcm5hbWU7CisgICAgY29uc3QgY2hhciAqdXNlcm5hbWU7CiAgICAgaW50IHJlczsKICNpZmRlZiBfX0FQUExFX18KICAgICBpbnQgZ2lkOwpAQCAtNzAwMCw3ICs2ODY3LDcgQEAKIC8qIE1TIEMgaGFzIGEgdmFyaWFudCBvZiB3YWl0cGlkKCkgdGhhdCdzIHVzYWJsZSBmb3IgbW9zdCBwdXJwb3Nlcy4gKi8KIC8qW2NsaW5pYyBpbnB1dF0KIG9zLndhaXRwaWQKLSAgICBwaWQ6IFB5X2ludHB0cl90CisgICAgcGlkOiBpbnRwdHJfdAogICAgIG9wdGlvbnM6IGludAogICAgIC8KIApAQCAtNzAxMywxMSArNjg4MCwxMSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTVmMWNlMDA1YTM0NmIwOSBpbnB1dD00NDRjOGY1MWNjYTViODYyXSovCitvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTgzNmIyMjEyNzFkNTM4IGlucHV0PTQwZjI0NDBjNTE1NDEwZjhdKi8KIHsKICAgICBpbnQgc3RhdHVzOwotICAgIFB5X2ludHB0cl90IHJlczsKKyAgICBpbnRwdHJfdCByZXM7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKICAgICBkbyB7CkBAIC03MTI4LDE2ICs2OTk1LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7CiAgICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOworICAgIGludCBkaXJfZmQ7CiAgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwogCi0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7Ci0gICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICBjb25zdCB3Y2hhcl90ICpwcmludF9uYW1lOwogCiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CiAKQEAgLTcyMDUsMjIgKzcwNzIsMTkgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIC8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpID0gTlVMTDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua0EpKExQU1RSLCBMUFNUUiwgRFdPUkQpID0gTlVMTDsKK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQQ1dTVFIsIExQQ1dTVFIsIERXT1JEKSA9IE5VTEw7CiAKIHN0YXRpYyBpbnQKIGNoZWNrX0NyZWF0ZVN5bWJvbGljTGluayh2b2lkKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CiAgICAgLyogb25seSByZWNoZWNrICovCi0gICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOwotICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKKyAgICByZXR1cm4gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAhPSBOVUxMOwogfQogCiAvKiBSZW1vdmUgdGhlIGxhc3QgcG9ydGlvbiBvZiB0aGUgcGF0aCAqLwpAQCAtNzIzNywyMCArNzEwMSw2IEBACiAgICAgKnB0ciA9IDA7CiB9CiAKLS8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCi1zdGF0aWMgdm9pZAotX2Rpcm5hbWVBKGNoYXIgKnBhdGgpCi17Ci0gICAgY2hhciAqcHRyOwotCi0gICAgLyogd2FsayB0aGUgcGF0aCBmcm9tIHRoZSBlbmQgdW50aWwgYSBiYWNrc2xhc2ggaXMgZW5jb3VudGVyZWQgKi8KLSAgICBmb3IocHRyID0gcGF0aCArIHN0cmxlbihwYXRoKTsgcHRyICE9IHBhdGg7IHB0ci0tKSB7Ci0gICAgICAgIGlmICgqcHRyID09ICdcXCcgfHwgKnB0ciA9PSAnLycpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgKnB0ciA9IDA7Ci19Ci0KIC8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KIHN0YXRpYyBpbnQKIF9pc19hYnNXKGNvbnN0IFdDSEFSICpwYXRoKQpAQCAtNzI1OSwxNCArNzEwOSw2IEBACiAKIH0KIAotLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLwotc3RhdGljIGludAotX2lzX2Fic0EoY29uc3QgY2hhciAqcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aFswXSA9PSAnXFwnIHx8IHBhdGhbMF0gPT0gJy8nIHx8IHBhdGhbMV0gPT0gJzonOwotCi19Ci0KIC8qIGpvaW4gcm9vdCBhbmQgcmVzdCB3aXRoIGEgYmFja3NsYXNoICovCiBzdGF0aWMgdm9pZAogX2pvaW5XKFdDSEFSICpkZXN0X3BhdGgsIGNvbnN0IFdDSEFSICpyb290LCBjb25zdCBXQ0hBUiAqcmVzdCkKQEAgLTcyODgsMzAgKzcxMzAsOSBAQAogICAgIHdjc2NweShkZXN0X3BhdGgrcm9vdF9sZW4sIHJlc3QpOwogfQogCi0vKiBqb2luIHJvb3QgYW5kIHJlc3Qgd2l0aCBhIGJhY2tzbGFzaCAqLwotc3RhdGljIHZvaWQKLV9qb2luQShjaGFyICpkZXN0X3BhdGgsIGNvbnN0IGNoYXIgKnJvb3QsIGNvbnN0IGNoYXIgKnJlc3QpCi17Ci0gICAgc2l6ZV90IHJvb3RfbGVuOwotCi0gICAgaWYgKF9pc19hYnNBKHJlc3QpKSB7Ci0gICAgICAgIHN0cmNweShkZXN0X3BhdGgsIHJlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcm9vdF9sZW4gPSBzdHJsZW4ocm9vdCk7Ci0KLSAgICBzdHJjcHkoZGVzdF9wYXRoLCByb290KTsKLSAgICBpZihyb290X2xlbikgewotICAgICAgICBkZXN0X3BhdGhbcm9vdF9sZW5dID0gJ1xcJzsKLSAgICAgICAgcm9vdF9sZW4rKzsKLSAgICB9Ci0gICAgc3RyY3B5KGRlc3RfcGF0aCtyb290X2xlbiwgcmVzdCk7Ci19Ci0KIC8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50Ci1fY2hlY2tfZGlyVyhXQ0hBUiAqc3JjLCBXQ0hBUiAqZGVzdCkKK19jaGVja19kaXJXKExQQ1dTVFIgc3JjLCBMUENXU1RSIGRlc3QpCiB7CiAgICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKICAgICBXQ0hBUiBkZXN0X3BhcmVudFtNQVhfUEFUSF07CkBAIC03MzI3LDI1ICs3MTQ4LDYgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KLS8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCi1zdGF0aWMgaW50Ci1fY2hlY2tfZGlyQShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCi17Ci0gICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKLSAgICBjaGFyIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKLSAgICBjaGFyIHNyY19yZXNvbHZlZFtNQVhfUEFUSF0gPSAiIjsKLQotICAgIC8qIGRlc3RfcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpICovCi0gICAgc3RyY3B5KGRlc3RfcGFyZW50LCBkZXN0KTsKLSAgICBfZGlybmFtZUEoZGVzdF9wYXJlbnQpOwotICAgIC8qIHNyY19yZXNvbHZlZCA9IG9zLnBhdGguam9pbihkZXN0X3BhcmVudCwgc3JjKSAqLwotICAgIF9qb2luQShzcmNfcmVzb2x2ZWQsIGRlc3RfcGFyZW50LCBzcmMpOwotICAgIHJldHVybiAoCi0gICAgICAgIEdldEZpbGVBdHRyaWJ1dGVzRXhBKHNyY19yZXNvbHZlZCwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmc3JjX2luZm8pCi0gICAgICAgICYmIHNyY19pbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICApOwotfQogI2VuZGlmCiAKIApAQCAtNzQwNSwxOCArNzIwNywxMCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZHN0LT53aWRlKSB7Ci0gICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyVyhzcmMtPndpZGUsIGRzdC0+d2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2RpckEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQorICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KKyAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQpAQCAtNzcyMSwxNiArNzUxNSwxNSBAQAogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgICAgIGVsc2UKLSNlbmRpZgorICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7CisjZWxzZQogI2lmZGVmIEhBVkVfT1BFTkFUCiAgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCiAgICAgICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOwogICAgICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX09QRU5BVCAqLwogICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOworI2VuZGlmIC8qICFNU19XSU5ET1dTICovCiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzc2NSw4ICs3NTU4LDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZmU0ZTkzNjAyODIyYzE0IGlucHV0PTJiYzQyNDUxY2E1YzMyMjNdKi8KIHsKICAgICBpbnQgcmVzOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KICAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKICAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgpAQCAtNzc5OSw5ICs3NTkwLDggQEAKICAgICBpbnQgaTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGZvciAoaSA9IGZkX2xvdzsgaSA8IGZkX2hpZ2g7IGkrKykKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChpKSkKLSAgICAgICAgICAgIGNsb3NlKGkpOworICAgIGZvciAoaSA9IFB5X01BWChmZF9sb3csIDApOyBpIDwgZmRfaGlnaDsgaSsrKQorICAgICAgICBjbG9zZShpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC03ODQ1LDcgKzc2MzUsNyBAQAogICAgIGludCBkdXAzX3dvcmtzID0gLTE7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkX2R1cDIoZmQsIGZkMikpCisgICAgaWYgKGZkIDwgMCB8fCBmZDIgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIC8qIGR1cDIoKSBjYW4gZmFpbCB3aXRoIEVJTlRSIGlmIHRoZSB0YXJnZXQgRkQgaXMgYWxyZWFkeSBvcGVuLCBiZWNhdXNlIGl0CkBAIC03OTY5LDEwICs3NzU5LDYgQEAKIHsKICAgICBQeV9vZmZfdCByZXN1bHQ7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICNpZmRlZiBTRUVLX1NFVAogICAgIC8qIFR1cm4gMCwgMSwgMiBpbnRvIFNFRUtfe1NFVCxDVVIsRU5EfSAqLwogICAgIHN3aXRjaCAoaG93KSB7CkBAIC03OTg1LDEwICs3NzcxLDYgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04MTk2LDEwICs3OTc4LDYgQEAKICAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQogCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC04MzYyLDcgKzgxNDAsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpT246c2VuZGZpbGUiLAogICAgICAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgJm9mZm9iaiwgJmNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICBpZiAob2Zmb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtODQ0Miw4ICs4MjIwLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTQ4YzhiNGU2NDRjYTAwIGlucHV0PTA4Y2U5NGFhMWVhZjdiNWVdKi8KIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJldHVybl92YWx1ZSA9IGlzYXR0eShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg0ODIsOCArODI1OCw4IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIG9rID0gQ3JlYXRlUGlwZSgmcmVhZCwgJndyaXRlLCAmYXR0ciwgMCk7CiAgICAgaWYgKG9rKSB7Ci0gICAgICAgIGZkc1swXSA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgX09fUkRPTkxZKTsKLSAgICAgICAgZmRzWzFdID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdCl3cml0ZSwgX09fV1JPTkxZKTsKKyAgICAgICAgZmRzWzBdID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClyZWFkLCBfT19SRE9OTFkpOworICAgICAgICBmZHNbMV0gPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXdyaXRlLCBfT19XUk9OTFkpOwogICAgICAgICBpZiAoZmRzWzBdID09IC0xIHx8IGZkc1sxXSA9PSAtMSkgewogICAgICAgICAgICAgQ2xvc2VIYW5kbGUocmVhZCk7CiAgICAgICAgICAgICBDbG9zZUhhbmRsZSh3cml0ZSk7CkBAIC04NjM1LDExICs4NDExLDYgQEAKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC04ODIyLDkgKzg1OTMsNiBAQAogICAgIGludCByZXN1bHQ7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTg4NzEsMTAgKzg2MzksNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOwotICAgIGVsc2UKLSAgICAgICAgZmQgPSBfb3BlbihwYXRoLT5uYXJyb3csIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7CisgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXN1bHQgPSAtMTsKICAgICBlbHNlIHsKQEAgLTkwMTgsNyArODc4Myw3IEBACiBvc19wdXRlbnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyOWE1NjdkNmIyMzI3ZDIgaW5wdXQ9YmE1ODY1ODFjMmU2MTA1Zl0qLwogewotICAgIHdjaGFyX3QgKmVudjsKKyAgICBjb25zdCB3Y2hhcl90ICplbnY7CiAKICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CkBAIC05MDY0LDggKzg4MjksOCBAQAogewogICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CiAgICAgY2hhciAqZW52OwotICAgIGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKLSAgICBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBjaGFyICpuYW1lX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcobmFtZSk7CisgICAgY29uc3QgY2hhciAqdmFsdWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyh2YWx1ZSk7CiAKICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBuYW1lX3N0cmluZywgdmFsdWVfc3RyaW5nKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewpAQCAtOTM0MywxNyArOTEwOCwxNyBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX2JzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZnJzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2Jsb2NrcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2Jsb2NrcykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9iZnJlZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JmcmVlKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2JhdmFpbCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JhdmFpbCkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9maWxlcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2ZpbGVzKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2ZmcmVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmZyZWUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfZmF2YWlsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmF2YWlsKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA4LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZmxhZykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX25hbWVtYXgpKTsKICNlbmRpZgpAQCAtOTQ4NCw4ICs5MjQ5LDggQEAKICAqIHN1ZmZpY2llbnRseSBwZXJ2YXNpdmUgdGhhdCBpdCdzIG5vdCB3b3J0aCB0aGUgbG9zcyBvZiByZWFkYWJpbGl0eS4KICAqLwogc3RydWN0IGNvbnN0ZGVmIHsKLSAgICBjaGFyICpuYW1lOwotICAgIGxvbmcgdmFsdWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBpbnQgdmFsdWU7CiB9OwogCiBzdGF0aWMgaW50CkBAIC05NDkzLDcgKzkyNTgsMTAgQEAKICAgICAgICAgICAgICAgc2l6ZV90IHRhYmxlc2l6ZSkKIHsKICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgKnZhbHVlcCA9IFB5TG9uZ19BU19MT05HKGFyZyk7CisgICAgICAgIGludCB2YWx1ZSA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKKyAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKnZhbHVlcCA9IHZhbHVlOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC0xMDQ1NCw3ICsxMDIyMiw3IEBACiAKIHN0YXRpYyBpbnQKIHNldHVwX2NvbmZuYW1lX3RhYmxlKHN0cnVjdCBjb25zdGRlZiAqdGFibGUsIHNpemVfdCB0YWJsZXNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCiB7CiAgICAgUHlPYmplY3QgKmQgPSBOVUxMOwogICAgIHNpemVfdCBpOwpAQCAtMTA1MjUsMzEgKzEwMjkzLDggQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLS8qIEFDIDMuNTogY2hhbmdlIHRvIHBhdGhfdD8gYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGV4Y2VwdGlvbnMgKi8KLVB5RG9jX1NUUlZBUih3aW4zMl9zdGFydGZpbGVfX2RvY19fLAotInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuXAotXG5cCi1TdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cblwKLVxuXAotV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG5cCi1kb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG5cCi1hcmd1bWVudCB0byB0aGUgRE9TIFwic3RhcnRcIiBjb21tYW5kOiB0aGUgZmlsZSBpcyBvcGVuZWQgd2l0aCB3aGF0ZXZlclxuXAotYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuXAotV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcblwKLXRoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyBcInByaW50XCIuXG5cCi1cblwKLXN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG5cCi1UaGVyZSBpcyBubyBvcHRpb24gdG8gd2FpdCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGNsb3NlLCBhbmQgbm8gd2F5XG5cCi10byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb24ncyBleGl0IHN0YXR1cy5cblwKLVxuXAotVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuXAotYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcblwKLXRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuIik7Ci0KIC8qIEdyYWIgU2hlbGxFeGVjdXRlIGR5bmFtaWNhbGx5IGZyb20gc2hlbGwzMiAqLwogc3RhdGljIGludCBoYXNfU2hlbGxFeGVjdXRlID0gLTE7Ci1zdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlQSkoSFdORCwgTFBDU1RSLCBMUENTVFIsIExQQ1NUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIsIElOVCk7CiBzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlVykoSFdORCwgTFBDV1NUUiwgTFBDV1NUUiwgTFBDV1NUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSLCBJTlQpOwogc3RhdGljIGludApAQCAtMTA1NjMsMTIgKzEwMzA4LDkgQEAKICAgICAgICAgaFNoZWxsMzIgPSBMb2FkTGlicmFyeVcoTCJTSEVMTDMyIik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChoU2hlbGwzMikgewotICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlQSA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlQSIpOwogICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlVyA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlVyIpOwotICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZUEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TaGVsbEV4ZWN1dGVXOworICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZVcgIT0gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSAwOwogICAgICAgICB9CkBAIC0xMDU3NywxNiArMTAzMTksMzYgQEAKIH0KIAogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfc3RhcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb2ZpbGVwYXRoOwotICAgIGNoYXIgKmZpbGVwYXRoOwotICAgIGNoYXIgKm9wZXJhdGlvbiA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqd3BhdGgsICp3b3BlcmF0aW9uOwotICAgIEhJTlNUQU5DRSByYzsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0YXJ0ZmlsZQorICAgIGZpbGVwYXRoOiBwYXRoX3QKKyAgICBvcGVyYXRpb246IFB5X1VOSUNPREUgPSBOVUxMCiAKLSAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOworc3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pCisKK1N0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLgorCitXaGVuICJvcGVyYXRpb24iIGlzIG5vdCBzcGVjaWZpZWQgb3IgIm9wZW4iLCB0aGlzIGFjdHMgbGlrZQorZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhbgorYXJndW1lbnQgdG8gdGhlIERPUyAic3RhcnQiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyCithcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuCitXaGVuIGFub3RoZXIgIm9wZXJhdGlvbiIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGgKK3RoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyAicHJpbnQiLgorCitzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLgorVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheQordG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uJ3MgZXhpdCBzdGF0dXMuCisKK1RoZSBmaWxlcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJZiB5b3Ugd2FudCB0byB1c2UKK2FuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoICgiLyIpOwordGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayBpZiBpdCBpcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MTJjZWJhNzlhY2ZhMWM5IGlucHV0PTYzOTUwYmYyOTg2MzgwZDBdKi8KK3sKKyAgICBISU5TVEFOQ0UgcmM7CiAKICAgICBpZighY2hlY2tfU2hlbGxFeGVjdXRlKCkpIHsKICAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBTaGVsbEV4ZWN1dGUsIHJldHVybiBhCkBAIC0xMDU5NSw2OCArMTAzNTcsMTYgQEAKICAgICAgICAgICAgICJzdGFydGZpbGUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIik7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHM6c3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXBhdGgsICZvcGVyYXRpb24pKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIH0KLQotICAgIGlmIChvcGVyYXRpb24pIHsKLSAgICAgICAgdW9wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG9wZXJhdGlvbiksIE5VTEwpOwotICAgICAgICBpZiAoIXVvcGVyYXRpb24pIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBvcGVyYXRpb24gPSBOVUxMOwotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pcGF0aCk7Ci0gICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIGlmICh1b3BlcmF0aW9uKSB7Ci0gICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVvcGVyYXRpb24pOwotICAgICAgICBpZiAod29wZXJhdGlvbiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBQeV9TaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAorICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfWERFQ1JFRih1b3BlcmF0aW9uKTsKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIHVuaXBhdGgpOworICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi1ub3JtYWw6Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxzOnN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZXJhdGlvbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZmlsZXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlQSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcigic3RhcnRmaWxlIiwgZmlsZXBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKLSAgICAgICAgcmV0dXJuIGVycnZhbDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9maWxlcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIApAQCAtMTA4MjQsNyArMTA1MzQsNyBAQAogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CiAgICAgICAgIHZvaWQgKnB0cjsKICAgICAgICAgc3NpemVfdCByZXN1bHQ7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OworICAgICAgICBzdGF0aWMgY29uc3QgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTEwOTg4LDkgKzEwNjk4LDkgQEAKICAgICBuYW1lID0gcGF0aC0+bmFycm93ID8gcGF0aC0+bmFycm93IDogIi4iOwogCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKLSAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKKyAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKICAgICAgICAgc3NpemVfdCBsZW5ndGg7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwpAQCAtMTEwODEsOCArMTA3OTEsNyBAQAogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkgewogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMjAyLDExICsxMDkxMSwxNSBAQAogb3MuY3B1X2NvdW50CiAKIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCisKK1RoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgordXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NwdV9jb3VudF9pbXBsKFB5T2JqZWN0ICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1kNTVlMmY4ZjM4MjNhNjI4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1lN2M4ZjRiYTZkYmJhZGQzXSovCiB7CiAgICAgaW50IG5jcHUgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTExMjUwLDExICsxMDk2Myw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQ0NWUyMGUxNDlhYTViOCBpbnB1dD04OWFjMDA4ZGM5YWI2Yjk1XSovCiB7CiAgICAgaW50IHJldHVybl92YWx1ZTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXR1cm5fdmFsdWUgPSBfUHlfZ2V0X2luaGVyaXRhYmxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTEyNzYsOCArMTA5ODQsNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxYjE5MThhMmYzYzM4YzIgaW5wdXQ9OWNlYWVhZDg3YTFlMjQwMl0qLwogewogICAgIGludCByZXN1bHQ7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCBpbmhlcml0YWJsZSwgTlVMTCk7CkBAIC0xMTI5MSwxNSArMTA5OTcsMTUgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAvKltjbGluaWMgaW5wdXRdCiBvcy5nZXRfaGFuZGxlX2luaGVyaXRhYmxlIC0+IGJvb2wKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIC8KIAogR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTUzODliMGFhMDkxNmNlIGlucHV0PTVmNzc1OTQ0M2FhZTNkYzVdKi8KK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZiZTVhZmNhNmVhODRkOCBpbnB1dD1jZmU5OWY5YzA1YzcwYWQxXSovCiB7CiAgICAgRFdPUkQgZmxhZ3M7CiAKQEAgLTExMzE0LDcgKzExMDIwLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogb3Muc2V0X2hhbmRsZV9pbmhlcml0YWJsZQotICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBoYW5kbGU6IGludHB0cl90CiAgICAgaW5oZXJpdGFibGU6IGJvb2wKICAgICAvCiAKQEAgLTExMzIyLDkgKzExMDI4LDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWU2N2JmYTMyMTNkNzQ1IGlucHV0PWU2NGIyYjI3MzA0NjlkZWZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMjFkNzRmZTZjOTZiYWEzIGlucHV0PTdhNzY0MTM5MGQ4MzY0ZmNdKi8KIHsKICAgICBEV09SRCBmbGFncyA9IGluaGVyaXRhYmxlID8gSEFORExFX0ZMQUdfSU5IRVJJVCA6IDA7CiAgICAgaWYgKCFTZXRIYW5kbGVJbmZvcm1hdGlvbigoSEFORExFKWhhbmRsZSwgSEFORExFX0ZMQUdfSU5IRVJJVCwgZmxhZ3MpKSB7CkBAIC0xMTM1MSw5ICsxMTA1Nyw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9ibG9ja2luZyIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMTM3Nyw5ICsxMTA4MCw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfYmxvY2tpbmciLCAmZmQsICZibG9ja2luZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZyk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTExNDYwLDQxICsxMTE2MCwyNiBAQAogRGlyRW50cnlfZmV0Y2hfc3RhdChEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcykKIHsKICAgICBpbnQgcmVzdWx0OwotICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgUHlPYmplY3QgKnViOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5wYXRoKTsKLSAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgsICZzdCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgsICZzdCk7Ci0KLSAgICBpZiAocmVzdWx0ICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9GU0RlY29kZXIoc2VsZi0+cGF0aCwgJnViKSkgeworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZSh1Yik7CiAjZWxzZSAvKiBQT1NJWCAqLwotICAgIFB5T2JqZWN0ICpieXRlczsKLSAgICBjaGFyICpwYXRoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoc2VsZi0+cGF0aCwgJmJ5dGVzKSkKKyAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKHNlbGYtPnBhdGgsICZ1YikpIHsKKyAgICAgICAgY29uc3QgY2hhciAqcGF0aCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHViKTsKKyNlbmRpZgorICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLCAmc3QpOworICAgICAgICBQeV9ERUNSRUYodWIpOworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aCwgJnN0KTsKLSAgICBQeV9ERUNSRUYoYnl0ZXMpOwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHNlbGYtPnBhdGgpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBwYXRoX29iamVjdF9lcnJvcihzZWxmLT5wYXRoKTsKIAogICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7CiB9CkBAIC0xMTY2NCwyNSArMTEzNDksMjcgQEAKIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFzZWxmLT5nb3RfZmlsZV9pbmRleCkgewotICAgICAgICB3Y2hhcl90ICpwYXRoOwotICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXQ7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoOworICAgICAgICBTVFJVQ1RfU1RBVCBzdGF0OworICAgICAgICBpbnQgcmVzdWx0OwogCi0gICAgICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOwotICAgICAgICBpZiAoIXBhdGgpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihzZWxmLT5wYXRoLCAmdW5pY29kZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pY29kZSk7CisgICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgsICZzdGF0KTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogCi0gICAgICAgIGlmICh3aW4zMl9sc3RhdF93KHBhdGgsICZzdGF0KSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3Ioc2VsZi0+cGF0aCk7CiAKICAgICAgICAgc2VsZi0+d2luMzJfZmlsZV9pbmRleCA9IHN0YXQuc3RfaW5vOwogICAgICAgICBzZWxmLT5nb3RfZmlsZV9pbmRleCA9IDE7CiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+d2luMzJfZmlsZV9pbmRleCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzZWxmLT53aW4zMl9maWxlX2luZGV4KTsKICNlbHNlIC8qIFBPU0lYICovCiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+ZF9pbm8pOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc2VsZi0+ZF9pbm8pOwogI2Vsc2UKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXNlbGYtPmRfaW5vKTsKICNlbmRpZgpAQCAtMTE2OTUsNiArMTEzODIsMTMgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxEaXJFbnRyeSAlUj4iLCBzZWxmLT5uYW1lKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2ZzcGF0aChEaXJFbnRyeSAqc2VsZikKK3sKKyAgICBQeV9JTkNSRUYoc2VsZi0+cGF0aCk7CisgICAgcmV0dXJuIHNlbGYtPnBhdGg7Cit9CisKIHN0YXRpYyBQeU1lbWJlckRlZiBEaXJFbnRyeV9tZW1iZXJzW10gPSB7CiAgICAgeyJuYW1lIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBuYW1lKSwgUkVBRE9OTFksCiAgICAgICJ0aGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byBzY2FuZGlyKCkgXCJwYXRoXCIgYXJndW1lbnQifSwKQEAgLTExNzE5LDYgKzExNDEzLDkgQEAKICAgICB7Imlub2RlIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lub2RlLCBNRVRIX05PQVJHUywKICAgICAgInJldHVybiBpbm9kZSBvZiB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiLAogICAgIH0sCisgICAgeyJfX2ZzcGF0aF9fIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2ZzcGF0aCwgTUVUSF9OT0FSR1MsCisgICAgICJyZXR1cm5zIHRoZSBwYXRoIGZvciB0aGUgZW50cnkiLAorICAgIH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xMTc1OCw3ICsxMTQ1NSw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgd2NoYXJfdCAqCi1qb2luX3BhdGhfZmlsZW5hbWVXKHdjaGFyX3QgKnBhdGhfd2lkZSwgd2NoYXJfdCogZmlsZW5hbWUpCitqb2luX3BhdGhfZmlsZW5hbWVXKGNvbnN0IHdjaGFyX3QgKnBhdGhfd2lkZSwgY29uc3Qgd2NoYXJfdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlfc3NpemVfdCBwYXRoX2xlbjsKICAgICBQeV9zc2l6ZV90IHNpemU7CkBAIC0xMTgxMCw2ICsxMTUwNywxMSBAQAogICAgIGVudHJ5LT5uYW1lID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhVy0+Y0ZpbGVOYW1lLCAtMSk7CiAgICAgaWYgKCFlbnRyeS0+bmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+bmFtZSwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+bmFtZSkpOworICAgICAgICBpZiAoIWVudHJ5LT5uYW1lKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKICAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZVcocGF0aC0+d2lkZSwgZGF0YVctPmNGaWxlTmFtZSk7CiAgICAgaWYgKCFqb2luZWRfcGF0aCkKQEAgLTExODE5LDggKzExNTIxLDEzIEBACiAgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CiAgICAgaWYgKCFlbnRyeS0+cGF0aCkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+cGF0aCwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+cGF0aCkpOworICAgICAgICBpZiAoIWVudHJ5LT5wYXRoKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKLSAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CisgICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mbyhkYXRhVywgJmZpbGVfaW5mbywgJnJlcGFyc2VfdGFnKTsKICAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmZmlsZV9pbmZvLCByZXBhcnNlX3RhZywgJmVudHJ5LT53aW4zMl9sc3RhdCk7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CkBAIC0xMTgzMyw3ICsxMTU0MCw3IEBACiAjZWxzZSAvKiBQT1NJWCAqLwogCiBzdGF0aWMgY2hhciAqCi1qb2luX3BhdGhfZmlsZW5hbWUoY2hhciAqcGF0aF9uYXJyb3csIGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKK2pvaW5fcGF0aF9maWxlbmFtZShjb25zdCBjaGFyICpwYXRoX25hcnJvdywgY29uc3QgY2hhciogZmlsZW5hbWUsIFB5X3NzaXplX3QgZmlsZW5hbWVfbGVuKQogewogICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CiAgICAgUHlfc3NpemVfdCBzaXplOwpAQCAtMTE4NjUsNyArMTE1NzIsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotRGlyRW50cnlfZnJvbV9wb3NpeF9pbmZvKHBhdGhfdCAqcGF0aCwgY2hhciAqbmFtZSwgUHlfc3NpemVfdCBuYW1lX2xlbiwKK0RpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNvbnN0IGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5vX3QgZF9pbm8KICNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKICAgICAgICAgICAgICAgICAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIgZF90eXBlCkBAIC0xMTkyOCw4ICsxMTYzNSwxNCBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKIHN0YXRpYyB2b2lkCi1TY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQogewogICAgIEhBTkRMRSBoYW5kbGUgPSBpdGVyYXRvci0+aGFuZGxlOwogCkBAIC0xMTk0OSw3ICsxMTY2Miw3IEBACiAgICAgQk9PTCBzdWNjZXNzOwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMTk4MCwxNCArMTE2OTMsMjAgQEAKICAgICB9CiAKICAgICAvKiBFcnJvciBvciBubyBtb3JlIGZpbGVzICovCi0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOwogICAgIHJldHVybiBOVUxMOwogfQogCiAjZWxzZSAvKiBQT1NJWCAqLwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuICFpdGVyYXRvci0+ZGlycDsKK30KKwogc3RhdGljIHZvaWQKLVNjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCiB7CiAgICAgRElSICpkaXJwID0gaXRlcmF0b3ItPmRpcnA7CiAKQEAgLTEyMDA5LDcgKzExNzI4LDcgQEAKICAgICBpbnQgaXNfZG90OwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKCFpdGVyYXRvci0+ZGlycCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyMDQ2LDIxICsxMTc2NSw3NiBAQAogICAgIH0KIAogICAgIC8qIEVycm9yIG9yIG5vIG1vcmUgZmlsZXMgKi8KLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihpdGVyYXRvcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZgogCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKHNlbGYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfZXhpdChTY2FuZGlySXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9maW5hbGl6ZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgaWYgKCFTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKGl0ZXJhdG9yKSkgeworICAgICAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOworCisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoKFB5T2JqZWN0ICopaXRlcmF0b3IsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIHNjYW5kaXIgaXRlcmF0b3IgJVIiLCBpdGVyYXRvcikpIHsKKyAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgaXRlcmF0b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUHlfQ0xFQVIoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKKyAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCiBzdGF0aWMgdm9pZAogU2NhbmRpckl0ZXJhdG9yX2RlYWxsb2MoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKIHsKLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOwotICAgIFB5X1hERUNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKLSAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKChQeU9iamVjdCAqKWl0ZXJhdG9yKSA8IDApCisgICAgICAgIHJldHVybjsKKwogICAgIFB5X1RZUEUoaXRlcmF0b3IpLT50cF9mcmVlKChQeU9iamVjdCAqKWl0ZXJhdG9yKTsKIH0KIAorc3RhdGljIFB5TWV0aG9kRGVmIFNjYW5kaXJJdGVyYXRvcl9tZXRob2RzW10gPSB7CisgICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pU2NhbmRpckl0ZXJhdG9yX2VudGVyLCBNRVRIX05PQVJHU30sCisgICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbilTY2FuZGlySXRlcmF0b3JfZXhpdCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKVNjYW5kaXJJdGVyYXRvcl9jbG9zZSwgTUVUSF9OT0FSR1N9LAorICAgIHtOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBTY2FuZGlySXRlcmF0b3JUeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgIE1PRE5BTUUgIi5TY2FuZGlySXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0xMjA4Miw3ICsxMTg1Niw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVAorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTEyMDkwLDYgKzExODY1LDI3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKVNjYW5kaXJJdGVyYXRvcl9pdGVybmV4dCwgLyogdHBfaXRlcm5leHQgKi8KKyAgICBTY2FuZGlySXRlcmF0b3JfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3IpU2NhbmRpckl0ZXJhdG9yX2ZpbmFsaXplLCAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIxMDAsNyArMTE4OTYsNyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB3Y2hhcl90ICpwYXRoX3N0clc7CiAjZWxzZQotICAgIGNoYXIgKnBhdGg7CisgICAgY29uc3QgY2hhciAqcGF0aDsKICNlbmRpZgogCiAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9OZXcoU2NhbmRpckl0ZXJhdG9yLCAmU2NhbmRpckl0ZXJhdG9yVHlwZSk7CkBAIC0xMjEyNywxMSArMTE5MjMsNiBAQAogICAgIFB5X1hJTkNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoaXRlcmF0b3ItPnBhdGgubmFycm93KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAib3Muc2NhbmRpcigpIGRvZXNuJ3Qgc3VwcG9ydCBieXRlcyBwYXRoIG9uIFdpbmRvd3MsIHVzZSBVbmljb2RlIGluc3RlYWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9CiAgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAxOwogCiAgICAgcGF0aF9zdHJXID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhpdGVyYXRvci0+cGF0aC53aWRlLCBMIiouKiIpOwpAQCAtMTIxNzIsNiArMTE5NjMsMTMyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKKyAgICBJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggd2l0aAorICAgIGFuIGluY3JlbWVudGVkIHJlZmNvdW50LiBJZiB0aGUgb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuCisgICAgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhhdCBtZXRob2QuIEFsbCBvdGhlciB0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4KKyovCitQeU9iamVjdCAqCitQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKK3sKKyAgICAvKiBGb3IgZXJyb3IgbWVzc2FnZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGlzIG1hbnVhbGx5IGlubGluZWQgaW4KKyAgICAgICBwYXRoX2NvbnZlcnRlcigpLiAqLworICAgIF9QeV9JREVOVElGSUVSKF9fZnNwYXRoX18pOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGF0aF9yZXByID0gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGF0aCkgfHwgUHlCeXRlc19DaGVjayhwYXRoKSkgeworICAgICAgICBQeV9JTkNSRUYocGF0aCk7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChwYXRoLCAmUHlJZF9fX2ZzcGF0aF9fKTsKKyAgICBpZiAoTlVMTCA9PSBmdW5jKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBzdHIsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGgpLT50cF9uYW1lKTsKKyAgICB9CisKKyAgICBwYXRoX3JlcHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAoTlVMTCA9PSBwYXRoX3JlcHIpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCEoUHlVbmljb2RlX0NoZWNrKHBhdGhfcmVwcikgfHwgUHlCeXRlc19DaGVjayhwYXRoX3JlcHIpKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICUuMjAwcy5fX2ZzcGF0aF9fKCkgdG8gcmV0dXJuIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLCBQeV9UWVBFKHBhdGgpLT50cF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShwYXRoX3JlcHIpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhfcmVwcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBwYXRoX3JlcHI7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZzcGF0aAorCisgICAgcGF0aDogb2JqZWN0CisKK1JldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCitJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggYXMtaXMuIElmIHRoZQorb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXIKK3R5cGVzIHJhaXNlIGEgVHlwZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzNjM2I3OGVjZmYyOTE0ZiBpbnB1dD1lMzU3MTY1ZjdiMjI0OTBmXSovCit7CisgICAgcmV0dXJuIFB5T1NfRlNQYXRoKHBhdGgpOworfQorCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmFuZG9tCisKKyAgICBzaXplOiBQeV9zc2l6ZV90CisgICAgZmxhZ3M6IGludD0wCisKK09idGFpbiBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyYW5kb21faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iM2E2MTgxOTZhNjE0MDljIGlucHV0PTU5YmFmYWMzOWM1OTQ5NDddKi8KK3sKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBuOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOworICAgICAgICBpZiAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBnZXRyYW5kb20oKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWw6IHJldHJ5ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChuICE9IHNpemUpIHsKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgbik7CisgICAgfQorCisgICAgcmV0dXJuIGJ5dGVzOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmICAgLyogSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCAqLwogCiAjaW5jbHVkZSAiY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCIKIApAQCAtMTIyNjMsNyArMTIxODAsNyBAQAogICAgIE9TX0tJTExQR19NRVRIT0RERUYKICAgICBPU19QTE9DS19NRVRIT0RERUYKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCisgICAgT1NfU1RBUlRGSUxFX01FVEhPRERFRgogI2VuZGlmCiAgICAgT1NfU0VUVUlEX01FVEhPRERFRgogICAgIE9TX1NFVEVVSURfTUVUSE9EREVGCkBAIC0xMjM3Miw2ICsxMjI4OSw4IEBACiAgICAgeyJzY2FuZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2NhbmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zY2FuZGlyX19kb2NfX30sCisgICAgT1NfRlNQQVRIX01FVEhPRERFRgorICAgIE9TX0dFVFJBTkRPTV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTEyMzgzLDcgKzEyMzAyLDYgQEAKICAgICBIQU5ETEUgdG9rOwogICAgIFRPS0VOX1BSSVZJTEVHRVMgdG9rX3ByaXY7CiAgICAgTFVJRCBsdWlkOwotICAgIGludCBtZXRoX2lkeCA9IDA7CiAKICAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwgVE9LRU5fQUxMX0FDQ0VTUywgJnRvaykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI0ODYsMTIgKzEyNDA0LDE0IEBACiAjaWZkZWYgT19MQVJHRUZJTEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19MQVJHRUZJTEUpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZm5kZWYgX19HTlVfXwogI2lmZGVmIE9fU0hMT0NLCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fU0hMT0NLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19FWExPQ0sKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19FWExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNlbmRpZgogI2lmZGVmIE9fRVhFQwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0VYRUMpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTEyNzk0LDI4ICsxMjcxNCwzMyBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKICNlbmRpZgogCi0jaWZkZWYgUlRMRF9MQVpZCisjaWYgSEFWRV9ERUNMX1JUTERfTEFaWQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0xBWlkpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PVworI2lmIEhBVkVfREVDTF9SVExEX05PVwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PVykpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfR0xPQkFMCisjaWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfR0xPQkFMKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9MT0NBTAorI2lmIEhBVkVfREVDTF9SVExEX0xPQ0FMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTE9DQUwpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PREVMRVRFCisjaWYgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9OT0RFTEVURSkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9MT0FECisjaWYgSEFWRV9ERUNMX1JUTERfTk9MT0FECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9MT0FEKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9ERUVQQklORAorI2lmIEhBVkVfREVDTF9SVExEX0RFRVBCSU5ECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfREVFUEJJTkQpKSByZXR1cm4gLTE7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR1JORF9SQU5ET00pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdSTkRfTk9OQkxPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMjgzMyw3ICsxMjc1OCw3IEBACiB9OwogCiAKLXN0YXRpYyBjaGFyICpoYXZlX2Z1bmN0aW9uc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoYXZlX2Z1bmN0aW9uc1tdID0gewogCiAjaWZkZWYgSEFWRV9GQUNDRVNTQVQKICAgICAiSEFWRV9GQUNDRVNTQVQiLApAQCAtMTI5NjgsNyArMTI4OTMsNyBAQAogewogICAgIFB5T2JqZWN0ICptLCAqdjsKICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBjaGFyICoqdHJhY2U7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICp0cmFjZTsKIAogI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2luMzJfY2FuX3N5bWxpbmsgPSBlbmFibGVfc3ltbGluaygpOwpAQCAtMTMxNDQsNiArMTMwNjksOSBAQAogICAgIH0KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9oYXZlX2Z1bmN0aW9ucyIsIGxpc3QpOwogCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSAmRGlyRW50cnlUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRpckVudHJ5IiwgKFB5T2JqZWN0ICopJkRpckVudHJ5VHlwZSk7CisKICAgICBpbml0aWFsaXplZCA9IDE7CiAKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCmluZGV4IDc0MTZjZjcuLjc4NGU5ZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwpAQCAtNzUsMTAgKzc1LDE4IEBACiAjZGVmaW5lIFNFVFMoaSx2YWwpIHNldHModiwgaSwgdmFsKQogCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19uYW1lKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfcGFzc3dkKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbVVpZChwLT5wd191aWQpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbUdpZChwLT5wd19naWQpKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19HRUNPUykKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2dlY29zKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2Rpcik7CiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19zaGVsbCk7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggMDBjOTZhMS4uYjMyNTlkNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTkxLDcgKzkxLDcgQEAKICAqIGZhbHNlIG9uIGFuIGV4Y2VwdGlvbi4KICAqLwogc3RhdGljIGludAotc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQorc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsKIApAQCAtMjE4LDcgKzIxOCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWNhbGxfd2l0aF9mcmFtZShjaGFyICpmdW5jbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QqIGZ1bmMsIFB5T2JqZWN0KiBhcmdzLAorY2FsbF93aXRoX2ZyYW1lKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCogZnVuYywgUHlPYmplY3QqIGFyZ3MsCiAgICAgICAgICAgICAgICAgeG1scGFyc2VvYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKQEAgLTc0Nyw3ICs3NDcsOCBAQAogICAgICAgICBzICs9IE1BWF9DSFVOS19TSVpFOwogICAgICAgICBzbGVuIC09IE1BWF9DSFVOS19TSVpFOwogICAgIH0KLSAgICBhc3NlcnQoTUFYX0NIVU5LX1NJWkUgPCBJTlRfTUFYICYmIHNsZW4gPCBJTlRfTUFYKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoTUFYX0NIVU5LX1NJWkUgPD0gSU5UX01BWCk7CisgICAgYXNzZXJ0KHNsZW4gPD0gSU5UX01BWCk7CiAgICAgcmMgPSBYTUxfUGFyc2Uoc2VsZi0+aXRzZWxmLCBzLCAoaW50KXNsZW4sIGlzZmluYWwpOwogCiBkb25lOgpAQCAtNzY1LDcgKzc2Niw3IEBACiB7CiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBjaGFyICpwdHI7CisgICAgY29uc3QgY2hhciAqcHRyOwogCiAgICAgc3RyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKG1ldGgsICJuIiwgYnVmX3NpemUpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKQEAgLTEyMjUsMTIgKzEyMjYsOCBAQAogICAgIHNlbGYtPml0c2VsZiA9IE5VTEw7CiAKICAgICBpZiAoc2VsZi0+aGFuZGxlcnMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcDsKLSAgICAgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZXJzW2ldKTsKICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5oYW5kbGVycyk7CiAgICAgICAgIHNlbGYtPmhhbmRsZXJzID0gTlVMTDsKICAgICB9CkBAIC0xMzQzLDcgKzEzNDAsNiBAQAogICAgIGludCBoYW5kbGVybnVtID0gaGFuZGxlcm5hbWUyaW50KG5hbWUpOwogICAgIGlmIChoYW5kbGVybnVtID49IDApIHsKICAgICAgICAgeG1saGFuZGxlciBjX2hhbmRsZXIgPSBOVUxMOwotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dOwogCiAgICAgICAgIGlmICh2ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgdGhlIGNoYXJhY3RlciBkYXRhIGhhbmRsZXIsIGFuZCBhIGNoYXJhY3RlcgpAQCAtMTM2NSw4ICsxMzYxLDcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgIGNfaGFuZGxlciA9IGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5oYW5kbGVyOwogICAgICAgICB9Ci0gICAgICAgIHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dID0gdjsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfWFNFVFJFRihzZWxmLT5oYW5kbGVyc1toYW5kbGVybnVtXSwgdik7CiAgICAgICAgIGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5zZXR0ZXIoc2VsZi0+aXRzZWxmLCBjX2hhbmRsZXIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xNzA1LDcgKzE3MDAsMTUgQEAKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAibmF0aXZlX2VuY29kaW5nIiwgIlVURi04Iik7CiAKICAgICBzeXNfbW9kdWxlcyA9IFB5U3lzX0dldE9iamVjdCgibW9kdWxlcyIpOworICAgIGlmIChzeXNfbW9kdWxlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGlmIChkID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZXJyb3JzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGQsIGVycm1vZF9uYW1lKTsKICAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMKSB7CiAgICAgICAgIGVycm9yc19tb2R1bGUgPSBQeU1vZHVsZV9OZXcoTU9EVUxFX05BTUUgIi5lcnJvcnMiKTsKQEAgLTE3MjYsOSArMTcyOSwxMSBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5X0RFQ1JFRihtb2RlbG1vZF9uYW1lKTsKLSAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMIHx8IG1vZGVsX21vZHVsZSA9PSBOVUxMKQorICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwgfHwgbW9kZWxfbW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgLyogRG9uJ3QgY29yZSBkdW1wIGxhdGVyISAqLworICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID4gMTk1MDUKICAgICB7CkBAIC0xODk2LDE1ICsxOTAxLDEyIEBACiBjbGVhcl9oYW5kbGVycyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGluaXRpYWwpCiB7CiAgICAgaW50IGkgPSAwOwotICAgIFB5T2JqZWN0ICp0ZW1wOwogCiAgICAgZm9yICg7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewogICAgICAgICBpZiAoaW5pdGlhbCkKICAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlcnNbaV0pOwogICAgICAgICAgICAgaGFuZGxlcl9pbmZvW2ldLnNldHRlcihzZWxmLT5pdHNlbGYsIE5VTEwpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDU0ZjE1YmMuLjNiOTRkNGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTM0MywxMCArMzQzLDggQEAKICAgICAgICAgUHlfQ0xFQVIoKmhvb2tfdmFyKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlDYWxsYWJsZV9DaGVjayhmdW5jdGlvbikpIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpob29rX3ZhcjsKICAgICAgICAgUHlfSU5DUkVGKGZ1bmN0aW9uKTsKLSAgICAgICAgKmhvb2tfdmFyID0gZnVuY3Rpb247Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgUHlfWFNFVFJFRigqaG9va192YXIsIGZ1bmN0aW9uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC02MDQsNiArNjAyLDI0IEBACiAiYWRkX2hpc3Rvcnkoc3RyaW5nKSAtPiBOb25lXG5cCiBhZGQgYW4gaXRlbSB0byB0aGUgaGlzdG9yeSBidWZmZXIiKTsKIAorc3RhdGljIGludCBzaG91bGRfYXV0b19hZGRfaGlzdG9yeSA9IDE7CisKKy8qIEVuYWJsZSBvciBkaXNhYmxlIGF1dG9tYXRpYyBoaXN0b3J5ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zZXRfYXV0b19oaXN0b3J5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInA6c2V0X2F1dG9faGlzdG9yeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZzaG91bGRfYXV0b19hZGRfaGlzdG9yeSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZG9jX3NldF9hdXRvX2hpc3RvcnksCisic2V0X2F1dG9faGlzdG9yeShlbmFibGVkKSAtPiBOb25lXG5cCitFbmFibGVzIG9yIGRpc2FibGVzIGF1dG9tYXRpYyBoaXN0b3J5LiIpOworCiAKIC8qIEdldCB0aGUgdGFiLWNvbXBsZXRpb24gd29yZC1kZWxpbWl0ZXJzIHRoYXQgcmVhZGxpbmUgdXNlcyAqLwogCkBAIC04MjIsNiArODM4LDcgQEAKIAogICAgIHsic2V0X2NvbXBsZXRlcl9kZWxpbXMiLCBzZXRfY29tcGxldGVyX2RlbGltcywKICAgICAgTUVUSF9PLCBkb2Nfc2V0X2NvbXBsZXRlcl9kZWxpbXN9LAorICAgIHsic2V0X2F1dG9faGlzdG9yeSIsIHB5X3NldF9hdXRvX2hpc3RvcnksIE1FVEhfVkFSQVJHUywgZG9jX3NldF9hdXRvX2hpc3Rvcnl9LAogICAgIHsiYWRkX2hpc3RvcnkiLCBweV9hZGRfaGlzdG9yeSwgTUVUSF9PLCBkb2NfYWRkX2hpc3Rvcnl9LAogICAgIHsicmVtb3ZlX2hpc3RvcnlfaXRlbSIsIHB5X3JlbW92ZV9oaXN0b3J5LCBNRVRIX1ZBUkFSR1MsIGRvY19yZW1vdmVfaGlzdG9yeX0sCiAgICAgeyJyZXBsYWNlX2hpc3RvcnlfaXRlbSIsIHB5X3JlcGxhY2VfaGlzdG9yeSwgTUVUSF9WQVJBUkdTLCBkb2NfcmVwbGFjZV9oaXN0b3J5fSwKQEAgLTg1Nyw3ICs4NzQsNyBAQAogICAgICAgICBpZiAociA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUxvbmdfQXNMb25nKHIpOworICAgICAgICAgICAgcmVzdWx0ID0gX1B5TG9uZ19Bc0ludChyKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CkBAIC0xMzI3LDcgKzEzNDQsNyBAQAogCiAgICAgLyogd2UgaGF2ZSBhIHZhbGlkIGxpbmUgKi8KICAgICBuID0gc3RybGVuKHApOwotICAgIGlmIChuID4gMCkgeworICAgIGlmIChzaG91bGRfYXV0b19hZGRfaGlzdG9yeSAmJiBuID4gMCkgewogICAgICAgICBjb25zdCBjaGFyICpsaW5lOwogICAgICAgICBpbnQgbGVuZ3RoID0gX3B5X2dldF9oaXN0b3J5X2xlbmd0aCgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCAzYTFjZjA5Li42NzAyYjdhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0xMzUsMTMgKzEzNSwxMSBAQAogc3RhdGljIFB5T2JqZWN0KgogcmxpbWl0MnB5KHN0cnVjdCBybGltaXQgcmwpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKHJsLnJsaW1fY3VyKSA+IHNpemVvZihsb25nKSkgewogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTEwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfTE9OR19MT05HKSBybC5ybGltX2N1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX0xPTkdfTE9ORykgcmwucmxpbV9tYXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSBybC5ybGltX2N1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykgcmwucmxpbV9tYXgpOwogICAgIH0KLSNlbmRpZgogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJsbCIsIChsb25nKSBybC5ybGltX2N1ciwgKGxvbmcpIHJsLnJsaW1fbWF4KTsKIH0KIApAQCAtNDM4LDExICs0MzYsOSBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJMSU1JVF9OUFRTKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKFJMSU1fSU5GSU5JVFkpID4gc2l6ZW9mKGxvbmcpKSB7Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIFJMSU1fSU5GSU5JVFkpOworICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBSTElNX0lORklOSVRZKTsKICAgICB9IGVsc2UKLSNlbmRpZgogICAgIHsKICAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgUkxJTV9JTkZJTklUWSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggMDAzMjRhNS4uNDdkYTQ5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC00LDYgKzQsMTAgQEAKICAgIGhhdmUgYW55IHZhbHVlIGV4Y2VwdCBJTlZBTElEX1NPQ0tFVC4KICovCiAKKyNpZiBkZWZpbmVkKEhBVkVfUE9MTF9IKSAmJiAhZGVmaW5lZChfR05VX1NPVVJDRSkKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRpZgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8c3RydWN0bWVtYmVyLmg+CiAKQEAgLTE3OTMsNyArMTc5Nyw3IEBACiAgKi8KICNpZiAhZGVmaW5lZChfX09wZW5CU0RfXykKICMgICBkZWZpbmUgSURFTlRfVFlQRSAgVF9VSU5UUFRSVAotIyAgIGRlZmluZSBJREVOVF9DQVNUICBQeV9pbnRwdHJfdAorIyAgIGRlZmluZSBJREVOVF9DQVNUICBpbnRwdHJfdAogIyAgIGRlZmluZSBEQVRBX1RZUEUgICBUX0lOVFBUUlQKICMgICBkZWZpbmUgREFUQV9GTVRfVU5JVCBJTlRQVFJUX0ZNVF9VTklUCiAjICAgZGVmaW5lIElERU5UX0FzVHlwZSBQeUxvbmdfQXNVaW50cHRyX3QKQEAgLTE4NDIsNyArMTg0Niw3IEBACiAgICAgUHlPYmplY3QgKnBmZDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImlkZW50IiwgImZpbHRlciIsICJmbGFncyIsICJmZmxhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSIsICJ1ZGF0YSIsIE5VTEx9OwotICAgIHN0YXRpYyBjaGFyICpmbXQgPSAiT3xoSEkiIERBVEFfRk1UX1VOSVQgVUlOVFBUUlRfRk1UX1VOSVQgIjprZXZlbnQiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gIk98aEhJIiBEQVRBX0ZNVF9VTklUIFVJTlRQVFJUX0ZNVF9VTklUICI6a2V2ZW50IjsKIAogICAgIEVWX1NFVCgmKHNlbGYtPmUpLCAwLCBFVkZJTFRfUkVBRCwgRVZfQURELCAwLCAwLCAwKTsgLyogZGVmYXVsdHMgKi8KIApAQCAtMTg3Miw3ICsxODc2LDcgQEAKIGtxdWV1ZV9ldmVudF9yaWNoY29tcGFyZShrcXVldWVfZXZlbnRfT2JqZWN0ICpzLCBrcXVldWVfZXZlbnRfT2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQgPSAwOworICAgIGludHB0cl90IHJlc3VsdCA9IDA7CiAKICAgICBpZiAoIWtxdWV1ZV9ldmVudF9DaGVjayhvKSkgewogICAgICAgICBpZiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpIHsKQEAgLTIxMjcsNyArMjEzMSw3IEBACiAgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgorICAgICAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIgIgogICAgICAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICBQeV9UWVBFKG90aW1lb3V0KS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NTIsNiArMjQ1NiwxMCBAQAogI2lmZGVmIFBPTExNU0cKICAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTE1TRyk7CiAjZW5kaWYKKyNpZmRlZiBQT0xMUkRIVVAKKyAgICAgICAgLyogS2VybmVsIDIuNi4xNysgKi8KKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTFJESFVQKTsKKyNlbmRpZgogICAgIH0KICNlbmRpZiAvKiBIQVZFX1BPTEwgKi8KIApAQCAtMjQ3MywxMiArMjQ4MSwxOCBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUFJJKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVSUik7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExIVVApOworI2lmZGVmIEVQT0xMUkRIVVAKKyAgICAvKiBLZXJuZWwgMi42LjE3ICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExSREhVUCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVUKTsKICNpZmRlZiBFUE9MTE9ORVNIT1QKICAgICAvKiBLZXJuZWwgMi42LjIrICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExPTkVTSE9UKTsKICNlbmRpZgotICAgIC8qIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9SREhVUCIsIEVQT0xMUkRIVVApOyAqLworI2lmZGVmIEVQT0xMRVhDTFVTSVZFCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExFWENMVVNJVkUpOworI2VuZGlmCiAKICNpZmRlZiBFUE9MTFJETk9STQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUkROT1JNKTsKQEAgLTI1MTksMTMgKzI1MzMsMjEgQEAKICAgICAvKiBldmVudCBmaWx0ZXJzICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9SRUFEIiwgRVZGSUxUX1JFQUQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfV1JJVEUiLCBFVkZJTFRfV1JJVEUpOworI2lmZGVmIEVWRklMVF9BSU8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX0FJTyIsIEVWRklMVF9BSU8pOworI2VuZGlmCisjaWZkZWYgRVZGSUxUX1ZOT0RFCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9WTk9ERSIsIEVWRklMVF9WTk9ERSk7CisjZW5kaWYKKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfUFJPQyIsIEVWRklMVF9QUk9DKTsKKyNlbmRpZgogI2lmZGVmIEVWRklMVF9ORVRERVYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX05FVERFViIsIEVWRklMVF9ORVRERVYpOwogI2VuZGlmCisjaWZkZWYgRVZGSUxUX1NJR05BTAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfU0lHTkFMIiwgRVZGSUxUX1NJR05BTCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1RJTUVSIiwgRVZGSUxUX1RJTUVSKTsKIAogICAgIC8qIGV2ZW50IGZsYWdzICovCkBAIC0yNTM2LDE2ICsyNTU4LDIzIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX09ORVNIT1QiLCBFVl9PTkVTSE9UKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfQ0xFQVIiLCBFVl9DTEVBUik7CiAKKyNpZmRlZiBFVl9TWVNGTEFHUwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9TWVNGTEFHUyIsIEVWX1NZU0ZMQUdTKTsKKyNlbmRpZgorI2lmZGVmIEVWX0ZMQUcxCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX0ZMQUcxIiwgRVZfRkxBRzEpOworI2VuZGlmCiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRU9GIiwgRVZfRU9GKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRVJST1IiLCBFVl9FUlJPUik7CiAKICAgICAvKiBSRUFEIFdSSVRFIGZpbHRlciBmbGFnICovCisjaWZkZWYgTk9URV9MT1dBVAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0xPV0FUIiwgTk9URV9MT1dBVCk7CisjZW5kaWYKIAogICAgIC8qIFZOT0RFIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfVk5PREUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9ERUxFVEUiLCBOT1RFX0RFTEVURSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfV1JJVEUiLCBOT1RFX1dSSVRFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9FWFRFTkQiLCBOT1RFX0VYVEVORCk7CkBAIC0yNTUzLDggKzI1ODIsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9MSU5LIiwgTk9URV9MSU5LKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9SRU5BTUUiLCBOT1RFX1JFTkFNRSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfUkVWT0tFIiwgTk9URV9SRVZPS0UpOworI2VuZGlmCiAKICAgICAvKiBQUk9DIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYSVQiLCBOT1RFX0VYSVQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0ZPUksiLCBOT1RFX0ZPUkspOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYRUMiLCBOT1RFX0VYRUMpOwpAQCAtMjU2NCw2ICsyNTk1LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9UUkFDSyIsIE5PVEVfVFJBQ0spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0NISUxEIiwgTk9URV9DSElMRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfVFJBQ0tFUlIiLCBOT1RFX1RSQUNLRVJSKTsKKyNlbmRpZgogCiAgICAgLyogTkVUREVWIGZpbHRlciBmbGFncyAqLwogI2lmZGVmIEVWRklMVF9ORVRERVYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggNmNiMzJlZC4uZDUwNjVjZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgU0hBMV9JTlQzMjsgICAgICAgIC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBTSEExX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgbG9uZyBsb25nIFNIQTFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggZjlmZjBlYS4uMTc3NzVhZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtMjcsMTUgKzI3LDEzIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04MWEzY2NkZTkyYmNmZThkXSovCiAKLSNpZmRlZiBQWV9MT05HX0xPTkcgLyogSWYgbm8gUFlfTE9OR19MT05HLCBkb24ndCBjb21waWxlIGFueXRoaW5nISAqLwotCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU0hBX0JZVEU7CiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IFNIQV9JTlQzMjsgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgdW5zaWduZWQgUFlfTE9OR19MT05HIFNIQV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBTSEFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpAQCAtMTIxLDEyICsxMTksMTIgQEAKIAogLyogVmFyaW91cyBsb2dpY2FsIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBST1I2NCh4LCB5KSBcCi0gICAgKCAoKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSk+PigodW5zaWduZWQgUFlfTE9OR19MT05HKSh5KSAmIDYzKSkgfCBcCi0gICAgICAoKHgpPDwoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoNjQtKCh5KSAmIDYzKSkpKSkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkKKyAgICAoICgoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCk+PigodW5zaWduZWQgbG9uZyBsb25nKSh5KSAmIDYzKSkgfCBcCisgICAgICAoKHgpPDwoKHVuc2lnbmVkIGxvbmcgbG9uZykoNjQtKCh5KSAmIDYzKSkpKSkgJiAweEZGRkZGRkZGRkZGRkZGRkZVTEwpCiAjZGVmaW5lIENoKHgseSx6KSAgICAgICAoeiBeICh4ICYgKHkgXiB6KSkpCiAjZGVmaW5lIE1haih4LHkseikgICAgICAoKCh4IHwgeSkgJiB6KSB8ICh4ICYgeSkpCiAjZGVmaW5lIFMoeCwgbikgICAgICAgICBST1I2NCgoeCksKG4pKQotI2RlZmluZSBSKHgsIG4pICAgICAgICAgKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkgPj4gKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpbikpCisjZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCkgPj4gKCh1bnNpZ25lZCBsb25nIGxvbmcpbikpCiAjZGVmaW5lIFNpZ21hMCh4KSAgICAgICAoUyh4LCAyOCkgXiBTKHgsIDM0KSBeIFMoeCwgMzkpKQogI2RlZmluZSBTaWdtYTEoeCkgICAgICAgKFMoeCwgMTQpIF4gUyh4LCAxOCkgXiBTKHgsIDQxKSkKICNkZWZpbmUgR2FtbWEwKHgpICAgICAgIChTKHgsIDEpIF4gUyh4LCA4KSBeIFIoeCwgNykpCkBAIC0xNTgsODYgKzE1Niw4NiBAQAogICAgICBkICs9IHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGggID0gdDAgKyB0MTsKIAotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMCxQeV9VTEwoMHg0MjhhMmY5OGQ3MjhhZTIyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLFB5X1VMTCgweDcxMzc0NDkxMjNlZjY1Y2QpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDIsUHlfVUxMKDB4YjVjMGZiY2ZlYzRkM2IyZikpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMyxQeV9VTEwoMHhlOWI1ZGJhNTgxODlkYmJjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LFB5X1VMTCgweDM5NTZjMjViZjM0OGI1MzgpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUsUHlfVUxMKDB4NTlmMTExZjFiNjA1ZDAxOSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNixQeV9VTEwoMHg5MjNmODJhNGFmMTk0ZjliKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LFB5X1VMTCgweGFiMWM1ZWQ1ZGE2ZDgxMTgpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDgsUHlfVUxMKDB4ZDgwN2FhOThhMzAzMDI0MikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sOSxQeV9VTEwoMHgxMjgzNWIwMTQ1NzA2ZmJlKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCxQeV9VTEwoMHgyNDMxODViZTRlZTRiMjhjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxMSxQeV9VTEwoMHg1NTBjN2RjM2Q1ZmZiNGUyKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwxMixQeV9VTEwoMHg3MmJlNWQ3NGYyN2I4OTZmKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMyxQeV9VTEwoMHg4MGRlYjFmZTNiMTY5NmIxKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwxNCxQeV9VTEwoMHg5YmRjMDZhNzI1YzcxMjM1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwxNSxQeV9VTEwoMHhjMTliZjE3NGNmNjkyNjk0KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNixQeV9VTEwoMHhlNDliNjljMTllZjE0YWQyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxNyxQeV9VTEwoMHhlZmJlNDc4NjM4NGYyNWUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxOCxQeV9VTEwoMHgwZmMxOWRjNjhiOGNkNWI1KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSxQeV9VTEwoMHgyNDBjYTFjYzc3YWM5YzY1KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyMCxQeV9VTEwoMHgyZGU5MmM2ZjU5MmIwMjc1KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyMSxQeV9VTEwoMHg0YTc0ODRhYTZlYTZlNDgzKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMixQeV9VTEwoMHg1Y2IwYTlkY2JkNDFmYmQ0KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwyMyxQeV9VTEwoMHg3NmY5ODhkYTgzMTE1M2I1KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwyNCxQeV9VTEwoMHg5ODNlNTE1MmVlNjZkZmFiKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSxQeV9VTEwoMHhhODMxYzY2ZDJkYjQzMjEwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyNixQeV9VTEwoMHhiMDAzMjdjODk4ZmIyMTNmKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwyNyxQeV9VTEwoMHhiZjU5N2ZjN2JlZWYwZWU0KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCxQeV9VTEwoMHhjNmUwMGJmMzNkYTg4ZmMyKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyOSxQeV9VTEwoMHhkNWE3OTE0NzkzMGFhNzI1KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzMCxQeV9VTEwoMHgwNmNhNjM1MWUwMDM4MjZmKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSxQeV9VTEwoMHgxNDI5Mjk2NzBhMGU2ZTcwKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwzMixQeV9VTEwoMHgyN2I3MGE4NTQ2ZDIyZmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwzMyxQeV9VTEwoMHgyZTFiMjEzODVjMjZjOTI2KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCxQeV9VTEwoMHg0ZDJjNmRmYzVhYzQyYWVkKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzNSxQeV9VTEwoMHg1MzM4MGQxMzlkOTViM2RmKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwzNixQeV9VTEwoMHg2NTBhNzM1NDhiYWY2M2RlKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNyxQeV9VTEwoMHg3NjZhMGFiYjNjNzdiMmE4KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzOCxQeV9VTEwoMHg4MWMyYzkyZTQ3ZWRhZWU2KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzOSxQeV9VTEwoMHg5MjcyMmM4NTE0ODIzNTNiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCxQeV9VTEwoMHhhMmJmZThhMTRjZjEwMzY0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0MSxQeV9VTEwoMHhhODFhNjY0YmJjNDIzMDAxKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw0MixQeV9VTEwoMHhjMjRiOGI3MGQwZjg5NzkxKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MyxQeV9VTEwoMHhjNzZjNTFhMzA2NTRiZTMwKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0NCxQeV9VTEwoMHhkMTkyZTgxOWQ2ZWY1MjE4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw0NSxQeV9VTEwoMHhkNjk5MDYyNDU1NjVhOTEwKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NixQeV9VTEwoMHhmNDBlMzU4NTU3NzEyMDJhKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw0NyxQeV9VTEwoMHgxMDZhYTA3MDMyYmJkMWI4KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0OCxQeV9VTEwoMHgxOWE0YzExNmI4ZDJkMGM4KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSxQeV9VTEwoMHgxZTM3NmMwODUxNDFhYjUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1MCxQeV9VTEwoMHgyNzQ4Nzc0Y2RmOGVlYjk5KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1MSxQeV9VTEwoMHgzNGIwYmNiNWUxOWI0OGE4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MixQeV9VTEwoMHgzOTFjMGNiM2M1Yzk1YTYzKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1MyxQeV9VTEwoMHg0ZWQ4YWE0YWUzNDE4YWNiKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw1NCxQeV9VTEwoMHg1YjljY2E0Zjc3NjNlMzczKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSxQeV9VTEwoMHg2ODJlNmZmM2Q2YjJiOGEzKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw1NixQeV9VTEwoMHg3NDhmODJlZTVkZWZiMmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw1NyxQeV9VTEwoMHg3OGE1NjM2ZjQzMTcyZjYwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCxQeV9VTEwoMHg4NGM4NzgxNGExZjBhYjcyKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1OSxQeV9VTEwoMHg4Y2M3MDIwODFhNjQzOWVjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2MCxQeV9VTEwoMHg5MGJlZmZmYTIzNjMxZTI4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSxQeV9VTEwoMHhhNDUwNmNlYmRlODJiZGU5KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2MixQeV9VTEwoMHhiZWY5YTNmN2IyYzY3OTE1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw2MyxQeV9VTEwoMHhjNjcxNzhmMmUzNzI1MzJiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCxQeV9VTEwoMHhjYTI3M2VjZWVhMjY2MTljKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw2NSxQeV9VTEwoMHhkMTg2YjhjNzIxYzBjMjA3KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw2NixQeV9VTEwoMHhlYWRhN2RkNmNkZTBlYjFlKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NyxQeV9VTEwoMHhmNTdkNGY3ZmVlNmVkMTc4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2OCxQeV9VTEwoMHgwNmYwNjdhYTcyMTc2ZmJhKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2OSxQeV9VTEwoMHgwYTYzN2RjNWEyYzg5OGE2KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCxQeV9VTEwoMHgxMTNmOTgwNGJlZjkwZGFlKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3MSxQeV9VTEwoMHgxYjcxMGIzNTEzMWM0NzFiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw3MixQeV9VTEwoMHgyOGRiNzdmNTIzMDQ3ZDg0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MyxQeV9VTEwoMHgzMmNhYWI3YjQwYzcyNDkzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw3NCxQeV9VTEwoMHgzYzllYmUwYTE1YzliZWJjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw3NSxQeV9VTEwoMHg0MzFkNjdjNDljMTAwZDRjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NixQeV9VTEwoMHg0Y2M1ZDRiZWNiM2U0MmI2KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw3NyxQeV9VTEwoMHg1OTdmMjk5Y2ZjNjU3ZTJhKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3OCxQeV9VTEwoMHg1ZmNiNmZhYjNhZDZmYWVjKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSxQeV9VTEwoMHg2YzQ0MTk4YzRhNDc1ODE3KSk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwwLDB4NDI4YTJmOThkNzI4YWUyMlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLDB4NzEzNzQ0OTEyM2VmNjVjZFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyLDB4YjVjMGZiY2ZlYzRkM2IyZlVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzLDB4ZTliNWRiYTU4MTg5ZGJiY1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LDB4Mzk1NmMyNWJmMzQ4YjUzOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1LDB4NTlmMTExZjFiNjA1ZDAxOVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2LDB4OTIzZjgyYTRhZjE5NGY5YlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LDB4YWIxYzVlZDVkYTZkODExOFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw4LDB4ZDgwN2FhOThhMzAzMDI0MlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw5LDB4MTI4MzViMDE0NTcwNmZiZVVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCwweDI0MzE4NWJlNGVlNGIyOGNVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTEsMHg1NTBjN2RjM2Q1ZmZiNGUyVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDEyLDB4NzJiZTVkNzRmMjdiODk2ZlVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMywweDgwZGViMWZlM2IxNjk2YjFVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMTQsMHg5YmRjMDZhNzI1YzcxMjM1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDE1LDB4YzE5YmYxNzRjZjY5MjY5NFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNiwweGU0OWI2OWMxOWVmMTRhZDJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMTcsMHhlZmJlNDc4NjM4NGYyNWUzVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDE4LDB4MGZjMTlkYzY4YjhjZDViNVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSwweDI0MGNhMWNjNzdhYzljNjVVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjAsMHgyZGU5MmM2ZjU5MmIwMjc1VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDIxLDB4NGE3NDg0YWE2ZWE2ZTQ4M1VMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMiwweDVjYjBhOWRjYmQ0MWZiZDRVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMjMsMHg3NmY5ODhkYTgzMTE1M2I1VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDI0LDB4OTgzZTUxNTJlZTY2ZGZhYlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSwweGE4MzFjNjZkMmRiNDMyMTBVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMjYsMHhiMDAzMjdjODk4ZmIyMTNmVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDI3LDB4YmY1OTdmYzdiZWVmMGVlNFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCwweGM2ZTAwYmYzM2RhODhmYzJVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjksMHhkNWE3OTE0NzkzMGFhNzI1VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDMwLDB4MDZjYTYzNTFlMDAzODI2ZlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSwweDE0MjkyOTY3MGEwZTZlNzBVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMzIsMHgyN2I3MGE4NTQ2ZDIyZmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDMzLDB4MmUxYjIxMzg1YzI2YzkyNlVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCwweDRkMmM2ZGZjNWFjNDJhZWRVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMzUsMHg1MzM4MGQxMzlkOTViM2RmVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDM2LDB4NjUwYTczNTQ4YmFmNjNkZVVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNywweDc2NmEwYWJiM2M3N2IyYThVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzgsMHg4MWMyYzkyZTQ3ZWRhZWU2VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDM5LDB4OTI3MjJjODUxNDgyMzUzYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCwweGEyYmZlOGExNGNmMTAzNjRVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDEsMHhhODFhNjY0YmJjNDIzMDAxVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDQyLDB4YzI0YjhiNzBkMGY4OTc5MVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MywweGM3NmM1MWEzMDY1NGJlMzBVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNDQsMHhkMTkyZTgxOWQ2ZWY1MjE4VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDQ1LDB4ZDY5OTA2MjQ1NTY1YTkxMFVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NiwweGY0MGUzNTg1NTc3MTIwMmFVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNDcsMHgxMDZhYTA3MDMyYmJkMWI4VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQ4LDB4MTlhNGMxMTZiOGQyZDBjOFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSwweDFlMzc2YzA4NTE0MWFiNTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTAsMHgyNzQ4Nzc0Y2RmOGVlYjk5VUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDUxLDB4MzRiMGJjYjVlMTliNDhhOFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MiwweDM5MWMwY2IzYzVjOTVhNjNVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNTMsMHg0ZWQ4YWE0YWUzNDE4YWNiVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDU0LDB4NWI5Y2NhNGY3NzYzZTM3M1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSwweDY4MmU2ZmYzZDZiMmI4YTNVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNTYsMHg3NDhmODJlZTVkZWZiMmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDU3LDB4NzhhNTYzNmY0MzE3MmY2MFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCwweDg0Yzg3ODE0YTFmMGFiNzJVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTksMHg4Y2M3MDIwODFhNjQzOWVjVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDYwLDB4OTBiZWZmZmEyMzYzMWUyOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSwweGE0NTA2Y2ViZGU4MmJkZTlVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNjIsMHhiZWY5YTNmN2IyYzY3OTE1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDYzLDB4YzY3MTc4ZjJlMzcyNTMyYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCwweGNhMjczZWNlZWEyNjYxOWNVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNjUsMHhkMTg2YjhjNzIxYzBjMjA3VUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDY2LDB4ZWFkYTdkZDZjZGUwZWIxZVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NywweGY1N2Q0ZjdmZWU2ZWQxNzhVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjgsMHgwNmYwNjdhYTcyMTc2ZmJhVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDY5LDB4MGE2MzdkYzVhMmM4OThhNlVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCwweDExM2Y5ODA0YmVmOTBkYWVVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzEsMHgxYjcxMGIzNTEzMWM0NzFiVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDcyLDB4MjhkYjc3ZjUyMzA0N2Q4NFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MywweDMyY2FhYjdiNDBjNzI0OTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNzQsMHgzYzllYmUwYTE1YzliZWJjVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDc1LDB4NDMxZDY3YzQ5YzEwMGQ0Y1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NiwweDRjYzVkNGJlY2IzZTQyYjZVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNzcsMHg1OTdmMjk5Y2ZjNjU3ZTJhVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDc4LDB4NWZjYjZmYWIzYWQ2ZmFlY1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSwweDZjNDQxOThjNGE0NzU4MTdVTEwpOwogCiAjdW5kZWYgUk5ECiAKQEAgLTgwMyw1ICs4MDEsMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0hBNTEyVHlwZSIsIChQeU9iamVjdCAqKSZTSEE1MTJ0eXBlKTsKICAgICByZXR1cm4gbTsKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCA3NTNkOTg3Li5lMjcwNzViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTE5OCw3ICsxOTgsNyBAQAogcmVwb3J0X3dha2V1cF93cml0ZV9lcnJvcih2b2lkICpkYXRhKQogewogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87Ci0gICAgZXJybm8gPSAoaW50KSAoUHlfaW50cHRyX3QpIGRhdGE7CisgICAgZXJybm8gPSAoaW50KSAoaW50cHRyX3QpIGRhdGE7CiAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byB3cml0ZSB0byB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgd2FrZXVwIGZkOlxuIik7CkBAIC0yNzcsNyArMjc3LDcgQEAKIAogICAgICAgICAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoUHlfaW50cHRyX3QpZXJybm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGludHB0cl90KWVycm5vKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmZCA9IChpbnQpc29ja2ZkOwotICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC02MDksMTEgKzYwOSw2IEBACiAgICAgaWYgKGZkICE9IC0xKSB7CiAgICAgICAgIGludCBibG9ja2luZzsKIAotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3RhdHVzKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyNzEsMjEwICsxMjY2LDE2OSBAQAogICAgIH0KIAogI2lmZGVmIFNJR0hVUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSFVQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSFVQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSFVQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU5UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JSRUFLCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdCUkVBSyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0JSRUFLIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlJFQUspKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUVVJVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUVVJVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1FVSVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdRVUlUKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RSQVAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RSQVApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUUkFQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFJBUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJT1QKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lPVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lPVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdBQlJUCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdBQlJUKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQUJSVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0FCUlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRU1UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdFTVQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdFTVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdFTVQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRlBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdGUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdGUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdGUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHS0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHS0lMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0tJTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdLSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JVUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQlVTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQlVTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlVTKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NFR1YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NFR1YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTRUdWIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU0VHVikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdTWVMKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NZUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NZUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1NZUykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQSVBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQSVBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUElQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BJUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQUxSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQUxSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0FMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdBTFJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RFUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RFUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdURVJNIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVEVSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVU1IxCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVU1IxKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVNSMSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VTUjEpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVNSMgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVNSMik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1VTUjIiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVU1IyKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NMRAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ0xEKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ0xEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0xEKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NITEQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0NITEQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDSExEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0hMRCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQV1IKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BXUik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BXUiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BXUikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VSRwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVJHKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVJHIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVJHKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1dJTkNICi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdXSU5DSCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1dJTkNIIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHV0lOQ0gpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUE9MTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUE9MTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BPTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQT0xMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NUT1AKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NUT1ApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTVE9QIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU1RPUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUU1RQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUU1RQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFNUUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RTVFApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ09OVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ09OVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NPTlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDT05UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RUSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RUSU4pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUVElOIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFRJTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUVE9VCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUVE9VKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFRPVSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RUT1UpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVlRBTFJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdWVEFMUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdWVEFMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdWVEFMUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUFJPRgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUFJPRik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BST0YiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1hDUFUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1hDUFUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdYQ1BVIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHWENQVSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdYRlNaCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdYRlNaKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHWEZTWiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1hGU1opKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUlRNSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1JUTUlOKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUlRNSU4iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdSVE1JTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdSVE1BWAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUlRNQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdSVE1BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1JUTUFYKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lORk8KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lORk8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTkZPIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5GTykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIElUSU1FUl9SRUFMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfUkVBTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9SRUFMIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfUkVBTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBJVElNRVJfVklSVFVBTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1ZJUlRVQUwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfVklSVFVBTCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1ZJUlRVQUwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgSVRJTUVSX1BST0YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9QUk9GKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1BST0YiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9QUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZCAoSEFWRV9TRVRJVElNRVIpIHx8IGRlZmluZWQgKEhBVkVfR0VUSVRJTUVSKQpAQCAtMTQ4NSwxNSArMTQzOSwxMyBAQAogI2VuZGlmCiAKICNpZmRlZiBDVFJMX0NfRVZFTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKENUUkxfQ19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQ19FVkVOVCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ1RSTF9DX0VWRU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgQ1RSTF9CUkVBS19FVkVOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ1RSTF9CUkVBS19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQlJFQUtfRVZFTlQiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENUUkxfQlJFQUtfRVZFTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCBhZjZjYzk0Li5jOWEzOGNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogc2VuZChkYXRhWywgZmxhZ3NdKSAtLSBzZW5kIGRhdGEsIG1heSBub3Qgc2VuZCBhbGwgb2YgaXRcblwKIHNlbmR0byhkYXRhWywgZmxhZ3NdLCBhZGRyKSAtLSBzZW5kIGRhdGEgdG8gYSBnaXZlbiBhZGRyZXNzXG5cCiBzZXRibG9ja2luZygwIHwgMSkgLS0gc2V0IG9yIGNsZWFyIHRoZSBibG9ja2luZyBJL08gZmxhZ1xuXAotc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAorc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWVbLCBvcHRsZW5dKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKIHNldHRpbWVvdXQoTm9uZSB8IGZsb2F0KSAtLSBzZXQgb3IgY2xlYXIgdGhlIHRpbWVvdXRcblwKIHNodXRkb3duKGhvdykgLS0gc2h1dCBkb3duIHRyYWZmaWMgaW4gb25lIG9yIGJvdGggZGlyZWN0aW9uc1xuXAogaWZfbmFtZWluZGV4KCkgLS0gcmV0dXJuIGFsbCBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lc1xuXApAQCAtMTUzLDcgKzE1Myw3IEBACiAgICBPbiB0aGUgb3RoZXIgaGFuZCwgbm90IGFsbCBMaW51eCB2ZXJzaW9ucyBhZ3JlZSwgc28gdGhlcmUgdGhlIHNldHRpbmdzCiAgICBjb21wdXRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBhcmUgbmVlZGVkISAqLwogCi0jaWZuZGVmIGxpbnV4CisjaWZuZGVmIF9fbGludXhfXwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwpAQCAtMTYzLDcgKzE2MywxMSBAQAogIyBpbmNsdWRlIDxzeXMvdWlvLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBXSVRIX1RIUkVBRAorI2lmICFkZWZpbmVkKFdJVEhfVEhSRUFEKQorIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKQEAgLTE3Miw3ICsxNzYsNyBAQAogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwotIyBlbGlmIGRlZmluZWQobGludXgpCisjIGVsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAvKiBSZWx5IG9uIHRoZSBjb25maWd1cmUgc2NyaXB0ICovCiAjIGVsaWYgZGVmaW5lZChfTElOVVhfU09VUkNFX0NPTVBBVCkgLyogTGludXggY29tcGF0aWJpbGl0eSBvbiBBSVggKi8KICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwpAQCAtMjg0LDYgKzI4OCwzNiBAQAogI2luY2x1ZGUgPG5ldC9pZi5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworI2luY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgorI2lmbmRlZiBBRl9BTEcKKyNkZWZpbmUgQUZfQUxHIDM4CisjZW5kaWYKKyNpZm5kZWYgU09MX0FMRworI2RlZmluZSBTT0xfQUxHIDI3OQorI2VuZGlmCisKKy8qIExpbnV4IDMuMTkgKi8KKyNpZm5kZWYgQUxHX1NFVF9BRUFEX0FTU09DTEVOCisjZGVmaW5lIEFMR19TRVRfQUVBRF9BU1NPQ0xFTiAgICAgICAgICAgNAorI2VuZGlmCisjaWZuZGVmIEFMR19TRVRfQUVBRF9BVVRIU0laRQorI2RlZmluZSBBTEdfU0VUX0FFQURfQVVUSFNJWkUgICAgICAgICAgIDUKKyNlbmRpZgorLyogTGludXggNC44ICovCisjaWZuZGVmIEFMR19TRVRfUFVCS0VZCisjZGVmaW5lIEFMR19TRVRfUFVCS0VZICAgICAgICAgICAgICAgICAgNgorI2VuZGlmCisKKyNpZm5kZWYgQUxHX09QX1NJR04KKyNkZWZpbmUgQUxHX09QX1NJR04gICAgICAgICAgICAgICAgICAgICAyCisjZW5kaWYKKyNpZm5kZWYgQUxHX09QX1ZFUklGWQorI2RlZmluZSBBTEdfT1BfVkVSSUZZICAgICAgICAgICAgICAgICAgIDMKKyNlbmRpZgorCisjZW5kaWYgLyogSEFWRV9TT0NLQUREUl9BTEcgKi8KKwogLyogR2VuZXJpYyBzb2NrZXQgb2JqZWN0IGRlZmluaXRpb25zIGFuZCBpbmNsdWRlcyAqLwogI2RlZmluZSBQeVNvY2tldF9CVUlMRElOR19TT0NLRVQKICNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIKQEAgLTU5MCw2ICs2MjQsNyBAQAogc3RhdGljIGludAogaW50ZXJuYWxfc2V0YmxvY2tpbmcoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBpbnQgYmxvY2spCiB7CisgICAgaW50IHJlc3VsdCA9IC0xOwogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB1X2xvbmcgYXJnOwogI2VuZGlmCkBAIC02MDgsMjQgKzY0Myw0MSBAQAogI2lmbmRlZiBNU19XSU5ET1dTCiAjaWYgKGRlZmluZWQoSEFWRV9TWVNfSU9DVExfSCkgJiYgZGVmaW5lZChGSU9OQklPKSkKICAgICBibG9jayA9ICFibG9jazsKLSAgICBpb2N0bChzLT5zb2NrX2ZkLCBGSU9OQklPLCAodW5zaWduZWQgaW50ICopJmJsb2NrKTsKKyAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgRklPTkJJTywgKHVuc2lnbmVkIGludCAqKSZibG9jaykgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKICNlbHNlCiAgICAgZGVsYXlfZmxhZyA9IGZjbnRsKHMtPnNvY2tfZmQsIEZfR0VURkwsIDApOworICAgIGlmIChkZWxheV9mbGFnID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CiAgICAgaWYgKGJsb2NrKQogICAgICAgICBuZXdfZGVsYXlfZmxhZyA9IGRlbGF5X2ZsYWcgJiAofk9fTk9OQkxPQ0spOwogICAgIGVsc2UKICAgICAgICAgbmV3X2RlbGF5X2ZsYWcgPSBkZWxheV9mbGFnIHwgT19OT05CTE9DSzsKICAgICBpZiAobmV3X2RlbGF5X2ZsYWcgIT0gZGVsYXlfZmxhZykKLSAgICAgICAgZmNudGwocy0+c29ja19mZCwgRl9TRVRGTCwgbmV3X2RlbGF5X2ZsYWcpOworICAgICAgICBpZiAoZmNudGwocy0+c29ja19mZCwgRl9TRVRGTCwgbmV3X2RlbGF5X2ZsYWcpID09IC0xKQorICAgICAgICAgICAgZ290byBkb25lOwogI2VuZGlmCiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgYXJnID0gIWJsb2NrOwotICAgIGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpOworICAgIGlmIChpb2N0bHNvY2tldChzLT5zb2NrX2ZkLCBGSU9OQklPLCAmYXJnKSAhPSAwKQorICAgICAgICBnb3RvIGRvbmU7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCisgICAgcmVzdWx0ID0gMDsKKworICBkb25lOgorICAgIDsgIC8qIG5lY2Vzc2FyeSBmb3IgLS13aXRob3V0LXRocmVhZHMgZmxhZyAqLwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKLSAgICAvKiBTaW5jZSB0aGVzZSBkb24ndCByZXR1cm4gYW55dGhpbmcgKi8KLSAgICByZXR1cm4gMTsKKyAgICBpZiAocmVzdWx0KSB7CisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworI2Vsc2UKKyAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGludApAQCAtODczLDcgKzkyNSw3IEBACiAvKiBEZWZhdWx0IHRpbWVvdXQgZm9yIG5ldyBzb2NrZXRzICovCiBzdGF0aWMgX1B5VGltZV90IGRlZmF1bHR0aW1lb3V0ID0gX1BZVElNRV9GUk9NU0VDT05EUygtMSk7CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiBpbml0X3NvY2tvYmplY3QoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLAogICAgICAgICAgICAgICAgIFNPQ0tFVF9UIGZkLCBpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvKQogewpAQCAtODkwLDEwICs5NDIsMTMgQEAKICNlbmRpZgogICAgIHsKICAgICAgICAgcy0+c29ja190aW1lb3V0ID0gZGVmYXVsdHRpbWVvdXQ7Ci0gICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwKQotICAgICAgICAgICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgMCk7CisgICAgICAgIGlmIChkZWZhdWx0dGltZW91dCA+PSAwKSB7CisgICAgICAgICAgICBpZiAoaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgMCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0KKyAgICByZXR1cm4gMDsKIH0KIAogCkBAIC05MDgsOCArOTYzLDEyIEBACiAgICAgUHlTb2NrZXRTb2NrT2JqZWN0ICpzOwogICAgIHMgPSAoUHlTb2NrZXRTb2NrT2JqZWN0ICopCiAgICAgICAgIFB5VHlwZV9HZW5lcmljTmV3KCZzb2NrX3R5cGUsIE5VTEwsIE5VTEwpOwotICAgIGlmIChzICE9IE5VTEwpCi0gICAgICAgIGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90byk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluaXRfc29ja29iamVjdChzLCBmZCwgZmFtaWx5LCB0eXBlLCBwcm90bykgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHM7CiB9CiAKQEAgLTkyOCw3ICs5ODcsNyBAQAogICAgYW4gZXJyb3Igb2NjdXJyZWQ7IHRoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKi8KIAogc3RhdGljIGludAotc2V0aXBhZGRyKGNoYXIgKm5hbWUsIHN0cnVjdCBzb2NrYWRkciAqYWRkcl9yZXQsIHNpemVfdCBhZGRyX3JldF9zaXplLCBpbnQgYWYpCitzZXRpcGFkZHIoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHNvY2thZGRyICphZGRyX3JldCwgc2l6ZV90IGFkZHJfcmV0X3NpemUsIGludCBhZikKIHsKICAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMsICpyZXM7CiAgICAgaW50IGVycm9yOwpAQCAtMTEwOSw3ICsxMTY4LDcgQEAKICAgIGFuIGVycm9yIG9jY3VycmVkLiAqLwogCiBzdGF0aWMgaW50Ci1zZXRiZGFkZHIoY2hhciAqbmFtZSwgYmRhZGRyX3QgKmJkYWRkcikKK3NldGJkYWRkcihjb25zdCBjaGFyICpuYW1lLCBiZGFkZHJfdCAqYmRhZGRyKQogewogICAgIHVuc2lnbmVkIGludCBiMCwgYjEsIGIyLCBiMywgYjQsIGI1OwogICAgIGNoYXIgY2g7CkBAIC0xMTgyLDcgKzEyNDEsNyBAQAogICAgIGNhc2UgQUZfVU5JWDoKICAgICB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl91biAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4gKikgYWRkcjsKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogICAgICAgICBpZiAoYS0+c3VuX3BhdGhbMF0gPT0gMCkgeyAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlICovCiAgICAgICAgICAgICBhZGRybGVuIC09IG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwogICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYS0+c3VuX3BhdGgsIGFkZHJsZW4pOwpAQCAtMTM3Myw2ICsxNDMyLDIyIEBACiAgICAgICAgIH0KICNlbmRpZgogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBjYXNlIEFGX0FMRzoKKyAgICB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9hbGcgKmEgPSAoc3RydWN0IHNvY2thZGRyX2FsZyAqKWFkZHI7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJzI3MjSEgiLAorICAgICAgICAgICAgYS0+c2FsZ190eXBlLAorICAgICAgICAgICAgc3RybmxlbigoY29uc3QgY2hhciopYS0+c2FsZ190eXBlLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoYS0+c2FsZ190eXBlKSksCisgICAgICAgICAgICBhLT5zYWxnX25hbWUsCisgICAgICAgICAgICBzdHJubGVuKChjb25zdCBjaGFyKilhLT5zYWxnX25hbWUsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZihhLT5zYWxnX25hbWUpKSwKKyAgICAgICAgICAgIGEtPnNhbGdfZmVhdCwKKyAgICAgICAgICAgIGEtPnNhbGdfbWFzayk7CisgICAgfQorI2VuZGlmCisKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIAogICAgIGRlZmF1bHQ6CkBAIC0xNDAzLDcgKzE0NzgsNyBAQAogaWRuYV9jb252ZXJ0ZXIoUHlPYmplY3QgKm9iaiwgc3RydWN0IG1heWJlX2lkbmEgKmRhdGEpCiB7CiAgICAgc2l6ZV90IGxlbjsKLSAgICBQeU9iamVjdCAqb2JqMiwgKm9iajM7CisgICAgUHlPYmplY3QgKm9iajI7CiAgICAgaWYgKG9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlkbmFfY2xlYW51cChkYXRhKTsKICAgICAgICAgcmV0dXJuIDE7CkBAIC0xNDE4LDMxICsxNDkzLDI3IEBACiAgICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZUFycmF5X0FzU3RyaW5nKG9iaik7CiAgICAgICAgIGxlbiA9IFB5Qnl0ZUFycmF5X1NpemUob2JqKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikgJiYgUHlVbmljb2RlX1JFQURZKG9iaikgPT0gMCAmJiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvYmopKSB7Ci0gICAgICAgIGRhdGEtPmJ1ZiA9IFB5VW5pY29kZV9EQVRBKG9iaik7Ci0gICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IDAgJiYgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob2JqKSkgeworICAgICAgICAgICAgZGF0YS0+YnVmID0gUHlVbmljb2RlX0RBVEEob2JqKTsKKyAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvYmoyID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhvYmosICJpZG5hIiwgTlVMTCk7CisgICAgICAgICAgICBpZiAoIW9iajIpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhvYmoyKSk7CisgICAgICAgICAgICBkYXRhLT5vYmogPSBvYmoyOworICAgICAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlc19BU19TVFJJTkcob2JqMik7CisgICAgICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9iajIpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBvYmoyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICAgICAgaWYgKCFvYmoyKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RyaW5nIG9yIHVuaWNvZGUgdGV4dCBidWZmZXIgZXhwZWN0ZWQsIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIG9iajMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iajIsICJpZG5hIiwgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvYmoyKTsKLSAgICAgICAgaWYgKCFvYmozKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2Rpbmcgb2YgaG9zdG5hbWUgZmFpbGVkIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sob2JqMykpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvYmozKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQgdG8gcmV0dXJuIGJ5dGVzIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBkYXRhLT5vYmogPSBvYmozOwotICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmozKTsKLSAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvYmozKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0ciwgYnl0ZXMgb3IgYnl0ZWFycmF5IGV4cGVjdGVkLCBub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgb2JqLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChzdHJsZW4oZGF0YS0+YnVmKSAhPSBsZW4pIHsKICAgICAgICAgUHlfQ0xFQVIoZGF0YS0+b2JqKTsKQEAgLTE0ODUsNyArMTU1Niw3IEBACiAgICAgICAgIGFzc2VydChwYXRoLmxlbiA+PSAwKTsKIAogICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl91biopYWRkcl9yZXQ7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICAgICAgaWYgKHBhdGgubGVuID4gMCAmJiAqKGNvbnN0IGNoYXIgKilwYXRoLmJ1ZiA9PSAwKSB7CiAgICAgICAgICAgICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgZXh0ZW5zaW9uICovCiAgICAgICAgICAgICBpZiAoKHNpemVfdClwYXRoLmxlbiA+IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgewpAQCAtMTk0Miw2ICsyMDEzLDM2IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBjYXNlIEFGX0FMRzoKKyAgICB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9hbGcgKnNhOworICAgICAgICBjaGFyICp0eXBlOworICAgICAgICBjaGFyICpuYW1lOworICAgICAgICBzYSA9IChzdHJ1Y3Qgc29ja2FkZHJfYWxnICopYWRkcl9yZXQ7CisKKyAgICAgICAgbWVtc2V0KHNhLCAwLCBzaXplb2YoKnNhKSk7CisgICAgICAgIHNhLT5zYWxnX2ZhbWlseSA9IEFGX0FMRzsKKworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzfEhIOmdldHNvY2thZGRyYXJnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cGUsICZuYW1lLCAmc2EtPnNhbGdfZmVhdCwgJnNhLT5zYWxnX21hc2spKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIC8qIHNvY2thZGRyX2FsZyBoYXMgZml4ZWQtc2l6ZWQgY2hhciBhcnJheXMgZm9yIHR5cGUgYW5kIG5hbWUgKi8KKyAgICAgICAgaWYgKHN0cmxlbih0eXBlKSA+IHNpemVvZihzYS0+c2FsZ190eXBlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJBRl9BTEcgdHlwZSB0b28gbG9uZy4iKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHN0cm5jcHkoKGNoYXIgKilzYS0+c2FsZ190eXBlLCB0eXBlLCBzaXplb2Yoc2EtPnNhbGdfdHlwZSkpOworICAgICAgICBpZiAoc3RybGVuKG5hbWUpID4gc2l6ZW9mKHNhLT5zYWxnX25hbWUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkFGX0FMRyBuYW1lIHRvbyBsb25nLiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3RybmNweSgoY2hhciAqKXNhLT5zYWxnX25hbWUsIG5hbWUsIHNpemVvZihzYS0+c2FsZ19uYW1lKSk7CisKKyAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YoKnNhKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorI2VuZGlmCiAKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIApAQCAtMjA2NCw2ICsyMTY1LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBjYXNlIEFGX0FMRzoKKyAgICB7CisgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfYWxnKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorI2VuZGlmCiAKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIApAQCAtMjIyMywxMCArMjMzMSwyMSBAQAogc29ja19hY2NlcHRfaW1wbChQeVNvY2tldFNvY2tPYmplY3QgKnMsIHZvaWQgKmRhdGEpCiB7CiAgICAgc3RydWN0IHNvY2tfYWNjZXB0ICpjdHggPSBkYXRhOworICAgIHN0cnVjdCBzb2NrYWRkciAqYWRkciA9IFNBUzJTQShjdHgtPmFkZHJidWYpOworICAgIHNvY2tsZW5fdCAqcGFkZHJsZW4gPSBjdHgtPmFkZHJsZW47CisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICAvKiBBRl9BTEcgZG9lcyBub3Qgc3VwcG9ydCBhY2NlcHQoKSB3aXRoIGFkZHIgYW5kIHJhaXNlcworICAgICAqIEVDT05OQUJPUlRFRCBpbnN0ZWFkLiAqLworICAgIGlmIChzLT5zb2NrX2ZhbWlseSA9PSBBRl9BTEcpIHsKKyAgICAgICAgYWRkciA9IE5VTEw7CisgICAgICAgIHBhZGRybGVuID0gTlVMTDsKKyAgICAgICAgKmN0eC0+YWRkcmxlbiA9IDA7CisgICAgfQorI2VuZGlmCiAKICNpZiBkZWZpbmVkKEhBVkVfQUNDRVBUNCkgJiYgZGVmaW5lZChTT0NLX0NMT0VYRUMpCiAgICAgaWYgKGFjY2VwdDRfd29ya3MgIT0gMCkgewotICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdDQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbiwKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQ0KHMtPnNvY2tfZmQsIGFkZHIsIHBhZGRybGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09DS19DTE9FWEVDKTsKICAgICAgICAgaWYgKGN0eC0+cmVzdWx0ID09IElOVkFMSURfU09DS0VUICYmIGFjY2VwdDRfd29ya3MgPT0gLTEpIHsKICAgICAgICAgICAgIC8qIE9uIExpbnV4IG9sZGVyIHRoYW4gMi42LjI4LCBhY2NlcHQ0KCkgZmFpbHMgd2l0aCBFTk9TWVMgKi8KQEAgLTIyMzQsOSArMjM1Myw5IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGFjY2VwdDRfd29ya3MgPT0gMCkKLSAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisgICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0KHMtPnNvY2tfZmQsIGFkZHIsIHBhZGRybGVuKTsKICNlbHNlCi0gICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgU0FTMlNBKGN0eC0+YWRkcmJ1ZiksIGN0eC0+YWRkcmxlbik7CisgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4pOwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0yMzMyLDEwICsyNDUxLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcy0+c29ja190aW1lb3V0ID0gX1B5VGltZV9Gcm9tU2Vjb25kcyhibG9jayA/IC0xIDogMCk7Ci0gICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgYmxvY2spOwotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChpbnRlcm5hbF9zZXRibG9ja2luZyhzLCBibG9jaykgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoc2V0YmxvY2tpbmdfZG9jLApAQCAtMjQwMSwxMCArMjUyMCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPnNvY2tfdGltZW91dCA9IHRpbWVvdXQ7Ci0gICAgaW50ZXJuYWxfc2V0YmxvY2tpbmcocywgdGltZW91dCA8IDApOwotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChpbnRlcm5hbF9zZXRibG9ja2luZyhzLCB0aW1lb3V0IDwgMCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoc2V0dGltZW91dF9kb2MsCkBAIC0yNDM4LDkgKzI1NTcsMTIgQEAKIG9wZXJhdGlvbnMgYXJlIGRpc2FibGVkLiIpOwogCiAvKiBzLnNldHNvY2tvcHQoKSBtZXRob2QuCi0gICBXaXRoIGFuIGludGVnZXIgdGhpcmQgYXJndW1lbnQsIHNldHMgYW4gaW50ZWdlciBvcHRpb24uCisgICBXaXRoIGFuIGludGVnZXIgdGhpcmQgYXJndW1lbnQsIHNldHMgYW4gaW50ZWdlciBvcHR2YWwgd2l0aCBvcHRsZW49NC4KKyAgIFdpdGggTm9uZSBhcyB0aGlyZCBhcmd1bWVudCBhbmQgYW4gaW50ZWdlciBmb3VydGggYXJndW1lbnQsIHNldAorICAgb3B0dmFsPU5VTEwgd2l0aCB1bnNpZ25lZCBpbnQgYXMgb3B0bGVuLgogICAgV2l0aCBhIHN0cmluZyB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBvcHRpb24gZnJvbSBhIGJ1ZmZlcjsKLSAgIHVzZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgJ3N0cnVjdCcgdG8gZW5jb2RlIHRoZSBzdHJpbmcuICovCisgICB1c2Ugb3B0aW9uYWwgYnVpbHQtaW4gbW9kdWxlICdzdHJ1Y3QnIHRvIGVuY29kZSB0aGUgc3RyaW5nLgorKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfc2V0c29ja29wdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjQ1MCwzMSArMjU3Miw2NCBAQAogICAgIGludCByZXM7CiAgICAgUHlfYnVmZmVyIG9wdHZhbDsKICAgICBpbnQgZmxhZzsKKyAgICB1bnNpZ25lZCBpbnQgb3B0bGVuOworICAgIFB5T2JqZWN0ICpub25lOwogCisgICAgLyogc2V0c29ja29wdChsZXZlbCwgb3B0LCBmbGFnKSAqLwogICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaWk6c2V0c29ja29wdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJmZsYWcpKSB7CiAgICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKSZmbGFnLCBzaXplb2YgZmxhZyk7CisgICAgICAgIGdvdG8gZG9uZTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWl5KjpzZXRzb2Nrb3B0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZvcHR2YWwpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbC5idWYsIG9wdHZhbC5sZW4pOworCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIE5vbmUsIGZsYWcpICovCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyFJOnNldHNvY2tvcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsIFB5X1RZUEUoUHlfTm9uZSksICZub25lLCAmb3B0bGVuKSkgeworICAgICAgICBhc3NlcnQoc2l6ZW9mKHNvY2tsZW5fdCkgPj0gc2l6ZW9mKHVuc2lnbmVkIGludCkpOworICAgICAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIChzb2NrbGVuX3Qpb3B0bGVuKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgLyogc2V0c29ja29wdChsZXZlbCwgb3B0LCBidWZmZXIpICovCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaXkqOnNldHNvY2tvcHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZXZlbCwgJm9wdG5hbWUsICZvcHR2YWwpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAob3B0dmFsLmxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb3B0dmFsKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic29ja2V0IG9wdGlvbiBpcyBsYXJnZXIgdGhhbiAlaSBieXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBJTlRfTUFYKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChyZXMgPCAwKQorICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBvcHR2YWwuYnVmLCAoaW50KW9wdHZhbC5sZW4pOworI2Vsc2UKKyAgICByZXMgPSBzZXRzb2Nrb3B0KHMtPnNvY2tfZmQsIGxldmVsLCBvcHRuYW1lLCBvcHR2YWwuYnVmLCBvcHR2YWwubGVuKTsKKyNlbmRpZgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9wdHZhbCk7CisKK2RvbmU6CisgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKHNldHNvY2tvcHRfZG9jLAotInNldHNvY2tvcHQobGV2ZWwsIG9wdGlvbiwgdmFsdWUpXG5cCisic2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCB2YWx1ZTogaW50KVxuXAorc2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCB2YWx1ZTogYnVmZmVyKVxuXAorc2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCBOb25lLCBvcHRsZW46IGludClcblwKIFxuXAogU2V0IGEgc29ja2V0IG9wdGlvbi4gIFNlZSB0aGUgVW5peCBtYW51YWwgZm9yIGxldmVsIGFuZCBvcHRpb24uXG5cCi1UaGUgdmFsdWUgYXJndW1lbnQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyIG9yIGEgc3RyaW5nLiIpOworVGhlIHZhbHVlIGFyZ3VtZW50IGNhbiBlaXRoZXIgYmUgYW4gaW50ZWdlciwgYSBzdHJpbmcgYnVmZmVyLCBvciBcblwKK05vbmUsIG9wdGxlbi4iKTsKIAogCiAvKiBzLmdldHNvY2tvcHQoKSBtZXRob2QuCkBAIC0yNTY2LDE3ICsyNzIxLDIyIEBACiBzb2NrX2Nsb3NlKFB5U29ja2V0U29ja09iamVjdCAqcykKIHsKICAgICBTT0NLRVRfVCBmZDsKKyAgICBpbnQgcmVzOwogCi0gICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KLSAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKLSAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgotICAgICAqLwogICAgIGZkID0gcy0+c29ja19mZDsKICAgICBpZiAoZmQgIT0gSU5WQUxJRF9TT0NLRVQpIHsKICAgICAgICAgcy0+c29ja19mZCA9IElOVkFMSURfU09DS0VUOworCisgICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZQorICAgICAgICAgICBodHRwOi8vbHduLm5ldC9BcnRpY2xlcy81NzY0NzgvIGFuZAorICAgICAgICAgICBodHRwOi8vbGludXguZGVya2VpbGVyLmNvbS9NYWlsaW5nLUxpc3RzL0tlcm5lbC8yMDA1LTA5LzMwMDAuaHRtbAorICAgICAgICAgICBmb3IgbW9yZSBkZXRhaWxzLiAqLwogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShmZCk7CisgICAgICAgIHJlcyA9IFNPQ0tFVENMT1NFKGZkKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBzLT5lcnJvcmhhbmRsZXIoKTsKKyAgICAgICAgfQogICAgIH0KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0zNzU5LDYgKzM5MTksNjMgQEAKIH07CiAKIHN0YXRpYyBpbnQKK3NvY2tfc2VuZG1zZ19pb3ZlYyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICpkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNnaGRyICptc2csCisgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICoqZGF0YWJ1ZnNvdXQsIFB5X3NzaXplX3QgKm5kYXRhYnVmc291dCkgeworICAgIFB5X3NzaXplX3QgbmRhdGFwYXJ0cywgbmRhdGFidWZzID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGF0YV9mYXN0ID0gTlVMTDsKKyAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgZGF0YV9mYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpOworICAgIGlmIChkYXRhX2Zhc3QgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbmRhdGFwYXJ0cyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShkYXRhX2Zhc3QpOworICAgIGlmIChuZGF0YXBhcnRzID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlbmRtc2coKSBhcmd1bWVudCAxIGlzIHRvbyBsb25nIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBtc2ctPm1zZ19pb3ZsZW4gPSBuZGF0YXBhcnRzOworICAgIGlmIChuZGF0YXBhcnRzID4gMCkgeworICAgICAgICBpb3ZzID0gUHlNZW1fTmV3KHN0cnVjdCBpb3ZlYywgbmRhdGFwYXJ0cyk7CisgICAgICAgIGlmIChpb3ZzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgbXNnLT5tc2dfaW92ID0gaW92czsKKworICAgICAgICBkYXRhYnVmcyA9IFB5TWVtX05ldyhQeV9idWZmZXIsIG5kYXRhcGFydHMpOworICAgICAgICBpZiAoZGF0YWJ1ZnMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKDsgbmRhdGFidWZzIDwgbmRhdGFwYXJ0czsgbmRhdGFidWZzKyspIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZGF0YV9mYXN0LCBuZGF0YWJ1ZnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ5KjtzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMtbGlrZSBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJ1ZnNbbmRhdGFidWZzXSkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfYmFzZSA9IGRhdGFidWZzW25kYXRhYnVmc10uYnVmOworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2xlbiA9IGRhdGFidWZzW25kYXRhYnVmc10ubGVuOworICAgIH0KKyAgICByZXN1bHQgPSAwOworICBmaW5hbGx5OgorICAgICpkYXRhYnVmc291dCA9IGRhdGFidWZzOworICAgICpuZGF0YWJ1ZnNvdXQgPSBuZGF0YWJ1ZnM7CisgICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKIHNvY2tfc2VuZG1zZ19pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKIHsKICAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnICpjdHggPSBkYXRhOwpAQCAtMzc3MiwxMSArMzk4OSwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tfc2VuZG1zZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgaSwgbmRhdGFwYXJ0cywgbmRhdGFidWZzID0gMCwgbmNtc2dzLCBuY21zZ2J1ZnMgPSAwOworICAgIFB5X3NzaXplX3QgaSwgbmRhdGFidWZzID0gMCwgbmNtc2dzLCBuY21zZ2J1ZnMgPSAwOwogICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOwotICAgIHN0cnVjdCBpb3ZlYyAqaW92cyA9IE5VTEw7CiAgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKLSAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKICAgICBzdHJ1Y3QgY21zZ2luZm8gewogICAgICAgICBpbnQgbGV2ZWw7CiAgICAgICAgIGludCB0eXBlOwpAQCAtMzc4NSwxMyArNDAwMSwxNiBAQAogICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOwogICAgIHNpemVfdCBjb250cm9sbGVuLCBjb250cm9sbGVuX2xhc3Q7CiAgICAgaW50IGFkZHJsZW4sIGZsYWdzID0gMDsKLSAgICBQeU9iamVjdCAqZGF0YV9hcmcsICpjbXNnX2FyZyA9IE5VTEwsICphZGRyX2FyZyA9IE5VTEwsICpkYXRhX2Zhc3QgPSBOVUxMLAorICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwKICAgICAgICAgKmNtc2dfZmFzdCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgY3R4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9pTzpzZW5kbXNnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFfYXJnLCAmY21zZ19hcmcsICZmbGFncywgJmFkZHJfYXJnKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOwogCiAgICAgLyogUGFyc2UgZGVzdGluYXRpb24gYWRkcmVzcy4gKi8KICAgICBpZiAoYWRkcl9hcmcgIT0gTlVMTCAmJiBhZGRyX2FyZyAhPSBQeV9Ob25lKSB7CkBAIC0zODAzLDMwICs0MDIyLDggQEAKIAogICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCiAgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCi0gICAgaWYgKChkYXRhX2Zhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoZGF0YV9hcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpKSA9PSBOVUxMKQorICAgIGlmIChzb2NrX3NlbmRtc2dfaW92ZWMocywgZGF0YV9hcmcsICZtc2csICZkYXRhYnVmcywgJm5kYXRhYnVmcykgPT0gLTEpIHsKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIG5kYXRhcGFydHMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZGF0YV9mYXN0KTsKLSAgICBpZiAobmRhdGFwYXJ0cyA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZW5kbXNnKCkgYXJndW1lbnQgMSBpcyB0b28gbG9uZyIpOwotICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgfQotICAgIG1zZy5tc2dfaW92bGVuID0gbmRhdGFwYXJ0czsKLSAgICBpZiAobmRhdGFwYXJ0cyA+IDAgJiYKLSAgICAgICAgKChtc2cubXNnX2lvdiA9IGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCB8fAotICAgICAgICAgKGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cykpID09IE5VTEwpKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgZm9yICg7IG5kYXRhYnVmcyA8IG5kYXRhcGFydHM7IG5kYXRhYnVmcysrKSB7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2UoUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGRhdGFfZmFzdCwgbmRhdGFidWZzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAieSo7c2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzLWxpa2Ugb2JqZWN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFidWZzW25kYXRhYnVmc10pKQotICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2Jhc2UgPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmJ1ZjsKLSAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9sZW4gPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmxlbjsKICAgICB9CiAKICAgICBpZiAoY21zZ19hcmcgPT0gTlVMTCkKQEAgLTM4ODUsMTEgKzQwODIsMTMgQEAKICAgICBpZiAobmNtc2didWZzID4gMCkgewogICAgICAgICBzdHJ1Y3QgY21zZ2hkciAqY21zZ2ggPSBOVUxMOwogCi0gICAgICAgIGlmICgobXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZiA9Ci0gICAgICAgICAgICAgUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pKSA9PSBOVUxMKSB7CisgICAgICAgIGNvbnRyb2xidWYgPSBQeU1lbV9NYWxsb2MoY29udHJvbGxlbik7CisgICAgICAgIGlmIChjb250cm9sYnVmID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgIH0KKyAgICAgICAgbXNnLm1zZ19jb250cm9sID0gY29udHJvbGJ1ZjsKKwogICAgICAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOwogCiAgICAgICAgIC8qIE5lZWQgdG8gemVybyBvdXQgdGhlIGJ1ZmZlciBhcyBhIHdvcmthcm91bmQgZm9yIGdsaWJjJ3MKQEAgLTM5NTQsMTEgKzQxNTMsMTEgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmY21zZ3NbaV0uZGF0YSk7CiAgICAgUHlNZW1fRnJlZShjbXNncyk7CiAgICAgUHlfWERFQ1JFRihjbXNnX2Zhc3QpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykKKyAgICBQeU1lbV9GcmVlKG1zZy5tc2dfaW92KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIH0KICAgICBQeU1lbV9GcmVlKGRhdGFidWZzKTsKLSAgICBQeU1lbV9GcmVlKGlvdnMpOwotICAgIFB5X1hERUNSRUYoZGF0YV9mYXN0KTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0zOTgwLDYgKzQxNzksMTcxIEBACiBkYXRhIHNlbnQuIik7CiAjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCitzdGF0aWMgUHlPYmplY3QqCitzb2NrX3NlbmRtc2dfYWZhbGcoUHlTb2NrZXRTb2NrT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisKKyAgICBQeV9zc2l6ZV90IGksIG5kYXRhYnVmcyA9IDA7CisgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRhdGFfYXJnID0gTlVMTDsKKworICAgIFB5X2J1ZmZlciBpdiA9IHtOVUxMLCBOVUxMfTsKKworICAgIFB5T2JqZWN0ICpvcG9iaiA9IE5VTEw7CisgICAgaW50IG9wID0gLTE7CisKKyAgICBQeU9iamVjdCAqYXNzb2NsZW5vYmogPSBOVUxMOworICAgIGludCBhc3NvY2xlbiA9IC0xOworCisgICAgdW5zaWduZWQgaW50ICp1aXB0cjsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgc3RydWN0IG1zZ2hkciBtc2c7CisgICAgc3RydWN0IGNtc2doZHIgKmhlYWRlciA9IE5VTEw7CisgICAgc3RydWN0IGFmX2FsZ19pdiAqYWxnX2l2ID0gTlVMTDsKKyAgICBzdHJ1Y3Qgc29ja19zZW5kbXNnIGN0eDsKKyAgICBQeV9zc2l6ZV90IGNvbnRyb2xsZW47CisgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7Im1zZyIsICJvcCIsICJpdiIsICJhc3NvY2xlbiIsICJmbGFncyIsIDB9OworCisgICAgaWYgKHNlbGYtPnNvY2tfZmFtaWx5ICE9IEFGX0FMRykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbGdzZXQgaXMgb25seSBzdXBwb3J0ZWQgZm9yIEFGX0FMRyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8TyRPIXkqTyFpOnNlbmRtc2dfYWZhbGciLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5TG9uZ19UeXBlLCAmb3BvYmosICZpdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlMb25nX1R5cGUsICZhc3NvY2xlbm9iaiwgJmZsYWdzKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mKG1zZykpOworCisgICAgLyogb3AgaXMgYSByZXF1aXJlZCwga2V5d29yZC1vbmx5IGFyZ3VtZW50ID49IDAgKi8KKyAgICBpZiAob3BvYmogIT0gTlVMTCkgeworICAgICAgICBvcCA9IF9QeUxvbmdfQXNJbnQob3BvYmopOworICAgIH0KKyAgICBpZiAob3AgPCAwKSB7CisgICAgICAgIC8qIG92ZXJyaWRlIGV4Y2VwdGlvbiBmcm9tIF9QeUxvbmdfQXNJbnQoKSAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgb3IgbWlzc2luZyBhcmd1bWVudCAnb3AnIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgLyogYXNzb2NsZW4gaXMgb3B0aW9uYWwgYnV0IG11c3QgYmUgPj0gMCAqLworICAgIGlmIChhc3NvY2xlbm9iaiAhPSBOVUxMKSB7CisgICAgICAgIGFzc29jbGVuID0gX1B5TG9uZ19Bc0ludChhc3NvY2xlbm9iaik7CisgICAgICAgIGlmIChhc3NvY2xlbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFzc29jbGVuIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzb2NsZW4gbXVzdCBiZSBwb3NpdGl2ZSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgY29udHJvbGxlbiA9IENNU0dfU1BBQ0UoNCk7CisgICAgaWYgKGl2LmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIGNvbnRyb2xsZW4gKz0gQ01TR19TUEFDRShzaXplb2YoKmFsZ19pdikgKyBpdi5sZW4pOworICAgIH0KKyAgICBpZiAoYXNzb2NsZW4gPj0gMCkgeworICAgICAgICBjb250cm9sbGVuICs9IENNU0dfU1BBQ0UoNCk7CisgICAgfQorCisgICAgY29udHJvbGJ1ZiA9IFB5TWVtX01hbGxvYyhjb250cm9sbGVuKTsKKyAgICBpZiAoY29udHJvbGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgbWVtc2V0KGNvbnRyb2xidWYsIDAsIGNvbnRyb2xsZW4pOworCisgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKKyAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBpZiAoZGF0YV9hcmcgIT0gTlVMTCkgeworICAgICAgICBpZiAoc29ja19zZW5kbXNnX2lvdmVjKHNlbGYsIGRhdGFfYXJnLCAmbXNnLCAmZGF0YWJ1ZnMsICZuZGF0YWJ1ZnMpID09IC0xKSB7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBzZXQgb3BlcmF0aW9uIHRvIGVuY3J5cHQgb3IgZGVjcnlwdCAqLworICAgIGhlYWRlciA9IENNU0dfRklSU1RIRFIoJm1zZyk7CisgICAgaWYgKGhlYWRlciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfRklSU1RIRFIiKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBoZWFkZXItPmNtc2dfbGV2ZWwgPSBTT0xfQUxHOworICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9PUDsKKyAgICBoZWFkZXItPmNtc2dfbGVuID0gQ01TR19MRU4oNCk7CisgICAgdWlwdHIgPSAodm9pZCopQ01TR19EQVRBKGhlYWRlcik7CisgICAgKnVpcHRyID0gKHVuc2lnbmVkIGludClvcDsKKworICAgIC8qIHNldCBpbml0aWFsaXphdGlvbiB2ZWN0b3IgKi8KKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgaGVhZGVyID0gQ01TR19OWFRIRFIoJm1zZywgaGVhZGVyKTsKKyAgICAgICAgaWYgKGhlYWRlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19OWFRIRFIoaXYpIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgaGVhZGVyLT5jbXNnX2xldmVsID0gU09MX0FMRzsKKyAgICAgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX0lWOworICAgICAgICBoZWFkZXItPmNtc2dfbGVuID0gQ01TR19TUEFDRShzaXplb2YoKmFsZ19pdikgKyBpdi5sZW4pOworICAgICAgICBhbGdfaXYgPSAodm9pZCopQ01TR19EQVRBKGhlYWRlcik7CisgICAgICAgIGFsZ19pdi0+aXZsZW4gPSBpdi5sZW47CisgICAgICAgIG1lbWNweShhbGdfaXYtPml2LCBpdi5idWYsIGl2Lmxlbik7CisgICAgfQorCisgICAgLyogc2V0IGxlbmd0aCBvZiBhc3NvY2lhdGVkIGRhdGEgZm9yIEFFQUQgKi8KKyAgICBpZiAoYXNzb2NsZW4gPj0gMCkgeworICAgICAgICBoZWFkZXIgPSBDTVNHX05YVEhEUigmbXNnLCBoZWFkZXIpOworICAgICAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX05YVEhEUihhc3NvYykiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBoZWFkZXItPmNtc2dfbGV2ZWwgPSBTT0xfQUxHOworICAgICAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfQUVBRF9BU1NPQ0xFTjsKKyAgICAgICAgaGVhZGVyLT5jbXNnX2xlbiA9IENNU0dfTEVOKDQpOworICAgICAgICB1aXB0ciA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAgICAgKnVpcHRyID0gKHVuc2lnbmVkIGludClhc3NvY2xlbjsKKyAgICB9CisKKyAgICBjdHgubXNnID0gJm1zZzsKKyAgICBjdHguZmxhZ3MgPSBmbGFnczsKKyAgICBpZiAoc29ja19jYWxsKHNlbGYsIDEsIHNvY2tfc2VuZG1zZ19pbXBsLCAmY3R4KSA8IDApIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIHJldHZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChjdHgucmVzdWx0KTsKKworICBmaW5hbGx5OgorICAgIFB5TWVtX0ZyZWUoY29udHJvbGJ1Zik7CisgICAgaWYgKGl2LmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJml2KTsKKyAgICB9CisgICAgUHlNZW1fRnJlZShtc2cubXNnX2lvdik7CisgICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGFidWZzW2ldKTsKKyAgICB9CisgICAgUHlNZW1fRnJlZShkYXRhYnVmcyk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlEb2NfU1RSVkFSKHNlbmRtc2dfYWZhbGdfZG9jLAorInNlbmRtc2dfYWZhbGcoW21zZ10sICosIG9wWywgaXZbLCBhc3NvY2xlblssIGZsYWdzPU1TR19NT1JFXV1dKVxuXAorXG5cCitTZXQgb3BlcmF0aW9uIG1vZGUsIElWIGFuZCBsZW5ndGggb2YgYXNzb2NpYXRlZCBkYXRhIGZvciBhbiBBRl9BTEdcblwKK29wZXJhdGlvbiBzb2NrZXQuIik7CisjZW5kaWYKIAogLyogcy5zaHV0ZG93bihob3cpIG1ldGhvZCAqLwogCkBAIC00MDM4LDYgKzQ0MDIsMTcgQEAKICAgICAgICAgICAgIHJldHVybiBzZXRfZXJyb3IoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVjdik7IH0KKyNpZiBkZWZpbmVkKFNJT19MT09QQkFDS19GQVNUX1BBVEgpCisgICAgY2FzZSBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIOiB7CisgICAgICAgIHVuc2lnbmVkIGludCBvcHRpb247CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmcsICJrSTppb2N0bCIsICZjbWQsICZvcHRpb24pKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChXU0FJb2N0bChzLT5zb2NrX2ZkLCBjbWQsICZvcHRpb24sIHNpemVvZihvcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsICZyZWN2LCBOVUxMLCBOVUxMKSA9PSBTT0NLRVRfRVJST1IpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRfZXJyb3IoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVjdik7IH0KKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBpb2N0bCBjb21tYW5kICVkIiwgY21kKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00MDQ4LDcgKzQ0MjMsOCBAQAogXG5cCiBDb250cm9sIHRoZSBzb2NrZXQgd2l0aCBXU0FJb2N0bCBzeXNjYWxsLiBDdXJyZW50bHkgc3VwcG9ydGVkICdjbWQnIHZhbHVlcyBhcmVcblwKIFNJT19SQ1ZBTEw6ICAnb3B0aW9uJyBtdXN0IGJlIG9uZSBvZiB0aGUgc29ja2V0LlJDVkFMTF8qIGNvbnN0YW50cy5cblwKLVNJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuIik7CitTSU9fS0VFUEFMSVZFX1ZBTFM6ICAnb3B0aW9uJyBpcyBhIHR1cGxlIG9mIChvbm9mZiwgdGltZW91dCwgaW50ZXJ2YWwpLlxuXAorU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSDogJ29wdGlvbicgaXMgYSBib29sZWFuIHZhbHVlLCBhbmQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCIpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCkBAIC00MTQ3LDYgKzQ1MjMsMTAgQEAKICAgICB7InNlbmRtc2ciLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2VuZG1zZywgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgICAgIHNlbmRtc2dfZG9jfSwKICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgeyJzZW5kbXNnX2FmYWxnIiwgICAgIChQeUNGdW5jdGlvbilzb2NrX3NlbmRtc2dfYWZhbGcsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19hZmFsZ19kb2N9LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtNDE2NywyMiArNDU0Nyw0NSBAQAogICAgRmlyc3QgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRpb24uICovCiAKIHN0YXRpYyB2b2lkCitzb2NrX2ZpbmFsaXplKFB5U29ja2V0U29ja09iamVjdCAqcykKK3sKKyAgICBTT0NLRVRfVCBmZDsKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworCisgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgIGlmIChzLT5zb2NrX2ZkICE9IElOVkFMSURfU09DS0VUKSB7CisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoKFB5T2JqZWN0ICopcywgMSwgInVuY2xvc2VkICVSIiwgcykpIHsKKyAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKilzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIE9ubHkgY2xvc2UgdGhlIHNvY2tldCAqYWZ0ZXIqIGxvZ2dpbmcgdGhlIFJlc291cmNlV2FybmluZyB3YXJuaW5nCisgICAgICAgICAgIHRvIGFsbG93IHRoZSBsb2dnZXIgdG8gY2FsbCBzb2NrZXQgbWV0aG9kcyBsaWtlCisgICAgICAgICAgIHNvY2tldC5nZXRzb2NrbmFtZSgpLiBJZiB0aGUgc29ja2V0IGlzIGNsb3NlZCBiZWZvcmUsIHNvY2tldAorICAgICAgICAgICBtZXRob2RzIGZhaWxzIHdpdGggdGhlIEVCQURGIGVycm9yLiAqLworICAgICAgICBmZCA9IHMtPnNvY2tfZmQ7CisgICAgICAgIHMtPnNvY2tfZmQgPSBJTlZBTElEX1NPQ0tFVDsKKworICAgICAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUgc29ja19jbG9zZSgpICovCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKKyAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKK30KKworc3RhdGljIHZvaWQKIHNvY2tfZGVhbGxvYyhQeVNvY2tldFNvY2tPYmplY3QgKnMpCiB7Ci0gICAgaWYgKHMtPnNvY2tfZmQgIT0gSU5WQUxJRF9TT0NLRVQpIHsKLSAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwotICAgICAgICBQeV9zc2l6ZV90IG9sZF9yZWZjb3VudCA9IFB5X1JFRkNOVChzKTsKLSAgICAgICAgKytQeV9SRUZDTlQocyk7Ci0gICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1Jlc291cmNlV2FybmluZywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkICVSIiwgcykpCi0gICAgICAgICAgICAvKiBTcHVyaW91cyBlcnJvcnMgY2FuIGFwcGVhciBhdCBzaHV0ZG93biAqLwotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfV2FybmluZykpCi0gICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKChQeU9iamVjdCAqKSBzKTsKLSAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbCwgdGIpOwotICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0Uocy0+c29ja19mZCk7Ci0gICAgICAgIFB5X1JFRkNOVChzKSA9IG9sZF9yZWZjb3VudDsKLSAgICB9CisgICAgaWYgKFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYygoUHlPYmplY3QgKilzKSA8IDApCisgICAgICAgIHJldHVybjsKKwogICAgIFB5X1RZUEUocyktPnRwX2ZyZWUoKFB5T2JqZWN0ICopcyk7CiB9CiAKQEAgLTQzNzAsNyArNDc3MywxMCBAQAogICAgICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAgaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKTsKKyAgICBpZiAoaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKSA9PSAtMSkgeworICAgICAgICBTT0NLRVRDTE9TRShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKICAgICByZXR1cm4gMDsKIApAQCAtNDM5OSw3ICs0ODA1LDggQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIHNvY2tfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTQ0MTksNiArNDgyNiwxNSBAQAogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBzb2NrX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIChkZXN0cnVjdG9yKXNvY2tfZmluYWxpemUsICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKIApAQCAtNTQ1NCwxMCArNTg3MCw2IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHJldHZhbCk7CiAgICAgfQotCi0gICAgLyogTk9UUkVBQ0hFRCAqLwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnZhbGlkIGhhbmRsaW5nIG9mIGluZXRfbnRvcCIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiAjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCkBAIC02MTkxLDkgKzY2MDMsNiBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1VOU1BFQyk7CiAjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9JTkVUKTsKLSNpZmRlZiBBRl9JTkVUNgotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lORVQ2KTsKLSNlbmRpZiAvKiBBRl9JTkVUNiAqLwogI2lmIGRlZmluZWQoQUZfVU5JWCkKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9VTklYKTsKICNlbmRpZiAvKiBBRl9VTklYICovCkBAIC02MjI0LDYgKzY2MzMsOSBAQAogICAgIC8qIFJlc2VydmVkIGZvciBXZXJuZXIncyBBVE0gKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BQUw1KTsKICNlbmRpZgorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfQUxHKTsgLyogTGludXggY3J5cHRvICovCisjZW5kaWYKICNpZmRlZiBBRl9YMjUKICAgICAvKiBSZXNlcnZlZCBmb3IgWC4yNSBwcm9qZWN0ICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfWDI1KTsKQEAgLTYyODUsNiArNjY5Nyw5IEBACiAjaWZkZWYgTkVUTElOS19UQVBCQVNFCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkVUTElOS19UQVBCQVNFKTsKICNlbmRpZgorI2lmZGVmIE5FVExJTktfQ1JZUFRPCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTkVUTElOS19DUllQVE8pOworI2VuZGlmCiAjZW5kaWYgLyogQUZfTkVUTElOSyAqLwogI2lmZGVmIEFGX1JPVVRFCiAgICAgLyogQWxpYXMgdG8gZW11bGF0ZSA0LjRCU0QgKi8KQEAgLTY0MzgsMTEgKzY4NTMsMzAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBUSVBDX1RPUF9TUlYpOwogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIC8qIFNvY2tldCBvcHRpb25zICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9LRVkpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfSVYpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfT1ApOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfQUVBRF9BU1NPQ0xFTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9BRUFEX0FVVEhTSVpFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX1BVQktFWSk7CisKKyAgICAvKiBPcGVyYXRpb25zICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX0RFQ1JZUFQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9FTkNSWVBUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfU0lHTik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX1ZFUklGWSk7CisjZW5kaWYKKwogICAgIC8qIFNvY2tldCB0eXBlcyAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfU1RSRUFNKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0NLX0RHUkFNKTsKIC8qIFdlIGhhdmUgaW5jb21wbGV0ZSBzb2NrZXQgc3VwcG9ydC4gKi8KKyNpZmRlZiBTT0NLX1JBVworICAgIC8qIFNPQ0tfUkFXIGlzIG1hcmtlZCBhcyBvcHRpb25hbCBpbiB0aGUgUE9TSVggc3BlY2lmaWNhdGlvbiAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfUkFXKTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfU0VRUEFDS0VUKTsKICNpZiBkZWZpbmVkKFNPQ0tfUkRNKQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfUkRNKTsKQEAgLTY0ODUsOSArNjkxOSwxMSBAQAogI2lmZGVmICBTT19PT0JJTkxJTkUKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19PT0JJTkxJTkUpOwogI2VuZGlmCisjaWZuZGVmIF9fR05VX18KICNpZmRlZiAgU09fUkVVU0VQT1JUCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUkVVU0VQT1JUKTsKICNlbmRpZgorI2VuZGlmCiAjaWZkZWYgIFNPX1NOREJVRgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1NOREJVRik7CiAjZW5kaWYKQEAgLTY1MjQsNiArNjk2MCwxMiBAQAogI2lmZGVmICBMT0NBTF9QRUVSQ1JFRAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExPQ0FMX1BFRVJDUkVEKTsKICNlbmRpZgorI2lmZGVmICBTT19QQVNTU0VDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUEFTU1NFQyk7CisjZW5kaWYKKyNpZmRlZiAgU09fUEVFUlNFQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BFRVJTRUMpOworI2VuZGlmCiAjaWZkZWYgIFNPX0JJTkRUT0RFVklDRQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0JJTkRUT0RFVklDRSk7CiAjZW5kaWYKQEAgLTY1MzMsNiArNjk3NSwxMiBAQAogI2lmZGVmICBTT19NQVJLCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fTUFSSyk7CiAjZW5kaWYKKyNpZmRlZiBTT19ET01BSU4KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19ET01BSU4pOworI2VuZGlmCisjaWZkZWYgU09fUFJPVE9DT0wKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QUk9UT0NPTCk7CisjZW5kaWYKIAogICAgIC8qIE1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb25zIGZvciAibGlzdGVuIiAqLwogI2lmZGVmICBTT01BWENPTk4KQEAgLTY2OTEsNiArNzEzOSw5IEBACiAjaWZkZWYgU09MX1JEUwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9SRFMpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT0xfQUxHKTsKKyNlbmRpZgogI2lmZGVmIFJEU19DQU5DRUxfU0VOVF9UTwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJEU19DQU5DRUxfU0VOVF9UTyk7CiAjZW5kaWYKQEAgLTcyMjgsOCArNzY3OSwxNiBAQAogCiAjaWZkZWYgU0lPX1JDVkFMTAogICAgIHsKLSAgICAgICAgRFdPUkQgY29kZXNbXSA9IHtTSU9fUkNWQUxMLCBTSU9fS0VFUEFMSVZFX1ZBTFN9OwotICAgICAgICBjb25zdCBjaGFyICpuYW1lc1tdID0geyJTSU9fUkNWQUxMIiwgIlNJT19LRUVQQUxJVkVfVkFMUyJ9OworICAgICAgICBEV09SRCBjb2Rlc1tdID0ge1NJT19SQ1ZBTEwsIFNJT19LRUVQQUxJVkVfVkFMUywKKyNpZiBkZWZpbmVkKFNJT19MT09QQkFDS19GQVNUX1BBVEgpCisgICAgICAgICAgICBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRICisjZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsiU0lPX1JDVkFMTCIsICJTSU9fS0VFUEFMSVZFX1ZBTFMiLAorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICAgICAgICAgICJTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIIgorI2VuZGlmCisgICAgICAgIH07CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IoaSA9IDA7IGk8UHlfQVJSQVlfTEVOR1RIKGNvZGVzKTsgKytpKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdG1wOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwppbmRleCA0YjlmM2NkLi41NTZhNzE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYwpAQCAtMTM3LDcgKzEzNywxMCBAQAogICAgIGlmIChQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZShieXRlcywgJm5hbWUsIE5VTEwpID09IC0xKQogICAgICAgICBnb3RvIG91dDsKICAgICBpZiAoKHAgPSBnZXRzcG5hbShuYW1lKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICJnZXRzcG5hbSgpOiBuYW1lIG5vdCBmb3VuZCIpOworICAgICAgICBpZiAoZXJybm8gIT0gMCkKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiZ2V0c3BuYW0oKTogbmFtZSBub3QgZm91bmQiKTsKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogICAgIHJldHZhbCA9IG1rc3BlbnQocCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NyZV9saWIuaCBiL01vZHVsZXMvc3JlX2xpYi5oCmluZGV4IDEyOGM3MWUuLjA4NjVmYzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3JlX2xpYi5oCisrKyBiL01vZHVsZXMvc3JlX2xpYi5oCkBAIC0zNjcsMTQgKzM2NywxMiBAQAogI2RlZmluZSBSRVRVUk5fT05fRkFJTFVSRShpKSBcCiAgICAgZG8geyBSRVRVUk5fT05fRVJST1IoaSk7IGlmIChpID09IDApIFJFVFVSTl9GQUlMVVJFOyB9IHdoaWxlICgwKQogCi0jZGVmaW5lIFNGWSh4KSAjeAotCiAjZGVmaW5lIERBVEFfU1RBQ0tfQUxMT0Moc3RhdGUsIHR5cGUsIHB0cikgXAogZG8geyBcCiAgICAgYWxsb2NfcG9zID0gc3RhdGUtPmRhdGFfc3RhY2tfYmFzZTsgXAogICAgIFRSQUNFKCgiYWxsb2NhdGluZyAlcyBpbiAlIiBQWV9GT1JNQVRfU0laRV9UICJkICIgXAogICAgICAgICAgICAiKCUiIFBZX0ZPUk1BVF9TSVpFX1QgImQpXG4iLCBcCi0gICAgICAgICAgIFNGWSh0eXBlKSwgYWxsb2NfcG9zLCBzaXplb2YodHlwZSkpKTsgXAorICAgICAgICAgICBQeV9TVFJJTkdJRlkodHlwZSksIGFsbG9jX3Bvcywgc2l6ZW9mKHR5cGUpKSk7IFwKICAgICBpZiAoc2l6ZW9mKHR5cGUpID4gc3RhdGUtPmRhdGFfc3RhY2tfc2l6ZSAtIGFsbG9jX3BvcykgeyBcCiAgICAgICAgIGludCBqID0gZGF0YV9zdGFja19ncm93KHN0YXRlLCBzaXplb2YodHlwZSkpOyBcCiAgICAgICAgIGlmIChqIDwgMCkgcmV0dXJuIGo7IFwKQEAgLTM4Nyw3ICszODUsNyBAQAogCiAjZGVmaW5lIERBVEFfU1RBQ0tfTE9PS1VQX0FUKHN0YXRlLCB0eXBlLCBwdHIsIHBvcykgXAogZG8geyBcCi0gICAgVFJBQ0UoKCJsb29raW5nIHVwICVzIGF0ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsIFNGWSh0eXBlKSwgcG9zKSk7IFwKKyAgICBUUkFDRSgoImxvb2tpbmcgdXAgJXMgYXQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwgUHlfU1RSSU5HSUZZKHR5cGUpLCBwb3MpKTsgXAogICAgIHB0ciA9ICh0eXBlKikoc3RhdGUtPmRhdGFfc3RhY2srcG9zKTsgXAogfSB3aGlsZSAoMCkKIApAQCAtNTMxLDcgKzUyOSw3IEBACiAgICAgaWYgKGN0eC0+cGF0dGVyblswXSA9PSBTUkVfT1BfSU5GTykgewogICAgICAgICAvKiBvcHRpbWl6YXRpb24gaW5mbyBibG9jayAqLwogICAgICAgICAvKiA8SU5GTz4gPDE9c2tpcD4gPDI9ZmxhZ3M+IDwzPW1pbj4gLi4uICovCi0gICAgICAgIGlmIChjdHgtPnBhdHRlcm5bM10gJiYgKFB5X3VpbnRwdHJfdCkoZW5kIC0gY3R4LT5wdHIpIDwgY3R4LT5wYXR0ZXJuWzNdKSB7CisgICAgICAgIGlmIChjdHgtPnBhdHRlcm5bM10gJiYgKHVpbnRwdHJfdCkoZW5kIC0gY3R4LT5wdHIpIDwgY3R4LT5wYXR0ZXJuWzNdKSB7CiAgICAgICAgICAgICBUUkFDRSgoInJlamVjdCAoZ290ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgY2hhcnMsICIKICAgICAgICAgICAgICAgICAgICAibmVlZCAlIiBQWV9GT1JNQVRfU0laRV9UICJkKVxuIiwKICAgICAgICAgICAgICAgICAgICBlbmQgLSBjdHgtPnB0ciwgKFB5X3NzaXplX3QpIGN0eC0+cGF0dGVyblszXSkpOwpAQCAtMTI1Niw3ICsxMjU0LDMyIEBACiAgICAgICAgICAgIHByZWZpeCwgcHJlZml4X2xlbiwgcHJlZml4X3NraXApKTsKICAgICBUUkFDRSgoImNoYXJzZXQgPSAlcFxuIiwgY2hhcnNldCkpOwogCi0jaWYgZGVmaW5lZChVU0VfRkFTVF9TRUFSQ0gpCisgICAgaWYgKHByZWZpeF9sZW4gPT0gMSkgeworICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgKi8KKyAgICAgICAgU1JFX0NIQVIgYyA9IChTUkVfQ0hBUikgcHJlZml4WzBdOworI2lmIFNJWkVPRl9TUkVfQ0hBUiA8IDQKKyAgICAgICAgaWYgKChTUkVfQ09ERSkgYyAhPSBwcmVmaXhbMF0pCisgICAgICAgICAgICByZXR1cm4gMDsgLyogbGl0ZXJhbCBjYW4ndCBtYXRjaDogZG9lc24ndCBmaXQgaW4gY2hhciB3aWR0aCAqLworI2VuZGlmCisgICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgICAgICAgICAgIHdoaWxlICgqcHRyICE9IGMpIHsKKyAgICAgICAgICAgICAgICBpZiAoKytwdHIgPj0gZW5kKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBMSVRFUkFMXG4iLCBwYXR0ZXJuLCBwdHIpKTsKKyAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0cjsKKyAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBwdHIgKyBwcmVmaXhfc2tpcDsKKyAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KKyAgICAgICAgICAgIHN0YXR1cyA9IFNSRShtYXRjaCkoc3RhdGUsIHBhdHRlcm4gKyAyKnByZWZpeF9za2lwLCAwKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgICAgKytwdHI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKHByZWZpeF9sZW4gPiAxKSB7CiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBrbm93biBwcmVmaXguICB1c2UgdGhlIG92ZXJsYXAKICAgICAgICAgICAgdGFibGUgdG8gc2tpcCBmb3J3YXJkIGFzIGZhc3QgYXMgd2UgcG9zc2libHkgY2FuICovCkBAIC0xMzA1LDMyICsxMzI4LDggQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYKIAotICAgIGlmIChwYXR0ZXJuWzBdID09IFNSRV9PUF9MSVRFUkFMKSB7Ci0gICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBsaXRlcmFsIGNoYXJhY3Rlci4gIHRoaXMgaXMgdXNlZAotICAgICAgICAgICBmb3Igc2hvcnQgcHJlZml4ZXMsIGFuZCBpZiBmYXN0IHNlYXJjaCBpcyBkaXNhYmxlZCAqLwotICAgICAgICBTUkVfQ0hBUiBjID0gKFNSRV9DSEFSKSBwYXR0ZXJuWzFdOwotI2lmIFNJWkVPRl9TUkVfQ0hBUiA8IDQKLSAgICAgICAgaWYgKChTUkVfQ09ERSkgYyAhPSBwYXR0ZXJuWzFdKQotICAgICAgICAgICAgcmV0dXJuIDA7IC8qIGxpdGVyYWwgY2FuJ3QgbWF0Y2g6IGRvZXNuJ3QgZml0IGluIGNoYXIgd2lkdGggKi8KLSNlbmRpZgotICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOwotICAgICAgICB3aGlsZSAocHRyIDwgZW5kKSB7Ci0gICAgICAgICAgICB3aGlsZSAoKnB0ciAhPSBjKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCsrcHRyID49IGVuZCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxTRUFSQ0ggTElURVJBTFxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHI7Ci0gICAgICAgICAgICBzdGF0ZS0+cHRyID0gKytwdHI7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQotICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCi0gICAgICAgICAgICBzdGF0dXMgPSBTUkUobWF0Y2gpKHN0YXRlLCBwYXR0ZXJuICsgMiwgMCk7Ci0gICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGNoYXJzZXQpIHsKKyAgICBpZiAoY2hhcnNldCkgewogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgY2hhcmFjdGVyIGZyb20gYSBrbm93biBzZXQgKi8KICAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKICAgICAgICAgZm9yICg7OykgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jIGIvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCmluZGV4IGY4NGNjNzguLjM0YTZmYzUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKQEAgLTc5LDYgKzc5LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfRlJFRV9DTEFTUyk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0lNUE9SVCk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgREVGX0JPVU5EKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfQU5OT1QpOwogCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlRZUEVfRlVOQ1RJT04iLCBGdW5jdGlvbkJsb2NrKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9DTEFTUyIsIENsYXNzQmxvY2spOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwppbmRleCBkMmNhYWNkLi5mMDcwODMzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL3RpbWVtb2R1bGUuYwpAQCAtMTYwLDcgKzE2MCw5IEBACiAiY2xvY2tfZ2V0dGltZShjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAogXG5cCiBSZXR1cm4gdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KIAorI2lmZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY2xvY2tfc2V0dGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTEsNyArMTkzLDkgQEAKICJjbG9ja19zZXR0aW1lKGNsa19pZCwgdGltZSlcblwKIFxuXAogU2V0IHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOworI2VuZGlmICAgLyogSEFWRV9DTE9DS19TRVRUSU1FICovCiAKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFJFUwogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfY2xvY2tfZ2V0cmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTIxNSw3ICsyMTksNyBAQAogImNsb2NrX2dldHJlcyhjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAogXG5cCiBSZXR1cm4gdGhlIHJlc29sdXRpb24gKHByZWNpc2lvbikgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7Ci0jZW5kaWYgICAvKiBIQVZFX0NMT0NLX0dFVFRJTUUgKi8KKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUUkVTICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3NsZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQpAQCAtMjUwLDEwICsyNTQsOCBAQAogICAgIHsidG1fd2RheSIsICJkYXkgb2Ygd2VlaywgcmFuZ2UgWzAsIDZdLCBNb25kYXkgaXMgMCJ9LAogICAgIHsidG1feWRheSIsICJkYXkgb2YgeWVhciwgcmFuZ2UgWzEsIDM2Nl0ifSwKICAgICB7InRtX2lzZHN0IiwgIjEgaWYgc3VtbWVyIHRpbWUgaXMgaW4gZWZmZWN0LCAwIGlmIG5vdCwgYW5kIC0xIGlmIHVua25vd24ifSwKLSNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgeyJ0bV96b25lIiwgImFiYnJldmlhdGlvbiBvZiB0aW1lem9uZSBuYW1lIn0sCiAgICAgeyJ0bV9nbXRvZmYiLCAib2Zmc2V0IGZyb20gVVRDIGluIHNlY29uZHMifSwKLSNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgezB9CiB9OwogCkBAIC0yNzUsNyArMjc3LDExIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKLXRtdG90dXBsZShzdHJ1Y3QgdG0gKnApCit0bXRvdHVwbGUoc3RydWN0IHRtICpwCisjaWZuZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICAgICAgLCBjb25zdCBjaGFyICp6b25lLCBpbnQgZ210b2ZmCisjZW5kaWYKKykKIHsKICAgICBQeU9iamVjdCAqdiA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTdHJ1Y3RUaW1lVHlwZSk7CiAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTI5Niw2ICszMDIsMTAgQEAKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDksCiAgICAgICAgIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocC0+dG1fem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpKTsKICAgICBTRVQoMTAsIHAtPnRtX2dtdG9mZik7CisjZWxzZQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwKKyAgICAgICAgUHlVbmljb2RlX0RlY29kZUxvY2FsZSh6b25lLCAic3Vycm9nYXRlZXNjYXBlIikpOworICAgIFNFVCgxMCwgZ210b2ZmKTsKICNlbmRpZiAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAjdW5kZWYgU0VUCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTMxMSw3ICszMjEsNyBAQAogICAgUmV0dXJucyBub24temVybyBvbiBzdWNjZXNzIChwYXJhbGxlbHMgUHlBcmdfUGFyc2VUdXBsZSkuCiAqLwogc3RhdGljIGludAotcGFyc2VfdGltZV90X2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgdGltZV90ICpwd2hlbikKK3BhcnNlX3RpbWVfdF9hcmdzKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHRpbWVfdCAqcHdoZW4pCiB7CiAgICAgUHlPYmplY3QgKm90ID0gTlVMTDsKICAgICB0aW1lX3Qgd2hlbnQ7CkBAIC0zMzMsMjQgKzM0MywzNCBAQAogdGltZV9nbXRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIHRpbWVfdCB3aGVuOwotICAgIHN0cnVjdCB0bSBidWYsICpsb2NhbDsKKyAgICBzdHJ1Y3QgdG0gYnVmOwogCiAgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86Z210aW1lIiwgJndoZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGVycm5vID0gMDsKLSAgICBsb2NhbCA9IGdtdGltZSgmd2hlbik7Ci0gICAgaWYgKGxvY2FsID09IE5VTEwpIHsKLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgIH0KLSAgICBidWYgPSAqbG9jYWw7CisgICAgaWYgKF9QeVRpbWVfZ210aW1lKHdoZW4sICZidWYpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOworI2Vsc2UKKyAgICByZXR1cm4gdG10b3R1cGxlKCZidWYsICJVVEMiLCAwKTsKKyNlbmRpZgogfQogCisjaWZuZGVmIEhBVkVfVElNRUdNCitzdGF0aWMgdGltZV90Cit0aW1lZ20oc3RydWN0IHRtICpwKQoreworICAgIC8qIFhYWDogdGhlIGZvbGxvd2luZyBpbXBsZW1lbnRhdGlvbiB3aWxsIG5vdCB3b3JrIGZvciB0bV95ZWFyIDwgMTk3MC4KKyAgICAgICBidXQgaXQgaXMgbGlrZWx5IHRoYXQgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgaGF2ZSB0aW1lZ20gZG8gbm90IHN1cHBvcnQKKyAgICAgICBuZWdhdGl2ZSB0aW1lc3RhbXBzIGFueXdheXMuICovCisgICAgcmV0dXJuIHAtPnRtX3NlYyArIHAtPnRtX21pbio2MCArIHAtPnRtX2hvdXIqMzYwMCArIHAtPnRtX3lkYXkqODY0MDAgKworICAgICAgICAocC0+dG1feWVhci03MCkqMzE1MzYwMDAgKyAoKHAtPnRtX3llYXItNjkpLzQpKjg2NDAwIC0KKyAgICAgICAgKChwLT50bV95ZWFyLTEpLzEwMCkqODY0MDAgKyAoKHAtPnRtX3llYXIrMjk5KS80MDApKjg2NDAwOworfQorI2VuZGlmCisKIFB5RG9jX1NUUlZBUihnbXRpbWVfZG9jLAogImdtdGltZShbc2Vjb25kc10pIC0+ICh0bV95ZWFyLCB0bV9tb24sIHRtX21kYXksIHRtX2hvdXIsIHRtX21pbixcblwKICAgICAgICAgICAgICAgICAgICAgICAgdG1fc2VjLCB0bV93ZGF5LCB0bV95ZGF5LCB0bV9pc2RzdClcblwKQEAgLTM2MSwyNiArMzgxLDYgQEAKIElmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyB0aGUgdG1fZ210b2ZmIGFuZCB0bV96b25lLCB0aGV5IGFyZSBhdmFpbGFibGUgYXNcblwKIGF0dHJpYnV0ZXMgb25seS4iKTsKIAotc3RhdGljIGludAotcHlsb2NhbHRpbWUodGltZV90ICp0aW1lcCwgc3RydWN0IHRtICpyZXN1bHQpCi17Ci0gICAgc3RydWN0IHRtICpsb2NhbDsKLQotICAgIGFzc2VydCAodGltZXAgIT0gTlVMTCk7Ci0gICAgbG9jYWwgPSBsb2NhbHRpbWUodGltZXApOwotICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIHVuY29udmVydGlibGUgdGltZSAqLwotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAqcmVzdWx0ID0gKmxvY2FsOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9sb2NhbHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMzg5LDkgKzM4OSwyMCBAQAogCiAgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86bG9jYWx0aW1lIiwgJndoZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocHlsb2NhbHRpbWUoJndoZW4sICZidWYpID09IC0xKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh3aGVuLCAmYnVmKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKKyNlbHNlCisgICAgeworICAgICAgICBzdHJ1Y3QgdG0gbG9jYWwgPSBidWY7CisgICAgICAgIGNoYXIgem9uZVsxMDBdOworICAgICAgICBpbnQgZ210b2ZmOworICAgICAgICBzdHJmdGltZSh6b25lLCBzaXplb2YoYnVmKSwgIiVaIiwgJmJ1Zik7CisgICAgICAgIGdtdG9mZiA9IHRpbWVnbSgmYnVmKSAtIHdoZW47CisgICAgICAgIHJldHVybiB0bXRvdHVwbGUoJmxvY2FsLCB6b25lLCBnbXRvZmYpOworICAgIH0KKyNlbmRpZgogfQogCiBQeURvY19TVFJWQVIobG9jYWx0aW1lX2RvYywKQEAgLTU3Myw3ICs1ODQsNyBAQAogCiAgICAgaWYgKHR1cCA9PSBOVUxMKSB7CiAgICAgICAgIHRpbWVfdCB0dCA9IHRpbWUoTlVMTCk7Ci0gICAgICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgICAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodHQsICZidWYpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikgfHwgIWNoZWNrdG0oJmJ1ZikpCkBAIC03MzIsMTAgKzc0MywxMCBAQAogewogICAgIC8qIEluc3BpcmVkIGJ5IE9wZW4gR3JvdXAgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBhdAogICAgICAqIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDk2OTUzOTkvZnVuY3Rpb25zL2FzY3RpbWUuaHRtbCAqLwotICAgIHN0YXRpYyBjaGFyIHdkYXlfbmFtZVs3XVs0XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CiAgICAgICAgICJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiCiAgICAgfTsKLSAgICBzdGF0aWMgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgbW9uX25hbWVbMTJdWzRdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKQEAgLTc1OCw3ICs3NjksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKLSAgICAgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgfSBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKSB8fCAhY2hlY2t0bSgmYnVmKSkKQEAgLTc4MCw3ICs3OTEsNyBAQAogICAgIHN0cnVjdCB0bSBidWY7CiAgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86Y3RpbWUiLCAmdHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodHQsICZidWYpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBfYXNjdGltZSgmYnVmKTsKIH0KQEAgLTEwMzQsNiArMTA0NSw3IEBACiAgICAgfQogI2VuZGlmCiAKKyAgICAvKiBDdXJyZW50bHksIFB5dGhvbiAzIHJlcXVpcmVzIGNsb2NrKCkgdG8gYnVpbGQ6IHNlZSBpc3N1ZSAjMjI2MjQgKi8KICAgICByZXR1cm4gZmxvYXRjbG9jayhpbmZvKTsKICNlbmRpZgogfQpAQCAtMTE0NSw2ICsxMTU3LDI3IEBACiBHZXQgaW5mb3JtYXRpb24gb2YgdGhlIHNwZWNpZmllZCBjbG9jay4iKTsKIAogc3RhdGljIHZvaWQKK2dldF96b25lKGNoYXIgKnpvbmUsIGludCBuLCBzdHJ1Y3QgdG0gKnApCit7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHN0cm5jcHkoem9uZSwgcC0+dG1fem9uZSA/IHAtPnRtX3pvbmUgOiAiICAgIiwgbik7CisjZWxzZQorICAgIHR6c2V0KCk7CisgICAgc3RyZnRpbWUoem9uZSwgbiwgIiVaIiwgcCk7CisjZW5kaWYKK30KKworc3RhdGljIGludAorZ2V0X2dtdG9mZih0aW1lX3QgdCwgc3RydWN0IHRtICpwKQoreworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICByZXR1cm4gcC0+dG1fZ210b2ZmOworI2Vsc2UKKyAgICByZXR1cm4gdGltZWdtKHApIC0gdDsKKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAogUHlJbml0X3RpbWV6b25lKFB5T2JqZWN0ICptKSB7CiAgICAgLyogVGhpcyBjb2RlIG1vdmVkIGZyb20gUHlJbml0X3RpbWUgd2hvbGVzYWxlIHRvIGFsbG93IGNhbGxpbmcgaXQgZnJvbQogICAgIHRpbWVfdHpzZXQuIEluIHRoZSBmdXR1cmUsIHNvbWUgcGFydHMgb2YgaXQgY2FuIGJlIG1vdmVkIGJhY2sKQEAgLTExNzYsMjIgKzEyMDksMjEgQEAKICAgICBvdHoxID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZSh0em5hbWVbMV0sICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInR6bmFtZSIsIFB5X0J1aWxkVmFsdWUoIihOTikiLCBvdHowLCBvdHoxKSk7CiAjZWxzZSAvKiAhSEFWRV9UWk5BTUUgfHwgX19HTElCQ19fIHx8IF9fQ1lHV0lOX18qLwotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICB7CiAjZGVmaW5lIFlFQVIgKCh0aW1lX3QpKCgzNjUgKiAyNCArIDYpICogMzYwMCkpCiAgICAgICAgIHRpbWVfdCB0OwotICAgICAgICBzdHJ1Y3QgdG0gKnA7CisgICAgICAgIHN0cnVjdCB0bSBwOwogICAgICAgICBsb25nIGphbnpvbmUsIGp1bHl6b25lOwogICAgICAgICBjaGFyIGphbm5hbWVbMTBdLCBqdWx5bmFtZVsxMF07CiAgICAgICAgIHQgPSAodGltZSgodGltZV90ICopMCkgLyBZRUFSKSAqIFlFQVI7Ci0gICAgICAgIHAgPSBsb2NhbHRpbWUoJnQpOwotICAgICAgICBqYW56b25lID0gLXAtPnRtX2dtdG9mZjsKLSAgICAgICAgc3RybmNweShqYW5uYW1lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCA5KTsKKyAgICAgICAgX1B5VGltZV9sb2NhbHRpbWUodCwgJnApOworICAgICAgICBnZXRfem9uZShqYW5uYW1lLCA5LCAmcCk7CisgICAgICAgIGphbnpvbmUgPSAtZ2V0X2dtdG9mZih0LCAmcCk7CiAgICAgICAgIGphbm5hbWVbOV0gPSAnXDAnOwogICAgICAgICB0ICs9IFlFQVIvMjsKLSAgICAgICAgcCA9IGxvY2FsdGltZSgmdCk7Ci0gICAgICAgIGp1bHl6b25lID0gLXAtPnRtX2dtdG9mZjsKLSAgICAgICAgc3RybmNweShqdWx5bmFtZSwgcC0+dG1fem9uZSA/IHAtPnRtX3pvbmUgOiAiICAgIiwgOSk7CisgICAgICAgIF9QeVRpbWVfbG9jYWx0aW1lKHQsICZwKTsKKyAgICAgICAgZ2V0X3pvbmUoanVseW5hbWUsIDksICZwKTsKKyAgICAgICAganVseXpvbmUgPSAtZ2V0X2dtdG9mZih0LCAmcCk7CiAgICAgICAgIGp1bHluYW1lWzldID0gJ1wwJzsKIAogICAgICAgICBpZiggamFuem9uZSA8IGp1bHl6b25lICkgewpAQCAtMTIxMyw4ICsxMjQ1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphbm5hbWUsIGp1bHluYW1lKSk7CiAgICAgICAgIH0KICAgICB9Ci0jZWxzZQotI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICNpZmRlZiBfX0NZR1dJTl9fCiAgICAgdHpzZXQoKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAidGltZXpvbmUiLCBfdGltZXpvbmUpOwpAQCAtMTIyNCwyNSArMTI1NCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIih6eikiLCBfdHpuYW1lWzBdLCBfdHpuYW1lWzFdKSk7CiAjZW5kaWYgLyogX19DWUdXSU5fXyAqLwogI2VuZGlmIC8qICFIQVZFX1RaTkFNRSB8fCBfX0dMSUJDX18gfHwgX19DWUdXSU5fXyovCi0KLSNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19SRUFMVElNRSk7Ci0jaWZkZWYgQ0xPQ0tfTU9OT1RPTklDCi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX01PTk9UT05JQ19SQVcKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUNfUkFXKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX0hJR0hSRVMKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19ISUdIUkVTKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCk7Ci0jZW5kaWYKLSNpZmRlZiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEKTsKLSNlbmRpZgotI2VuZGlmIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogfQogCiAKQEAgLTEyNTMsNyArMTI2NCwxMSBAQAogI2VuZGlmCiAjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCiAgICAgeyJjbG9ja19nZXR0aW1lIiwgICB0aW1lX2Nsb2NrX2dldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0dGltZV9kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9DTE9DS19TRVRUSU1FCiAgICAgeyJjbG9ja19zZXR0aW1lIiwgICB0aW1lX2Nsb2NrX3NldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfc2V0dGltZV9kb2N9LAorI2VuZGlmCisjaWZkZWYgSEFWRV9DTE9DS19HRVRSRVMKICAgICB7ImNsb2NrX2dldHJlcyIsICAgIHRpbWVfY2xvY2tfZ2V0cmVzLCBNRVRIX1ZBUkFSR1MsIGNsb2NrX2dldHJlc19kb2N9LAogI2VuZGlmCiAgICAgeyJzbGVlcCIsICAgICAgICAgICB0aW1lX3NsZWVwLCBNRVRIX08sIHNsZWVwX2RvY30sCkBAIC0xMzQ5LDE3ICsxMzY0LDMyIEBACiAgICAgLyogU2V0LCBvciByZXNldCwgbW9kdWxlIHZhcmlhYmxlcyBsaWtlIHRpbWUudGltZXpvbmUgKi8KICAgICBQeUluaXRfdGltZXpvbmUobSk7CiAKKyNpZmRlZiBDTE9DS19SRUFMVElNRQorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX01PTk9UT05JQworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19NT05PVE9OSUNfUkFXCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDX1JBVyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19ISUdIUkVTCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfSElHSFJFUyk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19USFJFQURfQ1BVVElNRV9JRCk7CisjZW5kaWYKKwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKCZTdHJ1Y3RUaW1lVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdHJ1Y3RfdGltZV90eXBlX2Rlc2MpIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoJlN0cnVjdFRpbWVUeXBlKTsKLSNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCAxMSk7Ci0jZWxzZQotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfU1RSVUNUX1RNX0lURU1TIiwgOSk7Ci0jZW5kaWYKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInN0cnVjdF90aW1lIiwgKFB5T2JqZWN0KikgJlN0cnVjdFRpbWVUeXBlKTsKICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgcmV0dXJuIG07CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKaW5kZXggMWY5YmE3OC4uOWU3MWUwMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YS5jCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwpAQCAtNDUsNiArNDUsNyBAQAogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgY2F0ZWdvcnlfY2hhbmdlZDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRlY2ltYWxfY2hhbmdlZDsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIG1pcnJvcmVkX2NoYW5nZWQ7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZWQ7CiAgICAgY29uc3QgZG91YmxlIG51bWVyaWNfY2hhbmdlZDsKIH0gY2hhbmdlX3JlY29yZDsKIApAQCAtMzc1LDYgKzM3Niw4IEBACiAgICAgICAgIGNvbnN0IGNoYW5nZV9yZWNvcmQgKm9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGMpOwogICAgICAgICBpZiAob2xkLT5jYXRlZ29yeV9jaGFuZ2VkID09IDApCiAgICAgICAgICAgICBpbmRleCA9IDA7IC8qIHVuYXNzaWduZWQgKi8KKyAgICAgICAgZWxzZSBpZiAob2xkLT5lYXN0X2FzaWFuX3dpZHRoX2NoYW5nZWQgIT0gMHhGRikKKyAgICAgICAgICAgIGluZGV4ID0gb2xkLT5lYXN0X2FzaWFuX3dpZHRoX2NoYW5nZWQ7CiAgICAgfQogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlVbmljb2RlX0Vhc3RBc2lhbldpZHRoTmFtZXNbaW5kZXhdKTsKIH0KQEAgLTg4NCw3ICs4ODcsNyBAQAogICAgIHJldHVybiBoOwogfQogCi1zdGF0aWMgY2hhciAqaGFuZ3VsX3N5bGxhYmxlc1tdWzNdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoYW5ndWxfc3lsbGFibGVzW11bM10gPSB7CiAgICAgeyAiRyIsICAiQSIsICAgIiIgICB9LAogICAgIHsgIkdHIiwgIkFFIiwgICJHIiAgfSwKICAgICB7ICJOIiwgICJZQSIsICAiR0ciIH0sCkBAIC0xMDU3LDcgKzEwNjAsNyBAQAogICAgIGludCBpLCBsZW4xOwogICAgICpsZW4gPSAtMTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICBjaGFyICpzID0gaGFuZ3VsX3N5bGxhYmxlc1tpXVtjb2x1bW5dOworICAgICAgICBjb25zdCBjaGFyICpzID0gaGFuZ3VsX3N5bGxhYmxlc1tpXVtjb2x1bW5dOwogICAgICAgICBsZW4xID0gUHlfU0FGRV9ET1dOQ0FTVChzdHJsZW4ocyksIHNpemVfdCwgaW50KTsKICAgICAgICAgaWYgKGxlbjEgPD0gKmxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oIGIvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCmluZGV4IDg5ZDg3NjguLmVhNDBjMmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKQEAgLTEsNiArMSw2IEBACiAvKiB0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBUb29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSAzLjIgKi8KIAotI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjguMC4wIgorI2RlZmluZSBVTklEQVRBX1ZFUlNJT04gIjkuMC4wIgogLyogYSBsaXN0IG9mIHVuaXF1ZSBkYXRhYmFzZSByZWNvcmRzICovCiBjb25zdCBfUHlVbmljb2RlX0RhdGFiYXNlUmVjb3JkIF9QeVVuaWNvZGVfRGF0YWJhc2VfUmVjb3Jkc1tdID0gewogICAgIHswLCAwLCAwLCAwLCAwLCAwfSwKQEAgLTI0MiwxMiArMjQyLDEzIEBACiAgICAgezI3LCAwLCAxMSwgMCwgNSwgMH0sCiAgICAgezI3LCAwLCAxOSwgMSwgNCwgMTM2fSwKICAgICB7MjcsIDAsIDE5LCAxLCA0LCAxMH0sCisgICAgezMwLCAwLCAxOSwgMCwgMiwgMH0sCiAgICAgezIyLCAwLCAxOSwgMSwgMiwgMTcwfSwKICAgICB7MjMsIDAsIDE5LCAxLCAyLCAxNzB9LAogICAgIHszMCwgMCwgMSwgMCwgNCwgMTM2fSwKICAgICB7OSwgMCwgMTksIDAsIDQsIDB9LAorICAgIHsyNywgMCwgMTksIDAsIDIsIDB9LAogICAgIHsyNywgMCwgMTksIDEsIDUsIDE3MH0sCi0gICAgezMwLCAwLCAxOSwgMCwgMiwgMH0sCiAgICAgezMwLCAwLCAxOSwgMCwgMiwgMTM2fSwKICAgICB7MTAsIDAsIDE4LCAwLCAwLCAxMzZ9LAogICAgIHsyNiwgMCwgMTksIDAsIDIsIDB9LApAQCAtMzI5LDYgKzMzMCw3IEBACiAgICAgezEsIDAsIDQsIDAsIDUsIDB9LAogICAgIHsyLCAwLCA0LCAwLCA1LCAwfSwKICAgICB7OSwgMCwgMTIsIDAsIDUsIDB9LAorICAgIHs0LCA5LCAxLCAwLCA1LCAwfSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDE3MH0sCiAgICAgezUsIDIxNiwgMSwgMCwgNSwgMH0sCiAgICAgezUsIDIyNiwgMSwgMCwgNSwgMH0sCkBAIC0zMzYsNiArMzM4LDcgQEAKICAgICB7NywgMCwgOSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCA0LCAwfSwKKyAgICB7MjksIDAsIDE5LCAwLCAyLCAwfSwKIH07CiAKIC8qIFJlaW5kZXhpbmcgb2YgTkZDIGZpcnN0IGNoYXJhY3RlcnMuICovCkBAIC03MzAsMzkgKzczMywzOSBAQAogICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAKICAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDEzOCwgNDEsIDQxLCAxNDUsIDEzOCwgMTQ2LCAxNDcsIDE0OCwgCiAgICAgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxMzgsIDEzOCwgMTU2LCAxMzgsIDEzOCwgMTM4LCAxNTcsIAotICAgIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsIDEzOCwgMTM4LCAxNjQsIDEzOCwgMTY1LCAxNjYsIDE2NywgMTY4LCAKLSAgICAxMzgsIDEzOCwgMTY5LCAxMzgsIDEzOCwgMTM4LCAxNzAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE3MSwgMTcyLCA0MSwgMTczLCAxMzgsIDEzOCwgCisgICAgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTM4LCAxNjQsIDE2NSwgMTM4LCAxNjYsIDE2NywgMTY4LCAxNjksIAorICAgIDEzOCwgMTM4LCAxNzAsIDEzOCwgMTM4LCAxMzgsIDE3MSwgMTM4LCAxMzgsIDE3MiwgMTczLCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTc0LCAxNzUsIDQxLCAxNzYsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTc0LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTc3LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzUsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxODAsIDE4MSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc5LCAxODAsIDE4MSwgMTgyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODMsIDE4NCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDE4NSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDE4NiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4OCwgMTg5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDE4MywgMTg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDE4NSwgCi0gICAgMTg2LCAxODcsIDE4OCwgMTM4LCAxODksIDEzOCwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAxOTgsIDE5OSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDIwMCwgMjAxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDIwMiwgMjAzLCAxMzgsIDEzOCwgMjA0LCAyMDUsIDIwNiwgMjA3LCAyMDgsIDEzOCwgMjA5LCAyMTAsIDIwOSwgMjA5LCAKLSAgICAyMTEsIDIxMiwgMjA5LCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTkwLCAKKyAgICAxOTEsIDE5MiwgMTkzLCAxMzgsIDE5NCwgMTM4LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIwMywgMjA0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDIwNSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMjA2LCAyMDcsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjA5LCAyMTAsIDEzOCwgMTM4LCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwgMTM4LCAyMTYsIDIxNywgMjE4LCAyMTksIAorICAgIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKQEAgLTc4NywxOSArNzkwLDE5IEBACiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMzAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMjEsIDEwMSwgMjIyLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjMxLCAxMDEsIDIzMiwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDIyMywgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTAxLCAyMzMsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTIyLCAxMjIsIDEyMiwgMTIyLCAyMjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEyMiwgMTIyLCAxMjIsIDEyMiwgMjM0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKQEAgLTEyMDIsNyArMTIwNSw3IEBACiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMjI1LCAxMzgsIDIyNiwgMjI3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDIzNSwgMTM4LCAyMzYsIDIzNywgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKQEAgLTEyNzUsNyArMTI3OCw3IEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAyMjgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMjM4LCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKQEAgLTEzMTIsNyArMTMxNSw3IEBACiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCi0gICAgMTIxLCAyMjgsIAorICAgIDEyMSwgMjM4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKQEAgLTE0NDQsMTcwICsxNDQ3LDE3MSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgCi0gICAgODEsIDgxLCA4NiwgODYsIDg2LCAxMjEsIDEyMiwgMTIzLCA4MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAxMzksIAotICAgIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAKLSAgICAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCi0gICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIAotICAgIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAKLSAgICAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIAotICAgIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCi0gICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCi0gICAgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCi0gICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIAotICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKLSAgICAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgODAsIDAsIAotICAgIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAKLSAgICAxNDcsIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKLSAgICAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTA4LCAKKyAgICA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIxLCAxMjIsIDEyMywgODEsIAorICAgIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzOSwgMTM5LCAKLSAgICAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDAsIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgCi0gICAgMTQ3LCAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxMzksIDEzOSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTcsIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIDE1OCwgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCi0gICAgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1OSwgCi0gICAgMTU5LCAwLCAxMzUsIDEzNSwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNTMsIDAsIDE2MCwgMTYwLCAxNjAsIAotICAgIDE2MCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgCi0gICAgMCwgMTU2LCAxNTYsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIAotICAgIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCAKLSAgICA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCAKLSAgICA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY3LCAxNjcsIDE2OSwgMTY3LCAxNjksIDE2NiwgMTY2LCAKLSAgICAxNjYsIDE2NiwgMTM1LCAxMzksIDE2NiwgMTY3LCA4MSwgODEsIDE0MiwgODMsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MywgCi0gICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTQ5LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgCi0gICAgMTQyLCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDEzOSwgMTM5LCAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzksIDE0MSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMTM5LCAxMzksIDQ4LCA4MSwgODYsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDgzLCA4MywgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzUsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAwLCAwLCAxMzksIDE0NywgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTQ5LCAxNDYsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MCwgNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMTQwLCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE0NiwgMTM5LCAxMzUsIDEzOSwgMTM5LCAwLCAKKyAgICAwLCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODUsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMCwgMTM1LCAxMzUsIDE1MCwgMCwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTEsIDE1MiwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDgwLCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIAorICAgIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIDE0NywgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgODAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDE0NiwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA0OCwgNDgsIDQ4LCAxMzUsIAorICAgIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTU1LCAwLCAwLCAwLCAKKyAgICAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAxNDcsIDEzOSwgMTQ3LCAxNDcsIAorICAgIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNTcsIDE1NywgMTQyLCAwLCAwLCAwLCAwLCA4NSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDEzNSwgMTU4LCAxNTgsIAorICAgIDE1OCwgMTU4LCAxMzUsIDEzNSwgMTM1LCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1OSwgMTU5LCAwLCAxMzUsIDEzNSwgNDgsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNTMsIDAsIDE2MCwgMTYwLCAxNjAsIDE2MCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMTU2LCAxNTYsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDgwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTYxLCAKKyAgICA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODMsIDgwLCA4MCwgODAsIDg2LCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4NiwgODAsIDg2LCA4MCwgMTYyLCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDE2NSwgCisgICAgMTY2LCAxNjcsIDE2OCwgMTY3LCAxNjcsIDE2OSwgMTY3LCAxNjksIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTM1LCAxMzksIAorICAgIDE2NiwgMTY3LCA4MSwgODEsIDE0MiwgODMsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTQ5LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQ1LCAxMzksIDE0MiwgMTQyLCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMTM1LCAxMzUsIDQ4LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDg2LCA0OCwgMTM5LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgODAsIDgwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgCisgICAgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MSwgODEsIAorICAgIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgMCwgMCwgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKKyAgICA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTE2MjcsNDUgKzE2MzEsNDUgQEAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgMTczLCAxNzMsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDEzNSwgMTM1LCAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDE0MiwgMTM1LCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3NCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzksIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgCisgICAgMTM1LCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3NCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA4OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgODgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIAogICAgIDEzOSwgMTM5LCA4NywgODEsIDg2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMTM4LCAxMzgsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0xNzE0LDI3ICsxNzE4LDI3IEBACiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgCi0gICAgODMsIDE3NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAxNzYsIDE3NiwgCi0gICAgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDQ4LCA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAKLSAgICA4MSwgNDgsIDQ4LCAwLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIAorICAgIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM5LCAxMzksIDgxLCA0OCwgNDgsIDAsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCAKKyAgICA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKICAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDE3NywgCi0gICAgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCAKKyAgICA4MSwgODEsIDE3NywgMTc4LCA4NiwgMTc5LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAogICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAxODAsIDg2LCA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA4MSwgMTgwLCA4NiwgODEsIDg2LCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCkBAIC0xNzQzLDMzMiArMTc0NywzMzMgQEAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxODEsIDQ3LCA0NywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAotICAgIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAzOCwgMCwgMzgsIDAsIDM4LCAwLCAKLSAgICAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAKLSAgICAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDE4MywgNTgsIDE4MiwgNTgsIDU4LCA3NiwgNDMsIDQzLCAKLSAgICA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MiwgMCwgMCwgCi0gICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDAsIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MiwgNDMsIDQzLCA0MywgNDMsIAotICAgIDM4LCAzOCwgMzgsIDE4NCwgMzgsIDc2LCAxODUsIDE4NSwgMCwgMCwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAKLSAgICAzOCwgMTg0LCAxODMsIDE4NSwgNTgsIDAsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAotICAgIDE4NywgMTg3LCAxNzQsIDE3NCwgMTc0LCAxODgsIDE4OSwgMTkwLCAxOTEsIDg0LCAxOTAsIDE5MCwgMTkwLCAyMiwgMTkyLCAKLSAgICAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIDE5NiwgMjIsIDIyLCAyMiwgMTM4LCAxOTcsIDE5NywgMTk3LCAKLSAgICAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMSwgMjA1LCAxMTAsIDIwNSwgMjA2LCAyMDcsIDIyLCAKLSAgICAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIDEzOCwgMTk3LCAyMDgsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMjA5LCAKLSAgICAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIAotICAgIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODcsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDIxNCwgCi0gICAgNTEsIDAsIDAsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMjE0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIDIxNywgMjE4LCAwLCA1MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgMCwgMCwgMCwgODUsIDg1LCA4NSwgODUsIAotICAgIDg1LCA4NSwgODUsIDg1LCAyMjAsIDIyMSwgODUsIDg1LCAyMywgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgCi0gICAgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgODEsIDgxLCA4MSwgODEsIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgCi0gICAgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAxNzYsIDE3NiwgODEsIDg2LCA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgCi0gICAgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIyLCAyMjIsIDQ5LCAKLSAgICAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ2LCAKLSAgICAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgNDksIDI2LCAyNiwgMjIyLCAyMjMsIDIyMywgMjYsIDQ5LCAKLSAgICAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAyMjUsIDM1LCA0OSwgNDksIDQ0LCA0OSwgMzUsIDE1NiwgCi0gICAgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIDQ5LCAyMjYsIDc4LCA3OCwgNzgsIDc4LCA0OSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMjI3LCAyMjcsIDIyNywgCi0gICAgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCi0gICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCAKLSAgICA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMjYsIDI2LCAwLCAwLCAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMjMwLCAyMzAsIDI2LCAyNiwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjMxLCAyMzAsIDIzMCwgMjYsIDI2LCA0MCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIAotICAgIDIzMiwgMjMzLCAyMzMsIDIzNCwgNzgsIDc4LCA0MCwgMjMzLCAyMzQsIDIzMiwgMjMzLCAyMzQsIDIzMiwgNzgsIDQwLCA3OCwgCi0gICAgMjMzLCAyMzUsIDIzNiwgNzgsIDIzMywgMjMyLCA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzMsIDQwLCAyMzMsIAotICAgIDIzMywgMjMyLCAyMzIsIDQwLCAyMzQsIDQwLCAyMzQsIDQwLCA0MCwgNDAsIDQwLCAyMzMsIDIzNywgMjI2LCAyMzMsIDIyNiwgCi0gICAgMjI2LCAyMzIsIDIzMiwgMjMyLCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMzLCAyMzMsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMzLCAyMzQsIDIzMiwgMjMyLCAyMzMsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDIzOCwgNDAsIDIzNCwgNzgsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMyLCAyMzIsIDIzMywgMjMzLCA3OCwgMjMwLCAyMzgsIAotICAgIDIzOCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDQwLCA3OCwgNzgsIDIzMiwgNDAsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA0MCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDIzMiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCi0gICAgMjQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIAorICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIAorICAgIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIAorICAgIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgCisgICAgMzgsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIAorICAgIDM4LCAzOCwgMzgsIDM4LCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgMTgyLCA0MywgCisgICAgMTgyLCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAorICAgIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAorICAgIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAorICAgIDE4MywgMTgzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAxODMsIDU4LCAxODIsIAorICAgIDU4LCA1OCwgNzYsIDQzLCA0MywgNDMsIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCA3NiwgNzYsIDc2LCA0MywgCisgICAgNDMsIDQzLCAxODIsIDAsIDAsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTg0LCAwLCA3NiwgNzYsIDc2LCA0MywgNDMsIDQzLCAKKyAgICAxODIsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDM4LCA3NiwgMTg1LCAxODUsIDAsIDAsIDQzLCA0MywgNDMsIAorICAgIDAsIDQzLCA0MywgMzgsIDE4NCwgMzgsIDE4NCwgMTgzLCAxODUsIDU4LCAwLCAxODYsIDE4NiwgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTc0LCAxNzQsIDE3NCwgMTg4LCAxODksIDE5MCwgMTkxLCA4NCwgMTkwLCAKKyAgICAxOTAsIDE5MCwgMjIsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTMsIDE5NCwgMTk1LCAxOTYsIDIyLCAyMiwgMjIsIAorICAgIDEzOCwgMTk3LCAxOTcsIDE5NywgMjIsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjEsIDIwNSwgMTEwLCAKKyAgICAyMDUsIDIwNiwgMjA3LCAyMiwgMTkyLCAxOTIsIDEzOCwgMjgsIDM2LCAyMiwgMTkyLCAxMzgsIDE5NywgMjA4LCAyMDgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDIwOSwgMTYzLCAxNjQsIDE5MiwgMTkyLCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCA3OCwgMTM4LCAyMDgsIDEzOCwgMTM4LCAxOTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTg3LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMjEwLCAyMTEsIDIxMiwgMjEzLCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAyMTQsIDUxLCAwLCAwLCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAyMTYsIAorICAgIDIxNywgMjE4LCAyMTksIDIxNCwgMzQsIDM0LCAzNCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgCisgICAgMjE2LCAyMTcsIDIxOCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDAsIAorICAgIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjIwLCAyMjEsIDg1LCA4NSwgMjMsIDg1LCA4NSwgODUsIAorICAgIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgMTc2LCAxNzYsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxNzYsIDE3NiwgMTc2LCA4MSwgODEsIDgyLCA4MiwgODIsIDgyLCA4MSwgODIsIDgyLCA4MiwgMTc2LCAxNzYsIDgxLCA4NiwgCisgICAgODEsIDE3NiwgMTc2LCA4NiwgODYsIDg2LCA4NiwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDIyMiwgMjIyLCA0OSwgMjIzLCAyNiwgMjIzLCAyMjIsIDQ5LCAyNiwgMjIzLCAzNSwgNDksIDQ5LCA0OSwgMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0NiwgMjYsIDQ5LCAyMjMsIDI2LCA3OCwgNDksIDQ5LCA0OSwgNDksIDQ5LCAyNiwgMjYsIDIyMiwgCisgICAgMjIzLCAyMjMsIDI2LCA0OSwgMjYsIDIyNCwgMjYsIDQ5LCAyNiwgMTg0LCAyMjQsIDQ5LCA0OSwgMjI1LCAzNSwgNDksIDQ5LCAKKyAgICA0NCwgNDksIDM1LCAxNTYsIDE1NiwgMTU2LCAxNTYsIDM1LCAyNiwgMjIyLCAzNSwgMzUsIDQ5LCA0OSwgMjI2LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNDksIDM1LCAzNSwgMzUsIDM1LCAyNiwgNzgsIDI2LCAyNiwgNDcsIDgwLCAyMjcsIDIyNywgMjI3LCAzNywgCisgICAgMzcsIDIyNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDM3LCAzNywgMzcsIDM3LCAyMjcsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgCisgICAgMjI5LCAxNzMsIDE3MywgMTczLCA0NCwgNDcsIDE3MywgMTczLCAxNzMsIDE3MywgMzcsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgNDAsIDQwLCA0MCwgNDAsIDQwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzMCwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgNzgsIDI2LCAKKyAgICAyNiwgNzgsIDI2LCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMSwgMjMwLCAyMzAsIDI2LCAyNiwgNDAsIDI2LCA0MCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDQwLCAyMzIsIDIzMywgMjMzLCAyMzQsIDc4LCA3OCwgNDAsIDIzMywgMjM0LCAyMzIsIAorICAgIDIzMywgMjM0LCAyMzIsIDc4LCA0MCwgNzgsIDIzMywgMjM1LCAyMzYsIDc4LCAyMzMsIDIzMiwgNzgsIDc4LCA3OCwgMjMzLCAKKyAgICAyMzIsIDIzMiwgMjMzLCA0MCwgMjMzLCAyMzMsIDIzMiwgMjMyLCA0MCwgMjM0LCA0MCwgMjM0LCA0MCwgNDAsIDQwLCA0MCwgCisgICAgMjMzLCAyMzcsIDIyNiwgMjMzLCAyMjYsIDIyNiwgMjMyLCAyMzIsIDIzMiwgNDAsIDQwLCA0MCwgNDAsIDc4LCAyMzIsIDc4LCAKKyAgICAyMzIsIDIzMywgMjMzLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzMywgCisgICAgMjM0LCAyMzIsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzgsIDQwLCAyMzQsIDc4LCAyMzMsIDIzMywgMjMzLCAyMzMsIDIzMiwgCisgICAgMjMyLCAyMzMsIDIzMywgNzgsIDIzMCwgMjM4LCAyMzgsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAKKyAgICAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgCisgICAgMjMzLCAyMzMsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAKKyAgICA0MCwgNzgsIDc4LCAyMzIsIDQwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNDAsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMywgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzQsIAorICAgIDIzNCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCA3OCwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDIzMiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI0MCwgMjQxLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjYsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCiAgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCi0gICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjI3LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAotICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAzMCwgCisgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDIyNywgCisgICAgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIAorICAgIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCiAgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgCi0gICAgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCi0gICAgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCi0gICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCisgICAgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI0NCwgMjQ0LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIAorICAgIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDI2LCAzMCwgMzAsIDI2LCA0MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCA4MCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAzMCwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDIzOSwgCisgICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMjM5LCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgCisgICAgMzAsIDIzOSwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCi0gICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgCi0gICAgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKLSAgICAxNjMsIDE2NCwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAxNTMsIDE1MywgCisgICAgMTYzLCAxNjQsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMTUzLCAxNTMsIAogICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKLSAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMyLCA3OCwgNzgsIDIzMiwgCi0gICAgMjMyLCAxNjMsIDE2NCwgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzMiwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMTYzLCAxNjQsIDc4LCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgOSwgMTAsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMTYzLCAKLSAgICAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKLSAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjI2LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAogICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAotICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIyNiwgMjE2LCAKLSAgICAyMTYsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMTYzLCAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjI2LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIAorICAgIDIyNiwgMjE2LCAyMTYsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgMjQzLCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgNzgsIDIzMiwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCAyNDUsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKICAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA0NCwgNDQsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NywgMCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNDQsIDQ0LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCiAgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCAKKyAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDgxLCA4MSwgODEsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxNTMsIDEzOCwgCisgICAgMTM4LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDgzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTEsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzgsIDEzOCwgMjgsIDM2LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIAotICAgIDI4LCAzNiwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAKLSAgICAxMzgsIDEzOCwgODQsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMjgsIDM2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCi0gICAgMTY0LCAxNjMsIDE2NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDUyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxOTUsIDAsIDAsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzgsIDEzOCwgMjgsIDM2LCAyOCwgMzYsIDEzOCwgCisgICAgMTM4LCAxMzgsIDI4LCAzNiwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDg0LCAxMzgsIDEzOCwgODQsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgMjgsIDM2LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAorICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDUyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCA4NCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxOTUsIDEzOCwgCisgICAgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMjQ2LCAyNDcsIDI0NywgMjQ3LCAyNDQsIDI0OCwgMTcwLCAyNDksIDI1MCwgMjUxLCAKLSAgICAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjQ0LCAyNDQsIDI1MCwgMjUxLCAyNTAsIDI1MSwgCi0gICAgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTQsIDI0NCwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIAotICAgIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjU1LCAyNTYsIDI1NywgMjU4LCAyNTksIDI1OSwgMjUyLCAyNDgsIDI0OCwgMjQ4LCAKLSAgICAyNDgsIDI0OCwgMjQ1LCAyNDQsIDI2MCwgMjYwLCAyNjAsIDI0OCwgMTcwLCAyNDcsIDI0NCwgMjYsIDAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgMTcwLCAyNjEsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjEsIDE3MCwgMTcwLCAwLCAKLSAgICAwLCAyNjIsIDI2MiwgMjYzLCAyNjMsIDI0OCwgMjY0LCAyNjUsIDI1MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgCi0gICAgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjQ3LCAyNDgsIDI0OCwgMjY0LCAyNjUsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDI0NiwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAyNDcsIDI0OCwgMjQ4LCAyNDgsIDIzOSwgMjQ5LCAxNzAsIAorICAgIDI1MCwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyMzksIDIzOSwgMjUxLCAKKyAgICAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUsIDI1NSwgMjM5LCAyNTAsIDI1MCwgCisgICAgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTYsIDI1NywgMjU4LCAyNTksIDI2MCwgMjYwLCAyNTMsIAorICAgIDI0OSwgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDYsIDIzOSwgMjYxLCAyNjEsIDI2MSwgMjQ5LCAxNzAsIDI0OCwgMjM5LCAyNiwgCisgICAgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIAorICAgIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIAorICAgIDI2MiwgMjYyLCAxNzAsIDI2MiwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MiwgCisgICAgMTcwLCAxNzAsIDAsIDAsIDI2MywgMjYzLCAyNjQsIDI2NCwgMjQ5LCAyNjUsIDI2NiwgMjUzLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgCisgICAgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIAorICAgIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgCisgICAgMjYyLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNDgsIDI0OSwgMjQ5LCAyNjUsIDI2NiwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMCwgMjY2LCAyNjYsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDAsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDAsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIAotICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNjYsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCi0gICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjQ1LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI0NiwgMjQ2LCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNDYsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIAorICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI0NiwgMjQ2LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMjA4MSwyMCArMjA4NiwyMCBAQAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDksIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIApAQCAtMjEwMywxMjQgKzIxMDgsMTE1IEBACiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM4LCAxMzgsIAotICAgIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIAorICAgIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDUzLCAxMzgsIDEzOCwgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKICAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ4LCA4MSwgODIsIDgyLCA4MiwgMTM4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgMTM4LCA1MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA1MSwgODEsIDgxLCA0OCwgNDgsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ4LCA4MSwgODIsIDgyLCA4MiwgMTM4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgMTM4LCA1MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDUxLCA1MSwgCisgICAgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCAKLSAgICA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1NCwgNTQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ3LCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1NCwgNTQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIAotICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI3MSwgMjcxLCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDgsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNTIsIDI3MiwgMjcyLCA0NCwgNDcsIDQ0LCA0NywgNDgsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIDg1LCAyMjUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA1MSwgNTEsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgCisgICAgNDgsIDQ4LCAxNDIsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzksIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODAsIAorICAgIDg1LCAyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA0OCwgCisgICAgODMsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIDg2LCA4NiwgODMsIAorICAgIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDE3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA1MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCA0OCwgMTM5LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDgxLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIAorICAgIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCAyNzIsIDUxLCA1MSwgNTEsIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIAorICAgIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKICAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDQ4LCA4MywgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgODYsIDg2LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTc1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgCi0gICAgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAKLSAgICA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIAotICAgIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIAotICAgIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIAotICAgIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgCi0gICAgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MSwgCi0gICAgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgCi0gICAgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCkBAIC0yMjI5LDcgKzIyMjUsOCBAQAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3NCwgMjc0LCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCisgICAgMjczLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIApAQCAtMjIzOCwzOCArMjIzNSw0NyBAQAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMTcwLCAxNzAsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMTcwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDE3MCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAxNzAsIDE3MCwgMTcwLCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMCwgMCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDE3MCwgMTcwLCAyNzUsIDE3MCwgMjc1LCAxNzAsIDE3MCwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAxNzAsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMTcwLCAKKyAgICAyNzUsIDI3NSwgMTcwLCAxNzAsIDE3MCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzYsIDI3NSwgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIAotICAgIDI3NywgMjc3LCAyNzcsIDI3NywgMjE1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKLSAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAyNzUsIDAsIDI3NSwgMjc1LCAwLCAKLSAgICAyNzUsIDI3NSwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc3LCAxMzEsIDEzMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjc2LCAyNzcsIDI3NiwgCisgICAgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjE1LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAKKyAgICAwLCAyNzYsIDAsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAKKyAgICAyNzYsIDI3NiwgMjc4LCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjc4LCAyNzgsIAotICAgIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIAorICAgIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCkBAIC0yMjg1LDI3ICsyMjkxLDI3IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI3OSwgMTk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDI4MCwgMTk1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMjgwLCAyNiwgMCwgMCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCi0gICAgNzEsIDcxLCA3MSwgNzEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgyLCAyODMsIDI4MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgCi0gICAgODEsIDI4MSwgMjg0LCAyODQsIDI4NSwgMjg1LCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAKLSAgICAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI0NywgMjQ3LCAyODIsIDI4MywgMjgxLCAyODEsIDI4MSwgCi0gICAgMjgxLCAyODUsIDI4NSwgMjg1LCAyODYsIDI4MSwgMjg2LCAwLCAyODEsIDI4NiwgMjgxLCAyODEsIDI4NCwgMjg3LCAyODgsIAotICAgIDI4NywgMjg4LCAyODcsIDI4OCwgMjg5LCAyODEsIDI4MSwgMjkwLCAyOTEsIDI5MiwgMjkyLCAyOTMsIDAsIDI4MSwgMjk0LCAKLSAgICAyODksIDI4MSwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjgxLCAyNiwgMCwgMCwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDI4MiwgMjgyLCAyODIsIDI4MiwgMjgyLCAyODIsIAorICAgIDI4MiwgMjgzLCAyODQsIDI4MiwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDg2LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCA4MSwgODEsIDI4MiwgMjg1LCAyODUsIDI4NiwgMjg2LCAyODMsIDI4NCwgMjgzLCAyODQsIAorICAgIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI0OCwgMjQ4LCAKKyAgICAyODMsIDI4NCwgMjgyLCAyODIsIDI4MiwgMjgyLCAyODYsIDI4NiwgMjg2LCAyODcsIDI4MiwgMjg3LCAwLCAyODIsIDI4NywgCisgICAgMjgyLCAyODIsIDI4NSwgMjg4LCAyODksIDI4OCwgMjg5LCAyODgsIDI4OSwgMjkwLCAyODIsIDI4MiwgMjkxLCAyOTIsIAorICAgIDI5MywgMjkzLCAyOTQsIDAsIDI4MiwgMjk1LCAyOTAsIDI4MiwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTE4LCAKKyAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCkBAIC0yMzE0LDE2NSArMjMyMCwxNjUgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk1LCAyOTUsIDI5NiwgMjk3LCAyOTYsIDI5NSwgMjk1LCAKLSAgICAyOTgsIDI5OSwgMjk1LCAzMDAsIDMwMSwgMzAyLCAzMDEsIDMwMSwgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgCi0gICAgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDEsIDI5NSwgMzA0LCAzMDUsIDMwNCwgMjk1LCAyOTUsIDMwNiwgMzA2LCAzMDYsIAotICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAKLSAgICAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAyOTgsIDI5NSwgMjk5LCAzMDcsIDMwOCwgCi0gICAgMzA3LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAotICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMjk4LCAKLSAgICAzMDUsIDI5OSwgMzA1LCAyOTgsIDI5OSwgMzEwLCAzMTEsIDMxMiwgMzEwLCAzMTAsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzE0LCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxNCwgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAwLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAzMTMsIDMxMywgMzEzLCAwLCAwLCAKLSAgICAwLCAyOTcsIDI5NywgMzA1LCAzMDcsIDMxNSwgMjk3LCAyOTcsIDAsIDMxNiwgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTYsIAotICAgIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4LCAzMTgsIDMxOCwgMjYsIDMwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAxNzQsIDAsIDI5NiwgMjk2LCAKKyAgICAyOTcsIDI5OCwgMjk3LCAyOTYsIDI5NiwgMjk5LCAzMDAsIDI5NiwgMzAxLCAzMDIsIDMwMywgMzAyLCAzMDIsIDMwNCwgCisgICAgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzAyLCAyOTYsIDMwNSwgMzA2LCAzMDUsIAorICAgIDI5NiwgMjk2LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKKyAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCisgICAgMjk5LCAyOTYsIDMwMCwgMzA4LCAzMDksIDMwOCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIAorICAgIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAKKyAgICAzMTAsIDMxMCwgMzEwLCAzMTAsIDI5OSwgMzA2LCAzMDAsIDMwNiwgMjk5LCAzMDAsIDMxMSwgMzEyLCAzMTMsIDMxMSwgCisgICAgMzExLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNSwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE1LCAzMTUsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgCisgICAgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgCisgICAgMCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMjk4LCAyOTgsIDMwNiwgMzA4LCAzMTYsIDI5OCwgMjk4LCAwLCAzMTcsIAorICAgIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE3LCAzMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxOSwgMzE5LCAKKyAgICAzMTksIDI2LCAzMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgODMsIDEzOCwgODMsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgCisgICAgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCiAgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMTUzLCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NiwgMzIwLCAzMjAsIDMyMCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjAsIAogICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIAorICAgIDI2LCA4MCwgODAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgODYsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCisgICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxNzMsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAxMDcsIDAsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMCwgMTA0LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMywgMzIzLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAxMDcsIDEwNywgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDEwNywgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgODYsIDEzNSwgCi0gICAgODEsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMTM1LCA4NiwgCisgICAgMTM1LCA4MSwgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NiwgODYsIDAsIDAsIDAsIAotICAgIDAsIDE0MiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgODEsIDE3NiwgODYsIDAsIAorICAgIDAsIDAsIDAsIDE0MiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMzIxLCAzMjEsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMzIyLCAzMjIsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjMsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDgxLCA4NiwgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAorICAgIDAsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAKQEAgLTI0ODMsMjEgKzI0ODksMjEgQEAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCiAgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAogICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKLSAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAogICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKLSAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMCwgMTM5LCAxMzUsIDEzOSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCisgICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAorICAgIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAwLCAxMzksIDEzNSwgMTM5LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCkBAIC0yNTMwLDE1ICsyNTM2LDE1IEBACiAgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzOSwgCi0gICAgMTM5LCAxMzUsIDE3NSwgMTQ1LCAxMzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzOSwgMTM1LCAxNzUsIDE0NSwgMTM1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCkBAIC0yNTUwLDYgKzI1NTYsMTMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDEzOSwgMTQyLCAxMzUsIDEzNSwgMTM5LCAxNDUsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgODMsIDAsIDgzLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE0OSwgMTQ3LCAxNDcsIDE0NiwgCiAgICAgMTQ3LCAxMzUsIDEzNSwgMTM5LCAxNDIsIDE0NSwgNDgsIDQ4LCA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0yNTY2LDIzMCArMjU3OSwyNjggQEAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTQyLCAxMzUsIDgzLCA4MywgCiAgICAgODMsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTc1LCAxNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAwLCAKLSAgICAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCA4MywgCi0gICAgODMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDgzLCA4MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgCi0gICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA1MywgNTMsIDUzLCA1MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDMyNywgNDgsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAKKyAgICAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDgwLCAxMzUsIDE3NiwgODMsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIAotICAgIDMyNywgMzI3LCAxNzYsIDE3NiwgMTc2LCA4MCwgODAsIDgwLCAzMjgsIDMyNywgMzI3LCAzMjcsIDMyNywgMzI3LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MCwgCi0gICAgODAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTc2LCAxNzYsIDE3NiwgCisgICAgMTc2LCAxNzYsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgCisgICAgODAsIDgwLCA4MCwgNTMsIDUzLCA1MywgNTMsIDgzLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTMsIDUzLCA1MywgNTMsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDI0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgODAsIDEzNSwgMTc2LCA4MywgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOSwgMzI5LCAxNzYsIDE3NiwgMTc2LCA4MCwgODAsIDgwLCAKKyAgICAzMzAsIDMyOSwgMzI5LCAzMjksIDMyOSwgMzI5LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MSwgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgODEsIDgxLCAyNiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDAsIAotICAgIDAsIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDAsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCAwLCAwLCAwLCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCiAgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIAorICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgCisgICAgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDAsIDQ5LCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCiAgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMzUsIDAsIDAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMzEsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCA4MCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDEzNSwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgMCwgODEsIDgxLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIApAQCAtMjgwMywxMSArMjg1NCwxOCBAQAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKLSAgICAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCAKLSAgICA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgODYsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAorICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCAxNDUsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAorICAgIDEzNiwgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAKICAgICAxMzEsIDAsIDEzMSwgMCwgMCwgMTMxLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgCkBAIC0yODIxLDcgKzI4NzksNyBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OCwgNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKQEAgLTI4MzIsMTczICsyODkwLDIwOCBAQAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1MywgMTUzLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzEsIDAsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMjIyLCAyMjIsIDAsIDAsIDAsIDAsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAyNDEsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE1MywgMTUzLCAwLCAwLCAwLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAzMzMsIDAsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMjIyLCAyMjIsIDAsIDAsIDAsIDAsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDI2NywgMzM0LCAyNDIsIDI2NywgMjY3LCAyNjcsIAorICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICAyNjgsIDI2OCwgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgCi0gICAgMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDU0LCA1NCwgCi0gICAgNTQsIDU0LCA1NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDIzOSwgCisgICAgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMzM1LCAzMzUsIDMzNSwgMzM1LCAzMzUsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDI2LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAwLCAwLCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAwLCAwLCAKIH07CiAKIC8qIGRlY29tcG9zaXRpb24gZGF0YSAqLwpAQCAtMzk3MCwxMDIgKzQwNjMsMTAyIEBACiAgICAgMjY2LCAyODQzNiwgMjY2LCAyNTIzNywgMjY2LCAyNTQyOSwgMjY2LCAxOTk2OCwgMjY2LCAxOTk3NywgMjY2LCAzNjkzOCwgCiAgICAgMjY2LCAyNDAzOCwgMjY2LCAyMDAxMywgMjY2LCAyMTQ5MSwgMjY2LCAyNTM1MSwgMjY2LCAzNjIwOCwgMjY2LCAyNTE3MSwgCiAgICAgMjY2LCAzMTEwNSwgMjY2LCAzMTM1NCwgMjY2LCAyMTUxMiwgMjY2LCAyODI4OCwgMjY2LCAyNjM3NywgMjY2LCAyNjM3NiwgCi0gICAgMjY2LCAzMDAwMywgMjY2LCAyMTEwNiwgMjY2LCAyMTk0MiwgNzcwLCAxMjMwOCwgMjY0MTIsIDEyMzA5LCA3NzAsIDEyMzA4LCAKLSAgICAxOTk3NywgMTIzMDksIDc3MCwgMTIzMDgsIDIwMTA4LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjM0MzMsIDEyMzA5LCA3NzAsIAotICAgIDEyMzA4LCAyODg1NywgMTIzMDksIDc3MCwgMTIzMDgsIDI1MTcxLCAxMjMwOSwgNzcwLCAxMjMwOCwgMzA0MjMsIDEyMzA5LCAKLSAgICA3NzAsIDEyMzA4LCAyMTIxMywgMTIzMDksIDc3MCwgMTIzMDgsIDI1OTQzLCAxMjMwOSwgMjYzLCAyNDQ3MSwgMjYzLCAKLSAgICAyMTQ4NywgMjU2LCAyMDAyOSwgMjU2LCAyMDAyNCwgMjU2LCAyMDAzMywgMjU2LCAxMzEzNjIsIDI1NiwgMjAzMjAsIDI1NiwgCi0gICAgMjAzOTgsIDI1NiwgMjA0MTEsIDI1NiwgMjA0ODIsIDI1NiwgMjA2MDIsIDI1NiwgMjA2MzMsIDI1NiwgMjA3MTEsIDI1NiwgCi0gICAgMjA2ODcsIDI1NiwgMTM0NzAsIDI1NiwgMTMyNjY2LCAyNTYsIDIwODEzLCAyNTYsIDIwODIwLCAyNTYsIDIwODM2LCAyNTYsIAotICAgIDIwODU1LCAyNTYsIDEzMjM4MCwgMjU2LCAxMzQ5NywgMjU2LCAyMDgzOSwgMjU2LCAyMDg3NywgMjU2LCAxMzI0MjcsIDI1NiwgCi0gICAgMjA4ODcsIDI1NiwgMjA5MDAsIDI1NiwgMjAxNzIsIDI1NiwgMjA5MDgsIDI1NiwgMjA5MTcsIDI1NiwgMTY4NDE1LCAyNTYsIAotICAgIDIwOTgxLCAyNTYsIDIwOTk1LCAyNTYsIDEzNTM1LCAyNTYsIDIxMDUxLCAyNTYsIDIxMDYyLCAyNTYsIDIxMTA2LCAyNTYsIAotICAgIDIxMTExLCAyNTYsIDEzNTg5LCAyNTYsIDIxMTkxLCAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIDIxMjQyLCAyNTYsIAotICAgIDIxMjUzLCAyNTYsIDIxMjU0LCAyNTYsIDIxMjcxLCAyNTYsIDIxMzIxLCAyNTYsIDIxMzI5LCAyNTYsIDIxMzM4LCAyNTYsIAotICAgIDIxMzYzLCAyNTYsIDIxMzczLCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDEzMzY3NiwgMjU2LCAKLSAgICAyODc4NCwgMjU2LCAyMTQ1MCwgMjU2LCAyMTQ3MSwgMjU2LCAxMzM5ODcsIDI1NiwgMjE0ODMsIDI1NiwgMjE0ODksIDI1NiwgCi0gICAgMjE1MTAsIDI1NiwgMjE2NjIsIDI1NiwgMjE1NjAsIDI1NiwgMjE1NzYsIDI1NiwgMjE2MDgsIDI1NiwgMjE2NjYsIDI1NiwgCi0gICAgMjE3NTAsIDI1NiwgMjE3NzYsIDI1NiwgMjE4NDMsIDI1NiwgMjE4NTksIDI1NiwgMjE4OTIsIDI1NiwgMjE4OTIsIDI1NiwgCi0gICAgMjE5MTMsIDI1NiwgMjE5MzEsIDI1NiwgMjE5MzksIDI1NiwgMjE5NTQsIDI1NiwgMjIyOTQsIDI1NiwgMjIwMjIsIDI1NiwgCi0gICAgMjIyOTUsIDI1NiwgMjIwOTcsIDI1NiwgMjIxMzIsIDI1NiwgMjA5OTksIDI1NiwgMjI3NjYsIDI1NiwgMjI0NzgsIDI1NiwgCi0gICAgMjI1MTYsIDI1NiwgMjI1NDEsIDI1NiwgMjI0MTEsIDI1NiwgMjI1NzgsIDI1NiwgMjI1NzcsIDI1NiwgMjI3MDAsIDI1NiwgCi0gICAgMTM2NDIwLCAyNTYsIDIyNzcwLCAyNTYsIDIyNzc1LCAyNTYsIDIyNzkwLCAyNTYsIDIyODEwLCAyNTYsIDIyODE4LCAyNTYsIAotICAgIDIyODgyLCAyNTYsIDEzNjg3MiwgMjU2LCAxMzY5MzgsIDI1NiwgMjMwMjAsIDI1NiwgMjMwNjcsIDI1NiwgMjMwNzksIDI1NiwgCi0gICAgMjMwMDAsIDI1NiwgMjMxNDIsIDI1NiwgMTQwNjIsIDI1NiwgMTQwNzYsIDI1NiwgMjMzMDQsIDI1NiwgMjMzNTgsIDI1NiwgCi0gICAgMjMzNTgsIDI1NiwgMTM3NjcyLCAyNTYsIDIzNDkxLCAyNTYsIDIzNTEyLCAyNTYsIDIzNTI3LCAyNTYsIDIzNTM5LCAyNTYsIAotICAgIDEzODAwOCwgMjU2LCAyMzU1MSwgMjU2LCAyMzU1OCwgMjU2LCAyNDQwMywgMjU2LCAyMzU4NiwgMjU2LCAxNDIwOSwgMjU2LCAKLSAgICAyMzY0OCwgMjU2LCAyMzY2MiwgMjU2LCAyMzc0NCwgMjU2LCAyMzY5MywgMjU2LCAxMzg3MjQsIDI1NiwgMjM4NzUsIDI1NiwgCi0gICAgMTM4NzI2LCAyNTYsIDIzOTE4LCAyNTYsIDIzOTE1LCAyNTYsIDIzOTMyLCAyNTYsIDI0MDMzLCAyNTYsIDI0MDM0LCAyNTYsIAotICAgIDE0MzgzLCAyNTYsIDI0MDYxLCAyNTYsIDI0MTA0LCAyNTYsIDI0MTI1LCAyNTYsIDI0MTY5LCAyNTYsIDE0NDM0LCAyNTYsIAotICAgIDEzOTY1MSwgMjU2LCAxNDQ2MCwgMjU2LCAyNDI0MCwgMjU2LCAyNDI0MywgMjU2LCAyNDI0NiwgMjU2LCAyNDI2NiwgMjU2LCAKLSAgICAxNzI5NDYsIDI1NiwgMjQzMTgsIDI1NiwgMTQwMDgxLCAyNTYsIDE0MDA4MSwgMjU2LCAzMzI4MSwgMjU2LCAyNDM1NCwgCi0gICAgMjU2LCAyNDM1NCwgMjU2LCAxNDUzNSwgMjU2LCAxNDQwNTYsIDI1NiwgMTU2MTIyLCAyNTYsIDI0NDE4LCAyNTYsIDI0NDI3LCAKLSAgICAyNTYsIDE0NTYzLCAyNTYsIDI0NDc0LCAyNTYsIDI0NTI1LCAyNTYsIDI0NTM1LCAyNTYsIDI0NTY5LCAyNTYsIDI0NzA1LCAKLSAgICAyNTYsIDE0NjUwLCAyNTYsIDE0NjIwLCAyNTYsIDI0NzI0LCAyNTYsIDE0MTAxMiwgMjU2LCAyNDc3NSwgMjU2LCAyNDkwNCwgCi0gICAgMjU2LCAyNDkwOCwgMjU2LCAyNDkxMCwgMjU2LCAyNDkwOCwgMjU2LCAyNDk1NCwgMjU2LCAyNDk3NCwgMjU2LCAyNTAxMCwgCi0gICAgMjU2LCAyNDk5NiwgMjU2LCAyNTAwNywgMjU2LCAyNTA1NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTA3OCwgMjU2LCAyNTEwNCwgCi0gICAgMjU2LCAyNTExNSwgMjU2LCAyNTE4MSwgMjU2LCAyNTI2NSwgMjU2LCAyNTMwMCwgMjU2LCAyNTQyNCwgMjU2LCAxNDIwOTIsIAotICAgIDI1NiwgMjU0MDUsIDI1NiwgMjUzNDAsIDI1NiwgMjU0NDgsIDI1NiwgMjU0NzUsIDI1NiwgMjU1NzIsIDI1NiwgMTQyMzIxLCAKLSAgICAyNTYsIDI1NjM0LCAyNTYsIDI1NTQxLCAyNTYsIDI1NTEzLCAyNTYsIDE0ODk0LCAyNTYsIDI1NzA1LCAyNTYsIDI1NzI2LCAKLSAgICAyNTYsIDI1NzU3LCAyNTYsIDI1NzE5LCAyNTYsIDE0OTU2LCAyNTYsIDI1OTM1LCAyNTYsIDI1OTY0LCAyNTYsIDE0MzM3MCwgCi0gICAgMjU2LCAyNjA4MywgMjU2LCAyNjM2MCwgMjU2LCAyNjE4NSwgMjU2LCAxNTEyOSwgMjU2LCAyNjI1NywgMjU2LCAxNTExMiwgCi0gICAgMjU2LCAxNTA3NiwgMjU2LCAyMDg4MiwgMjU2LCAyMDg4NSwgMjU2LCAyNjM2OCwgMjU2LCAyNjI2OCwgMjU2LCAzMjk0MSwgCi0gICAgMjU2LCAxNzM2OSwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQwMSwgMjU2LCAyNjQ2MiwgMjU2LCAyNjQ1MSwgCi0gICAgMjU2LCAxNDQzMjMsIDI1NiwgMTUxNzcsIDI1NiwgMjY2MTgsIDI1NiwgMjY1MDEsIDI1NiwgMjY3MDYsIDI1NiwgMjY3NTcsIAotICAgIDI1NiwgMTQ0NDkzLCAyNTYsIDI2NzY2LCAyNTYsIDI2NjU1LCAyNTYsIDI2OTAwLCAyNTYsIDE1MjYxLCAyNTYsIDI2OTQ2LCAKLSAgICAyNTYsIDI3MDQzLCAyNTYsIDI3MTE0LCAyNTYsIDI3MzA0LCAyNTYsIDE0NTA1OSwgMjU2LCAyNzM1NSwgMjU2LCAxNTM4NCwgCi0gICAgMjU2LCAyNzQyNSwgMjU2LCAxNDU1NzUsIDI1NiwgMjc0NzYsIDI1NiwgMTU0MzgsIDI1NiwgMjc1MDYsIDI1NiwgMjc1NTEsIAotICAgIDI1NiwgMjc1NzgsIDI1NiwgMjc1NzksIDI1NiwgMTQ2MDYxLCAyNTYsIDEzODUwNywgMjU2LCAxNDYxNzAsIDI1NiwgCi0gICAgMjc3MjYsIDI1NiwgMTQ2NjIwLCAyNTYsIDI3ODM5LCAyNTYsIDI3ODUzLCAyNTYsIDI3NzUxLCAyNTYsIDI3OTI2LCAyNTYsIAotICAgIDI3OTY2LCAyNTYsIDI4MDIzLCAyNTYsIDI3OTY5LCAyNTYsIDI4MDA5LCAyNTYsIDI4MDI0LCAyNTYsIDI4MDM3LCAyNTYsIAotICAgIDE0NjcxOCwgMjU2LCAyNzk1NiwgMjU2LCAyODIwNywgMjU2LCAyODI3MCwgMjU2LCAxNTY2NywgMjU2LCAyODM2MywgMjU2LCAKLSAgICAyODM1OSwgMjU2LCAxNDcxNTMsIDI1NiwgMjgxNTMsIDI1NiwgMjg1MjYsIDI1NiwgMTQ3Mjk0LCAyNTYsIDE0NzM0MiwgCi0gICAgMjU2LCAyODYxNCwgMjU2LCAyODcyOSwgMjU2LCAyODcwMiwgMjU2LCAyODY5OSwgMjU2LCAxNTc2NiwgMjU2LCAyODc0NiwgCi0gICAgMjU2LCAyODc5NywgMjU2LCAyODc5MSwgMjU2LCAyODg0NSwgMjU2LCAxMzIzODksIDI1NiwgMjg5OTcsIDI1NiwgMTQ4MDY3LCAKLSAgICAyNTYsIDI5MDg0LCAyNTYsIDE0ODM5NSwgMjU2LCAyOTIyNCwgMjU2LCAyOTIzNywgMjU2LCAyOTI2NCwgMjU2LCAxNDkwMDAsIAotICAgIDI1NiwgMjkzMTIsIDI1NiwgMjkzMzMsIDI1NiwgMTQ5MzAxLCAyNTYsIDE0OTUyNCwgMjU2LCAyOTU2MiwgMjU2LCAyOTU3OSwgCi0gICAgMjU2LCAxNjA0NCwgMjU2LCAyOTYwNSwgMjU2LCAxNjA1NiwgMjU2LCAxNjA1NiwgMjU2LCAyOTc2NywgMjU2LCAyOTc4OCwgCi0gICAgMjU2LCAyOTgwOSwgMjU2LCAyOTgyOSwgMjU2LCAyOTg5OCwgMjU2LCAxNjE1NSwgMjU2LCAyOTk4OCwgMjU2LCAxNTA1ODIsIAotICAgIDI1NiwgMzAwMTQsIDI1NiwgMTUwNjc0LCAyNTYsIDMwMDY0LCAyNTYsIDEzOTY3OSwgMjU2LCAzMDIyNCwgMjU2LCAKLSAgICAxNTE0NTcsIDI1NiwgMTUxNDgwLCAyNTYsIDE1MTYyMCwgMjU2LCAxNjM4MCwgMjU2LCAxNjM5MiwgMjU2LCAzMDQ1MiwgCi0gICAgMjU2LCAxNTE3OTUsIDI1NiwgMTUxNzk0LCAyNTYsIDE1MTgzMywgMjU2LCAxNTE4NTksIDI1NiwgMzA0OTQsIDI1NiwgCi0gICAgMzA0OTUsIDI1NiwgMzA0OTUsIDI1NiwgMzA1MzgsIDI1NiwgMTY0NDEsIDI1NiwgMzA2MDMsIDI1NiwgMTY0NTQsIDI1NiwgCi0gICAgMTY1MzQsIDI1NiwgMTUyNjA1LCAyNTYsIDMwNzk4LCAyNTYsIDMwODYwLCAyNTYsIDMwOTI0LCAyNTYsIDE2NjExLCAyNTYsIAotICAgIDE1MzEyNiwgMjU2LCAzMTA2MiwgMjU2LCAxNTMyNDIsIDI1NiwgMTUzMjg1LCAyNTYsIDMxMTE5LCAyNTYsIDMxMjExLCAKLSAgICAyNTYsIDE2Njg3LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzA2LCAyNTYsIDMxMzExLCAyNTYsIDE1Mzk4MCwgMjU2LCAxNTQyNzksIAotICAgIDI1NiwgMTU0Mjc5LCAyNTYsIDMxNDcwLCAyNTYsIDE2ODk4LCAyNTYsIDE1NDUzOSwgMjU2LCAzMTY4NiwgMjU2LCAzMTY4OSwgCi0gICAgMjU2LCAxNjkzNSwgMjU2LCAxNTQ3NTIsIDI1NiwgMzE5NTQsIDI1NiwgMTcwNTYsIDI1NiwgMzE5NzYsIDI1NiwgMzE5NzEsIAotICAgIDI1NiwgMzIwMDAsIDI1NiwgMTU1NTI2LCAyNTYsIDMyMDk5LCAyNTYsIDE3MTUzLCAyNTYsIDMyMTk5LCAyNTYsIDMyMjU4LCAKLSAgICAyNTYsIDMyMzI1LCAyNTYsIDE3MjA0LCAyNTYsIDE1NjIwMCwgMjU2LCAxNTYyMzEsIDI1NiwgMTcyNDEsIDI1NiwgCi0gICAgMTU2Mzc3LCAyNTYsIDMyNjM0LCAyNTYsIDE1NjQ3OCwgMjU2LCAzMjY2MSwgMjU2LCAzMjc2MiwgMjU2LCAzMjc3MywgMjU2LCAKLSAgICAxNTY4OTAsIDI1NiwgMTU2OTYzLCAyNTYsIDMyODY0LCAyNTYsIDE1NzA5NiwgMjU2LCAzMjg4MCwgMjU2LCAxNDQyMjMsIAotICAgIDI1NiwgMTczNjUsIDI1NiwgMzI5NDYsIDI1NiwgMzMwMjcsIDI1NiwgMTc0MTksIDI1NiwgMzMwODYsIDI1NiwgMjMyMjEsIAotICAgIDI1NiwgMTU3NjA3LCAyNTYsIDE1NzYyMSwgMjU2LCAxNDQyNzUsIDI1NiwgMTQ0Mjg0LCAyNTYsIDMzMjgxLCAyNTYsIAotICAgIDMzMjg0LCAyNTYsIDM2NzY2LCAyNTYsIDE3NTE1LCAyNTYsIDMzNDI1LCAyNTYsIDMzNDE5LCAyNTYsIDMzNDM3LCAyNTYsIAotICAgIDIxMTcxLCAyNTYsIDMzNDU3LCAyNTYsIDMzNDU5LCAyNTYsIDMzNDY5LCAyNTYsIDMzNTEwLCAyNTYsIDE1ODUyNCwgMjU2LCAKLSAgICAzMzUwOSwgMjU2LCAzMzU2NSwgMjU2LCAzMzYzNSwgMjU2LCAzMzcwOSwgMjU2LCAzMzU3MSwgMjU2LCAzMzcyNSwgMjU2LCAKLSAgICAzMzc2NywgMjU2LCAzMzg3OSwgMjU2LCAzMzYxOSwgMjU2LCAzMzczOCwgMjU2LCAzMzc0MCwgMjU2LCAzMzc1NiwgMjU2LCAKLSAgICAxNTg3NzQsIDI1NiwgMTU5MDgzLCAyNTYsIDE1ODkzMywgMjU2LCAxNzcwNywgMjU2LCAzNDAzMywgMjU2LCAzNDAzNSwgCi0gICAgMjU2LCAzNDA3MCwgMjU2LCAxNjA3MTQsIDI1NiwgMzQxNDgsIDI1NiwgMTU5NTMyLCAyNTYsIDE3NzU3LCAyNTYsIDE3NzYxLCAKLSAgICAyNTYsIDE1OTY2NSwgMjU2LCAxNTk5NTQsIDI1NiwgMTc3NzEsIDI1NiwgMzQzODQsIDI1NiwgMzQzOTYsIDI1NiwgMzQ0MDcsIAotICAgIDI1NiwgMzQ0MDksIDI1NiwgMzQ0NzMsIDI1NiwgMzQ0NDAsIDI1NiwgMzQ1NzQsIDI1NiwgMzQ1MzAsIDI1NiwgMzQ2ODEsIAotICAgIDI1NiwgMzQ2MDAsIDI1NiwgMzQ2NjcsIDI1NiwgMzQ2OTQsIDI1NiwgMTc4NzksIDI1NiwgMzQ3ODUsIDI1NiwgMzQ4MTcsIAotICAgIDI1NiwgMTc5MTMsIDI1NiwgMzQ5MTIsIDI1NiwgMzQ5MTUsIDI1NiwgMTYxMzgzLCAyNTYsIDM1MDMxLCAyNTYsIDM1MDM4LCAKLSAgICAyNTYsIDE3OTczLCAyNTYsIDM1MDY2LCAyNTYsIDEzNDk5LCAyNTYsIDE2MTk2NiwgMjU2LCAxNjIxNTAsIDI1NiwgMTgxMTAsIAotICAgIDI1NiwgMTgxMTksIDI1NiwgMzU0ODgsIDI1NiwgMzU1NjUsIDI1NiwgMzU3MjIsIDI1NiwgMzU5MjUsIDI1NiwgMTYyOTg0LCAKLSAgICAyNTYsIDM2MDExLCAyNTYsIDM2MDMzLCAyNTYsIDM2MTIzLCAyNTYsIDM2MjE1LCAyNTYsIDE2MzYzMSwgMjU2LCAxMzMxMjQsIAotICAgIDI1NiwgMzYyOTksIDI1NiwgMzYyODQsIDI1NiwgMzYzMzYsIDI1NiwgMTMzMzQyLCAyNTYsIDM2NTY0LCAyNTYsIDM2NjY0LCAKLSAgICAyNTYsIDE2NTMzMCwgMjU2LCAxNjUzNTcsIDI1NiwgMzcwMTIsIDI1NiwgMzcxMDUsIDI1NiwgMzcxMzcsIDI1NiwgCi0gICAgMTY1Njc4LCAyNTYsIDM3MTQ3LCAyNTYsIDM3NDMyLCAyNTYsIDM3NTkxLCAyNTYsIDM3NTkyLCAyNTYsIDM3NTAwLCAyNTYsIAotICAgIDM3ODgxLCAyNTYsIDM3OTA5LCAyNTYsIDE2NjkwNiwgMjU2LCAzODI4MywgMjU2LCAxODgzNywgMjU2LCAzODMyNywgMjU2LCAKLSAgICAxNjcyODcsIDI1NiwgMTg5MTgsIDI1NiwgMzg1OTUsIDI1NiwgMjM5ODYsIDI1NiwgMzg2OTEsIDI1NiwgMTY4MjYxLCAyNTYsIAotICAgIDE2ODQ3NCwgMjU2LCAxOTA1NCwgMjU2LCAxOTA2MiwgMjU2LCAzODg4MCwgMjU2LCAxNjg5NzAsIDI1NiwgMTkxMjIsIDI1NiwgCi0gICAgMTY5MTEwLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTUzLCAyNTYsIDE2OTM5OCwgMjU2LCAzOTEzOCwgMjU2LCAKLSAgICAxOTI1MSwgMjU2LCAzOTIwOSwgMjU2LCAzOTMzNSwgMjU2LCAzOTM2MiwgMjU2LCAzOTQyMiwgMjU2LCAxOTQwNiwgMjU2LCAKLSAgICAxNzA4MDAsIDI1NiwgMzk2OTgsIDI1NiwgNDAwMDAsIDI1NiwgNDAxODksIDI1NiwgMTk2NjIsIDI1NiwgMTk2OTMsIDI1NiwgCi0gICAgNDAyOTUsIDI1NiwgMTcyMjM4LCAyNTYsIDE5NzA0LCAyNTYsIDE3MjI5MywgMjU2LCAxNzI1NTgsIDI1NiwgMTcyNjg5LCAKLSAgICAyNTYsIDQwNjM1LCAyNTYsIDE5Nzk4LCAyNTYsIDQwNjk3LCAyNTYsIDQwNzAyLCAyNTYsIDQwNzA5LCAyNTYsIDQwNzE5LCAKLSAgICAyNTYsIDQwNzI2LCAyNTYsIDQwNzYzLCAyNTYsIDE3MzU2OCwgCisgICAgMjY2LCAzMDAwMywgMjY2LCAyMTEwNiwgMjY2LCAyMTk0MiwgMjY2LCAzNzE5NywgNzcwLCAxMjMwOCwgMjY0MTIsIDEyMzA5LCAKKyAgICA3NzAsIDEyMzA4LCAxOTk3NywgMTIzMDksIDc3MCwgMTIzMDgsIDIwMTA4LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjM0MzMsIAorICAgIDEyMzA5LCA3NzAsIDEyMzA4LCAyODg1NywgMTIzMDksIDc3MCwgMTIzMDgsIDI1MTcxLCAxMjMwOSwgNzcwLCAxMjMwOCwgCisgICAgMzA0MjMsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMTIxMywgMTIzMDksIDc3MCwgMTIzMDgsIDI1OTQzLCAxMjMwOSwgMjYzLCAKKyAgICAyNDQ3MSwgMjYzLCAyMTQ4NywgMjU2LCAyMDAyOSwgMjU2LCAyMDAyNCwgMjU2LCAyMDAzMywgMjU2LCAxMzEzNjIsIDI1NiwgCisgICAgMjAzMjAsIDI1NiwgMjAzOTgsIDI1NiwgMjA0MTEsIDI1NiwgMjA0ODIsIDI1NiwgMjA2MDIsIDI1NiwgMjA2MzMsIDI1NiwgCisgICAgMjA3MTEsIDI1NiwgMjA2ODcsIDI1NiwgMTM0NzAsIDI1NiwgMTMyNjY2LCAyNTYsIDIwODEzLCAyNTYsIDIwODIwLCAyNTYsIAorICAgIDIwODM2LCAyNTYsIDIwODU1LCAyNTYsIDEzMjM4MCwgMjU2LCAxMzQ5NywgMjU2LCAyMDgzOSwgMjU2LCAyMDg3NywgMjU2LCAKKyAgICAxMzI0MjcsIDI1NiwgMjA4ODcsIDI1NiwgMjA5MDAsIDI1NiwgMjAxNzIsIDI1NiwgMjA5MDgsIDI1NiwgMjA5MTcsIDI1NiwgCisgICAgMTY4NDE1LCAyNTYsIDIwOTgxLCAyNTYsIDIwOTk1LCAyNTYsIDEzNTM1LCAyNTYsIDIxMDUxLCAyNTYsIDIxMDYyLCAyNTYsIAorICAgIDIxMTA2LCAyNTYsIDIxMTExLCAyNTYsIDEzNTg5LCAyNTYsIDIxMTkxLCAyNTYsIDIxMTkzLCAyNTYsIDIxMjIwLCAyNTYsIAorICAgIDIxMjQyLCAyNTYsIDIxMjUzLCAyNTYsIDIxMjU0LCAyNTYsIDIxMjcxLCAyNTYsIDIxMzIxLCAyNTYsIDIxMzI5LCAyNTYsIAorICAgIDIxMzM4LCAyNTYsIDIxMzYzLCAyNTYsIDIxMzczLCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIDIxMzc1LCAyNTYsIAorICAgIDEzMzY3NiwgMjU2LCAyODc4NCwgMjU2LCAyMTQ1MCwgMjU2LCAyMTQ3MSwgMjU2LCAxMzM5ODcsIDI1NiwgMjE0ODMsIDI1NiwgCisgICAgMjE0ODksIDI1NiwgMjE1MTAsIDI1NiwgMjE2NjIsIDI1NiwgMjE1NjAsIDI1NiwgMjE1NzYsIDI1NiwgMjE2MDgsIDI1NiwgCisgICAgMjE2NjYsIDI1NiwgMjE3NTAsIDI1NiwgMjE3NzYsIDI1NiwgMjE4NDMsIDI1NiwgMjE4NTksIDI1NiwgMjE4OTIsIDI1NiwgCisgICAgMjE4OTIsIDI1NiwgMjE5MTMsIDI1NiwgMjE5MzEsIDI1NiwgMjE5MzksIDI1NiwgMjE5NTQsIDI1NiwgMjIyOTQsIDI1NiwgCisgICAgMjIwMjIsIDI1NiwgMjIyOTUsIDI1NiwgMjIwOTcsIDI1NiwgMjIxMzIsIDI1NiwgMjA5OTksIDI1NiwgMjI3NjYsIDI1NiwgCisgICAgMjI0NzgsIDI1NiwgMjI1MTYsIDI1NiwgMjI1NDEsIDI1NiwgMjI0MTEsIDI1NiwgMjI1NzgsIDI1NiwgMjI1NzcsIDI1NiwgCisgICAgMjI3MDAsIDI1NiwgMTM2NDIwLCAyNTYsIDIyNzcwLCAyNTYsIDIyNzc1LCAyNTYsIDIyNzkwLCAyNTYsIDIyODEwLCAyNTYsIAorICAgIDIyODE4LCAyNTYsIDIyODgyLCAyNTYsIDEzNjg3MiwgMjU2LCAxMzY5MzgsIDI1NiwgMjMwMjAsIDI1NiwgMjMwNjcsIDI1NiwgCisgICAgMjMwNzksIDI1NiwgMjMwMDAsIDI1NiwgMjMxNDIsIDI1NiwgMTQwNjIsIDI1NiwgMTQwNzYsIDI1NiwgMjMzMDQsIDI1NiwgCisgICAgMjMzNTgsIDI1NiwgMjMzNTgsIDI1NiwgMTM3NjcyLCAyNTYsIDIzNDkxLCAyNTYsIDIzNTEyLCAyNTYsIDIzNTI3LCAyNTYsIAorICAgIDIzNTM5LCAyNTYsIDEzODAwOCwgMjU2LCAyMzU1MSwgMjU2LCAyMzU1OCwgMjU2LCAyNDQwMywgMjU2LCAyMzU4NiwgMjU2LCAKKyAgICAxNDIwOSwgMjU2LCAyMzY0OCwgMjU2LCAyMzY2MiwgMjU2LCAyMzc0NCwgMjU2LCAyMzY5MywgMjU2LCAxMzg3MjQsIDI1NiwgCisgICAgMjM4NzUsIDI1NiwgMTM4NzI2LCAyNTYsIDIzOTE4LCAyNTYsIDIzOTE1LCAyNTYsIDIzOTMyLCAyNTYsIDI0MDMzLCAyNTYsIAorICAgIDI0MDM0LCAyNTYsIDE0MzgzLCAyNTYsIDI0MDYxLCAyNTYsIDI0MTA0LCAyNTYsIDI0MTI1LCAyNTYsIDI0MTY5LCAyNTYsIAorICAgIDE0NDM0LCAyNTYsIDEzOTY1MSwgMjU2LCAxNDQ2MCwgMjU2LCAyNDI0MCwgMjU2LCAyNDI0MywgMjU2LCAyNDI0NiwgMjU2LCAKKyAgICAyNDI2NiwgMjU2LCAxNzI5NDYsIDI1NiwgMjQzMTgsIDI1NiwgMTQwMDgxLCAyNTYsIDE0MDA4MSwgMjU2LCAzMzI4MSwgCisgICAgMjU2LCAyNDM1NCwgMjU2LCAyNDM1NCwgMjU2LCAxNDUzNSwgMjU2LCAxNDQwNTYsIDI1NiwgMTU2MTIyLCAyNTYsIDI0NDE4LCAKKyAgICAyNTYsIDI0NDI3LCAyNTYsIDE0NTYzLCAyNTYsIDI0NDc0LCAyNTYsIDI0NTI1LCAyNTYsIDI0NTM1LCAyNTYsIDI0NTY5LCAKKyAgICAyNTYsIDI0NzA1LCAyNTYsIDE0NjUwLCAyNTYsIDE0NjIwLCAyNTYsIDI0NzI0LCAyNTYsIDE0MTAxMiwgMjU2LCAyNDc3NSwgCisgICAgMjU2LCAyNDkwNCwgMjU2LCAyNDkwOCwgMjU2LCAyNDkxMCwgMjU2LCAyNDkwOCwgMjU2LCAyNDk1NCwgMjU2LCAyNDk3NCwgCisgICAgMjU2LCAyNTAxMCwgMjU2LCAyNDk5NiwgMjU2LCAyNTAwNywgMjU2LCAyNTA1NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTA3OCwgCisgICAgMjU2LCAyNTEwNCwgMjU2LCAyNTExNSwgMjU2LCAyNTE4MSwgMjU2LCAyNTI2NSwgMjU2LCAyNTMwMCwgMjU2LCAyNTQyNCwgCisgICAgMjU2LCAxNDIwOTIsIDI1NiwgMjU0MDUsIDI1NiwgMjUzNDAsIDI1NiwgMjU0NDgsIDI1NiwgMjU0NzUsIDI1NiwgMjU1NzIsIAorICAgIDI1NiwgMTQyMzIxLCAyNTYsIDI1NjM0LCAyNTYsIDI1NTQxLCAyNTYsIDI1NTEzLCAyNTYsIDE0ODk0LCAyNTYsIDI1NzA1LCAKKyAgICAyNTYsIDI1NzI2LCAyNTYsIDI1NzU3LCAyNTYsIDI1NzE5LCAyNTYsIDE0OTU2LCAyNTYsIDI1OTM1LCAyNTYsIDI1OTY0LCAKKyAgICAyNTYsIDE0MzM3MCwgMjU2LCAyNjA4MywgMjU2LCAyNjM2MCwgMjU2LCAyNjE4NSwgMjU2LCAxNTEyOSwgMjU2LCAyNjI1NywgCisgICAgMjU2LCAxNTExMiwgMjU2LCAxNTA3NiwgMjU2LCAyMDg4MiwgMjU2LCAyMDg4NSwgMjU2LCAyNjM2OCwgMjU2LCAyNjI2OCwgCisgICAgMjU2LCAzMjk0MSwgMjU2LCAxNzM2OSwgMjU2LCAyNjM5MSwgMjU2LCAyNjM5NSwgMjU2LCAyNjQwMSwgMjU2LCAyNjQ2MiwgCisgICAgMjU2LCAyNjQ1MSwgMjU2LCAxNDQzMjMsIDI1NiwgMTUxNzcsIDI1NiwgMjY2MTgsIDI1NiwgMjY1MDEsIDI1NiwgMjY3MDYsIAorICAgIDI1NiwgMjY3NTcsIDI1NiwgMTQ0NDkzLCAyNTYsIDI2NzY2LCAyNTYsIDI2NjU1LCAyNTYsIDI2OTAwLCAyNTYsIDE1MjYxLCAKKyAgICAyNTYsIDI2OTQ2LCAyNTYsIDI3MDQzLCAyNTYsIDI3MTE0LCAyNTYsIDI3MzA0LCAyNTYsIDE0NTA1OSwgMjU2LCAyNzM1NSwgCisgICAgMjU2LCAxNTM4NCwgMjU2LCAyNzQyNSwgMjU2LCAxNDU1NzUsIDI1NiwgMjc0NzYsIDI1NiwgMTU0MzgsIDI1NiwgMjc1MDYsIAorICAgIDI1NiwgMjc1NTEsIDI1NiwgMjc1NzgsIDI1NiwgMjc1NzksIDI1NiwgMTQ2MDYxLCAyNTYsIDEzODUwNywgMjU2LCAKKyAgICAxNDYxNzAsIDI1NiwgMjc3MjYsIDI1NiwgMTQ2NjIwLCAyNTYsIDI3ODM5LCAyNTYsIDI3ODUzLCAyNTYsIDI3NzUxLCAyNTYsIAorICAgIDI3OTI2LCAyNTYsIDI3OTY2LCAyNTYsIDI4MDIzLCAyNTYsIDI3OTY5LCAyNTYsIDI4MDA5LCAyNTYsIDI4MDI0LCAyNTYsIAorICAgIDI4MDM3LCAyNTYsIDE0NjcxOCwgMjU2LCAyNzk1NiwgMjU2LCAyODIwNywgMjU2LCAyODI3MCwgMjU2LCAxNTY2NywgMjU2LCAKKyAgICAyODM2MywgMjU2LCAyODM1OSwgMjU2LCAxNDcxNTMsIDI1NiwgMjgxNTMsIDI1NiwgMjg1MjYsIDI1NiwgMTQ3Mjk0LCAyNTYsIAorICAgIDE0NzM0MiwgMjU2LCAyODYxNCwgMjU2LCAyODcyOSwgMjU2LCAyODcwMiwgMjU2LCAyODY5OSwgMjU2LCAxNTc2NiwgMjU2LCAKKyAgICAyODc0NiwgMjU2LCAyODc5NywgMjU2LCAyODc5MSwgMjU2LCAyODg0NSwgMjU2LCAxMzIzODksIDI1NiwgMjg5OTcsIDI1NiwgCisgICAgMTQ4MDY3LCAyNTYsIDI5MDg0LCAyNTYsIDE0ODM5NSwgMjU2LCAyOTIyNCwgMjU2LCAyOTIzNywgMjU2LCAyOTI2NCwgMjU2LCAKKyAgICAxNDkwMDAsIDI1NiwgMjkzMTIsIDI1NiwgMjkzMzMsIDI1NiwgMTQ5MzAxLCAyNTYsIDE0OTUyNCwgMjU2LCAyOTU2MiwgCisgICAgMjU2LCAyOTU3OSwgMjU2LCAxNjA0NCwgMjU2LCAyOTYwNSwgMjU2LCAxNjA1NiwgMjU2LCAxNjA1NiwgMjU2LCAyOTc2NywgCisgICAgMjU2LCAyOTc4OCwgMjU2LCAyOTgwOSwgMjU2LCAyOTgyOSwgMjU2LCAyOTg5OCwgMjU2LCAxNjE1NSwgMjU2LCAyOTk4OCwgCisgICAgMjU2LCAxNTA1ODIsIDI1NiwgMzAwMTQsIDI1NiwgMTUwNjc0LCAyNTYsIDMwMDY0LCAyNTYsIDEzOTY3OSwgMjU2LCAKKyAgICAzMDIyNCwgMjU2LCAxNTE0NTcsIDI1NiwgMTUxNDgwLCAyNTYsIDE1MTYyMCwgMjU2LCAxNjM4MCwgMjU2LCAxNjM5MiwgCisgICAgMjU2LCAzMDQ1MiwgMjU2LCAxNTE3OTUsIDI1NiwgMTUxNzk0LCAyNTYsIDE1MTgzMywgMjU2LCAxNTE4NTksIDI1NiwgCisgICAgMzA0OTQsIDI1NiwgMzA0OTUsIDI1NiwgMzA0OTUsIDI1NiwgMzA1MzgsIDI1NiwgMTY0NDEsIDI1NiwgMzA2MDMsIDI1NiwgCisgICAgMTY0NTQsIDI1NiwgMTY1MzQsIDI1NiwgMTUyNjA1LCAyNTYsIDMwNzk4LCAyNTYsIDMwODYwLCAyNTYsIDMwOTI0LCAyNTYsIAorICAgIDE2NjExLCAyNTYsIDE1MzEyNiwgMjU2LCAzMTA2MiwgMjU2LCAxNTMyNDIsIDI1NiwgMTUzMjg1LCAyNTYsIDMxMTE5LCAKKyAgICAyNTYsIDMxMjExLCAyNTYsIDE2Njg3LCAyNTYsIDMxMjk2LCAyNTYsIDMxMzA2LCAyNTYsIDMxMzExLCAyNTYsIDE1Mzk4MCwgCisgICAgMjU2LCAxNTQyNzksIDI1NiwgMTU0Mjc5LCAyNTYsIDMxNDcwLCAyNTYsIDE2ODk4LCAyNTYsIDE1NDUzOSwgMjU2LCAKKyAgICAzMTY4NiwgMjU2LCAzMTY4OSwgMjU2LCAxNjkzNSwgMjU2LCAxNTQ3NTIsIDI1NiwgMzE5NTQsIDI1NiwgMTcwNTYsIDI1NiwgCisgICAgMzE5NzYsIDI1NiwgMzE5NzEsIDI1NiwgMzIwMDAsIDI1NiwgMTU1NTI2LCAyNTYsIDMyMDk5LCAyNTYsIDE3MTUzLCAyNTYsIAorICAgIDMyMTk5LCAyNTYsIDMyMjU4LCAyNTYsIDMyMzI1LCAyNTYsIDE3MjA0LCAyNTYsIDE1NjIwMCwgMjU2LCAxNTYyMzEsIDI1NiwgCisgICAgMTcyNDEsIDI1NiwgMTU2Mzc3LCAyNTYsIDMyNjM0LCAyNTYsIDE1NjQ3OCwgMjU2LCAzMjY2MSwgMjU2LCAzMjc2MiwgMjU2LCAKKyAgICAzMjc3MywgMjU2LCAxNTY4OTAsIDI1NiwgMTU2OTYzLCAyNTYsIDMyODY0LCAyNTYsIDE1NzA5NiwgMjU2LCAzMjg4MCwgCisgICAgMjU2LCAxNDQyMjMsIDI1NiwgMTczNjUsIDI1NiwgMzI5NDYsIDI1NiwgMzMwMjcsIDI1NiwgMTc0MTksIDI1NiwgMzMwODYsIAorICAgIDI1NiwgMjMyMjEsIDI1NiwgMTU3NjA3LCAyNTYsIDE1NzYyMSwgMjU2LCAxNDQyNzUsIDI1NiwgMTQ0Mjg0LCAyNTYsIAorICAgIDMzMjgxLCAyNTYsIDMzMjg0LCAyNTYsIDM2NzY2LCAyNTYsIDE3NTE1LCAyNTYsIDMzNDI1LCAyNTYsIDMzNDE5LCAyNTYsIAorICAgIDMzNDM3LCAyNTYsIDIxMTcxLCAyNTYsIDMzNDU3LCAyNTYsIDMzNDU5LCAyNTYsIDMzNDY5LCAyNTYsIDMzNTEwLCAyNTYsIAorICAgIDE1ODUyNCwgMjU2LCAzMzUwOSwgMjU2LCAzMzU2NSwgMjU2LCAzMzYzNSwgMjU2LCAzMzcwOSwgMjU2LCAzMzU3MSwgMjU2LCAKKyAgICAzMzcyNSwgMjU2LCAzMzc2NywgMjU2LCAzMzg3OSwgMjU2LCAzMzYxOSwgMjU2LCAzMzczOCwgMjU2LCAzMzc0MCwgMjU2LCAKKyAgICAzMzc1NiwgMjU2LCAxNTg3NzQsIDI1NiwgMTU5MDgzLCAyNTYsIDE1ODkzMywgMjU2LCAxNzcwNywgMjU2LCAzNDAzMywgCisgICAgMjU2LCAzNDAzNSwgMjU2LCAzNDA3MCwgMjU2LCAxNjA3MTQsIDI1NiwgMzQxNDgsIDI1NiwgMTU5NTMyLCAyNTYsIDE3NzU3LCAKKyAgICAyNTYsIDE3NzYxLCAyNTYsIDE1OTY2NSwgMjU2LCAxNTk5NTQsIDI1NiwgMTc3NzEsIDI1NiwgMzQzODQsIDI1NiwgMzQzOTYsIAorICAgIDI1NiwgMzQ0MDcsIDI1NiwgMzQ0MDksIDI1NiwgMzQ0NzMsIDI1NiwgMzQ0NDAsIDI1NiwgMzQ1NzQsIDI1NiwgMzQ1MzAsIAorICAgIDI1NiwgMzQ2ODEsIDI1NiwgMzQ2MDAsIDI1NiwgMzQ2NjcsIDI1NiwgMzQ2OTQsIDI1NiwgMTc4NzksIDI1NiwgMzQ3ODUsIAorICAgIDI1NiwgMzQ4MTcsIDI1NiwgMTc5MTMsIDI1NiwgMzQ5MTIsIDI1NiwgMzQ5MTUsIDI1NiwgMTYxMzgzLCAyNTYsIDM1MDMxLCAKKyAgICAyNTYsIDM1MDM4LCAyNTYsIDE3OTczLCAyNTYsIDM1MDY2LCAyNTYsIDEzNDk5LCAyNTYsIDE2MTk2NiwgMjU2LCAxNjIxNTAsIAorICAgIDI1NiwgMTgxMTAsIDI1NiwgMTgxMTksIDI1NiwgMzU0ODgsIDI1NiwgMzU1NjUsIDI1NiwgMzU3MjIsIDI1NiwgMzU5MjUsIAorICAgIDI1NiwgMTYyOTg0LCAyNTYsIDM2MDExLCAyNTYsIDM2MDMzLCAyNTYsIDM2MTIzLCAyNTYsIDM2MjE1LCAyNTYsIDE2MzYzMSwgCisgICAgMjU2LCAxMzMxMjQsIDI1NiwgMzYyOTksIDI1NiwgMzYyODQsIDI1NiwgMzYzMzYsIDI1NiwgMTMzMzQyLCAyNTYsIDM2NTY0LCAKKyAgICAyNTYsIDM2NjY0LCAyNTYsIDE2NTMzMCwgMjU2LCAxNjUzNTcsIDI1NiwgMzcwMTIsIDI1NiwgMzcxMDUsIDI1NiwgMzcxMzcsIAorICAgIDI1NiwgMTY1Njc4LCAyNTYsIDM3MTQ3LCAyNTYsIDM3NDMyLCAyNTYsIDM3NTkxLCAyNTYsIDM3NTkyLCAyNTYsIDM3NTAwLCAKKyAgICAyNTYsIDM3ODgxLCAyNTYsIDM3OTA5LCAyNTYsIDE2NjkwNiwgMjU2LCAzODI4MywgMjU2LCAxODgzNywgMjU2LCAzODMyNywgCisgICAgMjU2LCAxNjcyODcsIDI1NiwgMTg5MTgsIDI1NiwgMzg1OTUsIDI1NiwgMjM5ODYsIDI1NiwgMzg2OTEsIDI1NiwgMTY4MjYxLCAKKyAgICAyNTYsIDE2ODQ3NCwgMjU2LCAxOTA1NCwgMjU2LCAxOTA2MiwgMjU2LCAzODg4MCwgMjU2LCAxNjg5NzAsIDI1NiwgMTkxMjIsIAorICAgIDI1NiwgMTY5MTEwLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTUzLCAyNTYsIDE2OTM5OCwgMjU2LCAzOTEzOCwgCisgICAgMjU2LCAxOTI1MSwgMjU2LCAzOTIwOSwgMjU2LCAzOTMzNSwgMjU2LCAzOTM2MiwgMjU2LCAzOTQyMiwgMjU2LCAxOTQwNiwgCisgICAgMjU2LCAxNzA4MDAsIDI1NiwgMzk2OTgsIDI1NiwgNDAwMDAsIDI1NiwgNDAxODksIDI1NiwgMTk2NjIsIDI1NiwgMTk2OTMsIAorICAgIDI1NiwgNDAyOTUsIDI1NiwgMTcyMjM4LCAyNTYsIDE5NzA0LCAyNTYsIDE3MjI5MywgMjU2LCAxNzI1NTgsIDI1NiwgCisgICAgMTcyNjg5LCAyNTYsIDQwNjM1LCAyNTYsIDE5Nzk4LCAyNTYsIDQwNjk3LCAyNTYsIDQwNzAyLCAyNTYsIDQwNzA5LCAyNTYsIAorICAgIDQwNzE5LCAyNTYsIDQwNzI2LCAyNTYsIDQwNzYzLCAyNTYsIDE3MzU2OCwgCiB9OwogCiAvKiBpbmRleCB0YWJsZXMgZm9yIHRoZSBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTUxODcsMTEgKzUyODAsMTEgQEAKICAgICAxMzA0NCwgMTMwNDYsIDEzMDQ4LCAxMzA1MCwgMTMwNTIsIDEzMDU0LCAxMzA1NiwgMTMwNTgsIDEzMDYwLCAxMzA2MiwgCiAgICAgMTMwNjQsIDEzMDY2LCAxMzA2OCwgMTMwNzAsIDEzMDcyLCAxMzA3NCwgMTMwNzYsIDEzMDc4LCAxMzA4MCwgMTMwODIsIAogICAgIDEzMDg0LCAxMzA4NiwgMTMwODgsIDEzMDkwLCAxMzA5MiwgMTMwOTQsIDEzMDk2LCAxMzA5OCwgMTMxMDAsIDEzMTAyLCAKLSAgICAxMzEwNCwgMTMxMDYsIDEzMTA4LCAxMzExMCwgMTMxMTIsIDEzMTE0LCAxMzExNiwgMTMxMTgsIDEzMTIwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzEyMiwgMTMxMjYsIDEzMTMwLCAxMzEzNCwgMTMxMzgsIDEzMTQyLCAxMzE0NiwgMTMxNTAsIDEzMTU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzE1OCwgMTMxNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMTA0LCAxMzEwNiwgMTMxMDgsIDEzMTEwLCAxMzExMiwgMTMxMTQsIDEzMTE2LCAxMzExOCwgMTMxMjAsIDEzMTIyLCAwLCAKKyAgICAwLCAwLCAwLCAxMzEyNCwgMTMxMjgsIDEzMTMyLCAxMzEzNiwgMTMxNDAsIDEzMTQ0LCAxMzE0OCwgMTMxNTIsIDEzMTU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2MCwgMTMxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTYyLCAxMzE2NCwgMTMxNjYsIDEzMTY4LCAxMzE3MCwgMTMxNzIsIDEzMTc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzE2NCwgMTMxNjYsIDEzMTY4LCAxMzE3MCwgMTMxNzIsIDEzMTc0LCAKICAgICAxMzE3NiwgMTMxNzgsIDEzMTgwLCAxMzE4MiwgMTMxODQsIDEzMTg2LCAxMzE4OCwgMTMxOTAsIDEzMTkyLCAxMzE5NCwgCiAgICAgMTMxOTYsIDEzMTk4LCAxMzIwMCwgMTMyMDIsIDEzMjA0LCAxMzIwNiwgMTMyMDgsIDEzMjEwLCAxMzIxMiwgMTMyMTQsIAogICAgIDEzMjE2LCAxMzIxOCwgMTMyMjAsIDEzMjIyLCAxMzIyNCwgMTMyMjYsIDEzMjI4LCAxMzIzMCwgMTMyMzIsIDEzMjM0LCAKQEAgLTUyNDUsMTEgKzUzMzgsMTEgQEAKICAgICAxNDE3NiwgMTQxNzgsIDE0MTgwLCAxNDE4MiwgMTQxODQsIDE0MTg2LCAxNDE4OCwgMTQxOTAsIDE0MTkyLCAxNDE5NCwgCiAgICAgMTQxOTYsIDE0MTk4LCAxNDIwMCwgMTQyMDIsIDE0MjA0LCAxNDIwNiwgMTQyMDgsIDE0MjEwLCAxNDIxMiwgMTQyMTQsIAogICAgIDE0MjE2LCAxNDIxOCwgMTQyMjAsIDE0MjIyLCAxNDIyNCwgMTQyMjYsIDE0MjI4LCAxNDIzMCwgMTQyMzIsIDE0MjM0LCAKLSAgICAxNDIzNiwgMTQyMzgsIDE0MjQwLCAxNDI0MiwgMTQyNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0MjM2LCAxNDIzOCwgMTQyNDAsIDE0MjQyLCAxNDI0NCwgMTQyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogTkZDIHBhaXJzICovCkBAIC01NjY1LDEzMiArNTc1OCwxMzUgQEAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkIGNoYW5nZV9yZWNvcmRzXzNfMl8wW10gPSB7Ci0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDExLCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMiwgMjU1LCAyNTUsIDAgfSwKLQl7IDE5LCAyMSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyLCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAzLCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAxLCAyNTUsIDAgfSwKLQl7IDI1NSwgMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjksIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI2LCAyNTUsIDI1NSwgMCB9LAotCXsgNSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTQsIDYsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMi4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDMuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCA0LjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgLTEgfSwKLQl7IDE0LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAwLCAwIH0sCi0JeyAyNTUsIDcsIDEsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCAyLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgMywgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDQsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA1LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNiwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDcsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA4LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgOSwgMjU1LCAwIH0sCi0JeyAyNTUsIDE5LCAyNTUsIDI1NSwgMCB9LAotCXsgMSwgNSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMTAsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOCwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTksIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA0LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA2LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA3LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA4LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCA5LCAyNTUsIDAgfSwKLQl7IDE5LCAzMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgOCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjcsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIyLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyMywgMjU1LCAyNTUsIDAgfSwKLQl7IDksIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDE0LCA0LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMTYgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMjAgfSwKLQl7IDI1NSwgMTksIDI1NSwgMjU1LCAtMSB9LAotCXsgMSwgMjU1LCAyNTUsIDAsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxMSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDMwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE5LCAyMSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDIsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAxLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI2LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyA1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE0LCA2LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMS4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMi4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMy4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgNC4wIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgLTEgfSwKKwl7IDE0LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCAxLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCAyLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCAzLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA0LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA2LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA3LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA4LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCA3LCA5LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMSwgNSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMSwgMTksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMTAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE4LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE5LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDQsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA2LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDcsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgOCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA5LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDMwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDgsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjcsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgNSwgMCB9LAorCXsgMjU1LCAyMiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyMywgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgOSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxNCwgNCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDFlKzE2IH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMjAgfSwKKwl7IDI1NSwgMTksIDI1NSwgMjU1LCAyNTUsIC0xIH0sCisJeyAxLCAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCiB9Owogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9pbmRleFtdID0gewogICAgIDAsIDEsIDIsIDIsIDMsIDQsIDUsIDYsIDIsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIAogICAgIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyLCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgCiAgICAgMzYsIDM3LCAyLCAyLCAyLCAzOCwgMzksIDIsIDQwLCAyLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCAKLSAgICA1MCwgNTEsIDIsIDUyLCAyLCAyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDIsIDU4LCA1OSwgNjAsIDYxLCAyLCAyLCA2MiwgNjMsIAotICAgIDY0LCA2NSwgNjYsIDY2LCAyLCAyLCAyLCAyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgMiwgMiwgMiwgNzQsIDc1LCAKLSAgICA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyLCAyLCAyLCAyLCAyLCA4NSwgCisgICAgNTAsIDUxLCAyLCA1MiwgMiwgMiwgNTMsIDU0LCA1NSwgNTYsIDU3LCAyLCA1OCwgNTksIDYwLCA2MSwgMiwgNjIsIDYzLCAKKyAgICA2NCwgNjUsIDY2LCA2NywgNjcsIDIsIDIsIDIsIDIsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCAyLCAyLCAyLCA3NSwgCisgICAgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgMiwgMiwgMiwgMiwgMiwgMiwgODUsIDIsIDIsIDIsIDIsIDIsIAorICAgIDg2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NywgMiwgODgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDg5LCA5MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkyLCAKKyAgICA5MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg2LCAyLCA4NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgODgsIDg5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIAotICAgIDkyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTQsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk4LCA1MCwgNTAsIAotICAgIDk5LCAxMDAsIDUwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NSwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk3LCA5OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTksIDUwLCA1MCwgCisgICAgMTAwLCAxMDEsIDUwLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMTEwLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDExMSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMiwgMiwgMTE3LCAxMTgsIDExOSwgMiwgMTIwLCAKLSAgICAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMiwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMiwgNTAsIDUwLCAxMzIsIAotICAgIDIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMiwgMiwgMTQzLCAyLCAyLCAyLCAKLSAgICAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDIsIDIsIDE1MSwgMiwgMTUyLCAxNTMsIDE1NCwgMTU1LCAyLCAKLSAgICAyLCAxNTYsIDIsIDIsIDIsIDE1NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE1OCwgMTU5LCA1MCwgMTYwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE2MSwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMiwgMiwgMTE4LCAxMTksIDEyMCwgMiwgMTIxLCAKKyAgICAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMiwgNTAsIDUwLCAxMzMsIAorICAgIDIsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMiwgMiwgMTQ0LCAyLCAyLCAyLCAKKyAgICAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDIsIDE1MiwgMTUzLCAyLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDIsIAorICAgIDIsIDE1OCwgMiwgMiwgMiwgMTU5LCAyLCAyLCAxNjAsIDE2MSwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDE2MiwgMTYzLCA1MCwgMTY0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE2NSwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgNTAsIDUwLCA1MCwgNTAsIDE2MiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE2NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY3LCAxNjgsIAorICAgIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCAxNjcsIDE2OCwgMTY5LCAxNzAsIDIsIDIsIDIsIDIsIDIsIDIsIDE3MSwgCisgICAgMTcyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3MywgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICAxNzQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTc2LCAxNzcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3OCwgCisgICAgMTc5LCAxODAsIDIsIDE4MSwgMiwgMiwgMTgyLCAyLCAyLCAyLCAxODMsIDE4NCwgMTg1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDE4NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCA1MCwgMTg4LCAxODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE5MCwgMTkxLCAyLCAyLCAxOTIsIAorICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE5NywgMTk4LCAxOTksIDIwMCwgCisgICAgMjAxLCAyMDIsIDIwMywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA0LCAyMDUsIDk2LCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NSwgMjA2LCAyLCAyMDcsIDIwOCwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA5LCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxMSwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMjEyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3MCwgMTcxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAxNzIsIDE3MywgMTc0LCAyLCAxNzUsIDIsIDIsIDE3NiwgMiwgMiwgMiwgMTc3LCAxNzgsIDE3OSwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAxODAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAxODEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE4MiwgCi0gICAgMTgzLCAyLCAyLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMiwgNTAsIDUwLCA1MCwgNTAsIDE4OSwgMTkwLCA1MCwgMTkxLCAKLSAgICAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxOTgsIAotICAgIDE5OSwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyMDAsIDIsIDIwMSwgCi0gICAgMjAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyMDMsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMjA1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjA3LCA1MCwgMjA4LCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIxMywgNTAsIDIxNCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCiAgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCiAgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMDksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDUwLCA1MCwgMjE1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDMsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC02MDI2LDggKzYxMjIsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAyMTAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDUwLCAyMTYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNjA5MCw3ICs2MTg1LDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfZGF0YVtdID0gewpAQCAtNjE3Niw5ICs2MjcxLDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKQEAgLTYyMTYsNyArNjMxMSw3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTYyMjUsOSArNjMyMCw5IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02MzE0LDcgKzY0MDksNyBAQAogICAgIDMyLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKQEAgLTYzNTYsOCArNjQ1MSw4IEBACiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCkBAIC02MzcyLDI5ICs2NDY3LDI5IEBACiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCA0LCAwLCAwLCAKLSAgICAzNywgMzgsIDM5LCA0MCwgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCA0LCAzNiwgOCwgNiwgNywgMzcsIDM4LCAzOSwgNDAsIAotICAgIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAzNywgNCwgMCwgMCwgCisgICAgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgMSwgMSwgMCwgMCwgMCwgNCwgMzcsIDgsIDYsIDcsIDM4LCAzOSwgNDAsIDQxLCAKKyAgICA0MiwgNDMsIDEsIDEsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTY0MDUsMTM3ICs2NTAwLDgyMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1LCA0NSwgNDUsIDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDYsIDQ2LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgNDcsIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDksIDExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAKKyAgICA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIAorICAgIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUxLCA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ4LCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMSwgMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQsIDE0LCAxNCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCAwLCA5LCA5LCAwLCA5LCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjU0Nyw2ODMgKzczMjYsMzEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAKLSAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMSwgMSwgMjEsIDIxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAwLCAxLCAwLCAyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDE0LCAxNCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCA5LCAKLSAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCA5LCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAotICAgIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIAotICAgIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIAotICAgIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFuZ2VfcmVjb3JkKiBnZXRfY2hhbmdlXzNfMl8wKFB5X1VDUzQgbikKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaCBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAppbmRleCBkMGY5Y2I0Li5hODFkOGUzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKKysrIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCkBAIC00LDI0NiArNCwyNDcgQEAKIAogLyogbGV4aWNvbiAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIgbGV4aWNvbltdID0gewotICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4MywgNzMsIDcxLCAyMDYsIDg3LCA3MywgODQsIDIwMCwgODMsIDg5LCA3NiwgCi0gICAgNzYsIDY1LCA2NiwgNzYsIDE5NywgODMsIDc3LCA2NSwgNzYsIDIwNCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKLSAgICA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDc2LCA2NSwgODQsIDczLCAyMDYsIDY3LCA4NSwgNzgsIAotICAgIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDE5NSwgODksIDIwMSwgNjcsIDc0LCAyMDMsIAorICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4MywgNzMsIDcxLCAyMDYsIDg3LCA3MywgODQsIDIwMCwgODMsIDc3LCA2NSwgCisgICAgNzYsIDIwNCwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzYsIDE5NywgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKKyAgICA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDc2LCA2NSwgODQsIDczLCAyMDYsIDY1LCA4MiwgNjUsIAorICAgIDY2LCA3MywgMTk1LCA2NywgODUsIDc4LCA2OSwgNzMsIDcwLCA3OSwgODIsIDIwNSwgODksIDIwMSwgNjcsIDc0LCAyMDMsIAogICAgIDc3LCA2NSwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCAKICAgICA2NSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNjUsIDg0LCA3MywgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgMjA0LCA2OCwgNzMsIDcxLCA3MywgMjEyLCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgCi0gICAgNjgsIDczLCA2NSwgMjA2LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgODMsIDczLCA3MSwgNzgsIDg3LCAKLSAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODYsIDc5LCA4NywgNjksIDIwNCwgODQsIDczLCA3NywgNjksIDIxMSwgNjYsIAotICAgIDY1LCA3NywgODUsIDIwNSwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgNjUsIDc4LCA2NSwgODQsIDc5LCA3NiwgCi0gICAgNzMsIDY1LCAyMDYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzEsIDgyLCAKLSAgICA2OSwgNjksIDIwMywgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgCi0gICAgMTk3LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCAxOTMsIDcwLCA3OSwgMjEwLCA2NywgODksIDgyLCA3MywgCi0gICAgNzYsIDc2LCA3MywgMTk1LCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNzMsIDc4LCAKLSAgICAxOTksIDgyLCA2NSwgNjgsIDczLCA2NywgNjUsIDIwNCwgODMsIDY1LCA3OCwgODMsIDQ1LCA4MywgNjksIDgyLCA3MywgCi0gICAgMTk4LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA4NCwgNjUsIDc3LCAKLSAgICA3MywgMjA0LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDg2LCAKLSAgICA2NSwgMjAxLCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4MSwgODUsIDY1LCA4MiwgMTk3LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgNjUsIDgyLCA4MiwgNzksIDIxNSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjUsIAotICAgIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAyMDYsIDY2LCAKLSAgICA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA4NywgNzIsIDczLCA4NCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgCi0gICAgMjAzLCA2NSwgMTI4LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKLSAgICA2OSwgMjEwLCAxOTQsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAxOTMsIDg1LCAxMjgsIDc3LCA4OSwgNjUsIDc4LCAKLSAgICA3NywgNjUsIDIxMCwgNjgsIDc5LCAyMTIsIDc1LCA2NSwgNzgsIDcxLCA4OCwgMjAxLCA3NSwgNzMsIDc1LCA2NSwgNzUsIAotICAgIDg1LCAyMDEsIDc3LCA2OSwgNzgsIDY4LCAxOTcsIDczLCAxMjgsIDc5LCAxOTgsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIAotICAgIDIwNiwgNzksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIAotICAgIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA3NywgNjksIDY5LCAyMDUsIDY3LCA3OSwgCi0gICAgODAsIDg0LCA3MywgMTk1LCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCAKLSAgICAyMTEsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODksIDY5LCAyMDAsIDY3LCAKLSAgICA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDgwLCA3NiwgODUsIDIxMSwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIAotICAgIDY1LCA4MiwgMjAxLCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgNzYsIDczLCA2NSwgCi0gICAgMjA2LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCAxMjgsIDY2LCA3OSwgMjE2LCA4NCwgNzMsIDc2LCAxOTcsIDY4LCA4NSwgODAsIAotICAgIDc2LCA3OSwgODksIDY1LCAyMDYsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgCi0gICAgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgODQsIDcyLCA2NSwgMjA1LCAKLSAgICA3OSwgNzgsIDY5LCAxMjgsIDIxMywgNzQsIDc5LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDg0LCA4NywgNzksIAotICAgIDEyOCwgNjcsIDc5LCA3OCwgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA3NywgCi0gICAgNzMsIDY1LCAyMDcsIDg1LCAyMDgsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAKLSAgICAyMDYsIDc5LCA4NiwgNjksIDIxMCwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIDIxMSwgNzIsIDc3LCA3OSwgNzgsIAotICAgIDE5OSwgNzksIDc4LCAxOTcsIDgwLCA2NSwgNzIsIDY1LCA4NywgMjAwLCA4NCwgODcsIDIwNywgNjgsIDc5LCA4NywgMjA2LCAKLSAgICA3MywgNzgsIDY4LCA2OSwgMjE2LCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3NiwgNzksIDIxNSwgODYsIAotICAgIDc5LCA2NywgNjUsIDc2LCA3MywgMTk1LCA4NCwgNzIsIDgyLCA2OSwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgODcsIDczLCA2OCwgCi0gICAgODQsIDIwMCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCAyMTIsIDc3LCA2OSwgODIsIDc5LCA3MywgODQsIDczLCAKLSAgICAxOTUsIDY2LCA2NSwgNzYsIDczLCA3OCwgNjksIDgzLCAxOTcsIDc3LCA2NSwgODIsIDIwMywgODMsIDY3LCA4MiwgNzMsIAotICAgIDgwLCAyMTIsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAyMDUsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NiwgCi0gICAgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjcsIDcyLCA2OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDc2LCA2OSwgMTk4LCAKLSAgICA3MiwgNzMsIDcxLCAyMDAsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDgzLCA3MywgNzgsIAotICAgIDcyLCA2NSwgNzYsIDE5MywgNzgsIDg1LCA3NywgNjksIDgyLCA3MywgMTk1LCA2NiwgNjUsIDgyLCAxMjgsIDg0LCA3OSwgCi0gICAgNzgsIDE5NywgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDcyLCA4NSwgNzgsIDcxLCA2NSwgODIsIDczLCA2NSwgMjA2LCAKLSAgICA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDcyLCA4NSwgNzcsIDE5NCwgNzAsIDc5LCA4NSwgODIsIDEyOCwgNjYsIAotICAgIDY1LCA4MiwgMTk0LCA3MiwgNjUsIDIwMCwgNzIsIDY1LCAxMjgsIDc4LCA3OSwgODIsIDg0LCAyMDAsIDcwLCA4NSwgNzYsIAotICAgIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCA2NSwgCi0gICAgMjA0LCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDcyLCA2NSwgCi0gICAgNzYsIDE5OCwgNzYsIDc5LCA3OCwgMTk5LCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgNjUsIDY3LCAKLSAgICA4NSwgODQsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDc1LCA4NCwgODUsIDIxMCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIAotICAgIDY5LCAyMTAsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NSwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgCi0gICAgODIsIDg1LCA2NywgMjAzLCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgODAsIDY5LCAyMDYsIDcyLCA3MywgODIsIDY1LCAKLSAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIAorICAgIDY2LCA3OSwgMjA0LCA2OCwgNzMsIDcxLCA3MywgMjEyLCA4NCwgNjUsIDc4LCA3MSwgODUsIDIxMiwgNzAsIDc5LCA4MiwgCisgICAgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIDY4LCA3MywgNjUsIDIwNiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAKKyAgICAyMTEsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDc4LCA4NywgODIsIDczLCA4NCwgNzMsIDc4LCAxOTksIAorICAgIDg0LCA3MywgNzcsIDY5LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAyMDUsIDY1LCA3OCwgMTk2LCA2NiwgNzksIDc2LCAxOTYsIAorICAgIDY1LCA3OCwgNjUsIDg0LCA3OSwgNzYsIDczLCA2NSwgMjA2LCA3MiwgNjUsIDc4LCA3MSwgODUsIDIwNCwgNzYsIDczLCA3OCwgCisgICAgNjksIDY1LCAyMTAsIDcxLCA4MiwgNjksIDY5LCAyMDMsIDc3LCA4NSwgODMsIDczLCA2NywgNjUsIDIwNCwgNzYsIDczLCAKKyAgICA3MSwgNjUsIDg0LCA4NSwgODIsIDE5NywgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgMTkzLCA3MCwgNzksIAorICAgIDIxMCwgNjcsIDg5LCA4MiwgNzMsIDc2LCA3NiwgNzMsIDE5NSwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNzMsIDc4LCAKKyAgICAxOTksIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgODIsIDY1LCA2OCwgNzMsIAorICAgIDY3LCA2NSwgMjA0LCA4MywgNjUsIDc4LCA4MywgNDUsIDgzLCA2OSwgODIsIDczLCAxOTgsIDY3LCA3MywgODIsIDY3LCA3NiwgCisgICAgNjksIDE5NiwgODQsIDY1LCA3NywgNzMsIDIwNCwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDY1LCA4MiwgCisgICAgODIsIDc5LCA4NywgMTI4LCA3NiwgNjksIDcwLCAyMTIsIDg2LCA2NSwgMjAxLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4MywgCisgICAgODEsIDg1LCA2NSwgODIsIDE5NywgNjgsIDc5LCA4NSwgNjYsIDc2LCAxOTcsIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY1LCAKKyAgICA4MiwgODIsIDc5LCAyMTUsIDY1LCA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgNjksIDc2LCA3OSwgODcsIDEyOCwgODYsIAorICAgIDY1LCA4MiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY2LCA4MiwgNjUsIDczLCA3NiwgNzYsIDE5NywgODAsIDY1LCA4NCwgCisgICAgODQsIDY5LCA4MiwgMjA2LCA2NiwgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgNjUsIDEyOCwgNjYsIDc2LCAKKyAgICA2NSwgNjcsIDIwMywgODcsIDcyLCA3MywgODQsIDE5NywgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgODUsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDIxMCwgMTk0LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgCisgICAgMTkzLCA3MywgMTI4LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDY4LCA3OSwgMjEyLCA3OSwgMTI4LCA3NSwgNjUsIAorICAgIDc4LCA3MSwgODgsIDIwMSwgNzksIDE5OCwgNzUsIDczLCA3NSwgNjUsIDc1LCA4NSwgMjAxLCA3NywgNjksIDc4LCA2OCwgCisgICAgMTk3LCA4NCwgNzMsIDY2LCA2OSwgODQsIDY1LCAyMDYsIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDc3LCA2NSwgODIsIDc1LCAKKyAgICAxMjgsIDczLCA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDIwNCwgNzcsIAorICAgIDY5LCA2OSwgMjA1LCA2NywgNzksIDgwLCA4NCwgNzMsIDE5NSwgNzUsIDcyLCA3NywgNjksIDIxMCwgODIsIDczLCA3MSwgCisgICAgNzIsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAKKyAgICAyMTAsIDg5LCA2OSwgMjAwLCA2NywgNzIsIDY5LCA4MiwgNzksIDc1LCA2OSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIAorICAgIDc2LCA3MywgNjUsIDIwNiwgODAsIDc2LCA4NSwgMjExLCA2OCwgNjksIDg2LCA2NSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAKKyAgICAyMDEsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA4MywgODQsIAorICAgIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgMjExLCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCAxMjgsIDY2LCA3OSwgMjE2LCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgNzksIDc4LCA2OSwgMTI4LCA4NCwgCisgICAgNzMsIDc2LCAxOTcsIDY4LCA4NSwgODAsIDc2LCA3OSwgODksIDY1LCAyMDYsIDg0LCA4NywgNzksIDEyOCwgODAsIDY1LCAKKyAgICA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA4NCwgNzIsIDY1LCAyMDUsIDIxMywgODYsIAorICAgIDc5LCA2NywgNjUsIDc2LCA3MywgMTk1LCA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNjcsIDc5LCA3OCwgCisgICAgODMsIDc5LCA3OCwgNjUsIDc4LCAyMTIsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY2LCA4MiwgNjksIDIxNSwgNzcsIDczLCAKKyAgICA2NSwgMjA3LCA4NSwgMjA4LCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDcyLCA3OSwgNzksIAorICAgIDc1LCAxMjgsIDcxLCA2OSwgNzksIDgyLCA3MSwgNzMsIDY1LCAyMDYsIDc5LCA4NiwgNjksIDIxMCwgODQsIDg3LCAyMDcsIAorICAgIDY4LCA4MiwgNjUsIDg3LCA3MywgNzgsIDcxLCAyMTEsIDcyLCA3MywgNzEsIDIwMCwgNzIsIDc3LCA3OSwgNzgsIDE5OSwgCisgICAgNzMsIDc4LCA2OCwgNjksIDIxNiwgODAsIDY1LCA3MiwgNjUsIDg3LCAyMDAsIDg0LCA3MiwgODIsIDY5LCAxOTcsIDY4LCAKKyAgICA3OSwgODcsIDIwNiwgNzYsIDc5LCAyMTUsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDcyLCA2NSwgNzYsIAorICAgIDcwLCA4NywgNzMsIDY4LCA4NCwgMjAwLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDIxMiwgNzcsIDY5LCA4MiwgCisgICAgNzksIDczLCA4NCwgNzMsIDE5NSwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzcsIDY1LCA4MiwgMjAzLCAKKyAgICA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIAorICAgIDY5LCA0NSwgMTk2LCA4NCwgNzksIDEyOCwgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgCisgICAgNzYsIDY5LCAxOTgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDc3LCA2NSwgNzYsIDY1LCAKKyAgICA4OSwgNjUsIDc2LCA2NSwgMjA1LCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAxOTMsIDcyLCA2NSwgMTI4LCA3OCwgODUsIAorICAgIDc3LCA2OSwgODIsIDczLCAxOTUsIDgyLCAxMjgsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCAxMjgsIAorICAgIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCA3OSwgNzgsIDE5NywgNjYsIDgyLCA2NSwgNzIsIDc3LCAyMDEsIDcyLCA4NSwgCisgICAgNzgsIDcxLCA2NSwgODIsIDczLCA2NSwgMjA2LCA4NCwgNzIsIDg1LCA3NywgMTk0LCA2NiwgNjUsIDgyLCAxOTQsIDcyLCAKKyAgICA2NSwgMjAwLCA3OCwgNzksIDgyLCA4NCwgMjAwLCA3MCwgODUsIDc2LCA3NiwgODcsIDczLCA2OCwgODQsIDIwMCwgNjYsIAorICAgIDgyLCA2NSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgNjksIDgxLCA4NSwgNjUsIDIwNCwgNzUsIDY1LCAxMjgsIDc2LCA3MywgCisgICAgNzEsIDcyLCAyMTIsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgCisgICAgNzIsIDY1LCA3NiwgMTk4LCA3NiwgNzksIDc4LCAxOTksIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3MCwgODIsIDY1LCAKKyAgICA3NSwgODQsIDg1LCAyMTAsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA4MCwgNjUsIDEyOCwgODAsIAorICAgIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA2NiwgNzIsIDY1LCA3MywgNzUsIDgzLCA4NSwgNzUsIDIwMSwgNjgsIDc5LCA4NSwgCisgICAgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3OSwgODAsIDY5LCAyMDYsIDcyLCA3MywgODIsIDY1LCAKKyAgICA3MSwgNjUsIDc4LCAxOTMsIDc3LCA2NSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjUsIDIwNCwgODQsIDY5LCA3NiwgODUsIAogICAgIDcxLCAyMTMsIDc0LCA4NSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKLSAgICAyMTEsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA2OSwgNzgsIDcxLCA2NSwgNzYsIDIwMSwgNzEsIAotICAgIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDc4LCA2OSwgCi0gICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgMjExLCA3NCwgNjksIDY5LCAKLSAgICAyMDUsIDgwLCA2NSwgMTI4LCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCAyMDUsIDY4LCA3OSwgODQsIDIxMSwgNzMsIDY4LCAKLSAgICA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDY3LCA4NSwgODIsIAotICAgIDgzLCA3MywgODYsIDE5NywgNzcsIDY1LCAxMjgsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDgzLCAxMjgsIDgzLCA3MywgODgsIAotICAgIDEyOCwgODcsIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDg5LCA2NSwgCi0gICAgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjUsIDEyOCwgCi0gICAgOTAsIDkwLCA4OSwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODQsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDkwLCAKLSAgICA5MCwgODksIDgyLCAxMjgsIDkwLCA5MCwgODksIDgwLCAxMjgsIDkwLCA5MCwgODksIDY1LCAxMjgsIDkwLCA5MCwgODksIAotICAgIDEyOCwgOTAsIDkwLCA4NSwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCAxMjgsIAotICAgIDkwLCA5MCwgODUsIDgwLCAxMjgsIDkwLCA5MCwgODUsIDEyOCwgOTAsIDkwLCA4MywgODksIDY1LCAxMjgsIDkwLCA5MCwgCi0gICAgODMsIDY1LCAxMjgsIDkwLCA5MCwgNzksIDg4LCAxMjgsIDkwLCA5MCwgNzksIDgwLCAxMjgsIDkwLCA5MCwgNzksIDEyOCwgCi0gICAgOTAsIDkwLCA3MywgODgsIDEyOCwgOTAsIDkwLCA3MywgODQsIDEyOCwgOTAsIDkwLCA3MywgODAsIDEyOCwgOTAsIDkwLCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4NCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODAsIDEyOCwgOTAsIAotICAgIDkwLCA3MywgNjksIDEyOCwgOTAsIDkwLCA3MywgMTI4LCA5MCwgOTAsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDY5LCA4MCwgCi0gICAgMTI4LCA5MCwgOTAsIDY5LCA2OSwgMTI4LCA5MCwgOTAsIDY5LCAxMjgsIDkwLCA5MCwgNjUsIDg4LCAxMjgsIDkwLCA5MCwgCi0gICAgNjUsIDg0LCAxMjgsIDkwLCA5MCwgNjUsIDgwLCAxMjgsIDkwLCA5MCwgNjUsIDY1LCAxMjgsIDkwLCA5MCwgNjUsIDEyOCwgCi0gICAgOTAsIDg5LCA3MSwgNzksIDgzLCAxMjgsIDkwLCA4NywgODMsIDgwLCAxMjgsIDkwLCA4NywgNzgsIDc0LCAxMjgsIDkwLCAKLSAgICA4NywgNzgsIDY2LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3NCwgMTI4LCA5MCwgODcsIDIwMiwgOTAsIDg3LCA2NSwgODIsIAotICAgIDY1LCA3NSwgNjUsIDg5LCAxMjgsIDkwLCA4NywgNjUsIDEyOCwgOTAsIDg1LCA4NCwgMTI4LCA5MCwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA5MCwgODUsIDc5LCA4MCwgMTI4LCA5MCwgODUsIDc5LCAxMjgsIDkwLCA4NSwgNzcsIDEyOCwgOTAsIDg1LCA2NiwgCi0gICAgODUsIDgyLCAxMjgsIDkwLCA4NSwgNTMsIDEyOCwgOTAsIDg1LCAxODEsIDkwLCAyMTMsIDkwLCA4MywgNzIsIDY1LCAxMjgsIAotICAgIDkwLCA4MiwgNjUsIDEyOCwgOTAsIDgxLCA2NSwgODAsIDcyLCAxOTMsIDkwLCA3OSwgODQsIDEyOCwgOTAsIDc5LCA3OSwgCi0gICAgMTI4LCA5MCwgNzksIDY1LCAxMjgsIDkwLCA3NiwgNjUsIDc3LCAxOTMsIDkwLCA3NiwgNjUsIDEyOCwgOTAsIDc2LCAxOTMsIAotICAgIDkwLCA3NCwgNjksIDEyOCwgOTAsIDczLCA5MCwgNTAsIDEyOCwgOTAsIDczLCA4MSwgNjUsIDY1LCAxMjgsIDkwLCA3MywgCi0gICAgODAsIDgwLCA2OSwgODIsIDQ1LCA3NywgNzksIDg1LCA4NCwgMjAwLCA5MCwgNzMsIDc4LCA3OSwgODIsIDEyOCwgOTAsIDczLCAKLSAgICA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIDkwLCA3MywgNjgsIAotICAgIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCA5MCwgNzIsIDg5LCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODIsIAotICAgIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgMTI4LCA5MCwgNzIsIAotICAgIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgCi0gICAgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIDg1LCAxMjgsIDkwLCAKLSAgICA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIDkwLCA3MiwgNzksIAotICAgIDc5LCAxMjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgCi0gICAgNjksIDEyOCwgOTAsIDcyLCA3MywgNzYsIDEyOCwgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgCi0gICAgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAKLSAgICAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDg4LCAxMjgsIDkwLCAKLSAgICA3MiwgNjUsIDg0LCAxMjgsIDkwLCA3MiwgNjUsIDgyLCAxMjgsIDkwLCA3MiwgNjUsIDgwLCAxMjgsIDkwLCA3MiwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA2NSwgMTI4LCA5MCwgNzIsIDY1LCAxMjgsIDkwLCA3MiwgMTI4LCA5MCwgNjksIAotICAgIDg0LCA2NSwgMTI4LCA5MCwgNjksIDgyLCA3OSwgMTI4LCA5MCwgNjksIDgyLCAyMDcsIDkwLCA2OSwgNzgsIDEyOCwgOTAsIAotICAgIDY5LCA3NywgNzYsIDg5LCA2NSwgMTI4LCA5MCwgNjksIDc3LCA3NiwgNzQsIDY1LCAxMjgsIDkwLCA2OSwgNTAsIDEyOCwgCi0gICAgOTAsIDE5NywgOTAsIDY1LCA4OSwgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCAKLSAgICAyMDYsIDkwLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA5MCwgNjUsIDg0LCA2NSwgMTI4LCA5MCwgNjUsIAotICAgIDgyLCA4MSwgNjUsIDEyOCwgOTAsIDY1LCA4MiwgNzYsIDEyOCwgOTAsIDY1LCA4MSwgNjksIDE5OCwgOTAsIDY1LCA3NywgCi0gICAgODgsIDEyOCwgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgNzMsIDIwNiwgOTAsIDY1LCA3MywgCi0gICAgMTI4LCA5MCwgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIDkwLCA2NSwgNjksIDcwLCAxMjgsIAotICAgIDkwLCA2NSwgNTUsIDEyOCwgOTAsIDE5MywgOTAsIDQ4LCA0OSwgNTQsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MSwgCi0gICAgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAKLSAgICA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY2LCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzAsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjcsIDEyOCwgOTAsIAotICAgIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgNDgsIDQ5LCA1MCwgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCA1NywgMTI4LCA5MCwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgOTAsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUyLCAxMjgsIDkwLCA0OCwgCi0gICAgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIAotICAgIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIDkwLCA0OCwgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIAotICAgIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCA4OSwgODIsIDg4LCAxMjgsIDg5LCA4OSwgODIsIAotICAgIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCA4OSwgNjUsIDY1LCAxMjgsIDg5LCA4OSwgNjUsIAotICAgIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIDEyOCwgODksIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIDY1LCAxMjgsIDg5LCA4NywgNjUsIAotICAgIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIDgxLCAxMjgsIDg5LCA4NSwgODUsIAotICAgIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgODUsIDEyOCwgODksIDg1LCA4NCwgCi0gICAgMTI4LCA4OSwgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCA4OSwgODUsIDgyLCA4OCwgMTI4LCA4OSwgODUsIDgyLCAxMjgsIAotICAgIDg5LCA4NSwgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCA4NSwgODAsIDEyOCwgODksIDg1LCA3OSwgODgsIDEyOCwgODksIAotICAgIDg1LCA3OSwgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIDEyOCwgODksIDg1LCA3OSwgNzcsIDEyOCwgODksIDg1LCA3OSwgCi0gICAgMTI4LCA4OSwgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIDEyOCwgODksIDg1LCA3NCwgMTI4LCA4OSwgODUsIDY5LCA4MSwgCi0gICAgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgNjgsIDIwMCwgODksIDg1LCA2NSwgCi0gICAgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDg1LCAKLSAgICA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIDc5LCAxMjgsIDg5LCA4NSwgNDUsIAotICAgIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgCi0gICAgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIDg5LCA4MiwgODksIDEyOCwgODksIAotICAgIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgCi0gICAgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIDc5LCAKLSAgICA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgODgsIAotICAgIDEyOCwgODksIDc5LCA4NywgNjgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIDg5LCA3OSwgODIsIDczLCAKLSAgICAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIDc5LCA3OSwgMTI4LCA4OSwgCi0gICAgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgMTI4LCA4OSwgNzksIDY4LCAKLSAgICAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgNzksIDEyOCwgODksIDc5LCAKLSAgICA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgNzksIDEyOCwgODksIAotICAgIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgCi0gICAgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIDg0LCAxMjgsIDg5LCA3MywgCi0gICAgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIDgwLCAxMjgsIDg5LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIDg4LCAxMjgsIDg5LCA3MywgCi0gICAgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIDg5LCA3MywgNjksIDEyOCwgCi0gICAgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgNzMsIDEyOCwgODksIDcwLCAKLSAgICA2OSwgODMsIDczLCA4MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCA2OSwgMjA2LCA4OSwgNjksIAotICAgIDg5LCAxMjgsIDg5LCA2OSwgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCA4NSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA4OSwgNjksIDg1LCA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDg0LCAKLSAgICAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgODksIDY5LCA4MywgODQsIAotICAgIDg1LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgCi0gICAgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIAotICAgIDg5LCA2OSwgODIsIDg1LCAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIDEyOCwgODksIDY5LCA4MiwgCi0gICAgNjUsIDIwMCwgODksIDY5LCA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIAotICAgIDEyOCwgODksIDY5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIDEyOCwgODksIDY5LCA3OSwgCi0gICAgNDUsIDc5LCAxMjgsIDg5LCA2OSwgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgNjUsIDgwLCAxMjgsIDg5LCAKLSAgICA2OSwgNzgsIDEyOCwgODksIDY5LCAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgODksIDY5LCA3NiwgNzYsIAotICAgIDc5LCAyMTUsIDg5LCA2OSwgNzMsIDc4LCAxMjgsIDg5LCA2OSwgNzIsIDEyOCwgODksIDY5LCA2OSwgNzEsIDEyOCwgODksIAotICAgIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIDEyOCwgODksIAotICAgIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2OCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIDc4LCAxMjgsIDg5LCA2NSwgODcsIDEyOCwgCi0gICAgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg1LCAxMjgsIDg5LCA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAKLSAgICAxMjgsIDg5LCA2NSwgODQsIDcyLCAxMjgsIDg5LCA2NSwgODQsIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCAKLSAgICA4MywgNzIsIDEyOCwgODksIDY1LCA4MywgMTI4LCA4OSwgNjUsIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCAKLSAgICA2NSwgMjEwLCA4OSwgNjUsIDgxLCAxMjgsIDg5LCA2NSwgODAsIDEyOCwgODksIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIAotICAgIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCA3OCwgMTk5LCA4OSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIAotICAgIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIDc1LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgCi0gICAgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAKLSAgICA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgODksIDY1LCA3NCwgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgCi0gICAgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzMsIDEyOCwgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MiwgCi0gICAgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzIsIDEyOCwgCi0gICAgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIDg5LCA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgNzcsIDc3LCAKLSAgICA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIAotICAgIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCA2NywgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIDEyOCwgODksIAotICAgIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIDEyOCwgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIDY1LCA2NSwgCi0gICAgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCAKLSAgICA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgNDgsIDQ4LCA1NSwgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCA1MiwgMTI4LCA4OSwgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIAotICAgIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODksIDQ4LCA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgCi0gICAgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIDg5LCA4NSwgMTI4LCA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIDg5LCA4MCwgMTI4LCA4OCwgODksIDc5LCA3OSwgNzQsIDEyOCwgCi0gICAgODgsIDg5LCA3OSwgNzksIDEyOCwgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAKLSAgICAyMDUsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCA4OSwgNjksIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCAKLSAgICA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCA3MywgMTI4LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAKLSAgICAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCA4NywgNjUsIDEyOCwgODgsIDg3LCAxMjgsIDg4LCA4NiwgNjksIDEyOCwgCi0gICAgODgsIDg2LCA2NSwgMTI4LCA4OCwgODUsIDc5LCA4OCwgMTI4LCA4OCwgODUsIDc5LCAxMjgsIDg4LCA4NSwgMTI4LCA4OCwgCi0gICAgODMsIDcyLCA2NSwgNjUsIDg5LCA2NSwgODQsIDcyLCA3MywgODksIDY1LCAxMjgsIDg4LCA3OSwgODgsIDEyOCwgODgsIDc5LCAKLSAgICA4NCwgMTI4LCA4OCwgNzksIDgyLCAxMjgsIDg4LCA3OSwgODAsIDcyLCAxMjgsIDg4LCA3OSwgODAsIDEyOCwgODgsIDc5LCAKLSAgICA2NSwgMTI4LCA4OCwgNzksIDEyOCwgODgsIDczLCA4OCwgMTI4LCA4OCwgNzMsIDg0LCAxMjgsIDg4LCA3MywgODIsIDc5LCAKLSAgICAyMDYsIDg4LCA3MywgODAsIDEyOCwgODgsIDczLCA2OSwgODgsIDEyOCwgODgsIDczLCA2OSwgODQsIDEyOCwgODgsIDczLCAKLSAgICA2OSwgODAsIDEyOCwgODgsIDczLCA2OSwgMTI4LCA4OCwgNzMsIDY1LCA2NiwgMTI4LCA4OCwgNzMsIDEyOCwgODgsIDcxLCAKLSAgICAxMjgsIDg4LCA2OSwgODksIDc4LCAxMjgsIDg4LCA2OSwgODMsIDg0LCA2OSwgMjExLCA4OCwgNjksIDcyLCAxMjgsIDg4LCAKLSAgICA2OSwgNjksIDEyOCwgODgsIDY5LCAxMjgsIDg4LCA2NSwgODUsIDgzLCAxMjgsIDg4LCA2NSwgODUsIDEyOCwgODgsIDY1LCAKLSAgICA4MCwgNzIsIDEyOCwgODgsIDY1LCA3OCwgMTI4LCA4OCwgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCAKLSAgICA1NiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDEyOCwgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIAotICAgIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAxMjgsIDg4LCA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgCi0gICAgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgODgsIDQ4LCA0OCwgNTAsIDEyOCwgODgsIDQ4LCA0OCwgNDksIDEyOCwgODgsIDQ1LCAyMTYsIDg3LCA5MCwgMTI4LCA4NywgCi0gICAgODksIDc4LCA3OCwgMTI4LCA4NywgODksIDc4LCAyMDYsIDg3LCA4NiwgNzMsIDEyOCwgODcsIDg2LCA2OSwgMTI4LCA4NywgCi0gICAgODYsIDY1LCAxMjgsIDg3LCA4NiwgMTI4LCA4NywgODUsIDgwLCAxMjgsIDg3LCA4NSwgNzksIDg4LCAxMjgsIDg3LCA4NSwgCi0gICAgNzksIDgwLCAxMjgsIDg3LCA4NSwgNzksIDEyOCwgODcsIDg1LCA3OCwgNzQsIDIwNywgODcsIDg1LCA3OCwgMTI4LCA4NywgCi0gICAgODUsIDc2LCA4NSwgMTI4LCA4NywgODUsIDc2LCAyMTMsIDg3LCA4NSwgNzMsIDEyOCwgODcsIDg1LCA2OSwgMTI4LCA4NywgCi0gICAgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgCi0gICAgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCA4MiwgNzMsIDgzLCAyMTIsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAKLSAgICA4MywgMTI4LCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgMjExLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgNjgsIAotICAgIDEyOCwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIDgyLCA2NSwgCi0gICAgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgODcsIDEyOCwgCi0gICAgODcsIDc5LCA4MiwgODMsIDcyLCA3MywgODAsIDEyOCwgODcsIDc5LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NywgNzksIDgyLCAKLSAgICA3NiwgMTk2LCA4NywgNzksIDgyLCA3NSwgNjksIDgyLCAxMjgsIDg3LCA3OSwgODIsIDc1LCAxMjgsIDg3LCA3OSwgODIsIAotICAgIDIwMywgODcsIDc5LCA4MiwgNjgsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA4NywgNzksIDgyLCAxOTYsIDg3LCA3OSwgCi0gICAgODAsIDEyOCwgODcsIDc5LCA3OSwgNzgsIDEyOCwgODcsIDc5LCA3OSwgNzYsIDEyOCwgODcsIDc5LCA3OSwgNjgsIDgzLCAKLSAgICA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4NywgNzksIDc5LCA2OCwgMTI4LCA4NywgNzksIDc4LCAxMjgsIDg3LCA3OSwgMjA2LCAKLSAgICA4NywgNzksIDc3LCA2OSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjksIDIwNiwgODcsIDc5LCA3NywgNjUsIDc4LCAyMTEsIAotICAgIDg3LCA3OSwgNzcsIDY1LCA3OCwgMTI4LCA4NywgNzksIDc3LCA2NSwgMjA2LCA4NywgNzksIDc2LCA3OSwgODMsIDc5LCAKLSAgICAxMjgsIDg3LCA3OSwgNzYsIDE5OCwgODcsIDc5LCA2OSwgMTI4LCA4NywgNzksIDY1LCAxMjgsIDg3LCA3MywgODQsIDcyLCAKLSAgICA3OSwgODUsIDIxMiwgODcsIDczLCA4NCwgNzIsIDczLCA3OCwgMTI4LCA4NywgNzMsIDg0LCA3MiwgNzMsIDIwNiwgODcsIAotICAgIDczLCA4MiwgNjksIDE5NiwgODcsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAKLSAgICAxOTksIDg3LCA3MywgNzgsIDc1LCAxMjgsIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgNzMsIDc4LCA3MSwgODMsIAotICAgIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCA2OCwgODUsIDEyOCwgODcsIAotICAgIDczLCA3OCwgNjgsIDc5LCA4NywgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgCi0gICAgNzgsIDEyOCwgODcsIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCAKLSAgICA3MywgNzEsIDcxLCA3NiwgNjksIDgzLCAxMjgsIDg3LCA3MywgNjgsIDg0LCA3MiwgMTI4LCA4NywgNzMsIDY4LCA2OSwgNzgsIAotICAgIDczLCA3OCwgMTk5LCA4NywgNzMsIDY4LCA2OSwgNDUsIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAKLSAgICAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIAotICAgIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKLSAgICA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIAotICAgIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgCi0gICAgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MiwgMTI4LCA4NywgCi0gICAgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCA4OCwgMTI4LCA4NywgNjksIDgzLCA4NCwgNjksIDgyLCAKLSAgICAyMDYsIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAKLSAgICAxMjgsIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCAKLSAgICA2OSwgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAyMTEsIDg3LCA2OSwgNzMsIDEyOCwgODcsIDY5LCA2OSwgNzgsIAorICAgIDIxMSwgODksIDY1LCAxMjgsIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA2OSwgNzgsIDcxLCA2NSwgCisgICAgNzYsIDIwMSwgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA4MywgNzMsIDg4LCAxMjgsIDc4LCA2NSwgMTI4LCA3OCwgCisgICAgNjksIDcxLCA2NSwgODQsIDczLCA4NiwgMTk3LCA2OCwgNzksIDg0LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCAKKyAgICA2OCwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzQsIDY5LCA2OSwgMjA1LCA3NiwgNjUsIDEyOCwgNzgsIDY5LCAKKyAgICA4NywgMTkzLCA4MywgNzMsIDY4LCA2OCwgNzIsIDY1LCAyMDUsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgMjAwLCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCAKKyAgICA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIAorICAgIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgOTAsIAorICAgIDkwLCA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCA3OSwgCisgICAgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCA5MCwgCisgICAgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgNjksIAorICAgIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgOTAsIAorICAgIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCA2NSwgCisgICAgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIDEyOCwgCisgICAgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgMjAyLCA5MCwgODcsIDY1LCAKKyAgICA4MiwgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgODUsIAorICAgIDY2LCA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDIxMywgOTAsIDgzLCA3MiwgNjUsIAorICAgIDEyOCwgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIAorICAgIDc5LCAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIAorICAgIDE5MywgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIAorICAgIDczLCA4MCwgODAsIDY5LCA4MiwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgCisgICAgNzMsIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCAKKyAgICA2OCwgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgCisgICAgODksIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCAKKyAgICA4MiwgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCAKKyAgICA3MiwgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgCisgICAgOTAsIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCAKKyAgICA3OSwgNzksIDEyOCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIAorICAgIDg0LCA2OSwgMTI4LCA5MCwgNzIsIDczLCA3NiwgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIAorICAgIDkwLCA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgCisgICAgNjksIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgODgsIDEyOCwgCisgICAgOTAsIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCAKKyAgICA2NSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCAKKyAgICA2OSwgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCAKKyAgICA5MCwgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgCisgICAgMTI4LCA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgCisgICAgNzMsIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCAKKyAgICA2NSwgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgyLCA3NiwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIAorICAgIDc3LCA4OCwgMTI4LCA5MCwgNjUsIDc2LCAxMjgsIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIAorICAgIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCAKKyAgICA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNjUsIDU1LCAxMjgsIDkwLCAxOTMsIDkwLCA0OCwgNDksIDU0LCA3MiwgMTI4LCAKKyAgICA5MCwgNDgsIDQ5LCA1NCwgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OSwgCisgICAgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjgsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAKKyAgICA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIAorICAgIDczLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzEsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTMsIDcwLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OSwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjgsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OSwgNTMsIDY3LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NiwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjUsIDEyOCwgOTAsIAorICAgIDQ4LCA0OSwgNTMsIDEyOCwgOTAsIDQ4LCA0OSwgNTIsIDEyOCwgOTAsIDQ4LCA0OSwgNTEsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTAsIDEyOCwgOTAsIDQ4LCA0OSwgNDksIDEyOCwgOTAsIDQ4LCA0OSwgNDgsIDEyOCwgOTAsIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgOTAsIDQ4LCA0OCwgNTYsIDEyOCwgOTAsIDQ4LCA0OCwgNTUsIDEyOCwgOTAsIDQ4LCA0OCwgNTQsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCAxMjgsIDkwLCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUxLCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2OCwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTAsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA5MCwgMTI4LCAyMTgsIDg5LCA4OSwgODgsIDEyOCwgODksIDg5LCA4NCwgMTI4LCA4OSwgODksIDgyLCAKKyAgICA4OCwgMTI4LCA4OSwgODksIDgyLCAxMjgsIDg5LCA4OSwgODAsIDEyOCwgODksIDg5LCA2OSwgMTI4LCA4OSwgODksIDY1LCAKKyAgICA2NSwgMTI4LCA4OSwgODksIDY1LCAxMjgsIDg5LCA4OSwgMTI4LCA4OSwgODcsIDc5LCA3OSwgMTI4LCA4OSwgODcsIDc5LCAKKyAgICAxMjgsIDg5LCA4NywgNzMsIDczLCAxMjgsIDg5LCA4NywgNzMsIDEyOCwgODksIDg3LCA2OSwgMTI4LCA4OSwgODcsIDY1LCAKKyAgICA2NSwgMTI4LCA4OSwgODcsIDY1LCAxMjgsIDg5LCA4NiwgMTI4LCA4OSwgODUsIDg4LCAxMjgsIDg5LCA4NSwgODcsIDc5LCAKKyAgICA4MSwgMTI4LCA4OSwgODUsIDg1LCA3NSwgNjUsIDc2LCA2OSwgNjUsIDgwLCA3MywgNzgsIDg0LCA4NSwgMTI4LCA4OSwgODUsIAorICAgIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIAorICAgIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIAorICAgIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNzQsIAorICAgIDEyOCwgODksIDg1LCA2OSwgODEsIDEyOCwgODksIDg1LCA2OSwgMTI4LCA4OSwgODUsIDY4LCA3MiwgMTI4LCA4OSwgODUsIAorICAgIDY4LCAyMDAsIDg5LCA4NSwgNjUsIDc4LCAxMjgsIDg5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgCisgICAgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA4NSwgMTI4LCA4OSwgODUsIDQ1LCAKKyAgICA3OSwgMTI4LCA4OSwgODUsIDQ1LCA3MywgMTI4LCA4OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgNjksIAorICAgIDEyOCwgODksIDg1LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAxMjgsIDg5LCA4NSwgMTI4LCA4OSwgMjEzLCAKKyAgICA4OSwgODIsIDg5LCAxMjgsIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIAorICAgIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgCisgICAgNzMsIDIxMSwgODksIDgwLCA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCAKKyAgICA4OSwgMTI4LCA4OSwgNzksIDg4LCAxMjgsIDg5LCA3OSwgODcsIDY4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIAorICAgIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgCisgICAgMTI4LCA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIAorICAgIDg5LCA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgCisgICAgNzIsIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgCisgICAgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCAKKyAgICA3OSwgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIAorICAgIDQ1LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIAorICAgIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIAorICAgIDczLCA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIAorICAgIDY5LCA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgCisgICAgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgCisgICAgODksIDczLCAxMjgsIDg5LCA3MiwgNjksIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgMTI4LCA4OSwgNzAsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODksIDcwLCA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgODcsIDEyOCwgODksIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgODksIDY5LCA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCA4MSwgMTI4LCA4OSwgNjksIAorICAgIDg1LCA3NywgMTI4LCA4OSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4OSwgCisgICAgNjksIDg0LCA3MywgODYsIDEyOCwgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCAKKyAgICA3MSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA2NSwgCisgICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc3LCA3MywgNjksIAorICAgIDg1LCA3NywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgCisgICAgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDg5LCA2OSwgODIsIAorICAgIDIxMywgODksIDY5LCA4MiwgNzMsIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCA4MiwgMTI4LCA4OSwgNjksIAorICAgIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgCisgICAgNjksIDc5LCA0NSwgODUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgNzgsIDczLCA4MywgNjksIAorICAgIDIwMSwgODksIDY5LCA3OCwgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAyMDYsIDg5LCA2OSwgNzYsIAorICAgIDc2LCA3OSwgODcsIDEyOCwgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzMsIDc4LCAxMjgsIDg5LCA2OSwgCisgICAgNzIsIDEyOCwgODksIDY5LCA2OSwgNzEsIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAyMTAsIDg5LCA2OSwgCisgICAgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCA5MCwgMTI4LCA4OSwgCisgICAgNjUsIDg5LCA2OCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCAKKyAgICA2NSwgODcsIDc4LCAxMjgsIDg5LCA2NSwgODcsIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg1LCAxMjgsIDg5LCAKKyAgICA2NSwgODQsIDg0LCAxMjgsIDg5LCA2NSwgODQsIDczLCAxMjgsIDg5LCA2NSwgODQsIDcyLCAxMjgsIDg5LCA2NSwgODQsIAorICAgIDEyOCwgODksIDY1LCA4MywgODMsIDEyOCwgODksIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA4MywgMTI4LCA4OSwgNjUsIAorICAgIDgyLCA4MiwgMTI4LCA4OSwgNjUsIDgyLCAxMjgsIDg5LCA2NSwgMjEwLCA4OSwgNjUsIDgxLCAxMjgsIDg5LCA2NSwgODAsIAorICAgIDEyOCwgODksIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODksIDY1LCA3OCwgNzEsIDEyOCwgODksIDY1LCA3OCwgCisgICAgMTk5LCA4OSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDc5LCA3NSwgMTI4LCA4OSwgNjUsIDc3LCA2NSwgNzUsIDc1LCAKKyAgICA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgMTI4LCA4OSwgNjUsIDc2LCAxMjgsIDg5LCA2NSwgNzUsIDcyLCA3MiwgMTI4LCAKKyAgICA4OSwgNjUsIDc1LCA3MiwgMTI4LCA4OSwgNjUsIDc1LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDEyOCwgODksIAorICAgIDY1LCA3NCwgODUsIDgyLCA4NiwgNjksIDY4LCA3MywgMTk1LCA4OSwgNjUsIDc0LCAxMjgsIDg5LCA2NSwgNzMsIDEyOCwgCisgICAgODksIDY1LCA3MiwgNzIsIDEyOCwgODksIDY1LCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3OCwgMTI4LCA4OSwgNjUsIDcxLCAKKyAgICA3MiwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzIsIDEyOCwgODksIDY1LCA3MSwgMTI4LCA4OSwgNjUsIDcwLCAyMTMsIDg5LCAKKyAgICA2NSwgNzAsIDEyOCwgODksIDY1LCA2OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgODksIDY1LCA2OCwgNzIsIDEyOCwgODksIAorICAgIDY1LCA2OCwgNjgsIDcyLCAxMjgsIDg5LCA2NSwgNjgsIDY4LCAxMjgsIDg5LCA2NSwgNjgsIDEyOCwgODksIDY1LCA2NywgCisgICAgNzIsIDEyOCwgODksIDY1LCA2NiwgNzIsIDEyOCwgODksIDY1LCA2NiwgMTI4LCA4OSwgNjUsIDY1LCA4MiwgODUsIDEyOCwgCisgICAgODksIDY1LCA2NSwgNzMsIDEyOCwgODksIDY1LCA2NSwgNjgsIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg5LCA3OSwgMTI4LCAKKyAgICA4OSwgNjUsIDQ1LCA4NSwgMTI4LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA4OSwgNDgsIDQ4LCA1NiwgMTI4LCA4OSwgNDgsIAorICAgIDQ4LCA1NSwgMTI4LCA4OSwgNDgsIDQ4LCA1NCwgMTI4LCA4OSwgNDgsIDQ4LCA1MywgMTI4LCA4OSwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA4OSwgNDgsIDQ4LCA1MSwgMTI4LCA4OSwgNDgsIDQ4LCA1MCwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgCisgICAgODksIDQ4LCA0OCwgNDksIDEyOCwgODksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg4LCA4OSwgODgsIDEyOCwgODgsIDg5LCAKKyAgICA4NSwgMTI4LCA4OCwgODksIDg0LCAxMjgsIDg4LCA4OSwgODIsIDg4LCAxMjgsIDg4LCA4OSwgODIsIDEyOCwgODgsIDg5LCAKKyAgICA4MCwgMTI4LCA4OCwgODksIDc5LCA3OSwgNzQsIDEyOCwgODgsIDg5LCA3OSwgNzksIDEyOCwgODgsIDg5LCA3OSwgMTI4LCAKKyAgICA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAyMDUsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCA4OSwgNjksIAorICAgIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCA3MywgMTI4LCAKKyAgICA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCA4NywgNjUsIAorICAgIDEyOCwgODgsIDg3LCAxMjgsIDg4LCA4NiwgNjksIDEyOCwgODgsIDg2LCA2NSwgMTI4LCA4OCwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA4OCwgODUsIDc5LCAxMjgsIDg4LCA4NSwgMTI4LCA4OCwgODMsIDcyLCA2NSwgNjUsIDg5LCA2NSwgODQsIDcyLCA3MywgODksIAorICAgIDY1LCAxMjgsIDg4LCA3OSwgODgsIDEyOCwgODgsIDc5LCA4NCwgMTI4LCA4OCwgNzksIDgyLCAxMjgsIDg4LCA3OSwgODAsIAorICAgIDcyLCAxMjgsIDg4LCA3OSwgODAsIDEyOCwgODgsIDc5LCA2NSwgMTI4LCA4OCwgNzksIDEyOCwgODgsIDczLCA4OCwgMTI4LCAKKyAgICA4OCwgNzMsIDg0LCAxMjgsIDg4LCA3MywgODIsIDc5LCAyMDYsIDg4LCA3MywgODAsIDEyOCwgODgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgODgsIDczLCA2OSwgODQsIDEyOCwgODgsIDczLCA2OSwgODAsIDEyOCwgODgsIDczLCA2OSwgMTI4LCA4OCwgNzMsIAorICAgIDY1LCA2NiwgMTI4LCA4OCwgNzMsIDEyOCwgODgsIDcxLCAxMjgsIDg4LCA2OSwgODksIDc4LCAxMjgsIDg4LCA2OSwgODMsIAorICAgIDg0LCA2OSwgMjExLCA4OCwgNjksIDcyLCAxMjgsIDg4LCA2OSwgNjksIDEyOCwgODgsIDY5LCAxMjgsIDg4LCA2NSwgODUsIAorICAgIDgzLCAxMjgsIDg4LCA2NSwgODUsIDEyOCwgODgsIDY1LCA4MCwgNzIsIDEyOCwgODgsIDY1LCA3OCwgMTI4LCA4OCwgNjUsIAorICAgIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDEyOCwgODgsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAxMjgsIDg4LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgODgsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgODgsIDQ1LCAyMTYsIDg3LCA5MCwgMTI4LCA4NywgODksIDc4LCA3OCwgMTI4LCA4NywgODksIDc4LCAyMDYsIDg3LCAKKyAgICA4NiwgNzMsIDEyOCwgODcsIDg2LCA2OSwgMTI4LCA4NywgODYsIDY1LCAxMjgsIDg3LCA4NiwgMTI4LCA4NywgODUsIDgwLCAKKyAgICAxMjgsIDg3LCA4NSwgNzksIDg4LCAxMjgsIDg3LCA4NSwgNzksIDgwLCAxMjgsIDg3LCA4NSwgNzksIDEyOCwgODcsIDg1LCAKKyAgICA3OCwgNzQsIDIwNywgODcsIDg1LCA3OCwgMTI4LCA4NywgODUsIDc2LCA4NSwgMTI4LCA4NywgODUsIDc2LCAyMTMsIDg3LCAKKyAgICA4NSwgNzMsIDEyOCwgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCA2NSwgNjksIAorICAgIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCA4MiwgNzMsIAorICAgIDgzLCAyMTIsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgCisgICAgMjExLCA4NywgODIsIDczLCA3OCwgNzUsIDc2LCA2OSwgNjgsIDEyOCwgODcsIDgyLCA2OSwgODMsIDg0LCA3NiwgNjksIDgyLCAKKyAgICA4MywgMTI4LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIAorICAgIDY1LCA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgCisgICAgMTI4LCA4NywgNzksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCAKKyAgICA3OSwgODIsIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIAorICAgIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgCisgICAgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCAKKyAgICA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIAorICAgIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgCisgICAgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCAKKyAgICA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCAKKyAgICA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgCisgICAgMjA2LCA4NywgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzUsIDEyOCwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIAorICAgIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgCisgICAgMTI4LCA4NywgNzMsIDc4LCA2OCwgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgCisgICAgODcsIDczLCA3OCwgMTI4LCA4NywgNzMsIDc2LCA4NCwgNjksIDE5NiwgODcsIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIAorICAgIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgNzEsIDcxLCA3NiwgNjksIDgzLCAxMjgsIDg3LCA3MywgCisgICAgNjgsIDg0LCA3MiwgMTI4LCA4NywgNzMsIDY4LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNzMsIDY4LCA2OSwgNDUsIDcyLCAKKyAgICA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgNzUsIAorICAgIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCA2OSwgCisgICAgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIDcyLCAKKyAgICA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgNjksIAorICAgIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCA2NSwgCisgICAgNzYsIDY5LCAxMjgsIDg3LCA3MiwgMTI4LCA4NywgNzEsIDEyOCwgODcsIDY5LCA4OCwgMTI4LCA4NywgNjksIDg1LCA4OCwgCisgICAgMTI4LCA4NywgNjksIDgzLCA4NCwgNjksIDgyLCAyMDYsIDg3LCA2OSwgODMsIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKKyAgICA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCAKKyAgICA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIAorICAgIDczLCA2OSwgODIsIDgzLCA4NCwgODIsIDY1LCA4MywgMjExLCA4NywgNjksIDczLCAxMjgsIDg3LCA2OSwgNjksIDc4LCAKICAgICAxMjgsIDg3LCA2OSwgNjgsIDcxLCA2OSwgNDUsIDg0LCA2NSwgNzMsIDc2LCA2OSwgMTk2LCA4NywgNjksIDY4LCA3MSwgNjksIAogICAgIDEyOCwgODcsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NiwgMTI4LCA4NywgNjksIDY1LCA4MiwgCiAgICAgMjE3LCA4NywgNjksIDY1LCA4MCwgNzksIDc4LCAxMjgsIDg3LCA2NywgMTI4LCA4NywgNjYsIDEyOCwgODcsIDY1LCA4OSwgCkBAIC0yNTcsMjUxICsyNTgsMjUzIEBACiAgICAgMTI4LCA4NywgNjUsIDgzLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDc2LCA2NSwgMTI4LCAKICAgICA4NywgNjUsIDgzLCA3NiwgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNjUsIAogICAgIDc2LCA3NiwgNjUsIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDgyLCA2NSwgNzgsIDE5OSwgCi0gICAgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAKLSAgICAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIAotICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4NywgNjUsIDc2LCA3NiwgMTI4LCA4NywgNjUsIDc2LCAyMDQsIDg3LCA2NSwgCi0gICAgNzYsIDc1LCAxMjgsIDg3LCA2NSwgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCAKLSAgICA3MywgODMsIDg0LCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCAKLSAgICA4NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgCi0gICAgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCAKLSAgICA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIAotICAgIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCA0OCwgNDksIDU0LCAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1MiwgMTI4LCA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCAKLSAgICA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIAotICAgIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCA0OCwgNDgsIDU0LCAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIAotICAgIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCAKLSAgICA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCAKLSAgICA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA3NCwgMTI4LCA4NiwgODcsIDY1LCAxMjgsIDg2LCA4NSwgODgsIDEyOCwgCi0gICAgODYsIDg1LCA4NSwgMTI4LCA4NiwgODUsIDg0LCAxMjgsIDg2LCA4NSwgODIsIDg4LCAxMjgsIDg2LCA4NSwgODIsIDEyOCwgCi0gICAgODYsIDg1LCA4MCwgMTI4LCA4NiwgODUsIDc2LCA3MSwgNjUsIDIxMCwgODYsIDg1LCA2OSwgODEsIDEyOCwgODYsIDg0LCAKLSAgICA4MywgMTI4LCA4NiwgODQsIDEyOCwgODYsIDgzLCA1NywgNTcsIDEyOCwgODYsIDgzLCA1NywgNTYsIDEyOCwgODYsIDgzLCAKLSAgICA1NywgNTUsIDEyOCwgODYsIDgzLCA1NywgNTQsIDEyOCwgODYsIDgzLCA1NywgNTMsIDEyOCwgODYsIDgzLCA1NywgNTIsIAotICAgIDEyOCwgODYsIDgzLCA1NywgNTEsIDEyOCwgODYsIDgzLCA1NywgNTAsIDEyOCwgODYsIDgzLCA1NywgNDksIDEyOCwgODYsIAotICAgIDgzLCA1NywgNDgsIDEyOCwgODYsIDgzLCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NywgMTI4LCA4NiwgODMsIDU2LCA1NiwgCi0gICAgMTI4LCA4NiwgODMsIDU2LCA1NSwgMTI4LCA4NiwgODMsIDU2LCA1NCwgMTI4LCA4NiwgODMsIDU2LCA1MywgMTI4LCA4NiwgCi0gICAgODMsIDU2LCA1MiwgMTI4LCA4NiwgODMsIDU2LCA1MSwgMTI4LCA4NiwgODMsIDU2LCA1MCwgMTI4LCA4NiwgODMsIDU2LCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDU2LCA0OCwgMTI4LCA4NiwgODMsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU3LCAxMjgsIDg2LCAKLSAgICA4MywgNTUsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU1LCAxMjgsIDg2LCA4MywgNTUsIDU0LCAxMjgsIDg2LCA4MywgNTUsIAotICAgIDUzLCAxMjgsIDg2LCA4MywgNTUsIDUyLCAxMjgsIDg2LCA4MywgNTUsIDUxLCAxMjgsIDg2LCA4MywgNTUsIDUwLCAxMjgsIAotICAgIDg2LCA4MywgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNTUsIDQ4LCAxMjgsIDg2LCA4MywgNTUsIDEyOCwgODYsIDgzLCA1NCwgCi0gICAgNTcsIDEyOCwgODYsIDgzLCA1NCwgNTYsIDEyOCwgODYsIDgzLCA1NCwgNTUsIDEyOCwgODYsIDgzLCA1NCwgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA1NCwgNTMsIDEyOCwgODYsIDgzLCA1NCwgNTIsIDEyOCwgODYsIDgzLCA1NCwgNTEsIDEyOCwgODYsIDgzLCAKLSAgICA1NCwgNTAsIDEyOCwgODYsIDgzLCA1NCwgNDksIDEyOCwgODYsIDgzLCA1NCwgNDgsIDEyOCwgODYsIDgzLCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDUzLCA1NywgMTI4LCA4NiwgODMsIDUzLCA1NiwgMTI4LCA4NiwgODMsIDUzLCA1NSwgMTI4LCA4NiwgODMsIAotICAgIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUzLCA1MSwgCi0gICAgMTI4LCA4NiwgODMsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUzLCA0OCwgMTI4LCA4NiwgCi0gICAgODMsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTIsIDU1LCAKLSAgICAxMjgsIDg2LCA4MywgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDUyLCAxMjgsIDg2LCAKLSAgICA4MywgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTIsIAotICAgIDQ4LCAxMjgsIDg2LCA4MywgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTcsIDEyOCwgODYsIDgzLCA1MSwgNTYsIDEyOCwgODYsIAotICAgIDgzLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MSwgNTQsIDEyOCwgODYsIDgzLCA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MSwgCi0gICAgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MSwgNTAsIDEyOCwgODYsIDgzLCA1MSwgNDksIDEyOCwgCi0gICAgODYsIDgzLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1NiwgMTI4LCA4NiwgODMsIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTQsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MywgCi0gICAgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MywgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU0LCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUxLCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTIsIDQ4LCAxMjgsIAotICAgIDg2LCA4MywgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTYsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTMsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCi0gICAgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUwLCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUzLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNDksIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTUsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNDksIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTIsIAotICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCi0gICAgNDksIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAKLSAgICA1NywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUyLCAxMjgsIDg2LCA4MywgCi0gICAgNTAsIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ5LCAxMjgsIDg2LCAKLSAgICA4MywgNTAsIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU3LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU1LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDU3LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUyLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU3LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDQ5LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU3LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTcsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTYsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTQsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCi0gICAgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU3LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU1LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU0LCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUxLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDU1LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTUsIDQ4LCAxMjgsIAotICAgIDg2LCA4MywgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTYsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTQsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTMsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCi0gICAgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU0LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAKLSAgICA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU2LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDUzLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUzLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUzLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUwLCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUzLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTUsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTIsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCi0gICAgNDksIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCAKLSAgICA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDUxLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUyLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDUxLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ5LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDUxLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTcsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTQsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTEsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCi0gICAgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ5LCAKLSAgICA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUxLCAxMjgsIDg2LCA4MywgCi0gICAgNDksIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDksIDQ4LCAxMjgsIDg2LCAKLSAgICA4MywgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTYsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTMsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTAsIAotICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCAxMjgsIDg2LCA4MywgMTI4LCA4NiwgODIsIDY1LCA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgCi0gICAgODgsIDEyOCwgODYsIDc5LCA4NywgNjksIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAKLSAgICAxMjgsIDg2LCA3OSwgODUsIDEyOCwgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIDIxMSwgODYsIDc5LCA4MCwgMTI4LCA4NiwgCi0gICAgNzksIDc5LCA3MywgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgODYsIDc5LCA3NiwgODUsIDc3LCAKLSAgICAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDY1LCA3NiwgNzYsIAotICAgIDEyOCwgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgNzksIDEyOCwgODYsIDc5LCA3NiwgNjUsIDgwLCA4NSwgMjAzLCA4NiwgCi0gICAgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDg2LCA3OSwgNzMsIDY3LCA2OSwgNzYsIDY5LCAKLSAgICA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2NywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDg2LCA3OSwgNjcsIDY1LCAyMDQsIDg2LCA3OSwgMTI4LCA4NiwgNzMsIDg5LCA3OSwgMTI4LCA4NiwgNzMsIAotICAgIDg4LCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgCi0gICAgNzYsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCA0NSwgNTAsIDEyOCwgODYsIDczLCA4NCwgNjUsIDY5LCAxMjgsIDg2LCAKLSAgICA3MywgODQsIDEyOCwgODYsIDczLCA4MywgNzMsIDcxLCA3OSwgODQsIDcyLCA3MywgMTk1LCA4NiwgNzMsIDgzLCA2NSwgODIsIAotICAgIDcxLCA2NSwgODksIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODMsIDY1LCA4MiwgCi0gICAgNzEsIDE5MywgODYsIDczLCA4MiwgNzMsIDY1LCA3NywgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNzksIDEyOCwgODYsIDczLCAKLSAgICA4MiwgNzEsIDY1LCAxMjgsIDg2LCA3MywgODIsIDY1LCA3NywgNjUsIDEyOCwgODYsIDczLCA4MCwgMTI4LCA4NiwgNzMsIAotICAgIDc5LCA3NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTEsIDEyOCwgODYsIDczLCA3OCwgCi0gICAgNjksIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCAyMTAsIDg2LCA3MywgNzgsIDY5LCAxMjgsIDg2LCA3MywgNzgsIDE5NywgODYsIDczLCA3OCwgMTI4LCAKLSAgICA4NiwgNzMsIDc2LCA3NiwgNjUsIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIAotICAgIDg2LCA3MywgNjksIDg3LCA3MywgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgODYsIDczLCA2OSwgMjEyLCA4NiwgNzMsIDY5LCA4MCwgMTI4LCA4NiwgNzMsIDY5LCAxMjgsIDg2LCA3MywgCi0gICAgNjgsIDc0LCA0NSwgNTAsIDEyOCwgODYsIDczLCA2OCwgNzQsIDEyOCwgODYsIDczLCA2OCwgNjksIDc5LCA2NywgNjUsIDgzLCAKLSAgICA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODYsIDczLCA2OCwgNjksIDIwNywgODYsIDczLCA2OCwgNjUsIDEyOCwgODYsIAotICAgIDczLCA2NywgODQsIDc5LCA4MiwgMjE3LCA4NiwgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDcwLCA2NSwgCi0gICAgMTI4LCA4NiwgNjksIDg5LCA5MCwgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgODcsIDEyOCwgODYsIDY5LCAyMTUsIAotICAgIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgCi0gICAgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAxMjgsIDg2LCA2OSwgODMsIDgzLCAKLSAgICA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDg5LCAxMjgsIAotICAgIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCi0gICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCi0gICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCi0gICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCi0gICAgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgCi0gICAgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCi0gICAgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCi0gICAgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCi0gICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAotICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgMTI4LCA4NiwgNjksIAotICAgIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgODYsIDY5LCA4MiwgNzEsIDY5LCAKLSAgICAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCA4MiwgMTI4LCA4NiwgNjksIAotICAgIDgwLCAxMjgsIDg2LCA2OSwgNzgsIDY4LCAxMjgsIDg2LCA2OSwgNzMsIDc2LCAxMjgsIDg2LCA2OSwgNzIsIDczLCA2NywgCi0gICAgNzYsIDY5LCAxMjgsIDg2LCA2OSwgNzIsIDEyOCwgODYsIDY5LCAyMDAsIDg2LCA2OSwgNjksIDEyOCwgODYsIDY5LCAxOTcsIAotICAgIDg2LCA2OSwgNjgsIDY5LCAxMjgsIDg2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDg4LCAxMjgsIDg2LCA2NSwgODYsIDEyOCwgODYsIDY1LCAyMTQsIDg2LCA2NSwgODUsIDEyOCwgODYsIAotICAgIDY1LCA4NCwgNzIsIDg5LCAxMjgsIDg2LCA2NSwgODQsIDEyOCwgODYsIDY1LCA4MywgODQsIDc4LCA2OSwgODMsIDIxMSwgCi0gICAgODYsIDY1LCA4MywgNzMsIDgzLCAxMjgsIDg2LCA2NSwgODIsIDg5LCAyMTEsIDg2LCA2NSwgODIsIDczLCA3NSwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgODQsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDY1LCA3OCwgMjEyLCA4NiwgCi0gICAgNjUsIDgyLCA3MywgNjUsIDEyOCwgODYsIDY1LCA4MiwgNzMsIDE5MywgODYsIDY1LCA4MiwgNjksIDczLCA2NSwgMjAxLCAKLSAgICA4NiwgNjUsIDgyLCA2OSwgNzMsIDE5MywgODYsIDY1LCA4MCwgNzksIDg1LCA4MiwgODMsIDEyOCwgODYsIDY1LCA4MCwgCi0gICAgMTI4LCA4NiwgNjUsIDc4LCA2OSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDE5MywgODYsIDY1LCA3NiwgNzYsIDY5LCA4OSwgCi0gICAgMTI4LCA4NiwgNjUsIDc0LCAxMjgsIDg2LCA2NSwgNzMsIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDIwMCwgODYsIAotICAgIDY1LCA2NSwgODYsIDg1LCAxMjgsIDg2LCA2NSwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNTIsIDQ4LCAxMjgsIDg2LCA0OCwgNTEsIDU3LCAxMjgsIDg2LCA0OCwgNTEsIDU2LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAKLSAgICA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgMTI4LCA4NiwgNDgsIDUxLCA1NCwgMTI4LCA4NiwgNDgsIDUxLCA1MywgMTI4LCAKLSAgICA4NiwgNDgsIDUxLCA1MiwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDEyOCwgODYsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ5LCAxMjgsIDg2LCA0OCwgCi0gICAgNTEsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgMTI4LCA4NiwgNDgsIDUwLCA1NywgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU2LCAxMjgsIDg2LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDg2LCA0OCwgNTAsIDU0LCAxMjgsIDg2LCA0OCwgNTAsIDUzLCAxMjgsIDg2LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDg2LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgMTI4LCA4NiwgNDgsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgNDgsIDUwLCA0OSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc1LCAxMjgsIDg2LCAKLSAgICA0OCwgNTAsIDQ4LCA3NCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzMsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcyLCAxMjgsIAotICAgIDg2LCA0OCwgNTAsIDQ4LCA3MSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzAsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY5LCAKLSAgICAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjcsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIAotICAgIDY2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgMTI4LCA4NiwgNDgsIDQ5LCA1NywgCi0gICAgMTI4LCA4NiwgNDgsIDQ5LCA1NiwgMTI4LCA4NiwgNDgsIDQ5LCA1NSwgMTI4LCA4NiwgNDgsIDQ5LCA1NCwgMTI4LCA4NiwgCi0gICAgNDgsIDQ5LCA1MywgMTI4LCA4NiwgNDgsIDQ5LCA1MiwgMTI4LCA4NiwgNDgsIDQ5LCA1MSwgMTI4LCA4NiwgNDgsIDQ5LCAKLSAgICA1MCwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDksIDUwLCAxMjgsIDg2LCA0OCwgNDksIAotICAgIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg2LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDg2LCA0OCwgNDksIDQ4LCAxMjgsIDg2LCA0OCwgNDgsIDU3LCAxMjgsIDg2LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNTQsIDEyOCwgODYsIDQ4LCA0OCwgNTMsIDEyOCwgODYsIDQ4LCA0OCwgNTIsIDEyOCwgODYsIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDUwLCAxMjgsIDg2LCA0OCwgCi0gICAgNDgsIDQ5LCA3MywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzIsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcxLCAxMjgsIDg2LCAKLSAgICA0OCwgNDgsIDQ5LCA3MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjksIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY4LCAxMjgsIAotICAgIDg2LCA0OCwgNDgsIDQ5LCA2NywgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDg2LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA5MCwgODUsIDEyOCwgODUsIDkwLCA1MSwgMTI4LCA4NSwgOTAsIDE3OSwgCi0gICAgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODksIDEyOCwgODUsIDg3LCA4NSwgMTI4LCA4NSwgODUsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODUsIDg1LCA4NSwgMTI4LCA4NSwgODUsIDg1LCA1MSwgMTI4LCA4NSwgODUsIAotICAgIDg1LCA1MCwgMTI4LCA4NSwgODUsIDY5LCAxMjgsIDg1LCA4NCwgODUsIDc1LCA3MywgMTI4LCA4NSwgODMsIDgzLCA4NSwgCi0gICAgNTEsIDEyOCwgODUsIDgzLCA4MywgODUsIDEyOCwgODUsIDgzLCA3MiwgODgsIDEyOCwgODUsIDgzLCA3MiwgODUsIDc3LCAKLSAgICA4OCwgMTI4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA4NSwgODMsIDcyLCA1MCwgMTI4LCA4NSwgODMsIAotICAgIDcyLCAxMjgsIDg1LCA4MywgMjAwLCA4NSwgODMsIDY5LCAxOTYsIDg1LCA4MywgNjksIDQ1LCA1MCwgMTI4LCA4NSwgODMsIAotICAgIDY5LCA0NSwgNDksIDEyOCwgODUsIDgzLCA2OSwgMTI4LCA4NSwgODMsIDE5NywgODUsIDgyLCA4NSwgMjE4LCA4NSwgODIsIAotICAgIDg1LCA4MywgMTI4LCA4NSwgODIsIDg1LCA2OCwgNjUsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDE5MywgODUsIDgyLCA4NSwgCi0gICAgMTI4LCA4NSwgODIsIDIxMywgODUsIDgyLCA3OCwgMTI4LCA4NSwgODIsIDczLCA3OCwgNjksIDEyOCwgODUsIDgyLCA3MywgCi0gICAgNTEsIDEyOCwgODUsIDgyLCA3MywgMTI4LCA4NSwgODIsIDY1LCA3OCwgODUsIDgzLCAxMjgsIDg1LCA4MiwgNjUsIDEyOCwgCi0gICAgODUsIDgyLCA1MiwgMTI4LCA4NSwgODIsIDUwLCAxMjgsIDg1LCA4MiwgMTc4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAKLSAgICA4MywgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIAotICAgIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgCi0gICAgNzksIDIwNiwgODUsIDgwLCA4MywgNzMsIDY4LCA2OSwgNDUsIDY4LCA3OSwgODcsIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgMjEyLCA4NSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIAotICAgIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAKLSAgICAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIAotICAgIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgNzgsIDEyOCwgODUsIDc4LCA3NSwgMTI4LCA4NSwgNzgsIDczLCA4NiwgCi0gICAgNjksIDgyLCA4MywgNjUsIDIwNCwgODUsIDc4LCA3MywgODQsIDg5LCAxMjgsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDg1LCAKLSAgICA3OCwgNzMsIDIxMiwgODUsIDc4LCA3MywgNzksIDc4LCAxMjgsIDg1LCA3OCwgNzMsIDc5LCAyMDYsIDg1LCA3OCwgNzMsIAotICAgIDcwLCA3MywgNjksIDE5NiwgODUsIDc4LCA3MywgNjcsIDc5LCA4MiwgMjA2LCA4NSwgNzgsIDY4LCAyMDcsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgODQsIDczLCA2OSwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDc2LCA3MywgNzgsIDE5NywgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCA2OCwgNzksIDg0LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjYsIDY1LCA4MiwgMTI4LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDIxMCwgODUsIDc4LCA2NywgNzMsIDE5MywgODUsIDc4LCA2NywgCi0gICAgNjksIDgyLCA4NCwgNjUsIDczLCA3OCwgODQsIDIxNywgODUsIDc4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIAotICAgIDY4LCAxMjgsIDg1LCA3OCwgNjUsIDgwLCAxMjgsIDg1LCA3OCwgNjUsIDc3LCA4NSwgODMsIDY5LCAxOTYsIDg1LCA3OCwgCi0gICAgNjUsIDEyOCwgODUsIDIwNiwgODUsIDc3LCA4NSwgNzcsIDEyOCwgODUsIDc3LCA4NSwgMjA1LCA4NSwgNzcsIDY2LCA4MiwgCi0gICAgNjksIDc2LCA3NiwgNjUsIDEyOCwgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDE5MywgODUsIDc3LCA2NiwgNzMsIDc4LCAKLSAgICAxMjgsIDg1LCA3NSwgODUsIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIAotICAgIDgyLCA2NSwgMTI4LCA4NSwgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgCi0gICAgNzgsIDc4LCAxMjgsIDg1LCA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKKyAgICA4NywgNjUsIDgxLCA3MCwgNjUsIDEyOCwgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIDE5OSwgODcsIAorICAgIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgMTI4LCA4NywgCisgICAgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4NywgNjUsIDc2LCA3NiwgMTI4LCAKKyAgICA4NywgNjUsIDc2LCAyMDQsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA3MywgODMsIDg0LCAxMjgsIDg3LCA2NSwgNzMsIDEyOCwgODcsIDY1LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDY1LCA2OSwgMTI4LCA4NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODcsIDY1LCA2NSwgODYsIDg1LCAKKyAgICAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgMTI4LCA4NywgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1MiwgMTI4LCAKKyAgICA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgMTI4LCA4NywgNDgsIAorICAgIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg3LCA0OCwgCisgICAgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCA0OCwgNDgsIDU0LCAKKyAgICAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCAKKyAgICA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgMTI4LCA4NiwgOTAsIAorICAgIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA3NCwgMTI4LCA4NiwgODcsIAorICAgIDY1LCAxMjgsIDg2LCA4NSwgODgsIDEyOCwgODYsIDg1LCA4NSwgMTI4LCA4NiwgODUsIDg0LCAxMjgsIDg2LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDg2LCA4NSwgODIsIDEyOCwgODYsIDg1LCA4MCwgMTI4LCA4NiwgODUsIDc2LCA3MSwgNjUsIDIxMCwgODYsIAorICAgIDg1LCA2OSwgODEsIDEyOCwgODYsIDg0LCA4MywgMTI4LCA4NiwgODQsIDEyOCwgODYsIDgzLCA1NywgNTcsIDEyOCwgODYsIAorICAgIDgzLCA1NywgNTYsIDEyOCwgODYsIDgzLCA1NywgNTUsIDEyOCwgODYsIDgzLCA1NywgNTQsIDEyOCwgODYsIDgzLCA1NywgCisgICAgNTMsIDEyOCwgODYsIDgzLCA1NywgNTIsIDEyOCwgODYsIDgzLCA1NywgNTEsIDEyOCwgODYsIDgzLCA1NywgNTAsIDEyOCwgCisgICAgODYsIDgzLCA1NywgNDksIDEyOCwgODYsIDgzLCA1NywgNDgsIDEyOCwgODYsIDgzLCA1NywgMTI4LCA4NiwgODMsIDU2LCAKKyAgICA1NywgMTI4LCA4NiwgODMsIDU2LCA1NiwgMTI4LCA4NiwgODMsIDU2LCA1NSwgMTI4LCA4NiwgODMsIDU2LCA1NCwgMTI4LCAKKyAgICA4NiwgODMsIDU2LCA1MywgMTI4LCA4NiwgODMsIDU2LCA1MiwgMTI4LCA4NiwgODMsIDU2LCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDU2LCA1MCwgMTI4LCA4NiwgODMsIDU2LCA0OSwgMTI4LCA4NiwgODMsIDU2LCA0OCwgMTI4LCA4NiwgODMsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTUsIDU3LCAxMjgsIDg2LCA4MywgNTUsIDU2LCAxMjgsIDg2LCA4MywgNTUsIDU1LCAxMjgsIDg2LCA4MywgCisgICAgNTUsIDU0LCAxMjgsIDg2LCA4MywgNTUsIDUzLCAxMjgsIDg2LCA4MywgNTUsIDUyLCAxMjgsIDg2LCA4MywgNTUsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNTUsIDUwLCAxMjgsIDg2LCA4MywgNTUsIDQ5LCAxMjgsIDg2LCA4MywgNTUsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNTUsIDEyOCwgODYsIDgzLCA1NCwgNTcsIDEyOCwgODYsIDgzLCA1NCwgNTYsIDEyOCwgODYsIDgzLCA1NCwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA1NCwgNTQsIDEyOCwgODYsIDgzLCA1NCwgNTMsIDEyOCwgODYsIDgzLCA1NCwgNTIsIDEyOCwgODYsIAorICAgIDgzLCA1NCwgNTEsIDEyOCwgODYsIDgzLCA1NCwgNTAsIDEyOCwgODYsIDgzLCA1NCwgNDksIDEyOCwgODYsIDgzLCA1NCwgCisgICAgNDgsIDEyOCwgODYsIDgzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1NywgMTI4LCA4NiwgODMsIDUzLCA1NiwgMTI4LCA4NiwgCisgICAgODMsIDUzLCA1NSwgMTI4LCA4NiwgODMsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUzLCA1MywgMTI4LCA4NiwgODMsIDUzLCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDUzLCA1MSwgMTI4LCA4NiwgODMsIDUzLCA1MCwgMTI4LCA4NiwgODMsIDUzLCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUzLCAxMjgsIDg2LCA4MywgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTIsIAorICAgIDU2LCAxMjgsIDg2LCA4MywgNTIsIDU1LCAxMjgsIDg2LCA4MywgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTIsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNTIsIDUyLCAxMjgsIDg2LCA4MywgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTIsIDUwLCAxMjgsIDg2LCA4MywgCisgICAgNTIsIDQ5LCAxMjgsIDg2LCA4MywgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTcsIDEyOCwgCisgICAgODYsIDgzLCA1MSwgNTYsIDEyOCwgODYsIDgzLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MSwgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MSwgNTEsIDEyOCwgODYsIDgzLCA1MSwgNTAsIAorICAgIDEyOCwgODYsIDgzLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MSwgNDgsIDEyOCwgODYsIDgzLCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1NCwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MywgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUzLCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUzLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTIsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTIsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDksIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MSwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NCwgCisgICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTEsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNDgsIDEyOCwgCisgICAgODYsIDgzLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MywgCisgICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKKyAgICA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNTAsIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNDgsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTMsIDEyOCwgODYsIDgzLCAKKyAgICA1MCwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MSwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTAsIDEyOCwgODYsIAorICAgIDgzLCA1MCwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA0OCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTYsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTcsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTMsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTcsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTAsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTcsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU3LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU2LCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUwLCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU2LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTUsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTUsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTIsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTUsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDksIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTUsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NCwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU0LCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ5LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDU0LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTcsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTMsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTQsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTMsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTEsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTMsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNDgsIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NiwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MiwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MywgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUyLCAKKyAgICA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTIsIDQ4LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTYsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTEsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTMsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNTEsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTAsIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNTEsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUxLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MCwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MCwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MiwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUwLCAKKyAgICA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDksIAorICAgIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTIsIDEyOCwgODYsIDgzLCAKKyAgICA0OSwgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDksIDEyOCwgODYsIAorICAgIDgzLCA0OSwgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU1LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA0OCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUyLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MSwgCisgICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCAxMjgsIDg2LCA4MywgMTI4LCA4NiwgODIsIDY1LCAKKyAgICA2NywgNzIsIDg5LCAxMjgsIDg2LCA3OSwgODgsIDEyOCwgODYsIDc5LCA4NywgNjksIDc2LCA0NSwgNjcsIDY1LCA4MiwgODIsIAorICAgIDczLCA2OSwgMjEwLCA4NiwgNzksIDg3LCAxMjgsIDg2LCA3OSwgODUsIDEyOCwgODYsIDc5LCA4NCwgMTI4LCA4NiwgNzksIAorICAgIDIxMSwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCA3MywgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIAorICAgIDEyOCwgODYsIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgCisgICAgNzYsIDY5LCA4OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgNzksIDEyOCwgODYsIDc5LCAKKyAgICA3NiwgNjUsIDgwLCA4NSwgMjAzLCA4NiwgNzksIDczLCAxOTYsIDg2LCA3OSwgNzMsIDY3LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDg2LCA3OSwgNzMsIDY3LCA2OSwgNzYsIDY5LCA4MywgMjExLCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODYsIDc5LCA2OCwgCisgICAgMTI4LCA4NiwgNzksIDY3LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIAorICAgIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgODksIDc5LCAxMjgsIDg2LCA3MywgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIAorICAgIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgCisgICAgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCAKKyAgICA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIAorICAgIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgCisgICAgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCAKKyAgICA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIAorICAgIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAKKyAgICAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDIxMCwgODYsIAorICAgIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTk3LCA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCA2NSwgCisgICAgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgODYsIDczLCA2OSwgODcsIDczLCAKKyAgICA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCA4NCwgMTI4LCA4NiwgNzMsIAorICAgIDY5LCAyMTIsIDg2LCA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCA2OCwgNzQsIDQ1LCA1MCwgCisgICAgMTI4LCA4NiwgNzMsIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCAKKyAgICA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgNzMsIDY3LCA4NCwgNzksIAorICAgIDgyLCAyMTcsIDg2LCA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzAsIDY1LCAxMjgsIDg2LCA2OSwgCisgICAgODksIDkwLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCA4NywgMTI4LCA4NiwgNjksIDIxNSwgODYsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAxMjgsIDg2LCAKKyAgICA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIDEyOCwgODYsIDY5LCA4MywgODMsIDY5LCAyMDQsIAorICAgIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgODksIDEyOCwgODYsIDY5LCA4MiwgCisgICAgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCAKKyAgICA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgCisgICAgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAxMjgsIDg2LCA2OSwgODIsIDgzLCA3MywgCisgICAgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4NiwgNjksIDgyLCA3MSwgNjksIDEyOCwgODYsIDY5LCAKKyAgICA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIDgyLCAxMjgsIDg2LCA2OSwgODAsIDEyOCwgODYsIAorICAgIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIDY5LCA3MiwgNzMsIDY3LCA3NiwgNjksIDEyOCwgCisgICAgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgMTI4LCA4NiwgNjksIDE5NywgODYsIDY5LCA2OCwgCisgICAgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg2LCAKKyAgICA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgODYsIDY1LCA4NSwgMTI4LCA4NiwgNjUsIDg0LCAKKyAgICA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIAorICAgIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgCisgICAgNjUsIDgyLCA3MywgNjUsIDc4LCA4NCwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCAKKyAgICA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIAorICAgIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgCisgICAgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCAKKyAgICA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNzQsIAorICAgIDEyOCwgODYsIDY1LCA3MywgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgMjAwLCA4NiwgNjUsIDY1LCA4NiwgODUsIAorICAgIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDEyOCwgODYsIAorICAgIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIDg2LCA0OCwgNTEsIDUyLCAKKyAgICAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgMTI4LCA4NiwgNDgsIDUxLCA1MCwgMTI4LCAKKyAgICA4NiwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDEyOCwgODYsIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIAorICAgIDg2LCA0OCwgNTEsIDQ4LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NywgMTI4LCA4NiwgCisgICAgNDgsIDUwLCA1NiwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDEyOCwgODYsIDQ4LCA1MCwgNTUsIDEyOCwgODYsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgODYsIDQ4LCA1MCwgNTMsIDEyOCwgODYsIDQ4LCA1MCwgNTIsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIAorICAgIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAxMjgsIDg2LCA0OCwgNTAsIDUwLCAxMjgsIDg2LCA0OCwgNTAsIDQ5LCAxMjgsIAorICAgIDg2LCA0OCwgNTAsIDQ4LCA3NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDc0LCAKKyAgICAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzIsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIAorICAgIDcxLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjksIDEyOCwgODYsIDQ4LCA1MCwgCisgICAgNDgsIDY4LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjYsIDEyOCwgODYsIDQ4LCAKKyAgICA1MCwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAxMjgsIDg2LCA0OCwgNDksIDU3LCAxMjgsIDg2LCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDg2LCA0OCwgNDksIDU1LCAxMjgsIDg2LCA0OCwgNDksIDU0LCAxMjgsIDg2LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDg2LCA0OCwgNDksIDUyLCAxMjgsIDg2LCA0OCwgNDksIDUxLCAxMjgsIDg2LCA0OCwgNDksIDUwLCA2NiwgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDY3LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNDksIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgODYsIDQ4LCA0OCwgNTcsIDEyOCwgODYsIDQ4LCA0OCwgNTYsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNTUsIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA4NiwgNDgsIDQ4LCA1MywgMTI4LCA4NiwgNDgsIDQ4LCA1MiwgMTI4LCA4NiwgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDczLCAxMjgsIAorICAgIDg2LCA0OCwgNDgsIDQ5LCA3MiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzEsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDcwLCAKKyAgICAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjgsIDEyOCwgODYsIDQ4LCA0OCwgNDksIAorICAgIDY3LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgODUsIDkwLCA4NSwgMTI4LCA4NSwgOTAsIDUxLCAxMjgsIDg1LCA5MCwgMTc5LCA4NSwgODksIDY1LCA3OCwgCisgICAgNzgsIDY1LCAxMjgsIDg1LCA4OSwgMTI4LCA4NSwgODcsIDg1LCAxMjgsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIDUxLCAxMjgsIDg1LCA4NSwgODUsIDUwLCAxMjgsIDg1LCAKKyAgICA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgODMsIDg1LCA1MSwgMTI4LCA4NSwgODMsIAorICAgIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCA4NSwgNzcsIDg4LCAxMjgsIDg1LCA4MywgCisgICAgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAKKyAgICAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCAKKyAgICA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCAKKyAgICA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCAKKyAgICA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIAorICAgIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIAorICAgIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgCisgICAgODcsIDY1LCA4MiwgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgODQsIDg1LCA4MiwgNzgsIAorICAgIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA4NSwgCisgICAgODAsIDgzLCA3MywgNjgsIDY5LCA0NSwgNjgsIDc5LCA4NywgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDg1LCAKKyAgICA4MCwgODAsIDY5LCA4MiwgMTI4LCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIAorICAgIDczLCA4OSwgNjUsIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgODUsIDc5LCA3OCwgCisgICAgMTI4LCA4NSwgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDc1LCAKKyAgICA3OCwgNzksIDg3LCA3OCwgMTI4LCA4NSwgNzgsIDc1LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCA2OSwgODIsIDgzLCA2NSwgCisgICAgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgODUsIDc4LCA3MywgODQsIDEyOCwgODUsIDc4LCA3MywgMjEyLCA4NSwgCisgICAgNzgsIDczLCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3MywgNzksIDIwNiwgODUsIDc4LCA3MywgNzAsIDc5LCA4MiwgNzcsIAorICAgIDEyOCwgODUsIDc4LCA3MywgNzAsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDczLCA2NywgNzksIDgyLCAyMDYsIDg1LCA3OCwgCisgICAgNjgsIDIwNywgODUsIDc4LCA2OCwgNjksIDgyLCA4NCwgNzMsIDY5LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNzYsIDczLCAKKyAgICA3OCwgMTk3LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY4LCA3OSwgODQsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA2NiwgNjUsIAorICAgIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NSwgNzgsIDY3LCA3MywgCisgICAgMTkzLCA4NSwgNzgsIDY3LCA2OSwgODIsIDg0LCA2NSwgNzMsIDc4LCA4NCwgMjE3LCA4NSwgNzgsIDY2LCA3NiwgNjksIDc4LCAKKyAgICA2OCwgNjksIDE5NiwgODUsIDc4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNjksIDY4LCAxMjgsIDg1LCA3OCwgNjUsIAorICAgIDgwLCAxMjgsIDg1LCA3OCwgNjUsIDc3LCA4NSwgODMsIDY5LCAxOTYsIDg1LCA3OCwgNjUsIDEyOCwgODUsIDIwNiwgODUsIAorICAgIDc3LCA4NSwgNzcsIDEyOCwgODUsIDc3LCA4NSwgMjA1LCA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgNjUsIDEyOCwgCisgICAgODUsIDc3LCA2NiwgODIsIDY5LCA3NiwgNzYsIDE5MywgODUsIDc3LCA2NiwgNzMsIDc4LCAxMjgsIDg1LCA3NSwgODUsIAorICAgIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA4NSwgCisgICAgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgNzgsIDc4LCAxMjgsIDg1LCAKKyAgICA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzIsIDY4LCAxMjgsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAogICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA3MywgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIDEyOCwgODUsIAogICAgIDY4LCA4NSwgNzEsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgCiAgICAgODUsIDY4LCA2NSwgNjUsIDg0LCAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIDY2LCA4NSwgCkBAIC01MzgsNjggKzU0MSw3MSBAQAogICAgIDg3LCA3OSwgNDUsIDY5LCAyMDUsIDg0LCA4NywgNzksIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgODQsIDg3LCA3MywgCiAgICAgODMsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA4NywgNzMsIDgzLCA4NCwgNjksIDE5NiwgODQsIDg3LCA3MywgNzMsIAogICAgIDEyOCwgODQsIDg3LCA3MywgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDg3LCA3OSwgMTI4LCA4NCwgCi0gICAgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIAotICAgIDQ1LCA4MywgNzMsIDg4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4MywgNjksIDg2LCA2OSwgNzgsIDEyOCwgCi0gICAgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIAotICAgIDc4LCA3MywgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA4NCwgCi0gICAgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgMjAwLCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCAyMTcsIDg0LCA4NywgNjksIAotICAgIDc2LCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDEyOCwgCi0gICAgODQsIDg3LCA2OSwgNzYsIDg2LCAxOTcsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCA4MywgMTI4LCA4NCwgODcsIDY5LCAKLSAgICA3NiwgNzAsIDg0LCA3MiwgMTI4LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIAotICAgIDEyOCwgODQsIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgCi0gICAgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NSwgODQsIDg0LCAKLSAgICA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgODQsIDEyOCwgODQsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCA2OSwgMTI4LCA4NCwgCi0gICAgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4NCwgODUsIDgyLCAKLSAgICA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA3NSwgNzMsIDgzLCAyMDAsIDg0LCA4NSwgODIsIAotICAgIDc1LCA3MywgMTk1LCA4NCwgODUsIDgyLCA3NSwgNjksIDg5LCAxMjgsIDg0LCA4NSwgODIsIDY2LCA2NSwgNzgsIDEyOCwgCi0gICAgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgNzksIDg0LCAKLSAgICAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAxMjgsIDg0LCAKLSAgICA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgMTI4LCA4NCwgODUsIDc3LCAxMjgsIAotICAgIDg0LCA4NSwgMjA1LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgCi0gICAgMTI4LCA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgCi0gICAgODUsIDcxLCAxNzgsIDg0LCA4NSwgNjYsIDEyOCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCAKLSAgICA4MCwgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA4NSwgMTI4LCA4NCwgODQsIDg1LCAKLSAgICA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgCi0gICAgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIDEyOCwgODQsIDg0LCA4NCwgNjUsIDEyOCwgODQsIDg0LCA4MywgODUsIDEyOCwgCi0gICAgODQsIDg0LCA4MywgNzksIDEyOCwgODQsIDg0LCA4MywgNzMsIDEyOCwgODQsIDg0LCA4MywgNjksIDY5LCAxMjgsIDg0LCAKLSAgICA4NCwgODMsIDY5LCAxMjgsIDg0LCA4NCwgODMsIDY1LCAxMjgsIDg0LCA4NCwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzMsIAotICAgIDczLCAxMjgsIDg0LCA4NCwgNzMsIDEyOCwgODQsIDg0LCA3MiwgODcsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDg1LCAxMjgsIAotICAgIDg0LCA4NCwgNzIsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgMTI4LCA4NCwgODQsIDcyLCA3MywgMTI4LCA4NCwgCi0gICAgODQsIDcyLCA2OSwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjksIDEyOCwgODQsIDg0LCA3MiwgNjUsIDY1LCAxMjgsIDg0LCAKLSAgICA4NCwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDIwMCwgODQsIAotICAgIDg0LCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgMjAwLCA4NCwgODQsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDY1LCA4OSwgCi0gICAgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODQsIDg0LCA2NSwgODUsIDEyOCwgODQsIDg0LCA2NSwgNzMsIDEyOCwgODQsIDg0LCAKLSAgICA2NSwgNjUsIDEyOCwgODQsIDg0LCA1MCwgMTI4LCA4NCwgODMsIDg3LCA2OSwgMTI4LCA4NCwgODMsIDg3LCA2NiwgMTI4LCAKLSAgICA4NCwgODMsIDg3LCA2NSwgMTI4LCA4NCwgODMsIDg2LCAxMjgsIDg0LCA4MywgODMsIDY5LCAxMjgsIDg0LCA4MywgODMsIAotICAgIDY1LCAxMjgsIDg0LCA4MywgNzksIDIxNCwgODQsIDgzLCA3MywgODUsIDEyOCwgODQsIDgzLCA3MiwgODUsIDcxLCA4MywgCi0gICAgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgMjAzLCA4NCwgODMsIDcyLCAKLSAgICA3OSwgNzksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIAotICAgIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDY5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTI4LCA4NCwgCi0gICAgODMsIDcyLCA2NSwgMTk0LCA4NCwgODMsIDcyLCA2NSwgMTI4LCA4NCwgODMsIDY5LCA4MiwgNjksIDEyOCwgODQsIDgzLCAKLSAgICA2OSwgNjksIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIAotICAgIDY1LCA2NiwgMTI4LCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgCi0gICAgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCAKLSAgICA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIAotICAgIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTcsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgCi0gICAgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTUsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTQsIAotICAgIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTIsIDEyOCwgCi0gICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTEsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ5LCAxMjgsIDg0LCAKLSAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTcsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU2LCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTQsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDUzLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MiwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTEsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUwLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDgsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIAotICAgIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgCi0gICAgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIAotICAgIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgCi0gICAgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgCisgICAgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODQsIDg3LCAyMDcsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIAorICAgIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIAorICAgIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgCisgICAgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIAorICAgIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgCisgICAgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCAKKyAgICA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgNzgsIDg0LCA3MywgNjksIDg0LCA3MiwgODMsIDEyOCwgODQsIAorICAgIDg3LCA2OSwgNzgsIDg0LCA3MywgNjksIDg0LCA3MiwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCAKKyAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgCisgICAgMTk3LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgODMsIDEyOCwgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIAorICAgIDEyOCwgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIAorICAgIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgNjksIDY4LCA3OSwgCisgICAgMTI4LCA4NCwgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NSwgCisgICAgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgODQsIAorICAgIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCA2OSwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgMTI4LCAKKyAgICA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA3NSwgNzMsIDgzLCAyMDAsIAorICAgIDg0LCA4NSwgODIsIDc1LCA3MywgMTk1LCA4NCwgODUsIDgyLCA3NSwgNjksIDg5LCAxMjgsIDg0LCA4NSwgODIsIDY2LCA2NSwgCisgICAgNzgsIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAxMjgsIDg0LCA4NSwgCisgICAgNzksIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCA3OCwgNzgsIDg5LCAKKyAgICAxMjgsIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY2LCA3NiwgNjksIDIxMCwgODQsIAorICAgIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgODQsIDg1LCAyMDUsIDg0LCA4NSwgNzYsIDczLCA4MCwgCisgICAgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCAKKyAgICA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCAKKyAgICA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIAorICAgIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgCisgICAgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCAKKyAgICA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIAorICAgIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgCisgICAgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgCisgICAgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIAorICAgIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgCisgICAgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAKKyAgICAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIAorICAgIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIAorICAgIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgCisgICAgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgNjUsIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgCisgICAgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIAorICAgIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgCisgICAgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCAKKyAgICA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCA4MywgNzIsIDY1LCAxOTQsIDg0LCA4MywgNzIsIAorICAgIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIDY5LCA2OSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgCisgICAgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgNjUsIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAKKyAgICA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIAorICAgIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCAKKyAgICA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIAorICAgIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MywgCisgICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MSwgMTI4LCAKKyAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ4LCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NywgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU1LCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTMsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MSwgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ5LCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgMTI4LCA4NCwgODIsIAorICAgIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgCisgICAgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIAorICAgIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCAKKyAgICA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCAKKyAgICA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCAKICAgICAxMjgsIDg0LCA4MiwgNzksIDc1LCA4NSwgODQsIDY1LCA4MywgODQsIDIwMSwgODQsIDgyLCA3OSwgNjksIDkwLCA2OSwgNzgsIAogICAgIDczLCA2NSwgMjA2LCA4NCwgODIsIDczLCA4NSwgNzcsIDgwLCA3MiwgMTI4LCA4NCwgODIsIDczLCA4NCwgNzksIDIxMSwgCiAgICAgODQsIDgyLCA3MywgODQsIDczLCA3NywgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzMsIDgzLCA3MywgNzcsIApAQCAtNjg4LDI0OSArNjk0LDI1MCBAQAogICAgIDIwMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgNzIsIDgyLCA2OSwgCiAgICAgNjksIDQ1LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCAyMTAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDgwLCA2OSwgODIsIAogICAgIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA3MiwgODIsIDY5LCA2OSwgCi0gICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjcsIDczLCAKLSAgICA4MiwgNjcsIDc2LCAxOTcsIDg0LCA3MiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIAotICAgIDY4LCA4MywgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDIxMSwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgCi0gICAgNzgsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCAxOTYsIDg0LCA3MiwgNzksIDg1LCA3MSwgNzIsIAotICAgIDIxMiwgODQsIDcyLCA3OSwgODUsIDEyOCwgODQsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAyMDYsIAotICAgIDg0LCA3MiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzIsIDc5LCA3NywgMTI4LCA4NCwgNzIsIDc5LCA3NCwgMTI4LCA4NCwgCi0gICAgNzIsIDc5LCA2NSwgMTI4LCA4NCwgNzIsIDIwNywgODQsIDcyLCA3MywgODUsIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDczLCAKLSAgICA4NCwgNjUsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDgzLCA2OSwgNjcsIDc5LCA3OCwgMTk2LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDIxNywgODQsIDcyLCA3MywgCi0gICAgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA2OCwgODMsIDEyOCwgODQsIDcyLCA3MywgODIsIDY4LCAyMTEsIDg0LCA3MiwgNzMsIDgyLCA2OCwgNDUsIDgzLCA4NCwgNjUsIAotICAgIDcxLCAxOTcsIDg0LCA3MiwgNzMsIDgyLCA2OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgMTk2LCA4NCwgNzIsIDczLCA3OCwgCi0gICAgNzUsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgODQsIDcyLCAKLSAgICA3MywgNjksIDg1LCA4NCwgMjAwLCA4NCwgNzIsIDczLCA2NywgMjAzLCA4NCwgNzIsIDczLCA2NSwgNjYsIDEyOCwgODQsIAotICAgIDcyLCA2OSwgODksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgCi0gICAgODQsIDcyLCA2OSwgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAKLSAgICAyMDYsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIAotICAgIDcyLCA2OSwgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA3NywgNjksIDg0LCA2OSwgODIsIDEyOCwgODQsIDcyLCA2OSwgCi0gICAgODIsIDc3LCA3OSwgNjgsIDg5LCA3OCwgNjUsIDc3LCA3MywgNjcsIDEyOCwgODQsIDcyLCA2OSwgODIsIDY5LCA3MCwgNzksIAotICAgIDgyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4MiwgMTk3LCA4NCwgNzIsIDY5LCAyMDYsIDg0LCA3MiwgNjksIDc3LCA2NSwgCi0gICAgODQsIDczLCA4MywgNzcsIDc5LCAyMTEsIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA3NywgMTkzLCAKLSAgICA4NCwgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNzIsIDY5LCAyMDAsIDg0LCA3MiwgNjksIDY1LCAxMjgsIDg0LCA3MiwgMTk3LCAKLSAgICA4NCwgNzIsIDY1LCA4NywgMTI4LCA4NCwgNzIsIDY1LCA3OCwgODQsIDcyLCA2NSwgNzUsIDcyLCA2NSwgODQsIDEyOCwgODQsIAotICAgIDcyLCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAyMDYsIDg0LCA3MiwgCi0gICAgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNCwgODQsIDcyLCAKLSAgICA2NSwgNzQsIDEyOCwgODQsIDcyLCA2NSwgMjAxLCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIAotICAgIDY1LCA3OCwgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgCi0gICAgODQsIDY5LCA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMjEyLCA4NCwgNjksIDg4LCAxMjgsIDg0LCA2OSwgODYsIDczLCAKLSAgICA4MiwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4NywgNjksIAotICAgIDc4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgCi0gICAgODEsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCAKLSAgICA2NSwgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIAotICAgIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA4NCwgCi0gICAgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCAKLSAgICA4NCwgMjAwLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIAotICAgIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgCi0gICAgNjksIDgyLCA2NSwgMTI4LCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAKLSAgICAyMDYsIDg0LCA2OSwgODMsIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIAotICAgIDY5LCA4MCwgMTI4LCA4NCwgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgCi0gICAgNzgsIDIxMywgODQsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCAKLSAgICA2OSwgMTI4LCA4NCwgNjksIDc4LCA4MywgMTk3LCA4NCwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDc4LCAyMTEsIDg0LCAKLSAgICA2OSwgNzgsIDc4LCA3MywgMjExLCA4NCwgNjksIDc4LCA3MSwgMTk3LCA4NCwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA4NCwgNjksIDc4LCAxMjgsIDg0LCA2OSwgMjA2LCA4NCwgNjksIDc3LCA4MCwgODUsIDIxMSwgODQsIAotICAgIDY5LCA3NiwgODUsIDEyOCwgODQsIDY5LCA3NiwgNzksIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4NCwgCi0gICAgNjksIDc2LCA3MywgODMsIDcyLCAxOTMsIDg0LCA2OSwgNzYsIDY5LCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCAKLSAgICA2OSwgNzYsIDY5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCA2OSwgCi0gICAgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDE5NywgODQsIDY5LCA3NiwgNjksIDczLCA2NSwgMTI4LCAKLSAgICA4NCwgNjksIDc2LCA2OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODQsIDY5LCA3NSwgMTI4LCA4NCwgNjksIDczLCA4NywgODMsIAotICAgIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgCi0gICAgMjAwLCA4NCwgNjksIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgCi0gICAgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCAKLSAgICA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgCi0gICAgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIAotICAgIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgCi0gICAgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIAotICAgIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgCi0gICAgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgCi0gICAgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCAKLSAgICA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIAotICAgIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDg1LCA3NywgCi0gICAgMTI4LCA4NCwgNjUsIDIxMywgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgODQsIDY1LCA4NCwgODcsIDY5LCAKLSAgICA2OSwgMjA0LCA4NCwgNjUsIDg0LCA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAxMjgsIDg0LCA2NSwgODMsIAotICAgIDEyOCwgODQsIDY1LCA4MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgCi0gICAgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgyLCA3MSwgNjksIDg0LCAxMjgsIDg0LCA2NSwgODEsIAotICAgIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIAotICAgIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDIxMiwgODQsIAotICAgIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgCi0gICAgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAKLSAgICAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIAotICAgIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgCi0gICAgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAKLSAgICAxMjgsIDg0LCA2NSwgNzUsIDE4MCwgODQsIDY1LCA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCAKLSAgICA4NCwgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIAotICAgIDg0LCA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgCi0gICAgNzEsIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc5LCAKLSAgICAxMjgsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA2NSwgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NCwgNjUsIDY2LCA4MywgCi0gICAgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIDY1LCA2NiwgNzYsIDE5NywgODQsIDY1LCA2NiwgMTI4LCA4NCwgCi0gICAgNjUsIDE5NCwgODQsIDY1LCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCAKLSAgICA2NSwgNzcsIDEyOCwgODQsIDY1LCA2NSwgNzYsIDg1LCA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIAotICAgIDY1LCA3MCwgMTI4LCA4NCwgNjUsIDUwLCAxMjgsIDg0LCA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIDQ4LCA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgCi0gICAgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCAKLSAgICA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCA0OSwgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCA4NCwgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgCi0gICAgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIDUwLCA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgCi0gICAgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgMTI4LCA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCAKLSAgICA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgNDgsIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIAotICAgIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCA0OSwgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIAotICAgIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCA0OCwgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIAotICAgIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgMTI4LCA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCAKLSAgICA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAxMjgsIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIAotICAgIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAxMjgsIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIAotICAgIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCA2NSwgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCAKLSAgICA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODMsIDg0LCA2OSwgMjA1LCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODksIAotICAgIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIDgyLCA3MywgCi0gICAgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAKLSAgICAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIAotICAgIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCA4OSwgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAKLSAgICAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzksIDcxLCA4NSwgNjksIDEyOCwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCi0gICAgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCA4OSwgNzgsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCAKLSAgICA4NCwgODIsIDg5LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA4MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU3LCAxMjgsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAKLSAgICA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgCi0gICAgNzksIDc2LCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU0LCAKLSAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAotICAgIDUxLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUwLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKLSAgICA3OSwgNzYsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MywgMTI4LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTEsIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAotICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU1LCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNDksIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKLSAgICA3NiwgNDUsIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCAKLSAgICA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgCi0gICAgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgCi0gICAgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCAKLSAgICA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCAKLSAgICA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIAotICAgIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCAKLSAgICA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIAotICAgIDg0LCA4MiwgMTkzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgCi0gICAgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIDgzLCA4NSwgODIsIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCAKLSAgICA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIAotICAgIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCA4MywgODUsIDgyLCA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAKLSAgICAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCAKLSAgICA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIDY1LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIAotICAgIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgCi0gICAgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCAKLSAgICA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgODMsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgCi0gICAgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDIxMCwgODMsIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgCi0gICAgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIDc5LCAxMjgsIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCAKLSAgICA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIAotICAgIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgCi0gICAgODIsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDEyOCwgODMsIDg1LCAKLSAgICAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA3NywgNjUsIDgzLCA3MiwgMTI4LCAKLSAgICA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIDEyOCwgODMsIDg1LCA3NSwgODUsIDc4LCAxMjgsIAotICAgIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIDgzLCA4NSwgNzUsIDIxMywgODMsIDg1LCA3MywgCi0gICAgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNzMsIDIxMiwgODMsIDg1LCAKLSAgICA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCAKLSAgICA4MywgODUsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NSwgNjcsIDc1LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgCi0gICAgMjAzLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIAotICAgIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgCi0gICAgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgCi0gICAgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCAKLSAgICA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgCi0gICAgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIAotICAgIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIAotICAgIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCi0gICAgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIDc3LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4MywgCi0gICAgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgNjYsIDEyOCwgODMsIDg1LCAKLSAgICA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCA4NCwgODUsIDY4LCAKLSAgICA4OSwgMTI4LCA4MywgODQsIDg1LCA2OCwgNzMsIDIwNywgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIAotICAgIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAotICAgIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIDczLCA3NSwgNjksIDg0LCAKLSAgICA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgNjgsIAotICAgIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgCi0gICAgMTk2LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCAKLSAgICA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIAotICAgIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIAotICAgIDg0LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA4NCwgODIsIDY1LCA3MywgNzAsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNjUsIDcxLCA3MSwgNzMsIDgzLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgODQsIDc5LCA4NiwgNjksIAotICAgIDEyOCwgODMsIDg0LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgCi0gICAgODMsIDg0LCA3OSwgODAsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNjUsIDcxLCA2OSwgMTI4LCAKLSAgICA4MywgODQsIDc5LCA4MCwgMTI4LCA4MywgODQsIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4MywgODQsIAotICAgIDc5LCA2NywgNzUsIDEyOCwgODMsIDg0LCA3OSwgNjcsIDIwMywgODMsIDg0LCA3MywgODIsIDgyLCA4NSwgMjA4LCA4MywgCi0gICAgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCAKLSAgICA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg0LCA3MywgNjcsIAotICAgIDIwMywgODMsIDg0LCA2OSwgODIsIDY5LCA3OSwgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3OCwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIAotICAgIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgCi0gICAgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCAKLSAgICA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIAotICAgIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgNzcsIDgwLCA2OSwgMTk2LCA4MywgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDcwLCAxOTgsIDgzLCA4NCwgNjUsIDY4LCA3MywgODUsIDc3LCAxMjgsIDgzLCA4NCwgNjUsIAotICAgIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCAKLSAgICA3OSwgMTI4LCA4MywgODQsIDUwLCAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCAKLSAgICA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIAotICAgIDg5LCAxMjgsIDgzLCA4MywgODUsIDg4LCAxMjgsIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIAotICAgIDgzLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4MywgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgCi0gICAgNzksIDgwLCAxMjgsIDgzLCA4MywgNzksIDc5LCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgCi0gICAgODMsIDgzLCA3MywgODQsIDEyOCwgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIAotICAgIDczLCAxMjgsIDgzLCA4MywgNzIsIDczLCA3OCwgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgCi0gICAgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCi0gICAgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgCi0gICAgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAKLSAgICAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCAKLSAgICA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIAotICAgIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDY5LCA2OCwgCisgICAgNDUsIDc2LCA2OSwgNzEsIDcxLCA2OSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2OSwgMjA1LCA4NCwgNzIsIDgyLCAKKyAgICA2OSwgNjksIDQ1LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4NCwgNzIsIAorICAgIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgODMsIDEyOCwgODQsIDcyLCA3OSwgCisgICAgODUsIDgzLCA2NSwgNzgsIDY4LCAyMTEsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCAKKyAgICA4NSwgODMsIDY1LCA3OCwgMTk2LCA4NCwgNzIsIDc5LCA4NSwgNzEsIDcyLCAyMTIsIDg0LCA3MiwgNzksIDg1LCAxMjgsIAorICAgIDg0LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgMjA2LCA4NCwgNzIsIDc5LCA3OCwgNzEsIDEyOCwgCisgICAgODQsIDcyLCA3OSwgNzcsIDEyOCwgODQsIDcyLCA3OSwgNzQsIDEyOCwgODQsIDcyLCA3OSwgNjUsIDEyOCwgODQsIDcyLCAKKyAgICAyMDcsIDg0LCA3MiwgNzMsIDg1LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA3MywgODQsIDY1LCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDgyLCA4NCwgODksIDQ1LCA4MywgNjksIDY3LCA3OSwgNzgsIDE5NiwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgNDUsIDc5LCAKKyAgICA3OCwgNjksIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCAyMTcsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgMjA2LCA4NCwgNzIsIDczLCA4MiwgNjgsIDgzLCAxMjgsIDg0LCAKKyAgICA3MiwgNzMsIDgyLCA2OCwgMjExLCA4NCwgNzIsIDczLCA4MiwgNjgsIDQ1LCA4MywgODQsIDY1LCA3MSwgMTk3LCA4NCwgNzIsIAorICAgIDczLCA4MiwgNjgsIDEyOCwgODQsIDcyLCA3MywgODIsIDE5NiwgODQsIDcyLCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAorICAgIDIwMCwgODQsIDcyLCA3MywgNjcsIDIwMywgODQsIDcyLCA3MywgNjUsIDY2LCAxMjgsIDg0LCA3MiwgNjksIDg5LCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDg0LCA3MiwgNjksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNjksIDg0LCA2NSwgCisgICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgMTkzLCA4NCwgNzIsIDY5LCA4MywgODAsIDczLCA2NSwgMjA2LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNjksIDc5LCA4MywgMTI4LCA4NCwgNzIsIDY5LCA4MywgNjksIDc5LCAyMTEsIDg0LCA3MiwgNjksIDIxMSwgODQsIAorICAgIDcyLCA2OSwgODIsIDc3LCA3OSwgNzcsIDY5LCA4NCwgNjksIDgyLCAxMjgsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDY4LCAKKyAgICA4OSwgNzgsIDY1LCA3NywgNzMsIDY3LCAxMjgsIDg0LCA3MiwgNjksIDgyLCA2OSwgNzAsIDc5LCA4MiwgNjksIDEyOCwgODQsIAorICAgIDcyLCA2OSwgODIsIDE5NywgODQsIDcyLCA2OSwgMjA2LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgODMsIDc3LCA3OSwgCisgICAgMjExLCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgODQsIDcyLCA2OSwgNzcsIDE5MywgODQsIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgODQsIDcyLCA2OSwgMjAwLCA4NCwgNzIsIDY5LCA2NSwgMTI4LCA4NCwgNzIsIDE5NywgODQsIDcyLCA2NSwgODcsIDEyOCwgCisgICAgODQsIDcyLCA2NSwgNzgsIDg0LCA3MiwgNjUsIDc1LCA3MiwgNjUsIDg0LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODQsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgMjA2LCA4NCwgNzIsIDY1LCA3NywgNjksIDY4LCA3MiwgCisgICAgMTI4LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDQsIDg0LCA3MiwgNjUsIDc0LCAxMjgsIDg0LCA3MiwgCisgICAgNjUsIDIwMSwgODQsIDcyLCA2NSwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCA2NSwgNzgsIDE5MywgODQsIDcyLCAKKyAgICA2NSwgNjUsIDc2LCA4NSwgMTI4LCA4NCwgNzIsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg0LCA2OSwgODgsIDg0LCAxMjgsIAorICAgIDg0LCA2OSwgODgsIDIxMiwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgCisgICAgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCAKKyAgICA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDY5LCA4NCwgODIsIDY1LCA3MCwgNzksIAorICAgIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgODQsIDIwMCwgODQsIDY5LCA4NCwgCisgICAgNjUsIDgyLCA4NCwgNzksIDIxMSwgODQsIDY5LCA4NCwgNjUsIDgyLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODQsIDY5LCA4NCwgMTI4LCA4NCwgNjksIDIxMiwgODQsIDY5LCA4MywgODMsIDY5LCA4MiwgNjUsIDEyOCwgODQsIAorICAgIDY5LCA4MywgODMsIDY5LCA4MiwgMTkzLCA4NCwgNjksIDgzLCA4MywgNjUsIDgyLCA3OSwgMjA2LCA4NCwgNjksIDgzLCAKKyAgICAyMDAsIDg0LCA2OSwgODIsIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDg0LCA2OSwgODAsIDEyOCwgODQsIAorICAgIDY5LCA3OCwgODUsIDg0LCA3OSwgMTI4LCA4NCwgNjksIDc4LCA4NSwgMTI4LCA4NCwgNjksIDc4LCAyMTMsIDg0LCA2OSwgCisgICAgNzgsIDg0LCA3MiwgMTI4LCA4NCwgNjksIDc4LCA4NCwgMTI4LCA4NCwgNjksIDc4LCA4MywgNjksIDEyOCwgODQsIDY5LCAKKyAgICA3OCwgODMsIDE5NywgODQsIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA3OCwgMjExLCA4NCwgNjksIDc4LCA3OCwgNzMsIAorICAgIDIxMSwgODQsIDY5LCA3OCwgNzEsIDE5NywgODQsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgCisgICAgODQsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDIwNiwgODQsIDY5LCA3NywgODAsIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDg1LCAKKyAgICAxMjgsIDg0LCA2OSwgNzYsIDc5LCA4NSwgMjExLCA4NCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODQsIDY5LCA3NiwgNzMsIAorICAgIDgzLCA3MiwgMTkzLCA4NCwgNjksIDc2LCA2OSwgODYsIDczLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCisgICAgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODQsIDY5LCAKKyAgICA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCAxOTcsIDg0LCA2OSwgNzYsIDY5LCA3MywgNjUsIDEyOCwgODQsIDY5LCA3NiwgNjksIAorICAgIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDg0LCA2OSwgNzUsIDEyOCwgODQsIDY5LCA3MywgODcsIDgzLCAxMjgsIDg0LCA2OSwgCisgICAgNzEsIDY5LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDIwMCwgODQsIDY5LCAKKyAgICA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIAorICAgIDc4LCA3MSwgMTI4LCA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgCisgICAgODAsIDc5LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIAorICAgIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgCisgICAgODQsIDY5LCA2NSwgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAKKyAgICAxMjgsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIAorICAgIDY5LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgCisgICAgNzIsIDY5LCAxMjgsIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgCisgICAgMTI4LCA4NCwgNjUsIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCAKKyAgICA2NSwgODcsIDEyOCwgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIAorICAgIDY1LCAyMTQsIDg0LCA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCA4NSwgNzcsIDEyOCwgODQsIDY1LCAyMTMsIAorICAgIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgCisgICAgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgMTI4LCA4NCwgNjUsIDgzLCAxMjgsIDg0LCA2NSwgODIsIDg1LCAKKyAgICA3OCwgNzEsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIAorICAgIDEyOCwgODQsIDY1LCA4MiwgNzEsIDY5LCA4NCwgMTI4LCA4NCwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgCisgICAgMTI4LCA4NCwgNjUsIDgwLCAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgCisgICAgNjksIDE5NiwgODQsIDY1LCA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAKKyAgICA4NCwgMTI4LCA4NCwgNjUsIDc4LCA3MSwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCA3OCwgNjUsIAorICAgIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDg0LCA2NSwgCisgICAgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA4NCwgNjUsIAorICAgIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIDg1LCA4MywgCisgICAgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxODAsIDg0LCA2NSwgCisgICAgNzUsIDEyOCwgODQsIDY1LCA3MywgODMsIDg5LCA3OSwgODUsIDEyOCwgODQsIDY1LCA3MywgNzYsIDc2LCA2OSwgODMsIAorICAgIDIxMSwgODQsIDY1LCA3MywgNzYsIDEyOCwgODQsIDY1LCA3MywgMjA0LCA4NCwgNjUsIDcyLCAxMjgsIDg0LCA2NSwgMjAwLCAKKyAgICA4NCwgNjUsIDcxLCA2NiwgNjUsIDc4LCA4NywgMTkzLCA4NCwgNjUsIDcxLCA2NSwgNzYsIDc5LCAxOTksIDg0LCA2NSwgNzEsIAorICAgIDEyOCwgODQsIDY1LCA2OSwgMjA2LCA4NCwgNjUsIDY3LCA3OSwgMTI4LCA4NCwgNjUsIDY3LCA3NSwgMTI4LCA4NCwgNjUsIAorICAgIDY3LCAyMDMsIDg0LCA2NSwgNjYsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDg0LCA2NSwgNjYsIDg1LCA3NiwgCisgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgODQsIDY1LCA2NiwgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCAKKyAgICA2NSwgNjYsIDc2LCAxOTcsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCA2NSwgNjUsIDgzLCA3MiwgNjUsIAorICAgIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNjUsIDc2LCA4NSwgCisgICAgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgODQsIDY1LCA1MCwgMTI4LCA4NCwgCisgICAgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA2NSwgNDUsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgCisgICAgODQsIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCAKKyAgICA1MCwgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIAorICAgIDEyOCwgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIAorICAgIDQ4LCA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgCisgICAgNDksIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCAKKyAgICA4NCwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIAorICAgIDg0LCA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgCisgICAgNDgsIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCAKKyAgICA1MSwgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIAorICAgIDEyOCwgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgCisgICAgMTI4LCA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgCisgICAgMTI4LCA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgCisgICAgNjUsIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgzLCA4NCwgCisgICAgNjksIDIwNSwgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc1LCA3MywgMTI4LCAKKyAgICA4MywgODksIDgyLCA3NywgNjUsIDEyOCwgODMsIDg5LCA4MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgODMsIDg5LCA4MiwgNzMsIAorICAgIDY1LCAxOTUsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIAorICAgIDgzLCA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgCisgICAgODksIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc5LCA3MSwgODUsIAorICAgIDY5LCAxMjgsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDE5MywgODMsIDg5LCA3OCwgNjUsIDcwLCA3MywgMTI4LCA4MywgCisgICAgODksIDc4LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCAKKyAgICA4MiwgNzMsIDE5NSwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgODMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1MywgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDksIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDEyOCwgODMsIDg5LCAKKyAgICA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU2LCAxMjgsIAorICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAKKyAgICA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAorICAgIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgCisgICAgNzksIDc2LCA0NSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NywgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIAorICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDUwLCAKKyAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUwLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MiwgMTI4LCA4MywgODksIAorICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTAsIDEyOCwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIAorICAgIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNDksIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCAKKyAgICA3NiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDU0LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIAorICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIAorICAgIDIwMSwgODMsIDg5LCAxMjgsIDgzLCA4NywgOTAsIDEyOCwgODMsIDg3LCA4NSwgNzgsIDE5OSwgODMsIDg3LCA3OSwgODIsIAorICAgIDY4LCA4MywgMTI4LCA4MywgODcsIDc5LCA4MiwgNjgsIDEyOCwgODMsIDg3LCA3OSwgNzksIDEyOCwgODMsIDg3LCA3OSwgCisgICAgMTI4LCA4MywgODcsIDczLCA4MiwgMjA0LCA4MywgODcsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCAKKyAgICA3MywgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIDg3LCA3MywgNzMsIDEyOCwgODMsIDg3LCA3MywgMTI4LCA4MywgODcsIAorICAgIDcxLCAxMjgsIDgzLCA4NywgNjksIDY5LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2OSwgMjEyLCA4MywgODcsIDY5LCA2NSwgCisgICAgODQsIDEyOCwgODMsIDg3LCA2OSwgNjUsIDIxMiwgODMsIDg3LCA2NSwgODMsIDIwMCwgODMsIDg3LCA2NSwgODAsIDgwLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNjUsIDY1LCAxMjgsIDgzLCA4NywgMTI4LCA4MywgODYsIDY1LCA4MywgODQsIAorICAgIDIwMSwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgNjUsIDEyOCwgODMsIDg2LCA2NSwgODIsIDczLCA4NCwgMTkzLCA4MywgCisgICAgODUsIDg4LCAxMjgsIDgzLCA4NSwgODUsIDEyOCwgODMsIDg1LCA4NCwgODIsIDE5MywgODMsIDg1LCA4NCwgMTI4LCA4MywgCisgICAgODUsIDgzLCA4MCwgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDgzLCA4NSwgODMsIDcyLCA3MywgMTI4LCA4MywgODUsIDgyLCAKKyAgICA4OSwgNjUsIDEyOCwgODMsIDg1LCA4MiwgODgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCAxOTYsIDgzLCA4NSwgODIsIDcwLCA2OSwgODIsIDEyOCwgODMsIDg1LCA4MiwgCisgICAgNzAsIDY1LCA2NywgMTk3LCA4MywgODUsIDgyLCA2OSwgMTI4LCA4MywgODUsIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA4NSwgODIsIDU3LCAxMjgsIDgzLCA4NSwgODIsIDEyOCwgODMsIDg1LCAyMTAsIDgzLCA4NSwgODAsIDgyLCA2NSwgNzYsIAorICAgIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgODAsIDY5LCA4MiwgODYsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA4MCwgCisgICAgNjksIDgyLCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCAyMTIsIDgzLCA4NSwgODAsIDY5LCAKKyAgICA4MiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzMsIDc3LCA4MCwgNzksIDgzLCA2OSwgCisgICAgMTk2LCA4MywgODUsIDgwLCA2OSwgODIsIDcwLCA3MywgODgsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCAyMTAsIDgzLCAKKyAgICA4NSwgODAsIDEyOCwgODMsIDg1LCA3OSwgODgsIDEyOCwgODMsIDg1LCA3OSwgODAsIDEyOCwgODMsIDg1LCA3OSwgMTI4LCAKKyAgICA4MywgODUsIDc4LCA4MywgNjksIDIxMiwgODMsIDg1LCA3OCwgODIsIDczLCA4MywgNjksIDEyOCwgODMsIDg1LCA3OCwgODIsIAorICAgIDczLCA4MywgMTk3LCA4MywgODUsIDc4LCA3MSwgNzYsIDY1LCA4MywgODMsIDY5LCA4MywgMTI4LCA4MywgODUsIDc4LCA3MSwgCisgICAgMTI4LCA4MywgODUsIDc4LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCAKKyAgICA4MywgMTk3LCA4MywgODUsIDc4LCAxMjgsIDgzLCA4NSwgMjA2LCA4MywgODUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCAKKyAgICA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDgzLCA4NSwgNzcsIDY1LCA4MywgNzIsIDEyOCwgODMsIDg1LCA3NywgMTI4LCA4MywgODUsIDc2LCA3MCwgODUsIDgyLCAKKyAgICAxMjgsIDgzLCA4NSwgNzUsIDg1LCA3OCwgMTI4LCA4MywgODUsIDc1LCA4NSwgMjA2LCA4MywgODUsIDc1LCA4NSwgMTI4LCAKKyAgICA4MywgODUsIDc1LCAyMTMsIDgzLCA4NSwgNzMsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4MywgODUsIDczLCA4NCwgCisgICAgMTI4LCA4MywgODUsIDczLCAyMTIsIDgzLCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA4MywgODUsIDY5LCAxMjgsIDgzLCA4NSwgCisgICAgNjgsIDUwLCAxMjgsIDgzLCA4NSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODUsIDY3LCAKKyAgICA3NSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgNjcsIDIwMywgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDgzLCAxMjgsIAorICAgIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAyMTEsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCAxMjgsIDgzLCA4NSwgCisgICAgNjcsIDY3LCA2OSwgNjksIDE5NiwgODMsIDg1LCA2NiwgODUsIDc4LCA3MywgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCAKKyAgICA3MywgODQsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDY5LCAxMjgsIAorICAgIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDE5NywgODMsIDg1LCA2NiwgODMsIDY5LCA4NCwgMTI4LCA4MywgCisgICAgODUsIDY2LCA4MywgNjksIDIxMiwgODMsIDg1LCA2NiwgODMsIDY3LCA4MiwgNzMsIDgwLCAyMTIsIDgzLCA4NSwgNjYsIDgwLCAKKyAgICA4NSwgNzgsIDY3LCA4NCwgNzMsIDgzLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIAorICAgIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAKKyAgICA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgMTk3LCA4MywgCisgICAgODUsIDY2LCA3NCwgNzksIDczLCA3OCwgNjksIDE5NiwgODMsIDg1LCA2NiwgNzQsIDY5LCA2NywgODQsIDEyOCwgODMsIDg1LCAKKyAgICA2NiwgNzMsIDg0LCA3OSwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgODAsIDEyOCwgODMsIDg1LCA2NiwgNzEsIAorICAgIDgyLCA3OSwgODUsIDIwOCwgODMsIDg1LCA2NiwgMTI4LCA4MywgODUsIDY1LCA3NywgMTI4LCA4MywgODUsIDY1LCA2OSwgCisgICAgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA4NSwgNjUsIDY2LCAKKyAgICAxMjgsIDgzLCA4NSwgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4OCwgMTI4LCA4MywgODQsIDg3LCA2NSwgMTI4LCA4MywgCisgICAgODQsIDg1LCA3MCwgNzAsIDY5LCAxOTYsIDgzLCA4NCwgODUsIDY4LCA4OSwgMTI4LCA4MywgODQsIDg1LCA2OCwgNzMsIAorICAgIDIwNywgODMsIDg0LCA4NSwgNjcsIDc1LCA0NSwgNzksIDg1LCAyMTIsIDgzLCA4NCwgODMsIDEyOCwgODMsIDg0LCA4MiwgCisgICAgNzksIDc4LCAxOTksIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDgzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDIxMSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU3LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NiwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTUsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU0LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTIsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUxLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MCwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgCisgICAgMTk3LCA4MywgODQsIDgyLCA3MywgODAsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCAKKyAgICA4MiwgNzMsIDc4LCAxOTksIDgzLCA4NCwgODIsIDczLCA3NSwgNjksIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDczLCA3NSwgMTk3LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgCisgICAgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA4MywgODQsIDgyLCA2OSwgODQsIDY3LCAKKyAgICA3MiwgMTI4LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCAKKyAgICA4OSwgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIAorICAgIDc3LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgCisgICAgODMsIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIAorICAgIDY5LCA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgCisgICAgNzEsIDcyLCAyMTIsIDgzLCA4NCwgODIsIDY1LCA3MywgNzAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDcxLCA3MSwgNzMsIDgzLCAKKyAgICA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgODQsIDc5LCA4NiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODIsIDY5LCAxMjgsIAorICAgIDgzLCA4NCwgNzksIDgwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA4NCwgNzksIDgwLCA4MCwgNjUsIDcxLCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MCwgMTI4LCA4MywgODQsIAorICAgIDc5LCAyMDgsIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA4MywgODQsIDc5LCA2NywgNzUsIDEyOCwgODMsIDg0LCA3OSwgCisgICAgNjcsIDIwMywgODMsIDg0LCA3MywgODIsIDgyLCA4NSwgMjA4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCAKKyAgICA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIAorICAgIDg0LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg0LCA3MywgNjcsIDIwMywgODMsIDg0LCA2OSwgODIsIDY5LCA3OSwgCisgICAgMTI4LCA4MywgODQsIDY5LCA4MCwgMTI4LCA4MywgODQsIDY5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIAorICAgIDE5NSwgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgCisgICAgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCAKKyAgICA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIAorICAgIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIAorICAgIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgCisgICAgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCAKKyAgICA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIAorICAgIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzcsIDgwLCA2OSwgMTk2LCA4MywgCisgICAgODQsIDY1LCA3NiwgNzYsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDcwLCAxMjgsIDgzLCA4NCwgNjUsIDcwLCAKKyAgICAxOTgsIDgzLCA4NCwgNjUsIDY4LCA3MywgODUsIDc3LCAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgCisgICAgMTI4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzMsIDgzLCA4MywgNzMsIDc3LCA3OSwgMTI4LCA4MywgODQsIDUwLCAKKyAgICAxMjgsIDgzLCA4MywgODksIDg4LCAxMjgsIDgzLCA4MywgODksIDg0LCAxMjgsIDgzLCA4MywgODksIDgyLCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDg5LCA4MiwgMTI4LCA4MywgODMsIDg5LCA4MCwgMTI4LCA4MywgODMsIDg5LCAxMjgsIDgzLCA4MywgODUsIAorICAgIDg4LCAxMjgsIDgzLCA4MywgODUsIDg1LCAxMjgsIDgzLCA4MywgODUsIDg0LCAxMjgsIDgzLCA4MywgODUsIDgwLCAxMjgsIAorICAgIDgzLCA4MywgNzksIDg4LCAxMjgsIDgzLCA4MywgNzksIDg0LCAxMjgsIDgzLCA4MywgNzksIDgwLCAxMjgsIDgzLCA4MywgCisgICAgNzksIDc5LCAxMjgsIDgzLCA4MywgNzksIDEyOCwgODMsIDgzLCA3MywgODgsIDEyOCwgODMsIDgzLCA3MywgODQsIDEyOCwgCisgICAgODMsIDgzLCA3MywgODAsIDEyOCwgODMsIDgzLCA3MywgNzMsIDEyOCwgODMsIDgzLCA3MywgNjksIDg4LCAxMjgsIDgzLCAKKyAgICA4MywgNzMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgMTI4LCA4MywgODMsIDczLCAxMjgsIDgzLCA4MywgNzIsIAorICAgIDczLCA3OCwgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgCisgICAgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgCisgICAgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCAKKyAgICA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgCisgICAgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIAorICAgIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgCisgICAgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgCisgICAgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIAorICAgIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAKKyAgICAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgCisgICAgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCAKKyAgICA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDczLCA2OCwgMTI4LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCA2OSwgNjgsIAogICAgIDEyOCwgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgMTk3LCA4MywgODEsIDg1LCA2NSwgMjEyLCA4MywgODEsIDg1LCA2NSwgCiAgICAgODIsIDY5LCA4MywgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCA2OCwgMTI4LCA4MywgODEsIDg1LCA2NSwgODIsIDY5LCAKICAgICAxMjgsIDgzLCA4MCwgODksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCAKQEAgLTk2OSw3NyArOTc2LDc5IEBACiAgICAgNjUsIDc4LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA3NywgNjUsIDIwNiwgODMsIDc4LCA3OSwgODcsIDcwLCA3NiwgNjUsIDc1LCAKICAgICA2OSwgMTI4LCA4MywgNzgsIDc5LCA4NywgNjYsIDc5LCA2NSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc4LCA3OSwgODcsIAogICAgIDEyOCwgODMsIDc4LCA3OSwgMjE1LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIAotICAgIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgCi0gICAgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA3NywgNzMsIDc2LCAxOTcsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgCi0gICAgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCAKLSAgICA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDg3LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIAotICAgIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgCi0gICAgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3OSwgNjUsIDIwNiwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3NiwgNzMsIDcxLCA3MiwgODQsIDc2LCAyMTcsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIAotICAgIDY4LCA2OSwgODIsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgCi0gICAgNjksIDg1LCA4NCwgMjAwLCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIAotICAgIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgCi0gICAgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCAKLSAgICA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIAotICAgIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgCi0gICAgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAKLSAgICAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgOTAsIDE5NywgODMsIDczLCA4OCwgODQsIDg5LCAKLSAgICA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIDczLCA4OCwgCi0gICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIAotICAgIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCAKLSAgICAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgNzEsIAotICAgIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDczLCAKLSAgICA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIAotICAgIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCAKLSAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCA3MywgCi0gICAgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCA3OSwgMjExLCA4MywgNzMsIDc4LCA4NSwgODMsIDc5LCA3MywgMTk2LCAKLSAgICA4MywgNzMsIDc4LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNzMsIDc4LCA3NSwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTEsIDEyOCwgODMsIDczLCAKLSAgICA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgCi0gICAgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCAKLSAgICAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNjgsIAotICAgIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgODUsIDgzLCAKLSAgICAxMjgsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgMjExLCA4MywgNzMsIDc3LCA4MCwgNzYsIAotICAgIDczLCA3MCwgNzMsIDY5LCAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIDczLCA3NiwgCi0gICAgNjUsIDIxMCwgODMsIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgNzgsIDcxLCAKLSAgICA4NSwgMjA2LCA4MywgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCA3MywgNzYsIAotICAgIDc1LCAxMjgsIDgzLCA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgCi0gICAgNjksIDEyOCwgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgNTEsIAotICAgIDEyOCwgODMsIDczLCA3NSwgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgNzMsIAotICAgIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCA3MywgCi0gICAgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCA4MywgCi0gICAgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY4LCA2OSwgMTI4LCAKLSAgICA4MywgNzMsIDY4LCAxOTcsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDc3LCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3OCwgNjksIAotICAgIDgzLCA4MywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgNjYsIDE5NywgODMsIDczLCA2NSwgCi0gICAgMTI4LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgCi0gICAgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCAxOTcsIDgzLCA3MiwgODcsIDY1LCA2NSwgCi0gICAgMTI4LCA4MywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NSwgMTI4LCA4MywgCi0gICAgNzIsIDg1LCA4NCwgODQsIDc2LCA2OSwgNjcsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIAotICAgIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgCi0gICAgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzYsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCAKLSAgICA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIAotICAgIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIAotICAgIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgCi0gICAgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzMsIAotICAgIDEyOCwgODMsIDcyLCA4MiwgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgODMsIAotICAgIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCA3MiwgCi0gICAgNzksIDg1LCA3NiwgNjgsIDY5LCAyMTAsIDgzLCA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIAorICAgIDc4LCA2OSwgNjksIDkwLCA3MywgNzgsIDE5OSwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgCisgICAgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCAKKyAgICA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIAorICAgIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNzMsIDc2LCAxOTcsIDgzLCA3NywgNjksIDY1LCA4MiwgCisgICAgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIAorICAgIDg3LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIAorICAgIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3OSwgNjUsIDIwNiwgCisgICAgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDcxLCA3MiwgODQsIDc2LCAyMTcsIDgzLCA3NiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgODMsIDc2LCA3MywgNjcsIDY5LCAxMjgsIAorICAgIDgzLCA3NiwgNzMsIDY3LCAxOTcsIDgzLCA3NiwgNjksIDg1LCA4NCwgMjAwLCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgCisgICAgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2OSwgNjksIDIwOCwgODMsIDc2LCA2NSwgODYsIDc5LCAKKyAgICA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIAorICAgIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgCisgICAgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCAKKyAgICA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCAKKyAgICA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIAorICAgIDY5LCAxMjgsIDgzLCA3MywgOTAsIDE5NywgODMsIDczLCA4OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDg0LCAKKyAgICAyMDAsIDgzLCA3MywgODgsIDg0LCA4OSwgMTI4LCA4MywgNzMsIDg4LCA4NCwgMjE3LCA4MywgNzMsIDg4LCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCA3MiwgMjExLCA4MywgNzMsIDg4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgCisgICAgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCAKKyAgICA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIAorICAgIDczLCA4OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNzMsIDg4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgCisgICAgNzMsIDg4LCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA3MywgODgsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIAorICAgIDIwNSwgODMsIDczLCA4OCwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCAyMTYsIDgzLCA3MywgODQsIDY5LCAxMjgsIAorICAgIDgzLCA3MywgODMsIDY1LCAxMjgsIDgzLCA3MywgODIsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCisgICAgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDY1LCAKKyAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzIsIDczLCAKKyAgICA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA3MywgNzksIDgzLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDczLCA2OSwgCisgICAgODUsIDY3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgMjExLCA4MywgNzMsIDc4LCA4NSwgODMsIDc5LCA3MywgMTk2LCA4MywgNzMsIDc4LCA3OSwgNzYsIDc5LCA3MSwgNzMsIAorICAgIDY3LCA2NSwgMjA0LCA4MywgNzMsIDc4LCA3OCwgODksIDczLCA3MywgODksIDcyLCA2OSwgMTI4LCA4MywgNzMsIDc4LCA3NSwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTEsIAorICAgIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUwLCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCAxOTcsIDgzLCA3MywgNzgsIDcxLCA2NSwgNjUsIDg0LCAxMjgsIDgzLCA3MywgNzgsIDE5NywgODMsIAorICAgIDczLCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA3MywgMjA2LCA4MywgNzMsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDY5LCA3OSwgCisgICAgODUsIDgzLCAxMjgsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgMjExLCA4MywgNzMsIDc3LCAKKyAgICA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDgzLCA3MywgNzcsIDczLCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA3MywgNzcsIAorICAgIDczLCA3NiwgNjUsIDIxMCwgODMsIDczLCA3NywgNjUsIDc4LCA4MywgNzMsIDIxMSwgODMsIDczLCA3NywgNjUsIDc2LCA4NSwgCisgICAgNzgsIDcxLCA4NSwgMjA2LCA4MywgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDc2LCA4NiwgNjksIDgyLCAxMjgsIDgzLCAKKyAgICA3MywgNzYsIDc1LCAxMjgsIDgzLCA3MywgNzYsIDczLCA4MSwgODUsIDE5MywgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIAorICAgIDg0LCA4NCwgNjksIDEyOCwgODMsIDczLCA3NiwgNzIsIDc5LCA4NSwgNjksIDg0LCA4NCwgMTk3LCA4MywgNzMsIDc2LCA2NSwgCisgICAgNTEsIDEyOCwgODMsIDczLCA3NSwgNzMsIDEyOCwgODMsIDczLCA3NSwgNTAsIDEyOCwgODMsIDczLCA3NSwgMTc4LCA4MywgCisgICAgNzMsIDcxLCA3OCwgODMsIDEyOCwgODMsIDczLCA3MSwgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzEsIDc3LCAxOTMsIDgzLCAKKyAgICA3MywgNzEsIDY5LCAyMDQsIDgzLCA3MywgNzEsIDUyLCAxMjgsIDgzLCA3MywgNzEsIDE4MCwgODMsIDczLCA3MSwgMTI4LCAKKyAgICA4MywgNzMsIDY5LCA2OSwgMTI4LCA4MywgNzMsIDY4LCA2OSwgODcsIDY1LCA4OSwgMjExLCA4MywgNzMsIDY4LCA2OSwgCisgICAgMTI4LCA4MywgNzMsIDY4LCAxOTcsIDgzLCA3MywgNjgsIDY4LCA3MiwgNzMsIDEyOCwgODMsIDczLCA2OCwgNjgsIDcyLCAKKyAgICA2NSwgNzcsIDEyOCwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIAorICAgIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgNzMsIDY1LCAxMjgsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIDgzLCAKKyAgICA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgNzIsIAorICAgIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAxMjgsIAorICAgIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIDEyOCwgCisgICAgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIDgzLCAKKyAgICA3MiwgODcsIDE5NywgODMsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODYsIAorICAgIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDg0LCA3NiwgCisgICAgNjksIDY3LCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDgzLCA3MiwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCAxMjgsIDgzLCA3MiwgODUsIDc3LCAxMjgsIDgzLCA3MiwgCisgICAgODUsIDc2LCAxMjgsIDgzLCA3MiwgODUsIDcwLCA3MCwgNzYsIDE5NywgODMsIDcyLCA4NSwgNjksIDgxLCAxMjgsIDgzLCAKKyAgICA3MiwgODUsIDY5LCA3OCwgODMsIDcyLCA4NSwgNjksIDg0LCAxMjgsIDgzLCA3MiwgODUsIDY2LCA4NSwgODIsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgNTAsIDEyOCwgODMsIDcyLCA4NSwgMTc4LCA4MywgNzIsIDg1LCAxMjgsIDgzLCA3MiwgMjEzLCA4MywgNzIsIAorICAgIDg0LCA2NSwgODAsIDczLCA2NywgMTI4LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDgyLCA4NSwgNzEsIDEyOCwgCisgICAgODMsIDcyLCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAxMjgsIDgzLCA3MiwgODIsIDczLCAKKyAgICA3MywgMTI4LCA4MywgNzIsIDgyLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIAorICAgIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDIxMCwgODMsIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgCiAgICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgODMsIDcyLCA3OSwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTYsIDgzLCAKICAgICA3MiwgNzksIDgyLCA4NCwgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCA2OSwgCiAgICAgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCAKQEAgLTEwNzcsNTQzICsxMDg2LDU0OCBAQAogICAgIDEyOCwgODMsIDcyLCA2NSwgODgsIDEyOCwgODMsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MywgCiAgICAgNzIsIDY1LCA4NiwgNzMsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDg2LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA4NSwgMTI4LCAKICAgICA4MywgNzIsIDY1LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgODUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIxMywgODMsIAotICAgIDcyLCA2NSwgODIsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMDgsIDgzLCA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA4MiwgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgMTk3LCA4MywgNzIsIDY1LCA4MCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgODMsIDcyLCA2NSwgMjA2LCA4MywgCi0gICAgNzIsIDY1LCA3NywgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCA3MiwgNjksIDc2LCA2OSwgODQsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNzUsIDg0LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MywgCi0gICAgNzIsIDY1LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNjUsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDczLCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDcwLCA4NCwgMTI4LCA4MywgNzIsIDY1LCA3MCwgMjEyLCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgCi0gICAgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCAKLSAgICA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIAotICAgIDgzLCA3MiwgNjUsIDE4MiwgODMsIDcyLCA2NSwgNTEsIDEyOCwgODMsIDcyLCA2NSwgMTc5LCA4MywgNzEsIDgyLCAxOTMsIAotICAgIDgzLCA3MSwgNzksIDIxMCwgODMsIDcxLCA2NywgMTI4LCA4MywgNzEsIDY1LCAyMTUsIDgzLCA3MSwgNjUsIDE5NCwgODMsIAotICAgIDcxLCAxMjgsIDgzLCA2OSwgODksIDc1LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA4NSwgNzYsIDE5MywgODMsIDY5LCA4OCwgCi0gICAgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA4OCwgODQsIDY1LCA3OCwgMjExLCA4MywgNjksIDg2LCA2OSwgODIsIDY1LCAKLSAgICA3OCwgNjcsIDY5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIAotICAgIDIxNywgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCAKLSAgICA3MywgODIsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgMjA2LCA4MywgNjksIDg1LCA4OCwgMTI4LCA4MywgNjksIAotICAgIDg1LCA3OCwgODksIDY1LCA3NywgMTI4LCA4MywgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA2OSwgODQsIDcwLCA3OSwgCi0gICAgNzgsIDEyOCwgODMsIDY5LCA4MywgODQsIDY5LCA4MiwgODQsIDczLCA4NSwgMjExLCA4MywgNjksIDgzLCA4MSwgODUsIDczLCAKLSAgICA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA4NCwgNjksIDEyOCwgODMsIDY5LCA4MywgNjUsIDc3LCAxOTcsIDgzLCA2OSwgODIsIAotICAgIDg2LCA3MywgNjcsIDE5NywgODMsIDY5LCA4MiwgNzMsIDcwLCA4MywgMTI4LCA4MywgNjksIDgyLCA3MywgNzAsIDIxMSwgCi0gICAgODMsIDY5LCA4MiwgNzMsIDcwLCAxMjgsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDgzLCAKLSAgICA2OSwgODEsIDg1LCA2OSwgNzgsIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA4NSwgODAsIDc2LCAxOTcsIDgzLCA2OSwgODAsIAotICAgIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgCi0gICAgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCAKLSAgICA3MywgMTI4LCA4MywgNjksIDc3LCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgCi0gICAgMTI4LCA4MywgNjksIDc3LCA3NSwgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCAKLSAgICA3NywgNzMsIDgzLCA3OSwgNzAsIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIAotICAgIDgzLCA2OSwgNzcsIDczLCA3NywgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCAKLSAgICA2NywgMjEyLCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIAotICAgIDc2LCA3OSwgMjA2LCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgCi0gICAgNzMsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA0NSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgCi0gICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKLSAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIAotICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKLSAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIDgzLCA2OSwgCi0gICAgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgNjksIDcxLCAKLSAgICA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA4NiwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIAotICAgIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCAKLSAgICA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIAotICAgIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY3LCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIAotICAgIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgCi0gICAgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCAKLSAgICA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA3OSwgNzgsIDEyOCwgODMsIAotICAgIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAKLSAgICAxMjgsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIAotICAgIDY5LCA2OCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAKLSAgICAyMDQsIDgzLCA2NywgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIAotICAgIDY5LCA4MCwgODQsIDY5LCAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgCi0gICAgNzgsIDY4LCA3MywgNjcsIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCAKLSAgICA4MywgNjYsIDg1LCAxOTQsIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MywgNjUsIDg5LCAxMjgsIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDEyOCwgODMsIDY1LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCAKLSAgICA4MywgNjUsIDg3LCAxMjgsIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA4MiwgNjUsIAotICAgIDgzLCA3MiwgODQsIDgyLCAxOTMsIDgzLCA2NSwgODUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDg0LCA4NSwgODIsIDc4LCAKLSAgICAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIAotICAgIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgNjksIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgCi0gICAgNzMsIDg0LCAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAxMjgsIDgzLCA2NSwgODQsIDY1LCA3OCwgNzEsIDY1LCAKLSAgICAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCAKLSAgICA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCAKLSAgICA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIAotICAgIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgCi0gICAgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDcyLCAyMDEsIDgzLCA2NSwgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCAKLSAgICA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgODMsIDY1LCA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIAotICAgIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAKLSAgICAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIAotICAgIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAKLSAgICAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIAotICAgIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCAKLSAgICA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIAotICAgIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgNzksIDg0LCAKLSAgICAxMjgsIDgzLCA2NSwgNzUsIDcyLCAxOTMsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgNzUsIAotICAgIDE5NywgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIDEyOCwgCi0gICAgODMsIDY1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgMTI4LCAKLSAgICA4MywgNjUsIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIDEyOCwgODMsIAotICAgIDY1LCA3MSwgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNzAsIDY5LCA4NCwgCi0gICAgMjE3LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgCi0gICAgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIAotICAgIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIDQ1LCA1MCwgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgCi0gICAgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCAKLSAgICA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCAKLSAgICA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIAotICAgIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgCi0gICAgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgCi0gICAgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIAotICAgIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgCi0gICAgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgCi0gICAgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCAKLSAgICA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgCi0gICAgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgCi0gICAgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgCi0gICAgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIDgyLCA4NywgCi0gICAgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgMTI4LCA4MiwgCi0gICAgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgODcsIDY1LCAKLSAgICAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCA4NSwgMTI4LCAKLSAgICA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIAotICAgIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgCi0gICAgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCAKLSAgICA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgODIsIDg1LCA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCAKLSAgICA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIAotICAgIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIDEyOCwgODIsIDg1LCA3NiwgNjUsIDczLCAxMjgsIDgyLCA4NSwgCi0gICAgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgMTI4LCA4MiwgODUsIDcxLCA2NiwgMjE3LCAKLSAgICA4MiwgODUsIDY4LCA3MywgNzcsIDY5LCA3OCwgODQsIDE5MywgODIsIDg1LCA2NiwgNzYsIDE5NywgODIsIDg1LCAxOTQsIAotICAgIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgCi0gICAgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgODIsIDY1LCAxMjgsIDgyLCA4MiwgNzksIDg4LCAKLSAgICAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDc5LCAxMjgsIDgyLCAKLSAgICA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgMTI4LCA4MiwgODIsIDY5LCA4OCwgMTI4LCAKLSAgICA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgODIsIDY5LCA3MiwgMTI4LCA4MiwgODIsIAotICAgIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgODIsIDgyLCA2NSwgODgsIDEyOCwgODIsIAotICAgIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDc5LCA4NywgCi0gICAgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCAKLSAgICA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCA2OCwgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA4NywgNjUsIDc2LCAKLSAgICA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgNzAsIDc2LCA3OSwgCi0gICAgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDc5LCAKLSAgICA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgCi0gICAgMTI4LCA4MiwgNzksIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCAKLSAgICA4NCwgMTI4LCA4MiwgNzksIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIAotICAgIDc5LCA3MCwgMTI4LCA4MiwgNzksIDc3LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA4MiwgNzksIDc3LCA2NSwgMjA2LCA4MiwgCi0gICAgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCAKLSAgICA3OSwgNzYsIDc2LCA2OSwgNjgsIDQ1LCA4NSwgMjA4LCA4MiwgNzksIDcyLCA3MywgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIAotICAgIDcxLCAxMjgsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgyLCA3OSwgNjcsIDIwMywgODIsIAotICAgIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA3OSwgMjEyLCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgCi0gICAgODMsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCAKLSAgICA3OCwgMTk5LCA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCAKLSAgICA4MiwgNzcsIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgMTI4LCA4MiwgNzYsIDczLCAxMjgsIDgyLCAKLSAgICA3NiwgNjksIDEyOCwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgCi0gICAgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDgwLCA3NiwgMTk3LCA4MiwgNzMsIDgwLCAxMjgsIDgyLCAKLSAgICA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgODIsIDczLCA3OCwgNzAsIDc5LCA4MiwgOTAsIAotICAgIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIDY1LCAxMjgsIDgyLCA3MywgCi0gICAgNzcsIDEyOCwgODIsIDczLCA3NSwgODIsIDczLCA3NSwgMTI4LCA4MiwgNzMsIDcxLCA4NiwgNjksIDY4LCA3MywgMTk1LCAKLSAgICA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIDcxLCA3MiwgODQsIDcyLCA2NSwgCi0gICAgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgCi0gICAgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3NiwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCAKLSAgICA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcwLCA2NSwgCi0gICAgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCAKLSAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgCi0gICAgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgCi0gICAgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIAotICAgIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKLSAgICA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAotICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgCi0gICAgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIAotICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCAKLSAgICA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIAotICAgIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY2LCA2NiwgCi0gICAgNzksIDIwNiwgODIsIDczLCA2NSwgMjA0LCA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCA3OSwgMTI4LCA4MiwgCi0gICAgNzIsIDIwNywgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzIsIDEyOCwgODIsIDcxLCA4OSwgNzMsIDc4LCA3MSwgODMsIDEyOCwgCi0gICAgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIDY5LCA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAKLSAgICAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODYsIDc3LCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgODMsIDY3LCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIAotICAgIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgCi0gICAgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCAKLSAgICA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIAotICAgIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgCi0gICAgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCAKLSAgICA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIAotICAgIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgCi0gICAgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCAKLSAgICA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIAotICAgIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgCi0gICAgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCAKLSAgICA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIAotICAgIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgNzcsIDczLCA3OCwgNjgsIDY5LCAyMTAsIAotICAgIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgCi0gICAgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCAKLSAgICA4OCwgNjksIDY4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgCi0gICAgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDczLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIAotICAgIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgCi0gICAgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIAotICAgIDIxMSwgODIsIDY5LCA3MSwgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgNjksIDcxLCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA4MiwgNjksIDcxLCA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA3MywgNjUsIDEyOCwgODIsIDY5LCAKLSAgICA3MCwgNzksIDgyLCA3NywgNjksIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDgyLCA2OSwgNjgsIAotICAgIDg1LCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDczLCAKLSAgICA3OCwgMTk5LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCA4NCwgNzMsIDc2LCA3MywgNzgsIAotICAgIDY5LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgCi0gICAgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCA4MiwgNjksIDY3LCAKLSAgICA4MiwgNjksIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNzMsIDc4LCAxOTksIAotICAgIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCAxMjgsIDgyLCA2OSwgCi0gICAgNjcsIDc5LCA4MiwgMTk2LCA4MiwgNjksIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCAKLSAgICA4MCwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNjksIAotICAgIDczLCA4NiwgNjksIDIxMCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDY1LCA3NiwgCi0gICAgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgMTI4LCA4MiwgNjksIDY1LCA2NywgNzIsIAotICAgIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgODMsIDE5MywgODIsIDY1LCA4OSwgODMsIAotICAgIDEyOCwgODIsIDY1LCA4OSwgMjExLCA4MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDEyOCwgODIsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDcyLCAxOTMsIDgyLCA2NSwgODQsIDY1LCAKLSAgICAxMjgsIDgyLCA2NSwgODQsIDEyOCwgODIsIDY1LCA4MywgODcsIDY1LCA2OCwgNzMsIDEyOCwgODIsIDY1LCA4MywgNzksIAotICAgIDg1LCAyMDQsIDgyLCA2NSwgODMsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDgxLCAxMjgsIDgyLCA2NSwgODAsIDczLCA4MywgCi0gICAgNzcsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDEyOCwgCi0gICAgODIsIDY1LCA3NywgMjExLCA4MiwgNjUsIDc3LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAKLSAgICAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIDY1LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIAotICAgIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgODMsIDY5LCAxOTYsIDgyLCA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAKLSAgICAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDIxNywgODIsIAotICAgIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIDIwNywgODIsIDY1LCA3MywgNjgsIDY1LCAxMjgsIDgyLCA2NSwgCi0gICAgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzIsIDEyOCwgODIsIDY1LCA3MCwgNjksIAotICAgIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCA2OCwgNzMsIDc5LCA2NSwgNjcsIDg0LCA3MywgODYsIDE5NywgCi0gICAgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIDczLCAyMDcsIDgyLCA2NSwgNjgsIDIwMSwgODIsIDY1LCAKLSAgICA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIDg1LCA2OSwgMjEyLCA4MiwgNjUsIDY3LCA3MywgNzgsIAotICAgIDcxLCAxMjgsIDgyLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDg0LCAxMjgsIDgyLCA2NSwgCi0gICAgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgCi0gICAgODIsIDY1LCA1MCwgMTI4LCA4MiwgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCA1MCwgMTI4LCA4MiwgNDgsIAotICAgIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCA4MiwgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgNTEsIDEyOCwgODIsIDQ4LCAKLSAgICA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDgyLCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIDUyLCAxMjgsIDgyLCA0OCwgCi0gICAgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDEyOCwgODIsIDQ4LCAKLSAgICA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAxMjgsIDgyLCA0NSwgNjcsIAotICAgIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCA4NCwgMTI4LCA4MSwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCA3OSwgMTI4LCA4MSwgODksIAotICAgIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCA2NSwgNjUsIDEyOCwgODEsIAotICAgIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCA2OSwgMTI4LCA4MSwgODcsIAotICAgIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCA4OCwgMTI4LCA4MSwgODUsIAotICAgIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCA4NCwgMTI4LCA4MSwgODUsIAotICAgIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIDgxLCA4NSwgODIsIDEyOCwgCi0gICAgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgMTk3LCA4MSwgODUsIDc5LCAKLSAgICA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCA3OSwgODAsIDEyOCwgODEsIAotICAgIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIDgzLCA4MywgNjksIDc4LCA2NywgCi0gICAgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAxOTMsIDgxLCA4NSwgNzMsIDc4LCAKLSAgICA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgODEsIDg1LCA3MywgNzYsIAotICAgIDIxMiwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIAotICAgIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAKLSAgICAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgODUsIDgwLCA3NiwgMTk3LCA4MSwgCi0gICAgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDIxMiwgODEsIDg1LCAKLSAgICA2NSwgNjgsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgODUsIDY1LCAxOTYsIAotICAgIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIDc5LCA4NCwgMTI4LCAKLSAgICA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIDgxLCA3OSwgNzksIAotICAgIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIDEyOCwgODEsIDc5LCAKLSAgICAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCA4MSwgNzMsIDg0LCAKLSAgICAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCAKLSAgICA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgODAsIDcyLCAxMjgsIAotICAgIDgxLCA3MiwgNzksIDEyOCwgODEsIDcyLCA3MywgMTI4LCA4MSwgNzIsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDY5LCAxMjgsIAotICAgIDgxLCA3MiwgNjUsIDg1LCAxMjgsIDgxLCA3MiwgNjUsIDY1LCAxMjgsIDgxLCA3MiwgNjUsIDEyOCwgODEsIDcxLCA2NSwgCi0gICAgMTI4LCA4MSwgNjksIDg0LCA2NSwgNzgsIDY1LCAxMjgsIDgxLCA2OSwgNjksIDEyOCwgODEsIDY5LCAxMjgsIDgxLCA2NSwgCi0gICAgODksIDEyOCwgODEsIDY1LCA4NSwgMTI4LCA4MSwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgODEsIDY1LCA4MiwgNzgsIDY5LCAKLSAgICAyMTcsIDgxLCA2NSwgODIsIDEyOCwgODEsIDY1LCA4MSwgMTI4LCA4MSwgNjUsIDgwLCA3MiwgMTI4LCA4MSwgNjUsIDc3LCAKLSAgICA2NSwgODQsIDgzLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgMjExLCA4MSwgNjUsIDc2LCAxOTMsIDgxLCA2NSwgNzMsIAotICAgIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgNzAsIDEyOCwgODEsIDY1LCAxOTgsIAotICAgIDgxLCA2NSwgNjgsIDc3LCA2NSwgMTI4LCA4MSwgNjUsIDY1LCA3MywgMTI4LCA4MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCi0gICAgODEsIDY1LCA2NSwgNzAsIDEyOCwgODEsIDQ4LCA0OCwgNTUsIDEyOCwgODEsIDQ4LCA0OCwgNTQsIDEyOCwgODEsIDQ4LCAKLSAgICA0OCwgNTMsIDEyOCwgODEsIDQ4LCA0OCwgNTIsIDEyOCwgODEsIDQ4LCA0OCwgNTEsIDEyOCwgODEsIDQ4LCA0OCwgNTAsIAotICAgIDEyOCwgODEsIDQ4LCA0OCwgNDksIDEyOCwgODAsIDkwLCAxMjgsIDgwLCA4OSwgODgsIDEyOCwgODAsIDg5LCA4NCwgMTI4LCAKLSAgICA4MCwgODksIDgyLCA4OCwgMTI4LCA4MCwgODksIDgyLCAxMjgsIDgwLCA4OSwgODAsIDEyOCwgODAsIDg3LCA3OSwgODksIAotICAgIDEyOCwgODAsIDg3LCA3OSwgNzksIDEyOCwgODAsIDg3LCA3OSwgMTI4LCA4MCwgODcsIDIwNywgODAsIDg3LCA3MywgNzMsIAotICAgIDEyOCwgODAsIDg3LCA3MywgMTI4LCA4MCwgODcsIDY5LCA2OSwgMTI4LCA4MCwgODcsIDY5LCAxMjgsIDgwLCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDgwLCA4NywgMTI4LCA4MCwgODYsIDEyOCwgODAsIDg1LCA4OCwgMTI4LCA4MCwgODUsIDg1LCA4NCwgMTI4LCAKLSAgICA4MCwgODUsIDg1LCAxMjgsIDgwLCA4NSwgODQsIDgyLCA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAotICAgIDg1LCA4NCwgMTI4LCA4MCwgODUsIDIxMiwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgCi0gICAgNzIsIDgwLCA3MywgNzUsIDY1LCAxMjgsIDgwLCA4NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgODAsIDg1LCA4MiwgODMsIDY5LCAxMjgsIDgwLCA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3OCwgCi0gICAgNjUsIDc3LCA2NSwgMTI4LCA4MCwgODUsIDgyLCA3MywgODQsIDg5LCAxMjgsIDgwLCA4NSwgODIsIDczLCA3MCwgODksIAotICAgIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIDgwLCA4NSwgODAsIDEyOCwgODAsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgMTI4LCA4MCwgODUsIDc4LCA3MSwgNjUsIDY1LCA3NywgCi0gICAgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDg1LCA3NywgODAsIDEyOCwgCi0gICAgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDcwLCA3MCwgNjksIDY4LCAxMjgsIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCAKLSAgICA2NywgNzUsIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCA4NSwgMTk0LCA4MCwgODUsIDY1LCA4MSwgMTI4LCAKLSAgICA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCA4NSwgNDksIDEyOCwgODAsIDg1LCAxMjgsIDgwLCAKLSAgICA4NCwgNzIsIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCAKLSAgICA4MywgODQsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIAotICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIDY1LCA3NiwgODQsIDY5LCAyMTAsIDgwLCA4MywgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgODQsIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCAKLSAgICA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCA3OSwgODQsIDY5LCA2NywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIAotICAgIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIAotICAgIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgODAsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDgwLCA4MiwgCi0gICAgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCA3MSwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzYsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgwLCA4MiwgNzksIAotICAgIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDcyLCA3MywgNjYsIDczLCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIAotICAgIDgzLCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgNzAsIDc5LCA4NSwgNzgsIDY4LCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDIxMiwgODAsIAotICAgIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgMTk3LCA4MCwgODIsIDczLCA4NiwgCi0gICAgNjUsIDY3LCAyMTcsIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCAKLSAgICA3MywgNzgsIDg0LCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCA4MiwgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIAotICAgIDY5LCAyMTAsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgCi0gICAgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCAKLSAgICA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgODAsIDgyLCA2OSwgODMsIAotICAgIDY5LCA4NCwgMTI4LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgCi0gICAgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIDY4LCA2OSwgODIsIAotICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgNjksIDcwLCA2NSwgCi0gICAgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCAKLSAgICA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIDgyLCA2OSwgNjcsIAotICAgIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgCi0gICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA4OSwgNjksIDIxMCwgODAsIDgyLCAKLSAgICA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIAotICAgIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCAKLSAgICA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIAotICAgIDY1LCA3NywgMTI4LCA4MCwgODIsIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIAotICAgIDEyOCwgODAsIDgwLCA2NSwgMTI4LCA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIAotICAgIDgyLCAyMTEsIDgwLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgCi0gICAgNzksIDg3LCA2OCwgNjksIDgyLCAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIAotICAgIDIxNywgODAsIDc5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgCi0gICAgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDgwLCA3OSwgODMsIDg0LCA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIAotICAgIDgzLCA4NCwgMTI4LCA4MCwgNzksIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgODMsIDEyOCwgODAsIDc5LCA4MiwgODQsIDY1LCA2NiwgNzYsIAotICAgIDE5NywgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgCi0gICAgODUsIDIxMSwgODAsIDc5LCA4MCwgODAsIDczLCA3OCwgMTk5LCA4MCwgNzksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCAKLSAgICA3OSwgODAsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDgwLCA3OSwgODAsIDEyOCwgODAsIDc5LCAyMDgsIDgwLCA3OSwgNzksIAotICAgIDY4LCA3NiwgNjksIDEyOCwgODAsIDc5LCA3OSwgMTI4LCA4MCwgNzksIDc4LCA2OCwgNzksIDEyOCwgODAsIDc5LCAyMDYsIAotICAgIDgwLCA3OSwgNzcsIDc3LCA2OSwgNjksIDEyOCwgODAsIDc5LCA3NywgNzcsIDY5LCAxOTcsIDgwLCA3OSwgNzYsIDczLCA4MywgCisgICAgNzIsIDY1LCA4MiwgODAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDc1LCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDgyLCA2NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgNTAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDE3OCwgODMsIAorICAgIDcyLCA2NSwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgODAsIDY5LCA4MywgMTI4LCA4MywgNzIsIDY1LCA4MCwgCisgICAgMTk3LCA4MywgNzIsIDY1LCA4MCwgMTI4LCA4MywgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDEyOCwgCisgICAgODMsIDcyLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA3NywgODIsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDgzLCAKKyAgICA3MiwgNjksIDc2LCA2OSwgODQsIDEyOCwgODMsIDcyLCA2NSwgNzYsIDc2LCA3OSwgMjE1LCA4MywgNzIsIDY1LCA3NSwgODQsIAorICAgIDczLCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgODMsIDcyLCA2NSwgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzAsIDg0LCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDcwLCAyMTIsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgCisgICAgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCAKKyAgICA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIAorICAgIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgODMsIDcyLCA2NSwgMTgyLCA4MywgNzIsIAorICAgIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIAorICAgIDY3LCAxMjgsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OSwgNzUsIAorICAgIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgCisgICAgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCAKKyAgICA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIAorICAgIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgCisgICAgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCAKKyAgICA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIAorICAgIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgCisgICAgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIAorICAgIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgODYsIDczLCA2NywgMTk3LCA4MywgCisgICAgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCA4MywgNjksIDgyLCA3MywgNzAsIAorICAgIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgCisgICAgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDg1LCA4MCwgNzYsIDE5NywgODMsIDY5LCA4MCwgODQsIDY5LCA3NywgNjYsIDY5LCAKKyAgICA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDg0LCA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIDczLCAxMjgsIDgzLCA2OSwgCisgICAgNzcsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAxMjgsIDgzLCA2OSwgNzcsIDc1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIDc3LCA3MywgODMsIDc5LCA3MCwgCisgICAgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgODMsIDY5LCA3NywgNzMsIDc3LCAKKyAgICA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIDY3LCAyMTIsIDgzLCA2OSwgNzcsIAorICAgIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgNzYsIDc5LCAyMDYsIDgzLCA2OSwgCisgICAgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIAorICAgIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIDY5LCA3NywgNzMsIDQ1LCA4NiwgCisgICAgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDczLCA2OSwgMTI4LCA4MywgNjksIDc2LCA3MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKKyAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCisgICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgCisgICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCisgICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCisgICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAorICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIAorICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKKyAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCisgICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA2OSwgMTk2LCA4MywgNjksIDczLCA4MywgNzcsIDY1LCAxMjgsIDgzLCA2OSwgNzMsIDgzLCA3NywgCisgICAgMTkzLCA4MywgNjksIDcyLCAxMjgsIDgzLCA2OSwgNzEsIDc5LCA3NiwgMTI4LCA4MywgNjksIDcxLCA3OCwgNzksIDEyOCwgCisgICAgODMsIDY5LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgODMsIDY5LCA2OSwgODYsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDg1LCAKKyAgICAxMjgsIDgzLCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgNjksIDIwNiwgODMsIDY5LCA2OSwgNjgsIDc2LCA3MywgNzgsIAorICAgIDcxLCAxMjgsIDgzLCA2OSwgNjksIDQ1LCA3OCwgNzksIDQ1LCA2OSwgODYsIDczLCAyMDQsIDgzLCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCAKKyAgICA4MywgNjksIDY3LCA4MiwgNjksIDg0LCAxMjgsIDgzLCA2OSwgNjcsIDc5LCA3OCwgNjgsIDEyOCwgODMsIDY5LCA2NywgNjUsIAorICAgIDc4LCA4NCwgMTI4LCA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgCisgICAgODMsIDY5LCA2NSwgNzYsIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCAKKyAgICA4MywgNjgsIDEyOCwgODMsIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIAorICAgIDY3LCA4MiwgNzksIDc2LCA3NiwgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCAKKyAgICA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDgwLCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgzLCA2NywgNzksIDgyLCA2OSwgMTI4LCA4MywgNjcsIDc5LCA3OSwgODQsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDczLCA4MywgCisgICAgODMsIDc5LCA4MiwgODMsIDEyOCwgODMsIDY3LCA3MywgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCAKKyAgICA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAorICAgIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgCisgICAgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCAKKyAgICA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIAorICAgIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgCisgICAgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCAKKyAgICA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCAKKyAgICA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgODIsIDY1LCA4MywgNzIsIDg0LCA4MiwgMTkzLCA4MywgNjUsIDg1LCA3MywgNzYsIAorICAgIDEyOCwgODMsIDY1LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgNzUsIDg1LCA4NSwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA3NSwgNjUsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCA3MywgODQsIDY5LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgNzIsIDY5LCA3NiwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCA4MywgNjUsIDgzLCAKKyAgICA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIDgyLCAxMjgsIDgzLCAKKyAgICA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgNzEsIDE5MywgODMsIAorICAgIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCA4NCwgNzMsIDczLCA3NywgODUsIDEyOCwgODMsIDY1LCA3OCwgCisgICAgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIDUwLCAxMjgsIDgzLCA2NSwgNzgsIDY4LCA3MiwgMjAxLCAKKyAgICA4MywgNjUsIDc4LCA2OCwgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDc4LCAxMjgsIAorICAgIDgzLCA2NSwgNzcsIDg5LCA3OSwgMjAzLCA4MywgNjUsIDc3LCA4NiwgNjUsIDg0LCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MywgCisgICAgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzIsIDY1LCA3OSwgMTI4LCA4MywgNjUsIDc3LCA3NSwgNjUsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgNjksIDc1LCA3MiwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDIwMCwgODMsIDY1LCA3NywgNjYsIDY1LCAxMjgsIAorICAgIDgzLCA2NSwgNzcsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMjA2LCA4MywgNjUsIDc3LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgCisgICAgODIsIDY5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA3MywgNzYsIDc2LCA3OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA2NSwgNzYsIDg0LCAxMjgsIDgzLCA2NSwgNzYsIDIxMiwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NiwgNzYsIAorICAgIDY1LCA3MiwgNzksIDIxMywgODMsIDY1LCA3NiwgNzYsIDE5MywgODMsIDY1LCA3NiwgNjUsIDIwNSwgODMsIDY1LCA3NiwgCisgICAgNjUsIDY4LCAxMjgsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgNzcsIDc3LCA3OSwgNzgsIDczLCAKKyAgICA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA3NSwgNzksIAorICAgIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDcyLCAxOTMsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgCisgICAgNzUsIDE5NywgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIAorICAgIDEyOCwgODMsIDY1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgCisgICAgMTI4LCA4MywgNjUsIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIAorICAgIDEyOCwgODMsIDY1LCA3MSwgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNzAsIAorICAgIDY5LCA4NCwgMjE3LCA4MywgNjUsIDY4LCA3MiwgNjksIDEyOCwgODMsIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgCisgICAgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCA2NywgODIsIDczLCA3MCwgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNjUsIAorICAgIDQ1LCA1MCwgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIDUyLCA1MywgMTI4LCA4MywgNDgsIDUyLCA1MiwgCisgICAgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgMTI4LCA4MywgNDgsIDUyLCA0OSwgMTI4LCA4MywgCisgICAgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgNDgsIDUxLCA1NiwgMTI4LCA4MywgNDgsIDUxLCAKKyAgICA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCA1MywgNjUsIDEyOCwgODMsIDQ4LCA1MSwgNTMsIAorICAgIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIDEyOCwgODMsIDQ4LCA1MSwgNTAsIDEyOCwgODMsIAorICAgIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIDQ4LCA1MCwgNTcsIDEyOCwgODMsIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY2LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAKKyAgICA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCA1MywgMTI4LCA4MywgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCA4MywgNDgsIDUwLCA0OSwgMTI4LCA4MywgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIDQ5LCA1NiwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgCisgICAgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgNTQsIDEyOCwgODMsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1MiwgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCA4MywgNDgsIDQ5LCA0OSwgMTI4LCA4MywgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIDQ4LCA1NiwgMTI4LCA4MywgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDEyOCwgODMsIDQ4LCA0OCwgNTMsIDEyOCwgCisgICAgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgzLCAKKyAgICA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCA0NSwgODcsIDEyOCwgODMsIDQ1LCA4MywgNzIsIAorICAgIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIDg4LCAxMjgsIDgyLCA4OSwgODQsIDEyOCwgODIsIAorICAgIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIDgwLCAxMjgsIDgyLCA4NywgNzksIDc5LCAxMjgsIAorICAgIDgyLCA4NywgNzksIDEyOCwgODIsIDg3LCA3MywgNzMsIDEyOCwgODIsIDg3LCA3MywgMTI4LCA4MiwgODcsIDY5LCA2OSwgCisgICAgMTI4LCA4MiwgODcsIDY5LCAxMjgsIDgyLCA4NywgNjUsIDcyLCA2NSwgMTI4LCA4MiwgODcsIDY1LCA2NSwgMTI4LCA4MiwgCisgICAgODcsIDY1LCAxMjgsIDgyLCA4NSwgODgsIDEyOCwgODIsIDg1LCA4NSwgNjYsIDg1LCA4MiwgODUsIDEyOCwgODIsIDg1LCAKKyAgICA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAxMjgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCAKKyAgICA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCA4NSwgODAsIDY5LCAxOTcsIDgyLCA4NSwgODAsIAorICAgIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIDEyOCwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODUsIAorICAgIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgNzgsIDE5OSwgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgODIsIDg1LCA3NywgCisgICAgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAxMjgsIDgyLCA4NSwgCisgICAgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIDEyOCwgODIsIDg1LCAKKyAgICA3NiwgNjUsIDczLCAxMjgsIDgyLCA4NSwgNzUsIDc1LCA2NSwgNzUsIDcyLCA2NSwgMTI4LCA4MiwgODUsIDczLCA4MywgCisgICAgMTI4LCA4MiwgODUsIDcxLCA2NiwgMjE3LCA4MiwgODUsIDY4LCA3MywgNzcsIDY5LCA3OCwgODQsIDE5MywgODIsIDg1LCAKKyAgICA2NiwgNzYsIDE5NywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCAKKyAgICA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIAorICAgIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgCisgICAgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgODIsIAorICAgIDY1LCAxMjgsIDgyLCA4MiwgNzksIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIAorICAgIDgyLCA4MiwgNzksIDc5LCAxMjgsIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgCisgICAgMTI4LCA4MiwgODIsIDY5LCA4OCwgMTI4LCA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgCisgICAgODIsIDY5LCA3MiwgMTI4LCA4MiwgODIsIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgCisgICAgODIsIDgyLCA2NSwgODgsIDEyOCwgODIsIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCAKKyAgICA2NSwgNjUsIDEyOCwgODIsIDc5LCA4NywgNjYsIDc5LCA2NSwgODQsIDEyOCwgODIsIDc5LCA4NSwgNzgsIDY4LCA2OSwgCisgICAgMTk2LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4NCwgNzMsIDgwLCA4MCwgNjksIDE5NiwgODIsIDc5LCA4NCwgODUsIDc4LCAKKyAgICA2OCwgNjUsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgODIsIDc5LCA4NCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODIsIDc5LCA4NCwgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNzksIDgzLCA3MiwgMTI4LCA4MiwgNzksIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4MiwgNzksIAorICAgIDgzLCA2OSwgMTI4LCA4MiwgNzksIDc5LCA4NCwgMTI4LCA4MiwgNzksIDc5LCA4MywgODQsIDY5LCA4MiwgMTI4LCA4MiwgCisgICAgNzksIDc5LCA3NSwgMTI4LCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MiwgNzksIDc3LCA2NSwgNzgsIDczLCA2NSwgMjA2LCAKKyAgICA4MiwgNzksIDc3LCA2NSwgMjA2LCA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgODIsIAorICAgIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgNzYsIDc2LCA2OSwgNjgsIDQ1LCA4NSwgMjA4LCA4MiwgNzksIDcyLCA3MywgCisgICAgNzgsIDcxLCA4OSwgMTkzLCA4MiwgNzksIDcxLCAxMjgsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAKKyAgICAxMjgsIDgyLCA3OSwgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA3OSwgMjEyLCA4MiwgNzksIDY2LCAKKyAgICA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgODMsIDg0LCA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIAorICAgIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCA3OCwgMTk5LCA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgCisgICAgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCA4MiwgNzcsIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgCisgICAgMTI4LCA4MiwgNzYsIDczLCAxMjgsIDgyLCA3NiwgNjksIDEyOCwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIAorICAgIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgCisgICAgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAKKyAgICAxOTksIDgyLCA3MywgODMsIDcyLCAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDgwLCA3NiwgMTk3LCAKKyAgICA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgODIsIAorICAgIDczLCA3OCwgNzAsIDc5LCA4MiwgOTAsIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgCisgICAgNjYsIDY1LCAxMjgsIDgyLCA3MywgNzcsIDEyOCwgODIsIDczLCA3NSwgODIsIDczLCA3NSwgMTI4LCA4MiwgNzMsIDcxLCAKKyAgICA4NiwgNjksIDY4LCA3MywgMTk1LCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCAKKyAgICA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIAorICAgIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCAKKyAgICA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIAorICAgIDcyLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA3MCwgCisgICAgNzYsIDY5LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIAorICAgIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCisgICAgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIAorICAgIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIAorICAgIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgCisgICAgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIAorICAgIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCisgICAgNzYsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCAKKyAgICA2OSwgODUsIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIAorICAgIDY5LCAxMjgsIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIAorICAgIDgyLCA3MywgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NiwgNjYsIDc5LCAyMDYsIDgyLCA3MywgNjUsIDIwNCwgCisgICAgODIsIDcyLCA3OSwgODQsIDczLCAxOTUsIDgyLCA3MiwgNzksIDEyOCwgODIsIDcyLCAyMDcsIDgyLCA3MiwgNzMsIDc4LCAKKyAgICA3OSwgNjcsIDY5LCA4MiwgNzksIDgzLCAxMjgsIDgyLCA3MiwgNjUsIDEyOCwgODIsIDcyLCAxMjgsIDgyLCA3MSwgODksIAorICAgIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCA2OSwgCisgICAgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKKyAgICA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIAorICAgIDY5LCA2OCwgNDUsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgCisgICAgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA4MiwgNjksIDg1LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODIsIDY5LCA4NCwgODUsIAorICAgIDgyLCAyMDYsIDgyLCA2OSwgODQsIDgyLCA3OSwgNzAsIDc2LCA2OSwgMjE2LCA4MiwgNjksIDg0LCA4MiwgNjksIDY1LCA4NCwgCisgICAgMTI4LCA4MiwgNjksIDg0LCA3OSwgODIsIDg0LCAxMjgsIDgyLCA2OSwgODMsIDg1LCA4MCwgNzMsIDc4LCA4NSwgODMsIAorICAgIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgCisgICAgNjksIDE5NiwgODIsIDY5LCA4MywgODQsIDEyOCwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgODMsIDY5LCAxMjgsIDgyLCAKKyAgICA2OSwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDgzLCA3MywgODMsIDg0LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3MywgNjgsIDY5LCAKKyAgICA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDIwMCwgODIsIDY5LCA4MiwgNjksIDc4LCA3MSwgNzEsIDY1LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDgyLCA2OSwgNzUsIDY1LCA3OCwgMTI4LCA4MiwgNjksIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDgyLCA2OSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3NywgNjksIDc4LCAyMTIsIDgyLCA2OSwgODAsIDcyLCAxMjgsIAorICAgIDgyLCA2OSwgODAsIDY5LCA4NCwgNzMsIDg0LCA3MywgNzksIDIwNiwgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgNjksIDE5NiwgCisgICAgODIsIDY5LCA4MCwgNjksIDY1LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA2OSwgNjUsIDIxMiwgODIsIDY5LCA4MCwgNjUsIDg5LCAKKyAgICA2NSwgMTI4LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIAorICAgIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIAorICAgIDc3LCA3MywgNzgsIDY4LCA2OSwgMjEwLCA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA3MSwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIDc2LCA2OSwgNjUsIDgzLCAKKyAgICA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODgsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgCisgICAgODIsIDY5LCA3NCwgNjUsIDc4LCAxOTksIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MywgMTI4LCA4MiwgNjksIDcxLCAKKyAgICA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgODIsIAorICAgIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCA4MiwgCisgICAgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIDY5LCAKKyAgICA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgNzMsIAorICAgIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgCisgICAgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDY3LCAKKyAgICA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgODQsIAorICAgIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgCisgICAgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIAorICAgIDE5NywgODIsIDY5LCA2NywgODIsIDY5LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNjcsIDc5LCA4MiwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA2OSwgODIsIDEyOCwgODIsIDY5LCA2NywgNzksIDgyLCAKKyAgICA2OCwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIDE5NiwgODIsIDY5LCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCA4NiwgCisgICAgMTk3LCA4MiwgNjksIDY3LCA2OSwgODAsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDgyLCAKKyAgICAxMjgsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCAyMTAsIDgyLCA2OSwgNjUsIDc2LCA3MSwgNjUsIDgyLCA0NSwgNTAsIAorICAgIDEyOCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDEyOCwgODIsIDY5LCA2NSwgNzIsIDc3LCA4NSwgNzUsIDEyOCwgCisgICAgODIsIDY5LCA2NSwgNjcsIDcyLCAxMjgsIDgyLCA2OCwgMjA3LCA4MiwgNjgsIDY5LCAyMDQsIDgyLCA2NiwgNjUsIDgzLCAKKyAgICAxOTMsIDgyLCA2NSwgODksIDgzLCAxMjgsIDgyLCA2NSwgODksIDIxMSwgODIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODIsIDY1LCA4NCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgODQsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgCisgICAgMTkzLCA4MiwgNjUsIDg0LCA2NSwgMTI4LCA4MiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgODMsIDg3LCA2NSwgNjgsIDczLCAKKyAgICAxMjgsIDgyLCA2NSwgODMsIDc5LCA4NSwgMjA0LCA4MiwgNjUsIDgzLCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4MSwgMTI4LCAKKyAgICA4MiwgNjUsIDgwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA4MiwgNjUsIDc4LCA2NSwgCisgICAgMTI4LCA4MiwgNjUsIDc4LCAxMjgsIDgyLCA2NSwgNzcsIDIxMSwgODIsIDY1LCA3NywgNjYsIDY1LCA4NCwgMTI4LCA4MiwgCisgICAgNjUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjUsIDc4LCA4MywgNjUsIAorICAgIDg5LCA2NSwgMTI4LCA4MiwgNjUsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNzMsIDgzLCA2OSwgMTk2LCA4MiwgCisgICAgNjUsIDczLCA3OCwgNjYsIDc5LCA4NywgMTI4LCA4MiwgNjUsIDczLCA3NiwgODcsIDY1LCA4OSwgMTI4LCA4MiwgNjUsIDczLCAKKyAgICA3NiwgODcsIDY1LCAyMTcsIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDgyLCA2NSwgNzMsIDY4LCAyMDcsIDgyLCA2NSwgNzMsIAorICAgIDY4LCA2NSwgMTI4LCA4MiwgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcyLCAKKyAgICAxMjgsIDgyLCA2NSwgNzAsIDY5LCAxMjgsIDgyLCA2NSwgNjksIDc3LCAxMjgsIDgyLCA2NSwgNjgsIDczLCA3OSwgNjUsIAorICAgIDY3LCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2NSwgNjgsIDczLCA3OSwgMTI4LCA4MiwgNjUsIDY4LCA3MywgMjA3LCA4MiwgCisgICAgNjUsIDY4LCAyMDEsIDgyLCA2NSwgNjgsIDEyOCwgODIsIDY1LCAxOTYsIDgyLCA2NSwgNjcsIDgxLCA4NSwgNjksIDIxMiwgCisgICAgODIsIDY1LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4MiwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDY1LCA2NiwgNjYsIDczLCAKKyAgICA4NCwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA4MiwgNjUsIDUxLCAxMjgsIDgyLCA2NSwgNTAsIDEyOCwgODIsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNTcsIAorICAgIDEyOCwgODIsIDQ4LCA1MCwgNTYsIDEyOCwgODIsIDQ4LCA1MCwgNTUsIDEyOCwgODIsIDQ4LCA1MCwgNTQsIDEyOCwgODIsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgODIsIDQ4LCA1MCwgNTIsIDEyOCwgODIsIDQ4LCA1MCwgNTEsIDEyOCwgODIsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgODIsIDQ4LCA1MCwgNDksIDEyOCwgODIsIDQ4LCA1MCwgNDgsIDEyOCwgODIsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgODIsIDQ4LCA0OSwgNTYsIDEyOCwgODIsIDQ4LCA0OSwgNTUsIDEyOCwgODIsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDgyLCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDgyLCA0OCwgNDksIDUzLCAxMjgsIDgyLCA0OCwgNDksIDUyLCAxMjgsIDgyLCA0OCwgNDksIAorICAgIDUxLCAxMjgsIDgyLCA0OCwgNDksIDUwLCAxMjgsIDgyLCA0OCwgNDksIDQ5LCAxMjgsIDgyLCA0OCwgNDksIDQ4LCA2NSwgCisgICAgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgMTI4LCA4MiwgNDgsIDQ4LCA1NywgMTI4LCA4MiwgNDgsIDQ4LCA1NiwgMTI4LCA4MiwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4MiwgNDgsIDQ4LCA1NCwgMTI4LCA4MiwgNDgsIDQ4LCA1MywgMTI4LCA4MiwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjYsIDEyOCwgODIsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIAorICAgIDUxLCAxMjgsIDgyLCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MCwgMTI4LCA4MiwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODEsIDg5LCA4OCwgMTI4LCA4MSwgODksIDg1LCAxMjgsIDgxLCA4OSwgCisgICAgODQsIDEyOCwgODEsIDg5LCA4MiwgODgsIDEyOCwgODEsIDg5LCA4MiwgMTI4LCA4MSwgODksIDgwLCAxMjgsIDgxLCA4OSwgCisgICAgNzksIDEyOCwgODEsIDg5LCA3MywgMTI4LCA4MSwgODksIDY5LCA2OSwgMTI4LCA4MSwgODksIDY5LCAxMjgsIDgxLCA4OSwgCisgICAgNjUsIDY1LCAxMjgsIDgxLCA4OSwgNjUsIDEyOCwgODEsIDg5LCAxMjgsIDgxLCA4NywgNzMsIDEyOCwgODEsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgODEsIDg3LCA2OSwgMTI4LCA4MSwgODcsIDY1LCA2NSwgMTI4LCA4MSwgODcsIDY1LCAxMjgsIDgxLCA4NSwgCisgICAgODgsIDEyOCwgODEsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCA4NiwgMTI4LCA4MSwgODUsIDg1LCAxMjgsIDgxLCA4NSwgCisgICAgODQsIDEyOCwgODEsIDg1LCA4MywgNzIsIDgzLCA3MiwgNjUsIDg5LCA2NSwgMTI4LCA4MSwgODUsIDgyLCA4OCwgMTI4LCAKKyAgICA4MSwgODUsIDgyLCAxMjgsIDgxLCA4NSwgODAsIDEyOCwgODEsIDg1LCA3OSwgODgsIDEyOCwgODEsIDg1LCA3OSwgODQsIAorICAgIDE5NywgODEsIDg1LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNzksIDg0LCAxMjgsIDgxLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDgxLCA4NSwgNzksIDEyOCwgODEsIDg1LCA3NSwgMTI4LCA4MSwgODUsIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MywgODMsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2OSwgODMsIDczLCA3NywgCisgICAgMTkzLCA4MSwgODUsIDczLCA3OCwgNjcsIDg1LCA3OCwgODgsIDEyOCwgODEsIDg1LCA3MywgNzgsIDY1LCA4MiwgNzMsIDg1LCAKKyAgICAyMTEsIDgxLCA4NSwgNzMsIDc2LCAyMTIsIDgxLCA4NSwgNzMsIDc2LCA3NiwgMTI4LCA4MSwgODUsIDczLCA2NywgMjAzLCAKKyAgICA4MSwgODUsIDczLCAxMjgsIDgxLCA4NSwgNzAsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCA2OSwgCisgICAgMTk2LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIAorICAgIDIwNiwgODEsIDg1LCA2OSwgNjksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDY5LCAyMDYsIDgxLCA4NSwgNjksIDEyOCwgODEsIAorICAgIDg1LCA2NiwgODUsIDg0LCA4MywgMTI4LCA4MSwgODUsIDY1LCA4NCwgNjksIDgyLCA3OCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgCisgICAgNjUsIDgyLCA4NCwgNjksIDgyLCA4MywgMTI4LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgMjExLCA4MSwgODUsIDY1LCAKKyAgICA4MiwgODQsIDY5LCA4MiwgMTI4LCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIAorICAgIDg1LCA4MCwgNzYsIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgCisgICAgNjUsIDc4LCAyMTIsIDgxLCA4NSwgNjUsIDY4LCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODEsIDg1LCA2NSwgNjgsIAorICAgIDEyOCwgODEsIDg1LCA2NSwgMTk2LCA4MSwgODUsIDY1LCAxMjgsIDgxLCA4NSwgMTI4LCA4MSwgMjA4LCA4MSwgNzksIDg4LCAKKyAgICAxMjgsIDgxLCA3OSwgODQsIDEyOCwgODEsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDc5LCA4MCwgNjUsIDEyOCwgODEsIDc5LCAKKyAgICA4MCwgMTI4LCA4MSwgNzksIDc5LCAxMjgsIDgxLCA3OSwgMjA3LCA4MSwgNzksIDcwLCAxMjgsIDgxLCA3OSwgMTk4LCA4MSwgCisgICAgNzksIDY1LCAxMjgsIDgxLCA3OSwgMTI4LCA4MSwgNzgsIDEyOCwgODEsIDczLCA4OCwgMTI4LCA4MSwgNzMsIDg0LCA4MywgCisgICAgNjUsIDEyOCwgODEsIDczLCA4NCwgMTI4LCA4MSwgNzMsIDgwLCAxMjgsIDgxLCA3MywgNzMsIDEyOCwgODEsIDczLCA3MCwgCisgICAgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgNzMsIDY5LCA4MCwgMTI4LCA4MSwgCisgICAgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgNzIsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA3MiwgODcsIDY1LCAxMjgsIDgxLCAKKyAgICA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3MiwgNzksIDEyOCwgODEsIDcyLCA3MywgMTI4LCAKKyAgICA4MSwgNzIsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDY5LCAxMjgsIDgxLCA3MiwgNjUsIDg1LCAxMjgsIDgxLCA3MiwgNjUsIAorICAgIDY1LCAxMjgsIDgxLCA3MiwgNjUsIDEyOCwgODEsIDcxLCA2NSwgMTI4LCA4MSwgNjksIDg0LCA2NSwgNzgsIDY1LCAxMjgsIAorICAgIDgxLCA2OSwgNjksIDEyOCwgODEsIDY5LCAxMjgsIDgxLCA2NSwgODksIDEyOCwgODEsIDY1LCA4NSwgMTI4LCA4MSwgNjUsIAorICAgIDg0LCA2NSwgNzgsIDEyOCwgODEsIDY1LCA4MiwgNzgsIDY5LCAyMTcsIDgxLCA2NSwgODIsIDEyOCwgODEsIDY1LCA4MSwgCisgICAgMTI4LCA4MSwgNjUsIDgwLCA3MiwgMTI4LCA4MSwgNjUsIDc3LCA2NSwgODQsIDgzLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCAKKyAgICA4NCwgMjExLCA4MSwgNjUsIDc2LCAxOTMsIDgxLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MSwgNjUsIAorICAgIDczLCAxMjgsIDgxLCA2NSwgNzAsIDEyOCwgODEsIDY1LCAxOTgsIDgxLCA2NSwgNjgsIDc3LCA2NSwgMTI4LCA4MSwgNjUsIAorICAgIDY1LCA3MywgMTI4LCA4MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgODEsIDY1LCA2NSwgNzAsIDEyOCwgODEsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgODEsIDQ4LCA0OCwgNTQsIDEyOCwgODEsIDQ4LCA0OCwgNTMsIDEyOCwgODEsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgODEsIDQ4LCA0OCwgNTEsIDEyOCwgODEsIDQ4LCA0OCwgNTAsIDEyOCwgODEsIDQ4LCA0OCwgNDksIDEyOCwgODAsIDkwLCAKKyAgICAxMjgsIDgwLCA4OSwgODgsIDEyOCwgODAsIDg5LCA4NCwgMTI4LCA4MCwgODksIDgyLCA4OCwgMTI4LCA4MCwgODksIDgyLCAKKyAgICAxMjgsIDgwLCA4OSwgODAsIDEyOCwgODAsIDg3LCA3OSwgODksIDEyOCwgODAsIDg3LCA3OSwgNzksIDEyOCwgODAsIDg3LCAKKyAgICA3OSwgMTI4LCA4MCwgODcsIDIwNywgODAsIDg3LCA3MywgNzMsIDEyOCwgODAsIDg3LCA3MywgMTI4LCA4MCwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA4MCwgODcsIDY5LCAxMjgsIDgwLCA4NywgNjUsIDY1LCAxMjgsIDgwLCA4NywgMTI4LCA4MCwgODYsIDEyOCwgCisgICAgODAsIDg1LCA4OCwgMTI4LCA4MCwgODUsIDg1LCA4NCwgMTI4LCA4MCwgODUsIDg1LCAxMjgsIDgwLCA4NSwgODQsIDgyLCAKKyAgICA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA4NCwgMTI4LCA4MCwgODUsIDIxMiwgODAsIAorICAgIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzUsIDY1LCAxMjgsIDgwLCA4NSwgCisgICAgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIDEyOCwgODAsIDg1LCA4MiwgODMsIDY5LCAxMjgsIDgwLCAKKyAgICA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3OCwgNjUsIDc3LCA2NSwgMTI4LCA4MCwgODUsIDgyLCA3MywgODQsIAorICAgIDg5LCAxMjgsIDgwLCA4NSwgODIsIDczLCA3MCwgODksIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIAorICAgIDgwLCA4NSwgODAsIDEyOCwgODAsIDg1LCA3OSwgODgsIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgCisgICAgMTI4LCA4MCwgODUsIDc4LCA3MSwgNjUsIDY1LCA3NywgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCAKKyAgICA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgODAsIDg1LCA3NywgODAsIDEyOCwgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDcwLCA3MCwgNjksIDY4LCAKKyAgICAxMjgsIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCA2NywgNzUsIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCAKKyAgICA4NSwgMTk0LCA4MCwgODUsIDY1LCA4MSwgMTI4LCA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCAKKyAgICA4NSwgNDksIDEyOCwgODAsIDg1LCAxMjgsIDgwLCA4NCwgNzIsIDY1LCA3MiwgMTkzLCA4MCwgODQsIDY5LCAxMjgsIDgwLCAKKyAgICA4MywgNzMsIDc2LCAyMDEsIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgCisgICAgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIAorICAgIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCAyMDYsIDgwLCA4MywgNzMsIDcwLCA3MywgCisgICAgODMsIDg0LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDgzLCA3MywgMTI4LCA4MCwgODMsIDY1LCAKKyAgICA3NiwgODQsIDY5LCAyMTAsIDgwLCA4MywgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgODQsIAorICAgIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCA3OSwgODQsIDY5LCA2NywgCisgICAgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCAKKyAgICA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIDc5LCA4MiwgCisgICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgODAsIDY5LCAKKyAgICA3NiwgNzYsIDY5LCAyMTAsIDgwLCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCA3MSwgNjksIAorICAgIDE5NiwgODAsIDgyLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCAxMjgsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCAxMjgsIDgwLCA4MiwgNzksIDc0LCAKKyAgICA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA4MiwgNzksIDcyLCA3MywgNjYsIDczLCA4NCwgNjksIDE5NiwgODAsIAorICAgIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDgyLCA3OSwgCisgICAgNzAsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgwLCA4MiwgNzksIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDgwLCA4MiwgNzksIDY4LCAKKyAgICA4NSwgNjcsIDIxMiwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA3MywgODYsIDY1LCA4NCwgCisgICAgMTk3LCA4MCwgODIsIDczLCA4NiwgNjUsIDY3LCAyMTcsIDgwLCA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCAKKyAgICA4NCwgODIsIDE5MywgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDY5LCAyMTAsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgODIsIDczLCAKKyAgICA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzgsIDY3LCA2OSwgCisgICAgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIDgyLCA2OSwgODYsIDczLCAKKyAgICA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA4MCwgODIsIDY5LCA4MywgNjksIDg0LCAxMjgsIAorICAgIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MywgNjcsIDgyLCAKKyAgICA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgNjgsIDY5LCA4MiwgNjUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCA2OSwgNzEsIDc4LCA2NSwgNzgsIAorICAgIDIxMiwgODAsIDgyLCA2OSwgNzAsIDY1LCA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgCisgICAgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAKKyAgICA4MywgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgCisgICAgMTk2LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCAKKyAgICA4MiwgNjUsIDg5LCA2OSwgMjEwLCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIAorICAgIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgCisgICAgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCAKKyAgICA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIAorICAgIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIAorICAgIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIAorICAgIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgCisgICAgODcsIDY5LCAyMTAsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIAorICAgIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCA2NywgCisgICAgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCAKKyAgICA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgODQsIAorICAgIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCA3OSwgCisgICAgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MywgNzMsIDg0LCAKKyAgICA3MywgNzksIDc4LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgNzksIDgyLCA4MiwgNjksIAorICAgIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCA4NSwgMjExLCA4MCwgNzksIDgwLCA4MCwgCisgICAgNzMsIDc4LCAxOTksIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgNjcsIDc5LCA4MiwgNzgsIAorICAgIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIAorICAgIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgCisgICAgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzksIDEyOCwgODAsIDc5LCA3NiwgNzMsIDgzLCAKICAgICA3MiwgMTI4LCA4MCwgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCAKICAgICA4MCwgNzksIDc2LCAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIAogICAgIDczLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgCkBAIC0xNjkxLDc2ICsxNzA1LDc4IEBACiAgICAgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIDczLCA4NiwgNjksIAogICAgIDEyOCwgODAsIDY5LCA4MiwgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA4MCwgNjksIDgyLCAxMjgsIDgwLCA2OSwgCiAgICAgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjksIDgwLCA2OSwgMjEyLCA4MCwgNjksIDc5LCA4MiwgODQsIDIwMCwgODAsIDY5LCAKLSAgICA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIAotICAgIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgCi0gICAgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCAKLSAgICA2OSwgNzgsIDc4LCA2NSwgNzgsIDg0LCAxMjgsIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIAotICAgIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgCi0gICAgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCAKLSAgICA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgCi0gICAgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgCi0gICAgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCAKLSAgICA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIDEyOCwgODAsIDY5LCA2OSwgNzMsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCAKLSAgICA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgCi0gICAgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCAKLSAgICA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDc1LCAyMTEsIDgwLCA2OSwgNjUsIAotICAgIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCA3MywgCi0gICAgMTI4LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAxMjgsIAotICAgIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgwLCA2NSwgCi0gICAgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIDY1LCA4NiwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCAyMTMsIDgwLCA2NSwgODQsIDg0LCAKLSAgICA2OSwgODIsIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIAotICAgIDIwMCwgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgCi0gICAgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIAotICAgIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIAotICAgIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNjksIDc4LCA3MSwgNjksIDIxMCwgODAsIDY1LCA4MywgCi0gICAgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCAKLSAgICA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIAotICAgIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIAotICAgIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3NSwgCi0gICAgMTI4LCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCA4NCwgNzMsIDcxLCAKLSAgICA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIAotICAgIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDIxMSwgCi0gICAgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNjksIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCA3MiwgODIsIAotICAgIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgCi0gICAgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDIwNCwgODAsIDY1LCAKLSAgICA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgCi0gICAgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCA2NSwgODIsIDY1LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIAotICAgIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDgyLCAKLSAgICAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIAotICAgIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgCi0gICAgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIAotICAgIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCAKLSAgICA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgCi0gICAgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCAKLSAgICA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCisgICAgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzIsIDc2LCA3OSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIAorICAgIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgCisgICAgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3OCwgNjUsIDc4LCA4NCwgMTI4LCAKKyAgICA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIAorICAgIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCisgICAgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCAKKyAgICA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgCisgICAgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDczLCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCAKKyAgICA2NSwgMjA0LCA4MCwgNjksIDY1LCA3OCwgODUsIDg0LCA4MywgMTI4LCA4MCwgNjksIDY1LCA3NSwgMjExLCA4MCwgNjksIAorICAgIDY1LCA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgCisgICAgNzMsIDEyOCwgODAsIDY4LCA3MCwgMTI4LCA4MCwgNjgsIDEyOCwgODAsIDY3LCAxMjgsIDgwLCA2NSwgOTAsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNjUsIDg5LCA2OSwgODIsIDc5LCA3NSwgMTI4LCA4MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDg5LCAxMjgsIDgwLCA2NSwgODgsIDEyOCwgODAsIDY1LCA4NywgNzgsIDEyOCwgODAsIDY1LCAyMTUsIDgwLCAKKyAgICA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4MCwgNjUsIDg1LCAxMjgsIDgwLCA2NSwgMjEzLCA4MCwgNjUsIAorICAgIDg0LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgCisgICAgNjUsIDg0LCAyMDAsIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCAKKyAgICA4NCwgMTI4LCA4MCwgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIAorICAgIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIAorICAgIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCAKKyAgICA4NywgNzgsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgODMsIDY5LCA3OCwgNzEsIDY5LCAyMTAsIAorICAgIDgwLCA2NSwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODAsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDgzLCA2OSwgCisgICAgODEsIDEyOCwgODAsIDY1LCA4MywgNjUsIDc4LCA3MSwgNjUsIDIwNiwgODAsIDY1LCA4MiwgODUsIDc3LCAxMjgsIDgwLCAKKyAgICA2NSwgODIsIDg0LCAyMTcsIDgwLCA2NSwgODIsIDg0LCA3OCwgNjksIDgyLCA4MywgNzIsIDczLCAyMDgsIDgwLCA2NSwgODIsIAorICAgIDg0LCA3MywgNjUsIDc2LCA3NiwgODksIDQ1LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MCwgNjUsIDgyLCAKKyAgICA4NCwgNzMsIDY1LCAyMDQsIDgwLCA2NSwgODIsIDg0LCA3MiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDIxMiwgODAsIAorICAgIDY1LCA4MiwgNzUsIDEyOCwgODAsIDY1LCA4MiwgNzMsIDY3LCA3MiwgNzksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA4MywgCisgICAgODQsIDczLCA3MSwgNzcsIDY5LCA3OCwgNzksIDIwNiwgODAsIDY1LCA4MiwgNjksIDgyLCA2OSwgNzgsIDEyOCwgODAsIDY1LCAKKyAgICA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgCisgICAgODMsIDczLCAyMTEsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDY5LCAyMTEsIDgwLCA2NSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDgyLCA2NSwgODMsIDE5NywgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgNzcsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDc2LCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCAKKyAgICAyMDQsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCA3MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzUsIAorICAgIDc2LCA3MywgODQsIDczLCA3NSwgMjAxLCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgMTkzLCA4MCwgCisgICAgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3OSwgODMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgODAsIDY1LCA4MiwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDgwLCA4OSwgODIsIDg1LCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCAKKyAgICA3NiwgNzMsIDgwLCA4MywgMTI4LCA4MCwgNjUsIDgwLCA2OSwgODIsIDY3LCA3NiwgNzMsIDgwLCAxMjgsIDgwLCA2NSwgODAsIAorICAgIDY5LCAyMTAsIDgwLCA2NSwgODAsIDEyOCwgODAsIDY1LCAyMDgsIDgwLCA2NSwgMjA3LCA4MCwgNjUsIDc4LCA4OSwgODUsIAorICAgIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNzMsIDc1LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjksIDY3LCA2OSwgCisgICAgNzUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3OCwgNzEsIDcxLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc1LCAKKyAgICA4MiwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODQsIDczLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCAKKyAgICA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc4LCA3MSwgNzksIDc4LCA2NSwgCisgICAgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzksIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4NywgNzMsIDgzLCAKKyAgICA2NSwgNjgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDgyLCA2NSwgNzgsIDcxLCA3NSwgNjksIDgwLCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3OSwgNzYsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAogICAgIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgCi0gICAgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCAKLSAgICA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgCi0gICAgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIAotICAgIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzcsIDg5LCA4MiwgNjksIDc4LCAxOTcsIDgwLCA2NSwgNzYsIDIwNSwgODAsIDY1LCAKLSAgICA3NiwgNzYsIDY1LCA4NywgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzYsIDY1LCA4MywgMTI4LCA4MCwgNjUsIDc2LCA2OSwgODQsIAotICAgIDg0LCA2OSwgMTI4LCA4MCwgNjUsIDc2LCA2NSwgODUsIDc4LCAxOTksIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgCi0gICAgOTAsIDY5LCAxOTYsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCAyMDQsIDgwLCA2NSwgNzUsIDgwLCA2NSwgMjAzLCA4MCwgNjUsIDczLCA4OSwgNjUsIAotICAgIDc4LCA3OCwgNzksIDczLCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA4NCwgNzIsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDczLCA4MiwgCi0gICAgNjksIDE5NiwgODAsIDY1LCA3MywgNzgsIDg0LCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgODAsIDY1LCA3MywgMTI4LCAKLSAgICA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAyMDEsIDgwLCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3MSwgNjksIDgzLCAxMjgsIAotICAgIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCA2NSwgCi0gICAgNjgsIDY4LCA3NiwgMTk3LCA4MCwgNjUsIDY4LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA2NSwgNjgsIDE5MywgODAsIDY1LCAKLSAgICA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNjUsIDcxLCA2OSwgCisgICAgODAsIDY1LCA3OCwgNjcsIDY1LCA3NSwgNjksIDgzLCAxMjgsIDgwLCA2NSwgNzgsIDY1LCA2OSwgNzYsIDY1LCA2OSwgNzgsIAorICAgIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDEyOCwgODAsIDY1LCAyMDYsIDgwLCA2NSwgNzcsIDg1LCA3OCwgNzEsIDc1LCA2NSwgCisgICAgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgNzcsIDgzLCA3MiwgNjUsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCA3NywgNzMsIDc4LCA3MSwgNzUsIAorICAgIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgNzgsIDY5LCA3OCwgCisgICAgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjUsIDY5LCA3MiwgMTI4LCAKKyAgICA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCA2NSwgMTI4LCA4MCwgNjUsIAorICAgIDc2LCA3NywgODksIDgyLCA2OSwgNzgsIDE5NywgODAsIDY1LCA3NiwgNzcsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgCisgICAgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCAKKyAgICA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgCisgICAgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDczLCA3OCwgODQsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA4MCwgNjUsIDczLCAKKyAgICAxMjgsIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODMsIAorICAgIDEyOCwgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIAorICAgIDY1LCA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKICAgICAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIAogICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgCiAgICAgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCAKQEAgLTE3NzAsNDY0ICsxNzg2LDQ3MSBAQAogICAgIDQ4LCA0OCwgNTAsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA4OSwgCiAgICAgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDY1LCAKICAgICAxMjgsIDc5LCA4OCwgNzMsIDE5MywgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCA4OCwgNjksIDczLCAxOTMsIDc5LCAKLSAgICA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDc5LCA3OCwgMTk5LCA3OSwgODYsIAotICAgIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODksIDEyOCwgNzksIDg2LCA2OSwgCi0gICAgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDEyOCwgNzksIDg2LCAKLSAgICA2OSwgODIsIDc2LCA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDc5LCA4NiwgNjUsIAotICAgIDc2LCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDg1LCA4NCwgCi0gICAgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAyMTYsIDc5LCAKLSAgICA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIDE5NywgNzksIAotICAgIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIDcyLCA2OSwgCi0gICAgODIsIDIxMSwgNzksIDg0LCA3MiwgNjksIDIxMCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgODQsIDcyLCAKLSAgICA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODMsIDY3LCAxMjgsIDc5LCA4MiwgODQsIAotICAgIDcyLCA3OSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDgyLCA4NCwgNzIsIDc5LCA2OCwgNzksIDIxNiwgNzksIDgyLCA3OCwgCi0gICAgNjUsIDg0LCAxOTcsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgODMsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCAKLSAgICA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCAyMTIsIDc5LCA4MiwgNzUsIDcyLCA3OSwgCi0gICAgMjA2LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCAxMjgsIDc5LCAKLSAgICA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNjgsIDY5LCAyMTAsIAotICAgIDc5LCA4MiwgNjcsIDcyLCA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCA4MCwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3OSwgODAsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIAotICAgIDc4LCAxOTksIDc5LCA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCA2NywgNzIsIDg1LCA4MywgCi0gICAgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzksIAotICAgIDIxMCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgNzksIDgwLCA2OSwgNzgsIDQ1LCA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIAotICAgIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCAyMDcsIDc5LCA4MCwgCi0gICAgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIAotICAgIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgNzksIDgwLCA2OSwgNzgsIDEyOCwgNzksIDc5LCA5MCwgCi0gICAgNjksIDEyOCwgNzksIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCAKLSAgICA4NSwgMTI4LCA3OSwgNzksIDcyLCAxMjgsIDc5LCA3OSwgNjksIDEyOCwgNzksIDc5LCA2NiwgNzksIDc5LCA3MCwgNzMsIAotICAgIDc2LCA3MywgMTI4LCA3OSwgNzgsIDg1LCAxMjgsIDc5LCA3OCwgODMsIDg1LCAxMjgsIDc5LCA3OCwgNzgsIDEyOCwgNzksIAotICAgIDc4LCA3NSwgNjUsIDgyLCAxMjgsIDc5LCA3OCwgNjksIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA4NywgCi0gICAgNjUsIDIxNywgNzksIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzksIDc4LCA2OSwgNDUsIDc2LCAKLSAgICA3MywgNzgsIDE5NywgNzksIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIDEyOCwgNzksIAotICAgIDc3LCA3MywgODMsIDgzLCA3MywgNzksIDIwNiwgNzksIDc3LCA3MywgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzksIDc3LCA3MywgCi0gICAgNjcsIDgyLCA3OSwgMjA2LCA3OSwgNzcsIDY5LCA3MSwgNjUsIDEyOCwgNzksIDc3LCA2OSwgNzEsIDE5MywgNzksIDc3LCAKLSAgICA2NSwgNzYsIDc5LCA3OCwgMTI4LCA3OSwgNzYsIDczLCA4NiwgNjksIDEyOCwgNzksIDc2LCA3MywgNzEsIDc5LCAyMDYsIAotICAgIDc5LCA3NiwgNjgsIDEyOCwgNzksIDc1LCA4NCwgMjA3LCA3OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzksIDc1LCA2NSwgCi0gICAgODIsIDE5MywgNzksIDc0LCA3MywgNjYsIDg3LCA2NSwgMjE3LCA3OSwgNzQsIDY5LCA3OSwgNzgsIDEyOCwgNzksIDczLCAKLSAgICA3NiwgMTI4LCA3OSwgNzMsIDIwNCwgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgCi0gICAgNzksIDcxLCA3OSwgNzgsIDY5LCA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIAotICAgIDIwNSwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgCi0gICAgNzAsIDcwLCA3MywgNjcsIDE5NywgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgCi0gICAgNzksIDY5LCA2OSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDY4LCAxMjgsIDc5LCA2OCwgMTk2LCA3OSwgCi0gICAgNjcsIDg0LCA3OSwgODAsIDg1LCA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIDg0LCAKLSAgICA2OSwgMjEyLCA3OSwgNjcsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA3OSwgNjcsIDIxMCwgNzksIDY3LCA3NiwgNzksIAotICAgIDY3LCA3NSwgMTI4LCA3OSwgNjcsIDY3LCA3NiwgODUsIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgODMsIDg0LCA4MiwgCi0gICAgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDc5LCA3NiwgMjExLCA3OSwgNjYsIDc5LCAyMDQsIDc5LCAKLSAgICA2NiwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA2NiwgNzYsIDczLCA4MSwgODUsIDE5NywgNzksIDY2LCA3NCwgNjksIAotICAgIDY3LCAyMTIsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIDEyOCwgNzksIDY2LCA2OSwgNzYsIDc5LCA4MywgMTI4LCA3OSwgCi0gICAgNjYsIDEyOCwgNzksIDY1LCA4OSwgMTI4LCA3OSwgNjUsIDc1LCAxMjgsIDc5LCA2NSwgNjYsIDc5LCA2NSwgNzAsIDczLCAKLSAgICA3NiwgNzMsIDEyOCwgNzksIDE5MywgNzksIDQ4LCA1MywgNDksIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDc5LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgMTI4LCA3OSwgNDgsIDUyLCA1NywgMTI4LCA3OSwgNDgsIAotICAgIDUyLCA1NiwgMTI4LCA3OSwgNDgsIDUyLCA1NSwgMTI4LCA3OSwgNDgsIDUyLCA1NCwgMTI4LCA3OSwgNDgsIDUyLCA1MywgCi0gICAgMTI4LCA3OSwgNDgsIDUyLCA1MiwgMTI4LCA3OSwgNDgsIDUyLCA1MSwgMTI4LCA3OSwgNDgsIDUyLCA1MCwgMTI4LCA3OSwgCi0gICAgNDgsIDUyLCA0OSwgMTI4LCA3OSwgNDgsIDUyLCA0OCwgMTI4LCA3OSwgNDgsIDUxLCA1NywgMTI4LCA3OSwgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA3OSwgNDgsIDUxLCA1NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIAotICAgIDY3LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgCi0gICAgNTQsIDEyOCwgNzksIDQ4LCA1MSwgNTMsIDEyOCwgNzksIDQ4LCA1MSwgNTIsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNTEsIDUxLCAxMjgsIDc5LCA0OCwgNTEsIDUwLCAxMjgsIDc5LCA0OCwgNTEsIDQ5LCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgMTI4LCA3OSwgNDgsIDUwLCA1NywgNjUsIDEyOCwgNzksIAotICAgIDQ4LCA1MCwgNTcsIDEyOCwgNzksIDQ4LCA1MCwgNTYsIDEyOCwgNzksIDQ4LCA1MCwgNTUsIDEyOCwgNzksIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAKLSAgICA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MiwgMTI4LCA3OSwgNDgsIDUwLCA1MSwgMTI4LCA3OSwgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA3OSwgNDgsIDUwLCA0OSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDEyOCwgNzksIAotICAgIDQ4LCA0OSwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNDksIDU3LCAxMjgsIDc5LCA0OCwgNDksIDU2LCAxMjgsIDc5LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDc5LCA0OCwgNDksIDU0LCAxMjgsIDc5LCA0OCwgNDksIDUzLCAxMjgsIDc5LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDUxLCAxMjgsIDc5LCA0OCwgNDksIDUwLCAxMjgsIDc5LCA0OCwgNDksIDQ5LCAxMjgsIDc5LCAKLSAgICA0OCwgNDksIDQ4LCA2NywgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIAotICAgIDc5LCA0OCwgNDksIDQ4LCAxMjgsIDc5LCA0OCwgNDgsIDU3LCAxMjgsIDc5LCA0OCwgNDgsIDU2LCAxMjgsIDc5LCA0OCwgCi0gICAgNDgsIDU1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA3MCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjksIDEyOCwgNzksIDQ4LCAKLSAgICA0OCwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OSwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3OSwgNDgsIDQ4LCA1MiwgMTI4LCA3OSwgNDgsIDQ4LCA1MSwgMTI4LCA3OSwgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDEyOCwgNzksIDQ1LCA4OSwgNjksIAotICAgIDEyOCwgNzksIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDc5LCA0NSwgNjksIDEyOCwgNzgsIDkwLCA4OSwgODgsIDEyOCwgNzgsIAotICAgIDkwLCA4OSwgODQsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA5MCwgODksIDgyLCAxMjgsIDc4LCA5MCwgCi0gICAgODksIDgwLCAxMjgsIDc4LCA5MCwgODksIDEyOCwgNzgsIDkwLCA4NSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgODUsIDgyLCAxMjgsIDc4LCA5MCwgODUsIDgxLCAxMjgsIDc4LCA5MCwgODUsIDgwLCAxMjgsIDc4LCAKLSAgICA5MCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgMTI4LCA3OCwgOTAsIDg1LCAyMDYsIDc4LCA5MCwgODUsIAotICAgIDEyOCwgNzgsIDkwLCA3OSwgODgsIDEyOCwgNzgsIDkwLCA3OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgODgsIDEyOCwgNzgsIAotICAgIDkwLCA3MywgODQsIDEyOCwgNzgsIDkwLCA3MywgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDg4LCAxMjgsIDc4LCA5MCwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgMTI4LCA3OCwgOTAsIDczLCAxMjgsIDc4LCA5MCwgNjksIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgOTAsIDY5LCAxMjgsIDc4LCA5MCwgNjUsIDg4LCAxMjgsIDc4LCAKLSAgICA5MCwgNjUsIDg0LCAxMjgsIDc4LCA5MCwgNjUsIDgxLCAxMjgsIDc4LCA5MCwgNjUsIDgwLCAxMjgsIDc4LCA5MCwgNjUsIAotICAgIDEyOCwgNzgsIDkwLCAxOTMsIDc4LCA4OSwgODcsIDY1LCAxMjgsIDc4LCA4OSwgODUsIDg4LCAxMjgsIDc4LCA4OSwgODUsIAotICAgIDg1LCAxMjgsIDc4LCA4OSwgODUsIDg0LCAxMjgsIDc4LCA4OSwgODUsIDgwLCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3OCwgODksIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDEyOCwgNzgsIDg5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzgsIDg5LCA4NSwgNjksIDEyOCwgNzgsIDg5LCA4NSwgMTI4LCA3OCwgODksIDc5LCA4OCwgMTI4LCA3OCwgODksIDc5LCAKLSAgICA4NCwgMTI4LCA3OCwgODksIDc5LCA4MCwgMTI4LCA3OCwgODksIDc5LCA3OSwgMTI4LCA3OCwgODksIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgODksIDc5LCA2NSwgMTI4LCA3OCwgODksIDc5LCAxMjgsIDc4LCA4OSwgNzQsIDY1LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDIxMiwgNzgsIDg5LCA3MywgMjExLCA3OCwgODksIAotICAgIDczLCAyMTAsIDc4LCA4OSwgNzMsIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDc4LCA0NSwgNjgsIDc5LCAxMjgsIDc4LCA4OSwgCi0gICAgNzMsIDc4LCAxMjgsIDc4LCA4OSwgNzMsIDczLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgODksIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDc4LCA4OSwgNzMsIDY5LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDEyOCwgNzgsIDg5LCAyMDEsIDc4LCA4OSwgNzIsIDY1LCAxMjgsIDc4LCA4OSwgNjksIDg0LCAxMjgsIDc4LCA4OSwgNjksIAotICAgIDIxMiwgNzgsIDg5LCA2OSwgNzgsIDEyOCwgNzgsIDg5LCA2OSwgNzIsIDEyOCwgNzgsIDg5LCA2OSwgMjAwLCA3OCwgODksIAotICAgIDY5LCA2OSwgMTI4LCA3OCwgODksIDY5LCAxMjgsIDc4LCA4OSwgMTk2LCA3OCwgODksIDY3LCA2NSwgMTI4LCA3OCwgODksIAotICAgIDY1LCA4NSwgMTI4LCA3OCwgODksIDY1LCA3MywgMTI4LCA3OCwgODksIDY1LCA3MiwgMTI4LCA3OCwgODksIDY1LCA2OSwgCi0gICAgNzcsIDY1LCA2OSwgMTI4LCA3OCwgODksIDY1LCA2NSwgMTI4LCA3OCwgODcsIDc5LCA3OSwgMTI4LCA3OCwgODcsIDc5LCAKLSAgICAxMjgsIDc4LCA4NywgNzMsIDczLCAxMjgsIDc4LCA4NywgNzMsIDEyOCwgNzgsIDg3LCA2OSwgMTI4LCA3OCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3OCwgODcsIDY1LCAxMjgsIDc4LCA4NywgMTI4LCA3OCwgODYsIDEyOCwgNzgsIDg1LCA4OCwgMTI4LCA3OCwgCi0gICAgODUsIDg1LCA3OCwgMTI4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA4NSwgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCAKLSAgICA4NSwgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCAKLSAgICA4MCwgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCAKLSAgICA4NSwgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIAotICAgIDc4LCA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgCi0gICAgODUsIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCAKLSAgICA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIAotICAgIDY2LCA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIAotICAgIDc4LCA4NSwgNzYsIDEyOCwgNzgsIDg1LCA3NSwgODQsIDY1LCAxMjgsIDc4LCA4NSwgNjksIDc4LCA3MSwgMTI4LCA3OCwgCi0gICAgODUsIDY5LCAxMjgsIDc4LCA4NSwgNjYsIDczLCA2NSwgMjA2LCA3OCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgODUsIDQ5LCAKLSAgICA0OSwgMTI4LCA3OCwgODUsIDQ5LCAxNzcsIDc4LCA4NSwgNDgsIDUwLCA1MCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIAotICAgIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgCi0gICAgNDksIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCAxMjgsIDc4LCAKLSAgICA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDc4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUwLCAKLSAgICAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIAotICAgIDQ5LCA0OCwgNjUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgCi0gICAgODUsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA3OCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MSwgCi0gICAgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA4NCwgODgsIDczLCAKLSAgICA4NiwgMTI4LCA3OCwgODQsIDg1LCA4NSwgMTI4LCA3OCwgODQsIDg1LCA3NywgMTI4LCA3OCwgODQsIDg1LCA3NCwgMTI4LCAKLSAgICA3OCwgODQsIDIxMywgNzgsIDg0LCA4MywgNjUsIDg1LCAxMjgsIDc4LCA4NCwgNzksIDgxLCA4MCwgNjksIDc4LCAxMjgsIAotICAgIDc4LCA4NCwgNzksIDcxLCAxMjgsIDc4LCA4NCwgNzksIDE5OSwgNzgsIDg0LCA3MywgNjksIDE5NywgNzgsIDg0LCA3MiwgCi0gICAgNjUsIDg1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3OCwgNzEsIDY2LCA2NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzcsIAotICAgIDEyOCwgNzgsIDg0LCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA2OSwgNjksIDEyOCwgNzgsIDg0LCA2NSwgODAsIDEyOCwgNzgsIAotICAgIDg0LCA2NSwgMjA4LCA3OCwgODQsIDY1LCA2NSwgMTI4LCA3OCwgODMsIDg1LCA3OSwgMjEyLCA3OCwgODMsIDg1LCA3OCwgCi0gICAgMTI4LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3OCwgODMsIDc5LCA3NywgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDg0LCAKLSAgICAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODAsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIAotICAgIDg1LCA4NCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgMjEyLCA3OCwgODMsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4MywgCi0gICAgNzIsIDg1LCA2OSwgMTI4LCA3OCwgODMsIDcyLCA3MywgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDY5LCA2OSwgMTI4LCAKLSAgICA3OCwgODMsIDcyLCA2NSwgODEsIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDEyOCwgNzgsIDgzLCA2OSwgODUsIDY1LCA2OSwgNzgsIAotICAgIDEyOCwgNzgsIDgzLCA2OSwgNzgsIDEyOCwgNzgsIDgzLCA2NSwgMTI4LCA3OCwgODIsIDg5LCA4OCwgMTI4LCA3OCwgODIsIAotICAgIDg5LCA4NCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDEyOCwgNzgsIDgyLCA4OSwgCi0gICAgODAsIDEyOCwgNzgsIDgyLCA4OSwgMTI4LCA3OCwgODIsIDg1LCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4NCwgMTI4LCA3OCwgCi0gICAgODIsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDEyOCwgNzgsIDgyLCA4NSwgODAsIDEyOCwgNzgsIDgyLCAKLSAgICA4NSwgNjUsIDEyOCwgNzgsIDgyLCA4NSwgMTI4LCA3OCwgODIsIDc5LCA4OCwgMTI4LCA3OCwgODIsIDc5LCA4MCwgMTI4LCAKLSAgICA3OCwgODIsIDc5LCAxMjgsIDc4LCA4MiwgNjksIDg4LCAxMjgsIDc4LCA4MiwgNjksIDg0LCAxMjgsIDc4LCA4MiwgNjksIAotICAgIDIxMSwgNzgsIDgyLCA2OSwgODAsIDEyOCwgNzgsIDgyLCA2OSwgMTI4LCA3OCwgODIsIDY1LCA4OCwgMTI4LCA3OCwgODIsIAotICAgIDY1LCA4NCwgMTI4LCA3OCwgODIsIDY1LCA4MCwgMTI4LCA3OCwgODIsIDY1LCAxMjgsIDc4LCA4MSwgNzMsIDcxLCAxMjgsIAotICAgIDc4LCA3OSwgODksIDEyOCwgNzgsIDc5LCA4OCwgMTI4LCA3OCwgNzksIDg3LCA2NywgMTI4LCA3OCwgNzksIDg2LCA2OSwgCi0gICAgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA4NCwgODQsIDc5LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA4MywgMTI4LCAKLSAgICA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzgsIAotICAgIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDc1LCAxMjgsIDc4LCA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCAyMDMsIDc4LCA3OSwgCi0gICAgODQsIDY5LCAxMjgsIDc4LCA3OSwgODQsIDE5NywgNzgsIDc5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA3OCwgNzksIDg0LCAKLSAgICA2NywgNzIsIDEyOCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDc5LCA4NCwgMTI4LCA3OCwgNzksIAotICAgIDIxMiwgNzgsIDc5LCA4MywgNjksIDEyOCwgNzgsIDc5LCA4MywgMTk3LCA3OCwgNzksIDgyLCA4NCwgNzIsIDg3LCA2OSwgCi0gICAgODMsIDIxMiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgODIsIDIwNiwgNzgsIDc5LCA4MiwgODQsIDcyLCA2OSwgNjUsIDgzLCAKLSAgICA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDc4LCA3OSwgODIsIDc3LCA2NSwgMjA0LCA3OCwgNzksIAotICAgIDgyLCA2OCwgNzMsIDE5NSwgNzgsIDc5LCAyMTAsIDc4LCA3OSwgODAsIDEyOCwgNzgsIDc5LCA3OSwgNzgsIDg1LCAxMjgsIAotICAgIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc5LCA3OCwgNzAsIDc5LCA4MiwgNzUsIDczLCA3OCwgNzEsIDEyOCwgNzgsIDc5LCA3OCwgCi0gICAgNDUsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIAotICAgIDEyOCwgNzgsIDc5LCA3OCwgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzgsIDEyOCwgCi0gICAgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgMjA0LCA3OCwgNzksIDc1LCA3MiwgODUsIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAKLSAgICAxMjgsIDc4LCA3OSwgNjUsIDEyOCwgNzgsIDc5LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIAotICAgIDEyOCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIAotICAgIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAKLSAgICA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIAotICAgIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIAotICAgIDc4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgCi0gICAgNzgsIDcxLCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDEyOCwgNzgsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCAKLSAgICA3OCwgNzYsIDY1LCA4NSwgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU3LCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKLSAgICA1MiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA3NiwgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA3NiwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCAKLSAgICA3NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MiwgCi0gICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3OCwgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgNzMsIDc4LCAKLSAgICA2OCwgNzMsIDEyOCwgNzgsIDc1LCA2NSwgODUsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIAotICAgIDc0LCA4OSwgODgsIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgCi0gICAgODksIDgyLCAxMjgsIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgCi0gICAgNzgsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCAKLSAgICA3OCwgNzQsIDg1LCA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIAotICAgIDc0LCA4NSwgNjksIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgCi0gICAgNzksIDg4LCAxMjgsIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAKLSAgICAxMjgsIDc4LCA3NCwgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDEyOCwgNzgsIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCAKLSAgICA3NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIAotICAgIDY5LCAxMjgsIDc4LCA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgCi0gICAgNzYsIDczLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA3MywgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIAotICAgIDcxLCA4NSwgMTI4LCA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgCi0gICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDc4LCA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCAKLSAgICA2OCwgNjUsIDE3OCwgNzgsIDczLCA3OCwgNTcsIDEyOCwgNzgsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDc3LCAxMjgsIDc4LCAKLSAgICA3MywgMjA1LCA3OCwgNzMsIDc1LCA3OSwgNzYsIDgzLCA2NiwgODUsIDgyLCAxOTksIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIAotICAgIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgCi0gICAgNzMsIDcyLCA4MywgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIAotICAgIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgCi0gICAgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCAKLSAgICA4OCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg1LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCAKLSAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCAKLSAgICA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgCi0gICAgNzgsIDczLCA2NiwgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgCi0gICAgNzgsIDcyLCA3NCwgNjUsIDEyOCwgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgODUsIDg1LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIAotICAgIDEyOCwgNzgsIDcxLCA4NSwgNzksIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzksIDIxMywgNzgsIDcxLCA3OSwgODQsIDEyOCwgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCAKLSAgICA3OSwgODAsIDEyOCwgNzgsIDcxLCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIAotICAgIDcyLCAxMjgsIDc4LCA3MSwgNzksIDY5LCAyMDAsIDc4LCA3MSwgMjA3LCA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIAotICAgIDc4LCA3MSwgNzUsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCi0gICAgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDg1LCAxOTcsIDc4LCA3MSwgNzUsIDczLCA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIAotICAgIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAKLSAgICAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCi0gICAgNjUsIDc3LCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3MSwgNzMsIDY5LCAxMjgsIDc4LCA3MSwgNzIsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDg3LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIDcxLCAKLSAgICA4NSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIDE5NywgCi0gICAgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgMjA2LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgCi0gICAgNzEsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCAKLSAgICA3OCwgNzEsIDcxLCA2OSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIAotICAgIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIAotICAgIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAKLSAgICAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCAKLSAgICA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIAotICAgIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIAotICAgIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAKLSAgICAxOTcsIDc4LCA2OSwgODcsIDEyOCwgNzgsIDY5LCAyMTUsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDc2LCAxMjgsIDc4LCAKLSAgICA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCA4NywgNzksIAotICAgIDgyLCA3NSwgNjksIDE5NiwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIAotICAgIDc4LCA2OSwgODIsIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgCi0gICAgNjksIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA3OSwgCi0gICAgNjksIDEyOCwgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgCi0gICAgNzgsIDY5LCA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCAKLSAgICA2NSwgODQsIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCAxMjgsIAotICAgIDc4LCA2OSwgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgCi0gICAgNjgsIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCAKLSAgICA4NSwgODAsIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCAKLSAgICA2OCwgNzksIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIAotICAgIDc4LCAxMjgsIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgCi0gICAgODgsIDEyOCwgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgCi0gICAgNzgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCAKLSAgICA3OCwgNjgsIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDc4LCA2OCwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgCi0gICAgNjksIDgwLCAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgCi0gICAgNzgsIDY4LCA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCAKLSAgICA2NSwgNjUsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIAotICAgIDY1LCAxOTMsIDc4LCA2NywgNzIsIDY1LCA4NSwgMTI4LCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgCi0gICAgMTI4LCA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgCi0gICAgNzgsIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCAKLSAgICA4MiwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCAKLSAgICA3OCwgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIAotICAgIDc5LCAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIAotICAgIDc4LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgCi0gICAgNzgsIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAKLSAgICAxMjgsIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIAotICAgIDg1LCA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDY4LCA3MywgMjE4LCA3OCwgNjUsIDg0LCA4NSwgODIsIDY1LCAKLSAgICAyMDQsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDc4LCA2NSwgODMsIDc1LCA2NSwgODAsIDIwMSwgNzgsIAotICAgIDY1LCA4MywgNzIsIDczLCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2NSwgODMsIDY1LCAyMDQsIDc4LCAKLSAgICA2NSwgODIsIDgyLCA3OSwgMjE1LCA3OCwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OSwgMjExLCAKLSAgICA3OCwgNjUsIDc4LCA4MywgNjUsIDc4LCA2NSwgODEsIDEyOCwgNzgsIDY1LCA3OCwgNzEsIDc3LCA3OSwgNzgsIDg0LCA3MiwgCi0gICAgNzksIDEyOCwgNzgsIDY1LCA3OCwgNjgsIDEyOCwgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNzgsIDY1LCA3NywgNjksIDEyOCwgCi0gICAgNzgsIDY1LCA3NywgMTk3LCA3OCwgNjUsIDc3LCA1MCwgMTI4LCA3OCwgNjUsIDc3LCAxMjgsIDc4LCA2NSwgNzUsIDEyOCwgCi0gICAgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCAKLSAgICA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCAKLSAgICA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgMTI4LCA3OCwgNjUsIDY2LCA2NSwgODQsIAotICAgIDY1LCA2OSwgNjUsIDIwNiwgNzgsIDY1LCA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgCi0gICAgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCAKLSAgICA3OCwgNjUsIDUyLCAxMjgsIDc4LCA2NSwgNTAsIDEyOCwgNzgsIDY1LCA0NSwgNTAsIDEyOCwgNzgsIDQ4LCA1MiwgNTAsIAotICAgIDEyOCwgNzgsIDQ4LCA1MiwgNDksIDEyOCwgNzgsIDQ4LCA1MiwgNDgsIDEyOCwgNzgsIDQ4LCA1MSwgNTcsIDEyOCwgNzgsIAotICAgIDQ4LCA1MSwgNTYsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCAxMjgsIDc4LCA0OCwgCi0gICAgNTEsIDU0LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MywgMTI4LCA3OCwgNDgsIDUxLCAKLSAgICA1MiwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIAotICAgIDUxLCAxMjgsIDc4LCA0OCwgNTEsIDUwLCAxMjgsIDc4LCA0OCwgNTEsIDQ5LCAxMjgsIDc4LCA0OCwgNTEsIDQ4LCAxMjgsIAotICAgIDc4LCA0OCwgNTAsIDU3LCAxMjgsIDc4LCA0OCwgNTAsIDU2LCAxMjgsIDc4LCA0OCwgNTAsIDU1LCAxMjgsIDc4LCA0OCwgCi0gICAgNTAsIDU0LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OCwgNDgsIDUwLCA1MywgMTI4LCA3OCwgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA3OCwgNDgsIDUwLCA1MSwgMTI4LCA3OCwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA3OCwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjYsIDEyOCwgNzgsIAotICAgIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA0OCwgCi0gICAgNDksIDU0LCAxMjgsIDc4LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDc4LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA0OCwgNDksIDQ5LCAxMjgsIDc4LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCAKLSAgICA0OCwgNDgsIDU3LCAxMjgsIDc4LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA0OCwgNDgsIAotICAgIDU0LCAxMjgsIDc4LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA0OCwgNDgsIDUyLCAxMjgsIDc4LCA0OCwgNDgsIDUxLCAxMjgsIAotICAgIDc4LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA0OCwgNDgsIDQ5LCAxMjgsIDc4LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3OCwgCi0gICAgNDUsIDY1LCA4MiwgMjE3LCA3NywgODksIDg4LCAxMjgsIDc3LCA4OSwgODQsIDEyOCwgNzcsIDg5LCA4MywgNzYsIDczLCAKLSAgICA4NCwgNjksIDEyOCwgNzcsIDg5LCA4MCwgMTI4LCA3NywgODksIDY1LCAxMjgsIDc3LCA4OSwgMTkzLCA3NywgODksIDEyOCwgCi0gICAgNzcsIDIxNywgNzcsIDg3LCA3OSwgNzksIDEyOCwgNzcsIDg3LCA3OSwgMTI4LCA3NywgODcsIDczLCA3MywgMTI4LCA3NywgCi0gICAgODcsIDczLCAxMjgsIDc3LCA4NywgNjksIDY5LCAxMjgsIDc3LCA4NywgNjksIDEyOCwgNzcsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgNzcsIDg3LCA2NSwgMTI4LCA3NywgODcsIDEyOCwgNzcsIDIxNSwgNzcsIDg2LCA4MywgMTI4LCA3NywgODYsIDc5LCA4MCwgCi0gICAgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCA3MSwgNjUsIDc3LCAxMjgsIDc3LCAKLSAgICA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCA3MywgNzUsIDY1LCA4NCwgNzksIAotICAgIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIDg1LCA4NSwgMTI4LCA3NywgCi0gICAgODUsIDg0LCAxMjgsIDc3LCA4NSwgODMsIDczLCA2NywgMTI4LCA3NywgODUsIDgzLCA3MywgMTk1LCA3NywgODUsIDgzLCAKLSAgICA3MiwgODIsIDc5LCA3OSwgNzcsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDUxLCAxMjgsIDc3LCA4NSwgODMsIDcyLCAxNzksIAotICAgIDc3LCA4NSwgODMsIDcyLCAxMjgsIDc3LCA4NSwgODMsIDIwMCwgNzcsIDg1LCA4MywgMTI4LCA3NywgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3NywgODUsIDgyLCA3MSwgODUsIDUwLCAxMjgsIDc3LCA4NSwgODIsIDY5LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAKLSAgICA2NSwgMTI4LCA3NywgODUsIDgyLCA2OCwgMTkzLCA3NywgODUsIDgyLCAxMjgsIDc3LCA4NSwgODEsIDY4LCA2NSwgNzcsIAotICAgIDEyOCwgNzcsIDg1LCA4MCwgMTI4LCA3NywgODUsIDc5LCA4OCwgMTI4LCA3NywgODUsIDc5LCA4NCwgMTI4LCA3NywgODUsIAotICAgIDc5LCA4MCwgMTI4LCA3NywgODUsIDc5LCA3NywgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNzksIDEyOCwgNzcsIDg1LCA3OCwgCi0gICAgODMsIDg1LCA2NiwgMTI4LCA3NywgODUsIDc4LCA2NSwgNzIsIDEyOCwgNzcsIDg1LCA3OCwgMTI4LCA3NywgODUsIDc2LCAKLSAgICA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIAotICAgIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAKLSAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA2OSwgMTI4LCA3NywgODUsIAotICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgMTk3LCA3NywgODUsIDc2LCA4NCwgNzMsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NywgCi0gICAgODUsIDc2LCA4NCwgNzMsIDc3LCA2NSwgODAsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDIwMSwgNzcsIDg1LCA3NiwgODQsIDY1LCAKLSAgICA3OCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIAotICAgIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDc4LCAxMjgsIAotICAgIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgCi0gICAgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDgzLCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCAKLSAgICA4MiwgMjA3LCA3NywgODAsIDY1LCAxMjgsIDc3LCA3OSwgODksIDY1LCA3MywgMTI4LCA3NywgNzksIDg4LCAxMjgsIDc3LCAKLSAgICA3OSwgODYsIDczLCAxOTcsIDc3LCA3OSwgODYsIDY5LCAyMTEsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAotICAgIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCAKLSAgICA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgCi0gICAgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDY4LCA3MywgNjUsIAotICAgIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3NywgNzksIDg2LCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA3NywgNzksIDg2LCA2OSwgMTk2LCA3NywgNzksIDg2LCA2OSwgMTI4LCA3NywgNzksIDg1LCAKLSAgICA4NCwgNzIsIDEyOCwgNzcsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDgzLCAxOTcsIDc3LCA3OSwgODUsIAotICAgIDc4LCA4NCwgNjUsIDczLCA3OCwgODMsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDc3LCA3OSwgCi0gICAgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDc3LCA3OSwgODUsIDc4LCAyMTIsIDc3LCA3OSwgODUsIDc4LCA2OCwgMTI4LCAKLSAgICA3NywgNzksIDg1LCA3OCwgMTk2LCA3NywgNzksIDg0LCA3OSwgODIsIDg3LCA2NSwgODksIDEyOCwgNzcsIDc5LCA4NCwgNzksIAotICAgIDgyLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNzcsIDc5LCA4NCwgNzksIDIxMCwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODMsIDgxLCA4NSwgNjksIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCAKLSAgICA4NSwgNzcsIDEyOCwgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIAotICAgIDcxLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAKLSAgICAyMDYsIDc3LCA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDY4LCAxMjgsIDc3LCA3OSwgNzksIDE5NiwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgCi0gICAgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCAKLSAgICA3OSwgNzgsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIAotICAgIDc5LCA3OCwgNzksIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgCi0gICAgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAotICAgIDIxMSwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgCi0gICAgODMsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIAotICAgIDEyOCwgNzcsIDc5LCA3OCwgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgCi0gICAgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc3LCA3OSwgNzgsIDY5LCA4OSwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCAKLSAgICA3OSwgNzgsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCAKLSAgICA3MiwgNjUsIDc3LCA3NywgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCA4MiwgNDUsIDU3LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU2LCAxMjgsIDc3LCA3OSwgCi0gICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU1LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIAotICAgIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgCi0gICAgNzMsIDY5LCA4MiwgNDUsIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUxLCAxMjgsIDc3LCAKLSAgICA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCi0gICAgNDUsIDQ5LCA1NCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgNzcsIDc5LCAKLSAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MSwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgNzcsIDc5LCAKLSAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OCwgMTI4LCA3NywgNzksIDY4LCAyMDEsIDc3LCA3OSwgNjgsIDY5LCA4MywgODQsIDg5LCAxMjgsIDc3LCAKLSAgICA3OSwgNjgsIDY5LCA3NywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDgzLCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgCi0gICAgMTI4LCA3NywgNzksIDY4LCA2OSwgMTI4LCA3NywgNzksIDY2LCA3MywgNzYsIDE5NywgNzcsIDc5LCA2NSwgMTI4LCA3NywgCi0gICAgMjA3LCA3NywgNzgsIDg5LCA2NSwgMjA1LCA3NywgNzgsIDY1LCA4MywgMTI4LCA3NywgNzcsIDgzLCA4MCwgMTI4LCA3NywgCi0gICAgNzcsIDEyOCwgNzcsIDIwNSwgNzcsIDc2LCA2NSwgMTI4LCA3NywgNzYsIDEyOCwgNzcsIDc1LCA4MCwgNjUsIDgyLCA2NSwgCi0gICAgMjA5LCA3NywgNzMsIDg4LCAxMjgsIDc3LCA3MywgODQsIDEyOCwgNzcsIDczLCA4MywgODIsIDY1LCAxMjgsIDc3LCA3MywgCi0gICAgODIsIDczLCA2NiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDEyOCwgNzcsIDczLCA4MiwgNjksIDY4LCAKLSAgICAxMjgsIDc3LCA3MywgODAsIDEyOCwgNzcsIDczLCA3OCwgODksIDEyOCwgNzcsIDczLCA3OCwgODUsIDgzLCA0NSwgNzksIAotICAgIDgyLCA0NSwgODAsIDc2LCA4NSwgMjExLCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDgzLCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAKLSAgICAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgCi0gICAgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAKLSAgICA4MywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAotICAgIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgCi0gICAgNzMsIDg0LCA2NSwgODIsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgMTI4LCAKLSAgICA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzcsIAotICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCAKLSAgICA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA2NSwgCi0gICAgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCAKLSAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCi0gICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDc3LCA3MywgNjgsIDQ1LCA3NiwgNjksIDg2LCA2OSwgMjA0LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIAotICAgIDc5LCA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgCi0gICAgNzcsIDczLCA2NywgODIsIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgCi0gICAgNzcsIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIAotICAgIDcxLCA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgCi0gICAgMTI4LCA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgCi0gICAgNjksIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgCi0gICAgNzcsIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIAotICAgIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgCi0gICAgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCAKLSAgICA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCAKLSAgICA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgCi0gICAgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCAKLSAgICA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCAKLSAgICA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgCi0gICAgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCAKLSAgICA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIAotICAgIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgCi0gICAgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgMTk3LCA3NywgNjksIDgzLCAKLSAgICA3OSwgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIAotICAgIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAKLSAgICAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIAotICAgIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCA2OSwgNzgsIDc5LCA4MiwgNjUsIDIwMCwgCi0gICAgNzcsIDY5LCA3OCwgNzksIDY5LCAxMjgsIDc3LCA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCAKLSAgICA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIAotICAgIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgCi0gICAgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgCi0gICAgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgCi0gICAgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgNjksIDIwMSwgNzcsIDY5LCAKLSAgICA2OSwgODQsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDc3LCAxMjgsIDc3LCA2OSwgNjksIAotICAgIDIwMiwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgCi0gICAgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDc3LCA2OSwgNjgsIDY1LCA3NiwgMTI4LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIDc3LCAKLSAgICA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgNjUsIAotICAgIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgMTk2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIAotICAgIDY1LCAyMDYsIDc3LCAxOTUsIDc3LCA2NiwgODUsIDg1LCAxMjgsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIAotICAgIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgCi0gICAgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAKLSAgICAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIAotICAgIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCAKLSAgICA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIAotICAgIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgCi0gICAgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAKLSAgICAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgCi0gICAgNjUsIDg5LCA2OSwgMjAzLCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCAKLSAgICA2NSwgODgsIDczLCA3NywgNzMsIDkwLCA2OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIAotICAgIDEyOCwgNzcsIDY1LCA4NSwgMTI4LCA3NywgNjUsIDg0LCA4NCwgNzksIDY3LCA3NSwgMTI4LCA3NywgNjUsIDg0LCA4MiwgCi0gICAgNzMsIDg4LCAxMjgsIDc3LCA2NSwgODQsIDY5LCA4MiwgNzMsIDY1LCA3NiwgODMsIDEyOCwgNzcsIDY1LCA4NCwgMTI4LCAKLSAgICA3NywgNjUsIDgzLCAyMTMsIDc3LCA2NSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDc3LCA2NSwgODMsIDgzLCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDc3LCA2NSwgODMsIDc5LCA4MiwgMTkzLCA3NywgNjUsIDgzLCA3NSwgMTI4LCA3NywgNjUsIDgzLCA3MiwgCi0gICAgNzAsIDY1LCA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgNzIsIDUwLCAxMjgsIDc3LCA2NSwgODMsIDY3LCA4NSwgNzYsIDczLCAKLSAgICA3OCwgMTk3LCA3NywgNjUsIDgyLCA4OSwgMTI4LCA3NywgNjUsIDgyLCA4NywgNjUsIDgyLCAyMDEsIDc3LCA2NSwgODIsIAotICAgIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgCi0gICAgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDIxMSwgNzcsIDY1LCAKLSAgICA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIDgzLCAKLSAgICA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIAotICAgIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIDY1LCAKLSAgICA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCAKLSAgICA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODQsIDY5LCA3NiwgODAsIDczLCA2OSwgNjcsIDE5NywgNzcsIDY1LCA3OCwgODMsIAotICAgIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKKyAgICA4NywgNzYsIDEyOCwgNzksIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIAorICAgIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgCisgICAgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCAKKyAgICA4MCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIAorICAgIDEyOCwgNzksIDg2LCA2NSwgNzYsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgCisgICAgMTk2LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCAKKyAgICA2NiwgNzksIDIxNiwgNzksIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIAorICAgIDc4LCA2NywgMTk3LCA3OSwgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIAorICAgIDc5LCA4NCwgNzIsIDY5LCA4MiwgMjExLCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAKKyAgICAyMDYsIDc5LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIAorICAgIDEyOCwgNzksIDgzLCA2NSwgNzEsIDE5NywgNzksIDgyLCA4NCwgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgCisgICAgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCA4MywgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIAorICAgIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDc5LCA4MiwgCisgICAgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgNjksIDIxMCwgNzksIDgyLCA2NywgNzIsIAorICAgIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDc5LCA4MCwgCisgICAgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCAKKyAgICA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgNzgsIDE5OSwgNzksIAorICAgIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgODUsIDgzLCAxMjgsIDc5LCA4MCwgCisgICAgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OSwgODAsIDY5LCAKKyAgICA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNDUsIAorICAgIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgCisgICAgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIDgwLCA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCAKKyAgICA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgCisgICAgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCA3OCwgMTI4LCA3OSwgNzksIDkwLCA2OSwgMTI4LCA3OSwgNzksIDg5LCAKKyAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIDg1LCAxMjgsIDc5LCA3OSwgNzIsIAorICAgIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCA3OCwgCisgICAgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgNzgsIDc1LCA2NSwgODIsIDEyOCwgCisgICAgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCA2NSwgMjE3LCA3OSwgNzgsIDY5LCAKKyAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3OSwgNzgsIAorICAgIDY5LCA0NSwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDQ1LCA2NSwgNzgsIDY4LCA0NSwgODMsIDczLCA4OCwgODQsIAorICAgIDczLCA2OSwgODQsIDcyLCAxMjgsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAKKyAgICAxMjgsIDc5LCA3OCwgNDUsIDc5LCA3MCwgMTk4LCA3OSwgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIAorICAgIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgCisgICAgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCAKKyAgICA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCAKKyAgICA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIAorICAgIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgNzksIDczLCAyMDQsIAorICAgIDc5LCA3MiwgNzcsIDEyOCwgNzksIDcyLCAyMDUsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgCisgICAgNzUsIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCAKKyAgICA2NywgNjksIDgyLCAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIAorICAgIDc5LCA3MCwgNzAsIDEyOCwgNzksIDY5LCA4OSwgMTI4LCA3OSwgNjksIDc1LCAxMjgsIDc5LCA2OSwgNjksIDEyOCwgNzksIAorICAgIDY4LCA2OSwgNzgsIDEyOCwgNzksIDY4LCA2OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIDY3LCA4NCwgNzksIDgwLCA4NSwgCisgICAgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCA4NCwgNjksIDIxMiwgNzksIDY3LCAKKyAgICA4NCwgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgCisgICAgMjEwLCA3OSwgNjcsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAKKyAgICAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIAorICAgIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgCisgICAgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgCisgICAgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCAKKyAgICA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIAorICAgIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgCisgICAgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgCisgICAgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCAKKyAgICA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIAorICAgIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIAorICAgIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIAorICAgIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgCisgICAgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgCisgICAgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIAorICAgIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgCisgICAgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCAKKyAgICA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIAorICAgIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIAorICAgIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgCisgICAgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgCisgICAgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCAKKyAgICA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIAorICAgIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIAorICAgIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIAorICAgIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgODUsIDEyOCwgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgCisgICAgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCAKKyAgICA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIAorICAgIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIAorICAgIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgCisgICAgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgCisgICAgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCA3MywgNzgsIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIAorICAgIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgCisgICAgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIAorICAgIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgCisgICAgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCAKKyAgICA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCAKKyAgICA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCAKKyAgICA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIAorICAgIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIAorICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIAorICAgIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgCisgICAgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgCisgICAgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCAKKyAgICA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIAorICAgIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIAorICAgIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCAKKyAgICA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgCisgICAgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgCisgICAgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCAKKyAgICA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAorICAgIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgCisgICAgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIDg2LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAKKyAgICAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIDc4LCA4NCwgMjEzLCA3OCwgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCAKKyAgICA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgNzgsIDg0LCA3OSwgNzEsIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIAorICAgIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAKKyAgICAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCAKKyAgICA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIAorICAgIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIAorICAgIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgCisgICAgNjksIDEyOCwgNzgsIDgzLCA3MiwgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIAorICAgIDgzLCA3MiwgNjksIDY5LCAxMjgsIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgCisgICAgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCAKKyAgICA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIAorICAgIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgCisgICAgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIDg1LCA2NSwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAKKyAgICAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCAKKyAgICA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgMjExLCA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCAKKyAgICA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgNjUsIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIAorICAgIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIAorICAgIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgCisgICAgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCAKKyAgICA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIAorICAgIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgCisgICAgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKKyAgICA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgMjEyLCA3OCwgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgzLCAxOTcsIDc4LCAKKyAgICA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA3OCwgNzksIAorICAgIDgyLCA4NCwgNzIsIDY5LCA2NSwgODMsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzgsIDc5LCAKKyAgICA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgODIsIDY4LCA3MywgMTk1LCA3OCwgNzksIDIxMCwgNzgsIDc5LCA4MCwgMTI4LCAKKyAgICA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCA3MCwgNzksIDgyLCA3NSwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgCisgICAgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIAorICAgIDE5OSwgNzgsIDc5LCA3OCwgMTI4LCA3OCwgNzksIDc3LCA3MywgODMsIDc3LCAxOTMsIDc4LCA3OSwgNzcsIDczLCA3OCwgCisgICAgNjUsIDIwNCwgNzgsIDc5LCA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAKKyAgICAxMjgsIDc4LCA3OSwgNDUsIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgODUsIDg1LCAxMjgsIDc4LCA3OCwgODUsIAorICAgIDEyOCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIAorICAgIDc4LCA3OCwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDczLCA3MywgMTI4LCA3OCwgNzgsIDc4LCA3MywgMTI4LCA3OCwgNzgsIDc4LCA2OSwgNjksIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNjksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA3MywgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA2NSwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3OCwgMTI4LCA3OCwgNzgsIDcyLCA2NSwgCisgICAgMTI4LCA3OCwgNzgsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzksIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDczLCAKKyAgICAxMjgsIDc4LCA3OCwgNzEsIDczLCAxMjgsIDc4LCA3OCwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDcxLCA2NSwgMTI4LCAKKyAgICA3OCwgNzgsIDcxLCAxMjgsIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA2NSwgODUsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIAorICAgIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgCisgICAgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDc2LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIAorICAgIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIAorICAgIDc4LCA3NSwgNjUsIDg1LCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAKKyAgICAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCAKKyAgICA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIAorICAgIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgCisgICAgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCAKKyAgICA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCAKKyAgICA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIAorICAgIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIAorICAgIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCAKKyAgICA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIAorICAgIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgCisgICAgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgCisgICAgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCAKKyAgICA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgMTI4LCA3OCwgNzMsIAorICAgIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCA3MSwgODUsIDEyOCwgCisgICAgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCA4OSwgMTI4LCAKKyAgICA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAxMjgsIDc4LCA3MywgNzgsIAorICAgIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OCwgCisgICAgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgNjgsIDY1LCAxNzgsIDc4LCAKKyAgICA3MywgNzgsIDU3LCAxMjgsIDc4LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3NywgMTI4LCA3OCwgNzMsIDIwNSwgNzgsIDczLCAKKyAgICA3NSwgNzksIDc2LCA4MywgNjYsIDg1LCA4MiwgMTk5LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIAorICAgIDczLCA3NSwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIDczLCA3MiwgODMsIDcyLCA4NiwgCisgICAgNjUsIDgzLCA2NSwgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA3NywgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzEsIDczLCAKKyAgICA2OCwgNjUsIDY5LCA4MywgNzIsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc4LCA3MywgNzEsIDcyLCAyMTIsIAorICAgIDc4LCA3MywgNzEsIDcxLCA2NSwgNzIsIDczLCA4NCwgNjUsIDEyOCwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDczLCA2OSwgCisgICAgODUsIDc4LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzIsIAorICAgIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzgsIDczLCA2OSwgODUsIAorICAgIDc4LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MywgNjksIDg1LCAKKyAgICA2NywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3OCwgNzMsIAorICAgIDY5LCA4NSwgMjA2LCA3OCwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCAxMjgsIDc4LCA3MywgNjYsIDEyOCwgNzgsIAorICAgIDczLCA2NSwgMTI4LCA3OCwgNzMsIDUwLCAxMjgsIDc4LCA3MiwgODUsIDY5LCAxMjgsIDc4LCA3MiwgNzQsIDY1LCAxMjgsIAorICAgIDc4LCA3MiwgMTI4LCA3OCwgNzEsIDg5LCA2OSwgMTI4LCA3OCwgNzEsIDg2LCA2OSwgMTI4LCA3OCwgNzEsIDg1LCA4NSwgCisgICAgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDc5LCAKKyAgICAxMjgsIDc4LCA3MSwgODUsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIAorICAgIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIAorICAgIDc4LCA3MSwgNzksIDg0LCAxMjgsIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgCisgICAgNzksIDc4LCAxMjgsIDc4LCA3MSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCAKKyAgICA2OSwgMjAwLCA3OCwgNzEsIDIwNywgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIAorICAgIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCAKKyAgICA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIAorICAgIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgCisgICAgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIAorICAgIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgCisgICAgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIDcyLCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCAKKyAgICA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIAorICAgIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIAorICAgIDIwNiwgNzgsIDcxLCA3MSwgODUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3MywgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgNzEsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDY1LCA2OSwgCisgICAgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCAKKyAgICAxMjgsIDc4LCA3MSwgNjksIDg4LCAxMjgsIDc4LCA3MSwgNjksIDg1LCA4MiwgNjksIDg1LCA4NCwgMTI4LCA3OCwgNzEsIAorICAgIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDY5LCA2NSwgCisgICAgNjgsIDY1LCA3NiwgMTI4LCA3OCwgNzEsIDY1LCA4OCwgMTI4LCA3OCwgNzEsIDY1LCA4NSwgMTI4LCA3OCwgNzEsIDY1LCAKKyAgICA4NCwgMTI4LCA3OCwgNzEsIDY1LCAyMTEsIDc4LCA3MSwgNjUsIDgxLCAxMjgsIDc4LCA3MSwgNjUsIDgwLCAxMjgsIDc4LCAKKyAgICA3MSwgNjUsIDc4LCA3MSwgODUsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA2NSwgNzMsIDEyOCwgNzgsIAorICAgIDcxLCA2NSwgNzIsIDEyOCwgNzgsIDcxLCA2NSwgNjUsIDczLCAxMjgsIDc4LCA3MSwgMTkzLCA3OCwgNzAsIDEyOCwgNzgsIAorICAgIDY5LCA4OCwgMjEyLCA3OCwgNjksIDg4LCAxMjgsIDc4LCA2OSwgODcsIDgzLCA4MCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgCisgICAgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4NywgNzYsIDczLCA3OCwgMTk3LCA3OCwgNjksIDg3LCAKKyAgICAxMjgsIDc4LCA2OSwgMjE1LCA3OCwgNjksIDg1LCA4NCwgODIsIDY1LCA3NiwgMTI4LCA3OCwgNjksIDg1LCA4NCwgODIsIAorICAgIDY1LCAyMDQsIDc4LCA2OSwgODUsIDg0LCA2OSwgODIsIDEyOCwgNzgsIDY5LCA4NCwgODcsIDc5LCA4MiwgNzUsIDY5LCAKKyAgICAxOTYsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgNjksIDgyLCAKKyAgICAxOTYsIDc4LCA2OSwgODEsIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OSwgODAsIDg0LCA4NSwgNzgsIDY5LCAxMjgsIAorICAgIDc4LCA2OSwgODAsIDEyOCwgNzgsIDY5LCA3OSwgMTI4LCA3OCwgNjksIDIwNywgNzgsIDY5LCA3OCwgNzksIDY5LCAxMjgsIAorICAgIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCA3OCwgMTI4LCA3OCwgNjksIDc2LCAxMjgsIDc4LCA2OSwgCisgICAgNzMsIDg0LCA3MiwgNjksIDIxMCwgNzgsIDY5LCA3MSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY5LCA3MSwgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgMTI4LCA3OCwgNjksIAorICAgIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA4NSwgCisgICAgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIDc4LCA2OCwgODUsIDgwLCAKKyAgICAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgMTI4LCA3OCwgNjgsIDc5LCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgNjgsIDc5LCA3OCwgMTI4LCAKKyAgICA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCA2OCwgNzMsIDg4LCAxMjgsIAorICAgIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIDgwLCAxMjgsIDc4LCA2OCwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgNjUsIDEyOCwgNzgsIDY4LCAKKyAgICA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNjgsIAorICAgIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCA4MCwgCisgICAgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgNjUsIDg4LCAxMjgsIDc4LCA2OCwgCisgICAgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAKKyAgICA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY4LCA2NSwgCisgICAgMTkzLCA3OCwgNjcsIDcyLCA2NSwgODUsIDEyOCwgNzgsIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgCisgICAgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCAKKyAgICA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIAorICAgIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgCisgICAgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgCisgICAgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCAKKyAgICA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCAKKyAgICA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgCisgICAgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA4MywgNjksIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY1LCA4NSwgNjgsIDczLCAKKyAgICAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIAorICAgIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgCisgICAgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIAorICAgIDIwNiwgNzgsIDY1LCA4MywgNjUsIDIwNCwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIAorICAgIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgCisgICAgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCAKKyAgICA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCAKKyAgICA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCAKKyAgICA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIAorICAgIDY1LCAxMjgsIDc4LCA2NSwgNjYsIDY1LCA4NCwgNjUsIDY5LCA2NSwgMjA2LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgCisgICAgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIDc4LCA2NSwgNTIsIDEyOCwgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCAKKyAgICA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCAKKyAgICA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIAorICAgIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIAorICAgIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAKKyAgICAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCAKKyAgICA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIAorICAgIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgCisgICAgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCAKKyAgICA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIAorICAgIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIAorICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgCisgICAgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgCisgICAgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIAorICAgIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgCisgICAgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIAorICAgIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgCisgICAgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgCisgICAgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCAKKyAgICA3NywgODUsIDg1LCAxMjgsIDc3LCA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIAorICAgIDczLCAxOTUsIDc3LCA4NSwgODMsIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgCisgICAgNzcsIDg1LCA4MywgNzIsIDE3OSwgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgzLCAKKyAgICAxMjgsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIAorICAgIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIAorICAgIDg1LCA4MSwgNjgsIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgCisgICAgNzksIDg0LCAxMjgsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA3OSwgMTI4LCA3NywgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgCisgICAgMjEyLCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCAKKyAgICA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgCisgICAgNzYsIDY5LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCAKKyAgICA4NSwgNzYsIDY1LCAyMTAsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgCisgICAgMjAxLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIAorICAgIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIAorICAgIDE5OSwgNzcsIDg1LCA2OSwgNzgsIDEyOCwgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIAorICAgIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgODMsIDEyOCwgNzcsIDg1LCA2NSwgCisgICAgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCAKKyAgICA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIDgyLCAyMDcsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAKKyAgICAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDIxMSwgNzcsIDc5LCAKKyAgICA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgCisgICAgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIAorICAgIDc4LCA4NCwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgCisgICAgNzgsIDg0LCAxMjgsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCAKKyAgICA3OSwgODYsIDY5LCAxMjgsIDc3LCA3OSwgODUsIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIAorICAgIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgCisgICAgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIAorICAgIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDc5LCA4MiwgCisgICAgODcsIDY1LCA4OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgODIsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA3NywgNzksIDg0LCAKKyAgICA3OSwgMjEwLCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc3LCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3NywgNzksIAorICAgIDg0LCAxMjgsIDc3LCA3OSwgODMsIDgxLCA4NSwgNjksIDEyOCwgNzcsIDc5LCA4MiwgODQsIDg1LCA4NSwgNzcsIDEyOCwgCisgICAgNzcsIDc5LCA4MiwgODQsIDY1LCA4MiwgMTI4LCA3NywgNzksIDgyLCA4MCwgNzIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAorICAgIDY1LCAyMDQsIDc3LCA3OSwgODIsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc3LCA3OSwgODAsIDEyOCwgNzcsIDc5LCA3OSwgCisgICAgODMsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3NywgNzksIDc5LCA3OCwgMTI4LCA3NywgNzksIDc5LCAyMDYsIDc3LCAKKyAgICA3OSwgNzksIDc3LCA4MCwgODUsIDgxLCAxMjgsIDc3LCA3OSwgNzksIDc3LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3OSwgNzksIAorICAgIDY4LCAxMjgsIDc3LCA3OSwgNzksIDE5NiwgNzcsIDc5LCA3OSwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzMsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDcyLCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDgzLCAKKyAgICA4NCwgNjksIDgyLCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA4MywgODQsIDY1LCA2NiwgNzYsIDE5NywgNzcsIDc5LCA3OCwgNzksIAorICAgIDgzLCA4MCwgNjUsIDY3LCAxOTcsIDc3LCA3OSwgNzgsIDc5LCA4MiwgNjUsIDczLCA3NiwgMTI4LCA3NywgNzksIDc4LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzcsIDc5LCA3OCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIDIxMSwgNzcsIDc5LCAKKyAgICA3OCwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzcsIDc5LCA3OCwgNzksIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgNzcsIAorICAgIDc5LCA3OCwgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA3OSwgNzgsIDc1LCA2OSwgODksIDEyOCwgNzcsIDc5LCA3OCwgCisgICAgNzUsIDY5LCAyMTcsIDc3LCA3OSwgNzgsIDczLCAxMjgsIDc3LCA3OSwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAKKyAgICAxMjgsIDc3LCA3OSwgNzgsIDY5LCA4OSwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCA3OSwgNzgsIDY5LCAyMTcsIAorICAgIDc3LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCAyMDYsIDc3LCA3OSwgNzYsIDEyOCwgNzcsIDc5LCA3MiwgNjUsIDc3LCA3NywgCisgICAgNjUsIDE5NiwgNzcsIDc5LCA2OCwgODUsIDc2LCAyMDcsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU3LCAKKyAgICAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU2LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAorICAgIDY5LCA4MiwgNDUsIDU1LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDU0LCAxMjgsIDc3LCA3OSwgCisgICAgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUzLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIAorICAgIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDUxLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgCisgICAgNzMsIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCAKKyAgICA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNDksIDUyLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCAKKyAgICA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA0OCwgMTI4LCAKKyAgICA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA2OCwgMjAxLCA3NywgNzksIDY4LCA2OSwgODMsIAorICAgIDg0LCA4OSwgMTI4LCA3NywgNzksIDY4LCA2OSwgODIsIDIwNiwgNzcsIDc5LCA2OCwgNjksIDc3LCAxMjgsIDc3LCA3OSwgCisgICAgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCAKKyAgICA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCAKKyAgICA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAKKyAgICAxMjgsIDc3LCA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCAKKyAgICA4NCwgMTI4LCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgCisgICAgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgCisgICAgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCAKKyAgICA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIAorICAgIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgCisgICAgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCAKKyAgICA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIAorICAgIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgCisgICAgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCA3NSwgMTI4LCA3NywgNzMsIDc2LCA3MywgODQsIDY1LCAKKyAgICA4MiwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA3MywgNzUsIAorICAgIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgNzcsIDczLCA3MywgCisgICAgNzcsIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgCisgICAgODUsIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCAKKyAgICA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKKyAgICA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIAorICAgIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgCisgICAgNzcsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIAorICAgIDE5NywgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgCisgICAgNjksIDEyOCwgNzcsIDczLCA2OCwgNDUsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCAKKyAgICA4MiwgNzksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgCisgICAgMTI4LCA3NywgNzMsIDY3LCA4MiwgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgCisgICAgMTI4LCA3NywgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCAKKyAgICA3NywgNzEsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIAorICAgIDc5LCAxMjgsIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIAorICAgIDcxLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgCisgICAgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIAorICAgIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDY1LCA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIAorICAgIDEyOCwgNzcsIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIAorICAgIDEyOCwgNzcsIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIAorICAgIDg5LCA2NSwgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgCisgICAgNzAsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCAKKyAgICA3NywgNjksIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIAorICAgIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCAKKyAgICA2OSwgODQsIDgyLCA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIAorICAgIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAKKyAgICAxMjgsIDc3LCA2OSwgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIAorICAgIDczLCA2NSwgMjA2LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAKKyAgICAxOTcsIDc3LCA2OSwgODMsIDc5LCAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCAKKyAgICA2OSwgODIsIDc1LCA3MiwgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgODIsIDczLCA2OCwgNzMsIAorICAgIDY1LCA3OCwgODMsIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgCisgICAgODIsIDY3LCA4NSwgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIDY5LCA3OCwgNzksIDgyLCAKKyAgICA2NSwgMjAwLCA3NywgNjksIDc4LCA3OSwgNjksIDEyOCwgNzcsIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIAorICAgIDc4LCAxMjgsIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAKKyAgICAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIAorICAgIDQ1LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgCisgICAgNjgsIDczLCAxOTUsIDc3LCA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCAKKyAgICA3MSwgNjUsIDg0LCA3OSwgNzgsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIAorICAgIDcxLCA2NSwgNzYsIDczLCAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCA2OSwgCisgICAgMjAxLCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgCisgICAgNzcsIDY5LCA2OSwgMjAyLCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDY4LCA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIAorICAgIDczLCA2NywgNjUsIDIwNCwgNzcsIDY5LCA2OCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgCisgICAgNjUsIDIxMiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIAorICAgIDEyOCwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIAorICAgIDIxMywgNzcsIDY3LCA3MiwgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgODUsIDEyOCwgNzcsIDY2LCA4NSwgNzksIAorICAgIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgCisgICAgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgCisgICAgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgCisgICAgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIAorICAgIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgCisgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAKKyAgICAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgCisgICAgNjYsIDUwLCAxMjgsIDc3LCA2NSwgODksIDY5LCAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCAKKyAgICA2NSwgODksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIAorICAgIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIAorICAgIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgCisgICAgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCAKKyAgICA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIAorICAgIDc3LCA2NSwgODMsIDcyLCA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgCisgICAgNjcsIDg1LCA3NiwgNzMsIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg3LCA2NSwgODIsIAorICAgIDIwMSwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgCisgICAgNjUsIDgyLCA4NCwgNzMsIDY1LCAyMDQsIDc3LCA2NSwgODIsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDc3LCA2NSwgODIsIDgyLCAKKyAgICA3MywgNjUsIDcxLCAxOTcsIDc3LCA2NSwgODIsIDc1LCAyMTEsIDc3LCA2NSwgODIsIDc1LCA2OSwgODIsIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNzUsIDQ1LCA1MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUxLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgCisgICAgNTAsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA0OSwgMTI4LCA3NywgNjUsIDgyLCA2OSwgMTI4LCA3NywgNjUsIDgyLCAKKyAgICA2NywgNzIsIDY5LCAyMDYsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgNDUsIAorICAgIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDY1LCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCA2NSwgNzAsIDEyOCwgNzcsIAorICAgIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIDEyOCwgNzcsIDY1LCAyMDgsIAorICAgIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODQsIDY5LCA3NiwgODAsIDczLCA2OSwgNjcsIDE5NywgNzcsIDY1LCA3OCwgCisgICAgODMsIDg5LCA3OSwgNzgsIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAKICAgICAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NywgNjUsIDc4LCA3MywgNjcsIDcyLCA2NSwgNjksIDY1LCAyMDYsIAogICAgIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCA3NiwgNzMsIDc4LCAKICAgICAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAyMTMsIDc3LCA2NSwgNzgsIApAQCAtMjMyMiwxNDIwICsyMzQ1LDE0MjYgQEAKICAgICA0OCwgNDgsIDE3OCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3NywgNDgsIAogICAgIDQ4LCA0OSwgMTI4LCA3NywgNDgsIDQ4LCAxNzcsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgMTI4LCAKICAgICA3NiwgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgMTI4LCAKLSAgICA3NiwgODksIDczLCA4NCwgMTI4LCA3NiwgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIAotICAgIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIAotICAgIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIAotICAgIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCAKLSAgICA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCAKLSAgICA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgMTI4LCA3NiwgODUsIDIwMCwgNzYsIDg1LCA3MSwgNzEsIDY1LCA3MSwgNjksIAotICAgIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDc2LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCAyMDQsIDc2LCA4NSwgNjksIDEyOCwgNzYsIAotICAgIDg1LCAxOTcsIDc2LCA4NSwgNjYsIDEyOCwgNzYsIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA4NSwgNTEsIDEyOCwgNzYsIAotICAgIDg1LCA1MCwgMTI4LCA3NiwgODUsIDE3OCwgNzYsIDgyLCA3OSwgMTI4LCA3NiwgODIsIDc3LCAxMjgsIDc2LCA4MiwgNzMsIAotICAgIDEyOCwgNzYsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgCi0gICAgNzgsIDcxLCAxOTcsIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCA2OSwgMTk2LCA3NiwgNzksIDg3LCAKLSAgICA2OSwgMjEwLCA3NiwgNzksIDg3LCA0NSwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCA0NSwgMTg1LCA3NiwgNzksIAotICAgIDg3LCA0NSwgNzcsIDczLCAxOTYsIDc2LCA3OSwgODcsIDQ1LCA3MCwgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDc2LCA3OSwgCi0gICAgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIDc2LCA3OSwgODUsIDY4LCAKLSAgICA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgNzYsIDc5LCA4NCwgODUsIAotICAgIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA2NSwgCi0gICAgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIDEyOCwgCi0gICAgNzYsIDc5LCA3OSwgODAsIDY5LCAxOTYsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIDc5LCAKLSAgICA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIAotICAgIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIAotICAgIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAKLSAgICA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgCi0gICAgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIAotICAgIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgCi0gICAgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCAKLSAgICA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIAotICAgIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgCi0gICAgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIDcxLCA0NSwgODMsIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCA2NywgCi0gICAgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIAotICAgIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIDczLCA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgCi0gICAgNzQsIDEyOCwgNzYsIDczLCA4OCwgMTI4LCA3NiwgNzMsIDg3LCA3OCwgMTI4LCA3NiwgNzMsIDg2LCA4MiwgMTk3LCA3NiwgCi0gICAgNzMsIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCA4NCwgNjksIAotICAgIDIxMCwgNzYsIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMjAwLCA3NiwgNzMsIDgzLCAyMTMsIDc2LCA3MywgODMsIAotICAgIDEyOCwgNzYsIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIAotICAgIDgwLCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA4MCwgMjExLCA3NiwgNzMsIDIwOCwgNzYsIDczLCA3OCwgCi0gICAgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDc4LCA3NSwgNjksIDE5NiwgNzYsIDczLCA3OCwgMjAzLCA3NiwgNzMsIDc4LCAKLSAgICA3MSwgODMsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCA3NiwgNzMsIAotICAgIDc4LCA2OSwgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1MSwgCi0gICAgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzYsIDczLCAKLSAgICA3NywgNzcsIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIDIxMywgNzYsIAotICAgIDczLCA3NywgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgCi0gICAgNzMsIDc3LCA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NywgNjYsIDIxMywgNzYsIDczLCAKLSAgICA3NywgNjYsIDIxMSwgNzYsIDczLCA3NywgMTk0LCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgODQsIAotICAgIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MSwgNzIsIDg0LCA3MiwgNzksIDg1LCA4MywgNjksIAotICAgIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCA3MywgNzEsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc2LCA3MywgCi0gICAgNzAsIDg0LCA2OSwgODIsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCAKLSAgICA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjcsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA2NiwgODIsIDY1LCAxMjgsIAotICAgIDc2LCA3MywgNjYsIDY5LCA4MiwgODQsIDg5LCAxMjgsIDc2LCA3MywgNjUsIDY2LCA3MywgNzYsIDczLCA4NCwgMjE3LCA3NiwgCi0gICAgNzIsIDczLCA3MywgMTI4LCA3NiwgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc2LCA3MiwgNjUsIAotICAgIDE5OSwgNzYsIDcyLCA2NSwgNjUsIDEyOCwgNzYsIDcyLCAxMjgsIDc2LCA2OSwgOTAsIDcyLCAxMjgsIDc2LCA2OSwgODgsIAotICAgIDEyOCwgNzYsIDY5LCA4NiwgNzMsIDg0LCA2NSwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY5LCA4NSwgNzcsIDEyOCwgCi0gICAgNzYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc2LCA2OSwgODUsIAotICAgIDEyOCwgNzYsIDY5LCAyMTMsIDc2LCA2OSwgODQsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDc2LCA2OSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDEyOCwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgODMsIDgzLCA2OSwgMjEwLCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCAKLSAgICA3MiwgNjUsIDc4LCAxMjgsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3NiwgNjksIDgwLCA2NywgNzIsIAotICAgIDE5MywgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIAotICAgIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgCi0gICAgNzgsIDczLCAyMTEsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTQsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDUzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTEsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUwLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA0OSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDIwMCwgNzYsIDY5LCA3OCwgNzEsIDY1LCAxMjgsIAotICAgIDc2LCA2OSwgNzgsIDcxLCAxOTMsIDc2LCA2OSwgNzcsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDc3LCA3OSwgNzMsIDEyOCwgCi0gICAgNzYsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDc2LCA2OSwgNzYsIDY5LCAyMTIsIDc2LCA2OSwgMjAzLCA3NiwgNjksIDczLCAKLSAgICA3NywgNzcsIDY1LCAxMjgsIDc2LCA2OSwgNzMsIDc3LCA3NywgMTkzLCA3NiwgNjksIDczLCAxMjgsIDc2LCA2OSwgNzEsIAotICAgIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgCi0gICAgNjksIDcxLCAxMjgsIDc2LCA2OSwgMTk5LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDc2LCAKLSAgICA2OSwgNzAsIDg0LCA0NSwgODQsIDc5LCA0NSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgCi0gICAgODQsIDY5LCAyMDUsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDczLCA2OCwgMTk3LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIAotICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCAKLSAgICA2NSwgNzgsIDY4LCA2OSwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgNzYsIDY5LCA3MCwgODQsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDEyOCwgNzYsIDY5LCA2OSwgODIsIDY1LCA2OSwgCi0gICAgODcsIDY1LCAxMjgsIDc2LCA2OSwgNjksIDc1LCAxMjgsIDc2LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NiwgNjksIDY4LCAKLSAgICA3MSwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDc2LCA2OSwgNjUsIDcwLCAxMjgsIAotICAgIDc2LCA2OSwgNjUsIDE5OCwgNzYsIDY5LCA2NSwgNjgsIDczLCA3OCwgMTk5LCA3NiwgNjksIDY1LCA2OCwgNjksIDgyLCAKLSAgICAxMjgsIDc2LCA2OSwgNjUsIDE5NiwgNzYsIDY4LCA2NSwgNzgsIDEyOCwgNzYsIDY4LCA1MCwgMTI4LCA3NiwgNjcsIDIwMSwgCi0gICAgNzYsIDY3LCAxOTcsIDc2LCA2NSwgOTAsIDIxNywgNzYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzYsIDY1LCAKLSAgICA4OCwgMTI4LCA3NiwgNjUsIDg3LCAxMjgsIDc2LCA2NSwgMjE1LCA3NiwgNjUsIDg1LCA3NiwgNjUsIDEyOCwgNzYsIDY1LCAKLSAgICA4NSwgNzUsIDY1LCAyMTgsIDc2LCA2NSwgODUsIDc0LCAxMjgsIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAxOTcsIAotICAgIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDc2LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgNzYsIDY1LCA4MiwgMjAxLCAKLSAgICA3NiwgNjUsIDgyLCA3MSwgNjksIDgzLCA4NCwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDIxMCwgNzYsIDY1LCA4MiwgNzEsIAotICAgIDY5LCAxMjgsIDc2LCA2NSwgODIsIDcxLCAxOTcsIDc2LCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgNjUsIDgxLCAxMjgsIAotICAgIDc2LCA2NSwgMjA3LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgCi0gICAgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDc3LCA4MCwgMTI4LCA3NiwgCi0gICAgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgMTk2LCAKLSAgICA3NiwgNjUsIDc3LCA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIDc2LCA2NSwgNzcsIDY4LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDc3LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgNzYsIDY1LCA3NywgNjUsIDY4LCA3MiwgMTI4LCA3NiwgCi0gICAgNjUsIDc2LCAxMjgsIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDg5LCA2NSwgNzksIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MCwgNTIsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDU0LCA1NCwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MiwgNTYsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDU0LCA1MiwgMTg0LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUxLCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIAotICAgIDQ5LCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ5LCAxODMsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDgsIDU2LCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MywgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUzLCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUwLCAxMjgsIDc2LCA2NSwgCi0gICAgNzUsIDQ1LCA1MiwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTYsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKLSAgICA1MiwgNTUsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTMsIAotICAgIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDE4NSwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NywgNDgsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDUxLCA1NiwgNTIsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAotICAgIDUxLCA1MiwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgCi0gICAgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1NCwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1NCwgNTMsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAotICAgIDQ5LCA1MiwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NywgCi0gICAgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgMTc3LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU1LCAxODUsIDc2LCA2NSwgNzUsIAotICAgIDQ1LCA0OCwgNTQsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTMsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgCi0gICAgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDUzLCAKLSAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDQ4LCAxMjgsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNDgsIDUxLCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAKLSAgICAxMjgsIDc2LCA2NSwgNzMsIDc4LCAxOTksIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAxMjgsIDc2LCAKLSAgICA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCA3MSwgNjUsIAotICAgIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgCi0gICAgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIDY1LCA2NywgCi0gICAgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjksIDc2LCAxMjgsIDc2LCA2NSwgNjYsIDY1LCAKLSAgICA4NCwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNjUsIAotICAgIDc3LCA4NSwgMTI4LCA3NiwgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCA3NiwgNTQsIDEyOCwgNzYsIAotICAgIDUyLCAxMjgsIDc2LCA1MSwgMTI4LCA3NiwgNTAsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgNDgsIAotICAgIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgCi0gICAgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIDg5LCAKLSAgICA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgNjUsIAotICAgIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIDczLCAKLSAgICAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCAKLSAgICA2NSwgMTI4LCA3NSwgODcsIDg2LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgNzUsIDg3LCA3OSwgNzksIAotICAgIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDc3LCAxMjgsIDc1LCA4NywgNzMsIDczLCAxMjgsIDc1LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY2LCAxMjgsIDc1LCA4NywgNjUsIAotICAgIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIAotICAgIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODYsIDEyOCwgNzUsIDg1LCA4NSwgNzIsIDEyOCwgNzUsIAotICAgIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA3NSwgCi0gICAgODUsIDgzLCA3MiwgODUsIDE3OCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAKLSAgICA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIAotICAgIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIAotICAgIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAKLSAgICAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDcxLCAxMjgsIDc1LCA4NSwgNjksIDg0LCAxMjgsIDc1LCA4NSwgNjYsIDEyOCwgCi0gICAgNzUsIDg1LCA2NSwgODYsIDEyOCwgNzUsIDg1LCA2NSwgNjYsIDEyOCwgNzUsIDg1LCA2NSwgMTI4LCA3NSwgODUsIDU1LCAKLSAgICAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgCi0gICAgMTI4LCA3NSwgODMsIDgzLCA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAKLSAgICAxMjgsIDc1LCA4MywgODMsIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCAKLSAgICA3NSwgODMsIDgzLCA2OSwgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIAotICAgIDc1LCA4MywgODMsIDY1LCA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgMTI4LCA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCAKLSAgICA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgCi0gICAgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIAotICAgIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgCi0gICAgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAKLSAgICAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCAKLSAgICA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgNzIsIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg2LCAxMjgsIAotICAgIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCA4MiwgNzksIDc4LCA3MywgCi0gICAgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIDE5NSwgNzUsIDc5LCAKLSAgICA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODAsIDEyOCwgNzUsIAotICAgIDc5LCA3OSwgODYsIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCA4NSwgODUsIDg0LCAKLSAgICAxMjgsIDc1LCA3OSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIAotICAgIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgNzUsIDc5LCA3NywgCi0gICAgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCA2NiwgMjEzLCAKLSAgICA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCA2OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIDc1LCA3OSwgMjAzLCAKLSAgICA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIDcyLCA3OSwgNzcsIAotICAgIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NiwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIDEyOCwgNzUsIAotICAgIDc5LCA2NSwgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCA2OSwgODMsIDEyOCwgNzUsIDc4LCA4NSwgNjcsIDc1LCA3NiwgCi0gICAgNjksIDEyOCwgNzUsIDc4LCA3OSwgNjYsIDgzLCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCAKLSAgICA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIAotICAgIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIAotICAgIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIAotICAgIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIAotICAgIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCi0gICAgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIAotICAgIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCAKLSAgICA3MywgODcsIDEyOCwgNzUsIDczLCA4NiwgMTI4LCA3NSwgNzMsIDg0LCAxMjgsIDc1LCA3MywgODMsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNzUsIDczLCA4MywgODMsIDEyOCwgNzUsIDczLCA4MywgMjExLCA3NSwgNzMsIDgzLCA3MywgNzcsIDUzLCAxMjgsIAotICAgIDc1LCA3MywgODMsIDczLCA3NywgMTgxLCA3NSwgNzMsIDgzLCA3MiwgMTI4LCA3NSwgNzMsIDgzLCA2NSwgNzYsIDEyOCwgCi0gICAgNzUsIDczLCA4MiwgNzksIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzcsIDY5LCA2OSwgODQsIAotICAgIDc5LCA4MiwgODUsIDEyOCwgNzUsIDczLCA4MiwgNzksIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDEyOCwgNzUsIDczLCA4MiwgCi0gICAgNzksIDEyOCwgNzUsIDczLCA4MiwgNzEsIDcyLCA3MywgMjE4LCA3NSwgNzMsIDgxLCAxMjgsIDc1LCA3MywgODAsIDEyOCwgCi0gICAgNzUsIDczLCAyMDgsIDc1LCA3MywgNzgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc1LCA3MywgNzgsIDY4LCA2OSwgODIsIDcxLCAKLSAgICA2NSwgODIsIDg0LCA2OSwgNzgsIDEyOCwgNzUsIDczLCA3NywgNzksIDc4LCA3OSwgMTI4LCA3NSwgNzMsIDc2LCA3NiwgNjksIAotICAgIDgyLCAxMjgsIDc1LCA3MywgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIAotICAgIDY5LCA4NiwgNjUsIDIwNiwgNzUsIDczLCA2OSwgODAsIDEyOCwgNzUsIDczLCA2OSwgNjksIDc3LCAxMjgsIDc1LCA3MywgCi0gICAgNjksIDEyOCwgNzUsIDczLCA2OCwgMTI4LCA3NSwgNzMsIDE5NiwgNzUsIDczLCA2NywgNzUsIDEyOCwgNzUsIDczLCA2NiwgCi0gICAgMTI4LCA3NSwgNzMsIDY1LCA4NiwgMTI4LCA3NSwgNzMsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgCi0gICAgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIAotICAgIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA4NywgNjUsIDY4LCAyMDEsIDc1LCA3MiwgODUsIDY4LCA2NSwgNzcsIDEyOCwgCi0gICAgNzUsIDcyLCA4NSwgNjUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCAKLSAgICA3OSwgNzgsIDEyOCwgNzUsIDcyLCA3OSwgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCA3NCwgNzUsIDIwMSwgNzUsIAotICAgIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDIwNywgNzUsIDcyLCA3NywgMjEzLCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgNzIsIAotICAgIDczLCA3OCwgODksIDY1LCAxMjgsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDIwMCwgNzUsIDcyLCA3MywgMTI4LCA3NSwgCi0gICAgNzIsIDIwMSwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAKLSAgICAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCAKLSAgICA2NSwgODYsIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgNzIsIDY1LCA4MiwgCi0gICAgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCA2NSwgNzgsIDY4LCAKLSAgICAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIDY1LCA3NSwgNjUsIAotICAgIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAxMjgsIDc1LCA3MiwgCi0gICAgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgCi0gICAgODksIDY3LCA2NSwgODAsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAKLSAgICA2OCwgMTI4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgMTk2LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODYsIAotICAgIDEyOCwgNzUsIDY5LCA4NSwgODksIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgODAsIDEyOCwgNzUsIDY5LCA4NSwgODMsIDY5LCA4NSwgODgsIDEyOCwgNzUsIDY5LCA4NSwgODAsIDg1LCA4MSwgMTI4LCAKLSAgICA3NSwgNjksIDg1LCA3OSwgMjEyLCA3NSwgNjksIDg1LCA3NywgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjksIDg1LCA4NCwgNzgsIAotICAgIDY4LCA2NSwgMTI4LCA3NSwgNjksIDg1LCA3NSwgNjUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDY1LCA2OSwgODQsIDc3LCA2OSwgCi0gICAgODUsIDc4LCAxMjgsIDc1LCA2OSwgODUsIDY1LCA2OSwgODIsIDczLCAxMjgsIDc1LCA2OSwgODQsIDg0LCAyMDEsIDc1LCAKLSAgICA2OSwgODMsIDcyLCA1MCwgMTI4LCA3NSwgNjksIDgyLCA2OSwgODQsIDEyOCwgNzUsIDY5LCA3OSwgODcsIDEyOCwgNzUsIAotICAgIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDE5MywgCi0gICAgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgMTkzLCA3NSwgNjksIDc4LCA2NSwgODQsIDEyOCwgNzUsIDY5LCA3OCwgMTI4LCAKLSAgICA3NSwgNjksIDIwNiwgNzUsIDY5LCA3NywgODAsIDg1LCA3NiwgMTI4LCA3NSwgNjksIDc3LCA4MCwgODUsIDIwNCwgNzUsIAotICAgIDY5LCA3NywgODAsIDc2LCA3MywgMTI4LCA3NSwgNjksIDc3LCA4MCwgNzYsIDIwMSwgNzUsIDY5LCA3NywgODAsIDcyLCA4MiwgCi0gICAgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc3LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjksIDc2LCA4NiwgNzMsIAotICAgIDIwNiwgNzUsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDc1LCA2OSwgNzIsIDY5LCAyMDAsIDc1LCA2OSwgNzIsIDEyOCwgNzUsIAotICAgIDY5LCA3MCwgODUsIDc2LCA2NSwgMTI4LCA3NSwgNjksIDY5LCA4NiwgMTI4LCA3NSwgNjksIDY5LCA4MywgODUsIDEyOCwgCi0gICAgNzUsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA3NSwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA2OSwgNjYsIAotICAgIDEyOCwgNzUsIDY5LCA2NiwgMTI4LCA3NSwgNjksIDY1LCA2NSwgNjksIDEyOCwgNzUsIDY3LCA2NSwgNzYsIDEyOCwgNzUsIAotICAgIDY2LCAxMjgsIDc1LCA2NSwgOTAsIDY1LCA3NSwgMjAwLCA3NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NSwgCi0gICAgNjUsIDg5LCA2NSwgMjAwLCA3NSwgNjUsIDg4LCAxMjgsIDc1LCA2NSwgODcsIDg2LCAxMjgsIDc1LCA2NSwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA2NSwgODcsIDY2LCAxMjgsIDc1LCA2NSwgODYsIDg5LCA3NSwgNjUsIDEyOCwgNzUsIDY1LCA4NiwgMTI4LCAKLSAgICA3NSwgNjUsIDg1LCA4NiwgMTI4LCA3NSwgNjUsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4NSwgMjA2LCA3NSwgNjUsIAotICAgIDg1LCA2NiwgMTI4LCA3NSwgNjUsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNzMsIDgzLCA4NCwgNzMsIDEyOCwgCi0gICAgNzUsIDY1LCA4NCwgNzIsIDY1LCA3NSwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgODYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCAKLSAgICA2NSwgODQsIDY1LCA4NiwgMTkzLCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgNjUsIDQ1LCA3MiwgNzMsIDgyLCA2NSwgCi0gICAgNzEsIDY1LCA3OCwgMTkzLCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MywgODIsIDY1LCAKLSAgICA4NCwgNjUsIDIwNiwgNzUsIDY1LCA4MywgODIsIDY1LCAxMjgsIDc1LCA2NSwgODMsIDgyLCAxOTMsIDc1LCA2NSwgODMsIAotICAgIDc1LCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MywgNzUsIDY1LCAyMDQsIDc1LCA2NSwgODMsIDcyLCA3NywgNzMsIDgyLCAKLSAgICAyMDEsIDc1LCA2NSwgODIsIDgzLCA3MiwgNjUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDgyLCA3OSwgODIsIDczLCA3MywgCi0gICAgMTI4LCA3NSwgNjUsIDgyLCAyMDcsIDc1LCA2NSwgODIsIDY5LCAyMDYsIDc1LCA2NSwgODIsIDY1LCA4NCwgODQsIDc5LCAKLSAgICAxMjgsIDc1LCA2NSwgODIsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgCi0gICAgNzIsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODAsIDY1LCAxMjgsIDc1LCA2NSwgODAsIDgwLCAxOTMsIDc1LCA2NSwgODAsIDc5LCAxMjgsIDc1LCA2NSwgODAsIAotICAgIDcyLCAxMjgsIDc1LCA2NSwgODAsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDIwOCwgNzUsIAotICAgIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgCi0gICAgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCAKLSAgICA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIAotICAgIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4NiwgMTI4LCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIAotICAgIDY1LCA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDY2LCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIAotICAgIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIAotICAgIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgCi0gICAgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgCi0gICAgMTI4LCA3NSwgNjUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCi0gICAgNzUsIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDY1LCAxMjgsIDc1LCA2NSwgNjUsIDY2LCAxMjgsIDc1LCAKLSAgICA2NSwgNTAsIDEyOCwgNzUsIDY1LCAxNzgsIDc1LCA0OCwgNDgsIDU2LCAxMjgsIDc1LCA0OCwgNDgsIDU1LCAxMjgsIDc1LCAKLSAgICA0OCwgNDgsIDU0LCAxMjgsIDc1LCA0OCwgNDgsIDUzLCAxMjgsIDc1LCA0OCwgNDgsIDUyLCAxMjgsIDc1LCA0OCwgNDgsIAotICAgIDUxLCAxMjgsIDc1LCA0OCwgNDgsIDUwLCAxMjgsIDc1LCA0OCwgNDgsIDQ5LCAxMjgsIDc0LCA4NywgNjUsIDEyOCwgNzQsIAotICAgIDg1LCA4NSwgMTI4LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA4NSwgODMsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAxMjgsIDc0LCAKLSAgICA4NSwgNzksIDgwLCAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCA4NSwgNzYsIAotICAgIDg5LCAxMjgsIDc0LCA4NSwgNjksIDg1LCA3MywgMTI4LCA3NCwgODUsIDY4LCA4NSwgNzYsIDEyOCwgNzQsIDg1LCA2OCwgCi0gICAgNzEsIDY5LCAxMjgsIDc0LCA4NSwgNjgsIDY5LCA3OSwgNDUsIDgzLCA4MCwgNjUsIDc4LCA3MywgODMsIDIwMCwgNzQsIDc5LCAKLSAgICA4OSwgODMsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc0LCA3OSwgODksIDc5LCA4NSwgMjExLCA3NCwgNzksIDg5LCAxMjgsIAotICAgIDc0LCA3OSwgODYsIDY5LCAxMjgsIDc0LCA3OSwgMjEyLCA3NCwgNzksIDc4LCA3MSwgMTI4LCA3NCwgNzksIDc4LCAxOTMsIAotICAgIDc0LCA3OSwgNzUsIDY5LCA4MiwgMTI4LCA3NCwgNzksIDczLCA3OCwgODQsIDgzLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgCi0gICAgNjgsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDEyOCwgNzQsIDc5LCA2NSwgMTI4LCA3NCwgNzQsIDg5LCA4OCwgMTI4LCA3NCwgCi0gICAgNzQsIDg5LCA4NCwgMTI4LCA3NCwgNzQsIDg5LCA4MCwgMTI4LCA3NCwgNzQsIDg5LCAxMjgsIDc0LCA3NCwgODUsIDg4LCAKLSAgICAxMjgsIDc0LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4MiwgMTI4LCAKLSAgICA3NCwgNzQsIDg1LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDc0LCA3NCwgODUsIDc5LCAxMjgsIDc0LCA3NCwgODUsIDEyOCwgNzQsIDc0LCA3OSwgODgsIDEyOCwgNzQsIDc0LCA3OSwgCi0gICAgODQsIDEyOCwgNzQsIDc0LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA3OSwgMTI4LCA3NCwgNzQsIDczLCA4OCwgMTI4LCA3NCwgCi0gICAgNzQsIDczLCA4NCwgMTI4LCA3NCwgNzQsIDczLCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzQsIDc0LCAKLSAgICA3MywgNjksIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4MCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgMTI4LCA3NCwgNzQsIAotICAgIDczLCAxMjgsIDc0LCA3NCwgNjksIDY5LCAxMjgsIDc0LCA3NCwgNjksIDEyOCwgNzQsIDc0LCA2NSwgMTI4LCA3NCwgNzMsIAotICAgIDc2LCAxMjgsIDc0LCA3MywgNzMsIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAKLSAgICAxMjgsIDc0LCA3MywgNjUsIDEyOCwgNzQsIDcyLCA3OSwgODgsIDEyOCwgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCAKLSAgICA3MiwgMTI4LCA3NCwgNzIsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIAotICAgIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDY1LCAxMjgsIDc0LCA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIAotICAgIDgyLCA4NSwgODMsIDY1LCA3NiwgNjksIDc3LCAxMjgsIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAKLSAgICAxMjgsIDc0LCA2OSwgODIsIDEyOCwgNzQsIDY5LCA3MiwgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCAKLSAgICA2NSwgNzgsIDEyOCwgNzQsIDY5LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIAotICAgIDc4LCAxMjgsIDc0LCA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NCwgCi0gICAgNjUsIDg3LCAxMjgsIDc0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg1LCAxMjgsIDc0LCAKLSAgICA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIAotICAgIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCAKLSAgICA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIDY1LCA3MywgMjA2LCA3NCwgNjUsIDczLCAxMjgsIDc0LCA2NSwgNzIsIAotICAgIDEyOCwgNzQsIDY1LCA2OCwgNjksIDEyOCwgNzQsIDY1LCA2NywgNzUsIDgzLCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgCi0gICAgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCAKLSAgICA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCA3MywgOTAsIAotICAgIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIDE5MywgCi0gICAgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgMTI4LCAKLSAgICA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA4NCwgNjksIDc3LCAxMjgsIAotICAgIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgODMsIDY3LCA2OSwgNzYsIDY5LCAyMTEsIDczLCA4MywgCi0gICAgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA3OSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgNzMsIDgzLCAKLSAgICA3NiwgNjUsIDc4LCA2OCwgMTI4LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIAotICAgIDc1LCA3MywgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCAKLSAgICA2NywgNzksIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDgyLCA2NiwgMTI4LCA3MywgNzksIAotICAgIDg0LCA3MywgNzAsIDczLCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCAKLSAgICAxMjgsIDczLCA3OSwgODQsIDE5MywgNzMsIDc5LCA4MiwgMTI4LCA3MywgNzksIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCAKLSAgICA3MywgNzgsIDg2LCA3MywgODMsIDczLCA2NiwgNzYsIDE5NywgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDY4LCAxMjgsIAotICAgIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCAxOTYsIDczLCA3OCwgODYsIDY5LCA4MiwgODMsIDE5NywgNzMsIDc4LCA4NCwgCi0gICAgODIsIDc5LCA2OCwgODUsIDY3LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA4NCwgNzMsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgMTk1LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgCi0gICAgNzgsIDcxLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCAKLSAgICA4MiwgODAsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzksIDY3LCA3NSwgCi0gICAgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgNzMsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA3NiwgNjUsIDY3LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDczLCA3OSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDY5LCA4MywgMjEyLCA3MywgNzgsIDg0LCA2OSwgODIsIDY3LCA2NSwgNzYsIDY1LCA4NCwgNjksIDEyOCwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA3NiwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgCi0gICAgMjA0LCA3MywgNzgsIDgzLCA4NSwgNzYsIDY1LCAyMTAsIDczLCA3OCwgODMsIDg0LCA4MiwgODUsIDc3LCA2OSwgNzgsIDg0LCAKLSAgICA2NSwgMjA0LCA3MywgNzgsIDgzLCA3MywgNjgsIDY5LCAxMjgsIDczLCA3OCwgODMsIDczLCA2OCwgMTk3LCA3MywgNzgsIAotICAgIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4MywgNjksIDY3LCA4NCwgMTI4LCA3MywgNzgsIDgzLCA2NywgCi0gICAgODIsIDczLCA4MCwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDczLCA3OCwgODAsIDg1LCAyMTIsIDczLCA3OCwgNzgsIDc5LCAKLSAgICA2NywgNjksIDc4LCA2NywgNjksIDEyOCwgNzMsIDc4LCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIAotICAgIDczLCA3OCwgNzgsIDY5LCAyMTAsIDczLCA3OCwgNzgsIDEyOCwgNzMsIDc4LCA3MywgNzgsIDcxLCA4NSwgMTI4LCA3MywgCi0gICAgNzgsIDczLCAxMjgsIDczLCA3OCwgNzIsIDczLCA2NiwgNzMsIDIxMiwgNzMsIDc4LCA3MiwgNjksIDgyLCA2OSwgNzgsIAotICAgIDIxMiwgNzMsIDc4LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA3MywgNzgsIDcxLCA4NywgNjUsIDkwLCAxMjgsIDczLCA3OCwgCi0gICAgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgNzAsIDc2LCA4NSwgNjksIDc4LCA2NywgNjksIAotICAgIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIDg5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCAKLSAgICAyMTcsIDczLCA3OCwgNjgsIDg1LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc4LCA2OCwgNzMsIDgyLCA2OSwgNjcsIAotICAgIDIxMiwgNzMsIDc4LCA2OCwgNzMsIDY3LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgCi0gICAgNzksIDIxMCwgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNzMsIDc4LCA2OCwgNzMsIDY1LCAyMDYsIDczLCA3OCwgNjgsIDY5LCAKLSAgICA4OCwgMTI4LCA3MywgNzgsIDY4LCA2OSwgODAsIDY5LCA3OCwgNjgsIDY5LCA3OCwgMjEyLCA3MywgNzgsIDY3LCA4MiwgNjksIAotICAgIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMjExLCA3MywgNzgsIDY3LCA4MiwgCi0gICAgNjksIDY1LCA4MywgNjksIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCAKLSAgICA4MCwgNzYsIDY5LCA4NCwgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3NiwgODUsIAotICAgIDY4LCA3MywgNzgsIDE5OSwgNzMsIDc4LCA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgCi0gICAgODAsIDEyOCwgNzMsIDc4LCA0NSwgNjUsIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIAotICAgIDIwNCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgCi0gICAgNjksIDY3LCA4NCwgNjUsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNzMsIDgzLCA2OSwgNzksIDIxMSwgNzMsIDc3LCA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIAotICAgIDc4LCAxMjgsIDczLCA3NywgNzMsIDIwNiwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgCi0gICAgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA2NSwgMTI4LCA3MywgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIAotICAgIDEyOCwgNzMsIDc3LCA3MywgNjgsIDczLCA2NSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgCi0gICAgNzMsIDc2LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODQsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIAotICAgIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTEsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgCi0gICAgNzYsIDczLCA3NywgNzcsIDIxMywgNzMsIDc2LCA1MCwgMTI4LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCAKLSAgICA2NSwgODIsIDE5MywgNzMsIDc0LCAxMjgsIDczLCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIAotICAgIDEyOCwgNzMsIDcxLCAyMDEsIDczLCA3MSwgNzEsIDg3LCA4MywgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIAotICAgIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgCi0gICAgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIAotICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDczLCA2OCwgNzMsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCi0gICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCi0gICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCi0gICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NywgNDgsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY4LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU2LCA2NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NiwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgCi0gICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU0LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU1LCA1MywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NSwgNTMsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgCi0gICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNzAsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDY5LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU0LCA1NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NCwgNTUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgCi0gICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDU0LCA1MywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1NCwgNTEsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgCi0gICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA3MCwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNjgsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNTMsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUzLCA1MCwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MywgNTAsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgCi0gICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNDksIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MiwgNjksIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgCi0gICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKLSAgICA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKLSAgICA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCi0gICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAotICAgIDcwLCA1NiwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKLSAgICA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgCi0gICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCAKLSAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIAotICAgIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDczLCA2NywgNzksIDc4LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4NSwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODMsIAotICAgIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA2NSwgNjgsIDczLCA3OCwgCi0gICAgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCA0NSwgODksIDgyLCAxMjgsIDczLCA2NiwgNzMsIDcwLCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA1MywgMTI4LCA3MywgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgNDgsIDQ5LCA1MCwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgCi0gICAgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ4LCAKLSAgICAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1NywgMTI4LCA3MywgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgMTI4LCA3MywgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzMsIAotICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgNzMsIDQ4LCA0OCwgNTEsIDEyOCwgNzMsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCA4OSwgODUsIDEyOCwgNzMsIDQ1LCA4OSwgNzksIDEyOCwgCi0gICAgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA2OSwgMTI4LCAKLSAgICA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgODksIDY1LCAxMjgsIDczLCA0NSwgNzksIDQ1LCA3MywgCi0gICAgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAxMjgsIDczLCA0NSwgNjYsIDY5LCA2NSwgNzcsIDEyOCwgCi0gICAgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIDQ1LCA2NSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgNzEsIAotICAgIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgODAsIDEyOCwgNzIsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIAotICAgIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgODQsIDEyOCwgNzIsIDkwLCA3MSwgMTI4LCA3MiwgODksIAotICAgIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCA4OSwgODAsIDc5LCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCAKLSAgICA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzIsIDg5LCA4MCwgNzIsIAotICAgIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCAxMjgsIDcyLCA4OSwgCi0gICAgODAsIDcyLCA2OSwgMjA2LCA3MiwgODksIDcxLCA3MywgNjksIDczLCA2NSwgMTI4LCA3MiwgODgsIDg3LCA3MSwgMTI4LCAKLSAgICA3MiwgODgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4MCwgCi0gICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDc5LCA4NCwgMTI4LCA3MiwgCi0gICAgODgsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDg0LCAKLSAgICAxMjgsIDcyLCA4OCwgNzMsIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODQsIAotICAgIDEyOCwgNzIsIDg4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgNzIsIAotICAgIDg4LCA2OSwgODgsIDEyOCwgNzIsIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCA2OSwgMTI4LCA3MiwgODgsIDY1LCA4OCwgCi0gICAgMTI4LCA3MiwgODgsIDY1LCA4NCwgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCA3MiwgODgsIDY1LCAxMjgsIDcyLCA4NywgCi0gICAgODUsIDEyOCwgNzIsIDg3LCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA4NywgNjUsIDcyLCAxMjgsIDcyLCA4NiwgMTI4LCA3MiwgCi0gICAgODUsIDg2LCA2NSwgMTI4LCA3MiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzIsIDg1LCA4MywgNzIsIDEyOCwgNzIsIDg1LCAKLSAgICA4MiwgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCA4MywgCi0gICAgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAxOTYsIDcyLCAKLSAgICA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgMjA4LCA3MiwgODUsIDc3LCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIAotICAgIDIwNiwgNzIsIDg1LCA3NiwgNTAsIDEyOCwgNzIsIDg1LCA3MywgNzMsIDg0LCA3OSwgMTI4LCA3MiwgODUsIDcxLCA3MSwgCi0gICAgNzMsIDc4LCAxOTksIDcyLCA4NSwgNjYsIDUwLCAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgCi0gICAgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgNzksIDEyOCwgNzIsIDg1LCA2NSwgNzgsIDEyOCwgNzIsIDg0LCA4MywgMTI4LCAKLSAgICA3MiwgODQsIDc0LCAxMjgsIDcyLCA4MiwgODksIDg2LCA3OCwgNzMsIDE5MywgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIAotICAgIDgwLCA2NSwgMTI4LCA3MiwgODAsIDEyOCwgNzIsIDc5LCA4NSwgODMsIDE5NywgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgCi0gICAgNjUsIDgzLCA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDIxMSwgNzIsIDc5LCA4NSwgODIsIAotICAgIDEyOCwgNzIsIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCA2OSwgNzYsIDEyOCwgNzIsIDc5LCA4NCwgNjUsIDEyOCwgNzIsIAotICAgIDc5LCA4MywgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDgzLCA2OSwgMTI4LCA3MiwgNzksIDgyLCA4MywgCi0gICAgMTk3LCA3MiwgNzksIDgyLCA4MiwgMTI4LCA3MiwgNzksIDgyLCA3OCwgODMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCAKLSAgICA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIAotICAgIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCAKLSAgICA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAotICAgIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKLSAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAotICAgIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKLSAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCi0gICAgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAotICAgIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKLSAgICA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgCi0gICAgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAotICAgIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAKLSAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIAotICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCAKLSAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgCi0gICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIAotICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKLSAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCi0gICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAotICAgIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgCi0gICAgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIDY5LCA2OCwgMTI4LCAKLSAgICA3MiwgNzksIDc5LCA3NSwgNjksIDE5NiwgNzIsIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAyMTcsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCA4NCwgCi0gICAgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNzksIDEyOCwgNzIsIDc5LCA3NiwgNzYsIDc5LCAyMTUsIDcyLCAKLSAgICA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgNjUsIDc3LCAxMjgsIAotICAgIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNjcsIDc1LCA2OSwgMjE3LCA3MiwgCi0gICAgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCAKLSAgICA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDY2LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIAotICAgIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCAKLSAgICA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzgsIDY1LCA4NSwgMTI4LCA3MiwgNzgsIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIAotICAgIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgCi0gICAgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCA3MiwgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgCi0gICAgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIAotICAgIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgNzIsIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIAotICAgIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA3OSwgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIDcyLCA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCAKLSAgICA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgMTI4LCA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCAKLSAgICA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgODksIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIAotICAgIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCA4MCwgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIAotICAgIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgODUsIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgNzYsIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIDEyOCwgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgCi0gICAgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIDY1LCA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NSwgMTI4LCA3MiwgNzYsIDY1LCAKLSAgICA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAxMjgsIDcyLCA3NiwgMTI4LCA3MiwgNzUsIDEyOCwgCi0gICAgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4OSwgNzksIDEyOCwgNzIsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCAKLSAgICA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3OCwgNzEsIAotICAgIDY5LCA2OCwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgNjksIDE5NiwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA3MywgCi0gICAgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIAotICAgIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzYsIDc5LCAyMTUsIDcyLCA3MywgNzEsIDcyLCA0NSwgCi0gICAgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCAKLSAgICA3MywgNzksIDgzLCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCAKLSAgICA2OSwgODUsIDc4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgMjAwLCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgCi0gICAgMTI4LCA3MiwgNzMsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDcyLCA3MywgNjYsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIAotICAgIDg1LCAxMjgsIDcyLCA3MiwgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIAotICAgIDY1LCA2NSwgMTI4LCA3MiwgNzEsIDEyOCwgNzIsIDY5LCA4OSwgODQsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCA3OSwgCi0gICAgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIAorICAgIDc2LCA4OSwgNzMsIDg0LCAxMjgsIDc2LCA4OSwgNzMsIDc4LCAxOTksIDc2LCA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgCisgICAgODksIDY3LCA3MywgNjUsIDIwNiwgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgCisgICAgNzYsIDg3LCA3MywgNzMsIDEyOCwgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDc2LCA4NywgNjUsIDEyOCwgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgCisgICAgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCAKKyAgICA4NCwgMTI4LCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIAorICAgIDEyOCwgNzYsIDg1LCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIAorICAgIDgzLCAxMjgsIDc2LCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCA4NSwgMjAwLCA3NiwgODUsIAorICAgIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDIwNCwgCisgICAgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDE5NywgNzYsIDg1LCA2NiwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgCisgICAgNzYsIDg1LCA1MSwgMTI4LCA3NiwgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgCisgICAgNzcsIDEyOCwgNzYsIDgyLCA3MywgMTI4LCA3NiwgODIsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIAorICAgIDY5LCAxOTYsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgCisgICAgNjgsIDQ1LCAxODUsIDc2LCA3OSwgODcsIDQ1LCA3NywgNzMsIDE5NiwgNzYsIDc5LCA4NywgNDUsIDcwLCA2NSwgNzYsIDc2LCAKKyAgICA3MywgNzgsIDE5OSwgNzYsIDc5LCA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgCisgICAgMjE3LCA3NiwgNzksIDg0LCA4NSwgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgzLCA4MywgNzYsIDY5LCAKKyAgICA4MywgODMsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA2NSwgNzMsIDc4LCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA3OSwgCisgICAgODAsIDY5LCAxOTYsIDc2LCA3OSwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDIwOCwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgCisgICAgNzYsIDc5LCA3OSwgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzYsIDc5LCAKKyAgICA3OCwgNzEsIDY1LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNzYsIDY5LCA3MSwgNzEsIAorICAgIDY5LCAxOTYsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDg5LCA4MiwgMTI4LCA3NiwgCisgICAgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgNzYsIDc5LCA3OCwgNzEsIAorICAgIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCAKKyAgICA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgCisgICAgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIAorICAgIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCA3NywgMTI4LCA3NiwgCisgICAgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIDc2LCAxMjgsIDc2LCAKKyAgICA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDc2LCA3OSwgCisgICAgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDc1LCA3MywgNzgsIDcxLCA0NSwgODMsIAorICAgIDcyLCA3MywgNzAsIDIxMiwgNzYsIDc5LCA2NywgMjAzLCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgCisgICAgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIAorICAgIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCA2NSwgNzgsIAorICAgIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzYsIDc5LCA2NSwgMTI4LCA3NiwgNzgsIDEyOCwgNzYsIAorICAgIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgCisgICAgNzYsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA3MywgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgNjksIDY5LCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDY5LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNzMsIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNjUsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCAxMjgsIDc2LCA3NiwgNzYsIDEyOCwgNzYsIDc0LCA4NSwgNjgsIDczLCAKKyAgICA3NCwgNjksIDEyOCwgNzYsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDEyOCwgNzYsIDczLCA5MCwgNjUsIDgyLCA2OCwgMTI4LCAKKyAgICA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCA3MywgODQsIAorICAgIDg0LCA3NiwgNjksIDEyOCwgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgMjEwLCA3NiwgCisgICAgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAyMDAsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MywgMTI4LCA3NiwgCisgICAgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgODAsIDgzLCAKKyAgICA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDgwLCAyMTEsIDc2LCA3MywgMjA4LCA3NiwgNzMsIDc4LCA3NSwgNzMsIAorICAgIDc4LCAxOTksIDc2LCA3MywgNzgsIDc1LCA2OSwgMTk2LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIDcxLCA4MywgCisgICAgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgNzgsIDY5LCAKKyAgICA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAxMjgsIAorICAgIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIDc3LCA3NywgCisgICAgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgNzMsIDc3LCAKKyAgICA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCA3MywgNzcsIAorICAgIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIDc3LCA2NiwgCisgICAgMjExLCA3NiwgNzMsIDc3LCAxOTQsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgNzIsIDEyOCwgCisgICAgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA3MywgNzEsIDcyLCAKKyAgICA4NCwgNzgsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3MCwgODQsIDY5LCA4MiwgCisgICAgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3NiwgNzMsIDY5LCA4NCwgMTI4LCA3NiwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIDY5LCAxMjgsIDc2LCA3MywgNjgsIDEyOCwgCisgICAgNzYsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDY2LCA4MiwgNjUsIDEyOCwgNzYsIDczLCA2NiwgNjksIDgyLCAKKyAgICA4NCwgODksIDEyOCwgNzYsIDczLCA2NSwgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDc2LCA3MiwgNzMsIDczLCAxMjgsIAorICAgIDc2LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzYsIDcyLCA2NSwgMTk5LCA3NiwgNzIsIDY1LCA2NSwgCisgICAgMTI4LCA3NiwgNzIsIDEyOCwgNzYsIDY5LCA5MCwgNzIsIDEyOCwgNzYsIDY5LCA4OCwgMTI4LCA3NiwgNjksIDg2LCA3MywgCisgICAgODQsIDY1LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjksIDg1LCA3NywgMTI4LCA3NiwgNjksIDg1LCA2NSwgNjksIDgwLCAKKyAgICAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgMTI4LCA3NiwgNjksIDIxMywgNzYsIDY5LCAKKyAgICA4NCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDIxMiwgNzYsIAorICAgIDY5LCA4MywgODMsIDY5LCAyMTAsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzYsIDY5LCA4MywgCisgICAgODMsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDc2LCA2OSwgODAsIDY3LCA3MiwgMTkzLCA3NiwgNjksIDgwLCAxMjgsIDc2LCAKKyAgICA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIAorICAgIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCA3OCwgNzMsIDIxMSwgNzYsIDY5LCA3OCwgCisgICAgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU1LCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTMsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MSwgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTAsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDQ5LCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDE5MywgNzYsIAorICAgIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCA2OSwgODQsIDEyOCwgCisgICAgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIDEyOCwgNzYsIDY5LCAKKyAgICA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzMsIDEyOCwgNzYsIDY5LCA3MSwgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCA2OSwgNzEsIDEyOCwgNzYsIDY5LCAxOTksIAorICAgIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCAKKyAgICA4MiwgNzMsIDcxLCA3MiwgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIAorICAgIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgCisgICAgNzAsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3NiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgCisgICAgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA3NiwgNjksIDcwLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCAKKyAgICA3NiwgNjksIDcwLCA4NCwgMTI4LCA3NiwgNjksIDY5LCA4MiwgNjUsIDY5LCA4NywgNjUsIDEyOCwgNzYsIDY5LCA2OSwgNzUsIAorICAgIDEyOCwgNzYsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc2LCA2OSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgCisgICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgNzAsIDEyOCwgNzYsIDY5LCA2NSwgMTk4LCA3NiwgNjksIDY1LCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNjUsIDY4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgMTk2LCA3NiwgNjgsIAorICAgIDY1LCA3OCwgMTI4LCA3NiwgNjgsIDUwLCAxMjgsIDc2LCA2NywgMjAxLCA3NiwgNjcsIDE5NywgNzYsIDY1LCA5MCwgMjE3LCAKKyAgICA3NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NiwgNjUsIDg4LCAxMjgsIDc2LCA2NSwgODcsIDEyOCwgNzYsIAorICAgIDY1LCAyMTUsIDc2LCA2NSwgODUsIDc2LCA2NSwgMTI4LCA3NiwgNjUsIDg1LCA3NSwgNjUsIDIxOCwgNzYsIDY1LCA4NSwgCisgICAgNzQsIDEyOCwgNzYsIDY1LCA4NSwgNzEsIDcyLCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2NSwgODQsIDczLCA3OCwgNjUsIDg0LCAKKyAgICAxOTcsIDc2LCA2NSwgODQsIDczLCA3NSwgMTI4LCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDc2LCA2NSwgODQsIAorICAgIDE5NywgNzYsIDY1LCA4MywgMjEyLCA3NiwgNjUsIDgyLCA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgNzYsIDY1LCA4MiwgCisgICAgMjAxLCA3NiwgNjUsIDgyLCA3MSwgNjksIDgzLCA4NCwgMTI4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDIxMCwgNzYsIDY1LCAKKyAgICA4MiwgNzEsIDY5LCAxMjgsIDc2LCA2NSwgODIsIDcxLCAxOTcsIDc2LCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgNjUsIAorICAgIDgxLCAxMjgsIDc2LCA2NSwgMjA3LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgCisgICAgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDc3LCAKKyAgICA4MCwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgMTI4LCA3NiwgNjUsIAorICAgIDc3LCA2OSwgMTk2LCA3NiwgNjUsIDc3LCA2OSwgMTI4LCA3NiwgNjUsIDc3LCAxOTcsIDc2LCA2NSwgNzcsIDY4LCA2NSwgCisgICAgMTI4LCA3NiwgNjUsIDc3LCA2OCwgMTI4LCA3NiwgNjUsIDc3LCA2NiwgNjgsIDE5MywgNzYsIDY1LCA3NywgNjUsIDY4LCAKKyAgICA3MiwgMTI4LCA3NiwgNjUsIDc2LCAxMjgsIDc2LCA2NSwgMjA0LCA3NiwgNjUsIDc1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAorICAgIDg5LCA2NSwgNzksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU1LCA1MCwgCisgICAgNTIsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1NCwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MiwgNTYsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDU0LCA1MiwgMTg0LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUxLCA1NCwgMTI4LCA3NiwgCisgICAgNjUsIDc1LCA0NSwgNTQsIDQ5LCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDQ5LCAxODMsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1NCwgNDgsIDU2LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MywgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIAorICAgIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUxLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDUwLCAKKyAgICAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTcsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTYsIDUxLCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTUsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA1MiwgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1MiwgNTIsIDU3LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA1MiwgNTIsIDE4NSwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NywgNDgsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NiwgNTIsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1NiwgNTEsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDUxLCA1MiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1NCwgNTQsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDUwLCA1NCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgCisgICAgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA1MCwgNDgsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA0OSwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDQ4LCA1NywgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NiwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDQ4LCA1NiwgMTc3LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU1LCAKKyAgICAxODUsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTQsIDUwLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTMsIDQ5LCAxMjgsIAorICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTMsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTEsIDQ4LCAxMjgsIDc2LCA2NSwgCisgICAgNzUsIDQ1LCA0OCwgNTAsIDUzLCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTAsIDQ5LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCAKKyAgICA0OCwgNTAsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNDgsIDUxLCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIAorICAgIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzMsIDc4LCAxOTksIDc2LCA2NSwgMjAxLCA3NiwgNjUsIDcyLCA4MywgCisgICAgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAxMjgsIDc2LCA2NSwgNzEsIDIxMywgCisgICAgNzYsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCA2NSwgNzEsIDY1LCA2NiwgMTI4LCAKKyAgICA3NiwgNjUsIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjgsIAorICAgIDIxNywgNzYsIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIDY1LCA2NiwgNzksIDg1LCA4MiwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgNzMsIDY1LCA3NiwgNzMsIDkwLCAKKyAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNjUsIDY2LCA3MywgNjUsIDIwNCwgNzYsIDY1LCA2NiwgNjksIDc2LCAxMjgsIAorICAgIDc2LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgNjUsIDY5LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCAKKyAgICAxMjgsIDc2LCA2NSwgNjUsIDc3LCA4NSwgMTI4LCA3NiwgNjUsIDY1LCA3NywgMTI4LCA3NiwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3NiwgNTQsIDEyOCwgNzYsIDUyLCAxMjgsIDc2LCA1MSwgMTI4LCA3NiwgNTAsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAKKyAgICAxMjgsIDc2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIAorICAgIDY1LCA4MCwgNjksIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgCisgICAgNzksIDEyOCwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAKKyAgICAxMjgsIDc1LCA4OSwgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgODgsIDg3LCA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIAorICAgIDg4LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgCisgICAgMTI4LCA3NSwgODgsIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgCisgICAgNjUsIDEyOCwgNzUsIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg2LCAxMjgsIDc1LCA4NywgODUsIDUxLCA0OSwgNTYsIDEyOCwgCisgICAgNzUsIDg3LCA3OSwgNzksIDEyOCwgNzUsIDg3LCA3OSwgMTI4LCA3NSwgODcsIDc3LCAxMjgsIDc1LCA4NywgNzMsIDczLCAKKyAgICAxMjgsIDc1LCA4NywgNzMsIDEyOCwgNzUsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg3LCA2OSwgMTI4LCA3NSwgODcsIDY2LCAKKyAgICAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCAKKyAgICA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODYsIDEyOCwgNzUsIDg1LCAKKyAgICA4NSwgNzIsIDEyOCwgNzUsIDg1LCA4NCwgMTI4LCA3NSwgODUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg1LCA4MywgNzIsIAorICAgIDg1LCA1MCwgMTI4LCA3NSwgODUsIDgzLCA3MiwgODUsIDE3OCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgCisgICAgODUsIDkwLCA2OSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCAKKyAgICA2OSwgMTI4LCA3NSwgODUsIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDc1LCA4NSwgNzksIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCAKKyAgICA3OSwgMTI4LCA3NSwgODUsIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgCisgICAgMTI4LCA3NSwgODUsIDc2LCAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDcxLCAxMjgsIDc1LCA4NSwgNjksIDg0LCAxMjgsIAorICAgIDc1LCA4NSwgNjYsIDEyOCwgNzUsIDg1LCA2NSwgODYsIDEyOCwgNzUsIDg1LCA2NSwgNjYsIDEyOCwgNzUsIDg1LCA2NSwgCisgICAgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIAorICAgIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNzksIDc5LCAxMjgsIDc1LCA4MywgODMsIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgCisgICAgODMsIDgzLCA3MywgMTI4LCA3NSwgODMsIDgzLCA2OSwgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCAKKyAgICA4MywgNjUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDY1LCA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIAorICAgIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCA4MywgMTI4LCA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgCisgICAgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIAorICAgIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCAKKyAgICA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCAKKyAgICA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIAorICAgIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgCisgICAgNzIsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgMTI4LCA3NSwgCisgICAgNzksIDg2LCAxMjgsIDc1LCA3OSwgODQsIDc5LCAxMjgsIDc1LCA3OSwgODIsIDg1LCA3OCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNzUsIDc5LCA4MiwgNjksIDY1LCAyMDYsIDc1LCA3OSwgODIsIDY1LCA3OCwgNzMsIAorICAgIDE5NSwgNzUsIDc5LCA4MSwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzUsIDc5LCA4MCwgODAsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODAsIDEyOCwgNzUsIDc5LCA3OSwgODYsIDEyOCwgNzUsIDc5LCA3OSwgODAsIDc5LCAxMjgsIDc1LCA3OSwgNzksIDc3LCAKKyAgICA4NSwgODUsIDg0LCAxMjgsIDc1LCA3OSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNzksIDEyOCwgNzUsIDc5LCA3OCwgODQsIAorICAgIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCAxOTMsIDc1LCA3OSwgNzcsIDIwMSwgCisgICAgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgNjUsIDEyOCwgNzUsIDc5LCA3NywgNjYsIDg1LCA4NiwgMTkzLCA3NSwgNzksIDc3LCAKKyAgICA2NiwgMjEzLCA3NSwgNzksIDc1LCA3OSwgMTI4LCA3NSwgNzksIDc1LCA2OSwgMTI4LCA3NSwgNzksIDc1LCAxMjgsIDc1LCAKKyAgICA3OSwgMjAzLCA3NSwgNzksIDczLCAxMjgsIDc1LCA3OSwgMjAxLCA3NSwgNzksIDcyLCAxMjgsIDc1LCA3OSwgNzEsIDcyLCAKKyAgICA3OSwgNzcsIDEyOCwgNzUsIDc5LCA2OSwgODQsIDEyOCwgNzUsIDc5LCA2NiwgMTI4LCA3NSwgNzksIDY1LCA3NiwgNjUsIAorICAgIDEyOCwgNzUsIDc5LCA2NSwgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCA2OSwgODMsIDEyOCwgNzUsIDc4LCA4NSwgCisgICAgNjcsIDc1LCA3NiwgNjksIDEyOCwgNzUsIDc4LCA3OSwgNjYsIDgzLCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIAorICAgIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgCisgICAgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgCisgICAgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgCisgICAgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgCisgICAgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgCisgICAgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAKKyAgICAxMjgsIDc1LCA3MywgODcsIDczLCA3MCwgODIsIDg1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4NywgMTI4LCA3NSwgNzMsIAorICAgIDg2LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgCisgICAgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAKKyAgICAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIAorICAgIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgCisgICAgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCAKKyAgICA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCAKKyAgICA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgCisgICAgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzUsIDczLCAKKyAgICA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgNjksIDg2LCA2NSwgMjA2LCAKKyAgICA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIAorICAgIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzMsIDY2LCAxMjgsIDc1LCA3MywgNjUsIAorICAgIDg2LCAxMjgsIDc1LCA3MywgNjUsIDY2LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCA4NywgNjUsIDczLCAxMjgsIAorICAgIDc1LCA3MiwgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgMjA2LCA3NSwgNzIsIDg1LCA2OCwgCisgICAgNjUsIDg3LCA2NSwgNjgsIDIwMSwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgMTI4LCA3NSwgNzIsIDg1LCA2NSwgODQsIAorICAgIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIAorICAgIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDc0LCA3NSwgMjAxLCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgCisgICAgMjA3LCA3NSwgNzIsIDc3LCAyMTMsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCA3MiwgNzMsIDc4LCA4OSwgNjUsIDEyOCwgCisgICAgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCA3MiwgMjAxLCA3NSwgNzIsIDcyLCAKKyAgICA3OSwgMTI4LCA3NSwgNzIsIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNzUsIDcyLCA2OSwgNzMsIAorICAgIDEyOCwgNzUsIDcyLCA2OSwgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIDY1LCA4NiwgMTI4LCA3NSwgNzIsIAorICAgIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCA3MiwgNjUsIDgyLCAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgCisgICAgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgNzIsIDY1LCA3OCwgNjgsIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgCisgICAgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCA3MiwgNjUsIDc1LCA2NSwgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCAKKyAgICA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NiwgMTI4LCAKKyAgICA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCA4MCwgMTI4LCA3NSwgNjksIAorICAgIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDc1LCA2OSwgODksIDY2LCA3OSwgCisgICAgNjUsIDgyLCAxOTYsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NiwgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIAorICAgIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MCwgODUsIDgxLCAxMjgsIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2OSwgODUsIDg0LCA3OCwgNjgsIDY1LCAxMjgsIDc1LCA2OSwgODUsIDc1LCAKKyAgICA2NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4NCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA4MiwgNzMsIDEyOCwgNzUsIDY5LCA4NCwgODQsIDIwMSwgNzUsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDc1LCA2OSwgCisgICAgODIsIDY5LCA4NCwgMTI4LCA3NSwgNjksIDc5LCA4NywgMTI4LCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgMTkzLCA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCAxOTMsIAorICAgIDc1LCA2OSwgNzgsIDY1LCA4NCwgMTI4LCA3NSwgNjksIDc4LCAxMjgsIDc1LCA2OSwgMjA2LCA3NSwgNjksIDc3LCA4MCwgCisgICAgODUsIDc2LCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA4NSwgMjA0LCA3NSwgNjksIDc3LCA4MCwgNzYsIDczLCAxMjgsIDc1LCAKKyAgICA2OSwgNzcsIDgwLCA3NiwgMjAxLCA3NSwgNjksIDc3LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzcsIAorICAgIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzYsIDg2LCA3MywgMjA2LCA3NSwgNjksIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgNzUsIDY5LCA3MiwgNjksIDIwMCwgNzUsIDY5LCA3MiwgMTI4LCA3NSwgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCAKKyAgICA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIAorICAgIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDY5LCA2NiwgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgCisgICAgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAKKyAgICAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIAorICAgIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgNzUsIDY1LCA4NywgNzMsIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIAorICAgIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgCisgICAgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAKKyAgICAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIAorICAgIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgCisgICAgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIAorICAgIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgCisgICAgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCAKKyAgICA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIAorICAgIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgCisgICAgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCAKKyAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgCisgICAgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIAorICAgIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCAKKyAgICA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIAorICAgIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIAorICAgIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgMjA4LCA3NSwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgCisgICAgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzUsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIDc4LCAKKyAgICA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgNzcsIAorICAgIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCA3NSwgCisgICAgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODYsIDEyOCwgNzUsIDY1LCA3MywgODQsIDcyLCAyMDEsIDc1LCA2NSwgCisgICAgNzMsIDgyLCA3MywgMTI4LCA3NSwgNjUsIDczLCA2NiwgMTI4LCA3NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgMjAxLCA3NSwgCisgICAgNjUsIDcwLCA2NSwgMTI4LCA3NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgMTk4LCA3NSwgNjUsIDY4LCA1MywgMTI4LCA3NSwgCisgICAgNjUsIDY4LCAxODEsIDc1LCA2NSwgNjgsIDUyLCAxMjgsIDc1LCA2NSwgNjgsIDUxLCAxMjgsIDc1LCA2NSwgNjgsIDE3OSwgCisgICAgNzUsIDY1LCA2OCwgNTAsIDEyOCwgNzUsIDY1LCA2OCwgMTI4LCA3NSwgNjUsIDY2LCAxOTMsIDc1LCA2NSwgNjYsIDEyOCwgCisgICAgNzUsIDY1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDc1LCAKKyAgICA2NSwgNjUsIDcwLCAxMjgsIDc1LCA2NSwgNjUsIDY2LCA2NSwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIAorICAgIDUwLCAxMjgsIDc1LCA2NSwgMTc4LCA3NSwgNDgsIDQ4LCA1NiwgMTI4LCA3NSwgNDgsIDQ4LCA1NSwgMTI4LCA3NSwgNDgsIAorICAgIDQ4LCA1NCwgMTI4LCA3NSwgNDgsIDQ4LCA1MywgMTI4LCA3NSwgNDgsIDQ4LCA1MiwgMTI4LCA3NSwgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3NSwgNDgsIDQ4LCA1MCwgMTI4LCA3NSwgNDgsIDQ4LCA0OSwgMTI4LCA3NCwgODcsIDY1LCAxMjgsIDc0LCA4NSwgCisgICAgODUsIDEyOCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgODUsIDgzLCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA3NCwgODUsIDgwLCA3MywgODQsIDY5LCA4MiwgMTI4LCA3NCwgODUsIDc5LCA4NCwgMTI4LCA3NCwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3NCwgODUsIDc4LCA3OSwgMTI4LCA3NCwgODUsIDc4LCA2OSwgMTI4LCA3NCwgODUsIDc2LCA4OSwgCisgICAgMTI4LCA3NCwgODUsIDcxLCA3MSwgNzYsIDczLCA3OCwgNzEsIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCAKKyAgICA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIAorICAgIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIDg5LCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzQsIDc5LCA4OSwgCisgICAgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgCisgICAgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAKKyAgICA4NCwgODMsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIAorICAgIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIAorICAgIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCAKKyAgICA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIAorICAgIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIAorICAgIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCAKKyAgICA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgNzYsIDEyOCwgNzQsIDczLCA3MywgNzcsIDEyOCwgNzQsIDczLCAKKyAgICA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzQsIDczLCA2NSwgCisgICAgMTI4LCA3NCwgNzIsIDc5LCA4OCwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAxMjgsIDc0LCA3MiwgCisgICAgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzcsIDEyOCwgNzQsIDcyLCAKKyAgICA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgODIsIDg1LCA4MywgNjUsIAorICAgIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIDEyOCwgNzQsIDY5LCA4MiwgCisgICAgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIDY1LCA3OCwgMTI4LCA3NCwgCisgICAgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgNzgsIDEyOCwgNzQsIDY1LCAKKyAgICA4OSwgNzMsIDc4LCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCA2NSwgODcsIDEyOCwgNzQsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODYsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgCisgICAgODUsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCAKKyAgICA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIAorICAgIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAyMDYsIDc0LCA2NSwgNzMsIDEyOCwgCisgICAgNzQsIDY1LCA3MiwgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgODMsIDEyOCwgNzQsIDY1LCAKKyAgICA2NywgNzUsIDQ1LCA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIAorICAgIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAKKyAgICAxMjgsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIAorICAgIDY1LCA4OSwgMTkzLCA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgCisgICAgNzQsIDY1LCAxMjgsIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCAKKyAgICA2OSwgNzcsIDEyOCwgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA4MywgNjcsIDY5LCA3NiwgNjksIAorICAgIDIxMSwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgCisgICAgMTI4LCA3MywgODMsIDc2LCA2NSwgNzgsIDY4LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIAorICAgIDEyOCwgNzMsIDgzLCA2NSwgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgCisgICAgODIsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA3MywgODIsIDc5LCA3OCwgNDUsIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgODIsIAorICAgIDY2LCAxMjgsIDczLCA3OSwgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgCisgICAgNzMsIDc5LCA4NCwgNjUsIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCAKKyAgICA2NSwgNjgsIDcyLCAxMjgsIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIAorICAgIDg0LCA2OSwgNjgsIDEyOCwgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgCisgICAgMTk3LCA3MywgNzgsIDg0LCA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCAKKyAgICA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgCisgICAgODMsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIAorICAgIDE5OSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgCisgICAgODIsIDc2LCA3OSwgNjcsIDc1LCA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCAKKyAgICA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCAKKyAgICA2OSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIAorICAgIDcxLCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgCisgICAgODQsIDY5LCA3MSwgODIsIDY1LCAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCAKKyAgICA4NSwgNzcsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNzMsIAorICAgIDY4LCAxOTcsIDczLCA3OCwgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAKKyAgICAxMjgsIDczLCA3OCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIAorICAgIDIxMiwgNzMsIDc4LCA3OCwgNzksIDY3LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgCisgICAgNzgsIDc4LCA2OSwgODIsIDEyOCwgNzMsIDc4LCA3OCwgNjksIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCAKKyAgICA3OCwgNzEsIDg1LCAxMjgsIDczLCA3OCwgNzMsIDEyOCwgNzMsIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIAorICAgIDcyLCA2OSwgODIsIDY5LCA3OCwgMjEyLCA3MywgNzgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDczLCA3OCwgNzEsIDg3LCA2NSwgCisgICAgOTAsIDEyOCwgNzMsIDc4LCA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIDg1LCAKKyAgICA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIAorICAgIDc4LCA3MywgODQsIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCA3MywgCisgICAgODIsIDY5LCA2NywgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA2OCwgNzMsIDY3LCAKKyAgICA2NSwgODQsIDc5LCA4MiwgMTI4LCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDIxMCwgNzMsIDc4LCA2OCwgNzMsIAorICAgIDE5NSwgNzMsIDc4LCA2OCwgNzMsIDY1LCAyMDYsIDczLCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3MywgNzgsIDY4LCA2OSwgCisgICAgODAsIDY5LCA3OCwgNjgsIDY5LCA3OCwgMjEyLCA3MywgNzgsIDY3LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDczLCAKKyAgICA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMjExLCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgNjksIDEyOCwgNzMsIAorICAgIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDE5NywgNzMsIDc4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgMTk3LCA3MywgCisgICAgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3NiwgODUsIDY4LCA3MywgNzgsIDE5OSwgNzMsIDc4LCAKKyAgICA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNzMsIDc4LCA0NSwgNjUsIAorICAgIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgCisgICAgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgNzMsIDc3LCAKKyAgICA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDc4LCAxMjgsIDczLCA3NywgNzMsIDgzLCA2OSwgNzksIAorICAgIDIxMSwgNzMsIDc3LCA3MywgNzgsIDUxLCAxMjgsIDczLCA3NywgNzMsIDc4LCAxMjgsIDczLCA3NywgNzMsIDIwNiwgNzMsIAorICAgIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNzAsIDg0LCA3MiwgNzksIDgyLCAKKyAgICA2NSwgMTI4LCA3MywgNzcsIDczLCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA3MywgNjgsIDczLCA2NSwgODIsIAorICAgIDcxLCA3OSwgNzgsIDEyOCwgNzMsIDc3LCA2NSwgNzEsIDE5NywgNzMsIDc2LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDczLCA3NiwgODUsIDg5LCAxMjgsIDczLCA3NiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIAorICAgIDc2LCA4NSwgODQsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgCisgICAgNTEsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDIxMywgNzMsIDc2LCAKKyAgICA1MCwgMTI4LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNzMsIDc1LCA2NSwgODIsIDE5MywgNzMsIDc0LCAxMjgsIDczLCAKKyAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3MSwgNzMsIDEyOCwgNzMsIDcxLCAyMDEsIDczLCA3MSwgNzEsIAorICAgIDg3LCA4MywgMTI4LCA3MywgNzAsIDczLCA3OCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDg0LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIAorICAgIDczLCA2OSwgODUsIDgwLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAKKyAgICAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIAorICAgIDcxLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDczLCAKKyAgICA2OSwgODUsIDY3LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAorICAgIDczLCA2OSwgODUsIDc4LCAxOTksIDczLCA2OCwgNzYsIDY5LCAxMjgsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDczLCA2OCwgCisgICAgNzMsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNjUsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA3MCwgNTcsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NywgNDksIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTcsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2OCwgNTUsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU1LCA2OCwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NSwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU3LCA1NiwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NCwgNjgsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU1LCA0OSwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NSwgNDgsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDcwLCA0OSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA2OSwgNTYsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NCwgNTQsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA2NiwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTcsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUxLCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDU0LCA1MSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1NCwgNTAsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MywgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTIsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNzAsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY4LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA2NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNjYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA1MCwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNDksIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUzLCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA1MiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNTIsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA3MCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNjcsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MywgNTAsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDQ5LCA1NiwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNjUsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAorICAgIDgwLCA3MiwgNDUsIDUyLCA2OSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKKyAgICA1MiwgNjksIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgCisgICAgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgCisgICAgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA3MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTMsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTEsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjUsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDksIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OCwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNzAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTQsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NywgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTIsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjYsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTAsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OSwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTcsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NiwgMTI4LCA3MywgCisgICAgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCAKKyAgICA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCAKKyAgICA3MCwgNTYsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgCisgICAgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNDgsIAorICAgIDEyOCwgNzMsIDY4LCA2OSwgNzgsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc4LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgNjcsIDc5LCA3OCwgMTI4LCA3MywgNjcsIDcyLCA3OSwgODUsIAorICAgIDEyOCwgNzMsIDY3LCA3MiwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDczLCA3NywgNjUsIDg0LCA3OSwgODMsIDEyOCwgCisgICAgNzMsIDY3LCA3MiwgNjUsIDY4LCA3MywgNzgsIDEyOCwgNzMsIDY3LCA2OSwgNzYsIDY1LCA3OCwgNjgsIDczLCA2NywgNDUsIAorICAgIDg5LCA4MiwgMTI4LCA3MywgNjYsIDczLCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3MywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgCisgICAgNzMsIDQ4LCA0OSwgNTMsIDEyOCwgNzMsIDQ4LCA0OSwgNTIsIDEyOCwgNzMsIDQ4LCA0OSwgNTEsIDEyOCwgNzMsIDQ4LCAKKyAgICA0OSwgNTAsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ5LCAxMjgsIDczLCA0OCwgNDksIAorICAgIDQ4LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgMTI4LCA3MywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgNzMsIDQ4LCA0OCwgNTYsIDEyOCwgNzMsIDQ4LCA0OCwgNTUsIDEyOCwgNzMsIDQ4LCA0OCwgNTQsIDEyOCwgCisgICAgNzMsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAxMjgsIDczLCA0OCwgNDgsIDUyLCAxMjgsIDczLCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDczLCA0OCwgNDgsIDUwLCAxMjgsIDczLCA0OCwgNDgsIDQ5LCAxMjgsIDczLCA0NSwgODksIAorICAgIDg1LCAxMjgsIDczLCA0NSwgODksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgCisgICAgMTI4LCA3MywgNDUsIDg5LCA2NSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDg5LCAKKyAgICA2NSwgMTI4LCA3MywgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzMsIDQ1LCA3OSwgMTI4LCA3MywgNDUsIDY5LCA4NSwgMTI4LCAKKyAgICA3MywgNDUsIDY2LCA2OSwgNjUsIDc3LCAxMjgsIDczLCA0NSwgNjUsIDgyLCA2NSwgNjksIDY1LCAxMjgsIDczLCA0NSwgNjUsIAorICAgIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDcxLCAxMjgsIDcyLCA5MCwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgOTAsIDgwLCAxMjgsIAorICAgIDcyLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA4NywgNzEsIDEyOCwgNzIsIDkwLCA4NywgMTI4LCA3MiwgOTAsIDg0LCAxMjgsIAorICAgIDcyLCA5MCwgNzEsIDEyOCwgNzIsIDg5LCA4MywgODQsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA3MiwgODksIDgwLCA3OSwgCisgICAgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDQ1LCA3NywgNzMsIDc4LCA4NSwgODMsIDEyOCwgNzIsIDg5LCA4MCwgCisgICAgNzIsIDY5LCA3OCwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDIwNiwgNzIsIDg5LCA3MSwgNzMsIDY5LCA3MywgNjUsIAorICAgIDEyOCwgNzIsIDg4LCA4NywgNzEsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4NCwgCisgICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDEyOCwgNzIsIDg4LCA3OSwgODgsIDEyOCwgCisgICAgNzIsIDg4LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA3OSwgODAsIDEyOCwgNzIsIDg4LCA3OSwgMTI4LCA3MiwgODgsIDczLCAKKyAgICA4OCwgMTI4LCA3MiwgODgsIDczLCA4NCwgMTI4LCA3MiwgODgsIDczLCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgNzIsIDg4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDczLCA2OSwgCisgICAgMTI4LCA3MiwgODgsIDczLCAxMjgsIDcyLCA4OCwgNjksIDg4LCAxMjgsIDcyLCA4OCwgNjksIDgwLCAxMjgsIDcyLCA4OCwgCisgICAgNjksIDEyOCwgNzIsIDg4LCA2NSwgODgsIDEyOCwgNzIsIDg4LCA2NSwgODQsIDEyOCwgNzIsIDg4LCA2NSwgODAsIDEyOCwgCisgICAgNzIsIDg4LCA2NSwgMTI4LCA3MiwgODcsIDg1LCAxMjgsIDcyLCA4NywgNjUsIDczLCA4MiwgMTI4LCA3MiwgODcsIDY1LCAKKyAgICA3MiwgMTI4LCA3MiwgODUsIDg2LCA2NSwgMTI4LCA3MiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzIsIDg1LCA4MywgNzIsIAorICAgIDEyOCwgNzIsIDg1LCA4MiwgNjUsIDc4LCAxMjgsIDcyLCA4NSwgNzksIDg0LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgCisgICAgNjksIDY4LCA4MywgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgMjExLCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAKKyAgICA2OCwgMTI4LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCAxOTYsIDcyLCA4NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgMjA4LCAKKyAgICA3MiwgODUsIDc3LCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3NywgNjUsIDIwNiwgNzIsIDg1LCA3NiwgNTAsIDEyOCwgNzIsIAorICAgIDg1LCA3MywgNzMsIDg0LCA3OSwgMTI4LCA3MiwgODUsIDcxLCA3MSwgNzMsIDc4LCAxOTksIDcyLCA4NSwgNjYsIDUwLCAKKyAgICAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgNzksIAorICAgIDEyOCwgNzIsIDg1LCA2NSwgNzgsIDEyOCwgNzIsIDg0LCA4MywgMTI4LCA3MiwgODQsIDc0LCAxMjgsIDcyLCA4MiwgODksIAorICAgIDg2LCA3OCwgNzMsIDE5MywgNzIsIDgwLCA4NywgNzEsIDEyOCwgNzIsIDgwLCA2NSwgMTI4LCA3MiwgODAsIDEyOCwgNzIsIAorICAgIDc5LCA4NSwgODMsIDE5NywgNzIsIDc5LCA4NSwgODIsIDcxLCA3NiwgNjUsIDgzLCA4MywgMTI4LCA3MiwgNzksIDg1LCA4MiwgCisgICAgNzEsIDc2LCA2NSwgODMsIDIxMSwgNzIsIDc5LCA4NSwgODIsIDEyOCwgNzIsIDc5LCA4NSwgMjEwLCA3MiwgNzksIDg0LCAKKyAgICA2OSwgNzYsIDEyOCwgNzIsIDc5LCA4NCwgNjUsIDEyOCwgNzIsIDc5LCA4MywgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDgzLCA2OSwgMTI4LCA3MiwgNzksIDgyLCA4MywgMTk3LCA3MiwgNzksIDgyLCA4MiwgMTI4LCA3MiwgCisgICAgNzksIDgyLCA3OCwgODMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDc2LCAyMTcsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCAKKyAgICA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgCisgICAgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIAorICAgIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUzLCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCAKKyAgICA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgCisgICAgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIAorICAgIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ5LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgCisgICAgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCAKKyAgICA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgCisgICAgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIAorICAgIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCAKKyAgICA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCisgICAgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUzLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIAorICAgIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUxLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgCisgICAgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIAorICAgIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKKyAgICA0NSwgNDgsIDQ4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDc2LCAxMjgsIDcyLCA3OSwgODIsIAorICAgIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzIsIDc5LCA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgCisgICAgNzksIDc5LCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCAKKyAgICA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIDY5LCA2OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDE5NiwgNzIsIAorICAgIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgNzgsIDY5LCAyMTcsIDcyLCA3OSwgNzcsIDc5LCA4NCwgCisgICAgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCAKKyAgICA3NiwgNzksIDEyOCwgNzIsIDc5LCA3NiwgNzYsIDc5LCAyMTUsIDcyLCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgNjUsIDc3LCAxMjgsIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgCisgICAgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNjcsIDc1LCA2OSwgMjE3LCA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCAKKyAgICA4NSwgODQsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgODUsIAorICAgIDY2LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIAorICAgIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgCisgICAgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCAKKyAgICA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIAorICAgIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCA3MiwgNzgsIDY1LCA4NSwgMTI4LCA3MiwgNzgsIAorICAgIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIDg4LCAxMjgsIAorICAgIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgMTI4LCA3MiwgCisgICAgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIDEyOCwgNzIsIAorICAgIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA3OSwgCisgICAgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgMTI4LCA3MiwgCisgICAgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAxMjgsIDcyLCAKKyAgICA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCA4NCwgMTI4LCAKKyAgICA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCA3NiwgODksIAorICAgIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIDg5LCA4MCwgCisgICAgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIDcyLCA3NiwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCA3NiwgODUsIAorICAgIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCA3MiwgNzYsIAorICAgIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgNzMsIDEyOCwgCisgICAgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgNzYsIDY1LCAKKyAgICA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NSwgMTI4LCA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCAKKyAgICA3MiwgNzYsIDY1LCAxMjgsIDcyLCA3NiwgMTI4LCA3MiwgNzUsIDEyOCwgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCAKKyAgICA4OSwgNzksIDEyOCwgNzIsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgCisgICAgMTk1LCA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA3MiwgNzMsIDc4LCAKKyAgICA3MSwgNjksIDE5NiwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA3MywgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIAorICAgIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgCisgICAgNzEsIDcyLCA0NSwgNzYsIDc5LCAyMTUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDcyLCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDcyLCA3MywgNjksIAorICAgIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA4MCwgNzMsIDY5LCAKKyAgICA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDcyLCA3MywgNjksIAorICAgIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgMjAwLCA3MiwgNzMsIDY5LCA4MiwgCisgICAgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgMTI4LCA3MiwgNzMsIDY4LCA3MywgNzgsIAorICAgIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAxMjgsIDcyLCA3MywgNjYsIDczLCA4MywgCisgICAgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzMsIDQ1LCA4MiwgNjksIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCAKKyAgICA3MiwgODUsIDEyOCwgNzIsIDcyLCA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCAKKyAgICA3MiwgNjUsIDY1LCAxMjgsIDcyLCA3MSwgMTI4LCA3MiwgNjksIDg5LCA4NCwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIAorICAgIDc5LCA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgCiAgICAgMTI4LCA3MiwgNjksIDgyLCA4NSwgODQsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDg1LCAxMjgsIDcyLCA2OSwgODIsIDc3LCAKICAgICA3MywgODQsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNzMsIDc5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIAogICAgIDc3LCA2OSwgODMsIDEyOCwgNzIsIDY5LCA4MiwgNjksIDEyOCwgNzIsIDY5LCA4MiwgNjYsIDEyOCwgNzIsIDY5LCA4MiwgCkBAIC0zNzUwLDQyOSArMzc3OSw0MzggQEAKICAgICA0NSwgNjksIDg2LCA3MywgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIAogICAgIDY1LCA2OCwgODMsIDg0LCA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgCiAgICAgNjksIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgNDUsIDY2LCA2NSwgNzgsIDY4LCA2NSwgNzEsIAotICAgIDY5LCAxMjgsIDcyLCA2NiwgNjUsIDgzLCA2NSwgNDUsIDY5LCA4MywgNjUsIDgzLCAxOTMsIDcyLCA2NiwgNjUsIDgzLCAKLSAgICAxOTMsIDcyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcyLCA2NSwgODcsIDc0LCAxMjgsIDcyLCA2NSwgODYsIAotICAgIDY5LCAxMjgsIDcyLCA2NSwgODUsIDgwLCA4NCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3MiwgNjUsIDIxMywgCi0gICAgNzIsIDY1LCA4NCwgODIsIDY1LCAyMDYsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCA3MiwgNjUsIDg0LCA2OSwgMTI4LCAKLSAgICA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgMTk4LCA3MiwgNjUsIDgzLCA2OSwgCi0gICAgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCA3OCwgMTI4LCAKLSAgICA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA2NywgMTI4LCA3MiwgNjUsIAotICAgIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzIsIDY1LCA4MiwgCi0gICAgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAyMDcsIDcyLCA2NSwgNzgsIDcxLCAKLSAgICA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCA3MiwgNjUsIAotICAgIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgCi0gICAgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCAKLSAgICA3OSwgODYsIDY1LCAyMDQsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIAotICAgIDQ1LCA3MiwgNzksIDc5LCAyMDMsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDY5LCAxMjgsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCAKLSAgICA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDIxMiwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzMsIDgzLCA4NCwgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKLSAgICA2OCwgNDUsIDY3LCA4NSwgODIsIDc2LCA3MywgNjcsIDg1LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MCwgCi0gICAgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgMjA4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDg3LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgMjE1LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIAotICAgIDY3LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3OCwgCi0gICAgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NSwgNzgsIDcxLCA3NiwgMTk3LCAKLSAgICA3MiwgNjUsIDc4LCA2OCwgMTI4LCA3MiwgNjUsIDc4LCA0NSwgNjUsIDc1LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3NywgOTAsIAotICAgIDY1LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDcyLCA2NSwgNzcsIDgzLCA4NCwgNjksIDIxMCwgNzIsIDY1LCA3NywgCi0gICAgNzcsIDY5LCA4MiwgMTI4LCA3MiwgNjUsIDc3LCA3NywgNjksIDIxMCwgNzIsIDY1LCA3NywgNjYsIDg1LCA4MiwgNzEsIDY5LCAKLSAgICA4MiwgMTI4LCA3MiwgNjUsIDc2LCA4MSwgNjUsIDEyOCwgNzIsIDY1LCA3NiwgNzksIDEyOCwgNzIsIDY1LCA3NiwgNzAsIAotICAgIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgNzIsIDY1LCA3NiwgNzAsIDEyOCwgNzIsIDY1LCA3NiwgNjYsIDY5LCA4MiwgCi0gICAgNjgsIDEyOCwgNzIsIDY1LCA3NiwgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCA3MywgODQsIDg1LCAxMjgsIDcyLCAKLSAgICA2NSwgNzMsIDIxMSwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIAotICAgIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAKLSAgICAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIAotICAgIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgCi0gICAgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAKLSAgICAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCAKLSAgICA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCAKLSAgICA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIAotICAgIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCAKLSAgICA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIAotICAgIDEyOCwgNzEsIDg2LCA2NSwgNzgsIDcxLCAxMjgsIDcxLCA4NiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgODMsIDcyLCAxMjgsIAotICAgIDcxLCA4NSwgODIsIDg1LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3MSwgODUsIDgyLCA2NSwgCi0gICAgNzcsIDg1LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA4NSwgODIsIDU1LCAxMjgsIDcxLCA4NSwgNzgsIDg1LCAxMjgsIDcxLCAKLSAgICA4NSwgNzgsIDIxMywgNzEsIDg1LCAyMDUsIDcxLCA4NSwgNzYsIDEyOCwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIAotICAgIDIwMSwgNzEsIDg1LCA3MywgODQsIDY1LCA4MiwgMTI4LCA3MSwgODUsIDE5OSwgNzEsIDg1LCA2OSwgNzMsIDEyOCwgNzEsIAotICAgIDg1LCA2OSwgNzIsIDEyOCwgNzEsIDg1LCA2OSwgMjAwLCA3MSwgODUsIDY4LCAxMjgsIDcxLCA4NSwgMTk2LCA3MSwgODUsIAotICAgIDY1LCA4MiwgNjgsIDgzLCA3NywgNjUsIDc4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDY4LCA3OCwgNjksIDgzLCAKLSAgICA4MywgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgMTI4LCA3MSwgODUsIAotICAgIDY1LCA4MiwgNjUsIDc4LCAyMDEsIDcxLCA4NSwgMTkzLCA3MSwgODUsIDE3OCwgNzEsIDg0LCA2OSwgMjEwLCA3MSwgODMsIAotICAgIDg1LCA3NywgMTI4LCA3MSwgODMsIDg1LCAyMDUsIDcxLCA4MiwgMjEzLCA3MSwgODIsIDc5LCA4NywgNzMsIDc4LCAxOTksIAotICAgIDcxLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzEsIDgyLCA3OSwgNzgsIDg0LCA3MiwgNzMsIDgzLCA3NywgNjUsIDg0LCAKLSAgICA2NSwgMTI4LCA3MSwgODIsIDczLCA3OCwgNzgsIDczLCA3OCwgMTk5LCA3MSwgODIsIDczLCA3NywgNjUsIDY3LCA3MywgNzgsIAotICAgIDE5OSwgNzEsIDgyLCA2OSwgNzEsIDc5LCA4MiwgNzMsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDcxLCA4MiwgCi0gICAgNjksIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAotICAgIDY1LCA3OCwgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzEsIDgyLCA2OSwgCi0gICAgNjUsIDg0LCA2OSwgMjEwLCA3MSwgODIsIDY5LCA2NSwgMjEyLCA3MSwgODIsIDY1LCA4NiwgNjksIDg5LCA2NSwgODIsIAotICAgIDE5NiwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCi0gICAgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDEyOCwgNzEsIDgyLCA2NSwgODYsIAotICAgIDE5NywgNzEsIDgyLCA2NSwgODQsIDY5LCA4MiwgMTI4LCA3MSwgODIsIDY1LCA4MywgODMsIDEyOCwgNzEsIDgyLCA2NSwgCi0gICAgODMsIDIxMSwgNzEsIDgyLCA2NSwgODMsIDIwOCwgNzEsIDgyLCA2NSwgODAsIDcyLCA2OSwgNzcsIDE5NywgNzEsIDgyLCAKLSAgICA2NSwgODAsIDY5LCA4MywgMTI4LCA3MSwgODIsIDY1LCA3OCwgODQsIDcyLCAxOTMsIDcxLCA4MiwgNjUsIDc3LCA3NywgCi0gICAgMTkzLCA3MSwgODIsIDY1LCA3MywgNzgsIDEyOCwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA3NiwgMTI4LCA3MSwgODIsIDY1LCA2NywgNjksIDEyOCwgNzEsIDgyLCA2NSwgNjcsIAotICAgIDE5NywgNzEsIDgwLCA2NSwgMTI4LCA3MSwgNzksIDgyLCA4NCwgNzIsIDc3LCA3MywgNzUsIDc5LCAyMDYsIDcxLCA3OSwgCi0gICAgODIsIDg0LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAKLSAgICA4MywgODksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzksIDc4LCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA3MSwgNzksIAotICAgIDgyLCA3MSwgNzMsIDEyOCwgNzEsIDc5LCA4MiwgNjUsIDEyOCwgNzEsIDc5LCA3OSwgMTk2LCA3MSwgNzksIDc4LCA3MSwgCi0gICAgMTI4LCA3MSwgNzksIDc2LCA3MCwgNjksIDgyLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgCi0gICAgNzEsIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCAKLSAgICA3MSwgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIAotICAgIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgCi0gICAgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCAKLSAgICA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgCi0gICAgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgCi0gICAgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCAKLSAgICA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMjExLCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCAKLSAgICA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCAKLSAgICA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIAotICAgIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA3MSwgMTI4LCA3MSwgNzMsIDY5LCA4NCwgCi0gICAgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCA3MSwgNzMsIDY2LCAKLSAgICA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCA3MiwgODcsIDY1LCAKLSAgICAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIDcxLCA3MiwgODUsIAotICAgIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgNzksIDEyOCwgNzEsIAotICAgIDcyLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjksIDg5LCA4MywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDc4LCAxMjgsIDcxLCAKLSAgICA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgCi0gICAgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA4MiwgCi0gICAgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDc3LCAKLSAgICA3NywgNjUsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAxMjgsIAotICAgIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCA3MSwgCi0gICAgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgMTI4LCAKLSAgICA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAxMjgsIAotICAgIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCA3MSwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIDcxLCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgNzEsIAotICAgIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA4OCwgCi0gICAgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIDgwLCAKLSAgICAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIDcxLCAKLSAgICA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA2OSwgODQsIAotICAgIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCA2OSwgCi0gICAgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIDUwLCAKLSAgICAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAyMDYsIAotICAgIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIDc3LCA2OSwgCi0gICAgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDcxLCAKLSAgICA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIDY5LCA3OCwgNzMsIAotICAgIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgMTI4LCA3MSwgCi0gICAgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY5LCA3NywgMTI4LCAKLSAgICA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCA2OSwgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIAotICAgIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCA3MSwgNjksIDY1LCAyMTAsIDcxLCA2OSwgNTAsIDUwLCAxMjgsIAotICAgIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgCi0gICAgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAKLSAgICAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgCi0gICAgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAxMjgsIDcxLCAKLSAgICA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIDEyOCwgNzEsIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIAotICAgIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCA2NSwgODMsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDY1LCAKLSAgICA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIDc5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgCi0gICAgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCA3OCwgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCAKLSAgICA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIDY1LCA3OCwgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCAKLSAgICA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIAotICAgIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgNzEsIDY1LCA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgCi0gICAgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCA3MSwgNjUsIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgCi0gICAgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCAKLSAgICA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCAKLSAgICA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCAKLSAgICA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIAotICAgIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgCi0gICAgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCAKLSAgICA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIAotICAgIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgCi0gICAgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIAotICAgIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIAotICAgIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgCi0gICAgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCAKLSAgICA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCAKLSAgICA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIAotICAgIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgCi0gICAgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCAKLSAgICA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgCi0gICAgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODYsIDgzLCA1MSwgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgCi0gICAgODYsIDgzLCA0OSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIDcwLCA4NSwgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgCi0gICAgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgMTI4LCA3MCwgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCAKLSAgICA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNzAsIDg1LCA3NiwgNzYsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgCi0gICAgNzAsIDg1LCA3NCwgNzMsIDEyOCwgNzAsIDg1LCA2OSwgODQsIDEyOCwgNzAsIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAKLSAgICAxMjgsIDcwLCA4NSwgNjUsIDEyOCwgNzAsIDg0LCA3MiwgNzksIDgyLCAxOTMsIDcwLCA4MywgNzMsIDEyOCwgNzAsIDgyLCAKLSAgICA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIAotICAgIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA4NywgMjA2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgCi0gICAgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDc4LCAKLSAgICAyMTIsIDcwLCA4MiwgNzksIDIwNSwgNzAsIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCAKLSAgICA4NCwgODUsIDEyOCwgNzAsIDgyLCA3MywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIAotICAgIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgCi0gICAgODIsIDY5LCA3OCwgNjcsIDIwMCwgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCAKLSAgICA3OCwgNzUsIDIxMSwgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCA4MywgMTI4LCA3MCwgODIsIAotICAgIDY1LCA3NywgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzcsIDE5NywgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAKLSAgICAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCAKLSAgICA4MiwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIAotICAgIDc5LCA4NSwgODIsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCAKLSAgICA0NSwgNjksIDIwNSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIAotICAgIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDcwLCA3OSwgCi0gICAgODMsIDg0LCA2OSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCAKLSAgICA4MiwgODcsIDY1LCA4MiwgMTk2LCA3MCwgNzksIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4MiwgODQsIDIxNywgNzAsIAotICAgIDc5LCA4MiwgODQsIDY5LCAxMjgsIDcwLCA3OSwgODIsIDc3LCAyMTEsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDg0LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDc3LCA2NSwgMjEyLCA3MCwgNzksIDgyLCA3NSwgNjksIDE5NiwgNzAsIDc5LCAKLSAgICA4MiwgNjksIDcyLCA2OSwgNjUsIDE5NiwgNzAsIDc5LCA4MiwgNjcsIDY5LCA4MywgMTI4LCA3MCwgNzksIDgyLCA2NywgNjksIAotICAgIDEyOCwgNzAsIDc5LCA4MCwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODMsIDg0LCA3OSwgNzksIDc2LCAxMjgsIDcwLCA3OSwgCi0gICAgNzksIDg0LCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA3OCwgNzksIDg0LCAxOTcsIDcwLCAKLSAgICA3OSwgNzksIDg0LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgMTI4LCA3MCwgNzksIDc5LCA3NiwgCi0gICAgMTI4LCA3MCwgNzksIDc5LCA2OCwgMTI4LCA3MCwgNzksIDc5LCAxMjgsIDcwLCA3OSwgNzgsIDIxMiwgNzAsIDc5LCA3OCwgCi0gICAgNzEsIDc3LCA2NSwgNzgsIDEyOCwgNzAsIDc5LCA3NywgMTI4LCA3MCwgNzksIDc2LCA3NiwgODksIDEyOCwgNzAsIDc5LCAKLSAgICA3NiwgNzYsIDc5LCA4NywgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDgyLCAxMjgsIDcwLCA3OSwgNzYsIAotICAgIDY4LCA2OSwgMTk2LCA3MCwgNzksIDcxLCA3MSwgODksIDEyOCwgNzAsIDc5LCA3MSwgMTI4LCA3MCwgMjA3LCA3MCwgNzcsIAotICAgIDEyOCwgNzAsIDc2LCA4OSwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODksIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgCi0gICAgODIsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc2LCA4NSwgODQsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg1LCAKLSAgICA4NCwgNjksIDEyOCwgNzAsIDc2LCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MCwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIAotICAgIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3MCwgNzYsIDc5LCA4NSwgCi0gICAgODIsIDczLCA4MywgNzIsIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDcwLCA3NiwgNzksIDgyLCAKLSAgICA2NSwgMjA0LCA3MCwgNzYsIDc5LCA4MCwgODAsIDIxNywgNzAsIDc2LCA3OSwgNzksIDgyLCAxMjgsIDcwLCA3NiwgNzksIAotICAgIDc5LCAyMTAsIDcwLCA3NiwgNzMsIDgwLCAxMjgsIDcwLCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDc2LCA3MywgCi0gICAgNjcsIDIwMywgNzAsIDc2LCA2OSwgODgsIDg1LCA4MywgMTI4LCA3MCwgNzYsIDY5LCA4OCwgNjksIDE5NiwgNzAsIDc2LCAKLSAgICA2OSwgODgsIDEyOCwgNzAsIDc2LCA2OSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzAsIDc2LCA2OSwgODUsIDgyLCA0NSwgNjgsIAotICAgIDY5LCA0NSwgNzYsIDczLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgODQsIDY5LCA3OCwgNjksIDE5NiwgNzAsIDc2LCA2NSwgCi0gICAgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgODMsIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgCi0gICAgNjUsIDcxLCA0NSwgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAKLSAgICAxMjgsIDcwLCA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgCi0gICAgNzAsIDczLCA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCAKLSAgICA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIAotICAgIDczLCA4NiwgMTk3LCA3MCwgNzMsIDg0LCA5MCwgODAsIDY1LCA4NCwgODIsIDczLCA2NywgMjAzLCA3MCwgNzMsIDg0LCA2NSwgCi0gICAgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAKLSAgICAxOTksIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgCi0gICAgMjAzLCA3MCwgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAKLSAgICAyMDAsIDcwLCA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIAotICAgIDgyLCA3NSwgODMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgCi0gICAgNzAsIDczLCA4MiwgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCAKLSAgICA3MSwgNjksIDgyLCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAyMTEsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIAotICAgIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDgyLCA0NSwgODAsIDc5LCA4MywgMjEyLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgMjEwLCA3MCwgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzgsIDY1LCA3NiwgCi0gICAgMTI4LCA3MCwgNzMsIDc2LCAyMDUsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCAKLSAgICAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCA3MCwgNzMsIDczLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTAsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgMTk3LCA3MCwgCi0gICAgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAyMTcsIDcwLCAKLSAgICA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIAotICAgIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDcwLCA3MywgCi0gICAgNjksIDc2LCAxOTYsIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgCi0gICAgNzAsIDY5LCA4NSwgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCAKLSAgICA4NCwgNzMsIDg2LCA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgCi0gICAgMjExLCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCAKLSAgICA2OSwgNzksIDIwMCwgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIAotICAgIDc4LCA3MywgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgCi0gICAgNzAsIDY5LCA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAKLSAgICAyMTMsIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCAKLSAgICA3NywgMTI4LCA3MCwgNjksIDY5LCA2OCwgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIDY5LCAKLSAgICA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgNjUsIAotICAgIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIDIwNCwgCi0gICAgNzAsIDY5LCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OSwgMTI4LCAKLSAgICA3MCwgNjUsIDg4LCAxMjgsIDcwLCA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCA2OSwgMTI4LCA3MCwgNjUsIAotICAgIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgCi0gICAgNzgsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDcwLCAKLSAgICA2NSwgODQsIDcyLCAxOTMsIDcwLCA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MywgODQsIDEyOCwgNzAsIDY1LCA4MiwgODMsIAotICAgIDIwMSwgNzAsIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgNzAsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgNzAsIDY1LCA3OCwgNjksIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA3NywgCi0gICAgNzMsIDc2LCA4OSwgMTI4LCA3MCwgNjUsIDc3LCAxMjgsIDcwLCA2NSwgNzYsIDc2LCA2OSwgMjA2LCA3MCwgNjUsIDc0LCAKLSAgICAxMjgsIDcwLCA2NSwgNzMsIDc2LCA4NSwgODIsIDY5LCAxMjgsIDcwLCA2NSwgNzMsIDcyLCA4NSwgMTI4LCA3MCwgNjUsIAotICAgIDczLCA2NiwgMTI4LCA3MCwgNjUsIDcyLCA4MiwgNjksIDc4LCA3MiwgNjksIDczLCA4NCwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgCi0gICAgNzksIDgyLCA4OSwgMTI4LCA3MCwgNjUsIDY3LCA4NCwgNzksIDIxMCwgNzAsIDY1LCA2NywgODMsIDczLCA3NywgNzMsIDc2LCAKLSAgICAxOTcsIDcwLCA2NSwgNjcsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTQsIDEyOCwgNzAsIAotICAgIDY1LCA2NywgNjksIDQ1LCA1MywgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUyLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgCi0gICAgNTEsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCAKLSAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzAsIDY1LCA2NSwgNzMsIDEyOCwgNzAsIDY1LCA2NSwgNzAsIDg1LCAxMjgsIAotICAgIDcwLCA0OCwgNTMsIDUxLCAxMjgsIDcwLCA0OCwgNTMsIDUwLCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NywgMTI4LCA3MCwgCi0gICAgNDgsIDUzLCA0OSwgNjYsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCAxMjgsIDcwLCAKLSAgICA0OCwgNTMsIDQ4LCAxMjgsIDcwLCA0OCwgNTIsIDU3LCAxMjgsIDcwLCA0OCwgNTIsIDU2LCAxMjgsIDcwLCA0OCwgNTIsIAotICAgIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTQsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCAxMjgsIDcwLCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDcwLCA0OCwgNTIsIDUxLCAxMjgsIDcwLCA0OCwgNTIsIDUwLCAxMjgsIDcwLCA0OCwgNTIsIDQ5LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDcwLCA0OCwgNTEsIDU3LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCA2NSwgMTI4LCA3MCwgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDEyOCwgNzAsIDQ4LCA1MSwgCi0gICAgNTQsIDEyOCwgNzAsIDQ4LCA1MSwgNTMsIDEyOCwgNzAsIDQ4LCA1MSwgNTIsIDEyOCwgNzAsIDQ4LCA1MSwgNTEsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNTAsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDQ4LCAxMjgsIDcwLCA0OCwgNTAsIDU3LCAxMjgsIDcwLCA0OCwgNTAsIDU2LCAxMjgsIDcwLCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDcwLCA0OCwgNTAsIDU0LCAxMjgsIDcwLCA0OCwgNTAsIDUzLCAxMjgsIDcwLCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDcwLCA0OCwgNTAsIDUxLCAxMjgsIDcwLCA0OCwgNTAsIDUwLCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCA2NSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA0OSwgMTI4LCA3MCwgNDgsIDUwLCA0OCwgMTI4LCA3MCwgNDgsIDQ5LCA1NywgMTI4LCA3MCwgNDgsIDQ5LCAKLSAgICA1NiwgMTI4LCA3MCwgNDgsIDQ5LCA1NSwgMTI4LCA3MCwgNDgsIDQ5LCA1NCwgMTI4LCA3MCwgNDgsIDQ5LCA1MywgMTI4LCAKLSAgICA3MCwgNDgsIDQ5LCA1MiwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgNjUsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNTAsIDEyOCwgNzAsIDQ4LCA0OSwgNDksIDEyOCwgNzAsIDQ4LCA0OSwgNDgsIDEyOCwgNzAsIDQ4LCA0OCwgCi0gICAgNTcsIDEyOCwgNzAsIDQ4LCA0OCwgNTYsIDEyOCwgNzAsIDQ4LCA0OCwgNTUsIDEyOCwgNzAsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgNzAsIDQ4LCA0OCwgNTMsIDEyOCwgNzAsIDQ4LCA0OCwgNTIsIDEyOCwgNzAsIDQ4LCA0OCwgNTEsIDEyOCwgNzAsIDQ4LCAKLSAgICA0OCwgNTAsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA5MCwgODMsIAotICAgIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgNjksIDIwNiwgNjksIDkwLCAxMjgsIDY5LCAKLSAgICA4OSwgODksIDg5LCAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzYsIAotICAgIDY1LCA4MywgNzIsIDY5LCAyMTEsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDY5LCA4OSwgCi0gICAgNjksIDcxLCA2NSwgOTAsIDY5LCA0NSwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIAotICAgIDcxLCA2NSwgOTAsIDY5LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCAKLSAgICA2NiwgODIsIDc5LCA4NywgMjExLCA2OSwgODksIDE5NywgNjksIDg5LCA2NiwgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCA2OSwgNzcsIDY5LCA3NiwgMjE3LCAKLSAgICA2OSwgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA4OCwgCi0gICAgODQsIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3MiwgNzMsIDcxLCAyMDAsIDY5LCAKLSAgICA4OCwgODQsIDgyLCAxOTMsIDY5LCA4OCwgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA4NCwgNjksIAotICAgIDc4LCA2OCwgNjksIDY4LCAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY5LCA4OCwgODAsIDgyLCA2OSwgCi0gICAgODMsIDgzLCA3MywgNzksIDc4LCA3NiwgNjksIDgzLCAyMTEsIDY5LCA4OCwgODAsIDc5LCA3OCwgNjksIDc4LCAyMTIsIDY5LCAKLSAgICA4OCwgNzksIDEyOCwgNjksIDg4LCAyMDcsIDY5LCA4OCwgNzMsIDgzLCA4NCwgODMsIDEyOCwgNjksIDg4LCA3MywgODMsIAotICAgIDg0LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA4NSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNzIsIDY1LCA3NiwgCi0gICAgNjksIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCAKLSAgICA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDczLCA4NCwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAotICAgIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAxMjgsIDY5LCA4OCwgCi0gICAgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgMTI4LCA2OSwgODYsIDY5LCA4MiwgMjE3LCAKLSAgICA2OSwgODYsIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIAotICAgIDg1LCA4MiwgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCAKLSAgICA2NywgNjUsIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIAotICAgIDgyLCAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgCi0gICAgNjksIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCAKLSAgICA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIAotICAgIDg5LCAxMjgsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCAyMTcsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA5MCwgCi0gICAgMTI4LCA2OSwgODMsIDg1LCA3NSwgODUsIDg1LCA2OCwgNzksIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAKLSAgICA4MywgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjksIDgzLCA3MiwgNjksIDUxLCAxMjgsIAotICAgIDY5LCA4MywgNzIsIDUwLCA0OSwgMTI4LCA2OSwgODMsIDcyLCA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgCi0gICAgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MywgCi0gICAgNDUsIDUxLCAxMjgsIDY5LCA4MywgNDUsIDUwLCAxMjgsIDY5LCA4MywgNDUsIDQ5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCAKLSAgICA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgCi0gICAgMTI4LCA2OSwgODIsIDczLCA3OCwgMTc4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCA4MSwgCi0gICAgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIAotICAgIDIwNCwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAKLSAgICAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIAotICAgIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAKLSAgICAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIAotICAgIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCAKLSAgICA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgNjksIDgwLCA2NSwgNjcsIDIxMiwgNjksIAotICAgIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCA4OCwgMTI4LCA2OSwgNzksIDc2LCAxMjgsIAotICAgIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgNjksIDEyOCwgCi0gICAgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNDksIDEyOCwgCi0gICAgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCA3OCwgODQsIDcyLCA4NSwgODMsIDczLCAKLSAgICA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgODMsIDY5LCAxMjgsIDY5LCA3OCwgODQsIAotICAgIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgMjEwLCA2OSwgCi0gICAgNzgsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDY5LCA3OCwgODEsIDg1LCA3MywgODIsIDg5LCAxMjgsIDY5LCAKLSAgICA3OCwgODEsIDEyOCwgNjksIDc4LCA3OSwgMjExLCA2OSwgNzgsIDc4LCA3MywgMTI4LCA2OSwgNzgsIDc4LCAxMjgsIDY5LCAKLSAgICA3OCwgNzYsIDY1LCA4MiwgNzEsIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzgsIDcxLCA3MywgNzgsIDY5LCAxMjgsIAotICAgIDY5LCA3OCwgNjgsIDc5LCA3MCwgNzksIDc4LCA3OSwgNzgsIDEyOCwgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY5LCA3OCwgCi0gICAgNjgsIDY5LCA4MCwgMTI4LCA2OSwgNzgsIDY4LCA2OSwgNjUsIDg2LCA3OSwgODUsIDgyLCAxMjgsIDY5LCA3OCwgNjcsIDc5LCAKLSAgICA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDgzLCAxMjgsIAotICAgIDY5LCA3OCwgNjcsIDc2LCA3OSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgNzMsIDc4LCAKLSAgICAxOTksIDY5LCA3OCwgNjcsIDEyOCwgNjksIDc4LCA2NSwgODIsIDg4LCA3MywgMjExLCA2OSwgNzgsIDY1LCA4MiwgNzcsIAotICAgIDc5LCA3OCwgNzMsIDc5LCAyMTEsIDY5LCA3NywgODAsIDg0LCAyMTcsIDY5LCA3NywgODAsIDcyLCA2NSwgODQsIDczLCAKLSAgICAxOTUsIDY5LCA3NywgODAsIDcyLCA2NSwgODMsIDczLCAyMTEsIDY5LCA3NywgNzksIDc0LCAyMDEsIDY5LCA3NywgNjYsIAotICAgIDgyLCA3OSwgNzMsIDY4LCA2OSwgODIsIDg5LCAxMjgsIDY5LCA3NywgNjYsIDc2LCA2OSwgNzcsIDEyOCwgNjksIDc3LCA2NiwgCi0gICAgNjksIDc2LCA3NiwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDc3LCA2NiwgNjksIDY4LCA2OCwgNzMsIAotICAgIDc4LCA3MSwgMTI4LCA2OSwgNzYsIDg5LCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgCi0gICAgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAKLSAgICAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIAotICAgIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgCi0gICAgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjYsIAotICAgIDY1LCA4MywgNjUsIDIwNiwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgNjksIDEyOCwgNjksIDc2LCA2NSwgNzcsIDczLCA4NCwgCi0gICAgMTk3LCA2OSwgNzYsIDY1LCA3MCwgODIsIDc5LCA3OCwgMTI4LCA2OSwgNzUsIDgzLCA4NCwgODIsIDY5LCA4MCwgODQsIDc5LCAKLSAgICA3OCwgMTI4LCA2OSwgNzUsIDgzLCAxMjgsIDY5LCA3NSwgNzAsIDc5LCA3OCwgNzMsIDg0LCA3MywgNzUsIDc5LCA3OCwgCi0gICAgMTI4LCA2OSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjksIDc1LCA2NSwgNzcsIDEyOCwgNjksIDc0LCA2OSwgNjcsIDIxMiwgCi0gICAgNjksIDczLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMjE3LCAKLSAgICA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCA4MywgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAyMTEsIDY5LCA3MywgNzEsIAotICAgIDcyLCA4NCwgNzIsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgCi0gICAgNjksIDY5LCAyMDYsIDY5LCA3MywgNzEsIDcyLCA4NCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDczLCAKLSAgICA2OSwgMTI4LCA2OSwgNzIsIDg3LCA2NSwgMjE4LCA2OSwgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIAotICAgIDY1LCAyMDQsIDY5LCA3MSwgODksIDEyOCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgCi0gICAgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCAKLSAgICA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAxMjgsIDY5LCA2NywgODMsIDEyOCwgNjksIDY2LCA2OSwgNzAsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgCi0gICAgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCAKLSAgICA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIAotICAgIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgCi0gICAgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCAKLSAgICA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIAotICAgIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIAotICAgIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgCi0gICAgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCAKLSAgICA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgCi0gICAgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCAKLSAgICA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCAKLSAgICA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIAotICAgIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAKLSAgICAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIAotICAgIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgCi0gICAgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgCi0gICAgOTAsIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCAKLSAgICA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIDkwLCA2NSwgODksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIAotICAgIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCAKLSAgICA3OCwgNjUsIDc3LCA3MywgMTk1LCA2OCwgODksIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4OSwgNjUsIAotICAgIDc4LCAxMjgsIDY4LCA4NywgNzksIDEyOCwgNjgsIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIAotICAgIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgCi0gICAgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCAKLSAgICA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIAotICAgIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgCi0gICAgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgCi0gICAgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDE5OSwgNjgsIDg1LCA2NiwgCi0gICAgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIAotICAgIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgCi0gICAgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCAKLSAgICA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIAotICAgIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgCi0gICAgMTI4LCA2OCwgODIsIDY5LCA2NSwgNzcsIDIxNywgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCAKLSAgICA2NSwgNzcsIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIAotICAgIDcxLCA3OSwgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgCi0gICAgODMsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCAKLSAgICA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgCi0gICAgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NiwgMTk3LCA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4NCwgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCisgICAgNjksIDEyOCwgNzIsIDY4LCA4MiwgMTI4LCA3MiwgNjcsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCAKKyAgICA2NSwgODMsIDE5MywgNzIsIDY2LCA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIAorICAgIDY1LCA4NywgNzQsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgCisgICAgNzcsIDY5LCAxMjgsIDcyLCA2NSwgMjEzLCA3MiwgNjUsIDg0LCA4MiwgNjUsIDIwNiwgNzIsIDY1LCA4NCwgNzIsIDczLCAKKyAgICAxMjgsIDcyLCA2NSwgODQsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIAorICAgIDY1LCAxOTgsIDcyLCA2NSwgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgCisgICAgODIsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCAKKyAgICA3OCwgNzMsIDY3LCAxMjgsIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIAorICAgIDgzLCA4MywgMTI4LCA3MiwgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgCisgICAgNzksIDIwNywgNzIsIDY1LCA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCA3MiwgNjUsIDc1LCAKKyAgICA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDIxMSwgNzIsIDY1LCA3OCwgNjgsIAorICAgIDc2LCA2OSwgODMsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIDY1LCA3NiwgCisgICAgNzYsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCAKKyAgICA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIDIwNCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIAorICAgIDc5LCA3NSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgNzksIDIwMywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgCisgICAgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNDUsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgMjEyLCA3MiwgNjUsIAorICAgIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDg0LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCAKKyAgICA2NywgODUsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDE5NywgNzIsIAorICAgIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgwLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCAyMDgsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgODcsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCAyMTUsIDcyLCAKKyAgICA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgCisgICAgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCAKKyAgICA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIAorICAgIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDE5MywgNzIsIDY1LCA3NywgCisgICAgODMsIDg0LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCAKKyAgICA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCA3MSwgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIAorICAgIDc2LCA3OSwgMTI4LCA3MiwgNjUsIDc2LCA3MCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgCisgICAgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCAKKyAgICA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIDY1LCA3MywgMjExLCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgCisgICAgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgCisgICAgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCAKKyAgICA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCAKKyAgICA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIAorICAgIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgCisgICAgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCAKKyAgICA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCAKKyAgICA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCAKKyAgICA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCAKKyAgICA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgODYsIDY1LCA3OCwgNzEsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCAKKyAgICA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIAorICAgIDcyLCAyMDEsIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgCisgICAgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgCisgICAgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCAKKyAgICA3MSwgODUsIDY5LCA3MywgMTI4LCA3MSwgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIAorICAgIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgCisgICAgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCAKKyAgICA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCAKKyAgICA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCAKKyAgICA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIAorICAgIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgCisgICAgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCAKKyAgICA2OSwgNjksIDIwNiwgNzEsIDgyLCA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIAorICAgIDY5LCA4MiwgNDUsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCAKKyAgICA2NSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIAorICAgIDg2LCA2OSwgODksIDY1LCA4MiwgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA4NiwgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAKKyAgICA4MywgMTI4LCA3MSwgODIsIDY1LCA4MywgMjExLCA3MSwgODIsIDY1LCA4MywgMjA4LCA3MSwgODIsIDY1LCA4MCwgNzIsIAorICAgIDY5LCA3NywgMTk3LCA3MSwgODIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc4LCA4NCwgNzIsIDE5MywgCisgICAgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDc2LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCA2OSwgCisgICAgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCAKKyAgICA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIAorICAgIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCAKKyAgICA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCA3MywgCisgICAgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCA3OSwgCisgICAgNzYsIDcwLCA2OSwgODIsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCA3MSwgNzksIDczLCAKKyAgICA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIDcxLCA3OSwgNjUsIAorICAgIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgODYsIDczLCA4OSwgCisgICAgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg2LCA2OSwgMTI4LCAKKyAgICA3MSwgNzYsIDc5LCA4NCwgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIAorICAgIDc4LCA2OCwgMjA3LCA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgCisgICAgNzEsIDc2LCA2NSwgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgCisgICAgNzMsIDgzLCA3MiwgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCAKKyAgICA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMjExLCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIAorICAgIDgyLCA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIAorICAgIDczLCA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgCisgICAgNzcsIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA3MSwgMTI4LCA3MSwgCisgICAgNzMsIDY5LCA4NCwgMTI4LCA3MSwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzEsIDczLCA2NiwgNjYsIDc5LCA4NSwgMjExLCAKKyAgICA3MSwgNzMsIDY2LCA2NSwgMTI4LCA3MSwgNzMsIDUyLCAxMjgsIDcxLCA3MywgMTgwLCA3MSwgNzIsIDkwLCAxMjgsIDcxLCAKKyAgICA3MiwgODcsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCAxOTMsIAorICAgIDcxLCA3MiwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODUsIDEyOCwgNzEsIDcyLCA3OSwgODMsIDg0LCAxMjgsIDcxLCA3MiwgCisgICAgNzksIDEyOCwgNzEsIDcyLCA3MywgNzcsIDY5LCA3NiwgMTI4LCA3MSwgNzIsIDczLCAxMjgsIDcxLCA3MiwgNzIsIDY1LCAKKyAgICAxMjgsIDcxLCA3MiwgNjksIDg5LCA4MywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3MSwgNzIsIDY5LCA4NSwgCisgICAgNzEsIDcyLCA2OSwgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg0LCAxMjgsIDcxLCA3MiwgNjksIAorICAgIDY5LCAxMjgsIDcxLCA3MiwgNjksIDEyOCwgNzEsIDcyLCAxOTcsIDcxLCA3MiwgNjUsIDg5LCA3OCwgMTI4LCA3MSwgNzIsIAorICAgIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDgwLCAxMjgsIDcxLCA3MiwgNjUsIDc4LCAxMjgsIDcxLCA3MiwgCisgICAgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNzIsIDY1LCA3MywgNzgsIDg1LCAKKyAgICAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3MywgMjA2LCA3MSwgNzIsIDY1LCA2OCwgMTI4LCAKKyAgICA3MSwgNzIsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA3MywgCisgICAgMTI4LCA3MSwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDcxLCA4NywgNjksIDEyOCwgNzEsIDcxLCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDcxLCA3MSwgODcsIDY1LCAxMjgsIDcxLCA3MSwgODUsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDg0LCAxMjgsIDcxLCAKKyAgICA3MSwgODUsIDgyLCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgMTI4LCA3MSwgCisgICAgNzEsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDc5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCAKKyAgICA4OCwgMTI4LCA3MSwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA3MywgNjksIAorICAgIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDY5LCAxMjgsIDcxLCA3MSwgNjksIDg4LCAxMjgsIDcxLCA3MSwgNjksIDg0LCAxMjgsIAorICAgIDcxLCA3MSwgNjksIDgwLCAxMjgsIDcxLCA3MSwgNjUsIDg4LCAxMjgsIDcxLCA3MSwgNjUsIDg0LCAxMjgsIDcxLCA2OSwgCisgICAgODQsIDE5MywgNzEsIDY5LCA4MywgODQsIDg1LCA4MiwgNjksIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg1LCAxMjgsIDcxLCAKKyAgICA2OSwgODMsIDcyLCA4NCwgNzMsIDc4LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NCwgNzMsIDIwNiwgNzEsIDY5LCA4MywgNzIsIAorICAgIDUwLCAxMjgsIDcxLCA2OSwgODIsIDgzLCA3MiwgNjUsIDg5LCA3MywgNzcsIDEyOCwgNzEsIDY5LCA4MiwgNzcsIDY1LCAKKyAgICAyMDYsIDcxLCA2OSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNzEsIDY5LCA4MiwgNjksIDgzLCAyMDAsIDcxLCA2OSwgNzksIAorICAgIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIDczLCAKKyAgICAxOTUsIDcxLCA2OSwgNzgsIDg0LCA3NiwgMTk3LCA3MSwgNjksIDc4LCA3MywgODQsIDczLCA4NiwgNjksIDEyOCwgNzEsIAorICAgIDY5LCA3OCwgNzMsIDc1LCAyMDEsIDcxLCA2OSwgNzgsIDY5LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3NywgNzMsIDc4LCA3MywgCisgICAgMTI4LCA3MSwgNjksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCAKKyAgICAxOTcsIDcxLCA2OSwgMjA1LCA3MSwgNjksIDY5LCA3NywgMTI4LCA3MSwgNjksIDY4LCA3OSwgNzYsIDY1LCAxMjgsIDcxLCAKKyAgICA2OSwgNjgsIDY5LCAxMjgsIDcxLCA2OSwgNjYsIDIwNywgNzEsIDY5LCA2NiwgMTkzLCA3MSwgNjksIDY1LCA4MiwgMTI4LCAKKyAgICA3MSwgNjksIDY1LCAyMTAsIDcxLCA2OSwgNTAsIDUwLCAxMjgsIDcxLCA2OCwgNjUsIDc4LCAxMjgsIDcxLCA2NywgNzMsIAorICAgIDcxLCAxMjgsIDcxLCA2NywgNjUsIDIwNiwgNzEsIDY2LCA3OSwgNzgsIDEyOCwgNzEsIDY2LCA3MywgNjksIDE5NywgNzEsIAorICAgIDY2LCA2OSwgODUsIDg4LCAxMjgsIDcxLCA2NiwgNjksIDg0LCAxMjgsIDcxLCA2NiwgNjUsIDg5LCA3MywgMTI4LCA3MSwgCisgICAgNjYsIDY1LCA3NSwgODUsIDgyLCA4NSwgNzgsIDY5LCA3OCwgMTI4LCA3MSwgNjYsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCAKKyAgICA4NSwgNzUsIDczLCA4NCwgODQsIDY1LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA2NSwgODksIAorICAgIDEyOCwgNzEsIDY1LCA4NSwgNzgsIDg0LCA3NiwgNjksIDg0LCAxMjgsIDcxLCA2NSwgODQsIDcyLCA2OSwgODIsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcxLCA2NSwgODQsIDY5LCAxMjgsIDcxLCAKKyAgICA2NSwgODMsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgODMsIDcyLCA4NSwgNzgsIDczLCAxMjgsIDcxLCA2NSwgODIsIAorICAgIDc5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA3MSwgNjUsIDgyLCA2OCwgNjksIDc4LCAKKyAgICAxMjgsIDcxLCA2NSwgODIsIDUxLCAxMjgsIDcxLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA3MSwgNjUsIDIwOCwgNzEsIDY1LCAKKyAgICA3OCwgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDcxLCA3MywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNjgsIDE5MywgNzEsIAorICAgIDY1LCA3OCwgNTAsIDEyOCwgNzEsIDY1LCA3OCwgMTc4LCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3NywgCisgICAgNzYsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY5LCAxMjgsIDcxLCA2NSwgNzcsIDE5NywgCisgICAgNzEsIDY1LCA3NywgNjUsIDc4LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2NSwgMjA0LCAKKyAgICA3MSwgNjUsIDcxLCAxMjgsIDcxLCA2NSwgNzAsIDEyOCwgNzEsIDY1LCAxOTgsIDcxLCA2NSwgNjksIDg0LCA4NCwgNjUsIAorICAgIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA2OCwgNzksIDc2LCAxMjgsIDcxLCA2NSwgNjgsIDEyOCwgCisgICAgNzEsIDY1LCAxOTYsIDcxLCA2NSwgNjYsIDY1LCAxMjgsIDcxLCA2NSwgNjYsIDE5MywgNzEsIDY1LCA2NSwgNzAsIDg1LCAKKyAgICAxMjgsIDcxLCA2NSwgMTc4LCA3MSwgNDgsIDUzLCA1MiwgMTI4LCA3MSwgNDgsIDUzLCA1MSwgMTI4LCA3MSwgNDgsIDUzLCAKKyAgICA1MCwgMTI4LCA3MSwgNDgsIDUzLCA0OSwgMTI4LCA3MSwgNDgsIDUzLCA0OCwgMTI4LCA3MSwgNDgsIDUyLCA1NywgMTI4LCAKKyAgICA3MSwgNDgsIDUyLCA1NiwgMTI4LCA3MSwgNDgsIDUyLCA1NSwgMTI4LCA3MSwgNDgsIDUyLCA1NCwgMTI4LCA3MSwgNDgsIAorICAgIDUyLCA1MywgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDEyOCwgNzEsIDQ4LCA1MiwgNTIsIDEyOCwgNzEsIDQ4LCA1MiwgCisgICAgNTEsIDY1LCAxMjgsIDcxLCA0OCwgNTIsIDUxLCAxMjgsIDcxLCA0OCwgNTIsIDUwLCAxMjgsIDcxLCA0OCwgNTIsIDQ5LCAKKyAgICAxMjgsIDcxLCA0OCwgNTIsIDQ4LCAxMjgsIDcxLCA0OCwgNTEsIDU3LCAxMjgsIDcxLCA0OCwgNTEsIDU2LCAxMjgsIDcxLCAKKyAgICA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgNjUsIDEyOCwgNzEsIAorICAgIDQ4LCA1MSwgNTQsIDEyOCwgNzEsIDQ4LCA1MSwgNTMsIDEyOCwgNzEsIDQ4LCA1MSwgNTIsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTEsIDEyOCwgNzEsIDQ4LCA1MSwgNTAsIDEyOCwgNzEsIDQ4LCA1MSwgNDksIDEyOCwgNzEsIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNTcsIDEyOCwgNzEsIDQ4LCA1MCwgNTYsIDEyOCwgNzEsIDQ4LCA1MCwgNTUsIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCAxMjgsIDcxLCA0OCwgNTAsIDUzLCAxMjgsIDcxLCA0OCwgNTAsIAorICAgIDUyLCAxMjgsIDcxLCA0OCwgNTAsIDUxLCAxMjgsIDcxLCA0OCwgNTAsIDUwLCAxMjgsIDcxLCA0OCwgNTAsIDQ5LCAxMjgsIAorICAgIDcxLCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgMTI4LCA3MSwgNDgsIDQ5LCA1NywgMTI4LCA3MSwgCisgICAgNDgsIDQ5LCA1NiwgMTI4LCA3MSwgNDgsIDQ5LCA1NSwgMTI4LCA3MSwgNDgsIDQ5LCA1NCwgMTI4LCA3MSwgNDgsIDQ5LCAKKyAgICA1MywgMTI4LCA3MSwgNDgsIDQ5LCA1MiwgMTI4LCA3MSwgNDgsIDQ5LCA1MSwgMTI4LCA3MSwgNDgsIDQ5LCA1MCwgMTI4LCAKKyAgICA3MSwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDEyOCwgNzEsIDQ4LCA0OSwgNDgsIDEyOCwgNzEsIAorICAgIDQ4LCA0OCwgNTcsIDEyOCwgNzEsIDQ4LCA0OCwgNTYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDcxLCA0OCwgCisgICAgNDgsIDU1LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OCwgNTQsIDEyOCwgNzEsIDQ4LCA0OCwgNTMsIDEyOCwgNzEsIDQ4LCA0OCwgNTIsIDEyOCwgNzEsIDQ4LCA0OCwgNTEsIAorICAgIDEyOCwgNzEsIDQ4LCA0OCwgNTAsIDEyOCwgNzEsIDQ4LCA0OCwgNDksIDEyOCwgNzAsIDg5LCA4OCwgMTI4LCA3MCwgODksIAorICAgIDg0LCAxMjgsIDcwLCA4OSwgODAsIDEyOCwgNzAsIDg5LCA2NSwgMTI4LCA3MCwgODcsIDczLCAxMjgsIDcwLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDcwLCA4NywgNjksIDEyOCwgNzAsIDg3LCA2NSwgNjUsIDEyOCwgNzAsIDg3LCA2NSwgMTI4LCA3MCwgODYsIAorICAgIDgzLCA1MSwgMTI4LCA3MCwgODYsIDgzLCA1MCwgMTI4LCA3MCwgODYsIDgzLCA0OSwgMTI4LCA3MCwgODUsIDg4LCAxMjgsIAorICAgIDcwLCA4NSwgODQsIDEyOCwgNzAsIDg1LCA4MywgNjksIDEyOCwgNzAsIDg1LCA4MywgMTkzLCA3MCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3MCwgODUsIDgwLCAxMjgsIDcwLCA4NSwgNzgsIDY5LCA4MiwgNjUsIDIwNCwgNzAsIDg1LCA3OCwgNjcsIDg0LCAKKyAgICA3MywgNzksIDc4LCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzAsIDg1LCA3NiwgNzYsIAorICAgIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcwLCA4NSwgNzYsIDIwNCwgNzAsIDg1LCA3NCwgNzMsIDEyOCwgNzAsIDg1LCA2OSwgCisgICAgODQsIDEyOCwgNzAsIDg1LCA2OSwgMjA0LCA3MCwgODUsIDY5LCAxMjgsIDcwLCA4NSwgNjUsIDEyOCwgNzAsIDg0LCA3MiwgCisgICAgNzksIDgyLCAxOTMsIDcwLCA4MywgNzMsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDcwLCAKKyAgICA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDg3LCA3OCwgMTI4LCA3MCwgODIsIDc5LCA4NywgCisgICAgMjA2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNzAsIDgyLCA3OSwgNzgsIDg0LCAKKyAgICA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcwLCA4MiwgNzksIDc4LCAyMTIsIDcwLCA4MiwgNzksIDIwNSwgNzAsIAorICAgIDgyLCA3OSwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgMTk5LCA3MCwgODIsIDczLCA4NCwgODUsIDEyOCwgNzAsIDgyLCA3MywgCisgICAgNjksIDgzLCAxMjgsIDcwLCA4MiwgNzMsIDY5LCAxOTYsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA4NiwgNjksIAorICAgIDEyOCwgNzAsIDgyLCA2OSwgODQsIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA3MCwgODIsIDY5LCA3OCwgNjcsIDIwMCwgCisgICAgNzAsIDgyLCA2OSwgNjksIDEyOCwgNzAsIDgyLCA2OSwgMTk3LCA3MCwgODIsIDY1LCA3OCwgNzUsIDIxMSwgNzAsIDgyLCAKKyAgICA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCA4MywgMTI4LCA3MCwgODIsIDY1LCA3NywgNjksIDEyOCwgNzAsIAorICAgIDgyLCA2NSwgNzcsIDE5NywgNzAsIDgyLCA2NSwgNzEsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgMjA2LCA3MCwgNzksIDg4LCAxMjgsIDcwLCAKKyAgICA3OSwgMjE2LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIAorICAgIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgCisgICAgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCAKKyAgICA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIAorICAgIDczLCA3OCwgMTI4LCA3MCwgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIAorICAgIDE5NiwgNzAsIDc5LCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODIsIDg0LCAyMTcsIDcwLCA3OSwgODIsIDg0LCA3MywgCisgICAgNjksIDg0LCA3MiwgMTI4LCA3MCwgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCAKKyAgICA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDY1LCAyMTIsIDcwLCA3OSwgODIsIAorICAgIDc1LCA2OSwgMTk2LCA3MCwgNzksIDgyLCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3MCwgNzksIDgyLCA2NywgNjksIDgzLCAKKyAgICAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MywgODQsIAorICAgIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzAsIDc5LCA3OSwgCisgICAgODQsIDc4LCA3OSwgODQsIDE5NywgNzAsIDc5LCA3OSwgODQsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCAKKyAgICAxMjgsIDcwLCA3OSwgNzksIDc2LCAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCAKKyAgICA3OCwgMjEyLCA3MCwgNzksIDc4LCA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIAorICAgIDc2LCA4OSwgMTI4LCA3MCwgNzksIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgCisgICAgODIsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzksIDcxLCAKKyAgICAxMjgsIDcwLCAyMDcsIDcwLCA3NywgMTI4LCA3MCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgCisgICAgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIAorICAgIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgCisgICAgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDc2LCA3OSwgODcsIDY5LCAKKyAgICAyMTAsIDcwLCA3NiwgNzksIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIAorICAgIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgCisgICAgODIsIDEyOCwgNzAsIDc2LCA3OSwgNzksIDIxMCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCAKKyAgICA4NCwgMTI4LCA3MCwgNzYsIDczLCA2NywgMjAzLCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIAorICAgIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3MCwgCisgICAgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIAorICAgIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDY2LCA4MiwgCisgICAgNjksIDY1LCA2OCwgMTI4LCA3MCwgNzYsIDY1LCA4MywgNzIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDgzLCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCA0NSwgNTMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIAorICAgIDUxLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTAsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA0OSwgMTI4LCA3MCwgCisgICAgNzYsIDY1LCA3MSwgMTI4LCA3MCwgNzYsIDY1LCAxOTksIDcwLCA3NiwgNjUsIDEyOCwgNzAsIDc2LCAxMjgsIDcwLCA3MywgCisgICAgODgsIDY5LCA2OCwgNDUsIDcwLCA3OSwgODIsIDIwNSwgNzAsIDczLCA4OCwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDg0LCAKKyAgICA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3MywgODYsIAorICAgIDE5NywgNzAsIDczLCA4NCwgOTAsIDgwLCA2NSwgODQsIDgyLCA3MywgNjcsIDIwMywgNzAsIDczLCA4NCwgNjUsIDEyOCwgCisgICAgNzAsIDczLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA4NCwgNjksIDE5NiwgNzAsIDczLCA4MywgNzIsIDczLCA3OCwgMTk5LCAKKyAgICA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDIwMywgNzAsIAorICAgIDczLCA4MywgNzIsIDY5LCA4OSwgNjksIDEyOCwgNzAsIDczLCA4MywgNzIsIDEyOCwgNzAsIDczLCA4MywgMjAwLCA3MCwgCisgICAgNzMsIDgyLCA4MywgMjEyLCA3MCwgNzMsIDgyLCA3MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgNzUsIDgzLCAKKyAgICAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCAyMDMsIDcwLCA3MywgODIsIDY5LCAxMjgsIDcwLCA3MywgODIsIAorICAgIDE5NywgNzAsIDczLCA4MCwgMTI4LCA3MCwgNzMsIDc4LCA3MywgODQsIDE5NywgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCisgICAgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMjExLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA3OCwgNjUsIDczLCAKKyAgICA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNDUsIAorICAgIDgwLCA3OSwgODMsIDIxMiwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDIxMCwgCisgICAgNzAsIDczLCA3OCwgNjUsIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc4LCA2NSwgNzYsIDEyOCwgNzAsIDczLCAKKyAgICA3NiwgMjA1LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgNDUsIAorICAgIDQ5LCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCAxOTYsIDcwLCA3MywgCisgICAgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCA3MCwgNzMsIDczLCAxMjgsIDcwLCA3MywgCisgICAgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDczLCAKKyAgICA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgMTk3LCA3MCwgNzMsIDcxLCA3MiwgODQsIAorICAgIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAyMTcsIDcwLCA3MywgNzAsIDg0LCA3MiwgCisgICAgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCAKKyAgICA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDcwLCA3MywgNjksIDc2LCAxOTYsIAorICAgIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIDg2LCAKKyAgICA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgNjksIAorICAgIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIDIwMCwgCisgICAgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDgyLCAxMjgsIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCAKKyAgICA3MCwgNjksIDc3LCA3MywgNzgsIDczLCA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIAorICAgIDY1LCA3NiwgMTk3LCA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAKKyAgICAxMjgsIDcwLCA2OSwgNzIsIDIxMywgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAKKyAgICAxMjgsIDcwLCA2OSwgNjksIDc3LCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCAKKyAgICA2OSwgMTI4LCA3MCwgNjksIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIAorICAgIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgCisgICAgODIsIDcwLCA4NSwgMjA0LCA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKKyAgICA3MCwgNjUsIDg5LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIAorICAgIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgCisgICAgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCAKKyAgICA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgzLCA4NCwgMTI4LCAKKyAgICA3MCwgNjUsIDgyLCA4MywgMjAxLCA3MCwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCAKKyAgICA3MCwgNjUsIDc4LCA3MSwgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgCisgICAgMTI4LCA3MCwgNjUsIDc3LCA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzcsIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDY5LCAKKyAgICAyMDYsIDcwLCA2NSwgNzQsIDEyOCwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIAorICAgIDg1LCAxMjgsIDcwLCA2NSwgNzMsIDY2LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAKKyAgICAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIAorICAgIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIDE5NywgNzAsIDY1LCA2NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgNzAsIDY1LCA2NywgCisgICAgNjksIDQ1LCA1NCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgCisgICAgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgCisgICAgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjksIDkwLCA4MywgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCAKKyAgICA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIDg5LCA4OSwgODksIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCAKKyAgICA2OSwgMjExLCA2OSwgODksIDY5LCA3NiwgNjUsIDgzLCA3MiwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIAorICAgIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCAKKyAgICA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgCisgICAgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIDY2LCA4MiwgNzksIDg3LCAyMTEsIDY5LCA4OSwgMTk3LCA2OSwgODksIDY2LCAKKyAgICA2OSwgODksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIAorICAgIDY5LCA3NywgNjksIDc2LCAyMTcsIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNjUsIDIwNCwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIAorICAgIDcyLCA3MywgNzEsIDIwMCwgNjksIDg4LCA4NCwgODIsIDE5MywgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIAorICAgIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCAKKyAgICA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDg4LCA3MiwgNjUsIDc2LCA2OSwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzMsIDg0LCAKKyAgICA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIAorICAgIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAKKyAgICAxMjgsIDY5LCA4NiwgNjksIDgyLCAyMTcsIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIAorICAgIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgCisgICAgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIAorICAgIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgCisgICAgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAKKyAgICA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCAKKyAgICA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgCisgICAgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgODksIDEyOCwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIAorICAgIDIxNywgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDkwLCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCisgICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAorICAgIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgCisgICAgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgzLCA0NSwgNTEsIDEyOCwgNjksIDgzLCA0NSwgNTAsIDEyOCwgCisgICAgNjksIDgzLCA0NSwgNDksIDEyOCwgNjksIDgyLCA4MiwgNzksIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCAKKyAgICA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCAxNzgsIDY5LCA4MiwgNzEsIAorICAgIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIDgxLCA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgCisgICAgODEsIDg1LCA3MywgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgMjA0LCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCAKKyAgICA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIAorICAgIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgCisgICAgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCAKKyAgICA2OSwgODAsIDY1LCA2NywgMjEyLCA2OSwgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIAorICAgIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIAorICAgIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgCisgICAgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCAKKyAgICA4MiwgODksIDQ1LCA0OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIAorICAgIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCAKKyAgICA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIAorICAgIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCA3OCwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNjksIDc4LCA4MSwgCisgICAgODUsIDczLCA4MiwgODksIDEyOCwgNjksIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDczLCAKKyAgICAxMjgsIDY5LCA3OCwgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIAorICAgIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgCisgICAgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCAKKyAgICA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIAorICAgIDc5LCA4MywgODUsIDgyLCA2OSwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgCisgICAgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAKKyAgICAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIAorICAgIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA3OSwgCisgICAgNzQsIDIwMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCAKKyAgICA3NywgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIAorICAgIDY2LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODksIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgCisgICAgNzYsIDc2LCA3MywgODAsIDg0LCA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIDc2LCAKKyAgICA3NiwgNzMsIDgwLCA4MywgNjksIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIAorICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCA2OSwgCisgICAgODYsIDY5LCAyMDYsIDY5LCA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAKKyAgICAyMTIsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIAorICAgIDE5NSwgNjksIDc2LCA2NiwgNjUsIDgzLCA2NSwgMjA2LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCA2OSwgMTI4LCA2OSwgCisgICAgNzYsIDY1LCA3NywgNzMsIDg0LCAxOTcsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCAKKyAgICA4MiwgNjksIDgwLCA4NCwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIAorICAgIDczLCA3NSwgNzksIDc4LCAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzUsIDY1LCA3NywgMTI4LCA2OSwgCisgICAgNzQsIDY5LCA2NywgMjEyLCA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCAKKyAgICA3MSwgNzIsIDg0LCAyMTcsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzMsIDY5LCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIAorICAgIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgCisgICAgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIAorICAgIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDY5LCAKKyAgICAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MiwgODQsIDgzLCA2NSwgMTI4LCA2OSwgNzIsIDg0LCA2NSwgMTI4LCAKKyAgICA2OSwgNzIsIDgwLCA2NSwgMTI4LCA2OSwgNzIsIDc1LCA2NSwgMTI4LCA2OSwgNzIsIDY3LCA3MiwgNjUsIDEyOCwgNjksIAorICAgIDcxLCA4OSwgODAsIDg0LCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCAxMjgsIDY5LCA3MSwgCisgICAgNzMsIDgyLCAxMjgsIDY5LCA3MSwgNzEsIDEyOCwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDY5LCAKKyAgICA3NSwgNjUsIDY1LCAxMjgsIDY5LCA2OSwgNzIsIDEyOCwgNjksIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgCisgICAgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCAKKyAgICA2OCwgMTI4LCA2OSwgNjcsIDgzLCAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIAorICAgIDg0LCA2OSwgODIsIDIwNiwgNjksIDY1LCA4MywgODQsIDEyOCwgNjksIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgCisgICAgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCAKKyAgICA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIAorICAgIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgCisgICAgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIAorICAgIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgCisgICAgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCAKKyAgICA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIAorICAgIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCAKKyAgICA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIAorICAgIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCAKKyAgICA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgOTAsIAorICAgIDY1LCAxMjgsIDY4LCA5MCwgODksIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDg3LCA2OSwgMTI4LCA2OCwgOTAsIDg1LCAxMjgsIAorICAgIDY4LCA5MCwgNzksIDEyOCwgNjgsIDkwLCA3NCwgNjksIDEyOCwgNjgsIDkwLCA3MywgODQsIDY1LCAxMjgsIDY4LCA5MCwgCisgICAgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNzksIDczLCAxMjgsIDY4LCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAKKyAgICAxMjgsIDY4LCA5MCwgNjksIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCAKKyAgICA5MCwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIDY4LCA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAKKyAgICAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCA4OSwgNzgsIDY1LCA3NywgNzMsIDE5NSwgNjgsIDg5LCAKKyAgICA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODksIDY1LCA3OCwgMTI4LCA2OCwgODcsIDc5LCAxMjgsIDY4LCAKKyAgICA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIAorICAgIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgCisgICAgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIAorICAgIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIAorICAgIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCAxOTksIDY4LCA4NSwgNjcsIDc1LCAxMjgsIDY4LCA4NSwgNjYsIDUwLCAxMjgsIAorICAgIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIDgyLCAyMTcsIDY4LCA4MiwgODUsIAorICAgIDc3LCA4MywgODQsIDczLCA2NywgNzUsIDgzLCAxMjgsIDY4LCA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgCisgICAgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIDY4LCA4MiwgNzksIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCAKKyAgICA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgNjgsIDgyLCA3OSwgNzksIDc2LCA3MywgNzgsIDE5OSwgNjgsIAorICAgIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2OCwgODIsIDczLCA4NiwgCisgICAgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgODIsIDY5LCA4MywgODMsIDEyOCwgCisgICAgNjgsIDgyLCA2OSwgNjUsIDc3LCAyMTcsIDY4LCA4MiwgNjUsIDg1LCA3MSwgNzIsIDg0LCAyMTEsIDY4LCA4MiwgNjUsIDc3LCAKKyAgICAxMjgsIDY4LCA4MiwgNjUsIDIwNSwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIAorICAgIDIwNiwgNjgsIDgyLCA2NSwgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDgzLCAKKyAgICAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgNjgsIAorICAgIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgNDUsIDgwLCA3OSwgNzMsIDc4LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDY4LCA3OSwgODcsIDc4LCAxMjgsIDY4LCA3OSwgODYsIDY5LCAxMjgsIDY4LCA3OSwgODYsIAorICAgIDE5NywgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgCisgICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIAogICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgCiAgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU2LCAKICAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIApAQCAtNDI4NiwyNjMgKzQzMjQsODU0IEBACiAgICAgNzEsIDEyOCwgNjgsIDc5LCA3OCwgNzEsIDEyOCwgNjgsIDc5LCA3NywgNjUsIDczLCAyMDYsIDY4LCA3OSwgNzYsIDgwLCAKICAgICA3MiwgNzMsIDc4LCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA4MywgMTI4LCA2OCwgNzksIDc2LCA3NiwgNjUsIDIxMCwgNjgsIAogICAgIDc5LCA3NiwgNzMsIDg1LCA3NywgMTI4LCA2OCwgNzksIDc1LCA3NywgNjUsIDczLCAxMjgsIDY4LCA3OSwgNzMsIDg0LCAKLSAgICAxMjgsIDY4LCA3OSwgNzMsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgNjgsIDc5LCA2OSwgMjExLCA2OCwgCi0gICAgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCAKLSAgICA3OSwgNjcsIDg1LCA3NywgNjksIDc4LCAyMTIsIDY4LCA3OSwgNjYsIDgyLCA3OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIAotICAgIDY1LCA4MywgNzIsIDc3LCA2OSwgNjksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDE5NywgCi0gICAgNjgsIDc5LCA2NSwgMTI4LCA2OCwgNzksIDQ1LCA3OSwgMTI4LCA2OCwgNzcsIDEyOCwgNjgsIDIwNSwgNjgsIDc2LCA4NSwgCi0gICAgMTI4LCA2OCwgNzYsIDc5LCAxMjgsIDY4LCA3NiwgNzMsIDEyOCwgNjgsIDc2LCA3MiwgODksIDY1LCAxMjgsIDY4LCA3NiwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAxMjgsIDY4LCA3NSwgCi0gICAgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCA2OCwgNzQsIDY5LCAKLSAgICA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3MywgOTAsIDkwLCAyMTcsIDY4LCAKLSAgICA3MywgODYsIDc5LCA4MiwgNjcsIDE5NywgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODYsIAotICAgIDczLCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgODYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgCi0gICAgODYsIDczLCA2OCwgNjksIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCA4MywgMTI4LCA2OCwgNzMsIDg2LCAKLSAgICA3MywgNjgsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAotICAgIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAKLSAgICAxMjgsIDY4LCA3MywgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY4LCA3MywgODMsIDg0LCA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCAKLSAgICA3NiwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIAotICAgIDc2LCA4NiwgNjksIDEyOCwgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgCi0gICAgNzUsIDEyOCwgNjgsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCAKLSAgICA4MywgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIAotICAgIDY1LCA4MCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgCi0gICAgNzMsIDgyLCA3MSwgMTkzLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNjgsIDczLCA4MCwgODQsIAotICAgIDY5LCAxMjgsIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgCi0gICAgNjgsIDczLCA4MCwgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCA2NiwgNjUsIAotICAgIDIxMiwgNjgsIDczLCAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgCi0gICAgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIDY4LCA3MywgCi0gICAgNzcsIDczLCA3OCwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCA3MywgMTkzLCAKLSAgICA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgCi0gICAgNzksIDIwNiwgNjgsIDczLCA3NywgNTAsIDEyOCwgNjgsIDczLCA3NywgMTc4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCA3MywgCi0gICAgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIDY1LCAKLSAgICA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDIwNiwgNjgsIDczLCA3MSwgNzMsIDg0LCA4MywgMTI4LCA2OCwgNzMsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgCi0gICAgNzMsIDcxLCAxOTMsIDY4LCA3MywgNzAsIDg0LCA3OSwgNzEsIDcxLCA3OSwgMjExLCA2OCwgNzMsIDcwLCA3OSwgNzgsIDczLCAKLSAgICA2NSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgMjE3LCA2OCwgNzMsIDcwLCA3MCwgNzMsIAotICAgIDY3LCA4NSwgNzYsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgODQsIDczLCAKLSAgICA2NSwgNzYsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA2NywgMTk3LCA2OCwgNzMsIDcwLCA2NSwgODQsIAotICAgIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCA4MywgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDczLCA2OSwgCi0gICAgODMsIDY5LCAyMDQsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIDY2LCAxMjgsIDY4LCA3MywgCi0gICAgNjUsIDg0LCA3OSwgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgMjAxLCA2OCwgNzMsIDY1LCAKLSAgICA4MywgODQsIDc5LCA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIDEyOCwgNjgsIDczLCA2NSwgNzcsIAotICAgIDc5LCA3OCwgNjgsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgCi0gICAgMjEwLCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCAKLSAgICA3NSwgMTkzLCA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIAotICAgIDc2LCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgCi0gICAgNjksIDgzLCA3MywgODMsIDQ1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgCi0gICAgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDczLCAxMjgsIDY4LCA3MiwgNzMsIDEyOCwgCi0gICAgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIDcyLCA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCAKLSAgICA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIAotICAgIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDY1LCA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgCi0gICAgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAKLSAgICA2NSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgNjksIDEyOCwgNjgsIAotICAgIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgCi0gICAgOTAsIDIwMCwgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMywgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIAotICAgIDIxMSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY4LCA2OSwgODYsIDczLCA2NywgMTk3LCA2OCwgNjksIDg2LCA2OSwgCi0gICAgNzYsIDc5LCA4MCwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgODMsIDc1LCAKLSAgICA4NCwgNzksIDIwOCwgNjgsIDY5LCA4MywgMjAzLCA2OCwgNjksIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY4LCA2OSwgODMsIAotICAgIDczLCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgODQsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCAyMTIsIDY4LCA2OSwgCi0gICAgODMsIDY5LCA4MiwgNjksIDIxMiwgNjgsIDY5LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgNjgsIDY5LCAKLSAgICA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNjksIDgyLCAxMjgsIAotICAgIDY4LCA2OSwgODIsIDY5LCA4NCwgNDUsIDcyLCA3MywgNjgsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDEyOCwgCi0gICAgNjgsIDY5LCA4MiwgNjksIDc2LCA3MywgNjcsIDIxMiwgNjgsIDY5LCA4MCwgODQsIDcyLCAxMjgsIDY4LCA2OSwgODAsIDY1LCAKLSAgICA4MiwgODQsIDg1LCA4MiwgNjksIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNjksIAotICAgIDgwLCA2NSwgODIsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDY5LCA3OCwgODQsIDczLCA4MywgODQsIDgyLCAyMTcsIDY4LCA2OSwgCi0gICAgNzgsIDg0LCA2NSwgMjA0LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjgsIDY5LCAKLSAgICA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCA4NCwgNzksIDIxMCwgNjgsIDY5LCA3OCwgNzgsIDY5LCA3OCwgMTI4LCA2OCwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjksIDc4LCAxOTcsIDY4LCA2OSwgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDY4LCA2OSwgCi0gICAgNzYsIDg0LCA2NSwgMTI4LCA2OCwgNjksIDc2LCA4NCwgMTkzLCA2OCwgNjksIDc2LCA4NCwgMTI4LCA2OCwgNjksIDc2LCAKLSAgICA4MCwgNzIsIDczLCAxOTUsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAyMTcsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIAotICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgCi0gICAgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMjEwLCA2OCwgNjksIDc2LCA3MywgNjcsIDczLCA3OSwgODUsIDIxMSwgNjgsIDY5LCAKLSAgICA3NiwgNjksIDg0LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA2OSwgODQsIDE5NywgNjgsIDY5LCA3NSwgNjUsIDEyOCwgNjgsIAotICAgIDY5LCA3NSwgMTI4LCA2OCwgNjksIDczLCAxMjgsIDY4LCA2OSwgNzIsIDczLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgCi0gICAgNjksIDgzLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgMTk3LCA2OCwgNjksIDcwLCA3MywgNzgsIDczLCA4NCwgNzMsIDc5LCAKLSAgICA3OCwgMTI4LCA2OCwgNjksIDcwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCAyMTEsIDY4LCA2OSwgNjksIAotICAgIDgyLCAxMjgsIDY4LCA2OSwgNjksIDgwLCA3NiwgODksIDEyOCwgNjgsIDY5LCA2OSwgNzYsIDEyOCwgNjgsIDY5LCA2NywgCi0gICAgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDc5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCAKLSAgICA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIAotICAgIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA2OSwgNjcsIDczLCA4MywgNzMsIDg2LCAKLSAgICA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDc3LCA2NSwgMjA0LCA2OCwgNjksIDY3LCA3MywgNjgsIAotICAgIDg1LCA3OSwgODUsIDIxMSwgNjgsIDY5LCA2NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNjcsIDY1LCA4OSwgCi0gICAgNjksIDY4LCAxMjgsIDY4LCA2OSwgNjYsIDczLCAyMTIsIDY4LCA2OSwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjksIDY1LCAKLSAgICA2OCwgMTI4LCA2OCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgNjgsIDg1LCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4NCwgMTI4LCAKLSAgICA2OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODIsIDEyOCwgNjgsIDY4LCA4NSwgODAsIDEyOCwgNjgsIAotICAgIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA2OCwgODUsIDc5LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCAxMjgsIDY4LCA2OCwgNzksIDg4LCAxMjgsIDY4LCA2OCwgNzksIDg0LCAxMjgsIDY4LCA2OCwgNzksIDgwLCAKLSAgICAxMjgsIDY4LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA2OCwgNzMsIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDg0LCAxMjgsIDY4LCAKLSAgICA2OCwgNzMsIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIAotICAgIDY4LCA3MywgNjksIDEyOCwgNjgsIDY4LCA3MywgMTI4LCA2OCwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNjgsIDcyLCA3OSwgCi0gICAgMTI4LCA2OCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDEyOCwgCi0gICAgNjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjksIDg4LCAxMjgsIDY4LCAKLSAgICA2OCwgNjksIDgwLCAxMjgsIDY4LCA2OCwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNjksIDEyOCwgNjgsIDY4LCA2OCwgNzIsIAotICAgIDY1LCAxMjgsIDY4LCA2OCwgNjgsIDY1LCAxMjgsIDY4LCA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCAKLSAgICA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIAotICAgIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCA2NywgODMsIDEyOCwgNjgsIDY3LCA3MiwgNjksIDEyOCwgNjgsIAotICAgIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCA0OSwgMTI4LCA2OCwgMTk0LCAKLSAgICA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCA2OCwgNjUsIDg3LCA2NiwgCi0gICAgMTI4LCA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCAKLSAgICA2NSwgODQsIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIAotICAgIDcyLCA2OSwgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgCi0gICAgNjUsIDEyOCwgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIAotICAgIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIAotICAgIDY4LCA2NSwgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgCi0gICAgNDUsIDc3LCA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCAKLSAgICA2OSwgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIAotICAgIDEyOCwgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIAotICAgIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgCi0gICAgNzcsIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCAKLSAgICA3NywgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIAotICAgIDc2LCA2OSwgODQsIDcyLCA0NSwgODIsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgCi0gICAgNjUsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDY1LCA3NiwgNjksIDIxMiwgNjgsIDY1LCA3NiwgNjgsIDY1LCAxMjgsIDY4LCAKLSAgICA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAyMDAsIDY4LCA2NSwgNzYsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNjUsIDczLCA4MiwgMTI4LCA2OCwgNjUsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3MywgMTI4LCA2OCwgCi0gICAgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIAotICAgIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCA2NSwgCi0gICAgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgMjAwLCAKLSAgICA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCA2OCwgNjUsIAotICAgIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA1MSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgCi0gICAgODMsIDg1LCAxMjgsIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCAKLSAgICA0OCwgNTQsIDU1LCA3MSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDU1LCA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAKLSAgICAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1MywgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIAotICAgIDU0LCA1MCwgMTI4LCA2OCwgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgCi0gICAgMTI4LCA2OCwgNDgsIDUzLCA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA1MywgMTI4LCA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNTEsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDgsIDcxLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MywgNDgsIDY4LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgCi0gICAgNTIsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCAKLSAgICA1NCwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNjgsIDQ4LCA1MiwgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIAotICAgIDQ4LCA1MiwgNDgsIDEyOCwgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAKLSAgICAxMjgsIDY4LCA0OCwgNTEsIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCAKLSAgICA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA2OCwgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgNjgsIDQ4LCA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNjgsIDQ4LCA1MCwgNTEsIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNDgsIDEyOCwgNjgsIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjgsIDQ4LCA0OSwgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIAotICAgIDQ4LCA0OSwgNTEsIDEyOCwgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgNjgsIDQ4LCA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAKLSAgICAxMjgsIDY4LCA0OCwgNDgsIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDY3LCA4OSwgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIAotICAgIDgyLCA2OSwgNzgsIDY1LCA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgCi0gICAgNjcsIDg5LCA4MCwgNjksIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCAKLSAgICA4MiwgNzMsIDY3LCA3MywgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIAotICAgIDg5LCAxMjgsIDY3LCA4OSwgNjUsIDg3LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIAotICAgIDg3LCA3OSwgMTI4LCA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgCi0gICAgODQsIDcyLCAxMjgsIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgCi0gICAgODUsIDg1LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCAKLSAgICA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgMTI4LCA2NywgODUsIDgzLCA4MCwgCi0gICAgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCAKLSAgICA2OSwgNjgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIAotICAgIDgyLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgMTI4LCA2NywgCi0gICAgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAxMjgsIDY3LCAKLSAgICA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCA2OCwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDE5NiwgNjcsIAotICAgIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgNjcsIAotICAgIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgCi0gICAgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCA2NSwgMjA1LCA2NywgODUsIDEyOCwgCi0gICAgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCA4MiwgODksIDgwLCA4NCwgNzksIDcxLCAKLSAgICA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIAotICAgIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgCi0gICAgNjksIDQ1LCA1MywgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCAKLSAgICA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCAKLSAgICA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIAotICAgIDc5LCA4MywgODMsIDcyLCA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgCi0gICAgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIAotICAgIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDg4LCAxMjgsIAotICAgIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIDY5LCAxMjgsIDY3LCA4MiwgCi0gICAgNzMsIDY3LCA3NSwgNjksIDIxMiwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA2NywgODIsIDY5LCAKLSAgICA4MywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDIxMiwgNjcsIDgyLCA2OSwgNjgsIAotICAgIDczLCAyMTIsIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgNjksIDY1LCA3NywgMTI4LCA2NywgCi0gICAgODIsIDY1LCA4OSwgNzksIDc4LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCA4MiwgNjUsIDY2LCAKLSAgICAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgCi0gICAgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgCi0gICAgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODUsIDY3LCAKLSAgICAyMDAsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIAotICAgIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgCi0gICAgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCAKLSAgICA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIAotICAgIDIxMCwgNjcsIDc5LCA4MiwgNzUsIDEyOCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgCi0gICAgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCAKLSAgICA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIAotICAgIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCAKLSAgICA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIAotICAgIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgCi0gICAgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCAKLSAgICA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIAotICAgIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDczLCA3OCwgMTk5LCA2NywgCi0gICAgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCAKLSAgICA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIAotICAgIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA2OSwgCi0gICAgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCAKLSAgICA2OSwgMTk2LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgCi0gICAgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCAKLSAgICA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIAotICAgIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgCi0gICAgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIAotICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgCi0gICAgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgCi0gICAgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCAKLSAgICA3OSwgNzcsIDgwLCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCAKLSAgICA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIAotICAgIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgCi0gICAgNjgsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCAKLSAgICA4NCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIDg1LCA3NywgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2NywgNzksIDc2LCAKLSAgICA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIAotICAgIDcxLCAxMjgsIDY3LCA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgCi0gICAgNjUsIDczLCAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc3LCAKLSAgICAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCAKLSAgICA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIAotICAgIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgCi0gICAgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIDY3LCAKLSAgICA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgNzYsIAotICAgIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgCi0gICAgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDgwLCAKLSAgICA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzgsIAotICAgIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCA3MCwgCi0gICAgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIDY5LCAKLSAgICA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgNjUsIAotICAgIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODMsIDgzLCA3MywgNjcsIDY1LCAKLSAgICAyMDQsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIDIxMCwgNjcsIAotICAgIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgMjA2LCA2NywgNzYsIDY1LCA3NywgODMsIDcyLCA2OSwgNzYsIDIwNCwgCi0gICAgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgODYsIDczLCAKLSAgICA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY3LCA3MywgODQsIAotICAgIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAyMDEsIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIAotICAgIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCAKLSAgICA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCAxOTksIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgODIsIAotICAgIDY3LCA3NiwgNjksIDIxMSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgNjgsIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgCi0gICAgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIAorICAgIDEyOCwgNjgsIDc5LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA3MywgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCAKKyAgICA2OCwgNzksIDY5LCAyMTEsIDY4LCA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgNjgsIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDc5LCA2NiwgODIsIDc5LCAKKyAgICAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIAorICAgIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgCisgICAgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIAorICAgIDcyLCA4OSwgNjUsIDEyOCwgNjgsIDc2LCA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgCisgICAgMTI4LCA2OCwgNzYsIDEyOCwgNjgsIDc1LCA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgCisgICAgODYsIDczLCAxMjgsIDY4LCA3NCwgNjksIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgCisgICAgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCisgICAgODIsIDgzLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIAorICAgIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgCisgICAgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCAKKyAgICA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIAorICAgIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgODUsIDg0LCA2OSwgCisgICAgMTk2LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA3NSwgMTI4LCAKKyAgICA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA2NywgNzksIAorICAgIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgNjUsIDgwLCA4MCwgCisgICAgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3MywgODIsIDcxLCAKKyAgICAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDgwLCA4NCwgNjksIDEyOCwgCisgICAgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgNzMsIDgwLCAKKyAgICA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCA2OCwgNzMsIAorICAgIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgCisgICAgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCAKKyAgICA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgCisgICAgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCAKKyAgICA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIAorICAgIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCAxNzgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgNzksIAorICAgIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAyMDUsIDY4LCA3MywgCisgICAgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgMjA2LCA2OCwgNzMsIDcxLCAKKyAgICA3MywgODQsIDgzLCAxMjgsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA3MywgNzEsIDE5MywgNjgsIAorICAgIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA2OCwgCisgICAgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIAorICAgIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA2OCwgCisgICAgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgMTI4LCA2OCwgNzMsIDY5LCAKKyAgICA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCA4MywgNjksIDIwNCwgNjgsIAorICAgIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgCisgICAgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCAKKyAgICAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgCisgICAgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAyMTAsIDY4LCAKKyAgICA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCAxOTMsIAorICAgIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgNzYsIDEyOCwgCisgICAgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIAorICAgIDczLCA4MywgNDUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIDEyOCwgCisgICAgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgNzksIDc5LCAKKyAgICAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgNzMsIDEyOCwgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIDcyLCAKKyAgICA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIAorICAgIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCA2OSwgCisgICAgMTI4LCA2OCwgNzIsIDY1LCA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAxMjgsIDY4LCAKKyAgICA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIAorICAgIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDcyLCA2NSwgNjUsIDc2LCA4NSwgMTI4LCA2OCwgCisgICAgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgOTAsIDIwMCwgNjgsIDY5LCA4OSwgODQsIDY5LCAKKyAgICA4MiwgNzksIDIxMywgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIAorICAgIDY4LCA2OSwgODYsIDczLCA2NywgMTk3LCA2OCwgNjksIDg2LCA2OSwgNzYsIDc5LCA4MCwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjgsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgODMsIDc1LCA4NCwgNzksIDIwOCwgNjgsIDY5LCA4MywgMjAzLCAKKyAgICA2OCwgNjksIDgzLCA3MywgNzEsIDc4LCAxMjgsIDY4LCA2OSwgODMsIDczLCAxMjgsIDY4LCA2OSwgODMsIDY5LCA4MiwgODQsIAorICAgIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCAyMTIsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgNjgsIDY5LCA4MywgCisgICAgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgNjgsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCAKKyAgICA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgNDUsIDcyLCA3MywgCisgICAgNjgsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgODQsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDc2LCA3MywgNjcsIAorICAgIDIxMiwgNjgsIDY5LCA4MCwgODQsIDcyLCAxMjgsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDg1LCA4MiwgNjksIDEyOCwgCisgICAgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3MywgNzgsIAorICAgIDE5OSwgNjgsIDY5LCA3OCwgODQsIDczLCA4MywgODQsIDgyLCAyMTcsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2OCwgCisgICAgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjgsIDY5LCA3OCwgNzksIDc3LCA3MywgNzgsIAorICAgIDY1LCA4NCwgNzksIDIxMCwgNjgsIDY5LCA3OCwgNzgsIDY5LCA3OCwgMTI4LCA2OCwgNjksIDc4LCA3MSwgMTI4LCA2OCwgCisgICAgNjksIDc4LCAxOTcsIDY4LCA2OSwgNzgsIDY1LCA4MiwgNzMsIDg1LCAyMTEsIDY4LCA2OSwgNzYsIDg0LCA2NSwgMTI4LCAKKyAgICA2OCwgNjksIDc2LCA4NCwgMTkzLCA2OCwgNjksIDc2LCA4NCwgMTI4LCA2OCwgNjksIDc2LCA4MCwgNzIsIDczLCAxOTUsIAorICAgIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCAyMTcsIDY4LCA2OSwgNzYsIDczLCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA2OCwgNjksIDc2LCA3MywgNzcsIDczLCA4NCwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIAorICAgIDg0LCA2OSwgMjEwLCA2OCwgNjksIDc2LCA3MywgNjcsIDczLCA3OSwgODUsIDIxMSwgNjgsIDY5LCA3NiwgNjksIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjgsIDY5LCA3NiwgNjksIDg0LCA2OSwgMTI4LCA2OCwgNjksIDc2LCA2OSwgODQsIDE5NywgNjgsIDY5LCAKKyAgICA3NSwgNjUsIDEyOCwgNjgsIDY5LCA3NSwgMTI4LCA2OCwgNjksIDczLCAxMjgsIDY4LCA2OSwgNzIsIDczLCAxMjgsIDY4LCAKKyAgICA2OSwgNzEsIDgyLCA2OSwgNjksIDgzLCAxMjgsIDY4LCA2OSwgNzEsIDgyLCA2OSwgMTk3LCA2OCwgNjksIDcwLCA3MywgNzgsIAorICAgIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNjksIDcwLCA2OSwgNjcsIDg0LCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCAKKyAgICAyMTEsIDY4LCA2OSwgNjksIDgyLCAxMjgsIDY4LCA2OSwgNjksIDgwLCA3NiwgODksIDEyOCwgNjgsIDY5LCA2OSwgNzYsIAorICAgIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgNjgsIDc5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgCisgICAgNjUsIDgzLCA2OSwgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA2OCwgNjksIDY3LCA3OSwgODIsIDY1LCAKKyAgICA4NCwgNzMsIDg2LCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA2OSwgNjcsIAorICAgIDczLCA4MywgNzMsIDg2LCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDc3LCA2NSwgMjA0LCA2OCwgCisgICAgNjksIDY3LCA3MywgNjgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDY5LCA2NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDY4LCAKKyAgICA2OSwgNjcsIDY1LCA4OSwgNjksIDY4LCAxMjgsIDY4LCA2OSwgNjYsIDczLCAyMTIsIDY4LCA2OSwgNjUsIDg0LCA3MiwgCisgICAgMTI4LCA2OCwgNjksIDY1LCA2OCwgMTI4LCA2OCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgNjgsIDg1LCA4OCwgMTI4LCA2OCwgCisgICAgNjgsIDg1LCA4NCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNjgsIDY4LCA4NSwgODIsIDEyOCwgNjgsIDY4LCAKKyAgICA4NSwgODAsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDg4LCAxMjgsIDY4LCA2OCwgODUsIDc5LCA4MCwgMTI4LCA2OCwgNjgsIAorICAgIDg1LCA3OSwgMTI4LCA2OCwgNjgsIDg1LCAxMjgsIDY4LCA2OCwgNzksIDg4LCAxMjgsIDY4LCA2OCwgNzksIDg0LCAxMjgsIAorICAgIDY4LCA2OCwgNzksIDgwLCAxMjgsIDY4LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA2OCwgNzMsIDg4LCAxMjgsIDY4LCA2OCwgCisgICAgNzMsIDg0LCAxMjgsIDY4LCA2OCwgNzMsIDgwLCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA2OCwgNjgsIDczLCAKKyAgICA2OSwgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDEyOCwgNjgsIDY4LCA3MywgMTI4LCA2OCwgNjgsIDcyLCA4NSwgMTI4LCAKKyAgICA2OCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgNjksIDEyOCwgNjgsIDY4LCA3MiwgNjksIDEyOCwgNjgsIAorICAgIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OCwgNjksIDg4LCAxMjgsIDY4LCA2OCwgCisgICAgNjksIDgwLCAxMjgsIDY4LCA2OCwgNjksIDY5LCAxMjgsIDY4LCA2OCwgNjksIDEyOCwgNjgsIDY4LCA2OCwgNzIsIDY1LCAKKyAgICAxMjgsIDY4LCA2OCwgNjgsIDY1LCAxMjgsIDY4LCA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIAorICAgIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgCisgICAgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAKKyAgICAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCA2NywgODMsIDEyOCwgNjgsIDY3LCA3MiwgNjksIDEyOCwgNjgsIDY3LCAKKyAgICA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgCisgICAgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCA2OCwgNjUsIDg3LCA2NiwgMTI4LCAKKyAgICA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIAorICAgIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCAKKyAgICA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIAorICAgIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgCisgICAgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCAKKyAgICA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgCisgICAgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgCisgICAgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKKyAgICA3OCwgNjcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgCisgICAgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCAKKyAgICA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIAorICAgIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCA0NSwgODIsIDY5LCA4MywgNzIsIDEyOCwgCisgICAgNjgsIDY1LCA3NiwgNjksIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDY1LCA3NiwgNjksIAorICAgIDIxMiwgNjgsIDY1LCA3NiwgNjgsIDY1LCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCA3NiwgCisgICAgNjUsIDg0LCAyMDAsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMTI4LCA2OCwgNjUsIDczLCA4MiwgMTI4LCA2OCwgNjUsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3MywgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIAorICAgIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgCisgICAgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAKKyAgICAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDcxLCAKKyAgICA1MSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCAKKyAgICA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIDY4LCA2NSwgNjUsIDc2LCA3MywgMTI4LCAKKyAgICA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzEsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgCisgICAgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgMTI4LCA2OCwgNDgsIDU0LCAKKyAgICA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgNjgsIDQ4LCA1NCwgNTMsIAorICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCA1NCwgNTAsIDEyOCwgNjgsIAorICAgIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIDEyOCwgNjgsIDQ4LCA1MywgCisgICAgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIDQ4LCA1MywgNTMsIDEyOCwgCisgICAgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgNTMsIDUxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCA0OSwgMTI4LCA2OCwgNDgsIAorICAgIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MSwgMTI4LCA2OCwgCisgICAgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OCwgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIDUyLCA1NiwgNjUsIDEyOCwgCisgICAgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY4LCAKKyAgICA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAxMjgsIDY4LCA0OCwgNTIsIAorICAgIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIDU1LCAxMjgsIDY4LCA0OCwgCisgICAgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUxLCAKKyAgICA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgNDgsIDUxLCA0OSwgNjUsIAorICAgIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCA1MCwgNTcsIDEyOCwgNjgsIAorICAgIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCAxMjgsIDY4LCA0OCwgCisgICAgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIDY4LCA0OCwgNTAsIDUxLCAKKyAgICAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgNTAsIDQ4LCAxMjgsIDY4LCAKKyAgICA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAxMjgsIDY4LCA0OCwgNDksIAorICAgIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCA0OCwgNDksIDUxLCAxMjgsIAorICAgIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIDQ4LCAxMjgsIDY4LCA0OCwgCisgICAgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgMTI4LCA2OCwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCA0OSwgMTI4LCA2NywgODksIAorICAgIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCA4MiwgNjksIDc4LCA2NSwgCisgICAgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA4OSwgODAsIDY5LCAKKyAgICA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgODIsIDczLCA2NywgNzMsIAorICAgIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCA4OSwgMTI4LCA2NywgCisgICAgODksIDY1LCA4NywgMTI4LCA2NywgODksIDY1LCAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgCisgICAgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCAKKyAgICA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCA4NSwgMTI4LCAKKyAgICA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIAorICAgIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDg1LCA4MywgODAsIDEyOCwgNjcsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCA4NiwgNjksIDY4LCAxMjgsIDY3LCAKKyAgICA4NSwgODIsIDg2LCA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIAorICAgIDg1LCA4MiwgODMsIDczLCA4NiwgMTk3LCA2NywgODUsIDgyLCA4MiwgMjE3LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA4NCwgCisgICAgMTI4LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCAyMTIsIDY3LCA4NSwgODIsIDc2LCAyMTcsIDY3LCA4NSwgODIsIDc2LCAKKyAgICAxMjgsIDY3LCA4NSwgODIsIDEyOCwgNjcsIDg1LCA4MCwgODAsIDY5LCA2OCwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIAorICAgIDE5NiwgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIAorICAgIDIwNSwgNjcsIDg1LCA2NywgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDY3LCA4NSwgNjYsIDY5LCA2OCwgMTI4LCA2NywgCisgICAgODUsIDY2LCAxOTcsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgNzksIDEyOCwgNjcsIDg1LCA2NSwgODQsIDgyLCAKKyAgICA3MywgNzYsIDc2LCAyMDcsIDY3LCA4NSwgNjUsIDIwNSwgNjcsIDg1LCAxMjgsIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCAKKyAgICA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIAorICAgIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgCisgICAgNzMsIDcwLCA3OSwgODIsIDIwNSwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCAKKyAgICA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgCisgICAgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTAsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCAKKyAgICA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDE5OSwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgCisgICAgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCAKKyAgICA4MywgNjksIDY4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCA2NiwgNzksIAorICAgIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIDY3LCA4MiwgCisgICAgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCA2NywgODIsIDc5LCA3MywgODMsIDgzLCA2NSwgNzgsIDg0LCAKKyAgICAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIDY5LCAxMjgsIAorICAgIDY3LCA4MiwgNzMsIDY3LCA3NSwgNjksIDIxMiwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA2NywgCisgICAgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDIxMiwgNjcsIDgyLCAKKyAgICA2OSwgNjgsIDczLCAyMTIsIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgNjksIDY1LCA3NywgCisgICAgMTI4LCA2NywgODIsIDY1LCA4OSwgNzksIDc4LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA4MiwgNjUsIDY2LCAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIDg4LCAxMjgsIDY3LCA3OSwgODcsIDY2LCA3OSwgMjE3LCAKKyAgICA2NywgNzksIDg3LCAxMjgsIDY3LCA3OSwgMjE1LCA2NywgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4NSwgODAsIAorICAgIDc2LCAxOTcsIDY3LCA3OSwgODUsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgCisgICAgNzMsIDc4LCA3NSwgMTI4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgNjYsIDc5LCA4MiwgNjksIDEyOCwgNjcsIDc5LCAKKyAgICA4NSwgNzgsIDY3LCA3MywgMjA0LCA2NywgNzksIDg1LCA2NywgMjAwLCA2NywgNzksIDg0LCAxMjgsIDY3LCA3OSwgODIsIAorICAgIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDY4LCAyMTEsIDY3LCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgCisgICAgODIsIDgwLCA4MywgNjksIDEyOCwgNjcsIDc5LCA4MiwgODAsIDc5LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCAKKyAgICA3OSwgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3OSwgODIsIAorICAgIDc4LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCAyMTAsIDY3LCA3OSwgODIsIDc1LCAxMjgsIDY3LCA3OSwgCisgICAgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY3LCAKKyAgICA3OSwgODAsIDg5LCAxMjgsIDY3LCA3OSwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MCwgODAsIAorICAgIDY5LCA4MiwgNDUsIDUwLCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgNjcsIDc5LCA4MCwgMTI4LCA2NywgCisgICAgNzksIDc5LCA3NiwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNzMsIDY5LCAKKyAgICAxMjgsIDY3LCA3OSwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzksIDc5LCAxMjgsIDY3LCA3OSwgNzgsIDg2LCA2OSwgODIsIAorICAgIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODYsIDY5LCA3OCwgNzMsIDY5LCA3OCwgNjcsIDE5NywgNjcsIDc5LCA3OCwgCisgICAgODQsIDgyLCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA3OSwgMjA0LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCAKKyAgICA4MiwgNzMsIDY5LCA4NCwgODksIDEyOCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDgyLCA2OSwgMTk2LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCAyMTAsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA3MywgNzgsIDg1LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODQsIDczLCA3OCwgODUsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2OSwgCisgICAgNzcsIDgwLCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCAyMTEsIDY3LCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgMjA2LCA2NywgNzksIAorICAgIDc4LCA4NCwgNjUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIAorICAgIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgCisgICAgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNjksIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCAKKyAgICA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIAorICAgIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDY5LCAKKyAgICA2OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgCisgICAgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIAorICAgIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIAorICAgIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgCisgICAgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCAKKyAgICA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUzLCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUyLCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTUsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTUsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTUsIDQ4LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDU0LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUzLCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ5LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTQsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTQsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU1LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDU0LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDUwLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTMsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTMsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTMsIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU2LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU1LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUxLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTIsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTIsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU3LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU2LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUyLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTEsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTEsIDQ4LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU3LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU3LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU2LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU1LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDU0LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUzLCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUwLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ5LCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNTAsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNTAsIDQ4LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU3LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU3LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU2LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU2LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU1LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU1LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU1LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDU0LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDU0LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDU0LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUzLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUzLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUyLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUyLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUxLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUxLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDUwLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDUwLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDUwLCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDQ5LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ5LCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDksIDQ4LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDksIDQ4LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU3LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU3LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU3LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU2LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1NiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU2LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCAKKyAgICA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1MSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU2LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1NywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU1LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCAKKyAgICA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1MiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU1LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU1LCA0OCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDU0LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCAKKyAgICA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1MywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDU0LCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA0OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDU0LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUzLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCAKKyAgICA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUzLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA1MCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUzLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUyLCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCAKKyAgICA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1NSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUyLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1MSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUyLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUyLCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCAKKyAgICA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1NiwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUxLCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUxLCAKKyAgICA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1NywgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDUwLCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDUwLCA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCAKKyAgICA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDUwLCA0OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1NCwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA0OSwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCAKKyAgICA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1NywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgCisgICAgNDgsIDQ4LCA1NiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1MywgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIAorICAgIDg0LCA0NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCAKKyAgICA1MSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA1MCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzksIDc4LCA2OSwgNzgsIDg0LCA0NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDczLCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA4MCwgNzYsIDY5LCA4NCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCA2NywgNzksIAorICAgIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIDY4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDc3LCA2NSwgMTI4LCA2NywgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgNjYsIDczLCA3OCwgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NywgNzksIDc3LCA2NiwgMTI4LCA2NywgNzksIDc2LCA4NSwgNzcsIDc4LCAxMjgsIDY3LCA3OSwgNzYsIDc5LCAKKyAgICA4MiwgMTI4LCA2NywgNzksIDc2LCA3NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NiwgNzYsIDEyOCwgNjcsIAorICAgIDc5LCA3NiwgMTk2LCA2NywgNzksIDcwLCA3MCwgNzMsIDc4LCAxMjgsIDY3LCA3OSwgNjksIDc4LCA3MSwgMTI4LCA2NywgCisgICAgNzksIDY5LCA3OCwgMTk5LCA2NywgNzksIDY4LCA2NSwgMTI4LCA2NywgNzksIDY3LCA3NSwgODQsIDY1LCA3MywgMjA0LCAKKyAgICA2NywgNzksIDY1LCA4MywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDY1LCAxMjgsIDY3LCA3NywgMTI4LCA2NywgMjA1LCAKKyAgICA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCA2NywgNzYsIDg1LCA2NiwgNDUsIAorICAgIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIDg1LCAxOTQsIDY3LCA3NiwgCisgICAgNzksIDg3LCAyMDYsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCAKKyAgICA3NiwgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgCisgICAgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIAorICAgIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgCisgICAgNzUsIDg3LCA3MywgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCAKKyAgICA2NywgNzYsIDczLCA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA3NiwgNzMsIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgCisgICAgNzYsIDczLCA3MCwgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIAorICAgIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIAorICAgIDY3LCA3NiwgNjksIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDgzLCA4MywgCisgICAgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA2NywgNzYsIDY1LCA4MCwgODAsIDY5LCAKKyAgICAyMTAsIDY3LCA3NiwgNjUsIDc4LCAxMjgsIDY3LCA3NiwgNjUsIDIwNiwgNjcsIDc2LCA2NSwgNzcsIDgzLCA3MiwgNjksIAorICAgIDc2LCAyMDQsIDY3LCA3NiwgNjUsIDczLCA3NywgMTI4LCA2NywgNzYsIDEyOCwgNjcsIDczLCA4OCwgMTI4LCA2NywgNzMsIAorICAgIDg2LCA3MywgNzYsIDczLCA2NSwgNzgsIDEyOCwgNjcsIDczLCA4NCwgODksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2NywgCisgICAgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgMjAxLCA2NywgNzMsIDg0LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIAorICAgIDc3LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgCisgICAgODIsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgMTk5LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIAorICAgIDgyLCA2NywgNzYsIDY5LCAyMTEsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDY4LCAxMjgsIDY3LCA3MywgODAsIDEyOCwgCisgICAgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCAKICAgICAyMDYsIDY3LCA3MywgMjA1LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIDY3LCA3MywgNjksIDg1LCAKICAgICA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgCiAgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIApAQCAtNDU3NiwzMDAgKzUyMDUsMzA0IEBACiAgICAgODYsIDgyLCA3OSwgMjA2LCA2NywgNzIsIDY5LCA4NCwgMTI4LCA2NywgNzIsIDY5LCA4MywgODQsIDc4LCA4NSwgODQsIAogICAgIDEyOCwgNjcsIDcyLCA2OSwgODMsIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCAyMTEsIDY3LCA3MiwgNjksIDgyLCA4OSwgCiAgICAgMTI4LCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKLSAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCAyMDYsIAotICAgIDY3LCA3MiwgNjksIDczLCA3OCwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA3MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgzLCAxOTcsIDY3LCA3MiwgNjksIDY5LCAKLSAgICA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NywgNzIsIDY5LCA2OSwgNzUsIDIxMSwgNjcsIAotICAgIDcyLCA2OSwgNjksIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgNjksIDIxMCwgCi0gICAgNjcsIDcyLCA2OSwgNjcsIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCA2NywgNzIsIDY1LCAKLSAgICA4OCwgMTI4LCA2NywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDg0LCA4NCwgNjUsIAotICAgIDg3LCA2NSwgMTI4LCA2NywgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDcyLCA2NSwgCi0gICAgODIsIDIxMiwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgMjEyLCAKLSAgICA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCA4NCwgNjksIDgyLCAxMjgsIDY3LCAKLSAgICA3MiwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIAotICAgIDY1LCA3NywgNzUsIDc5LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA2NywgNzIsIDY1LCAyMDUsIDY3LCA3MiwgNjUsIDc1LCA3NywgMTkzLCA2NywgNzIsIDY1LCAKLSAgICA3MywgODIsIDEyOCwgNjcsIDcyLCA2NSwgNzMsIDc4LCA4MywgMTI4LCA2NywgNzIsIDY1LCA2OCwgNjUsIDEyOCwgNjcsIAotICAgIDcyLCA2NSwgMTk2LCA2NywgNzIsIDY1LCA2NSwgMTI4LCA2NywgNzEsIDc0LCAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIAotICAgIDY5LCA4MiwgNjksIDgzLCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgCi0gICAgNzUsIDEyOCwgNjcsIDY5LCA4MiwgNDUsIDg3LCA2NSwgMTI4LCA2NywgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCAKLSAgICA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgCi0gICAgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgCi0gICAgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIAotICAgIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgCi0gICAgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgCi0gICAgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIDgyLCA3MywgNjUsIDIwNCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCAKLSAgICA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA2OCwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIAotICAgIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgCi0gICAgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCA3NiwgODQsIDczLCAKLSAgICAxOTUsIDY3LCA2OSwgNzYsIDgzLCA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NywgNjksIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgMTk5LCA2NywgNjksIDY5LCA4NiwgMTI4LCA2NywgNjksIDY5LCA2NiwgMTI4LCAKLSAgICA2NywgNjksIDY5LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIAotICAgIDE5MywgNjcsIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIAotICAgIDY3LCA2OSwgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgCi0gICAgNzksIDEyOCwgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCAKLSAgICA2NywgNzIsIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgCi0gICAgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDY1LCAxMjgsIDY3LCA2NywgNzIsIDEyOCwgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIAotICAgIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIAotICAgIDY3LCA2NSwgODUsIDY3LCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NywgNjUsIDg1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgCi0gICAgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgCi0gICAgNjUsIDgzLCA3NSwgNjksIDIxMiwgNjcsIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCAKLSAgICA4MiwgNzMsIDY4LCA3MSwgNjksIDEyOCwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIAotICAgIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgCi0gICAgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCAKLSAgICA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIAotICAgIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgCi0gICAgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIAotICAgIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgCi0gICAgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDY3LCA2NSwgODAsIDc5LCAxMjgsIDY3LCAKLSAgICA2NSwgODAsIDczLCA4NCwgODUsIDc2LCA4NSwgNzcsIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIAotICAgIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgCi0gICAgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIAotICAgIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCAyMDQsIDY3LCA2NSwgNzgsIDEyOCwgNjcsIDY1LCA3NywgODAsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjcsIDY1LCA3NywgNzgsIDg1LCAxOTUsIDY3LCA2NSwgNzcsIDY5LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCAKLSAgICA3NywgNjksIDgyLCAxOTMsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIAotICAgIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCAyMTAsIDY3LCA2NSwgNzYsIDY3LCAKLSAgICA4NSwgNzYsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgCi0gICAgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgCi0gICAgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCAKLSAgICA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIAotICAgIDY2LCA3MywgNzgsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAKLSAgICAxMjgsIDY3LCA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCAKLSAgICA1MiwgMTI4LCA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCAKLSAgICA2NywgNDgsIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIAotICAgIDQ5LCA1NSwgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgCi0gICAgMTI4LCA2NywgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgCi0gICAgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIAotICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIAotICAgIDY3LCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCAKLSAgICA0NSwgNTEsIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIAotICAgIDIwMSwgNjYsIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgCi0gICAgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCAKLSAgICA2NiwgODcsIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIAotICAgIDczLCA4MywgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDIwNiwgCi0gICAgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIDg0LCAyMTEsIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCAKLSAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgODMsIDczLCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4NSwgMjExLCA2NiwgODUsIAotICAgIDgyLCAyMTMsIDY2LCA4NSwgODIsIDgyLCA3MywgODQsIDc5LCAxMjgsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgCi0gICAgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgCi0gICAgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDc3LCA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCAKLSAgICA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgNzYsIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIAotICAgIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCA3OCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgMjA2LCA2NiwgCi0gICAgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCAKLSAgICA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIAotICAgIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA2NiwgODUsIDcyLCA3MywgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NiwgODUsIDcxLCAKLSAgICAxMjgsIDY2LCA4NSwgNzAsIDcwLCA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjgsIDEyOCwgNjYsIDg1LCA2NywgNzUsIAotICAgIDc2LCA2OSwgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCA4MywgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCAKLSAgICAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCAKLSAgICA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIAotICAgIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCA2NiwgODIsIDc5LCA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgCi0gICAgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCAKLSAgICA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgNjgsIDcxLCAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIAotICAgIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCA4NiwgNzMsIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgCi0gICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCAKLSAgICA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIAotICAgIDY2LCA4MiwgNjgsIDE5MywgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDY2LCA4MiwgNjUsIDc4LCA2NywgCi0gICAgNzIsIDY5LCA4MywgMTI4LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCAKLSAgICA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIAotICAgIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA4MCwgCi0gICAgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMjExLCA2NiwgNzksIDg5LCAxMjgsIDY2LCA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgCi0gICAgNjYsIDc5LCA4NywgODQsIDczLCAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAKLSAgICAxMjgsIDY2LCA3OSwgODcsIDIwNCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCAKLSAgICA4MSwgODUsIDY5LCA4NCwgMTI4LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCAyMTIsIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIAotICAgIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgCi0gICAgODQsIDc5LCA3NywgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCAKLSAgICA2NiwgNzksIDg0LCA4NCwgNzksIDIwNSwgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIAotICAgIDE5NywgNjYsIDc5LCA4NCwgMjAwLCA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgCi0gICAgNDUsIDUxLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCAKLSAgICA2NiwgNzksIDgwLCA3OSwgNzcsIDc5LCA3MCwgMjA3LCA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIAotICAgIDEyOCwgNjYsIDc5LCA3OSwgNzcsIDY5LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgCi0gICAgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCAKLSAgICA3OSwgNzgsIDY5LCAxMjgsIDY2LCA3OSwgNzcsIDY2LCAxMjgsIDY2LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA3NiwgODQsIAotICAgIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgNzksIDcyLCA2NSwgNzMsIDgyLCA3MywgMTk1LCA2NiwgNzksIDY4LCA4OSwgCi0gICAgMTI4LCA2NiwgNzksIDY4LCAyMTcsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgCi0gICAgNjksIDEyOCwgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3NiwgNzksIDg3LCAKLSAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCAyMTUsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3NiwgNzksIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgCi0gICAgNjYsIDc2LCA3MywgNzgsIDIwMywgNjYsIDc2LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIAotICAgIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3NiwgCi0gICAgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCAKLSAgICA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4NCwgMTk3LCA2NiwgNzMsIAotICAgIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgCi0gICAgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIAotICAgIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgCi0gICAgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCAKLSAgICA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIAotICAgIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgCi0gICAgMTI4LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAKLSAgICAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIAotICAgIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgCi0gICAgODMsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCAKLSAgICA2NiwgNzMsIDY2LCA3NiwgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIAotICAgIDcyLCA4NSwgMTI4LCA2NiwgNzIsIDc5LCA3OSwgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIAotICAgIDcyLCA2OSwgODQsIDcyLCAxMjgsIDY2LCA3MiwgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgCi0gICAgODQsIDg0LCA3MywgODAsIDgyLCA3OSwgNzYsIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgNjUsIAotICAgIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIDg5LCA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIAotICAgIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgCi0gICAgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCAKLSAgICA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIAotICAgIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIAotICAgIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgODQsIDEyOCwgCi0gICAgNjYsIDY5LCA3OCwgMjEyLCA2NiwgNjksIDc4LCA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCAKLSAgICA3OCwgMTk2LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCAKLSAgICA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIDc5LCAyMDgsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIAotICAgIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgCi0gICAgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCAKLSAgICA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIAotICAgIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAKLSAgICAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIAotICAgIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCAKLSAgICA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIAotICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjksIDY1LCA2OCwgODMsIDEyOCwgNjYsIDY5LCA2NSwgCi0gICAgNjcsIDIwMCwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAKLSAgICAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCAKLSAgICA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgCi0gICAgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIAotICAgIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIAotICAgIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgCi0gICAgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAKLSAgICAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIAotICAgIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgCi0gICAgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDgzLCAKLSAgICAxOTMsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgCi0gICAgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NiwgNjUsIDgzLCAKLSAgICA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIAotICAgIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgCi0gICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIAotICAgIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgCi0gICAgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIAotICAgIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIAotICAgIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgCi0gICAgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgNzYsIDc2LCA4MCwgNzksIDczLCA3OCwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDg0LCAxMjgsIAotICAgIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCAKLSAgICA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIAotICAgIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgCi0gICAgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCAKLSAgICA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCAxNzgsIAotICAgIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgODMsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgMTk3LCA2NiwgCi0gICAgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgNzcsIDczLCAKLSAgICA3OCwgODQsIDc5LCAyMDYsIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIAotICAgIDY2LCA2NSwgNjgsIDEyOCwgNjYsIDY1LCAxOTYsIDY2LCA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgCi0gICAgNjcsIDc1LCA4NywgNjUsIDgyLCA2OCwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDY2LCAKLSAgICA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIAotICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCA3MiwgNjUsIDc4LCAKLSAgICAxOTYsIDY2LCA2NSwgNjcsIDc1LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDY2LCA2NSwgNjcsIDc1LCAxMjgsIAotICAgIDY2LCA2NSwgNjcsIDIwMywgNjYsIDY1LCA2NiwgODksIDEyOCwgNjYsIDY1LCA2NiwgMjE3LCA2NiwgNjUsIDY1LCA4MiwgCi0gICAgNjksIDgyLCA4NSwgMTI4LCA2NiwgNjUsIDQ1LCA1MCwgMTI4LCA2NiwgNTEsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDUzLCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDUzLCA1NiwgMTI4LCA2NiwgNTAsIDUzLCA1NSwgMTI4LCA2NiwgNTAsIDUzLCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDUzLCA1MywgMTI4LCA2NiwgNTAsIDUzLCAxODAsIDY2LCA1MCwgNTMsIDUxLCAxMjgsIDY2LCA1MCwgNTMsIAotICAgIDUwLCAxMjgsIDY2LCA1MCwgNTMsIDQ5LCAxMjgsIDY2LCA1MCwgNTMsIDQ4LCAxMjgsIDY2LCA1MCwgNTIsIDU3LCAxMjgsIAotICAgIDY2LCA1MCwgNTIsIDU2LCAxMjgsIDY2LCA1MCwgNTIsIDE4MywgNjYsIDUwLCA1MiwgNTQsIDEyOCwgNjYsIDUwLCA1MiwgCi0gICAgNTMsIDEyOCwgNjYsIDUwLCA1MiwgMTc5LCA2NiwgNTAsIDUyLCAxNzgsIDY2LCA1MCwgNTIsIDE3NywgNjYsIDUwLCA1MiwgCi0gICAgMTc2LCA2NiwgNTAsIDUxLCA1NCwgMTI4LCA2NiwgNTAsIDUxLCA1MiwgMTI4LCA2NiwgNTAsIDUxLCAxNzksIDY2LCA1MCwgCi0gICAgNTEsIDUwLCAxMjgsIDY2LCA1MCwgNTEsIDE3NywgNjYsIDUwLCA1MSwgMTc2LCA2NiwgNTAsIDUwLCA1NywgMTI4LCA2NiwgCi0gICAgNTAsIDUwLCA1NiwgMTI4LCA2NiwgNTAsIDUwLCA1NSwgMTI4LCA2NiwgNTAsIDUwLCA1NCwgMTI4LCA2NiwgNTAsIDUwLCAKLSAgICAxODEsIDY2LCA1MCwgNTAsIDUwLCAxMjgsIDY2LCA1MCwgNTAsIDQ5LCAxMjgsIDY2LCA1MCwgNTAsIDE3NiwgNjYsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgNjYsIDUwLCA0OSwgNTYsIDEyOCwgNjYsIDUwLCA0OSwgNTUsIDEyOCwgNjYsIDUwLCA0OSwgNTQsIAotICAgIDEyOCwgNjYsIDUwLCA0OSwgNTMsIDEyOCwgNjYsIDUwLCA0OSwgNTIsIDEyOCwgNjYsIDUwLCA0OSwgNTEsIDEyOCwgNjYsIAotICAgIDUwLCA0OSwgNTAsIDEyOCwgNjYsIDUwLCA0OSwgNDksIDEyOCwgNjYsIDUwLCA0OSwgNDgsIDEyOCwgNjYsIDUwLCA0OCwgCi0gICAgNTcsIDEyOCwgNjYsIDUwLCA0OCwgNTYsIDEyOCwgNjYsIDUwLCA0OCwgNTUsIDEyOCwgNjYsIDUwLCA0OCwgNTQsIDEyOCwgCi0gICAgNjYsIDUwLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA0OCwgNTIsIDEyOCwgNjYsIDUwLCA0OCwgNTEsIDEyOCwgNjYsIDUwLCAKLSAgICA0OCwgNTAsIDEyOCwgNjYsIDUwLCA0OCwgNDksIDEyOCwgNjYsIDUwLCA0OCwgNDgsIDEyOCwgNjYsIDQ5LCA1NywgMTc3LCAKLSAgICA2NiwgNDksIDU3LCA0OCwgMTI4LCA2NiwgNDksIDU2LCA1NywgMTI4LCA2NiwgNDksIDU2LCA1MywgMTI4LCA2NiwgNDksIAotICAgIDU2LCA1MiwgMTI4LCA2NiwgNDksIDU2LCA1MSwgMTI4LCA2NiwgNDksIDU2LCA1MCwgMTI4LCA2NiwgNDksIDU2LCA0OSwgCi0gICAgMTI4LCA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NiwgNDksIDU1LCA1NywgMTI4LCA2NiwgNDksIDU1LCA1NiwgMTI4LCA2NiwgCi0gICAgNDksIDU1LCA1NSwgMTI4LCA2NiwgNDksIDU1LCAxODIsIDY2LCA0OSwgNTUsIDUyLCAxMjgsIDY2LCA0OSwgNTUsIDE3OSwgCi0gICAgNjYsIDQ5LCA1NSwgNTAsIDEyOCwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjYsIDQ5LCA1NSwgNDgsIDEyOCwgNjYsIDQ5LCAKLSAgICA1NCwgNTcsIDEyOCwgNjYsIDQ5LCA1NCwgNTYsIDEyOCwgNjYsIDQ5LCA1NCwgNTUsIDEyOCwgNjYsIDQ5LCA1NCwgNTQsIAotICAgIDEyOCwgNjYsIDQ5LCA1NCwgNTMsIDEyOCwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjYsIDQ5LCA1NCwgMTc5LCA2NiwgNDksIAotICAgIDU0LCAxNzgsIDY2LCA0OSwgNTQsIDQ5LCAxMjgsIDY2LCA0OSwgNTQsIDQ4LCAxMjgsIDY2LCA0OSwgNTMsIDE4NSwgNjYsIAotICAgIDQ5LCA1MywgNTYsIDEyOCwgNjYsIDQ5LCA1MywgNTUsIDEyOCwgNjYsIDQ5LCA1MywgMTgyLCA2NiwgNDksIDUzLCA1MywgCi0gICAgMTI4LCA2NiwgNDksIDUzLCA1MiwgMTI4LCA2NiwgNDksIDUzLCA1MSwgMTI4LCA2NiwgNDksIDUzLCA1MCwgMTI4LCA2NiwgCi0gICAgNDksIDUzLCAxNzcsIDY2LCA0OSwgNTMsIDQ4LCAxMjgsIDY2LCA0OSwgNTIsIDU0LCAxMjgsIDY2LCA0OSwgNTIsIDE4MSwgCi0gICAgNjYsIDQ5LCA1MiwgNTAsIDEyOCwgNjYsIDQ5LCA1MiwgMTc3LCA2NiwgNDksIDUyLCAxNzYsIDY2LCA0OSwgNTEsIDE4MSwgCi0gICAgNjYsIDQ5LCA1MSwgMTc5LCA2NiwgNDksIDUxLCA1MCwgMTI4LCA2NiwgNDksIDUxLCAxNzcsIDY2LCA0OSwgNTEsIDE3NiwgCi0gICAgNjYsIDQ5LCA1MCwgMTg0LCA2NiwgNDksIDUwLCAxODMsIDY2LCA0OSwgNTAsIDE4MSwgNjYsIDQ5LCA1MCwgMTc5LCA2NiwgCi0gICAgNDksIDUwLCAxNzgsIDY2LCA0OSwgNTAsIDE3NywgNjYsIDQ5LCA1MCwgMTc2LCA2NiwgNDksIDQ4LCA1NywgMjA1LCA2NiwgCi0gICAgNDksIDQ4LCA1NywgMTk4LCA2NiwgNDksIDQ4LCA1NiwgMjA1LCA2NiwgNDksIDQ4LCA1NiwgMTk4LCA2NiwgNDksIDQ4LCAKLSAgICA1NSwgMjA1LCA2NiwgNDksIDQ4LCA1NSwgMTk4LCA2NiwgNDksIDQ4LCA1NCwgMjA1LCA2NiwgNDksIDQ4LCA1NCwgMTk4LCAKLSAgICA2NiwgNDksIDQ4LCA1MywgMjA1LCA2NiwgNDksIDQ4LCA1MywgMTk4LCA2NiwgNDksIDQ4LCAxODEsIDY2LCA0OSwgNDgsIAotICAgIDE4MCwgNjYsIDQ5LCA0OCwgMTc4LCA2NiwgNDksIDQ4LCAxNzYsIDY2LCA0OCwgNTcsIDE3NywgNjYsIDQ4LCA1NywgMTc2LCAKLSAgICA2NiwgNDgsIDU2LCA1NywgMTI4LCA2NiwgNDgsIDU2LCAxODMsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY2LCA0OCwgNTYsIAotICAgIDE4MSwgNjYsIDQ4LCA1NiwgNTEsIDEyOCwgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjYsIDQ4LCA1NiwgMTc3LCA2NiwgNDgsIAotICAgIDU2LCAxNzYsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY2LCA0OCwgNTUsIDE4NCwgNjYsIDQ4LCA1NSwgMTgzLCA2NiwgNDgsIAotICAgIDU1LCAxODIsIDY2LCA0OCwgNTUsIDE4MSwgNjYsIDQ4LCA1NSwgMTgwLCA2NiwgNDgsIDU1LCAxNzksIDY2LCA0OCwgNTUsIAotICAgIDE3OCwgNjYsIDQ4LCA1NSwgMTc3LCA2NiwgNDgsIDU1LCAxNzYsIDY2LCA0OCwgNTQsIDE4NSwgNjYsIDQ4LCA1NCwgMTg0LCAKLSAgICA2NiwgNDgsIDU0LCAxODMsIDY2LCA0OCwgNTQsIDE4MiwgNjYsIDQ4LCA1NCwgMTgxLCA2NiwgNDgsIDU0LCA1MiwgMTI4LCAKLSAgICA2NiwgNDgsIDU0LCA1MSwgMTI4LCA2NiwgNDgsIDU0LCAxNzgsIDY2LCA0OCwgNTQsIDE3NywgNjYsIDQ4LCA1NCwgMTc2LCAKLSAgICA2NiwgNDgsIDUzLCAxODUsIDY2LCA0OCwgNTMsIDE4NCwgNjYsIDQ4LCA1MywgMTgzLCA2NiwgNDgsIDUzLCA1NCwgMTI4LCAKLSAgICA2NiwgNDgsIDUzLCAxODEsIDY2LCA0OCwgNTMsIDE4MCwgNjYsIDQ4LCA1MywgMTc5LCA2NiwgNDgsIDUzLCAxNzgsIDY2LCAKLSAgICA0OCwgNTMsIDE3NywgNjYsIDQ4LCA1MywgMTc2LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NiwgNDgsIDUyLCAxODQsIDY2LCAKLSAgICA0OCwgNTIsIDU1LCAxMjgsIDY2LCA0OCwgNTIsIDE4MiwgNjYsIDQ4LCA1MiwgMTgxLCA2NiwgNDgsIDUyLCAxODAsIDY2LCAKLSAgICA0OCwgNTIsIDE3OSwgNjYsIDQ4LCA1MiwgMTc4LCA2NiwgNDgsIDUyLCAxNzcsIDY2LCA0OCwgNTIsIDE3NiwgNjYsIDQ4LCAKLSAgICA1MSwgMTg1LCA2NiwgNDgsIDUxLCAxODQsIDY2LCA0OCwgNTEsIDE4MywgNjYsIDQ4LCA1MSwgMTgyLCA2NiwgNDgsIDUxLCAKLSAgICA1MiwgMTI4LCA2NiwgNDgsIDUxLCAxNzksIDY2LCA0OCwgNTEsIDE3OCwgNjYsIDQ4LCA1MSwgMTc3LCA2NiwgNDgsIDUxLCAKLSAgICAxNzYsIDY2LCA0OCwgNTAsIDE4NSwgNjYsIDQ4LCA1MCwgMTg0LCA2NiwgNDgsIDUwLCAxODMsIDY2LCA0OCwgNTAsIDE4MiwgCi0gICAgNjYsIDQ4LCA1MCwgMTgxLCA2NiwgNDgsIDUwLCAxODAsIDY2LCA0OCwgNTAsIDE3OSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgCi0gICAgNjYsIDQ4LCA1MCwgMTc3LCA2NiwgNDgsIDUwLCAxNzYsIDY2LCA0OCwgNDksIDU3LCAxMjgsIDY2LCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDY2LCA0OCwgNDksIDE4MywgNjYsIDQ4LCA0OSwgMTgyLCA2NiwgNDgsIDQ5LCAxODEsIDY2LCA0OCwgNDksIDE4MCwgCi0gICAgNjYsIDQ4LCA0OSwgMTc5LCA2NiwgNDgsIDQ5LCAxNzgsIDY2LCA0OCwgNDksIDE3NywgNjYsIDQ4LCA0OSwgMTc2LCA2NiwgCi0gICAgNDgsIDQ4LCA1NywgMTI4LCA2NiwgNDgsIDQ4LCAxODUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY2LCA0OCwgNDgsIDE4NCwgCi0gICAgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgNjYsIDQ4LCA0OCwgMTgzLCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NiwgNDgsIDQ4LCAKLSAgICAxODIsIDY2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NiwgNDgsIDQ4LCAxODEsIDY2LCAKLSAgICA0OCwgNDgsIDUyLCAxMjgsIDY2LCA0OCwgNDgsIDE4MCwgNjYsIDQ4LCA0OCwgNTEsIDEyOCwgNjYsIDQ4LCA0OCwgMTc5LCAKLSAgICA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NiwgNDgsIDQ4LCAxNzgsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY2LCA0OCwgNDgsIAotICAgIDE3NywgNjUsIDkwLCA4NSwgMTI4LCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgNjksIAotICAgIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODcsIDY1LCAyMTcsIDY1LCA4NiwgNjksIDgzLCA4NCwgNjUsIDIwNiwgNjUsIAotICAgIDg2LCA2OSwgODIsIDY1LCA3MSwgMTk3LCA2NSwgODYsIDY1LCA3NSwgODIsIDY1LCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg5LCAKLSAgICA2NSwgMTI4LCA2NSwgODYsIDY1LCA3MSwgODIsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgNjUsIDg1LCA4NCwgODUsIDc3LCA3OCwgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDc5LCA2NiwgNzMsIDc2LCA2OSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDg1LCA4MywgODQsIDgyLCA2NSwgMjA0LCAKLSAgICA2NSwgODUsIDgyLCA3MywgODAsIDczLCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgCi0gICAgOTAsIDY4LCA2NSwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNDUsIAotICAgIDUwLCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAxMjgsIDY1LCA4NSwgNzgsIDc4LCAKLSAgICAxMjgsIDY1LCA4NSwgNzEsIDg1LCA4MywgODQsIDEyOCwgNjUsIDg1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY1LCA4NSwgNjksIDEyOCwgNjUsIDg1LCA2NiwgNjksIDgyLCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2NSwgCi0gICAgODQsIDg0LCA3MywgMTk1LCA2NSwgODQsIDg0LCA3MiwgNjUsIDY3LCA2NSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjksIDc4LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2NSwgMjAzLCA2NSwgODQsIDg0LCA2NSwgNjcsIDcyLCA2OSwgCi0gICAgMTk2LCA2NSwgODQsIDc5LCAyMDUsIDY1LCA4NCwgNzgsIDY1LCAyMDAsIDY1LCA4NCwgNzcsIDY1LCA2NSwgODUsIDEyOCwgCi0gICAgNjUsIDg0LCA3MywgODksIDY1LCAxMjgsIDY1LCA4NCwgNzIsIDc2LCA2OSwgODQsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCAKLSAgICA4MiwgODYsIDY1LCA4NiwgNjksIDY4LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODAsIDY1LCA4MywgNjcsIDY1LCAyMDYsIAotICAgIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgODksIDc3LCA4MCwgODQsIDc5LCA4NCwgCi0gICAgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIDc5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCAKLSAgICA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgNzksIDc4LCA3MywgCi0gICAgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCAKLSAgICA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAotICAgIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA2NSwgODMsIDgzLCA4OSwgCi0gICAgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCAKLSAgICA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODMsIAotICAgIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCA3NiwgNzMsIDY1LCAKLSAgICAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MywgNzIsIAotICAgIDU3LCAxMjgsIDY1LCA4MywgNzIsIDUxLCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCA2NywgNjksIDc4LCA4NCwgCi0gICAgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIDUwLCAxMjgsIDY1LCAKLSAgICA4MiwgODUsIDcyLCA4NSwgNjUsIDEyOCwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAorICAgIDcyLCA2OSwgODEsIDg1LCA2OSwgODIsIDY5LCAxOTYsIDY3LCA3MiwgNjksIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3OCwgCisgICAgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgNzIsIDY5LCA3MywgNzUsIDcyLCAKKyAgICA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDgzLCAxOTcsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIAorICAgIDY3LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NywgNzIsIDY5LCA2OSwgNzUsIDIxMSwgNjcsIDcyLCA2OSwgNjksIDc1LCAKKyAgICAxMjgsIDY3LCA3MiwgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgNjksIDIxMCwgNjcsIDcyLCA2OSwgNjcsIAorICAgIDc1LCAxMjgsIDY3LCA3MiwgNjksIDY3LCAyMDMsIDY3LCA3MiwgMTk3LCA2NywgNzIsIDY1LCA4OCwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDg0LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDIxMiwgNjcsIDcyLCAKKyAgICA2NSwgODIsIDczLCA3OSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDczLCA3OSwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNjUsIAorICAgIDY3LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3MiwgNjUsIDgwLCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzUsIDc5LCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDc5LCA3OCwgMTI4LCA2NywgNzIsIDY1LCA3NywgNzMsIDc2LCA3MywgMTI4LCA2NywgCisgICAgNzIsIDY1LCAyMDUsIDY3LCA3MiwgNjUsIDc1LCA3NywgMTkzLCA2NywgNzIsIDY1LCA3MywgODIsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzMsIDc4LCA4MywgMTI4LCA2NywgNzIsIDY1LCA2OCwgNjUsIDEyOCwgNjcsIDcyLCA2NSwgMTk2LCA2NywgNzIsIAorICAgIDY1LCA2NSwgMTI4LCA2NywgNzEsIDc0LCAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDgzLCAxMjgsIAorICAgIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA4MiwgCisgICAgNDUsIDg3LCA2NSwgMTI4LCA2NywgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCAKKyAgICA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgNzcsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIAorICAgIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCAKKyAgICA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgCisgICAgNzIsIDczLCA2OSwgODUsIDc3LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIAorICAgIDgyLCA3MywgNjUsIDIwNCwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgCisgICAgODIsIDY5LCA2OCwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIAorICAgIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCA3NiwgODQsIDczLCAxOTUsIDY3LCA2OSwgNzYsIDgzLCAKKyAgICA3MywgODUsIDgzLCAxMjgsIDY3LCA2OSwgNzYsIDY5LCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNjksIAorICAgIDczLCA4MiwgODQsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDY5LCA3MywgNzYsIDczLCA3OCwgCisgICAgMTk5LCA2NywgNjksIDY5LCA4NiwgMTI4LCA2NywgNjksIDY5LCA2NiwgMTI4LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2OSwgCisgICAgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDE5MywgNjcsIDY5LCA2OCwgMjAxLCAKKyAgICA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIDY3LCA2OSwgNjcsIDY1LCAyMDMsIAorICAgIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgNzksIDEyOCwgNjcsIDY3LCA3MywgCisgICAgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCA3MywgMTI4LCA2NywgCisgICAgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA3MywgMTI4LCAKKyAgICA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjUsIAorICAgIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgCisgICAgNjksIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDEyOCwgCisgICAgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAKKyAgICAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIAorICAgIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgCisgICAgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODUsIDY3LCA2NSwgODMsIDczLCAKKyAgICA2NSwgMjA2LCA2NywgNjUsIDg1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCAKKyAgICA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgzLCA3NSwgNjksIDIxMiwgNjcsIAorICAgIDY1LCA4MiwgODksIDgzLCA4NCwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDg0LCA4NywgNzIsIDY5LCA2OSwgNzYsIDEyOCwgCisgICAgNjcsIDY1LCA4MiwgODQsIDgyLCA3MywgNjgsIDcxLCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4NCwgMTI4LCA2NywgNjUsIDgyLCAKKyAgICAyMTEsIDY3LCA2NSwgODIsIDgyLCA3OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgODIsIDczLCA2NSwgNzEsIDE5NywgNjcsIAorICAgIDY1LCA4MiwgODAsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY3LCA2NSwgODIsIDIwOCwgNjcsIDY1LCA4MiwgNzksIDg1LCA4MywgCisgICAgNjksIDIwNCwgNjcsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODIsIDc5LCAyMDYsIDY3LCA2NSwgODIsIDczLCAKKyAgICAyMDMsIDY3LCA2NSwgODIsIDczLCA2NSwgMjA2LCA2NywgNjUsIDgyLCA2OSwgODQsIDEyOCwgNjcsIDY1LCA4MiwgNjksIAorICAgIDIxMiwgNjcsIDY1LCA4MiwgMTk3LCA2NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjcsIDY1LCA4MiwgNjgsIDEyOCwgNjcsIAorICAgIDY1LCA4MiwgMTk2LCA2NywgNjUsIDgyLCAxMjgsIDY3LCA2NSwgMjEwLCA2NywgNjUsIDgwLCA4NSwgMjEyLCA2NywgNjUsIAorICAgIDgwLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDgwLCA4MiwgNzMsIDY3LCA3OSwgODIsIDc4LCAxMjgsIDY3LCA2NSwgCisgICAgODAsIDgwLCA2OSwgMTk2LCA2NywgNjUsIDgwLCA3OSwgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDg1LCA3NiwgODUsIDc3LCAKKyAgICAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDg0LCA3MywgNzYsIDc2LCA2NSwgODQsIAorICAgIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA3OSwgNjksIDEyOCwgNjcsIDY1LCA3OCwgMTk5LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDgyLCAxOTMsIDY3LCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2NywgCisgICAgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIDc3LCA4MCwgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA2NywgNjUsIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc3LCAKKyAgICA2OSwgODIsIDE5MywgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgNjUsIAorICAgIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCAyMDQsIAorICAgIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2OSwgNzgsIDY4LCA2NSwgMjEwLCA2NywgCisgICAgNjUsIDc2LCA2NywgODUsIDc2LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2NywgNjUsIDc2LCA2NywgMTI4LCA2NywgNjUsIDc1LCAKKyAgICA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3NSwgMTk3LCA2NywgNjUsIDczLCAxMjgsIDY3LCA2NSwgNzIsIDEyOCwgNjcsIDY1LCAKKyAgICA2OSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA2OCwgODUsIDY3LCA2OSwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjgsIAorICAgIDE5MywgNjcsIDY1LCA2NywgODQsIDg1LCA4MywgMTI4LCA2NywgNjUsIDY2LCA3NiwgNjksIDg3LCA2NSwgODksIDEyOCwgCisgICAgNjcsIDY1LCA2NiwgNzMsIDc4LCA2OSwgODQsIDEyOCwgNjcsIDY1LCA2NiwgNjYsIDY1LCA3MSwgNjksIDQ1LCA4NCwgODIsIAorICAgIDY5LCA2OSwgMTI4LCA2NywgNjUsIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDY1LCA2NSwgNzMsIDEyOCwgNjcsIDE5MywgNjcsIAorICAgIDQ4LCA1MCwgNTIsIDEyOCwgNjcsIDQ4LCA1MCwgNTEsIDEyOCwgNjcsIDQ4LCA1MCwgNTAsIDEyOCwgNjcsIDQ4LCA1MCwgCisgICAgNDksIDEyOCwgNjcsIDQ4LCA1MCwgNDgsIDEyOCwgNjcsIDQ4LCA0OSwgNTcsIDEyOCwgNjcsIDQ4LCA0OSwgNTYsIDEyOCwgCisgICAgNjcsIDQ4LCA0OSwgNTUsIDEyOCwgNjcsIDQ4LCA0OSwgNTQsIDEyOCwgNjcsIDQ4LCA0OSwgNTMsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OSwgNTIsIDEyOCwgNjcsIDQ4LCA0OSwgNTEsIDEyOCwgNjcsIDQ4LCA0OSwgNTAsIDEyOCwgNjcsIDQ4LCA0OSwgNDksIAorICAgIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY3LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA0OCwgNDgsIDU3LCAxMjgsIAorICAgIDY3LCA0OCwgNDgsIDU2LCAxMjgsIDY3LCA0OCwgNDgsIDU1LCAxMjgsIDY3LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDY3LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA0OCwgNDgsIDUxLCAxMjgsIDY3LCA0OCwgNDgsIDUwLCAKKyAgICA2NywgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDY3LCA0OCwgNDgsIAorICAgIDUwLCAxMjgsIDY3LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA0NSwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgCisgICAgMTk2LCA2NywgNDUsIDUxLCA1NywgMTI4LCA2NywgNDUsIDQ5LCA1NiwgMTI4LCA2NiwgOTAsIDg1LCA3OCwgMTk5LCA2NiwgCisgICAgOTAsIDcyLCAyMDEsIDY2LCA4OSwgODQsIDE5NywgNjYsIDg5LCA2OSwgNzYsIDc5LCA4MiwgODUsIDgzLCA4MywgNzMsIDY1LCAKKyAgICA3OCwgNDUsIDg1LCA3NSwgODIsIDY1LCA3MywgNzgsIDczLCA2NSwgMjA2LCA2NiwgODgsIDcxLCAxMjgsIDY2LCA4NywgNzMsIAorICAgIDEyOCwgNjYsIDg3LCA2OSwgNjksIDEyOCwgNjYsIDg3LCA2OSwgMTI4LCA2NiwgODcsIDY1LCAxMjgsIDY2LCA4NSwgODUsIAorICAgIDc3LCA3MywgODMsIDcyLCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgNzgsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCAKKyAgICAyMDYsIDY2LCA4NSwgODQsIDg0LCA2OSwgODIsIDcwLCA3NiwgODksIDEyOCwgNjYsIDg1LCAyMTIsIDY2LCA4NSwgODMsIAorICAgIDg0LCAyMTEsIDY2LCA4NSwgODMsIDIxMiwgNjYsIDg1LCA4MywgODMsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDY2LCA4NSwgCisgICAgODMsIDczLCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4NSwgMjExLCA2NiwgODUsIDgyLCAyMTMsIDY2LCA4NSwgODIsIDgyLCAKKyAgICA3MywgODQsIDc5LCAxMjgsIDY2LCA4NSwgODIsIDUwLCAxMjgsIDY2LCA4NSwgMjEwLCA2NiwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgODUsIDc4LCA3OCwgMjE3LCA2NiwgODUsIDc4LCA3MSwgMTI4LCA2NiwgODUsIAorICAgIDc3LCA4MCwgMjE3LCA2NiwgODUsIDc2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3NiwgODUsIDE5OSwgNjYsIDg1LCA3NiwgCisgICAgNzYsIDgzLCA2OSwgODksIDY5LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCAyMTEsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAKKyAgICA3OCwgMTI4LCA2NiwgODUsIDc2LCA3NiwgNzIsIDc5LCA4MiwgMjA2LCA2NiwgODUsIDc2LCA3NiwgNjksIDg0LCAxMjgsIAorICAgIDY2LCA4NSwgNzYsIDc2LCA2OSwgMjEyLCA2NiwgODUsIDc2LCA3NiwgMTI4LCA2NiwgODUsIDc2LCA2NiwgMTI4LCA2NiwgCisgICAgODUsIDc1LCA4OSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgNzEsIDgzLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCAKKyAgICA2OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgMTk5LCA2NiwgODUsIDcyLCA3MywgCisgICAgMTk2LCA2NiwgODUsIDcxLCA3MywgNzgsIDY5LCA4MywgMTk3LCA2NiwgODUsIDcxLCAxMjgsIDY2LCA4NSwgNzAsIDcwLCAKKyAgICA2NSwgNzYsIDc5LCAxMjgsIDY2LCA4NSwgNjgsIDEyOCwgNjYsIDg1LCA2NywgNzUsIDc2LCA2OSwgMTI4LCA2NiwgODUsIAorICAgIDY2LCA2NiwgNzYsIDY5LCA4MywgMTI4LCA2NiwgODUsIDY2LCA2NiwgNzYsIDY5LCAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgCisgICAgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgCisgICAgODIsIDg1LCA4MywgMjAwLCA2NiwgODIsIDc5LCA3OCwgOTAsIDY5LCAxMjgsIDY2LCA4MiwgNzksIDc1LCA2OSwgMjA2LCAKKyAgICA2NiwgODIsIDc5LCA2NSwgMTk2LCA2NiwgODIsIDczLCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NiwgODIsIDczLCA3MSwgNzIsIAorICAgIDg0LCA3OCwgNjksIDgzLCAyMTEsIDY2LCA4MiwgNzMsIDY5LCA3MCwgNjcsIDY1LCA4MywgNjksIDEyOCwgNjYsIDgyLCA3MywgCisgICAgNjgsIDcxLCAxOTcsIDY2LCA4MiwgNzMsIDY4LCAxOTcsIDY2LCA4MiwgNzMsIDY3LCA3NSwgMTI4LCA2NiwgODIsIDY5LCAKKyAgICA4NiwgNzMsIDgzLCAxMjgsIDY2LCA4MiwgNjksIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjYsIAorICAgIDgyLCA2OSwgODYsIDE5NywgNjYsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDY2LCA4MiwgNjksIDY1LCA3NSwgODQsIDcyLCA4MiwgCisgICAgNzksIDg1LCA3MSwgNzIsIDEyOCwgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA3MywgNzgsIAorICAgIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNjksIDgzLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgCisgICAgNjYsIDgyLCA2NSwgNzgsIDY3LCAyMDAsIDY2LCA4MiwgNjUsIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCAKKyAgICA3NSwgNjksIDg0LCA2OSwgMTk2LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgCisgICAgMTI4LCA2NiwgODEsIDEyOCwgNjYsIDgwLCA3MiwgMTI4LCA2NiwgNzksIDg5LCAyMTEsIDY2LCA3OSwgODksIDEyOCwgNjYsIAorICAgIDc5LCA4OCwgNzMsIDc4LCAxOTksIDY2LCA3OSwgODcsIDg0LCA3MywgNjksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCAKKyAgICAxOTcsIDY2LCA3OSwgODcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA3OSwgODcsIDc2LCAxMjgsIDY2LCA3OSwgODcsIAorICAgIDIwNCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgCisgICAgMTI4LCA2NiwgNzksIDg1LCA4MSwgODUsIDY5LCAyMTIsIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCAKKyAgICA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgCisgICAgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgMTI4LCA2NiwgNzksIDg0LCAKKyAgICA4NCwgNzksIDIwNSwgNjYsIDc5LCA4NCwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNzksIDg0LCA4NCwgNzYsIDE5NywgNjYsIAorICAgIDc5LCA4NCwgMjAwLCA2NiwgNzksIDgyLCA4NSwgODQsIDc5LCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUxLCAKKyAgICAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgNDUsIDUwLCAxMjgsIDY2LCA3OSwgODIsIDY1LCA4OCwgMTI4LCA2NiwgNzksIAorICAgIDgwLCA3OSwgNzcsIDc5LCA3MCwgMjA3LCA2NiwgNzksIDc5LCA4NCwgODMsIDEyOCwgNjYsIDc5LCA3OSwgODQsIDEyOCwgCisgICAgNjYsIDc5LCA3OSwgNzcsIDY5LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgODMsIDEyOCwgNjYsIDc5LCAKKyAgICA3OSwgNzUsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAyMDMsIDY2LCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDY2LCA3OSwgNzcsIDY2LCAxMjgsIDY2LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA3NiwgODQsIDEyOCwgNjYsIAorICAgIDc5LCA3NiwgMjEyLCA2NiwgNzksIDcyLCA2NSwgNzMsIDgyLCA3MywgMTk1LCA2NiwgNzksIDY4LCA4OSwgMTI4LCA2NiwgCisgICAgNzksIDY4LCAyMTcsIDY2LCA3OSwgNjUsIDgyLCAxMjgsIDY2LCA3OSwgNjUsIDEyOCwgNjYsIDc2LCA4NSwgNjksIDEyOCwgCisgICAgNjYsIDc2LCA4NSwgMTk3LCA2NiwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3NiwgNzksIDg3LCA3MCwgNzMsIDgzLCAKKyAgICA3MiwgMTI4LCA2NiwgNzYsIDc5LCAyMTUsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIDY2LCA3NiwgNzksIAorICAgIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgNjYsIDc2LCA3MywgCisgICAgNzgsIDIwMywgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAKKyAgICAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIAorICAgIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgCisgICAgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCAKKyAgICA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIAorICAgIDY2LCA3MywgODQsIDE5NywgNjYsIDczLCA4MywgNzcsIDg1LCA4NCwgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgCisgICAgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIDc5LCA4MCwgMTI4LCA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIAorICAgIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAxMjgsIDY2LCA3MywgODIsIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgCisgICAgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA2NiwgNzMsIDgyLCA3MSwgMTkzLCA2NiwgNzMsIDgyLCAKKyAgICA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgNjYsIDczLCA3OCwgNzksIDY3LCA4NSwgNzYsIAorICAgIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCA3OCwgNjgsIDczLCAxMjgsIDY2LCA3MywgCisgICAgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNzYsIDczLCAKKyAgICA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIAorICAgIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIAorICAgIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgCisgICAgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCAKKyAgICA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIAorICAgIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIAorICAgIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIAorICAgIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAKKyAgICAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCAKKyAgICA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCAKKyAgICA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIAorICAgIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIAorICAgIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDg0LCAxMjgsIDY2LCA2OSwgNzgsIDIxMiwgNjYsIDY5LCA3OCwgCisgICAgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgNzgsIDE5NiwgNjYsIDY5LCAyMDYsIDY2LCA2OSwgCisgICAgNzYsIDg0LCAxMjgsIDY2LCA2OSwgNzYsIDIxMiwgNjYsIDY5LCA3NiwgNzksIDIxNSwgNjYsIDY5LCA3NiwgNzYsIDcyLCAKKyAgICA3OSwgMjA4LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAyMDQsIDY2LCA2OSwgNzYsIDcxLCA4NCwgNzIsIAorICAgIDc5LCAyMTAsIDY2LCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA3MywgNzgsIDE5NiwgNjYsIDY5LCA3MiwgCisgICAgNjksIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDY5LCAyMDAsIDY2LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCAyMDAsIDY2LCA2OSwgCisgICAgNzEsIDczLCA3OCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDY2LCAKKyAgICA2OSwgNzEsIDczLCAyMDYsIDY2LCA2OSwgNzAsIDc5LCA4MiwgMTk3LCA2NiwgNjksIDY5LCA4NCwgNzYsIDY5LCAxMjgsIAorICAgIDY2LCA2OSwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIDY5LCAyMTAsIDY2LCA2OSwgNjksIDcyLCA3MywgODYsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgNjksIDcyLCAxMjgsIDY2LCA2OSwgNjksIDIwMCwgNjYsIDY5LCA2NywgNjUsIDg1LCA4MywgNjksIAorICAgIDEyOCwgNjYsIDY5LCA2NSwgODYsIDY5LCAyMTAsIDY2LCA2OSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDY5LCA2NSwgCisgICAgODQsIDEyOCwgNjYsIDY5LCA2NSwgMjEwLCA2NiwgNjksIDY1LCA3OCwgMTI4LCA2NiwgNjksIDY1LCA3NywgNjksIDE5NiwgCisgICAgNjYsIDY5LCA2NSwgNjgsIDgzLCAxMjgsIDY2LCA2OSwgNjUsIDY3LCAyMDAsIDY2LCA2NywgNjUsIDY4LCAxMjgsIDY2LCAKKyAgICA2NywgNjUsIDE5NiwgNjYsIDY2LCA4OSwgODgsIDEyOCwgNjYsIDY2LCA4OSwgODQsIDEyOCwgNjYsIDY2LCA4OSwgODAsIAorICAgIDEyOCwgNjYsIDY2LCA4OSwgMTI4LCA2NiwgNjYsIDg1LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4NCwgMTI4LCA2NiwgNjYsIAorICAgIDg1LCA4MiwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDEyOCwgNjYsIDY2LCA4NSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgMTI4LCA2NiwgNjYsIDg1LCAKKyAgICAxMjgsIDY2LCA2NiwgNzksIDg4LCAxMjgsIDY2LCA2NiwgNzksIDg0LCAxMjgsIDY2LCA2NiwgNzksIDgwLCAxMjgsIDY2LCAKKyAgICA2NiwgNzksIDEyOCwgNjYsIDY2LCA3MywgODgsIDEyOCwgNjYsIDY2LCA3MywgODAsIDEyOCwgNjYsIDY2LCA3MywgNjksIAorICAgIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4NCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODAsIDEyOCwgNjYsIDY2LCA3MywgCisgICAgNjksIDEyOCwgNjYsIDY2LCA3MywgMTI4LCA2NiwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgCisgICAgNjYsIDY5LCA2OSwgMTI4LCA2NiwgNjYsIDY5LCAxMjgsIDY2LCA2NiwgNjUsIDg4LCAxMjgsIDY2LCA2NiwgNjUsIDg0LCAKKyAgICAxMjgsIDY2LCA2NiwgNjUsIDgwLCAxMjgsIDY2LCA2NiwgNjUsIDY1LCAxMjgsIDY2LCA2NiwgNjUsIDEyOCwgNjYsIDY1LCAKKyAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4NSwgMTI4LCA2NiwgNjUsIDg0LCA4NCwgNjksIDgyLCA4OSwgCisgICAgMTI4LCA2NiwgNjUsIDg0LCA3MiwgODQsIDg1LCA2NiwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCAKKyAgICA4NCwgMTI4LCA2NiwgNjUsIDg0LCA3MiwgMTI4LCA2NiwgNjUsIDg0LCAyMDAsIDY2LCA2NSwgODQsIDY1LCAyMDMsIDY2LCAKKyAgICA2NSwgODMsIDgzLCA2NSwgMTI4LCA2NiwgNjUsIDgzLCA4MywgMTkzLCA2NiwgNjUsIDgzLCA3NSwgNjksIDg0LCA2NiwgNjUsIAorICAgIDc2LCAyMDQsIDY2LCA2NSwgODMsIDcyLCA3NSwgNzMsIDIxMCwgNjYsIDY1LCA4MywgNzIsIDEyOCwgNjYsIDY1LCA4MywgCisgICAgNjksIDc2LCA3MywgNzgsIDE5NywgNjYsIDY1LCA4MywgNjksIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDY2LCA2NSwgODMsIDY5LCAKKyAgICAxMjgsIDY2LCA2NSwgODMsIDE5NywgNjYsIDY1LCA4MiwgODMsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDczLCA2OSwgODIsIAorICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA3NSwgNzIsIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCA2OSwgMTI4LCA2NiwgCisgICAgNjUsIDgyLCA4MiwgNjksIDE5NywgNjYsIDY1LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNjYsIDY1LCA4MiwgNzYsIDY5LCAKKyAgICA4OSwgMTI4LCA2NiwgNjUsIDgyLCA3MywgODksIDc5LCA3OSwgODMsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDgyLCA2NiwgNjksIAorICAgIDIxMCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIDY2LCA2NSwgMjEwLCA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIAorICAgIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAxOTcsIDY2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgCisgICAgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCAKKyAgICA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDgzLCAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIAorICAgIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgMTI4LCA2NiwgNjUsIDc2LCA3NiwgODAsIDc5LCA3MywgNzgsIDIxMiwgCisgICAgNjYsIDY1LCA3NiwgNzYsIDc5LCA4NCwgMTI4LCA2NiwgNjUsIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCAKKyAgICA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIAorICAgIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCA2NSwgNzYsIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgCisgICAgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIDc3LCA2NSwgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCAKKyAgICA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIAorICAgIDY2LCA2NSwgNzIsIDY1LCA4MiwgMTc4LCA2NiwgNjUsIDcyLCAxMjgsIDY2LCA2NSwgNzEsIDg1LCA2OSwgODQsIDg0LCAKKyAgICAxOTcsIDY2LCA2NSwgNzEsIDgzLCAxMjgsIDY2LCA2NSwgNzEsIDcxLCA2NSwgNzEsIDE5NywgNjYsIDY1LCA3MSwgNjUsIAorICAgIDEyOCwgNjYsIDY1LCA3MSwgNTEsIDEyOCwgNjYsIDY1LCAxOTksIDY2LCA2NSwgNjgsIDc3LCA3MywgNzgsIDg0LCA3OSwgCisgICAgMjA2LCA2NiwgNjUsIDY4LCA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAKKyAgICAxMjgsIDY2LCA2NSwgMTk2LCA2NiwgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3OSwgNzgsIAorICAgIDEyOCwgNjYsIDY1LCA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgCisgICAgNjksIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCAKKyAgICA2NSwgODMsIDIwMCwgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIAorICAgIDcyLCA2NSwgNzgsIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgCisgICAgNzUsIDEyOCwgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgCisgICAgNjUsIDgyLCA2OSwgODIsIDg1LCAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCAKKyAgICA1MCwgNTMsIDU3LCAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIAorICAgIDU0LCAxMjgsIDY2LCA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgCisgICAgNTcsIDEyOCwgNjYsIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgCisgICAgNTAsIDUyLCA1MywgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgCisgICAgNTAsIDUyLCAxNzYsIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgCisgICAgNjYsIDUwLCA1MSwgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAKKyAgICAxMjgsIDY2LCA1MCwgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCAKKyAgICA1MCwgNTAsIDE4MSwgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCAKKyAgICA2NiwgNTAsIDQ5LCA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIAorICAgIDQ5LCA1NCwgMTI4LCA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgCisgICAgMTI4LCA2NiwgNTAsIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgCisgICAgNTAsIDQ4LCA1NywgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NiwgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCAKKyAgICA2NiwgNTAsIDQ4LCA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIAorICAgIDU3LCAxNzcsIDY2LCA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIAorICAgIDY2LCA0OSwgNTYsIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgCisgICAgNTYsIDQ5LCAxMjgsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAKKyAgICAxMjgsIDY2LCA0OSwgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NSwgMTc5LCA2NiwgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCAKKyAgICA2NiwgNDksIDU0LCA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIAorICAgIDU0LCA1NCwgMTI4LCA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIAorICAgIDY2LCA0OSwgNTQsIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgCisgICAgMTg1LCA2NiwgNDksIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgCisgICAgNTMsIDUzLCAxMjgsIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAKKyAgICAxMjgsIDY2LCA0OSwgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCAKKyAgICA1MiwgMTgxLCA2NiwgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCAKKyAgICA1MSwgMTgxLCA2NiwgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCAKKyAgICA1MSwgMTc2LCA2NiwgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAKKyAgICAxNzksIDY2LCA0OSwgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAKKyAgICAyMDUsIDY2LCA0OSwgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCAKKyAgICA0OSwgNDgsIDU1LCAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIAorICAgIDU0LCAxOTgsIDY2LCA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIAorICAgIDQ5LCA0OCwgMTgwLCA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIAorICAgIDU3LCAxNzYsIDY2LCA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIAorICAgIDQ4LCA1NiwgMTgxLCA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIAorICAgIDY2LCA0OCwgNTYsIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIAorICAgIDY2LCA0OCwgNTUsIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIAorICAgIDQ4LCA1NSwgMTc4LCA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIAorICAgIDU0LCAxODQsIDY2LCA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIAorICAgIDUyLCAxMjgsIDY2LCA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIAorICAgIDU0LCAxNzYsIDY2LCA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIAorICAgIDU0LCAxMjgsIDY2LCA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIAorICAgIDE3OCwgNjYsIDQ4LCA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIAorICAgIDE4NCwgNjYsIDQ4LCA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIAorICAgIDE4MCwgNjYsIDQ4LCA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCAKKyAgICA2NiwgNDgsIDUxLCAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCAKKyAgICA0OCwgNTEsIDUyLCAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCAKKyAgICA0OCwgNTEsIDE3NiwgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCAKKyAgICA1MCwgMTgyLCA2NiwgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA2NiwgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OSwgNTYsIDEyOCwgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCAKKyAgICA0OSwgMTgwLCA2NiwgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAKKyAgICAxNzYsIDY2LCA0OCwgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCAKKyAgICA0OCwgMTg0LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCAKKyAgICA0OCwgNDgsIDE4MiwgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIAorICAgIDE4MSwgNjYsIDQ4LCA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIAorICAgIDQ4LCAxNzksIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIAorICAgIDQ4LCA0OCwgMTc3LCA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIAorICAgIDg4LCA2OSwgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NywgNjUsIDIxNywgNjUsIDg2LCA3OSwgNjcsIDY1LCA2OCwgCisgICAgNzksIDEyOCwgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgODYsIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCAKKyAgICA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIDY1LCAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgCisgICAgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAKKyAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIAorICAgIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCAKKyAgICA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgCisgICAgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCAKKyAgICA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIAorICAgIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgCisgICAgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAKKyAgICAyMDMsIDY1LCA4NCwgODQsIDY1LCA2NywgNzIsIDY5LCAxOTYsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIAorICAgIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgCisgICAgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgNjUsIDg0LCA3MiwgNDUsIDg0LCA3MiwgNjUsIDc2LCA2NSwgCisgICAgODQsIDcyLCA2NSwgMTI4LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIDg5LCAKKyAgICA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCA3OSwgCisgICAgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY1LCAKKyAgICA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAxMjgsIAorICAgIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDEyOCwgCisgICAgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgODMsIAorICAgIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCAKKyAgICA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgODQsIAorICAgIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCA4MywgCisgICAgMTI4LCA2NSwgODMsIDcyLCA1NywgMTI4LCA2NSwgODMsIDcyLCA1MSwgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgCisgICAgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCAKKyAgICA1MCwgMTI4LCA2NSwgODMsIDQ1LCA4MywgNjUsIDc0LCA2OCwgNjUsIDEyOCwgNjUsIDgyLCA4NSwgNzIsIDg1LCA2NSwgCisgICAgMTI4LCA2NSwgODIsIDg0LCAyMTEsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKICAgICA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODIsIDg0LCA2NSwgNjYsIDE5NywgNjUsIDgyLCA4MywgNjksIDc5LCA4MywgCiAgICAgMTI4LCA2NSwgODIsIDgzLCA2OSwgNzksIDIxMSwgNjUsIDgyLCA4MywgNjksIDc4LCA3MywgNjcsIDEyOCwgNjUsIDgyLCAKICAgICA4MiwgNzksIDg3LCA4MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDIxMSwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIApAQCAtNDg5Miw0MiArNTUyNSw0MyBAQAogICAgIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgCiAgICAgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAKICAgICAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIAotICAgIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgCi0gICAgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCAKLSAgICA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIAotICAgIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgCi0gICAgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIAotICAgIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgCi0gICAgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCAKLSAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIAotICAgIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgCi0gICAgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIAotICAgIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgCi0gICAgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIAotICAgIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIAotICAgIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgCi0gICAgMTI4LCA2NSwgNzksIDg1LCAxMjgsIDY1LCA3OSwgODIsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAKLSAgICA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIAotICAgIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgCi0gICAgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCAKLSAgICA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgCi0gICAgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgNzMsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzAsIDc5LCAKLSAgICA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCA0NSwgCi0gICAgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIAotICAgIDgzLCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgCi0gICAgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCAKLSAgICA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgNzgsIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIAotICAgIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCA3OCwgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIAotICAgIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgCi0gICAgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDc0LCA3MywgMTI4LCA2NSwgNzgsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCAKLSAgICA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgODMsIAotICAgIDg0LCA4MiwgNzksIDIwNSwgNjUsIDc4LCA3MSwgODIsIDIxNywgNjUsIDc4LCA3MSwgNzYsIDY5LCA2OCwgMTI4LCA2NSwgCi0gICAgNzgsIDcxLCA3NiwgNjksIDE5NiwgNjUsIDc4LCA3MSwgNzUsIDcyLCA2NSwgNzgsIDc1LCA3MiwgODUsIDEyOCwgNjUsIDc4LCAKLSAgICA3MSwgNjksIDIxMCwgNjUsIDc4LCA3MSwgNjksIDc2LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCA2OCwgMTI4LCA2NSwgNzgsIAotICAgIDY4LCA2NSwgODAsIDEyOCwgNjUsIDc4LCA2NywgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzgsIDY3LCA3MiwgNzksIDgyLCAKLSAgICAxMjgsIDY1LCA3OCwgNjUsIDg0LCA4MiwgNzMsIDY3LCA3MiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNjUsIDc4LCA2NSwgODAsIAorICAgIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDg1LCA2NiwgCisgICAgMTI4LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIDY5LCAKKyAgICA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgODIsIAorICAgIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCA3NiwgCisgICAgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIDgyLCAKKyAgICA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAyMTEsIAorICAgIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgODQsIAorICAgIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgCisgICAgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIDY1LCAKKyAgICA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgCisgICAgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIAorICAgIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIAorICAgIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgCisgICAgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA3OSwgODUsIDEyOCwgNjUsIDc5LCA4MiwgMTI4LCA2NSwgCisgICAgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIAorICAgIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAKKyAgICAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgCisgICAgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCAKKyAgICA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgCisgICAgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIAorICAgIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgCisgICAgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIAorICAgIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCAKKyAgICA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIAorICAgIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgCisgICAgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAKKyAgICAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAKKyAgICAxMjgsIDY1LCA3OCwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIAorICAgIDg1LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgCisgICAgMjE3LCA2NSwgNzgsIDcxLCA3NiwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTk2LCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIAorICAgIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCAKKyAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDQ1LCA3OCwgNzMsIDgzLCA3MCwgCiAgICAgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIDgwLCA3MiwgNzksIDgyLCA2NSwgMTI4LCA2NSwgNzcsIDgwLCAKICAgICA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgODAsIDY5LCA4MiwgODMsIDY1LCA3OCwgMTk2LCA2NSwgNzcsIAogICAgIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDgzLCAxMjgsIDY1LCA3NywgNjksIDgyLCA3MywgCkBAIC00OTQxLDExNTgwICs1NTc1LDEyMDYyIEBACiAgICAgNjUsIDg0LCAxOTcsIDY1LCA3NiwgODQsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDcyLCA2NSwgMTI4LCA2NSwgNzYsIDgwLCAKICAgICA3MiwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIAogICAgIDY1LCA2NSwgNzgsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDEyOCwgNjUsIDc2LCA3NywgNzksIDgzLCAyMTIsIDY1LCA3NiwgCi0gICAgNzcsIDEyOCwgNjUsIDc2LCA3NiwgNzksIDEyOCwgNjUsIDc2LCA3NiwgNzMsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCAKLSAgICA3NiwgNzYsIDIwMSwgNjUsIDc2LCA3NiwgNjUsIDIwMCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgNDUsIDUwLCAxMjgsIAotICAgIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDEyOCwgNjUsIDc2LCA3MywgNzEsIDc4LCA2OSwgMTk2LCA2NSwgNzYsIDczLCA3MCwgCi0gICAgODUsIDEyOCwgNjUsIDc2LCA3MywgNjksIDc4LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCAyMDYsIDY1LCA3NiwgNzEsIDczLCAKLSAgICAyMTgsIDY1LCA3NiwgNzAsIDY1LCAxMjgsIDY1LCA3NiwgNjksIDg1LCAyMTIsIDY1LCA3NiwgNjksIDgyLCA4NCwgMTI4LCAKLSAgICA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIDY2LCA3MywgNjcsIDEyOCwgNjUsIDc2LCA2OSwgNzAsIAotICAgIDEyOCwgNjUsIDc2LCA2NiwgNjUsIDc4LCA3MywgNjUsIDIwNiwgNjUsIDc2LCA2NSwgODksIDcyLCA2OSwgMTI4LCA2NSwgCi0gICAgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCA2NSwgODAsIDcyLCAxMjgsIDY1LCAKLSAgICA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIDY5LCA4MywgNjksIDc2LCA4MywgCi0gICAgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgNzMsIDc3LCA3MywgMTk1LCAKLSAgICA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCA2NSwgODIsIDE5MywgNjUsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgMjAzLCA2NSwgNzMsIDg0LCA3OSwgCi0gICAgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIAotICAgIDE5NywgNjUsIDczLCA3OCwgMjEzLCA2NSwgNzMsIDc4LCA3OCwgMTI4LCA2NSwgNzMsIDc2LCA3NywgMTI4LCA2NSwgNzMsIAotICAgIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgNzIsIDg2LCA4NSwgODMsIDEyOCwgNjUsIDcyLCA4MywgNjgsIDY1LCAKLSAgICAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCA3MiwgNzksIDIwNSwgNjUsIDcyLCA2NSwgNzgsIDE5OSwgNjUsIDcyLCAKLSAgICA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIDEyOCwgNjUsIAotICAgIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3MSwgCi0gICAgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCA4MywgMjEyLCA2NSwgNzEsIDY1LCAKLSAgICA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIDY1LCA4MSwgMTI4LCA2NSwgNzAsIAotICAgIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDY5LCAKLSAgICA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY1LCA3MCwgNzAsIDczLCAyMTYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA2OSwgCi0gICAgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAxMjgsIDY1LCA2OSwgODMsIDY3LCAKLSAgICAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCA2OSwgODIsIDEyOCwgNjUsIDY5LCAKLSAgICA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgMTI4LCA2NSwgNjksIDc1LCAxMjgsIAotICAgIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCAKLSAgICA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDg0LCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2OCwgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA2NSwgCi0gICAgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCAKLSAgICA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIAotICAgIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCAKLSAgICA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIAotICAgIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgCi0gICAgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIAotICAgIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgCi0gICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCA3OSwgNzcsIDc3LCA3OSwgNjgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgCi0gICAgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIAotICAgIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgCi0gICAgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCAKLSAgICA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY2LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA1NiwgMTI4LCA2NSwgCi0gICAgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjUsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU0LCA1MiwgMTI4LCAKLSAgICA2NSwgNjYsIDQ5LCA1MSwgNDksIDY2LCAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjUsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIAotICAgIDUxLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OSwgCi0gICAgNDksIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTYsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTYsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTUsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTIsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgCi0gICAgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCAKLSAgICA1NCwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1MywgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MiwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OCwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCAKLSAgICA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIAotICAgIDUyLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDUxLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ4LCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU1LCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIAotICAgIDUxLCA3NywgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCA3NywgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1MCwgNTAsIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDc3LCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDY1LCA2NSwgODksIDczLCA3OCwgMTI4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgCi0gICAgNjUsIDg5LCAxMjgsIDY1LCA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgCi0gICAgNjYsIDY1LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCAKLSAgICA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDUwLCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgCi0gICAgNDgsIDUwLCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCAKLSAgICA2NSwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIAotICAgIDY1LCA2NSwgNDgsIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIAotICAgIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgCi0gICAgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCAKLSAgICA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIAotICAgIDQ4LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNTUsIDEyOCwgNjUsIDU2LCA0OCwgCi0gICAgNTQsIDEyOCwgNjUsIDU2LCA0OCwgNTMsIDEyOCwgNjUsIDU2LCA0OCwgNTIsIDEyOCwgNjUsIDU2LCA0OCwgNTEsIDEyOCwgCi0gICAgNjUsIDU2LCA0OCwgNTAsIDEyOCwgNjUsIDU2LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNDgsIDEyOCwgNjUsIDU1LCAKLSAgICA1MSwgMTc4LCA2NSwgNTUsIDUwLCAxODIsIDY1LCA1NSwgNDksIDE4MywgNjUsIDU1LCA0OSwgMTgxLCA2NSwgNTUsIDQ5LCAKLSAgICAxODAsIDY1LCA1NSwgNDksIDE3OSwgNjUsIDU1LCA0OSwgMTc4LCA2NSwgNTUsIDQ5LCAxNzcsIDY1LCA1NSwgNDksIDE3NiwgCi0gICAgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODIsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgwLCA2NSwgNTUsIDQ4LCA1NywgNDUsIAotICAgIDE3OSwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxNzgsIDY1LCA1NSwgNDgsIDE4NSwgNjUsIDU1LCA0OCwgMTg0LCA2NSwgNTUsIAotICAgIDQ4LCAxODMsIDY1LCA1NSwgNDgsIDE4MiwgNjUsIDU1LCA0OCwgMTgxLCA2NSwgNTUsIDQ4LCAxODAsIDY1LCA1NSwgNDgsIAotICAgIDE3OSwgNjUsIDU1LCA0OCwgMTc4LCA2NSwgNTUsIDQ4LCAxNzcsIDY1LCA1NCwgNTQsIDUyLCAxMjgsIDY1LCA1NCwgNTQsIAotICAgIDUxLCAxMjgsIDY1LCA1NCwgNTQsIDUwLCAxMjgsIDY1LCA1NCwgNTQsIDQ5LCAxMjgsIDY1LCA1NCwgNTQsIDQ4LCAxMjgsIAotICAgIDY1LCA1NCwgNTMsIDU3LCAxMjgsIDY1LCA1NCwgNTMsIDU2LCAxMjgsIDY1LCA1NCwgNTMsIDU1LCAxMjgsIDY1LCA1NCwgCi0gICAgNTMsIDU0LCAxMjgsIDY1LCA1NCwgNTMsIDUzLCAxMjgsIDY1LCA1NCwgNTMsIDUyLCAxMjgsIDY1LCA1NCwgNTMsIDUxLCAKLSAgICAxMjgsIDY1LCA1NCwgNTMsIDUwLCAxMjgsIDY1LCA1NCwgNTMsIDQ5LCAxMjgsIDY1LCA1NCwgNTIsIDU3LCAxMjgsIDY1LCAKLSAgICA1NCwgNTIsIDU2LCAxMjgsIDY1LCA1NCwgNTIsIDU0LCAxMjgsIDY1LCA1NCwgNTIsIDUzLCAxMjgsIDY1LCA1NCwgNTIsIAotICAgIDUyLCAxMjgsIDY1LCA1NCwgNTIsIDUxLCAxMjgsIDY1LCA1NCwgNTIsIDUwLCAxMjgsIDY1LCA1NCwgNTIsIDQ4LCAxMjgsIAotICAgIDY1LCA1NCwgNTEsIDU2LCAxMjgsIDY1LCA1NCwgNTEsIDU1LCAxMjgsIDY1LCA1NCwgNTEsIDUyLCAxMjgsIDY1LCA1NCwgCi0gICAgNTAsIDU3LCAxMjgsIDY1LCA1NCwgNTAsIDU2LCAxMjgsIDY1LCA1NCwgNTAsIDU1LCAxMjgsIDY1LCA1NCwgNTAsIDU0LCAKLSAgICAxMjgsIDY1LCA1NCwgNTAsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDUxLCAxMjgsIDY1LCA1NCwgNTAsIDUwLCAxMjgsIDY1LCAKLSAgICA1NCwgNTAsIDQ5LCAxMjgsIDY1LCA1NCwgNTAsIDQ4LCAxMjgsIDY1LCA1NCwgNDksIDU3LCAxMjgsIDY1LCA1NCwgNDksIAotICAgIDU2LCAxMjgsIDY1LCA1NCwgNDksIDU1LCAxMjgsIDY1LCA1NCwgNDksIDU0LCAxMjgsIDY1LCA1NCwgNDksIDUzLCAxMjgsIAotICAgIDY1LCA1NCwgNDksIDUyLCAxMjgsIDY1LCA1NCwgNDksIDUxLCAxMjgsIDY1LCA1NCwgNDksIDUwLCAxMjgsIDY1LCA1NCwgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA1NCwgNDksIDQ4LCAxMjgsIDY1LCA1NCwgNDgsIDU3LCAxMjgsIDY1LCA1NCwgNDgsIDU2LCAKLSAgICAxMjgsIDY1LCA1NCwgNDgsIDU0LCAxMjgsIDY1LCA1NCwgNDgsIDUyLCAxMjgsIDY1LCA1NCwgNDgsIDUxLCAxMjgsIDY1LCAKLSAgICA1NCwgNDgsIDUwLCAxMjgsIDY1LCA1NCwgNDgsIDQ5LCAxMjgsIDY1LCA1NCwgNDgsIDQ4LCAxMjgsIDY1LCA1MywgNTcsIAotICAgIDU2LCAxMjgsIDY1LCA1MywgNTcsIDU0LCAxMjgsIDY1LCA1MywgNTcsIDUzLCAxMjgsIDY1LCA1MywgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA1MywgNTcsIDUwLCAxMjgsIDY1LCA1MywgNTcsIDQ5LCAxMjgsIDY1LCA1MywgNTYsIDU3LCAxMjgsIDY1LCA1MywgCi0gICAgNTYsIDU2LCAxMjgsIDY1LCA1MywgNTYsIDU1LCAxMjgsIDY1LCA1MywgNTYsIDU0LCAxMjgsIDY1LCA1MywgNTYsIDUzLCAKLSAgICAxMjgsIDY1LCA1MywgNTYsIDUyLCAxMjgsIDY1LCA1MywgNTYsIDUxLCAxMjgsIDY1LCA1MywgNTYsIDUwLCAxMjgsIDY1LCAKLSAgICA1MywgNTYsIDQ5LCAxMjgsIDY1LCA1MywgNTYsIDQ4LCAxMjgsIDY1LCA1MywgNTUsIDU3LCAxMjgsIDY1LCA1MywgNTUsIAotICAgIDU2LCAxMjgsIDY1LCA1MywgNTUsIDU1LCAxMjgsIDY1LCA1MywgNTUsIDU0LCAxMjgsIDY1LCA1MywgNTUsIDUzLCAxMjgsIAotICAgIDY1LCA1MywgNTUsIDUyLCAxMjgsIDY1LCA1MywgNTUsIDUxLCAxMjgsIDY1LCA1MywgNTUsIDUwLCAxMjgsIDY1LCA1MywgCi0gICAgNTUsIDQ5LCAxMjgsIDY1LCA1MywgNTUsIDQ4LCAxMjgsIDY1LCA1MywgNTQsIDU3LCAxMjgsIDY1LCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY1LCA1MywgNTQsIDU0LCAxMjgsIDY1LCA1MywgNTQsIDUzLCAxMjgsIDY1LCA1MywgNTQsIDUyLCAxMjgsIDY1LCAKLSAgICA1MywgNTQsIDUxLCAxMjgsIDY1LCA1MywgNTMsIDU3LCAxMjgsIDY1LCA1MywgNTMsIDU1LCAxMjgsIDY1LCA1MywgNTMsIAotICAgIDU0LCAxMjgsIDY1LCA1MywgNTMsIDUzLCAxMjgsIDY1LCA1MywgNTMsIDUyLCAxMjgsIDY1LCA1MywgNTMsIDUxLCAxMjgsIAotICAgIDY1LCA1MywgNTMsIDUwLCAxMjgsIDY1LCA1MywgNTMsIDQ5LCAxMjgsIDY1LCA1MywgNTMsIDQ4LCAxMjgsIDY1LCA1MywgCi0gICAgNTIsIDU3LCAxMjgsIDY1LCA1MywgNTIsIDU2LCAxMjgsIDY1LCA1MywgNTIsIDU1LCAxMjgsIDY1LCA1MywgNTIsIDUzLCAKLSAgICAxMjgsIDY1LCA1MywgNTIsIDUwLCAxMjgsIDY1LCA1MywgNTIsIDQ5LCAxMjgsIDY1LCA1MywgNTIsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MywgNTEsIDU3LCAxMjgsIDY1LCA1MywgNTEsIDU2LCAxMjgsIDY1LCA1MywgNTEsIDU1LCAxMjgsIDY1LCA1MywgNTEsIAotICAgIDU0LCAxMjgsIDY1LCA1MywgNTEsIDUzLCAxMjgsIDY1LCA1MywgNTEsIDUyLCAxMjgsIDY1LCA1MywgNTEsIDUwLCAxMjgsIAotICAgIDY1LCA1MywgNTEsIDQ5LCAxMjgsIDY1LCA1MywgNTEsIDQ4LCAxMjgsIDY1LCA1MywgNTAsIDU3LCAxMjgsIDY1LCA1MywgCi0gICAgNTAsIDU2LCAxMjgsIDY1LCA1MywgNTAsIDU1LCAxMjgsIDY1LCA1MywgNTAsIDU0LCAxMjgsIDY1LCA1MywgNTAsIDUzLCAKLSAgICAxMjgsIDY1LCA1MywgNTAsIDUyLCAxMjgsIDY1LCA1MywgNTAsIDUxLCAxMjgsIDY1LCA1MywgNTAsIDUwLCAxMjgsIDY1LCAKLSAgICA1MywgNTAsIDQ5LCAxMjgsIDY1LCA1MywgNTAsIDQ4LCAxMjgsIDY1LCA1MywgNDksIDU3LCAxMjgsIDY1LCA1MywgNDksIAotICAgIDU2LCAxMjgsIDY1LCA1MywgNDksIDU1LCAxMjgsIDY1LCA1MywgNDksIDU0LCAxMjgsIDY1LCA1MywgNDksIDUzLCAxMjgsIAotICAgIDY1LCA1MywgNDksIDUyLCAxMjgsIDY1LCA1MywgNDksIDUxLCAxMjgsIDY1LCA1MywgNDksIDUwLCAxMjgsIDY1LCA1MywgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA1MywgNDksIDQ4LCAxMjgsIDY1LCA1MywgNDgsIDU3LCAxMjgsIDY1LCA1MywgNDgsIDU2LCAKLSAgICAxMjgsIDY1LCA1MywgNDgsIDU1LCAxMjgsIDY1LCA1MywgNDgsIDU0LCAxMjgsIDY1LCA1MywgNDgsIDUzLCAxMjgsIDY1LCAKLSAgICA1MywgNDgsIDUyLCAxMjgsIDY1LCA1MywgNDgsIDUxLCAxMjgsIDY1LCA1MywgNDgsIDUwLCAxMjgsIDY1LCA1MywgNDgsIAotICAgIDQ5LCAxMjgsIDY1LCA1MiwgNTcsIDU1LCAxMjgsIDY1LCA1MiwgNTcsIDU0LCAxMjgsIDY1LCA1MiwgNTcsIDUzLCAxMjgsIAotICAgIDY1LCA1MiwgNTcsIDUyLCAxMjgsIDY1LCA1MiwgNTcsIDUxLCAxMjgsIDY1LCA1MiwgNTcsIDUwLCAxMjgsIDY1LCA1MiwgCi0gICAgNTcsIDQ5LCAxMjgsIDY1LCA1MiwgNTcsIDQ4LCAxMjgsIDY1LCA1MiwgNTYsIDU3LCAxMjgsIDY1LCA1MiwgNTYsIDU2LCAKLSAgICAxMjgsIDY1LCA1MiwgNTYsIDU1LCAxMjgsIDY1LCA1MiwgNTYsIDU0LCAxMjgsIDY1LCA1MiwgNTYsIDUzLCAxMjgsIDY1LCAKLSAgICA1MiwgNTYsIDUyLCAxMjgsIDY1LCA1MiwgNTYsIDUxLCAxMjgsIDY1LCA1MiwgNTYsIDUwLCAxMjgsIDY1LCA1MiwgNTYsIAotICAgIDQ5LCAxMjgsIDY1LCA1MiwgNTYsIDQ4LCAxMjgsIDY1LCA1MiwgNTUsIDU3LCAxMjgsIDY1LCA1MiwgNTUsIDU2LCAxMjgsIAotICAgIDY1LCA1MiwgNTUsIDU1LCAxMjgsIDY1LCA1MiwgNTUsIDU0LCAxMjgsIDY1LCA1MiwgNTUsIDUzLCAxMjgsIDY1LCA1MiwgCi0gICAgNTUsIDUyLCAxMjgsIDY1LCA1MiwgNTUsIDUxLCAxMjgsIDY1LCA1MiwgNTUsIDUwLCAxMjgsIDY1LCA1MiwgNTUsIDQ5LCAKLSAgICAxMjgsIDY1LCA1MiwgNTUsIDQ4LCAxMjgsIDY1LCA1MiwgNTQsIDU3LCAxMjgsIDY1LCA1MiwgNTQsIDU2LCAxMjgsIDY1LCAKLSAgICA1MiwgNTQsIDU1LCAxMjgsIDY1LCA1MiwgNTQsIDU0LCAxMjgsIDY1LCA1MiwgNTQsIDUzLCAxMjgsIDY1LCA1MiwgNTQsIAotICAgIDUyLCAxMjgsIDY1LCA1MiwgNTQsIDUxLCAxMjgsIDY1LCA1MiwgNTQsIDUwLCAxMjgsIDY1LCA1MiwgNTQsIDQ5LCAxMjgsIAotICAgIDY1LCA1MiwgNTQsIDQ4LCAxMjgsIDY1LCA1MiwgNTMsIDU3LCAxMjgsIDY1LCA1MiwgNTMsIDU2LCAxMjgsIDY1LCA1MiwgCi0gICAgNTMsIDU1LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA1NSwgMTI4LCA2NSwgNTIsIDUzLCA1NCwgMTI4LCA2NSwgNTIsIDUzLCAKLSAgICA1MywgMTI4LCA2NSwgNTIsIDUzLCA1MiwgMTI4LCA2NSwgNTIsIDUzLCA1MSwgMTI4LCA2NSwgNTIsIDUzLCA1MCwgMTI4LCAKLSAgICA2NSwgNTIsIDUzLCA0OSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNDgsIDEyOCwgNjUsIAotICAgIDUyLCA1MiwgNTcsIDEyOCwgNjUsIDUyLCA1MiwgNTYsIDEyOCwgNjUsIDUyLCA1MiwgNTUsIDEyOCwgNjUsIDUyLCA1MiwgCi0gICAgNTQsIDEyOCwgNjUsIDUyLCA1MiwgNTMsIDEyOCwgNjUsIDUyLCA1MiwgNTIsIDEyOCwgNjUsIDUyLCA1MiwgNTEsIDEyOCwgCi0gICAgNjUsIDUyLCA1MiwgNTAsIDEyOCwgNjUsIDUyLCA1MiwgNDksIDEyOCwgNjUsIDUyLCA1MiwgNDgsIDEyOCwgNjUsIDUyLCAKLSAgICA1MSwgNTcsIDEyOCwgNjUsIDUyLCA1MSwgNTYsIDEyOCwgNjUsIDUyLCA1MSwgNTUsIDEyOCwgNjUsIDUyLCA1MSwgNTQsIAotICAgIDEyOCwgNjUsIDUyLCA1MSwgNTMsIDEyOCwgNjUsIDUyLCA1MSwgNTIsIDEyOCwgNjUsIDUyLCA1MSwgNTEsIDEyOCwgNjUsIAotICAgIDUyLCA1MSwgNTAsIDEyOCwgNjUsIDUyLCA1MSwgNDksIDEyOCwgNjUsIDUyLCA1MSwgNDgsIDEyOCwgNjUsIDUyLCA1MCwgCi0gICAgNTcsIDEyOCwgNjUsIDUyLCA1MCwgNTYsIDEyOCwgNjUsIDUyLCA1MCwgNTUsIDEyOCwgNjUsIDUyLCA1MCwgNTQsIDEyOCwgCi0gICAgNjUsIDUyLCA1MCwgNTMsIDEyOCwgNjUsIDUyLCA1MCwgNTIsIDEyOCwgNjUsIDUyLCA1MCwgNTEsIDEyOCwgNjUsIDUyLCAKLSAgICA1MCwgNTAsIDEyOCwgNjUsIDUyLCA1MCwgNDksIDEyOCwgNjUsIDUyLCA1MCwgNDgsIDEyOCwgNjUsIDUyLCA0OSwgNTcsIAotICAgIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU2LCAxMjgsIDY1LCA1MiwgCi0gICAgNDksIDU1LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NSwgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgNDUsIDg2LCAKLSAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIAotICAgIDY1LCA1MiwgNDksIDUzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgCi0gICAgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDEyOCwgNjUsIDUyLCAKLSAgICA0OSwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUwLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCA0NSwgODYsIAotICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgMTI4LCA2NSwgNTIsIDQ5LCA0OCwgMTkzLCA2NSwgNTIsIDQ5LCA0OCwgCi0gICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgMTc2LCA2NSwgNTIsIDQ4LCA1NywgNDUsIDg2LCA2NSwgODMsIAotICAgIDEyOCwgNjUsIDUyLCA0OCwgNTcsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgCi0gICAgNDgsIDU2LCAxMjgsIDY1LCA1MiwgNDgsIDU1LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgMTI4LCAKLSAgICA2NSwgNTIsIDQ4LCA1NCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIAotICAgIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUzLCAxMjgsIDY1LCA1MiwgNDgsIDUyLCA0NSwgODYsIDY1LCA4MywgCi0gICAgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKLSAgICA0OCwgNTEsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCAxMjgsIAotICAgIDY1LCA1MiwgNDgsIDQ5LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgCi0gICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDEyOCwgNjUsIDUxLCA1NywgNTcsIDEyOCwgNjUsIDUxLCAKLSAgICA1NywgNTYsIDEyOCwgNjUsIDUxLCA1NywgNTUsIDEyOCwgNjUsIDUxLCA1NywgNTQsIDEyOCwgNjUsIDUxLCA1NywgNTMsIAotICAgIDEyOCwgNjUsIDUxLCA1NywgNTIsIDEyOCwgNjUsIDUxLCA1NywgMTc5LCA2NSwgNTEsIDU3LCA1MCwgMTI4LCA2NSwgNTEsIAotICAgIDU3LCA0OSwgMTI4LCA2NSwgNTEsIDU3LCA0OCwgMTI4LCA2NSwgNTEsIDU2LCA1NywgMTI4LCA2NSwgNTEsIDU2LCA1NiwgCi0gICAgMTI4LCA2NSwgNTEsIDU2LCA1NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDEyOCwgCi0gICAgNjUsIDUxLCA1NiwgNTMsIDEyOCwgNjUsIDUxLCA1NiwgNTIsIDEyOCwgNjUsIDUxLCA1NiwgNTEsIDY1LCAxMjgsIDY1LCAKLSAgICA1MSwgNTYsIDE3OSwgNjUsIDUxLCA1NiwgNTAsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDY1LCAxMjgsIDY1LCA1MSwgNTYsIAotICAgIDQ5LCAxMjgsIDY1LCA1MSwgNTYsIDQ4LCAxMjgsIDY1LCA1MSwgNTUsIDU3LCAxMjgsIDY1LCA1MSwgNTUsIDU2LCAxMjgsIAotICAgIDY1LCA1MSwgNTUsIDU1LCAxMjgsIDY1LCA1MSwgNTUsIDU0LCAxMjgsIDY1LCA1MSwgNTUsIDUzLCAxMjgsIDY1LCA1MSwgCi0gICAgNTUsIDUyLCAxMjgsIDY1LCA1MSwgNTUsIDUxLCAxMjgsIDY1LCA1MSwgNTUsIDUwLCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAKLSAgICA2NSwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgMTI4LCA2NSwgNTEsIDU1LCA0OCwgMTI4LCA2NSwgNTEsIDU0LCA1NywgMTI4LCAKLSAgICA2NSwgNTEsIDU0LCA1NiwgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTYsIDEyOCwgNjUsIDUxLCA1NCwgNTUsIDEyOCwgNjUsIAotICAgIDUxLCA1NCwgNTQsIDEyOCwgNjUsIDUxLCA1NCwgNTMsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDY1LCAxMjgsIDY1LCA1MSwgCi0gICAgNTQsIDUyLCAxMjgsIDY1LCA1MSwgNTQsIDUxLCAxMjgsIDY1LCA1MSwgNTQsIDUwLCAxMjgsIDY1LCA1MSwgNTQsIDQ5LCAKLSAgICAxMjgsIDY1LCA1MSwgNTQsIDQ4LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUzLCA1NywgMTI4LCAKLSAgICA2NSwgNTEsIDUzLCA1NiwgMTI4LCA2NSwgNTEsIDUzLCA1NSwgMTI4LCA2NSwgNTEsIDUzLCA1NCwgMTI4LCA2NSwgNTEsIAotICAgIDUzLCA1MywgMTI4LCA2NSwgNTEsIDUzLCA1MiwgMTI4LCA2NSwgNTEsIDUzLCA1MSwgMTI4LCA2NSwgNTEsIDUzLCA1MCwgCi0gICAgMTI4LCA2NSwgNTEsIDUzLCA0OSwgMTI4LCA2NSwgNTEsIDUzLCA0OCwgMTI4LCA2NSwgNTEsIDUyLCA1NywgMTI4LCA2NSwgCi0gICAgNTEsIDUyLCA1NiwgMTI4LCA2NSwgNTEsIDUyLCA1NSwgMTI4LCA2NSwgNTEsIDUyLCA1NCwgMTI4LCA2NSwgNTEsIDUyLCAKLSAgICA1MywgMTI4LCA2NSwgNTEsIDUyLCA1MiwgMTI4LCA2NSwgNTEsIDUyLCA1MSwgMTI4LCA2NSwgNTEsIDUyLCA1MCwgMTI4LCAKLSAgICA2NSwgNTEsIDUyLCA0OSwgMTI4LCA2NSwgNTEsIDUyLCA0OCwgMTI4LCA2NSwgNTEsIDUxLCA1NywgMTI4LCA2NSwgNTEsIAotICAgIDUxLCA1NiwgMTI4LCA2NSwgNTEsIDUxLCA1NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgCi0gICAgNTQsIDY2LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgMTI4LCA2NSwgNTEsIDUxLCAKLSAgICA1MywgMTI4LCA2NSwgNTEsIDUxLCA1MiwgMTI4LCA2NSwgNTEsIDUxLCA1MSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjcsIAotICAgIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY2LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgCi0gICAgMTI4LCA2NSwgNTEsIDUxLCA0OSwgMTI4LCA2NSwgNTEsIDUxLCA0OCwgMTI4LCA2NSwgNTEsIDUwLCA1NywgNjUsIDEyOCwgCi0gICAgNjUsIDUxLCA1MCwgNTcsIDEyOCwgNjUsIDUxLCA1MCwgNTYsIDEyOCwgNjUsIDUxLCA1MCwgNTUsIDEyOCwgNjUsIDUxLCAKLSAgICA1MCwgNTQsIDEyOCwgNjUsIDUxLCA1MCwgNTMsIDEyOCwgNjUsIDUxLCA1MCwgNTIsIDEyOCwgNjUsIDUxLCA1MCwgNTEsIAotICAgIDEyOCwgNjUsIDUxLCA1MCwgNTAsIDEyOCwgNjUsIDUxLCA1MCwgNDksIDEyOCwgNjUsIDUxLCA1MCwgNDgsIDEyOCwgNjUsIAotICAgIDUxLCA0OSwgNTcsIDEyOCwgNjUsIDUxLCA0OSwgNTYsIDEyOCwgNjUsIDUxLCA0OSwgNTUsIDEyOCwgNjUsIDUxLCA0OSwgCi0gICAgNTQsIDEyOCwgNjUsIDUxLCA0OSwgNTMsIDEyOCwgNjUsIDUxLCA0OSwgNTIsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY3LCAKLSAgICAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIAotICAgIDEyOCwgNjUsIDUxLCA0OSwgNTAsIDEyOCwgNjUsIDUxLCA0OSwgNDksIDEyOCwgNjUsIDUxLCA0OSwgNDgsIDEyOCwgNjUsIAotICAgIDUxLCA0OCwgNTcsIDY3LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjUsIDEyOCwgCi0gICAgNjUsIDUxLCA0OCwgNTcsIDEyOCwgNjUsIDUxLCA0OCwgNTYsIDEyOCwgNjUsIDUxLCA0OCwgNTUsIDEyOCwgNjUsIDUxLCAKLSAgICA0OCwgNTQsIDEyOCwgNjUsIDUxLCA0OCwgNTMsIDEyOCwgNjUsIDUxLCA0OCwgNTIsIDEyOCwgNjUsIDUxLCA0OCwgNTEsIAotICAgIDEyOCwgNjUsIDUxLCA0OCwgNTAsIDEyOCwgNjUsIDUxLCA0OCwgNDksIDEyOCwgNjUsIDUxLCA0OCwgNDgsIDEyOCwgNjUsIAotICAgIDUwLCA1NywgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNTcsIDU3LCAxMjgsIDY1LCA1MCwgNTcsIDU2LCAxMjgsIDY1LCA1MCwgCi0gICAgNTcsIDU1LCAxMjgsIDY1LCA1MCwgNTcsIDU0LCAxMjgsIDY1LCA1MCwgNTcsIDUzLCAxMjgsIDY1LCA1MCwgNTcsIDUyLCAKLSAgICA2NSwgMTI4LCA2NSwgNTAsIDU3LCA1MiwgMTI4LCA2NSwgNTAsIDU3LCA1MSwgMTI4LCA2NSwgNTAsIDU3LCA1MCwgMTI4LCAKLSAgICA2NSwgNTAsIDU3LCA0OSwgMTI4LCA2NSwgNTAsIDU3LCA0OCwgMTI4LCA2NSwgNTAsIDU2LCA1NywgNjUsIDEyOCwgNjUsIAotICAgIDUwLCA1NiwgNTcsIDEyOCwgNjUsIDUwLCA1NiwgNTYsIDEyOCwgNjUsIDUwLCA1NiwgNTUsIDEyOCwgNjUsIDUwLCA1NiwgCi0gICAgNTQsIDEyOCwgNjUsIDUwLCA1NiwgNTMsIDEyOCwgNjUsIDUwLCA1NiwgNTIsIDEyOCwgNjUsIDUwLCA1NiwgNTEsIDEyOCwgCi0gICAgNjUsIDUwLCA1NiwgNTAsIDEyOCwgNjUsIDUwLCA1NiwgNDksIDEyOCwgNjUsIDUwLCA1NiwgNDgsIDEyOCwgNjUsIDUwLCAKLSAgICA1NSwgNTcsIDEyOCwgNjUsIDUwLCA1NSwgNTYsIDEyOCwgNjUsIDUwLCA1NSwgNTUsIDEyOCwgNjUsIDUwLCA1NSwgNTQsIAotICAgIDEyOCwgNjUsIDUwLCA1NSwgNTMsIDEyOCwgNjUsIDUwLCA1NSwgNTIsIDEyOCwgNjUsIDUwLCA1NSwgNTEsIDEyOCwgNjUsIAotICAgIDUwLCA1NSwgNTAsIDEyOCwgNjUsIDUwLCA1NSwgNDksIDEyOCwgNjUsIDUwLCA1NSwgNDgsIDEyOCwgNjUsIDUwLCA1NCwgCi0gICAgNTcsIDEyOCwgNjUsIDUwLCA1NCwgNTYsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCAKLSAgICAxMjgsIDY1LCA1MCwgNTQsIDU0LCAxMjgsIDY1LCA1MCwgNTQsIDUzLCAxMjgsIDY1LCA1MCwgNTQsIDUyLCAxMjgsIDY1LCAKLSAgICA1MCwgNTQsIDUxLCAxMjgsIDY1LCA1MCwgNTQsIDUwLCAxMjgsIDY1LCA1MCwgNTQsIDQ5LCAxMjgsIDY1LCA1MCwgNTQsIAotICAgIDQ4LCAxMjgsIDY1LCA1MCwgNTMsIDU3LCAxMjgsIDY1LCA1MCwgNTMsIDU2LCAxMjgsIDY1LCA1MCwgNTMsIDU1LCAxMjgsIAotICAgIDY1LCA1MCwgNTMsIDU0LCAxMjgsIDY1LCA1MCwgNTMsIDUzLCAxMjgsIDY1LCA1MCwgNTMsIDUyLCAxMjgsIDY1LCA1MCwgCi0gICAgNTMsIDUxLCAxMjgsIDY1LCA1MCwgNTMsIDUwLCAxMjgsIDY1LCA1MCwgNTMsIDQ5LCAxMjgsIDY1LCA1MCwgNTMsIDQ4LCAKLSAgICAxMjgsIDY1LCA1MCwgNTIsIDU3LCAxMjgsIDY1LCA1MCwgNTIsIDU2LCAxMjgsIDY1LCA1MCwgNTIsIDU1LCAxMjgsIDY1LCAKLSAgICA1MCwgNTIsIDU0LCAxMjgsIDY1LCA1MCwgNTIsIDUzLCAxMjgsIDY1LCA1MCwgNTIsIDUyLCAxMjgsIDY1LCA1MCwgNTIsIAotICAgIDUxLCAxMjgsIDY1LCA1MCwgNTIsIDUwLCAxMjgsIDY1LCA1MCwgNTIsIDQ5LCAxMjgsIDY1LCA1MCwgNTIsIDQ4LCAxMjgsIAotICAgIDY1LCA1MCwgNTEsIDU3LCAxMjgsIDY1LCA1MCwgNTEsIDU2LCAxMjgsIDY1LCA1MCwgNTEsIDU1LCAxMjgsIDY1LCA1MCwgCi0gICAgNTEsIDU0LCAxMjgsIDY1LCA1MCwgNTEsIDUzLCAxMjgsIDY1LCA1MCwgNTEsIDUyLCAxMjgsIDY1LCA1MCwgNTEsIDUxLCAKLSAgICAxMjgsIDY1LCA1MCwgNTEsIDUwLCAxMjgsIDY1LCA1MCwgNTEsIDQ5LCAxMjgsIDY1LCA1MCwgNTEsIDQ4LCAxMjgsIDY1LCAKLSAgICA1MCwgNTAsIDU3LCAxMjgsIDY1LCA1MCwgNTAsIDU2LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIAotICAgIDUwLCA1NSwgMTI4LCA2NSwgNTAsIDUwLCA1NCwgMTI4LCA2NSwgNTAsIDUwLCA1MywgMTI4LCA2NSwgNTAsIDUwLCA1MiwgCi0gICAgMTI4LCA2NSwgNTAsIDUwLCA1MSwgMTI4LCA2NSwgNTAsIDUwLCA1MCwgMTI4LCA2NSwgNTAsIDUwLCA0OSwgMTI4LCA2NSwgCi0gICAgNTAsIDUwLCA0OCwgMTI4LCA2NSwgNTAsIDQ5LCA1NywgMTI4LCA2NSwgNTAsIDQ5LCA1NiwgMTI4LCA2NSwgNTAsIDQ5LCAKLSAgICA1NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIAotICAgIDY1LCAxMjgsIDY1LCA1MCwgNDksIDUzLCAxMjgsIDY1LCA1MCwgNDksIDUyLCAxMjgsIDY1LCA1MCwgNDksIDUxLCAxMjgsIAotICAgIDY1LCA1MCwgNDksIDUwLCAxMjgsIDY1LCA1MCwgNDksIDQ5LCAxMjgsIDY1LCA1MCwgNDksIDQ4LCAxMjgsIDY1LCA1MCwgCi0gICAgNDgsIDU3LCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NywgMTI4LCA2NSwgNTAsIDQ4LCA1NiwgMTI4LCA2NSwgNTAsIDQ4LCAKLSAgICA1NSwgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTUsIDEyOCwgNjUsIDUwLCA0OCwgNTQsIDEyOCwgNjUsIDUwLCA0OCwgNTMsIAotICAgIDEyOCwgNjUsIDUwLCA0OCwgNTIsIDEyOCwgNjUsIDUwLCA0OCwgNTEsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDY2LCAxMjgsIAotICAgIDY1LCA1MCwgNDgsIDUwLCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgMTI4LCA2NSwgNTAsIDQ4LCA0OSwgMTI4LCA2NSwgCi0gICAgNTAsIDQ4LCA0OCwgMTI4LCA2NSwgNDksIDU3LCA1NywgMTI4LCA2NSwgNDksIDU3LCA1NiwgMTI4LCA2NSwgNDksIDU3LCAKLSAgICA1NSwgMTI4LCA2NSwgNDksIDU3LCA1NCwgMTI4LCA2NSwgNDksIDU3LCA1MywgMTI4LCA2NSwgNDksIDU3LCA1MiwgMTI4LCAKLSAgICA2NSwgNDksIDU3LCA1MSwgMTI4LCA2NSwgNDksIDU3LCA1MCwgMTI4LCA2NSwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNDksIAotICAgIDU3LCA0OCwgMTI4LCA2NSwgNDksIDU2LCA1NywgMTI4LCA2NSwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNDksIDU2LCA1NSwgCi0gICAgMTI4LCA2NSwgNDksIDU2LCA1NCwgMTI4LCA2NSwgNDksIDU2LCA1MywgMTI4LCA2NSwgNDksIDU2LCA1MiwgMTI4LCA2NSwgCi0gICAgNDksIDU2LCA1MSwgMTI4LCA2NSwgNDksIDU2LCA1MCwgMTI4LCA2NSwgNDksIDU2LCA0OSwgMTI4LCA2NSwgNDksIDU2LCAKLSAgICA0OCwgMTI4LCA2NSwgNDksIDU1LCA1NywgMTI4LCA2NSwgNDksIDU1LCA1NiwgMTI4LCA2NSwgNDksIDU1LCA1NSwgMTI4LCAKLSAgICA2NSwgNDksIDU1LCA1NCwgMTI4LCA2NSwgNDksIDU1LCA1MywgMTI4LCA2NSwgNDksIDU1LCA1MiwgMTI4LCA2NSwgNDksIAotICAgIDU1LCA1MSwgMTI4LCA2NSwgNDksIDU1LCA1MCwgMTI4LCA2NSwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNDksIDU1LCA0OCwgCi0gICAgMTI4LCA2NSwgNDksIDU0LCA1NywgMTI4LCA2NSwgNDksIDU0LCA1NiwgMTI4LCA2NSwgNDksIDU0LCA1NSwgMTI4LCA2NSwgCi0gICAgNDksIDU0LCA1NCwgMTI4LCA2NSwgNDksIDU0LCA1MywgMTI4LCA2NSwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNDksIDU0LCAKLSAgICA1MSwgMTI4LCA2NSwgNDksIDU0LCA1MCwgMTI4LCA2NSwgNDksIDU0LCA0OSwgMTI4LCA2NSwgNDksIDU0LCA0OCwgMTI4LCAKLSAgICA2NSwgNDksIDUzLCA1NywgMTI4LCA2NSwgNDksIDUzLCA1NiwgMTI4LCA2NSwgNDksIDUzLCA1NSwgMTI4LCA2NSwgNDksIAotICAgIDUzLCA1NCwgMTI4LCA2NSwgNDksIDUzLCA1MywgMTI4LCA2NSwgNDksIDUzLCA1MiwgMTI4LCA2NSwgNDksIDUzLCA1MSwgCi0gICAgMTI4LCA2NSwgNDksIDUzLCA1MCwgMTI4LCA2NSwgNDksIDUzLCA0OSwgMTI4LCA2NSwgNDksIDUzLCA0OCwgMTI4LCA2NSwgCi0gICAgNDksIDUyLCA1NywgMTI4LCA2NSwgNDksIDUyLCA1NiwgMTI4LCA2NSwgNDksIDUyLCA1NSwgMTI4LCA2NSwgNDksIDUyLCAKLSAgICA1NCwgMTI4LCA2NSwgNDksIDUyLCA1MywgMTI4LCA2NSwgNDksIDUyLCA1MiwgMTI4LCA2NSwgNDksIDUyLCA1MSwgMTI4LCAKLSAgICA2NSwgNDksIDUyLCA1MCwgMTI4LCA2NSwgNDksIDUyLCA0OSwgMTI4LCA2NSwgNDksIDUyLCA0OCwgMTI4LCA2NSwgNDksIAotICAgIDUxLCA1NywgMTI4LCA2NSwgNDksIDUxLCA1NiwgMTI4LCA2NSwgNDksIDUxLCA1NSwgMTI4LCA2NSwgNDksIDUxLCA1NCwgCi0gICAgMTI4LCA2NSwgNDksIDUxLCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDEyOCwgNjUsIDQ5LCA1MSwgNTIsIDEyOCwgCi0gICAgNjUsIDQ5LCA1MSwgNTEsIDEyOCwgNjUsIDQ5LCA1MSwgNTAsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDY3LCAxMjgsIDY1LCAKLSAgICA0OSwgNTEsIDQ5LCAxMjgsIDY1LCA0OSwgNTEsIDQ4LCAxMjgsIDY1LCA0OSwgNTAsIDU3LCAxMjgsIDY1LCA0OSwgNTAsIAotICAgIDU2LCAxMjgsIDY1LCA0OSwgNTAsIDU1LCAxMjgsIDY1LCA0OSwgNTAsIDU0LCAxMjgsIDY1LCA0OSwgNTAsIDUzLCA2NSwgCi0gICAgMTI4LCA2NSwgNDksIDUwLCA1MywgMTI4LCA2NSwgNDksIDUwLCA1MiwgMTI4LCA2NSwgNDksIDUwLCA1MSwgMTI4LCA2NSwgCi0gICAgNDksIDUwLCA1MCwgMTI4LCA2NSwgNDksIDUwLCA0OSwgMTI4LCA2NSwgNDksIDUwLCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCAKLSAgICA1MCwgNDgsIDEyOCwgNjUsIDQ5LCA0OSwgNTcsIDEyOCwgNjUsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDQ5LCA0OSwgNTUsIAotICAgIDEyOCwgNjUsIDQ5LCA0OSwgNTQsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNDksIDUzLCAxMjgsIAotICAgIDY1LCA0OSwgNDksIDUyLCAxMjgsIDY1LCA0OSwgNDksIDUxLCAxMjgsIDY1LCA0OSwgNDksIDUwLCAxMjgsIDY1LCA0OSwgCi0gICAgNDksIDQ5LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgNjUsIDQ5LCA0OCwgNTcsIDEyOCwgNjUsIDQ5LCA0OCwgNTYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIAotICAgIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgCi0gICAgNTUsIDEyOCwgNjUsIDQ5LCA0OCwgNTQsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCAKLSAgICA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIAotICAgIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgMTI4LCA2NSwgNDksIDQ4LCA1MSwgCi0gICAgMTI4LCA2NSwgNDksIDQ4LCA1MCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDY1LCAKLSAgICAxMjgsIDY1LCA0OSwgNDgsIDQ5LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNDUsIAotICAgIDQ5LCA0OCwgNTAsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDEyOCwgNjUsIDQ4LCA1NywgNTcsIDEyOCwgNjUsIDQ4LCA1NywgCi0gICAgNTYsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIDU2LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCAKLSAgICA1NSwgMTI4LCA2NSwgNDgsIDU3LCA1NCwgMTI4LCA2NSwgNDgsIDU3LCA1MywgMTI4LCA2NSwgNDgsIDU3LCA1MiwgMTI4LCAKLSAgICA2NSwgNDgsIDU3LCA1MSwgMTI4LCA2NSwgNDgsIDU3LCA1MCwgMTI4LCA2NSwgNDgsIDU3LCA0OSwgMTI4LCA2NSwgNDgsIAotICAgIDU3LCA0OCwgMTI4LCA2NSwgNDgsIDU2LCA1NywgMTI4LCA2NSwgNDgsIDU2LCA1NiwgMTI4LCA2NSwgNDgsIDU2LCA1NSwgCi0gICAgMTI4LCA2NSwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNDgsIDU2LCA1MywgMTI4LCA2NSwgNDgsIDU2LCA1MiwgMTI4LCA2NSwgCi0gICAgNDgsIDU2LCA1MSwgMTI4LCA2NSwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNDgsIDU2LCAKLSAgICA0OCwgMTI4LCA2NSwgNDgsIDU1LCA1NywgMTI4LCA2NSwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNDgsIDU1LCA1NSwgMTI4LCAKLSAgICA2NSwgNDgsIDU1LCA1NCwgMTI4LCA2NSwgNDgsIDU1LCA1MywgMTI4LCA2NSwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNDgsIAotICAgIDU1LCA1MSwgMTI4LCA2NSwgNDgsIDU1LCA1MCwgMTI4LCA2NSwgNDgsIDU1LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgCi0gICAgMTI4LCA2NSwgNDgsIDU0LCA1NywgMTI4LCA2NSwgNDgsIDU0LCA1NiwgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgCi0gICAgNDgsIDU0LCA1NCwgNjcsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NSwgMTI4LCAKLSAgICA2NSwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIAotICAgIDU0LCA1MSwgMTI4LCA2NSwgNDgsIDU0LCA1MCwgMTI4LCA2NSwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgCi0gICAgMTI4LCA2NSwgNDgsIDUzLCA1NywgMTI4LCA2NSwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgCi0gICAgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCAKLSAgICA1MSwgMTI4LCA2NSwgNDgsIDUzLCA1MCwgMTI4LCA2NSwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCAKLSAgICA2NSwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDUzLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCAKLSAgICA1MSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDUwLCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgCi0gICAgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDY1LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAKLSAgICAxMjgsIDY1LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCAKLSAgICA0OCwgNTEsIDUzLCAxMjgsIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIAotICAgIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUwLCA1NiwgNjYsIDEyOCwgNjUsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgCi0gICAgNDksIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCAKLSAgICA0OCwgNDgsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIAotICAgIDY1LCA0NSwgNjksIDg1LCAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgNDUsIDc1LCA3MiwgCi0gICAgODksIDg1LCAxOTYsIDQ1LCA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIDE5NiwgNDUsIDY3LCAKLSAgICA3MiwgNjUsIDIxMCwgNDUsIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAorICAgIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgCisgICAgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCAKKyAgICA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIAorICAgIDczLCA3MCwgMTI4LCA2NSwgNzYsIDczLCAxOTgsIDY1LCA3NiwgNzMsIDY5LCA3OCwgMTI4LCA2NSwgNzYsIDczLCA2OSwgCisgICAgMjA2LCA2NSwgNzYsIDcxLCA3MywgMjE4LCA2NSwgNzYsIDcwLCA2NSwgMTI4LCA2NSwgNzYsIDY5LCA4NSwgMjEyLCA2NSwgCisgICAgNzYsIDY5LCA4MiwgODQsIDEyOCwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCA2NiwgNzMsIDY3LCAKKyAgICAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjYsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDY1LCA3NiwgNjUsIAorICAgIDg5LCA3MiwgNjksIDEyOCwgNjUsIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgCisgICAgNjUsIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCAKKyAgICA2OSwgODMsIDY5LCA3NiwgODMsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIAorICAgIDczLCA3NywgNzMsIDE5NSwgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgCisgICAgNjUsIDgyLCAxOTMsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIAorICAgIDIwMywgNjUsIDczLCA4NCwgNzksIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgCisgICAgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY1LCA3MywgNzgsIDIxMywgNjUsIDczLCA3OCwgNzgsIDEyOCwgNjUsIDczLCAKKyAgICA3NiwgNzcsIDEyOCwgNjUsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzMsIDcyLCA4NiwgODUsIDgzLCAxMjgsIAorICAgIDY1LCA3MiwgODMsIDY4LCA2NSwgMTI4LCA2NSwgNzIsIDgzLCA2NSwgMTI4LCA2NSwgNzIsIDc5LCAyMDUsIDY1LCA3MiwgCisgICAgNjUsIDc4LCAxOTksIDY1LCA3MiwgNjUsIDcxLCA3MSwgNjUsIDIxMCwgNjUsIDcyLCA2NSwgNjgsIDEyOCwgNjUsIDcxLCAKKyAgICA4NSwgNzgsIDcxLCAxMjgsIDY1LCA3MSwgNzksIDcxLCAyMDEsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3MSwgNjUsIDczLCA3OCwgCisgICAgODMsIDIxMiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCAKKyAgICA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIAorICAgIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgCisgICAgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzAsIDcwLCA3MywgMjE2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCAKKyAgICA2NSwgMTI4LCA2NSwgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgNjksIDgzLCA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgCisgICAgNjksIDgyLCAxMjgsIDY1LCA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIAorICAgIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIAorICAgIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgCisgICAgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCAKKyAgICA4NCwgNjUsIDcxLCA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDc3LCA3MywgODMsIAorICAgIDgzLCA3MywgNzksIDIwNiwgNjUsIDY4LCA3NiwgNjUsIDIwNSwgNjUsIDY4LCA2OSwgNzEsIDEyOCwgNjUsIDY4LCA2OSwgCisgICAgMTk5LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCA4MywgNjksIDE5NiwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgMjExLCAKKyAgICA2NSwgNjgsIDY4LCA2NSwgNzUsIDEyOCwgNjUsIDY4LCA2NSwgMjAzLCA2NSwgNjcsIDg1LCA4NCwgNjksIDQ1LCA3NywgNjUsIAorICAgIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDY1LCAKKyAgICA2NywgODUsIDg0LCA2OSwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgMTk3LCA2NSwgNjcsIDg0LCA4NSwgNjUsIDc2LCA3NiwgCisgICAgMjE3LCA2NSwgNjcsIDg0LCA3MywgODYsIDY1LCA4NCwgMTk3LCA2NSwgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDczLCAKKyAgICAxOTUsIDY1LCA2NywgNzUsIDc4LCA3OSwgODcsIDc2LCA2OSwgNjgsIDcxLCA2OSwgMTI4LCA2NSwgNjcsIDY3LCA4NSwgNzcsIAorICAgIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA2NywgNjcsIDc5LCA4NSwgNzgsIDIxMiwgNjUsIDY3LCA2NywgCisgICAgNzksIDc3LCA3NywgNzksIDY4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNjksIDgwLCA4NCwgMTI4LCAKKyAgICA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDY1LCA2NywgCisgICAgNjcsIDY5LCA3OCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCAyMTIsIDY1LCA2NywgNjUsIDY4LCA2OSwgNzcsIAorICAgIDIxNywgNjUsIDY2LCA4OSwgODMsIDc3LCA2NSwgMjA0LCA2NSwgNjYsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjcsIDY5LCAKKyAgICAxMjgsIDY1LCA2NiwgNzUsIDcyLCA2NSwgODMsIDczLCA2NSwgMjA2LCA2NSwgNjYsIDY2LCA4MiwgNjksIDg2LCA3MywgNjUsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNjUsIDY2LCA2NSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY2LCAxNzgsIDY1LCA2NiwgCisgICAgNDksIDU3LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY1LCAKKyAgICA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNjYsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NiwgCisgICAgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY1LCAxMjgsIDY1LCA2NiwgNDksIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ5LCAKKyAgICA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1MywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OCwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NSwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDU1LCAKKyAgICA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDU0LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUxLCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIAorICAgIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTIsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTcsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTEsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTEsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTcsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgCisgICAgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MSwgNzcsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgNzcsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCA3MCwgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3NywgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1MCwgNDksIDcwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDgsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNDksIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTcsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgCisgICAgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA0OCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNjUsIAorICAgIDg5LCA3MywgNzgsIDEyOCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCA4OSwgMTI4LCA2NSwgCisgICAgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCA2NSwgNjUsIDcwLCAKKyAgICA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTYsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDY1LCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIAorICAgIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTAsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDU1LCAxMjgsIDY1LCA1NiwgNDgsIDU0LCAxMjgsIDY1LCAKKyAgICA1NiwgNDgsIDUzLCAxMjgsIDY1LCA1NiwgNDgsIDUyLCAxMjgsIDY1LCA1NiwgNDgsIDUxLCAxMjgsIDY1LCA1NiwgNDgsIAorICAgIDUwLCAxMjgsIDY1LCA1NiwgNDgsIDQ5LCAxMjgsIDY1LCA1NiwgNDgsIDQ4LCAxMjgsIDY1LCA1NSwgNTEsIDE3OCwgNjUsIAorICAgIDU1LCA1MCwgMTgyLCA2NSwgNTUsIDQ5LCAxODMsIDY1LCA1NSwgNDksIDE4MSwgNjUsIDU1LCA0OSwgMTgwLCA2NSwgNTUsIAorICAgIDQ5LCAxNzksIDY1LCA1NSwgNDksIDE3OCwgNjUsIDU1LCA0OSwgMTc3LCA2NSwgNTUsIDQ5LCAxNzYsIDY1LCA1NSwgNDgsIAorICAgIDU3LCA0NSwgMTgyLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MCwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxNzksIDY1LCA1NSwgCisgICAgNDgsIDU3LCA0NSwgMTc4LCA2NSwgNTUsIDQ4LCAxODUsIDY1LCA1NSwgNDgsIDE4NCwgNjUsIDU1LCA0OCwgMTgzLCA2NSwgCisgICAgNTUsIDQ4LCAxODIsIDY1LCA1NSwgNDgsIDE4MSwgNjUsIDU1LCA0OCwgMTgwLCA2NSwgNTUsIDQ4LCAxNzksIDY1LCA1NSwgCisgICAgNDgsIDE3OCwgNjUsIDU1LCA0OCwgMTc3LCA2NSwgNTQsIDU0LCA1MiwgMTI4LCA2NSwgNTQsIDU0LCA1MSwgMTI4LCA2NSwgCisgICAgNTQsIDU0LCA1MCwgMTI4LCA2NSwgNTQsIDU0LCA0OSwgMTI4LCA2NSwgNTQsIDU0LCA0OCwgMTI4LCA2NSwgNTQsIDUzLCAKKyAgICA1NywgMTI4LCA2NSwgNTQsIDUzLCA1NiwgMTI4LCA2NSwgNTQsIDUzLCA1NSwgMTI4LCA2NSwgNTQsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNTQsIDUzLCA1MywgMTI4LCA2NSwgNTQsIDUzLCA1MiwgMTI4LCA2NSwgNTQsIDUzLCA1MSwgMTI4LCA2NSwgNTQsIAorICAgIDUzLCA1MCwgMTI4LCA2NSwgNTQsIDUzLCA0OSwgMTI4LCA2NSwgNTQsIDUyLCA1NywgMTI4LCA2NSwgNTQsIDUyLCA1NiwgCisgICAgMTI4LCA2NSwgNTQsIDUyLCA1NCwgMTI4LCA2NSwgNTQsIDUyLCA1MywgMTI4LCA2NSwgNTQsIDUyLCA1MiwgMTI4LCA2NSwgCisgICAgNTQsIDUyLCA1MSwgMTI4LCA2NSwgNTQsIDUyLCA1MCwgMTI4LCA2NSwgNTQsIDUyLCA0OCwgMTI4LCA2NSwgNTQsIDUxLCAKKyAgICA1NiwgMTI4LCA2NSwgNTQsIDUxLCA1NSwgMTI4LCA2NSwgNTQsIDUxLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1NywgMTI4LCAKKyAgICA2NSwgNTQsIDUwLCA1NiwgMTI4LCA2NSwgNTQsIDUwLCA1NSwgMTI4LCA2NSwgNTQsIDUwLCA1NCwgMTI4LCA2NSwgNTQsIAorICAgIDUwLCA1MiwgMTI4LCA2NSwgNTQsIDUwLCA1MSwgMTI4LCA2NSwgNTQsIDUwLCA1MCwgMTI4LCA2NSwgNTQsIDUwLCA0OSwgCisgICAgMTI4LCA2NSwgNTQsIDUwLCA0OCwgMTI4LCA2NSwgNTQsIDQ5LCA1NywgMTI4LCA2NSwgNTQsIDQ5LCA1NiwgMTI4LCA2NSwgCisgICAgNTQsIDQ5LCA1NSwgMTI4LCA2NSwgNTQsIDQ5LCA1NCwgMTI4LCA2NSwgNTQsIDQ5LCA1MywgMTI4LCA2NSwgNTQsIDQ5LCAKKyAgICA1MiwgMTI4LCA2NSwgNTQsIDQ5LCA1MSwgMTI4LCA2NSwgNTQsIDQ5LCA1MCwgMTI4LCA2NSwgNTQsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NSwgNTQsIDQ5LCA0OCwgMTI4LCA2NSwgNTQsIDQ4LCA1NywgMTI4LCA2NSwgNTQsIDQ4LCA1NiwgMTI4LCA2NSwgNTQsIAorICAgIDQ4LCA1NCwgMTI4LCA2NSwgNTQsIDQ4LCA1MiwgMTI4LCA2NSwgNTQsIDQ4LCA1MSwgMTI4LCA2NSwgNTQsIDQ4LCA1MCwgCisgICAgMTI4LCA2NSwgNTQsIDQ4LCA0OSwgMTI4LCA2NSwgNTQsIDQ4LCA0OCwgMTI4LCA2NSwgNTMsIDU3LCA1NiwgMTI4LCA2NSwgCisgICAgNTMsIDU3LCA1NCwgMTI4LCA2NSwgNTMsIDU3LCA1MywgMTI4LCA2NSwgNTMsIDU3LCA1MiwgMTI4LCA2NSwgNTMsIDU3LCAKKyAgICA1MCwgMTI4LCA2NSwgNTMsIDU3LCA0OSwgMTI4LCA2NSwgNTMsIDU2LCA1NywgMTI4LCA2NSwgNTMsIDU2LCA1NiwgMTI4LCAKKyAgICA2NSwgNTMsIDU2LCA1NSwgMTI4LCA2NSwgNTMsIDU2LCA1NCwgMTI4LCA2NSwgNTMsIDU2LCA1MywgMTI4LCA2NSwgNTMsIAorICAgIDU2LCA1MiwgMTI4LCA2NSwgNTMsIDU2LCA1MSwgMTI4LCA2NSwgNTMsIDU2LCA1MCwgMTI4LCA2NSwgNTMsIDU2LCA0OSwgCisgICAgMTI4LCA2NSwgNTMsIDU2LCA0OCwgMTI4LCA2NSwgNTMsIDU1LCA1NywgMTI4LCA2NSwgNTMsIDU1LCA1NiwgMTI4LCA2NSwgCisgICAgNTMsIDU1LCA1NSwgMTI4LCA2NSwgNTMsIDU1LCA1NCwgMTI4LCA2NSwgNTMsIDU1LCA1MywgMTI4LCA2NSwgNTMsIDU1LCAKKyAgICA1MiwgMTI4LCA2NSwgNTMsIDU1LCA1MSwgMTI4LCA2NSwgNTMsIDU1LCA1MCwgMTI4LCA2NSwgNTMsIDU1LCA0OSwgMTI4LCAKKyAgICA2NSwgNTMsIDU1LCA0OCwgMTI4LCA2NSwgNTMsIDU0LCA1NywgMTI4LCA2NSwgNTMsIDU0LCA1NiwgMTI4LCA2NSwgNTMsIAorICAgIDU0LCA1NCwgMTI4LCA2NSwgNTMsIDU0LCA1MywgMTI4LCA2NSwgNTMsIDU0LCA1MiwgMTI4LCA2NSwgNTMsIDU0LCA1MSwgCisgICAgMTI4LCA2NSwgNTMsIDUzLCA1NywgMTI4LCA2NSwgNTMsIDUzLCA1NSwgMTI4LCA2NSwgNTMsIDUzLCA1NCwgMTI4LCA2NSwgCisgICAgNTMsIDUzLCA1MywgMTI4LCA2NSwgNTMsIDUzLCA1MiwgMTI4LCA2NSwgNTMsIDUzLCA1MSwgMTI4LCA2NSwgNTMsIDUzLCAKKyAgICA1MCwgMTI4LCA2NSwgNTMsIDUzLCA0OSwgMTI4LCA2NSwgNTMsIDUzLCA0OCwgMTI4LCA2NSwgNTMsIDUyLCA1NywgMTI4LCAKKyAgICA2NSwgNTMsIDUyLCA1NiwgMTI4LCA2NSwgNTMsIDUyLCA1NSwgMTI4LCA2NSwgNTMsIDUyLCA1MywgMTI4LCA2NSwgNTMsIAorICAgIDUyLCA1MCwgMTI4LCA2NSwgNTMsIDUyLCA0OSwgMTI4LCA2NSwgNTMsIDUyLCA0OCwgMTI4LCA2NSwgNTMsIDUxLCA1NywgCisgICAgMTI4LCA2NSwgNTMsIDUxLCA1NiwgMTI4LCA2NSwgNTMsIDUxLCA1NSwgMTI4LCA2NSwgNTMsIDUxLCA1NCwgMTI4LCA2NSwgCisgICAgNTMsIDUxLCA1MywgMTI4LCA2NSwgNTMsIDUxLCA1MiwgMTI4LCA2NSwgNTMsIDUxLCA1MCwgMTI4LCA2NSwgNTMsIDUxLCAKKyAgICA0OSwgMTI4LCA2NSwgNTMsIDUxLCA0OCwgMTI4LCA2NSwgNTMsIDUwLCA1NywgMTI4LCA2NSwgNTMsIDUwLCA1NiwgMTI4LCAKKyAgICA2NSwgNTMsIDUwLCA1NSwgMTI4LCA2NSwgNTMsIDUwLCA1NCwgMTI4LCA2NSwgNTMsIDUwLCA1MywgMTI4LCA2NSwgNTMsIAorICAgIDUwLCA1MiwgMTI4LCA2NSwgNTMsIDUwLCA1MSwgMTI4LCA2NSwgNTMsIDUwLCA1MCwgMTI4LCA2NSwgNTMsIDUwLCA0OSwgCisgICAgMTI4LCA2NSwgNTMsIDUwLCA0OCwgMTI4LCA2NSwgNTMsIDQ5LCA1NywgMTI4LCA2NSwgNTMsIDQ5LCA1NiwgMTI4LCA2NSwgCisgICAgNTMsIDQ5LCA1NSwgMTI4LCA2NSwgNTMsIDQ5LCA1NCwgMTI4LCA2NSwgNTMsIDQ5LCA1MywgMTI4LCA2NSwgNTMsIDQ5LCAKKyAgICA1MiwgMTI4LCA2NSwgNTMsIDQ5LCA1MSwgMTI4LCA2NSwgNTMsIDQ5LCA1MCwgMTI4LCA2NSwgNTMsIDQ5LCA0OSwgMTI4LCAKKyAgICA2NSwgNTMsIDQ5LCA0OCwgMTI4LCA2NSwgNTMsIDQ4LCA1NywgMTI4LCA2NSwgNTMsIDQ4LCA1NiwgMTI4LCA2NSwgNTMsIAorICAgIDQ4LCA1NSwgMTI4LCA2NSwgNTMsIDQ4LCA1NCwgMTI4LCA2NSwgNTMsIDQ4LCA1MywgMTI4LCA2NSwgNTMsIDQ4LCA1MiwgCisgICAgMTI4LCA2NSwgNTMsIDQ4LCA1MSwgMTI4LCA2NSwgNTMsIDQ4LCA1MCwgMTI4LCA2NSwgNTMsIDQ4LCA0OSwgMTI4LCA2NSwgCisgICAgNTIsIDU3LCA1NSwgMTI4LCA2NSwgNTIsIDU3LCA1NCwgMTI4LCA2NSwgNTIsIDU3LCA1MywgMTI4LCA2NSwgNTIsIDU3LCAKKyAgICA1MiwgMTI4LCA2NSwgNTIsIDU3LCA1MSwgMTI4LCA2NSwgNTIsIDU3LCA1MCwgMTI4LCA2NSwgNTIsIDU3LCA0OSwgMTI4LCAKKyAgICA2NSwgNTIsIDU3LCA0OCwgMTI4LCA2NSwgNTIsIDU2LCA1NywgMTI4LCA2NSwgNTIsIDU2LCA1NiwgMTI4LCA2NSwgNTIsIAorICAgIDU2LCA1NSwgMTI4LCA2NSwgNTIsIDU2LCA1NCwgMTI4LCA2NSwgNTIsIDU2LCA1MywgMTI4LCA2NSwgNTIsIDU2LCA1MiwgCisgICAgMTI4LCA2NSwgNTIsIDU2LCA1MSwgMTI4LCA2NSwgNTIsIDU2LCA1MCwgMTI4LCA2NSwgNTIsIDU2LCA0OSwgMTI4LCA2NSwgCisgICAgNTIsIDU2LCA0OCwgMTI4LCA2NSwgNTIsIDU1LCA1NywgMTI4LCA2NSwgNTIsIDU1LCA1NiwgMTI4LCA2NSwgNTIsIDU1LCAKKyAgICA1NSwgMTI4LCA2NSwgNTIsIDU1LCA1NCwgMTI4LCA2NSwgNTIsIDU1LCA1MywgMTI4LCA2NSwgNTIsIDU1LCA1MiwgMTI4LCAKKyAgICA2NSwgNTIsIDU1LCA1MSwgMTI4LCA2NSwgNTIsIDU1LCA1MCwgMTI4LCA2NSwgNTIsIDU1LCA0OSwgMTI4LCA2NSwgNTIsIAorICAgIDU1LCA0OCwgMTI4LCA2NSwgNTIsIDU0LCA1NywgMTI4LCA2NSwgNTIsIDU0LCA1NiwgMTI4LCA2NSwgNTIsIDU0LCA1NSwgCisgICAgMTI4LCA2NSwgNTIsIDU0LCA1NCwgMTI4LCA2NSwgNTIsIDU0LCA1MywgMTI4LCA2NSwgNTIsIDU0LCA1MiwgMTI4LCA2NSwgCisgICAgNTIsIDU0LCA1MSwgMTI4LCA2NSwgNTIsIDU0LCA1MCwgMTI4LCA2NSwgNTIsIDU0LCA0OSwgMTI4LCA2NSwgNTIsIDU0LCAKKyAgICA0OCwgMTI4LCA2NSwgNTIsIDUzLCA1NywgMTI4LCA2NSwgNTIsIDUzLCA1NiwgMTI4LCA2NSwgNTIsIDUzLCA1NSwgNjUsIAorICAgIDEyOCwgNjUsIDUyLCA1MywgNTUsIDEyOCwgNjUsIDUyLCA1MywgNTQsIDEyOCwgNjUsIDUyLCA1MywgNTMsIDEyOCwgNjUsIAorICAgIDUyLCA1MywgNTIsIDEyOCwgNjUsIDUyLCA1MywgNTEsIDEyOCwgNjUsIDUyLCA1MywgNTAsIDEyOCwgNjUsIDUyLCA1MywgCisgICAgNDksIDEyOCwgNjUsIDUyLCA1MywgNDgsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCAxMjgsIDY1LCA1MiwgNTIsIDU3LCAKKyAgICAxMjgsIDY1LCA1MiwgNTIsIDU2LCAxMjgsIDY1LCA1MiwgNTIsIDU1LCAxMjgsIDY1LCA1MiwgNTIsIDU0LCAxMjgsIDY1LCAKKyAgICA1MiwgNTIsIDUzLCAxMjgsIDY1LCA1MiwgNTIsIDUyLCAxMjgsIDY1LCA1MiwgNTIsIDUxLCAxMjgsIDY1LCA1MiwgNTIsIAorICAgIDUwLCAxMjgsIDY1LCA1MiwgNTIsIDQ5LCAxMjgsIDY1LCA1MiwgNTIsIDQ4LCAxMjgsIDY1LCA1MiwgNTEsIDU3LCAxMjgsIAorICAgIDY1LCA1MiwgNTEsIDU2LCAxMjgsIDY1LCA1MiwgNTEsIDU1LCAxMjgsIDY1LCA1MiwgNTEsIDU0LCAxMjgsIDY1LCA1MiwgCisgICAgNTEsIDUzLCAxMjgsIDY1LCA1MiwgNTEsIDUyLCAxMjgsIDY1LCA1MiwgNTEsIDUxLCAxMjgsIDY1LCA1MiwgNTEsIDUwLCAKKyAgICAxMjgsIDY1LCA1MiwgNTEsIDQ5LCAxMjgsIDY1LCA1MiwgNTEsIDQ4LCAxMjgsIDY1LCA1MiwgNTAsIDU3LCAxMjgsIDY1LCAKKyAgICA1MiwgNTAsIDU2LCAxMjgsIDY1LCA1MiwgNTAsIDU1LCAxMjgsIDY1LCA1MiwgNTAsIDU0LCAxMjgsIDY1LCA1MiwgNTAsIAorICAgIDUzLCAxMjgsIDY1LCA1MiwgNTAsIDUyLCAxMjgsIDY1LCA1MiwgNTAsIDUxLCAxMjgsIDY1LCA1MiwgNTAsIDUwLCAxMjgsIAorICAgIDY1LCA1MiwgNTAsIDQ5LCAxMjgsIDY1LCA1MiwgNTAsIDQ4LCAxMjgsIDY1LCA1MiwgNDksIDU3LCAxMjgsIDY1LCA1MiwgCisgICAgNDksIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgMTI4LCA2NSwgNTIsIDQ5LCA1NSwgNDUsIDg2LCAKKyAgICA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTUsIDEyOCwgNjUsIDUyLCA0OSwgNTQsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIAorICAgIDY1LCA1MiwgNDksIDU0LCAxMjgsIDY1LCA1MiwgNDksIDUzLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MywgCisgICAgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDEyOCwgNjUsIDUyLCAKKyAgICA0OSwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUxLCAxMjgsIDY1LCA1MiwgNDksIDUwLCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MCwgMTI4LCA2NSwgNTIsIDQ5LCA0OSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgCisgICAgNjUsIDUyLCA0OSwgNDksIDEyOCwgNjUsIDUyLCA0OSwgNDgsIDE5MywgNjUsIDUyLCA0OSwgNDgsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDE3NiwgNjUsIDUyLCA0OCwgNTcsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIAorICAgIDU3LCAxMjgsIDY1LCA1MiwgNDgsIDU2LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgMTI4LCA2NSwgCisgICAgNTIsIDQ4LCA1NSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDQ1LCAKKyAgICA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU0LCAxMjgsIDY1LCA1MiwgNDgsIDUzLCA0NSwgODYsIDY1LCA4MywgCisgICAgMTI4LCA2NSwgNTIsIDQ4LCA1MywgMTI4LCA2NSwgNTIsIDQ4LCA1MiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKKyAgICA0OCwgNTIsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCAxMjgsIAorICAgIDY1LCA1MiwgNDgsIDUwLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgCisgICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNDksIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAxMjgsIDY1LCA1MSwgNTcsIDU3LCAxMjgsIDY1LCA1MSwgNTcsIDU2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTcsIDU1LCAxMjgsIDY1LCA1MSwgNTcsIDU0LCAxMjgsIDY1LCA1MSwgNTcsIDUzLCAxMjgsIDY1LCA1MSwgNTcsIAorICAgIDUyLCAxMjgsIDY1LCA1MSwgNTcsIDE3OSwgNjUsIDUxLCA1NywgNTAsIDEyOCwgNjUsIDUxLCA1NywgNDksIDEyOCwgNjUsIAorICAgIDUxLCA1NywgNDgsIDEyOCwgNjUsIDUxLCA1NiwgNTcsIDEyOCwgNjUsIDUxLCA1NiwgNTYsIDEyOCwgNjUsIDUxLCA1NiwgCisgICAgNTUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCAxMjgsIDY1LCA1MSwgNTYsIDUzLCAKKyAgICAxMjgsIDY1LCA1MSwgNTYsIDUyLCAxMjgsIDY1LCA1MSwgNTYsIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDU2LCAxNzksIDY1LCAKKyAgICA1MSwgNTYsIDUwLCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgMTI4LCA2NSwgNTEsIAorICAgIDU2LCA0OCwgMTI4LCA2NSwgNTEsIDU1LCA1NywgMTI4LCA2NSwgNTEsIDU1LCA1NiwgMTI4LCA2NSwgNTEsIDU1LCA1NSwgCisgICAgMTI4LCA2NSwgNTEsIDU1LCA1NCwgMTI4LCA2NSwgNTEsIDU1LCA1MywgMTI4LCA2NSwgNTEsIDU1LCA1MiwgMTI4LCA2NSwgCisgICAgNTEsIDU1LCA1MSwgMTI4LCA2NSwgNTEsIDU1LCA1MCwgMTI4LCA2NSwgNTEsIDU1LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCAKKyAgICA1NSwgNDksIDEyOCwgNjUsIDUxLCA1NSwgNDgsIDEyOCwgNjUsIDUxLCA1NCwgNTcsIDEyOCwgNjUsIDUxLCA1NCwgNTYsIAorICAgIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDU2LCAxMjgsIDY1LCA1MSwgNTQsIDU1LCAxMjgsIDY1LCA1MSwgNTQsIDU0LCAxMjgsIAorICAgIDY1LCA1MSwgNTQsIDUzLCAxMjgsIDY1LCA1MSwgNTQsIDUyLCA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1MiwgMTI4LCA2NSwgCisgICAgNTEsIDU0LCA1MSwgMTI4LCA2NSwgNTEsIDU0LCA1MCwgMTI4LCA2NSwgNTEsIDU0LCA0OSwgMTI4LCA2NSwgNTEsIDU0LCAKKyAgICA0OCwgMTI4LCA2NSwgNTEsIDUzLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDEyOCwgNjUsIDUxLCA1MywgNTYsIAorICAgIDEyOCwgNjUsIDUxLCA1MywgNTUsIDEyOCwgNjUsIDUxLCA1MywgNTQsIDEyOCwgNjUsIDUxLCA1MywgNTMsIDEyOCwgNjUsIAorICAgIDUxLCA1MywgNTIsIDEyOCwgNjUsIDUxLCA1MywgNTEsIDEyOCwgNjUsIDUxLCA1MywgNTAsIDEyOCwgNjUsIDUxLCA1MywgCisgICAgNDksIDEyOCwgNjUsIDUxLCA1MywgNDgsIDEyOCwgNjUsIDUxLCA1MiwgNTcsIDEyOCwgNjUsIDUxLCA1MiwgNTYsIDEyOCwgCisgICAgNjUsIDUxLCA1MiwgNTUsIDEyOCwgNjUsIDUxLCA1MiwgNTQsIDEyOCwgNjUsIDUxLCA1MiwgNTMsIDEyOCwgNjUsIDUxLCAKKyAgICA1MiwgNTIsIDEyOCwgNjUsIDUxLCA1MiwgNTEsIDEyOCwgNjUsIDUxLCA1MiwgNTAsIDEyOCwgNjUsIDUxLCA1MiwgNDksIAorICAgIDEyOCwgNjUsIDUxLCA1MiwgNDgsIDEyOCwgNjUsIDUxLCA1MSwgNTcsIDEyOCwgNjUsIDUxLCA1MSwgNTYsIDEyOCwgNjUsIAorICAgIDUxLCA1MSwgNTUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NiwgMTI4LCA2NSwgCisgICAgNTEsIDUxLCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDEyOCwgNjUsIDUxLCA1MSwgNTMsIDEyOCwgNjUsIDUxLCAKKyAgICA1MSwgNTIsIDEyOCwgNjUsIDUxLCA1MSwgNTEsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY3LCAxMjgsIDY1LCA1MSwgNTEsIAorICAgIDUwLCA2NiwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDEyOCwgNjUsIDUxLCA1MSwgCisgICAgNDksIDEyOCwgNjUsIDUxLCA1MSwgNDgsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCAKKyAgICAxMjgsIDY1LCA1MSwgNTAsIDU2LCAxMjgsIDY1LCA1MSwgNTAsIDU1LCAxMjgsIDY1LCA1MSwgNTAsIDU0LCAxMjgsIDY1LCAKKyAgICA1MSwgNTAsIDUzLCAxMjgsIDY1LCA1MSwgNTAsIDUyLCAxMjgsIDY1LCA1MSwgNTAsIDUxLCAxMjgsIDY1LCA1MSwgNTAsIAorICAgIDUwLCAxMjgsIDY1LCA1MSwgNTAsIDQ5LCAxMjgsIDY1LCA1MSwgNTAsIDQ4LCAxMjgsIDY1LCA1MSwgNDksIDU3LCAxMjgsIAorICAgIDY1LCA1MSwgNDksIDU2LCAxMjgsIDY1LCA1MSwgNDksIDU1LCAxMjgsIDY1LCA1MSwgNDksIDU0LCAxMjgsIDY1LCA1MSwgCisgICAgNDksIDUzLCAxMjgsIDY1LCA1MSwgNDksIDUyLCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NywgMTI4LCA2NSwgNTEsIDQ5LCAKKyAgICA1MSwgNjYsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNDksIDUxLCAxMjgsIDY1LCA1MSwgNDksIAorICAgIDUwLCAxMjgsIDY1LCA1MSwgNDksIDQ5LCAxMjgsIDY1LCA1MSwgNDksIDQ4LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NywgCisgICAgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjYsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCAKKyAgICAxMjgsIDY1LCA1MSwgNDgsIDU2LCAxMjgsIDY1LCA1MSwgNDgsIDU1LCAxMjgsIDY1LCA1MSwgNDgsIDU0LCAxMjgsIDY1LCAKKyAgICA1MSwgNDgsIDUzLCAxMjgsIDY1LCA1MSwgNDgsIDUyLCAxMjgsIDY1LCA1MSwgNDgsIDUxLCAxMjgsIDY1LCA1MSwgNDgsIAorICAgIDUwLCAxMjgsIDY1LCA1MSwgNDgsIDQ5LCAxMjgsIDY1LCA1MSwgNDgsIDQ4LCAxMjgsIDY1LCA1MCwgNTcsIDU3LCA2NSwgCisgICAgMTI4LCA2NSwgNTAsIDU3LCA1NywgMTI4LCA2NSwgNTAsIDU3LCA1NiwgMTI4LCA2NSwgNTAsIDU3LCA1NSwgMTI4LCA2NSwgCisgICAgNTAsIDU3LCA1NCwgMTI4LCA2NSwgNTAsIDU3LCA1MywgMTI4LCA2NSwgNTAsIDU3LCA1MiwgNjUsIDEyOCwgNjUsIDUwLCAKKyAgICA1NywgNTIsIDEyOCwgNjUsIDUwLCA1NywgNTEsIDEyOCwgNjUsIDUwLCA1NywgNTAsIDEyOCwgNjUsIDUwLCA1NywgNDksIAorICAgIDEyOCwgNjUsIDUwLCA1NywgNDgsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCAxMjgsIAorICAgIDY1LCA1MCwgNTYsIDU2LCAxMjgsIDY1LCA1MCwgNTYsIDU1LCAxMjgsIDY1LCA1MCwgNTYsIDU0LCAxMjgsIDY1LCA1MCwgCisgICAgNTYsIDUzLCAxMjgsIDY1LCA1MCwgNTYsIDUyLCAxMjgsIDY1LCA1MCwgNTYsIDUxLCAxMjgsIDY1LCA1MCwgNTYsIDUwLCAKKyAgICAxMjgsIDY1LCA1MCwgNTYsIDQ5LCAxMjgsIDY1LCA1MCwgNTYsIDQ4LCAxMjgsIDY1LCA1MCwgNTUsIDU3LCAxMjgsIDY1LCAKKyAgICA1MCwgNTUsIDU2LCAxMjgsIDY1LCA1MCwgNTUsIDU1LCAxMjgsIDY1LCA1MCwgNTUsIDU0LCAxMjgsIDY1LCA1MCwgNTUsIAorICAgIDUzLCAxMjgsIDY1LCA1MCwgNTUsIDUyLCAxMjgsIDY1LCA1MCwgNTUsIDUxLCAxMjgsIDY1LCA1MCwgNTUsIDUwLCAxMjgsIAorICAgIDY1LCA1MCwgNTUsIDQ5LCAxMjgsIDY1LCA1MCwgNTUsIDQ4LCAxMjgsIDY1LCA1MCwgNTQsIDU3LCAxMjgsIDY1LCA1MCwgCisgICAgNTQsIDU2LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgMTI4LCA2NSwgNTAsIDU0LCAKKyAgICA1NCwgMTI4LCA2NSwgNTAsIDU0LCA1MywgMTI4LCA2NSwgNTAsIDU0LCA1MiwgMTI4LCA2NSwgNTAsIDU0LCA1MSwgMTI4LCAKKyAgICA2NSwgNTAsIDU0LCA1MCwgMTI4LCA2NSwgNTAsIDU0LCA0OSwgMTI4LCA2NSwgNTAsIDU0LCA0OCwgMTI4LCA2NSwgNTAsIAorICAgIDUzLCA1NywgMTI4LCA2NSwgNTAsIDUzLCA1NiwgMTI4LCA2NSwgNTAsIDUzLCA1NSwgMTI4LCA2NSwgNTAsIDUzLCA1NCwgCisgICAgMTI4LCA2NSwgNTAsIDUzLCA1MywgMTI4LCA2NSwgNTAsIDUzLCA1MiwgMTI4LCA2NSwgNTAsIDUzLCA1MSwgMTI4LCA2NSwgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA2NSwgNTAsIDUzLCA0OSwgMTI4LCA2NSwgNTAsIDUzLCA0OCwgMTI4LCA2NSwgNTAsIDUyLCAKKyAgICA1NywgMTI4LCA2NSwgNTAsIDUyLCA1NiwgMTI4LCA2NSwgNTAsIDUyLCA1NSwgMTI4LCA2NSwgNTAsIDUyLCA1NCwgMTI4LCAKKyAgICA2NSwgNTAsIDUyLCA1MywgMTI4LCA2NSwgNTAsIDUyLCA1MiwgMTI4LCA2NSwgNTAsIDUyLCA1MSwgMTI4LCA2NSwgNTAsIAorICAgIDUyLCA1MCwgMTI4LCA2NSwgNTAsIDUyLCA0OSwgMTI4LCA2NSwgNTAsIDUyLCA0OCwgMTI4LCA2NSwgNTAsIDUxLCA1NywgCisgICAgMTI4LCA2NSwgNTAsIDUxLCA1NiwgMTI4LCA2NSwgNTAsIDUxLCA1NSwgMTI4LCA2NSwgNTAsIDUxLCA1NCwgMTI4LCA2NSwgCisgICAgNTAsIDUxLCA1MywgMTI4LCA2NSwgNTAsIDUxLCA1MiwgMTI4LCA2NSwgNTAsIDUxLCA1MSwgMTI4LCA2NSwgNTAsIDUxLCAKKyAgICA1MCwgMTI4LCA2NSwgNTAsIDUxLCA0OSwgMTI4LCA2NSwgNTAsIDUxLCA0OCwgMTI4LCA2NSwgNTAsIDUwLCA1NywgMTI4LCAKKyAgICA2NSwgNTAsIDUwLCA1NiwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDEyOCwgNjUsIAorICAgIDUwLCA1MCwgNTQsIDEyOCwgNjUsIDUwLCA1MCwgNTMsIDEyOCwgNjUsIDUwLCA1MCwgNTIsIDEyOCwgNjUsIDUwLCA1MCwgCisgICAgNTEsIDEyOCwgNjUsIDUwLCA1MCwgNTAsIDEyOCwgNjUsIDUwLCA1MCwgNDksIDEyOCwgNjUsIDUwLCA1MCwgNDgsIDEyOCwgCisgICAgNjUsIDUwLCA0OSwgNTcsIDEyOCwgNjUsIDUwLCA0OSwgNTYsIDEyOCwgNjUsIDUwLCA0OSwgNTUsIDEyOCwgNjUsIDUwLCAKKyAgICA0OSwgNTQsIDY1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCAxMjgsIDY1LCA1MCwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNTAsIAorICAgIDQ5LCA1MywgMTI4LCA2NSwgNTAsIDQ5LCA1MiwgMTI4LCA2NSwgNTAsIDQ5LCA1MSwgMTI4LCA2NSwgNTAsIDQ5LCA1MCwgCisgICAgMTI4LCA2NSwgNTAsIDQ5LCA0OSwgMTI4LCA2NSwgNTAsIDQ5LCA0OCwgMTI4LCA2NSwgNTAsIDQ4LCA1NywgNjUsIDEyOCwgCisgICAgNjUsIDUwLCA0OCwgNTcsIDEyOCwgNjUsIDUwLCA0OCwgNTYsIDEyOCwgNjUsIDUwLCA0OCwgNTUsIDY1LCAxMjgsIDY1LCAKKyAgICA1MCwgNDgsIDU1LCAxMjgsIDY1LCA1MCwgNDgsIDU0LCAxMjgsIDY1LCA1MCwgNDgsIDUzLCAxMjgsIDY1LCA1MCwgNDgsIAorICAgIDUyLCAxMjgsIDY1LCA1MCwgNDgsIDUxLCAxMjgsIDY1LCA1MCwgNDgsIDUwLCA2NiwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgCisgICAgNjUsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDEyOCwgNjUsIDUwLCA0OCwgNDksIDEyOCwgNjUsIDUwLCA0OCwgNDgsIDEyOCwgCisgICAgNjUsIDQ5LCA1NywgNTcsIDEyOCwgNjUsIDQ5LCA1NywgNTYsIDEyOCwgNjUsIDQ5LCA1NywgNTUsIDEyOCwgNjUsIDQ5LCAKKyAgICA1NywgNTQsIDEyOCwgNjUsIDQ5LCA1NywgNTMsIDEyOCwgNjUsIDQ5LCA1NywgNTIsIDEyOCwgNjUsIDQ5LCA1NywgNTEsIAorICAgIDEyOCwgNjUsIDQ5LCA1NywgNTAsIDEyOCwgNjUsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDQ5LCA1NywgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA1NiwgNTcsIDEyOCwgNjUsIDQ5LCA1NiwgNTYsIDEyOCwgNjUsIDQ5LCA1NiwgNTUsIDEyOCwgNjUsIDQ5LCA1NiwgCisgICAgNTQsIDEyOCwgNjUsIDQ5LCA1NiwgNTMsIDEyOCwgNjUsIDQ5LCA1NiwgNTIsIDEyOCwgNjUsIDQ5LCA1NiwgNTEsIDEyOCwgCisgICAgNjUsIDQ5LCA1NiwgNTAsIDEyOCwgNjUsIDQ5LCA1NiwgNDksIDEyOCwgNjUsIDQ5LCA1NiwgNDgsIDEyOCwgNjUsIDQ5LCAKKyAgICA1NSwgNTcsIDEyOCwgNjUsIDQ5LCA1NSwgNTYsIDEyOCwgNjUsIDQ5LCA1NSwgNTUsIDEyOCwgNjUsIDQ5LCA1NSwgNTQsIAorICAgIDEyOCwgNjUsIDQ5LCA1NSwgNTMsIDEyOCwgNjUsIDQ5LCA1NSwgNTIsIDEyOCwgNjUsIDQ5LCA1NSwgNTEsIDEyOCwgNjUsIAorICAgIDQ5LCA1NSwgNTAsIDEyOCwgNjUsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDQ5LCA1NSwgNDgsIDEyOCwgNjUsIDQ5LCA1NCwgCisgICAgNTcsIDEyOCwgNjUsIDQ5LCA1NCwgNTYsIDEyOCwgNjUsIDQ5LCA1NCwgNTUsIDEyOCwgNjUsIDQ5LCA1NCwgNTQsIDEyOCwgCisgICAgNjUsIDQ5LCA1NCwgNTMsIDEyOCwgNjUsIDQ5LCA1NCwgNTIsIDEyOCwgNjUsIDQ5LCA1NCwgNTEsIDEyOCwgNjUsIDQ5LCAKKyAgICA1NCwgNTAsIDEyOCwgNjUsIDQ5LCA1NCwgNDksIDEyOCwgNjUsIDQ5LCA1NCwgNDgsIDEyOCwgNjUsIDQ5LCA1MywgNTcsIAorICAgIDEyOCwgNjUsIDQ5LCA1MywgNTYsIDEyOCwgNjUsIDQ5LCA1MywgNTUsIDEyOCwgNjUsIDQ5LCA1MywgNTQsIDEyOCwgNjUsIAorICAgIDQ5LCA1MywgNTMsIDEyOCwgNjUsIDQ5LCA1MywgNTIsIDEyOCwgNjUsIDQ5LCA1MywgNTEsIDEyOCwgNjUsIDQ5LCA1MywgCisgICAgNTAsIDEyOCwgNjUsIDQ5LCA1MywgNDksIDEyOCwgNjUsIDQ5LCA1MywgNDgsIDEyOCwgNjUsIDQ5LCA1MiwgNTcsIDEyOCwgCisgICAgNjUsIDQ5LCA1MiwgNTYsIDEyOCwgNjUsIDQ5LCA1MiwgNTUsIDEyOCwgNjUsIDQ5LCA1MiwgNTQsIDEyOCwgNjUsIDQ5LCAKKyAgICA1MiwgNTMsIDEyOCwgNjUsIDQ5LCA1MiwgNTIsIDEyOCwgNjUsIDQ5LCA1MiwgNTEsIDEyOCwgNjUsIDQ5LCA1MiwgNTAsIAorICAgIDEyOCwgNjUsIDQ5LCA1MiwgNDksIDEyOCwgNjUsIDQ5LCA1MiwgNDgsIDEyOCwgNjUsIDQ5LCA1MSwgNTcsIDEyOCwgNjUsIAorICAgIDQ5LCA1MSwgNTYsIDEyOCwgNjUsIDQ5LCA1MSwgNTUsIDEyOCwgNjUsIDQ5LCA1MSwgNTQsIDEyOCwgNjUsIDQ5LCA1MSwgCisgICAgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNTEsIDUzLCAxMjgsIDY1LCA0OSwgNTEsIDUyLCAxMjgsIDY1LCA0OSwgNTEsIDUxLCAKKyAgICAxMjgsIDY1LCA0OSwgNTEsIDUwLCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCA2NywgMTI4LCA2NSwgNDksIDUxLCA0OSwgMTI4LCAKKyAgICA2NSwgNDksIDUxLCA0OCwgMTI4LCA2NSwgNDksIDUwLCA1NywgMTI4LCA2NSwgNDksIDUwLCA1NiwgMTI4LCA2NSwgNDksIAorICAgIDUwLCA1NSwgMTI4LCA2NSwgNDksIDUwLCA1NCwgMTI4LCA2NSwgNDksIDUwLCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA1MCwgCisgICAgNTMsIDEyOCwgNjUsIDQ5LCA1MCwgNTIsIDEyOCwgNjUsIDQ5LCA1MCwgNTEsIDEyOCwgNjUsIDQ5LCA1MCwgNTAsIDEyOCwgCisgICAgNjUsIDQ5LCA1MCwgNDksIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNDksIDU3LCAxMjgsIDY1LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA0OSwgNDksIDU1LCAxMjgsIDY1LCA0OSwgNDksIAorICAgIDU0LCAxMjgsIDY1LCA0OSwgNDksIDUzLCA2NSwgMTI4LCA2NSwgNDksIDQ5LCA1MywgMTI4LCA2NSwgNDksIDQ5LCA1MiwgCisgICAgMTI4LCA2NSwgNDksIDQ5LCA1MSwgMTI4LCA2NSwgNDksIDQ5LCA1MCwgMTI4LCA2NSwgNDksIDQ5LCA0OSwgMTI4LCA2NSwgCisgICAgNDksIDQ5LCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCAxMjgsIDY1LCAKKyAgICA0OSwgNDgsIDU3LCAxMjgsIDY1LCA0OSwgNDgsIDU2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NywgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDU0LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTMsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY3LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NiwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1MiwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDEyOCwgNjUsIDQ5LCA0OCwgNTEsIDEyOCwgNjUsIDQ5LCA0OCwgCisgICAgNTAsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUwLCAxMjgsIDY1LCA0OSwgNDgsIDQ5LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCAKKyAgICA0OSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIAorICAgIDY1LCA0OSwgNDgsIDQ4LCAxMjgsIDY1LCA0OCwgNTcsIDU3LCAxMjgsIDY1LCA0OCwgNTcsIDU2LCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDU3LCA1NiwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDEyOCwgNjUsIDQ4LCAKKyAgICA1NywgNTQsIDEyOCwgNjUsIDQ4LCA1NywgNTMsIDEyOCwgNjUsIDQ4LCA1NywgNTIsIDEyOCwgNjUsIDQ4LCA1NywgNTEsIAorICAgIDEyOCwgNjUsIDQ4LCA1NywgNTAsIDEyOCwgNjUsIDQ4LCA1NywgNDksIDEyOCwgNjUsIDQ4LCA1NywgNDgsIDEyOCwgNjUsIAorICAgIDQ4LCA1NiwgNTcsIDEyOCwgNjUsIDQ4LCA1NiwgNTYsIDEyOCwgNjUsIDQ4LCA1NiwgNTUsIDEyOCwgNjUsIDQ4LCA1NiwgCisgICAgNTQsIDEyOCwgNjUsIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDQ4LCA1NiwgNTIsIDEyOCwgNjUsIDQ4LCA1NiwgNTEsIDEyOCwgCisgICAgNjUsIDQ4LCA1NiwgNTAsIDEyOCwgNjUsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDQ4LCA1NiwgNDgsIDEyOCwgNjUsIDQ4LCAKKyAgICA1NSwgNTcsIDEyOCwgNjUsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDQ4LCA1NSwgNTUsIDEyOCwgNjUsIDQ4LCA1NSwgNTQsIAorICAgIDEyOCwgNjUsIDQ4LCA1NSwgNTMsIDEyOCwgNjUsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDQ4LCA1NSwgNTEsIDEyOCwgNjUsIAorICAgIDQ4LCA1NSwgNTAsIDEyOCwgNjUsIDQ4LCA1NSwgNDksIDEyOCwgNjUsIDQ4LCA1NSwgNDgsIDEyOCwgNjUsIDQ4LCA1NCwgCisgICAgNTcsIDEyOCwgNjUsIDQ4LCA1NCwgNTYsIDEyOCwgNjUsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDQ4LCA1NCwgNTIsIDEyOCwgNjUsIDQ4LCA1NCwgNTEsIDEyOCwgNjUsIAorICAgIDQ4LCA1NCwgNTAsIDEyOCwgNjUsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDQ4LCA1NCwgNDgsIDEyOCwgNjUsIDQ4LCA1MywgCisgICAgNTcsIDEyOCwgNjUsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDQ4LCA1MywgNTUsIDEyOCwgNjUsIDQ4LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDQ4LCA1MywgNTIsIDEyOCwgNjUsIDQ4LCA1MywgNTEsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MywgNTAsIDEyOCwgNjUsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDQ4LCA1MywgNDgsIDEyOCwgNjUsIDQ4LCA1MiwgNTcsIAorICAgIDEyOCwgNjUsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDQ4LCA1MiwgNTUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDY2LCAxMjgsIAorICAgIDY1LCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNDgsIDUyLCA1MywgNjUsIDEyOCwgCisgICAgNjUsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDQ4LCA1MiwgNTIsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTIsIDUxLCAxMjgsIDY1LCA0OCwgNTIsIDUwLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgMTI4LCA2NSwgNDgsIAorICAgIDUyLCA0OSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDQ4LCA1MiwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgCisgICAgNTIsIDQ4LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCA2NSwgMTI4LCA2NSwgNDgsIDUxLCA1NywgMTI4LCA2NSwgNDgsIDUxLCAKKyAgICA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgNDgsIDUxLCA1MywgMTI4LCAKKyAgICA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1MCwgNTYsIDY2LCAxMjgsIDY1LCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgCisgICAgNjUsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjYsIAorICAgIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDUsIDY5LCA4NSwgCisgICAgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIDg5LCA4NSwgMTk2LCA0NSwgCisgICAgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgNzIsIDY1LCAyMTAsIDQ1LCAKKyAgICA2NywgNzIsIDY1LCA3NiwgMTI4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbGV4aWNvbl9vZmZzZXRbXSA9IHsKLSAgICAwLCAwLCA2LCAxMCwgMTQsIDIyLCAyNywgMzQsIDQ0LCA0OSwgNTgsIDY0LCA2NiwgNjksIDgxLCA4OSwgMTAyLCAxMDgsIAotICAgIDExMywgMTE4LCAxMjYsIDEzNSwgMTQ2LCAxNTEsIDE1NiwgMTYxLCAxNjQsIDE2OCwgMTc3LCAxODMsIDE4OSwgMTk0LCAKLSAgICAyMDEsIDIwOSwgMjE3LCAyMTgsIDIyMSwgMjI5LCAxNjUsIDIzNSwgMjQ0LCAyNTEsIDI2MSwgMjY3LCAyNzQsIDI3OSwgCi0gICAgMjgyLCAyODcsIDI5MywgMjk2LCAzMDAsIDMwNSwgMzExLCAzMTcsIDMyMiwgMzI3LCAzMzMsIDMzOSwgMzQ4LCAzNTUsIAotICAgIDM2MiwgMzcxLCAzNzYsIDM4MSwgMzgzLCAzOTEsIDM5OSwgNDAwLCA0MDgsIDQxMCwgNDE3LCA0MjAsIDQyNiwgNDMzLCAKLSAgICAzMzEsIDQzOCwgNDQwLCA0NDIsIDQ0OSwgNDUxLCA0NTYsIDQ2NCwgNDcxLCA0NzYsIDQ4MCwgNDg2LCA0OTEsIDUwMSwgCi0gICAgNTA2LCA1MTMsIDUxNiwgNTI0LCA1MjgsIDUzOCwgNTQ1LCA1NTQsIDU2MSwgNTcwLCA1NzcsIDU4MCwgNTg0LCA1OTIsIAotICAgIDU5OCwgNjExLCA2MTgsIDYyMiwgNjI2LCA2MjcsIDYzNiwgNjQwLCA2NDksIDY1NSwgNjU5LCA2NjEsIDY2NiwgNjc0LCAKLSAgICA2NzgsIDY4NiwgNjkxLCA2OTQsIDcwMCwgNzAzLCA3MDcsIDcxMiwgNzIwLCA3MjMsIDczMCwgNzM1LCA3NDQsIDc1MywgCi0gICAgNzYxLCA3NjksIDc3MywgNzc5LCA3ODcsIDc5NCwgNzk3LCA4MDcsIDgxMSwgODE1LCA4MjYsIDgzMywgODQwLCA4NDQsIAotICAgIDg0OCwgODU0LCA4NDIsIDg2MywgODY5LCA4NzQsIDg3OSwgODgzLCA4ODYsIDg4OSwgODk0LCA5MDMsIDkxMSwgOTE2LCAKLSAgICA2NTgsIDU3NSwgOTIxLCA5MjQsIDkzMCwgOTM0LCA5MzgsIDk0NywgOTUzLCA5NjAsIDk2OSwgOTc2LCA5ODksIDk5NCwgCi0gICAgOTk4LCAxMDA2LCAxMDA5LCAxMDE1LCAxMDIxLCAxMDMwLCAxMDM3LCAxMDQ1LCAxMDUyLCAxMDYyLCAxMDY5LCAxMDc3LCAKLSAgICAxMDg2LCAxMDkwLCAxMDkzLCAxMTAwLCAyMSwgMTEwNCwgMTExMywgMTEyMSwgMTEyOCwgMTEzMSwgMTEzNiwgMTEzOCwgCi0gICAgMTE0MiwgMTE1MSwgMTE1NiwgMTE1OSwgMTE2NSwgMTE3MiwgMTE3NSwgMTE4MCwgMTE4NSwgMTE5MSwgMTE5NiwgMTIwMSwgCi0gICAgMTIwNiwgMTIxMCwgMTIxNSwgMTIyMSwgMTIyNiwgMTIzMSwgMTIzNSwgMTI0MSwgMTI0NiwgMTI1MSwgMTI1NiwgMTI2MCwgCi0gICAgMTI2NSwgMTI3MCwgMTI3NSwgMTI4MSwgMTI4NywgMTI5MywgMTI5OCwgMTMwMiwgMTMwNywgMTMxMiwgMTMxNywgMTMyMSwgCi0gICAgMTMyNiwgMTMzMSwgMTMzNiwgMTM0MSwgMTE3NiwgMTE4MSwgMTE4NiwgMTE5MiwgMTE5NywgMTM0NSwgMTIwNywgMTM1MSwgCi0gICAgMTM1NiwgMTM2MSwgMTM2OCwgMTM3MiwgMTM3NSwgMTM4NCwgMTIxMSwgMTM4OCwgMTIxNiwgMTIyMiwgMTIyNywgMTM5MiwgCi0gICAgMTM5NywgMTQwMiwgMTQwNiwgMTQxMCwgMTQxNiwgMTQyMCwgMTIzMiwgMTQyMywgMTQyNSwgMTI0MiwgMTQzMCwgMTQzNCwgCi0gICAgMTI0NywgMTQ0MCwgMTI1MiwgMTQ0NCwgMTQ0OCwgMTI1NywgMTQ1MiwgMTQ1NywgMTQ2MSwgMTQ2NCwgMTQ2OCwgMTI2MSwgCi0gICAgMTI2NiwgMTQ3MywgMTQ3OSwgMTI3MSwgMTQ5MSwgMTQ5NywgMTUwMywgMTUwOSwgMTI3NiwgMTI4OCwgMTI5NCwgMTUxMywgCi0gICAgMTUxNywgMTUyMSwgMTUyNCwgMTI5OSwgMTUyOCwgMTUzMCwgMTUzNSwgMTU0MCwgMTU0NiwgMTU1MSwgMTU1NiwgMTU2MCwgCi0gICAgMTU2NSwgMTU3MCwgMTU3NSwgMTU4MCwgMTU4NiwgMTU5MSwgMTU5NiwgMTYwMiwgMTYwOCwgMTYxMywgMTYxNywgMTYyMiwgCi0gICAgMTYyNywgMTYzMiwgMTYzNywgMTY0MiwgMTY0NiwgMTY1NCwgMTY1OSwgMTY2MywgMTY2OCwgMTY3MywgMTY3OCwgMTY4MywgCi0gICAgMTY4NywgMTY5MCwgMTY5NywgMTcwMiwgMTcwNywgMTcxMiwgMTcxNywgMTcyMywgMTcyOCwgMTczMiwgMTMwMywgMTczNSwgCi0gICAgMTc0MCwgMTc0NSwgMTMwOCwgMTc0OSwgMTc1MywgMTc2MCwgMTMxMywgMTc2NywgMTMxOCwgMTc3MSwgMTc3MywgMTc3OCwgCi0gICAgMTc4NCwgMTMyMiwgMTc4OSwgMTc5OCwgMTMyNywgMTgwMywgMTgwOSwgMTgxNCwgMTMzMiwgMTgxOSwgMTgyNCwgMTgyNywgCi0gICAgMTgzMiwgMTgzNiwgMTg0MCwgMTg0NCwgMTg0NywgMTg1MSwgMTMzNywgMTg1NiwgMTM0MiwgMTg2MCwgMTg2MiwgMTg2OCwgCi0gICAgMTg3NCwgMTg4MCwgMTg4NiwgMTg5MiwgMTg5OCwgMTkwNCwgMTkxMCwgMTkxNSwgMTkyMSwgMTkyNywgMTkzMywgMTkzOSwgCi0gICAgMTk0NSwgMTk1MSwgMTk1NywgMTk2MywgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NCwgMTk4OSwgMTk5NCwgMTk5OSwgMjAwNCwgCi0gICAgMjAwOSwgMjAxNCwgMjAxOSwgMjAyNSwgMjAzMCwgMjAzNiwgMjA0MSwgMjA0NywgMjA1MywgMjA1OCwgMjA2NCwgMjA3MCwgCi0gICAgMjA3NiwgMjA4MiwgMjA4NywgMjA5MiwgMjA5NCwgMjA5NSwgMjA5OSwgMjEwMywgMjEwOCwgMjExMiwgMjExNiwgMjEyMCwgCi0gICAgMjEyNSwgMjEyOSwgMjEzMiwgMjEzNywgMjE0MSwgMjE0NiwgMjE1MCwgMjE1NCwgMjE1OSwgMjE2MywgMjE2NiwgMjE3MCwgCi0gICAgMjE3NiwgMjE5MCwgMjE5NCwgMjE5OCwgMjIwMiwgMjIwNSwgMjIxMCwgMjIxNCwgMjIxOCwgMjIyMSwgMjIyNSwgMjIzMCwgCi0gICAgMjIzNSwgMjI0MCwgMjI0NSwgMjI0OSwgMjI1MywgMjI1NywgMjI2MSwgMjI2NiwgMjI3MCwgMjI3NSwgMjI3OSwgMjI4NCwgCi0gICAgMjI5MCwgMjI5NywgMjMwMywgMjMwOCwgMjMxMywgMjMxOCwgMjMyNCwgMjMyOSwgMjMzNSwgMjM0MCwgMjM0MywgMjM0NSwgCi0gICAgMTE5MywgMjM0OSwgMjM1NiwgMjM2NCwgMjM3NCwgMjM4MywgMjM5NywgMjQwMSwgMjQwNSwgMjQxMCwgMjQyMywgMjQzMSwgCi0gICAgMjQzNSwgMjQ0MCwgMjQ0NCwgMjQ0NywgMjQ1MSwgMjQ1NSwgMjQ2MCwgMjQ2NSwgMjQ3MCwgMjQ3NCwgMjQ3NywgMjQ4MSwgCi0gICAgMjQ4OCwgMjQ5NSwgMjUwMSwgMjUwNiwgMjUxMSwgMjUxNywgMjUyMywgMjUyOCwgMjUzMSwgMTc3NSwgMjUzMywgMjUzOSwgCi0gICAgMjU0MywgMjU0OCwgMjU1MiwgMjU1NiwgMTY5MywgMTc4NiwgMjU2MSwgMjU2NSwgMjU2OCwgMjU3MywgMjU3OCwgMjU4MywgCi0gICAgMjU4OCwgMjU5MiwgMjU5OSwgMjYwNCwgMjYwNywgMjYxNCwgMjYyMCwgMjYyNCwgMjYyOCwgMjYzMiwgMjYzNywgMjY0NCwgCi0gICAgMjY0OSwgMjY1NCwgMjY2MSwgMjY2NywgMjY3MywgMjY3OSwgMjY5MywgMjcxMCwgMjcyNSwgMjc0MCwgMjc0OSwgMjc1NCwgCi0gICAgMjc1OCwgMjc2MywgMjc2OCwgMjc3MiwgMjc4NCwgMjc5MSwgMjc5NywgMjI5MywgMjgwMywgMjgxMCwgMjgxNiwgMjgyMCwgCi0gICAgMjgyMywgMjgzMCwgMjgzNiwgMjg0MSwgMjg0NSwgMjg1MCwgMjg1NCwgMjg1OCwgMjExNywgMjg2MiwgMjg2NywgMjg3MiwgCi0gICAgMjg3NiwgMjg4MSwgMjg4OSwgMjg5MywgMjg5OCwgMjkwMiwgMjkwNiwgMjkxMCwgMjkxNSwgMjkyMCwgMjkyNSwgMjkyOSwgCi0gICAgMjkzNCwgMjkzOSwgMjk0MywgMjk0OCwgMjk1MiwgMjk1NSwgMjk1OSwgMjk2MywgMjk3MSwgMjk3NiwgMjk4MCwgMjk4NCwgCi0gICAgMjk5MCwgMjk5OSwgMzAwMywgMzAwNywgMzAxMywgMzAxOCwgMzAyNSwgMzAyOSwgMzAzOSwgMzA0MywgMzA0NywgMzA1MiwgCi0gICAgMzA1NiwgMzA2MSwgMzA2NywgMzA3MiwgMzA3NiwgMzA4MCwgMzA4NCwgMjQ5MSwgMzA5MiwgMzA5NywgMzEwMywgMzEwOCwgCi0gICAgMzExMiwgMzExNywgMzEyMiwgMzEyNiwgMzEzMiwgMzEzNywgMjEyMSwgMzE0MywgMzE0OSwgMzE1NCwgMzE1OSwgMzE2NCwgCi0gICAgMzE2OSwgMzE3NCwgMzE3OSwgMzE4NCwgMzE4OSwgMzE5NCwgMzIwMCwgMzIwNSwgMTIwOCwgMTAxLCAzMjExLCAzMjE1LCAKLSAgICAzMjE5LCAzMjIzLCAzMjI4LCAzMjMyLCAzMjM2LCAzMjQyLCAzMjQ3LCAzMjUxLCAzMjU1LCAzMjYwLCAzMjY1LCAzMjY5LCAKLSAgICAzMjc0LCAzMjc4LCAzMjgxLCAzMjg1LCAzMjkwLCAzMjk0LCAzMjk5LCAzMzAzLCAzMzA2LCAzMzEwLCAzMzE0LCAzMzE5LCAKLSAgICAzMzIzLCAzMzI2LCAzMzM5LCAzMzQzLCAzMzQ3LCAzMzUxLCAzMzU2LCAzMzYwLCAzMzY0LCAzMzY3LCAzMzcxLCAzMzc1LCAKLSAgICAzMzgwLCAzMzg0LCAzMzg5LCAzMzk0LCAzMzk5LCAzNDAzLCAzNDA4LCAzNDExLCAzNDE0LCAzNDE5LCAzNDI1LCAzNDI5LCAKLSAgICAzNDMzLCAzNDM2LCAzNDQxLCAzNDQ1LCAzNDUwLCAzNDU0LCAzNDU4LCAzNDYxLCAzNDY3LCAzNDcyLCAzNDc3LCAzNDgzLCAKLSAgICAzNDg4LCAzNDkzLCAzNDk5LCAzNTA1LCAzNTEwLCAzNTE1LCAzNTIwLCAzNTI1LCAxMTQwLCA1NzksIDM1MjgsIDM1MzEsIAotICAgIDM1MzYsIDM1NDAsIDM1NDQsIDM1NDgsIDM1NTIsIDM1NTUsIDM1NTksIDM1NjQsIDM1NjksIDM1NzMsIDM1NzgsIDM1ODIsIAotICAgIDM1ODcsIDM1OTEsIDM1OTUsIDM1OTksIDM2MDUsIDM2MTEsIDM2MTQsIDM2MTcsIDEzOSwgMzYyMywgMzYyOCwgMzYzNywgCi0gICAgMzY0NSwgMzY1NCwgMzY2MSwgMzY2NywgMzY3NCwgMzY3OSwgMzY4MywgMzY4NywgMzY5NSwgMzcwMiwgMzcwNywgMzcxNCwgCi0gICAgMzcxOSwgMzcyMywgMzczMywgMzczNywgMzc0MSwgMzc0NiwgMzc1MSwgMzc2MSwgMjEzMywgMzc2NiwgMzc3MCwgMzc3MywgCi0gICAgMzc3OSwgMzc4NCwgMzc5MCwgMzc5NiwgMzgwMSwgMzgwOCwgMzgxMiwgMzgxNiwgNjM3LCA3MDEsIDEzNjksIDM4MjAsIAotICAgIDM4MjcsIDM4MzQsIDM4NDAsIDM4NDUsIDM4NTIsIDM4NTksIDM4NjQsIDM4NzAsIDM4NzYsIDM4ODEsIDM4ODUsIDM4OTEsIAotICAgIDM4OTgsIDM5MDMsIDM5MDcsIDIxNDIsIDM5MTEsIDM5MTksIDM5MjUsIDM5MzMsIDczOSwgMzkzOSwgMzk0NywgMzk1OCwgCi0gICAgMzk2MiwgMzk3MiwgMjE0NywgMzk3OCwgMzk4MywgMzk5OCwgNDAwNCwgNDAxMSwgNDAyMSwgNDAyNywgNDAzMiwgNDAzOCwgCi0gICAgNDA0NCwgNDA0NywgNDA1MCwgNDA1NCwgNDA1OSwgNDA2NiwgNDA3MSwgNDA3NSwgNDA3OSwgNDA4MywgNDA4NywgNDA5MiwgCi0gICAgNDA5OCwgNDEwOSwgNDExMywgMzI4NiwgNDExOCwgNDEzMCwgNDEzNiwgNDE0NCwgNDE0OCwgNDE1MywgMTU2MiwgNDE2MCwgCi0gICAgNDE2MywgNDE2NiwgNDE3MCwgNDE3MywgNDE3OSwgNDE4MywgNDE5NywgNDIwMSwgNDIwNCwgNDIwOCwgNDIxNCwgNDIyMCwgCi0gICAgNDIyNSwgNDIyOSwgNDIzMywgNDIzOSwgNDI1MCwgNDI1NiwgNDI2MSwgNDI2NywgNDI3MSwgNDI3OSwgNDI5MSwgNDMwMSwgCi0gICAgNDMwNywgNDMxMiwgNDMyMSwgNDMyOSwgNDMzNiwgNDM0MiwgNDM0NiwgNDM1MiwgNDM2MSwgNDM3MCwgNDM3NCwgNDM4MywgCi0gICAgNDM4OCwgNDM5MiwgNDM5NywgNDQwMSwgNDQwOSwgNDQxNSwgNDQxOSwgNDQyNCwgNDQyOCwgNDQzNCwgMjE1NSwgMTM4NSwgCi0gICAgNDQ0MCwgNDQ0NSwgNDQ1MSwgNDQ1NiwgNDQ2MSwgNDQ2NiwgNDQ3MSwgNDQ3NiwgNDQ4MSwgNDQ4NywgNDQ5MiwgNDQ5OCwgCi0gICAgNDUwMywgNDUwOCwgNDUxMywgNDUxOSwgNDUyNCwgNDUyOSwgNDUzNCwgNDUzOSwgNDU0NSwgNDU1MCwgNDU1NiwgNDU2MSwgCi0gICAgNDU2NiwgNDU3MSwgNDU3NiwgNDU4MSwgNDU4NiwgNDU5MiwgNDU5NywgNDYwMiwgMjkxLCAzMjEsIDQ2MDcsIDQ2MTMsIAotICAgIDQ2MTcsIDQ2MjEsIDQ2MjYsIDQ2MzAsIDQ2MzQsIDQ2MzcsIDQ2NDEsIDQ2NDUsIDQ2NDksIDQ2NTMsIDQ2NTcsIDQ2NjIsIAotICAgIDQ2NjYsIDQ2NzAsIDQ2NzYsIDQ0MzcsIDQ2ODEsIDQ2ODUsIDQ2ODgsIDQ2OTMsIDQ2OTgsIDQ3MDMsIDQ3MDgsIDQ3MTMsIAotICAgIDQ3MTgsIDQ3MjMsIDQ3MjgsIDQ3MzMsIDQ3MzgsIDQ3NDIsIDQ3NDcsIDQ3NTIsIDQ3NTcsIDQ3NjIsIDQ3NjcsIDQ3NzIsIAotICAgIDQ3NzcsIDQ3ODIsIDQ3ODcsIDQ3OTIsIDQ3OTYsIDQ4MDEsIDQ4MDYsIDQ4MTEsIDQ4MTYsIDQ4MjEsIDQ4MjYsIDQ4MzEsIAotICAgIDQ4MzYsIDQ4NDEsIDQ4NDYsIDQ4NTAsIDQ4NTUsIDQ4NjAsIDQ4NjUsIDQ4NzAsIDQ4NzUsIDQ4ODAsIDQ4ODUsIDQ4OTAsIAotICAgIDQ4OTUsIDQ5MDAsIDQ5MDQsIDQ5MDksIDQ5MTQsIDQ5MTksIDQ5MjQsIDQ5MjksIDQ5MzQsIDQ5MzksIDQ5NDQsIDQ5NDksIAotICAgIDQ5NTQsIDQ5NTgsIDQ5NjMsIDQ5NjgsIDQ5NzMsIDQ5NzgsIDQ5ODMsIDQ5ODgsIDQ5OTMsIDQ5OTgsIDUwMDMsIDUwMDgsIAotICAgIDUwMTIsIDUwMTcsIDUwMjIsIDUwMjcsIDUwMzIsIDUwMzcsIDUwNDIsIDUwNDcsIDUwNTIsIDUwNTcsIDUwNjIsIDUwNjYsIAotICAgIDUwNzEsIDUwNzYsIDUwODEsIDUwODYsIDUwOTIsIDUwOTgsIDUxMDQsIDUxMTAsIDUxMTYsIDUxMjIsIDUxMjgsIDUxMzMsIAotICAgIDUxMzksIDUxNDUsIDUxNTEsIDUxNTcsIDUxNjMsIDUxNjksIDUxNzUsIDUxODEsIDUxODcsIDUxOTMsIDUxOTgsIDUyMDQsIAotICAgIDUyMTAsIDUyMTYsIDUyMjIsIDUyMjgsIDUyMzQsIDUyNDAsIDUyNDYsIDUyNTIsIDUyNTgsIDUyNjMsIDUyNjksIDUyNzUsIAotICAgIDUyODEsIDUyODcsIDUyOTMsIDUyOTksIDUzMDUsIDUzMTEsIDUzMTcsIDUzMjMsIDUzMjgsIDUzMzQsIDUzNDAsIDUzNDYsIAotICAgIDUzNTIsIDUzNTgsIDUzNjQsIDUzNzAsIDUzNzYsIDUzODIsIDUzODgsIDUzOTMsIDUzOTksIDU0MDUsIDU0MTEsIDU0MTcsIAotICAgIDU0MjMsIDU0MjksIDU0MzUsIDU0NDEsIDU0NDcsIDU0NTMsIDU0NTgsIDU0NjIsIDU0NjgsIDU0NzQsIDU0ODAsIDU0ODYsIAotICAgIDU0OTIsIDU0OTgsIDU1MDQsIDU1MTAsIDU1MTYsIDU1MjIsIDU1MjcsIDU1MzMsIDU1MzksIDU1NDUsIDU1NTEsIDU1NTcsIAotICAgIDU1NjMsIDU1NjksIDU1NzUsIDU1ODEsIDU1ODcsIDU1OTIsIDU1OTgsIDU2MDQsIDU2MTAsIDU2MTYsIDU2MjIsIDU2MjgsIAotICAgIDU2MzQsIDU2NDAsIDU2NDYsIDU2NTIsIDU2NTcsIDU2NjMsIDU2NjksIDU2NzUsIDU2ODEsIDU2ODcsIDU2OTMsIDU2OTksIAotICAgIDU3MDUsIDU3MTEsIDU3MTcsIDU3MjIsIDU3MjgsIDU3MzQsIDU3NDAsIDU3NDYsIDU3NTIsIDU3NTgsIDU3NjQsIDU3NzAsIAotICAgIDU3NzYsIDU3ODIsIDU3ODcsIDU3OTMsIDU3OTksIDU4MDUsIDU4MTEsIDU4MTcsIDU4MjMsIDU4MjksIDU4MzUsIDU4NDEsIAotICAgIDU4NDcsIDU4NTIsIDU4NTgsIDU4NjQsIDU4NzAsIDU4NzYsIDU4ODIsIDU4ODgsIDU4OTQsIDU5MDAsIDU5MDYsIDU5MTIsIAotICAgIDU5MTcsIDU5MjMsIDU5MjksIDU5MzUsIDU5NDEsIDU5NDcsIDU5NTMsIDU5NTksIDU5NjUsIDU5NzEsIDU5NzcsIDU5ODIsIAotICAgIDU5ODgsIDU5OTQsIDYwMDAsIDYwMDYsIDYwMTIsIDYwMTgsIDYwMjQsIDYwMzAsIDYwMzYsIDYwNDIsIDYwNDcsIDYwNTMsIAotICAgIDYwNTksIDYwNjUsIDYwNzEsIDYwNzcsIDYwODMsIDYwODksIDYwOTUsIDYxMDEsIDYxMDcsIDYxMTIsIDYxMTYsIDYxMTksIAotICAgIDYxMjYsIDYxMzAsIDYxNDMsIDYxNDcsIDYxNTEsIDYxNTUsIDYxNTgsIDYxNjIsIDYxNjcsIDYxNzEsIDYxNzUsIDYxODEsIAotICAgIDYxODgsIDYxOTksIDYyMDcsIDYyMTQsIDYyMTgsIDYyMjYsIDYyMzUsIDYyNDEsIDYyNTMsIDYyNTgsIDYyNjEsIDYyNjYsIAotICAgIDYyNzAsIDYyODAsIDYyODgsIDYyOTYsIDYzMDIsIDYzMDYsIDYzMTYsIDYzMjYsIDYzMzQsIDYzNDEsIDYzNDgsIDYzNTQsIAotICAgIDYzNjAsIDYzNjcsIDYzNzEsIDYzNzgsIDYzODgsIDYzOTgsIDY0MDYsIDY0MTMsIDY0MTgsIDY0MjIsIDY0MjYsIDY0MzQsIAotICAgIDY0MzgsIDY0NDMsIDY0NTAsIDY0NTgsIDY0NjMsIDY0NjcsIDY0NzIsIDY0NzYsIDY0ODMsIDY0ODgsIDY1MDIsIDY1MDcsIAotICAgIDY1MTIsIDY1MTksIDM1NDEsIDY1MjgsIDY1MzIsIDY1MzcsIDY1NDEsIDY1NDUsIDY1NDgsIDY1NTMsIDY1NTgsIDY1NjcsIAotICAgIDY1NzMsIDY1NzksIDY1ODUsIDY1ODksIDY2MDAsIDY2MTAsIDY2MjUsIDY2NDAsIDY2NTUsIDY2NzAsIDY2ODUsIDY3MDAsIAotICAgIDY3MTUsIDY3MzAsIDY3NDUsIDY3NjAsIDY3NzUsIDY3OTAsIDY4MDUsIDY4MjAsIDY4MzUsIDY4NTAsIDY4NjUsIDY4ODAsIAotICAgIDY4OTUsIDY5MTAsIDY5MjUsIDY5NDAsIDY5NTUsIDY5NzAsIDY5ODUsIDcwMDAsIDcwMTUsIDcwMzAsIDcwNDUsIDcwNjAsIAotICAgIDcwNzUsIDcwOTAsIDcxMDUsIDcxMjAsIDcxMzUsIDcxNTAsIDcxNjUsIDcxODAsIDcxOTUsIDcyMTAsIDcyMjUsIDcyNDAsIAotICAgIDcyNTUsIDcyNzAsIDcyODUsIDczMDAsIDczMTUsIDczMzAsIDczNDUsIDczNTQsIDczNjMsIDczNjgsIDczNzQsIDczODQsIAotICAgIDczODgsIDczOTIsIDczOTcsIDc0MDIsIDc0MTAsIDc0MTQsIDc0MTcsIDc0MjEsIDMwMzQsIDc0MjQsIDc0MjksIDMzMCwgCi0gICAgNTA0LCA3NDM1LCA3NDQzLCA3NDQ3LCA3NDUxLCA3NDU0LCA3NDU4LCA3NDY0LCA3NDY4LCA3NDc2LCA3NDgyLCA3NDg3LCAKLSAgICA3NDk0LCA3NTAyLCA3NTA5LCA3NTE1LCA3NTIwLCA3NTI3LCA3NTMzLCA3NTQxLCA3NTQ1LCA3NTUwLCA3NTYyLCA3NTczLCAKLSAgICA3NTgwLCA3NTg0LCA3NTg4LCA3NTkyLCA3NTk1LCA3NjAxLCAzMzExLCA3NjA1LCA3NjExLCA3NjE2LCA3NjIxLCA3NjI2LCAKLSAgICA3NjMyLCA3NjM3LCA3NjQyLCA3NjQ3LCA3NjUyLCA3NjU4LCA3NjYzLCA3NjY4LCA3Njc0LCA3Njc5LCA3Njg1LCA3NjkwLCAKLSAgICA3Njk2LCA3NzAxLCA3NzA3LCA3NzEyLCA3NzE3LCA3NzIyLCA3NzI3LCA3NzMyLCA3NzM4LCA3NzQzLCA3NzQ4LCA3NzUzLCAKLSAgICA3NzU5LCA3NzY1LCA3NzcxLCA3Nzc3LCA3NzgzLCA3Nzg5LCA3Nzk1LCA3ODAxLCA3ODA3LCA3ODEzLCA3ODE5LCA3ODI1LCAKLSAgICA3ODMwLCA3ODM1LCA3ODQwLCA3ODQ1LCA3ODUwLCA3ODU1LCA3ODYwLCA3ODY1LCA3ODcxLCA3ODc3LCA3ODgyLCA3ODg4LCAKLSAgICA3ODk0LCA3OTAwLCA3OTA1LCA3OTEwLCA3OTE1LCA3OTIwLCA3OTI2LCA3OTMyLCA3OTM3LCA3OTQyLCA3OTQ3LCA3OTUyLCAKLSAgICA3OTU3LCA3OTYzLCA3OTY4LCA3OTc0LCA3OTgwLCA3OTg2LCA3OTkyLCA3OTk4LCA4MDA0LCA4MDEwLCA4MDE2LCA4MDIyLCAKLSAgICAyMTY0LCA3NDUzLCA4MDI3LCA4MDMxLCA4MDM1LCA4MDM4LCA4MDQ1LCA4MDQ4LCA4MDUyLCA4MDYwLCA4MDY1LCA4MDcwLCAKLSAgICA4MDYxLCA4MDc1LCAyMTkxLCA4MDc5LCA4MDg1LCA4MDkxLCA4MDk2LCA4MTAxLCA4MTA4LCA4MTE2LCA4MTIxLCA4MTI1LCAKLSAgICA4MTI4LCA4MTMyLCA4MTM4LCA4MTQ0LCA4MTQ4LCAyMTk5LCA1MjYsIDgxNTEsIDgxNTUsIDgxNjAsIDgxNjYsIDgxNzEsIAotICAgIDgxNzUsIDgxNzgsIDgxODIsIDgxODgsIDgxOTMsIDgxOTcsIDgyMDQsIDgyMDgsIDgyMTIsIDgyMTYsIDg3NiwgOTU4LCAKLSAgICA4MjE5LCA4MjI3LCA4MjM0LCA4MjQwLCA4MjQ3LCA4MjU1LCA4MjYyLCA4MjczLCA4MjgwLCA4Mjg2LCA4MjkxLCA4MzAzLCAKLSAgICAxMjI4LCAxMzkzLCAxMzk4LCA4MzE0LCAxNDAzLCA4MzE4LCA4MzIyLCA4MzMxLCA4MzM5LCA4MzQzLCA4MzUyLCA4MzU4LCAKLSAgICA4MzYzLCA4MzY3LCA4MzczLCA4Mzc4LCA4Mzg1LCAyNzQ1LCA4MzkyLCA4Mzk2LCA4NDA1LCA4NDE0LCA4NDIzLCA4NDMyLCAKLSAgICA4NDM4LCA4NDQzLCA4NDQ4LCA4NDU5LCA4NDcxLCA4NDc2LCA4NDg0LCAyMjUwLCA4NDg4LCA4NDkwLCA4NDk1LCA4NDk5LCAKLSAgICA4NTA4LCA4NTE2LCAxNDA3LCAxNTksIDM1ODMsIDM1ODgsIDg1MjIsIDg1MjYsIDg1MzUsIDg1NDEsIDg1NDYsIDg1NDksIAotICAgIDg1NTgsIDM1OTIsIDI3MzcsIDg1NjQsIDg1NzIsIDg1NzYsIDg1ODAsIDg1ODQsIDIyNjcsIDg1ODgsIDg1OTMsIDg2MDAsIAotICAgIDg2MDYsIDg2MTIsIDg2MTUsIDg2MTcsIDg2MjAsIDg2MjgsIDg2MzYsIDg2NDQsIDg2NDcsIDg2NTIsIDIyODAsIDg2NTcsIAotICAgIDgwNzIsIDg2NjAsIDg2NjIsIDg2NjcsIDg2NzIsIDg2NzcsIDg2ODIsIDg2ODcsIDg2OTIsIDg2OTcsIDg3MDIsIDg3MDcsIAotICAgIDg3MTIsIDg3MTgsIDg3MjMsIDg3MjgsIDg3MzMsIDg3MzksIDg3NDQsIDg3NDksIDg3NTQsIDg3NTksIDg3NjQsIDg3NjksIAotICAgIDg3NzUsIDg3ODAsIDg3ODUsIDg3OTAsIDg3OTUsIDg4MDAsIDg4MDUsIDg4MTAsIDg4MTUsIDg4MjAsIDg4MjUsIDg4MzAsIAotICAgIDg4MzUsIDg4NDAsIDg4NDUsIDg4NTAsIDg4NTUsIDg4NjAsIDg4NjYsIDg4NzIsIDg4NzcsIDg4ODIsIDg4ODcsIDg4OTIsIAotICAgIDg4OTcsIDIyOTEsIDIyOTgsIDIzMDQsIDg5MDIsIDg5MTAsIDg5MTYsIDg5MjQsIDIzMzAsIDIzMzYsIDg5MzIsIDg5MzYsIAotICAgIDg5NDEsIDg5NDUsIDg5NDksIDg5NTMsIDg5NTgsIDg5NjIsIDg5NjcsIDg5NzEsIDg5NzQsIDg5NzcsIDg5ODMsIDg5OTAsIAotICAgIDg5OTYsIDkwMDMsIDkwMDksIDkwMTYsIDkwMjIsIDkwMjksIDkwMzUsIDkwNDEsIDkwNTAsIDkwNTYsIDkwNjAsIDkwNjQsIAotICAgIDkwNjgsIDkwNzIsIDkwNzcsIDkwODEsIDkwODYsIDkwOTAsIDkwOTYsIDkxMDEsIDkxMDgsIDkxMTksIDkxMjcsIDkxMzcsIAotICAgIDkxNDMsIDkxNTMsIDkxNjIsIDkxNjksIDkxNzQsIDkxNzgsIDkxODksIDkyMDIsIDkyMTMsIDkyMjYsIDkyMzcsIDkyNDksIAotICAgIDkyNjEsIDkyNzMsIDkyODYsIDkyOTksIDkzMDYsIDkzMTIsIDkzMjYsIDkzMzMsIDkzMzksIDkzNDgsIDkzNTYsIDkzNjAsIAotICAgIDkzNjUsIDkzNjksIDkzNzYsIDkzODQsIDkzODgsIDkzOTQsIDkzOTgsIDk0MDQsIDk0MTQsIDk0MTgsIDk0MjMsIDk0MjgsIAotICAgIDk0MzUsIDk0NDEsIDk0NTEsIDgyNDIsIDk0NTcsIDk0NjEsIDk0NjgsIDk0NzQsIDk0ODEsIDk0ODgsIDk1NywgOTQ5MiwgCi0gICAgOTQ5NiwgOTUwMSwgOTUwNiwgOTUxMSwgOTUxNSwgOTUyMSwgOTUyOSwgOTUzNSwgOTUzOSwgOTU0MiwgOTU0OCwgOTU1OCwgCi0gICAgOTU2MiwgOTU2OCwgOTU3MywgOTU3NywgOTU4MSwgOTU4NywgOTU5MywgMjE4NywgOTU5OCwgOTYwMCwgOTYwNSwgOTYxMywgCi0gICAgOTYyMiwgOTYyNiwgOTYzMiwgOTYzNywgOTY0MiwgOTY0NywgOTY1MiwgOTY1OCwgOTY2MywgOTY2OCwgNDIzNSwgOTY3MywgCi0gICAgOTY3OCwgOTY4MiwgOTY4OCwgOTY5MywgOTY5OSwgOTcwNCwgOTcwOSwgOTcxNSwgOTcyMCwgOTYyNywgOTcyNiwgOTczMCwgCi0gICAgOTczNywgOTc0MywgOTc0OCwgOTc1MiwgNjQ5OCwgOTc1NywgOTc2NiwgOTc3MSwgOTc3NiwgODU5NiwgODYwMywgOTc4MSwgCi0gICAgMjkxMiwgOTc4NSwgOTc5MCwgOTc5NSwgOTgwMCwgOTYzOCwgOTgwNCwgOTgwOSwgOTgxNCwgOTY0MywgOTgxOCwgOTY0OCwgCi0gICAgOTgyMywgOTgzMCwgOTgzNywgOTg0MywgOTg1MCwgOTg1NiwgOTg2MiwgOTg2NywgOTg3NCwgOTg3OSwgOTg4NCwgOTg4OSwgCi0gICAgOTg5NSwgOTY1MywgOTY1OSwgOTkwMSwgOTkwNywgOTkxMiwgOTkxNywgOTkyNSwgOTY2NCwgOTkzMCwgMTEwMiwgOTkzMywgCi0gICAgOTk0MSwgOTk0NywgOTk1MywgOTk2MiwgOTk3MCwgOTk3OCwgOTk4NiwgOTk5NCwgMTAwMDIsIDEwMDEwLCAxMDAxOCwgCi0gICAgMTAwMjYsIDEwMDM1LCAxMDA0NCwgMTAwNTIsIDEwMDYxLCAxMDA3MCwgMTAwNzksIDEwMDg4LCAxMDA5NywgMTAxMDYsIAotICAgIDEwMTE1LCAxMDEyNCwgMTAxMzMsIDEwMTQyLCAxMDE1MCwgMTAxNTUsIDEwMTYxLCAxMDE2OSwgMTAxNzYsIDEwMTkxLCAKLSAgICAxMDIwOCwgMTAyMjcsIDEwMjM2LCAxMDI0NCwgMTAyNTksIDEwMjcwLCAxMDI4MCwgMTAyOTAsIDEwMjk4LCAxMDMwNCwgCi0gICAgMTAzMTYsIDEwMzI1LCAxMDMzMywgMTAzNDAsIDEwMzQ3LCAxMDM1NCwgMTAzNjAsIDEwMzY1LCAxMDM3NSwgMTAzODMsIAotICAgIDEwMzkzLCAxMDQwMCwgMTA0MTAsIDEwNDIwLCAxMDQzMCwgMTA0MzgsIDEwNDQ1LCAxMDQ1NCwgMTA0NjQsIDEwNDc4LCAKLSAgICAxMDQ5MywgMTA1MDIsIDEwNTEwLCAxMDUxNSwgMTA1MTksIDEwNTI4LCAxMDUzNCwgMTA1MzksIDEwNTQ5LCAxMDU1OSwgCi0gICAgMTA1NjksIDEwNTc0LCAxMDU3OCwgMTA1ODcsIDEwNTkyLCAxMDYwOCwgMTA2MjUsIDEwNjM1LCAxMDY0NiwgMTA2NTksIAotICAgIDEwNjY3LCAxMDY4MCwgMTA2OTIsIDEwNzAwLCAxMDcwNSwgMTA3MDksIDEwNzE1LCAxMDcyMCwgMTA3MjgsIDEwNzM2LCAKLSAgICAxMDc0MywgMTA3NDgsIDEwNzU2LCAxMDc2NiwgMTA3NzIsIDEwNzc2LCAxMDc3OSwgMTA3ODMsIDEwNzg5LCAxMDc5NiwgCi0gICAgMTA4MDAsIDEwODA4LCAxMDgxNywgMTA4MjUsIDEwODMyLCAxMDgzNywgMTA4NDIsIDEwODQ2LCAxMDg1MCwgMTA4NTgsIAotICAgIDEwODczLCAxMDg4OSwgMTA4OTUsIDEwOTAzLCAxMDkxMiwgMTA5MjAsIDEwOTI2LCAxMDkzMCwgMTA5MzcsIDEwOTQ4LCAKLSAgICAxMDk1MiwgMTA5NTUsIDEwOTYxLCA5NjY5LCAxMDk2NiwgMTA5NzIsIDEwOTc5LCAxMDk4NSwgMTA5OTAsIDEwOTk3LCAKLSAgICAxMTAwNCwgMTEwMTEsIDExMDE4LCAxMTAyNSwgMTEwMzIsIDExMDM5LCAxMTA0NiwgMTEwNTEsIDEwMjA0LCAxMTA1NiwgCi0gICAgMTEwNjIsIDExMDY5LCAxMTA3NiwgMTEwODEsIDExMDg4LCAxMTA5NywgMTExMDEsIDExMTEzLCA4NjM0LCAxMTExNywgCi0gICAgMTExMjAsIDExMTI0LCAxMTEyOCwgMTExMzIsIDExMTM2LCAxMTE0MiwgMTExNDgsIDExMTUzLCAxMTE1OSwgMTExNjQsIAotICAgIDExMTY5LCAxMTE3NSwgMTExODAsIDExMTg1LCA5NDMxLCAxMTE5MCwgMTExOTQsIDExMTk4LCAxMTIwMiwgMTEyMDcsIAotICAgIDExMjEyLCAxMTIxNywgMTEyMjUsIDExMjMxLCAxMTIzNiwgMTEyNDAsIDExMjQ0LCAxMTI1MSwgMTEyNTYsIDExMjY0LCAKLSAgICAxMTI3MSwgMTEyNzYsIDExMjgwLCAxMTI4MywgMTEyODksIDExMjk2LCAxMTMwMCwgMTEzMDMsIDExMzA4LCAxMTMxMiwgCi0gICAgNDI3NCwgMTEzMTgsIDExMzI3LCA0NiwgMTEzMzUsIDExMzQxLCAxMTM0NiwgMTEzNTEsIDExMzU5LCAxMTM2NiwgMTEzNzEsIAotICAgIDk0NDYsIDExMzc3LCAxMTM4MywgMTEzODgsIDExMzkyLCAxMTM5NSwgMTE0MTAsIDExNDI5LCAxMTQ0MSwgMTE0NTQsIAotICAgIDExNDY3LCAxMTQ4MCwgMTE0OTQsIDExNTA3LCAxMTUyMiwgMTE1MjksIDk2NzQsIDExNTM1LCAxMTU0OSwgMTE1NTQsIAotICAgIDExNTYwLCAxMTU2NSwgMTE1NzMsIDExNTc4LCA4NDAxLCAxMTU4MywgMTE1ODYsIDExNTk0LCAxMTYwMSwgMTE2MDYsIAotICAgIDExNjEwLCAxMTYxNiwgMjkxNywgMTAyNzgsIDExNjIwLCAxMTYyNCwgMTE2MzAsIDExNjM2LCAxMTY0MSwgMTE2NDcsIAotICAgIDExNjUyLCA5NjgzLCAxMTY1OCwgMTE2NjQsIDExNjY5LCAxMTY3NCwgMTE2ODIsIDExNjg4LCAxMTcwMSwgMTE3MDksIAotICAgIDExNzE2LCAxMTcyMiwgOTY4OSwgMTE3MjgsIDExNzM2LCAxMTc0NCwgMTE3NTEsIDExNzY0LCAxMTc3NywgMTE3ODksIAotICAgIDExNzk5LCAxMTgwNywgMTE4MTQsIDExODI2LCAxMTgzMywgMTE4NDMsIDExODUyLCAxMTg2MSwgMTE4NjksIDExODc2LCAKLSAgICAxMTg4MSwgMTE4ODcsIDk2OTQsIDExODkyLCAxMTg5OCwgMTE5MDMsIDExOTA4LCA5NzAwLCAxMTkxMywgMTE5MTYsIAotICAgIDExOTIzLCAxMTkyOSwgMTE5NDIsIDkxMTIsIDExOTUzLCAxMTk1OSwgMTE5NjgsIDExOTc2LCAxMTk4MywgMTE5ODksIAotICAgIDEyMDAwLCAxMjAwNiwgMTIwMTEsIDM4MzYsIDEyMDE5LCAxMjAyNCwgMTE0MDIsIDEyMDMwLCAxMjAzNywgMTIwNDIsIAotICAgIDk3MDUsIDEyMDQ4LCAxMjA1MywgMTIwNjAsIDEyMDY2LCAxMjA3MiwgMTIwNzcsIDEyMDg1LCAxMjA5MywgMTIxMDAsIAotICAgIDEyMTA0LCAxMjExNiwgMTIxMzAsIDEyMTQwLCAxMjE0NSwgMTIxNDksIDEyMTYwLCAxMjE2NiwgMTIxNzEsIDEyMTc2LCAKLSAgICA5NzEwLCAxMjE4MCwgOTcxNiwgMTIxODUsIDEyMTg4LCAxMjE5MywgMTIyMDUsIDEyMjEyLCAxMjIxNywgMTIyMjEsIAotICAgIDEyMjI5LCAxMjIzNCwgMTIyMzgsIDEyMjQzLCAxMjI0NywgMTIyNTQsIDEyMjYwLCA5NzIxLCA5NjI4LCAxMjI2NywgMjkyMiwgCi0gICAgMTIsIDEyMjc0LCAxMjI3OSwgMTIyODMsIDEyMjg3LCAxMjI5MywgMTIzMDEsIDEyMzExLCAxMjMxNiwgMTIzMjEsIDEyMzI4LCAKLSAgICAxMjMzNSwgMTIzMzksIDEyMzUwLCAxMjM2MCwgMTIzNjksIDEyMzc4LCAxMjM5MCwgMTIzOTUsIDEyMzk5LCAxMjQwNywgCi0gICAgMTI0MjEsIDEyNDI1LCAxMjQyOCwgMTI0MzYsIDEyNDQzLCAxMjQ1MSwgMTI0NTUsIDEyNDY2LCAxMjQ3MCwgMTI0NzcsIAotICAgIDEyNDgyLCAxMjQ4NiwgMTI0OTIsIDEyNDk3LCAxMjUwMywgMTI1MDgsIDEyNTEzLCAxMjUxNywgMTI1MjMsIDEyNTI4LCAKLSAgICAxMjUzOSwgMTI1NDMsIDEyNTQ2LCAxMjU1MiwgMTI1NTcsIDEyNTYzLCAxMjU2OSwgMTI1NzYsIDEyNTg3LCAxMjU5NywgCi0gICAgMTI2MDcsIDEyNjE2LCAxMjYyMywgMTI2MzIsIDEyNjM2LCA5NzMxLCA5NzM4LCA5NzQ0LCA5NzQ5LCAxMjY0MiwgMTI2NDgsIAotICAgIDEyNjU0LCAxMjY1OSwgMTI2NjUsIDk3NTMsIDEyNjcxLCAxMjY3NCwgMTI2ODEsIDEyNjg2LCAxMjcwMSwgMTI3MTcsIAotICAgIDEyNzMyLCAxMjc0MCwgMTI3NDYsIDEyNzUxLCA5NTAsIDM3NCwgMTI3NTYsIDEyNzY0LCAxMjc3MSwgMTI3NzcsIDEyNzgyLCAKLSAgICAxMjc4NywgOTc1OCwgMTI3ODksIDEyNzkzLCAxMjc5OCwgMTI4MDIsIDEyODEyLCAxMjgxNywgMTI4MjEsIDEyODMwLCAKLSAgICAxMjgzNCwgMTI4MzcsIDEyODQ0LCA5NzY3LCAxMjg0OSwgMTI4NTIsIDEyODYwLCAxMjg2NywgMTI4NzUsIDEyODc5LCAKLSAgICAxMjg4MywgMTI4OTAsIDEyODk5LCAxMjkwNiwgMTI5MDIsIDEyOTEzLCAxMjkxNywgMTI5MjMsIDEyOTI3LCAxMjkzMSwgCi0gICAgMTI5MzUsIDEyOTQxLCAxMjk1MSwgMTI5NTksIDEyOTY2LCAxMjk3MCwgMTI5NzgsIDEyOTgyLCAxMjk4OSwgMTI5OTMsIAotICAgIDEyOTk4LCAxMzAwMiwgMTMwMDksIDEzMDE1LCAxMzAyMywgMTMwMjksIDEzMDM0LCAxMzA0NCwgMTMwNDksIDEzMDU0LCAKLSAgICAxMzA1OCwgMTMwNjIsIDEzMDcwLCA0MTI0LCAxMzA3OCwgMTMwODMsIDk3NzIsIDEzMDg3LCAxMzA5MSwgMTMwOTQsIAotICAgIDEzMTAyLCAxMzEwOSwgMTMxMTMsIDYyOTgsIDEzMTE3LCAxMzEyMiwgMTMxMjcsIDEzMTMxLCAxMzE0MiwgMTMxNTIsIAotICAgIDEzMTU3LCAxMzE2MywgMTMxNjgsIDEzMTcyLCAxMzE3NSwgMTMxODMsIDEzMTg4LCAxMzE5MywgMTMyMDAsIDEzMjA1LCAKLSAgICA5Nzc3LCAxMzIxMCwgMTMyMTQsIDEzMjIxLCAxNzM3LCA2NDU2LCAxMzIyNiwgMTMyMzEsIDEzMjM2LCAxMzI0MSwgMTMyNDcsIAotICAgIDEzMjUyLCAxMzI1OCwgMTMyNjMsIDEzMjY4LCAxMzI3MywgMTMyNzgsIDEzMjgzLCAxMzI4OCwgMTMyOTMsIDEzMjk4LCAKLSAgICAxMzMwMywgMTMzMDgsIDEzMzEzLCAxMzMxOCwgMTMzMjMsIDEzMzI4LCAxMzMzMywgMTMzMzgsIDEzMzQ0LCAxMzM0OSwgCi0gICAgMTMzNTQsIDEzMzU5LCAxMzM2NCwgMTMzNjksIDEzMzc1LCAxMzM4MCwgMTMzODUsIDEzMzkxLCAxMzM5NiwgMTM0MDIsIAotICAgIDEzNDA3LCAxMzQxMywgMTM0MTgsIDEzNDIzLCAxMzQyOCwgMTM0MzMsIDEzNDM5LCAxMzQ0NCwgMTM0NDksIDEzNDU0LCAKLSAgICA5MDksIDExMiwgMTM0NjIsIDEzNDY2LCAxMzQ3MSwgMTM0NzYsIDEzNDgwLCAxMzQ4NCwgMTM0ODgsIDEzNDkzLCAxMzQ5NywgCi0gICAgMTM1MDIsIDEzNTA2LCAxMzUwOSwgMTM1MTMsIDEzNTE3LCAxMzUyMywgMTM1MjgsIDEzNTM4LCAxMzU0NCwgMTM1NTIsIAotICAgIDEzNTU4LCAxMzU2MiwgMTM1NjYsIDEzNTczLCAxMzU4MSwgMTM1OTAsIDEzNjAxLCAxMzYxMSwgMTM2MTgsIDEzNjI1LCAKLSAgICAxMzYyOSwgMTM2MzgsIDEzNjQ3LCAxMzY1NSwgMTM2NjQsIDEzNjczLCAxMzY4MiwgMTM2OTEsIDEzNzAxLCAxMzcxMSwgCi0gICAgMTM3MjEsIDEzNzMxLCAxMzc0MSwgMTM3NTAsIDEzNzYwLCAxMzc3MCwgMTM3ODAsIDEzNzkwLCAxMzgwMCwgMTM4MTAsIAotICAgIDEzODIwLCAxMzgyOSwgMTM4MzksIDEzODQ5LCAxMzg1OSwgMTM4NjksIDEzODc5LCAxMzg4OSwgMTM4OTgsIDEzOTA4LCAKLSAgICAxMzkxOCwgMTM5MjgsIDEzOTM4LCAxMzk0OCwgMTM5NTgsIDEzOTY4LCAxMzk3OCwgMTM5ODgsIDEzOTk3LCAxNDAwNywgCi0gICAgMTQwMTcsIDE0MDI3LCAxNDAzNywgMTQwNDcsIDE0MDU3LCAxNDA2NywgMTQwNzcsIDE0MDg3LCAxNDA5NywgMTQxMDYsIAotICAgIDEyMzcsIDE0MTEyLCAxNDExNSwgMTQxMTksIDE0MTI0LCAxNDEzMSwgMTQxMzcsIDE0MTQyLCAxNDE0NiwgMTQxNTEsIAotICAgIDE0MTYwLCAxNDE2OCwgMTQxNzMsIDE0MTc3LCAxNDE4MSwgMTQxODcsIDE0MTkyLCAxNDE5OCwgOTc4NiwgMTQyMDMsIAotICAgIDE0MjA4LCAxNDIxNywgOTc5NiwgMTQyMjIsIDE0MjI1LCAxNDIzMSwgMTQyMzksIDk4MDEsIDE0MjQ2LCAxNDI1MCwgCi0gICAgMTQyNTQsIDE0MjU5LCAxNDI2MywgMTQyNzMsIDE0Mjc5LCAxNDI4NSwgMTQyOTAsIDE0Mjk5LCAxNDMwNywgMTQzMTQsIAotICAgIDE0MzIxLCAxNDMyNiwgMTQzMzMsIDE0MzM4LCAxNDM0MiwgMTQzNDUsIDE0MzU2LCAxNDM2NiwgMTQzNzUsIDE0MzgzLCAKLSAgICAxNDM5NCwgMTQ0MDYsIDE0NDE2LCAxNDQyMSwgMTQ0MjUsIDE0NDMwLCAxNDQzNSwgMTQ0MzksIDE0NDQ1LCAxNDQ1MywgCi0gICAgMTQ0NjAsIDE0NDcxLCAxNDQ3NiwgMTQ0ODYsIDE0NDk1LCAxNDQ5OSwgMTQ1MDIsIDE0NTA5LCAxNDUxOSwgMTQ1MjgsIAotICAgIDE0NTM1LCAxNDUzOSwgMTQ1NDYsIDE0NTUyLCAxNDU1NywgMTQ1NjIsIDE0NTY2LCAxNDU3NSwgMTQ1ODAsIDE0NTg0LCAKLSAgICAxNDU5MCwgMTQ1OTQsIDE0NTk5LCAxNDYwMywgMTQ2MTAsIDE0NjE3LCAxNDYyMSwgMTQ2MzAsIDE0NjM4LCAxNDY0NiwgCi0gICAgMTQ2NTMsIDE0NjYxLCAxNDY3MywgMTQ2ODQsIDE0Njk0LCAxNDcwMSwgMTQ3MDcsIDE0NzE2LCAxNDcyNywgMTQ3MzYsIAotICAgIDE0NzQ4LCAxNDc2MCwgMTQ3NzIsIDE0NzgyLCAxNDc5MSwgMTQ4MDAsIDE0ODA4LCAxNDgxNSwgMTQ4MjQsIDE0ODMyLCAKLSAgICAxNDgzNiwgMTQ4NDEsIDE0ODQ3LCAxNDg1MywgMTQ4NTgsIDE0ODYzLCA4MDkzLCAxNDg2NywgMTQ4NjksIDE0ODczLCAKLSAgICAxNDg3OCwgMTQ4ODQsIDE0ODkwLCAxNDg5OSwgMTQ5MDMsIDE0OTA5LCAxNDkxNywgMTQ5MjQsIDE0OTMzLCAxNDk0MiwgCi0gICAgMTQ5NTEsIDE0OTYwLCAxNDk2OSwgMTQ5NzgsIDE0OTg3LCAxNDk5NiwgMTUwMDYsIDE1MDE2LCAxNTAyNSwgMTUwMzEsIAotICAgIDE1MDM4LCAxNTA0NSwgMTUwNTEsIDE1MDY1LCAxNTA3MSwgMTUwNzgsIDE1MDg2LCAxNTA5NSwgMTUxMDMsIDE1MTA5LCAKLSAgICAxNTExOCwgMTUxMjcsIDE1MTM4LCAxNTE0OCwgMTUxNTYsIDE1MTYzLCAxNTE3MSwgMTUxODAsIDE1MTkzLCAxNTIwMiwgCi0gICAgMTUyMTAsIDE1MjE3LCAxNTIzMCwgMTUyMzYsIDE1MjQyLCAxNTI1MiwgMTUyNjEsIDE1MjcwLCAxNTI3NSwgMTUyNzksIAotICAgIDE1Mjg1LCAxNTI5MSwgMTUyOTYsIDE1MzAzLCAxNTMxMCwgOTQ0NSwgMTUzMTUsIDE1MzIwLCAxNTMyNywgMTUzMzUsIAotICAgIDE1MzQwLCAxNTM0NywgMTUzNTIsIDE1MzY0LCAxMzUxOSwgMTUzNjksIDE1Mzc3LCAxNTM4MywgMTUzODgsIDE1Mzk2LCAKLSAgICAxNTQwNCwgMTU0MTEsIDE1NDE5LCAxNTQyNSwgMTU0MzMsIDE1NDQxLCAxNTQ0NywgMTU0NTIsIDE1NDU4LCAxNTQ2NSwgCi0gICAgMTU0NzEsIDE1NDc2LCAxNTQ4MCwgMTU0OTEsIDE1NDk5LCAxNTUwNSwgMTU1MTAsIDE1NTE3LCAxNTUyNiwgMTU1MzIsIAotICAgIDE1NTM3LCAxNTU0NSwgMTU1NTQsIDE1NTY4LCA0MDY4LCAxNTU3MiwgMTU1NzcsIDE1NTgyLCAxNTU4OCwgMTU1OTMsIAotICAgIDE1NTk4LCAxNTYwMiwgMTU2MDcsIDE1NjEyLCAxNTYxNywgODA5MiwgMTU2MjIsIDE1NjI3LCAxNTYzMiwgMTU2MzcsIAotICAgIDE1NjQyLCAxNTY0NiwgMTU2NTEsIDE1NjU2LCAxNTY2MSwgMTU2NjYsIDE1NjcyLCAxNTY3OCwgMTU2ODMsIDE1Njg3LCAKLSAgICAxNTY5MywgMTU2OTgsIDE1NzAzLCAxNTcwOCwgOTgwNSwgMTU3MTMsIDE1NzE4LCAxNTcyMywgMTU3MjgsIDE1NzMzLCAKLSAgICAxNTc1MCwgMTU3NjgsIDE1NzgwLCAxNTc5MywgMTU4MTAsIDE1ODI2LCAxNTg0MywgMTU4NTMsIDE1ODcyLCAxNTg4MywgCi0gICAgMTU4OTQsIDE1OTA1LCAxNTkxNiwgMTU5MjgsIDE1OTM5LCAxNTk1MCwgMTU5NjcsIDE1OTc4LCAxNTk4OSwgMTU5OTQsIAotICAgIDk4MTAsIDE1OTk5LCAxNjAwMywgMjQyMCwgMTYwMDcsIDE2MDEwLCAxNjAxNiwgMTYwMjQsIDE2MDMyLCAxNjA0MSwgCi0gICAgMTYwNDgsIDE2MDUzLCAxNjA2MSwgMTYwNjksIDE2MDc2LCAxNjA4MCwgMTYwODUsIDE2MDkxLCAxNjA5OCwgMTYxMDYsIAotICAgIDE2MTEzLCAxNjEyNSwgMTYxMzIsIDE2MTM4LCAxNjE0NiwgMTYxNTEsIDE2MTU3LCAxMjY5NSwgMTYxNjMsIDE2MTcyLCAKLSAgICAxNjE3OCwgMTYxODMsIDE2MTkxLCAxNjIwMCwgMTYyMDgsIDE2MjE1LCAxNjIyMSwgMTYyMjksIDE2MjM2LCAxNjI0MiwgCi0gICAgMTYyNDgsIDE2MjU1LCAxNjI2MiwgMTYyNjgsIDE2Mjc0LCAxNjI4MywgMTYyOTEsIDE2MzAxLCAxNjMwOCwgMTYzMTQsIAotICAgIDE2MzIyLCAxNjMyOCwgMTYzMzYsIDE2MzQ0LCAxNjM1MSwgMTYzNjQsIDE2MzcxLCAxNjM4MCwgMTYzODksIDE2Mzk4LCAKLSAgICAxNjQwNiwgMTY0MTYsIDE2NDIzLCAxNjQyOCwgMzcyNywgMTY0MzUsIDE2NDQwLCAxMzUzLCAxNjQ0NCwgMTU2MjMsIAotICAgIDE2NDQ4LCAxNjQ1NCwgMTY0NTgsIDE2NDY2LCAxNjQ3OCwgMTY0ODMsIDE2NDkwLCAxNjQ5NiwgMTY1MDEsIDE2NTA4LCAKLSAgICAxNTYyOCwgMTY1MTIsIDE2NTE2LCAxNjUyMCwgMTU2MzMsIDE2NTI0LCAxNTYzOCwgMTY1MjgsIDE2NTM1LCAxNjU0MCwgCi0gICAgMTY1NDQsIDE2NTUxLCAxNjU1NSwgMTY1NjMsIDE2NTcwLCAxNjU3NSwgMTY1NzksIDE2NTg2LCAxNjYwMywgMTY2MTIsIAotICAgIDE2NjE2LCAxNjYxOSwgMTY2MjcsIDE2NjMzLCAxNjYzOCwgMzgwNSwgMTY2NDIsIDE2NjQ0LCAxNjY1MiwgMTY2NTksIAotICAgIDE2NjY5LCAxNjY4MSwgMTY2ODYsIDE2NjkwLCAxNjY5NiwgMTY3MDEsIDE2NzA1LCAxNjcxMSwgMTY3MTYsIDE2NzIyLCAKLSAgICAxNjcyNSwgMTY3MzIsIDE2NzQwLCAxNjc0NywgMTY3NTMsIDE2NzU4LCAxNjc2NCwgMTY3NjksIDE2Nzc2LCAxNjc4MiwgCi0gICAgMTY3ODcsIDE2Nzk0LCAxNjc5OSwgMTY4MDMsIDE2ODA5LCAxNjgxMywgMTY4MjAsIDE2ODI2LCAxNjgzMSwgMTY4MzcsIAotICAgIDE2ODQ1LCAxNjg1MywgMTY4NjAsIDE2ODY2LCAxNjg3MSwgMTY4NzcsIDE2ODgzLCAxNjg5MSwgMTY4OTksIDE2OTA1LCAKLSAgICAxNjkxMSwgMTY5MTYsIDE2OTIzLCAxNjkyOCwgMTY5MzIsIDE2OTM4LCAxNjk0MywgMTY5NTAsIDE2OTU1LCAxNjk2MSwgCi0gICAgMTY5NjQsIDE2OTcwLCAxNjk3NiwgMTY5NzksIDE2OTgzLCAxNjk4NywgMTY5OTksIDE3MDA1LCAxNzAxMCwgMTcwMTcsIAotICAgIDE3MDIzLCAxNzAyOSwgMTcwNDAsIDE3MDUwLCAxNzA1OSwgMTcwNjcsIDE3MDc0LCAxNzA4NSwgMTcwOTUsIDE3MTA1LCAKLSAgICAxNzExMywgMTcxMTYsIDE1NjUyLCAxNzEyMSwgMTcxMjYsIDE1NjU3LCAxNTc5OCwgMTcxMzQsIDE3MTQ3LCAxNzE2MiwgCi0gICAgMTcxNzMsIDE1ODE1LCAxNzE5MSwgMTcyMDQsIDE3MjE3LCAxNzIyOCwgMTE0MTcsIDE3MjM5LCAxNzI1MiwgMTcyNzEsIAotICAgIDE3MjgyLCAxNzI5MywgMTczMDQsIDI2ODgsIDE3MzE3LCAxNzMyMSwgMTczMjksIDE3MzQwLCAxNzM0OCwgMTczNjMsIAotICAgIDE3Mzc4LCAxNzM4OSwgMTczOTYsIDE3NDAyLCAxNzQxMCwgMTc0MTQsIDE3NDIwLCAxNzQyMywgMTc0MzYsIDE3NDQ4LCAKLSAgICAxNzQ1OCwgMTc0NjYsIDE3NDczLCAxNzQ4MSwgMTc0OTEsIDE3NDk2LCAxNzUwMywgMTc1MDgsIDE3NTE1LCAxNzUyNiwgCi0gICAgMTc1MzYsIDE3NTQyLCAxNzU0NywgMTc1NTIsIDE1NjYyLCAxNzU1NiwgMTc1NjIsIDE3NTY4LCAxNzU3MywgMTc1NzgsIAotICAgIDE3NTgzLCAxNzU4NywgMTU2NjcsIDE1NjczLCAxNzU5MSwgMTU2NzksIDE3NTk2LCAxNzYwNCwgMTc2MDksIDE3NjEzLCAKLSAgICAxNzYyMSwgMTc2MzAsIDE3NjM3LCAxNzY0MSwgOTY0OSwgMTc2NDUsIDE3NjQ3LCAxNzY1MiwgMTc2NTcsIDE3NjYzLCAKLSAgICAxNzY2OCwgMTc2NzMsIDE3Njc4LCAxNzY4MywgMTc2ODcsIDE3NjkzLCAxNzY5OSwgMTc3MDQsIDE3NzEwLCAxNzcxNSwgCi0gICAgMTc3MjAsIDE3NzI0LCAxNzczMCwgMTc3MzUsIDE3NzQwLCAxNzc0NSwgMTc3NTcsIDE3NzYyLCAxNzc2OCwgMTc3NzMsIAotICAgIDE3Nzc4LCAxNzc4NCwgMTc3OTAsIDE3Nzk1LCAxNzgwMCwgMTc4MDUsIDE3ODEyLCAxNzgxOCwgMTc4MjksIDE3ODM2LCAKLSAgICAxNzg0MSwgMTc4NDUsIDE3ODQ5LCAxNzg1MiwgMTc4NjAsIDE3ODY1LCAxNzg3MiwgMTc4NzksIDE3ODg1LCAxNzg5MCwgCi0gICAgMTc4OTUsIDE3OTAwLCAxNzkwNywgMTc5MTcsIDE3OTI1LCAxNzkzMCwgMTc5MzcsIDE3OTQzLCAxNzk1MiwgMTc5NjIsIAotICAgIDE3OTcyLCAxNzk4NiwgMTgwMDAsIDE4MDE0LCAxODAyOCwgMTgwNDMsIDE4MDU4LCAxODA3NSwgMTgwOTMsIDE4MTA2LCAKLSAgICAxODExMiwgMTgxMTcsIDE4MTIyLCAxODEyNiwgMTgxMzQsIDE4MTM5LCAxODE0NywgMTgxNTMsIDE4MTU5LCAxODE2NCwgCi0gICAgMTgxNjksIDE4MTczLCAxODE3OCwgMTgxODIsIDE4MTg3LCAxODE5MSwgMTgyMDIsIDE4MjA4LCAxODIxMywgMTgyMTgsIAotICAgIDE4MjI1LCAxODIzMCwgMTgyMzQsIDM2OTAsIDE4MjM5LCAxODI0NSwgMTgyNTIsIDE1Njg4LCAxODI1OCwgMTgyNjIsIAotICAgIDE4MjY4LCAxODI3MywgMTgyNzgsIDE4MjgyLCAxODI4OCwgMTgyOTMsIDE4Mjk4LCAxODMwNSwgMTgzMTAsIDE0Mjc1LCAKLSAgICAxODMxNCwgMTgzMTksIDE4MzIzLCAxODMyOCwgMTgzMzQsIDE4MzQwLCAxODM0NywgMTgzNTcsIDE4MzY1LCAxODM3MiwgCi0gICAgMTgzNzcsIDE4MzgxLCAxODM5MCwgMTgzOTgsIDE4NDA1LCAxODQxMiwgMTg0MTgsIDE4NDIzLCAxODQyOSwgMTg0MzQsIAotICAgIDE4NDM5LCAxODQ0NSwgMTg0NTAsIDE4NDU2LCAxODQ2MSwgMTg0NjcsIDE4NDczLCAxODQ4MCwgMTg0ODYsIDE4NDkxLCAKLSAgICAxODQ5NiwgOTg3NSwgMTg1MDUsIDE4NTA4LCAxODUxNiwgMTg1MjIsIDE4NTI3LCAxODUzMiwgMTg1NDIsIDE4NTQ5LCAKLSAgICAxODU1NSwgMTg1NjAsIDE4NTY1LCAxODU3MSwgMTg1NzYsIDE4NTgyLCAxODU4NywgMTg1OTMsIDE4NTk5LCAxODYwNCwgCi0gICAgMTg2MTIsIDE4NjE5LCAxODYyNCwgMTg2MjksIDE4NjM1LCAxODY0MCwgMTg2NDQsIDE4NjUzLCAxODY2NCwgMTg2NzEsIAotICAgIDE4Njc5LCAxODY4NiwgMTg2OTEsIDE4Njk2LCAxODcwMiwgMTg3MDcsIDE4NzE1LCAxODcyMSwgMTg3MjcsIDE4NzM0LCAKLSAgICAxODc0MCwgMTg3NDUsIDE4NzQ5LCAxODc1NSwgMTg3NjAsIDE4NzY1LCAxODc2OSwgMTg3NzQsIDE0MjYsIDgxMTcsIDI5MzYsIAotICAgIDE4Nzc4LCAxODc4MiwgMTg3ODYsIDE4NzkwLCAxODc5NCwgMTg3OTgsIDE4ODAxLCAxODgwNiwgMTg4MTMsIDE4ODIxLCAKLSAgICAxNTY5OSwgMTg4MjgsIDE4ODM4LCAxODg0NiwgMTg4NTMsIDE4ODYxLCAxODg3MSwgMTg4ODAsIDkyMjAsIDE4ODkzLCAKLSAgICAxODg5OCwgMTg5MDMsIDE4OTExLCAxODkxOCwgMTQzNzEsIDE0MzgwLCAxODkyNSwgMTg5MzUsIDE4OTUwLCAxODk1NiwgCi0gICAgMTg5NjMsIDE4OTcwLCAxODk3NiwgMTg5ODIsIDE4OTkzLCAxOTAwMSwgMTkwMDksIDE5MDE5LCAxOTAyOSwgMTU3MDQsIAotICAgIDE5MDM4LCAxOTA0NCwgMTkwNTAsIDE5MDU4LCAxOTA2NiwgMTkwNzEsIDE5MDgwLCAxOTA4OCwgMTkxMDAsIDE5MTEwLCAKLSAgICAxOTEyMCwgMTkxMzAsIDE5MTM5LCAxOTE1MSwgMTkxNjEsIDE5MTcxLCAxOTE4MiwgMTkxODcsIDE5MTk5LCAxOTIxMSwgCi0gICAgMTkyMjMsIDE5MjM1LCAxOTI0NywgMTkyNTksIDE5MjcxLCAxOTI4MywgMTkyOTUsIDE5MzA3LCAxOTMxOCwgMTkzMzAsIAotICAgIDE5MzQyLCAxOTM1NCwgMTkzNjYsIDE5Mzc4LCAxOTM5MCwgMTk0MDIsIDE5NDE0LCAxOTQyNiwgMTk0MzgsIDE5NDQ5LCAKLSAgICAxOTQ2MSwgMTk0NzMsIDE5NDg1LCAxOTQ5NywgMTk1MDksIDE5NTIxLCAxOTUzMywgMTk1NDUsIDE5NTU3LCAxOTU2OSwgCi0gICAgMTk1ODAsIDE5NTkyLCAxOTYwNCwgMTk2MTYsIDE5NjI4LCAxOTY0MCwgMTk2NTIsIDE5NjY0LCAxOTY3NiwgMTk2ODgsIAotICAgIDE5NzAwLCAxOTcxMSwgMTk3MjMsIDE5NzM1LCAxOTc0NywgMTk3NTksIDE5NzcxLCAxOTc4MywgMTk3OTUsIDE5ODA3LCAKLSAgICAxOTgxOSwgMTk4MzEsIDE5ODQyLCAxOTg1NCwgMTk4NjYsIDE5ODc4LCAxOTg5MCwgMTk5MDIsIDE5OTE0LCAxOTkyNiwgCi0gICAgMTk5MzgsIDE5OTUwLCAxOTk2MiwgMTk5NzMsIDE5OTg1LCAxOTk5NywgMjAwMDksIDIwMDIxLCAyMDAzMywgMjAwNDUsIAotICAgIDIwMDU3LCAyMDA2OSwgMjAwODEsIDIwMDkzLCAyMDEwNCwgMjAxMTYsIDIwMTI4LCAyMDE0MCwgMjAxNTIsIDIwMTY1LCAKLSAgICAyMDE3OCwgMjAxOTEsIDIwMjA0LCAyMDIxNywgMjAyMzAsIDIwMjQzLCAyMDI1NSwgMjAyNjgsIDIwMjgxLCAyMDI5NCwgCi0gICAgMjAzMDcsIDIwMzIwLCAyMDMzMywgMjAzNDYsIDIwMzU5LCAyMDM3MiwgMjAzODUsIDIwMzk3LCAyMDQxMCwgMjA0MjMsIAotICAgIDIwNDM2LCAyMDQ0OSwgMjA0NjIsIDIwNDc1LCAyMDQ4OCwgMjA1MDEsIDIwNTE0LCAyMDUyNywgMjA1MzksIDIwNTUyLCAKLSAgICAyMDU2NSwgMjA1NzgsIDIwNTkxLCAyMDYwNCwgMjA2MTcsIDIwNjMwLCAyMDY0MywgMjA2NTYsIDIwNjY5LCAyMDY4MSwgCi0gICAgMjA2OTQsIDIwNzA3LCAyMDcyMCwgMjA3MzMsIDIwNzQ2LCAyMDc1OSwgMjA3NzIsIDIwNzg1LCAyMDc5OCwgMjA4MTEsIAotICAgIDIwODIzLCAyMDgzNiwgMjA4NDksIDIwODYyLCAyMDg3NSwgMjA4ODgsIDIwOTAxLCAyMDkxNCwgMjA5MjcsIDIwOTQwLCAKLSAgICAyMDk1MywgMjA5NjUsIDIwOTc2LCAyMDk4OSwgMjEwMDIsIDIxMDE1LCAyMTAyOCwgMjEwNDEsIDIxMDU0LCAyMTA2NywgCi0gICAgMjEwODAsIDIxMDkzLCAyMTEwNiwgMjExMTgsIDIxMTMxLCAyMTE0NCwgMjExNTcsIDIxMTcwLCAyMTE4MywgMjExOTYsIAotICAgIDIxMjA5LCAyMTIyMiwgMjEyMzUsIDIxMjQ4LCAyMTI2MCwgMjEyNzMsIDIxMjg2LCAyMTI5OSwgMjEzMTIsIDIxMzI1LCAKLSAgICAyMTMzOCwgMjEzNTEsIDIxMzY0LCAyMTM3NywgMjEzOTAsIDIxNDAyLCAyMTQxNSwgMjE0MjgsIDIxNDQxLCAyMTQ1NCwgCi0gICAgMjE0NjcsIDIxNDgwLCAyMTQ5MywgMjE1MDYsIDIxNTE5LCAyMTUzMiwgMjE1NDQsIDIxNTU3LCAyMTU3MCwgMjE1ODMsIAotICAgIDIxNTk2LCAyMTYwOSwgMjE2MjIsIDIxNjM1LCAyMTY0OCwgMjE2NjEsIDIxNjc0LCAyMTY4NiwgMjE2OTksIDIxNzEyLCAKLSAgICAyMTcyNSwgMjE3MzgsIDIxNzUxLCAyMTc2NCwgMjE3NzcsIDIxNzkwLCAyMTgwMywgMjE4MTYsIDIxODI4LCAyMTg0MSwgCi0gICAgMjE4NTQsIDIxODY3LCAyMTg4MCwgMjE4OTMsIDIxOTA2LCAyMTkxOSwgMjE5MzIsIDIxOTQ1LCAyMTk1OCwgMjE5NzAsIAotICAgIDIxOTgzLCAyMTk5NiwgMjIwMDksIDIyMDIyLCAyMjAzNSwgMjIwNDgsIDIyMDYxLCAyMjA3NCwgMjIwODcsIDIyMTAwLCAKLSAgICAyMjExMiwgMjIxMjUsIDIyMTM4LCAyMjE1MSwgMjIxNjQsIDIyMTc3LCAyMjE5MCwgMjIyMDMsIDIyMjE2LCAyMjIyOSwgCi0gICAgMjIyNDIsIDIyMjU0LCAyMjI2NywgMjIyODAsIDIyMjkzLCAyMjMwNiwgMjIzMTksIDIyMzMyLCAyMjM0NSwgMjIzNTgsIAotICAgIDIyMzcxLCAyMjM4NCwgMjIzOTYsIDIyNDA3LCAyMjQxNiwgMjI0MjQsIDIyNDMyLCAyMjQzOSwgMjI0NDUsIDIyNDQ5LCAKLSAgICAyMjQ1NSwgMjI0NjEsIDIyNDY5LCAyMjQ3NCwgMjI0ODAsIDIyNDg1LCAyMjQ4OSwgMjI0OTgsIDk2NTQsIDIyNTA5LCAKLSAgICAyMjUxNiwgMjI1MjQsIDIyNTMxLCAyMjUzOCwgMTE5MzYsIDIyNTQ1LCAyMjU1MiwgMjI1NjEsIDIyNTY2LCAyMjU3MSwgCi0gICAgODE0NSwgMjI1NzgsIDIyNTgzLCAyMjU4NiwgMjI1OTEsIDIyNTk5LCAyMjYwNiwgMjI2MTMsIDIyNjIwLCAyMjYyNiwgCi0gICAgMjI2MzUsIDIyNjQ0LCAyMjY1MywgMjI2NTksIDIyNjY4LCAyMjY3MiwgMjI2NzgsIDIyNjgzLCAyMjY5MywgMjI3MDAsIAotICAgIDIyNzA2LCAyMjcxNCwgMjI3MjAsIDIyNzI3LCAyMjczNywgMjI3NDYsIDIyNzUwLCAyMjc1NywgMjI3NjEsIDIyNzY2LCAKLSAgICAyMjc3MiwgMjI3ODAsIDIyNzg0LCAyMjc5NCwgMTU3MTQsIDIyODAzLCAyMjgwOSwgMjI4MTMsIDIyODIyLCAyMjgzMiwgCi0gICAgMTU3MTksIDIyODM4LCAyMjg0NSwgMjI4NTYsIDIyODY0LCAyMjg3NCwgMjI4ODMsIDIyODkxLCA5NDEwLCAyMjg5OSwgCi0gICAgMjI5MDQsIDIyOTEwLCAyMjkxNSwgMjI5MTksIDIyOTIzLCAyMjkyNywgMTAzNzksIDIyOTMyLCAyMjk0MCwgMjI5NDcsIAotICAgIDIyOTU2LCAyMjk2MywgMjI5NzAsIDIyOTc2LCAxMTg1NiwgMjI5ODMsIDIyOTg5LCAyMjk5MywgMjI5OTksIDIzMDA2LCAKLSAgICAyMzAxMiwgMjMwMjAsIDIzMDI2LCAyMzAzMywgMjMwMzksIDIzMDQ1LCAyMzA1NCwgMjMwNTgsIDIzMDY2LCAyMzA3NSwgCi0gICAgMjMwODIsIDIzMDg3LCAyMzA5MSwgMjMxMDIsIDIzMTA3LCAyMzExMiwgMjMxMTcsIDIzMTMwLCA4MzQ5LCAyMzEzNCwgCi0gICAgMjMxNDAsIDIzMTQ1LCAyMzE1MywgMjMxNTcsIDIzMTY0LCAyMzE3MywgMjMxNzgsIDE1OTkwLCAyMzE4NiwgMjMxOTAsIAotICAgIDIzMjAyLCAyMzIwNywgMjMyMTEsIDIzMjE0LCAyMzIyMCwgMjMyMjYsIDIzMjMyLCAyMzIzNywgMjMyNDEsIDIzMjQ0LCAKLSAgICAyMzI1NSwgMjMyNjAsIDk5MjYsIDIzMjY3LCAyMzI3MiwgMTI0MywgOTkzMSwgMjMyNzcsIDIzMjgyLCAyMzI4NywgMjMyOTIsIAotICAgIDIzMjk3LCAyMzMwMiwgMjMzMDcsIDIzMzEyLCAyMzMxNywgMjMzMjIsIDIzMzI3LCAyMzMzMiwgMjMzMzgsIDIzMzQzLCAKLSAgICAyMzM0OCwgMjMzNTMsIDIzMzU4LCAyMzM2MywgMjMzNjgsIDIzMzczLCAyMzM3OCwgMjMzODMsIDIzMzg5LCAyMzM5NSwgCi0gICAgMjM0MDAsIDIzNDA1LCAyMzQxMCwgMjM0MTUsIDIzNDIwLCAyMzQyNSwgMjM0MzAsIDIzNDM1LCAyMzQ0MCwgMjM0NDYsIAotICAgIDIzNDUxLCAyMzQ1NiwgMjM0NjEsIDIzNDY3LCAyMzQ3MywgMjM0NzgsIDIzNDgzLCAyMzQ4OCwgMjM0OTMsIDIzNDk4LCAKLSAgICAyMzUwMywgMjM1MDgsIDIzNTEzLCAyMzUxOSwgMjM1MjQsIDIzNTI5LCAyMzUzNCwgMjM1MzksIDIzNTQ1LCAyMzU1MCwgCi0gICAgMjM1NTUsIDIzNTU5LCAxMzQsIDIzNTY3LCAyMzU3MSwgMjM1NzUsIDIzNTc5LCAyMzU4NCwgMjM1ODgsIDE0MjgxLCAyMzQ2LCAKLSAgICAyMzU5MiwgMjM1OTcsIDIzNjAxLCAyMzYwNiwgMjM2MTAsIDIzNjE1LCAyMzYxOSwgMjM2MjUsIDIzNjMwLCAyMzYzNCwgCi0gICAgMjM2MzgsIDIzNjQ2LCAyMzY1MCwgMjM2NTQsIDIzNjU5LCAyMzY2NCwgMjM2NjgsIDIzNjc0LCAyMzY3OSwgMjM2ODMsIAotICAgIDIzNjg4LCAyMzY5MywgMjM2OTcsIDIzNzA0LCAyMzcxMSwgMjM3MTgsIDIzNzIyLCAyMzcyNiwgMjM3MzEsIDIzNzM1LCAKLSAgICAyMzczOCwgMjM3NDQsIDIzNzU3LCAyMzc2MiwgMjM3NjgsIDIzNzc3LCAyMzc4MiwgMTAxNTEsIDIzNzg3LCAyMzc5NiwgCi0gICAgMjM4MDEsIDIzODA0LCAyNzUxLCAyNzU2LCAyMzgwOCwgMjM4MTQsIDIzODIwLCA3NTM4LCAyMzgyNSwgMjM4MzAsIDIzODM1LCAKLSAgICAyMzg0MSwgMjM4NDYsIDE1MTM0LCAyMzg1MSwgMjM4NTYsIDIzODYxLCAyMzg2NiwgMjM4NzIsIDIzODc3LCAyMzg4MiwgCi0gICAgMjM4ODgsIDIzODkzLCAyMzg5NywgMjM5MDIsIDIzOTA3LCAyMzkxMiwgMjM5MTcsIDIzOTIyLCAyMzkyNiwgMjM5MzEsIAotICAgIDIzOTM1LCAyMzk0MCwgMjM5NDUsIDIzOTUwLCAyMzk1NSwgMjM5NTksIDIzOTY0LCAyMzk2OCwgMjM5NzMsIDIzOTc4LCAKLSAgICAyMzk4MywgMjM4OTgsIDI5NDUsIDIzOTAzLCAyMzk4OCwgMjM5OTYsIDI0MDAzLCAxMDQ3MywgMjQwMTUsIDI0MDIzLCAKLSAgICAyNDAzMywgMjQwNTEsIDI0MDcwLCAyNDA3OSwgMjQwODcsIDIzOTA4LCAyNDA5NCwgMjQwOTksIDI0MTA3LCAyMzkxMywgCi0gICAgMjQxMTIsIDI0MTE3LCAyNDEyNSwgMjQxMzAsIDIzOTE4LCAyNDEzNSwgMjQxNDMsIDI0MTQ4LCAyNDE1MiwgMjQxNTksIAotICAgIDI0MTY1LCAyNDE3NCwgMjQxODIsIDI0MTg2LCAyNDE4OSwgMjQxOTYsIDI0MjAwLCAyNDIwNCwgMjQyMDksIDI0MjE1LCAKLSAgICAyNDIyMiwgMjQyMjcsIDk0MzcsIDE3NDIsIDE3NDcsIDI0MjMxLCAyNDIzNywgMjQyNDMsIDI0MjQ4LCAyNDI1MiwgMjQyNTYsIAotICAgIDI0MjYwLCAyNDI2NCwgMjQyNjgsIDI0MjcyLCAyNDI3NiwgMjQyODAsIDI0MjgzLCAyNDI4OSwgMjQyOTYsIDI0MzA0LCAKLSAgICAyNDMxMCwgMjQzMTYsIDI0MzIxLCAyNDMyNiwgMjQzMzIsIDI0MzM2LCAyNDM0MSwgMTUwNDAsIDE1MDQ3LCAyNDM0OCwgCi0gICAgMjQzNjAsIDI0MzYzLCAyNDM3MCwgMjQzNzQsIDE3ODgxLCAyNDM4MSwgMjQzODksIDI0NDAwLCAyNDQwOSwgMjQ0MjIsIAotICAgIDI0NDMyLCAyNDQ0NiwgMjQ0NTgsIDI0NDcyLCAyNDQ4NSwgMjQ0OTcsIDI0NTA3LCAyNDUxOSwgMjQ1MjUsIDI0NTQwLCAKLSAgICAyNDU2NCwgMjQ1ODIsIDI0NjAxLCAyNDYxNCwgMjQ2MjgsIDI0NjQ2LCAyNDY2MiwgMjQ2NzksIDI0Njk3LCAyNDcwOCwgCi0gICAgMjQ3MjcsIDI0NzQ0LCAyNDc2NCwgMjQ3ODIsIDI0Nzk0LCAyNDgwOCwgMjQ4MjIsIDI0ODM0LCAyNDg1MSwgMjQ4NzAsIAotICAgIDI0ODg4LCAyNDkwMCwgMjQ5MTgsIDI0OTM3LCAxNTg1OCwgMjQ5NTAsIDI0OTcwLCAyNDk4MiwgMTE0NDgsIDI0OTk0LCAKLSAgICAyNDk5OSwgMjUwMDQsIDI1MDA5LCAyNTAxNSwgMjUwMjAsIDI1MDI0LCAyNTAzMSwgMjUwMzcsIDI0MzcsIDI1MDQxLCAKLSAgICAyNTA0NywgMjUwNTEsIDI1MDU0LCAyNTA1OCwgMjUwNjEsIDI1MDY5LCAyNTA3NSwgMjM5MzYsIDI1MDc5LCAyNTA4OCwgCi0gICAgMjUwOTksIDI1MTA1LCAyNTExMSwgMjUxMjYsIDI1MTM1LCAyNTE0MywgMjUxNTAsIDI1MTU1LCAyNTE1OSwgMjUxNjYsIAotICAgIDI1MTcyLCAyNTE4MSwgMjUxODksIDI1MTk2LCAyNTIwNiwgMjUyMTUsIDI1MjI1LCAyNTIzMCwgMjUyMzksIDI1MjQ4LCAKLSAgICAyNTI1OSwgMjUyNzAsIDQxOTIsIDI1MjgwLCAyNTI4NCwgMjUyOTQsIDI1MzAyLCAyNTMxMiwgMjUzMjMsIDI1MzI4LCAKLSAgICAyNTMzOCwgMjUzNDYsIDI1MzUzLCAyNTM1OSwgMjUzNjYsIDI1MzcxLCAyMzk0NiwgMjUzNzUsIDI1Mzg0LCAyNTM4OCwgCi0gICAgMjUzOTEsIDI1Mzk2LCAyNTQwNCwgMjU0MTEsIDI1NDIwLCAyNTQyOCwgMjU0MzYsIDI1NDQ0LCAyNTQ1NCwgMjU0NjMsIAotICAgIDI1NDY5LCAyNTQ3NSwgMjU0NzksIDIzOTUxLCAyMzk1NiwgMjU0ODMsIDI1NDkzLCAyNTUwMywgMjU1MTMsIDI1NTIxLCAKLSAgICAyNTUyOCwgMjU1MzgsIDI1NTQ2LCAyNTU1NCwgMjU1NjAsIDI1NTY4LCA4NjUsIDI1NTc3LCAxNjA2NSwgNjE1LCAyNTU5MSwgCi0gICAgMjU2MDAsIDI1NjA4LCAyNTYxOSwgMjU2MzAsIDI1NjQwLCAyNTY0OSwgMjU2NjEsIDI1NjcwLCAyNTY3OSwgMjU2ODYsIAotICAgIDI1NjkyLCAyNTcwMiwgMjU3MTEsIDI1NzIwLCAyNTcyOCwgMjU3MzgsIDI1NzQ2LCAyNTc1NCwgOTg5MiwgMjU3NjAsIAotICAgIDI1NzYzLCAyNTc2NywgMjU3NzIsIDI1Nzc3LCAyNTc4MSwgMTA1ODgsIDIzOTY5LCAyMzk3NCwgMjU3ODksIDI1Nzk1LCAKLSAgICAyNTgwMSwgMjU4MDYsIDI1ODExLCAyNTgxNSwgMjU4MjMsIDI1ODI5LCAyNTgzNSwgMjU4MzksIDM2NzUsIDI1ODQ3LCAKLSAgICAyNTg1MiwgMjU4NTcsIDI1ODYxLCAyNTg2NSwgMTA3MDEsIDI1ODcyLCAyNTg4MCwgMjU4OTQsIDI1OTAxLCAyNTkwNywgCi0gICAgMTA3MTAsIDEwNzE2LCAyNTkxNSwgMjU5MjMsIDI1OTMwLCAyNTkzNSwgMjU5NDAsIDIzOTc5LCAyNTk0NiwgMjU5NTcsIAotICAgIDI1OTYxLCAyNTk2NiwgMjY0MCwgMjU5NzEsIDI1OTgyLCAyNTk4OCwgMjU5OTMsIDI1OTk3LCAyNjAwMSwgMjYwMDQsIAotICAgIDI2MDExLCAyNjAxOCwgMjYwMjQsIDI2MDMxLCAyNjAzNywgMjYwNDEsIDIzOTg0LCAyNjA0NiwgMjYwNTAsIDI2MDU0LCAKLSAgICAxNDMxLCA4NTQ0LCAyNjA1OSwgMjYwNjQsIDI2MDY5LCAyNjA3NCwgMjYwNzksIDI2MDg0LCAyNjA4OSwgMjYwOTQsIAotICAgIDI2MDk5LCAyNjEwNCwgMjYxMDksIDI2MTE0LCAyNjExOSwgMjYxMjQsIDI2MTMwLCAyNjEzNSwgMjYxNDAsIDI2MTQ1LCAKLSAgICAyNjE1MCwgMjYxNTUsIDI2MTYwLCAyNjE2NiwgMjYxNzEsIDI2MTc2LCAyNjE4MSwgMjYxODYsIDI2MTkxLCAyNjE5NiwgCi0gICAgMjYyMDEsIDI2MjA3LCAyNjIxMywgMjYyMTgsIDI2MjI0LCAyNjIyOSwgMjYyMzQsIDUsIDI2MjQwLCAyNjI0NCwgMjYyNDgsIAotICAgIDI2MjUyLCAyNjI1NywgMjYyNjEsIDI2MjY1LCAyNjI2OSwgMjYyNzMsIDI2Mjc4LCAyNjI4MiwgMjYyODcsIDI2MjkxLCAKLSAgICAyNjI5NCwgMjYyOTgsIDI2MzAzLCAyNjMwNywgMjYzMTIsIDI2MzE2LCAyNjMyMCwgMjYzMjQsIDI2MzI5LCAyNjMzMywgCi0gICAgMjYzMzcsIDI2MzQ3LCAyNjM1MiwgMjYzNTYsIDI2MzYwLCAyNjM2NSwgMjYzNzAsIDI2Mzc5LCAyNjM4NCwgMjYzODksIAotICAgIDI2MzkzLCAyNjM5NywgMjY0MTAsIDI2NDIyLCAyNjQzMSwgMjY0NDAsIDI2NDQ1LCAyNjQ1MSwgMjY0NTYsIDI2NDYwLCAKLSAgICAyNjQ2NCwgMjY0NzQsIDI2NDgzLCAyNjQ5MSwgMjY0OTcsIDI2NTAyLCAyNjUwNiwgMjY1MTMsIDI2NTIzLCAyNjUzMiwgCi0gICAgMjY1NDAsIDExNzcwLCAyNjU0OCwgMjY1NTYsIDI2NTY1LCAyNjU3NCwgMjY1ODIsIDI2NTkyLCAyNjU5NywgMjY2MDEsIAotICAgIDI2NjA1LCAyNjYwOCwgMjY2MTAsIDI2NjE0LCAyNjYxOCwgMjY2MjMsIDI2NjI4LCAyNjYzMiwgMjY2MzYsIDI2NjM5LCAKLSAgICAyNjY0MywgMjY2NDYsIDI2NjUwLCAyNjY1MywgMjY2NTYsIDI2NjYwLCAyNjY2NiwgMjY2NzAsIDI2Njc0LCAyNjY3OCwgCi0gICAgMjY2ODMsIDI2Njg4LCAyNjY5MywgMjY2OTcsIDI2NzAwLCAyNjcwNSwgMjY3MTEsIDI2NzE2LCAyNjcyMiwgMjY3MjcsIAotICAgIDI2NzMxLCAyNjczNywgMjY3NDEsIDI2NzQ1LCAyNjc1MCwgMjY3NTQsIDI2NzU5LCAyNjc2NCwgMjY3NjgsIDI2NzcyLCAKLSAgICAyNjc3OSwgMjY3ODMsIDI2Nzg2LCAyNjc5MCwgMjY3OTQsIDI2ODAwLCAyNjgwNiwgMjY4MTAsIDI2ODE0LCAyNjgxOSwgCi0gICAgMjY4MjYsIDI2ODMyLCAyNjgzNiwgMjY4NDUsIDI2ODQ5LCAyNjg1MywgMjY4NTYsIDI2ODYyLCAyNjg2NywgMjY4NzMsIAotICAgIDE0NzUsIDE4MDYsIDI2ODc4LCAyNjg4MywgMjY4ODgsIDI2ODkzLCAyNjg5OCwgMjY5MDMsIDI2OTA4LCAyMTc0LCAyMjIwLCAKLSAgICAyNjkxMywgMjY5MTYsIDI2OTIwLCAyNjkyNCwgMjY5MjksIDI2OTMzLCAxNjA3NywgMjY5MzcsIDI2OTQyLCAyNjk0NywgCi0gICAgMjY5NTEsIDI2OTU0LCAyNjk1OSwgMjY5NjMsIDI2OTY4LCAyNjk3MiwgMTYwODEsIDI2OTc3LCAyNjk4MCwgMjY5ODMsIAotICAgIDI2OTg3LCAyNjk5MiwgMjY5OTYsIDI3MDA5LCAyNzAxMywgMjcwMTYsIDI3MDI0LCAyNzAzMywgMjcwNDAsIDI3MDQ1LCAKLSAgICAyNzA1MSwgMjcwNTcsIDI3MDY1LCAyNzA3MiwgMjcwNzksIDI3MDgzLCAyNzA4NywgMjcwOTEsIDI3MDk2LCAyNzEwMSwgCi0gICAgMjcxMDUsIDI3MTEzLCAyNzExOCwgMjcxMzAsIDI3MTQxLCAyNzE0NiwgMjcxNTAsIDI3MTU3LCAyNzE2MSwgMjcxNjYsIAotICAgIDI3MTcyLCAyNzE3NSwgMjcxODAsIDI3MTg1LCAyNzE4OSwgMjcxOTMsIDI3MTk2LCAyNzIwMiwgODI0OCwgMjM1MCwgCi0gICAgMjcyMDYsIDI3MjExLCAyNzIyNywgMTAxOTgsIDI3MjQ3LCAyNzI1NiwgMjcyNzIsIDI3Mjc2LCAyNzI4MywgMjcyODYsIAotICAgIDI3MjkyLCAyNzMwMiwgMjczMDgsIDI3MzE3LCAyNzMzMiwgMjczNDQsIDI3MzU1LCAyNzM2MywgMjczNzIsIDI3Mzc4LCAKLSAgICAyNzM4NywgMjczOTcsIDI3NDA3LCAyNzQxOCwgMjc0MjksIDI3NDM5LCAyNzQ0OCwgMjc0NTUsIDI3NDY0LCAyNzQ3MiwgCi0gICAgMjc0NzksIDI3NDg3LCAyNzQ5NCwgMjc1MDEsIDI3NTE0LCAyNzUyMSwgMjc1MjksIDI3NTM2LCAyNzU0MiwgMjc1NDcsIAotICAgIDI3NTU2LCAyNzU2MiwgMjc1NjcsIDI3NTc1LCAyNzU4MiwgMjc1ODksIDI1MzA0LCAyNzYwMSwgMjc2MTMsIDI3NjI3LCAKLSAgICAyNzYzNSwgMjc2NDIsIDI3NjU0LCAyNzY2MywgMjc2NzIsIDI3NjgwLCAyNzY4OCwgMjc2OTYsIDI3NzAzLCAyNzcwOSwgCi0gICAgMjc3MTgsIDI3NzI2LCAyNzczNiwgMjc3NDUsIDI3NzU1LCAyNzc2NCwgMjc3NzMsIDI3NzgxLCAyNzc4NiwgMjc3OTAsIAotICAgIDI3NzkzLCAyNzc5NywgMjc4MDEsIDI3ODA1LCAyNzgwOSwgMjc4MTMsIDI3ODE5LCAyNzgyNSwgMjc4MzMsIDE2MTM5LCAKLSAgICAyNzg0MCwgMjc4NDUsIDI3ODUyLCAyNzg1OCwgMjc4NjUsIDE2MTQ3LCAyNzg3MiwgMjc4NzUsIDI3ODg3LCAyNzg5NSwgCi0gICAgMjc5MDEsIDI3OTA2LCAyNzkxMCwgMjc5MjEsIDEwNjUxLCAyNzkzMSwgMjc5MzksIDI3OTQ5LCAyNzk1OCwgMjc5NjUsIAotICAgIDI3OTcyLCAyNzk4MCwgMjc5ODQsIDE2MTU4LCAyNzk4NywgMjc5OTQsIDI3OTk4LCAyODAwNCwgMjgwMDcsIDI4MDE0LCAKLSAgICAyODAyMCwgMjgwMjcsIDI4MDMzLCAyODAzNywgMjgwNDIsIDI4MDQ2LCAyODA1NSwgMjgwNjIsIDI4MDY4LCA4MzA2LCAKLSAgICAyODA3NSwgMjgwODMsIDI4MDkwLCAyODA5NiwgMjgxMDEsIDI4MTA3LCAyODExMywgMjgxMjEsIDI4MTI3LCAyODEzMSwgCi0gICAgMjgxMzQsIDI4MTM2LCAyNzc5OCwgMjgxNDUsIDI4MTUxLCAyODE1NywgMjgxNjcsIDI4MTcyLCAyODE3OSwgMjgxODUsIAotICAgIDI4MTkwLCAyODE5NSwgMjgyMDAsIDI4MjA0LCAyODIwOSwgMjgyMTYsIDI4MjIyLCAyODIzMSwgMjgyMzUsIDI4MjQyLCAKLSAgICAyODI0OCwgMjgyNTcsIDQzNzgsIDI4MjYzLCAyODI2OSwgMjgyNzQsIDI4MjgxLCAyODI5MiwgMjgyOTcsIDI4MzAxLCAKLSAgICAyODMxMSwgMjgzMTcsIDI4MzIxLCAyODMyNiwgMjgzMzYsIDI4MzQ1LCAyODM0OSwgMjgzNTYsIDI4MzY0LCAyODM3MSwgCi0gICAgMjgzNzcsIDI4MzgyLCAyODM5MCwgMjgzOTcsIDI4NDAyLCAyODQwOSwgMjg0MjEsIDI4NDMwLCAyODQzNCwgMTQyMTIsIAotICAgIDI4NDQyLCAyODQ1MiwgMjg0NTYsIDI3MDIwLCAyODQ2NywgMjg0NzIsIDI4NDc2LCAyODQ4MywgMjg0OTAsIDIzNjcwLCAKLSAgICAyNzcyMywgMjg0OTUsIDI4NDk5LCAyODUwMiwgMjQ3MTQsIDI4NTA3LCAyODUyMSwgMjg1MzcsIDI4NTU1LCAyODU3NCwgCi0gICAgMjg1OTEsIDI4NjA5LCAyNDczMywgMjg2MjYsIDI4NjQ2LCAyNDc1MCwgMjg2NTgsIDI4NjcwLCAxNzE3OCwgMjg2ODIsIAotICAgIDI0NzcwLCAyODY5NiwgMjg3MDgsIDExNDYxLCAyODcyMiwgMjg3MjcsIDI4NzMyLCAyODczNywgMjg3NDMsIDI4NzQ5LCAKLSAgICAyODc1NSwgMjg3NTksIDI4NzY3LCAyODc3NCwgMjg3NzksIDI4Nzg5LCAyODc5NSwgMTEwNTksIDI4ODAxLCAyODgwMywgCi0gICAgMjg4MDgsIDI4ODE2LCAyODgyMCwgMjgyMTIsIDI4ODI2LCAyODgzMywgMTI2MDEsIDEyNjExLCAyODg0MCwgMjg4NTAsIAotICAgIDI4ODU1LCAyODg1OSwgMjg4NjIsIDI4ODY4LCAyODg3NiwgMjg4ODgsIDI4ODk4LCAyODkxNCwgMjg5MjcsIDI4OTQxLCAKLSAgICAxNzE5NiwgMjg5NTUsIDI4OTYyLCAyODk2NiwgMjg5NjksIDI4OTc0LCAyODk3OCwgMjg5ODUsIDI4OTkyLCAyODk5OSwgCi0gICAgMjkwMDksIDI5MDE0LCAyOTAxOSwgMjkwMjQsIDI5MDMyLCAyOTA0MCwgMjkwNDUsIDI5MDU0LCAyOTA1OSwgMzM1MywgCi0gICAgMjkwNjMsIDI5MDY2LCAyOTA2OSwgMjkwNzQsIDI5MDgxLCAyOTA4NiwgMjkxMDIsIDI5MTEwLCAyOTExOCwgOTk2NiwgCi0gICAgMjkxMjYsIDI5MTMxLCAyOTEzNSwgMjkxNDEsIDI5MTQ2LCAyOTE1MiwgMjkxNTUsIDI5MTYxLCAyOTE3MywgMjkxODEsIAotICAgIDI5MTg4LCAyOTE5NCwgMjkyMDEsIDI5MjEyLCAyOTIyNiwgMjkyMzksIDI5MjQ1LCAyOTI1NCwgMjkyNjAsIDI5MjY5LCAKLSAgICAyOTI4MSwgMjkyOTIsIDI5MzAyLCAyOTMxMSwgMjkzMjAsIDI5MzI4LCAyOTMzOSwgODI4OCwgMjkzNDYsIDI5MzUzLCAKLSAgICAyOTM1OSwgMjkzNjQsIDI5MzcwLCAyOTM3NywgMjkzODcsIDI5Mzk3LCAyOTQwNiwgMjk0MTIsIDI5NDE5LCAyOTQyNCwgCi0gICAgMjk0MzIsIDI5NDM5LCAyOTQ0NywgMjk0NTUsIDI5NDY3LCA2NTYzLCA5OTUsIDI5NDc0LCAyOTQ4MywgMjk0OTEsIDI5NDk3LCAKLSAgICAyOTUwMywgMjk1MDgsIDI5NTEyLCAyOTUxNSwgMjk1MjEsIDI5NTI4LCAyOTUzMywgMjk1MzgsIDI5NTQzLCAyOTU0NywgCi0gICAgMjk1NTksIDI5NTcwLCAyOTU3OSwgMjk1ODcsIDE2MzIzLCAyOTU5MiwgMjk1OTcsIDI5NjAzLCAyOTYwOSwgMTI1OTQsIAotICAgIDkwNTgsIDI5NjE0LCAyOTYxOCwgMjk2MjIsIDI5NjI1LCAyOTYyOCwgMjk2MzQsIDI5NjQyLCAyOTY1MCwgMjk2NTQsIAotICAgIDI5NjU4LCAyOTY2MywgMjk2NjYsIDI5Njc1LCAyOTY3OSwgMjk2ODIsIDI5NjkwLCAyOTcwMSwgMjk3MDUsIDI5NzExLCAKLSAgICAyOTcxNywgMjk3MjEsIDI5NzI3LCAyOTczNSwgMjk3NTcsIDI5NzgxLCAyOTc5MCwgMjk3OTcsIDI5ODA0LCAyOTgxMCwgCi0gICAgMjk4MTgsIDI5ODI0LCAyOTgyOSwgMjk4NDAsIDI5ODU4LCAyOTg2NSwgMjk4NzMsIDI5ODc3LCAyOTg4MiwgMjk4OTEsIAotICAgIDI5OTA0LCAyOTkxMiwgMjk5MjQsIDI5OTM1LCAyOTk0NiwgMjk5NTYsIDI5OTcwLCAyOTk3OSwgMjk5ODcsIDI5OTk5LCAKLSAgICAxMDIxNSwgMzAwMTAsIDMwMDIxLCAzMDAzMywgMzAwNDMsIDMwMDUyLCAzMDA1NywgMzAwNjEsIDMwMDY5LCAzMDA4MCwgCi0gICAgMzAwOTAsIDMwMDk1LCAzMDA5OSwgMzAxMDIsIDMwMTA1LCAzMDExMywgMzAxMjEsIDMwMTMwLCAzMDE0MCwgMzAxNDksIAotICAgIDMwMTU1LCAzMDE2OSwgMjcwMiwgMzAxOTEsIDMwMjAyLCAzMDIxMSwgMzAyMjEsIDMwMjMzLCAzMDI0MiwgMzAyNTEsIAotICAgIDMwMjYxLCAzMDI2OSwgMzAyNzcsIDMwMjg2LCAzMDI5MSwgMzAzMDIsIDMwMzA3LCAzMDMxOCwgMzAzMjIsIDMwMzMyLCAKLSAgICAzMDM0MSwgMzAzNDksIDMwMzU5LCAzMDM2OSwgMzAzNzcsIDMwMzg2LCAzMDM5MywgMzA0MDEsIDMwNDA4LCAzMDQxNywgCi0gICAgMzA0MjYsIDMwNDMwLCAzMDQzOCwgMzA0NDUsIDMwNDUzLCAzMDQ2MCwgMzA0NzEsIDMwNDg2LCAzMDQ5MywgMzA0OTksIAotICAgIDMwNTA5LCAzMDUxOCwgMzA1MjQsIDMwNTM1LCAzMDUzOSwgMzA1NDYsIDMwNTUwLCAzMDU1NiwgMTUyNjUsIDMwNTYyLCAKLSAgICAzMDU2NiwgMzA1NzEsIDMwNTc3LCAzMDU4NCwgMzA1ODgsIDMwNTkyLCAzMDYwMCwgMzA2MDgsIDMwNjE0LCAzMDYyMywgCi0gICAgMzA2MzAsIDMwNjM1LCAzMDY0MCwgMzA2NTAsIDI1MzczLCAzMDY1NCwgMzA2NTcsIDMwNjYyLCAzMDY2NywgMzA2NzIsIAotICAgIDMwNjc3LCAzMDY4MiwgMzA2ODcsIDMwNjkyLCAzMDY5NywgMzA3MDMsIDMwNzA4LCAzMDcxMywgMzA3MTksIDExOTksIDY2MCwgCi0gICAgMzA3MjQsIDMwNzMzLCAyMzk4LCAzMDc0MCwgMzA3NDUsIDMwNzQ5LCAzMDc1NSwgMTI0OCwgNTc4LCAyOTAsIDMwNzYwLCAKLSAgICAzMDc2OSwgMzA3NzcsIDMwNzg2LCAzMDc5NCwgMzA4MDUsIDMwODEzLCAzMDgyMiwgMzA4MzAsIDMwODM1LCAxMDc5NywgCi0gICAgMzA4MzksIDMwODQ3LCAzMDg1NSwgMzA4NjAsIDE2MDk0LCAzODI0LCAzMDg2NiwgMzA4NzIsIDMwODc4LCA2MTQ4LCAKLSAgICAzMDg4MywgMzA4ODcsIDMwODkzLCAzMDg5NywgMzA5MDMsIDMwOTA4LCAzMDkxNSwgMTQ0MSwgMzA5MjEsIDMwOTI4LCAKLSAgICAxMzQ4LCA2MTU2LCAzMDkzMiwgMzA5NDIsIDMwOTUwLCAzMDk1NiwgMzA5NjYsIDMwOTc1LCAzMDk4MywgMzA5ODksIAotICAgIDMwOTk3LCAzMTAwNCwgMTIxMzYsIDMxMDEwLCAzMTAxNywgMzEwMjIsIDMxMDI5LCAxNDk0LCAyMTksIDIxNzMsIDMxMDM1LCAKLSAgICAzMTA0MSwgMzEwNDgsIDMxMDU5LCAzMTA3MCwgMzEwNzgsIDMxMDg1LCAzMTA5NSwgMzExMDQsIDMxMTEyLCAzMTEyMSwgCi0gICAgMzExMjgsIDMxMTM1LCAzMTE0OCwgMzExNTUsIDMxMTYxLCAzMTE3MiwgMzExOTEsIDEyNTMsIDMxMTk2LCAzMTIwMSwgCi0gICAgMzEyMDksIDM3NDIsIDMxMjEzLCAzMTIxOCwgMzEyMjIsIDMxMjI2LCAxNDQ1LCAyNjYzNywgMzEyMzYsIDMxMjQwLCAKLSAgICAzMTI0NSwgMzEyNDksIDM2MTksIDMxMjU1LCAzMTI2MywgMzEyNzAsIDMxMjgxLCAzMTI4OSwgMzEyOTcsIDM3NDMsIDM0NiwgCi0gICAgMzEzMDIsIDMxMzEwLCAzMTMxOCwgMzEzMjUsIDMxMzMxLCAzMTMzNiwgMjI0MiwgMTE2MjgsIDMxMzQzLCAzMTM0OSwgCi0gICAgMjgwMzgsIDI4Mjg3LCAzMTM1NSwgNTc0LCAxMDYsIDMxMzU5LCAzMTM2MywgMzEzNjksIDY2MywgOTg0MSwgMzEzNzQsIAotICAgIDMxMzgxLCAzMTM4NywgMzEzOTEsIDE2MzksIDMxMzk0LCAzMTM5OCwgMTY1NzYsIDMxNDAxLCAzMTQwNiwgMzE0MTMsIAotICAgIDMxNDE5LCAzMTQyNCwgMzE0MzIsIDMxNDM5LCAzMTQ0NSwgMjQxMzIsIDMxNDQ5LCAzMTQ1MywgMzE0NTcsIDM4MTMsIAotICAgIDE4MTgwLCAzMTQ2MSwgMzE0NjYsIDMxNDcwLCAzMTQ3MywgMzE0ODEsIDMxNDg5LCAzMTQ5NCwgMzE1MDIsIDMxNTA1LCAKLSAgICAzMTUxMiwgMzE1MjIsIDMxNTM0LCAzMTUzOSwgMzE1NDMsIDMxNTUxLCAzMTU1OCwgMzE1NjQsIDMxNTcxLCAzMTU3OCwgCi0gICAgMzE1ODEsIDMxNTg1LCAzMTU4OSwgMTQ0OSwgMzE1OTksIDMxNjAxLCAzMTYwNiwgMzE2MTIsIDMxNjE4LCAzMTYyMywgCi0gICAgMzE2MjgsIDMxNjMzLCAzMTYzOCwgMzE2NDMsIDMxNjQ4LCAzMTY1MywgMzE2NTgsIDMxNjYzLCAzMTY2OCwgMzE2NzMsIAotICAgIDMxNjc4LCAzMTY4MywgMzE2ODgsIDMxNjk0LCAzMTcwMCwgMzE3MDYsIDMxNzEyLCAzMTcxNywgMzE3MjIsIDMxNzI3LCAKLSAgICAzMTczMywgMzE3MzgsIDMxNzQzLCAzMTc0OCwgMzE3NTQsIDMxNzU5LCAzMTc2NSwgMzE3NzAsIDMxNzc1LCAzMTc4MCwgCi0gICAgMzE3ODUsIDMxNzkxLCAzMTc5NiwgMzE4MDIsIDMxODA3LCAzMTgxMiwgMzE4MTcsIDMxODIyLCAzMTgyOCwgMzE4MzMsIAotICAgIDMxODM5LCAzMTg0NCwgMzE4NDksIDMxODU0LCAzMTg1OSwgMzE4NjQsIDMxODY5LCAzMTg3NCwgMzE4NzksIDMxODg0LCAKLSAgICAzMTg5MCwgMzE4OTYsIDMxOTAyLCAzMTkwNywgMzE5MTIsIDMxOTE3LCAzMTkyMiwgMzE5MjgsIDMxOTM0LCAzMTk0MCwgCi0gICAgMzE5NDYsIDMxOTUyLCAzMTk1OCwgMzE5NjMsIDMxOTY5LCAzMTk3NCwgMzE5NzksIDMxOTg0LCAzMTk4OSwgMzE5OTUsIAotICAgIDI0ODIsIDMyMDAwLCAyNDg5LCAyNDk2LCAyNzkzLCAzMjAwNSwgMjUwMiwgMjUxMiwgMzIwMTEsIDMyMDE1LCAzMjAyMCwgCi0gICAgMzIwMjUsIDMyMDMxLCAzMjAzNiwgMzIwNDEsIDMyMDQ1LCAzMjA1MCwgMzIwNTYsIDMyMDYxLCAzMjA2NiwgMzIwNzEsIAotICAgIDMyMDc3LCAzMjA4MiwgMzIwODYsIDMyMDkwLCAzMjA5NSwgMzIxMDAsIDMyMTA1LCAzMjExMCwgMzIxMTUsIDMyMTIxLCAKLSAgICAzMjEyNywgMzIxMzIsIDMyMTM2LCAzMjE0MSwgMzIxNDcsIDMyMTUxLCAzMjE1NiwgMzIxNjEsIDMyMTY2LCAzMjE3MSwgCi0gICAgMzIxNzUsIDMyMTc4LCAzMjE4MywgMzIxODgsIDMyMTkzLCAzMjE5OCwgMzIyMDMsIDMyMjA5LCAzMjIxNSwgMzIyMjAsIAotICAgIDMyMjI1LCAzMjIzMCwgMzIyMzQsIDMyMjM5LCAzMjI0NCwgMzIyNDksIDMyMjU0LCAzMjI1OSwgMzIyNjQsIDMyMjY4LCAKLSAgICAzMjI3MywgMzIyNzgsIDMyMjgzLCAzMjI4NywgMzIyOTEsIDMyMjk1LCAzMjMwMCwgMzIzMDgsIDMyMzEzLCAzMjMxOCwgCi0gICAgMzIzMjQsIDMyMzMwLCAzMjMzNiwgMzIzNDEsIDMyMzQ1LCAzMjM0OCwgMzIzNTMsIDMyMzU4LCAzMjM2MiwgMzIzNjcsIAotICAgIDMyMzcyLCAzMjM3NiwgMzIzODEsIDMyMzg1LCAzMjM4OCwgMzIzOTMsIDM5MTQsIDE4OTA2LCAzMjM5OCwgMzI0MDMsIAotICAgIDMyNDA4LCAzMjQxNiwgMjI5NTksIDMwOTI1LCA5NTE4LCAzMjQyMSwgMzI0MjYsIDMyNDMwLCAzMjQzNSwgMzI0MzksIAotICAgIDMyNDQzLCAzMjQ0OCwgMzI0NTIsIDMyNDU1LCAzMjQ1OCwgMzI0NjIsIDMyNDY3LCAzMjQ3MSwgMzI0NzksIDMyNDgzLCAKLSAgICAzMjQ4NiwgMzI0OTEsIDMyNDk1LCAzMjQ5OSwgMzI1MDQsIDMyNTA5LCAzMjUxMywgMzI1MTksIDMyNTI0LCAzMjUyOSwgCi0gICAgMzI1MzYsIDMyNTQzLCAzMjU0NywgMzI1NTAsIDMyNTU2LCAzMjU2NSwgMzI1NzIsIDMyNTgwLCAzMjU4NywgMzI1OTEsIAotICAgIDMyNTk2LCAzMjYwMCwgMzI2MDQsIDMyNjEwLCAzMjYxNiwgMzI2MjAsIDMyNjI2LCAzMjYzMSwgMzI2MzYsIDMyNjQwLCAKLSAgICAzMjY0NywgMzI2NTMsIDMyNjU5LCAzMjY2NSwgMzI2NzEsIDMyNjc4LCAzMjY4NCwgMzI2OTAsIDMyNjk2LCAzMjcwMiwgCi0gICAgMzI3MDgsIDMyNzE0LCAzMjcyMCwgMzI3MjcsIDMyNzMzLCAzMjc0MCwgMzI3NDYsIDMyNzUyLCAzMjc1OCwgMzI3NjQsIAotICAgIDMyNzcwLCAzMjc3NiwgMzI3ODIsIDMyNzg4LCAzMjc5NCwgMTI0NzksIDMyODAwLCAzMjgwNiwgMzI4MTEsIDMyODE2LCAKLSAgICAzMjgyMSwgMzI4MjQsIDMyODMwLCAzMjgzOCwgMzI4NDMsIDMyODQ3LCAzMjg1MiwgMzI4NTgsIDMyODY3LCAzMjg3MywgCi0gICAgMzI4NzgsIDMyODgzLCAzMjg4OCwgMzI4OTIsIDMyODk3LCAzMjkwMiwgMzI5MDcsIDMyOTEyLCAzMjkxNywgMzI5MjQsIAotICAgIDMyOTMxLCAzMjkzNywgMzI5NDMsIDMyOTQ4LCAxNzgyMiwgMzI5NTUsIDMyOTYxLCAzMjk2OCwgMzI5NzQsIDMyOTgwLCAKLSAgICAzMjk4NSwgMzI5OTMsIDMyOTk4LCAxMDM3MiwgMzMwMDIsIDMzMDA3LCAzMzAxMiwgMzMwMTgsIDMzMDIzLCAzMzAyOCwgCi0gICAgMzMwMzIsIDMzMDM3LCAzMzA0MiwgMzMwNDgsIDMzMDUzLCAzMzA1OCwgMzMwNjMsIDMzMDY3LCAzMzA3MiwgMzMwNzcsIAotICAgIDMzMDgxLCAzMzA4NiwgMzMwOTEsIDMzMDk1LCAzMzEwMCwgMzMxMDQsIDMzMTA5LCAzMzExNCwgMzMxMTksIDMzMTIzLCAKLSAgICAzMzEyOCwgMzMxMzIsIDMzMTM2LCAxNjY4MiwgMzMxNDEsIDMzMTUwLCAzMzE1NiwgMzMxNjIsIDMzMTcxLCAzMzE3OSwgCi0gICAgMzMxODgsIDMzMTk2LCAzMzIwMSwgMzMyMDUsIDMzMjEyLCAzMzIxOCwgMzMyMjYsIDMzMjMwLCAzMzIzMywgMzMyMzgsIAotICAgIDMzMjQyLCAzMzI1MSwgMzMyNTksIDMzMjc3LCAzMzI4MywgMTQ5MywgMzMyODksIDMzMjkyLCAzMzI5NiwgMjQyMzgsIAotICAgIDI0MjQ0LCAzMzMwMiwgMzMzMDYsIDMzMzE3LCAzMzMyOCwgMzMzMzksIDMzMzUxLCAzMzM1NSwgMzMzNjIsIDMzMzY5LCAKLSAgICAzMzM3NCwgMzMzNzgsIDYyMDQsIDkyOCwgMjI5NTgsIDMzMzg2LCAzMzM5MSwgMzMzOTUsIDMzNDAwLCAzMzQwNCwgMzM0MTAsIAotICAgIDMzNDE1LCAzMzQyMSwgMzM0MjYsIDMzNDMyLCAzMzQzNywgMzM0NDMsIDMzNDQ4LCAzMzQ1NCwgMzM0NjAsIDMzNDY2LCAKLSAgICAzMzQ3MSwgMzM0MjcsIDMzNDMzLCAzMzQ3NSwgMzM0ODAsIDMzNDg2LCAzMzQ5MSwgMzM0OTcsIDMzNTAyLCAzMzUwOCwgCi0gICAgMzM1MTMsIDMzNDM4LCAxMTMxNCwgMzM1MTcsIDMzNDQ5LCAzMzQ1NSwgMzM0NjEsIDI4ODUsIDM1MzMsIDMzNTIzLCAKLSAgICAzMzUyNiwgMzM1MzEsIDMzNTM3LCAzMzU0MywgMzM1NDksIDMzNTU2LCAzMzU2MiwgMzM1NjgsIDMzNTc0LCAzMzU4MCwgCi0gICAgMzM1ODYsIDMzNTkyLCAzMzU5OCwgMzM2MDQsIDMzNjEwLCAzMzYxNiwgMzM2MjIsIDMzNjI4LCAzMzYzNSwgMzM2NDEsIAotICAgIDMzNjQ3LCAzMzY1MywgMzM2NTksIDMzNjY1LCAzMzY2OCwgMzM2NzMsIDMzNjc2LCAzMzY4MywgMzM2ODgsIDMzNjk2LCAKLSAgICAzMzcwMSwgMzM3MDYsIDMzNzEyLCAzMzcxNywgMzM3MjIsIDMzNzI2LCAzMzczMSwgMzM3MzcsIDMzNzQyLCAzMzc0OCwgCi0gICAgMzM3NTMsIDMzNzU5LCAzMzc2NCwgMzM3NzAsIDMzNzc2LCAzMzc4MCwgMzM3ODUsIDMzNzkwLCAzMzc5NSwgMzM4MDAsIAotICAgIDMzODA0LCAzMzgwOSwgMzM4MTQsIDMzODE5LCAzMzgyNSwgMzM4MzEsIDMzODM3LCAzMzg0MywgMzM4NDgsIDMzODUyLCAKLSAgICAzMzg1NSwgMzM4NjEsIDMzODY3LCAzMzg3NiwgMzM4ODQsIDMzODkxLCAzMzg5NiwgMzM5MDAsIDMzOTA0LCAzMzkwOSwgCi0gICAgMTY1MzAsIDMzOTE0LCAzMzkyMiwgMzM5MjgsIDM4NjYsIDEzNTgsIDMzOTMzLCAzMzkzNywgODM1OSwgMzM5NDMsIDMzOTQ5LCAKLSAgICAzMzk1NiwgODM2OCwgMzM5NjAsIDMzOTY2LCAzMzk3MywgMzM5NzksIDMzOTg4LCAzMzk5NiwgOTI0NCwgMzQwMDgsIAotICAgIDM0MDEyLCAzNDAxOSwgMzQwMjUsIDM0MDMwLCAzNDAzNCwgMzQwMzgsIDM0MDQxLCAzNDA1MSwgMzQwNjAsIDM0MDY4LCAKLSAgICAzMzQyOCwgMzQwNzMsIDM0MDgzLCAzNDA5MywgMzQxMDMsIDM0MTA5LCAzNDExNCwgMzQxMjQsIDM0MTI5LCAzNDE0MiwgCi0gICAgMzQxNTYsIDM0MTY3LCAzNDE3OSwgMzQxOTEsIDM0MjA1LCAzNDIxOCwgMzQyMzAsIDM0MjQyLCAxNTg5OSwgMzQyNTYsIAotICAgIDM0MjYxLCAzNDI2NiwgMzQyNzAsIDM0Mjc0LCAzNDI3OCwgMTc5NSwgMjkyOTAsIDM0MjgyLCAzNDI4NywgMzM0NzYsIAotICAgIDM0MjkyLCAzNDI5NSwgMzQzMDAsIDM0MzA1LCAzNDMxMCwgMzQzMTYsIDM0MzIyLCAxMDk3NCwgMzQzMjcsIDM0MzMzLCAKLSAgICAzNDM0MCwgMTcxMzAsIDM0MzQ2LCAzNDM1MSwgMzQzNTYsIDM0MzYwLCAzNDM2NSwgMzQzNzAsIDMzNDgxLCAzNDM3NSwgCi0gICAgMzQzODAsIDM0Mzg1LCAzNDM5MSwgMzM0ODcsIDM0Mzk2LCAzNDM5OSwgMzQ0MDYsIDM0NDE0LCAzNDQyMCwgMzQ0MjYsIAotICAgIDM0NDMyLCAzNDQ0MywgMzQ0NDgsIDM0NDU1LCAzNDQ2MiwgMzQ0NjksIDM0NDc3LCAzNDQ4NiwgMzQ0OTUsIDM0NTAxLCAKLSAgICAzNDUwNywgMzQ1MTUsIDMzNDkyLCAzNDUyMCwgMzQ1MjYsIDM0NTMyLCAzMzQ5OCwgMzQ1MzcsIDM0NTQyLCAzNDU1MCwgCi0gICAgMzQ1NTgsIDM0NTY0LCAzNDU3MSwgMzQ1NzcsIDM0NTg0LCAzNDU5MSwgMzQ1OTcsIDM0NjA1LCAzNDYxNSwgMzQ2MjIsIAotICAgIDM0NjI4LCAzNDYzMywgMzQ2MzksIDM0NjQ0LCAzNDY0OSwgMzQ2NTYsIDM0NjY1LCAzNDY3MywgMzQ2NzgsIDM0Njg0LCAKLSAgICAzNDY5MSwgMzQ2OTksIDM0NzA1LCAzNDcxMCwgMzQ3MTYsIDM0NzI1LCAzNDczMiwgMzAxMzUsIDM0NzM4LCAzNDc0MiwgCi0gICAgMzQ3NDcsIDM0NzU2LCAzNDc2MSwgMzQ3NjYsIDM0NzcxLCAxMzU0OCwgMzQ3NzksIDM0Nzg0LCAzNDc4OSwgMzQ3OTQsIAotICAgIDM0Nzk4LCAzNDgwMywgMzQ4MDgsIDM0ODE1LCAzNDgyMCwgMzQ4MjUsIDM0ODMwLCAzMzUwMywgMjI4OTUsIDM0ODM2LCAKLSAgICAyNTU4LCAxNDQsIDM0ODM5LCAzNDg0MiwgMzQ4NDYsIDM0ODUwLCAzNDg2MCwgMzQ4NjgsIDM0ODc1LCAzNDg3OSwgMzQ4ODIsIAotICAgIDM0ODkwLCAzNDg5NywgMzQ5MDQsIDM0OTEzLCAzNDkxNywgMzQ5MjAsIDM0OTI2LCAzNDkzMCwgMzQ5MzgsIDM0OTQ2LCAKLSAgICAzNDk1MCwgMzQ5NTQsIDM0OTU3LCAzNDk2MywgMzQ5NzAsIDM0OTc0LCAzNDk3OCwgMzQ5ODUsIDM0OTkzLCAzMzQzOSwgCi0gICAgMzUwMDAsIDM1MDA4LCAzNTAxMywgMTEwMzQsIDYyMywgMzY5LCAzNTAyNSwgMzUwMzAsIDM1MDM1LCAzNTA0MSwgMzUwNDYsIAotICAgIDM1MDUxLCAzODg3LCAzNTA1NiwgMzUwNTksIDM1MDY0LCAzNTA2OSwgMzUwNzQsIDM1MDc5LCAzNTA4NCwgMzUwOTEsIAotICAgIDI0MzU2LCAzNTA5NiwgMzUxMDEsIDM1MTA2LCAzNTExMSwgMzUxMTYsIDM1MTIyLCAzNTEyNywgMzUxMzMsIDMzNjc5LCAKLSAgICAzNTEzOSwgMzUxNDQsIDM1MTUwLCAzNTE1NiwgMzUxNjYsIDM1MTcxLCAzNTE3NiwgMzUxODAsIDM1MTg1LCAzNTE5MCwgCi0gICAgMzUxOTUsIDM1MjAwLCAzNTIxMywgMzUyMTgsIDI0MDE5LCAxODI1NSwgMzkwMCwgMzUyMjIsIDM1MjI4LCAzNTIzMywgCi0gICAgMzUyMzgsIDM1MjQ0LCAzNTI0OSwgMzUyNTQsIDM1MjU4LCAzNTI2MywgMzUyNjgsIDM1Mjc0LCAzNTI3OSwgMzUyODQsIAotICAgIDEzNjMsIDM1Mjg4LCAzNTI5MywgMzUyOTgsIDM1MzAzLCAzNTMwNywgMzUzMTIsIDM1MzE3LCAzNTMyMiwgMzUzMjgsIAotICAgIDM1MzM0LCAzNTMzOSwgMzUzNDMsIDM1MzQ3LCAzNTM1MiwgMzUzNTcsIDM1MzYyLCAzNTM2NiwgMzUzNzQsIDM1Mzc4LCAKLSAgICAzNTM4NCwgMzUzODgsIDM1Mzk1LCAxODAzOSwgMzM0NTAsIDM1NDAxLCAzNTQwOCwgMzU0MTYsIDM1NDIzLCAzNTQyOSwgCi0gICAgMzU0NDIsIDM1NDU0LCAzNTQ1OSwgMzU0NjUsIDM1NDY5LCAyODEyLCAzNTQ3MywgMzU0NzcsIDM0OTY1LCAzNTQ4NiwgCi0gICAgMzU0OTcsIDM1NTAyLCAzMDE5OCwgMzU1MDcsIDM1NTEyLCAzNTUxNiwgMzU1MjEsIDI0MjQ5LCAzNTUyNSwgMzU1MjksIAotICAgIDM1NTM0LCAzMzQ1NiwgMjI5ODUsIDM1NTM4LCAzNTU0MywgMzU1NDksIDM1NTU0LCAzNTU1OCwgMzU1NjIsIDM1NTY1LCAKLSAgICAzNTU2OSwgMzU1NzUsIDM1NTg0LCAzNTU5NSwgMzU2MDcsIDMzNDYyLCAzNTYxMiwgMzU2MTUsIDM1NjE5LCAzNTYyMywgCi0gICAgNDA2LCAzNTYyOCwgMzU2MzMsIDM1NjM4LCAzNTY0MywgMzU2NDgsIDM1NjUzLCAzNTY1OSwgMzU2NjQsIDM1NjY5LCAKLSAgICAzNTY3NSwgMzU2ODAsIDM1Njg2LCAzNTY5MSwgMzU2OTcsIDM1NzAyLCAzNTcwNywgMzU3MTIsIDM1NzE3LCAzNTcyMiwgCi0gICAgMzU3MjcsIDM1NzMyLCAzNTczNywgMzU3NDMsIDM1NzQ4LCAzNTc1MywgMzU3NTgsIDM1NzYzLCAzNTc2OCwgMzU3NzMsIAotICAgIDM1Nzc4LCAzNTc4NCwgMzU3OTAsIDM1Nzk1LCAzNTgwMCwgMzU4MDUsIDM1ODEwLCAzNTgxNSwgMzU4MjAsIDM1ODI1LCAKLSAgICAzNTgzMCwgMzU4MzUsIDM1ODQwLCAzNTg0NSwgMzU4NTAsIDM1ODU1LCAzNTg2MCwgMzU4NjUsIDM1ODcwLCAzNTg3NSwgCi0gICAgMzU4ODAsIDM1ODg2LCAzMjUsIDksIDM1ODkxLCAzNTg5NSwgMzU4OTksIDM1OTA3LCAzNTkxMSwgMzU5MTUsIDM1OTE4LCAKLSAgICAzNTkyMSwgMzU5MjMsIDM1OTI4LCAzNTkzMiwgMzU5MzcsIDM1OTQxLCAzNTk0NiwgMzU5NTAsIDM1OTU1LCAzNTk1OSwgCi0gICAgMzU5NjIsIDM1OTY0LCAzNTk2OCwgMzU5NzMsIDM1OTc3LCAzNTk4OCwgMzU5OTEsIDM1OTkzLCAzNTk5NywgMzYwMDksIAotICAgIDM2MDE4LCAzNjAyMiwgMzYwMjYsIDM2MDMyLCAzNjAzNywgMzYwNDYsIDM2MDUyLCAzNjA1NywgMzYwNjIsIDM2MDY2LCAKLSAgICAzNjA3MCwgMzYwNzUsIDM2MDgyLCAzNjA4NywgMzYwOTMsIDM2MDk4LCAzNjEwMiwgMzYxMDksIDI3NzMxLCAyNzc0MSwgCi0gICAgMzYxMTMsIDM2MTE4LCAzNjEyMywgMzYxMjgsIDM2MTM1LCAzNjEzOSwgMzYxNDYsIDM2MTUyLCA4NDkxLCAzNjE1NiwgCi0gICAgMzYxNjUsIDM2MTczLCAzNjE4OCwgMzYyMDIsIDM2MjExLCAzNjIxOSwgMzYyMzAsIDM2MjM5LCAzNjI0NCwgMzYyNTEsIAotICAgIDc1NTYsIDM2MjYxLCAzNjI2NiwgMzYyNzEsIDM2Mjc1LCAzNjI3OCwgMzYyODMsIDM2Mjg3LCAzNjI5MiwgMzYyOTYsIAotICAgIDM2MzAzLCAzNjMwOCwgMzYzMTMsIDM2MzE4LCA5MzkxLCAzNjMyOCwgMzYzMzAsIDM2MzMzLCAzNjMzNiwgMzYzNDAsIAotICAgIDM2MzQ2LCAzNjM1MCwgMzYzNTUsIDM2MzYwLCAzNjM3OCwgMzYzOTIsIDM2NDExLCAzNjQyOCwgMzY0MzcsIDM2NDQ1LCAKLSAgICAzNjQ1MCwgMzY0NTUsIDE0ODYsIDM2NDYxLCAzNjQ2NywgMzY0NzIsIDM2NDgyLCAzNjQ5MSwgMzY0OTksIDM2NTA0LCAKLSAgICAzNjUxMCwgMzY1MTUsIDM2NTI0LCAzNjUzNSwgMzY1NDAsIDM2NTQ3LCAzNjU1MSwgMzY1NTgsIDM2NTY2LCAzNjU3MywgCi0gICAgMzY1ODYsIDM2NTk0LCAzNjU5OCwgMzY2MDgsIDM2NjEzLCAzNjYxNywgMzY2MjUsIDM2NjMzLCAzNjYzOCwgMzY2NDIsIAotICAgIDM2NjQ2LCAzNjY1NSwgMzY2NjEsIDM2NjY2LCAzNjY3NCwgMzY2ODQsIDM2NjkzLCAzNjcwMiwgMzY3MTEsIDM2NzIyLCAKLSAgICAzNjczMCwgMzY3NDEsIDM2NzUwLCAzNjc1NywgMzY3NjMsIDM2NzY4LCAzNjc3OSwgMzY3OTAsIDM2Nzk1LCAzNjc5OSwgCi0gICAgMzY4MDIsIDM2ODA2LCAzNjgxNCwgMzY4MjAsIDM2ODMxLCAzNjg0MiwgMzY4NTMsIDM2ODY0LCAzNjg3NSwgMzY4ODYsIAotICAgIDM2ODk3LCAzNjkwOCwgMzY5MjAsIDM2OTMyLCAzNjk0NCwgMzY5NTYsIDM2OTY4LCAzNjk4MCwgMzY5OTIsIDM2OTk2LCAKLSAgICAzNzAwNCwgMzcwMTAsIDM3MDE3LCAzNzAyMywgMzcwMjgsIDM3MDM0LCAyNDU3LCAzNzAzOCwgMzcwNDAsIDM3MDQ1LCAKLSAgICAzNzA1MCwgMzcwNTUsIDM3MDU4LCAzNzA2MCwgMzcwNjQsIDM3MDY3LCAzNzA3NCwgMzcwNzgsIDEwNjY0LCAzNzA4MiwgCi0gICAgMzcwODgsIDM3MDk4LCAzNzEwMywgMzcxMDksIDM3MTEzLCAzNzExOCwgMzcxMzEsIDI4MTYyLCAzNzEzNywgMzcxNDYsIAotICAgIDM3MTU1LCAxOTEwNCwgMzcxNjIsIDM3MTcxLCAzNDA4OSwgMzcxNzksIDM3MTg0LCAzNzE4OCwgMzcxOTcsIDM3MjA1LCAKLSAgICAzNzIxMiwgMzcyMTcsIDM3MjIxLCAzNzIyNiwgMzcyMzQsIDM3MjM4LCAzNzI0NiwgMzcyNTIsIDM3MjU4LCAzNzI2MywgCi0gICAgMzcyNjcsIDM3MjcwLCAzNzI3NSwgMzcyODgsIDM3MzA0LCAyNDg0MCwgMzczMjEsIDM3MzMzLCAzNzM1MCwgMzczNjIsIAotICAgIDM3Mzc2LCAyNDg1NywgMjQ4NzYsIDM3Mzg4LCAzNzQwMCwgMjcxOSwgMzc0MTQsIDM3NDE5LCAzNzQyNCwgMzc0MjksIAotICAgIDM3NDMzLCAzNzQ0MCwgMzc0NTIsIDM3NDU5LCAzNzQ2OCwgMzc0NzEsIDM3NDgyLCAzNzQ5MywgMzc0OTgsIDM0NTEyLCAKLSAgICA4NTIsIDM3NTAyLCAzNzUwNiwgMzc1MTAsIDM3NTEzLCAzNzUxOCwgMzc1MjMsIDM3NTI5LCAzNzUzNCwgMzc1MzksIAotICAgIDM3NTQ1LCAzNzU1MSwgMzc1NTYsIDM3NTYwLCAzNzU2NSwgMzc1NzAsIDM3NTc1LCAzNzU3OSwgMzc1ODIsIDM3NTg4LCAKLSAgICAzNzU5MywgMzc1OTgsIDM3NjAzLCAzNzYwNywgMzc2MTIsIDM3NjE4LCAzNzYyNiwgMjg0MTQsIDM3NjMxLCAzNzYzNiwgCi0gICAgMzc2NDMsIDM3NjQ5LCAzNzY1NSwgMzc2NjAsIDM3NjY4LCAyNDM2NSwgMzc2NzUsIDM3NjgwLCAzNzY4NSwgMzc2OTAsIAotICAgIDM3Njk0LCAzNzY5NywgMzc3MDIsIDM3NzA2LCAzNzcxMCwgMzc3MTcsIDM3NzIzLCAzNzcyOSwgMzc3MzUsIDM3NzQyLCAKLSAgICAzNzc0NywgMzc3NTMsIDM2NjI4LCAzNzc1NywgMzc3NjEsIDM3NzY2LCAzNzc3OSwgMzc3ODQsIDM3NzkwLCAzNzc5OCwgCi0gICAgMzc4MDUsIDM3ODEzLCAzNzgyMywgMzc4MjksIDM3ODM1LCAzNzg0MSwgMzc4NDUsIDM3ODU0LCAzNzg2MiwgMzc4NjksIAotICAgIDM3ODc0LCAzNzg3OSwgMTEzMzcsIDM3ODg0LCAzNzg5MSwgMzc4OTcsIDM3OTA3LCAzNzkxMiwgMzc5MTgsIDM3OTI2LCAKLSAgICAzNzc1LCAzNzkzMywgMzc5NDAsIDM3OTQ2LCAzNzk1MywgMzc4MSwgMzc5NTcsIDM3OTYyLCAzNzk3MywgMzc5ODAsIAotICAgIDM3OTg2LCAzNzk5NSwgMzc5OTksIDQyNDQsIDM4MDAyLCAzODAwOSwgMzgwMTUsIDM4MDIxLCAzODAyOSwgMzgwMzksIAotICAgIDMxMzI2LCAzODA0NiwgMzgwNTQsIDM4MDYwLCAzODA2NSwgMzgwNzEsIDM4MDc2LCAzODA4MCwgMjgwMTAsIDM4MDg2LCAKLSAgICAzODA5MywgMzgwOTksIDM4MTA4LCAzODExNSwgMjU1NjUsIDM4MTIxLCAzODEyNiwgMzgxMzAsIDM4MTM4LCAzODE0NiwgCi0gICAgMTAzMzAsIDYxNzksIDM4MTUzLCAzODE1NywgMzgxNTksIDM4MTYzLCAzODE2OCwgMzgxNzAsIDM4MTc1LCAzODE4MSwgCi0gICAgMzgxODYsIDM4MTkxLCAzODE5OCwgMzUwODcsIDM4MjA0LCAzODIwOSwgMzgyMTMsIDM4MjE4LCAzODIyMiwgMzgyMzEsIAotICAgIDM4MjM1LCAzODI0MSwgMzgyNDgsIDM4MjU0LCAzODI2MSwgMzgyNjYsIDM4Mjc1LCAzODI4MCwgMzgyODQsIDM4Mjg5LCAKLSAgICAzODI5NiwgMzgzMDQsIDM4MzEyLCAzODMxNywgMjMwNDEsIDM4MzIxLCAzODMyNCwgMzgzMjgsIDM4MzMyLCAxMTcyNSwgCi0gICAgODcyLCAzODMzNiwgMzgzNDEsIDM4MzQ5LCAzODM1MywgMzgzNjIsIDM4MzY5LCAzODM3MywgMzgzNzcsIDM4Mzg1LCAKLSAgICAzODM5MiwgMzg0MDIsIDM4NDA2LCAzODQxMCwgMzg0MTgsIDM4NDI2LCAzODQzMiwgMzg0MzcsIDM4NDQ2LCAxNDUzMCwgCi0gICAgMzg0NTIsIDM4NDYxLCAzODQ2NiwgMzg0NzMsIDM4NDgwLCAzODQ4OCwgMzg0OTYsIDM4NTA0LCAzODUwOSwgMzg1MTYsIAotICAgIDM4NTIzLCAzODUzMCwgMzg1MzcsIDM4NTQ0LCAzODU0OSwgMzg1NTUsIDM4NTcyLCAzODU4MCwgMzg1OTAsIDM4NTk4LCAKLSAgICAzODYwNSwgNDE0LCAzODYwOSwgMzg2MTUsIDM4NjE5LCAzODYyNCwgMzYyMzUsIDM4NjMwLCAzODYzMywgMzg2MzcsIAotICAgIDM4NjQ4LCAzODY1NiwgMzc4NiwgMzg2NjQsIDM4NjcwLCAzODY3NiwgMzg2ODYsIDM4Njk1LCAzODcwNSwgMzg3MTIsIAotICAgIDM4NzE4LCAzODcyMywgMzc5MiwgMzc5OCwgMzg3MzIsIDM4NzM5LCAzODc0NywgMzg3NTIsIDM4NzU2LCAzODc2MywgCi0gICAgMzg3NzEsIDM4Nzc4LCAzODc4NCwgMzg3OTMsIDM4ODAzLCAzODgwOSwgMzg4MTcsIDM4ODI2LCAzODgzMywgMzg4NDEsIAotICAgIDM4ODQ4LCAyMzcyOCwgMzg4NTIsIDM4ODU5LCAzODg2NSwgMzg4NzUsIDM4ODg0LCAzODg5MiwgMzg5MDMsIDM4OTA3LCAKLSAgICAzODkxNywgMzg5MjMsIDM4OTMwLCAzODkzOCwgMzg5NDcsIDM4OTU2LCAzODk2NiwgMzg5NzcsIDM4OTg0LCAzODk4OSwgCi0gICAgMzg5OTYsIDMwODgsIDM5MDA0LCAzOTAxMCwgMzkwMTUsIDM5MDIxLCAzOTAyNywgMzkwMzIsIDM5MDQ1LCAzOTA1OCwgCi0gICAgMzkwNzEsIDM5MDc4LCAzOTA4NCwgMzkwOTIsIDM5MTAwLCAzOTEwNSwgMzkxMDksIDE0NTUsIDM5MTEzLCAzOTExNywgCi0gICAgMzkxMjEsIDM5MTI1LCAzOTEyOSwgMzkxMzMsIDM5MTM3LCAzOTE0MSwgMzkxNDUsIDM5MTQ5LCAzOTE1MywgMzkxNTcsIAotICAgIDM5MTYxLCAzOTE2NSwgMzkxNjksIDM5MTczLCAzOTE3NywgMzkxODEsIDM5MTg1LCAzOTE4OSwgMzkxOTMsIDM5MTk3LCAKLSAgICAzOTIwMSwgMzkyMDUsIDM5MjA5LCAzOTIxMywgMzkyMTcsIDM5MjIxLCAzOTIyNSwgMzkyMjksIDM5MjMzLCAzOTIzNywgCi0gICAgMzkyNDEsIDM5MjQ1LCAzOTI0OSwgMzkyNTMsIDM5MjU3LCAzOTI2MSwgMzkyNjUsIDM5MjY5LCAzOTI3MywgMzkyNzcsIAotICAgIDM5MjgxLCAzOTI4NSwgMzkyODksIDM5MjkzLCAzOTI5NywgMzkzMDEsIDM5MzA1LCAzOTMwOSwgMzkzMTMsIDM5MzE3LCAKLSAgICAzOTMyMSwgMzkzMjUsIDM5MzI5LCAzOTMzMywgMzkzMzcsIDM5MzQxLCAzOTM0NSwgMzkzNDksIDM5MzUzLCAzOTM1NywgCi0gICAgMzkzNjEsIDM5MzY1LCAzOTM2OSwgMzkzNzMsIDM5Mzc3LCAzOTM4MSwgMzkzODUsIDM5Mzg5LCAzOTM5MywgMzkzOTcsIAotICAgIDM5NDAxLCAzOTQwNSwgMzk0MDksIDM5NDEzLCAzOTQxNywgMzk0MjEsIDM5NDI1LCAzOTQyOSwgMzk0MzMsIDM5NDM3LCAKLSAgICAzOTQ0MSwgMzk0NDUsIDM5NDQ5LCAzOTQ1MywgMzk0NTcsIDM5NDYxLCAzOTQ2NSwgMzk0NjksIDM5NDczLCAzOTQ3NywgCi0gICAgMzk0ODEsIDM5NDg1LCAzOTQ4OSwgMzk0OTMsIDM5NDk3LCAzOTUwMSwgMzk1MDUsIDM5NTA5LCAzOTUxMywgMzk1MTcsIAotICAgIDM5NTIxLCAzOTUyNSwgMzk1MjksIDM5NTMzLCAzOTUzNywgMzk1NDEsIDM5NTQ1LCAzOTU0OSwgMzk1NTMsIDM5NTU3LCAKLSAgICAzOTU2MSwgMzk1NjUsIDM5NTY5LCAzOTU3MywgMzk1NzcsIDM5NTgxLCAzOTU4NSwgMzk1ODksIDM5NTkzLCAzOTU5NywgCi0gICAgMzk2MDEsIDM5NjA1LCAzOTYwOSwgMzk2MTMsIDM5NjE3LCAzOTYyMSwgMzk2MjUsIDM5NjI5LCAzOTYzMywgMzk2MzcsIAotICAgIDM5NjQxLCAzOTY0NSwgMzk2NDksIDM5NjUzLCAzOTY1NywgMzk2NjEsIDM5NjY1LCAzOTY2OSwgMzk2NzMsIDM5Njc3LCAKLSAgICAzOTY4MSwgMzk2ODUsIDM5Njg5LCAzOTY5MywgMzk2OTcsIDM5NzAxLCAzOTcwNSwgMzk3MDksIDM5NzEzLCAzOTcxNywgCi0gICAgMzk3MjEsIDM5NzI1LCAzOTczMCwgMzk3MzQsIDM5NzM5LCAzOTc0MywgMzk3NDgsIDM5NzUyLCAzOTc1NywgMzk3NjEsIAotICAgIDM5NzY3LCAzOTc3MiwgMzk3NzYsIDM5NzgxLCAzOTc4NSwgMzk3OTAsIDM5Nzk0LCAzOTc5OSwgMzk4MDMsIDM5ODA4LCAKLSAgICAzOTgxMiwgMzk4MTcsIDM5ODIxLCAzOTgyNiwgMzk4MzAsIDM5ODM2LCAzOTg0MiwgMzk4NDcsIDM5ODUxLCAzOTg1NiwgCi0gICAgMzk4NjAsIDM5ODY2LCAzOTg3MSwgMzk4NzUsIDM5ODgwLCAzOTg4NCwgMzk4ODksIDM5ODkzLCAzOTg5OSwgMzk5MDQsIAotICAgIDM5OTA4LCAzOTkxMywgMzk5MTcsIDM5OTIyLCAzOTkyNiwgMzk5MzEsIDM5OTM1LCAzOTk0MSwgMzk5NDYsIDM5OTUwLCAKLSAgICAzOTk1NSwgMzk5NTksIDM5OTY1LCAzOTk3MCwgMzk5NzQsIDM5OTc5LCAzOTk4MywgMzk5ODgsIDM5OTkyLCAzOTk5NywgCi0gICAgNDAwMDEsIDQwMDA2LCA0MDAxMCwgNDAwMTYsIDQwMDIxLCA0MDAyNSwgNDAwMzEsIDQwMDM2LCA0MDA0MCwgNDAwNDYsIAotICAgIDQwMDUxLCA0MDA1NSwgNDAwNjAsIDQwMDY0LCA0MDA2OSwgNDAwNzMsIDQwMDc5LCA0MDA4NSwgNDAwOTEsIDQwMDk3LCAKLSAgICA0MDEwMywgNDAxMDksIDQwMTE1LCA0MDEyMSwgNDAxMjYsIDQwMTMwLCA0MDEzNSwgNDAxMzksIDQwMTQ1LCA0MDE1MCwgCi0gICAgNDAxNTQsIDQwMTU5LCA0MDE2MywgNDAxNjgsIDQwMTcyLCA0MDE3NywgNDAxODEsIDQwMTg2LCA0MDE5MCwgNDAxOTUsIAotICAgIDQwMTk5LCA0MDIwNCwgNDAyMDgsIDQwMjE0LCA0MDIxOSwgNDAyMjMsIDQwMjI4LCA0MDIzMiwgNDAyMzgsIDQwMjQ0LCAKLSAgICA0MDI0OSwgMTE2LCA1NywgNDAyNTMsIDQwMjU1LCA0MDI1OSwgNDAyNjMsIDQwMjY3LCA0MDI3MiwgNDAyNzYsIDQwMjgwLCAKLSAgICAxMDI1MSwgNDAyODUsIDQwMjkxLCAxNzU2LCA2NTk3LCA0MDI5NywgNDAzMDAsIDQwMzA1LCA0MDMwOSwgNDAzMTQsIAotICAgIDQwMzE4LCA0MDMyMiwgNDAzMjcsIDExMTIxLCA0MDMzMSwgNDAzMzUsIDQwMzM5LCA1MjUsIDQwMzQzLCAxNjc4MywgCi0gICAgNDAzNDgsIDQwMzUyLCA0MDM1NywgNDAzNjIsIDQwMzY3LCA0MDM3MSwgNDAzNzgsIDI4MTg2LCA0MDM4NCwgNDAzODcsIAotICAgIDQwMzkxLCA0MDM5NiwgNDA0MDIsIDQwNDA2LCA0MDQwOSwgNDA0MTcsIDQwNDIzLCA0MDQyOCwgNDA0MzIsIDQwNDM1LCAKLSAgICA0MDQzOSwgNDA0NDUsIDQwNDQ5LCA0MDQ1MywgMzU4NCwgMzU4OSwgMzE1MzcsIDQwNDU2LCA0MDQ2MCwgNDA0NjQsIAotICAgIDQwNDY4LCA0MDQ3MiwgNDA0ODAsIDQwNDg3LCA0MDQ5MSwgMTQ0ODAsIDQwNDk4LCA0MDUwMywgNDA1MTcsIDQwNTI0LCAKLSAgICA0MDUzNSwgMzM1LCA0MDU0MCwgNDA1NDQsIDQwNTUwLCA0MDU2MiwgNDA1NjgsIDQwNTc0LCAzMTU3NCwgNDA1NzgsIAotICAgIDQwNTg0LCA0MDU5MywgNDA1OTcsIDQwNjAxLCA0MDYwNiwgNDA2MTIsIDQwNjE3LCA0MDYyMSwgNDA2MjYsIDQwNjMwLCAKLSAgICA0MDYzNCwgNDA2NDEsIDQwNjQ3LCA0MDY1MiwgNDA2NjcsIDQwNjgyLCA0MDY5NywgNDA3MTMsIDQwNzMxLCAxMTA3MSwgCi0gICAgNDA3NDUsIDQwNzUyLCA0MDc1NiwgNDA3NTksIDQwNzY4LCA0MDc3MywgNDA3NzcsIDQwNzg1LCAxNzMzMywgNDA3OTMsIAotICAgIDQwNzk3LCA0MDgwNywgNDA4MTgsIDMxNTA3LCA0MDgzMSwgNDA4MzUsIDQwODQ0LCA0MDg2MiwgNDA4ODEsIDQwODg5LCAKLSAgICAxMDUyNSwgMTEyMzQsIDQwODkzLCAyNDI2MSwgNDA4OTYsIDMyNDc1LCA0MDkwMSwgMTA1MjQsIDQwOTA2LCA0MDkxMiwgCi0gICAgNDA5MTcsIDQwOTIzLCA0MDkyOCwgNDA5MzQsIDQwOTM5LCA0MDk0NSwgNDA5NTAsIDQwOTU2LCA0MDk2MiwgNDA5NjgsIAotICAgIDQwOTczLCA0MDkyOSwgNDA5MzUsIDQwOTQwLCA0MDk0NiwgNDA5NTEsIDQwOTU3LCA0MDk2MywgODUwNCwgNDA4OSwgCi0gICAgNDA5NzcsIDQwOTg1LCA0MDk4OSwgNDA5OTIsIDQwOTk2LCA0MTAwMSwgNDEwMDYsIDQxMDEzLCA0MTAxOSwgNDEwMjUsIAotICAgIDQxMDMwLCAxNjE3NCwgNDEwMzQsIDI4MDIyLCA0MTAzOCwgNDEwNDIsIDQxMDQ2LCA0MTA1MiwgNDEwNTYsIDMwMDc1LCAKLSAgICA0MTA2NSwgOTU0NCwgNDEwNjksIDk5MzcsIDQxMDcyLCA0MTA3OSwgNDEwODUsIDQxMDg5LCAxMzAwNCwgNDEwOTYsIAotICAgIDQxMTAyLCA0MTEwNywgNDExMTQsIDQxMTIxLCA0MTEyOCwgMzA3ODEsIDg0MTAsIDQxMTM1LCA0MTE0MiwgNDExNDksIAotICAgIDQxMTU1LCA0MTE2MCwgNDExNjcsIDQxMTc4LCA0MTE4NCwgNDExODksIDQxMTk0LCA0MTE5OSwgNDEyMDMsIDQxMjA4LCAKLSAgICA0MTIxNSwgNDA5MzAsIDQxMjE5LCA0MTIyOSwgNDEyMzgsIDQxMjQ5LCA0MTI1NSwgNDEyNjMsIDQxMjcwLCA0MTI3NSwgCi0gICAgNDEyODAsIDQxMjg1LCA0MTI5MCwgNDEyOTUsIDQxMjk5LCA0MTMwMywgNDEzMTAsIDQxMzE2LCA0MTMyNCwgMjM1MywgCi0gICAgMTA1MCwgMTExMzcsIDExMTQ5LCAxMTE1NCwgMTExNjAsIDQxMzMzLCAxMTE2NSwgMTExNzAsIDExMTc2LCA0MTMzOCwgCi0gICAgNDEzNDgsIDQxMzUyLCAxMTE4MSwgNDEzNTcsIDE4NDUzLCA0MTM2MCwgNDEzNjUsIDQxMzY5LCAzNzQ2MywgNDEzODAsIAotICAgIDQxMzg1LCA0MTM5MiwgNDEzOTksIDQxNDAzLCA0MTQwNiwgNDE0MTQsIDExMDg0LCA0MTQyMSwgNDE0MjQsIDQxNDMwLCAKLSAgICA0MTQ0MCwgNjIzMSwgNDE0NDksIDQxNDU1LCA0MTQ1OSwgNDE0NjcsIDQxNDcxLCA0MTQ4MSwgNDE0ODcsIDQxNDkyLCAKLSAgICA0MTUwMywgNDE1MTIsIDQxNTIxLCA0MTUzMCwgNDE1MzksIDQxNTQ4LCA0MTU1NywgNDE1NjYsIDQxNTcyLCA0MTU3OCwgCi0gICAgNDE1ODMsIDQxNTg5LCA0MTU5NSwgNDE2MDEsIDQxNjA2LCA0MTYwOSwgNDE2MTYsIDQxNjIyLCA0MTYyNiwgNDE2MzEsIAotICAgIDQxNjM4LCA0MTY0NSwgNDE2NDksIDQxNjUyLCA0MTY2MiwgNDE2NzUsIDQxNjg0LCA0MTY5MywgNDE3MDQsIDQxNzE3LCAKLSAgICA0MTcyOSwgNDE3NDAsIDQxNzQ5LCA0MTc2MCwgNDE3NjUsIDQxNzc0LCA0MTc3OSwgMTExODYsIDQxNzg1LCA0MTc5MiwgCi0gICAgNDE4MDAsIDQxODA1LCA0MTgwOSwgNDE4MTYsIDQxODIzLCA0MDQxLCAyMCwgNDE4MjcsIDQxODMyLCAxODMwMiwgNDE4MzYsIAotICAgIDQxODM5LCA0MTg0MiwgMzAyNTUsIDQxODQ2LCAzMDc5MCwgNDE4NTQsIDQxODU4LCA0MTg2MiwgNDE4NjUsIDQxODcxLCAKLSAgICA0MTg3NywgMzM1MjcsIDQxODgyLCA0MTg5MCwgNDE4OTYsIDQxOTAzLCAzMDIzOCwgNDE5MDcsIDMwNDQxLCA0MTkxMSwgCi0gICAgNDE5MjAsIDQxOTI0LCA0MTkzMiwgNDE5MzgsIDQxOTQ0LCA0MTk0OSwgNDE5NTMsIDMwODA5LCA0MTk1OSwgNDE5NjIsIAotICAgIDQxOTcwLCA0MTk3OCwgNDM3OSwgNDE5ODQsIDQxOTg4LCA0MTk5MywgNDIwMDAsIDQyMDA2LCA0MjAxMSwgNDIwMTYsIAotICAgIDQyMDIwLCA0MjAyNiwgNDIwMzEsIDQyMDM3LCA0Mjk3LCA5NDQsIDQyMDQ0LCA0MjA0OCwgNDIwNTEsIDE2NjY0LCA0MjA2MywgCi0gICAgNDIwNzEsIDQyMDc5LCA0MjA4NywgNDIwOTUsIDQyMTAyLCA0MjExMCwgNDIxMTgsIDQyMTI1LCA0MjEzMywgNDIxNDEsIAotICAgIDQyMTQ5LCA0MjE1NywgNDIxNjUsIDQyMTczLCA0MjE4MSwgNDIxODksIDQyMTk3LCA0MjIwNSwgNDIyMTMsIDQyMjIwLCAKLSAgICA0MjIyOCwgNDIyMzYsIDQyMjQ0LCA0MjI1MiwgNDIyNjAsIDQyMjY4LCA0MjI3NiwgNDIyODQsIDQyMjkyLCA0MjMwMCwgCi0gICAgNDIzMDgsIDQyMzE2LCA0MjMyNCwgNDIzMzIsIDQyMzQwLCA0MjM0OCwgNDIzNTYsIDQyMzY0LCA0MjM3MiwgNDIzNzksIAotICAgIDQyMzg3LCA0MjM5NCwgNDI0MDIsIDQyNDEwLCA0MjQxOCwgNDI0MjYsIDQyNDM0LCA0MjQ0MiwgNDI0NTAsIDQyNDU4LCAKLSAgICA0MjQ2OSwgMjM3NjQsIDQyNDc0LCA0MjQ3NywgNDI0ODQsIDQyNDg4LCA0MjQ5NCwgNDI0OTgsIDQyNTA0LCA0MjUwOSwgCi0gICAgNDI1MTUsIDQyNTIwLCA0MjUyNSwgNDI1MjksIDQyNTMzLCA0MjUzOCwgNDI1NDMsIDQyNTUzLCA0MjU1OSwgNDI1NzIsIAotICAgIDQyNTc4LCA0MjU4NCwgNDI1OTAsIDQyNTk3LCA0MjYwMiwgNDI2MDgsIDQyNjEzLCAxODE5OCwgMTQ1OCwgODMxLCA0MjYxOCwgCi0gICAgNDI2MjEsIDQyNjI0LCA0MjYyNywgMzM2MTEsIDMzNjE3LCA0MjYzMCwgMzM2MjMsIDMzNjM2LCAzMzY0MiwgMzM2NDgsIAotICAgIDQyNjM2LCAzMzY1NCwgMzM2NjAsIDQyNjQyLCA0MjY0OCwgMjYsIDQyNjU2LCA0MjY2MywgNDI2NjcsIDQyNjcxLCA0MjY3OSwgCi0gICAgMzQ0MDEsIDQyNjgzLCA0MjY4NywgNDI2OTQsIDQyNjk5LCA0MjcwMywgNDI3MDgsIDQyNzE0LCA0MjcxOSwgNDI3MjUsIAotICAgIDQyNzMwLCA0MjczNCwgNDI3MzgsIDQyNzQyLCA0Mjc0NywgNDI3NTEsIDQyNzU2LCA0Mjc2MCwgNDI3NjQsIDQyNzcxLCAKLSAgICA0Mjc3NiwgNDI3ODAsIDQyNzg0LCA0Mjc4OSwgNDI3OTMsIDQyNzk4LCA0MjgwMiwgNDI4MDYsIDQyODExLCA0MjgxNywgCi0gICAgMTY5MjQsIDE2OTI5LCA0MjgyMiwgNDI4MjYsIDQyODI5LCA0MjgzMywgNDI4MzcsIDIyODUyLCA0Mjg0MiwgNDI4NDYsIAotICAgIDQyODUyLCA0Mjg1OSwgNDI4NjUsIDQyODcwLCA0Mjg4MCwgNDI4ODUsIDQyODkzLCA0Mjg5NywgNDI5MDAsIDM0NDE2LCAKLSAgICA0MjkwNCwgNDM1NiwgNDI5MDksIDQyOTE0LCA0MjkxOCwgNDI5MjMsIDQyOTI3LCA0MjkzMiwgMTQ1NDgsIDQyOTQzLCAKLSAgICA0Mjk0NywgNDI5NTAsIDQyOTU0LCA0Mjk1OSwgNDI5NjMsIDQyOTY4LCA0Mjk3MywgNDI5NzcsIDQyOTgxLCA0Mjk4NSwgCi0gICAgNDI5ODgsIDQyOTkyLCA4NTIzLCAxNDU2NCwgNDI5OTUsIDQyOTk4LCA0MzAwNCwgNDMwMDksIDQzMDE1LCA0MzAyMCwgCi0gICAgNDMwMjYsIDQzMDMxLCA0MzAzNywgNDMwNDIsIDQzMDQ4LCA0MzA1NCwgNDMwNjAsIDQzMDY1LCA0MzA2OSwgNDMwNzMsIAotICAgIDQzMDgyLCA0MzA5OCwgNDMxMTQsIDQzMTI0LCAzMDE0NSwgNDMxMzEsIDQzMTM1LCA0MzE0MCwgNDMxNDUsIDQzMTQ5LCAKLSAgICA0MzE1MywgMzg5NTEsIDQzMTU5LCA0MzE2NCwgNDMxNjgsIDQzMTc1LCA0MzE4MCwgNDMxODUsIDQzMTg5LCA0MzE5MywgCi0gICAgNDMxOTksIDI5MDkzLCA0MzIwMywgMjMxMzYsIDQzMjA4LCA0MzIxNSwgNDMyMjMsIDQzMjI5LCA0MzIzNiwgNDMyNDQsIAotICAgIDQzMjUwLCA0MzI1NCwgNDMyNTksIDQzMjY1LCA0MzI3MywgNDMyNzgsIDQzMjgyLCA0MzI5MSwgMTAyMzIsIDQzMjk5LCAKLSAgICA0MzMwMywgNDMzMTEsIDQzMzE4LCA0MzMyMywgNDMzMjgsIDQzMzMzLCA0MzMzNywgNDMzNDAsIDQzMzQ0LCA0MzM0NywgCi0gICAgNDMzNTEsIDQzMzU4LCA0MzM2MywgNDMzNjcsIDQzMzczLCAyODQ5MiwgMzM2NzQsIDQzMzc3LCA0MzM4NiwgNDMzOTQsIAotICAgIDQzNDAwLCA0MzQwNywgNDM0MTMsIDQzNDE5LCA0MzQyNCwgNDM0MjcsIDQzNDI5LCA0MzQzNiwgNDM0NDMsIDQzNDQ5LCAKLSAgICA0MzQ1MywgNDM0NTYsIDQzNDYwLCA0MzQ2NCwgNDM0NjgsIDQzNDczLCA0MzQ3NywgNDM0ODEsIDQzNDg0LCA0MzQ4OCwgCi0gICAgNDM1MDIsIDI0OTA2LCA0MzUyMSwgNDM1MzQsIDQzNTQ3LCA0MzU2MCwgMjQ5MjQsIDQzNTc1LCAxMTQyMiwgNDM1OTAsIAotICAgIDQzNTk2LCA0MzYwMCwgNDM2MDQsIDQzNjA4LCA0MzYxMiwgNDM2MTksIDQzNjI0LCA0MzYyOCwgNDM2MzUsIDQzNjQxLCAKLSAgICA0MzY0NiwgNDM2NTIsIDQzNjYyLCA0MzY3NCwgNDM2ODUsIDQzNjkwLCA0MzY5NywgNDM3MDEsIDQzNzA1LCA0MzcwOCwgCi0gICAgMTczNDMsIDM4NTUsIDQzNzE2LCAxNjk1MSwgNDM3MjksIDQzNzM2LCA0Mzc0MywgNDM3NDcsIDQzNzUxLCA0Mzc1NiwgCi0gICAgNDM3NjIsIDQzNzY3LCA0Mzc3MywgNDM3NzcsIDQzNzgxLCA0Mzc4NCwgNDM3ODksIDQzNzkzLCA0Mzc5OCwgODA4MiwgCi0gICAgMTY5NjIsIDQzODAzLCA0MzgwNywgNDM4MTMsIDQzODIyLCA0MzgyNywgNDM4MzYsIDQzODQzLCAzODc5OSwgNDM4NDksIAotICAgIDQzODU0LCA0Mzg1OCwgNDM4NjMsIDQzODcwLCA0Mzg3NiwgNDM4ODAsIDQzODgzLCA0Mzg4NywgNDM4OTIsIDE1ODY0LCAKLSAgICA0Mzg5OSwgNDM5MDYsIDQzOTEwLCA0MzkxMywgNDM5MTgsIDQzOTIzLCA0MzkyOSwgNDM5MzQsIDQzOTM5LCA0Mzk0MywgCi0gICAgNDM5NDgsIDQzOTU4LCA0Mzk2MywgNDM5NjksIDQzOTc0LCA0Mzk4MCwgNDM5ODUsIDQzOTkxLCA0NDAwMSwgNDQwMDYsIAotICAgIDQ0MDExLCA0NDAxNSwgNDQwMjAsIDc1NTgsIDc1NzAsIDQ0MDI1LCA0NDAyOCwgNDQwMzUsIDQ0MDQxLCA0NDA1MCwgOTQ3NywgCi0gICAgMzY3NjAsIDQ0MDU4LCA0NDA2MiwgNDQwNjYsIDM0NDY0LCA0NDA3NCwgNDQwODUsIDQ0MDkzLCAzODk5OSwgNDQxMDAsIAotICAgIDQ0MTA1LCA0NDExMCwgNDQxMjEsIDQ0MTI4LCA0NDEzOSwgMzQ0ODgsIDIzMTQ3LCA0NDE0NywgOTA3LCA0NDE1MiwgCi0gICAgMTQ5MTMsIDQ0MTU4LCAzMDIyOSwgNDQxNjQsIDQ0MTY5LCA0NDE3OSwgNDQxODgsIDQ0MTk1LCA0NDIwMSwgNDQyMDUsIAotICAgIDQ0MjA4LCA0NDIxNSwgNDQyMjEsIDQ0MjI4LCA0NDIzNCwgNDQyNDQsIDQ0MjUyLCA0NDI1OCwgNDQyNjQsIDQ0MjY5LCAKLSAgICA0NDI3MywgNDQyODAsIDQ0Mjg1LCA0NDI5MSwgNDQyOTgsIDQ0MzA0LCA0MzQ2OSwgNDQzMDksIDQ0MzEzLCA1NTgsIAotICAgIDE1MDI5LCA0NDMxOSwgNDQzMjQsIDQ0MzI3LCA0NDMzMywgNDQzNDEsIDEzODAsIDQ0MzQ2LCA0NDM1MCwgNDQzNTUsIAotICAgIDQ0MzYwLCA0NDM2NSwgNDQzNzIsIDQ0Mzc2LCA0NDM4MSwgNDQzODcsIDQ0MzkxLCAzMzY4NCwgNDQzOTYsIDQ0NDAxLCAKLSAgICA0NDQxMCwgNDQ0MTcsIDQ0NDI3LCA0NDQzMywgMzAyNzMsIDQ0NDUwLCA0NDQ1OSwgNDQ0NjcsIDQ0NDczLCA0NDQ3OCwgCi0gICAgNDQ0ODUsIDQ0NDkxLCA0NDQ5OSwgNDQ1MDgsIDQ0NTE2LCA0NDUyMCwgNDQ1MjUsIDQ0NTMzLCAzMTI1MSwgMzQ0OTcsIAotICAgIDQ0NTM5LCA0NDU1OCwgMTcyNTcsIDQ0NTcyLCA0NDU4OCwgNDQ2MDIsIDQ0NjA4LCA0NDYxMywgNDQ2MTgsIDQ0NjIzLCAKLSAgICA0NDYyOSwgMzQ1MDMsIDQ0NjM0LCA0NDYzNywgNDQ2NDQsIDQ0NjQ5LCA0NDY1MywgNDA0LCAyOTk1LCA0NDY2MCwgNDQ2NjUsIAotICAgIDQ0NjcwLCAyOTQ1MSwgNDQ0ODgsIDQ0Njc0LCA0NDY3OSwgNDQ2ODcsIDQ0NjkxLCA0NDY5NCwgNDQ2OTksIDQ0NzA1LCAKLSAgICA0NDcxMSwgNDQ3MTYsIDQ0NzIwLCAzMDMyOCwgNDQ3MjMsIDQ0NzI4LCA0NDczMiwgNDQ3MzUsIDQ0NzQwLCA0NDc0NCwgCi0gICAgNDQ3NDksIDQ0NzU0LCA0NDc1OCwgNDQ3NjMsIDQ0NzY3LCA0NDc3MSwgNDQ3NzUsIDIyODQ4LCAyMjg1OSwgNDQ3ODAsIAotICAgIDQ0Nzg1LCA0NDc5MSwgNDQ3OTYsIDQ0ODAyLCAyOTA1MCwgNDQ4MDcsIDQ0ODExLCAyMjk0NSwgMTc1NDksIDQ0ODE0LCAKLSAgICA0NDgxOSwgNDQ4MjQsIDQ0ODI5LCA0NDgzNCwgNDQ4MzksIDQ0ODQ0LCA0NDg0OSwgNDc0LCA2OCwgMzM2OTcsIDMzNzAyLCAKLSAgICAzMzcwNywgMzM3MTMsIDMzNzE4LCAzMzcyMywgNDQ4NTQsIDMzNzI3LCA0NDg1OCwgNDQ4NjIsIDQ0ODY2LCAzMzczMiwgCi0gICAgMzM3MzgsIDQ0ODgwLCAzMzc0OSwgMzM3NTQsIDQ0ODg4LCA0NDg5MywgMzM3NjAsIDQ0ODk4LCA0NDkwMywgNDQ5MDgsIAotICAgIDQ0OTEzLCA0NDkxOSwgNDQ5MjUsIDQ0OTMxLCAzMzc3NywgNDQ5NDQsIDQ0OTUzLCA0NDk1OSwgMzM3ODEsIDQ0OTYzLCAKLSAgICAzMzc4NiwgNDQ5NjgsIDMzNzkxLCAzMzc5NiwgNDQ5NzEsIDQ0OTc2LCA0NDk4MCwgNDQ5ODYsIDMzMzMyLCA0NDk5MywgCi0gICAgMTQ3OTQsIDQ1MDAwLCA0NTAwNSwgMzM4MDEsIDQ1MDA5LCA0NTAxNCwgNDUwMTksIDQ1MDI0LCA0NTAyOCwgNDUwMzMsIAotICAgIDQ1MDM4LCA0NTA0NCwgNDUwNDksIDQ1MDU0LCA0NTA2MCwgNDUwNjYsIDQ1MDcxLCA0NTA3NSwgNDUwODAsIDQ1MDg1LCAKLSAgICA0NTA5MCwgNDUwOTQsIDQ1MDk5LCA0NTEwNCwgNDUxMDksIDQ1MTE1LCA0NTEyMSwgNDUxMjcsIDQ1MTMyLCA0NTEzNiwgCi0gICAgNDUxNDEsIDQ1MTQ1LCAzMzgwNSwgMzM4MTAsIDMzODE1LCA0NTE0OSwgNDUxNTMsIDQ1MTU3LCAzMzgyMCwgMzM4MjYsIAotICAgIDMzODMyLCAzMzg0NCwgNDUxNjksIDI4MDU5LCA0NTE3MywgNDUxNzgsIDQ1MTgyLCA0NTE4NywgNDUxOTQsIDQ1MTk5LCAKLSAgICA0NTIwNCwgNDUyMDksIDQ1MjEzLCA0NTIxNywgNDUyMjcsIDQ1MjMyLCA0NTIzNywgNDUyNDEsIDQ1MjQ1LCA0NTI0OCwgCi0gICAgNDUyNTYsIDMzODkyLCA0NTI2MSwgMTQ2NSwgNDUyNjcsIDQ1MjcyLCA0NTI3OCwgNDUyODYsIDQ1MjkwLCA0NTI5OSwgCi0gICAgNDUzMDMsIDQ1MzA3LCA0NTMxNSwgNDUzMjEsIDQ1MzI5LCA0NTM0NSwgNDUzNDksIDQ1MzUzLCA0NTM1NywgNDUzNjIsIAotICAgIDQ1MzY4LCA0NTM4MywgMzM5MjksIDE3NjQsIDEzMTk4LCA0NTM4NywgMTM1OSwgMTM3NCwgNDUzOTksIDQ1NDA3LCA0NTQxNCwgCi0gICAgNDU0MTksIDQ1NDI2LCA0NTQzMSwgOTkyMiwgMTEzOSwgMjU0NCwgMTEyMTMsIDQ1NDM4LCA5ODIwLCA0NTQ0MywgNDU0NDYsIAotICAgIDQ1NDU1LCAxMjY3LCA0NTQ2MCwgNDM2MjUsIDQ1NDY3LCA0NTQ3NiwgNDU0ODEsIDQ1NDg1LCA0NTQ5MywgMjQzMTcsIAotICAgIDI1OTYsIDQ1NTAwLCAxMTY3OCwgNDU1MTAsIDQ1NTE2LCAyMzcxLCAyMzgxLCA0NTUyNSwgNDU1MzQsIDQ1NTQ0LCA0NTU1NSwgCi0gICAgMzM3NiwgMzcwOTksIDQ1NTYwLCAxMTI3NywgNDAxOSwgMTgyMzYsIDEyNzIsIDQ1NTY0LCA0NTU3MiwgNDU1NzksIDQ1NTg0LCAKLSAgICA0NTU4OCwgNDU1OTIsIDI1NzkyLCA0Mzg5NCwgMTEzMDQsIDQ1NjAwLCA0NTYwOSwgNDU2MTgsIDQ1NjI2LCA0NTYzMywgCi0gICAgNDU2NDQsIDQ1NjQ5LCA0NTY2MiwgNDU2NzUsIDQ1Njg3LCA0NTY5OSwgNDU3MTEsIDQ1NzIyLCA0NTczNSwgNDU3NDYsIAotICAgIDQ1NzU3LCA0NTc2NywgNDU3NzUsIDQ1NzgzLCA0NTc5NSwgNDU4MDcsIDQ1ODE4LCA0NTgyNywgNDU4MzUsIDQ1ODQyLCAKLSAgICA0NTg1NCwgNDU4NjEsIDQ1ODY3LCA0NTg3NiwgNDU4ODMsIDQ1ODk2LCA0NTkwMSwgNDU5MTEsIDQ1OTE2LCA0NTkyMiwgCi0gICAgNDU5MjcsIDQxMDg2LCA0NTkzMSwgNDU5MzgsIDQ1OTQyLCA0NTk0OSwgNDU5NTcsIDQ1OTY0LCAyNTU3LCA0NTk3MSwgCi0gICAgNDU5ODIsIDQ1OTkyLCA0NjAwMSwgNDYwMDksIDQ2MDE5LCA0NjAyNywgNDYwMzcsIDQ2MDQ2LCA0NjA1MSwgNDYwNTcsIAotICAgIDQ2MDYzLCAzODk5LCA0NjA3NCwgNDYwODQsIDQ2MDkzLCA0NjEwMiwgNDYxMTAsIDQ2MTIwLCA0NjEyOCwgNDYxMzcsIAotICAgIDQ2MTQyLCA0NjE0NywgNDYxNTIsIDE2OTQsIDQ3LCA0NjE2MCwgNDYxNjgsIDQ2MTc5LCA0NjE5MCwgMTc4NzUsIDQ2MjAwLCAKLSAgICA0NjIwNCwgNDYyMTEsIDQ2MjE3LCA0NjIyMiwgNDYyMjYsIDQ2MjM3LCA0NjI0NywgNDYyNTYsIDQ2MjY3LCAxODI3NSwgCi0gICAgMTgyODAsIDQ2MjcyLCA0NjI4MSwgNDYyODYsIDQ2Mjk2LCA0NjMwMSwgNDYzMDksIDQ2MzE3LCA0NjMyNCwgNDYzMzAsIAotICAgIDE2NTYsIDI3NywgNDYzMzQsIDQ2MzQwLCA0NjM0NSwgNDYzNDgsIDIxNDMsIDQzNzQ4LCA0NjM1NiwgNDYzNjAsIDQ2MzYzLCAKLSAgICAxNTEwLCA0NjM2OSwgMTUyMTQsIDEyNzcsIDQ2Mzc0LCA0NjM4NywgNDY0MDEsIDI2ODIsIDQ2NDE5LCA0NjQzMSwgNDY0NDMsIAotICAgIDI2OTYsIDI3MTMsIDQ2NDU3LCA0NjQ3MCwgMjcyOCwgNDY0ODQsIDQ2NDk2LCAyNzQzLCA0NjUxMCwgMTI4MywgMTI4OSwgCi0gICAgMTI5NSwgMTE1ODQsIDQ2NTE1LCA0NjUyMCwgNDY1MjUsIDQ2NTI5LCA0NjU0NCwgNDY1NTksIDQ2NTc0LCA0NjU4OSwgCi0gICAgNDY2MDQsIDQ2NjE5LCA0NjYzNCwgNDY2NDksIDQ2NjY0LCA0NjY3OSwgNDY2OTQsIDQ2NzA5LCA0NjcyNCwgNDY3MzksIAotICAgIDQ2NzU0LCA0Njc2OSwgNDY3ODQsIDQ2Nzk5LCA0NjgxNCwgNDY4MjksIDQ2ODQ0LCA0Njg1OSwgNDY4NzQsIDQ2ODg5LCAKLSAgICA0NjkwNCwgNDY5MTksIDQ2OTM0LCA0Njk0OSwgNDY5NjQsIDQ2OTc5LCA0Njk5NCwgNDcwMDksIDQ3MDI0LCA0NzAzOSwgCi0gICAgNDcwNTQsIDQ3MDY5LCA0NzA4NCwgNDcwOTksIDQ3MTE0LCA0NzEyOSwgNDcxNDQsIDQ3MTU5LCA0NzE3NCwgNDcxODksIAotICAgIDQ3MjA0LCA0NzIxOSwgNDcyMzQsIDQ3MjQ5LCA0NzI2NCwgNDcyNzksIDQ3Mjk0LCA0NzMwOSwgNDczMjQsIDQ3MzM5LCAKLSAgICA0NzM1NCwgNDczNjksIDQ3Mzg0LCA0NzM5OSwgNDc0MTQsIDQ3NDI5LCA0NzQ0NCwgNDc0NTksIDQ3NDc0LCA0NzQ4OSwgCi0gICAgNDc1MDQsIDQ3NTE5LCA0NzUzNCwgNDc1NDksIDQ3NTY0LCA0NzU3OSwgNDc1OTQsIDQ3NjA5LCA0NzYyNCwgNDc2MzksIAotICAgIDQ3NjU0LCA0NzY2OSwgNDc2ODQsIDQ3Njk5LCA0NzcxNCwgNDc3MjksIDQ3NzQ0LCA0Nzc1OSwgNDc3NzQsIDQ3Nzg5LCAKLSAgICA0NzgwNCwgNDc4MTksIDQ3ODM0LCA0Nzg0OSwgNDc4NjQsIDQ3ODc5LCA0Nzg5NCwgNDc5MDksIDQ3OTI0LCA0NzkzOSwgCi0gICAgNDc5NTQsIDQ3OTY5LCA0Nzk4NCwgNDc5OTksIDQ4MDE0LCA0ODAyOSwgNDgwNDQsIDQ4MDU5LCA0ODA3NCwgNDgwODksIAotICAgIDQ4MTA0LCA0ODExOSwgNDgxMzQsIDQ4MTQ5LCA0ODE2NCwgNDgxNzksIDQ4MTk0LCA0ODIwOSwgNDgyMjQsIDQ4MjM5LCAKLSAgICA0ODI1NCwgNDgyNjksIDQ4Mjg0LCA0ODI5OSwgNDgzMTQsIDQ4MzI5LCA0ODM0NCwgNDgzNTksIDQ4Mzc0LCA0ODM4OSwgCi0gICAgNDg0MDQsIDQ4NDE5LCA0ODQzNCwgNDg0NDksIDQ4NDY0LCA0ODQ3OSwgNDg0OTQsIDQ4NTA5LCA0ODUyNCwgNDg1MzksIAotICAgIDQ4NTU0LCA0ODU2OSwgNDg1ODQsIDQ4NTk5LCA0ODYxNCwgNDg2MjksIDQ4NjQ0LCA0ODY1OSwgNDg2NzQsIDQ4Njg5LCAKLSAgICA0ODcwNCwgNDg3MTksIDQ4NzM0LCA0ODc0OSwgNDg3NjQsIDQ4Nzc5LCA0ODc5NCwgNDg4MDksIDQ4ODI0LCA0ODgzOSwgCi0gICAgNDg4NTQsIDQ4ODY5LCA0ODg4NCwgNDg4OTksIDQ4OTE0LCA0ODkyOSwgNDg5NDQsIDQ4OTU5LCA0ODk3NCwgNDg5ODksIAotICAgIDQ5MDA0LCA0OTAxOSwgNDkwMzQsIDQ5MDQ5LCA0OTA2NCwgNDkwNzksIDQ5MDk0LCA0OTEwOSwgNDkxMjQsIDQ5MTM5LCAKLSAgICA0OTE1NCwgNDkxNjksIDQ5MTg0LCA0OTE5OSwgNDkyMTQsIDQ5MjI5LCA0OTI0NCwgNDkyNTksIDQ5Mjc0LCA0OTI4OSwgCi0gICAgNDkzMDQsIDQ5MzE5LCA0OTMzNCwgNDkzNDksIDQ5MzY0LCA0OTM3OSwgNDkzOTQsIDQ5NDA5LCA0OTQyNCwgNDk0MzksIAotICAgIDQ5NDU0LCA0OTQ2OSwgNDk0ODQsIDQ5NDk5LCA0OTUxNCwgNDk1MjksIDQ5NTQ0LCA0OTU1OSwgNDk1NzQsIDQ5NTg5LCAKLSAgICA0OTYwNCwgNDk2MTksIDQ5NjM0LCA0OTY0OSwgNDk2NjQsIDQ5Njc5LCA0OTY5NCwgNDk3MDksIDQ5NzI0LCA0OTczOSwgCi0gICAgNDk3NTQsIDQ5NzY5LCA0OTc4NCwgNDk3OTksIDQ5ODE0LCA0OTgyOSwgNDk4NDQsIDQ5ODU5LCA0OTg3NCwgNDk4ODksIAotICAgIDQ5OTA0LCA0OTkxOSwgNDk5MzQsIDQ5OTQ5LCA0OTk2NCwgNDk5NzksIDQ5OTk0LCA1MDAwOSwgNTAwMjQsIDUwMDM5LCAKLSAgICA1MDA1NCwgNTAwNjksIDUwMDg0LCA1MDA5OSwgNTAxMTQsIDUwMTI5LCA1MDE0NCwgNTAxNTksIDUwMTc0LCA1MDE4OSwgCi0gICAgNTAyMDQsIDUwMjE5LCA1MDIzNCwgNTAyNDksIDUwMjY0LCA1MDI3OSwgNTAyOTQsIDUwMzA5LCA1MDMyNCwgNTAzMzksIAotICAgIDUwMzU0LCA1MDM2OSwgNTAzODQsIDUwMzk5LCA1MDQxNCwgNTA0MjksIDUwNDQ0LCA1MDQ1OSwgNTA0NzQsIDUwNDg5LCAKLSAgICA1MDUwNCwgNTA1MTksIDUwNTM0LCA1MDU0OSwgNTA1NjQsIDUwNTc5LCA1MDU5NCwgNTA2MDksIDUwNjI0LCA1MDYzOSwgCi0gICAgNTA2NTQsIDUwNjY5LCA1MDY4NCwgNTA2OTksIDUwNzE0LCA1MDcyOSwgNTA3NDQsIDUwNzU5LCA1MDc3NCwgNTA3ODksIAotICAgIDUwODA0LCA1MDgxOSwgNTA4MzQsIDUwODQ5LCA1MDg2NCwgNTA4NzksIDUwODk0LCA1MDkwOSwgNTA5MjQsIDUwOTM5LCAKLSAgICA1MDk1NCwgNTA5NjksIDUwOTg0LCA1MDk5OSwgNTEwMTQsIDUxMDI5LCA1MTA0NCwgNTEwNTksIDUxMDc0LCA1MTA4OSwgCi0gICAgNTExMDQsIDUxMTE5LCA1MTEzNCwgNTExNDksIDUxMTY0LCA1MTE3OSwgNTExOTQsIDUxMjA5LCA1MTIyNCwgNTEyMzksIAotICAgIDUxMjU0LCA1MTI2OSwgNTEyODQsIDUxMjk5LCA1MTMxNCwgNTEzMjksIDUxMzQ0LCA1MTM1OSwgNTEzNzQsIDUxMzg5LCAKLSAgICA1MTQwNCwgNTE0MTksIDUxNDM0LCA1MTQ0OSwgNTE0NjQsIDUxNDc5LCA1MTQ5NCwgNTE1MDksIDUxNTI0LCA1MTUzOSwgCi0gICAgNTE1NTQsIDUxNTY5LCA1MTU4NCwgNTE1OTksIDUxNjE0LCA1MTYyOSwgNTE2NDQsIDUxNjU5LCA1MTY3NCwgNTE2ODksIAotICAgIDUxNzA0LCA1MTcxOSwgNTE3MzQsIDUxNzQ5LCA1MTc2NCwgNTE3NzksIDUxNzk0LCA1MTgwOSwgNTE4MjQsIDUxODM5LCAKLSAgICA1MTg1NCwgNTE4NjksIDUxODg0LCA1MTg5OSwgNTE5MTQsIDUxOTI5LCA1MTk0NCwgNTE5NTksIDUxOTc0LCA1MTk4OSwgCi0gICAgNTIwMDQsIDUyMDE5LCA1MjAzNCwgNTIwNDksIDUyMDY0LCA1MjA3OSwgNTIwOTQsIDUyMTA5LCA1MjEyNCwgNTIxMzksIAotICAgIDUyMTU0LCA1MjE2OSwgNTIxODQsIDUyMTk5LCA1MjIxNCwgNTIyMjksIDUyMjQ0LCA1MjI1OSwgNTIyNzQsIDUyMjg5LCAKLSAgICA1MjMwNCwgNTIzMTksIDUyMzM0LCA1MjM0OSwgNTIzNjQsIDUyMzc5LCA1MjM5NCwgNTI0MDksIDUyNDI0LCA1MjQzOSwgCi0gICAgNTI0NTQsIDUyNDY5LCA1MjQ4NCwgNTI0OTksIDUyNTE0LCA1MjUyOSwgNTI1NDQsIDUyNTU5LCA1MjU3NCwgNTI1ODksIAotICAgIDUyNjA0LCA1MjYxOSwgNTI2MzQsIDUyNjQ5LCA1MjY2NCwgNTI2NzksIDUyNjk0LCA1MjcwOSwgNTI3MjQsIDUyNzM5LCAKLSAgICA1Mjc1NCwgNTI3NjksIDUyNzg0LCA1Mjc5OSwgNTI4MTQsIDUyODI5LCA1Mjg0NCwgNTI4NTksIDUyODc0LCA1Mjg4OSwgCi0gICAgNTI5MDQsIDUyOTE5LCA1MjkzNCwgNTI5NDksIDUyOTY0LCA1Mjk3OSwgNTI5OTQsIDUzMDA5LCA1MzAyNCwgNTMwMzksIAotICAgIDUzMDU0LCA1MzA2OSwgNTMwODQsIDUzMDk5LCA1MzExNCwgNTMxMjksIDUzMTQ0LCA1MzE1OSwgNTMxNzQsIDUzMTg5LCAKLSAgICA1MzIwNCwgNTMyMTksIDUzMjM0LCA1MzI0OSwgNTMyNjQsIDUzMjc5LCA1MzI5NCwgNTMzMDksIDUzMzI0LCA1MzMzOSwgCi0gICAgNTMzNTQsIDUzMzY5LCA1MzM4NCwgNTMzOTksIDUzNDE0LCA1MzQyOSwgNTM0NDQsIDUzNDU5LCA1MzQ3NCwgNTM0ODksIAotICAgIDUzNTA0LCA1MzUxOSwgNTM1MzQsIDUzNTQ5LCA1MzU2NCwgNTM1NzksIDUzNTk0LCA1MzYwOSwgNTM2MjQsIDUzNjM5LCAKLSAgICA1MzY1NCwgNTM2NjksIDUzNjg0LCA1MzY5OSwgNTM3MTQsIDUzNzI5LCA1Mzc0NCwgNTM3NTksIDUzNzc0LCA1Mzc4OSwgCi0gICAgNTM4MDQsIDUzODE5LCA1MzgzNCwgNTM4NDksIDUzODY0LCA1Mzg3OSwgNTM4OTQsIDUzOTA5LCA1MzkyNCwgNTM5MzksIAotICAgIDUzOTU0LCA1Mzk2OSwgNTM5ODQsIDUzOTk5LCA1NDAxNCwgNTQwMjksIDU0MDQ0LCA1NDA1OSwgNTQwNzQsIDU0MDg5LCAKLSAgICA1NDEwNCwgNTQxMTksIDU0MTM0LCA1NDE0OSwgNTQxNjQsIDU0MTc5LCA1NDE5NCwgNTQyMDksIDU0MjI0LCA1NDIzOSwgCi0gICAgNTQyNTQsIDU0MjY5LCA1NDI4NCwgNTQyOTksIDU0MzE0LCA1NDMyOSwgNTQzNDUsIDU0MzYxLCA1NDM3NywgNTQzOTMsIAotICAgIDU0NDA5LCA1NDQyNSwgNTQ0NDEsIDU0NDU3LCA1NDQ3MywgNTQ0ODksIDU0NTA1LCA1NDUyMSwgNTQ1MzcsIDU0NTUzLCAKLSAgICA1NDU2OSwgNTQ1ODUsIDU0NjAxLCA1NDYxNywgNTQ2MzMsIDU0NjQ5LCA1NDY2NSwgNTQ2ODEsIDU0Njk3LCA1NDcxMywgCi0gICAgNTQ3MjksIDU0NzQ1LCA1NDc2MSwgNTQ3NzcsIDU0NzkzLCA1NDgwOSwgNTQ4MjUsIDU0ODQxLCA1NDg1NywgNTQ4NzMsIAotICAgIDU0ODg5LCA1NDkwNSwgNTQ5MjEsIDU0OTM3LCA1NDk1MywgNTQ5NjksIDU0OTg1LCA1NTAwMSwgNTUwMTcsIDU1MDMzLCAKLSAgICA1NTA0OSwgNTUwNjUsIDU1MDgxLCA1NTA5NywgNTUxMTMsIDU1MTI5LCA1NTE0NSwgNTUxNjEsIDU1MTc3LCA1NTE5MywgCi0gICAgNTUyMDksIDU1MjI1LCA1NTI0MSwgNTUyNTcsIDU1MjczLCA1NTI4OSwgNTUzMDUsIDU1MzIxLCA1NTMzNywgNTUzNTMsIAotICAgIDU1MzY5LCA1NTM4NSwgNTU0MDEsIDU1NDE3LCA1NTQzMywgNTU0NDksIDU1NDY1LCA1NTQ4MSwgNTU0OTcsIDU1NTEzLCAKLSAgICA1NTUyOSwgNTU1NDUsIDU1NTYxLCA1NTU3NywgNTU1OTMsIDU1NjA5LCA1NTYyNSwgNTU2NDEsIDU1NjU3LCA1NTY3MywgCi0gICAgNTU2ODksIDU1NzA1LCA1NTcyMSwgNTU3MzcsIDU1NzUzLCA1NTc2OSwgNTU3ODUsIDU1ODAxLCA1NTgxNywgNTU4MzMsIAotICAgIDU1ODQ5LCA1NTg2NSwgNTU4ODEsIDU1ODk3LCA1NTkxMywgNTU5MjksIDU1OTQ1LCA1NTk2MSwgNTU5NzcsIDU1OTkzLCAKLSAgICA1NjAwOSwgNTYwMjUsIDU2MDQxLCA1NjA1NywgNTYwNzMsIDU2MDg5LCA1NjEwNSwgNTYxMjEsIDU2MTM3LCA1NjE1MywgCi0gICAgNTYxNjksIDU2MTg1LCA1NjIwMSwgNTYyMTcsIDU2MjMzLCA1NjI0OSwgNTYyNjUsIDU2MjgxLCA1NjI5NywgNTYzMTMsIAotICAgIDU2MzI5LCA1NjM0NSwgNTYzNjEsIDU2Mzc3LCA1NjM5MywgNTY0MDksIDU2NDI1LCA1NjQ0MSwgNTY0NTcsIDU2NDczLCAKLSAgICA1NjQ4OSwgNTY1MDUsIDU2NTIxLCA1NjUzNywgNTY1NTMsIDU2NTY5LCA1NjU4NSwgNTY2MDEsIDU2NjE3LCA1NjYzMywgCi0gICAgNTY2NDksIDU2NjY1LCA1NjY4MSwgNTY2OTcsIDU2NzEzLCA1NjcyOSwgNTY3NDUsIDU2NzYxLCA1Njc3NywgNTY3OTMsIAotICAgIDU2ODA5LCA1NjgyNSwgNTY4NDEsIDU2ODU3LCA1Njg3MywgNTY4ODksIDU2OTA1LCA1NjkyMSwgNTY5MzcsIDU2OTUzLCAKLSAgICA1Njk2OSwgNTY5ODUsIDU3MDAxLCA1NzAxNywgNTcwMzMsIDU3MDQ5LCA1NzA2NSwgNTcwODEsIDU3MDk3LCA1NzExMywgCi0gICAgNTcxMjksIDU3MTQ1LCA1NzE2MSwgNTcxNzcsIDU3MTkzLCA1NzIwOSwgNTcyMjUsIDU3MjQxLCA1NzI1NywgNTcyNzMsIAotICAgIDU3Mjg5LCA1NzMwNSwgNTczMjEsIDU3MzM3LCA1NzM1MywgNTczNjksIDU3Mzg1LCA1NzQwMSwgNTc0MTcsIDU3NDMzLCAKLSAgICA1NzQ0OSwgNTc0NjUsIDU3NDgxLCA1NzQ5NywgNTc1MTMsIDU3NTI5LCA1NzU0NSwgNTc1NjEsIDU3NTc3LCA1NzU5MywgCi0gICAgNTc2MDksIDU3NjI1LCA1NzY0MSwgNTc2NTcsIDU3NjczLCA1NzY4OSwgNTc3MDUsIDU3NzIxLCA1NzczNywgNTc3NTMsIAotICAgIDU3NzY5LCA1Nzc4NSwgNTc4MDEsIDU3ODE3LCA1NzgzMywgNTc4NDksIDU3ODY1LCA1Nzg4MSwgNTc4OTcsIDU3OTEzLCAKLSAgICA1NzkyOSwgNTc5NDUsIDU3OTYxLCA1Nzk3NywgNTc5OTMsIDU4MDA5LCA1ODAyNSwgNTgwNDEsIDU4MDU3LCA1ODA3MywgCi0gICAgNTgwODksIDU4MTA1LCA1ODEyMSwgNTgxMzcsIDU4MTUzLCA1ODE2OSwgNTgxODUsIDU4MjAxLCA1ODIxNywgNTgyMzMsIAotICAgIDU4MjQ5LCA1ODI2NSwgNTgyODEsIDU4Mjk3LCA1ODMxMywgNTgzMjksIDU4MzQ1LCA1ODM2MSwgNTgzNzcsIDU4MzkzLCAKLSAgICA1ODQwOSwgNTg0MjUsIDU4NDQxLCA1ODQ1NywgNTg0NzMsIDU4NDg5LCA1ODUwNSwgNTg1MjEsIDU4NTM3LCA1ODU1MywgCi0gICAgNTg1NjksIDU4NTg1LCA1ODYwMSwgNTg2MTcsIDU4NjMzLCA1ODY0OSwgNTg2NjUsIDU4NjgxLCA1ODY5NywgNTg3MTMsIAotICAgIDU4NzI5LCA1ODc0NSwgNTg3NjEsIDU4Nzc3LCA1ODc5MywgNTg4MDksIDU4ODI1LCA1ODg0MSwgNTg4NTcsIDU4ODczLCAKLSAgICA1ODg4OSwgNTg5MDUsIDU4OTIxLCA1ODkzNywgNTg5NTMsIDU4OTY5LCA1ODk4NSwgNTkwMDEsIDU5MDE3LCA1OTAzMywgCi0gICAgNTkwNDksIDU5MDY1LCA1OTA4MSwgNTkwOTcsIDU5MTEzLCA1OTEyOSwgNTkxNDUsIDU5MTYxLCA1OTE3NywgNTkxOTMsIAotICAgIDU5MjA5LCA1OTIyNSwgNTkyNDEsIDU5MjU3LCA1OTI3MywgNTkyODksIDU5MzA1LCA1OTMyMSwgNTkzMzcsIDU5MzUzLCAKLSAgICA1OTM2OSwgNTkzODUsIDU5NDAxLCA1OTQxNywgNTk0MzMsIDU5NDQ5LCA1OTQ2NSwgNTk0ODEsIDU5NDk3LCA1OTUxMywgCi0gICAgNTk1MjksIDU5NTQ1LCA1OTU2MSwgNTk1NzcsIDU5NTkzLCA1OTYwOSwgNTk2MjUsIDU5NjQxLCA1OTY1NywgNTk2NzMsIAotICAgIDU5Njg5LCA1OTcwNSwgNTk3MjEsIDU5NzM3LCA1OTc1MywgNTk3NjksIDU5Nzg1LCA1OTgwMSwgNTk4MTcsIDU5ODMzLCAKLSAgICA1OTg0OSwgNTk4NjUsIDU5ODgxLCA1OTg5NywgNTk5MTMsIDU5OTI5LCA1OTk0NSwgNTk5NjEsIDU5OTc3LCA1OTk5MywgCi0gICAgNjAwMDksIDYwMDI1LCA2MDA0MSwgNjAwNTcsIDYwMDczLCA2MDA4OSwgNjAxMDUsIDYwMTIxLCA2MDEzNywgNjAxNTMsIAotICAgIDYwMTY5LCA2MDE4NSwgNjAyMDEsIDYwMjE3LCA2MDIzMywgNjAyNDksIDYwMjY1LCA2MDI4MSwgNjAyOTcsIDYwMzEzLCAKLSAgICA2MDMyOSwgNjAzNDUsIDYwMzYxLCA2MDM3NywgNjAzOTMsIDYwNDA5LCA2MDQyNSwgNjA0NDEsIDYwNDU3LCA2MDQ3MywgCi0gICAgNjA0ODksIDYwNTA1LCA2MDUyMSwgNjA1MzcsIDYwNTUzLCA2MDU2OSwgNjA1ODUsIDYwNjAxLCA2MDYxNywgNjA2MzMsIAotICAgIDYwNjQ5LCA2MDY2NSwgNjA2ODEsIDYwNjk3LCA2MDcxMywgNjA3MjksIDYwNzQ1LCA2MDc2MSwgNjA3NzcsIDYwNzkzLCAKLSAgICA2MDgwOSwgNjA4MjUsIDYwODQxLCA2MDg1NywgNjA4NzMsIDYwODg5LCA2MDkwNSwgNjA5MjEsIDYwOTM3LCA2MDk1MywgCi0gICAgNjA5NjksIDYwOTg1LCA2MTAwMSwgNjEwMTcsIDYxMDMzLCA2MTA0OSwgNjEwNjUsIDYxMDgxLCA2MTA5NywgNjExMTMsIAotICAgIDYxMTI5LCA2MTE0NSwgNjExNjEsIDYxMTc3LCA2MTE5MywgNjEyMDksIDYxMjI1LCA2MTI0MSwgNjEyNTcsIDYxMjczLCAKLSAgICA2MTI4OSwgNjEzMDUsIDYxMzIxLCA2MTMzNywgNjEzNTMsIDYxMzY5LCA2MTM4NSwgNjE0MDEsIDYxNDE3LCA2MTQzMywgCi0gICAgNjE0NDksIDYxNDY1LCA2MTQ4MSwgNjE0OTcsIDYxNTEzLCA2MTUyOSwgNjE1NDUsIDYxNTYxLCA2MTU3NywgNjE1OTMsIAotICAgIDYxNjA5LCA2MTYyNSwgNjE2NDEsIDYxNjU3LCA2MTY3MywgNjE2ODksIDYxNzA1LCA2MTcyMSwgNjE3MzcsIDYxNzUzLCAKLSAgICA2MTc2OSwgNjE3ODUsIDYxODAxLCA2MTgxNywgNjE4MzMsIDYxODQ5LCA2MTg2NSwgNjE4ODEsIDYxODk3LCA2MTkxMywgCi0gICAgNjE5MjksIDYxOTQ1LCA2MTk2MSwgNjE5NzcsIDYxOTkzLCA2MjAwOSwgNjIwMjUsIDYyMDQxLCA2MjA1NywgNjIwNzMsIAotICAgIDYyMDg5LCA2MjEwNSwgNjIxMjEsIDYyMTM3LCA2MjE1MywgNjIxNjksIDYyMTg1LCA2MjIwMSwgNjIyMTcsIDYyMjMzLCAKLSAgICA2MjI0OSwgNjIyNjUsIDYyMjgxLCA2MjI5NywgNjIzMTMsIDYyMzI5LCA2MjM0NSwgNjIzNjEsIDYyMzc3LCA2MjM5MywgCi0gICAgNjI0MDksIDYyNDI1LCA2MjQ0MSwgNjI0NTcsIDYyNDczLCA2MjQ4OSwgNjI1MDUsIDYyNTIxLCA2MjUzNywgNjI1NTMsIAotICAgIDYyNTY5LCA2MjU4NSwgNjI2MDEsIDYyNjE3LCA2MjYzMywgNjI2NDksIDYyNjY1LCA2MjY4MSwgNjI2OTcsIDYyNzEzLCAKLSAgICA2MjcyOSwgNjI3NDUsIDYyNzYxLCA2Mjc3NywgNjI3OTMsIDYyODA5LCA2MjgyNSwgNjI4NDEsIDYyODU3LCA2Mjg3MywgCi0gICAgNjI4ODksIDYyOTA1LCA2MjkyMSwgNjI5MzcsIDYyOTUzLCA2Mjk2OSwgNjI5ODUsIDYzMDAxLCA2MzAxNiwgMTgzMDcsIAotICAgIDYzMDI1LCA2MzAzMCwgNjMwMzYsIDYzMDQyLCA2MzA1MiwgNjMwNjAsIDE2MjcwLCAxNjg2OCwgMTA3MzMsIDYzMDczLCAKLSAgICAxNTE4LCAxNTIyLCA2MzA4MSwgMzk3MywgMjk1NjYsIDc1MTIsIDYzMDg3LCA2MzA5MiwgNjMwOTcsIDYzMTAyLCA2MzEwNywgCi0gICAgNjMxMTMsIDYzMTE4LCA2MzEyNCwgNjMxMjksIDYzMTM1LCA2MzE0MCwgNjMxNDUsIDYzMTUwLCA2MzE1NSwgNjMxNjEsIAotICAgIDYzMTY2LCA2MzE3MSwgNjMxNzYsIDYzMTgxLCA2MzE4NiwgNjMxOTEsIDYzMTk2LCA2MzIwMiwgNjMyMDcsIDYzMjEzLCAKLSAgICA2MzIyMCwgMjYwMCwgNjMyMjUsIDYzMjMxLCA4OTEyLCA2MzIzNSwgNjMyNDAsIDYzMjQ3LCA2MzI1NSwgNjUsIDYzMjU5LCAKLSAgICA2MzI2NSwgNjMyNzAsIDYzMjc1LCA2MzI3OSwgNjMyODQsIDYzMjg4LCA2MzI5MiwgMTE2MjEsIDYzMjk2LCA2MzMwNiwgCi0gICAgNjMzMTksIDYzMzMwLCA2MzM0MywgNjMzNTAsIDYzMzU2LCA2MzM2NCwgNjMzNjksIDYzMzc1LCA2MzM4MSwgNjMzODcsIAotICAgIDYzMzkyLCA2MzM5NywgNjM0MDIsIDYzNDA3LCA2MzQxMSwgNjM0MTYsIDYzNDIxLCA2MzQyNiwgNjM0MzIsIDYzNDM4LCAKLSAgICA2MzQ0NCwgNjM0NDksIDYzNDUzLCA2MzQ1OCwgNjM0NjMsIDYzNDY3LCA2MzQ3MiwgNjM0NzcsIDYzNDgyLCA2MzQ4NiwgCi0gICAgMTE2MzcsIDExNjQ4LCAxMTY1MywgMTU2MSwgNjM0OTAsIDYzNDk2LCAxNTY2LCA2MzUwMSwgNjM1MDQsIDE3NzQxLCAKLSAgICA2MzUwOSwgNjM1MTUsIDYzNTIwLCAxNTk3LCA2MzUyNiwgMTYwMywgMTYwOSwgMTE2ODMsIDYzNTMxLCA2MzU0MCwgNjM1NDgsIAotICAgIDYzNTU1LCA2MzU1OSwgNjM1NjMsIDYzNTY5LCA2MzU3NCwgMzMzNjUsIDYzNTc5LCA2MzU4NiwgNjM1OTMsIDYzNTk4LCAKLSAgICA2MzYwMiwgNjM2MDYsIDYzNjE1LCAxNjE0LCAxNzg1MCwgNjM2MjAsIDYzNjI0LCAxNzg2MSwgMTE2MiwgNjM2MjgsIAotICAgIDYzNjM1LCA2MzY0MCwgNjM2NDQsIDE3ODkxLCAxNjE4LCA0MTI0MywgNjM2NDcsIDYzNjUyLCA2MzY2MiwgNjM2NzEsIAotICAgIDYzNjc2LCA2MzY4MCwgNjM2ODYsIDE2MjMsIDQzODU1LCA2MzY5MSwgNjM3MDAsIDYzNzA2LCA2MzcxMSwgNjM3MTYsIAotICAgIDExODgyLCAxMTg4OCwgNjM3MjIsIDYzNzM0LCA2Mzc1MSwgNjM3NjgsIDYzNzg1LCA2MzgwMiwgNjM4MTksIDYzODM2LCAKLSAgICA2Mzg1MywgNjM4NzAsIDYzODg3LCA2MzkwNCwgNjM5MjEsIDYzOTM4LCA2Mzk1NSwgNjM5NzIsIDYzOTg5LCA2NDAwNiwgCi0gICAgNjQwMjMsIDY0MDQwLCA2NDA1NywgNjQwNzQsIDY0MDkxLCA2NDEwOCwgNjQxMjUsIDY0MTQyLCA2NDE1OSwgNjQxNzYsIAotICAgIDY0MTkzLCA2NDIxMCwgNjQyMjcsIDY0MjQ0LCA2NDI2MSwgNjQyNzgsIDY0Mjk1LCA2NDMxMiwgNjQzMjksIDY0MzQ2LCAKLSAgICA2NDM2MywgNjQzODAsIDY0Mzk3LCA2NDQxNCwgNjQ0MzEsIDY0NDQ4LCA2NDQ2NSwgNjQ0ODIsIDY0NDk5LCA2NDUxNiwgCi0gICAgNjQ1MzMsIDY0NTUwLCA2NDU2NywgNjQ1NzgsIDY0NTg4LCA2NDU5MywgMTYyOCwgNjQ1OTcsIDY0NjAyLCA2NDYwOCwgCi0gICAgNjQ2MTMsIDY0NjE4LCA2NDYyNSwgOTgzOSwgMTYzMywgNjQ2MzEsIDY0NjQwLCAyOTg4NywgNjQ2NDUsIDY0NjU2LCAKLSAgICAxMTg5OSwgNjQ2NjYsIDY0NjcxLCA2NDY3NywgNjQ2ODIsIDY0Njg5LCA2NDY5NSwgNjQ3MDAsIDE2MzgsIDE4MTc0LCAKLSAgICA2NDcwNSwgNjQ3MTEsIDExOTA5LCAxNjQzLCAxMTkxNCwgNjQ3MTcsIDY0NzIyLCA2NDcyOCwgNjQ3MzMsIDY0NzM4LCAKLSAgICA2NDc0MywgNjQ3NDgsIDY0NzUzLCA2NDc1OCwgNjQ3NjMsIDY0NzY4LCA2NDc3NCwgNjQ3ODAsIDY0Nzg2LCA2NDc5MSwgCi0gICAgNjQ3OTUsIDY0ODAwLCA2NDgwNSwgNjQ4MDksIDY0ODE0LCA2NDgxOSwgNjQ4MjQsIDY0ODI5LCA2NDgzMywgNjQ4MzgsIAotICAgIDY0ODQ0LCA2NDg0OSwgNjQ4NTQsIDY0ODU4LCA2NDg2MywgNjQ4NjgsIDY0ODc0LCA2NDg3OSwgNjQ4ODQsIDY0ODkwLCAKLSAgICA2NDg5NiwgNjQ5MDEsIDY0OTA1LCA2NDkxMCwgNjQ5MTUsIDY0OTIwLCA2NDkyNCwgNjQ5MjksIDY0OTM0LCA2NDkzOSwgCi0gICAgNjQ5NDUsIDY0OTUxLCA2NDk1NiwgNjQ5NjAsIDY0OTY0LCA2NDk2OSwgNjQ5NzQsIDY0OTc5LCAzMTM5NSwgNjQ5ODMsIAotICAgIDY0OTg4LCA2NDk5MywgNjQ5OTksIDY1MDA0LCA2NTAwOSwgNjUwMTMsIDY1MDE4LCA2NTAyMywgNjUwMjksIDY1MDM0LCAKLSAgICA2NTAzOSwgNjUwNDUsIDY1MDUxLCA2NTA1NiwgNjUwNjAsIDY1MDY1LCA2NTA3MCwgNjUwNzQsIDY1MDc5LCA2NTA4NCwgCi0gICAgNjUwODksIDY1MDk1LCA2NTEwMSwgNjUxMDYsIDY1MTEwLCA2NTExNSwgNjUxMjAsIDY1MTI0LCA2NTEyOSwgNjUxMzQsIAotICAgIDY1MTM5LCA2NTE0NCwgNjUxNDgsIDY1MTUxLCA2NTE1NCwgNjUxNTksIDY1MTY0LCAzNDA1NiwgNjUxNzEsIDY1MTc5LCAKLSAgICAzNjkxLCAyOTgzNywgNjUxODUsIDY1MTkyLCA2NTE5OCwgMzgzMCwgMTIwMjAsIDY1MjA0LCA2NTIxNCwgNjUyMjksIAotICAgIDY1MjM3LCAxMjAyNSwgNjUyNDgsIDY1MjUzLCA2NTI2NCwgNjUyNzYsIDY1Mjg4LCA2NTMwMCwgMjczNCwgNjUzMTIsIAotICAgIDY1MzE3LCA2NTMyOSwgNjUzMzMsIDY1MzM5LCA2NTM0NSwgNjUzNTAsIDE2NjAsIDE3NDE4LCA2NTM1OSwgNjUzNjQsIAotICAgIDQzOTE0LCA2NTM2OCwgNjUzNzIsIDY1Mzc3LCA2NTM4MSwgMTgzMTUsIDY1Mzg2LCA2NTM4OSwgNjUzOTQsIDY1NDAyLCAKLSAgICA2NTQxMCwgMTY2NCwgMTIwNjEsIDEyMDY3LCAxNjY5LCA2NTQxOCwgNjU0MjUsIDY1NDMwLCA2NTQzOSwgNjU0NDksIAotICAgIDY1NDU2LCA2NTQ2MSwgNjU0NjYsIDE2NzQsIDY1NDczLCA2NTQ3OCwgMTg0MzUsIDY1NDgyLCA2NTQ4NywgNjU0OTQsIAotICAgIDY1NTAwLCA2NTUwNCwgNjU1MTUsIDY1NTI1LCA2NTUzMiwgMTg0NTcsIDk3MzMsIDk3NDAsIDQwMjIsIDQwMjgsIDY1NTM5LCAKLSAgICAxNjc5LCA2NTU0NCwgNjU1NTAsIDY1NTU4LCA2NTU2NSwgNjU1NzEsIDY1NTc4LCA2NTU5MCwgNjU1OTYsIDY1NjAxLCAKLSAgICA2NTYxMywgNjU2MjQsIDY1NjMzLCA2NTY0MywgMzk1MiwgNjU2NTEsIDMzMTY2LCAzMzE3NSwgMTg0OTcsIDE2ODQsIDE2ODgsIAotICAgIDY1NjY0LCA2NTY3NSwgNjU2ODAsIDE2OTgsIDY1Njg4LCA2NTY5MywgNjU2OTgsIDE4NTU2LCA2NTcxMCwgNjU3MTMsIAotICAgIDY1NzE5LCA2NTcyNSwgNjU3MzAsIDY1NzM4LCAxNzAzLCA2NTc0MywgNjU3NDgsIDY1NzU2LCA2NTc2NCwgNjU3NzEsIAotICAgIDY1NzgwLCA2NTc4OCwgNjU3OTcsIDE3MDgsIDY1ODAxLCAxNzEzLCAyMzAxNiwgNjU4MDYsIDY1ODEzLCAxODYzMCwgCi0gICAgNjU4MjEsIDY1ODI3LCA2NTgzMiwgNjU4NDAsIDY1ODQ3LCA2NTg1NSwgNjU4NjUsIDY1ODc0LCA2NTg4NCwgNjU4OTMsIAotICAgIDY1OTA0LCA2NTkxNCwgNjU5MjQsIDY1OTMzLCA2NTk0MywgNjU5NTcsIDY1OTcwLCA2NTk3OSwgNjU5ODcsIDY1OTk3LCAKLSAgICA2NjAwNiwgNjYwMTgsIDY2MDI5LCA2NjA0MCwgNjYwNTAsIDE3OTQ4LCA2NjA1NSwgMTIyMTMsIDY2MDY0LCA2NjA3MCwgCi0gICAgNjYwNzUsIDY2MDgyLCA2NjA4OSwgNjYwOTUsIDE3NjE3LCA2NjEwNSwgNjYxMTEsIDY2MTE2LCA2NjEyNywgNjYxMzIsIAotICAgIDY2MTQwLCAxMjIzMCwgMTIyMzUsIDY2MTQ4LCA2NjE1NCwgNjYxNTgsIDY2MTY2LCA0MDE3LCAxODY5MiwgNDQwMDcsIAotICAgIDY2MTcxLCA2NjE3NywgNjYxODIsIDY2MTkwLCA2NjE5NywgMTMxNzksIDY2MjAyLCA2NjIwOCwgMTcyNCwgNjYyMTMsIAotICAgIDY2MjE2LCAxNDM4LCA2NjIyMiwgNjYyMjcsIDY2MjMyLCA2NjIzOCwgNjYyNDMsIDY2MjQ4LCA2NjI1MywgNjYyNTgsIAotICAgIDY2MjYzLCA2NjI2OCwgMTczMywgMTMsIDY2Mjc0LCA2NjI3OCwgNjYyODMsIDY2Mjg3LCA2NjI5MSwgNjYyOTUsIDM0Mjk2LCAKLSAgICA2NjMwMCwgMjUwNzAsIDY2MzA1LCA2NjMxMCwgNjYzMTQsIDY2MzE3LCA2NjMyMSwgNjYzMjUsIDY2MzMwLCA2NjMzNCwgCi0gICAgNjYzMzksIDY2MzQzLCA2NjM0OSwgMzc1MTQsIDM3NTE5LCAzNzUyNCwgNjYzNTIsIDY2MzU5LCA2NjM2NSwgNjYzNzMsIAotICAgIDQzNjc4LCA2NjM4MywgMzc1MzAsIDM0NTYwLCAzNDMxMSwgMzQzMTcsIDM3NTQ2LCAzNDMyMywgNjYzODgsIDY2MzkzLCAKLSAgICAzNDU5MywgNjYzOTcsIDY2NDAwLCA2NjQwNCwgNjY0MTIsIDY2NDE5LCA2NjQyMiwgNjY0MjcsIDY2NDMyLCA2NjQzNiwgCi0gICAgNjY0NDAsIDY2NDQzLCA2NjQ1MywgNjY0NjUsIDY2NDcyLCA2NjQ3OCwgMzQzMjgsIDY2NDg1LCAzNjA3OCwgNjY0ODgsIAotICAgIDg5MjksIDEwMTksIDY2NDkxLCA2NjQ5NSwgNjY1MDAsIDM4NzMsIDY2NTA0LCA2NjUwNywgMTQ4MjcsIDY2NTE0LCA2NjUyMSwgCi0gICAgNjY1MzQsIDY2NTQyLCA2NjU1MSwgNjY1NjAsIDY2NTY1LCA2NjU3NSwgNjY1ODgsIDY2NjAwLCA2NjYwNywgNjY2MTIsIAotICAgIDY2NjIxLCA2NjYzNCwgMzkwMzksIDY2NjUyLCA2NjY1NywgNjY2NjQsIDY2NjcwLCA2NjY3NSwgODE5LCA2NjY4MCwgCi0gICAgNjY2ODgsIDY2Njk1LCA2NjcwMiwgMjkzOTIsIDc4MywgNjY3MDgsIDY2NzE0LCA2NjcyNCwgNjY3MzIsIDY2NzM4LCAKLSAgICA2Njc0MywgMzQzNDcsIDYzMTAsIDM0MzYxLCA2Njc0NywgNjY3NTcsIDY2NzYyLCA2Njc3MiwgNjY3ODcsIDY2NzkzLCAKLSAgICA2Njc5OSwgMzQzNzEsIDY2ODA0LCAzMzQ4MiwgNjY4MDgsIDY2ODEzLCA2NjgyMCwgNjY4MjUsIDY2ODI5LCA2NjgzNCwgCi0gICAgMTg1MDAsIDY2ODQxLCA2Njg0NiwgNjY4NTAsIDYzNTEsIDM0Mzk3LCA2Njg1NCwgNjY4NjAsIDMyNCwgNjY4NzAsIDY2ODc3LCAKLSAgICA2Njg4NCwgNjY4ODksIDY2ODk4LCA2MzY1NiwgNjY5MDQsIDY2OTEyLCA2NjkxNiwgNjY5MjAsIDY2OTI0LCA2NjkyOCwgCi0gICAgNjY5MzMsIDY2OTM3LCA2Njk0MywgNjY5NTEsIDY2OTU2LCA2Njk2MSwgNjY5NjYsIDY2OTcwLCA2Njk3NSwgNjY5NzksIAotICAgIDY2OTgzLCA2Njk4OSwgNjY5OTUsIDY3MDAwLCA2NzAwNCwgNjcwMDksIDM0NTIxLCA2NzAxMywgMzQ1MjcsIDM0NTMzLCAKLSAgICA2NzAxOCwgNjcwMjQsIDY3MDMxLCA2NzAzNiwgNjcwNDAsIDMzNDk5LCAxODE2NywgNjcwNDMsIDY3MDQ3LCA2NzA1MiwgCi0gICAgNjcwNTksIDY3MDY1LCA2NzA2OSwgNjcwNzQsIDQzMzUzLCA2NzA4MCwgNjcwODQsIDY3MDkxLCA2NzA5NSwgNjcxMDAsIAotICAgIDY3MTA2LCA2NzExMiwgNjcxMTgsIDY3MTMwLCA2NzEzOSwgNjcxNDksIDY3MTU1LCA2NzE2MiwgNjcxNjcsIDY3MTcyLCAKLSAgICA2NzE3NiwgNjcxNzksIDY3MTg1LCA2NzE5MiwgNjcxOTcsIDY3MjAyLCA2NzIwOSwgNjcyMTYsIDY3MjIzLCA2NzIyOSwgCi0gICAgNjcyMzQsIDY3MjM5LCA2NzI0NywgMzQ1MzgsIDI0NjIsIDY3MjUyLCA2NzI1NywgNjcyNjMsIDY3MjY4LCA2NzI3NCwgCi0gICAgNjcyNzksIDY3Mjg0LCA2NzI4OSwgNjcyOTUsIDM0NTU5LCA2NzMwMCwgNjczMDYsIDY3MzEyLCA2NzMxOCwgMzQ2MjksIAotICAgIDY3MzIzLCA2NzMyOCwgNjczMzMsIDM0NjQwLCA2NzMzOCwgNjczNDMsIDY3MzQ4LCA2NzM1NCwgNjczNjAsIDM0NjQ1LCAKLSAgICA2NzM2NSwgNjczNzAsIDY3Mzc1LCAzNDcwMCwgMzQ3MDYsIDY3MzgwLCA2NzM4NSwgMzQ3MTEsIDM0NzMzLCAzMDEzNiwgCi0gICAgMzQ3MzksIDM0NzQzLCA2NzM5MCwgMTI5MDksIDY3Mzk0LCA2NzQwMiwgNjc0MDgsIDY3NDE2LCA2NzQyMywgNjc0MjksIAotICAgIDY3NDM5LCA2NzQ0NSwgNjc0NTIsIDExNTU2LCAzNDc1NywgNjc0NTgsIDY3NDcxLCA2NzQ4MCwgNjc0ODYsIDY3NDk1LCAKLSAgICA2NzUwMSwgMjUzODAsIDY3NTA4LCA2NzUxNSwgNjc1MjUsIDY3NTI4LCAzNDcwMSwgNjc1MzMsIDY3NTQwLCA2NzU0NSwgCi0gICAgNjc1NDksIDY3NTUzLCA2NzU1OCwgNjc1NjIsIDQxMzMsIDY3NTY3LCA2NzU3MiwgNjc1NzcsIDM3NjA4LCAzNzYxMywgCi0gICAgNjc1ODEsIDM3NjI3LCA2NzU4NiwgMzc2MzIsIDY3NTkxLCA2NzU5NywgMzc2NDQsIDM3NjUwLCAzNzY1NiwgNjc2MDIsIAotICAgIDY3NjA4LCAyNDM2NiwgNjc2MTksIDY3NjIyLCA2NzYzNCwgNjc2NDIsIDM0NzgwLCA2NzY0NiwgNjc2NTUsIDY3NjY1LCAKLSAgICA2NzY3NCwgMzQ3OTAsIDY3Njc5LCA2NzY4NiwgNjc2OTUsIDY3NzAxLCA2NzcwOSwgNjc3MTYsIDY0MDIsIDQ2NzMsIAotICAgIDY3NzIxLCAzNDcxMiwgNjc3MjcsIDY3NzMwLCA2NzczNiwgNjc3NDMsIDY3NzQ4LCA2Nzc1MywgMjUyOTAsIDY3NzU3LCAKLSAgICA2Nzc2MywgNjc3NjksIDY3Nzc0LCA2Nzc3OSwgNjc3ODMsIDY3Nzg5LCA2Nzc5NSwgMzU5ODQsIDEwNDgsIDM4Njg5LCAKLSAgICA0MDQxOSwgNDA0MjUsIDM0ODIxLCAzNDgyNiwgNjc4MDAsIDY3ODA0LCA2NzgwOCwgNjc4MTEsIDY3ODI0LCA2NzgzMCwgCi0gICAgNjc4MzQsIDY3ODM3LCA2Nzg0MiwgMzYzMjEsIDY3ODQ2LCAzMzUwNCwgMjI5NjYsIDY3ODUyLCA2MzMxLCA2MzM5LCA5NTcwLCAKLSAgICA2Nzg1NSwgNjc4NjAsIDY3ODY1LCA2Nzg3MCwgNjc4NzUsIDY3ODgwLCA2Nzg4NSwgNjc4OTAsIDY3ODk1LCA2NzkwMCwgCi0gICAgNjc5MDYsIDY3OTExLCA2NzkxNiwgNjc5MjIsIDY3OTI3LCA2NzkzMiwgNjc5MzcsIDY3OTQyLCA2Nzk0NywgNjc5NTIsIAotICAgIDY3OTU4LCA2Nzk2MywgNjc5NjksIDY3OTc0LCA2Nzk3OSwgNjc5ODQsIDY3OTg5LCA2Nzk5NCwgNjc5OTksIDY4MDA0LCAKLSAgICA2ODAwOSwgNjgwMTQsIDY4MDE5LCA2ODAyNSwgNjgwMzAsIDY4MDM1LCA2ODA0MCwgNjgwNDUsIDY4MDUwLCA2ODA1NSwgCi0gICAgNjgwNjEsIDY4MDY2LCA2ODA3MSwgNjgwNzYsIDY4MDgxLCA2ODA4NiwgNjgwOTEsIDY4MDk2LCA2ODEwMSwgNjgxMDYsIAotICAgIDY4MTEyLCA2ODExNywgNjgxMjIsIDY4MTI3LCA2ODEzMiwgNjgxMzgsIDY4MTQ0LCA2ODE0OSwgNjgxNTUsIDY4MTYwLCAKLSAgICA2ODE2NSwgNjgxNzAsIDY4MTc1LCA2ODE4MCwgMTUxMSwgMTQ1LCA2ODE4NSwgNjgxODksIDY4MTkzLCA2ODE5NywgMjcwNzYsIAotICAgIDY4MjAxLCA2ODIwNSwgNjgyMTAsIDY4MjE0LCA2ODIxOSwgNjgyMjMsIDY4MjI4LCA2ODIzMywgNjgyMzgsIDY4MjQyLCAKLSAgICA2ODI0NiwgNjgyNTEsIDY4MjU1LCAxNDU0MiwgNjgyNjAsIDY4MjY0LCA2ODI3MSwgNjgyODEsIDE2NTk1LCA2ODI5MCwgCi0gICAgNjgyOTksIDY4MzAzLCA2ODMwOCwgNjgzMTMsIDY4MzE3LCA2ODMyMSwgMjY4NzAsIDMwNzgsIDY4MzI1LCA2ODMzMSwgCi0gICAgMTg5NjcsIDY4MzM1LCA2ODM0NCwgNjgzNTIsIDY4MzU4LCA2ODM2MywgNjgzNzUsIDY4Mzg3LCA2ODM5MiwgNjgzOTYsIAotICAgIDY4NDAxLCA2ODQwNSwgNjg0MTEsIDY4NDE3LCA2ODQyMiwgNjg0MzIsIDY4NDQyLCA2ODQ0OCwgNjg0NTMsIDY4NDU3LCAKLSAgICA2ODQ2MywgNjg0NjgsIDY4NDc1LCA2ODQ4MSwgNjg0ODYsIDY4NDk1LCA2ODUwNCwgNjg1MTIsIDE2OTkzLCA2ODUxNiwgCi0gICAgNjg1MjUsIDY4NTMzLCA2ODU0NSwgNjg1NTYsIDY4NTY3LCA2ODU3NiwgNjg1ODAsIDY4NTg5LCA2ODU5NywgNjg2MDcsIAotICAgIDY4NjE1LCA2ODYyMiwgNjg2MjgsIDY4NjMzLCA2ODYzOSwgNjg2NDQsIDY4NjU1LCA1NCwgMzMzMDksIDY4NjYxLCAyODMzMSwgCi0gICAgMjgzNDEsIDY4NjY3LCA2ODY3NSwgNjg2ODIsIDY4Njg4LCA2ODY5MiwgNjg3MDIsIDY4NzEzLCA2ODcyMSwgNjg3MzAsIAotICAgIDY4NzM1LCA2ODc0MCwgNjg3NDUsIDY4NzQ5LCA2ODc1MywgMTg5MjEsIDY4NzYxLCA2ODc2NSwgNjg3NzEsIDY4NzgxLCAKLSAgICA2ODc4OCwgNjg3OTQsIDY4ODAwLCAzNzcwNywgNjg4MDQsIDY4ODA2LCA2ODgwOSwgNjg4MTUsIDY4ODE5LCA2ODgzMCwgCi0gICAgNjg4NDAsIDY4ODQ2LCA2ODg1MywgNjg4NjAsIDE0NDc5LCA2ODg2OCwgNjg4NzQsIDY4ODgzLCA2ODg5MiwgNjg4OTgsIAotICAgIDEwNjE1LCA2ODkwNCwgNjg5MTAsIDY4OTE1LCA2ODkyMCwgNjg5MjcsIDY4OTMyLCA2ODkzOSwgNjg5NDUsIDY4OTUwLCAKLSAgICA2ODk1OCwgNjg5NzEsIDY4OTgwLCA2NTkxOSwgNjU5MjksIDY4OTg5LCA2ODk5NSwgNjkwMDEsIDY5MDA4LCA2OTAxNSwgCi0gICAgNjkwMjIsIDY5MDI5LCA2OTAzNiwgNjkwNDEsIDY5MDQ1LCA2OTA0OSwgNjkwNTIsIDY5MDYyLCA2OTA2NiwgNjkwNzgsIAotICAgIDY5MDg3LCA2OTA5MSwgNjkxMDIsIDY5MTA3LCA2OTExMSwgNjU5MzgsIDY5MTE3LCA2OTEyNCwgNjkxMzMsIDY5MTQxLCAKLSAgICA2OTE0OSwgNjkxNTQsIDY5MTU4LCA2OTE2MywgNjkxNjgsIDY5MTc4LCA2OTE4NiwgNjkxOTEsIDY5MTk1LCA2OTE5OSwgCi0gICAgNjkyMDUsIDY5MjEzLCA2OTIyMCwgNjkyMzIsIDY5MjQwLCA2OTI1MSwgNjkyNTgsIDY5MjY0LCA2OTI3NCwgNjkyODAsIAotICAgIDY5Mjg0LCA2OTI5MSwgNjkyOTcsIDY5MzAyLCA2OTMwNiwgNjkzMTAsIDY5MzE0LCA2OTMyMywgNjkzMzIsIDY5MzQxLCAKLSAgICA2OTM0NywgNjkzNTMsIDY5MzU5LCA2OTM2NCwgNjkzNzEsIDY5Mzc3LCA2OTM4NSwgNjkzOTIsIDY5Mzk4LCAxMzYyMiwgCi0gICAgNjk0MDMsIDY5NDA5LCA2OTQxMywgMTU1MjksIDY5NDE3LCA2OTQyMiwgNjk0MzIsIDY5NDQxLCA2OTQ0NywgNjk0NTMsIAotICAgIDY5NDYxLCA2OTQ2OCwgNjk0NzIsIDY5NDc2LCA2OTQ4MiwgNjk0OTAsIDY5NDk3LCA2OTUwMywgNjk1MTQsIDY5NTE4LCAKLSAgICA2OTUyMiwgNjk1MjYsIDY5NTI5LCA2OTUzNSwgNjk1NDAsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIDY5NTYyLCA2OTU3MCwgCi0gICAgNjk1NzcsIDY5NTgzLCA2OTU5MCwgMjU5NjMsIDQzNDIyLCA2OTU5NSwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTQsIAotICAgIDY5NjIyLCA2OTYyOSwgNjk2MzUsIDY5NjQ0LCA2OTY1MiwgNjk2NTgsIDY5NjYzLCA2OTY2NywgNjk2NzIsIDY5Njc3LCAKLSAgICA2OTY4MSwgNjk2ODUsIDY5Njg5LCA2OTY5NCwgNjk3MDMsIDY5NzA3LCA2OTcxNCwgNDA1MjgsIDY5NzE4LCA2OTcyNCwgCi0gICAgNjk3MjgsIDY5NzM2LCA2OTc0MiwgNjk3NDcsIDY5NzU4LCA2OTc2NiwgNjk3NzIsIDY5NzgxLCAyNDUxMywgNjk3ODksIAotICAgIDY5Nzk2LCA2OTgwMywgNjk4MTAsIDY5ODE3LCA2OTgyNCwgNDY3MDQsIDE0MzE3LCA2OTgzMSwgNjk4MzgsIDY5ODQzLCAKLSAgICAzNzc0MywgNjUyOSwgNjk4NDksIDY5ODU0LCA2OTg1OSwgNjk4NjUsIDY5ODcxLCA2OTg3NywgNjk4ODIsIDY5ODg3LCAKLSAgICA2OTg5MiwgNjk4OTcsIDY5OTAzLCA2OTkwOCwgNjk5MTQsIDY5OTE5LCA2OTkyNSwgNjk5MzAsIDY5OTM1LCA2OTk0MCwgCi0gICAgNjk5NDUsIDY5OTUwLCA2OTk1NSwgNjk5NjAsIDY5OTY2LCA2OTk3MSwgNjk5NzcsIDY5OTgyLCA2OTk4NywgNjk5OTIsIAotICAgIDY5OTk3LCA3MDAwMiwgNzAwMDcsIDcwMDEzLCA3MDAxOCwgNzAwMjMsIDcwMDI4LCA3MDAzMywgNzAwMzgsIDcwMDQzLCAKLSAgICA3MDA0OCwgNzAwNTMsIDcwMDU4LCA3MDA2MywgNzAwNjksIDcwMDc0LCA3MDA3OSwgNzAwODQsIDcwMDg5LCA3MDA5NCwgCi0gICAgNzAwOTksIDcwMTA0LCA3MDEwOSwgNzAxMTUsIDcwMTIwLCA3MDEyNSwgNzAxMzAsIDcwMTM1LCA3MDE0MCwgNzAxNDUsIAotICAgIDcwMTUwLCA3MDE1NSwgNzAxNjAsIDcwMTY1LCA3MDE3MCwgNzAxNzUsIDcwMTgxLCAxODU0LCAyNjAsIDcwMTg2LCA0MTM2MSwgCi0gICAgNzAxOTAsIDcwMTkzLCA3MDE5OCwgNzAyMDIsIDcwMjA1LCAzNDE1LCA3MDIxMCwgNzAyMTUsIDcwMjE5LCA3MDIyOCwgCi0gICAgNzAyMzksIDcwMjU2LCA3MDI3NCwgNjkxNDUsIDcwMjgyLCA3MDI4NSwgNzAyOTUsIDcwMzAyLCA3MDMxMSwgNzAzMjcsIAotICAgIDcwMzM2LCA3MDM0NiwgNzAzNTEsIDcwMzYxLCA3MDM3MCwgNzAzNzgsIDcwMzkyLCA3MDQwMCwgNzA0MDQsIDcwNDA3LCAKLSAgICA3MDQxNCwgNzA0MjAsIDcwNDMxLCA3MDQzOCwgNzA0NTAsIDcwNDYxLCA3MDQ3MiwgNzA0ODEsIDcwNDg4LCAxMjc4LCA3MTAsIAotICAgIDcwNDk4LCAyNjI5LCA3MDUwMiwgNzA1MDcsIDcwNTE2LCA5MjIxLCAxODg5NCwgMjI0NzEsIDcwNTI0LCA3MDUzMiwgCi0gICAgNzA1NDYsIDcwNTU5LCA3MDU2MywgNzA1NjgsIDcwNTczLCA3MDU3OCwgNzA1ODQsIDcwNTkwLCA3MDU5NSwgODkyMSwgCi0gICAgMTY2MjMsIDcwNjAwLCA3MDYwNCwgNzA2MTIsIDEyMDYyLCA3MDYxNywgNzA2MjMsIDcwNjMyLCA3MDY0MCwgMTczNiwgCi0gICAgMTIwNzQsIDkwOCwgNjQ2NSwgNzA2NDQsIDcwNjQ4LCA3MDY1NywgNzA2NjcsIDI0MTksIDI5MTI3LCA3MDY3NiwgNzA2ODIsIAotICAgIDE4NDA3LCAyOTE0MiwgNzA2ODgsIDQxOTMsIDEyNDUyLCA3MDY5NCwgNzA3MDEsIDY1NjcwLCA3MDcwNSwgNzA3MDksIAotICAgIDcwNzE1LCA3MDcyMCwgNzA3MjUsIDM2MzQsIDE1NCwgMTU0MzcsIDcwNzMwLCA3MDc0MiwgNzA3NDYsIDcwNzUyLCA3MDc1NywgCi0gICAgMjk5MDcsIDcwNzYxLCAxMjQ0MCwgMjc2OSwgNCwgNzA3NjYsIDcwNzc2LCA3MDc4NywgNzA3OTMsIDcwODA0LCA3MDgxMSwgCi0gICAgNzA4MTcsIDcwODIzLCA3MDgzMSwgNzA4MzgsIDcwODQ0LCA3MDg1NCwgNzA4NjQsIDcwODc0LCA3MDg4MywgMjUzNjcsIAotICAgIDEyOTAsIDcwODg4LCA3MDg5MiwgNzA4OTYsIDcwOTAyLCA3MDkwNiwgMjc5MiwgMjc5OCwgODkxOCwgMjI5NCwgNzA5MTAsIAotICAgIDcwOTE0LCA3MDkyMywgNzA5MzEsIDcwOTQyLCA3MDk1MCwgNzA5NTgsIDcwOTY0LCA3MDk2OSwgNzA5ODAsIDcwOTkxLCAKLSAgICA3MDk5OSwgNzEwMDUsIDcxMDEwLCAxMDQzNCwgNzEwMjAsIDcxMDI4LCA3MTAzMiwgNzEwMzYsIDcxMDQxLCA3MTA0NSwgCi0gICAgNzEwNTcsIDMwMzE0LCAxNjU0OCwgNzEwNjQsIDcxMDc0LCA3MTA4MCwgNzEwODYsIDEwNTM2LCA3MTA5NiwgNzExMDcsIAotICAgIDcxMTE4LCA3MTEyOCwgNzExMzcsIDcxMTQxLCA3MTE0OCwgMTc1MCwgOTk2LCA3MTE1OCwgNzExNjMsIDcxMTcxLCA2NTQ4MywgCi0gICAgNzExNzksIDcxMTg0LCA3MTE5NSwgNzEyMDIsIDcxMjE2LCAxNTM2NiwgNDc4LCA3MTIyNiwgNzEyMzAsIDcxMjM0LCAKLSAgICA3MTI0MiwgNzEyNTEsIDcxMjU5LCA3MTI2NSwgNzEyNzksIDcxMjg2LCA3MTI5MiwgNzEzMDEsIDcxMzA4LCA3MTMxOCwgCi0gICAgNzEzMjYsIDcxMzMzLCA3MTM0MSwgNzEzNDgsIDQwMjQsIDE0OSwgNzEzNTYsIDcxMzY3LCA3MTM3MSwgNzEzODMsIDcxMzg5LCAKLSAgICAxMjYzMywgMTkyLCA3MTM5NCwgOTg3MSwgNzEzOTksIDcxNDAzLCA3MTQxMCwgNzE0MTYsIDcxNDI0LCA3MTQzMSwgOTI4MCwgCi0gICAgNzE0MzgsIDcxNDQ3LCA3MTQ1NSwgNDA5MywgNzE0NjgsIDQxMTAsIDcxNDcyLCAyODQyLCA1MTQsIDcxNDc3LCA3MTQ5MCwgCi0gICAgNzE0OTQsIDcxNDk5LCAyODQ3LCAxODUzLCA4MDksIDcxNTAzLCA0MTE0LCA3MTUxMSwgNzE1MTcsIDcxNTIxLCA4NjYsIAotICAgIDcxNTMxLCA3MTU0MCwgNzE1NDUsIDM2NTEsIDcxNTQ5LCAxNjMwNCwgMTYzMTEsIDUwMDY2LCA3MTU1MywgNDE0NSwgNDAzNCwgCi0gICAgMTQyMDAsIDcxNTYxLCA3MTU2OCwgNzE1NzMsIDI1NDMxLCA3MTU3NywgNzE1ODQsIDcxNTkwLCA3MTU5NSwgNzE2MDAsIAotICAgIDE2MzI0LCAxODYsIDcxNjA1LCA3MTYxNywgNzE2MjMsIDcxNjMxLCAyODU5LCAxNzY4LCA3MTYzOSwgNzE2NDEsIDcxNjQ2LCAKLSAgICA3MTY1MSwgNzE2NTYsIDcxNjYyLCA3MTY2NywgNzE2NzIsIDcxNjc3LCA3MTY4MiwgNzE2ODcsIDcxNjkyLCA3MTY5OCwgCi0gICAgNzE3MDMsIDcxNzA4LCA3MTcxMywgNzE3MTgsIDcxNzIzLCA3MTcyOCwgNzE3MzMsIDcxNzM4LCA3MTc0NCwgNzE3NDksIAotICAgIDcxNzU0LCA3MTc1OSwgNzE3NjUsIDcxNzcwLCA3MTc3NiwgNzE3ODEsIDcxNzg2LCA3MTc5MSwgNzE3OTYsIDcxODAxLCAKLSAgICA3MTgwNiwgNzE4MTEsIDcxODE3LCA3MTgyMiwgNzE4MjgsIDcxODMzLCA3MTgzOCwgNzE4NDMsIDcxODQ4LCA3MTg1MywgCi0gICAgNzE4NTgsIDcxODYzLCA3MTg2OCwgNzE4NzQsIDcxODgwLCA3MTg4NSwgNzE4OTAsIDcxODk2LCA3MTkwMSwgNzE5MDUsIAotICAgIDcxOTA5LCA3MTkxNCwgNzE5MjAsIDcxOTI0LCA3MTkzMCwgNzE5MzUsIDcxOTQwLCA3MTk0NiwgNzE5NTEsIDcxOTU1LCAKLSAgICA3MTk2MCwgNzE5NjUsIDcxOTY5LCA3MTk3MiwgNzE5NzQsIDcxOTc4LCA3MTk4MSwgNzE5ODgsIDcxOTkzLCA3MTk5NywgCi0gICAgNzIwMDIsIDcyMDA2LCA3MjAxMCwgNzIwMTQsIDcyMDIzLCA3MjAyNywgMzUwMjYsIDcyMDMwLCAzNTAzMSwgNzIwMzcsIAotICAgIDcyMDQyLCAzNTAzNiwgNzIwNTEsIDcyMDYwLCAzNTA0MiwgNzIwNjUsIDM1MDQ3LCA3MjA3NCwgNzIwNzksIDEyNjc2LCAKLSAgICA3MjA4MywgNzIwODgsIDcyMDkzLCAzNTA1MiwgNzIwOTcsIDQ0OTIxLCA3MjEwMSwgNzIxMDQsIDcyMTA4LCA4NTg5LCAKLSAgICA3MjExNCwgNzIxMTcsIDcyMTIyLCA3MjEyNiwgMzg4OCwgMzUwNTcsIDcyMTI5LCA3MjEzMywgNzIxMzYsIDcyMTQxLCAKLSAgICA3MjE0NSwgNzIxNTEsIDcyMTU5LCA3MjE3MiwgNzIxODEsIDcyMTg3LCA3MjE5MiwgNzIxOTgsIDcyMjAyLCA3MjIwOCwgCi0gICAgNzIyMTQsIDcyMjIyLCA3MjIyNywgNzIyMzEsIDcyMjM4LCA3MjI0NCwgNzIyNTIsIDcyMjYxLCA3MjI2OSwgMzUwNjAsIAotICAgIDcyMjc2LCA3MjI4NiwgNzIyOTksIDcyMzA0LCA3MjMwOSwgNzIzMTMsIDcyMzIyLCA3MjMyOCwgNzIzMzUsIDcyMzQ2LCAKLSAgICA3MjM1OCwgNzIzNjUsIDcyMzc0LCA3MjM4MywgNzIzOTIsIDcyMzk5LCA3MjQwNSwgNzI0MTIsIDcyNDIwLCA3MjQyNywgCi0gICAgNzI0MzUsIDcyNDQ0LCA3MjQ1MiwgNzI0NTksIDcyNDY3LCA3MjQ3NiwgNzI0ODQsIDcyNDkzLCA3MjUwMywgNzI1MTIsIAotICAgIDcyNTIwLCA3MjUyNywgNzI1MzUsIDcyNTQ0LCA3MjU1MiwgNzI1NjEsIDcyNTcxLCA3MjU4MCwgNzI1ODgsIDcyNTk3LCAKLSAgICA3MjYwNywgNzI2MTYsIDcyNjI2LCA3MjYzNywgNzI2NDcsIDcyNjU2LCA3MjY2NCwgNzI2NzEsIDcyNjc5LCA3MjY4OCwgCi0gICAgNzI2OTYsIDcyNzA1LCA3MjcxNSwgNzI3MjQsIDcyNzMyLCA3Mjc0MSwgNzI3NTEsIDcyNzYwLCA3Mjc3MCwgNzI3ODEsIAotICAgIDcyNzkxLCA3MjgwMCwgNzI4MDgsIDcyODE3LCA3MjgyNywgNzI4MzYsIDcyODQ2LCA3Mjg1NywgNzI4NjcsIDcyODc2LCAKLSAgICA3Mjg4NiwgNzI4OTcsIDcyOTA3LCA3MjkxOCwgNzI5MzAsIDcyOTQxLCA3Mjk1MSwgNzI5NjAsIDcyOTY4LCA3Mjk3NSwgCi0gICAgNzI5ODMsIDcyOTkyLCA3MzAwMCwgNzMwMDksIDczMDE5LCA3MzAyOCwgNzMwMzYsIDczMDQ1LCA3MzA1NSwgNzMwNjQsIAotICAgIDczMDc0LCA3MzA4NSwgNzMwOTUsIDczMTA0LCA3MzExMiwgNzMxMjEsIDczMTMxLCA3MzE0MCwgNzMxNTAsIDczMTYxLCAKLSAgICA3MzE3MSwgNzMxODAsIDczMTkwLCA3MzIwMSwgNzMyMTEsIDczMjIyLCA3MzIzNCwgNzMyNDUsIDczMjU1LCA3MzI2NCwgCi0gICAgNzMyNzIsIDczMjgxLCA3MzI5MSwgNzMzMDAsIDczMzEwLCA3MzMyMSwgNzMzMzEsIDczMzQwLCA3MzM1MCwgNzMzNjEsIAotICAgIDczMzcxLCA3MzM4MiwgNzMzOTQsIDczNDA1LCA3MzQxNSwgNzM0MjQsIDczNDM0LCA3MzQ0NSwgNzM0NTUsIDczNDY2LCAKLSAgICA3MzQ3OCwgNzM0ODksIDczNDk5LCA3MzUxMCwgNzM1MjIsIDczNTMzLCA3MzU0NSwgNzM1NTgsIDczNTcwLCA3MzU4MSwgCi0gICAgNzM1OTEsIDczNjAwLCA3MzYwOCwgNzM2MTUsIDczNjIzLCA3MzYzMiwgNzM2NDAsIDczNjQ5LCA3MzY1OSwgNzM2NjgsIAotICAgIDczNjc2LCA3MzY4NSwgNzM2OTUsIDczNzA0LCA3MzcxNCwgNzM3MjUsIDczNzM1LCA3Mzc0NCwgNzM3NTIsIDczNzYxLCAKLSAgICA3Mzc3MSwgNzM3ODAsIDczNzkwLCA3MzgwMSwgNzM4MTEsIDczODIwLCA3MzgzMCwgNzM4NDEsIDczODUxLCA3Mzg2MiwgCi0gICAgNzM4NzQsIDczODg1LCA3Mzg5NSwgNzM5MDQsIDczOTEyLCA3MzkyMSwgNzM5MzEsIDczOTQwLCA3Mzk1MCwgNzM5NjEsIAotICAgIDczOTcxLCA3Mzk4MCwgNzM5OTAsIDc0MDAxLCA3NDAxMSwgNzQwMjIsIDc0MDM0LCA3NDA0NSwgNzQwNTUsIDc0MDY0LCAKLSAgICA3NDA3NCwgNzQwODUsIDc0MDk1LCA3NDEwNiwgNzQxMTgsIDc0MTI5LCA3NDEzOSwgNzQxNTAsIDc0MTYyLCA3NDE3MywgCi0gICAgNzQxODUsIDc0MTk4LCA3NDIxMCwgNzQyMjEsIDc0MjMxLCA3NDI0MCwgNzQyNDgsIDc0MjU3LCA3NDI2NywgNzQyNzYsIAotICAgIDc0Mjg2LCA3NDI5NywgNzQzMDcsIDc0MzE2LCA3NDMyNiwgNzQzMzcsIDc0MzQ3LCA3NDM1OCwgNzQzNzAsIDc0MzgxLCAKLSAgICA3NDM5MSwgNzQ0MDAsIDc0NDEwLCA3NDQyMSwgNzQ0MzEsIDc0NDQyLCA3NDQ1NCwgNzQ0NjUsIDc0NDc1LCA3NDQ4NiwgCi0gICAgNzQ0OTgsIDc0NTA5LCA3NDUyMSwgNzQ1MzQsIDc0NTQ2LCA3NDU1NywgNzQ1NjcsIDc0NTc2LCA3NDU4NiwgNzQ1OTcsIAotICAgIDc0NjA3LCA3NDYxOCwgNzQ2MzAsIDc0NjQxLCA3NDY1MSwgNzQ2NjIsIDc0Njc0LCA3NDY4NSwgNzQ2OTcsIDc0NzEwLCAKLSAgICA3NDcyMiwgNzQ3MzMsIDc0NzQzLCA3NDc1NCwgNzQ3NjYsIDc0Nzc3LCA3NDc4OSwgNzQ4MDIsIDc0ODE0LCA3NDgyNSwgCi0gICAgNzQ4MzcsIDc0ODUwLCA3NDg2MiwgNzQ4NzUsIDc0ODg5LCA3NDkwMiwgNzQ5MTQsIDc0OTI1LCA3NDkzNSwgNzQ5NDQsIAotICAgIDc0OTUyLCA3NDk1OSwgNzQ5NjQsIDg0MTksIDc0OTcxLCAzNTA3MCwgNzQ5NzYsIDc0OTgxLCAzNTA3NSwgNzQ5ODcsIAotICAgIDIyNTc5LCAzNTA4MCwgNzQ5OTIsIDc0OTk4LCA3NTAwNiwgNzUwMTIsIDc1MDE4LCA3NTAyNSwgNzUwMzIsIDc1MDM3LCAKLSAgICA3NTA0MSwgNzUwNDUsIDc1MDQ4LCA3NTA1MiwgNzUwNjEsIDc1MDcwLCA3NTA3OCwgNzUwODQsIDc1MDk2LCA3NTEwNywgCi0gICAgNzUxMTEsIDMxNDAsIDgzOTQsIDc1MTE2LCA3NTExOSwgNzUxMjEsIDc1MTI1LCA3NTEyOSwgNzUxMzMsIDc1MTM5LCAKLSAgICA3NTE0NCwgMjc5OTAsIDc1MTQ5LCA3NTE1MywgNzUxNTYsIDc1MTYxLCA3NTE2NSwgNzUxNzIsIDc1MTc4LCA3NTE4MiwgCi0gICAgNjQ4NSwgNzUxODYsIDM1MDk3LCA3NTE5MSwgNzUxOTgsIDc1MjA3LCA3NTIxNSwgNzUyMjYsIDc1MjM0LCA3NTI0MywgCi0gICAgNzUyNTEsIDc1MjU4LCA3NTI2NSwgNzUyNzEsIDc1MjgyLCAzNTEwMiwgNzUyODcsIDc1Mjk4LCA3NTMxMCwgNzUzMTgsIAotICAgIDc1MzI5LCA3NTMzOCwgNzUzNDksIDc1MzU0LCA3NTM2MiwgMjU5NSwgNzUzNjcsIDM3MTY2LCA3NTM4MCwgNzUzODQsIAotICAgIDc1Mzk2LCA3NTQwNCwgNzU0MDksIDc1NDE3LCA3NTQyOCwgMTkxMTQsIDc1NDM3LCA3NTQ0MywgNzU0NTAsIDc1NDU4LCAKLSAgICA3NTQ2NCwgMzUxMTIsIDc1NDY5LCA0MTM5LCA2MzA1NiwgNzU0NzYsIDc1NDc5LCA3NTQ4NywgNzU1MDAsIDc1NTEzLCAKLSAgICA3NTUyNiwgNzU1MzksIDc1NTQ2LCA3NTU1NywgNzU1NjYsIDc1NTcxLCA0NjUyMSwgNDY1MjYsIDc1NTc1LCA3NTU3OSwgCi0gICAgNzU1ODcsIDc1NTk0LCA3NTYwMywgNzU2MTEsIDc1NjE3LCA3NTYyNiwgNzU2MzQsIDc1NjQxLCA3NTY0OSwgNzU2NTMsIAotICAgIDc1NjYyLCA3NTY3MSwgNzU2ODEsIDc1Njk0LCA3NTcwNywgNzU3MTcsIDM1MTE3LCA3NTcyMywgNzU3MzAsIDc1NzM2LCAKLSAgICA3NTc0MiwgMzUxMjMsIDc1NzQ3LCA3NTc1MCwgNzU3NTQsIDc1NzYyLCA3NTc3MSwgNDYyNTksIDc1Nzc5LCA3NTc4OCwgCi0gICAgNzU3OTYsIDc1ODAzLCA3NTgxMSwgNzU4MjEsIDc1ODMwLCA3NTgzOSwgMzY0MjAsIDc1ODQ4LCA3NTg1OSwgNzU4NzQsIAotICAgIDc1ODg0LCA5OTA0LCAyMzI2MywgNzU4OTMsIDc1ODk4LCA3NTkwMywgNzU5MDcsIDc1OTEyLCA3NTkxNiwgNzU5MjEsIAotICAgIDc1OTI3LCA3NTkzMiwgNzU5MzcsIDc1OTQzLCA3NTk0OCwgNzU5NTMsIDIzMjI4LCA3NTk1OCwgNzU5NjUsIDc1OTczLCAKLSAgICA3NTk4MSwgNzU5ODksIDc1OTk0LCA3NjAwMSwgNzYwMDgsIDc2MDEzLCAyMjcyLCA3NjAxNywgNzYwMjEsIDc2MDI5LCAKLSAgICA3NjAzNywgMzUxNDAsIDc2MDQzLCA3NjA0OSwgNzYwNjEsIDc2MDY3LCA3NjA3NCwgNzYwNzgsIDc2MDg1LCA3NjA5MCwgCi0gICAgNzYwOTcsIDc2MTAzLCA3NjExMCwgNzYxMjEsIDc2MTMxLCA3NjE0MSwgNzYxNTMsIDc2MTU5LCA3NjE2NywgNzYxNzMsIAotICAgIDc2MTgzLCA3NjE5MywgMzUxNjcsIDc2MjAyLCA3NjIxMSwgNzYyMTcsIDc2MjI5LCA3NjI0MCwgNzYyNDcsIDc2MjUyLCAKLSAgICA3NjI1NiwgNzYyNjQsIDc2MjcwLCA3NjI3NSwgNzYyODAsIDc2Mjg3LCA3NjI5NSwgNzYzMDcsIDc2MzE3LCA3NjMyNiwgCi0gICAgNzYzMzUsIDc2MzQyLCAzNzAxOSwgMjU3NjQsIDc2MzQ4LCA3NjM1MywgNzYzNTcsIDc2MzYxLCA3NjM2NiwgNzYzNzQsIAotICAgIDc2MzgwLCA3NjM5MSwgNzY0MDQsIDc2NDA5LCA3NjQxNiwgMzUxNzIsIDc2NDIxLCA3NjQzMywgNzY0NDIsIDc2NDUwLCAKLSAgICA3NjQ2MCwgNzY0NzEsIDc2NDg0LCA3NjQ5MSwgNzY1MDAsIDc2NTA5LCA3NjUxNywgNzY1MjIsIDc2NTI4LCAxNTAwLCAKLSAgICA3NjUzMywgNzY1MzgsIDc2NTQzLCA3NjU0OCwgNzY1NTQsIDc2NTU5LCA3NjU2NCwgNzY1NzAsIDc2NTc2LCA3NjU4MSwgCi0gICAgNzY1ODUsIDc2NTkwLCA3NjU5NSwgNzY2MDAsIDYzNjExLCA3NjYwNSwgNzY2MTAsIDc2NjE1LCA3NjYyMCwgNzY2MjYsIAotICAgIDc2NjMyLCA3NjYzNywgNzY2NDEsIDc2NjQ2LCA3NjY1MSwgNzY2NTYsIDc2NjYyLCA3NjY2NywgNzY2NzMsIDc2Njc4LCAKLSAgICA3NjY4MywgNzY2ODgsIDc2NjkzLCA3NjY5NywgNzY3MDMsIDc2NzA4LCA3NjcxNywgNzY3MjIsIDc2NzI3LCA3NjczMiwgCi0gICAgNzY3MzcsIDc2NzQxLCA3Njc0OCwgNzY3NTQsIDQ0MzAsIDE4NzM3LCAzMTA1LCA3Njc1OSwgNzY3NjMsIDc2NzY4LCAKLSAgICA3Njc3MiwgNzY3NzYsIDc2NzgwLCA1MDMyMSwgNzY3ODQsIDc2NzA5LCA3Njc4NiwgNzY3OTYsIDM1MTgxLCA3Njc5OSwgCi0gICAgNzY4MDQsIDc2ODEzLCA3NjgxOSwgNjQ1NCwgMzUxODYsIDc2ODIzLCA3NjgyOSwgNzY4MzQsIDc2ODQwLCA3Njg0NSwgCi0gICAgNzY4NDksIDc2ODU2LCA3Njg2MSwgNzY4NzEsIDc2ODgwLCA3Njg4NCwgNzY4OTAsIDc2ODk2LCA3NjkwMiwgNzY5MDYsIAotICAgIDc2OTE0LCA3NjkyMSwgNzY5MjksIDc2OTM3LCAzNTE5MSwgNzY5NDQsIDc2OTQ3LCA3Njk1NCwgNzY5NjAsIDc2OTY1LCAKLSAgICA3Njk2OSwgNzY5NzUsIDc2OTgyLCA3Njk4NywgNzY5OTEsIDc3MDAwLCA3NzAwOCwgNzcwMTQsIDc3MDE5LCAzNTE5NiwgCi0gICAgNzcwMjYsIDc3MDM4LCA3NzA0NSwgNzcwNTEsIDc3MDU2LCA3NzA2MiwgNzcwNjksIDc3MDc1LCAyMjk3OSwgMjk1ODksIAotICAgIDc3MDgxLCA3NzA4NiwgNzcwOTIsIDc3MDk2LCA3NzEwOCwgNzY3NDIsIDc2NzQ5LCAyMzE2MCwgNzcxMTgsIDc3MTIzLCAKLSAgICA3NzEzMCwgNzcxMzYsIDc3MTQzLCA3NzE0OSwgNzcxNjAsIDc3MTY1LCA3NzE3MywgOTYwOSwgNzcxNzgsIDc3MTgxLCAKLSAgICA3NzE4NywgNzcxOTEsIDc3MTk1LCA3NzE5OCwgNzcyMDQsIDM0OTM0LCA0NDMxLCAxMDY3LCAxNDU5NiwgNzcyMTEsIAotICAgIDc3MjE3LCA3NzIyMywgNzcyMjksIDc3MjM1LCA3NzI0MSwgNzcyNDcsIDc3MjUzLCA3NzI1OSwgNzcyNjQsIDc3MjY5LCAKLSAgICA3NzI3NCwgNzcyNzksIDc3Mjg0LCA3NzI4OSwgNzcyOTQsIDc3Mjk5LCA3NzMwNCwgNzczMDksIDc3MzE0LCA3NzMxOSwgCi0gICAgNzczMjQsIDc3MzMwLCA3NzMzNSwgNzczNDAsIDc3MzQ2LCA3NzM1MSwgNzczNTYsIDc3MzYyLCA3NzM2OCwgNzczNzQsIAotICAgIDc3MzgwLCA3NzM4NiwgNzczOTIsIDc3Mzk4LCA3NzQwNCwgNzc0MTAsIDc3NDE1LCA3NzQyMCwgNzc0MjYsIDc3NDMxLCAKLSAgICA3NzQzNiwgNzc0NDIsIDc3NDQ3LCA3NzQ1MiwgNzc0NTcsIDc3NDYyLCA3NzQ2NywgNzc0NzIsIDc3NDc3LCA3NzQ4MiwgCi0gICAgNzc0ODcsIDc3NDkyLCA3NzQ5NywgNzc1MDIsIDc3NTA4LCA3NzUxMywgNzc1MTgsIDc3NTIzLCA3NzUyOSwgNzc1MzQsIAotICAgIDc3NTM5LCA3NzU0NCwgNzc1NDksIDc3NTU1LCA3NzU2MCwgNzc1NjUsIDc3NTcwLCA3NzU3NSwgNzc1ODAsIDc3NTg1LCAKLSAgICA3NzU5MCwgNzc1OTUsIDc3NjAwLCA3NzYwNSwgNzc2MTAsIDc3NjE1LCA3NzYyMCwgNzc2MjUsIDc3NjMwLCA3NzYzNSwgCi0gICAgNzc2NDAsIDc3NjQ1LCA3NzY1MCwgNzc2NTYsIDc3NjYxLCA3NzY2NiwgNzc2NzEsIDc3Njc2LCA3NzY4MSwgNzc2ODYsIAotICAgIDc3NjkxLCAxODkwLCAxNjMsIDc3Njk2LCA3NzcwMCwgNzc3MDQsIDc3NzA5LCA3NzcxNywgNzc3MjEsIDc3NzI4LCA3NzczNiwgCi0gICAgNzc3NDAsIDc3NzUzLCA3Nzc2MSwgNzc3NjYsIDc3NzcxLCAyODM5NCwgNzc3NzUsIDc3NzgwLCA3Nzc4NCwgNzc3ODksIAotICAgIDc3NzkzLCA3NzgwMSwgNzc4MDUsIDIyNTg3LCA3NzgxMCwgNzc4MTQsIDY2MTYyLCA3NzgxOCwgNzc4MjEsIDc3ODI5LCAKLSAgICA3NzgzNywgNzc4NDUsIDc3ODUwLCA3Nzg1NSwgNzc4NjIsIDc3ODY5LCA3Nzg3NSwgNzc4ODEsIDc3ODg2LCA3Nzg5MSwgCi0gICAgNzc4OTksIDcwNTUxLCA3NzkwNiwgNjU5NDgsIDc3OTExLCA3NzkxNiwgNzc5MjAsIDc3OTI3LCA2NTk3NSwgMTI3NDMsIAotICAgIDc3OTMzLCA3NzkzOCwgNzc5NDMsIDc3OTQ3LCA3Nzk1MCwgNzc5NTYsIDc3OTYwLCA3Nzk3MCwgNzc5NzksIDc3OTgzLCAKLSAgICA3Nzk4NiwgNzc5OTAsIDc3OTk3LCA3ODAxMCwgNzgwMTYsIDc4MDI0LCA3ODAzMywgNzgwNDQsIDc4MDU1LCA3ODA2NiwgCi0gICAgNzgwNzcsIDc4MDg2LCA3ODA5MiwgNzgxMDEsIDc4MTA5LCA3ODExOSwgNzgxMzIsIDc4MTQwLCA3ODE0NywgNzgxNTgsIAotICAgIDc4MTY0LCA3ODE2OSwgNzgxNzQsIDc4MTgwLCA3ODE4NiwgNzgxOTYsIDc4MjAzLCA3ODIxMywgNzgyMjIsIDc2NDIzLCAKLSAgICA3ODIzMCwgNzgyMzYsIDc4MjQ0LCA3ODI1MCwgNzgyNTcsIDc4MjY1LCA3ODI3MCwgNzgyNzMsIDc4Mjc3LCA3ODI4MSwgCi0gICAgNzgyODQsIDc4MjkwLCA3ODI5NiwgNzgzMDQsIDc4MzE2LCA3ODMyOCwgNzgzMzUsIDc4MzQwLCA3ODM0NCwgNzgzNTUsIAotICAgIDc4MzYzLCA3ODM3MCwgNzgzODIsIDc4MzkwLCA3ODM5OCwgNzg0MDUsIDc4NDExLCA3ODQxNiwgNzg0MjYsIDc4NDM1LCAKLSAgICA3ODQ0MCwgNzg0NTAsIDc4NDU5LCA0NTU0OSwgNzg0NjYsIDc4NDcwLCA3ODQ3NSwgNzg0ODMsIDc4NDkwLCA3ODQ5NiwgCi0gICAgNzg1MDAsIDc4NTEwLCA3ODUyMSwgNzg1MjksIDc4NTM2LCA3ODU0OCwgNzg1NjAsIDc4NTY5LCA3NTM3MCwgNzg1NzYsIAotICAgIDc4NTg2LCA3ODU5OCwgNzg2MDksIDc4NjIzLCA3ODYzMSwgNzg2NDEsIDc4NjQ4LCA3ODY1NiwgNzg2NjksIDc4NjgxLCAKLSAgICA3ODY5MCwgNzg2OTgsIDc4NzA4LCA3ODcxOSwgNzg3MzEsIDc4NzQwLCA3ODc1MCwgNzg3NjAsIDc4NzY5LCA3ODc3NiwgCi0gICAgNzg3ODUsIDc4ODAwLCA3ODgwOCwgNzg4MTgsIDc4ODI3LCA3ODgzNSwgNzg4NDgsIDYzMDI2LCA3ODg2MywgNzg4NzMsIAotICAgIDc4ODgyLCA3ODg5NCwgNzg5MDQsIDc4OTE2LCA3ODkyNywgNzg5MzgsIDc4OTQ5LCA3ODk1OSwgNzg5NzAsIDc4OTc4LCAKLSAgICA3ODk4NCwgNzg5OTQsIDc5MDAyLCA3OTAwOCwgMzEyOTEsIDc5MDEzLCA3OTAxOSwgNzkwMjgsIDc5MDQwLCA3OTA0NSwgCi0gICAgNzkwNTIsIDEwNDQ4LCAxOTEzNCwgNzkwNTgsIDc5MDY3LCA3OTA3MiwgNzkwNzYsIDc5MDgzLCA3OTA4OSwgNzkwOTQsIAotICAgIDc5MDk5LCA3OTEwNywgNzkxMTUsIDEzMTE5LCA3OTExOSwgNzkxMjIsIDc5MTI0LCA3OTEzMSwgNzkxMzcsIDc5MTQ4LCAKLSAgICA3OTE1MywgNzkxNTcsIDc5MTY0LCA3OTE3MCwgNzkxNzUsIDc5MTgzLCA3MTEyMCwgNzExMzAsIDc5MTg5LCA3OTE5NiwgCi0gICAgNzkyMDYsIDExNTQzLCA3OTIxMywgNzkyMTgsIDMxNTA2LCA3OTIyNywgNzkyMzIsIDc5MjM5LCA3OTI0OSwgNzkyNTcsIAotICAgIDc5MjY1LCA3OTI3NCwgNzkyODAsIDc5Mjg2LCA3OTI5MywgNzkzMDAsIDc5MzA1LCA3OTMwOSwgNzkzMTcsIDY1OTkyLCAKLSAgICA3OTMyMiwgNzkzMzEsIDc5MzM5LCA3OTM0NiwgNzkzNTEsIDc5MzU1LCA3OTM2NCwgNzkzNzAsIDc5MzczLCA3OTM3NywgCi0gICAgNzkzODYsIDc5Mzk2LCA3Nzc0OCwgNzk0MDUsIDc5NDA5LCA3OTQxNywgNzk0MjEsIDc5NDI3LCA3OTQzOCwgNzk0NDgsIAotICAgIDE5MTQzLCA3OTQ1OSwgNzk0NjgsIDc5NDc2LCA3OTQ4NCwgNzk0OTEsIDY2MDExLCA5MTQ3LCA3OTQ5OSwgNzk1MDMsIAotICAgIDc5NTEyLCA3OTUxOSwgNzk1MjIsIDI5NDcwLCA3OTUyNSwgNzk1MjksIDc5NTM0LCA3OTU1MSwgNzk1NjMsIDExNTAxLCAKLSAgICA3OTU3NSwgNzk1ODAsIDc5NTg1LCA3OTU5MCwgMjI2NjksIDc5NTk0LCA3OTU5OSwgNzk2MDQsIDc5NjEwLCA3OTYxNSwgCi0gICAgNjEyMiwgNzk2MjAsIDIyNjczLCA3OTYyNSwgNzk2MzAsIDc5NjM2LCA3OTY0MywgNzk2NDgsIDc5NjUzLCA3OTY1OSwgCi0gICAgNzk2NjUsIDc5NjcxLCA3OTY3NiwgNzk2ODIsIDc5Njg2LCA3OTcwMCwgNzk3MDgsIDc5NzE2LCA3OTcyMiwgNzk3MjcsIAotICAgIDc5NzM0LCA3OTc0NCwgNzk3NTMsIDc5NzU4LCA3OTc2MywgNzk3NjgsIDc5Nzc2LCA3OTc4MSwgNzk3ODcsIDc5NzkyLCAKLSAgICA3OTgwMSwgNjQ3MTMsIDc5ODA2LCA3OTgwOSwgNzk4MjcsIDc5ODQ2LCA3OTg1OSwgNzk4NzMsIDc5ODg5LCA3OTg5NiwgCi0gICAgNzk5MDMsIDc5OTEyLCA3OTkxOSwgNzk5MjUsIDc5OTMyLCA3OTkzNywgNzk5NDMsIDc5OTQ5LCA3OTk1NywgNzk5NjMsIAotICAgIDc5OTY4LCA3OTk3MywgNzk5ODksIDExNTE0LCA4MDAwMywgODAwMTAsIDgwMDE4LCA4MDAyNCwgODAwMjgsIDgwMDMxLCAKLSAgICA4MDAzNiwgODAwNDEsIDgwMDQ4LCA4MDA1MywgODAwNjIsIDgwMDY4LCA4MDA3MywgODAwNzksIDgwMDg1LCA4MDA5NCwgCi0gICAgODAxMDMsIDgwMTA4LCA4MDExMiwgODAxMjAsIDgwMTI5LCAxMjc3MiwgODAxMzgsIDgwMTQ0LCA4MDE1MiwgODAxNTgsIAotICAgIDgwMTY0LCA4MDE3MCwgODAxNzUsIDgwMTgyLCA4MDE4OCwgMTI3ODMsIDgwMTkzLCA4MDE5NiwgODAyMDEsIDM1MjIzLCAKLSAgICA4MDIxMSwgODAyMjAsIDgwMjI1LCA4MDIzMSwgODAyMzYsIDgwMjQ0LCA4MDI1MSwgODAyNjIsIDgwMjcyLCA4MDI3NywgCi0gICAgODAyODUsIDcwNDc0LCA4MDI5MCwgODAyOTYsIDgwMzAxLCA4MDMwOCwgODAzMTcsIDgwMzI1LCA4MDMyOSwgODAzMzUsIAotICAgIDgwMzQxLCA4MDM0OCwgODAzNTQsIDgwMzU4LCAxODUxOCwgMzExNCwgODAzNjMsIDgwMzY3LCA4MDM3MSwgODAzNzcsIAotICAgIDgwMzg2LCA4MDM5MiwgODAzOTksIDgwNDAzLCA4MDQyNCwgODA0NDYsIDgwNDYyLCA4MDQ3OSwgODA0OTgsIDgwNTA3LCAKLSAgICA4MDUxNywgODA1MjUsIDgwNTMyLCA4MDUzOSwgODA1NDUsIDI5MzQyLCA4MDU1OSwgODA1NjMsIDgwNTY5LCA4MDU3NywgCi0gICAgODA1ODksIDgwNTk1LCA4MDYwMywgODA2MTAsIDgwNjE1LCA4MDYyMCwgODA2MjQsIDgwNjMyLCA4MDYzOSwgODA2NDMsIAotICAgIDgwNjQ5LCA4MDY1NSwgODA2NjAsIDM3MzAsIDQ2NzIxLCA4MDY2NiwgODA2NzAsIDgwNjc0LCA4MDY3OCwgODA2ODMsIAotICAgIDgwNjg4LCA4MDY5MywgODA2OTksIDgwNzA1LCA4MDcxMSwgODA3MTgsIDgwNzI0LCA4MDczMSwgODA3MzcsIDgwNzQzLCAKLSAgICA4MDc0OCwgODA3NTQsIDgwNzU5LCA4MDc2MywgODA3NjgsIDgwNzcyLCA4MDc3NywgNDY3MzYsIDgwNzgxLCA4MDc4NiwgCi0gICAgODA3OTQsIDgwNzk4LCA4MDgwMywgODA4MTAsIDgwODE5LCA4MDgyNSwgODA4MzQsIDgwODM4LCA4MDg0NSwgODA4NDksIAotICAgIDgwODUyLCA4MDg1OSwgODA4NjUsIDgwODc0LCA4MDg4NCwgODA4ODksIDgwODkzLCA4MDkwMSwgODA5MTAsIDgwOTE0LCAKLSAgICA4MDkyMiwgODA5MjgsIDgwOTMzLCA4MDkzOCwgODA5NDQsIDgwOTUwLCA4MDk1NSwgODA5NTksIDgwOTY1LCA4MDk3MCwgCi0gICAgODA5NzQsIDgwOTc4LCA4MDk4MSwgODA5ODYsIDgwOTk0LCA4MTAwNCwgODEwMTAsIDgxMDE1LCA4MTAyNSwgNDQwMzEsIAotICAgIDgxMDMzLCA4MTA0NSwgODEwNDksIDgxMDU1LCA4MTA2NywgODEwNzgsIDgxMDg1LCA4MTA5MSwgODEwOTgsIDgxMTA1LCAKLSAgICA4MTExNywgODExMjQsIDgxMTMwLCAyMjc0NywgODExMzQsIDgxMTQyLCA4MTE0OCwgODExNTUsIDgxMTYxLCA4MTE2NywgCi0gICAgODExNzMsIDgxMTc4LCA4MTE4MywgODExODgsIDgxMTk3LCA4MTIwNSwgODEyMTYsIDczNTAsIDgxMjIxLCAxNzk2NywgCi0gICAgODEyMjcsIDgxMjMxLCA4MTIzNSwgODEyMzksIDgxMjQ3LCA4MTI1NiwgODEyNjAsIDgxMjY3LCA4MTI3NiwgODEyODQsIAotICAgIDgxMjk3LCA4MTMwMywgODA3NzMsIDMyMzkwLCA4MTMwOCwgODEzMTAsIDgxMzE1LCA4MTMyMCwgODEzMjUsIDgxMzMwLCAKLSAgICA4MTMzNSwgODEzNDAsIDgxMzQ1LCA4MTM1MCwgODEzNTUsIDgxMzYwLCA4MTM2NSwgODEzNzAsIDgxMzc1LCA4MTM4MCwgCi0gICAgODEzODYsIDgxMzkxLCA4MTM5NiwgODE0MDEsIDgxNDA2LCA4MTQxMSwgODE0MTYsIDgxNDIxLCA4MTQyNiwgODE0MzIsIAotICAgIDgxNDM4LCA4MTQ0NCwgODE0NDksIDgxNDU0LCA4MTQ2NiwgODE0NzEsIDE4OTYsIDYzLCA4MTQ3NiwgODE0ODEsIDM1MjI5LCAKLSAgICA4MTQ4NSwgMzUyMzQsIDM1MjM5LCAzNTI0NSwgMzUyNTAsIDgxNDg5LCAzNTI1NSwgMjM3ODUsIDgxNTExLCA4MTUxNSwgCi0gICAgODE1MTksIDgxNTI0LCA4MTUyOCwgMzUyNTksIDgxNTMyLCA4MTU0MCwgODE1NDcsIDM1MjY0LCA4MTU1MywgODE1NTYsIAotICAgIDgxNTYxLCA4MTU2NSwgODE1NzQsIDEwMjY2LCA4MTU4MiwgMzUyNjksIDIzNjQxLCA4MTU4NSwgODE1ODksIDgxNTk3LCAKLSAgICAxNDEyLCA4MTYwMiwgMzUyODAsIDgxNjA1LCA4MTYxMCwgMjc3NTAsIDI3NzYwLCAzODE4MiwgODE2MTUsIDgxNjIwLCAKLSAgICA4MTYyNSwgODE2MzAsIDgxNjM2LCA4MTY0MSwgODE2NTAsIDgxNjU1LCA4MTY2NCwgODE2NzIsIDgxNjc5LCA4MTY4NSwgCi0gICAgODE2OTAsIDgxNjk1LCA4MTcwMCwgODE3MTAsIDgxNzE5LCA4MTcyNywgODE3MzIsIDgxNzQwLCA4MTc0NCwgODE3NTIsIAotICAgIDgxNzU2LCA4MTc2MywgODE3NzEsIDM1MDg4LCA0MTE5MiwgODE3NzgsIDgxNzg0LCA4MTc4OSwgODE3OTQsIDEzMTU0LCAKLSAgICAzMDUyOSwgODE3OTksIDgxODA0LCA4MTgxMSwgODE4MTcsIDgxODIyLCA4MTgzMCwgODE4NDAsIDgxODUwLCA4MTg1NiwgCi0gICAgODE4NjEsIDgxODY3LCAxOTE2NSwgODE4NzQsIDM5MDUyLCA4MTg4NywgODE4OTIsIDgxODk4LCAzMzM4MSwgODE5MTEsIAotICAgIDgxOTE3LCA4MTkyMSwgODE5MzAsIDgxOTM5LCA4MTk0NiwgODE5NTIsIDgxOTYwLCA4MTk2OSwgODE5NzYsIDgxOTgyLCAKLSAgICA4MTk4NSwgODE5ODksIDgxOTkzLCAyNzg5MSwgODE5OTcsIDgyMDA0LCA4MjAxMCwgODIwMTgsIDgyMDIzLCA4MjAyNywgCi0gICAgMjU5MTEsIDgyMDMzLCA4MjAzNiwgODIwNDQsIDgyMDUxLCA4MjA1OSwgODIwNzIsIDgyMDg2LCA4MjA5MywgODIwOTksIAotICAgIDgyMTA2LCA4MjExMiwgMzUyOTQsIDgyMTE2LCA4MjEyMywgODIxMzEsIDgyMTM5LCA4MjE0NSwgMzUyOTksIDgyMTUzLCAKLSAgICA4MjE1OSwgODIxNjQsIDgyMTc0LCA4MjE4MCwgODIxODksIDMzMTgzLCAzNzYxNCwgODIxOTcsIDgyMjAyLCA4MjIwNywgCi0gICAgODIyMTEsIDgyMjE2LCA4MjIyMCwgODIyMjgsIDgyMjMzLCAxNjI5NiwgNDQwNDQsIDgyMjM3LCA4MjI0MiwgMzUzMDQsIAotICAgIDY3NTQ3LCA4MjI0NiwgODIyNTEsIDgyMjU1LCA4MjI2MiwgODIyNzEsIDgyMjc1LCA4MjI4MywgODIyODksIDgyMjk0LCAKLSAgICA4MjMwMCwgODIzMDUsIDgyMzEyLCA4MjMxOCwgODIzMjMsIDgyMzI4LCA4MjMzOSwgODIzNDgsIDgyMzYwLCA4MjM3NSwgCi0gICAgMzU1NzEsIDgyMzgxLCAxODA4NiwgMzUzMDgsIDgyMzg1LCA4MjM5MiwgODIzOTgsIDI2MDI3LCA4MjQwMiwgODI0MDksIAotICAgIDgyNDE4LCA4MjQyNSwgODI0MzQsIDgyNDQwLCA4MjQ0NSwgODI0NTMsIDgyNDU5LCAzNTMxOCwgODI0NjQsIDgyNDczLCAKLSAgICA4MTA3MywgODI0ODIsIDgyNDg5LCA4MjQ5NSwgODI1MDEsIDgyNTEwLCA4MjUyMCwgODI1MjgsIDgyNTM1LCA4MjUzOSwgCi0gICAgMzUzMjMsIDgyNTQyLCAzNTMyOSwgMzUzMzUsIDgyNTQ3LCA4MjU1NSwgODI1NjMsIDgyNTczLCA4MjU4MiwgODI1OTAsIAotICAgIDgyNTk3LCA4MjYwNywgMzUzNDAsIDgyNjExLCA4MjYxMywgODI2MTcsIDgyNjIyLCA4MjYyNiwgODI2MzAsIDgyNjM2LCAKLSAgICA4MjY0MSwgODI2NDUsIDgyNjU2LCA4MjY2MSwgODI2NjYsIDMxMTksIDgyNjcwLCA4MjY3NywgODI2ODEsIDgyNjkwLCAKLSAgICA4MjY5OCwgODI3MDUsIDgyNzEwLCA4MjcxNSwgNjc1OTgsIDgyNzE5LCA4MjcyMiwgODI3MjgsIDgyNzM2LCA4Mjc0MiwgCi0gICAgODI3NDYsIDgyNzUxLCA4Mjc1OCwgODI3NjMsIDgyNzY4LCA4Mjc3MiwgODI3NzgsIDgyNzgzLCAzNzY0NSwgODI3ODcsIAotICAgIDgyNzkwLCA4Mjc5NSwgODI3OTksIDgyODA0LCA4MjgxMSwgODI4MTYsIDgyODIwLCA0MjU4MCwgODI4MjgsIDI3NzY5LCAKLSAgICAyNzc3OCwgODI4MzQsIDgyODQwLCA4Mjg0NiwgODI4NTEsIDgyODU1LCA4Mjg1OCwgODI4NjgsIDgyODc3LCA4Mjg4MiwgCi0gICAgODI4ODgsIDgyODk1LCA4MjkwMSwgODI5MDUsIDgyOTEzLCA4MjkxOCwgMzc2NTEsIDc3OTUyLCA4MjkyMiwgODI5MzAsIAotICAgIDgyOTM2LCA4Mjk0MywgODI5NDgsIDgyOTUyLCA4Mjk1NywgNjMyNDIsIDgyOTYzLCA4Mjk2OSwgMzc2NTcsIDgyOTc0LCAKLSAgICA4Mjk3OSwgODI5ODMsIDgyOTg4LCA4Mjk5MywgODI5OTgsIDgzMDAyLCA4MzAwNywgODMwMTIsIDgzMDE4LCA4MzAyMywgCi0gICAgODMwMjgsIDgzMDM0LCA4MzA0MCwgODMwNDUsIDgzMDQ5LCA4MzA1NCwgODMwNTksIDgzMDY0LCA4MzA2OCwgMjYwMjYsIAotICAgIDgzMDczLCA4MzA3OCwgODMwODQsIDgzMDkwLCA4MzA5NiwgODMxMDEsIDgzMTA1LCA4MzExMCwgODMxMTUsIDgzMTIwLCAKLSAgICA4MzEyNCwgODMxMjksIDgzMTM0LCA4MzEzOSwgODMxNDQsIDQ2OTkxLCA4MzE0OCwgMzUzNDgsIDgzMTU2LCA4MzE2MCwgCi0gICAgODMxNjgsIDgzMTc2LCA4MzE4NywgODMxOTIsIDgzMTk2LCAyNDIxMSwgNzU0NzMsIDgzMjAxLCA4MzIwNywgODMyMTIsIAotICAgIDgzMjIyLCA4MzIyOSwgODMyMzQsIDgzMjQyLCA4MzI1MSwgODMyNTYsIDgzMjYwLCA4MzI2NSwgODMyNzMsIDgzMjgxLCAKLSAgICA4MzI4OCwgNzA3MzYsIDgzMjk0LCA4MzMwMiwgODMzMDksIDgzMzIwLCA4MzMyNiwgODMzMzIsIDM1MzU4LCA4MzMzNSwgCi0gICAgODMzNDIsIDgzMzUwLCA4MzM1NSwgNDQyNDcsIDgzMzU5LCA4MzM2NCwgODMzNzEsIDgzMzc2LCA5NDg0LCA4MzM4MCwgCi0gICAgODMzODgsIDgzMzk1LCA4MzQwMiwgODM0MTEsIDgzNDE4LCA4MzQyNCwgODM0MzgsIDYxOTQsIDgzNDQ2LCA4MzQ1MiwgCi0gICAgODM0NTYsIDgzNDU5LCA4MzQ2NywgODM0NzQsIDgzNDc5LCA4MzQ5MiwgODM0OTksIDgzNTA1LCA4MzUwOSwgODM1MTQsIAotICAgIDgzNTIxLCA4MzUyNiwgNjU4NTEsIDgzNTMxLCA4MzUzNCwgODM1NDMsIDgzNTUwLCA4MzU1NiwgODM1NjAsIDgzNTYzLCAKLSAgICA4MzU3MSwgODM1ODAsIDgzNTkwLCA4MzYwMCwgODM2MDksIDgzNjIwLCA4MzYyOCwgODM2MzksIDgzNjQ0LCA4MzY0OCwgCi0gICAgODM2NTMsIDgzNjU3LCAzODMxMywgODM2NjUsIDIzMDQyLCAzODMyMiwgODM2NzAsIDgzNjc1LCA4MzY4MCwgODM2ODUsIAotICAgIDgzNjkwLCA4MzY5NSwgODM3MDAsIDgzNzA0LCA4MzcwOSwgODM3MTQsIDgzNzE5LCA4MzcyNCwgODM3MjksIDgzNzM0LCAKLSAgICA4MzczOCwgODM3NDMsIDgzNzQ4LCA4Mzc1MiwgODM3NTYsIDgzNzYwLCA4Mzc2NCwgODM3NjksIDgzNzc0LCA4Mzc3OCwgCi0gICAgODM3ODMsIDgzNzg3LCA4Mzc5MSwgODM3OTYsIDgzODAxLCA4MzgwNiwgODM4MTEsIDgzODE1LCA4MzgyMCwgODM4MjUsIAotICAgIDgzODI5LCA4MzgzNCwgODM4MzksIDgzODQ0LCA4Mzg0OSwgODM4NTQsIDgzODU5LCA4Mzg2NCwgODM4NjksIDgzODc0LCAKLSAgICA4Mzg3OSwgODM4ODQsIDgzODg5LCA4Mzg5NCwgODM4OTksIDgzOTA0LCA4MzkwOSwgODM5MTQsIDgzOTE5LCA4MzkyNCwgCi0gICAgODM5MjksIDgzOTMzLCA4MzkzOCwgODM5NDMsIDgzOTQ4LCA4Mzk1MywgODM5NTgsIDgzOTYzLCA4Mzk2OCwgODM5NzMsIAotICAgIDgzOTc4LCA4Mzk4MywgODM5ODgsIDgzOTkyLCA4Mzk5NywgODQwMDEsIDg0MDA2LCA4NDAxMSwgODQwMTYsIDg0MDIxLCAKLSAgICA4NDAyNiwgODQwMzEsIDg0MDM2LCA4NDA0MSwgODQwNDYsIDg0MDUwLCA4NDA1NCwgODQwNTksIDg0MDY0LCA4NDA2OCwgCi0gICAgODQwNzMsIDg0MDc4LCA4NDA4MiwgODQwODcsIDg0MDkyLCA4NDA5NywgODQxMDIsIDg0MTA2LCA4NDExMSwgODQxMTYsIAotICAgIDg0MTIwLCA4NDEyNSwgODQxMjksIDg0MTMzLCA4NDEzNywgODQxNDEsIDg0MTQ2LCA4NDE1MCwgODQxNTQsIDg0MTU4LCAKLSAgICA4NDE2MiwgODQxNjYsIDg0MTcwLCA4NDE3NCwgODQxNzgsIDg0MTgyLCA4NDE4NywgODQxOTIsIDg0MTk3LCA4NDIwMiwgCi0gICAgODQyMDcsIDg0MjEyLCA4NDIxNywgODQyMjIsIDg0MjI3LCA4NDIzMiwgODQyMzYsIDg0MjQwLCA4NDI0NCwgODQyNDgsIAotICAgIDg0MjUyLCA4NDI1NiwgODQyNjEsIDg0MjY1LCA4NDI3MCwgODQyNzQsIDg0Mjc5LCA4NDI4NCwgODQyODgsIDg0MjkyLCAKLSAgICA4NDI5NywgODQzMDEsIDg0MzA1LCA4NDMwOSwgODQzMTMsIDg0MzE3LCA4NDMyMSwgODQzMjUsIDg0MzI5LCA4NDMzMywgCi0gICAgODQzMzcsIDg0MzQxLCA4NDM0NSwgODQzNDksIDg0MzUzLCA4NDM1OCwgODQzNjMsIDg0MzY3LCA4NDM3MSwgODQzNzUsIAotICAgIDg0Mzc5LCA4NDM4MywgODQzODcsIDg0MzkyLCA4NDM5NiwgODQ0MDAsIDg0NDA0LCA4NDQwOCwgODQ0MTIsIDg0NDE2LCAKLSAgICA4NDQyMSwgODQ0MjUsIDg0NDMwLCA4NDQzNCwgODQ0MzgsIDg0NDQyLCA4NDQ0NiwgODQ0NTAsIDg0NDU0LCA4NDQ1OCwgCi0gICAgODQ0NjIsIDg0NDY2LCA4NDQ3MCwgODQ0NzQsIDg0NDc5LCA4NDQ4MywgODQ0ODcsIDg0NDkxLCA4NDQ5NSwgODQ0OTksIAotICAgIDg0NTAzLCA4NDUwNywgODQ1MTEsIDg0NTE1LCA4NDUxOSwgODQ1MjMsIDg0NTI4LCA4NDUzMiwgODQ1MzYsIDg0NTQxLCAKLSAgICA4NDU0NiwgODQ1NTAsIDg0NTU0LCA4NDU1OCwgODQ1NjIsIDg0NTY2LCA4NDU3MCwgODQ1NzQsIDg0NTc4LCA4NDU4MywgCi0gICAgODQ1ODcsIDg0NTkyLCA4NDU5NiwgODQ2MDEsIDg0NjA1LCA4NDYxMCwgODQ2MTQsIDg0NjIwLCA4NDYyNSwgODQ2MjksIAotICAgIDg0NjM0LCA4NDYzOCwgODQ2NDMsIDg0NjQ3LCA4NDY1MiwgODQ2NTYsIDg0NjYxLCAxNTE5LCA4NDY2NSwgMjg3MywgMTc3NCwgCi0gICAgMTY5MiwgMjc3MDUsIDg0NjY5LCAyODgyLCA4NDY3MywgMTM4MSwgODQ2NzgsIDEzMjMsIDg0NjgyLCA4NDY4NiwgMjg5OSwgCi0gICAgODQ2OTAsIDg0Njk3LCA4NDcwNCwgODQ3MTgsIDI5MDMsIDc0NTIsIDg0NzI3LCA4NDczNSwgODQ3NDIsIDg0NzUzLCAKLSAgICA4NDc2MiwgODQ3NjksIDg0NzgxLCA4NDc5NCwgODQ4MDcsIDg0ODE4LCA4NDgyMywgODQ4MzAsIDg0ODQyLCA4NDg0NiwgCi0gICAgMjkwNywgMTI4NTAsIDg0ODU2LCA4NDg2MSwgODQ4NzAsIDg0ODgwLCA4NDg4NSwgMjkxMSwgODQ4OTMsIDg0ODk3LCAKLSAgICA4NDkwMiwgODQ5MDksIDg0OTE1LCA4NDkyMywgODQ5MzUsIDEzMjgsIDE0MjAxLCA4NDk0NSwgODQ5NDksIDg0OTU1LCAKLSAgICA4NDk2OSwgODQ5ODEsIDg0OTkzLCA4NTAwMywgODUwMTIsIDg1MDIxLCA4NTAzMCwgODUwMzgsIDg1MDQ5LCA4NTA1NywgCi0gICAgNDI5MiwgODUwNjcsIDg1MDc4LCA4NTA4NywgODUwOTMsIDg1MTA4LCA4NTExNSwgODUxMjEsIDg1MTI2LCAzODQ0NywgCi0gICAgODUxMzEsIDI5MzUsIDE0MjA1LCA4NTEzNSwgODUxNDIsIDk0MDksIDg1MTUxLCAyOTQwLCAzNDc5NiwgODUxNTcsIDY1NTczLCAKLSAgICA4NTE2NCwgODUxNzAsIDg1MTgxLCA4NTE4NywgODUxOTQsIDg1MjAwLCA4NTIwOCwgODUyMTUsIDg1MjIxLCA4NTIzMiwgCi0gICAgODUyNDIsIDg1MjUxLCA4NTI2MiwgODUyNzEsIDg1Mjc4LCA4NTI4NCwgODUyOTQsIDg1MzAyLCA4NTMwOCwgODUzMjMsIAotICAgIDg1MzI5LCA4NTMzNCwgODUzNDEsIDg1MzQ0LCA4NTM1MCwgODUzNTcsIDg1MzYzLCA4NTM3MSwgODUzODAsIDg1Mzg4LCAKLSAgICA4NTM5NCwgODU0MDMsIDQ2MjYxLCA4NTQxNywgODU0MjIsIDg1NDI4LCAxNjA3MiwgODU0MzMsIDg1NDQ2LCA4NTQ1OCwgCi0gICAgODU0NjcsIDg1NDc1LCA4NTQ4MiwgODU0ODYsIDg1NDkwLCA4NTQ5MywgODU1MDAsIDg1NTA3LCA4NTUxNSwgODU1MjMsIAotICAgIDg1NTMyLCA4NTU0MCwgMTU5ODMsIDg1NTQ4LCA4NTU1MywgODU1NTcsIDg1NTY5LCA4NTU3NiwgODU1ODUsIDg0MSwgCi0gICAgODU1OTUsIDg1NjA0LCA4NTYxNSwgMjk1NiwgODU2MTksIDg1NjIzLCA4NTYyOSwgODU2NDIsIDg1NjU0LCA4NTY2NCwgCi0gICAgODU2NzMsIDg1Njg1LCAyODQ0NiwgODU2OTYsIDg1NzA0LCA4NTcxMywgODU3MjQsIDg1NzM1LCA4NTc0NSwgODU3NTUsIAotICAgIDg1NzY0LCA4NTc3MiwgMTIzNjQsIDg1Nzc5LCA4NTc4MywgODU3ODYsIDg1NzkxLCA4NTc5NiwgODU4MDAsIDg1ODA2LCAKLSAgICAxMzMzLCA4NTgxMywgODU4MTcsIDEyOTMyLCA4NTgyMSwgODU4MzIsIDg1ODQxLCA4NTg0OSwgODU4NTgsIDg1ODY2LCAKLSAgICA4NTg4MiwgODU4OTMsIDg1OTAyLCA4NTkxMCwgODU5MjIsIDg1OTMzLCA4NTk0OSwgODU5NTksIDg1OTgwLCA4NTk5NCwgCi0gICAgODYwMDcsIDg2MDE1LCA4NjAyMiwgNzQ5OCwgODYwMzUsIDg2MDQwLCA4NjA0NiwgNjIwMywgODYwNTIsIDg2MDU1LCAKLSAgICA4NjA2MiwgODYwNzIsIDg1NTQsIDg2MDc5LCA4NjA4NCwgODYwODksIDg2MDk0LCA4NjEwMiwgODYxMTEsIDg2MTE5LCAKLSAgICA4NjEyNCwgODYxMzEsIDEwNDk2LCAxMDUwNSwgODYxMzcsIDg2MTQ4LCA4NjE1MywgODYxNTksIDI5NzIsIDI5NzcsIAotICAgIDg2MTY1LCAxMTg1NywgODYxNzEsIDg2MTc4LCA4NjE4NSwgODYxOTgsIDIyODEsIDg3LCA4NjIwMywgODYyMDgsIDg2MjE2LCAKLSAgICA4NjIyNiwgODYyMzUsIDg2MjQxLCA4NjI1MCwgODYyNTgsIDg2MjY4LCA4NjI3MiwgODYyNzYsIDg2MjgxLCA4NjI4NSwgCi0gICAgODYyOTcsIDMwMDAsIDg2MzA1LCA4NjMxMywgODYzMTgsIDg2MzI5LCA4NjM0MCwgODYzNTIsIDg2MzYzLCA4NjM3MywgCi0gICAgODYzODIsIDIzMDgzLCA4NjM4NywgODYzOTMsIDg2Mzk4LCA4NjQwOCwgODY0MTgsIDg2NDIzLCA4NjQyOSwgODY0MzMsIAotICAgIDg2NDM4LCA4NjQ0NywgMjMwOTUsIDg2NDUxLCA0Mzg0LCAyNCwgODY0NTYsIDg2NDY1LCA4NjQ3MiwgODY0NzksIDg2NDg1LCAKLSAgICA4NjQ5MSwgMTA0OSwgODY0OTYsIDg2NTAxLCA2NjEyOCwgODY1MDYsIDg2NTExLCA4NjUxNywgODY1MjMsIDg2NTMxLCAKLSAgICA4NjUzNiwgODY1NDQsIDg2NTUxLCA4NjU1NywgODY1NjIsIDQyNDY0LCA0NjE1NSwgODY1NjgsIDMwMDQsIDMyLCA4NjU3OCwgCi0gICAgODY1OTEsIDg2NTk2LCA4NjYwNCwgODY2MDksIDg2NjE1LCAzMDI2LCAzMDQ5NywgODY2MjAsIDg2NjI4LCA4NjYzNSwgCi0gICAgODY2NDAsIDg2NjQ5LCA2MzQ5MiwgNDAxOCwgNjcyMTgsIDg2NjU3LCA4NjY2MSwgMTcxOSwgMTgzMywgODY2NjYsIDg2NjcxLCAKLSAgICA4NjY3OCwgMTgzNywgMjgwLCA4NjY4NSwgODY2OTEsIDg2Njk2LCAzMDQ4LCA4NjcwMCwgODY3MDUsIDg2NzEyLCAxODQxLCAKLSAgICA4NjcxNywgODY3MjMsIDg2NzI4LCA4Njc0MCwgNjQzMCwgODY3NTAsIDg2NzU3LCAxODQ4LCA4Njc2MywgODY3NjgsIAotICAgIDg2Nzc1LCA4Njc4MiwgODY3OTcsIDg2ODA0LCA4NjgxNSwgODY4MjAsIDg2ODI4LCAyNjU3LCA4NjgzMiwgODY4NDQsIAotICAgIDg2ODQ5LCA4Njg1MywgODY4NTksIDMwMzEzLCAyMjg2LCA4Njg2MywgODY4NzQsIDg2ODc4LCA4Njg4MiwgODY4ODgsIAotICAgIDg2ODkyLCA4NjkwMSwgODY5MDUsIDg2OTE2LCA4NjkyMCwgMjMzMiwgMzQ2MTMsIDg2OTI0LCA4NjkzNCwgMzEzOSwgCi0gICAgODY5NDIsIDk5MDksIDg2OTUxLCA4Njk1NiwgODY5NjAsIDg2OTY5LCA4Njk3NiwgODY5ODIsIDMxMDksIDE2MTM2LCAKLSAgICA4Njk4NiwgODY5OTksIDg3MDE3LCA4NzAyMiwgODcwMzAsIDg3MDM4LCA4NzA0OCwgMTA3NjgsIDE0MzE4LCA4NzA2MCwgCi0gICAgODcwNzMsIDg3MDgwLCA4NzA5NCwgODcxMDEsIDg3MTE3LCA4NzEyNCwgODcxMzAsIDIzMTI3LCAxMzU1NiwgODcxMzcsIAotICAgIDg3MTQ0LCA4NzE1NCwgODcxNjMsIDQ2OTkwLCA4NzE3NSwgNDcxMjUsIDg3MTgzLCA4NzE4NiwgODcxOTIsIDg3MTk4LCAKLSAgICA4NzIwNCwgODcyMTAsIDg3MjE2LCA4NzIyMywgODcyMzAsIDg3MjM2LCA4NzI0MiwgODcyNDgsIDg3MjU0LCA4NzI2MCwgCi0gICAgODcyNjYsIDg3MjcyLCA4NzI3OCwgODcyODQsIDg3MjkwLCA4NzI5NiwgODczMDIsIDg3MzA4LCA4NzMxNCwgODczMjAsIAotICAgIDg3MzI2LCA4NzMzMiwgODczMzgsIDg3MzQ0LCA4NzM1MCwgODczNTYsIDg3MzYyLCA4NzM2OCwgODczNzQsIDg3MzgwLCAKLSAgICA4NzM4NiwgODczOTIsIDg3Mzk4LCA4NzQwNCwgODc0MTAsIDg3NDE2LCA4NzQyMiwgODc0MjgsIDg3NDM0LCA4NzQ0MCwgCi0gICAgODc0NDYsIDg3NDUyLCA4NzQ1OCwgODc0NjQsIDg3NDcwLCA4NzQ3NiwgODc0ODIsIDg3NDg4LCA4NzQ5NCwgODc1MDAsIAotICAgIDg3NTA2LCA4NzUxMiwgODc1MTgsIDg3NTI0LCA4NzUzMCwgODc1MzYsIDg3NTQzLCA4NzU0OSwgODc1NTYsIDg3NTYzLCAKLSAgICA4NzU2OSwgODc1NzYsIDg3NTgzLCA4NzU4OSwgODc1OTUsIDg3NjAxLCA4NzYwNywgODc2MTMsIDg3NjE5LCA4NzYyNSwgCi0gICAgODc2MzEsIDg3NjM3LCA4NzY0MywgODc2NDksIDg3NjU1LCA4NzY2MSwgODc2NjcsIDg3NjczLCAzMTIzLCA5ODgyLCAKLSAgICA4NzY3OSwgODc2ODUsIDg3NjkzLCA4NzY5NywgODQ5MDUsIDMxMjcsIDg3NzAxLCAyMjg2MCwgMTMxODksIDM5NjgsIAotICAgIDg3NzA1LCAzMTMzLCA4NzcwOSwgODc3MTksIDg3NzI1LCA4NzczMSwgODc3MzcsIDg3NzQzLCA4Nzc0OSwgODc3NTUsIAotICAgIDg3NzYxLCA4Nzc2NywgODc3NzMsIDg3Nzc5LCA4Nzc4NSwgODc3OTEsIDg3Nzk3LCA4NzgwMywgODc4MDksIDg3ODE1LCAKLSAgICA4NzgyMSwgODc4MjcsIDg3ODMzLCA4NzgzOSwgODc4NDUsIDg3ODUxLCA4Nzg1NywgODc4NjMsIDg3ODY5LCA4Nzg3NiwgCi0gICAgODc4ODMsIDg3ODg5LCA4Nzg5NSwgODc5MDEsIDg3OTA3LCA4NzkxMywgODc5MTksIDEzMzgsIDg3OTI1LCA4NzkzMCwgCi0gICAgODc5MzUsIDg3OTQwLCA4Nzk0NSwgODc5NTAsIDg3OTU1LCA4Nzk2MCwgODc5NjUsIDg3OTY5LCA4Nzk3MywgODc5NzcsIAotICAgIDg3OTgxLCA4Nzk4NSwgODc5ODksIDg3OTkzLCA4Nzk5NywgODgwMDEsIDg4MDA3LCA4ODAxMywgODgwMTksIDg4MDI1LCAKLSAgICA4ODAyOSwgODgwMzMsIDg4MDM3LCA4ODA0MSwgODgwNDUsIDg4MDQ5LCA4ODA1MywgODgwNTcsIDg4MDYxLCA4ODA2NiwgCi0gICAgODgwNzEsIDg4MDc2LCA4ODA4MSwgODgwODYsIDg4MDkxLCA4ODA5NiwgODgxMDEsIDg4MTA2LCA4ODExMSwgODgxMTYsIAotICAgIDg4MTIxLCA4ODEyNiwgODgxMzEsIDg4MTM2LCA4ODE0MSwgODgxNDYsIDg4MTUxLCA4ODE1NiwgODgxNjEsIDg4MTY2LCAKLSAgICA4ODE3MSwgODgxNzYsIDg4MTgxLCA4ODE4NiwgODgxOTEsIDg4MTk2LCA4ODIwMSwgODgyMDYsIDg4MjExLCA4ODIxNiwgCi0gICAgODgyMjEsIDg4MjI2LCA4ODIzMSwgODgyMzYsIDg4MjQxLCA4ODI0NiwgODgyNTEsIDg4MjU2LCA4ODI2MSwgODgyNjYsIAotICAgIDg4MjcxLCA4ODI3NiwgODgyODEsIDg4Mjg2LCA4ODI5MSwgODgyOTYsIDg4MzAxLCA4ODMwNiwgODgzMTEsIDg4MzE2LCAKLSAgICA4ODMyMSwgODgzMjYsIDg4MzMxLCA4ODMzNiwgODgzNDEsIDg4MzQ2LCA4ODM1MSwgODgzNTYsIDg4MzYxLCA4ODM2NiwgCi0gICAgODgzNzEsIDg4Mzc2LCA4ODM4MSwgODgzODYsIDg4MzkxLCA4ODM5NiwgODg0MDEsIDg4NDA2LCA4ODQxMSwgODg0MTYsIAotICAgIDg4NDIxLCA4ODQyNiwgODg0MzEsIDg4NDM2LCA4ODQ0MSwgODg0NDYsIDg4NDUxLCA4ODQ1NiwgODg0NjEsIDg4NDY2LCAKLSAgICA4ODQ3MSwgODg0NzYsIDg4NDgxLCA4ODQ4NiwgODg0OTEsIDg4NDk2LCA4ODUwMSwgODg1MDYsIDg4NTExLCA4ODUxNiwgCi0gICAgODg1MjEsIDg4NTI2LCA4ODUzMSwgODg1MzYsIDg4NTQxLCA4ODU0NiwgODg1NTEsIDg4NTU2LCA4ODU2MSwgODg1NjYsIAotICAgIDg4NTcxLCA4ODU3NiwgODg1ODEsIDg4NTg2LCA4ODU5MSwgODg1OTYsIDg4NjAxLCA4ODYwNiwgODg2MTEsIDg4NjE2LCAKLSAgICA4ODYyMSwgODg2MjYsIDg4NjMxLCA4ODYzNiwgODg2NDEsIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgCi0gICAgODg2NzEsIDg4Njc2LCA4ODY4MSwgODg2ODYsIDg4NjkxLCA4ODY5NiwgODg3MDEsIDg4NzA2LCA4ODcxMSwgODg3MTYsIAotICAgIDg4NzIxLCA4ODcyNiwgODg3MzEsIDg4NzM2LCA4ODc0MSwgODg3NDYsIDg4NzUxLCA4ODc1NiwgODg3NjEsIDg4NzY2LCAKLSAgICA4ODc3MSwgODg3NzYsIDg4NzgxLCA4ODc4NiwgODg3OTEsIDg4Nzk2LCA4ODgwMSwgODg4MDYsIDg4ODExLCA4ODgxNiwgCi0gICAgODg4MjEsIDg4ODI2LCA4ODgzMSwgODg4MzYsIDg4ODQxLCA4ODg0NiwgODg4NTEsIDg4ODU2LCA4ODg2MSwgODg4NjYsIAotICAgIDg4ODcxLCA4ODg3NiwgODg4ODEsIDg4ODg2LCA4ODg5MSwgODg4OTYsIDg4OTAxLCA4ODkwNiwgODg5MTEsIDg4OTE2LCAKLSAgICA4ODkyMSwgODg5MjYsIDg4OTMxLCA4ODkzNiwgODg5NDEsIDg4OTQ2LCA4ODk1MSwgODg5NTcsIDg4OTYyLCA4ODk2NywgCi0gICAgODg5NzIsIDg4OTc3LCA4ODk4MiwgODg5ODcsIDg4OTkyLCA4ODk5OCwgODkwMDMsIDg5MDA4LCA4OTAxMywgODkwMTgsIAotICAgIDg5MDIzLCA4OTAyOCwgODkwMzMsIDg5MDM4LCA4OTA0MywgODkwNDgsIDg5MDUzLCA4OTA1OCwgODkwNjMsIDg5MDY4LCAKLSAgICA4OTA3MywgODkwNzgsIDg5MDgzLCA4OTA4OCwgODkwOTMsIDg5MDk4LCA4OTEwMywgODkxMDgsIDg5MTEzLCA4OTExOCwgCi0gICAgODkxMjMsIDg5MTI4LCA4OTEzMywgODkxMzgsIDg5MTQzLCA4OTE0OCwgODkxNTMsIDg5MTU4LCA4OTE2NywgODkxNzIsIAotICAgIDg5MTgxLCA4OTE4NiwgODkxOTUsIDg5MjAwLCA4OTIwOSwgODkyMTQsIDg5MjIzLCA4OTIyOCwgODkyMzcsIDg5MjQyLCAKLSAgICA4OTI1MSwgODkyNTYsIDg5MjY1LCA4OTI3MCwgODkyNzUsIDg5Mjg0LCA4OTI4OCwgODkyOTcsIDg5MzAyLCA4OTMxMSwgCi0gICAgODkzMTYsIDg5MzI1LCA4OTMzMCwgODkzMzksIDg5MzQ0LCA4OTM1MywgODkzNTgsIDg5MzY3LCA4OTM3MiwgODkzODEsIAotICAgIDg5Mzg2LCA4OTM5NSwgODk0MDAsIDg5NDA5LCA4OTQxNCwgODk0MjMsIDg5NDI4LCA4OTQzMywgODk0MzgsIDg5NDQzLCAKLSAgICA4OTQ0OCwgODk0NTMsIDg5NDU4LCA4OTQ2MiwgODk0NjcsIDg5NDcyLCA4OTQ3NywgODk0ODIsIDg5NDg3LCA4OTQ5MiwgCi0gICAgODk0OTgsIDg5NTAzLCA4OTUwOCwgODk1MTMsIDg5NTE5LCA4OTUyMywgODk1MjgsIDg5NTM0LCA4OTUzOSwgODk1NDQsIAotICAgIDg5NTQ5LCA4OTU1NCwgODk1NTksIDg5NTY0LCA4OTU2OSwgODk1NzQsIDg5NTc5LCA4OTU4NCwgODk1OTAsIDg5NTk1LCAKLSAgICA4OTYwMCwgODk2MDUsIDg5NjExLCA4OTYxNiwgODk2MjEsIDg5NjI2LCA4OTYzMSwgODk2MzcsIDg5NjQyLCA4OTY0NywgCi0gICAgODk2NTIsIDg5NjU3LCA4OTY2MiwgODk2NjgsIDg5NjczLCA4OTY3OCwgODk2ODMsIDg5Njg4LCA4OTY5MywgODk2OTgsIAotICAgIDg5NzAzLCA4OTcwOCwgODk3MTMsIDg5NzE4LCA4OTcyMywgODk3MjgsIDg5NzMzLCA4OTczOCwgODk3NDMsIDg5NzQ4LCAKLSAgICA4OTc1MywgODk3NTgsIDg5NzYzLCA4OTc2OCwgODk3NzMsIDg5Nzc4LCA4OTc4MywgODk3ODksIDg5Nzk1LCA4OTgwMSwgCi0gICAgODk4MDYsIDg5ODExLCA4OTgxNiwgODk4MjEsIDg5ODI3LCA4OTgzMywgODk4MzksIDg5ODQ0LCA4OTg0OSwgODk4NTQsIAotICAgIDg5ODYwLCA4OTg2NSwgODk4NzAsIDg5ODc1LCA4OTg4MCwgODk4ODUsIDg5ODkwLCA4OTg5NSwgODk5MDAsIDg5OTA1LCAKLSAgICA4OTkxMCwgODk5MTUsIDg5OTIwLCA4OTkyNSwgODk5MzAsIDg5OTM1LCA4OTk0MCwgODk5NDYsIDg5OTUyLCA4OTk1OCwgCi0gICAgODk5NjMsIDg5OTY4LCA4OTk3MywgODk5NzgsIDg5OTg0LCA4OTk5MCwgODk5OTYsIDkwMDAxLCA5MDAwNiwgOTAwMTEsIAotICAgIDkwMDE2LCA5MDAyMSwgOTAwMjYsIDkwMDMxLCA5MDAzNiwgOTAwNDEsIDE3NTM5LCA5MDA0NiwgOTAwNTIsIDkwMDU3LCAKLSAgICA5MDA2MiwgOTAwNjcsIDkwMDcyLCA5MDA3NywgOTAwODMsIDkwMDg4LCA5MDA5MywgOTAwOTgsIDkwMTAzLCA5MDEwOCwgCi0gICAgOTAxMTQsIDkwMTE5LCA5MDEyNCwgOTAxMjksIDkwMTM0LCA5MDEzOSwgOTAxNDQsIDkwMTQ5LCA5MDE1NCwgOTAxNTksIAotICAgIDkwMTY0LCA5MDE2OSwgOTAxNzQsIDkwMTc5LCA5MDE4NCwgOTAxODksIDkwMTk0LCA5MDE5OSwgOTAyMDQsIDkwMjA5LCAKLSAgICA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIzMCwgOTAyMzUsIDkwMjQwLCA5MDI0NSwgOTAyNTAsIDkwMjU1LCA5MDI2MCwgCi0gICAgOTAyNjUsIDkwMjcwLCA5MDI3NSwgOTAyODAsIDkwMjg1LCA5MDI5MCwgOTAyOTUsIDkwMzAwLCA5MDMwNSwgOTAzMTAsIAotICAgIDkwMzE1LCA5MDMyMCwgOTAzMjUsIDkwMzMwLCA5MDMzNSwgOTAzNDAsIDkwMzQ1LCA5MDM1MCwgOTAzNTUsIDkwMzYwLCAKLSAgICA5MDM2NSwgOTAzNzAsIDkwMzc1LCA5MDM4MCwgOTAzODUsIDkwMzkwLCA5MDM5NSwgOTA0MDAsIDkwNDA1LCA5MDQxMCwgCi0gICAgOTA0MTUsIDkwNDIwLCA5MDQyNSwgOTA0MzAsIDkwNDM2LCA5MDQ0MSwgOTA0NDYsIDkwNDUxLCA5MDQ1NiwgOTA0NjEsIAotICAgIDkwNDY2LCA5MDQ3MSwgOTA0NzYsIDkwNDgxLCA5MDQ4NiwgOTA0OTEsIDkwNDk3LCA5MDUwMiwgOTA1MDgsIDkwNTEzLCAKLSAgICA5MDUxOCwgOTA1MjMsIDkwNTI4LCA5MDUzMywgOTA1MzgsIDkwNTQ0LCA5MDU0OSwgOTA1NTQsIDkwNTYwLCA5MDU2NSwgCi0gICAgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkxLCA5MDU5NywgOTA2MDIsIDkwNjA3LCAxMzIxMSwgOTA2MTIsIAotICAgIDkwNjE3LCA5MDYyMiwgOTA2MjcsIDkwNjMyLCA5MDYzNywgOTA2NDIsIDkwNjQ3LCA5MDY1MiwgOTA2NTcsIDkwNjYyLCAKLSAgICA5MDY2NywgOTA2NzIsIDkwNjc3LCA5MDY4MiwgOTA2ODcsIDkwNjkyLCA5MDY5NywgOTA3MDIsIDkwNzA3LCA5MDcxMiwgCi0gICAgOTA3MTcsIDkwNzIyLCA5MDcyNywgOTA3MzIsIDkwNzM3LCA5MDc0MiwgOTA3NDcsIDkwNzUyLCA5MDc1NywgOTA3NjIsIAotICAgIDkwNzY3LCA5MDc3MiwgOTA3NzcsIDkwNzgyLCA5MDc4NywgOTA3OTIsIDkwNzk3LCA5MDgwMiwgOTA4MDcsIDkwODEyLCAKLSAgICA5MDgxNywgOTA4MjIsIDkwODI3LCA5MDgzMiwgOTA4MzcsIDkwODQyLCA5MDg0NywgOTA4NTIsIDkwODU3LCA5MDg2MiwgCi0gICAgOTA4NjcsIDkwODcyLCA5MDg3NywgOTA4ODIsIDkwODg3LCA5MDg5MiwgOTA4OTcsIDkwOTAyLCA5MDkwNywgOTA5MTIsIAotICAgIDkwOTE3LCA5MDkyMiwgOTA5MjcsIDkwOTMyLCA5MDkzOCwgOTA5NDMsIDkwOTQ4LCA5MDk1MywgOTA5NTgsIDkwOTY0LCAKLSAgICA5MDk2OSwgOTA5NzQsIDkwOTc5LCA5MDk4NCwgOTA5ODksIDkwOTk0LCA5MTAwMCwgOTEwMDUsIDkxMDEwLCA5MTAxNSwgCi0gICAgOTEwMjAsIDkxMDI1LCA5MTAzMSwgOTEwMzYsIDkxMDQxLCA5MTA0NiwgOTEwNTEsIDkxMDU2LCA5MTA2MiwgOTEwNjcsIAotICAgIDkxMDcyLCA5MTA3NywgOTEwODIsIDkxMDg3LCA5MTA5MywgOTEwOTksIDkxMTA0LCA5MTEwOSwgOTExMTQsIDkxMTIwLCAKLSAgICA5MTEyNiwgOTExMzIsIDkxMTM3LCA5MTE0MiwgOTExNDgsIDkxMTU0LCA5MTE1OSwgOTExNjUsIDkxMTcxLCA5MTE3NywgCi0gICAgOTExODIsIDkxMTg3LCA5MTE5MywgOTExOTgsIDkxMjA0LCA5MTIwOSwgOTEyMTUsIDkxMjI0LCA5MTIyOSwgOTEyMzQsIAotICAgIDkxMjQwLCA5MTI0NSwgOTEyNTEsIDkxMjU2LCA5MTI2MSwgOTEyNjYsIDkxMjcxLCA5MTI3NiwgOTEyODEsIDkxMjg2LCAKLSAgICA5MTI5MSwgOTEyOTYsIDkxMzAxLCA5MTMwNiwgOTEzMTEsIDkxMzE2LCA5MTMyMSwgOTEzMjYsIDkxMzMxLCA5MTMzNiwgCi0gICAgOTEzNDEsIDkxMzQ2LCA5MTM1MSwgOTEzNTYsIDkxMzYxLCA5MTM2NiwgOTEzNzEsIDkxMzc2LCA5MTM4MSwgOTEzODYsIAotICAgIDkxMzkxLCA5MTM5NiwgOTE0MDEsIDkxNDA2LCA5MTQxMiwgOTE0MTgsIDkxNDI0LCA5MTQyOSwgOTE0MzQsIDkxNDM5LCAKLSAgICA5MTQ0NCwgOTE0NDksIDkxNDU0LCA5MTQ1OSwgOTE0NjQsIDkxNDY5LCA5MTQ3NCwgOTE0NzksIDkxNDg0LCA5MTQ4OSwgCi0gICAgOTE0OTQsIDkxNDk5LCA5MTUwNCwgOTE1MDksIDkxNTE0LCA5MTUxOSwgOTE1MjQsIDkxNTMwLCA5MTUzNiwgOTE1NDEsIAotICAgIDkxNTQ3LCA5MTU1MiwgOTE1NTcsIDkxNTYzLCA5MTU2OCwgOTE1NzQsIDkxNTc5LCA5MTU4NSwgOTE1OTAsIDkxNTk2LCAKLSAgICA5MTYwMSwgOTE2MDcsIDkxNjEyLCA5MTYxNywgOTE2MjIsIDkxNjI3LCA5MTYzMiwgOTE2MzcsIDkxNjQyLCA4NzcyMCwgCi0gICAgODc3MjYsIDg3NzMyLCA4NzczOCwgOTE2NDgsIDg3NzQ0LCA4Nzc1MCwgOTE2NTQsIDg3NzU2LCA4Nzc2MiwgODc3NjgsIAotICAgIDg3Nzc0LCA4Nzc4MCwgODc3ODYsIDg3NzkyLCA4Nzc5OCwgODc4MDQsIDkxNjYwLCA4NzgxMCwgODc4MTYsIDg3ODIyLCAKLSAgICA5MTY2NiwgODc4MjgsIDg3ODM0LCA4Nzg0MCwgODc4NDYsIDkxNjcyLCA4Nzg1MiwgODc4NTgsIDg3ODY0LCA4Nzg4NCwgCi0gICAgOTE2NzgsIDkxNjg0LCA4Nzg5MCwgOTE2OTAsIDg3ODk2LCA4NzkwMiwgODc5MDgsIDg3OTE0LCA4NzkyMCwgMzE1MCwgCi0gICAgMzE1NSwgOTE2OTYsIDkxNzAxLCA5MTcwNCwgOTE3MTAsIDkxNzE2LCA5MTcyMywgOTE3MjgsIDkxNzMzLCAyMzM3LCAKKyAgICAwLCAwLCA2LCAxMCwgMTQsIDE5LCAyNywgMzQsIDQ0LCA0OSwgNTUsIDY0LCA2NiwgNjksIDgxLCA4OSwgMTAyLCAxMDgsIAorICAgIDExMywgMTE5LCAxMjQsIDEzMiwgMTQxLCAxNDYsIDE1NywgMTYyLCAxNjcsIDE3MCwgMTc0LCAxODMsIDE4OSwgMTk1LCAKKyAgICAyMDAsIDIwNywgMjE1LCAyMjMsIDIyNCwgMjI3LCAyMzUsIDI0NCwgMTcxLCAyNTAsIDI1NiwgMjYzLCAyNzMsIDI4MCwgCisgICAgMjg1LCAyODgsIDI5MywgMjk5LCAzMDMsIDMwNiwgMzExLCAzMTcsIDMyMywgMzI4LCAzMzMsIDMzOSwgMzQ1LCAzNTQsIAorICAgIDM2MSwgMzY4LCAzNzcsIDM3OSwgMzg0LCAzODksIDM5NywgMzk5LCA0MDcsIDQwOCwgNDE2LCA0MTgsIDMzNywgNDI1LCAKKyAgICA0MjgsIDQzMCwgNDM2LCA0MzgsIDQ0NSwgNDUwLCA0NTcsIDQ2MiwgNDY3LCA0NzQsIDQ4MiwgNDg2LCA0OTIsIDQ5NywgCisgICAgNTA3LCA1MTIsIDUxOSwgNTIyLCA1MzAsIDUzOSwgNTQzLCA1NTMsIDU2MCwgNTY3LCA1NzQsIDU4MywgNTkwLCA1OTMsIAorICAgIDU5OSwgNjAzLCA2MDcsIDYxNSwgNjE5LCA2MzIsIDYzNiwgNjM3LCA2NDQsIDY1MywgNjYyLCA2NjUsIDY3MSwgNjc1LCAKKyAgICA2NzcsIDY4NywgNjkyLCA3MDAsIDcwNCwgNzA3LCA3MTUsIDcxOSwgNzI0LCA3MjksIDczNSwgNzQwLCA3NDQsIDc0NywgCisgICAgNzU1LCA3NjQsIDc3MywgNzgxLCA3ODksIDc5MywgNzk5LCA4MDcsIDgxNCwgODE3LCA4MjcsIDgzMSwgODQyLCA4NTEsIAorICAgIDg1OCwgODYxLCA4NjgsIDg3MCwgODc2LCA4ODAsIDg4NSwgODg5LCA4OTUsIDkwNCwgOTA5LCA5MTMsIDU4OCwgOTE2LCAKKyAgICA5MjEsIDkzMCwgOTM4LCA5NDMsIDk0NiwgNjc0LCA5NTEsIDk1NiwgOTU5LCA5NjUsIDk2OSwgOTczLCA5NzksIDk4NiwgCisgICAgOTk1LCA5OTgsIDEwMDUsIDEwMTQsIDEwMjcsIDEwMzEsIDEwMzksIDEwNDIsIDEwNDgsIDEwNTQsIDEwNjMsIDEwNzAsIAorICAgIDEwNzMsIDEwODEsIDEwODgsIDEwOTUsIDEwOTksIDExMDIsIDExMTAsIDExMTQsIDExMjMsIDExMjksIDExMzMsIDExMzYsIAorICAgIDExNDAsIDI2LCAxMTQ3LCAxMTU2LCAxMTYxLCAxMTY2LCAxMTcyLCAxMTc3LCAxMTgyLCAxMTg3LCAxMTkxLCAxMTk2LCAKKyAgICAxMjAyLCAxMjA3LCAxMjEyLCAxMjE2LCAxMjIyLCAxMjI3LCAxMjMyLCAxMjM3LCAxMjQxLCAxMjQ2LCAxMjUxLCAxMjU2LCAKKyAgICAxMjYyLCAxMjY4LCAxMjc0LCAxMjc5LCAxMjgzLCAxMjg4LCAxMjkzLCAxMjk4LCAxMzAyLCAxMzA3LCAxMzEyLCAxMzE3LCAKKyAgICAxMzIyLCAxMTU3LCAxMTYyLCAxMTY3LCAxMTczLCAxMTc4LCAxMzI2LCAxMTg4LCAxMzMyLCAxMzM3LCAxMzQyLCAxMzQ5LCAKKyAgICAxMzUzLCAxMzU2LCAxMzY1LCAxMTkyLCAxMzY5LCAxMTk3LCAxMjAzLCAxMjA4LCAxMzczLCAxMzc4LCAxMzgzLCAxMzg3LCAKKyAgICAxMzkxLCAxMzk3LCAxNDAxLCAxMjEzLCAxNDA0LCAxNDA2LCAxMjIzLCAxNDExLCAxNDE1LCAxMjI4LCAxNDIxLCAxMjMzLCAKKyAgICAxNDI1LCAxNDI5LCAxMjM4LCAxNDMzLCAxNDM4LCAxNDQyLCAxNDQ1LCAxNDQ5LCAxMjQyLCAxMjQ3LCAxNDU0LCAxNDYwLCAKKyAgICAxMjUyLCAxNDcyLCAxNDc4LCAxNDg0LCAxNDkwLCAxMjU3LCAxMjY5LCAxMjc1LCAxNDk0LCAxNDk4LCAxNTAyLCAxNTA1LCAKKyAgICAxMjgwLCAxNTA5LCAxNTExLCAxNTE2LCAxNTIxLCAxNTI3LCAxNTMyLCAxNTM3LCAxNTQxLCAxNTQ2LCAxNTUxLCAxNTU2LCAKKyAgICAxNTYxLCAxNTY3LCAxNTcyLCAxNTc3LCAxNTgzLCAxNTg5LCAxNTk0LCAxNTk4LCAxNjAzLCAxNjA4LCAxNjEzLCAxNjE4LCAKKyAgICAxNjIzLCAxNjI3LCAxNjM1LCAxNjQwLCAxNjQ0LCAxNjQ5LCAxNjU0LCAxNjU5LCAxNjY0LCAxNjY4LCAxNjcxLCAxNjc4LCAKKyAgICAxNjgzLCAxNjg4LCAxNjkzLCAxNjk4LCAxNzA0LCAxNzA5LCAxNzEzLCAxMjg0LCAxNzE2LCAxNzIxLCAxNzI2LCAxMjg5LCAKKyAgICAxNzMwLCAxNzM0LCAxNzQxLCAxMjk0LCAxNzQ4LCAxMjk5LCAxNzUyLCAxNzU0LCAxNzU5LCAxNzY1LCAxMzAzLCAxNzcwLCAKKyAgICAxNzc5LCAxMzA4LCAxNzg0LCAxNzkwLCAxNzk1LCAxMzEzLCAxODAwLCAxODA1LCAxODA5LCAxODEyLCAxODE3LCAxODIxLCAKKyAgICAxODI1LCAxODI5LCAxODMyLCAxODM2LCAxMzE4LCAxODQxLCAxMzIzLCAxODQ1LCAxODQ3LCAxODUzLCAxODU5LCAxODY1LCAKKyAgICAxODcxLCAxODc3LCAxODgzLCAxODg5LCAxODk1LCAxOTAwLCAxOTA2LCAxOTEyLCAxOTE4LCAxOTI0LCAxOTMwLCAxOTM2LCAKKyAgICAxOTQyLCAxOTQ4LCAxOTU0LCAxOTU5LCAxOTY0LCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg0LCAxOTg5LCAxOTk0LCAxOTk5LCAKKyAgICAyMDA0LCAyMDEwLCAyMDE1LCAyMDIxLCAyMDI2LCAyMDMyLCAyMDM4LCAyMDQzLCAyMDQ5LCAyMDU1LCAyMDYxLCAyMDY3LCAKKyAgICAyMDcyLCAyMDc3LCAyMDc5LCAyMDgwLCAyMDg0LCAyMDg4LCAyMDkzLCAyMDk3LCAyMTAxLCAyMTA1LCAyMTEwLCAyMTE0LCAKKyAgICAyMTE3LCAyMTIyLCAyMTI2LCAyMTMxLCAyMTM1LCAyMTM5LCAyMTQ0LCAyMTQ4LCAyMTUxLCAyMTU1LCAyMTYxLCAyMTc1LCAKKyAgICAyMTc5LCAyMTgzLCAyMTg3LCAyMTkwLCAyMTk1LCAyMTk5LCAyMjAzLCAyMjA2LCAyMjEwLCAyMjE1LCAyMjIwLCAyMjI1LCAKKyAgICAyMjMwLCAyMjM0LCAyMjM4LCAyMjQyLCAyMjQ2LCAyMjUxLCAyMjU1LCAyMjYwLCAyMjY0LCAyMjY5LCAyMjc1LCAyMjgyLCAKKyAgICAyMjg4LCAyMjkzLCAyMjk4LCAyMzAzLCAyMzA5LCAyMzE0LCAyMzIwLCAyMzI1LCAyMzI4LCAyMzMwLCAxMTc0LCAyMzM0LCAKKyAgICAyMzQxLCAyMzQ5LCAyMzU5LCAyMzY4LCAyMzgyLCAyMzg2LCAyMzkwLCAyMzk1LCAyNDA4LCAyNDE2LCAyNDIwLCAyNDI1LCAKKyAgICAyNDI5LCAyNDMyLCAyNDM2LCAyNDQwLCAyNDQ1LCAyNDUwLCAyNDU1LCAyNDU5LCAyNDYyLCAyNDY2LCAyNDczLCAyNDgwLCAKKyAgICAyNDg2LCAyNDkxLCAyNDk2LCAyNTAyLCAyNTA4LCAyNTEzLCAyNTE2LCAxNzU2LCAyNTE4LCAyNTI0LCAyNTI4LCAyNTMzLCAKKyAgICAyNTM3LCAyNTQxLCAxNjc0LCAxNzY3LCAyNTQ2LCAyNTUwLCAyNTUzLCAyNTU4LCAyNTYzLCAyNTY4LCAyNTczLCAyNTc3LCAKKyAgICAyNTg0LCAyNTg5LCAyNTkyLCAyNTk2LCAyNjAzLCAyNjA5LCAyNjEzLCAyNjE3LCAyNjIxLCAyNjI2LCAyNjMzLCAyNjM4LCAKKyAgICAyNjQzLCAyNjUwLCAyNjU2LCAyNjYyLCAyNjY4LCAyNjgyLCAyNjk5LCAyNzE0LCAyNzI5LCAyNzM4LCAyNzQzLCAyNzQ3LCAKKyAgICAyNzUyLCAyNzU3LCAyNzYxLCAyNzczLCAyNzgwLCAyNzg2LCAyMjc4LCAyNzkyLCAyNzk5LCAyODA1LCAyODA5LCAyODEyLCAKKyAgICAyODE5LCAyODI1LCAyODMwLCAyODM0LCAyODM5LCAyODQzLCAyODQ3LCAyMTAyLCAyODUxLCAyODU2LCAyODYxLCAyODY1LCAKKyAgICAyODcwLCAyODc4LCAyODgyLCAyODg3LCAyODkxLCAyODk1LCAyODk5LCAyOTA0LCAyOTA5LCAyOTE0LCAyOTE4LCAyOTIzLCAKKyAgICAyOTI4LCAyOTMyLCAyOTM3LCAyOTQxLCAyOTQ0LCAyOTQ4LCAyOTUyLCAyOTYwLCAyOTY1LCAyOTY5LCAyOTczLCAyOTc5LCAKKyAgICAyOTg4LCAyOTkyLCAyOTk2LCAzMDAyLCAzMDA3LCAzMDE0LCAzMDE4LCAzMDI4LCAzMDMyLCAzMDM2LCAzMDQxLCAzMDQ1LCAKKyAgICAzMDUwLCAzMDU2LCAzMDYxLCAzMDY1LCAzMDY5LCAzMDczLCAyNDc2LCAzMDgxLCAzMDg2LCAzMDkyLCAzMDk3LCAzMTAxLCAKKyAgICAzMTA2LCAzMTExLCAzMTE1LCAzMTIxLCAzMTI2LCAyMTA2LCAzMTMyLCAzMTM4LCAzMTQzLCAzMTQ4LCAzMTUzLCAzMTU4LCAKKyAgICAzMTYzLCAzMTY4LCAzMTczLCAzMTc4LCAzMTgzLCAzMTg5LCAzMTk0LCAxMTg5LCAxMDEsIDMyMDAsIDMyMDQsIDMyMDgsIAorICAgIDMyMTIsIDMyMTcsIDMyMjEsIDMyMjUsIDMyMzEsIDMyMzYsIDMyNDAsIDMyNDQsIDMyNDksIDMyNTQsIDMyNTgsIDMyNjMsIAorICAgIDMyNjcsIDMyNzAsIDMyNzQsIDMyNzksIDMyODMsIDMyODgsIDMyOTIsIDMyOTUsIDMyOTksIDMzMDMsIDMzMDgsIDMzMTIsIAorICAgIDMzMTUsIDMzMjgsIDMzMzIsIDMzMzYsIDMzNDAsIDMzNDUsIDMzNDksIDMzNTMsIDMzNTYsIDMzNjAsIDMzNjQsIDMzNjksIAorICAgIDMzNzMsIDMzNzgsIDMzODMsIDMzODgsIDMzOTIsIDMzOTcsIDM0MDAsIDM0MDMsIDM0MDgsIDM0MTQsIDM0MTgsIDM0MjIsIAorICAgIDM0MjUsIDM0MzAsIDM0MzQsIDM0MzksIDM0NDMsIDM0NDcsIDM0NTAsIDM0NTYsIDM0NjEsIDM0NjYsIDM0NzIsIDM0NzcsIAorICAgIDM0ODIsIDM0ODgsIDM0OTQsIDM0OTksIDM1MDQsIDM1MDksIDM1MTQsIDEwOTcsIDU5MiwgMzUxNywgMzUyMCwgMzUyNSwgCisgICAgMzUyOSwgMzUzMywgMzUzNywgMzU0MSwgMzU0NCwgMzU0OCwgMzU1MywgMzU1OCwgMzU2MiwgMzU2NywgMzU3MSwgMzU3NiwgCisgICAgMzU4MCwgMzU4NCwgMzU4OCwgMzU5NCwgMzYwMCwgMzYwMywgMzYwNiwgMTUwLCAzNjEyLCAzNjE3LCAzNjI2LCAzNjM0LCAKKyAgICAzNjQzLCAzNjUzLCAzNjYwLCAzNjY2LCAzNjczLCAzNjc4LCAzNjgyLCAzNjg2LCAzNjk0LCAzNzAxLCAzNzA2LCAzNzEzLCAKKyAgICAzNzE4LCAzNzIyLCAzNzMyLCAzNzM2LCAzNzQwLCAzNzQ1LCAzNzUwLCAzNzYwLCAyMTE4LCAzNzY1LCAzNzY5LCAzNzcyLCAKKyAgICAzNzc4LCAzNzgzLCAzNzg5LCAzNzk1LCAzODAwLCAzODA3LCAzODExLCAzODE1LCA2MTYsIDcwNSwgMTM1MCwgMzgxOSwgCisgICAgMzgyNiwgMzgzMywgMzgzOSwgMzg0NCwgMzg1MSwgMzg1OCwgMzg2MywgMzg2OSwgMzg3NSwgMzg4MCwgMzg4NCwgMzg5MCwgCisgICAgMzg5NywgMzkwMiwgMzkwNiwgMzkxMCwgMjEyNywgMzkxNiwgMzkyNCwgMzkzMCwgMzkzOCwgNzU5LCAzOTQ0LCAzOTUyLCAKKyAgICAzOTYzLCAzOTY3LCAzOTc3LCAyMTMyLCAzOTgzLCAzOTg4LCA0MDAzLCA0MDA5LCA0MDE2LCA0MDI2LCA0MDMyLCA0MDM3LCAKKyAgICA0MDQzLCA0MDQ5LCA0MDUyLCA0MDU1LCA0MDU5LCA0MDY0LCA0MDcxLCA0MDgwLCA0MDg1LCA0MDg5LCA0MDkzLCA0MDk3LCAKKyAgICA0MTAxLCA0MTA2LCA0MTEyLCA0MTIzLCA0MTI3LCAzMjc1LCA0MTMyLCA0MTQ0LCA0MTUwLCA0MTU4LCA0MTYyLCA0MTY3LCAKKyAgICAxNTQzLCA0MTc0LCA0MTc3LCA0MTgwLCA0MTg0LCA0MTg3LCA0MTkzLCA0MTk3LCA0MjExLCA0MjE1LCA0MjE4LCA0MjIyLCAKKyAgICA0MjI4LCA0MjM0LCA0MjM5LCA0MjQzLCA0MjQ3LCA0MjUzLCA0MjY0LCA0MjcwLCA0Mjc1LCA0MjgxLCA0Mjg1LCA0MjkzLCAKKyAgICA0MzA1LCA0MzE1LCA0MzIxLCA0MzI2LCA0MzM1LCA0MzQzLCA0MzUwLCA0MzU2LCA0MzYyLCA0MzY2LCA0MzcyLCA0MzgxLCAKKyAgICA0MzkwLCA0Mzk0LCA0NDAzLCA0NDA4LCA0NDEyLCA0NDE3LCA0NDIxLCA0NDI5LCA0NDM1LCA0NDM5LCA0NDQ0LCA0NDQ4LCAKKyAgICA0NDU0LCAyMTQwLCAxMzY2LCA0NDYwLCA0NDY1LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCA0NDk2LCA0NTAxLCAKKyAgICA0NTA3LCA0NTEyLCA0NTE4LCA0NTIzLCA0NTI4LCA0NTMzLCA0NTM5LCA0NTQ0LCA0NTQ5LCA0NTU0LCA0NTU5LCA0NTY1LCAKKyAgICA0NTcwLCA0NTc2LCA0NTgxLCA0NTg2LCA0NTkxLCA0NTk2LCA0NjAxLCA0NjA2LCA0NjEyLCA0NjE3LCA0NjIyLCAyOTcsIAorICAgIDMzMiwgNDYyNywgNDYzMywgNDYzNywgNDY0MSwgNDY0NiwgNDY1MCwgNDY1NCwgNDY1NywgNDY2MSwgNDY2NSwgNDY2OSwgCisgICAgNDY3MywgNDY3NywgNDY4MiwgNDY4NiwgNDY5MCwgNDY5NiwgNDQ1NywgNDcwMSwgNDcwNSwgNDcwOCwgNDcxMywgNDcxOCwgCisgICAgNDcyMywgNDcyOCwgNDczMywgNDczOCwgNDc0MywgNDc0OCwgNDc1MywgNDc1OCwgNDc2MiwgNDc2NywgNDc3MiwgNDc3NywgCisgICAgNDc4MiwgNDc4NywgNDc5MiwgNDc5NywgNDgwMiwgNDgwNywgNDgxMiwgNDgxNiwgNDgyMSwgNDgyNiwgNDgzMSwgNDgzNiwgCisgICAgNDg0MSwgNDg0NiwgNDg1MSwgNDg1NiwgNDg2MSwgNDg2NiwgNDg3MCwgNDg3NSwgNDg4MCwgNDg4NSwgNDg5MCwgNDg5NSwgCisgICAgNDkwMCwgNDkwNSwgNDkxMCwgNDkxNSwgNDkyMCwgNDkyNCwgNDkyOSwgNDkzNCwgNDkzOSwgNDk0NCwgNDk0OSwgNDk1NCwgCisgICAgNDk1OSwgNDk2NCwgNDk2OSwgNDk3NCwgNDk3OCwgNDk4MywgNDk4OCwgNDk5MywgNDk5OCwgNTAwMywgNTAwOCwgNTAxMywgCisgICAgNTAxOCwgNTAyMywgNTAyOCwgNTAzMiwgNTAzNywgNTA0MiwgNTA0NywgNTA1MiwgNTA1NywgNTA2MiwgNTA2NywgNTA3MiwgCisgICAgNTA3NywgNTA4MiwgNTA4NiwgNTA5MSwgNTA5NiwgNTEwMSwgNTEwNiwgNTExMiwgNTExOCwgNTEyNCwgNTEzMCwgNTEzNiwgCisgICAgNTE0MiwgNTE0OCwgNTE1MywgNTE1OSwgNTE2NSwgNTE3MSwgNTE3NywgNTE4MywgNTE4OSwgNTE5NSwgNTIwMSwgNTIwNywgCisgICAgNTIxMywgNTIxOCwgNTIyNCwgNTIzMCwgNTIzNiwgNTI0MiwgNTI0OCwgNTI1NCwgNTI2MCwgNTI2NiwgNTI3MiwgNTI3OCwgCisgICAgNTI4MywgNTI4OSwgNTI5NSwgNTMwMSwgNTMwNywgNTMxMywgNTMxOSwgNTMyNSwgNTMzMSwgNTMzNywgNTM0MywgNTM0OCwgCisgICAgNTM1NCwgNTM2MCwgNTM2NiwgNTM3MiwgNTM3OCwgNTM4NCwgNTM5MCwgNTM5NiwgNTQwMiwgNTQwOCwgNTQxMywgNTQxOSwgCisgICAgNTQyNSwgNTQzMSwgNTQzNywgNTQ0MywgNTQ0OSwgNTQ1NSwgNTQ2MSwgNTQ2NywgNTQ3MywgNTQ3OCwgNTQ4MiwgNTQ4OCwgCisgICAgNTQ5NCwgNTUwMCwgNTUwNiwgNTUxMiwgNTUxOCwgNTUyNCwgNTUzMCwgNTUzNiwgNTU0MiwgNTU0NywgNTU1MywgNTU1OSwgCisgICAgNTU2NSwgNTU3MSwgNTU3NywgNTU4MywgNTU4OSwgNTU5NSwgNTYwMSwgNTYwNywgNTYxMiwgNTYxOCwgNTYyNCwgNTYzMCwgCisgICAgNTYzNiwgNTY0MiwgNTY0OCwgNTY1NCwgNTY2MCwgNTY2NiwgNTY3MiwgNTY3NywgNTY4MywgNTY4OSwgNTY5NSwgNTcwMSwgCisgICAgNTcwNywgNTcxMywgNTcxOSwgNTcyNSwgNTczMSwgNTczNywgNTc0MiwgNTc0OCwgNTc1NCwgNTc2MCwgNTc2NiwgNTc3MiwgCisgICAgNTc3OCwgNTc4NCwgNTc5MCwgNTc5NiwgNTgwMiwgNTgwNywgNTgxMywgNTgxOSwgNTgyNSwgNTgzMSwgNTgzNywgNTg0MywgCisgICAgNTg0OSwgNTg1NSwgNTg2MSwgNTg2NywgNTg3MiwgNTg3OCwgNTg4NCwgNTg5MCwgNTg5NiwgNTkwMiwgNTkwOCwgNTkxNCwgCisgICAgNTkyMCwgNTkyNiwgNTkzMiwgNTkzNywgNTk0MywgNTk0OSwgNTk1NSwgNTk2MSwgNTk2NywgNTk3MywgNTk3OSwgNTk4NSwgCisgICAgNTk5MSwgNTk5NywgNjAwMiwgNjAwOCwgNjAxNCwgNjAyMCwgNjAyNiwgNjAzMiwgNjAzOCwgNjA0NCwgNjA1MCwgNjA1NiwgCisgICAgNjA2MiwgNjA2NywgNjA3MywgNjA3OSwgNjA4NSwgNjA5MSwgNjA5NywgNjEwMywgNjEwOSwgNjExNSwgNjEyMSwgNjEyNywgCisgICAgNjEzMiwgNjEzNiwgNjEzOSwgNjE0NiwgNjE1MCwgNjE2MywgNjE2NywgNjE3MSwgNjE3NSwgNjE3OCwgNjE4MiwgNjE4NywgCisgICAgNjE5MSwgNjE5NSwgNjIwMSwgNjIwOCwgNjIxOSwgNjIyNywgNjIzNCwgNjIzOCwgNjI0NiwgNjI1NSwgNjI2MSwgNjI2NSwgCisgICAgNjI3NywgNjI4MiwgNjI4NSwgNjI5MCwgNjI5NCwgNjMwNCwgNjMxMiwgNjMyMCwgNjMyNiwgNjMzMCwgNjM0MCwgNjM1MCwgCisgICAgNjM1OCwgNjM2NSwgNjM3MiwgNjM3OCwgNjM4NCwgNjM5MSwgNjM5NSwgNjQwMiwgNjQxMiwgNjQyMiwgNjQzMCwgNjQzNywgCisgICAgNjQ0MiwgNjQ0NiwgNjQ1MCwgNjQ1OCwgNjQ2MiwgNjQ2NywgNjQ3NCwgNjQ4MiwgNjQ4NywgNjQ5MSwgNjQ5NiwgNjUwMCwgCisgICAgNjUwNywgNjUxMiwgNjUyNiwgNjUzMSwgNjUzNiwgNjU0MywgMzUzMCwgNjU1MiwgNjU1NiwgNjU2MSwgNjU2NSwgNjU2OSwgCisgICAgNjU3MiwgNjU3NywgNjU4MiwgNjU5MSwgNjU5NywgNjYwMywgNjYwOSwgNjYxMywgNjYyNCwgNjYzNCwgNjY0OSwgNjY2NCwgCisgICAgNjY3OSwgNjY5NCwgNjcwOSwgNjcyNCwgNjczOSwgNjc1NCwgNjc2OSwgNjc4NCwgNjc5OSwgNjgxNCwgNjgyOSwgNjg0NCwgCisgICAgNjg1OSwgNjg3NCwgNjg4OSwgNjkwNCwgNjkxOSwgNjkzNCwgNjk0OSwgNjk2NCwgNjk3OSwgNjk5NCwgNzAwOSwgNzAyNCwgCisgICAgNzAzOSwgNzA1NCwgNzA2OSwgNzA4NCwgNzA5OSwgNzExNCwgNzEyOSwgNzE0NCwgNzE1OSwgNzE3NCwgNzE4OSwgNzIwNCwgCisgICAgNzIxOSwgNzIzNCwgNzI0OSwgNzI2NCwgNzI3OSwgNzI5NCwgNzMwOSwgNzMyNCwgNzMzOSwgNzM1NCwgNzM2OSwgNzM3OCwgCisgICAgNzM4NywgNzM5MiwgNzM5OCwgNzQwOCwgNzQxMiwgNzQxNiwgNzQyMSwgNzQyNiwgNzQzNCwgNzQzOCwgNzQ0MSwgNzQ0NSwgCisgICAgMzAyMywgNzQ0OCwgNzQ1MywgMzM2LCA1MTAsIDc0NTksIDc0NjcsIDc0NzEsIDc0NzUsIDc0NzgsIDc0ODIsIDc0ODgsIAorICAgIDc0OTIsIDc1MDAsIDc1MDYsIDc1MTEsIDc1MTgsIDc1MjYsIDc1MzMsIDc1MzksIDc1NDQsIDc1NTEsIDc1NTcsIDc1NjUsIAorICAgIDc1NjksIDc1NzQsIDc1ODYsIDc1OTcsIDc2MDQsIDc2MDgsIDc2MTIsIDc2MTYsIDc2MTksIDc2MjUsIDMzMDAsIDc2MjksIAorICAgIDc2MzUsIDc2NDAsIDc2NDUsIDc2NTAsIDc2NTYsIDc2NjEsIDc2NjYsIDc2NzEsIDc2NzYsIDc2ODIsIDc2ODcsIDc2OTIsIAorICAgIDc2OTgsIDc3MDMsIDc3MDksIDc3MTQsIDc3MjAsIDc3MjUsIDc3MzEsIDc3MzYsIDc3NDEsIDc3NDYsIDc3NTEsIDc3NTYsIAorICAgIDc3NjIsIDc3NjcsIDc3NzIsIDc3NzcsIDc3ODMsIDc3ODksIDc3OTUsIDc4MDEsIDc4MDcsIDc4MTMsIDc4MTksIDc4MjUsIAorICAgIDc4MzEsIDc4MzcsIDc4NDMsIDc4NDksIDc4NTQsIDc4NTksIDc4NjQsIDc4NjksIDc4NzQsIDc4NzksIDc4ODQsIDc4ODksIAorICAgIDc4OTUsIDc5MDEsIDc5MDYsIDc5MTIsIDc5MTgsIDc5MjQsIDc5MjksIDc5MzQsIDc5MzksIDc5NDQsIDc5NTAsIDc5NTYsIAorICAgIDc5NjEsIDc5NjYsIDc5NzEsIDc5NzYsIDc5ODEsIDc5ODcsIDc5OTIsIDc5OTgsIDgwMDQsIDgwMTAsIDgwMTYsIDgwMjIsIAorICAgIDgwMjgsIDgwMzQsIDgwNDAsIDgwNDYsIDIxNDksIDc0NzcsIDgwNTEsIDgwNTUsIDgwNTksIDgwNjIsIDgwNjksIDgwNzIsIAorICAgIDgwNzYsIDgwODQsIDgwODksIDgwOTQsIDgwODUsIDgwOTksIDIxNzYsIDgxMDMsIDgxMDksIDgxMTUsIDgxMjAsIDgxMjUsIAorICAgIDgxMzIsIDgxNDAsIDgxNDUsIDgxNDksIDgxNTIsIDgxNTYsIDgxNjIsIDgxNjgsIDgxNzIsIDIxODQsIDU0MSwgODE3NSwgCisgICAgODE3OSwgODE4NCwgODE5MCwgODE5NSwgODE5OSwgODIwMiwgODIwNiwgODIxMiwgODIxNywgODIyMSwgODIyOCwgODIzMiwgCisgICAgODIzNiwgODI0MCwgODgyLCA5ODQsIDgyNDMsIDgyNTEsIDgyNTgsIDgyNjQsIDgyNzEsIDgyNzksIDgyODYsIDgyOTcsIAorICAgIDgzMDQsIDgzMTAsIDgzMTUsIDgzMjcsIDEyMDksIDEzNzQsIDEzNzksIDgzMzgsIDEzODQsIDgzNDIsIDgzNDYsIDgzNTUsIAorICAgIDgzNjMsIDgzNjcsIDgzNzYsIDgzODIsIDgzODcsIDgzOTEsIDgzOTcsIDg0MDIsIDg0MTAsIDg0MTcsIDI3MzQsIDg0MjQsIAorICAgIDg0MjgsIDg0MzcsIDg0NDYsIDg0NTUsIDg0NjQsIDg0NzAsIDg0NzUsIDg0ODAsIDg0OTEsIDg1MDAsIDg1MTIsIDg1MTcsIAorICAgIDg1MjUsIDIyMzUsIDg1MjksIDg1MzEsIDg1MzYsIDg1NDAsIDg1NDksIDg1NTcsIDEzODgsIDE2NSwgMzU3MiwgMzU3NywgCisgICAgODU2MywgODU2NywgODU3NiwgODU4MiwgODU4NywgODU5MCwgODU5OSwgMzU4MSwgODYwNSwgMjcyNiwgODYwOSwgODYxNywgCisgICAgODYyMSwgODYyNSwgODYyOSwgMjI1MiwgODYzMywgODYzOCwgODY0NSwgODY1MSwgODY1NywgODY2MCwgODY2MiwgODY2NSwgCisgICAgODY3MywgODY4MSwgODY4OSwgODY5MiwgODY5NywgMjI2NSwgODcwMiwgODA5NiwgODcwNSwgODcwNywgODcxMiwgODcxNywgCisgICAgODcyMiwgODcyNywgODczMiwgODczNywgODc0MiwgODc0NywgODc1MiwgODc1NywgODc2MywgODc2OCwgODc3MywgODc3OCwgCisgICAgODc4NCwgODc4OSwgODc5NCwgODc5OSwgODgwNCwgODgwOSwgODgxNCwgODgyMCwgODgyNSwgODgzMCwgODgzNSwgODg0MCwgCisgICAgODg0NSwgODg1MCwgODg1NSwgODg2MCwgODg2NSwgODg3MCwgODg3NSwgODg4MCwgODg4NSwgODg5MCwgODg5NSwgODkwMCwgCisgICAgODkwNSwgODkxMSwgODkxNywgODkyMiwgODkyNywgODkzMiwgODkzNywgODk0MiwgMjI3NiwgMjI4MywgMjI4OSwgODk0NywgCisgICAgODk1NSwgODk2MSwgODk2OSwgMjMxNSwgMjMyMSwgODk3NywgODk4MSwgODk4NiwgODk5MCwgODk5NCwgODk5OCwgOTAwMywgCisgICAgOTAwNywgOTAxMiwgOTAxNiwgOTAxOSwgOTAyMiwgOTAyOCwgOTAzNSwgOTA0MSwgOTA0OCwgOTA1NCwgOTA2MSwgOTA2NywgCisgICAgOTA3NCwgOTA4MCwgOTA4NiwgOTA5NSwgOTEwMSwgOTEwNSwgOTEwOSwgOTExMywgOTExNywgOTEyMiwgOTEyNiwgOTEzMSwgCisgICAgOTEzNSwgOTE0MSwgOTE0NiwgOTE1MywgOTE2NCwgOTE3MiwgOTE4MiwgOTE4OCwgOTE5OCwgOTIwNywgOTIxNCwgOTIxOSwgCisgICAgOTIyMywgOTIzNCwgOTI0NCwgOTI1NywgOTI2OCwgOTI4MSwgOTI5MiwgOTMwNCwgOTMxNiwgOTMyOCwgOTM0MSwgOTM1NCwgCisgICAgOTM2MSwgOTM2NywgOTM3OCwgOTM4OCwgOTQwMiwgOTQwOSwgOTQxNSwgOTQyNCwgOTQzMiwgOTQzNiwgOTQ0MSwgOTQ0NSwgCisgICAgOTQ1MiwgOTQ2MCwgOTQ2NywgOTQ3MSwgOTQ3NywgOTQ4MSwgOTQ4NywgOTQ5NywgOTUwMSwgOTUwNiwgOTUxMSwgOTUxOCwgCisgICAgOTUyNCwgOTUzNCwgODI2NiwgOTU0MCwgOTU0NCwgOTU1MSwgOTU1NywgOTU2NCwgOTU3MSwgOTgzLCA5NTc1LCA5NTc5LCAKKyAgICA5NTg0LCA5NTg5LCA5NTk0LCA5NTk4LCA5NjA0LCA5NjEyLCA5NjE5LCA5NjI1LCA5NjI5LCA5NjMyLCA5NjM4LCA5NjQ4LCAKKyAgICA5NjUyLCA5NjU4LCA5NjYzLCA5NjY3LCA5NjcxLCA5Njc3LCA5NjgzLCAyMTcyLCA5Njg4LCA5NjkwLCA5Njk1LCA5NzAzLCAKKyAgICA5NzEyLCA5NzE2LCA5NzIyLCA5NzI3LCA5NzMyLCA5NzM3LCA5NzQyLCA5NzQ4LCA5NzUzLCA5NzU4LCA0MjQ5LCA5NzYzLCAKKyAgICA5NzY4LCA5NzcyLCA5Nzc4LCA5NzgzLCA5Nzg5LCA5Nzk0LCA5Nzk5LCA5ODA1LCA5ODEwLCA5NzE3LCA5ODE2LCA5ODIwLCAKKyAgICA5ODI3LCA5ODMzLCA5ODM4LCA5ODQyLCA2NTIyLCA5ODQ3LCA5ODU2LCA5ODYxLCA5ODY2LCA4NjQxLCA4NjQ4LCA5ODcxLCAKKyAgICAyOTAxLCA5ODc1LCA5ODgwLCA5ODg1LCA5ODkwLCA5NzI4LCA5ODk0LCA5ODk5LCA5OTA0LCA5NzMzLCA5OTA4LCA5NzM4LCAKKyAgICA5OTEzLCA5OTIwLCA5OTI3LCA5OTMzLCA5OTQwLCA5OTQ2LCA5OTUyLCA5OTU3LCA5OTY0LCA5OTY5LCA5OTc0LCA5OTc5LCAKKyAgICA5OTg1LCA5NzQzLCA5NzQ5LCA5OTkxLCA5OTk3LCAxMDAwMiwgMTAwMDcsIDEwMDE1LCA5NzU0LCAxMDAyMCwgMTExMiwgCisgICAgMTAwMjMsIDEwMDMxLCAxMDAzNywgMTAwNDMsIDEwMDUyLCAxMDA2MCwgMTAwNjgsIDEwMDc2LCAxMDA4NCwgMTAwOTIsIAorICAgIDEwMTAwLCAxMDEwOCwgMTAxMTYsIDEwMTI1LCAxMDEzNCwgMTAxNDIsIDEwMTUxLCAxMDE2MCwgMTAxNjksIDEwMTc4LCAKKyAgICAxMDE4NywgMTAxOTYsIDEwMjA1LCAxMDIxNCwgMTAyMjMsIDEwMjMyLCAxMDI0MCwgMTAyNDUsIDEwMjUxLCAxMDI1OSwgCisgICAgMTAyNjYsIDEwMjgxLCAxMDI5OCwgMTAzMTcsIDEwMzI2LCAxMDMzNCwgMTAzNDksIDEwMzYwLCAxMDM2OCwgMTAzNzgsIAorICAgIDEwMzg4LCAxMDM5NiwgMTA0MDIsIDEwNDE0LCAxMDQyMywgMTA0MzEsIDEwNDM4LCAxMDQ0NSwgMTA0NTIsIDEwNDU4LCAKKyAgICAxMDQ2MywgMTA0NzMsIDEwNDgxLCAxMDQ5MSwgMTA0OTgsIDEwNTA4LCAxMDUxOCwgMTA1MjgsIDEwNTM2LCAxMDU0MywgCisgICAgMTA1NTIsIDEwNTYyLCAxMDU3NiwgMTA1OTEsIDEwNjAwLCAxMDYwOCwgMTA2MTMsIDEwNjE3LCAxMDYyNiwgMTA2MzIsIAorICAgIDEwNjM3LCAxMDY0NywgMTA2NTcsIDEwNjY3LCAxMDY3MiwgMTA2NzYsIDEwNjg1LCAxMDY5MCwgMTA3MDYsIDEwNzIzLCAKKyAgICAxMDczMywgMTA3NDQsIDEwNzU3LCAxMDc2NSwgMTA3NzgsIDEwNzkwLCAxMDc5OCwgMTA4MDMsIDEwODA3LCAxMDgxMywgCisgICAgMTA4MTgsIDEwODI2LCAxMDgzNCwgMTA4NDEsIDEwODQ2LCAxMDg1NCwgMTA4NjQsIDEwODcwLCAxMDg3NCwgMTA4NzcsIAorICAgIDEwODgxLCAxMDg4NywgMTA4OTQsIDEwODk4LCAxMDkwNiwgMTA5MTUsIDEwOTIzLCAxMDkzMCwgMTA5MzUsIDEwOTQwLCAKKyAgICAxMDk0NCwgMTA5NDgsIDEwOTU2LCAxMDk3MSwgMTA5ODcsIDEwOTkzLCAxMTAwMSwgMTEwMTAsIDExMDE4LCAxMTAyNCwgCisgICAgMTEwMjgsIDExMDM1LCAxMTA0NiwgMTEwNTAsIDExMDUzLCAxMTA1OSwgOTc1OSwgMTEwNjQsIDExMDcwLCAxMTA3NywgCisgICAgMTEwODMsIDExMDg4LCAxMTA5NSwgMTExMDIsIDExMTA5LCAxMTExNiwgMTExMjMsIDExMTMwLCAxMTEzNywgMTExNDQsIAorICAgIDExMTQ5LCAxMDI5NCwgMTExNTQsIDExMTYwLCAxMTE2NywgMTExNzQsIDExMTc5LCAxMTE4NiwgMTExOTUsIDExMTk5LCAKKyAgICAxMTIxMSwgODY3OSwgMTEyMTUsIDExMjE4LCAxMTIyMiwgMTEyMjYsIDExMjMwLCAxMTIzNCwgMTEyNDAsIDExMjQ2LCAKKyAgICAxMTI1MSwgMTEyNTcsIDExMjYyLCAxMTI2NywgMTEyNzMsIDExMjc4LCAxMTI4MywgOTUxNCwgMTEyODgsIDExMjkyLCAKKyAgICAxMTI5NiwgMTEzMDAsIDExMzA1LCAxMTMxMCwgMTEzMTUsIDExMzIzLCAxMTMyOSwgMTEzMzQsIDExMzM4LCAxMTM0MiwgCisgICAgMTEzNDksIDExMzU0LCAxMTM2MiwgMTEzNjksIDExMzc0LCAxMTM3OCwgMTEzODEsIDExMzg3LCAxMTM5NCwgMTEzOTgsIAorICAgIDExNDAxLCAxMTQwNiwgMTE0MTAsIDQyODgsIDExNDE2LCAxMTQyNSwgNDYsIDExNDMzLCAxMTQzOSwgMTE0NDQsIDExNDQ5LCAKKyAgICAxMTQ1NywgMTE0NjQsIDExNDY5LCA5NTI5LCAxMTQ3NSwgMTE0ODEsIDExNDg2LCAxMTQ5MCwgMTE0OTMsIDExNTA4LCAKKyAgICAxMTUyNywgMTE1MzksIDExNTUyLCAxMTU2NSwgMTE1NzgsIDExNTkyLCAxMTYwNSwgMTE2MjAsIDExNjI3LCA5NzY0LCAKKyAgICAxMTYzMywgMTE2NDcsIDExNjUyLCAxMTY1OCwgMTE2NjMsIDExNjcxLCAxMTY3NiwgODQzMywgMTE2ODEsIDExNjg0LCAKKyAgICAxMTY5MiwgMTE2OTksIDExNzA0LCAxMTcwOCwgMTE3MTQsIDI5MDYsIDEwMzc2LCAxMTcxOCwgMTE3MjIsIDExNzI4LCAKKyAgICAxMTczNCwgMTE3MzksIDExNzQ1LCAxMTc1MCwgOTc3MywgMTE3NTYsIDExNzYyLCAxMTc2NywgMTE3NzIsIDExNzgwLCAKKyAgICAxMTc4NiwgMTE3OTksIDExODA3LCAxMTgxNCwgMTE4MjAsIDk3NzksIDExODI2LCAxMTgzNCwgMTE4NDIsIDExODQ5LCAKKyAgICAxMTg2MiwgMTE4NzUsIDExODg3LCAxMTg5NywgMTE5MDksIDExOTE3LCAxMTkyNCwgMTE5MzYsIDExOTQzLCAxMTk1MywgCisgICAgMTE5NjIsIDExOTcxLCAxMTk3OSwgMTE5ODYsIDExOTkxLCAxMTk5NywgOTc4NCwgMTIwMDIsIDEyMDA4LCAxMjAxMywgCisgICAgMTIwMTgsIDk3OTAsIDEyMDIzLCAxMjAyNiwgMTIwMzMsIDEyMDM5LCAxMjA1MiwgOTE1NywgMTIwNjMsIDEyMDY5LCAKKyAgICAxMjA3OCwgMTIwODYsIDEyMDkzLCAxMjA5OSwgMTIxMTAsIDEyMTE2LCAxMjEyMSwgMzgzNSwgMTIxMjksIDEyMTM0LCAKKyAgICAxMTUwMCwgMTIxNDAsIDEyMTQ3LCAxMjE1MiwgOTc5NSwgMTIxNTgsIDEyMTYzLCAxMjE3MCwgMTIxNzYsIDEyMTgyLCAKKyAgICAxMjE4NywgMTIxOTUsIDEyMjAzLCAxMjIxMCwgMTIyMTQsIDEyMjI2LCAxMjI0MCwgMTIyNTAsIDEyMjU1LCAxMjI1OSwgCisgICAgMTIyNzAsIDEyMjc2LCAxMjI4MSwgMTIyODYsIDk4MDAsIDEyMjkwLCA5ODA2LCAxMjI5NSwgMTIyOTgsIDEyMzAzLCAKKyAgICAxMjMxNSwgMTIzMjIsIDEyMzI3LCAxMjMzMSwgMTIzMzksIDEyMzQ0LCAxMjM0OCwgMTIzNTMsIDEyMzU3LCAxMjM2NCwgCisgICAgMTIzNzAsIDk4MTEsIDk3MTgsIDEyMzc3LCAyOTExLCAxMiwgMTIzODQsIDEyMzg5LCAxMjM5MywgMTIzOTcsIDEyNDAzLCAKKyAgICAxMjQxMSwgMTI0MjEsIDEyNDI2LCAxMjQzMSwgMTI0MzgsIDEyNDQ1LCAxMjQ0OSwgMTI0NjAsIDEyNDcwLCAxMjQ3OSwgCisgICAgMTI0ODgsIDEyNTAwLCAxMjUwNSwgMTI1MDksIDEyNTE3LCAxMjUzMSwgMTI1MzUsIDEyNTM4LCAxMjU0NiwgMTI1NTMsIAorICAgIDEyNTYxLCAxMjU2NSwgMTI1NzYsIDEyNTgwLCAxMjU4NywgMTI1OTIsIDEyNTk2LCAxMjYwMiwgMTI2MDcsIDEyNjEzLCAKKyAgICAxMjYxOCwgMTI2MjMsIDEyNjI3LCAxMjYzMywgMTI2MzgsIDEyNjQ5LCAxMjY1MywgMTI2NTYsIDEyNjYyLCAxMjY2NywgCisgICAgMTI2NzMsIDEyNjc5LCAxMjY4NiwgMTI2OTcsIDEyNzA3LCAxMjcxNywgMTI3MjYsIDEyNzMzLCAxMjc0MiwgMTI3NDYsIAorICAgIDk4MjEsIDk4MjgsIDk4MzQsIDk4MzksIDEyNzUyLCAxMjc1OCwgMTI3NjQsIDEyNzY5LCAxMjc3NSwgOTg0MywgMTI3ODEsIAorICAgIDEyNzg0LCAxMjc5MSwgMTI3OTYsIDEyODExLCAxMjgyNywgMTI4NDIsIDEyODUwLCAxMjg1NiwgMTI4NjEsIDk3NiwgMzg3LCAKKyAgICAxMjg2NiwgMTI4NzQsIDEyODgxLCAxMjg4NywgMTI4OTIsIDEyODk3LCA5ODQ4LCAxMjg5OSwgMTI5MDMsIDEyOTA4LCAKKyAgICAxMjkxMiwgMTI5MjIsIDEyOTI3LCAxMjkzMSwgMTI5NDAsIDEyOTQ0LCAxMjk0NywgMTI5NTQsIDk4NTcsIDEyOTU5LCAKKyAgICAxMjk2MiwgMTI5NzAsIDEyOTc3LCAxMjk4NSwgMTI5ODksIDEyOTkzLCAxMzAwMCwgMTMwMDksIDEzMDE2LCAxMzAxMiwgCisgICAgMTMwMjMsIDEzMDI3LCAxMzAzMywgMTMwMzcsIDEzMDQxLCAxMzA0NSwgMTMwNTEsIDEzMDYxLCAxMzA2OSwgMTMwNzYsIAorICAgIDEzMDgwLCAxMzA4OCwgMTMwOTIsIDEzMDk5LCAxMzEwMywgMTMxMDgsIDEzMTEyLCAxMzExOSwgMTMxMjUsIDEzMTMzLCAKKyAgICAxMzEzOSwgMTMxNDQsIDEzMTU0LCAxMzE1OSwgMTMxNjQsIDEzMTY4LCAxMzE3MiwgMTMxODAsIDQxMzgsIDEzMTg4LCAKKyAgICAxMzE5MywgOTg2MiwgMTMxOTcsIDEzMjAxLCAxMzIwNCwgMTMyMTIsIDEzMjE5LCAxMzIyMywgNjMyMiwgMTMyMjcsIAorICAgIDEzMjMyLCAxMzIzNywgMTMyNDEsIDEzMjUyLCAxMzI2MiwgMTMyNjcsIDEzMjczLCAxMzI3OCwgMTMyODIsIDEzMjg1LCAKKyAgICAxMzI5MywgMTMyOTgsIDEzMzAzLCAxMzMxMCwgMTMzMTUsIDk4NjcsIDEzMzIwLCAxMzMyNCwgMTMzMzEsIDE3MTgsIDY0ODAsIAorICAgIDEzMzM2LCAxMzM0MSwgMTMzNDYsIDEzMzUxLCAxMzM1NywgMTMzNjIsIDEzMzY4LCAxMzM3MywgMTMzNzgsIDEzMzgzLCAKKyAgICAxMzM4OCwgMTMzOTMsIDEzMzk4LCAxMzQwMywgMTM0MDgsIDEzNDEzLCAxMzQxOCwgMTM0MjMsIDEzNDI4LCAxMzQzMywgCisgICAgMTM0MzgsIDEzNDQzLCAxMzQ0OCwgMTM0NTQsIDEzNDU5LCAxMzQ2NCwgMTM0NjksIDEzNDc0LCAxMzQ3OSwgMTM0ODUsIAorICAgIDEzNDkwLCAxMzQ5NSwgMTM1MDEsIDEzNTA2LCAxMzUxMiwgMTM1MTcsIDEzNTIzLCAxMzUyOCwgMTM1MzMsIDEzNTM4LCAKKyAgICAxMzU0MywgMTM1NDksIDEzNTU0LCAxMzU1OSwgMTM1NjQsIDkzNiwgMTEyLCAxMzU3MiwgMTM1NzYsIDEzNTgxLCAxMzU4NiwgCisgICAgMTM1OTAsIDEzNTk0LCAxMzU5OCwgMTM2MDMsIDEzNjA3LCAxMzYxMiwgMTM2MTYsIDEzNjE5LCAxMzYyMywgMTM2MjcsIAorICAgIDEzNjMzLCAxMzYzOCwgMTM2NDgsIDEzNjU0LCAxMzY2MiwgMTM2NjgsIDEzNjcyLCAxMzY3NiwgMTM2ODMsIDEzNjkxLCAKKyAgICAxMzcwMCwgMTM3MTEsIDEzNzIxLCAxMzcyOCwgMTM3MzUsIDEzNzM5LCAxMzc0OCwgMTM3NTcsIDEzNzY1LCAxMzc3NCwgCisgICAgMTM3ODMsIDEzNzkyLCAxMzgwMSwgMTM4MTEsIDEzODIxLCAxMzgzMSwgMTM4NDEsIDEzODUxLCAxMzg2MCwgMTM4NzAsIAorICAgIDEzODgwLCAxMzg5MCwgMTM5MDAsIDEzOTEwLCAxMzkyMCwgMTM5MzAsIDEzOTM5LCAxMzk0OSwgMTM5NTksIDEzOTY5LCAKKyAgICAxMzk3OSwgMTM5ODksIDEzOTk5LCAxNDAwOCwgMTQwMTgsIDE0MDI4LCAxNDAzOCwgMTQwNDgsIDE0MDU4LCAxNDA2OCwgCisgICAgMTQwNzgsIDE0MDg4LCAxNDA5OCwgMTQxMDcsIDE0MTE3LCAxNDEyNywgMTQxMzcsIDE0MTQ3LCAxNDE1NywgMTQxNjcsIAorICAgIDE0MTc3LCAxNDE4NywgMTQxOTcsIDE0MjA3LCAxNDIxNiwgMTIxOCwgMTQyMjIsIDE0MjI1LCAxNDIyOSwgMTQyMzQsIAorICAgIDE0MjQxLCAxNDI0NywgMTQyNTIsIDE0MjU2LCAxNDI2MSwgMTQyNzAsIDE0Mjc4LCAxNDI4MywgMTQyODcsIDE0MjkxLCAKKyAgICAxNDI5NywgMTQzMDIsIDE0MzA4LCA5ODc2LCAxNDMxMywgMTQzMTgsIDE0MzI3LCA5ODg2LCAxNDMzMiwgMTQzMzUsIAorICAgIDE0MzQxLCAxNDM0OSwgOTg5MSwgMTQzNTYsIDE0MzYwLCAxNDM2NCwgMTQzNjksIDE0MzczLCAxNDM4MywgMTQzODksIAorICAgIDE0Mzk1LCAxNDQwMCwgMTQ0MDksIDE0NDE3LCAxNDQyNCwgMTQ0MzEsIDE0NDM2LCAxNDQ0MywgMTQ0NDgsIDE0NDUyLCAKKyAgICAxNDQ1NSwgMTQ0NjYsIDE0NDc2LCAxNDQ4NSwgMTQ0OTMsIDE0NTA0LCAxNDUxNiwgMTQ1MjYsIDE0NTMxLCAxNDUzNSwgCisgICAgMTQ1NDAsIDE0NTQ1LCAxNDU0OSwgMTQ1NTUsIDE0NTYzLCAxNDU3MCwgMTQ1ODEsIDE0NTg2LCAxNDU5NiwgMTQ2MDUsIAorICAgIDE0NjA5LCAxNDYxMiwgMTQ2MTksIDE0NjI5LCAxNDYzOCwgMTQ2NDUsIDE0NjQ5LCAxNDY1NiwgMTQ2NjIsIDE0NjY3LCAKKyAgICAxNDY3MiwgMTQ2NzYsIDE0Njg1LCAxNDY5MCwgMTQ2OTQsIDE0NzAwLCAxNDcwNCwgMTQ3MDksIDE0NzEzLCAxNDcyMCwgCisgICAgMTQ3MjcsIDE0NzMxLCAxNDc0MCwgMTQ3NDgsIDE0NzU2LCAxNDc2MywgMTQ3NzEsIDE0NzgzLCAxNDc5NCwgMTQ4MDQsIAorICAgIDE0ODExLCAxNDgxNywgMTQ4MjYsIDE0ODM3LCAxNDg0NiwgMTQ4NTgsIDE0ODcwLCAxNDg4MiwgMTQ4OTIsIDE0OTAxLCAKKyAgICAxNDkxMCwgMTQ5MTgsIDE0OTI1LCAxNDkzNCwgMTQ5NDIsIDE0OTQ2LCAxNDk1MSwgMTQ5NTcsIDE0OTYzLCAxNDk2OCwgCisgICAgMTQ5NzMsIDgxMTcsIDE0OTc3LCAxNDk3OSwgMTQ5ODMsIDE0OTg4LCAxNDk5NSwgMTUwMDEsIDE1MDA3LCAxNTAxNiwgCisgICAgMTUwMjAsIDE1MDI2LCAxNTAzNCwgMTUwNDEsIDE1MDUwLCAxNTA1OSwgMTUwNjgsIDE1MDc3LCAxNTA4NiwgMTUwOTUsIAorICAgIDE1MTA0LCAxNTExMywgMTUxMjMsIDE1MTMzLCAxNTE0MiwgMTUxNDgsIDE1MTU1LCAxNTE2MiwgMTUxNjgsIDE1MTgyLCAKKyAgICAxNTE4OCwgMTUxOTUsIDE1MjAzLCAxNTIxMiwgMTUyMjAsIDE1MjI2LCAxNTIzNSwgMTUyNDQsIDE1MjU1LCAxNTI2NSwgCisgICAgMTUyNzMsIDE1MjgwLCAxNTI4OCwgMTUyOTcsIDE1MzEwLCAxNTMxOSwgMTUzMjcsIDE1MzM0LCAxNTM0NywgMTUzNTMsIAorICAgIDE1MzU5LCAxNTM2OSwgMTUzNzgsIDE1Mzg3LCAxNTM5MiwgMTUzOTYsIDE1NDAyLCAxNTQwOCwgMTU0MTMsIDE1NDIwLCAKKyAgICAxNTQyNywgOTUyOCwgMTU0MzIsIDE1NDM3LCAxNTQ0NCwgMTU0NTIsIDE1NDU3LCAxNTQ2NCwgMTU0NjksIDE1NDgxLCAKKyAgICAxMzYyOSwgMTU0ODYsIDE1NDk0LCAxNTUwMCwgMTU1MDUsIDE1NTEzLCAxNTUyMSwgMTU1MjgsIDE1NTM2LCAxNTU0MiwgCisgICAgMTU1NTAsIDE1NTU4LCAxNTU2NCwgMTU1NjksIDE1NTc1LCAxNTU4MiwgMTU1ODgsIDE1NTkzLCAxNTU5NywgMTU2MDgsIAorICAgIDE1NjE2LCAxNTYyMiwgMTU2MjcsIDE1NjM0LCAxNTY0MywgMTU2NDksIDE1NjU0LCAxNTY2MiwgMTU2NzEsIDE1Njg1LCAKKyAgICA0MDgyLCAxNTY4OSwgMTU2OTQsIDE1Njk5LCAxNTcwNSwgMTU3MTAsIDE1NzE1LCAxNTcxOSwgMTU3MjQsIDE1NzI5LCAKKyAgICAxNTczNCwgODExNiwgMTU3MzksIDE1NzQ0LCAxNTc0OSwgMTU3NTQsIDE1NzU5LCAxNTc2MywgMTU3NjgsIDE1NzczLCAKKyAgICAxNTc3OCwgMTU3ODMsIDE1Nzg5LCAxNTc5NSwgMTU4MDAsIDE1ODA0LCAxNTgxMCwgMTU4MTUsIDE1ODIwLCAxNTgyNSwgCisgICAgOTg5NSwgMTU4MzAsIDE1ODM1LCAxNTg0MCwgMTU4NDUsIDE1ODUwLCAxNTg2NywgMTU4ODUsIDE1ODk3LCAxNTkxMCwgCisgICAgMTU5MjcsIDE1OTQzLCAxNTk2MCwgMTU5NzAsIDE1OTg5LCAxNjAwMCwgMTYwMTEsIDE2MDIyLCAxNjAzMywgMTYwNDUsIAorICAgIDE2MDU2LCAxNjA2NywgMTYwODQsIDE2MDk1LCAxNjEwNiwgMTYxMTEsIDk5MDAsIDE2MTE2LCAxNjEyMCwgMjQwNSwgCisgICAgMTYxMjQsIDE2MTI3LCAxNjEzMywgMTYxNDEsIDE2MTQ5LCAxNjE1NSwgMTYxNjQsIDE2MTcxLCAxNjE3NiwgMTYxODQsIAorICAgIDE2MTkyLCAxNjE5OSwgMTYyMDMsIDE2MjA4LCAxNjIxNCwgMTYyMjEsIDE2MjI5LCAxNjIzNiwgMTYyNDgsIDE2MjU1LCAKKyAgICAxNjI2MSwgMTYyNjksIDE2Mjc0LCAxNjI4MCwgMTI4MDUsIDE2Mjg2LCAxNjI5NSwgMTYzMDEsIDE2MzA2LCAxNjMxNCwgCisgICAgMTYzMjMsIDE2MzMxLCAxNjMzOCwgMTYzNDQsIDE2MzUyLCAxNjM1OSwgMTYzNjUsIDE2MzcxLCAxNjM3OCwgMTYzODUsIAorICAgIDE2MzkxLCAxNjM5NywgMTY0MDYsIDE2NDE0LCAxNjQyNCwgMTY0MzEsIDE2NDM3LCAxNjQ0NSwgMTY0NTEsIDE2NDU5LCAKKyAgICAxNjQ2NywgMTY0NzQsIDE2NDg3LCAxNjQ5NCwgMTY1MDMsIDE2NTEyLCAxNjUyMSwgMTY1MjksIDE2NTM5LCAxNjU0NiwgCisgICAgMTY1NTEsIDM3MjYsIDE2NTU4LCAxNjU2MywgMTMzNCwgMTY1NjcsIDE1NzQwLCAxNjU3MSwgMTY1NzcsIDE2NTgxLCAKKyAgICAxNjU4OSwgMTY2MDEsIDE2NjA2LCAxNjYxMywgMTY2MTksIDE2NjI0LCAxNjYzMSwgMTU3NDUsIDE2NjM1LCAxNjYzOSwgCisgICAgMTY2NDMsIDE1NzUwLCAxNjY0NywgMTU3NTUsIDE2NjUxLCAxNjY1OCwgMTY2NjMsIDE2NjY3LCAxNjY3NCwgMTY2NzgsIAorICAgIDE2Njg2LCAxNjY5MywgMTY2OTgsIDE2NzAyLCAxNjcwOSwgMTY3MjYsIDE2NzM1LCAxNjczOSwgMTY3NDIsIDE2NzUwLCAKKyAgICAxNjc1NiwgMTY3NjEsIDM4MDQsIDE2NzY1LCAxNjc2NywgMTY3NzUsIDE2NzgyLCAxNjc5MiwgMTY4MDQsIDE2ODA5LCAKKyAgICAxNjgxMywgMTY4MTksIDE2ODI0LCAxNjgzMiwgMTY4MzYsIDE2ODQyLCAxNjg0NywgMTY4NTMsIDE2ODU2LCAxNjg2MywgCisgICAgMTY4NzEsIDE2ODc4LCAxNjg4NCwgMTY4ODksIDE2ODk1LCAxNjkwMCwgMTY5MDcsIDE2OTEzLCAxNjkxOCwgMTY5MjUsIAorICAgIDE2OTMwLCAxNjkzNCwgMTY5NDAsIDE2OTQ0LCAxNjk1MSwgMTY5NTcsIDE2OTYyLCAxNjk2OCwgMTY5NzYsIDE2OTg0LCAKKyAgICAxNjk5MSwgMTY5OTcsIDE3MDAyLCAxNzAwOCwgMTcwMTQsIDE3MDIyLCAxNzAyNywgMTcwMzUsIDE3MDQxLCAxNzA0NywgCisgICAgMTcwNTIsIDE3MDU5LCAxNzA2NCwgMTcwNjgsIDE3MDc0LCAxNzA3OSwgMTcwODYsIDE3MDkxLCAxNzA5NywgMTcxMDAsIAorICAgIDE3MTA2LCAxNzExMiwgMTcxMTUsIDE3MTE5LCAxNzEyMywgMTcxMzUsIDE3MTQxLCAxNzE0NiwgMTcxNTMsIDE3MTU5LCAKKyAgICAxNzE2NSwgMTcxNzYsIDE3MTg2LCAxNzE5NSwgMTcyMDMsIDE3MjEwLCAxNzIyMSwgMTcyMzEsIDE3MjQxLCAxNzI0OSwgCisgICAgMTcyNTIsIDE1NzY5LCAxNzI1NywgMTcyNjIsIDE1Nzc0LCAxNTkxNSwgMTcyNzAsIDE3MjgzLCAxNzI5OCwgMTczMDksIAorICAgIDE1OTMyLCAxNzMyNywgMTczNDAsIDE3MzUzLCAxNzM2NCwgMTE1MTUsIDE3Mzc1LCAxNzM4OCwgMTc0MDcsIDE3NDE4LCAKKyAgICAxNzQyOSwgMTc0NDAsIDI2NzcsIDE3NDUzLCAxNzQ1NywgMTc0NjUsIDE3NDc2LCAxNzQ4NywgMTc0OTUsIDE3NTEwLCAKKyAgICAxNzUyNSwgMTc1MzYsIDE3NTQzLCAxNzU0OSwgMTc1NTcsIDE3NTYxLCAxNzU2NywgMTc1NzAsIDE3NTgzLCAxNzU5NSwgCisgICAgMTc2MDUsIDE3NjEzLCAxNzYyMCwgMTc2MjgsIDE3NjM4LCAxNzY0MywgMTc2NTAsIDE3NjU1LCAxNzY2MiwgMTc2NzMsIAorICAgIDE3NjgzLCAxNzY4OSwgMTc2OTQsIDE3Njk5LCAxNTc3OSwgMTc3MDMsIDE3NzA5LCAxNzcxNSwgMTc3MjAsIDE3NzI1LCAKKyAgICAxNzczMCwgMTc3MzQsIDE1Nzg0LCAxNTc5MCwgMTc3MzgsIDE1Nzk2LCAxNzc0MywgMTc3NTEsIDE3NzU2LCAxNzc2MCwgCisgICAgMTc3NjcsIDE3Nzc1LCAxNzc4NCwgMTc3OTEsIDE3Nzk1LCA5NzM5LCAxNzc5OSwgMTc4MDEsIDE3ODA2LCAxNzgxMSwgCisgICAgMTc4MTcsIDE3ODIyLCAxNzgyNywgMTc4MzIsIDE3ODM3LCAxNzg0MSwgMTc4NDcsIDE3ODUzLCAxNzg1OCwgMTc4NjQsIAorICAgIDE3ODY5LCAxNzg3NCwgMTc4NzgsIDE3ODg0LCAxNzg4OSwgMTc4OTMsIDE3ODk4LCAxNzkwMywgMTc5MTUsIDE3OTIwLCAKKyAgICAxNzkyNiwgMTc5MzEsIDE3OTM2LCAxNzk0MiwgMTc5NDgsIDE3OTUzLCAxNzk1OCwgMTc5NjMsIDE3OTcwLCAxNzk3NiwgCisgICAgMTc5ODcsIDE3OTk0LCAxNzk5OSwgMTgwMDMsIDE4MDA3LCAxODAxMCwgMTgwMTgsIDE4MDIzLCAxODAyOSwgMTgwMzYsIAorICAgIDE4MDQzLCAxODA0OSwgMTgwNTQsIDE4MDU5LCAxODA2NCwgMTgwNzEsIDE4MDgxLCAxODA4OSwgMTgwOTQsIDE4MTAxLCAKKyAgICAxODEwNywgMTgxMTYsIDE4MTI2LCAxODEzNiwgMTgxNTAsIDE4MTY0LCAxODE3OCwgMTgxOTIsIDE4MjA3LCAxODIyMiwgCisgICAgMTgyMzksIDE4MjU3LCAxODI3MCwgMTgyNzYsIDE4MjgxLCAxODI4NiwgMTgyOTAsIDE4Mjk4LCAxODMwMywgMTgzMTEsIAorICAgIDE4MzE3LCAxODMyMywgMTgzMjgsIDE4MzMzLCAxODMzNywgMTgzNDIsIDE4MzQ2LCAxODM1MSwgMTgzNTUsIDE4MzY2LCAKKyAgICAxODM3MiwgMTgzNzcsIDE4MzgyLCAxODM4OSwgMTgzOTQsIDE4Mzk4LCAzNjg5LCAxODQwMywgMTg0MDksIDE4NDE2LCAKKyAgICAxNTgwNSwgMTg0MjIsIDE4NDI2LCAxODQzMiwgMTg0MzcsIDE4NDQyLCAxODQ0NiwgMTg0NTIsIDE4NDU3LCAxODQ2MiwgCisgICAgMTg0NjksIDE4NDc0LCAxNDM4NSwgMTg0NzgsIDE4NDgzLCAxODQ4NywgMTg0OTIsIDE4NDk4LCAxODUwNCwgMTg1MTEsIAorICAgIDE4NTIxLCAxODUyOSwgMTg1MzYsIDE4NTQxLCAxODU0NSwgMTg1NTQsIDE4NTYyLCAxODU2OSwgMTg1NzYsIDE4NTgyLCAKKyAgICAxODU4NywgMTg1OTMsIDE4NTk4LCAxODYwMywgMTg2MDksIDE4NjE0LCAxODYyMCwgMTg2MjUsIDE4NjMxLCAxODYzNywgCisgICAgMTg2NDQsIDE4NjUwLCAxODY1NSwgMTg2NjAsIDk5NjUsIDE4NjY5LCAxODY3MiwgMTg2ODAsIDE4Njg2LCAxODY5MSwgCisgICAgMTg2OTYsIDE4NzA2LCAxODcxMywgMTg3MTksIDE4NzI0LCAxODcyOSwgMTg3MzUsIDE4NzQwLCAxODc0NiwgMTg3NTEsIAorICAgIDE4NzU3LCAxODc2MywgMTg3NjksIDE4Nzc0LCAxODc4MiwgMTg3ODksIDE4Nzk0LCAxODc5OSwgMTg4MDUsIDE4ODEwLCAKKyAgICAxODgxNCwgMTg4MjMsIDE4ODM0LCAxODg0MSwgMTg4NDgsIDE4ODU2LCAxODg2MywgMTg4NjgsIDE4ODczLCAxODg3OSwgCisgICAgMTg4ODQsIDE4ODkyLCAxODg5OCwgMTg5MDQsIDE4OTExLCAxODkxNywgMTg5MjIsIDE4OTI2LCAxODkzMiwgMTg5MzcsIAorICAgIDE4OTQyLCAxODk0NiwgMTg5NTEsIDE0MDcsIDgxNDEsIDI5MjUsIDE4OTU1LCAxODk1OSwgMTg5NjMsIDE4OTY3LCAxODk3MSwgCisgICAgMTg5NzUsIDE4OTc4LCAxODk4MywgMTg5OTAsIDE4OTk4LCAxNTgxNiwgMTkwMDUsIDE5MDE1LCAxOTAyMywgMTkwMzAsIAorICAgIDE5MDM4LCAxOTA0OCwgMTkwNTcsIDkyNzUsIDE5MDcwLCAxOTA3NSwgMTkwODAsIDE5MDg4LCAxOTA5NSwgMTQ0ODEsIAorICAgIDE0NDkwLCAxOTEwMiwgMTkxMTIsIDE5MTI3LCAxOTEzMywgMTkxNDAsIDE5MTQ3LCAxOTE1MywgMTkxNTksIDE5MTcwLCAKKyAgICAxOTE3OCwgMTkxODYsIDE5MTk2LCAxOTIwNiwgMTU4MjEsIDE5MjE1LCAxOTIyMSwgMTkyMjcsIDE5MjM1LCAxOTI0MywgCisgICAgMTkyNDgsIDE5MjU3LCAxOTI2NSwgMTkyNzcsIDE5Mjg3LCAxOTI5NywgMTkzMDcsIDE5MzE2LCAxOTMyOCwgMTkzMzgsIAorICAgIDE5MzQ4LCAxOTM1OSwgMTkzNjYsIDE5MzcxLCAxOTM4MywgMTkzOTUsIDE5NDA3LCAxOTQxOSwgMTk0MzEsIDE5NDQzLCAKKyAgICAxOTQ1NSwgMTk0NjcsIDE5NDc5LCAxOTQ5MSwgMTk1MDIsIDE5NTE0LCAxOTUyNiwgMTk1MzgsIDE5NTUwLCAxOTU2MiwgCisgICAgMTk1NzQsIDE5NTg2LCAxOTU5OCwgMTk2MTAsIDE5NjIyLCAxOTYzMywgMTk2NDUsIDE5NjU3LCAxOTY2OSwgMTk2ODEsIAorICAgIDE5NjkzLCAxOTcwNSwgMTk3MTcsIDE5NzI5LCAxOTc0MSwgMTk3NTMsIDE5NzY0LCAxOTc3NiwgMTk3ODgsIDE5ODAwLCAKKyAgICAxOTgxMiwgMTk4MjQsIDE5ODM2LCAxOTg0OCwgMTk4NjAsIDE5ODcyLCAxOTg4NCwgMTk4OTUsIDE5OTA3LCAxOTkxOSwgCisgICAgMTk5MzEsIDE5OTQzLCAxOTk1NSwgMTk5NjcsIDE5OTc5LCAxOTk5MSwgMjAwMDMsIDIwMDE1LCAyMDAyNiwgMjAwMzgsIAorICAgIDIwMDUwLCAyMDA2MiwgMjAwNzQsIDIwMDg2LCAyMDA5OCwgMjAxMTAsIDIwMTIyLCAyMDEzNCwgMjAxNDYsIDIwMTU3LCAKKyAgICAyMDE2OSwgMjAxODEsIDIwMTkzLCAyMDIwNSwgMjAyMTcsIDIwMjI5LCAyMDI0MSwgMjAyNTMsIDIwMjY1LCAyMDI3NywgCisgICAgMjAyODgsIDIwMzAwLCAyMDMxMiwgMjAzMjQsIDIwMzM2LCAyMDM0OSwgMjAzNjIsIDIwMzc1LCAyMDM4OCwgMjA0MDEsIAorICAgIDIwNDE0LCAyMDQyNywgMjA0MzksIDIwNDUyLCAyMDQ2NSwgMjA0NzgsIDIwNDkxLCAyMDUwNCwgMjA1MTcsIDIwNTMwLCAKKyAgICAyMDU0MywgMjA1NTYsIDIwNTY5LCAyMDU4MSwgMjA1OTQsIDIwNjA3LCAyMDYyMCwgMjA2MzMsIDIwNjQ2LCAyMDY1OSwgCisgICAgMjA2NzIsIDIwNjg1LCAyMDY5OCwgMjA3MTEsIDIwNzIzLCAyMDczNiwgMjA3NDksIDIwNzYyLCAyMDc3NSwgMjA3ODgsIAorICAgIDIwODAxLCAyMDgxNCwgMjA4MjcsIDIwODQwLCAyMDg1MywgMjA4NjUsIDIwODc4LCAyMDg5MSwgMjA5MDQsIDIwOTE3LCAKKyAgICAyMDkzMCwgMjA5NDMsIDIwOTU2LCAyMDk2OSwgMjA5ODIsIDIwOTk1LCAyMTAwNywgMjEwMjAsIDIxMDMzLCAyMTA0NiwgCisgICAgMjEwNTksIDIxMDcyLCAyMTA4NSwgMjEwOTgsIDIxMTExLCAyMTEyNCwgMjExMzcsIDIxMTQ5LCAyMTE2MCwgMjExNzMsIAorICAgIDIxMTg2LCAyMTE5OSwgMjEyMTIsIDIxMjI1LCAyMTIzOCwgMjEyNTEsIDIxMjY0LCAyMTI3NywgMjEyOTAsIDIxMzAyLCAKKyAgICAyMTMxNSwgMjEzMjgsIDIxMzQxLCAyMTM1NCwgMjEzNjcsIDIxMzgwLCAyMTM5MywgMjE0MDYsIDIxNDE5LCAyMTQzMiwgCisgICAgMjE0NDQsIDIxNDU3LCAyMTQ3MCwgMjE0ODMsIDIxNDk2LCAyMTUwOSwgMjE1MjIsIDIxNTM1LCAyMTU0OCwgMjE1NjEsIAorICAgIDIxNTc0LCAyMTU4NiwgMjE1OTksIDIxNjEyLCAyMTYyNSwgMjE2MzgsIDIxNjUxLCAyMTY2NCwgMjE2NzcsIDIxNjkwLCAKKyAgICAyMTcwMywgMjE3MTYsIDIxNzI4LCAyMTc0MSwgMjE3NTQsIDIxNzY3LCAyMTc4MCwgMjE3OTMsIDIxODA2LCAyMTgxOSwgCisgICAgMjE4MzIsIDIxODQ1LCAyMTg1OCwgMjE4NzAsIDIxODgzLCAyMTg5NiwgMjE5MDksIDIxOTIyLCAyMTkzNSwgMjE5NDgsIAorICAgIDIxOTYxLCAyMTk3NCwgMjE5ODcsIDIyMDAwLCAyMjAxMiwgMjIwMjUsIDIyMDM4LCAyMjA1MSwgMjIwNjQsIDIyMDc3LCAKKyAgICAyMjA5MCwgMjIxMDMsIDIyMTE2LCAyMjEyOSwgMjIxNDIsIDIyMTU0LCAyMjE2NywgMjIxODAsIDIyMTkzLCAyMjIwNiwgCisgICAgMjIyMTksIDIyMjMyLCAyMjI0NSwgMjIyNTgsIDIyMjcxLCAyMjI4NCwgMjIyOTYsIDIyMzA5LCAyMjMyMiwgMjIzMzUsIAorICAgIDIyMzQ4LCAyMjM2MSwgMjIzNzQsIDIyMzg3LCAyMjQwMCwgMjI0MTMsIDIyNDI2LCAyMjQzOCwgMjI0NTEsIDIyNDY0LCAKKyAgICAyMjQ3NywgMjI0OTAsIDIyNTAzLCAyMjUxNiwgMjI1MjksIDIyNTQyLCAyMjU1NSwgMjI1NjgsIDIyNTgwLCAyMjU5MSwgCisgICAgMjI2MDAsIDIyNjA4LCAyMjYxNiwgMjI2MjMsIDIyNjI5LCAyMjYzMywgMjI2MzksIDIyNjQ1LCAyMjY1MywgMjI2NTgsIAorICAgIDIyNjY0LCAyMjY2OSwgMjI2NzMsIDIyNjgyLCA5NzQ0LCAyMjY5MywgMjI3MDAsIDIyNzA4LCAyMjcxNSwgMjI3MjIsIAorICAgIDEyMDQ2LCAyMjcyOSwgMjI3MzYsIDIyNzQ1LCAyMjc1MCwgMjI3NTUsIDgxNjksIDIyNzYyLCAyMjc2NywgMjI3NzAsIAorICAgIDIyNzc1LCAyMjc4MywgMjI3OTAsIDIyNzk3LCAyMjgwNCwgMjI4MTAsIDIyODE5LCAyMjgyOCwgMjI4MzcsIDIyODQzLCAKKyAgICAyMjg1MSwgMjI4NjAsIDIyODY0LCAyMjg3MCwgMjI4NzUsIDIyODg1LCAyMjg5MiwgMjI4OTgsIDIyOTA2LCAyMjkxMiwgCisgICAgMjI5MTksIDIyOTI5LCAyMjkzOCwgMjI5NDIsIDIyOTQ5LCAyMjk1MywgMjI5NTgsIDIyOTY0LCAyMjk3MiwgMjI5NzYsIAorICAgIDIyOTg2LCAxNTgzMSwgMjI5OTUsIDIzMDAxLCAyMzAwNSwgMjMwMTQsIDIzMDI0LCAxNTgzNiwgMjMwMzAsIDIzMDM3LCAKKyAgICAyMzA0OCwgMjMwNTYsIDIzMDY2LCAyMzA3NSwgMjMwODMsIDk0OTMsIDIzMDkxLCAyMzA5NiwgMjMxMDIsIDIzMTA3LCAKKyAgICAyMzExMSwgMjMxMTUsIDIzMTE5LCAxMDQ3NywgMjMxMjQsIDIzMTMyLCAyMzEzOSwgMjMxNDgsIDIzMTU1LCAyMzE2MiwgCisgICAgMjMxNjgsIDExOTY2LCAyMzE3NSwgMjMxODEsIDIzMTg1LCAyMzE5MSwgMjMxOTgsIDIzMjA0LCAyMzIxMiwgMjMyMTgsIAorICAgIDIzMjI1LCAyMzIzMSwgMjMyMzcsIDIzMjQ2LCAyMzI1MCwgMjMyNTgsIDIzMjY3LCAyMzI3NCwgMjMyNzksIDIzMjgzLCAKKyAgICAyMzI5NCwgMjMyOTksIDIzMzA0LCAyMzMxMCwgMjMzMTUsIDIzMzI4LCA4MzczLCAyMzMzMiwgMjMzMzgsIDIzMzQ0LCAKKyAgICAyMzM0OSwgMjMzNTcsIDIzMzYxLCAyMzM2OCwgMjMzNzcsIDIzMzgyLCAxNjEwNywgMjMzOTAsIDIzMzk0LCAyMzQwNiwgCisgICAgMjM0MTEsIDIzNDE1LCAyMzQxOCwgMjM0MjQsIDIzNDMwLCAyMzQzNiwgMjM0NDEsIDIzNDQ1LCAyMzQ0OCwgMjM0NTksIAorICAgIDIzNDY0LCAxMDAxNiwgMjM0NzEsIDIzNDc2LCAxMjI0LCAxMDAyMSwgMjM0ODEsIDIzNDg2LCAyMzQ5MSwgMjM0OTYsIAorICAgIDIzNTAxLCAyMzUwNiwgMjM1MTEsIDIzNTE2LCAyMzUyMSwgMjM1MjYsIDIzNTMxLCAyMzUzNiwgMjM1NDIsIDIzNTQ3LCAKKyAgICAyMzU1MiwgMjM1NTcsIDIzNTYyLCAyMzU2NywgMjM1NzIsIDIzNTc3LCAyMzU4MiwgMjM1ODcsIDIzNTkzLCAyMzU5OSwgCisgICAgMjM2MDQsIDIzNjA5LCAyMzYxNCwgMjM2MTksIDIzNjI0LCAyMzYyOSwgMjM2MzQsIDIzNjM5LCAyMzY0NCwgMjM2NTAsIAorICAgIDIzNjU1LCAyMzY2MCwgMjM2NjUsIDIzNjcxLCAyMzY3NywgMjM2ODIsIDIzNjg3LCAyMzY5MiwgMjM2OTcsIDIzNzAyLCAKKyAgICAyMzcwNywgMjM3MTIsIDIzNzE3LCAyMzcyMywgMjM3MjgsIDIzNzMzLCAyMzczOCwgMjM3NDMsIDIzNzQ5LCAyMzc1NCwgCisgICAgMjM3NTksIDIzNzYzLCAxMzMwLCAxNDAsIDIzNzcxLCAyMzc3NSwgMjM3NzksIDIzNzgzLCAyMzc4OCwgMjM3OTIsIDE0MzkxLCAKKyAgICAyMzMxLCAyMzc5NiwgMjM4MDEsIDIzODA1LCAyMzgxMCwgMjM4MTQsIDIzODE5LCAyMzgyMywgMjM4MjksIDIzODM0LCAKKyAgICAyMzgzOCwgMjM4NDIsIDIzODUwLCAyMzg1NCwgMjM4NTgsIDIzODYzLCAyMzg2OCwgMjM4NzIsIDIzODc4LCAyMzg4MywgCisgICAgMjM4ODcsIDIzODkyLCAyMzg5NywgMjM5MDEsIDIzOTA4LCAyMzkxNSwgMjM5MjIsIDIzOTI3LCAyMzkzMSwgMjM5MzUsIAorICAgIDIzOTQwLCAyMzk0NCwgMjM5NDcsIDIzOTUzLCAyMzk2NiwgMjM5NzEsIDIzOTc3LCAyMzk4NiwgMjM5OTEsIDEwMjQxLCAKKyAgICAyMzk5NiwgMjQwMDUsIDI0MDEwLCAyNDAxMywgMjc0MCwgMjc0NSwgMjQwMTcsIDI0MDIzLCAyNDAyOSwgMzY1MCwgMjQwMzQsIAorICAgIDI0MDM5LCAyNDA0NCwgMjQwNTAsIDI0MDU1LCAxNTI1MSwgMjQwNjAsIDI0MDY1LCAyNDA3MCwgMjQwNzUsIDI0MDgxLCAKKyAgICAyNDA4NiwgMjQwOTEsIDI0MDk3LCAyNDEwMiwgMjQxMDYsIDI0MTExLCAyNDExNiwgMjQxMjEsIDI0MTI2LCAyNDEzMSwgCisgICAgMjQxMzUsIDI0MTQwLCAyNDE0NCwgMjQxNDksIDI0MTU0LCAyNDE1OSwgMjQxNjQsIDI0MTY4LCAyNDE3MywgMjQxNzcsIAorICAgIDI0MTgyLCAyNDE4NywgMjQxOTIsIDI0MTA3LCAyOTM0LCAyNDExMiwgMjQxOTcsIDI0MjA1LCAyNDIxMiwgMTA1NzEsIAorICAgIDI0MjI0LCAyNDIzMiwgMjQyNDIsIDI0MjYwLCAyNDI3OSwgMjQyODgsIDI0Mjk2LCAyNDExNywgMjQzMDMsIDI0MzA4LCAKKyAgICAyNDMxNiwgMjQxMjIsIDI0MzIxLCAyNDMyNiwgMjQzMzQsIDI0MzM5LCAyNDEyNywgMjQzNDQsIDI0MzUyLCAyNDM1NywgCisgICAgMjQzNjEsIDI0MzY4LCAyNDM3NCwgMjQzODMsIDI0MzkxLCAyNDM5NSwgMjQzOTgsIDI0NDA1LCAyNDQwOSwgMjQ0MTMsIAorICAgIDI0NDE4LCAyNDQyNCwgMjQ0MzEsIDI0NDM2LCA5NTIwLCAxNzIzLCAxNzI4LCAyNDQ0MCwgMjQ0NDYsIDI0NDUyLCAyNDQ1NywgCisgICAgMjQ0NjEsIDI0NDY1LCAyNDQ2OSwgMjQ0NzMsIDI0NDc3LCAyNDQ4MSwgMjQ0ODUsIDI0NDg5LCAyNDQ5MiwgMjQ0OTgsIAorICAgIDI0NTA1LCAyNDUxMywgMjQ1MTksIDI0NTI1LCAyNDUzMCwgMjQ1MzUsIDI0NTQxLCAyNDU0NSwgMjQ1NTAsIDE1MTU3LCAKKyAgICAxNTE2NCwgMjQ1NTcsIDI0NTY5LCAyNDU3MiwgMjQ1NzksIDI0NTgzLCAxODA0NSwgMjQ1OTAsIDI0NTk4LCAyNDYwOSwgCisgICAgMjQ2MTgsIDI0NjMxLCAyNDY0MSwgMjQ2NTUsIDI0NjY3LCAyNDY4MSwgMjQ2OTQsIDI0NzA2LCAyNDcxNiwgMjQ3MjgsIAorICAgIDI0NzM0LCAyNDc0MCwgMjQ3NTUsIDI0Nzc5LCAyNDc5NywgMjQ4MTYsIDI0ODI5LCAyNDg0MywgMjQ4NjEsIDI0ODc3LCAKKyAgICAyNDg5NCwgMjQ5MTIsIDI0OTIzLCAyNDk0MiwgMjQ5NTksIDI0OTc5LCAyNDk5NywgMjUwMDksIDI1MDIzLCAyNTAzNywgCisgICAgMjUwNDksIDI1MDY2LCAyNTA4NSwgMjUxMDMsIDI1MTE1LCAyNTEzMywgMjUxNTIsIDE1OTc1LCAyNTE2NSwgMjUxODUsIAorICAgIDI1MTk3LCAxMTU0NiwgMjUyMDksIDI1MjE0LCAyNTIxOSwgMjUyMjQsIDI1MjMwLCAyNTIzNSwgMjUyMzksIDI1MjQ2LCAKKyAgICAyNTI1MiwgMjQyMiwgMjUyNTYsIDI1MjYyLCAyNTI2NiwgMjUyNjksIDI1MjgwLCAyNTI4NCwgMjUyODcsIDI1Mjk1LCAKKyAgICAyNTMwMSwgMjQxNDUsIDI1MzA1LCAyNTMxNCwgMjUzMjUsIDI1MzMxLCAyNTMzNywgMjUzNTIsIDI1MzYxLCAyNTM2OSwgCisgICAgMjUzNzYsIDI1MzgxLCAyNTM4NSwgMjUzOTIsIDI1Mzk4LCAyNTQwNywgMjU0MTUsIDI1NDIyLCAyNTQzMiwgMjU0NDEsIAorICAgIDI1NDUxLCAyNTQ1NiwgMjU0NjUsIDI1NDc0LCAyNTQ4NSwgMjU0OTYsIDQyMDYsIDI1NTA2LCAyNTUxMCwgMjU1MjAsIAorICAgIDI1NTI4LCAyNTUzOCwgMjU1NDksIDI1NTU0LCAyNTU2NCwgMjU1NzIsIDI1NTc5LCAyNTU4NSwgMjU1OTIsIDI1NTk3LCAKKyAgICAyNDE1NSwgMjU2MDEsIDI1NjEwLCAyNTYxNCwgMjU2MTcsIDI1NjIyLCAyNTYzMCwgMjU2MzcsIDI1NjQ2LCAyNTY1NCwgCisgICAgMjU2NjIsIDI1NjcwLCAyNTY4MCwgMjU2ODksIDI1Njk1LCAyNTcwMSwgMjU3MDUsIDI0MTYwLCAyNDE2NSwgMjU3MDksIAorICAgIDI1NzE5LCAyNTcyOSwgMjU3MzksIDI1NzQ3LCAyNTc1NCwgMjU3NjQsIDI1NzcyLCAyNTc4MCwgMjU3ODYsIDI1Nzk0LCAKKyAgICA4NzIsIDI1ODAzLCAxNjE4OCwgNTU3LCAyNTgxNywgMjU4MjYsIDI1ODM0LCAyNTg0NSwgMjU4NTYsIDI1ODY2LCAyNTg3NSwgCisgICAgMjU4ODcsIDI1ODk2LCAyNTkwNSwgMjU5MTIsIDI1OTE4LCAyNTkyOCwgMjU5MzcsIDI1OTQ2LCAyNTk1NCwgMjU5NjQsIAorICAgIDI1OTcyLCAyNTk4MCwgOTk4MiwgMjU5ODYsIDI1OTg5LCAyNTk5MywgMjU5OTgsIDI2MDAzLCAyNjAwNywgMTA2ODYsIAorICAgIDI0MTc4LCAyNDE4MywgMjYwMTUsIDI2MDIxLCAyNjAyNywgMjYwMzIsIDI2MDM3LCAyNjA0MSwgMjYwNDksIDI2MDU1LCAKKyAgICAyNjA2MSwgMjYwNjUsIDM2NzQsIDI2MDczLCAyNjA3OCwgMjYwODMsIDI2MDg3LCAyNjA5MSwgMTA3OTksIDI2MDk4LCAKKyAgICAyNjEwNiwgMjYxMjAsIDI2MTI3LCAyNjEzMywgMTA4MDgsIDEwODE0LCAyNjE0MSwgMjYxNDksIDI2MTU2LCAyNjE2MSwgCisgICAgMjYxNjYsIDI0MTg4LCAyNjE3MiwgMjYxODMsIDI2MTg3LCAyNjE5MiwgMjYyOSwgMjYxOTcsIDI2MjA4LCAyNjIxNCwgCisgICAgMjYyMTksIDI2MjIzLCAyNjIyNywgMjYyMzAsIDI2MjM3LCAyNjI0NCwgMjYyNTAsIDI2MjU3LCAyNjI2MywgMjYyNjcsIAorICAgIDI0MTkzLCAyNjI3MiwgMjYyNzYsIDI2MjgwLCAxNDEyLCA4NTg1LCAyNjI4NSwgMjYyOTAsIDI2Mjk1LCAyNjMwMCwgCisgICAgMjYzMDUsIDI2MzEwLCAyNjMxNSwgMjYzMjAsIDI2MzI1LCAyNjMzMCwgMjYzMzUsIDI2MzQwLCAyNjM0NSwgMjYzNTAsIAorICAgIDI2MzU2LCAyNjM2MSwgMjYzNjYsIDI2MzcxLCAyNjM3NiwgMjYzODEsIDI2Mzg2LCAyNjM5MiwgMjYzOTcsIDI2NDAyLCAKKyAgICAyNjQwNywgMjY0MTIsIDI2NDE3LCAyNjQyMiwgMjY0MjcsIDI2NDMzLCAyNjQzOSwgMjY0NDQsIDI2NDUwLCAyNjQ1NSwgCisgICAgMjY0NjAsIDUsIDI2NDY2LCAyNjQ3MCwgMjY0NzQsIDI2NDc4LCAyNjQ4MywgMjY0ODcsIDI2NDkxLCAyNjQ5NSwgMjY0OTksIAorICAgIDI2NTA0LCAyNjUwOCwgMjY1MTMsIDI2NTE3LCAyNjUyMCwgMjY1MjQsIDI2NTI5LCAyNjUzMywgMjY1MzgsIDI2NTQyLCAKKyAgICAyNjU0NiwgMjY1NTAsIDI2NTU1LCAyNjU1OSwgMjY1NjMsIDI2NTczLCAyNjU3OCwgMjY1ODIsIDI2NTg2LCAyNjU5MSwgCisgICAgMjY1OTYsIDI2NjA1LCAyNjYxMCwgMjY2MTUsIDI2NjE5LCAyNjYyMywgMjY2MzYsIDI2NjQ4LCAyNjY1NywgMjY2NjYsIAorICAgIDI2NjcxLCAyNjY3NywgMjY2ODIsIDI2Njg2LCAyNjY5MCwgMjY3MDAsIDI2NzA5LCAyNjcxNywgMjY3MjMsIDI2NzI4LCAKKyAgICAyNjczMiwgMjY3MzksIDI2NzQ5LCAyNjc1OCwgMjY3NjYsIDExODY4LCAyNjc3NCwgMjY3ODIsIDI2NzkxLCAyNjgwMCwgCisgICAgMjY4MDgsIDI2ODE4LCAyNjgyMywgMjY4MjcsIDI2ODMxLCAyNjgzNCwgMjY4MzYsIDI2ODQwLCAyNjg0NCwgMjY4NDksIAorICAgIDI2ODU0LCAyNjg1OCwgMjY4NjIsIDI2ODY1LCAyNjg2OSwgMjY4NzIsIDI2ODc2LCAyNjg3OSwgMjY4ODIsIDI2ODg2LCAKKyAgICAyNjg5MiwgMjY4OTYsIDI2OTAwLCAyNjkwNCwgMjY5MDgsIDI2OTEzLCAyNjkxOCwgMjY5MjMsIDI2OTI3LCAyNjkzMCwgCisgICAgMjY5MzUsIDI2OTQxLCAyNjk0NiwgMjY5NTIsIDI2OTU3LCAyNjk2MSwgMjY5NjcsIDI2OTcxLCAyNjk3NSwgMjY5ODAsIAorICAgIDI2OTg0LCAyNjk4OSwgMjY5OTQsIDI2OTk4LCAyNzAwMiwgMjcwMDksIDI3MDEzLCAyNzAxNiwgMjcwMjAsIDI3MDI0LCAKKyAgICAyNzAzMCwgMjcwMzYsIDI3MDQwLCAyNzA0NCwgMjcwNDksIDI3MDU2LCAyNzA2MiwgMjcwNjYsIDI3MDc1LCAyNzA3OSwgCisgICAgMjcwODMsIDI3MDg2LCAyNzA5MiwgMjcwOTcsIDI3MTAzLCAxNDU2LCAxNzg3LCAyNzEwOCwgMjcxMTMsIDI3MTE4LCAKKyAgICAyNzEyMywgMjcxMjgsIDI3MTMzLCAyNzEzOCwgMjE1OSwgMjIwNSwgMjcxNDMsIDI3MTQ2LCAyNzE1MCwgMjcxNTQsIAorICAgIDI3MTU5LCAyNzE2MywgMTYyMDAsIDI3MTY3LCAyNzE3MiwgMjcxNzcsIDI3MTgxLCAyNzE4NCwgMjcxODksIDI3MTkzLCAKKyAgICAyNzE5OCwgMjcyMDIsIDE2MjA0LCAyNzIwNywgMjcyMTAsIDI3MjEzLCAyNzIxNywgMjcyMjIsIDI3MjI2LCAyNzIzOSwgCisgICAgMjcyNDMsIDI3MjQ2LCAyNzI1NCwgMjcyNjMsIDI3MjcwLCAyNzI3NSwgMjcyODEsIDI3Mjg3LCAyNzI5NSwgMjczMDIsIAorICAgIDI3MzA5LCAyNzMxMywgMjczMTcsIDI3MzIxLCAyNzMyNiwgMjczMzEsIDI3MzM1LCAyNzM0MywgMjczNDgsIDI3MzYwLCAKKyAgICAyNzM3MSwgMjczNzYsIDI3MzgwLCAyNzM4NywgMjczOTEsIDI3Mzk2LCAyNzQwMiwgMjc0MDUsIDI3NDEwLCAyNzQxNSwgCisgICAgMjc0MTksIDI3NDIzLCAyNzQyNiwgMjc0MzIsIDgyNzIsIDIzMzUsIDI3NDM2LCAyNzQ0MSwgMjc0NTcsIDEwMjg4LCAKKyAgICAyNzQ3NywgMjc0ODYsIDI3NTAyLCAyNzUwNiwgMjc1MTMsIDI3NTE2LCAyNzUyMiwgMjc1MzIsIDI3NTM4LCAyNzU0NywgCisgICAgMjc1NjIsIDI3NTc0LCAyNzU4NSwgMjc1OTMsIDI3NjAyLCAyNzYwOCwgMjc2MTcsIDI3NjI3LCAyNzYzNywgMjc2NDgsIAorICAgIDI3NjU5LCAyNzY2OSwgMjc2NzgsIDI3Njg1LCAyNzY5NCwgMjc3MDIsIDI3NzA5LCAyNzcxNywgMjc3MjQsIDI3NzMxLCAKKyAgICAyNzc0NCwgMjc3NTEsIDI3NzU5LCAyNzc2NiwgMjc3NzIsIDI3Nzc3LCAyNzc4NiwgMjc3OTMsIDI3Nzk5LCAyNzgwNCwgCisgICAgMjc4MTIsIDI3ODE5LCAyNzgyNiwgMjU1MzAsIDI3ODM4LCAyNzg1MCwgMjc4NjQsIDI3ODcyLCAyNzg4MCwgMjc4ODcsIAorICAgIDI3ODk5LCAyNzkwOCwgMjc5MTcsIDI3OTI1LCAyNzkzMywgMjc5NDEsIDI3OTQ4LCAyNzk1NCwgMjc5NjMsIDI3OTcxLCAKKyAgICAyNzk4MSwgMjc5OTAsIDI4MDAwLCAyODAwOSwgMjgwMTgsIDI4MDI2LCAyODAzMSwgMjgwMzUsIDI4MDM4LCAyODA0MiwgCisgICAgMjgwNDYsIDI4MDUwLCAyODA1NCwgMjgwNTgsIDI4MDY0LCAyODA3MCwgMjgwNzUsIDI4MDgzLCAxNjI2MiwgMjgwOTAsIAorICAgIDI4MDk1LCAyODEwMiwgMjgxMDgsIDI4MTE1LCAxNjI3MCwgMjgxMjIsIDI4MTI1LCAyODEzNywgMjgxNDUsIDI4MTUxLCAKKyAgICAyODE1NiwgMjgxNjAsIDI4MTcxLCAxMDc0OSwgMjgxODEsIDI4MTg5LCAyODE5OSwgMjgyMDgsIDI4MjE1LCAyODIyMiwgCisgICAgMjgyMzAsIDI4MjM0LCAxNjI4MSwgMjgyMzcsIDI4MjQ0LCAyODI0OCwgMjgyNTQsIDI4MjU3LCAyODI2NCwgMjgyNzAsIAorICAgIDI4Mjc1LCAyODI4MiwgMjgyODgsIDI4MjkyLCAyODI5NywgMjgzMDEsIDI4MzEwLCAyODMxNywgMjgzMjMsIDgzMzAsIAorICAgIDI4MzMwLCAyODMzOCwgMjgzNDUsIDI4MzUxLCAyODM1NiwgMjgzNjIsIDI4MzY4LCAyODM3NiwgMjgzODIsIDI4Mzg2LCAKKyAgICAyODM4OSwgMjgzOTEsIDI4MDQzLCAyODQwMCwgMjg0MDYsIDI4NDEyLCAyODQyMiwgMjg0MjcsIDI4NDM0LCAyODQ0MCwgCisgICAgMjg0NDUsIDI4NDUwLCAyODQ1NSwgMjg0NTksIDI4NDY0LCAyODQ3MSwgMjg0NzcsIDI4NDg2LCAyODQ5MCwgMjg0OTcsIAorICAgIDI4NTAzLCAyODUxMiwgNDM5OCwgMjg1MTgsIDI4NTI0LCAyODUyOSwgMjg1MzYsIDI4NTQ3LCAyODU1MiwgMjg1NTYsIAorICAgIDI4NTY2LCAyODU3MiwgMjg1NzYsIDI4NTgxLCAyODU5MSwgMjg2MDAsIDI4NjA0LCAyODYxMSwgMjg2MTksIDI4NjI2LCAKKyAgICAyODYzMiwgMjg2MzcsIDI4NjQ1LCAyODY1MiwgMjg2NTcsIDI4NjY0LCAyODY3NiwgMjg2ODUsIDI4Njg5LCAxNDMyMiwgCisgICAgMjg2OTcsIDI4NzA3LCAyODcxMSwgMjcyNTAsIDI4NzIyLCAyODcyNywgMjg3MzEsIDI4NzM4LCAyODc0NSwgMjM4NzQsIAorICAgIDI3OTY4LCAyODc1MCwgMjg3NTQsIDI4NzU3LCAyNDkyOSwgMjg3NjIsIDI4Nzc2LCAyODc5MiwgMjg4MTAsIDI4ODI5LCAKKyAgICAyODg0NiwgMjg4NjQsIDI0OTQ4LCAyODg4MSwgMjg5MDEsIDI0OTY1LCAyODkxMywgMjg5MjUsIDE3MzE0LCAyODkzNywgCisgICAgMjQ5ODUsIDI4OTUxLCAyODk2MywgMTE1NTksIDI4OTc3LCAyODk4MiwgMjg5ODcsIDI4OTkyLCAyODk5OCwgMjkwMDQsIAorICAgIDI5MDEwLCAyOTAxNCwgMjkwMjIsIDI5MDI5LCAyOTAzNCwgMjkwNDQsIDI5MDUwLCAxMTE1NywgMjkwNTYsIDI5MDU4LCAKKyAgICAyOTA2MywgMjkwNzEsIDI5MDc1LCAyODQ2NywgMjkwODEsIDI5MDg4LCAxMjcxMSwgMTI3MjEsIDI5MDk1LCAyOTEwNSwgCisgICAgMjkxMTAsIDI5MTE0LCAyOTExNywgMjkxMjMsIDI5MTMxLCAyOTE0MywgMjkxNTMsIDI5MTY5LCAyOTE4MiwgMjkxOTYsIAorICAgIDE3MzMyLCAyOTIxMCwgMjkyMTcsIDI5MjIxLCAyOTIyNCwgMjkyMjksIDI5MjMzLCAyOTI0MCwgMjkyNDcsIDI5MjU0LCAKKyAgICAyOTI2NCwgMjkyNjksIDI5Mjc0LCAyOTI3OSwgMjkyODcsIDI5Mjk1LCAyOTMwMCwgMjkzMDksIDI5MzE0LCAzMzQyLCAKKyAgICAyOTMxOCwgMjkzMjEsIDI5MzI0LCAyOTMyOSwgMjkzMzYsIDI5MzQxLCAyOTM1NywgMjkzNjUsIDI5MzczLCAxMDA1NiwgCisgICAgMjkzODEsIDI5Mzg2LCAyOTM5MCwgMjkzOTYsIDI5NDAxLCAyOTQwNywgMjk0MTAsIDI5NDE2LCAyOTQyOCwgMjk0MzYsIAorICAgIDI5NDQzLCAyOTQ0OSwgMjk0NTYsIDI5NDY3LCAyOTQ4MSwgMjk0OTQsIDI5NTAwLCAyOTUwOSwgMjk1MTUsIDI5NTI0LCAKKyAgICAyOTUzNiwgMjk1NDcsIDI5NTU3LCAyOTU2NiwgMjk1NzUsIDI5NTgzLCAyOTU5NCwgODMxMiwgMjk2MDEsIDI5NjA4LCAKKyAgICAyOTYxNCwgMjk2MTksIDI5NjI1LCAyOTYzMiwgMjk2NDMsIDI5NjUzLCAyOTY2MywgMjk2NzIsIDI5Njc4LCAyOTY4NSwgCisgICAgMjk2OTAsIDI5Njk4LCAyOTcwNSwgMjk3MTMsIDI5NzIxLCAyOTczMywgNjU4NywgMTAyOCwgMjk3NDAsIDI5NzQ5LCAKKyAgICAyOTc1NywgMjk3NjMsIDI5NzY5LCAyOTc3NCwgMjk3NzgsIDI5NzgxLCAyOTc4NywgMjk3OTQsIDI5Nzk5LCAyOTgwNCwgCisgICAgMjk4MDksIDI5ODEzLCAyOTgyNSwgMjk4MzYsIDI5ODQ1LCAyOTg1MywgMTY0NDYsIDI5ODU4LCAyOTg2NiwgMjk4NzEsIAorICAgIDI5ODc3LCAyOTg4MywgMTI3MDQsIDkxMDMsIDI5ODg4LCAyOTg5MiwgMjk4OTYsIDI5ODk5LCAyOTkwMiwgMjk5MDgsIAorICAgIDI5OTE2LCAyOTkyNCwgMjk5MjgsIDI5OTMyLCAyOTkzNywgMjk5NDAsIDI5OTQ5LCAyOTk1MywgMjk5NTYsIDI5OTY0LCAKKyAgICAyOTk3NSwgMjk5NzksIDI5OTg1LCAyOTk5MSwgMjk5OTUsIDMwMDAxLCAzMDAwOSwgMzAwMzEsIDMwMDU1LCAzMDA2NCwgCisgICAgMzAwNzEsIDMwMDc4LCAzMDA4NCwgMzAwOTIsIDMwMDk4LCAzMDEwMywgMzAxMTQsIDMwMTMyLCAzMDEzOSwgMzAxNDcsIAorICAgIDMwMTUxLCAzMDE1NiwgMzAxNjUsIDMwMTc4LCAzMDE4NiwgMzAxOTgsIDMwMjA5LCAzMDIyMCwgMzAyMzAsIDMwMjQ0LCAKKyAgICAzMDI1MywgMzAyNjEsIDMwMjczLCAxMDMwNSwgMzAyODQsIDMwMjk1LCAzMDMwNywgMzAzMTcsIDMwMzI2LCAzMDMzMSwgCisgICAgMzAzMzUsIDMwMzQzLCAzMDM1NCwgMzAzNjQsIDMwMzY5LCAzMDM3MywgMzAzNzYsIDMwMzc5LCAzMDM4NywgMzAzOTUsIAorICAgIDMwNDA0LCAzMDQxNCwgMzA0MjMsIDMwNDI5LCAzMDQ0MywgMjY5MSwgMzA0NjUsIDMwNDc2LCAzMDQ4NSwgMzA0OTUsIAorICAgIDMwNTA3LCAzMDUxNiwgMzA1MjUsIDMwNTM1LCAzMDU0MywgMzA1NTEsIDMwNTYwLCAzMDU2NSwgMzA1NzYsIDMwNTgxLCAKKyAgICAzMDU5MCwgMzA2MDEsIDMwNjA1LCAzMDYwOCwgMzA2MTgsIDMwNjI3LCAzMDYzNSwgMzA2NDUsIDMwNjU1LCAzMDY2MywgCisgICAgMzA2NzIsIDMwNjc5LCAzMDY4NywgMzA2OTQsIDMwNzAzLCAzMDcxMiwgMzA3MTcsIDMwNzIxLCAzMDcyOSwgMzA3MzYsIAorICAgIDMwNzQ0LCAzMDc1MSwgMzA3NjIsIDMwNzc3LCAzMDc4NCwgMzA3OTAsIDMwODAwLCAzMDgwOSwgMzA4MTUsIDMwODI2LCAKKyAgICAzMDgzMCwgMzA4MzcsIDMwODQxLCAzMDg0NywgMTUzODIsIDMwODUzLCAzMDg1NywgMzA4NjIsIDMwODY4LCAzMDg3NSwgCisgICAgMzA4NzksIDMwODgzLCAzMDg5MSwgMzA4OTksIDMwOTA1LCAzMDkxNCwgMzA5MjEsIDMwOTI2LCAzMDkzMSwgMzA5NDEsIAorICAgIDI1NTk5LCAzMDk0NSwgMzA5NDgsIDMwOTUzLCAzMDk1OCwgMzA5NjMsIDMwOTY4LCAzMDk3MywgMzA5NzgsIDMwOTgzLCAKKyAgICAzMDk4OCwgMzA5OTQsIDMwOTk5LCAzMTAwNCwgMzEwMTAsIDExODAsIDY3NiwgMzEwMTUsIDMxMDI0LCAyMzgzLCAzMTAzMSwgCisgICAgMzEwMzYsIDMxMDQwLCAzMTA0NiwgMTIyOSwgNTkxLCAzMTA1MSwgMjk2LCAzMTA1NSwgMzEwNjQsIDMxMDcyLCAzMTA4MSwgCisgICAgMzEwODksIDMxMTAwLCAzMTEwOCwgMzExMTcsIDMxMTI1LCAzMTEzMCwgMTA4OTUsIDMxMTM0LCAzMTE0MiwgMzExNTAsIAorICAgIDMxMTU1LCAxNjIxNywgMzgyMywgMzExNjEsIDMxMTY3LCAzMTE3MywgNjE2OCwgMzExNzgsIDMxMTgyLCAzMTE4OCwgCisgICAgMzExOTIsIDMxMTk4LCAzMTIwMywgMzEyMTAsIDE0MjIsIDMxMjE2LCAzMTIyMywgMzEyMjcsIDEzMjksIDYxNzYsIDMxMjMyLCAKKyAgICAzMTI0MiwgMzEyNTAsIDMxMjU2LCAzMTI2NiwgMzEyNzUsIDMxMjgzLCAzMTI4OSwgMzEyOTQsIDMxMzAyLCAzMTMwOSwgCisgICAgMTIyNDYsIDMxMzE1LCAzMTMyMiwgMzEzMjcsIDMxMzM0LCAxNDc1LCAyMjUsIDIxNTgsIDMxMzQwLCAzMTM0NiwgMzEzNTMsIAorICAgIDMxMzY0LCAzMTM3NSwgMzEzODMsIDMxMzkwLCAzMTQwMCwgMzE0MDksIDMxNDE3LCAzMTQyNiwgMzE0MzMsIDMxNDQwLCAKKyAgICAzMTQ1MywgMzE0NjAsIDMxNDY2LCAzMTQ3NywgMzE0OTYsIDEyMzQsIDMxNTAxLCAzMTUwNiwgMzE1MTQsIDM3NDEsIAorICAgIDMxNTE4LCAzMTUyMywgMzE1MjcsIDMxNTMxLCAxNDI2LCAyNjg2MywgMzE1NDEsIDMxNTQ1LCAzMTU1MCwgMzE1NTQsIAorICAgIDM2MDgsIDMxNTYwLCAzMTU2OCwgMzE1NzUsIDMxNTg2LCAzMTU5NCwgMzE2MTksIDMxNjI3LCAzMTYzMiwgMzc0MiwgMzUyLCAKKyAgICAzMTYzOCwgMzE2NDYsIDMxNjU0LCAzMTY2MSwgMzE2NjcsIDMxNjcyLCAyMjI3LCAxMTcyNiwgMzE2NzksIDMxNjg1LCAKKyAgICAyODI5MywgMjg1NDIsIDMxNjkxLCA1ODcsIDEwNiwgMzE2OTUsIDMxNjk5LCAzMTcwNSwgNjg5LCA5OTMxLCAzMTcxMCwgCisgICAgMzE3MTcsIDMxNzIzLCAzMTcyNywgMzE3MzEsIDE2MjAsIDMxNzM0LCAzMTczOCwgMTY2OTksIDMxNzQxLCAzMTc0NiwgCisgICAgMzE3NTMsIDMxNzU5LCAzMTc2NCwgMzE3NzIsIDMxNzc5LCAzMTc4NSwgMjQzNDEsIDMxNzg5LCAzMTc5MywgMzE3OTcsIAorICAgIDM4MTIsIDE4MzQ0LCAzMTgwMSwgMzE4MDYsIDMxODEwLCAzMTgxMywgMzE4MjEsIDMxODI5LCAzMTgzNCwgMzE4NDMsIAorICAgIDMxODUxLCAzMTg1NCwgMzE4NjEsIDMxODcxLCAzMTg4MywgMzE4ODgsIDMxODkyLCAzMTkwMCwgMzE5MDcsIDMxOTEzLCAKKyAgICAzMTkyMCwgMzE5MjcsIDMxOTMwLCAzMTkzNCwgMzE5MzgsIDE0MzAsIDMxOTQ4LCAzMTk1MCwgMzE5NTUsIDMxOTYxLCAKKyAgICAzMTk2NywgMzE5NzIsIDMxOTc3LCAzMTk4MiwgMzE5ODcsIDMxOTkyLCAzMTk5NywgMzIwMDIsIDMyMDA3LCAzMjAxMiwgCisgICAgMzIwMTcsIDMyMDIyLCAzMjAyNywgMzIwMzIsIDMyMDM3LCAzMjA0MywgMzIwNDksIDMyMDU1LCAzMjA2MSwgMzIwNjYsIAorICAgIDMyMDcxLCAzMjA3NiwgMzIwODIsIDMyMDg3LCAzMjA5MiwgMzIwOTcsIDMyMTAzLCAzMjEwOCwgMzIxMTQsIDMyMTE5LCAKKyAgICAzMjEyNCwgMzIxMjksIDMyMTM0LCAzMjE0MCwgMzIxNDUsIDMyMTUxLCAzMjE1NiwgMzIxNjEsIDMyMTY2LCAzMjE3MSwgCisgICAgMzIxNzcsIDMyMTgyLCAzMjE4OCwgMzIxOTMsIDMyMTk4LCAzMjIwMywgMzIyMDgsIDMyMjEzLCAzMjIxOCwgMzIyMjMsIAorICAgIDMyMjI4LCAzMjIzMywgMzIyMzksIDMyMjQ1LCAzMjI1MSwgMzIyNTYsIDMyMjYxLCAzMjI2NiwgMzIyNzEsIDMyMjc3LCAKKyAgICAzMjI4MywgMzIyODksIDMyMjk1LCAzMjMwMSwgMzIzMDcsIDMyMzEyLCAzMjMxOCwgMzIzMjMsIDMyMzI4LCAzMjMzMywgCisgICAgMzIzMzgsIDMyMzQ0LCAyNDY3LCAzMjM0OSwgMjQ3NCwgMjQ4MSwgMjc4MiwgMzIzNTQsIDI0ODcsIDI0OTcsIDMyMzYwLCAKKyAgICAzMjM2NCwgMzIzNjksIDMyMzc0LCAzMjM4MCwgMzIzODUsIDMyMzkwLCAzMjM5NCwgMzIzOTksIDMyNDA1LCAzMjQxMCwgCisgICAgMzI0MTUsIDMyNDIwLCAzMjQyNiwgMzI0MzEsIDMyNDM1LCAzMjQzOSwgMzI0NDQsIDMyNDQ5LCAzMjQ1NCwgMzI0NTksIAorICAgIDMyNDY0LCAzMjQ3MCwgMzI0NzYsIDMyNDgxLCAzMjQ4NSwgMzI0OTAsIDMyNDk2LCAzMjUwMCwgMzI1MDUsIDMyNTEwLCAKKyAgICAzMjUxNSwgMzI1MjAsIDMyNTI0LCAzMjUyNywgMzI1MzIsIDMyNTM3LCAzMjU0MiwgMzI1NDcsIDMyNTUyLCAzMjU1OCwgCisgICAgMzI1NjQsIDMyNTY5LCAzMjU3NCwgMzI1NzksIDMyNTgzLCAzMjU4OCwgMzI1OTMsIDMyNTk4LCAzMjYwMywgMzI2MDgsIAorICAgIDMyNjEzLCAzMjYxNywgMzI2MjIsIDMyNjI3LCAzMjYzMiwgMzI2MzYsIDMyNjQwLCAzMjY0NCwgMzI2NDksIDMyNjU3LCAKKyAgICAzMjY2MiwgMzI2NjcsIDMyNjczLCAzMjY3OSwgMzI2ODUsIDMyNjkwLCAzMjY5NCwgMzI2OTcsIDMyNzAyLCAzMjcwNywgCisgICAgMzI3MTEsIDMyNzE2LCAzMjcyMSwgMzI3MjUsIDMyNzMwLCAzMjczNCwgMzI3MzcsIDMyNzQyLCAzOTE5LCAxOTA4MywgCisgICAgMzI3NDcsIDMyNzUyLCAzMjc1NywgMzI3NjUsIDIzMTUxLCAzMTIyMCwgOTYwMSwgMzI3NzAsIDMyNzc1LCAzMjc3OSwgCisgICAgMzI3ODQsIDMyNzg4LCAzMjc5MiwgMzI3OTcsIDMyODAxLCAzMjgwNCwgMzI4MDcsIDMyODExLCAzMjgxNiwgMzI4MjAsIAorICAgIDMyODI4LCAzMjgzMiwgMzI4MzUsIDMyODQwLCAzMjg0NCwgMzI4NDgsIDMyODUzLCAzMjg1OCwgMzI4NjIsIDMyODY4LCAKKyAgICAzMjg3MywgMzI4NzgsIDMyODg1LCAzMjg5MiwgMzI4OTYsIDMyODk5LCAzMjkwNSwgMzI5MTQsIDMyOTIxLCAzMjkyOSwgCisgICAgMzI5MzYsIDMyOTQwLCAzMjk0NSwgMzI5NDksIDMyOTUzLCAzMjk1OSwgMzI5NjUsIDMyOTY5LCAzMjk3NSwgMzI5ODAsIAorICAgIDMyOTg1LCAzMjk4OSwgMzI5OTYsIDMzMDAyLCAzMzAwOCwgMzMwMTQsIDMzMDIwLCAzMzAyNywgMzMwMzMsIDMzMDM5LCAKKyAgICAzMzA0NSwgMzMwNTEsIDMzMDU3LCAzMzA2MywgMzMwNjksIDMzMDc2LCAzMzA4MiwgMzMwODksIDMzMDk1LCAzMzEwMSwgCisgICAgMzMxMDcsIDMzMTEzLCAzMzExOSwgMzMxMjUsIDMzMTMxLCAzMzEzNywgMzMxNDMsIDEyNTg5LCAzMzE0OSwgMzMxNTUsIAorICAgIDMzMTYwLCAzMzE2NSwgMzMxNzAsIDMzMTczLCAzMzE3OSwgMzMxODcsIDMzMTkyLCAzMzE5NiwgMzMyMDEsIDMzMjA3LCAKKyAgICAzMzIxNiwgMzMyMjIsIDMzMjI3LCAzMzIzMiwgMzMyMzcsIDMzMjQxLCAzMzI0NiwgMzMyNTEsIDMzMjU2LCAzMzI2MSwgCisgICAgMzMyNjYsIDMzMjczLCAzMzI4MCwgMzMyODYsIDMzMjkyLCAzMzI5NywgMTc5ODAsIDMzMzA0LCAzMzMxMCwgMzMzMTcsIAorICAgIDMzMzIzLCAzMzMyOSwgMzMzMzQsIDMzMzQyLCAzMzM0NywgMTA0NzAsIDMzMzUxLCAzMzM1NiwgMzMzNjEsIDMzMzY3LCAKKyAgICAzMzM3MiwgMzMzNzcsIDMzMzgxLCAzMzM4NiwgMzMzOTEsIDMzMzk3LCAzMzQwMiwgMzM0MDcsIDMzNDEyLCAzMzQxNiwgCisgICAgMzM0MjEsIDMzNDI2LCAzMzQzMCwgMzM0MzUsIDMzNDQwLCAzMzQ0NCwgMzM0NDksIDMzNDUzLCAzMzQ1OCwgMzM0NjMsIAorICAgIDMzNDY4LCAzMzQ3MiwgMzM0NzcsIDMzNDgxLCAzMzQ4NSwgMTY4MDUsIDMzNDkwLCAzMzQ5OSwgMzM1MDUsIDMzNTExLCAKKyAgICAzMzUyMCwgMzM1MjgsIDMzNTM3LCAzMzU0NSwgMzM1NTAsIDMzNTU0LCAzMzU2MSwgMzM1NjcsIDMzNTc1LCAzMzU3OSwgCisgICAgMzM1ODIsIDMzNTg3LCAzMzU5MSwgMzM2MDAsIDMzNjA4LCAzMzYyNiwgMzM2MzIsIDE0NzQsIDMzNjM4LCAzMzY0MSwgCisgICAgMzM2NDUsIDI0NDQ3LCAyNDQ1MywgMzM2NTEsIDMzNjU1LCAzMzY2NiwgMzM2NzcsIDMzNjg4LCAzMzcwMCwgMzM3MDQsIAorICAgIDMzNzExLCAzMzcxOCwgMzM3MjUsIDMzNzMwLCAzMzczNCwgNjIyNCwgOTYzLCAyMzE1MCwgMzM3NDIsIDMzNzQ3LCAzMzc1MSwgCisgICAgMzM3NTYsIDMzNzYwLCAzMzc2NiwgMzM3NzEsIDMzNzc3LCAzMzc4MiwgMzM3ODgsIDMzNzkzLCAzMzc5OSwgMzM4MDQsIAorICAgIDMzODEwLCAzMzgxNiwgMzM4MjIsIDMzODI3LCAzMzc4MywgMzM3ODksIDMzODMxLCAzMzgzNiwgMzM4NDIsIDMzODQ3LCAKKyAgICAzMzg1MywgMzM4NTgsIDMzODY0LCAzMzg2OSwgMzM3OTQsIDExNDEyLCAzMzg3MywgMzM4MDUsIDMzODExLCAzMzgxNywgCisgICAgMjg3NCwgMzUyMiwgMzM4NzksIDMzODgyLCAzMzg4NywgMzM4OTMsIDMzODk5LCAzMzkwNSwgMzM5MTIsIDMzOTE4LCAKKyAgICAzMzkyNCwgMzM5MzAsIDMzOTM2LCAzMzk0MiwgMzM5NDgsIDMzOTU0LCAzMzk2MCwgMzM5NjYsIDMzOTcyLCAzMzk3OCwgCisgICAgMzM5ODQsIDMzOTkxLCAzMzk5NywgMzQwMDMsIDM0MDA5LCAzNDAxNSwgMzQwMjEsIDM0MDI0LCAzNDAyOSwgMzQwMzIsIAorICAgIDM0MDM5LCAzNDA0NCwgMzQwNTIsIDM0MDU3LCAzNDA2MiwgMzQwNjgsIDM0MDczLCAzNDA3OCwgMzQwODIsIDM0MDg3LCAKKyAgICAzNDA5MywgMzQwOTgsIDM0MTA0LCAzNDEwOSwgMzQxMTUsIDM0MTIwLCAzNDEyNiwgMzQxMzIsIDM0MTM2LCAzNDE0MSwgCisgICAgMzQxNDYsIDM0MTUxLCAzNDE1NiwgMzQxNjAsIDM0MTY1LCAzNDE3MCwgMzQxNzUsIDM0MTgxLCAzNDE4NywgMzQxOTMsIAorICAgIDM0MTk5LCAzNDIwNCwgMzQyMDgsIDM0MjExLCAzNDIxNywgMzQyMjMsIDM0MjMyLCAzNDI0MCwgMzQyNDcsIDM0MjUyLCAKKyAgICAzNDI1NiwgMzQyNjAsIDM0MjY1LCAxNjY1MywgMzQyNzAsIDM0Mjc4LCAzNDI4NCwgMzg2NSwgMTMzOSwgMzQyODksIAorICAgIDM0MjkzLCA4MzgzLCAzNDI5OSwgMzQzMDUsIDM0MzEyLCA4MzkyLCAzNDMxNiwgMzQzMjIsIDM0MzI5LCAzNDMzNSwgCisgICAgMzQzNDQsIDM0MzUyLCA5Mjk5LCAzNDM2NCwgMzQzNjgsIDM0Mzc1LCAzNDM4MSwgMzQzODYsIDM0MzkwLCAzNDM5NCwgCisgICAgMzQzOTcsIDM0NDA3LCAzNDQxNiwgMzQ0MjQsIDMzNzg0LCAzNDQyOSwgMzQ0MzksIDM0NDQ5LCAzNDQ1OSwgMzQ0NjUsIAorICAgIDM0NDcwLCAzNDQ4MCwgMzQ0ODUsIDM0NDk4LCAzNDUxMiwgMzQ1MjMsIDM0NTM1LCAzNDU0NywgMzQ1NjEsIDM0NTc0LCAKKyAgICAzNDU4NiwgMzQ1OTgsIDE2MDE2LCAzNDYxMiwgMzQ2MTcsIDM0NjIyLCAzNDYyNiwgMzQ2MzAsIDM0NjM0LCAxNzc2LCAKKyAgICAyOTU0NSwgMzQ2MzgsIDM0NjQzLCAzMzgzMiwgMzQ2NDgsIDM0NjUxLCAzNDY1NiwgMzQ2NjEsIDM0NjY2LCAzNDY3MiwgCisgICAgMzQ2NzgsIDExMDcyLCAzNDY4MywgMzQ2ODksIDM0Njk2LCAxNzI2NiwgMzQ3MDIsIDM0NzA3LCAzNDcxMiwgMzQ3MTYsIAorICAgIDM0NzIxLCAzNDcyNiwgMzM4MzcsIDM0NzMxLCAzNDczNiwgMzQ3NDEsIDM0NzQ3LCAzMzg0MywgMzQ3NTIsIDM0NzU1LCAKKyAgICAzNDc2MiwgMzQ3NzAsIDM0Nzc2LCAzNDc4MiwgMzQ3ODgsIDM0Nzk5LCAzNDgwNCwgMzQ4MTEsIDM0ODE4LCAzNDgyNSwgCisgICAgMzQ4MzMsIDM0ODQyLCAzNDg1MSwgMzQ4NTcsIDM0ODYzLCAzNDg3MSwgMzM4NDgsIDM0ODc2LCAzNDg4MiwgMzQ4ODgsIAorICAgIDMzODU0LCAzNDg5MywgMzQ4OTgsIDM0OTA2LCAzNDkxNCwgMzQ5MjAsIDM0OTI3LCAzNDkzMywgMzQ5NDAsIDM0OTQ3LCAKKyAgICAzNDk1MywgMzQ5NjEsIDM0OTcxLCAzNDk3OCwgMzQ5ODQsIDM0OTg5LCAzNDk5NSwgMzUwMDAsIDM1MDA1LCAzNTAxMiwgCisgICAgMzUwMjEsIDM1MDI5LCAzNTAzNCwgMzUwNDAsIDM1MDQ3LCAzNTA1NSwgMzUwNjEsIDM1MDY2LCAzNTA3MiwgMzUwODEsIAorICAgIDM1MDg4LCAzMDQwOSwgMzUwOTQsIDM1MDk4LCAzNTEwMywgMzUxMTIsIDM1MTE3LCAzNTEyMiwgMzUxMjcsIDEzNjU4LCAKKyAgICAzNTEzNSwgMzUxNDAsIDM1MTQ1LCAzNTE1MCwgMzUxNTQsIDM1MTU5LCAzNTE2NCwgMzUxNzEsIDM1MTc2LCAzNTE4MSwgCisgICAgMzUxODYsIDMzODU5LCAyMzA4NywgMzUxOTIsIDI1NDMsIDE1NSwgMzUxOTUsIDM1MTk4LCAzNTIwMiwgMzUyMDYsIDM1MjE2LCAKKyAgICAzNTIyNCwgMzUyMzEsIDM1MjM1LCAzNTIzOCwgMzUyNDYsIDM1MjUzLCAzNTI2MCwgMzUyNjksIDM1MjczLCAzNTI3NiwgCisgICAgMzUyODIsIDM1Mjg2LCAzNTI5NCwgMzUzMDIsIDM1MzA2LCAzNTMxMCwgMzUzMTMsIDM1MzE5LCAzNTMyNiwgMzUzMzAsIAorICAgIDM1MzM0LCAzNTM0MSwgMzUzNDksIDMzNzk1LCAzNTM1NiwgMzUzNjQsIDM1MzY5LCAxMTEzMiwgNjAwLCAzNzUsIDM1MzgxLCAKKyAgICAzNTM4NiwgMzUzOTEsIDM1Mzk3LCAzNTQwMiwgMzU0MDcsIDM4ODYsIDM1NDEyLCAzNTQxNSwgMzU0MjAsIDM1NDI1LCAKKyAgICAzNTQzMCwgMzU0MzUsIDM1NDQwLCAzNTQ0NywgMjQ1NjUsIDM1NDUyLCAzNTQ1NywgMzU0NjIsIDM1NDY3LCAzNTQ3MiwgCisgICAgMzU0NzgsIDM1NDgzLCAzNTQ4OSwgMzQwMzUsIDM1NDk1LCAzNTUwMCwgMzU1MDYsIDM1NTEyLCAzNTUyMiwgMzU1MjcsIAorICAgIDM1NTMyLCAzNTUzNiwgMzU1NDEsIDM1NTQ2LCAzNTU1MSwgMzU1NTYsIDM1NTY5LCAzNTU3NCwgMjQyMjgsIDE4NDE5LCAKKyAgICAzODk5LCAzNTU3OCwgMzU1ODQsIDM1NTg5LCAzNTU5NCwgMzU2MDAsIDM1NjA1LCAzNTYxMCwgMzU2MTQsIDM1NjE5LCAKKyAgICAzNTYyNCwgMzU2MzAsIDM1NjM1LCAzNTY0MCwgMTM0NCwgMzU2NDQsIDM1NjQ5LCAzNTY1NCwgMzU2NTksIDM1NjYzLCAKKyAgICAzNTY2OCwgMzU2NzMsIDM1Njc4LCAzNTY4NCwgMzU2OTAsIDM1Njk1LCAzNTY5OSwgMzU3MDMsIDM1NzA4LCAzNTcxMywgCisgICAgMzU3MTgsIDM1NzIyLCAzNTczMCwgMzU3MzQsIDM1NzQwLCAzNTc0NCwgMzU3NTEsIDM1NzYwLCAxODIwMywgMzM4MDYsIAorICAgIDM1NzY2LCAzNTc3MywgMzU3ODEsIDM1Nzg4LCAzNTc5NCwgMzU4MDcsIDM1ODE5LCAzNTgyNCwgMzU4MzAsIDM1ODM0LCAKKyAgICAyODAxLCAzNTgzOCwgMzU4NDIsIDM1MzIxLCAzNTg1MSwgMzU4NjIsIDM1ODY3LCAzMDQ3MiwgMzU4NzIsIDM1ODc3LCAKKyAgICAzNTg4MSwgMzU4ODYsIDI0NDU4LCAzNTg5MCwgMzU4OTQsIDM1ODk5LCAzMzgxMiwgMjMxNzcsIDM1OTAzLCAzNTkwOCwgCisgICAgMzU5MTQsIDM1OTE5LCAzNTkyMywgMzU5MjcsIDM1OTMwLCAzNTkzNCwgMzU5NDAsIDM1OTQ5LCAzNTk2MCwgMzU5NzIsIAorICAgIDMzODE4LCAzNTk3NywgMzU5ODAsIDM1OTg0LCAzNTk4OCwgNDE0LCAzNTk5MywgMzU5OTgsIDM2MDAzLCAzNjAwOCwgCisgICAgMzYwMTMsIDM2MDE4LCAzNjAyNCwgMzYwMjksIDM2MDM0LCAzNjA0MCwgMzYwNDUsIDM2MDUxLCAzNjA1NiwgMzYwNjIsIAorICAgIDM2MDY3LCAzNjA3MiwgMzYwNzcsIDM2MDgyLCAzNjA4NywgMzYwOTIsIDM2MDk3LCAzNjEwMiwgMzYxMDgsIDM2MTEzLCAKKyAgICAzNjExOCwgMzYxMjMsIDM2MTI4LCAzNjEzMywgMzYxMzgsIDM2MTQzLCAzNjE0OSwgMzYxNTUsIDM2MTYwLCAzNjE2NSwgCisgICAgMzYxNzAsIDM2MTc1LCAzNjE4MCwgMzYxODUsIDM2MTkwLCAzNjE5NSwgMzYyMDAsIDM2MjA1LCAzNjIxMCwgMzYyMTUsIAorICAgIDM2MjIwLCAzNjIyNSwgMzYyMzAsIDM2MjM1LCAzNjI0MCwgMzYyNDUsIDM2MjUxLCAzMjYsIDksIDM2MjU2LCAzNjI2MCwgCisgICAgMzYyNjQsIDM2MjcyLCAzNjI3NiwgMzYyODAsIDM2MjgzLCAzNjI4NiwgMzYyODgsIDM2MjkzLCAzNjI5NywgMzYzMDIsIAorICAgIDM2MzA2LCAzNjMxMSwgMzYzMTUsIDM2MzIwLCAzNjMyNCwgMzYzMjcsIDM2MzI5LCAzNjMzMywgMzYzMzgsIDM2MzQyLCAKKyAgICAzNjM1MywgMzYzNTYsIDM2MzU4LCAzNjM2MiwgMzYzNzQsIDM2MzgzLCAzNjM4NywgMzYzOTEsIDM2Mzk3LCAzNjQwMiwgCisgICAgMzY0MTEsIDM2NDE3LCAzNjQyMiwgMzY0MjcsIDM2NDMxLCAzNjQzNSwgMzY0NDAsIDM2NDQ3LCAzNjQ1MiwgMzY0NTgsIAorICAgIDM2NDYzLCAzNjQ2NywgMzY0NzQsIDI3OTc2LCAyNzk4NiwgMzY0NzgsIDM2NDgzLCAzNjQ4OCwgMzY0OTMsIDM2NTAwLCAKKyAgICAzNjUwNCwgMzY1MTEsIDM2NTE3LCA4NTMyLCAzNjUyMSwgMzY1MzAsIDM2NTM4LCAzNjU1MywgMzY1NjcsIDM2NTc2LCAKKyAgICAzNjU4NCwgMzY1OTUsIDM2NjA0LCAzNjYwOSwgMzY2MTYsIDc1ODAsIDM2NjI2LCAzNjYzMSwgMzY2MzYsIDM2NjQwLCAKKyAgICAzNjY0MywgMzY2NDgsIDM2NjUyLCAzNjY1NywgMzY2NjEsIDM2NjY4LCAzNjY3MywgMzY2NzgsIDM2NjgzLCA5NDc0LCAKKyAgICAzNjY5MywgMzY2OTUsIDM2Njk4LCAzNjcwMSwgMzY3MDUsIDM2NzExLCAzNjcxNSwgMzY3MjAsIDM2NzI1LCAzNjc0MywgCisgICAgMzY3NTcsIDM2Nzc2LCAzNjc5MywgMzY4MDIsIDM2ODEwLCAzNjgxNSwgMzY4MjAsIDE0NjcsIDM2ODI2LCAzNjgzMiwgCisgICAgMzY4MzcsIDM2ODQ3LCAzNjg1NiwgMzY4NjQsIDM2ODY5LCAzNjg3NSwgMzY4ODAsIDM2ODg5LCAzNjkwMCwgMzY5MDUsIAorICAgIDM2OTEyLCAzNjkxOCwgMzY5MjIsIDM2OTI5LCAzNjkzNywgMzY5NDQsIDM2OTU3LCAzNjk2NSwgMzY5NjksIDM2OTc5LCAKKyAgICAzNjk4NCwgMzY5ODgsIDM2OTk2LCAzNzAwNCwgMzcwMDksIDM3MDEzLCAzNzAxNywgMzcwMjYsIDM3MDMyLCAzNzAzNywgCisgICAgMzcwNDUsIDM3MDU1LCAzNzA2NCwgMzcwNzMsIDM3MDgyLCAzNzA5MywgMzcxMDEsIDM3MTEyLCAzNzEyMSwgMzcxMjgsIAorICAgIDM3MTM0LCAzNzEzOSwgMzcxNTAsIDM3MTYxLCAzNzE2NiwgMzcxNzAsIDM3MTczLCAzNzE3NywgMzcxODUsIDM3MTkxLCAKKyAgICAzNzIwMiwgMzcyMTMsIDM3MjI0LCAzNzIzNSwgMzcyNDYsIDM3MjU3LCAzNzI2OCwgMzcyNzksIDM3MjkxLCAzNzMwMywgCisgICAgMzczMTUsIDM3MzI3LCAzNzMzOSwgMzczNTEsIDM3MzYzLCAzNzM3MiwgMzczNzYsIDM3Mzg0LCAzNzM5MCwgMzczOTYsIAorICAgIDM3NDAzLCAzNzQwOSwgMzc0MTQsIDM3NDIwLCAyNDQyLCAzNzQyNCwgMzc0MjYsIDM3NDMxLCAzNzQzNiwgMzc0NDEsIAorICAgIDM3NDQ0LCAzNzQ0NiwgMzc0NTAsIDM3NDUzLCAzNzQ2MCwgMzc0NjQsIDEwNzYyLCAzNzQ2OCwgMzc0NzQsIDM3NDg0LCAKKyAgICAzNzQ4OSwgMzc0OTUsIDM3NDk5LCAzNzUwNCwgMzc1MTcsIDI4NDE3LCAzNzUyMywgMzc1MzIsIDM3NTQxLCAxOTI4MSwgCisgICAgMzc1NDgsIDM3NTU3LCAzNDQ0NSwgMzc1NjUsIDM3NTcwLCAzNzU3NCwgMzc1ODMsIDM3NTkxLCAzNzU5OCwgMzc2MDMsIAorICAgIDM3NjA3LCAzNzYxMiwgMzc2MTcsIDM3NjI1LCAzNzYyOSwgMzc2MzcsIDM3NjQzLCAzNzY0OSwgMzc2NTQsIDM3NjU5LCAKKyAgICAzNzY2MywgMzc2NjYsIDM3NjcxLCAzNzY4NCwgMzc3MDAsIDI1MDU1LCAzNzcxNywgMzc3MjksIDM3NzQ2LCAzNzc1OCwgCisgICAgMzc3NzIsIDI1MDcyLCAyNTA5MSwgMzc3ODQsIDM3Nzk2LCAyNzA4LCAzNzgxMCwgMzc4MTUsIDM3ODIwLCAzNzgyNSwgCisgICAgMzc4MjksIDM3ODM2LCAzNzg0OCwgMzc4NTUsIDM3ODY0LCAzNzg2NywgMzc4NzgsIDM3ODg5LCAzNzg5NCwgMzQ4NjgsIAorICAgIDg5MywgMzc4OTgsIDM3OTAyLCAzNzkwNiwgMzc5MDksIDM3OTE0LCAzNzkxOSwgMzc5MjUsIDM3OTMwLCAzNzkzNSwgCisgICAgMzc5NDEsIDM3OTQ3LCAzNzk1MiwgMzc5NTYsIDM3OTYxLCAzNzk2NiwgMzc5NzEsIDM3OTc1LCAzNzk3OCwgMzc5ODQsIAorICAgIDM3OTg5LCAzNzk5NCwgMzc5OTksIDM4MDAzLCAzODAwOCwgMzgwMTQsIDM4MDIyLCAyODY2OSwgMzgwMjcsIDM4MDMyLCAKKyAgICAzODAzOSwgMzgwNDUsIDM4MDUxLCAzODA1NiwgMzgwNjQsIDI0NTc0LCAzODA3MSwgMzgwNzYsIDM4MDgxLCAzODA4NiwgCisgICAgMzgwOTAsIDM4MDkzLCAzODA5OCwgMzgxMDIsIDM4MTA2LCAzODExMywgMzgxMTksIDM4MTI1LCAzODEzMSwgMzgxMzgsIAorICAgIDM4MTQzLCAzODE0OSwgMzY5OTksIDM4MTUzLCAzODE1NywgMzgxNjIsIDM4MTc1LCAzODE4MCwgMzgxODYsIDM4MTk0LCAKKyAgICAzODIwMSwgMzgyMDksIDM4MjE5LCAzODIyNSwgMzgyMzEsIDM4MjM3LCAzODI0MSwgMzgyNTAsIDM4MjU4LCAzODI2NSwgCisgICAgMzgyNzAsIDM4Mjc1LCAxMTQzNSwgMzgyODAsIDM4Mjg3LCAzODI5MywgMzgzMDMsIDM4MzA4LCAzODMxNCwgMzgzMjIsIAorICAgIDM3NzQsIDM4MzI5LCAzODMzNiwgMzgzNDIsIDM4MzQ5LCAzNzgwLCAzODM1MywgMzgzNTgsIDM4MzY5LCAzODM3NiwgCisgICAgMzgzODIsIDM4MzkxLCAzODM5NSwgNDI1OCwgMzgzOTgsIDM4NDA1LCAzODQxMSwgMzg0MTcsIDM4NDI1LCAzODQzNSwgCisgICAgMzE2NjIsIDM4NDQyLCAzODQ1MCwgMzg0NTYsIDM4NDYxLCAzODQ2NywgMzg0NzIsIDM4NDc2LCAyODI2MCwgMzg0ODIsIAorICAgIDM4NDg5LCAzODQ5NSwgMzg1MDQsIDM4NTExLCAyNTc5MSwgMzg1MTcsIDM4NTIyLCAzODUyNiwgMzg1MzQsIDM4NTQyLCAKKyAgICAxMDQyOCwgNjE5OSwgMzg1NDksIDM4NTUzLCAzODU1NSwgMzg1NTksIDM4NTY0LCAzODU2NiwgMzg1NzEsIDM4NTc3LCAKKyAgICAzODU4MiwgMzg1ODcsIDM4NTk0LCAzNTQ0MywgMzg2MDAsIDM4NjA1LCAzODYwOSwgMzg2MTQsIDM4NjE4LCAzODYyNywgCisgICAgMzg2MzEsIDM4NjM3LCAzODY0NCwgMzg2NTAsIDM4NjU3LCAzODY2MiwgMzg2NzEsIDM4Njc2LCAzODY4MCwgMzg2ODUsIAorICAgIDM4NjkyLCAzODcwMCwgMzg3MDgsIDM4NzEzLCAyMzIzMywgMzg3MTcsIDM4NzIwLCAzODcyNCwgMzg3MjgsIDExODIzLCAKKyAgICA5MDcsIDM4NzMyLCAzODczNywgMzg3NDUsIDM4NzQ5LCAzODc1OCwgMzg3NjUsIDM4NzY5LCAzODc3MywgMzg3ODEsIAorICAgIDM4Nzg4LCAzODc5OCwgMzg4MDIsIDM4ODA2LCAzODgxNCwgMzg4MjIsIDM4ODI4LCAzODgzMywgMzg4NDIsIDE0NjQwLCAKKyAgICAzODg0OCwgMzg4NTcsIDM4ODYyLCAzODg2OSwgMzg4NzYsIDM4ODg0LCAzODg5MSwgMzg4OTksIDM4OTA3LCAzODkxMiwgCisgICAgMzg5MTksIDM4OTI2LCAzODkzMywgMzg5NDAsIDM4OTQ3LCAzODk1MiwgMzg5NTksIDM4OTY1LCAzODk4MiwgMzg5OTAsIAorICAgIDM5MDAwLCAzOTAwOCwgMzkwMTUsIDQyMiwgMzkwMTksIDM5MDI1LCAzOTAyOSwgMzkwMzQsIDM2NjAwLCAzOTA0MCwgCisgICAgMzkwNDMsIDM5MDQ3LCAzOTA1OCwgMzkwNjYsIDM3ODUsIDM5MDc0LCAzOTA4MCwgMzkwODYsIDM5MDk2LCAzOTEwNSwgCisgICAgMzkxMTUsIDM5MTIyLCAzOTEyOCwgMzkxMzMsIDM3OTEsIDM3OTcsIDM5MTQyLCAzOTE0OSwgMzkxNTcsIDM5MTYyLCAKKyAgICAzOTE2NiwgMzkxNzMsIDM5MTgxLCAzOTE4OCwgMzkxOTQsIDM5MjAzLCAzOTIxMywgMzkyMTksIDM5MjI3LCAzOTIzNiwgCisgICAgMzkyNDMsIDM5MjUxLCAzOTI1OCwgMjM5MzcsIDM5MjYyLCAzOTI2OSwgMzkyNzUsIDM5Mjg1LCAzOTI5NCwgMzkzMDIsIAorICAgIDM5MzEzLCAzOTMxNywgMzkzMjcsIDM5MzMzLCAzOTM0MCwgMzkzNDgsIDM5MzU3LCAzOTM2NiwgMzkzNzYsIDM5Mzg3LCAKKyAgICAzOTM5NCwgMzkzOTksIDM5NDA2LCAzMDc3LCAzOTQxNCwgMzk0MjAsIDM5NDI1LCAzOTQzMSwgMzk0MzcsIDM5NDQyLCAKKyAgICAzOTQ1NSwgMzk0NjgsIDM5NDgxLCAzOTQ4OCwgMzk0OTQsIDM5NTAyLCAzOTUxMCwgMzk1MTUsIDM5NTE5LCAxNDM2LCAKKyAgICAzOTUyMywgMzk1MjcsIDM5NTMxLCAzOTUzNSwgMzk1MzksIDM5NTQzLCAzOTU0NywgMzk1NTEsIDM5NTU1LCAzOTU1OSwgCisgICAgMzk1NjMsIDM5NTY3LCAzOTU3MSwgMzk1NzUsIDM5NTc5LCAzOTU4MywgMzk1ODcsIDM5NTkxLCAzOTU5NSwgMzk1OTksIAorICAgIDM5NjAzLCAzOTYwNywgMzk2MTEsIDM5NjE1LCAzOTYxOSwgMzk2MjMsIDM5NjI3LCAzOTYzMSwgMzk2MzUsIDM5NjM5LCAKKyAgICAzOTY0MywgMzk2NDcsIDM5NjUxLCAzOTY1NSwgMzk2NTksIDM5NjYzLCAzOTY2NywgMzk2NzEsIDM5Njc1LCAzOTY3OSwgCisgICAgMzk2ODMsIDM5Njg3LCAzOTY5MSwgMzk2OTUsIDM5Njk5LCAzOTcwMywgMzk3MDcsIDM5NzExLCAzOTcxNSwgMzk3MTksIAorICAgIDM5NzIzLCAzOTcyNywgMzk3MzEsIDM5NzM1LCAzOTczOSwgMzk3NDMsIDM5NzQ3LCAzOTc1MSwgMzk3NTUsIDM5NzU5LCAKKyAgICAzOTc2MywgMzk3NjcsIDM5NzcxLCAzOTc3NSwgMzk3NzksIDM5NzgzLCAzOTc4NywgMzk3OTEsIDM5Nzk1LCAzOTc5OSwgCisgICAgMzk4MDMsIDM5ODA3LCAzOTgxMSwgMzk4MTUsIDM5ODE5LCAzOTgyMywgMzk4MjcsIDM5ODMxLCAzOTgzNSwgMzk4MzksIAorICAgIDM5ODQzLCAzOTg0NywgMzk4NTEsIDM5ODU1LCAzOTg1OSwgMzk4NjMsIDM5ODY3LCAzOTg3MSwgMzk4NzUsIDM5ODc5LCAKKyAgICAzOTg4MywgMzk4ODcsIDM5ODkxLCAzOTg5NSwgMzk4OTksIDM5OTAzLCAzOTkwNywgMzk5MTEsIDM5OTE1LCAzOTkxOSwgCisgICAgMzk5MjMsIDM5OTI3LCAzOTkzMSwgMzk5MzUsIDM5OTM5LCAzOTk0MywgMzk5NDcsIDM5OTUxLCAzOTk1NSwgMzk5NTksIAorICAgIDM5OTYzLCAzOTk2NywgMzk5NzEsIDM5OTc1LCAzOTk3OSwgMzk5ODMsIDM5OTg3LCAzOTk5MSwgMzk5OTUsIDM5OTk5LCAKKyAgICA0MDAwMywgNDAwMDcsIDQwMDExLCA0MDAxNSwgNDAwMTksIDQwMDIzLCA0MDAyNywgNDAwMzEsIDQwMDM1LCA0MDAzOSwgCisgICAgNDAwNDMsIDQwMDQ3LCA0MDA1MSwgNDAwNTUsIDQwMDU5LCA0MDA2MywgNDAwNjcsIDQwMDcxLCA0MDA3NSwgNDAwNzksIAorICAgIDQwMDgzLCA0MDA4NywgNDAwOTEsIDQwMDk1LCA0MDA5OSwgNDAxMDMsIDQwMTA3LCA0MDExMSwgNDAxMTUsIDQwMTE5LCAKKyAgICA0MDEyMywgNDAxMjcsIDQwMTMxLCA0MDEzNSwgNDAxNDAsIDQwMTQ0LCA0MDE0OSwgNDAxNTMsIDQwMTU4LCA0MDE2MiwgCisgICAgNDAxNjcsIDQwMTcxLCA0MDE3NywgNDAxODIsIDQwMTg2LCA0MDE5MSwgNDAxOTUsIDQwMjAwLCA0MDIwNCwgNDAyMDksIAorICAgIDQwMjEzLCA0MDIxOCwgNDAyMjIsIDQwMjI3LCA0MDIzMSwgNDAyMzYsIDQwMjQwLCA0MDI0NiwgNDAyNTIsIDQwMjU3LCAKKyAgICA0MDI2MSwgNDAyNjYsIDQwMjcwLCA0MDI3NiwgNDAyODEsIDQwMjg1LCA0MDI5MCwgNDAyOTQsIDQwMjk5LCA0MDMwMywgCisgICAgNDAzMDksIDQwMzE0LCA0MDMxOCwgNDAzMjMsIDQwMzI3LCA0MDMzMiwgNDAzMzYsIDQwMzQxLCA0MDM0NSwgNDAzNTEsIAorICAgIDQwMzU2LCA0MDM2MCwgNDAzNjUsIDQwMzY5LCA0MDM3NSwgNDAzODAsIDQwMzg0LCA0MDM4OSwgNDAzOTMsIDQwMzk4LCAKKyAgICA0MDQwMiwgNDA0MDcsIDQwNDExLCA0MDQxNiwgNDA0MjAsIDQwNDI2LCA0MDQzMSwgNDA0MzUsIDQwNDQxLCA0MDQ0NiwgCisgICAgNDA0NTAsIDQwNDU2LCA0MDQ2MSwgNDA0NjUsIDQwNDcwLCA0MDQ3NCwgNDA0NzksIDQwNDgzLCA0MDQ4OSwgNDA0OTUsIAorICAgIDQwNTAxLCA0MDUwNywgNDA1MTMsIDQwNTE5LCA0MDUyNSwgNDA1MzEsIDQwNTM2LCA0MDU0MCwgNDA1NDUsIDQwNTQ5LCAKKyAgICA0MDU1NSwgNDA1NjAsIDQwNTY0LCA0MDU2OSwgNDA1NzMsIDQwNTc4LCA0MDU4MiwgNDA1ODcsIDQwNTkxLCA0MDU5NiwgCisgICAgNDA2MDAsIDQwNjA1LCA0MDYwOSwgNDA2MTQsIDQwNjE4LCA0MDYyNCwgNDA2MjksIDQwNjMzLCA0MDYzOCwgNDA2NDIsIAorICAgIDQwNjQ4LCA0MDY1NCwgNDA2NTksIDEyMiwgNjMsIDQwNjYzLCA0MDY2NSwgNDA2NjksIDQwNjczLCA0MDY3NywgNDA2ODIsIAorICAgIDQwNjg2LCA0MDY5MCwgNDA2OTUsIDEwMzQxLCA0MDcwMCwgNDA3MDYsIDE3MzcsIDY2MjEsIDQwNzEyLCA0MDcxNSwgCisgICAgNDA3MjAsIDQwNzI0LCA0MDcyOSwgNDA3MzMsIDQwNzM3LCA0MDc0MiwgMTEyMTksIDQwNzQ2LCA0MDc1MCwgNDA3NTQsIAorICAgIDU0MCwgNDA3NTgsIDE2OTE0LCA0MDc2MywgNDA3NjcsIDQwNzcyLCA0MDc3NywgNDA3ODIsIDQwNzg2LCA0MDc5MywgCisgICAgMjg0NDEsIDQwNzk5LCA0MDgwMiwgNDA4MDYsIDQwODExLCA0MDgxNywgNDA4MjEsIDQwODI0LCA0MDgzMiwgNDA4MzgsIAorICAgIDQwODQzLCA0MDg0NywgNDA4NTAsIDQwODU0LCA0MDg2MCwgNDA4NjQsIDQwODY4LCAzNTczLCAzNTc4LCAzMTg4NiwgCisgICAgNDA4NzEsIDQwODc1LCA0MDg3OSwgNDA4ODMsIDQwODg3LCA0MDg5NSwgNDA5MDIsIDQwOTA2LCAxNDU5MCwgNDA5MTMsIAorICAgIDQwOTE4LCA0MDkzMiwgNDA5MzksIDQwOTUwLCAzNDEsIDQwOTU1LCA0MDk1OSwgNDA5NjUsIDQwOTc3LCA0MDk4MywgCisgICAgNDA5ODksIDQwOTkzLCAzMTkyMywgNDEwMDIsIDQxMDA4LCA0MTAxNywgNDEwMjEsIDQxMDI1LCA0MTAzMCwgNDEwMzYsIAorICAgIDQxMDQxLCA0MTA0NSwgNDEwNTAsIDQxMDU0LCA0MTA1OCwgNDEwNjUsIDQxMDcxLCA0MTA3NiwgNDEwODcsIDQxMTAyLCAKKyAgICA0MTExNywgNDExMzIsIDQxMTQ4LCA0MTE2NiwgMTExNjksIDQxMTgwLCA0MTE4NywgNDExOTEsIDQxMTk0LCA0MTIwMywgCisgICAgNDEyMDgsIDQxMjEyLCA0MTIyMCwgMTc0NjksIDQxMjI4LCA0MTIzMiwgNDEyNDIsIDQxMjUzLCAzMTg1NiwgNDEyNjYsIAorICAgIDQxMjcwLCA0MTI3OSwgNDEyOTcsIDQxMzE2LCA0MTMyNCwgMTA2MjMsIDExMzMyLCA0MTMyOCwgMjQ0NzAsIDQxMzMxLCAKKyAgICAzMjgyNCwgNDEzMzYsIDEwNjIyLCA0MTM0MSwgNDEzNDcsIDQxMzUyLCA0MTM1OCwgNDEzNjMsIDQxMzY5LCA0MTM3NCwgCisgICAgNDEzODAsIDQxMzg1LCA0MTM5MSwgNDEzOTcsIDQxNDAzLCA0MTQwOCwgNDEzNjQsIDQxMzcwLCA0MTM3NSwgNDEzODEsIAorICAgIDQxMzg2LCA0MTM5MiwgNDEzOTgsIDg1NDUsIDQxMDMsIDQxNDEyLCA0MTQyMCwgNDE0MjQsIDQxNDI3LCA0MTQzNCwgCisgICAgNDE0MzgsIDQxNDQzLCA0MTQ0OCwgNDE0NTUsIDQxNDYxLCA0MTQ2NywgNDE0NzIsIDE2Mjk3LCA0MTQ3NiwgMjgyNzcsIAorICAgIDQxNDgwLCA0MTQ4NCwgNDE0ODgsIDQxNDk0LCA0MTQ5OCwgMzAzNDksIDQxNTA3LCA5NjM0LCA0MTUxMSwgMTAwMjcsIAorICAgIDQxNTE0LCA0MTUyMSwgNDE1MjcsIDQxNTMxLCAxMzExNCwgNDE1MzgsIDQxNTQ0LCA0MTU0OSwgNDE1NTYsIDQxNTYzLCAKKyAgICA0MTU3MCwgMzEwNzYsIDg0NDIsIDQxNTc3LCA0MTU4NCwgNDE1OTEsIDQxNTk3LCA0MTYwMiwgNDE2MDksIDQxNjIwLCAKKyAgICA0MTYyNiwgNDE2MzEsIDQxNjM2LCA0MTY0MSwgNDE2NDUsIDQxNjUwLCA0MTY1NywgNDEzNjUsIDQxNjYxLCA0MTY3MSwgCisgICAgNDE2ODAsIDQxNjkxLCA0MTY5NywgNDE3MDUsIDQxNzEyLCA0MTcxNywgNDE3MjIsIDQxNzI3LCA0MTczMiwgNDE3MzcsIAorICAgIDQxNzQxLCA0MTc0NSwgNDE3NTIsIDQxNzU4LCA0MTc2NiwgMjMzOCwgMTA4NiwgMTEyMzUsIDExMjQ3LCAxMTI1MiwgCisgICAgMTEyNTgsIDQxNzc1LCAxMTI2MywgMTEyNjgsIDExMjc0LCA0MTc4MCwgNDE3OTAsIDQxNzk0LCAxMTI3OSwgNDE3OTksIAorICAgIDE4NjE3LCA0MTgwMiwgNDE4MDcsIDQxODExLCAzNzg1OSwgNDE4MjIsIDQxODI3LCA0MTgzNCwgNDE4NDEsIDQxODQ1LCAKKyAgICA0MTg0OCwgNDE4NTYsIDExMTgyLCA0MTg2MywgNDE4NjYsIDQxODcyLCA0MTg4MiwgNjI1MSwgNDE4OTEsIDQxODk3LCAKKyAgICA0MTkwMSwgNDE5MDksIDQxOTEzLCA0MTkyMywgNDE5MjksIDQxOTM0LCA0MTk0NSwgNDE5NTQsIDQxOTYzLCA0MTk3MiwgCisgICAgNDE5ODEsIDQxOTkwLCA0MTk5OSwgNDIwMDgsIDQyMDE0LCA0MjAyMCwgNDIwMjUsIDQyMDMxLCA0MjAzNywgNDIwNDMsIAorICAgIDQyMDQ4LCA0MjA1MSwgNDIwNTgsIDQyMDY0LCA0MjA2OCwgNDIwNzMsIDQyMDgwLCA0MjA4NywgNDIwOTEsIDQyMDk0LCAKKyAgICA0MjEwNCwgNDIxMTcsIDQyMTI2LCA0MjEzNSwgNDIxNDYsIDQyMTU5LCA0MjE3MSwgNDIxODIsIDQyMTkxLCA0MjIwMiwgCisgICAgNDIyMDcsIDQyMjE2LCA0MjIyMSwgMTEyODQsIDQyMjI3LCA0MjIzNCwgNDIyNDIsIDQyMjQ3LCA0MjI1MSwgNDIyNTgsIAorICAgIDQyMjY1LCA0MDQ2LCAyNSwgNDIyNjksIDQyMjc0LCAxODQ2NiwgNDIyNzgsIDQyMjgxLCA0MjI4NCwgMzA1MjksIDQyMjg4LCAKKyAgICAzMTA4NSwgNDIyOTYsIDQyMzAwLCA0MjMwNCwgNDIzMDcsIDQyMzEzLCA0MjMxOSwgNDIzMjQsIDMzODgzLCA0MjMzMywgCisgICAgNDIzNDEsIDQyMzQ3LCA0MjM1NCwgMzA1MTIsIDQyMzU4LCAzMDczMiwgNDIzNjIsIDQyMzcxLCA0MjM3NSwgNDIzODMsIAorICAgIDQyMzg5LCA0MjM5NSwgNDI0MDAsIDQyNDA0LCAzMTEwNCwgNDI0MTAsIDQyNDEzLCA0MjQyMSwgNDI0MjksIDQzOTksIAorICAgIDQyNDM1LCA0MjQzOSwgNDI0NDQsIDQyNDUxLCA0MjQ1NywgNDI0NjIsIDQyNDY3LCA0MjQ3MSwgNDI0NzcsIDQyNDgyLCAKKyAgICA0MjQ4OCwgNDMxMSwgODQ4LCA0MjQ5NSwgNDI0OTksIDQyNTAyLCAxNjc4NywgNDI1MTQsIDQyNTIyLCA0MjUzMCwgNDI1MzgsIAorICAgIDQyNTQ2LCA0MjU1MywgNDI1NjEsIDQyNTY5LCA0MjU3NiwgNDI1ODQsIDQyNTkyLCA0MjYwMCwgNDI2MDgsIDQyNjE2LCAKKyAgICA0MjYyNCwgNDI2MzIsIDQyNjQwLCA0MjY0OCwgNDI2NTYsIDQyNjY0LCA0MjY3MSwgNDI2NzksIDQyNjg3LCA0MjY5NSwgCisgICAgNDI3MDMsIDQyNzExLCA0MjcxOSwgNDI3MjcsIDQyNzM1LCA0Mjc0MywgNDI3NTEsIDQyNzU5LCA0Mjc2NywgNDI3NzUsIAorICAgIDQyNzgzLCA0Mjc5MSwgNDI3OTksIDQyODA3LCA0MjgxNSwgNDI4MjMsIDQyODMwLCA0MjgzOCwgNDI4NDUsIDQyODUzLCAKKyAgICA0Mjg2MSwgNDI4NjksIDQyODc3LCA0Mjg4NSwgNDI4OTMsIDQyOTAxLCA0MjkwOSwgNDI5MjAsIDIzOTczLCA0MjkyNSwgCisgICAgNDI5MjgsIDQyOTM1LCA0MjkzOSwgNDI5NDUsIDQyOTQ5LCA0Mjk1NSwgNDI5NjAsIDQyOTY2LCA0Mjk3MSwgNDI5NzYsIAorICAgIDQyOTgwLCA0Mjk4NCwgNDI5ODksIDQyOTk0LCA0MzAwNCwgNDMwMTAsIDQzMDIzLCA0MzAyOSwgNDMwMzUsIDQzMDQxLCAKKyAgICA0MzA0OCwgNDMwNTMsIDQzMDU5LCA0MzA2NCwgMTgzNjIsIDg1NiwgNDMwNjksIDQzMDcyLCA0MzA3NSwgNDMwNzgsIAorICAgIDMzOTY3LCAzMzk3MywgNDMwODEsIDMzOTc5LCAzMzk5MiwgMzM5OTgsIDM0MDA0LCA0MzA4NywgMzQwMTAsIDM0MDE2LCAKKyAgICA0MzA5MywgNDMwOTksIDE4LCA0MzEwNywgNDMxMTQsIDQzMTE4LCA0MzEyMiwgNDMxMzAsIDM0NzU3LCA0MzEzNCwgNDMxMzgsIAorICAgIDQzMTQ1LCA0MzE1MCwgNDMxNTQsIDQzMTU5LCA0MzE2NSwgNDMxNzAsIDQzMTc2LCA0MzE4MSwgNDMxODUsIDQzMTg5LCAKKyAgICA0MzE5MywgNDMxOTgsIDQzMjAyLCA0MzIwNywgNDMyMTEsIDQzMjE1LCA0MzIyMiwgNDMyMjcsIDQzMjMxLCA0MzIzNSwgCisgICAgNDMyNDAsIDQzMjQ0LCA0MzI0OSwgNDMyNTMsIDQzMjU3LCA0MzI2MiwgNDMyNjgsIDE3MDYwLCAxNzA2NSwgNDMyNzMsIAorICAgIDQzMjc3LCA0MzI4MCwgNDMyODQsIDQzMjg4LCAyMzA0NCwgNDMyOTMsIDQzMjk3LCA0MzMwMywgNDMzMTAsIDQzMzE2LCAKKyAgICA0MzMyMSwgNDMzMzEsIDQzMzM2LCA0MzM0NCwgNDMzNDgsIDQzMzUxLCAzNDc3MiwgNDMzNTUsIDQzNzYsIDQzMzYwLCAKKyAgICA0MzM2NSwgNDMzNjksIDQzMzc0LCA0MzM3OCwgNDMzODMsIDE0NjU4LCA0MzM5NCwgNDMzOTgsIDQzNDAxLCA0MzQwNSwgCisgICAgNDM0MTAsIDQzNDE0LCA0MzQxOSwgNDM0MjQsIDQzNDI4LCA0MzQzMiwgNDM0MzYsIDQzNDM5LCA0MzQ0MywgODU2NCwgCisgICAgMTQ2NzQsIDQzNDQ2LCA0MzQ0OSwgNDM0NTUsIDQzNDYwLCA0MzQ2NiwgNDM0NzEsIDQzNDc3LCA0MzQ4MiwgNDM0ODgsIAorICAgIDQzNDkzLCA0MzQ5OSwgNDM1MDUsIDQzNTExLCA0MzUxNiwgNDM1MjAsIDQzNTI0LCA0MzUzMywgNDM1NDksIDQzNTY1LCAKKyAgICA0MzU3NSwgMzA0MTksIDQzNTgyLCA0MzU4NiwgNDM1OTEsIDQzNTk2LCA0MzYwMCwgNDM2MDQsIDM5MzYxLCA0MzYxMCwgCisgICAgNDM2MTUsIDQzNjE5LCA0MzYyNiwgNDM2MzEsIDQzNjM2LCA0MzY0MCwgNDM2NDQsIDQzNjUwLCAyOTM0OCwgNDM2NTQsIAorICAgIDIzMzQwLCA0MzY1OSwgNDM2NjYsIDQzNjc0LCA0MzY4MCwgNDM2ODcsIDQzNjk1LCA0MzcwMSwgNDM3MDUsIDQzNzEwLCAKKyAgICA0MzcxNiwgNDM3MjQsIDQzNzI5LCA0MzczMywgNDM3NDIsIDEwMzIyLCA0Mzc1MCwgNDM3NTQsIDQzNzYyLCA0Mzc2OSwgCisgICAgNDM3NzQsIDQzNzc5LCA0Mzc4NCwgNDM3ODgsIDQzNzkxLCA0Mzc5NSwgNDM3OTgsIDQzODAyLCA0MzgwOSwgNDM4MTQsIAorICAgIDQzODE4LCA0MzgyNCwgMjg3NDcsIDM0MDMwLCA0MzgyOCwgNDM4MzcsIDQzODQ1LCA0Mzg1MSwgNDM4NTgsIDQzODY0LCAKKyAgICA0Mzg3MCwgNDM4NzUsIDQzODc4LCA0Mzg4MCwgNDM4ODcsIDQzODk0LCA0MzkwMCwgNDM5MDQsIDQzOTA3LCA0MzkxMSwgCisgICAgNDM5MTUsIDQzOTE5LCA0MzkyNCwgNDM5MjgsIDQzOTMyLCA0MzkzNSwgNDM5MzksIDQzOTUzLCAyNTEyMSwgNDM5NzIsIAorICAgIDQzOTg1LCA0Mzk5OCwgNDQwMTEsIDI1MTM5LCA0NDAyNiwgMTE1MjAsIDQ0MDQxLCA0NDA0NywgNDQwNTEsIDQ0MDYxLCAKKyAgICA0NDA2NSwgNDQwNjksIDQ0MDczLCA0NDA4MCwgNDQwODUsIDQ0MDg5LCA0NDA5NiwgNDQxMDIsIDQ0MTA3LCA0NDExMywgCisgICAgNDQxMjMsIDQ0MTM1LCA0NDE0NiwgNDQxNTEsIDQ0MTU4LCA0NDE2MiwgNDQxNjYsIDQ0MTY5LCAxNzQ5MCwgMzg1NCwgCisgICAgNDQxNzcsIDE3MDg3LCA0NDE5MCwgNDQxOTcsIDQ0MjA0LCA0NDIwOCwgNDQyMTIsIDQ0MjE3LCA0NDIyMywgNDQyMjgsIAorICAgIDQ0MjM0LCA0NDIzOCwgNDQyNDIsIDQ0MjQ1LCA0NDI1MCwgNDQyNTQsIDQ0MjU5LCA4MTA2LCAxMDEyLCA0NDI2NCwgCisgICAgNDQyNjgsIDQ0Mjc0LCA0NDI4MywgNDQyODgsIDQ0Mjk3LCA0NDMwNCwgMzkyMDksIDQ0MzEwLCA0NDMxNSwgNDQzMTksIAorICAgIDQ0MzI0LCA0NDMzMSwgNDQzMzcsIDQ0MzQxLCA0NDM0NCwgNDQzNDgsIDQ0MzUzLCAxNTk4MSwgNDQzNjAsIDQ0MzY3LCAKKyAgICA0NDM3MSwgNDQzNzQsIDQ0Mzc5LCA0NDM4NCwgNDQzOTAsIDQ0Mzk1LCA0NDQwMCwgNDQ0MDQsIDQ0NDA5LCA0NDQxOSwgCisgICAgNDQ0MjQsIDQ0NDMwLCA0NDQzNSwgNDQ0NDEsIDQ0NDQ2LCA0NDQ1MiwgNDQ0NjIsIDQ0NDY3LCA0NDQ3MiwgNDQ0NzYsIAorICAgIDQ0NDgxLCA3NTgyLCA3NTk0LCA0NDQ4NiwgNDQ0ODksIDQ0NDk2LCA0NDUwMiwgNDQ1MTEsIDk1NjAsIDM3MTMxLCA0NDUxOSwgCisgICAgNDQ1MjMsIDQ0NTI3LCAzNDgyMCwgNDQ1MzUsIDQ0NTQ2LCA0NDU1NCwgMzk0MDksIDQ0NTYxLCA0NDU2NiwgNDQ1NzEsIAorICAgIDQ0NTgyLCA0NDU4OSwgNDQ2MDAsIDM0ODQ0LCAyMzM1MSwgNDQ2MDgsIDkzNCwgNDQ2MTMsIDE1MDMwLCA0NDYxOSwgCisgICAgMzA1MDMsIDQ0NjI1LCA0NDYzMCwgNDQ2NDAsIDQ0NjQ5LCA0NDY1NiwgNDQ2NjIsIDQ0NjY2LCA0NDY2OSwgNDQ2NzYsIAorICAgIDQ0NjgyLCA0NDY4OSwgNDQ2OTUsIDQ0NzA1LCA0NDcxMywgNDQ3MTksIDQ0NzI1LCA0NDczMCwgNDQ3MzQsIDQ0NzQxLCAKKyAgICA0NDc0NiwgNDQ3NTIsIDQ0NzU5LCA0NDc2NSwgNDM5MjAsIDQ0NzcwLCA0NDc3NCwgNTcxLCAxNTE0NiwgNDQ3ODAsIAorICAgIDQ0Nzg1LCA0NDc4OCwgNDQ3OTQsIDQ0ODAyLCAxMzYxLCA0NDgwNywgNDQ4MTEsIDQ0ODE2LCA0NDgyMSwgNDQ4MjYsIAorICAgIDQ0ODMzLCA0NDgzNywgNDQ4NDIsIDQ0ODQ4LCA0NDg1MiwgMzQwNDAsIDQ0ODU3LCA0NDg2MiwgNDQ4NzEsIDQ0ODc4LCAKKyAgICA0NDg4OCwgNDQ4OTQsIDMwNTQ3LCA0NDkxMSwgNDQ5MjAsIDQ0OTI4LCA0NDkzNCwgNDQ5MzksIDQ0OTQ2LCA0NDk1MiwgCisgICAgNDQ5NjAsIDQ0OTY5LCA0NDk3NywgNDQ5ODEsIDQ0OTg2LCA0NDk5NCwgMzE1NTYsIDM0ODUzLCA0NTAwMCwgNDUwMTksIAorICAgIDE3MzkzLCA0NTAzMywgNDUwNDksIDQ1MDYzLCA0NTA2OSwgNDUwNzQsIDQ1MDc5LCA0NTA4NCwgNDUwOTAsIDM0ODU5LCAKKyAgICA0NTA5NSwgNDUwOTgsIDQ1MTA1LCA0NTExMiwgNDUxMTcsIDQ1MTIxLCA0MTIsIDI5ODQsIDQ1MTI4LCA0NTEzMywgNDUxMzgsIAorICAgIDI5NzE3LCA0NDk0OSwgNDUxNDIsIDQ1MTQ3LCA0NTE1NSwgNDUxNTksIDQ1MTYyLCA0NTE2NywgNDUxNzMsIDQ1MTc5LCAKKyAgICA0NTE4NCwgNDUxODgsIDMwNjE0LCA0NTE5MSwgNDUxOTYsIDQ1MjAwLCA0NTIwMywgNDUyMDgsIDQ1MjEyLCA0NTIxNywgCisgICAgNDUyMjIsIDQ1MjI2LCA0NTIzMSwgNDUyMzUsIDQ1MjM5LCA0NTI0MywgMjMwNDAsIDIzMDUxLCA0NTI0OCwgNDUyNTMsIAorICAgIDQ1MjU5LCA0NTI2NCwgNDUyNzAsIDI5MzA1LCA0NTI3NSwgNDUyNzksIDIzMTM3LCAxNzY5NiwgNDUyODIsIDQ1Mjg3LCAKKyAgICA0NTI5MiwgNDUyOTcsIDQ1MzAyLCA0NTMwNywgNDUzMTIsIDQ1MzE3LCA0NjUsIDY4LCAzNDA1MywgMzQwNTgsIDM0MDYzLCAKKyAgICAzNDA2OSwgMzQwNzQsIDM0MDc5LCA0NTMyMiwgMzQwODMsIDQ1MzI2LCA0NTMzMCwgNDUzMzQsIDM0MDg4LCAzNDA5NCwgCisgICAgNDUzNDgsIDM0MTA1LCAzNDExMCwgNDUzNTYsIDQ1MzYxLCAzNDExNiwgNDUzNjYsIDQ1MzcxLCA0NTM3NiwgNDUzODEsIAorICAgIDQ1MzkwLCA0NTM5NiwgNDU0MDIsIDQ1NDA4LCAzNDEzMywgNDU0MjEsIDQ1NDMwLCA0NTQzNiwgMzQxMzcsIDQ1NDQwLCAKKyAgICAzNDE0MiwgNDU0NDUsIDM0MTQ3LCAzNDE1MiwgNDU0NDgsIDQ1NDUzLCA0NTQ1NywgNDU0NjMsIDMzNjgxLCA0NTQ3MCwgCisgICAgMTQ5MDQsIDQ1NDc3LCA0NTQ4MiwgMzQxNTcsIDQ1NDg2LCA0NTQ5MSwgNDU0OTYsIDQ1NTAxLCA0NTUwNSwgNDU1MTAsIAorICAgIDQ1NTE1LCA0NTUyMSwgNDU1MjYsIDQ1NTMxLCA0NTUzNywgNDU1NDMsIDQ1NTQ4LCA0NTU1MiwgNDU1NTcsIDQ1NTYyLCAKKyAgICA0NTU2NywgNDU1NzEsIDQ1NTc2LCA0NTU4MSwgNDU1ODYsIDQ1NTkyLCA0NTU5OCwgNDU2MDQsIDQ1NjA5LCA0NTYxMywgCisgICAgNDU2MTgsIDQ1NjIyLCAzNDE2MSwgMzQxNjYsIDM0MTcxLCA0NTYyNiwgNDU2MzAsIDQ1NjM1LCA0NTYzOSwgMzQxNzYsIAorICAgIDM0MTgyLCAzNDE4OCwgMzQyMDAsIDQ1NjUxLCAyODMxNCwgNDU2NTUsIDQ1NjYwLCA0NTY2NCwgNDU2NjksIDQ1Njc2LCAKKyAgICA0NTY4MSwgNDU2ODYsIDQ1NjkxLCA0NTY5NSwgNDU2OTksIDQ1NzA5LCA0NTcxNCwgNDU3MTksIDQ1NzIzLCA0NTcyNywgCisgICAgNDU3MzAsIDQ1NzM4LCAzNDI0OCwgNDU3NDMsIDE0NDYsIDQ1NzQ5LCA0NTc1NCwgNDU3NjAsIDQ1NzY4LCA0NTc3MiwgCisgICAgNDU3ODEsIDQ1Nzg5LCA0NTc5MywgNDU3OTcsIDQ1ODA1LCA0NTgxMSwgNDU4MTksIDQ1ODM1LCA0NTgzOSwgNDU4NDMsIAorICAgIDQ1ODQ3LCA0NTg1MiwgNDU4NTgsIDQ1ODczLCAzNDI4NSwgMTc0NSwgMTMzMDgsIDQ1ODc3LCAxMzQwLCAxMzU1LCA0NTg4OSwgCisgICAgNDU4OTcsIDQ1OTA0LCA0NTkwOSwgNDU5MTYsIDQ1OTIxLCAxMDAxMiwgMTA5NiwgMjUyOSwgMTEzMTEsIDQ1OTI4LCA5OTEwLCAKKyAgICA0NTkzMywgNDU5MzYsIDQ1OTQ1LCAxMjQ4LCA0NTk1MCwgNDQwODYsIDQ1OTU3LCA0NTk2NiwgNDU5NzEsIDQ1OTc1LCAKKyAgICA0NTk4MywgMjQ1MjYsIDI1ODEsIDQ1OTkwLCAxMTc3NiwgNDYwMDAsIDQ2MDA2LCAyMzU2LCAyMzY2LCA0NjAxNSwgNDYwMjQsIAorICAgIDQ2MDM0LCA0NjA0NSwgMzM2NSwgMzc0ODUsIDQ2MDUwLCAxMTM3NSwgNDAyNCwgMTg0MDAsIDEyNTMsIDQ2MDU0LCA0NjA2MiwgCisgICAgNDYwNjksIDQ2MDc0LCA0NjA3OCwgNDYwODIsIDI2MDE4LCA0NDM1NSwgMTE0MDIsIDQ2MDkwLCA0NjA5OSwgNDYxMDgsIAorICAgIDQ2MTE2LCA0NjEyMywgNDYxMzQsIDQ2MTM5LCA0NjE1MiwgNDYxNjUsIDQ2MTc3LCA0NjE4OSwgNDYyMDEsIDQ2MjEyLCAKKyAgICA0NjIyNSwgNDYyMzYsIDQ2MjQ3LCA0NjI1NywgNDYyNjUsIDQ2MjczLCA0NjI4NSwgNDYyOTcsIDQ2MzA4LCA0NjMxNywgCisgICAgNDYzMjUsIDQ2MzMyLCA0NjM0NCwgNDYzNTEsIDQ2MzU3LCA0NjM2NiwgNDYzNzMsIDQ2Mzg2LCA0NjM5MSwgNDY0MDEsIAorICAgIDQ2NDA2LCA0NjQxMiwgNDY0MTcsIDQxNTI4LCA0NjQyMSwgNDY0MjgsIDQ2NDMyLCA0NjQzOSwgNDY0NDcsIDQ2NDU0LCAKKyAgICAyNTQyLCA0NjQ2MSwgNDY0NzIsIDQ2NDgyLCA0NjQ5MSwgNDY0OTksIDQ2NTA5LCA0NjUxNywgNDY1MjYsIDQ2NTM2LCAKKyAgICA0NjU0NSwgNDY1NTAsIDQ2NTU2LCA0NjU2MiwgMzg5OCwgNDY1NzMsIDQ2NTgzLCA0NjU5MiwgNDY2MDEsIDQ2NjA5LCAKKyAgICA0NjYxOSwgNDY2MjcsIDQ2NjM2LCA0NjY0MSwgNDY2NDYsIDQ2NjUxLCAxNjc1LCA0NywgNDY2NTksIDQ2NjY3LCA0NjY3OCwgCisgICAgNDY2ODksIDE4MDM5LCA0NjY5OSwgNDY3MDMsIDQ2NzEwLCA0NjcxNiwgNDY3MjEsIDQ2NzI1LCA0NjczNiwgNDY3NDYsIAorICAgIDQ2NzU1LCA0Njc2NiwgMTg0MzksIDE4NDQ0LCA0Njc3MSwgNDY3ODAsIDQ2Nzg1LCA0Njc5NSwgNDY4MDAsIDQ2ODA4LCAKKyAgICA0NjgxNiwgNDY4MjMsIDQ2ODI5LCAxNjM3LCAyODMsIDQ2ODMzLCA0NjgzOSwgNDY4NDQsIDQ2ODQ3LCAyMTI4LCA0NDIwOSwgCisgICAgNDY4NTUsIDQ2ODU5LCA0Njg2MiwgMTQ5MSwgNDY4NjgsIDE1MzMxLCAxMjU4LCA0Njg3MywgNDY4ODYsIDQ2OTAwLCAyNjcxLCAKKyAgICA0NjkxOCwgNDY5MzAsIDQ2OTQyLCAyNjg1LCAyNzAyLCA0Njk1NiwgNDY5NjksIDI3MTcsIDQ2OTgzLCA0Njk5NSwgMjczMiwgCisgICAgNDcwMDksIDEyNjQsIDEyNzAsIDEyNzYsIDExNjgyLCA0NzAxNCwgNDcwMTksIDQ3MDI0LCA0NzAyOCwgNDcwNDMsIDQ3MDU4LCAKKyAgICA0NzA3MywgNDcwODgsIDQ3MTAzLCA0NzExOCwgNDcxMzMsIDQ3MTQ4LCA0NzE2MywgNDcxNzgsIDQ3MTkzLCA0NzIwOCwgCisgICAgNDcyMjMsIDQ3MjM4LCA0NzI1MywgNDcyNjgsIDQ3MjgzLCA0NzI5OCwgNDczMTMsIDQ3MzI4LCA0NzM0MywgNDczNTgsIAorICAgIDQ3MzczLCA0NzM4OCwgNDc0MDMsIDQ3NDE4LCA0NzQzMywgNDc0NDgsIDQ3NDYzLCA0NzQ3OCwgNDc0OTMsIDQ3NTA4LCAKKyAgICA0NzUyMywgNDc1MzgsIDQ3NTUzLCA0NzU2OCwgNDc1ODMsIDQ3NTk4LCA0NzYxMywgNDc2MjgsIDQ3NjQzLCA0NzY1OCwgCisgICAgNDc2NzMsIDQ3Njg4LCA0NzcwMywgNDc3MTgsIDQ3NzMzLCA0Nzc0OCwgNDc3NjMsIDQ3Nzc4LCA0Nzc5MywgNDc4MDgsIAorICAgIDQ3ODIzLCA0NzgzOCwgNDc4NTMsIDQ3ODY4LCA0Nzg4MywgNDc4OTgsIDQ3OTEzLCA0NzkyOCwgNDc5NDMsIDQ3OTU4LCAKKyAgICA0Nzk3MywgNDc5ODgsIDQ4MDAzLCA0ODAxOCwgNDgwMzMsIDQ4MDQ4LCA0ODA2MywgNDgwNzgsIDQ4MDkzLCA0ODEwOCwgCisgICAgNDgxMjMsIDQ4MTM4LCA0ODE1MywgNDgxNjgsIDQ4MTgzLCA0ODE5OCwgNDgyMTMsIDQ4MjI4LCA0ODI0MywgNDgyNTgsIAorICAgIDQ4MjczLCA0ODI4OCwgNDgzMDMsIDQ4MzE4LCA0ODMzMywgNDgzNDgsIDQ4MzYzLCA0ODM3OCwgNDgzOTMsIDQ4NDA4LCAKKyAgICA0ODQyMywgNDg0MzgsIDQ4NDUzLCA0ODQ2OCwgNDg0ODMsIDQ4NDk4LCA0ODUxMywgNDg1MjgsIDQ4NTQzLCA0ODU1OCwgCisgICAgNDg1NzMsIDQ4NTg4LCA0ODYwMywgNDg2MTgsIDQ4NjMzLCA0ODY0OCwgNDg2NjMsIDQ4Njc4LCA0ODY5MywgNDg3MDgsIAorICAgIDQ4NzIzLCA0ODczOCwgNDg3NTMsIDQ4NzY4LCA0ODc4MywgNDg3OTgsIDQ4ODEzLCA0ODgyOCwgNDg4NDMsIDQ4ODU4LCAKKyAgICA0ODg3MywgNDg4ODgsIDQ4OTAzLCA0ODkxOCwgNDg5MzMsIDQ4OTQ4LCA0ODk2MywgNDg5NzgsIDQ4OTkzLCA0OTAwOCwgCisgICAgNDkwMjMsIDQ5MDM4LCA0OTA1MywgNDkwNjgsIDQ5MDgzLCA0OTA5OCwgNDkxMTMsIDQ5MTI4LCA0OTE0MywgNDkxNTgsIAorICAgIDQ5MTczLCA0OTE4OCwgNDkyMDMsIDQ5MjE4LCA0OTIzMywgNDkyNDgsIDQ5MjYzLCA0OTI3OCwgNDkyOTMsIDQ5MzA4LCAKKyAgICA0OTMyMywgNDkzMzgsIDQ5MzUzLCA0OTM2OCwgNDkzODMsIDQ5Mzk4LCA0OTQxMywgNDk0MjgsIDQ5NDQzLCA0OTQ1OCwgCisgICAgNDk0NzMsIDQ5NDg4LCA0OTUwMywgNDk1MTgsIDQ5NTMzLCA0OTU0OCwgNDk1NjMsIDQ5NTc4LCA0OTU5MywgNDk2MDgsIAorICAgIDQ5NjIzLCA0OTYzOCwgNDk2NTMsIDQ5NjY4LCA0OTY4MywgNDk2OTgsIDQ5NzEzLCA0OTcyOCwgNDk3NDMsIDQ5NzU4LCAKKyAgICA0OTc3MywgNDk3ODgsIDQ5ODAzLCA0OTgxOCwgNDk4MzMsIDQ5ODQ4LCA0OTg2MywgNDk4NzgsIDQ5ODkzLCA0OTkwOCwgCisgICAgNDk5MjMsIDQ5OTM4LCA0OTk1MywgNDk5NjgsIDQ5OTgzLCA0OTk5OCwgNTAwMTMsIDUwMDI4LCA1MDA0MywgNTAwNTgsIAorICAgIDUwMDczLCA1MDA4OCwgNTAxMDMsIDUwMTE4LCA1MDEzMywgNTAxNDgsIDUwMTYzLCA1MDE3OCwgNTAxOTMsIDUwMjA4LCAKKyAgICA1MDIyMywgNTAyMzgsIDUwMjUzLCA1MDI2OCwgNTAyODMsIDUwMjk4LCA1MDMxMywgNTAzMjgsIDUwMzQzLCA1MDM1OCwgCisgICAgNTAzNzMsIDUwMzg4LCA1MDQwMywgNTA0MTgsIDUwNDMzLCA1MDQ0OCwgNTA0NjMsIDUwNDc4LCA1MDQ5MywgNTA1MDgsIAorICAgIDUwNTIzLCA1MDUzOCwgNTA1NTMsIDUwNTY4LCA1MDU4MywgNTA1OTgsIDUwNjEzLCA1MDYyOCwgNTA2NDMsIDUwNjU4LCAKKyAgICA1MDY3MywgNTA2ODgsIDUwNzAzLCA1MDcxOCwgNTA3MzMsIDUwNzQ4LCA1MDc2MywgNTA3NzgsIDUwNzkzLCA1MDgwOCwgCisgICAgNTA4MjMsIDUwODM4LCA1MDg1MywgNTA4NjgsIDUwODgzLCA1MDg5OCwgNTA5MTMsIDUwOTI4LCA1MDk0MywgNTA5NTgsIAorICAgIDUwOTczLCA1MDk4OCwgNTEwMDMsIDUxMDE4LCA1MTAzMywgNTEwNDgsIDUxMDYzLCA1MTA3OCwgNTEwOTMsIDUxMTA4LCAKKyAgICA1MTEyMywgNTExMzgsIDUxMTUzLCA1MTE2OCwgNTExODMsIDUxMTk4LCA1MTIxMywgNTEyMjgsIDUxMjQzLCA1MTI1OCwgCisgICAgNTEyNzMsIDUxMjg4LCA1MTMwMywgNTEzMTgsIDUxMzMzLCA1MTM0OCwgNTEzNjMsIDUxMzc4LCA1MTM5MywgNTE0MDgsIAorICAgIDUxNDIzLCA1MTQzOCwgNTE0NTMsIDUxNDY4LCA1MTQ4MywgNTE0OTgsIDUxNTEzLCA1MTUyOCwgNTE1NDMsIDUxNTU4LCAKKyAgICA1MTU3MywgNTE1ODgsIDUxNjAzLCA1MTYxOCwgNTE2MzMsIDUxNjQ4LCA1MTY2MywgNTE2NzgsIDUxNjkzLCA1MTcwOCwgCisgICAgNTE3MjMsIDUxNzM4LCA1MTc1MywgNTE3NjgsIDUxNzgzLCA1MTc5OCwgNTE4MTMsIDUxODI4LCA1MTg0MywgNTE4NTgsIAorICAgIDUxODczLCA1MTg4OCwgNTE5MDMsIDUxOTE4LCA1MTkzMywgNTE5NDgsIDUxOTYzLCA1MTk3OCwgNTE5OTMsIDUyMDA4LCAKKyAgICA1MjAyMywgNTIwMzgsIDUyMDUzLCA1MjA2OCwgNTIwODMsIDUyMDk4LCA1MjExMywgNTIxMjgsIDUyMTQzLCA1MjE1OCwgCisgICAgNTIxNzMsIDUyMTg4LCA1MjIwMywgNTIyMTgsIDUyMjMzLCA1MjI0OCwgNTIyNjMsIDUyMjc4LCA1MjI5MywgNTIzMDgsIAorICAgIDUyMzIzLCA1MjMzOCwgNTIzNTMsIDUyMzY4LCA1MjM4MywgNTIzOTgsIDUyNDEzLCA1MjQyOCwgNTI0NDMsIDUyNDU4LCAKKyAgICA1MjQ3MywgNTI0ODgsIDUyNTAzLCA1MjUxOCwgNTI1MzMsIDUyNTQ4LCA1MjU2MywgNTI1NzgsIDUyNTkzLCA1MjYwOCwgCisgICAgNTI2MjMsIDUyNjM4LCA1MjY1MywgNTI2NjgsIDUyNjgzLCA1MjY5OCwgNTI3MTMsIDUyNzI4LCA1Mjc0MywgNTI3NTgsIAorICAgIDUyNzczLCA1Mjc4OCwgNTI4MDMsIDUyODE4LCA1MjgzMywgNTI4NDgsIDUyODYzLCA1Mjg3OCwgNTI4OTMsIDUyOTA4LCAKKyAgICA1MjkyMywgNTI5MzgsIDUyOTUzLCA1Mjk2OCwgNTI5ODMsIDUyOTk4LCA1MzAxMywgNTMwMjgsIDUzMDQzLCA1MzA1OCwgCisgICAgNTMwNzMsIDUzMDg4LCA1MzEwMywgNTMxMTgsIDUzMTMzLCA1MzE0OCwgNTMxNjMsIDUzMTc4LCA1MzE5MywgNTMyMDgsIAorICAgIDUzMjIzLCA1MzIzOCwgNTMyNTMsIDUzMjY4LCA1MzI4MywgNTMyOTgsIDUzMzEzLCA1MzMyOCwgNTMzNDMsIDUzMzU4LCAKKyAgICA1MzM3MywgNTMzODgsIDUzNDAzLCA1MzQxOCwgNTM0MzMsIDUzNDQ4LCA1MzQ2MywgNTM0NzgsIDUzNDkzLCA1MzUwOCwgCisgICAgNTM1MjMsIDUzNTM4LCA1MzU1MywgNTM1NjgsIDUzNTgzLCA1MzU5OCwgNTM2MTMsIDUzNjI4LCA1MzY0MywgNTM2NTgsIAorICAgIDUzNjczLCA1MzY4OCwgNTM3MDMsIDUzNzE4LCA1MzczMywgNTM3NDgsIDUzNzYzLCA1Mzc3OCwgNTM3OTMsIDUzODA4LCAKKyAgICA1MzgyMywgNTM4MzgsIDUzODUzLCA1Mzg2OCwgNTM4ODMsIDUzODk4LCA1MzkxMywgNTM5MjgsIDUzOTQzLCA1Mzk1OCwgCisgICAgNTM5NzMsIDUzOTg4LCA1NDAwMywgNTQwMTgsIDU0MDMzLCA1NDA0OCwgNTQwNjMsIDU0MDc4LCA1NDA5MywgNTQxMDgsIAorICAgIDU0MTIzLCA1NDEzOCwgNTQxNTMsIDU0MTY4LCA1NDE4MywgNTQxOTgsIDU0MjEzLCA1NDIyOCwgNTQyNDMsIDU0MjU4LCAKKyAgICA1NDI3MywgNTQyODgsIDU0MzAzLCA1NDMxOCwgNTQzMzMsIDU0MzQ4LCA1NDM2MywgNTQzNzgsIDU0MzkzLCA1NDQwOCwgCisgICAgNTQ0MjMsIDU0NDM4LCA1NDQ1MywgNTQ0NjgsIDU0NDgzLCA1NDQ5OCwgNTQ1MTMsIDU0NTI4LCA1NDU0MywgNTQ1NTgsIAorICAgIDU0NTczLCA1NDU4OCwgNTQ2MDMsIDU0NjE4LCA1NDYzMywgNTQ2NDgsIDU0NjYzLCA1NDY3OCwgNTQ2OTMsIDU0NzA4LCAKKyAgICA1NDcyMywgNTQ3MzgsIDU0NzUzLCA1NDc2OCwgNTQ3ODMsIDU0Nzk4LCA1NDgxMywgNTQ4MjgsIDU0ODQzLCA1NDg1OSwgCisgICAgNTQ4NzUsIDU0ODkxLCA1NDkwNywgNTQ5MjMsIDU0OTM5LCA1NDk1NSwgNTQ5NzEsIDU0OTg3LCA1NTAwMywgNTUwMTksIAorICAgIDU1MDM1LCA1NTA1MSwgNTUwNjcsIDU1MDgzLCA1NTA5OSwgNTUxMTUsIDU1MTMxLCA1NTE0NywgNTUxNjMsIDU1MTc5LCAKKyAgICA1NTE5NSwgNTUyMTEsIDU1MjI3LCA1NTI0MywgNTUyNTksIDU1Mjc1LCA1NTI5MSwgNTUzMDcsIDU1MzIzLCA1NTMzOSwgCisgICAgNTUzNTUsIDU1MzcxLCA1NTM4NywgNTU0MDMsIDU1NDE5LCA1NTQzNSwgNTU0NTEsIDU1NDY3LCA1NTQ4MywgNTU0OTksIAorICAgIDU1NTE1LCA1NTUzMSwgNTU1NDcsIDU1NTYzLCA1NTU3OSwgNTU1OTUsIDU1NjExLCA1NTYyNywgNTU2NDMsIDU1NjU5LCAKKyAgICA1NTY3NSwgNTU2OTEsIDU1NzA3LCA1NTcyMywgNTU3MzksIDU1NzU1LCA1NTc3MSwgNTU3ODcsIDU1ODAzLCA1NTgxOSwgCisgICAgNTU4MzUsIDU1ODUxLCA1NTg2NywgNTU4ODMsIDU1ODk5LCA1NTkxNSwgNTU5MzEsIDU1OTQ3LCA1NTk2MywgNTU5NzksIAorICAgIDU1OTk1LCA1NjAxMSwgNTYwMjcsIDU2MDQzLCA1NjA1OSwgNTYwNzUsIDU2MDkxLCA1NjEwNywgNTYxMjMsIDU2MTM5LCAKKyAgICA1NjE1NSwgNTYxNzEsIDU2MTg3LCA1NjIwMywgNTYyMTksIDU2MjM1LCA1NjI1MSwgNTYyNjcsIDU2MjgzLCA1NjI5OSwgCisgICAgNTYzMTUsIDU2MzMxLCA1NjM0NywgNTYzNjMsIDU2Mzc5LCA1NjM5NSwgNTY0MTEsIDU2NDI3LCA1NjQ0MywgNTY0NTksIAorICAgIDU2NDc1LCA1NjQ5MSwgNTY1MDcsIDU2NTIzLCA1NjUzOSwgNTY1NTUsIDU2NTcxLCA1NjU4NywgNTY2MDMsIDU2NjE5LCAKKyAgICA1NjYzNSwgNTY2NTEsIDU2NjY3LCA1NjY4MywgNTY2OTksIDU2NzE1LCA1NjczMSwgNTY3NDcsIDU2NzYzLCA1Njc3OSwgCisgICAgNTY3OTUsIDU2ODExLCA1NjgyNywgNTY4NDMsIDU2ODU5LCA1Njg3NSwgNTY4OTEsIDU2OTA3LCA1NjkyMywgNTY5MzksIAorICAgIDU2OTU1LCA1Njk3MSwgNTY5ODcsIDU3MDAzLCA1NzAxOSwgNTcwMzUsIDU3MDUxLCA1NzA2NywgNTcwODMsIDU3MDk5LCAKKyAgICA1NzExNSwgNTcxMzEsIDU3MTQ3LCA1NzE2MywgNTcxNzksIDU3MTk1LCA1NzIxMSwgNTcyMjcsIDU3MjQzLCA1NzI1OSwgCisgICAgNTcyNzUsIDU3MjkxLCA1NzMwNywgNTczMjMsIDU3MzM5LCA1NzM1NSwgNTczNzEsIDU3Mzg3LCA1NzQwMywgNTc0MTksIAorICAgIDU3NDM1LCA1NzQ1MSwgNTc0NjcsIDU3NDgzLCA1NzQ5OSwgNTc1MTUsIDU3NTMxLCA1NzU0NywgNTc1NjMsIDU3NTc5LCAKKyAgICA1NzU5NSwgNTc2MTEsIDU3NjI3LCA1NzY0MywgNTc2NTksIDU3Njc1LCA1NzY5MSwgNTc3MDcsIDU3NzIzLCA1NzczOSwgCisgICAgNTc3NTUsIDU3NzcxLCA1Nzc4NywgNTc4MDMsIDU3ODE5LCA1NzgzNSwgNTc4NTEsIDU3ODY3LCA1Nzg4MywgNTc4OTksIAorICAgIDU3OTE1LCA1NzkzMSwgNTc5NDcsIDU3OTYzLCA1Nzk3OSwgNTc5OTUsIDU4MDExLCA1ODAyNywgNTgwNDMsIDU4MDU5LCAKKyAgICA1ODA3NSwgNTgwOTEsIDU4MTA3LCA1ODEyMywgNTgxMzksIDU4MTU1LCA1ODE3MSwgNTgxODcsIDU4MjAzLCA1ODIxOSwgCisgICAgNTgyMzUsIDU4MjUxLCA1ODI2NywgNTgyODMsIDU4Mjk5LCA1ODMxNSwgNTgzMzEsIDU4MzQ3LCA1ODM2MywgNTgzNzksIAorICAgIDU4Mzk1LCA1ODQxMSwgNTg0MjcsIDU4NDQzLCA1ODQ1OSwgNTg0NzUsIDU4NDkxLCA1ODUwNywgNTg1MjMsIDU4NTM5LCAKKyAgICA1ODU1NSwgNTg1NzEsIDU4NTg3LCA1ODYwMywgNTg2MTksIDU4NjM1LCA1ODY1MSwgNTg2NjcsIDU4NjgzLCA1ODY5OSwgCisgICAgNTg3MTUsIDU4NzMxLCA1ODc0NywgNTg3NjMsIDU4Nzc5LCA1ODc5NSwgNTg4MTEsIDU4ODI3LCA1ODg0MywgNTg4NTksIAorICAgIDU4ODc1LCA1ODg5MSwgNTg5MDcsIDU4OTIzLCA1ODkzOSwgNTg5NTUsIDU4OTcxLCA1ODk4NywgNTkwMDMsIDU5MDE5LCAKKyAgICA1OTAzNSwgNTkwNTEsIDU5MDY3LCA1OTA4MywgNTkwOTksIDU5MTE1LCA1OTEzMSwgNTkxNDcsIDU5MTYzLCA1OTE3OSwgCisgICAgNTkxOTUsIDU5MjExLCA1OTIyNywgNTkyNDMsIDU5MjU5LCA1OTI3NSwgNTkyOTEsIDU5MzA3LCA1OTMyMywgNTkzMzksIAorICAgIDU5MzU1LCA1OTM3MSwgNTkzODcsIDU5NDAzLCA1OTQxOSwgNTk0MzUsIDU5NDUxLCA1OTQ2NywgNTk0ODMsIDU5NDk5LCAKKyAgICA1OTUxNSwgNTk1MzEsIDU5NTQ3LCA1OTU2MywgNTk1NzksIDU5NTk1LCA1OTYxMSwgNTk2MjcsIDU5NjQzLCA1OTY1OSwgCisgICAgNTk2NzUsIDU5NjkxLCA1OTcwNywgNTk3MjMsIDU5NzM5LCA1OTc1NSwgNTk3NzEsIDU5Nzg3LCA1OTgwMywgNTk4MTksIAorICAgIDU5ODM1LCA1OTg1MSwgNTk4NjcsIDU5ODgzLCA1OTg5OSwgNTk5MTUsIDU5OTMxLCA1OTk0NywgNTk5NjMsIDU5OTc5LCAKKyAgICA1OTk5NSwgNjAwMTEsIDYwMDI3LCA2MDA0MywgNjAwNTksIDYwMDc1LCA2MDA5MSwgNjAxMDcsIDYwMTIzLCA2MDEzOSwgCisgICAgNjAxNTUsIDYwMTcxLCA2MDE4NywgNjAyMDMsIDYwMjE5LCA2MDIzNSwgNjAyNTEsIDYwMjY3LCA2MDI4MywgNjAyOTksIAorICAgIDYwMzE1LCA2MDMzMSwgNjAzNDcsIDYwMzYzLCA2MDM3OSwgNjAzOTUsIDYwNDExLCA2MDQyNywgNjA0NDMsIDYwNDU5LCAKKyAgICA2MDQ3NSwgNjA0OTEsIDYwNTA3LCA2MDUyMywgNjA1MzksIDYwNTU1LCA2MDU3MSwgNjA1ODcsIDYwNjAzLCA2MDYxOSwgCisgICAgNjA2MzUsIDYwNjUxLCA2MDY2NywgNjA2ODMsIDYwNjk5LCA2MDcxNSwgNjA3MzEsIDYwNzQ3LCA2MDc2MywgNjA3NzksIAorICAgIDYwNzk1LCA2MDgxMSwgNjA4MjcsIDYwODQzLCA2MDg1OSwgNjA4NzUsIDYwODkxLCA2MDkwNywgNjA5MjMsIDYwOTM5LCAKKyAgICA2MDk1NSwgNjA5NzEsIDYwOTg3LCA2MTAwMywgNjEwMTksIDYxMDM1LCA2MTA1MSwgNjEwNjcsIDYxMDgzLCA2MTA5OSwgCisgICAgNjExMTUsIDYxMTMxLCA2MTE0NywgNjExNjMsIDYxMTc5LCA2MTE5NSwgNjEyMTEsIDYxMjI3LCA2MTI0MywgNjEyNTksIAorICAgIDYxMjc1LCA2MTI5MSwgNjEzMDcsIDYxMzIzLCA2MTMzOSwgNjEzNTUsIDYxMzcxLCA2MTM4NywgNjE0MDMsIDYxNDE5LCAKKyAgICA2MTQzNSwgNjE0NTEsIDYxNDY3LCA2MTQ4MywgNjE0OTksIDYxNTE1LCA2MTUzMSwgNjE1NDcsIDYxNTYzLCA2MTU3OSwgCisgICAgNjE1OTUsIDYxNjExLCA2MTYyNywgNjE2NDMsIDYxNjU5LCA2MTY3NSwgNjE2OTEsIDYxNzA3LCA2MTcyMywgNjE3MzksIAorICAgIDYxNzU1LCA2MTc3MSwgNjE3ODcsIDYxODAzLCA2MTgxOSwgNjE4MzUsIDYxODUxLCA2MTg2NywgNjE4ODMsIDYxODk5LCAKKyAgICA2MTkxNSwgNjE5MzEsIDYxOTQ3LCA2MTk2MywgNjE5NzksIDYxOTk1LCA2MjAxMSwgNjIwMjcsIDYyMDQzLCA2MjA1OSwgCisgICAgNjIwNzUsIDYyMDkxLCA2MjEwNywgNjIxMjMsIDYyMTM5LCA2MjE1NSwgNjIxNzEsIDYyMTg3LCA2MjIwMywgNjIyMTksIAorICAgIDYyMjM1LCA2MjI1MSwgNjIyNjcsIDYyMjgzLCA2MjI5OSwgNjIzMTUsIDYyMzMxLCA2MjM0NywgNjIzNjMsIDYyMzc5LCAKKyAgICA2MjM5NSwgNjI0MTEsIDYyNDI3LCA2MjQ0MywgNjI0NTksIDYyNDc1LCA2MjQ5MSwgNjI1MDcsIDYyNTIzLCA2MjUzOSwgCisgICAgNjI1NTUsIDYyNTcxLCA2MjU4NywgNjI2MDMsIDYyNjE5LCA2MjYzNSwgNjI2NTEsIDYyNjY3LCA2MjY4MywgNjI2OTksIAorICAgIDYyNzE1LCA2MjczMSwgNjI3NDcsIDYyNzYzLCA2Mjc3OSwgNjI3OTUsIDYyODExLCA2MjgyNywgNjI4NDMsIDYyODU5LCAKKyAgICA2Mjg3NSwgNjI4OTEsIDYyOTA3LCA2MjkyMywgNjI5MzksIDYyOTU1LCA2Mjk3MSwgNjI5ODcsIDYzMDAzLCA2MzAxOSwgCisgICAgNjMwMzUsIDYzMDUxLCA2MzA2NywgNjMwODMsIDYzMDk5LCA2MzExNSwgNjMxMzEsIDYzMTQ3LCA2MzE2MywgNjMxNzksIAorICAgIDYzMTk1LCA2MzIxMSwgNjMyMjcsIDYzMjQzLCA2MzI1OSwgNjMyNzUsIDYzMjkxLCA2MzMwNywgNjMzMjMsIDYzMzM5LCAKKyAgICA2MzM1NSwgNjMzNzEsIDYzMzg3LCA2MzQwMywgNjM0MTksIDYzNDM1LCA2MzQ1MSwgNjM0NjcsIDYzNDgzLCA2MzQ5OSwgCisgICAgNjM1MTUsIDYzNTMwLCAxNjE1MiwgNjM1MzksIDYzNTQ0LCA2MzU1MCwgNjM1NTYsIDYzNTY2LCA2MzU3NCwgMTYzOTMsIAorICAgIDE2OTk5LCAxMDgzMSwgNjM1ODcsIDE0OTksIDE1MDMsIDYzNTk1LCAzOTc4LCAyOTgzMiwgNzUzNiwgNjM2MDEsIDYzNjA2LCAKKyAgICA2MzYxMSwgNjM2MTYsIDYzNjIxLCA2MzYyNywgNjM2MzIsIDYzNjM4LCA2MzY0MywgNjM2NDksIDYzNjU0LCA2MzY1OSwgCisgICAgNjM2NjQsIDYzNjY5LCA2MzY3NSwgNjM2ODAsIDYzNjg1LCA2MzY5MCwgNjM2OTUsIDYzNzAwLCA2MzcwNSwgNjM3MTAsIAorICAgIDYzNzE2LCA2MzcyMSwgNjM3MjcsIDYzNzM0LCAyNTg1LCA2MzczOSwgNjM3NDUsIDg5NTcsIDYzNzQ5LCA2Mzc1NCwgCisgICAgNjM3NjEsIDYzNzY5LCA2NSwgNjM3NzMsIDYzNzc5LCA2Mzc4NCwgNjM3ODksIDYzNzkzLCA2Mzc5OCwgNjM4MDIsIDYzODA2LCAKKyAgICAxMTcxOSwgNjM4MTAsIDYzODIwLCA2MzgzMywgNjM4NDQsIDYzODU3LCA2Mzg2NCwgNjM4NzAsIDExMjM2LCA2Mzg3OCwgCisgICAgNjM4ODMsIDYzODg5LCA2Mzg5NSwgNjM5MDEsIDYzOTA2LCA2MzkxMSwgNjM5MTYsIDYzOTIxLCA2MzkyNSwgNjM5MzAsIAorICAgIDYzOTM1LCA2Mzk0MCwgNjM5NDYsIDYzOTUyLCA2Mzk1OCwgNjM5NjMsIDYzOTY3LCA2Mzk3MiwgNjM5NzcsIDYzOTgxLCAKKyAgICA2Mzk4NiwgNjM5OTEsIDYzOTk2LCA2NDAwMCwgMTE3MzUsIDExNzQ2LCAxMTc1MSwgMTU0MiwgNjQwMDQsIDY0MDEwLCAKKyAgICAxNTQ3LCAxNzg5MCwgNjQwMTUsIDE3ODk5LCA2NDAyMCwgNjQwMjYsIDY0MDMxLCAxNTc4LCA2NDAzNywgMTU4NCwgMTU5MCwgCisgICAgMTE3ODEsIDY0MDQyLCA2NDA1MSwgNjQwNTksIDY0MDY3LCA2NDA3NCwgNjQwNzgsIDY0MDgyLCA2NDA4OCwgNjQwOTMsIAorICAgIDMzNzIxLCA2NDA5OCwgNjQxMDUsIDY0MTEyLCA2NDExNywgNjQxMjEsIDY0MTI1LCA2NDEzNCwgMTU5NSwgMTgwMDgsIAorICAgIDY0MTM5LCA2NDE0MywgMTgwMTksIDExMjYsIDY0MTQ3LCA2NDE1NCwgNjQxNTksIDY0MTYzLCAxODA1NSwgMTU5OSwgCisgICAgNDE2ODUsIDY0MTY2LCA2NDE3MSwgNjQxODEsIDY0MTkwLCA2NDE5NSwgNjQxOTksIDY0MjA1LCAxNjA0LCA0NDMxNiwgCisgICAgNjQyMTAsIDY0MjE5LCA2NDIyNSwgNjQyMzAsIDY0MjM1LCAxMTk5MiwgMTE5OTgsIDY0MjQxLCA2NDI1MywgNjQyNzAsIAorICAgIDY0Mjg3LCA2NDMwNCwgNjQzMjEsIDY0MzM4LCA2NDM1NSwgNjQzNzIsIDY0Mzg5LCA2NDQwNiwgNjQ0MjMsIDY0NDQwLCAKKyAgICA2NDQ1NywgNjQ0NzQsIDY0NDkxLCA2NDUwOCwgNjQ1MjUsIDY0NTQyLCA2NDU1OSwgNjQ1NzYsIDY0NTkzLCA2NDYxMCwgCisgICAgNjQ2MjcsIDY0NjQ0LCA2NDY2MSwgNjQ2NzgsIDY0Njk1LCA2NDcxMiwgNjQ3MjksIDY0NzQ2LCA2NDc2MywgNjQ3ODAsIAorICAgIDY0Nzk3LCA2NDgxNCwgNjQ4MzEsIDY0ODQ4LCA2NDg2NSwgNjQ4ODIsIDY0ODk5LCA2NDkxNiwgNjQ5MzMsIDY0OTUwLCAKKyAgICA2NDk2NywgNjQ5ODQsIDY1MDAxLCA2NTAxOCwgNjUwMzUsIDY1MDUyLCA2NTA2OSwgNjUwODYsIDY1MDk3LCA2NTEwNywgCisgICAgNjUxMTIsIDE2MDksIDY1MTE2LCA2NTEyMSwgNjUxMjcsIDY1MTMyLCA2NTEzNywgNjUxNDQsIDk5MjksIDE2MTQsIDY1MTUwLCAKKyAgICA2NTE1OSwgMzAxNjEsIDY1MTY0LCA2NTE3NSwgMTIwMDksIDY1MTg1LCA2NTE5MCwgNjUxOTYsIDY1MjAxLCA2NTIwOCwgCisgICAgNjUyMTQsIDY1MjE5LCAxNjE5LCAxODMzOCwgNjUyMjQsIDY1MjMwLCAxMjAxOSwgMTYyNCwgMTIwMjQsIDY1MjM2LCAKKyAgICA2NTI0MSwgNjUyNDcsIDY1MjUyLCA2NTI1NywgNjUyNjIsIDY1MjY3LCA2NTI3MiwgNjUyNzcsIDY1MjgyLCA2NTI4NywgCisgICAgNjUyOTMsIDY1Mjk5LCA2NTMwNSwgNjUzMTAsIDY1MzE0LCA2NTMxOSwgNjUzMjQsIDY1MzI4LCA2NTMzMywgNjUzMzgsIAorICAgIDY1MzQzLCA2NTM0OCwgNjUzNTIsIDY1MzU3LCA2NTM2MywgNjUzNjgsIDY1MzczLCA2NTM3NywgNjUzODIsIDY1Mzg3LCAKKyAgICA2NTM5MywgNjUzOTgsIDY1NDAzLCA2NTQwOSwgNjU0MTUsIDY1NDIwLCA2NTQyNCwgNjU0MjksIDY1NDM0LCA2NTQzOSwgCisgICAgNjU0NDMsIDY1NDQ4LCA2NTQ1MywgNjU0NTgsIDY1NDY0LCA2NTQ3MCwgNjU0NzUsIDY1NDc5LCA2NTQ4MywgNjU0ODgsIAorICAgIDY1NDkzLCA2NTQ5OCwgMzE3MzUsIDY1NTAyLCA2NTUwNywgNjU1MTIsIDY1NTE4LCA2NTUyMywgNjU1MjgsIDY1NTMyLCAKKyAgICA2NTUzNywgNjU1NDIsIDY1NTQ4LCA2NTU1MywgNjU1NTgsIDY1NTY0LCA2NTU3MCwgNjU1NzUsIDY1NTc5LCA2NTU4NCwgCisgICAgNjU1ODksIDY1NTkzLCA2NTU5OCwgNjU2MDMsIDY1NjA4LCA2NTYxNCwgNjU2MjAsIDY1NjI1LCA2NTYyOSwgNjU2MzQsIAorICAgIDY1NjM5LCA2NTY0MywgNjU2NDgsIDY1NjUzLCA2NTY1OCwgNjU2NjMsIDY1NjY3LCA2NTY3MCwgNjU2NzMsIDY1Njc4LCAKKyAgICA2NTY4MywgMzQ0MTIsIDY1NjkwLCA2NTY5OCwgMzY5MCwgMzAxMTEsIDY1NzA0LCA2NTcxMSwgNjU3MTcsIDM4MjksIAorICAgIDEyMTMwLCA2NTcyMywgNjU3MzMsIDY1NzQ4LCA2NTc1NiwgMTIxMzUsIDY1NzY3LCA2NTc3MiwgNjU3ODMsIDY1Nzk1LCAKKyAgICA2NTgwNywgNjU4MTksIDI3MjMsIDY1ODMxLCA2NTgzNiwgNjU4NDgsIDY1ODUyLCA2NTg1OCwgNjU4NjQsIDY1ODY5LCAKKyAgICA2NTg3OCwgMTY0MSwgMTc1NjUsIDY1ODg1LCA2NTg5MCwgNDQzNzUsIDY1ODk0LCA2NTg5OCwgNjU5MDMsIDY1OTA3LCAKKyAgICAxODQ3OSwgNjU5MTIsIDY1OTE1LCA2NTkyMCwgNjU5MjgsIDY1OTM2LCAxNjQ1LCAxMjE3MSwgMTIxNzcsIDE2NTAsIAorICAgIDY1OTQ0LCA2NTk1MSwgNjU5NTYsIDY1OTY1LCA2NTk3NSwgNjU5ODIsIDY1OTg3LCA2NTk5MiwgMTY1NSwgNjU5OTksIAorICAgIDY2MDA0LCAxODU5OSwgNjYwMDgsIDY2MDEzLCA2NjAyMCwgNjYwMjYsIDY2MDMwLCA2NjA0MSwgNjYwNTEsIDY2MDU4LCAKKyAgICAxODYyMSwgOTgyMywgOTgzMCwgNDAyNywgNDAzMywgNjYwNjUsIDE2NjAsIDY2MDcwLCA2NjA3NiwgNjYwODQsIDY2MDkxLCAKKyAgICA2NjA5NywgNjYxMDQsIDY2MTE2LCA2NjEyMiwgNjYxMjcsIDY2MTM5LCA2NjE1MCwgNjYxNTksIDY2MTY5LCAzOTU3LCAKKyAgICA2NjE3NywgMzM1MTUsIDMzNTI0LCAxODY2MSwgMTY2NSwgMTY2OSwgNjYxOTAsIDY2MTk0LCA2NjE5NywgNjYyMDgsIAorICAgIDY2MjEzLCAxNjc5LCA2NjIyMSwgNjYyMjYsIDY2MjMxLCAxODcyMCwgNjYyNDMsIDY2MjQ2LCA2NjI1MiwgNjYyNTgsIAorICAgIDY2MjYzLCA2NjI3MSwgMTY4NCwgNjYyNzYsIDY2MjgxLCA2NjI4OSwgNjYyOTcsIDY2MzA0LCA2NjMxMywgNjYzMjEsIAorICAgIDY2MzMwLCAxNjg5LCA2NjMzNCwgMTY5NCwgMjMyMDgsIDY2MzM5LCA2NjM0NiwgMTg4MDAsIDY2MzU0LCA2NjM2NCwgCisgICAgNjYzNzAsIDY2Mzc1LCA2NjM4MywgNjYzOTAsIDY2Mzk5LCA2NjQwNywgNjY0MTcsIDY2NDI2LCA2NjQzNiwgNjY0NDUsIAorICAgIDY2NDU2LCA2NjQ2NiwgNjY0NzYsIDY2NDg1LCA2NjQ5NSwgNjY1MDksIDY2NTIyLCA2NjUzMSwgNjY1MzksIDY2NTQ5LCAKKyAgICA2NjU1OCwgNjY1NzAsIDY2NTgxLCA2NjU5MiwgNjY2MDIsIDE4MTEyLCA2NjYwNywgMTIzMjMsIDY2NjE2LCA2NjYyMiwgCisgICAgNjY2MjcsIDY2NjM0LCA2NjY0MSwgNjY2NDcsIDE3NzcxLCA2NjY1NywgNjY2NjMsIDY2NjY4LCA2NjY3OSwgNjY2ODQsIAorICAgIDY2NjkyLCAxMjM0MCwgMTIzNDUsIDY2NzAwLCA2NjcwNiwgNjY3MTAsIDY2NzE4LCA0MDIyLCAxODg2OSwgNDQ0NjgsIAorICAgIDY2NzIzLCA2NjcyOSwgNjY3MzQsIDY2NzQyLCA2Njc0OSwgMTMyODksIDY2NzU0LCA2Njc2MCwgMTcwNSwgNjY3NjUsIAorICAgIDY2NzY4LCAxNDE5LCA2Njc3NCwgNjY3NzksIDY2Nzg0LCA2Njc5MCwgNjY3OTUsIDY2ODAwLCA2NjgwNSwgNjY4MTAsIAorICAgIDY2ODE1LCA2NjgyMCwgMTcxNCwgMTMsIDY2ODI2LCA2NjgzMCwgNjY4MzUsIDY2ODM5LCA2Njg0MywgNjY4NDcsIDM0NjUyLCAKKyAgICA2Njg1MiwgMjUyOTYsIDY2ODU3LCA2Njg2MiwgNjY4NjYsIDY2ODY5LCA2Njg3MywgNjY4NzcsIDY2ODgyLCA2Njg4NiwgCisgICAgNjY4OTEsIDY2ODk1LCA2NjkwMSwgMzc5MTAsIDM3OTE1LCAzNzkyMCwgNjY5MDQsIDY2OTExLCA2NjkxNywgNjY5MjUsIAorICAgIDQ0MTM5LCA2NjkzNSwgMzc5MjYsIDM0OTE2LCAzNDY2NywgMzQ2NzMsIDM3OTQyLCAzNDY3OSwgNjY5NDAsIDY2OTQ1LCAKKyAgICAzNDk0OSwgNjY5NDksIDY2OTUyLCA2Njk1NiwgNjY5NjQsIDY2OTcxLCA2Njk3NCwgNjY5NzksIDY2OTg0LCA2Njk4OCwgCisgICAgNjY5OTIsIDY2OTk1LCA2NzAwNSwgNjcwMTcsIDY3MDI0LCA2NzAzMCwgMzQ2ODQsIDY3MDM3LCAzNjQ0MywgNjcwNDAsIAorICAgIDg5NzQsIDEwNTIsIDY3MDQzLCA2NzA0NywgNjcwNTIsIDM4NzIsIDY3MDU2LCA2NzA1OSwgMTQ5MzcsIDY3MDY2LCA2NzA3MywgCisgICAgNjcwODYsIDY3MDk0LCA2NzEwMywgNjcxMTIsIDY3MTE3LCA2NzEyNywgNjcxNDAsIDY3MTUyLCA2NzE1OSwgNjcxNjQsIAorICAgIDY3MTczLCA2NzE4NiwgMzk0NDksIDY3MjA0LCA2NzIwOSwgNjcyMTYsIDY3MjIyLCA2NzIyNywgODM1LCA2NzIzMiwgCisgICAgNjcyNDAsIDY3MjQ3LCA2NzI1NCwgMjk2NTgsIDgwMywgNjcyNjAsIDY3MjY2LCA2NzI3NiwgNjcyODQsIDY3MjkwLCAKKyAgICA2NzI5NSwgMzQ3MDMsIDYzMzQsIDM0NzE3LCA2NzI5OSwgNjczMDksIDY3MzE0LCA2NzMyMiwgNjczMzIsIDY3MzQ3LCAKKyAgICA2NzM1MywgNjczNTksIDM0NzI3LCA2NzM2NCwgMzM4MzgsIDY3MzY4LCA2NzM3MywgNjczODAsIDY3Mzg1LCA2NzM4OSwgCisgICAgNjczOTQsIDE4NjY0LCA2NzQwMSwgNjc0MDYsIDY3NDEwLCA2Mzc1LCAzNDc1MywgNjc0MTQsIDY3NDIwLCAzMjUsIDY3NDMwLCAKKyAgICA2NzQzNywgNjc0NDMsIDY3NDUwLCA2NzQ1NSwgNjc0NjQsIDE0NTczLCA2NDE3NSwgNjQxODUsIDY3NDcwLCA2NzQ3OCwgCisgICAgNjc0ODIsIDY3NDg2LCA2NzQ5MCwgNjc0OTQsIDY3NDk5LCA2NzUwMywgNjc1MDksIDY3NTE3LCA2NzUyMiwgNjc1MjcsIAorICAgIDY3NTMyLCA2NzUzNiwgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTUsIDY3NTYxLCA2NzU2NiwgNjc1NzAsIDY3NTc1LCAKKyAgICAzNDg3NywgNjc1NzksIDM0ODgzLCAzNDg4OSwgNjc1ODQsIDY3NTkwLCA2NzU5NywgNjc2MDIsIDY3NjA2LCAzMzg1NSwgCisgICAgMTgzMzEsIDY3NjA5LCA2NzYxMywgNjc2MTgsIDY3NjI1LCA2NzYzMSwgNjc2MzUsIDY3NjQwLCA0MzgwNCwgNjc2NDYsIAorICAgIDY3NjUwLCA2NzY1NywgNjc2NjEsIDY3NjY2LCA2NzY3MiwgNjc2NzgsIDY3Njg0LCA2NzY5NiwgNjc3MDUsIDY3NzE1LCAKKyAgICA2NzcyMSwgNjc3MjgsIDY3NzMzLCA2NzczOCwgNjc3NDIsIDY3NzQ1LCA2Nzc1MSwgNjc3NTgsIDY3NzYzLCA2Nzc2OCwgCisgICAgNjc3NzUsIDY3NzgyLCA2Nzc4OSwgNjc3OTUsIDY3ODAwLCA2NzgwNSwgNjc4MTMsIDM0ODk0LCAyNDQ3LCA2NzgxOCwgCisgICAgNjc4MjMsIDY3ODI5LCA2NzgzNCwgNjc4NDAsIDY3ODQ1LCA2Nzg1MCwgNjc4NTUsIDY3ODYxLCAzNDkxNSwgNjc4NjYsIAorICAgIDY3ODcyLCA2Nzg3OCwgNjc4ODQsIDM0OTg1LCA2Nzg4OSwgNjc4OTQsIDY3ODk5LCAzNDk5NiwgNjc5MDQsIDY3OTA5LCAKKyAgICA2NzkxNCwgNjc5MjAsIDY3OTI2LCAzNTAwMSwgNjc5MzEsIDY3OTM2LCA2Nzk0MSwgMzUwNTYsIDM1MDYyLCA2Nzk0NiwgCisgICAgNjc5NTEsIDM1MDY3LCAzNTA4OSwgMzA0MTAsIDM1MDk1LCAzNTA5OSwgNjc5NTYsIDEzMDE5LCA2Nzk2MCwgNjc5NjgsIAorICAgIDY3OTc0LCA2Nzk4MiwgNjc5ODksIDY3OTk1LCA2ODAwNSwgNjgwMTEsIDY4MDE4LCAxMTY1NCwgMzUxMTMsIDY4MDI0LCAKKyAgICA2ODAzNywgNjgwNDYsIDY4MDUyLCA2ODA2MSwgNjgwNjcsIDI1NjA2LCA2ODA3NCwgNjgwODEsIDY4MDkxLCA2ODA5OSwgCisgICAgNjgxMDIsIDM1MDU3LCA2ODEwNywgNjgxMTQsIDY4MTE5LCA2ODEyMywgNjgxMjcsIDY4MTMyLCA2ODEzNiwgNDE0NywgCisgICAgNjgxNDEsIDY4MTQ2LCA2ODE1MSwgMzgwMDQsIDM4MDA5LCA2ODE1NSwgMzgwMjMsIDY4MTYwLCAzODAyOCwgNjgxNjUsIAorICAgIDY4MTcxLCAzODA0MCwgMzgwNDYsIDM4MDUyLCA2ODE3NiwgNjgxODIsIDI0NTc1LCA2ODE5MywgNjgxOTYsIDY4MjA4LCAKKyAgICA2ODIxNiwgMzUxMzYsIDY4MjIwLCA2ODIyOSwgNjgyMzksIDY4MjQ4LCAzNTE0NiwgNjgyNTMsIDY4MjYwLCA2ODI2OSwgCisgICAgNjgyNzUsIDY4MjgzLCA2ODI5MCwgNjQyNiwgNDY5MywgNjgyOTUsIDM1MDY4LCA2ODMwMSwgNjgzMDQsIDY4MzEwLCAKKyAgICA2ODMxNywgNjgzMjIsIDY4MzI3LCAyNTUxNiwgNjgzMzEsIDY4MzM3LCA2ODM0MywgNjgzNDgsIDY4MzUzLCA2ODM1NywgCisgICAgNjgzNjMsIDY4MzY5LCAzNjM0OSwgMTA4NCwgMzkwOTksIDQwODM0LCA0MDg0MCwgMzUxNzcsIDM1MTgyLCA2ODM3NCwgCisgICAgNjgzNzgsIDY4MzgyLCA2ODM4NSwgNjgzOTgsIDY4NDA0LCA2ODQwOCwgNjg0MTEsIDY4NDE2LCAzNjY4NiwgNjg0MjAsIAorICAgIDMzODYwLCAyMzE1OCwgNjg0MjYsIDYzNTUsIDYzNjMsIDk2NjAsIDY4NDI5LCA2ODQzNCwgNjg0MzksIDY4NDQ0LCA2ODQ0OSwgCisgICAgNjg0NTQsIDY4NDU5LCA2ODQ2NCwgNjg0NjksIDY4NDc0LCA2ODQ4MCwgNjg0ODUsIDY4NDkwLCA2ODQ5NiwgNjg1MDEsIAorICAgIDY4NTA2LCA2ODUxMSwgNjg1MTYsIDY4NTIxLCA2ODUyNiwgNjg1MzIsIDY4NTM3LCA2ODU0MywgNjg1NDgsIDY4NTUzLCAKKyAgICA2ODU1OCwgNjg1NjMsIDY4NTY4LCA2ODU3MywgNjg1NzgsIDY4NTgzLCA2ODU4OCwgNjg1OTMsIDY4NTk5LCA2ODYwNCwgCisgICAgNjg2MDksIDY4NjE0LCA2ODYxOSwgNjg2MjQsIDY4NjI5LCA2ODYzNSwgNjg2NDAsIDY4NjQ1LCA2ODY1MCwgNjg2NTUsIAorICAgIDY4NjYwLCA2ODY2NSwgNjg2NzAsIDY4Njc1LCA2ODY4MCwgNjg2ODYsIDY4NjkxLCA2ODY5NiwgNjg3MDEsIDY4NzA2LCAKKyAgICA2ODcxMiwgNjg3MTgsIDY4NzIzLCA2ODcyOSwgNjg3MzQsIDY4NzM5LCA2ODc0NCwgNjg3NDksIDY4NzU0LCAxNDkyLCAxNTYsIAorICAgIDY4NzU5LCA2ODc2MywgNjg3NjcsIDY4NzcxLCAyNzMwNiwgNjg3NzUsIDY4Nzc5LCA2ODc4NCwgNjg3ODgsIDY4NzkzLCAKKyAgICA2ODc5NywgNjg4MDIsIDY4ODA3LCA2ODgxMiwgNjg4MTYsIDY4ODIwLCA2ODgyNSwgNjg4MjksIDE0NjUyLCA2ODgzNCwgCisgICAgNjg4MzgsIDY4ODQ1LCA2ODg1NSwgMTY3MTgsIDY4ODY0LCA2ODg3MywgNjg4NzcsIDY4ODgyLCA2ODg4NywgNjg4OTEsIAorICAgIDY4ODk1LCAyNzEwMCwgMzA2NywgNjg4OTksIDY4OTA1LCAxOTE0NCwgNjg5MDksIDY4OTE4LCA2ODkyNiwgNjg5MzIsIAorICAgIDY4OTM3LCA2ODk0OSwgNjg5NjEsIDY4OTY2LCA2ODk3MCwgNjg5NzUsIDY4OTc5LCA2ODk4NSwgNjg5OTEsIDY4OTk2LCAKKyAgICA2OTAwNiwgNjkwMTYsIDY5MDIyLCA2OTAyNywgNjkwMzEsIDY5MDM3LCA2OTA0MiwgNjkwNDksIDY5MDU1LCA2OTA2MCwgCisgICAgNjkwNjksIDY5MDc4LCA2OTA4NiwgNjkwOTAsIDE3MTI5LCA2OTA5MywgNjkxMDIsIDY5MTEwLCA2OTEyMiwgNjkxMzMsIAorICAgIDY5MTQ0LCA2OTE1MywgNjkxNTcsIDY5MTY2LCA2OTE3NCwgNjkxODQsIDY5MTkyLCA2OTE5OSwgNjkyMDUsIDY5MjEwLCAKKyAgICA2OTIxOSwgNjkyMjUsIDY5MjMwLCA2OTI0MSwgNjAsIDMzNjU4LCA2OTI0NywgMjg1ODYsIDI4NTk2LCA2OTI1MywgNjkyNjEsIAorICAgIDY5MjY4LCA2OTI3NCwgNjkyNzgsIDY5Mjg4LCA2OTI5OSwgNjkzMDcsIDY5MzE2LCA2OTMyMSwgNjkzMjYsIDY5MzMxLCAKKyAgICA2OTMzNSwgNjkzMzksIDE5MDk4LCA2OTM0NywgNjkzNTEsIDY5MzU3LCA2OTM2NywgNjkzNzQsIDY5MzgwLCA2OTM4NiwgCisgICAgMzgxMDMsIDY5MzkwLCA2OTM5MiwgNjkzOTUsIDY5NDAxLCA2OTQwNSwgNjk0MTYsIDY5NDI2LCA2OTQzMiwgNjk0MzksIAorICAgIDY5NDQ2LCAxNDU4OSwgNjk0NTQsIDY5NDYwLCA2OTQ2OSwgNjk0NzgsIDY5NDg0LCAxMDcxMywgNjk0OTAsIDY5NDk2LCAKKyAgICA2OTUwMSwgNjk1MDYsIDY5NTEzLCA2OTUxOCwgNjk1MjUsIDY5NTMxLCA2OTUzNiwgNjk1NDQsIDY5NTU3LCA2OTU2NiwgCisgICAgNjk1NzUsIDY2NDcxLCA2NjQ4MSwgNjk1ODUsIDY5NTkxLCA2OTU5NywgNjk2MDQsIDY5NjExLCA2OTYxOCwgNjk2MjUsIAorICAgIDY5NjMyLCA2OTYzNywgNjk2NDEsIDY5NjQ1LCA2OTY0OCwgNjk2NTgsIDY5NjYyLCA2OTY3NCwgNjk2ODMsIDY5Njg3LCAKKyAgICA2OTY5OCwgNjk3MDMsIDY5NzA3LCA2NjQ5MCwgNjk3MTMsIDY5NzIwLCA2OTcyOSwgNjk3MzcsIDY5NzQ1LCA2OTc1MCwgCisgICAgNjk3NTQsIDY5NzU5LCA2OTc2NCwgNjk3NzQsIDY5NzgyLCA2OTc4NywgNjk3OTEsIDY5Nzk1LCA2OTgwMSwgNjk4MDksIAorICAgIDY5ODE2LCA2OTgyOCwgNjk4MzYsIDY5ODQ3LCA2OTg1NCwgNjk4NjAsIDY5ODcwLCA2OTg3NiwgNjk4ODAsIDY5ODg5LCAKKyAgICA2OTg5OCwgNjk5MDUsIDY5OTExLCA2OTkxNiwgNjk5MjAsIDY5OTI0LCA2OTkyOCwgNjk5MzcsIDY5OTQ2LCA2OTk1NSwgCisgICAgNjk5NjEsIDY5OTY3LCA2OTk3MywgNjk5NzgsIDY5OTg1LCA2OTk5MSwgNjk5OTksIDcwMDA2LCA3MDAxMiwgMTM3MzIsIAorICAgIDcwMDE3LCA3MDAyMywgNzAwMjcsIDE1NjQ2LCA3MDAzMSwgNzAwMzYsIDcwMDQ2LCA3MDA1NSwgNzAwNjEsIDcwMDY3LCAKKyAgICA3MDA3NSwgNzAwODIsIDcwMDg2LCA3MDA5MCwgNzAwOTcsIDcwMTAzLCA3MDExMSwgNzAxMTgsIDcwMTI0LCA3MDEzNSwgCisgICAgNzAxMzksIDcwMTQzLCA3MDE0NywgNzAxNTAsIDcwMTU2LCA3MDE2MSwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxODMsIAorICAgIDcwMTkxLCA3MDE5OCwgNzAyMDQsIDcwMjExLCAyNjE4OSwgNDM4NzMsIDcwMjE2LCA3MDIyNCwgNzAyMjgsIDcwMjMyLCAKKyAgICA3MDIzNSwgNzAyNDMsIDcwMjUwLCA3MDI1NiwgNzAyNjUsIDcwMjczLCA3MDI3OSwgNzAyODQsIDcwMjg4LCA3MDI5MywgCisgICAgNzAyOTgsIDcwMzAyLCA3MDMwNiwgNzAzMTAsIDcwMzE1LCA3MDMyNCwgNzAzMjgsIDcwMzM1LCA0MDk0MywgNzAzMzksIAorICAgIDcwMzQ1LCA3MDM0OSwgNzAzNTcsIDcwMzYzLCA3MDM2OCwgNzAzNzksIDcwMzg3LCA3MDM5MywgNzA0MDIsIDI0NzIyLCAKKyAgICA3MDQxMCwgNzA0MTcsIDcwNDI0LCA3MDQzMSwgNzA0MzgsIDcwNDQ1LCA0NzIwMywgMTQ0MjcsIDcwNDUyLCA3MDQ1OSwgCisgICAgNzA0NjQsIDM4MTM5LCA0MzU5LCA3MDQ3MCwgNzA0NzUsIDcwNDgwLCA3MDQ4NiwgNzA0OTIsIDcwNDk4LCA3MDUwMywgCisgICAgNzA1MDgsIDcwNTEzLCA3MDUxOCwgNzA1MjQsIDcwNTI5LCA3MDUzNSwgNzA1NDAsIDcwNTQ2LCA3MDU1MSwgNzA1NTYsIAorICAgIDcwNTYxLCA3MDU2NiwgNzA1NzEsIDcwNTc2LCA3MDU4MSwgNzA1ODcsIDcwNTkyLCA3MDU5OCwgNzA2MDMsIDcwNjA4LCAKKyAgICA3MDYxMywgNzA2MTgsIDcwNjIzLCA3MDYyOCwgNzA2MzQsIDcwNjM5LCA3MDY0NCwgNzA2NDksIDcwNjU0LCA3MDY1OSwgCisgICAgNzA2NjQsIDcwNjY5LCA3MDY3NCwgNzA2NzksIDcwNjg0LCA3MDY5MCwgNzA2OTUsIDcwNzAwLCA3MDcwNSwgNzA3MTAsIAorICAgIDcwNzE1LCA3MDcyMCwgNzA3MjUsIDcwNzMwLCA3MDczNiwgNzA3NDEsIDcwNzQ2LCA3MDc1MSwgNzA3NTYsIDcwNzYxLCAKKyAgICA3MDc2NiwgNzA3NzEsIDcwNzc2LCA3MDc4MSwgNzA3ODYsIDcwNzkxLCA3MDc5NiwgNzA4MDIsIDE4MzksIDI3MiwgNzA4MDcsIAorICAgIDQxODAzLCA3MDgxMSwgNzA4MTQsIDcwODE5LCA3MDgyMywgNzA4MjYsIDM0MDQsIDcwODMxLCA3MDgzNiwgNzA4NDAsIAorICAgIDcwODQ5LCA3MDg2MCwgNzA4NzcsIDcwODk1LCA2OTc0MSwgNzA5MDMsIDcwOTA2LCA3MDkxNiwgNzA5MjMsIDcwOTMyLCAKKyAgICA3MDk0OCwgNzA5NTcsIDcwOTY3LCA3MDk3MiwgNzA5ODIsIDcwOTkxLCA3MDk5OSwgNzEwMTMsIDcxMDIxLCA3MTAyNSwgCisgICAgNzEwMjgsIDcxMDM1LCA3MTA0MSwgNzEwNTIsIDcxMDU5LCA3MTA3MSwgNzEwODIsIDcxMDkzLCA3MTEwMiwgNzExMDksIAorICAgIDEyNTksIDcyNywgNzExMTksIDI2MTgsIDcxMTIzLCA3MTEyOCwgNzExMzcsIDkyNzYsIDE5MDcxLCAyMjY1NSwgNzExNDUsIAorICAgIDcxMTUzLCA3MTE2NywgNzExODAsIDcxMTg0LCA3MTE4OSwgNzExOTQsIDcxMTk5LCA3MTIwNSwgNzEyMTEsIDcxMjE2LCAKKyAgICA4OTY2LCAxNjc0NiwgNzEyMjEsIDcxMjI1LCA3MTIzMywgOTM4NCwgNzEyMzgsIDcxMjQ0LCA3MTI1MywgNzEyNjEsIDE3MTcsIAorICAgIDEyMTg0LCA5MzUsIDY0ODksIDcxMjY1LCA3MTI2OSwgNzEyNzgsIDcxMjg4LCAyNDA0LCAyOTM4MiwgNzEyOTcsIDcxMzAzLCAKKyAgICAxODU3MSwgMjkzOTcsIDcxMzA5LCA0MjA3LCAxMjU2MiwgNzEzMTUsIDcxMzIyLCA2NjIwMywgNzEzMjYsIDcxMzMwLCAKKyAgICA3MTMzNiwgNzEzNDEsIDcxMzQ2LCAzNjIzLCAxNjAsIDM2NDksIDcxMzUxLCA3MTM2MywgNzEzNjcsIDcxMzczLCA3MTM3OCwgCisgICAgMzAxODEsIDcxMzgyLCAxMjU1MCwgMjc1OCwgNCwgNzEzODcsIDcxMzk3LCA3MTQwOCwgNzE0MTQsIDcxNDI1LCA3MTQzMiwgCisgICAgNzE0MzgsIDcxNDQ0LCA3MTQ1MiwgNzE0NTksIDcxNDY1LCA3MTQ3NSwgNzE0ODUsIDcxNDk1LCA3MTUwNCwgMjU1OTMsIAorICAgIDEyNzEsIDcxNTA5LCA3MTUxMywgNzE1MTcsIDcxNTIzLCA3MTUyNywgMjc4MSwgMjc4NywgODk2MywgMjI3OSwgNzE1MzEsIAorICAgIDcxNTM1LCA3MTU0NCwgNzE1NTIsIDcxNTYzLCA3MTU3MSwgNzE1NzksIDcxNTg1LCA3MTU5MCwgNzE2MDEsIDcxNjEyLCAKKyAgICA3MTYyMCwgNzE2MjYsIDcxNjMxLCAxMDUzMiwgNzE2NDEsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIDcxNjYyLCA3MTY2NiwgCisgICAgNzE2NzgsIDMwNTk3LCAxNjY3MSwgNzE2ODUsIDcxNjk1LCA3MTcwMSwgNzE3MDcsIDEwNjM0LCA3MTcxNywgNzE3MjgsIAorICAgIDcxNzM5LCA3MTc0OSwgNzE3NTgsIDcxNzYyLCA3MTc2OSwgMTczMSwgMTAyOSwgNzE3NzksIDcxNzg0LCA3MTc5MiwgCisgICAgNjYwMDksIDcxODAwLCA3MTgwNSwgNzE4MTYsIDcxODIzLCA3MTgzNywgMTU0ODMsIDQ4NCwgNzE4NDcsIDcxODUxLCAKKyAgICA3MTg1NSwgNzE4NjMsIDcxODcyLCA3MTg4MCwgNzE4ODYsIDcxOTAwLCA3MTkwNywgNzE5MTMsIDcxOTIyLCA3MTkyOSwgCisgICAgNzE5MzksIDcxOTQ3LCA3MTk1NCwgNzE5NjIsIDcxOTY5LCA0MDI5LCAxNDQsIDcxOTc3LCA3MTk4OCwgNzE5OTIsIDcyMDA0LCAKKyAgICA3MjAxMCwgMTI3NDMsIDE5OCwgNzIwMTUsIDk5NjEsIDcyMDIwLCAyODI2LCA3MjAyNCwgNzIwMzEsIDcyMDM3LCA3MjA0OCwgCisgICAgNzIwNTYsIDcyMDYzLCA5MzM1LCA3MjA3MCwgNzIwNzksIDcyMDg3LCA0MTA3LCA3MjEwMCwgNDEyNCwgNzIxMDQsIDcyMTA5LCAKKyAgICA3MjExNSwgNzIxMjAsIDcyMTI1LCA3MjEzMCwgMjgzMSwgNTIwLCA3MjEzNiwgNzIxNDksIDcyMTUzLCA3MjE1OCwgMjgzNiwgCisgICAgMTgzOCwgODI5LCA3MjE2MiwgNDEyOCwgNzIxNzAsIDcyMTc2LCA3MjE4MCwgODczLCA3MjE5MCwgNzIxOTksIDcyMjA0LCAKKyAgICAzNjQwLCA3MjIwOCwgMTY0MjcsIDE2NDM0LCA1MDU2NSwgNzIyMTIsIDQxNTksIDQwMzksIDE0MzEwLCA3MjIyMCwgNzIyMjcsIAorICAgIDcyMjMyLCAyNTY1NywgNzIyMzYsIDcyMjQzLCA3MjI0OSwgNzIyNTQsIDcyMjU5LCAxNjQ0NywgMTkyLCA3MjI2NCwgCisgICAgNzIyNzYsIDcyMjgyLCA3MjI5MCwgMjg0OCwgMTc0OSwgNzIyOTgsIDcyMzAwLCA3MjMwNSwgNzIzMTAsIDcyMzE1LCAKKyAgICA3MjMyMSwgNzIzMjYsIDcyMzMxLCA3MjMzNiwgNzIzNDEsIDcyMzQ2LCA3MjM1MSwgNzIzNTcsIDcyMzYyLCA3MjM2NywgCisgICAgNzIzNzIsIDcyMzc3LCA3MjM4MiwgNzIzODcsIDcyMzkyLCA3MjM5NywgNzI0MDMsIDcyNDA4LCA3MjQxMywgNzI0MTgsIAorICAgIDcyNDI0LCA3MjQyOSwgNzI0MzUsIDcyNDQwLCA3MjQ0NSwgNzI0NTAsIDcyNDU1LCA3MjQ2MCwgNzI0NjUsIDcyNDcwLCAKKyAgICA3MjQ3NiwgNzI0ODEsIDcyNDg3LCA3MjQ5MiwgNzI0OTcsIDcyNTAyLCA3MjUwNywgNzI1MTIsIDcyNTE3LCA3MjUyMiwgCisgICAgNzI1MjcsIDcyNTMzLCA3MjUzOSwgNzI1NDQsIDcyNTQ5LCA3MjU1NSwgNzI1NjAsIDcyNTY0LCA3MjU2OCwgNzI1NzMsIAorICAgIDcyNTc5LCA3MjU4MywgNzI1ODksIDcyNTk0LCA3MjU5OSwgNzI2MDUsIDcyNjEwLCA3MjYxNCwgNzI2MTksIDcyNjI0LCAKKyAgICA3MjYyOCwgNzI2MzEsIDcyNjMzLCA3MjYzNywgNzI2NDAsIDcyNjQ3LCA3MjY1MiwgNzI2NTYsIDcyNjYxLCA3MjY2NSwgCisgICAgNzI2NjksIDcyNjczLCA3MjY4MiwgNzI2ODYsIDM1MzgyLCA3MjY4OSwgMzUzODcsIDcyNjk2LCA3MjcwMSwgMzUzOTIsIAorICAgIDcyNzEwLCA3MjcxOSwgMzUzOTgsIDcyNzI0LCAzNTQwMywgNzI3MzMsIDcyNzM4LCAxMjc4NiwgNzI3NDIsIDcyNzQ3LCAKKyAgICA3Mjc1MiwgMzU0MDgsIDcyNzU2LCA0NTM5OCwgNzI3NjAsIDcyNzYzLCA3Mjc2NywgODYzNCwgNzI3NzMsIDcyNzc2LCAKKyAgICA3Mjc4MSwgNzI3ODYsIDcyNzkwLCAzODg3LCAzNTQxMywgNzI3OTMsIDcyNzk3LCA3MjgwMCwgNzI4MTEsIDcyODE2LCAKKyAgICA3MjgyMCwgNzI4MjYsIDcyODM0LCA3Mjg0NywgNzI4NTUsIDcyODY0LCA3Mjg3MCwgNzI4NzUsIDcyODgxLCA3Mjg4NSwgCisgICAgNzI4OTEsIDcyODk3LCA3MjkwNSwgNzI5MTAsIDcyOTE0LCA3MjkyMSwgNzI5MjcsIDcyOTM1LCA3Mjk0NCwgNzI5NTIsIAorICAgIDM1NDE2LCA3Mjk1OSwgNzI5NjksIDcyOTgyLCA3Mjk4NywgNzI5OTIsIDcyOTk2LCA3MzAwNSwgNzMwMTEsIDczMDE4LCAKKyAgICA3MzAyOSwgNzMwNDEsIDczMDQ4LCA3MzA1NywgNzMwNjYsIDczMDc1LCA3MzA4MiwgNzMwODgsIDczMDk1LCA3MzEwMywgCisgICAgNzMxMTAsIDczMTE4LCA3MzEyNywgNzMxMzUsIDczMTQyLCA3MzE1MCwgNzMxNTksIDczMTY3LCA3MzE3NiwgNzMxODYsIAorICAgIDczMTk1LCA3MzIwMywgNzMyMTAsIDczMjE4LCA3MzIyNywgNzMyMzUsIDczMjQ0LCA3MzI1NCwgNzMyNjMsIDczMjcxLCAKKyAgICA3MzI4MCwgNzMyOTAsIDczMjk5LCA3MzMwOSwgNzMzMjAsIDczMzMwLCA3MzMzOSwgNzMzNDcsIDczMzU0LCA3MzM2MiwgCisgICAgNzMzNzEsIDczMzc5LCA3MzM4OCwgNzMzOTgsIDczNDA3LCA3MzQxNSwgNzM0MjQsIDczNDM0LCA3MzQ0MywgNzM0NTMsIAorICAgIDczNDY0LCA3MzQ3NCwgNzM0ODMsIDczNDkxLCA3MzUwMCwgNzM1MTAsIDczNTE5LCA3MzUyOSwgNzM1NDAsIDczNTUwLCAKKyAgICA3MzU1OSwgNzM1NjksIDczNTgwLCA3MzU5MCwgNzM2MDEsIDczNjEzLCA3MzYyNCwgNzM2MzQsIDczNjQzLCA3MzY1MSwgCisgICAgNzM2NTgsIDczNjY2LCA3MzY3NSwgNzM2ODMsIDczNjkyLCA3MzcwMiwgNzM3MTEsIDczNzE5LCA3MzcyOCwgNzM3MzgsIAorICAgIDczNzQ3LCA3Mzc1NywgNzM3NjgsIDczNzc4LCA3Mzc4NywgNzM3OTUsIDczODA0LCA3MzgxNCwgNzM4MjMsIDczODMzLCAKKyAgICA3Mzg0NCwgNzM4NTQsIDczODYzLCA3Mzg3MywgNzM4ODQsIDczODk0LCA3MzkwNSwgNzM5MTcsIDczOTI4LCA3MzkzOCwgCisgICAgNzM5NDcsIDczOTU1LCA3Mzk2NCwgNzM5NzQsIDczOTgzLCA3Mzk5MywgNzQwMDQsIDc0MDE0LCA3NDAyMywgNzQwMzMsIAorICAgIDc0MDQ0LCA3NDA1NCwgNzQwNjUsIDc0MDc3LCA3NDA4OCwgNzQwOTgsIDc0MTA3LCA3NDExNywgNzQxMjgsIDc0MTM4LCAKKyAgICA3NDE0OSwgNzQxNjEsIDc0MTcyLCA3NDE4MiwgNzQxOTMsIDc0MjA1LCA3NDIxNiwgNzQyMjgsIDc0MjQxLCA3NDI1MywgCisgICAgNzQyNjQsIDc0Mjc0LCA3NDI4MywgNzQyOTEsIDc0Mjk4LCA3NDMwNiwgNzQzMTUsIDc0MzIzLCA3NDMzMiwgNzQzNDIsIAorICAgIDc0MzUxLCA3NDM1OSwgNzQzNjgsIDc0Mzc4LCA3NDM4NywgNzQzOTcsIDc0NDA4LCA3NDQxOCwgNzQ0MjcsIDc0NDM1LCAKKyAgICA3NDQ0NCwgNzQ0NTQsIDc0NDYzLCA3NDQ3MywgNzQ0ODQsIDc0NDk0LCA3NDUwMywgNzQ1MTMsIDc0NTI0LCA3NDUzNCwgCisgICAgNzQ1NDUsIDc0NTU3LCA3NDU2OCwgNzQ1NzgsIDc0NTg3LCA3NDU5NSwgNzQ2MDQsIDc0NjE0LCA3NDYyMywgNzQ2MzMsIAorICAgIDc0NjQ0LCA3NDY1NCwgNzQ2NjMsIDc0NjczLCA3NDY4NCwgNzQ2OTQsIDc0NzA1LCA3NDcxNywgNzQ3MjgsIDc0NzM4LCAKKyAgICA3NDc0NywgNzQ3NTcsIDc0NzY4LCA3NDc3OCwgNzQ3ODksIDc0ODAxLCA3NDgxMiwgNzQ4MjIsIDc0ODMzLCA3NDg0NSwgCisgICAgNzQ4NTYsIDc0ODY4LCA3NDg4MSwgNzQ4OTMsIDc0OTA0LCA3NDkxNCwgNzQ5MjMsIDc0OTMxLCA3NDk0MCwgNzQ5NTAsIAorICAgIDc0OTU5LCA3NDk2OSwgNzQ5ODAsIDc0OTkwLCA3NDk5OSwgNzUwMDksIDc1MDIwLCA3NTAzMCwgNzUwNDEsIDc1MDUzLCAKKyAgICA3NTA2NCwgNzUwNzQsIDc1MDgzLCA3NTA5MywgNzUxMDQsIDc1MTE0LCA3NTEyNSwgNzUxMzcsIDc1MTQ4LCA3NTE1OCwgCisgICAgNzUxNjksIDc1MTgxLCA3NTE5MiwgNzUyMDQsIDc1MjE3LCA3NTIyOSwgNzUyNDAsIDc1MjUwLCA3NTI1OSwgNzUyNjksIAorICAgIDc1MjgwLCA3NTI5MCwgNzUzMDEsIDc1MzEzLCA3NTMyNCwgNzUzMzQsIDc1MzQ1LCA3NTM1NywgNzUzNjgsIDc1MzgwLCAKKyAgICA3NTM5MywgNzU0MDUsIDc1NDE2LCA3NTQyNiwgNzU0MzcsIDc1NDQ5LCA3NTQ2MCwgNzU0NzIsIDc1NDg1LCA3NTQ5NywgCisgICAgNzU1MDgsIDc1NTIwLCA3NTUzMywgNzU1NDUsIDc1NTU4LCA3NTU3MiwgNzU1ODUsIDc1NTk3LCA3NTYwOCwgNzU2MTgsIAorICAgIDc1NjI3LCA3NTYzNSwgNzU2NDIsIDc1NjQ3LCA4NDUxLCA3NTY1NCwgMzU0MjYsIDc1NjU5LCA3NTY2NCwgMzU0MzEsIAorICAgIDc1NjcwLCAyMjc2MywgMzU0MzYsIDc1Njc1LCA3NTY4MSwgNzU2ODksIDc1Njk1LCA3NTcwMSwgNzU3MDgsIDc1NzE1LCAKKyAgICA3NTcyMCwgNzU3MjUsIDc1NzI5LCA3NTczMywgNzU3MzYsIDc1NzQwLCA3NTc0OSwgNzU3NTgsIDc1NzY2LCA3NTc3MiwgCisgICAgNzU3ODQsIDc1Nzk1LCA3NTc5OSwgMzEyOSwgODQyNiwgNzU4MDQsIDc1ODA3LCA3NTgwOSwgNzU4MTMsIDc1ODE3LCAKKyAgICA3NTgyMSwgNzU4MjcsIDc1ODMyLCAyODI0MCwgNzU4MzcsIDc1ODQxLCA3NTg0NCwgNzU4NDksIDc1ODUzLCA3NTg2MCwgCisgICAgNzU4NjYsIDc1ODcwLCA2NTA5LCA3NTg3NCwgMzU0NTMsIDc1ODc5LCA3NTg4NiwgNzU4OTUsIDc1OTAzLCA3NTkxNCwgCisgICAgNzU5MjIsIDc1OTMxLCA3NTkzOSwgNzU5NDYsIDc1OTUzLCA3NTk1OSwgNzU5NzAsIDM1NDU4LCA3NTk3NSwgNzU5ODYsIAorICAgIDc1OTk4LCA3NjAwNiwgNzYwMTcsIDc2MDI2LCA3NjAzNCwgNzYwNDUsIDc2MDUwLCA3NjA1OCwgMjU4MCwgNzYwNjMsIAorICAgIDM3NTUyLCA3NjA3NiwgNzYwODAsIDc2MDkyLCA3NjEwMCwgNzYxMDUsIDc2MTEzLCA3NjEyNCwgMTkyOTEsIDc2MTMzLCAKKyAgICA3NjEzOSwgNzYxNDYsIDc2MTU0LCA3NjE2MCwgMzU0NjgsIDc2MTY1LCA0MTUzLCA2MzU3MCwgNzYxNzIsIDc2MTc1LCAKKyAgICA3NjE4MywgNzYxOTYsIDc2MjA5LCA3NjIyMiwgNzYyMzUsIDc2MjQyLCA3NjI1MywgNzYyNjIsIDc2MjY3LCA0NzAyMCwgCisgICAgNDcwMjUsIDc2MjcxLCA3NjI3NSwgNzYyODMsIDc2MjkwLCA3NjI5OSwgNzYzMDcsIDc2MzEzLCA3NjMyMiwgNzYzMzAsIAorICAgIDc2MzM3LCA3NjM0NSwgNzYzNDksIDc2MzU4LCA3NjM2NywgNzYzNzcsIDc2MzkwLCA3NjQwMywgNzY0MTMsIDM1NDczLCAKKyAgICA3NjQxOSwgNzY0MjYsIDc2NDMyLCA3NjQzOCwgMzU0NzksIDc2NDQzLCA3NjQ0NiwgNzY0NTAsIDc2NDU4LCA3NjQ2NywgCisgICAgNDY3NTgsIDc2NDc1LCA3NjQ4NCwgNzY0OTIsIDc2NDk5LCA3NjUwNywgNzY1MTcsIDc2NTI2LCA3NjUzNSwgMzY3ODUsIAorICAgIDc2NTQ0LCA3NjU1NSwgNzY1NzAsIDc2NTgwLCA5OTk0LCAyMzQ2NywgNzY1ODksIDc2NTk0LCA3NjU5OSwgNzY2MDMsIAorICAgIDE3NzYzLCA3NjYwOCwgNzY2MTMsIDc2NjE5LCA3NjYyNCwgNzY2MjksIDc2NjM1LCA3NjY0MCwgNzY2NDUsIDIzNDMyLCAKKyAgICA3NjY1MCwgNzY2NTcsIDc2NjY1LCA3NjY3MywgNzY2ODEsIDc2Njg2LCA3NjY5MywgNzY3MDAsIDc2NzA1LCAyMjU3LCAKKyAgICA3NjcwOSwgNzY3MTMsIDc2NzIxLCA3NjcyOSwgMzU0OTYsIDc2NzM1LCA3Njc0MSwgNzY3NTMsIDc2NzU5LCA3Njc2NiwgCisgICAgNzY3NzAsIDc2Nzc3LCA3Njc4MiwgNzY3ODksIDc2Nzk1LCA3NjgwMiwgNzY4MTMsIDc2ODIzLCA3NjgzMywgNzY4NDUsIAorICAgIDc2ODUxLCA3Njg1OSwgNzY4NjUsIDc2ODc1LCA3Njg4NSwgMzU1MjMsIDc2ODk0LCA3NjkwMywgNzY5MDksIDc2OTIxLCAKKyAgICA3NjkzMiwgNzY5MzksIDc2OTQ0LCA3Njk0OCwgNzY5NTYsIDc2OTYyLCA3Njk2NywgNzY5NzIsIDc2OTc5LCA3Njk4NywgCisgICAgNzY5OTksIDc3MDA5LCA3NzAxOCwgNzcwMjcsIDc3MDM1LCA3NzA0MiwgMzc0MDUsIDI1OTkwLCA3NzA0OCwgNzcwNTMsIAorICAgIDc3MDU3LCA3NzA2MSwgNzcwNjYsIDc3MDc0LCA3NzA4MCwgNzcwOTEsIDc3MTA0LCA3NzEwOSwgNzcxMTYsIDM1NTI4LCAKKyAgICA3NzEyMSwgNzcxMzMsIDc3MTQyLCA3NzE1MCwgNzcxNjAsIDc3MTcxLCA3NzE4NCwgNzcxOTEsIDc3MjAwLCA3NzIwOSwgCisgICAgNzcyMTcsIDc3MjIyLCA3NzIyOCwgMTQ4MSwgNzcyMzMsIDc3MjM4LCA3NzI0MywgNzcyNDgsIDc3MjU0LCA3NzI1OSwgCisgICAgNzcyNjQsIDc3MjcwLCA3NzI3NiwgNzcyODEsIDc3Mjg1LCA3NzI5MCwgNzcyOTUsIDc3MzAwLCA2NDEzMCwgNzczMDUsIAorICAgIDc3MzEwLCA3NzMxNSwgNzczMjAsIDc3MzI2LCA3NzMzMiwgNzczMzcsIDc3MzQxLCA3NzM0NiwgMTc3NjIsIDc3MzUxLCAKKyAgICA3NzM1NywgNzczNjIsIDc3MzY4LCA3NzM3MywgNzczNzgsIDc3MzgzLCA3NzM4OCwgNzczOTIsIDc3Mzk4LCA3NzQwMywgCisgICAgNzc0MTIsIDc3NDE3LCA3NzQyMiwgNzc0MjcsIDc3NDMyLCA3NzQzNiwgNzc0NDMsIDc3NDQ5LCA0NDUwLCAxODkxNCwgCisgICAgMzA5NCwgNzc0NTQsIDc3NDU4LCA3NzQ2MywgNzc0NjcsIDc3NDcxLCA3NzQ3NSwgNTA4MjAsIDc3NDc5LCA3NzQwNCwgCisgICAgNzc0ODEsIDc3NDkxLCAzNTUzNywgNzc0OTQsIDc3NDk5LCA3NzUwOCwgNzc1MTQsIDY0NzgsIDM1NTQyLCA3NzUxOCwgCisgICAgNzc1MjQsIDc3NTI5LCA3NzUzNSwgNzc1NDAsIDc3NTQ0LCA3NzU1MSwgNzc1NTYsIDc3NTY2LCA3NzU3NSwgNzc1NzksIAorICAgIDc3NTg1LCA3NzU5MSwgNzc1OTcsIDc3NjAxLCA3NzYwOSwgNzc2MTYsIDc3NjI0LCA3NzYzMiwgMzU1NDcsIDc3NjM5LCAKKyAgICA3NzY0MiwgNzc2NDksIDc3NjU1LCA3NzY2MCwgNzc2NjQsIDc3NjcwLCA3NzY3OCwgNzc2ODUsIDc3NjkwLCA3NzY5NCwgCisgICAgNzc3MDMsIDc3NzExLCA3NzcxNywgNzc3MjIsIDM1NTUyLCA3NzcyOSwgNzc3NDEsIDc3NzQ4LCA3Nzc1NCwgNzc3NTksIAorICAgIDc3NzY1LCA3Nzc3MiwgNzc3NzgsIDIzMTcxLCAyOTg1NSwgNzc3ODQsIDc3Nzg5LCA3Nzc5NSwgNzc3OTksIDc3ODExLCAKKyAgICA3NzQzNywgNzc0NDQsIDIzMzY0LCA3NzgyMSwgNzc4MjYsIDc3ODMzLCA3NzgzOSwgNzc4NDYsIDc3ODUyLCA3Nzg2MywgCisgICAgNzc4NjgsIDc3ODc2LCA5Njk5LCA3Nzg4MSwgNzc4ODQsIDc3ODkwLCA3Nzg5NCwgNzc4OTgsIDc3OTAxLCA3NzkwNywgCisgICAgNzc5MTMsIDM1MjkwLCA0NDUxLCAxMDkzLCAxNDcwNiwgNzc5MjAsIDc3OTI2LCA3NzkzMiwgNzc5MzgsIDc3OTQ0LCAKKyAgICA3Nzk1MCwgNzc5NTYsIDc3OTYyLCA3Nzk2OCwgNzc5NzMsIDc3OTc4LCA3Nzk4MywgNzc5ODgsIDc3OTkzLCA3Nzk5OCwgCisgICAgNzgwMDMsIDc4MDA4LCA3ODAxMywgNzgwMTgsIDc4MDIzLCA3ODAyOCwgNzgwMzMsIDc4MDM5LCA3ODA0NCwgNzgwNDksIAorICAgIDc4MDU1LCA3ODA2MCwgNzgwNjUsIDc4MDcxLCA3ODA3NywgNzgwODMsIDc4MDg5LCA3ODA5NSwgNzgxMDEsIDc4MTA3LCAKKyAgICA3ODExMywgNzgxMTksIDc4MTI0LCA3ODEyOSwgNzgxMzUsIDc4MTQwLCA3ODE0NSwgNzgxNTEsIDc4MTU2LCA3ODE2MSwgCisgICAgNzgxNjYsIDc4MTcxLCA3ODE3NiwgNzgxODEsIDc4MTg2LCA3ODE5MSwgNzgxOTYsIDc4MjAxLCA3ODIwNiwgNzgyMTEsIAorICAgIDc4MjE3LCA3ODIyMiwgNzgyMjcsIDc4MjMyLCA3ODIzOCwgNzgyNDMsIDc4MjQ4LCA3ODI1MywgNzgyNTgsIDc4MjY0LCAKKyAgICA3ODI2OSwgNzgyNzQsIDc4Mjc5LCA3ODI4NCwgNzgyODksIDc4Mjk0LCA3ODI5OSwgNzgzMDQsIDc4MzA5LCA3ODMxNCwgCisgICAgNzgzMTksIDc4MzI0LCA3ODMyOSwgNzgzMzQsIDc4MzM5LCA3ODM0NCwgNzgzNDksIDc4MzU0LCA3ODM1OSwgNzgzNjUsIAorICAgIDc4MzcwLCA3ODM3NSwgNzgzODAsIDc4Mzg1LCA3ODM5MCwgNzgzOTUsIDc4NDAwLCAxODc1LCAxNjksIDc4NDA1LCA3ODQwOSwgCisgICAgNzg0MTMsIDc4NDE4LCA3ODQyNiwgNzg0MzAsIDc4NDM3LCA3ODQ0NSwgNzg0NDksIDc4NDYyLCA3ODQ3MCwgNzg0NzUsIAorICAgIDc4NDgwLCAyODY0OSwgNzg0ODQsIDc4NDg5LCA3ODQ5MywgNzg0OTgsIDc4NTAyLCA3ODUxMCwgNzg1MTQsIDIyNzcxLCAKKyAgICA3ODUxOSwgNzg1MjMsIDY2NzE0LCA3ODUyNywgNzg1MzAsIDc4NTM4LCA3ODU0NiwgNzg1NTQsIDc4NTU5LCA3ODU2NCwgCisgICAgNzg1NzEsIDc4NTc4LCA3ODU4NCwgNzg1OTAsIDc4NTk1LCA3ODYwMiwgNzg2MDcsIDc4NjE1LCA3MTE3MiwgNzg2MjIsIAorICAgIDY2NTAwLCA3ODYyNywgNzg2MzIsIDc4NjM2LCA3ODY0MywgNjY1MjcsIDEyODUzLCA3ODY0OSwgNzg2NTQsIDc4NjU5LCAKKyAgICA3ODY2MywgNzg2NjYsIDc4Njc1LCA3ODY4MSwgNzg2ODUsIDc4Njk1LCA3ODcwNCwgNzg3MDgsIDc4NzExLCA3ODcxNSwgCisgICAgNzg3MjIsIDc4NzM1LCA3ODc0MSwgNzg3NDksIDc4NzU4LCA3ODc2OSwgNzg3ODAsIDc4NzkxLCA3ODgwMiwgNzg4MTEsIAorICAgIDc4ODE3LCA3ODgyNiwgNzg4MzQsIDc4ODQ0LCA3ODg1NywgNzg4NjUsIDc4ODcyLCA3ODg4MywgNzg4ODksIDc4ODk0LCAKKyAgICA3ODg5OSwgNzg5MDUsIDc4OTE1LCA3ODkyMSwgNzg5MzEsIDc4OTM4LCA3ODk0OCwgNzg5NTcsIDc3MTIzLCA3ODk2NSwgCisgICAgNzg5NzEsIDc4OTc5LCA3ODk4NSwgNzg5OTIsIDc5MDAwLCA3OTAwNSwgNzkwMDgsIDc5MDEyLCA3OTAxOCwgNzkwMjIsIAorICAgIDc5MDI1LCA3OTAzMSwgNzkwMzcsIDc5MDQ1LCA3OTA1NywgNzkwNjksIDc5MDc2LCA3OTA4MSwgNzkwODUsIDc5MDk2LCAKKyAgICA3OTEwNCwgNzkxMTEsIDc5MTIzLCA3OTEzMSwgNzkxMzksIDc5MTQ2LCA3OTE1MiwgNzkxNTcsIDc5MTY3LCA3OTE3NiwgCisgICAgNzkxODEsIDc5MTkxLCA3OTIwMCwgNDYwMzksIDc5MjA3LCA3OTIxMSwgNzkyMTYsIDc5MjI0LCA3OTIzMSwgNzkyMzcsIAorICAgIDc5MjQxLCA3OTI1MSwgNzkyNjIsIDc5MjcwLCA3OTI3NywgNzkyODksIDc5MzAxLCA3OTMxMCwgNzYwNjYsIDc5MzE3LCAKKyAgICA3OTMyNywgNzkzMzksIDc5MzUwLCA3OTM2NCwgNzkzNzIsIDc5MzgyLCA3OTM4OSwgNzkzOTcsIDc5NDEwLCA3OTQyMiwgCisgICAgNzk0MzEsIDc5NDM5LCA3OTQ0OSwgNzk0NjAsIDc5NDcyLCA3OTQ4MSwgNzk0OTEsIDc5NTAxLCA3OTUxMCwgNzk1MTcsIAorICAgIDc5NTI2LCA3OTU0MSwgNzk1NDksIDc5NTU5LCA3OTU2OCwgNzk1NzYsIDc5NTg5LCA2MzU0MCwgNzk2MDQsIDc5NjE0LCAKKyAgICA3OTYyMywgNzk2MzUsIDc5NjQ1LCA3OTY1NywgNzk2NjgsIDc5NjgyLCA3OTY5NiwgNzk3MTAsIDc5NzI0LCA3OTczOCwgCisgICAgNzk3NTIsIDc5NzY2LCA3OTc4MCwgNzk3OTQsIDc5ODA4LCA3OTgyMiwgNzk4MzYsIDc5ODUwLCA3OTg2NCwgNzk4NzgsIAorICAgIDc5ODkyLCA3OTkwNiwgNzk5MjAsIDc5OTM0LCA3OTk0OCwgNzk5NjIsIDc5OTc2LCA3OTk5MCwgODAwMDQsIDgwMDE4LCAKKyAgICA4MDAzMiwgODAwNDYsIDgwMDYwLCA4MDA3NCwgODAwODgsIDgwMTAyLCA4MDExNiwgODAxMzAsIDgwMTQ0LCA4MDE1OCwgCisgICAgODAxNzIsIDgwMTg2LCA4MDIwMCwgODAyMTQsIDgwMjI4LCA4MDI0MiwgODAyNTYsIDgwMjcwLCA4MDI4NCwgODAyOTgsIAorICAgIDgwMzEyLCA4MDMyNiwgODAzNDAsIDgwMzU0LCA4MDM2OCwgODAzODIsIDgwMzk2LCA4MDQxMCwgODA0MjQsIDgwNDM4LCAKKyAgICA4MDQ1MiwgODA0NjYsIDgwNDgwLCA4MDQ5NCwgODA1MDgsIDgwNTIyLCA4MDUzNiwgODA1NTAsIDgwNTY0LCA4MDU3OCwgCisgICAgODA1OTIsIDgwNjA2LCA4MDYyMCwgODA2MzQsIDgwNjQ4LCA4MDY2MiwgODA2NzYsIDgwNjkwLCA4MDcwNCwgODA3MTgsIAorICAgIDgwNzMyLCA4MDc0NiwgODA3NjAsIDgwNzc0LCA4MDc4OCwgODA4MDIsIDgwODE2LCA4MDgzMCwgODA4NDQsIDgwODU4LCAKKyAgICA4MDg3MiwgODA4ODYsIDgwOTAwLCA4MDkxNCwgODA5MjgsIDgwOTQyLCA4MDk1NiwgODA5NzAsIDgwOTg0LCA4MDk5OCwgCisgICAgODEwMTIsIDgxMDI2LCA4MTA0MCwgODEwNTQsIDgxMDY4LCA4MTA4MiwgODEwOTYsIDgxMTEwLCA4MTEyNCwgODExMzgsIAorICAgIDgxMTUyLCA4MTE2NiwgODExODAsIDgxMTk0LCA4MTIwOCwgODEyMjIsIDgxMjM2LCA4MTI1MCwgODEyNjQsIDgxMjc4LCAKKyAgICA4MTI5MiwgODEzMDYsIDgxMzIwLCA4MTMzNCwgODEzNDgsIDgxMzYyLCA4MTM3NiwgODEzOTAsIDgxNDA0LCA4MTQxOCwgCisgICAgODE0MzIsIDgxNDQ2LCA4MTQ2MCwgODE0NzQsIDgxNDg4LCA4MTUwMiwgODE1MTYsIDgxNTMwLCA4MTU0NCwgODE1NTgsIAorICAgIDgxNTcyLCA4MTU4NiwgODE2MDAsIDgxNjE0LCA4MTYyOCwgODE2NDIsIDgxNjU2LCA4MTY3MCwgODE2ODQsIDgxNjk4LCAKKyAgICA4MTcxMiwgODE3MjYsIDgxNzQwLCA4MTc1NCwgODE3NjgsIDgxNzgyLCA4MTc5NiwgODE4MTAsIDgxODI0LCA4MTgzOCwgCisgICAgODE4NTIsIDgxODY2LCA4MTg4MCwgODE4OTQsIDgxOTA4LCA4MTkyMiwgODE5MzYsIDgxOTUwLCA4MTk2NCwgODE5NzgsIAorICAgIDgxOTkyLCA4MjAwNiwgODIwMjAsIDgyMDM0LCA4MjA0OCwgODIwNjIsIDgyMDc2LCA4MjA5MCwgODIxMDQsIDgyMTE4LCAKKyAgICA4MjEzMiwgODIxNDYsIDgyMTYwLCA4MjE3NCwgODIxODgsIDgyMjAyLCA4MjIxNiwgODIyMzAsIDgyMjQ0LCA4MjI1OCwgCisgICAgODIyNzIsIDgyMjg2LCA4MjMwMCwgODIzMTQsIDgyMzI4LCA4MjM0MiwgODIzNTYsIDgyMzcwLCA4MjM4NCwgODIzOTgsIAorICAgIDgyNDEyLCA4MjQyNiwgODI0NDAsIDgyNDU0LCA4MjQ2OCwgODI0ODIsIDgyNDk2LCA4MjUxMCwgODI1MjQsIDgyNTM4LCAKKyAgICA4MjU1MiwgODI1NjYsIDgyNTgwLCA4MjU5NCwgODI2MDgsIDgyNjIyLCA4MjYzNiwgODI2NTAsIDgyNjY0LCA4MjY3OCwgCisgICAgODI2OTIsIDgyNzA2LCA4MjcyMCwgODI3MzQsIDgyNzQ4LCA4Mjc2MiwgODI3NzYsIDgyNzkwLCA4MjgwNCwgODI4MTgsIAorICAgIDgyODMyLCA4Mjg0NiwgODI4NjAsIDgyODc0LCA4Mjg4OCwgODI5MDIsIDgyOTE2LCA4MjkzMCwgODI5NDQsIDgyOTU4LCAKKyAgICA4Mjk3MiwgODI5ODYsIDgzMDAwLCA4MzAxNCwgODMwMjgsIDgzMDQyLCA4MzA1NiwgODMwNzAsIDgzMDg0LCA4MzA5OCwgCisgICAgODMxMTIsIDgzMTI2LCA4MzE0MCwgODMxNTQsIDgzMTY4LCA4MzE4MiwgODMxOTYsIDgzMjEwLCA4MzIyNCwgODMyMzgsIAorICAgIDgzMjUyLCA4MzI2NiwgODMyODAsIDgzMjk0LCA4MzMwOCwgODMzMjIsIDgzMzM2LCA4MzM1MCwgODMzNjQsIDgzMzc4LCAKKyAgICA4MzM5MiwgODM0MDYsIDgzNDIwLCA4MzQzNCwgODM0NDgsIDgzNDYyLCA4MzQ3NiwgODM0OTAsIDgzNTA0LCA4MzUxOCwgCisgICAgODM1MzIsIDgzNTQ2LCA4MzU2MCwgODM1NzQsIDgzNTg4LCA4MzYwMiwgODM2MTYsIDgzNjMwLCA4MzY0NCwgODM2NTgsIAorICAgIDgzNjcyLCA4MzY4NiwgODM3MDAsIDgzNzE0LCA4MzcyOCwgODM3NDIsIDgzNzU2LCA4Mzc3MCwgODM3ODQsIDgzNzk4LCAKKyAgICA4MzgxMiwgODM4MjYsIDgzODQwLCA4Mzg1NCwgODM4NjgsIDgzODgyLCA4Mzg5NiwgODM5MTAsIDgzOTI0LCA4MzkzOCwgCisgICAgODM5NTIsIDgzOTY2LCA4Mzk4MCwgODM5OTQsIDg0MDA4LCA4NDAyMiwgODQwMzYsIDg0MDUwLCA4NDA2NCwgODQwNzgsIAorICAgIDg0MDkyLCA4NDEwNiwgODQxMjAsIDg0MTM0LCA4NDE0OCwgODQxNjIsIDg0MTc2LCA4NDE5MCwgODQyMDQsIDg0MjE4LCAKKyAgICA4NDIzMiwgODQyNDYsIDg0MjYwLCA4NDI3NCwgODQyODgsIDg0MzAyLCA4NDMxNiwgODQzMzAsIDg0MzQ0LCA4NDM1OCwgCisgICAgODQzNzIsIDg0Mzg2LCA4NDQwMCwgODQ0MTQsIDg0NDI4LCA4NDQ0MiwgODQ0NTYsIDg0NDcwLCA4NDQ4NCwgODQ0OTgsIAorICAgIDg0NTEyLCA4NDUyNiwgODQ1NDAsIDg0NTU0LCA4NDU2OCwgODQ1ODIsIDg0NTk2LCA4NDYxMCwgODQ2MjQsIDg0NjM4LCAKKyAgICA4NDY1MiwgODQ2NjYsIDg0NjgwLCA4NDY5NCwgODQ3MDgsIDg0NzIyLCA4NDczNiwgODQ3NTAsIDg0NzY0LCA4NDc3OCwgCisgICAgODQ3OTIsIDg0ODA2LCA4NDgyMCwgODQ4MzQsIDg0ODQ4LCA4NDg2MiwgODQ4NzYsIDg0ODkwLCA4NDkwNCwgODQ5MTgsIAorICAgIDg0OTMyLCA4NDk0NiwgODQ5NjAsIDg0OTc0LCA4NDk4OCwgODUwMDIsIDg1MDE2LCA4NTAzMCwgODUwNDQsIDg1MDU4LCAKKyAgICA4NTA3MiwgODUwODYsIDg1MTAwLCA4NTExNCwgODUxMjgsIDg1MTQyLCA4NTE1NiwgODUxNzAsIDg1MTg0LCA4NTE5OCwgCisgICAgODUyMTIsIDg1MjI2LCA4NTI0MCwgODUyNTQsIDg1MjY4LCA4NTI4MiwgODUyOTYsIDg1MzEwLCA4NTMyNCwgODUzMzgsIAorICAgIDg1MzUyLCA4NTM2NiwgODUzODAsIDg1Mzk0LCA4NTQwOCwgODU0MjIsIDg1NDM2LCA4NTQ1MCwgODU0NjQsIDg1NDc4LCAKKyAgICA4NTQ5MiwgODU1MDYsIDg1NTIwLCA4NTUzNCwgODU1NDgsIDg1NTYyLCA4NTU3NiwgODU1OTAsIDg1NjA0LCA4NTYxOCwgCisgICAgODU2MzIsIDg1NjQ2LCA4NTY2MCwgODU2NzQsIDg1Njg4LCA4NTcwMiwgODU3MTYsIDg1NzMwLCA4NTc0NCwgODU3NTgsIAorICAgIDg1NzcyLCA4NTc4NiwgODU4MDAsIDg1ODE0LCA4NTgyOCwgODU4NDIsIDg1ODU2LCA4NTg3MCwgODU4ODQsIDg1ODk4LCAKKyAgICA4NTkxMiwgODU5MjYsIDg1OTQwLCA4NTk1NCwgODU5NjgsIDg1OTgyLCA4NTk5NiwgODYwMTAsIDg2MDI0LCA4NjAzOCwgCisgICAgODYwNTIsIDg2MDY2LCA4NjA4MCwgODYwOTQsIDg2MTA4LCA4NjEyMiwgODYxMzYsIDg2MTUwLCA4NjE2NCwgODYxNzgsIAorICAgIDg2MTkyLCA4NjIwNiwgODYyMjAsIDg2MjM0LCA4NjI0OCwgODYyNjIsIDg2Mjc2LCA4NjI5MCwgODYzMDQsIDg2MzE4LCAKKyAgICA4NjMzMiwgODYzNDYsIDg2MzYwLCA4NjM3NCwgODYzODgsIDg2NDAyLCA4NjQxNiwgODY0MzAsIDg2NDQ0LCA4NjQ1OCwgCisgICAgODY0NzIsIDg2NDg2LCA4NjUwMCwgODY1MTQsIDg2NTI4LCA4NjU0MiwgODY1NTYsIDg2NTcwLCA4NjU4NCwgODY1OTgsIAorICAgIDg2NjEyLCA4NjYyNiwgODY2NDAsIDg2NjU0LCA4NjY2OCwgODY2ODIsIDg2Njk2LCA4NjcxMCwgODY3MjQsIDg2NzM4LCAKKyAgICA4Njc1MiwgODY3NjYsIDg2NzgwLCA4Njc5NCwgODY4MDgsIDg2ODIyLCA4NjgzNiwgODY4NTAsIDg2ODY0LCA4Njg3OCwgCisgICAgODY4OTIsIDg2OTA2LCA4NjkyMCwgODY5MzQsIDg2OTQ4LCA4Njk2MiwgODY5NzYsIDg2OTkwLCA4NzAwNCwgODcwMTgsIAorICAgIDg3MDMyLCA4NzA0NiwgODcwNjAsIDg3MDc0LCA4NzA4OCwgODcxMDIsIDg3MTE2LCA4NzEzMCwgODcxNDQsIDg3MTU4LCAKKyAgICA4NzE3MiwgODcxODYsIDg3MjAwLCA4NzIxNCwgODcyMjgsIDg3MjQyLCA4NzI1NiwgODcyNzAsIDg3Mjg0LCA4NzI5OCwgCisgICAgODczMTIsIDg3MzI2LCA4NzM0MCwgODczNTQsIDg3MzY4LCA4NzM4MiwgODczOTYsIDg3NDEwLCA4NzQyNCwgODc0MzgsIAorICAgIDg3NDUyLCA4NzQ2NiwgODc0ODAsIDg3NDk0LCA4NzUwOCwgODc1MjIsIDg3NTM2LCA4NzU1MCwgODc1NjQsIDg3NTc4LCAKKyAgICA4NzU5MiwgODc2MDYsIDg3NjIwLCA4NzYzNCwgODc2NDgsIDg3NjYyLCA4NzY3NiwgODc2OTAsIDg3NzA0LCA4NzcxOCwgCisgICAgODc3MzIsIDg3NzQ2LCA4Nzc2MCwgODc3NzQsIDg3Nzg4LCA4NzgwMiwgODc4MTYsIDg3ODMwLCA4Nzg0NCwgODc4NTgsIAorICAgIDg3ODcyLCA4Nzg4NiwgODc5MDAsIDg3OTE0LCA4NzkyOCwgODc5NDIsIDg3OTU2LCA4Nzk3MCwgODc5ODQsIDg3OTk4LCAKKyAgICA4ODAxMiwgODgwMjYsIDg4MDQwLCA4ODA1NCwgODgwNjgsIDg4MDgyLCA4ODA5NiwgODgxMTAsIDg4MTI0LCA4ODEzOCwgCisgICAgODgxNTIsIDg4MTY2LCA4ODE4MCwgODgxOTQsIDg4MjA4LCA4ODIyMiwgODgyMzYsIDg4MjUwLCA4ODI2NCwgODgyNzgsIAorICAgIDg4MjkyLCA4ODMwNiwgODgzMjAsIDg4MzM0LCA4ODM0OCwgODgzNjIsIDg4Mzc2LCA4ODM5MCwgODg0MDQsIDg4NDE4LCAKKyAgICA4ODQzMiwgODg0NDYsIDg4NDYwLCA4ODQ3NCwgODg0ODgsIDg4NTAyLCA4ODUxNiwgODg1MzAsIDg4NTQ0LCA4ODU1OCwgCisgICAgODg1NzIsIDg4NTg2LCA4ODYwMCwgODg2MTQsIDg4NjI4LCA4ODY0MiwgODg2NTYsIDg4NjcwLCA4ODY4NCwgODg2OTgsIAorICAgIDg4NzEyLCA4ODcyNiwgODg3NDAsIDg4NzU0LCA4ODc2OCwgODg3ODIsIDg4Nzk2LCA4ODgxMCwgODg4MjQsIDg4ODM4LCAKKyAgICA4ODg1MiwgODg4NjYsIDg4ODgwLCA4ODg5NCwgODg5MDgsIDg4OTIyLCA4ODkzNiwgODg5NTAsIDg4OTY0LCA4ODk3OCwgCisgICAgODg5OTIsIDg5MDA2LCA4OTAyMCwgODkwMzQsIDg5MDQ4LCA4OTA2MiwgODkwNzYsIDg5MDkwLCA4OTEwNCwgODkxMTgsIAorICAgIDg5MTMyLCA4OTE0NiwgODkxNjAsIDg5MTc0LCA4OTE4OCwgODkyMDIsIDg5MjE2LCA4OTIzMCwgODkyNDQsIDg5MjU4LCAKKyAgICA4OTI3MiwgODkyODYsIDg5MzAwLCA4OTMxNCwgODkzMjgsIDg5MzQyLCA4OTM1NiwgODkzNzAsIDg5Mzg0LCA4OTM5OCwgCisgICAgODk0MTIsIDg5NDI2LCA4OTQ0MCwgODk0NTQsIDg5NDY4LCA4OTQ4MiwgODk0OTYsIDg5NTEwLCA4OTUyNCwgODk1MzgsIAorICAgIDg5NTUyLCA4OTU2NiwgODk1ODAsIDg5NTk0LCA4OTYwOCwgODk2MjIsIDg5NjM2LCA4OTY1MCwgODk2NjQsIDg5Njc4LCAKKyAgICA4OTY5MiwgODk3MDYsIDg5NzIwLCA4OTczNCwgODk3NDgsIDg5NzYyLCA4OTc3NiwgODk3OTAsIDg5ODA0LCA4OTgxOCwgCisgICAgODk4MzIsIDg5ODQ2LCA4OTg2MCwgODk4NzQsIDg5ODg4LCA4OTkwMiwgODk5MTYsIDg5OTMwLCA4OTk0NCwgODk5NTgsIAorICAgIDg5OTcyLCA4OTk4NiwgOTAwMDAsIDkwMDE0LCA5MDAyOCwgOTAwNDIsIDkwMDU2LCA5MDA3MCwgOTAwODQsIDkwMDk4LCAKKyAgICA5MDExMiwgOTAxMjYsIDkwMTQwLCA5MDE1NCwgOTAxNjgsIDkwMTgyLCA5MDE5NiwgOTAyMTAsIDkwMjI0LCA5MDIzOCwgCisgICAgOTAyNDksIDkwMjYwLCA5MDI3MCwgOTAyODEsIDkwMjg5LCA5MDI5NSwgOTAzMDUsIDkwMzEzLCA5MDMxOSwgMzE2MjEsIAorICAgIDkwMzI0LCA5MDMzMCwgOTAzMzksIDkwMzUxLCA5MDM1NiwgOTAzNjMsIDEwNTQ2LCAxOTMxMSwgOTAzNjksIDkwMzc4LCAKKyAgICA5MDM4MywgOTAzODcsIDkwMzk0LCA5MDQwMCwgOTA0MDUsIDkwNDEwLCA5MDQxOCwgOTA0MjYsIDEzMjI5LCA5MDQzMCwgCisgICAgOTA0MzMsIDkwNDM1LCA5MDQ0MiwgOTA0NDgsIDkwNDU5LCA5MDQ2NCwgOTA0NjgsIDkwNDczLCA5MDQ4MCwgOTA0ODYsIAorICAgIDkwNDkxLCA5MDQ5OSwgNzE3NDEsIDcxNzUxLCA5MDUwNSwgOTA1MTIsIDkwNTIyLCAxMTY0MSwgOTA1MjksIDkwNTM0LCAKKyAgICAzMTg1NSwgOTA1NDMsIDkwNTQ4LCA5MDU1NSwgOTA1NjUsIDkwNTczLCA5MDU4MSwgOTA1OTAsIDkwNTk2LCA5MDYwMiwgCisgICAgOTA2MDksIDkwNjE2LCA5MDYyMSwgOTA2MjUsIDkwNjMzLCA2NjU0NCwgOTA2MzgsIDkwNjQ3LCA5MDY1NSwgOTA2NjIsIAorICAgIDkwNjY3LCA5MDY3MSwgOTA2ODAsIDkwNjg2LCA5MDY4OSwgOTA2OTMsIDkwNzAyLCA5MDcxMiwgNzg0NTcsIDkwNzIxLCAKKyAgICA5MDcyNSwgOTA3MzMsIDkwNzM3LCA5MDc0MywgOTA3NTQsIDkwNzY0LCAxOTMyMCwgOTA3NzUsIDkwNzg0LCA5MDc5MiwgCisgICAgOTA4MDAsIDkwODA3LCA2NjU2MywgOTE5MiwgOTA4MTUsIDkwODE5LCA5MDgyOCwgOTA4MzUsIDkwODM4LCAyOTczNiwgCisgICAgOTA4NDEsIDkwODQ1LCA5MDg1MCwgOTA4NjcsIDkwODc5LCAxMTU5OSwgOTA4OTEsIDkwODk2LCA5MDkwMSwgOTA5MDYsIAorICAgIDIyODYxLCA5MDkxMCwgOTA5MTUsIDkwOTIwLCA5MDkyNiwgOTA5MzEsIDYxNDIsIDkwOTM2LCAyMjg2NSwgOTA5NDEsIAorICAgIDkwOTQ2LCA5MDk1MiwgOTA5NTksIDkwOTY0LCA5MDk2OSwgOTA5NzUsIDkwOTgxLCA5MDk4NywgOTA5OTIsIDkwOTk4LCAKKyAgICA5MTAwMiwgOTEwMTYsIDkxMDI0LCA5MTAzMiwgOTEwMzgsIDkxMDQzLCA5MTA1MCwgOTEwNjAsIDkxMDY5LCA5MTA3NCwgCisgICAgOTEwNzksIDkxMDg0LCA5MTA5MiwgOTEwOTcsIDkxMTAzLCA5MTEwOCwgOTExMTcsIDY1MjMyLCA5MTEyMiwgOTExMjUsIAorICAgIDkxMTQzLCA5MTE2MiwgOTExNzUsIDkxMTg5LCA5MTIwNSwgOTEyMTIsIDkxMjE5LCA5MTIyOCwgOTEyMzUsIDkxMjQxLCAKKyAgICA5MTI0OCwgOTEyNTMsIDkxMjU5LCA5MTI2NSwgOTEyNzMsIDkxMjc5LCA5MTI4NCwgOTEyODksIDkxMzA1LCAxMTYxMiwgCisgICAgOTEzMTksIDkxMzI2LCA5MTMzNCwgOTEzNDAsIDkxMzQ0LCA5MTM0NywgOTEzNTIsIDkxMzU3LCA5MTM2NCwgOTEzNjksIAorICAgIDkxMzc4LCA5MTM4NCwgOTEzODksIDkxMzk1LCA5MTQwMSwgOTE0MTAsIDkxNDE5LCAzODk1NSwgOTE0MjQsIDkxNDMyLCAKKyAgICA5MTQ0MSwgMTI4ODIsIDkxNDUwLCA5MTQ1NiwgOTE0NjQsIDkxNDcwLCA5MTQ3NiwgOTE0ODIsIDkxNDg3LCA5MTQ5NCwgCisgICAgOTE1MDAsIDEyODkzLCA5MTUwNSwgOTE1MDgsIDkxNTEzLCAzNTU3OSwgOTE1MjMsIDkxNTMyLCA5MTUzNywgOTE1NDMsIAorICAgIDkxNTQ4LCA5MTU1NiwgOTE1NjMsIDkxNTc0LCA5MTU4NCwgOTE1ODksIDkxNTk3LCA3MTA5NSwgOTE2MDIsIDkxNjA4LCAKKyAgICA5MTYxMywgOTE2MjAsIDkxNjI5LCA5MTYzNywgOTE2NDEsIDkxNjQ3LCA5MTY1MywgOTE2NjAsIDkxNjY2LCA5MTY3MCwgCisgICAgMTg2ODIsIDMxMDMsIDkxNjc1LCA5MTY3OSwgOTE2ODMsIDkxNjg5LCA5MTY5OCwgOTE3MDQsIDkxNzExLCA5MTcxNSwgCisgICAgOTE3MzYsIDkxNzU4LCA5MTc3NCwgOTE3OTEsIDkxODEwLCA5MTgxOSwgOTE4MjksIDkxODM3LCA5MTg0NCwgOTE4NTEsIAorICAgIDkxODU3LCAyOTU5NywgOTE4NzEsIDkxODc1LCA5MTg4MSwgOTE4ODksIDkxOTAxLCA5MTkwNywgOTE5MTUsIDkxOTIyLCAKKyAgICA5MTkyNywgOTE5MzIsIDkxOTM2LCA5MTk0NCwgOTE5NTEsIDkxOTU1LCA5MTk2MSwgOTE5NjcsIDkxOTcyLCAzNzI5LCAKKyAgICA0NzIyMCwgOTE5NzgsIDkxOTgyLCA5MTk4NiwgOTE5OTAsIDkxOTk1LCA5MjAwMCwgOTIwMDUsIDkyMDExLCA5MjAxNywgCisgICAgOTIwMjMsIDkyMDMwLCA5MjAzNiwgOTIwNDMsIDkyMDQ5LCA5MjA1NSwgOTIwNjAsIDkyMDY2LCA5MjA3MSwgOTIwNzUsIAorICAgIDkyMDgwLCA5MjA4NCwgOTIwODksIDQ3MjM1LCA5MjA5MywgOTIwOTgsIDkyMTA2LCA5MjExMCwgOTIxMTUsIDkyMTIyLCAKKyAgICA5MjEzMSwgOTIxMzcsIDkyMTQ2LCA5MjE1MCwgOTIxNTcsIDkyMTYxLCA5MjE2NCwgOTIxNzEsIDkyMTc3LCA5MjE4NiwgCisgICAgOTIxOTYsIDkyMjA2LCA5MjIxMSwgOTIyMTUsIDkyMjIyLCA5MjIzMCwgOTIyMzksIDkyMjQzLCA5MjI1MSwgOTIyNTcsIAorICAgIDkyMjYyLCA5MjI2NywgOTIyNzMsIDkyMjc5LCA5MjI4NCwgOTIyODgsIDkyMjk0LCA5MjI5OSwgOTIzMDMsIDkyMzA3LCAKKyAgICA5MjMxMCwgOTIzMTUsIDkyMzIzLCA5MjMzMywgOTIzMzksIDkyMzQ0LCA5MjM1NCwgNDQ0OTIsIDkyMzYyLCA5MjM3NCwgCisgICAgOTIzODAsIDkyMzg0LCA5MjM5MCwgOTI0MDIsIDkyNDEzLCA5MjQyMCwgOTI0MjYsIDkyNDMzLCA5MjQ0MCwgOTI0NTIsIAorICAgIDkyNDU5LCA5MjQ2NSwgMjI5MzksIDkyNDY5LCA5MjQ3NywgOTI0ODMsIDkyNDkwLCA5MjQ5NiwgOTI1MDIsIDkyNTA4LCAKKyAgICA5MjUxMywgOTI1MTgsIDkyNTIzLCA5MjUyNywgOTI1MzYsIDkyNTQ0LCA5MjU1NSwgNzM3NCwgOTI1NjAsIDE4MTMxLCAKKyAgICA5MjU2NiwgOTI1NzAsIDkyNTc0LCA5MjU3OCwgOTI1ODYsIDkyNTk1LCA5MjU5OSwgOTI2MDYsIDkyNjE1LCA5MjYyMywgCisgICAgOTI2MzYsIDkyNjQyLCA5MjA4NSwgMzI3MzksIDkyNjQ3LCA5MjY0OSwgOTI2NTQsIDkyNjU5LCA5MjY2NCwgOTI2NjksIAorICAgIDkyNjc0LCA5MjY3OSwgOTI2ODQsIDkyNjg5LCA5MjY5NCwgOTI2OTksIDkyNzA0LCA5MjcwOSwgOTI3MTQsIDkyNzE5LCAKKyAgICA5MjcyNSwgOTI3MzAsIDkyNzM1LCA5Mjc0MCwgOTI3NDUsIDkyNzUwLCA5Mjc1NSwgOTI3NjAsIDkyNzY1LCA5Mjc3MSwgCisgICAgOTI3NzcsIDkyNzgzLCA5Mjc4OCwgOTI3OTMsIDkyODA1LCA5MjgxMCwgMTg4MSwgNTQsIDkyODE1LCA5MjgyMCwgMzU1ODUsIAorICAgIDkyODI0LCAzNTU5MCwgMzU1OTUsIDM1NjAxLCAzNTYwNiwgOTI4MjgsIDM1NjExLCAyMzk5NCwgOTI4NTAsIDkyODU0LCAKKyAgICA5Mjg1OCwgOTI4NjMsIDkyODY3LCAzNTYxNSwgOTI4NzEsIDkyODc5LCA5Mjg4NiwgOTI4OTIsIDM1NjIwLCA5MjkwMiwgCisgICAgOTI5MDUsIDkyOTEwLCA5MjkxNCwgOTI5MjMsIDEwMzU2LCA5MjkzMSwgMzU2MjUsIDIzODQ1LCA5MjkzNCwgOTI5MzgsIAorICAgIDkyOTQ2LCAxMzkzLCA5Mjk1MSwgMzU2MzYsIDkyOTU0LCA5Mjk1OSwgMjc5OTUsIDI4MDA1LCAzODU3OCwgOTI5NjQsIAorICAgIDkyOTY5LCA5Mjk3NCwgOTI5NzksIDkyOTg1LCA5Mjk5MCwgOTI5OTksIDkzMDA0LCA5MzAxMywgOTMwMjEsIDkzMDI4LCAKKyAgICA5MzAzNCwgOTMwMzksIDkzMDQ0LCA5MzA0OSwgOTMwNTksIDkzMDY4LCA5MzA3NiwgOTMwODEsIDkzMDg5LCA5MzA5MywgCisgICAgOTMxMDEsIDkzMTA1LCA5MzExMiwgOTMxMjAsIDM1NDQ0LCA0MTYzNCwgOTMxMjcsIDkzMTMzLCA5MzEzOCwgOTMxNDMsIAorICAgIDEzMjY0LCAzMDgyMCwgOTMxNDgsIDkzMTUzLCA5MzE2MCwgOTMxNjYsIDkzMTcxLCA5MzE3OSwgOTMxODksIDkzMTk5LCAKKyAgICA5MzIwNSwgOTMyMTAsIDkzMjE2LCAxOTM0MiwgOTMyMjMsIDM5NDYyLCA5MzIzNiwgOTMyNDEsIDkzMjQ3LCAzMzczNywgCisgICAgNjk1NzksIDkzMjYwLCA5MzI2NCwgOTMyNzMsIDkzMjgyLCA5MzI4OSwgOTMyOTUsIDkzMzAzLCA5MzMxMiwgOTMzMTksIAorICAgIDQxNzU0LCA5MzMyNSwgOTMzMjgsIDkzMzMyLCA5MzMzNiwgOTMzNDAsIDI4MTQxLCA5MzM0NiwgOTMzNTMsIDkzMzU5LCAKKyAgICA5MzM2NywgOTMzNzIsIDkzMzc2LCAyNjEzNywgOTMzODIsIDkzMzg1LCA5MzM5MywgOTM0MDAsIDkzNDA4LCA5MzQyMSwgCisgICAgOTM0MzUsIDkzNDQyLCA5MzQ0OCwgOTM0NTUsIDkzNDYxLCAzNTY1MCwgOTM0NjUsIDkzNDcyLCA5MzQ4MCwgOTM0ODgsIAorICAgIDkzNDk0LCAzNTY1NSwgOTM1MDIsIDkzNTA4LCA5MzUxMywgOTM1MjMsIDkzNTI5LCA5MzUzOCwgMzM1MzIsIDM4MDEwLCAKKyAgICA5MzU0NiwgOTM1NTEsIDkzNTU2LCA5MzU2MCwgOTM1NjUsIDkzNTY5LCA5MzU3NywgOTM1ODIsIDE2NDE5LCA0NDUwNSwgCisgICAgOTM1ODYsIDkzNTkxLCAzNTY2MCwgNjgxMjEsIDkzNTk1LCA5MzYwMCwgOTM2MDQsIDkzNjExLCA5MzYyMCwgOTM2MjQsIAorICAgIDkzNjMyLCA5MzYzOCwgOTM2NDMsIDkzNjQ5LCA4NDkzLCA5MzY1NCwgOTM2NjAsIDkzNjY1LCA5MzY3MCwgOTM2ODEsIAorICAgIDkzNjkwLCA5MzcwMiwgOTM3MTcsIDM1OTM2LCA5MzcyMywgMTgyNTAsIDM1NjY0LCA5MzcyNywgOTM3MzQsIDkzNzQwLCAKKyAgICAyNjI1MywgOTM3NDQsIDkzNzUxLCA5Mzc2MCwgOTM3NjcsIDkzNzc2LCA5Mzc4MiwgOTM3ODcsIDkzNzk1LCA5MzgwMSwgCisgICAgOTM4MDYsIDM1Njc0LCA5MzgxMSwgOTM4MjAsIDkyNDA4LCA5MzgyOSwgOTM4MzYsIDkzODQyLCA5Mzg0OCwgOTM4NTcsIAorICAgIDkzODY3LCA5Mzg3NSwgOTM4ODIsIDkzODg2LCAzNTY3OSwgOTM4ODksIDM1Njg1LCAzNTY5MSwgOTM4OTQsIDkzOTAyLCAKKyAgICA5MzkxMCwgOTM5MjAsIDkzOTI5LCA5MzkzNywgOTM5NDQsIDkzOTU0LCAzNTY5NiwgOTM5NTgsIDkzOTYwLCA5Mzk2NCwgCisgICAgOTM5NjksIDkzOTczLCA5Mzk3NywgOTM5ODMsIDkzOTg4LCA5Mzk5MiwgOTQwMDMsIDk0MDA4LCA5NDAxMywgMzEwOCwgCisgICAgOTQwMTcsIDk0MDI0LCA5NDAyOCwgOTQwMzcsIDk0MDQ1LCA5NDA1MiwgOTQwNTcsIDk0MDYyLCA2ODE3MiwgOTQwNjYsIAorICAgIDk0MDY5LCA5NDA3NSwgOTQwODMsIDk0MDg5LCA5NDA5MywgOTQwOTgsIDk0MTA1LCA5NDExMCwgOTQxMTUsIDk0MTE5LCAKKyAgICA5NDEyNSwgOTQxMzAsIDM4MDQxLCA5NDEzNCwgOTQxMzcsIDk0MTQyLCA5NDE0NiwgOTQxNTEsIDk0MTU4LCA5NDE2MywgCisgICAgOTQxNjcsIDQzMDMxLCA5NDE3NSwgMjgwMTQsIDI4MDIzLCA5NDE4MSwgOTQxODcsIDk0MTkzLCA5NDE5OCwgOTQyMDIsIAorICAgIDk0MjA1LCA5NDIxNSwgOTQyMjQsIDk0MjI5LCA5NDIzNSwgOTQyNDIsIDk0MjQ4LCA5NDI1MiwgOTQyNjAsIDk0MjY1LCAKKyAgICAzODA0NywgNzg2NzcsIDk0MjY5LCA5NDI3NywgOTQyODMsIDk0MjkwLCA5NDI5NSwgOTQyOTksIDk0MzA0LCA2Mzc1NiwgCisgICAgOTQzMTAsIDk0MzE2LCAzODA1MywgOTQzMjEsIDk0MzI2LCA5NDMzMCwgOTQzMzUsIDk0MzQwLCA5NDM0NSwgOTQzNDksIAorICAgIDk0MzU0LCA5NDM1OSwgOTQzNjUsIDk0MzcwLCA5NDM3NSwgOTQzODEsIDk0Mzg3LCA5NDM5MiwgOTQzOTYsIDk0NDAxLCAKKyAgICA5NDQwNiwgOTQ0MTEsIDk0NDE1LCAyNjI1MiwgOTQ0MjAsIDk0NDI1LCA5NDQzMSwgOTQ0MzcsIDk0NDQzLCA5NDQ0OCwgCisgICAgOTQ0NTIsIDk0NDU3LCA5NDQ2MiwgOTQ0NjcsIDk0NDcxLCA5NDQ3NiwgOTQ0ODEsIDk0NDg2LCA5NDQ5MSwgNDc0OTAsIAorICAgIDk0NDk1LCAzNTcwNCwgOTQ1MDMsIDk0NTA3LCA5NDUxNSwgOTQ1MjMsIDk0NTM0LCA5NDUzOSwgOTQ1NDMsIDI0NDIwLCAKKyAgICA3NjE2OSwgOTQ1NDgsIDk0NTU0LCA5NDU1OSwgOTQ1NjksIDk0NTc2LCA5NDU4MSwgOTQ1ODksIDk0NTk4LCA5NDYwMywgCisgICAgOTQ2MDcsIDk0NjEyLCA5NDYyMCwgOTQ2MjgsIDk0NjM1LCA3MTM1NywgOTQ2NDEsIDk0NjQ5LCA5NDY1NiwgOTQ2NjcsIAorICAgIDk0NjczLCA5NDY3OSwgMzU3MTQsIDk0NjgyLCA5NDY4OSwgOTQ2OTcsIDk0NzAyLCA0NDcwOCwgOTQ3MDYsIDk0NzExLCAKKyAgICA5NDcxOCwgOTQ3MjMsIDk1NjcsIDk0NzI3LCA5NDczNSwgOTQ3NDIsIDk0NzQ5LCA5NDc1OCwgOTQ3NjUsIDk0NzcxLCAKKyAgICA5NDc4NSwgNjIxNCwgOTQ3OTMsIDk0Nzk5LCA5NDgwMywgOTQ4MDYsIDk0ODE0LCA5NDgyMSwgOTQ4MjYsIDk0ODM5LCAKKyAgICA5NDg0NiwgOTQ4NTIsIDk0ODU2LCA5NDg2NCwgOTQ4NjksIDk0ODc2LCA5NDg4MSwgNjY0MDMsIDk0ODg2LCA5NDg4OSwgCisgICAgOTQ4OTgsIDk0OTA1LCA5NDkxMSwgOTQ5MTUsIDk0OTE4LCA5NDkyNiwgOTQ5MzIsIDk0OTQxLCA5NDk1MSwgOTQ5NjEsIAorICAgIDk0OTcwLCA5NDk4MSwgOTQ5ODksIDk1MDAwLCA5NTAwNSwgOTUwMDksIDk1MDE0LCA5NTAxOCwgMzg3MDksIDk1MDI2LCAKKyAgICAyMzIzNCwgMzg3MTgsIDk1MDMxLCA5NTAzNiwgOTUwNDEsIDk1MDQ2LCA5NTA1MSwgOTUwNTYsIDk1MDYxLCA5NTA2NSwgCisgICAgOTUwNzAsIDk1MDc1LCA5NTA4MCwgOTUwODUsIDk1MDkwLCA5NTA5NSwgOTUwOTksIDk1MTA0LCA5NTEwOSwgOTUxMTMsIAorICAgIDk1MTE3LCA5NTEyMSwgOTUxMjUsIDk1MTMwLCA5NTEzNSwgOTUxMzksIDk1MTQ0LCA5NTE0OCwgOTUxNTIsIDk1MTU3LCAKKyAgICA5NTE2MiwgOTUxNjcsIDk1MTcyLCA5NTE3NiwgOTUxODEsIDk1MTg2LCA5NTE5MCwgOTUxOTUsIDk1MjAwLCA5NTIwNSwgCisgICAgOTUyMTAsIDk1MjE1LCA5NTIyMCwgOTUyMjUsIDk1MjMwLCA5NTIzNSwgOTUyNDAsIDk1MjQ1LCA5NTI1MCwgOTUyNTUsIAorICAgIDk1MjYwLCA5NTI2NSwgOTUyNzAsIDk1Mjc1LCA5NTI4MCwgOTUyODUsIDk1MjkwLCA5NTI5NCwgOTUyOTksIDk1MzA0LCAKKyAgICA5NTMwOSwgOTUzMTQsIDk1MzE5LCA5NTMyNCwgOTUzMjksIDk1MzM0LCA5NTMzOSwgOTUzNDQsIDk1MzQ5LCA5NTM1MywgCisgICAgOTUzNTgsIDk1MzYyLCA5NTM2NywgOTUzNzIsIDk1Mzc3LCA5NTM4MiwgOTUzODcsIDk1MzkyLCA5NTM5NywgOTU0MDIsIAorICAgIDk1NDA3LCA5NTQxMSwgOTU0MTUsIDk1NDIwLCA5NTQyNSwgOTU0MjksIDk1NDM0LCA5NTQzOSwgOTU0NDMsIDk1NDQ4LCAKKyAgICA5NTQ1MywgOTU0NTgsIDk1NDYzLCA5NTQ2NywgOTU0NzIsIDk1NDc3LCA5NTQ4MSwgOTU0ODYsIDk1NDkwLCA5NTQ5NCwgCisgICAgOTU0OTgsIDk1NTAyLCA5NTUwNywgOTU1MTEsIDk1NTE1LCA5NTUxOSwgOTU1MjMsIDk1NTI3LCA5NTUzMSwgOTU1MzUsIAorICAgIDk1NTM5LCA5NTU0MywgOTU1NDgsIDk1NTUzLCA5NTU1OCwgOTU1NjMsIDk1NTY4LCA5NTU3MywgOTU1NzgsIDk1NTgzLCAKKyAgICA5NTU4OCwgOTU1OTMsIDk1NTk3LCA5NTYwMSwgOTU2MDUsIDk1NjA5LCA5NTYxMywgOTU2MTcsIDk1NjIyLCA5NTYyNiwgCisgICAgOTU2MzEsIDk1NjM1LCA5NTY0MCwgOTU2NDUsIDk1NjQ5LCA5NTY1MywgOTU2NTgsIDk1NjYyLCA5NTY2NiwgOTU2NzAsIAorICAgIDk1Njc0LCA5NTY3OCwgOTU2ODIsIDk1Njg2LCA5NTY5MCwgOTU2OTQsIDk1Njk4LCA5NTcwMiwgOTU3MDYsIDk1NzEwLCAKKyAgICA5NTcxNCwgOTU3MTksIDk1NzI0LCA5NTcyOCwgOTU3MzIsIDk1NzM2LCA5NTc0MCwgOTU3NDQsIDk1NzQ4LCA5NTc1MywgCisgICAgOTU3NTcsIDk1NzYxLCA5NTc2NSwgOTU3NjksIDk1NzczLCA5NTc3NywgOTU3ODIsIDk1Nzg2LCA5NTc5MSwgOTU3OTUsIAorICAgIDk1Nzk5LCA5NTgwMywgOTU4MDcsIDk1ODExLCA5NTgxNSwgOTU4MTksIDk1ODIzLCA5NTgyNywgOTU4MzEsIDk1ODM1LCAKKyAgICA5NTg0MCwgOTU4NDQsIDk1ODQ4LCA5NTg1MiwgOTU4NTYsIDk1ODYwLCA5NTg2NCwgOTU4NjgsIDk1ODcyLCA5NTg3NiwgCisgICAgOTU4ODAsIDk1ODg0LCA5NTg4OSwgOTU4OTMsIDk1ODk3LCA5NTkwMiwgOTU5MDcsIDk1OTExLCA5NTkxNSwgOTU5MTksIAorICAgIDk1OTIzLCA5NTkyNywgOTU5MzEsIDk1OTM1LCA5NTkzOSwgOTU5NDQsIDk1OTQ4LCA5NTk1MywgOTU5NTcsIDk1OTYyLCAKKyAgICA5NTk2NiwgOTU5NzEsIDk1OTc1LCA5NTk4MSwgOTU5ODYsIDk1OTkwLCA5NTk5NSwgOTU5OTksIDk2MDA0LCA5NjAwOCwgCisgICAgOTYwMTMsIDk2MDE3LCA5NjAyMiwgMTUwMCwgOTYwMjYsIDI4NjIsIDE3NTUsIDE2NzMsIDI3OTUwLCA5NjAzMCwgMjg3MSwgCisgICAgOTYwMzQsIDEzNjIsIDk2MDM5LCAxMzA0LCA5NjA0MywgOTYwNDcsIDI4ODgsIDk2MDUxLCA5NjA1OSwgOTYwNjYsIDk2MDczLCAKKyAgICA5NjA4NywgMjg5MiwgNzQ3NiwgOTYwOTYsIDk2MTA0LCA5NjExMSwgOTYxMjIsIDk2MTMxLCA5NjEzOCwgOTYxNTAsIAorICAgIDk2MTYzLCA5NjE3NiwgOTYxODcsIDk2MTkyLCA5NjE5OSwgOTYyMTEsIDk2MjE1LCAyODk2LCAxMjk2MCwgOTYyMjUsIAorICAgIDk2MjMwLCA5NjIzOSwgOTYyNDksIDk2MjU0LCAyOTAwLCA5NjI2MiwgOTYyNjYsIDk2MjcxLCA5NjI3OCwgOTYyODQsIAorICAgIDk2MjkyLCA5NjMwNCwgOTYzMTQsIDEzMDksIDE0MzExLCA5NjMyNywgOTYzMzEsIDk2MzM3LCA5NjM1MSwgOTYzNjMsIAorICAgIDk2Mzc1LCA5NjM4NSwgOTYzOTQsIDk2NDAzLCA5NjQxMiwgOTY0MjAsIDk2NDMxLCA5NjQzOSwgNDMwNiwgOTY0NDksIAorICAgIDk2NDYwLCA5NjQ2OSwgOTY0NzUsIDk2NDkwLCA5NjQ5NywgOTY1MDMsIDk2NTA4LCAzODg0MywgOTY1MTMsIDI5MjQsIAorICAgIDE0MzE1LCA5NjUxNywgOTY1MjQsIDk0OTIsIDk2NTMzLCA5NjUzOSwgMjkyOSwgMzUxNTIsIDk2NTQ4LCA2NjA5OSwgCisgICAgOTY1NTUsIDk2NTU5LCA5NjU2NSwgOTY1NzYsIDk2NTgyLCA5NjU4OSwgOTY1OTUsIDk2NjAzLCA5NjYxMCwgOTY2MTYsIAorICAgIDk2NjI3LCA5NjYzNywgOTY2NDYsIDk2NjU3LCA5NjY2NiwgOTY2NzMsIDk2Njc5LCA5NjY4OSwgOTY2OTcsIDk2NzAzLCAKKyAgICA5NjcxOCwgOTY3MjQsIDk2NzI5LCA5NjczNiwgOTY3MzksIDk2NzQ1LCA5Njc1MiwgOTY3NTgsIDk2NzY2LCA5Njc3NSwgCisgICAgOTY3ODMsIDk2Nzg5LCA5Njc5OCwgNDY3NjAsIDk2ODEyLCA5NjgxNywgOTY4MjMsIDE2MTk1LCA5NjgyOCwgOTY4NDEsIAorICAgIDk2ODUzLCA5Njg2MiwgOTY4NzAsIDk2ODc3LCA5Njg4MSwgOTY4ODUsIDk2ODg4LCA5Njg5NSwgOTY5MDIsIDk2OTEwLCAKKyAgICA5NjkxOCwgOTY5MjcsIDk2OTM1LCAxNjEwMCwgOTY5NDMsIDk2OTQ4LCA5Njk1MiwgOTY5NjQsIDk2OTcxLCA5Njk3OCwgCisgICAgOTY5ODcsIDg3NywgOTY5OTcsIDk3MDA2LCA5NzAxNywgMjk0NSwgOTcwMjEsIDk3MDI1LCA5NzAzMSwgOTcwNDQsIDk3MDU2LCAKKyAgICA5NzA2NiwgOTcwNzUsIDk3MDg3LCAyODcwMSwgOTcwOTgsIDk3MTA2LCA5NzExNSwgOTcxMjYsIDk3MTM3LCA5NzE0NywgCisgICAgOTcxNTcsIDk3MTY2LCA5NzE3NCwgMTI0NzQsIDk3MTgxLCA5NzE4NSwgOTcxODgsIDk3MTkzLCA5NzE5OCwgOTcyMDIsIAorICAgIDk3MjA4LCAxMzE0LCA5NzIxNSwgOTcyMTksIDEzMDQyLCA5NzIyMywgOTcyMzQsIDk3MjQzLCA5NzI1MSwgOTcyNjAsIAorICAgIDk3MjY4LCA5NzI4NCwgOTcyOTUsIDk3MzA0LCA5NzMxMiwgOTczMjQsIDk3MzM1LCA5NzM1MSwgOTczNjEsIDk3MzgyLCAKKyAgICA5NzM5NiwgOTc0MDksIDk3NDE3LCA5NzQyNCwgNzUyMiwgOTc0MzcsIDk3NDQyLCA5NzQ0OCwgNjIyMywgOTc0NTQsIAorICAgIDk3NDU3LCA5NzQ2NCwgOTc0NzQsIDg1OTUsIDk3NDgxLCA5NzQ4NiwgOTc0OTEsIDk3NDk2LCA5NzUwNCwgOTc1MTMsIAorICAgIDk3NTIxLCA5NzUyNiwgOTc1MzMsIDEwNTk0LCAxMDYwMywgOTc1MzksIDk3NTUwLCA5NzU1NSwgOTc1NjEsIDI5NjEsIAorICAgIDI5NjYsIDk3NTY3LCAxMTk2NywgOTc1NzMsIDk3NTgwLCA5NzU4NywgOTc2MDAsIDk3NjA1LCAyMjY2LCA4NywgOTc2MTMsIAorICAgIDk3NjE4LCA5NzYyNiwgOTc2MzYsIDk3NjQ1LCA5NzY1MSwgOTc2NjAsIDk3NjY4LCA5NzY3OCwgOTc2ODIsIDk3Njg2LCAKKyAgICA5NzY5MSwgOTc2OTUsIDk3NzA3LCAyOTg5LCA5NzcxNSwgOTc3MjMsIDk3NzI4LCA5NzczOSwgOTc3NTAsIDk3NzYyLCAKKyAgICA5Nzc3MywgOTc3ODMsIDk3NzkyLCAyMzI3NSwgOTc3OTcsIDk3ODAzLCA5NzgwOCwgOTc4MTgsIDk3ODI4LCA5NzgzMywgCisgICAgMzA3MTMsIDk3ODM5LCA5Nzg0NCwgOTc4NTMsIDIzMjg3LCA5Nzg1NywgNDQwNCwgMTYsIDk3ODYyLCA5Nzg3MSwgOTc4NzgsIAorICAgIDk3ODg1LCA5Nzg5MSwgOTc4OTYsIDk3OTAwLCA5NzkwNiwgMTA4NSwgOTc5MTEsIDk3OTE2LCA2NjY4MCwgOTc5MjEsIAorICAgIDk3OTI2LCA5NzkzMiwgOTc5MzgsIDk3OTQ2LCA5Nzk1MSwgOTc5NTksIDk3OTY2LCA5Nzk3MiwgOTc5NzcsIDQyOTE1LCAKKyAgICA0NjY1NCwgOTc5ODMsIDE4MDYsIDMyLCA5Nzk5MywgOTgwMDYsIDk4MDExLCA5ODAxOSwgOTgwMjQsIDk4MDMwLCAzMDE1LCAKKyAgICAzMDc4OCwgOTgwMzUsIDk4MDQzLCA5ODA1MCwgOTgwNTUsIDk4MDY0LCA2NDAwNiwgNDAyMywgNjc3ODQsIDk4MDcyLCAKKyAgICA5ODA3NiwgMTcwMCwgMTgxOCwgOTgwODEsIDk4MDg2LCA5ODA5MywgMTgyMiwgMjg2LCA5ODEwMCwgOTgxMDYsIDk4MTExLCAKKyAgICAzMDM3LCA5ODExNSwgOTgxMjAsIDk4MTI3LCAxODI2LCA5ODEzMiwgOTgxMzgsIDk4MTQzLCA5ODE1NSwgNjQ1NCwgOTgxNjUsIAorICAgIDk4MTcyLCAxODMzLCA5ODE3OCwgOTgxODMsIDk4MTkwLCA5ODE5NywgOTgyMTIsIDk4MjE5LCA5ODIzMCwgOTgyMzUsIAorICAgIDk4MjQzLCAyNjQ2LCA5ODI0NywgOTgyNTksIDk4MjY0LCA5ODI2OCwgOTgyNzQsIDMwNTk2LCAyMjcxLCA5ODI3OCwgCisgICAgOTgyODksIDk4MjkzLCA5ODI5NywgOTgzMDMsIDk4MzA3LCA5ODMxNiwgOTgzMjAsIDk4MzMxLCA5ODMzNSwgMjMxNywgCisgICAgMzQ5NjksIDk4MzM5LCA5ODM0OSwgMzEyOCwgOTgzNTcsIDk4MzY2LCA5OTk5LCA5ODM3MSwgOTgzNzYsIDk4MzgwLCAKKyAgICA5ODM4OSwgOTgzOTYsIDk4NDAyLCAzMDk4LCAxNjI1OSwgOTg0MDYsIDk4NDE5LCA5ODQzNywgOTg0NDIsIDk4NDUwLCAKKyAgICA5ODQ1OCwgOTg0NjgsIDEwODY2LCAxNDQyOCwgOTg0ODAsIDk4NDkzLCA5ODUwMCwgOTg1MTQsIDk4NTIxLCA5ODUzNywgCisgICAgOTg1NDQsIDk4NTUwLCAyMzMyNSwgMTM2NjYsIDk4NTU3LCA5ODU2NCwgOTg1NzQsIDk4NTgzLCA0NzQ4OSwgOTg1OTUsIAorICAgIDQ3NjI0LCA5ODYwMywgOTg2MDYsIDk4NjEyLCA5ODYxOCwgOTg2MjQsIDk4NjMwLCA5ODYzNiwgOTg2NDMsIDk4NjUwLCAKKyAgICA5ODY1NiwgOTg2NjIsIDk4NjY4LCA5ODY3NCwgOTg2ODAsIDk4Njg2LCA5ODY5MiwgOTg2OTgsIDk4NzA0LCA5ODcxMCwgCisgICAgOTg3MTYsIDk4NzIyLCA5ODcyOCwgOTg3MzQsIDk4NzQwLCA5ODc0NiwgOTg3NTIsIDk4NzU4LCA5ODc2NCwgOTg3NzAsIAorICAgIDk4Nzc2LCA5ODc4MiwgOTg3ODgsIDk4Nzk0LCA5ODgwMCwgOTg4MDYsIDk4ODEyLCA5ODgxOCwgOTg4MjQsIDk4ODMwLCAKKyAgICA5ODgzNiwgOTg4NDIsIDk4ODQ4LCA5ODg1NCwgOTg4NjAsIDk4ODY2LCA5ODg3MiwgOTg4NzgsIDk4ODg0LCA5ODg5MCwgCisgICAgOTg4OTYsIDk4OTAyLCA5ODkwOCwgOTg5MTQsIDk4OTIwLCA5ODkyNiwgOTg5MzIsIDk4OTM4LCA5ODk0NCwgOTg5NTAsIAorICAgIDk4OTU2LCA5ODk2MywgOTg5NjksIDk4OTc2LCA5ODk4MywgOTg5ODksIDk4OTk2LCA5OTAwMywgOTkwMDksIDk5MDE1LCAKKyAgICA5OTAyMSwgOTkwMjcsIDk5MDMzLCA5OTAzOSwgOTkwNDUsIDk5MDUxLCA5OTA1NywgOTkwNjMsIDk5MDY5LCA5OTA3NSwgCisgICAgOTkwODEsIDk5MDg3LCA5OTA5MywgMzExMiwgOTk3MiwgOTkwOTksIDk5MTA1LCA5OTExMywgOTkxMTcsIDk2Mjc0LCAzMTE2LCAKKyAgICA5OTEyMSwgMjMwNTIsIDEzMjk5LCAzOTczLCA5OTEyNSwgMzEyMiwgOTkxMjksIDk5MTM5LCA5OTE0NSwgOTkxNTEsIAorICAgIDk5MTU3LCA5OTE2MywgOTkxNjksIDk5MTc1LCA5OTE4MSwgOTkxODcsIDk5MTkzLCA5OTE5OSwgOTkyMDUsIDk5MjExLCAKKyAgICA5OTIxNywgOTkyMjMsIDk5MjI5LCA5OTIzNSwgOTkyNDEsIDk5MjQ3LCA5OTI1MywgOTkyNTksIDk5MjY1LCA5OTI3MSwgCisgICAgOTkyNzcsIDk5MjgzLCA5OTI4OSwgOTkyOTYsIDk5MzAzLCA5OTMwOSwgOTkzMTUsIDk5MzIxLCA5OTMyNywgOTkzMzMsIAorICAgIDk5MzM5LCAxMzE5LCA5OTM0NSwgOTkzNTAsIDk5MzU1LCA5OTM2MCwgOTkzNjUsIDk5MzcwLCA5OTM3NSwgOTkzODAsIAorICAgIDk5Mzg1LCA5OTM4OSwgOTkzOTMsIDk5Mzk3LCA5OTQwMSwgOTk0MDUsIDk5NDA5LCA5OTQxMywgOTk0MTcsIDk5NDIxLCAKKyAgICA5OTQyNywgOTk0MzMsIDk5NDM5LCA5OTQ0NSwgOTk0NDksIDk5NDUzLCA5OTQ1NywgOTk0NjEsIDk5NDY1LCA5OTQ2OSwgCisgICAgOTk0NzMsIDk5NDc3LCA5OTQ4MSwgOTk0ODYsIDk5NDkxLCA5OTQ5NiwgOTk1MDEsIDk5NTA2LCA5OTUxMSwgOTk1MTYsIAorICAgIDk5NTIxLCA5OTUyNiwgOTk1MzEsIDk5NTM2LCA5OTU0MSwgOTk1NDYsIDk5NTUxLCA5OTU1NiwgOTk1NjEsIDk5NTY2LCAKKyAgICA5OTU3MSwgOTk1NzYsIDk5NTgxLCA5OTU4NiwgOTk1OTEsIDk5NTk2LCA5OTYwMSwgOTk2MDYsIDk5NjExLCA5OTYxNiwgCisgICAgOTk2MjEsIDk5NjI2LCA5OTYzMSwgOTk2MzYsIDk5NjQxLCA5OTY0NiwgOTk2NTEsIDk5NjU2LCA5OTY2MSwgOTk2NjYsIAorICAgIDk5NjcxLCA5OTY3NiwgOTk2ODEsIDk5Njg2LCA5OTY5MSwgOTk2OTYsIDk5NzAxLCA5OTcwNiwgOTk3MTEsIDk5NzE2LCAKKyAgICA5OTcyMSwgOTk3MjYsIDk5NzMxLCA5OTczNiwgOTk3NDEsIDk5NzQ2LCA5OTc1MSwgOTk3NTYsIDk5NzYxLCA5OTc2NiwgCisgICAgOTk3NzEsIDk5Nzc2LCA5OTc4MSwgOTk3ODYsIDk5NzkxLCA5OTc5NiwgOTk4MDEsIDk5ODA2LCA5OTgxMSwgOTk4MTYsIAorICAgIDk5ODIxLCA5OTgyNiwgOTk4MzEsIDk5ODM2LCA5OTg0MSwgOTk4NDYsIDk5ODUxLCA5OTg1NiwgOTk4NjEsIDk5ODY2LCAKKyAgICA5OTg3MSwgOTk4NzYsIDk5ODgxLCA5OTg4NiwgOTk4OTEsIDk5ODk2LCA5OTkwMSwgOTk5MDYsIDk5OTExLCA5OTkxNiwgCisgICAgOTk5MjEsIDk5OTI2LCA5OTkzMSwgOTk5MzYsIDk5OTQxLCA5OTk0NiwgOTk5NTEsIDk5OTU2LCA5OTk2MSwgOTk5NjYsIAorICAgIDk5OTcxLCA5OTk3NiwgOTk5ODEsIDk5OTg2LCA5OTk5MSwgOTk5OTYsIDEwMDAwMSwgMTAwMDA2LCAxMDAwMTEsIDEwMDAxNiwgCisgICAgMTAwMDIxLCAxMDAwMjYsIDEwMDAzMSwgMTAwMDM2LCAxMDAwNDEsIDEwMDA0NiwgMTAwMDUxLCAxMDAwNTYsIDEwMDA2MSwgCisgICAgMTAwMDY2LCAxMDAwNzEsIDEwMDA3NiwgMTAwMDgxLCAxMDAwODYsIDEwMDA5MSwgMTAwMDk2LCAxMDAxMDEsIDEwMDEwNiwgCisgICAgMTAwMTExLCAxMDAxMTYsIDEwMDEyMSwgMTAwMTI2LCAxMDAxMzEsIDEwMDEzNiwgMTAwMTQxLCAxMDAxNDYsIDEwMDE1MSwgCisgICAgMTAwMTU2LCAxMDAxNjEsIDEwMDE2NiwgMTAwMTcxLCAxMDAxNzYsIDEwMDE4MSwgMTAwMTg2LCAxMDAxOTEsIDEwMDE5NiwgCisgICAgMTAwMjAxLCAxMDAyMDYsIDEwMDIxMSwgMTAwMjE2LCAxMDAyMjEsIDEwMDIyNiwgMTAwMjMxLCAxMDAyMzYsIDEwMDI0MSwgCisgICAgMTAwMjQ2LCAxMDAyNTEsIDEwMDI1NiwgMTAwMjYxLCAxMDAyNjYsIDEwMDI3MSwgMTAwMjc2LCAxMDAyODEsIDEwMDI4NiwgCisgICAgMTAwMjkxLCAxMDAyOTYsIDEwMDMwMSwgMTAwMzA2LCAxMDAzMTEsIDEwMDMxNiwgMTAwMzIxLCAxMDAzMjYsIDEwMDMzMSwgCisgICAgMTAwMzM2LCAxMDAzNDEsIDEwMDM0NiwgMTAwMzUxLCAxMDAzNTYsIDEwMDM2MSwgMTAwMzY2LCAxMDAzNzEsIDEwMDM3NywgCisgICAgMTAwMzgyLCAxMDAzODcsIDEwMDM5MiwgMTAwMzk3LCAxMDA0MDIsIDEwMDQwNywgMTAwNDEyLCAxMDA0MTgsIDEwMDQyMywgCisgICAgMTAwNDI4LCAxMDA0MzMsIDEwMDQzOCwgMTAwNDQzLCAxMDA0NDgsIDEwMDQ1MywgMTAwNDU4LCAxMDA0NjMsIDEwMDQ2OCwgCisgICAgMTAwNDczLCAxMDA0NzgsIDEwMDQ4MywgMTAwNDg4LCAxMDA0OTMsIDEwMDQ5OCwgMTAwNTAzLCAxMDA1MDgsIDEwMDUxMywgCisgICAgMTAwNTE4LCAxMDA1MjMsIDEwMDUyOCwgMTAwNTMzLCAxMDA1MzgsIDEwMDU0MywgMTAwNTQ4LCAxMDA1NTMsIDEwMDU1OCwgCisgICAgMTAwNTYzLCAxMDA1NjgsIDEwMDU3MywgMTAwNTc4LCAxMDA1ODcsIDEwMDU5MiwgMTAwNjAxLCAxMDA2MDYsIDEwMDYxNSwgCisgICAgMTAwNjIwLCAxMDA2MjksIDEwMDYzNCwgMTAwNjQzLCAxMDA2NDgsIDEwMDY1NywgMTAwNjYyLCAxMDA2NzEsIDEwMDY3NiwgCisgICAgMTAwNjg1LCAxMDA2OTAsIDEwMDY5NSwgMTAwNzA0LCAxMDA3MDgsIDEwMDcxNywgMTAwNzIyLCAxMDA3MzEsIDEwMDczNiwgCisgICAgMTAwNzQ1LCAxMDA3NTAsIDEwMDc1OSwgMTAwNzY0LCAxMDA3NzMsIDEwMDc3OCwgMTAwNzg3LCAxMDA3OTIsIDEwMDgwMSwgCisgICAgMTAwODA2LCAxMDA4MTUsIDEwMDgyMCwgMTAwODI5LCAxMDA4MzQsIDEwMDg0MywgMTAwODQ4LCAxMDA4NTMsIDEwMDg1OCwgCisgICAgMTAwODYzLCAxMDA4NjgsIDEwMDg3MywgMTAwODc4LCAxMDA4ODIsIDEwMDg4NywgMTAwODkyLCAxMDA4OTcsIDEwMDkwMiwgCisgICAgMTAwOTA3LCAxMDA5MTIsIDEwMDkxOCwgMTAwOTIzLCAxMDA5MjgsIDEwMDkzMywgMTAwOTM5LCAxMDA5NDMsIDEwMDk0OCwgCisgICAgMTAwOTU0LCAxMDA5NTksIDEwMDk2NCwgMTAwOTY5LCAxMDA5NzQsIDEwMDk3OSwgMTAwOTg0LCAxMDA5ODksIDEwMDk5NCwgCisgICAgMTAwOTk5LCAxMDEwMDQsIDEwMTAxMCwgMTAxMDE1LCAxMDEwMjAsIDEwMTAyNSwgMTAxMDMxLCAxMDEwMzYsIDEwMTA0MSwgCisgICAgMTAxMDQ2LCAxMDEwNTEsIDEwMTA1NywgMTAxMDYyLCAxMDEwNjcsIDEwMTA3MiwgMTAxMDc3LCAxMDEwODIsIDEwMTA4OCwgCisgICAgMTAxMDkzLCAxMDEwOTgsIDEwMTEwMywgMTAxMTA4LCAxMDExMTMsIDEwMTExOCwgMTAxMTIzLCAxMDExMjgsIDEwMTEzMywgCisgICAgMTAxMTM4LCAxMDExNDMsIDEwMTE0OCwgMTAxMTUzLCAxMDExNTgsIDEwMTE2MywgMTAxMTY4LCAxMDExNzMsIDEwMTE3OCwgCisgICAgMTAxMTgzLCAxMDExODgsIDEwMTE5MywgMTAxMTk4LCAxMDEyMDMsIDEwMTIwOSwgMTAxMjE1LCAxMDEyMjEsIDEwMTIyNiwgCisgICAgMTAxMjMxLCAxMDEyMzYsIDEwMTI0MSwgMTAxMjQ3LCAxMDEyNTMsIDEwMTI1OSwgMTAxMjY0LCAxMDEyNjksIDEwMTI3NCwgCisgICAgMTAxMjgwLCAxMDEyODUsIDEwMTI5MCwgMTAxMjk1LCAxMDEzMDAsIDEwMTMwNSwgMTAxMzEwLCAxMDEzMTUsIDEwMTMyMCwgCisgICAgMTAxMzI1LCAxMDEzMzAsIDEwMTMzNSwgMTAxMzQwLCAxMDEzNDUsIDEwMTM1MCwgMTAxMzU1LCAxMDEzNjAsIDEwMTM2NiwgCisgICAgMTAxMzcyLCAxMDEzNzgsIDEwMTM4MywgMTAxMzg4LCAxMDEzOTMsIDEwMTM5OCwgMTAxNDA0LCAxMDE0MTAsIDEwMTQxNiwgCisgICAgMTAxNDIxLCAxMDE0MjYsIDEwMTQzMSwgMTAxNDM2LCAxMDE0NDEsIDEwMTQ0NiwgMTAxNDUxLCAxMDE0NTYsIDEwMTQ2MSwgCisgICAgMTc2ODYsIDEwMTQ2NiwgMTAxNDcyLCAxMDE0NzcsIDEwMTQ4MiwgMTAxNDg3LCAxMDE0OTIsIDEwMTQ5NywgMTAxNTAzLCAKKyAgICAxMDE1MDgsIDEwMTUxMywgMTAxNTE4LCAxMDE1MjMsIDEwMTUyOCwgMTAxNTM0LCAxMDE1MzksIDEwMTU0NCwgMTAxNTQ5LCAKKyAgICAxMDE1NTQsIDEwMTU1OSwgMTAxNTY0LCAxMDE1NjksIDEwMTU3NCwgMTAxNTc5LCAxMDE1ODQsIDEwMTU4OSwgMTAxNTk0LCAKKyAgICAxMDE1OTksIDEwMTYwNCwgMTAxNjA5LCAxMDE2MTQsIDEwMTYxOSwgMTAxNjI0LCAxMDE2MjksIDEwMTYzNCwgMTAxNjM5LCAKKyAgICAxMDE2NDQsIDEwMTY1MCwgMTAxNjU1LCAxMDE2NjAsIDEwMTY2NSwgMTAxNjcwLCAxMDE2NzUsIDEwMTY4MCwgMTAxNjg1LCAKKyAgICAxMDE2OTAsIDEwMTY5NSwgMTAxNzAwLCAxMDE3MDUsIDEwMTcxMCwgMTAxNzE1LCAxMDE3MjAsIDEwMTcyNSwgMTAxNzMwLCAKKyAgICAxMDE3MzUsIDEwMTc0MCwgMTAxNzQ1LCAxMDE3NTAsIDEwMTc1NSwgMTAxNzYwLCAxMDE3NjUsIDEwMTc3MCwgMTAxNzc1LCAKKyAgICAxMDE3ODAsIDEwMTc4NSwgMTAxNzkwLCAxMDE3OTUsIDEwMTgwMCwgMTAxODA1LCAxMDE4MTAsIDEwMTgxNSwgMTAxODIwLCAKKyAgICAxMDE4MjUsIDEwMTgzMCwgMTAxODM1LCAxMDE4NDAsIDEwMTg0NSwgMTAxODUwLCAxMDE4NTYsIDEwMTg2MSwgMTAxODY2LCAKKyAgICAxMDE4NzEsIDEwMTg3NiwgMTAxODgxLCAxMDE4ODYsIDEwMTg5MSwgMTAxODk2LCAxMDE5MDEsIDEwMTkwNiwgMTAxOTExLCAKKyAgICAxMDE5MTcsIDEwMTkyMiwgMTAxOTI4LCAxMDE5MzMsIDEwMTkzOCwgMTAxOTQzLCAxMDE5NDgsIDEwMTk1MywgMTAxOTU4LCAKKyAgICAxMDE5NjQsIDEwMTk2OSwgMTAxOTc0LCAxMDE5ODAsIDEwMTk4NSwgMTAxOTkwLCAxMDE5OTUsIDEwMjAwMCwgMTAyMDA1LCAKKyAgICAxMDIwMTEsIDEwMjAxNywgMTAyMDIyLCAxMDIwMjcsIDEzMzIxLCAxMDIwMzIsIDEwMjAzNywgMTAyMDQyLCAxMDIwNDcsIAorICAgIDEwMjA1MiwgMTAyMDU3LCAxMDIwNjIsIDEwMjA2NywgMTAyMDcyLCAxMDIwNzcsIDEwMjA4MiwgMTAyMDg3LCAxMDIwOTIsIAorICAgIDEwMjA5NywgMTAyMTAyLCAxMDIxMDcsIDEwMjExMiwgMTAyMTE3LCAxMDIxMjIsIDEwMjEyNywgMTAyMTMyLCAxMDIxMzcsIAorICAgIDEwMjE0MiwgMTAyMTQ3LCAxMDIxNTIsIDEwMjE1NywgMTAyMTYyLCAxMDIxNjcsIDEwMjE3MiwgMTAyMTc3LCAxMDIxODIsIAorICAgIDEwMjE4NywgMTAyMTkyLCAxMDIxOTcsIDEwMjIwMiwgMTAyMjA3LCAxMDIyMTIsIDEwMjIxNywgMTAyMjIyLCAxMDIyMjcsIAorICAgIDEwMjIzMiwgMTAyMjM3LCAxMDIyNDIsIDEwMjI0NywgMTAyMjUyLCAxMDIyNTcsIDEwMjI2MiwgMTAyMjY3LCAxMDIyNzIsIAorICAgIDEwMjI3NywgMTAyMjgyLCAxMDIyODcsIDEwMjI5MiwgMTAyMjk3LCAxMDIzMDIsIDEwMjMwNywgMTAyMzEyLCAxMDIzMTcsIAorICAgIDEwMjMyMiwgMTAyMzI3LCAxMDIzMzIsIDEwMjMzNywgMTAyMzQyLCAxMDIzNDcsIDEwMjM1MiwgMTAyMzU4LCAxMDIzNjMsIAorICAgIDEwMjM2OCwgMTAyMzczLCAxMDIzNzgsIDEwMjM4NCwgMTAyMzg5LCAxMDIzOTQsIDEwMjM5OSwgMTAyNDA0LCAxMDI0MDksIAorICAgIDEwMjQxNCwgMTAyNDIwLCAxMDI0MjUsIDEwMjQzMCwgMTAyNDM1LCAxMDI0NDAsIDEwMjQ0NSwgMTAyNDUxLCAxMDI0NTYsIAorICAgIDEwMjQ2MSwgMTAyNDY2LCAxMDI0NzEsIDEwMjQ3NiwgMTAyNDgyLCAxMDI0ODcsIDEwMjQ5MiwgMTAyNDk3LCAxMDI1MDIsIAorICAgIDEwMjUwNywgMTAyNTEzLCAxMDI1MTksIDEwMjUyNCwgMTAyNTI5LCAxMDI1MzQsIDEwMjU0MCwgMTAyNTQ2LCAxMDI1NTIsIAorICAgIDEwMjU1NywgMTAyNTYyLCAxMDI1NjgsIDEwMjU3NCwgMTAyNTc5LCAxMDI1ODUsIDEwMjU5MSwgMTAyNTk3LCAxMDI2MDIsIAorICAgIDEwMjYwNywgMTAyNjEzLCAxMDI2MTgsIDEwMjYyNCwgMTAyNjI5LCAxMDI2MzUsIDEwMjY0NCwgMTAyNjQ5LCAxMDI2NTQsIAorICAgIDEwMjY2MCwgMTAyNjY1LCAxMDI2NzEsIDEwMjY3NiwgMTAyNjgxLCAxMDI2ODYsIDEwMjY5MSwgMTAyNjk2LCAxMDI3MDEsIAorICAgIDEwMjcwNiwgMTAyNzExLCAxMDI3MTYsIDEwMjcyMSwgMTAyNzI2LCAxMDI3MzEsIDEwMjczNiwgMTAyNzQxLCAxMDI3NDYsIAorICAgIDEwMjc1MSwgMTAyNzU2LCAxMDI3NjEsIDEwMjc2NiwgMTAyNzcxLCAxMDI3NzYsIDEwMjc4MSwgMTAyNzg2LCAxMDI3OTEsIAorICAgIDEwMjc5NiwgMTAyODAxLCAxMDI4MDYsIDEwMjgxMSwgMTAyODE2LCAxMDI4MjEsIDEwMjgyNiwgMTAyODMyLCAxMDI4MzgsIAorICAgIDEwMjg0NCwgMTAyODQ5LCAxMDI4NTQsIDEwMjg1OSwgMTAyODY0LCAxMDI4NjksIDEwMjg3NCwgMTAyODc5LCAxMDI4ODQsIAorICAgIDEwMjg4OSwgMTAyODk0LCAxMDI4OTksIDEwMjkwNCwgMTAyOTA5LCAxMDI5MTQsIDEwMjkxOSwgMTAyOTI0LCAxMDI5MjksIAorICAgIDEwMjkzNCwgMTAyOTM5LCAxMDI5NDQsIDEwMjk1MCwgMTAyOTU2LCAxMDI5NjEsIDEwMjk2NywgMTAyOTcyLCAxMDI5NzcsIAorICAgIDEwMjk4MywgMTAyOTg4LCAxMDI5OTQsIDEwMjk5OSwgMTAzMDA1LCAxMDMwMTAsIDEwMzAxNiwgMTAzMDIxLCAxMDMwMjcsIAorICAgIDEwMzAzMiwgMTAzMDM3LCAxMDMwNDIsIDEwMzA0NywgMTAzMDUyLCAxMDMwNTcsIDEwMzA2MiwgOTkxNDAsIDk5MTQ2LCAKKyAgICA5OTE1MiwgOTkxNTgsIDEwMzA2OCwgOTkxNjQsIDk5MTcwLCAxMDMwNzQsIDk5MTc2LCA5OTE4MiwgOTkxODgsIDk5MTk0LCAKKyAgICA5OTIwMCwgOTkyMDYsIDk5MjEyLCA5OTIxOCwgOTkyMjQsIDEwMzA4MCwgOTkyMzAsIDk5MjM2LCA5OTI0MiwgMTAzMDg2LCAKKyAgICA5OTI0OCwgOTkyNTQsIDk5MjYwLCA5OTI2NiwgMTAzMDkyLCA5OTI3MiwgOTkyNzgsIDk5Mjg0LCA5OTMwNCwgMTAzMDk4LCAKKyAgICAxMDMxMDQsIDk5MzEwLCAxMDMxMTAsIDk5MzE2LCA5OTMyMiwgOTkzMjgsIDk5MzM0LCA5OTM0MCwgMzEzOSwgMzE0NCwgCisgICAgMTAzMTE2LCAxMDMxMjEsIDEwMzEyNCwgMTAzMTMwLCAxMDMxMzYsIDEwMzE0MywgMTAzMTQ4LCAxMDMxNTMsIDIzMjIsIAogfTsKIAogLyogY29kZS0+bmFtZSBwaHJhc2Vib29rICovCiAjZGVmaW5lIHBocmFzZWJvb2tfc2hpZnQgOAotI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDIwMQorI2RlZmluZSBwaHJhc2Vib29rX3Nob3J0IDE5OAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va1tdID0gewotICAgIDAsIDIxMSwgMjI4LCAyNDAsIDIxMiwgODIsIDIxNywgMzEsIDgyLCA0MiwgNTQsIDI0MywgOTcsIDU0LCAyMTgsIDI0NiwgCi0gICAgNTQsIDI1MCwgMjM1LCAyNTAsIDE2MCwgNDksIDIxOSwgNzYsIDUwLCAyMTksIDc2LCAyNTAsIDU5LCA5MSwgNTQsIDI0NSwgCi0gICAgMjMzLCAyMzUsIDIxOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMiwgMCwgMTcsIDIwMiwgODQsIDE3LCAxMDUsIDE3LCAxMDgsIAotICAgIDE3LCAxNDcsIDE3LCAxNDksIDE3LCAxNzAsIDE3LCAxOTUsIDE3LCAyMTMsIDExMSwgMTcsIDE5OSwgMTcsIDIyMiwgNjMsIAotICAgIDI0NSwgMjQyLCAyMTMsIDE0MywgMjI3LCAxNzksIDU0LCAyNDEsIDM1LCA1NCwgMjM3LCAyNDcsIDU0LCAyMTcsIDQ3LCA4MiwgCi0gICAgMjQ1LCAyMzEsIDI1MCwgNDksIDgsIDYsIDEsIDYzLCA4LCA2LCAxLCAyNDksIDI1NSwgOCwgNiwgMSwgMjQ3LCAxMjUsIDgsIAotICAgIDYsIDEsIDI0NSwgNTEsIDgsIDYsIDEsIDc0LCA4LCA2LCAxLCAyNDAsIDE3NCwgOCwgNiwgMSwgMjM5LCA3NSwgOCwgNiwgMSwgCi0gICAgMjM3LCAxNzEsIDgsIDYsIDEsIDc1LCA4LCA2LCAxLCAyMzAsIDE4NCwgOCwgNiwgMSwgMjMwLCA1NCwgOCwgNiwgMSwgMTU5LCAKLSAgICA4LCA2LCAxLCAyMjYsIDE4NSwgOCwgNiwgMSwgMjIzLCAxNjMsIDgsIDYsIDEsIDc4LCA4LCA2LCAxLCAyMTksIDE4NCwgOCwgCi0gICAgNiwgMSwgMjE3LCAxMzQsIDgsIDYsIDEsIDE0NiwgOCwgNiwgMSwgMTk0LCA4LCA2LCAxLCAyMTAsIDY5LCA4LCA2LCAxLCAKLSAgICA2OCwgOCwgNiwgMSwgMjA2LCAxNjQsIDgsIDYsIDEsIDIwNCwgMTQ0LCA4LCA2LCAxLCAyMDMsIDE5NiwgOCwgNiwgMSwgCi0gICAgMjAzLCAxMjQsIDgsIDYsIDEsIDIwMiwgMTU5LCA0OSwgNTEsIDE1NSwgMjE2LCA3NCwgMjEyLCAwLCA1MCwgNTEsIDE1NSwgCi0gICAgMjQ2LCA1MywgMjUxLCAxMzgsIDEyNCwgMjI3LCAxMTQsIDIzNywgMjU0LCAyNTEsIDEzOCwgOCwgNSwgMSwgNjMsIDgsIDUsIAotICAgIDEsIDI0OSwgMjU1LCA4LCA1LCAxLCAyNDcsIDEyNSwgOCwgNSwgMSwgMjQ1LCA1MSwgOCwgNSwgMSwgNzQsIDgsIDUsIDEsIAotICAgIDI0MCwgMTc0LCA4LCA1LCAxLCAyMzksIDc1LCA4LCA1LCAxLCAyMzcsIDE3MSwgOCwgNSwgMSwgNzUsIDgsIDUsIDEsIDIzMCwgCi0gICAgMTg0LCA4LCA1LCAxLCAyMzAsIDU0LCA4LCA1LCAxLCAxNTksIDgsIDUsIDEsIDIyNiwgMTg1LCA4LCA1LCAxLCAyMjMsIAotICAgIDE2MywgOCwgNSwgMSwgNzgsIDgsIDUsIDEsIDIxOSwgMTg0LCA4LCA1LCAxLCAyMTcsIDEzNCwgOCwgNSwgMSwgMTQ2LCA4LCAKLSAgICA1LCAxLCAxOTQsIDgsIDUsIDEsIDIxMCwgNjksIDgsIDUsIDEsIDY4LCA4LCA1LCAxLCAyMDYsIDE2NCwgOCwgNSwgMSwgCi0gICAgMjA0LCAxNDQsIDgsIDUsIDEsIDIwMywgMTk2LCA4LCA1LCAxLCAyMDMsIDEyNCwgOCwgNSwgMSwgMjAyLCAxNTksIDQ5LCAKLSAgICAyNDUsIDkzLCAxNTUsIDgwLCAyMjcsIDExNCwgNTAsIDI0NSwgOTMsIDE1NSwgMjA4LCAyMjcsIDIyMSwgMTkwLCAyMTEsIAotICAgIDIyOCwgMjMwLCAyMzksIDI0MCwgMjEyLCA4MiwgMjQ2LCAyMjAsIDU0LCAyMTgsIDIwLCA1NCwgMjQ1LCA5MiwgNTQsIDIwMywgCi0gICAgNDMsIDU0LCAyNDcsIDIwMywgMTQyLCAyMTQsIDE2OCwgNTQsIDI0MywgMjMxLCAyNDUsIDE2OSwgNTQsIDI0MCwgNDEsIAotICAgIDIxOSwgMjQwLCAyMzEsIDMxLCAyMjcsIDIxNywgNTIsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjIxLCAxNjYsIDU0LCAKLSAgICAyMTIsIDcsIDIzNSwgMjIwLCAyMTYsIDEyOSwgNTQsIDIyNSwgMTcwLCAyNDQsIDU1LCA1NCwgMjE4LCA3NSwgNTQsIDIxMCwgCi0gICAgMTk5LCAxMDgsIDIxMCwgMTk5LCAxNDcsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMjI0LCAxNTMsIDU0LCAyMTgsIDEyNiwgNTQsIAotICAgIDEwMSwgMjQzLCA4NSwgMjQ2LCAyMzEsIDIxMCwgMTk5LCAxMDUsIDIyNSwgODAsIDIxOSwgMjQwLCAyMzEsIDMxLCAyMTYsIAotICAgIDExLCA1MiwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjE3LCA1NSwgMjA0LCAKLSAgICAxNjEsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMjMwLCAyMzksIAotICAgIDIxNywgNDcsIDgyLCA4LCA2LCAxLCAzNCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAxNjUsIDgsIDYsIDEsIDM0LCAKLSAgICAzLCAyNDYsIDUyLCA4LCA2LCAxLCAzNCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgCi0gICAgMzQsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNiwgMSwgMjUxLCAxMDksIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMSwgCi0gICAgOCwgNiwgMSwgMTg4LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNiwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAKLSAgICAyMzUsIDIwNiwgMywgMTY1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDI0MywgMjMxLCA4LCA2LCAxLCAyNDAsIDI0MywgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUyLCA4LCA2LCAKLSAgICAxLCAxNTgsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAyMjMsIDIyNCwgNTQsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgOTUsIDgsIDYsIDEsIDEwNiwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAxMDYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAxNjUsIDgsIAotICAgIDYsIDEsIDIwOSwgNDAsIDgsIDUsIDEsIDIxMywgNTcsIDE5NCwgOCwgNSwgMSwgMzQsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAKLSAgICAzNCwgMywgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMzQsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAzNCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDM0LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDI1MSwgMTA5LCA4LCA1LCAKLSAgICAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDE4OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NiwgCi0gICAgNTIsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjQwLCAyNDMsIDgsIDUsIDEsIDIyMywgMTY0LCAKLSAgICAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAxNjUsIDgsIDUsIDEsIAotICAgIDE1OCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgCi0gICAgMjQzLCAxMzcsIDU0LCA4LCA1LCAxLCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAxMDYsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAKLSAgICAxMDYsIDMsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCA4LCA1LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMTY1LCA4LCA1LCAxLCAyMDksIDQwLCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjQzLCAyMzEsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMzQsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMzQsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICAyMjAsIDYyLCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMTY1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTY1LCA4LCA2LCAxLCAKLSAgICAyNDcsIDEyNiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDI0NywgMTI2LCAKLSAgICAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAyNDcsIDI5LCAKLSAgICA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgCi0gICAgMjQ1LCA1MiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgOTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDk1LCA4LCAKLSAgICA2LCAxLCAxODgsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAxODgsIDMsIDI0NywgCi0gICAgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxODgsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICA3MCwgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTg4LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDI0NywgMjksIDgsIDUsIDEsIDE4OCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ2LCA1MiwgOCwgNSwgCi0gICAgMSwgMjM5LCA3NiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ3LCAyMTQsIDgsIDUsIDEsIDIzOSwgNzYsIAotICAgIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAyMzksIDc2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDcwLCA1NSwgOCwgCi0gICAgNiwgMSwgMjM5LCA3NiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMzcsIAotICAgIDE3MiwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA5NSwgCi0gICAgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDk1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjI1LCAxNzAsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjE0LCAKLSAgICA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIAotICAgIDIzNSwgMjA2LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDI0MywgODQsIDc1LCA4LCA2LCAzMiwgMjMxLCA4MSwgOCwgNSwgMzIsIAotICAgIDIzMSwgODEsIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMzAsIDE4NSwgMywgMjQ2LCA1MiwgOCwgCi0gICAgNiwgMSwgMjMwLCA1NSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjgsIAotICAgIDIzMSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDE2NSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDE2NSwgOCwgNiwgMSwgMjI4LCAKLSAgICAxMzEsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICAyNDcsIDI5LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjQzLCAKLSAgICA4NSwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjQzLCA4NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDk1LCA4LCA1LCAKLSAgICAxLCAyMjgsIDEzMSwgMywgOTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAxNjUsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxNjUsIAotICAgIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAKLSAgICAyMjMsIDE2NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIyMywgMTY0LCAKLSAgICAyMTcsIDI1MSwgMjQ3LCAxMzcsIDI1MCwgMTYwLCA4LCA2LCAxLCAyNDEsIDc4LCA4LCA1LCAxLCAyNDEsIDc4LCA4LCA2LCAKLSAgICAxLCAxNTgsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAxNTgsIDMsIDI0NywgCi0gICAgMjE0LCA4LCA1LCAxLCAxNTgsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxNTgsIDMsIDUyLCAxNjUsIDgsIDUsIDEsIDE1OCwgCi0gICAgMywgNTIsIDE2NSwgOCwgNiwgMzIsIDIyMCwgNzMsIDgsIDUsIDMyLCAyMjAsIDczLCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDE2NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCAxNjUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIxNywgCi0gICAgMSwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIxNywgMSwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyNDcsIDI5LCAKLSAgICA4LCA2LCAxLCAyMTUsIDk0LCAzLCAxNjUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDE2NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgCi0gICAgMjQ2LCA1MiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjQ2LCAyMzEsIDgsIAotICAgIDUsIDEsIDIxNSwgOTQsIDMsIDI0NiwgMjMxLCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTUsIAotICAgIDk0LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ2LCAKLSAgICAyMzEsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NywgMjksIDgsIDYsIDEsIAotICAgIDIxMCwgNzAsIDMsIDk1LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAzLCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIAotICAgIDE3MCwgOCwgNiwgMSwgMTA2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMTA2LCAzLCAyNDcsIDIxNCwgOCwgNiwgMSwgMTA2LCAKLSAgICAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDEwNiwgMywgMjE1LCAyNTMsIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDUyLCAxNjUsIAotICAgIDgsIDUsIDEsIDEwNiwgMywgNTIsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxMDYsIDMsIDIyMCwgCi0gICAgNjIsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjQ2LCA1MiwgOCwgNiwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMDMsIAotICAgIDEyNSwgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAxNjUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAxNjUsIAotICAgIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMiwgCi0gICAgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTYzLCAxOTQsIDgsIDUsIAotICAgIDEsIDY2LCAzLCA5NSwgOCwgNiwgMSwgNjYsIDMsIDExMywgOCwgNiwgMSwgNjYsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCA2NiwgCi0gICAgMywgMjA4LCAxNDIsIDgsIDYsIDEsIDE0MywgMTk1LCA4LCA1LCAxLCAxNDMsIDE5NSwgOCwgNiwgMSwgMTcxLCA3OCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjYsIDMsIDExMywgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDExMywgOCwgNiwgMSwgMjUxLCA4NCwgMjQ1LCAKLSAgICA1MSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMTEzLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgCi0gICAgMjQ1LCA1MiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIDIwNywgMTc0LCAyNDQsIDM3LCA4LCA2LCAxLCAyMTYsIDczLCA3NCwgCi0gICAgOCwgNiwgMSwgMjE0LCAxOTIsIDgsIDYsIDEsIDE3MSwgNzQsIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCAxMTMsIDgsIDUsIDEsIAotICAgIDI0MCwgMTc1LCAzLCAxMTMsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDExMywgOCwgNiwgMSwgMjM4LCAyMzUsIDgsIDUsIDEsIAotICAgIDIzNSwgMjU1LCA4LCA2LCAxLCAyMzAsIDIzMCwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAKLSAgICAzLCAxMTMsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDExMywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDE0MiwgOCwgNSwgMSwgCi0gICAgMjI4LCAyNiwgMywgOTUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDQ5LCAKLSAgICAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAxNjMsIDUwLCAyMjcsIDIxMCwgOCwgNiwgMSwgMTU4LCAzLCAxMDEsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTMsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1MywgOCwgNiwgMSwgMjIwLCAKLSAgICA1NywgOCwgNSwgMSwgMjIwLCA1NywgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDExMywgOCwgNSwgMSwgMjE5LCAxODUsIDMsIAotICAgIDExMywgOCwgMSwgMjAyLCAyMTYsIDgsIDYsIDEsIDE0MywgMTA4LCA4LCA1LCAxLCAxNDMsIDEwOCwgOCwgNiwgMSwgMjQxLCAKLSAgICA3LCA4LCAxLCAyMTYsIDczLCAyNDEsIDgsIDIyNywgMTQsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIAotICAgIDYsIDEsIDIxMCwgNzAsIDMsIDExMywgOCwgNSwgMSwgMjEwLCA3MCwgMywgMTEzLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1MywgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDUzLCA4LCA2LCAKLSAgICAxLCAyMDYsIDIxNiwgOCwgNiwgMSwgMjA2LCAxNjUsIDMsIDExMywgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDExMywgOCwgNSwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDExMywgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDk1LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgOTUsIAotICAgIDgsIDYsIDEsIDI0MCwgMTc3LCA4LCA2LCAxLCAyNDAsIDE3OCwgMjE2LCA3MiwgOCwgNSwgMSwgMjQwLCAxNzgsIDIxNiwgCi0gICAgNzIsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyMDksIDI0OCwgOCwgMSwgMTIwLCAzLCA5NSwgOCwgNiwgMSwgMTQzLCAxNzAsIAotICAgIDgsIDUsIDEsIDE0MywgMTcwLCA4LCAxLCAyMzAsIDIzOSwgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDEsIDIwMywgCi0gICAgMTk5LCA4LCAxLCAyNDQsIDMwLCAyNDYsIDI3LCA4LCAxLCAyMjcsIDI1NCwgMjQ2LCAyNywgOCwgMSwgMjUwLCAyNDgsIAotICAgIDI0NiwgMjcsIDgsIDEsIDIxNiwgNzksIDI0NiwgMjcsIDgsIDYsIDEsIDI0MiwgMSwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgCi0gICAgMjQ1LCA1MiwgMywgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDI0MiwgMSwgMywgMjQ3LCAyOSwgOCwgCi0gICAgNiwgMSwgMjI3LCA4MSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDUsIDEsIDIzMCwgMTg0LCA4LCA1LCAxLCAyMjcsIDgxLCA4LCAKLSAgICA2LCAxLCAyMjIsIDQ5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNSwgMSwgMjMwLCAxODQsIDgsIDUsIDEsIDIyMiwgNDksIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NywgCi0gICAgMjksIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAxNTgsIDMsIDI0NywgMjksIDgsIDUsIDEsIAotICAgIDE1OCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMTA2LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxMDYsIDMsIDI0NywgMjksIDgsIAotICAgIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgCi0gICAgMTcwLCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgCi0gICAgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjQ3LCAyOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgCi0gICAgMjUsIDI0NywgMjksIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAKLSAgICAyNDMsIDIzMiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMDcsIDE3NCwgNzQsIDgsIDYsIDEsIDM0LCAzLCAyNDMsIDIzMiwgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMzQsIDMsIDcwLCAKLSAgICA4NywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgNzAsIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDI1MSwgCi0gICAgMTEwLCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjUxLCAxMTAsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAKLSAgICA5NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgOTUsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzOSwgCi0gICAgNzYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NywgCi0gICAgMjksIDgsIDYsIDEsIDE1OCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMTU4LCAzLCAyMjAsIDYyLCA4LCA2LCAxLCAxNTgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMjAsIDYzLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDI0MCwgMTc4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjMwLCAxODUsIAotICAgIDMsIDI0NywgMjksIDgsIDYsIDEsIDI0MiwgMCwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgNSwgMSwgMjAyLCAxNTksIDgsIDUsIAotICAgIDEsIDI0MiwgMCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMTY1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDIzNSwgMjUyLCA4LCA2LCAxLCAyMDMsIDE5OSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAKLSAgICAyMjMsIDE2NCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAyMTUsIDI1MywgODcsIDI1LCAxNjUsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAyMTUsIDI1MywgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDI1MSwgMTEwLCAzLCAxNjUsIDgsIDUsIDEsIDI1MSwgCi0gICAgMTEwLCAzLCAxNjUsIDgsIDYsIDEsIDE1OCwgMywgMjExLCAzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMTEsIDMyLCAKLSAgICAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgNTIsIDIzNywgMjUzLCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAzNCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCAKLSAgICA2LCAxLCAxODgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxODgsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgCi0gICAgNiwgMSwgMTU4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIAotICAgIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTU4LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDIxNywgCi0gICAgMSwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAyMTcsIDEsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDIxNywgMSwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAxMDYsIAotICAgIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMjMwLCAKLSAgICAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxMDYsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjE1LCA5NCwgMywgCi0gICAgMjQ1LCAyMzQsIDU2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyNDUsIDIzNCwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIAotICAgIDI0NSwgMjM0LCA1NiwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ1LCAyMzQsIDU2LCA4LCA2LCAxLCAyMDIsIDIzNCwgOCwgNSwgCi0gICAgMSwgMjAyLCAyMzQsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDE2MywgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAyNDUsIAotICAgIDk1LCA4LCA2LCAxLCAyMTksIDIxNiwgOCwgNSwgMSwgMjE5LCAyMTYsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAxMTMsIDgsIAotICAgIDUsIDEsIDIwMiwgMTYwLCAzLCAxMTMsIDgsIDYsIDEsIDM0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDM0LCAzLCA3MCwgNTUsIAotICAgIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDE1OCwgMywgCi0gICAgMjQzLCAyMzIsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyMjUsIDE3MCwgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDcwLCAKLSAgICA4NywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA4NywgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMDMsIAotICAgIDEyNSwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDI0NSwgOTUsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDUsIDk1LCA4LCAKLSAgICA1LCAxLCAyNDMsIDg0LCAyMzAsIDE4NCwgOCwgNSwgMSwgMjQ0LCAxMzAsIDI0MywgMTkxLCA4LCA1LCAxLCAyMTcsIDY2LCAKLSAgICAyNDMsIDE5MSwgOCwgNiwgMSwgMzQsIDMsIDk1LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgOTUsIDgsIDUsIDEsIDI0NywgCi0gICAgMTI2LCAzLCA5NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDE0MiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQzLCAyMjgsIDk1LCAKLSAgICA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyMTAsIDE2OSwgMjA5LCAyNDgsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMTAsIDE2OSwgCi0gICAgMjA5LCAyNDgsIDgsIDYsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDUsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDYsIDEsIAotICAgIDY2LCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAxNDIsIDgsIDYsIDEsIDIwNywgMTc0LCAyMDYsIDE2NCwgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCA5NSwgOCwgNSwgMSwgMTg4LCAzLCA5NSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDE4NSwgCi0gICAgMywgOTUsIDgsIDYsIDEsIDUsIDIxNywgMTM1LCAzLCAyMzYsIDExNiwgMjA5LCAyNDgsIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAKLSAgICAyMzYsIDExNiwgMjA5LCAyNDgsIDgsIDYsIDEsIDIxNywgMSwgMywgOTUsIDgsIDUsIDEsIDIxNywgMSwgMywgOTUsIDgsIDYsIAotICAgIDEsIDIwMywgMTI1LCAzLCA5NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgNjMsIDgsIAotICAgIDUsIDEsIDI1MSwgMiwgOCwgNSwgMSwgMjA3LCAxNzQsIDI1MSwgMiwgOCwgNSwgMSwgNjYsIDMsIDExMywgOCwgNSwgMSwgCi0gICAgMTcxLCA3OCwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDIwOSwgMjQ4LCA4LCAKLSAgICA1LCAxLCAyNDUsIDUyLCAzLCAxMTMsIDgsIDUsIDEsIDIxNiwgNzMsIDc0LCA4LCA1LCAxLCAyMTQsIDE5MiwgOCwgNSwgMSwgCi0gICAgMjE0LCAxOTMsIDMsIDExMywgOCwgNSwgMSwgMTcxLCA3NCwgOCwgNSwgMSwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNSwgMSwgCi0gICAgMjE2LCA3MywgMTcxLCAxODgsIDMsIDExMywgOCwgNSwgMSwgMjQ2LCAxNiwgMjE2LCA3MywgMTcxLCA3NCwgOCwgNSwgMSwgCi0gICAgMjQzLCA4NCwgMjMwLCAxODUsIDMsIDk1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCAxMTMsIDgsIDUsIDEsIDEzMiwgMjM5LCAKLSAgICA3NSwgOCwgMSwgNSwgNiwgMjM5LCA3NSwgOCwgNSwgMSwgMjM4LCAyMzUsIDgsIDUsIDEsIDIxNiwgMTgyLCAyMzYsIDUzLCAKLSAgICA4LCA1LCAxLCAyMDcsIDE3NCwgMjM3LCAxNzEsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAxMTMsIDgsIDUsIDEsIDIzNywgMzIsIAotICAgIDMsIDExMywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDIzMCwgOCwgMSwgNSwgNiwgNzUsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ4LCAxMjQsIDgsIDUsIAotICAgIDEsIDIyOCwgMTMxLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIyNywgMTY0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjI2LCAKLSAgICAxODUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjYsIDE4NiwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIAotICAgIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDQ5LCAxMTMsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyMTYsIDc5LCAxMTMsIAotICAgIDgsIDEsIDUsIDYsIDIyMywgMTYzLCA4LCA1LCAxLCAyNDgsIDIyNSwgNzgsIDgsIDEsIDUsIDYsIDIyMCwgNzMsIDgsIDUsIAotICAgIDEsIDI0NiwgMTYsIDIyMCwgMzYsIDgsIDUsIDEsIDIxOCwgMTkyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMTQ2LCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjE3LCAxLCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjE3LCAxLCAzLCAxMTMsIDgsIAotICAgIDUsIDEsIDIxNywgMSwgMywgMTYzLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCAyMzksIDI0MCwgOCwgNSwgMSwgMjE2LCA3MywgMjE3LCAxLCAzLCAyMzksIDI0MCwgOCwgMSwgNSwgNiwgCi0gICAgMTQ2LCA4LCAxLCA1LCA2LCAyMzAsIDIzOSwgMTQ2LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxMTMsIDgsIDUsIDEsIDI0MSwgCi0gICAgNywgOCwgNSwgMSwgMjQzLCA4NCwgMjMwLCAxODUsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDgsIDUsIDEsIDIxMSwgMTc0LCAKLSAgICAyMTYsIDczLCAyNDEsIDcsIDgsIDUsIDEsIDI0MSwgOCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIxMCwgNjksIAotICAgIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTA2LCAxNDIsIDgsIDUsIDEsIDIwNiwgMjE2LCAKLSAgICA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMTEzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjA2LCAxNjQsIDgsIDUsIDEsIDIwNywgCi0gICAgMTc0LCAyMDQsIDE0NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIwMywgMTI0LCA4LCAxLCA1LCA2LCAyMDMsIDEyNCwgOCwgNSwgCi0gICAgMSwgMjAyLCAxNjAsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIAotICAgIDI0MCwgMTc3LCA4LCA1LCAxLCAyNDAsIDE3OCwgMywgMjQ1LCA5NSwgOCwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgMSwgCi0gICAgMjE4LCAxOTksIDIwNSwgMTg2LCAyMzksIDEyNiwgOCwgMSwgMjMwLCAyMzksIDIzOCwgNDUsIDIxMSwgNjEsIDgsIDEsIAotICAgIDIxMSwgNDAsIDI0NywgMTI1LCA4LCAxLCAyNDgsIDcwLCAyNDYsIDI3LCA4LCAxLCA1LCA2LCAyNDksIDI1NSwgOCwgNSwgMSwgCi0gICAgMjQ2LCAxNiwgMTcxLCA3NCwgOCwgMSwgNSwgNiwgMjM5LCA3NiwgMywgMTEzLCA4LCAxLCA1LCA2LCAyMzcsIDE3MSwgOCwgCi0gICAgNSwgMSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjMwLCA1NCwgOCwgMSwgNSwgNiwgMTU5LCAKLSAgICA4LCA1LCAxLCAyMTcsIDEzNSwgMywgMTEzLCA4LCAxLCAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgMSwgMjE2LCA3MywgCi0gICAgMjM4LCA0NSwgMjExLCA2MiwgMywgOTUsIDgsIDUsIDEsIDI0MiwgMSwgMjQzLCAxOTEsIDgsIDUsIDEsIDI0NCwgMywgMjQzLCAKLSAgICAxOTEsIDgsIDUsIDEsIDI0MiwgMSwgMjQzLCAxOTIsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIwOCwgMjIsIDI0MywgMTkxLCAKLSAgICA4LCA1LCAxLCAyMDksIDEzNywgMjQzLCAxOTEsIDgsIDUsIDEsIDIwOSwgMTk0LCAyNDMsIDE5MiwgMywgMjQ1LCA5NSwgOCwgCi0gICAgNSwgMSwgMjQwLCAzOSwgMjQzLCAxOTEsIDgsIDUsIDEsIDIyNiwgMjQxLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjI2LCAxODcsIAotICAgIDI0MywgMTkxLCA4LCAxLCAyNDgsIDcwLCAyMTgsIDI0NSwgOCwgMSwgMjQ4LCA3OCwgMjE4LCAyNDUsIDgsIDUsIDEsIDIwNywgCi0gICAgMTc0LCAyMzcsIDE3MiwgMywgMjM5LCAyNDAsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzcsIDE3MiwgMywgMjM5LCAyNDEsIDI1LCAKLSAgICAyMDksIDI0OCwgNjUsIDEsIDUsIDIzNywgMTcxLCA2NSwgMSwgNSwgMjM3LCAxNzIsIDMsIDExMywgNjUsIDEsIDUsIDIzMCwgCi0gICAgMTg0LCA2NSwgMSwgNSwgMTQ2LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDE0NiwgNjUsIDEsIDUsIDIwNywgMTc0LCAyMTcsIDEsIAotICAgIDMsIDExMywgNjUsIDEsIDUsIDYsIDIzMCwgMjM5LCAxNDYsIDY1LCAxLCA1LCAyMDQsIDE0NCwgNjUsIDEsIDUsIDIwMywgCi0gICAgMTI0LCA2NSwgMSwgMjE3LCAyMzYsIDY1LCAxLCA1MiwgMjE3LCAyMzYsIDY1LCAxLCAyMDcsIDE3NCwgMjQ1LCAyMzMsIDY1LCAKLSAgICAxLCAyNTAsIDE2MCwgNjUsIDEsIDIxNiwgNzMsIDI0NSwgMjMzLCA2NSwgMSwgNTAsIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAKLSAgICA0OSwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIDIzOCwgNDUsIDIxMSwgNjEsIDY1LCAxLCAyMTYsIDczLCAyMzgsIDQ1LCAyMTEsIAotICAgIDYxLCA2NSwgMSwgNDksIDI1MCwgOTQsIDY1LCAxLCA1MCwgMjUwLCA5NCwgNjUsIDEsIDExMiwgMjUwLCA5NCwgNjUsIDEsIAotICAgIDEyMSwgMjUwLCA5NCwgNjUsIDEsIDI0NiwgNTMsIDI1MSwgMTM4LCAyNDcsIDI5LCA2NSwgMSwgODAsIDIyNywgMTE0LCA2NSwgCi0gICAgMSwgMjI1LCAxNzAsIDY1LCAxLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDY1LCAxLCAKLSAgICAxMjQsIDgwLCAyMjcsIDExNCwgNjUsIDEsIDEyNCwgMjI1LCAxNzAsIDY1LCAxLCAxMjQsIDIzNywgMjU0LCAyNTEsIDEzOCwgCi0gICAgNjUsIDEsIDEyNCwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjA4LCA4MiwgMjQ1LCAyNDIsIDY1LCAxLCAxNjIsIAotICAgIDIwOCwgODIsIDI0NSwgMjQyLCA2NSwgMSwgMjQ2LCAyMTYsIDUwLCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMjQ2LCAyMTYsIAotICAgIDQ5LCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMTEyLCAyMTAsIDMsIDY1LCAxLCAxMjEsIDIxMCwgMywgNjUsIDEsIDkxLCA1NCwgCi0gICAgNjUsIDEsIDIyNCwgMTAzLCA1NCwgMjQ3LCAyMTQsIDcwLCA1NSwgMjE1LCAyNTMsIDU1LCAyMjAsIDYyLCA1LCAyMDgsIAotICAgIDIyNywgNTIsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIxNiwgNTgsIDExMywgNjUsIDEsIDI0NSwgMTMxLCAyNTEsIAotICAgIDEzOCwgNjUsIDEsIDUsIDIzOCwgMjM1LCA2NSwgMSwgNSwgMTU5LCA2NSwgMSwgNSwgMTk0LCA2NSwgMSwgNSwgMjAzLCAKLSAgICAxOTYsIDY1LCAxLCA1LCAyMTYsIDczLCAyMzgsIDQ1LCAyMTEsIDYxLCA2NSwgMSwgMjQwLCAxOTgsIDE0MywgMTQyLCA2NSwgCi0gICAgMSwgMTM4LCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAxNDMsIDE0MiwgNjUsIDEsIDEyNCwgMTQzLCAxNDIsIDY1LCAxLCAKLSAgICAyNDAsIDE5NywgMTQzLCAxNDIsIDY1LCAxLCAyMDMsIDEsIDI0NCwgMjcsIDE0MywgODIsIDY1LCAxLCAyMDMsIDc3LCAyNDQsIAotICAgIDI3LCAxNDMsIDgyLCA2NSwgMSwgMjA1LCAxODQsIDY1LCAxLCAyMDYsIDI1MSwgNjUsIDEsIDUyLCAyNTAsIDE2MCwgNjUsIAotICAgIDEsIDEyNCwgMTIxLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCAxMTIsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDQ5LCAyNTAsIDk0LCAKLSAgICA2NSwgMSwgMTI0LCA1MCwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgMjE1LCAyNTIsIDY1LCAxLCAxMDEsIDIzNywgMjU0LCAyNTEsIAotICAgIDEzOCwgNjUsIDEsIDEwMSwgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgNjUsIDEsIDEwMSwgNTIsIDI1MSwgMTI2LCAyNTEsIAotICAgIDEzOCwgNjUsIDEsIDEyNCwgMjA4LCAyMjcsIDY1LCAxLCAyMTYsIDE4OCwgMjQ1LCAyNDIsIDY1LCAxLCAyNDgsIDE0MiwgCi0gICAgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDI0MSwgODQsIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyNDgsIDE0MiwgMTI0LCAyMDgsIAotICAgIDE2MSwgNjUsIDEsIDI0MSwgODQsIDEyNCwgMjA4LCAxNjEsIDY1LCAxLCAyMTMsIDM0LCA2NSwgMSwgMTcxLCAyMTMsIDM0LCAKLSAgICA2NSwgMSwgMTI0LCA0OSwgNDcsIDM5LCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAKLSAgICAyNDYsIDUzLCAyNTEsIDEzOCwgMzksIDIwOCwgMjI3LCAzOSwgMjI1LCAxNzAsIDM5LCAyMTksIDE5OCwgMzksIDI0NywgCi0gICAgMjE0LCAzOSwgNzAsIDU1LCAzOSwgMjQzLCAyMzEsIDM5LCAyMzYsIDExNiwgNTUsIDM5LCAyMTUsIDI1MywgNTUsIDM5LCAKLSAgICA1MiwgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgMjQ3LCAyOSwgMzksIDgwLCAyMjcsIDExNSwgNTUsIDM5LCA1MiwgODAsIAotICAgIDIyNywgMTE1LCA1NSwgMzksIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM5LCAyNDcsIDUyLCAzOSwgMjMwLCAyMzksIDI0NywgCi0gICAgMjE0LCAzOSwgMjA3LCAxNzQsIDI0NSwgMjM0LCA1NSwgMzksIDI0NSwgMjM0LCA1NSwgMzksIDIxNiwgNzMsIDI0NSwgMjM0LCAKLSAgICA1NSwgMzksIDI0NSwgMjM0LCA4NywgMjE2LCAxNiwgMzksIDIzNywgMjU0LCAyNTEsIDEzOSwgNTYsIDM5LCAyNTEsIDEyNiwgCi0gICAgMjUxLCAxMzksIDU2LCAzOSwgNDksIDIxMCwgNCwgNTYsIDM5LCA1MCwgMjEwLCA0LCA1NiwgMzksIDQ5LCAyNTAsIDIxOCwgCi0gICAgNTUsIDM5LCAyMzYsIDUzLCAzOSwgNDksIDE2MiwgMjE1LCAyNTMsIDU2LCAzOSwgMTEyLCAyMTAsIDQsIDU2LCAzOSwgMTIxLCAKLSAgICAyMTAsIDQsIDU2LCAzOSwgOTEsIDIsIDU2LCAzOSwgMjI0LCAxMDMsIDIsIDU2LCAzOSwgMjE5LCAxNDAsIDIzNiwgMTE2LCAKLSAgICA1NiwgMzksIDIxNiwgNzksIDIzNiwgMTE2LCA1NiwgMzksIDcwLCA1NiwgMzksIDI0MywgMjMyLCA1NiwgMzksIDIxNSwgCi0gICAgMjUzLCA1NiwgMzksIDI0NSwgMjM0LCA1NiwgMzksIDI0NiwgMjMxLCAzOSwgMjIwLCA2MiwgMzksIDgwLCAyMjcsIDExNSwgCi0gICAgNTYsIDM5LCAyNDcsIDIwOCwgNTYsIDM5LCAyMzAsIDIzOSwgNTIsIDI1MCwgMTI3LCA1NiwgMzksIDI0NywgMzAsIDU2LCAKLSAgICAzOSwgMjQ2LCA1MywgMjUxLCAxMzksIDU2LCAzOSwgMjQ3LCAyMTUsIDU2LCAzOSwgMjMwLCAyMzksIDI0NywgMjE1LCA1NiwgCi0gICAgMzksIDIwOCwgMjI4LCA1NiwgMzksIDIyNSwgMTcxLCA1NiwgMzksIDEyNCwgMjI3LCAxMTQsIDM5LCA1MiwgMTI0LCAyMjcsIAotICAgIDExNCwgMzksIDIwOCwgMjI4LCAyMTksIDE5OSwgMzksIDIxMiwgMjI4LCAyMTEsIDMyLCAyMTksIDE5OSwgMzksIDE2MywgCi0gICAgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAyMTIsIDIyOCwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDE2MywgMjEyLCAxLCAyMTksIAotICAgIDE5OSwgMzksIDUwLCAxNjIsIDIxNSwgMjUzLCA1NiwgMzksIDIzMCwgMjM5LCAyNDcsIDIwOCwgNTYsIDM5LCA1MSwgNTYsIAotICAgIDM5LCAyMTQsIDE3NiwgNTYsIDM5LCAyMDMsIDE5NywgNTUsIDM5LCA4MCwgMjA4LCAyMjcsIDM5LCA1MiwgMjE5LCAxOTgsIAotICAgIDM5LCAyMzcsIDI1NCwgMTQzLCA4MiwgMzksIDI1MSwgMTI2LCAxNDMsIDgyLCAzOSwgMzAsIDIxOCwgMjM5LCAzOSwgMzAsIAotICAgIDIyOCwgMjUyLCAzOSwgMzAsIDI0MywgMjI1LCAyMDgsIDE0OSwgMzksIDMwLCAyMDIsIDIyMSwgMzksIDI0NywgMjA4LCA1NSwgCi0gICAgMzksIDI0MSwgMzUsIDIsIDU2LCAzOSwgNTIsIDgwLCAyMjcsIDExNSwgNTYsIDM5LCA0OSwgMjUwLCAyMTgsIDU2LCAzOSwgCi0gICAgMjIxLCAxNjYsIDIwOCwgMjI4LCA1NSwgMzksIDIzNiwgMTIyLCA1NSwgMzksIDI1MSwgNywgMTU2LCAyMDgsIDE3MywgNTUsIAotICAgIDM5LCA0OSwgNTAsIDUzLCA1NiwgMzksIDE3NywgNTMsIDU2LCAzOSwgMjM4LCA0LCAyMzAsIDk2LCAzOSwgNTAsIDI1MCwgCi0gICAgOTUsIDU1LCAzOSwgNDksIDE2MiwgMjE1LCAyNTMsIDU1LCAzOSwgMjQwLCAzNiwgMzksIDIwMywgMTk3LCA1NiwgMzksIDQ5LCAKLSAgICAyNTAsIDk1LCA1NiwgMzksIDUwLCAyNTAsIDk1LCA1NiwgMzksIDUwLCAyNTAsIDk1LCAyNSwgMTEyLCAyNTAsIDk1LCA1NiwgCi0gICAgMzksIDUwLCAxNjIsIDIxNSwgMjUzLCA1NSwgMzksIDcwLCA4NywgMjE2LCAxNiwgMzksIDI1MCwgNjAsIDU2LCAzOSwgNTIsIAotICAgIDIxNSwgMjUzLCA1NiwgMzksIDIwMiwgMzAsIDU1LCAzOSwgNTIsIDI0NywgMjE1LCA1NiwgMzksIDUyLCAyNDcsIDIxNCwgCi0gICAgMzksIDUyLCAyMjUsIDE3MCwgMzksIDUyLCAyMjUsIDE3MSwgNTYsIDM5LCA1MiwgMjA4LCAyMjcsIDM5LCA1MiwgMjMwLCAKLSAgICAyMzksIDI0NywgMjE0LCAzOSwgNTIsIDg2LCA1MywgNTYsIDM5LCA4LCA1LCAxLCA2MywgMzksIDgsIDUsIDEsIDc0LCAzOSwgCi0gICAgOCwgNSwgMSwgNzUsIDM5LCA4LCA1LCAxLCA3OCwgMzksIDgsIDUsIDEsIDY4LCAzOSwgOCwgNSwgMSwgMjQ3LCAxMjUsIDM5LCAKLSAgICA4LCA1LCAxLCAyNDUsIDUxLCAzOSwgOCwgNSwgMSwgMjM3LCAxNzEsIDM5LCA4LCA1LCAxLCAyMjYsIDE4NSwgMzksIDgsIDUsIAotICAgIDEsIDE0NiwgMzksIDgsIDUsIDEsIDIxMCwgNjksIDM5LCA4LCA1LCAxLCAyMDYsIDE2NCwgMzksIDgsIDUsIDEsIDIwMywgCi0gICAgMTk2LCAzMCwgNiwgMSwgMjM3LCAyMCwgMzAsIDUsIDEsIDIzNywgMjAsIDMwLCA2LCAxLCAyNTAsIDEyNiwgMjE0LCAyNDYsIAotICAgIDMwLCA1LCAxLCAyNTAsIDEyNiwgMjE0LCAyNDYsIDMwLCAyMjEsIDQ0LCA1NCwgMzAsIDIyNiwgMjUxLCAyMjEsIDQ0LCA1NCwgCi0gICAgMzAsIDYsIDEsIDIxOSwgMTI2LCAyNDMsIDE5OSwgMzAsIDUsIDEsIDIxOSwgMTI2LCAyNDMsIDE5OSwgMzAsIDIwMiwgMjIxLCAKLSAgICAzMCwgNSwgMjE2LCA3MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDUsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIAotICAgIDE0NSwgOTcsIDMwLCA1LCAyMTYsIDczLCAyNDIsIDgzLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgMjE3LCA0NywgCi0gICAgODIsIDMwLCA2LCAxLCAyMDIsIDIyNywgMzAsIDIwOCwgMTQ5LCAzMCwgMjQzLCAyMjUsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgCi0gICAgMjUxLCAzLCAzLCAyMDgsIDE0OSwgMzAsIDI1MCwgMjAzLCAyMDksIDE2MywgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIwOCwgCi0gICAgMTQ5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIwOCwgMTQ5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIwOCwgMTQ5LCAKLSAgICAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjA4LCAxNDksIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjA4LCAxNDksIDMwLCA2LCAKLSAgICAxLCAyMjAsIDM3LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIwOCwgMTQ5LCAKLSAgICAzMCwgNiwgMSwgMjUxLCAyLCAzMCwgNiwgMSwgMjQ4LCAxMDYsIDMwLCA2LCAxLCAyMzgsIDIzNSwgMzAsIDYsIDEsIDI0NCwgCi0gICAgMzcsIDMwLCA2LCAxLCAyNDEsIDM3LCAzMCwgNiwgMSwgMjAyLCA4MywgMzAsIDYsIDEsIDI0MCwgMjQ4LCAzMCwgNiwgMSwgCi0gICAgMjA5LCA3NCwgMzAsIDYsIDEsIDIzMCwgMjMwLCAzMCwgNiwgMSwgMjI5LCAyNDcsIDMwLCA2LCAxLCAyMjgsIDI0LCAzMCwgCi0gICAgNiwgMSwgMjIzLCAyNDYsIDMwLCA2LCAxLCAyMjEsIDg0LCAzMCwgNiwgMSwgMjAzLCAxNzAsIDMwLCA2LCAxLCAyMjAsIDM0LCAKLSAgICAzMCwgNiwgMSwgMjE4LCAxNjcsIDMwLCA2LCAxLCAyMTYsIDU5LCAzMCwgNiwgMSwgMjEyLCAxNDQsIDMwLCA2LCAxLCAyMDksIAotICAgIDIwNywgMzAsIDYsIDEsIDIwNiwgMjE2LCAzMCwgNiwgMSwgMjE4LCAxOTIsIDMwLCA2LCAxLCAyNDYsIDE0MiwgMzAsIDYsIAotICAgIDEsIDIxNywgMjAyLCAzMCwgNiwgMSwgMjIwLCAzNiwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNCwgMzAsIDYsIAotICAgIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyNDEsIAotICAgIDM4LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAKLSAgICAyMDgsIDE0OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNSwgMjUsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjUxLCAKLSAgICAyLCAzMCwgNSwgMSwgMjQ4LCAxMDYsIDMwLCA1LCAxLCAyMzgsIDIzNSwgMzAsIDUsIDEsIDI0NCwgMzcsIDMwLCA1LCAxLCAKLSAgICAyNDEsIDM3LCAzMCwgNSwgMSwgMjAyLCA4MywgMzAsIDUsIDEsIDI0MCwgMjQ4LCAzMCwgNSwgMSwgMjA5LCA3NCwgMzAsIDUsIAotICAgIDEsIDIzMCwgMjMwLCAzMCwgNSwgMSwgMjI5LCAyNDcsIDMwLCA1LCAxLCAyMjgsIDI0LCAzMCwgNSwgMSwgMjIzLCAyNDYsIAotICAgIDMwLCA1LCAxLCAyMjEsIDg0LCAzMCwgNSwgMSwgMjAzLCAxNzAsIDMwLCA1LCAxLCAyMjAsIDM0LCAzMCwgNSwgMSwgMjE4LCAKLSAgICAxNjcsIDMwLCA1LCAxLCAyMTYsIDU5LCAzMCwgNSwgMSwgNDYsIDIxMiwgMTQ0LCAzMCwgNSwgMSwgMjEyLCAxNDQsIDMwLCAKLSAgICA1LCAxLCAyMDksIDIwNywgMzAsIDUsIDEsIDIwNiwgMjE2LCAzMCwgNSwgMSwgMjE4LCAxOTIsIDMwLCA1LCAxLCAyNDYsIAotICAgIDE0MiwgMzAsIDUsIDEsIDIxNywgMjAyLCAzMCwgNSwgMSwgMjIwLCAzNiwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIAotICAgIDIyNCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNCwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIwOCwgMTQ5LCAzMCwgCi0gICAgNSwgMSwgMjA2LCAyMTcsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA4LCAxNDksIDMwLCA2LCAyMzAsIAotICAgIDE5LCA5NywgMzAsIDI0OCwgMTA3LCA5NywgMzAsIDIwOSwgNzUsIDk3LCAzMCwgMjA2LCAyMTcsIDMsIDIzNiwgMTE2LCA5NywgCi0gICAgMzAsIDIwNiwgMjE3LCAzLCAyNTEsIDEyNiwgMjUsIDIzNiwgMTE2LCA5NywgMzAsIDIwNiwgMjE3LCAzLCAyNDMsIDIzMiwgCi0gICAgMjUsIDIzNiwgMTE2LCA5NywgMzAsIDIxOCwgMTkzLCA5NywgMzAsIDIxOCwgMTY4LCA5NywgMzAsIDIzMCwgMTksIDk3LCAKLSAgICAzMCwgMSwgMjUwLCAxMjYsIDIyOSwgMCwgMzAsIDUsIDEsIDI1MCwgMTI2LCAyMjksIDAsIDMwLCAxLCAyMTEsIDcxLCAzMCwgCi0gICAgNSwgMSwgMjExLCA3MSwgMzAsIDEsIDI0MywgMTk5LCAzMCwgNSwgMSwgMjQzLCAxOTksIDMwLCAxLCAyMjksIDAsIDMwLCA1LCAKLSAgICAxLCAyMjksIDAsIDMwLCAxLCAyMTQsIDI0NiwgMzAsIDUsIDEsIDIxNCwgMjQ2LCA4NCwgNiwgMSwgMjEzLCAzNSwgODQsIDUsIAotICAgIDEsIDIxMywgMzUsIDg0LCA2LCAxLCAyNDAsIDQ1LCA4NCwgNSwgMSwgMjQwLCA0NSwgODQsIDYsIDEsIDIyOSwgMTI3LCA4NCwgCi0gICAgNSwgMSwgMjI5LCAxMjcsIDg0LCA2LCAxLCAyMzYsIDEwNywgODQsIDUsIDEsIDIzNiwgMTA3LCA4NCwgNiwgMSwgMjM4LCAKLSAgICAyMzAsIDg0LCA1LCAxLCAyMzgsIDIzMCwgODQsIDYsIDEsIDIxMywgMSwgODQsIDUsIDEsIDIxMywgMSwgODQsIDYsIDEsIAotICAgIDI0NCwgNTIsIDg0LCA1LCAxLCAyNDQsIDUyLCAzMCwgMjI5LCAyNDgsIDk3LCAzMCwgMjE2LCA2MCwgOTcsIDMwLCAyMjYsIAotICAgIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgMSwgMjAyLCAyMjcsIDMwLCA2LCAyMDksIDc1LCA5NywgMzAsIDIyNiwgMjIxLCAKLSAgICAyNDEsIDM4LCA5NywgMzAsIDIxNiwgNzMsIDIyNiwgMjIxLCAyNDEsIDM4LCA5NywgMzAsIDYsIDEsIDIxMiwgMjQyLCAzMCwgCi0gICAgNSwgMSwgMjEyLCAyNDIsIDMwLCA2LCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNiwgMSwgMjE0LCAyNDMsIDMwLCA1LCAKLSAgICAxLCAyMTQsIDI0MywgMzAsIDIxNiwgNjAsIDMsIDIxMSwgMzIsIDk3LCAzMCwgNiwgMjE2LCA3MywgMjI2LCAyMjEsIDIxMiwgCi0gICAgMTQ1LCA5NywgMzAsIDYsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA2LCAyMTYsIDczLCAyNDIsIDgzLCAKLSAgICAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzNiwgNiwgMSwgMjMxLCAxMTEsIDMsIDIzNywgMjUzLCAzNiwgNiwgMSwgMjMwLCAKLSAgICAyMzQsIDM2LCA2LCAxLCAyNDMsIDEzMCwgMzYsIDYsIDEsIDIzOCwgNTIsIDM2LCA2LCAxLCAyMDcsIDExLCAyMzEsIDExMCwgCi0gICAgMzYsIDYsIDEsIDI0MSwgMjUyLCAzNiwgNiwgMSwgMjQ3LCAxMzUsIDc1LCAzNiwgNiwgMSwgMjAzLCAxMSwgMzYsIDYsIDEsIAotICAgIDIzMCwgMTYxLCAzNiwgNiwgMSwgMjI3LCA4MCwgMzYsIDYsIDEsIDIyMiwgNDEsIDM2LCA2LCAxLCAyMDgsIDgsIDM2LCA2LCAKLSAgICAxLCAyMjksIDQ5LCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCAzNiwgNiwgMSwgMjEyLCAyMjgsIDY4LCAzNiwgCi0gICAgNiwgMSwgMjQxLCAyNDgsIDM2LCA2LCAxLCA2MywgMzYsIDYsIDEsIDI0OCwgMTYyLCAzNiwgNiwgMSwgMjA2LCA1NSwgMzYsIAotICAgIDYsIDEsIDIzOCwgMTA1LCAzNiwgNiwgMSwgMjQ0LCA3NSwgMzYsIDYsIDEsIDIzMSwgMTEwLCAzNiwgNiwgMSwgMjAyLCA3MSwgCi0gICAgMzYsIDYsIDEsIDIwMiwgOTIsIDM2LCA2LCAxLCA3NSwgMzYsIDYsIDEsIDIxMiwgMjI4LCA3NSwgMzYsIDYsIDEsIDE3MywgCi0gICAgMzYsIDYsIDEsIDI0MSwgMTIyLCAzNiwgNiwgMSwgMjQxLCAxMDMsIDM2LCA2LCAxLCAyNDEsIDkyLCAzNiwgNiwgMSwgNzgsIAotICAgIDM2LCA2LCAxLCAyMTksIDM0LCAzNiwgNiwgMSwgMjQxLCAyOCwgMzYsIDYsIDEsIDI0MSwgMTcsIDM2LCA2LCAxLCAyMDksIAotICAgIDE4NywgMzYsIDYsIDEsIDY4LCAzNiwgNiwgMSwgMjQxLCAxNTQsIDM2LCA2LCAxLCAxNTIsIDM2LCA2LCAxLCAyMDgsIDE0LCAKLSAgICAzNiwgNiwgMSwgMjQ2LCAxNzAsIDM2LCA2LCAxLCAyMTMsIDkwLCAzNiwgNiwgMSwgMjEzLCA0NiwgMzYsIDYsIDEsIDIzNywgCi0gICAgOTEsIDU0LCAzNiwgNiwgMSwgMjAzLCAzMCwgMzYsIDYsIDEsIDIxMiwgNywgNTQsIDM2LCA2LCAxLCA3NCwgMzYsIDYsIDEsIAotICAgIDIwMiwgMjEzLCAzNiwgNiwgMSwgMTk4LCAzNiwgNSwgMSwgNjMsIDM2LCA1LCAxLCAyNDgsIDE2MiwgMzYsIDUsIDEsIDIwNiwgCi0gICAgNTUsIDM2LCA1LCAxLCAyMzgsIDEwNSwgMzYsIDUsIDEsIDI0NCwgNzUsIDM2LCA1LCAxLCAyMzEsIDExMCwgMzYsIDUsIDEsIAotICAgIDIwMiwgNzEsIDM2LCA1LCAxLCAyMDIsIDkyLCAzNiwgNSwgMSwgNzUsIDM2LCA1LCAxLCAyMTIsIDIyOCwgNzUsIDM2LCA1LCAKLSAgICAxLCAxNzMsIDM2LCA1LCAxLCAyNDEsIDEyMiwgMzYsIDUsIDEsIDI0MSwgMTAzLCAzNiwgNSwgMSwgMjQxLCA5MiwgMzYsIDUsIAotICAgIDEsIDc4LCAzNiwgNSwgMSwgMjE5LCAzNCwgMzYsIDUsIDEsIDI0MSwgMjgsIDM2LCA1LCAxLCAyNDEsIDE3LCAzNiwgNSwgMSwgCi0gICAgMjA5LCAxODcsIDM2LCA1LCAxLCA2OCwgMzYsIDUsIDEsIDI0MSwgMTU0LCAzNiwgNSwgMSwgMTUyLCAzNiwgNSwgMSwgMjA4LCAKLSAgICAxNCwgMzYsIDUsIDEsIDI0NiwgMTcwLCAzNiwgNSwgMSwgMjEzLCA5MCwgMzYsIDUsIDEsIDIxMywgNDYsIDM2LCA1LCAxLCAKLSAgICAyMzcsIDkxLCA1NCwgMzYsIDUsIDEsIDIwMywgMzAsIDM2LCA1LCAxLCAyMTIsIDcsIDU0LCAzNiwgNSwgMSwgNzQsIDM2LCAKLSAgICA1LCAxLCAyMDIsIDIxMywgMzYsIDUsIDEsIDE5OCwgMzYsIDUsIDEsIDIzMSwgMTExLCAzLCAyMzcsIDI1MywgMzYsIDUsIDEsIAotICAgIDIzMCwgMjM0LCAzNiwgNSwgMSwgMjQzLCAxMzAsIDM2LCA1LCAxLCAyMzgsIDUyLCAzNiwgNSwgMSwgMjA3LCAxMSwgMjMxLCAKLSAgICAxMTAsIDM2LCA1LCAxLCAyNDEsIDI1MiwgMzYsIDUsIDEsIDI0NywgMTM1LCA3NSwgMzYsIDUsIDEsIDIwMywgMTEsIDM2LCAKLSAgICA1LCAxLCAyMzAsIDE2MSwgMzYsIDUsIDEsIDIyNywgODAsIDM2LCA1LCAxLCAyMjIsIDQxLCAzNiwgNSwgMSwgMjA4LCA4LCAKLSAgICAzNiwgNSwgMSwgMjI5LCA0OSwgMzYsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMzcsIDI1MywgMzYsIDUsIDEsIDIxMiwgMjI4LCAKLSAgICA2OCwgMzYsIDUsIDEsIDI0MSwgMjQ4LCAzNiwgNiwgMSwgMjIwLCAzNiwgMzYsIDUsIDEsIDIyMCwgMzYsIDM2LCA2LCAxLCAKLSAgICAyMDMsIDY2LCAzNiwgNSwgMSwgMjAzLCA2NiwgMzYsIDYsIDEsIDIzMCwgMjI4LCA3NCwgMzYsIDUsIDEsIDIzMCwgMjI4LCAKLSAgICA3NCwgMzYsIDYsIDEsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDIyOCwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCAKLSAgICA2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIAotICAgIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjI4LCAKLSAgICAyMjUsIDM2LCA1LCAxLCAyMjgsIDIyNSwgMzYsIDYsIDEsIDIxNywgMjAyLCAzNiwgNSwgMSwgMjE3LCAyMDIsIDM2LCA2LCAKLSAgICAxLCAyMzksIDIzNSwgMzYsIDUsIDEsIDIzOSwgMjM1LCAzNiwgNiwgMSwgMjMwLCAxODYsIDM2LCA1LCAxLCAyMzAsIDE4NiwgCi0gICAgMzYsIDYsIDEsIDIzMCwgMTg3LCAzLCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCAzNiwgNSwgMSwgMjMwLCAxODcsIDMsIDUyLCAKLSAgICAyMzcsIDI1NCwgMjUxLCAxMzgsIDM2LCA2LCAxLCAyMDcsIDE0LCAzNiwgNSwgMSwgMjA3LCAxNCwgMzYsIDYsIDEsIDIxNSwgCi0gICAgMTkxLCAyMjAsIDM2LCAzNiwgNSwgMSwgMjE1LCAxOTEsIDIyMCwgMzYsIDM2LCA2LCAxLCAyMjAsIDM3LCAzLCAyMDgsIAotICAgIDE5NywgMzYsIDUsIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTk3LCAzNiwgNiwgMSwgMjE5LCAyMjQsIDM2LCA1LCAxLCAyMTksIAotICAgIDIyNCwgMzYsIDYsIDEsIDIyOSwgMCwgMzYsIDUsIDEsIDIyOSwgMCwgMzYsIDIwOSwgMzUsIDU0LCAzOSwgMzYsIDIwOCwgCi0gICAgMTk3LCAzOSwgMzYsIDIxOSwgMTQxLCAzOSwgMzYsIDI0NCwgMTQyLCAyMTgsIDcxLCAzOSwgMzYsIDIxNywgMTk2LCAyMTgsIAotICAgIDcxLCAzOSwgMzYsIDIxOCwgNTUsIDM5LCAzNiwgMjM2LCAxMiwgMjA5LCAzNSwgNTQsIDM5LCAzNiwgMjI0LCAxMTQsIDU0LCAKLSAgICAzNiwgNiwgMSwgMjEyLCAyMjgsIDIzNSwgMjA2LCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDIxMiwgMjI4LCAyMzUsIDIwNiwgCi0gICAgMywgMjA5LCAyNDgsIDM2LCA2LCAxLCAyMTMsIDEzOSwgNTQsIDM2LCA1LCAxLCAyMTMsIDEzOSwgNTQsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDI5LCAzLCAyMDgsIDI1NCwgMzYsIDUsIDEsIDI0MSwgMjksIDMsIDIwOCwgMjU0LCAzNiwgNiwgMSwgMjM4LCAxMDYsIAotICAgIDMsIDIwNiwgMjE1LCAzNiwgNSwgMSwgMjM4LCAxMDYsIDMsIDIwNiwgMjE1LCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDk1LCAKLSAgICAzNiwgNSwgMSwgMjM4LCAxMDYsIDMsIDk1LCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgCi0gICAgMjM4LCAxMDYsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjAyLCA3MiwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIwMiwgNzIsIAotICAgIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDIsIDkzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjAyLCA5MywgMywgMjQ0LCAyMCwgCi0gICAgMzYsIDYsIDEsIDIzMCwgNDQsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgCi0gICAgMjMwLCA0NCwgMywgODAsIDk1LCAzNiwgNSwgMSwgMjMwLCA0NCwgMywgODAsIDk1LCAzNiwgNiwgMSwgMjMwLCA0NCwgMywgCi0gICAgOTUsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCA5NSwgMzYsIDYsIDEsIDI0OCwgMjE0LCAxNzMsIDM2LCA1LCAxLCAyNDgsIAotICAgIDIxNCwgMTczLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIDI0NCwgMjAsIAotICAgIDM2LCA2LCAzMiwgMjQxLCA5MywgMjM4LCAxMDUsIDM2LCA1LCAzMiwgMjQxLCA5MywgMjM4LCAxMDUsIDM2LCA2LCAxLCAKLSAgICAyMTksIDM1LCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDIxOSwgMzUsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjUxLCAxNDUsIAotICAgIDE1MiwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAxNTIsIDM2LCA2LCAxLCAyNDEsIDE4LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgCi0gICAgMjQxLCAxOCwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwOSwgMTg4LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjA5LCAxODgsIAotICAgIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMTEsIDUzLCA2OCwgMzYsIDUsIDEsIDIxMSwgNTMsIDY4LCAzNiwgNiwgMSwgMjExLCAKLSAgICA1MywgMTA2LCAzLCA5NSwgMzYsIDUsIDEsIDIxMSwgNTMsIDEwNiwgMywgOTUsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgCi0gICAgMjQ0LCAyMCwgMzYsIDUsIDEsIDIzNywgMTYwLCAzLCAyNDQsIDIwLCAzNiwgNiwgMzIsIDIwOSwgMTg4LCAyMDgsIDE0LCAKLSAgICAzNiwgNSwgMzIsIDIwOSwgMTg4LCAyMDgsIDE0LCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAKLSAgICAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCA4MCwgOTUsIDM2LCA1LCAxLCAyNDYsIDE3MSwgCi0gICAgMywgODAsIDk1LCAzNiwgNiwgMSwgMjEzLCAxMiwgMzYsIDUsIDEsIDIxMywgMTIsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQ2LCAKLSAgICAxNzAsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMjQ2LCAxNzAsIDM2LCA2LCAxLCAyNTEsIDE0NSwgMjQ2LCAxNzEsIDMsIDI0NCwgCi0gICAgMjAsIDM2LCA1LCAxLCAyNTEsIDE0NSwgMjQ2LCAxNzEsIDMsIDI0NCwgMjAsIDM2LCAxLCAyMTksIDEzMywgMzYsIDYsIDEsIAotICAgIDIwMiwgNzIsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMjAyLCA3MiwgMywgMjQ3LCAyMTQsIDM2LCA2LCAxLCAyMzAsIDQ0LCAKLSAgICAzLCAxMTMsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMjA5LCAyNDgsIDM2LCAKLSAgICA1LCAxLCAyNDEsIDEyMywgMywgMjA5LCAyNDgsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAxMTMsIDM2LCA1LCAxLCAyNDEsIAotICAgIDkzLCAzLCAxMTMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAyMDksIDI0OCwgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIDIwOSwgCi0gICAgMjQ4LCAzNiwgNiwgMSwgMjI5LCAxMzgsIDI0NiwgMTcwLCAzNiwgNSwgMSwgMjI5LCAxMzgsIDI0NiwgMTcwLCAzNiwgNiwgCi0gICAgMSwgMjQxLCAxMDQsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjQxLCAxMDQsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjE5LCAKLSAgICAxMzMsIDM2LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTQsIDM2LCA2LCAxLCAzNCwgCi0gICAgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAzNCwgMywgMjQzLCAyMzEsIDM2LCA2LCAzMiwgMzQsIDIzMSwgMTEwLCAzNiwgNSwgCi0gICAgMzIsIDM0LCAyMzEsIDExMCwgMzYsIDYsIDEsIDIzMSwgMTExLCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDIzMSwgMTExLCAzLCAKLSAgICAyNDcsIDIxNCwgMzYsIDYsIDEsIDIxNCwgMTkyLCAzNiwgNSwgMSwgMjE0LCAxOTIsIDM2LCA2LCAxLCAyMTQsIDE5MywgMywgCi0gICAgMjQzLCAyMzEsIDM2LCA1LCAxLCAyMTQsIDE5MywgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMDIsIDcyLCAzLCAyNDMsIAotICAgIDIzMSwgMzYsIDUsIDEsIDIwMiwgNzIsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjAyLCA5MywgMywgMjQzLCAyMzEsIDM2LCAKLSAgICA1LCAxLCAyMDIsIDkzLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDEsIDI1MiwgMzYsIDUsIDEsIDI1MSwgCi0gICAgMTQ1LCAyNDEsIDI1MiwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MCwgMzYsIDUsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyMjUsIDE3MCwgMzYsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIAotICAgIDIzMSwgMzYsIDYsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgCi0gICAgMjQ4LCAyMjUsIDc4LCAzNiwgNSwgMSwgMjQ4LCAyMjUsIDc4LCAzNiwgNiwgMSwgMjQ4LCAyMjUsIDE1OCwgMywgMjQzLCAKLSAgICAyMzEsIDM2LCA1LCAxLCAyNDgsIDIyNSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDE4OCwgMywgMjQzLCAyMzEsIAotICAgIDM2LCA1LCAxLCAxODgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MCwgMzYsIDUsIDEsIDEwNiwgMywgCi0gICAgMjI1LCAxNzAsIDM2LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzYsIDYsIAotICAgIDEsIDEwNiwgMywgNTIsIDE2NSwgMzYsIDUsIDEsIDEwNiwgMywgNTIsIDE2NSwgMzYsIDYsIDEsIDI0NiwgMTcxLCAzLCAKLSAgICAyNDMsIDIzMSwgMzYsIDUsIDEsIDI0NiwgMTcxLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIzOCwgMTA2LCAzLCAyNDQsIAotICAgIDIwLCAzNiwgNSwgMSwgMjM4LCAxMDYsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAyMDMsIDMxLCAzLCAyNDMsIDIzMSwgMzYsIAotICAgIDUsIDEsIDIwMywgMzEsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDIxMSwgMzIsIDI1LCAxMTMsIDM2LCAKLSAgICA1LCAxLCAyMzgsIDEwNiwgMywgMjExLCAzMiwgMjUsIDExMywgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCAxMTMsIDM2LCA1LCAKLSAgICAxLCAyMzcsIDE2MCwgMywgMTEzLCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIDk1LCAzNiwgNSwgMSwgMjM3LCAxNjAsIDMsIAotICAgIDk1LCAzNiwgNiwgMSwgMjI5LCAxMCwgMjQ0LCA3NSwgMzYsIDUsIDEsIDIyOSwgMTAsIDI0NCwgNzUsIDM2LCA2LCAxLCAKLSAgICAyMjksIDEwLCAyNDMsIDEzMCwgMzYsIDUsIDEsIDIyOSwgMTAsIDI0MywgMTMwLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjAyLCAKLSAgICAyMSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIwMiwgMjEsIDM2LCA2LCAxLCAyMjksIDEwLCAyNDEsIDI0NCwgMzYsIDUsIDEsIAotICAgIDIyOSwgMTAsIDI0MSwgMjQ0LCAzNiwgNiwgMSwgMjI5LCAxMCwgMjI3LCA4MCwgMzYsIDUsIDEsIDIyOSwgMTAsIDIyNywgCi0gICAgODAsIDM2LCA2LCAxLCAyMjksIDEwLCAyMjIsIDQxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjIyLCA0MSwgMzYsIDYsIDEsIAotICAgIDIyOSwgMTAsIDIxMiwgNzEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMTIsIDcxLCAzNiwgNiwgMSwgMjI5LCAxMCwgMjA4LCAKLSAgICAxOTEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMDgsIDE5MSwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwMiwgOTIsIDM2LCA1LCAxLCAKLSAgICAyMTYsIDczLCAyMDIsIDkyLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDExMywgMzYsIDUsIDEsIDI0MSwgMTIzLCAzLCAxMTMsIAotICAgIDM2LCA2LCAxLCAyMjcsIDE2MSwgMzYsIDUsIDEsIDIyNywgMTYxLCAzNiwgNiwgMSwgMjE2LCA2MSwgMzYsIDUsIDEsIDIxNiwgCi0gICAgNjEsIDM2LCA2LCAxLCAyMDMsIDk5LCAzNiwgNSwgMSwgMjAzLCA5OSwgMzYsIDYsIDEsIDIxNywgMTI2LCAzNiwgNSwgMSwgCi0gICAgMjE3LCAxMjYsIDM2LCA2LCAxLCAyMDQsIDYyLCAzNiwgNSwgMSwgMjA0LCA2MiwgMzYsIDYsIDEsIDI1MSwgMjYsIDE3MywgCi0gICAgMzYsIDUsIDEsIDI1MSwgMjYsIDE3MywgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAxMDEsIDExMywgMzYsIDUsIDEsIDI0MSwgCi0gICAgMTIzLCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgCi0gICAgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMTksIDM1LCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjE5LCAzNSwgMywgMjQ0LCAyMCwgCi0gICAgMzYsIDYsIDEsIDIxMywgMTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMTMsIDEzLCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgCi0gICAgMjQxLCA5MywgMywgNDksIDExMywgMzYsIDUsIDEsIDI0MSwgOTMsIDMsIDQ5LCAxMTMsIDM2LCA2LCAxLCAyNDEsIDIzNywgCi0gICAgMzYsIDUsIDEsIDI0MSwgMjM3LCAzNiwgNiwgMSwgMjQ0LCAxMjQsIDM2LCA1LCAxLCAyNDQsIDEyNCwgMzYsIDYsIDEsIAotICAgIDI0MSwgMTIzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjQxLCAxMjMsIDMsIDI0NCwgMjAsIDE3OCwgNiwgMSwgMjUwLCA1LCAKLSAgICAxNzgsIDYsIDEsIDI0OCwgMTIyLCAxNzgsIDYsIDEsIDIzOCwgNjksIDE3OCwgNiwgMSwgMjQ0LCAyMTIsIDE3OCwgNiwgMSwgCi0gICAgMjQxLCAxNjcsIDE3OCwgNiwgMSwgMjAyLCAxMTYsIDE3OCwgNiwgMSwgMjQxLCAxNDcsIDE3OCwgNiwgMSwgMjQwLCAyNTAsIAotICAgIDE3OCwgNiwgMSwgMTM1LCAxNzgsIDYsIDEsIDIwMiwgNzEsIDE3OCwgNiwgMSwgMjMxLCAxOSwgMTc4LCA2LCAxLCAyMjcsIAotICAgIDgzLCAxNzgsIDYsIDEsIDIwMywgMTc0LCAxNzgsIDYsIDEsIDI0NywgOTIsIDE3OCwgNiwgMSwgMjI5LCAxODAsIDE3OCwgNiwgCi0gICAgMSwgMjM2LCAxMzYsIDE3OCwgNiwgMSwgMjMwLCAxODEsIDE3OCwgNiwgMSwgMjM4LCAxMTYsIDE3OCwgNiwgMSwgMjQ2LCAKLSAgICAxNjAsIDE3OCwgNiwgMSwgMjI0LCAyNDAsIDE3OCwgNiwgMSwgMjAzLCAxMSwgMTc4LCA2LCAxLCAyMjEsIDE1MiwgMTc4LCAKLSAgICA2LCAxLCAyMTMsIDkwLCAxNzgsIDYsIDEsIDIwNSwgMTg5LCAxNzgsIDYsIDEsIDI0NiwgMTk5LCAxNzgsIDYsIDEsIDIxOSwgCi0gICAgMTYsIDE3OCwgNiwgMSwgMjMwLCAxNDQsIDE3OCwgNiwgMSwgMjE2LCAyMjAsIDE3OCwgNiwgMSwgMjE0LCAxNTUsIDE3OCwgCi0gICAgNiwgMSwgMjA1LCAyMzQsIDE3OCwgNiwgMSwgMjA4LCAxOTQsIDE3OCwgNiwgMSwgMjE2LCAxMjIsIDE3OCwgNiwgMSwgMjQ1LCAKLSAgICAyNTQsIDE3OCwgNiwgMSwgMjAyLCAyNTIsIDE3OCwgNiwgMSwgMjE4LCAxMDIsIDE3OCwgNiwgMSwgMjI5LCAxOTEsIDE3OCwgCi0gICAgNiwgMSwgMjIwLCA2MCwgMTc4LCA2LCAxLCAyNDAsIDQ3LCAxNzgsIDY1LCAxLCA0OSwgMTYyLCAyMTUsIDI1MiwgMTc4LCAKLSAgICAyNTAsIDE2MCwgMTc4LCAyNDEsIDk2LCA4MiwgMTc4LCAyNDAsIDIxMiwgODIsIDE3OCwgMjQ1LCAyMzMsIDE3OCwgMjE3LCAKLSAgICA0NywgODIsIDE3OCwgMjUxLCAxNDYsIDgyLCAxNzgsIDUsIDEsIDI1MCwgNSwgMTc4LCA1LCAxLCAyNDgsIDEyMiwgMTc4LCAKLSAgICA1LCAxLCAyMzgsIDY5LCAxNzgsIDUsIDEsIDI0NCwgMjEyLCAxNzgsIDUsIDEsIDI0MSwgMTY3LCAxNzgsIDUsIDEsIDIwMiwgCi0gICAgMTE2LCAxNzgsIDUsIDEsIDI0MSwgMTQ3LCAxNzgsIDUsIDEsIDI0MCwgMjUwLCAxNzgsIDUsIDEsIDEzNSwgMTc4LCA1LCAxLCAKLSAgICAyMDIsIDcxLCAxNzgsIDUsIDEsIDIzMSwgMTksIDE3OCwgNSwgMSwgMjI3LCA4MywgMTc4LCA1LCAxLCAyMDMsIDE3NCwgCi0gICAgMTc4LCA1LCAxLCAyNDcsIDkyLCAxNzgsIDUsIDEsIDIyOSwgMTgwLCAxNzgsIDUsIDEsIDIzNiwgMTM2LCAxNzgsIDUsIDEsIAotICAgIDIzMCwgMTgxLCAxNzgsIDUsIDEsIDIzOCwgMTE2LCAxNzgsIDUsIDEsIDI0NiwgMTYwLCAxNzgsIDUsIDEsIDIyNCwgMjQwLCAKLSAgICAxNzgsIDUsIDEsIDIwMywgMTEsIDE3OCwgNSwgMSwgMjIxLCAxNTIsIDE3OCwgNSwgMSwgMjEzLCA5MCwgMTc4LCA1LCAxLCAKLSAgICAyMDUsIDE4OSwgMTc4LCA1LCAxLCAyNDYsIDE5OSwgMTc4LCA1LCAxLCAyMTksIDE2LCAxNzgsIDUsIDEsIDIzMCwgMTQ0LCAKLSAgICAxNzgsIDUsIDEsIDIxNiwgMjIwLCAxNzgsIDUsIDEsIDIxNCwgMTU1LCAxNzgsIDUsIDEsIDIwNSwgMjM0LCAxNzgsIDUsIDEsIAotICAgIDIwOCwgMTk0LCAxNzgsIDUsIDEsIDIxNiwgMTIyLCAxNzgsIDUsIDEsIDI0NSwgMjU0LCAxNzgsIDUsIDEsIDIwMiwgMjUyLCAKLSAgICAxNzgsIDUsIDEsIDIxOCwgMTAyLCAxNzgsIDUsIDEsIDIyOSwgMTkxLCAxNzgsIDUsIDEsIDIyMCwgNjAsIDE3OCwgNSwgMSwgCi0gICAgMjQwLCA0NywgMTc4LCA1LCAzMiwgMjQxLCAxNjgsIDIwMiwgMjUyLCAxNzgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNzgsIAotICAgIDIzNSwgMjIwLCAyMTYsIDE1LCAxNzgsIDI0MCwgMjQ2LCA1NCwgMjI3LCAyMjEsIDE3OCwgMjQwLCAyNDYsIDU0LCAxNzgsIAotICAgIDI0MiwgNjAsIDU0LCAxMTAsIDI1MSwgMTM5LCAyNDAsIDI0MSwgMTEwLCAyNTEsIDEzOSwgMjE0LCAxNTYsIDExMCwgMjUxLCAKLSAgICAxMzksIDIxMywgNjksIDExMCwgMjUxLCAxMzksIDIwMiwgMTAzLCAyMTcsIDEwOSwgMTEwLCAyNTEsIDEzOSwgMjAyLCAxMDMsIAotICAgIDIzOCwgMjU0LCAxMTAsIDI1MSwgMTM5LCAyMDgsIDIwOSwgMTEwLCAyNTEsIDEzOSwgMjE2LCA3MCwgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjAyLCAxMDEsIDExMCwgMjUxLCAxMzksIDIxOSwgNjEsIDExMCwgMjUxLCAxMzksIDIwMywgMjMsIDExMCwgMjUxLCAxMzksIAotICAgIDIwOSwgMTE1LCAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2NywgMTEwLCAyNTEsIDEzOSwgMjM4LCAxNjgsIDIyMywgMjA4LCAKLSAgICAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2NSwgMTEwLCAyNTEsIDEzOSwgMjE3LCAxMTAsIDIxOSwgOTAsIDExMCwgMjUxLCAxMzksIAotICAgIDIwOSwgMTU4LCAyMzgsIDE4MywgMTEwLCAyNTEsIDEzOSwgMjE5LCA0MCwgMTEwLCAyNTEsIDEzOSwgMjUwLCA0MywgMjM3LCAKLSAgICAxNTIsIDExMCwgMjUxLCAxMzksIDIyMywgMjE4LCAxMTAsIDI1MSwgMTM5LCAyMjUsIDE0NSwgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjI0LCAyMjksIDExMCwgMjUxLCAxMzksIDIyNCwgMjMwLCAyMjksIDE5MiwgMTEwLCAyNTEsIDEzOSwgMjQ0LCAxNTEsIAotICAgIDExMCwgMjUxLCAxMzksIDIxNywgMTIxLCAxMTAsIDI1MSwgMTM5LCAyMDksIDE1OCwgMjE3LCAxMDQsIDExMCwgMjUxLCAKLSAgICAxMzksIDIwMywgMzMsIDI0OCwgMTIzLCAyMDIsIDIzMywgMTEwLCAyNTEsIDEzOSwgMjIwLCA0MywgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjMxLCA2OSwgMTEwLCAyNTEsIDEzOSwgMjQ0LCA1MywgMTEwLCAyNTEsIDEzOSwgMjAyLCAyOCwgMTEwLCAxMzEsIDIyNSwgCi0gICAgNzUsIDI0NiwgNjEsIDExMCwgMjE4LCA2MywgMjEzLCAxNSwgMTEwLCAyMTgsIDYzLCAyMzcsIDgyLCAyMTQsIDE1NiwgMTEwLCAKLSAgICAyMTgsIDYzLCAyMzcsIDgyLCAyMTksIDU0LCAxMTAsIDIxOCwgNjMsIDIzNywgODIsIDIxNywgMTE0LCAxMTAsIDIxOCwgNjMsIAotICAgIDIzNiwgMjMyLCAxMTAsIDIxOCwgNjMsIDIwOCwgMTEsIDExMCwgMjE4LCA2MywgMjE0LCAxNTYsIDExMCwgMjE4LCA2MywgCi0gICAgMjE5LCA1NCwgMTEwLCAyMTgsIDYzLCAyMTcsIDExNCwgMTEwLCAyMTgsIDYzLCAyMzYsIDEyOCwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMzYsIDEyOSwgMjM3LCA4NCwgMzUsIDIwNiwgNTksIDExMCwgMjE4LCA2MywgMjE3LCA1MSwgMTEwLCAyMTgsIDYzLCAyNDQsIAotICAgIDE5OCwgMjE5LCAyNDUsIDIyNSwgMTA1LCAxMTAsIDIxOCwgNjMsIDIyNCwgMjE5LCAxMTAsIDIxNywgMTc5LCAyMjUsIDEwMiwgCi0gICAgMTEwLCAyMTgsIDYzLCAyMTYsIDIwMCwgMTEwLCAyMTcsIDE3OSwgMjE5LCA2MywgMTEwLCAyMTgsIDYzLCAyMTMsIDAsIAotICAgIDI0MywgODUsIDExMCwgMjE4LCA2MywgMjEyLCAxMjQsIDI0MywgODUsIDExMCwgMjE3LCAxNzksIDIxMiwgOCwgMjE5LCA1NiwgCi0gICAgMTEwLCAxMzEsIDIwNiwgMjIxLCAyNDMsIDg1LCAxMTAsIDEzMSwgMjI2LCAyNTEsIDI0MywgODUsIDExMCwgMjE3LCAxNzksIAotICAgIDIyMSwgNDEsIDIzNywgMTUxLCAxMTAsIDIxOCwgNjMsIDIxNywgMTE1LCAyMTcsIDEwOSwgMTEwLCAxLCAyNTEsIDMwLCAKLSAgICAxMTAsIDEsIDI0OCwgMTA4LCAxMTAsIDEsIDIzOCwgNjcsIDExMCwgMSwgMjQ0LCAxNzgsIDExMCwgMSwgMjM3LCA2NywgCi0gICAgMTEwLCAxLCAyMDYsIDU5LCAxMTAsIDEsIDIwMiwgOTUsIDExMCwgMSwgMjM3LCAyMSwgMTEwLCAxLCAyMDksIDEzMiwgMTEwLCAKLSAgICAxLCAyMDIsIDIzNiwgMTEwLCAxLCA0NiwgMjMwLCAyMiwgMTEwLCAxLCAyMzAsIDIyLCAxMTAsIDEsIDIyOCwgMjAsIDExMCwgCi0gICAgMSwgNDYsIDIyNCwgMjQ3LCAxMTAsIDEsIDIyNCwgMjQ3LCAxMTAsIDEsIDQ2LCAyMjEsIDQwLCAxMTAsIDEsIDIyMSwgNDAsIAotICAgIDExMCwgMSwgMjE0LCAyNDksIDExMCwgMSwgMjUwLCAzLCAxMTAsIDEsIDQ2LCAyMTksIDM0LCAxMTAsIDEsIDIxOSwgMzQsIAotICAgIDExMCwgMSwgNDYsIDIwOCwgMTUsIDExMCwgMSwgMjA4LCAxNSwgMTEwLCAxLCAyMTcsIDc0LCAxMTAsIDEsIDIxNiwgOTEsIAotICAgIDExMCwgMSwgMjEyLCAyNTUsIDExMCwgMSwgMjA5LCAyMDMsIDExMCwgMzIsIDIwMywgOSwgNTIsIDIwNiwgNTksIDExMCwgCi0gICAgMzIsIDIwMywgOSwgMjA2LCA2MCwgMjAyLCAyMzYsIDExMCwgMzIsIDIwMywgOSwgNTIsIDIwMiwgMjM2LCAxMTAsIDIxNywgCi0gICAgMTc5LCAyMzgsIDE2NywgMTEwLCAyMTcsIDE3OSwgMjM4LCAxNjUsIDEwLCA0MiwgNTQsIDEwLCAyLCAyMTQsIDI0MiwgMTAsIAotICAgIDIzOSwgMTcwLCAyMjUsIDg4LCAxMCwgMiwgMjE1LCAyNCwgMTAsIDIsIDIxNCwgMjQ1LCAxMCwgNDIsIDEzMSwgNTUsIDI1MCwgCi0gICAgMTQwLCAyNDUsIDEwNiwgMjE1LCAyMDQsIDI1MCwgMTQwLCAyMzksIDE0MCwgMjE1LCAyMDQsIDEwLCAyMTYsIDE2NSwgMjUwLCAKLSAgICAxNDAsIDIxOCwgMjQ3LCAyMjQsIDExNiwgNTQsIDI1MCwgMTQwLCAyMTgsIDI0NywgMjA5LCAxNTMsIDIwOSwgMzcsIDU0LCAKLSAgICAyNTEsIDg2LCA1NCwgMTAsIDI0NSwgMjMzLCAxMCwgMjQ0LCAxMzgsIDIxMywgMTMwLCAxMCwgMjE4LCA2NSwgMjA2LCA0MCwgCi0gICAgNTQsIDEwLCAyLCAyMjQsIDk1LCAxMCwgMiwgMjE1LCAzLCAyNTEsIDMzLCAyMDQsIDg2LCAxMCwgMiwgMjUxLCAzMywgMjUwLCAKLSAgICA2NCwgMTAsIDIsIDIxNiwgMTk4LCAyNTEsIDMyLCAxMCwgMiwgMjE2LCAyMDYsIDI1MSwgMTIsIDI1MCwgMjEwLCAxMCwgMiwgCi0gICAgMjA5LCAyNDAsIDEwLCA1LCAxMzgsIDIwOSwgMjUxLCAxMCwgNSwgMTM4LCAzMiwgMTM3LCAzLCAyMjgsIDI5LCAzLCAyMDMsIAotICAgIDQ3LCAxMCwgNSwgMTM4LCAyMDIsIDEwNywgMTAsIDUsIDI0MCwgNzEsIDEwLCA1LCAyNDQsIDE3MiwgMTAsIDUsIDIyOSwgCi0gICAgMjI5LCAxMCwgMjEzLCAxNDMsIDEwLCAxLCA4MiwgMTAsIDIwOCwgNzAsIDcwLCAyMTcsIDE3OSwgODIsIDEwLCAyMTcsIDQ3LCAKLSAgICA4MiwgMTAsIDEsIDIyOSwgMjMzLCAyMDMsIDQ3LCAxMCwgMSwgMjM3LCAxMjcsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCAKLSAgICA1NSwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgCi0gICAgMTM3LCAzLCAyMzcsIDEyOCwgNTYsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjUxLCAzMCwgMTAsIDEsIAotICAgIDI0OCwgMTM4LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTgsIDEwLCAxLCAyMDksIDE2OSwgMTAsIDEsIDIwOSwgODgsIDEwLCAKLSAgICAxLCAyMzAsIDE1OCwgMTAsIDEsIDIzNywgMTQ4LCAxMCwgMSwgMjI5LCAxNDAsIDEwLCAxLCAyNDQsIDE4NCwgMTAsIDEsIAotICAgIDIwOSwgMTAwLCAxMCwgMSwgMjE2LCAxMjIsIDEwLCAxLCAyMDIsIDEwNywgMTAsIDEsIDIxNCwgMTYxLCAxMCwgMSwgMjEzLCAKLSAgICAzOSwgMTAsIDEsIDIxNSwgMjgsIDEwLCAxLCAyNDQsIDIwNywgMTAsIDEsIDIwOSwgMjUxLCAxMCwgMSwgMjAyLCAxMTAsIAotICAgIDEwLCAxLCAyNTEsIDU5LCAxMCwgMSwgMjM4LCAxMTQsIDEwLCAxLCAyMjksIDE5MCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgCi0gICAgMjI5LCAxOTAsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDI0MCwgNzUsIDg5LCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDEwLCAKLSAgICAxLCAyNDAsIDc1LCA4OSwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIAotICAgIDIwOSwgMjA5LCAxMCwgMSwgMjQwLCA0NywgMTAsIDEsIDIxNywgMTE5LCAxMCwgMSwgMjMwLCAyMiwgMTAsIDEsIDIyOCwgCi0gICAgMjgsIDEwLCAxLCAyMjUsIDUsIDEwLCAxLCAyMjEsIDE3OCwgMTAsIDEsIDIzNywgNDMsIDEwLCAxLCAyMDQsIDcwLCAxMCwgCi0gICAgMSwgMTM3LCAyMjUsIDEyOSwgMTAsIDEsIDIwMywgNDcsIDEwLCAyNDAsIDY5LCAxMCwgMjQ0LCAxNzAsIDEwLCAyMjksIAotICAgIDIyNywgMTAsIDI0MCwgNzEsIDEwLCAyNDQsIDE3MiwgMTAsIDIyOSwgMjI5LCAxMCwgMjEzLCA4MCwgMTAsIDIxMCwgMjIyLCAKLSAgICAxMCwgMjI1LCAxNjQsIDU1LCAxMCwgMjM3LCAxMjgsIDU1LCAxMCwgMjM3LCAxMjgsIDU2LCAxMCwgMjEwLCAyNDYsIDI1MSwgCi0gICAgMzAsIDEwLCAyMzAsIDIzOSwgMjQ0LCAxNzIsIDEwLCAxMzEsIDIyMSwgMTc5LCAyMzgsIDg1LCAxMCwgMjAxLCAyNDgsIDEwLCAKLSAgICAyMiwgMiwgNSwgMjA2LCAxNjUsIDU1LCAxMCwgMjIsIDIsIDIzMCwgMjM5LCA1LCAyMDYsIDE2NSwgNTUsIDEwLCAyMiwgMiwgCi0gICAgNzAsIDU2LCAxMCwgMjE2LCA3MywgMjQ0LCAxNzIsIDEwLCAyNDAsIDcyLCAzLCAxMjAsIDI0MywgODMsIDEwLCAyMDQsIDcyLCAKLSAgICAyMzcsIDEyOCwgNTYsIDI1MCwgMTQwLCAxNywgMjAyLCA4NCwgMjUwLCAxNDAsIDE3LCAxMDUsIDI1MCwgMTQwLCAxNywgCi0gICAgMTA4LCAyNTAsIDE0MCwgMTcsIDE0NywgMjUwLCAxNDAsIDE3LCAxNDksIDI1MCwgMTQwLCAxNywgMTcwLCAyNTAsIDE0MCwgCi0gICAgMTcsIDE5NSwgMjUwLCAxNDAsIDE3LCAyMTMsIDExMSwgMjUwLCAxNDAsIDE3LCAxOTksIDI1MCwgMTQwLCAxNywgMjIyLCAKLSAgICA2MywgMTAsIDIxOCwgMjQ2LCA1NCwgMTAsIDI0NCwgNjgsIDIxMywgMTMwLCAxMCwgMjA5LCAzNSwgMjEzLCAxMzAsIDEwLCAKLSAgICAyMzksIDIzMywgMjE4LCA2MSwgMjExLCA5NCwgMTAsIDEsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMSwgMjQzLCA4NCwgCi0gICAgMjE3LCAxMTksIDEwLCAxLCAyMTAsIDE5OSwgMjUxLCAzMCwgMTAsIDEsIDEzNywgMjA0LCA4NywgMTAsIDEsIDEzNywgMywgCi0gICAgMjA0LCA3MiwgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTM3LCAzLCAyMDQsIDcyLCAyMzcsIDEyOCwgNTYsIDEwLCAxLCAxMzgsIAotICAgIDIzNywgMTI3LCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjUxLCAzMCwgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDIwNCwgNzAsIAotICAgIDEwLCAxLCAxMDYsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDEzOCwgMjM3LCAxMjgsIDIwMywgNDcsIDEwLCAxLCAyMDcsIAotICAgIDIzMywgMTAsIDEsIDIwNywgMjMxLCAxMCwgMSwgMjQ4LCAxNDgsIDEwLCAxLCAyMDksIDE3MCwgMywgMjE1LCAyNTIsIDEwLCAKLSAgICAxLCAyMDksIDE3MCwgMywgMTI2LCAxODcsIDg3LCAyNDIsIDY4LCAxMCwgMSwgMjE5LCAxNiwgMTAsIDEsIDIwOSwgMTY3LCAKLSAgICAxMCwgMSwgMjQ4LCAxMzYsIDEwLCAxLCAxNTEsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDE1MSwgMywgMTIwLCAxODcsIAotICAgIDgwLCA1NSwgMTAsIDEsIDIyMCwgMjU0LCAxMCwgMSwgMjQyLCA1LCAxMCwgMSwgMTUxLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAKLSAgICAxLCAyMDksIDE5MSwgMTAsIDEsIDIwOSwgMTg5LCAxMCwgMSwgMjQ0LCAxMTUsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjE1LCAKLSAgICAyNTIsIDEwLCAxLCAyNDQsIDE4NSwgMywgNzAsIDU2LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDUsIAotICAgIDIwOSwgMjUxLCAxMCwgMSwgMjQ0LCAxOTEsIDEwLCAxLCAyNDQsIDExNywgMTAsIDEsIDI0MiwgMzMsIDEwLCAxLCAyNDQsIAotICAgIDE4NSwgMywgMTI2LCAxODcsIDg3LCAyNDIsIDY4LCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAxMCwgCi0gICAgMSwgMjE1LCAxNzcsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMTYsIDEyMywgMywgMjE1LCAKLSAgICAyNTIsIDEwLCAxLCAyMTYsIDEyMywgMywgNzAsIDU2LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDUsIDIwNiwgMTY1LCA1NiwgMTAsIAotICAgIDEsIDIxNiwgMTIzLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMTIwLCAxODcsIAotICAgIDU1LCAxMCwgMSwgMjMwLCAxNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAxLCAyMTQsIAotICAgIDE2MiwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIAotICAgIDEsIDIxNCwgMTYyLCAzLCAxMjYsIDE4NywgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMTUsIDI5LCAzLCAKLSAgICAxMjAsIDE4NywgNTYsIDEwLCAxLCAyMTUsIDI5LCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMDksIDI1MiwgMywgMTI2LCAKLSAgICAxODcsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEsIAotICAgIDI0MCwgNDgsIDMsIDcwLCAyMjQsIDUsIDU2LCAxMCwgMSwgMjQwLCA0OCwgMywgNzAsIDU2LCAxMCwgMSwgMjA2LCA0OCwgCi0gICAgMTAsIDEsIDI0MCwgNDgsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIxOSwgMTQsIDEwLCAxLCAyMTcsIDEyMCwgMywgNzAsIAotICAgIDU1LCAxMCwgMSwgMjE3LCAxMjAsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOSwgMTg5LCAxMCwgMSwgMjEwLCAxNjksIAotICAgIDIzMCwgMjIsIDEwLCAxLCAyMzAsIDIzLCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIzMCwgMjMsIDMsIDcwLCA1NSwgMTAsIDEsIAotICAgIDIyMiwgMjA1LCAxMCwgMSwgMjMwLCAyMywgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjM4LCAyNTEsIDEwLCAxLCAyMzgsIAotICAgIDI1MiwgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjIsIDEyNiwgMTAsIDEsIDIzOCwgMjUyLCAzLCAxMjAsIDE4NywgNTYsIDEwLCAKLSAgICAxLCAyMzcsIDIxNywgMTAsIDEsIDIzOCwgMjUyLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjgsIDI5LCAzLCA1LCAyMDYsIAotICAgIDE2NCwgMTAsIDEsIDIyOCwgMjksIDMsIDcwLCA1NSwgMTAsIDEsIDIyOCwgMjksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIAotICAgIDIyOCwgMjksIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCA3MCwgNTYsIDEwLCAxLCAyMjEsIDE3OSwgCi0gICAgMjM4LCA4NSwgMTAsIDEsIDIxNSwgMjMwLCAxMCwgMSwgMjIxLCAxNzksIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjIxLCAxNzksIAotICAgIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTA5LCAxMCwgMSwgMjA5LCAxOTIsIDMsIDcwLCA1NSwgCi0gICAgMTAsIDEsIDIzNywgNDQsIDMsIDg5LCA1NSwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzYsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIAotICAgIDM3LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OSwgMjM4LCAzNiwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjI5LCA3NiwgMjIwLCA3MywgMTAsIDEsIDIyMCwgNzMsIDEwLCAxLCA2OCwgMTAsIDEsIAotICAgIDIwMiwgMjEzLCAxMCwgMSwgMjI5LCA3NiwgMjAyLCAyMTMsIDEwLCAxLCAyMDQsIDcxLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAKLSAgICAxLCAyMDYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgMjAzLCA0NywgMTAsIDEsIDg5LCAzLCAyMDksIDI0OCwgMTAsIDEsIDg5LCAKLSAgICAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIwNCwgNzEsIDMsIDcwLCA1NSwgMTAsIDEsIDc0LCAxMCwgMSwgODksIDMsIDEyNiwgCi0gICAgMTg3LCA1NiwgMTAsIDEsIDg5LCAyNDgsIDIyMywgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjM3LCAxMjgsIDU1LCAxMCwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDEwLCAxLCAyNTEsIDEwOSwgMTAsIDUsIDEzOCwgMzIsIDIxNSwgMjksIDMsIDIyOCwgMjksIAotICAgIDMsIDEzNywgMjI1LCAxMjksIDEwLCA1LCAxMzgsIDMyLCAyMTcsIDEyMCwgMywgMjI4LCAyOSwgMywgMTM3LCAyMjUsIDEyOSwgCi0gICAgMTAsIDUsIDEzOCwgODMsIDgxLCAxOCwgMTAsIDUsIDEzOCwgMjI4LCAyOSwgMjUxLCAzMCwgMTAsIDUsIDEzOCwgMjMwLCAKLSAgICAxNTgsIDEwLCA1LCAxMzgsIDEyNiwgMjQzLCA4MywgMTAsIDUsIDEzOCwgMjE0LCAxNjEsIDEwLCAyNDEsIDg0LCA3NiwgCi0gICAgMjUwLCA3LCAxMCwgMjExLCA5MCwgNzYsIDIxNSwgMTQzLCAyNDEsIDEyMywgMjM2LCAyMjcsIDEwLCA1LCAxMzgsIDIxNSwgCi0gICAgMTg5LCAyMDIsIDg0LCAxMCwgNSwgMTM4LCAyMDYsIDIxOSwgMjE2LCAxNDIsIDIwMiwgODQsIDEwLCA1LCAxMzgsIDI0MywgCi0gICAgODQsIDIzNywgNjUsIDc2LCAyMjksIDE0MCwgMTAsIDUsIDEzOCwgODMsIDY0LCAxOCwgMTAsIDUsIDEyNCwgMjE0LCAxNjEsIAotICAgIDEwLCA1LCAxMzgsIDIyNSwgMTY1LCAxMCwgNSwgMjA0LCA3MCwgMTAsIDUsIDIwMywgNDcsIDEwLCA1LCAxMzgsIDIwMywgCi0gICAgNDcsIDEwLCA1LCAxMzgsIDIyMSwgMTc4LCAxMCwgMjE4LCA5NywgNzYsIDIxNSwgMTQsIDEwLCAyNDEsIDk0LCAyNDYsIAotICAgIDIxOCwgMTI0LCAyMTEsIDYxLCAxMCwgMjQxLCA5NCwgMjQ2LCAyMTgsIDEzOCwgMjExLCA2MSwgMTAsIDIxNSwgMTg5LCAKLSAgICAxMzgsIDIxMSwgNjIsIDMsIDI0MCwgOCwgMjQ2LCAyMTcsIDEwLCA1LCAxMjQsIDIyNSwgNSwgMTAsIDEsIDI0NCwgMTg1LCAKLSAgICAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDEwLCAxLCAyMTYsIDEyMywgMywgMjMwLCAyMzksIDIwNiwgMTY0LCAyNDAsIDIwMiwgCi0gICAgMjUwLCAxNDAsIDE3LCAyMDIsIDg0LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMDUsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDEwOCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTQ3LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxNDksIDI0MCwgCi0gICAgMjAyLCAyNTAsIDE0MCwgMTcsIDE3MCwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTk1LCAyNDAsIDIwMiwgMjUwLCAxNDAsIAotICAgIDE3LCAyMTMsIDExMSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTk5LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAyMjIsIAotICAgIDYzLCAxMCwgMSwgMjEzLCA0MCwgMywgNzAsIDU2LCAxMCwgMSwgMjQ0LCAyMDgsIDMsIDcwLCA1NiwgMTAsIDEsIDIzOCwgCi0gICAgMTE1LCAzLCA3MCwgNTYsIDEwLCAyLCAyMTIsIDEyMywgMjUwLCAyMzUsIDEwLCAyLCAyMTIsIDEyMywgMjE4LCAyNywgMjI0LCAKLSAgICAyNDAsIDEwLCAxLCAyMzcsIDQ0LCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDIxMCwgODksIDI0MSwgODQsIDc2LCAyMTksIAotICAgIDg4LCAyMTAsIDg5LCAyMTAsIDE5NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDIxMCwgODksIDIxMCwgMjQ4LCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgMjEwLCA4OSwgMjEwLCAxOTUsIDI0NSwgMjQyLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDIsIDIxMCwgCi0gICAgODksIDIzNiwgMTA2LCAyNDUsIDI0MiwgMjEwLCA4OSwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgMjIyLCAyMTAsIDg5LCAKLSAgICAyNDUsIDI0MywgMjEyLCA2OCwgMjE2LCAxNiwgMjEwLCA4OSwgMjEwLCAxOTUsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMjcsIAotICAgIDIyMiwgMjEwLCA4OSwgMjEwLCAyNDgsIDI0NSwgMjQzLCAyMTIsIDY4LCAyMTYsIDE2LCAyMTAsIDg5LCAyNDUsIDE4NiwgCi0gICAgMjEwLCA4OSwgMjM3LCA4OSwgMjIwLCA5MSwgMjEwLCA4OSwgMjM3LCA4OSwgMjI0LCAyMTcsIDIxMCwgODksIDIzNywgODksIAotICAgIDI1MCwgNjEsIDIxMCwgODksIDI1MSwgMTQ2LCA4MiwgMjEwLCA4OSwgMSwgMjUxLCAzNSwgMjEwLCA4OSwgMSwgMjEwLCAKLSAgICAxOTksIDI1MSwgMzUsIDIxMCwgODksIDEsIDI0OCwgMTA1LCAyMTAsIDg5LCAxLCAyMzgsIDI0MSwgMjEwLCA4OSwgMSwgCi0gICAgMjM4LCAyNDIsIDIzOCwgMjE5LCAyMTAsIDg5LCAxLCAyNDQsIDE4MSwgMjEwLCA4OSwgMSwgMjQzLCA4NCwgMjQ0LCAxODIsIAotICAgIDIxNSwgMjQ2LCAyMTAsIDg5LCAxLCAyMzcsIDY3LCAyMTAsIDg5LCAxLCAyMDQsIDcwLCAyMTAsIDg5LCAxLCAyMDIsIDEwNywgCi0gICAgMjEwLCA4OSwgMSwgMjM3LCAxOSwgMjEwLCA4OSwgMSwgMjA5LCAxMjgsIDIxMCwgODksIDEsIDIwOSwgMTI5LCAyMzgsIAotICAgIDIxOSwgMjEwLCA4OSwgMSwgMjAyLCAyMDAsIDIxMCwgODksIDEsIDIwMiwgMjAxLCAyMzcsIDY3LCAyMTAsIDg5LCAxLCAKLSAgICAyMjksIDI1MCwgMjEwLCA4OSwgMSwgMjI4LCAyNywgMjEwLCA4OSwgMSwgMjI0LCAxMTIsIDIxMCwgODksIDEsIDIyMSwgNDAsIAotICAgIDIxMCwgODksIDEsIDIxMywgMTM2LCAyMTAsIDg5LCAxLCA0NiwgMjEzLCAxMzYsIDIxMCwgODksIDEsIDc0LCAyMTAsIDg5LCAKLSAgICAxLCAyMTksIDM0LCAyMTAsIDg5LCAxLCAyMTYsIDczLCAyMTksIDM0LCAyMTAsIDg5LCAxLCAyMTUsIDI2LCAyMTAsIDg5LCAKLSAgICAxLCAyMTcsIDExMywgMjEwLCA4OSwgMSwgMjE1LCAyNDYsIDIxMCwgODksIDEsIDIxMiwgMjU1LCAyMTAsIDg5LCAxLCAyMDksIAotICAgIDIwMSwgMjEwLCA4OSwgMSwgMjE4LCAyMzEsIDI0OCwgOTIsIDIxMCwgODksIDEsIDIxOCwgMjMxLCAyMzgsIDExMiwgMjEwLCAKLSAgICA4OSwgMSwgMjE4LCAyMzEsIDI0MywgMjUyLCAyMTAsIDg5LCAyMTcsIDE5MiwgNTUsIDIxMCwgODksIDIxNywgMTkyLCA1NiwgCi0gICAgMjEwLCA4OSwgMjE3LCAxOTIsIDI0MiwgODIsIDIxMCwgODksIDIwMiwgMTEsIDU1LCAyMTAsIDg5LCAyMDIsIDExLCA1NiwgCi0gICAgMjEwLCA4OSwgMjAyLCAxMSwgMjQyLCA4MiwgMjEwLCA4OSwgMjE2LCAxNjEsIDU1LCAyMTAsIDg5LCAyMTYsIDE2MSwgNTYsIAotICAgIDIxMCwgODksIDI0MiwgODMsIDIwMiwgMTgsIDIzNiwgMTA1LCAyMTAsIDg5LCAyNDIsIDgzLCAyMDIsIDE4LCAyNTAsIDIxMSwgCi0gICAgMjEwLCA4OSwgMjM3LCA3MCwgNTUsIDIxMCwgODksIDIzNywgNzAsIDU2LCAyMTAsIDg5LCAyMzcsIDY5LCAyNDIsIDgyLCAKLSAgICAyMTAsIDg5LCAyNDEsIDExLCA1NSwgMjEwLCA4OSwgMjQxLCAxMSwgNTYsIDIxMCwgODksIDIxNSwgMTA5LCAyMTAsIDg5LCAKLSAgICAyNDAsIDQxLCAyNDMsIDg1LCAyMTAsIDg5LCAyMTcsIDI1LCAyMTAsIDg5LCAyMTUsIDEzNywgMjEwLCA4OSwgMTIwLCA4MCwgCi0gICAgMTg3LCA1NSwgMjEwLCA4OSwgMTIwLCA4MCwgMTg3LCA1NiwgMjEwLCA4OSwgMTI2LCAxODcsIDU1LCAyMTAsIDg5LCAxMjYsIAotICAgIDE4NywgNTYsIDIxMCwgODksIDIyMCwgODksIDIyNywgMTE1LCA1NSwgMjEwLCA4OSwgMjIwLCA4OSwgMjI3LCAxMTUsIDU2LCAKLSAgICAyMTAsIDg5LCAyMjMsIDE5NCwgMjEwLCA4OSwgMjQ4LCAyMjIsIDIxMCwgODksIDEsIDIxMiwgNCwgMjAyLCA3OCwgMjEwLCAKLSAgICA4OSwgMSwgMjEyLCA0LCAyMjksIDEzMywgMjEwLCA4OSwgMSwgMjEyLCA0LCAyNDAsIDYwLCAxMCwgMSwgMjQ4LCAxMzksIDMsIAotICAgIDEyNiwgMTg3LCAyMzYsIDU1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAxMjYsIDE4NywgCi0gICAgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgCi0gICAgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgMjQ4LCAxMjYsIDI1LCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgCi0gICAgMTIwLCAxODcsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDIzMCwgMjM5LCA1LCAyMDYsIAotICAgIDE2NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAxNTEsIDMsIDEyMCwgMTg3LCA1NSwgCi0gICAgMTAsIDEsIDE1MSwgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCAyNDQsIDE4NSwgMywgMTIwLCAxODcsIAotICAgIDIwNSwgMjQ0LCAyNDgsIDEyNiwgMjUsIDUsIDIwOSwgMjUxLCAxMCwgMSwgMjQ0LCAxODUsIDMsIDIzMCwgMjM5LCA1LCAKLSAgICAyMDYsIDE2NSwgNTYsIDEwLCAxLCAyMTYsIDEyMywgMywgOTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjM5LCAxNDcsIDE4NywgCi0gICAgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgMjE4LCAKLSAgICA1OSwgMTgzLCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxLCAyNDAsIDQ4LCAKLSAgICAzLCAxMjAsIDE4NywgNTYsIDEwLCAxLCAyNDAsIDQ4LCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIAotICAgIDIyOSwgMTkwLCAzLCA3MCwgNTUsIDEwLCAxLCAyMjksIDE5MCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI5LCAxOTAsIAotICAgIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgODMsIDMsIDcwLCA1NSwgMTAsIDEsIDgzLCAzLCA3MCwgCi0gICAgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgMTIwLCAxODcsIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDUsIDIwOSwgMjUxLCAKLSAgICAxMCwgMSwgMjIxLCAxNzksIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjI4LCAyOSwgMywgMTQyLCAxMCwgMSwgMjE2LCAxMjMsIAotICAgIDMsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMjE0LCAKLSAgICAxNjIsIDMsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTUsIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgNTYsIAotICAgIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDIxNCwgMTYyLCAzLCAKLSAgICA1LCAxMCwgMSwgMjA5LCAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMTAsIDEsIDIwOSwgCi0gICAgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMTUxLCAzLCA1LCAxMCwgMSwgMjA5LCAyNTIsIDU1LCAxMCwgMSwgMTM3LCAKLSAgICAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgMTM3LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIAotICAgIDE3LCAxMjYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAKLSAgICAxLCAyNDAsIDc1LCA4OSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTI2LCA1NSwgMTAsIDEsIDI0MCwgNzUsIDg5LCAKLSAgICAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAyMzksIDE0NywgNTYsIDEwLCAxLCAyMDQsIDcxLCAzLCAyNDAsIDIwMiwgCi0gICAgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgMjA0LCA3MSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTI2LCAKLSAgICA1NSwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIDEsIDg5LCAKLSAgICAyNDgsIDIyNCwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTI2LCA1NSwgMTAsIDEsIDE1MSwgMywgMjQwLCAyMDIsIAotICAgIDI1MCwgMTQwLCAxNywgMjM5LCAxNDcsIDU2LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIAotICAgIDIzOSwgMTQ3LCA1NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDEwLCAxLCAyMzAsIDIzLCAzLCAKLSAgICAxMjAsIDE4NywgNTUsIDIwOSwgMTA1LCAxLCAyMzcsIDE1NywgMjA5LCAxMDUsIDEsIDIxMywgNDksIDIwOSwgMTA1LCAxLCAKLSAgICAyMjEsIDE3NywgMjA5LCAxMDUsIDEsIDIxNiwgMjE2LCAyMDksIDEwNSwgMSwgMjQ5LCAzMCwgMjA5LCAxMDUsIDEsIDIyNywgCi0gICAgMTU4LCAyMDksIDEwNSwgMSwgMjMwLCAzNywgMjA5LCAxMDUsIDEsIDI1MSwgMTksIDIwOSwgMTA1LCAxLCAyMDYsIDg0LCAKLSAgICAyMDksIDEwNSwgMSwgMjI1LCA0LCAyMDksIDEwNSwgMSwgMjQwLCAxMDYsIDIwOSwgMTA1LCAxLCAyNDMsIDI1NSwgMjA5LCAKLSAgICAxMDUsIDEsIDIwOSwgMTA3LCAyMDksIDEwNSwgMSwgMjI4LCAxMDksIDIwOSwgMTA1LCAxLCAyMzksIDQsIDIwOSwgMTA1LCAKLSAgICAxLCAyMzgsIDQyLCAyMDksIDEwNSwgMSwgMjE0LCAxNjAsIDIwOSwgMTA1LCAxLCAyNDQsIDEzNiwgMjA5LCAxMDUsIDEsIAotICAgIDIwMiwgOTgsIDIwOSwgMTA1LCAxLCAyMDksIDIwMiwgMjA5LCAxMDUsIDEsIDIwMywgMTEwLCAyMDksIDEwNSwgMSwgMjE5LCAKLSAgICA0NywgMjA5LCAxMDUsIDEsIDIzMCwgMTY2LCAyMDksIDEwNSwgMSwgMjQ2LCAxNzMsIDIwOSwgMTA1LCAxLCAyMDcsIDI0MCwgCi0gICAgMjA5LCAxMDUsIDEsIDIzNywgMTEsIDIwOSwgMTA1LCAxLCAyMjksIDE0MywgMjA5LCAxMDUsIDEsIDIwOSwgMTA2LCAyMDksIAotICAgIDEwNSwgMSwgMjAyLCAxMTQsIDIwOSwgMTA1LCAxLCAyMTMsIDM4LCAyMDksIDEwNSwgMSwgMjE1LCAzMiwgMjA5LCAxMDUsIAotICAgIDEsIDI0NCwgMjEwLCAyMDksIDEwNSwgMSwgMTM1LCAyMDksIDEwNSwgMSwgMjAyLCAxNywgMjA5LCAxMDUsIDEsIDI1MSwgCi0gICAgNTYsIDIwOSwgMTA1LCAxLCAyMzgsIDExMywgMjA5LCAxMDUsIDEsIDIxNywgMTIzLCAyMDksIDEwNSwgMSwgMjA0LCAxMDksIAotICAgIDIwOSwgMTA1LCAyNTEsIDE0OCwgMjA5LCAxMDUsIDI1MSwgMjQ2LCAyMDksIDEwNSwgMjM1LCAxNjUsIDIwOSwgMTA1LCAKLSAgICAyNDEsIDE2MCwgMjA5LCAxMDUsIDIwNywgMzIsIDIwOSwgMTA1LCAyMjAsIDE3LCAyMDksIDEwNSwgMjQxLCAxNzAsIDIwOSwgCi0gICAgMTA1LCAyNDAsIDE5MywgMjA5LCAxMDUsIDIyMCwgODgsIDIwOSwgMTA1LCAyMjAsIDk2LCAyMDksIDEwNSwgMjEwLCAyMjIsIAotICAgIDIwOSwgMTA1LCAxLCAyMjMsIDEwNiwgMjIxLCAyNTUsIDE3LCAyMDIsIDg0LCAyMjEsIDI1NSwgMTcsIDEwNSwgMjIxLCAKLSAgICAyNTUsIDE3LCAxMDgsIDIyMSwgMjU1LCAxNywgMTQ3LCAyMjEsIDI1NSwgMTcsIDE0OSwgMjIxLCAyNTUsIDE3LCAxNzAsIAotICAgIDIyMSwgMjU1LCAxNywgMTk1LCAyMjEsIDI1NSwgMTcsIDIxMywgMTExLCAyMjEsIDI1NSwgMTcsIDE5OSwgMjIxLCAyNTUsIAotICAgIDE3LCAyMjIsIDYzLCAyMjEsIDI1NSwgMSwgNjMsIDIyMSwgMjU1LCAxLCAyNDEsIDE2MSwgMjIxLCAyNTUsIDEsIDc1LCAKLSAgICAyMjEsIDI1NSwgMSwgNzQsIDIyMSwgMjU1LCAxLCA2OCwgMjIxLCAyNTUsIDEsIDIyMCwgMTgsIDIyMSwgMjU1LCAxLCA3OCwgCi0gICAgMjIxLCAyNTUsIDEsIDI0NCwgMTk5LCAyMjEsIDI1NSwgMSwgMjIzLCAxNjMsIDIyMSwgMjU1LCAxLCAyNDksIDMyLCAyMjEsIAotICAgIDI1NSwgMSwgMTg1LCAyMjEsIDI1NSwgMSwgMjEwLCAyMiwgMjIxLCAyNTUsIDEsIDIzMCwgMTgxLCAyMjEsIDI1NSwgMSwgCi0gICAgMjQ2LCAxOTksIDIyMSwgMjU1LCAxLCAyNDQsIDIxMiwgMjIxLCAyNTUsIDEsIDIxNiwgMjIwLCAyMjEsIDI1NSwgMSwgMjE1LCAKLSAgICAxODUsIDIyMSwgMjU1LCAxLCAyMTUsIDM2LCAyMjEsIDI1NSwgMSwgMjM4LCAyMDcsIDIyMSwgMjU1LCAxLCAyNDAsIDEwOCwgCi0gICAgMjIxLCAyNTUsIDEsIDE3MywgMjIxLCAyNTUsIDEsIDIyOCwgMTEzLCAyMjEsIDI1NSwgMSwgMjIzLCAxMTEsIDIwMywgMjUyLCAKLSAgICAyMjEsIDI1NSwgMSwgMTkyLCAyMjEsIDI1NSwgMSwgMjIxLCAxMSwgMjIxLCAyNTUsIDEsIDIwMSwgMjAxLCAyMjEsIDI1NSwgCi0gICAgMSwgMTUyLCAyMjEsIDI1NSwgMSwgMjA0LCAxMTEsIDIyMSwgMjU1LCAxLCAxOTgsIDIyMSwgMjU1LCAxLCAyMjEsIDEyLCAKLSAgICAyMDMsIDI1MiwgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDIzMCwgMTgxLCAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjQ2LCAxOTksIAotICAgIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyMTYsIDIyMCwgMjIxLCAyNTUsIDM5LCAyMTIsIDIyOCwgMTM4LCAyMDgsIDE2MSwgCi0gICAgMjIxLCAyNTUsIDM5LCAyMTIsIDIyOCwgMTI0LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAyMTIsIDIyOCwgMjE1LCAyNDUsIAotICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMjQ0LCAxOSwgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAxMzgsIAotICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMTI0LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDIxNSwgMjQ1LCAKLSAgICAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAyMjMsIDcxLCA4MiwgMjIxLCAyNTUsIDM5LCA1MiwgNzAsIDU1LCAyMjEsIDI1NSwgCi0gICAgMTM4LCAxNDMsIDI1MCwgMTYwLCAyMjEsIDI1NSwgMTI0LCAxNDMsIDI1MCwgMTYwLCAyMjEsIDI1NSwgMTYsIDIyMCwgMTksIAotICAgIDI0NCwgMzMsIDIyMSwgMjU1LCAxNiwgMjM4LCAyMDYsIDIyMSwgMjU1LCAyNDUsIDIzMywgMjIxLCAyNTUsIDI0MCwgMjEyLCAKLSAgICA4MiwgMjIxLCAyNTUsIDIyOCwgODQsIDIxNCwgMjUyLCAxLCAyNTEsIDM3LCAyMTQsIDI1MiwgMSwgMjQ4LCA1MSwgMjE0LCAKLSAgICAyNTIsIDEsIDIzOCwgMjQwLCAyMTQsIDI1MiwgMSwgMjQ0LCAxODMsIDIxNCwgMjUyLCAxLCAyMzAsIDE5MiwgMjE0LCAyNTIsIAotICAgIDEsIDI0OSwgMzAsIDIxNCwgMjUyLCAxLCAyMDIsIDg3LCAyMTQsIDI1MiwgMSwgMjMwLCAyMDEsIDIxNCwgMjUyLCAxLCAKLSAgICAyMDgsIDIwMCwgMjE0LCAyNTIsIDEsIDIwMiwgMTgyLCAyMTQsIDI1MiwgMSwgMjMwLCAzOCwgMjE0LCAyNTIsIDEsIDIyOCwgCi0gICAgMTA2LCAyMTQsIDI1MiwgMSwgMjI0LCAxMTIsIDIxNCwgMjUyLCAxLCAyMjEsIDQwLCAyMTQsIDI1MiwgMSwgMjEyLCAxMjEsIAotICAgIDIxNCwgMjUyLCAxLCAyMzEsIDQ5LCAyMTQsIDI1MiwgMSwgMjQwLCAyNiwgMjE0LCAyNTIsIDEsIDIwOCwgMTgsIDIxNCwgCi0gICAgMjUyLCAxLCAyMTcsIDQ0LCAyMTQsIDI1MiwgMSwgMjE1LCAyNDYsIDIxNCwgMjUyLCAxLCAyMTMsIDY2LCAyMTQsIDI1MiwgCi0gICAgMSwgMjEwLCAxNywgMjE0LCAyNTIsIDEzMSwgMjMxLCA0OSwgMjE0LCAyNTIsIDEzMSwgMjMxLCA0OCwgMjE0LCAyNTIsIAotICAgIDEzMSwgMjIwLCA4NCwgMjE0LCAyNTIsIDEzMSwgMjQ0LCAxOTcsIDIxNCwgMjUyLCA2NSwgMSwgMjQxLCA0MiwgMjAyLCAKLSAgICAxODIsIDIxNCwgMjUyLCAxMzEsIDI0MSwgNDIsIDIwMiwgMTgyLCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNzQsIDIxNCwgCi0gICAgMjUyLCAyMiwgMiwgNzQsIDIxNCwgMjUyLCAyMiwgMiwgMjE5LCAxOTcsIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCAKLSAgICAyNTIsIDI1LCAyMTQsIDI1MiwgMjIsIDIsIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMjE5LCAxOTcsIDYzLCAyMTQsIAotICAgIDI1MiwgMjIsIDIsIDE2MywgNjMsIDIxNCwgMjUyLCAyMiwgMiwgNjMsIDIxNCwgMjUyLCA2NSwgMSwgMjEyLCAyMjgsIDYzLCAKLSAgICAyMTQsIDI1MiwgMjIsIDIsIDIxMiwgMjI4LCA2MywgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIDY4LCAyMTQsIDI1MiwgMjIsIDIsIAotICAgIDY4LCAyMTQsIDI1MiwgNjUsIDEsIDc1LCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNzUsIDIxNCwgMjUyLCAyMiwgMiwgNzUsIAotICAgIDIxNCwgMjUyLCAyMiwgMiwgNzgsIDIxNCwgMjUyLCAyMiwgMiwgMjEwLCAyMjIsIDIxNCwgMjUyLCAxMzEsIDIyMiwgMjIzLCAKLSAgICAyMTQsIDI1MiwgMjE3LCAxNzksIDIyMiwgMjIzLCAyMTQsIDI1MiwgMjE3LCAxNzksIDI1MSwgODMsIDIxNCwgMjUyLCAyMTcsIAotICAgIDE3OSwgMjUwLCAyMjIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjQ4LCAyMDIsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjUwLCA0NCwgCi0gICAgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTIsIDI0MywgMjE0LCAyNTIsIDI1MSwgMTQ2LCA4MiwgMjE0LCAyNTIsIDIxNywgMTc5LCAKLSAgICAyMjQsIDI1MCwgMjE3LCA4MCwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDIsIDI1LCAyMTQsIDI1MiwgMjE3LCAxNzksIDIxNywgCi0gICAgODAsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjAyLCAxMTMsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjA3LCAxNzAsIDIxNCwgMjUyLCAKLSAgICAyMTcsIDE3OSwgMjUwLCAxMTEsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjEyLCA4LCAyMjUsIDc3LCAyMTQsIDI1MiwgMjE3LCAKLSAgICAxNzksIDI1MCwgMjA2LCAyMjUsIDExOCwgMSwgMjM3LCAxMzQsIDIyNSwgMTE4LCAxLCAyNTEsIDIzMiwgMjI1LCAxMTgsIDEsIAotICAgIDI1MSwgODEsIDIyNSwgMTE4LCAxLCAyNTEsIDEyMiwgMjI1LCAxMTgsIDEsIDI1MSwgNzMsIDIyNSwgMTE4LCAxLCAyMDYsIAotICAgIDE4NCwgMjI1LCAxMTgsIDEsIDI1MCwgMSwgMjI1LCAxMTgsIDEsIDIzMCwgMjAxLCAyMjUsIDExOCwgMSwgMjUwLCA0MSwgCi0gICAgMjI1LCAxMTgsIDEsIDI1MSwgNDIsIDIyNSwgMTE4LCAxLCAyNTEsIDQ3LCAyMjUsIDExOCwgMSwgMjUxLCAzOSwgMjI1LCAKLSAgICAxMTgsIDEsIDI1MCwgMjQ3LCAyMjUsIDExOCwgMSwgMjUwLCAyMzEsIDIyNSwgMTE4LCAxLCAyNTAsIDgxLCAyMjUsIDExOCwgCi0gICAgMSwgMjMxLCA0OSwgMjI1LCAxMTgsIDEsIDI1MCwgMTc1LCAyMjUsIDExOCwgMSwgMjUwLCA1MSwgMjI1LCAxMTgsIDEsIAotICAgIDI1MCwgMTQ4LCAyMjUsIDExOCwgMSwgMjUwLCAxNDQsIDIyNSwgMTE4LCAxLCAyNTAsIDc1LCAyMjUsIDExOCwgMSwgMjUwLCAKLSAgICA0OSwgMjI1LCAxMTgsIDEsIDI0MiwgMTgsIDIyNSwgMTE4LCAxLCAyMzAsIDMwLCAyMjUsIDExOCwgMSwgMjUxLCA1OSwgCi0gICAgMjI1LCAxMTgsIDI1MSwgODcsIDgyLCAyMjUsIDExOCwgMjA1LCAxODcsIDgyLCAyMjUsIDExOCwgMjM4LCAxNzksIDgyLCAKLSAgICAyMjUsIDExOCwgMjE3LCAxNzgsIDEwLCAxLCAyNDgsIDEzOSwgMywgNSwgMjA2LCAxNjUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIAotICAgIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDE4NCwgMywgMTIwLCAxODcsIDU1LCAxMCwgMSwgMjA5LCAyNTIsIDMsIDEyMCwgCi0gICAgMTg3LCA1NSwgMTAsIDEsIDI0MCwgNDgsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIxNywgCi0gICAgMTIwLCAzLCA3MCwgNTYsIDEwLCAxLCAyMjgsIDI5LCAzLCA1MiwgMTQyLCAxMCwgMSwgODMsIDMsIDEyNiwgMTg3LCA1NSwgCi0gICAgMTAsIDEsIDg5LCAzLCAxMjAsIDE4NywgMjQ4LCAxMjYsIDI1LCAyMzcsIDEyOCwgNTUsIDEwLCAxLCA4OSwgMywgMTIwLCAKLSAgICAxODcsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCAxMCwgMSwgMjE2LCAxMjMsIDMsIDIyNywgMTQsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICAzLCA3MCwgMjA0LCA0LCAxMCwgMSwgMjE1LCAyMTUsIDIwMywgNDcsIDEwLCAxLCAxMjQsIDI1MSwgMzAsIDEwLCAxLCAyNDQsIAotICAgIDE4NSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjE1LCAyOSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjM4LCAyNTIsIAotICAgIDMsIDIzMCwgMjM5LCA5NSwgMTAsIDEsIDIxMSwgNTMsIDIwNCwgNzAsIDEwLCAxLCAyMDIsIDEwOCwgMywgMjMwLCAyMzksIAotICAgIDIwNiwgMTY1LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCA1NiwgMTAsIDEsIDIzMCwgMjMsIDMsIDcwLCA1NiwgCi0gICAgMTAsIDIwNywgMTc0LCAyNDQsIDE3MywgNTYsIDEwLCAyNDUsIDkzLCAyNDAsIDcxLCAxMCwgMjQ1LCA5MywgMjQ0LCAxNzIsIAotICAgIDEwLCAyNDUsIDkzLCAyMjksIDIyOSwgMTAsIDI0NSwgOTMsIDI0MCwgNjksIDEwLCAyNDUsIDkzLCAyNDQsIDE3MCwgMTAsIAotICAgIDI0NSwgOTMsIDIyOSwgMjI3LCAxMCwgMTQzLCAxMTgsIDcwLCA1NSwgMTAsIDE0MywgMTIwLCAxODcsIDU1LCAxMCwgMTQzLCAKLSAgICAyMjcsIDE1LCA1NSwgMTAsIDE0MywgMTE4LCA3MCwgNTYsIDEwLCAxNDMsIDEyMCwgMTg3LCA1NiwgMTAsIDE0MywgMjI3LCAKLSAgICAxNSwgNTYsIDEwLCAxNzEsIDI0MCwgNjksIDEwLCAxNzEsIDI0NCwgMTcwLCAxMCwgMTcxLCAyMjksIDIyNywgMTAsIDUsIAotICAgIDEzOCwgMjA0LCA3MCwgMTAsIDI0MCwgNzIsIDMsIDIxNSwgMjUyLCAxMCwgMjQwLCA3MiwgMywgNzAsIDU1LCAxMCwgMjI5LCAKLSAgICAyMzAsIDMsIDcwLCA1NiwgMTAsIDQ5LCAyNTAsIDk1LCA1NSwgMTAsIDUwLCAyNTAsIDk1LCA1NSwgMTAsIDQ5LCAyNTAsIAotICAgIDk1LCA1NiwgMTAsIDUwLCAyNTAsIDk1LCA1NiwgMTAsIDUyLCA1MCwgMjUwLCA5NSwgNTUsIDEwLCA1MiwgNTAsIDI1MCwgCi0gICAgOTUsIDg3LCAzLCAyNDMsIDg1LCAxMCwgNTAsIDI1MCwgOTUsIDg3LCAzLCAyNDMsIDg1LCAxMCwgMjQ0LCAxNzMsIDMsIAotICAgIDI0MywgODUsIDEwLCAxMzEsIDIxMiwgMTU0LCAyMjEsIDE3OSwgMjM4LCA4NSwgOTIsIDIsIDIzMCwgMjM5LCAyNDcsIDUyLCAKLSAgICA5MiwgMiwgMjQ3LCA1MiwgOTIsIDIsIDI1MCwgMTgwLCA5MiwgMiwgMjA1LCAxOTksIDkyLCAxLCAyMTIsIDIyOCwgNjMsIAotICAgIDkyLCAxLCA2MywgOTIsIDEsIDI1MiwgMjUsIDkyLCAxLCA3NSwgOTIsIDEsIDIzMSwgODMsIDkyLCAxLCA2OCwgOTIsIDEsIAotICAgIDIwNiwgMTc4LCA5MiwgMSwgMTI1LCAxNDYsIDkyLCAxLCAxMjUsIDE1OSwgOTIsIDEsIDI0NywgNTUsIDc0LCA5MiwgMSwgCi0gICAgMjEyLCAyMjgsIDc0LCA5MiwgMSwgNzQsIDkyLCAxLCAyNTEsIDY0LCA5MiwgMSwgMjQ3LCA1NSwgNzgsIDkyLCAxLCAyMTIsIAotICAgIDIyOCwgNzgsIDkyLCAxLCA3OCwgOTIsIDEsIDI1MCwgMzQsIDkyLCAxLCAxNzMsIDkyLCAxLCAyMjksIDE0NCwgOTIsIDEsIAotICAgIDIzOSwgOCwgOTIsIDEsIDIzOCwgMTE5LCA5MiwgMSwgMjIyLCAyMDMsIDkyLCAxLCAyNDcsIDkyLCA5MiwgMSwgMjQ2LCAKLSAgICAxOTksIDkyLCAxLCAyMzAsIDE4MSwgOTIsIDEsIDIzMCwgMTQ5LCA5MiwgMSwgMjIxLCAxMSwgOTIsIDEsIDIwNywgMjQxLCAKLSAgICA5MiwgMSwgMjA3LCAyMjksIDkyLCAxLCAyNDQsIDEyMCwgOTIsIDEsIDI0NCwgMTA0LCA5MiwgMSwgMjIxLCAyMjcsIDkyLCAKLSAgICAxLCAyMTAsIDIyLCA5MiwgMSwgMjA5LCAxMDgsIDkyLCAxLCAyNDQsIDIxMiwgOTIsIDEsIDI0NCwgMSwgOTIsIDEsIDIwMSwgCi0gICAgMjAxLCA5MiwgMSwgMjIxLCAyMDksIDkyLCAxLCAxODUsIDkyLCAxLCAyMTgsIDIwOCwgOTIsIDEsIDI0OSwgMzIsIDkyLCAxLCAKLSAgICAyNDgsIDk4LCA5MiwgMSwgMTkyLCA5MiwgMSwgMTk4LCA5MiwgMSwgMjE2LCAyMjAsIDkyLCAxLCAyMTUsIDE4NSwgOTIsIDEsIAotICAgIDIyOCwgMTEzLCA5MiwgMSwgMjI3LCA3NywgOTIsIDEsIDIyNywgNjgsIDkyLCAxLCAyMDYsIDg2LCA5MiwgMSwgMjEzLCA5MCwgCi0gICAgOTIsIDEsIDIxMSwgMTY0LCA5MiwgMSwgMjE1LCAzNiwgOTIsIDEsIDE1MiwgOTIsIDIyLCAyLCAyMjAsIDczLCA5MiwgMjIsIAotICAgIDIsIDIyMCwgMTYsIDkyLCAyLCAyMjEsIDUxLCA5MiwgMiwgMjUwLCAxNywgOTIsIDIyLCAyLCAyNTIsIDI1LCA5MiwgMjIsIAotICAgIDIsIDc1LCA5MiwgMjIsIDIsIDIzMSwgODMsIDkyLCAyMiwgMiwgNjgsIDkyLCAyMiwgMiwgMjA2LCAxNzgsIDkyLCAyMiwgMiwgCi0gICAgMTI1LCAxNDYsIDkyLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgOTIsIDIyLCAyLCAyNDcsIDU1LCA3NCwgOTIsIDIyLCAyLCAKLSAgICAyMTIsIDIyOCwgNzQsIDkyLCAyMiwgMiwgNzQsIDkyLCAyMiwgMiwgMjUxLCA2NCwgOTIsIDIyLCAyLCAyNDcsIDU1LCA3OCwgCi0gICAgOTIsIDIyLCAyLCAyMTIsIDIyOCwgNzgsIDkyLCAyMiwgMiwgNzgsIDkyLCAyMiwgMiwgMjUwLCAzNCwgOTIsIDIsIDIwNSwgCi0gICAgMjA0LCA5MiwgMjIsIDIsIDIxNywgMjI5LCA3NCwgOTIsIDIyLCAyLCAyNTAsIDEzLCA5MiwgMjIwLCAzOSwgOTIsIDIxMSwgCi0gICAgNDIsIDIsIDIwNywgMjYsIDkyLCAyMTEsIDQyLCAyLCAyNTAsIDE4MiwgOTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgOTIsIAotICAgIDI1MSwgMTI2LCAyNTEsIDEzOCwgOTIsIDIyLCAyLCAyNDcsIDU1LCAxNjMsIDc0LCA5MiwgMjIsIDIsIDIwNywgMjQsIDkyLCAKLSAgICAyMiwgMiwgMjA2LCAxNzcsIDkyLCAxLCAyMTcsIDEyNiwgOTIsIDEsIDIyOSwgMTI1LCA5MiwgMSwgMjM4LCA5NCwgOTIsIDEsIAotICAgIDIwMiwgMTE2LCA5MiwgMSwgMjQ0LCAxMDksIDkyLCAxLCAyMTYsIDYxLCA5MiwgMSwgMjQwLCAxMDgsIDkyLCAxLCAyMDIsIAotICAgIDE2OCwgOTIsIDEsIDEyNSwgMjE1LCAxODYsIDkyLCAxLCAxMjUsIDIyNywgNzgsIDkyLCAyMiwgMiwgMTI1LCAxNTksIDkyLCAKLSAgICAyMiwgMiwgMTI1LCAyMjcsIDc4LCA5MiwgMjQ0LCAxNjYsIDkyLCA1MiwgMjQ0LCAxNjYsIDkyLCAxNywgMjAyLCA4NCwgOTIsIAotICAgIDE3LCAxMDUsIDkyLCAxNywgMTA4LCA5MiwgMTcsIDE0NywgOTIsIDE3LCAxNDksIDkyLCAxNywgMTcwLCA5MiwgMTcsIDE5NSwgCi0gICAgOTIsIDE3LCAyMTMsIDExMSwgOTIsIDE3LCAxOTksIDkyLCAxNywgMjIyLCA2MywgOTIsIDI1MSwgMTQ2LCA1NCwgOTIsIDIsIAotICAgIDEzOCwgMjExLCAyMjcsIDI0MywgODUsIDkyLCAxLCAyNDcsIDU1LCA2MywgOTIsIDEsIDIyMCwgNzMsIDkyLCAxLCAyMjAsIAotICAgIDE2LCA5MiwgMSwgMjUwLCAxMywgOTIsIDEsIDIwNywgMjQsIDkyLCAxLCAyMDYsIDE3NywgOTIsIDEsIDIyNSwgODIsIDI0NCwgCi0gICAgMTIwLCA5MiwgMSwgMjAyLCA4MCwgOTIsIDEsIDc5LCAxOTgsIDkyLCAxLCAyMzgsIDE1NSwgOTIsIDEsIDIzMCwgMTI5LCAKLSAgICA5MiwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOTIsIDEsIDI0NCwgMTEwLCA5MiwgMSwgMjQ4LCAxOTgsIDE3OSwgMjUwLCAyMDksIAotICAgIDE3OSwgMiwgMjQ3LCA1MiwgMTc5LCAyLCAyNTAsIDE4MCwgMTc5LCAyLCAyMDUsIDE5OSwgMTc5LCAxLCA2MywgMTc5LCAxLCAKLSAgICAyNTIsIDI1LCAxNzksIDEsIDc1LCAxNzksIDEsIDIzMSwgODMsIDE3OSwgMSwgNjgsIDE3OSwgMSwgMjA2LCAxNzgsIDE3OSwgCi0gICAgMSwgMTI1LCAxNDYsIDE3OSwgMSwgMTI1LCAxNTksIDE3OSwgMSwgNzQsIDE3OSwgMSwgMjUxLCA2NCwgMTc5LCAxLCA3OCwgCi0gICAgMTc5LCAxLCAyNTAsIDM0LCAxNzksIDEsIDE3MywgMTc5LCAxLCAyMjksIDE0NCwgMTc5LCAxLCAyMzksIDgsIDE3OSwgMSwgCi0gICAgMjM4LCAxMTksIDE3OSwgMSwgMjIyLCAyMDMsIDE3OSwgMSwgMjQ3LCA5MiwgMTc5LCAxLCAyNDYsIDE5OSwgMTc5LCAxLCAKLSAgICAyMzAsIDE4MSwgMTc5LCAxLCAyMzAsIDE0OSwgMTc5LCAxLCAyMjEsIDExLCAxNzksIDEsIDIwNywgMjQxLCAxNzksIDEsIAotICAgIDIwNywgMjI5LCAxNzksIDEsIDI0NCwgMTIwLCAxNzksIDEsIDI0NCwgMTA0LCAxNzksIDEsIDIyMSwgMjI3LCAxNzksIDEsIAotICAgIDIxMCwgMjIsIDE3OSwgMSwgMjA5LCAxMDgsIDE3OSwgMSwgMjQ0LCAyMTIsIDE3OSwgMSwgMjQ0LCAxLCAxNzksIDEsIDIwMSwgCi0gICAgMjAxLCAxNzksIDEsIDE4NSwgMTc5LCAxLCAyMTgsIDIwOCwgMTc5LCAxLCAyNDksIDMyLCAxNzksIDEsIDI0OCwgOTgsIAotICAgIDE3OSwgMSwgMTkyLCAxNzksIDEsIDE5OCwgMTc5LCAxLCAyMTYsIDIyMCwgMTc5LCAxLCAyMjgsIDExMywgMTc5LCAxLCAKLSAgICAyMTMsIDkwLCAxNzksIDEsIDIxMSwgMTY0LCAxNzksIDEsIDIxNSwgMzYsIDE3OSwgMSwgMTUyLCAxNzksIDIsIDIyMSwgNTEsIAotICAgIDE3OSwgMiwgMjUwLCAxNywgMTc5LCAyMiwgMiwgMjUyLCAyNSwgMTc5LCAyMiwgMiwgNzUsIDE3OSwgMjIsIDIsIDIzMSwgCi0gICAgODMsIDE3OSwgMjIsIDIsIDY4LCAxNzksIDIyLCAyLCAyMDYsIDE3OCwgMTc5LCAyMiwgMiwgMTI1LCAxNDYsIDE3OSwgMjIsIAotICAgIDIsIDEyNSwgMjE1LCAxODYsIDE3OSwgMjIsIDIsIDc0LCAxNzksIDIyLCAyLCAyNTEsIDY0LCAxNzksIDIyLCAyLCA3OCwgCi0gICAgMTc5LCAyMiwgMiwgMjUwLCAzNCwgMTc5LCAyLCAyMDUsIDIwNCwgMTc5LCAxLCAyMjksIDEzNSwgMjEwLCAyMiwgMTc5LCAKLSAgICAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDE3OSwgMSwgMjE1LCAxODUsIDE3OSwgMSwgMjE2LCA2MSwgMTc5LCAxLCAyMDIsIAotICAgIDE2OCwgMTc5LCAxLCAxMjUsIDIxNSwgMTg2LCAxNzksIDEsIDEyNSwgMjI3LCA3OCwgMTc5LCAyMiwgMiwgMTI1LCAxNTksIAotICAgIDE3OSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTc5LCAxNywgMjAyLCA4NCwgMTc5LCAxNywgMTA1LCAxNzksIDE3LCAxMDgsIAotICAgIDE3OSwgMTcsIDE0NywgMTc5LCAxNywgMTQ5LCAxNzksIDE3LCAxNzAsIDE3OSwgMTcsIDE5NSwgMTc5LCAxNywgMjEzLCAKLSAgICAxMTEsIDE3OSwgMTcsIDE5OSwgMTc5LCAxNywgMjIyLCA2MywgMTc5LCAxLCAyMTYsIDIyMSwgMywgMTAxLCAyNDMsIDIyNywgCi0gICAgMTc5LCAxLCAyMTYsIDIyMSwgMywgMjI2LCAyNTEsIDI0MywgMjI3LCAxNzksIDIxNSwgMTIwLCA4MiwgMTc5LCAyMTUsIAotICAgIDEyMCwgNTQsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTA1LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIDEwOCwgMTc5LCAKLSAgICAyNDUsIDkyLCAyMjEsIDQzLCAxNDcsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTQ5LCAxNzksIDI0NSwgOTIsIDIyMSwgNDMsIAotICAgIDExOCwgMjI3LCAxODAsIDIwOSwgOTgsIDIwOSwgOTMsIDI0NCwgMzEsIDE3OSwgMjQ1LCA5MiwgMjQ0LCAzMiwgMjEyLCA4MiwgCi0gICAgMTc5LCAyMzAsIDIwMiwgMTc5LCAyMzgsIDIzMSwgODIsIDIzNywgMTk4LCAyLCAyNTEsIDEyMSwgMjQ4LCA2NiwgMjM3LCAKLSAgICAxOTgsIDIsIDI0OCwgNjYsIDIzNywgMTk4LCAyLCAyMDUsIDE5OSwgMjM3LCAxOTgsIDEsIDYzLCAyMzcsIDE5OCwgMSwgCi0gICAgMjUyLCAyNSwgMjM3LCAxOTgsIDEsIDc1LCAyMzcsIDE5OCwgMSwgMjMxLCA4MywgMjM3LCAxOTgsIDEsIDY4LCAyMzcsIAotICAgIDE5OCwgMSwgMjA2LCAxNzgsIDIzNywgMTk4LCAxLCAyNDEsIDE2MSwgMjM3LCAxOTgsIDEsIDI1MSwgNjQsIDIzNywgMTk4LCAKLSAgICAxLCAyMjAsIDE4LCAyMzcsIDE5OCwgMSwgMjUwLCAzNCwgMjM3LCAxOTgsIDEsIDE3MywgMjM3LCAxOTgsIDEsIDIyOSwgCi0gICAgMTQ0LCAyMzcsIDE5OCwgMSwgMjM5LCA4LCAyMzcsIDE5OCwgMSwgMjM4LCAxMTksIDIzNywgMTk4LCAxLCAyMjIsIDIwMywgCi0gICAgMjM3LCAxOTgsIDEsIDI0NywgOTIsIDIzNywgMTk4LCAxLCAyNDYsIDE5OSwgMjM3LCAxOTgsIDEsIDIzMCwgMTgxLCAyMzcsIAotICAgIDE5OCwgMSwgMjMwLCAxNDksIDIzNywgMTk4LCAxLCAyMjEsIDExLCAyMzcsIDE5OCwgMSwgMjA3LCAyNDEsIDIzNywgMTk4LCAKLSAgICAxLCAyMDcsIDIyOSwgMjM3LCAxOTgsIDEsIDI0NCwgMTIwLCAyMzcsIDE5OCwgMSwgMjQ0LCAxMDQsIDIzNywgMTk4LCAxLCAKLSAgICAyMjEsIDIyNywgMjM3LCAxOTgsIDEsIDIxMCwgMjIsIDIzNywgMTk4LCAxLCAyMDksIDEwOCwgMjM3LCAxOTgsIDEsIDI0NCwgCi0gICAgMjEyLCAyMzcsIDE5OCwgMSwgMjQ0LCAxLCAyMzcsIDE5OCwgMSwgMjAxLCAyMDEsIDIzNywgMTk4LCAxLCAxODUsIDIzNywgCi0gICAgMTk4LCAxLCAyMTgsIDIwOCwgMjM3LCAxOTgsIDEsIDI0OSwgMzIsIDIzNywgMTk4LCAxLCAyNDgsIDk4LCAyMzcsIDE5OCwgCi0gICAgMSwgMTkyLCAyMzcsIDE5OCwgMSwgMTk4LCAyMzcsIDE5OCwgMSwgMjE2LCAyMjAsIDIzNywgMTk4LCAxLCAyMjgsIDExMywgCi0gICAgMjM3LCAxOTgsIDEsIDIyNywgNzcsIDIzNywgMTk4LCAxLCAyMDYsIDg2LCAyMzcsIDE5OCwgMSwgMjEzLCA5MCwgMjM3LCAKLSAgICAxOTgsIDEsIDIxNSwgMzYsIDIzNywgMTk4LCAxLCAxNTIsIDIzNywgMTk4LCAyLCAyMjEsIDUxLCAyMzcsIDE5OCwgMjIsIDIsIAotICAgIDI1MiwgMjUsIDIzNywgMTk4LCAyMiwgMiwgNzUsIDIzNywgMTk4LCAyMiwgMiwgMjMxLCA4MywgMjM3LCAxOTgsIDIyLCAyLCAKLSAgICA2OCwgMjM3LCAxOTgsIDIyLCAyLCAyMDYsIDE3OCwgMjM3LCAxOTgsIDIyLCAyLCAyNDEsIDE2MSwgMjM3LCAxOTgsIDIyLCAKLSAgICAyLCAyNTEsIDY0LCAyMzcsIDE5OCwgMjIsIDIsIDIyMCwgMTgsIDIzNywgMTk4LCAyMiwgMiwgMjUwLCAzNCwgMjM3LCAxOTgsIAotICAgIDIsIDIwNSwgMjA0LCAyMzcsIDE5OCwgMiwgMjA3LCAyOCwgMjM3LCAxOTgsIDEsIDIyOSwgMTI1LCAyMzcsIDE5OCwgMSwgCi0gICAgMjM4LCA5NCwgMjM3LCAxOTgsIDEsIDIwMiwgMTE2LCAyMzcsIDE5OCwgMSwgMjE1LCAxODUsIDIzNywgMTk4LCAxLCAyNDAsIAotICAgIDEwOCwgMjM3LCAxOTgsIDE3LCAyMDIsIDg0LCAyMzcsIDE5OCwgMTcsIDEwNSwgMjM3LCAxOTgsIDE3LCAxMDgsIDIzNywgCi0gICAgMTk4LCAxNywgMTQ3LCAyMzcsIDE5OCwgMTcsIDE0OSwgMjM3LCAxOTgsIDE3LCAxNzAsIDIzNywgMTk4LCAxNywgMTk1LCAKLSAgICAyMzcsIDE5OCwgMTcsIDIxMywgMTExLCAyMzcsIDE5OCwgMTcsIDE5OSwgMjM3LCAxOTgsIDE3LCAyMjIsIDYzLCAyMzcsIAotICAgIDE5OCwgMjA4LCAyMDgsIDIzNywgMTk4LCAyNTEsIDEyMCwgMjM3LCAxOTgsIDIzMCwgMjIyLCAyMzcsIDE5OCwgMjA2LCAKLSAgICAyMDYsIDIzNywgMTk4LCAyNDEsIDEzMCwgMjIwLCAyMywgMjM3LCAxOTgsIDIsIDIwMywgODUsIDIzNywgMjEzLCAyLCAyNDcsIAotICAgIDUyLCAyMzcsIDIxMywgMiwgMjUwLCAxODAsIDIzNywgMjEzLCAyLCAyMDUsIDE5OSwgMjM3LCAyMTMsIDEsIDYzLCAyMzcsIAotICAgIDIxMywgMSwgMjUyLCAyNSwgMjM3LCAyMTMsIDEsIDc1LCAyMzcsIDIxMywgMSwgMjMxLCA4MywgMjM3LCAyMTMsIDEsIDY4LCAKLSAgICAyMzcsIDIxMywgMSwgMjA2LCAxNzgsIDIzNywgMjEzLCAxLCAxMjUsIDE0NiwgMjM3LCAyMTMsIDEsIDEyNSwgMTU5LCAyMzcsIAotICAgIDIxMywgMjIsIDI0NywgNTUsIDc0LCAyMzcsIDIxMywgMSwgNzQsIDIzNywgMjEzLCAxLCAyNTEsIDY0LCAyMzcsIDIxMywgCi0gICAgMjIsIDI0NywgNTUsIDc4LCAyMzcsIDIxMywgMSwgNzgsIDIzNywgMjEzLCAxLCAyNTAsIDM0LCAyMzcsIDIxMywgMSwgMTczLCAKLSAgICAyMzcsIDIxMywgMSwgMjI5LCAxNDQsIDIzNywgMjEzLCAxLCAyMzksIDgsIDIzNywgMjEzLCAxLCAyMzgsIDExOSwgMjM3LCAKLSAgICAyMTMsIDEsIDIyMiwgMjAzLCAyMzcsIDIxMywgMSwgMjQ3LCA5MiwgMjM3LCAyMTMsIDEsIDI0NiwgMTk5LCAyMzcsIDIxMywgCi0gICAgMSwgMjMwLCAxODEsIDIzNywgMjEzLCAxLCAyMzAsIDE0OSwgMjM3LCAyMTMsIDEsIDIyMSwgMTEsIDIzNywgMjEzLCAxLCAKLSAgICAyMDcsIDI0MSwgMjM3LCAyMTMsIDEsIDIwNywgMjI5LCAyMzcsIDIxMywgMSwgMjQ0LCAxMjAsIDIzNywgMjEzLCAxLCAyNDQsIAotICAgIDEwNCwgMjM3LCAyMTMsIDEsIDIyMSwgMjI3LCAyMzcsIDIxMywgMSwgMjEwLCAyMiwgMjM3LCAyMTMsIDEsIDIwOSwgMTA4LCAKLSAgICAyMzcsIDIxMywgMSwgMjQ0LCAyMTIsIDIzNywgMjEzLCAxLCAyNDQsIDEsIDIzNywgMjEzLCAxLCAyMDEsIDIwMSwgMjM3LCAKLSAgICAyMTMsIDEsIDE4NSwgMjM3LCAyMTMsIDEsIDIxOCwgMjA4LCAyMzcsIDIxMywgMSwgMjQ5LCAzMiwgMjM3LCAyMTMsIDEsIAotICAgIDI0OCwgOTgsIDIzNywgMjEzLCAxLCAxOTIsIDIzNywgMjEzLCAxLCAxOTgsIDIzNywgMjEzLCAxLCAyMTYsIDIyMCwgMjM3LCAKLSAgICAyMTMsIDEsIDIyOCwgMTEzLCAyMzcsIDIxMywgMSwgMjI3LCA3NywgMjM3LCAyMTMsIDEsIDIwNiwgODYsIDIzNywgMjEzLCAKLSAgICAxLCAyMTMsIDkwLCAyMzcsIDIxMywgMSwgMjExLCAxNjQsIDIzNywgMjEzLCAxLCAyMTUsIDM2LCAyMzcsIDIxMywgMSwgCi0gICAgMTUyLCAyMzcsIDIxMywgMiwgMjIxLCA1MSwgMjM3LCAyMTMsIDIsIDI1MCwgMTcsIDIzNywgMjEzLCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgMjM3LCAyMTMsIDIyLCAyLCA3NSwgMjM3LCAyMTMsIDIyLCAyLCAyMzEsIDgzLCAyMzcsIDIxMywgMjIsIDIsIDY4LCAKLSAgICAyMzcsIDIxMywgMjIsIDIsIDIwNiwgMTc4LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgMTQ2LCAyMzcsIDIxMywgMjIsIDIsIAotICAgIDEyNSwgMjE1LCAxODYsIDIzNywgMjEzLCAyMiwgMiwgMjQ3LCA1NSwgNzQsIDIzNywgMjEzLCAyMiwgMiwgNzQsIDIzNywgCi0gICAgMjEzLCAyMiwgMiwgMjUxLCA2NCwgMjM3LCAyMTMsIDIyLCAyLCAyNDcsIDU1LCA3OCwgMjM3LCAyMTMsIDIyLCAyLCA3OCwgCi0gICAgMjM3LCAyMTMsIDIyLCAyLCAyNTAsIDM0LCAyMzcsIDIxMywgMiwgMjA1LCAyMDQsIDIzNywgMjEzLCAyMjAsIDM5LCAyMzcsIAotICAgIDIxMywgMSwgMTI1LCAyMTUsIDE4NiwgMjM3LCAyMTMsIDEsIDEyNSwgMjI3LCA3OCwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIAotICAgIDE1OSwgMjM3LCAyMTMsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIzNywgMjEzLCAxNywgMjAyLCA4NCwgMjM3LCAyMTMsIDE3LCAKLSAgICAxMDUsIDIzNywgMjEzLCAxNywgMTA4LCAyMzcsIDIxMywgMTcsIDE0NywgMjM3LCAyMTMsIDE3LCAxNDksIDIzNywgMjEzLCAKLSAgICAxNywgMTcwLCAyMzcsIDIxMywgMTcsIDE5NSwgMjM3LCAyMTMsIDE3LCAyMTMsIDExMSwgMjM3LCAyMTMsIDE3LCAxOTksIAotICAgIDIzNywgMjEzLCAxNywgMjIyLCA2MywgMjM3LCAyMTMsIDI1MSwgMTQ2LCA1NCwgMjM3LCAyMTMsIDIxNSwgMTIwLCA1NCwgCi0gICAgMjM3LCAyMTMsIDEsIDIwMiwgODAsIDE5MywgMiwgMjQ3LCA1MiwgMTkzLCAyLCAyNTAsIDE4MCwgMTkzLCAyLCAyMDUsIAotICAgIDE5OSwgMTkzLCAxLCA2MywgMTkzLCAxLCAyNTIsIDI1LCAxOTMsIDEsIDc1LCAxOTMsIDEsIDIzMSwgODMsIDE5MywgMSwgCi0gICAgNjgsIDE5MywgMSwgMjA2LCAxNzgsIDE5MywgMSwgMTI1LCAxNDYsIDE5MywgMSwgMTI1LCAxNTksIDE5MywgMSwgNzQsIAotICAgIDE5MywgMSwgMjUxLCA2NCwgMTkzLCAxLCA3OCwgMTkzLCAxLCAyNTAsIDM0LCAxOTMsIDEsIDE3MywgMTkzLCAxLCAyMjksIAotICAgIDE0NCwgMTkzLCAxLCAyMzksIDgsIDE5MywgMSwgMjM4LCAxMTksIDE5MywgMSwgMjIyLCAyMDMsIDE5MywgMSwgMjQ3LCA5MiwgCi0gICAgMTkzLCAxLCAyNDYsIDE5OSwgMTkzLCAxLCAyMzAsIDE4MSwgMTkzLCAxLCAyMzAsIDE0OSwgMTkzLCAxLCAyMjEsIDExLCAKLSAgICAxOTMsIDEsIDIwNywgMjQxLCAxOTMsIDEsIDIwNywgMjI5LCAxOTMsIDEsIDI0NCwgMTIwLCAxOTMsIDEsIDI0NCwgMTA0LCAKLSAgICAxOTMsIDEsIDIyMSwgMjI3LCAxOTMsIDEsIDIxMCwgMjIsIDE5MywgMSwgMjA5LCAxMDgsIDE5MywgMSwgMjQ0LCAyMTIsIAotICAgIDE5MywgMSwgMjQ0LCAxLCAxOTMsIDEsIDIwMSwgMjAxLCAxOTMsIDEsIDE4NSwgMTkzLCAxLCAyMTgsIDIwOCwgMTkzLCAxLCAKLSAgICAyNDksIDMyLCAxOTMsIDEsIDI0OCwgOTgsIDE5MywgMSwgMTkyLCAxOTMsIDEsIDE5OCwgMTkzLCAxLCAyMTYsIDIyMCwgCi0gICAgMTkzLCAxLCAyMjgsIDExMywgMTkzLCAxLCAyMjcsIDc3LCAxOTMsIDEsIDIwNiwgODYsIDE5MywgMSwgMjEzLCA5MCwgMTkzLCAKLSAgICAxLCAyMTEsIDE2NCwgMTkzLCAxLCAyMTUsIDM2LCAxOTMsIDEsIDE1MiwgMTkzLCAyLCAyMjEsIDUxLCAxOTMsIDIsIDI1MCwgCi0gICAgMTcsIDE5MywgMjIsIDIsIDI1MiwgMjUsIDE5MywgMjIsIDIsIDc1LCAxOTMsIDIyLCAyLCAyMzEsIDgzLCAxOTMsIDIyLCAyLCAKLSAgICA2OCwgMTkzLCAyMiwgMiwgMjA2LCAxNzgsIDE5MywgMjIsIDIsIDEyNSwgMTQ2LCAxOTMsIDIyLCAyLCAxMjUsIDIxNSwgCi0gICAgMTg2LCAxOTMsIDIyLCAyLCA3NCwgMTkzLCAyMiwgMiwgMjUxLCA2NCwgMTkzLCAyMiwgMiwgNzgsIDE5MywgMjIsIDIsIAotICAgIDI1MCwgMzQsIDE5MywgMiwgMjA1LCAyMDQsIDE5MywgMjUxLCA2NSwgMjI3LCAxOTYsIDgyLCAxOTMsIDI1MCwgMzUsIDIyNywgCi0gICAgMTk2LCA4MiwgMTkzLCAxLCAyMTUsIDE4NSwgMTkzLCAxLCAyMTYsIDYxLCAxOTMsIDEsIDIwMiwgMTY4LCAxOTMsIDEsIAotICAgIDEyNSwgMjE1LCAxODYsIDE5MywgMSwgMTI1LCAyMjcsIDc4LCAxOTMsIDIyLCAyLCAxMjUsIDE1OSwgMTkzLCAyMiwgMiwgCi0gICAgMTI1LCAyMjcsIDc4LCAxOTMsIDE3LCAyMDIsIDg0LCAxOTMsIDE3LCAxMDUsIDE5MywgMTcsIDEwOCwgMTkzLCAxNywgMTQ3LCAKLSAgICAxOTMsIDE3LCAxNDksIDE5MywgMTcsIDE3MCwgMTkzLCAxNywgMTk1LCAxOTMsIDE3LCAyMTMsIDExMSwgMTkzLCAxNywgCi0gICAgMTk5LCAxOTMsIDE3LCAyMjIsIDYzLCAxOTMsIDIzMCwgMjAyLCAxOTMsIDEsIDIwNCwgMTExLCAxOTMsIDIzOSwgMTM4LCAKLSAgICAxMTgsIDIxNywgNTUsIDE5MywgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDE5MywgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgCi0gICAgMTkzLCAyMzksIDEzOCwgMTE4LCAyMTIsIDgwLCAxOTMsIDIzOSwgMTM4LCAxMTgsIDI0MSwgMTM4LCAxOTMsIDIzOSwgMTM4LCAKLSAgICAxMjYsIDIxMiwgNzksIDQ0LCAyLCAyNTAsIDE4MCwgNDQsIDIsIDIwNSwgMTk5LCA0NCwgMSwgNjMsIDQ0LCAxLCAyNTIsIAotICAgIDI1LCA0NCwgMSwgNzUsIDQ0LCAxLCAyMzEsIDgzLCA0NCwgMSwgNjgsIDQ0LCAxLCAyMDYsIDE3OCwgNDQsIDEsIDc0LCA0NCwgCi0gICAgMSwgMjQxLCAxNjEsIDQ0LCAxLCAyNTEsIDY0LCA0NCwgMSwgNzgsIDQ0LCAxLCAyMjAsIDE4LCA0NCwgMSwgMjUwLCAzNCwgCi0gICAgNDQsIDEsIDE3MywgNDQsIDEsIDIyMiwgMjAzLCA0NCwgMSwgMjQ3LCA5MiwgNDQsIDEsIDIzMCwgMTgxLCA0NCwgMSwgMjIxLCAKLSAgICAxMSwgNDQsIDEsIDIwNywgMjQxLCA0NCwgMSwgMjIxLCAyMjcsIDQ0LCAxLCAyMTAsIDIyLCA0NCwgMSwgMjAxLCAyMDEsIAotICAgIDQ0LCAxLCAyMjEsIDIwOSwgNDQsIDEsIDE4NSwgNDQsIDEsIDE5MiwgNDQsIDEsIDE5OCwgNDQsIDEsIDIxNiwgMjIwLCA0NCwgCi0gICAgMSwgMjE1LCAxODUsIDQ0LCAxLCAyMjgsIDExMywgNDQsIDEsIDIyNywgNzcsIDQ0LCAxLCAyMjcsIDY4LCA0NCwgMSwgMjA2LCAKLSAgICA4NiwgNDQsIDEsIDIxMywgOTAsIDQ0LCAxLCAyMTEsIDE2NCwgNDQsIDEsIDIxNSwgMzYsIDQ0LCAxLCAxNTIsIDQ0LCAyMiwgCi0gICAgMiwgMjUyLCAyNSwgNDQsIDIyLCAyLCA3NSwgNDQsIDIyLCAyLCAyMzEsIDgzLCA0NCwgMjIsIDIsIDY4LCA0NCwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCA0NCwgMjIsIDIsIDc0LCA0NCwgMjIsIDIsIDI0MSwgMTYxLCA0NCwgMjIsIDIsIDI1MSwgNjQsIDQ0LCAyMiwgCi0gICAgMiwgNzgsIDQ0LCAyMiwgMiwgMjIwLCAxOCwgNDQsIDIyLCAyLCAyNTAsIDM0LCA0NCwgMiwgMjA1LCAyMDQsIDQ0LCAyMjAsIAotICAgIDM5LCA0NCwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCA0NCwgMTcsIDIwMiwgODQsIDQ0LCAxNywgMTA1LCA0NCwgMTcsIDEwOCwgCi0gICAgNDQsIDE3LCAxNDcsIDQ0LCAxNywgMTQ5LCA0NCwgMTcsIDE3MCwgNDQsIDE3LCAxOTUsIDQ0LCAxNywgMjEzLCAxMTEsIDQ0LCAKLSAgICAxNywgMTk5LCA0NCwgMTcsIDIyMiwgNjMsIDQ0LCA0MiwgMjA5LCAxNTIsIDQ0LCA0MiwgMTE4LCAyMzYsIDExLCA0NCwgNDIsIAotICAgIDExOCwgMjA5LCAzNiwgNDQsIDI0NCwgMTMzLCA1NCwgNDQsIDIyNCwgMzgsIDU0LCA0NCwgMjAzLCA1MCwgNTQsIDQ0LCAKLSAgICAyNDQsIDcyLCA1NCwgNDQsIDI0NSwgMTQxLCA1NCwgNDQsIDI1MCwgODIsIDg3LCA1NCwgNDQsIDIxNSwgMTIwLCA1NCwgNDQsIAotICAgIDQyLCA1NCwgMTc1LCAyLCAzOSwgMjQ3LCA1MywgNTUsIDE3NSwgMiwgMjQ3LCA1MiwgMTc1LCAyLCAyNTAsIDE4MCwgMTc1LCAKLSAgICAyLCAyMDUsIDE5OSwgMTc1LCAxLCA2MywgMTc1LCAxLCAyNTIsIDI1LCAxNzUsIDEsIDc1LCAxNzUsIDEsIDIzMSwgODMsIAotICAgIDE3NSwgMSwgNjgsIDE3NSwgMSwgMjA2LCAxNzgsIDE3NSwgMSwgMTI1LCAxNDYsIDE3NSwgMSwgMTI1LCAxNTksIDE3NSwgMSwgCi0gICAgNzQsIDE3NSwgMSwgMjQxLCAxNjEsIDE3NSwgMSwgMjUxLCA2NCwgMTc1LCAxLCA3OCwgMTc1LCAxLCAyMjAsIDE4LCAxNzUsIAotICAgIDEsIDI1MCwgMzQsIDE3NSwgMSwgMTczLCAxNzUsIDEsIDIyOSwgMTQ0LCAxNzUsIDEsIDIzOSwgOCwgMTc1LCAxLCAyMzgsIAotICAgIDExOSwgMTc1LCAxLCAyMjIsIDIwMywgMTc1LCAxLCAyNDcsIDkyLCAxNzUsIDEsIDI0NiwgMTk5LCAxNzUsIDEsIDIzMCwgCi0gICAgMTgxLCAxNzUsIDEsIDIzMCwgMTQ5LCAxNzUsIDEsIDIyMSwgMTEsIDE3NSwgMSwgMjA3LCAyNDEsIDE3NSwgMSwgMjA3LCAKLSAgICAyMjksIDE3NSwgMSwgMjQ0LCAxMjAsIDE3NSwgMSwgMjQ0LCAxMDQsIDE3NSwgMSwgMjIxLCAyMjcsIDE3NSwgMSwgMjEwLCAKLSAgICAyMiwgMTc1LCAxLCAyMDksIDEwOCwgMTc1LCAxLCAyNDQsIDIxMiwgMTc1LCAxLCAyNDQsIDEsIDE3NSwgMSwgMjAxLCAyMDEsIAotICAgIDE3NSwgMSwgMTg1LCAxNzUsIDEsIDIxOCwgMjA4LCAxNzUsIDEsIDI0OSwgMzIsIDE3NSwgMSwgMjQ4LCA5OCwgMTc1LCAxLCAKLSAgICAxOTIsIDE3NSwgMSwgMTk4LCAxNzUsIDEsIDIxNiwgMjIwLCAxNzUsIDEsIDIxNSwgMTg1LCAxNzUsIDEsIDIyOCwgMTEzLCAKLSAgICAxNzUsIDEsIDIyNywgNzcsIDE3NSwgMSwgMjI3LCA2OCwgMTc1LCAxLCAyMDYsIDg2LCAxNzUsIDEsIDIxMywgOTAsIDE3NSwgCi0gICAgMSwgMjExLCAxNjQsIDE3NSwgMSwgMjE1LCAzNiwgMTc1LCAxLCAxNTIsIDE3NSwgMiwgMjUwLCAxNywgMTc1LCAyMiwgMiwgCi0gICAgMjUyLCAyNSwgMTc1LCAyMiwgMiwgNzUsIDE3NSwgMjIsIDIsIDIzMSwgODMsIDE3NSwgMjIsIDIsIDY4LCAxNzUsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgMTc1LCAyMiwgMiwgMTI1LCAxNDYsIDE3NSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE3NSwgMjIsIDIsIAotICAgIDc0LCAxNzUsIDIyLCAyLCAyNDEsIDE2MSwgMTc1LCAyMiwgMiwgMjUxLCA2NCwgMTc1LCAyMiwgMiwgNzgsIDE3NSwgMjIsIAotICAgIDIsIDIyMCwgMTgsIDE3NSwgMjIsIDIsIDI1MCwgMzQsIDE3NSwgMiwgMjA1LCAyMDQsIDE3NSwgMjI3LCAxOTYsIDgyLCAKLSAgICAxNzUsIDI1MSwgNjUsIDIyNywgMTk2LCA4MiwgMTc1LCAxLCAyMDgsIDIwLCAxNzUsIDEsIDI0MSwgMjU1LCAxNzUsIDEsIAotICAgIDIxNSwgMTY2LCAxNzUsIDEsIDEyNSwgMjE1LCAxODYsIDE3NSwgMSwgMTI1LCAyMjcsIDc4LCAxNzUsIDIyLCAyLCAxMjUsIAotICAgIDE1OSwgMTc1LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNzUsIDE3LCAyMDIsIDg0LCAxNzUsIDE3LCAxMDUsIDE3NSwgMTcsIAotICAgIDEwOCwgMTc1LCAxNywgMTQ3LCAxNzUsIDE3LCAxNDksIDE3NSwgMTcsIDE3MCwgMTc1LCAxNywgMTk1LCAxNzUsIDE3LCAKLSAgICAyMTMsIDExMSwgMTc1LCAxNywgMTk5LCAxNzUsIDE3LCAyMjIsIDYzLCAxNzUsIDIzOSwgMTM4LCAxNywgMjAyLCA4NSwgMzUsIAotICAgIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMTgsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCAKLSAgICA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTIwLCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIAotICAgIDEzOCwgMTcsIDEyNiwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMTgsIDM1LCAKLSAgICAyNDAsIDIyNSwgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDEyMCwgMzUsIDI0MCwgMjI1LCAyMTgsIAotICAgIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTI2LCAzNSwgMjQwLCAyMjUsIDIxOCwgMTUsIDc2LCAxNDksIDE3NSwgCi0gICAgMiwgMjA3LCAxNjQsIDIwMCwgMiwgMjQ3LCA1MiwgMjAwLCAyLCAyNTAsIDE4MCwgMjAwLCAyLCAyMDUsIDE5OSwgMjAwLCAxLCAKLSAgICA2MywgMjAwLCAxLCAyNTIsIDI1LCAyMDAsIDEsIDc1LCAyMDAsIDEsIDIzMSwgODMsIDIwMCwgMSwgNjgsIDIwMCwgMSwgCi0gICAgMjA2LCAxNzgsIDIwMCwgMSwgMTI1LCAxNDYsIDIwMCwgMSwgMTI1LCAxNTksIDIwMCwgMSwgNzQsIDIwMCwgMSwgMjQxLCAKLSAgICAxNjEsIDIwMCwgMSwgMjUxLCA2NCwgMjAwLCAxLCA3OCwgMjAwLCAxLCAyMjAsIDE4LCAyMDAsIDEsIDI1MCwgMzQsIDIwMCwgCi0gICAgMSwgMTczLCAyMDAsIDEsIDIyOSwgMTQ0LCAyMDAsIDEsIDIzOSwgOCwgMjAwLCAxLCAyMzgsIDExOSwgMjAwLCAxLCAyMjIsIAotICAgIDIwMywgMjAwLCAxLCAyNDcsIDkyLCAyMDAsIDEsIDI0NiwgMTk5LCAyMDAsIDEsIDIzMCwgMTgxLCAyMDAsIDEsIDIzMCwgCi0gICAgMTQ5LCAyMDAsIDEsIDIyMSwgMTEsIDIwMCwgMSwgMjA3LCAyNDEsIDIwMCwgMSwgMjA3LCAyMjksIDIwMCwgMSwgMjQ0LCAKLSAgICAxMjAsIDIwMCwgMSwgMjQ0LCAxMDQsIDIwMCwgMSwgMjIxLCAyMjcsIDIwMCwgMSwgMjEwLCAyMiwgMjAwLCAxLCAyMDksIAotICAgIDEwOCwgMjAwLCAxLCAyNDQsIDIxMiwgMjAwLCAxLCAyNDQsIDEsIDIwMCwgMSwgMjAxLCAyMDEsIDIwMCwgMSwgMTg1LCAKLSAgICAyMDAsIDEsIDIxOCwgMjA4LCAyMDAsIDEsIDI0OSwgMzIsIDIwMCwgMSwgMjQ4LCA5OCwgMjAwLCAxLCAxOTIsIDIwMCwgMSwgCi0gICAgMTk4LCAyMDAsIDEsIDIxNiwgMjIwLCAyMDAsIDEsIDIxNSwgMTg1LCAyMDAsIDEsIDIyOCwgMTEzLCAyMDAsIDEsIDIyNywgCi0gICAgNzcsIDIwMCwgMSwgMjA2LCA4NiwgMjAwLCAxLCAyMTMsIDkwLCAyMDAsIDEsIDIxMSwgMTY0LCAyMDAsIDEsIDIxNSwgMzYsIAotICAgIDIwMCwgMSwgMTUyLCAyMDAsIDIsIDIyMSwgNTEsIDIwMCwgMiwgMjUwLCAxNywgMjAwLCAyMiwgMiwgMjUyLCAyNSwgMjAwLCAKLSAgICAyMiwgMiwgNzUsIDIwMCwgMjIsIDIsIDIzMSwgODMsIDIwMCwgMjIsIDIsIDY4LCAyMDAsIDIyLCAyLCAyMDYsIDE3OCwgCi0gICAgMjAwLCAyMiwgMiwgMTI1LCAxNDYsIDIwMCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIwMCwgMjIsIDIsIDc0LCAyMDAsIDIyLCAKLSAgICAyLCAyNDEsIDE2MSwgMjAwLCAyMiwgMiwgMjUxLCA2NCwgMjAwLCAyMiwgMiwgNzgsIDIwMCwgMjIsIDIsIDIyMCwgMTgsIAotICAgIDIwMCwgMjIsIDIsIDI1MCwgMzQsIDIwMCwgMiwgMjA1LCAyMDQsIDIwMCwgMjI3LCAxOTYsIDgyLCAyMDAsIDI1MSwgNjUsIAotICAgIDIyNywgMTk2LCA4MiwgMjAwLCAxLCAyNDAsIDEwOCwgMjAwLCAxLCAxMjUsIDIxNSwgMTg2LCAyMDAsIDEsIDEyNSwgMjI3LCAKLSAgICA3OCwgMjAwLCAyMiwgMiwgMTI1LCAxNTksIDIwMCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjAwLCAxNywgMjAyLCA4NCwgCi0gICAgMjAwLCAxNywgMTA1LCAyMDAsIDE3LCAxMDgsIDIwMCwgMTcsIDE0NywgMjAwLCAxNywgMTQ5LCAyMDAsIDE3LCAxNzAsIAotICAgIDIwMCwgMTcsIDE5NSwgMjAwLCAxNywgMjEzLCAxMTEsIDIwMCwgMTcsIDE5OSwgMjAwLCAxNywgMjIyLCA2MywgMjAwLCAyLCAKLSAgICAyMzAsIDEzNSwgMjAwLCAyLCAyMDYsIDIyMiwgMTY0LCAyLCAyNDcsIDUyLCAxNjQsIDIsIDI1MCwgMTgwLCAxNjQsIDIsIAotICAgIDIwNSwgMTk5LCAxNjQsIDEsIDYzLCAxNjQsIDEsIDI1MiwgMjUsIDE2NCwgMSwgNzUsIDE2NCwgMSwgMjMxLCA4MywgMTY0LCAKLSAgICAxLCA2OCwgMTY0LCAxLCAyMDYsIDE3OCwgMTY0LCAxLCAxMjUsIDE0NiwgMTY0LCAxLCAxMjUsIDE1OSwgMTY0LCAxLCA3NCwgCi0gICAgMTY0LCAxLCAyNDEsIDE2MSwgMTY0LCAxLCAyNTEsIDY0LCAxNjQsIDEsIDc4LCAxNjQsIDEsIDIyMCwgMTgsIDE2NCwgMSwgCi0gICAgMjUwLCAzNCwgMTY0LCAxLCAxNzMsIDE2NCwgMSwgMjI5LCAxNDQsIDE2NCwgMSwgMjM5LCA4LCAxNjQsIDEsIDIzOCwgMTE5LCAKLSAgICAxNjQsIDEsIDIyMiwgMjAzLCAxNjQsIDEsIDI0NywgOTIsIDE2NCwgMSwgMjQ2LCAxOTksIDE2NCwgMSwgMjMwLCAxODEsIAotICAgIDE2NCwgMSwgMjMwLCAxNDksIDE2NCwgMSwgMjIxLCAxMSwgMTY0LCAxLCAyMDcsIDI0MSwgMTY0LCAxLCAyMDcsIDIyOSwgCi0gICAgMTY0LCAxLCAyNDQsIDEyMCwgMTY0LCAxLCAyNDQsIDEwNCwgMTY0LCAxLCAyMjEsIDIyNywgMTY0LCAxLCAyMTAsIDIyLCAKLSAgICAxNjQsIDEsIDIwOSwgMTA4LCAxNjQsIDEsIDI0NCwgMjEyLCAxNjQsIDEsIDI0NCwgMSwgMTY0LCAxLCAyMDEsIDIwMSwgCi0gICAgMTY0LCAxLCAyMjEsIDIwOSwgMTY0LCAxLCAxODUsIDE2NCwgMSwgMjE4LCAyMDgsIDE2NCwgMSwgMjQ5LCAzMiwgMTY0LCAxLCAKLSAgICAyNDgsIDk4LCAxNjQsIDEsIDE5MiwgMTY0LCAxLCAxOTgsIDE2NCwgMSwgMjE2LCAyMjAsIDE2NCwgMSwgMjE1LCAxODUsIAotICAgIDE2NCwgMSwgMjI4LCAxMTMsIDE2NCwgMSwgMjI3LCA3NywgMTY0LCAxLCAyMjcsIDY4LCAxNjQsIDEsIDIwNiwgODYsIDE2NCwgCi0gICAgMSwgMjEzLCA5MCwgMTY0LCAxLCAyMTEsIDE2NCwgMTY0LCAxLCAyMTUsIDM2LCAxNjQsIDEsIDE1MiwgMTY0LCAxLCAyMDcsIAotICAgIDIxMCwgMTY0LCAyLCAyNTAsIDE3LCAxNjQsIDIyLCAyLCAyNTIsIDI1LCAxNjQsIDIyLCAyLCA3NSwgMTY0LCAyMiwgMiwgCi0gICAgMjMxLCA4MywgMTY0LCAyMiwgMiwgNjgsIDE2NCwgMjIsIDIsIDIwNiwgMTc4LCAxNjQsIDIyLCAyLCAxMjUsIDE0NiwgMTY0LCAKLSAgICAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTY0LCAyMiwgMiwgNzQsIDE2NCwgMjIsIDIsIDI0MSwgMTYxLCAxNjQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAxNjQsIDIyLCAyLCA3OCwgMTY0LCAyMiwgMiwgMjIwLCAxOCwgMTY0LCAyMiwgMiwgMjUwLCAzNCwgMTY0LCAKLSAgICAyLCAyMDUsIDIwNCwgMTY0LCAxLCA3MCwgMjE2LCA5NywgMTY0LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDE2NCwgMSwgCi0gICAgMjUwLCAxMjYsIDIzMSwgODMsIDE2NCwgMSwgMTI1LCAyMTUsIDE4NiwgMTY0LCAxLCAxMjUsIDIyNywgNzgsIDE2NCwgMjIsIAotICAgIDIsIDEyNSwgMTU5LCAxNjQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE2NCwgMTcsIDIwMiwgODQsIDE2NCwgMTcsIDEwNSwgCi0gICAgMTY0LCAxNywgMTA4LCAxNjQsIDE3LCAxNDcsIDE2NCwgMTcsIDE0OSwgMTY0LCAxNywgMTcwLCAxNjQsIDE3LCAxOTUsIAotICAgIDE2NCwgMTcsIDIxMywgMTExLCAxNjQsIDE3LCAxOTksIDE2NCwgMTcsIDIyMiwgNjMsIDE2NCwgNDIsIDIwOSwgMTUyLCAKLSAgICAxNjQsIDQyLCAxMTgsIDIzNiwgMTEsIDE2NCwgNDIsIDExOCwgMjA5LCAzNiwgMTY0LCAyMzksIDEzOCwgMTE4LCAyMTcsIAotICAgIDU1LCAxNjQsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxNjQsIDIzOSwgMTM4LCAxMjYsIDIxNywgNTMsIDE2NCwgMjQ0LCAKLSAgICAxMzgsIDgyLCAxNjQsIDEsIDI0NiwgMTMxLCAyMjEsIDIyOCwgMTY0LCAxLCAyNDYsIDEzMSwgMjIzLCAxNjMsIDE2NCwgMSwgCi0gICAgMjQ2LCAxMzEsIDIxNSwgMTg2LCAxNjQsIDEsIDI0NiwgMTMxLCAxNTksIDE2NCwgMSwgMjQ2LCAxMzEsIDIyNywgNzgsIAotICAgIDE2NCwgMSwgMjQ2LCAxMzEsIDIzMCwgNTQsIDE0MCwgMiwgMjUwLCAxNzksIDE0MCwgMiwgMjA1LCAxOTgsIDE0MCwgMSwgCi0gICAgMjUwLCA2LCAxNDAsIDEsIDI1MSwgMjM1LCAxNDAsIDEsIDI1MSwgODksIDE0MCwgMSwgMjUxLCAxMDQsIDE0MCwgMSwgMjMwLCAKLSAgICAxOTEsIDE0MCwgMSwgMjMxLCA4MiwgMTQwLCAxLCAyMDYsIDE2OSwgMTQwLCAxLCAyMDYsIDE3MiwgMTQwLCAxLCAyMzAsIAotICAgIDIxNywgMTQwLCAxLCAyMzAsIDIxOCwgMTQwLCAxLCAyMzEsIDY4LCAxNDAsIDEsIDIzMSwgNzAsIDE0MCwgMSwgMjQwLCAKLSAgICAxOTQsIDE0MCwgMSwgMjQxLCAxNTYsIDE0MCwgMSwgMjUxLCA0OSwgMTQwLCAxLCAyMTksIDE4NywgMTQwLCAxLCAyMjAsIAotICAgIDExLCAxNDAsIDEsIDI1MCwgMjAsIDE0MCwgMSwgMjUxLCA1LCAyMjksIDIwNiwgMTQwLCAxLCAyMjUsIDE0NywgMjI5LCAKLSAgICAyMDYsIDE0MCwgMSwgMjUxLCA1LCAyMzgsIDIxMCwgMTQwLCAxLCAyMjUsIDE0NywgMjM4LCAyMTAsIDE0MCwgMSwgMjI5LCAKLSAgICAyNTUsIDIyMywgMTAzLCAxNDAsIDEsIDIxNCwgMjM1LCAyMzgsIDIxMCwgMTQwLCAxLCAyNTEsIDUsIDI0NywgOCwgMTQwLCAKLSAgICAxLCAyMjUsIDE0NywgMjQ3LCA4LCAxNDAsIDEsIDI1MSwgNSwgMjMwLCAxNjQsIDE0MCwgMSwgMjI1LCAxNDcsIDIzMCwgCi0gICAgMTY0LCAxNDAsIDEsIDIxMCwgMTUsIDIyMywgMTAzLCAxNDAsIDEsIDIxMCwgMTUsIDIxNCwgMjM0LCAyMjMsIDEwNCwgMTQwLCAKLSAgICAxLCAyMTQsIDIzNSwgMjMwLCAxNjQsIDE0MCwgMSwgMjUxLCA1LCAyMDcsIDIzNywgMTQwLCAxLCAyMjUsIDE0NywgMjA3LCAKLSAgICAyMzcsIDE0MCwgMSwgMjUxLCA1LCAyNDQsIDExMSwgMTQwLCAxLCAyMjUsIDE0NywgMjQ0LCAxMTEsIDE0MCwgMSwgMjIzLCAKLSAgICAxOTEsIDIyMywgNTgsIDE0MCwgMSwgMjE0LCAyMzUsIDI0NCwgMTExLCAxNDAsIDEsIDI1MSwgNSwgMjA5LCAxOTUsIDE0MCwgCi0gICAgMSwgMjI1LCAxNDcsIDIwOSwgMTk1LCAxNDAsIDEsIDI1MSwgNSwgMjQ0LCAxMzEsIDE0MCwgMSwgMjI1LCAxNDcsIDI0NCwgCi0gICAgMTMxLCAxNDAsIDEsIDI0NCwgMTYyLCAyMjMsIDU4LCAxNDAsIDEsIDIxNCwgMjM1LCAyNDQsIDEzMSwgMTQwLCAxLCAyNTEsIAotICAgIDUsIDIxOSwgNDIsIDE0MCwgMSwgMjI1LCAxNDcsIDIxOSwgNDIsIDE0MCwgMSwgMjUxLCA1LCAyNDgsIDIwMCwgMTQwLCAxLCAKLSAgICAyMjUsIDE0NywgMjQ4LCAyMDAsIDE0MCwgMSwgMjI1LCA2MiwgMTQwLCAxLCAyNTAsIDI0MSwgMjQ4LCAyMDAsIDE0MCwgMSwgCi0gICAgMjAzLCA1NywgMTQwLCAxLCAyMTYsIDE2NCwgMTQwLCAxLCAyNDQsIDE2MiwgMjI3LCAyNDMsIDE0MCwgMSwgMjA2LCA1NywgCi0gICAgMTQwLCAxLCAyMTAsIDE1LCAyMTQsIDIwNywgMTQwLCAxLCAyMjMsIDE5MSwgMjE0LCAyMDcsIDE0MCwgMSwgMjQ0LCAxNjIsIAotICAgIDIxNCwgMjA3LCAxNDAsIDEsIDIzNywgNzEsIDE0MCwgMSwgMjIzLCAxOTEsIDIyNywgMjQzLCAxNDAsIDEsIDI0MCwgNjIsIAotICAgIDE0MCwgMiwgMjUxLCAzOCwgMTQwLCAyMiwgMiwgMjUxLCA5OSwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDI1MSwgMTA2LCAKLSAgICAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjUxLCAxMDYsIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyMzAsIDIxNCwgMTQwLCAyMiwgCi0gICAgMiwgMjQzLCAyMDAsIDIzMCwgMjE0LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjE5LCAxNjcsIDE0MCwgMjIsIDIsIDI0MywgCi0gICAgMjAwLCAyMTksIDE2NywgMTQwLCAyMiwgMiwgMjM4LCAyNTMsIDE0MCwgMjIsIDIsIDIyOSwgMTEsIDE0MCwgMjIsIDIsIAotICAgIDI0MywgMjAwLCAyMjksIDExLCAxNDAsIDIyLCAyLCAyMjksIDEzLCAyNDQsIDUwLCAxNDAsIDIyLCAyLCAyMjksIDEyLCAKLSAgICAyMzcsIDE1OCwgMjUxLCA5OSwgMTQwLCAyMiwgMiwgMjI5LCAxMiwgMjM3LCAxNTgsIDI0MywgMjAwLCAyNTEsIDk5LCAxNDAsIAotICAgIDIyLCAyLCAyMjksIDEyLCAyMzcsIDE1OCwgMjM4LCAyMDksIDE0MCwgMjIsIDIsIDIzOCwgMjA5LCAxNDAsIDIyNywgODksIAotICAgIDE3LCAyMDIsIDg0LCAxNDAsIDIyNywgODksIDE3LCAxMDUsIDE0MCwgMjI3LCA4OSwgMTcsIDEwOCwgMTQwLCAyMjcsIDg5LCAKLSAgICAxNywgMTQ3LCAxNDAsIDIyNywgODksIDE3LCAxNDksIDE0MCwgMjI3LCA4OSwgMTcsIDE3MCwgMTQwLCAyMjcsIDg5LCAxNywgCi0gICAgMTk1LCAxNDAsIDIyNywgODksIDE3LCAyMTMsIDExMSwgMTQwLCAyMjcsIDg5LCAxNywgMTk5LCAxNDAsIDIyNywgODksIDE3LCAKLSAgICAyMjIsIDYzLCAxNDAsIDIyLCAyLCAyNDMsIDIwMCwgMjM4LCAyNTMsIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyMzgsIDIwOSwgCi0gICAgMTQwLCAyMTcsIDE3OSwgMjI4LCAxOTQsIDIwOSwgMTAzLCAxNjcsIDIyOSwgMjcsIDIzMCwgMTgsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMjksIDEzOSwgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTYsIDIyOSwgMTA4LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjI5LCAxMDMsIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTE2LCAyMjksIDExMiwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIxNiwgMTg1LCAyMDksIDEwMywgMTY3LCAyMjIsIDEyOSwgMjIyLCAxMTYsIDIwOSwgMTAzLCAxNjcsIAotICAgIDI0NiwgMTE3LCAyNDYsIDE4OCwgMjA5LCAxMDMsIDE2NywgMjQ2LCAxMTcsIDI0NiwgMTI3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyNDYsIDExNywgMjQ2LCAxODcsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxMiwgMTMsIDIwOSwgMTAzLCAxNjcsIDI0NiwgCi0gICAgMTE3LCAyNDYsIDExMywgMjA5LCAxMDMsIDE2NywgMjAyLCAyNDgsIDIwMiwgMjU1LCAyMDksIDEwMywgMTY3LCAyNDMsIAotICAgIDExNCwgMjQ2LCAxOTYsIDIwOSwgMTAzLCAxNjcsIDIwOCwgMTczLCAyMTksIDUzLCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAKLSAgICAyMDksIDk3LCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMjMsIDgwLCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMTgsIAotICAgIDE3MCwgMjA5LCAxMDMsIDE2NywgMjIxLCAxOTIsIDIyMiwgMjMwLCAyMDksIDEwMywgMTY3LCAyNDMsIDExNCwgMjQ0LCA1MSwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjA4LCAxNzMsIDIwOSwgMjIzLCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDE2LCAyMDksIAotICAgIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDEwNCwgMjA5LCAxMDMsIDE2NywgMjA5LCA0OCwgMjA5LCA0MywgMjA5LCAxMDMsIAotICAgIDE2NywgMjIxLCAxOTIsIDIyMSwgODQsIDIwOSwgMTAzLCAxNjcsIDI0OCwgMjQsIDI0OSwgMCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE4LCA3MCwgMjE4LCA5OCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxOCwgMTcyLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE4NywgMjQwLCAxMDgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTgsIDIwMSwgMjA5LCAxMDMsIDE2NywgMjM5LCAKLSAgICAxODcsIDI0MCwgODEsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgxLCAyMTQsIDI0NywgMjA5LCAxMDMsIDE2NywgMjI0LCA4MywgCi0gICAgMTkyLCAyMDksIDEwMywgMTY3LCAyMDIsIDI0OCwgMjAzLCA4NiwgMjA5LCAxMDMsIDE2NywgMjE1LCAyMjgsIDIxNSwgMTQ0LCAKLSAgICAyMDksIDEwMywgMTY3LCAyMTUsIDE0NSwgMjA5LCAxMDMsIDE2NywgMjI3LCA1MCwgMjI3LCAxMDcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyNiwgMjM5LCAyMDksIDEwMywgMTY3LCAyMDQsIDEsIDIwNCwgMTA2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTUsIAotICAgIDYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxNSwgMTE2LCAyMDksIDEwMywgMTY3LCAyMTIsIDE0LCAyMTEsIDksIDIwOSwgCi0gICAgMTAzLCAxNjcsIDIzNiwgMTM3LCAyMzYsIDIzMywgMjA5LCAxMDMsIDE2NywgMjI3LCA1MCwgMjQ2LCA5NywgMjA5LCAxMDMsIAotICAgIDE2NywgMTU4LCAyNTAsIDIyMywgMjA5LCAxMDMsIDE2NywgMjM2LCAxMzcsIDIyMSwgMTg3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTksIDE0NCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDYzLCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjM3LCAxMjUsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTIsIDI1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUwLCAyNDcsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDIxNCwgMjI5LCA3NSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDIzMSwgODMsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxNCwgMjI5LCAyMDcsIDI0LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjA3LCAyMiwgMjA5LCAxMDMsIDE2NywgMjE0LCAKLSAgICAyMjksIDY4LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjA2LCAxNzgsIDIwOSwgMTAzLCAxNjcsIDIxOCwgMTgzLCAyMDksIAotICAgIDEwMywgMjQ1LCA5MiwgMTYsIDI0OSwgMSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDc0LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTQsIDIyOSwgMjUxLCAxMDksIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCA3OCwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIAotICAgIDI1MSwgNjUsIDIyNSwgMTM1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjUxLCA2NSwgMjI1LCAxMzYsIDIwOSwgMTAzLCAKLSAgICAxNjcsIDIyOCwgMzIsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTMyLCAyMDksIDEwMywgMTY3LCAyMjUsIDEzMywgMjA5LCAxMDMsIAotICAgIDE2NywgMjI1LCAxNDEsIDI0MSwgMTI5LCAyMDksIDEwMywgMTY3LCAyMjUsIDE0MSwgMjA5LCA0NywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI1LCAxNDEsIDIwOCwgODgsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyNDYsIDE3NSwgMjA5LCAxMDMsIDE2NywgMjA5LCAKLSAgICA5NSwgMjA5LCAxMDMsIDE2NywgMjIyLCA3MiwgMjA5LCAxMDMsIDE2NywgMjAzLCA4MCwgMjA5LCAxMDMsIDE2NywgMjM5LCAKLSAgICAxNzcsIDIwOSwgMTAzLCAxNywgMjAyLCA4NCwgMjA5LCAxMDMsIDE3LCAxMDUsIDIwOSwgMTAzLCAxNywgMTA4LCAyMDksIAotICAgIDEwMywgMTcsIDE0NywgMjA5LCAxMDMsIDE3LCAxNDksIDIwOSwgMTAzLCAxNywgMTcwLCAyMDksIDEwMywgMTcsIDE5NSwgCi0gICAgMjA5LCAxMDMsIDE3LCAyMTMsIDExMSwgMjA5LCAxMDMsIDE3LCAxOTksIDIwOSwgMTAzLCAxNywgMjIyLCA2MywgMjA5LCAKLSAgICAxMDMsIDE2NywgMjUwLCAyMTksIDIwOSwgMTAzLCAxNjcsIDIyOSwgMTEzLCAyMjgsIDEyLCAxLCAyMjksIDI2LCAyMjgsIAotICAgIDEyLCAxLCAyMjksIDExNiwgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIyOSwgMTE2LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgCi0gICAgMjIyLCAxMjgsIDIyOCwgMTIsIDEsIDI0NSwgMjU0LCAyMjgsIDEyLCAxLCAyMTIsIDE0LCAyMDksIDIzMiwgMjI4LCAxMiwgCi0gICAgMSwgMjIwLCAyMzMsIDIyOCwgMTIsIDEsIDI0MywgMTEzLCAyMjgsIDEyLCAxLCAxMzUsIDIyOCwgMTIsIDEsIDIwOSwgNDgsIAotICAgIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMDksIDQ4LCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjIxLCAxOTEsIDIyOCwgMTIsIAotICAgIDEsIDI0OCwgMjMsIDIyOCwgMTIsIDEsIDIxOCwgNjksIDIyOCwgMTIsIDEsIDIxOCwgMTgxLCAyMTAsIDIxMSwgMjI4LCAxMiwgCi0gICAgMSwgMjM5LCAxODcsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMTgsIDE4MSwgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIzOSwgCi0gICAgMTg3LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjI0LCA4MiwgMjI4LCAxMiwgMSwgMjAyLCAyNDcsIDIyOCwgMTIsIDEsIAotICAgIDIyNywgNTAsIDIyNywgMTA3LCAyMjgsIDEyLCAxLCAyMjcsIDUwLCAyMjcsIDEyLCAyMjgsIDEyLCAxLCAyMDQsIDAsIDIyOCwgCi0gICAgMTIsIDEsIDIxMiwgMTQsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMzYsIDEzNywgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDc4LCAKLSAgICAyMjgsIDEyLCAxLCAyMzYsIDEzNywgMjA5LCAyMzIsIDIyOCwgMTIsIDI0MSwgMTA4LCAyMjgsIDEyLCAyMiwgMiwgNjMsIAotICAgIDIyOCwgMTIsIDIyLCAyLCAyMjUsIDE0MSwgMjMwLCA0LCAyMjgsIDEyLCAyMiwgMiwgMjUyLCAyNSwgMjI4LCAxMiwgMjIsIAotICAgIDIsIDI1MCwgMjQ3LCAyMjgsIDEyLCAyMiwgMiwgNzUsIDIyOCwgMTIsIDIyLCAyLCAyMzEsIDgzLCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjAzLCAxMjQsIDIyOCwgMTIsIDIyLCAyLCAyMDIsIDE2OSwgMjI4LCAxMiwgMjIsIDIsIDY4LCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDIyOCwgMTIsIDIyLCAyLCAyMjUsIDE0MSwgMjI5LCA5LCAyMjgsIDEyLCAyMTMsIDEzOCwgMiwgMjI3LCAKLSAgICA0OSwgMjI4LCAxMiwgMjEzLCAxMzgsIDIsIDIyMCwgMjMzLCAyMjgsIDEyLCAyMiwgMiwgNzQsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyNDEsIDE0NSwgMjI4LCAxMiwgMjIsIDIsIDc4LCAyMjgsIDEyLCAyMiwgMiwgMjUwLCA4LCAyMjgsIDEyLCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI4LCAxMiwgMjI5LCAyNywgMjI4LCAxMTMsIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDI0MSwgMTI5LCAKLSAgICAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyMDksIDQ3LCAyMjgsIDEyLCAxNDMsIDIyNSwgMTQxLCAyMDksIDIsIDIyOCwgMTIsIAotICAgIDE0MywgMjI1LCAxNDEsIDI0NywgMTYsIDIyOCwgMTIsIDI0NywgNTgsIDgyLCAyMjgsIDEyLCAyMjIsIDgxLCAyMjgsIDEyLCAKLSAgICAxNywgMjAyLCA4NCwgMjI4LCAxMiwgMTcsIDEwNSwgMjI4LCAxMiwgMTcsIDEwOCwgMjI4LCAxMiwgMTcsIDE0NywgMjI4LCAKLSAgICAxMiwgMTcsIDE0OSwgMjI4LCAxMiwgMTcsIDE3MCwgMjI4LCAxMiwgMTcsIDE5NSwgMjI4LCAxMiwgMTcsIDIxMywgMTExLCAKLSAgICAyMjgsIDEyLCAxNywgMTk5LCAyMjgsIDEyLCAxNywgMjIyLCA2MywgMjI4LCAxMiwgMjM2LCAxMzcsIDIyMSwgMTkxLCAyMjgsIAotICAgIDEyLCAyMzYsIDEzNywgMjI0LCA4MiwgMjI4LCAxMiwgMSwgMjI5LCAxMTcsIDIzOCwgMzksIDIyOCwgMTIsIDEsIDIyOSwgCi0gICAgMTE3LCAyMjAsIDIzMywgNzcsIDQsIDIyMCwgMzksIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyMDgsIAotICAgIDI2LCA2MywgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDI1NSwgMjIsIDIxNSwgMjMyLCAyNDgsIDE2NCwgCi0gICAgMTkyLCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjU1LCAyMiwgMjM3LCAyMzIsIDIwOCwgNiwgMTkyLCAKLSAgICA3NywgMTMxLCA4MSwgMjAzLCAzLCAyMjQsIDE3MywgMjI1LCAyMiwgMTkyLCA3NywgMTMxLCAyNDYsIDEyLCAyMDMsIDMsIAotICAgIDIyNCwgMTczLCAyMTMsIDk3LCAxOTIsIDc3LCAxMzEsIDI0NywgMzQsIDIwMywgMywgMjI0LCAxNzMsIDIxOCwgMTcxLCAKLSAgICAyMTMsIDgzLCAxOTIsIDc3LCAxMzEsIDIwMywgMywgMjI0LCAxNzMsIDIwOCwgNiwgMjEzLCA4MywgMTkyLCA3NywgMTMxLCAKLSAgICAyMTQsIDIwNSwgMjEzLCA4MiwgNzcsIDEzMSwgMjQ3LCAxOTYsIDIwMywgMywgMjI0LCAxNzIsIDc3LCAxMzEsIDI0OCwgNDUsIAotICAgIDIxMiwgMjM4LCAyMDMsIDMsIDIyNCwgMTcyLCA3NywgMTMxLCAyMzAsIDI0MywgMjA4LCA1LCA3NywgMTMxLCAyNDQsIDQ0LCAKLSAgICAyMDgsIDYsIDI0NywgMTk1LCA3NywgMTMxLCAyMTMsIDgyLCA3NywgMTMxLCAyMjAsIDIzOCwgMjEzLCA4MiwgNzcsIDEzMSwgCi0gICAgMjA4LCA2LCAyMTMsIDgyLCA3NywgMTMxLCAyMjAsIDIzOCwgMjA4LCA2LCAyMTMsIDgyLCA3NywgMTMxLCAyMTUsIDI1NSwgCi0gICAgMjQ2LCAxNTYsIDIxMSwgMTgwLCAyMTMsIDgyLCA3NywgMTMxLCAyMTYsIDY1LCAyMzgsIDksIDIxMywgODIsIDc3LCAxMzEsIAotICAgIDI0NywgMzQsIDI1NSwgMjYsIDIxNSwgMTQ5LCAyMjUsIDIxLCAxNjMsIDI0NywgNjEsIDc3LCAxMzEsIDIzNywgMjMyLCAKLSAgICAyMDgsIDUsIDc3LCAyMjcsIDM1LCAyLCAyNDYsIDE5NywgMjE1LCAxNDgsIDc3LCAyMjcsIDM1LCAyLCAyMjcsIDE1OSwgCi0gICAgMjE1LCAxNDgsIDc3LCAyNTAsIDU1LCAyLCAyMTMsIDkzLCAyMzgsIDE5MywgMjU1LCAyNywgMjE1LCAxNDgsIDc3LCAyNTAsIAotICAgIDU1LCAyLCAyNTUsIDI0LCAxODUsIDc3LCAyNTAsIDU1LCAyLCAyMTQsIDE3OCwgMjA4LCAwLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDI0MywgMTI3LCAyMzgsIDE5MiwgNzcsIDIsIDIxNiwgMTYwLCAyNDMsIDEyNywgMjM4LCA0MSwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyNDMsIDEyNywgMjM3LCAyMzMsIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgMjM4LCAxOTIsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjIzLCA5OSwgMjM4LCA0MSwgNzcsIDIsIDIxNiwgMTYwLCAyNDMsIDEyNywgMjE2LCAxNjAsIDIyMywgOTgsIDc3LCAxNywgCi0gICAgMjAyLCA4NCwgNzcsIDE3LCAxMDUsIDc3LCAxNywgMTA4LCA3NywgMTcsIDE0NywgNzcsIDE3LCAxNDksIDc3LCAxNywgMTcwLCAKLSAgICA3NywgMTcsIDE5NSwgNzcsIDE3LCAyMTMsIDExMSwgNzcsIDE3LCAxOTksIDc3LCAxNywgMjIyLCA2MywgNzcsIDE3LCAxNjIsIAotICAgIDEwNSwgNzcsIDE3LCAxNjIsIDEwOCwgNzcsIDE3LCAxNjIsIDE0NywgNzcsIDE3LCAxNjIsIDE0OSwgNzcsIDE3LCAxNjIsIAotICAgIDE3MCwgNzcsIDE3LCAxNjIsIDE5NSwgNzcsIDE3LCAxNjIsIDIxMywgMTExLCA3NywgMTcsIDE2MiwgMTk5LCA3NywgMTcsIAotICAgIDE2MiwgMjIyLCA2MywgNzcsIDE3LCAxNjIsIDIwMiwgODQsIDc3LCAxMzEsIDI0NywgMTk4LCAyMTUsIDE0OCwgNzcsIDEzMSwgCi0gICAgMjIyLCAxOTQsIDI0NywgMTI3LCAyMjAsIDI0OSwgMjAyLCAxOSwgNzcsIDEzMSwgMjQ3LCAzNCwgMjU1LCAyNiwgMjE1LCAKLSAgICAxNDksIDI0NywgMTI4LCAyMjQsIDEyNiwgMjQ3LCA2MSwgNzcsIDEzMSwgMjIyLCAxOTQsIDI0NywgMTI3LCAyMTMsIDk0LCAKLSAgICAyMTUsIDE0OCwgNzcsIDEzMSwgMjQ2LCAxNzEsIDIyNCwgMTcyLCA3NywgMTMxLCAyMDgsIDIxLCAyNTUsIDIzLCA3NywgCi0gICAgMTMxLCAyMzcsIDIxNSwgMjE1LCAxNDksIDIzNywgMTc0LCA3NywgMTMxLCAyMzcsIDIxNSwgMjE1LCAxNDksIDIzNywgMTgwLCAKLSAgICA3NywgMTMxLCAyNTAsIDIyNCwgMjI5LCAxMzQsIDIzNywgMTc0LCA3NywgMTMxLCAyNTAsIDIyNCwgMjI5LCAxMzQsIDIzNywgCi0gICAgMTgwLCA3NywgMiwgMjAzLCA3MiwgMjA4LCA0LCA3NywgMiwgMjI1LCAxMDEsIDIwOCwgNCwgNzcsIDEsIDE3MywgNzcsIDEsIAotICAgIDIyOSwgMTQ0LCA3NywgMSwgMjM5LCA4LCA3NywgMSwgMjM4LCAxMTksIDc3LCAxLCAyMjIsIDIwMywgNzcsIDEsIDI0NywgCi0gICAgOTIsIDc3LCAxLCAyNDYsIDE5OSwgNzcsIDEsIDIzMCwgMTgxLCA3NywgMSwgMjIxLCAxMSwgNzcsIDEsIDIwNywgMjQxLCAKLSAgICA3NywgMSwgMjA3LCAyMjksIDc3LCAxLCAyNDQsIDEyMCwgNzcsIDEsIDI0NCwgMTA0LCA3NywgMSwgMjIxLCAyMjcsIDc3LCAKLSAgICAxLCAyMTAsIDIyLCA3NywgMSwgMjA5LCAxMDgsIDc3LCAxLCAyNDQsIDIxMiwgNzcsIDEsIDI0NCwgMSwgNzcsIDEsIDIwMSwgCi0gICAgMjAxLCA3NywgMSwgMTg1LCA3NywgMSwgMjE4LCAyMDgsIDc3LCAxLCAyNDksIDMyLCA3NywgMSwgMjQ4LCA5OCwgNzcsIDEsIAotICAgIDE5MiwgNzcsIDEsIDIwOCwgMjAsIDc3LCAxLCAyMDgsIDEwLCA3NywgMSwgMjQxLCAyNTUsIDc3LCAxLCAyNDEsIDI0OSwgCi0gICAgNzcsIDEsIDIwNCwgMTExLCA3NywgMSwgMjAyLCA4MCwgNzcsIDEsIDIwMiwgMTE2LCA3NywgMSwgMjU1LCAyOSwgNzcsIDEsIAotICAgIDE5OCwgNzcsIDEsIDIxNiwgMjIwLCA3NywgMSwgMjI4LCAxMTMsIDc3LCAxLCAyMTMsIDkwLCA3NywgMSwgMjExLCAxNjQsIAotICAgIDc3LCAxLCAyMTUsIDM2LCA3NywgMSwgMTUyLCA3NywgMSwgNjMsIDc3LCAxLCAyMjgsIDIyMywgNzcsIDEsIDIzOSwgMjI5LCAKLSAgICAyMTYsIDIyMCwgNzcsIDEsIDIyOSwgNDcsIDc3LCAxLCAyMTUsIDE4NSwgNzcsIDIyLCAyLCAyNTIsIDI1LCA3NywgMjIsIDIsIAotICAgIDc1LCA3NywgMjIsIDIsIDIzMSwgODMsIDc3LCAyMiwgMiwgNjgsIDc3LCAyMiwgMiwgMjA2LCAxNzgsIDc3LCAyMiwgMiwgCi0gICAgMTI1LCAxNDYsIDc3LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgNzcsIDIyLCAyLCAxMjUsIDE1OSwgNzcsIDIyLCAyLCAxMjUsIAotICAgIDIyNywgNzgsIDc3LCAyMiwgMiwgNzQsIDc3LCAyMiwgMiwgMjQxLCAxNjEsIDc3LCAyMiwgMiwgNzgsIDc3LCAyMiwgMiwgCi0gICAgMjIwLCAxOCwgNzcsIDIsIDIxNSwgMjM4LCAyMTEsIDExLCAyMjIsIDIwNCwgMjE1LCAyMjcsIDc3LCAyLCAyMTUsIDIzMiwgCi0gICAgMjQ4LCAxNjMsIDc3LCAyMiwgMiwgMjE2LCA3MywgNzUsIDc3LCAyMiwgMiwgMjE2LCA3MywgMjMxLCA4MywgNzcsIDIsIAotICAgIDIyMCwgMjQ5LCAyMDIsIDIwLCAyMjMsIDEwNywgMjQ0LCAyMTIsIDc3LCAyLCAyMTIsIDI3LCAyMjcsIDIzNiwgNzcsIDEzMSwgCi0gICAgMjM3LCAxMzksIDc3LCAxMzEsIDIxOSwgMTMyLCA3NywgMiwgMjI3LCAyMzksIDIxNSwgMTQ4LCA3NywgMiwgMjAzLCA3NywgCi0gICAgMjE1LCAxNDgsIDc3LCAyLCAyMjcsIDI0MCwgMjA4LCAyMSwgMjQ3LCA2MSwgNzcsIDIsIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAKLSAgICAyLCAyMzcsIDIzNiwgMjQ3LCA2MiwgMjE2LCA2MywgNzcsIDIsIDIzNywgMjM2LCAyMjUsIDE0LCAyMTYsIDYzLCA3NywgMiwgCi0gICAgMjMwLCAyMzksIDIyNSwgMjQsIDI0NywgNjEsIDc3LCAyMTAsIDI1NCwgMiwgMjI3LCAyNDAsIDIwOCwgMjEsIDI0NywgNjEsIAotICAgIDc3LCAyMTAsIDI1NCwgMiwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAyLCAyMzAsIDIzOSwgMjI1LCAyNCwgCi0gICAgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAxLCAxNzMsIDc3LCAyMTAsIDI1NCwgMSwgMjI5LCAxNDQsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjM5LCA4LCA3NywgMjEwLCAyNTQsIDEsIDIzOCwgMTE5LCA3NywgMjEwLCAyNTQsIDEsIDIyMiwgMjAzLCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDI0NywgOTIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ2LCAxOTksIDc3LCAyMTAsIDI1NCwgMSwgMjMwLCAxODEsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjIxLCAxMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDcsIDI0MSwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAyMDcsIDIyOSwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEyMCwgNzcsIDIxMCwgMjU0LCAxLCAyNDQsIDEwNCwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyMjEsIDIyNywgNzcsIDIxMCwgMjU0LCAxLCAyMTAsIDIyLCA3NywgMjEwLCAyNTQsIDEsIDIwOSwgMTA4LCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMjEyLCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDEsIAotICAgIDIwMSwgNzcsIDIxMCwgMjU0LCAxLCAxODUsIDc3LCAyMTAsIDI1NCwgMSwgMjE4LCAyMDgsIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMjQ5LCAzMiwgNzcsIDIxMCwgMjU0LCAxLCAyNDgsIDk4LCA3NywgMjEwLCAyNTQsIDEsIDE5MiwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAyMDgsIDIwLCA3NywgMjEwLCAyNTQsIDEsIDIwOCwgMTAsIDc3LCAyMTAsIDI1NCwgMSwgMjQxLCAyNTUsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjQxLCAyNDksIDc3LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDc3LCAyMTAsIDI1NCwgMSwgMjAyLCA4MCwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyMDIsIDExNiwgNzcsIDIxMCwgMjU0LCAxLCAyNTUsIDI5LCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDE5OCwgNzcsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgNzcsIDIxMCwgMjU0LCAxLCAyMjgsIDExMywgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMTMsIDkwLCA3NywgMjEwLCAyNTQsIDEsIDIxMSwgMTY0LCA3NywgMjEwLCAyNTQsIDEsIDIxNSwgMzYsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMTUyLCA3NywgMjEwLCAyNTQsIDEsIDYzLCA3NywgMjEwLCAyNTQsIDEsIDIyOCwgMjIzLCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDIzOSwgMjI5LCAyMDQsIDExMSwgNzcsIDIxMCwgMjU0LCAxLCAyMzksIDIyOSwgMTk4LCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIzOSwgMjI5LCAyMTYsIDIyMCwgNzcsIDIyOCwgMjEwLCAyMTUsIDE0NiwgMjI5LCAxNDQsIDc3LCAyMjgsIDIxMCwgCi0gICAgMjE1LCAxNDYsIDIyOSwgMTQ1LCAyNDcsIDEyOCwgMjI0LCAxMjYsIDI0NywgNjEsIDc3LCAyNDcsIDQ5LCAyLCA3OSwgMjQ4LCAKLSAgICAxNTUsIDc3LCAyNDcsIDQ5LCAyLCAxNTcsIDI0OCwgMTU1LCA3NywgMjQ3LCA0OSwgMiwgMjQ3LCA1MCwgMjA5LCAxODUsIAotICAgIDc3LCAyNDcsIDQ5LCAyLCAyMTQsIDIwNCwgMjU1LCAyOCwgNzcsIDE2LCAyNDIsIDU1LCAyNDcsIDE5MywgNzcsIDE2LCAKLSAgICAyMTYsIDE1OSwgMjE1LCAyMzksIDc3LCAxNiwgMjE5LCAxNTUsIDIzOCwgMTkxLCA3NywgMTYsIDIxNiwgMTU5LCAyMTUsIAotICAgIDI0MCwgMjE2LCA2NSwgMjM4LCA4LCA3NywgMTYsIDIxOCwgMTcxLCAxODUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTkzLCAKLSAgICA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5NCwgMjIwLCAyMzgsIDI1NSwgMjUsIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgCi0gICAgMTk0LCAyMzcsIDIzNCwgMjU1LCAyNSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTQsIDI0NywgMTI4LCAyNTUsIDI1LCAKLSAgICA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIDIxNiwgMTYwLCAyNDMsIDEyNiwgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAKLSAgICAyMzcsIDIzMywgNzcsIDEzMSwgMjQ3LCAxOTcsIDIxMiwgMjM4LCAyMzgsIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgNzcsIAotICAgIDEzMSwgMjI0LCA4NCwgMjAzLCAzLCAyMzgsIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgNzcsIDEzMSwgMjIwLCAyMzgsIDIwOCwgCi0gICAgNSwgNzcsIDEzMSwgODEsIDI0NywgMjIwLCAyMTUsIDIyOSwgMjAzLCAzLCAyMjQsIDE3MywgMjI1LCAyMiwgMTkyLCA3NywgCi0gICAgMTMxLCAyNDYsIDEyLCAyNDcsIDIyMCwgMjE1LCAyMjksIDIwMywgMywgMjI0LCAxNzMsIDIxMywgOTcsIDE5MiwgMjE2LCAKLSAgICAxNSwgMjEwLCAxNzQsIDU0LCAyMjcsIDIyMSwgMjEwLCAxNzQsIDU0LCAyMTYsIDE1LCAyMTAsIDE3NCwgMiwgMywgMjQzLCAKLSAgICA4MywgMjI3LCAyMjEsIDIxMCwgMTc0LCAyLCAzLCAyNDMsIDgzLCA3NywgMTMxLCAyMjcsIDIzMSwgMjI1LCAyNSwgMjE1LCAKLSAgICAxNDgsIDc3LCAxMzEsIDIwOCwgMTEyLCAyMjUsIDI1LCAyMTUsIDE0OCwgNjksIDEsIDE3MywgNjksIDEsIDIyOSwgMTQ0LCAKLSAgICA2OSwgMSwgMjM5LCA4LCA2OSwgMSwgMjM4LCAxMTksIDY5LCAxLCAyMjIsIDIwMywgNjksIDEsIDI0NywgOTIsIDY5LCAxLCAKLSAgICAyNDYsIDE5OSwgNjksIDEsIDIzMCwgMTgxLCA2OSwgMSwgMjMwLCAxNDksIDY5LCAxLCAyMjEsIDExLCA2OSwgMSwgMjIxLCAKLSAgICAxOTMsIDY5LCAxLCAyMDcsIDI0MSwgNjksIDEsIDIwNywgMjI5LCA2OSwgMSwgMjQ0LCAxMjAsIDY5LCAxLCAyNDQsIDEwNCwgCi0gICAgNjksIDEsIDIyMSwgMjI3LCA2OSwgMSwgMjEwLCAyMiwgNjksIDEsIDIwOSwgMTA4LCA2OSwgMSwgMjQ0LCAyMTIsIDY5LCAxLCAKLSAgICAyNDQsIDEsIDY5LCAxLCAyMDEsIDIwMSwgNjksIDEsIDE4NSwgNjksIDEsIDIxOCwgMjA4LCA2OSwgMSwgMjQ5LCAzMiwgNjksIAotICAgIDEsIDI0OCwgOTgsIDY5LCAxLCAxOTIsIDY5LCAxLCAxOTgsIDY5LCAxLCAyMTYsIDIyMCwgNjksIDEsIDIyOCwgMTEzLCA2OSwgCi0gICAgMSwgMjA0LCAxMTEsIDY5LCAxLCAyMTUsIDM2LCA2OSwgMSwgMTUyLCA2OSwgMSwgMjI3LCA3NywgNjksIDEsIDYzLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgNjMsIDY5LCAxLCA3NSwgNjksIDEsIDIzMSwgODMsIDY5LCAxLCA2OCwgNjksIDEsIDIwNiwgMTc4LCAKLSAgICA2OSwgMSwgNzQsIDY5LCAxLCAyMjQsIDU1LCA3NCwgNjksIDEsIDc4LCA2OSwgMSwgMjUwLCAzNCwgNjksIDIyLCAyLCAyMDksIAotICAgIDIzNCwgMjUyLCAyNSwgNjksIDIyLCAyLCAyNTIsIDI1LCA2OSwgMjIsIDIsIDc1LCA2OSwgMjIsIDIsIDIzMSwgODMsIDY5LCAKLSAgICAyMiwgMiwgNjgsIDY5LCAyMiwgMiwgMjA2LCAxNzgsIDY5LCAyMiwgMiwgNzQsIDY5LCAyMiwgMiwgMjUxLCA2NCwgNjksIAotICAgIDIyLCAyLCAyMjQsIDU1LCAyMzEsIDgzLCA2OSwgMjIsIDIsIDIyNCwgNTUsIDc4LCA2OSwgMjIsIDIsIDE4OCwgNTUsIDY5LCAKLSAgICAyLCAyNTAsIDE4MCwgNjksIDIsIDcwLCA1NiwgNjksIDIsIDIwNSwgMTk5LCA2OSwgMiwgMjA1LCAyMDQsIDY5LCAyLCAyNTAsIAotICAgIDc5LCA2OSwgMTA5LCAyLCAxNzQsIDE5OCwgNjksIDEwOSwgMiwgMTc0LCAyMTYsIDIyMCwgNjksIDEwOSwgMiwgMTc0LCAKLSAgICAyMDQsIDExMSwgNjksIDEwOSwgMiwgMTc0LCAxNTIsIDY5LCAxLCAyMzcsIDI0OSwgMjE1LCAzNiwgNjksIDE3LCAyMDIsIAotICAgIDg0LCA2OSwgMTcsIDEwNSwgNjksIDE3LCAxMDgsIDY5LCAxNywgMTQ3LCA2OSwgMTcsIDE0OSwgNjksIDE3LCAxNzAsIDY5LCAKLSAgICAxNywgMTk1LCA2OSwgMTcsIDIxMywgMTExLCA2OSwgMTcsIDE5OSwgNjksIDE3LCAyMjIsIDYzLCA2OSwgMiwgMjI3LCA4NiwgCi0gICAgMjE0LCAxNjcsIDY5LCAyLCAyMTQsIDE2NywgNjksIDE2LCAyMjcsIDQ0LCA2OSwgMTYsIDI0NSwgMjI3LCA2OSwgMTYsIAotICAgIDI1MSwgODUsIDY5LCAxNiwgMjM4LCAxNzQsIDY5LCAxLCAyMTMsIDkwLCA2OSwgMSwgMjExLCAxNjQsIDY5LCAxLCAxMjUsIAotICAgIDE0NiwgNjksIDEsIDEyNSwgMjE1LCAxODYsIDY5LCAxLCAxMjUsIDE1OSwgNjksIDEsIDEyNSwgMjI3LCA3OCwgNjksIDIyLCAKLSAgICAyLCAxMjUsIDE0NiwgNjksIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA2OSwgMjIsIDIsIDEyNSwgMTU5LCA2OSwgMjIsIDIsIAotICAgIDEyNSwgMjI3LCA3OCwgNjksIDEsIDIyNCwgNTUsIDIyMiwgMjAzLCA2OSwgMSwgMjI0LCA1NSwgMjMwLCAxNDksIDY5LCAxLCAKLSAgICAyMjQsIDU1LCAyNDgsIDE5OCwgNjksIDEsIDIyNCwgNTUsIDI0OCwgMTkzLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIAotICAgIDIwMSwgMjAxLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIDE5MiwgNjksIDEwOSwgMiwgMjI0LCA1NSwgMTc0LCAyMjgsIAotICAgIDExMywgNjksIDEsIDIxMywgOTYsIDIyOSwgMjM3LCAyMTMsIDkwLCA2OSwgMjIsIDIsIDIxMywgOTYsIDIyOSwgMjM3LCAKLSAgICAyNDAsIDIzOCwgNjksIDE0MywgMTMxLCAyMTMsIDk2LCAyMjksIDIzNywgMjM3LCA3OSwgNjksIDE0MywgMTMxLCAyMTMsIAotICAgIDk2LCAyMjksIDIzNywgMjI5LCAyMDIsIDIxOCwgMTgwLCA2OSwgMSwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAKLSAgICAyMDksIDEwOCwgNjksIDEsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjE3LCAxNTIsIDY5LCAyMiwgMiwgMjA0LCAKLSAgICA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyNDAsIDIzOCwgNjksIDIyLCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIAotICAgIDIwNywgMjQsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTYwLCA2OSwgMiwgMjA0LCA0NCwgCi0gICAgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1OSwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAKLSAgICAxNTgsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU3LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAKLSAgICAxNDYsIDIyOSwgMjM3LCAyMDgsIDE1NiwgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDIyMSwgMjI3LCAKLSAgICA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjAyLCAxNzYsIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIAotICAgIDIyOSwgMjM3LCAyMzgsIDg0LCA2OSwgMjIsIDIsIDIzOCwgMTg2LCAyMjksIDIzNywgNzUsIDY5LCAyMiwgMiwgMjI5LCAKLSAgICAyMDcsIDIyMCwgNzMsIDY5LCAyMiwgMiwgMjI5LCAyMDcsIDY4LCA2OSwgMjIsIDIsIDIyOSwgMjA3LCAyNDEsIDE2MSwgNjksIAotICAgIDEsIDIxMywgNjcsIDE3MywgNjksIDEsIDIxMywgNjcsIDIyOSwgMTQ0LCA2OSwgMSwgMjEzLCA2NywgMjM5LCA4LCA2OSwgMSwgCi0gICAgMjEzLCA2NywgMjQ3LCA5MiwgNjksIDEsIDIxMywgNjcsIDIwMiwgMTE2LCA2OSwgMSwgMjEzLCA2NywgMjIxLCAxMSwgNjksIAotICAgIDEsIDIxMywgNjcsIDI0NCwgMjEyLCA2OSwgMSwgMjEzLCA2NywgMjAxLCAyMDEsIDY5LCAxLCAyMTMsIDY3LCAyMTgsIDIwOCwgCi0gICAgNjksIDEsIDIxMywgNjcsIDI0MCwgMTA4LCA2OSwgMSwgMjEzLCA2NywgMjQ5LCAzMiwgNjksIDEsIDIxMywgNjcsIDIwOSwgCi0gICAgMTA4LCA2OSwgMSwgMjEzLCA2NywgMTUyLCA2OSwgMTA5LCAyLCAyMTMsIDY3LCAxNzQsIDIwNCwgMTExLCA2OSwgMjIsIDIsIAotICAgIDIxMywgNjcsIDI1MiwgMjUsIDY5LCAyMiwgMiwgMjEzLCA2NywgNzQsIDY5LCAyMiwgMiwgMjEzLCA2NywgMTg4LCA1NSwgCi0gICAgNjksIDIyLCAyLCAyMTMsIDY3LCA0NiwgMjAzLCAxMjQsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1OSwgNjksIDIsIDIxMywgCi0gICAgNjcsIDIwOCwgMTU4LCA2OSwgMiwgMjEzLCA2NywgMjA4LCAxNTYsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1NSwgNjksIDIsIAotICAgIDIxMywgNjcsIDI0NSwgMTU2LCAyMDgsIDE1OSwgNjksIDIsIDIxMywgNjcsIDI0NSwgMTU2LCAyMDgsIDE1OCwgNjksIDIsIAotICAgIDIxMywgNjcsIDI0NSwgMTU2LCAyNDEsIDk1LCAyMDgsIDE2MSwgNjksIDEsIDIxNSwgMTMwLCAyMTksIDEzOSwgMjQwLCAKLSAgICAxMDgsIDY5LCAyLCAyMTUsIDEzMCwgMjE5LCAxMzksIDIwOCwgMTU2LCA2OSwgMjEzLCA2NywgMTcsIDIwMiwgODQsIDY5LCAKLSAgICAyMTMsIDY3LCAxNywgMTA1LCA2OSwgMjEzLCA2NywgMTcsIDEwOCwgNjksIDIxMywgNjcsIDE3LCAxNDcsIDY5LCAyMTMsIAotICAgIDY3LCAxNywgMTQ5LCA2OSwgMjEzLCA2NywgMTcsIDE3MCwgNjksIDIxMywgNjcsIDE3LCAxOTUsIDY5LCAyMTMsIDY3LCAxNywgCi0gICAgMjEzLCAxMTEsIDY5LCAyMTMsIDY3LCAxNywgMTk5LCA2OSwgMjEzLCA2NywgMTcsIDIyMiwgNjMsIDY5LCAyLCAyMjksIAotICAgIDEzNywgMjA4LCAxNjAsIDY5LCAyLCAyMjksIDEzNywgMjA4LCAxNTgsIDY5LCAyMiwgMiwgMjUxLCA1MSwgNjMsIDY5LCAyMiwgCi0gICAgMiwgMjUxLCA1MSwgMjUxLCA2NCwgNjksIDE2LCAyMTMsIDY3LCAxMDUsIDY5LCAxNiwgMjEzLCA2NywgMjQwLCAyMTEsIAotICAgIDExNCwgNiwgMSwgMjUwLCAyMzEsIDExNCwgNiwgMSwgMjQ4LCAyNDIsIDExNCwgNiwgMSwgMjM4LCAyMzQsIDExNCwgNiwgMSwgCi0gICAgMjQzLCA5MywgMTE0LCA2LCAxLCAyNDEsIDkyLCAxMTQsIDYsIDEsIDIwNSwgMjEzLCAxMTQsIDYsIDEsIDIwMiwgODcsIAotICAgIDExNCwgNiwgMSwgMjA5LCAyMzAsIDExNCwgNiwgMSwgMjMxLCA0OSwgMTE0LCA2LCAxLCAyMzAsIDQsIDExNCwgNiwgMSwgCi0gICAgMjI4LCAyLCAxMTQsIDYsIDEsIDIyNSwgMTIyLCAxMTQsIDYsIDEsIDIyMywgNzQsIDExNCwgNiwgMSwgMjIwLCAzMSwgMTE0LCAKLSAgICA2LCAxLCAyMTksIDkxLCAxMTQsIDYsIDEsIDIwMiwgNzYsIDExNCwgNiwgMSwgMjE2LCAyMDIsIDExNCwgNiwgMSwgMjE0LCAKLSAgICAyNDMsIDExNCwgNiwgMSwgMjA5LCAyMTgsIDExNCwgNiwgMSwgMjA2LCAyNTUsIDExNCwgNiwgMSwgMjE4LCAyMDAsIDExNCwgCi0gICAgNiwgMSwgMjI5LCAxMzIsIDExNCwgNiwgMSwgMjM4LCAxMTAsIDExNCwgNiwgMSwgMjE3LCAxMTEsIDExNCwgNiwgMSwgMjEyLCAKLSAgICAyNTUsIDExNCwgNiwgMSwgMjQ2LCAxMjksIDExNCwgNiwgMSwgMjQ3LCA2MSwgMTE0LCA2LCAxLCAyMzAsIDEzMywgMTE0LCAKLSAgICA2LCAxLCAyNDYsIDY4LCAxMTQsIDYsIDEsIDI0NiwgMTgzLCAxMTQsIDYsIDEsIDIwMywgMTgwLCAxMTQsIDYsIDEsIDIzMCwgCi0gICAgMTQ2LCAxMTQsIDYsIDEsIDIzNywgMTU0LCAxMTQsIDYsIDEsIDIzNywgNjcsIDExNCwgNiwgMSwgMjM2LCAyNTQsIDExNCwgCi0gICAgNiwgMSwgMjA0LCA2MiwgMTE0LCA2LCAxLCAyMzcsIDkyLCAxMTQsIDYsIDEsIDIzNiwgMTMyLCAxMTQsIDYsIDEsIDIwMiwgCi0gICAgMjQ5LCAxMTQsIDYsIDEsIDI1MSwgOTgsIDExNCwgMSwgMjUwLCAyMzEsIDExNCwgMSwgMjQ4LCAyNDIsIDExNCwgMSwgMjM4LCAKLSAgICAyMzQsIDExNCwgMSwgMjQzLCA5MywgMTE0LCAxLCAyNDEsIDkyLCAxMTQsIDEsIDIwNSwgMjEzLCAxMTQsIDEsIDIwMiwgODcsIAotICAgIDExNCwgMSwgMjA5LCAyMzAsIDExNCwgMSwgMjMxLCA0OSwgMTE0LCAxLCAyMzAsIDQsIDExNCwgMSwgMjI4LCAyLCAxMTQsIAotICAgIDEsIDIyNSwgMTIyLCAxMTQsIDEsIDIyMywgNzQsIDExNCwgMSwgMjIwLCAzMSwgMTE0LCAxLCAyMTksIDkxLCAxMTQsIDEsIAotICAgIDIwMiwgNzYsIDExNCwgMSwgMjE2LCAyMDIsIDExNCwgMSwgMjE0LCAyNDMsIDExNCwgMSwgMjA5LCAyMTgsIDExNCwgMSwgCi0gICAgMjA2LCAyNTUsIDExNCwgMSwgMjE4LCAyMDAsIDExNCwgMSwgMjI5LCAxMzIsIDExNCwgMSwgMjM4LCAxMTAsIDExNCwgMSwgCi0gICAgMjE3LCAxMTEsIDExNCwgMSwgMjEyLCAyNTUsIDExNCwgMSwgMjQ2LCAxMjksIDExNCwgMSwgMjQ3LCA2MSwgMTE0LCAxLCAKLSAgICAyMzAsIDEzMywgMTE0LCAxLCAyNDYsIDY4LCAxMTQsIDEsIDI0NiwgMTgzLCAxMTQsIDEsIDIwMywgMTgwLCAxMTQsIDEsIAotICAgIDIzMCwgMTQ2LCAxMTQsIDEsIDIzNywgMTU0LCAxMTQsIDEsIDIzNywgNjcsIDExNCwgMSwgMjM2LCAyNTQsIDExNCwgMSwgCi0gICAgMjA0LCA2MiwgMTE0LCAxLCAyMzcsIDkyLCAxMTQsIDEsIDIzNiwgMTMyLCAxMTQsIDEsIDI0MCwgMjYsIDExNCwgMSwgMjAyLCAKLSAgICAyNDksIDExNCwgMSwgMjQxLCAxMTAsIDExNCwgMSwgMjA3LCAxNzQsIDIzOCwgMjM0LCAxMTQsIDEsIDI1MSwgNTksIDExNCwgCi0gICAgMjE5LCA4OSwgMjEzLCAxMzAsIDY1LCAxLCAxMTQsIDIyMywgNzQsIDExNCwgMSwgMjUxLCA5OCwgMTE0LCAxLCAyMzcsIDkxLCAKLSAgICA1NCwgMTE0LCAxLCAyMjgsIDEwNCwgNTQsIDI4LCAxMjMsIDIyOSwgNTksIDI4LCAxMjMsIDIxMSwgMTU2LCAyOCwgMTIzLCAKLSAgICAyMjIsIDkzLCAyOCwgMTIzLCAyMDgsIDI0MCwgMjgsIDEyMywgMjExLCAxNDUsIDI4LCAxMjMsIDIxNiwgNDcsIDI4LCAxMjMsIAotICAgIDIyNCwgMTQxLCAyOCwgMTIzLCAyMTgsIDE1MywgMjgsIDEyMywgMjExLCAxNTMsIDI4LCAxMjMsIDIxMiwgMTExLCAyOCwgCi0gICAgMTIzLCAyMTEsIDE1MCwgMjgsIDEyMywgMjMxLCAxMDYsIDI4LCAxMjMsIDI0NiwgNzQsIDI4LCAxMjMsIDIxMSwgMTYwLCAKLSAgICAyOCwgMTIzLCAyNDYsIDEzOCwgMjgsIDEyMywgMjI5LCAxMjAsIDI4LCAxMjMsIDIwOSwgNjYsIDI4LCAxMjMsIDIxOCwgCi0gICAgMTkwLCAyOCwgMTIzLCAyMzYsIDI1MSwgMjgsIDEyMywgMjIyLCA4OSwgMjgsIDEyMywgMjExLCAxNTQsIDI4LCAxMjMsIAotICAgIDIyMiwgODMsIDI4LCAxMjMsIDIyMiwgODcsIDI4LCAxMjMsIDIwOCwgMjM3LCAyOCwgMTIzLCAyMTYsIDM1LCAyOCwgMTIzLCAKLSAgICAyMTEsIDE1MiwgMjgsIDEyMywgMjE2LCA0NSwgMjgsIDEyMywgMjI5LCAyNDMsIDI4LCAxMjMsIDIyNCwgMTM0LCAyOCwgCi0gICAgMTIzLCAyMjksIDI0NiwgMjgsIDEyMywgMjE4LCAxNDgsIDI4LCAxMjMsIDIxOCwgMTQ2LCAyOCwgMTIzLCAyMTgsIDEzNCwgCi0gICAgMjgsIDEyMywgMjE4LCAxNDIsIDI4LCAxMjMsIDIxOCwgMTQwLCAyOCwgMTIzLCAyMTgsIDEzNywgMjgsIDEyMywgMjE4LCAKLSAgICAxMzksIDI4LCAxMjMsIDIxOCwgMTM2LCAyOCwgMTIzLCAyMTgsIDE0MSwgMjgsIDEyMywgMjE4LCAxNTEsIDI4LCAxMjMsIAotICAgIDIxOCwgMTUyLCAyOCwgMTIzLCAyMTgsIDEzNSwgMjgsIDEyMywgMjE4LCAxNDUsIDI4LCAxMjMsIDIyOSwgMjQ0LCAyOCwgCi0gICAgMTIzLCAyMjksIDI0MiwgMjgsIDEyMywgMjEyLCAxMDQsIDI4LCAxMjMsIDIxMiwgMTAyLCAyOCwgMTIzLCAyMTIsIDk0LCAKLSAgICAyOCwgMTIzLCAyMTIsIDk3LCAyOCwgMTIzLCAyMTIsIDEwMywgMjgsIDEyMywgMjEyLCA5OSwgMjgsIDEyMywgMjEyLCA5OCwgCi0gICAgMjgsIDEyMywgMjEyLCA5NiwgMjgsIDEyMywgMjEyLCAxMDcsIDI4LCAxMjMsIDIxMiwgMTA5LCAyOCwgMTIzLCAyMTIsIAotICAgIDExMCwgMjgsIDEyMywgMjEyLCAxMDUsIDI4LCAxMjMsIDIxMiwgOTUsIDI4LCAxMjMsIDIxMiwgMTAwLCAyOCwgMTIzLCAKLSAgICAyMTIsIDEwOCwgMjgsIDEyMywgMjQ2LCAxMjAsIDI4LCAxMjMsIDI0NiwgMTE4LCAyOCwgMTIzLCAyNDYsIDIxMCwgMjgsIAotICAgIDEyMywgMjQ2LCAyMDgsIDI4LCAxMjMsIDIxOSwgMTA3LCAyOCwgMTIzLCAyMzEsIDEwMSwgMjgsIDEyMywgMjMxLCA5MiwgCi0gICAgMjgsIDEyMywgMjMxLCAxMDAsIDI4LCAxMjMsIDIzMSwgOTcsIDI4LCAxMjMsIDIzMSwgOTUsIDI4LCAxMjMsIDIzMSwgOTksIAotICAgIDI4LCAxMjMsIDIxMSwgMTU3LCAyOCwgMTIzLCAyMzEsIDEwNCwgMjgsIDEyMywgMjMxLCAxMDUsIDI4LCAxMjMsIDIzMSwgCi0gICAgOTMsIDI4LCAxMjMsIDIzMSwgOTgsIDI4LCAxMjMsIDIwMywgMjksIDI4LCAxMjMsIDI0NiwgNzMsIDI4LCAxMjMsIDI0NiwgCi0gICAgMTIxLCAyOCwgMTIzLCAyNDYsIDExOSwgMjgsIDEyMywgMjQ2LCAyMTEsIDI4LCAxMjMsIDI0NiwgMjA5LCAyOCwgMTIzLCAKLSAgICAyNDYsIDEzNiwgMjgsIDEyMywgMjQ2LCAxMzcsIDI4LCAxMjMsIDI0NiwgMTIyLCAyOCwgMTIzLCAyNDYsIDIxMiwgMjgsIAotICAgIDEyMywgMjE4LCAxODgsIDI4LCAxMjMsIDIyOSwgMjQ1LCAyOCwgMTIzLCAyMTEsIDE1OCwgMjgsIDEyMywgMjAzLCAzNSwgCi0gICAgMjgsIDEyMywgMjI5LCA1MCwgMjgsIDEyMywgMjIyLCA4NSwgMjgsIDEyMywgMjIyLCA5MSwgMjgsIDEyMywgMjIyLCA5MCwgCi0gICAgMjgsIDEyMywgMjA4LCAyMzQsIDI4LCAxMjMsIDI0MCwgNywgMjgsIDE3NiwgMjQwLCA3LCAyOCwgMTc2LCA2MywgMjgsIAotICAgIDE3NiwgMjUxLCAxMDksIDI4LCAxNzYsIDE5OCwgMjgsIDE3NiwgMjAzLCA5OSwgMjgsIDE3NiwgMjQxLCA1NSwgMjgsIDE3NiwgCi0gICAgNzQsIDI4LCAxNzYsIDIwMywgMzksIDI4LCAxNzYsIDIwMywgNTIsIDI4LCAxNzYsIDc4LCAyOCwgMTc2LCAyMDQsIDExMSwgCi0gICAgMjgsIDE3NiwgMjA0LCAxMDcsIDI4LCAxNzYsIDIyMCwgNzMsIDI4LCAxNzYsIDIwMiwgMjQ3LCAyOCwgMTc2LCA2OCwgMjgsIAotICAgIDE3NiwgMjA0LCA0OCwgMjgsIDE3NiwgMjA0LCA2MiwgMjgsIDE3NiwgMjA0LCAzMCwgMjgsIDE3NiwgMjAyLCAyMTMsIDI4LCAKLSAgICAxNzYsIDI0MCwgMjM4LCAyOCwgMTc2LCAyMDMsIDExLCAyOCwgMTc2LCA3NSwgMjgsIDE3NiwgMjU1LCAyMCwgMjgsIDE3NiwgCi0gICAgMjU1LCAxOSwgMjgsIDE3NiwgMjAzLCAxMTMsIDI4LCAxNzYsIDIwMywgMTExLCAyOCwgMTc2LCAyNDEsIDUzLCAyOCwgMTc2LCAKLSAgICAyNDEsIDUyLCAyOCwgMTc2LCAyNDEsIDU0LCAyOCwgMTc2LCAyMDMsIDM4LCAyOCwgMTc2LCAyMDMsIDM3LCAyOCwgMTc2LCAKLSAgICAyMjAsIDE4MSwgMjgsIDE3NiwgMjIwLCAxODIsIDI4LCAxNzYsIDIyMCwgMTc1LCAyOCwgMTc2LCAyMjAsIDE4MCwgMjgsIAotICAgIDE3NiwgMjIwLCAxNzgsIDI4LCAxNzYsIDIwMiwgMjQxLCAyOCwgMTc2LCAyMDIsIDI0MCwgMjgsIDE3NiwgMjAyLCAyMzksIAotICAgIDI4LCAxNzYsIDIwMiwgMjQyLCAyOCwgMTc2LCAyMDIsIDI0MywgMjgsIDE3NiwgMjA3LCA5NywgMjgsIDE3NiwgMjA3LCA5NiwgCi0gICAgMjgsIDE3NiwgMjA3LCA5NCwgMjgsIDE3NiwgMjA3LCA5MCwgMjgsIDE3NiwgMjA3LCA5MSwgMjgsIDE3NiwgMjAyLCAyMTIsIAotICAgIDI4LCAxNzYsIDIwMiwgMjA5LCAyOCwgMTc2LCAyMDIsIDIxMCwgMjgsIDE3NiwgMjAyLCAyMDQsIDI4LCAxNzYsIDIwMiwgCi0gICAgMjA1LCAyOCwgMTc2LCAyMDIsIDIwNiwgMjgsIDE3NiwgMjAyLCAyMDgsIDI4LCAxNzYsIDI0MCwgMjMyLCAyOCwgMTc2LCAKLSAgICAyNDAsIDIzNCwgMjgsIDE3NiwgMjAzLCAxMCwgMjgsIDE3NiwgMjM1LCAyMDUsIDI4LCAxNzYsIDIzNSwgMTk3LCAyOCwgCi0gICAgMTc2LCAyMzUsIDIwMCwgMjgsIDE3NiwgMjM1LCAxOTgsIDI4LCAxNzYsIDIzNSwgMjAyLCAyOCwgMTc2LCAyMzUsIDIwNCwgCi0gICAgMjgsIDE3NiwgMjUwLCAxMzcsIDI4LCAxNzYsIDI1MCwgMTM0LCAyOCwgMTc2LCAyNTAsIDEzMiwgMjgsIDE3NiwgMjUwLCAKLSAgICAxMzMsIDI4LCAxNzYsIDIxMSwgMTYxLCAyOCwgMTc2LCAyNTUsIDIxLCAyOCwgMTc2LCAyMDMsIDExMiwgMjgsIDE3NiwgCi0gICAgMjAzLCAzNiwgMjgsIDE3NiwgMjIwLCAxNzcsIDI4LCAxNzYsIDIyMCwgMTc2LCAyOCwgMTA3LCAyMjksIDU5LCAyOCwgMTA3LCAKLSAgICAyMTEsIDE1NiwgMjgsIDEwNywgMjI5LCA1MiwgMjgsIDEwNywgMjIyLCA5MywgMjgsIDEwNywgMjIyLCA5MSwgMjgsIDEwNywgCi0gICAgMjIyLCA5MCwgMjgsIDEwNywgMjA4LCAyNDAsIDI4LCAxMDcsIDIxNiwgNDcsIDI4LCAxMDcsIDIxNiwgNDIsIDI4LCAxMDcsIAotICAgIDIxNiwgMzksIDI4LCAxMDcsIDIxNiwgMzIsIDI4LCAxMDcsIDIxNiwgMjcsIDI4LCAxMDcsIDIxNiwgMjIsIDI4LCAxMDcsIAotICAgIDIxNiwgMzMsIDI4LCAxMDcsIDIxNiwgNDUsIDI4LCAxMDcsIDIyNCwgMTQxLCAyOCwgMTA3LCAyMTgsIDE1MywgMjgsIDEwNywgCi0gICAgMjE4LCAxNDIsIDI4LCAxMDcsIDIxMiwgMTExLCAyOCwgMTA3LCAyMTEsIDE1MCwgMjgsIDEwNywgMjMxLCAxMDYsIDI4LCAKLSAgICAxMDcsIDI0NiwgNzQsIDI4LCAxMDcsIDI0NiwgMTM4LCAyOCwgMTA3LCAyMjksIDEyMCwgMjgsIDEwNywgMjA5LCA2NiwgMjgsIAotICAgIDEwNywgMjE4LCAxOTAsIDI4LCAxMDcsIDIzNiwgMjUxLCAyOCwgMTA3LCAyMjksIDUzLCAyOCwgMTA3LCAyMjksIDUxLCAyOCwgCi0gICAgMTA3LCAyMjIsIDg5LCAyOCwgMTA3LCAyMjIsIDgzLCAyOCwgMTA3LCAyMjIsIDg1LCAyOCwgMTA3LCAyMjIsIDg4LCAyOCwgCi0gICAgMTA3LCAyMjIsIDg0LCAyOCwgMTA3LCAyMDgsIDIzNywgMjgsIDEwNywgMjA4LCAyMzQsIDI4LCAxMDcsIDIxNiwgNDAsIDI4LCAKLSAgICAxMDcsIDIxNiwgMzUsIDI4LCAxMDcsIDIxNiwgMjEsIDI4LCAxMDcsIDIxNiwgMjAsIDI4LCAxMDcsIDIxMSwgMTUyLCAyOCwgCi0gICAgMTA3LCAyMTYsIDM3LCAyOCwgMTA3LCAyMTYsIDM2LCAyOCwgMTA3LCAyMTYsIDI5LCAyOCwgMTA3LCAyMTYsIDMxLCAyOCwgCi0gICAgMTA3LCAyMTYsIDQ0LCAyOCwgMTA3LCAyMTYsIDI0LCAyOCwgMTA3LCAyMTYsIDM0LCAyOCwgMTA3LCAyMTYsIDQzLCAyOCwgCi0gICAgMTA3LCAyMTYsIDE5LCAyOCwgMTA3LCAyMjQsIDEzNywgMjgsIDEwNywgMjI0LCAxMzIsIDI4LCAxMDcsIDIyNCwgMTM0LCAKLSAgICAyOCwgMTA3LCAyMjQsIDEzMSwgMjgsIDEwNywgMjI0LCAxMjksIDI4LCAxMDcsIDIyNCwgMTM1LCAyOCwgMTA3LCAyMjQsIAotICAgIDE0MCwgMjgsIDEwNywgMjI0LCAxMzgsIDI4LCAxMDcsIDIyOSwgMjQ2LCAyOCwgMTA3LCAyMTgsIDE0NCwgMjgsIDEwNywgCi0gICAgMjE4LCAxNDUsIDI4LCAxMDcsIDIxOCwgMTUwLCAyOCwgMTA3LCAyMjksIDI0NCwgMjgsIDEwNywgMjEyLCAxMDQsIDI4LCAKLSAgICAxMDcsIDIxMiwgOTQsIDI4LCAxMDcsIDIxMiwgOTcsIDI4LCAxMDcsIDIxMiwgOTksIDI4LCAxMDcsIDIxOSwgMTA3LCAyOCwgCi0gICAgMTA3LCAyMzEsIDEwMSwgMjgsIDEwNywgMjMxLCA5NCwgMjgsIDEwNywgMjExLCAxNTcsIDI4LCAxMDcsIDIzMSwgMTAyLCAKLSAgICAyOCwgMTA3LCAyMDMsIDI5LCAyOCwgMTA3LCAyMDMsIDI1LCAyOCwgMTA3LCAyMDMsIDI2LCAyOCwgMTA3LCAyMTgsIDE4OCwgCi0gICAgMjgsIDEwNywgMjI5LCAyNDUsIDI4LCAxMDcsIDIzNiwgMjQ5LCAyOCwgMTA3LCAyMzYsIDI0NywgMjgsIDEwNywgMjM2LCAKLSAgICAyNTAsIDI4LCAxMDcsIDIzNiwgMjQ4LCAyOCwgMTA3LCAyMDMsIDM1LCAyOCwgMTA3LCAyMjksIDU1LCAyOCwgMTA3LCAyMjksIAotICAgIDU0LCAyOCwgMTA3LCAyMjksIDU4LCAyOCwgMTA3LCAyMjksIDU2LCAyOCwgMTA3LCAyMjksIDU3LCAyOCwgMTA3LCAyMTEsIAotICAgIDE1NCwgMzMsIDQsIDE1MiwgMzMsIDQsIDIzNiwgMjYsIDMzLCA0LCAyMzcsIDMsIDMzLCA0LCAyMzcsIDE1NywgMzMsIDQsIAotICAgIDIzNywgNDgsIDMzLCA0LCAyMzcsIDY3LCAzMywgNCwgMjM2LCAxMzYsIDMzLCA0LCAyMzYsIDEzNSwgMzMsIDQsIDIyOCwgCi0gICAgMTEzLCAzMywgNCwgMjI2LCAyMzksIDMzLCA0LCAyMjcsIDE0OCwgMzMsIDQsIDIyOCwgMTEyLCAzMywgNCwgMjI3LCAyMjYsIAotICAgIDMzLCA0LCAyMjcsIDIzNCwgMzMsIDQsIDIyNywgNDksIDMzLCA0LCAyMjYsIDIwNywgMzMsIDQsIDIzNywgMTIsIDMzLCA0LCAKLSAgICAyMzcsIDYsIDMzLCA0LCAyMzcsIDgsIDMzLCA0LCAyMzcsIDExLCAzMywgNCwgMjM3LCA5LCAzMywgNCwgMjM3LCAxMCwgMzMsIAotICAgIDQsIDIzNywgNywgMzMsIDQsIDIzNywgNSwgMzMsIDQsIDE5MiwgMzMsIDQsIDIyMywgMjQ2LCAzMywgNCwgMjI0LCAxNTUsIAotICAgIDMzLCA0LCAyMjUsIDE3NSwgMzMsIDQsIDIyNSwgOCwgMzMsIDQsIDIyNSwgMjAsIDMzLCA0LCAyMjQsIDgyLCAzMywgNCwgCi0gICAgMjIzLCAxODAsIDMzLCA0LCAyMTAsIDgwLCAzMywgNCwgMjEwLCA3NCwgMzMsIDQsIDIxMCwgNzYsIDMzLCA0LCAyMTAsIDc5LCAKLSAgICAzMywgNCwgMjEwLCA3NywgMzMsIDQsIDIxMCwgNzgsIDMzLCA0LCAyMTAsIDc1LCAzMywgNCwgMjEwLCA3MywgMzMsIDQsIAotICAgIDIxNiwgMjIwLCAzMywgNCwgMjE1LCAxNDUsIDMzLCA0LCAyMTYsIDU3LCAzMywgNCwgMjE2LCAyMTYsIDMzLCA0LCAyMTYsIAotICAgIDEzNSwgMzMsIDQsIDIxNiwgMTU4LCAzMywgNCwgMjE1LCAyMjcsIDMzLCA0LCAyMTUsIDExMSwgMzMsIDQsIDIxNSwgMzYsIAotICAgIDMzLCA0LCAyMTEsIDEwLCAzMywgNCwgMjEyLCAxNjIsIDMzLCA0LCAyMTUsIDMzLCAzMywgNCwgMjE0LCAxNjUsIDMzLCA0LCAKLSAgICAyMTQsIDE3NywgMzMsIDQsIDIxMiwgMTMsIDMzLCA0LCAyMTAsIDE3MiwgMzMsIDQsIDIxMywgOTAsIDMzLCA0LCAyMTIsIAotICAgIDE5OSwgMzMsIDQsIDIxMywgMTEsIDMzLCA0LCAyMTMsIDg1LCAzMywgNCwgMjEzLCA0MSwgMzMsIDQsIDIxMywgNDMsIDMzLCAKLSAgICA0LCAyMTIsIDI0MiwgMzMsIDQsIDIxMiwgMTgwLCAzMywgNCwgMjE3LCAxMjYsIDMzLCA0LCAyMTcsIDY1LCAzMywgNCwgCi0gICAgMjE3LCA4OCwgMzMsIDQsIDIxNywgMTI1LCAzMywgNCwgMjE3LCAxMDUsIDMzLCA0LCAyMTcsIDEwNiwgMzMsIDQsIDIxNywgCi0gICAgNzcsIDMzLCA0LCAyMTcsIDc2LCAzMywgNCwgMjE3LCAxOSwgMzMsIDQsIDIxNywgMTUsIDMzLCA0LCAyMTcsIDE4LCAzMywgCi0gICAgNCwgMjE3LCAxNiwgMzMsIDQsIDIxNywgMTcsIDMzLCA0LCAyMTcsIDEwMiwgMzMsIDQsIDIxNywgOTQsIDMzLCA0LCAyMTcsIAotICAgIDk3LCAzMywgNCwgMjE3LCAxMDEsIDMzLCA0LCAyMTcsIDk4LCAzMywgNCwgMjE3LCA5OSwgMzMsIDQsIDIxNywgOTYsIDMzLCAKLSAgICA0LCAyMTcsIDkzLCAzMywgNCwgMjE3LCA4OSwgMzMsIDQsIDIxNywgOTIsIDMzLCA0LCAyMTcsIDkwLCAzMywgNCwgMjE3LCAKLSAgICA5MSwgMzMsIDQsIDI0OSwgMzIsIDMzLCA0LCAyNDcsIDE5MywgMzMsIDQsIDI0OCwgODYsIDMzLCA0LCAyNDksIDMwLCAzMywgCi0gICAgNCwgMjQ4LCAxNTAsIDMzLCA0LCAyNDgsIDE2MiwgMzMsIDQsIDI0OCwgMjMsIDMzLCA0LCAyNDcsIDE0MiwgMzMsIDQsIAotICAgIDIwNiwgODYsIDMzLCA0LCAyMDQsIDE2MywgMzMsIDQsIDIwNSwgMjMwLCAzMywgNCwgMjA2LCA4NSwgMzMsIDQsIDIwNiwgCi0gICAgNTAsIDMzLCA0LCAyMDYsIDU1LCAzMywgNCwgMjA1LCAxODksIDMzLCA0LCAyMDQsIDE1NCwgMzMsIDQsIDIxMCwgMjIsIDMzLCAKLSAgICA0LCAyMDcsIDIwMywgMzMsIDQsIDIwOSwgMiwgMzMsIDQsIDIxMCwgMTgsIDMzLCA0LCAyMDksIDE3NiwgMzMsIDQsIDIwOSwgCi0gICAgMTg3LCAzMywgNCwgMTM1LCAzMywgNCwgMjA3LCAxNjAsIDMzLCA0LCAyNDcsIDkyLCAzMywgNCwgMjQ1LCAxMTAsIDMzLCA0LCAKLSAgICAyNDYsIDc5LCAzMywgNCwgMjQ3LCA5MSwgMzMsIDQsIDI0NiwgMjMwLCAzMywgNCwgMjQ2LCAyMzgsIDMzLCA0LCAyNDUsIAotICAgIDI1NCwgMzMsIDQsIDI0NSwgNzQsIDMzLCA0LCAyMDMsIDE4MiwgMzMsIDQsIDIwMywgMTUyLCAzMywgNCwgMjAzLCAxNzAsIAotICAgIDMzLCA0LCAyMDMsIDE4MSwgMzMsIDQsIDIwMywgMTc1LCAzMywgNCwgMjAzLCAxNzYsIDMzLCA0LCAyMDMsIDE2MCwgMzMsIAotICAgIDQsIDIwMywgMTU5LCAzMywgNCwgMjAzLCAxNDYsIDMzLCA0LCAyMDMsIDE0MiwgMzMsIDQsIDIwMywgMTQ1LCAzMywgNCwgCi0gICAgMjAzLCAxNDMsIDMzLCA0LCAyMDMsIDE0NCwgMzMsIDQsIDIwMSwgMjAxLCAzMywgNCwgMjIxLCA4NCwgMzMsIDQsIDIyMiwgCi0gICAgMTAwLCAzMywgNCwgMjIzLCAxMDYsIDMzLCA0LCAyMjIsIDIzNSwgMzMsIDQsIDIyMiwgMjQwLCAzMywgNCwgMjIxLCAxOTEsIAotICAgIDMzLCA0LCAyMjEsIDIwLCAzMywgNCwgMjIxLCAxMSwgMzMsIDQsIDIyMCwgMjI2LCAzMywgNCwgMjIwLCAyNDgsIDMzLCA0LCAKLSAgICAyMjEsIDEwLCAzMywgNCwgMjIxLCAwLCAzMywgNCwgMjIxLCAxLCAzMywgNCwgMjIwLCAyMzMsIDMzLCA0LCAyMjAsIDIxNiwgCi0gICAgMzMsIDQsIDIzOCwgNDUsIDYzLCAzMywgNCwgMjM4LCA0NSwgNjgsIDMzLCA0LCAyMzgsIDQ1LCA3NSwgMzMsIDQsIDIzOCwgCi0gICAgNDUsIDI1MiwgMjUsIDMzLCA0LCAyMzgsIDQ1LCAyNDEsIDE2MSwgMzMsIDQsIDIzOCwgNDUsIDc0LCAzMywgNCwgMjM4LCAKLSAgICA0NSwgNzgsIDMzLCA0LCAyMzgsIDQ1LCAyMDQsIDExMSwgMzMsIDQsIDE3MywgMzMsIDQsIDIyOCwgMjA5LCAzMywgNCwgCi0gICAgMjI5LCAxMDAsIDMzLCA0LCAyMzAsIDQxLCAzMywgNCwgMjI5LCAxOTgsIDMzLCA0LCAyMjksIDIwMSwgMzMsIDQsIDIyOSwgCi0gICAgMjYsIDMzLCA0LCAyMjksIDI1LCAzMywgNCwgMjI4LCAxNjcsIDMzLCA0LCAyMjgsIDE2MCwgMzMsIDQsIDIyOCwgMTY2LCAKLSAgICAzMywgNCwgMjI4LCAxNjEsIDMzLCA0LCAyMjgsIDE2MiwgMzMsIDQsIDIyOCwgMTUzLCAzMywgNCwgMjI4LCAxNDcsIDMzLCAKLSAgICA0LCAyMjgsIDE0OSwgMzMsIDQsIDIyOCwgMTUyLCAzMywgNCwgMjI4LCAxNTAsIDMzLCA0LCAyMjgsIDE1MSwgMzMsIDQsIAotICAgIDIyOCwgMTQ4LCAzMywgNCwgMjI4LCAxNDYsIDMzLCA0LCAyMjgsIDE0MiwgMzMsIDQsIDIyOCwgMTQ1LCAzMywgNCwgMjI4LCAKLSAgICAxNDMsIDMzLCA0LCAyMjgsIDE0NCwgMzMsIDQsIDIwNCwgMTExLCAzMywgNCwgMjAzLCAyMTcsIDMzLCA0LCAyMDQsIDMwLCAKLSAgICAzMywgNCwgMjA0LCAxMTAsIDMzLCA0LCAyMDQsIDU1LCAzMywgNCwgMjA0LCA2MiwgMzMsIDQsIDIwNCwgMCwgMzMsIDQsIAotICAgIDIwMywgMjU1LCAzMywgNCwgMjE4LCAxOTksIDYzLCAzMywgNCwgMjE4LCAxOTksIDY4LCAzMywgNCwgMjE4LCAxOTksIDc1LCAKLSAgICAzMywgNCwgMjE4LCAxOTksIDI1MiwgMjUsIDMzLCA0LCAyMTgsIDE5OSwgMjQxLCAxNjEsIDMzLCA0LCAyMTgsIDE5OSwgNzQsIAotICAgIDMzLCA0LCAyMTgsIDE5OSwgNzgsIDMzLCA0LCAyMDIsIDExNiwgMzMsIDQsIDIwMiwgNiwgMzMsIDQsIDIwMiwgMzksIDMzLCAKLSAgICA0LCAyMDIsIDExNCwgMzMsIDQsIDIwMiwgOTAsIDMzLCA0LCAyMDIsIDkyLCAzMywgNCwgMjAyLCAxNywgMzMsIDQsIDIwMSwgCi0gICAgMjQ5LCAzMywgNCwgMjAyLCA4MCwgMzMsIDQsIDIwMiwgNTcsIDMzLCA0LCAyMDIsIDY2LCAzMywgNCwgMjAyLCA3OSwgMzMsIAotICAgIDQsIDIwMiwgNzAsIDMzLCA0LCAyMDIsIDcxLCAzMywgNCwgMjAyLCA2MywgMzMsIDQsIDIwMiwgNDgsIDMzLCA0LCAxOTgsIAotICAgIDMzLCA0LCAyMDIsIDIxMywgMzMsIDQsIDIwMywgMTEsIDMzLCA0LCAyMDMsIDExMCwgMzMsIDQsIDIwMywgNDksIDMzLCA0LCAKLSAgICAyMDMsIDUyLCAzMywgNCwgMjAyLCAyNDcsIDMzLCA0LCAyMDIsIDIzOCwgMzMsIDQsIDI0NCwgMjEyLCAzMywgNCwgMjQyLCAKLSAgICA0MiwgMzMsIDQsIDI0MywgMjMzLCAzMywgNCwgMjQ0LCAyMTEsIDMzLCA0LCAyNDQsIDYxLCAzMywgNCwgMjQ0LCA3NSwgMzMsIAotICAgIDQsIDI0MywgMTEzLCAzMywgNCwgMjQyLCAxMCwgMzMsIDQsIDI0NCwgMTIwLCAzMywgNCwgMjQ0LCA4NSwgMzMsIDQsIDI0NCwgCi0gICAgOTcsIDMzLCA0LCAyNDQsIDExOSwgMzMsIDQsIDI0NCwgMTA3LCAzMywgNCwgMjQ0LCAxMDgsIDMzLCA0LCAyNDQsIDkwLCAKLSAgICAzMywgNCwgMjQ0LCA3NiwgMzMsIDQsIDIzMCwgMTgxLCAzMywgNCwgMjMwLCA4MiwgMzMsIDQsIDIzMCwgMTQxLCAzMywgNCwgCi0gICAgMjMwLCAxODAsIDMzLCA0LCAyMzAsIDE1OSwgMzMsIDQsIDIzMCwgMTYxLCAzMywgNCwgMjMwLCAxMDEsIDMzLCA0LCAyMzAsIAotICAgIDYyLCAzMywgNCwgMjM5LCA4LCAzMywgNCwgMjM3LCAyMzAsIDMzLCA0LCAyMzgsIDgxLCAzMywgNCwgMjM5LCA1LCAzMywgNCwgCi0gICAgMjM4LCAxODIsIDMzLCA0LCAyMzgsIDE5MCwgMzMsIDQsIDIzOCwgMzksIDMzLCA0LCAyMzgsIDM4LCAzMywgNCwgMjM3LCAKLSAgICAxOTAsIDMzLCA0LCAyMzcsIDE4NiwgMzMsIDQsIDIzNywgMTg5LCAzMywgNCwgMjM3LCAxODcsIDMzLCA0LCAyMzcsIDE4OCwgCi0gICAgMzMsIDQsIDIzOCwgMTU1LCAzMywgNCwgMjM4LCAxMzUsIDMzLCA0LCAyMzgsIDE0NSwgMzMsIDQsIDIzOCwgMTU0LCAzMywgCi0gICAgNCwgMjM4LCAxNDksIDMzLCA0LCAyMzgsIDE1MCwgMzMsIDQsIDIzOCwgMTM5LCAzMywgNCwgMjM4LCAxMjQsIDMzLCA0LCAKLSAgICAyMDksIDEwOCwgMzMsIDQsIDIwOSwgMjIsIDMzLCA0LCAyMDksIDcwLCAzMywgNCwgMjA5LCAxMDcsIDMzLCA0LCAyMDksIAotICAgIDkwLCAzMywgNCwgMjA5LCA5MiwgMzMsIDQsIDIwOSwgNDcsIDMzLCA0LCAyMDksIDEzLCAzMywgNCwgMjQ2LCAxOTksIDMzLCAKLSAgICA0LCAyNDYsIDk4LCAzMywgNCwgMjQ2LCAxNDIsIDMzLCA0LCAyNDYsIDE5OCwgMzMsIDQsIDI0NiwgMTY2LCAzMywgNCwgCi0gICAgMjQ2LCAxNzAsIDMzLCA0LCAyNDYsIDExNiwgMzMsIDQsIDI0NiwgODcsIDMzLCA0LCAyMTgsIDIwOCwgMzMsIDQsIDIxOCwgCi0gICAgMTczLCAzMywgNCwgMjE4LCAxOTIsIDMzLCA0LCAyMTgsIDIwNywgMzMsIDQsIDIxOCwgMTk0LCAzMywgNCwgMjE4LCAxOTUsIAotICAgIDMzLCA0LCAyMTgsIDE4MCwgMzMsIDQsIDIxOCwgMTY5LCAzMywgNCwgMjA4LCAyMCwgMzMsIDQsIDIwNywgMjQ5LCAzMywgNCwgCi0gICAgMjA3LCAyNTUsIDMzLCA0LCAyMDgsIDE5LCAzMywgNCwgMjA4LCAxMywgMzMsIDQsIDIwOCwgMTQsIDMzLCA0LCAyMDcsIAotICAgIDI1MywgMzMsIDQsIDIwNywgMjQ3LCAzMywgNCwgMjA3LCAxMDYsIDMzLCA0LCAyMDcsIDk4LCAzMywgNCwgMjA3LCAxMDIsIAotICAgIDMzLCA0LCAyMDcsIDEwNSwgMzMsIDQsIDIwNywgMTAzLCAzMywgNCwgMjA3LCAxMDQsIDMzLCA0LCAyMDcsIDEwMCwgMzMsIAotICAgIDQsIDIwNywgOTksIDMzLCA0LCAyNDAsIDEwOCwgMzMsIDQsIDIzOSwgMTA4LCAzMywgNCwgMjQwLCAyNiwgMzMsIDQsIDI0MCwgCi0gICAgMTA3LCAzMywgNCwgMjQwLCA1MywgMzMsIDQsIDI0MCwgNjAsIDMzLCA0LCAyMzksIDE4NiwgMzMsIDQsIDIzOSwgODYsIDMzLCAKLSAgICA0LCAxODUsIDMzLCA0LCAyMTcsIDE5MSwgMzMsIDQsIDIxOCwgMTY3LCAzMywgNCwgMjE5LCAxNjgsIDMzLCA0LCAyMTksIAotICAgIDIzLCAzMywgNCwgMjE5LCAzNCwgMzMsIDQsIDIxOCwgNjksIDMzLCA0LCAyMTcsIDE1MiwgMzMsIDQsIDIxNSwgMTAxLCAzMywgCi0gICAgNCwgMjIzLCAxNjksIDMzLCA0LCAyMzksIDgwLCAzMywgMzksIDIzOCwgMTc5LCAyNSwgMjIsIDIyNywgMTk2LCA4MiwgMzMsIAotICAgIDM5LCAyMiwgMjI3LCAxOTYsIDgyLCAzMywgMzksIDIzOCwgMTc5LCA4MiwgMzMsIDIxNCwgMTY4LCA4MiwgMzMsIDIwMywgCi0gICAgMjM3LCAzMywgMjM5LCAxMDIsIDIxMSwgNjEsIDMzLCAyNDUsIDIzMywgMzMsIDIxMywgMTQzLCAzMywgMjQ1LCAyNDIsIDMzLCAKLSAgICAyMTcsIDI0NiwgMjQ1LCAyNDIsIDMzLCAyMTcsIDQ3LCA4MiwgMzMsIDIxOSwgODksIDIxMywgMTMwLCAzMywgMTcsIDEwNSwgCi0gICAgMzMsIDE3LCAxMDgsIDMzLCAxNywgMTQ3LCAzMywgMTcsIDE0OSwgMzMsIDE3LCAxNzAsIDMzLCAxNywgMTk1LCAzMywgMTcsIAotICAgIDIxMywgMTExLCAzMywgMTcsIDE5OSwgMzMsIDE3LCAyMjIsIDYzLCAzMywgNDIsIDIwOSwgMTUyLCAzMywgNDIsIDIwNywgCi0gICAgMTUxLCAzMywgNDIsIDIwOSwgNTMsIDMzLCA0MiwgMjM5LCAxNTMsIDMzLCA0MiwgMjQwLCAxOCwgMzMsIDQyLCAyMTIsIDc0LCAKLSAgICAzMywgNDIsIDIxMywgMTA1LCAzMywgNDIsIDI0MSwgMTM0LCAzMywgNDIsIDIyMiwgNTgsIDMzLCA0MiwgMjM2LCAxMSwgMzMsIAotICAgIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMzMsIDQsIDIxNCwgMTczLCAyMjMsIDE4MCwgMzMsIDQsIDIyMywgMTc2LCAzMywgNCwgCi0gICAgMjIzLCAxNzcsIDMzLCA0LCAyMjMsIDE3OCwgMzMsIDQsIDIxNCwgMTczLCAyNDcsIDE0MiwgMzMsIDQsIDI0NywgMTM5LCAKLSAgICAzMywgNCwgMjQ3LCAxNDAsIDMzLCA0LCAyNDcsIDE0MSwgMzMsIDQsIDIxNCwgMTczLCAyMzksIDg2LCAzMywgNCwgMjM5LCAKLSAgICA4MiwgMzMsIDQsIDIzOSwgODMsIDMzLCA0LCAyMzksIDg0LCAzMywgNCwgMjE0LCAxNzMsIDIxNywgMTUyLCAzMywgNCwgCi0gICAgMjE3LCAxNDgsIDMzLCA0LCAyMTcsIDE0OSwgMzMsIDQsIDIxNywgMTUwLCAzMywgMjA4LCAxNjIsIDEzMSwgMjAyLCAyNTAsIAotICAgIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDQsIDIyLCAzMywgMjA4LCAxNjIsIDEzMSwgMjE2LCAyLCAzMywgMjA4LCAxNjIsIDEzMSwgCi0gICAgMjEyLCAyMjgsIDIxNiwgMiwgMzMsIDIwOCwgMTYyLCAxMzEsIDI0MywgMjA3LCAzMywgMjA4LCAxNjIsIDEzMSwgMjI5LCAKLSAgICAxNzksIDMzLCAyMDgsIDE2MiwgMTMxLCAyNDYsIDEyNCwgMzMsIDIwOCwgMTYyLCAxMzEsIDIzNywgMCwgMzMsIDIwOCwgCi0gICAgMTYyLCAxMzEsIDI0NCwgMjEsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMjgsIDE4MSwgOTAsIDEsIDYzLCA5MCwgMSwgNzQsIDkwLCAKLSAgICAxLCA3NSwgOTAsIDEsIDc4LCA5MCwgMSwgNjgsIDkwLCAxLCAyMDYsIDE2NCwgOTAsIDEsIDIzOSwgOCwgOTAsIDEsIDE3MywgCi0gICAgOTAsIDEsIDIzOCwgMTkwLCA5MCwgMSwgMjM4LCA4MSwgOTAsIDEsIDIzOCwgMzksIDkwLCAxLCAyMzcsIDIzMCwgOTAsIDEsIAotICAgIDIzNywgMTkyLCA5MCwgMSwgMTUyLCA5MCwgMSwgMjM3LCA2NywgOTAsIDEsIDIzNywgMywgOTAsIDEsIDIzNiwgMTM2LCA5MCwgCi0gICAgMSwgMjM2LCAyNiwgOTAsIDEsIDIzNSwgMjU1LCA5MCwgMSwgMjI4LCAxMTMsIDkwLCAxLCAyMjcsIDIzNCwgOTAsIDEsIAotICAgIDIyNywgMTQ4LCA5MCwgMSwgMjI3LCA0OSwgOTAsIDEsIDIyNiwgMjM5LCA5MCwgMSwgMjI2LCAyMDgsIDkwLCAxLCAxOTIsIAotICAgIDkwLCAxLCAyMjUsIDIwLCA5MCwgMSwgMjI0LCAxNTUsIDkwLCAxLCAyMjQsIDgyLCA5MCwgMSwgMjIzLCAyNDYsIDkwLCAxLCAKLSAgICAyMDEsIDIwMSwgOTAsIDEsIDIzNiwgMTYwLCA5MCwgMSwgMjIzLCA5MywgOTAsIDEsIDIyMiwgMjQwLCA5MCwgMSwgMjIyLCAKLSAgICAxMDAsIDkwLCAxLCAyMjEsIDE5MSwgOTAsIDEsIDIyMSwgODQsIDkwLCAxLCAyMjEsIDIyLCA5MCwgMSwgMjE3LCA2NCwgOTAsIAotICAgIDEsIDIxNywgNTAsIDkwLCAxLCAyMTcsIDQzLCA5MCwgMSwgMjE3LCAzNCwgOTAsIDEsIDIxNywgMjMsIDkwLCAxLCAyMTcsIAotICAgIDIxLCA5MCwgMSwgMjE1LCAzNiwgOTAsIDEsIDE5NCwgOTAsIDEsIDIxNCwgMTc3LCA5MCwgMSwgMjEyLCAxNjIsIDkwLCAxLCAKLSAgICAyMTIsIDEzLCA5MCwgMSwgMjExLCAxMCwgOTAsIDEsIDIxMCwgMTc3LCA5MCwgMSwgMjQ0LCAyMTIsIDkwLCAxLCAyMTAsIAotICAgIDIyLCA5MCwgMSwgMjQ0LCA3NSwgOTAsIDEsIDIwOSwgMTg3LCA5MCwgMSwgMjQzLCAyMzMsIDkwLCAxLCAyMDksIDIsIDkwLCAKLSAgICAxLCAyNDMsIDExMywgOTAsIDEsIDI0MiwgNDIsIDkwLCAxLCAyNDIsIDEzLCA5MCwgMSwgMjQzLCAxMjQsIDkwLCAxLCAyMDgsIAotICAgIDE5MCwgOTAsIDEsIDIwOCwgMTg5LCA5MCwgMSwgMjA4LCAxNzgsIDkwLCAxLCAyMDgsIDE3NywgOTAsIDEsIDIwOCwgMTc2LCAKLSAgICA5MCwgMSwgMjA4LCAxNzUsIDkwLCAxLCAyMDgsIDIwLCA5MCwgMSwgMjA4LCAxNCwgOTAsIDEsIDIwNywgMjU1LCA5MCwgMSwgCi0gICAgMjA3LCAyNTMsIDkwLCAxLCAyMDcsIDI0OSwgOTAsIDEsIDIwNywgMjQ4LCA5MCwgMSwgMjA0LCAxMTEsIDkwLCAxLCAyMDQsIAotICAgIDYyLCA5MCwgMSwgMjA0LCAzMCwgOTAsIDEsIDIwNCwgMCwgOTAsIDEsIDIwMywgMjE3LCA5MCwgMSwgMjAzLCAyMDQsIDkwLCAKLSAgICAxLCAxOTgsIDkwLCAxLCAyMDMsIDUyLCA5MCwgMSwgMjAzLCAxMSwgOTAsIDEsIDIwMiwgMjQ3LCA5MCwgMSwgMjAyLCAyMTMsIAotICAgIDkwLCAxLCAyMDIsIDE3NywgOTAsIDEsIDIyMywgMTg3LCA5MCwgNSwgMSwgMjAzLCA1MiwgOTAsIDUsIDEsIDIwMywgMTEsIAotICAgIDkwLCA1LCAxLCAyMDIsIDI0NywgOTAsIDUsIDEsIDIwMiwgMjEzLCA5MCwgNSwgMSwgMjAyLCAxNzcsIDkwLCA1LCAxLCAKLSAgICAyMjMsIDE4NywgMTksIDIwLCAyMzUsIDIyMCwgMTksIDIwLCA3NCwgMTksIDIwLCAyNTEsIDI0NSwgMTksIDIwLCA3NSwgMTksIAotICAgIDIwLCAyMzEsIDgzLCAxOSwgMjAsIDc4LCAxOSwgMjAsIDIyMCwgMTgsIDE5LCAyMCwgMjAzLCAxMjMsIDIyMCwgMTgsIDE5LCAKLSAgICAyMCwgODgsIDI0MSwgMTYxLCAxOSwgMjAsIDg4LCA3NSwgMTksIDIwLCA2MywgMTksIDIwLCAyNTIsIDI1LCAxOSwgMjAsIAotICAgIDIwNCwgNjIsIDE5LCAyMCwgMTk2LCAyMDQsIDYyLCAxOSwgMjAsIDIwNCwgMzAsIDE5LCAyMCwgMTk2LCAyMDQsIDMwLCAxOSwgCi0gICAgMjAsIDIwNCwgMTksIDE5LCAyMCwgMTk2LCAyMDQsIDE5LCAxOSwgMjAsIDIwNCwgMCwgMTksIDIwLCAxOTYsIDIwNCwgMCwgCi0gICAgMTksIDIwLCAyMDMsIDI0NCwgMTksIDIwLCAxOTYsIDIwMywgMjQ0LCAxOSwgMjAsIDIyMywgNjgsIDIwMywgMjQ0LCAxOSwgCi0gICAgMjAsIDIwNCwgMTExLCAxOSwgMjAsIDE5NiwgMjA0LCAxMTEsIDE5LCAyMCwgMjA0LCAxMTAsIDE5LCAyMCwgMTk2LCAyMDQsIAotICAgIDExMCwgMTksIDIwLCAyMjMsIDY4LCAyMDQsIDExMCwgMTksIDIwLCAyNTEsIDY0LCAxOSwgMjAsIDIwMywgMTIzLCAyMDQsIAotICAgIDE0NCwgMTksIDIwLCAyMzgsIDQ1LCAyMTEsIDYxLCAxOSwgMjAsIDQ2LCAxNjUsIDE5LCAyMCwgNDYsIDIzNywgMjUzLCAxOSwgCi0gICAgMjAsIDQ2LCAyNDcsIDI0OCwgMTYyLCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjA4LCAxNDUsIDE2MiwgMjE1LCAyNTIsIDE5LCAKLSAgICAyMCwgNDYsIDUwLCAxNjIsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgNTIsIDE2NSwgMTksIAotICAgIDIwLCA0NiwgNTIsIDIxMiwgMjI4LCA4MCwgMjExLCAxOSwgMTksIDIwLCA0NiwgMTAxLCAyNDMsIDg1LCAxOSwgMjAsIDQ2LCAKLSAgICAyMTIsIDIyOCwgMjM2LCAxMDYsIDk1LCAxOSwgMjAsIDQ2LCAyMTgsIDc2LCAxOSwgMjAsIDQ2LCAxMjEsIDIxMCwgMywgMTksIAotICAgIDIwLCAyNDEsIDkyLCAxOSwgMjAsIDIzMSwgNDksIDE5LCAyMCwgMjIwLCAzMSwgMTksIDIwLCAyNTAsIDIzMSwgMTksIDIwLCAKLSAgICAyMTksIDM0LCAxOSwgMjAsIDIxOSwgMTY2LCAxOSwgMjAsIDIxOCwgMTY3LCAxOSwgMjAsIDIxOCwgMTI5LCAxOSwgMjAsIAotICAgIDIxOCwgNjksIDE5LCAyMCwgMjE4LCA0NSwgMTksIDIwLCAyMDMsIDEyMywgMjE4LCA0NSwgMTksIDIwLCA4OCwgMjM3LCA0OCwgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAzLCAxOSwgMjAsIDE4NSwgMTksIDIwLCAyMTksIDE2OCwgMTksIDIwLCAyMTcsIDE1MCwgMTksIAotICAgIDIwLCAxOTYsIDIxNywgMTUwLCAxOSwgMjAsIDIxNywgMTQ4LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDgsIDE5LCAyMCwgMjE3LCAKLSAgICAxNDcsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NywgMTksIDIwLCAyMTcsIDE0NSwgMTksIDIwLCAxOTYsIDIxNywgMTQ1LCAxOSwgCi0gICAgMjAsIDIxNywgMTQ0LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDQsIDE5LCAyMCwgMjE3LCAxNTIsIDE5LCAyMCwgMTk2LCAyMTcsIAotICAgIDE1MiwgMTksIDIwLCAyMTcsIDE1MSwgMTksIDIwLCAxOTYsIDIxNywgMTUxLCAxOSwgMjAsIDIwMywgMTIzLCAyMTcsIDE1MSwgCi0gICAgMTksIDIwLCAyMTksIDE4NCwgMTksIDIwLCAxOTYsIDIxOSwgMTg0LCAxOSwgMjAsIDg4LCAyMzcsIDE3MSwgMTksIDIwLCAKLSAgICAyMDksIDE4NywgMTksIDIwLCAyMTAsIDE2LCAxOSwgMjAsIDIwOSwgMiwgMTksIDIwLCAyMDgsIDI0MiwgMTksIDIwLCAxMzUsIAotICAgIDE5LCAyMCwgMjA4LCAxNDgsIDE5LCAyMCwgMjAzLCAxMjMsIDIwOCwgMTQ4LCAxOSwgMjAsIDg4LCAyNDQsIDYxLCAxOSwgCi0gICAgMjAsIDg4LCAyNDMsIDIzMywgMTksIDIwLCAyMTAsIDIyLCAxOSwgMjAsIDIxMCwgMTgsIDE5LCAyMCwgMjA3LCAxNTgsIDE5LCAKLSAgICAyMCwgMTk2LCAyMDcsIDE1OCwgMTksIDIwLCAyMDcsIDE0MCwgMTksIDIwLCAxOTYsIDIwNywgMTQwLCAxOSwgMjAsIDIwNywgCi0gICAgMTM5LCAxOSwgMjAsIDE5NiwgMjA3LCAxMzksIDE5LCAyMCwgMTA4LCAxOSwgMjAsIDE5NiwgMTA4LCAxOSwgMjAsIDIwNywgCi0gICAgMTMwLCAxOSwgMjAsIDE5NiwgMjA3LCAxMzAsIDE5LCAyMCwgMjA3LCAxNjAsIDE5LCAyMCwgMTk2LCAyMDcsIDE2MCwgMTksIAotICAgIDIwLCAyMDcsIDE1OSwgMTksIDIwLCAxOTYsIDIwNywgMTU5LCAxOSwgMjAsIDIyMywgNjgsIDIwNywgMTU5LCAxOSwgMjAsIAotICAgIDIxMCwgNjksIDE5LCAyMCwgMjA3LCAyMzYsIDE5LCAyMCwgMjA3LCAyMjAsIDE5LCAyMCwgMjA3LCAyMTgsIDE5LCAyMCwgCi0gICAgMjA3LCAyNDEsIDE5LCAyMCwgMjI5LCAyMDEsIDE5LCAyMCwgMjMwLCAzNiwgMTksIDIwLCAyMjksIDEwMCwgMTksIDIwLCAKLSAgICAyMjksIDg3LCAxOSwgMjAsIDIyOSwgMjYsIDE5LCAyMCwgMjI5LCA2LCAxOSwgMjAsIDIwMywgMTIzLCAyMjksIDYsIDE5LCAKLSAgICAyMCwgMTczLCAxOSwgMjAsIDIzMCwgNDEsIDE5LCAyMCwgMjI4LCAxNjIsIDE5LCAyMCwgMTk2LCAyMjgsIDE2MiwgMTksIAotICAgIDIwLCAyMjgsIDE2MCwgMTksIDIwLCAxOTYsIDIyOCwgMTYwLCAxOSwgMjAsIDIyOCwgMTU5LCAxOSwgMjAsIDE5NiwgMjI4LCAKLSAgICAxNTksIDE5LCAyMCwgMjI4LCAxNTcsIDE5LCAyMCwgMTk2LCAyMjgsIDE1NywgMTksIDIwLCAyMjgsIDE1NiwgMTksIDIwLCAKLSAgICAxOTYsIDIyOCwgMTU2LCAxOSwgMjAsIDIyOCwgMTY3LCAxOSwgMjAsIDE5NiwgMjI4LCAxNjcsIDE5LCAyMCwgMjI4LCAxNjYsIAotICAgIDE5LCAyMCwgMTk2LCAyMjgsIDE2NiwgMTksIDIwLCAyMjMsIDY4LCAyMjgsIDE2NiwgMTksIDIwLCAyMzAsIDU0LCAxOSwgCi0gICAgMjAsIDIyOCwgMTY4LCAxOSwgMjAsIDIxMSwgMjM3LCAyMjksIDE5MSwgMTksIDIwLCAyMTEsIDIzNywgMjI5LCA4OCwgMTksIAotICAgIDIwLCAyMTEsIDIzNywgMjI5LCAyMCwgMTksIDIwLCAyMTEsIDIzNywgMjMwLCAyMCwgMTksIDIwLCAyNDYsIDIzOCwgMTksIAotICAgIDIwLCAyNDcsIDkwLCAxOSwgMjAsIDI0NiwgNzksIDE5LCAyMCwgMjQ2LCA2OSwgMTksIDIwLCAyNDUsIDI1NCwgMTksIDIwLCAKLSAgICAyNDUsIDE4MCwgMTksIDIwLCAyMDMsIDEyMywgMjQ1LCAxODAsIDE5LCAyMCwgMjQ3LCA5MiwgMTksIDIwLCAyNDcsIDkxLCAKLSAgICAxOSwgMjAsIDI0NSwgNzIsIDE5LCAyMCwgMTk2LCAyNDUsIDcyLCAxOSwgMjAsIDI0NSwgNzAsIDE5LCAyMCwgMTk2LCAyNDUsIAotICAgIDcwLCAxOSwgMjAsIDI0NSwgNjksIDE5LCAyMCwgMTk2LCAyNDUsIDY5LCAxOSwgMjAsIDI0NSwgNjgsIDE5LCAyMCwgMTk2LCAKLSAgICAyNDUsIDY4LCAxOSwgMjAsIDI0NSwgNjcsIDE5LCAyMCwgMTk2LCAyNDUsIDY3LCAxOSwgMjAsIDI0NSwgNzQsIDE5LCAyMCwgCi0gICAgMTk2LCAyNDUsIDc0LCAxOSwgMjAsIDI0NSwgNzMsIDE5LCAyMCwgMTk2LCAyNDUsIDczLCAxOSwgMjAsIDIyMywgNjgsIAotICAgIDI0NSwgNzMsIDE5LCAyMCwgMjQ3LCAxMjUsIDE5LCAyMCwgMjE0LCAyMDYsIDIwOSwgMTEwLCAxOSwgMjAsIDIyNSwgMjAsIAotICAgIDE5LCAyMCwgMjI1LCAxNzQsIDE5LCAyMCwgMjI0LCAxNTUsIDE5LCAyMCwgMjI0LCAxMjUsIDE5LCAyMCwgMjI0LCA4MiwgCi0gICAgMTksIDIwLCAyMjQsIDM1LCAxOSwgMjAsIDIwMywgMTIzLCAyMjQsIDM1LCAxOSwgMjAsIDE5MiwgMTksIDIwLCAyMjUsIAotICAgIDE3NSwgMTksIDIwLCAyMjMsIDE3OCwgMTksIDIwLCAxOTYsIDIyMywgMTc4LCAxOSwgMjAsIDIyMywgMTc2LCAxOSwgMjAsIAotICAgIDE5NiwgMjIzLCAxNzYsIDE5LCAyMCwgMjIzLCAxNzUsIDE5LCAyMCwgMTk2LCAyMjMsIDE3NSwgMTksIDIwLCAyMjMsIDE3NCwgCi0gICAgMTksIDIwLCAxOTYsIDIyMywgMTc0LCAxOSwgMjAsIDIyMywgMTczLCAxOSwgMjAsIDE5NiwgMjIzLCAxNzMsIDE5LCAyMCwgCi0gICAgMjIzLCAxODAsIDE5LCAyMCwgMTk2LCAyMjMsIDE4MCwgMTksIDIwLCAyMjMsIDE3OSwgMTksIDIwLCAxOTYsIDIyMywgMTc5LCAKLSAgICAxOSwgMjAsIDIyMywgNjgsIDIyMywgMTc5LCAxOSwgMjAsIDIyNiwgMTg1LCAxOSwgMjAsIDE5NiwgMjI2LCAxODUsIDE5LCAKLSAgICAyMCwgMjI0LCAxNTksIDE5LCAyMCwgMjUwLCA0OCwgMjI2LCAxODUsIDE5LCAyMCwgMjE0LCAyMDYsIDIyNiwgMTg1LCAxOSwgCi0gICAgMjAsIDIyMiwgMjQwLCAxOSwgMjAsIDIyMywgMTA1LCAxOSwgMjAsIDIyMiwgMTAwLCAxOSwgMjAsIDIyMiwgNzUsIDE5LCAKLSAgICAyMCwgMjIxLCAxOTEsIDE5LCAyMCwgMjIxLCAxODAsIDE5LCAyMCwgMjAzLCAxMjMsIDIyMSwgMTgwLCAxOSwgMjAsIDIwMSwgCi0gICAgMjAxLCAxOSwgMjAsIDIyMywgMTA2LCAxOSwgMjAsIDIyMSwgMTgsIDE5LCAyMCwgMTk2LCAyMjEsIDE4LCAxOSwgMjAsIAotICAgIDIyMSwgMjAsIDE5LCAyMCwgMTk2LCAyMjEsIDIwLCAxOSwgMjAsIDIyMSwgMTksIDE5LCAyMCwgMTk2LCAyMjEsIDE5LCAxOSwgCi0gICAgMjAsIDIyMywgNjgsIDIyMSwgMTksIDE5LCAyMCwgMjIzLCAxNjMsIDE5LCAyMCwgODgsIDIyMiwgMjA1LCAxOSwgMjAsIAotICAgIDIyMiwgMTA1LCAxOSwgMjAsIDIyNywgMjM0LCAxOSwgMjAsIDIyOCwgMTExLCAxOSwgMjAsIDIyNywgMTQ4LCAxOSwgMjAsIAotICAgIDIyNywgMTMwLCAxOSwgMjAsIDIyNywgNDksIDE5LCAyMCwgMjI3LCAxOCwgMTksIDIwLCAyMDMsIDEyMywgMjI3LCAxOCwgCi0gICAgMTksIDIwLCAyMjgsIDExMywgMTksIDIwLCAyMjgsIDExMiwgMTksIDIwLCAyMjYsIDIwNSwgMTksIDIwLCAxOTYsIDIyNiwgCi0gICAgMjA1LCAxOSwgMjAsIDIyNiwgMjA0LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDQsIDE5LCAyMCwgMjI2LCAyMDMsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjYsIDIwMywgMTksIDIwLCAyMjYsIDIwMiwgMTksIDIwLCAxOTYsIDIyNiwgMjAyLCAxOSwgMjAsIDIyNiwgMjAxLCAKLSAgICAxOSwgMjAsIDE5NiwgMjI2LCAyMDEsIDE5LCAyMCwgMjI2LCAyMDcsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNywgMTksIDIwLCAKLSAgICAyMjYsIDIwNiwgMTksIDIwLCAxOTYsIDIyNiwgMjA2LCAxOSwgMjAsIDE1OSwgMTksIDIwLCAxOTYsIDE1OSwgMTksIDIwLCAKLSAgICAxNzQsIDE1OSwgMTksIDIwLCAyMTQsIDE3NywgMTksIDIwLCAyMTUsIDMxLCAxOSwgMjAsIDIxMiwgMTYyLCAxOSwgMjAsIAotICAgIDIxMiwgMTQyLCAxOSwgMjAsIDIxMiwgMTMsIDE5LCAyMCwgMjExLCAyNTAsIDE5LCAyMCwgMjAzLCAxMjMsIDIxMSwgMjUwLCAKLSAgICAxOSwgMjAsIDIxNSwgMzYsIDE5LCAyMCwgMjE1LCAzMywgMTksIDIwLCAyMTAsIDE2OCwgMTksIDIwLCAxOTYsIDIxMCwgCi0gICAgMTY4LCAxOSwgMjAsIDIxMCwgMTYyLCAxOSwgMjAsIDE5NiwgMjEwLCAxNjIsIDE5LCAyMCwgMjEwLCAxNjEsIDE5LCAyMCwgCi0gICAgMTk2LCAyMTAsIDE2MSwgMTksIDIwLCAyMTAsIDE1NywgMTksIDIwLCAxOTYsIDIxMCwgMTU3LCAxOSwgMjAsIDIxMCwgMTU2LCAKLSAgICAxOSwgMjAsIDE5NiwgMjEwLCAxNTYsIDE5LCAyMCwgMjEwLCAxNzIsIDE5LCAyMCwgMTk2LCAyMTAsIDE3MiwgMTksIDIwLCAKLSAgICAyMTAsIDE3MSwgMTksIDIwLCAxOTYsIDIxMCwgMTcxLCAxOSwgMjAsIDIyMywgNjgsIDIxMCwgMTcxLCAxOSwgMjAsIDE5NCwgCi0gICAgMTksIDIwLCAyNTAsIDQ4LCAxOTQsIDE5LCAyMCwgMjEwLCAxNzMsIDE5LCAyMCwgMjQ4LCA0MCwgMTk0LCAxOSwgMjAsIAotICAgIDIyNCwgMjgsIDIxMiwgNzAsIDE5LCAyMCwgMjIzLCA2OCwgMjEyLCA2MSwgMTksIDIwLCAyMjMsIDY4LCAyMTUsIDkyLCAxOSwgCi0gICAgMjAsIDIyMywgNjgsIDIxMSwgMTc5LCAxOSwgMjAsIDIyMywgNjgsIDIxMSwgMTMsIDE5LCAyMCwgMjIzLCA2OCwgMjEyLCAKLSAgICA2MCwgMTksIDIwLCAyMjMsIDY4LCAyMTQsIDE4MCwgMTksIDIwLCAyMTMsIDQzLCAxOSwgMjAsIDIxMywgMTEsIDE5LCAyMCwgCi0gICAgMjEzLCA2LCAxOSwgMjAsIDIxMiwgMjQyLCAxOSwgMjAsIDIxMiwgMjM2LCAxOSwgMjAsIDIxMywgOTAsIDE5LCAyMCwgMjEzLCAKLSAgICA4NSwgMTksIDIwLCAyMTIsIDE3NywgMTksIDIwLCAxOTYsIDIxMiwgMTc3LCAxOSwgMjAsIDIxMiwgMTc2LCAxOSwgMjAsIAotICAgIDE5NiwgMjEyLCAxNzYsIDE5LCAyMCwgMjEyLCAxNzUsIDE5LCAyMCwgMTk2LCAyMTIsIDE3NSwgMTksIDIwLCAyMTIsIDE3NCwgCi0gICAgMTksIDIwLCAxOTYsIDIxMiwgMTc0LCAxOSwgMjAsIDIxMiwgMTczLCAxOSwgMjAsIDE5NiwgMjEyLCAxNzMsIDE5LCAyMCwgCi0gICAgMjEyLCAxODAsIDE5LCAyMCwgMTk2LCAyMTIsIDE4MCwgMTksIDIwLCAyMTIsIDE3OSwgMTksIDIwLCAxOTYsIDIxMiwgMTc5LCAKLSAgICAxOSwgMjAsIDIxMywgOTIsIDE5LCAyMCwgMjAzLCA1MiwgMTksIDIwLCAyMDMsIDEwOCwgMTksIDIwLCAyMDMsIDExLCAxOSwgCi0gICAgMjAsIDIwMywgMiwgMTksIDIwLCAyMDIsIDI0NywgMTksIDIwLCAyMDIsIDIzMiwgMTksIDIwLCAyMDMsIDEyMywgMjAyLCAKLSAgICAyMzIsIDE5LCAyMCwgMTk4LCAxOSwgMjAsIDIwMywgMTEwLCAxOSwgMjAsIDIwMiwgMTc0LCAxOSwgMjAsIDE5NiwgMjAyLCAKLSAgICAxNzQsIDE5LCAyMCwgMjAyLCAxNzMsIDE5LCAyMCwgMTk2LCAyMDIsIDE3MywgMTksIDIwLCAyMDIsIDE3MiwgMTksIDIwLCAKLSAgICAxOTYsIDIwMiwgMTcyLCAxOSwgMjAsIDIwMiwgMTcxLCAxOSwgMjAsIDE5NiwgMjAyLCAxNzEsIDE5LCAyMCwgMjAyLCAxNzAsIAotICAgIDE5LCAyMCwgMTk2LCAyMDIsIDE3MCwgMTksIDIwLCAyMDIsIDE3NiwgMTksIDIwLCAxOTYsIDIwMiwgMTc2LCAxOSwgMjAsIAotICAgIDIwMiwgMTc1LCAxOSwgMjAsIDE5NiwgMjAyLCAxNzUsIDE5LCAyMCwgMjIzLCA2OCwgMjAyLCAxNzUsIDE5LCAyMCwgMjAzLCAKLSAgICAxMjQsIDE5LCAyMCwgMjQ4LCA4NCwgMjAzLCAxMjQsIDE5LCAyMCwgMTk2LCAyMDMsIDEyNCwgMTksIDIwLCAyMTQsIDIwNiwgCi0gICAgMjAzLCAxMSwgMTksIDIwLCAyMTYsIDE1OCwgMTksIDIwLCAyMTcsIDAsIDIxNiwgMTU4LCAxOSwgMjAsIDE5NiwgMjI3LCAKLSAgICAyMzQsIDE5LCAyMCwgMjE2LCAyMTUsIDE5LCAyMCwgMjE2LCA1NywgMTksIDIwLCAyMTYsIDMsIDE5LCAyMCwgMjE1LCAyMjcsIAotICAgIDE5LCAyMCwgMjE1LCAyMDgsIDE5LCAyMCwgMTk2LCAyMjcsIDQ5LCAxOSwgMjAsIDIxNiwgMjIwLCAxOSwgMjAsIDIxNiwgCi0gICAgMjE2LCAxOSwgMjAsIDE5NiwgMjI4LCAxMTMsIDE5LCAyMCwgMjE1LCAxMTAsIDE5LCAyMCwgMTk2LCAyMTUsIDExMCwgMTksIAotICAgIDIwLCAxNDYsIDE5LCAyMCwgMTk2LCAxNDYsIDE5LCAyMCwgMTc0LCAxNDYsIDE5LCAyMCwgMjQwLCA2MCwgMTksIDIwLCAKLSAgICAyNDAsIDEwNSwgMTksIDIwLCAyNDAsIDI2LCAxOSwgMjAsIDI0MCwgMTIsIDE5LCAyMCwgMjM5LCAxODYsIDE5LCAyMCwgCi0gICAgMjM5LCAxNzUsIDE5LCAyMCwgMjQwLCAxMDgsIDE5LCAyMCwgMjQwLCAxMDcsIDE5LCAyMCwgMjM5LCA4NSwgMTksIDIwLCAKLSAgICAxOTYsIDIzOSwgODUsIDE5LCAyMCwgMjQwLCAxNzQsIDE5LCAyMCwgMjA5LCA5MiwgMTksIDIwLCAyMjMsIDE2MSwgMjA5LCAKLSAgICA5MiwgMTksIDIwLCAyMDksIDcwLCAxOSwgMjAsIDIyMywgMTYxLCAyMDksIDcwLCAxOSwgMjAsIDIwOSwgNjQsIDE5LCAyMCwgCi0gICAgMjIzLCAxNjEsIDIwOSwgNjQsIDE5LCAyMCwgMjA5LCA0NywgMTksIDIwLCAyMDksIDQyLCAxOSwgMjAsIDIwOSwgMTA4LCAKLSAgICAxOSwgMjAsIDIwOSwgMTA3LCAxOSwgMjAsIDIwOSwgMTIsIDE5LCAyMCwgMTk2LCAyMDksIDEyLCAxOSwgMjAsIDIwOSwgCi0gICAgMTEwLCAxOSwgMjAsIDIwNywgMjI3LCAxOSwgMjAsIDIwNywgMjI1LCAxOSwgMjAsIDIwNywgMjI0LCAxOSwgMjAsIDIwNywgCi0gICAgMjI5LCAxOSwgMjAsIDIwNywgMjMwLCAxOSwgMjAsIDIwNywgMTI0LCAxOSwgMjAsIDIwNywgMTIzLCAxOSwgMjAsIDIwNywgCi0gICAgMTIyLCAxOSwgMjAsIDIwNywgMTI2LCAxOSwgMjAsIDIyMSwgMzksIDIzNywgNjcsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCAzLCAKLSAgICAxOSwgMjAsIDIyMSwgMzksIDIzNiwgMjM5LCAxOSwgMjAsIDIyMSwgMzksIDIzNiwgMTM2LCAxOSwgMjAsIDIyMSwgMzksIAotICAgIDIzNiwgMTE3LCAxOSwgMjAsIDIyMSwgMzksIDE1MiwgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDE1NywgMTksIDIwLCAyMjEsIAotICAgIDM5LCAyMzcsIDE3MSwgMTksIDIwLCAyMjEsIDM4LCAyMzcsIDE3MSwgMTksIDIwLCAyMzYsIDIyNiwgMTksIDIwLCAyMTcsIAotICAgIDEyMiwgMTksIDIwLCAyMTcsIDg4LCAxOSwgMjAsIDIxNywgODMsIDE5LCAyMCwgMjE3LCA3NywgMTksIDIwLCAyMTcsIDcyLCAKLSAgICAxOSwgMjAsIDIxNywgMTI2LCAxOSwgMjAsIDIxNywgMTI1LCAxOSwgMjAsIDIxNywgMTM0LCAxOSwgMjAsIDIwOCwgMTg2LCAKLSAgICAxOSwgMjAsIDIwOCwgMTg0LCAxOSwgMjAsIDIwOCwgMTgzLCAxOSwgMjAsIDIwOCwgMTg3LCAxOSwgMjAsIDE5NiwgMjE2LCAKLSAgICAxNTgsIDE5LCAyMCwgMTk2LCAyMTYsIDU3LCAxOSwgMjAsIDE5NiwgMjE1LCAyMjcsIDE5LCAyMCwgMTk2LCAyMTYsIDIyMCwgCi0gICAgMTksIDIwLCAyMjIsIDIwMSwgMTksIDIwLCAyMjIsIDE1MSwgMTksIDIwLCAyMjIsIDE0NywgMTksIDIwLCAyMjIsIDEyOCwgCi0gICAgMTksIDIwLCAyMjIsIDEyMywgMTksIDIwLCAyMjIsIDIwMywgMTksIDIwLCAyMjIsIDIwMiwgMTksIDIwLCAyMjIsIDIwNSwgCi0gICAgMTksIDIwLCAyMjEsIDIyMCwgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCA0MywgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCAxMSwgCi0gICAgMTksIDIwLCAyMTQsIDIwNiwgMjEyLCAyNDIsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMywgOTAsIDE5LCAyMCwgMjAzLCAyNDIsIAotICAgIDIwOSwgOTIsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNzAsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNDcsIDE5LCAyMCwgCi0gICAgMjAzLCAyNDIsIDIwOSwgMTA4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDExMCwgMTksIDIwLCAyMjcsIDE1NSwgMTksIDIwLCAKLSAgICAyMjcsIDE1NCwgMTksIDIwLCAyMjcsIDE1MywgMTksIDIwLCAyMjcsIDE1MiwgMTksIDIwLCAyMjcsIDE2MSwgMTksIDIwLCAKLSAgICAyMjcsIDE2MCwgMTksIDIwLCAyMjcsIDE2MiwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCA5MiwgMTksIDIwLCAyMDksIDEwOSwgCi0gICAgMjA5LCA3MCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCA2NCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCA0NywgMTksIDIwLCAKLSAgICAyMDksIDEwOSwgMjA5LCA0MiwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAxMDgsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgCi0gICAgMTA3LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDExMCwgMTksIDIwLCAyNTEsIDUwLCAyNDksIDI1NSwgMTksIDIwLCAyNDgsIAotICAgIDQwLCA3NCwgMTksIDIwLCAyNDgsIDQwLCA3NSwgMTksIDIwLCAyNDgsIDQwLCA3OCwgMTksIDIwLCAyNDgsIDQwLCA2MywgCi0gICAgMTksIDIwLCAyNDgsIDQwLCAyMDQsIDYyLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgMzAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAKLSAgICAwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgMTExLCAxOSwgMjAsIDI0OCwgNDAsIDIyMiwgMjQwLCAxOSwgMjAsIDI0OCwgNDAsIAotICAgIDIyMiwgMTAwLCAxOSwgMjAsIDI0OCwgNDAsIDIyMSwgMTkxLCAxOSwgMjAsIDI0OCwgNDAsIDIwMSwgMjAxLCAxOSwgMjAsIAotICAgIDI0OCwgNDAsIDIyOSwgMjAxLCAxOSwgMjAsIDI0OCwgNDAsIDIyOSwgMTAwLCAxOSwgMjAsIDI0OCwgNDAsIDIyOSwgMjYsIAotICAgIDE5LCAyMCwgMjQ4LCA0MCwgMTczLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzcsIDY3LCAxOSwgMjAsIDIxNCwgMjA2LCAyMzcsIAotICAgIDMsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNiwgMTM2LCAxOSwgMjAsIDIxNCwgMjA2LCAxNTIsIDE5LCAyMCwgODgsIDIzOCwgCi0gICAgODcsIDE5LCAyMCwgODgsIDIzOCwgOTEsIDE5LCAyMCwgODgsIDIzOCwgMTA1LCAxOSwgMjAsIDg4LCAyMzgsIDEwNCwgMTksIAotICAgIDIwLCA4OCwgMjM4LCA5MywgMTksIDIwLCA4OCwgMjM4LCAxMTksIDE5LCAyMCwgODgsIDIxNSwgMTQ1LCAxOSwgMjAsIDg4LCAKLSAgICAyMTUsIDIyNywgMTksIDIwLCA4OCwgMjE2LCAxNTgsIDE5LCAyMCwgODgsIDIxNiwgMTM1LCAxOSwgMjAsIDg4LCAyMTYsIAotICAgIDU3LCAxOSwgMjAsIDg4LCAyMTYsIDIyMCwgMTksIDIwLCA4OCwgMjAzLCAyMTcsIDE5LCAyMCwgODgsIDIwNCwgMCwgMTksIAotICAgIDIwLCA4OCwgMjA0LCA2MiwgMTksIDIwLCA4OCwgMjA0LCA1NSwgMTksIDIwLCA4OCwgMjA0LCAzMCwgMTksIDIwLCA4OCwgCi0gICAgMjA0LCAxMTEsIDE5LCAyMCwgODgsIDIzNSwgMjQ3LCAxOSwgMjAsIDg4LCAyMzUsIDI0OCwgMTksIDIwLCA4OCwgMjM1LCAKLSAgICAyNTEsIDE5LCAyMCwgODgsIDIzNSwgMjUwLCAxOSwgMjAsIDg4LCAyMzUsIDI0OSwgMTksIDIwLCA4OCwgMjM1LCAyNTQsIAotICAgIDE5LCAyMCwgODgsIDIwOSwgMjIsIDE5LCAyMCwgODgsIDIwOSwgNDcsIDE5LCAyMCwgODgsIDIwOSwgOTIsIDE5LCAyMCwgCi0gICAgODgsIDIwOSwgOTAsIDE5LCAyMCwgODgsIDIwOSwgNzAsIDE5LCAyMCwgODgsIDIwOSwgMTA4LCAxOSwgMjAsIDg4LCAyMDcsIAotICAgIDIwOCwgMTksIDIwLCA4OCwgMjA3LCAyMTgsIDE5LCAyMCwgODgsIDIwNywgMjM2LCAxOSwgMjAsIDg4LCAyMDcsIDIzNSwgCi0gICAgMTksIDIwLCA4OCwgMjA3LCAyMjAsIDE5LCAyMCwgODgsIDIwNywgMjQxLCAxOSwgMjAsIDg4LCAyMTcsIDE5MSwgMTksIDIwLCAKLSAgICA4OCwgMjE4LCA2OSwgMTksIDIwLCA4OCwgMjE5LCAzNCwgMTksIDIwLCA4OCwgMjE5LCAyMywgMTksIDIwLCA4OCwgMjE4LCAKLSAgICAxNjcsIDE5LCAyMCwgODgsIDE4NSwgMTksIDIwLCA4OCwgMjE5LCAxODQsIDE5LCAyMCwgODgsIDIzNywgMjMwLCAxOSwgMjAsIAotICAgIDg4LCAyMzgsIDM5LCAxOSwgMjAsIDg4LCAyMzgsIDE5MCwgMTksIDIwLCA4OCwgMjM4LCAxODIsIDE5LCAyMCwgODgsIDIzOCwgCi0gICAgODEsIDE5LCAyMCwgODgsIDIzOSwgOCwgMTksIDIwLCA4OCwgMjI5LCAxMDksIDE5LCAyMCwgODgsIDIyOSwgMTE1LCAxOSwgCi0gICAgMjAsIDg4LCAyMjksIDEyOSwgMTksIDIwLCA4OCwgMjI5LCAxMjgsIDE5LCAyMCwgODgsIDIyOSwgMTIyLCAxOSwgMjAsIDg4LCAKLSAgICAyMjksIDE0NCwgMTksIDIwLCA4OCwgMjI5LCA0MiwgMTksIDIwLCA4OCwgMjI5LCA0MywgMTksIDIwLCA4OCwgMjI5LCA0NiwgCi0gICAgMTksIDIwLCA4OCwgMjI5LCA0NSwgMTksIDIwLCA4OCwgMjI5LCA0NCwgMTksIDIwLCA4OCwgMjI5LCA0NywgMTksIDIwLCAKLSAgICA4OCwgMjI5LCA0OCwgMTksIDIwLCA4OCwgMjIxLCA4NCwgMTksIDIwLCA4OCwgMjIxLCAxOTEsIDE5LCAyMCwgODgsIDIyMiwgCi0gICAgMjQwLCAxOSwgMjAsIDg4LCAyMjIsIDIzNSwgMTksIDIwLCA4OCwgMjIyLCAxMDAsIDE5LCAyMCwgODgsIDIwMSwgMjAxLCAKLSAgICAxOSwgMjAsIDg4LCAyMjMsIDI0NiwgMTksIDIwLCA4OCwgMjI0LCA4MiwgMTksIDIwLCA4OCwgMjI1LCAyMCwgMTksIDIwLCAKLSAgICA4OCwgMjI1LCA4LCAxOSwgMjAsIDg4LCAyMjQsIDE1NSwgMTksIDIwLCA4OCwgMTkyLCAxOSwgMjAsIDg4LCAyMDIsIDIxMywgCi0gICAgMTksIDIwLCA4OCwgMjAyLCAyNDcsIDE5LCAyMCwgODgsIDIwMywgNTIsIDE5LCAyMCwgODgsIDIwMywgNDksIDE5LCAyMCwgCi0gICAgODgsIDIwMywgMTEsIDE5LCAyMCwgODgsIDE5OCwgMTksIDIwLCA4OCwgMjMwLCA4MiwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCAKLSAgICA4MiwgMTksIDIwLCA4OCwgMjMwLCAxMDEsIDE5LCAyMCwgODgsIDIzMCwgMTYxLCAxOSwgMjAsIDg4LCAyMzAsIDE1OSwgMTksIAotICAgIDIwLCA4OCwgMjMwLCAxNDEsIDE5LCAyMCwgMjE0LCAyMDYsIDIzMCwgMTQxLCAxOSwgMjAsIDg4LCAyMzAsIDE4MSwgMTksIAotICAgIDIwLCA4OCwgMjMwLCAxMTQsIDE5LCAyMCwgODgsIDIzMCwgMTE4LCAxOSwgMjAsIDg4LCAyMzAsIDEyOCwgMTksIDIwLCA4OCwgCi0gICAgMjMwLCAxMjcsIDE5LCAyMCwgODgsIDIzMCwgMTI2LCAxOSwgMjAsIDg4LCAyMzAsIDEyOSwgMTksIDIwLCA4OCwgMjI2LCAKLSAgICAyMzksIDE5LCAyMCwgODgsIDIyNywgNDksIDE5LCAyMCwgODgsIDIyNywgMjM0LCAxOSwgMjAsIDg4LCAyMjcsIDIyNiwgMTksIAotICAgIDIwLCA4OCwgMjI3LCAxNDgsIDE5LCAyMCwgODgsIDIyOCwgMTEzLCAxOSwgMjAsIDg4LCAyNDMsIDExNywgMTksIDIwLCA4OCwgCi0gICAgMjQzLCAxMTgsIDE5LCAyMCwgODgsIDI0MywgMTIzLCAxOSwgMjAsIDg4LCAyNDMsIDEyMiwgMTksIDIwLCA4OCwgMjQzLCAKLSAgICAxMTksIDE5LCAyMCwgODgsIDI0MywgMTI0LCAxOSwgMjAsIDg4LCAyMjcsIDE1MSwgMTksIDIwLCA4OCwgMjI3LCAxNTMsIAotICAgIDE5LCAyMCwgODgsIDIyNywgMTU3LCAxOSwgMjAsIDg4LCAyMjcsIDE1NiwgMTksIDIwLCA4OCwgMjI3LCAxNTUsIDE5LCAyMCwgCi0gICAgODgsIDIyNywgMTYxLCAxOSwgMjAsIDg4LCAyMDgsIDE4MSwgMTksIDIwLCA4OCwgMjA4LCAxODMsIDE5LCAyMCwgODgsIAotICAgIDIwOCwgMTg2LCAxOSwgMjAsIDg4LCAyMDgsIDE4NSwgMTksIDIwLCA4OCwgMjA4LCAxODQsIDE5LCAyMCwgODgsIDIwOCwgCi0gICAgMTg3LCAxOSwgMjAsIDg4LCAyMDgsIDE3NiwgMTksIDIwLCA4OCwgMjA4LCAxNzcsIDE5LCAyMCwgODgsIDIwOCwgMTg5LCAKLSAgICAxOSwgMjAsIDg4LCAyMDgsIDE4OCwgMTksIDIwLCA4OCwgMjA4LCAxNzgsIDE5LCAyMCwgODgsIDIwOCwgMTkwLCAxOSwgMjAsIAotICAgIDg4LCAyMDIsIDYsIDE5LCAyMCwgODgsIDIwMiwgMTcsIDE5LCAyMCwgODgsIDIwMiwgOTIsIDE5LCAyMCwgODgsIDIwMiwgCi0gICAgOTAsIDE5LCAyMCwgODgsIDIwMiwgMzksIDE5LCAyMCwgODgsIDIwMiwgMTE2LCAxOSwgMjAsIDg4LCAyMDIsIDE1OSwgMTksIAotICAgIDIwLCA4OCwgODEsIDIwMiwgMTU5LCAxOSwgMjAsIDg4LCAyNDEsIDI0MiwgMTksIDIwLCA4OCwgMjQxLCAyNDMsIDE5LCAyMCwgCi0gICAgODgsIDI0MSwgMjUyLCAxOSwgMjAsIDg4LCAyNDEsIDI1MSwgMTksIDIwLCA4OCwgMjQxLCAyNDYsIDE5LCAyMCwgODgsIAotICAgIDI0MSwgMjU1LCAxOSwgMjAsIDg4LCAyMTEsIDEwLCAxOSwgMjAsIDg4LCAyMTIsIDEzLCAxOSwgMjAsIDg4LCAyMTQsIDE3NywgCi0gICAgMTksIDIwLCA4OCwgMjE0LCAxNjUsIDE5LCAyMCwgODgsIDIxMiwgMTYyLCAxOSwgMjAsIDg4LCAyMTUsIDM2LCAxOSwgMjAsIAotICAgIDg4LCAyMTIsIDE5OSwgMTksIDIwLCA4OCwgMjEyLCAyNDIsIDE5LCAyMCwgODgsIDIxMywgNDMsIDE5LCAyMCwgODgsIDIxMywgCi0gICAgNDEsIDE5LCAyMCwgODgsIDIxMywgMTEsIDE5LCAyMCwgODgsIDIxMywgOTAsIDE5LCAyMCwgODgsIDIxMywgOTIsIDE5LCAKLSAgICAyMCwgODgsIDIwNywgMjQ5LCAxOSwgMjAsIDg4LCAyMDcsIDI1MywgMTksIDIwLCA4OCwgMjA4LCAxNCwgMTksIDIwLCA4OCwgCi0gICAgMjA4LCAxMywgMTksIDIwLCA4OCwgMjA3LCAyNTUsIDE5LCAyMCwgODgsIDIwOCwgMjAsIDE5LCAyMCwgODgsIDI0NiwgOTgsIAotICAgIDE5LCAyMCwgODgsIDI0NiwgMTE2LCAxOSwgMjAsIDg4LCAyNDYsIDE3MCwgMTksIDIwLCA4OCwgMjQ2LCAxNjYsIDE5LCAyMCwgCi0gICAgODgsIDI0NiwgMTQyLCAxOSwgMjAsIDg4LCAyNDYsIDE5OSwgMTksIDIwLCA4OCwgMjA3LCAyMTEsIDE5LCAyMCwgODgsIAotICAgIDIwNywgMjEyLCAxOSwgMjAsIDg4LCAyMDcsIDIxNSwgMTksIDIwLCA4OCwgMjA3LCAyMTQsIDE5LCAyMCwgODgsIDIwNywgCi0gICAgMjEzLCAxOSwgMjAsIDg4LCAyMDcsIDIxNiwgMTksIDIwLCAyNDYsIDE0MywgNTQsIDE5LCAyMCwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDE5LCAyMCwgMjE3LCAxMTgsIDE5LCAyMCwgMjIyLCAxOTksIDE5LCAyMCwgMjIxLCAyMTcsIDE5LCAyMCwgMjIxLCAKLSAgICAyMTYsIDE5LCAyMCwgMjIxLCAyMTUsIDE5LCAyMCwgMjIxLCAyMTQsIDE5LCAyMCwgMjIxLCAyMTksIDE5LCAyMCwgMjIxLCAKLSAgICAyMTgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTAsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgOSwgMTksIDIwLCAyMDMsIAotICAgIDI0MiwgMjA5LCA4LCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDcsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNiwgMTksIDIwLCAKLSAgICAyMDMsIDI0MiwgMjA5LCAxMywgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMiwgMTksIDIwLCAyMDMsIDI0MiwgNDYsIDIwOSwgCi0gICAgMTEwLCAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgMTQ0LCAyMjAsIDY0LCAyMTEsIDIyOSwgODIsIDIyMCwgNjQsIDEsIDI0OCwgCi0gICAgMTMyLCAyMjAsIDY0LCAxLCAyMjYsIDIyNSwgMjIwLCA2NCwgMSwgMjQwLCA1NywgMjIwLCA2NCwgMSwgMjE1LCAxNiwgMjIwLCAKLSAgICA2NCwgMSwgMjIyLCA1NiwgMjIwLCA2NCwgMSwgMjA3LCAzNiwgMjIwLCA2NCwgMSwgMjQ0LCAxODYsIDIyMCwgNjQsIDEsIAotICAgIDIwOCwgMjE0LCAyMjAsIDY0LCAxLCAyNDUsIDI0NSwgMjIwLCA2NCwgMSwgMjQ2LCAyMjUsIDIyMCwgNjQsIDEsIDIyMywgCi0gICAgMjMzLCAyMjAsIDY0LCAxLCAyMzgsIDIwLCAyMjAsIDY0LCAxLCAyMjIsIDE4OSwgMjIwLCA2NCwgMSwgMjExLCA1NCwgMjIwLCAKLSAgICA2NCwgMSwgMjE1LCAxMzgsIDIyMCwgNjQsIDEsIDI1MSwgNjEsIDIyMCwgNjQsIDEsIDIyMCwgMjIsIDIyMCwgNjQsIDEsIAotICAgIDIwNiwgMjEwLCAyMjAsIDY0LCAxLCAyNDEsIDE4NywgMjIwLCA2NCwgMSwgMjMwLCAyMzMsIDIyMCwgNjQsIDEsIDI0MSwgCi0gICAgMTg4LCAyMjAsIDY0LCAxLCAyMTksIDI0NCwgMjIwLCA2NCwgMSwgMjA3LCAxNSwgMjIwLCA2NCwgMSwgMjMxLCA4OSwgMjIwLCAKLSAgICA2NCwgMSwgMjQxLCAxODUsIDIyMCwgNjQsIDEsIDIxOSwgMTMsIDIyMCwgNjQsIDI0MCwgNTYsIDgyLCAyMjAsIDY0LCAyMTYsIAotICAgIDczLCAyNDAsIDU2LCA4MiwgMTk3LCAxLCAyNDAsIDQ2LCAyNDAsIDM4LCAyNDAsIDYxLCAyNDAsIDE3NCwgMTk3LCAxLCAKLSAgICAyMDYsIDE2NCwgMTk3LCAxLCAyMDYsIDE5NSwgMjA2LCAyMTEsIDY4LCAxOTcsIDEsIDIwMiwgMjE2LCAxOTcsIDEsIDIwMywgCi0gICAgMTI0LCAxOTcsIDEsIDIwNCwgMTQ0LCAxOTcsIDEsIDIwOSwgMTUsIDIwOSwgMTQsIDIwOSwgNDAsIDE5NywgMSwgMjQwLCAKLSAgICAyNDMsIDE5NywgMSwgMjUwLCAxOTksIDYzLCAxOTcsIDEsIDIxOSwgMjI4LCA3OCwgMTk3LCAxLCAyNTEsIDE0MiwgNjMsIAotICAgIDE5NywgMSwgMjUxLCA5MywgMTk3LCAxLCAyMjcsIDI0LCA3OCwgMTk3LCAxLCAyMTIsIDIyMSwgNzgsIDE5NywgMSwgNzgsIAotICAgIDE5NywgMSwgMjIwLCA3MywgMTk3LCAxLCAyMjAsIDMxLCAxOTcsIDEsIDIxNiwgMTk1LCAyMTYsIDIwOCwgMjE2LCAxMjAsIAotICAgIDE0NiwgMTk3LCAxLCAyMjksIDIxNiwgMTk3LCAxLCAyNDYsIDIyMSwgMTk3LCAxLCAyMjksIDIxNywgMjMwLCA1NCwgMTk3LCAKLSAgICAxLCAyMzksIDc1LCAxOTcsIDEsIDI0MSwgNzgsIDE5NywgMSwgMjM4LCAxODUsIDIzNywgMTc3LCAyMzksIDc1LCAxOTcsIDEsIAotICAgIDIzOCwgMjI0LCAxOTcsIDEsIDIwMywgMjA5LCAyMDMsIDIwMCwgMjA0LCAxNDQsIDE5NywgMSwgMjM3LCAxNDksIDIzNywgCi0gICAgMTcxLCAxOTcsIDEsIDIzNywgMTUzLCAyMzcsIDE3MSwgMTk3LCAxLCAyMjcsIDI2LCAyMzcsIDE3MSwgMTk3LCAxLCAyMTIsIAotICAgIDIyNCwgMjM3LCAxNzEsIDE5NywgMSwgMjIzLCA2MywgMjIxLCAyLCAyMjMsIDY0LCAyMjMsIDE2MywgMTk3LCAxLCAyMTIsIAotICAgIDIyMiwgMjIzLCAxNjMsIDE5NywgMSwgMjQyLCA4MCwgMTk3LCAxLCAyMzAsIDIxMiwgMjMwLCAyMTYsIDIzMCwgMjAzLCA3NSwgCi0gICAgMTk3LCAxLCA3NCwgMTk3LCAxLCAyMzAsIDE1MiwgMjMwLCAxODQsIDE5NywgMSwgMjM4LCAxNjksIDE5NywgMSwgMjI3LCAKLSAgICAyNywgMjUxLCAxMDksIDE5NywgMSwgMjEyLCAyMjYsIDYzLCAxOTcsIDEsIDIzMCwgMTk1LCAyNDEsIDUxLCAxOTcsIDEsIAotICAgIDIxOCwgMjI2LCAyMTgsIDI1MSwgMjE5LCAxODQsIDE5NywgMSwgMjUxLCAyMywgMjQxLCA0OSwgMTk3LCAxLCAyMTEsIDIzNCwgCi0gICAgMTk0LCAxOTcsIDEsIDIxMiwgMTQ2LCAyMjcsIDIzLCAxOTQsIDE5NywgMSwgMjEyLCAyMjAsIDE5NCwgMTk3LCAxLCAyNDcsIAotICAgIDEyNSwgMTk3LCAxLCAyMDIsIDE1OSwgMTk3LCAxLCAyMDgsIDE5NSwgMjA4LCAyMDcsIDIwNywgMTA4LCAyMTAsIDY5LCAKLSAgICAxOTcsIDEsIDIxMiwgMjE5LCAyMTAsIDY5LCAxOTcsIDEsIDI0NSwgNTEsIDE5NywgMSwgMjQ4LCAxMTEsIDI0OCwgMTE0LCAKLSAgICAyNDgsIDQ2LCAyNDksIDI1NSwgMTk3LCAxLCAyMTIsIDIyNSwgMjQ5LCAyNTUsIDE5NywgMSwgMjQyLCA3OSwgMTk3LCAxLCAKLSAgICAyMjAsIDIsIDE5NywgMSwgMjQxLCAxNDYsIDI0MSwgMTQ4LCA3NCwgMTk3LCAxLCAyMjUsIDExMywgMjI1LCAxMjMsIDIyNiwgCi0gICAgMTg1LCAxOTcsIDEsIDIyNywgMjUsIDIyNiwgMTg1LCAxOTcsIDEsIDIxMiwgMjIzLCAyMjYsIDE4NSwgMTk3LCAxLCAyMjcsIAotICAgIDI0OSwgMjI4LCA5MSwgMjI3LCAzNCwgMTU5LCAxOTcsIDEsIDI0MiwgODEsIDE5NywgMSwgMjMxLCAyMywgMTk3LCAxLCAKLSAgICAyMzEsIDI0LCAxOTcsIDEsIDI0NCwgMjAwLCAyNDQsIDIwNiwgMjQ1LCA1MSwgMTk3LCAxLCAyMTksIDIyMiwgMjQwLCAyNDIsIAotICAgIDc4LCAxOTcsIDEsIDI0MSwgMTgzLCAxOTcsIDEsIDIzMCwgMjMyLCAxOTcsIDEsIDI0NSwgNzEsIDE5NywgMSwgMjQ3LCA3NSwgCi0gICAgMTk3LCAxLCAyNDYsIDIzNywgMTk3LCAxLCAyMTEsIDk5LCAxOTcsIDEsIDIyNywgMjIsIDE5NywgMSwgMjEyLCAyMTgsIAotICAgIDE5NywgMSwgMjM1LCAxNjEsIDE5NywgMSwgMjE3LCAxMzQsIDE5NywgMSwgMjAzLCAxOTYsIDE5NywgMjEyLCAxMjAsIDIxNywgCi0gICAgMTc4LCAxOTcsIDIyMywgMjI2LCAyMTcsIDE3OCwgMTk3LCAyNDUsIDEzMSwgMjE3LCAxNzgsIDE5NywgMjUwLCAxMDgsIDk3LCAKLSAgICAxOTcsIDIwNywgMTYyLCA5NywgMTk3LCAyNDgsIDEzMCwgOTcsIDE5NywgMSwgMjMwLCA1NCwgMTk3LCAxLCAyMTMsIDkyLCAKLSAgICAxOTcsIDEsIDIyMCwgMTgsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDIxOSwgMjI3LCAxOTcsIDEsIDIzOSwgMTMxLCAKLSAgICAyNDcsIDIwLCAyMzAsIDIxNSwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjQxLCAxNDcsIDE5NywgMSwgMjM5LCAxMzEsIAotICAgIDI0NywgMjAsIDI1MSwgMTQxLCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyNTEsIDkzLCAyMDksIDI1NCwgMSwgNjMsIAotICAgIDIwOSwgMjU0LCAxLCA3NSwgMjA5LCAyNTQsIDEsIDY4LCAyMDksIDI1NCwgMSwgMTczLCAyMDksIDI1NCwgMSwgMjM5LCA4LCAKLSAgICAyMDksIDI1NCwgMSwgMjIyLCAyMDMsIDIwOSwgMjU0LCAxLCAyMTAsIDIyLCAyMDksIDI1NCwgMSwgMjQ0LCAyMTIsIDIwOSwgCi0gICAgMjU0LCAxLCAyMDEsIDIwMSwgMjA5LCAyNTQsIDEsIDE4NSwgMjA5LCAyNTQsIDEsIDI0OSwgMzIsIDIwOSwgMjU0LCAxLCAKLSAgICAxOTIsIDIwOSwgMjU0LCAxLCAxOTgsIDIwOSwgMjU0LCAxLCAyMjgsIDExMywgMjA5LCAyNTQsIDEsIDIwNCwgMTExLCAyMDksIAotICAgIDI1NCwgMSwgMjE1LCAzNiwgMjA5LCAyNTQsIDEsIDE1MiwgMjA5LCAyNTQsIDIyLCAyLCA3NSwgMjA5LCAyNTQsIDIyLCAyLCAKLSAgICA2OCwgMjA5LCAyNTQsIDIsIDIwNSwgMjA0LCAyMzcsIDk2LCAxLCA2MywgMjM3LCA5NiwgMSwgNzUsIDIzNywgOTYsIDEsIAotICAgIDY4LCAyMzcsIDk2LCAxLCAxNzMsIDIzNywgOTYsIDEsIDIzOSwgOCwgMjM3LCA5NiwgMSwgMjIyLCAyMDMsIDIzNywgOTYsIAotICAgIDEsIDIxMCwgMjIsIDIzNywgOTYsIDEsIDI0NCwgMjEyLCAyMzcsIDk2LCAxLCAyMDEsIDIwMSwgMjM3LCA5NiwgMSwgMTg1LCAKLSAgICAyMzcsIDk2LCAxLCAyNDksIDMyLCAyMzcsIDk2LCAxLCAxOTIsIDIzNywgOTYsIDEsIDE5OCwgMjM3LCA5NiwgMSwgMjE2LCAKLSAgICAyMjAsIDIzNywgOTYsIDEsIDIyOCwgMTEzLCAyMzcsIDk2LCAxLCAyMDQsIDExMSwgMjM3LCA5NiwgMSwgMjE1LCAzNiwgCi0gICAgMjM3LCA5NiwgMSwgMTUyLCAyMzcsIDk2LCAyMiwgMiwgNzUsIDIzNywgOTYsIDIyLCAyLCA2OCwgMjM3LCA5NiwgMiwgMjE5LCAKLSAgICAxMjQsIDIxOCwgMTg1LCAyMTIsIDEyMCwgMjE3LCAxNzgsIDIxOCwgMTg1LCA1MiwgMjE3LCAxNzgsIDI0NywgMTg1LCAxLCAKLSAgICA2MywgMjQ3LCAxODUsIDEsIDc1LCAyNDcsIDE4NSwgMSwgNjgsIDI0NywgMTg1LCAxLCAxNzMsIDI0NywgMTg1LCAxLCAyMzksIAotICAgIDgsIDI0NywgMTg1LCAxLCAyMjIsIDIwMywgMjQ3LCAxODUsIDEsIDIxMCwgMjIsIDI0NywgMTg1LCAxLCAyNDQsIDIxMiwgCi0gICAgMjQ3LCAxODUsIDEsIDIwMSwgMjAxLCAyNDcsIDE4NSwgMSwgMTg1LCAyNDcsIDE4NSwgMSwgMjQ5LCAzMiwgMjQ3LCAxODUsIAotICAgIDEsIDE5MiwgMjQ3LCAxODUsIDEsIDE5OCwgMjQ3LCAxODUsIDEsIDIxNiwgMjIwLCAyNDcsIDE4NSwgMSwgMjI4LCAxMTMsIAotICAgIDI0NywgMTg1LCAxLCAyMDQsIDExMSwgMjQ3LCAxODUsIDEsIDIxNSwgMzYsIDI0NywgMTg1LCAxLCAxNTIsIDI0NywgMTg1LCAKLSAgICAyMiwgMiwgNzUsIDI0NywgMTg1LCAyMiwgMiwgNjgsIDIwOSwgMjUzLCAxLCA2MywgMjA5LCAyNTMsIDEsIDc1LCAyMDksIAotICAgIDI1MywgMSwgNjgsIDIwOSwgMjUzLCAxLCAxNzMsIDIwOSwgMjUzLCAxLCAyMzksIDgsIDIwOSwgMjUzLCAxLCAyMjIsIDIwMywgCi0gICAgMjA5LCAyNTMsIDEsIDIxMCwgMjIsIDIwOSwgMjUzLCAxLCAyNDQsIDIxMiwgMjA5LCAyNTMsIDEsIDIwMSwgMjAxLCAyMDksIAotICAgIDI1MywgMSwgMTg1LCAyMDksIDI1MywgMSwgMjQ5LCAzMiwgMjA5LCAyNTMsIDEsIDE5MiwgMjA5LCAyNTMsIDEsIDE5OCwgCi0gICAgMjA5LCAyNTMsIDEsIDIyOCwgMTEzLCAyMDksIDI1MywgMSwgMjA0LCAxMTEsIDIwOSwgMjUzLCAxLCAyMTUsIDM2LCAyMDksIAotICAgIDI1MywgMjIsIDIsIDc1LCAyMDksIDI1MywgMjIsIDIsIDY4LCA4NSwgMSwgMTczLCA4NSwgMSwgMjI5LCAxNDQsIDg1LCAxLCAKLSAgICAyMjksIDI2LCA4NSwgMSwgMjI5LCAxMTUsIDg1LCAxLCAyMjIsIDEyOCwgODUsIDEsIDI0NywgOTIsIDg1LCAxLCAyNDYsIAotICAgIDE5OSwgODUsIDEsIDI0NSwgMjU0LCA4NSwgMSwgMjQ2LCAxMTYsIDg1LCAxLCAyMjAsIDIzMywgODUsIDEsIDI0NCwgMjEyLCAKLSAgICA4NSwgMSwgMjA3LCAyMjksIDg1LCAxLCAyNDMsIDExMywgODUsIDEsIDIwNywgMjI0LCA4NSwgMSwgMjIxLCAxOTcsIDg1LCAKLSAgICAxLCAyMTAsIDIyLCA4NSwgMSwgMjA5LCAxMDgsIDg1LCAxLCAxMzUsIDg1LCAxLCAyMDksIDQ3LCA4NSwgMSwgMjIxLCAxOTEsIAotICAgIDg1LCAxLCAyNDksIDMyLCA4NSwgMSwgMjE4LCAyMDgsIDg1LCAxLCAyMTgsIDY5LCA4NSwgMSwgMjE4LCAxODAsIDg1LCAxLCAKLSAgICAyMjQsIDgyLCA4NSwgMSwgMjAyLCAyNDcsIDg1LCAxLCAyMTUsIDIyNywgODUsIDEsIDIyNywgNDksIDg1LCAxLCAyMDUsIAotICAgIDE4OSwgODUsIDEsIDIxMywgOTAsIDg1LCAxLCAyMTEsIDEyNCwgODUsIDEsIDIxNSwgMzYsIDg1LCAxLCAxNTIsIDg1LCAxLCAKLSAgICAyMjgsIDExMywgODUsIDEsIDIxNywgMTI2LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMTEyLCA4NSwgMjMxLCAzNiwgMjIsIAotICAgIDIxNywgMTI1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgODgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA4MywgODUsIDIzMSwgCi0gICAgMzYsIDIyLCAyMTcsIDY1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgMzUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAyMywgODUsIAotICAgIDIzMSwgMzYsIDIyLCAyMTcsIDIyLCA4NSwgMjMxLCAzNiwgMjIsIDIxNSwgMTAyLCA4NSwgMjMxLCAzNiwgMjIsIDIxNSwgCi0gICAgOTUsIDg1LCAyMzEsIDM2LCAyMiwgMjI2LCAxOTksIDg1LCAyMzEsIDM2LCAyMiwgMjI2LCAxODgsIDg1LCAyMzEsIDM2LCAKLSAgICAyMiwgMjE3LCAxMDYsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAxMTgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA3MywgMjA3LCAKLSAgICAxMjEsIDEwNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDczLCAyMDcsIDEyMSwgMTA4LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgCi0gICAgMTA4LCA4NSwgMjIsIDIzMSwgMjEsIDI1MCwgMTQ4LCA4NSwgMjIsIDIzMSwgMjEsIDI1MiwgMjUsIDg1LCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgODUsIDIyLCAyLCA3NSwgODUsIDIyLCAyLCAyMzEsIDgzLCA4NSwgMjIsIDIsIDIwMywgMTI0LCA4NSwgMjIsIDIsIAotICAgIDIwMiwgMTY5LCA4NSwgMjIsIDIsIDY4LCA4NSwgMjIsIDIsIDIwNiwgMTc4LCA4NSwgMjIsIDIsIDIwNywgMzksIDg1LCAyMiwgCi0gICAgMiwgMjIwLCA3MywgODUsIDIyLCAyLCAxOTgsIDg1LCAyMiwgMiwgMjMxLCAxMTAsIDg1LCAyMiwgMiwgNzQsIDg1LCAyMiwgCi0gICAgMiwgMjUxLCAxMDksIDg1LCAyMiwgMiwgMjUxLCA2NCwgODUsIDIyLCAyLCAyMjAsIDE4LCA4NSwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDg1LCAyLCAyMjIsIDczLCA4NSwgMiwgMjE2LCAxNTYsIDg1LCAyLCAyMDIsIDE4MCwgODUsIDIsIDIyMywgMTkwLCA4NSwgMiwgCi0gICAgMjA4LCA3MywgODUsIDIsIDI0OCwgMjMzLCA4NSwgMiwgMjE1LCAyMjIsIDg1LCAyLCAyMDgsIDE3MSwgODUsIDIsIDIzMCwgCi0gICAgMTEsIDg1LCAyLCAyNTEsIDY2LCA4NSwgMiwgMjE0LCAyNDQsIDIxNCwgMjM3LCA4NSwgMiwgMjA1LCAyMDEsIDg1LCAyLCAKLSAgICAyNDUsIDI0OCwgODUsIDIsIDI0OCwgMjA1LCA4NSwgMiwgMjI5LCAxMzYsIDg1LCAyLCAyNDgsIDIyOCwgODUsIDIsIDI0NywgCi0gICAgNjQsIDIxOCwgMTMwLCAyMjgsIDE3MywgODUsIDIsIDIyNywgMjAzLCAyMDgsIDE0OCwgODUsIDIsIDI0OCwgMTAwLCA4NSwgCi0gICAgMiwgMjE4LCAxODIsIDIyMywgMjQzLCA4NSwgMiwgMjI5LCA0LCA4NSwgMjQ1LCA5MiwgMTYsIDIxNiwgNDksIDg1LCAyLCAKLSAgICAyNTAsIDE2LCA4NSwgMiwgMjUwLCAzNywgODUsIDE3LCAyMDIsIDg0LCA4NSwgMTcsIDEwNSwgODUsIDE3LCAxMDgsIDg1LCAKLSAgICAxNywgMTQ3LCA4NSwgMTcsIDE0OSwgODUsIDE3LCAxNzAsIDg1LCAxNywgMTk1LCA4NSwgMTcsIDIxMywgMTExLCA4NSwgMTcsIAotICAgIDE5OSwgODUsIDE3LCAyMjIsIDYzLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTEsIDI1MywgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjIzLCAyMTAsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxOCwgMTI5LCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyNDgsIDEzMywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjQ3LCAxNjUsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxOCwgNywgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCAxLCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMTcsIDI1NSwgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCA1LCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMTgsIDMsIDk0LCAyNDgsIDU5LCA5NCwgMjQxLCAxMDgsIDk0LCAyNDUsIDIzMywgOTQsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA5NCwgMjQ1LCAyNDIsIDk0LCAyMzksIDE0NywgMjQzLCA4MywgOTQsIDIwOCwgMTcwLCAyMTIsIDcsIAotICAgIDIzNSwgMjIwLCA5NCwgMjEyLCAxNjAsIDQsIDI0NywgMjQ0LCAyMjUsIDg4LCA5NCwgMjI1LCAxMTksIDI0NSwgMjMzLCA5NCwgCi0gICAgMjI1LCAxMTksIDIzOSwgMTAyLCAyMTEsIDYxLCA5NCwgMjIyLCA1NCwgOTQsIDIzOSwgMTMwLCA1NywgMjE0LCAxNTEsIAotICAgIDEwNSwgOTQsIDIzOSwgMTMwLCA1NywgMjE0LCAxNTEsIDEwOCwgOTQsIDIzOSwgMTMwLCA1NywgMjE0LCAxNTEsIDE0NywgCi0gICAgOTQsIDIyLCAyMTMsIDEzMCwgOTQsIDE3LCAyMDIsIDg0LCA5NCwgMTcsIDEwNSwgOTQsIDE3LCAxMDgsIDk0LCAxNywgMTQ3LCAKLSAgICA5NCwgMTcsIDE0OSwgOTQsIDE3LCAxNzAsIDk0LCAxNywgMTk1LCA5NCwgMTcsIDIxMywgMTExLCA5NCwgMTcsIDE5OSwgOTQsIAotICAgIDE3LCAyMjIsIDYzLCA5NCwgMSwgNjMsIDk0LCAxLCA3NCwgOTQsIDEsIDc1LCA5NCwgMSwgNzgsIDk0LCAxLCA2OCwgOTQsIAotICAgIDEsIDIyMCwgNzMsIDk0LCAxLCAyMDcsIDI0LCA5NCwgMSwgMjQxLCAxNjEsIDk0LCAxLCAyMDEsIDIwMSwgOTQsIDEsIDI1MCwgCi0gICAgMjIzLCA5NCwgMSwgMjQ5LCAzMiwgOTQsIDEsIDE4NSwgOTQsIDEsIDIxNywgMTI2LCA5NCwgMSwgMjM5LCA4LCA5NCwgMSwgCi0gICAgMTkyLCA5NCwgMSwgMjI4LCAxMTMsIDk0LCAxLCAyMTUsIDM2LCA5NCwgMSwgMjEzLCA5MCwgOTQsIDEsIDIxMCwgMjIsIDk0LCAKLSAgICAxLCAyNDQsIDIxMiwgOTQsIDEsIDI0NiwgMTk5LCA5NCwgMSwgMjMwLCAxODEsIDk0LCAxLCAxOTgsIDk0LCAxLCAyMTYsIAotICAgIDIyMCwgOTQsIDEsIDIwNCwgMTExLCA5NCwgMSwgMjQwLCAxMDgsIDk0LCAxLCAxNzMsIDk0LCAxLCAyMjksIDE0NCwgOTQsIAotICAgIDEsIDIwOCwgMjAsIDk0LCAxLCAyMDIsIDExNiwgOTQsIDEsIDIzNywgMTU3LCA5NCwgMSwgMjAyLCAxMCwgOTQsIDEsIDIyNywgCi0gICAgMTYxLCA5NCwgMSwgMjAyLCA2NiwgOTQsIDEsIDI0NiwgMTQyLCA5NCwgMSwgMjA4LCAxNzAsIDE2MywgMjIsIDU0LCA5NCwgCi0gICAgMSwgMjA4LCAxNzAsIDc0LCA5NCwgMSwgMjA4LCAxNzAsIDc1LCA5NCwgMSwgMjA4LCAxNzAsIDc4LCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDY4LCA5NCwgMSwgMjA4LCAxNzAsIDIyMCwgNzMsIDk0LCAxLCAyMDgsIDE3MCwgMjA3LCAyNCwgOTQsIDEsIDIwOCwgCi0gICAgMTcwLCAyNTAsIDIyMywgOTQsIDEsIDIwOCwgMTcwLCAyNDksIDMyLCA5NCwgMSwgMjA4LCAxNzAsIDE4NSwgOTQsIDEsIAotICAgIDIwOCwgMTcwLCAyMTcsIDEyNiwgOTQsIDEsIDIwOCwgMTcwLCAyMzksIDgsIDk0LCAxLCAyMDgsIDE3MCwgMTkyLCA5NCwgMSwgCi0gICAgMjA4LCAxNzAsIDIxMCwgMjIsIDk0LCAxLCAyMDgsIDE3MCwgMjQ0LCAyMTIsIDk0LCAxLCAyMDgsIDE3MCwgMjQ2LCAxOTksIAotICAgIDk0LCAxLCAyMDgsIDE3MCwgMjMwLCAxODEsIDk0LCAxLCAyMDgsIDE3MCwgMjA4LCAyMCwgOTQsIDEsIDIwOCwgMTcwLCAKLSAgICAxOTgsIDk0LCAxLCAyMDgsIDE3MCwgMjA0LCAxMTEsIDk0LCAxLCAyMDgsIDE3MCwgMTczLCA5NCwgMSwgMjA4LCAxNzAsIAotICAgIDIzOSwgNSwgOTQsIDEsIDIwOCwgMTcwLCAyMzcsIDE1NywgOTQsIDEsIDIwOCwgMTcwLCAyMzAsIDE0MCwgOTQsIDEsIDIwOCwgCi0gICAgMTcwLCAyMjIsIDk4LCA5NCwgMSwgMjA4LCAxNzAsIDI0MSwgMjU1LCA5NCwgMSwgMjEyLCAxNjAsIDc0LCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDc1LCA5NCwgMSwgMjEyLCAxNjAsIDIzMCwgMTkyLCA5NCwgMSwgMjEyLCAxNjAsIDIwNywgMjQsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgNjgsIDk0LCAxLCAyMTIsIDE2MCwgMjUwLCAyMjMsIDk0LCAxLCAyMTIsIDE2MCwgMTczLCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDIzOSwgOCwgOTQsIDEsIDIxMiwgMTYwLCAxNTIsIDk0LCAxLCAyMTIsIDE2MCwgMTg1LCA5NCwgMSwgMjEyLCAxNjAsIAotICAgIDIxMywgOTAsIDk0LCAxLCAyMTIsIDE2MCwgMjEwLCAyMiwgOTQsIDEsIDIxMiwgMTYwLCAyNDQsIDIxMiwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCAyMzAsIDE4MSwgOTQsIDEsIDIxMiwgMTYwLCAyNDAsIDEwOCwgOTQsIDEsIDIxMiwgMTYwLCAyMzksIDUsIDk0LCAxLCAKLSAgICAyMTIsIDE2MCwgMjM3LCAxNTcsIDk0LCAxLCAyMTIsIDE2MCwgMjA4LCAyMCwgOTQsIDEsIDIxMiwgMTYwLCAyMDIsIDExNiwgCi0gICAgOTQsIDEsIDIxMiwgMTYwLCAyMTYsIDIxNiwgOTQsIDEsIDIxMiwgMTYwLCAyNDYsIDE5OSwgOTQsIDEsIDIxMiwgMTYwLCAKLSAgICAyMDIsIDgwLCA5NCwgMSwgMjI1LCAxMTksIDc1LCA5NCwgMSwgMjI1LCAxMTksIDE3MywgOTQsIDEsIDIyNSwgMTE5LCAyMTYsIAotICAgIDIyMCwgOTQsIDEsIDIyNSwgMTE5LCAyNDAsIDEwOCwgOTQsIDEsIDIyNSwgMTE5LCAyMDIsIDgwLCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDI1MCwgMTgxLCAxMDUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA1LCAyMDAsIDEwNSwgOTQsIDEsIAotICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDE3NCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDcsIDM0LCA5NCwgMSwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDIzMCwgMjM5LCAyMDcsIDM0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0OCwgMjQ1LCAKLSAgICA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDEyNiwgMjQ4LCAyNDUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgNjMsIAotICAgIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgNzUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTczLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIyMiwgMjAzLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NywgOTIsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjA3LCAyNDEsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjA3LCAyMjksIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjQ0LCAxMjAsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjIxLCAyMjcsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDIxMiwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAxODUsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjE4LCAyMDgsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjExLCAxNjQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMDIsIDExNiwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNTEsIDczLCA5NCwgMSwgMjA4LCAxNzAsIAotICAgIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjA4LCAxNzAsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCAKLSAgICA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMzgsIDExOSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjIyLCAyMDMsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NywgOTIsIDk0LCAxLCAKLSAgICAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIzMCwgMTQ5LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgCi0gICAgMjQ0LCAyMDcsIDI0MSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAxMDQsIDk0LCAxLCAyMjUsIAotICAgIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgCi0gICAgMSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjExLCAxNjQsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDI0NSwgNjUsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIDk0LCAKLSAgICAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgMTE2LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDE2MiwgCi0gICAgNjgsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTYyLCAxOTgsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAKLSAgICAyNDQsIDI0OCwgOTgsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAyMDEsIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDIyNywgMTYxLCAxOSwgMjAsIDIxOSwgMTg4LCAxOSwgMjAsIDI1MCwgOCwgMTksIDIwLCAyNTEsIAotICAgIDIzNiwgMTksIDIwLCAyMDQsIDY1LCAxOSwgMjAsIDIxOCwgMTMsIDE5LCAyMCwgMjE5LCA0MywgMTksIDIwLCAyMTcsIDE0MywgCi0gICAgMTksIDIwLCAyMDksIDE5NiwgMTksIDIwLCAyMjksIDIwOCwgMTksIDIwLCAyMjgsIDE2NCwgMTksIDIwLCAyMjUsIDYzLCAKLSAgICAxOSwgMjAsIDIyMSwgMTQ5LCAxOSwgMjAsIDIyMywgNTksIDE5LCAyMCwgMjI3LCAyNDQsIDE5LCAyMCwgMjExLCAyMzIsIAotICAgIDE5LCAyMCwgMjE0LCAyMDgsIDE5LCAyMCwgMjEyLCAyMDcsIDE5LCAyMCwgMjEzLCA0NywgMTksIDIwLCAyMTIsIDE3MiwgCi0gICAgMTksIDIwLCAyMDIsIDIyMiwgMTksIDIwLCAyMDMsIDU4LCAxOSwgMjAsIDIxNiwgMTY1LCAxOSwgMjAsIDIyMSwgMTcsIDE5LCAKLSAgICAyMCwgMjIwLCA1MywgMjIxLCAxNywgMTksIDIwLCAyMjEsIDE2LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgMTYsIDE5LCAyMCwgCi0gICAgMjIxLCAxNSwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIDE1LCAxOSwgMjAsIDIyMSwgMTQsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAKLSAgICAxNCwgMTksIDIwLCAyMTUsIDEwNywgMTksIDIwLCAyMTUsIDEwNiwgMTksIDIwLCAyMTUsIDEwNSwgMTksIDIwLCAyMTUsIAotICAgIDEwNCwgMTksIDIwLCAyMTUsIDEwMywgMTksIDIwLCAyMTUsIDExMSwgMTksIDIwLCAyMjAsIDUzLCAyMTksIDE4NCwgMTksIAotICAgIDIwLCAyMjAsIDUzLCAyMTAsIDY5LCAxOSwgMjAsIDIyMCwgNTMsIDIzMCwgNTQsIDE5LCAyMCwgMjIwLCA1MywgMjQ3LCAKLSAgICAxMjUsIDE5LCAyMCwgMjIwLCA1MywgMjI2LCAxODUsIDE5LCAyMCwgMjIwLCA1MywgMjIzLCAxNjMsIDE5LCAyMCwgMjIwLCAKLSAgICA1MywgMTk0LCAxOSwgMjAsIDIyMCwgNTMsIDIxMywgOTIsIDE5LCAyMCwgMjQxLCAxNzQsIDIwNCwgMTQ0LCAxOSwgMjAsIAotICAgIDIwNCwgNDQsIDIwNCwgMTQ0LCAxOSwgMjAsIDQ2LCA1LCAyMTUsIDI1MiwgMTksIDIwLCA0NiwgMjE2LCAxODgsIDI0MywgCi0gICAgODUsIDE5LCAyMCwgMjE3LCAwLCAyMTUsIDEwOCwgMTksIDIwLCAxOTYsIDIyNywgMTgsIDE5LCAyMCwgMTk2LCAyMjgsIAotICAgIDExMiwgMTksIDIwLCAyMDksIDExLCAxOSwgMjAsIDIwOSwgMTMsIDE5LCAyMCwgMjA3LCAyMjEsIDE5LCAyMCwgMjA3LCAKLSAgICAyMjMsIDE5LCAyMCwgMjA3LCAyMjgsIDE5LCAyMCwgMjA4LCAxODAsIDE5LCAyMCwgMjA4LCAxODIsIDE5LCAyMCwgMjE0LCAKLSAgICAyMDYsIDIxMiwgMTc3LCAxOSwgMjAsIDIxNCwgMjA2LCAyMTIsIDIzNiwgMTksIDIwLCAyMTQsIDIwNiwgMjM2LCAxMTcsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMTg1LCAxOSwgMjAsIDg4LCAyNDQsIDM1LCAyMzgsIDE4MiwgMTksIDIwLCA4OCwgMjM5LCA1LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDE5MCwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCA2NCwgMTksIDIwLCA4OCwgMjMwLCA2MiwgMTksIAotICAgIDIwLCAyNDgsIDE1MywgMjQ0LCAzNSwgMTU5LCAxOSwgMjAsIDI0OCwgMTUzLCAyNDQsIDM1LCAxNDYsIDE5LCAyMCwgODgsIAotICAgIDI0NCwgMzAsIDE5NCwgMjI3LCAxMjQsIDIwNSwgMTY5LCAyMjcsIDE3NCwgMjI3LCAxMjQsIDEsIDE3MywgMjI3LCAxMjQsIAotICAgIDEsIDIyOSwgMTQ0LCAyMjcsIDEyNCwgMSwgMjM5LCA4LCAyMjcsIDEyNCwgMSwgMjM4LCAxMTksIDIyNywgMTI0LCAxLCAKLSAgICAyMjIsIDIwMywgMjI3LCAxMjQsIDEsIDI0NywgOTIsIDIyNywgMTI0LCAxLCAyNDYsIDE5OSwgMjI3LCAxMjQsIDEsIDIzMCwgCi0gICAgMTgxLCAyMjcsIDEyNCwgMSwgMjMwLCAxNDksIDIyNywgMTI0LCAxLCAyMDMsIDc4LCAyMjcsIDEyNCwgMSwgMjEwLCAyMiwgCi0gICAgMjI3LCAxMjQsIDEsIDIwOSwgMTA4LCAyMjcsIDEyNCwgMSwgMjQ0LCAyMTIsIDIyNywgMTI0LCAxLCAyNDQsIDEsIDIyNywgCi0gICAgMTI0LCAxLCAyMDEsIDIwMSwgMjI3LCAxMjQsIDEsIDE4NSwgMjI3LCAxMjQsIDEsIDIxOCwgMjA4LCAyMjcsIDEyNCwgMSwgCi0gICAgMjQ5LCAzMiwgMjI3LCAxMjQsIDEsIDI0OCwgOTgsIDIyNywgMTI0LCAxLCAxOTIsIDIyNywgMTI0LCAxLCAxOTgsIDIyNywgCi0gICAgMTI0LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDEsIDIyOCwgMTEzLCAyMjcsIDEyNCwgMSwgMjA0LCAxMTEsIDIyNywgMTI0LCAKLSAgICAxLCAyMTMsIDkwLCAyMjcsIDEyNCwgMSwgMjExLCAxNjQsIDIyNywgMTI0LCAxLCAyMTUsIDM2LCAyMjcsIDEyNCwgMSwgCi0gICAgMTUyLCAyMjcsIDEyNCwgMSwgMjM3LCAxODEsIDIyNywgMTI0LCAxLCAyMDgsIDExOSwgMjI3LCAxMjQsIDIyLCAyLCA2MywgCi0gICAgMjI3LCAxMjQsIDIyLCAyLCA3NSwgMjI3LCAxMjQsIDIyLCAyLCA2OCwgMjI3LCAxMjQsIDIyLCAyLCAyNDEsIDE2MSwgMjI3LCAKLSAgICAxMjQsIDIyLCAyLCAyNTEsIDY0LCAyMjcsIDEyNCwgMjIsIDIsIDIyMCwgMTgsIDIyNywgMTI0LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjI3LCAxMjQsIDIyLCAyLCA3NCwgMjI3LCAxMjQsIDIyLCAyLCA3OCwgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAxOTgsIAotICAgIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAxNzMsIDIyNywgMTI0LCA1LCAxLCAyMjIsIDIwMywgMjI3LCAxMjQsIDUsIDEsIDI1MCwgMTgwLCAyMjcsIAotICAgIDEyNCwgNSwgMSwgMjEwLCAyMiwgMjI3LCAxMjQsIDUsIDEsIDIwMSwgMjAxLCAyMjcsIDEyNCwgNSwgMSwgMTg1LCAyMjcsIAotICAgIDEyNCwgNSwgMSwgMTkyLCAyMjcsIDEyNCwgNSwgMSwgMjE2LCAyMjAsIDIyNywgMTI0LCA1LCAxLCAyMjgsIDExMywgMjI3LCAKLSAgICAxMjQsIDIsIDIyMywgMjMxLCAyMjcsIDEyNCwgMiwgMjI5LCAxODYsIDIyNywgMTI0LCAyLCAyMTUsIDM0LCAyMjcsIDEyNCwgCi0gICAgMiwgMjI3LCAxOCwgMjI3LCAxMjQsIDI0MCwgMjEyLCA4MiwgMjI3LCAxMjQsIDIxNywgNDcsIDgyLCAyMjcsIDEyNCwgMTcsIAotICAgIDIwMiwgODQsIDIyNywgMTI0LCAxNywgMTA1LCAyMjcsIDEyNCwgMTcsIDEwOCwgMjI3LCAxMjQsIDE3LCAxNDcsIDIyNywgCi0gICAgMTI0LCAxNywgMTQ5LCAyMjcsIDEyNCwgMTcsIDE3MCwgMjI3LCAxMjQsIDE3LCAxOTUsIDIyNywgMTI0LCAxNywgMjEzLCAKLSAgICAxMTEsIDIyNywgMTI0LCAxNywgMTk5LCAyMjcsIDEyNCwgMTcsIDIyMiwgNjMsIDQ1LCAyMjcsIDIzNSwgMSwgMTczLCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwMywgMTgyLCA0NSwgMjI3LCAyMzUsIDEsIDIyMiwgMjAzLCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgCi0gICAgMjAsIDQ1LCAyMjcsIDIzNSwgMSwgMjE1LCAzNiwgNDUsIDIyNywgMjM1LCAxLCAxOTgsIDQ1LCAyMjcsIDIzNSwgMSwgMjEwLCAKLSAgICAyMiwgNDUsIDIyNywgMjM1LCAxLCAyMDksIDEwOCwgNDUsIDIyNywgMjM1LCAxLCAyMjgsIDExMywgNDUsIDIyNywgMjM1LCAKLSAgICAxLCAxODUsIDQ1LCAyMjcsIDIzNSwgMSwgMjE4LCAyMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMTkyLCA0NSwgMjI3LCAyMzUsIDEsIAotICAgIDI0MCwgMTA4LCA0NSwgMjI3LCAyMzUsIDEsIDIwNiwgODYsIDQ1LCAyMjcsIDIzNSwgMSwgMTUyLCA0NSwgMjI3LCAyMzUsIAotICAgIDEsIDIxNywgMTI2LCA0NSwgMjI3LCAyMzUsIDEsIDIyOSwgMTQ0LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTAsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjAxLCAyMDEsIDQ1LCAyMjcsIDIzNSwgMSwgNjMsIDQ1LCAyMjcsIDIzNSwgMSwgNzUsIDQ1LCAyMjcsIAotICAgIDIzNSwgMSwgMjQxLCAxNjEsIDQ1LCAyMjcsIDIzNSwgMSwgMjQxLCAxNDcsIDQ1LCAyMjcsIDIzNSwgMSwgNjgsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjIwLCAxOCwgNDUsIDIyNywgMjM1LCAxLCA3OCwgNDUsIDIyNywgMjM1LCAxLCAyMDcsIDI0LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDc0LCA0NSwgMjI3LCAyMzUsIDEsIDI1MCwgMzIsIDQ1LCAyMjcsIDIzNSwgMSwgMjUxLCA2NCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDgsIDE1OSwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDE1OCwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIAotICAgIDE1NywgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDE1NiwgNDUsIDIyNywgMjM1LCAxLCAyMDgsIDE1NSwgMjIyLCAyMTQsIDQ1LCAKLSAgICAyMjYsIDIzMywgMSwgMTM4LCAyMTcsIDEyNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTcsIDEyNiwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxNzMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjAzLCAKLSAgICAxODIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjIyLCAyMDMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIAotICAgIDEyNCwgMTczLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIwMywgMTgyLCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMjQsIDIyMiwgMjAzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwOCwgMjAsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjE1LCAzNiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxOTgsIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjA4LCAyMCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTUsIAotICAgIDM2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDE5OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAKLSAgICAyMTAsIDIyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwOSwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMzgsIDIwMSwgMjAxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxMCwgMjIsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjA5LCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjAxLCAyMDEsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTg1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxOCwgCi0gICAgMjA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAKLSAgICAxODUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjE4LCAyMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIAotICAgIDEyNCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDI0MCwgMTA4LCAyMjIsIDIxNCwgNDUsIDIyNiwgCi0gICAgMjMzLCAxLCAxMzgsIDIwNiwgODYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjI4LCAxMTMsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjQwLCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjA2LCA4NiwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMjgsIDExMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAKLSAgICAxNTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjQ0LCAyMTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIAotICAgIDEzOCwgMjQ5LCAzMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAxNTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEyNCwgMjQ0LCAyMTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjQ5LCAzMiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjgsIDE2OSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDMsIDE0OSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMjgsIDE2OSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAKLSAgICAyMDMsIDE0OSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTEsIDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDEsIDEyNCwgMjExLCA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjIsIDIxMiwgMjE2LCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjUyLCAyNSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIzMSwgODMsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA2OCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIwNiwgCi0gICAgMTc4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNzQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAKLSAgICAyNTEsIDEwOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDc4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgCi0gICAgMiwgMjIwLCA5NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIwNywgMjQsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDIyLCAyLCAyNTAsIDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyNTEsIDIzNiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIwNiwgMTcwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjE5LCAxODgsIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMjAsIDk0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgCi0gICAgMjA3LCAyMCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIzMCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxLCA0NiwgMjA2LCAxNjQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMjIsIDIwNSwgMjIyLCAyMTQsIDQ1LCAKLSAgICAyMjYsIDIzMywgMSwgNDYsIDIyMywgMTYzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjI2LCAxODUsIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMzAsIDU0LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjQ1LCAKLSAgICA1MSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDI0OSwgMjU1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNDMsIAotICAgIDIyNSwgOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE0MywgMjI1LCA5MSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMTcsIDIwMiwgODQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxMDUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAKLSAgICAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxNDcsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxNDksIAotICAgIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxNzAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAxOTUsIDIyMiwgCi0gICAgMjE0LCA0NSwgMjI2LCAyMzMsIDE3LCAyMTMsIDExMSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE5OSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDIyMiwgNjMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEwNCwgMTcsIDEwNSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMiwgMjI4LCA5NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMiwgMjI4LCA5NiwgCi0gICAgODUsIDE2LCAyMTksIDUxLCA4NSwgMTYsIDIyMywgMjExLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMTMwLCAyMjksIDIyLCAKLSAgICA4NSwgMTYsIDI0OCwgMTM0LCAyMjksIDIyLCA4NSwgMTYsIDI0NywgMTY2LCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgOCwgCi0gICAgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDIsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAwLCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgCi0gICAgNiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDQsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNjEsIDIyOSwgMjIsIDg1LCAxNiwgCi0gICAgMjQ0LCAxNTcsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNTYsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNTksIDIyOSwgMjIsIAotICAgIDg1LCAxNiwgMjQ0LCAxNTgsIDIyOSwgMjIsIDg1LCAxNiwgMjQ0LCAxNTUsIDIyOSwgMjIsIDg1LCAxNiwgMjA3LCAxNjcsIAotICAgIDg1LCAxNiwgMjIzLCAyMTEsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgMTMwLCAyMTUsIDIyMCwgODUsIDE2LCAyNDgsIDEzNCwgCi0gICAgMjE1LCAyMjAsIDg1LCAxNiwgMjQ3LCAxNjYsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgOCwgMjE1LCAyMjAsIDg1LCAxNiwgCi0gICAgMjE4LCAyLCAyMTUsIDIyMCwgODUsIDE2LCAyMTgsIDAsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgNiwgMjE1LCAyMjAsIDg1LCAKLSAgICAxNiwgMjE4LCA0LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE2MSwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTcsIDIxNSwgCi0gICAgMjIwLCA4NSwgMTYsIDI0NCwgMTU2LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1OSwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAKLSAgICAxNTgsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU1LCAyMTUsIDIyMCwgMjQ3LCAxODYsIDEsIDE3MywgMjQ3LCAxODYsIDEsIAotICAgIDIzOSwgOCwgMjQ3LCAxODYsIDEsIDIyMiwgMjAzLCAyNDcsIDE4NiwgMSwgMjIyLCAxNDYsIDI0NywgMTg2LCAxLCAxODUsIAotICAgIDI0NywgMTg2LCAxLCAyNDksIDMyLCAyNDcsIDE4NiwgMSwgMTkyLCAyNDcsIDE4NiwgMSwgMjIzLCAyNTAsIDI0NywgMTg2LCAKLSAgICAxLCAyMTAsIDIyLCAyNDcsIDE4NiwgMSwgMjQ0LCAyMTIsIDI0NywgMTg2LCAxLCAyMDEsIDIwMSwgMjQ3LCAxODYsIDEsIAotICAgIDIyMSwgMTQ3LCAyNDcsIDE4NiwgMSwgMjQ3LCA5MiwgMjQ3LCAxODYsIDEsIDIzMCwgMTgxLCAyNDcsIDE4NiwgMSwgMjIxLCAKLSAgICAxMSwgMjQ3LCAxODYsIDEsIDIyMSwgMywgMjQ3LCAxODYsIDEsIDE5OCwgMjQ3LCAxODYsIDEsIDIxNiwgMjIwLCAyNDcsIAotICAgIDE4NiwgMSwgMjI4LCAxMTMsIDI0NywgMTg2LCAxLCAyMDYsIDg2LCAyNDcsIDE4NiwgMSwgMjE1LCAzNiwgMjQ3LCAxODYsIAotICAgIDEsIDYzLCAyNDcsIDE4NiwgMSwgMTUyLCAyNDcsIDE4NiwgMjIsIDIsIDc1LCAyNDcsIDE4NiwgMjIsIDIsIDY4LCAyNDcsIAotICAgIDE4NiwgMjIsIDIsIDc0LCAyNDcsIDE4NiwgMjIsIDIsIDc4LCAyNDcsIDE4NiwgMjIsIDIsIDI1MSwgMTA5LCAyNDcsIDE4NiwgCi0gICAgMjE5LCAxMzYsIDI0NywgMTg2LCAyNDEsIDg0LCA3NiwgMjE0LCAxNjcsIDQ1LCAxMDQsIDEsIDEzOCwgMTczLCA0NSwgMTA0LCAKLSAgICAxLCAxMzgsIDIyOSwgMTQ0LCA0NSwgMTA0LCAxLCAxMzgsIDIyOCwgMTUzLCA0NSwgMTA0LCAxLCAxMjQsIDE3MywgNDUsIAotICAgIDEwNCwgMSwgMTI0LCAyMjgsIDE1MywgNDUsIDEwNCwgMSwgMTI0LCAyMjksIDE0NCwgNDUsIDEwNCwgMSwgMjIyLCAyMDMsIAotICAgIDQ1LCAxMDQsIDEsIDEzOCwgMjQ3LCA5MiwgNDUsIDEwNCwgMSwgMTM4LCAyNDYsIDE5OSwgNDUsIDEwNCwgMSwgMTI0LCAKLSAgICAyNDcsIDkyLCA0NSwgMTA0LCAxLCAxMjQsIDIxNSwgMzYsIDQ1LCAxMDQsIDEsIDEyNCwgMjQ2LCAxOTksIDQ1LCAxMDQsIDEsIAotICAgIDIyMSwgMTEsIDQ1LCAxMDQsIDEsIDIxNiwgMTcxLCA0NSwgMTA0LCAxLCAxMzgsIDIxNiwgMTY5LCA0NSwgMTA0LCAxLCAKLSAgICAyNDQsIDIxMiwgNDUsIDEwNCwgMSwgMTI0LCAyMTYsIDE2OSwgNDUsIDEwNCwgMSwgMjE2LCAxODAsIDQ1LCAxMDQsIDEsIAotICAgIDEzOCwgMjEwLCAyMiwgNDUsIDEwNCwgMSwgMTM4LCAyMDksIDEwOCwgNDUsIDEwNCwgMSwgMTI0LCAyMTAsIDIyLCA0NSwgCi0gICAgMTA0LCAxLCAxMjQsIDIwOSwgMTA4LCA0NSwgMTA0LCAxLCAyMDEsIDIwMSwgNDUsIDEwNCwgMSwgMjQ5LCAzMiwgNDUsIAotICAgIDEwNCwgMSwgMTM4LCAxODUsIDQ1LCAxMDQsIDEsIDEzOCwgMjE4LCAyMDgsIDQ1LCAxMDQsIDEsIDEzOCwgMjQwLCAxMDgsIAotICAgIDQ1LCAxMDQsIDEsIDEyNCwgMTg1LCA0NSwgMTA0LCAxLCAxMjQsIDI0MCwgMTA4LCA0NSwgMTA0LCAxLCAxMjQsIDIxOCwgCi0gICAgMjA4LCA0NSwgMTA0LCAxLCAxOTIsIDQ1LCAxMDQsIDEsIDEyNCwgMTk4LCA0NSwgMTA0LCAxLCAxMzgsIDE5OCwgNDUsIAotICAgIDEwNCwgMSwgMjE2LCAyMjAsIDQ1LCAxMDQsIDEsIDIxNSwgMTQwLCA0NSwgMTA0LCAxLCAyMjgsIDExMywgNDUsIDEwNCwgMSwgCi0gICAgMjI2LCAyMzIsIDQ1LCAxMDQsIDEsIDIwNCwgMTExLCA0NSwgMTA0LCAxLCAxMzgsIDIxMywgOTAsIDQ1LCAxMDQsIDEsIAotICAgIDEzOCwgMjExLCAxNjQsIDQ1LCAxMDQsIDEsIDEzOCwgMjE1LCAzNiwgNDUsIDEwNCwgMSwgMTM4LCAxNTIsIDQ1LCAxMDQsIAotICAgIDEsIDIyNywgNzcsIDQ1LCAxMDQsIDEsIDYzLCA0NSwgMTA0LCAxLCAxMjQsIDE1MiwgNDUsIDEwNCwgMSwgNzUsIDQ1LCAKLSAgICAxMDQsIDEsIDIzMSwgODMsIDQ1LCAxMDQsIDEsIDY4LCA0NSwgMTA0LCAxLCAyMDYsIDE3OCwgNDUsIDEwNCwgMSwgMjQxLCAKLSAgICAxNjEsIDQ1LCAxMDQsIDEsIDIyMCwgMTgsIDQ1LCAxMDQsIDEsIDIyOCwgOTcsIDQ1LCAxMDQsIDEsIDIzNywgMjQ5LCAyMTUsIAotICAgIDM2LCA0NSwgMTA0LCAxMDksIDIsIDE3NCwgMjE2LCAyMjAsIDQ1LCAxMDQsIDEwOSwgMiwgMTc0LCAyMjgsIDExMywgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAyMjgsIDExNCwgMjA5LCAyMjgsIDIyOCwgODYsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMzAsIDEsIAotICAgIDIyOCwgODYsIDQ1LCAxMDQsIDEwOSwgMiwgNDYsIDIyMiwgMjAzLCA0NSwgMTA0LCAxMDksIDIsIDEyNCwgMTg1LCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDEzOCwgMjE2LCAxNzAsIDIxOSwgMjQ1LCAxMjQsIDE4NSwgNDUsIDEwNCwgMTA5LCAyLCAxOTIsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMjQ5LCAzMiwgNDUsIDEwNCwgMTA5LCAyLCAyMTUsIDM2LCA0NSwgMTA0LCAyLCAyMTUsIDEwLCA0NSwgCi0gICAgMTA0LCAyMiwgMiwgNjMsIDQ1LCAxMDQsIDIyLCAyLCAyMjUsIDE0MSwgMjE0LCAyMjUsIDQ1LCAxMDQsIDIyLCAyLCAyNTIsIAotICAgIDI1LCA0NSwgMTA0LCAyMiwgMiwgMjA5LCAyMzQsIDI1MiwgMjUsIDQ1LCAxMDQsIDIyLCAyLCA3NSwgNDUsIDEwNCwgMjIsIAotICAgIDIsIDIzMSwgODMsIDQ1LCAxMDQsIDIyLCAyLCAyMDcsIDI0LCA0NSwgMTA0LCAyMiwgMiwgMjA2LCAxNzcsIDQ1LCAxMDQsIAotICAgIDIyLCAyLCA2OCwgNDUsIDEwNCwgMjIsIDIsIDIwNiwgMTc4LCA0NSwgMTA0LCAyMiwgMiwgNzgsIDQ1LCAxMDQsIDIyLCAyLCAKLSAgICAyMjAsIDk4LCA1NiwgNDUsIDEwNCwgMjIsIDIsIDIxOSwgMTg4LCA0NSwgMTA0LCAyMiwgMiwgNzQsIDQ1LCAxMDQsIDIyLCAKLSAgICAyLCAyNTEsIDEwOSwgNDUsIDEwNCwgMjIsIDIsIDIyMCwgMTgsIDQ1LCAxMDQsIDIyLCAyLCAyNTEsIDY0LCA0NSwgMTA0LCAKLSAgICAyMiwgMiwgMTA0LCAyNTEsIDY0LCA0NSwgMTA0LCAyMiwgMiwgMjIwLCA5OCwgNTUsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAKLSAgICAyMzAsIDAsIDQ1LCAxMDQsIDIsIDIwOCwgMTYwLCA0NSwgMTA0LCAyLCAyMDgsIDE1OSwgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIAotICAgIDIwOCwgMTU4LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgMjA4LCAxNTcsIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAyMDgsIDE1NiwgCi0gICAgNDUsIDEwNCwgMiwgMjE2LCAyMjEsIDIzNywgMTU2LCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjE0LCAyNTMsIDQ1LCAxMDQsIAotICAgIDIsIDIyOSwgMTA0LCAyMjksIDIzOSwgNDUsIDEwNCwgMzksIDI0NSwgMTEzLCAyNDMsIDg1LCA0NSwgMTA0LCAyMzYsIDEwOCwgCi0gICAgMTcsIDIwMiwgODQsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTA1LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDEwOCwgNDUsIAotICAgIDEwNCwgMjM2LCAxMDgsIDE3LCAxNDcsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTQ5LCA0NSwgMTA0LCAyMzYsIDEwOCwgCi0gICAgMTcsIDE3MCwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxOTUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMjEzLCAxMTEsIDQ1LCAKLSAgICAxMDQsIDIzNiwgMTA4LCAxNywgMTk5LCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDIyMiwgNjMsIDQ1LCAxMDQsIDEwNCwgMTcsIAotICAgIDIwMiwgODQsIDQ1LCAxMDQsIDEwNCwgMTcsIDEwNSwgNDUsIDEwNCwgMTA0LCAxNywgMTA4LCA0NSwgMTA0LCAxMDQsIDE3LCAKLSAgICAxNDcsIDQ1LCAxMDQsIDEwNCwgMTcsIDE0OSwgNDUsIDEwNCwgMTA0LCAxNywgMTcwLCA0NSwgMTA0LCAxMDQsIDE3LCAxOTUsIAotICAgIDQ1LCAxMDQsIDEwNCwgMTcsIDIxMywgMTExLCA0NSwgMTA0LCAxMDQsIDE3LCAxOTksIDQ1LCAxMDQsIDEwNCwgMTcsIDIyMiwgCi0gICAgNjMsIDQ1LCAxMDQsIDIsIDIwNCwgMjksIDQ1LCAxMDQsIDIsIDIwNCwgMjgsIDQ1LCAxMDQsIDIsIDIxNCwgMjEyLCA0NSwgCi0gICAgMTA0LCAyLCAyMjksIDE3NSwgNDUsIDEwNCwgMiwgMjM2LCAzNiwgNDUsIDEwNCwgMiwgMjQzLCA5OSwgNDUsIDEwNCwgMiwgCi0gICAgMjE2LCA3MywgMjE1LCAxOTgsIDIxNiwgMTgwLCA0NSwgMTA0LCAyLCAyMjUsIDE0MSwgMjAzLCA3OSwgNDUsIDEwNCwgMiwgCi0gICAgMjMwLCAzNSwgNDUsIDEwNCwgMiwgMjMwLCAzNCwgNDUsIDEwNCwgMiwgMjE0LCAyMjAsIDQ1LCAxMDQsIDIsIDIxNCwgMjE5LCAKLSAgICA0NSwgMTA0LCAyLCAyMzcsIDk4LCA0NSwgMTA0LCAyLCAyNDcsIDg5LCAzOSwgMjQyLCA3NSwgMjQ2LCA1MywgMjUxLCAxMzgsIAotICAgIDM5LCAyNDMsIDIzMCwgMzksIDIzMSwgMjcsIDM5LCAxODMsIDQ3LCAzOSwgMjA4LCA3MCwgMjQzLCA4NSwgMzksIDIwMywgCi0gICAgMTk1LCA1NiwgMzksIDIwNCwgMjEsIDIyNywgMTE1LCA1NiwgMzksIDE3MSwgMTMxLCA1NiwgMzksIDUyLCAxNzEsIDEzMSwgCi0gICAgNTYsIDM5LCAxNTcsIDI0NiwgMjE5LCAyMTEsIDMyLCA1NiwgMzksIDIxMSwgMTgsIDI0NiwgMjE5LCAyMTEsIDMyLCA1NiwgCi0gICAgMzksIDIxOSwgNzgsIDU1LCAzOSwgNTIsIDIxOSwgNzgsIDU1LCAzOSwgMjE5LCA3OCwgNTYsIDM5LCAyMTksIDc4LCAyMTksIAotICAgIDE5OSwgMTMwLCAyLCAyMDcsIDksIDIxNiwgNTEsIDEzMCwgMiwgMjA3LCA5LCAyNDcsIDU0LCAxMzAsIDIsIDI0NiwgMjM0LCAKLSAgICAxMzAsIDIsIDIxMCwgMTkxLCAxMzAsIDIsIDI0OCwgNTYsIDEzMCwgMSwgMjUxLCA0NSwgMTMwLCAxLCAyNTEsIDQ2LCAyMDksIAotICAgIDE3OCwgMTMwLCAxLCAyMzEsIDc5LCAxMzAsIDEsIDIzMSwgODAsIDIwOSwgMTc4LCAxMzAsIDEsIDIwNywgMTIsIDEzMCwgMSwgCi0gICAgMjA3LCAxMywgMjA5LCAxNzgsIDEzMCwgMSwgMjE2LCAyMjEsIDIxNiwgMTAzLCAxMzAsIDEsIDIxNiwgMjIxLCAyMTYsIAotICAgIDEwNCwgMjA5LCAxNzgsIDEzMCwgMSwgMjI4LCAxMTQsIDIyNywgMTk3LCAxMzAsIDEsIDIyOCwgMTE0LCAyMjcsIDE5OCwgCi0gICAgMjA5LCAxNzgsIDEzMCwgMSwgMjQxLCAxMjcsIDEzMCwgMSwgMjUxLCA2MiwgMTMwLCAxLCAyMjAsIDQ5LCAxMzAsIDEsIAotICAgIDIyMCwgNTAsIDIwOSwgMTc4LCAxMzAsIDEsIDE3MywgMTMwLCAxLCAyMzAsIDQ0LCAyMjUsIDE0NCwgMTMwLCAxLCAyMzksIAotICAgIDgsIDEzMCwgMSwgMjM5LCA5LCAyMzgsIDI1LCAxMzAsIDEsIDIyMiwgMjAzLCAxMzAsIDEsIDI0NywgOTIsIDEzMCwgMSwgCi0gICAgMjQ3LCA5MywgMjI4LCAxMDAsIDEzMCwgMSwgMjMwLCAxODEsIDEzMCwgMSwgMjMwLCAxODIsIDIzMCwgMTUzLCAxMzAsIDEsIAotICAgIDIyMSwgMTEsIDEzMCwgMSwgMjEwLCAyMywgMjI3LCAyNTMsIDEzMCwgMSwgMjEwLCAyMywgMjIzLCAyMDYsIDIyNSwgMTQ0LCAKLSAgICAxMzAsIDEsIDI0NCwgMjEzLCAyMjMsIDIwNiwgMjUxLCA0LCAxMzAsIDEsIDI0NCwgMjEzLCAyMjMsIDIwNiwgMjI1LCAxNDQsIAotICAgIDEzMCwgMSwgMjIzLCAxMTEsIDIxNiwgMTgzLCAxMzAsIDEsIDIxMCwgMjIsIDEzMCwgMSwgMjEwLCAyMywgMjA5LCAyMDAsIAotICAgIDEzMCwgMSwgMjQ0LCAyMTIsIDEzMCwgMSwgMjQ0LCAyMTMsIDIyNSwgMTYzLCAxMzAsIDEsIDIwMSwgMjAxLCAxMzAsIDEsIAotICAgIDE4NSwgMTMwLCAxLCAyMTksIDE2OSwgMjI5LCAyNTEsIDEzMCwgMSwgMjQ5LCAzMiwgMTMwLCAxLCAyNDksIDMzLCAyMjksIAotICAgIDE4NywgMTMwLCAxLCAxOTIsIDEzMCwgMSwgMTk4LCAxMzAsIDEsIDIxNiwgMjIwLCAxMzAsIDEsIDIyOCwgMTEzLCAxMzAsIAotICAgIDEsIDIwNCwgMTExLCAxMzAsIDEsIDIxNSwgMzcsIDIxNSwgMjEsIDEzMCwgMSwgMjE1LCAzNywgMjE0LCAyMzIsIDEzMCwgMSwgCi0gICAgMjE1LCAzNiwgMTMwLCAxLCAxNTIsIDEzMCwgMiwgMjE2LCA5NCwgMTMwLCAyMiwgMiwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIAotICAgIDIwNywgOCwgMTMwLCAyMiwgMiwgMjA3LCA5LCAyMTQsIDIyOCwgMTMwLCAyMiwgMiwgMjEwLCAyMjQsIDEzMCwgMjIsIDIsIAotICAgIDIxMCwgMjI1LCAyMzEsIDcxLCAxMzAsIDIyLCAyLCAyMTYsIDIyMSwgMjE2LCAxMDMsIDEzMCwgMjIsIDIsIDIxNiwgMjIxLCAKLSAgICAyMTYsIDEwNCwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIyOCwgMTE0LCAyMjcsIDE5NywgMTMwLCAyMiwgMiwgMjI4LCAxMTQsIAotICAgIDIyNywgMTk4LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjA5LCAyMzUsIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMTYsIDEwMywgCi0gICAgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjE2LCAxMDQsIDIwOSwgMTc4LCAKLSAgICAxMzAsIDIyLCAyLCAyMTgsIDI0OSwgMTMwLCAyMiwgMiwgMjE4LCAyNTAsIDIwOSwgMTc4LCAxMzAsIDI1MSwgMTE3LCAyNTEsIAotICAgIDExNiwgMTMwLCAxLCAyMzAsIDIzLCAyMTQsIDIyNywgMTMwLCAxLCAyMjksIDExMSwgMjE0LCAyMjcsIDEzMCwgMSwgMjA3LCAKLSAgICAxMDEsIDIxNCwgMjI3LCAxMzAsIDEsIDI0MSwgMTU1LCAyMTQsIDIyNywgMTMwLCAxLCAyMDYsIDU2LCAyMTQsIDIyNywgCi0gICAgMTMwLCAxLCAyMDIsIDEwNiwgMjE0LCAyMjcsIDEzMCwgMSwgMjUwLCA1MiwgMjE0LCAyMjcsIDEzMCwgMTcsIDIwMiwgODQsIAotICAgIDEzMCwgMTcsIDEwNSwgMTMwLCAxNywgMTA4LCAxMzAsIDE3LCAxNDcsIDEzMCwgMTcsIDE0OSwgMTMwLCAxNywgMTcwLCAKLSAgICAxMzAsIDE3LCAxOTUsIDEzMCwgMTcsIDIxMywgMTExLCAxMzAsIDE3LCAxOTksIDEzMCwgMTcsIDIyMiwgNjMsIDEzMCwgCi0gICAgMjE5LCAxMDQsIDEzMCwgMjE5LCAxMzAsIDEzMCwgMjA0LCAxNCwgMTMwLCAyNDcsIDMxLCAyMTksIDEyMywgMTMwLCAyNDcsIAotICAgIDMxLCAyMTIsIDEzOSwgMTMwLCAyNDcsIDMxLCAyMTksIDc1LCAxMzAsIDIxOSwgMTI5LCAxMzAsIDMxLCAxNiwgMjQzLCA5MSwgCi0gICAgMTMwLCAzMSwgMTYsIDI0NCwgMzQsIDEzMCwgMzEsIDE2LCAyNDIsIDI3LCAxMzAsIDMxLCAxNiwgMjQ0LCAxNjQsIDEzMCwgCi0gICAgMzEsIDE2LCAyNDQsIDE2NSwgMjEwLCAxOTEsIDEzMCwgMzEsIDE2LCAyNDMsIDE3NSwgMTMwLCAzMSwgMTYsIDI0NCwgMjA1LCAKLSAgICAxMzAsIDMxLCAxNiwgMjQ0LCAxMCwgMTMwLCAzMSwgMTYsIDI0NCwgMTg3LCAxMzAsIDMxLCAxNiwgMjQ0LCAxNjUsIDIzOCwgCi0gICAgMTg0LCAxMzAsIDMxLCAxNiwgMzksIDIwOSwgMTcxLCAxMzAsIDMxLCAxNiwgMzksIDI0MSwgODIsIDEzMCwgMzEsIDE2LCAKLSAgICAzOSwgMjI5LCAxODIsIDEzMCwgMzEsIDE2LCAzOSwgMjI5LCAxODQsIDEzMCwgMzEsIDE2LCAzOSwgMjMwLCAxNTcsIDEzMCwgCi0gICAgMzEsIDE2LCAzOSwgMjI5LCAxODMsIDMsIDIzMCwgMTU3LCAxMzAsIDMxLCAxNiwgMzksIDIyOSwgMTg1LCAzLCAyMzAsIAotICAgIDE1NywgMTMwLCAzMSwgMTYsIDM5LCAyNDgsIDExOSwgMTMwLCAzMSwgMTYsIDM5LCAyMzgsIDI5LCAxMzAsIDMxLCAxNiwgCi0gICAgMjE2LCAxNCwgMTcxLCAyNDIsIDM3LCAxMzAsIDMxLCAxNiwgMjE2LCAxNCwgMTcxLCAyNDQsIDIwMywgMTMwLCAzMSwgMTYsIAotICAgIDIxNiwgMTQsIDI0NiwgMTYsIDIwNywgMTk1LCAxMzAsIDMxLCAxNiwgMjE2LCAxNCwgMjQ2LCAxNiwgMjA5LCAyNDQsIDEzMCwgCi0gICAgMzEsIDE2LCAyMjcsIDIyMCwgMTcxLCAyMTksIDExOCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxNywgMTc3LCAKLSAgICAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDI0NiwgMTYsIDIxOCwgOTQsIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMjQ2LCAxNiwgCi0gICAgMjE4LCA4MCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxOCwgMTE5LCAyMTAsIDIxMywgMiwgMjE5LCAxMDEsIAotICAgIDIxMCwgMjEzLCAyLCAyMTksIDExNCwgMjEwLCAyMTMsIDIsIDIxOSwgMTEwLCAyMTAsIDIxMywgMSwgNjMsIDIxMCwgMjEzLCAKLSAgICAxLCA3NSwgMjEwLCAyMTMsIDEsIDY4LCAyMTAsIDIxMywgMSwgMjUxLCAxMDksIDIxMCwgMjEzLCAxLCA3OCwgMjEwLCAyMTMsIAotICAgIDEsIDc0LCAyMTAsIDIxMywgMSwgMjQwLCAyMzgsIDIxMCwgMjEzLCAxLCAxNzMsIDIxMCwgMjEzLCAxLCAyMTcsIDEyNiwgCi0gICAgMjEwLCAyMTMsIDEsIDIzOSwgOCwgMjEwLCAyMTMsIDEsIDIyMiwgMjAzLCAyMTAsIDIxMywgMSwgMjQ3LCA5MiwgMjEwLCAKLSAgICAyMTMsIDEsIDIzMCwgMTgxLCAyMTAsIDIxMywgMSwgMjAyLCAxMTYsIDIxMCwgMjEzLCAxLCAyMjEsIDExLCAyMTAsIDIxMywgCi0gICAgMSwgMjEwLCAyMiwgMjEwLCAyMTMsIDEsIDI0NCwgMjEyLCAyMTAsIDIxMywgMSwgMjAxLCAyMDEsIDIxMCwgMjEzLCAxLCAKLSAgICAxODUsIDIxMCwgMjEzLCAxLCAyNDAsIDEwOCwgMjEwLCAyMTMsIDEsIDIwNiwgODYsIDIxMCwgMjEzLCAxLCAyNDksIDMyLCAKLSAgICAyMTAsIDIxMywgMSwgMTkyLCAyMTAsIDIxMywgMSwgMTk4LCAyMTAsIDIxMywgMSwgMjE2LCAyMjAsIDIxMCwgMjEzLCAxLCAKLSAgICAyMjgsIDExMywgMjEwLCAyMTMsIDEsIDIwNCwgMTExLCAyMTAsIDIxMywgMSwgMjE1LCAzNiwgMjEwLCAyMTMsIDEsIDIwMywgCi0gICAgMTgyLCAyMTAsIDIxMywgMSwgMTUyLCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDEyNywgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAKLSAgICAxMDMsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgMTAwLCAyMTAsIDIxMywgMjIsIDIsIDIxOSwgMTE3LCAyMTAsIDIxMywgMjIsIAotICAgIDIsIDIxOSwgOTksIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMjEsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMDksIDIxMCwgCi0gICAgMjEzLCAyMiwgMiwgMjE5LCAxMjgsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMTksIDIxMCwgMjEzLCAyLCAyMTksIDEzMSwgCi0gICAgMjEwLCAyMTMsIDIsIDIwNSwgMjA0LCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIDY0LCAxOTIsIDIxMCwgMjEzLCAxMDksIDIsIAotICAgIDIxOSwgNjQsIDIwNCwgMTExLCAyMTAsIDIxMywgMSwgMjI5LCAxNDQsIDIxMCwgMjEzLCAxLCAyMTAsIDE1MCwgMjEwLCAKLSAgICAyMTMsIDE3LCAyMDIsIDg0LCAyMTAsIDIxMywgMTcsIDEwNSwgMjEwLCAyMTMsIDE3LCAxMDgsIDIxMCwgMjEzLCAxNywgCi0gICAgMTQ3LCAyMTAsIDIxMywgMTcsIDE0OSwgMjEwLCAyMTMsIDE3LCAxNzAsIDIxMCwgMjEzLCAxNywgMTk1LCAyMTAsIDIxMywgCi0gICAgMTcsIDIxMywgMTExLCAyMTAsIDIxMywgMTcsIDE5OSwgMjEwLCAyMTMsIDE3LCAyMjIsIDYzLCAyMTAsIDIxMywgMjUwLCAKLSAgICAxNywgMjEwLCAyMTMsIDEsIDIxNiwgNzYsIDIxMCwgMjEzLCAxLCAyMjcsIDE3MSwgMjEwLCAyMTMsIDEsIDI0OCwgOTgsIAotICAgIDIxMCwgMjEzLCAxLCA0NiwgMjMwLCA1NCwgMjEwLCAyMTMsIDEsIDQ2LCAyMjYsIDE4NSwgMjQ4LCAyMDgsIDEsIDYzLCAKLSAgICAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDYzLCAyNDgsIDIwOCwgMSwgMTUyLCAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDE1MiwgCi0gICAgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAxNTIsIDI0OCwgMjA4LCAxLCAyNDksIDMyLCAyNDgsIDIwOCwgMSwgMjI5LCAyMzYsIAotICAgIDI0OSwgMzIsIDI0OCwgMjA4LCAxLCAxODUsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTg1LCAyNDgsIDIwOCwgMSwgMjAxLCAKLSAgICAyMDEsIDI0OCwgMjA4LCAxLCAyMjUsIDExNywgMjAxLCAyMDEsIDI0OCwgMjA4LCAxLCAyMDQsIDExMSwgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAyMDQsIDExMSwgMjQ4LCAyMDgsIDEsIDIxOSwgMTQzLCAyMDQsIDExMSwgMjQ4LCAyMDgsIDEsIDIzOSwgOCwgCi0gICAgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAyMzksIDgsIDI0OCwgMjA4LCAxLCAyMzAsIDE4MSwgMjQ4LCAyMDgsIDEsIDI0NCwgCi0gICAgMjEyLCAyNDgsIDIwOCwgMSwgMjE2LCAyMjAsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMjE2LCAyMjAsIDI0OCwgMjA4LCAxLCAKLSAgICAxOTIsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTkyLCAyNDgsIDIwOCwgMSwgMjExLCAyMzYsIDIxMCwgMjIsIDI0OCwgCi0gICAgMjA4LCAxLCAyMjEsIDE3MCwgMjEwLCAyMiwgMjQ4LCAyMDgsIDEsIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgCi0gICAgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMTk4LCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDE5OCwgMjQ4LCAyMDgsIDEsIDIyMiwgMjAzLCAyNDgsIDIwOCwgMSwgMjI4LCAxMTMsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMjI4LCAxMTMsIDI0OCwgMjA4LCAxLCAyMjEsIDExLCAyNDgsIDIwOCwgMSwgMjQ3LCA5MiwgMjQ4LCAyMDgsIAotICAgIDEsIDIyMywgMjUsIDI0OCwgMjA4LCAxLCAyMjUsIDU0LCAyNDgsIDIwOCwgMSwgNzUsIDI0OCwgMjA4LCAxLCA2OCwgMjQ4LCAKLSAgICAyMDgsIDIsIDIwOCwgMTY0LCAyNDgsIDIwOCwgMjIsIDIsIDc0LCAyNDgsIDIwOCwgMjIsIDIsIDIxOSwgMTQzLCA3NCwgCi0gICAgMjQ4LCAyMDgsIDIyLCAyLCAyNDEsIDE2MSwgMjQ4LCAyMDgsIDIyLCAyLCA3NSwgMjQ4LCAyMDgsIDIyLCAyLCAyMjksIAotICAgIDIzNiwgNzUsIDI0OCwgMjA4LCAyMiwgMiwgNzgsIDI0OCwgMjA4LCAyMiwgMiwgMjI5LCAyMzYsIDc4LCAyNDgsIDIwOCwgCi0gICAgMjIsIDIsIDY4LCAyNDgsIDIwOCwgMjIsIDIsIDEwNiwgMzUsIDIxMiwgMTMxLCAyMTUsIDM2LCAyNDgsIDIwOCwgMTA5LCAyLCAKLSAgICAyMjIsIDIwNSwgMjQ4LCAyMDgsIDEwOSwgMiwgMjM3LCAxNzEsIDI0OCwgMjA4LCAyMTksIDExMiwgMjQ4LCAyMDgsIDIxOSwgCi0gICAgMTA4LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIyMywgMTExLCAyMjQsIDIxOCwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAKLSAgICAyMTgsIDEyMiwgMjQ4LCAyMDgsIDE2LCAyNDgsIDY0LCAyMzAsIDc5LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIxOSwgCi0gICAgMTEyLCAyMjcsIDE4MSwgMSwgMTczLCAyMjcsIDE4MSwgMSwgMjI5LCA0MCwgMjI3LCAxODEsIDEsIDIyOSwgMTQ0LCAyMjcsIAotICAgIDE4MSwgMSwgMjM5LCA4LCAyMjcsIDE4MSwgMSwgMjM4LCA1MSwgMjI3LCAxODEsIDEsIDIyMiwgMjAzLCAyMjcsIDE4MSwgMSwgCi0gICAgMjQ3LCA5MiwgMjI3LCAxODEsIDEsIDI0NiwgMTk5LCAyMjcsIDE4MSwgMSwgMjMwLCAxODEsIDIyNywgMTgxLCAxLCAyMjEsIAotICAgIDExLCAyMjcsIDE4MSwgMSwgMjEwLCAyMiwgMjI3LCAxODEsIDEsIDIwOSwgMTA4LCAyMjcsIDE4MSwgMSwgMjQ0LCAyMTIsIAotICAgIDIyNywgMTgxLCAxLCAyMDEsIDIwMSwgMjI3LCAxODEsIDEsIDE4NSwgMjI3LCAxODEsIDEsIDIxOCwgOTgsIDIyNywgMTgxLCAKLSAgICAxLCAyMTgsIDIwOCwgMjI3LCAxODEsIDEsIDI0MCwgMTA4LCAyMjcsIDE4MSwgMSwgMjM5LCAyMjcsIDIyNywgMTgxLCAxLCAKLSAgICAyNDksIDMyLCAyMjcsIDE4MSwgMSwgMjQ4LCA0NCwgMjI3LCAxODEsIDEsIDE5MiwgMjI3LCAxODEsIDEsIDIyNCwgODksIAotICAgIDIyNywgMTgxLCAxLCAyMDgsIDIwLCAyMjcsIDE4MSwgMSwgMjA4LCAxMCwgMjI3LCAxODEsIDEsIDI0MSwgMjU1LCAyMjcsIAotICAgIDE4MSwgMSwgMTk4LCAyMjcsIDE4MSwgMSwgMjE2LCAyMjAsIDIyNywgMTgxLCAxLCAyMjgsIDExMywgMjI3LCAxODEsIDEsIAotICAgIDE1MiwgMjI3LCAxODEsIDEsIDIzNiwgMjI0LCAyMjcsIDE4MSwgMSwgMjA2LCA4NiwgMjI3LCAxODEsIDEsIDIxNSwgMzYsIAotICAgIDIyNywgMTgxLCAxLCAyMTMsIDkwLCAyMjcsIDE4MSwgMSwgMjA0LCAxMTEsIDIyNywgMTgxLCAxLCA2MywgMjI3LCAxODEsIAotICAgIDIxMCwgMjU0LCAxLCAxOTgsIDIyNywgMTgxLCAyMTAsIDI1NCwgMSwgMjE2LCAyMjAsIDIyNywgMTgxLCAyMiwgMiwgMjUyLCAKLSAgICAyNSwgMjI3LCAxODEsIDIyLCAyLCA3NSwgMjI3LCAxODEsIDIyLCAyLCA3OCwgMjI3LCAxODEsIDIyLCAyLCAyMjAsIDE4LCAKLSAgICAyMjcsIDE4MSwgMjIsIDIsIDY4LCAyMjcsIDE4MSwgMjIsIDIsIDIwNiwgMTc4LCAyMjcsIDE4MSwgMjIsIDIsIDc0LCAyMjcsIAotICAgIDE4MSwgMTA5LCAyLCAyMzAsIDU0LCAyMjcsIDE4MSwgMTA5LCAyLCAyMjYsIDE4NSwgMjI3LCAxODEsIDEwOSwgMiwgMTU5LCAKLSAgICAyMjcsIDE4MSwgMTA5LCAyLCAyMjMsIDE2MywgMjI3LCAxODEsIDEwOSwgMiwgMjE5LCAxODQsIDIyNywgMTgxLCAxMDksIDIsIAotICAgIDE0NiwgMjI3LCAxODEsIDEwOSwgMiwgMjEwLCA2OSwgMjI3LCAxODEsIDEwOSwgMiwgMjIwLCAyNDEsIDIyNywgMTgxLCAKLSAgICAxMDksIDIsIDIzMCwgMCwgMjI3LCAxODEsIDIsIDIxNiwgMTgxLCAyMjcsIDE4MSwgMiwgMjIxLCA1MSwgMjI3LCAxODEsIAotICAgIDIxNywgMTc5LCAyMTAsIDIwLCAyMjcsIDE4MSwgMjE3LCAxNzksIDIyMCwgMjUyLCAyMDksIDUsIDIxMCwgMjAsIDIyNywgCi0gICAgMTgxLCAyMTcsIDE3OSwgMjQ2LCAyMDYsIDIyNywgMTgxLCAyMTcsIDE3OSwgMjA4LCAyLCAyNDYsIDIwNiwgMjI3LCAxODEsIAotICAgIDIxNywgMTc5LCAyMDgsIDEsIDIyNywgMTgxLCAxNywgMjAyLCA4NCwgMjI3LCAxODEsIDE3LCAxMDUsIDIyNywgMTgxLCAxNywgCi0gICAgMTA4LCAyMjcsIDE4MSwgMTcsIDE0NywgMjI3LCAxODEsIDE3LCAxNDksIDIyNywgMTgxLCAxNywgMTcwLCAyMjcsIDE4MSwgCi0gICAgMTcsIDE5NSwgMjI3LCAxODEsIDE3LCAyMTMsIDExMSwgMjI3LCAxODEsIDE3LCAxOTksIDIyNywgMTgxLCAxNywgMjIyLCAKLSAgICA2MywgMjI3LCAxODEsIDEsIDIwNywgMjQxLCAyMjcsIDE4MSwgMSwgMjA3LCAyMjksIDIyNywgMTgxLCAxLCAyNDQsIDEyMCwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAyMDIsIDg0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDEwNSwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDE3LCAxMDgsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTQ3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE0OSwgCi0gICAgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNzAsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTk1LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMTcsIDIxMywgMTExLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE5OSwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAKLSAgICAyMjIsIDYzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI4LCAxMTMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTAsIDQ5LCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCA4MSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MCwgMjIzLCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMSwgMjUxLCAzOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyOCwgMTEyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgCi0gICAgMSwgMjUxLCAyNDMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDI0NCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgCi0gICAgMjQyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAyMzcsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjcsIDE0OCwgMjIwLCAKLSAgICA0NywgMjQ2LCAxMzUsIDEsIDIzMCwgMjE1LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjMxLCA4NCwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDEsIDIzMCwgMjM2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjMwLCAyMjQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAKLSAgICAyMjYsIDIzOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNywgMzEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDcsIDI5LCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA2LCAyMjksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDYsIDE3MCwgMjIwLCA0NywgCi0gICAgMjQ2LCAxMzUsIDEsIDIyNywgMjM0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCA0NiwgMjIwLCA0NywgMjQ2LCAxMzUsIAotICAgIDEsIDI0MSwgMTY0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCA5MiwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI0MSwgCi0gICAgMjEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjcsIDQ5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjE5LCAyMTksIDIyMCwgCi0gICAgNDcsIDI0NiwgMTM1LCAxLCAyMjAsIDkzLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjE5LCAyMDYsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxLCAyMjAsIDYwLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjIzLCAyNDcsIDIwNywgMjA2LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMjM5LCAzLCAyMDcsIDIwNywgMjIwLCA0NywgMjQ2LCAxMzUsIDIyMywgMjQ1LCAyMDcsIDIwNywgMjIwLCA0NywgCi0gICAgMjQ2LCAxMzUsIDIxNiwgMTE4LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjE4LCAyMDYsIDIyMCwgNDcsIDI0NiwgMTM1LCAyNTEsIAotICAgIDcyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjE3LCAxNzksIDIyMywgMjQxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjE3LCAxNzksIAotICAgIDUyLCAyMjMsIDI0MSwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMTAsIDE4NCwgMjEwLCAyMTMsIDIxNywgMTc5LCAKLSAgICAyNDgsIDY0LCAyMTksIDExMywgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMTcsIDE2NywgMjEwLCAyMTMsIDIxNywgCi0gICAgMTc5LCAyNDgsIDY0LCAyNDcsIDc3LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIyNywgMTcyLCAyMTQsIDIyNCwgCi0gICAgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyMzAsIDQ0LCAyMTQsIDIyNCwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIAotICAgIDY0LCAyNDQsIDIxMywgMjE0LCAyMjQsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjQ5LCAzMywgMjE0LCAyMjQsIAotICAgIDIwNiwgNTIsIDE0MywgMjI5LCAyMzQsIDIwNiwgNTIsIDE0MywgMjEzLCA1OCwgMjA2LCA1MiwgMTQzLCAyMTcsIDI0NSwgCi0gICAgMjA2LCA1MiwgMiwgMjIyLCA3NiwgMjA2LCA1MiwgMiwgMjAzLCA4NywgMjI0LCAxNDYsIDIxMCwgMTc1LCAyMDYsIDUyLCAKLSAgICAxNDMsIDIwMywgODcsIDI1MSwgNzcsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIzMSwgMzYsIAotICAgIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIyOSwgMjIyLCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgCi0gICAgMTQzLCAyNDcsIDU1LCA1NiwgMjA2LCA1MiwgMTQzLCAyMDMsIDg3LCAyMjksIDIyMiwgMjMxLCAzNiwgMjEwLCAxNzYsIAotICAgIDIxNCwgMTk0LCAyMDYsIDUyLCAxNDMsIDUyLCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyMDgsIDcwLCAyMTAsIDE3NSwgCi0gICAgMjA2LCA1MiwgMTQzLCAyMjksIDIyMiwgMjUwLCAxODIsIDIwNiwgNTIsIDE0MywgNzAsIDU2LCAyMDYsIDUyLCAxNDMsIAotICAgIDEyMCwgMTg3LCA1NiwgMjA2LCA1MiwgMTQzLCAxMjYsIDE4NywgNTYsIDIwNiwgNTIsIDE0MywgMjE2LCA0LCAyMjksIDIzMywgCi0gICAgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjUwLCA0NywgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDIsIAotICAgIDIwNSwgMjAwLCAyMTAsIDE3NSwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDIwNywgMjYsIDIwNiwgNTIsIDIsIDIxNiwgNzMsIAotICAgIDIwNSwgMjAwLCAyMDcsIDI2LCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjUwLCAxODIsIDIwNiwgNTIsIDIsIDIxNiwgNzMsIAotICAgIDIwNSwgMjAwLCAyNTAsIDE4MiwgMjA2LCA1MiwgMiwgMjA1LCAyMDAsIDIwNywgMjcsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAKLSAgICAyLCAyMDUsIDIwMCwgMjUwLCAxODMsIDMsIDIwOSwgMjQ4LCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjUwLCAxOTcsIDIwNiwgCi0gICAgNTIsIDIsIDI1MCwgMTgxLCAyNDksIDIsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyMDYsIDc3LCAyMDYsIDUyLCAyLCAyNTAsIAotICAgIDE4MSwgMjA2LCA3OCwgMywgMjA5LCAyNDgsIDIwNiwgNTIsIDIsIDIwOCwgMjAxLCAyMDYsIDUyLCAyLCAyMzcsIDE1LCAKLSAgICAxNjMsIDI1MCwgMTgwLCAyMDYsIDUyLCAyLCAxNjMsIDI1MCwgMTgwLCAyMDYsIDUyLCAyLCAyMTUsIDE0NywgMTYzLCAyNTAsIAotICAgIDE4MCwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDIwNywgMzMsIDIyMywgMjMyLCAyMDYsIDUyLCAyLCAyNTAsIDEyMiwgMjA2LCAKLSAgICA1MiwgMiwgMjE1LCAxOTgsIDI1MCwgMTIyLCAyMDYsIDUyLCAxNDMsIDI0NywgNTUsIDU1LCAyMDYsIDUyLCAyLCAyMzAsIAotICAgIDEzNSwgMjA2LCA1MiwgMiwgMjA2LCAyMjIsIDIwNiwgNTIsIDE0MywgMjE1LCAyNTMsIDU1LCAyMDYsIDUyLCAxNDMsIDUyLCAKLSAgICAyMTUsIDI1MywgNTUsIDgsIDEsIDUsIDYsIDYzLCA4LCAxLCA1LCA2LCAyNTEsIDEwOSwgOCwgNSwgMSwgMjA3LCAxNzQsIAotICAgIDI1MSwgMTA5LCA4LCAxLCA1LCA2LCAyNDgsIDIyNSwgMjQ5LCAyNTUsIDgsIDEsIDUsIDYsIDI0NywgMTI1LCA4LCAxLCA1LCAKLSAgICA2LCAyNDUsIDUxLCA4LCAxLCA1LCA2LCAyNDAsIDI0MywgOCwgMSwgNSwgNiwgNzQsIDgsIDUsIDEsIDIwNywgMTc0LCAxNzEsIAotICAgIDc0LCA4LCA1LCAxLCAyMDcsIDE3NCwgNzUsIDgsIDEsIDUsIDYsIDIzMCwgMTg0LCA4LCAxLCA1LCA2LCAyMzAsIDU0LCA4LCAKLSAgICAxLCA1LCA2LCAyMjgsIDEzMSwgMywgOTUsIDgsIDEsIDUsIDYsIDIyNiwgMTg1LCA4LCAxLCA1LCA2LCAyMTYsIDczLCAyMjMsIAotICAgIDE2MywgOCwgMSwgNSwgNiwgNzgsIDgsIDEsIDUsIDYsIDE3MSwgNzgsIDgsIDUsIDEsIDIxMiwgMTU0LCA3OCwgOCwgNSwgMSwgCi0gICAgMjEyLCAxNTQsIDE3MSwgNzgsIDgsIDUsIDEsIDIxMiwgMTU0LCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjIwLCAKLSAgICA3MywgOCwgMSwgNSwgNiwgMjE5LCAyMTYsIDgsIDUsIDEsIDIwOCwgMTQ1LCAxNjIsIDc4LCA4LCA1LCAxLCAyNDcsIDI0OCwgCi0gICAgMTYyLCA3OCwgOCwgMSwgNSwgNiwgMjE5LCAxODQsIDgsIDEsIDUsIDYsIDIxNiwgNzMsIDE0NiwgOCwgMSwgNSwgNiwgMjA3LCAKLSAgICAxNzQsIDE0NiwgOCwgMSwgNSwgNiwgMjEwLCA2OSwgOCwgMSwgNSwgNiwgNjgsIDgsIDUsIDEsIDIxMiwgMTU0LCA2OCwgOCwgCi0gICAgNSwgMSwgMjEyLCAxNTQsIDI0MywgMjI5LCA2OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgCi0gICAgMSwgNSwgNiwgMjA2LCAxNjQsIDgsIDEsIDUsIDYsIDIwNCwgMTQ0LCA4LCAxLCA1LCA2LCAyMDIsIDE1OSwgOCwgMSwgNSwgCi0gICAgNiwgMjQwLCAxNzcsIDgsIDEsIDIwNSwgMTg2LCAyMjgsIDMsIDIxMSwgMjAwLCA4LCAxLCAyNTEsIDU5LCAzMCwgMSwgNSwgCi0gICAgNiwgMjM4LCAyMzUsIDMwLCAxLCA1LCA2LCAyMjgsIDI0LCAzMCwgMSwgNSwgNiwgMjE4LCAxNjcsIDMwLCAxLCA1LCA2LCAKLSAgICAyMTYsIDU5LCAzMCwgMSwgNSwgNiwgMjE3LCAyMDIsIDM2LCAxLCA1LCA2LCAyNDEsIDEyMiwgNjUsIDEsIDYsIDYzLCA2NSwgCi0gICAgMSwgNiwgMjUxLCAxMDksIDY1LCAxLCA2LCAyNDksIDI1NSwgNjUsIDEsIDYsIDI0OCwgMjI1LCAyNDksIDI1NSwgNjUsIDEsIAotICAgIDYsIDI0NSwgNTEsIDY1LCAxLCA2LCA3NCwgNjUsIDEsIDYsIDIxNiwgNzMsIDc0LCA2NSwgMSwgNiwgMjM5LCA3NSwgNjUsIAotICAgIDEsIDYsIDIzNywgMTcxLCA2NSwgMSwgNiwgNzUsIDY1LCAxLCA2LCAyMzAsIDE4NCwgNjUsIDEsIDYsIDIzMCwgNTQsIDY1LCAKLSAgICAxLCA2LCAxNTksIDY1LCAxLCA2LCAyMjYsIDE4NSwgNjUsIDEsIDYsIDIyMywgMTYzLCA2NSwgMSwgNiwgMjE2LCA3MywgCi0gICAgMjIzLCAxNjMsIDY1LCAxLCA2LCA3OCwgNjUsIDEsIDYsIDIxOSwgMjE2LCA2NSwgMSwgNiwgMjE5LCAxODQsIDY1LCAxLCA2LCAKLSAgICAxNDYsIDY1LCAxLCA2LCAyMTAsIDY5LCA2NSwgMSwgNiwgNjgsIDY1LCAxLCA2LCAyMDQsIDE0NCwgNjUsIDEsIDUsIDYzLCAKLSAgICA2NSwgMSwgNSwgMjA3LCAxNzQsIDYzLCA2NSwgMSwgNSwgMjUxLCAyLCA2NSwgMSwgNSwgMjA3LCAxNzQsIDI1MSwgMTA5LCAKLSAgICA2NSwgMSwgNSwgMjQ5LCAyNTUsIDY1LCAxLCA1LCAyNDUsIDUxLCA2NSwgMSwgNSwgNzQsIDY1LCAxLCA1LCAyMTQsIDE5MiwgCi0gICAgNjUsIDEsIDUsIDE3MSwgNzQsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMTcxLCA3NCwgNjUsIDEsIDUsIDIzOSwgNzUsIDY1LCAxLCAKLSAgICA1LCAyMDcsIDE3NCwgNzUsIDY1LCAxLCA1LCAyMzAsIDU0LCA2NSwgMSwgNSwgMjI2LCAxODUsIDY1LCAxLCA1LCAyNDEsIAotICAgIDc4LCA2NSwgMSwgNSwgNzgsIDY1LCAxLCA1LCAxNzEsIDc4LCA2NSwgMSwgNSwgMjA4LCAxNDUsIDE2MiwgNzgsIDY1LCAxLCAKLSAgICA1LCAyNDcsIDI0OCwgMTYyLCA3OCwgNjUsIDEsIDUsIDIxOSwgMTg0LCA2NSwgMSwgNSwgMjEwLCA2OSwgNjUsIDEsIDUsIAotICAgIDY4LCA2NSwgMSwgNSwgMjEyLCAxNTQsIDY4LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIyNiwgMTg1LCA2NSwgMSwgNSwgMjA2LCAKLSAgICAxNjQsIDY1LCAxLCA1LCAyNTEsIDU5LCA2NSwgMSwgNSwgMjQ4LCAxMDYsIDY1LCAxLCA1LCAzMCwgMjM4LCAyMzUsIDY1LCAKLSAgICAxLCA1LCAyNDQsIDM3LCA2NSwgMSwgNSwgMzAsIDIxOCwgMTkyLCA2NSwgMSwgNSwgMjQ2LCAxNDIsIDgsIDIxMCwgMjQ2LCAKLSAgICA1LCAxLCA3NSwgOCwgMjEwLCAyNDYsIDUsIDEsIDE0NiwgOCwgMjEwLCAyNDYsIDUsIDEsIDY4LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjA2LCAxNjQsIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjQ4LCAxMDYsIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjM4LCAyMzUsIAotICAgIDMwLCAyMTAsIDI0NiwgNSwgMSwgMjE2LCA1OSwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMTgsIDE5MiwgMzAsIDIxMCwgMjQ2LCAKLSAgICA1LCAxLCAyNDYsIDE0MiwgOCwgNSwgMSwgMjA3LCAyNCwgOCwgNSwgMSwgNjYsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDI0NSwgNTIsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDI0MCwgMTc1LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMjYsIDE4NiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIxOSwgMTg1LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMywgMjM5LCAyNDEsIDI1LCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAxMDEsIDIwOCwgCi0gICAgMjI3LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMTAxLCAyMDgsIAotICAgIDIyNywgOCwgNSwgMSwgMjA3LCAxNzQsIDIzOSwgNzUsIDY1LCAxLCAzNiwgMjQxLCA5MiwgOCwgNSwgMSwgMjMxLCA0LCAKLSAgICAyMzksIDc1LCA4LCA1LCAxLCAyMDksIDExMSwgMywgMjExLCAzNiwgOCwgNSwgNiwgMSwgMjM1LCAyMDYsIDMsIDk1LCA4LCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgOTUsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCA5NSwgOCwgNSwgNiwgMSwgMTA2LCAzLCA5NSwgCi0gICAgOCwgNSwgMSwgMjA2LCAyMTcsIDMsIDk1LCA4LCA1LCAxLCA2NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQ1LCAKLSAgICA1MiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzOSwgCi0gICAgNzYsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyOCwgCi0gICAgMTMxLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjQsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMTcsIAotICAgIDEsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDI0MSwgOCwgCi0gICAgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwMywgMTk3LCAKLSAgICAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMzQsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjUxLCAzLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDIzNiwgCi0gICAgMTE2LCAyNSwgMjA5LCAyNDgsIDgsIDUsIDEsIDE4OCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxNzEsIDE4OCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMTYsIDczLCAxNzEsIDE4OCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMTQsIAotICAgIDE5MywgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxNzEsIAotICAgIDE1OCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNDEsIDgsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyMTYsIDc5LCAxMTMsIDY1LCAxLCA1LCAyMDcsIDE3NCwgCi0gICAgMjUxLCAyLCA2NSwgMSwgNSwgMjQ3LCAxMjUsIDY1LCAxLCA1LCAyNDcsIDEyNiwgMywgMjQ1LCA5NSwgNjUsIDEsIDUsIAotICAgIDI0MCwgMjQzLCA2NSwgMSwgNSwgMjE2LCA3MywgMTcxLCA3NCwgNjUsIDEsIDUsIDI0MCwgMTc0LCA2NSwgMSwgNSwgMjQzLCAKLSAgICA4NCwgMjMwLCAxODUsIDMsIDk1LCA2NSwgMSwgNSwgMTMyLCAyMzksIDc1LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIzNywgCi0gICAgMTcxLCA2NSwgMSwgNSwgMjM1LCAyMDYsIDMsIDk1LCA2NSwgMSwgNSwgMjMwLCAyMzAsIDY1LCAxLCA1LCA2LCA3NSwgNjUsIAotICAgIDEsIDUsIDYsIDIzNSwgMjA2LCAzLCA5NSwgNjUsIDEsIDUsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgNjUsIDEsIDUsIDIyOCwgCi0gICAgMTMxLCAzLCAyMTYsIDc5LCAxMTMsIDY1LCAxLCA1LCAyMjgsIDEzMSwgMywgMjE5LCAxNDIsIDExMywgNjUsIDEsIDUsIDYsIAotICAgIDE1OSwgNjUsIDEsIDUsIDIyNiwgMTg2LCAzLCAxMTMsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjI2LCAxODYsIDMsIDE2MywgCi0gICAgMjI3LCAyMTAsIDY1LCAxLCA1LCAyMjMsIDE2NCwgMywgNDksIDExMywgNjUsIDEsIDUsIDIyMywgMTY0LCAzLCAyMTYsIDc5LCAKLSAgICAxMTMsIDY1LCAxLCA1LCA2LCAyMjMsIDE2MywgNjUsIDEsIDUsIDI0OCwgMjI1LCA3OCwgNjUsIDEsIDUsIDIxOCwgMTkyLCAKLSAgICA2NSwgMSwgNSwgMjE1LCA5NCwgMywgMTEzLCA2NSwgMSwgNSwgMjQxLCA3LCA2NSwgMSwgNSwgMjEwLCA3MCwgMywgMjE5LCAKLSAgICAxNDIsIDExMywgNjUsIDEsIDUsIDEwNiwgMTQyLCA2NSwgMSwgNSwgMjA2LCAyMTYsIDY1LCAxLCA1LCA2LCA2OCwgNjUsIDEsIAotICAgIDUsIDIwNiwgMTY1LCAzLCAxMTMsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjA2LCAxNjQsIDY1LCAxLCA1LCAyMDIsIDE1OSwgCi0gICAgNjUsIDEsIDUsIDIwMiwgMTYwLCAzLCAyMTYsIDc5LCAxMTMsIDY1LCAxLCA1LCAyMDIsIDE2MCwgMywgMjQ1LCA5NSwgNjUsIAotICAgIDEsIDUsIDI0MCwgMTc3LCA2NSwgMSwgNSwgMjA5LCA3NCwgMzksIDI0MiwgODMsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIAotICAgIDI0MiwgODMsIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIDIxMiwgMjUsIDU2LCAzOSwgMjEwLCAxODIsIDgyLCAzOSwgMjI1LCAKLSAgICAxNjksIDM5LCAyMzcsIDI1MSwgMzksIDIyNSwgMTY3LCAzOSwgMjUxLCAxMjQsIDM5LCAyMzcsIDI1MiwgMzksIDI1MSwgCi0gICAgMTI1LCAzOSwgOCwgNSwgMSwgMjE3LCAxLCA1NiwgMzksIDI0NywgMjEzLCAzOSwgMjI1LCAxNjgsIDM5LCA1MiwgMjQ2LCAKLSAgICA1MywgNTUsIDM5LCAyMjAsIDYzLCA1NSwgMzksIDIwMiwgMzAsIDU2LCAzOSwgMjMwLCAyMTYsIDU2LCAzOSwgMjA2LCAyMTEsIAotICAgIDU1LCAzOSwgMjA2LCAxOTQsIDU1LCAzOSwgOCwgNSwgMSwgMjM5LCAyMTQsIDE3MSwgMzQsIDU1LCAzOSwgOCwgNSwgMSwgCi0gICAgMjUxLCAxMDksIDM5LCA4LCA1LCAxLCAyNTAsIDE3OCwgMzksIDgsIDUsIDEsIDI1MCwgMTgsIDM5LCA4LCA1LCAxLCAyNDcsIAotICAgIDEyNiwgMjQ2LCAyMzEsIDM5LCA4LCA1LCAxLCAyMzEsIDQsIDI0NSwgNTEsIDM5LCA4LCA1LCAxLCAyNDAsIDI0MywgMzksIAotICAgIDgsIDUsIDEsIDIzOSwgNzUsIDM5LCA4LCAxLCA1LCA2LCAyMzksIDc1LCAzOSwgOCwgNSwgMSwgMjMwLCA1NCwgMzksIDgsIAotICAgIDUsIDEsIDE1OSwgMzksIDgsIDEsIDUsIDYsIDE1OSwgMzksIDgsIDEsIDUsIDYsIDIyNiwgMTg1LCAzOSwgOCwgNSwgMSwgCi0gICAgMjIzLCAxNjMsIDM5LCA4LCAxLCA1LCA2LCAyMjMsIDE2MywgMzksIDgsIDEsIDUsIDYsIDE0NiwgMzksIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMjE1LCAxOTIsIDM5LCA4LCA1LCAxLCAxOTQsIDM5LCA4LCA1LCAxLCAxNjMsIDE5NCwgMzksIDgsIDUsIDEsIAotICAgIDIwMiwgMTU5LCAzOSwgOCwgNSwgMSwgMjUxLCAyLCAzOSwgOCwgNSwgMSwgMjQ5LCAyNTUsIDM5LCA4LCA1LCAxLCAyNDgsIAotICAgIDEwNiwgMzksIDgsIDUsIDEsIDIxNCwgMTkyLCAzOSwgOCwgNSwgMSwgMjQwLCAxNzQsIDM5LCA4LCA1LCAxLCAyMjgsIDEzMSwgCi0gICAgMywgNTIsIDEwMSwgMjA4LCAyMjcsIDM5LCA4LCA1LCAxLCAxNTgsIDMsIDE1NywgMjQ2LCAyMTksIDk1LCAzOSwgOCwgNSwgCi0gICAgMSwgMjE5LCAxODQsIDM5LCA4LCA1LCAxLCAyNDEsIDcsIDM5LCA4LCA1LCAxLCAxMDYsIDMsIDE1NywgMjQ2LCAyMTksIDk1LCAKLSAgICAzOSwgOCwgNSwgMSwgMjA0LCAxNDQsIDM5LCA4LCA1LCAxLCAzNCwgMywgMjQzLCAyMzEsIDM5LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDI0MywgMjMxLCAzOSwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgMzksIDExMiwgMjEwLCA0LCA1NSwgMzksIDUyLCAKLSAgICAyMzAsIDIzOSwgMjQ3LCAyMTUsIDU2LCAzOSwgMjUxLCA3LCAxNTYsIDIwOCwgMTczLCA1NiwgMzksIDQ5LCAyNTAsIDk1LCAKLSAgICA1NSwgMzksIDUwLCAyNTAsIDk1LCAyNSwgMTIxLCAyNTAsIDk1LCA1NiwgOCwgNiwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NiwgCi0gICAgOCwgNSwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NiwgOCwgNiwgMSwgNjYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgNjYsIDMsIDcwLCAKLSAgICA1NSwgOCwgNiwgMSwgNjYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgNjYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgNjYsIDMsIDIyNywgCi0gICAgMTE1LCA1NiwgOCwgNSwgMSwgNjYsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMyLCAKLSAgICAyNSwgMTY1LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzIsIDI1LCAxNjUsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA3MCwgNTYsIDgsIDUsIAotICAgIDEsIDI0NSwgNTIsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyNDUsIAotICAgIDUyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyNDUsIDUyLCAzLCAKLSAgICAyNDYsIDIzMSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDI0NiwgNTMsIAotICAgIDU2LCA4LCA2LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAxNzEsIAotICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIAotICAgIDE3MSwgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDUzLCA1NiwgCi0gICAgOCwgNiwgMSwgMTg4LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDE4OCwgMywgMjA4LCAyMjgsIDU2LCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDI0NiwgMjMyLCAyNSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAyMzIsIDI1LCAyNDcsIDIxNCwgCi0gICAgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgNzAsIAotICAgIDU1LCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIzNywgMTcyLCAKLSAgICAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCAKLSAgICAyMzEsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDcsIDIxNSwgNTYsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDcsIDIxNSwgCi0gICAgNTYsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyOCwgCi0gICAgNTYsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDMsIDIzMiwgMjUsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgCi0gICAgMjMyLCAyNSwgMTY1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAxNjUsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDE2NSwgOCwgNiwgCi0gICAgMSwgMjMwLCA1NSwgMywgNzAsIDU2LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIAotICAgIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgNzAsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNzAsIDI0OCwgMTI2LCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMjI4LCAxMzEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgCi0gICAgMjI4LCAxMzEsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIAotICAgIDIyNiwgMTg2LCAzLCAxNjUsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAxNjUsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCA3MCwgCi0gICAgNTUsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDIyNiwgMTg2LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAKLSAgICA3MCwgNTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCA3MCwgNTYsIDgsIDYsIAotICAgIDEsIDIyMywgMTY0LCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIyMywgMTY0LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIAotICAgIDEsIDIyMywgMTY0LCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA2LCAxLCAKLSAgICAxNTgsIDMsIDIwOCwgMjI4LCAyNSwgMjQzLCAyMzEsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyNDMsIDIzMSwgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzEsIAotICAgIDI1LCAxNjUsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAxNjUsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDIxNywgMSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAKLSAgICAxLCAyMTcsIDEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIyNywgMTE1LCAKLSAgICA1NiwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCA1NSwgOCwgNSwgCi0gICAgMSwgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjUxLCAxMjYsIDI1LCA3MCwgNTUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIAotICAgIDI1MSwgMTI2LCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDcsIDMwLCAyNSwgNzAsIDU1LCA4LCA1LCAxLCAKLSAgICAyMTUsIDk0LCAzLCAyNDcsIDMwLCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNiwgMSwgMjEwLCA3MCwgCi0gICAgMywgNzAsIDU1LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NiwgOCwgCi0gICAgNSwgMSwgMjEwLCA3MCwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIAotICAgIDIxMCwgNzAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIxMCwgCi0gICAgNzAsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDI0MywgMjMyLCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyNDMsIAotICAgIDIzMiwgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgCi0gICAgNiwgMSwgMTA2LCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMTA2LCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAKLSAgICAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAKLSAgICAyMjUsIDE3MSwgMjUsIDI0MywgMjMxLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjQzLCAyMzEsIDgsIDYsIDEsIAotICAgIDIwNiwgMTY1LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMDYsIDE2NSwgCi0gICAgMywgNzAsIDU2LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgNzAsIDU2LCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjM3LCAyNTMsIAotICAgIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDE2NSwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDUsIDMsIDE2NSwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMjQzLCAKLSAgICAyMzEsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIAotICAgIDIwNCwgMTQ1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTk3LCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMywgMTk3LCAzLCAyNDMsIDIzMSwgOCwgCi0gICAgNSwgMSwgMjAzLCAxOTcsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyMDMsIAotICAgIDEyNSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NiwgCi0gICAgNTIsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA3MCwgNTYsIDgsIDYsIDEsIAotICAgIDIwMiwgMTYwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIAotICAgIDIzNywgMTcyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NSwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjE1LCAyNTMsIDU1LCA4LCA1LCAxLCAzNCwgMywgCi0gICAgNTAsIDE2MiwgMjE1LCAyNTIsIDgsIDUsIDEsIDE2MywgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxNjMsIDIxNSwgCi0gICAgOTQsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMTYzLCAyMTUsIDk0LCAzLCAxMzgsIDk1LCA4LCA2LCAxLCAyMTMsIDU3LCAKLSAgICAxOTQsIDgsIDUsIDEsIDI0NCwgMzcsIDgsIDYsIDEsIDM0LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDM0LCAzLCA3MCwgNTYsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDM0LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDI0NiwgCi0gICAgNTMsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCAKLSAgICA2LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAKLSAgICA3MCwgNTYsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDE2NSwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgCi0gICAgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE1LCAKLSAgICAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDI0NywgMjE1LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAxODgsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMTg4LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDE4OCwgMywgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxODgsIDMsIDIzNiwgMTE2LCAKLSAgICA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMTg4LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgCi0gICAgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIAotICAgIDExNiwgNTUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgCi0gICAgNTMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDIzNSwgCi0gICAgMjA2LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICA3MCwgNTYsIDgsIDYsIDEsIDE1OCwgMywgNzAsIDU2LCA4LCA1LCAxLCAxNTgsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTU4LCAKLSAgICAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIAotICAgIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgCi0gICAgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgCi0gICAgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDIwOCwgMjI3LCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDcwLCAKLSAgICA1NiwgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAxNTgsIDMsIAotICAgIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDEwNiwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAxMDYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCAxMTYsIAotICAgIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDE2NSwgCi0gICAgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDEwNiwgMywgCi0gICAgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIzNywgMjUzLCA4LCAKLSAgICA1LCAxLCAyMDMsIDEyNSwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAKLSAgICAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAyMjQsIDE0NywgMjI3LCA3OCwgOCwgNSwgMSwgMjI0LCAxNDcsIDIyNywgNzgsIDgsIDYsIDEsIAotICAgIDIyNCwgMTQ3LCAyMDYsIDE2NCwgOCwgNSwgMSwgMjI0LCAxNDcsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgCi0gICAgMjI3LCAxNCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIyNywgMTQsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk1LCAKLSAgICAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAKLSAgICAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgCi0gICAgMjE4LCAyMzksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAKLSAgICAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE4LCAyMzksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDEsIDM4LCAKLSAgICAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgCi0gICAgMjQxLCAzOCwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgCi0gICAgMjE5LCAxODksIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI0MSwgMzgsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTUsIDMwLCAKLSAgICA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAKLSAgICAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIAotICAgIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDIzOSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MSwgCi0gICAgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAKLSAgICAyMzAsIDIzMSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMzAsIAotICAgIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCAKLSAgICA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgCi0gICAgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjE3LCAKLSAgICAxOTUsIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzUsIAotICAgIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIAotICAgIDIyMCwgMzUsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgCi0gICAgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM1LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgCi0gICAgMjA2LCAyMTcsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIAotICAgIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCi0gICAgMSwgMjA2LCAyMTcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIAotICAgIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIAotICAgIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAxOTUsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIyMCwgMzcsIAotICAgIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIAotICAgIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIAotICAgIDEsIDI1MSwgMywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyNDEsIDM4LCAKLSAgICAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA2LCAKLSAgICA3MCwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjA2LCA3MCwgMzAsIDUsIDEsIAotICAgIDIyMCwgMzUsIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgCi0gICAgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE5LCAKLSAgICAxODksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIAotICAgIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIAotICAgIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAKLSAgICAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIAotICAgIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgCi0gICAgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCi0gICAgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgCi0gICAgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIAotICAgIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgCi0gICAgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIAotICAgIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIAotICAgIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAKLSAgICAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAKLSAgICAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIAotICAgIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgCi0gICAgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAKLSAgICAyMjEsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIAotICAgIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcxLCAyNSwgMjE3LCAyMDksIDMwLCAKLSAgICA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIAotICAgIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOCwgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjQwLCAyNSwgMjE3LCAyMDksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIwNSwgMTY3LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAKLSAgICAyMjUsIDE3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAKLSAgICAzLCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgCi0gICAgMywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAKLSAgICAyNTEsIDMsIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgCi0gICAgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMjA5LCAKLSAgICAzMCwgMjI4LCAyNTIsIDMwLCAyMTcsIDIwOSwgMzAsIDIxNywgMTk1LCAzMCwgMjE4LCAyMzksIDMwLCAyNDMsIDIyNSwgMjUsIAotICAgIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCi0gICAgMSwgMjQwLCAyNDksIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIAotICAgIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAKLSAgICAyNDAsIDI0OSwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MCwgCi0gICAgMjQ5LCAzLCAyMTcsIDIwOSwgMzAsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIAotICAgIDMwLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIwNSwgMTY3LCAzMCwgNSwgMSwgCi0gICAgMjMwLCAyMzEsIDMsIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjA2LCA3MCwgMzAsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxOCwgCi0gICAgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMzAsIDIzMSwgCi0gICAgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjA2LCAKLSAgICA3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTksIDE4OSwgMzAsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjE5LCAxODksIDMwLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIAotICAgIDIwNSwgMTY3LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgCi0gICAgMjI1LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNSwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgCi0gICAgMSwgMjE2LCA2MCwgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAyMTYsIDYwLCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDIwNiwgCi0gICAgMjE3LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDMsIDIyNSwgMjUsIDIxOCwgMjM5LCAzMCwgNiwgCi0gICAgMSwgMjA2LCAyMTcsIDMsIDIwNSwgMTY3LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjA2LCAKLSAgICAyMTcsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMTYsIDYwLCAzLCAKLSAgICAyNDQsIDE0MSwgMzAsIDI0MywgMjI1LCAyNSwgMjA2LCA3MCwgMzAsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgCi0gICAgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAKLSAgICAzNywgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNiwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgCi0gICAgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAKLSAgICAyMDksIDMwLCAyMTksIDE4OSwgMzAsIDI0NCwgMTQxLCAyNDEsIDkzLCAyMTcsIDYyLCAyNDEsIDEwNCwgMjE3LCA2MiwgCi0gICAgMjQxLCA5MywgMjExLCAyMjgsIDI0MSwgMTA0LCAyMTEsIDIyOCwgMjA5LCAyOCwgMjExLCAyMjgsIDIzOSwgMTQ1LCAyMTEsIAotICAgIDIyOCwgMjEyLCA4NiwgMjExLCAyMjgsIDI0MCwgMTYsIDIxMSwgMjI4LCAyMTcsIDE3OSwgMjExLCAyMjgsIDIwOSwgNjMsIAotICAgIDIxMSwgMjI4LCAyMzcsIDE0NiwgMjExLCAyMjgsIDIwMiwgODUsIDIwNCwgMjQsIDIxMSwgMjI4LCAyMDIsIDg1LCAyMDQsIAotICAgIDI0LCAyMjEsIDE4MywgMjAyLCA4NSwgMjA0LCAyNCwgMjMwLCA5NiwgMjI3LCAyMTMsIDgyLCAyMTYsIDcsIDgyLCAyMzUsIAotICAgIDIyMCwgMjIxLCAxODQsIDIzNSwgMjIwLCAyNDAsIDE2LCAyNDQsIDE0NCwgMjQxLCA5MywgMjQ0LCAxNDQsIDI0MSwgMTA0LCAKLSAgICAyNDQsIDE0NCwgMjM2LCAxMDYsIDE0MiwgNTIsIDgwLCAyMjcsIDExNCwgNTIsIDEyNCwgMjI3LCAxMTQsIDQ5LCAyMTIsIAotICAgIDEyMCwgMjE3LCAzMSwgODIsIDUwLCAyMTIsIDEyMCwgMjE3LCAzMSwgODIsIDIxMiwgMTIwLCAyMjYsIDI1NSwgMjE3LCAzMSwgCi0gICAgODIsIDIxMiwgMTIwLCAyMzYsIDI0MSwgMjE3LCAzMSwgODIsIDQ5LCA1MiwgMjE3LCAzMSwgODIsIDUwLCA1MiwgMjE3LCAKLSAgICAzMSwgODIsIDUyLCAyMjYsIDI1NSwgMjE3LCAzMSwgODIsIDUyLCAyMzYsIDI0MSwgMjE3LCAzMSwgODIsIDI0NCwgMTk1LCAKLSAgICA1MiwgMjQ0LCAxOTUsIDI0NywgMTc3LCAyMDgsIDgyLCAyNDcsIDE3NywgMTE4LCA3MCwgMjI3LCAyMzIsIDEyMCwgNzAsIAotICAgIDIyNywgMjMyLCAyMzYsIDEwNiwgMjQxLCAxMDgsIDIzNSwgMjE4LCAyMTgsIDYyLCAyMjcsIDExNSwgMjEzLCAxMzAsIDIxOSwgCi0gICAgODksIDIxMywgMTMwLCAyMjcsIDIxMywgMjQxLCAxMDIsIDIxNiwgNywgMjQxLCAxMDIsIDIxOCwgNDIsIDI0MywgMTY1LCAKLSAgICAyMzksIDE1NywgMjI3LCAyMTMsIDIxOSwgMTk2LCAyMTYsIDcsIDIxOSwgMTk2LCAyMjMsIDczLCAyMjEsIDE5MCwgMjExLCAKLSAgICAyMjgsIDIxOCwgMjQ3LCAyMjQsIDExNiwgNTQsIDIxOCwgMjQ3LCAyMDksIDE1MywgMjA5LCAzNywgNTQsIDIxNywgMjM2LCAKLSAgICA1MiwgMjE3LCAyMzYsIDIwOCwgNzAsIDIxNywgMjM2LCAyMTYsIDczLCAyMTcsIDIzNiwgMjE2LCA3MywgNTIsIDIxNywgCi0gICAgMjM2LCAyMTYsIDczLCAyMDgsIDcwLCAyMTcsIDIzNiwgMjQ3LCAzMywgMjEyLCAxMjAsIDIyNywgMjE3LCAyNTAsIDIxOCwgCi0gICAgMjE3LCAzMSwgODIsIDIxMiwgMTIwLCAyMTYsIDExLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIxNiwgMTM0LCA4MiwgNTIsIAotICAgIDI0MCwgMjEyLCA4MiwgMjMwLCAyNDcsIDIxOSwgMTk4LCAyMDYsIDI0MywgMTY3LCAyMDgsIDI1MCwgMjQ3LCAzNCwgMjMxLCAKLSAgICA4LCAyMTgsIDYyLCAyNTAsIDU3LCAyMzUsIDIyMSwgMjQ3LCAxNzcsIDIzOSwgMTM4LCAyMTIsIDU3LCA0OSwgNTEsIDI0NywgCi0gICAgMjI3LCAzLCAyMTcsIDQxLCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMTcsIDQxLCA1MiwgMjE3LCA0NywgODIsIDIxNywgNDcsIAotICAgIDI0MCwgMjEyLCA4MiwgMjQwLCAyMTIsIDIxNywgNDcsIDgyLCAyMDgsIDIwMywgMiwgMjQwLCAyNTAsIDIxNiwgNzMsIDIxOCwgCi0gICAgMTI2LCA1NCwgNjIsIDk2LCAyNDcsIDE3NywgNjIsIDg2LCAyNDcsIDE3NywgMTI0LCAyNTAsIDU5LCAyMTYsIDczLCAyMTMsIAotICAgIDE0MywgMjQ2LCAxNywgMjA2LCAyMjQsIDEyMCwgMjUwLCA1OCwgMjUxLCAxOCwgMjA1LCAyNDMsIDI0NSwgMjMxLCAyMjQsIAotICAgIDEwMywgNTQsIDIxMCwgMTUzLCAyNDQsIDE0NCwgMjMwLCAyMzksIDIwNiwgMjQzLCAyMzksIDE5OCwgMjE3LCAxNzksIDgyLCAKLSAgICAxMjYsIDcwLCAyMTcsIDE3OCwgMjE3LCA1OCwgMjE3LCAyMzYsIDIzOSwgMTQ3LCA3MCwgMjE3LCAxNzgsIDIzOSwgMjMzLCAKLSAgICA3MCwgMjE3LCAxNzgsIDEyMCwgNzAsIDIxNywgMTc4LCAyMzksIDE0NywgNzAsIDgyLCAyNDIsIDgzLCAyNDUsIDEzMCwgCi0gICAgMjA4LCA4MSwgODAsIDIzOSwgMTQ3LCAyNDMsIDgzLCAyMjUsIDEwLCAxMywgMjExLCAyMjgsIDIwMywgMjM4LCAyMzAsIDk2LCAKLSAgICAyMzksIDEwMCwgMjUwLCAxNTUsIDIzMCwgMjM3LCAyMDgsIDIxOSwgMjMwLCAyMzcsIDIxMywgMTMwLCAyMzAsIDIzNywgCi0gICAgMjE4LCA3NiwgMjI3LCAyMTMsIDIzMCwgMjA3LCAyMTYsIDcsIDIzMCwgMjA3LCAyMzksIDI0NSwgMjExLCAxOCwgMjMwLCAKLSAgICAyMDcsIDIxOCwgNDIsIDI0MywgMTY1LCAyMzAsIDIwNywgMjMxLCAyMCwgMjEwLCAxMDEsIDIxMCwgMTcwLCAyNTEsIDEyOCwgCi0gICAgMjEwLCAxMDEsIDIxMCwgMTcwLCAyMzEsIDIwLCAxMCwgMjM5LCAxNTksIDIxMywgNjEsIDI1MSwgMTI4LCAxMCwgMjM5LCAKLSAgICAxNTksIDIxMywgNjEsIDIyMywgNjcsIDE3LCAyMTMsIDYyLCAyMjEsIDE4NiwgMTcsIDIxMywgNjIsIDIxMCwgMTk5LCAyMDIsIAotICAgIDg0LCAyMTAsIDE5OSwgOCwgNSwgMSwgNzUsIDIxMCwgMTk5LCAxNDksIDIxMCwgMTk5LCAxNzAsIDIxMCwgMTk5LCAxOTUsIAotICAgIDIxMCwgMTk5LCAyMTMsIDExMSwgMjEwLCAxOTksIDE5OSwgMjEwLCAxOTksIDIyMiwgNjMsIDIxMCwgMTk5LCA5MSwgNTQsIAotICAgIDIxMCwgMTk5LCAyMjQsIDEwMiwgMjEwLCAxOTksIDI0MSwgMzUsIDU0LCAyMTAsIDE5OSwgNDksIDIxOSwgNzYsIDIxMCwgCi0gICAgMTk5LCA1MCwgMjE5LCA3NiwgMjEwLCAxOTksIDgsIDUsIDEsIDIyMywgMTYzLCAyMTAsIDI0NiwgMjAyLCA4NCwgMjEwLCAKLSAgICAyNDYsIDEwNSwgMjEwLCAyNDYsIDEwOCwgMjEwLCAyNDYsIDE0NywgMjEwLCAyNDYsIDE0OSwgMjEwLCAyNDYsIDE3MCwgCi0gICAgMjEwLCAyNDYsIDE5NSwgMjEwLCAyNDYsIDIxMywgMTExLCAyMTAsIDI0NiwgMTk5LCAyMTAsIDI0NiwgMjIyLCA2MywgMjEwLCAKLSAgICAyNDYsIDkxLCA1NCwgMjEwLCAyNDYsIDIyNCwgMTAyLCAyMTAsIDI0NiwgMjQxLCAzNSwgNTQsIDIxMCwgMjQ2LCA0OSwgCi0gICAgMjE5LCA3NiwgMjEwLCAyNDYsIDUwLCAyMTksIDc2LCA4LCAyMTAsIDI0NiwgNSwgMSwgNjMsIDgsIDIxMCwgMjQ2LCA1LCAxLCAKLSAgICA3NCwgOCwgMjEwLCAyNDYsIDUsIDEsIDc4LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjAzLCAxOTYsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMTQsIDE5MiwgOCwgMjEwLCAyNDYsIDUsIDEsIDIzNywgMTcxLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjMwLCA1NCwgOCwgCi0gICAgMjEwLCAyNDYsIDUsIDEsIDE1OSwgOCwgMjEwLCAyNDYsIDUsIDEsIDIyNiwgMTg1LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjIzLCAKLSAgICAxNjMsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMTksIDE4NCwgOCwgMjEwLCAyNDYsIDUsIDEsIDE5NCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIxMCwgNjksIDI0MCwgMjI5LCA1NCwgMjQ1LCAyNDMsIDU0LCAyNDUsIDExNSwgNTQsIDIzOSwgMTI4LCAyMzksIDEzMiwgCi0gICAgNTQsIDIyNywgOTQsIDU0LCAyMjQsIDExNywgNTQsIDIyMywgOTAsIDU0LCAyMTgsIDIyNCwgNTQsIDIxNSwgMTIwLCA1NCwgCi0gICAgMjAzLCAyNDYsIDU0LCAyMjIsIDIxNCwgMjEzLCAyOSwgNTQsIDI0MywgOTIsIDU0LCAyNDAsIDIzMCwgNTQsIDIyOSwgNzksIAotICAgIDU0LCAyMDcsIDE5NiwgNTQsIDI0MiwgNjYsIDU0LCAyMzgsIDE2NiwgMjE5LCAyLCA1NCwgMjE4LCAyMjEsIDU0LCAyMzcsIAotICAgIDIyNSwgNTQsIDI1MCwgMjQsIDU0LCAyMzYsIDMyLCA1NCwgMjQ2LCAyMzMsIDU0LCAyMjcsIDg0LCAyMDgsIDEyNSwgNTQsIAotICAgIDIxMSwgMjA5LCA1NCwgMjA5LCAxNTAsIDU0LCAyMzEsIDM0LCAyMTUsIDEyMCwgNTQsIDIwNywgMTc3LCAyMjcsIDk0LCA1NCwgCi0gICAgMjIxLCAxNzMsIDEzMSwgNTQsIDIyNSwgMTIwLCA1NCwgMjE1LCAxNDIsIDU0LCAyMjgsIDQsIDU0LCAzOSwgNDksIDIzNywgCi0gICAgODcsIDU1LCAzOSwgNTAsIDIzNywgODcsIDU1LCAzOSwgMTYzLCA4MCwgMjI3LCAxMTUsIDIxOSwgMTk5LCAzOSwgMjEyLCAKLSAgICAyMjgsIDgwLCAyMjcsIDExNSwgMjE5LCAxOTksIDM5LCAyNTAsIDE5NCwgNTMsIDU1LCAzOSwgMjQ2LCAxOCwgNTMsIDU1LCAKLSAgICAzOSwgNDksIDUzLCA1NSwgMzksIDUwLCA1MywgNTUsIDM5LCAyMTUsIDI1MywgMjE5LCAxOTksIDM5LCAyNDYsIDE4LCAyMTUsIAotICAgIDI1MywgMjE5LCAxOTksIDM5LCAyNTAsIDE5NCwgMjE1LCAyNTMsIDIxOSwgMTk5LCAzOSwgMTI2LCAxODcsIDU1LCAzOSwgCi0gICAgMjM5LCAxNDcsIDE4NywgNTUsIDM5LCAyNDEsIDg4LCAyNDYsIDYxLCAzOSwgMjQxLCA4OCwgMjExLCAxNzcsIDM5LCAyNDEsIAotICAgIDg4LCAyNDMsIDIyMSwgMzksIDI0MSwgODgsIDI0NiwgNjIsIDI0OSwgMjAsIDM5LCA0OSwgNTAsIDUzLCA1NSwgMzksIDI0MSwgCi0gICAgODgsIDIxNCwgMTg0LCAzOSwgMjQxLCA4OCwgMjI5LCAxNDcsIDM5LCAyNDEsIDg4LCAyMDYsIDIxNCwgMjE4LCA1OSwgMjA4LCAKLSAgICA4NSwgMzksIDIxNiwgNzQsIDIxMiwgMSwgMjE5LCAxOTksIDM5LCA1MiwgODAsIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgCi0gICAgMjUwLCAyMDQsIDk3LCAzOSwgMjA4LCA3MCwgMjA2LCAyNDUsIDM5LCAyMDQsIDI3LCAyNDcsIDIwOCwgNTUsIDM5LCA5NiwgCi0gICAgNTMsIDIxOSwgMTk5LCAzOSwgMTYzLCA1MiwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDg2LCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDI0MiwgNjgsIDM5LCA5NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDY4LCAzOSwgNDksIDUzLCA1NiwgMzksIDUwLCA1MywgCi0gICAgNTYsIDM5LCAyNTAsIDYwLCA1NSwgMjUxLCAxMzQsIDIyMCwgNjksIDI1MSwgMTE4LCAyMDgsIDE3MywgMjA5LCA5MywgMjEwLCAKLSAgICAyNTUsIDE2OSwgNiwgMjQ3LCAxMjUsIDI0NCwgNTUsIDI0NiwgMjIzLCAyNDYsIDIxOCwgMjI3LCAxMTUsIDk3LCAyNDcsIAotICAgIDM1LCAyMjAsIDY5LCAyNDcsIDg0LCAyMDYsIDI1NCwgMjQwLCAyMzEsIDI0NSwgMjAwLCAyMTQsIDE4MSwgMjQ0LCA1NSwgCi0gICAgMjQwLCA5MCwgMTMyLCA1LCAyMzksIDc1LCAxMzIsIDYsIDIzNywgMTcxLCAyNDgsIDQxLCA2LCAyMzcsIDE3MSwgMTY5LCA2LCAKLSAgICAyMzcsIDE3MSwgMjE4LCA5MywgMjQ1LCAyMDAsIDIxOCwgOTMsIDI0NSwgMjAxLCAxMTUsIDEyMCwgMjE4LCAxNjcsIDEzMiwgCi0gICAgNiwgNzUsIDI0OCwgNDEsIDYsIDc1LCAxMzIsIDYsIDE1OSwgMTMyLCA1LCAxNTksIDIyOCwgMTMxLCA2NiwgMjQ4LCAyMzEsIAotICAgIDk3LCAxNjksIDYsIDIyMywgMTYzLCAyMjEsIDQyLCA1NCwgMjExLCAyNDEsIDIxNiwgMTQ2LCAyNDUsIDE2OCwgMTMyLCA2LCAKLSAgICAyMTksIDE4NCwgMTY5LCA2LCAyMTksIDE4NCwgMTY5LCA2LCAyMTcsIDEzNCwgMTMyLCA2LCAxNDYsIDI0OCwgNDEsIDYsIAotICAgIDE0NiwgMTY5LCA2LCAxNDYsIDIxNywgMjQzLCAyMDksIDI0MSwgMjE2LCA4NiwgMjEzLCAxMjIsIDgyLCAyMDksIDE2MiwgCi0gICAgNTQsIDIwOCwgMTE1LCAxMzEsIDU0LCAyMDYsIDM5LCAxNjksIDYsIDIwMiwgMTU5LCAyMTksIDIxNSwgNTQsIDIyMCwgNTksIAotICAgIDU0LCAyMzAsIDIzOSwgMjIwLCA1OSwgNTQsIDI0OCwgNDEsIDYsIDIwMiwgMTU5LCAyMDcsIDE3NCwgMzAsIDUsIDEsIDIzMCwgCi0gICAgMjMwLCAyMjksIDE4OCwgNTQsIDI1MCwgMjEzLCA1NCwgMTMyLCA2LCAyNDksIDI1NSwgMjQ4LCA0MSwgNiwgMjQ3LCAxMjUsIAotICAgIDI0MCwgMjU1LCA5NywgMTMyLCA1LCA3NCwgMTMyLCA2LCA3NCwgMTMyLCA2LCAyNDAsIDE3NCwgMjA3LCAxNzQsIDYsIDI0MCwgCi0gICAgMTc0LCAxMzIsIDYsIDIyNiwgMTg1LCAxMzIsIDUsIDc4LCAxMzcsIDk3LCAyNDgsIDEwOSwgOTcsIDIzOCwgNjgsIDk3LCAKLSAgICAyNDQsIDE3OSwgOTcsIDIzMSwgMjUsIDIxMSwgMjM5LCAyMTUsIDE5OCwgNiwgMjE3LCAxMzQsIDI0MCwgOTMsIDU0LCAxNjksIAotICAgIDUsIDIxOCwgMTY3LCAxNjksIDUsIDIzOCwgMjM1LCAxNjksIDYsIDIzOCwgMjM1LCAxNjksIDYsIDIxOCwgMTY3LCAxNjksIAotICAgIDIyMywgMTYyLCAyMTAsIDIxNywgMjA3LCAxNzQsIDQxLCA2LCAyMzksIDc1LCAyMDcsIDE3NCwgNDEsIDYsIDE1OSwgMjE2LCAKLSAgICA3MywgNDEsIDYsIDE1OSwgMjA3LCAxNzQsIDQxLCA2LCAyMDMsIDEyNCwgMTY5LCAzNywgNiwgMjQ1LCA1MSwgMTY5LCAzNywgCi0gICAgNSwgMjQ1LCA1MSwgMTY5LCAzNywgNSwgNzQsIDE2OSwgMzcsIDUsIDc1LCAxNjksIDM3LCA1LCAyMzAsIDE4NCwgMjE3LCAKLSAgICAyMTIsIDIyNywgMTE0LCAyMDcsIDE3NCwgMjUwLCAyMzUsIDIxOCwgMjQ3LCA1NCwgMjUxLCA0MSwgMjA3LCAxNzQsIDUsIAotICAgIDI0MCwgMTc0LCAxNiwgMzUsIDIxNCwgMjUyLCAyMTEsIDIzOSwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIxMywgMTA3LCAKLSAgICAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjIyLCA1NywgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMTgsIDIwOSwgMTQzLCAyMDQsIAotICAgIDE2MSwgMjM5LCAxMzgsIDExOCwgMjA5LCA2MCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjAsIDIwOSwgNTcsIDIwNCwgMTYxLCAKLSAgICAyMzksIDEzOCwgMTE4LCAyNDAsIDIxLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyMCwgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMjYsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjM5LCAxNDcsIDI0MCwgMjAsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTE4LCAyMTIsIDc4LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIzOSwgMjMzLCAyMTIsIDc2LCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDExOCwgMjQxLCAxMzgsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTI2LCAyNDEsIDEzNiwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAyMzksIDIzMywgMjQxLCAxMzYsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjEzLCAxMTIsIDI0MSwgMTM2LCAyMzksIAotICAgIDEzOCwgMjIxLCA0MywgMTA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTA4LCAyMTUsIAotICAgIDIxMCwgMjIxLCA0NCwgMTQ3LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTQ5LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTcwLCAyMTUsIAotICAgIDIxMCwgMjIxLCA0NCwgMTk1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjEzLCAxMTEsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTksIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMjIsIDYzLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA5LCAxNTIsIDIxNSwgMjEwLCAyMjEsIAotICAgIDQ0LCAyNDEsIDExMiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIwNywgMTU0LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOCwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDExOCwgMjM2LCAxMSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIzOSwgMjMzLCAyMzYsIDExLCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMDksIDM2LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTA1LCA1LCAyMTUsIDIxMCwgCi0gICAgMjIxLCA0NCwgMTA4LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTQ3LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTQ5LCA1LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTcwLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTk1LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMjEzLCAxMTEsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTksIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMjIsIDYzLCA1LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjA5LCAxNTIsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDEsIDExMiwgNSwgMjE1LCAyMTAsIAotICAgIDIyMSwgNDQsIDIwNywgMTU0LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOCwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIAotICAgIDExOCwgMjM2LCAxMSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIzOSwgMjMzLCAyMzYsIDExLCA1LCAyMTUsIDIxMCwgMjIxLCAKLSAgICA0NCwgMTE4LCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMDksIDM3LCAyNDcsIDEyNiwgMjQ1LCA1MSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIzOSwgMjMzLCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA5LCAxNTMsIDIwOSwgCi0gICAgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTYsIDczLCAxMTgsIDIzNiwgMTEsIDgsIDUsIDEsIDIxNiwgNzMsIDI0NywgMTI1LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjEyLCA4OCwgMjI3LCAyNTUsIDE4LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOSwgCi0gICAgMjQxLCAxODIsIDE4LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjQwLCAxOSwgMjA5LCAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIAotICAgIDExOCwgMjM2LCAxMiwgMjA5LCAzNiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMDIsIDg1LCAyMDksIDU3LCAyMDcsIDE3NCwgCi0gICAgMTcsIDEwOCwgMjA3LCAxNzQsIDE3LCAxNDcsIDk2LCA0NywgMTc3LCA0NywgODYsIDQ3LCAxODMsIDQ3LCA0OSwgNTAsIDQ3LCAKLSAgICAxMTIsIDEyMSwgNDcsIDE1MywgMjA0LCA0NiwgNDcsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDcsIDk2LCA1MywgMywgOTUsIDg2LCA1MywgMywgOTUsIDk2LCAyMDQsIDc2LCA0NywgCi0gICAgODYsIDIwNCwgNzYsIDQ3LCA5NiwgMTIwLCAyMzcsIDYyLCA0NywgMTc3LCAxMjAsIDIzNywgNjIsIDQ3LCA4NiwgMTIwLCAKLSAgICAyMzcsIDYyLCA0NywgMTgzLCAxMjAsIDIzNywgNjIsIDQ3LCA5NiwgNTMsIDMsIDIwOSwgMjQ4LCA4NiwgNTMsIDMsIDIwOSwgCi0gICAgMjQ4LCA5NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE3NywgNTMsIDIzOSwgMTIwLCAxNDIsIDg2LCA1MywgMjM5LCAxMjAsIAotICAgIDE0MiwgMTgzLCA1MywgMjM5LCAxMjAsIDE0MiwgMTEyLCAxMjEsIDUzLCAzLCAyNDgsIDIxOCwgOTYsIDUzLCAzLCAxMTMsIAotICAgIDg2LCA1MywgMywgMTEzLCA5NiwgNTMsIDMsIDIyNywgMTQsIDg2LCA1MywgMywgMjI3LCAxNCwgNDksIDUwLCAyMDQsIDc2LCAKLSAgICA0NywgNDksIDUwLCA1MywgMywgOTUsIDE4MywgMjAyLCAzMCwgNDcsIDE3NywgNTMsIDMsIDIwOCwgMjExLCAyMjcsIDIxMiwgCi0gICAgMTc3LCA1MywgMywgMjA4LCAyMTEsIDIxNiwgNSwgMTgzLCA1MywgMywgMjA4LCAyMTEsIDIyNywgMjEyLCAxODMsIDUzLCAzLCAKLSAgICAyMDgsIDIxMSwgMjE2LCA1LCA4NiwgNTMsIDMsIDI0NSwgMTY2LCAyNDIsIDY4LCAxODMsIDUzLCAzLCAyNDUsIDE2NiwgCi0gICAgMjI3LCAyMTIsIDI1MCwgMTk0LCAyMDgsIDE0NSwgMjEzLCAxNDYsIDQ3LCAyNDYsIDE4LCAyMDgsIDE0NSwgMjEzLCAxNDYsIAotICAgIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAyMDgsIDE3MywgMTYzLCAxNDIsIDk2LCA1MywgMjA4LCAxNzMsIDI0OCwgMjMxLCAKLSAgICAxMTUsIDg2LCA1MywgMjA4LCAxNzMsIDE0MiwgMjUwLCAxOTQsIDE3MSwgMjQ2LCA2MiwgNDcsIDI0NiwgMTgsIDE3MSwgCi0gICAgMjQ2LCA2MiwgNDcsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjEyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDY4LCAKLSAgICAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjE2LCA1LCAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjI3LCAyMTIsIDg2LCAyMzcsIAotICAgIDg3LCAzLCAxNTAsIDIwNiwgMjEyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDY4LCAxODMsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjE2LCA1LCAxODMsIDIzNywgODcsIDMsIDE1MCwgMjI3LCAyMTIsIDg2LCA1MywgMTE1LCA5NiwgNDcsIDE3NywgNTMsIDk2LCAKLSAgICA3NiwgMTgzLCA0NywgOTYsIDUzLCAxMTUsIDg2LCA0NywgOTYsIDIxOSwgMTQ2LCAyNTAsIDkxLCAxNzcsIDIxOSwgMTQ2LCAKLSAgICAyNTAsIDkxLCA4NiwgMjE5LCAxNDYsIDI1MCwgOTEsIDE4MywgMjE5LCAxNDYsIDI1MCwgOTEsIDk2LCAyMzcsIDg3LCAxMTUsIAotICAgIDg2LCAyMzcsIDg2LCA4NiwgMjM3LCA4NywgMTE1LCA5NiwgMjM3LCA4NiwgOTYsIDUyLCA1MywgMywgOTUsIDQ5LCA1MCwgCi0gICAgNTIsIDUzLCAzLCA5NSwgODYsIDUyLCA1MywgMywgOTUsIDk2LCA1MiwgNDcsIDE3NywgNTIsIDQ3LCA4NiwgNTIsIDQ3LCAKLSAgICAxODMsIDUyLCA0NywgNDksIDUwLCA1MiwgNDcsIDExMiwgMTIxLCA1MiwgNDcsIDE1MywgMjA0LCA0NiwgNTIsIDQ3LCAxNTMsIAotICAgIDI0MSwgMTc2LCA1MiwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTIsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNTIsIDQ3LCAKLSAgICA5NiwgMjA4LCA3MCwgNDcsIDg2LCAyMDgsIDcwLCA0NywgOTYsIDIxMSwgMTcxLCA0NywgODYsIDIxMSwgMTcxLCA0NywgCi0gICAgMTc3LCA1MywgMywgNTIsIDk1LCAxODMsIDUzLCAzLCA1MiwgOTUsIDk2LCAyNDQsIDE0MywgNDcsIDE3NywgMjQ0LCAxNDMsIAotICAgIDQ3LCA4NiwgMjQ0LCAxNDMsIDQ3LCAxODMsIDI0NCwgMTQzLCA0NywgOTYsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgNTMsIAotICAgIDIwOCwgMTczLCAxNDIsIDk2LCA2MSwgNDcsIDE3NywgNjEsIDQ3LCA4NiwgNjEsIDQ3LCAxODMsIDYxLCA0NywgMTc3LCA2MSwgCi0gICAgNTMsIDIzOSwgMTIwLCAxNDIsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAyMTksIDI2LCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgCi0gICAgMjE5LCAyNywgMywgMjM2LCAxMDYsIDE0MiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIDIxOSwgMjcsIDMsIDgwLCAxNDIsIAotICAgIDE3NywgNjEsIDUyLCA0NywgMTc3LCA2MSwgNTIsIDUzLCAyMjAsIDMyLCAyMTksIDI2LCA4NiwgNjEsIDUzLCAyMzksIDEyMCwgCi0gICAgMjA0LCA5OSwgMTUzLCAyMDQsIDQ2LCA1MywgMjA4LCAxNzMsIDI0NSwgMTY1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAKLSAgICAyMDgsIDE3MywgMjQ1LCAxNjUsIDExMiwgMTIxLCA2MSwgNDcsIDUwLCA1MywgMywgNSwgMjQ2LCA2MSwgMTgzLCA1MywgOTYsIAotICAgIDc2LCAxNzcsIDQ3LCAxMjYsIDg2LCAyNTAsIDkxLCA5NiwgNTMsIDMsIDgwLCA5NSwgODYsIDUzLCAzLCA4MCwgOTUsIDQ5LCAKLSAgICA1MCwgNTMsIDMsIDgwLCA5NSwgOTYsIDUzLCAzLCA1MiwgODAsIDk1LCA4NiwgNTMsIDMsIDUyLCA4MCwgOTUsIDQ5LCA1MCwgCi0gICAgNTMsIDMsIDUyLCA4MCwgOTUsIDk2LCAyMjAsIDYsIDQ3LCA4NiwgMjIwLCA2LCA0NywgNDksIDUwLCAyMjAsIDYsIDQ3LCAKLSAgICAzNSwgMjUxLCAxNCwgMjQ1LCAyMjgsIDIxOSwgNjksIDI0MywgMjA1LCAyMDksIDgzLCAyNDAsIDIwNywgMjA5LCA4MywgCi0gICAgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDAsIDIwOCwgMjQxLCA5NCwgMjEzLCAxMTcsIDIzMSwgMzgsIDIyMywgMTAxLCAyNDEsIAotICAgIDExNSwgMjIwLCA2OSwgMjIxLCAxNjYsIDI1MCwgMjMyLCAyNDEsIDExNSwgMjIwLCA2OSwgNSwgMjQxLCAxMTUsIDIyMCwgCi0gICAgNjksIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjQsIDI0NCwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgMjUwLCA4MiwgCi0gICAgMjI0LCAyNDQsIDUsIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjQsIDI0NCwgMjQxLCA4NCwgNzYsIDIxNywgMjE0LCAyMjMsIAotICAgIDE2MiwgMjE3LCAyMjQsIDIyMywgMTYyLCAyNDUsIDE3MSwgMjIzLCAxNjIsIDIxMCwgMjE3LCAyMjQsIDEwMywgNTQsIDIyNCwgCi0gICAgMTAxLCA1NCwgNzAsIDIxOCwgNzYsIDI0MywgMTM3LCAyMTIsIDU3LCAyMTMsIDExOCwgMjI0LCAxMDIsIDI1MCwgNjAsIAotICAgIDIxOSwgMjU0LCAyMTUsIDI1MywgMjE5LCAyNTQsIDI0NywgMTc4LCAyMTksIDI1NCwgNTEsIDIxNSwgMjA0LCAyNDUsIDEwNiwgCi0gICAgMjE1LCAyMDQsIDIzOSwgMTQwLCAyMTUsIDIwNCwgMjE3LCAyMTAsIDEzNSwgMjMxLCAyNywgNTAsIDI1MCwgMjE3LCAyNTAsIAotICAgIDIxNywgMjI1LCAxNywgMjUwLCAyMTcsIDIxMSwgMjA4LCAyNTAsIDIxNywgMjQzLCAxMzksIDI0MywgMTA0LCAyMjEsIDE2NiwgCi0gICAgMjQzLCAxNDMsIDIxOSwgODIsIDEzNSwgMjIxLCAxNjYsIDIxOSwgODIsIDEzNSwgMjI3LCAzNywgMjUwLCAyMjYsIDIyNywgCi0gICAgMzcsIDIxOSwgMjQ0LCAyMzAsIDI0NCwgMjA2LCAyMzcsIDIzMSwgMiwgNTIsIDIzMSwgMiwgMjA4LCA3MCwgMjMxLCAyLCAKLSAgICAyNDUsIDE4OCwgMjMxLCAyLCAyMTAsIDE4OSwgMjMxLCAyLCAyMDUsIDE3OCwgMjMxLCAyLCAyNDYsIDE4LCAyMzEsIDIsIAotICAgIDI0NiwgMTgsIDI0NSwgMTg4LCAyMzEsIDIsIDI1MCwgMTk0LCAyNDUsIDE4OCwgMjMxLCAyLCAyMDksIDgyLCAyNDgsIDE1MiwgCi0gICAgMjE2LCAxNjgsIDIxNywgMjExLCA3MCwgMjI0LCAxMDIsIDI0MCwgMjE1LCAyMzgsIDE3MiwgMjE3LCAyMTEsIDIzNiwgMTIxLCAKLSAgICAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxNiwgNzMsIDIwOCwgMjI3LCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgMjEyLCAxMjIsIAotICAgIDIwNCwgNzUsIDIwMywgMjI2LCAyMTcsIDIyNCwgMjIxLCAxNjYsIDIwOCwgMjI3LCAyMjQsIDEwMywgMjA4LCAyMjcsIDI1MCwgCi0gICAgNTMsIDE1NiwgMTM1LCAyMjEsIDE2NiwgMjUwLCA1MywgMTU2LCAxMzUsIDI1MCwgMTUxLCAxNTYsIDEzNSwgMjUwLCAxNTEsIAotICAgIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjUxLCAxMjcsIDE1NiwgMTM1LCAyMjIsIDIzMiwgMjUwLCAxNTEsIDIyMSwgMTc1LCAKLSAgICAyNTEsIDEyNywgMTU2LCAxMzUsIDI1MSwgNywgMTU2LCAxMzUsIDIyMSwgMTY2LCAyNTEsIDcsIDE1NiwgMTM1LCAyNTEsIDcsIAotICAgIDE1NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMDgsIDcwLCAyMDgsIDIyNywgMjUxLCAxNSwgMTU2LCAxMzUsIDI0MSwgMzAsIAotICAgIDEzNSwgMjM4LCAxNzEsIDI0MSwgMzAsIDEzNSwgMjQzLCAyMDYsIDI0OCwgMTAzLCAyNTAsIDE1MywgMjA5LCA5MywgMjI3LCAKLSAgICAxMjIsIDIzOCwgMTcxLCAxNTYsIDEzNSwgMjUwLCAxNTEsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMDksIDkzLCAyMzEsIAotICAgIDY1LCAyMjAsIDY5LCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDI1MCwgMTUxLCAxNTYsIDEzNSwgMjQ1LCAyNDMsIDI0MSwgCi0gICAgMzQsIDI0MSwgMzUsIDI0NSwgMjQyLCAyMTUsIDI1MywgMjMxLCA1MCwgMTU2LCAxMzUsIDIxNSwgMjUzLCAxNTYsIDEzNSwgCi0gICAgMjQ1LCAxNTksIDEzNSwgMjQwLCAyNTQsIDI0MSwgMzMsIDEzNSwgMjExLCA5NSwgMjQxLCAzNCwgMjQ0LCAzOCwgMTU2LCAKLSAgICAxMzUsIDE1NiwgMjA4LCAxNzMsIDI0NywgMTM3LCAyNDQsIDU2LCAyMjUsIDE3LCAyNDcsIDEzNiwgMjE3LCA0NSwgMTU2LCAKLSAgICAxMzUsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjM1LCAxNTQsIDEzNSwgMjIxLCAxNjYsIDIzNSwgMTU0LCAxMzUsIDIxMSwgMzksIAotICAgIDI0MSwgMzAsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgCi0gICAgMjI3LCAxNzksIDExNSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAxMTUsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjQ3LCAxNDgsIAotICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIyMywgMjQwLCAKLSAgICAyMjcsIDE3OCwgMjIzLCAyNDAsIDIzNywgMjQ2LCAyNDgsIDEwMywgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjIxLCAxNjYsIAotICAgIDIyNywgMTc4LCAyMjEsIDE2NiwgMjM3LCAyNDYsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDE1NiwgMTM1LCAKLSAgICAyMjIsIDIzMiwgMjM3LCAyNDcsIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIAotICAgIDIzNywgMjQ3LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDI0MSwgMzAsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMzcsIAotICAgIDI0NiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMjM3LCAKLSAgICAyNDYsIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDIyNywgMTc4LCAyMTcsIDI0OSwgMjEwLCAyMzYsIDIxNywgCi0gICAgMjUwLCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMjM3LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxNywgMjUwLCAyMTksIAotICAgIDI0NSwgMjQxLCAzMCwgMTM1LCAyMTAsIDIzNywgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyMTcsIDI1MiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTAsIDIzOCwgMjEwLCAyNDUsIDIyMCwgNjksIDIxMCwgMTk4LCAyMjAsIAotICAgIDY5LCAyMjEsIDE2NiwgMzQsIDIxMCwgMjQ1LCAyMjAsIDY5LCAyMjEsIDE2NiwgMzQsIDIxMCwgMTk4LCAyMjAsIDY5LCAKLSAgICAyMTAsIDI0NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAxOTgsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIyMiwgCi0gICAgMjMyLCAzNCwgMjEwLCAyNDUsIDc2LCAyMjEsIDE3NSwgMTU2LCAxMzUsIDIyMiwgMjMyLCAzNCwgMjEwLCAxOTgsIDc2LCAKLSAgICAyMjEsIDE3NSwgMTU2LCAxMzUsIDIxMCwgMjQ1LCA3NiwgMywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDE5OCwgNzYsIDMsIAotICAgIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjIzLCAyMjEsIDIyMywgMjIyLCAyMjMsIDIyMywgMjIzLCAyMjIsIDIwNiwgMjM3LCA1MSwgCi0gICAgMjMxLCA2NSwgMjIwLCA2OSwgNTEsIDIxOSwgMjM2LCAyMjAsIDY5LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIAotICAgIDEzNSwgNTEsIDIxOSwgMjM2LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCA1MSwgMjQ3LCA0OCwgNTEsIDI0NSwgOTksIDQzLCAKLSAgICAyMTgsIDc2LCA0MywgMjI0LCAxMDIsIDQzLCAyMDgsIDIxOSwgNDMsIDI0MywgMTM3LCAyMTIsIDU3LCA0MywgNzAsIDIxOSwgCi0gICAgMjU0LCA0MywgMjE1LCAyNTMsIDIxOSwgMjU0LCA0MywgMjUwLCA2MCwgMjE5LCAyNTQsIDQzLCAyNDEsIDM0LCA0MywgMjQ0LCAKLSAgICAxNDQsIDEwMywgMjE4LCA3NiwgMTAzLCAyMjQsIDEwMiwgMTAzLCAyMDgsIDIxOSwgMTAzLCA3MCwgMjE5LCAyNTQsIDUwLCAKLSAgICAyMTAsIDMsIDQ5LCAyMTAsIDMsIDEyMSwgMjEwLCAzLCAxMTIsIDIxMCwgMywgMjUwLCA2MywgMjI0LCA3NywgMjA4LCA0OSwgCi0gICAgMjM5LCAxNjUsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgNTAsIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNTAsIAotICAgIDIwNywgMTczLCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxNywgMjA1LCAyMjEsIDE2NiwgMjA4LCA0OSwgMjQzLCAxMDQsIDIyMSwgCi0gICAgMTY2LCAyMzksIDE2NiwgMjIyLCAyMzQsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA1MCwgMjA3LCAxNzMsIDIxNywgMjUwLCAKLSAgICAyMDYsIDI0OCwgMjE2LCAxMTcsIDIxMCwgMjM3LCAyMDYsIDI0OCwgMjE2LCAxMTcsIDIyMSwgMTcyLCAyMTEsIDIsIDIyMCwgCi0gICAgNjksIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAxLCAyMjEsIDE3MiwgMjExLCAyLCA3NiwgMjE5LCAyNDUsIAotICAgIDE1NiwgMTM1LCAyNDUsIDE5NCwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTksIAotICAgIDIzNiwgMjIwLCA2OSwgMjMxLCA2NSwgMjIwLCA2OSwgMjIzLCAyMjgsIDIzNywgMjQsIDI0NSwgMjA1LCAyMjUsIDY5LCAKLSAgICAyMzAsIDI1NSwgMjAzLCAxNTYsIDIyMywgODEsIDIyMSwgMTc0LCA1MCwgMjUwLCAyMTgsIDMsIDI1MCwgMTI4LCA1MCwgCi0gICAgMjA4LCA4NSwgMjIzLCAxNjIsIDIyNywgMzcsIDI1MCwgMjI2LCAyMjMsIDE2MiwgMjI3LCAzNywgMjE5LCAyNDQsIDIyMywgCi0gICAgMTYyLCAyMzAsIDI0NCwgMjIzLCAxNjIsIDIwNiwgMjM3LCAyNDMsIDIyMiwgMjE5LCAyNTQsIDcwLCAyMTksIDI1NCwgMjExLCAKLSAgICA5NSwgMjE5LCAyNTQsIDI0MywgMTM3LCAyMDgsIDIxOSwgMjQ3LCAyMzQsIDQ5LCAyMjEsIDE3MiwgMjQwLCA5MiwgMjEzLCAKLSAgICAxNDIsIDIxNywgMjI0LCA1MCwgMjIxLCAxNzIsIDI0MCwgOTIsIDIxMywgMTQyLCAyMTcsIDIyNCwgNDksIDIxMywgMTQyLCAKLSAgICAyMTcsIDIyNCwgNTAsIDIxMywgMTQyLCAyMTcsIDIyNCwgMjE2LCA3MywgMjA4LCAyMjgsIDI0MSwgMzQsIDI0NSwgOTMsIAotICAgIDIyNywgMzcsIDIxOSwgMjQ0LCAyNDUsIDkzLCAyMjcsIDM3LCAyNTAsIDIyNiwgNTIsIDIxMCwgMjQ0LCA1MiwgMjEwLCAKLSAgICAxOTcsIDUyLCAyMzAsIDI0NCwgNTIsIDIwNiwgMjM3LCAyMTgsIDEwMywgMTU2LCAyNSwgMjE5LCA4MiwgMTM1LCAyMjcsIAotICAgIDE3OSwgMywgMjQzLCA4NSwgMjM3LCAyNDcsIDMsIDI0MywgODUsIDIwNSwgMjQyLCAyMjMsIDI0MCwgMjI3LCAxNzgsIDIwNSwgCi0gICAgMjQyLCAyMjMsIDI0MCwgMjM3LCAyNDYsIDIyNywgMTc5LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIAotICAgIDIzNywgMjQ3LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAKLSAgICAyMjcsIDE3OCwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgCi0gICAgMjE3LCAyNDksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMTAsIDIzNiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTcsIAotICAgIDI1MywgMjE5LCAyNDUsIDI0MSwgMzYsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjEwLCAyMzksIDIxOSwgMjQ1LCAyNDEsIDM2LCAKLSAgICAyMjEsIDE2NiwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIyMSwgMTY2LCA1MSwgMjE5LCAyMzYsIAotICAgIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDIyMSwgMTY2LCAxNTYsIDEzNSwgCi0gICAgNTEsIDIxOSwgMjM2LCA3NiwgMjE5LCAyNDUsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjI3LCAxNzksIDI0NywgMTQ4LCAyMjEsIAotICAgIDE2NiwgMjQxLCAzMCwgMTM1LCAyMzcsIDI0NywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAxMzUsIDIxNywgMjUwLCAKLSAgICAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjEwLCAyMzcsIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMjEsIDE2NiwgMjIxLCAxNzIsIDIxMSwgMiwgMjIwLCA2OSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgCi0gICAgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMSwgMjIxLCAxNjYsIDIyMSwgMTcyLCAyMTEsIDIsIDc2LCAyMTksIDI0NSwgMTU2LCAKLSAgICAxMzUsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjQ1LCAxOTYsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDIsIDIxOSwgMjQ1LCAKLSAgICAyNDEsIDM2LCA4MCwgMjQxLCAxMDgsIDIyNCwgMTQ2LCAyMzYsIDEwNiwgMjQxLCAxMDgsIDExMiwgNTAsIDI0MywgMjI4LCAKLSAgICAyNDEsIDEwOCwgMTIxLCA1MCwgMjQzLCAyMjgsIDI0MSwgMTA4LCAyNDEsIDExNSwgNzYsIDMsIDE2MywgMjM2LCAxMDYsIAotICAgIDk1LCAyNDEsIDExNSwgNzYsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgNSwgCi0gICAgMjQxLCAxMTUsIDc2LCAzLCA4MCwgMjQ4LCAyMzEsIDI1MCwgNTAsIDI0MSwgODQsIDc2LCAyMzYsIDEwNiwgOTUsIDI0MSwgCi0gICAgMTE1LCA3NiwgMywgNzAsIDU1LCAyNDEsIDExNSwgNzYsIDMsIDIxOSwgMjAzLCA1LCAyNDEsIDExNSwgNzYsIDMsIDIxOSwgCi0gICAgMjAzLCAyNDEsIDExNSwgNzYsIDMsIDIwNiwgMjQ2LCAyNDEsIDExNSwgNzYsIDMsIDEyMCwgMjM2LCAxMDYsIDIxMSwgMTksIAotICAgIDI0NSwgMTk0LCAzLCAxNjMsIDIzNiwgMTA2LCA5NSwgMjQ1LCAxOTQsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCAKLSAgICA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgNSwgMjQ1LCAxOTQsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIAotICAgIDIzNiwgMTA2LCA5NSwgMjQ1LCAxOTQsIDMsIDIxOSwgMjAzLCA1LCAyNDUsIDE5NCwgMywgMjE5LCAyMDMsIDIwMiwgMTYwLCAKLSAgICAyMjEsIDE2NCwgMjQ5LCAxMSwgMjI0LCAyNDMsIDI0MywgMjIzLCA1NCwgMjQxLCAxMTcsIDQ3LCAyMzYsIDM4LCAxMTIsIAotICAgIDI1MCwgOTQsIDEyMSwgMjUwLCA5NCwgMjE3LCAyMTgsIDIxOCwgMjI3LCAyMDQsIDcyLCAyMjcsIDExNCwgNDksIDI0NiwgCi0gICAgMjI2LCA1MCwgMjQ2LCAyMjYsIDQ5LCAyMzksIDIwNCwgNTAsIDIzOSwgMjA0LCAyNDcsIDI0OCwgNTAsIDI0NSwgMTMyLCAKLSAgICAyNDcsIDI0OCwgNDksIDI0NSwgMTMyLCAyMDgsIDE0NSwgNTAsIDI0NSwgMTMyLCAyMDgsIDE0NSwgNDksIDI0NSwgMTMyLCAKLSAgICAyMTYsIDczLCAyMjEsIDE2NiwgNTQsIDUxLCAyMjYsIDI0NiwgMjUwLCAxMjgsIDIxNCwgMTU4LCAyMTQsIDE2NiwgMjA5LCAKLSAgICAxNjIsIDIxNiwgMTQ3LCAyMTgsIDM0LCAyMzEsIDMxLCAyMDUsIDIxOCwgMjExLCAxNzcsIDIxOCwgOTcsIDc2LCAyMzAsIAotICAgIDI1NCwgNTQsIDIwNywgMTc0LCAyMjEsIDE2NiwgNTQsIDIwNCwgODIsIDIzNiwgNDAsIDIwOCwgMTQ1LCA0OSwgMjQ1LCAKLSAgICAxNjUsIDIwOCwgMTQ1LCA1MCwgMjQ1LCAxNjUsIDI0NywgMjQ4LCA0OSwgMjQ1LCAxNjUsIDI0NywgMjQ4LCA1MCwgMjQ1LCAKLSAgICAxNjUsIDIwOCwgMTQ1LCAxNjIsIDIzMSwgMiwgMjQ3LCAyNDgsIDE2MiwgMjMxLCAyLCAyMzksIDExNSwgMjEyLCAzMSwgCi0gICAgMTEyLCAyNTAsIDk1LCAyNDgsIDEwNCwgMTIwLCAyMzYsIDEwNiwgMjQ4LCAyMjAsIDIxOSwgMjQ3LCAyMjksIDE1MSwgMjQxLCAKLSAgICAyNiwgMjA4LCAxNzMsIDIwOSwgOTMsIDIxNiwgMTYsIDIwMywgMTk3LCAyMzEsIDUwLCAzNCwgMjE2LCAxNDQsIDI0NywgCi0gICAgMjMzLCAyMjksIDE0OSwgMjI3LCAyMTcsIDI1MCwgMjE4LCAxNTUsIDIxNiwgMTEsIDI1MCwgMjE4LCAxNTUsIDI0MSwgMjYsIAotICAgIDIwOCwgMTczLCAyMDksIDkzLCAyMjcsIDIyMiwgMjQ4LCAxMTUsIDIxNSwgMjUyLCAyNDUsIDYxLCAyNTEsIDE1LCAyNTAsIAotICAgIDEwMywgMjEwLCAxMDAsIDIwOCwgMTMwLCAyMTUsIDEyNSwgMjQzLCAxODUsIDIxOSwgMjM3LCAyNDUsIDIwOSwgMjA5LCAKLSAgICAyMjAsIDIxMiwgNDQsIDI0NSwgMTU1LCAyNDUsIDE1NCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzUsIDIwMywgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyMTEsIDE2OSwgMjE3LCA2MiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDEsIAotICAgIDM2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0MywgMTQzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgCi0gICAgNjMsIDI0MywgMjIxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjE3LCA2MywgMjQ2LCA2MSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMTEsIDY5LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjEyLCA1OCwgMTQyLCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDI0OSwgMjEsIDE0MiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMTIsIDU3LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0OSwgMjAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgCi0gICAgMjI3LCAxNzgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjM3LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgOTYsIDIwNiwgNzYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgODYsIDIwNiwgNzYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjE3LCA2MywgOTYsIDQ3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDg2LCA0NywgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyNDksIDIwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDEyMSwgMjEwLCA0LCAyMDYsIAotICAgIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDM4LCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgCi0gICAgNjMsIDEyMSwgMjQ3LCAzMywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDQsIDM3LCAyNTAsIDE2OSwgMjM5LCAKLSAgICA5OCwgMTYsIDEyMSwgMjEwLCA0LCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDE3NywgMjA2LCA3NiwgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAxNzcsIDQ3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAKLSAgICAyMTksIDIwMywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAotICAgIDIxNywgNjMsIDExMiwgMjQ3LCAzMywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDQsIDQ4LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDE4MywgMjA2LCA3NiwgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAxODMsIDQ3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgMzAsIAotICAgIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgMzgsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDI0MywgMjIyLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMzAsIDg5LCAyMDYsIDI0NiwgMjUwLCAKLSAgICAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDIxMiwgCi0gICAgMjQwLCAyMzAsIDg4LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgMzAsIDIxNywgNjIsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjQ2LCA2MiwgMjExLCA5NCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyNDUsIDI0MiwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMTIsIDIxMCwgNCwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjQzLCAKLSAgICAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjExLCA5NSwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjMwLCA4OSwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjQzLCAyMzEsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTIxLCAyMTIsIDI0MCwgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCA0OSwgMjEyLCAyNDAsIAotICAgIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjA4LCAyMjgsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIzNywgMjQ3LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDUsIDIzNCwgMTQyLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIwMiwgMjksIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjExLCA3MCwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjEzLCAxNDQsIDIwNiwgCi0gICAgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIyMSwgMTY2LCAyNDEsIDM2LCAyNTAsIDE2OSwgMjM5LCAKLSAgICA5OCwgMTYsIDIxNywgNjMsIDIxNywgNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTIxLCAyNDcsIDM0LCAyMDgsIDIyNywgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMTIsIDI0NywgMzQsIDIwOCwgMjI3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIAotICAgIDIzMCwgMjMwLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNiwgNTksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjIwLCAzNiwgCi0gICAgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNTEsIDMsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0MSwgMzgsIAotICAgIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzMCwgMjMxLCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMjAsIDM3LCAyMDYsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNTEsIDIsIDIyMSwgMTY2LCAyNDYsIDE2OSwgCi0gICAgODIsIDUwLCAyNTAsIDIxOCwgMywgMTgzLCAyMDIsIDMwLCA0NywgMjEyLCAyMTAsIDE3MSwgMjQ3LCAyMzMsIDI0OCwgMTI5LCAKLSAgICA5NywgODAsIDIyNywgMTE1LCAzLCAxMDEsIDI0MywgODUsIDIzMSwgOCwgOTcsIDI0NSwgMTg5LCAyMDYsIDI0NCwgOTcsIAotICAgIDI0MywgMTU4LCAyMDYsIDI0NCwgOTcsIDI0MSwgOTYsIDk3LCAyNDUsIDIyNCwgOTcsIDYxLCA1MSwgMywgMjQ2LCAyMTgsIAotICAgIDgwLCAyMjcsIDExNCwgMjQxLCA2OCwgOTcsIDI1MCwgMjUwLCAyMjksIDE1MiwgOTcsIDIzNywgMzcsIDk3LCA0MywgMjM2LCAKLSAgICAxMDYsIDI0OCwgMjMxLCAzLCAyMjEsIDE2MywgNDMsIDIwOCwgODYsIDI0MiwgNzAsIDI0NywgMjAzLCAyNDYsIDYyLCAzLCAKLSAgICAyMjEsIDE2OSwgNDcsIDIwNiwgMjQyLCA5NywgMjI0LCA0MCwgOTcsIDIzNSwgMjE2LCA5NywgMjIwLCA3LCAyMzcsIDE3MCwgCi0gICAgOTcsIDIyMCwgNywgMjI4LCAxMjksIDk3LCAyMTksIDU5LCA5NywgMjE5LCA1OCwgOTcsIDI0MywgMTY3LCAyNDUsIDkxLCAKLSAgICAxNiwgMjM5LCAxNTksIDEwOCwgMjEyLCA1LCA5NywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYyLCAyNDQsIDY4LCAKLSAgICAyMTMsIDEzMSwgMjI5LCAxNTIsIDk3LCAyMTcsIDIzOCwgMjE5LCAxNTMsIDIyMiwgMjA4LCAyMTksIDE1MywgMjE3LCAyMzQsIAotICAgIDIxNCwgMTg1LCA5NywgMjQ2LCAzMywgMjE0LCAxODUsIDk3LCA0OSwgMjE5LCA3NywgMjA2LCAyMjEsIDExMywgNDksIDIxOSwgCi0gICAgNzcsIDI0MCwgMjAwLCA0OSwgMjE5LCA3NywgMjI2LCAyNTEsIDExMywgNTAsIDIxOSwgNzcsIDIwNiwgMjIxLCAxMTMsIDUwLCAKLSAgICAyMTksIDc3LCAyNDAsIDIwMCwgNTAsIDIxOSwgNzcsIDIyNiwgMjUxLCAxMTMsIDQ5LCA1MSwgMjQ3LCAyMjcsIDIwNiwgCi0gICAgMjIxLCAyNDUsIDE2NSwgNDksIDUxLCAyNDcsIDIyNywgMjQwLCAyMDAsIDQ5LCA1MSwgMjQ3LCAyMjcsIDIyNiwgMjUxLCAKLSAgICAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMjA2LCAyMjEsIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAyNDAsIAotICAgIDIwMCwgNTAsIDUxLCAyNDcsIDIyNywgMjI2LCAyNTEsIDI0NSwgMTY1LCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIwNiwgCi0gICAgMjIxLCAxMTMsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMTAxLCAyMTgsIDE1OSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAKLSAgICAyMjYsIDI1MSwgMTEzLCAyNDUsIDkzLCAyNDcsIDIyNywgMjQwLCAyMDAsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDExMywgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAxMDEsIDIxOCwgMTU5LCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIAotICAgIDIyNiwgMjUxLCAxMTMsIDIzMSwgMywgMjQwLCAyMDAsIDIzNiwgMTA2LCAyMjcsIDExNSwgMjQwLCAyMDAsIDIwNiwgMjIxLCAKLSAgICA0OSwgMjE5LCAyNDUsIDIyNiwgMjUxLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxNCwgMTY3LCAyMDYsIDIyMSwgNTAsIAotICAgIDIxOSwgMjQ1LCAyMjYsIDI1MSwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMTQsIDE2NywgMjEwLCAyMTgsIDIwOCwgMTQ0LCAKLSAgICAyMTAsIDIxOCwgMjQ3LCAyNDcsIDIwOCwgMTQ1LCA1MSwgMTU1LCAyNDcsIDI0OCwgNTEsIDE1NSwgMjQ3LCAyNDgsIDUxLCAKLSAgICAyNDcsIDIyNywgMTE1LCAyMDgsIDE0NSwgNTEsIDE1NSwgNDAsIDE2LCAyNDcsIDI0NywgNDksIDgwLCA5OCwgMjI3LCAxMTQsIAotICAgIDUwLCA4MCwgOTgsIDIyNywgMTE0LCAyMzYsIDEwNiwgMjE0LCAyMDIsIDIyNywgMTEzLCAyMzYsIDEwNiwgMjE0LCAyMDIsIAotICAgIDIyNywgMTEyLCAyMzYsIDEwNiwgMjE0LCAyMDIsIDIyNywgMTExLCAyMzYsIDEwNiwgMjE0LCAyMDIsIDIyNywgMTEwLCAKLSAgICAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDIwOCwgMTQ1LCAyMTYsIDE2LCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIAotICAgIDI0NywgMjQ4LCAyMTYsIDE2LCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMywgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgCi0gICAgMTIxLCAyNSwgMjM2LCAxMDYsIDMsIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAKLSAgICAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMywgMjA4LCA4NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTIxLCAyNSwgCi0gICAgMjM2LCAxMDYsIDMsIDIwOCwgODUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAyMDgsIDg1LCAKLSAgICAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAxNTcsIDEyMSwgMjUsIDIzNiwgMTA2LCAKLSAgICAzLCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMTIsIDI1LCAyMzYsIDEwNiwgMywgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIAotICAgIDE1NywgMTIxLCAyNSwgMjM2LCAxMDUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA1LCAyNDQsIDI5LCAxNiwgCi0gICAgMTU3LCA4MCwgMjUsIDIwOCwgMTQ1LCAyMjcsIDIyMiwgMjQ0LCAyOSwgMTYsIDE1NywgODAsIDI1LCAyNDcsIDI0OCwgMjI3LCAKLSAgICAyMjIsIDUxLCAyMzksIDE3MiwgMjE2LCA3OCwgOTcsIDI0MSwgMTMxLCA5NywgODAsIDIyNywgMTE1LCAyNDAsIDIwMCwgCi0gICAgMjI0LCAyMTQsIDI0NywgMjE0LCAyMjQsIDIxNCwgMTYzLCAxMTUsIDIxMiwgMjI3LCAyMjQsIDIxNCwgMjEyLCAyMjgsIAotICAgIDExNSwgMjI3LCAyOCwgMjI0LCAyMTQsIDE2MywgMTE1LCAxMjAsIDIxMiwgMjEzLCAyMjQsIDIxNCwgMTIwLCAyMTIsIDIxNCwgCi0gICAgMTE1LCAyMjcsIDI4LCAyMjQsIDIxNCwgMTIwLCAyMTIsIDIxNCwgMjMwLCA5NywgMjI0LCAyMTQsIDIwOCwgNjYsIDIyNCwgCi0gICAgMjE0LCAyMDksIDEyNCwgMjI0LCAyMTQsIDIxOCwgMjUzLCAyNDEsIDE4MCwgMjM3LCAyMzksIDIzOSwgOTIsIDIwOCwgMTQ1LCAKLSAgICAyMTksIDc2LCAyNDcsIDI0OCwgMjE5LCA3NiwgMjA4LCAxNDUsIDI0NSwgOTMsIDE1NSwgMjQ3LCAyNDgsIDI0NSwgOTMsIAotICAgIDE1NSwgMjA4LCAxNDUsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDI0NywgMjQ4LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAKLSAgICA2MSwgMjA4LCAxMDEsIDI0OCwgMTE1LCAyMTUsIDI1MywgMywgMjQ2LCA2MSwgMjExLCA1MSwgMjM5LCAyMTUsIDI1MSwgCi0gICAgMTQyLCAyNDUsIDkwLCAyNDEsIDExNiwgMjMwLCAyNDQsIDI0NCwgNjgsIDI0MCwgMjA0LCA5NywgNjIsIDIxNiwgMTEsIDUyLCAKLSAgICAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDUyLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDUyLCAyMDgsIDg1LCA2MiwgMjQyLCAKLSAgICA2OSwgNTIsIDIwOCwgODUsIDYyLCAyMTYsIDExLCA1MiwgMjA4LCA4NiwgMywgODAsIDE0MiwgNjIsIDIyNywgMjE3LCA1MiwgCi0gICAgMjA4LCA4NiwgMywgODAsIDE0MiwgNjIsIDIxNiwgMTEsIDIwOCwgODYsIDMsIDUyLCA4MCwgMTQyLCAyNTEsIDM0LCAyNDYsIAotICAgIDE5LCAyMTEsIDU4LCAyMDgsIDIyMCwgMjQ2LCAxOSwgMjM2LCA0MSwgMywgMjM5LCAxOTUsIDIxNCwgMjQxLCA2MiwgMjI1LCAKLSAgICAxMCwgMjI3LCAyMTcsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyMTYsIDExLCAyMDgsIDg1LCA2MiwgMjI1LCAxMCwgMjA2LCAKLSAgICAyMjMsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyNDIsIDY5LCAyMDgsIDg1LCA1MiwgODAsIDE0MiwgNjIsIDUxLCAzNSwgCi0gICAgMjExLCA2MSwgNjIsIDI0NiwgNjIsIDM1LCAyMTYsIDE0OCwgMTYsIDM1LCAyMjEsIDQ4LCAxNiwgMzUsIDIxMSwgOTAsIDc2LCAKLSAgICAyMzcsIDYxLCAxNiwgMzUsIDIxMSwgOTAsIDc2LCAyMDksIDExMiwgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjA5LCAxMTIsIAotICAgIDE2LCAzNSwgMjQxLCA4NCwgNzYsIDIwOCwgMTA1LCAxNiwgMzUsIDI0MSwgNzEsIDE2LCAzNSwgMjUxLCAxMzAsIDE2LCAzNSwgCi0gICAgMjQ4LCAxMjgsIDE2LCAzNSwgMjQ5LCAxOSwgMTYsIDM1LCAyMzYsIDEwNiwgMjEwLCA1LCAxNiwgMzUsIDIyNywgMTE1LCAKLSAgICAyNDAsIDUxLCAxNiwgMzUsIDgwLCAyMTAsIDUsIDE2LCAzNSwgMjM5LCAxNTksIDI0MCwgNTEsIDE2LCAzNSwgMjQ3LCAyNSwgCi0gICAgMjE2LCA3NywgMTYsIDM1LCAyMTMsIDcsIDIxOSwgMjExLCAxNiwgMzUsIDIxMywgNywgMjMxLCA0OSwgMTYsIDM1LCAyNDQsIAotICAgIDEzOSwgMjI3LCAxMDUsIDI0MSwgOSwgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAxMDUsIDE2LCAzNSwgMjQ0LCA4LCAKLSAgICAyNDUsIDE4NCwgMTA4LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIDE0NywgMTYsIDM1LCAyNDQsIDgsIDI0NSwgMTg0LCAKLSAgICAxNDksIDE2LCAzNSwgMTgyLCAyNTEsIDEzMCwgMTYsIDM1LCAyMTAsIDk1LCAyMzEsIDExMiwgMTYsIDM1LCAyNDEsIDg0LCAKLSAgICA3NiwgMjA4LCAxMDYsIDI0OCwgMzMsIDE2LCAzNSwgMjQ3LCA1OSwgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjI1LCA5LCAxNiwgCi0gICAgMzUsIDIxMCwgMjQyLCAxNiwgMzUsIDI0MSwgOSwgMTYsIDM1LCAyNDAsIDExLCAyMTMsIDEzMCwgMTYsIDM1LCAyMzcsIAotICAgIDIzOCwgMjEzLCAxMzAsIDE2LCAzNSwgMjE2LCAxNDksIDIxMywgMTMwLCAxNiwgMzUsIDIwNiwgMjM2LCAyMTMsIDEzMCwgCi0gICAgMTYsIDM1LCAyMTEsIDIyOCwgMTYsIDM1LCAyNDQsIDQ2LCAyNDgsIDM3LCA5NywgMTcxLCAyNDcsIDIzMywgMTYsIDM1LCAKLSAgICAyMjIsIDIxMSwgMTYsIDM1LCAyNDQsIDQ3LCAyMzksIDE1OSwgMTA4LCAxNiwgMzUsIDIxMCwgMjQzLCAyMzksIDE1OSwgCi0gICAgMTA4LCAyMjAsIDgyLCAxMTMsIDIyMCwgODIsIDI0NiwgMTk0LCAyMjAsIDgyLCAyMzksIDE2MiwgMjIwLCA4MiwgMjMwLCAKLSAgICAyMzksIDIzOSwgMTYyLCAyMjAsIDgyLCAyNDgsIDEyNSwgMjQ3LCAxOTAsIDIyMCwgODIsIDI0NywgMjQxLCAyMDgsIDI1MCwgCi0gICAgMjIwLCA4MiwgMjQ3LCAyMjQsIDI0OCwgMjM2LCAyMzUsIDE1MywgMjIwLCA4MiwgMjUwLCAyMzcsIDc2LCAyNDYsIDE2OCwgCi0gICAgMjIwLCA4MiwgMjQ0LCAxNDQsIDIyMCwgODIsIDI0NSwgODAsIDI1MSwgMTM0LCAyMjEsIDQ2LCAyMjAsIDgyLCA1MiwgMjQ5LCAKLSAgICAyMCwgNDMsIDE3LCAxMDUsIDQzLCAxNywgMTA4LCA0MywgMTcsIDE0NywgNDMsIDE3LCAxNDksIDQzLCAxNywgMTcwLCA0MywgCi0gICAgMTcsIDE5NSwgNDMsIDE3LCAyMTMsIDExMSwgNDMsIDE3LCAxOTksIDQzLCAxNywgMjIyLCA2MywgNDMsIDQyLCAyMDksIAotICAgIDE1MiwgNDMsIDQyLCAyNDEsIDExMiwgNDMsIDQyLCAyMDcsIDE1NCwgNDMsIDQyLCAyMDksIDU1LCA0MywgNDIsIDIzOSwgCi0gICAgMTQxLCA0MywgNDIsIDI0MCwgMjIsIDQzLCA0MiwgMjEyLCA4MiwgNDMsIDQyLCAyMTMsIDEwOCwgNDMsIDQyLCAyNDEsIAotICAgIDE0MCwgNDMsIDQyLCAyMjIsIDYwLCA0MywgNDIsIDIwNywgMTUxLCAxMDIsIDE3LCAxMDUsIDEwMiwgMTcsIDEwOCwgMTAyLCAKLSAgICAxNywgMTQ3LCAxMDIsIDE3LCAxNDksIDEwMiwgMTcsIDE3MCwgMTAyLCAxNywgMTk1LCAxMDIsIDE3LCAyMTMsIDExMSwgCi0gICAgMTAyLCAxNywgMTk5LCAxMDIsIDE3LCAyMjIsIDYzLCAxMDIsIDQyLCAyMDksIDE1MiwgMTAyLCA0MiwgMjQxLCAxMTIsIAotICAgIDEwMiwgNDIsIDIwNywgMTU0LCAxMDIsIDQyLCAyMDksIDU1LCAxMDIsIDQyLCAyMzksIDE0MSwgMTAyLCA0MiwgMjQwLCAyMiwgCi0gICAgMTAyLCA0MiwgMjEyLCA4MiwgMTAyLCA0MiwgMjEzLCAxMDgsIDEwMiwgNDIsIDI0MSwgMTQwLCAxMDIsIDQyLCAyMjIsIDYwLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1MSwgMTcsIDExOCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAxMjAsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCAxNywgMTI2LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIzOSwgMTQ3LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIzOSwgCi0gICAgMjMzLCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDIxMiwgODgsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjEzLCAxMTIsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjQxLCAxNDMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjIyLCA2NCwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDQyLCAyMDksIDE1MywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDEsIDExMywgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDQyLCAyMDcsIDE1NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMDksIDU2LCAyMzksIDEwMiwgMjExLCA2MSwgCi0gICAgNDIsIDIzOSwgMTQyLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MCwgMjMsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjEyLCAKLSAgICA4MywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMTMsIDEwOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyNDEsIDE0MSwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMjIsIDYxLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIwNywgMTUyLCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgMTAyLCA4LCA1LCAxLCA2MywgMTAyLCA4LCA1LCAxLCAyNDksIDI1NSwgMTAyLCA4LCA1LCAxLCAKLSAgICAyNDcsIDEyNSwgMTAyLCA4LCA1LCAxLCAyNDUsIDUxLCAxMDIsIDgsIDUsIDEsIDc0LCAxMDIsIDgsIDUsIDEsIDI0MCwgCi0gICAgMTc0LCAxMDIsIDgsIDUsIDEsIDIzOSwgNzUsIDEwMiwgOCwgNSwgMSwgMjM3LCAxNzEsIDEwMiwgOCwgNSwgMSwgNzUsIAotICAgIDEwMiwgOCwgNSwgMSwgMjMwLCAxODQsIDEwMiwgOCwgNSwgMSwgMjMwLCA1NCwgMTAyLCA4LCA1LCAxLCAxNTksIDEwMiwgOCwgCi0gICAgNSwgMSwgMjI2LCAxODUsIDEwMiwgOCwgNSwgMSwgMjIzLCAxNjMsIDEwMiwgOCwgNSwgMSwgNzgsIDEwMiwgOCwgNSwgMSwgCi0gICAgMjE5LCAxODQsIDEwMiwgOCwgNSwgMSwgMjE3LCAxMzQsIDEwMiwgOCwgNSwgMSwgMTQ2LCAxMDIsIDgsIDUsIDEsIDE5NCwgCi0gICAgMTAyLCA4LCA1LCAxLCAyMTAsIDY5LCAxMDIsIDgsIDUsIDEsIDY4LCAxMDIsIDgsIDUsIDEsIDIwNiwgMTY0LCAxMDIsIDgsIAotICAgIDUsIDEsIDIwNCwgMTQ0LCAxMDIsIDgsIDUsIDEsIDIwMywgMTk2LCAxMDIsIDgsIDUsIDEsIDIwMywgMTI0LCAxMDIsIDgsIAotICAgIDUsIDEsIDIwMiwgMTU5LCA0MywgOCwgNiwgMSwgNjMsIDQzLCA4LCA2LCAxLCAyNDksIDI1NSwgNDMsIDgsIDYsIDEsIDI0NywgCi0gICAgMTI1LCA0MywgOCwgNiwgMSwgMjQ1LCA1MSwgNDMsIDgsIDYsIDEsIDc0LCA0MywgOCwgNiwgMSwgMjQwLCAxNzQsIDQzLCA4LCAKLSAgICA2LCAxLCAyMzksIDc1LCA0MywgOCwgNiwgMSwgMjM3LCAxNzEsIDQzLCA4LCA2LCAxLCA3NSwgNDMsIDgsIDYsIDEsIDIzMCwgCi0gICAgMTg0LCA0MywgOCwgNiwgMSwgMjMwLCA1NCwgNDMsIDgsIDYsIDEsIDE1OSwgNDMsIDgsIDYsIDEsIDIyNiwgMTg1LCA0MywgCi0gICAgOCwgNiwgMSwgMjIzLCAxNjMsIDQzLCA4LCA2LCAxLCA3OCwgNDMsIDgsIDYsIDEsIDIxOSwgMTg0LCA0MywgOCwgNiwgMSwgCi0gICAgMjE3LCAxMzQsIDQzLCA4LCA2LCAxLCAxNDYsIDQzLCA4LCA2LCAxLCAxOTQsIDQzLCA4LCA2LCAxLCAyMTAsIDY5LCA0MywgCi0gICAgOCwgNiwgMSwgNjgsIDQzLCA4LCA2LCAxLCAyMDYsIDE2NCwgNDMsIDgsIDYsIDEsIDIwNCwgMTQ0LCA0MywgOCwgNiwgMSwgCi0gICAgMjAzLCAxOTYsIDQzLCA4LCA2LCAxLCAyMDMsIDEyNCwgNDMsIDgsIDYsIDEsIDIwMiwgMTU5LCA0MywgOCwgNSwgMSwgNjMsIAotICAgIDQzLCA4LCA1LCAxLCAyNDksIDI1NSwgNDMsIDgsIDUsIDEsIDI0NywgMTI1LCA0MywgOCwgNSwgMSwgMjQ1LCA1MSwgNDMsIAotICAgIDgsIDUsIDEsIDc0LCA0MywgOCwgNSwgMSwgMjQwLCAxNzQsIDQzLCA4LCA1LCAxLCAyMzksIDc1LCA0MywgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzEsIDQzLCA4LCA1LCAxLCA3NSwgNDMsIDgsIDUsIDEsIDIzMCwgMTg0LCA0MywgOCwgNSwgMSwgMjMwLCA1NCwgCi0gICAgNDMsIDgsIDUsIDEsIDE1OSwgNDMsIDgsIDUsIDEsIDIyNiwgMTg1LCA0MywgOCwgNSwgMSwgMjIzLCAxNjMsIDQzLCA4LCA1LCAKLSAgICAxLCA3OCwgNDMsIDgsIDUsIDEsIDIxOSwgMTg0LCA0MywgOCwgNSwgMSwgMjE3LCAxMzQsIDQzLCA4LCA1LCAxLCAxNDYsIAotICAgIDQzLCA4LCA1LCAxLCAxOTQsIDQzLCA4LCA1LCAxLCAyMTAsIDY5LCA0MywgOCwgNSwgMSwgNjgsIDQzLCA4LCA1LCAxLCAKLSAgICAyMDYsIDE2NCwgNDMsIDgsIDUsIDEsIDIwNCwgMTQ0LCA0MywgOCwgNSwgMSwgMjAzLCAxOTYsIDQzLCA4LCA1LCAxLCAyMDMsIAotICAgIDEyNCwgNDMsIDgsIDUsIDEsIDIwMiwgMTU5LCA0MywgMTcsIDIwMiwgODQsIDE4MiwgNDMsIDQyLCAyNDEsIDExMiwgMTgyLCAKLSAgICA0MywgNDIsIDIwNywgMTU0LCAxODIsIDQzLCA0MiwgMjA5LCA1NSwgMTgyLCA0MywgNDIsIDIzOSwgMTQxLCAxODIsIDQzLCAKLSAgICA0MiwgMjQwLCAyMiwgMTgyLCA0MywgNDIsIDIxMiwgODIsIDE4MiwgNDMsIDQyLCAyMTMsIDEwOCwgMTgyLCA0MywgNDIsIAotICAgIDI0MSwgMTQwLCAxODIsIDQzLCA0MiwgMjIyLCA2MCwgMTgyLCA0MywgNDIsIDIwNywgMTUxLCA1MiwgNDMsIDE3LCAxMDUsIAotICAgIDUyLCA0MywgMTcsIDEwOCwgNTIsIDQzLCAxNywgMTQ3LCA1MiwgNDMsIDE3LCAxNDksIDUyLCA0MywgMTcsIDE3MCwgNTIsIAotICAgIDQzLCAxNywgMTk1LCA1MiwgNDMsIDE3LCAyMTMsIDExMSwgNTIsIDQzLCAxNywgMTk5LCA1MiwgNDMsIDE3LCAyMjIsIDYzLCAKLSAgICA1MiwgNDMsIDQyLCAyMDksIDE1MiwgMTgyLCA0MywgMTcsIDIwMiwgODQsIDk4LCAxMTYsIDE1NywgMjM2LCAxMDUsIDk4LCAKLSAgICAxMTYsIDc5LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgMjA2LCAzOCwgOTgsIDExNiwgCi0gICAgMTU3LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDc5LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjM2LCAKLSAgICAxMDUsIDk4LCAxMTYsIDE1NywgMjA4LCA3MCwgMjQ0LCAxNDUsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCAyMDgsIDcwLCAyNDQsIAotICAgIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgMTU3LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDc5LCAKLSAgICAyMTcsIDU4LCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMjE3LCA1OCwgMjQ0LCAxNDUsIDIwNiwgMzgsIAotICAgIDk4LCAxMTYsIDc5LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMTYsIDE2LCAKLSAgICA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDUwLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNTAsIDIyNywgMTM0LCAKLSAgICA5OCwgMTE2LCA3OSwgMTIxLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgMTIxLCAxNTcsIDI1LCA0OSwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgCi0gICAgNzksIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDExMiwgMTU3LCAKLSAgICAyNSwgNTAsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIDk4LCAxMTYsIDc5LCAxMTIsIAotICAgIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDQ5LCAKLSAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgMjI3LCAKLSAgICAyMjIsIDk4LCAxMTYsIDE1NywgODAsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCA4MCwgMTU3LCAyNSwgNTAsIDIzNywgNDksIAotICAgIDk4LCAxMTYsIDExMiwgNzksIDI1LCA1MCwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDUwLCAxMTIsIAotICAgIDIyNywgMTM0LCA5OCwgMTE2LCA4MCwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgNTAsIAotICAgIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCA1MCwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgODAsIAotICAgIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCA0OSwgCi0gICAgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDQ5LCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgCi0gICAgNDksIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDQ5LCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIAotICAgIDI1LCA0OSwgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDQ5LCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIAotICAgIDc5LCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA0OSwgNzksIAotICAgIDI1LCA1MCwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDc5LCAyNSwgNDksIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIAotICAgIDEyMSwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAKLSAgICAxMzQsIDk4LCAxMTYsIDUwLCAxNTcsIDI1LCA0OSwgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIAotICAgIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDEyMSwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIDIzNiwgCi0gICAgMTA1LCA5OCwgMTE2LCA0OSwgNzksIDI1LCA1MCwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDc5LCAyNSwgNDksIAotICAgIDExMiwgMjI3LCAxMzQsIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgMjM2LCAxMDYsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgCi0gICAgNzksIDI1LCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDUwLCAxNTcsIDI1LCA0OSwgMTEyLCAyMzcsIDQ5LCA5OCwgCi0gICAgMTE2LCA0OSwgMTU3LCAyNSwgNTAsIDExMiwgMjM3LCA0OSwgOTgsIDExNiwgNzksIDExMiwgMjUsIDIzNiwgMTA1LCA5OCwgCi0gICAgMTE2LCAxNTcsIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgMjUsIDUwLCA4MCwgMjI3LCAxMzQsIDk4LCAKLSAgICAxMTYsIDUwLCA3OSwgMjUsIDQ5LCA4MCwgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCAKLSAgICA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDEyMSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgCi0gICAgMTEyLCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIAotICAgIDExNiwgNDksIDExMiwgNzksIDI1LCA1MCwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDExMiwgNzksIDI1LCA0OSwgCi0gICAgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgNDksIDEyMSwgNzksIDI1LCA1MCwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIAotICAgIDEyMSwgNzksIDI1LCA0OSwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCAxMTIsIDIzNiwgMTA2LCAKLSAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDEyMSwgMjM2LCAxMDYsIDIzNywgNDksIDk4LCAxMTYsIDUwLCAxNTcsIAotICAgIDI1LCA0OSwgODAsIDIzNywgNDksIDk4LCAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgODAsIDIzNywgNDksIDk4LCAxMTYsIDc5LCAKLSAgICA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDUyLCAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDc5LCA1MiwgCi0gICAgMjQ0LCAxNDUsIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDUyLCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNzksIDUyLCAKLSAgICAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNTIsIDIzNiwgMTA1LCA5OCwgMTE2LCA1MiwgMjA2LCAzOCwgOTgsIDExNiwgCi0gICAgMTIxLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCAxMjEsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCi0gICAgMTE2LCA1MiwgMTIxLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTIxLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCAxMjEsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDExMiwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgMTEyLCA1MiwgMjUsIDUwLCAyMTIsIDExOSwgOTgsIAotICAgIDExNiwgNTIsIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDExMiwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAotICAgIDExNiwgMTEyLCA1MiwgMjUsIDQ5LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIDExMiwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICA4MCwgMjEyLCAxMjAsIDI1LCA1MCwgMjQyLCA3OCwgOTgsIDExNiwgODAsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCi0gICAgMTE2LCA1MiwgODAsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCA4MCwgMjEyLCAxMjAsIDI1LCA0OSwgMjQyLCA3OCwgOTgsIAotICAgIDExNiwgODAsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgMTIxLCAyMTIsIDEyMCwgMjUsIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAxMjEsIDUyLCAyNSwgMjM2LCAxMDYsIAotICAgIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDExMiwgMjEyLCAxMjAsIDI1LCAKLSAgICAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgMTEyLCA1MiwgMjUsIDIzNiwgMTA2LCAyMTIsIDExOSwgOTgsIDExNiwgNTIsIAotICAgIDExMiwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCA4MCwgMjEyLCAxMjAsIDI1LCAyMzYsIDEwNiwgMjQyLCA3OCwgOTgsIDExNiwgCi0gICAgODAsIDUyLCAyNSwgMjM2LCAxMDYsIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgCi0gICAgMTU3LCAyNTAsIDEyOSwgMTIxLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgMTIxLCAyNSwgMjI3LCAKLSAgICAyMjIsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIDExMiwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAKLSAgICAxMTIsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyMDYsIDIyMSwgNTAsIDIwOCwgMTczLCAyMjYsIAotICAgIDI1MSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDIwNiwgMjIxLCA0OSwgMjA4LCAxNzMsIDIyNiwgMjUxLCAKLSAgICAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI0MywgMjI4LCAyNDUsIDEzMCwgOTgsIDExNiwgMTU3LCAyMjcsIDIyMiwgOTgsIAotICAgIDExNiwgMTU3LCAyMDYsIDIyNCwgOTgsIDExNiwgMTU3LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI0MiwgNzAsIDk4LCAKLSAgICAxMTYsIDc5LCAyMjcsIDIyMiwgOTgsIDExNiwgNzksIDIwNiwgMjI0LCA5OCwgMTE2LCA3OSwgMjE2LCAxNiwgOTgsIDExNiwgCi0gICAgNzksIDI0MiwgNzAsIDk4LCAxMTYsIDE1NywgNDksIDI1LCA3OSwgMjE2LCAxNiwgOTgsIDExNiwgMTU3LCAxMTIsIDI1LCAKLSAgICA3OSwgMjQyLCA3MCwgOTgsIDExNiwgNzksIDQ5LCAyNSwgMTU3LCAyMTYsIDE2LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgCi0gICAgMTU3LCAyNDIsIDcwLCAyMDYsIDIyMSwgMTYyLCAyNDgsIDMzLCAyMjYsIDI1MSwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgCi0gICAgMjI2LCAyNTEsIDExOCwgMjE3LCA1NiwgMjQ4LCAzMywgMjI2LCAyNTEsIDEyNiwgMjQxLCAxMzcsIDI0OCwgMzMsIDIyNiwgCi0gICAgMjUxLCAxNjIsIDI0OCwgMzMsIDIyNiwgMjUxLCAyMzksIDIzMywgMjQxLCAxMzcsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMjYsIAotICAgIDIxNywgNTQsIDI0OCwgMzMsIDIyNiwgMjUxLCAyMTMsIDExMiwgMjQxLCAxMzcsIDI0OCwgMzMsIDIzOSwgMTAyLCAyNDgsIAotICAgIDMzLCA0OSwgMjEzLCAxMTIsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgMTI2LCAyMTcsIDU0LCAyNDgsIDMzLCA0OSwgMjM5LCAKLSAgICAyMzMsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgMTYyLCAyNDgsIDMzLCA0OSwgMTI2LCAyNDEsIDEzNywgMjQ4LCAzMywgNDksIAotICAgIDExOCwgMjE3LCA1NiwgMjQ4LCAzMywgNDksIDExOCwgMjQxLCAxMzksIDI0OCwgMzMsIDUwLCAxNjIsIDI0OCwgMzMsIDE1NywgCi0gICAgMjEzLCA3OSwgMjI1LCAxMCwgMjEzLCA3OSwgMjQ0LCAxNTAsIDIxMywgNzksIDIwNiwgMjIxLCAxMTgsIDI0MSwgMTM5LCAKLSAgICAyNDgsIDMzLCA1MCwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgMjE3LCA2MCwgMjI2LCAyNTEsIDIyNywgMjIyLCAyMTcsIAotICAgIDYwLCAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDIyNywgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgCi0gICAgNDksIDI1LCAyMjYsIDI1MSwgNDksIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgCi0gICAgMjI2LCAyNTEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA0OSwgMjUsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAKLSAgICAyMjcsIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIAotICAgIDIxNywgNjAsIDIwNiwgMjIxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgMjI3LCAKLSAgICAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCA0OSwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCA2MiwgCi0gICAgMjExLCAxNzcsIDYxLCAyMTEsIDE3NywgNjEsIDUxLCAzLCAyMTUsIDE4OSwgMjQ1LCAxNjQsIDYxLCA1MSwgMjQ1LCAxOTUsIAotICAgIDYyLCA1LCAyMTEsIDE3NywgNTEsIDMsIDIzNiwgMTA2LCAyNDAsIDksIDUxLCAzLCA4MCwgMjQwLCA5LCA1MSwgMywgMjE5LCAKLSAgICAyMjksIDI0NSwgMTI1LCAyNDAsIDksIDUxLCAzLCAyMDYsIDIyMSwgNDksIDIwOCwgMTczLCAyMjYsIDI1MSwgNTAsIDI0MCwgCi0gICAgOSwgNTEsIDMsIDIwNiwgMjIxLCA1MCwgMjA4LCAxNzMsIDIyNiwgMjUxLCA0OSwgMjQwLCA5LCA1MSwgMywgMjQzLCAyMjgsIAotICAgIDI0NSwgMTI1LCAyNDAsIDksIDYyLCA1LCAyMTEsIDE3NywgNjEsIDUsIDIxMSwgMTc3LCA2MiwgMjE2LCAxNDMsIDYxLCAKLSAgICAyMTYsIDE0MywgNjIsIDgwLCAyMTYsIDE0MywgNjEsIDgwLCAyMTYsIDE0MywgNjIsIDIxOSwgODAsIDYxLCAyMTksIDgwLCAKLSAgICA2MiwgMjA2LCAyMjMsIDIwOCwgODUsIDYxLCAyMDYsIDIyMywgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCA1LCAyMDgsIDg1LCAKLSAgICA2MSwgMjA2LCAyMjMsIDUsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMDgsIDg1LCA2MSwgMjE2LCAxMSwgMjA4LCA4NSwgNjIsIAotICAgIDIxNiwgMTEsIDUsIDIwOCwgODUsIDYxLCAyMTYsIDExLCA1LCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjE4LCA2MCwgNjEsIAotICAgIDIxNiwgMTEsIDIxOCwgNjAsIDYyLCAyNDIsIDY5LCAyMDgsIDg1LCA2MSwgMjQyLCA2OSwgMjA4LCA4NSwgNjIsIDI0MiwgCi0gICAgNjksIDUsIDIwOCwgODUsIDYxLCAyNDIsIDY5LCA1LCAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDIwOCwgODUsIDYxLCAyMjcsIAotICAgIDIxNywgMjA4LCA4NSwgNjIsIDIyNywgMjE3LCA1LCAyMDgsIDg1LCA2MSwgMjI3LCAyMTcsIDUsIDIwOCwgODUsIDYyLCAKLSAgICAyMjcsIDIxNywgMjE4LCA2MCwgNjEsIDIyNywgMjE3LCAyMTgsIDYwLCA2MiwgMjQzLCAyMjEsIDYxLCAyNDMsIDIyMSwgNjEsIAotICAgIDI0MywgMjIyLCAyNDUsIDE5NSwgNjIsIDUsIDI0MywgMjIxLCAyMzksIDI0MiwgMjI2LCAyNDYsIDYxLCAyNDYsIDYxLCAKLSAgICAyNDIsIDgzLCAyNDYsIDYxLCAyNDYsIDYyLCAzLCA4MCwgMjQwLCA5LCAyNDcsIDE3MywgNjIsIDI0NiwgNjEsIDI0NiwgNjIsIAotICAgIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDIyNiwgMjUxLCAKLSAgICAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCAxNjIsIDI0OCwgNDMsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCAKLSAgICA1MCwgMjE3LCA2MCwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjUxLCAxNSwgMjQ3LCAxNDgsIDIwNiwgMjIxLCA0OSwgMjE3LCAKLSAgICA2MCwgMjQ4LCA0MywgNDksIDE2MiwgNjIsIDI0NiwgNjEsIDUwLCAxNjIsIDYyLCAyNDYsIDYxLCAyMzAsIDI0MCwgMjQ3LCAKLSAgICAxNzcsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDE2MiwgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMjYsIAotICAgIDI1MSwgMTYyLCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCA0OSwgMjE3LCA2MCwgMjQ2LCA1NSwgMjUwLCAKLSAgICAxMjgsIDIwNiwgMjIxLCA1MCwgMjE3LCA2MCwgMjQ2LCA1NSwgMjUwLCAxMjgsIDIyNiwgMjUxLCA1MCwgMjE3LCA2MCwgCi0gICAgMjQ2LCA1NSwgMjUwLCAxMjgsIDIyNiwgMjUxLCA0OSwgMjE3LCA2MCwgMjQ2LCA1NSwgMjUwLCAxMjgsIDIwNiwgMjIxLCAKLSAgICAxNjIsIDI0NiwgNjEsIDIyNiwgMjUxLCAxNjIsIDI0NiwgNjEsIDYyLCAyMjYsIDI1MSwgNTAsIDIwOCwgODUsIDYyLCAyMjYsIAotICAgIDI1MSwgNDksIDIwOCwgODUsIDYyLCAyMDYsIDIyMSwgNDksIDIwOCwgODUsIDYyLCAyMDYsIDIyMSwgNTAsIDIwOCwgODUsIAotICAgIDYxLCAyNDcsIDE3NywgNTEsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgCi0gICAgMjA2LCAyMjEsIDQ5LCAyNDMsIDIyOCwgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjI2LCAyNTEsIDUwLCAyNDMsIDIyOCwgMTYyLCAKLSAgICAyNDgsIDQzLCA2MSwgNTEsIDMsIDgwLCAyNDgsIDU1LCAyMjcsIDExNCwgNjEsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCAyNDMsIAotICAgIDg1LCAyMDYsIDIyMywgMjA4LCA4NiwgMywgNDksIDE2MiwgMjQ4LCA0MywgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDUwLCAKLSAgICAxNjIsIDI0OCwgNDMsIDIyOCwgOCwgMjQ2LCA2MSwgNjEsIDUxLCAzLCAyMDYsIDIyMSwgNDksIDIxNywgNTksIDYxLCA1MSwgCi0gICAgMywgMjI2LCAyNTEsIDQ5LCAyMTcsIDU5LCA2MSwgNTEsIDMsIDIyNiwgMjUxLCA1MCwgMjE3LCA1OSwgNjEsIDUxLCAzLCAKLSAgICAyMDYsIDIyMSwgNTAsIDIxNywgNTksIDYxLCAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgNDksIDIxNywgNTksIDYxLCAyNDYsIAotICAgIDYyLCAzLCAyMjYsIDI1MSwgNDksIDIxNywgNTksIDYxLCAyNDYsIDYyLCAzLCAyMjYsIDI1MSwgNTAsIDIxNywgNTksIDYxLCAKLSAgICAyNDYsIDYyLCAzLCAyMDYsIDIyMSwgNTAsIDIxNywgNTksIDIwNiwgMjIxLCA0OSwgMjA4LCA4NSwgMjA2LCAyMjEsIDUwLCAKLSAgICAyMDgsIDg1LCAyMjYsIDI1MSwgNDksIDIwOCwgODUsIDYxLCAyMjUsIDEwLCAyMTEsIDE3NywgNjIsIDIyNSwgMTAsIDIxMSwgCi0gICAgMTc3LCA2MSwgMjI1LCAxMCwgNSwgMjExLCAxNzcsIDYyLCAyMjUsIDEwLCA1LCAyMTEsIDE3NywgMjI2LCAyNTEsIDUwLCAKLSAgICAyMDgsIDg1LCA2MiwgMjEwLCAyMTUsIDMsIDIxNiwgMTYyLCAyNDYsIDcsIDIwNywgMywgMjEyLCAxNSwgMjQ1LCAyMzYsIAotICAgIDYyLCAyMTEsIDk0LCA2MSwgMjExLCA5NCwgMjI3LCAxMzEsIDIwOSwgMTcsIDIxMCwgMjE0LCAyNTAsIDc4LCAyMjEsIDE4OCwgCi0gICAgMjQ0LCAxOSwgMjIxLCAxODgsIDI0NSwgMjA0LCAyMTksIDI1MCwgNjIsIDIwOSwgMTYxLCA2MSwgMjA5LCAxNjEsIDI0OCwgCi0gICAgMjQ4LCAyNDcsIDIzMywgMjQ4LCAyNDgsIDk4LCAzLCAyNDYsIDE2OCwgMjQ4LCAyNDgsIDk4LCAzLCAyMDMsIDE5NiwgMjE0LCAKLSAgICAyNTQsIDIwNywgNCwgMywgMjE2LCAxOTEsIDI0MiwgNDgsIDIzNiwgNDcsIDI0OCwgMTAyLCA2MSwgMjEyLCAyMzcsIDIxOCwgCi0gICAgMTU5LCA2MiwgMjEyLCAyMzcsIDIxOCwgMTU5LCAyMTMsIDY4LCAyMTYsIDczLCAyMTUsIDE5OCwgMjM5LCAyMDEsIDIzNywgCi0gICAgNTYsIDI0NywgMTc3LCA2MiwgNDksIDIxOCwgNTksIDIzMSwgMzUsIDYyLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgNjEsIDQ5LCAKLSAgICAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgMTEyLCAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIAotICAgIDYxLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgNjMsIDI1LCAyNDUsIDEyOSwgMjQ3LCAxMSwgNTQsIDIxNiwgMjAzLCAKLSAgICA1NCwgMjQ4LCA2MiwgNTQsIDI0NywgODMsIDI1MCwgMjA4LCAyMTksIDIzMCwgMjQ1LCAxMzAsIDI0NiwgMTQzLCAyMTYsIAotICAgIDU5LCAyNDUsIDEzMSwgNzYsIDIyNywgOSwgMjQ1LCAxMzEsIDc2LCAyMzAsIDE1MSwgMjExLCA5NSwgMjUsIDI0NSwgMTM4LCAKLSAgICAyNDAsIDc1LCA5NywgMjUxLCAxMTUsIDIxMywgNzAsIDIzNywgMTMxLCAyNSwgMjEyLCAxNTksIDIxOSwgMzMsIDk3LCAyMDMsIAotICAgIDEsIDIwMywgNzYsIDIwOCwgNzUsIDM1LCAyMzcsIDUxLCAyMDgsIDc1LCAzNSwgMjI4LCAzMywgMjA4LCA3NSwgMzUsIDIzOSwgCi0gICAgMjQ5LCAyMDgsIDc1LCAzNSwgMjA5LCAxOCwgMjA4LCA3NSwgMzUsIDIwNCwgMTYsIDIwOCwgNzUsIDM1LCAyMDQsIDgwLCAKLSAgICAyMDgsIDc1LCAzNSwgMjI0LCAxMiwgMjA4LCA3NSwgMzUsIDI0MSwgMTc5LCAyMDQsIDM3LCA3NiwgMjQzLCAyNDksIDYxLCAKLSAgICAyMzksIDExNCwgMjQwLCAxMDIsIDYxLCAyMTIsIDMwLCAyNDAsIDEwMiwgNjIsIDIxMiwgMzAsIDI0MCwgMTAyLCA2MSwgCi0gICAgMjEwLCAyMTUsIDMsIDIxNiwgMTYyLCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAyOSwgMjI4LCAxLCAyMTcsIDU2LCAyMjQsIAotICAgIDI5LCAyMjQsIDIzNCwgMjQwLCA0MywgNTQsIDI0MSwgMTc5LCAyMjUsIDEyNywgNTQsIDIzMCwgNjksIDIxNCwgMjE4LCAKLSAgICAyMDYsIDIwNSwgMjIyLCAyMjQsIDIxOCwgNzMsIDI1MCwgMTE0LCAyMDksIDIwNSwgMjM4LCAxNzgsIDI0NywgNTcsIDIyNywgCi0gICAgMTg0LCAyMDUsIDIwMiwgMjI3LCAxNDUsIDIxNCwgMTg3LCAyMTUsIDIwLCAyNDcsIDQzLCAyNTAsIDE0NSwgMjE4LCAxMDgsIAotICAgIDYxLCAyNDYsIDE1MCwgMjI5LCA4MSwgNjEsIDI0NiwgMTUwLCAyMTcsIDQ4LCA2MSwgMjQ2LCAxNTAsIDIxNSwgMjA2LCA2MSwgCi0gICAgMjQ2LCAxNTAsIDI0OCwgNTQsIDYxLCAyNDYsIDE1MCwgMjI5LCAzMSwgNjEsIDI0NiwgMTUwLCAyMTksIDQ1LCA2MiwgMjQ2LCAKLSAgICAxNTAsIDIyOSwgODEsIDYyLCAyNDYsIDE1MCwgMjE3LCA0OCwgNjIsIDI0NiwgMTUwLCAyMTUsIDIwNiwgNjIsIDI0NiwgCi0gICAgMTUwLCAyNDgsIDU0LCA2MiwgMjQ2LCAxNTAsIDIyOSwgMzEsIDYyLCAyNDYsIDE1MCwgMjE5LCA0NSwgNjIsIDIxMSwgMjI2LCAKLSAgICAyMTAsIDIyNywgNjEsIDIzNywgNTYsIDIxMCwgMjI3LCA2MSwgMjQzLCAyMjIsIDIxMCwgMjI3LCA2MiwgMjQ2LCA1LCAyMTAsIAotICAgIDIyNywgNjEsIDIxMSwgMjI2LCAyMTAsIDIyNywgNjIsIDIzNywgNTYsIDIxMCwgMjI3LCA2MiwgMjQzLCAyMjIsIDIxMCwgCi0gICAgMjI3LCA2MSwgMjQ2LCA1LCAyMTAsIDIyNywgMjM2LCA0NywgMjExLCAxODIsIDIxNywgNTYsIDIyMSwgMTYwLCAyNDEsIAotICAgIDEzOSwgMjIxLCAxNjAsIDI0OCwgMTU4LCAyNDEsIDEzOSwgMjIxLCAxNTUsIDI0OCwgMTU4LCAyMTIsIDgxLCAyMjEsIDE1NSwgCi0gICAgMjIzLCAxOTUsIDIzOSwgMjE3LCA1NCwgMjIzLCAxOTUsIDIyMywgNjYsIDU0LCAyMjMsIDE5NSwgMjEzLCA1NywgNTQsIAotICAgIDIwNCwgNDYsIDIxMCwgODksIDI0NSwgMTMwLCAyNDEsIDE3NiwgMjEwLCA4OSwgMjQ1LCAxMzAsIDIwNiwgMjMzLCAyMTYsIAotICAgIDEzOSwgOTcsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTIwLCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExOCwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTcsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE1LCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExMywgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTEsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTA5LCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMzgsIDE3NiwgCi0gICAgMjI1LCA3MCwgNjIsIDIwNiwgMjMzLCAyMTYsIDEzOSwgOTcsIDIxNiwgMTQwLCAyMTksIDk1LCA5NywgMjE5LCA2OCwgMjE5LCAKLSAgICA5NSwgOTcsIDIxOCwgMjM4LCAyMTksIDk1LCA1NCwgMjA0LCAzNSwgOTcsIDI0MywgMjE0LCAyNDAsIDEwMSwgMjQzLCAyMTQsIAotICAgIDI0MCwgMTAwLCAyNDMsIDIxNCwgMjQwLCA5OSwgMjQzLCAyMTQsIDI0MCwgOTgsIDI0MywgMjE0LCAyNDAsIDk3LCAyNDMsIAotICAgIDIxNCwgMjQwLCA5NiwgNjEsIDI0NiwgNjIsIDMsIDcwLCAyMTYsIDE2LCA2MSwgMjQ2LCA2MiwgMywgMTIwLCAyNDMsIDgzLCAKLSAgICA2MiwgMjQ2LCA2MiwgMywgNjEsIDcwLCAyMTYsIDE2LCA2MiwgMjQ2LCA2MiwgMywgMTIwLCA2MSwgMjQzLCA4MywgMjI0LCAKLSAgICA0NSwgMzUsIDIwMywgNzYsIDIyNCwgNDUsIDM1LCAyMDMsIDAsIDI0MywgMTk1LCAzNSwgMjM3LCAyNDgsIDIwMywgNzYsIAotICAgIDI0MywgMTk1LCAzNSwgMjI3LCAxNzcsIDIwMywgMCwgMjQzLCAxOTUsIDM1LCAyMjcsIDE3NywgMjAzLCA3NiwgMjQzLCAKLSAgICAxOTUsIDM1LCAyMzcsIDI0OCwgMjAzLCAwLCA2MSwgMjM5LCAyMjUsIDYyLCAyMzksIDIyNSwgMjM3LCAxMzEsIDI1LCAyMTgsIAotICAgIDE2MywgMjUwLCAyMjgsIDI0NSwgMTI4LCAyMTAsIDE1NCwgMjExLCAxMDMsIDc2LCAyNTEsIDkyLCAyMTQsIDIwMywgMjUxLCAKLSAgICAyOSwgMjM5LCAxOTcsIDIzOCwgMTg3LCAyMTEsIDEwMywgNzYsIDIzNywgMjYsIDI1MCwgNDIsIDk3LCAyMzksIDIxMywgCi0gICAgMjE5LCAyMDcsIDYxLCAyMTEsIDk0LCAxMjYsIDIyNywgMTA5LCAyNDUsIDE4MSwgMjE2LCAxNiwgMTI2LCAyMjcsIDEwOSwgCi0gICAgMjQ1LCAxODEsIDIyNywgMjIyLCAyMDQsIDkxLCA1NCwgMTM4LCAyMDUsIDE3OSwgNTQsIDI0MiwgNzUsIDI0MCwgNDMsIDU0LCAKLSAgICAyNDIsIDc1LCAyMjUsIDEyNywgNTQsIDIzMCwgMjUwLCAyNDAsIDQzLCAyNSwgMjI1LCAxMjcsIDU0LCAyMjUsIDEyNywgMjUsIAotICAgIDI0MCwgNDMsIDU0LCAyMjUsIDEyNywgMywgMjExLCAzMiwgNTQsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCAyNSwgMjI1LCAKLSAgICAxMjcsIDI1LCAyNDAsIDQzLCA1NCwgODAsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCA1NCwgMjM2LCAxMDYsIDIyNSwgMTI3LCAKLSAgICAzLCAyMTEsIDMyLCA1NCwgMjI1LCAxMCwgNjEsIDI0NiwgNjEsIDIyNSwgMTAsIDYyLCAyNDYsIDYxLCAyMjUsIDEwLCA1LCAKLSAgICA2MSwgMjQ2LCA2MSwgMjI1LCA4NiwgOTcsIDI0MywgMTM1LCA5NywgMjA2LCAyMzAsIDIxOSwgNjcsIDk3LCAyNDUsIDI0NywgCi0gICAgMjM5LCA5NywgMjA2LCAyMDEsIDIyMiwgMjE3LCAyNDYsIDIwMywgMjE5LCAxMzcsIDIzMCwgNzUsIDIwNSwgMjQwLCAyNDYsIAotICAgIDEyMywgNjIsIDIyNCwgMzAsIDIyNywgMTI4LCAyMTMsIDEwMSwgMjEzLCAxNDAsIDIxNywgMzgsIDIxMywgMTIwLCAyMTIsIAotICAgIDEwLCAyNDgsIDI1MSwgMjQ4LCAyMTcsIDEwMywgMjI5LCAxNTEsIDYxLCAyNDIsIDU4LCAyMjUsIDEyMiwgNjEsIDI0MiwgCi0gICAgNTgsIDIyOSwgODEsIDYyLCAyNDIsIDU4LCAyMjUsIDEyMiwgNjIsIDI0MiwgNTgsIDIyOSwgODEsIDIxMiwgMTYsIDIwNCwgCi0gICAgMywgMjEyLCAxOSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAyNDYsIDcsIDIxNiwgMTkwLCA2MiwgMjEyLCAxNSwgMjA5LCAxOSwgCi0gICAgMjQ2LCA4LCAyNSwgMjE2LCAxOTAsIDIwNywgMTc0LCA2MSwgMjEyLCAyMzcsIDIxOCwgMTU5LCAyMDcsIDE3NCwgNjIsIAotICAgIDIxMiwgMjM3LCAyMTgsIDE1OSwgNjEsIDI0MywgMjIyLCAyMzEsIDUwLCAyMTEsIDE3NywgMjQ1LCAxMjQsIDIyOCwgMTUsIAotICAgIDI0MywgMTYyLCAyNDcsIDM5LCAyMTksIDI1MywgMjE4LCAxNjMsIDI0NywgNDAsIDIxMiwgNDgsIDIzNywgMzYsIDMsIDYxLCAKLSAgICAyNDUsIDEzMCwgNDMsIDI0NSwgMTI0LCAyMjgsIDE1LCAyNDYsIDE5NSwgMjIxLCAxOTIsIDI0MSwgNjIsIDI1MCwgMjU1LCAKLSAgICAyMjAsIDI2LCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYyLCAyMDcsIDEzMSwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MSwgCi0gICAgMjA3LCAxMzEsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjIsIDQ5LCAyMjgsIDE2LCAyMjQsIDIzMywgNjEsIDQ5LCAyMjgsIAotICAgIDE2LCAyMjQsIDIzMywgMjQyLCA1MywgMjEyLCA0MCwgNTQsIDc5LCA2MSwgMjQyLCA2OSwgMjA4LCA4NSwgNDksIDI0NiwgCi0gICAgMTYsIDI0MSwgNjIsIDEwMywgMjE0LCAyNTQsIDI0MCwgODQsIDI0MywgMjI4LCAyMzEsIDUwLCA2MSwgMjQ2LCA2MiwgMjMxLCAKLSAgICA1MCwgNjIsIDIxMSwgMTc3LCA2MiwgMjA4LCA1MCwgMjE2LCA4NCwgNDksIDI0MSwgNjEsIDIxNiwgODQsIDQ5LCAyNDEsIAotICAgIDYwLCAyNTAsIDU0LCAxNiwgMzUsIDIwNiwgMjA1LCA3OSwgMjQ2LCA2MiwgMywgMjExLCAzMiwgMjUsIDEyMCwgMTg3LCA1NSwgCi0gICAgMjE4LCAyNTQsIDIxNiwgMTMsIDIzMCwgMjUyLCAyMTgsIDI1NCwgMjI3LCAyMTksIDIzMCwgMjUyLCAyMTgsIDI1NCwgMjMwLCAKLSAgICAyMzksIDIxOCwgMjU0LCA2MiwgMjQ1LCAxMzEsIDIyMCwgMzIsIDIxMywgOCwgMjEyLCAyNTIsIDIxMiwgMjAzLCAyNDYsIAotICAgIDkwLCAyNDcsIDE5LCAyMzYsIDIzMSwgMjEyLCA4OSwgMjM4LCAxODgsIDIwNCwgMywgMjM2LCAyMywgMjM4LCAxODgsIDMsIAotICAgIDIzNywgMTAxLCAyMjUsIDEwNywgMTYsIDM1LCAyMjcsIDEzMywgMjI0LCAxMiwgMjA3LCA0LCAyMjAsIDMyLCAyMzcsIDIzOSwgCi0gICAgMjM5LCAxNDgsIDIzOSwgMjI2LCAyMzEsIDUwLCAyMzYsIDEyNiwgMjQwLCAzNCwgMjE1LCAxNSwgNTEsIDIzOSwgMTQ3LCAKLSAgICAyNDUsIDE2NCwgMjEyLCA2NiwgMjM1LCAxNjMsIDIxMiwgNjksIDIxOCwgMjMwLCAzLCAyNDgsIDI1MSwgMjA5LCAxNDQsIAotICAgIDIzMCwgMTY5LCAyNDgsIDIzNiwgOTcsIDIzNywgNTksIDIzNywgMjUwLCA5NywgMjM5LCAxMDUsIDIxNywgMTgwLCAyNDUsIAotICAgIDEwMCwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA2MSwgMjM5LCAyMjYsIDMsIDIzNiwgMTA2LCAxMDEsIDYyLCAyMTEsIDMzLCAKLSAgICA2MiwgMjE1LCAyNSwgMjE0LCAxOTAsIDIwNiwgMjIxLCAyNDgsIDM4LCAyMTQsIDE5MCwgNjIsIDIxNCwgMTkwLCAyMjYsIAotICAgIDI1MSwgMjQ4LCAzOCwgMjE0LCAxOTAsIDYxLCAyMTQsIDE5MCwgNjEsIDc5LCAyNDYsIDE2OSwgODIsIDIwOSwgMTYyLCAKLSAgICAyMjcsIDQ3LCA1NCwgMjA5LCAyMjEsIDI0MiwgNTIsIDI1MSwgNTIsIDI0MSwgNTcsIDIxNiwgMTg4LCAyMzksIDIzOCwgCi0gICAgMjE2LCAxODgsIDIzNywgMTIzLCAyMDUsIDIyOCwgMjM3LCAxMjMsIDIwMywgMjIwLCAyMzcsIDEyMywgMjI2LCAyNTEsIDUwLCAKLSAgICAyMTksIDgsIDIxOSwgOCwgMjA2LCAyMjEsIDUwLCAyMTksIDgsIDYxLCAyMjIsIDk3LCA2MiwgMjIyLCA5NywgMjQ2LCAxNjksIAotICAgIDgyLCA3OSwgMjQ2LCAxNjksIDgyLCAyMjMsIDIyNCwgMjAzLCAxOTYsIDc5LCAyMjMsIDIyNCwgMjAzLCAxOTYsIDI0OCwgCi0gICAgMjQ4LCAyMDMsIDE5NiwgNzksIDI0OCwgMjQ4LCAyMDMsIDE5NiwgMjE5LCAyMDcsIDMwLCAyNDUsIDEzMCwgNzksIDMwLCAKLSAgICAyNDUsIDEzMCwgMTcxLCAyNDYsIDIxOCwgMjQ1LCAxMzAsIDc5LCAxNzEsIDI0NiwgMjE4LCAyNDUsIDEzMCwgOCwgMjQ1LCAKLSAgICAxMzAsIDIxMywgNzcsIDYxLCA4LCAyNDUsIDEzMCwgMjE5LCAyMDcsIDgsIDI0NSwgMTMwLCAyMjUsIDEyNCwgMjQ1LCAxMzAsIAotICAgIDIxMSwgOTUsIDc2LCAyNDQsIDEzNywgMjM5LCAxNDcsIDIwOSwgMTgwLCAyNTAsIDU5LCAyMzksIDE0NywgMjQ4LCAyNDksIAotICAgIDI1MCwgNTksIDc5LCAyMzksIDE0NywgMjQ4LCAyNDksIDI1MCwgNTksIDIzOSwgMTQ3LCAyNDYsIDMsIDI1MCwgNTksIDYyLCAKLSAgICAyMzksIDE0NywgMjE4LCA2MSwgMjExLCA5NCwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTEsIDk0LCAyMTEsIDIyMSwgCi0gICAgMjExLCA0MiwgMjE5LCAyMDcsIDYxLCAyMTEsIDk0LCA0MywgNjEsIDIxMSwgOTQsIDE3MSwgMjQ2LCAyMTgsIDYyLCAyMTEsIAotICAgIDk0LCA2MiwgMjQ2LCAyMTgsIDYxLCAyMTEsIDk0LCAyMTksIDIwNywgNjIsIDIxMSwgOTQsIDc5LCAyMTksIDIwNywgNjIsIAotICAgIDIxMSwgOTQsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMTMsIDc3LCA2MSwgMjExLCA5NCwgNzksIDI1MCwgNTksIDE3MSwgMjQ2LCAKLSAgICAyMTgsIDI1MCwgNTksIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIAotICAgIDk0LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDIxMiwgODgsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAKLSAgICAyNDEsIDE0MywgMjE4LCA2MSwgMjE2LCAxNDEsIDYyLCAyMTEsIDk0LCA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxNiwgCi0gICAgMTQxLCA2MiwgMjExLCA5NCwgMjA3LCAxNTUsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMTIsIDgzLCAyMTgsIDYxLCAyNTAsIAotICAgIDU5LCAyMDksIDE4MCwgMjUwLCA1OSwgMTcxLCAyNDYsIDIxOCwgMjA5LCAxODAsIDI1MCwgNTksIDc5LCAyMDksIDE4MCwgCi0gICAgMjUwLCA1OSwgMjEyLCA4OCwgMjE4LCAyMTgsIDYyLCAyNSwgNjEsIDIzOSwgMjAwLCA2MiwgMjM5LCAyMDAsIDYxLCAyMzksIAotICAgIDIwMCwgMjQxLCAxNDMsIDIxOCwgMjE4LCAyMTksIDIwNywgNjIsIDIzOSwgMjAwLCA0MywgMTcxLCAyNDYsIDIxOCwgMjQxLCAKLSAgICAxNDMsIDIxOCwgNjEsIDIxMSwgOTQsIDc5LCAyMDksIDE4MCwgMjE4LCAxMTgsIDI1MCwgNTksIDIxMiwgMTcsIDIwOCwgCi0gICAgMjQ0LCAyMDgsIDc4LCAyMTIsIDE3LCA3OSwgMjQ2LCAxNDYsIDIxMiwgMTcsIDIxMSwgMjIzLCA3OSwgMjExLCAyMjMsIAotICAgIDI0OCwgMjQ5LCAyNTAsIDU5LCAyNDEsIDE0MywgMjA5LCAxODAsIDIxNywgMjEzLCAyNTAsIDU5LCA3OSwgMjQxLCAxNDMsIAotICAgIDIwOSwgMTgwLCAyMTcsIDIxMywgMjUwLCA1OSwgMjQ1LCAxMzEsIDgyLCAyMTMsIDc3LCA2MSwgMjQ2LCA2MSwgMTgyLCAKLSAgICAxMDMsIDI0NSwgMTMxLCA4MiwgMjI2LCAyNTEsIDUwLCAyNDIsIDUwLCA2MSwgMjExLCAxNzcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjQyLCA1MCwgNjEsIDIxMSwgMTc3LCAyMjYsIDI1MSwgNTAsIDIxMywgNzcsIDYxLCAyMTEsIDE3NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyMTMsIDc3LCA2MSwgMjExLCAxNzcsIDYyLCAyMTcsIDQ3LCAxMzEsIDIxOSwgMjMzLCA2MSwgMjE3LCA0NywgMTMxLCAyMTksIAotICAgIDIzMywgNjEsIDI0MCwgMjEyLCAxMzEsIDIxOSwgMjMzLCA2MiwgMjQzLCAyMjIsIDIyNCwgMTAzLCA2MSwgMjAzLCAxOTYsIAotICAgIDc5LCAyNDAsIDIxMiwgMTMxLCA5NywgMTU3LCA4MCwgMTQyLCAyMjUsIDEwLCA4MCwgMTQyLCA3OSwgODAsIDE0MiwgNzksIAotICAgIDIxMiwgMTIwLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMTIsIDEyMCwgMjQ1LCAKLSAgICAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCA1MiwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIAotICAgIDIxOSwgMjMzLCA3OSwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMTI0LCAyMTIsIDEyMCwgCi0gICAgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAxMjQsIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAKLSAgICAyMTksIDIzMywgMjQ1LCA4NiwgMjExLCA3OCwgMjE5LCA4OSwgMiwgMjE5LCAyMzMsIDc5LCAyNDAsIDIxMiwgMTMxLCAyMTksIAotICAgIDIzMywgNzksIDIzNywgNTYsIDI0MCwgMjEyLCAxMzEsIDIxOSwgMjMzLCA3OSwgNjIsIDIzNywgNTUsIDIxNSwgMTk4LCA3OSwgCi0gICAgNjIsIDIzNywgNTYsIDI0NywgMTc3LCAyMzksIDIwMSwgMjM3LCA1NSwgMjE1LCAxOTgsIDIzOSwgMjAxLCAyMzcsIDU2LCAKLSAgICAyNDcsIDE3NywgMjI1LCAxMCwgNDksIDIxOSwgNzcsIDIxOSwgMjMzLCAyMjUsIDEwLCA1MCwgMjE5LCA3NywgMjE5LCAyMzMsIAotICAgIDIyNSwgMTAsIDIzOSwgMjE0LCA0OSwgMjE5LCA3NywgMjE5LCAyMzMsIDIyNSwgMTAsIDIzOSwgMjE0LCA1MCwgMjE5LCA3NywgCi0gICAgMjE5LCAyMzMsIDIyNSwgMTAsIDIyNywgMjE3LCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCAyMjUsIDEwLCAyMTYsIAotICAgIDExLCAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCA3OSwgMjI3LCAyMTcsIDI1MCwgMjE4LCAyMTcsIDMxLCAxMzEsIAotICAgIDIxOSwgMjMzLCA3OSwgMjE2LCAxMSwgMjUwLCAyMTgsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAyMjcsIDIxNywgCi0gICAgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgNzksIDIxNiwgMTEsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIAotICAgIDE1NywgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDE1NywgNTAsIDIwOCwgMTMzLCAyMTMsIAotICAgIDMzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgMTAsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgCi0gICAgMTAsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjE5LCAyMzMsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTA1LCAyNDMsIAotICAgIDE3NCwgMTgyLCA0MywgMTcsIDEwOCwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxNDcsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgCi0gICAgMTQ5LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE3MCwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxOTUsIDI0MywgMTc0LCAKLSAgICAxODIsIDQzLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTk5LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIAotICAgIDIyMiwgNjMsIDI0MywgMTc0LCAxODIsIDQzLCA0MiwgMjA5LCAxNTIsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCA0MywgNDEsIDE3LCAxMDgsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxNDcsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAKLSAgICAxNDksIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxNzAsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAxOTUsIDI0MywgMTc0LCA0MywgCi0gICAgNDEsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE5OSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDIyMiwgCi0gICAgNjMsIDI0MywgMTc0LCA0MywgNDEsIDQyLCAyMDksIDE1MiwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTA1LCAyNDMsIAotICAgIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxMDgsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDE0NywgMjQzLCAxNzQsIDE4MiwgCi0gICAgNDMsIDQxLCAxNywgMTQ5LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxNzAsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgCi0gICAgMTcsIDE5NSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMjEzLCAxMTEsIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIAotICAgIDE5OSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMjIyLCA2MywgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCA0MiwgMjA5LCAKLSAgICAxNTIsIDc5LCAyMDQsIDI2LCA4NiwgNDcsIDc5LCA5MSwgNTQsIDc5LCAyMjQsIDEwMywgNTQsIDc5LCAyNDMsIDEzNywgNTQsIAotICAgIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCA3OSwgODYsIDQ3LCA3OSwgMTUzLCAyNDEsIDE3NiwgNDcsIDI0MiwgNjMsIAotICAgIDIxOCwgNjMsIDg2LCA0NywgNzksIDIxNSwgMTkwLCA4NiwgNDcsIDIwOCwgODQsIDg2LCA0NywgNzksIDIwOCwgODQsIDg2LCAKLSAgICA0NywgMjQ0LCAxNDMsIDIwOCwgODQsIDg2LCA0NywgNzksIDI0NCwgMTQzLCAyMDgsIDg0LCA4NiwgNDcsIDYyLCA4NiwgNDcsIAotICAgIDIwOSwgMzEsIDIwOCwgMTQzLCA4NiwgMjUwLCA5NCwgMjA5LCAzMSwgMjQ3LCAyNDYsIDg2LCAyNTAsIDk0LCA2MiwgODYsIAotICAgIDI1MCwgOTQsIDc5LCA2MiwgMjQ1LCA4NiwgMTgzLCAyNSwgODYsIDQ3LCA3OSwgNjIsIDI0NSwgODYsIDE3NywgMjUsIDg2LCAKLSAgICA0NywgMjExLCAxNzQsIDYyLCA4NiwgNDcsIDc5LCAyNDUsIDIxNywgNjIsIDg2LCA0NywgMjE2LCAxMCwgNjEsIDg2LCA0NywgCi0gICAgMjI3LCAyMTYsIDYxLCA4NiwgNDcsIDI0OSwgMjQsIDIxMywgNzcsIDYxLCA4NiwgNDcsIDIzOSwgMTE3LCAyMTMsIDc3LCAKLSAgICA2MSwgODYsIDQ3LCA3OSwgMjI2LCAyNTEsIDIxNiwgOSwgNjEsIDg2LCA0NywgNzksIDIwNiwgMjIxLCAyMTYsIDksIDYxLCAKLSAgICA4NiwgNDcsIDIyMSwgMTYyLCAyMjYsIDI1MSwgMjE2LCA5LCA2MSwgODYsIDQ3LCAyNDUsIDkzLCAyMjcsIDE0LCAyMjEsIAotICAgIDE2MiwgMjA2LCAyMjEsIDIxNiwgOSwgNjEsIDg2LCA0NywgNDMsIDc5LCA2MSwgODYsIDQ3LCAyMDQsIDMyLCA4NiwgNDcsIAotICAgIDI0OCwgNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDI0OCwgNDIsIDg2LCA0NywgMjQ4LCA0MiwgMTUzLCAyNDEsIDE3NiwgCi0gICAgNDcsIDc5LCAyNDgsIDQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCA3OSwgMjQ4LCA0MiwgODYsIDQ3LCA3OSwgMjQ4LCAKLSAgICA0MiwgMTUzLCAyNDEsIDE3NiwgNDcsIDIwOSwgMTgyLCA4NiwgNDcsIDc5LCAyMDksIDE4MSwgODYsIDQ3LCAyMDQsIDU2LCAKLSAgICA4NiwgNDcsIDc5LCAyMDQsIDU2LCA4NiwgNDcsIDIyMCwgMywgODYsIDQ3LCA1MiwgMjQ1LCA5MywgMjI3LCAxNCwgMTI2LCAKLSAgICAyNDMsIDE4NCwgMjUwLCAyMTcsIDYxLCAyMDgsIDg2LCAyNDUsIDE5NSwgNSwgNjEsIDIwOCwgODUsIDIxOCwgMjMzLCAxNzEsIAotICAgIDIxMCwgMjQ0LCAxNzEsIDIxMCwgMTk3LCA0OSwgMjE1LCA5MywgMjQ5LCAxMSwgMjQ0LCA0MywgNTAsIDIxNSwgOTMsIDI0OSwgCi0gICAgMTEsIDI0NCwgNDMsIDIxOSwgMjQ1LCAzLCA3MCwgMjMxLCA2LCAyMTYsIDc0LCAyMTIsIDEsIDIxNywgMjQ4LCAyMTAsIAotICAgIDI0NCwgMjEwLCAxOTgsIDIxNywgMjQ4LCAyMTIsIDAsIDgwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDk1LCAxMywgMjE1LCAKLSAgICAyNDUsIDI0MywgMjI3LCAxNjMsIDI0MywgMTM2LCAxMywgMjQwLCA4NCwgMjQzLCAyMjcsIDEwMywgMjI3LCAzNywgMjUwLCAKLSAgICAyMjYsIDEwMywgMjI3LCAzNywgMjE5LCAyNDQsIDYxLCAyNDMsIDIyMiwgMywgMjQ2LCAyMTYsIDI0MywgODUsIDI1LCAzLCAKLSAgICAyNDMsIDg1LCAyNDEsIDExNSwgNzYsIDIyMCwgMSwgMjA2LCAyMTIsIDIyNiwgMjUxLCA1MCwgMjQ1LCAxNjYsIDMsIDI0MywgCi0gICAgODUsIDIwNiwgMjIxLCA0OSwgMjQ1LCAxNjYsIDMsIDI0MywgODUsIDQ5LCAyMTksIDIwOSwgMjMwLCA5OSwgNTAsIDIxOSwgCi0gICAgMjA5LCAyMzAsIDk5LCAyMzksIDEwMiwgMjE5LCAyMDksIDIzMCwgOTksIDIyOCwgOCwgMTEyLCAyMTAsIDMsIDIyOCwgOCwgCi0gICAgMTIxLCAyMTAsIDMsIDQ5LCAyNSwgNTAsIDUyLCAyMDcsIDE3MywgNDksIDI1LCA1MCwgMjEwLCAzLCA0OSwgMjIzLCAyMjgsIAotICAgIDE2MywgNTAsIDIxMCwgMywgMTYzLCA0OSwgMjEwLCAzLCAxMTIsIDIxMCwgNCwgMywgMjQ2LCA2MiwgNTUsIDIyNiwgMjQ3LCAKLSAgICAyNDMsIDE0MiwgMjQ3LCAxMzcsIDIzNiwgMTA2LCAyMTUsIDEzNSwgNjEsIDI0NSwgMjE2LCAyNDMsIDIyMSwgNjEsIDI0NSwgCi0gICAgMjE2LCAyNDMsIDIyMiwgMywgOTYsIDIwOCwgMjU0LCA2MSwgMjQ1LCAyMTYsIDI0MywgMjIyLCAzLCA4NiwgMjA4LCAyNTQsIAotICAgIDYxLCA1MSwgMywgOTYsIDIwOCwgMjU0LCA2MSwgNTEsIDMsIDg2LCAyMDgsIDI1NCwgMTMsIDQ5LCA2MSwgNTEsIDE1NSwgCi0gICAgMTMsIDUwLCA2MSwgNTEsIDE1NSwgMTMsIDQ5LCAyNTAsIDIxOCwgMTU1LCAxMywgNTAsIDI1MCwgMjE4LCAxNTUsIDEzLCAKLSAgICA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIDEzLCA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDEzLCA0OSwgNjEsIDIwOCwgMTMzLCAKLSAgICAyMTMsIDMzLCAxNTUsIDEzLCA1MCwgNjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDEzLCA0OSwgMjM5LCAyMTQsIDIxOSwgCi0gICAgNzYsIDEzLCA1MCwgMjM5LCAyMTQsIDIxOSwgNzYsIDE3NywgMjE3LCA1OCwgNDcsIDE4MywgMjE3LCA1OCwgNDcsIDI1MCwgCi0gICAgMTk0LCAyMzgsIDIyNiwgMjQ2LCA2MiwgNDcsIDI0NiwgMTgsIDIzOCwgMjI2LCAyNDYsIDYyLCA0NywgNTAsIDUzLCAzLCAKLSAgICA0MywgMjE4LCA3NiwgMTYzLCA5NiwgNDcsIDE2MywgODYsIDQ3LCAxNjMsIDQ5LCA1MCwgNDcsIDE2MywgOTYsIDUyLCA0NywgCi0gICAgMTYzLCA4NiwgNTIsIDQ3LCAxNjMsIDQ5LCA1MCwgNTIsIDQ3LCAxNjMsIDk2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCAKLSAgICA4NiwgNTMsIDIzOSwgMTIwLCAxNDIsIDE2MywgOTYsIDUyLCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCA4NiwgNTIsIDUzLCAKLSAgICAyMzksIDEyMCwgMTQyLCAxNjMsIDg2LCAyMTEsIDE3MSwgNDcsIDU4LCA1OSwgMjQ4LCAzNiwgNTgsIDU5LCAyNDMsIDgyLCAKLSAgICA1OCwgNTksIDI0MiwgMjEwLCA1OCwgNTksIDI0MywgODEsIDU4LCA1OSwgMjQyLCAxNDYsIDU4LCA1OSwgMjQzLCAxNywgNTgsIAotICAgIDU5LCAyNDIsIDIwOSwgNTgsIDU5LCAyNDMsIDgwLCA1OCwgNTksIDI0MiwgMTE0LCA1OCwgNTksIDI0MiwgMjQxLCA1OCwgCi0gICAgNTksIDI0MiwgMTc3LCA1OCwgNTksIDI0MywgNDgsIDU4LCA1OSwgMjQyLCAxNDUsIDU4LCA1OSwgMjQzLCAxNiwgNTgsIDU5LCAKLSAgICAyNDIsIDIwOCwgNTgsIDU5LCAyNDMsIDc5LCA1OCwgNTksIDI0MiwgOTgsIDU4LCA1OSwgMjQyLCAyMjUsIDU4LCA1OSwgCi0gICAgMjQyLCAxNjEsIDU4LCA1OSwgMjQzLCAzMiwgNTgsIDU5LCAyNDIsIDEyOSwgNTgsIDU5LCAyNDMsIDAsIDU4LCA1OSwgMjQyLCAKLSAgICAxOTIsIDU4LCA1OSwgMjQzLCA2MywgNTgsIDU5LCAyNDIsIDExMywgNTgsIDU5LCAyNDIsIDI0MCwgNTgsIDU5LCAyNDIsIAotICAgIDE3NiwgNTgsIDU5LCAyNDMsIDQ3LCA1OCwgNTksIDI0MiwgMTQ0LCA1OCwgNTksIDI0MywgMTUsIDU4LCA1OSwgMjQyLCAKLSAgICAyMDcsIDU4LCA1OSwgMjQzLCA3OCwgNTgsIDU5LCAyNDIsIDkwLCA1OCwgNTksIDI0MiwgMjE3LCA1OCwgNTksIDI0MiwgCi0gICAgMTUzLCA1OCwgNTksIDI0MywgMjQsIDU4LCA1OSwgMjQyLCAxMjEsIDU4LCA1OSwgMjQyLCAyNDgsIDU4LCA1OSwgMjQyLCAKLSAgICAxODQsIDU4LCA1OSwgMjQzLCA1NSwgNTgsIDU5LCAyNDIsIDEwNSwgNTgsIDU5LCAyNDIsIDIzMiwgNTgsIDU5LCAyNDIsIAotICAgIDE2OCwgNTgsIDU5LCAyNDMsIDM5LCA1OCwgNTksIDI0MiwgMTM2LCA1OCwgNTksIDI0MywgNywgNTgsIDU5LCAyNDIsIDE5OSwgCi0gICAgNTgsIDU5LCAyNDMsIDcwLCA1OCwgNTksIDI0MiwgOTcsIDU4LCA1OSwgMjQyLCAyMjQsIDU4LCA1OSwgMjQyLCAxNjAsIDU4LCAKLSAgICA1OSwgMjQzLCAzMSwgNTgsIDU5LCAyNDIsIDEyOCwgNTgsIDU5LCAyNDIsIDI1NSwgNTgsIDU5LCAyNDIsIDE5MSwgNTgsIAotICAgIDU5LCAyNDMsIDYyLCA1OCwgNTksIDI0MiwgMTEyLCA1OCwgNTksIDI0MiwgMjM5LCA1OCwgNTksIDI0MiwgMTc1LCA1OCwgCi0gICAgNTksIDI0MywgNDYsIDU4LCA1OSwgMjQyLCAxNDMsIDU4LCA1OSwgMjQzLCAxNCwgNTgsIDU5LCAyNDIsIDIwNiwgNTgsIDU5LCAKLSAgICAyNDMsIDc3LCA1OCwgNTksIDI0MiwgODYsIDU4LCA1OSwgMjQyLCAyMTMsIDU4LCA1OSwgMjQyLCAxNDksIDU4LCA1OSwgCi0gICAgMjQzLCAyMCwgNTgsIDU5LCAyNDIsIDExNywgNTgsIDU5LCAyNDIsIDI0NCwgNTgsIDU5LCAyNDIsIDE4MCwgNTgsIDU5LCAKLSAgICAyNDMsIDUxLCA1OCwgNTksIDI0MiwgMTAxLCA1OCwgNTksIDI0MiwgMjI4LCA1OCwgNTksIDI0MiwgMTY0LCA1OCwgNTksIAotICAgIDI0MywgMzUsIDU4LCA1OSwgMjQyLCAxMzIsIDU4LCA1OSwgMjQzLCAzLCA1OCwgNTksIDI0MiwgMTk1LCA1OCwgNTksIDI0MywgCi0gICAgNjYsIDU4LCA1OSwgMjQyLCA5MywgNTgsIDU5LCAyNDIsIDIyMCwgNTgsIDU5LCAyNDIsIDE1NiwgNTgsIDU5LCAyNDMsIDI3LCAKLSAgICA1OCwgNTksIDI0MiwgMTI0LCA1OCwgNTksIDI0MiwgMjUxLCA1OCwgNTksIDI0MiwgMTg3LCA1OCwgNTksIDI0MywgNTgsIAotICAgIDU4LCA1OSwgMjQyLCAxMDgsIDU4LCA1OSwgMjQyLCAyMzUsIDU4LCA1OSwgMjQyLCAxNzEsIDU4LCA1OSwgMjQzLCA0MiwgCi0gICAgNTgsIDU5LCAyNDIsIDEzOSwgNTgsIDU5LCAyNDMsIDEwLCA1OCwgNTksIDI0MiwgMjAyLCA1OCwgNTksIDI0MywgNzMsIDU4LCAKLSAgICA1OSwgMjQyLCA4OSwgNTgsIDU5LCAyNDIsIDIxNiwgNTgsIDU5LCAyNDIsIDE1MiwgNTgsIDU5LCAyNDMsIDIzLCA1OCwgNTksIAotICAgIDI0MiwgMTIwLCA1OCwgNTksIDI0MiwgMjQ3LCA1OCwgNTksIDI0MiwgMTgzLCA1OCwgNTksIDI0MywgNTQsIDU4LCA1OSwgCi0gICAgMjQyLCAxMDQsIDU4LCA1OSwgMjQyLCAyMzEsIDU4LCA1OSwgMjQyLCAxNjcsIDU4LCA1OSwgMjQzLCAzOCwgNTgsIDU5LCAKLSAgICAyNDIsIDEzNSwgNTgsIDU5LCAyNDMsIDYsIDU4LCA1OSwgMjQyLCAxOTgsIDU4LCA1OSwgMjQzLCA2OSwgNTgsIDU5LCAyNDIsIAotICAgIDk2LCA1OCwgNTksIDI0MiwgMjIzLCA1OCwgNTksIDI0MiwgMTU5LCA1OCwgNTksIDI0MywgMzAsIDU4LCA1OSwgMjQyLCAKLSAgICAxMjcsIDU4LCA1OSwgMjQyLCAyNTQsIDU4LCA1OSwgMjQyLCAxOTAsIDU4LCA1OSwgMjQzLCA2MSwgNTgsIDU5LCAyNDIsIAotICAgIDExMSwgNTgsIDU5LCAyNDIsIDIzOCwgNTgsIDU5LCAyNDIsIDE3NCwgNTgsIDU5LCAyNDMsIDQ1LCA1OCwgNTksIDI0MiwgCi0gICAgMTQyLCA1OCwgNTksIDI0MywgMTMsIDU4LCA1OSwgMjQyLCAyMDUsIDU4LCA1OSwgMjQzLCA3NiwgNTgsIDU5LCAyNDIsIDg0LCAKLSAgICA1OCwgNTksIDI0MiwgMjExLCA1OCwgNTksIDI0MiwgMTQ3LCA1OCwgNTksIDI0MywgMTgsIDU4LCA1OSwgMjQyLCAxMTUsIAotICAgIDU4LCA1OSwgMjQyLCAyNDIsIDU4LCA1OSwgMjQyLCAxNzgsIDU4LCA1OSwgMjQzLCA0OSwgNTgsIDU5LCAyNDIsIDk5LCA1OCwgCi0gICAgNTksIDI0MiwgMjI2LCA1OCwgNTksIDI0MiwgMTYyLCA1OCwgNTksIDI0MywgMzMsIDU4LCA1OSwgMjQyLCAxMzAsIDU4LCAKLSAgICA1OSwgMjQzLCAxLCA1OCwgNTksIDI0MiwgMTkzLCA1OCwgNTksIDI0MywgNjQsIDU4LCA1OSwgMjQyLCA5MSwgNTgsIDU5LCAKLSAgICAyNDIsIDIxOCwgNTgsIDU5LCAyNDIsIDE1NCwgNTgsIDU5LCAyNDMsIDI1LCA1OCwgNTksIDI0MiwgMTIyLCA1OCwgNTksIAotICAgIDI0MiwgMjQ5LCA1OCwgNTksIDI0MiwgMTg1LCA1OCwgNTksIDI0MywgNTYsIDU4LCA1OSwgMjQyLCAxMDYsIDU4LCA1OSwgCi0gICAgMjQyLCAyMzMsIDU4LCA1OSwgMjQyLCAxNjksIDU4LCA1OSwgMjQzLCA0MCwgNTgsIDU5LCAyNDIsIDEzNywgNTgsIDU5LCAKLSAgICAyNDMsIDgsIDU4LCA1OSwgMjQyLCAyMDAsIDU4LCA1OSwgMjQzLCA3MSwgNTgsIDU5LCAyNDIsIDg3LCA1OCwgNTksIDI0MiwgCi0gICAgMjE0LCA1OCwgNTksIDI0MiwgMTUwLCA1OCwgNTksIDI0MywgMjEsIDU4LCA1OSwgMjQyLCAxMTgsIDU4LCA1OSwgMjQyLCAKLSAgICAyNDUsIDU4LCA1OSwgMjQyLCAxODEsIDU4LCA1OSwgMjQzLCA1MiwgNTgsIDU5LCAyNDIsIDEwMiwgNTgsIDU5LCAyNDIsIAotICAgIDIyOSwgNTgsIDU5LCAyNDIsIDE2NSwgNTgsIDU5LCAyNDMsIDM2LCA1OCwgNTksIDI0MiwgMTMzLCA1OCwgNTksIDI0MywgNCwgCi0gICAgNTgsIDU5LCAyNDIsIDE5NiwgNTgsIDU5LCAyNDMsIDY3LCA1OCwgNTksIDI0MiwgOTQsIDU4LCA1OSwgMjQyLCAyMjEsIDU4LCAKLSAgICA1OSwgMjQyLCAxNTcsIDU4LCA1OSwgMjQzLCAyOCwgNTgsIDU5LCAyNDIsIDEyNSwgNTgsIDU5LCAyNDIsIDI1MiwgNTgsIAotICAgIDU5LCAyNDIsIDE4OCwgNTgsIDU5LCAyNDMsIDU5LCA1OCwgNTksIDI0MiwgMTA5LCA1OCwgNTksIDI0MiwgMjM2LCA1OCwgCi0gICAgNTksIDI0MiwgMTcyLCA1OCwgNTksIDI0MywgNDMsIDU4LCA1OSwgMjQyLCAxNDAsIDU4LCA1OSwgMjQzLCAxMSwgNTgsIDU5LCAKLSAgICAyNDIsIDIwMywgNTgsIDU5LCAyNDMsIDc0LCA1OCwgNTksIDI0MiwgODUsIDU4LCA1OSwgMjQyLCAyMTIsIDU4LCA1OSwgCi0gICAgMjQyLCAxNDgsIDU4LCA1OSwgMjQzLCAxOSwgNTgsIDU5LCAyNDIsIDExNiwgNTgsIDU5LCAyNDIsIDI0MywgNTgsIDU5LCAKLSAgICAyNDIsIDE3OSwgNTgsIDU5LCAyNDMsIDUwLCA1OCwgNTksIDI0MiwgMTAwLCA1OCwgNTksIDI0MiwgMjI3LCA1OCwgNTksIAotICAgIDI0MiwgMTYzLCA1OCwgNTksIDI0MywgMzQsIDU4LCA1OSwgMjQyLCAxMzEsIDU4LCA1OSwgMjQzLCAyLCA1OCwgNTksIDI0MiwgCi0gICAgMTk0LCA1OCwgNTksIDI0MywgNjUsIDU4LCA1OSwgMjQyLCA5MiwgNTgsIDU5LCAyNDIsIDIxOSwgNTgsIDU5LCAyNDIsIAotICAgIDE1NSwgNTgsIDU5LCAyNDMsIDI2LCA1OCwgNTksIDI0MiwgMTIzLCA1OCwgNTksIDI0MiwgMjUwLCA1OCwgNTksIDI0MiwgCi0gICAgMTg2LCA1OCwgNTksIDI0MywgNTcsIDU4LCA1OSwgMjQyLCAxMDcsIDU4LCA1OSwgMjQyLCAyMzQsIDU4LCA1OSwgMjQyLCAKLSAgICAxNzAsIDU4LCA1OSwgMjQzLCA0MSwgNTgsIDU5LCAyNDIsIDEzOCwgNTgsIDU5LCAyNDMsIDksIDU4LCA1OSwgMjQyLCAyMDEsIAotICAgIDU4LCA1OSwgMjQzLCA3MiwgNTgsIDU5LCAyNDIsIDg4LCA1OCwgNTksIDI0MiwgMjE1LCA1OCwgNTksIDI0MiwgMTUxLCA1OCwgCi0gICAgNTksIDI0MywgMjIsIDU4LCA1OSwgMjQyLCAxMTksIDU4LCA1OSwgMjQyLCAyNDYsIDU4LCA1OSwgMjQyLCAxODIsIDU4LCAKLSAgICA1OSwgMjQzLCA1MywgNTgsIDU5LCAyNDIsIDEwMywgNTgsIDU5LCAyNDIsIDIzMCwgNTgsIDU5LCAyNDIsIDE2NiwgNTgsIAotICAgIDU5LCAyNDMsIDM3LCA1OCwgNTksIDI0MiwgMTM0LCA1OCwgNTksIDI0MywgNSwgNTgsIDU5LCAyNDIsIDE5NywgNTgsIDU5LCAKLSAgICAyNDMsIDY4LCA1OCwgNTksIDI0MiwgOTUsIDU4LCA1OSwgMjQyLCAyMjIsIDU4LCA1OSwgMjQyLCAxNTgsIDU4LCA1OSwgCi0gICAgMjQzLCAyOSwgNTgsIDU5LCAyNDIsIDEyNiwgNTgsIDU5LCAyNDIsIDI1MywgNTgsIDU5LCAyNDIsIDE4OSwgNTgsIDU5LCAKLSAgICAyNDMsIDYwLCA1OCwgNTksIDI0MiwgMTEwLCA1OCwgNTksIDI0MiwgMjM3LCA1OCwgNTksIDI0MiwgMTczLCA1OCwgNTksIAotICAgIDI0MywgNDQsIDU4LCA1OSwgMjQyLCAxNDEsIDU4LCA1OSwgMjQzLCAxMiwgNTgsIDU5LCAyNDIsIDIwNCwgNTgsIDU5LCAKLSAgICAyNDMsIDc1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDUyLCA4MCwgOTUsIAotICAgIDk2LCA1MiwgNTMsIDMsIDgwLCA5NSwgODYsIDUyLCA1MywgMywgODAsIDk1LCA0OSwgNTAsIDUyLCA1MywgMywgODAsIDk1LCAKLSAgICA4NiwgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgMTQyLCA5NiwgNTIsIDUzLCAyMzksIDEyMCwgMTQyLCA4NiwgNTIsIDUzLCAKLSAgICAyMzksIDEyMCwgMTQyLCAxODMsIDUzLCAzLCAyMzYsIDEwNiwgOTUsIDE3NywgNTMsIDMsIDIzNiwgMTA2LCA5NSwgMTc3LCAKLSAgICAyMDgsIDcwLCA0NywgMTgzLCAyMDgsIDcwLCA0NywgOTYsIDUyLCAyNDQsIDE0NSwgNDcsIDg2LCA1MiwgMjQ0LCAxNDUsIAotICAgIDQ3LCA5NiwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgMjA3LCAxMzQsIAotICAgIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgODYsIDUzLCAzLCAyNDIsIDgzLCAyMTEsIDc3LCAxNzcsIDUzLCAyMDgsIDE3MywgCi0gICAgMTQyLCAxODMsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDg2LCA1MywgMywgCi0gICAgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ4LCA4NiwgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA4NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIAotICAgIDI1MCwgOTYsIDg2LCAyNTAsIDk2LCA5NiwgNTIsIDI1MCwgOTYsIDg2LCA1MiwgMjUwLCA5NiwgOTYsIDUzLCAyMDgsIDE3MywgCi0gICAgNjIsIDI0MywgMjIxLCA4NiwgNTMsIDIwOCwgMTczLCA2MiwgMjQzLCAyMjEsIDk2LCA1MywgMjM5LCAxMjAsIDI0OCwgMjMxLCAKLSAgICAyMDgsIDE3MywgNjIsIDI0MywgMjIxLCA4NiwgNTMsIDIzOSwgMTIwLCAyNDgsIDIzMSwgMjA4LCAxNzMsIDYyLCAyNDMsIAotICAgIDIyMSwgMTUzLCAyMDQsIDQ2LCAyNSwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgMjUsIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCA0NywgMTUzLCAyMDQsIDQ2LCA1MywgMywgMTEzLCAxNTMsIDI0MSwgMTc2LCA1MywgMywgMTEzLCAKLSAgICAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAzLCAxMTMsIDIxMSwgMjM4LCAyMDQsIDQ2LCA1MywgMywgMTEzLCAxNTMsIDIwNCwgCi0gICAgNDYsIDUzLCAyNSwgMTUzLCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNSwgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA1MywgMjUsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIAotICAgIDUzLCAyNSwgMTUzLCAyMDQsIDQ2LCA0NywgMjE1LCAyNDUsIDI0MywgMjI4LCAyNDUsIDEyNCwgMjQwLCA4NCwgMjQzLCAKLSAgICAyMjcsIDI0MCwgODQsIDI0MywgMjI4LCAyNDUsIDEyNCwgMjE1LCAyNDUsIDI0MywgMjI3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDUzLCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDE1MywgMjQxLCAxNzYsIDUzLCAyNDUsIDEyNCwgMjExLCAyMzgsIAotICAgIDI0MSwgMTc2LCA0NywgMjQwLCA4NCwgMjQzLCAyMjgsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMjE1LCAyNDUsIAotICAgIDI0MywgMjI4LCAyNDUsIDEyNCwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI0NSwgMTI0LCAKLSAgICAxNTMsIDIwNCwgNDYsIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAyNDUsIDEyNCwgMTUzLCAyNDEsIDE3NiwgNDcsIDIwNCwgNzYsIAotICAgIDUzLCAyMTgsIDU5LCAyNDMsIDE2NCwgMjE2LCAxNiwgNTMsIDIxOCwgNTksIDg2LCAyMDksIDg0LCAyNDUsIDg0LCAyMDYsIAotICAgIDIxMiwgNTMsIDIxOCwgNTksIDg2LCAyMDksIDg0LCAyNDUsIDg0LCAyNDIsIDY4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIAotICAgIDg0LCAyNDUsIDg0LCAyMjcsIDIxMiwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMjQ1LCA4NCwgMjE2LCA1LCAyMTYsIAotICAgIDgsIDI1MCwgMTI5LCAyNDYsIDE4LCA0NywgMjI3LCAyMTUsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDIwOCwgMTQ1LCAKLSAgICAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyNDcsIDI0OCwgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjA4LCAxNDUsIDI1MCwgCi0gICAgMTI5LCAyNDYsIDE4LCA1MywgMywgMjI0LCAxMDIsIDIwOCwgMTQ1LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDUzLCAzLCAyMTgsIAotICAgIDc2LCAyMjYsIDI1MSwgNTAsIDIxMywgMTQ1LCAyNDYsIDE4LCA0NywgMjI2LCAyNTEsIDQ5LCAyMTMsIDE0NSwgMjUwLCAKLSAgICAxOTQsIDQ3LCAyNTAsIDE5NCwgMjQ2LCAxNiwgMjQ2LCA2MiwgNDcsIDI0NiwgMTgsIDI0NiwgMTYsIDI0NiwgNjIsIDQ3LCAKLSAgICA4NiwgNTMsIDg3LCAyMTIsIDIyOCwgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyMTIsIDIyOCwgODYsIDQ3LCAyMTIsIDIyOCwgODYsIAotICAgIDUzLCA4NywgOTYsIDQ3LCA4NiwgNTMsIDMsIDkxLCA1NiwgOTYsIDUzLCAzLCA5MSwgNTYsIDg2LCA1MywgMjA5LCAyNSwgCi0gICAgMjAzLCAxOTYsIDQ5LCA1MCwgNTMsIDIwOSwgMjUsIDUsIDI0NiwgNjEsIDE3NywgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgCi0gICAgNSwgMjQ2LCA2MSwgNDksIDE1MCwgMTEyLCA1MCwgMTUwLCAxMjEsIDIzNywgODYsIDQ5LCAxNTAsIDEyMSwgNTAsIDE1MCwgCi0gICAgMTEyLCAyMzcsIDg2LCAxMTIsIDE1MCwgNTAsIDEyMSwgMTUwLCA0OSwgMjM3LCA4NiwgMTEyLCAxNTAsIDQ5LCAxMjEsIAotICAgIDE1MCwgNTAsIDIzNywgODYsIDQ5LCAxNTAsIDExMiwgNTAsIDE1MCwgMTEyLCAyMzcsIDg2LCAxMTIsIDE1MCwgNTAsIDEyMSwgCi0gICAgMTUwLCA1MCwgMjM3LCA4NiwgNDksIDE1MCwgMTIxLCA1MCwgMTUwLCAxMjEsIDIzNywgODYsIDExMiwgMTUwLCA0OSwgMTIxLCAKLSAgICAxNTAsIDQ5LCAyMzcsIDg2LCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDIwOCwgMTczLCAxNDIsIDg2LCAyMzcsIDg3LCAKLSAgICAzLCAxNTAsIDExMiwgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMDgsIDE3MywgMTQyLCAxODMsIAotICAgIDIzNywgODcsIDMsIDE1MCwgNTAsIDIwOCwgMTczLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjA4LCAxNzMsIAotICAgIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIAotICAgIDIwOCwgMTczLCAxNDIsIDE4MywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjA4LCAxNzMsIDE0MiwgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMTEyLCAyMzksIDEyMCwgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDIzOSwgMTIwLCAxNDIsIDE3NywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA1MCwgMjM5LCAxMjAsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMzksIDEyMCwgCi0gICAgMTQyLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIzOSwgMTIwLCAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgCi0gICAgMjM5LCAxMjAsIDE0MiwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyMzksIDEyMCwgMTQyLCAxODMsIDIzNywgODcsIDMsIAotICAgIDE1MCwgNDksIDIzOSwgMTIwLCAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDI0MiwgNzAsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE3NywgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyMTYsIDE2LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyNDIsIDcwLCAxODMsIAotICAgIDIzNywgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxODMsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgOTYsIDIzNywgCi0gICAgODcsIDMsIDE1MCwgMTEyLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMjQsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDEyMSwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNzAsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDk2LCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDIwNiwgMjI0LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDg3LCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAyNDIsIDcwLCA5NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCAxNjMsIDI0NCwgMTQ0LCA5NiwgMjM3LCA4NywgCi0gICAgMywgMTUwLCAxMjEsIDI0OCwgMTI2LCAxNjMsIDI0NCwgMTQ0LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMTIsIDg3LCAxNjMsIAotICAgIDI0NCwgMTQ0LCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDI0OCwgMTI2LCAxNjMsIDI0NCwgMTQ0LCAxNzcsIDIzNywgCi0gICAgODcsIDMsIDE1MCwgNDksIDI0OCwgMTEwLCAxODMsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgMTgzLCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDQ5LCAyNDgsIDExMCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDIxNiwgMTYsIDUwLCA1MiwgNTMsIDMsIDIxNSwgCi0gICAgMTg5LCAyMzcsIDY0LCAyNDEsIDM1LCAyLCA4NywgODYsIDQ3LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCA4NiwgNDcsIDk2LCAKLSAgICA1MywgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgODYsIDUzLCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCA4NiwgNTMsIDg3LCAKLSAgICAyNTEsIDcsIDE1NiwgMTM1LCAyMjcsIDE3OSwgODcsIDk2LCA0NywgOTYsIDUzLCAyMDksIDI1LCAyMjcsIDE3OCwgMjM3LCAKLSAgICAyNDcsIDg3LCA4NiwgNDcsIDIxMCwgMjQ1LCA4NywgODYsIDQ3LCA5NiwgNTMsIDIwOSwgMjUsIDIxMCwgMjQ0LCAyMTAsIAotICAgIDE5OCwgODcsIDk2LCA0NywgNDksIDIzOSwgMjQ0LCAyMDksIDI0OCwgNTAsIDIzOSwgMjQ0LCAyMDksIDI0OCwgMTEyLCAKLSAgICAyMzksIDI0NCwgMjA5LCAyNDgsIDEyMSwgMjM5LCAyNDQsIDIwOSwgMjQ4LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDI0NCwgCi0gICAgNDMsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjExLCAxODgsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjA3LCAxMjEsIDI0NSwgMjQyLCAKLSAgICA0OSwgNjEsIDI0NSwgOTMsIDE1NSwgNTAsIDYxLCAyNDUsIDkzLCAxNTUsIDQ5LCA2MSwgMjE5LCA3NiwgNTAsIDYxLCAyMTksIAotICAgIDc2LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDQ5LCAyMzEsIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNTAsIDIzMSwgCi0gICAgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA0OSwgMjQ4LCA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDUwLCAKLSAgICAyNDgsIDY1LCAxNTUsIDQ5LCA1MSwgMjQ3LCAyMjcsIDMsIDIwNiwgMjQ2LCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMDYsIAotICAgIDI0NiwgNDksIDUxLCAyNDcsIDIyNywgMywgMjA4LCAyNTUsIDIzMSwgNTAsIDIwOCwgMTQ1LCAyNDUsIDE2NSwgNTAsIDUxLCAKLSAgICAyNDcsIDIyNywgMywgMjA4LCAyNTUsIDIzMSwgNTAsIDI0NywgMjQ4LCAyNDUsIDE2NSwgNDksIDUxLCAyNDcsIDIyNywgMywgCi0gICAgMjA4LCAyNTUsIDIzMSwgNTAsIDI0NywgMjQ4LCAyNDUsIDE2NSwgNTAsIDUxLCAyNDcsIDIyNywgMywgMjA4LCAyNTUsIAotICAgIDIzMSwgNTAsIDIwOCwgMTQ1LCAyNDUsIDE2NSwgNDksIDI1MCwgMjE4LCAyNDcsIDIyNywgMywgMjQzLCA4NSwgNTAsIDI1MCwgCi0gICAgMjE4LCAyNDcsIDIyNywgMywgMjQzLCA4NSwgNDksIDI1MCwgMTI5LCAyMjcsIDE3OSwgMTU1LCA1MCwgMjUwLCAxMjksIAotICAgIDIzNywgMjQ3LCAxNTUsIDUyLCA0OSwgMjUwLCAxMjksIDIzNywgMjQ3LCAxNTUsIDUyLCA1MCwgMjUwLCAxMjksIDIyNywgCi0gICAgMTc5LCAxNTUsIDQ5LCA2MiwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDYyLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAKLSAgICAyNDIsIDgzLCAyNDAsIDQwLCA4MCwgMjAyLCAzMCwgMjI3LCAxMTQsIDIyNSwgMTcsIDI1MCwgMjE4LCAyMjAsIDEsIDIyNywgCi0gICAgMjIyLCA1MCwgMjUwLCAyMTgsIDIwNiwgNjksIDMsIDIxMSwgMTc3LCAyMjUsIDE3LCA1MCwgMjUwLCAyMTgsIDMsIDI0MywgCi0gICAgODUsIDI1MCwgMjE4LCAzLCAyMTUsIDk0LCAyMzEsIDYsIDI1MSwgMTI2LCAyNTAsIDIxNywgMjExLCAyMDgsIDI1MCwgMjE4LCAKLSAgICAyMjAsIDEsIDIyNywgMjIyLCAyMTEsIDIwOCwgMjUwLCAyMTgsIDIyMCwgMSwgMjA2LCAyMjQsIDIwNywgMTc0LCAyNTAsIAotICAgIDIxNywgMjE2LCA3MywgMjUwLCAyMTcsIDI1MCwgMjE4LCAzLCAyMDYsIDI0NiwgMjE2LCA3MywgMjUwLCAyMTgsIDMsIDIwNiwgCi0gICAgMjQ2LCAyMjAsIDg5LCAyNTAsIDIxOCwgMjIwLCAxLCAyMDYsIDIyNCwgMjIwLCA4OSwgMjUwLCAyMTgsIDIyMCwgMSwgMjQyLCAKLSAgICA3MCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAKLSAgICAxMTIsIDI1LCAyMTYsIDE2LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgCi0gICAgNTMsIDIxOCwgNTksIDExMiwgMjUsIDIyNywgMjIyLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCAKLSAgICA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDEyMSwgMjUsIDIxNiwgMTYsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIAotICAgIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgMTIxLCAyNSwgMjI3LCAyMjIsIDIyNSwgMTcsIDI1MCwgCi0gICAgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgNTAsIDI1LCAyMDYsIDIyNCwgCi0gICAgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA0OSwgCi0gICAgMjUsIDIwNiwgMjI0LCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIAotICAgIDIxOCwgNTksIDUwLCAyNSwgMjQyLCA3MCwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIAotICAgIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA0OSwgMjUsIDI0MiwgNzAsIDIxNiwgNzMsIDI0MSwgOTQsIDIxMywgMTE3LCAyNDEsIAotICAgIDk0LCAyMTMsIDExOCwgMywgMjE5LCAyMDMsIDI0MSwgOTQsIDIxMywgMTE4LCAzLCA1LCAyNDYsIDYyLCA1NSwgMjQxLCA5NCwgCi0gICAgMjEzLCAxMTgsIDMsIDUwLCA1MywgNTUsIDI0MSwgOTQsIDIxMywgMTE4LCAzLCA0OSwgNTMsIDU1LCAyNDYsIDYyLCAzLCAKLSAgICAyMzYsIDEwNiwgMTQyLCA0MywgODAsIDE0MiwgNDMsIDIxOSwgODEsIDQzLCAyMTYsIDc0LCAyMTIsIDAsIDQzLCAyMTgsIAotICAgIDIzMywgMjQ2LCA2MiwgMjQzLCAxNDIsIDI0NywgMTM3LCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDI1LCAyMDgsIDE0NSwgMTYyLCAKLSAgICAyNDMsIDE0MiwgMjQ3LCAxMzcsIDgwLCAxNDIsIDI0NiwgNjIsIDMsIDIxMCwgMjAwLCAyMDMsIDE5NiwgNDMsIDI1MCwgCi0gICAgMTkyLCAyNDMsIDEzNywgNTQsIDExMiwgNTMsIDIwOSwgMjUsIDI0NiwgNjEsIDQzLCA2MSwgMjQ3LCAxNzcsIDQzLCAyNDcsIAotICAgIDE3NywgNDMsIDIyNywgMTc4LCA0MywgMjM3LCAyNDYsIDI0NiwgNjIsIDMsIDUsIDI0NiwgNjIsIDIwOCwgMTczLCAyMDksIAotICAgIDkzLCAyMTYsIDE2LCAyNDYsIDYyLCAzLCAxMjAsIDIzNiwgMTA2LCAyMTEsIDIwLCAyMDgsIDE3MywgMjA5LCA5MywgMjE2LCAKLSAgICAxNiwgMTAzLCAyMTUsIDI0NSwgMjQzLCAyMjgsIDIxMiwgNTcsIDEwMywgMjQwLCA4NCwgMjQzLCAyMjgsIDIxMiwgNTcsIAotICAgIDEwMywgMjUwLCA1OSwgMTAzLCA1LCAyNDYsIDYxLCAxMDMsIDIxMSwgMTc3LCAxMjAsIDIzMCwgOTgsIDIxMSwgMTc1LCAKLSAgICAyMDgsIDg2LCAzLCA3MCwgNTUsIDIwOCwgODYsIDMsIDIwNiwgMjQ2LCAyMTUsIDk0LCAyMzEsIDUwLCAyMDgsIDg1LCAyMDgsIAotICAgIDg2LCAzLCAyMTMsIDEyNCwgMjUwLCA1MCwgMjQ3LCAyNDcsIDUwLCAyMDgsIDg2LCA4NywgNDksIDIwOCwgODUsIDQ5LCAKLSAgICAyMDgsIDg2LCAyNDgsIDExMCwgODAsIDE0MiwgODAsIDI0OCwgMjMxLCAyNDgsIDExMCwgNTAsIDIwOCwgODUsIDI0NywgCi0gICAgMjM1LCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDcsIDIzNSwgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjIsIDI0NywgMjM0LCAKLSAgICAyMywgMywgNDksIDE2MiwgMjQ4LCA0MywgMjMsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYxLCAyMzYsIDQwLCA2MiwgMjM2LCAKLSAgICA0MCwgNDksIDIwNCwgMjEsIDI0MCwgNDAsIDUwLCAyMDQsIDIxLCAyNDAsIDQwLCA0OSwgNTIsIDIwNCwgMjEsIDI0MCwgNDAsIAotICAgIDUwLCA1MiwgMjA0LCAyMSwgMjQwLCA0MCwgMjMxLCA0MiwgMjMxLCAyNywgMjA4LCAyNTEsIDExNSwgMjMxLCAyNywgMjMxLCAKLSAgICAyOCwgMjIyLCAyMzQsIDMsIDgwLCAxNDIsIDI0MiwgNzcsIDIyMywgMjI4LCA1MSwgMywgMjQ1LCAxODcsIDIxOSwgMjA4LCAKLSAgICAyMzEsIDM5LCAyNTAsIDgxLCAyMTIsIDE5MywgMjE3LCAyMjQsIDI0MSwgMzUsIDIsIDI1LCAyMTIsIDU5LCAyMTksIDgxLCAKLSAgICAyNDEsIDM1LCAyLCAyNSwgMjEyLCA1OSwgMjE5LCA4MiwgMywgMjA4LCAyMjgsIDU1LCAyMzUsIDE1NCwgMjA4LCAxNzMsIAotICAgIDI1LCAyMTIsIDU5LCAyMTksIDgxLCAyMzgsIDQ4LCAyMTEsIDkzLCAyMDksIDgxLCAyNDIsIDY5LCAyMDgsIDg2LCAzLCA0OSwgCi0gICAgMTYyLCAyNDgsIDQzLCAyNDIsIDY5LCAyMDgsIDg2LCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MiwgMjQzLCAyMjIsIDMsIAotICAgIDEyMSwgNDcsIDYyLCAyMjYsIDI0NiwgNjEsIDI0NiwgNjIsIDMsIDEyMSwgNDcsIDYyLCAyNDYsIDYyLCAzLCAxMjEsIDQ3LCAKLSAgICAyNDEsIDIwLCA2MSwgMjExLCAxNzcsIDI0MSwgMjAsIDYyLCAyMTEsIDE3NywgMjQxLCAyMCwgNjEsIDI0MywgMjIxLCAyNDEsIAotICAgIDIwLCA2MiwgMjQzLCAyMjEsIDI0MSwgMjAsIDYxLCAyNDYsIDYxLCAyNDEsIDIwLCA2MiwgMjQ2LCA2MSwgMjE1LCAxMzQsIAotICAgIDIxNiwgNzQsIDIxMiwgMSwgMjE5LCAyNTQsIDIxMiwgMSwgMywgMjE5LCAyMDMsIDIxNiwgNzQsIDIxMiwgMSwgMywgMjM2LCAKLSAgICAxMDYsIDk1LCAyNDgsIDczLCAyMTIsIDAsIDI0OCwgNzMsIDIxNiwgNzQsIDIxMiwgMCwgNTIsIDIxOCwgNzYsIDIwOCwgNzAsIAotICAgIDIxOCwgNzYsIDIyNywgMjE3LCAyNDUsIDg2LCAyNTAsIDIxOCwgMTU1LCAyMTYsIDExLCAyNDUsIDg2LCAyNTAsIDIxOCwgCi0gICAgMTU1LCAyMDgsIDIxMiwgMjI0LCAxMDAsIDIyMywgMTYyLCA0MywgNzAsIDIxOSwgMjU0LCAyMjMsIDE2MiwgNDMsIDkxLCAKLSAgICAyMTksIDI1NCwgMjIzLCAxNjIsIDQzLCAyMywgMjE5LCAyNTQsIDIyMywgMTYyLCAyMDYsIDIzOCwgMjE5LCAyNTUsIDMsIAotICAgIDI0MywgODUsIDIyMywgMTYyLCAyMDYsIDIzOCwgMjE5LCAyNTUsIDMsIDIxOCwgNzYsIDIyMywgMTYyLCA1MSwgMjMwLCAKLSAgICAyNDUsIDIxOSwgMjU0LCAyMjMsIDE2MiwgNTEsIDIwNiwgMjM4LCAyMTksIDI1NCwgMTIwLCAyMjcsIDM3LCAyNSwgMjE5LCAKLSAgICAyNTQsIDEyMCwgMjI3LCAzNywgMjE5LCAyNDUsIDIxOSwgMjU0LCAyMjMsIDE2MiwgMjMsIDIxOSwgMjU0LCAyMjQsIDU4LCAKLSAgICAxMjAsIDIxMCwgMjIwLCAyMTAsIDIxOCwgMywgMjMxLCAyLCAyMTcsIDU4LCAyMzEsIDMsIDIxOSwgMjU0LCAyMzksIDI1MiwgCi0gICAgMjE5LCA3MSwgMjMxLCAyLCAyMzEsIDMsIDMsIDUyLCA5NSwgMjMxLCAzLCAyNTAsIDE1LCAzLCAyMTIsIDU3LCAyNDYsIDU0LCAKLSAgICAyMzksIDk5LCAyNTAsIDE5NCwgMjMxLCAwLCAyMjcsIDExNSwgMjMxLCAxLCAzLCAyMTYsIDE0MiwgMjE5LCA1MiwgMjUwLCAKLSAgICAxMDQsIDIxOCwgNTMsIDIyNywgMTE1LCAyMzEsIDEsIDMsIDIxMywgMTQ1LCAyMTksIDUyLCAyNTAsIDEwNCwgMjE4LCA1MywgCi0gICAgMjI3LCAxMTUsIDIzMSwgMSwgMjIxLCAxNjYsIDIzMSwgNDQsIDIwOSwgOTMsIDIxOCwgNTMsIDIzMSwgMywgMjUwLCAxMDQsIAotICAgIDM0LCAyMTgsIDYzLCAyMTksIDI1NCwgMjE3LCA1MiwgMjMxLCAzLCAyMTksIDI1NCwgMjMxLCAzLCAzLCA5NiwgNTMsIDMsIAotICAgIDExMywgMjMxLCAzLCAzLCAyMywgNTQsIDIzMSwgMywgMywgMjMwLCAyNDQsIDIzMSwgMywgMywgMjA2LCAyMzcsIDIzMSwgMywgCi0gICAgMywgMjE5LCAyMDMsIDIzMSwgMywgMywgMjA2LCAyNDYsIDIzMCwgOTksIDIyOCwgOCwgNDksIDIwOCwgODYsIDIxOSwgMjU0LCAKLSAgICAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAyNDUsIDIyMywgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgCi0gICAgMjE4LCAxMTQsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIDIxNywgMjE5LCA5MSwgMiwgMywgNSwgMjQ2LCA2MiwgCi0gICAgNTUsIDkxLCAyLCAzLCAyNDYsIDUzLCAyNTEsIDEzOSwgNTUsIDkxLCAyLCAzLCAyMDgsIDIyOCwgNTUsIDkxLCAyLCAzLCAKLSAgICA3MCwgNTYsIDkxLCAyLCAzLCAyMDgsIDIyOCwgNTYsIDkxLCAyLCAzLCAyMTAsIDI0NiwgMTA4LCA5MSwgMiwgMywgNjIsIAotICAgIDIwOCwgODUsIDIyNCwgMTAzLCAyLCAzLCAyNDUsIDIzNCwgNTUsIDIyNCwgMTAzLCAyLCAzLCA3MCwgNTYsIDIyNCwgMTAzLCAKLSAgICAyLCAzLCAyNDAsIDg0LCAyNDMsIDgzLCAyMjQsIDEwMywgMiwgMywgMjE1LCAyNDUsIDI0MywgODMsIDkxLCAyLCAyMzEsIAotICAgIDUwLCA0OSwgMTYyLCAyNDYsIDYxLCA5MSwgMiwgMjMxLCA1MCwgNTAsIDE2MiwgMjQ2LCA2MSwgMjA2LCA1NCwgMjE5LCAKLSAgICAyNDUsIDI0NSwgMTMxLCAyMTcsIDIyNCwgMjIzLCAyMjQsIDIsIDMsIDcwLCA1NSwgMjIzLCAyMjQsIDIsIDMsIDIwNiwgCi0gICAgMjQ2LCAyMTMsIDE0MiwgMjE3LCAyMjUsIDMsIDI0NywgMjQ4LCAyNDYsIDE1LCAyMTIsIDM0LCAyMTcsIDIyNCwgMjIzLCAKLSAgICAyMjQsIDIsIDIzMSwgNTAsIDQ5LCAxNjIsIDI0NiwgNjEsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCA1MCwgMTYyLCAyNDYsIAotICAgIDYxLCA0MywgMjIzLCAyMjQsIDIsIDMsIDI0NiwgNTMsIDI1MSwgMTM4LCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgNTIsIDI0NiwgCi0gICAgNjEsIDQzLCAyNDMsIDEzNywgNTQsIDkxLCAyLCAyMzEsIDUwLCAyMDgsIDg1LCAyMjQsIDEwMywgMiwgMjMxLCA1MCwgMjA4LCAKLSAgICA4NSwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDIwOCwgODUsIDIzMCwgMjUzLCAyMTcsIDIyNCwgMjE2LCA2LCAyMzAsIDI1MywgCi0gICAgMjE3LCAyMjQsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE2LCAxMTYsIDI0NSwgMjIzLCAyNTAsIDI0NSwgMjE5LCAyNDUsIAotICAgIDI0NSwgMTcxLCAyMzAsIDI0NSwgMywgMjQzLCA4NSwgMjA2LCAyMzgsIDMsIDIyNCwgMTAzLCA1NCwgMjA2LCAyMzgsIDMsIAotICAgIDIxOSwgMjAzLCAyMzAsIDI0NSwgMywgMjE5LCAyMDMsIDIzMCwgMjQ1LCAzLCAyMjcsIDM3LCAyNTAsIDIyNiwgMjA2LCAKLSAgICAyMzgsIDMsIDIyNywgMzcsIDIxOSwgMjQ0LCAyMDYsIDIzOCwgODcsIDIzMCwgMjQ0LCAyMzAsIDI0NSwgODcsIDIwNiwgCi0gICAgMjM3LCAyMDYsIDIzOCwgODcsIDI0OCwgMjMxLCA4NywgMjMwLCAyNDQsIDIzMCwgMjQ1LCA4NywgMjQ4LCAyMzEsIDg3LCAKLSAgICAyMDYsIDIzNywgMjA2LCAyMzgsIDI0OCwgMTEwLCAyNSwgMjMwLCA5OCwgMywgMjA2LCAyMzcsIDIzMCwgMjQ1LCAyNDgsIAotICAgIDExMCwgMjUsIDIzMCwgOTgsIDMsIDIzMCwgMjQ0LCAyNDYsIDE2LCAyMDYsIDIzOCwgMywgMjEzLCAxMjMsIDI0NiwgMTYsIAotICAgIDIzMCwgMjQ1LCAzLCAyMTMsIDEyMywgNTIsIDUxLCAyMzAsIDI0NCwgNTIsIDUxLCAyMDYsIDIzNywgMjQ2LCAxNiwgMjA2LCAKLSAgICAyMzgsIDMsIDIxMywgMTI0LCAyNSwgMjEyLCAzNCwgMjE3LCAyMjQsIDIyNywgMzcsIDI1LCAzLCA3MCwgNTUsIDIyNywgMzcsIAotICAgIDIxOSwgMjQ1LCAzLCA3MCwgNTUsIDUyLCAyMjcsIDM3LCAyNTAsIDIyNiwgNTIsIDIyNywgMzcsIDIxOSwgMjQ0LCAxMjAsIAotICAgIDIzMCwgMjQ2LCAyMjcsIDM3LCAyNTAsIDIyNiwgMTIwLCAyMzAsIDI0NiwgMjI3LCAzNywgMjE5LCAyNDQsIDIxMiwgNDMsIAotICAgIDIyOCwgOCwgMjE5LCAyNDQsIDIxMiwgNDMsIDIyOCwgOCwgMjUwLCAyMjYsIDIyNywgMzcsIDIxOSwgMjQ1LCAyMTksIDIwMCwgCi0gICAgMjI3LCAzNywgMjUwLCAyMjYsIDIyNywgMzcsIDI1LCAzLCAxMDEsIDIxMSwgNzcsIDIyNywgMzcsIDIxOSwgMjQ1LCAzLCAKLSAgICAxMDEsIDIxMSwgNzcsIDIyNywgMzcsIDI1LCAzLCAyMzYsIDEwNiwgMjQ0LCAxNDQsIDIyNywgMzcsIDIxOSwgMjQ1LCAzLCAKLSAgICAyMzYsIDEwNiwgMjQ0LCAxNDQsIDIyNywgMzcsIDI1LCAzLCA1MiwgMjE5LCAyMDMsIDIyNywgMzcsIDI1LCAzLCAyMDYsIAotICAgIDI0NiwgMjI3LCAzNywgMjUsIDMsIDUyLCAyMDYsIDI0NiwgNSwgMjA2LCA1MSwgMywgMjA2LCAyNDYsIDIyNywgMzcsIDIxOSwgCi0gICAgMjQ1LCAzLCA1MiwgMjE5LCAyMDMsIDIyNywgMzcsIDIxOSwgMjQ1LCAzLCA1MiwgMjA2LCAyNDYsIDIwMiwgMTYwLCAyMjEsIAotICAgIDE2NCwgMjQzLCA5NCwgMjUwLCAxODQsIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE2LCAxNzksIDI1MCwgMTg0LCAyNDEsIDM1LCAKLSAgICAyLCAzLCA3MCwgNTYsIDIzNSwgMTU0LCAzLCA3MCwgNTUsIDIwOCwgNzAsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMywgNTIsIAotICAgIDgwLCA5NSwgMjA4LCA3MCwgMjM2LCAxMDYsIDI0OCwgMjMxLCAzLCAyMDgsIDcwLCA4MCwgOTUsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NSwgMywgNzAsIDU1LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDMsIDIxNSwgMjQ1LCAyNDMsIDgzLCAyMTIsIDEyOSwgMjI0LCAKLSAgICAxMDMsIDIxMiwgMTI4LCAyNDUsIDIxMCwgMywgNzAsIDU1LCAyNDEsIDM1LCAzLCAyNTAsIDU5LCAyNTEsIDcsIDE1NiwgCi0gICAgMjA4LCAxNzMsIDMsIDI0NiwgNTMsIDI1MSwgMTM4LCAyNTAsIDE1MSwgMTU2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MSwgCi0gICAgMzUsIDIsIDg3LCA5MSwgNTQsIDkxLCAyLCA4NywgMjQxLCAzNSwgNTQsIDI0MSwgMzUsIDIsIDg3LCAyMDgsIDIyOCwgMjE5LCAKLSAgICAyNTQsIDUyLCAyNDUsIDI0MywgMjQxLCAzNiwgMTIwLCAyNDUsIDIwMywgMjQxLCAzNSwgMjEyLCAxNDMsIDEyNiwgMjQ1LCAKLSAgICAyMDMsIDI0MSwgMzUsIDIxMiwgMTQzLCAyNDEsIDM1LCAyLCAzLCAxMjAsIDE4NywgODcsIDI1LCAxMjAsIDE4NywgNTYsIAotICAgIDI0MSwgMzAsIDMsIDIzOSwgMTQ3LCAxODcsIDU1LCAyMjcsIDE3OSwgMywgMjQ2LCA2MiwgMjMxLCA2LCAyMzcsIDI0NywgMywgCi0gICAgMjQ2LCA2MiwgMjMxLCA2LCAyMjcsIDE3OSwgMywgMjE3LCA0NywgMTMxLCA1NSwgMjM3LCAyNDcsIDMsIDIxNywgNDcsIAotICAgIDEzMSwgNTUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAxMzUsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCAKLSAgICA1OSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDIzMSwgNiwgCi0gICAgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgMjMxLCA2LCAyMjcsIDE3OSwgMjE5LCAKLSAgICAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIAotICAgIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIyNywgMTc5LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIAotICAgIDg3LCAyMTYsIDE2LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA4NywgMjI3LCAKLSAgICAyMjIsIDIyNywgMTc5LCAyMTksIDI0NSwgMjUwLCAxNTIsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjUwLCAxNTIsIDIyNywgCi0gICAgMTc5LCAyNSwgMjEyLCAxMTgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDI1LCAyMTIsIDExOCwgMjIxLCAxNjYsIAotICAgIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjUsIDIyMSwgMTY2LCAyNTAsIDE1MiwgMjM3LCAyNDcsIDI1LCAyMjEsIDE2NiwgMjUwLCAKLSAgICAxNTIsIDIyNywgMTc5LCA4NywgMjQyLCA3NiwgMTU2LCA4NywgMjM3LCAyNDYsIDIzNywgMjQ3LCA4NywgMjQyLCA3NiwgCi0gICAgMTU2LCA4NywgMjI3LCAxNzgsIDIyNywgMTc5LCA4NywgMjEyLCAxMjksIDIxOSwgMjQ1LCAyNDEsIDM2LCAyMzcsIDI0NywgCi0gICAgODcsIDIxMiwgMTI5LCAyMTksIDI0NSwgMjQxLCAzNiwgMjI3LCAxNzksIDg3LCAyMTIsIDEyOSwgODcsIDIzNywgMjQ2LCAKLSAgICAyMzcsIDI0NywgODcsIDIxMiwgMTI5LCA4NywgMjI3LCAxNzgsIDIyNywgMTc5LCA4NywgMjM3LCAyNDcsIDg3LCAyNDIsIAotICAgIDc2LCAyNDEsIDM2LCAyMzcsIDI0NywgODcsIDIyNywgMTc5LCA4NywgMjQyLCA3NiwgMjQxLCAzNiwgMjI3LCAxNzksIDg3LCAKLSAgICAyMTIsIDU5LCAxNTYsIDg3LCAyMzcsIDI0NywgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIzNywgMjQ3LCA4NywgMjEyLCA1OSwgCi0gICAgMTU2LCA4NywgMjI3LCAxNzksIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIAotICAgIDI0NSwgMjI3LCAxNzgsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjEyLCA1OSwgMTU2LCAKLSAgICAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc5LCAzLCA3MCwgMjMxLCA2LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAyMTksIAotICAgIDI0NSwgMjM3LCAyNDcsIDMsIDcwLCAyMzEsIDYsIDI0MiwgNzYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgCi0gICAgMjQyLCA3NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAyNDIsIDc2LCAyMTIsIDU5LCAxNTYsIDIwOCwgCi0gICAgMTczLCAyMTksIDI0NSwgMjI3LCAxNzgsIDI0MiwgNzYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIAotICAgIDI0NiwgMjEyLCAxMjksIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjEyLCAxMjksIDIxOSwgMjQ1LCAyMzcsIDI0NiwgMjEyLCAKLSAgICAxMjksIDg3LCAyMjcsIDE3OSwgODcsIDI0MSwgMzUsIDU0LCAyMTIsIDEyOSwgODcsIDIzNywgMjQ3LCA4NywgMjQxLCAzNSwgCi0gICAgNTQsIDUyLCAyMjIsIDIyMSwgMjI3LCAxNzgsIDUyLCAyMjIsIDIyMSwgMjM3LCAyNDYsIDUyLCAyMjIsIDIyMSwgMjI3LCAKLSAgICAxNzksIDMsIDIwNiwgMjQ2LCAyMzcsIDI0NywgMjE5LCAyMDAsIDIyNywgMTc4LCAyMzcsIDI0NywgMjQ4LCAxMTAsIDIyNywgCi0gICAgMTc4LCAyMjcsIDE3OSwgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODcsIDIzNywgMjQ3LCAyNDYsIDE2LCAyNDcsIDEzNywgCi0gICAgMjQ1LCA4NywgMjI3LCAxNzksIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg4LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjM3LCAKLSAgICAyNDcsIDI0NiwgMTYsIDI0NywgMTM3LCAyNDUsIDg4LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjEyLCAzNSwgMjA5LCA5NywgCi0gICAgMjI4LCA2LCAyMDksIDk3LCAyMTIsIDM1LCAyMDksIDk4LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIyOCwgNiwgMjA5LCA5OCwgCi0gICAgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDEsIDM1LCAyLCAzLCAyNDcsIDE3MCwgNTUsIDIxNywgMjUwLCA4NywgMjEyLCAxMTgsIAotICAgIDI0MSwgMzUsIDU0LCAyMTAsIDIzNywgODcsIDIxMiwgMTE4LCAyNDEsIDM1LCA1NCwgMjE3LCAyNTAsIDg3LCAyMTIsIDExOCwgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTAsIDIzNywgODcsIDIxMiwgMTE4LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxNywgMjUwLCAKLSAgICA4NywgMjQxLCAzNSwgNTQsIDIxMCwgMjM3LCA4NywgMjQxLCAzNSwgNTQsIDIxNywgMjUwLCA4NywgMjIxLCAxNjYsIDE1NiwgCi0gICAgMTM1LCAyMTAsIDIzNywgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAKLSAgICAyMTAsIDIzNywgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxNywgMjUwLCA4NywgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIAotICAgIDIxMCwgMjM3LCA4NywgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIDUyLCAyMTcsIDI0OSwgNTIsIDIxMCwgMjM2LCAKLSAgICAyMTAsIDI0NSwgMywgMjQzLCA4NSwgMjEwLCAxOTgsIDMsIDI0MywgODUsIDIxMCwgMjQ1LCAzLCA5MSwgMiwgNTYsIDIxMCwgCi0gICAgMTk4LCAzLCA5MSwgMiwgNTYsIDIxMCwgMjQ1LCAzLCAyMjMsIDIyNCwgMiwgNTYsIDIxMCwgMTk4LCAzLCAyMjMsIDIyNCwgCi0gICAgMiwgNTYsIDIxMCwgMjQ1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjEwLCAxOTgsIDc2LCAKLSAgICAyMTksIDI0NSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMTAsIDI0NSwgNzYsIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAKLSAgICAxOTgsIDc2LCA4NywgMjQxLCAzNSwgNTQsIDIxMCwgMjQ1LCA3NiwgODcsIDIwOCwgMjI4LCAyMTksIDI1NCwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTAsIDI0NSwgNzYsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCAyMTAsIDI0NSwgNzYsIDg3LCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgNTEsIDQ5LCAxNzEsIDk4LCAyMTksIDI1NCwgNTEsIDUwLCAxNzEsIDk4LCAKLSAgICAyMTksIDI1NCwgMjQ2LCAxNiwgMjEwLCAyNDQsIDI0NiwgMTYsIDIxMCwgMTk3LCAyNDYsIDE2LCAyMTAsIDI0NSwgMjE5LCAKLSAgICAyNDUsIDE1NiwgMTM1LCAyNDYsIDE2LCAyMTAsIDE5OCwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDI0NSwgODcsIDIxMCwgCi0gICAgMTk3LCAyMTAsIDE5OCwgODcsIDIxMCwgMjQ0LCAyMTAsIDI0NSwgODcsIDIxMCwgMjQ0LCAyMTAsIDE5OCwgODcsIDIxMCwgCi0gICAgMTk3LCAyMTAsIDE5OCwgMjQ4LCAxMTAsIDIxMCwgMjQ0LCAyMTAsIDE5OCwgMjQ4LCAxMTAsIDI1LCAyMzAsIDk4LCAyNDcsIAotICAgIDEzNywgMjQ0LCAxNDUsIDMsIDIxMCwgMjQ0LCAyNDEsIDExNSwgNzYsIDIyMCwgMSwgMjQyLCA2OCwgMjE4LCAxMDQsIDMsIAotICAgIDIwOSwgMTc3LCAyMDgsIDE0NCwgMjA4LCAxMDIsIDIzMCwgMjQ0LCAyMzksIDE2MCwgMjIxLCAxODEsIDIxMiwgMjI4LCA0OSwgCi0gICAgMjEwLCAzLCAyMTIsIDIyOCwgMTIxLCAyMTAsIDMsIDIxMiwgMjI4LCAxMTIsIDIxMCwgMywgMjE4LCAyMzQsIDMsIDE5NCwgCi0gICAgODAsIDI0OCwgMjMxLCAyMDgsIDcwLCA1MCwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDQ5LCAyMDcsIDE3MywgODAsIAotICAgIDI0OCwgMjMxLCA1MiwgNDksIDIwNywgMTczLCA1MiwgODAsIDI0OCwgMjMxLCA1MiwgNDksIDIwNywgMTczLCAxNjMsIDI0NCwgCi0gICAgMTQ1LCAyMzksIDEyMCwgNDksIDIyNCwgMjQ1LCA3NiwgNTIsIDIwNiwgMzgsIDIxMiwgMjI4LCAxMjEsIDIxMCwgNCwgMywgCi0gICAgMjE5LCAyMDMsIDIxMiwgMjI4LCAxMTIsIDIxMCwgNCwgMywgMjA2LCAyNDYsIDIxMiwgMjI4LCAxMTIsIDIxMCwgNCwgODcsIAotICAgIDIxMiwgMjI4LCAxMjEsIDIxMCwgMywgNTIsIDEyMSwgMjEwLCAzLCA1MiwgMTEyLCAyMTAsIDMsIDUyLCAyMTEsIDMyLCAKLSAgICAyMjEsIDE2NiwgNTQsIDIxNiwgNzMsIDUyLCAyMTEsIDMyLCAyMjEsIDE2NiwgNTQsIDI0MywgMTA0LCAyMjEsIDE2NiwgCi0gICAgMjQzLCAxNDQsIDMsIDIxNiwgNzMsIDIyMiwgMjMzLCAyMTIsIDU3LCA4MCwgMjI3LCAxMTUsIDMsIDI0NiwgNjIsIDU1LCAKLSAgICA4MCwgMjI3LCAxMTUsIDMsIDI0NiwgNjIsIDU2LCAxMjEsIDIxMCwgNCwgMywgMjQ2LCA2MiwgNTYsIDIxOSwgODIsIDMsIAotICAgIDIzNiwgMTA2LCA5NSwgMjE5LCA4MiwgMywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDI0OCwgCi0gICAgNjcsIDIxNiwgMTE3LCAyMDgsIDcwLCA4MCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCA5NSwgMjA4LCA3MCwgMjQ1LCAyNDMsIAotICAgIDIxOSwgMjU0LCAyMDgsIDcwLCAyMjIsIDIyMSwgMjI3LCAxNzgsIDIwOCwgNzAsIDIyMiwgMjIxLCAyMzcsIDI0NiwgMjQyLCAKLSAgICA3NiwgMjEyLCA1OSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQyLCA3NiwgMjEyLCA1OSwgMjM3LCAyNDcsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjA4LCA3MCwgMjEyLCAxLCAyNDgsIDY3LCAyMTYsIDExNywgMjI4LCA4LCAyMDgsIDcwLCAKLSAgICA4MCwgMjQ4LCAyMzEsIDIxOSwgMjU0LCA1MiwgMjEyLCAxLCAyMTksIDI1NCwgNjEsIDgwLCAxNDIsIDIyMywgMTYyLCA2MSwgCi0gICAgODAsIDE0MiwgMTUzLCAyNDEsIDE3NiwgNjEsIDQ3LCAxNTMsIDIwNCwgNDYsIDYxLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCAKLSAgICA2MSwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA2MSwgNDcsIDQ5LCA1MCwgNjEsIDQ3LCA5NiwgNjIsIDQ3LCAxNzcsIDYyLCAKLSAgICA0NywgMTgzLCA2MiwgNDcsIDE1MywgMjQxLCAxNzYsIDYyLCA0NywgMTUzLCAyMDQsIDQ2LCA2MiwgNDcsIDIxMSwgMjM4LCAKLSAgICAyNDEsIDE3NiwgNjIsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNjIsIDQ3LCA0OSwgNTAsIDYyLCA0NywgMTEyLCAxMjEsIAotICAgIDYyLCA0NywgODYsIDUzLCAzLCAyMDgsIDIxMSwgMjQyLCA2OCwgODYsIDUzLCAzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDk2LCAKLSAgICA1MywgMywgMjA4LCAyMTEsIDI0MiwgNjgsIDk2LCA1MywgMywgMjA4LCAyMTEsIDIwNiwgMjEyLCA1MSwgMywgMjA4LCAxNDUsIAotICAgIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDI0NywgMjQ4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMDYsIDIyMSwgNTAsIDI0MywgCi0gICAgMjI4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMjYsIDI1MSwgNDksIDI0MywgMjI4LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAKLSAgICAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDIwOCwgCi0gICAgMTQ1LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCAyNDcsIDI0OCwgMTYyLCAyNDgsIDQzLCAyNDIsIDgzLCAyMTEsIAotICAgIDE3NywgNjIsIDIyOCwgOCwgMjExLCAxNzcsIDYxLCAyMjgsIDgsIDIxMSwgMTc3LCA2MiwgMjA1LCAyNDIsIDUsIDIxMSwgCi0gICAgMTc3LCA2MSwgMjA1LCAyNDIsIDUsIDIxMSwgMTc3LCA2MiwgMjE4LCAyNTUsIDYxLCAyMTgsIDI1NSwgNjEsIDIzNywgMTcsIAotICAgIDYyLCAyMzcsIDE3LCAyMzYsIDEwNiwgNjIsIDIzNywgMTcsIDYyLCAyMjgsIDgsIDI0NiwgNjEsIDYyLCAyMjUsIDEwLCAKLSAgICAyNDMsIDIyMSwgNjEsIDIyNSwgMTAsIDI0MywgMjIxLCA2MiwgMjI1LCAxMCwgMjI2LCAyNDYsIDYxLCAyMjUsIDEwLCAyMjYsIAotICAgIDI0NiwgNjIsIDUsIDI0MywgMjIxLCA2MiwgNSwgMjI2LCAyNDYsIDYxLCA1LCAyMjYsIDI0NiwgNjIsIDIzNiwgMTA2LCAKLSAgICAyNDEsIDEwOSwgNjEsIDIzNiwgMTA2LCAyNDEsIDEwOSwgNjIsIDgwLCAyNDEsIDEwOSwgNjEsIDgwLCAyNDEsIDEwOSwgNDksIAotICAgIDUzLCAzLCA1LCAyNDYsIDYxLCAxMjYsIDk2LCAyNTAsIDkxLCA0OSwgNTMsIDMsIDQzLCAyMTgsIDc2LCAxNjMsIDk2LCAKLSAgICAyMTEsIDE3MSwgNDcsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgNTIsIDgwLCAKLSAgICA5NSwgOTYsIDIwNywgMTM0LCA1MywgMjM5LCAxMjAsIDE0MiwgOTYsIDIwNywgMTM0LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIAotICAgIDk2LCA1MywgMywgMjQyLCA4MywgMjExLCA3NywgOTYsIDUzLCAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA5NiwgNTMsIDMsIAotICAgIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OCwgOTYsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAKLSAgICA1MywgMjA5LCAyNSwgMjAzLCAxOTYsIDIwNCwgNzYsIDUzLCAyMTgsIDU5LCAyNDMsIDE2NCwgMjI3LCAyMjIsIDI0MSwgMzUsIAotICAgIDIsIDg3LCA5NiwgNDcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIDk2LCA0NywgOTYsIDUzLCA4NywgMjE2LCAKLSAgICA3NCwgMjUxLCA3LCAxNTYsIDEzNSwgODYsIDUzLCAyMDksIDI1LCAyMzcsIDI0NiwgODYsIDUzLCAyMDksIDI1LCAyMTAsIAotICAgIDE5NywgOTYsIDIxNywgNTgsIDQ3LCA4NiwgMjE3LCA1OCwgNDcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIAotICAgIDg2LCA0NywgODYsIDUzLCA4NywgMjE2LCA3NCwgMjUxLCA3LCAxNTYsIDEzNSwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgCi0gICAgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyNTEsIDcsIDE1NiwgMTM1LCA5NiwgNTMsIDg3LCAyMTYsIDc0LCAyMDgsIDIyOCwgMjE5LCAKLSAgICAyNTQsIDg2LCA1MywgODcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIDI1NCwgMTgzLCAyMDgsIDg0LCAyMDIsIDMwLCA0NywgCi0gICAgMjEyLCAyMjgsIDIxMiwgNTksIDE1MywgNDcsIDIxMiwgMjI4LCAyNDksIDIyLCAyMTEsIDIzOCwgNDcsIDYxLCAyMjUsIDEwLCAKLSAgICAyMTEsIDk0LCA2MiwgNSwgMjExLCA5NCwgNjEsIDUsIDIxMSwgOTQsIDYyLCAyMTYsIDExLCAyMTgsIDI1NSwgNjEsIDIxNiwgCi0gICAgMTEsIDIxOCwgMjU1LCA3OSwgMjI4LCA4LCAyNDYsIDYxLCA3OSwgMjE5LCAyMDUsIDMsIDIxOSwgMjA1LCAyMzEsIDYsIDc5LCAKLSAgICAyNDYsIDYyLCAzLCAyNDYsIDYyLCAyMzEsIDYsIDc5LCAyNDYsIDYxLCA3OSwgNDMsIDIxNCwgMjU0LCAyMTIsIDU5LCAxNTMsIAotICAgIDUzLCAzLCAyMzYsIDExNSwgMjM3LCA2NCwgMjQ5LCAyMiwgMjExLCAyMzgsIDUzLCAzLCAyMzYsIDExNSwgMjA5LCAyNDgsIAotICAgIDIxMiwgNTksIDE1MywgNTMsIDMsIDIzNiwgMTA2LCAyMDksIDI0OCwgMjQ5LCAyMiwgMjExLCAyMzgsIDUzLCAzLCAyMzYsIAotICAgIDEwNiwgMjA5LCAyNDgsIDI0OCwgMTE4LCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAxNTMsIDI0MSwgMTc1LCAyMTIsIAotICAgIDIyOCwgMjQ4LCAxMTgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDE1MywgMjQxLCAxNzUsIDk2LCAyMDgsIDg0LCA0NywgCi0gICAgMTc3LCAyMDgsIDg0LCA0NywgODYsIDIwOCwgODQsIDQ3LCAxODMsIDIwOCwgODQsIDQ3LCA0OSwgNTAsIDIwOCwgODQsIDQ3LCAKLSAgICAxMTIsIDEyMSwgMjA4LCA4NCwgNDcsIDE1MywgMjA0LCA0NiwgMjA4LCA4NCwgNDcsIDE1MywgMjQxLCAxNzYsIDIwOCwgODQsIAotICAgIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwOCwgODQsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA4LCA4NCwgNDcsIDk2LCAKLSAgICAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDE3NywgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCA4NiwgMjA4LCA4NCwgMjQ0LCAxNDMsIAotICAgIDQ3LCAxODMsIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgMjQ2LCAxOCwgMjA4LCA4NCwgMTcxLCAyNDYsIDYyLCA0NywgMjUwLCAKLSAgICAxOTQsIDIwOCwgODQsIDE3MSwgMjQ2LCA2MiwgNDcsIDk2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMTc3LCAyMDgsIAotICAgIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgODYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxODMsIDIwOCwgODQsIDUzLCAKLSAgICAyMDgsIDE3MywgMTQyLCAxNTMsIDIwNCwgNDYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxNTMsIDI0MSwgMTc2LCAKLSAgICAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIDE0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMDgsIDg0LCA1MywgMjA4LCAxNzMsIAotICAgIDE0MiwgMjExLCAyMzgsIDIwNCwgNDYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCA5NiwgMjA4LCA4NCwgNTMsIDMsIAotICAgIDUyLCAyMzYsIDEwNiwgOTUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDUyLCAyMzYsIDEwNiwgOTUsIDg2LCAyMDgsIDg0LCA1MywgCi0gICAgMywgNTIsIDIzNiwgMTA2LCA5NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgNTIsIDIzNiwgMTA2LCA5NSwgMjM2LCAxMDYsIAotICAgIDIxMCwgMTEsIDIyOSwgMTUxLCA4MCwgMjEwLCAxMSwgMjI5LCAxNTEsIDk2LCAyMDgsIDg0LCA1MywgMTE1LCA4NiwgMjA4LCAKLSAgICA4NCwgNDcsIDE3NywgMjA4LCA4NCwgNTMsIDk2LCA3NiwgMTgzLCAyMDgsIDg0LCA0NywgODYsIDIwOCwgODQsIDUzLCAxMTUsIAotICAgIDk2LCAyMDgsIDg0LCA0NywgMTgzLCAyMDgsIDg0LCA1MywgOTYsIDc2LCAxNzcsIDIwOCwgODQsIDQ3LCA5NiwgMjA4LCA4NCwgCi0gICAgMjE5LCAxNDYsIDI1MCwgOTEsIDE3NywgMjA4LCA4NCwgMjE5LCAxNDYsIDI1MCwgOTEsIDg2LCAyMDgsIDg0LCAyMTksIAotICAgIDE0NiwgMjUwLCA5MSwgMTgzLCAyMDgsIDg0LCAyMTksIDE0NiwgMjUwLCA5MSwgOTYsIDYyLCA0MywgNjEsIDQ3LCAxNzcsIAotICAgIDYyLCA0MywgNjEsIDQ3LCA4NiwgNjIsIDQzLCA2MSwgNDcsIDE4MywgNjIsIDQzLCA2MSwgNDcsIDI1MCwgMTk0LCAyMDgsIAotICAgIDg0LCA1MCwgMjA3LCA5MiwgNDcsIDI1MCwgMTk0LCAyMDgsIDg0LCAyNDcsIDI0OCwgMjA3LCA5MiwgNDcsIDI1MCwgMTk0LCAKLSAgICAyMDgsIDg0LCA0OSwgMjA3LCA5MiwgNDcsIDI1MCwgMTk0LCAyMDgsIDg0LCAyMDgsIDE0NSwgMjA3LCA5MiwgNDcsIDIxNiwgCi0gICAgNzgsIDIyNywgMjIyLCAyMTYsIDc4LCAyMTYsIDE2LCAyMjIsIDIxMiwgMjI3LCAyMjIsIDIyMiwgMjEyLCAyMTYsIDE2LCAKLSAgICAyMzksIDE0NywgMjQ1LCAxNjYsIDI1MCwgOTIsIDI0NiwgNTcsIDI1MCwgMTkzLCA4NiwgNjIsIDQ3LCAyMDksIDMxLCAyMDgsIAotICAgIDE0MywgOTYsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgMzEsIDIxNiwgMTIsIDE3NywgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAKLSAgICAzMSwgMjA4LCAxNDMsIDg2LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIDMxLCAyMjcsIDIxOCwgMTgzLCAyNDEsIDMxLCAyNTAsIAotICAgIDk0LCA2MiwgOTYsIDI0MSwgMzEsIDI1MCwgOTQsIDYyLCAxNzcsIDI0MSwgMzEsIDI1MCwgOTQsIDYyLCA4NiwgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgNjIsIDE4MywgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgCi0gICAgMjI3LCAyMTIsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIxNiwgNSwgMTc3LCAyMDgsIDg0LCA1MywgCi0gICAgMywgMTYzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIxNiwgNSwgCi0gICAgOTYsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyMDYsIDIxMiwgODYsIDIwOCwgODQsIDUzLCAzLCAxNjMsIAotICAgIDIwOCwgMjExLCAyMDYsIDIxMiwgOTYsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAyNDIsIDY4LCA4NiwgMjA4LCAKLSAgICA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDI0MiwgNjgsIDYyLCAyNDUsIDg2LCAxODMsIDI1LCA5NiwgNDcsIDYyLCAyNDUsIAotICAgIDg2LCAxODMsIDI1LCA4NiwgNDcsIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCA5NiwgNDcsIDYyLCAyNDUsIDg2LCAxNzcsIDI1LCAKLSAgICA4NiwgNDcsIDYyLCAyNDUsIDg2LCA5NiwgMjUsIDE3NywgNDcsIDYyLCAyNDUsIDg2LCA4NiwgMjUsIDE3NywgNDcsIDYyLCAKLSAgICAyNDUsIDg2LCA5NiwgMjUsIDE4MywgNDcsIDYyLCAyNDUsIDg2LCA4NiwgMjUsIDE4MywgNDcsIDIxNiwgNTUsIDUzLCAxMjEsIAotICAgIDIyNywgMjIyLCAyMTYsIDU1LCA1MywgMTIxLCAyMTYsIDE2LCAyMTYsIDU1LCA1MywgMTEyLCAyMjcsIDIyMiwgMjE2LCA1NSwgCi0gICAgNTMsIDExMiwgMjE2LCAxNiwgMjE2LCA1NSwgNTMsIDQ5LCAyMDYsIDIyNCwgMjE2LCA1NSwgNTMsIDUwLCAyMDYsIDIyNCwgCi0gICAgMjE2LCA1NSwgNTMsIDQ5LCAyNDIsIDcwLCAyMTYsIDU1LCA1MywgNTAsIDI0MiwgNzAsIDE3NywgNjEsIDUzLCAyMzksIAotICAgIDEyMCwgMjQ4LCAyMzEsIDMsIDIzNiwgMTA2LCAxNDIsIDExMiwgMjUwLCA5NSwgMjMxLCA1MCwgMzQsIDIxNiwgMTQ0LCAKLSAgICAyNDcsIDIzMywgMjQ4LCAyNDgsIDk4LCAzLCAxNTcsIDIwMywgMTk2LCA0MywgMjAzLCAxOTYsIDQzLCAyNiwgMjAzLCAxOTYsIAotICAgIDYyLCA1MSwgMjQ2LCAyMTUsIDYyLCAyNDMsIDIyMiwgMjQ2LCAyMTUsIDIwNywgMTc0LCA2MiwgMjE4LCAyNTUsIDIzNiwgCi0gICAgMTA2LCA2MiwgMjIwLCA4MSwgNjIsIDIyMCwgODEsIDYyLCAyMjUsIDEwLCAyMDYsIDIyMywgMjA4LCA4NiwgMjQ2LCAyMTUsIAotICAgIDYyLCAyMjUsIDEwLCAyNDIsIDY5LCAyMDgsIDg2LCAyNDYsIDIxNSwgNjIsIDIyNSwgMTAsIDIyNywgMjE3LCAyMDgsIDg2LCAKLSAgICAyNDYsIDIxNSwgNjIsIDIyNSwgMTAsIDIxNiwgMTEsIDIwOCwgODYsIDI0NiwgMjE1LCAyMDgsIDE0NSwgMTYyLCA2MiwgCi0gICAgMjQ2LCA2MSwgMjQ3LCAyNDgsIDE2MiwgNjIsIDI0NiwgNjEsIDE1NywgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyNDUsIDgyLCAKLSAgICAyMTUsIDE5OCwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDI0NSwgODIsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgCi0gICAgMjQ1LCA4MiwgMjE1LCAxOTgsIDYxLCAyMzksIDE0NywgMjE4LCA2MSwgMjQ1LCA4MiwgNTEsIDIxOCwgMzQsIDIzMSwgMzEsIAotICAgIDIwNiwgMjUwLCA1NCwgOTYsIDIwNywgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTc3LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOCwgODYsIDI1MCwgOTMsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE4MywgMjA3LCAKLSAgICAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxODAsIDYsIDEsIDI1MCwgMCwgMTgwLCA2LCAxLCAyNDcsIDE4MSwgCi0gICAgMTgwLCA2LCAxLCAyMDYsIDUzLCAxODAsIDYsIDEsIDIzOCwgNTAsIDE4MCwgNiwgMSwgMjQzLCAxMDgsIDE4MCwgNiwgMSwgCi0gICAgMjAzLCAyNCwgMTgwLCA2LCAxLCAyMDIsIDY0LCAxODAsIDYsIDEsIDI0MSwgMjUwLCAxODAsIDYsIDEsIDIwMiwgODksIAotICAgIDE4MCwgNiwgMSwgMjMwLCAxODgsIDE4MCwgNiwgMSwgODEsIDIzMCwgMTg4LCAxODAsIDYsIDEsIDc1LCAxODAsIDYsIDEsIAotICAgIDI0MywgMTI4LCAxODAsIDYsIDEsIDIzMCwgMTAsIDE4MCwgNiwgMSwgMjI3LCA3OSwgMTgwLCA2LCAxLCAyMjMsIDE2NywgCi0gICAgMTgwLCA2LCAxLCAyMjMsIDY5LCAxODAsIDYsIDEsIDIyMCwgMjAsIDE4MCwgNiwgMSwgMjE4LCA1NiwgMTgwLCA2LCAxLCAKLSAgICAyMTUsIDI0NCwgMTgwLCA2LCAxLCAyMTIsIDQxLCAxODAsIDYsIDEsIDIwNywgMTYxLCAxODAsIDYsIDEsIDIwNywgMTAsIAotICAgIDE4MCwgNiwgMSwgMjM5LCAxMjMsIDE4MCwgNiwgMSwgMjM3LCAyMywgMTgwLCA2LCAxLCAyMTksIDIxNywgMTgwLCA2LCAxLCAKLSAgICAyMTksIDM0LCAxODAsIDYsIDEsIDIxMiwgMjAyLCAxODAsIDYsIDEsIDIwNywgMjU1LCAxODAsIDYsIDEsIDI0NiwgMTA0LCAKLSAgICAxODAsIDYsIDEsIDIxMywgOTAsIDE4MCwgNiwgMSwgMjAzLCAzMCwgMTgwLCA2LCAxLCAyMDMsIDMyLCAxODAsIDYsIDEsIAotICAgIDIwMywgNjQsIDE4MCwgNiwgMSwgMjExLCAyMDQsIDE1MiwgMTgwLCA2LCAxLCAyMDIsIDIxMywgMTgwLCA2LCAxLCA1LCAKLSAgICAyMDIsIDE4MywgMTgwLCA2LCAxLCA1LCAyMDIsIDE4NCwgMywgMjA5LCAyNDgsIDE4MCwgNiwgMSwgMjAyLCAyNDcsIDE4MCwgCi0gICAgNiwgMSwgMjMwLCAyMjksIDUsIDIwMiwgMTgzLCAxODAsIDYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDYsIDEsIAotICAgIDIzMCwgMjI5LCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA2LCAxLCAyMzksIDIzNSwgMTgwLCA2LCAxLCAyMzAsIDE4NiwgCi0gICAgMTgwLCA2LCAxLCAyMTIsIDIwMSwgMTgwLCA2LCAxLCAyMDgsIDYwLCA2MywgMTgwLCA2LCAxLCAyMjcsIDI1MiwgMjIzLCAKLSAgICAxNjcsIDE4MCwgNSwgMSwgMjUwLCAwLCAxODAsIDUsIDEsIDI0NywgMTgxLCAxODAsIDUsIDEsIDIwNiwgNTMsIDE4MCwgNSwgCi0gICAgMSwgMjM4LCA1MCwgMTgwLCA1LCAxLCAyNDMsIDEwOCwgMTgwLCA1LCAxLCAyMDMsIDI0LCAxODAsIDUsIDEsIDIwMiwgNjQsIAotICAgIDE4MCwgNSwgMSwgMjQxLCAyNTAsIDE4MCwgNSwgMSwgMjAyLCA4OSwgMTgwLCA1LCAxLCAyMzAsIDE4OCwgMTgwLCA1LCAxLCAKLSAgICA4MSwgMjMwLCAxODgsIDE4MCwgNSwgMSwgNzUsIDE4MCwgNSwgMSwgMjQzLCAxMjgsIDE4MCwgNSwgMSwgMjMwLCAxMCwgCi0gICAgMTgwLCA1LCAxLCAyMjcsIDc5LCAxODAsIDUsIDEsIDIyMywgMTY3LCAxODAsIDUsIDEsIDIyMywgNjksIDE4MCwgNSwgMSwgCi0gICAgMjIwLCAyMCwgMTgwLCA1LCAxLCAyMTgsIDU2LCAxODAsIDUsIDEsIDIxNSwgMjQ0LCAxODAsIDUsIDEsIDIxMiwgNDEsIAotICAgIDE4MCwgNSwgMSwgMjA3LCAxNjEsIDE4MCwgNSwgMSwgMjA3LCAxMCwgMTgwLCA1LCAxLCAyMzksIDEyMywgMTgwLCA1LCAxLCAKLSAgICAyMzcsIDIzLCAxODAsIDUsIDEsIDIxOSwgMjE3LCAxODAsIDUsIDEsIDIxOSwgMzQsIDE4MCwgNSwgMSwgMjEyLCAyMDIsIAotICAgIDE4MCwgNSwgMSwgMjA3LCAyNTUsIDE4MCwgNSwgMSwgMjQ2LCAxMDQsIDE4MCwgNSwgMSwgMjEzLCA5MCwgMTgwLCA1LCAxLCAKLSAgICAyMDMsIDMwLCAxODAsIDUsIDEsIDIwMywgMzIsIDE4MCwgNSwgMSwgMjAzLCA2NCwgMTgwLCA1LCAxLCAyMTEsIDIwNCwgCi0gICAgMTUyLCAxODAsIDUsIDEsIDIwMiwgMjEzLCAxODAsIDUsIDEsIDUsIDIwMiwgMTgzLCAxODAsIDUsIDEsIDUsIDIwMiwgMTg0LCAKLSAgICAzLCAyMDksIDI0OCwgMTgwLCA1LCAxLCAyMDIsIDI0NywgMTgwLCA1LCAxLCAyMzAsIDIyOSwgNSwgMjAyLCAxODMsIDE4MCwgCi0gICAgNSwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNSwgMSwgMjMwLCAyMjksIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDUsIAotICAgIDEsIDIzOSwgMjM1LCAxODAsIDUsIDEsIDIzMCwgMTg2LCAxODAsIDUsIDEsIDIxMiwgMjAxLCAxODAsIDUsIDEsIDIwOCwgCi0gICAgNjAsIDYzLCAxODAsIDUsIDEsIDIyNywgMjUyLCAyMjMsIDE2NywgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxNDIsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTQyLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNiwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAzNCwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIxMCwgNzAsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIzNywgCi0gICAgMTcyLCAzLCAyNDQsIDIwLCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyNDQsIAotICAgIDIwLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDI0NCwgMjAsIDgsIDYsIAotICAgIDEsIDI1MSwgMiwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDExMywgOCwgNiwgMSwgMjA3LCAxNzQsIDYzLCA4LCA2LCAxLCAKLSAgICAyMDcsIDE3NCwgMjUxLCAyLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgNTAsIDExMywgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIAotICAgIDExMywgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDExMywgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDI0NSwgOTUsIDgsIDYsIDEsIAotICAgIDE2MiwgMjM3LCAxNzEsIDgsIDUsIDEsIDE2MiwgMjM3LCAxNzEsIDgsIDUsIDEsIDIwOSwgMjQ2LCAyMTgsIDE5MiwgOCwgNSwgCi0gICAgMSwgMTg4LCAzLCAyMjEsIDE2MywgOCwgNSwgMSwgMjA3LCAxNzQsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIAotICAgIDE1OCwgMywgMTI0LCAyMTUsIDI1MywgMjMxLCA2LCA4LCAxLCA1LCA2LCAyMDcsIDE3NCwgNzQsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMzAsIDE4NCwgNjUsIDEsIDYsIDIwNiwgMTY0LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyMTAsIDE2OSwgMjA5LCAyNDgsIAotICAgIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyMTAsIDE2OSwgMjA5LCAyNDgsIDg0LCA2LCAxLCAyNTEsIDI0LCA4NCwgNSwgMSwgCi0gICAgMjUxLCAyNCwgODQsIDYsIDEsIDIwNSwgMjI3LCA4NCwgNSwgMSwgMjA1LCAyMjcsIDg0LCA2LCAxLCAyMzgsIDIzNSwgODQsIAotICAgIDUsIDEsIDIzOCwgMjM1LCA4NCwgNiwgMSwgMjQ0LCAxODAsIDg0LCA1LCAxLCAyNDQsIDE4MCwgODQsIDYsIDEsIDI0MSwgCi0gICAgMTQ0LCA4NCwgNSwgMSwgMjQxLCAxNDQsIDg0LCA2LCAxLCAyMTEsIDI0MywgODQsIDUsIDEsIDIxMSwgMjQzLCA4NCwgNiwgCi0gICAgMSwgMjAyLCA5OSwgODQsIDUsIDEsIDIwMiwgOTksIDg0LCA2LCAxLCAyMzcsIDgwLCA4NCwgNSwgMSwgMjM3LCA4MCwgODQsIAotICAgIDYsIDEsIDIwOSwgNzIsIDg0LCA1LCAxLCAyMDksIDcyLCA4NCwgNiwgMSwgMjM1LCAxNjgsIDg0LCA1LCAxLCAyMzUsIDE2OCwgCi0gICAgODQsIDYsIDEsIDIyOSwgMjUyLCA4NCwgNSwgMSwgMjI5LCAyNTIsIDg0LCA2LCAxLCAyMjcsIDI0OCwgODQsIDUsIDEsIAotICAgIDIyNywgMjQ4LCA4NCwgNiwgMSwgMjI0LCAxNTUsIDg0LCA1LCAxLCAyMjQsIDE1NSwgODQsIDYsIDEsIDIyMiwgMTAwLCA4NCwgCi0gICAgNSwgMSwgMjIyLCAxMDAsIDg0LCA2LCAxLCAyMjgsIDIyNSwgODQsIDUsIDEsIDIyOCwgMjI1LCA4NCwgNiwgMSwgNzgsIDg0LCAKLSAgICA1LCAxLCA3OCwgODQsIDYsIDEsIDIxOCwgMTY3LCA4NCwgNSwgMSwgMjE4LCAxNjcsIDg0LCA2LCAxLCAyMTUsIDIyNywgODQsIAotICAgIDUsIDEsIDIxNSwgMjI3LCA4NCwgNiwgMSwgMjEyLCAxMzIsIDg0LCA1LCAxLCAyMTIsIDEzMiwgODQsIDYsIDEsIDIwOSwgCi0gICAgMjA3LCA4NCwgNSwgMSwgMjA5LCAyMDcsIDg0LCA2LCAxLCAyMDcsIDM5LCA4NCwgNSwgMSwgMjA3LCAzOSwgODQsIDYsIDEsIAotICAgIDI0MCwgMjYsIDg0LCA1LCAxLCAyNDAsIDI2LCA4NCwgNiwgMSwgMjI5LCAxMjIsIDg0LCA1LCAxLCAyMjksIDEyMiwgODQsIAotICAgIDYsIDEsIDIxNywgMjAyLCA4NCwgNSwgMSwgMjE3LCAyMDIsIDg0LCA2LCAxLCAyMjAsIDEyLCA4NCwgNSwgMSwgMjIwLCAxMiwgCi0gICAgODQsIDYsIDEsIDI0MywgMjI2LCAyNTEsIDMwLCA4NCwgNSwgMSwgMjQzLCAyMjYsIDI1MSwgMzAsIDg0LCA2LCAxLCAzOCwgCi0gICAgODQsIDI1MSwgNTksIDg0LCA1LCAxLCAzOCwgODQsIDI1MSwgNTksIDg0LCA2LCAxLCAyNDUsIDExMywgMjQxLCAxNDQsIDg0LCAKLSAgICA1LCAxLCAyNDUsIDExMywgMjQxLCAxNDQsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjI5LCAyNTIsIDg0LCA1LCAxLCAyNDMsIAotICAgIDIyNiwgMjI5LCAyNTIsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjIyLCAxMDAsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjIyLCAKLSAgICAxMDAsIDg0LCA2LCAxLCAyNDUsIDExMywgMjIyLCAxMDAsIDg0LCA1LCAxLCAyNDUsIDExMywgMjIyLCAxMDAsIDg0LCA2LCAKLSAgICAxLCAzOCwgODQsIDIyMCwgMTIsIDg0LCA1LCAxLCAzOCwgODQsIDIyMCwgMTIsIDg0LCA2LCAxLCAyMTQsIDI0NiwgODQsIDUsIAotICAgIDEsIDIxNCwgMjQ2LCA4NCwgNiwgMSwgMjQ1LCAxMjgsIDIxMywgMzUsIDg0LCA1LCAxLCAyNDUsIDEyOCwgMjEzLCAzNSwgCi0gICAgODQsIDYsIDEsIDM4LCA4NCwgMjEzLCAzNSwgODQsIDUsIDEsIDM4LCA4NCwgMjEzLCAzNSwgODQsIDYsIDEsIDM4LCA4NCwgCi0gICAgMjQxLCA3LCA4NCwgNSwgMSwgMzgsIDg0LCAyNDEsIDcsIDg0LCA2LCAxLCAyNTEsIDQzLCAyMjksIDEyNywgODQsIDUsIDEsIAotICAgIDI1MSwgNDMsIDIyOSwgMTI3LCA4NCwgNiwgMSwgMjQzLCAyMjYsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMjQzLCAyMjYsIDIzNiwgCi0gICAgMTA3LCA4NCwgNiwgMSwgMzgsIDg0LCAyMzYsIDEwNywgODQsIDUsIDEsIDM4LCA4NCwgMjM2LCAxMDcsIDg0LCA2LCAxLCAKLSAgICAzOCwgODQsIDE1MiwgODQsIDUsIDEsIDM4LCA4NCwgMTUyLCA4NCwgNiwgMSwgMjI4LCAxMzAsIDE1MiwgODQsIDUsIDEsIAotICAgIDIyOCwgMTMwLCAxNTIsIDg0LCA2LCAxLCAzOCwgODQsIDIzNywgNDIsIDg0LCA1LCAxLCAzOCwgODQsIDIzNywgNDIsIDg0LCAKLSAgICA2LCAxLCAzOCwgODQsIDIzNywgODMsIDg0LCA1LCAxLCAzOCwgODQsIDIzNywgODMsIDg0LCA2LCAxLCAzOCwgODQsIDIzOCwgCi0gICAgMjMwLCA4NCwgNSwgMSwgMzgsIDg0LCAyMzgsIDIzMCwgODQsIDYsIDEsIDM4LCA4NCwgMjQzLCAxMzEsIDg0LCA1LCAxLCAKLSAgICAzOCwgODQsIDI0MywgMTMxLCA4NCwgNiwgMSwgMzgsIDg0LCAyMTMsIDEsIDg0LCA1LCAxLCAzOCwgODQsIDIxMywgMSwgODQsIAotICAgIDYsIDEsIDM4LCAyMjEsIDU0LCAyMTMsIDEsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjEzLCAxLCA4NCwgNiwgMSwgMzgsIAotICAgIDIyMSwgNTQsIDIyMiwgMTUxLCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIyMiwgMTUxLCA4NCwgNiwgMSwgMzgsIDIyMSwgCi0gICAgNTQsIDIyMCwgMjQ4LCA4NCwgNSwgMSwgMzgsIDIyMSwgNTQsIDIyMCwgMjQ4LCA4NCwgNiwgMSwgMzgsIDIyMSwgNTQsIAotICAgIDIwNCwgNzcsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjA0LCA3NywgODQsIDE2LCAyMzAsIDE4LCA4NCwgMTYsIDIyNCwgCi0gICAgMTU2LCAyMTUsIDIyNywgODQsIDE2LCAyMTgsIDE2OCwgMjE1LCAyMjcsIDg0LCAxNiwgMjExLCA4NSwgODQsIDE2LCAyMDksIAotICAgIDIwOCwgMjE1LCAyMjcsIDg0LCAxNiwgMjI5LCAxMjMsIDIxNSwgMjI3LCA4NCwgMTYsIDIxMywgMiwgMjEyLCAxMzIsIDg0LCAKLSAgICA2LCAxLCAyNDUsIDExMywgMjEzLCAzNSwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMTMsIDM1LCA4NCwgNiwgMSwgMjQ1LCAxMTMsIAotICAgIDIzOCwgMjMwLCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIzOCwgMjMwLCA4NCwgMzksIDIyMiwgMTAxLCA1NSwgODQsIDM5LCAKLSAgICAyMTEsIDE5NywgMjUwLCA2NywgODQsIDM5LCAyMTEsIDE5NywgMjI3LCAxODYsIDg0LCA2LCAxLCAyNDgsIDE2LCAyMjksIAotICAgIDEyNywgODQsIDUsIDEsIDI0OCwgMTYsIDIyOSwgMTI3LCA4NCwgMzgsIDIyMSwgNTQsIDIzOSwgMTAyLCAyMTEsIDYxLCA4NCwgCi0gICAgMzgsIDIyMSwgNTQsIDI0MywgMTY3LCAyMTcsIDQ3LCA4MiwgODQsIDM4LCAyMjEsIDU0LCAyMzEsIDMwLCAyMTcsIDQ3LCAKLSAgICA4MiwgODQsIDM4LCAyMjEsIDU0LCAyMDYsIDQwLCAyNDMsIDE0MSwgODQsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCA4NCwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDg0LCAyMjQsIDI1LCAyNDMsIDE0MSwgMTE0LCA1LCAxLCAyNTAsIDIzMSwgMTE0LCA1LCAxLCAKLSAgICAyNDgsIDI0MiwgMTE0LCA1LCAxLCAyMzgsIDIzNCwgMTE0LCA1LCAxLCAyNDMsIDkzLCAxMTQsIDUsIDEsIDI0MSwgOTIsIAotICAgIDExNCwgNSwgMSwgMjA1LCAyMTMsIDExNCwgNSwgMSwgMjAyLCA4NywgMTE0LCA1LCAxLCAyMDksIDIzMCwgMTE0LCA1LCAxLCAKLSAgICAyMzEsIDQ5LCAxMTQsIDUsIDEsIDIzMCwgNCwgMTE0LCA1LCAxLCAyMjgsIDIsIDExNCwgNSwgMSwgMjI1LCAxMjIsIDExNCwgCi0gICAgNSwgMSwgMjIzLCA3NCwgMTE0LCA1LCAxLCAyMjAsIDMxLCAxMTQsIDUsIDEsIDIxOSwgOTEsIDExNCwgNSwgMSwgMjAyLCAKLSAgICA3NiwgMTE0LCA1LCAxLCAyMTYsIDIwMiwgMTE0LCA1LCAxLCAyMTQsIDI0MywgMTE0LCA1LCAxLCAyMDksIDIxOCwgMTE0LCAKLSAgICA1LCAxLCAyMDYsIDI1NSwgMTE0LCA1LCAxLCAyMTgsIDIwMCwgMTE0LCA1LCAxLCAyMjksIDEzMiwgMTE0LCA1LCAxLCAyMzgsIAotICAgIDExMCwgMTE0LCA1LCAxLCAyMTcsIDExMSwgMTE0LCA1LCAxLCAyMTIsIDI1NSwgMTE0LCA1LCAxLCAyNDYsIDEyOSwgMTE0LCAKLSAgICA1LCAxLCAyNDcsIDYxLCAxMTQsIDUsIDEsIDIzMCwgMTMzLCAxMTQsIDUsIDEsIDI0NiwgNjgsIDExNCwgNSwgMSwgMjQ2LCAKLSAgICAxODMsIDExNCwgNSwgMSwgMjAzLCAxODAsIDExNCwgNSwgMSwgMjMwLCAxNDYsIDExNCwgNSwgMSwgMjM3LCAxNTQsIDExNCwgCi0gICAgNSwgMSwgMjM3LCA2NywgMTE0LCA1LCAxLCAyMzYsIDI1NCwgMTE0LCA1LCAxLCAyMDQsIDYyLCAxMTQsIDUsIDEsIDIzNywgCi0gICAgOTIsIDExNCwgNSwgMSwgMjM2LCAxMzIsIDExNCwgNSwgMSwgMjAyLCAyNDksIDExNCwgNSwgMSwgMjUxLCA5OCwgMjA4LCAKLSAgICAyNDcsIDEsIDE5OCwgMjA4LCAyNDcsIDEsIDIwMywgMTA2LCAyMDgsIDI0NywgMSwgMjAzLCAxMDUsIDIwOCwgMjQ3LCAxLCAKLSAgICAyMDMsIDk1LCAyMDgsIDI0NywgMSwgMjAzLCA5MywgMjA4LCAyNDcsIDEsIDI0OCwgMTEyLCAyNTEsIDE0MCwgMjAzLCA4OCwgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgODgsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMywgMjA4LCAyNDcsIDEsIDIwMywgMTAwLCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCAxMDIsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwMSwgMjA4LCAyNDcsIDEsIDIwMywgMTUsIDIwOCwgMjQ3LCAKLSAgICAxLCAyMDMsIDk3LCAyMDgsIDI0NywgMSwgMjAzLCA4NiwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDg2LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA4MywgMjA4LCAyNDcsIDEsIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyNDgsIDExMiwgMjUxLCAxNDAsIAotICAgIDIwMywgOTEsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDIwMywgOTAsIDIwOCwgMjQ3LCAKLSAgICAxLCAyMDMsIDExMCwgMjA4LCAyNDcsIDEsIDIwMywgODQsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA4NCwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgNzMsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA3MywgMjA4LCAyNDcsIDEsIDIwMywgMTEsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjUxLCA3MSwgMjAzLCA1NCwgMjA4LCAyNDcsIDEsIDIwNywgCi0gICAgMjAwLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjAzLCA4MiwgMjA4LCAyNDcsIDEsIDIwMywgODEsIDIwOCwgMjQ3LCAxLCAKLSAgICAyMDMsIDc4LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTIsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA3NiwgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNzQsIDIwOCwgMjQ3LCAxLCAyMDIsIDIxMywgMjA4LCAyNDcsIDEsIDIwMywgNzEsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDcwLCAyMDgsIDI0NywgMSwgMjAzLCA5NCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDk0LCAKLSAgICAyMDgsIDI0NywgMSwgMjUwLCA0LCAyMDMsIDk0LCAyMDgsIDI0NywgMSwgMjAzLCA2OSwgMjA4LCAyNDcsIDEsIDIwMywgNjcsIAotICAgIDIwOCwgMjQ3LCAxLCAyMDMsIDY4LCAyMDgsIDI0NywgMSwgMjAzLCA2NiwgMjA4LCAyNDcsIDEsIDIwMywgNjUsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDEwNCwgMjA4LCAyNDcsIDEsIDIwMywgNjMsIDIwOCwgMjQ3LCAxLCAyMDMsIDYxLCAyMDgsIDI0NywgCi0gICAgMSwgMjAzLCA2MCwgMjA4LCAyNDcsIDEsIDIwMywgNTgsIDIwOCwgMjQ3LCAxLCAyMDMsIDU1LCAyMDgsIDI0NywgMSwgMjA5LCAKLSAgICAxOTksIDIwMywgNTUsIDIwOCwgMjQ3LCAxLCAyMDMsIDUzLCAyMDgsIDI0NywgMSwgMjAzLCA1MiwgMjA4LCAyNDcsIDEsIAotICAgIDIwMiwgMjQ3LCAyMDgsIDI0NywgNjUsIDEsIDIyOCwgMTAzLCA4MiwgMjA4LCAyNDcsIDIxMywgMTMxLCA4MiwgMjA4LCAKLSAgICAyNDcsIDEwOSwgMjMwLCA5NiwgMzMsIDQsIDIyNywgNDgsIDMzLCA0LCAyMjQsIDgxLCAzMywgNCwgMjE1LCAyMjUsIDMzLCAKLSAgICA0LCAyMTIsIDEyLCAzMywgNCwgMjEyLCAyNDEsIDMzLCA0LCAyNDgsIDIyLCAzMywgNCwgMjA4LCAxNzIsIDMzLCA0LCAyNDUsIAotICAgIDI1MywgMzMsIDQsIDIyMSwgMTg5LCAzMywgNCwgMjIwLCAyMzIsIDMzLCA0LCAyMzgsIDQ1LCAyMjAsIDk3LCAzMywgNCwgCi0gICAgMjAyLCAxNiwgMzMsIDQsIDI0MywgMTExLCAzMywgNCwgMjQ0LCA4OSwgMzMsIDQsIDIzMCwgMTAwLCAzMywgNCwgMjA5LCAKLSAgICA0NiwgMzMsIDQsIDI0NiwgMTE1LCAzMywgNCwgMjE4LCAxNzksIDMzLCA0LCAyMTgsIDY4LCAzMywgNCwgMjM4LCAxMjUsIAotICAgIDMzLCA0LCAyMzgsIDEyMSwgMzMsIDQsIDIzOCwgMTIyLCAzMywgNCwgMjM4LCAxMjMsIDMzLCA0LCAyMTEsIDE2NCwgMzMsIAotICAgIDQsIDIxMSwgMTE5LCAzMywgNCwgMjExLCAxMzIsIDMzLCA0LCAyMTEsIDE2MywgMzMsIDQsIDIxMSwgMTM3LCAzMywgNCwgCi0gICAgMjExLCAxMzgsIDMzLCA0LCAyMTEsIDEyNCwgMzMsIDQsIDI0NywgNSwgMzMsIDQsIDI0NiwgMjQwLCAzMywgNCwgMjQ2LCAKLSAgICAyNDIsIDMzLCA0LCAyNDcsIDQsIDMzLCA0LCAyNDcsIDIsIDMzLCA0LCAyNDcsIDMsIDMzLCA0LCAyNDYsIDI0MSwgMzMsIDQsIAotICAgIDIwMSwgMjM1LCAzMywgNCwgMjAxLCAyMTMsIDMzLCA0LCAyMDEsIDIyNiwgMzMsIDQsIDIwMSwgMjM0LCAzMywgNCwgMjAxLCAKLSAgICAyMjksIDMzLCA0LCAyMDEsIDIzMCwgMzMsIDQsIDIwMSwgMjE4LCAzMywgNCwgMjQ3LCAwLCAzMywgNCwgMjQ2LCAyNDMsIAotICAgIDMzLCA0LCAyNDYsIDI0NSwgMzMsIDQsIDI0NiwgMjU1LCAzMywgNCwgMjQ2LCAyNTMsIDMzLCA0LCAyNDYsIDI1NCwgMzMsIAotICAgIDQsIDI0NiwgMjQ0LCAzMywgNCwgMjE3LCAxMywgMzMsIDQsIDIxNywgMywgMzMsIDQsIDIxNywgOSwgMzMsIDQsIDIxNywgCi0gICAgMTIsIDMzLCA0LCAyMTcsIDEwLCAzMywgNCwgMjE3LCAxMSwgMzMsIDQsIDIxNywgOCwgMzMsIDQsIDIyOCwgMTQxLCAzMywgCi0gICAgNCwgMjI4LCAxMzMsIDMzLCA0LCAyMjgsIDEzNiwgMzMsIDQsIDIyOCwgMTQwLCAzMywgNCwgMjI4LCAxMzcsIDMzLCA0LCAKLSAgICAyMjgsIDEzOCwgMzMsIDQsIDIyOCwgMTM0LCAzMywgNCwgMjAzLCAxNDAsIDMzLCA0LCAyMDMsIDEyNywgMzMsIDQsIDIwMywgCi0gICAgMTM1LCAzMywgNCwgMjAzLCAxMzksIDMzLCA0LCAyMDMsIDEzNywgMzMsIDQsIDIwMywgMTM4LCAzMywgNCwgMjAzLCAxMzQsIAotICAgIDMzLCA0LCAyMzcsIDE4MywgMzMsIDQsIDIzNywgMTczLCAzMywgNCwgMjM3LCAxNzYsIDMzLCA0LCAyMzcsIDE4MiwgMzMsIAotICAgIDQsIDIzNywgMTc4LCAzMywgNCwgMjM3LCAxNzksIDMzLCA0LCAyMzcsIDE3NSwgMzksIDM2LCAxLCAyNDgsIDE2MiwgMzksIAotICAgIDM2LCAxLCAyMDYsIDU1LCAzOSwgMzYsIDEsIDIzOCwgMTA1LCAzOSwgMzYsIDEsIDI0NCwgNzUsIDM5LCAzNiwgMSwgMjAyLCAKLSAgICA3MSwgMzksIDM2LCAxLCAyMDIsIDkyLCAzOSwgMzYsIDEsIDE3MywgMzksIDM2LCAxLCAyNDEsIDEyMiwgMzksIDM2LCAxLCAKLSAgICAyNDEsIDEwMywgMzksIDM2LCAxLCAyNDEsIDkyLCAzOSwgMzYsIDEsIDc4LCAzOSwgMzYsIDEsIDIxOSwgMzQsIDM5LCAzNiwgCi0gICAgMSwgMjQxLCAyOCwgMzksIDM2LCAxLCAyNDEsIDE3LCAzOSwgMzYsIDEsIDIwOSwgMTg3LCAzOSwgMzYsIDEsIDE1MiwgMzksIAotICAgIDM2LCAxLCAyMDgsIDE0LCAzOSwgMzYsIDEsIDI0NiwgMTcwLCAzOSwgMzYsIDEsIDIxMywgOTAsIDM5LCAzNiwgMSwgMjEzLCAKLSAgICA0NiwgMzksIDM2LCAxLCAyMzksIDIzNSwgMzksIDM2LCAxLCAyNDEsIDEzLCAzOSwgMzYsIDEsIDYzLCAzOSwgMzYsIDEsIAotICAgIDIzMSwgMTEwLCAzOSwgMzYsIDEsIDI0MywgMTI5LCAzOSwgMzYsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM5LCAzNiwgMSwgCi0gICAgMjAzLCA2NiwgMzksIDM2LCAxLCAyMDIsIDIxMywgMzksIDM2LCAxLCAyMzAsIDIyOCwgNjMsIDM5LCAzNiwgMSwgMjI3LCAKLSAgICA4NiwgMjAyLCAxODMsIDM5LCAzNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM5LCAzNiwgMSwgMjMwLCAyMjgsIDI0OCwgNzMsIAotICAgIDIwMiwgMTgzLCA1MCwgMjUwLCAyMTgsIDIxMCwgMjQxLCAyMjUsIDg4LCA1MCwgMjUwLCAyMTgsIDI0MiwgODMsIDIxMCwgCi0gICAgMjQxLCAyMjUsIDg4LCA0OSwgMjEwLCAyNDEsIDE1NSwgNTAsIDIxMCwgMjQxLCAxNTUsIDQ5LCAyNDIsIDgzLCAyMTAsIAotICAgIDI0MSwgMTU1LCA1MCwgMjQyLCA4MywgMjEwLCAyNDEsIDE1NSwgMjE2LCAxODgsIDIzMCwgMjQ5LCAyMjUsIDg4LCAyMTYsIAotICAgIDE4OCwgMjQyLCA4MywgMjMwLCAyNDksIDIyNSwgODgsIDI0MiwgODMsIDIwOCwgMTAzLCAyMjUsIDg4LCA0OSwgMjA4LCAKLSAgICAxMDMsIDE1NSwgNTAsIDIwOCwgMTAzLCAxNTUsIDIxNiwgMTg4LCAyMTEsIDE3NywgNDksIDIxNiwgMTg4LCAyMjAsIDMzLCAKLSAgICAxNTUsIDUwLCAyMTYsIDE4OCwgMjIwLCAzMywgMTU1LCAyNDEsIDE2MiwgMjQ1LCAxNjMsIDIxOSwgODcsIDIzOSwgMTYxLCAKLSAgICAyMTksIDg3LCAyMTYsIDczLCAyMzksIDE2MSwgMjE5LCA4NywgMjM1LCAyMTcsIDI0MiwgODMsIDIyMCwgOTIsIDE4MywgCi0gICAgMjUwLCAyMjcsIDE3NywgMjUwLCAyMjcsIDI0MiwgODMsIDIxNiwgMTEsIDI1MCwgMjE3LCA1MiwgMjIwLCA4OSwgMjM1LCAKLSAgICAyMjAsIDIzMCwgMjM5LCAyMzAsIDI0NywgMjE5LCAxMzUsIDI0NywgMjIzLCAyMzUsIDIyMSwgMywgMjQzLCAyMzEsIDIwOCwgCi0gICAgMjI4LCAzLCAyMTUsIDI1MywgNTUsIDQ5LCAxMjQsIDIxOSwgNzksIDE1NSwgNTAsIDEyNCwgMjE5LCA3OSwgMTU1LCAyMDgsIAotICAgIDIyOCwgMywgNzAsIDU1LCAyMDgsIDIyOCwgMywgNzAsIDU2LCA0OSwgODAsIDI0OCwgMjMxLCAzLCAyMTcsIDQxLCA1MCwgCi0gICAgODAsIDI0OCwgMjMxLCAzLCAyMTcsIDQxLCAyMDgsIDE0NSwgNDksIDE2MiwgMTU1LCAyMDgsIDE0NSwgNTAsIDE2MiwgMTU1LCAKLSAgICAyNDcsIDI0OCwgNDksIDE2MiwgMTU1LCAyNDcsIDI0OCwgNTAsIDE2MiwgMTU1LCA0OSwgMjEyLCAxNTQsIDEwNiwgMTU1LCAKLSAgICA1MCwgMjEyLCAxNTQsIDEwNiwgMTU1LCA0OSwgNTIsIDIxOSwgNzYsIDUwLCA1MiwgMjE5LCA3NiwgMTIwLCAxODcsIDExNSwgCi0gICAgMTE4LCA3MCwgMjE3LCAxNzgsIDExOCwgNzAsIDExNSwgMTIwLCAxODcsIDIxNywgMTc4LCAxMDMsIDIzOSwgMTQ3LCA3MCwgCi0gICAgMjE3LCAxNzgsIDIzOSwgMjMzLCA3MCwgODIsIDIxNiwgNzMsIDIxNywgNDcsIDgyLCA4MCwgMjA4LCAyMjcsIDIxNSwgMjUzLCAKLSAgICAyMTgsIDYyLCAyMDMsIDIzOCwgMjEzLCAxMzEsIDEwMSwgMjQzLCA4NSwgMjA3LCAxNzQsIDI0NSwgMjMzLCAyMTYsIDE4OCwgCi0gICAgMjQzLCA4NSwgMjE2LCAxODgsIDI0NSwgMjMzLCAyMDcsIDE3NCwgMjEzLCAxNDMsIDI0NCwgMTk2LCAzLCA0OSwgMjM3LCAKLSAgICAyMjQsIDI0NCwgMTk2LCAzLCA1MCwgMjM3LCAyMjQsIDIwNywgMTc0LCAyNDQsIDE5NSwgMjA4LCAxNDUsIDE2MiwgMjE0LCAKLSAgICAxNjgsIDU0LCAyMDcsIDEzNSwgMjQ0LCAxNDQsIDIwOSwgMzAsIDI0NCwgMTQ0LCAyMTEsIDc2LCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgODAsIDIxMiwgODgsIDI0MywgODMsIDIwNCwgMjEsIDgwLCAyMjcsIDExNCwgMjQ3LCA0NiwgNTIsIDIzNSwgMjIwLCAKLSAgICAyMTYsIDczLCAyNDUsIDIzMywgNTIsIDIyNiwgMjUyLCAyMTcsIDMxLCA4MiwgMTIsIDQwLCAyMTYsIDEwMCwgMTIsIDQwLCAKLSAgICAyNDYsIDI2LCAxMiwgNDAsIDIxNCwgMTcxLCAxMDUsIDEyLCA0MCwgMjE0LCAxNzEsIDEwOCwgMTIsIDQwLCAyMTQsIDE3MSwgCi0gICAgMTQ3LCAxMiwgNDAsIDIxOCwgMjI5LCAxMiwgNDAsIDI0NywgMjMzLCAxMiwgNDAsIDIxMCwgOCwgMTIsIDQwLCAyMjksIDM0LCAKLSAgICAxMDUsIDEyLCA0MCwgMjI5LCAzNCwgMTA4LCAxMiwgNDAsIDI0MywgMTM4LCAxMiwgNDAsIDIxNCwgMTc1LCAxMiwgNDAsIDUsIAotICAgIDEwNSwgMTIsIDQwLCA1LCAxMDgsIDEyLCA0MCwgMjI4LCAyMywgMTA1LCAxMiwgNDAsIDIyOCwgMjMsIDEwOCwgMTIsIDQwLCAKLSAgICAyMjgsIDIzLCAxNDcsIDEyLCA0MCwgMjI4LCAyMywgMTQ5LCAxMiwgNDAsIDIxMiwgMjQsIDEyLCA0MCwgMjA5LCAzMywgMTIsIAotICAgIDQwLCAyMTIsIDIyLCAxMDUsIDEyLCA0MCwgMjEyLCAyMiwgMTA4LCAxMiwgNDAsIDIzNywgNTYsIDEwNSwgMTIsIDQwLCAKLSAgICAyMzcsIDU2LCAxMDgsIDEyLCA0MCwgMjM3LCAxMjMsIDEyLCA0MCwgMjE2LCAxNzgsIDEyLCA0MCwgMjQ2LCAxMTIsIDEyLCAKLSAgICA0MCwgMjEwLCAyMTQsIDEyLCA0MCwgMjI0LCAyOSwgMTIsIDQwLCAyNDQsIDczLCAxMiwgNDAsIDIyNCwgMjAsIDEyLCA0MCwgCi0gICAgMjQ2LCA0NCwgMTIsIDQwLCAyMDQsIDgxLCAxMDUsIDEyLCA0MCwgMjA0LCA4MSwgMTA4LCAxMiwgNDAsIDIzOSwgMjQ5LCAKLSAgICAxMiwgNDAsIDIxOSwgNDYsIDEwNSwgMTIsIDQwLCAyMTksIDQ2LCAxMDgsIDEyLCA0MCwgMjEyLCAxMjcsIDE2MiwgMjA4LCAKLSAgICA5NiwgMjA4LCAyNSwgMTIsIDQwLCAyNDUsIDE0OSwgMTIsIDQwLCAyNDMsIDEwMiwgMTIsIDQwLCAyMzAsIDE3NiwgMTIsIAotICAgIDQwLCAyNDgsIDE1LCA3NiwgMjQ2LCAxMCwgMTIsIDQwLCAyNDAsIDE5MSwgMTIsIDQwLCAyMTEsIDE5OSwgMTA1LCAxMiwgCi0gICAgNDAsIDIxMSwgMTk5LCAxMDgsIDEyLCA0MCwgMjQ4LCAyNDQsIDEyLCA0MCwgMjEyLCAxMzQsIDEyLCA0MCwgMjQ3LCAxMjIsIAotICAgIDIxMiwgMTM0LCAxMiwgNDAsIDIyMiwgMjIwLCAxMDUsIDEyLCA0MCwgMjIyLCAyMjAsIDEwOCwgMTIsIDQwLCAyMjIsIDIyMCwgCi0gICAgMTQ3LCAxMiwgNDAsIDIyMiwgMjIwLCAxNDksIDEyLCA0MCwgMjI0LCAyMjcsIDEyLCA0MCwgMjEzLCAzNywgMTIsIDQwLCAKLSAgICAyMTYsIDE4NCwgMTIsIDQwLCAyNDAsIDIxOSwgMTIsIDQwLCAyMjAsIDQ1LCAxMiwgNDAsIDI0NywgMjAxLCAxMDUsIDEyLCAKLSAgICA0MCwgMjQ3LCAyMDEsIDEwOCwgMTIsIDQwLCAyMjUsIDE1LCAxMiwgNDAsIDIyNCwgMjQsIDEyLCA0MCwgMjM4LCAxLCAxMDUsIAotICAgIDEyLCA0MCwgMjM4LCAxLCAxMDgsIDEyLCA0MCwgMjM4LCAxLCAxNDcsIDEyLCA0MCwgMjA4LCAyNDUsIDEyLCA0MCwgMjQ2LCAKLSAgICA5LCAxMiwgNDAsIDIwNCwgNDYsIDEwNSwgMTIsIDQwLCAyMDQsIDQ2LCAxMDgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxNCwgCi0gICAgMTY1LCAxMiwgNDAsIDIxMiwgMTI3LCAyMzYsIDUzLCAxMiwgNDAsIDIzNiwgNTMsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxMSwgCi0gICAgMjExLCAxMiwgNDAsIDI0NywgMTIyLCAyMTMsIDMyLCAxMiwgNDAsIDIzOSwgMTcyLCAxMiwgNDAsIDI0NywgMTIyLCAyNDcsIAotICAgIDIzLCAxMiwgNDAsIDIxMiwgMTI3LCAyMDQsIDEwMSwgMTIsIDQwLCAyMDQsIDEwMiwgMTA1LCAxMiwgNDAsIDIwNCwgMTAyLCAKLSAgICAxMDgsIDEyLCA0MCwgMjQ2LCA0NywgMTIsIDQwLCAyNDcsIDEyMiwgMjM4LCAzMSwgMTIsIDQwLCAxNjMsIDEwNSwgMTIsIAotICAgIDQwLCAxNjMsIDEwOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjI3LCAyOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjM4LCAyMTYsIDEyLCAKLSAgICA0MCwgMjI0LCAxNiwgMTA1LCAxMiwgNDAsIDIyNCwgMTYsIDEwOCwgMTIsIDQwLCAyMTYsIDE5MCwgMTIsIDQwLCAyNDgsIAotICAgIDI1LCAxMiwgNDAsIDI0NywgMTIyLCAyMDksIDIyNCwgMjI3LCAyMjgsIDEyLCA0MCwgMjQ3LCAxMjIsIDIyNywgMjI5LCAxMiwgCi0gICAgNDAsIDI0NywgMTIyLCAyMDQsIDE2LCAxMiwgNDAsIDI0NywgMTIyLCAyMzksIDE5MCwgMTIsIDQwLCAyNDEsIDE3MywgMTA1LCAKLSAgICAxMiwgNDAsIDI0MSwgMTczLCAxMDgsIDEyLCA0MCwgMjQxLCAxNzMsIDE0NywgMTIsIDQwLCAyNDcsIDEyMiwgMjQxLCAxNzIsIAotICAgIDEyLCA0MCwgMjM3LCA2NCwgMTIsIDQwLCAyNDcsIDEyMiwgMjM2LCA0OSwgMTIsIDQwLCAyNDgsIDExLCAxMiwgNDAsIDIzOCwgCi0gICAgODksIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOSwgMjQzLCAxMiwgNDAsIDI0NywgMTIyLCAyNDgsIDYwLCAxMiwgNDAsIDI0NywgCi0gICAgMTIyLCAyMTUsIDEsIDEyLCA0MCwgMjEyLCAxMjcsIDIwNCwgMzgsIDEyLCA0MCwgMjEyLCAxMjcsIDIwMywgNDQsIDEyLCAKLSAgICA0MCwgMjQ3LCAxMjIsIDIzOSwgMTIxLCAxMiwgNDAsIDIzMCwgMTgzLCAyNDAsIDIyNCwgMTIsIDQwLCAyNDcsIDEyMiwgCi0gICAgMjQwLCAyMjQsIDEyLCA0MCwgMjMwLCAxODMsIDIwOCwgMTQ2LCAxMiwgNDAsIDI0NywgMTIyLCAyMDgsIDE0NiwgMTIsIDQwLCAKLSAgICAyMzAsIDE4MywgMjQyLCA2MSwgMTIsIDQwLCAyNDcsIDEyMiwgMjQyLCA2MSwgMTIsIDQwLCAyMDcsIDE3MSwgMTIsIDQwLCAKLSAgICAyMzAsIDE4MywgMjA3LCAxNzEsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwNywgMTcxLCA3MSwgNDAsIDEwNSwgNzEsIDQwLCAyMjcsIAotICAgIDExNCwgNzEsIDQwLCAyNDMsIDg1LCA3MSwgNDAsIDIxMiwgNTcsIDcxLCA0MCwgMjE0LCAxNzAsIDcxLCA0MCwgMTEzLCA3MSwgCi0gICAgNDAsIDEwOCwgNzEsIDQwLCAyMjcsIDE0MywgNzEsIDQwLCAyMjUsIDEyMiwgNzEsIDQwLCAyMjcsIDIwNywgNzEsIDQwLCAKLSAgICAyNDEsIDY3LCA3MSwgNDAsIDE5OSwgNzEsIDQwLCAxMjEsIDI0NywgMjMzLCA3MSwgNDAsIDI0NSwgMTUxLCA3MSwgNDAsIAotICAgIDIzNSwgMTYyLCA3MSwgNDAsIDIxMCwgOCwgNzEsIDQwLCAxNzEsIDI0NywgMjMzLCA3MSwgNDAsIDIyOSwgMzMsIDcxLCA0MCwgCi0gICAgMjE4LCAxNiwgNzEsIDQwLCAyMDMsIDIyOCwgNzEsIDQwLCAyMTEsIDE5MCwgNzEsIDQwLCA1MCwgMTcxLCAyNDcsIDIzMywgCi0gICAgNzEsIDQwLCAyMzYsIDI1NSwgMjQxLCA4NywgNzEsIDQwLCAyMDksIDE1MiwgNzEsIDQwLCAyNDMsIDEzOCwgNzEsIDQwLCAKLSAgICAyMTQsIDE3NSwgNzEsIDQwLCAyNDYsIDI2LCA3MSwgNDAsIDIxNywgMjI2LCA3MSwgNDAsIDI1MSwgODAsIDcxLCA0MCwgCi0gICAgMjI0LCA3LCA3MSwgNDAsIDI0MSwgODcsIDcxLCA0MCwgMjQxLCAxNzksIDcxLCA0MCwgMjE0LCAxOTcsIDcxLCA0MCwgMjM4LCAKLSAgICAzOSwgNzEsIDQwLCAyMzgsIDQwLCAyMTIsIDM4LCA3MSwgNDAsIDI0MCwgMjIzLCA3MSwgNDAsIDI0OCwgNzIsIDcxLCA0MCwgCi0gICAgMjAzLCAyNTAsIDcxLCA0MCwgMjQ2LCAxMzMsIDcxLCA0MCwgMjE1LCAyMDcsIDcxLCA0MCwgMjMxLCA0NSwgNzEsIDQwLCAKLSAgICAyMTIsIDM2LCA3MSwgNDAsIDIyOCwgMjIsIDcxLCA0MCwgMjQ1LCAxNjEsIDcxLCA0MCwgMjExLCAxODEsIDcxLCA0MCwgCi0gICAgMjI0LCAxMiwgNzEsIDQwLCAyMTUsIDI0MSwgNzEsIDQwLCAyMDMsIDIzNSwgNzEsIDQwLCAyMjAsIDI1LCA3MSwgNDAsIAotICAgIDIwNywgMTgwLCA3MSwgNDAsIDI0MiwgNDQsIDcxLCA0MCwgMjEyLCAyMjgsIDIwOSwgMzMsIDcxLCA0MCwgMjQyLCA4MywgCi0gICAgMjQ2LCAyNiwgNzEsIDQwLCAxNjMsIDIxMSwgMzgsIDcxLCA0MCwgMTIwLCAyMzcsIDk5LCA3MSwgNDAsIDIxMiwgMjM0LCAKLSAgICA3MSwgNDAsIDI0NywgMjQwLCA3MSwgNDAsIDIxMiwgMjEsIDcxLCA0MCwgMjQ3LCAyMDUsIDcxLCA0MCwgMjExLCA3NSwgNzEsIAotICAgIDQwLCAyMzcsIDU1LCA3MSwgNDAsIDIzNywgMTM4LCA3MSwgNDAsIDI0MywgODgsIDcxLCA0MCwgMjM3LCAxMjMsIDcxLCA0MCwgCi0gICAgMjQ3LCAyMjMsIDcxLCA0MCwgMjE2LCAxNzgsIDcxLCA0MCwgMjE0LCAxODMsIDcxLCA0MCwgMjQzLCAxNjksIDcxLCA0MCwgCi0gICAgMjUwLCA5LCA3MSwgNDAsIDIxMSwgMTc3LCA3MSwgNDAsIDIyMSwgMTY1LCA3MSwgNDAsIDIxMCwgMjE0LCA3MSwgNDAsIAotICAgIDIxNCwgMjA4LCA3MSwgNDAsIDIyNCwgMjksIDcxLCA0MCwgMjA4LCA5NSwgNzEsIDQwLCAyMjgsIDk5LCA3MSwgNDAsIDIxMSwgCi0gICAgNjEsIDcxLCA0MCwgMjQ0LCA3MywgNzEsIDQwLCAyMDQsIDYxLCA3MSwgNDAsIDI0MywgMTE0LCAyMjEsIDE2NSwgNzEsIDQwLCAKLSAgICAyNDUsIDIyOSwgNzEsIDQwLCAyMzksIDk1LCA3MSwgNDAsIDI0NiwgMzgsIDcxLCA0MCwgMjExLCA4MCwgNzEsIDQwLCAyMDQsIAotICAgIDgwLCA3MSwgNDAsIDIzOSwgMjQ5LCA3MSwgNDAsIDI0NiwgMzQsIDcxLCA0MCwgMjQwLCA2NywgNzEsIDQwLCA1MiwgMjAzLCAKLSAgICAxOTYsIDcxLCA0MCwgMTYyLCAyMDgsIDk2LCAyMDgsIDI1LCA3MSwgNDAsIDIxMiwgNTAsIDcxLCA0MCwgMjQwLCA3OSwgNzEsIAotICAgIDQwLCAyNDUsIDE0OSwgNzEsIDQwLCAyNDMsIDEwMiwgNzEsIDQwLCAyMTcsIDIyMywgNzEsIDQwLCAyMzAsIDE3NiwgNzEsIAotICAgIDQwLCAyMjQsIDI0OSwgNzEsIDQwLCAyMDgsIDIyNiwgNzEsIDQwLCAyMTAsIDE2NCwgNzEsIDQwLCAyMjcsIDEzNywgNzEsIAotICAgIDQwLCAyMDYsIDE5MSwgNzEsIDQwLCAyNDAsIDI0LCA3MSwgNDAsIDI0OCwgMTUsIDc2LCAyNDYsIDEwLCA3MSwgNDAsIDIxMiwgCi0gICAgMTU4LCA3MSwgNDAsIDI0MiwgODMsIDIwOSwgMTQ0LCA3MSwgNDAsIDIwNCwgMzMsIDcxLCA0MCwgMjEyLCA2NSwgNzEsIDQwLCAKLSAgICAyNDMsIDE1NiwgNzEsIDQwLCAyNDAsIDE5MSwgNzEsIDQwLCAyMTEsIDIxNCwgNzEsIDQwLCA0NywgNzEsIDQwLCAyMTEsIAotICAgIDYzLCA3MSwgNDAsIDIxMSwgMTk4LCA3MSwgNDAsIDIwOCwgMTE4LCA3MSwgNDAsIDIzOCwgMTAsIDcxLCA0MCwgMjQ3LCAxMCwgCi0gICAgNzEsIDQwLCAyMTEsIDk4LCA3MSwgNDAsIDI0OCwgMjQ0LCA3MSwgNDAsIDIxNiwgNTIsIDcxLCA0MCwgMjEyLCAxMzQsIDcxLCAKLSAgICA0MCwgMjMwLCAxNjgsIDcxLCA0MCwgMjIyLCAyMTksIDcxLCA0MCwgMjEzLCAzNywgNzEsIDQwLCAyNDAsIDU1LCA3MSwgNDAsIAotICAgIDIyMCwgNDUsIDcxLCA0MCwgMjUwLCAyMjYsIDcxLCA0MCwgMjE4LCA4MywgNzEsIDQwLCAyNDEsIDE4MywgNzEsIDQwLCAKLSAgICAyNDcsIDIwMCwgNzEsIDQwLCAyMjUsIDE1LCA3MSwgNDAsIDIyNCwgMTA0LCA3MSwgNDAsIDIxMywgMTQ5LCA3MSwgNDAsIAotICAgIDI1MCwgOTgsIDcxLCA0MCwgMjI0LCAyNCwgNzEsIDQwLCAyMDgsIDE1MCwgNzEsIDQwLCAyMTksIDI1MiwgNzEsIDQwLCAKLSAgICAyNDgsIDE5LCA3MSwgNDAsIDIxMSwgNTksIDcxLCA0MCwgMjQ1LCAyNDEsIDcxLCA0MCwgMjM4LCAwLCA3MSwgNDAsIDIwOCwgCi0gICAgMjQ1LCA3MSwgNDAsIDIzMSwgOSwgNzEsIDQwLCAyNDgsIDMxLCA3MSwgNDAsIDIwNCwgMTAyLCAyNDEsIDg3LCA3MSwgNDAsIAotICAgIDI0NiwgOSwgNzEsIDQwLCAyMDQsIDQ1LCA3MSwgNDAsIDIxNCwgMTY1LCA3MSwgNDAsIDIzNiwgNTMsIDcxLCA0MCwgMjExLCAKLSAgICAyMTEsIDcxLCA0MCwgMjA2LCA3OSwgNzEsIDQwLCAyNDgsIDE1NywgNzEsIDQwLCAyMTgsIDEzMSwgNzEsIDQwLCAyNDksIAotICAgIDEzLCA3MSwgNDAsIDIxMywgMzIsIDcxLCA0MCwgMjE2LCAxMzcsIDcxLCA0MCwgMjE1LCAxMjgsIDcxLCA0MCwgMjM5LCAKLSAgICAxNzIsIDcxLCA0MCwgMjQ4LCAxNywgNzEsIDQwLCAyNDcsIDIzLCA3MSwgNDAsIDI0OCwgNDgsIDcxLCA0MCwgMjI0LCAyNiwgCi0gICAgNzEsIDQwLCAyMDQsIDEwMSwgNzEsIDQwLCAyNDYsIDQ3LCA3MSwgNDAsIDIwNCwgMTIsIDcxLCA0MCwgMjQzLCAxNDksIDcxLCAKLSAgICA0MCwgMjA1LCAyMTQsIDcxLCA0MCwgMjM4LCAzMSwgNzEsIDQwLCAyMjcsIDI4LCA3MSwgNDAsIDIzOCwgMjE2LCA3MSwgNDAsIAotICAgIDIyNCwgMTUsIDcxLCA0MCwgMjEyLCA1NiwgNzEsIDQwLCAyMTIsIDIyOCwgMjA5LCAyNDcsIDI0OCwgNjAsIDcxLCA0MCwgCi0gICAgMjE2LCAxOTAsIDcxLCA0MCwgMjQ4LCAyNSwgNzEsIDQwLCAyMDMsIDIxOSwgNzEsIDQwLCAyNDAsIDEwMiwgNzEsIDQwLCAKLSAgICAyMjcsIDIyOCwgNzEsIDQwLCAyMDksIDIyNCwgMjI3LCAyMjgsIDcxLCA0MCwgMjI3LCAyMjQsIDcxLCA0MCwgMjExLCAyNDAsIAotICAgIDcxLCA0MCwgMjI3LCAyMjksIDcxLCA0MCwgMjA0LCAxNiwgNzEsIDQwLCAyMzksIDE5MCwgNzEsIDQwLCAyNDEsIDE3MiwgCi0gICAgNzEsIDQwLCAyMzcsIDY0LCA3MSwgNDAsIDIzOSwgMTM2LCA3MSwgNDAsIDIzNiwgNDksIDcxLCA0MCwgMjQ4LCAxMSwgNzEsIAotICAgIDQwLCAyMDksIDIzMywgNzEsIDQwLCAyMzcsIDE0NSwgNzEsIDQwLCAyNDAsIDE3LCA3MSwgNDAsIDIxNSwgMzAsIDIwNCwgCi0gICAgMTIsIDcxLCA0MCwgMjQ3LCAxMiwgNzEsIDQwLCAyMzgsIDg5LCA3MSwgNDAsIDIzOSwgMjQzLCA3MSwgNDAsIDI0OCwgNjAsIAotICAgIDcxLCA0MCwgMjE1LCAxLCA3MSwgNDAsIDI0NCwgNTgsIDcxLCA0MCwgMjA0LCAzOCwgNzEsIDQwLCAyMzcsIDM0LCA3MSwgCi0gICAgNDAsIDIwMywgNDQsIDcxLCA0MCwgMjI0LCAxMTUsIDcxLCA0MCwgMjQ4LCA0MywgNzEsIDQwLCAyNDEsIDk5LCA3MSwgNDAsIAotICAgIDIzOSwgMTIxLCA3MSwgNDAsIDIwOCwgNjcsIDcxLCA0MCwgMjQyLCA0NiwgNzEsIDQwLCAyMTYsIDE3MiwgNzEsIDQwLCAKLSAgICAyMjEsIDE2NywgNzEsIDQwLCAyNDAsIDIyNCwgNzEsIDQwLCAyMDgsIDE0NiwgNzEsIDQwLCAyNDIsIDYxLCA3MSwgNDAsIAotICAgIDIwNywgMTcxLCA3MSwgNDAsIDIzOSwgMTkzLCAxMzksIDI0NCwgMTgsIDE2NywgNDksIDIwOCwgMTczLCAyMTYsIDE2LCAKLSAgICAxMzksIDI0NCwgMTgsIDE2NywgODcsIDIwOCwgMTczLCA1NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDQ5LCAyMDgsIDE3MywgCi0gICAgMTAxLCAyNSwgMjE2LCAxNiwgMTM5LCAyNDQsIDE4LCAxNjcsIDg3LCAyMDgsIDE3MywgMTAxLCAyNSwgNTYsIDEzOSwgMjQ0LCAKLSAgICAxOCwgMTY3LCAyMzksIDEwMiwgMjEwLCAxODYsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDU1LCAKLSAgICAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCA1NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAKLSAgICAyMzksIDEyMCwgMjI3LCAyMjIsIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIwNiwgMjIxLCAyMjcsIAotICAgIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjA2LCAyMjEsIDIxNiwgMTYsIDEzOSwgMjQ0LCAKLSAgICAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDIyNiwgMjUxLCAyMjcsIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxOSwgCi0gICAgMjAyLCAxMzksIDIxMSwgMjI4LCAxMzksIDI0NSwgMjMzLCAxMzksIDIzOSwgMTAyLCAyMTEsIDYxLCAyNDMsIDE0NiwgODIsIAotICAgIDIzMCwgMTY5LCAyMzEsIDI5LCAyMTEsIDk3LCA5NywgMTM5LCAyMzAsIDE5OSwgODIsIDEzOSwgMjQ2LCAxMiwgODIsIDEzOSwgCi0gICAgNDIsIDIwMiwgODQsIDQ5LCAyNTAsIDIxOCwgMTU1LCA1MCwgMjUwLCAyMTgsIDE1NSwgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAKLSAgICA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDQ5LCAyNDUsIDE2NiwgMTU1LCA1MCwgMjQ1LCAxNjYsIDE1NSwgNDksIDYxLCAyNDUsIAotICAgIDE2NiwgMTU1LCA1MCwgNjEsIDI0NSwgMTY2LCAxNTUsIDQ5LCA2MiwgMjI3LCAxODUsIDE1NSwgNTAsIDYyLCAyMjcsIDE4NSwgCi0gICAgMTU1LCAyMTgsIDI5LCA4MiwgMjM4LCAxNTgsIDgyLCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDIwOCwgMTMzLCAKLSAgICAyMTMsIDMzLCAxNTUsIDQ5LCA2MSwgMjI3LCAxODUsIDE1NSwgNTAsIDYxLCAyMjcsIDE4NSwgMTU1LCA0OSwgNjEsIDIwOCwgCi0gICAgMTMzLCAyMTMsIDMzLCAxNTUsIDUwLCA2MSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNDksIDYxLCA1MSwgMTU1LCA1MCwgCi0gICAgNjEsIDUxLCAxNTUsIDIwNCwgNzYsIDI0NCwgMTQ0LCAyMTYsIDczLCA1MiwgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCA1MiwgCi0gICAgMjE3LCAyMzcsIDIxNywgMzEsIDgyLCAxMjQsIDUyLCAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDIxOCwgMjksIDEzMSwgMjQwLCAKLSAgICAxMDIsIDIzNywgOTcsIDIyMSwgNDQsIDEwNSwgMjM3LCA5NywgMjIxLCA0NCwgMTA4LCAyMzcsIDk3LCAyMjEsIDQ0LCAxNDcsIAotICAgIDIzNywgOTcsIDIyMSwgNDQsIDE0OSwgMjM3LCA5NywgMjIxLCA0NCwgMTcwLCAyMzcsIDk3LCAyMjEsIDQ0LCAxOTUsIDIzNywgCi0gICAgOTcsIDIyMSwgNDQsIDIxMywgMTExLCAyMzcsIDk3LCAyMjEsIDQ0LCAxOTksIDIzNywgOTcsIDIyMSwgNDQsIDIyMiwgNjMsIAotICAgIDEzOSwgMjI3LCAxNjcsIDE0MywgODIsIDEzOSwgMjE1LCAyNDUsIDE0MywgODIsIDEzOSwgMjQ0LCAyNywgMTQzLCA4MiwgCi0gICAgMTM5LCAyNDEsIDY2LCAxNDMsIDgyLCAyOCwgMjEyLCAxMjAsIDcwLCAxNDMsIDgyLCAyOCwgNTIsIDcwLCAxNDMsIDgyLCAKLSAgICAyMDQsIDcyLCAyNDQsIDE0NCwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDgyLCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMywgCi0gICAgMjA1LCAxODYsIDIxMSwgMjQxLCA4MiwgODAsIDIzMCwgMywgMjE2LCAxMDEsIDEzMSwgMjA2LCAyMjEsIDIzNywgMTM3LCAKLSAgICA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMywgMjA1LCAxODYsIDIxMSwgMjQxLCAxMzEsIDIwNiwgMjIxLCAyMzcsIDEzNywgODAsIAotICAgIDIzMCwgMywgMjE2LCAxMDEsIDEzMSwgMjI2LCAyNTEsIDIzNywgMTM3LCA0MywgMjE4LCAyOSwgODIsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDIyNywgMTE1LCAyNDAsIDUyLCAyMTMsIDEzMSwgOTcsIDIzNywgOTcsIDIyMSwgNDQsIDIwOSwgMTUyLCAyMzcsIAotICAgIDk3LCAyMjEsIDQ0LCAyMDcsIDE1MSwgMjM3LCA5NywgMjIxLCA0NCwgMjA5LCA1MywgODAsIDEzOSwgMjMwLCAxOTksIDgyLCAKLSAgICAyMjUsIDcyLCA4MiwgMjE5LCA3MSwgMjUwLCAyNTEsIDgyLCAxMzksIDU3LCAyMzEsIDMxLCAxMzksIDE2MiwgMjQwLCAxMCwgCi0gICAgMjExLCAyMjgsIDE3MiwgMSwgNSwgNjMsIDE3MiwgMSwgNjMsIDE3MiwgMSwgNSwgNzUsIDE3MiwgMSwgNzUsIDE3MiwgMSwgCi0gICAgNSwgNjgsIDE3MiwgMSwgNjgsIDE3MiwgMSwgNSwgNzQsIDE3MiwgMSwgNzQsIDE3MiwgMSwgNSwgNzgsIDE3MiwgMSwgNzgsIAotICAgIDE3MiwgMSwgMTczLCAxNzIsIDEsIDIzOSwgOCwgMTcyLCAxLCAyMjksIDEwMCwgMTcyLCAxLCAyMzgsIDgxLCAxNzIsIDEsIAotICAgIDIyOCwgMjA5LCAxNzIsIDEsIDIzNywgMjMwLCAxNzIsIDEsIDIyOSwgMjAxLCAxNzIsIDEsIDIzOCwgMTkwLCAxNzIsIDEsIAotICAgIDIyOSwgMjYsIDE3MiwgMSwgMjM4LCAzOSwgMTcyLCAxLCAyMTUsIDM2LCAxNzIsIDEsIDIwMiwgMTE2LCAxNzIsIDEsIDIxMiwgCi0gICAgMTYyLCAxNzIsIDEsIDIwMiwgMzksIDE3MiwgMSwgMjExLCAxMCwgMTcyLCAxLCAyMDIsIDYsIDE3MiwgMSwgMjE0LCAxNzcsIAotICAgIDE3MiwgMSwgMjAyLCA5MiwgMTcyLCAxLCAyMTIsIDEzLCAxNzIsIDEsIDIwMiwgMTcsIDE3MiwgMSwgMjEwLCAyMiwgMTcyLCAKLSAgICAxLCAyNDQsIDIxMiwgMTcyLCAxLCAyMDksIDIsIDE3MiwgMSwgMjQzLCAyMzMsIDE3MiwgMSwgNSwgMjA3LCAyMDMsIDE3MiwgCi0gICAgMSwgMjA3LCAyMDMsIDE3MiwgMSwgMjQyLCA0MiwgMTcyLCAxLCAyMDksIDE4NywgMTcyLCAxLCAyNDQsIDc1LCAxNzIsIDEsIAotICAgIDEzNSwgMTcyLCAxLCAyNDMsIDExMywgMTcyLCAxLCAyMDEsIDIwMSwgMTcyLCAxLCAyMjIsIDEwMCwgMTcyLCAxLCAyMjEsIAotICAgIDg0LCAxNzIsIDEsIDIyMiwgMjQwLCAxNzIsIDEsIDIyMSwgMTkxLCAxNzIsIDEsIDE1MiwgMTcyLCAxLCAyNDksIDMyLCAKLSAgICAxNzIsIDEsIDE4NSwgMTcyLCAxLCAyMzcsIDMsIDE3MiwgMSwgMjQ4LCA4NiwgMTcyLCAxLCAyMTgsIDE2NywgMTcyLCAxLCAKLSAgICAyMzYsIDI2LCAxNzIsIDEsIDI0NywgMTkzLCAxNzIsIDEsIDIxNywgMTkxLCAxNzIsIDEsIDIzNywgNjcsIDE3MiwgMSwgCi0gICAgMjQ4LCAxNjIsIDE3MiwgMSwgMjE5LCAzNCwgMTcyLCAxLCAyMzYsIDEzNiwgMTcyLCAxLCAyNDgsIDIzLCAxNzIsIDEsIAotICAgIDIxOCwgNjksIDE3MiwgMSwgMTkyLCAxNzIsIDEsIDIyNCwgMTU1LCAxNzIsIDEsIDIyMywgMjQ2LCAxNzIsIDEsIDIyNSwgCi0gICAgMjAsIDE3MiwgMSwgMjI0LCA4MiwgMTcyLCAxLCA1LCAxOTgsIDE3MiwgMSwgMTk4LCAxNzIsIDEsIDUsIDIwMiwgMjEzLCAKLSAgICAxNzIsIDEsIDIwMiwgMjEzLCAxNzIsIDEsIDUsIDIwMiwgMjQ3LCAxNzIsIDEsIDIwMiwgMjQ3LCAxNzIsIDEsIDIxNiwgCi0gICAgMjIwLCAxNzIsIDEsIDIxNiwgNTcsIDE3MiwgMSwgMjE1LCAxNDUsIDE3MiwgMSwgMjE2LCAxNTgsIDE3MiwgMSwgMjE1LCAKLSAgICAyMjcsIDE3MiwgMSwgNSwgMjA0LCAxMTEsIDE3MiwgMSwgMjA0LCAxMTEsIDE3MiwgMSwgMjA0LCAzMCwgMTcyLCAxLCAyMDQsIAotICAgIDYyLCAxNzIsIDEsIDIwNCwgMCwgMTcyLCAxLCAyMjMsIDE2MywgMTcyLCAxLCAyMDQsIDE2MywgMTcyLCAxLCA1LCAxNzMsIAotICAgIDE3MiwgMSwgNSwgMjI5LCAyMDEsIDM5LCAyMjksIDIyNSwgMjA1LCAxODYsIDIxMSwgMjQxLCA4MiwgMzksIDIyOSwgMjI1LCAKLSAgICAyMTMsIDE0OCwgMjExLCAyNDEsIDgyLCAyMjksIDIyNSwgMjA1LCAxODYsIDIxMSwgMjQxLCA4MiwgMjI5LCAyMjUsIDIxMywgCi0gICAgMTQ4LCAyMTEsIDI0MSwgODIsIDE3MiwgMjMwLCAxOTksIDgyLCAxNzIsIDIwNSwgMTg2LCAyMzAsIDE5OSwgODIsIDE3MiwgCi0gICAgMjQzLCAxOTIsIDIwMiwgMjI4LCAyMjksIDIyNSwgNTIsIDIzNSwgMjIwLCA2NywgMSwgNSwgNjMsIDY3LCAxLCA2MywgNjcsIAotICAgIDEsIDUsIDc1LCA2NywgMSwgNzUsIDY3LCAxLCA1LCA2OCwgNjcsIDEsIDY4LCA2NywgMSwgNSwgNzQsIDY3LCAxLCA3NCwgCi0gICAgNjcsIDEsIDUsIDc4LCA2NywgMSwgNzgsIDY3LCAxLCAxNzMsIDY3LCAxLCAyMzksIDgsIDY3LCAxLCAyMjksIDEwMCwgNjcsIAotICAgIDEsIDIzOCwgODEsIDY3LCAxLCAyMjgsIDIwOSwgNjcsIDEsIDIzNywgMjMwLCA2NywgMSwgMjI5LCAyMDEsIDY3LCAxLCAKLSAgICAyMzgsIDE5MCwgNjcsIDEsIDIyOSwgMjYsIDY3LCAxLCAyMzgsIDM5LCA2NywgMSwgMjE1LCAzNiwgNjcsIDEsIDIwMiwgCi0gICAgMTE2LCA2NywgMSwgMjEyLCAxNjIsIDY3LCAxLCAyMDIsIDM5LCA2NywgMSwgMjExLCAxMCwgNjcsIDEsIDIwMiwgNiwgNjcsIAotICAgIDEsIDIxNCwgMTc3LCA2NywgMSwgMjAyLCA5MiwgNjcsIDEsIDIxMiwgMTMsIDY3LCAxLCAyMDIsIDE3LCA2NywgMSwgMjEwLCAKLSAgICAyMiwgNjcsIDEsIDI0NCwgMjEyLCA2NywgMSwgMjA5LCAyLCA2NywgMSwgMjQzLCAyMzMsIDY3LCAxLCA1LCAyMDcsIDIwMywgCi0gICAgNjcsIDEsIDIwNywgMjAzLCA2NywgMSwgMjQyLCA0MiwgNjcsIDEsIDIwOSwgMTg3LCA2NywgMSwgMjQ0LCA3NSwgNjcsIDEsIAotICAgIDEzNSwgNjcsIDEsIDI0MywgMTEzLCA2NywgMSwgMjAxLCAyMDEsIDY3LCAxLCAyMjIsIDEwMCwgNjcsIDEsIDIyMSwgODQsIAotICAgIDY3LCAxLCAyMjIsIDI0MCwgNjcsIDEsIDIyMSwgMTkxLCA2NywgMSwgMTUyLCA2NywgMSwgMjQ5LCAzMiwgNjcsIDEsIDE4NSwgCi0gICAgNjcsIDEsIDIzNywgMywgNjcsIDEsIDI0OCwgODYsIDY3LCAxLCAyMTgsIDE2NywgNjcsIDEsIDIzNiwgMjYsIDY3LCAxLCAKLSAgICAyNDcsIDE5MywgNjcsIDEsIDIxNywgMTkxLCA2NywgMSwgMjM3LCA2NywgNjcsIDEsIDI0OCwgMTYyLCA2NywgMSwgMjE5LCAKLSAgICAzNCwgNjcsIDEsIDIzNiwgMTM2LCA2NywgMSwgMjQ4LCAyMywgNjcsIDEsIDIxOCwgNjksIDY3LCAxLCAxOTIsIDY3LCAxLCAKLSAgICAyMjQsIDE1NSwgNjcsIDEsIDIyMywgMjQ2LCA2NywgMSwgMjI1LCAyMCwgNjcsIDEsIDIyNCwgODIsIDY3LCAxLCA1LCAxOTgsIAotICAgIDY3LCAxLCAxOTgsIDY3LCAxLCA1LCAyMDIsIDIxMywgNjcsIDEsIDIwMiwgMjEzLCA2NywgMSwgNSwgMjAyLCAyNDcsIDY3LCAKLSAgICAxLCAyMDIsIDI0NywgNjcsIDEsIDIxNiwgMjIwLCA2NywgMSwgMjE2LCA1NywgNjcsIDEsIDIxNSwgMTQ1LCA2NywgMSwgCi0gICAgMjE2LCAxNTgsIDY3LCAxLCAyMTUsIDIyNywgNjcsIDEsIDUsIDIwNCwgMTExLCA2NywgMSwgMjA0LCAxMTEsIDY3LCAxLCAKLSAgICAyMDQsIDMwLCA2NywgMSwgMjA0LCA2MiwgNjcsIDEsIDIwNCwgMCwgNjcsIDEsIDIyMywgMTYzLCA2NywgMSwgMjA0LCAxNjMsIAotICAgIDY3LCAxLCA1LCAxNzMsIDY3LCAxLCA1LCAyMjksIDIwMSwgNjcsIDEsIDIwNiwgODYsIDY3LCAxLCAyMDUsIDIzMCwgNjcsIAotICAgIDEsIDIwNiwgNTUsIDY3LCAxLCAyMDUsIDE4OSwgNjcsIDEwMSwgMjQzLCA4NSwgMjI5LCAyMjUsIDIxNywgMjE1LCAyMTEsIAotICAgIDI0MSwgODIsIDY3LCAyMzAsIDE5OSwgODIsIDY3LCAyMDUsIDE4NiwgMjMwLCAxOTksIDgyLCA2NywgMjQzLCAxOTIsIDIyOCwgCi0gICAgMjQ5LCAyNDgsIDEsIDEsIDI0OSwgMjU1LCAyNDgsIDEsIDEsIDIxOSwgMTg0LCAyNDgsIDEsIDEsIDIyNiwgMTg1LCAyNDgsIAotICAgIDEsIDEsIDI0MCwgMTc0LCAyNDgsIDEsIDEsIDI0NSwgNTEsIDI0OCwgMSwgMSwgMjEwLCA2OSwgMjQ4LCAxLCAxLCAyMjMsIAotICAgIDE2MywgMjQ4LCAxLCAxLCAxNTksIDI0OCwgMSwgMSwgMjM5LCA3NSwgMjQ4LCAxLCAxLCAyMzAsIDU0LCAyNDgsIDEsIDEsIAotICAgIDIzNywgMTcxLCAyNDgsIDEsIDEsIDIzMCwgMTg0LCAyNDgsIDEsIDEsIDIxNywgMTM0LCAyNDgsIDEsIDEsIDIwMywgMTk2LCAKLSAgICAyNDgsIDEsIDEsIDIwMiwgODEsIDI0OCwgMSwgMSwgMjQ2LCAyMDAsIDI0OCwgMSwgMSwgMjEzLCA5MiwgMjQ4LCAxLCAxLCAKLSAgICAxNDYsIDI0OCwgMSwgMSwgMjAyLCAxNTksIDI0OCwgMSwgMSwgMjQ3LCAxMjUsIDI0OCwgMSwgMSwgMTk0LCAyNDgsIDEsIDEsIAotICAgIDYzLCAyNDgsIDEsIDEsIDc4LCAyNDgsIDEsIDEsIDc0LCAyNDgsIDEsIDEsIDI0MSwgMTQ3LCAyNDgsIDEsIDEsIDI1MSwgCi0gICAgNjQsIDI0OCwgMSwgMSwgMjQxLCAxNDUsIDI0OCwgMSwgMSwgMjUwLCAzNCwgMjQ4LCAxLCAxLCAyMTksIDIxNiwgMjQ4LCAxLCAKLSAgICAxLCAyNTAsIDIzMSwgMjQ4LCAxLCAxLCAyNDEsIDkyLCAyNDgsIDEsIDEsIDI1MCwgMjIzLCAyNDgsIDEsIDEsIDI0MSwgNzgsIAotICAgIDI0OCwgMSwgMSwgMjQxLCAyOCwgMjQ4LCAxLCAxLCA3NSwgMjQ4LCAxLCAxLCA2OCwgMjQ4LCAxLCAxLCAyMzAsIDE5NywgCi0gICAgMjQ4LCAxLCAxLCAyMDYsIDE2NCwgMjQ4LCAxLCAxLCAyMjIsIDIwNSwgMjQ4LCAxLCAxLCAyMzgsIDQzLCAyNDgsIDEsIDEsIAotICAgIDIzMSwgODQsIDI4LCAxLCAyMjksIDU5LCAyOCwgMSwgMjExLCAxNTYsIDI4LCAxLCAyMjksIDUyLCAyOCwgMSwgMjIyLCA5MywgCi0gICAgMjgsIDEsIDIyMiwgOTEsIDI4LCAxLCAyMjIsIDkwLCAyOCwgMSwgMjA4LCAyNDAsIDI4LCAxLCAyMTEsIDE0NSwgMjgsIDEsIAotICAgIDIxNiwgNDcsIDI4LCAxLCAyMTYsIDQyLCAyOCwgMSwgMjE2LCAzOSwgMjgsIDEsIDIxNiwgMzIsIDI4LCAxLCAyMTYsIDI3LCAKLSAgICAyOCwgMSwgMjE2LCAyMiwgMjgsIDEsIDIxNiwgMzMsIDI4LCAxLCAyMTYsIDQ1LCAyOCwgMSwgMjI0LCAxNDEsIDI4LCAxLCAKLSAgICAyMTgsIDE1MywgMjgsIDEsIDIxMSwgMTUzLCAyOCwgMSwgMjE4LCAxNDIsIDI4LCAxLCAyMTIsIDExMSwgMjgsIDEsIDIxMSwgCi0gICAgMTUwLCAyOCwgMSwgMjMxLCAxMDYsIDI4LCAxLCAyNDYsIDc0LCAyOCwgMSwgMjExLCAxNjAsIDI4LCAxLCAyNDYsIDEzOCwgCi0gICAgMjgsIDEsIDIyOSwgMTIwLCAyOCwgMSwgMjA5LCA2NiwgMjgsIDEsIDIxOCwgMTkwLCAyOCwgMSwgMjM2LCAyNTEsIDI4LCAxLCAKLSAgICA2MywgMjgsIDEsIDI1MSwgMTA5LCAyOCwgMSwgMTk4LCAyOCwgMSwgMjAzLCA5OSwgMjgsIDEsIDI0MSwgNTUsIDI4LCAxLCAKLSAgICA3NCwgMjgsIDEsIDIwMywgMzksIDI4LCAxLCAyMDMsIDUyLCAyOCwgMSwgNzgsIDI4LCAxLCAyMDQsIDExMSwgMjgsIDEsIAotICAgIDIwNCwgMTA3LCAyOCwgMSwgMjIwLCA3MywgMjgsIDEsIDIwMiwgMjQ3LCAyOCwgMSwgNjgsIDI4LCAxLCAyMDQsIDQ4LCAyOCwgCi0gICAgMSwgMjA0LCA2MiwgMjgsIDEsIDIwNCwgMzAsIDI4LCAxLCAyMDIsIDIxMywgMjgsIDEsIDI0MCwgMjM4LCAyOCwgMSwgMjAzLCAKLSAgICAxMSwgMjgsIDEsIDc1LCAyOCwgMjQwLCA3LCAyOCwgMSwgMjExLCAxNTQsIDI4LCAxLCAyMjIsIDgzLCAyOCwgMSwgMjIyLCAKLSAgICA4NSwgMjgsIDEsIDIyMiwgODgsIDI4LCAxLCAyMTYsIDQwLCAyOCwgMSwgMjE2LCAyMSwgMjgsIDEsIDIxNiwgMjksIDI4LCAKLSAgICAxLCAyMTYsIDM0LCAyOCwgMSwgMjE2LCAxOSwgMjgsIDEsIDIyNCwgMTM0LCAyOCwgMSwgMjI0LCAxMzEsIDI4LCAxLCAyMjQsIAotICAgIDEzNSwgMjgsIDEsIDIyOSwgMjQ2LCAyOCwgMSwgMjE4LCAxNDgsIDI4LCAxLCAyMTgsIDEzNCwgMjgsIDEsIDIxOCwgMTQwLCAKLSAgICAyOCwgMSwgMjE4LCAxMzcsIDI4LCAxLCAyMTgsIDE1MSwgMjgsIDEsIDIxOCwgMTM1LCAyOCwgMSwgMjI5LCAyNDQsIDI4LCAKLSAgICAxLCAyMjksIDI0MiwgMjgsIDEsIDIxMiwgMTA0LCAyOCwgMSwgMjEyLCAxMDIsIDI4LCAxLCAyMTIsIDk0LCAyOCwgMSwgCi0gICAgMjEyLCA5OSwgMjgsIDEsIDIxMiwgMTA5LCAyOCwgMSwgMjE5LCAxMDcsIDI4LCAxLCAyMTEsIDE1NywgMjgsIDEsIDIwMywgCi0gICAgMjksIDI4LCAxLCAyMDMsIDI1LCAyOCwgMSwgMjAzLCAyNiwgMjgsIDEsIDIyOSwgMjQ1LCAyOCwgMSwgMjExLCAxNTgsIDI4LCAKLSAgICAxLCAyMDMsIDM1LCAyOCwgMSwgMjAyLCAyNDEsIDI4LCAxLCAyMDIsIDI0MCwgMjgsIDEsIDIwMiwgMjQzLCAyOCwgMSwgCi0gICAgMjAyLCAyMDQsIDI4LCAxLCAyMDIsIDIwNSwgMjgsIDEsIDIwMiwgMjA4LCAyOCwgMSwgMjUwLCAxMzcsIDI4LCAxLCAyNTAsIAotICAgIDEzMSwgMTM5LCAyNTAsIDIwNSwgMjI3LCAxMDMsIDgyLCAxMzksIDI1MCwgMjA1LCAyMTYsIDc0LCA4MiwgMTM5LCAyNTAsIAotICAgIDIwNSwgMTE4LCA4MiwgMTM5LCAyNTAsIDIwNSwgMTIwLCA4MiwgMTM5LCAyNTAsIDIwNSwgMTI2LCA4MiwgMTM5LCAyNTAsIAotICAgIDIwNSwgMjM5LCAxNDcsIDgyLCAxMzksIDI1MCwgMjA1LCAyMDgsIDE0NSwgODIsIDEzOSwgMjUwLCAyMDUsIDEwMSwgODIsIAotICAgIDEzOSwgMjUwLCAyMDUsIDI0NywgMjQ4LCA4MiwgMTM5LCAyNTAsIDIwNSwgMjM5LCAyNDUsIDgyLCAxMzksIDI1MCwgMjA1LCAKLSAgICAyMTQsIDE3MSwgODIsIDEzOSwgMjUwLCAyMDUsIDIwOSwgNjEsIDgyLCAxMzksIDI1MCwgMjA1LCAyMzksIDE0MCwgODIsIAotICAgIDEzOSwgMjUwLCAyMDUsIDIzNywgNTIsIDgyLCAxMzksIDI1MCwgMjA1LCAyNDEsIDE4MCwgODIsIDEzOSwgMjUwLCAyMDUsIAotICAgIDIyNSwgMTIzLCA4MiwgMjQ4LCAxLCAxLCAyNDcsIDE5MywgMjQ4LCAxLCAxLCAyMDIsIDM5LCAyNDgsIDEsIDEsIDIzMCwgCi0gICAgMTQxLCAyNDgsIDEsIDEsIDIzNywgMjMwLCAyNDgsIDEsIDEsIDI0MSwgMTYxLCAyNDgsIDEsIDEsIDI0MSwgNzUsIDI0OCwgCi0gICAgMSwgMSwgMjIwLCAxOCwgMjQ4LCAxLCAxLCAyMjAsIDIyLCAyNDgsIDEsIDEsIDIzMCwgMjI0LCAyNDgsIDEsIDEsIDI1MCwgCi0gICAgMjA3LCAyNDgsIDEsIDEsIDIzMSwgMTYsIDI0OCwgMSwgMSwgMjA2LCAyMjksIDI0OCwgMSwgMSwgMjMxLCA2NiwgMjQ4LCAxLCAKLSAgICAxLCAyMjIsIDE4MywgMjQ4LCAxLCAxLCAyNTEsIDU4LCAyNDgsIDEsIDEsIDI1MCwgMjksIDI0OCwgMSwgMSwgMjUwLCAyNDcsIAotICAgIDI0OCwgMSwgMSwgMjIwLCAzOSwgMjQ4LCAxLCAxLCAyMjAsIDI0LCAyNDgsIDEsIDEsIDIzMSwgMTMsIDI0OCwgMSwgNDYsIAotICAgIDEsIDIxOSwgMTg0LCAyNDgsIDEsIDQ2LCAxLCAyMTAsIDY5LCAyNDgsIDEsIDQ2LCAxLCAyMzAsIDU0LCAyNDgsIDEsIDQ2LCAKLSAgICAxLCAyMzcsIDE3MSwgMjQ4LCAxLCAxLCAyMzgsIDEyMCwgMjQ4LCAxLCAxLCAyMjcsIDE2MiwgMjQ4LCAxLCAxLCAyMDEsIAotICAgIDI0MiwgMTIsIDIxMSwgMzIsIDIxMCwgNjksIDEyLCAyMTEsIDMyLCAyMDQsIDQxLCAxMiwgMjExLCAzMiwgMjAzLCAxNzEsIAotICAgIDEyLCAyMTEsIDMyLCAyNDcsIDEzOCwgMTIsIDIxMSwgMzIsIDIxMCwgMTczLCAxMiwgMjExLCAzMiwgMjM1LCAyMTAsIDEyLCAKLSAgICAyMTEsIDMyLCAyMzUsIDIxNCwgMTIsIDIxMSwgMzIsIDIzNiwgMzUsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMSwgMTIsIDIxMSwgCi0gICAgMzIsIDIxMCwgNzIsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMywgMTIsIDIxMSwgMzIsIDIzNSwgMjA5LCAxMiwgMjExLCAzMiwgCi0gICAgMjM2LCAzMywgMTIsIDIxMSwgMzIsIDIzNSwgMjEyLCAxMiwgMjExLCAzMiwgMjM1LCAyMDgsIDEyLCAyMTEsIDMyLCAyMjMsIAotICAgIDE2MywgMTIsIDIxMSwgMzIsIDIzNywgMTcxLCAxMiwgMjExLCAzMiwgMTk0LCAxMiwgMjExLCAzMiwgMjE5LCAxODQsIDEyLCAKLSAgICAyMTEsIDMyLCAyMTEsIDIzMSwgMTIsIDIxMSwgMzIsIDI0NSwgNTEsIDEyLCAyMTEsIDMyLCAyMzUsIDIxNSwgMTIsIDIxMSwgCi0gICAgMzIsIDIzNywgMTMsIDEyLCAyMTEsIDMyLCAyMTAsIDgxLCAxMiwgMjExLCAzMiwgMjEwLCAxNTIsIDEyLCAyMTEsIDMyLCAKLSAgICAyMTEsIDEwOCwgMTIsIDIxMSwgMzIsIDIxMywgOTgsIDEyLCAyMTEsIDMyLCAyMTksIDM4LCAxMiwgMjExLCAzMiwgMjE3LCAKLSAgICAxMzYsIDEyLCAyMTEsIDMyLCAyMDgsIDE3NCwgMTIsIDIxMSwgMzIsIDIxMCwgNzEsIDEyLCAyMTEsIDMyLCAyMTAsIDE2MywgCi0gICAgMTIsIDIxMSwgMzIsIDIzNSwgMjIzLCAxMiwgMjExLCAzMiwgMjM1LCAyMDcsIDEyLCAyMTEsIDMyLCAyMTgsIDIxMCwgMTIsIAotICAgIDIxMSwgMzIsIDIxNywgMTM0LCA2NywgMSwgNSwgMjI4LCAyMDksIDY3LCAxLCA1LCAyMTIsIDE2MiwgNjcsIDEsIDUsIDIxMSwgCi0gICAgMTAsIDY3LCAxLCA1LCAxMzUsIDY3LCAxLCA1LCAyMjEsIDg0LCA2NywgMSwgNSwgMTUyLCA2NywgMSwgNSwgMjM3LCAzLCAKLSAgICA2NywgMSwgNSwgMjM2LCAyNiwgNjcsIDEsIDUsIDIzNywgNjcsIDY3LCAxLCA1LCAyMzYsIDEzNiwgNjcsIDEsIDUsIDIyMywgCi0gICAgMjQ2LCA2NywgMSwgNSwgMjE2LCAyMjAsIDY3LCAxLCA1LCAyMTYsIDU3LCA2NywgMSwgNSwgMjE1LCAxNDUsIDY3LCAxLCA1LCAKLSAgICAyMTYsIDE1OCwgNjcsIDEsIDUsIDIxNSwgMjI3LCAxMDIsIDI4LCAyMjksIDU5LCAxMDIsIDI4LCAyMjIsIDkzLCAxMDIsIAotICAgIDI4LCAyMDgsIDI0MCwgMTAyLCAyOCwgMjE2LCA0NywgMTAyLCAyOCwgMjI0LCAxNDEsIDEwMiwgMjgsIDIxOCwgMTUzLCAKLSAgICAxMDIsIDI4LCAyMTIsIDExMSwgMTAyLCAyOCwgMjMxLCAxMDYsIDEwMiwgMjgsIDI0NiwgNzQsIDEwMiwgMjgsIDI0NiwgCi0gICAgMTM4LCAxMDIsIDI4LCAyMjksIDEyMCwgMTAyLCAyOCwgMjA5LCA2NiwgMTAyLCAyOCwgMjE4LCAxOTAsIDEwMiwgMjgsIAotICAgIDIzNiwgMjUxLCAxMDIsIDI4LCAyMjksIDYwLCA2MywgMTAyLCAyOCwgMjIyLCA5NCwgNjMsIDEwMiwgMjgsIDIwOCwgMjQxLCAKLSAgICA2MywgMTAyLCAyOCwgMjE2LCA0OCwgNjMsIDEwMiwgMjgsIDIyNCwgMTQyLCA2MywgMTAyLCAyOCwgMjE4LCAxNTQsIDYzLCAKLSAgICAxMDIsIDI4LCAyMTIsIDExMiwgNjMsIDEwMiwgMjgsIDIzMSwgMTA3LCA2MywgMTAyLCAyOCwgMjQ2LCA3NSwgNjMsIDEwMiwgCi0gICAgMjgsIDI0NiwgMTM5LCA2MywgMTAyLCAyOCwgMjI5LCAxMjEsIDYzLCAxMDIsIDI4LCAyMDksIDY3LCA2MywgMTAyLCAyOCwgCi0gICAgMjE4LCAxOTEsIDYzLCAxMDIsIDI4LCAyMzYsIDI1MiwgNjMsIDEwMiwgMjgsIDI0NiwgNzUsIDY4LCAxMDIsIDIyOCwgMjUzLCAKLSAgICAxNjcsIDIyMCwgNTQsIDEwMiwgMjI4LCAyNTMsIDE2NywgMTU4LCAyMzYsIDI2LCAxMDIsIDE4OSwgMTA1LCAxMDIsIDE4OSwgCi0gICAgMTA4LCAxMDIsIDE4OSwgMTQ3LCAxMDIsIDE4OSwgMTQ5LCAxMDIsIDE4OSwgMTcwLCAxMDIsIDE4OSwgMTk1LCAxMDIsIAotICAgIDE4OSwgMjEzLCAxMTEsIDEwMiwgMTg5LCAxOTksIDEwMiwgMTg5LCAyMjIsIDYzLCAxMDIsIDE4OSwgMjA5LCAxNTIsIDEwMiwgCi0gICAgMTg5LCAyMjQsIDI5LCAxMDIsIDE4OSwgMjM5LCAyNDksIDEwMiwgMTg5LCAyMDQsIDgwLCAxMDIsIDE4OSwgMjAzLCAyNDMsIAotICAgIDEwMiwgMTg5LCAyMjQsIDIyMCwgMTAyLCAxODksIDI0MSwgMTc5LCAxMDIsIDE4OSwgMjEwLCAyMTQsIDEwMiwgMTg5LCAKLSAgICAyMTEsIDY0LCAxMDIsIDE4OSwgMjM3LCA3NCwgMTAyLCAxODksIDIxMiwgOSwgMTAyLCAxODksIDIyMywgODQsIDEwMiwgCi0gICAgMTg5LCAyMTEsIDIxMywgMTAyLCAxODksIDI0MCwgNCwgMTAyLCAxODksIDI0NSwgMjExLCAxMDIsIDE4OSwgMjI4LCAxMDIsIAotICAgIDEwMiwgMTg5LCAyMTYsIDk1LCAxMDIsIDE4OSwgMjQ3LCA3MSwgMTAyLCAxODksIDIxMSwgMTQsIDEwMiwgMTg5LCAyMTAsIAotICAgIDE5NiwgMTAyLCAxODksIDI0MSwgNjUsIDEwMiwgMTg5LCAyMTYsIDg3LCAxMDIsIDE4OSwgMjUxLCAxMCwgMTAyLCAxODksIAotICAgIDI0MCwgMzMsIDEwMiwgMTg5LCAyMTYsIDg1LCAxMDIsIDE4OSwgMjEzLCAxNDksIDEwMiwgMTg5LCAyMTYsIDE1NywgNDMsIAotICAgIDE4OSwgMjE3LCA0NiwgNDMsIDE4OSwgMjI5LCA4MywgNDMsIDE4OSwgMjE0LCAxOTUsIDQzLCAxODksIDIyOCwgMjQ5LCA0MywgCi0gICAgNDIsIDIwOSwgMTUzLCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjA3LCAxNTIsIDIyMCwgMzIsIDYyLCAyMTEsIAotICAgIDE3NywgNDMsIDQyLCAyMDksIDU0LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjM5LCAxNTQsIDIyMCwgMzIsIAotICAgIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyNDAsIDE5LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjEyLCA3NSwgCi0gICAgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDIxMywgMTA2LCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgCi0gICAgMjQxLCAxMzUsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgMjE5LCA2NywgNTQsIDQzLCA0MiwgMjA3LCAxNTIsIDEwNSwgNDMsIAotICAgIDQyLCAyMDcsIDE1MiwgMTA4LCA0MywgNDIsIDIwNywgMTUyLCAxNDcsIDQzLCA0MiwgMjA3LCAxNTIsIDE0OSwgNDMsIDQyLCAKLSAgICAyMDcsIDE1MiwgMTcwLCA0MywgNDIsIDIwNywgMTUyLCAxOTUsIDQzLCA0MiwgMjA3LCAxNTIsIDIxMywgMTExLCA0MywgNDIsIAotICAgIDIwNywgMTUyLCAxOTksIDQzLCA0MiwgMjA3LCAxNTIsIDIyMiwgNjMsIDQzLCA0MiwgMjA5LCA1MywgNDMsIDQyLCAyMDksIAotICAgIDU0LCAxMDUsIDQzLCA0MiwgMjA5LCA1NCwgMTA4LCA0MywgNDIsIDIwOSwgNTQsIDE0NywgNDMsIDQyLCAyMDksIDU0LCAKLSAgICAxNDksIDQzLCA0MiwgMjA5LCA1NCwgMTcwLCA0MywgMjgsIDIyOSwgNTksIDQzLCAyOCwgMjIyLCA5MywgNDMsIDI4LCAyMDgsIAotICAgIDI0MCwgNDMsIDI4LCAyMTYsIDQ3LCA0MywgMjgsIDIyNCwgMTQxLCA0MywgMjgsIDIxOCwgMTUzLCA0MywgMjgsIDIxMiwgCi0gICAgMTExLCA0MywgMjgsIDIzMSwgMTA2LCA0MywgMjgsIDI0NiwgNzQsIDQzLCAyOCwgMjQ2LCAxMzgsIDQzLCAyOCwgMjI5LCAKLSAgICAxMjAsIDQzLCAyOCwgMjA5LCA2NiwgNDMsIDI4LCAyMTgsIDE5MCwgNDMsIDI4LCAyMzYsIDI1MSwgNDMsIDI4LCAyMjksIAotICAgIDYwLCA2MywgNDMsIDI4LCAyMjIsIDk0LCA2MywgNDMsIDI4LCAyMDgsIDI0MSwgNjMsIDQzLCAyOCwgMjE2LCA0OCwgNjMsIAotICAgIDQzLCAyOCwgMjI0LCAxNDIsIDYzLCA0MywgMjgsIDIxOCwgMTU0LCA2MywgNDMsIDI4LCAyMTIsIDExMiwgNjMsIDQzLCAyOCwgCi0gICAgMjMxLCAxMDcsIDYzLCA0MywgMjgsIDI0NiwgNzUsIDYzLCA0MywgMjgsIDI0NiwgMTM5LCA2MywgNDMsIDI4LCAyMjksIAotICAgIDEyMSwgNjMsIDQzLCAyOCwgMjA5LCA2NywgNjMsIDQzLCAyOCwgMjE4LCAxOTEsIDYzLCA0MywgMjgsIDIzNiwgMjUyLCA2MywgCi0gICAgNDMsIDIyOCwgMjUzLCAxNjcsIDI0NiwgMTg5LCA0MywgMjI4LCAyNTMsIDE2NywgMjMwLCA3OCwgNDMsIDI4LCAyMzEsIAotICAgIDEwNywgNjgsIDIyOCwgMjUzLCAyMTEsIDk3LCA5NywgNDMsIDE4OSwgMTA1LCA0MywgMTg5LCAxMDgsIDQzLCAxODksIDE0NywgCi0gICAgNDMsIDE4OSwgMTQ5LCA0MywgMTg5LCAxNzAsIDQzLCAxODksIDE5NSwgNDMsIDE4OSwgMjEzLCAxMTEsIDQzLCAxODksIAotICAgIDE5OSwgNDMsIDE4OSwgMjIyLCA2MywgNDMsIDE4OSwgMjA5LCAxNTIsIDQzLCAxODksIDIyNCwgMjksIDQzLCAxODksIDIzOSwgCi0gICAgMjQ5LCA0MywgMTg5LCAyMDQsIDgwLCA0MywgMTg5LCAyMDMsIDI0MywgNDMsIDE4OSwgMjI0LCAyMjAsIDQzLCAxODksIAotICAgIDI0MSwgMTc5LCA0MywgMTg5LCAyMTAsIDIxNCwgNDMsIDE4OSwgMjExLCA2NCwgNDMsIDE4OSwgMjM3LCA3NCwgNDMsIDE4OSwgCi0gICAgMjEyLCA5LCA0MywgMTg5LCAyMjMsIDg0LCA0MywgMTg5LCAyMTEsIDIxMywgNDMsIDE4OSwgMjQwLCA0LCA0MywgMTg5LCAKLSAgICAyNDUsIDIxMSwgNDMsIDE4OSwgMjI4LCAxMDIsIDQzLCAxODksIDIxNCwgMTY5LCA0MywgMTg5LCAyMjUsIDEyNiwgNDMsIAotICAgIDE4OSwgMjQwLCA0MiwgNDMsIDE4OSwgMjEwLCAyMjYsIDQzLCAxODksIDI0MCwgMjE2LCA0MywgMTg5LCAyMTcsIDIzMywgCi0gICAgNDMsIDE4OSwgMjUwLCAzOCwgNDMsIDE4OSwgMjMwLCAyMDAsIDQzLCAxODksIDIxNiwgODUsIDQzLCAxODksIDI0NSwgMTcwLCAKLSAgICA0MywgMTg5LCAyNDUsIDE2MCwgNDMsIDE4OSwgMjM2LCAyNDQsIDQzLCAxODksIDI0NiwgMjE3LCA0MywgMTg5LCAyMjcsIDAsIAotICAgIDQzLCAxODksIDIyNywgMjIyLCA0MywgMTg5LCAyMTYsIDE2LCA0MywgMTg5LCAyMjUsIDExLCA0MywgMTg5LCAyMTYsIDExMiwgCi0gICAgNDMsIDE4OSwgMjExLCAxNCwgNDMsIDE4OSwgMjEwLCAxOTYsIDQzLCAxODksIDI0MSwgNjUsIDQzLCAxODksIDIxNiwgODcsIAotICAgIDQzLCAxODksIDI1MSwgMTAsIDQzLCAxODksIDIyMiwgNzksIDQzLCA0MiwgMjA5LCA1NCwgMTk1LCA0MywgNDIsIDIwOSwgCi0gICAgNTQsIDIxMywgMTExLCA0MywgNDIsIDIwOSwgNTQsIDE5OSwgNDMsIDQyLCAyMDksIDU0LCAyMjIsIDYzLCA0MywgNDIsIAotICAgIDIzOSwgMTUzLCA0MywgNDIsIDIzOSwgMTU0LCAxMDUsIDQzLCA0MiwgMjM5LCAxNTQsIDEwOCwgNDMsIDQyLCAyMzksIDE1NCwgCi0gICAgMTQ3LCA0MywgNDIsIDIzOSwgMTU0LCAxNDksIDQzLCA0MiwgMjM5LCAxNTQsIDE3MCwgNDMsIDQyLCAyMzksIDE1NCwgMTk1LCAKLSAgICA0MywgNDIsIDIzOSwgMTU0LCAyMTMsIDExMSwgNDMsIDQyLCAyMzksIDE1NCwgMTk5LCA0MywgNDIsIDIzOSwgMTU0LCAyMjIsIAotICAgIDYzLCA0MywgNDIsIDI0MCwgMTgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCAxNzEsIDEzOSwgMjA5LCAxNjQsIDE2LCAKLSAgICAzNSwgMjQwLCA1NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjUsIDk0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI1MCwgCi0gICAgMTUwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyNSwgNjMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjMwLCA3NiwgMTM5LCAKLSAgICAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDc3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI1MCwgMzAsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjEzLCAxMjksIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjIwLCA3OSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMjEsIDE1MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDcwLCA1MSwgMjM3LCAxMywgNTEsIDI0MSwgMjQsIDUxLCAKLSAgICAyNDAsIDIyNiwgMjI3LCAxMjAsIDIyNywgMTQ3LCA1NCwgNDMsIDY3LCA2MywgNDMsIDY3LCA3NSwgNDMsIDY3LCA2OCwgNDMsIAotICAgIDY3LCA3NCwgNDMsIDY3LCA3OCwgNDMsIDY3LCAxNzMsIDQzLCA2NywgMjI5LCAxMDAsIDQzLCA2NywgMjI4LCAyMDksIDQzLCAKLSAgICA2NywgMjI5LCAyMDEsIDQzLCA2NywgMjI5LCAyNiwgNDMsIDY3LCAyMTUsIDM2LCA0MywgNjcsIDIxMiwgMTYyLCA0MywgNjcsIAotICAgIDIxMSwgMTAsIDQzLCA2NywgMjE0LCAxNzcsIDQzLCA2NywgMjEyLCAxMywgNDMsIDY3LCAyMTAsIDIyLCA0MywgNjcsIDIwOSwgCi0gICAgMiwgNDMsIDY3LCAyMDcsIDIwMywgNDMsIDY3LCAyMDksIDE4NywgNDMsIDY3LCAxMzUsIDQzLCA2NywgMjAxLCAyMDEsIDQzLCAKLSAgICA2NywgMjIyLCAxMDAsIDQzLCA2NywgMjIxLCA4NCwgNDMsIDY3LCAyMjIsIDI0MCwgNDMsIDY3LCAyMjEsIDE5MSwgNDMsIAotICAgIDY3LCAxNTIsIDQzLCA2NywgMjM3LCAzLCA0MywgNjcsIDIzNiwgMjYsIDQzLCA2NywgMjM3LCA2NywgNDMsIDY3LCAyMzYsIAotICAgIDEzNiwgNDMsIDY3LCAxOTIsIDQzLCA2NywgMjI0LCAxNTUsIDQzLCA2NywgMjIzLCAyNDYsIDQzLCA2NywgMjI1LCAyMCwgCi0gICAgNDMsIDY3LCAyMjQsIDgyLCA0MywgNjcsIDE5OCwgNDMsIDY3LCAyMDIsIDIxMywgNDMsIDY3LCAyMDIsIDI0NywgNDMsIDY3LCAKLSAgICAyMTYsIDIyMCwgNDMsIDY3LCAyMTYsIDU3LCA0MywgNjcsIDIxNSwgMTQ1LCA0MywgNjcsIDIxNiwgMTU4LCA0MywgNjcsIAotICAgIDIxNSwgMjI3LCA0MywgNjcsIDIwNCwgMTExLCA0MywgNjcsIDIwNCwgMzAsIDQzLCA2NywgMjA0LCA2MiwgNDMsIDY3LCAKLSAgICAyMDQsIDAsIDUxLCAyNTAsIDE3NCwgNTEsIDI1MCwgODMsIDUxLCAyNTAsIDIwMSwgNTEsIDI1MSwgMjM5LCA1MSwgMjMxLCAKLSAgICAxOCwgNTEsIDIzMCwgMjQyLCA1MSwgMjA2LCAyMjcsIDUxLCAyNDAsIDI1MywgNTEsIDI0MSwgMTU4LCA1MSwgMjIwLCAyMSwgCi0gICAgNTEsIDIyMCwgMTQsIDUxLCAyMzAsIDE2LCA1MSwgMjI5LCAyMzgsIDUxLCAyMjksIDIzNSwgNTEsIDIzOCwgMjIwLCA1MSwgCi0gICAgMjM4LCAyMjksIDUxLCAyMzgsIDcwLCA1MSwgMjM4LCA2NiwgNTEsIDIyOCwgMTMyLCA1MSwgMjM4LCA1OCwgNTEsIDIyOSwgCi0gICAgNzUsIDUxLCAyMjksIDc0LCA1MSwgMjI5LCA3MywgNTEsIDIyOSwgNzIsIDUxLCAyMzcsIDIwMCwgNTEsIDIzNywgMTk5LCAKLSAgICA1MSwgMjI4LCAxODAsIDUxLCAyMjgsIDE4MiwgNTEsIDIyOSwgMTk0LCA1MSwgMjI4LCAyNTEsIDUxLCAyMjksIDMsIDUxLCAKLSAgICAyMTUsIDE3LCA1MSwgMjE0LCAyMzYsIDUxLCAyMTIsIDkyLCA1MSwgMjEzLCAxMzQsIDUxLCAyMTMsIDEzMywgNTEsIDI0NCwgCi0gICAgMjA5LCA1MSwgMjQ0LCAxNCwgNTEsIDI0MywgODYsIDUxLCAyMDgsIDE2MywgNTEsIDIyMywgNzksIDUxLCAyMjEsIDE1NCwgCi0gICAgNTEsIDIzNywgMTQyLCA1MSwgMjE5LCAxNjMsIDUxLCAyMTksIDE2MiwgNTEsIDI0OSwgMjksIDUxLCAyMTgsIDE2NCwgNTEsIAotICAgIDIxOCwgMTI3LCA1MSwgMjE4LCAxMjgsIDUxLCAyNDgsIDU3LCA1MSwgMjM2LCAyNCwgNTEsIDIzNiwgMTksIDUxLCAyNDcsIAotICAgIDE1MSwgNTEsIDIzNiwgNCwgNTEsIDIzNywgMzksIDUxLCAyMTgsIDIyMCwgNTEsIDIxOSwgNCwgNTEsIDIzNywgMjIsIDUxLCAKLSAgICAyMTksIDAsIDUxLCAyMTksIDE4LCA1MSwgMjQ4LCAxNDUsIDUxLCAyMTgsIDU4LCA1MSwgMjQ3LCAyNTMsIDUxLCAyMzYsIAotICAgIDEyMCwgNTEsIDIxOCwgNDYsIDUxLCAyMzYsIDExMSwgNTEsIDIzNiwgMTEzLCA1MSwgMjI1LCAxMzgsIDUxLCAyMjUsIDEzNCwgCi0gICAgNTEsIDIyNSwgMTQzLCA1MSwgMjI1LCA4MywgNTEsIDIyNSwgMTEwLCA1MSwgMjI0LCAxMjEsIDUxLCAyMjQsIDk3LCA1MSwgCi0gICAgMjI0LCA5NiwgNTEsIDIyNSwgMCwgNTEsIDIyNCwgMjUzLCA1MSwgMjI1LCAxLCA1MSwgMjAzLCAxMDksIDUxLCAyMDMsIAotICAgIDEwNywgNTEsIDIwMiwgMjAyLCA1MSwgMjE1LCAyNDMsIDUxLCAyMTUsIDI0NywgNTEsIDIxNSwgMTE5LCA1MSwgMjE1LCAKLSAgICAxMTMsIDUxLCAyMTYsIDEwOSwgNTEsIDIxNiwgMTA2LCA1MSwgMjA0LCA3OCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIAotICAgIDQzLCAyMDIsIDg0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDEwNSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDE0OSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxNzAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTk1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIxMywgMTExLCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDIzNiwgNDMsIDE5OSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMjIsIDYzLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwOSwgMTUyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDI0MSwgMTEyLCAKLSAgICAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIwNywgMTU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIAotICAgIDIwOSwgNTUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjM5LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMjQwLCAyMiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMTIsIDgyLCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDIzNiwgNDMsIDIxMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDI0MSwgMTQwLCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIyMiwgNjAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAKLSAgICAxNTEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMjA3LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNDIsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNDcsIDUxLCAyMzYsIDM0LCA1MSwgMjQ0LCAyMTIsIDUxLCAyNTAsIDM0LCAKLSAgICA1MSwgMTQyLCA1MSwgMjE5LCAyMDYsIDUxLCAyMTksIDM5LCA1MSwgMjQzLCAxMTUsIDUxLCAyNDMsIDExNiwgMjExLCAxNzYsIAotICAgIDUxLCAyNDMsIDExNiwgMjQ1LCAxMDUsIDUxLCAyMzAsIDE5NywgNTEsIDI0MSwgMjcsIDIyMywgODUsIDIzNywgNDAsIDUxLCAKLSAgICAyNDEsIDI3LCAyMjMsIDg1LCAyMTAsIDkyLCA1MSwgMjQxLCAyNywgMjIzLCA4NSwgMjA5LCAyNDUsIDUxLCAyNDEsIDI3LCAKLSAgICAyMjMsIDg1LCAyMjQsIDI1MiwgNTEsIDI0NSwgMTYyLCA1MSwgMjE5LCAxNjksIDI1MCwgMjMzLCA1MSwgMjAxLCAyMDEsIAotICAgIDUxLCAyMjMsIDI0NywgNjMsIDUxLCAxOTIsIDUxLCAxNzMsIDUxLCAyMjksIDIwNCwgNTEsIDIyNSwgNTksIDUxLCAyMzgsIAotICAgIDIwOCwgNTEsIDI0NywgNzYsIDUxLCAyMjksIDIwMywgNTEsIDIxOCwgMjExLCA1MSwgMjIyLCAyMDcsIDUxLCAyMjMsIDI0NywgCi0gICAgMjQwLCAxNzQsIDUxLCAyMjMsIDI0NywgMjM5LCA3NSwgNTEsIDIyNCwgMTk2LCA1MSwgMjI5LCAxNDYsIDUxLCAyMzUsIAotICAgIDIxNSwgNTEsIDIyOSwgMTAyLCA1MSwgMjI0LCAxNTcsIDUxLCAyMzgsIDgzLCA1MSwgMjA5LCA0LCA1MSwgMjIzLCAyNDcsIAotICAgIDE1OSwgNTEsIDIyNCwgOTAsIDUxLCAyNDMsIDEyNSwgNTEsIDIyOSwgNDEsIDUxLCAyMzksIDE4OCwgNTEsIDIyMSwgMjI5LCAKLSAgICA1MSwgMjIzLCAyNDcsIDIyNiwgMTg1LCA1MSwgMjI0LCA4NywgNTEsIDI0NSwgMjU1LCA1MSwgMjI5LCAzNSwgNTEsIDIyNCwgCi0gICAgODgsIDIxMSwgMTc2LCA1MSwgMjQ2LCAwLCAyMTEsIDE3NiwgNTEsIDIyNiwgMTg2LCAyMTEsIDE3NiwgNTEsIDIyOSwgMzYsIAotICAgIDIxMSwgMTc2LCA1MSwgMjI0LCA4OCwgMjQ1LCAxMDUsIDUxLCAyNDYsIDAsIDI0NSwgMTA1LCA1MSwgMjI2LCAxODYsIDI0NSwgCi0gICAgMTA1LCA1MSwgMjI5LCAzNiwgMjQ1LCAxMDUsIDUxLCAyMjYsIDE4NiwgMTE1LCAxOTQsIDUxLCAyMjYsIDE4NiwgMTE1LCAKLSAgICAyMTUsIDk0LCAyMTEsIDE3NiwgNTEsIDE4NSwgNTEsIDIyOCwgMjQ0LCA1MSwgMjIzLCAyNTAsIDUxLCAyMzgsIDE1LCA1MSwgCi0gICAgMjE2LCAyMDcsIDUxLCAyMTYsIDIwOCwgMTE1LCAxOTQsIDUxLCAyMTYsIDIwOCwgMTE1LCAyMTUsIDk0LCAyMTEsIDE3NiwgCi0gICAgNTEsIDIxNywgMjA0LCA1MSwgMjIxLCAxMjIsIDUxLCAyMjMsIDI0NywgMTk0LCA1MSwgMjIzLCAyNDgsIDUxLCAyMTcsIAotICAgIDE1NCwgNTEsIDIyMSwgMjIsIDUxLCAyMjMsIDI0NywgMjA2LCAxNjQsIDUxLCAyMjMsIDE4NywgNTEsIDIyOCwgMTcwLCA1MSwgCi0gICAgMjIzLCAxODgsIDIyNSwgMCwgNTEsIDIxNywgMTUzLCA1MSwgMjIxLCAyMSwgNTEsIDIyMywgMjQ3LCAyMDQsIDE0NCwgNTEsIAotICAgIDIyMywgMTgxLCA1MSwgMjI4LCAxNjgsIDUxLCAyMjMsIDE4MiwgMjI1LCAwLCA1MSwgMjMwLCA1NSwgMjIwLCA1OCwgNTEsIAotICAgIDIyNiwgMTg2LCAyMjAsIDU4LCA1MSwgMjUwLCAyNDcsIDUxLCAyNDcsIDIyOSwgNTEsIDI0NywgNiwgNTEsIDI0NiwgMjM5LCAKLSAgICA1MSwgMjQ3LCAxMjYsIDExNSwgMjI5LCAxNDYsIDUxLCAyNDUsIDI1NCwgNTEsIDI0NCwgMTI5LCA1MSwgMjM3LCAxODQsIAotICAgIDUxLCAxNTIsIDUxLCAyMzYsIDM1LCA1MSwgMjMxLCA0OSwgNTEsIDIyOSwgNDgsIDUxLCAyMjksIDM2LCAyNDcsIDQ3LCA1MSwgCi0gICAgMjI4LCAyMTEsIDUxLCAyMjcsIDUyLCA1MSwgMjI3LCA1MSwgNTEsIDIyNywgMzgsIDUxLCAyMjYsIDIwMCwgNTEsIDIyNSwgCi0gICAgNjAsIDIxMiwgMzYsIDUxLCAyMjQsIDEyMCwgNTEsIDIyNCwgNTYsIDUxLCAyMTgsIDIwOSwgNTEsIDIxOCwgNzIsIDUxLCAKLSAgICAyMTgsIDExLCA1MSwgMjE4LCA5LCA1MSwgMjExLCAxNjgsIDUxLCAyMTAsIDE3NywgNTEsIDIwNCwgNjQsIDUxLCAyMDYsIAotICAgIDE2NSwgMTE1LCAyMjYsIDE4NSwgNTEsIDM0LCAxMTUsIDIyNiwgMTg1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgCi0gICAgMTMzLCAxMDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMTQ3LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxNDksIDEzOSwgMjA5LCAxNjQsIDE2LCAKLSAgICAzNSwgMjQ0LCAxMzMsIDE3MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTk1LCAxMzksIDIwOSwgMTY0LCAKLSAgICAxNiwgMzUsIDI0NCwgMTMzLCAyMTMsIDExMSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTk5LCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMjIsIDYzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAKLSAgICAyMDksIDE1MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjQxLCAxMTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAKLSAgICAzNSwgMjQ0LCAxMzMsIDIwNywgMTU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIDU1LCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMzksIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgCi0gICAgMjQwLCAyMiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjEyLCA4MiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMjEzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDI0MSwgMTQwLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMjIsIDYwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIAotICAgIDE1MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjQ0LCAxMzMsIDIwNywgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgCi0gICAgMTQ4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMjA3LCAxNDQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTUwLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NiwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCAKLSAgICA1MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA5LCA1MiwgNTEsIDIzOCwgMjQ2LCAyMzcsIDE2LCAzNSwgCi0gICAgMjA5LCA5MywgMjQ1LCAxNDIsIDIzNywgNTEsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMTYsIDE1MSwgMjQxLCAxNzksIAotICAgIDIzNywgMTYsIDM1LCAyNDMsIDIwMywgMjUwLCA1MCwgMjA5LCA5MywgMjQ4LCAxNDAsIDIzNywgMTYsIDM1LCAyMDIsIDIyNiwgCi0gICAgMjM5LCAxODAsIDIzNywgMTYsIDM1LCAyMDQsIDEwMywgMjM3LCAxNiwgMzUsIDI0NSwgMjE0LCAyMzcsIDE2LCAzNSwgMjA5LCAKLSAgICA5MywgMjUwLCAxMDUsIDIzNywgMTYsIDM1LCAyMzYsIDEyNywgMjA4LCAxNjksIDIzNywgMTYsIDM1LCA1LCAyMDksIDIzMSwgCi0gICAgMjM3LCAxNiwgMzUsIDIwOCwgOTcsIDIzNywgMTYsIDM1LCAyMTksIDMyLCAyMzcsIDE2LCAzNSwgMjExLCA5NiwgMjM3LCAKLSAgICAxNiwgMzUsIDI0MCwgNDQsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE4LCAzMiwgMjM3LCAxNiwgMzUsIDIyNCwgNzUsIAotICAgIDIzNywgMTYsIDM1LCAyNDEsIDY0LCAyMzcsIDE2LCAzNSwgMjM5LCAxODEsIDIzNywgMTYsIDM1LCAyMDMsIDIzNiwgMjIwLCAKLSAgICAzMiwgMjA5LCA5MywgMjQ0LCA3MSwgMjM3LCAxNiwgMzUsIDI1MCwgMTU0LCAyMzcsIDE2LCAzNSwgMjQ1LCAxOTMsIDIzNywgCi0gICAgMTYsIDM1LCAyNDgsIDQ5LCAyMDksIDI0LCAyMzcsIDE2LCAzNSwgMjM4LCAxMywgMjM3LCAxNiwgMzUsIDIxMSwgMTkyLCAKLSAgICAyNTAsIDE3MywgMjM3LCAxNiwgMzUsIDIxNiwgNzcsIDIzNywgMTYsIDM1LCAyMzEsIDEyLCAyMzcsIDE2LCAzNSwgMjM3LCAKLSAgICAyNDksIDIwOSwgMjMxLCAyMzcsIDE2LCAzNSwgMjI0LCA4LCAyNDUsIDE2NCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTcsIAotICAgIDI0NCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI1MSwgMTQzLCAyMDQsIDgwLCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQ2LCAKLSAgICAyNCwgMjM5LCAyNDksIDIzNywgMTYsIDM1LCAyMzEsIDI2LCAyMzcsIDE2LCAzNSwgMjQyLCAyMCwgMjM3LCAxNiwgMzUsIAotICAgIDIxNiwgODAsIDIzNywgMTYsIDM1LCAyMzcsIDI0OSwgMjE4LCAxNiwgMjM3LCAxNiwgMzUsIDIxNywgMjIxLCAyMzcsIDE2LCAKLSAgICAzNSwgMjQ0LCAxNDksIDc2LCAyMDksIDkzLCAyMjcsIDEzNCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0MCwgODIsIDIzNywgCi0gICAgMTYsIDM1LCAyMTksIDI1MCwgMjM3LCAxNiwgMzUsIDIyMCwgODUsIDIzNywgMTYsIDM1LCAyNDQsIDQyLCAyMzcsIDE2LCAKLSAgICAzNSwgMjQ0LCA2MywgMjM3LCAxNiwgMzUsIDIzMSwgNDAsIDIzNywgMTYsIDM1LCAyNDcsIDIxNywgMjM3LCAxNiwgMzUsIAotICAgIDI0NSwgMjM1LCAyMDgsIDE3MywgMjI1LCAzLCAyMzcsIDE2LCAzNSwgMjM4LCAyMTUsIDIwOCwgMTY5LCAyMzcsIDE2LCAzNSwgCi0gICAgMjE3LCAxNjMsIDIwNiwgMjEzLCAyMzcsIDE2LCAzNSwgMjE5LCAyNDksIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMDQsIDUwLCAKLSAgICAyMzcsIDE2LCAzNSwgMjE2LCA2OCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDI0NywgMTIsIDIzNywgMTYsIDM1LCAyMDksIAotICAgIDkzLCAyNTAsIDEwMSwgMjA5LCAxOCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIyOSwgMTk1LCAyMTEsIDY4LCAyMjQsIDEyLCAKLSAgICAyMzcsIDE2LCAzNSwgMjQ0LCA5LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjI1LCA4NSwgMjI1LCAxMzksIDIzNywgMTYsIAotICAgIDM1LCAyNTEsIDE0NCwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIwNCwgOTYsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMzgsIAotICAgIDE3MywgMjA0LCAxNiwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIzMCwgODQsIDIyOCwgMzMsIDIzNywgMTYsIDM1LCAyNDMsIAotICAgIDE1MywgMjM3LCAxNiwgMzUsIDIyNywgMTIxLCAyMzcsIDE2LCAzNSwgMjMxLCAxNSwgMjA4LCAyNCwgMjM3LCAxNiwgMzUsIAotICAgIDUsIDIxNywgMjQ0LCAyMzcsIDE2LCAzNSwgMjUxLCA4MiwgMjQ1LCAyMjYsIDIzNywgMTYsIDM1LCAyNDgsIDE0MywgMjQ1LCAKLSAgICAyMjYsIDExLCA0LCAyMzAsIDIwMSwgMTEsIDQsIDIzMCwgMTkzLCAxMSwgNCwgNzUsIDExLCA0LCAyMzAsIDIyNywgMTEsIDQsIAotICAgIDIzMSwgMTA4LCAxMSwgNCwgMjMxLCA5MSwgMTEsIDQsIDIzMSwgMTEwLCAxMSwgNCwgMjMxLCAxMDksIDExLCA0LCAyNTAsIAotICAgIDQ5LCAxMSwgNCwgMjUwLCAxMCwgMTEsIDQsIDYzLCAxMSwgNCwgMjUwLCAxNzUsIDExLCA0LCAyMDYsIDIyNSwgMTEsIDQsIAotICAgIDIwNiwgMjI4LCAxMSwgNCwgMjA2LCAyMjYsIDExLCA0LCAyMTksIDIyNCwgMTEsIDQsIDIxOSwgMTkzLCAxMSwgNCwgNzgsIAotICAgIDExLCA0LCAyMjAsIDksIDExLCA0LCAyNDAsIDIxNywgMTEsIDQsIDc0LCAxMSwgNCwgMjAzLCAyMTcsIDExLCA0LCAyNDgsIAotICAgIDUxLCAxMSwgNCwgMjQ4LCA0NywgMTEsIDQsIDI0OCwgODYsIDExLCA0LCAyNDgsIDYxLCAxMSwgNCwgMjQ4LCA3NSwgMTEsIAotICAgIDQsIDI0OCwgNzQsIDExLCA0LCAyNDgsIDc3LCAxMSwgNCwgMjQ4LCA3NiwgMTEsIDQsIDI0OCwgMjA5LCAxMSwgNCwgMjQ4LCAKLSAgICAyMDEsIDExLCA0LCAyNDksIDMyLCAxMSwgNCwgMjQ4LCAyMzIsIDExLCA0LCAyNDcsIDE2MywgMTEsIDQsIDI0NywgMTY3LCAKLSAgICAxMSwgNCwgMjQ3LCAxNjQsIDExLCA0LCAyNDcsIDI1MiwgMTEsIDQsIDI0NywgMjMzLCAxMSwgNCwgMjQ4LCAyMywgMTEsIDQsIAotICAgIDI0OCwgMiwgMTEsIDQsIDI0OCwgMTAxLCAxMSwgNCwgMjQ4LCAxNjIsIDExLCA0LCAyNDgsIDExMywgMTEsIDQsIDI0NywgCi0gICAgMTQ3LCAxMSwgNCwgMjQ3LCAxNDMsIDExLCA0LCAyNDcsIDE5MywgMTEsIDQsIDI0NywgMTYyLCAxMSwgNCwgMjQ3LCAxNTUsIAotICAgIDExLCA0LCAyNDcsIDE2MCwgMTEsIDQsIDI0NywgMTMxLCAxMSwgNCwgMjQ3LCAxMjksIDExLCA0LCAyNDcsIDEzNiwgMTEsIAotICAgIDQsIDI0NywgMTM0LCAxMSwgNCwgMjQ3LCAxMzIsIDExLCA0LCAyNDcsIDEzMywgMTEsIDQsIDIxOCwgMTA1LCAxMSwgNCwgCi0gICAgMjE4LCAxMDEsIDExLCA0LCAyMTgsIDE2NywgMTEsIDQsIDIxOCwgMTE3LCAxMSwgNCwgMjE4LCAxMzMsIDExLCA0LCAyMTgsIAotICAgIDE2MCwgMTEsIDQsIDIxOCwgMTU2LCAxMSwgNCwgMjE5LCA1NSwgMTEsIDQsIDIxOSwgNDQsIDExLCA0LCAxODUsIDExLCA0LCAKLSAgICAyMTksIDk2LCAxMSwgNCwgMjE3LCAxNzMsIDExLCA0LCAyMTcsIDE3NSwgMTEsIDQsIDIxNywgMTc0LCAxMSwgNCwgMjE4LCAKLSAgICAyNSwgMTEsIDQsIDIxOCwgMTQsIDExLCA0LCAyMTgsIDY5LCAxMSwgNCwgMjE4LCA0MSwgMTEsIDQsIDIxNywgMTU5LCAxMSwgCi0gICAgNCwgMjE3LCAxNTUsIDExLCA0LCAyMTcsIDE5MSwgMTEsIDQsIDIxNywgMTcyLCAxMSwgNCwgMjE3LCAxNjQsIDExLCA0LCAKLSAgICAyMTcsIDE3MCwgMTEsIDQsIDIxNywgMTM4LCAxMSwgNCwgMjE3LCAxMzcsIDExLCA0LCAyMTcsIDE0MiwgMTEsIDQsIDIxNywgCi0gICAgMTQxLCAxMSwgNCwgMjE3LCAxMzksIDExLCA0LCAyMTcsIDE0MCwgMTEsIDQsIDI0OCwgMTgzLCAxMSwgNCwgMjQ4LCAxODIsIAotICAgIDExLCA0LCAyNDgsIDE4OSwgMTEsIDQsIDI0OCwgMTg0LCAxMSwgNCwgMjQ4LCAxODYsIDExLCA0LCAyNDgsIDE4NSwgMTEsIAotICAgIDQsIDI0OCwgMTg4LCAxMSwgNCwgMjQ4LCAxODcsIDExLCA0LCAyNDgsIDE5NSwgMTEsIDQsIDI0OCwgMTk0LCAxMSwgNCwgCi0gICAgMjQ4LCAxOTgsIDExLCA0LCAyNDgsIDE5NiwgMTEsIDQsIDI0OCwgMTc0LCAxMSwgNCwgMjQ4LCAxNzYsIDExLCA0LCAyNDgsIAotICAgIDE3NSwgMTEsIDQsIDI0OCwgMTc5LCAxMSwgNCwgMjQ4LCAxNzgsIDExLCA0LCAyNDgsIDE4MSwgMTEsIDQsIDI0OCwgMTgwLCAKLSAgICAxMSwgNCwgMjQ4LCAxOTAsIDExLCA0LCAyNDgsIDE5MywgMTEsIDQsIDI0OCwgMTkxLCAxMSwgNCwgMjQ4LCAxNzAsIDExLCAKLSAgICA0LCAyNDgsIDE2OSwgMTEsIDQsIDI0OCwgMTc3LCAxMSwgNCwgMjQ4LCAxNzMsIDExLCA0LCAyNDgsIDE3MSwgMTEsIDQsIAotICAgIDI0OCwgMTcyLCAxMSwgNCwgMjQ4LCAxNjYsIDExLCA0LCAyNDgsIDE2NSwgMTEsIDQsIDI0OCwgMTY4LCAxMSwgNCwgMjQ4LCAKLSAgICAxNjcsIDExLCA0LCAyMjMsIDQ3LCAxMSwgNCwgMjIzLCA0NiwgMTEsIDQsIDIyMywgNTIsIDExLCA0LCAyMjMsIDQ4LCAxMSwgCi0gICAgNCwgMjIzLCA0OSwgMTEsIDQsIDIyMywgNTEsIDExLCA0LCAyMjMsIDUwLCAxMSwgNCwgMjIzLCA1NSwgMTEsIDQsIDIyMywgCi0gICAgNTQsIDExLCA0LCAyMjMsIDU3LCAxMSwgNCwgMjIzLCA1NiwgMTEsIDQsIDIyMywgNDMsIDExLCA0LCAyMjMsIDQyLCAxMSwgCi0gICAgNCwgMjIzLCA0NSwgMTEsIDQsIDIyMywgNDQsIDExLCA0LCAyMjMsIDM2LCAxMSwgNCwgMjIzLCAzNSwgMTEsIDQsIDIyMywgCi0gICAgNDAsIDExLCA0LCAyMjMsIDM5LCAxMSwgNCwgMjIzLCAzNywgMTEsIDQsIDIyMywgMzgsIDExLCA0LCAyMjMsIDMwLCAxMSwgCi0gICAgNCwgMjIzLCAyOSwgMTEsIDQsIDIyMywgMzQsIDExLCA0LCAyMjMsIDMzLCAxMSwgNCwgMjIzLCAzMSwgMTEsIDQsIDIyMywgCi0gICAgMzIsIDExLCA0LCAyMzYsIDE4MCwgMTEsIDQsIDIzNiwgMTc5LCAxMSwgNCwgMjM2LCAxODUsIDExLCA0LCAyMzYsIDE4MSwgCi0gICAgMTEsIDQsIDIzNiwgMTgyLCAxMSwgNCwgMjM2LCAxODQsIDExLCA0LCAyMzYsIDE4MywgMTEsIDQsIDIzNiwgMTg4LCAxMSwgCi0gICAgNCwgMjM2LCAxODcsIDExLCA0LCAyMzYsIDE5MCwgMTEsIDQsIDIzNiwgMTg5LCAxMSwgNCwgMjM2LCAxNzEsIDExLCA0LCAKLSAgICAyMzYsIDE3MywgMTEsIDQsIDIzNiwgMTcyLCAxMSwgNCwgMjM2LCAxNzYsIDExLCA0LCAyMzYsIDE3NSwgMTEsIDQsIDIzNiwgCi0gICAgMTc4LCAxMSwgNCwgMjM2LCAxNzcsIDExLCA0LCAyMzYsIDE2NywgMTEsIDQsIDIzNiwgMTY2LCAxMSwgNCwgMjM2LCAxNzQsIAotICAgIDExLCA0LCAyMzYsIDE3MCwgMTEsIDQsIDIzNiwgMTY4LCAxMSwgNCwgMjM2LCAxNjksIDExLCA0LCAyMzYsIDE2MSwgMTEsIAotICAgIDQsIDIzNiwgMTY1LCAxMSwgNCwgMjM2LCAxNjQsIDExLCA0LCAyMzYsIDE2MiwgMTEsIDQsIDIzNiwgMTYzLCAxMSwgNCwgCi0gICAgMjI0LCA5MywgMTEsIDQsIDIyNCwgOTIsIDExLCA0LCAyMjQsIDE1NSwgMTEsIDQsIDIyNCwgOTksIDExLCA0LCAyMjQsIAotICAgIDEyNywgMTEsIDQsIDIyNCwgMTQ1LCAxMSwgNCwgMjI0LCAxNDMsIDExLCA0LCAyMjUsIDcxLCAxMSwgNCwgMjI1LCA2NiwgCi0gICAgMTEsIDQsIDE5MiwgMTEsIDQsIDIyNSwgMTA2LCAxMSwgNCwgMjIzLCAyMTMsIDExLCA0LCAyMjMsIDIxMiwgMTEsIDQsIAotICAgIDIyMywgMjE2LCAxMSwgNCwgMjIzLCAyMTQsIDExLCA0LCAyMjQsIDIxLCAxMSwgNCwgMjIzLCAyNTIsIDExLCA0LCAyMjQsIAotICAgIDgyLCAxMSwgNCwgMjI0LCAyNywgMTEsIDQsIDIyNCwgMjA3LCAxMSwgNCwgMjI1LCAyMCwgMTEsIDQsIDIyMywgMTkzLCAxMSwgCi0gICAgNCwgMjIzLCAxODksIDExLCA0LCAyMjMsIDI0NiwgMTEsIDQsIDIyMywgMjA5LCAxMSwgNCwgMjIzLCAyMDIsIDExLCA0LCAKLSAgICAyMjMsIDIwNywgMTEsIDQsIDIyMywgMTY2LCAxMSwgNCwgMjIzLCAxNjUsIDExLCA0LCAyMjMsIDE3MSwgMTEsIDQsIDIyMywgCi0gICAgMTY4LCAxMSwgNCwgMjM5LCAyMzYsIDExLCA0LCAyMzksIDIzMCwgMTEsIDQsIDI0MCwgMjYsIDExLCA0LCAyMzksIDI1MSwgCi0gICAgMTEsIDQsIDI0MCwgNzMsIDExLCA0LCAyNDAsIDY0LCAxMSwgNCwgMjQwLCAxMDgsIDExLCA0LCAyNDAsIDc4LCAxMSwgNCwgCi0gICAgMjM5LCAxMzksIDExLCA0LCAyMzksIDE4NiwgMTEsIDQsIDIzOSwgMTY3LCAxMSwgNCwgMjM5LCA5MSwgMTEsIDQsIDIzOSwgCi0gICAgOTAsIDExLCA0LCAyMzksIDEwOCwgMTEsIDQsIDIzOSwgOTYsIDExLCA0LCAyMzksIDk0LCAxMSwgNCwgMjM5LCA5NSwgMTEsIAotICAgIDQsIDIzOSwgNzgsIDExLCA0LCAyMzksIDc3LCAxMSwgNCwgMjM5LCA4MSwgMTEsIDQsIDIzOSwgNzksIDExLCA0LCAyMDUsIAotICAgIDE5NiwgMTEsIDQsIDIwNSwgMTkxLCAxMSwgNCwgMjA1LCAyMzAsIDExLCA0LCAyMDUsIDIwNSwgMTEsIDQsIDIwNSwgMjE5LCAKLSAgICAxMSwgNCwgMjA1LCAyMTYsIDExLCA0LCAyMDUsIDIyMiwgMTEsIDQsIDIwNSwgMjIxLCAxMSwgNCwgMjA2LCA2MywgMTEsIDQsIAotICAgIDIwNiwgNTgsIDExLCA0LCAyMDYsIDg2LCAxMSwgNCwgMjA2LCA3NSwgMTEsIDQsIDIwNSwgMTcyLCAxMSwgNCwgMjA1LCAKLSAgICAxNjgsIDExLCA0LCAyMDUsIDE4OSwgMTEsIDQsIDIwNSwgMTc0LCAxMSwgNCwgMjA1LCAyMzMsIDExLCA0LCAyMDYsIDQ0LCAKLSAgICAxMSwgNCwgMjA0LCAxNTcsIDExLCA0LCAyMDQsIDE1NSwgMTEsIDQsIDIwNCwgMTYzLCAxMSwgNCwgMjA0LCAxNjAsIDExLCAKLSAgICA0LCAyMDQsIDE1OCwgMTEsIDQsIDIwNCwgMTU5LCAxMSwgNCwgMjA0LCAxNDgsIDExLCA0LCAyMDQsIDE0NywgMTEsIDQsIAotICAgIDIwNCwgMTUyLCAxMSwgNCwgMjA0LCAxNTEsIDExLCA0LCAyMDQsIDE0OSwgMTEsIDQsIDIwNCwgMTUwLCAxMSwgNCwgMjQzLCAKLSAgICAxNDcsIDExLCA0LCAyNDMsIDEzNCwgMTEsIDQsIDI0MywgMjMzLCAxMSwgNCwgMjQzLCAxNzMsIDExLCA0LCAyNDMsIDIwOCwgCi0gICAgMTEsIDQsIDI0MywgMjEzLCAxMSwgNCwgMjQzLCAyMTIsIDExLCA0LCAyNDQsIDE0MCwgMTEsIDQsIDI0NCwgMTM0LCAxMSwgCi0gICAgNCwgMjQ0LCAyMTIsIDExLCA0LCAyNDQsIDE2MCwgMTEsIDQsIDI0MiwgMjUsIDExLCA0LCAyNDIsIDI2LCAxMSwgNCwgMjQzLCAKLSAgICA4NSwgMTEsIDQsIDI0MiwgNjcsIDExLCA0LCAyNDMsIDExMywgMTEsIDQsIDI0MywgODcsIDExLCA0LCAyNDQsIDcsIDExLCAKLSAgICA0LCAyNDQsIDc1LCAxMSwgNCwgMjQ0LCAyOCwgMTEsIDQsIDI0MiwgMTYsIDExLCA0LCAyNDIsIDE0LCAxMSwgNCwgMjQyLCAKLSAgICA0MiwgMTEsIDQsIDI0MiwgMjQsIDExLCA0LCAyNDIsIDE5LCAxMSwgNCwgMjQyLCAyMiwgMTEsIDQsIDIwOCwgMjAwLCAxMSwgCi0gICAgNCwgMjA4LCAxOTIsIDExLCA0LCAyMDksIDIsIDExLCA0LCAyMDgsIDIxMCwgMTEsIDQsIDIwOCwgMjQ4LCAxMSwgNCwgMjA4LCAKLSAgICAyNTAsIDExLCA0LCAyMDgsIDI0OSwgMTEsIDQsIDIwOSwgMjEyLCAxMSwgNCwgMjA5LCAxOTgsIDExLCA0LCAyMTAsIDIyLCAKLSAgICAxMSwgNCwgMjA5LCAyMjIsIDExLCA0LCAyMDcsIDE4NSwgMTEsIDQsIDIwNywgMTg0LCAxMSwgNCwgMjA3LCAxODcsIDExLCAKLSAgICA0LCAyMDcsIDE4NiwgMTEsIDQsIDIwOCwgMTMxLCAxMSwgNCwgMjA4LCAxMjEsIDExLCA0LCAxMzUsIDExLCA0LCAyMDgsIAotICAgIDE0NCwgMTEsIDQsIDIwOSwgMTE0LCAxMSwgNCwgMjA5LCAxODcsIDExLCA0LCAyMDksIDEzOSwgMTEsIDQsIDIwNywgMTY4LCAKLSAgICAxMSwgNCwgMjA3LCAxNjMsIDExLCA0LCAyMDcsIDIwMywgMTEsIDQsIDIwNywgMTgzLCAxMSwgNCwgMjA3LCAxNjksIDExLCAKLSAgICA0LCAyMDcsIDE4MSwgMTEsIDQsIDI0NCwgOTIsIDExLCA0LCAyNDQsIDkxLCAxMSwgNCwgMjQ0LCA5NywgMTEsIDQsIDI0NCwgCi0gICAgOTMsIDExLCA0LCAyNDQsIDk0LCAxMSwgNCwgMjQ0LCA5NiwgMTEsIDQsIDI0NCwgOTUsIDExLCA0LCAyNDQsIDExMywgMTEsIAotICAgIDQsIDI0NCwgMTEyLCAxMSwgNCwgMjQ0LCAxMjAsIDExLCA0LCAyNDQsIDExNCwgMTEsIDQsIDI0NCwgODIsIDExLCA0LCAKLSAgICAyNDQsIDg0LCAxMSwgNCwgMjQ0LCA4MywgMTEsIDQsIDI0NCwgODcsIDExLCA0LCAyNDQsIDg2LCAxMSwgNCwgMjQ0LCA5MCwgCi0gICAgMTEsIDQsIDI0NCwgODgsIDExLCA0LCAyNDQsIDEwNSwgMTEsIDQsIDI0NCwgMTA4LCAxMSwgNCwgMjQ0LCAxMDYsIDExLCA0LCAKLSAgICAyNDQsIDc4LCAxMSwgNCwgMjQ0LCA3NywgMTEsIDQsIDI0NCwgODUsIDExLCA0LCAyNDQsIDgxLCAxMSwgNCwgMjQ0LCA3OSwgCi0gICAgMTEsIDQsIDI0NCwgODAsIDExLCA0LCAyMjMsIDMsIDExLCA0LCAyMjMsIDIsIDExLCA0LCAyMjMsIDEwLCAxMSwgNCwgMjIzLCAKLSAgICA1LCAxMSwgNCwgMjIzLCA2LCAxMSwgNCwgMjIzLCA3LCAxMSwgNCwgMjIzLCAxOSwgMTEsIDQsIDIyMywgMTgsIDExLCA0LCAKLSAgICAyMjMsIDI1LCAxMSwgNCwgMjIzLCAyMCwgMTEsIDQsIDIyMiwgMjUxLCAxMSwgNCwgMjIyLCAyNTAsIDExLCA0LCAyMjMsIDEsIAotICAgIDExLCA0LCAyMjIsIDI1MiwgMTEsIDQsIDIyMywgMTEsIDExLCA0LCAyMjMsIDE3LCAxMSwgNCwgMjIzLCAxNSwgMTEsIDQsIAotICAgIDIyMiwgMjQzLCAxMSwgNCwgMjIyLCAyNDIsIDExLCA0LCAyMjIsIDI0OCwgMTEsIDQsIDIyMiwgMjQ2LCAxMSwgNCwgMjIyLCAKLSAgICAyNDQsIDExLCA0LCAyMjIsIDI0NSwgMTEsIDQsIDIzNiwgMTQ2LCAxMSwgNCwgMjM2LCAxNDUsIDExLCA0LCAyMzYsIDE1MiwgCi0gICAgMTEsIDQsIDIzNiwgMTQ3LCAxMSwgNCwgMjM2LCAxNDksIDExLCA0LCAyMzYsIDE0OCwgMTEsIDQsIDIzNiwgMTUxLCAxMSwgCi0gICAgNCwgMjM2LCAxNTAsIDExLCA0LCAyMzYsIDE1OCwgMTEsIDQsIDIzNiwgMTU2LCAxMSwgNCwgMjM2LCAxNjAsIDExLCA0LCAKLSAgICAyMzYsIDE1OSwgMTEsIDQsIDIzNiwgMTM5LCAxMSwgNCwgMjM2LCAxNDAsIDExLCA0LCAyMzYsIDE0MywgMTEsIDQsIDIzNiwgCi0gICAgMTQyLCAxMSwgNCwgMjM2LCAxNDQsIDExLCA0LCAyMzYsIDE1MywgMTEsIDQsIDIzNiwgMTU1LCAxMSwgNCwgMjM2LCAxNTQsIAotICAgIDExLCA0LCAyMzYsIDEzOCwgMTEsIDQsIDIyMiwgNTIsIDExLCA0LCAyMjIsIDUwLCAxMSwgNCwgMjIyLCAxMDAsIDExLCA0LCAKLSAgICAyMjIsIDU1LCAxMSwgNCwgMjIyLCA4MiwgMTEsIDQsIDIyMiwgOTYsIDExLCA0LCAyMjIsIDk1LCAxMSwgNCwgMjIzLCA2MSwgCi0gICAgMTEsIDQsIDIwMSwgMjAxLCAxMSwgNCwgMjIzLCA3NiwgMTEsIDQsIDIyMSwgMzIsIDExLCA0LCAyMjEsIDM0LCAxMSwgNCwgCi0gICAgMjIxLCAzMywgMTEsIDQsIDIyMSwgMTY1LCAxMSwgNCwgMjIxLCAxNTAsIDExLCA0LCAyMjEsIDE5MSwgMTEsIDQsIDIyMSwgCi0gICAgMTc2LCAxMSwgNCwgMjIyLCAyMDksIDExLCA0LCAyMjIsIDI0MCwgMTEsIDQsIDIyMiwgMjI1LCAxMSwgNCwgMjIxLCAyNywgCi0gICAgMTEsIDQsIDIyMSwgMjMsIDExLCA0LCAyMjEsIDg0LCAxMSwgNCwgMjIxLCAzMSwgMTEsIDQsIDIyMSwgMjksIDExLCA0LCAKLSAgICAyMjEsIDMwLCAxMSwgNCwgMjM2LCAyMTEsIDExLCA0LCAyMzYsIDIxMCwgMTEsIDQsIDIzNiwgMjE2LCAxMSwgNCwgMjM2LCAKLSAgICAyMTIsIDExLCA0LCAyMzYsIDIxMywgMTEsIDQsIDIzNiwgMjE1LCAxMSwgNCwgMjM2LCAyMTQsIDExLCA0LCAyMzYsIDIyMiwgCi0gICAgMTEsIDQsIDIzNiwgMjIwLCAxMSwgNCwgMjM2LCAyMjQsIDExLCA0LCAyMzYsIDIyMywgMTEsIDQsIDIzNiwgMjAzLCAxMSwgCi0gICAgNCwgMjM2LCAyMDUsIDExLCA0LCAyMzYsIDIwNCwgMTEsIDQsIDIzNiwgMjA3LCAxMSwgNCwgMjM2LCAyMDksIDExLCA0LCAKLSAgICAyMzYsIDIwOCwgMTEsIDQsIDIzNiwgMjE3LCAxMSwgNCwgMjM2LCAyMTksIDExLCA0LCAyMzYsIDIxOCwgMTEsIDQsIDIzNiwgCi0gICAgMTk5LCAxMSwgNCwgMjM2LCAxOTgsIDExLCA0LCAyMzYsIDIwNiwgMTEsIDQsIDIzNiwgMjAyLCAxMSwgNCwgMjM2LCAyMDAsIAotICAgIDExLCA0LCAyMzYsIDIwMSwgMTEsIDQsIDIzNiwgMTkzLCAxMSwgNCwgMjM2LCAxOTIsIDExLCA0LCAyMzYsIDE5NywgMTEsIAotICAgIDQsIDIzNiwgMTk2LCAxMSwgNCwgMjM2LCAxOTQsIDExLCA0LCAyMzYsIDE5NSwgMTEsIDQsIDIyNywgOTAsIDExLCA0LCAKLSAgICAyMjcsIDgyLCAxMSwgNCwgMjI3LCAxNDgsIDExLCA0LCAyMjcsIDEwMCwgMTEsIDQsIDIyNywgMTM5LCAxMSwgNCwgMjI3LCAKLSAgICAxMzgsIDExLCA0LCAyMjcsIDE0MiwgMTEsIDQsIDIyNywgMTQwLCAxMSwgNCwgMjI4LCAwLCAxMSwgNCwgMjI3LCAyNDUsIAotICAgIDExLCA0LCAyMjgsIDExMywgMTEsIDQsIDIyOCwgMTEsIDExLCA0LCAyMjYsIDIxNywgMTEsIDQsIDIyNiwgMjE2LCAxMSwgNCwgCi0gICAgMjI2LCAyMTksIDExLCA0LCAyMjYsIDIxOCwgMTEsIDQsIDIyNywgNiwgMTEsIDQsIDIyNiwgMjQ4LCAxMSwgNCwgMjI3LCAKLSAgICA0OSwgMTEsIDQsIDIyNywgMTEsIDExLCA0LCAyMjcsIDE2NSwgMTEsIDQsIDIyNywgMjM0LCAxMSwgNCwgMjI3LCAxODIsIAotICAgIDExLCA0LCAyMjYsIDIxMSwgMTEsIDQsIDIyNiwgMjA5LCAxMSwgNCwgMjI2LCAyMzksIDExLCA0LCAyMjYsIDIxNSwgMTEsIAotICAgIDQsIDIyNiwgMjEzLCAxMSwgNCwgMjI2LCAyMTQsIDExLCA0LCAyMjYsIDE5MCwgMTEsIDQsIDIyNiwgMTg5LCAxMSwgNCwgCi0gICAgMjI2LCAxOTksIDExLCA0LCAyMjYsIDE5MywgMTEsIDQsIDIyNiwgMTkxLCAxMSwgNCwgMjI2LCAxOTIsIDExLCA0LCAyMzgsIAotICAgIDU0LCAxMSwgNCwgMjM4LCA1MywgMTEsIDQsIDIzOCwgODEsIDExLCA0LCAyMzgsIDY1LCAxMSwgNCwgMjM4LCA3MywgMTEsIAotICAgIDQsIDIzOCwgNzIsIDExLCA0LCAyMzgsIDc1LCAxMSwgNCwgMjM4LCA3NCwgMTEsIDQsIDIzOCwgMjE3LCAxMSwgNCwgMjM4LCAKLSAgICAyMTIsIDExLCA0LCAyMzksIDgsIDExLCA0LCAyMzgsIDIyNywgMTEsIDQsIDIzNywgMjA1LCAxMSwgNCwgMjM3LCAyMDQsIAotICAgIDExLCA0LCAyMzcsIDIwNywgMTEsIDQsIDIzNywgMjA2LCAxMSwgNCwgMjM4LCAxOCwgMTEsIDQsIDIzOCwgMTYsIDExLCA0LCAKLSAgICAyMzgsIDM5LCAxMSwgNCwgMjM4LCAyNiwgMTEsIDQsIDIzOCwgMTU5LCAxMSwgNCwgMjM4LCAxNTcsIDExLCA0LCAyMzgsIAotICAgIDE5MCwgMTEsIDQsIDIzOCwgMTcwLCAxMSwgNCwgMjM3LCAxOTQsIDExLCA0LCAyMzcsIDE5MywgMTEsIDQsIDIzNywgMjMwLCAKLSAgICAxMSwgNCwgMjM3LCAyMDMsIDExLCA0LCAyMzcsIDE5NSwgMTEsIDQsIDIzNywgMjAyLCAxMSwgNCwgMjI5LCA2NCwgMTEsIDQsIAotICAgIDIyOSwgNjEsIDExLCA0LCAyMjksIDEwMCwgMTEsIDQsIDIyOSwgNzgsIDExLCA0LCAyMjksIDg5LCAxMSwgNCwgMjI5LCA5MywgCi0gICAgMTEsIDQsIDIyOSwgOTEsIDExLCA0LCAyMjksIDIyNiwgMTEsIDQsIDIyOSwgMjA5LCAxMSwgNCwgMTczLCAxMSwgNCwgMjI5LCAKLSAgICAyNTMsIDExLCA0LCAyMjgsIDE4NywgMTEsIDQsIDIyOCwgMTkyLCAxMSwgNCwgMjI4LCAxODksIDExLCA0LCAyMjgsIDI1MCwgCi0gICAgMTEsIDQsIDIyOCwgMjQ1LCAxMSwgNCwgMjI5LCAyNiwgMTEsIDQsIDIyOSwgMSwgMTEsIDQsIDIyOSwgMTcwLCAxMSwgNCwgCi0gICAgMjI5LCAxNTMsIDExLCA0LCAyMjksIDIwMSwgMTEsIDQsIDIyOSwgMTc0LCAxMSwgNCwgMjI4LCAxNzUsIDExLCA0LCAyMjgsIAotICAgIDE3MSwgMTEsIDQsIDIyOCwgMjA5LCAxMSwgNCwgMjI4LCAxODYsIDExLCA0LCAyMjgsIDE3OSwgMTEsIDQsIDIyOCwgMTgzLCAKLSAgICAxMSwgNCwgMjM4LCAxNDEsIDExLCA0LCAyMzgsIDE0MCwgMTEsIDQsIDIzOCwgMTQ1LCAxMSwgNCwgMjM4LCAxNDIsIDExLCAKLSAgICA0LCAyMzgsIDE0NCwgMTEsIDQsIDIzOCwgMTQzLCAxMSwgNCwgMjM4LCAxNTIsIDExLCA0LCAyMzgsIDE1MSwgMTEsIDQsIAotICAgIDIzOCwgMTU1LCAxMSwgNCwgMjM4LCAxNTMsIDExLCA0LCAyMzgsIDEzMiwgMTEsIDQsIDIzOCwgMTMxLCAxMSwgNCwgMjM4LCAKLSAgICAxMzQsIDExLCA0LCAyMzgsIDEzMywgMTEsIDQsIDIzOCwgMTM3LCAxMSwgNCwgMjM4LCAxMzYsIDExLCA0LCAyMzgsIDEzOSwgCi0gICAgMTEsIDQsIDIzOCwgMTM4LCAxMSwgNCwgMjM4LCAxNDcsIDExLCA0LCAyMzgsIDE0NiwgMTEsIDQsIDIzOCwgMTUwLCAxMSwgCi0gICAgNCwgMjM4LCAxNDgsIDExLCA0LCAyMzgsIDEyNywgMTEsIDQsIDIzOCwgMTI2LCAxMSwgNCwgMjM4LCAxMzUsIDExLCA0LCAKLSAgICAyMzgsIDEzMCwgMTEsIDQsIDIzOCwgMTI4LCAxMSwgNCwgMjM4LCAxMjksIDExLCA0LCAyMjQsIDE3NCwgMTEsIDQsIDIyNCwgCi0gICAgMTc1LCAxMSwgNCwgMjI0LCAxOTMsIDExLCA0LCAyMjQsIDE5MiwgMTEsIDQsIDIyNCwgMTk1LCAxMSwgNCwgMjI0LCAxOTQsIAotICAgIDExLCA0LCAyMjQsIDE2NSwgMTEsIDQsIDIyNCwgMTY3LCAxMSwgNCwgMjI0LCAxNjYsIDExLCA0LCAyMjQsIDE3MCwgMTEsIAotICAgIDQsIDIyNCwgMTY5LCAxMSwgNCwgMjI0LCAxNzIsIDExLCA0LCAyMjQsIDE3MSwgMTEsIDQsIDIyNCwgMTc2LCAxMSwgNCwgCi0gICAgMjI0LCAxNzgsIDExLCA0LCAyMjQsIDE3NywgMTEsIDQsIDIyNCwgMTYxLCAxMSwgNCwgMjI0LCAxNjAsIDExLCA0LCAyMjQsIAotICAgIDE2OCwgMTEsIDQsIDIyNCwgMTY0LCAxMSwgNCwgMjI0LCAxNjIsIDExLCA0LCAyMjQsIDE2MywgMTEsIDQsIDIzNSwgMjMzLCAKLSAgICAxMSwgNCwgMjM1LCAyMzIsIDExLCA0LCAyMzUsIDIzOSwgMTEsIDQsIDIzNSwgMjM0LCAxMSwgNCwgMjM1LCAyMzYsIDExLCAKLSAgICA0LCAyMzUsIDIzNSwgMTEsIDQsIDIzNSwgMjM4LCAxMSwgNCwgMjM1LCAyMzcsIDExLCA0LCAyMzUsIDI0NCwgMTEsIDQsIAotICAgIDIzNSwgMjQzLCAxMSwgNCwgMjM1LCAyNDYsIDExLCA0LCAyMzUsIDI0NSwgMTEsIDQsIDIzNSwgMjI1LCAxMSwgNCwgMjM1LCAKLSAgICAyMjQsIDExLCA0LCAyMzUsIDIyNywgMTEsIDQsIDIzNSwgMjI2LCAxMSwgNCwgMjM1LCAyMjksIDExLCA0LCAyMzUsIDIyOCwgCi0gICAgMTEsIDQsIDIzNSwgMjMxLCAxMSwgNCwgMjM1LCAyMzAsIDExLCA0LCAyMzUsIDI0MCwgMTEsIDQsIDIzNSwgMjQyLCAxMSwgCi0gICAgNCwgMjM1LCAyNDEsIDExLCA0LCAyMjIsIDE0OCwgMTEsIDQsIDIyMiwgMTUwLCAxMSwgNCwgMjIyLCAxNDksIDExLCA0LCAKLSAgICAyMjIsIDE5MywgMTEsIDQsIDIyMiwgMTkxLCAxMSwgNCwgMjIyLCAyMDMsIDExLCA0LCAyMjIsIDE5NiwgMTEsIDQsIDIyMiwgCi0gICAgMTEwLCAxMSwgNCwgMjIyLCAxMDksIDExLCA0LCAyMjIsIDExMSwgMTEsIDQsIDIyMiwgMTIwLCAxMSwgNCwgMjIyLCAxMTcsIAotICAgIDExLCA0LCAyMjIsIDEyOCwgMTEsIDQsIDIyMiwgMTIyLCAxMSwgNCwgMjIyLCAxODQsIDExLCA0LCAyMjIsIDE5MCwgMTEsIAotICAgIDQsIDIyMiwgMTg2LCAxMSwgNCwgMjM2LCAyMzAsIDExLCA0LCAyMzYsIDI0NSwgMTEsIDQsIDIzNiwgMjU0LCAxMSwgNCwgCi0gICAgMjM3LCA4MywgMTEsIDQsIDIzNywgNzIsIDExLCA0LCAxNTIsIDExLCA0LCAyMzcsIDk0LCAxMSwgNCwgMjM2LCA2LCAxMSwgCi0gICAgNCwgMjM2LCA1LCAxMSwgNCwgMjM2LCA4LCAxMSwgNCwgMjM2LCA3LCAxMSwgNCwgMjM2LCA0NiwgMTEsIDQsIDIzNiwgMzcsIAotICAgIDExLCA0LCAyMzYsIDEzNiwgMTEsIDQsIDIzNiwgMTA5LCAxMSwgNCwgMjM3LCAxOCwgMTEsIDQsIDIzNywgNjcsIDExLCA0LCAKLSAgICAyMzcsIDMwLCAxMSwgNCwgMjA0LCA4MywgMTEsIDQsIDIwNCwgNjgsIDExLCA0LCAyMDQsIDExMSwgMTEsIDQsIDIwNCwgOTMsIAotICAgIDExLCA0LCAyMDMsIDIwNiwgMTEsIDQsIDIwMywgMjA4LCAxMSwgNCwgMjAzLCAyMDcsIDExLCA0LCAyMDMsIDIyOSwgMTEsIAotICAgIDQsIDIwNCwgMCwgMTEsIDQsIDIwMywgMjM5LCAxMSwgNCwgMjA0LCA0MiwgMTEsIDQsIDIwNCwgNjIsIDExLCA0LCAyMDQsIAotICAgIDQ3LCAxMSwgNCwgMjAyLCAyNCwgMTEsIDQsIDIwMiwgMjMsIDExLCA0LCAyMDIsIDM5LCAxMSwgNCwgMjAyLCAyNywgMTEsIAotICAgIDQsIDIwMiwgMzIsIDExLCA0LCAyMDIsIDM0LCAxMSwgNCwgMjAyLCAzMywgMTEsIDQsIDIwMiwgMTAwLCAxMSwgNCwgMjAyLCAKLSAgICA5NywgMTEsIDQsIDIwMiwgMTE2LCAxMSwgNCwgMjAyLCAxMDQsIDExLCA0LCAyMDEsIDI1NSwgMTEsIDQsIDIwMiwgMSwgMTEsIAotICAgIDQsIDIwMiwgMCwgMTEsIDQsIDIwMiwgMTMsIDExLCA0LCAyMDIsIDEyLCAxMSwgNCwgMjAyLCAxNywgMTEsIDQsIDIwMiwgCi0gICAgMTQsIDExLCA0LCAyMDIsIDgyLCAxMSwgNCwgMjAyLCA5MiwgMTEsIDQsIDIwMiwgODYsIDExLCA0LCAyMDEsIDI1MSwgMTEsIAotICAgIDQsIDIwMSwgMjUwLCAxMSwgNCwgMjAyLCA2LCAxMSwgNCwgMjAxLCAyNTQsIDExLCA0LCAyMDEsIDI1MiwgMTEsIDQsIDIwMSwgCi0gICAgMjUzLCAxMSwgNCwgMjAxLCAyMzcsIDExLCA0LCAyMDEsIDIzNiwgMTEsIDQsIDIwMSwgMjQyLCAxMSwgNCwgMjAxLCAyNDAsIAotICAgIDExLCA0LCAyMDEsIDIzOCwgMTEsIDQsIDIwMSwgMjM5LCAxMSwgNCwgMjQ2LCA1MCwgMTEsIDQsIDI0NiwgNDMsIDExLCA0LCAKLSAgICAyNDYsIDc5LCAxMSwgNCwgMjQ2LCA2MywgMTEsIDQsIDI0NiwgNzYsIDExLCA0LCAyNDYsIDcwLCAxMSwgNCwgMjQ2LCA3OCwgCi0gICAgMTEsIDQsIDI0NiwgNzcsIDExLCA0LCAyNDcsIDE3LCAxMSwgNCwgMjQ3LCA5LCAxMSwgNCwgMjQ3LCA5MiwgMTEsIDQsIAotICAgIDI0NywgNDgsIDExLCA0LCAyNDUsIDEwMSwgMTEsIDQsIDI0NSwgMTAzLCAxMSwgNCwgMjQ1LCAxMDIsIDExLCA0LCAyNDUsIAotICAgIDE1OCwgMTEsIDQsIDI0NSwgMTQ4LCAxMSwgNCwgMjQ1LCAyNTQsIDExLCA0LCAyNDUsIDE3NSwgMTEsIDQsIDI0NiwgMjAyLCAKLSAgICAxMSwgNCwgMjQ2LCAyMzgsIDExLCA0LCAyNDYsIDIwNywgMTEsIDQsIDI0NSwgNzcsIDExLCA0LCAyNDUsIDc1LCAxMSwgNCwgCi0gICAgMjQ1LCAxMTAsIDExLCA0LCAyNDUsIDk5LCAxMSwgNCwgMjQ1LCA4MywgMTEsIDQsIDI0NSwgOTYsIDExLCA0LCAyNDUsIDU0LCAKLSAgICAxMSwgNCwgMjQ1LCA1MywgMTEsIDQsIDI0NSwgNjYsIDExLCA0LCAyNDUsIDYwLCAxMSwgNCwgMjQ1LCA1NSwgMTEsIDQsIAotICAgIDI0NSwgNTcsIDExLCA0LCAyMDEsIDIyMCwgMTEsIDQsIDIwMSwgMjE5LCAxMSwgNCwgMjAxLCAyMjYsIDExLCA0LCAyMDEsIAotICAgIDIyMSwgMTEsIDQsIDIwMSwgMjIzLCAxMSwgNCwgMjAxLCAyMjIsIDExLCA0LCAyMDEsIDIyNSwgMTEsIDQsIDIwMSwgMjI0LCAKLSAgICAxMSwgNCwgMjAxLCAyMzIsIDExLCA0LCAyMDEsIDIzMSwgMTEsIDQsIDIwMSwgMjM1LCAxMSwgNCwgMjAxLCAyMzMsIDExLCAKLSAgICA0LCAyMDEsIDIxNiwgMTEsIDQsIDIwMSwgMjE4LCAxMSwgNCwgMjAxLCAyMTcsIDExLCA0LCAyMDEsIDIyNywgMTEsIDQsIAotICAgIDIwMSwgMjMwLCAxMSwgNCwgMjAxLCAyMjgsIDExLCA0LCAyMDEsIDIwOSwgMTEsIDQsIDIwMSwgMjEzLCAxMSwgNCwgMjAxLCAKLSAgICAyMTIsIDExLCA0LCAyMDEsIDIxMCwgMTEsIDQsIDIwMSwgMjExLCAxMSwgNCwgMjAxLCAyMDMsIDExLCA0LCAyMDEsIDIwMiwgCi0gICAgMTEsIDQsIDIwMSwgMjA4LCAxMSwgNCwgMjAxLCAyMDYsIDExLCA0LCAyMDEsIDIwNCwgMTEsIDQsIDIwMSwgMjA1LCAxMSwgCi0gICAgNCwgMjIwLCAyMDEsIDExLCA0LCAyMjAsIDIwMCwgMTEsIDQsIDIyMCwgMjA2LCAxMSwgNCwgMjIwLCAyMDIsIDExLCA0LCAKLSAgICAyMjAsIDIwMywgMTEsIDQsIDIyMCwgMjA1LCAxMSwgNCwgMjIwLCAyMDQsIDExLCA0LCAyMjAsIDIxMSwgMTEsIDQsIDIyMCwgCi0gICAgMjEwLCAxMSwgNCwgMjIwLCAyMTQsIDExLCA0LCAyMjAsIDIxMywgMTEsIDQsIDIyMCwgMTk0LCAxMSwgNCwgMjIwLCAxOTUsIAotICAgIDExLCA0LCAyMjAsIDE5OCwgMTEsIDQsIDIyMCwgMTk5LCAxMSwgNCwgMjIwLCAyMDcsIDExLCA0LCAyMjAsIDIwOSwgMTEsIAotICAgIDQsIDIyMCwgMTg5LCAxMSwgNCwgMjIwLCAxOTcsIDExLCA0LCAyMjAsIDE5MywgMTEsIDQsIDIyMCwgMTkwLCAxMSwgNCwgCi0gICAgMjIwLCAxOTEsIDExLCA0LCAyMjAsIDE4NCwgMTEsIDQsIDIyMCwgMTgzLCAxMSwgNCwgMjIwLCAxODgsIDExLCA0LCAyMjAsIAotICAgIDE4NywgMTEsIDQsIDIyMCwgMTg1LCAxMSwgNCwgMjIwLCAxODYsIDExLCA0LCAyMTIsIDkwLCAxMSwgNCwgMTk1LCAxMSwgNCwgCi0gICAgMjEyLCAxNjIsIDExLCA0LCAyMTIsIDkzLCAxMSwgNCwgMjEyLCAxNTAsIDExLCA0LCAyMTIsIDE1MywgMTEsIDQsIDIxMiwgCi0gICAgMTUxLCAxMSwgNCwgMjE0LCAyMjUsIDExLCA0LCAyMTQsIDIxMSwgMTEsIDQsIDIxNSwgMzYsIDExLCA0LCAyMTQsIDIzMywgCi0gICAgMTEsIDQsIDIxMCwgMjA0LCAxMSwgNCwgMjEwLCAyMDYsIDExLCA0LCAyMTAsIDIwNSwgMTEsIDQsIDIxMSwgMjQ0LCAxMSwgCi0gICAgNCwgMjExLCAyMzMsIDExLCA0LCAyMTIsIDEzLCAxMSwgNCwgMjExLCAyNDgsIDExLCA0LCAyMTMsIDEwMywgMTEsIDQsIAotICAgIDIxNCwgMTc3LCAxMSwgNCwgMjEzLCAxMzIsIDExLCA0LCAyMTAsIDE4MSwgMTEsIDQsIDIxMCwgMTc4LCAxMSwgNCwgMjExLCAKLSAgICAxMCwgMTEsIDQsIDIxMCwgMjAzLCAxMSwgNCwgMjEwLCAxODUsIDExLCA0LCAyMTAsIDE5MywgMTEsIDQsIDIxMCwgODMsIAotICAgIDExLCA0LCAyMTAsIDgyLCAxMSwgNCwgMjEwLCAxNTEsIDExLCA0LCAyMTAsIDkxLCAxMSwgNCwgMjEwLCA4NSwgMTEsIDQsIAotICAgIDIxMCwgOTAsIDExLCA0LCAyMTEsIDEyNiwgMTEsIDQsIDIxMSwgMTI1LCAxMSwgNCwgMjExLCAxMzIsIDExLCA0LCAyMTEsIAotICAgIDEyNywgMTEsIDQsIDIxMSwgMTI5LCAxMSwgNCwgMjExLCAxMzEsIDExLCA0LCAyMTEsIDEzMCwgMTEsIDQsIDIxMSwgMTQxLCAKLSAgICAxMSwgNCwgMjExLCAxMzksIDExLCA0LCAyMTEsIDE2NCwgMTEsIDQsIDIxMSwgMTQyLCAxMSwgNCwgMjExLCAxMjEsIDExLCAKLSAgICA0LCAyMTEsIDEyMCwgMTEsIDQsIDIxMSwgMTI0LCAxMSwgNCwgMjExLCAxMjIsIDExLCA0LCAyMTEsIDEzNSwgMTEsIDQsIAotICAgIDIxMSwgMTM4LCAxMSwgNCwgMjExLCAxMzYsIDExLCA0LCAyMTEsIDExNywgMTEsIDQsIDIxMSwgMTE1LCAxMSwgNCwgMjExLCAKLSAgICAxMTksIDExLCA0LCAyMTEsIDExOCwgMTEsIDQsIDIxMSwgMTEwLCAxMSwgNCwgMjExLCAxMDksIDExLCA0LCAyMTEsIDExNCwgCi0gICAgMTEsIDQsIDIxMSwgMTEzLCAxMSwgNCwgMjExLCAxMTEsIDExLCA0LCAyMTEsIDExMiwgMTEsIDQsIDIwMiwgNzUsIDExLCA0LCAKLSAgICAyMDIsIDc0LCAxMSwgNCwgMjAyLCA4MCwgMTEsIDQsIDIwMiwgNzcsIDExLCA0LCAyMDIsIDU0LCAxMSwgNCwgMjAyLCA1NiwgCi0gICAgMTEsIDQsIDIwMiwgNTUsIDExLCA0LCAyMDIsIDU5LCAxMSwgNCwgMjAyLCA1OCwgMTEsIDQsIDIwMiwgNjMsIDExLCA0LCAKLSAgICAyMDIsIDYwLCAxMSwgNCwgMjAyLCA2OCwgMTEsIDQsIDIwMiwgNjcsIDExLCA0LCAyMDIsIDcxLCAxMSwgNCwgMjAyLCA2OSwgCi0gICAgMTEsIDQsIDIwMiwgNTAsIDExLCA0LCAyMDIsIDQ5LCAxMSwgNCwgMjAyLCA1NywgMTEsIDQsIDIwMiwgNTMsIDExLCA0LCAKLSAgICAyMDIsIDUxLCAxMSwgNCwgMjAyLCA1MiwgMTEsIDQsIDIwMiwgNDIsIDExLCA0LCAyMDIsIDQxLCAxMSwgNCwgMjAyLCA0NiwgCi0gICAgMTEsIDQsIDIwMiwgNDUsIDExLCA0LCAyMDIsIDQzLCAxMSwgNCwgMjAyLCA0NCwgMTEsIDQsIDI0NiwgMTc2LCAxMSwgNCwgCi0gICAgMjQ2LCAxNzIsIDExLCA0LCAyNDYsIDE5OSwgMTEsIDQsIDI0NiwgMTg1LCAxMSwgNCwgMjQ2LCA5NCwgMTEsIDQsIDI0NiwgCi0gICAgOTMsIDExLCA0LCAyNDYsIDk2LCAxMSwgNCwgMjQ2LCA5NSwgMTEsIDQsIDI0NiwgMTA5LCAxMSwgNCwgMjQ2LCAxMDgsIDExLCAKLSAgICA0LCAyNDYsIDExNiwgMTEsIDQsIDI0NiwgMTExLCAxMSwgNCwgMjQ2LCAxNDcsIDExLCA0LCAyNDYsIDE0NSwgMTEsIDQsIAotICAgIDI0NiwgMTcwLCAxMSwgNCwgMjQ2LCAxNTUsIDExLCA0LCAyNDYsIDg4LCAxMSwgNCwgMjQ2LCA5OCwgMTEsIDQsIDI0NiwgCi0gICAgOTIsIDExLCA0LCAyNDYsIDg5LCAxMSwgNCwgMjQ2LCA5MSwgMTEsIDQsIDI0NiwgODEsIDExLCA0LCAyNDYsIDgwLCAxMSwgCi0gICAgNCwgMjQ2LCA4NSwgMTEsIDQsIDI0NiwgODQsIDExLCA0LCAyNDYsIDgyLCAxMSwgNCwgMjQ2LCA4MywgMTEsIDQsIDIxNSwgCi0gICAgMTgxLCAxMSwgNCwgMjE1LCAxODUsIDExLCA0LCAyMTUsIDE2MywgMTEsIDQsIDIxNSwgMTY0LCAxMSwgNCwgMjE1LCAxNjgsIAotICAgIDExLCA0LCAyMTUsIDE2NywgMTEsIDQsIDIxNSwgMTcxLCAxMSwgNCwgMjE1LCAxNjksIDExLCA0LCAyMTUsIDE3NSwgMTEsIAotICAgIDQsIDIxNSwgMTc0LCAxMSwgNCwgMjE1LCAxODAsIDExLCA0LCAyMTUsIDE3NiwgMTEsIDQsIDIxNSwgMTU5LCAxMSwgNCwgCi0gICAgMjE1LCAxNTcsIDExLCA0LCAyMTUsIDE2NSwgMTEsIDQsIDIxNSwgMTYyLCAxMSwgNCwgMjE1LCAxNjAsIDExLCA0LCAyMTUsIAotICAgIDE2MSwgMTEsIDQsIDIxNSwgMTUyLCAxMSwgNCwgMjE1LCAxNTEsIDExLCA0LCAyMTUsIDE1NiwgMTEsIDQsIDIxNSwgMTU1LCAKLSAgICAxMSwgNCwgMjE1LCAxNTMsIDExLCA0LCAyMTUsIDE1NCwgMTEsIDQsIDIyMSwgMTQ1LCAxMSwgNCwgMjIxLCAxNDQsIDExLCAKLSAgICA0LCAyMjEsIDE0NywgMTEsIDQsIDIyMSwgMTQ2LCAxMSwgNCwgMjIxLCAxMzYsIDExLCA0LCAyMjEsIDEzOCwgMTEsIDQsIAotICAgIDIyMSwgMTM3LCAxMSwgNCwgMjIxLCAxNDAsIDExLCA0LCAyMjEsIDEzOSwgMTEsIDQsIDIyMSwgMTQzLCAxMSwgNCwgMjIxLCAKLSAgICAxNDIsIDExLCA0LCAyMjEsIDEzMCwgMTEsIDQsIDIyMSwgMTI5LCAxMSwgNCwgMjIxLCAxMzUsIDExLCA0LCAyMjEsIDEzMywgCi0gICAgMTEsIDQsIDIyMSwgMTMxLCAxMSwgNCwgMjIxLCAxMzIsIDExLCA0LCAyMjEsIDEyNCwgMTEsIDQsIDIyMSwgMTIzLCAxMSwgCi0gICAgNCwgMjIxLCAxMjgsIDExLCA0LCAyMjEsIDEyNywgMTEsIDQsIDIyMSwgMTI1LCAxMSwgNCwgMjIxLCAxMjYsIDExLCA0LCAKLSAgICAyMTMsIDUzLCAxMSwgNCwgMjEzLCA0OCwgMTEsIDQsIDIxMywgOTAsIDExLCA0LCAyMTMsIDY0LCAxMSwgNCwgMjEyLCAxODgsIAotICAgIDExLCA0LCAyMTIsIDE5MCwgMTEsIDQsIDIxMiwgMTg5LCAxMSwgNCwgMjEyLCAyMTIsIDExLCA0LCAyMTIsIDIwOCwgMTEsIAotICAgIDQsIDIxMiwgMjQyLCAxMSwgNCwgMjEyLCAyMzIsIDExLCA0LCAyMTMsIDIxLCAxMSwgNCwgMjEzLCAxNCwgMTEsIDQsIDIxMywgCi0gICAgNDMsIDExLCA0LCAyMTMsIDMwLCAxMSwgNCwgMjEyLCAxODQsIDExLCA0LCAyMTIsIDE4MSwgMTEsIDQsIDIxMiwgMTk5LCAKLSAgICAxMSwgNCwgMjEyLCAxODcsIDExLCA0LCAyMTIsIDE4NSwgMTEsIDQsIDIxMiwgMTg2LCAxMSwgNCwgMjEyLCAxNjUsIDExLCAKLSAgICA0LCAyMTIsIDE2NCwgMTEsIDQsIDIxMiwgMTcxLCAxMSwgNCwgMjEyLCAxNjgsIDExLCA0LCAyMTIsIDE2NiwgMTEsIDQsIAotICAgIDIxMiwgMTY3LCAxMSwgNCwgMjE2LCAxNzIsIDExLCA0LCAyMTYsIDE2NiwgMTEsIDQsIDIxNiwgMjIwLCAxMSwgNCwgMjE2LCAKLSAgICAxNzgsIDExLCA0LCAyMTUsIDEyMiwgMTEsIDQsIDIxNSwgMTI0LCAxMSwgNCwgMjE1LCAxMjMsIDExLCA0LCAyMTUsIDE5OSwgCi0gICAgMTEsIDQsIDIxNSwgMTg3LCAxMSwgNCwgMjE1LCAyMjcsIDExLCA0LCAyMTUsIDIwMywgMTEsIDQsIDIxNiwgNjYsIDExLCA0LCAKLSAgICAyMTYsIDE1OCwgMTEsIDQsIDIxNiwgMTA1LCAxMSwgNCwgMjE1LCAxMTUsIDExLCA0LCAyMTUsIDExMiwgMTEsIDQsIDIxNSwgCi0gICAgMTQ1LCAxMSwgNCwgMjE1LCAxMjEsIDExLCA0LCAyMTUsIDExNywgMTEsIDQsIDIxNSwgMTE4LCAxMSwgNCwgMjE1LCA5NywgCi0gICAgMTEsIDQsIDIxNSwgOTYsIDExLCA0LCAyMTUsIDEwMiwgMTEsIDQsIDIxNSwgMTAwLCAxMSwgNCwgMjE1LCA5OCwgMTEsIDQsIAotICAgIDIxNSwgOTksIDExLCA0LCAyMzAsIDEzMSwgMTEsIDQsIDIzMCwgMTMwLCAxMSwgNCwgMjMwLCAxNDEsIDExLCA0LCAyMzAsIAotICAgIDEzMiwgMTEsIDQsIDIzMCwgMTM3LCAxMSwgNCwgMjMwLCAxMzYsIDExLCA0LCAyMzAsIDEzOSwgMTEsIDQsIDIzMCwgMTM4LCAKLSAgICAxMSwgNCwgMjMwLCA3MiwgMTEsIDQsIDIzMCwgNzEsIDExLCA0LCAyMzAsIDc0LCAxMSwgNCwgMjMwLCA3MywgMTEsIDQsIAotICAgIDIzMCwgODgsIDExLCA0LCAyMzAsIDg2LCAxMSwgNCwgMjMwLCAxMDEsIDExLCA0LCAyMzAsIDkwLCAxMSwgNCwgMjMwLCA2NSwgCi0gICAgMTEsIDQsIDIzMCwgNjMsIDExLCA0LCAyMzAsIDgyLCAxMSwgNCwgMjMwLCA3MCwgMTEsIDQsIDIzMCwgNjcsIDExLCA0LCAKLSAgICAyMzAsIDY4LCAxMSwgNCwgMjMwLCA1NywgMTEsIDQsIDIzMCwgNTYsIDExLCA0LCAyMzAsIDYxLCAxMSwgNCwgMjMwLCA2MCwgCi0gICAgMTEsIDQsIDIzMCwgNTgsIDExLCA0LCAyMzAsIDU5LCAxMSwgNCwgMjE3LCA4MSwgMTEsIDQsIDIxNywgNzksIDExLCA0LCAKLSAgICAyMTcsIDg4LCAxMSwgNCwgMjE3LCA4MiwgMTEsIDQsIDIxNywgODUsIDExLCA0LCAyMTcsIDg0LCAxMSwgNCwgMjE3LCA4NywgCi0gICAgMTEsIDQsIDIxNywgODYsIDExLCA0LCAyMTcsIDMyLCAxMSwgNCwgMjE3LCAyOSwgMTEsIDQsIDIxNywgMzQsIDExLCA0LCAKLSAgICAyMTcsIDMzLCAxMSwgNCwgMjE3LCA2OCwgMTEsIDQsIDIxNywgNjcsIDExLCA0LCAyMTcsIDc3LCAxMSwgNCwgMjE3LCA3MSwgCi0gICAgMTEsIDQsIDIxNywgMjQsIDExLCA0LCAyMTcsIDIwLCAxMSwgNCwgMjE3LCA2NSwgMTEsIDQsIDIxNywgMjgsIDExLCA0LCAKLSAgICAyMTcsIDI2LCAxMSwgNCwgMjE3LCAyNywgMTEsIDQsIDIxNywgNCwgMTEsIDQsIDIxNywgMiwgMTEsIDQsIDIxNywgMTQsIAotICAgIDExLCA0LCAyMTcsIDcsIDExLCA0LCAyMTcsIDUsIDExLCA0LCAyMTcsIDYsIDExLCA0LCAyMzAsIDEyMCwgMTEsIDQsIDIzMCwgCi0gICAgMTE5LCAxMSwgNCwgMjMwLCAxMjYsIDExLCA0LCAyMzAsIDEyMSwgMTEsIDQsIDIzMCwgMTIzLCAxMSwgNCwgMjMwLCAxMjIsIAotICAgIDExLCA0LCAyMzAsIDEyNSwgMTEsIDQsIDIzMCwgMTI0LCAxMSwgNCwgMjMwLCAxMTEsIDExLCA0LCAyMzAsIDExMywgMTEsIAotICAgIDQsIDIzMCwgMTEyLCAxMSwgNCwgMjMwLCAxMTYsIDExLCA0LCAyMzAsIDExNSwgMTEsIDQsIDIzMCwgMTE4LCAxMSwgNCwgCi0gICAgMjMwLCAxMTcsIDExLCA0LCAyMzAsIDEwNywgMTEsIDQsIDIzMCwgMTA2LCAxMSwgNCwgMjMwLCAxMTQsIDExLCA0LCAyMzAsIAotICAgIDExMCwgMTEsIDQsIDIzMCwgMTA4LCAxMSwgNCwgMjMwLCAxMDksIDExLCA0LCAyMzAsIDEwMywgMTEsIDQsIDIzMCwgMTAyLCAKLSAgICAxMSwgNCwgMjMwLCAxMDUsIDExLCA0LCAyMzAsIDEwNCwgMTEsIDQsIDIyMiwgMjUsIDExLCA0LCAyMjIsIDI0LCAxMSwgNCwgCi0gICAgMjIyLCAzMiwgMTEsIDQsIDIyMiwgMjYsIDExLCA0LCAyMjIsIDI4LCAxMSwgNCwgMjIyLCAyNywgMTEsIDQsIDIyMiwgMzEsIAotICAgIDExLCA0LCAyMjIsIDI5LCAxMSwgNCwgMjIyLCAxNCwgMTEsIDQsIDIyMiwgMTUsIDExLCA0LCAyMjIsIDIwLCAxMSwgNCwgCi0gICAgMjIyLCAxOSwgMTEsIDQsIDIyMiwgMjMsIDExLCA0LCAyMjIsIDIxLCAxMSwgNCwgMjIyLCA5LCAxMSwgNCwgMjIyLCAxOCwgCi0gICAgMTEsIDQsIDIyMiwgMTMsIDExLCA0LCAyMjIsIDEwLCAxMSwgNCwgMjIyLCAxMSwgMTEsIDQsIDIyMiwgNCwgMTEsIDQsIAotICAgIDIyMiwgMywgMTEsIDQsIDIyMiwgOCwgMTEsIDQsIDIyMiwgNywgMTEsIDQsIDIyMiwgNSwgMTEsIDQsIDIyMiwgNiwgMTEsIAotICAgIDQsIDIyMCwgMjM2LCAxMSwgNCwgMjIwLCAyMzUsIDExLCA0LCAyMjAsIDI0OCwgMTEsIDQsIDIyMCwgMjQwLCAxMSwgNCwgCi0gICAgMjIwLCAyNDUsIDExLCA0LCAyMjAsIDI0NCwgMTEsIDQsIDIyMCwgMjQ3LCAxMSwgNCwgMjIwLCAyNDYsIDExLCA0LCAyMjAsIAotICAgIDIyMSwgMTEsIDQsIDIyMCwgMjIzLCAxMSwgNCwgMjIwLCAyMjIsIDExLCA0LCAyMjAsIDIyOCwgMTEsIDQsIDIyMCwgMjI3LCAKLSAgICAxMSwgNCwgMjIwLCAyMzMsIDExLCA0LCAyMjAsIDIyOSwgMTEsIDQsIDIyMCwgMjE5LCAxMSwgNCwgMjIwLCAyMTcsIDExLCAKLSAgICA0LCAyMjAsIDIyNiwgMTEsIDQsIDIyMCwgMjIwLCAxMSwgNCwgMjAzLCAxNjIsIDExLCA0LCAyMDMsIDE2MSwgMTEsIDQsIAotICAgIDIwMywgMTcwLCAxMSwgNCwgMjAzLCAxNjQsIDExLCA0LCAyMDMsIDE2NiwgMTEsIDQsIDIwMywgMTY1LCAxMSwgNCwgMjAzLCAKLSAgICAxNjgsIDExLCA0LCAyMDMsIDE2NywgMTEsIDQsIDIwMywgMTUwLCAxMSwgNCwgMjAzLCAxNTEsIDExLCA0LCAyMDMsIDE1NSwgCi0gICAgMTEsIDQsIDIwMywgMTU0LCAxMSwgNCwgMjAzLCAxNjAsIDExLCA0LCAyMDMsIDE1OCwgMTEsIDQsIDIwMywgMTI4LCAxMSwgCi0gICAgNCwgMjAzLCAxMjYsIDExLCA0LCAyMDMsIDE0MSwgMTEsIDQsIDIwMywgMTMxLCAxMSwgNCwgMjAzLCAxMjksIDExLCA0LCAKLSAgICAyMDMsIDEzMCwgMTEsIDQsIDIwMiwgMjUzLCAxMSwgNCwgMjAyLCAyNTEsIDExLCA0LCAyMDMsIDExLCAxMSwgNCwgMjAyLCAKLSAgICAyNTQsIDExLCA0LCAyMDMsIDUsIDExLCA0LCAyMDMsIDQsIDExLCA0LCAyMDMsIDgsIDExLCA0LCAyMDMsIDYsIDExLCA0LCAKLSAgICAyMDIsIDE5MSwgMTEsIDQsIDIwMiwgMTkwLCAxMSwgNCwgMjAyLCAxOTQsIDExLCA0LCAyMDIsIDE5MiwgMTEsIDQsIDIwMiwgCi0gICAgMjI3LCAxMSwgNCwgMjAyLCAyMjMsIDExLCA0LCAyMDIsIDI0NywgMTEsIDQsIDIwMiwgMjMxLCAxMSwgNCwgMjAyLCAxODIsIAotICAgIDExLCA0LCAyMDIsIDE3OCwgMTEsIDQsIDIwMiwgMjEzLCAxMSwgNCwgMjAyLCAxODksIDExLCA0LCAyMDIsIDE4NSwgMTEsIAotICAgIDQsIDIwMiwgMTg2LCAxMSwgNCwgMjAyLCAxNjIsIDExLCA0LCAyMDIsIDE2MSwgMTEsIDQsIDIwMiwgMTY5LCAxMSwgNCwgCi0gICAgMjAyLCAxNjUsIDExLCA0LCAyMDIsIDE2MywgMTEsIDQsIDIwMiwgMTY0LCAxMSwgNDAsIDIxNywgNjgsIDExLCA0MCwgMjI3LCAKLSAgICAxNDgsIDExLCA0MCwgMjI5LCA2NCwgMTEsIDQwLCAyMjAsIDI0MCwgMTEsIDQwLCAyNDUsIDYwLCAxMSwgNDAsIDIxMSwgCi0gICAgMTMyLCAxMSwgNDAsIDIzOCwgMTM4LCAxMSwgNDAsIDIzOCwgMTcwLCAxMSwgNDAsIDIyNCwgMTU1LCAxMSwgNDAsIDIzNSwgCi0gICAgMjMzLCAxMSwgNDAsIDIyNiwgMTkyLCAxMSwgNDAsIDI0OCwgMTcwLCAxMSwgNDAsIDIyNCwgMjcsIDExLCA0MCwgMjAyLCAKLSAgICAyNDcsIDExLCA0MCwgMjE3LCAxNTksIDExLCA0MCwgMjM1LCAyMjcsIDExLCA0MCwgMjA5LCAyMTIsIDExLCA0MCwgMjM5LCAKLSAgICA4LCAxMSwgNDAsIDIwMSwgMjU0LCAxMSwgNDAsIDI0NSwgNTQsIDExLCA0MCwgMjQ0LCA4MCwgMTEsIDQwLCAyNDcsIDE2MCwgCi0gICAgMTEsIDQwLCAyMzgsIDEzNCwgMTEsIDQwLCAyMjAsIDIyOSwgMTEsIDQwLCAyMDcsIDIwMywgMTEsIDQwLCAyMjAsIDksIDExLCAKLSAgICA0MCwgMjMwLCAxMDcsIDExLCA0MCwgMjAyLCAxMywgMTEsIDQwLCAyMTcsIDEzOCwgMTEsIDQwLCAyMzYsIDE3OCwgMTEsIAotICAgIDQwLCAyMDIsIDI1MywgMTEsIDQwLCAyMDQsIDE1OSwgMTEsIDQwLCAyMTIsIDE3MSwgMTEsIDQwLCAyMDYsIDQ0LCAxMSwgCi0gICAgNDAsIDIwMiwgMTE2LCAxMSwgNDAsIDIzMCwgMTAxLCAxMSwgNDAsIDIyMCwgMTkzLCAxMSwgNDAsIDIzMCwgMTA1LCAxMSwgCi0gICAgNDAsIDIzOCwgMTgsIDExLCA0MCwgMjMwLCAxMjUsIDExLCA0MCwgMjA0LCAwLCAxMSwgNDAsIDI0MiwgNDIsIDExLCA0MCwgCi0gICAgMjEyLCAxODYsIDExLCA0MCwgMjI3LCAxNDIsIDExLCA0MCwgMjQ1LCA2NiwgMTEsIDQwLCAyNDUsIDEwMiwgMTEsIDQwLCAKLSAgICAyNDYsIDYzLCAxMSwgNDAsIDIzNSwgMjMwLCAxMSwgNDAsIDIxMywgNTMsIDExLCA0MCwgMjAxLCAyNTMsIDExLCA0MCwgCi0gICAgMjEyLCAyMzIsIDExLCA0MCwgMjQ2LCAxNzAsIDExLCA0MCwgMjAxLCAyMjMsIDExLCA0MCwgMjIzLCA1MSwgMTEsIDQwLCAKLSAgICAyMjksIDIwMSwgMjI3LCA5MSwgMSwgMjQ5LCAzMiwgMjI3LCA5MSwgMSwgMTg1LCAyMjcsIDkxLCAxLCAyMTgsIDIwOCwgCi0gICAgMjI3LCA5MSwgMSwgMjQ0LCAyMTIsIDIyNywgOTEsIDEsIDIxMCwgMjIsIDIyNywgOTEsIDEsIDIwOSwgMTA4LCAyMjcsIDkxLCAKLSAgICAxLCAyMzksIDgsIDIyNywgOTEsIDEsIDE3MywgMjI3LCA5MSwgMSwgMjI5LCAxNDQsIDIyNywgOTEsIDEsIDIzMCwgMTgxLCAKLSAgICAyMjcsIDkxLCAxLCAyNDcsIDkyLCAyMjcsIDkxLCAxLCAyNDYsIDE5OSwgMjI3LCA5MSwgMSwgMjQxLCAyNTUsIDIyNywgOTEsIAotICAgIDEsIDIwOCwgMjAsIDIyNywgOTEsIDEsIDIwOCwgMTAsIDIyNywgOTEsIDEsIDE5MiwgMjI3LCA5MSwgMSwgMjAxLCAyMDEsIAotICAgIDIyNywgOTEsIDEsIDIyOCwgMTEzLCAyMjcsIDkxLCAxLCAyMTUsIDM2LCAyMjcsIDkxLCAxLCAyMDIsIDgwLCAyMjcsIDkxLCAKLSAgICAxLCAyMDIsIDExNiwgMjI3LCA5MSwgMSwgMjIyLCAyMDMsIDIyNywgOTEsIDEsIDE1MiwgMjI3LCA5MSwgMSwgMjAzLCAxODIsIAotICAgIDIyNywgOTEsIDEsIDIzNywgMTIsIDIyNywgOTEsIDEsIDI0MCwgMTA4LCAyMjcsIDkxLCAxLCAyMDQsIDExMSwgMjI3LCA5MSwgCi0gICAgMSwgMjEzLCA5MCwgMjI3LCA5MSwgMSwgMTk4LCAyMjcsIDkxLCAxLCAyMzgsIDExOSwgMjI3LCA5MSwgMSwgNjMsIDIyNywgCi0gICAgOTEsIDEsIDI1MSwgMTA5LCAyMjcsIDkxLCAxLCA3NCwgMjI3LCA5MSwgMSwgMjQwLCAyMzgsIDIyNywgOTEsIDEsIDc1LCAKLSAgICAyMjcsIDkxLCAxLCA3OCwgMjI3LCA5MSwgMSwgNjgsIDIyNywgOTEsIDEsIDIwNywgMjQsIDIyNywgOTEsIDEsIDIwNywgMTgsIAotICAgIDIyNywgOTEsIDEsIDIyMCwgNzMsIDIyNywgOTEsIDEsIDE0MywgMjIzLCAxNzAsIDIwOSwgMiwgMjI3LCA5MSwgMSwgMTQzLCAKLSAgICAyMjMsIDExMSwgMjE4LCA2OSwgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjQ1LCA2NSwgMjI3LCA5MSwgMSwgMTQzLCAKLSAgICAyMjMsIDE3MCwgMjQ4LCAyMywgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjAxLCAyMDEsIDIyNywgOTEsIDEsIDE0MywgCi0gICAgMjIzLCAxNzAsIDIzMCwgMTUwLCAyMjcsIDkxLCAyMTcsIDE3OSwgMjQ1LCAyMzMsIDIyNywgOTEsIDIxNywgMTc5LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgNDgsIDQsIDI0MSwgMTYxLCA0OCwgNCwgMjQxLCAxNTcsIDQ4LCA0LCAyMzcsIDQ4LCA0OCwgNCwgCi0gICAgMjA0LCA1NSwgNDgsIDQsIDIwNCwgNTQsIDQ4LCA0LCAyMTksIDIzLCA0OCwgNCwgMjQ4LCA5MywgNDgsIDQsIDI0OCwgMTUwLCAKLSAgICA0OCwgNCwgMjI1LCA0NiwgNDgsIDQsIDIyOCwgMjM5LCA0OCwgNCwgMjI0LCAxODcsIDQ4LCA0LCAyMzgsIDIwMywgNDgsIDQsIAotICAgIDI0MCwgNTMsIDQ4LCA0LCAyMDYsIDUwLCA0OCwgNCwgMjA5LCAxNzYsIDQ4LCA0LCAyMDksIDkwLCA0OCwgNCwgMjQzLCAKLSAgICAyNDcsIDQ4LCA0LCAyNDMsIDI0NCwgNDgsIDQsIDIyNywgMjI2LCA0OCwgNCwgMjE2LCAxMzUsIDQ4LCA0LCAyNDQsIDYxLCAKLSAgICA0OCwgNCwgMjIzLCAxNiwgNDgsIDQsIDIxNCwgMTY1LCA0OCwgNCwgMjEzLCA0MSwgNDgsIDQsIDIwMiwgOTAsIDQ4LCA0LCAKLSAgICAyMDIsIDcwLCA0OCwgNCwgMjQ2LCAyMzAsIDQ4LCA0LCAyMzAsIDE1OSwgNDgsIDQsIDIyMiwgMzksIDQ4LCA0LCAyMDMsIAotICAgIDQ5LCA0OCwgNCwgMjI5LCAxOTgsIDQ4LCA0LCAyMjIsIDE3NiwgNDgsIDQsIDIzOCwgMTgyLCA0OCwgNCwgMjI1LCA4LCA0OCwgCi0gICAgNCwgMjIyLCAyMzUsIDQ4LCA0LCAyMjEsIDAsIDQ4LCA0LCA3NSwgNDgsIDQsIDIzMSwgNDksIDQ4LCA0LCAyMzcsIDMsIDQ4LCAKLSAgICA0LCAyMzYsIDIzOCwgNDgsIDQsIDIwNCwgMzAsIDQ4LCA0LCAyMDQsIDE4LCA0OCwgNCwgMjE4LCAxNjcsIDQ4LCA0LCAyNDgsIAotICAgIDkxLCA0OCwgNCwgMjQ4LCA4NiwgNDgsIDQsIDIyNSwgMzksIDQ4LCA0LCAyMjgsIDIzNiwgNDgsIDQsIDIyNCwgMTg0LCA0OCwgCi0gICAgNCwgMjM4LCAxOTksIDQ4LCA0LCAyNDAsIDI2LCA0OCwgNCwgMjA1LCAyMzAsIDQ4LCA0LCAyMDksIDIsIDQ4LCA0LCAyMDksIAotICAgIDcwLCA0OCwgNCwgMjQzLCAyMzksIDQ4LCA0LCAyNDMsIDI0MywgNDgsIDQsIDIyNywgMTQ4LCA0OCwgNCwgMjE2LCA1NywgCi0gICAgNDgsIDQsIDI0MywgMjMzLCA0OCwgNCwgMjIzLCAxMCwgNDgsIDQsIDIxMiwgMTYyLCA0OCwgNCwgMjEzLCAxMSwgNDgsIDQsIAotICAgIDIwMiwgMzksIDQ4LCA0LCAyMDIsIDY2LCA0OCwgNCwgMjQ2LCA3OSwgNDgsIDQsIDIzMCwgMTQxLCA0OCwgNCwgMjIyLCAzMiwgCi0gICAgNDgsIDQsIDIwMywgMTEsIDQ4LCA0LCAyMjksIDEwMCwgNDgsIDQsIDIyMiwgMTY4LCA0OCwgNCwgMjM4LCA4MSwgNDgsIDQsIAotICAgIDIyNCwgMTU1LCA0OCwgNCwgMjIyLCAxMDAsIDQ4LCA0LCAyMjAsIDI0OCwgNDgsIDQsIDYzLCA0OCwgNCwgMjUwLCAyMzEsIAotICAgIDQ4LCA0LCAyMjIsIDE5OCwgNDgsIDQsIDE1MiwgNDgsIDQsIDIzNywgMTI2LCA0OCwgNCwgMjA0LCAxMTEsIDQ4LCA0LCAKLSAgICAyMDQsIDk3LCA0OCwgNCwgMTg1LCA0OCwgNCwgMjQ4LCA5OCwgNDgsIDQsIDI0OSwgMzIsIDQ4LCA0LCAyMjUsIDU0LCA0OCwgCi0gICAgNCwgMjI4LCAyNDQsIDQ4LCA0LCAyMjgsIDI0MiwgNDgsIDQsIDIyNCwgMTkxLCA0OCwgNCwgMjM4LCAyMDcsIDQ4LCA0LCAKLSAgICAyNDAsIDEwOCwgNDgsIDQsIDIwNiwgODYsIDQ4LCA0LCAyMTAsIDIyLCA0OCwgNCwgMjA5LCAxMDgsIDQ4LCA0LCAyNDQsIDEsIAotICAgIDQ4LCA0LCAyNDMsIDI0NiwgNDgsIDQsIDIyOCwgMTEzLCA0OCwgNCwgMjE2LCAyMjAsIDQ4LCA0LCAyNDQsIDIxMiwgNDgsIAotICAgIDQsIDIyMywgMjUsIDQ4LCA0LCAyMTUsIDM2LCA0OCwgNCwgMjEzLCA5MCwgNDgsIDQsIDIwMiwgMTE2LCA0OCwgNCwgMjAyLCAKLSAgICA4MCwgNDgsIDQsIDI0NywgOTIsIDQ4LCA0LCAyMzAsIDE4MSwgNDgsIDQsIDIyMiwgNDgsIDQ4LCA0LCAxOTgsIDQ4LCA0LCAKLSAgICAxNzMsIDQ4LCA0LCAyMzAsIDQsIDQ4LCA0LCAyMjIsIDE4MiwgNDgsIDQsIDIzOSwgOCwgNDgsIDQsIDE5MiwgNDgsIDQsIAotICAgIDIwMSwgMjAxLCA0OCwgNCwgMjIxLCAxMSwgNDgsIDQsIDIyMCwgMTgsIDQ4LCA0LCAyMjAsIDEzLCA0OCwgNCwgMjM2LCAKLSAgICAxMTcsIDQ4LCA0LCAyMDMsIDI0NCwgNDgsIDQsIDIwMywgMjQwLCA0OCwgNCwgMjE4LCA0NSwgNDgsIDQsIDI0OCwgODksIAotICAgIDQ4LCA0LCAyNDgsIDEwLCA0OCwgNCwgMjI1LCAzNCwgNDgsIDQsIDIyOCwgMjM0LCA0OCwgNCwgMjI0LCAxODAsIDQ4LCA0LCAKLSAgICAyMzgsIDE5NSwgNDgsIDQsIDIzOSwgMTc1LCA0OCwgNCwgMjA1LCAxNzYsIDQ4LCA0LCAyMDgsIDE0OCwgNDgsIDQsIDIwOSwgCi0gICAgNDIsIDQ4LCA0LCAyNDMsIDIzNiwgNDgsIDQsIDI0MywgMjQxLCA0OCwgNCwgMjI3LCAxOCwgNDgsIDQsIDIxNSwgMjA4LCAKLSAgICA0OCwgNCwgMjQzLCA5MCwgNDgsIDQsIDIyMiwgMjUzLCA0OCwgNCwgMjExLCAyNTAsIDQ4LCA0LCAyMTIsIDIzNiwgNDgsIDQsIAotICAgIDIwMiwgMTUsIDQ4LCA0LCAyMDIsIDYxLCA0OCwgNCwgMjQ1LCAxODAsIDQ4LCA0LCAyMzAsIDkxLCA0OCwgNCwgMjIyLCAyMiwgCi0gICAgNDgsIDQsIDIwMiwgMjMyLCA0OCwgNCwgMjI5LCA2LCA0OCwgNCwgMjIyLCAxNjYsIDQ4LCA0LCAyMzgsIDI4LCA0OCwgNCwgCi0gICAgMjI0LCAzNSwgNDgsIDQsIDIyMSwgMTgwLCA0OCwgNCwgMjIwLCAyMzAsIDQ4LCA0LCA2OCwgNDgsIDQsIDIwNiwgMjU1LCAKLSAgICA0OCwgNCwgMjM2LCAyNiwgNDgsIDQsIDIzNiwgMTMsIDQ4LCA0LCAyMDMsIDIxNywgNDgsIDQsIDIwMywgMjEwLCA0OCwgNCwgCi0gICAgMjE3LCAxOTEsIDQ4LCA0LCAyNDgsIDg4LCA0OCwgNCwgMjQ3LCAxOTMsIDQ4LCA0LCAyMjUsIDMzLCA0OCwgNCwgMjI4LCAKLSAgICAyMzIsIDQ4LCA0LCAyMjQsIDE3OSwgNDgsIDQsIDIzOCwgMTk0LCA0OCwgNCwgMjM5LCAxMDgsIDQ4LCA0LCAyMDQsIDE2MywgCi0gICAgNDgsIDQsIDIwNywgMjAzLCA0OCwgNCwgMjA5LCAyMiwgNDgsIDQsIDI0MywgMjM0LCA0OCwgNCwgMjQzLCAyNDAsIDQ4LCA0LCAKLSAgICAyMjYsIDIzOSwgNDgsIDQsIDIxNSwgMTQ1LCA0OCwgNCwgMjQyLCA0MiwgNDgsIDQsIDIyMiwgMjQ4LCA0OCwgNCwgMjExLCAKLSAgICAxMCwgNDgsIDQsIDIxMiwgMTk5LCA0OCwgNCwgMjAyLCA2LCA0OCwgNCwgMjAyLCA1NywgNDgsIDQsIDI0NSwgMTEwLCA0OCwgCi0gICAgNCwgMjMwLCA4MiwgNDgsIDQsIDIyMiwgMTgsIDQ4LCA0LCAyMDIsIDIxMywgNDgsIDQsIDIyOCwgMjA5LCA0OCwgNCwgMjIyLCAKLSAgICAxNjUsIDQ4LCA0LCAyMzcsIDIzMCwgNDgsIDQsIDIyMywgMjQ2LCA0OCwgNCwgMjIxLCA4NCwgNDgsIDQsIDIyMCwgMjI2LCAKLSAgICA0OCwgNCwgNzgsIDQ4LCA0LCAyMjAsIDMxLCA0OCwgNCwgMjIyLCAxMjQsIDQ4LCA0LCAyMzYsIDEzNiwgNDgsIDQsIDIzNiwgCi0gICAgMTIwLCA0OCwgNCwgMjA0LCAwLCA0OCwgNCwgMjAzLCAyNDUsIDQ4LCA0LCAyMTgsIDY5LCA0OCwgNCwgMjQ4LCA5MCwgNDgsIAotICAgIDQsIDI0OCwgMjMsIDQ4LCA0LCAyMjUsIDM1LCA0OCwgNCwgMjI4LCAyMzUsIDQ4LCA0LCAyMjQsIDE4MiwgNDgsIDQsIDIzOCwgCi0gICAgMTk3LCA0OCwgNCwgMjM4LCAxOTYsIDQ4LCA0LCAyMzksIDE4NiwgNDgsIDQsIDIwNSwgMTg5LCA0OCwgNCwgMTM1LCA0OCwgCi0gICAgNCwgMjA5LCA0NywgNDgsIDQsIDI0MywgMjM3LCA0OCwgNCwgMjQzLCAyNDIsIDQ4LCA0LCAyMjcsIDQ5LCA0OCwgNCwgMjE1LCAKLSAgICAyMjcsIDQ4LCA0LCAyNDMsIDExMywgNDgsIDQsIDIyMywgMSwgNDgsIDQsIDIxMiwgMTMsIDQ4LCA0LCAyMTIsIDI0MiwgNDgsIAotICAgIDQsIDIwMiwgMTcsIDQ4LCA0LCAyMDIsIDYzLCA0OCwgNCwgMjQ1LCAyNTQsIDQ4LCA0LCAyMzAsIDEwMSwgNDgsIDQsIDIyMiwgCi0gICAgMjMsIDQ4LCA0LCAyMDIsIDI0NywgNDgsIDQsIDIyOSwgMjYsIDQ4LCA0LCAyMjIsIDE2NywgNDgsIDQsIDIzOCwgMzksIDQ4LCAKLSAgICA0LCAyMjQsIDgyLCA0OCwgNCwgMjIxLCAxOTEsIDQ4LCA0LCAyMjAsIDIzMywgNDgsIDQsIDc0LCA0OCwgNCwgMjQxLCA5MiwgCi0gICAgNDgsIDQsIDIyMiwgMTg3LCA0OCwgNCwgMjM3LCA2NywgNDgsIDQsIDIzNywgMzMsIDQ4LCA0LCAyMDQsIDYyLCA0OCwgNCwgCi0gICAgMjA0LCA0OSwgNDgsIDQsIDIxOSwgMzQsIDQ4LCA0LCAyNDgsIDk0LCA0OCwgNCwgMjQ4LCAxNjIsIDQ4LCA0LCAyMjUsIDQ3LCAKLSAgICA0OCwgNCwgMjI4LCAyNDAsIDQ4LCA0LCAyMjgsIDIzOCwgNDgsIDQsIDIyNCwgMTg4LCA0OCwgNCwgMjM4LCAyMDQsIDQ4LCAKLSAgICA0LCAyMzgsIDIwMiwgNDgsIDQsIDI0MCwgNjAsIDQ4LCA0LCAyMDYsIDU1LCA0OCwgNCwgMjA5LCAxODcsIDQ4LCA0LCAyMDksIAotICAgIDkyLCA0OCwgNCwgMjQzLCAyNDgsIDQ4LCA0LCAyNDMsIDI0NSwgNDgsIDQsIDIyNywgMjM0LCA0OCwgNCwgMjE2LCAxNTgsIAotICAgIDQ4LCA0LCAyNDQsIDc1LCA0OCwgNCwgMjIzLCAxNywgNDgsIDQsIDIxNCwgMTc3LCA0OCwgNCwgMjEzLCA0MywgNDgsIDQsIAotICAgIDIwMiwgOTIsIDQ4LCA0LCAyMDIsIDcxLCA0OCwgNCwgMjQ2LCAyMzgsIDQ4LCA0LCAyMzAsIDE2MSwgNDgsIDQsIDIyMiwgCi0gICAgNDEsIDQ4LCA0LCAyMDMsIDUyLCA0OCwgNCwgMjI5LCAyMDEsIDQ4LCA0LCAyMjIsIDE3NywgNDgsIDQsIDIyMiwgMTczLCAKLSAgICA0OCwgNCwgMjM4LCAxOTAsIDQ4LCA0LCAyMzgsIDE3NywgNDgsIDQsIDIyNSwgMjAsIDQ4LCA0LCAyMjIsIDI0MCwgNDgsIDQsIAotICAgIDIyMSwgMSwgNDgsIDQsIDIyMiwgMjA1LCA0OCwgNCwgMjI3LCAxODgsIDQ4LCAyNDUsIDIzMywgNDgsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCA0OCwgMjE3LCA0NywgODIsIDQ4LCA0LCAyMjMsIDAsIDI0MCwgMTA4LCA0OCwgNCwgMjIzLCAwLCAxNzMsIAotICAgIDQ4LCA0LCAyMjMsIDAsIDIxMSwgMjUwLCA0OCwgMTYsIDI0MCwgNDksIDQ4LCAxNiwgMjI5LCAxOTYsIDQ4LCAxNiwgMjA4LCAKLSAgICAyMTUsIDQ4LCAxNiwgMjIyLCA3NSwgNDgsIDE2LCAyNDgsIDIzNywgNDgsIDE2LCAyNDAsIDEwNywgNDgsIDE2LCAyMTAsIAotICAgIDE4LCA0OCwgMTYsIDI0NCwgMTY0LCA0OCwgMTYsIDI0MywgODksIDQ4LCAxNiwgMjI4LCAxOTMsIDQ4LCAxNiwgMjA4LCAKLSAgICAxNTIsIDQ4LCAxNiwgMjQzLCAxMTIsIDQ4LCAxNiwgMjMwLCA5MiwgNDgsIDE3LCAyMDIsIDg0LCA0OCwgMTcsIDEwNSwgNDgsIAotICAgIDE3LCAxMDgsIDQ4LCAxNywgMTQ3LCA0OCwgMTcsIDE0OSwgNDgsIDE3LCAxNzAsIDQ4LCAxNywgMTk1LCA0OCwgMTcsIDIxMywgCi0gICAgMTExLCA0OCwgMTcsIDE5OSwgNDgsIDE3LCAyMjIsIDYzLCA0OCwgNCwgMjIzLCAwLCAxOTIsIDQ4LCA0LCAyMjMsIDAsIAotICAgIDI0MywgMTEzLCAzNiwgNiwgMSwgMjAyLCA4OCwgMzYsIDUsIDEsIDIwMiwgODgsIDM2LCA2LCAxLCAyNDEsIDI1MCwgMzYsIAotICAgIDUsIDEsIDI0MSwgMjUwLCAzNiwgNiwgMSwgMjE2LCA3MywgMjQxLCAyNTIsIDM2LCA1LCAxLCAyMTYsIDczLCAyNDEsIDI1MiwgCi0gICAgMzYsIDYsIDEsIDIzMCwgMjMwLCAzNiwgNSwgMSwgMjMwLCAyMzAsIDM2LCA2LCAxLCAyNDMsIDEyOSwgMzYsIDUsIDEsIAotICAgIDI0MywgMTI5LCAzNiwgNiwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzYsIDUsIDEsIDIyNCwgNDMsIDIwNywgMTQsIDM2LCA2LCAKLSAgICAxLCAyNDcsIDIwNCwgMjIwLCAzNiwgMzYsIDUsIDEsIDI0NywgMjA0LCAyMjAsIDM2LCAzNiwgNiwgMSwgMjIyLCAyMTYsIAotICAgIDIwMywgMzQsIDM2LCA1LCAxLCAyMjIsIDIxNiwgMjAzLCAzNCwgMzYsIDYsIDEsIDIwMywgMzEsIDMsIDI0OSwgMjYsIDIwMywgCi0gICAgMzQsIDM2LCA1LCAxLCAyMDMsIDMxLCAzLCAyNDksIDI2LCAyMDMsIDM0LCAzNiwgNiwgMSwgMjMwLCAyMjgsIDIwMywgNjYsIAotICAgIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjAzLCA2NiwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwMiwgMjEzLCAzNiwgNSwgMSwgMjE2LCAKLSAgICA3MywgMjAyLCAyMTMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgNjMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgNjMsIDM2LCA2LCAxLCAKLSAgICAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNiwgCi0gICAgMSwgMjQ4LCAzNSwgMjAyLCAxODMsIDM2LCA1LCAxLCAyNDgsIDM1LCAyMDIsIDE4MywgMzYsIDYsIDEsIDIzMCwgMjI4LCAKLSAgICAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyNDYsIDE2LCAyMjcsIDg2LCAyMDIsIAotICAgIDE4MywgMzYsIDYsIDEsIDIwMiwgMjQ5LCAzNiwgNSwgMSwgMjAyLCAyNDksIDM2LCA2LCAxLCAyMTYsIDczLCAyMDgsIDE0LCAKLSAgICAzNiwgNSwgMSwgMjE2LCA3MywgMjA4LCAxNCwgMzYsIDYsIDEsIDIxMiwgNywgMjQ0LCA3NSwgMzYsIDUsIDEsIDIxMiwgNywgCi0gICAgMjQ0LCA3NSwgMzYsIDYsIDEsIDIxMiwgNywgMjQxLCAxMjIsIDM2LCA1LCAxLCAyMTIsIDcsIDI0MSwgMTIyLCAzNiwgNiwgCi0gICAgMSwgMjEyLCA3LCAyNDEsIDEwMywgMzYsIDUsIDEsIDIxMiwgNywgMjQxLCAxMDMsIDM2LCA2LCAxLCAyMjQsIDQ3LCA3OCwgCi0gICAgMzYsIDUsIDEsIDIyNCwgNDcsIDc4LCAzNiwgNiwgMSwgMjQ4LCA2MywgNzgsIDM2LCA1LCAxLCAyNDgsIDYzLCA3OCwgMzYsIAotICAgIDYsIDEsIDUyLCAyMjQsIDQ3LCA3OCwgMzYsIDUsIDEsIDUyLCAyMjQsIDQ3LCA3OCwgMzYsIDEsIDIyMywgMjI3LCA3OCwgCi0gICAgMzksIDM2LCAyMDQsIDE0NiwgMzksIDM2LCAyMDksIDE1MywgMjI0LCAxMTQsIDU0LCAzOSwgMzYsIDIzNiwgMTIsIDIyNCwgCi0gICAgMTE0LCA1NCwgMzksIDM2LCAyMDksIDM3LCAyMjQsIDExNCwgNTQsIDIxMiwgNTUsIDI1MCwgNTksIDM5LCAzNiwgMSwgMjA3LCAKLSAgICAxMSwgMjMxLCAxMTAsIDM5LCAzNiwgMSwgNzUsIDM5LCAzNiwgMSwgMjAzLCAxMSwgMzksIDM2LCAxLCA2OCwgMzksIDM2LCAKLSAgICAxLCAyMzcsIDkxLCA1NCwgMzksIDM2LCAxLCAyMDMsIDMwLCAzOSwgMzYsIDEsIDIxMiwgNywgNTQsIDM5LCAzNiwgMSwgCi0gICAgMjIwLCAzNiwgMzksIDM2LCAyMjksIDIxMywgMzksIDM2LCAyMTksIDQxLCAzNiwgMjI5LCAyMTMsIDM2LCAyMTksIDQxLCAKLSAgICAzNiwgNiwgMSwgMjQyLCA5LCAzNiwgNSwgMSwgMjQyLCA5LCAzNiwgNiwgMSwgMjQxLCAyNDEsIDM2LCA1LCAxLCAyNDEsIAotICAgIDI0MSwgMzYsIDYsIDEsIDIwMiwgNDcsIDM2LCA1LCAxLCAyMDIsIDQ3LCAzNiwgNiwgMSwgMjQ2LCAyNTQsIDM2LCA1LCAxLCAKLSAgICAyNDYsIDI1NCwgMzYsIDYsIDEsIDI0MSwgMjM4LCAzNiwgNSwgMSwgMjQxLCAyMzgsIDM2LCA2LCAxLCAyMDksIDE4OCwgMywgCi0gICAgMTAxLCAxMTMsIDM2LCA1LCAxLCAyMDksIDE4OCwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMDcsIDE1OCwgMzYsIDUsIDEsIAotICAgIDIwNywgMTU4LCAzNiwgNiwgMSwgMjA3LCAyNDUsIDM2LCA1LCAxLCAyMDcsIDI0NSwgMzYsIDYsIDEsIDIwNywgMjUwLCAzNiwgCi0gICAgNSwgMSwgMjA3LCAyNTAsIDM2LCA2LCAxLCAyMDksIDE5MywgMzYsIDUsIDEsIDIwOSwgMTkzLCAzNiwgNiwgMSwgMjM1LCAKLSAgICAyNTEsIDM2LCA1LCAxLCAyMzUsIDI1MSwgMzYsIDYsIDEsIDIxMiwgMTc3LCAzNiwgNSwgMSwgMjEyLCAxNzcsIDM2LCA2LCAKLSAgICAxLCA1MiwgNzgsIDM2LCA1LCAxLCA1MiwgNzgsIDM2LCA2LCAxLCAyNDUsIDEyOCwgNzgsIDM2LCA1LCAxLCAyNDUsIDEyOCwgCi0gICAgNzgsIDY1LCAxLCAzNiwgMjM3LCA5MSwgNTQsIDY1LCAxLCAzNiwgMjEyLCA3LCA1NCwgMzksIDM2LCAxLCAyNDEsIDE1NCwgCi0gICAgMzksIDM2LCAxLCAyMzAsIDIyOCwgNzQsIDI0LCAxLCA2MywgMjQsIDEsIDE3MywgMjQsIDEsIDY4LCAyNCwgMSwgMjI4LCAKLSAgICAyMDksIDI0LCAxLCAyNDEsIDE2MSwgMjQsIDEsIDIxNiwgMTM1LCAyNCwgMSwgMjEwLCAxLCAyNCwgMSwgNzgsIDI0LCAxLCAKLSAgICAyMjAsIDI0OCwgMjQsIDEsIDc1LCAyNCwgMSwgMjI4LCAxMTMsIDI0LCAxLCAxODUsIDI0LCAxLCAyMTYsIDMsIDI0LCAxLCAKLSAgICAyMTYsIDUwLCAyNCwgMSwgMjI3LCAyMjUsIDI0LCAxLCAyMjUsIDcsIDI0LCAxLCAyMTAsIDE4LCAyNCwgMSwgMjIzLCAyMywgCi0gICAgMjQsIDEsIDIyMiwgNDYsIDI0LCAxLCAyMjYsIDE4NSwgMjQsIDEsIDIxMCwgMTc5LCAyNCwgMSwgMjIzLCAyNDYsIDI0LCAxLCAKLSAgICAyMTMsIDYsIDI0LCAxLCAyMTIsIDE2MiwgMjQsIDEsIDIxMywgMTYsIDI0LCAxLCAyMTMsIDExMywgMjQsIDEsIDIyOCwgCi0gICAgMTM3LCAyNCwgMSwgMjI5LCAxNzAsIDI0LCAxLCAyMjEsIDU1LCAyNCwgMSwgMjIxLCA4NCwgMjQsIDEsIDIyMiwgMTcsIDI0LCAKLSAgICAxLCAyMDIsIDIyOSwgMjQsIDEsIDIxMiwgMTk5LCAyNCwgMSwgMjAyLCAxODcsIDI0LCAxLCAxOTgsIDI0LCAxLCAyMjEsIAotICAgIDExOCwgMjQsIDEsIDIyOSwgMTU2LCAyNCwgMSwgMjE4LCAyMTIsIDI0LCAxLCAyMjIsIDM5LCAyNCwgMSwgMjIxLCA5OSwgCi0gICAgMjQsIDEsIDIxNywgMTgzLCAyNCwgMSwgMjAzLCAyMTQsIDI0LCAxLCAyMTksIDIzLCAyNCwgMSwgMjQwLCA1MywgMjQsIDEsIAotICAgIDIxNSwgMTQ1LCAyNCwgMSwgMjI2LCAyMzksIDI0LCAxLCAyMjQsIDE1NSwgMjQsIDEsIDIyMiwgMTAwLCAyNCwgMSwgMjE2LCAKLSAgICA3NSwgMjQsIDEsIDIxNiwgMjAyLCAyNCwgMSwgMjI5LCAxODAsIDI0LCAxLCAyMjIsIDEzMSwgMjQsIDEsIDIyMiwgMTgyLCAKLSAgICAyNCwgMSwgMjIyLCAyMDMsIDI0LCAxLCAyMTIsIDI0MiwgMjQsIDEsIDIxNywgMTg4LCAyNCwgMSwgMjM5LCAxMDgsIDI0LCAKLSAgICAxLCAyMzksIDE3OSwgMjQsIDEsIDIwNCwgMTExLCAyNCwgMSwgMjAxLCAyMDEsIDI0LCAxLCAyMjcsIDE0OCwgMjQsIDEsIAotICAgIDIxOCwgMTY3LCAyNCwgMSwgMjI3LCAxMCwgMjQsIDEsIDIyOSwgMjYsIDI0LCAxLCAyMjUsIDQ0LCAyNCwgMSwgMjE2LCAKLSAgICAxMDcsIDI0LCAxLCAyMjQsIDI0MCwgMjQsIDEsIDE5MiwgMjQsIDEsIDIwOSwgMiwgMjQsIDEsIDIyOSwgMTAwLCAyNCwgMSwgCi0gICAgMjI0LCA4MiwgMjQsIDEsIDIyNSwgNTIsIDI0LCAxLCAyMDksIDEzMiwgMjQsIDEsIDIyOCwgMjQ0LCAyNCwgMSwgMjA5LCAKLSAgICAxNTIsIDI0LCAxLCAyMjEsIDg2LCAyNCwgMSwgMjE0LCAyNTEsIDI0LCAxLCAyNDAsIDEwNCwgMjQsIDEsIDIyOCwgMjQ2LCAKLSAgICAyNCwgMSwgMjI5LCAyMSwgMjQsIDM5LCAxMzEsIDIyOCwgMjU1LCAyNCwgMzksIDEzMSwgMjA3LCAxOTQsIDI0LCAyMjIsIAotICAgIDQ1LCAyNCwgMjM5LCAxMDIsIDIxMSwgNjEsIDI0LCAyNDUsIDI0MiwgMjQsIDI0NSwgMjMzLCAyNCwgMjEzLCAxNDMsIDI0LCAKLSAgICAyMTcsIDQ3LCA4MiwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjE4LCAxMTksIDY1LCAxLCAyNDYsIDEyOCwgCi0gICAgMTQzLCAyMDMsIDc3LCAyMTgsIDExOSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjEzLCA2NSwgNjUsIDEsIAotICAgIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxMywgNjUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIDIxNywgNjUsIAotICAgIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDc3LCAyMTcsIDY1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAKLSAgICAyMTUsIDE0NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxNSwgMTQ1LCA2NSwgMSwgMjQwLCAxOTgsIDI0MiwgCi0gICAgODMsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyNDIsIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyNDIsIDgzLCAKLSAgICAxNDMsIDE0MiwgNjUsIDEsIDEyNCwgMjQyLCA4MywgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5NywgMjQyLCA4MywgMTQzLCAKLSAgICAxNDIsIDY1LCAxLCAyNDAsIDE5OCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyNDIsIDgzLCAKLSAgICAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjQyLCA4MywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgCi0gICAgMTI0LCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5NywgMjQyLCA4MywgMjI3LCAyMTQsIAotICAgIDE0MywgMTQyLCA2NSwgMSwgMjQwLCAxOTgsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEzOCwgMjI3LCAyMTQsIDE0MywgCi0gICAgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDEyNCwgMjI3LCAyMTQsIDE0MywgMTQyLCAKLSAgICA2NSwgMSwgMjQwLCAxOTcsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDcwLCA4MCwgMTQyLCA2NSwgMSwgNzAsIDIxMiwgCi0gICAgNTcsIDY1LCAxLCA3MCwgMjM2LCAxMDYsIDE0MiwgNjUsIDEsIDIyNiwgMjUxLCA1MCwgMjQ1LCAxNjYsIDI1MCwgMjE3LCAKLSAgICA2NSwgMSwgMjE2LCAxODgsIDExMiwgNDcsIDY1LCAxLCAyMTYsIDE4OCwgMTIxLCA0NywgNjUsIDEsIDIxNiwgMTg4LCAyNDAsIAotICAgIDIxMiwgODIsIDY1LCAxLCAyMTYsIDE4OCwgMjMwLCAyMzksIDI0MCwgMjEyLCA4MiwgNjUsIDEsIDEyNCwgMjMwLCAyMzksIAotICAgIDI0MCwgMjEyLCA4MiwgNjUsIDEsIDIxMSwgNDIsIDI1LCAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjExLCA0MiwgMjUsIDEyNCwgCi0gICAgMjA4LCAxNjEsIDgsIDYsIDEsIDI0MSwgMTQ5LCAyNTEsIDMwLCA4LCA1LCAxLCAyNDEsIDE0OSwgMjUxLCAzMCwgOCwgNiwgCi0gICAgMSwgMjQxLCAxNDksIDI1MSwgNTksIDgsIDUsIDEsIDI0MSwgMTQ5LCAyNTEsIDU5LCA4LCA2LCAxLCAyMzcsIDMxLCA4LCA1LCAKLSAgICAxLCAyMzcsIDMxLCA4LCA2LCAxLCAyMDcsIDEwNywgOCwgNSwgMSwgMjA3LCAxMDcsIDgsIDYsIDEsIDIwOCwgODksIDgsIDUsIAotICAgIDEsIDIwOCwgODksIDgsIDYsIDEsIDI0NSwgMTA3LCA4LCA1LCAxLCAyNDUsIDEwNywgOCwgNiwgMSwgMjQ1LCAxMDgsIDMsIAotICAgIDI0NSwgMjMzLCA4LCA1LCAxLCAyNDUsIDEwOCwgMywgMjQ1LCAyMzMsIDgsIDEsIDUsIDYsIDI0MCwgMTc0LCA4LCAxLCA1LCAKLSAgICA2LCAxOTQsIDgsIDYsIDEsIDI1MiwgMjUsIDgsIDUsIDEsIDI1MiwgMjUsIDgsIDYsIDEsIDI1MCwgMTc4LCA4LCA1LCAxLCAKLSAgICAyNTAsIDE3OCwgOCwgNiwgMSwgMjUwLCAzNCwgOCwgNSwgMSwgMjUwLCAzNCwgOCwgNiwgMSwgMjUwLCAxOCwgOCwgNSwgMSwgCi0gICAgMjUwLCAxOCwgOCwgNiwgMSwgMjUwLCAxOSwgMywgMjM2LCAxMDYsIDE0MiwgOCwgNSwgMSwgMjUwLCAxOSwgMywgMjM2LCAKLSAgICAxMDYsIDE0MiwgOCwgNiwgMSwgMjUwLCA4LCA4LCA1LCAxLCAyNTAsIDgsIDgsIDYsIDEsIDIxNiwgNzMsIDI0NywgMTI2LCAKLSAgICAzLCAyNDMsIDg1LCA4LCA1LCAxLCAyMTYsIDczLCAyNDcsIDEyNiwgMywgMjQzLCA4NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgCi0gICAgOTUsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIAotICAgIDIzMCwgNTUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjExLCAzMiwgMjUsIDI0MywgMjI4LCA5NSwgCi0gICAgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjExLCAzMiwgMjUsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjQ3LCAyMDMsIDE1OSwgCi0gICAgOCwgNSwgMSwgMjQ3LCAyMDMsIDE1OSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDEzOCwgOTUsIDgsIDUsIDEsIDIyOCwgMTMxLCAKLSAgICAzLCAxMzgsIDk1LCA4LCA2LCAxLCAxNTgsIDMsIDE2MywgMjExLCAzMiwgMjE5LCAxOTksIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMTYzLCAyMTEsIDMyLCAyMTksIDE5OSwgOCwgNiwgMSwgMTU4LCAzLCAyMjcsIDE0LCA4LCA1LCAxLCAxNTgsIDMsIDIyNywgCi0gICAgMTQsIDgsIDYsIDEsIDIyMCwgMTgsIDgsIDUsIDEsIDIyMCwgMTgsIDgsIDYsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDMyLCAKLSAgICAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjE5LCAxODUsIDMsIDIzOSwgMTk5LCA4LCA1LCAxLCAyMTksIDE4NSwgMywgMjM5LCAxOTksIDgsIDYsIDEsIDIxOSwgCi0gICAgMTg1LCAzLCAyMTEsIDE3MCwgMjA5LCAyNDgsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDE3MCwgMjA5LCAyNDgsIDgsIAotICAgIDYsIDEsIDIxNywgMTM1LCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMTcsIDEzNSwgMywgMjExLCAKLSAgICAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNiwgMSwgMjE3LCAxMzUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMjE3LCAKLSAgICAxMzUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAyMTUsIDE5MiwgOCwgNSwgMSwgMjE3LCAxLCAyMTUsIAotICAgIDE5MiwgOCwgNiwgMSwgMjE1LCAxMzIsIDIxNSwgMTkyLCA4LCA1LCAxLCAyMTUsIDEzMiwgMjE1LCAxOTIsIDgsIDYsIDEsIAotICAgIDIwNiwgMTY1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAyNDMsIDIyOCwgOTUsIDgsIDYsIDEsIAotICAgIDIwNCwgMTUyLCA4LCA1LCAxLCAyMDQsIDE1MiwgOCwgNiwgMSwgMjA1LCAxOTcsIDIwMiwgMTU5LCA4LCA1LCAxLCAyMDUsIAotICAgIDE5NywgMjAyLCAxNTksIDgsIDYsIDEsIDIwOSwgNDEsIDMsIDk1LCA4LCA1LCAxLCAyMDksIDQxLCAzLCA5NSwgOCwgNiwgMSwgCi0gICAgMjA5LCA0MSwgMywgMjExLCAzMiwgMjA5LCAyNSwgMjQ0LCAyMCwgOCwgNSwgMSwgMjA5LCA0MSwgMywgMjExLCAzMiwgMjA5LCAKLSAgICAyNSwgMjQ0LCAyMCwgOCwgNiwgMSwgMjA2LCA0NSwgOCwgNSwgMSwgMjA2LCA0NSwgOCwgNiwgMSwgMjQwLCAyNTAsIDgsIDUsIAotICAgIDEsIDI0MCwgMjUwLCA4LCA2LCAxLCAyMzAsIDIxNSwgOCwgNSwgMSwgMjMwLCAyMTUsIDgsIDYsIDEsIDI0NSwgMjE4LCA4LCAKLSAgICA1LCAxLCAyNDUsIDIxOCwgNjUsIDEsIDIwNiwgMTkzLCA4LCA1LCAxLCAyNDIsIDMyLCA4LCA1LCAxLCAyMjYsIDIyMiwgOCwgCi0gICAgNSwgMSwgMjIzLCAyMjAsIDgsIDUsIDEsIDIyMSwgNDcsIDgsIDUsIDEsIDIxNSwgMTMxLCA4LCAxLCA1LCA2LCAyMTUsIAotICAgIDEzMSwgOCwgNSwgMSwgMjA3LCAxOTEsIDgsIDUsIDEsIDIwNywgNiwgOCwgNiwgMSwgMjMxLCA0LCAyNDUsIDUxLCA4LCA1LCAKLSAgICAxLCAyMzEsIDQsIDI0NSwgNTEsIDgsIDYsIDEsIDIzMSwgNCwgMjQwLCAxNzQsIDgsIDUsIDEsIDIzMSwgNCwgMjQwLCAxNzQsIAotICAgIDgsIDYsIDEsIDIzMSwgNCwgMjM5LCA3NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzMSwgNCwgMjM5LCA3NSwgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIzMSwgNCwgMjM5LCA3NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDE1OSwgOCwgNSwgMSwgMjA3LCAxNzQsIAotICAgIDE1OSwgOCwgNiwgMSwgMjMxLCA0LCAxNDYsIDgsIDUsIDEsIDIzMSwgNCwgMTQ2LCA4LCA2LCAxLCAyMzEsIDQsIDE5NCwgOCwgCi0gICAgNSwgMSwgMjMxLCA0LCAxOTQsIDgsIDYsIDEsIDIzMSwgNCwgMjEwLCA2OSwgOCwgNSwgMSwgMjMxLCA0LCAyMTAsIDY5LCAKLSAgICA2NSwgMSwgMTI0LCAyNDYsIDUzLCAyNTEsIDEzOCwgNjUsIDEsIDI0NSwgMjQyLCA2NSwgMSwgMjEyLCAyMjgsIDI0MSwgMzUsIAotICAgIDU0LCA4LCA2LCAxLCAyMTQsIDI1NSwgOCwgNSwgMSwgMjE0LCAyNTUsIDgsIDYsIDEsIDIwNywgMTc0LCAyMzcsIDE3MSwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDIxNiwgNzksIDIzNiwgMTE2LCAyNSwgMjQ4LCAxMjQsIDgsIDEsIDIxMiwgMTE0LCAyNDMsIAotICAgIDg1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NCwgMjAsIDgsIDYsIAotICAgIDEsIDI0NywgMTI2LCAzLCAxNDIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxNDIsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAKLSAgICAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjE5LCAxNDIsIDExMywgOCwgNiwgMSwgNjYsIDMsIDIzOSwgCi0gICAgMTk5LCA4LCA1LCAxLCA2NiwgMywgMjM5LCAxOTksIDgsIDYsIDEsIDI0MCwgMTc1LCAzLCA5NSwgOCwgNSwgMSwgMjQwLCAKLSAgICAxNzUsIDMsIDk1LCA4LCA2LCAxLCAyMDUsIDE4MiwgMjUxLCAxMDksIDgsIDUsIDEsIDIwNSwgMTgyLCAyNTEsIDEwOSwgOCwgCi0gICAgNiwgMSwgMjA1LCAxODIsIDIyMCwgNzMsIDgsIDUsIDEsIDIwNSwgMTgyLCAyMjAsIDczLCA4LCA2LCAxLCAyMDUsIDE4MiwgCi0gICAgMjA3LCAyNCwgOCwgNSwgMSwgMjA1LCAxODIsIDIwNywgMjQsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDIyMCwgODksIDk1LCA4LCAKLSAgICA1LCAxLCAyMzksIDc2LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIAotICAgIDIzMCwgNTUsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIyMywgCi0gICAgMTY0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCAKLSAgICAyMjAsIDg5LCA5NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgMjIwLCA4OSwgOTUsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIyMCwgCi0gICAgODksIDk1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMTEzLCA4LCA2LCAxLCAyMTYsIDczLCAxNzEsIDc0LCA4LCA2LCAxLCAKLSAgICAxMzIsIDIzOSwgNzUsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAyNDgsIDEyNCwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzMCwgNTQsIAotICAgIDgsIDYsIDEsIDIwNywgMTc0LCAyMTAsIDY5LCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDgsIDYsIDEsIDI0NiwgCi0gICAgMTQyLCA4LCA2LCAxLCAyNDgsIDEwNiwgOCwgNSwgMSwgMjQ4LCAxMDYsIDgsIDYsIDEsIDIyMCwgMzYsIDgsIDUsIDEsIAotICAgIDIyMCwgMzYsIDgsIDI0MSwgNDAsIDEsIDIxMiwgMTU0LCA3NSwgNjUsIDEsIDYsIDIzNywgMTcyLCAzLCA5NSwgNjUsIDEsIAotICAgIDUsIDMyLCAyMjAsIDczLCA4LCAxLCA1LCA2LCAyMDcsIDE3NCwgMjI2LCAxODUsIDgsIDI0MSwgNDAsIDEsIDIxNiwgNzMsIAotICAgIDI0MCwgMTc0LCA4LCAyNDEsIDQwLCAxLCAyMTYsIDczLCAyMTksIDE4NCwgOCwgMjQxLCA0MCwgMSwgMjMwLCAyMzksIDIyNiwgCi0gICAgMTg1LCA4LCAyNDEsIDQwLCAxLCAyMzUsIDIwNiwgMjI3LCAyMCwgOCwgMjQxLCA0MCwgMSwgMjUwLCAxMjYsIDIyNiwgMTg1LCAKLSAgICAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA3NSwgMjEwLCAxNDksIDIyMywgOTQsIDIsIAotICAgIDI0MiwgMTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA2OCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDc0LCAyMTAsIDE0OSwgCi0gICAgMjIzLCA5NCwgMSwgNzgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAyMzcsIDg1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI5LCAKLSAgICAyNiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyOSwgMTE1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjM4LCAzOSwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDEsIDIzOCwgOTEsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyLCAyNTAsIDE4MCwgMjEwLCAxNDksIDIyMywgCi0gICAgOTQsIDEsIDI0NSwgMjU0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ2LCAxMTYsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAKLSAgICAyMzAsIDEwMSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzMCwgMTQzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjA3LCAyMTgsIAotICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMDcsIDIyNCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0NCwgOTAsIDIxMCwgMTQ5LCAKLSAgICAyMjMsIDk0LCAxLCAyNDQsIDk5LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMTM1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgCi0gICAgMjA5LCA0NywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0MywgMTEzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQzLCAyMzcsIAotICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjEsIDE5MSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIxOCwgNjksIDIxMCwgMTQ5LCAKLSAgICAyMjMsIDk0LCAxLCAyMTgsIDE4MCwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDI0OCwgMjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAKLSAgICAxLCAyNDgsIDkwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI0LCA4MiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIxNSwgCi0gICAgMjI3LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI3LCA0OSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIxNSwgMTcxLCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMSwgMjEyLCAxMywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIzNiwgMTM2LCAyMTAsIDE0OSwgMjIzLCAKLSAgICA5NCwgMjIsIDIsIDYzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIDc1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIAotICAgIDY4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIDc0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMjIsIDIsIDIyMCwgMTgsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkyLCAyMTAsIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MSwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDg5LCAxNTMsIAotICAgIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIxNywgNTUsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIAotICAgIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMTIsIAotICAgIDgwLCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDI0MSwgMTM4LCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMjYsIAotICAgIDIxMiwgNzksIDE1MywgMjMxLCAzMywgMjE3LCA1NiwgODIsIDE1MywgMjMxLCAzMywgMjE4LCA5NiwgODIsIDE1MywgMjMxLCAKLSAgICAzMywgMjE1LCAxMjAsIDgyLCAxNTMsIDIzMSwgMzMsIDIxNywgNTcsIDgyLCAyMTgsIDIwNCwgMSwgMTczLCAyMTgsIDIwNCwgCi0gICAgMSwgMjI5LCAxNDQsIDIxOCwgMjA0LCAxLCAyMzksIDgsIDIxOCwgMjA0LCAxLCAyMjIsIDIwMywgMjE4LCAyMDQsIDEsIAotICAgIDI0NywgOTIsIDIxOCwgMjA0LCAxLCAyNDYsIDE5OSwgMjE4LCAyMDQsIDEsIDIzMCwgMTgxLCAyMTgsIDIwNCwgMSwgMjIxLCAKLSAgICAxMSwgMjE4LCAyMDQsIDEsIDIxMCwgMjIsIDIxOCwgMjA0LCAxLCAyMDksIDEwOCwgMjE4LCAyMDQsIDEsIDI0NCwgMjEyLCAKLSAgICAyMTgsIDIwNCwgMSwgMjAxLCAyMDEsIDIxOCwgMjA0LCAxLCAxODUsIDIxOCwgMjA0LCAxLCAyMTgsIDIwOCwgMjE4LCAyMDQsIAotICAgIDEsIDI0OSwgMzIsIDIxOCwgMjA0LCAxLCAxOTIsIDIxOCwgMjA0LCAxLCAyMDgsIDIwLCAyMTgsIDIwNCwgMSwgMjA4LCAxMCwgCi0gICAgMjE4LCAyMDQsIDEsIDI0MSwgMjU1LCAyMTgsIDIwNCwgMSwgMjA0LCAxMTEsIDIxOCwgMjA0LCAxLCAyMDIsIDgwLCAyMTgsIAotICAgIDIwNCwgMSwgMjAyLCAxMTYsIDIxOCwgMjA0LCAxLCA1LCA2MywgMjE4LCAyMDQsIDEsIDE5OCwgMjE4LCAyMDQsIDEsIDIxNiwgCi0gICAgMjIwLCAyMTgsIDIwNCwgMSwgMjI4LCAxMTMsIDIxOCwgMjA0LCAxLCAyMTMsIDkwLCAyMTgsIDIwNCwgMSwgMjE1LCAzNiwgCi0gICAgMjE4LCAyMDQsIDEsIDE1MiwgMjE4LCAyMDQsIDEsIDYzLCAyMTgsIDIwNCwgMSwgNzUsIDIxOCwgMjA0LCAxLCA2OCwgMjE4LCAKLSAgICAyMDQsIDEsIDc0LCAyMTgsIDIwNCwgMSwgNzgsIDIxOCwgMjA0LCAxLCAyMTcsIDEyNiwgMjE4LCAyMDQsIDEsIDIwMywgCi0gICAgMTgyLCAyMTgsIDIwNCwgMSwgMjQwLCAxMDgsIDIxOCwgMjA0LCAxLCAyMzgsIDE1NSwgMjE4LCAyMDQsIDEsIDI0MSwgMTYxLCAKLSAgICAyMTgsIDIwNCwgMjEwLCAyNTQsIDEsIDIwNCwgMTExLCAyMTgsIDIwNCwgMjEwLCAyNTQsIDEsIDE5OCwgMjE4LCAyMDQsIDEsIAotICAgIDIwNywgMjQxLCAyMTgsIDIwNCwgMSwgMjA3LCAyMjksIDIxOCwgMjA0LCAxLCAyNDQsIDEyMCwgMjE4LCAyMDQsIDEsIDIyMSwgCi0gICAgMjI3LCAyMTgsIDIwNCwgMSwgMjUwLCAyNTUsIDE5OCwgMjE4LCAyMDQsIDEsIDIwNSwgMTg1LCAyMTMsIDkwLCAyMTgsIAotICAgIDIwNCwgMSwgMjA1LCAxODYsIDE1MiwgMjE4LCAyMDQsIDEsIDI1MCwgNjYsIDI0MCwgMTA4LCAyMTgsIDIwNCwgMjEwLCAKLSAgICAyNTQsIDEsIDIxNiwgMjIwLCAyMTgsIDIwNCwgMjEwLCAyMDEsIDEsIDIxNiwgMjIwLCAyMTgsIDIwNCwgMSwgMjQ3LCA1MiwgCi0gICAgMjE4LCAyMDQsIDIxMiwgMTIwLCAyMzcsIDY1LCA4MiwgMjE4LCAyMDQsIDUyLCAyMzcsIDY1LCA4MiwgMjE4LCAyMDQsIAotICAgIDEzMSwgMjEzLCA4MiwgMjE4LCAyMDQsIDEzMSwgNTIsIDIxMywgODIsIDIxNCwgMjE1LCAyLCAyNTAsIDE4MCwgMjE0LCAKLSAgICAyMTUsIDIsIDIwNSwgMTk5LCAyMTQsIDIxNSwgMSwgNjMsIDIxNCwgMjE1LCAxLCAyNTIsIDI1LCAyMTQsIDIxNSwgMSwgNzUsIAotICAgIDIxNCwgMjE1LCAxLCAyMzEsIDgzLCAyMTQsIDIxNSwgMSwgNjgsIDIxNCwgMjE1LCAxLCAyMDYsIDE3OCwgMjE0LCAyMTUsIAotICAgIDEsIDEyNSwgMTQ2LCAyMTQsIDIxNSwgMSwgMTI1LCAyMTUsIDE4NiwgMjE0LCAyMTUsIDEsIDEyNSwgMTU5LCAyMTQsIDIxNSwgCi0gICAgMSwgMTI1LCAyMjcsIDc4LCAyMTQsIDIxNSwgMSwgNzQsIDIxNCwgMjE1LCAxLCAyNDEsIDE2MSwgMjE0LCAyMTUsIDEsIAotICAgIDI1MSwgNjQsIDIxNCwgMjE1LCAxLCA3OCwgMjE0LCAyMTUsIDEsIDIyMCwgMTgsIDIxNCwgMjE1LCAxLCAyNTAsIDM0LCAKLSAgICAyMTQsIDIxNSwgMSwgMTczLCAyMTQsIDIxNSwgMSwgMjI5LCAxNDQsIDIxNCwgMjE1LCAxLCAyMzksIDgsIDIxNCwgMjE1LCAKLSAgICAxLCAyMzgsIDExOSwgMjE0LCAyMTUsIDEsIDIyMiwgMjAzLCAyMTQsIDIxNSwgMSwgMjQ3LCA5MiwgMjE0LCAyMTUsIDEsIAotICAgIDI0NiwgMTk5LCAyMTQsIDIxNSwgMSwgMjMwLCAxODEsIDIxNCwgMjE1LCAxLCAyMzAsIDE0OSwgMjE0LCAyMTUsIDEsIDIyMSwgCi0gICAgMTEsIDIxNCwgMjE1LCAxLCAyMDcsIDI0MSwgMjE0LCAyMTUsIDEsIDIwNywgMjI5LCAyMTQsIDIxNSwgMSwgMjQ0LCAxMjAsIAotICAgIDIxNCwgMjE1LCAxLCAyNDQsIDEwNCwgMjE0LCAyMTUsIDEsIDIyMSwgMjI3LCAyMTQsIDIxNSwgMSwgMjEwLCAyMiwgMjE0LCAKLSAgICAyMTUsIDEsIDIwOSwgMTA4LCAyMTQsIDIxNSwgMSwgMjQ0LCAyMTIsIDIxNCwgMjE1LCAxLCAyNDQsIDEsIDIxNCwgMjE1LCAKLSAgICAxLCAyMDEsIDIwMSwgMjE0LCAyMTUsIDEsIDE4NSwgMjE0LCAyMTUsIDEsIDIxOCwgMjA4LCAyMTQsIDIxNSwgMSwgMjQ5LCAKLSAgICAzMiwgMjE0LCAyMTUsIDEsIDI0OCwgOTgsIDIxNCwgMjE1LCAxLCAxOTIsIDIxNCwgMjE1LCAxLCAxOTgsIDIxNCwgMjE1LCAKLSAgICAxLCAyMTYsIDIyMCwgMjE0LCAyMTUsIDEsIDIyOCwgMTEzLCAyMTQsIDIxNSwgMSwgMjA2LCA4NiwgMjE0LCAyMTUsIDEsIAotICAgIDIxMywgOTAsIDIxNCwgMjE1LCAxLCAyMTEsIDE2NCwgMjE0LCAyMTUsIDEsIDIxNSwgMzYsIDIxNCwgMjE1LCAxLCAxNTIsIAotICAgIDIxNCwgMjE1LCAxLCAyMjcsIDc3LCAyMTQsIDIxNSwgMTA5LCAyLCAyMzcsIDE1NSwgMjE0LCAyMTUsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMTQsIDIxNSwgMjIsIDIsIDc1LCAyMTQsIDIxNSwgMjIsIDIsIDIzMSwgODMsIDIxNCwgMjE1LCAyMiwgMiwgNjgsIAotICAgIDIxNCwgMjE1LCAyMiwgMiwgMjA2LCAxNzgsIDIxNCwgMjE1LCAyMiwgMiwgMTI1LCAxNDYsIDIxNCwgMjE1LCAyMiwgMiwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDE1OSwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDIyNywgNzgsIAotICAgIDIxNCwgMjE1LCAyMiwgMiwgNzQsIDIxNCwgMjE1LCAyMiwgMiwgMjQxLCAxNjEsIDIxNCwgMjE1LCAyMiwgMiwgMjUxLCA2NCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCA3OCwgMjE0LCAyMTUsIDIyLCAyLCAyMjAsIDE4LCAyMTQsIDIxNSwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDIxNCwgMjE1LCAyLCAyMDUsIDIwNCwgMjE0LCAyMTUsIDI0NCwgMTY2LCAyMTQsIDIxNSwgNTIsIDI0NCwgMTY2LCAyMTQsIAotICAgIDIxNSwgMTcsIDIwMiwgODQsIDIxNCwgMjE1LCAxNywgMTA1LCAyMTQsIDIxNSwgMTcsIDEwOCwgMjE0LCAyMTUsIDE3LCAKLSAgICAxNDcsIDIxNCwgMjE1LCAxNywgMTQ5LCAyMTQsIDIxNSwgMTcsIDE3MCwgMjE0LCAyMTUsIDE3LCAxOTUsIDIxNCwgMjE1LCAKLSAgICAxNywgMjEzLCAxMTEsIDIxNCwgMjE1LCAxNywgMTk5LCAyMTQsIDIxNSwgMTcsIDIyMiwgNjMsIDM5LCA5MiwgMTcsIDIwMiwgCi0gICAgODQsIDM5LCA5MiwgMTcsIDEwNSwgMzksIDkyLCAxNywgMTA4LCAzOSwgOTIsIDE3LCAxNDcsIDM5LCA5MiwgMTcsIDE0OSwgCi0gICAgMzksIDkyLCAxNywgMTcwLCAzOSwgOTIsIDE3LCAxOTUsIDM5LCA5MiwgMTcsIDIxMywgMTExLCAzOSwgOTIsIDE3LCAxOTksIAotICAgIDM5LCA5MiwgMTcsIDIyMiwgNjMsIDM5LCA5MiwgMSwgNjMsIDM5LCA5MiwgMSwgNjgsIDM5LCA5MiwgMSwgMTczLCAzOSwgCi0gICAgOTIsIDEsIDIwMSwgMjAxLCAzOSwgOTIsIDEsIDE4NSwgMzksIDkyLCAxLCAyMTYsIDIyMCwgMzksIDkyLCAxLCAyMDUsIAotICAgIDIzMCwgMzksIDkyLCAyLCAyNTAsIDE3LCA5MiwgMiwgMjExLCAyMjcsIDI0NywgNTIsIDkyLCAyLCAyNDcsIDUzLCAyMDUsIAotICAgIDIwNCwgOTIsIDIsIDUyLCAyNDcsIDUzLCAyMDUsIDIwNCwgOTIsIDIsIDI0NywgNTMsIDEwOCwgOTIsIDIsIDI0NywgNTMsIAotICAgIDE0NywgOTIsIDIsIDI0NywgNTMsIDI1MCwgMTcsIDkyLCAyLCAyMTcsIDE2MiwgOTIsIDIzOCwgMjI4LCAyNDAsIDcsIDkyLCAKLSAgICAyNDcsIDMzLCA5MiwgMjM3LCA1OCwgOTIsIDIsIDIxMiwgMTU3LCA5MiwgMjMwLCAxNzMsIDIyMCwgMzksIDIyOSwgMjA3LCAKLSAgICAyMjcsIDE0OSwgMTcsIDIwMiwgODQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDEwNSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNywgMTA4LCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxNDcsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE0OSwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxNywgMTcwLCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxOTUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTcsIDIxMywgMTExLCAyMjksIDIwNywgMjI3LCAxNDksIDE3LCAxOTksIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDIyMiwgCi0gICAgNjMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTczLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyOSwgMTQ0LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDIzOSwgOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjIsIDIwMywgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAxLCAyMTUsIDM2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxMywgOTAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgCi0gICAgMjAyLCAxMTYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjIxLCAxMSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMTAsIDIyLCAKLSAgICAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIzNiwgMzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjAxLCAyMDEsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMTg1LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxOCwgMjA4LCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDEsIDE5MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyNDQsIDIxMiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyNDksIAotICAgIDMyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxNiwgMjIwLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE5OCwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAyMjgsIDExMywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMDQsIDExMSwgMjI5LCAyMDcsIAotICAgIDIyNywgMTQ5LCAxLCAyMDksIDEwOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxNTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgCi0gICAgMjA2LCA4NiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyNDcsIDkyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDYzLCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDIyMCwgNzMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgNzUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMSwgMjIwLCAxOCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgMjA3LCAyNCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgNzQsIAotICAgIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDY4LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCAyNDEsIDE2MSwgMjI5LCAyMDcsIAotICAgIDIyNywgMTQ5LCAyMiwgNzgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTQzLCAyMTgsIDg0LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE0MywgMjQ3LCA2OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNDMsIDI0NywgNjksIDIxOCwgODQsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMiwgMjQ1LCA3MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAyLCAyMTIsIDE3MCwgMjE2LCAxMTksIDEsIDE3MywgMjE2LCAKLSAgICAxMTksIDEsIDIzOSwgOCwgMjE2LCAxMTksIDEsIDIyMiwgMjAzLCAyMTYsIDExOSwgMSwgMjEwLCAyMiwgMjE2LCAxMTksIDEsIAotICAgIDI0NCwgMjEyLCAyMTYsIDExOSwgMSwgMjAxLCAyMDEsIDIxNiwgMTE5LCAxLCAxODUsIDIxNiwgMTE5LCAxLCAyNDksIDMyLCAKLSAgICAyMTYsIDExOSwgMSwgMTkyLCAyMTYsIDExOSwgMSwgMjQ3LCA5MiwgMjE2LCAxMTksIDEsIDIzMCwgMTgxLCAyMTYsIDExOSwgCi0gICAgMSwgMjIxLCAxMSwgMjE2LCAxMTksIDEsIDIxNSwgMzYsIDIxNiwgMTE5LCAxLCAyMTYsIDIyMCwgMjE2LCAxMTksIDEsIAotICAgIDIyOCwgMTEzLCAyMTYsIDExOSwgMSwgMTk4LCAyMTYsIDExOSwgMSwgMjA0LCAxMTEsIDIxNiwgMTE5LCAxLCAxNTIsIDIxNiwgCi0gICAgMTE5LCAxLCAyMjUsIDU0LCAyMTYsIDExOSwgMSwgMjIyLCAxODIsIDIxNiwgMTE5LCAxLCAyMjMsIDI1LCAyMTYsIDExOSwgCi0gICAgMSwgMjIwLCAyMzQsIDIxNiwgMTE5LCAxLCA2MywgMjE2LCAxMTksIDIyLCAyLCA3NSwgMjE2LCAxMTksIDIyLCAyLCA2OCwgCi0gICAgMjE2LCAxMTksIDIyLCAyLCA3NCwgMjE2LCAxMTksIDIyLCAyLCAyNTEsIDY0LCAyMTYsIDExOSwgMjIsIDIsIDc4LCAyMTYsIAotICAgIDExOSwgMjIsIDIsIDI1MCwgMzQsIDIxNiwgMTE5LCAyMiwgMiwgMjQwLCAyMzgsIDIxNiwgMTE5LCAyMiwgMiwgMjQxLCAKLSAgICAxODksIDIxNiwgMTE5LCAxMDksIDIsIDIyMiwgMjA1LCAyMTYsIDExOSwgMTA5LCAyLCAyMjMsIDE2MywgMjE2LCAxMTksIAotICAgIDEwOSwgMiwgMTQ2LCAyMTYsIDExOSwgMTA5LCAyLCAyMzcsIDE3MSwgMjE2LCAxMTksIDIwNSwgMjA0LCAyMTYsIDExOSwgCi0gICAgMjE0LCAxNjgsIDgyLCAyOCwgMTIzLCAyMDgsIDIzNiwgMjgsIDEyMywgMjA4LCAyMzUsIDI4LCAxMjMsIDIwOCwgMjMzLCAKLSAgICAyOCwgMTIzLCAyMDgsIDIzOCwgMjgsIDEyMywgMjE2LCA0MiwgMjgsIDEyMywgMjE2LCAyNiwgMjgsIDEyMywgMjE2LCAyMSwgCi0gICAgMjgsIDEyMywgMjE2LCAyMywgMjgsIDEyMywgMjE2LCAzOSwgMjgsIDEyMywgMjE2LCAzMiwgMjgsIDEyMywgMjE2LCAyNSwgCi0gICAgMjgsIDEyMywgMjE2LCA0NCwgMjgsIDEyMywgMjE2LCAyNywgMjgsIDEyMywgMjE2LCA0NiwgMjgsIDEyMywgMjE2LCA0MywgCi0gICAgMjgsIDEyMywgMjI0LCAxMzcsIDI4LCAxMjMsIDIyNCwgMTI4LCAyOCwgMTIzLCAyMjQsIDEzMSwgMjgsIDEyMywgMjE4LCAKLSAgICAxMzgsIDI4LCAxMjMsIDIxOCwgMTQ5LCAyOCwgMTIzLCAyMTgsIDE1MCwgMjgsIDEyMywgMjExLCAxNDgsIDI4LCAxMjMsIAotICAgIDIzMSwgOTYsIDI4LCAxMjMsIDIzMSwgMTAzLCAyOCwgMTIzLCAyMTEsIDE1OSwgMjgsIDEyMywgMjExLCAxNDYsIDI4LCAKLSAgICAxMjMsIDIxOCwgMTg5LCAyOCwgMTIzLCAyMzYsIDI0NiwgMjgsIDEyMywgMjExLCAxNDMsIDE5MCwgMiwgMjE5LCAxMDIsIAotICAgIDE5MCwgMiwgMjQ2LCAyMzUsIDE5MCwgMiwgMjI3LCAyNDIsIDE5MCwgMiwgMjA0LCAyMCwgMTkwLCAxLCA2MywgMTkwLCAxLCAKLSAgICAyMzUsIDIwNiwgMjI5LCAyMTEsIDE5MCwgMSwgNzUsIDE5MCwgMSwgMjMxLCA4MywgMTkwLCAxLCA2OCwgMTkwLCAxLCAyMTksIAotICAgIDE2OSwgMjQ2LCAyMDUsIDE5MCwgMSwgMjIyLCAyMDQsIDIyNywgMjAxLCAxOTAsIDEsIDIyMiwgMjA0LCAyMjcsIDIwMiwgCi0gICAgMjE2LCAxNzMsIDE5MCwgMSwgNzQsIDE5MCwgMSwgMjUxLCA2NCwgMTkwLCAxLCA3OCwgMTkwLCAxLCAxNzMsIDE5MCwgMSwgCi0gICAgMjMwLCA0NCwgMjE0LCAyMjcsIDE5MCwgMSwgMjMwLCA0NCwgMjIzLCAyMDUsIDE5MCwgMSwgMjM5LCA4LCAxOTAsIDEsIAotICAgIDIzOSwgOSwgMjIzLCAyMDUsIDE5MCwgMSwgMjIyLCAyMDMsIDE5MCwgMSwgMjQ3LCA5MiwgMTkwLCAxLCAyNDcsIDkzLCAKLSAgICAyMjMsIDIwNSwgMTkwLCAxLCAyMzAsIDE4MSwgMTkwLCAxLCAyMjEsIDEyLCAyMjMsIDIwNSwgMTkwLCAxLCAyMzAsIDE4MiwgCi0gICAgMjI1LCAxNDQsIDE5MCwgMSwgMjIxLCAxMSwgMTkwLCAxLCAyMDcsIDI0MSwgMTkwLCAxLCAyMDcsIDI0MiwgMjI1LCAxNDQsIAotICAgIDE5MCwgMSwgMjQ0LCAxMjAsIDE5MCwgMSwgMjQ0LCAxMjEsIDIyNSwgMTQ0LCAxOTAsIDEsIDIyMywgMTExLCAyMjMsIDIwNSwgCi0gICAgMTkwLCAxLCAyMTAsIDIyLCAxOTAsIDEsIDIxMCwgMjMsIDIyMywgMjA1LCAxOTAsIDEsIDI0NCwgMjEyLCAxOTAsIDEsIAotICAgIDI0NCwgMjEzLCAyMjUsIDE0NCwgMTkwLCAxLCAyMDEsIDIwMSwgMTkwLCAxLCAxODUsIDE5MCwgMSwgMjE5LCAxNjksIDIyMywgCi0gICAgMjA1LCAxOTAsIDEsIDI0OSwgMzIsIDE5MCwgMSwgMjQ5LCAzMywgMjIzLCAyMDUsIDE5MCwgMSwgMTkyLCAxOTAsIDEsIAotICAgIDE5OCwgMTkwLCAxLCAyMTYsIDIyMCwgMTkwLCAxLCAyMTYsIDIyMSwgMjUxLCA3NCwgMTkwLCAxLCAyMjgsIDExMywgMTkwLCAKLSAgICAxLCAyMDQsIDExMSwgMTkwLCAxLCAyMTUsIDM3LCAyMjMsIDIwNSwgMTkwLCAxLCAyMTUsIDM3LCAyMjUsIDE0NCwgMTkwLCAKLSAgICAxLCAyMTUsIDM2LCAxOTAsIDEsIDE1MiwgMTkwLCAyLCAyNDYsIDIzNiwgMjA5LCAxNTUsIDE5MCwgMjIsIDIsIDIwOSwgCi0gICAgMjE0LCAxOTAsIDIyLCAyLCAyMDgsIDE2NiwgMTkwLCAyMiwgMiwgMjAzLCAyMTEsIDE5MCwgMjIsIDIsIDIwMywgMjEyLCAKLSAgICAyMjQsIDI1MSwgMTkwLCAyMiwgMiwgMjEwLCAyMjQsIDE5MCwgMjIsIDIsIDIxMCwgMjI1LCAyMjQsIDIzOSwgMTkwLCAyMiwgCi0gICAgMiwgMjA5LCAyMzUsIDE5MCwgMjIsIDIsIDI0MywgMTYzLCAyMjMsIDIwNCwgMTkwLCAyMiwgMiwgMjE4LCAyNDksIDE5MCwgCi0gICAgMTA5LCAyLCAyMjksIDE3MywgMTkwLCAxMDksIDIsIDIxOSwgNiwgMTkwLCAxMDksIDIsIDI0NywgNzcsIDE5MCwgMjE5LCAKLSAgICAxMTUsIDE5MCwgNDksIDIxNiwgOTMsIDE5MCwgNTAsIDIxNiwgOTMsIDE5MCwgMjE5LCAxNTgsIDI1MCwgMjI1LCAxOTAsIAotICAgIDIxOSwgMTU4LCAyMjUsIDE2MiwgMTkwLCAyMTksIDE1OCwgMjI2LCAyMjYsIDE5MCwgMjE5LCAxNTgsIDIwNCwgMTQsIDE5MCwgCi0gICAgMjE5LCAxNTgsIDIxOSwgMTE2LCAxOTAsIDIxOSwgMTU4LCAyMjcsIDEwNiwgMTkwLCAyMTksIDE1OCwgMjI2LCAyMjAsIAotICAgIDE5MCwgMjE5LCAxNTgsIDI1MSwgMTE2LCAxOTAsIDIxOSwgMTU4LCAyNTEsIDExNywgMjUxLCAxMTYsIDE5MCwgMjE5LCAKLSAgICAxNTgsIDIxOCwgMTA3LCAxOTAsIDIwNywgMTc0LCAyMTksIDE1OCwgMjE4LCAxMDcsIDE5MCwgMjE5LCAxMTEsIDE5MCwgMTcsIAotICAgIDIwMiwgODQsIDE5MCwgMTcsIDEwNSwgMTkwLCAxNywgMTA4LCAxOTAsIDE3LCAxNDcsIDE5MCwgMTcsIDE0OSwgMTkwLCAxNywgCi0gICAgMTcwLCAxOTAsIDE3LCAxOTUsIDE5MCwgMTcsIDIxMywgMTExLCAxOTAsIDE3LCAxOTksIDE5MCwgMTcsIDIyMiwgNjMsIAotICAgIDE5MCwgMjE5LCAxNTgsIDIwOCwgMjAyLCAyMDcsIDE4OSwgMTkwLCAyMTksIDE1OCwgMjMwLCAyMTEsIDY5LCAxLCAyMTMsIAotICAgIDY3LCAyMzgsIDExOSwgNjksIDEsIDIxMywgNjcsIDI0NiwgMTk5LCA2OSwgMSwgMjEzLCA2NywgMjMwLCAxNDksIDY5LCAxLCAKLSAgICAyMTMsIDY3LCAyMjEsIDIyNywgNjksIDEsIDIxMywgNjcsIDI0OCwgOTgsIDY5LCAyLCAyMTMsIDY3LCAyMTQsIDIxMywgNjksIAotICAgIDY1LCAxLCAyMTMsIDY3LCAyMTYsIDEzNiwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMjEsIDExLCA2OSwgMSwgNDUsIDIyOCwgCi0gICAgODUsIDI0MCwgMTA4LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzOSwgOCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzgsIDExOSwgCi0gICAgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzAsIDE4MSwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMzAsIDE0OSwgNjksIDEsIDQ1LCAKLSAgICAyMjgsIDg1LCAyNDQsIDEyMCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDQsIDEwNCwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyMjEsIAotICAgIDIyNywgNjksIDQ1LCAyMjgsIDg1LCAxNywgMjAyLCA4NCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTA1LCA2OSwgNDUsIDIyOCwgCi0gICAgODUsIDE3LCAxMDgsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE0NywgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTQ5LCA2OSwgNDUsIAotICAgIDIyOCwgODUsIDE3LCAxNzAsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE5NSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMjEzLCAKLSAgICAxMTEsIDY5LCA0NSwgMjI4LCA4NSwgMTcsIDE5OSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMjIyLCA2MywgNjksIDEsIDQ1LCAKLSAgICAyMjgsIDg1LCAyMjcsIDc3LCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgMjEyLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgCi0gICAgMSwgNjksIDEsIDQ1LCAyMjgsIDg1LCAyNDksIDMyLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0OCwgOTgsIDI0NiwgMTkyLCAxLCAKLSAgICA2MywgMjQ2LCAxOTIsIDEsIDc1LCAyNDYsIDE5MiwgMSwgNjgsIDI0NiwgMTkyLCAxLCA3NCwgMjQ2LCAxOTIsIDEsIDI1MSwgCi0gICAgNjQsIDI0NiwgMTkyLCAxLCA3OCwgMjQ2LCAxOTIsIDEsIDE3MywgMjQ2LCAxOTIsIDEsIDIyOSwgMTQ0LCAyNDYsIDE5MiwgCi0gICAgMSwgMjM5LCA4LCAyNDYsIDE5MiwgMSwgMjM4LCAxMTksIDI0NiwgMTkyLCAxLCAyMjIsIDExMiwgMjQ2LCAxOTIsIDEsIAotICAgIDIyMiwgMjAzLCAyNDYsIDE5MiwgMSwgMjQ2LCAxOTksIDI0NiwgMTkyLCAxLCAyNDYsIDE0NCwgMjQ2LCAxOTIsIDEsIDIzMCwgCi0gICAgMTgxLCAyNDYsIDE5MiwgMSwgMjMwLCAxNDksIDI0NiwgMTkyLCAxLCAyMjIsIDEwMiwgMjQ2LCAxOTIsIDEsIDIyMiwgMTA0LCAKLSAgICAyNDYsIDE5MiwgMSwgMjIyLCAxMDMsIDI0NiwgMTkyLCAxLCAyMTAsIDIyLCAyNDYsIDE5MiwgMSwgMjA5LCAxMDgsIDI0NiwgCi0gICAgMTkyLCAxLCAyNDQsIDIxMiwgMjQ2LCAxOTIsIDEsIDI0NCwgMSwgMjQ2LCAxOTIsIDEsIDIyMSwgNTMsIDI0NiwgMTkyLCAxLCAKLSAgICAyMDEsIDIwMSwgMjQ2LCAxOTIsIDEsIDI0NCwgMTIwLCAyNDYsIDE5MiwgMSwgMTg1LCAyNDYsIDE5MiwgMSwgMjE4LCAxMiwgCi0gICAgMjQ2LCAxOTIsIDEsIDIxOCwgMjA4LCAyNDYsIDE5MiwgMSwgMjQ5LCAzMiwgMjQ2LCAxOTIsIDEsIDI0OCwgOTgsIDI0NiwgCi0gICAgMTkyLCAxLCAyMjMsIDIzOCwgMjQ2LCAxOTIsIDEsIDE5MiwgMjQ2LCAxOTIsIDEsIDI0OCwgMTk4LCAyNDYsIDE5MiwgMSwgCi0gICAgMTk4LCAyNDYsIDE5MiwgMSwgMjE2LCAyMjAsIDI0NiwgMTkyLCAxLCAyMjgsIDExMywgMjQ2LCAxOTIsIDEsIDIwNiwgODYsIAotICAgIDI0NiwgMTkyLCAxLCAyMTEsIDE2NCwgMjQ2LCAxOTIsIDEsIDIxNSwgMzYsIDI0NiwgMTkyLCAxLCAxNTIsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjUyLCAyNSwgMjQ2LCAxOTIsIDIyLCAyLCA3NSwgMjQ2LCAxOTIsIDIyLCAyLCAyMzEsIDgzLCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDI0MSwgMTQ1LCAyNDYsIDE5MiwgMjIsIDIsIDY4LCAyNDYsIDE5MiwgMjIsIDIsIDIyMCwgNzMsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgNzgsIDI0NiwgMTkyLCAyMiwgMiwgMjUxLCA2NCwgMjQ2LCAxOTIsIDIyLCAyLCAyNTAsIDM0LCAyNDYsIDE5MiwgCi0gICAgMjIsIDIsIDIwNywgMjQsIDI0NiwgMTkyLCAxMDksIDIsIDE5OCwgMjQ2LCAxOTIsIDEwOSwgMiwgMjE2LCAyMjAsIDI0NiwgCi0gICAgMTkyLCAxMDksIDIsIDIyOCwgMTEzLCAyNDYsIDE5MiwgMTA5LCAyLCAyMDQsIDExMSwgMjQ2LCAxOTIsIDEsIDQ2LCAyMzAsIAotICAgIDU0LCAyNDYsIDE5MiwgMSwgNDYsIDIzOSwgNzUsIDI0NiwgMTkyLCAxLCA0NiwgMjIyLCAyMDUsIDI0NiwgMTkyLCAxMDksIAotICAgIDIsIDQ2LCAyMjIsIDIwNSwgMjQ2LCAxOTIsIDEsIDQ2LCAyNDYsIDIwMCwgMjQ2LCAxOTIsIDEsIDQ2LCAyMTAsIDY5LCAKLSAgICAyNDYsIDE5MiwgMSwgNDYsIDIyMywgMTYzLCAyNDYsIDE5MiwgMSwgNDYsIDIxOSwgMTg0LCAyNDYsIDE5MiwgMSwgNDYsIAotICAgIDIwMywgMTI0LCAyNDYsIDE5MiwgMSwgNDYsIDE0NiwgMjQ2LCAxOTIsIDEsIDQ2LCAxNTksIDI0NiwgMTkyLCAxLCA0NiwgCi0gICAgMjExLCAxNjcsIDI0NiwgMTkyLCAxMDksIDIsIDQ2LCAyMjYsIDE4NSwgMjQ2LCAxOTIsIDEwOSwgMiwgNDYsIDIzNywgMTcxLCAKLSAgICAyNDYsIDE5MiwgMTcsIDIwMiwgODQsIDI0NiwgMTkyLCAxNywgMTA1LCAyNDYsIDE5MiwgMTcsIDEwOCwgMjQ2LCAxOTIsIAotICAgIDE3LCAxNDcsIDI0NiwgMTkyLCAxNywgMTQ5LCAyNDYsIDE5MiwgMTcsIDE3MCwgMjQ2LCAxOTIsIDE3LCAxOTUsIDI0NiwgCi0gICAgMTkyLCAxNywgMjEzLCAxMTEsIDI0NiwgMTkyLCAxNywgMTk5LCAyNDYsIDE5MiwgMTcsIDIyMiwgNjMsIDI0NiwgMTkyLCAKLSAgICAyMTcsIDE3OSwgMjExLCAyMDEsIDI0NiwgMTkyLCAyMTcsIDE3OSwgMjQ0LCAxNjYsIDI0NiwgMTkyLCAyMTcsIDE3OSwgNTIsIAotICAgIDI0NCwgMTY2LCAyNDYsIDE5MiwgMjE3LCAxNzksIDIwOCwgNzAsIDI0NCwgMTY2LCA2OSwgMSwgMjI5LCAxMzcsIDIzOSwgOCwgCi0gICAgNjksIDEsIDIyOSwgMTM3LCAyNDcsIDkyLCA2OSwgMSwgMjI5LCAxMzcsIDI0NiwgMTk5LCA2OSwgMSwgMjI5LCAxMzcsIAotICAgIDIzMCwgMTgxLCA2OSwgMSwgMjI5LCAxMzcsIDIzMCwgMTQ5LCA2OSwgMSwgMjI5LCAxMzcsIDIyMSwgMTEsIDY5LCAxLCAKLSAgICAyMjksIDEzNywgMjA3LCAyNDEsIDY5LCAxLCAyMjksIDEzNywgMjA3LCAyMjksIDY5LCAxLCAyMjksIDEzNywgMjQ0LCAxMjAsIAotICAgIDY5LCAxLCAyMjksIDEzNywgMjQ0LCAxMDQsIDY5LCAxLCAyMjksIDEzNywgMjQ0LCAxLCA2OSwgMSwgMjI5LCAxMzcsIDIwMSwgCi0gICAgMjAxLCA2OSwgMSwgMjI5LCAxMzcsIDIxNSwgMzYsIDY5LCAxLCAyMjksIDEzNywgMTUyLCA2OSwgMSwgMjI5LCAxMzcsIAotICAgIDIzNywgMTIsIDY5LCAxLCAyMjksIDEzNywgMjQwLCAxMDgsIDY5LCA2NSwgMSwgMjI5LCAxMzcsIDIxNiwgMTM2LCA2OSwgMSwgCi0gICAgMjI5LCAxMzcsIDIwMywgMTgyLCA2OSwgMSwgMjI5LCAxMzcsIDIwMiwgMTE2LCA2OSwgMSwgMjI5LCAxMzcsIDIxNiwgMjIwLCAKLSAgICA2OSwgMjI3LCAzNiwgMjI5LCAxMzcsIDIyMCwgOTQsIDY5LCAyMjcsIDM2LCAyMjksIDEzNywgMjE3LCA3OCwgNjksIDIyNywgCi0gICAgMzYsIDIyOSwgMTM3LCAyMzYsIDE5MSwgNjksIDE2LCAyNTEsIDUxLCAyNDAsIDIxMSwgNjksIDE2LCAyNTEsIDUxLCAxMDUsIAotICAgIDY5LCAxNiwgMjUxLCA1MSwgMTA4LCA2OSwgMSwgMjUxLCA1MSwgMjE2LCAyMjAsIDY5LCAyLCAyMTksIDk4LCAyMjksIDIzNywgCi0gICAgMjA4LCAxNjEsIDY5LCAyLCA0NSwgMjI4LCA4NSwgMjA4LCAxNTksIDY5LCAyLCA0NSwgMjI4LCA4NSwgMjA4LCAxNTYsIDY5LCAKLSAgICAxLCAyMTIsIDE3OCwgMjE5LCAxMzksIDI0NiwgMTk5LCA2OSwgMSwgMjEyLCAxNzgsIDIxOSwgMTM5LCAyMTMsIDkwLCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgMjI5LCAyNiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMjYsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyMjksIDExNSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMTE1LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMjI5LCAxMjQsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjksIDEyNCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIzOCwgMzksIAotICAgIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzgsIDM5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjIyLCAxMjgsIDQ1LCAyMDUsIAotICAgIDIyMCwgMSwgMTM4LCAyMjIsIDEyOCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0NSwgMjU0LCA0NSwgMjA1LCAyMjAsIDEsIAotICAgIDEzOCwgMjQ1LCAyNTQsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyNDYsIDExNiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0NiwgCi0gICAgMTE2LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjEyLCAxMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIxMiwgMTMsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMjAsIDIzMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyMCwgMjMzLCA0NSwgMjA1LCAyMjAsIAotICAgIDEsIDEyNCwgMjQzLCAxMTMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDMsIDExMywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAotICAgIDEzNSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDEzNSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwOSwgNDcsIDQ1LCAyMDUsIAotICAgIDIyMCwgMSwgMTM4LCAyMDksIDQ3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjIxLCAxOTEsIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyMjEsIDE5MSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0OCwgMjMsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyNDgsIAotICAgIDIzLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjE4LCA2OSwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIxOCwgNjksIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMTgsIDE4MCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIxOCwgMTgwLCA0NSwgMjA1LCAyMjAsIAotICAgIDEsIDEyNCwgMjM5LCAxODYsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMzksIDE4NiwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIAotICAgIDIyNCwgODIsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMjQsIDgyLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjAyLCAyNDcsIAotICAgIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMDIsIDI0NywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIxNSwgMjI3LCA0NSwgMjA1LCAKLSAgICAyMjAsIDEsIDEzOCwgMjE1LCAyMjcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjcsIDQ5LCA0NSwgMjA1LCAyMjAsIDEsIAotICAgIDEzOCwgMjI3LCA0OSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIwNSwgMTg5LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjA1LCAKLSAgICAxODksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMzYsIDEzNiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzNiwgMTM2LCA0NSwgCi0gICAgMjA1LCAyMjAsIDEsIDEyNCwgNzgsIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCA3OCwgNDUsIDIwNSwgMjIwLCAyMjUsIDE0MSwgCi0gICAgMjMwLCAwLCA0NSwgMjA1LCAyMjAsIDIyLCAyNTIsIDI1LCA0NSwgMjA1LCAyMjAsIDIyLCA3NSwgNDUsIDIwNSwgMjIwLCAKLSAgICAyMiwgMjA3LCAyNCwgNDUsIDIwNSwgMjIwLCAyMiwgNjgsIDQ1LCAyMDUsIDIyMCwgMjIsIDc0LCA0NSwgMjA1LCAyMjAsIAotICAgIDIyLCA3OCwgNDUsIDIwNSwgMjIwLCAyMjUsIDE0MSwgMjI5LCAxMTgsIDQ1LCAyMDUsIDIyMCwgMjIsIDIzNSwgMTcxLCA0NSwgCi0gICAgMjA1LCAyMjAsIDIyLCAyMDcsIDIzLCA0NSwgMjA1LCAyMjAsIDIyLCAyMDcsIDM5LCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIAotICAgIDMyLCA0NSwgMjA1LCAyMjAsIDIyLCAyNTAsIDgsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgMjMxLCA0NSwgMjA1LCAyMjAsIAotICAgIDIyLCAyNTAsIDI0NywgNDUsIDIwNSwgMjIwLCAxNDMsIDIyNSwgMTQxLCAyNDEsIDEyOSwgNDUsIDIwNSwgMjIwLCAxNDMsIAotICAgIDIyNSwgMTQxLCAyMjEsIDUyLCA0NSwgMjA1LCAyMjAsIDE0MywgMjI1LCAxNDEsIDIwOSwgNDcsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMTQzLCAyMjUsIDE0MSwgMjExLCAyNTIsIDQ1LCAyMDUsIDIyMCwgMTYsIDIyOSwgOSwgNDUsIDIwNSwgMjIwLCAxNiwgMjIxLCAKLSAgICA1MiwgNDUsIDIwNSwgMjIwLCAxNiwgMjE0LCAyNTMsIDQ1LCAyMDUsIDIyMCwgMTYsIDIzNiwgMTM3LCAyMzYsIDEzMSwgNDUsIAotICAgIDIwNSwgMjIwLCAxNiwgMjI5LCAxOSwgMjI5LCAxOCwgMjI1LCAyLCAyMjUsIDYxLCAxLCA3NCwgMjI1LCAyLCAyMjUsIDYxLCAKLSAgICAxLCA3OCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNDYsIDE5OSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjEsIDExLCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIwNywgMjQxLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwNywgMjI5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDI0NCwgMTIwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0NCwgMTA0LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMSwgMjI3LCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDEsIDIxMywgOTAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjExLCAxNjQsIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMjIsIDIsIDIzMSwgODMsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNiwgMTc4LCAyMjUsIDIsIDIyNSwgNjEsIAotICAgIDIyLCAyLCAyNTEsIDI0NSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjUwLCAzNCwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgCi0gICAgMjUxLCAyMzgsIDIyNSwgMiwgMjI1LCA2MSwgMjQ2LCAxNTksIDIyNSwgMiwgMjI1LCA2MSwgMjUxLCA3MCwgMjI5LCAxMDcsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMjUwLCAyMDksIDIyNSwgMiwgMjI1LCA2MSwgNCwgMjE2LCA5OCwgODIsIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMjAzLCAyMzgsIDIxNiwgOTgsIDgyLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDUsIDE5OSwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMDUsIDIwNCwgMzMsIDQsIDIwNywgMjIyLCAzMywgNCwgMjA3LCAyMjUsIDMzLCA0LCAyMDcsIDIyOCwgMzMsIDQsIAotICAgIDIwNywgMjI2LCAzMywgNCwgMjA3LCAyMjcsIDMzLCA0LCAyMDcsIDIyNCwgMzMsIDQsIDI0NCwgOTgsIDMzLCA0LCAyNDQsIAotICAgIDEwMCwgMzMsIDQsIDI0NCwgMTAzLCAzMywgNCwgMjQ0LCAxMDEsIDMzLCA0LCAyNDQsIDEwMiwgMzMsIDQsIDI0NCwgOTksIAotICAgIDMzLCA0LCAyNDEsIDI0MiwgMzMsIDQsIDI0MSwgMjQ2LCAzMywgNCwgMjQxLCAyNTQsIDMzLCA0LCAyNDEsIDI1MSwgMzMsIAotICAgIDQsIDI0MSwgMjUyLCAzMywgNCwgMjQxLCAyNDMsIDMzLCA0LCAyNDYsIDI1MiwgMzMsIDQsIDI0NiwgMjQ2LCAzMywgNCwgCi0gICAgMjQ2LCAyNDgsIDMzLCA0LCAyNDYsIDI1MSwgMzMsIDQsIDI0NiwgMjQ5LCAzMywgNCwgMjQ2LCAyNTAsIDMzLCA0LCAyNDYsIAotICAgIDI0NywgMzMsIDQsIDI0OCwgMTk4LCAzMywgNCwgMjQ4LCAxNzcsIDMzLCA0LCAyNDgsIDE4OSwgMzMsIDQsIDI0OCwgMTk3LCAKLSAgICAzMywgNCwgMjQ4LCAxOTIsIDMzLCA0LCAyNDgsIDE5MywgMzMsIDQsIDI0OCwgMTgxLCA4LCA1LCAxLCAyNDgsIDIyNSwgCi0gICAgMjUxLCAyLCA4LCA1LCAxLCAzNCwgMjE2LCA3MSwgOCwgNSwgMSwgMjQ4LCAzOSwgNzQsIDgsIDUsIDEsIDI0OCwgMjI1LCAKLSAgICA3NCwgOCwgNSwgMSwgMTg4LCAzLCAyMzksIDE5OSwgOCwgNSwgMSwgMjI3LCAxODcsIDI0MCwgMTc0LCA4LCA1LCAxLCAxMzIsIAotICAgIDIzOSwgNzYsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDgsIAotICAgIDUsIDEsIDIyOCwgMTMxLCAzLCA1MiwgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjE1LCAKLSAgICAyNTIsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NSwgMTI2LCA4LCAKLSAgICA1LCAxLCAyNDEsIDc5LCAzLCAyNDUsIDEyNiwgOCwgNSwgMSwgMjQ4LCAzOSwgNzgsIDgsIDUsIDEsIDI0OCwgMzksIDE1OCwgCi0gICAgMywgOTUsIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCA5NSwgOCwgNSwgMSwgMjMwLCAyMzksIDIyMCwgNzMsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMjAsIDc0LCAzLCA5NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyMCwgNzQsIDMsIDIzNiwgMTA2LCA5NSwgOCwgCi0gICAgNSwgMSwgMjA3LCAxNzQsIDE1OCwgMjIwLCA0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMTU4LCAyMjAsIDUsIDMsIDk1LCA4LCA1LCAKLSAgICAxLCAyMTEsIDY2LCAxNDYsIDgsIDEsIDUsIDYsIDIxNywgMSwgMywgNTAsIDIyNywgMjEwLCA4LCA1LCAxLCAyMTcsIDEsIAotICAgIDIwNCwgMywgMjM3LCAxMDIsIDgsIDUsIDEsIDUyLCAxNDYsIDgsIDUsIDEsIDIxNywgMSwgMywgMjQ1LCAxMjYsIDgsIDUsIAotICAgIDEsIDUyLCAyMTcsIDEsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAxMzIsIDE0NiwgOCwgNSwgMSwgMTMyLCAyMTcsIDEsIDMsIAotICAgIDIxNSwgMjUyLCA4LCA1LCAxLCAyNDgsIDIxNiwgMjQxLCA3LCA4LCA1LCAxLCAxMDYsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAKLSAgICAyMTAsIDgsIDUsIDEsIDEwNiwgMjQ4LCAyMzEsIDMsIDIxMiwgMjI4LCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDIwNywgMTcsIAotICAgIDgsIDUsIDEsIDIwNywgMTc0LCAyMDcsIDE3LCA4LCA1LCAxLCAxMDYsIDMsIDQ5LCAxMTMsIDgsIDUsIDEsIDI0NiwgMTQyLCAKLSAgICA4LCA1LCAxLCAyNDYsIDE0MywgMywgMTI0LCA1MCwgMjE1LCAyNTIsIDgsIDUsIDEsIDI0NiwgMTQzLCAzLCAxMjQsIDQ5LCAKLSAgICAyMTMsIDEyNSwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDEyNCwgNTAsIDIxNSwgMjUyLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgCi0gICAgMTYzLCA0OSwgMjI3LCAyMTAsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxNjMsIDQ5LCAyMjcsIDIxMSwgMjUsIDEyNCwgNTAsIAotICAgIDIxNSwgMjUyLCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTYzLCA0OSwgMjI3LCAyMTEsIDMsIDIxMywgMTI1LCA4LCA1LCAxLCAKLSAgICAyMDMsIDEyNSwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIDIxMCwgNjUsIDI0NywgMjE1LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIAotICAgIDY1LCAxLCA1LCAyMzcsIDMxLCA2NSwgMSwgNSwgMjI4LCAxMzEsIDMsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCA2NSwgMSwgCi0gICAgNSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDY1LCAxLCA1LCAxMDYsIDMsIDQ5LCAxMTMsIDgsIDUsIDEsIDIxNSwgCi0gICAgMTEsIDIwMywgNjYsIDgsIDUsIDEsIDIzMCwgMjI4LCA3NCwgOCwgNSwgMSwgMTcxLCAyMjAsIDczLCA4LCA1LCAxLCAyMDYsIAotICAgIDIyOCwgOCwgNSwgMSwgMjMwLCAyMzksIDI1MSwgMiwgMzAsIDEsIDUsIDYsIDIyMCwgMzYsIDkwLCA1LCAxLCA2MywgOTAsIAotICAgIDUsIDEsIDc0LCA5MCwgNSwgMSwgNzUsIDkwLCA1LCAxLCA3OCwgOTAsIDUsIDEsIDY4LCA5MCwgNSwgMSwgMjA2LCAxNjQsIAotICAgIDkwLCA1LCAxLCAyMzksIDgsIDkwLCA1LCAxLCAxNzMsIDkwLCA1LCAxLCAyMzgsIDE5MCwgOTAsIDUsIDEsIDIzOCwgODEsIAotICAgIDkwLCA1LCAxLCAyMzgsIDM5LCA5MCwgNSwgMSwgMjM3LCAyMzAsIDkwLCA1LCAxLCAyMzcsIDE5MiwgOTAsIDUsIDEsIDE1MiwgCi0gICAgOTAsIDUsIDEsIDIzNywgNjcsIDkwLCA1LCAxLCAyMzcsIDMsIDkwLCA1LCAxLCAyMzYsIDEzNiwgOTAsIDUsIDEsIDIzNiwgCi0gICAgMjYsIDkwLCA1LCAxLCAyMzUsIDI1NSwgOTAsIDUsIDEsIDIyOCwgMTEzLCA5MCwgNSwgMSwgMjI3LCAyMzQsIDkwLCA1LCAxLCAKLSAgICAyMjcsIDE0OCwgOTAsIDUsIDEsIDIyNywgNDksIDkwLCA1LCAxLCAyMjYsIDIzOSwgOTAsIDUsIDEsIDIyNiwgMjA4LCA5MCwgCi0gICAgNSwgMSwgMTkyLCA5MCwgNSwgMSwgMjI1LCAyMCwgOTAsIDUsIDEsIDIyNCwgMTU1LCA5MCwgNSwgMSwgMjI0LCA4MiwgOTAsIAotICAgIDUsIDEsIDIyMywgMjQ2LCA5MCwgNSwgMSwgMjAxLCAyMDEsIDkwLCA1LCAxLCAyMzYsIDE2MCwgOTAsIDUsIDEsIDIyMywgCi0gICAgOTMsIDkwLCA1LCAxLCAyMjIsIDI0MCwgOTAsIDUsIDEsIDIyMiwgMTAwLCA5MCwgNSwgMSwgMjIxLCAxOTEsIDkwLCA1LCAxLCAKLSAgICAyMjEsIDg0LCA5MCwgNSwgMSwgMjIxLCAyMiwgOTAsIDUsIDEsIDIxNywgNjQsIDkwLCA1LCAxLCAyMTcsIDUwLCA5MCwgNSwgCi0gICAgMSwgMjE3LCA0MywgOTAsIDUsIDEsIDIxNywgMzQsIDkwLCA1LCAxLCAyMTcsIDIzLCA5MCwgNSwgMSwgMjE3LCAyMSwgOTAsIAotICAgIDUsIDEsIDIxNSwgMzYsIDkwLCA1LCAxLCAxOTQsIDkwLCA1LCAxLCAyMTQsIDE3NywgOTAsIDUsIDEsIDIxMiwgMTYyLCA5MCwgCi0gICAgNSwgMSwgMjEyLCAxMywgOTAsIDUsIDEsIDIxMSwgMTAsIDkwLCA1LCAxLCAyMTAsIDE3NywgOTAsIDUsIDEsIDI0NCwgMjEyLCAKLSAgICA5MCwgNSwgMSwgMjEwLCAyMiwgOTAsIDUsIDEsIDI0NCwgNzUsIDkwLCA1LCAxLCAyMDksIDE4NywgOTAsIDUsIDEsIDI0MywgCi0gICAgMjMzLCA5MCwgNSwgMSwgMjA5LCAyLCA5MCwgNSwgMSwgMjQzLCAxMTMsIDkwLCA1LCAxLCAyNDIsIDQyLCA5MCwgNSwgMSwgCi0gICAgMjQyLCAxMywgOTAsIDUsIDEsIDI0MywgMTI0LCA5MCwgNSwgMSwgMjA4LCAxOTAsIDkwLCA1LCAxLCAyMDgsIDE4OSwgOTAsIAotICAgIDUsIDEsIDIwOCwgMTc4LCA5MCwgNSwgMSwgMjA4LCAxNzcsIDkwLCA1LCAxLCAyMDgsIDE3NiwgOTAsIDUsIDEsIDIwOCwgCi0gICAgMTc1LCA5MCwgNSwgMSwgMjA4LCAyMCwgOTAsIDUsIDEsIDIwOCwgMTQsIDkwLCA1LCAxLCAyMDcsIDI1NSwgOTAsIDUsIDEsIAotICAgIDIwNywgMjUzLCA5MCwgNSwgMSwgMjA3LCAyNDksIDkwLCA1LCAxLCAyMDcsIDI0OCwgOTAsIDUsIDEsIDIwNCwgMTExLCA5MCwgCi0gICAgNSwgMSwgMjA0LCA2MiwgOTAsIDUsIDEsIDIwNCwgMzAsIDkwLCA1LCAxLCAyMDQsIDAsIDkwLCA1LCAxLCAyMDMsIDIxNywgCi0gICAgOTAsIDUsIDEsIDIwMywgMjA0LCA5MCwgNSwgMSwgMTk4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyOSwgMTYsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjE0LCAyNTMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI4LCA4NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMjQsIDkzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDE4NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDEsIDIwMSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyNDYsIDEzNCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDgsIDIyOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMjksIDExMCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjIsIDExOCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDksIDM5LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDIwNCwgMTA1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwMywgNzYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjM2LCAxOCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDYsIDI1NSwgMjI1LCAyLCAyMjUsIDYxLCAxLCA3NSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMTgsIDIwMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyNTAsIDQ1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIzOCwgMzIsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjMwLCAxNDcsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjE2LCAxOTcsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjQ5LCAzMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzAsIDEzMywgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyNDMsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzgsIDg4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0MywgMjM1LCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDEsIDI0OCwgOTYsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI5LCAxNywgMjI3LCAxOSwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMjgsIDg3LCAyMjcsIDE5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyNCwgOTQsIDIyNywgMTksIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjE5LCAxNjksIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIzLCAxMTEsIDIyNywgMTksIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA4LCAyMzAsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIyLCAxMTksIDIyNywgCi0gICAgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjM1LCAyMDYsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIyMCwgCi0gICAgMzAsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIzMSwgNDcsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI1MCwgMjMwLCAKLSAgICAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDMsIDQxLCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyMTEsIDI0MiwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAyMiwgMiwgMjA2LCAyNTIsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDI0NiwgMTU3LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDIyLCAyLCAyMjEsIDM3LCAyMjUsIDIsIDIyNSwgNjEsIDI0NiwgMTU4LCAyMjUsIDIsIDIyNSwgNjEsIDIyNiwgCi0gICAgMjIzLCAyMzAsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAyNTAsIDE0OSwgMjMwLCAxOTAsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIAotICAgIDIwMiwgODQsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDEwNSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTA4LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDE3LCAxNDcsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDE0OSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTcwLCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDE3LCAxOTUsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDIxMywgMTExLCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAKLSAgICAxOTksIDIyNSwgMiwgMjI1LCA2MSwgMTcsIDIyMiwgNjMsIDI4LCAxNzYsIDIyMCwgMTc0LCAyOCwgMTc2LCAyMjAsIDE3OSwgCi0gICAgMjgsIDE3NiwgMjAyLCAyNDYsIDI4LCAxNzYsIDIwMiwgMjQ1LCAyOCwgMTc2LCAyMDIsIDI0NCwgMjgsIDE3NiwgMjA3LCAKLSAgICA4OSwgMjgsIDE3NiwgMjA3LCA5MywgMjgsIDE3NiwgMjAyLCAyMTEsIDI4LCAxNzYsIDIwMiwgMjA3LCAyOCwgMTc2LCAyNDAsIAotICAgIDIzNywgMjgsIDE3NiwgMjQwLCAyMzUsIDI4LCAxNzYsIDI0MCwgMjM2LCAyOCwgMTc2LCAyNDAsIDIzMywgMjgsIDE3NiwgCi0gICAgMjM1LCAxOTYsIDI4LCAxNzYsIDIzNSwgMTk1LCAyOCwgMTc2LCAyMzUsIDE5MywgMjgsIDE3NiwgMjM1LCAxOTQsIDI4LCAKLSAgICAxNzYsIDIzNSwgMTk5LCAyOCwgMTc2LCAyMzUsIDE5MiwgMjgsIDE3NiwgMjM1LCAxOTEsIDI4LCAxNzYsIDIzNSwgMjAxLCAKLSAgICAyOCwgMTc2LCAyNTAsIDEzNiwgMjgsIDE3NiwgMjUwLCAxMzUsIDI4LCAxMDcsIDIyMiwgODYsIDI4LCAxMDcsIDIyMiwgOTIsIAotICAgIDI4LCAxMDcsIDIxMSwgMTQ1LCAyOCwgMTA3LCAyMTEsIDE0NCwgMjgsIDEwNywgMjA4LCAyMzUsIDI4LCAxMDcsIDIwOCwgCi0gICAgMjMzLCAyOCwgMTA3LCAyMDgsIDIzMiwgMjgsIDEwNywgMjA4LCAyMzgsIDI4LCAxMDcsIDIwOCwgMjM5LCAyOCwgMTA3LCAKLSAgICAyMDgsIDIzMSwgMjgsIDEwNywgMjE2LCAyNiwgMjgsIDEwNywgMjE2LCA0MSwgMjgsIDEwNywgMjExLCAxNTEsIDI4LCAxMDcsIAotICAgIDIxNiwgMzgsIDI4LCAxMDcsIDIxNiwgMjgsIDI4LCAxMDcsIDIxNiwgMzAsIDI4LCAxMDcsIDIxNiwgMTcsIDI4LCAxMDcsIAotICAgIDIxNiwgMTgsIDI4LCAxMDcsIDIyOSwgMjQzLCAyOCwgMTA3LCAyMjQsIDEzNiwgMjgsIDEwNywgMjI0LCAxMzAsIDI4LCAKLSAgICAxMDcsIDIxMSwgMTU1LCAyOCwgMTA3LCAyMjQsIDEzMywgMjgsIDEwNywgMjI0LCAxMzksIDI4LCAxMDcsIDIxOCwgMTM0LCAKLSAgICAyOCwgMTA3LCAyMTgsIDE0MywgMjgsIDEwNywgMjE4LCAxNDcsIDI4LCAxMDcsIDIxMSwgMTUzLCAyOCwgMTA3LCAyMTgsIAotICAgIDEzNywgMjgsIDEwNywgMjE4LCAxNTEsIDI4LCAxMDcsIDIxOCwgMTUyLCAyOCwgMTA3LCAyMTIsIDEwMywgMjgsIDEwNywgCi0gICAgMjEyLCAxMDYsIDI4LCAxMDcsIDIxMSwgMTQ5LCAyOCwgMTA3LCAyMTEsIDE0NywgMjgsIDEwNywgMjEyLCAxMDEsIDI4LCAKLSAgICAxMDcsIDIxMiwgMTA5LCAyOCwgMTA3LCAyMTIsIDExMCwgMjgsIDEwNywgMjEyLCA5NSwgMjgsIDEwNywgMjEyLCAxMDgsIAotICAgIDI4LCAxMDcsIDIxOSwgMTA1LCAyOCwgMTA3LCAyMTksIDEwNiwgMjgsIDEwNywgMjAzLCAyNywgMjgsIDEwNywgMjAzLCAyOCwgCi0gICAgMjgsIDEwNywgMjQ2LCA3MiwgMjgsIDEwNywgMjQ2LCA3MSwgMjgsIDEwNywgMjExLCAxNjAsIDI4LCAxMDcsIDIxOCwgMTg3LCAKLSAgICAyOCwgMTA3LCAyMTgsIDE4NiwgMTIsIDE1LCAyMzMsIDc0LCAxMiwgMTUsIDIzMywgNzMsIDEyLCAxNSwgMjMzLCA3MiwgMTIsIAotICAgIDE1LCAyMzMsIDcxLCAxMiwgMTUsIDIzMywgNzAsIDEyLCAxNSwgMjMzLCA2OSwgMTIsIDE1LCAyMzMsIDY4LCAxMiwgMTUsIAotICAgIDIzMywgNjcsIDEyLCAxNSwgMjMzLCA2NiwgMTIsIDE1LCAyMzMsIDY1LCAxMiwgMTUsIDIzMywgNjQsIDEyLCAxNSwgMjMzLCAKLSAgICA2MywgMTIsIDE1LCAyMzMsIDYyLCAxMiwgMTUsIDIzMywgNjEsIDEyLCAxNSwgMjMzLCA2MCwgMTIsIDE1LCAyMzMsIDU5LCAKLSAgICAxMiwgMTUsIDIzMywgNTgsIDEyLCAxNSwgMjMzLCA1NywgMTIsIDE1LCAyMzMsIDU2LCAxMiwgMTUsIDIzMywgNTUsIDEyLCAKLSAgICAxNSwgMjMzLCA1NCwgMTIsIDE1LCAyMzMsIDUzLCAxMiwgMTUsIDIzMywgNTIsIDEyLCAxNSwgMjMzLCA1MSwgMTIsIDE1LCAKLSAgICAyMzMsIDUwLCAxMiwgMTUsIDIzMywgNDksIDEyLCAxNSwgMjMzLCA0OCwgMTIsIDE1LCAyMzMsIDQ3LCAxMiwgMTUsIDIzMywgCi0gICAgNDYsIDEyLCAxNSwgMjMzLCA0NSwgMTIsIDE1LCAyMzMsIDQ0LCAxMiwgMTUsIDIzMywgNDMsIDEyLCAxNSwgMjMzLCA0MiwgCi0gICAgMTIsIDE1LCAyMzMsIDQxLCAxMiwgMTUsIDIzMywgNDAsIDEyLCAxNSwgMjMzLCAzOSwgMTIsIDE1LCAyMzMsIDM4LCAxMiwgCi0gICAgMTUsIDIzMywgMzcsIDEyLCAxNSwgMjMzLCAzNiwgMTIsIDE1LCAyMzMsIDM1LCAxMiwgMTUsIDIzMywgMzQsIDEyLCAxNSwgCi0gICAgMjMzLCAzMywgMTIsIDE1LCAyMzMsIDMyLCAxMiwgMTUsIDIzMywgMzEsIDEyLCAxNSwgMjMzLCAzMCwgMTIsIDE1LCAyMzMsIAotICAgIDI5LCAxMiwgMTUsIDIzMywgMjgsIDEyLCAxNSwgMjMzLCAyNywgMTIsIDE1LCAyMzMsIDI2LCAxMiwgMTUsIDIzMywgMjUsIAotICAgIDEyLCAxNSwgMjMzLCAyNCwgMTIsIDE1LCAyMzMsIDIzLCAxMiwgMTUsIDIzMywgMjIsIDEyLCAxNSwgMjMzLCAyMSwgMTIsIAotICAgIDE1LCAyMzMsIDIwLCAxMiwgMTUsIDIzMywgMTksIDEyLCAxNSwgMjMzLCAxOCwgMTIsIDE1LCAyMzMsIDE3LCAxMiwgMTUsIAotICAgIDIzMywgMTYsIDEyLCAxNSwgMjMzLCAxNSwgMTIsIDE1LCAyMzMsIDE0LCAxMiwgMTUsIDIzMywgMTMsIDEyLCAxNSwgMjMzLCAKLSAgICAxMiwgMTIsIDE1LCAyMzMsIDExLCAxMiwgMTUsIDIzMywgMTAsIDEyLCAxNSwgMjMzLCA5LCAxMiwgMTUsIDIzMywgOCwgMTIsIAotICAgIDE1LCAyMzMsIDcsIDEyLCAxNSwgMjMzLCA2LCAxMiwgMTUsIDIzMywgNSwgMTIsIDE1LCAyMzMsIDQsIDEyLCAxNSwgMjMzLCAKLSAgICAzLCAxMiwgMTUsIDIzMywgMiwgMTIsIDE1LCAyMzMsIDEsIDEyLCAxNSwgMjMzLCAwLCAxMiwgMTUsIDIzMiwgMjU1LCAxMiwgCi0gICAgMTUsIDIzMiwgMjU0LCAxMiwgMTUsIDIzMiwgMjUzLCAxMiwgMTUsIDIzMiwgMjUyLCAxMiwgMTUsIDIzMiwgMjUxLCAxMiwgCi0gICAgMTUsIDIzMiwgMjUwLCAxMiwgMTUsIDIzMiwgMjQ5LCAxMiwgMTUsIDIzMiwgMjQ4LCAxMiwgMTUsIDIzMiwgMjQ3LCAxMiwgCi0gICAgMTUsIDIzMiwgMjQ2LCAxMiwgMTUsIDIzMiwgMjQ1LCAxMiwgMTUsIDIzMiwgMjQ0LCAxMiwgMTUsIDIzMiwgMjQzLCAxMiwgCi0gICAgMTUsIDIzMiwgMjQyLCAxMiwgMTUsIDIzMiwgMjQxLCAxMiwgMTUsIDIzMiwgMjQwLCAxMiwgMTUsIDIzMiwgMjM5LCAxMiwgCi0gICAgMTUsIDIzMiwgMjM4LCAxMiwgMTUsIDIzMiwgMjM3LCAxMiwgMTUsIDIzMiwgMjM2LCAxMiwgMTUsIDIzMiwgMjM1LCAxMiwgCi0gICAgMTUsIDIzMiwgMjM0LCAxMiwgMTUsIDIzMiwgMjMzLCAxMiwgMTUsIDIzMiwgMjMyLCAxMiwgMTUsIDIzMiwgMjMxLCAxMiwgCi0gICAgMTUsIDIzMiwgMjMwLCAxMiwgMTUsIDIzMiwgMjI5LCAxMiwgMTUsIDIzMiwgMjI4LCAxMiwgMTUsIDIzMiwgMjI3LCAxMiwgCi0gICAgMTUsIDIzMiwgMjI2LCAxMiwgMTUsIDIzMiwgMjI1LCAxMiwgMTUsIDIzMiwgMjI0LCAxMiwgMTUsIDIzMiwgMjIzLCAxMiwgCi0gICAgMTUsIDIzMiwgMjIyLCAxMiwgMTUsIDIzMiwgMjIxLCAxMiwgMTUsIDIzMiwgMjIwLCAxMiwgMTUsIDIzMiwgMjE5LCAxMiwgCi0gICAgMTUsIDIzMiwgMjE4LCAxMiwgMTUsIDIzMiwgMjE3LCAxMiwgMTUsIDIzMiwgMjE2LCAxMiwgMTUsIDIzMiwgMjE1LCAxMiwgCi0gICAgMTUsIDIzMiwgMjE0LCAxMiwgMTUsIDIzMiwgMjEzLCAxMiwgMTUsIDIzMiwgMjEyLCAxMiwgMTUsIDIzMiwgMjExLCAxMiwgCi0gICAgMTUsIDIzMiwgMjEwLCAxMiwgMTUsIDIzMiwgMjA5LCAxMiwgMTUsIDIzMiwgMjA4LCAxMiwgMTUsIDIzMiwgMjA3LCAxMiwgCi0gICAgMTUsIDIzMiwgMjA2LCAxMiwgMTUsIDIzMiwgMjA1LCAxMiwgMTUsIDIzMiwgMjA0LCAxMiwgMTUsIDIzMiwgMjAzLCAxMiwgCi0gICAgMTUsIDIzMiwgMjAyLCAxMiwgMTUsIDIzMiwgMjAxLCAxMiwgMTUsIDIzMiwgMjAwLCAxMiwgMTUsIDIzMiwgMTk5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTk4LCAxMiwgMTUsIDIzMiwgMTk3LCAxMiwgMTUsIDIzMiwgMTk2LCAxMiwgMTUsIDIzMiwgMTk1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTk0LCAxMiwgMTUsIDIzMiwgMTkzLCAxMiwgMTUsIDIzMiwgMTkyLCAxMiwgMTUsIDIzMiwgMTkxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTkwLCAxMiwgMTUsIDIzMiwgMTg5LCAxMiwgMTUsIDIzMiwgMTg4LCAxMiwgMTUsIDIzMiwgMTg3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTg2LCAxMiwgMTUsIDIzMiwgMTg1LCAxMiwgMTUsIDIzMiwgMTg0LCAxMiwgMTUsIDIzMiwgMTgzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTgyLCAxMiwgMTUsIDIzMiwgMTgxLCAxMiwgMTUsIDIzMiwgMTgwLCAxMiwgMTUsIDIzMiwgMTc5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTc4LCAxMiwgMTUsIDIzMiwgMTc3LCAxMiwgMTUsIDIzMiwgMTc2LCAxMiwgMTUsIDIzMiwgMTc1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTc0LCAxMiwgMTUsIDIzMiwgMTczLCAxMiwgMTUsIDIzMiwgMTcyLCAxMiwgMTUsIDIzMiwgMTcxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTcwLCAxMiwgMTUsIDIzMiwgMTY5LCAxMiwgMTUsIDIzMiwgMTY4LCAxMiwgMTUsIDIzMiwgMTY3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTY2LCAxMiwgMTUsIDIzMiwgMTY1LCAxMiwgMTUsIDIzMiwgMTY0LCAxMiwgMTUsIDIzMiwgMTYzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTYyLCAxMiwgMTUsIDIzMiwgMTYxLCAxMiwgMTUsIDIzMiwgMTYwLCAxMiwgMTUsIDIzMiwgMTU5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTU4LCAxMiwgMTUsIDIzMiwgMTU3LCAxMiwgMTUsIDIzMiwgMTU2LCAxMiwgMTUsIDIzMiwgMTU1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTU0LCAxMiwgMTUsIDIzMiwgMTUzLCAxMiwgMTUsIDIzMiwgMTUyLCAxMiwgMTUsIDIzMiwgMTUxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTUwLCAxMiwgMTUsIDIzMiwgMTQ5LCAxMiwgMTUsIDIzMiwgMTQ4LCAxMiwgMTUsIDIzMiwgMTQ3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTQ2LCAxMiwgMTUsIDIzMiwgMTQ1LCAxMiwgMTUsIDIzMiwgMTQ0LCAxMiwgMTUsIDIzMiwgMTQzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTQyLCAxMiwgMTUsIDIzMiwgMTQxLCAxMiwgMTUsIDIzMiwgMTQwLCAxMiwgMTUsIDIzMiwgMTM5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTM4LCAxMiwgMTUsIDIzMiwgMTM3LCAxMiwgMTUsIDIzMiwgMTM2LCAxMiwgMTUsIDIzMiwgMTM1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTM0LCAxMiwgMTUsIDIzMiwgMTMzLCAxMiwgMTUsIDIzMiwgMTMyLCAxMiwgMTUsIDIzMiwgMTMxLCAxMiwgCi0gICAgMTUsIDIzMiwgMTMwLCAxMiwgMTUsIDIzMiwgMTI5LCAxMiwgMTUsIDIzMiwgMTI4LCAxMiwgMTUsIDIzMiwgMTI3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTI2LCAxMiwgMTUsIDIzMiwgMTI1LCAxMiwgMTUsIDIzMiwgMTI0LCAxMiwgMTUsIDIzMiwgMTIzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTIyLCAxMiwgMTUsIDIzMiwgMTIxLCAxMiwgMTUsIDIzMiwgMTIwLCAxMiwgMTUsIDIzMiwgMTE5LCAxMiwgCi0gICAgMTUsIDIzMiwgMTE4LCAxMiwgMTUsIDIzMiwgMTE3LCAxMiwgMTUsIDIzMiwgMTE2LCAxMiwgMTUsIDIzMiwgMTE1LCAxMiwgCi0gICAgMTUsIDIzMiwgMTE0LCAxMiwgMTUsIDIzMiwgMTEzLCAxMiwgMTUsIDIzMiwgMTEyLCAxMiwgMTUsIDIzMiwgMTExLCAxMiwgCi0gICAgMTUsIDIzMiwgMTEwLCAxMiwgMTUsIDIzMiwgMTA5LCAxMiwgMTUsIDIzMiwgMTA4LCAxMiwgMTUsIDIzMiwgMTA3LCAxMiwgCi0gICAgMTUsIDIzMiwgMTA2LCAxMiwgMTUsIDIzMiwgMTA1LCAxMiwgMTUsIDIzMiwgMTA0LCAxMiwgMTUsIDIzMiwgMTAzLCAxMiwgCi0gICAgMTUsIDIzMiwgMTAyLCAxMiwgMTUsIDIzMiwgMTAxLCAxMiwgMTUsIDIzMiwgMTAwLCAxMiwgMTUsIDIzMiwgOTksIDEyLCAKLSAgICAxNSwgMjMyLCA5OCwgMTIsIDE1LCAyMzIsIDk3LCAxMiwgMTUsIDIzMiwgOTYsIDEyLCAxNSwgMjMyLCA5NSwgMTIsIDE1LCAKLSAgICAyMzIsIDk0LCAxMiwgMTUsIDIzMiwgOTMsIDEyLCAxNSwgMjMyLCA5MiwgMTIsIDE1LCAyMzIsIDkxLCAxMiwgMTUsIDIzMiwgCi0gICAgOTAsIDEyLCAxNSwgMjMyLCA4OSwgMTIsIDE1LCAyMzIsIDg4LCAxMiwgMTUsIDIzMiwgODcsIDEyLCAxNSwgMjMyLCA4NiwgCi0gICAgMTIsIDE1LCAyMzIsIDg1LCAxMiwgMTUsIDIzMiwgODQsIDEyLCAxNSwgMjMyLCA4MywgMTIsIDE1LCAyMzIsIDgyLCAxMiwgCi0gICAgMTUsIDIzMiwgODEsIDEyLCAxNSwgMjMyLCA4MCwgMTIsIDE1LCAyMzIsIDc5LCAxMiwgMTUsIDIzMiwgNzgsIDEyLCAxNSwgCi0gICAgMjMyLCA3NywgMTIsIDE1LCAyMzIsIDc2LCAxMiwgMTUsIDIzMiwgNzUsIDEyLCAxNSwgMjMyLCA3NCwgMTIsIDE1LCAyMzIsIAotICAgIDczLCAxMiwgMTUsIDIzMiwgNzIsIDEyLCAxNSwgMjMyLCA3MSwgMTIsIDE1LCAyMzIsIDcwLCAxMiwgMTUsIDIzMiwgNjksIAotICAgIDEyLCAxNSwgMjMyLCA2OCwgMTIsIDE1LCAyMzIsIDY3LCAxMiwgMTUsIDIzMiwgNjYsIDEyLCAxNSwgMjMyLCA2NSwgMTIsIAotICAgIDE1LCAyMzIsIDY0LCAxMiwgMTUsIDIzMiwgNjMsIDEyLCAxNSwgMjMyLCA2MiwgMTIsIDE1LCAyMzIsIDYxLCAxMiwgMTUsIAotICAgIDIzMiwgNjAsIDEyLCAxNSwgMjMyLCA1OSwgMTIsIDE1LCAyMzIsIDU4LCAxMiwgMTUsIDIzMiwgNTcsIDEyLCAxNSwgMjMyLCAKLSAgICA1NiwgMTIsIDE1LCAyMzIsIDU1LCAxMiwgMTUsIDIzMiwgNTQsIDEyLCAxNSwgMjMyLCA1MywgMTIsIDE1LCAyMzIsIDUyLCAKLSAgICAxMiwgMTUsIDIzMiwgNTEsIDEyLCAxNSwgMjMyLCA1MCwgMTIsIDE1LCAyMzIsIDQ5LCAxMiwgMTUsIDIzMiwgNDgsIDEyLCAKLSAgICAxNSwgMjMyLCA0NywgMTIsIDE1LCAyMzIsIDQ2LCAxMiwgMTUsIDIzMiwgNDUsIDEyLCAxNSwgMjMyLCA0NCwgMTIsIDE1LCAKLSAgICAyMzIsIDQzLCAxMiwgMTUsIDIzMiwgNDIsIDEyLCAxNSwgMjMyLCA0MSwgMTIsIDE1LCAyMzIsIDQwLCAxMiwgMTUsIDIzMiwgCi0gICAgMzksIDEyLCAxNSwgMjMyLCAzOCwgMTIsIDE1LCAyMzIsIDM3LCAxMiwgMTUsIDIzMiwgMzYsIDEyLCAxNSwgMjMyLCAzNSwgCi0gICAgMTIsIDE1LCAyMzIsIDM0LCAxMiwgMTUsIDIzMiwgMzMsIDEyLCAxNSwgMjMyLCAzMiwgMTIsIDE1LCAyMzIsIDMxLCAxMiwgCi0gICAgMTUsIDIzMiwgMzAsIDEyLCAxNSwgMjMyLCAyOSwgMTIsIDE1LCAyMzIsIDI4LCAxMiwgMTUsIDIzMiwgMjcsIDEyLCAxNSwgCi0gICAgMjMyLCAyNiwgMTIsIDE1LCAyMzIsIDI1LCAxMiwgMTUsIDIzMiwgMjQsIDEyLCAxNSwgMjMyLCAyMywgMTIsIDE1LCAyMzIsIAotICAgIDIyLCAxMiwgMTUsIDIzMiwgMjEsIDEyLCAxNSwgMjMyLCAyMCwgMTIsIDE1LCAyMzIsIDE5LCAxMiwgMTUsIDIzMiwgMTgsIAotICAgIDEyLCAxNSwgMjMyLCAxNywgMTIsIDE1LCAyMzIsIDE2LCAxMiwgMTUsIDIzMiwgMTUsIDEyLCAxNSwgMjMyLCAxNCwgMTIsIAotICAgIDE1LCAyMzIsIDEzLCAxMiwgMTUsIDIzMiwgMTIsIDEyLCAxNSwgMjMyLCAxMSwgMTIsIDE1LCAyMzIsIDEwLCAxMiwgMTUsIAotICAgIDIzMiwgOSwgMTIsIDE1LCAyMzIsIDgsIDEyLCAxNSwgMjMyLCA3LCAxMiwgMTUsIDIzMiwgNiwgMTIsIDE1LCAyMzIsIDUsIAotICAgIDEyLCAxNSwgMjMyLCA0LCAxMiwgMTUsIDIzMiwgMywgMTIsIDE1LCAyMzIsIDIsIDEyLCAxNSwgMjMyLCAxLCAxMiwgMTUsIAotICAgIDIzMiwgMCwgMTIsIDE1LCAyMzEsIDI1NSwgMTIsIDE1LCAyMzEsIDI1NCwgMTIsIDE1LCAyMzEsIDI1MywgMTIsIDE1LCAKLSAgICAyMzEsIDI1MiwgMTIsIDE1LCAyMzEsIDI1MSwgMTIsIDE1LCAyMzEsIDI1MCwgMTIsIDE1LCAyMzEsIDI0OSwgMTIsIDE1LCAKLSAgICAyMzEsIDI0OCwgMTIsIDE1LCAyMzEsIDI0NywgMTIsIDE1LCAyMzEsIDI0NiwgMTIsIDE1LCAyMzEsIDI0NSwgMTIsIDE1LCAKLSAgICAyMzEsIDI0NCwgMTIsIDE1LCAyMzEsIDI0MywgMTIsIDE1LCAyMzEsIDI0MiwgMTIsIDE1LCAyMzEsIDI0MSwgMTIsIDE1LCAKLSAgICAyMzEsIDI0MCwgMTIsIDE1LCAyMzEsIDIzOSwgMTIsIDE1LCAyMzEsIDIzOCwgMTIsIDE1LCAyMzEsIDIzNywgMTIsIDE1LCAKLSAgICAyMzEsIDIzNiwgMTIsIDE1LCAyMzEsIDIzNSwgMTIsIDE1LCAyMzEsIDIzNCwgMTIsIDE1LCAyMzEsIDIzMywgMTIsIDE1LCAKLSAgICAyMzEsIDIzMiwgMTIsIDE1LCAyMzEsIDIzMSwgMTIsIDE1LCAyMzEsIDIzMCwgMTIsIDE1LCAyMzEsIDIyOSwgMTIsIDE1LCAKLSAgICAyMzEsIDIyOCwgMTIsIDE1LCAyMzEsIDIyNywgMTIsIDE1LCAyMzEsIDIyNiwgMTIsIDE1LCAyMzEsIDIyNSwgMTIsIDE1LCAKLSAgICAyMzEsIDIyNCwgMTIsIDE1LCAyMzEsIDIyMywgMTIsIDE1LCAyMzEsIDIyMiwgMTIsIDE1LCAyMzEsIDIyMSwgMTIsIDE1LCAKLSAgICAyMzEsIDIyMCwgMTIsIDE1LCAyMzEsIDIxOSwgMTIsIDE1LCAyMzEsIDIxOCwgMTIsIDE1LCAyMzEsIDIxNywgMTIsIDE1LCAKLSAgICAyMzEsIDIxNiwgMTIsIDE1LCAyMzEsIDIxNSwgMTIsIDE1LCAyMzEsIDIxNCwgMTIsIDE1LCAyMzEsIDIxMywgMTIsIDE1LCAKLSAgICAyMzEsIDIxMiwgMTIsIDE1LCAyMzEsIDIxMSwgMTIsIDE1LCAyMzEsIDIxMCwgMTIsIDE1LCAyMzEsIDIwOSwgMTIsIDE1LCAKLSAgICAyMzEsIDIwOCwgMTIsIDE1LCAyMzEsIDIwNywgMTIsIDE1LCAyMzEsIDIwNiwgMTIsIDE1LCAyMzEsIDIwNSwgMTIsIDE1LCAKLSAgICAyMzEsIDIwNCwgMTIsIDE1LCAyMzEsIDIwMywgMTIsIDE1LCAyMzEsIDIwMiwgMTIsIDE1LCAyMzEsIDIwMSwgMTIsIDE1LCAKLSAgICAyMzEsIDIwMCwgMTIsIDE1LCAyMzEsIDE5OSwgMTIsIDE1LCAyMzEsIDE5OCwgMTIsIDE1LCAyMzEsIDE5NywgMTIsIDE1LCAKLSAgICAyMzEsIDE5NiwgMTIsIDE1LCAyMzEsIDE5NSwgMTIsIDE1LCAyMzEsIDE5NCwgMTIsIDE1LCAyMzEsIDE5MywgMTIsIDE1LCAKLSAgICAyMzEsIDE5MiwgMTIsIDE1LCAyMzEsIDE5MSwgMTIsIDE1LCAyMzEsIDE5MCwgMTIsIDE1LCAyMzEsIDE4OSwgMTIsIDE1LCAKLSAgICAyMzEsIDE4OCwgMTIsIDE1LCAyMzEsIDE4NywgMTIsIDE1LCAyMzEsIDE4NiwgMTIsIDE1LCAyMzEsIDE4NSwgMTIsIDE1LCAKLSAgICAyMzEsIDE4NCwgMTIsIDE1LCAyMzEsIDE4MywgMTIsIDE1LCAyMzEsIDE4MiwgMTIsIDE1LCAyMzEsIDE4MSwgMTIsIDE1LCAKLSAgICAyMzEsIDE4MCwgMTIsIDE1LCAyMzEsIDE3OSwgMTIsIDE1LCAyMzEsIDE3OCwgMTIsIDE1LCAyMzEsIDE3NywgMTIsIDE1LCAKLSAgICAyMzEsIDE3NiwgMTIsIDE1LCAyMzEsIDE3NSwgMTIsIDE1LCAyMzEsIDE3NCwgMTIsIDE1LCAyMzEsIDE3MywgMTIsIDE1LCAKLSAgICAyMzEsIDE3MiwgMTIsIDE1LCAyMzEsIDE3MSwgMTIsIDE1LCAyMzEsIDE3MCwgMTIsIDE1LCAyMzEsIDE2OSwgMTIsIDE1LCAKLSAgICAyMzEsIDE2OCwgMTIsIDE1LCAyMzEsIDE2NywgMTIsIDE1LCAyMzEsIDE2NiwgMTIsIDE1LCAyMzEsIDE2NSwgMTIsIDE1LCAKLSAgICAyMzEsIDE2NCwgMTIsIDE1LCAyMzEsIDE2MywgMTIsIDE1LCAyMzEsIDE2MiwgMTIsIDE1LCAyMzEsIDE2MSwgMTIsIDE1LCAKLSAgICAyMzEsIDE2MCwgMTIsIDE1LCAyMzEsIDE1OSwgMTIsIDE1LCAyMzEsIDE1OCwgMTIsIDE1LCAyMzEsIDE1NywgMTIsIDE1LCAKLSAgICAyMzEsIDE1NiwgMTIsIDE1LCAyMzEsIDE1NSwgMTIsIDE1LCAyMzEsIDE1NCwgMTIsIDE1LCAyMzEsIDE1MywgMTIsIDE1LCAKLSAgICAyMzEsIDE1MiwgMTIsIDE1LCAyMzEsIDE1MSwgMTIsIDE1LCAyMzEsIDE1MCwgMTIsIDE1LCAyMzEsIDE0OSwgMTIsIDE1LCAKLSAgICAyMzEsIDE0OCwgMTIsIDE1LCAyMzEsIDE0NywgMTIsIDE1LCAyMzEsIDE0NiwgMTIsIDE1LCAyMzEsIDE0NSwgMTIsIDE1LCAKLSAgICAyMzEsIDE0NCwgMTIsIDE1LCAyMzEsIDE0MywgMTIsIDE1LCAyMzEsIDE0MiwgMTIsIDE1LCAyMzEsIDE0MSwgMTIsIDE1LCAKLSAgICAyMzEsIDE0MCwgMTIsIDE1LCAyMzEsIDEzOSwgMTIsIDE1LCAyMzEsIDEzOCwgMTIsIDE1LCAyMzEsIDEzNywgMTIsIDE1LCAKLSAgICAyMzEsIDEzNiwgMTIsIDE1LCAyMzEsIDEzNSwgMTIsIDE1LCAyMzEsIDEzNCwgMTIsIDE1LCAyMzEsIDEzMywgMTIsIDE1LCAKLSAgICAyMzEsIDEzMiwgMTIsIDE1LCAyMzEsIDEzMSwgMTIsIDE1LCAyMzEsIDEzMCwgMTIsIDE1LCAyMzEsIDEyOSwgMTIsIDE1LCAKLSAgICAyMzEsIDEyOCwgMTIsIDE1LCAyMzEsIDEyNywgMTIsIDE1LCAyMzEsIDEyNiwgMTIsIDE1LCAyMzEsIDEyNSwgMTIsIDE1LCAKLSAgICAyMzEsIDEyNCwgMTIsIDE1LCAyMzEsIDEyMywgMTIsIDE1LCAyMzEsIDEyMiwgMTIsIDE1LCAyMzEsIDEyMSwgMTIsIDE1LCAKLSAgICAyMzEsIDEyMCwgMTIsIDE1LCAyMzEsIDExOSwgMTIsIDE1LCAyMzEsIDExOCwgMTIsIDE1LCAyMzEsIDExNywgMTIsIDE1LCAKLSAgICAyMzEsIDExNiwgMTIsIDE1LCAyMzEsIDExNSwgOCwgNSwgMzIsIDI0MCwgMzAsIDgsIDUsIDMyLCAyNDAsIDI2LCA4LCA1LCAKLSAgICAzMiwgMjM5LCAyMjgsIDgsIDUsIDMyLCAyNDAsIDI5LCA4LCA1LCAzMiwgMjQwLCAyOCwgOCwgNSwgMzIsIDE2MywgMjE1LCAKLSAgICA5NCwgMjEwLCA2OSwgOCwgNSwgMzIsIDIxMSwgMTA4LCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjIxLCAxNTIsIDE3OCwgNSwgCi0gICAgMzIsIDIyNCwgMjQxLCAyNDEsIDE2NywgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIzMSwgMTksIDE3OCwgNSwgMzIsIDIwNSwgCi0gICAgMjM1LCAyMjEsIDE1MiwgMTc4LCA1LCAzMiwgMjI0LCAyNDEsIDIwMywgMTc0LCAxMTAsIDEsIDIwMiwgMjM3LCAzLCAyMzYsIAotICAgIDIzMiwgMTEwLCAyMTgsIDYzLCAyMzAsIDgxLCAyMDYsIDY3LCAxMTAsIDMyLCAyMDMsIDksIDIwMiwgMjM3LCAyMDIsIDIzNywgCi0gICAgMjE5LCA1NCwgMTEwLCAxLCAyNTAsIDI1MCwgMjUwLCAzLCAxMTAsIDEsIDIwNCwgMjcsIDI1MSwgMzAsIDExMCwgMSwgMjA0LCAKLSAgICAyNywgMjQ0LCAxNzgsIDExMCwgMSwgMjA0LCAyNywgMjM3LCA2NywgMTEwLCAxLCAyMDQsIDI3LCAyMzAsIDIyLCAxMTAsIDEsIAotICAgIDIwNCwgMjcsIDIyOCwgMjAsIDExMCwgMSwgMjA0LCAyNywgNDYsIDIyNCwgMjQ3LCAxMTAsIDEsIDIwNCwgMjcsIDIxNiwgCi0gICAgOTEsIDExMCwgMSwgMjA0LCAyNywgMjA5LCAyMDMsIDExMCwgMSwgMjUwLCAyNTAsIDkxLCA1NCwgMTEwLCAxLCAyMTMsIDAsIAotICAgIDMsIDIxMywgMCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIDMsIDIxMiwgMTI0LCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgCi0gICAgMywgMjQ0LCAxOTgsIDI1LCAyMTMsIDAsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAzLCAyNDQsIDE5OCwgMjUsIDIxMiwgCi0gICAgMTI0LCAyNDMsIDg1LCAxMTAsIDEsIDEzNywgMywgMjE5LCA1NCwgMTEwLCAxLCAxMzcsIDMsIDIxNywgMTE0LCAxMTAsIDEsIAotICAgIDEzNywgMywgMjI1LCAxMDUsIDExMCwgMSwgMjQ4LCAxMDksIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIzOCwgNjgsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDI0NCwgMTc5LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMzcsIDY4LCAzLCAyMjUsIDEwNSwgMTEwLCAxLCAKLSAgICAyMDYsIDYwLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDIsIDk2LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMDksIDEzMywgMywgCi0gICAgMjQ0LCAxOTcsIDExMCwgMSwgMjAyLCAyMzcsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDQ2LCAyMzAsIDIzLCAzLCAyNDQsIAotICAgIDE5NywgMTEwLCAxLCAyMzAsIDIzLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMjgsIDIxLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAKLSAgICAyMjQsIDI0OCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjIxLCA0MSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjE0LCAyNTAsIDMsIAotICAgIDI0NCwgMTk3LCAxMTAsIDEsIDQ2LCAyMTksIDM1LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTksIDM1LCAzLCAyNDQsIDE5NywgCi0gICAgMTEwLCAxLCAyMDgsIDE2LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTcsIDc1LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTYsIAotICAgIDkyLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTMsIDAsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwOSwgMjA0LCAzLCAyNDQsIAotICAgIDE5NywgMTEwLCAxLCAyMDYsIDYwLCAzLCAyMzYsIDEyOCwgMTEwLCAxLCAyNDgsIDEwOSwgMywgMjE2LCAyMDAsIDExMCwgMSwgCi0gICAgMjMwLCAyMywgMywgMjE2LCAyMDAsIDExMCwgMSwgMjE5LCAzNSwgMywgMjE2LCAyMDAsIDExMCwgMzIsIDEzNywgMjI4LCAKLSAgICAyMCwgMTAsIDEsIDEzNywgMjA0LCA4OCwgNjQsIDE4LCAxMCwgMSwgMTM3LCAyMDQsIDg4LCA0NiwgMTgsIDEwLCAxLCAyNDgsIAotICAgIDE0OSwgNjQsIDE4LCAxMCwgMSwgMjQ4LCAxNDksIDQ2LCAxOCwgMTAsIDEsIDI0OCwgMTQ5LCA4MSwgMTgsIDEwLCAxLCAKLSAgICAyNDgsIDE0OSwgMTc0LCAxOCwgMTAsIDEsIDIxOSwgMTcsIDY0LCAxOCwgMTAsIDEsIDIxOSwgMTcsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIxOSwgMTcsIDgxLCAxOCwgMTAsIDEsIDIxOSwgMTcsIDE3NCwgMTgsIDEwLCAxLCAyNDgsIDEzNywgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjQ4LCAxMzcsIDQ2LCAxOCwgMTAsIDEsIDI0OCwgMTM3LCA4MSwgMTgsIDEwLCAxLCAyNDgsIDEzNywgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIwNywgMjMyLCA2NCwgMTgsIDEwLCAxLCAyMDcsIDIzMiwgNDYsIDE4LCAxMCwgMSwgMjA3LCAyMzIsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIwNywgMjMyLCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTY4LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyMDksIDE2OCwgODEsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDE3NCwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIDQ2LCAxOCwgMTAsIDEsIDIwNywgMjM0LCA4MSwgMTgsIDEwLCAxLCAyMDcsIAotICAgIDIzNCwgMTc0LCAxOCwgMTAsIDEsIDIwNiwgNDksIDY0LCAxOCwgMTAsIDEsIDIwNiwgNDksIDQ2LCAxOCwgMTAsIDEsIDIwNiwgCi0gICAgNDksIDgxLCAxOCwgMTAsIDEsIDIwNiwgNDksIDE3NCwgMTgsIDEwLCAxLCAyMTksIDE1LCA2NCwgMTgsIDEwLCAxLCAyMTksIAotICAgIDE1LCA0NiwgMTgsIDEwLCAxLCAyMTksIDE1LCA4MSwgMTgsIDEwLCAxLCAyMTksIDE1LCAxNzQsIDE4LCAxMCwgMSwgMjQyLCAKLSAgICA2LCA2NCwgMTgsIDEwLCAxLCAyNDIsIDYsIDQ2LCAxOCwgMTAsIDEsIDI0MiwgNiwgODEsIDE4LCAxMCwgMSwgMjQyLCA2LCAKLSAgICAxNzQsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDY0LCAxOCwgMTAsIDEsIDIyMCwgMjU1LCA0NiwgMTgsIDEwLCAxLCAyMjAsIAotICAgIDI1NSwgODEsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE5MiwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjA5LCAxOTIsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTkyLCA4MSwgMTgsIDEwLCAxLCAyMDksIDE5MiwgMTc0LCAxOCwgMTAsIAotICAgIDEsIDIwOSwgMTkwLCA2NCwgMTgsIDEwLCAxLCAyMDksIDE5MCwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxOTAsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIwOSwgMTkwLCAxNzQsIDE4LCAxMCwgMSwgMjQ0LCAxMTgsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTE4LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyNDQsIDE5MiwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxOTIsIDQ2LCAxOCwgMTAsIDEsIDI0MiwgMzQsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDI0MiwgMzQsIDQ2LCAxOCwgMTAsIDEsIDI0NCwgMTE2LCA2NCwgMTgsIDEwLCAxLCAyNDQsIDExNiwgNDYsIAotICAgIDE4LCAxMCwgMSwgMjMwLCAxNTYsIDY0LCAxOCwgMTAsIDEsIDIzMCwgMTU2LCA0NiwgMTgsIDEwLCAxLCAyMTUsIDE3OCwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjE1LCAxNzgsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgMTkwLCA2NCwgMTgsIDEwLCAxLCAyMjksIAotICAgIDE5MCwgNDYsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDgxLCAxOCwgMTAsIDEsIDIyOSwgMTkwLCAxNzQsIDE4LCAxMCwgMSwgCi0gICAgMjM4LCAyNTIsIDY0LCAxOCwgMTAsIDEsIDIzOCwgMjUyLCA0NiwgMTgsIDEwLCAxLCAyMzgsIDI1MiwgODEsIDE4LCAxMCwgCi0gICAgMSwgMjM4LCAyNTIsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgNjQsIDE4LCAxMCwgMSwgMjM3LCAyMTgsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIzNywgMjE4LCA4MSwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgMTc0LCAxOCwgMTAsIDEsIDIyMiwgMTI3LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyMjIsIDEyNywgNDYsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDgxLCAxOCwgMTAsIDEsIDIyMiwgMTI3LCAKLSAgICAxNzQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDIzOCwgODYsIDY0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAyMzgsIDg2LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyMTUsIDIzMSwgNjQsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIDQ2LCAxOCwgMTAsIDEsIDIxNSwgMjMxLCAKLSAgICA4MSwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDMsIDg5LCA4NywgNjQsIDE4LCAxMCwgCi0gICAgMSwgMjM3LCA0NCwgMywgODksIDg3LCA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMzcsIDQ0LCAyMzgsIDM3LCA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyMzgsIDM3LCA4MSwgMTgsIDEwLCAxLCAyMzcsIAotICAgIDQ0LCAyMzgsIDM3LCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMTAsIDY0LCAxOCwgMTAsIDEsIDIzNywgNDQsIAotICAgIDI0MywgMTEwLCA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDExMCwgODEsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAKLSAgICAxMTAsIDE3NCwgMTgsIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDY0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxNiwgNzAsIDU1LCAxMCwgMTYsIDcwLCA1NiwgMTAsIDE2LCAxMjAsIDE4NywgCi0gICAgNTUsIDEwLCAxNiwgMTIwLCAxODcsIDU2LCAxMCwgMTYsIDEyNiwgMTg3LCA1NSwgMTAsIDE2LCAxMjYsIDE4NywgNTYsIDEwLCAKLSAgICAxNiwgMTI2LCAxODcsIDIxOCwgNTksIDE4MywgNTUsIDEwLCAxNiwgMTI2LCAxODcsIDIxOCwgNTksIDE4MywgNTYsIDEwLCAKLSAgICAxNiwgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAxNiwgMjM5LCAxNDcsIDE4NywgNTYsIDEwLCAxNiwgNTIsIDgwLCAyNDgsIAotICAgIDIzMSwgNTYsIDEwLCAxNiwgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDE2LCAxMjAsIDE4NywgMjA1LCAyNDQsIDU2LCAKLSAgICAxMCwgMTYsIDIxNSwgMjUyLCAxMCwgMTYsIDUsIDIwOSwgMjUyLCA1NSwgMTAsIDE2LCA1LCAyMDksIDI1MiwgNTYsIDEwLCAKLSAgICAxLCAyMjIsIDIwNiwgNjQsIDE4LCAxMCwgMSwgMjIyLCAyMDYsIDQ2LCAxOCwgMTAsIDEsIDIyMiwgMjA2LCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMjIsIDIwNiwgMTc0LCAxOCwgMTAsIDEsIDEwNiwgNjQsIDE4LCAxMCwgMSwgMTA2LCA0NiwgMTgsIDEwLCAxLCAKLSAgICAyMjAsIDc0LCA2NCwgMTgsIDEwLCAxLCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAxLCAyMDIsIDIxNCwgNjQsIDE4LCAxMCwgMSwgCi0gICAgMjAyLCAyMTQsIDQ2LCAxOCwgMTAsIDEsIDEwNiwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAyMDYsIDU2LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDYsIDU2LCA0NiwgMTgsIDEwLCAxLCAyMjksIDc2LCAyMjAsIDc0LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMjksIDc2LCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAxLCAyMjksIDc2LCAyMDIsIDIxNCwgNjQsIDE4LCAxMCwgMSwgMjI5LCAKLSAgICA3NiwgMjAyLCAyMTQsIDQ2LCAxOCwgMTAsIDEsIDE4OCwgNjQsIDE4LCAxMCwgMSwgMTg4LCA0NiwgMTgsIDEwLCAxLCAxODgsIAotICAgIDgxLCAxOCwgMTAsIDEsIDE4OCwgMTc0LCAxOCwgMTAsIDEsIDIwNywgMTYsIDIyOSwgMjA1LCAyMjksIDc2LCAxMzcsIDIyNSwgCi0gICAgMTMwLCA4MSwgMTgsIDEwLCAxLCAyMDcsIDE2LCAyMjksIDIwNSwgMjI5LCA3NiwgMTM3LCAyMjUsIDEzMCwgMTc0LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAKLSAgICAzLCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDExMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTEwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgMjA0LCA3MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwNCwgNzEsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMDYsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMDYsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDc0LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIzNywgMTI4LCA4NywgMywgMjIwLCA3NCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIwMiwgCi0gICAgMjE0LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAyMTQsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODgsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODgsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxODgsIDgxLCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDgxLCAxOCwgMTAsIDEsIDI0MCwgNzUsIAotICAgIDg5LCA2NCwgMTgsIDEwLCAxLCAyNDAsIDc1LCA4OSwgNDYsIDE4LCAxMCwgMSwgMjQwLCA3NSwgODksIDgxLCAxOCwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAxNzQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4NCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE4NCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIAotICAgIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAxODQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMDksIDg5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDg5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAKLSAgICAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTUxLCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjI5LCAxNDEsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNCwgMTYyLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTQsIDE2MiwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIAotICAgIDI5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCi0gICAgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIAotICAgIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIwMiwgMTExLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDI1MSwgNjAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIzOCwgMTE1LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgCi0gICAgNDgsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCAKLSAgICA0OCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjQwLCA0OCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAKLSAgICAxMjAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyMTcsIDEyMCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIAotICAgIDIzLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAKLSAgICAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDY0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAKLSAgICAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMzAsIAotICAgIDIzLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgODksIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDgzLCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAotICAgIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjI5LCAKLSAgICAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIAotICAgIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDE4NCwgNjQsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMTAxLCAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgMjE2LCAxMjMsIAotICAgIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAxMzcsIDIyNSwgMTMwLCAzLCAyMTAsIDE5OSwgMTM3LCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAxNzEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIyOCwgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0MCwgNzIsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIAotICAgIDE3MywgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDIyOSwgMjMwLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgCi0gICAgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIxNiwgMTIzLCA0NiwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAKLSAgICAxMjgsIDg3LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMSwgMTc5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjQ4LCAxMzksIDMsIDIwMiwgMTA4LCA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDgzLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjQ4LCAxMzksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDEzNywgMjI1LCAxMzAsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjE2LCAxMjMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIAotICAgIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAKLSAgICAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAKLSAgICAxMjAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjMwLCAyMywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgCi0gICAgMjksIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDgzLCAKLSAgICAzLCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjE2LCAxMjMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDEzNywgMjI1LCAxMzAsIAotICAgIDMsIDIxMCwgMTk5LCAxMzcsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjIxLCAxNzksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIAotICAgIDE1MSwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMzcsIAotICAgIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxODQsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIzNywgNDQsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTUxLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODMsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE1LCAyOSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjQ0LCAyMDgsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDI0NCwgMjA4LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDIsIAotICAgIDExMSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAKLSAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyNDAsIDQ4LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjE3LCAxMjAsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICA4MywgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIAotICAgIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAKLSAgICAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDIxMCwgCi0gICAgMTk5LCAxMzcsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDg5LCAKLSAgICAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgCi0gICAgMTc0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDIzNywgNDQsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIAotICAgIDIxMywgODEsIDMsIDI0MCwgNzIsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQ0LCAxNzMsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMzAsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDEzNywgMjI1LCAxMzAsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxMzcsIDIyNSwgCi0gICAgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgCi0gICAgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDE4NCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgMTM3LCAKLSAgICAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjEzLCAKLSAgICA0MCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCi0gICAgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIAotICAgIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIxNiwgMTIzLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgCi0gICAgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIAotICAgIDI1MiwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDI1MSwgNjAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIzOCwgMTE1LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDg5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDg5LCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDg5LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjE2LCAxMjMsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIzNywgNDQsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCAxNTEsIDE3NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAxNzQsIDE4LCAKLSAgICAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAxNzQsIDE4LCAxMCwgCi0gICAgMzIsIDIwMiwgMTExLCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAxMzcsIDMsIDI0MCwgNzAsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAxMzcsIDMsIDI0MCwgNzAsIDY0LCAxOCwgMjE5LCAyMzEsIDQ5LCAyMTksIDc2LCAyMTksIDIzMSwgNTAsIDIxOSwgNzYsIAotICAgIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCAzLCAKLSAgICAxODQsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgCi0gICAgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTUxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIAotICAgIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDE1MSwgMywgODMsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgCi0gICAgMTYyLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgCi0gICAgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAKLSAgICAxNjIsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgMywgMTUxLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCi0gICAgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIAotICAgIDQwLCAzLCA4MywgMywgMjI5LCAxNDEsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMywgMjI5LCAxNDEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAKLSAgICAyMDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMjksIDE0MSwgMywgODMsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgCi0gICAgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAKLSAgICAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCAxODQsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjUxLCA2MCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjUxLCA2MCwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAKLSAgICA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgNDYsIAotICAgIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4MywgCi0gICAgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDE1MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCAzLCAKLSAgICAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDIyOSwgMTQxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgMTUxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE1MSwgMywgODMsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDE1MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCAxODQsIAotICAgIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgCi0gICAgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjM3LCAKLSAgICA0NCwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMjEsIDE3OSwgMywgMTUxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgCi0gICAgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAKLSAgICAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjIxLCAxNzksIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjI5LCAKLSAgICAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIAotICAgIDE3MCwgMywgMTg0LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDEzNywgMjI1LCAKLSAgICAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgMTUxLCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIAotICAgIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAKLSAgICAyMDgsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCA4OSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICA4MywgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMjgsIDI5LCAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDMsIDg5LCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgCi0gICAgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIAotICAgIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxODQsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgMywgMTUxLCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAzLCA4MywgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgCi0gICAgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAKLSAgICAxNzksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTUsIDQsIDIwNiwgMTg4LCAyNTAsIDgyLCAyMjgsIDI1NCwgCi0gICAgMjExLCA2MiwgMiwgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTE2LCAyMDYsIDE4OCwgMjUwLCA4MiwgMjI4LCAyNTQsIDIxMSwgCi0gICAgNjIsIDIsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDEzLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA0NCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIyNCwgNTcsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDUsIDY0LCAxOCwgMTAsIDMyLCAyMTYsIDE3NCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDI1MSwgMzMsIDY0LCAxOCwgMTAsIDMyLCAyMDQsIDkwLCA2NCwgMTgsIDEwLCAzMiwgMjE1LCA0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjE1LCAzLCAyNTEsIDMzLCAyMDQsIDg5LCAxMCwgMzIsIDIzMCwgMTcyLCAyMTYsIDU2LCA1NCwgMTAsIDMyLCAyNDgsIAotICAgIDUzLCAyNTAsIDE0MiwgMjUwLCAxNDMsIDU3LCAyMTQsIDE0OSwgNTcsIDIxNCwgMzgsIDU3LCAyMTMsIDIyNiwgNTcsIDIxMywgCi0gICAgMjE1LCA1NywgMjEzLCAyMDQsIDU3LCAyMTMsIDE5MywgNTcsIDIxMywgMTgyLCA1NywgMjEzLCAxNzEsIDU3LCAyMTMsIAotICAgIDE2MCwgNTcsIDIxNCwgMTQ4LCA1NywgMjE0LCAxMzcsIDU3LCAyMTQsIDEyNiwgNTcsIDIxNCwgMTE1LCA1NywgMjE0LCAKLSAgICAxMDQsIDU3LCAyMTQsIDkzLCA1NywgMjE0LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0NSwgMjMzLCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMTM5LCAyNDUsIDIzMywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDEzOSwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDUsIDI0MiwgMjE3LCAyNDEsIDIzOSwgCi0gICAgMTU5LCAzNSwgODAsIDIxMywgMTQzLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQwLCAyMTIsIDgyLCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjE3LCA0NywgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjEsIAotICAgIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNjEsIDIyNywgMTg1LCAyNDcsIDIyNSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMzksIDMyLCA0OSwgMjM3LCAxMzcsIDM5LCAKLSAgICAzMiwgNTAsIDIzNywgMTM3LCAzOSwgNTIsIDIwOCwgMjI4LCA0OSwgMjM3LCAxMzcsIDM5LCA1MiwgMjA4LCAyMjgsIDUwLCAKLSAgICAyMzcsIDEzNywgMzksIDIyNSwgMTcxLCA0OSwgMjM3LCAxMzcsIDM5LCAyMjUsIDE3MSwgNTAsIDIzNywgMTM3LCAzOSwgCi0gICAgMjQ1LCAyMDYsIDIyNSwgMTcwLCAzOSwgMzIsIDQ5LCAxNjIsIDU2LCAzOSwgMzIsIDUwLCAxNjIsIDU2LCAzOSwgMjA4LCAKLSAgICAyMjgsIDQ5LCAxNjIsIDU2LCAzOSwgMjA4LCAyMjgsIDUwLCAxNjIsIDU2LCAzOSwgMjI1LCAxNzEsIDQ5LCAxNjIsIDU2LCAKLSAgICAzOSwgMjI1LCAxNzEsIDUwLCAxNjIsIDU2LCAzOSwgMjQ1LCAyMDYsIDIyNSwgMTcxLCA1NiwgMzksIDM2LCAyMDgsIDE5OCwgCi0gICAgNDksIDIzNywgMTM3LCAzOSwgMzYsIDIwOCwgMTk4LCA1MCwgMjM3LCAxMzcsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAKLSAgICAxMjAsIDcwLCAyMjcsIDIzMiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MSwgMTA0LCAyNDQsIDE0NCwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0MSwgOTMsIDI0NCwgMTQ0LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgCi0gICAgMTI0LCAyMjcsIDExNCwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDIwNCwgNzIsIDEyNCwgMjI3LCAxMTQsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjE5LCA3NiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyMTksIAotICAgIDc2LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDI0NSwgOTMsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgCi0gICAgODAsIDUwLCAyNDUsIDkzLCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIAotICAgIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCAyMTcsIDI0MSwgCi0gICAgMjM5LCAxNTksIDM1LCA4MCwgNDksIDYyLCAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIAotICAgIDYyLCAyMjcsIDE4NSwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDUyLCAyNTAsIDIxOCwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDUyLCAyNTAsIDIxOCwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIAotICAgIDM1LCA4MCwgNDksIDI1MCwgMjE4LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgMjUwLCAyMTgsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyNDUsIDE2NiwgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCAKLSAgICA4MCwgNTAsIDI0NSwgMTY2LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjEsIDI0NSwgMTY2LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNjEsIDI0NSwgMTY2LCAxNTUsIDIxMywgMTIxLCAyNDMsIDg1LCA2MSwgCi0gICAgMjEzLCAxMjEsIDI0MywgODUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNTEsIDE1NSwgMjE3LCAyNDEsIAotICAgIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA1MSwgMTU1LCAyNDQsIDE0MywgMjE5LCAxOTgsIDI0NiwgMjE0LCAyMTksIDE5OCwgCi0gICAgMjA0LCA3MiwgMjE5LCAxOTgsIDUyLCAyMDQsIDcyLCAyMTksIDE5OCwgMjQ0LCAxNDMsIDEyNCwgMjI3LCAxMTQsIDI0NiwgCi0gICAgMjE0LCAxMjQsIDIyNywgMTE0LCAyMDQsIDcyLCAxMjQsIDIyNywgMTE0LCA1LCAyNDUsIDIzMywgNSwgMTM5LCAyNDUsIAotICAgIDIzMywgNSwgMjM5LCAxMDIsIDIxMSwgNjEsIDUsIDIxMywgMTQzLCA1LCAyNDUsIDI0MiwgNSwgMjE3LCA0NywgODIsIDUsIAotICAgIDI0MCwgMjEyLCA4MiwgNSwgMjQxLCAxMDQsIDI0NCwgMTQ0LCA1LCA0OSwgMjE5LCA3NiwgNSwgNTAsIDIxOSwgNzYsIDUsIAotICAgIDQ5LCAyNDUsIDkzLCAxNTUsIDUsIDUwLCAyNDUsIDkzLCAxNTUsIDUsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1LCAKLSAgICA1MCwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgNSwgNDIsIDU0LCA1LCAyNTAsIDIzNSwgNSwgMjUwLCA1OSwgNSwgOTEsIAotICAgIDU0LCA1LCAyMzUsIDIxOSwgNSwgMjI3LCAxNzksIDU0LCA1LCAyMzcsIDI0NywgNTQsIDUsIDI0MSwgMzUsIDU0LCA1LCAKLSAgICAyMTYsIDc0LCAyMTIsIDAsIDUsIDI0MywgOTcsIDU0LCA1LCAyMTgsIDI0NiwgNTQsIDUsIDI0NSwgMjMxLCAyNTAsIDQ5LCAKLSAgICAxMCwgMjQwLCA3MCwgNjQsIDE4LCAxMCwgMjA5LCAyMTAsIDMsIDI0MCwgNzAsIDU1LCAxMCwgMjQ0LCAxNzEsIDY0LCAxOCwgCi0gICAgMTAsIDIwOSwgMjQ5LCAyMzksIDEzNywgMTAsIDIyOSwgMjI4LCA2NCwgMTgsIDEwLCAyNDAsIDcyLCA2NCwgMTgsIDEwLCAKLSAgICAyNDAsIDcyLCAxNzQsIDE4LCAxMCwgMjQ0LCAxNzMsIDY0LCAxOCwgMTAsIDI0NCwgMTczLCAxNzQsIDE4LCAxMCwgMjI5LCAKLSAgICAyMzAsIDY0LCAxOCwgMTAsIDIyOSwgMjMwLCAxNzQsIDE4LCAxMCwgMjEzLCA4MSwgNjQsIDE4LCAxMCwgMjEzLCA4MSwgCi0gICAgMTc0LCAxOCwgMTAsIDIxMCwgMjIzLCA2NCwgMTgsIDEwLCAyMTAsIDIyMywgMTc0LCAxOCwgMTAsIDEsIDIzNywgMTI4LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNjQsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMjUsIDE2NiwgODcsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjA0LCA3MSwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIAotICAgIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA2NCwgMTgsIDEwLCAxLCAxMzcsIAotICAgIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNDYsIDE4LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgNDYsIDE4LCAxMCwgMSwgODksIDMsIDIzNywgMTI4LCA4NywgODEsIDE4LCAxMCwgMSwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMTc0LCAxOCwgMTAsIDEsIDEzNywgNjQsIDE4LCAxMCwgMSwgMTM3LCA0NiwgMTgsIDEwLCAKLSAgICAxLCAyNDgsIDEzOSwgNjQsIDE4LCAxMCwgMSwgMjQ4LCAxMzksIDQ2LCAxOCwgMTAsIDEsIDI0OCwgMTM5LCA4MSwgMTgsIAotICAgIDEwLCAxLCAyNDgsIDEzOSwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk5LCA2NCwgMTgsIDEwLCAxLCAyMDksIAotICAgIDE3MCwgMjI1LCA5OSwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTcwLCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMDksIDE3MCwgODEsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDg5LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyMDksIDg5LCA0NiwgMTgsIDEwLCAxLCAyMDksIDg5LCA4MSwgMTgsIDEwLCAxLCAyMDksIDg5LCAxNzQsIAotICAgIDE4LCAxMCwgMSwgMTg0LCA2NCwgMTgsIDEwLCAxLCAxODQsIDQ2LCAxOCwgMTAsIDEsIDE4NCwgODEsIDE4LCAxMCwgMSwgCi0gICAgMTg0LCAxNzQsIDE4LCAxMCwgMSwgMTUxLCA2NCwgMTgsIDEwLCAxLCAxNTEsIDQ2LCAxOCwgMTAsIDEsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMSwgMTUxLCAxNzQsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDEsIDIyOSwgMTQxLCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDE4NSwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjQ0LCAxODUsIDQ2LCAxOCwgMTAsIDEsIDIwOSwgMTAxLCA2NCwgMTgsIDEwLCAxLCAyMDksIDEwMSwgCi0gICAgNDYsIDE4LCAxMCwgMSwgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDEsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAxLCAyMDIsIAotICAgIDEwOCwgNjQsIDE4LCAxMCwgMSwgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDEsIDIxNCwgMTYyLCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMTQsIDE2MiwgNDYsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDgxLCAxOCwgMTAsIDEsIDIxNCwgMTYyLCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjEzLCA0MCwgNjQsIDE4LCAxMCwgMSwgMjEzLCA0MCwgNDYsIDE4LCAxMCwgMSwgMjEzLCA0MCwgODEsIDE4LCAxMCwgCi0gICAgMSwgMjEzLCA0MCwgMTc0LCAxOCwgMTAsIDEsIDIxNSwgMjksIDY0LCAxOCwgMTAsIDEsIDIxNSwgMjksIDQ2LCAxOCwgMTAsIAotICAgIDEsIDIxNSwgMjksIDgxLCAxOCwgMTAsIDEsIDIxNSwgMjksIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgNjQsIDE4LCAxMCwgCi0gICAgMSwgMjQ0LCAyMDgsIDQ2LCAxOCwgMTAsIDEsIDI0NCwgMjA4LCA4MSwgMTgsIDEwLCAxLCAyNDQsIDIwOCwgMTc0LCAxOCwgCi0gICAgMTAsIDEsIDIwOSwgMjUyLCA2NCwgMTgsIDEwLCAxLCAyMDksIDI1MiwgNDYsIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDgxLCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgMjUyLCAxNzQsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDY0LCAxOCwgMTAsIDEsIDIwMiwgMTExLCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMDIsIDExMSwgODEsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIDE3NCwgMTgsIDEwLCAxLCAyNTEsIAotICAgIDYwLCA2NCwgMTgsIDEwLCAxLCAyNTEsIDYwLCA0NiwgMTgsIDEwLCAxLCAyNTEsIDYwLCA4MSwgMTgsIDEwLCAxLCAyNTEsIAotICAgIDYwLCAxNzQsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDY0LCAxOCwgMTAsIDEsIDIzOCwgMTE1LCA0NiwgMTgsIDEwLCAxLCAKLSAgICAyMzgsIDExNSwgODEsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDE3NCwgMTgsIDEwLCAxLCAyNDAsIDQ4LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyNDAsIDQ4LCA0NiwgMTgsIDEwLCAxLCAyNDAsIDQ4LCA4MSwgMTgsIDEwLCAxLCAyNDAsIDQ4LCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjE3LCAxMjAsIDY0LCAxOCwgMTAsIDEsIDIxNywgMTIwLCA0NiwgMTgsIDEwLCAxLCAyMTcsIDEyMCwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjE3LCAxMjAsIDE3NCwgMTgsIDEwLCAxLCAyMzAsIDIzLCA2NCwgMTgsIDEwLCAxLCAyMzAsIDIzLCA0NiwgMTgsIAotICAgIDEwLCAxLCAyMzAsIDIzLCA4MSwgMTgsIDEwLCAxLCAyMzAsIDIzLCAxNzQsIDE4LCAxMCwgMSwgMjI4LCAyOSwgNjQsIDE4LCAKLSAgICAxMCwgMSwgMjI4LCAyOSwgNDYsIDE4LCAxMCwgMSwgMjI4LCAyOSwgODEsIDE4LCAxMCwgMSwgMjI4LCAyOSwgMTc0LCAxOCwgCi0gICAgMTAsIDEsIDgzLCA2NCwgMTgsIDEwLCAxLCA4MywgNDYsIDE4LCAxMCwgMSwgODMsIDgxLCAxOCwgMTAsIDEsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMSwgMjIxLCAxNzksIDY0LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCA0NiwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgCi0gICAgODEsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCA2NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgNjQsIDE4LCAxMCwgMSwgMjA0LCA3MSwgNDYsIDE4LCAxMCwgMSwgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMSwgMTM3LCAKLSAgICAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMSwgODksIDY0LCAxOCwgMTAsIDEsIDg5LCA0NiwgMTgsIDEwLCAxLCA4OSwgODEsIAotICAgIDE4LCAxMCwgMSwgODksIDE3NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMjUsIDE2NiwgODcsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDEzNywgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCAyNDgsIDEyNiwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTM3LCA0NiwgMTgsIDIwMiwgODUsIDIwNCwgMjQsIDIyMSwgMTkwLCAyMTEsIAotICAgIDIyOCwgMTU0LCAyNDAsIDIxMiwgODIsIDE1NCwgMjE3LCAzMSwgODIsIDE1NCwgNDIsIDU0LCAxNTQsIDI0MywgOTcsIDU0LCAKLSAgICAxNTQsIDIxOCwgMjQ2LCA1NCwgMTU0LCAyNTAsIDIzNSwgMTU0LCAyNTAsIDE2MCwgMTU0LCA0OSwgMjE5LCA3NiwgMTU0LCAKLSAgICA1MCwgMjE5LCA3NiwgMTU0LCAyNTAsIDU5LCAxNTQsIDkxLCA1NCwgMTU0LCAyNDUsIDIzMywgMTU0LCAyMzUsIDIxOSwgCi0gICAgMTU0LCAyMzksIDEwMiwgMjExLCA2MSwgMTU0LCAyMTIsIDAsIDE1NCwgMTcsIDIwMiwgODQsIDE1NCwgMTcsIDEwNSwgMTU0LCAKLSAgICAxNywgMTA4LCAxNTQsIDE3LCAxNDcsIDE1NCwgMTcsIDE0OSwgMTU0LCAxNywgMTcwLCAxNTQsIDE3LCAxOTUsIDE1NCwgMTcsIAotICAgIDIxMywgMTExLCAxNTQsIDE3LCAxOTksIDE1NCwgMTcsIDIyMiwgNjMsIDE1NCwgMjQ1LCAyNDIsIDE1NCwgMjEzLCAxNDMsIAotICAgIDE1NCwgMjI3LCAxNzksIDU0LCAxNTQsIDI0MSwgMzUsIDU0LCAxNTQsIDIzNywgMjQ3LCA1NCwgMTU0LCAyMTcsIDQ3LCA4MiwgCi0gICAgMTU0LCAyNDUsIDIzMSwgMjUwLCA0OSwgMTU0LCA4LCA2LCAxLCA2MywgMTU0LCA4LCA2LCAxLCAyNDksIDI1NSwgMTU0LCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNSwgMTU0LCA4LCA2LCAxLCAyNDUsIDUxLCAxNTQsIDgsIDYsIDEsIDc0LCAxNTQsIDgsIDYsIDEsIAotICAgIDI0MCwgMTc0LCAxNTQsIDgsIDYsIDEsIDIzOSwgNzUsIDE1NCwgOCwgNiwgMSwgMjM3LCAxNzEsIDE1NCwgOCwgNiwgMSwgCi0gICAgNzUsIDE1NCwgOCwgNiwgMSwgMjMwLCAxODQsIDE1NCwgOCwgNiwgMSwgMjMwLCA1NCwgMTU0LCA4LCA2LCAxLCAxNTksIAotICAgIDE1NCwgOCwgNiwgMSwgMjI2LCAxODUsIDE1NCwgOCwgNiwgMSwgMjIzLCAxNjMsIDE1NCwgOCwgNiwgMSwgNzgsIDE1NCwgOCwgCi0gICAgNiwgMSwgMjE5LCAxODQsIDE1NCwgOCwgNiwgMSwgMjE3LCAxMzQsIDE1NCwgOCwgNiwgMSwgMTQ2LCAxNTQsIDgsIDYsIDEsIAotICAgIDE5NCwgMTU0LCA4LCA2LCAxLCAyMTAsIDY5LCAxNTQsIDgsIDYsIDEsIDY4LCAxNTQsIDgsIDYsIDEsIDIwNiwgMTY0LCAKLSAgICAxNTQsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxNTQsIDgsIDYsIDEsIDIwMywgMTk2LCAxNTQsIDgsIDYsIDEsIDIwMywgMTI0LCAKLSAgICAxNTQsIDgsIDYsIDEsIDIwMiwgMTU5LCAxNTQsIDQ5LCA1MSwgMTU1LCAxNTQsIDIxNiwgNzQsIDIxMiwgMCwgMTU0LCA1MCwgCi0gICAgNTEsIDE1NSwgMTU0LCAyNDYsIDUzLCAyNTEsIDEzOCwgMTU0LCAxMjQsIDIyNywgMTE0LCAxNTQsIDIzNywgMjU0LCAyNTEsIAotICAgIDEzOCwgMTU0LCA4LCA1LCAxLCA2MywgMTU0LCA4LCA1LCAxLCAyNDksIDI1NSwgMTU0LCA4LCA1LCAxLCAyNDcsIDEyNSwgCi0gICAgMTU0LCA4LCA1LCAxLCAyNDUsIDUxLCAxNTQsIDgsIDUsIDEsIDc0LCAxNTQsIDgsIDUsIDEsIDI0MCwgMTc0LCAxNTQsIDgsIAotICAgIDUsIDEsIDIzOSwgNzUsIDE1NCwgOCwgNSwgMSwgMjM3LCAxNzEsIDE1NCwgOCwgNSwgMSwgNzUsIDE1NCwgOCwgNSwgMSwgCi0gICAgMjMwLCAxODQsIDE1NCwgOCwgNSwgMSwgMjMwLCA1NCwgMTU0LCA4LCA1LCAxLCAxNTksIDE1NCwgOCwgNSwgMSwgMjI2LCAKLSAgICAxODUsIDE1NCwgOCwgNSwgMSwgMjIzLCAxNjMsIDE1NCwgOCwgNSwgMSwgNzgsIDE1NCwgOCwgNSwgMSwgMjE5LCAxODQsIAotICAgIDE1NCwgOCwgNSwgMSwgMjE3LCAxMzQsIDE1NCwgOCwgNSwgMSwgMTQ2LCAxNTQsIDgsIDUsIDEsIDE5NCwgMTU0LCA4LCA1LCAKLSAgICAxLCAyMTAsIDY5LCAxNTQsIDgsIDUsIDEsIDY4LCAxNTQsIDgsIDUsIDEsIDIwNiwgMTY0LCAxNTQsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ0LCAxNTQsIDgsIDUsIDEsIDIwMywgMTk2LCAxNTQsIDgsIDUsIDEsIDIwMywgMTI0LCAxNTQsIDgsIDUsIDEsIDIwMiwgCi0gICAgMTU5LCAxNTQsIDQ5LCAyNDUsIDkzLCAxNTUsIDE1NCwgODAsIDIyNywgMTE0LCAxNTQsIDUwLCAyNDUsIDkzLCAxNTUsIAotICAgIDE1NCwgMjA4LCAyMjcsIDE1NCwgNDksIDYxLCAyMTksIDc2LCAxNTQsIDUwLCA2MSwgMjE5LCA3NiwgMTI3LCAxMzksIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCAxMjcsIDQ5LCAyNDUsIDE2NiwgMTU1LCAxMjcsIDUwLCAyNDUsIDE2NiwgMTU1LCAxMjcsIDEzOSwgCi0gICAgMjQ1LCAyMzMsIDEyNywgNjcsIDEwMSwgMjQzLCA4NSwgMTI3LCA2NywgMSwgMjA0LCAwLCAxMjcsIDY3LCAxLCA1LCA2MywgCi0gICAgMTI3LCA2NywgMSwgNSwgNzUsIDEyNywgNjcsIDEsIDUsIDY4LCAxMjcsIDY3LCAxLCA1LCA3NCwgMTI3LCA2NywgMSwgNSwgCi0gICAgNzgsIDEyNywgNjcsIDEsIDUsIDE5OCwgMTI3LCA2NywgMSwgNSwgMjAyLCAyMTMsIDEyNywgNjcsIDEsIDUsIDIwMiwgMjQ3LCAKLSAgICAxMjcsIDY3LCAxLCA1LCAyMDcsIDIwMywgMTI3LCAyMjksIDIyNSwgMjE3LCAyMTUsIDIxMSwgMjQxLCA4MiwgMTI3LCA2NywgCi0gICAgMSwgNjMsIDEyNywgNjcsIDEsIDc1LCAxMjcsIDY3LCAxLCA2OCwgMTI3LCA2NywgMSwgNzQsIDEyNywgNjcsIDEsIDc4LCAKLSAgICAxMjcsIDY3LCAxLCAxNzMsIDEyNywgNjcsIDEsIDIyOSwgMTAwLCAxMjcsIDY3LCAxLCAyMjgsIDIwOSwgMTI3LCA2NywgMSwgCi0gICAgMjI5LCAyMDEsIDEyNywgNjcsIDEsIDIyOSwgMjYsIDEyNywgNjcsIDEsIDIxNSwgMzYsIDEyNywgNjcsIDEsIDIxMiwgMTYyLCAKLSAgICAxMjcsIDY3LCAxLCAyMTEsIDEwLCAxMjcsIDY3LCAxLCAyMTQsIDE3NywgMTI3LCA2NywgMSwgMjEyLCAxMywgMTI3LCA2NywgCi0gICAgMSwgMjEwLCAyMiwgMTI3LCA2NywgMSwgMjA5LCAyLCAxMjcsIDY3LCAxLCAyMDcsIDIwMywgMTI3LCA2NywgMSwgMjA5LCAKLSAgICAxODcsIDEyNywgNjcsIDEsIDEzNSwgMTI3LCA2NywgMSwgMjAxLCAyMDEsIDEyNywgNjcsIDEsIDIyMiwgMTAwLCAxMjcsIAotICAgIDY3LCAxLCAyMjEsIDg0LCAxMjcsIDY3LCAxLCAyMjIsIDI0MCwgMTI3LCA2NywgMSwgMjIxLCAxOTEsIDEyNywgNjcsIDEsIAotICAgIDE1MiwgMTI3LCA2NywgMSwgMjM3LCAzLCAxMjcsIDY3LCAxLCAyMzYsIDI2LCAxMjcsIDY3LCAxLCAyMzcsIDY3LCAxMjcsIAotICAgIDY3LCAxLCAyMzYsIDEzNiwgMTI3LCA2NywgMSwgMTkyLCAxMjcsIDY3LCAxLCAyMjQsIDE1NSwgMTI3LCA2NywgMSwgMjIzLCAKLSAgICAyNDYsIDEyNywgNjcsIDEsIDIyNSwgMjAsIDEyNywgNjcsIDEsIDIyNCwgODIsIDEyNywgNjcsIDEsIDE5OCwgMTI3LCA2NywgCi0gICAgMSwgMjAyLCAyMTMsIDEyNywgNjcsIDEsIDIwMiwgMjQ3LCAxMjcsIDY3LCAxLCAyMTYsIDIyMCwgMTI3LCA2NywgMSwgMjE2LCAKLSAgICA1NywgMTI3LCA2NywgMSwgMjE1LCAxNDUsIDEyNywgNjcsIDEsIDIxNiwgMTU4LCAxMjcsIDY3LCAxLCAyMTUsIDIyNywgCi0gICAgMTI3LCA2NywgMSwgMjA0LCAxMTEsIDEyNywgNjcsIDEsIDIyMywgMTYzLCAxMjcsIDY3LCAyMDUsIDE4NiwgMjExLCAyNDEsIAotICAgIDgyLCAxMjcsIDY3LCAyMTMsIDE0OCwgMjExLCAyNDEsIDgyLCAxMjcsIDI4LCAyNDAsIDcsIDEyNywgMjgsIDEsIDIyOSwgCi0gICAgNTksIDEyNywgMjgsIDEsIDIxMSwgMTU2LCAxMjcsIDI4LCAxLCAyMjksIDUyLCAxMjcsIDI4LCAxLCAyMjIsIDkzLCAxMjcsIAotICAgIDI4LCAxLCAyMjIsIDkxLCAxMjcsIDI4LCAxLCAyMjIsIDkwLCAxMjcsIDI4LCAxLCAyMDgsIDI0MCwgMTI3LCAyOCwgMSwgCi0gICAgMjExLCAxNDUsIDEyNywgMjgsIDEsIDIxNiwgNDcsIDEyNywgMjgsIDEsIDIxNiwgNDIsIDEyNywgMjgsIDEsIDIxNiwgMzksIAotICAgIDEyNywgMjgsIDEsIDIxNiwgMzIsIDEyNywgMjgsIDEsIDIxNiwgMjcsIDEyNywgMjgsIDEsIDIxNiwgMjIsIDEyNywgMjgsIAotICAgIDEsIDIxNiwgMzMsIDEyNywgMjgsIDEsIDIxNiwgNDUsIDEyNywgMjgsIDEsIDIyNCwgMTQxLCAxMjcsIDI4LCAxLCAyMTgsIAotICAgIDE1MywgMTI3LCAyOCwgMSwgMjExLCAxNTMsIDEyNywgMjgsIDEsIDIxOCwgMTQyLCAxMjcsIDI4LCAxLCAyMTIsIDExMSwgCi0gICAgMTI3LCAyOCwgMSwgMjExLCAxNTAsIDEyNywgMjgsIDEsIDIzMSwgMTA2LCAxMjcsIDI4LCAxLCAyNDYsIDc0LCAxMjcsIDI4LCAKLSAgICAxLCAyMTEsIDE2MCwgMTI3LCAyOCwgMSwgMjQ2LCAxMzgsIDEyNywgMjgsIDEsIDIyOSwgMTIwLCAxMjcsIDI4LCAxLCAyMDksIAotICAgIDY2LCAxMjcsIDI4LCAxLCAyMTgsIDE5MCwgMTI3LCAyOCwgMSwgMjM2LCAyNTEsIDEyNywgMjgsIDEsIDYzLCAxMjcsIDI4LCAKLSAgICAxLCAyNTEsIDEwOSwgMTI3LCAyOCwgMSwgMTk4LCAxMjcsIDI4LCAxLCAyMDMsIDk5LCAxMjcsIDI4LCAxLCAyNDEsIDU1LCAKLSAgICAxMjcsIDI4LCAxLCA3NCwgMTI3LCAyOCwgMSwgMjAzLCAzOSwgMTI3LCAyOCwgMSwgMjAzLCA1MiwgMTI3LCAyOCwgMSwgNzgsIAotICAgIDEyNywgMjgsIDEsIDIwNCwgMTExLCAxMjcsIDI4LCAxLCAyMDQsIDEwNywgMTI3LCAyOCwgMSwgMjIwLCA3MywgMTI3LCAyOCwgCi0gICAgMSwgMjAyLCAyNDcsIDEyNywgMjgsIDEsIDY4LCAxMjcsIDI4LCAxLCAyMDQsIDQ4LCAxMjcsIDI4LCAxLCAyMDQsIDYyLCAKLSAgICAxMjcsIDI4LCAxLCAyMDQsIDMwLCAxMjcsIDI4LCAxLCAyMDIsIDIxMywgMTI3LCAyOCwgMSwgMjQwLCAyMzgsIDEyNywgMjgsIAotICAgIDEsIDIwMywgMTEsIDEyNywgMjgsIDEsIDc1LCAxNTQsIDI0NiwgMjIwLCA1NCwgMTU0LCAyMTgsIDIwLCA1NCwgMTU0LCAKLSAgICAyMjEsIDE2NiwgNTQsIDE1NCwgMjI1LCAxNzAsIDE1NCwgMjQ3LCAyMDMsIDE0MiwgMTU0LCAyMDMsIDQzLCA1NCwgMTU0LCAKLSAgICAyMDMsIDI0NiwgNTQsIDEyNywgMjM5LCAxNTYsIDE1NywgMjA2LCAzOCwgMTI3LCA5NiwgNDcsIDEyNywgMTc3LCA0NywgCi0gICAgMTI3LCA4NiwgNDcsIDEyNywgMTgzLCA0NywgMTI3LCA2MiwgMjExLCAxNzcsIDEyNywgNjEsIDI0NiwgNjEsIDIzMCwgMjUxLCAKLSAgICAyNTAsIDIwNSwgMjUwLCAyMjgsIDIzMCwgMjUxLCAyNTAsIDIwNSwgMjEzLCAxMzAsIDIzMCwgMjUxLCAyNTAsIDIwNSwgCi0gICAgMjA5LCAxMzgsIDIyMCwgOTAsIDIxNiwgOTYsIDI0NiwgMTgyLCAyMTYsIDk2LCAyNDYsIDE4MiwgMjksIDY2LCA0LCAyNDksIAotICAgIDIzOSwgNjMsIDI5LCA2NiwgNCwgMjQ5LCAyMDgsIDc0LCAyOSwgNjYsIDQsIDI0OSwgMjE3LCA3NSwgMjksIDY2LCA0LCAKLSAgICAyNDksIDE4NSwgNzgsIDI5LCA2NiwgNCwgMjQ5LCAyMzUsIDY4LCAyOSwgNjYsIDQsIDI0OSwgMjU0LCAyNDQsIDIxMiwgMjksIAotICAgIDY2LCA0LCAyNDksIDIwMSwgMjQ0LCA3NSwgMjksIDY2LCA0LCAyNDksIDI0MSwgMjQzLCAyMzMsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAyMzEsIDI0MywgMTEzLCAyOSwgNjYsIDQsIDI0OSwgMTk1LCAyNDIsIDQyLCAyOSwgNjYsIDQsIDI0OSwgMTg5LCAyMzAsIAotICAgIDE4MSwgMjksIDY2LCA0LCAyNDksIDIwMCwgMjMwLCAxNjEsIDI5LCA2NiwgNCwgMjQ5LCAyMTAsIDIzMCwgMTAxLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMTgxLCAyMzAsIDgyLCAyOSwgNjYsIDQsIDI0OSwgMTY5LCAxNzMsIDI5LCA2NiwgNCwgMjQ5LCAyMDIsIAotICAgIDIyOSwgMjAxLCAyOSwgNjYsIDQsIDI0OSwgMTc5LCAyMjksIDEwMCwgMjksIDY2LCA0LCAyNDksIDE3NiwgMjI5LCAyNiwgCi0gICAgMjksIDY2LCA0LCAyNDksIDE2NSwgMjI4LCAyMDksIDI5LCA2NiwgNCwgMjQ5LCAxNjYsIDE5MiwgMjksIDY2LCA0LCAyNDksIAotICAgIDIzMiwgMjI1LCAyMCwgMjksIDY2LCA0LCAyNDksIDE3MywgMjI0LCAxNTUsIDI5LCA2NiwgNCwgMjQ5LCAyMzAsIDIyNCwgCi0gICAgODIsIDI5LCA2NiwgNCwgMjQ5LCAyMjIsIDIyMywgMjQ2LCAyOSwgNjYsIDQsIDI0OSwgMjQzLCAyMDEsIDIwMSwgMjksIDY2LCAKLSAgICA0LCAyNDksIDIyMSwgMjIyLCAyNDAsIDI5LCA2NiwgNCwgMjQ5LCAyMTUsIDIyMiwgMTAwLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMTk0LCAyMjEsIDE5MSwgMjksIDY2LCA0LCAyNDksIDE5MSwgMjIxLCA4NCwgMjksIDY2LCA0LCAyNDksIDI1MCwgMTg1LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMTc0LCAyMTksIDM0LCAyOSwgNjYsIDQsIDI0OSwgMjA3LCAyMTgsIDE2NywgMjksIDY2LCA0LCAKLSAgICAyNDksIDIzNCwgMjE4LCA2OSwgMjksIDY2LCA0LCAyNDksIDE5NiwgMjE3LCAxOTEsIDI5LCA2NiwgNCwgMjQ5LCAyMjksIAotICAgIDIxNywgMTI2LCAyOSwgNjYsIDQsIDI0OSwgMTY4LCAyMTcsIDEwNiwgMjksIDY2LCA0LCAyNDksIDIyNCwgMjE3LCA4OCwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIxMywgMjE3LCA3NywgMjksIDY2LCA0LCAyNDksIDE4NiwgMjE2LCAyMjAsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAyMTgsIDIxNiwgMTU4LCAyOSwgNjYsIDQsIDI0OSwgMTkzLCAyMTYsIDU3LCAyOSwgNjYsIDQsIDI0OSwgMjUyLCAKLSAgICAyMTUsIDIyNywgMjksIDY2LCA0LCAyNDksIDIxOSwgMjE1LCAxNDUsIDI5LCA2NiwgNCwgMjQ5LCAyMTQsIDIxNSwgMzYsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAyMzcsIDIxNCwgMTc3LCAyOSwgNjYsIDQsIDI0OSwgMjA1LCAyMTIsIDE2MiwgMjksIDY2LCA0LCAKLSAgICAyNDksIDIzMywgMjEyLCAxMywgMjksIDY2LCA0LCAyNDksIDE4OCwgMjExLCAxMCwgMjksIDY2LCA0LCAyNDksIDE4NywgCi0gICAgMjEwLCAyMiwgMjksIDY2LCA0LCAyNDksIDI0OCwgMjA5LCAxODcsIDI5LCA2NiwgNCwgMjQ5LCAyMDksIDIwOSwgMiwgMjksIAotICAgIDY2LCA0LCAyNDksIDI0NiwgMTM1LCAyOSwgNjYsIDQsIDI0OSwgMTc3LCAyMDcsIDIwMywgMjksIDY2LCA0LCAyNDksIDE5MiwgCi0gICAgMjA0LCAxMTEsIDI5LCA2NiwgNCwgMjQ5LCAxNzEsIDIwNCwgNjIsIDI5LCA2NiwgNCwgMjQ5LCAyMDYsIDIwNCwgMzAsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAyMDQsIDIwNCwgMCwgMjksIDY2LCA0LCAyNDksIDIyOCwgMjAyLCAxMTYsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAxNzIsIDIwMiwgOTIsIDI5LCA2NiwgNCwgMjQ5LCAyMjUsIDIwMiwgMTcsIDI5LCA2NiwgNCwgMjQ5LCAyMjAsIDI1NCwgMzQsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAyMDMsIDI1MywgMTc4LCAyOSwgNjYsIDQsIDI0OSwgMTYyLCAyNTAsIDM0LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMTc1LCAyNDIsIDksIDI5LCA2NiwgNCwgMjQ5LCAxNTgsIDI0MiwgOCwgMjksIDY2LCA0LCAyNDksIDE5OCwgMjIxLCAKLSAgICAyMCwgMjksIDY2LCA0LCAyNDksIDIxNiwgMjE3LCAxODksIDI5LCA2NiwgNCwgMjQ5LCAxODQsIDIxNywgMTkzLCAyOSwgNjYsIAotICAgIDQsIDI0OSwgMTcwLCAyMTYsIDIxOCwgMjksIDY2LCA0LCAyNDksIDIxMiwgMjE2LCAyMTcsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAxNzgsIDIxNSwgMjI2LCAyOSwgNjYsIDQsIDI0OSwgMTgwLCAyMTAsIDE5LCAyOSwgNjYsIDQsIDI0OSwgMTYwLCAyMDcsIAotICAgIDE1OCwgMjksIDY2LCA0LCAyNDksIDE1NywgMTA4LCAyOSwgNjYsIDE2LCAyNDksIDIyNywgMjksIDY2LCAxNiwgMjQ5LCAKLSAgICAyMjYsIDI5LCA2NiwgMTYsIDI0OSwgMjIzLCAyOSwgNjYsIDE2LCAyNDksIDIxMSwgMjksIDY2LCAxNiwgMjQ5LCAxOTksIAotICAgIDI5LCA2NiwgMTYsIDI0OSwgMTk3LCAyOSwgNjYsIDE2LCAyNDksIDE5MCwgMjksIDY2LCAxNiwgMjQ5LCAxODMsIDI5LCA2NiwgCi0gICAgMTYsIDI0OSwgMTgyLCAyOSwgNjYsIDE2LCAyNDksIDE2NywgMjksIDY2LCAxNiwgMjQ5LCAxNjQsIDI5LCA2NiwgMTYsIAotICAgIDI0OSwgMTYzLCAyOSwgNjYsIDE2LCAyNDksIDE2MSwgMjksIDY2LCAxNiwgMjQ5LCAxNTksIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDE1NiwgMjI1LCAxMjIsIDI5LCA2NiwgMTMzLCAyNDksIDE1NSwgMjAzLCAyNTAsIDI5LCA2NiwgMTMzLCAyNDksIDE1NCwgCi0gICAgMjQ0LCA1OCwgMjksIDY2LCAxMzMsIDI0OSwgMTUzLCAyNDEsIDMyLCAyOSwgNjYsIDEzMywgMjQ5LCAxNTIsIDIyNSwgOTMsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDE1MSwgMjExLCAxMDEsIDI5LCA2NiwgMTMzLCAyNDksIDE1MCwgMjQwLCAyMTksIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDE0OSwgMjE2LCAxODQsIDI5LCA2NiwgMTMzLCAyNDksIDE0OCwgMjEzLCA0MiwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTQ3LCAyMzcsIDY2LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDYsIDIxMSwgMjM1LCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICAxNDUsIDI0OCwgMjEsIDI5LCA2NiwgMTMzLCAyNDksIDE0NCwgMjQ1LCAxNDksIDI5LCA2NiwgMTMzLCAyNDksIDE0MywgCi0gICAgMjQ3LCAxNzksIDI5LCA2NiwgMTMzLCAyNDksIDE0MiwgMjA0LCAzOCwgMjksIDY2LCAxMzMsIDI0OSwgMTQxLCAyNDgsIAotICAgIDIyNywgMjksIDY2LCAxMzMsIDI0OSwgMTQwLCAyMjAsIDQxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzksIDIxMSwgMjA3LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMzgsIDI0NSwgNTksIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzcsIDIyOSwgMjQ5LCAyOSwgNjYsIAotICAgIDIyNCwgNDUsIDI0OSwgMTM2LCAyMzAsIDIsIDI5LCA2NiwgMTMzLCAyNDksIDEzNSwgMjIwLCA1NSwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTM0LCAyMDQsIDEyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzMsIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzIsIDI1MCwgCi0gICAgMTE5LCAyOSwgNjYsIDIyNCwgNDUsIDI0OSwgMTMxLCAyMjQsIDIzMiwgMjksIDY2LCAxMzMsIDI0OSwgMTMwLCAyNDcsIAotICAgIDIwMiwgMjksIDY2LCAxMzMsIDI0OSwgMTI5LCAyMzgsIDMxLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjgsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDEyNywgMjAzLCAyNDEsIDI5LCA2NiwgMTMzLCAyNDksIDEyNiwgMjksIDY2LCAxMzMsIDI0OSwgMTI1LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMjQsIDIzNiwgNTMsIDI5LCA2NiwgMTMzLCAyNDksIDEyMywgMjksIDY2LCAxMzMsIDI0OSwgMTIyLCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAxMjEsIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMTksIDIwNywgMTcyLCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICAxMTgsIDI5LCA2NiwgMTMzLCAyNDksIDExNywgMjksIDY2LCAxMzMsIDI0OSwgMTE2LCAyNDYsIDEwLCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMTUsIDI5LCA2NiwgMTMzLCAyNDksIDExNCwgMjksIDY2LCAxMzMsIDI0OSwgMTEzLCAyMzgsIDIyMSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTEyLCAyNTAsIDEwNiwgMjksIDY2LCAxMzMsIDI0OSwgMTExLCAyOSwgNjYsIDEzMywgMjQ5LCAxMTAsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDEwOSwgMjksIDY2LCAxMzMsIDI0OSwgMTA4LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDcsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEwNiwgMjksIDY2LCAxMzMsIDI0OSwgMTA1LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDQsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDEwMywgMjksIDY2LCAxMzMsIDI0OSwgMTAyLCAyMjQsIDM3LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDEsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEwMCwgMjA4LCA5NSwgMjksIDY2LCAxMzMsIDI0OSwgOTksIDI5LCA2NiwgMTMzLCAyNDksIDk4LCAKLSAgICAyOSwgNjYsIDEzMywgMjQ5LCA5NywgMjksIDY2LCAxMzMsIDI0OSwgOTYsIDI5LCA2NiwgMTMzLCAyNDksIDk1LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCA5NCwgMjksIDY2LCAxMzMsIDI0OSwgOTMsIDI5LCA2NiwgMTMzLCAyNDksIDkyLCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCA5MSwgMjksIDY2LCAxMzMsIDI0OSwgOTAsIDI5LCA2NiwgMTMzLCAyNDksIDg5LCAyOSwgNjYsIDEzMywgMjQ5LCAKLSAgICA4OCwgMjM3LCAzNSwgMjksIDY2LCAxMzMsIDI0OSwgNjcsIDIzOSwgMTY4LCAyOSwgNjYsIDEzMywgMjQ5LCA2NCwgMjQ4LCAKLSAgICAyMDQsIDI5LCA2NiwgMTMzLCAyNDksIDU5LCAyMTEsIDIxNCwgMjksIDY2LCAxMzMsIDI0OSwgNTgsIDQ3LCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCA1NywgMjksIDY2LCAxMzMsIDI0OSwgNTYsIDIxMCwgMTU1LCAyOSwgNjYsIDEzMywgMjQ5LCA1NSwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgNTQsIDI5LCA2NiwgMTMzLCAyNDksIDUzLCAyMDQsIDM0LCAyNDYsIDE3OSwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgNTIsIDI0NiwgMTc5LCAyOSwgNjYsIDEzMywgMjQ5LCA1MSwgMjQ2LCAxODAsIDIzOSwgMTM0LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCA1MCwgMjA0LCAzNiwgMjksIDY2LCAxMzMsIDI0OSwgNDksIDI5LCA2NiwgMTMzLCAyNDksIDQ4LCAyOSwgNjYsIAotICAgIDIyNCwgNDUsIDI0OSwgNDcsIDI0MywgMTY4LCAyOSwgNjYsIDEzMywgMjQ5LCA0NiwgMjksIDY2LCAxMzMsIDI0OSwgNDUsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDQzLCAyOSwgNjYsIDEzMywgMjQ5LCA0MiwgMjksIDY2LCAxMzMsIDI0OSwgNDEsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDQwLCAyNDQsIDE0NywgMjksIDY2LCAxMzMsIDI0OSwgMzksIDI5LCA2NiwgMTMzLCAyNDksIDM4LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCAzNywgMjksIDY2LCAxMzMsIDI0OSwgMzYsIDI5LCA2NiwgMTMzLCAyNDksIDM1LCAyOSwgNjYsIAotICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgMTIwLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODcsIDI5LCA2NiwgMTMzLCAKLSAgICAyMDUsIDI0MSwgMjQ5LCA4NiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDg1LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIAotICAgIDI0OSwgODQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MywgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgyLCAKLSAgICAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODEsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MCwgMjksIDY2LCAKLSAgICAxMzMsIDIwNSwgMjQxLCAyNDksIDc5LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzgsIDI5LCA2NiwgMTMzLCAyMDUsIAotICAgIDI0MSwgMjQ5LCA3NywgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgCi0gICAgNzUsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDczLCAyOSwgCi0gICAgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzIsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MSwgMjksIDY2LCAxMzMsIAotICAgIDIwNSwgMjQxLCAyNDksIDcwLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjksIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgCi0gICAgMjQ5LCA2OCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDY2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjUsIAotICAgIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MywgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYyLCAyOSwgNjYsIAotICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgNjEsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MCwgMjksIDY2LCAxMzMsIDIwNSwgCi0gICAgMjQxLCAyNDksIDQ0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgMzQsIDI1MSwgMTAyLCAyMDMsIDIzOCwgMjEzLCAKLSAgICAxMzEsIDIyNywgMTE0LCAyNTEsIDEwMiwgMjAzLCAyMzgsIDIxMywgMTMxLCAyNDMsIDg1LCAyNTEsIDEwMiwgMjQ2LCAxNjksIAotICAgIDgyLCAyNTEsIDEwMiwgNDIsIDEwNSwgMjUxLCAxMDIsIDQyLCAxMDgsIDI1MSwgMTAyLCA0MiwgMTQ3LCAyNTEsIDEwMiwgCi0gICAgNDIsIDE0OSwgMjUxLCAxMDIsIDQyLCAxNzAsIDI1MSwgMTAyLCA0MiwgMTk1LCAyNTEsIDEwMiwgNDIsIDIxMywgMTExLCAKLSAgICAyNTEsIDEwMiwgNDIsIDE5OSwgMjUxLCAxMDIsIDQyLCAyMjIsIDYzLCAyNTEsIDEwMiwgNDIsIDIwOSwgMTUyLCAyNTEsIAotICAgIDEwMiwgNDIsIDIwNywgMTUxLCAyNTEsIDEwMiwgNDIsIDIwOSwgNTMsIDI1MSwgMTAyLCA0MiwgMjM5LCAxNTMsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjQwLCAxOCwgMjUxLCAxMDIsIDQyLCAyMTIsIDc0LCAyNTEsIDEwMiwgNDIsIDIxMywgMTA1LCAyNTEsIAotICAgIDEwMiwgNDIsIDI0MSwgMTM0LCAyNTEsIDEwMiwgNDIsIDIyMiwgNTgsIDI1MSwgMTAyLCA0MiwgMTE4LCAyMzYsIDExLCAKLSAgICAyNTEsIDEwMiwgNDIsIDEyMCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAxMjYsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgCi0gICAgMjM5LCAxNDcsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMjEyLCAKLSAgICA4OCwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyNDEsIDE0MywgCi0gICAgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDExOCwgMjA5LCAzNiwgMjUxLCAKLSAgICAxMDIsIDQyLCAxMjAsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMTI2LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIzOSwgCi0gICAgMTQ3LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIzOSwgMjMzLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMiwgODgsIAotICAgIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTIsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQxLCAxNDMsIDIwOSwgCi0gICAgMzYsIDI1MSwgMTAyLCA0MiwgMjIyLCA2NCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMjUxLCAKLSAgICAxMDIsIDQyLCAyMDcsIDE1MiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMDksIDU0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIAotICAgIDIzOSwgMTU0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MCwgMTksIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEyLCA3NSwgCi0gICAgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTMsIDEwNiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDEsIDEzNSwgMjA5LCAKLSAgICAzNiwgMjUxLCAxMDIsIDQyLCAyMjIsIDU5LCAyMDksIDM2LCAyNTEsIDEwMiwgMjA0LCA1MSwgMjQ4LCAyMTksIDIwNiwgCi0gICAgMjM1LCAyNTEsIDEwMiwgMjA0LCA1MSwgMjM5LCAyNDUsIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjE0LCAxNzEsIAotICAgIDIxMCwgMjQwLCAyNTEsIDEwMiwgMjA0LCA1MSwgMjA5LCA2MSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMzksIAotICAgIDE0MCwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyNDIsIDQ1LCAyMjUsIDE5LCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAKLSAgICAyMjcsIDk1LCAyMjUsIDE5LCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMjUsIDE5LCAyMTQsIDE3MSwgMjEwLCAKLSAgICAyNDAsIDI1MSwgMTAyLCAyMjUsIDE5LCAyMDksIDYxLCAyMTAsIDI0MCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIAotICAgIDIxNywgNTUsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzcsIDEzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAKLSAgICAxMTgsIDI0MiwgNjUsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTcwLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTgsIAotICAgIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIzNiwgMTEsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAKLSAgICAyMzMsIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNTAsIAotICAgIDM2LCAyMzksIDIzMywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIwOSwgMjM3LCAzMCwgCi0gICAgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjM2LCAKLSAgICAxMiwgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIwOSwgMjM3LCAzMCwgCi0gICAgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjA5LCAzNywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAKLSAgICAyMzMsIDIwOSwgMzcsIDIwOSwgMjM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIzOSwgMjMzLCAyMTEsIDg4LCAzMCwgCi0gICAgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDI0MCwgMTksIAotICAgIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzYsIDEyLCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDIzOSwgMjMzLCAyMzYsIDEyLCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgMjA5LCAzNywgMjExLCAKLSAgICA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjA5LCAzNywgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIAotICAgIDM2LCAyNDAsIDE5LCAyMDksIDM3LCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMjQsIDg1LCAKLSAgICAzMCwgMjUxLCAxMjksIDIzNywgMjksIDExOCwgMjE4LCA4NiwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMDUsIDMwLCAyNTEsIAotICAgIDEyOSwgMjM3LCAyNSwgMTA1LCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDEwOCwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAKLSAgICAxMDgsIDMwLCAyNTEsIDEyOSwgMjQ1LCA1NiwgMTIwLCAyNDIsIDY0LCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDEyMCwgCi0gICAgMjQyLCA2NCwgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAxNzAsIDMwLCAyNTEsIDEyOSwgMjA4LCA2MSwgMjA5LCAxNTIsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA4LCA2MSwgMjA5LCAxNTMsIDI1MCwgMjU1LCAxOCwgMzAsIDI1MSwgMTI5LCAyMzcsIDI1LCAyMDksIAotICAgIDE1MiwgMzAsIDI1MSwgMTI5LCAyMjQsIDIyMiwgMjA5LCAxNTIsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjA5LCAxNTIsIAotICAgIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMjA5LCA1MywgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAyNDAsIDE4LCAzMCwgMjUxLCAKLSAgICAxMjksIDIwOCwgNjEsIDI0MCwgMTksIDI1MCwgMjU1LCAxOCwgMzAsIDI1MSwgMTI5LCAyMzcsIDI1LCAyNDAsIDE4LCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOSwgNzYsIDI0MCwgMTgsIDMwLCAyNTEsIDEyOSwgMjA5LCA3NiwgMTE4LCAyMzYsIDExLCAzMCwgMjUxLCAKLSAgICAxMjksIDIwOSwgNzYsIDEyNiwgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNDEsIDQxLCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDgsIDYxLCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMzksIDIzMywgCi0gICAgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNDcsIDIxLCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyMjMsIDYwLCAKLSAgICAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMTgsIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgCi0gICAgMjA5LCA3NiwgMjM5LCAyMzMsIDIwOSwgMzYsIDMwLCAyNTEsIDEyOSwgMjQ0LCA0MCwgMjM5LCAyMzMsIDIyNCwgODUsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjExLCA0OSwgMjQwLCAxOSwgMjI0LCA4NSwgMzAsIDExOCwgMTYyLCA1NCwgMzAsIDExOCwgMTYyLCAyLCAKLSAgICAyNTAsIDI1NSwgMTgsIDMwLCAxMjAsIDIwOSwgNTgsIDU0LCAzMCwgMTI2LCAyMTcsIDU0LCA1NCwgMzAsIDIwMywgNTAsIAotICAgIDU0LCAzMCwgMjA5LCAyMzgsIDU0LCAzMCwgMjQyLCA2NiwgNTQsIDMwLCAyMjAsIDg3LCA1NCwgMzAsIDEyMCwgMjIwLCA4NiwgCi0gICAgNTQsIDMwLCAxMjYsIDIyMCwgODYsIDU0LCAzMCwgMjM5LCAxNDcsIDIyMCwgODYsIDU0LCAzMCwgMjM5LCAyMzMsIDIyMCwgCi0gICAgODYsIDU0LCAzMCwgMjI0LCAyMTYsIDU0LCAzMCwgMjI4LCAxMzksIDI0OCwgMjE5LCA1NCwgMzAsIDIyNywgODgsIDU0LCAKLSAgICAzMCwgMjE5LCAyMTMsIDU0LCAzMCwgMjAzLCAxNzMsIDU0LCAzMCwgMjUwLCA4NywgNTQsIDMwLCAyNTAsIDEwMiwgNTQsIAotICAgIDMwLCAyMzgsIDcsIDU0LCAzMCwgMjA4LCAyMywgMjQ4LCAyMTksIDU0LCAzMCwgMjAyLCA4NSwgNTQsIDMwLCAxMTgsIDIxNywgCi0gICAgNTYsIDU0LCAzMCwgMjEyLCAxMTMsIDU0LCAyMTUsIDIxMCwgMjEzLCAxMDIsIDU0LCAyMTUsIDIxMCwgMjA2LCAyNDksIDU0LCAKLSAgICAyMTUsIDIxMCwgMjEzLCAxMzUsIDU0LCAyMTUsIDIxMCwgMjEzLCAxMDAsIDU0LCAyMTUsIDIxMCwgMjQzLCAxODMsIDIxMywgCi0gICAgMTAwLCA1NCwgMjE1LCAyMTAsIDIxMiwgMTM1LCA1NCwgMjE1LCAyMTAsIDI0NCwgMzYsIDU0LCAyMTUsIDIxMCwgMjE3LCAKLSAgICAzOSwgNTQsIDIxNSwgMjEwLCAyMTMsIDExOSwgNTQsIDIxNSwgMjEwLCAyNDIsIDIzLCA1NCwgMjE1LCAyMTAsIDI1MCwgODIsIAotICAgIDU0LCAyMTUsIDIxMCwgMjQ2LCAyMTMsIDU0LCAzMCwgMTYsIDIwOSwgMjA4LCAyMTYsIDU5LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIxOSwgMjUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE4LCA3OCwgMjM3LCA2NCwgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMDksIDIxMSwgMjM3LCA2NCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDQyLCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDI0NiwgMTMzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwMywgMjUwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAotICAgIDIzNywgMzUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjM4LCAyMTMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA5LCAwLCAKLSAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDQ3LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgMjQwLCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDIxMywgOCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDYsIDQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgCi0gICAgMiwgMjI1LCAxMjEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI1LCA2OCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTQsIAotICAgIDIxMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjcsIDE0MywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDUsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAyNiwgMjE4LCA5MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDMsIDk4LCAyMTgsIAotICAgIDIwMywgMjQzLCAxNjAsIDIsIDI0NSwgMjM5LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxMiwgNDYsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgMjQ1LCAyNDAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ4LCAxNDcsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjEyLCAyNTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjM2LCA1MywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAKLSAgICAyMzcsIDEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAxNzQsIDIyNywgMjEwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAotICAgIDI0NywgMTcsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE2LCAxODQsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQxLCAKLSAgICAxODYsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQyLCA3MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDcsIDE4OCwgCi0gICAgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDE1MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTgsIDkyLCAyMDgsIDk1LCAKLSAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNSwgMjExLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOSwgOTIsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjE1LCAyMDEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjI3LCAxMjcsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgMjE5LCAxOTQsIDI0OSwgMjUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjM5LCAxOTMsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjM3LCAyNTUsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjExLCA1MCwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCA1LCAyNTAsIDksIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA0LCA3MiwgMjQ4LCAyMzgsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMzksIDIyMCwgODksIDk1LCAyMjYsIDE5NywgMSwgNjMsIDIyNiwgMTk3LCAxLCA3NCwgMjI2LCAKLSAgICAxOTcsIDEsIDI0OSwgMjU1LCAyMjYsIDE5NywgMSwgMjQ4LCA5OSwgMjI2LCAxOTcsIDEsIDIzOSwgNzUsIDIyNiwgMTk3LCAKLSAgICAxLCAyNDUsIDUxLCAyMjYsIDE5NywgMSwgNzUsIDIyNiwgMTk3LCAxLCAyMDQsIDE0NCwgMjI2LCAxOTcsIDEsIDIwMiwgCi0gICAgMTU5LCAyMjYsIDE5NywgMSwgMjA5LCAxMTAsIDIyNiwgMTk3LCAxLCAyMzAsIDE4NCwgMjI2LCAxOTcsIDEsIDIzMCwgNTQsIAotICAgIDIyNiwgMTk3LCAxLCAyMTcsIDEzNCwgMjI2LCAxOTcsIDEsIDE1OSwgMjI2LCAxOTcsIDEsIDIyNiwgMTg1LCAyMjYsIDE5NywgCi0gICAgMSwgMjIzLCAxNjMsIDIyNiwgMTk3LCAxLCAyMjQsIDg3LCAyMjYsIDE5NywgMSwgMjIxLCAyMjgsIDIyNiwgMTk3LCAxLCAKLSAgICA2OCwgMjI2LCAxOTcsIDEsIDIxOSwgMTg0LCAyMjYsIDE5NywgMSwgMjI5LCA0OCwgMjI2LCAxOTcsIDEsIDE0NiwgMjI2LCAKLSAgICAxOTcsIDEsIDE5NCwgMjI2LCAxOTcsIDEsIDIxMCwgNjksIDIyNiwgMTk3LCAxLCAyMDcsIDI0NCwgMjI2LCAxOTcsIDEsIAotICAgIDI1MCwgMjMxLCAyMjYsIDE5NywgMSwgMjQxLCA5MiwgMjI2LCAxOTcsIDEsIDIzNywgMTcxLCAyMjYsIDE5NywgMSwgMjAzLCAKLSAgICAxOTYsIDI0NywgMzIsIDEsIDYzLCAyNDcsIDMyLCAxLCAyMTksIDE3MCwgMjQ3LCAzMiwgMSwgMjQ1LCA1MSwgMjQ3LCAzMiwgCi0gICAgMSwgMTU5LCAyNDcsIDMyLCAxLCAyMDYsIDE3NiwgMjQ3LCAzMiwgMSwgMTQ2LCAyNDcsIDMyLCAxLCAyMjcsIDIzOCwgMjQ3LCAKLSAgICAzMiwgMSwgMjU0LCAzNCwgMjQ3LCAzMiwgMSwgMjE3LCAxMzQsIDI0NywgMzIsIDEsIDI0OSwgMjU1LCAyNDcsIDMyLCAxLCAKLSAgICAyMjYsIDE4NSwgMjQ3LCAzMiwgMSwgNzgsIDI0NywgMzIsIDEsIDI0NCwgMjE0LCAyNDcsIDMyLCAxLCAyMTAsIDY5LCAyNDcsIAotICAgIDMyLCAxLCAyMTMsIDkyLCAyNDcsIDMyLCAxLCAyMTMsIDkxLCAyNDcsIDMyLCAxLCAxOTQsIDI0NywgMzIsIDEsIDI0NywgCi0gICAgMTI0LCAyNDcsIDMyLCAxLCA2OCwgMjQ3LCAzMiwgMSwgMjIxLCAyMjgsIDI0NywgMzIsIDEsIDIwMywgMTk2LCAyNDcsIDMyLCAKLSAgICAxLCAyMjMsIDE2MywgMjQ3LCAzMiwgMSwgMjA3LCAyNDMsIDI0NywgMzIsIDEsIDIxOSwgMTg0LCAyNDcsIDMyLCAxLCAyMTEsIAotICAgIDE2NywgMjQ3LCAzMiwgMSwgNzUsIDI0NywgMzIsIDEsIDc0LCAyNDcsIDMyLCAxLCAyMDYsIDE3MywgMjQ3LCAzMiwgMSwgCi0gICAgMjMwLCA1NCwgMjQ3LCAzMiwgMSwgMjMwLCA0NSwgMjQ3LCAzMiwgMSwgMjIzLCAyNywgMjQ3LCAzMiwgMSwgMjA2LCAxNzgsIAotICAgIDI0NywgMzIsIDEsIDIzOSwgNzUsIDI0NywgMzIsIDEsIDIzOSwgMTAsIDI0NywgMzIsIDEsIDIxMSwgMTA4LCAyNDcsIDMyLCAKLSAgICAxLCAyMTEsIDEwNywgMjQ3LCAzMiwgMSwgMjIyLCAyMDUsIDI0NywgMzIsIDEsIDIzMSwgODMsIDI0NywgMzIsIDEsIDI0NywgCi0gICAgMTIzLCAyNDcsIDMyLCAxLCAyMDcsIDI0NCwgMjQ3LCAzMiwgMSwgMjA2LCAxNzUsIDI0NywgMzIsIDEsIDIxNSwgMTg2LCAKLSAgICAyNDcsIDMyLCAxLCAyMjUsIDU5LCAyNDcsIDMyLCAxLCAyMjUsIDU4LCAyNDcsIDMyLCAxLCAyMjUsIDU3LCAyNDcsIDMyLCAKLSAgICAxLCAyMjUsIDU2LCAyNDcsIDMyLCAxLCAyMjcsIDIzNywgMjQ3LCAzMiwgMSwgMjQxLCAxOTAsIDI0NywgMzIsIDEsIDIwNiwgCi0gICAgMTc0LCA4NCwgMjQxLCA0NCwgMjA5LCAzNSwgODIsIDg0LCAyNDEsIDQ0LCAxNywgMTA1LCA4NCwgMjQxLCA0NCwgMTcsIAotICAgIDEwOCwgODQsIDI0MSwgNDQsIDE3LCAxNDcsIDg0LCAyNDEsIDQ0LCAxNywgMTQ5LCA4NCwgMjQxLCA0NCwgMTcsIDE3MCwgCi0gICAgODQsIDI0MSwgNDQsIDE3LCAxOTUsIDg0LCAyNDEsIDQ0LCAxNywgMjEzLCAxMTEsIDg0LCAyNDEsIDQ0LCAxNywgMTk5LCAKLSAgICA4NCwgMjQxLCA0NCwgMTcsIDIyMiwgNjMsIDg0LCAyNDEsIDQ0LCA0MiwgMjA5LCAxNTIsIDg0LCAyNDEsIDQ0LCA0MiwgCi0gICAgMjA3LCAxNTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjA5LCA1MywgODQsIDI0MSwgNDQsIDQyLCAyMzksIDE1MywgODQsIDI0MSwgCi0gICAgNDQsIDQyLCAyNDAsIDE4LCA4NCwgMjQxLCA0NCwgNDIsIDIxMiwgNzQsIDg0LCAyNDEsIDQ0LCA0MiwgMjEzLCAxMDUsIDg0LCAKLSAgICAyNDEsIDQ0LCA0MiwgMjQxLCAxMzQsIDg0LCAyNDEsIDQ0LCA0MiwgMjIyLCA1OCwgODQsIDI0MSwgNDQsIDQyLCAxMTgsIAotICAgIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMTIwLCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDEyNiwgMjM2LCAxMSwgCi0gICAgODQsIDI0MSwgNDQsIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgCi0gICAgODQsIDI0MSwgNDQsIDQyLCAyMTIsIDg4LCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIAotICAgIDM4LCAzNywgMSwgNjMsIDM4LCAzNywgMSwgMjQ4LCAxNjIsIDM4LCAzNywgMSwgMjI5LCAyMDEsIDM4LCAzNywgMSwgMjQ0LCAKLSAgICA3NSwgMzgsIDM3LCAxLCA3NCwgMzgsIDM3LCAxLCAyMDYsIDU1LCAzOCwgMzcsIDEsIDIwMiwgOTIsIDM4LCAzNywgMSwgCi0gICAgMjM3LCA2NywgMzgsIDM3LCAxLCAyMDksIDkyLCAzOCwgMzcsIDEsIDc1LCAzOCwgMzcsIDEsIDE3MywgMzgsIDM3LCAxLCAKLSAgICAyNDEsIDEyMiwgMzgsIDM3LCAxLCAyNDEsIDEwMywgMzgsIDM3LCAxLCAyNDEsIDkyLCAzOCwgMzcsIDEsIDI0MSwgNywgMzgsIAotICAgIDM3LCAxLCA3OCwgMzgsIDM3LCAxLCAyMTksIDM0LCAzOCwgMzcsIDEsIDIxMywgNDMsIDM4LCAzNywgMSwgMjI4LCAyMDksIAotICAgIDM4LCAzNywgMSwgMjQxLCAyOCwgMzgsIDM3LCAxLCAyNDEsIDE3LCAzOCwgMzcsIDEsIDIwOSwgMTg3LCAzOCwgMzcsIDEsIAotICAgIDY4LCAzOCwgMzcsIDEsIDI0MSwgMTI1LCAzOCwgMzcsIDEsIDIxOCwgMTk1LCAzOCwgMzcsIDEsIDIyOSwgMTI5LCAzOCwgCi0gICAgMzcsIDEsIDI0MSwgMTU0LCAzOCwgMzcsIDEsIDI0MSwgMTksIDM4LCAzNywgMSwgMjQ2LCAxNzAsIDM4LCAzNywgMSwgMjMxLCAKLSAgICA4MywgMzgsIDM3LCAxLCAyMDYsIDE3OCwgMzgsIDM3LCAxLCAyNDEsIDAsIDM4LCAzNywgMjIxLCA0NCwgMTA1LCAzOCwgMzcsIAotICAgIDIyMSwgNDQsIDE3MCwgMzgsIDM3LCAyMjEsIDQ0LCAyMDksIDE1MiwgMzgsIDM3LCAyMjEsIDQ0LCAyNDAsIDE4LCAyMzgsIAotICAgIDE3LCAxLCAyNTEsIDY3LCAyMzgsIDE3LCAxLCAyNDgsIDI1NSwgMjM4LCAxNywgMSwgMjM4LCA3OCwgMjM4LCAxNywgMSwgCi0gICAgMjQ0LCAxOTQsIDIzOCwgMTcsIDEsIDI1MSwgNjMsIDIzOCwgMTcsIDEsIDIxNywgMTE3LCAyMzgsIDE3LCAxLCAyMzAsIAotICAgIDE5NiwgMjM4LCAxNywgMSwgMjM3LCAxNTAsIDIzOCwgMTcsIDEsIDIwOSwgNDksIDIzOCwgMTcsIDEsIDI0MSwgMTMzLCAKLSAgICAyMzgsIDE3LCAxLCAyMjgsIDE3NiwgMjM4LCAxNywgMSwgMjI4LCA5MCwgMjM4LCAxNywgMSwgMjI1LCAxMTQsIDIzOCwgMTcsIAotICAgIDEsIDIyMywgNjIsIDIzOCwgMTcsIDEsIDIzMCwgMTU0LCAyMzgsIDE3LCAxLCAyMDYsIDE5NiwgMjM4LCAxNywgMSwgMjE5LCAKLSAgICAxNDUsIDIzOCwgMTcsIDEsIDIyMiwgNTgsIDIzOCwgMTcsIDEsIDIxNiwgMTk2LCAyMzgsIDE3LCAxLCAyMTQsIDIxNiwgCi0gICAgMjM4LCAxNywgMSwgMjA5LCAxNjYsIDIzOCwgMTcsIDEsIDIwNCwgMTAsIDIzOCwgMTcsIDEsIDI0MCwgODgsIDIzOCwgMTcsIAotICAgIDEsIDIzMSwgODcsIDIzOCwgMTcsIDEsIDIzNSwgMjUyLCAyMzgsIDE3LCAxLCAyMTksIDIyMywgMjM4LCAxNywgMSwgMjIyLCAKLSAgICA2NCwgMjM2LCAxMSwgMzgsIDIxOCwgMjM3LCAxLCAyNTAsIDIzMSwgMzgsIDIxOCwgMjM3LCAxLCAyNDcsIDE2MCwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyMzgsIDI0OCwgMzgsIDIxOCwgMjM3LCAxLCAyNDMsIDEwMSwgMzgsIDIxOCwgMjM3LCAxLCA3NCwgCi0gICAgMzgsIDIxOCwgMjM3LCAxLCAyMDIsIDYyLCAzOCwgMjE4LCAyMzcsIDEsIDI0MSwgMjQ3LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwMiwgOTksIDM4LCAyMTgsIDIzNywgMSwgMjQxLCAyNDUsIDM4LCAyMTgsIDIzNywgMSwgNzUsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjI5LCAxNSwgMzgsIDIxOCwgMjM3LCAxLCAyMjcsIDIwNiwgMzgsIDIxOCwgMjM3LCAxLCAyMjQsIDIzOCwgMzgsIDIxOCwgCi0gICAgMjM3LCAxLCAyMjIsIDIyOCwgMzgsIDIxOCwgMjM3LCAxLCAyMDUsIDE3NSwgMzgsIDIxOCwgMjM3LCAxLCAyMTksIDIyLCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIxNiwgMTIxLCAzOCwgMjE4LCAyMzcsIDEsIDIxMiwgMTQyLCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwOSwgMjUwLCAzOCwgMjE4LCAyMzcsIDEsIDY4LCAzOCwgMjE4LCAyMzcsIDEsIDI0NiwgMTUxLCAzOCwgMjE4LCAyMzcsIAotICAgIDEsIDIxMiwgMjM1LCAzOCwgMjE4LCAyMzcsIDEsIDIxMywgNDUsIDM4LCAyMTgsIDIzNywgMSwgMjAyLCAyMTUsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjAzLCAzMCwgMzgsIDIxOCwgMjM3LCAxLCA3OCwgMzgsIDIxOCwgMjM3LCAxLCAyMjAsIDE4LCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDI0MSwgMTU0LCAzOCwgMjE4LCAyMzcsIDEsIDE1MiwgMzgsIDIxOCwgMjM3LCAxLCAyMDcsIDI1NCwgCi0gICAgMzgsIDIxOCwgMjM3LCAxLCAyMDYsIDQzLCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgMzQsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCAKLSAgICAzMiwgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIDY2LCAzOCwgMjE4LCAyMzcsIDEsIDIzMSwgMTEwLCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwMiwgMjEzLCAzOCwgMjE4LCAyMzcsIDEsIDE5OCwgMzgsIDIxOCwgMjM3LCAxLCAyMzUsIDE3MSwgMzksIDM4LCAyMTgsIAotICAgIDIzNywgMSwgMjUwLCAyMzEsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDI0MywgMTAxLCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMDIsIDk5LCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyMjIsIDIyOCwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjEyLCAxNDIsIAotICAgIDIwNywgMTksIDEsIDI1MSwgNiwgMjA3LCAxOSwgMSwgMjQ4LCAxMDYsIDIwNywgMTksIDEsIDIzOCwgMjM2LCAyMDcsIDE5LCAKLSAgICAxLCAyMjksIDE0NCwgMjA3LCAxOSwgMSwgMjQ0LCAzNywgMjA3LCAxOSwgMSwgMjM2LCAxMzYsIDIwNywgMTksIDEsIDIwNCwgCi0gICAgMCwgMjA3LCAxOSwgMSwgMjAyLCA4MywgMjA3LCAxOSwgMSwgMjM2LCA0NSwgMjA3LCAxOSwgMSwgMjA5LCAxMzIsIDIwNywgCi0gICAgMTksIDEsIDIwMiwgMjM2LCAyMDcsIDE5LCAxLCAyMzAsIDIyLCAyMDcsIDE5LCAxLCAyMTIsIDI1NSwgMjA3LCAxOSwgMSwgCi0gICAgMjI4LCAyNCwgMjA3LCAxOSwgMSwgMjI0LCAyNDcsIDIwNywgMTksIDEsIDI0MywgMjUzLCAyMDcsIDE5LCAxLCAyMjEsIDQwLCAKLSAgICAyMDcsIDE5LCAxLCAyMDIsIDYsIDIwNywgMTksIDEsIDIxNCwgMjQ4LCAyMDcsIDE5LCAxLCAyNTEsIDU5LCAyMDcsIDE5LCAKLSAgICAxLCAyMTcsIDE5MSwgMjA3LCAxOSwgMSwgMjE1LCAyNywgMjA3LCAxOSwgMSwgMjE3LCA3MCwgMjA3LCAxOSwgMSwgMjE2LCAKLSAgICAxNzUsIDIwNywgMTksIDEsIDIwOSwgOTYsIDIwNywgMTksIDEsIDIzOCwgMTE0LCAyMDcsIDE5LCAxLCAxMzUsIDIwNywgMTksIAotICAgIDEsIDc1LCAyMDcsIDE5LCAxLCA2OCwgMjA3LCAxOSwgMSwgMjExLCAxMTksIDIwNywgMTksIDIwMywgMjM4LCAyNDMsIDE0MSwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCA2MywgMzgsIDIxOCwgMjMxLCAyLCA3NSwgMzgsIDIxOCwgMjMxLCAyLCA2OCwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAxNzMsIDM4LCAyMTgsIDIzMSwgMiwgMjI4LCAyMDksIDM4LCAyMTgsIDIzMSwgMiwgMjM5LCA4LCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDIzNywgMjMwLCAzOCwgMjE4LCAyMzEsIDIsIDIwMywgMTgyLCAzOCwgMjE4LCAyMzEsIDIsIDI0NywgOTIsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgMjMwLCAxODEsIDM4LCAyMTgsIDIzMSwgMiwgMjMwLCAxNDEsIDM4LCAyMTgsIDIzMSwgMiwgCi0gICAgMjEwLCAyMiwgMzgsIDIxOCwgMjMxLCAyLCAyMDcsIDIwMywgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIDIxMiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyNDMsIDIzMywgMzgsIDIxOCwgMjMxLCAyLCAyNDIsIDQyLCAzOCwgMjE4LCAyMzEsIDIsIDIwOSwgMTA4LCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDE4NSwgMzgsIDIxOCwgMjMxLCAyLCAyNDksIDMyLCAzOCwgMjE4LCAyMzEsIDIsIDI0MCwgCi0gICAgMTA4LCAzOCwgMjE4LCAyMzEsIDIsIDIwMSwgMjAxLCAzOCwgMjE4LCAyMzEsIDIsIDIyMSwgODQsIDM4LCAyMTgsIDIzMSwgCi0gICAgMiwgMTkyLCAzOCwgMjE4LCAyMzEsIDIsIDIyNCwgMTU1LCAzOCwgMjE4LCAyMzEsIDIsIDIyMywgMjQ2LCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDE5OCwgMzgsIDIxOCwgMjMxLCAyLCAyMDYsIDg2LCAzOCwgMjE4LCAyMzEsIDIsIDIwNSwgMjMwLCAzOCwgCi0gICAgMjE4LCAyMzEsIDIsIDIxNiwgMjIwLCAzOCwgMjE4LCAyMzEsIDIsIDIxNSwgMTQ1LCAzOCwgMjE4LCAyMzEsIDIsIDIyOCwgCi0gICAgMTEzLCAzOCwgMjE4LCAyMzEsIDIsIDIxNSwgMzYsIDM4LCAyMTgsIDIzMSwgMiwgMjAyLCAxMTYsIDM4LCAyMTgsIDIzMSwgCi0gICAgMiwgMjEzLCA5MCwgMzgsIDIxOCwgMjMxLCAyLCAyMTEsIDE2NCwgMzgsIDIxOCwgMjMxLCAyLCAxNTIsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjUwLCAyOCwgMzgsIDIxOCwgMjMxLCAyLCAyNTAsIDI3LCAzOCwgMjE4LCAyMzEsIDIsIDI1MCwgMjYsIDM4LCAKLSAgICAyMTgsIDIzMSwgMiwgMjAzLCAxNTMsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAxOTAsIDM4LCAyMTgsIDIzMSwgMiwgMjQ0LCAKLSAgICAxODksIDM4LCAyMTgsIDIzMSwgMiwgMjQ5LCA4LCAzOCwgMjE4LCAyMzEsIDIsIDI0NywgMTQ0LCAzOCwgMjE4LCAyMzEsIAotICAgIDIwMywgMjM4LCAyNDMsIDE0MSwgMzgsIDIxOCwgMjMxLCA0MiwgMTA1LCAzOCwgMjE4LCAyMzEsIDQyLCAxMDgsIDM4LCAKLSAgICAyMTgsIDIzMSwgNDIsIDIwOSwgMTUyLCAzOCwgMjE4LCAyMzEsIDQyLCAyMDcsIDE1MSwgMzgsIDIxOCwgMjMxLCA0MiwgCi0gICAgMjM2LCAxMSwgMjQ0LCAxNywgNiwgMSwgMTYzLCA3NSwgMjQ0LCAxNywgNiwgMSwgMTYzLCA3NCwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMTYzLCA2MywgMjQ0LCAxNywgNiwgMSwgMTYzLCAyNTEsIDczLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc4LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAxNjMsIDIyMCwgMTgsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCA3NSwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIAotICAgIDc0LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgNjMsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAyNTEsIDczLCAyNDQsIAotICAgIDE3LCA2LCAxLCAyMTIsIDIyOCwgNzgsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCAyMjAsIDE4LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNTAsIDgsIDI0NCwgMTcsIDYsIDEsIDIxOSwgMTk1LCAyNDQsIDE3LCA2LCAxLCAyMDMsIDIxNywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjAzLCA0OSwgMjQ0LCAxNywgNiwgMSwgMjM3LCAxNzEsIDI0NCwgMTcsIDYsIDEsIDIxOSwgMjMsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0OCwgMTUwLCAyNDQsIDE3LCA2LCAxLCAyMDksIDE3NiwgMjQ0LCAxNywgNiwgMSwgMjQ0LCA2MSwgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQ2LCAxNjYsIDI0NCwgMTcsIDYsIDEsIDIzMCwgMTU5LCAyNDQsIDE3LCA2LCAxLCAyMjksIDIwOCwgMjQ0LCAxNywgNiwgCi0gICAgMSwgMjM4LCAyMTEsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTU0LCAyNDQsIDE3LCA2LCAxLCAyMDYsIDUwLCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyNDAsIDI0MywgMjQ0LCAxNywgNiwgMSwgMjA5LCA5MCwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxNywgMjQ0LCAxNywgNiwgCi0gICAgMSwgMjAyLCA5MCwgMjQ0LCAxNywgNiwgMSwgMjQxLCA3LCAyNDQsIDE3LCA2LCAxLCAyMDIsIDcwLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDEsIDI4LCAyNDQsIDE3LCA2LCAxLCAyNDEsIDEyMiwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxMDMsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0MSwgOTIsIDI0NCwgMTcsIDYsIDEsIDI0MSwgNzgsIDI0NCwgMTcsIDYsIDEsIDIyMCwgNTcsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0MCwgMjIwLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc1LCAyNDQsIDE3LCA1LCAxLCAxNjMsIDc0LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAxNjMsIDYzLCAyNDQsIDE3LCA1LCAxLCAxNjMsIDI1MSwgNzMsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzgsIDI0NCwgMTcsIDUsIAotICAgIDEsIDE2MywgMjIwLCAxOCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDc1LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgCi0gICAgNzQsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCA2MywgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDI1MSwgNzMsIDI0NCwgCi0gICAgMTcsIDUsIDEsIDIxMiwgMjI4LCA3OCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDIyMCwgMTgsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI1MCwgOCwgMjQ0LCAxNywgNSwgMSwgMjE5LCAxOTUsIDI0NCwgMTcsIDUsIDEsIDIwMywgMjE3LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyMDMsIDQ5LCAyNDQsIDE3LCA1LCAxLCAyMzcsIDE3MSwgMjQ0LCAxNywgNSwgMSwgMjE5LCAyMywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQ4LCAxNTAsIDI0NCwgMTcsIDUsIDEsIDIwOSwgMTc2LCAyNDQsIDE3LCA1LCAxLCAyNDQsIDYxLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDYsIDE2NiwgMjQ0LCAxNywgNSwgMSwgMjMwLCAxNTksIDI0NCwgMTcsIDUsIDEsIDIyOSwgMjA4LCAyNDQsIDE3LCA1LCAKLSAgICAxLCAyMzgsIDIxMSwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxNTQsIDI0NCwgMTcsIDUsIDEsIDIwNiwgNTAsIDI0NCwgMTcsIDUsIAotICAgIDEsIDI0MCwgMjQzLCAyNDQsIDE3LCA1LCAxLCAyMDksIDkwLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDE3LCAyNDQsIDE3LCA1LCAKLSAgICAxLCAyMDIsIDkwLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDcsIDI0NCwgMTcsIDUsIDEsIDIwMiwgNzAsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0MSwgMjgsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTIyLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDEwMywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQxLCA5MiwgMjQ0LCAxNywgNSwgMSwgMjQxLCA3OCwgMjQ0LCAxNywgNSwgMSwgMjIwLCA1NywgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQwLCAyMjAsIDIxMywgNTAsIDEsIDIxOSwgMjAsIDIxMywgNTAsIDEsIDIwOCwgMTMxLCAyMTMsIDUwLCAxLCAyMjksIDk2LCAKLSAgICAyMTMsIDUwLCAxLCAyNDAsIDUzLCAyMTMsIDUwLCAxLCAyMDksIDY1LCAyMTMsIDUwLCAxLCAyMTIsIDEzLCAyMTMsIDUwLCAKLSAgICAxLCAyMTAsIDE5MCwgMjEzLCA1MCwgMSwgMjQ2LCA5MCwgMjEzLCA1MCwgMSwgMjAzLCA1MSwgMjEzLCA1MCwgMSwgMjM2LCAKLSAgICA5LCAyMTMsIDUwLCAxLCAyNDgsIDg1LCAyMTMsIDUwLCAxLCAyNDQsIDc0LCAyMTMsIDUwLCAxLCAyMzgsIDI1MCwgMjEzLCAKLSAgICA1MCwgMSwgMjA1LCAxNzAsIDIxMywgNTAsIDEsIDIwOSwgNzEsIDIxMywgNTAsIDEsIDIwMiwgMTUsIDIxMywgNTAsIDEsIAotICAgIDIyNSwgMTgsIDIxMywgNTAsIDEsIDIzMCwgODAsIDIxMywgNTAsIDEsIDIwMywgMjU0LCAyMTMsIDUwLCAxLCAyMzcsIDE1OSwgCi0gICAgMjEzLCA1MCwgMSwgMjI3LCAzMywgMjEzLCA1MCwgMSwgMjI0LCAxMTEsIDIxMywgNTAsIDEsIDIzMSwgOTAsIDIxMywgNTAsIAotICAgIDEsIDI0MSwgMTUyLCAyMTMsIDUwLCAxLCAyNTAsIDc1LCAyMTMsIDUwLCAxLCAyNTEsIDExMywgMjEzLCA1MCwgMSwgMjIwLCAKLSAgICAzMSwgMjEzLCA1MCwgMSwgMjAzLCAyNDEsIDIxMywgNTAsIDEsIDIxOSwgMjExLCAyMTMsIDUwLCAxLCAyNTEsIDczLCAyMTMsIAotICAgIDUwLCAxLCAyMTUsIDIyNCwgMjEzLCA1MCwgMSwgMjIxLCA0MCwgMjEzLCA1MCwgMSwgMjQxLCAxNzIsIDIxMywgNTAsIDEsIAotICAgIDI1MSwgNzgsIDIxMywgNTAsIDEsIDIzNSwgMTYyLCAyMTMsIDUwLCAxLCAyMDYsIDIyNCwgMjEzLCA1MCwgMSwgMjIwLCA5NSwgCi0gICAgMjEzLCA1MCwgMSwgMjIwLCAxMCwgMjEzLCA1MCwgMSwgMjIwLCA1NSwgMjEzLCA1MCwgMSwgMjUwLCAxMSwgMjEzLCA1MCwgCi0gICAgMSwgMjUwLCAxMjEsIDIxMywgNTAsIDEsIDIxOSwgMjQ0LCAyMTMsIDUwLCAxLCAyNTEsIDU0LCAyMTMsIDUwLCAxLCAyNDEsIAotICAgIDIxLCAyMTMsIDUwLCAxLCAyNTAsIDk5LCAyMTMsIDUwLCAxLCAyNDEsIDE4MywgMjEzLCA1MCwgMSwgMjM1LCAxNzAsIDIxMywgCi0gICAgNTAsIDEsIDIwMywgMTYsIDIxOSwgMjI1LCAxLCAyNTEsIDMwLCAyMTksIDIyNSwgMSwgMjQ5LCAzMiwgMjE5LCAyMjUsIDEsIAotICAgIDIxMCwgMjIsIDIxOSwgMjI1LCAxLCAyMzAsIDE4MSwgMjE5LCAyMjUsIDEsIDIwMywgMTgyLCAyMTksIDIyNSwgMSwgMjI5LCAKLSAgICAxNDQsIDIxOSwgMjI1LCAxLCAyNDQsIDYwLCAyMTksIDIyNSwgMSwgMjE2LCAyMjAsIDIxOSwgMjI1LCAxLCAyMTUsIDM2LCAKLSAgICAyMTksIDIyNSwgMSwgMjEzLCA1LCAyMTksIDIyNSwgMSwgMjQ0LCAxLCAyMTksIDIyNSwgMSwgMjQ3LCA3LCAyMTksIDIyNSwgCi0gICAgMSwgMjM5LCA4LCAyMTksIDIyNSwgMSwgMjQwLCAxMDgsIDIxOSwgMjI1LCAxLCAyMTcsIDEyNCwgMjE5LCAyMjUsIDEsIAotICAgIDIzMCwgMzgsIDIxOSwgMjI1LCAxLCAyMjgsIDEwOCwgMjE5LCAyMjUsIDEsIDIyNCwgMTI0LCAyMTksIDIyNSwgMSwgMjIxLCAKLSAgICAyNCwgMjE5LCAyMjUsIDEsIDIwNCwgNzAsIDIxOSwgMjI1LCAxLCAxNTIsIDIxOSwgMjI1LCAxLCAxOTgsIDIxOSwgMjI1LCAKLSAgICAxLCA2MywgMjE5LCAyMjUsIDEsIDc0LCAyMTksIDIyNSwgMSwgNzUsIDIxOSwgMjI1LCAxLCA3OCwgMjE5LCAyMjUsIDEsIAotICAgIDY4LCAyMTksIDIyNSwgMSwgMjUyLCAyNSwgMjE5LCAyMjUsIDEsIDI0MSwgMTYxLCAyMTksIDIyNSwgMSwgMjIwLCAxOCwgCi0gICAgMjE5LCAyMjUsIDE3LCAyMDIsIDg0LCAyMTksIDIyNSwgMTcsIDEwNSwgMjE5LCAyMjUsIDE3LCAxMDgsIDIxOSwgMjI1LCAKLSAgICAxNywgMTQ3LCAyMTksIDIyNSwgMTcsIDE0OSwgMjE5LCAyMjUsIDE3LCAxNzAsIDIxOSwgMjI1LCAxNywgMTk1LCAyMTksIAotICAgIDIyNSwgMTcsIDIxMywgMTExLCAyMTksIDIyNSwgMTcsIDE5OSwgMjE5LCAyMjUsIDE3LCAyMjIsIDYzLCAyNDEsIDExOCwgMSwgCi0gICAgNjMsIDI0MSwgMTE4LCAxLCAyNDgsIDE2MiwgMjQxLCAxMTgsIDEsIDI0NiwgMjM4LCAyNDEsIDExOCwgMSwgMjQ2LCAxNzAsIAotICAgIDI0MSwgMTE4LCAxLCAyNDQsIDc1LCAyNDEsIDExOCwgMSwgMjIzLCAxNywgMjQxLCAxMTgsIDEsIDI0MywgMjQ4LCAyNDEsIAotICAgIDExOCwgMSwgMjQxLCAxNDUsIDI0MSwgMTE4LCAxLCA3NCwgMjQxLCAxMTgsIDEsIDI0MCwgNjAsIDI0MSwgMTE4LCAxLCAKLSAgICAyMzgsIDE5MCwgMjQxLCAxMTgsIDEsIDIzOCwgNTIsIDI0MSwgMTE4LCAxLCAyMzcsIDY3LCAyNDEsIDExOCwgMSwgNzUsIAotICAgIDI0MSwgMTE4LCAxLCAyMzAsIDE2MSwgMjQxLCAxMTgsIDEsIDIyOSwgMjAxLCAyNDEsIDExOCwgMSwgMjI3LCAyMzQsIDI0MSwgCi0gICAgMTE4LCAxLCAyMjcsIDczLCAyNDEsIDExOCwgMSwgMjI1LCAyMCwgMjQxLCAxMTgsIDEsIDIyMiwgMjQwLCAyNDEsIDExOCwgCi0gICAgMSwgMjAxLCAyMDEsIDI0MSwgMTE4LCAxLCAyMjIsIDQxLCAyNDEsIDExOCwgMSwgNzgsIDI0MSwgMTE4LCAxLCAyMTksIDM0LCAKLSAgICAyNDEsIDExOCwgMSwgMjE3LCAxMDYsIDI0MSwgMTE4LCAxLCAyMTYsIDE1OCwgMjQxLCAxMTgsIDEsIDIxNSwgMTgwLCAyNDEsIAotICAgIDExOCwgMSwgMjE0LCAxNzcsIDI0MSwgMTE4LCAxLCAyMTMsIDQzLCAyNDEsIDExOCwgMSwgMjA5LCAxODcsIDI0MSwgMTE4LCAKLSAgICAxLCAyMDksIDkyLCAyNDEsIDExOCwgMSwgNjgsIDI0MSwgMTE4LCAxLCAyMDYsIDU1LCAyNDEsIDExOCwgMSwgMjAzLCAxNzYsIAotICAgIDI0MSwgMTE4LCAxLCAyMDMsIDEyNCwgMjQxLCAxMTgsIDEsIDIwMiwgOTIsIDI0MSwgMTE4LCAxLCAyMDIsIDcxLCAyNDEsIAotICAgIDExOCwgMSwgMjM4LCAxMDUsIDI0MSwgMTE4LCAxLCAyMzgsIDExMSwgMjQxLCAxMTgsIDEsIDIyOSwgMTI5LCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyNTEsIDEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0OCwgMTA4LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKLSAgICAyMzgsIDY5LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDQsIDE0MCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQxLCAxNzEsIAotICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgMTAyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDAsIDE4MywgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjAyLCA2NSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA5LCAyMTMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDI0NiwgMTk5LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDIyNCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCA4MCwgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAyMjMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgOTAsIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDIyOCwgMTcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMjM1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAKLSAgICAyMDMsIDE3MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQyLCA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDcsIDM5LCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE0MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjI5LCAyNDAsIDI0NywgMTQsIDI1MSwgCi0gICAgMzEsIDEsIDIyNiwgMTk0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzcsIDE0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTcsIAotICAgIDEwNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjUwLCAxNzcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTA3LCAyNDcsIAotICAgIDE0LCAyNTEsIDMxLCAxLCAyNDYsIDE0MiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ1LCA2MywgMjQ3LCAxNCwgMjUxLCAzMSwgCi0gICAgMSwgMjI1LCAxMDMsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNywgMTExLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjEsIAotICAgIDE1MSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQxLCAyNDAsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgNzMsIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTYyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjAsIDMxLCAyNDcsIDE0LCAyNTEsIDMxLCAKLSAgICAxLCAyMDcsIDEyNSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQwLCA4MywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQxLCAyNTMsIAotICAgIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTc2LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTksIDksIDI0NywgMTQsIDI1MSwgCi0gICAgMzEsIDEsIDIzOCwgOTUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNiwgMTcyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTMsIAotICAgIDk5LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDUsIDIzMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjA4LCAxOTMsIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDIxMiwgMjA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDE5NCwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjQ1LCA2NCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ3LCA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDMsIAotICAgIDU2LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMTgsIDEwMiwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjI5LCA2MiwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMjQ2LCA0OSwgODIsIDI5LCAzNCwgMiwgMjUxLCAyMzEsIDI5LCAzNCwgMiwgMjUxLCAyMzAsIDI5LCAzNCwgCi0gICAgMiwgMjUxLCAyMjksIDI5LCAzNCwgMiwgMjUxLCAyMjgsIDI5LCAzNCwgMiwgMjUxLCAyMjcsIDI5LCAzNCwgMiwgMjUxLCAKLSAgICAyMjYsIDI5LCAzNCwgMiwgMjUxLCAyMjUsIDI5LCAzNCwgMiwgMjUxLCAyMjQsIDI5LCAzNCwgMiwgMjUxLCAyMjMsIDI5LCAKLSAgICAzNCwgMiwgMjUxLCAyMjIsIDI5LCAzNCwgMiwgMjUxLCAyMjEsIDI5LCAzNCwgMiwgMjUxLCAyMjAsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAyMTksIDI5LCAzNCwgMiwgMjUxLCAyMTgsIDI5LCAzNCwgMiwgMjUxLCAyMTcsIDI5LCAzNCwgMiwgMjUxLCAyMTYsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAyMTUsIDI5LCAzNCwgMiwgMjUxLCAyMTQsIDI5LCAzNCwgMiwgMjUxLCAyMTMsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAyMTIsIDI5LCAzNCwgMiwgMjUxLCAyMTEsIDI5LCAzNCwgMiwgMjUxLCAyMTAsIDI5LCAzNCwgMiwgMjUxLCAyMDksIAotICAgIDI5LCAzNCwgMiwgMjUxLCAyMDgsIDI5LCAzNCwgMiwgMjUxLCAyMDcsIDI5LCAzNCwgMiwgMjUxLCAyMDYsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAyMDUsIDI5LCAzNCwgMiwgMjU0LCAyMzksIDI5LCAzNCwgMiwgMjUxLCAyMDQsIDI5LCAzNCwgMiwgMjUxLCAyMDMsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAyMDIsIDI5LCAzNCwgMiwgMjUxLCAyMDEsIDI5LCAzNCwgMiwgMjUxLCAyMDAsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxOTksIDI5LCAzNCwgMiwgMjUxLCAxOTgsIDI5LCAzNCwgMiwgMjUxLCAxOTcsIDI5LCAzNCwgMiwgMjUxLCAxOTYsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxOTUsIDI5LCAzNCwgMiwgMjUxLCAxOTQsIDI5LCAzNCwgMiwgMjUxLCAxOTMsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxOTIsIDI5LCAzNCwgMiwgMjUxLCAxOTEsIDI5LCAzNCwgMiwgMjUxLCAxOTAsIDI5LCAzNCwgMiwgMjUxLCAxODksIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxODgsIDI5LCAzNCwgMiwgMjUxLCAxODcsIDI5LCAzNCwgMiwgMjUxLCAxODYsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxODUsIDI5LCAzNCwgMiwgMjUxLCAxODQsIDI5LCAzNCwgMiwgMjUxLCAxODMsIDI5LCAzNCwgMiwgMjUxLCAxODIsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxODEsIDI5LCAzNCwgMiwgMjUxLCAxODAsIDI5LCAzNCwgMiwgMjUxLCAxNzksIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNzgsIDI5LCAzNCwgMiwgMjUxLCAxNzcsIDI5LCAzNCwgMiwgMjUxLCAxNzYsIDI5LCAzNCwgMiwgMjUxLCAxNzUsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxNzQsIDI5LCAzNCwgMiwgMjUxLCAxNzMsIDI5LCAzNCwgMiwgMjUxLCAxNzIsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNzEsIDI5LCAzNCwgMiwgMjUxLCAxNzAsIDI5LCAzNCwgMiwgMjUxLCAxNjksIDI5LCAzNCwgMiwgMjUxLCAxNjgsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxNjcsIDI5LCAzNCwgMiwgMjUxLCAxNjYsIDI5LCAzNCwgMiwgMjUxLCAxNjUsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNjQsIDI5LCAzNCwgMiwgMjUxLCAxNjMsIDI5LCAzNCwgMiwgMjUxLCAxNjIsIDI5LCAzNCwgMiwgMjU0LCAxNTIsIAotICAgIDI5LCAzNCwgMiwgMjUxLCAxNjEsIDI5LCAzNCwgMiwgMjUxLCAxNjAsIDI5LCAzNCwgMiwgMjU0LCAxMTcsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNTksIDI5LCAzNCwgMiwgMjUxLCAxNTgsIDI5LCAzNCwgMiwgMjUxLCAxNTcsIDI5LCAzNCwgMiwgMjUxLCAxNTYsIAotICAgIDI5LCAzNCwgMiwgMjU0LCAxMDQsIDI5LCAzNCwgMiwgMjUxLCAxNTUsIDI5LCAzNCwgMiwgMjUxLCAxNTQsIDI5LCAzNCwgMiwgCi0gICAgMjUxLCAxNTMsIDI5LCAzNCwgMiwgMjUxLCAxNTIsIDI5LCAzNCwgMiwgMjUxLCAxNTEsIDI5LCAzNCwgMiwgMjUzLCAxNzYsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNzUsIDI5LCAzNCwgMiwgMjUzLCAxNzQsIDI5LCAzNCwgMiwgMjUzLCAxNzMsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNzIsIDI5LCAzNCwgMiwgMjUzLCAxNzEsIDI5LCAzNCwgMiwgMjUzLCAxNzAsIDI5LCAzNCwgMiwgMjUzLCAxNjksIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNjcsIDI5LCAzNCwgMiwgMjUzLCAxNjYsIDI5LCAzNCwgMiwgMjUzLCAxNjUsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNjQsIDI5LCAzNCwgMiwgMjUzLCAxNjMsIDI5LCAzNCwgMiwgMjUzLCAxNjIsIDI5LCAzNCwgMiwgMjUzLCAxNjAsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNTksIDI5LCAzNCwgMiwgMjUzLCAxNTgsIDI5LCAzNCwgMiwgMjUzLCAxNTcsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNTYsIDI5LCAzNCwgMiwgMjUzLCAxNTUsIDI5LCAzNCwgMiwgMjUzLCAxNTQsIDI5LCAzNCwgMiwgMjUzLCAxNTMsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNTIsIDI5LCAzNCwgMiwgMjUzLCAxNTEsIDI5LCAzNCwgMiwgMjUzLCAxNTAsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNDksIDI5LCAzNCwgMiwgMjUzLCAxNDgsIDI5LCAzNCwgMiwgMjUzLCAxNDcsIDI5LCAzNCwgMiwgMjUzLCAxNDYsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxNDUsIDI5LCAzNCwgMiwgMjUzLCAxNDQsIDI5LCAzNCwgMiwgMjUzLCAxNDMsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxNDIsIDI5LCAzNCwgMiwgMjUzLCAxNDAsIDI5LCAzNCwgMiwgMjUzLCAxMzksIDI5LCAzNCwgMiwgMjUzLCAxMzgsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMzQsIDI5LCAzNCwgMiwgMjUzLCAxMzMsIDI5LCAzNCwgMiwgMjUzLCAxMzIsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMzEsIDI5LCAzNCwgMiwgMjUzLCAxMjcsIDI5LCAzNCwgMiwgMjUzLCAxMjYsIDI5LCAzNCwgMiwgMjUzLCAxMjUsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMjQsIDI5LCAzNCwgMiwgMjUzLCAxMjMsIDI5LCAzNCwgMiwgMjUzLCAxMjIsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMjEsIDI5LCAzNCwgMiwgMjUzLCAxMjAsIDI5LCAzNCwgMiwgMjUzLCAxMTksIDI5LCAzNCwgMiwgMjUzLCAxMTgsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMTcsIDI5LCAzNCwgMiwgMjUzLCAxMTYsIDI5LCAzNCwgMiwgMjUzLCAxMTUsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMTQsIDI5LCAzNCwgMiwgMjUzLCAxMTMsIDI5LCAzNCwgMiwgMjUzLCAxMTIsIDI5LCAzNCwgMiwgMjUzLCAxMTEsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMTAsIDI5LCAzNCwgMiwgMjUzLCAxMDksIDI5LCAzNCwgMiwgMjUzLCAxMDgsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAxMDcsIDI5LCAzNCwgMiwgMjUzLCAxMDYsIDI5LCAzNCwgMiwgMjUzLCAxMDUsIDI5LCAzNCwgMiwgMjUzLCAxMDMsIAotICAgIDI5LCAzNCwgMiwgMjUzLCAxMDIsIDI5LCAzNCwgMiwgMjUzLCAxMDEsIDI5LCAzNCwgMiwgMjUzLCAxMDAsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCA5OSwgMjksIDM0LCAyLCAyNTMsIDk3LCAyOSwgMzQsIDIsIDI1MywgOTYsIDI5LCAzNCwgMiwgMjUzLCA5NSwgMjksIAotICAgIDM0LCAyLCAyNTMsIDk0LCAyOSwgMzQsIDIsIDI1MywgOTIsIDI5LCAzNCwgMiwgMjUzLCA5MSwgMjksIDM0LCAyLCAyNTMsIAotICAgIDkwLCAyOSwgMzQsIDIsIDI1MywgNTYsIDI5LCAzNCwgMiwgMjUzLCA1NCwgMjksIDM0LCAyLCAyNTMsIDUyLCAyOSwgMzQsIAotICAgIDIsIDI1MywgNTAsIDI5LCAzNCwgMiwgMjUzLCA0OCwgMjksIDM0LCAyLCAyNTMsIDQ2LCAyOSwgMzQsIDIsIDI1MywgNDQsIAotICAgIDI5LCAzNCwgMiwgMjUzLCA0MiwgMjksIDM0LCAyLCAyNTMsIDQwLCAyOSwgMzQsIDIsIDI1MywgMzgsIDI5LCAzNCwgMiwgCi0gICAgMjUzLCAzNiwgMjksIDM0LCAyLCAyNTMsIDMzLCAyOSwgMzQsIDIsIDI1MywgMzEsIDI5LCAzNCwgMiwgMjUzLCAyOSwgMjksIAotICAgIDM0LCAyLCAyNTMsIDI3LCAyOSwgMzQsIDIsIDI1MywgMjUsIDI5LCAzNCwgMiwgMjUzLCAyMywgMjksIDM0LCAyLCAyNTMsIAotICAgIDIxLCAyOSwgMzQsIDIsIDI1MywgMTksIDI5LCAzNCwgMiwgMjUyLCAxOTMsIDI5LCAzNCwgMiwgMjUyLCAxOTIsIDI5LCAzNCwgCi0gICAgMiwgMjUyLCAxOTEsIDI5LCAzNCwgMiwgMjUyLCAxOTAsIDI5LCAzNCwgMiwgMjUyLCAxODksIDI5LCAzNCwgMiwgMjUyLCAKLSAgICAxODgsIDI5LCAzNCwgMiwgMjUyLCAxODYsIDI5LCAzNCwgMiwgMjUyLCAxODUsIDI5LCAzNCwgMiwgMjUyLCAxODQsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCAxODMsIDI5LCAzNCwgMiwgMjUyLCAxODIsIDI5LCAzNCwgMiwgMjUyLCAxODEsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNzksIDI5LCAzNCwgMiwgMjUyLCAxNzgsIDI5LCAzNCwgMiwgMjUyLCAxNzQsIDI5LCAzNCwgMiwgMjUyLCAxNzMsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNzEsIDI5LCAzNCwgMiwgMjUyLCAxNzAsIDI5LCAzNCwgMiwgMjUyLCAxNjksIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNjgsIDI5LCAzNCwgMiwgMjUyLCAxNjcsIDI5LCAzNCwgMiwgMjUyLCAxNjYsIDI5LCAzNCwgMiwgMjUyLCAxNjUsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNjQsIDI5LCAzNCwgMiwgMjUyLCAxNjMsIDI5LCAzNCwgMiwgMjUyLCAxNjIsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNjEsIDI5LCAzNCwgMiwgMjUyLCAxNjAsIDI5LCAzNCwgMiwgMjUyLCAxNTksIDI5LCAzNCwgMiwgMjUyLCAxNTgsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNTcsIDI5LCAzNCwgMiwgMjUyLCAxNTYsIDI5LCAzNCwgMiwgMjUyLCAxNTUsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNTQsIDI5LCAzNCwgMiwgMjUyLCAxNTMsIDI5LCAzNCwgMiwgMjUyLCAxNTIsIDI5LCAzNCwgMiwgMjUyLCAxNTEsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNTAsIDI5LCAzNCwgMiwgMjUyLCAxNDksIDI5LCAzNCwgMiwgMjUyLCAxNDgsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNDcsIDI5LCAzNCwgMiwgMjUyLCAxNDYsIDI5LCAzNCwgMiwgMjUyLCAxNDUsIDI5LCAzNCwgMiwgMjUyLCAxNDQsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxNDMsIDI5LCAzNCwgMiwgMjUyLCAxNDIsIDI5LCAzNCwgMiwgMjUyLCAxNDEsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxNDAsIDI5LCAzNCwgMiwgMjUyLCAxMzksIDI5LCAzNCwgMiwgMjUyLCAxMzgsIDI5LCAzNCwgMiwgMjUyLCAxMzcsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMzYsIDI5LCAzNCwgMiwgMjUyLCAxMzUsIDI5LCAzNCwgMiwgMjUyLCAxMzQsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMzMsIDI5LCAzNCwgMiwgMjUyLCAxMzIsIDI5LCAzNCwgMiwgMjUyLCAxMzEsIDI5LCAzNCwgMiwgMjUyLCAxMzAsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMjksIDI5LCAzNCwgMiwgMjUyLCAxMjgsIDI5LCAzNCwgMiwgMjUyLCAxMjcsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMjYsIDI5LCAzNCwgMiwgMjUyLCAxMjUsIDI5LCAzNCwgMiwgMjUyLCAxMjQsIDI5LCAzNCwgMiwgMjUyLCAxMjMsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMjIsIDI5LCAzNCwgMiwgMjUyLCAxMjEsIDI5LCAzNCwgMiwgMjUyLCAxMjAsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMTksIDI5LCAzNCwgMiwgMjUyLCAxMTgsIDI5LCAzNCwgMiwgMjUyLCAxMTcsIDI5LCAzNCwgMiwgMjUyLCAxMTYsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMTUsIDI5LCAzNCwgMiwgMjUyLCAxMTQsIDI5LCAzNCwgMiwgMjUyLCAxMTMsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMTIsIDI5LCAzNCwgMiwgMjUyLCAxMTEsIDI5LCAzNCwgMiwgMjUyLCAxMTAsIDI5LCAzNCwgMiwgMjUyLCAxMDksIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMDgsIDI5LCAzNCwgMiwgMjUyLCAxMDcsIDI5LCAzNCwgMiwgMjUyLCAxMDYsIDI5LCAzNCwgMiwgCi0gICAgMjUyLCAxMDUsIDI5LCAzNCwgMiwgMjUyLCAxMDQsIDI5LCAzNCwgMiwgMjUyLCAxMDMsIDI5LCAzNCwgMiwgMjUyLCAxMDIsIAotICAgIDI5LCAzNCwgMiwgMjUyLCAxMDEsIDI5LCAzNCwgMiwgMjUyLCAxMDAsIDI5LCAzNCwgMiwgMjUyLCA5OSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDk4LCAyOSwgMzQsIDIsIDI1MiwgOTcsIDI5LCAzNCwgMiwgMjUyLCA5NiwgMjksIDM0LCAyLCAyNTIsIDk1LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgOTQsIDI5LCAzNCwgMiwgMjUyLCA5MywgMjksIDM0LCAyLCAyNTIsIDkyLCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgOTEsIDI5LCAzNCwgMiwgMjUyLCA5MCwgMjksIDM0LCAyLCAyNTIsIDg5LCAyOSwgMzQsIDIsIDI1MiwgODgsIDI5LCAzNCwgCi0gICAgMiwgMjUyLCA4NywgMjksIDM0LCAyLCAyNTIsIDg2LCAyOSwgMzQsIDIsIDI1MiwgODUsIDI5LCAzNCwgMiwgMjUyLCA4NCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDgzLCAyOSwgMzQsIDIsIDI1MiwgODIsIDI5LCAzNCwgMiwgMjUyLCA4MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDgwLCAyOSwgMzQsIDIsIDI1MiwgNzksIDI5LCAzNCwgMiwgMjUyLCA3OCwgMjksIDM0LCAyLCAyNTIsIDc3LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNzYsIDI5LCAzNCwgMiwgMjUyLCA3NSwgMjksIDM0LCAyLCAyNTIsIDc0LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgNzMsIDI5LCAzNCwgMiwgMjUyLCA3MiwgMjksIDM0LCAyLCAyNTIsIDcxLCAyOSwgMzQsIDIsIDI1MiwgNzAsIDI5LCAzNCwgCi0gICAgMiwgMjUyLCA2OSwgMjksIDM0LCAyLCAyNTIsIDY4LCAyOSwgMzQsIDIsIDI1MiwgNjcsIDI5LCAzNCwgMiwgMjUyLCA2NiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDY1LCAyOSwgMzQsIDIsIDI1MiwgNjQsIDI5LCAzNCwgMiwgMjUyLCA2MywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDYyLCAyOSwgMzQsIDIsIDI1MiwgNjEsIDI5LCAzNCwgMiwgMjUyLCA2MCwgMjksIDM0LCAyLCAyNTIsIDU5LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNTgsIDI5LCAzNCwgMiwgMjUyLCA1NywgMjksIDM0LCAyLCAyNTIsIDU2LCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgNTUsIDYzLCAyOSwgMzQsIDIsIDI1MiwgNTQsIDI0OSwgMjU1LCAyOSwgMzQsIDIsIDI1MiwgNTMsIDI0NSwgNTEsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA1MiwgNzQsIDI5LCAzNCwgMiwgMjUyLCA1MSwgMjQwLCAxNzQsIDI5LCAzNCwgMiwgMjUyLCA1MCwgCi0gICAgMjM3LCAxNzEsIDI5LCAzNCwgMiwgMjUyLCA0OSwgMjMwLCAxODQsIDI5LCAzNCwgMiwgMjUyLCA0OCwgMjMwLCA1NCwgMjksIAotICAgIDM0LCAyLCAyNTIsIDQ3LCAxNTksIDI5LCAzNCwgMiwgMjUyLCA0NiwgMjI4LCAxMTgsIDI5LCAzNCwgMiwgMjUyLCA0NSwgCi0gICAgMjI4LCAxMTcsIDI5LCAzNCwgMiwgMjUyLCA0NCwgMjI4LCAxMTYsIDI5LCAzNCwgMiwgMjUyLCA0MywgMjI4LCAxMTUsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA0MiwgMjA0LCAxNDQsIDI5LCAzNCwgMiwgMjUyLCA0MSwgMjAzLCAxOTYsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA0MCwgMjAzLCAxMjQsIDI5LCAzNCwgMiwgMjUyLCAzOSwgMjIwLCAzNiwgMjksIDM0LCAyLCAyNTIsIDM4LCAyNTEsIDE0NywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDM3LCAyNDgsIDE5OSwgMjksIDM0LCAyLCAyNTIsIDM2LCAyNDQsIDEyMiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDM1LCAyNDAsIDE4MiwgMjksIDM0LCAyLCAyNTIsIDM0LCAyMzAsIDE2MSwgMjksIDM0LCAyLCAyNTIsIDMzLCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgMzIsIDI5LCAzNCwgMiwgMjUyLCAzMSwgMjksIDM0LCAyLCAyNTIsIDMwLCAyOSwgMzQsIDIsIDI1MiwgCi0gICAgMjksIDI5LCAzNCwgMiwgMjUyLCAyOCwgMjksIDM0LCAyLCAyNTIsIDI3LCAyOSwgMzQsIDIsIDI1MiwgMjYsIDI0NSwgNTgsIAotICAgIDQsIDYzLCAyNDUsIDU4LCA0LCA3NCwgMjQ1LCA1OCwgNCwgNzUsIDI0NSwgNTgsIDQsIDc4LCAyNDUsIDU4LCA0LCA2OCwgCi0gICAgMjQ1LCA1OCwgNCwgMjMwLCAxODEsIDI0NSwgNTgsIDQsIDIzMCwgMTAxLCAyNDUsIDU4LCA0LCAxNzMsIDI0NSwgNTgsIDQsIAotICAgIDIyOSwgMjAxLCAyNDUsIDU4LCA0LCAyMjksIDEwMCwgMjQ1LCA1OCwgNCwgMjI5LCAyNiwgMjQ1LCA1OCwgNCwgMjI4LCAKLSAgICAyMDksIDI0NSwgNTgsIDQsIDIyOCwgMTEzLCAyNDUsIDU4LCA0LCAyMjcsIDIzNCwgMjQ1LCA1OCwgNCwgMjI3LCAxNDgsIAotICAgIDI0NSwgNTgsIDQsIDIyNywgNDksIDI0NSwgNTgsIDQsIDIyNiwgMjM5LCAyNDUsIDU4LCA0LCAxOTIsIDI0NSwgNTgsIDQsIAotICAgIDIyNSwgMjAsIDI0NSwgNTgsIDQsIDIyNCwgMTU1LCAyNDUsIDU4LCA0LCAyMjQsIDgyLCAyNDUsIDU4LCA0LCAyMjMsIDI0NiwgCi0gICAgMjQ1LCA1OCwgNCwgMjAxLCAyMDEsIDI0NSwgNTgsIDQsIDIyMiwgMjQwLCAyNDUsIDU4LCA0LCAyMjIsIDEwMCwgMjQ1LCAKLSAgICA1OCwgNCwgMjIxLCAxOTEsIDI0NSwgNTgsIDQsIDIyMSwgODQsIDI0NSwgNTgsIDQsIDE4NSwgMjQ1LCA1OCwgNCwgMjE5LCAKLSAgICAzNCwgMjQ1LCA1OCwgNCwgMjE4LCAxNjcsIDI0NSwgNTgsIDQsIDIxOCwgNjksIDI0NSwgNTgsIDQsIDIxNywgMTkxLCAyNDUsIAotICAgIDU4LCA0LCAyMTYsIDIyMCwgMjQ1LCA1OCwgNCwgMjE2LCAxNTgsIDI0NSwgNTgsIDQsIDIxNiwgNTcsIDI0NSwgNTgsIDQsIAotICAgIDIxNSwgMjI3LCAyNDUsIDU4LCA0LCAyMTUsIDE0NSwgMjQ1LCA1OCwgNCwgMjE1LCAzNiwgMjQ1LCA1OCwgNCwgMjE0LCAKLSAgICAxNzcsIDI0NSwgNTgsIDQsIDIxMiwgMTYyLCAyNDUsIDU4LCA0LCAyMTIsIDEzLCAyNDUsIDU4LCA0LCAyMTEsIDEwLCAyNDUsIAotICAgIDU4LCA0LCAyMTAsIDIyLCAyNDUsIDU4LCA0LCAyMDksIDE4NywgMjQ1LCA1OCwgNCwgMjA5LCAyLCAyNDUsIDU4LCA0LCAKLSAgICAxMzUsIDI0NSwgNTgsIDQsIDIwNywgMjAzLCAyNDUsIDU4LCA0LCAyMDQsIDExMSwgMjQ1LCA1OCwgNCwgMjA0LCA2MiwgCi0gICAgMjQ1LCA1OCwgNCwgMjA0LCAzMCwgMjQ1LCA1OCwgNCwgMjA0LCAwLCAyNDUsIDU4LCA0LCAyMDMsIDE4MiwgMjQ1LCA1OCwgCi0gICAgNCwgMjAzLCAxNzYsIDI0NSwgNTgsIDQsIDIwMiwgMTE2LCAyNDUsIDU4LCA0LCAyMDIsIDE3LCAyMzEsIDUxLCAyNTAsIAotICAgIDEzMCwgMSwgMjUxLCAyOCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDI0OCwgMTA1LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgCi0gICAgMjM4LCA2NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDI0NCwgMTc3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjM3LCA2NywgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwNCwgNzAsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMDIsIDk1LCAyMzEsIDUxLCAKLSAgICAyNTAsIDEzMCwgMSwgMjM3LCAxOSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwOSwgMTI4LCAyMzEsIDUxLCAyNTAsIDEzMCwgCi0gICAgMSwgMjAyLCAyMzUsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjksIDI1MCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyOCwgCi0gICAgMTksIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMjQsIDI0NywgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyMSwgNDAsIDIzMSwgCi0gICAgNTEsIDI1MCwgMTMwLCAxLCAyMTQsIDI0OSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDI1MCwgMywgMjMxLCA1MSwgMjUwLCAKLSAgICAxMzAsIDEsIDIxOSwgMzQsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTUsIDI2LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgCi0gICAgMjE3LCA2OSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxNiwgOTEsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMTIsIDI1NSwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwOSwgMjAxLCAyMzEsIDUxLCAyNTAsIDEzMCwgMjE0LCAxNjgsIDU0LCAyMzEsIDUxLCAKLSAgICAyNTAsIDEzMCwgNDIsIDEwNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMDgsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgCi0gICAgMTQ3LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwOSwgMTUyLCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDIwNywgMTUxLCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDExOCwgMjM2LCAxMSwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAxMTgsIDIwOSwgMzYsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDIxOSwgMTM0LCAxLCAyNTEsIDI4LCAyMTksIDEzNCwgCi0gICAgMSwgMjQ4LCAxMDUsIDIxOSwgMTM0LCAxLCAyMzgsIDY3LCAyMTksIDEzNCwgMSwgMjQ0LCAxNzcsIDIxOSwgMTM0LCAxLCAKLSAgICAyMzcsIDY3LCAyMTksIDEzNCwgMSwgMjA0LCA3MCwgMjE5LCAxMzQsIDEsIDIwMiwgOTUsIDIxOSwgMTM0LCAxLCAyMzcsIAotICAgIDE5LCAyMTksIDEzNCwgMSwgMjA5LCAxMjgsIDIxOSwgMTM0LCAxLCAyMDIsIDIzNSwgMjE5LCAxMzQsIDEsIDIyOSwgMjUwLCAKLSAgICAyMTksIDEzNCwgMSwgMjI4LCAxOSwgMjE5LCAxMzQsIDEsIDIyNCwgMjQ3LCAyMTksIDEzNCwgMSwgNDYsIDIyMSwgNDAsIAotICAgIDIxOSwgMTM0LCAxLCAyMjEsIDQwLCAyMTksIDEzNCwgMSwgMjE0LCAyNDksIDIxOSwgMTM0LCAxLCAyNTAsIDMsIDIxOSwgCi0gICAgMTM0LCAxLCAyMTksIDM0LCAyMTksIDEzNCwgMSwgMjE1LCAyNiwgMjE5LCAxMzQsIDEsIDIxNywgNjksIDIxOSwgMTM0LCAxLCAKLSAgICAyMTYsIDkxLCAyMTksIDEzNCwgMSwgMjEyLCAyNTUsIDIxOSwgMTM0LCAxLCAyMDksIDIwMSwgMjE5LCAxMzQsIDIyNywgCi0gICAgMjE3LCAyMzksIDIxMiwgMjE5LCAxMzQsIDIxNiwgMTEsIDIzOSwgMjEyLCAyMTksIDEzNCwgNDIsIDEwNSwgMjE5LCAxMzQsIAotICAgIDQyLCAxMDgsIDIxOSwgMTM0LCA0MiwgMTQ3LCAyMTksIDEzNCwgNDIsIDE0OSwgMjE5LCAxMzQsIDQyLCAxNzAsIDIxOSwgCi0gICAgMTM0LCA0MiwgMjA5LCAxNTIsIDIxOSwgMTM0LCA0MiwgMjA3LCAxNTEsIDIyMywgMTAyLCAxLCA0NiwgMjUxLCAyOCwgMjIzLCAKLSAgICAxMDIsIDEsIDI1MSwgMjgsIDIyMywgMTAyLCAxLCA0NiwgMjQ4LCAxMDUsIDIyMywgMTAyLCAxLCAyNDgsIDEwNSwgMjIzLCAKLSAgICAxMDIsIDEsIDIzOCwgNjcsIDIyMywgMTAyLCAxLCAyNDQsIDE3NywgMjIzLCAxMDIsIDEsIDQ2LCAyMzcsIDY3LCAyMjMsIAotICAgIDEwMiwgMSwgMjM3LCA2NywgMjIzLCAxMDIsIDEsIDIwNCwgNzAsIDIyMywgMTAyLCAxLCAyMDIsIDk1LCAyMjMsIDEwMiwgMSwgCi0gICAgMjM3LCAxOSwgMjIzLCAxMDIsIDEsIDIwOSwgMTI4LCAyMjMsIDEwMiwgMSwgNDYsIDIwMiwgMjM1LCAyMjMsIDEwMiwgMSwgCi0gICAgMjAyLCAyMzUsIDIyMywgMTAyLCAxLCA0NiwgMjI5LCAyNTAsIDIyMywgMTAyLCAxLCAyMjksIDI1MCwgMjIzLCAxMDIsIDEsIAotICAgIDQ2LCAyMjgsIDE5LCAyMjMsIDEwMiwgMSwgMjI4LCAxOSwgMjIzLCAxMDIsIDEsIDQ2LCAyMjQsIDI0NywgMjIzLCAxMDIsIAotICAgIDEsIDIyNCwgMjQ3LCAyMjMsIDEwMiwgMSwgNDYsIDIyMSwgNDAsIDIyMywgMTAyLCAxLCAyMjEsIDQwLCAyMjMsIDEwMiwgMSwgCi0gICAgMjE0LCAyNDksIDIyMywgMTAyLCAxLCAyNTAsIDMsIDIyMywgMTAyLCAxLCAyMTksIDM0LCAyMjMsIDEwMiwgMSwgMjE1LCAKLSAgICAyNiwgMjIzLCAxMDIsIDEsIDIxNywgNjksIDIyMywgMTAyLCAxLCAyMTYsIDkxLCAyMjMsIDEwMiwgMSwgNDYsIDIxMiwgCi0gICAgMjU1LCAyMjMsIDEwMiwgMSwgMjEyLCAyNTUsIDIyMywgMTAyLCAxLCAyMDksIDIwMSwgMjIzLCAxMDIsIDQyLCAxMDUsIAotICAgIDIyMywgMTAyLCA0MiwgMTA4LCAyMjMsIDEwMiwgNDIsIDE0NywgMjIzLCAxMDIsIDQyLCAxNDksIDIyMywgMTAyLCAyNDUsIAotICAgIDExNiwgNDIsIDE0OSwgMjIzLCAxMDIsIDQyLCAxNzAsIDIyMywgMTAyLCA0MiwgMjA5LCAxNTIsIDIyMywgMTAyLCA0MiwgCi0gICAgMjA3LCAxNTEsIDIyMywgMTAyLCA0MiwgMTE4LCAyMzYsIDExLCAyMzcsIDc4LCAxLCAyNTEsIDI4LCAyMzcsIDc4LCAxLCAKLSAgICAyNDgsIDEwNSwgMjM3LCA3OCwgMSwgMjM4LCA2NywgMjM3LCA3OCwgMSwgMjQ0LCAxNzYsIDIzNywgNzgsIDEsIDIzNywgNjcsIAotICAgIDIzNywgNzgsIDEsIDIwNCwgNzAsIDIzNywgNzgsIDEsIDIwMiwgOTQsIDIzNywgNzgsIDEsIDIzNywgMTksIDIzNywgNzgsIAotICAgIDEsIDIwOSwgMTI4LCAyMzcsIDc4LCAxLCAyMDIsIDIzNSwgMjM3LCA3OCwgMSwgMjI5LCAyNTAsIDIzNywgNzgsIDEsIDIyOCwgCi0gICAgMTksIDIzNywgNzgsIDEsIDIyNCwgMjQ3LCAyMzcsIDc4LCAxLCAyMjEsIDQwLCAyMzcsIDc4LCAxLCAyMTQsIDI0OSwgMjM3LCAKLSAgICA3OCwgMSwgMjUwLCAyLCAyMzcsIDc4LCAxLCAyMTksIDM0LCAyMzcsIDc4LCAxLCAyMTUsIDI2LCAyMzcsIDc4LCAxLCAyMTcsIAotICAgIDY5LCAyMzcsIDc4LCAxLCAyMTIsIDI1NSwgMjM3LCA3OCwgMSwgMjA5LCAyMDEsIDIzNywgNzgsIDQyLCAxMDUsIDIzNywgCi0gICAgNzgsIDQyLCAxNzAsIDIzNywgNzgsIDQyLCAyMDksIDE1MiwgMjM3LCA3OCwgNDIsIDIwNywgMTUxLCAyMzcsIDc4LCA0MiwgCi0gICAgMTE4LCAyMzYsIDExLCAyMTgsIDE3OCwgMSwgMjUxLCAyNSwgMjE4LCAxNzgsIDEsIDI0OCwgMTA4LCAyMTgsIDE3OCwgMSwgCi0gICAgMjM4LCAyMzcsIDIxOCwgMTc4LCAxLCAyNDQsIDM5LCAyMTgsIDE3OCwgMSwgMjM3LCA2NywgMjE4LCAxNzgsIDEsIDIwNCwgCi0gICAgNzcsIDIxOCwgMTc4LCAxLCAyMDIsIDEwOSwgMjE4LCAxNzgsIDEsIDIzNywgMjEsIDIxOCwgMTc4LCAxLCAyMDksIDEzMiwgCi0gICAgMjE4LCAxNzgsIDEsIDIwMiwgMjM2LCAyMTgsIDE3OCwgMSwgMjMwLCAyMiwgMjE4LCAxNzgsIDEsIDIyOCwgMjUsIDIxOCwgCi0gICAgMTc4LCAxLCAyMjQsIDI0NywgMjE4LCAxNzgsIDEsIDIyMSwgNDAsIDIxOCwgMTc4LCAxLCAyMTMsIDEzNywgMjE4LCAxNzgsIAotICAgIDEsIDI1MSwgNTksIDIxOCwgMTc4LCAxLCAyMTksIDM0LCAyMTgsIDE3OCwgMSwgMjE1LCAyNywgMjE4LCAxNzgsIDEsIDIxNywgCi0gICAgNzQsIDIxOCwgMTc4LCAxLCAyMTUsIDIwMCwgMjE4LCAxNzgsIDEsIDIxMiwgMjU1LCAyMTgsIDE3OCwgMSwgMjA5LCAyMDcsIAotICAgIDIxOCwgMTc4LCA0MiwgMTA1LCAyMTgsIDE3OCwgNDIsIDIwOSwgMTUyLCAyMTgsIDE3OCwgNDIsIDIwNywgMTUxLCAyMTgsIAotICAgIDE3OCwgNDIsIDExOCwgMjM2LCAxMSwgMjE4LCAxNzgsIDQyLCAxMDgsIDIxOCwgMTc4LCA0MiwgMTQ3LCAyMTgsIDE3OCwgCi0gICAgMjAzLCAyMzgsIDIxMywgMTMwLCAyMjYsIDE5NiwgMSwgNjMsIDIyNiwgMTk2LCAxLCAyNDksIDI1NSwgMjI2LCAxOTYsIDEsIAotICAgIDIzOSwgNzUsIDIyNiwgMTk2LCAxLCAyNDUsIDUxLCAyMjYsIDE5NiwgMSwgNzQsIDIyNiwgMTk2LCAxLCAyMDYsIDE2NCwgCi0gICAgMjI2LCAxOTYsIDEsIDc1LCAyMjYsIDE5NiwgMSwgMjAzLCAxMjQsIDIyNiwgMTk2LCAxLCAyMzAsIDU0LCAyMjYsIDE5NiwgCi0gICAgMSwgMTU5LCAyMjYsIDE5NiwgMSwgMjI2LCAxODUsIDIyNiwgMTk2LCAxLCAyMjMsIDE2MywgMjI2LCAxOTYsIDEsIDc4LCAKLSAgICAyMjYsIDE5NiwgMSwgMTQ2LCAyMjYsIDE5NiwgMSwgMjExLCAxNjcsIDIyNiwgMTk2LCAxLCAyMTAsIDY5LCAyMjYsIDE5NiwgCi0gICAgMSwgNjgsIDIyNiwgMTk2LCAxLCAyNDAsIDE3NCwgMjI2LCAxOTYsIDEsIDIxNywgMTM0LCAyMjYsIDE5NiwgMSwgMTk0LCAKLSAgICAyMjYsIDE5NiwgMSwgMjA3LCAyNDQsIDIyNiwgMTk2LCAxLCAyNTAsIDIzMSwgMjI2LCAxOTYsIDEsIDI0MSwgOTIsIDIyNiwgCi0gICAgMTk2LCAxLCAyMjYsIDE5OSwgMjI2LCAxOTYsIDEsIDIyMSwgMjI4LCAyMjYsIDE5NiwgMSwgMjQ3LCAxMjUsIDIyNiwgMTk2LCAKLSAgICAyMDgsIDgyLCA4MiwgMTI5LCAyMzYsIDI1MywgMSwgNjMsIDEyOSwgMjM2LCAyNTMsIDEsIDc0LCAxMjksIDIzNiwgMjUzLCAKLSAgICAxLCA3NSwgMTI5LCAyMzYsIDI1MywgMSwgNzgsIDEyOSwgMjM2LCAyNTMsIDEsIDE5OCwgMTI5LCAyMzYsIDI1MywgMSwgCi0gICAgMjA0LCAxMTEsIDEyOSwgMjM2LCAyNTMsIDEsIDI0OSwgMzIsIDEyOSwgMjM2LCAyNTMsIDEsIDI0OSwgMzEsIDEyOSwgMjM2LCAKLSAgICAyNTMsIDEsIDE4NSwgMTI5LCAyMzYsIDI1MywgMSwgMTkyLCAxMjksIDIzNiwgMjUzLCAxLCAyMDEsIDIwMSwgMTI5LCAyMzYsIAotICAgIDI1MywgMSwgMjIzLCAxMTAsIDEyOSwgMjM2LCAyNTMsIDEsIDIyMiwgMjQwLCAxMjksIDIzNiwgMjUzLCAxLCAyMjIsIDIzOSwgCi0gICAgMTI5LCAyMzYsIDI1MywgMSwgMjE2LCAyMjAsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNiwgMjE5LCAxMjksIDIzNiwgMjUzLCAxLCAKLSAgICAyMjgsIDExMywgMTI5LCAyMzYsIDI1MywgMSwgMjI5LCAxNDQsIDEyOSwgMjM2LCAyNTMsIDEsIDIzNywgMTIsIDEyOSwgCi0gICAgMjM2LCAyNTMsIDEsIDIxNSwgMzYsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNSwgMzUsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNCwgCi0gICAgMTc3LCAxMjksIDIzNiwgMjUzLCAxLCAxNzMsIDEyOSwgMjM2LCAyNTMsIDEsIDIxNywgMTI2LCAxMjksIDIzNiwgMjUzLCAxLCAKLSAgICAyMTAsIDIyLCAxMjksIDIzNiwgMjUzLCAxLCAyMTAsIDIxLCAxMjksIDIzNiwgMjUzLCAxLCAyMDksIDE4NywgMTI5LCAyMzYsIAotICAgIDI1MywgMSwgMjA5LCAxODYsIDEyOSwgMjM2LCAyNTMsIDEsIDEzNSwgMTI5LCAyMzYsIDI1MywgMSwgMjQ0LCAyMTIsIDEyOSwgCi0gICAgMjM2LCAyNTMsIDE2LCAyMDUsIDIyNCwgMTI5LCAyMzYsIDI1MywgMTYsIDIwNSwgMjIzLCAxMjksIDE5MSwgMSwgNjMsIAotICAgIDEyOSwgMTkxLCAxLCA3NCwgMTI5LCAxOTEsIDEsIDc1LCAxMjksIDE5MSwgMSwgNzgsIDEyOSwgMTkxLCAxLCAxOTgsIDEyOSwgCi0gICAgMTkxLCAxLCAyMDQsIDExMSwgMTI5LCAxOTEsIDEsIDI0OSwgMzIsIDEyOSwgMTkxLCAxLCAxODUsIDEyOSwgMTkxLCAxLCAKLSAgICAxOTIsIDEyOSwgMTkxLCAxLCAyMDEsIDIwMSwgMTI5LCAxOTEsIDEsIDIyMiwgMjQwLCAxMjksIDE5MSwgMSwgMjE2LCAyMjAsIAotICAgIDEyOSwgMTkxLCAxLCAyMjgsIDExMywgMTI5LCAxOTEsIDEsIDIyOSwgMTQ0LCAxMjksIDE5MSwgMSwgMjM3LCAxMiwgMTI5LCAKLSAgICAxOTEsIDEsIDIxNSwgMzYsIDEyOSwgMTkxLCAxLCAyNTAsIDEyNiwgMjE1LCAzNiwgMTI5LCAxOTEsIDEsIDIxNCwgMTc3LCAKLSAgICAxMjksIDE5MSwgMSwgMTczLCAxMjksIDE5MSwgMSwgMjE3LCAxMjYsIDEyOSwgMTkxLCAxLCAyMTAsIDIyLCAxMjksIDE5MSwgCi0gICAgMSwgMjA5LCAxODcsIDEyOSwgMTkxLCAxLCAxMzUsIDEyOSwgMTkxLCAxLCAyNDQsIDIxMiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAKLSAgICAyNDEsIDExMywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTI5LCAxOTEsIDIyNywgMzYsIAotICAgIDIxNSwgMjMzLCAxMjksIDE5MSwgMjI3LCAzNiwgMjMxLCA1NiwgMTI5LCAxOTEsIDQyLCAxMDUsIDEyOSwgMTkxLCA0MiwgCi0gICAgMTA4LCAxMjksIDE5MSwgNDIsIDE0NywgMTI5LCAxOTEsIDQyLCAxNDksIDEyOSwgMTkxLCA0MiwgMTcwLCAxMjksIDE5MSwgCi0gICAgNDIsIDE5NSwgMTI5LCAxOTEsIDQyLCAyMTMsIDExMSwgMTI5LCAxOTEsIDQyLCAxOTksIDEyOSwgMTkxLCA0MiwgMjIyLCAKLSAgICA2MywgMTI5LCAxOTEsIDQyLCAyMDksIDE1MiwgMTI5LCAxOTEsIDQyLCAyMDcsIDE1MSwgMTI5LCAxOTEsIDQyLCAyMDksIAotICAgIDUzLCAxMjksIDE5MSwgNDIsIDIzOSwgMTUzLCAxMjksIDE5MSwgNDIsIDI0MCwgMTgsIDEyOSwgMTkxLCA0MiwgMjEyLCA3NCwgCi0gICAgMTI5LCAxOTEsIDQyLCAyMTMsIDEwNSwgMTI5LCAxOTEsIDQyLCAxMTgsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTIwLCAKLSAgICAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDEyNiwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyMzksIDE0NywgMjM2LCAxMSwgCi0gICAgMTI5LCAxOTEsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAyMTIsIDg4LCAyMzYsIDExLCAxMjksIAotICAgIDE5MSwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMzYsIDExLCAxMjksIDE5MSwgCi0gICAgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyMCwgMjA5LCAKLSAgICAzNiwgMTI5LCAxOTEsIDQyLCAxMjYsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNDcsIDIwOSwgMzYsIDEyOSwgCi0gICAgMTkxLCA0MiwgMjM5LCAyMzMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjEyLCA4OCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAKLSAgICAyMTMsIDExMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMjIsIAotICAgIDY0LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIwNywgMTUyLCAKLSAgICAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIwOSwgNTQsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNTQsIDIwOSwgMzYsIAotICAgIDEyOSwgMTkxLCA0MiwgMjQwLCAxOSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTIsIDc1LCAyMDksIDM2LCAxMjksIDE5MSwgCi0gICAgNDIsIDIxMywgMTA2LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTM1LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIAotICAgIDIyMiwgNTksIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTE4LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMjYsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAKLSAgICAxNDcsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgCi0gICAgMTkxLCA0MiwgMjEyLCA4OCwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTMsIDExMiwgMjM2LCAxMiwgMjA5LCAKLSAgICAzNiwgMTI5LCAxOTEsIDQyLCAyNDEsIDE0MywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMjIsIDY0LCAyMzYsIAotICAgIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDExOCwgMjA3LCAxNTcsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTIwLCAKLSAgICAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMjYsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIzOSwgCi0gICAgMTQ3LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMzksIDIzMywgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIAotICAgIDEzOCwgMjEyLCA4OCwgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjEzLCAxMTIsIDIwNywgMTU2LCAxMjksIDE5MSwgCi0gICAgMjM5LCAxMzgsIDI0MSwgMTQzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMjIsIDY0LCAyMDcsIDE1NiwgMTI5LCAKLSAgICAxOTEsIDIzOSwgMTM4LCAyMDksIDE1MywgMjA3LCAxNTYsIDIyOSwgMTMxLCAxLCA2MywgMjI5LCAxMzEsIDIyLCAyLCA3NSwgCi0gICAgMjI5LCAxMzEsIDIyLCAyLCA2OCwgMjI5LCAxMzEsIDIyLCAyLCAxMjUsIDE0NiwgMjI5LCAxMzEsIDIyLCAyLCA3NCwgMjI5LCAKLSAgICAxMzEsIDIyLCAyLCA3OCwgMjI5LCAxMzEsIDIyLCAyMjcsIDE5NiwgODIsIDIyOSwgMTMxLCAyLCA1MiwgMjE1LCAyNTMsIAotICAgIDU2LCAyMjksIDEzMSwgMiwgMjUwLCAxODAsIDIyOSwgMTMxLCAyLCAyMDUsIDE5OSwgMjI5LCAxMzEsIDEsIDE3MywgMjI5LCAKLSAgICAxMzEsIDEsIDIyOSwgMTQ0LCAyMjksIDEzMSwgMSwgMjM5LCA4LCAyMjksIDEzMSwgMSwgMjM4LCAxMTksIDIyOSwgMTMxLCAKLSAgICAxLCAyNDcsIDkyLCAyMjksIDEzMSwgMSwgMjQ2LCAxOTksIDIyOSwgMTMxLCAxLCAyMzAsIDE4MSwgMjI5LCAxMzEsIDEsIAotICAgIDIyMSwgMTEsIDIyOSwgMTMxLCAxLCAyMDcsIDI0MSwgMjI5LCAxMzEsIDEsIDIwNywgMjI5LCAyMjksIDEzMSwgMSwgMjQ0LCAKLSAgICAxMjAsIDIyOSwgMTMxLCAxLCAyNDQsIDEwNCwgMjI5LCAxMzEsIDEsIDIyMSwgMjI3LCAyMjksIDEzMSwgMSwgMjEwLCAyMiwgCi0gICAgMjI5LCAxMzEsIDEsIDIwOSwgMTA4LCAyMjksIDEzMSwgMSwgMjQ0LCAyMTIsIDIyOSwgMTMxLCAxLCAyNDQsIDEsIDIyOSwgCi0gICAgMTMxLCAxLCAyMDEsIDIwMSwgMjI5LCAxMzEsIDEsIDE4NSwgMjI5LCAxMzEsIDEsIDIxOCwgMjA4LCAyMjksIDEzMSwgMSwgCi0gICAgMjQ5LCAzMiwgMjI5LCAxMzEsIDEsIDI0OCwgOTgsIDIyOSwgMTMxLCAxLCAxOTIsIDIyOSwgMTMxLCAxLCAxOTgsIDIyOSwgCi0gICAgMTMxLCAxLCAyMTYsIDIyMCwgMjI5LCAxMzEsIDEsIDIyOCwgMTEzLCAyMjksIDEzMSwgMSwgMjA2LCA4NiwgMjI5LCAxMzEsIAotICAgIDEsIDIxMywgOTAsIDIyOSwgMTMxLCAxLCAyMTEsIDE2NCwgMjI5LCAxMzEsIDEsIDIxNSwgMzYsIDIyOSwgMTMxLCAxLCAKLSAgICAyMDIsIDExNiwgMjI5LCAxMzEsIDEsIDE1MiwgMjI5LCAxMzEsIDEsIDIyOSwgNDcsIDIyOSwgMTMxLCAxLCAyMDcsIDIwOSwgCi0gICAgMjI5LCAxMzEsIDIsIDI0OCwgMjMxLCA1NSwgMjI5LCAxMzEsIDIsIDI0NywgMTMsIDIyOSwgMTMxLCAyLCA3MCwgNTYsIAotICAgIDIyOSwgMTMxLCAyMDUsIDIwNCwgMjI5LCAxMzEsIDE3LCAxMDUsIDIyOSwgMTMxLCAxNywgMTA4LCAyMjksIDEzMSwgMTcsIAotICAgIDE0NywgMjI5LCAxMzEsIDE3LCAxNDksIDIyOSwgMTMxLCA0MiwgMjA5LCAxNTIsIDIyOSwgMTMxLCA0MiwgMjA3LCAxNTEsIAotICAgIDIyOSwgMTMxLCA0MiwgMTE4LCAyMzYsIDExLCAyMjksIDEzMSwgNDIsIDExOCwgMjA5LCAzNiwgMjI5LCAxMzEsIDIxNywgCi0gICAgMTc5LCAyNDMsIDg1LCAyMjksIDEzMSwgMjE3LCAxNzksIDUsIDI0NiwgNjEsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjQ2LCAKLSAgICA2MSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDUsIDEzOSwgMTQyLCAyMjksIDEzMSwgMjE3LCAxNzksIDIyNSwgMTE2LCAyMjksIAotICAgIDEzMSwgMjE3LCAxNzksIDIyNywgNSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDQsIDE2NiwgMjI5LCAxMzEsIDIxNywgMTc5LCAKLSAgICA1MiwgMjQ0LCAxNjYsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjI3LCAxMDgsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzNywgNjcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOCwgMTksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzNywgMTksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyNCwgMjQ3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTcsIDY5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDQsIDcwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTIsIDI1NSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjE2LCA5MSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjQ4LCAxMDUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgMjAxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTQsIDIyNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI5LCAyNTAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIyMSwgNDAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIyOSwgMTI2LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTUsIDI2LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMTQsIDI0OSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjQwLCA2MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjUxLCAzMCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjUwLCAyLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDMsIDI1NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM4LCA2NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQ0LCAxNzcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIzOCwgMTA3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDEyOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjAyLCA5NCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjQzLCAyNTEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwMiwgMjM1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMDksIDk0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDksIDczLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCA0MiwgMTA1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCA0MiwgCi0gICAgMjQwLCAxOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMTQxLCAyMzEsIDMxLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM3LCAKLSAgICA0MywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIyOCwgMjgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzcsIDE0OCwgMzgsIAotICAgIDE1MywgMjUwLCAxNDEsIDEsIDIyNSwgNSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIxNywgMTE5LCAzOCwgMTUzLCAyNTAsIAotICAgIDE0MSwgMSwgMjA0LCA3MCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTUsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAKLSAgICAyMTYsIDEyMiwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0OCwgMTM4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAxNjksIAotICAgIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE2LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjMwLCAyMiwgMzgsIDE1MywgCi0gICAgMjUwLCAxNDEsIDEsIDIyMSwgMTc4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjI5LCAxNDAsIDM4LCAxNTMsIDI1MCwgMTQxLCAKLSAgICAxLCAyMTUsIDI4LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MCwgNDcsIAotICAgIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNTEsIDMwLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjUxLCA1OSwgMzgsIDE1MywgCi0gICAgMjUwLCAxNDEsIDEsIDI0NCwgMjA3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM4LCAxODEsIDM4LCAxNTMsIDI1MCwgMTQxLCAKLSAgICAxLCAyNDQsIDE4NCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzOCwgMTE0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAKLSAgICAyNTEsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDIsIDEwNywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgMTAwLCAzOCwgCi0gICAgMTUzLCAyNTAsIDE0MSwgMSwgMjAzLCA0NywgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwOSwgODgsIDM4LCAxNTMsIDI1MCwgCi0gICAgMTQxLCAxLCAyMDIsIDExMCwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAxMDUsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMjA5LCAKLSAgICAxNTIsIDM4LCAxNTMsIDI1MCwgMTQxLCA0MiwgMjA3LCAxNTEsIDIyNSwgMTE1LCAxLCAyNTEsIDI4LCAyMjUsIDExNSwgMSwgCi0gICAgMjQ4LCAxMDUsIDIyNSwgMTE1LCAxLCAyNDgsIDkyLCAyMjUsIDExNSwgMSwgMjM4LCA2NywgMjI1LCAxMTUsIDEsIDIzOCwgCi0gICAgOTIsIDIyNSwgMTE1LCAxLCAyNDQsIDE3NywgMjI1LCAxMTUsIDEsIDIzNywgNjcsIDIyNSwgMTE1LCAxLCAyMDQsIDcwLCAKLSAgICAyMjUsIDExNSwgMiwgMjA3LCAyOSwgMjI1LCAxMTUsIDEsIDIwMiwgOTUsIDIyNSwgMTE1LCAxLCAyMDIsIDczLCAyMjUsIAotICAgIDExNSwgMSwgMjMwLCAxNjMsIDIyNSwgMTE1LCAxLCAyMzAsIDE0NSwgMjI1LCAxMTUsIDEsIDIzNywgMTksIDIyNSwgMTE1LCAKLSAgICAxLCAyMDksIDEyOCwgMjI1LCAxMTUsIDEsIDIwMiwgMjM1LCAyMjUsIDExNSwgMSwgMjI5LCAyNTAsIDIyNSwgMTE1LCAxLCAKLSAgICAyMDMsIDE3OSwgMjI1LCAxMTUsIDEsIDIyOSwgMTMzLCAyMjUsIDExNSwgMSwgMjI4LCAxOSwgMjI1LCAxMTUsIDEsIDI0MywgCi0gICAgMjUwLCAyMjUsIDExNSwgMSwgMjA5LCA5OSwgMjI1LCAxMTUsIDEsIDIyNCwgMjQ3LCAyMjUsIDExNSwgMSwgMjIxLCA0MCwgCi0gICAgMjI1LCAxMTUsIDEsIDIxNCwgMjQ5LCAyMjUsIDExNSwgMSwgMjUwLCAzLCAyMjUsIDExNSwgMSwgMjUxLCAyMzQsIDIyNSwgCi0gICAgMTE1LCAxLCAyMTksIDM0LCAyMjUsIDExNSwgMSwgMjQwLCA2MCwgMjI1LCAxMTUsIDEsIDIxNSwgMjYsIDIyNSwgMTE1LCAxLCAKLSAgICAyMTcsIDY5LCAyMjUsIDExNSwgMSwgMjAzLCAxNTcsIDIyNSwgMTE1LCAxLCAyMTcsIDk1LCAyMjUsIDExNSwgMSwgMjE2LCAKLSAgICA5MSwgMjI1LCAxMTUsIDEsIDIxMiwgMjU1LCAyMjUsIDExNSwgMSwgMjExLCAxMzMsIDIyNSwgMTE1LCAxLCAyMDksIDIwMSwgCi0gICAgMjI1LCAxMTUsIDI1MSwgMTQ2LCAxMzEsIDU1LCAyMjUsIDExNSwgMjUxLCAxNDYsIDEzMSwgNTYsIDIyNSwgMTE1LCA0MiwgCi0gICAgMTA1LCAyMjUsIDExNSwgNDIsIDE3MCwgMjI1LCAxMTUsIDQyLCAyMDksIDE1MiwgMjI1LCAxMTUsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjI1LCAxMTUsIDQyLCAxMTgsIDIzNiwgMTEsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjExLCA5NCwgMjI1LCAxMTUsIDIxNywgCi0gICAgMTc5LCAyMzksIDIxMiwgMjI1LCAxMTUsIDIxNywgMTc5LCA1MiwgNzAsIDIwNCwgNSwgMjQzLCA4NSwgMjI1LCAxMTUsIAotICAgIDIxNywgMTc5LCA3MCwgMjA0LCA1LCAyNDMsIDg1LCAyMjUsIDExNSwgMjE3LCAxNzksIDI0MywgODUsIDIyNSwgMTE1LCAKLSAgICAyMTcsIDE3OSwgMTIwLCAyNDMsIDgzLCAyMjUsIDExNSwgMjE3LCAxNzksIDIyNywgMTE1LCAyNDAsIDcsIDI1MCwgMTQsIDEsIAotICAgIDYzLCAyNTAsIDE0LCAxLCAyNTIsIDI1LCAyNTAsIDE0LCAxLCAyNTAsIDE3OCwgMjUwLCAxNCwgMSwgMjUxLCAyNDAsIDI1MCwgCi0gICAgMTQsIDEsIDI1MCwgMjMxLCAyNTAsIDE0LCAxLCAyNTEsIDI0MSwgMjUwLCAxNCwgMSwgMjUxLCAxMDksIDI1MCwgMTQsIDEsIAotICAgIDI1MSwgMTA1LCAyNTAsIDE0LCAxLCA3NCwgMjUwLCAxNCwgMSwgMjQxLCAxNjEsIDI1MCwgMTQsIDEsIDc4LCAyNTAsIDE0LCAKLSAgICAxLCAyMjAsIDE4LCAyNTAsIDE0LCAxLCA3NSwgMjUwLCAxNCwgMSwgMjMxLCA4MywgMjUwLCAxNCwgMSwgNjgsIDI1MCwgMTQsIAotICAgIDEsIDIwNiwgMTc4LCAyNTAsIDE0LCAxLCAyMjksIDIwMSwgMjUwLCAxNCwgMSwgMjAzLCAxNzYsIDI1MCwgMTQsIDEsIDIwMywgCi0gICAgMTM4LCAyNTAsIDE0LCAxLCAyMDMsIDE0OCwgMjUwLCAxNCwgMSwgMjM4LCAxOTAsIDI1MCwgMTQsIDEsIDIzOCwgMTUwLCAKLSAgICAyNTAsIDE0LCAxLCAyMzgsIDEwNSwgMjUwLCAxNCwgMSwgMjQ2LCAyMzgsIDI1MCwgMTQsIDEsIDIzMCwgMTYxLCAyNTAsIAotICAgIDE0LCAxLCAyMDksIDE4NywgMjUwLCAxNCwgMSwgMjA5LCA5MiwgMjUwLCAxNCwgMSwgMjQ0LCA3NSwgMjUwLCAxNCwgMSwgCi0gICAgMjQzLCAyNDgsIDI1MCwgMTQsIDEsIDIwNywgMjM2LCAyNTAsIDE0LCAxLCAyMTksIDM0LCAyNTAsIDE0LCAxLCAyNDAsIDYwLCAKLSAgICAyNTAsIDE0LCAxLCAyNDgsIDE2MiwgMjUwLCAxNCwgMSwgMjQ4LCA5NCwgMjUwLCAxNCwgMSwgMjIyLCAxOTAsIDI1MCwgMTQsIAotICAgIDEsIDIyMiwgMTA2LCAyNTAsIDE0LCAxLCAyMjIsIDEwNywgMjUwLCAxNCwgMSwgMjIyLCAyNDAsIDI1MCwgMTQsIDEsIDIyMSwgCi0gICAgMSwgMjUwLCAxNCwgMSwgMjIxLCAyMjIsIDI1MCwgMTQsIDEsIDIyNSwgMjAsIDI1MCwgMTQsIDEsIDIzNiwgMTg2LCAyNTAsIAotICAgIDE0LCAxLCAyMDIsIDE2NiwgMjUwLCAxNCwgMSwgMjAzLCA1MiwgMjUwLCAxNCwgMSwgMjA2LCA1NSwgMjUwLCAxNCwgMSwgCi0gICAgMjE2LCAxNTgsIDI1MCwgMTQsIDEsIDIyNywgMjM0LCAyNTAsIDE0LCAxLCAyMTQsIDE3NywgMjUwLCAxNCwgMSwgMjAyLCAKLSAgICA5MiwgMjUwLCAxNCwgMSwgMjEzLCA0MywgMjUwLCAxNCwgMSwgMjAyLCA3MSwgMjUwLCAxNCwgMSwgMjEyLCAxNjksIDI1MCwgCi0gICAgMTQsIDEsIDIxMSwgMTM0LCAyNTAsIDE0LCAxLCAyMzcsIDY3LCAyNTAsIDE0LCAyNTEsIDE0NiwgODIsIDIwOCwgMjEzLCAKLSAgICAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgNSwgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIAotICAgIDIyOCwgOCwgMTIwLCAxODcsIDExNSwgMTE4LCA3MCwgMjE3LCAxNzgsIDIyOCwgOCwgMTE4LCA3MCwgMTE1LCAxMjAsIDE4NywgCi0gICAgMjE3LCAxNzgsIDIyOCwgOCwgMTIwLCAyMTUsIDI1MCwgMTE1LCAxMTgsIDIxNSwgMjUzLCAyMTcsIDE3OCwgMjI4LCA4LCAKLSAgICAxMTgsIDIxNSwgMjUzLCAxMTUsIDEyMCwgMjE1LCAyNTAsIDIxNywgMTc4LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyNTEsIAotICAgIDI4LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyNDgsIDEwNSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM4LCA2NywgMjMxLCAxMCwgCi0gICAgMjE5LCA3MCwgMSwgMjQ0LCAxNzcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzNywgNjcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIAotICAgIDIwNCwgNzAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwMiwgOTUsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIzNywgMTksIDIzMSwgCi0gICAgMTAsIDIxOSwgNzAsIDEsIDIwOSwgMTI4LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDIsIDIzNSwgMjMxLCAxMCwgMjE5LCAKLSAgICA3MCwgMSwgMjI5LCAyNTAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyOCwgMTksIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyNCwgCi0gICAgMjQ3LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMjEsIDQwLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTQsIDI0OSwgMjMxLCAKLSAgICAxMCwgMjE5LCA3MCwgMSwgMjUwLCAzLCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTksIDM0LCAyMzEsIDEwLCAyMTksIDcwLCAKLSAgICAxLCAyMTUsIDI2LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTcsIDY5LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTYsIDkxLCAKLSAgICAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMTIsIDI1NSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjA5LCAyMDEsIDIzMSwgMTAsIAotICAgIDIxOSwgNzAsIDQyLCAxMDUsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxMDgsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxNDcsIAotICAgIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxNDksIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAyMDksIDE1MiwgMjMxLCAxMCwgMjE5LCAKLSAgICA3MCwgNDIsIDIwNywgMTUxLCAyMzEsIDEwLCAyMTksIDcwLCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDEwLCAyMTksIDcwLCAKLSAgICA0MiwgMTE4LCAyMDksIDM2LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjUxLCAyOCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIAotICAgIDI0OCwgMTA1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjM4LCA2NywgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDI0NCwgMTc3LCAKLSAgICAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjM3LCA2NywgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwNCwgNjksIDIzMSwgMTAsIAotICAgIDIxOSwgMTQ5LCAxLCAyMDIsIDk1LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjM3LCAxOSwgMjMxLCAxMCwgMjE5LCAxNDksIAotICAgIDEsIDIwOSwgMTI4LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjAyLCAyMzUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjksIAotICAgIDI1MCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyOCwgMTksIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMjQsIDI0NiwgMjMxLCAKLSAgICAxMCwgMjE5LCAxNDksIDEsIDIyMSwgNDAsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMTQsIDI0OSwgMjMxLCAxMCwgMjE5LCAKLSAgICAxNDksIDEsIDIxOSwgMzQsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMTUsIDI2LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgCi0gICAgMjEyLCAyNTUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDksIDIwMSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMDUsIAotICAgIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTA4LCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDE0NywgMjMxLCAxMCwgMjE5LCAKLSAgICAxNDksIDQyLCAxNDksIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMjA5LCAxNTIsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMjA3LCAxNTEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIAotICAgIDExOCwgMjA5LCAzNiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNTEsIDI4LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI0OCwgCi0gICAgMTA1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIzOCwgNjcsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjQ0LCAxNzcsIAotICAgIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM3LCA2NywgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMDQsIDY5LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDEsIDIwMiwgOTUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM3LCAxOSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKLSAgICAxLCAyMDIsIDIzNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjksIDI1MCwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMjgsIAotICAgIDE5LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyNCwgMjQ2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyMSwgNDAsIDIxNywgCi0gICAgMjAzLCAyMTksIDE0OSwgMSwgMjE0LCAyNDksIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjE5LCAzNCwgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCAxLCAyMTUsIDI2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIxMiwgMjU1LCAyMTcsIDIwMywgMjE5LCAKLSAgICAxNDksIDEsIDIwOSwgMjAxLCAyMTcsIDIwMywgMjE5LCAxNDksIDIxNCwgMTY4LCA4MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKLSAgICAyMDcsIDE3NCwgMjE0LCAxNjgsIDgyLCAyMTcsIDIwMywgMjE5LCAxNDksIDIzOSwgMTQ3LCAxODcsIDMsIDI0NSwgMTMwLCAKLSAgICAyMTcsIDIwMywgMjE5LCAxNDksIDIzOSwgMTQ3LCAxODcsIDMsIDI0MywgODUsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIAotICAgIDEwNSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMTA4LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxNDcsIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgNDIsIDE0OSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgMjA5LCAxNTIsIDIxNywgMjAzLCAyMTksIDE0OSwgCi0gICAgNDIsIDIwNywgMTUxLCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxMTgsIDIzNiwgMTEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDYzLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDYzLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgCi0gICAgMTA5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCA3NSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA3NSwgMzgsIAotICAgIDIwNywgMTc4LCAxLCAyMDMsIDQwLCA3NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgNzgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDIyMCwgNzMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjIwLCA3MywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAyMzIsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAyMzIsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTA4LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTA4LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDgxLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgODEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEyMiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDEyMiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDcsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MCwgMTgxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MCwgMTgxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUwLCA4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDkwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgOTAsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMTAxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI1MSwgMTAxLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMjAsIDcxLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDIyMCwgNzEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgMzksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCAzOSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAxMDAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgMTA2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDEwMywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCAyMzEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCA5OCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA3MCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDcwLCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDg5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgODksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgNTYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA1NiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDIyMywgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCA3OCwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDk3LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDQ2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMjAsIDksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDIzNSwgMTY0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDE2OSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDE2OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCAxNDgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUwLCAxNDgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIzMCwgMjI2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDIzMCwgMjI2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyMTksIDI0NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyMTksIDI0NiwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUwLCAxNDQsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUwLCAxNDQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MCwgODEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTQsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MCwgNzUsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUwLCA3NSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCA3LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI0MSwgNywgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjUwLCA0OSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDQ5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyNTEsIDkxLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgOTEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDIxOSwgMjI0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDgsIDIxNSwgMzgsIDE0NSwgNiwgMSwgNjMsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI1MiwgMjUsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTcxLCAzOCwgMTQ1LCA2LCAxLCAyNTAsIDI0MiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjksIDM4LCAxNDUsIDYsIDEsIDI0MSwgODksIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY2LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2NSwgMzgsIDE0NSwgNiwgMSwgMjUwLCAyMjYsIDM4LCAxNDUsIDYsIDEsIDc0LCAzOCwgCi0gICAgMTQ1LCA2LCAxLCAyNDYsIDE3LCA3NCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjEsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTU0LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1MywgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTAsIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTQ3LCAzOCwgMTQ1LCA2LCAxLCA3NSwgMzgsIDE0NSwgNiwgMSwgMjMxLCA4MywgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMzIsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTI5LCAzOCwgMTQ1LCA2LCAxLCAyNTEsIDQ3LCAzOCwgMTQ1LCA2LCAxLCAyMDYsIDIzMiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMjIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTA1LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDEwMywgMzgsIDE0NSwgNiwgMSwgMjQxLCA5MiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA1NiwgMzgsIDE0NSwgNiwgMSwgNzgsIAotICAgIDM4LCAxNDUsIDYsIDEsIDIyMCwgMTgsIDM4LCAxNDUsIDYsIDEsIDIyMiwgNzEsIDIyMCwgNzMsIDM4LCAxNDUsIDYsIDEsIAotICAgIDIxNSwgMTQxLCAyMjAsIDczLCAzOCwgMTQ1LCA2LCAxLCAyMjAsIDcyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDQ2LCAzOCwgCi0gICAgMTQ1LCA2LCAxLCAyNDEsIDk3LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDI4LCAzOCwgMTQ1LCA2LCAxLCAyMTIsIDIyOCwgMjQxLCAKLSAgICAyOCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNywgMzgsIDE0NSwgNiwgMSwgMjQwLCAyNTIsIDM4LCAxNDUsIDYsIDEsIDI0MCwgCi0gICAgMjUwLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDcwLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDIzOSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxNjcsIDM4LCAxNDUsIDYsIDEsIDY4LCAzOCwgMTQ1LCA2LCAxLCAyMDYsIDE3OCwgMzgsIDE0NSwgNiwgMSwgMjIyLCA3MSwgCi0gICAgMjA3LCAyNCwgMzgsIDE0NSwgNiwgMSwgMjE1LCAxNDEsIDIwNywgMjQsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjI2LCAzOCwgCi0gICAgMTQ1LCA2LCAxLCAyNDAsIDE4MSwgMzgsIDE0NSwgNiwgMSwgMjQwLCAxNzYsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNjksIDU0LCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyMDYsIDE5MywgMzgsIDE0NSwgNSwgMSwgNjMsIDM4LCAxNDUsIDUsIDEsIDI1MiwgMjUsIDM4LCAKLSAgICAxNDUsIDUsIDEsIDI0MSwgMTcxLCAzOCwgMTQ1LCA1LCAxLCAyNTAsIDI0MiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjksIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgODksIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjUwLCAyMjYsIDM4LCAxNDUsIDUsIDEsIDc0LCAzOCwgMTQ1LCA1LCAxLCAyNDYsIDE3LCA3NCwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjEsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTU0LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIAotICAgIDE1MywgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNTAsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTQ3LCAzOCwgMTQ1LCA1LCAxLCA3NSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjMxLCA4MywgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTI5LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNTEsIDQ3LCAzOCwgMTQ1LCA1LCAxLCAyMDYsIDIzMiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMjIsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTA1LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEwMywgMzgsIDE0NSwgNSwgMSwgMjQxLCA5MiwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCA1NiwgMzgsIDE0NSwgNSwgMSwgNzgsIDM4LCAxNDUsIDUsIDEsIDIyMCwgMTgsIDM4LCAKLSAgICAxNDUsIDUsIDEsIDIyMiwgNzEsIDIyMCwgNzMsIDM4LCAxNDUsIDUsIDEsIDIxNSwgMTQxLCAyMjAsIDczLCAzOCwgMTQ1LCAKLSAgICA1LCAxLCAyMjAsIDcyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDQ2LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDk3LCAzOCwgMTQ1LCAKLSAgICA1LCAxLCAyNDEsIDI4LCAzOCwgMTQ1LCA1LCAxLCAyMTIsIDIyOCwgMjQxLCAyOCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNywgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQwLCAyNTIsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjUwLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDcwLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDAsIDIzOSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjcsIDM4LCAxNDUsIDUsIDEsIDY4LCAzOCwgCi0gICAgMTQ1LCA1LCAxLCAyMDYsIDE3OCwgMzgsIDE0NSwgNSwgMSwgMjIyLCA3MSwgMjA3LCAyNCwgMzgsIDE0NSwgNSwgMSwgMjE1LCAKLSAgICAxNDEsIDIwNywgMjQsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjI2LCAzOCwgMTQ1LCA1LCAxLCAyNDAsIDE4MSwgMzgsIDE0NSwgCi0gICAgNSwgMSwgMjQwLCAxNzYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNjksIDU0LCAzOCwgMTQ1LCA1LCAxLCAyMDYsIDE5MywgMzgsIAotICAgIDE0NSwgNDIsIDEwNSwgMzgsIDE0NSwgNDIsIDE3MCwgMzgsIDE0NSwgNDIsIDIwOSwgMTUyLCAzOCwgMTQ1LCA0MiwgMjQwLCAKLSAgICAxOCwgMzgsIDE0NSwgNDIsIDExOCwgMjM2LCAxMSwgMzgsIDE0NSwgNDIsIDExOCwgMjA5LCAzNiwgMjE1LCAxMjksIDE3LCAKLSAgICAxMDUsIDIxNSwgMTI5LCAxNywgMTA4LCAyMTUsIDEyOSwgMTcsIDE0NywgMjE1LCAxMjksIDE3LCAxNDksIDIxNSwgMTI5LCAKLSAgICAxNywgMTcwLCAyMTUsIDEyOSwgMTcsIDE5NSwgMjE1LCAxMjksIDE3LCAyMTMsIDExMSwgMjE1LCAxMjksIDE3LCAxOTksIAotICAgIDIxNSwgMTI5LCAxNywgMjIyLCA2MywgMjE1LCAxMjksIDQyLCAyMDksIDE1MiwgMjE1LCAxMjksIDQyLCAyMDcsIDE1MSwgCi0gICAgMjE1LCAxMjksIDQyLCAyMDksIDUzLCAyMTUsIDEyOSwgNDIsIDIzOSwgMTUzLCAyMTUsIDEyOSwgNDIsIDI0MCwgMTgsIAotICAgIDIxNSwgMTI5LCA0MiwgMjEyLCA3NCwgMjE1LCAxMjksIDQyLCAyMTMsIDEwNSwgMjE1LCAxMjksIDQyLCAyNDEsIDEzNCwgCi0gICAgMjE1LCAxMjksIDQyLCAyMjIsIDU4LCAyMTUsIDEyOSwgNDIsIDExOCwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAxMjAsIAotICAgIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMTI2LCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCAKLSAgICAyMTUsIDEyOSwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDIxNSwgCi0gICAgMTI5LCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDIxNSwgMTI5LCAKLSAgICA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMjE1LCAxMjksIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAyMTUsIDEyOSwgMjM5LCAKLSAgICAxMzgsIDExOCwgMjE3LCA1NSwgMjE1LCAxMjksIDIzOSwgMTM4LCAxMTgsIDIwOSwgNjAsIDIxNSwgMTI5LCAyMzksIDEzOCwgCi0gICAgMTIwLCAyMDksIDU3LCAxNDQsIDIsIDI0NywgNTIsIDE0NCwgMiwgMjUwLCAxODAsIDE0NCwgMiwgMjA1LCAxOTksIDE0NCwgCi0gICAgMiwgMjMwLCAxMzUsIDE0NCwgMiwgMjA2LCAyMjIsIDE0NCwgMSwgNjMsIDE0NCwgMSwgMjUyLCAyNSwgMTQ0LCAxLCA3NSwgCi0gICAgMTQ0LCAxLCAyMzEsIDgzLCAxNDQsIDEsIDY4LCAxNDQsIDEsIDIwNiwgMTc4LCAxNDQsIDEsIDEyNSwgMTQ2LCAxNDQsIDEsIAotICAgIDEyNSwgMjE1LCAxODYsIDE0NCwgMSwgMTI1LCAxNTksIDE0NCwgMSwgMTI1LCAyMjcsIDc4LCAxNDQsIDEsIDc0LCAxNDQsIAotICAgIDEsIDI1MSwgNjQsIDE0NCwgMSwgNzgsIDE0NCwgMSwgMjUwLCAzNCwgMTQ0LCAxLCAxNzMsIDE0NCwgMSwgMjI5LCAxNDQsIAotICAgIDE0NCwgMSwgMjM5LCA4LCAxNDQsIDEsIDIzOCwgMTE5LCAxNDQsIDEsIDIyMiwgMjAzLCAxNDQsIDEsIDI0NywgOTIsIDE0NCwgCi0gICAgMSwgMjQ2LCAxOTksIDE0NCwgMSwgMjMwLCAxODEsIDE0NCwgMSwgMjMwLCAxNDksIDE0NCwgMSwgMjIxLCAxMSwgMTQ0LCAxLCAKLSAgICAyMDcsIDI0MSwgMTQ0LCAxLCAyMDcsIDIyOSwgMTQ0LCAxLCAyNDQsIDEyMCwgMTQ0LCAxLCAyNDQsIDEwNCwgMTQ0LCAxLCAKLSAgICAyMjEsIDIyNywgMTQ0LCAxLCAyMTAsIDIyLCAxNDQsIDEsIDIwOSwgMTA4LCAxNDQsIDEsIDI0NCwgMjEyLCAxNDQsIDEsIAotICAgIDI0NCwgMSwgMTQ0LCAxLCAyMDEsIDIwMSwgMTQ0LCAxLCAxODUsIDE0NCwgMSwgMjE4LCAyMDgsIDE0NCwgMSwgMjQ5LCAzMiwgCi0gICAgMTQ0LCAxLCAyNDgsIDk4LCAxNDQsIDEsIDE5MiwgMTQ0LCAxLCAxOTgsIDE0NCwgMSwgMjE2LCAyMjAsIDE0NCwgMSwgMjI4LCAKLSAgICAxMTMsIDE0NCwgMSwgMjA2LCA4NiwgMTQ0LCAxLCAyMTMsIDkwLCAxNDQsIDEsIDIxMSwgMTY0LCAxNDQsIDEsIDIxNSwgMzYsIAotICAgIDE0NCwgMSwgMTUyLCAxNDQsIDEsIDIyNywgNzcsIDE0NCwgMSwgMzgsIDQ0LCAyMjcsIDY4LCAxNDQsIDEsIDM4LCA0NCwgCi0gICAgMjE1LCAxODUsIDE0NCwgMSwgMzgsIDQ0LCAyMjEsIDIwOSwgMTQ0LCAyMiwgMiwgMjUyLCAyNSwgMTQ0LCAyMiwgMiwgMjQ4LCAKLSAgICA5NSwgMjUyLCAyNSwgMTQ0LCAyMiwgMiwgNzUsIDE0NCwgMjIsIDIsIDIzMSwgODMsIDE0NCwgMjIsIDIsIDY4LCAxNDQsIAotICAgIDIyLCAyLCAyMDYsIDE3OCwgMTQ0LCAyMiwgMiwgMTI1LCAxNDYsIDE0NCwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE0NCwgCi0gICAgMjIsIDIsIDEyNSwgMTU5LCAxNDQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE0NCwgMjIsIDIsIDc0LCAxNDQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAxNDQsIDIyLCAyLCA3OCwgMTQ0LCAyMiwgMiwgMjUwLCAzNCwgMTQ0LCAyMDUsIDIwNCwgMTQ0LCAyNDQsIAotICAgIDE2NiwgMTQ0LCA1MiwgMjQ0LCAxNjYsIDE0NCwgMjE3LCAxNzksIDI0MywgODUsIDE0NCwgMjE3LCAxNzksIDUyLCAyNDMsIAotICAgIDg1LCAxNDQsIDIxNywgMTc5LCAyMjcsIDExNCwgMTQ0LCAyMTcsIDE3OSwgMjQ1LCAxMzksIDE0MiwgMTQ0LCAyMTcsIDE3OSwgCi0gICAgMjI3LCA1LCAxNDQsIDQyLCAxMDUsIDE0NCwgNDIsIDEwOCwgMTQ0LCA0MiwgMTQ3LCAxNDQsIDQyLCAxNDksIDE0NCwgNDIsIAotICAgIDE3MCwgMTQ0LCA0MiwgMTk1LCAxNDQsIDQyLCAyMTMsIDExMSwgMTQ0LCA0MiwgMTk5LCAxNDQsIDQyLCAyMjIsIDYzLCAKLSAgICAxNDQsIDQyLCAyMDksIDE1MiwgMTQ0LCA0MiwgMjA3LCAxNTEsIDE0NCwgNDIsIDIwOSwgNTMsIDE0NCwgNDIsIDIzOSwgCi0gICAgMTUzLCAxNDQsIDQyLCAyNDAsIDE4LCAxNDQsIDQyLCAyMTIsIDc0LCAxNDQsIDQyLCAyMTMsIDEwNSwgMTQ0LCA0MiwgMjQxLCAKLSAgICAxMzQsIDE0NCwgNDIsIDIyMiwgNTgsIDE0NCwgNDIsIDExOCwgMjM2LCAxMSwgMTQ0LCA0MiwgMTE4LCAyMDksIDM2LCAxNDQsIAotICAgIDE3LCAyMDIsIDg0LCAxNDQsIDE3LCAxMDUsIDE0NCwgMTcsIDEwOCwgMTQ0LCAxNywgMTQ3LCAxNDQsIDE3LCAxNDksIDE0NCwgCi0gICAgMTcsIDE3MCwgMTQ0LCAxNywgMTk1LCAxNDQsIDE3LCAyMTMsIDExMSwgMTQ0LCAxNywgMTk5LCAxNDQsIDE3LCAyMjIsIDYzLCAKLSAgICAxNDQsIDQyLCAyMzAsIDk2LCAyMzAsIDE1LCAyLCAyNDcsIDUyLCAyMzAsIDE1LCAyLCAyNTAsIDE4MCwgMjMwLCAxNSwgMiwgCi0gICAgMjA1LCAxOTksIDIzMCwgMTUsIDEsIDYzLCAyMzAsIDE1LCAxLCAyNTIsIDI1LCAyMzAsIDE1LCAxLCA3NSwgMjMwLCAxNSwgCi0gICAgMSwgMjMxLCA4MywgMjMwLCAxNSwgMSwgNjgsIDIzMCwgMTUsIDEsIDIwNiwgMTc4LCAyMzAsIDE1LCAxLCA3NCwgMjMwLCAKLSAgICAxNSwgMSwgMjUxLCA2NCwgMjMwLCAxNSwgMSwgNzgsIDIzMCwgMTUsIDEsIDI1MCwgMzQsIDIzMCwgMTUsIDEsIDE3MywgCi0gICAgMjMwLCAxNSwgMSwgMjI5LCAxNDQsIDIzMCwgMTUsIDEsIDIzOSwgOCwgMjMwLCAxNSwgMSwgMjM4LCAxMTksIDIzMCwgMTUsIAotICAgIDEsIDIyMiwgMjAzLCAyMzAsIDE1LCAxLCAyNDcsIDkyLCAyMzAsIDE1LCAxLCAyNDYsIDE5OSwgMjMwLCAxNSwgMSwgMjMwLCAKLSAgICAxODEsIDIzMCwgMTUsIDEsIDIzMCwgMTQ5LCAyMzAsIDE1LCAxLCAyMjEsIDExLCAyMzAsIDE1LCAxLCAyMDcsIDI0MSwgCi0gICAgMjMwLCAxNSwgMSwgMjA3LCAyMjksIDIzMCwgMTUsIDEsIDI0NCwgMTIwLCAyMzAsIDE1LCAxLCAyNDQsIDEwOSwgMjMwLCAKLSAgICAxNSwgMSwgMjQ0LCAxMDQsIDIzMCwgMTUsIDEsIDIxNiwgNjEsIDIzMCwgMTUsIDEsIDIyMSwgMjI3LCAyMzAsIDE1LCAxLCAKLSAgICAyMTAsIDIyLCAyMzAsIDE1LCAxLCAyMDksIDEwOCwgMjMwLCAxNSwgMSwgMjQ0LCAyMTIsIDIzMCwgMTUsIDEsIDI0NCwgMSwgCi0gICAgMjMwLCAxNSwgMSwgMjAxLCAyMDEsIDIzMCwgMTUsIDEsIDE4NSwgMjMwLCAxNSwgMSwgMjE4LCAyMDgsIDIzMCwgMTUsIDEsIAotICAgIDI0OSwgMzIsIDIzMCwgMTUsIDEsIDI0OCwgOTgsIDIzMCwgMTUsIDEsIDE5MiwgMjMwLCAxNSwgMSwgMTk4LCAyMzAsIDE1LCAKLSAgICAxLCAyMTYsIDIyMCwgMjMwLCAxNSwgMSwgMjI4LCAxMTMsIDIzMCwgMTUsIDEsIDIwNiwgODYsIDIzMCwgMTUsIDEsIDIxMywgCi0gICAgOTAsIDIzMCwgMTUsIDEsIDIxMSwgMTY0LCAyMzAsIDE1LCAxLCAyMTUsIDM2LCAyMzAsIDE1LCAxLCAxNTIsIDIzMCwgMTUsIAotICAgIDIyLCAyLCAyNTIsIDI1LCAyMzAsIDE1LCAyMiwgMiwgNzUsIDIzMCwgMTUsIDIyLCAyLCAyMzEsIDgzLCAyMzAsIDE1LCAyMiwgCi0gICAgMiwgNjgsIDIzMCwgMTUsIDIyLCAyLCAyMDYsIDE3OCwgMjMwLCAxNSwgMjIsIDIsIDc0LCAyMzAsIDE1LCAyMiwgMiwgMjUxLCAKLSAgICA2NCwgMjMwLCAxNSwgMjIsIDIsIDc4LCAyMzAsIDE1LCAyMiwgMiwgMjUwLCAzNCwgMjMwLCAxNSwgMiwgMjA1LCAyMDQsIAotICAgIDIzMCwgMTUsIDIsIDIyMSwgNTEsIDIzMCwgMTUsIDI1MSwgMTQ2LCA1NCwgMjMwLCAxNSwgMjQxLCA1OSwgNTQsIDIzMCwgCi0gICAgMTUsIDQyLCA1NCwgMjMwLCAxNSwgMjE0LCAxNjgsIDgyLCAyMzAsIDE1LCA1MiwgMjE0LCAxNjgsIDgyLCAyMzAsIDE1LCAKLSAgICAyNDQsIDE2NiwgMjMwLCAxNSwgNTIsIDI0NCwgMTY2LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxNSwgMTksIDIxMSwgCi0gICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA5LCAyNTEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQ5LCA1LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDEsIDI0NywgODEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQ0LCAxOTMsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgCi0gICAgMjM4LCAyNDksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI1LCAxNDgsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIyLCAKLSAgICAyMDAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI4LCA4OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjMsIDkzLCAyMTEsIAotICAgIDI0NiwgMjExLCAyNTQsIDEsIDIwNiwgODIsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE5LCAxNTAsIDIxMSwgMjQ2LCAKLSAgICAyMTEsIDI1NCwgMSwgMjAzLCA5MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTYsIDE5OSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxLCAyMzcsIDE0OCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMzAsIDIwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIAotICAgIDIzMCwgMTc1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMSwgOCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNTEsIDczLCAKLSAgICAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI0MSwgMTU5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIzMSwgODQsIDIxMSwgCi0gICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA3LCAxOCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjAsIDYwLCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDEsIDI0MSwgMTQ3LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyNSwgMTYxLCAyMTEsIDI0NiwgMjExLCAyNTQsIAotICAgIDE3LCAyMDIsIDg0LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxMDUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDEwOCwgCi0gICAgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTQ3LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxNDksIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMTcsIDE3MCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTk1LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAyMTMsIAotICAgIDExMSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTk5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAyMjIsIDYzLCAyNDYsIAotICAgIDE5MywgMiwgMjQ3LCA1MiwgMjQ2LCAxOTMsIDIsIDI1MCwgMTgwLCAyNDYsIDE5MywgMiwgMjA1LCAxOTksIDI0NiwgMTkzLCAKLSAgICAxLCAyNTIsIDI1LCAyNDYsIDE5MywgMSwgNzUsIDI0NiwgMTkzLCAxLCA2OCwgMjQ2LCAxOTMsIDEsIDc0LCAyNDYsIDE5MywgCi0gICAgMSwgMjMwLCA0MSwgMjQ2LCAxOTMsIDEsIDIyOSwgMTQzLCAyNDYsIDE5MywgMSwgMjM5LCA1LCAyNDYsIDE5MywgMSwgMjM4LCAKLSAgICAxMTgsIDI0NiwgMTkzLCAxLCAyMjIsIDIwMiwgMjQ2LCAxOTMsIDEsIDI0NywgOTEsIDI0NiwgMTkzLCAxLCAyNDYsIDE5OCwgCi0gICAgMjQ2LCAxOTMsIDEsIDIzMCwgMTgwLCAyNDYsIDE5MywgMSwgMjMwLCAxNDgsIDI0NiwgMTkzLCAxLCAyMjEsIDEwLCAyNDYsIAotICAgIDE5MywgMSwgMjA3LCAyNDAsIDI0NiwgMTkzLCAxLCAyMDcsIDIyOCwgMjQ2LCAxOTMsIDEsIDI0NCwgMTE5LCAyNDYsIDE5MywgCi0gICAgMSwgMjQ0LCAxMDMsIDI0NiwgMTkzLCAxLCAyMjEsIDIyNiwgMjQ2LCAxOTMsIDEsIDIxMCwgMTgsIDI0NiwgMTkzLCAxLCAKLSAgICAyMDksIDEwNywgMjQ2LCAxOTMsIDEsIDI0NCwgMjExLCAyNDYsIDE5MywgMSwgMjQ0LCAwLCAyNDYsIDE5MywgMSwgMjIzLCAKLSAgICAxMDYsIDI0NiwgMTkzLCAxLCAyMTksIDE2OCwgMjQ2LCAxOTMsIDEsIDIxOCwgMjA3LCAyNDYsIDE5MywgMSwgMjQ5LCAzMCwgCi0gICAgMjQ2LCAxOTMsIDEsIDI0OCwgOTcsIDI0NiwgMTkzLCAxLCAyMjUsIDE3NSwgMjQ2LCAxOTMsIDEsIDIwMiwgMTY3LCAyNDYsIAotICAgIDE5MywgMSwgMjAzLCAxMTAsIDI0NiwgMTkzLCAxLCAyMTYsIDIxNiwgMjQ2LCAxOTMsIDEsIDIyOCwgMTEyLCAyNDYsIDE5MywgCi0gICAgMSwgMjA0LCAxMTAsIDI0NiwgMTkzLCAxLCAyMTUsIDMzLCAyNDYsIDE5MywgMSwgMjM3LCAxNTcsIDI0NiwgMTkzLCAyMiwgCi0gICAgMiwgNjMsIDI0NiwgMTkzLCAyMiwgMiwgNzUsIDI0NiwgMTkzLCAyMiwgMiwgMjMxLCA4MywgMjQ2LCAxOTMsIDIyLCAyLCAKLSAgICA2OCwgMjQ2LCAxOTMsIDIyLCAyLCAyMDYsIDE3OCwgMjQ2LCAxOTMsIDIyLCAyLCA3NCwgMjQ2LCAxOTMsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAyNDYsIDE5MywgMjIsIDIsIDc4LCAyNDYsIDE5MywgMjIsIDIsIDI1MCwgMzQsIDI0NiwgMTkzLCAyMiwgMiwgMjIwLCAKLSAgICA1NywgMjQ2LCAxOTMsIDE1OCwgODIsIDI0NiwgMTkzLCAyNTAsIDM1LCA4MiwgMjQ2LCAxOTMsIDIwNSwgMjA0LCAyNDYsIAotICAgIDE5MywgMjI1LCAxNzMsIDI0NiwgMTkzLCAxNywgMjAyLCA4NCwgMjQ2LCAxOTMsIDE3LCAxMDUsIDI0NiwgMTkzLCAxNywgCi0gICAgMTA4LCAyNDYsIDE5MywgMTcsIDE0NywgMjQ2LCAxOTMsIDE3LCAxNDksIDI0NiwgMTkzLCAxNywgMTcwLCAyNDYsIDE5MywgCi0gICAgMTcsIDE5NSwgMjQ2LCAxOTMsIDE3LCAyMTMsIDExMSwgMjQ2LCAxOTMsIDE3LCAxOTksIDI0NiwgMTkzLCAxNywgMjIyLCAKLSAgICA2MywgMjQ2LCAxOTMsIDIxNCwgMTY4LCA4MiwgMjQ2LCAxOTMsIDI0NCwgMTY2LCAyNDYsIDE5MywgNTIsIDI0NCwgMTY2LCAKLSAgICAyNDYsIDE5MywgMjE3LCA0NywgODIsIDIyNSwgMTQ2LCAxLCA2MywgMjI1LCAxNDYsIDEsIDc1LCAyMjUsIDE0NiwgMSwgNjgsIAotICAgIDIyNSwgMTQ2LCAxLCA3NCwgMjI1LCAxNDYsIDEsIDc4LCAyMjUsIDE0NiwgMSwgMTczLCAyMjUsIDE0NiwgMSwgMjI5LCAKLSAgICAxNDQsIDIyNSwgMTQ2LCAxLCAyMzksIDgsIDIyNSwgMTQ2LCAxLCAyMzgsIDExOSwgMjI1LCAxNDYsIDEsIDI0NywgOTIsIAotICAgIDIyNSwgMTQ2LCAxLCAyNDYsIDE5OSwgMjI1LCAxNDYsIDEsIDIzMCwgMTgxLCAyMjUsIDE0NiwgMSwgMjMwLCAxNDksIDIyNSwgCi0gICAgMTQ2LCAxLCAyMjEsIDExLCAyMjUsIDE0NiwgMSwgMjA3LCAyNDEsIDIyNSwgMTQ2LCAxLCAyMDcsIDIyOSwgMjI1LCAxNDYsIAotICAgIDEsIDI0NCwgMTIwLCAyMjUsIDE0NiwgMSwgMjQ0LCAxMDQsIDIyNSwgMTQ2LCAxLCAyMjEsIDIyNywgMjI1LCAxNDYsIDEsIAotICAgIDIxMCwgMjIsIDIyNSwgMTQ2LCAxLCAyMDksIDEwOCwgMjI1LCAxNDYsIDEsIDI0NCwgMjEyLCAyMjUsIDE0NiwgMSwgMjQ0LCAKLSAgICAxLCAyMjUsIDE0NiwgMSwgMjAxLCAyMDEsIDIyNSwgMTQ2LCAxLCAxODUsIDIyNSwgMTQ2LCAxLCAyMTgsIDIwOCwgMjI1LCAKLSAgICAxNDYsIDEsIDI0OSwgMzIsIDIyNSwgMTQ2LCAxLCAyNDgsIDk4LCAyMjUsIDE0NiwgMSwgMTkyLCAyMjUsIDE0NiwgMSwgCi0gICAgMjE2LCAyMjAsIDIyNSwgMTQ2LCAxLCAyMjgsIDExMywgMjI1LCAxNDYsIDEsIDIwNiwgODYsIDIyNSwgMTQ2LCAxLCAyMTUsIAotICAgIDM2LCAyMjUsIDE0NiwgMSwgMTUyLCAyMjUsIDE0NiwgMSwgMjE1LCAxODUsIDIyNSwgMTQ2LCAyLCAyMjEsIDUxLCAyMjUsIAotICAgIDE0NiwgMjUxLCAxNDYsIDU0LCAyMjUsIDE0NiwgMjE0LCAxNjgsIDgyLCAyMjUsIDE0NiwgMzIsIDIxMiwgMjA2LCAxODEsIAotICAgIDIsIDI0NywgNTIsIDE4MSwgMiwgMjUwLCAxODAsIDE4MSwgMiwgMjA1LCAxOTksIDE4MSwgMSwgNjMsIDE4MSwgMSwgMjUyLCAKLSAgICAyNSwgMTgxLCAxLCA3NSwgMTgxLCAxLCAyMzEsIDgzLCAxODEsIDEsIDY4LCAxODEsIDEsIDIwNiwgMTc4LCAxODEsIDEsIAotICAgIDEyNSwgMTQ2LCAxODEsIDEsIDEyNSwgMjE1LCAxODYsIDE4MSwgMSwgMTI1LCAxNTksIDE4MSwgMSwgMTI1LCAyMjcsIDc4LCAKLSAgICAxODEsIDEsIDc0LCAxODEsIDEsIDI1MSwgNjQsIDE4MSwgMSwgNzgsIDE4MSwgMSwgMjUwLCAzNCwgMTgxLCAxLCAxNzMsIAotICAgIDE4MSwgMSwgMjI5LCAxNDQsIDE4MSwgMSwgMjM5LCA4LCAxODEsIDEsIDIzOCwgMTE5LCAxODEsIDEsIDIyMiwgMjAzLCAKLSAgICAxODEsIDEsIDI0NywgOTIsIDE4MSwgMSwgMjQ2LCAxOTksIDE4MSwgMSwgMjMwLCAxODEsIDE4MSwgMSwgMjMwLCAxNDksIAotICAgIDE4MSwgMSwgMjIxLCAxMSwgMTgxLCAxLCAyMDcsIDI0MSwgMTgxLCAxLCAyMDcsIDIyOSwgMTgxLCAxLCAyNDQsIDEyMCwgCi0gICAgMTgxLCAxLCAyNDQsIDEwNCwgMTgxLCAxLCAyMjEsIDIyNywgMTgxLCAxLCAyMTAsIDIyLCAxODEsIDEsIDIwOSwgMTA4LCAKLSAgICAxODEsIDEsIDI0NCwgMjEyLCAxODEsIDEsIDI0NCwgMSwgMTgxLCAxLCAyMDEsIDIwMSwgMTgxLCAxLCAxODUsIDE4MSwgMSwgCi0gICAgMjE4LCAyMDgsIDE4MSwgMSwgMjQ5LCAzMiwgMTgxLCAxLCAyNDgsIDk4LCAxODEsIDEsIDE5MiwgMTgxLCAxLCAxOTgsIAotICAgIDE4MSwgMSwgMjE2LCAyMjAsIDE4MSwgMSwgMjI4LCAxMTMsIDE4MSwgMSwgMjI3LCA3NywgMTgxLCAxLCAyMDYsIDg2LCAKLSAgICAxODEsIDEsIDIxMywgOTAsIDE4MSwgMSwgMjExLCAxNjQsIDE4MSwgMSwgMjE1LCAzNiwgMTgxLCAxLCAxNTIsIDE4MSwgMjIsIAotICAgIDIsIDI1MiwgMjUsIDE4MSwgMjIsIDIsIDc1LCAxODEsIDIyLCAyLCAyMzEsIDgzLCAxODEsIDIyLCAyLCA2OCwgMTgxLCAyMiwgCi0gICAgMiwgMjA2LCAxNzgsIDE4MSwgMjIsIDIsIDEyNSwgMTQ2LCAxODEsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxODEsIDIyLCAyLCAKLSAgICAxMjUsIDE1OSwgMTgxLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxODEsIDIyLCAyLCA3NCwgMTgxLCAyMiwgMiwgMjUxLCA2NCwgCi0gICAgMTgxLCAyMiwgMiwgNzgsIDE4MSwgMjIsIDIsIDI1MCwgMzQsIDE4MSwgMiwgMjA1LCAyMDQsIDE4MSwgMiwgMjUwLCAxNywgCi0gICAgMTgxLCAyLCAyMzAsIDEzNSwgMTgxLCAyLCAyMDYsIDIyMiwgMTgxLCAyMjAsIDM5LCAxODEsIDI0NCwgMTY2LCAxODEsIDUyLCAKLSAgICAyNDQsIDE2NiwgMTgxLCAyNTEsIDE0NiwgNTQsIDE4MSwgMjEzLCAxMzAsIDE4MSwgMjE0LCAyMzksIDgyLCAxODEsIDIsIAotICAgIDIyMSwgNTEsIDE4MSwgMjIsIDY1LCA4MiwgMTgxLCAyNDAsIDE5OSwgMjEyLCAyMjgsIDIyLCA4MiwgMTgxLCAyMTAsIDE4MCwgCi0gICAgODIsIDE4MSwgMTcsIDIwMiwgODQsIDE4MSwgMTcsIDEwNSwgMTgxLCAxNywgMTA4LCAxODEsIDE3LCAxNDcsIDE4MSwgMTcsIAotICAgIDE0OSwgMTgxLCAxNywgMTcwLCAxODEsIDE3LCAxOTUsIDE4MSwgMTcsIDIxMywgMTExLCAxODEsIDE3LCAxOTksIDE4MSwgCi0gICAgMTcsIDIyMiwgNjMsIDE4MSwgMjQxLCAxMjgsIDE4MSwgMiwgMjEyLCAxNTcsIDE4MSwgMjM3LCA1OCwgMTgxLCAyNDUsIAotICAgIDE5MSwgNTQsIDE4MSwgMjE0LCAxNjgsIDIyNSwgOTIsIDE4MSwgMjE0LCAxNjgsIDIyNSwgOTEsIDE0MCwgMjUwLCAxMjYsIAotICAgIDE3LCAxMDUsIDE0MCwgMjUwLCAxMjYsIDE3LCAxMDgsIDE0MCwgMjUwLCAxMjYsIDE3LCAxNDcsIDE0MCwgMjUwLCAxMjYsIAotICAgIDE3LCAxNDksIDE0MCwgMjUwLCAxMjYsIDE3LCAxNzAsIDE0MCwgMjUwLCAxMjYsIDE3LCAxOTUsIDE0MCwgMjUwLCAxMjYsIAotICAgIDE3LCAyMTMsIDExMSwgMTQwLCAyNTAsIDEyNiwgMTcsIDE5OSwgMTQwLCAyNTAsIDEyNiwgMTcsIDIyMiwgNjMsIDE0MCwgCi0gICAgMjUwLCAxMjYsIDQyLCAyMDksIDE1MiwgMTQwLCAyNTAsIDEyNiwgNDIsIDIwNywgMTUxLCAxNDAsIDI1MCwgMTI2LCA0MiwgCi0gICAgMjA5LCA1MywgMTQwLCAyNTAsIDEyNiwgNDIsIDIzOSwgMTUzLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjQwLCAxOCwgMTQwLCAKLSAgICAyNTAsIDEyNiwgNDIsIDIxMiwgNzQsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMTMsIDEwNSwgMTQwLCAyNTAsIDEyNiwgNDIsIAotICAgIDI0MSwgMTM0LCAxNDAsIDI1MCwgMTI2LCA0MiwgMjIyLCA1OCwgMTQwLCAyNTAsIDEyNiwgNDIsIDExOCwgMjM2LCAxMSwgCi0gICAgMTQwLCAyNTAsIDEyNiwgNDIsIDExOCwgMjA5LCAzNiwgMjI5LCAxMTQsIDEsIDYzLCAyMjksIDExNCwgMSwgMjUyLCAyNSwgCi0gICAgMjI5LCAxMTQsIDEsIDc1LCAyMjksIDExNCwgMSwgNjgsIDIyOSwgMTE0LCAxLCA3NCwgMjI5LCAxMTQsIDEsIDI1MSwgNjQsIAotICAgIDIyOSwgMTE0LCAxLCA3OCwgMjI5LCAxMTQsIDEsIDI1MCwgMzQsIDIyOSwgMTE0LCAxLCAxNzMsIDIyOSwgMTE0LCAxLCAKLSAgICAyMjksIDE0NCwgMjI5LCAxMTQsIDEsIDIzOSwgOCwgMjI5LCAxMTQsIDEsIDIzOCwgMTU1LCAyMjksIDExNCwgMSwgMjM4LCAKLSAgICAxMTksIDIyOSwgMTE0LCAxLCAyMjIsIDIwMywgMjI5LCAxMTQsIDEsIDI0NywgOTIsIDIyOSwgMTE0LCAxLCAyNDYsIDE5OSwgCi0gICAgMjI5LCAxMTQsIDEsIDIzMCwgMTgxLCAyMjksIDExNCwgMSwgMjMwLCAxMjksIDIyOSwgMTE0LCAxLCAyMjEsIDExLCAyMjksIAotICAgIDExNCwgMSwgMjA3LCAyNDEsIDIyOSwgMTE0LCAxLCAyMDcsIDIyOSwgMjI5LCAxMTQsIDEsIDI0NCwgMTIwLCAyMjksIDExNCwgCi0gICAgMSwgMjQ0LCAxMDQsIDIyOSwgMTE0LCAxLCAyMjEsIDIyNywgMjI5LCAxMTQsIDEsIDIxMCwgMjIsIDIyOSwgMTE0LCAxLCAKLSAgICAyMDksIDEwOCwgMjI5LCAxMTQsIDEsIDI0NCwgMjEyLCAyMjksIDExNCwgMSwgMjQ0LCAxMTAsIDIyOSwgMTE0LCAxLCAyNDQsIAotICAgIDEsIDIyOSwgMTE0LCAxLCAyMDEsIDIwMSwgMjI5LCAxMTQsIDEsIDE4NSwgMjI5LCAxMTQsIDEsIDIxOCwgMjA4LCAyMjksIAotICAgIDExNCwgMSwgMjQ5LCAzMiwgMjI5LCAxMTQsIDEsIDI0OCwgMTk4LCAyMjksIDExNCwgMSwgMjQ4LCA5OCwgMjI5LCAxMTQsIAotICAgIDEsIDE5MiwgMjI5LCAxMTQsIDEsIDE5OCwgMjI5LCAxMTQsIDEsIDIxNiwgMjIwLCAyMjksIDExNCwgMSwgMjI4LCAxMTMsIAotICAgIDIyOSwgMTE0LCAxLCAyMDYsIDg2LCAyMjksIDExNCwgMSwgMjE1LCAzNiwgMjI5LCAxMTQsIDEsIDE1MiwgMjI5LCAxMTQsIAotICAgIDEsIDIyNywgNzcsIDIyOSwgMTE0LCAyMiwgMiwgMjUyLCAyNSwgMjI5LCAxMTQsIDIyLCAyLCA3NSwgMjI5LCAxMTQsIDIyLCAKLSAgICAyLCAyMzEsIDgzLCAyMjksIDExNCwgMjIsIDIsIDY4LCAyMjksIDExNCwgMjIsIDIsIDc0LCAyMjksIDExNCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyOSwgMTE0LCAyMiwgMiwgNzgsIDIyOSwgMTE0LCAyMiwgMiwgMjUwLCAzNCwgMjI5LCAxMTQsIDIsIDI1MCwgCi0gICAgMTgwLCAyMjksIDExNCwgMiwgMjA1LCAyMDQsIDIyOSwgMTE0LCAyLCAyMjEsIDUxLCAyMjksIDExNCwgMiwgMjEzLCA4MCwgCi0gICAgMjI5LCAxMTQsIDI0NCwgMTY2LCAyMjksIDExNCwgNTIsIDI0NCwgMTY2LCAyMjksIDExNCwgMjAzLCAyMzgsIDIxMywgMTMwLCAKLSAgICAyMjksIDExNCwgMjE0LCAxNjgsIDgyLCAyMjksIDExNCwgNTIsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMTQsIDI1MSwgMTQ2LCAKLSAgICA1NCwgMjIzLCAyMzAsIDEsIDYzLCAyMjMsIDIzMCwgMSwgNzUsIDIyMywgMjMwLCAxLCA2OCwgMjIzLCAyMzAsIDEsIDc0LCAKLSAgICAyMjMsIDIzMCwgMSwgMTczLCAyMjMsIDIzMCwgMSwgMjI5LCAxNDQsIDIyMywgMjMwLCAxLCAyMzksIDgsIDIyMywgMjMwLCAKLSAgICAxLCAyMzgsIDExOSwgMjIzLCAyMzAsIDEsIDI0NywgOTIsIDIyMywgMjMwLCAxLCAyNDYsIDE5OSwgMjIzLCAyMzAsIDEsIAotICAgIDIzMCwgMTgxLCAyMjMsIDIzMCwgMSwgMjMwLCAxMjksIDIyMywgMjMwLCAxLCAyMjEsIDExLCAyMjMsIDIzMCwgMSwgMjA3LCAKLSAgICAyNDEsIDIyMywgMjMwLCAxLCAyMDcsIDIyOSwgMjIzLCAyMzAsIDEsIDI0NCwgMTIwLCAyMjMsIDIzMCwgMSwgMjQ0LCAxMTAsIAotICAgIDIyMywgMjMwLCAxLCAyNDQsIDEwNCwgMjIzLCAyMzAsIDEsIDIyMSwgMjI3LCAyMjMsIDIzMCwgMSwgMjEwLCAyMiwgMjIzLCAKLSAgICAyMzAsIDEsIDIwOSwgMTA4LCAyMjMsIDIzMCwgMSwgMjQ0LCAyMTIsIDIyMywgMjMwLCAxLCAyNDQsIDEsIDIyMywgMjMwLCAKLSAgICAxLCAyMDEsIDIwMSwgMjIzLCAyMzAsIDEsIDE4NSwgMjIzLCAyMzAsIDEsIDIxOCwgMjA4LCAyMjMsIDIzMCwgMSwgMjQ5LCAKLSAgICAzMiwgMjIzLCAyMzAsIDEsIDI0OCwgOTgsIDIyMywgMjMwLCAxLCAxOTIsIDIyMywgMjMwLCAxLCAxOTgsIDIyMywgMjMwLCAKLSAgICAxLCAyMTYsIDIyMCwgMjIzLCAyMzAsIDEsIDIyOCwgMTEzLCAyMjMsIDIzMCwgMSwgMjA2LCA4NiwgMjIzLCAyMzAsIDEsIAotICAgIDIxNSwgMzYsIDIyMywgMjMwLCAxLCAxNTIsIDIyMywgMjMwLCAxLCAyMTUsIDE4NSwgMjIzLCAyMzAsIDEsIDIxNiwgNjEsIAotICAgIDIyMywgMjMwLCAyMTQsIDE2OCwgODIsIDIyOSwgMTA2LCAxLCA2MywgMjI5LCAxMDYsIDEsIDI1MiwgMjUsIDIyOSwgMTA2LCAKLSAgICAxLCA3NSwgMjI5LCAxMDYsIDEsIDIzMSwgODMsIDIyOSwgMTA2LCAxLCA2OCwgMjI5LCAxMDYsIDEsIDIwNiwgMTc4LCAyMjksIAotICAgIDEwNiwgMSwgNzQsIDIyOSwgMTA2LCAxLCAyNTEsIDY0LCAyMjksIDEwNiwgMSwgNzgsIDIyOSwgMTA2LCAxLCAyNTAsIDM0LCAKLSAgICAyMjksIDEwNiwgMSwgMTczLCAyMjksIDEwNiwgMSwgMjI5LCAxNDQsIDIyOSwgMTA2LCAxLCAyMzksIDgsIDIyOSwgMTA2LCAKLSAgICAxLCAyMzgsIDE1NSwgMjI5LCAxMDYsIDEsIDIzOCwgMTE5LCAyMjksIDEwNiwgMSwgMjIyLCAyMDMsIDIyOSwgMTA2LCAxLCAKLSAgICAyNDcsIDkyLCAyMjksIDEwNiwgMSwgMjQ2LCAxOTksIDIyOSwgMTA2LCAxLCAyMzAsIDE4MSwgMjI5LCAxMDYsIDEsIDIzMCwgCi0gICAgMTI5LCAyMjksIDEwNiwgMSwgMjMwLCAxNDksIDIyOSwgMTA2LCAxLCAyMjEsIDExLCAyMjksIDEwNiwgMSwgMjA3LCAyNDEsIAotICAgIDIyOSwgMTA2LCAxLCAyMDcsIDIyOSwgMjI5LCAxMDYsIDEsIDI0NCwgMTIwLCAyMjksIDEwNiwgMSwgMjQ0LCAxMTAsIDIyOSwgCi0gICAgMTA2LCAxLCAyMTUsIDE4NSwgMjI5LCAxMDYsIDEsIDI0NCwgMTA0LCAyMjksIDEwNiwgMSwgMjIxLCAyMjcsIDIyOSwgMTA2LCAKLSAgICAxLCAyMTAsIDIyLCAyMjksIDEwNiwgMSwgMjA5LCAxMDgsIDIyOSwgMTA2LCAxLCAyNDQsIDIxMiwgMjI5LCAxMDYsIDEsIAotICAgIDI0NCwgMSwgMjI5LCAxMDYsIDEsIDIwMSwgMjAxLCAyMjksIDEwNiwgMSwgMTg1LCAyMjksIDEwNiwgMSwgMjE4LCAyMDgsIAotICAgIDIyOSwgMTA2LCAxLCAyNDksIDMyLCAyMjksIDEwNiwgMSwgMjQ4LCAxOTgsIDIyOSwgMTA2LCAxLCAyNDgsIDk4LCAyMjksIAotICAgIDEwNiwgMSwgMTkyLCAyMjksIDEwNiwgMSwgMTk4LCAyMjksIDEwNiwgMSwgMjE2LCAyMjAsIDIyOSwgMTA2LCAxLCAyMjgsIAotICAgIDExMywgMjI5LCAxMDYsIDEsIDIwNiwgODYsIDIyOSwgMTA2LCAxLCAyMTMsIDkwLCAyMjksIDEwNiwgMSwgMjE1LCAzNiwgCi0gICAgMjI5LCAxMDYsIDEsIDE1MiwgMjI5LCAxMDYsIDIsIDI1MCwgMTgwLCAyMjksIDEwNiwgMjIsIDIsIDI1MiwgMjUsIDIyOSwgCi0gICAgMTA2LCAyMiwgMiwgNzUsIDIyOSwgMTA2LCAyMiwgMiwgMjMxLCA4MywgMjI5LCAxMDYsIDIyLCAyLCA2OCwgMjI5LCAxMDYsIAotICAgIDIyLCAyLCAyMDYsIDE3OCwgMjI5LCAxMDYsIDIyLCAyLCA3NCwgMjI5LCAxMDYsIDIyLCAyLCAyNTEsIDY0LCAyMjksIDEwNiwgCi0gICAgMjIsIDIsIDc4LCAyMjksIDEwNiwgMjIsIDIsIDI1MCwgMzQsIDIyOSwgMTA2LCAyLCAyMjEsIDUxLCAyMjksIDEwNiwgMiwgCi0gICAgMjA1LCAyMDQsIDIyOSwgMTA2LCAxNywgMjAyLCA4NCwgMjI5LCAxMDYsIDE3LCAxMDUsIDIyOSwgMTA2LCAxNywgMTA4LCAKLSAgICAyMjksIDEwNiwgMTcsIDE0NywgMjI5LCAxMDYsIDE3LCAxNDksIDIyOSwgMTA2LCAxNywgMTcwLCAyMjksIDEwNiwgMTcsIAotICAgIDE5NSwgMjI5LCAxMDYsIDE3LCAyMTMsIDExMSwgMjI5LCAxMDYsIDE3LCAxOTksIDIyOSwgMTA2LCAxNywgMjIyLCA2MywgCi0gICAgMjM4LCA2LCAyLCAzOSwgMjUwLCAxODEsIDU1LCAyMzgsIDYsIDIsIDI0NywgNTIsIDIzOCwgNiwgMiwgMjUwLCAxODAsIAotICAgIDIzOCwgNiwgMiwgMjA1LCAxOTksIDIzOCwgNiwgMSwgNjMsIDIzOCwgNiwgMSwgMjUyLCAyNSwgMjM4LCA2LCAxLCA3NSwgCi0gICAgMjM4LCA2LCAxLCAyMzEsIDgzLCAyMzgsIDYsIDEsIDY4LCAyMzgsIDYsIDEsIDIwNiwgMTc4LCAyMzgsIDYsIDEsIDEyNSwgCi0gICAgMTQ2LCAyMzgsIDYsIDEsIDEyNSwgMTU5LCAyMzgsIDYsIDEsIDI0MSwgMTYxLCAyMzgsIDYsIDEsIDI1MSwgNjQsIDIzOCwgCi0gICAgNiwgMSwgMjIwLCAxOCwgMjM4LCA2LCAxLCAyNTAsIDM0LCAyMzgsIDYsIDEsIDE3MywgMjM4LCA2LCAxLCAyMjksIDE0NCwgCi0gICAgMjM4LCA2LCAxLCAyMzksIDgsIDIzOCwgNiwgMSwgMjM4LCAxMTksIDIzOCwgNiwgMSwgMjIyLCAyMDMsIDIzOCwgNiwgMSwgCi0gICAgMjQ3LCA5MiwgMjM4LCA2LCAxLCAyNDYsIDE5OSwgMjM4LCA2LCAxLCAyMzAsIDE4MSwgMjM4LCA2LCAxLCAyMzAsIDE0OSwgCi0gICAgMjM4LCA2LCAxLCAyMjEsIDExLCAyMzgsIDYsIDEsIDIwNywgMjQxLCAyMzgsIDYsIDEsIDIwNywgMjI5LCAyMzgsIDYsIDEsIAotICAgIDI0NCwgMTIwLCAyMzgsIDYsIDEsIDI0NCwgMTA0LCAyMzgsIDYsIDEsIDIyMSwgMjI3LCAyMzgsIDYsIDEsIDIxMCwgMjIsIAotICAgIDIzOCwgNiwgMSwgMjA5LCAxMDgsIDIzOCwgNiwgMSwgMjQ0LCAyMTIsIDIzOCwgNiwgMSwgMjQ0LCAxLCAyMzgsIDYsIDEsIAotICAgIDIwMSwgMjAxLCAyMzgsIDYsIDEsIDE4NSwgMjM4LCA2LCAxLCAyMTgsIDIwOCwgMjM4LCA2LCAxLCAyNDksIDMyLCAyMzgsIAotICAgIDYsIDEsIDI0OCwgOTgsIDIzOCwgNiwgMSwgMTkyLCAyMzgsIDYsIDEsIDE5OCwgMjM4LCA2LCAxLCAyMTYsIDIyMCwgMjM4LCAKLSAgICA2LCAxLCAyMjgsIDExMywgMjM4LCA2LCAxLCAyMjcsIDc3LCAyMzgsIDYsIDEsIDIwNiwgODYsIDIzOCwgNiwgMSwgMjEzLCAKLSAgICA5MCwgMjM4LCA2LCAxLCAyMTEsIDE2NCwgMjM4LCA2LCAxLCAyMTUsIDM2LCAyMzgsIDYsIDEsIDE1MiwgMjM4LCA2LCAyLCAKLSAgICAyMjEsIDUxLCAyMzgsIDYsIDIsIDI1MCwgMTcsIDIzOCwgNiwgMjIsIDIsIDI1MiwgMjUsIDIzOCwgNiwgMjIsIDIsIDc1LCAKLSAgICAyMzgsIDYsIDIyLCAyLCAyMzEsIDgzLCAyMzgsIDYsIDIyLCAyLCA2OCwgMjM4LCA2LCAyMiwgMiwgMjA2LCAxNzgsIDIzOCwgCi0gICAgNiwgMjIsIDIsIDEyNSwgMTQ2LCAyMzgsIDYsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMzgsIDYsIDIyLCAyLCAyNDEsIAotICAgIDE2MSwgMjM4LCA2LCAyMiwgMiwgMjUxLCA2NCwgMjM4LCA2LCAyMiwgMiwgMjIwLCAxOCwgMjM4LCA2LCAyMiwgMiwgMjUwLCAKLSAgICAzNCwgMjM4LCA2LCAyLCAyMDUsIDIwNCwgMjM4LCA2LCAyMjAsIDM5LCAyMzgsIDYsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgCi0gICAgMjM4LCA2LCAyLCAyMTgsIDc0LCAyMzgsIDYsIDEsIDIwNiwgNTIsIDI1MCwgMTgwLCAyMzgsIDYsIDEsIDIwNiwgNTIsIDUyLCAKLSAgICAyNTAsIDE4MCwgMjM4LCA2LCAxLCAxMjUsIDIxNSwgMTg2LCAyMzgsIDYsIDEsIDEyNSwgMjI3LCA3OCwgMjM4LCA2LCAyMiwgCi0gICAgMiwgMTI1LCAxNTksIDIzOCwgNiwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMzksIDIzOCwgNiwgMTcsIDIwMiwgODQsIDM5LCAKLSAgICAyMzgsIDYsIDE3LCAxMDUsIDM5LCAyMzgsIDYsIDE3LCAxMDgsIDM5LCAyMzgsIDYsIDE3LCAxNDcsIDM5LCAyMzgsIDYsIAotICAgIDE3LCAxNDksIDM5LCAyMzgsIDYsIDE3LCAxNzAsIDM5LCAyMzgsIDYsIDE3LCAxOTUsIDM5LCAyMzgsIDYsIDEsIDYzLCAzOSwgCi0gICAgMjM4LCA2LCAxLCAxNzMsIDM5LCAyMzgsIDYsIDEsIDIwMSwgMjAxLCAzOSwgMjM4LCA2LCAxLCAyMDUsIDIzMCwgMzksIAotICAgIDIzOCwgNiwgMSwgMTg1LCAyMDgsIDIwNCwgMjUwLCAyMDksIDIwOCwgMjA0LCAxLCA2MywgMjA4LCAyMDQsIDEsIDI1MiwgCi0gICAgMjUsIDIwOCwgMjA0LCAxLCA3NSwgMjA4LCAyMDQsIDEsIDIzMSwgODMsIDIwOCwgMjA0LCAxLCA2OCwgMjA4LCAyMDQsIDEsIAotICAgIDIwNiwgMTc4LCAyMDgsIDIwNCwgMSwgMTI1LCAxNDYsIDIwOCwgMjA0LCAxLCAxMjUsIDIxNSwgMTg2LCAyMDgsIDIwNCwgMSwgCi0gICAgMTI1LCAxNTksIDIwOCwgMjA0LCAxLCAxMjUsIDIyNywgNzgsIDIwOCwgMjA0LCAxLCA3NCwgMjA4LCAyMDQsIDEsIDI1MSwgCi0gICAgNjQsIDIwOCwgMjA0LCAxLCA3OCwgMjA4LCAyMDQsIDEsIDI1MCwgMzQsIDIwOCwgMjA0LCAxLCAxNzMsIDIwOCwgMjA0LCAxLCAKLSAgICAyMjksIDE0NCwgMjA4LCAyMDQsIDEsIDIzOSwgOCwgMjA4LCAyMDQsIDEsIDIzOCwgMTE5LCAyMDgsIDIwNCwgMSwgMjIyLCAKLSAgICAyMDMsIDIwOCwgMjA0LCAxLCAyNDcsIDkyLCAyMDgsIDIwNCwgMSwgMjQ2LCAxOTksIDIwOCwgMjA0LCAxLCAyMzAsIDE4MSwgCi0gICAgMjA4LCAyMDQsIDEsIDIzMCwgMTQ5LCAyMDgsIDIwNCwgMSwgMjIxLCAxMSwgMjA4LCAyMDQsIDEsIDIwNywgMjQxLCAyMDgsIAotICAgIDIwNCwgMSwgMjA3LCAyMjksIDIwOCwgMjA0LCAxLCAyNDQsIDEyMCwgMjA4LCAyMDQsIDEsIDI0NCwgMTA0LCAyMDgsIDIwNCwgCi0gICAgMSwgMjIxLCAyMjcsIDIwOCwgMjA0LCAxLCAyMTAsIDIyLCAyMDgsIDIwNCwgMSwgMjA5LCAxMDgsIDIwOCwgMjA0LCAxLCAKLSAgICAyNDQsIDIxMiwgMjA4LCAyMDQsIDEsIDI0NCwgMSwgMjA4LCAyMDQsIDEsIDIwMSwgMjAxLCAyMDgsIDIwNCwgMSwgMTg1LCAKLSAgICAyMDgsIDIwNCwgMSwgMjE4LCAyMDgsIDIwOCwgMjA0LCAxLCAyNDksIDMyLCAyMDgsIDIwNCwgMSwgMjQ4LCA5OCwgMjA4LCAKLSAgICAyMDQsIDEsIDE5MiwgMjA4LCAyMDQsIDEsIDE5OCwgMjA4LCAyMDQsIDEsIDIxNiwgMjIwLCAyMDgsIDIwNCwgMSwgMjI4LCAKLSAgICAxMTMsIDIwOCwgMjA0LCAxLCAyMDYsIDg2LCAyMDgsIDIwNCwgMSwgMjEzLCA5MCwgMjA4LCAyMDQsIDEsIDIxMSwgMTY0LCAKLSAgICAyMDgsIDIwNCwgMSwgMjE1LCAzNiwgMjA4LCAyMDQsIDEsIDE1MiwgMjA4LCAyMDQsIDIyLCAyLCAyNTIsIDI1LCAyMDgsIAotICAgIDIwNCwgMjIsIDIsIDc1LCAyMDgsIDIwNCwgMjIsIDIsIDIzMSwgODMsIDIwOCwgMjA0LCAyMiwgMiwgNjgsIDIwOCwgMjA0LCAKLSAgICAyMiwgMiwgMjA2LCAxNzgsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAxNDYsIDIwOCwgMjA0LCAyMiwgMiwgMTI1LCAyMTUsIAotICAgIDE4NiwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDE1OSwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIwOCwgMjA0LCAKLSAgICAyMiwgMiwgNzQsIDIwOCwgMjA0LCAyMiwgMiwgMjEyLCAyMjgsIDc0LCAyMDgsIDIwNCwgMjIsIDIsIDI1MSwgNjQsIDIwOCwgCi0gICAgMjA0LCAyMiwgMiwgNzgsIDIwOCwgMjA0LCAyMiwgMiwgMjEyLCAyMjgsIDc4LCAyMDgsIDIwNCwgMjIsIDIsIDI1MCwgMzQsIAotICAgIDIwOCwgMjA0LCAyLCAyNDcsIDUyLCAyMDgsIDIwNCwgMiwgMjUwLCAxODAsIDIwOCwgMjA0LCAyLCAyMDUsIDE5OSwgMjA4LCAKLSAgICAyMDQsIDIsIDIwNSwgMjA0LCAyMDgsIDIwNCwgMiwgMjIxLCA1MSwgMjA4LCAyMDQsIDIsIDI1MCwgMTcsIDIwOCwgMjA0LCAKLSAgICAyMzcsIDE5MSwgMjA4LCAyMDQsIDI1MSwgMTQ2LCA1NCwgMjA4LCAyMDQsIDIyMCwgMzksIDIwOCwgMjA0LCAxNywgMjAyLCAKLSAgICA4NCwgMjA4LCAyMDQsIDE3LCAxMDUsIDIwOCwgMjA0LCAxNywgMTA4LCAyMDgsIDIwNCwgMTcsIDE0NywgMjA4LCAyMDQsIAotICAgIDE3LCAxNDksIDIwOCwgMjA0LCAxNywgMTcwLCAyMDgsIDIwNCwgMTcsIDE5NSwgMjA4LCAyMDQsIDE3LCAyMTMsIDExMSwgCi0gICAgMjA4LCAyMDQsIDE3LCAxOTksIDIwOCwgMjA0LCAxNywgMjIyLCA2MywgMTg2LCAxLCA2MywgMTg2LCAxLCAyNTIsIDI1LCAKLSAgICAxODYsIDEsIDc1LCAxODYsIDEsIDIzMSwgODMsIDE4NiwgMSwgNjgsIDE4NiwgMSwgMjA2LCAxNzgsIDE4NiwgMSwgMTI1LCAKLSAgICAxNDYsIDE4NiwgMSwgMTI1LCAyMTUsIDE4NiwgMTg2LCAxLCAxMjUsIDE1OSwgMTg2LCAxLCAxMjUsIDIyNywgNzgsIDE4NiwgCi0gICAgMSwgNzQsIDE4NiwgMSwgMjUxLCA2NCwgMTg2LCAxLCA3OCwgMTg2LCAxLCAyNTAsIDM0LCAxODYsIDEsIDE3MywgMTg2LCAxLCAKLSAgICAyMjksIDE0NCwgMTg2LCAxLCAyMzksIDgsIDE4NiwgMSwgMjM4LCAxMTksIDE4NiwgMSwgMjIyLCAyMDMsIDE4NiwgMSwgCi0gICAgMjQ3LCA5MiwgMTg2LCAxLCAyNDYsIDE5OSwgMTg2LCAxLCAyMzAsIDE4MSwgMTg2LCAxLCAyMzAsIDE0OSwgMTg2LCAxLCAKLSAgICAyMjEsIDExLCAxODYsIDEsIDIwNywgMjQxLCAxODYsIDEsIDIwNywgMjI5LCAxODYsIDEsIDI0NCwgMTIwLCAxODYsIDEsIAotICAgIDI0NCwgMTA0LCAxODYsIDEsIDIyMSwgMjI3LCAxODYsIDEsIDIxMCwgMjIsIDE4NiwgMSwgMjA5LCAxMDgsIDE4NiwgMSwgCi0gICAgMjQ0LCAyMTIsIDE4NiwgMSwgMjQ0LCAxLCAxODYsIDEsIDIwMSwgMjAxLCAxODYsIDEsIDE4NSwgMTg2LCAxLCAyMTgsIAotICAgIDIwOCwgMTg2LCAxLCAyNDksIDMyLCAxODYsIDEsIDI0OCwgOTgsIDE4NiwgMSwgMTkyLCAxODYsIDEsIDE5OCwgMTg2LCAxLCAKLSAgICAyMTYsIDIyMCwgMTg2LCAxLCAyMjgsIDExMywgMTg2LCAxLCAyMDYsIDg2LCAxODYsIDEsIDIxMywgOTAsIDE4NiwgMSwgCi0gICAgMjExLCAxNjQsIDE4NiwgMSwgMjE1LCAzNiwgMTg2LCAxLCAxNTIsIDE4NiwgMjIsIDIsIDI1MiwgMjUsIDE4NiwgMjIsIDIsIAotICAgIDc1LCAxODYsIDIyLCAyLCAyMzEsIDgzLCAxODYsIDIyLCAyLCA2OCwgMTg2LCAyMiwgMiwgMjA2LCAxNzgsIDE4NiwgMjIsIAotICAgIDIsIDEyNSwgMTQ2LCAxODYsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxODYsIDIyLCAyLCA3NCwgMTg2LCAyMiwgMiwgMjUxLCAKLSAgICA2NCwgMTg2LCAyMiwgMiwgNzgsIDE4NiwgMjIsIDIsIDI1MCwgMzQsIDE4NiwgMiwgMjQ3LCA1MiwgMTg2LCAyLCAyNTAsIAotICAgIDE4MCwgMTg2LCAyLCAyMDUsIDE5OSwgMTg2LCAyLCAyMDUsIDIwNCwgMTg2LCAyLCAyMjEsIDUxLCAxODYsIDIsIDIxMiwgCi0gICAgMTU3LCAxODYsIDI0NCwgMTY2LCAxODYsIDUyLCAyNDQsIDE2NiwgMTg2LCAyMTMsIDEzMSwgMjQzLCA4NSwgMTg2LCAyMTMsIAotICAgIDEzMSwgMTQyLCAxODYsIDIxNiwgOTgsIDIyNSwgOTIsIDE4NiwgMjE2LCA5OCwgMjI1LCA5MSwgMTg2LCAyMTYsIDk4LCAKLSAgICAyMjUsIDkwLCAxODYsIDI0MSwgODQsIDc2LCAyMDksIDExMywgODIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA4MCwgCi0gICAgMjUsIDIwNywgOTIsIDIxOSwgMjMyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgODAsIDI1LCAyNDIsIDgzLCAyNDUsIAotICAgIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMTYsIDE2MywgMjUsIDI0MiwgODMsIDI0NSwgMTM3LCAxODYsIDIxNCwgCi0gICAgMTY4LCAxMzEsIDMsIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgNTIsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIAotICAgIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgMjA4LCA3MCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgNTIsIDIxNSwgCi0gICAgMjUyLCAxODYsIDIxNCwgMTY4LCAxMzEsIDUyLCAyMTUsIDI1MywgMywgMjE2LCAxNjIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgCi0gICAgMywgNTIsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIwOCwgNzAsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAKLSAgICAxMzEsIDMsIDIxNywgNTgsIDI0NSwgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIxMywgMTI4LCAyNDUsIDEzNywgCi0gICAgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIDU5LCAyNSwgMjE2LCAxNjIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjQ2LCAKLSAgICA1OSwgMjUsIDEyMCwgMjQxLCA4NiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIDU5LCAyNSwgMjM5LCAxNDcsIDI0MSwgCi0gICAgODYsIDE4NiwgMSwgMjA5LCAzMiwgMjUwLCAyNTUsIDc1LCAxODYsIDEsIDIwNywgMTM2LCAyNTAsIDI1NSwgNzUsIDE4NiwgCi0gICAgMSwgMjA3LCAxMzYsIDI1MCwgMjU1LCAyMzEsIDgzLCAxODYsIDEsIDI1MCwgMjU1LCA2OCwgMTg2LCAyMiwgMiwgMjUwLCAKLSAgICAyNTUsIDY4LCAxODYsIDIyLCAyLCAyNTAsIDI1NSwgMjA2LCAxNzgsIDIyNCwgNzQsIDEsIDYzLCAyMjQsIDc0LCAxLCAyNTIsIAotICAgIDI1LCAyMjQsIDc0LCAxLCA3NSwgMjI0LCA3NCwgMSwgMjMxLCA4MywgMjI0LCA3NCwgMSwgNjgsIDIyNCwgNzQsIDEsIDIwNiwgCi0gICAgMTc4LCAyMjQsIDc0LCAxLCAxMjUsIDE0NiwgMjI0LCA3NCwgMSwgMTI1LCAyMTUsIDE4NiwgMjI0LCA3NCwgMSwgMTI1LCAKLSAgICAxNTksIDIyNCwgNzQsIDEsIDEyNSwgMjI3LCA3OCwgMjI0LCA3NCwgMSwgNzQsIDIyNCwgNzQsIDEsIDI1MSwgNjQsIDIyNCwgCi0gICAgNzQsIDEsIDc4LCAyMjQsIDc0LCAxLCAyNTAsIDM0LCAyMjQsIDc0LCAxLCAxNzMsIDIyNCwgNzQsIDEsIDIyOSwgMTQ0LCAKLSAgICAyMjQsIDc0LCAxLCAyMzksIDgsIDIyNCwgNzQsIDEsIDIzOCwgMTE5LCAyMjQsIDc0LCAxLCAyMjIsIDIwMywgMjI0LCA3NCwgCi0gICAgMSwgMjQ3LCA5MiwgMjI0LCA3NCwgMSwgMjQ2LCAxOTksIDIyNCwgNzQsIDEsIDIzMCwgMTgxLCAyMjQsIDc0LCAxLCAyMzAsIAotICAgIDE0OSwgMjI0LCA3NCwgMSwgMjIxLCAxMSwgMjI0LCA3NCwgMSwgMjA3LCAyNDEsIDIyNCwgNzQsIDEsIDIwNywgMjI5LCAKLSAgICAyMjQsIDc0LCAxLCAyNDQsIDEyMCwgMjI0LCA3NCwgMSwgMjQ0LCAxMDQsIDIyNCwgNzQsIDEsIDIyMSwgMjI3LCAyMjQsIAotICAgIDc0LCAxLCAyMTAsIDIyLCAyMjQsIDc0LCAxLCAyMDksIDEwOCwgMjI0LCA3NCwgMSwgMjQ0LCAyMTIsIDIyNCwgNzQsIDEsIAotICAgIDI0NCwgMSwgMjI0LCA3NCwgMSwgMjAxLCAyMDEsIDIyNCwgNzQsIDEsIDE4NSwgMjI0LCA3NCwgMSwgMjE4LCAyMDgsIDIyNCwgCi0gICAgNzQsIDEsIDI0OSwgMzIsIDIyNCwgNzQsIDEsIDI0OCwgOTgsIDIyNCwgNzQsIDEsIDE5MiwgMjI0LCA3NCwgMSwgMTk4LCAKLSAgICAyMjQsIDc0LCAxLCAyMTYsIDIyMCwgMjI0LCA3NCwgMSwgMjI4LCAxMTMsIDIyNCwgNzQsIDEsIDIwNiwgODYsIDIyNCwgNzQsIAotICAgIDEsIDIxMywgOTAsIDIyNCwgNzQsIDEsIDIxMSwgMTY0LCAyMjQsIDc0LCAxLCAyMTUsIDM2LCAyMjQsIDc0LCAxLCAxNTIsIAotICAgIDIyNCwgNzQsIDEsIDIyNywgNzcsIDIyNCwgNzQsIDIyLCAyLCAyNTIsIDI1LCAyMjQsIDc0LCAyMiwgMiwgNzUsIDIyNCwgCi0gICAgNzQsIDIyLCAyLCAyMzEsIDgzLCAyMjQsIDc0LCAyMiwgMiwgNjgsIDIyNCwgNzQsIDIyLCAyLCAyMDYsIDE3OCwgMjI0LCAKLSAgICA3NCwgMjIsIDIsIDEyNSwgMTQ2LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjI0LCA3NCwgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMjQsIDc0LCAyMiwgMiwgNzQsIDIyNCwgNzQsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjQsIDc0LCAyMiwgMiwgNzgsIDIyNCwgNzQsIDIyLCAyLCAyNTAsIDM0LCAyMjQsIDc0LCAyLCAyNTAsIAotICAgIDE4MCwgMjI0LCA3NCwgMiwgMjA1LCAxOTksIDIyNCwgNzQsIDIsIDIwNSwgMjA0LCAyMjQsIDc0LCAyLCAyNTAsIDEyMywgCi0gICAgMjI0LCA3NCwgMjQ0LCAxNjYsIDIyNCwgNzQsIDUyLCAyNDQsIDE2NiwgMjI0LCA3NCwgMjUxLCAxNDYsIDU0LCAyMjQsIDc0LCAKLSAgICAyLCAyMzYsIDAsIDIyNCwgNzQsIDE3LCAyMDIsIDg0LCAyMjQsIDc0LCAxNywgMTA1LCAyMjQsIDc0LCAxNywgMTA4LCAyMjQsIAotICAgIDc0LCAxNywgMTQ3LCAyMjQsIDc0LCAxNywgMTQ5LCAyMjQsIDc0LCAxNywgMTcwLCAyMjQsIDc0LCAxNywgMTk1LCAyMjQsIAotICAgIDc0LCAxNywgMjEzLCAxMTEsIDIyNCwgNzQsIDE3LCAxOTksIDIyNCwgNzQsIDE3LCAyMjIsIDYzLCAyMDksIDIzOSwgMSwgCi0gICAgNjMsIDIwOSwgMjM5LCAxLCAyNTIsIDI1LCAyMDksIDIzOSwgMSwgNzUsIDIwOSwgMjM5LCAxLCAyMzEsIDgzLCAyMDksIAotICAgIDIzOSwgMSwgNjgsIDIwOSwgMjM5LCAxLCAyMDYsIDE3OCwgMjA5LCAyMzksIDEsIDc0LCAyMDksIDIzOSwgMSwgMjUxLCA2NCwgCi0gICAgMjA5LCAyMzksIDEsIDc4LCAyMDksIDIzOSwgMSwgMjUwLCAzNCwgMjA5LCAyMzksIDEsIDE3MywgMjA5LCAyMzksIDEsIAotICAgIDIyOSwgMTQ0LCAyMDksIDIzOSwgMSwgMjM5LCA4LCAyMDksIDIzOSwgMSwgMjM4LCAxMTksIDIwOSwgMjM5LCAxLCAyMjIsIAotICAgIDIwMywgMjA5LCAyMzksIDEsIDI0NywgOTIsIDIwOSwgMjM5LCAxLCAyNDYsIDE5OSwgMjA5LCAyMzksIDEsIDIzMCwgMTgxLCAKLSAgICAyMDksIDIzOSwgMSwgMjMwLCAxNDksIDIwOSwgMjM5LCAxLCAyMjEsIDExLCAyMDksIDIzOSwgMSwgMjA3LCAyNDEsIDIwOSwgCi0gICAgMjM5LCAxLCAyMDcsIDIyOSwgMjA5LCAyMzksIDEsIDI0NCwgMTIwLCAyMDksIDIzOSwgMSwgMjQ0LCAxMDQsIDIwOSwgMjM5LCAKLSAgICAxLCAyMjEsIDIyNywgMjA5LCAyMzksIDEsIDIxMCwgMjIsIDIwOSwgMjM5LCAxLCAyMDksIDEwOCwgMjA5LCAyMzksIDEsIAotICAgIDI0NCwgMjEyLCAyMDksIDIzOSwgMSwgMjQ0LCAxLCAyMDksIDIzOSwgMSwgMjAxLCAyMDEsIDIwOSwgMjM5LCAxLCAxODUsIAotICAgIDIwOSwgMjM5LCAxLCAyMTgsIDIwOCwgMjA5LCAyMzksIDEsIDI0OSwgMzIsIDIwOSwgMjM5LCAxLCAyNDgsIDk4LCAyMDksIAotICAgIDIzOSwgMSwgMTkyLCAyMDksIDIzOSwgMSwgMTk4LCAyMDksIDIzOSwgMSwgMjE2LCAyMjAsIDIwOSwgMjM5LCAxLCAyMjgsIAotICAgIDExMywgMjA5LCAyMzksIDEsIDIwNiwgODYsIDIwOSwgMjM5LCAxLCAyMTMsIDkwLCAyMDksIDIzOSwgMSwgMjE1LCAzNiwgCi0gICAgMjA5LCAyMzksIDEsIDE1MiwgMjA5LCAyMzksIDEsIDIxNSwgMTg1LCAyMDksIDIzOSwgMiwgMjUwLCAxODAsIDIwOSwgMjM5LCAKLSAgICAyLCAyMDUsIDE5OSwgMjA5LCAyMzksIDIyLCAyLCAyNTIsIDI1LCAyMDksIDIzOSwgMjIsIDIsIDc1LCAyMDksIDIzOSwgMjIsIAotICAgIDIsIDIzMSwgODMsIDIwOSwgMjM5LCAyMiwgMiwgNjgsIDIwOSwgMjM5LCAyMiwgMiwgMjA2LCAxNzgsIDIwOSwgMjM5LCAyMiwgCi0gICAgMiwgNzQsIDIwOSwgMjM5LCAyMiwgMiwgMjUxLCA2NCwgMjA5LCAyMzksIDIyLCAyLCA3OCwgMjA5LCAyMzksIDIyLCAyLCAKLSAgICAyNTAsIDM0LCAyMDksIDIzOSwgMiwgMjA1LCAyMDQsIDIwOSwgMjM5LCAyLCAyMjEsIDUxLCAyMDksIDIzOSwgMTcsIDIwMiwgCi0gICAgODQsIDIwOSwgMjM5LCAxNywgMTA1LCAyMDksIDIzOSwgMTcsIDEwOCwgMjA5LCAyMzksIDE3LCAxNDcsIDIwOSwgMjM5LCAKLSAgICAxNywgMTQ5LCAyMDksIDIzOSwgMTcsIDE3MCwgMjA5LCAyMzksIDE3LCAxOTUsIDIwOSwgMjM5LCAxNywgMjEzLCAxMTEsIAotICAgIDIwOSwgMjM5LCAxNywgMTk5LCAyMDksIDIzOSwgMTcsIDIyMiwgNjMsIDI1MSwgNjgsIDEsIDE3MywgMjUxLCA2OCwgMSwgCi0gICAgMjI5LCAxNDQsIDI1MSwgNjgsIDEsIDIyMiwgMjAzLCAyNTEsIDY4LCAxLCAyMDEsIDIwMSwgMjUxLCA2OCwgMSwgMjEwLCAKLSAgICAyMiwgMjUxLCA2OCwgMSwgMjUwLCAyNTUsIDIxMCwgMjIsIDI1MSwgNjgsIDEsIDE4NSwgMjUxLCA2OCwgMSwgMjE4LCAyMDgsIAotICAgIDI1MSwgNjgsIDEsIDI0OSwgMzIsIDI1MSwgNjgsIDEsIDE5MiwgMjUxLCA2OCwgMSwgMjMwLCAxODEsIDI1MSwgNjgsIDEsIAotICAgIDI0NiwgMTk5LCAyNTEsIDY4LCAxLCAyMDksIDEwOCwgMjUxLCA2OCwgMSwgMjE2LCAyMjAsIDI1MSwgNjgsIDEsIDIyOCwgCi0gICAgMTEzLCAyNTEsIDY4LCAxLCAyMTUsIDM2LCAyNTEsIDY4LCAxLCAyMjEsIDExLCAyNTEsIDY4LCAxLCAxNTIsIDI1MSwgNjgsIAotICAgIDEsIDYzLCAyNTEsIDY4LCAxLCAyNDQsIDIxMiwgMjUxLCA2OCwgMSwgMjQ0LCAxLCAyNTEsIDY4LCAxLCAyMzksIDgsIDI1MSwgCi0gICAgNjgsIDEsIDI1MCwgMjU1LCAyMzksIDgsIDI1MSwgNjgsIDEsIDIzOCwgMTE5LCAyNTEsIDY4LCAxLCAyNDgsIDk4LCAyNTEsIAotICAgIDY4LCAxLCAyMzAsIDE0OSwgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIDIyOCwgMTEzLCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgCi0gICAgMjE2LCAyMjAsIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAyMjcsIDEzNSwgMjE2LCAyMjAsIDI1MSwgNjgsIDIyLCAyLCA2MywgCi0gICAgMjUxLCA2OCwgMjIsIDIsIDI1MiwgMjUsIDI1MSwgNjgsIDIyLCAyLCA3NSwgMjUxLCA2OCwgMjIsIDIsIDIzMSwgODMsIAotICAgIDI1MSwgNjgsIDIyLCAyLCA2OCwgMjUxLCA2OCwgMjIsIDIsIDIwNiwgMTc4LCAyNTEsIDY4LCAyMiwgMiwgNzQsIDI1MSwgCi0gICAgNjgsIDIyLCAyLCAyNTAsIDEzLCAyNTEsIDY4LCAyMiwgMiwgNzgsIDI1MSwgNjgsIDIyLCAyLCAyNTEsIDY0LCAyNTEsIDY4LCAKLSAgICAyMiwgMiwgMjUwLCAyNDcsIDI1MSwgNjgsIDIsIDIyOSwgODYsIDI1MSwgNjgsIDE3LCAyMDIsIDg0LCAyNTEsIDY4LCAxNywgCi0gICAgMTA1LCAyNTEsIDY4LCAxNywgMTA4LCAyNTEsIDY4LCAxNywgMTQ3LCAyNTEsIDY4LCAxNywgMTQ5LCAyNTEsIDY4LCAxNywgCi0gICAgMTcwLCAyNTEsIDY4LCAxNywgMTk1LCAyNTEsIDY4LCAxNywgMjEzLCAxMTEsIDI1MSwgNjgsIDE3LCAxOTksIDI1MSwgNjgsIAotICAgIDE3LCAyMjIsIDYzLCAyNTEsIDY4LCA0MiwgMjA5LCAxNTIsIDI1MSwgNjgsIDQyLCAyMDcsIDE1MSwgMjUxLCA2OCwgMiwgNSwgCi0gICAgMjE0LCAxNjcsIDI1MSwgNjgsIDIsIDIxNCwgMTY3LCAyNTEsIDY4LCAyLCAyMTUsIDEzNiwgMjUxLCA2OCwgMTYsIDIwNSwgCi0gICAgMjMwLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjIsIDIwMiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgNjMsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNCwgMzAsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMjEzLCAyMDQsIDkyLCAKLSAgICAyNDYsIDQ4LCA2LCAxLCAxOTgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCAKLSAgICA2LCAxLCAyMzEsIDgzLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDYsIDE3OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgCi0gICAgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNTAsIDIyMywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM5LCA4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjksIDI2LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA2LCAxLCAyNDEsIDU2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDIsIDE5NywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgCi0gICAgMSwgMjA3LCAzMSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQxLCA3NSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIwLCAKLSAgICA3NiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA3LCAyMzYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMSwgMzcsIAotICAgIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI0NCwgMjEyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNTAsIDQ5LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNTAsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQ3LCAxOTMsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDYsIDEsIDIxNywgMTkxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzYsIDIyOCwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNiwgMSwgMjM2LCAxMjQsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIzNiwgNTEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIAotICAgIDEsIDIzNywgOTIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIxMSwgMTE2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAKLSAgICAyMTIsIDE0MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA1LCAxOTAsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMiwgCi0gICAgMjAyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA2MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjA0LCAzMCwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjAyLCAyMTMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDE5OCwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNSwgMSwgMjAyLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzMSwgODMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDIwNiwgMTc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgNzgsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDI1MCwgMjIzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzksIDgsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDUsIDEsIDIyOSwgMjYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI0MSwgNTYsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDUsIDEsIDIwMiwgMTk3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDcsIDMxLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyNDEsIDc1LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjAsIDc2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDcsIAotICAgIDIzNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIxLCAzNywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQ0LCAyMTIsIAotICAgIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI1MCwgNDksIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDI1MCwgMjQ3LCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDcsIDE5MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjE3LCAxOTEsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDUsIDEsIDIzNiwgMjI4LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzYsIDEyNCwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNSwgMSwgMjM2LCA1MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjM3LCA5MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjExLCAxMTYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIxMiwgMTQyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAKLSAgICAyMDUsIDE5MCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDIwMiwgODQsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxMDUsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDE3LCAxMDgsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxNDcsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAKLSAgICAxNDksIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxNzAsIDIwNCwgOTIsIDI0NiwgNDgsIDE3LCAxOTUsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDE3LCAyMTMsIDExMSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE5OSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDIyMiwgCi0gICAgNjMsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMDksIDE1MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIwNywgMTUxLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA0MiwgMjA5LCA1MywgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIzOSwgMTUzLCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA0MiwgMjQwLCAxOCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIxMiwgNzQsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAKLSAgICAyMTMsIDEwNSwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDI0MSwgMTM0LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjIyLCA1OCwgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgMjIwLCAzOSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMTg1LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxNzMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIyOCwgMTEzLCAyMTksIAotICAgIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxOTIsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NCwgMjEyLCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDIsIDExNiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjA2LCA4NiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjIyLCAyMDMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDE1MiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjM5LCA4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCAyMjksIDE0NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE1LCAzNiwgMjE5LCA0OSwgMjQ2LCA2NiwgCi0gICAgMjM3LCA3NywgMSwgMjQ5LCAzMiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ3LCA5MiwgMjE5LCA0OSwgMjQ2LCAKLSAgICA2NiwgMjM3LCA3NywgMSwgMjEwLCAyMiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjA5LCAxMDgsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwMSwgMjAxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTgsIDIwOCwgCi0gICAgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjE2LCAyMjAsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDI0MCwgMTA4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDYsIDE5OSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgNjMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDc0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAxLCA3NSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNzgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDY4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDcsIDM5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyMzUsIDE3MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIxOSwgMTg0LCAyMTksIDQ5LCAyNDYsIDY2LCAKLSAgICAyMzcsIDc3LCAxLCA0NiwgMjMwLCA1NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIxMCwgNjksIDIxOSwgCi0gICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMjYsIDE4NSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIAotICAgIDIyMywgMTYzLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMTU5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCA0NiwgMjA0LCAxNDQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAyMjIsIDIwNSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIwMywgMTI0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgCi0gICAgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgMjA4LCAxNjEsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAyMTUsIDI0NSwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE1LCAyNDUsIDE0MywgCi0gICAgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMjM4LCA0NSwgMjExLCA2MiwgMjQwLCA1LCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAyMTQsIDIzOSwgMjA4LCAxNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDE2MywgCi0gICAgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTQsIDIzOSwgMTQzLCAyNDAsIDUsIDIxOSwgNDksIDI0NiwgCi0gICAgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAyMDgsIDE2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjM4LCA0NSwgMjExLCAKLSAgICA2MiwgMjA2LCA2OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDE0MywgMTYzLCAyNDAsIDUsIDIxOSwgCi0gICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIyNCwgMTQ5LCAxNDMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgCi0gICAgMjI2LCAyNTQsIDE0MywgMjI3LCAyOCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI2LCAyNTQsIDIwOCwgMTYxLCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIDYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAyMjYsIDI1NCwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI2LCAyNTQsIDE0MywgCi0gICAgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIDYyLCAyNDAsIDUsIDksIDIsIDYzLCA5LCAKLSAgICAyLCAzNCwgMjMsIDYzLCA5LCAyLCAzNCwgMjMsIDI0OSwgMTUsIDksIDIsIDM0LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCAKLSAgICA5LCAyLCAzNCwgMjMsIDE1MiwgOSwgMiwgMzQsIDIzLCAyMzEsIDg1LCA5LCAyLCAzNCwgMjMsIDIyOCwgOTMsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAzNCwgMjMsIDIyMywgMTk5LCA5LCAyLCAzNCwgMjMsIDIxNSwgMjIsIDksIDIsIDI1NCwgMzQsIDksIDIsIAotICAgIDI1MSwgMjMyLCA5LCAyLCAyNTEsIDIzMywgMjMsIDI1MCwgNzMsIDksIDIsIDI1MSwgMjMzLCAyMywgMjQyLCAzMCwgMjM3LCAKLSAgICAyMDgsIDksIDIsIDI1MSwgMjMzLCAyMywgMjM4LCAyNDYsIDksIDIsIDI1MSwgMjMzLCAyMywgMjM4LCAyMzMsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyNTEsIDIzMywgMjMsIDE1MiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgCi0gICAgMiwgMjUxLCAyMzMsIDIzLCAyMzEsIDU5LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyOCwgOTQsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMywgMjEzLCAyNywgOSwgMiwgMjUxLCAyMzMsIDIzLCAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzNywgMjA4LCA5LCAyLCAyNTEsIDE0OSwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyNDgsIDI1MiwgOSwgMiwgMjUxLCAxNTAsIAotICAgIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDI1MSwgMTUwLCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIAotICAgIDI1MSwgMTUwLCAyMywgMjEzLCA4OCwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjUxLCAxMjIsIDksIAotICAgIDIsIDI1MSwgNDcsIDksIDIsIDI1MSwgNDgsIDIzLCAyNDEsIDIyLCA5LCAyLCAyNTEsIDQ4LCAyMywgMjEyLCAyNDUsIDkxLCAKLSAgICAyMzgsIDU1LCA5LCAyLCAyNTEsIDM5LCA5LCAyLCAyNTEsIDQwLCAyMywgMjUxLCAzOSwgOSwgMiwgMjUxLCA0MCwgMjMsIAotICAgIDI0MywgMTg2LCA5LCAyLCAyNTEsIDQwLCAyMywgMjM4LCA1NSwgOSwgMiwgMjUxLCA0MCwgMjMsIDE1MiwgOSwgMiwgMjUxLCAKLSAgICA0MCwgMjMsIDIzMCwgMjcsIDksIDIsIDI1MSwgNDAsIDIzLCAyMjksIDEwMCwgOSwgMiwgMjUxLCA0MCwgMjMsIDIxMywgNDMsIAotICAgIDksIDIsIDI1MSwgNDAsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjUxLCAzNiwgOSwgMiwgMjUxLCAyOCwgOSwgMiwgMjUwLCAKLSAgICAyNDMsIDksIDIsIDI1MCwgMjQ0LCAyMywgMjEzLCA0MywgOSwgMiwgMjUwLCAyMzEsIDksIDIsIDI1MCwgMjMyLCAxMTUsIAotICAgIDI1MCwgMjMxLCA5LCAyLCAyNTAsIDIzMiwgMTI2LCAyMDgsIDIxOSwgOSwgMiwgMjUwLCAyMzIsIDkxLCAyMjMsIDk3LCAKLSAgICAyMTksIDI1MSwgMjUwLCAyMzIsIDkxLCAyMjMsIDk2LCA5LCAyLCAyNTAsIDIzMiwgOTEsIDIyMywgOTcsIDIxMSwgMTc2LCAKLSAgICA5LCAyLCAyNTAsIDIwMCwgOSwgMiwgMjUwLCAxNzAsIDksIDIsIDI1MCwgMTM4LCA5LCAyLCAyNTAsIDEzOSwgMjMsIDIyOCwgCi0gICAgMTgzLCA5LCAyLCAyNTAsIDExMCwgOSwgMiwgMjUwLCA4MCwgOSwgMiwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3NiwgMjAyLCAKLSAgICAzNSwgMjA5LCAxNDEsIDksIDIsIDI1MCwgNzYsIDIzMCwgMzEsIDIwOSwgMTQxLCA5LCAyLCAyNTAsIDc2LCAxMTUsIDI1MCwgCi0gICAgNzYsIDIwNywgMTk4LCAxMTUsIDIwNywgMTk4LCAyMDcsIDE5OCwgMTE1LCAyMDcsIDE5OCwgMjE5LCA5NiwgOSwgMiwgMjUwLCAKLSAgICA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzYsIDExNSwgMjUwLCA3NiwgMTE1LCAyNTAsIAotICAgIDc2LCAyNDUsIDEyNCwgMjUwLCA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzUsIDksIDIsIDI1MCwgNzMsIDksIDIsIAotICAgIDI1MCwgNjksIDksIDIsIDI0OSwgMzIsIDksIDIsIDI0OSwgMTUsIDksIDIsIDI0OSwgOSwgOSwgMiwgMjQ5LCAzLCA5LCAyLCAKLSAgICAyNDgsIDI1MywgOSwgMiwgMjQ4LCAyNTQsIDExNSwgMjQ4LCAyNTMsIDksIDIsIDI0OCwgMjUyLCA5LCAyLCAxNDIsIDksIDIsIAotICAgIDI0OCwgMjMwLCA5LCAyLCAyNDgsIDg2LCA5LCAyLCAyNDgsIDg3LCAyMywgNjMsIDksIDIsIDI0OCwgODcsIDIzLCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjQ4LCA4NywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyNDcsIDE5MywgOSwgMiwgMjQ3LCAKLSAgICAxOTQsIDExNSwgMjQ3LCAxOTQsIDI1MSwgMjMyLCA5LCAyLCAyNDcsIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjA2LCAyNTUsIDksIAotICAgIDIsIDI0NywgMTk0LCAyNDUsIDEyNCwgMjQ3LCAxOTMsIDksIDIsIDI0NywgMTcxLCA5LCAyLCAyNDcsIDE3MiwgMTE1LCAKLSAgICAyNDcsIDE3MSwgOSwgMiwgMjQ3LCAxNjAsIDksIDIsIDI0NywgMTU5LCA5LCAyLCAyNDQsIDIxMiwgOSwgMiwgMjQ0LCAyMDMsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMzQsIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgCi0gICAgMjMsIDI1MCwgMjQzLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCAKLSAgICA2OSwgMjMsIDI0OCwgODYsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM5LCA4LCA5LCAyLCAyNDQsIDIwNCwgCi0gICAgMjI5LCA2OSwgMjMsIDIzOSwgOSwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM4LCA4MSwgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzgsIDYzLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzNywgCi0gICAgMjE5LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDE1MiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzAsIAotICAgIDIyNCwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzAsIDIyNSwgOTEsIDIyNiwgMjM5LCA5LCAyLCAyNDQsIDIwNCwgCi0gICAgMjI5LCA2OSwgMjMsIDIzMCwgMTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI4LCAxMTMsIDksIDIsIDI0NCwgCi0gICAgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyMzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyNDAsIDkxLCAKLSAgICAyMjUsIDc4LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIyNiwgMjIyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgCi0gICAgMjMsIDIyMiwgMjQwLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk2LCA5LCAyLCAKLSAgICAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIxMiwgMTYyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIwOSwgMjQyLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIwNywgNDEsIDkxLCAyMzgsIDYzLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCAKLSAgICA2OSwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyNDQsIDE3NSwgOSwgMiwgMjQ0LCAxNTQsIDksIDIsIDI0NCwgMTUzLCA5LCAyLCAKLSAgICAyNDQsIDE1MiwgOSwgMiwgMjQzLCAyMzMsIDksIDIsIDI0MywgMjE1LCA5LCAyLCAyNDMsIDE4OCwgOSwgMiwgMjQzLCAxODksIAotICAgIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDMsIDE4NiwgOSwgMiwgMjQzLCAxNzYsIDksIDIsIDI0MywgMTc3LCAyMjksIDIzMiwgCi0gICAgMTA2LCAyMzcsIDIwOSwgMjQzLCAxNTYsIDksIDIsIDI0MywgMTU2LCA5LCAyLCAyNDIsIDQyLCA5LCAyLCAyNDIsIDQzLCAKLSAgICAxMTUsIDI0MiwgNDIsIDksIDIsIDI0MiwgNDMsIDIzNywgMjA4LCA5LCAyLCAyNDIsIDQzLCAyMTMsIDI0LCA5LCAyLCAyNDIsIAotICAgIDQwLCA5LCAyLCAyNDIsIDQxLCAyMywgMjQxLCA0LCA5LCAyLCAyNDIsIDM5LCA5LCAyLCAyNDIsIDM3LCA5LCAyLCAyNDIsIAotICAgIDM2LCA5LCAyLCAyNDIsIDM1LCA5LCAyLCAyNDIsIDMxLCA5LCAyLCAyNDIsIDI5LCA5LCAyLCAyNDIsIDMwLCAyMzcsIDIwOCwgCi0gICAgOSwgMiwgMjQyLCAzMCwgMjM3LCAyMDksIDIzNywgMjA4LCA5LCAyLCAyNDIsIDI4LCA5LCAyLCAyNDIsIDIxLCA5LCAyLCAKLSAgICA3NCwgOSwgMiwgMTg4LCAyMywgMjE5LCA5NiwgOSwgMiwgMTg4LCAxMTUsIDE4OCwgMjIxLCA0MSwgMTE1LCAyMjEsIDQwLCAKLSAgICA5LCAyLCAyNDEsIDE5MCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAzNCwgOTEsIDIzNywgMTYwLCA5MSwgMjQ0LCAyMTIsIDksIDIsIAotICAgIDI0MSwgMTkxLCAyMywgMjM4LCAyMjQsIDksIDIsIDI0MSwgMTkxLCAyMywgMjI0LCAxNTUsIDksIDIsIDI0MSwgMTkxLCAyMywgCi0gICAgMjE1LCA4LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIxMywgNDMsIDksIDIsIDI0MSwgMTkxLCAyMywgNjgsIDksIDIsIDI0MSwgCi0gICAgMTYzLCA5LCAyLCAyNDEsIDE1MSwgOSwgMiwgMjQxLCAxMjIsIDksIDIsIDI0MSwgOTIsIDksIDIsIDI0MSwgOTMsIDIzLCAKLSAgICAyMzgsIDIzMiwgOSwgMiwgMjQxLCA5MywgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjQxLCA5MywgMjMsIDIyNSwgCi0gICAgMjAsIDksIDIsIDI0MSwgOTMsIDI0NSwgMTI0LCAyNDEsIDkyLCA5LCAyLCAyNDEsIDkzLCAyMTksIDI1MSwgMjQxLCA5MiwgCi0gICAgOSwgMiwgMjQxLCA5MywgMjExLCAxNzYsIDksIDIsIDI0MSwgMjUsIDksIDIsIDI0MSwgMjIsIDksIDIsIDI0MSwgNCwgOSwgCi0gICAgMiwgMjQwLCAxNzksIDksIDIsIDI0MCwgMTgwLCAyMywgNjMsIDksIDIsIDI0MCwgMTgwLCAyMywgMzQsIDkxLCAyMjgsIDMwLCAKLSAgICA5LCAyLCAyNDAsIDE4MCwgMjMsIDM0LCA5MSwgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDI0MCwgMTgwLCAyMywgCi0gICAgMjUwLCAyMzEsIDksIDIsIDI0MCwgMTgwLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDIsIDMwLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMywgCi0gICAgMTUyLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzNywgMTYwLCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzEsIDg2LCAKLSAgICAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjksIDIzMiwgCi0gICAgMjExLCAxNzYsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI4LCAyMDcsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI4LCAxMTMsIDksIAotICAgIDIsIDI0MCwgMTgwLCAyMywgMjI4LCAzMSwgMjMsIDIyOCwgMzAsIDksIDIsIDI0MCwgMTgwLCAyMywgMjI3LCAxNDgsIDksIAotICAgIDIsIDI0MCwgMTgwLCAyMywgMjI2LCAyMzksIDksIDIsIDI0MCwgMTgwLCAyMywgMjA3LCA0MCwgOSwgMiwgMjQwLCAxODAsIAotICAgIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzksIDgsIDksIDIsIDIzOSwgOSwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNiwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMzQsIDkxLCAyNDQsIDIxMywgOTEsIDE1MiwgOSwgMiwgMjM5LCA3LCAyMywgMzQsIDkxLCAxNTIsIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDM0LCA5MSwgMjMxLCA4NSwgOSwgMiwgMjM5LCA3LCAyMywgMjUxLCAxNTAsIDIwOSwgMTQyLCA5MSwgCi0gICAgMjEwLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIDI1MCwgNzUsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDI1MCwgNzQsIDkxLCAyMzgsIDI0NiwgOSwgMiwgMjM5LCA3LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjQ4LCAyMzEsIDkxLCAyMTYsIDIyMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ3LCAxNjAsIDksIDIsIDIzOSwgNywgCi0gICAgMjMsIDI0NywgMTYxLCA5MSwgMjE2LCAyMjAsIDksIDIsIDIzOSwgNywgMjMsIDI0NCwgMjEyLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyNDMsIDIzMywgOSwgMiwgMjM5LCA3LCAyMywgMjQzLCAxODksIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIAotICAgIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDEyMiwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCAxMjMsIDkxLCAyMjgsIDExMywgCi0gICAgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCA5MiwgOSwgMiwgMjM5LCA3LCAyMywgMjQxLCA5MywgMjMsIDIzOCwgMjMzLCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIyNCwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMjM4LCA4MSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCA3OSwgOSwgMiwgMjM5LCA3LCAyMywgMjM4LCAKLSAgICA4MCwgOTEsIDYzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDY0LCA5MSwgMjExLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjM3LCAxNjAsIDkxLCAyMjYsIDI0MCwgOTEsIDI0MSwgNCwgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCAxNDAsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIzNywgMTQxLCA5MSwgMjI4LCAxMTMsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgNCwgOTEsIDIyNywgCi0gICAgMTQ4LCA5LCAyLCAyMzksIDcsIDIzLCAyMzYsIDIxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMjMwLCAyMTAsIDkxLCAyMzYsIDI3LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjM5LCA3LCAyMywgMjMwLCAKLSAgICAxMiwgOSwgMiwgMjM5LCA3LCAyMywgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIDIyOSwgOTQsIDksIDIsIDIzOSwgNywgCi0gICAgMjMsIDIyOSwgOTUsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjgsIDIwOCwgOTEsIDI1MCwgMjMxLCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyMjgsIDExMywgOSwgMiwgMjM5LCA3LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMzksIDcsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzksIDcsIDIzLCAyMjEsIDQxLCAKLSAgICAxMTUsIDIyMSwgNDAsIDksIDIsIDIzOSwgNywgMjMsIDE4NSwgOSwgMiwgMjM5LCA3LCAyMywgMjE1LCA4LCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyMTQsIDIzMCwgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCA0NCwgCi0gICAgOTEsIDIwNywgMTgxLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDksIDksIDIsIDIzOSwgNywgMjMsIDIxMCwgMjIwLCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM5LCA3LCAyMywgNjgsIDksIDIsIDIzOSwgNywgMjMsIDIwNywgMjksIDksIAotICAgIDIsIDIzOSwgNywgMjMsIDIwNywgMzAsIDkxLCAyNDIsIDQyLCA5LCAyLCAyMzksIDcsIDExNSwgMjM5LCA2LCA5LCAyLCAKLSAgICAyMzksIDEsIDksIDIsIDIzOSwgMiwgMjQ1LCAxMjQsIDIzOSwgMSwgOSwgMiwgMjM4LCAyNTUsIDksIDIsIDIzOSwgMCwgCi0gICAgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAyLCAyMzgsIDI0NiwgOSwgMiwgMjM4LCAyNDcsIAotICAgIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAyLCAyMzgsIDI0NSwgOSwgMiwgMjM4LCAKLSAgICAyNDMsIDksIDIsIDIzOCwgMjM0LCA5LCAyLCAyMzgsIDIzMiwgOSwgMiwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzgsIAotICAgIDIzMywgMTE1LCAyMzgsIDIzMiwgOSwgMiwgMjM4LCAyMzMsIDI0NSwgMTI0LCAyMzgsIDIzMiwgOSwgMiwgMjM4LCAyMjQsIAotICAgIDksIDIsIDIzOCwgMjIzLCA5LCAyLCAyMzgsIDIxOCwgOSwgMiwgMjM4LCAxNjIsIDksIDIsIDIzOCwgMTYzLCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDIzOCwgODEsIDksIDIsIDIzOCwgODIsIDIzLCA3NCwgOSwgMiwgMjM4LCA4MiwgMjMsIDY4LCA5LCAyLCAKLSAgICAyMzgsIDgyLCAyNDUsIDEyNCwgMjM4LCA4MSwgOSwgMiwgMjM4LCA3OSwgOSwgMiwgMjM4LCA4MCwgMTE1LCAyMzgsIDc5LCAKLSAgICA5LCAyLCAyMzgsIDgwLCAyNDUsIDEyNCwgMjM4LCA3OSwgOSwgMiwgMjM4LCA3NiwgOSwgMiwgMjM4LCA2MywgOSwgMiwgCi0gICAgMjM4LCA2NCwgMjM3LCAyMDgsIDksIDIsIDIzOCwgNjEsIDksIDIsIDIzOCwgNjIsIDIzLCAzNCwgOTEsIDIzMSwgODUsIDksIAotICAgIDIsIDIzOCwgNjIsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOCwgNjIsIDIzLCAyMzEsIDg1LCA5LCAyLCAKLSAgICAyMzgsIDYyLCAyMywgMjI2LCAyNDAsIDkxLCAyMzEsIDg1LCA5LCAyLCAyMzgsIDYyLCAyMywgMTg1LCA5LCAyLCAyMzgsIAotICAgIDU3LCA5LCAyLCAyMzgsIDU1LCA5LCAyLCAyMzgsIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjM4LCA1NiwgMjMsIAotICAgIDI0OSwgMTUsIDksIDIsIDIzOCwgNTYsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjM4LCA1NiwgMjA5LCAxNDEsIDksIDIsIDIzNywgCi0gICAgMjMwLCA5LCAyLCAyMzcsIDIzMSwgMjQ1LCAxMjQsIDIzNywgMjMwLCA5LCAyLCAyMzcsIDIyOCwgOSwgMiwgMjM3LCAyMjksIAotICAgIDIzLCAyMzAsIDEyLCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIzMCwgMTMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgCi0gICAgMjM3LCAyMjksIDIzLCAyMjEsIDQwLCA5LCAyLCAyMzcsIDIyOSwgMjMsIDIxNSwgOSwgOTEsIDIwNywgMTk3LCA5LCAyLCAKLSAgICAyMzcsIDIyOSwgMjM3LCAyMDgsIDksIDIsIDIzNywgMjE5LCA5LCAyLCAyMzcsIDIyMCwgMjMsIDM0LCA5MSwgMjI4LCAxODMsIAotICAgIDksIDIsIDIzNywgMjIwLCAyMywgMjI4LCAxODMsIDksIDIsIDIzNywgMjIwLCAxMTUsIDIzNywgMjIwLCAyMjYsIDIzMCwgOSwgCi0gICAgMiwgMjM3LCAyMTIsIDksIDIsIDIzNywgMjEwLCA5LCAyLCAyMzcsIDIxMSwgMjMsIDIxMywgNDMsIDksIDIsIDIzNywgMjAyLCAKLSAgICA5LCAyLCAyMzcsIDIwMSwgOSwgMiwgMjM3LCAxOTcsIDksIDIsIDIzNywgMTk2LCA5LCAyLCAxNTIsIDksIDIsIDIzNywgCi0gICAgMTYwLCAyMDksIDE0MSwgOSwgMiwgMjM3LCAxNjAsIDIzNywgMjA4LCA5LCAyLCAyMzcsIDE0MCwgOSwgMiwgMjM3LCAzLCA5LCAKLSAgICAyLCAyMzcsIDQsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMzcsIDQsIDIzLCAyNTAsIDczLCA5LCAyLCAyMzcsIDQsIDIzLCAyNDksIAotICAgIDE1LCA5LCAyLCAyMzcsIDQsIDIzLCAyNDMsIDE1NiwgOSwgMiwgMjM3LCA0LCAyMywgMjM4LCAyNTUsIDksIDIsIDIzNywgNCwgCi0gICAgMjMsIDIyOSwgODQsIDksIDIsIDIzNywgNCwgMjMsIDIyMSwgNDAsIDksIDIsIDIzNywgNCwgMjMsIDIxMywgNDMsIDksIDIsIAotICAgIDIzNywgNCwgMjMsIDY4LCA5LCAyLCAyMzYsIDI2LCA5LCAyLCAyMzYsIDIxLCA5LCAyLCAyMzYsIDIyLCAyMywgMjUwLCAKLSAgICAyMzEsIDksIDIsIDIzNiwgMjIsIDIzLCAyMzcsIDE0MCwgOSwgMiwgMjM2LCAyMiwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzYsIAotICAgIDIyLCAyMywgMjI3LCA5MiwgOSwgMiwgMjM2LCAyMiwgMjMsIDIwNywgMjksIDksIDIsIDIzNiwgMTcsIDksIDIsIDc1LCA5LCAKLSAgICAyLCAyMzUsIDIwNiwgNjMsIDksIDIsIDIzNSwgMTY2LCA5LCAyLCAyMzEsIDExMywgOSwgMiwgMjMxLCAxMTQsIDExNSwgCi0gICAgMjMxLCAxMTQsIDI0NywgMTYwLCA5LCAyLCAyMzEsIDExNCwgMTE1LCAyMzEsIDExNCwgMjExLCAxNzYsIDksIDIsIDIzMSwgCi0gICAgODgsIDksIDIsIDIzMSwgODUsIDksIDIsIDIzMSwgODYsIDI0MywgMjE1LCA5LCAyLCAyMzEsIDg2LCAyMTYsIDU3LCA5LCAyLCAKLSAgICAyMzEsIDg2LCAxMTUsIDIzMSwgODYsIDIxMiwgMjQ5LCAxMTUsIDIxMiwgMjQ5LCAyMDcsIDMwLCAxMTUsIDIwNywgMjksIDksIAotICAgIDIsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMzEsIDc3LCA5LCAyLCAyMzEsIDc4LCAyMywgMjM4LCAyMzMsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMzEsIDc2LCA5LCAyLCAyMzEsIDY2LCA5LCAyLCAyMzEsIDY3LCAyMywgMjA5LCAyNDIsIDksIDIsIAotICAgIDIzMSwgNjcsIDI0NSwgMTI0LCAyMzEsIDY2LCA5LCAyLCAyMzEsIDY3LCAyMTksIDI1MSwgMjMxLCA2NiwgOSwgMiwgMjMxLCAKLSAgICA2NywgMjExLCAxNzYsIDksIDIsIDIzMSwgNTksIDksIDIsIDIzMSwgNDksIDksIDIsIDIzMCwgMjI0LCA5LCAyLCAyMzAsIAotICAgIDIwOSwgOSwgMiwgMTczLCA5LCAyLCAyMzAsIDQ0LCAyMywgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTEsIDEyMiwgOSwgMiwgCi0gICAgMjMwLCA0NCwgMjMsIDI1MSwgMTIzLCA5MSwgMjI4LCAyMDcsIDksIDIsIDIzMCwgNDQsIDIzLCAyNTAsIDczLCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyMzAsIDQ0LCAyMywgCi0gICAgMTQyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0MSwgMjIsIDksIDIsIDIzMCwgCi0gICAgNDQsIDIzLCAyNDEsIDQsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzksIDgsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDI0NiwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjI0LCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjM4LCAyMjUsIDkxLCAyMTMsIDg5LCA5MSwgNjMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTYsIDkxLCAyMTQsIDIzMCwgOSwgCi0gICAgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMzAsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIwMSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzMSwgODUsIDksIDIsIDIzMCwgNDQsIAotICAgIDIzLCAyMzEsIDY2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjMwLCAxMiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyOSwgMTAwLCA5LCAKLSAgICAyLCAyMzAsIDQ0LCAyMywgMjI5LCA5NCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNywgMTQ4LCA5LCAyLCAyMzAsIDQ0LCAyMywgCi0gICAgMjI2LCAyMzksIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAyMSwgOTEsIAotICAgIDI0MiwgNDIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIxLCA5MSwgMjM4LCA4MSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgCi0gICAgMjEsIDkxLCAyMDksIDE4NywgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNCwgMTU1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI0LCAKLSAgICAxNTYsIDkxLCAyMjEsIDM1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjIyLCAyNDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjEsIAotICAgIDQwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjE4LCAxNjcsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTUsIDE0NSwgOSwgMiwgMjMwLCAKLSAgICA0NCwgMjMsIDIxNSwgMzYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTQsIDIzMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgOTAsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA5LCA5LCAyLCAyMzAsIDQ0LCAyMywgCi0gICAgMjEyLCAxOTksIDksIDIsIDIzMCwgNDQsIDIzLCAyMTIsIDE0OSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMCwgMjI5LCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjA5LCAyMTgsIDksIDIsIDIzMCwgNDQsIDIzLCA2OCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgNDAsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyLCAyMywgMTg1LCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjA2LCAxODYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDIsIDM5LCA5LCAyLCAyMzAsIDQyLCA5LCAyLCAKLSAgICAyMzAsIDQzLCAyNDUsIDEyNCwgMjMwLCA0MiwgOSwgMiwgMjMwLCAzMiwgOSwgMiwgMjMwLCAyOSwgOSwgMiwgMjMwLCAyNywgCi0gICAgOSwgMiwgMjMwLCAyNiwgOSwgMiwgMjMwLCAyNCwgOSwgMiwgMjMwLCAyNSwgMTE1LCAyMzAsIDI0LCA5LCAyLCAyMzAsIDEyLCAKLSAgICA5LCAyLCAyMzAsIDEzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzMCwgOCwgOSwgMiwgMjMwLCA5LCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjMwLCA5LCAyNDUsIDEyNCwgMjMwLCA4LCA5LCAyLCAyMzAsIDYsIDksIDIsIDIzMCwgNSwgOSwgCi0gICAgMiwgMjI5LCAyMzEsIDksIDIsIDIyOSwgMjMyLCAyMjgsIDk1LCAyMywgMTA2LCAxMTUsIDIyOCwgOTUsIDIzLCA2OCwgOSwgCi0gICAgMiwgMjI5LCAyMzIsIDExNSwgMjI5LCAyMzIsIDIyOCwgOTUsIDIzLCAxMDYsIDExNSwgMjI4LCA5NSwgMjMsIDY4LCA5LCAyLCAKLSAgICAyMjksIDE3MSwgOSwgMiwgMjI5LCAxMDAsIDksIDIsIDIyOSwgMTAxLCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI5LCAxMDEsIAotICAgIDIzLCA2OCwgOSwgMiwgMjI5LCAxMDEsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjksIDk0LCA5LCAyLCAyMjksIDg0LCA5LCAyLCAKLSAgICAyMjksIDcxLCA5LCAyLCAyMjksIDcwLCA5LCAyLCAyMjksIDY4LCA5LCAyLCAyMjksIDY5LCAxMTUsIDIyOSwgNjgsIDksIDIsIAotICAgIDIyOCwgMjA5LCA5LCAyLCAyMjgsIDIxMCwgMTE1LCAyMzcsIDQsIDIzLCAyNTAsIDc0LCAyMjgsIDIxMCwgMTE1LCAyMzcsIAotICAgIDQsIDIzLCAyNTAsIDczLCA5LCAyLCAyMjgsIDIwNywgOSwgMiwgMjI4LCAyMDUsIDksIDIsIDIyOCwgMjA2LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMiwgMjI4LCAyMDQsIDksIDIsIDIyOCwgMTk2LCA5LCAyLCAyMjgsIDE5NywgMjM3LCAyMDgsIDksIDIsIDIyOCwgCi0gICAgMTk1LCA5LCAyLCAyMjgsIDE4MywgOSwgMiwgMjI4LCAxODQsIDIxOSwgMjUxLCAyMjgsIDE4MywgOSwgMiwgMjI4LCAxNzcsIAotICAgIDksIDIsIDIyOCwgMTU1LCA5LCAyLCAyMjgsIDExMywgOSwgMiwgMjI4LCA5NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDYzLCA5LCAKLSAgICAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAyNDQsIDIxMywgOTEsIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIDIyOCwgMzAsIDksIDIsIDIyOCwgOTUsIDIzLCAyNTEsIDM5LCAKLSAgICA5LCAyLCAyMjgsIDk1LCAyMywgMjUwLCAyMzEsIDksIDIsIDIyOCwgOTUsIDIzLCAyNTAsIDc2LCAyMDIsIDM1LCAyMDksIAotICAgIDE0MSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjQ0LCAxNTQsIDksIDIsIDIyOCwgOTUsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjM5LCA4LCAKLSAgICA5LCAyLCAyMjgsIDk1LCAyMywgMjM4LCAyMjQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjI4LCA5NSwgCi0gICAgMjMsIDIzNywgMjIwLCA5MSwgMjM3LCAyMTksIDksIDIsIDIyOCwgOTUsIDIzLCAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAKLSAgICAyMzcsIDE0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzNywgNCwgMjMsIDIyMSwgNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIAotICAgIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjYsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY3LCA5MSwgCi0gICAgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NywgOTEsIDIyNiwgMjM5LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI5LCAKLSAgICAxMDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjksIDg0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI4LCAyMDcsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyMjgsIDE5NiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOCwgMTk3LCA5MSwgMjM3LCA0LCA5MSwgNjMsIDksIDIsIAotICAgIDIyOCwgOTUsIDIzLCAyMjgsIDk0LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI3LCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNiwgCi0gICAgMjM5LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI2LCAyMjQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjUsIDIwLCA5LCAyLCAyMjgsIAotICAgIDk1LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMjI4LCA5NSwgCi0gICAgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEzLCA0NCwgOTEsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjEyLCAyNDUsIDkxLCAyMzgsIDU2LCA5MSwgMjQxLCAyMiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgMjQ1LCA5MSwgCi0gICAgMjM4LCA1NiwgMjA5LCAxNDEsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTIsIDE5NywgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgCi0gICAgMTk4LCA5MSwgMjEyLCAxOTcsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgCi0gICAgMjU1LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAyNDIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIDE4OCwgOTEsIDM0LCAKLSAgICA5MSwgMjExLCAxMSwgOTEsIDIwMSwgMjAxLCA5LCAyLCAyMjgsIDk1LCAyMywgNjgsIDksIDIsIDIyOCwgOTUsIDIzLCAxMDYsIAotICAgIDkxLCA2MywgOSwgMiwgMjI4LCA5NSwgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA3LCAKLSAgICA0MSwgOTEsIDI1MCwgNzUsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDk1LCAyMywgMjA2LCAxODYsIAotICAgIDksIDIsIDIyOCwgOTUsIDIxMSwgMTc2LCA5LCAyLCAyMjgsIDkyLCA5LCAyLCAyMjgsIDkzLCAyMywgMjEzLCA0MywgOSwgMiwgCi0gICAgMjI4LCA5MywgMjMsIDIxMywgNDQsIDkxLCAyMTAsIDIyMCwgOSwgMiwgMjI4LCA5MywgMjM3LCAyMDgsIDksIDIsIDIyOCwgCi0gICAgOTMsIDIzNywgMjA5LCAxMTUsIDIyOCwgOTMsIDIzNywgMjA5LCAyMTMsIDQzLCA5LCAyLCAyMjgsIDg4LCA5LCAyLCAyMjgsIAotICAgIDMwLCA5LCAyLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjI4LCAyOCwgOSwgMiwgMjI4LCAyOSwgMjMsIDIyOCwgCi0gICAgMTgzLCA5LCAyLCAyMjgsIDI5LCAyMywgMjI4LCAxODQsIDkxLCAyMTUsIDE0NSwgOSwgMiwgMjI3LCAxNDgsIDksIDIsIAotICAgIDIyNywgMTI5LCA5LCAyLCAyMjcsIDExNywgOSwgMiwgMjI3LCA5MiwgOSwgMiwgMjI2LCAyMzksIDksIDIsIDIyNiwgMjQwLCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzcsIDksIDIsIDIyNiwgMjM4LCAyMywgMjUxLCAzOSwgOSwgMiwgMjI2LCAyMzgsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MSwgNCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNDEsIDUsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzcsIDQsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMSwgNjYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyOSwgOSwgCi0gICAgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI3LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjgsIDkxLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIyOCwgMTE0LCA5MSwgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMjgsIDk0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIyNSwgMjEsIDkxLCAyNDEsIDkyLCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIyMiwgMjQwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIyMSwgODQsIDksIDIsIDIyNiwgMjM4LCAyMywgCi0gICAgMjEyLCAxNjMsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxMiwgMTQxLCA5MSwgMjQ3LCAxOTMsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjA3LCAxOTcsIDksIDIsIDIyNiwgMjM4LCAyMDksIDE0MSwgOSwgMiwgMjI2LCAyMzgsIDI0NSwgCi0gICAgMTI0LCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIxOSwgMjUxLCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIxMSwgCi0gICAgMTc2LCA5LCAyLCAyMjYsIDIzOCwgMjEzLCAyNCwgOSwgMiwgMjI2LCAyMzYsIDksIDIsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIAotICAgIDIzMSwgMTE1LCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAyMzEsIDIxOSwgMjUxLCAyMjYsIDIzMCwgOSwgMiwgMjI2LCAyMzEsIAotICAgIDIxMywgMjQsIDksIDIsIDIyNiwgMjI3LCA5LCAyLCAyMjYsIDIyNCwgOSwgMiwgMjI2LCAyMjIsIDksIDIsIDIyNiwgMjIzLCAKLSAgICAxMTUsIDIyNiwgMjIyLCA5LCAyLCAyMjYsIDIyMywgMTE1LCAyMjYsIDIyMywgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIAotICAgIDIsIDE5MiwgOSwgMiwgMjI1LCAxNzcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI1LCAxNzcsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyMjUsIDE3NiwgOSwgMiwgMjI1LCAxNDgsIDksIDIsIDIyNSwgMTAwLCA5LCAyLCAyMjUsIDc5LCA5LCAyLCAyMjUsIDc4LCAKLSAgICA5LCAyLCAyMjUsIDIwLCA5LCAyLCAyMjQsIDIyOCwgOSwgMiwgMjI0LCAxNTUsIDksIDIsIDIyNCwgMTEwLCA5LCAyLCAyMjMsIAotICAgIDI0NiwgOSwgMiwgMjIzLCAyNDcsIDExNSwgMjIzLCAyNDYsIDksIDIsIDIyMywgMjM1LCA5LCAyLCAyMjMsIDIzNiwgMjM3LCAKLSAgICAyMDgsIDksIDIsIDIyMywgMjE3LCA5LCAyLCAyMjMsIDIwMywgOSwgMiwgMjIzLCAxOTksIDksIDIsIDIyMywgMjAwLCAyMywgCi0gICAgNjMsIDksIDIsIDIyMywgMjAwLCAyMywgMjI4LCAxODMsIDksIDIsIDIyMywgMjAwLCAyMywgMjAyLCAxMTYsIDksIDIsIAotICAgIDIyMywgMjAwLCAxMTUsIDIyMywgMTk5LCA5LCAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgMjMsIDM0LCA5MSwgMjAxLCAKLSAgICAyMDEsIDksIDIsIDIyMywgMjAwLCAyNDUsIDEyNCwgMjIzLCAxOTksIDksIDIsIDIyMywgMTk3LCA5LCAyLCAyMjMsIDE5OCwgCi0gICAgMjMsIDYzLCA5LCAyLCAyMjMsIDE5OCwgMjMsIDM0LCA5MSwgMjQzLCAyMzMsIDksIDIsIDIyMywgMTk4LCAyMywgMjQzLCAKLSAgICAyMzMsIDksIDIsIDIyMywgMTk4LCAyMzcsIDIwOCwgOSwgMiwgMjAxLCAyMDEsIDksIDIsIDIyMywgMTA5LCA5LCAyLCAyMjMsIAotICAgIDk2LCA5LCAyLCAyMjMsIDk3LCAyMzAsIDIzOCwgOSwgMiwgMjIzLCA5NywgMjMsIDIxMiwgMjAwLCAyMDksIDE0MSwgOSwgMiwgCi0gICAgMjIzLCA5NywgMjE5LCAyNTEsIDIyMywgOTYsIDksIDIsIDIyMywgOTUsIDksIDIsIDIyMywgODgsIDIyMSwgMjYsIDksIDIsIAotICAgIDIyMywgODcsIDksIDIsIDIyMywgODYsIDksIDIsIDIyMiwgMjQwLCA5LCAyLCAyMjIsIDI0MSwgMjMsIDYzLCA5LCAyLCAKLSAgICAyMjIsIDI0MSwgMjMsIDIwNywgMjksIDksIDIsIDIyMiwgMjQxLCAyMTMsIDI0LCA5LCAyLCAyMjIsIDEwMCwgOSwgMiwgCi0gICAgMjIyLCAxMDEsIDIzLCA3NCwgOSwgMiwgMjIyLCA5OSwgOSwgMiwgMjIyLCA2OSwgOSwgMiwgMjIyLCA3MCwgMjMsIDIzOCwgCi0gICAgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjIyLCA3MCwgMjMsIDIzOCwgMjI1LCA5MSwgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAKLSAgICAyMjIsIDY1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjUwLCAyMzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjUwLCA3NiwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDIxOSwgOSwgMiwgCi0gICAgMjIyLCA2NiwgMjMsIDIyNSwgMjEsIDkxLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjIsIAotICAgIDI0MCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyMSwgNDAsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMjIsIAotICAgIDY2LCAyMywgMjEzLCA0NCwgOTEsIDM0LCAyNTAsIDIzMSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDQsIDkxLCAyNTAsIAotICAgIDc1LCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0NCwgOTEsIDI1MCwgNzYsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMjIsIDY2LCAKLSAgICAyMywgMjA3LCA0MSwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjIyLCA1MywgOSwgCi0gICAgMiwgMjIxLCA4NCwgOSwgMiwgMjIxLCA1NiwgOSwgMiwgMjIxLCA0MCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIAotICAgIDIzOCwgMjI0LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjI1LCA3OSwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgCi0gICAgMjMsIDIxNSwgOCwgOSwgMiwgMjIxLCA0MSwgMjI4LCA5MywgMjMsIDIxNSwgOSwgMTE1LCAyMjEsIDQxLCAyMjgsIDkzLCAKLSAgICAyMywgMjE1LCA4LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjA2LCAxODYsIDksIDIsIDIyMSwgNDEsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMjEsIDQxLCAxMTUsIDIyMSwgNDAsIDksIDIsIDIyMSwgNDEsIDI0NSwgMTI0LCAyMjEsIDQwLCA5LCAyLCAKLSAgICAyMjEsIDQxLCAyNDUsIDEyNCwgMjIxLCA0MSwgMjI4LCA5MywgMTE1LCAyMjgsIDkyLCA5LCAyLCAyMjEsIDM1LCA5LCAyLCAKLSAgICAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI1MCwgNjksIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjQ4LCA4NiwgOSwgCi0gICAgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNDIsIDM3LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIzNywgMjE5LCAKLSAgICA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgCi0gICAgMjMsIDIzMCwgMjcsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjI4LCAxMTMsIDksIDIsIDIyMSwgMzYsIDI1MSwgCi0gICAgMTUwLCAyMywgMjIyLCAyNDAsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjEyLCAxMzgsIDksIDIsIDIyMSwgMzYsIAotICAgIDI1MSwgMTUwLCAyMywgMjA3LCA0MCwgOSwgMiwgMjIxLCAzNiwgMjI5LCA2OSwgMjMsIDI0OCwgODYsIDksIDIsIDIyMSwgCi0gICAgMzYsIDIyOSwgNjksIDIzLCAyNDgsIDg3LCA2OCwgOSwgMiwgMTg1LCA5LCAyLCAyMTksIDE1OSwgOSwgMiwgMjE5LCAxMjIsIAotICAgIDksIDIsIDIxOSwgOTYsIDksIDIsIDIxOCwgMjIyLCA5LCAyLCAyMTgsIDE2NywgOSwgMiwgMjE4LCAxNjgsIDIzLCA2MywgOSwgCi0gICAgMiwgMjE4LCAxNjgsIDIzLCAyNTEsIDIzMiwgOSwgMiwgMjE4LCAxNjgsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMTgsIDE2OCwgCi0gICAgMjMsIDI0NywgMTkzLCA5LCAyLCAyMTgsIDE2OCwgMjMsIDc0LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDc1LCA5LCAyLCAyMTgsIAotICAgIDE2OCwgMjMsIDIzNSwgMTY2LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDY4LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDIwNywgNDAsIAotICAgIDksIDIsIDIxOCwgMTY4LCAyNDUsIDEyNCwgMjE4LCAxNjcsIDksIDIsIDIxOCwgMTA5LCA5LCAyLCAyMTgsIDExMCwgMjMsIAotICAgIDIzMCwgOCwgOSwgMiwgMjE4LCAxMTAsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMTgsIDExMCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAKLSAgICAyMTgsIDExMCwgMjE5LCAyNTEsIDIxOCwgMTA5LCA5LCAyLCAyMTYsIDIyMCwgOSwgMiwgMjE2LCAyMTQsIDksIDIsIDIxNiwgCi0gICAgNTcsIDksIDIsIDIxNSwgMTQ1LCA5LCAyLCAyMTUsIDM2LCA5LCAyLCAyMTUsIDIzLCAyMjEsIDI2LCA5LCAyLCAyMTUsIDIyLCAKLSAgICA5LCAyLCAyMTUsIDIzLCAyMywgNjMsIDksIDIsIDIxNSwgMjMsIDIzLCAyNDIsIDQyLCA5LCAyLCAyMTUsIDIzLCAyMywgCi0gICAgMjQyLCA0MCwgOSwgMiwgMjE1LCAyMywgMjMsIDE1MiwgOSwgMiwgMjE1LCAyMywgMjMsIDIzMCwgMTIsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjE1LCAyMywgMjMsIDIyNiwgMjIyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjI0LCAKLSAgICAxNTUsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjEsIDQwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjE1LCA4LCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMywgMjEzLCA5LCA5LCAyLCAyMTUsIDIzLCAyMywgMjEwLCAxMCwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgNDAsIAotICAgIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDM1LCA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCA2LCA5LCAyLCAyMTUsIDIzLCAyMywgCi0gICAgMjA2LCAyMTAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjE1LCAyMywgMTE1LCAyMTUsIDIyLCA5LCAyLCAKLSAgICAyMTUsIDIzLCAyMzcsIDIwOCwgOSwgMiwgMjE1LCA4LCA5LCAyLCAyMTUsIDksIDIyOCwgOTUsIDIzLCAyNTAsIDczLCA5LCAKLSAgICAyLCAyMTQsIDIzOCwgOSwgMiwgMjE0LCAyMzAsIDksIDIsIDIxMywgOTAsIDksIDIsIDIxMywgODgsIDksIDIsIDIxMywgODksIAotICAgIDIzLCA2MywgOSwgMiwgMjEzLCA4OSwgMjMsIDI0OSwgMTUsIDksIDIsIDIxMywgODksIDIzLCAyMzgsIDU1LCA5LCAyLCAKLSAgICAyMTMsIDg5LCAyMywgMjIyLCAyNDAsIDksIDIsIDIxMywgODksIDIzLCAyMTIsIDE5NywgOSwgMiwgMjEzLCA4OSwgMjMsIAotICAgIDIwNywgMTgxLCA5LCAyLCAyMTMsIDg5LCAyMywgNjgsIDksIDIsIDIxMywgODksIDIzLCAxMDYsIDkxLCA2MywgOSwgMiwgCi0gICAgMjEzLCA4NiwgOSwgMiwgMjEzLCA4NCwgOSwgMiwgMjEzLCA1OSwgOSwgMiwgMjEzLCA0MywgOSwgMiwgMjEzLCA0NCwgMjM2LCAKLSAgICAyNiwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQ0LCAyMzksIDAsIDExNSwgMjM5LCAwLCAyMzgsIDIyNSwgMTE1LCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQ0LCAyMTAsIDExLCAxMTUsIDIxMCwgMTEsIDIzOCwgMjI1LCAxMTUsIAotICAgIDIzOCwgMjI0LCA5LCAyLCAyMTMsIDM2LCA5LCAyLCAyMTMsIDMxLCA5LCAyLCAyMTMsIDI3LCA5LCAyLCAyMTMsIDI2LCA5LCAKLSAgICAyLCAyMTMsIDIzLCA5LCAyLCAyMTMsIDksIDksIDIsIDIxMywgMTAsIDIzLCA2MywgOSwgMiwgMjEzLCAxMCwgMjMsIDIzMSwgCi0gICAgNjYsIDksIDIsIDIxMywgMywgOSwgMiwgMjEzLCA0LCAyMywgNjMsIDksIDIsIDIxMywgNCwgMjMsIDI0OCwgMjUzLCA5LCAyLCAKLSAgICAyMTMsIDQsIDIzLCAyNDcsIDE3MSwgOSwgMiwgMjEzLCA0LCAyMywgMjQzLCAxNzYsIDksIDIsIDIxMywgNCwgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMTMsIDQsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgCi0gICAgMiwgMjEzLCA0LCAyMywgMjI4LCAxNzcsIDksIDIsIDIxMywgNCwgMjMsIDIyNiwgMjI0LCA5LCAyLCAyMTMsIDQsIDIzLCAKLSAgICAyMjMsIDIzNSwgOSwgMiwgMjEzLCA0LCAyMywgMjE1LCA4LCA5LCAyLCAyMTIsIDI1MywgOSwgMiwgMjEyLCAyNDgsIDksIDIsIAotICAgIDIxMiwgMjQ5LCAyMDksIDE0MSwgOSwgMiwgMjEyLCAyNDksIDExNSwgMjEyLCAyNDksIDI0NywgMTYxLCAxMTUsIDI0NywgCi0gICAgMTYwLCA5LCAyLCAyMTIsIDI0NCwgOSwgMiwgMjEyLCAxOTksIDksIDIsIDIxMiwgMjAwLCAxMTUsIDIzMCwgMjM5LCAyMTIsIAotICAgIDE5OSwgOSwgMiwgMjEyLCAxOTcsIDksIDIsIDIxMiwgMTk2LCA5LCAyLCAyMTIsIDE2MiwgOSwgMiwgMjEyLCAxNjMsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyMTIsIDE0OSwgOSwgMiwgMjEyLCAxNDcsIDksIDIsIDIxMiwgMTQ4LCAxMTUsIDIxMiwgMTQ4LCAyMTIsIAotICAgIDE5NywgOSwgMiwgMjEyLCAxNDAsIDksIDIsIDIxMiwgMTM4LCA5LCAyLCAyMTEsIDEwLCA5LCAyLCAyMTEsIDExLCAxMTUsIAotICAgIDIxMSwgMTAsIDksIDIsIDIxMCwgMjMyLCA5LCAyLCAyMTAsIDIzMSwgOSwgMiwgMjEwLCAyMjksIDksIDIsIDIxMCwgMjIwLCAKLSAgICA5LCAyLCAyMTAsIDIxOSwgOSwgMiwgMjEwLCAxOTMsIDksIDIsIDIxMCwgMTkyLCA5LCAyLCAyMTAsIDIyLCA5LCAyLCAyMTAsIAotICAgIDIzLCAyNTAsIDU5LCA5LCAyLCAyMTAsIDIzLCAyMywgMjM3LCAzLCA5LCAyLCAyMTAsIDIzLCAyMywgMjI0LCAxNTUsIDksIAotICAgIDIsIDIxMCwgMjMsIDIzNywgMjA4LCA5LCAyLCAyMTAsIDEwLCA5LCAyLCAyMTAsIDExLCAxMTUsIDIxMCwgMTEsIDIyMiwgCi0gICAgMTAxLCAxMTUsIDIyMiwgMTAxLCAyNDMsIDE1NywgMTE1LCAyNDMsIDE1NiwgOSwgMiwgMjEwLCAxMSwgMjExLCAxNzYsIDksIAotICAgIDIsIDIwOSwgMjU1LCA5LCAyLCAxNjAsIDIzLCAyNDgsIDg2LCA5LCAyLCAxNjAsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMTYwLCAKLSAgICAyMywgMjEzLCA0MywgOSwgMiwgMTYwLCAyMywgMjEyLCAxOTksIDksIDIsIDE2MCwgMjMsIDIwNywgMTk3LCA5LCAyLCAxNjAsIAotICAgIDIzLCAyMDcsIDI5LCA5LCAyLCAyMDksIDI0MiwgOSwgMiwgMjA5LCAyMTgsIDksIDIsIDIwOSwgMTg3LCA5LCAyLCAyMDksIAotICAgIDE4OCwgMjM3LCAyMDgsIDksIDIsIDIwOSwgMiwgOSwgMiwgMjA5LCAzLCAyMDksIDE0MSwgOSwgMiwgMjA4LCAyMjksIDksIAotICAgIDIsIDIwOCwgMjA2LCA5LCAyLCAyMDgsIDIwNywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDgsIDIwNywgMTE1LCAyMDgsIDIwNiwgCi0gICAgOSwgMiwgMjA4LCAyMDcsIDExNSwgMjA4LCAyMDcsIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMDcsIDIwMywgOSwgMiwgMjA3LCAxOTcsIDksIDIsIDIwNywgMTk1LCA5LCAyLCAyMDcsIDE5MSwgOSwgCi0gICAgMiwgMjA3LCAxODEsIDksIDIsIDIwNywgMTgyLCAxMTUsIDIwNywgMTgyLCAyMDIsIDExNywgMTE1LCAyMDIsIDExNiwgOSwgCi0gICAgMiwgNjgsIDksIDIsIDEwNiwgMjM3LCAyMTksIDksIDIsIDEwNiwgMTA2LCA2OCwgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMjE5LCAKLSAgICAxNjksIDExNSwgMjE5LCAxNjksIDIzOCwgMjI1LCAxMTUsIDIzOCwgMjI0LCA5LCAyLCAxMDYsIDExNSwgMTA2LCAyMTAsIAotICAgIDE5NCwgMTE1LCAyMTAsIDE5MywgOSwgMiwgMTA2LCAxMTUsIDEwNiwgMTA2LCAyMTYsIDczLCAxMTUsIDEwNiwgMjE2LCA3MiwgCi0gICAgOSwgMiwgMjA3LCA0MCwgOSwgMiwgMjA3LCAzNSwgOSwgMiwgMjA3LCAyOSwgOSwgMiwgMjA3LCAzMCwgMjI4LCAxNzcsIDksIAotICAgIDIsIDIwNywgMzAsIDIzLCAyNDksIDE1LCA5LCAyLCAyMDcsIDMwLCAyMywgMjI0LCAxNTUsIDksIDIsIDIwNywgMzAsIDIzLCAKLSAgICAxMDYsIDkxLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjA3LCAzMCwgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDEwNiwgMjM3LCAyMDgsIAotICAgIDksIDIsIDIwNywgMzAsIDIzNywgMjA4LCA5LCAyLCAyMDcsIDMwLCAyMTMsIDI0LCA5LCAyLCAyMDcsIDMwLCAyMTMsIDI1LCAKLSAgICAyMywgMjQ5LCAxNSwgOSwgMiwgMjA3LCAyNSwgOSwgMiwgMjA3LCA2LCA5LCAyLCAyMDcsIDcsIDIzLCAyMjgsIDk0LCA5LCAKLSAgICAyLCAyMDcsIDcsIDIzLCAyMjUsIDIxLCA5MSwgMjQ0LCAyMTIsIDksIDIsIDIwNywgNywgMjMsIDIxMywgODgsIDksIDIsIAotICAgIDIwNywgNywgMjMsIDY4LCA5LCAyLCAyMDcsIDUsIDksIDIsIDIwNywgMSwgOSwgMiwgMjA3LCAyLCAyMywgMjI5LCAyMzEsIAotICAgIDksIDIsIDIwNywgMiwgMjMsIDE4NSwgOSwgMiwgMjA2LCAyNTUsIDksIDIsIDIwNywgMCwgMjM3LCAyMDgsIDksIDIsIDIwNiwgCi0gICAgMjEwLCA5LCAyLCAyMDYsIDIxMSwgMjQ1LCAxMjQsIDIwNiwgMjEwLCA5LCAyLCAyMDYsIDIxMSwgMjEzLCAyNCwgOSwgMiwgCi0gICAgMjA2LCAyMDgsIDksIDIsIDIwNiwgMjA5LCAyMywgMzQsIDkxLCAxNTIsIDksIDIsIDIwNiwgMjA5LCAyMywgMzQsIDkxLCAKLSAgICAyMDEsIDIwMSwgOSwgMiwgMjA2LCAyMDksIDIzLCAyNTEsIDM5LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDE1MiwgOSwgMiwgCi0gICAgMjA2LCAyMDksIDIzLCAyMjEsIDQwLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgNDAsIDksIDIsIDIwNiwgMjA5LCAyMywgCi0gICAgMjA3LCA0MSwgOTEsIDI1MCwgNzUsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCA0MSwgOTEsIDI0OCwgODYsIDksIDIsIAotICAgIDIwNiwgMjA3LCA5LCAyLCAyMDYsIDIwNCwgOSwgMiwgMjA2LCAyMDMsIDksIDIsIDIwNiwgMTk5LCA5LCAyLCAyMDYsIDIwMCwgCi0gICAgMjMsIDYzLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDI1MCwgNjksIDksIDIsIDIwNiwgMjAwLCAyMywgMTQyLCA5LCAyLCAyMDYsIAotICAgIDIwMCwgMjMsIDI0MiwgMzEsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM5LCA4LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgCi0gICAgMjQ2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzgsIAotICAgIDIyNCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzcsIDIzMCwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxNTIsIDksIDIsIDIwNiwgCi0gICAgMjAwLCAyMywgMjMxLCA4NSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzEsIDY2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzMCwgCi0gICAgMjA5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyNiwgMjIyLCA5LCAyLCAKLSAgICAyMDYsIDIwMCwgMjMsIDIyNCwgMTEwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE4NSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMTMsIAotICAgIDQzLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIxMiwgMTQ3LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIwNywgMjAzLCA5LCAyLCAKLSAgICAyMDYsIDIwMCwgMjMsIDEwNiwgOTEsIDIzNywgMjE5LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIwNywgMjksIDksIDIsIDIwNiwgCi0gICAgMjAwLCAyMywgMjA2LCAxOTcsIDksIDIsIDIwNiwgMTk3LCA5LCAyLCAyMDYsIDE5OCwgMjMsIDY4LCA5LCAyLCAyMDYsIAotICAgIDE4NiwgOSwgMiwgMjA2LCAxODcsIDIzLCA2MywgOSwgMiwgMjA2LCAxODcsIDIzLCAyMjgsIDIwOSwgOSwgMiwgMjA2LCAKLSAgICAxODcsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjA2LCAxODcsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA2LCAxODIsIDksIDIsIAotICAgIDIwNiwgMTg1LCA5LCAyLCAyMDYsIDE4MywgOSwgMiwgMjA2LCAxNzksIDksIDIsIDIwNiwgMTY3LCA5LCAyLCAyMDYsIDE2OCwgCi0gICAgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMDYsIDE2NiwgOSwgMiwgMjAyLCAxMTYsIDksIDIsIDIwMiwgMTE3LCAyMDksIDE0MSwgCi0gICAgOSwgMiwgMjAyLCAxMTcsIDEwMywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMDIsIDExMiwgOSwgMiwgMjAyLCAxMDUsIDksIDIsIAotICAgIDIwMiwgOTEsIDksIDIsIDIwMiwgMzksIDksIDIsIDIwMiwgNDAsIDExNSwgMjAyLCAzOSwgOSwgMiwgMjAyLCAzOCwgOSwgMiwgCi0gICAgMjAyLCAzNiwgOSwgMiwgMjAyLCAzNywgMjMwLCAzMSwgMjA5LCAxNDEsIDksIDIsIDIwMiwgMzEsIDksIDIsIDIwMiwgMjIsIAotICAgIDksIDIsIDIwMiwgNiwgOSwgMiwgMjAyLCA0LCA5LCAyLCAyMDIsIDUsIDIzLCA2MywgOSwgMiwgMjAyLCAzLCA5LCAyLCAKLSAgICAyMDIsIDIsIDksIDIsIDIyOSwgMjU0LCAyNDEsIDExOSwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMjEsIDQwLCA5LCAyLCAyNTEsIAotICAgIDE1MCwgMjMsIDYzLCA5LCAyLCAyNTAsIDI0NCwgMjMsIDIyOCwgMTk4LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIAotICAgIDIwNywgNDEsIDkxLCAyMjUsIDc5LCA5LCAyLCAyNDQsIDIwMiwgOSwgMiwgMjQzLCAxNTcsIDkxLCAyMTIsIDE5OSwgOSwgMiwgCi0gICAgMjQyLCA0MSwgMjMsIDIxMywgNDMsIDksIDIsIDI0MCwgMTgwLCAyMywgMjM3LCAyMTksIDksIDIsIDI0MCwgMTgwLCAyMywgCi0gICAgMjEzLCA0MywgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCAyMzIsIDkxLCAyMzAsIDEzLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgCi0gICAgMjMsIDI1MCwgNzMsIDksIDIsIDIzOCwgMTg5LCA5LCAyLCAyMzgsIDcxLCA5LCAyLCAyMzYsIDMsIDksIDIsIDIzMCwgNDQsIAotICAgIDIzLCAyNTAsIDIwMCwgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MCwgNzIsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDU1LCA5LCAKLSAgICAyLCAyMzAsIDQ0LCAyMywgMjM3LCAyMTksIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDQsIDIzLCAyNTAsIDczLCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjI2LCAyMjIsIDksIDIsIDIzMCwgNDQsIDIzLCAxODUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTIsIAotICAgIDE5MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMjAzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA2LCAyMDgsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMjYsIDIzOCwgMjEzLCAyNSwgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAKLSAgICAyMywgMjQxLCA1LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTIsIDE5OSwgOSwgMiwgMjI0LCAyMjcsIDksIAotICAgIDIsIDIyMywgMTk4LCAyMywgMjAyLCAxMTYsIDksIDIsIDIyMywgMTA4LCA5LCAyLCAyMjIsIDY4LCA5LCAyLCAyMjIsIDY3LCAKLSAgICA5LCAyLCAyMjIsIDY2LCAyMywgMjQ4LCAyNTMsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMjEsIDU3LCAKLSAgICAyMTUsIDE5OCwgMjIyLCA1OSwgMjQ0LCA1NCwgOSwgMiwgMjE4LCAyMjMsIDI1MCwgNTksIDksIDIsIDIxOCwgMTEzLCA5LCAKLSAgICAyLCAyMTUsIDIzLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIwOSwgMSwgOSwgMiwgMjA3LCA3LCAyMywgMjI1LCAKLSAgICAyMCwgOSwgMiwgMTA2LCA2OCwgOSwgMTQxLCAyLCAxMjAsIDI1MCwgNzUsIDksIDE0MSwgMiwgMTI2LCAyNTAsIDc1LCA5LCAKLSAgICAxNDEsIDIsIDIzOSwgMTQ3LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNTAsIDc1LCA5LCAxNDEsIDIsIDIxMiwgCi0gICAgODgsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDI1MCwgNzUsIAotICAgIDksIDE0MSwgMiwgMjIyLCA2NCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMjYsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgCi0gICAgMTQ3LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjEyLCA4OCwgMjQzLCAKLSAgICAxNTYsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyNDMsIDE1NiwgOSwgCi0gICAgMTQxLCAyLCAyMjIsIDY0LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMzksIDE0NywgNjgsIDksIDE0MSwgMiwgMjM5LCAyMzMsIAotICAgIDY4LCA5LCAxNDEsIDIsIDIxMiwgODgsIDY4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCA2OCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgCi0gICAgNjgsIDksIDE0MSwgMiwgMjIyLCA2NCwgNjgsIDksIDE0MSwgMiwgMTE4LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAxMjAsIAotICAgIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDEyNiwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIzOCwgMTY0LCA5LCAKLSAgICAxNDEsIDIsIDIzOSwgMjMzLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMTMsIAotICAgIDExMiwgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIyMiwgNjQsIDIzOCwgCi0gICAgMTY0LCA5LCAxNDEsIDIsIDExOCwgMjM4LCAxNjEsIDksIDE0MSwgMiwgMTIwLCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAxMjYsIAotICAgIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjM4LCAxNjEsIAotICAgIDksIDE0MSwgMiwgMTIwLCAyMTMsIDU5LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMjYsIDIxMywgCi0gICAgNjAsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMTMsIAotICAgIDU5LCA5LCAxNDEsIDIsIDIxMiwgODgsIDIxMywgNTksIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIxMywgNTksIDksIDE0MSwgMiwgCi0gICAgMjQxLCAxNDMsIDIxMywgNTksIDksIDE0MSwgMiwgMjIyLCA2NCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAxMTgsIDIxMywgNTQsIAotICAgIDksIDE0MSwgMiwgMTIwLCAyMTMsIDU0LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCA1NCwgOSwgMTQxLCAyLCAxMjYsIDIxMywgCi0gICAgNTUsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMTMsIDU0LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMTMsIAotICAgIDU0LCA5LCAxNDEsIDIsIDIxMywgNjAsIDIzLCAyMzgsIDI0NywgOTEsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIxMywgNjAsIAotICAgIDIzLCAyMzgsIDI0NywgOTEsIDIyNCwgMTEwLCA5LCAxNDEsIDIsIDExOCwgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTIwLCAKLSAgICAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjYsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyNiwgMjQ3LCAxNTcsIDIwNiwgNjksIAotICAgIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ3LCAxNTYsIDksIDE0MSwgCi0gICAgMiwgMTI2LCAyMDYsIDY5LCAyMzksIDE1OSwgMjQxLCA2LCA5LCAxNDEsIDIsIDEyNiwgMjA2LCA2OSwgMjM5LCAxNTksIAotICAgIDI0MSwgMywgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE4LCA5LCAxNDEsIDIsIDIzOSwgCi0gICAgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTYsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAKLSAgICAyMjcsIDExOSwgNjMsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExOSwgMjQ5LCAyNTUsIAotICAgIDksIDE0MSwgMiwgMjEyLCA4OCwgMjA2LCA2OSwgMjM5LCAxNTksIDI1MCwgNzEsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgCi0gICAgNjksIDIzOSwgMTU5LCAyMzEsIDU4LCA5LCAxNDEsIDIsIDIxMywgMTEyLCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA2MCwgCi0gICAgNjMsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDYwLCAyNDksIDI1NSwgOSwgMTQxLCAyLCAKLSAgICAyNDEsIDE0MywgMjA2LCA2OSwgMjM5LCAxNTksIDIwNiwgMTgxLCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAyMDYsIDY5LCAyMzksIAotICAgIDE1OSwgMjA2LCAxODAsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNzQsIDksIDE0MSwgMiwgCi0gICAgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNzMsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAKLSAgICAxNTksIDIzMSwgNzIsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNzUsIDYzLCA5LCAxNDEsIAotICAgIDIsIDEyMCwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMTI2LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAKLSAgICAyMzksIDE0NywgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAKLSAgICAxNDEsIDIsIDIxMiwgODgsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIDExOCwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgCi0gICAgMTIwLCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAxMjYsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDgsIDI0MCwgCi0gICAgOSwgMTQxLCAyLCAyMzksIDE0NywgMjQ4LCAyNDEsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDgsIAotICAgIDI0MCwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjQ4LCAyNDEsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIyMiwgNzcsIDksIAotICAgIDE0MSwgMiwgMjIyLCA3OCwgOSwgMTQxLCAyLCAxMTgsIDI0MSwgMiwgOSwgMTQxLCAyLCAxMjAsIDI0MSwgMiwgOSwgMTQxLCAKLSAgICAyLCAxMTgsIDIwOSwgNjEsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDEyMCwgMjA5LCA1OCwgMjQzLCAxNTYsIDksIDE0MSwgMiwgCi0gICAgMjM5LCAyMzMsIDIxMiwgNzcsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDExOCwgMjA5LCA2MSwgMjA2LCA2OSwgMjM5LCAxNTksIAotICAgIDYzLCA5LCAxNDEsIDIsIDEyMCwgMjA5LCA1OCwgMjA2LCA2OSwgMjM5LCAxNTksIDYzLCA5LCAxNDEsIDIsIDExOCwgMjQxLCAKLSAgICAxMzksIDI1MCwgNzUsIDksIDE0MSwgMiwgMTE4LCAyMTcsIDU2LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDM4LCAyNTAsIDYyLCAKLSAgICAxMTgsIDIxMiwgNzgsIDksIDE0MSwgMiwgMzgsIDI1MCwgNjIsIDExOCwgMjE3LCA1NSwgOSwgMTQxLCAyLCAxMTgsIDIxNywgCi0gICAgNTYsIDIzNywgMjAyLCA5LCAxNDEsIDIsIDExOCwgMTYyLCAyMzcsIDIwMiwgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMTE4LCAKLSAgICAyMDksIDYwLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAxMjAsIDIwOSwgNTcsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDIzOSwgCi0gICAgMTUzLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAyNDAsIDE4LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAxMDYsIDIwNiwgNjksIDE4LCAKLSAgICA5LCAxNDEsIDIsIDIzOSwgMjMzLCAxMDYsIDIwNiwgNjksIDE4LCA5LCAxNDEsIDIsIDIxMiwgODgsIDEwNiwgMjA2LCA2OSwgCi0gICAgMTgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDEwNiwgMjA2LCAKLSAgICA2OSwgMTgsIDksIDE0MSwgMiwgMjIyLCA2NCwgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMjE3LCAxNzksIDIsIDM4LCAyNTAsIAotICAgIDYyLCAyMDMsIDIzOCwgMjQzLCAxNDEsIDksIDIxNywgMTc5LCAyLCA4MCwgMjQ1LCAyNDIsIDksIDIxNywgMTc5LCAyLCAKLSAgICAyNDMsIDIyOCwgMjQ1LCAyNDIsIDksIDIxNywgMTc5LCAyLCAyNDMsIDIyOCwgMjA4LCA4MSwgOSwgMjE3LCAxNzksIDIsIAotICAgIDI0MywgMjI4LCAyMTcsIDYxLCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyMSwgNDEsIDIwOSwgMTQxLCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjMsIDIxMiwgMTk3LCA5LCAyLCAyNTEsIDEyMywgMjMsIDI0MSwgNCwgOSwgMiwgMjQ5LCAxNiwgMjMsIDI0MywgMTU3LCAKLSAgICAyMDksIDE0MSwgOSwgMiwgMjQ5LCA0LCAyMywgMjUxLCAxNDksIDksIDIsIDI0OSwgNCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyNDksIDQsIDIzLCAyMDIsIDExNiwgOSwgMiwgMjQ3LCAxOTQsIDExNSwgMjQ3LCAxOTQsIDIzLCAyMjMsIDEwOSwgOSwgMiwgCi0gICAgMjQ0LCAyMTMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjQ0LCAyMDQsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQzLCAxODksIDIzLCAKLSAgICAyMzEsIDg1LCA5LCAyLCAyNDMsIDE4OSwgMjMsIDEwNiwgMTA2LCA2OCwgOSwgMiwgMjQzLCAxODcsIDIzLCAyMDcsIDI5LCAKLSAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjUwLCAyMDAsIDksIDIsIDI0MiwgMzgsIDIzLCAyNTAsIDc1LCA5LCAyLCAyNDIsIDM4LCAKLSAgICAyMywgMjUwLCA3NiwgMjUwLCA1MCwgMjI3LCAyMjIsIDksIDIsIDI0MiwgMzgsIDIzLCAyNDMsIDE3NiwgOSwgMiwgMjQyLCAKLSAgICAzOCwgMjMsIDI0MiwgMzEsIDksIDIsIDI0MiwgMzgsIDIzLCAyNDEsIDIyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM5LCA4LCAKLSAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjM4LCA4MSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzOCwgNjQsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjM4LCA1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDE1MiwgOSwgMiwgMjQyLCAzOCwgMjMsIDIzNywgMywgCi0gICAgOSwgMiwgMjQyLCAzOCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI5LCAyMzEsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgMTc3LCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI4LCAxNzgsIDkxLCAyMjksIDIzMSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyOCwgODIsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjgsIDI4LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCAyOSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI2LCAyMjgsIDkxLCAyMzgsIDU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI1LCA3OSwgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyNCwgMjI4LCA5LCAyLCAyNDIsIDM4LCAyMywgMjI0LCAxNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjIsIDEwMCwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIxOCwgMTY3LCA5LCAyLCAyNDIsIDM4LCAyMywgMjEzLCA0MywgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIxMiwgMTYzLCAyMzcsIDIwOCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjQxLCAxOTEsIDIzLCAKLSAgICAyMTksIDk2LCA5LCAyLCAyNDEsIDIzLCAyMDMsIDE5NiwgOSwgMiwgMjQxLCA1LCAyNDUsIDEyNCwgMjQxLCA0LCA5LCAyLCAKLSAgICAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDI1MCwgNzUsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjM3LCAzLCA5LCAKLSAgICAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIAotICAgIDIyOCwgMTEzLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIyOCwgMzAsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAKLSAgICAyMywgMjI1LCAyMCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMjQsIDIyOCwgOSwgMiwgMjQwLCAxODAsIDIxMywgCi0gICAgMjUsIDIzLCAyMTEsIDEwLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIxMSwgMTAsIDksIDIsIDIzOSwgNywgMjMsIDI0OSwgMywgCi0gICAgOSwgMiwgMjM5LCA3LCAyMywgMjQzLCAxODksIDIzNywgMjA4LCA5LCAyLCAyMzksIDcsIDIzLCAyNDIsIDM4LCAyMywgMjMxLCAKLSAgICA4NiwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgMzgsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgCi0gICAgMjQxLCAyNSwgOSwgMiwgMjM5LCA3LCAyMywgMjM5LCA4LCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIyNSwgOTEsIDI0MywgCi0gICAgMjMzLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIyNSwgOTEsIDIyMiwgMjQwLCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIAotICAgIDE2MCwgOTEsIDYzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjgsIDE3OCwgOTEsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyMjgsIDI4LCA5LCAyLCAyMzksIDcsIDIzLCAyMjgsIDI5LCAyMywgMjI4LCAxODMsIDksIDIsIDIzOSwgNywgMjMsIDIyNiwgCi0gICAgMjI3LCA5LCAyLCAyMzksIDcsIDIzLCAyMjMsIDE5OSwgOSwgMiwgMjM5LCA3LCAyMywgMjIyLCAyNDAsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDIyMiwgMjQxLCA5MSwgMjQxLCAxOTAsIDksIDIsIDIzOSwgNywgMjMsIDIyMiwgMjQxLCA5MSwgMjM4LCA4MSwgCi0gICAgOSwgMiwgMjM5LCA3LCAyMywgMjEzLCAzLCA5LCAyLCAyMzksIDcsIDIzLCAyMDIsIDIyLCA5LCAyLCAyMzksIDIsIDIxNSwgCi0gICAgMTk4LCAyMjIsIDU5LCAyNDQsIDU0LCA5LCAyLCAyMzgsIDE2MywgMjMsIDY4LCA5LCAyLCAyMzgsIDU2LCAyMywgMjM4LCAKLSAgICA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzNywgMjI5LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzNywgCi0gICAgMjIwLCA5MSwgMjM4LCA1NiwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzcsIDE2MCwgMjA5LCAxNDIsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyMzcsIDQsIDIzLCAyNTAsIDc2LCAxMTUsIDIzNywgNCwgMjMsIDI1MCwgNzUsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDcsIAotICAgIDE5MywgOSwgMiwgMjMwLCA0NCwgMjMsIDE3MywgOSwgMiwgMjMwLCA0NCwgMjMsIDEwNiwgMTA2LCA2OCwgOSwgMiwgMjMwLCAKLSAgICA0NCwgMjMsIDIwNiwgMjEwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjAyLCA3LCAxMTUsIDIwMiwgNiwgOSwgMiwgMjI4LCA4MywgCi0gICAgOSwgMiwgMjI4LCA4MSwgOSwgMiwgMjI4LCA4MCwgOSwgMiwgMjI4LCA3OSwgOSwgMiwgMjI4LCA3OCwgOSwgMiwgMjI4LCAKLSAgICA3NywgOSwgMiwgMjI4LCA3NiwgOSwgMiwgMjI4LCA3NSwgMTE1LCAyMjgsIDc1LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA3NCwgCi0gICAgOSwgMiwgMjI4LCA3MywgMTE1LCAyMjgsIDcyLCA5LCAyLCAyMjgsIDcxLCA5LCAyLCAyMjgsIDcwLCA5LCAyLCAyMjgsIDY5LCAKLSAgICA5LCAyLCAyMjgsIDY4LCA5LCAyLCAyMjgsIDY3LCA5LCAyLCAyMjgsIDY2LCA5LCAyLCAyMjgsIDY1LCA5LCAyLCAyMjgsIAotICAgIDY0LCA5LCAyLCAyMjgsIDYzLCA5LCAyLCAyMjgsIDYyLCA5LCAyLCAyMjgsIDYxLCA5LCAyLCAyMjgsIDYwLCA5LCAyLCAKLSAgICAyMjgsIDU5LCA5LCAyLCAyMjgsIDU4LCA5LCAyLCAyMjgsIDU3LCA5LCAyLCAyMjgsIDU2LCA5LCAyLCAyMjgsIDU1LCA5LCAKLSAgICAyLCAyMjgsIDU0LCA5LCAyLCAyMjgsIDUyLCA5LCAyLCAyMjgsIDUzLCAyMywgMjM3LCAyMzAsIDksIDIsIDIyOCwgNTMsIAotICAgIDIzLCAyMzEsIDg1LCA5LCAyLCAyMjgsIDUzLCAyMywgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIDUzLCAyMywgCi0gICAgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAyMjYsIDIzNiwgOSwgMiwgMjI4LCA1MywgMjMsIDIwNywgNDEsIDkxLCAyNDksIAotICAgIDMyLCA5LCAyLCAyMjgsIDUxLCA5LCAyLCAyMjgsIDUwLCA5LCAyLCAyMjgsIDQ5LCA5LCAyLCAyMjgsIDQ4LCA5LCAyLCAKLSAgICAyMjgsIDQ3LCA5LCAyLCAyMjgsIDQ2LCA5LCAyLCAyMjgsIDQ1LCA5LCAyLCAyMjgsIDQ0LCA5LCAyLCAyMjgsIDQzLCA5LCAKLSAgICAyLCAyMjgsIDQyLCA5LCAyLCAyMjgsIDQwLCA5LCAyLCAyMjgsIDQxLCAyMywgMjUwLCA3NSwgOSwgMiwgMjI4LCA0MSwgMjMsIAotICAgIDI0OSwgMTUsIDksIDIsIDIyOCwgNDEsIDIzLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDIyOCwgNDEsIAotICAgIDIzLCAyMjgsIDIwNywgOSwgMiwgMjI4LCA0MSwgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMjgsIDQxLCAyMywgMjA5LCAyMTgsIAotICAgIDksIDIsIDIyOCwgNDEsIDIzLCAyMDksIDE4NywgOSwgMiwgMjI4LCA0MSwgMjMsIDIwNywgNDAsIDksIDIsIDIyOCwgNDEsIAotICAgIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDQxLCAyMywgMjA2LCAxOTcsIDksIDIsIDIyOCwgMzksIDksIDIsIDIyOCwgMzcsIAotICAgIDksIDIsIDIyOCwgMzgsIDIzLCAyNDIsIDQwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjM5LCA4LCA5LCAyLCAyMjgsIDM4LCAyMywgCi0gICAgMjMxLCA4NSwgOSwgMiwgMjI4LCAzOCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDM4LCAyMywgMjIyLCAKLSAgICAxMDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIAotICAgIDM4LCAyMywgMjEzLCAyOCwgOTEsIDIyOSwgMTAwLCA5LCAyLCAyMjgsIDM4LCAyMywgMjA3LCAyOSwgOSwgMiwgMjI4LCAzOCwgCi0gICAgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMjgsIDM1LCA5LCAyLCAyMjgsIDM0LCA5LCAyLCAyMjYsIDIzOCwgMjM3LCAyMDksIDIzLCAKLSAgICAyNTAsIDc1LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MywgMTU2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzNywgMTQwLCA5LCAKLSAgICAyLCAyMjYsIDIzOCwgMjMsIDIxOSwgOTYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTcsIDkxLCAKLSAgICAyMjYsIDIzNiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI0LCAxNTYsIDkxLCAyMDIsIDExNSwgOSwgCi0gICAgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIDIzLCAyMzksIDgsIDksIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAKLSAgICAyMywgMjMwLCAxMiwgOSwgMiwgMjIyLCA2NiwgMjMsIDI0MywgMTg5LCAyMzcsIDIwOCwgOSwgMiwgMjIyLCA2NiwgMjMsIAotICAgIDIzOCwgNTUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMzcsIDIxMiwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMywgOSwgMiwgCi0gICAgMjIyLCA2NiwgMjMsIDIyOSwgMTcxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjI4LCA3OCwgOSwgMiwgMjIyLCA2NiwgMjMsIAotICAgIDIyNSwgNzksIDksIDIsIDIyMiwgNjYsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NiwgOSwgMiwgMjIyLCA2NiwgMjMsIDY4LCAKLSAgICA5LCAyLCAyMjIsIDY2LCAyMywgMTA2LCA5MSwgNjgsIDksIDIsIDIyMiwgNjYsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjE1LCAKLSAgICAyMywgMjM3LCAyMDksIDIzLCAxNTIsIDksIDIsIDIxNSwgMjMsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMTUsIDIzLCAyMywgCi0gICAgMjEzLCA0NCwgMjUwLCA1MCwgMjI3LCAyMjIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjEzLCA4NywgCi0gICAgMjA5LCAxNDEsIDksIDIsIDIxMywgNDQsIDExNSwgMjEzLCA0MywgOSwgMiwgMjEzLCA0NCwgOTEsIDIzNiwgMjEsIDksIDIsIAotICAgIDIxMywgNDQsIDkxLCAyMjMsIDg2LCA5LCAyLCAyMTMsIDQ0LCA5MSwgMjE0LCAyMzAsIDksIDIsIDIxMiwgMTk4LCA5MSwgCi0gICAgMjQyLCAzOCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAyMTIsIDE5OCwgOTEsIDI0MSwgMTkxLCAyMywgMjUwLCAyMzEsIDksIDIsIAotICAgIDIxMiwgMTYzLCAyMywgMjA5LCAyNDIsIDksIDIsIDIwOSwgMjQzLCA5MSwgMjE1LCAyMiwgOSwgMiwgMjA3LCAxOTIsIDIzLCAKLSAgICAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIwNywgMTkyLCAyMywgMTI2LCAyNDMsIDE1NiwgOSwgMiwgMjA2LCAyMDksIAotICAgIDIzMCwgMjM4LCA5LCAyLCAyMDYsIDIwOSwgMjMsIDIwNywgMjksIDksIDIsIDIwNiwgMjAwLCAyMywgMjQ0LCAxNTMsIDksIAotICAgIDIsIDIwNiwgMjAwLCAyMywgMjI4LCAzNiwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMjYsIDIzNiwgOSwgMiwgMjAyLCAxMTUsIAotICAgIDksIDIsIDIwMiwgNywgMTE1LCAyMDIsIDcsIDkxLCAyMTQsIDIzMCwgOSwgMiwgMjAyLCA1LCAyMywgMTI2LCAyNDMsIDE1NywgCi0gICAgMjA5LCAxNDEsIDE0LCA3LCAyNTUsIDE4LCAxNCwgNywgMjU1LCAxNywgMTQsIDcsIDI1NSwgMTYsIDE0LCA3LCAyNTUsIDE1LCAKLSAgICAxNCwgNywgMjU1LCAxNCwgMTQsIDcsIDI1NSwgMTMsIDE0LCA3LCAyNTUsIDEyLCAxNCwgNywgMjU1LCAxMSwgMTQsIDcsIAotICAgIDI1NSwgMTAsIDE0LCA3LCAyNTUsIDksIDE0LCA3LCAyNTUsIDgsIDE0LCA3LCAyNTUsIDcsIDE0LCA3LCAyNTUsIDYsIDE0LCAKLSAgICA3LCAyNTUsIDQsIDE0LCA3LCAyNTUsIDMsIDE0LCA3LCAyNTUsIDIsIDE0LCA3LCAyNTUsIDEsIDE0LCA3LCAyNTUsIDAsIAotICAgIDE0LCA3LCAyNTQsIDI1NSwgMTQsIDcsIDI1NCwgMjU0LCAxNCwgNywgMjU0LCAyNTMsIDE0LCA3LCAyNTQsIDI1MiwgMTQsIAotICAgIDcsIDI1NCwgMjUxLCAxNCwgNywgMjU0LCAyNTAsIDE0LCA3LCAyNTQsIDI0OSwgMTQsIDcsIDI1NCwgMjQ4LCAxNCwgNywgCi0gICAgMjU0LCAyNDcsIDE0LCA3LCAyNTQsIDI0NiwgMTQsIDcsIDI1NCwgMjQ1LCAxNCwgNywgMjU0LCAyNDQsIDE0LCA3LCAyNTQsIAotICAgIDI0MywgMTQsIDcsIDI1NCwgMjQxLCAxNCwgNywgMjU0LCAyNDAsIDE0LCA3LCAyNTQsIDIzOCwgMTQsIDcsIDI1NCwgMjM3LCAKLSAgICAxNCwgNywgMjU0LCAyMzYsIDE0LCA3LCAyNTQsIDIzNSwgMTQsIDcsIDI1NCwgMjM0LCAxNCwgNywgMjU0LCAyMzMsIDE0LCAKLSAgICA3LCAyNTQsIDIzMiwgMTQsIDcsIDI1NCwgMjMxLCAxNCwgNywgMjU0LCAyMzAsIDE0LCA3LCAyNTQsIDIyOSwgMTQsIDcsIAotICAgIDI1NCwgMjI4LCAxNCwgNywgMjU0LCAyMjcsIDE0LCA3LCAyNTQsIDIyNSwgMTQsIDcsIDI1NCwgMjI0LCAxNCwgNywgMjU0LCAKLSAgICAyMjMsIDE0LCA3LCAyNTQsIDIyMSwgMTQsIDcsIDI1NCwgMjIwLCAxNCwgNywgMjU0LCAyMTksIDE0LCA3LCAyNTQsIDIxOCwgCi0gICAgMTQsIDcsIDI1NCwgMjE3LCAxNCwgNywgMjU0LCAyMTYsIDE0LCA3LCAyNTQsIDIxNSwgMTQsIDcsIDI1NCwgMjE0LCAxNCwgCi0gICAgNywgMjU0LCAyMTEsIDE0LCA3LCAyNTQsIDIxMCwgMTQsIDcsIDI1NCwgMjA5LCAxNCwgNywgMjU0LCAyMDgsIDE0LCA3LCAKLSAgICAyNTQsIDIwNywgMTQsIDcsIDI1NCwgMjA2LCAxNCwgNywgMjU0LCAyMDUsIDE0LCA3LCAyNTQsIDIwNCwgMTQsIDcsIDI1NCwgCi0gICAgMjAzLCAxNCwgNywgMjU0LCAyMDIsIDE0LCA3LCAyNTQsIDIwMSwgMTQsIDcsIDI1NCwgMjAwLCAxNCwgNywgMjU0LCAxOTksIAotICAgIDE0LCA3LCAyNTQsIDE5OCwgMTQsIDcsIDI1NCwgMTk3LCAxNCwgNywgMjU0LCAxOTYsIDE0LCA3LCAyNTQsIDE5NSwgMTQsIAotICAgIDcsIDI1NCwgMTk0LCAxNCwgNywgMjU0LCAxOTMsIDE0LCA3LCAyNTQsIDE5MiwgMTQsIDcsIDI1NCwgMTg4LCAxNCwgNywgCi0gICAgMjU0LCAxODcsIDE0LCA3LCAyNTQsIDE4NiwgMTQsIDcsIDI1NCwgMTg1LCAxNCwgNywgMjQ5LCAyNTMsIDE0LCA3LCAyNDksIAotICAgIDI1MSwgMTQsIDcsIDI0OSwgMjQ5LCAxNCwgNywgMjQ5LCAyNDcsIDE0LCA3LCAyNDksIDI0NSwgMTQsIDcsIDI0OSwgMjQ0LCAKLSAgICAxNCwgNywgMjQ5LCAyNDIsIDE0LCA3LCAyNDksIDI0MCwgMTQsIDcsIDI0OSwgMjM4LCAxNCwgNywgMjQ5LCAyMzYsIDE0LCAKLSAgICA3LCAyNDcsIDEyMSwgMTQsIDcsIDI0NywgMTIwLCAxNCwgNywgMjQ3LCAxMTksIDE0LCA3LCAyNDcsIDExOCwgMTQsIDcsIAotICAgIDI0NywgMTE3LCAxNCwgNywgMjQ3LCAxMTYsIDE0LCA3LCAyNDcsIDExNSwgMTQsIDcsIDI0NywgMTE0LCAxNCwgNywgMjQ3LCAKLSAgICAxMTMsIDE0LCA3LCAyNDcsIDExMiwgMTQsIDcsIDI0NywgMTExLCAxNCwgNywgMjQ3LCAxMTAsIDE0LCA3LCAyNDcsIDEwOSwgCi0gICAgMTQsIDcsIDI0NywgMTA4LCAxNCwgNywgMjQ3LCAxMDcsIDE0LCA3LCAyNDcsIDEwNiwgMTQsIDcsIDI0NywgMTA1LCAxNCwgCi0gICAgNywgMjQ3LCAxMDQsIDE0LCA3LCAyNDcsIDEwMywgMTQsIDcsIDI0NywgMTAyLCAxNCwgNywgMjQ3LCAxMDEsIDE0LCA3LCAKLSAgICAyNDcsIDEwMCwgMTQsIDcsIDI0NywgOTksIDE0LCA3LCAyNDcsIDk4LCAxNCwgNywgMjQ3LCA5NywgMTQsIDcsIDI0NywgOTYsIAotICAgIDE0LCA3LCAyNDcsIDk1LCAxNCwgNywgMjQ3LCA5NCwgMTQsIDcsIDI0NSwgNTAsIDE0LCA3LCAyNDUsIDQ5LCAxNCwgNywgCi0gICAgMjQ1LCA0OCwgMTQsIDcsIDI0NSwgNDcsIDE0LCA3LCAyNDUsIDQ2LCAxNCwgNywgMjQ1LCA0NSwgMTQsIDcsIDI0NSwgNDQsIAotICAgIDE0LCA3LCAyNDUsIDQzLCAxNCwgNywgMjQ1LCA0MiwgMTQsIDcsIDI0NSwgNDEsIDE0LCA3LCAyNDUsIDQwLCAxNCwgNywgCi0gICAgMjQ1LCAzOSwgMTQsIDcsIDI0NSwgMzgsIDE0LCA3LCAyNDUsIDM3LCAxNCwgNywgMjQ1LCAzNiwgMTQsIDcsIDI0NSwgMzUsIAotICAgIDE0LCA3LCAyNDUsIDM0LCAxNCwgNywgMjQ1LCAzMywgMTQsIDcsIDI0NSwgMzIsIDE0LCA3LCAyNDUsIDMxLCAxNCwgNywgCi0gICAgMjQ1LCAzMCwgMTQsIDcsIDI0NSwgMjksIDE0LCA3LCAyNDUsIDI4LCAxNCwgNywgMjQ1LCAyNywgMTQsIDcsIDI0NSwgMjYsIAotICAgIDE0LCA3LCAyNDUsIDI1LCAxNCwgNywgMjQ1LCAyNCwgMTQsIDcsIDI0NSwgMjMsIDE0LCA3LCAyNDUsIDIyLCAxNCwgNywgCi0gICAgMjQ1LCAyMSwgMTQsIDcsIDI0NSwgMjAsIDE0LCA3LCAyNDUsIDE5LCAxNCwgNywgMjQ1LCAxOCwgMTQsIDcsIDI0NSwgMTcsIAotICAgIDE0LCA3LCAyNDUsIDE2LCAxNCwgNywgMjQ1LCAxNSwgMTQsIDcsIDI0NSwgMTQsIDE0LCA3LCAyNDUsIDEzLCAxNCwgNywgCi0gICAgMjQ1LCAxMiwgMTQsIDcsIDI0NSwgMTEsIDE0LCA3LCAyNDUsIDEwLCAxNCwgNywgMjQ1LCA5LCAxNCwgNywgMjQ1LCA4LCAKLSAgICAxNCwgNywgMjQ1LCA3LCAxNCwgNywgMjQ1LCA2LCAxNCwgNywgMjQ1LCA1LCAxNCwgNywgMjQ1LCA0LCAxNCwgNywgMjQ1LCAKLSAgICAzLCAxNCwgNywgMjQ1LCAyLCAxNCwgNywgMjQ1LCAxLCAxNCwgNywgMjQ1LCAwLCAxNCwgNywgMjQ0LCAyNTUsIDE0LCA3LCAKLSAgICAyNDQsIDI1NCwgMTQsIDcsIDI0NCwgMjUzLCAxNCwgNywgMjQ0LCAyNTIsIDE0LCA3LCAyNDQsIDI1MSwgMTQsIDcsIDI0NCwgCi0gICAgMjUwLCAxNCwgNywgMjQ0LCAyNDksIDE0LCA3LCAyNDQsIDI0OCwgMTQsIDcsIDI0NCwgMjQ3LCAxNCwgNywgMjQ0LCAyNDYsIAotICAgIDE0LCA3LCAyNDQsIDI0NSwgMTQsIDcsIDI0NCwgMjQ0LCAxNCwgNywgMjQ0LCAyNDMsIDE0LCA3LCAyNDQsIDI0MiwgMTQsIAotICAgIDcsIDI0NCwgMjQxLCAxNCwgNywgMjQ0LCAyNDAsIDE0LCA3LCAyNDQsIDIzOSwgMTQsIDcsIDI0NCwgMjM4LCAxNCwgNywgCi0gICAgMjQ0LCAyMzcsIDE0LCA3LCAyNDQsIDIzNiwgMTQsIDcsIDI0NCwgMjM1LCAxNCwgNywgMjQ0LCAyMzQsIDE0LCA3LCAyNDQsIAotICAgIDIzMywgMTQsIDcsIDI0NCwgMjMyLCAxNCwgNywgMjQ0LCAyMzEsIDE0LCA3LCAyNDQsIDIzMCwgMTQsIDcsIDI0NCwgMjI5LCAKLSAgICAxNCwgNywgMjQ0LCAyMjgsIDE0LCA3LCAyNDQsIDIyNywgMTQsIDcsIDI0NCwgMjI2LCAxNCwgNywgMjQ0LCAyMjUsIDE0LCAKLSAgICA3LCAyNDQsIDIyNCwgMTQsIDcsIDI0NCwgMjIzLCAxNCwgNywgMjQ0LCAyMjIsIDE0LCA3LCAyNDQsIDIyMSwgMTQsIDcsIAotICAgIDI0NCwgMjIwLCAxNCwgNywgMjQ0LCAyMTksIDE0LCA3LCAyNDQsIDIxOCwgMTQsIDcsIDI0NCwgMjE3LCAxNCwgNywgMjQ0LCAKLSAgICAyMTYsIDE0LCA3LCAyNDQsIDIxNSwgMTQsIDcsIDI0MSwgMjM1LCAxNCwgNywgMjQxLCAyMzQsIDE0LCA3LCAyNDEsIDIzMywgCi0gICAgMTQsIDcsIDI0MSwgMjMyLCAxNCwgNywgMjQxLCAyMzEsIDE0LCA3LCAyNDEsIDIzMCwgMTQsIDcsIDI0MSwgMjI5LCAxNCwgCi0gICAgNywgMjQxLCAyMjgsIDE0LCA3LCAyNDEsIDIyNywgMTQsIDcsIDI0MSwgMjI2LCAxNCwgNywgMjQxLCAyMjUsIDE0LCA3LCAKLSAgICAyNDEsIDIyNCwgMTQsIDcsIDI0MSwgMjIzLCAxNCwgNywgMjQxLCAyMjIsIDE0LCA3LCAyNDEsIDIyMSwgMTQsIDcsIDI0MSwgCi0gICAgMjIwLCAxNCwgNywgMjQxLCAyMTksIDE0LCA3LCAyNDEsIDIxOCwgMTQsIDcsIDI0MSwgMjE3LCAxNCwgNywgMjQxLCAyMTYsIAotICAgIDE0LCA3LCAyNDEsIDIxNSwgMTQsIDcsIDI0MSwgMjE0LCAxNCwgNywgMjQxLCAyMTMsIDE0LCA3LCAyNDEsIDIxMiwgMTQsIAotICAgIDcsIDI0MSwgMjExLCAxNCwgNywgMjQxLCAyMTAsIDE0LCA3LCAyNDEsIDIwOSwgMTQsIDcsIDI0MSwgMjA4LCAxNCwgNywgCi0gICAgMjQxLCAyMDcsIDE0LCA3LCAyNDEsIDIwNiwgMTQsIDcsIDI0MSwgMjA1LCAxNCwgNywgMjQxLCAyMDQsIDE0LCA3LCAyNDEsIAotICAgIDIwMywgMTQsIDcsIDI0MSwgMjAyLCAxNCwgNywgMjQxLCAyMDEsIDE0LCA3LCAyNDEsIDIwMCwgMTQsIDcsIDI0MSwgMTk5LCAKLSAgICAxNCwgNywgMjQxLCAxOTgsIDE0LCA3LCAyNDEsIDE5NywgMTQsIDcsIDI0MSwgMTk2LCAxNCwgNywgMjQxLCAxOTUsIDE0LCAKLSAgICA3LCAyNDEsIDE5NCwgMTQsIDcsIDI0MSwgMTkzLCAxNCwgNywgMjQxLCAxOTIsIDE0LCA3LCAyNDAsIDE3MywgMTQsIDcsIAotICAgIDI0MCwgMTcyLCAxNCwgNywgMjQwLCAxNzEsIDE0LCA3LCAyNDAsIDE3MCwgMTQsIDcsIDI0MCwgMTY5LCAxNCwgNywgMjQwLCAKLSAgICAxNjgsIDE0LCA3LCAyNDAsIDE2NywgMTQsIDcsIDI0MCwgMTY2LCAxNCwgNywgMjQwLCAxNjUsIDE0LCA3LCAyNDAsIDE2NCwgCi0gICAgMTQsIDcsIDI0MCwgMTYzLCAxNCwgNywgMjQwLCAxNjIsIDE0LCA3LCAyNDAsIDE2MSwgMTQsIDcsIDI0MCwgMTYwLCAxNCwgCi0gICAgNywgMjQwLCAxNTksIDE0LCA3LCAyNDAsIDE1OCwgMTQsIDcsIDI0MCwgMTU3LCAxNCwgNywgMjQwLCAxNTYsIDE0LCA3LCAKLSAgICAyNDAsIDE1NSwgMTQsIDcsIDI0MCwgMTU0LCAxNCwgNywgMjQwLCAxNTMsIDE0LCA3LCAyNDAsIDE1MiwgMTQsIDcsIDI0MCwgCi0gICAgMTUxLCAxNCwgNywgMjQwLCAxNTAsIDE0LCA3LCAyNDAsIDE0OSwgMTQsIDcsIDI0MCwgMTQ4LCAxNCwgNywgMjQwLCAxNDcsIAotICAgIDE0LCA3LCAyNDAsIDE0NiwgMTQsIDcsIDI0MCwgMTQ1LCAxNCwgNywgMjQwLCAxNDQsIDE0LCA3LCAyNDAsIDE0MywgMTQsIAotICAgIDcsIDI0MCwgMTQyLCAxNCwgNywgMjQwLCAxNDEsIDE0LCA3LCAyNDAsIDE0MCwgMTQsIDcsIDI0MCwgMTM5LCAxNCwgNywgCi0gICAgMjQwLCAxMzgsIDE0LCA3LCAyNDAsIDEzNywgMTQsIDcsIDI0MCwgMTM2LCAxNCwgNywgMjQwLCAxMzUsIDE0LCA3LCAyNDAsIAotICAgIDEzNCwgMTQsIDcsIDI0MCwgMTMzLCAxNCwgNywgMjQwLCAxMzIsIDE0LCA3LCAyNDAsIDEzMSwgMTQsIDcsIDI0MCwgMTMwLCAKLSAgICAxNCwgNywgMjQwLCAxMjksIDE0LCA3LCAyNDAsIDEyOCwgMTQsIDcsIDI0MCwgMTI3LCAxNCwgNywgMjQwLCAxMjYsIDE0LCAKLSAgICA3LCAyNDAsIDEyNSwgMTQsIDcsIDI0MCwgMTI0LCAxNCwgNywgMjQwLCAxMjMsIDE0LCA3LCAyNDAsIDEyMiwgMTQsIDcsIAotICAgIDI0MCwgMTIxLCAxNCwgNywgMjQwLCAxMjAsIDE0LCA3LCAyNDAsIDExOSwgMTQsIDcsIDI0MCwgMTE4LCAxNCwgNywgMjQwLCAKLSAgICAxMTcsIDE0LCA3LCAyNDAsIDExNiwgMTQsIDcsIDI0MCwgMTE1LCAxNCwgNywgMjQwLCAxMTQsIDE0LCA3LCAyNDAsIDExMywgCi0gICAgMTQsIDcsIDI0MCwgMTEyLCAxNCwgNywgMjQwLCAxMTEsIDE0LCA3LCAyNDAsIDExMCwgMTQsIDcsIDI0MCwgMTA5LCAxNCwgCi0gICAgNywgMjM5LCA3NCwgMTQsIDcsIDIzOSwgNzMsIDE0LCA3LCAyMzksIDcyLCAxNCwgNywgMjM5LCA3MSwgMTQsIDcsIDIzOSwgCi0gICAgNzAsIDE0LCA3LCAyMzksIDY5LCAxNCwgNywgMjM5LCA2OCwgMTQsIDcsIDIzOSwgNjcsIDE0LCA3LCAyMzksIDY2LCAxNCwgCi0gICAgNywgMjM5LCA2NSwgMTQsIDcsIDIzOSwgNjQsIDE0LCA3LCAyMzksIDYzLCAxNCwgNywgMjM5LCA2MiwgMTQsIDcsIDIzOSwgCi0gICAgNjEsIDE0LCA3LCAyMzksIDYwLCAxNCwgNywgMjM5LCA1OSwgMTQsIDcsIDIzOSwgNTgsIDE0LCA3LCAyMzksIDU3LCAxNCwgCi0gICAgNywgMjM5LCA1NiwgMTQsIDcsIDIzOSwgNTUsIDE0LCA3LCAyMzksIDU0LCAxNCwgNywgMjM5LCA1MywgMTQsIDcsIDIzOSwgCi0gICAgNTIsIDE0LCA3LCAyMzksIDUxLCAxNCwgNywgMjM5LCA1MCwgMTQsIDcsIDIzOSwgNDksIDE0LCA3LCAyMzksIDQ4LCAxNCwgCi0gICAgNywgMjM5LCA0NywgMTQsIDcsIDIzOSwgNDYsIDE0LCA3LCAyMzksIDQ1LCAxNCwgNywgMjM5LCA0NCwgMTQsIDcsIDIzOSwgCi0gICAgNDMsIDE0LCA3LCAyMzksIDQyLCAxNCwgNywgMjM5LCA0MSwgMTQsIDcsIDIzOSwgNDAsIDE0LCA3LCAyMzksIDM5LCAxNCwgCi0gICAgNywgMjM5LCAzOCwgMTQsIDcsIDIzOSwgMzcsIDE0LCA3LCAyMzksIDM2LCAxNCwgNywgMjM5LCAzNSwgMTQsIDcsIDIzOSwgCi0gICAgMzQsIDE0LCA3LCAyMzksIDMzLCAxNCwgNywgMjM5LCAzMiwgMTQsIDcsIDIzOSwgMzEsIDE0LCA3LCAyMzksIDMwLCAxNCwgCi0gICAgNywgMjM5LCAyOSwgMTQsIDcsIDIzOSwgMjgsIDE0LCA3LCAyMzksIDI3LCAxNCwgNywgMjM5LCAyNiwgMTQsIDcsIDIzOSwgCi0gICAgMjUsIDE0LCA3LCAyMzksIDI0LCAxNCwgNywgMjM5LCAyMywgMTQsIDcsIDIzOSwgMjIsIDE0LCA3LCAyMzksIDIxLCAxNCwgCi0gICAgNywgMjM5LCAyMCwgMTQsIDcsIDIzOSwgMTksIDE0LCA3LCAyMzksIDE4LCAxNCwgNywgMjM5LCAxNywgMTQsIDcsIDIzOSwgCi0gICAgMTYsIDE0LCA3LCAyMzksIDE1LCAxNCwgNywgMjM5LCAxNCwgMTQsIDcsIDIzOSwgMTMsIDE0LCA3LCAyMzksIDEyLCAxNCwgCi0gICAgNywgMjM5LCAxMSwgMTQsIDcsIDIzNywgMTY5LCAxNCwgNywgMjM3LCAxNjgsIDE0LCA3LCAyMzcsIDE2NywgMTQsIDcsIAotICAgIDIzNywgMTY2LCAxNCwgNywgMjM3LCAxNjUsIDE0LCA3LCAyMzcsIDE2NCwgMTQsIDcsIDIzNywgMTYzLCAxNCwgNywgMjM3LCAKLSAgICAxNjIsIDE0LCA3LCAyMzcsIDE2MSwgMTQsIDcsIDIzNSwgMTkwLCAxNCwgNywgMjM1LCAxODksIDE0LCA3LCAyMzUsIDE4OCwgCi0gICAgMTQsIDcsIDIzNSwgMTg3LCAxNCwgNywgMjM1LCAxODYsIDE0LCA3LCAyMzUsIDE4NSwgMTQsIDcsIDIzNSwgMTg0LCAxNCwgCi0gICAgNywgMjM1LCAxODMsIDE0LCA3LCAyMzUsIDE4MiwgMTQsIDcsIDIzNSwgMTgxLCAxNCwgNywgMjM1LCAxODAsIDE0LCA3LCAKLSAgICAyMzUsIDE3OSwgMTQsIDcsIDIzNSwgMTc4LCAxNCwgNywgMjM1LCAxNzcsIDE0LCA3LCAyMzUsIDE3NiwgMTQsIDcsIDIzNSwgCi0gICAgMTc1LCAxNCwgNywgMjM1LCAxNzQsIDE0LCA3LCAyMzUsIDE3MywgMTQsIDcsIDIzNSwgMTcyLCAxNCwgNywgMjMwLCA1MywgCi0gICAgMTQsIDcsIDIzMCwgNTIsIDE0LCA3LCAyMzAsIDUxLCAxNCwgNywgMjMwLCA1MCwgMTQsIDcsIDIzMCwgNDksIDE0LCA3LCAKLSAgICAyMzAsIDQ4LCAxNCwgNywgMjMwLCA0NywgMTQsIDcsIDIzMCwgNDYsIDE0LCA3LCAyMjgsIDEyOCwgMTQsIDcsIDIyOCwgCi0gICAgMTI3LCAxNCwgNywgMjI4LCAxMjYsIDE0LCA3LCAyMjgsIDEyNSwgMTQsIDcsIDIyOCwgMTI0LCAxNCwgNywgMjI4LCAxMjMsIAotICAgIDE0LCA3LCAyMjgsIDEyMiwgMTQsIDcsIDIyOCwgMTIxLCAxNCwgNywgMjI4LCAxMjAsIDE0LCA3LCAyMjgsIDExOSwgMTQsIAotICAgIDcsIDIyNiwgMTgzLCAxNCwgNywgMjI2LCAxODIsIDE0LCA3LCAyMjYsIDE4MSwgMTQsIDcsIDIyNiwgMTc5LCAxNCwgNywgCi0gICAgMjI2LCAxNzcsIDE0LCA3LCAyMjYsIDE3NiwgMTQsIDcsIDIyNiwgMTc0LCAxNCwgNywgMjI2LCAxNzIsIDE0LCA3LCAyMjYsIAotICAgIDE3MCwgMTQsIDcsIDIyNiwgMTY4LCAxNCwgNywgMjI2LCAxNjYsIDE0LCA3LCAyMjYsIDE2NCwgMTQsIDcsIDIyNiwgMTYyLCAKLSAgICAxNCwgNywgMjI2LCAxNjEsIDE0LCA3LCAyMjYsIDE1OSwgMTQsIDcsIDIyNiwgMTU3LCAxNCwgNywgMjI2LCAxNTYsIDE0LCAKLSAgICA3LCAyMjYsIDE1NSwgMTQsIDcsIDIyNiwgMTU0LCAxNCwgNywgMjI2LCAxNTMsIDE0LCA3LCAyMjYsIDE1MiwgMTQsIDcsIAotICAgIDIyNiwgMTUxLCAxNCwgNywgMjI2LCAxNTAsIDE0LCA3LCAyMjYsIDE0OSwgMTQsIDcsIDIyNiwgMTQ3LCAxNCwgNywgMjI2LCAKLSAgICAxNDUsIDE0LCA3LCAyMjYsIDE0MywgMTQsIDcsIDIyNiwgMTQyLCAxNCwgNywgMjI2LCAxNDAsIDE0LCA3LCAyMjYsIDEzOSwgCi0gICAgMTQsIDcsIDIyNiwgMTM3LCAxNCwgNywgMjI2LCAxMzYsIDE0LCA3LCAyMjYsIDEzNCwgMTQsIDcsIDIyNiwgMTMyLCAxNCwgCi0gICAgNywgMjI2LCAxMzAsIDE0LCA3LCAyMjYsIDEyOCwgMTQsIDcsIDIyNiwgMTI2LCAxNCwgNywgMjI2LCAxMjUsIDE0LCA3LCAKLSAgICAyMjYsIDEyMywgMTQsIDcsIDIyNiwgMTIxLCAxNCwgNywgMjI2LCAxMjAsIDE0LCA3LCAyMjYsIDExOCwgMTQsIDcsIDIyNiwgCi0gICAgMTE2LCAxNCwgNywgMjI2LCAxMTQsIDE0LCA3LCAyMjYsIDExMiwgMTQsIDcsIDIyNiwgMTExLCAxNCwgNywgMjI2LCAxMDksIAotICAgIDE0LCA3LCAyMjYsIDEwNywgMTQsIDcsIDIyNiwgMTA1LCAxNCwgNywgMjI2LCAxMDQsIDE0LCA3LCAyMjYsIDEwMiwgMTQsIAotICAgIDcsIDIyNiwgMTAwLCAxNCwgNywgMjI2LCA5OSwgMTQsIDcsIDIyNiwgOTgsIDE0LCA3LCAyMjYsIDk2LCAxNCwgNywgMjI2LCAKLSAgICA5NCwgMTQsIDcsIDIyNiwgOTIsIDE0LCA3LCAyMjYsIDkwLCAxNCwgNywgMjI2LCA4OCwgMTQsIDcsIDIyNiwgODYsIDE0LCAKLSAgICA3LCAyMjYsIDg0LCAxNCwgNywgMjI2LCA4MywgMTQsIDcsIDIyNiwgODEsIDE0LCA3LCAyMjYsIDc5LCAxNCwgNywgMjI2LCAKLSAgICA3NywgMTQsIDcsIDIyNiwgNzUsIDE0LCA3LCAyMjMsIDE2MCwgMTQsIDcsIDIyMywgMTU5LCAxNCwgNywgMjIzLCAxNTgsIAotICAgIDE0LCA3LCAyMjMsIDE1NywgMTQsIDcsIDIyMywgMTU2LCAxNCwgNywgMjIzLCAxNTUsIDE0LCA3LCAyMjMsIDE1NCwgMTQsIAotICAgIDcsIDIyMywgMTUzLCAxNCwgNywgMjIzLCAxNTIsIDE0LCA3LCAyMjMsIDE1MSwgMTQsIDcsIDIyMywgMTUwLCAxNCwgNywgCi0gICAgMjIzLCAxNDksIDE0LCA3LCAyMjMsIDE0OCwgMTQsIDcsIDIyMywgMTQ3LCAxNCwgNywgMjIzLCAxNDYsIDE0LCA3LCAyMjMsIAotICAgIDE0NSwgMTQsIDcsIDIyMywgMTQ0LCAxNCwgNywgMjIzLCAxNDMsIDE0LCA3LCAyMjMsIDE0MiwgMTQsIDcsIDIyMywgMTQxLCAKLSAgICAxNCwgNywgMjIzLCAxNDAsIDE0LCA3LCAyMjMsIDEzOSwgMTQsIDcsIDIyMywgMTM4LCAxNCwgNywgMjIzLCAxMzcsIDE0LCAKLSAgICA3LCAyMjMsIDEzNiwgMTQsIDcsIDIyMywgMTM1LCAxNCwgNywgMjIzLCAxMzQsIDE0LCA3LCAyMjMsIDEzMywgMTQsIDcsIAotICAgIDIyMywgMTMyLCAxNCwgNywgMjIzLCAxMzEsIDE0LCA3LCAyMjMsIDEzMCwgMTQsIDcsIDIyMywgMTI5LCAxNCwgNywgMjIzLCAKLSAgICAxMjgsIDE0LCA3LCAyMjMsIDEyNywgMTQsIDcsIDIyMywgMTI2LCAxNCwgNywgMjIzLCAxMjUsIDE0LCA3LCAyMjMsIDEyNCwgCi0gICAgMTQsIDcsIDIyMywgMTIzLCAxNCwgNywgMjIzLCAxMjIsIDE0LCA3LCAyMjMsIDEyMSwgMTQsIDcsIDIyMywgMTIwLCAxNCwgCi0gICAgNywgMjIzLCAxMTksIDE0LCA3LCAyMjMsIDExOCwgMTQsIDcsIDIyMywgMTE3LCAxNCwgNywgMjIzLCAxMTYsIDE0LCA3LCAKLSAgICAyMjMsIDExNSwgMTQsIDcsIDIyMywgMTE0LCAxNCwgNywgMjIzLCAxMTMsIDE0LCA3LCAyMjMsIDExMiwgMTQsIDcsIDIyMSwgCi0gICAgMjUyLCAxNCwgNywgMjIxLCAyNTEsIDE0LCA3LCAyMjEsIDI1MCwgMTQsIDcsIDIyMSwgMjQ5LCAxNCwgNywgMjIxLCAyNDgsIAotICAgIDE0LCA3LCAyMjEsIDI0NywgMTQsIDcsIDIyMSwgMjQ2LCAxNCwgNywgMjIxLCAyNDUsIDE0LCA3LCAyMjEsIDI0NCwgMTQsIAotICAgIDcsIDIyMSwgMjQzLCAxNCwgNywgMjIxLCAyNDIsIDE0LCA3LCAyMjEsIDI0MSwgMTQsIDcsIDIyMSwgMjQwLCAxNCwgNywgCi0gICAgMjIxLCAyMzksIDE0LCA3LCAyMjEsIDIzOCwgMTQsIDcsIDIyMSwgMjM3LCAxNCwgNywgMjIxLCAyMzYsIDE0LCA3LCAyMjEsIAotICAgIDIzNSwgMTQsIDcsIDIyMSwgMjM0LCAxNCwgNywgMjIxLCAyMzMsIDE0LCA3LCAyMjEsIDIzMiwgMTQsIDcsIDIyMSwgMjMxLCAKLSAgICAxNCwgNywgMjIxLCA4MywgMTQsIDcsIDIyMSwgODIsIDE0LCA3LCAyMjEsIDgxLCAxNCwgNywgMjIxLCA4MCwgMTQsIDcsIAotICAgIDIyMSwgNzksIDE0LCA3LCAyMjEsIDc4LCAxNCwgNywgMjIxLCA3NywgMTQsIDcsIDIyMSwgNzYsIDE0LCA3LCAyMjEsIDc1LCAKLSAgICAxNCwgNywgMjIxLCA3NCwgMTQsIDcsIDIyMSwgNzMsIDE0LCA3LCAyMjEsIDcyLCAxNCwgNywgMjIxLCA3MSwgMTQsIDcsIAotICAgIDIyMSwgNzAsIDE0LCA3LCAyMjEsIDY5LCAxNCwgNywgMjIxLCA2OCwgMTQsIDcsIDIyMSwgNjcsIDE0LCA3LCAyMjEsIDY2LCAKLSAgICAxNCwgNywgMjIxLCA2NSwgMTQsIDcsIDIyMSwgNjQsIDE0LCA3LCAyMjEsIDYzLCAxNCwgNywgMjIxLCA2MiwgMTQsIDcsIAotICAgIDIyMSwgNjEsIDE0LCA3LCAyMjEsIDYwLCAxNCwgNywgMjIxLCA1OSwgMTQsIDcsIDIyMSwgNTgsIDE0LCA3LCAyMjAsIDE3MywgCi0gICAgMTQsIDcsIDIyMCwgMTcyLCAxNCwgNywgMjIwLCAxNzEsIDE0LCA3LCAyMjAsIDE3MCwgMTQsIDcsIDIyMCwgMTY5LCAxNCwgCi0gICAgNywgMjIwLCAxNjgsIDE0LCA3LCAyMjAsIDE2NywgMTQsIDcsIDIyMCwgMTY2LCAxNCwgNywgMjIwLCAxNjUsIDE0LCA3LCAKLSAgICAyMjAsIDE2NCwgMTQsIDcsIDIyMCwgMTYzLCAxNCwgNywgMjIwLCAxNjIsIDE0LCA3LCAyMjAsIDE2MSwgMTQsIDcsIDIyMCwgCi0gICAgMTYwLCAxNCwgNywgMjIwLCAxNTksIDE0LCA3LCAyMjAsIDE1OCwgMTQsIDcsIDIyMCwgMTU3LCAxNCwgNywgMjIwLCAxNTYsIAotICAgIDE0LCA3LCAyMjAsIDE1NSwgMTQsIDcsIDIyMCwgMTU0LCAxNCwgNywgMjIwLCAxNTMsIDE0LCA3LCAyMjAsIDE1MiwgMTQsIAotICAgIDcsIDIyMCwgMTUxLCAxNCwgNywgMjIwLCAxNTAsIDE0LCA3LCAyMjAsIDE0OSwgMTQsIDcsIDIyMCwgMTQ4LCAxNCwgNywgCi0gICAgMjIwLCAxNDcsIDE0LCA3LCAyMjAsIDE0NiwgMTQsIDcsIDIyMCwgMTQ1LCAxNCwgNywgMjIwLCAxNDQsIDE0LCA3LCAyMjAsIAotICAgIDE0MywgMTQsIDcsIDIyMCwgMTQyLCAxNCwgNywgMjIwLCAxNDEsIDE0LCA3LCAyMjAsIDE0MCwgMTQsIDcsIDIyMCwgMTM5LCAKLSAgICAxNCwgNywgMjIwLCAxMzgsIDE0LCA3LCAyMjAsIDEzNywgMTQsIDcsIDIyMCwgMTM2LCAxNCwgNywgMjIwLCAxMzUsIDE0LCAKLSAgICA3LCAyMjAsIDEzNCwgMTQsIDcsIDIyMCwgMTMzLCAxNCwgNywgMjIwLCAxMzIsIDE0LCA3LCAyMjAsIDEzMSwgMTQsIDcsIAotICAgIDIyMCwgMTMwLCAxNCwgNywgMjIwLCAxMjksIDE0LCA3LCAyMjAsIDEyOCwgMTQsIDcsIDIyMCwgMTI3LCAxNCwgNywgMjIwLCAKLSAgICAxMjYsIDE0LCA3LCAyMjAsIDEyNSwgMTQsIDcsIDIyMCwgMTI0LCAxNCwgNywgMjIwLCAxMjMsIDE0LCA3LCAyMjAsIDEyMiwgCi0gICAgMTQsIDcsIDIyMCwgMTIxLCAxNCwgNywgMjIwLCAxMjAsIDE0LCA3LCAyMjAsIDExOSwgMTQsIDcsIDIyMCwgMTE4LCAxNCwgCi0gICAgNywgMjIwLCAxMTcsIDE0LCA3LCAyMjAsIDExNiwgMTQsIDcsIDIyMCwgMTE1LCAxNCwgNywgMjIwLCAxMTQsIDE0LCA3LCAKLSAgICAyMjAsIDExMywgMTQsIDcsIDIyMCwgMTEyLCAxNCwgNywgMjIwLCAxMTEsIDE0LCA3LCAyMjAsIDExMCwgMTQsIDcsIDIyMCwgCi0gICAgMTA5LCAxNCwgNywgMjIwLCAxMDgsIDE0LCA3LCAyMjAsIDEwNywgMTQsIDcsIDIyMCwgMTA2LCAxNCwgNywgMjIwLCAxMDUsIAotICAgIDE0LCA3LCAyMjAsIDEwNCwgMTQsIDcsIDIyMCwgMTAzLCAxNCwgNywgMjIwLCAxMDIsIDE0LCA3LCAyMjAsIDEwMSwgMTQsIAotICAgIDcsIDIyMCwgMTAwLCAxNCwgNywgMjIwLCA5OSwgMTQsIDcsIDIxOSwgMTgzLCAxNCwgNywgMjE5LCAxODIsIDE0LCA3LCAKLSAgICAyMTksIDE4MSwgMTQsIDcsIDIxOSwgMTgwLCAxNCwgNywgMjE5LCAxNzksIDE0LCA3LCAyMTksIDE3OCwgMTQsIDcsIDIxOSwgCi0gICAgMTc3LCAxNCwgNywgMjE5LCAxNzYsIDE0LCA3LCAyMTksIDE3NSwgMTQsIDcsIDIxOSwgMTc0LCAxNCwgNywgMjE5LCAxNzMsIAotICAgIDE0LCA3LCAyMTksIDE3MiwgMTQsIDcsIDIxOSwgMTcxLCAxNCwgNywgMjE3LCAxMzMsIDE0LCA3LCAyMTcsIDEzMiwgMTQsIAotICAgIDcsIDIxNywgMTMxLCAxNCwgNywgMjE3LCAxMzAsIDE0LCA3LCAyMTcsIDEyOSwgMTQsIDcsIDIxNywgMTI4LCAxNCwgNywgCi0gICAgMjE3LCAxMjcsIDE0LCA3LCAyMTYsIDI1NSwgMTQsIDcsIDIxNiwgMjU0LCAxNCwgNywgMjE2LCAyNTMsIDE0LCA3LCAyMTYsIAotICAgIDI1MiwgMTQsIDcsIDIxNiwgMjUxLCAxNCwgNywgMjE2LCAyNTAsIDE0LCA3LCAyMTYsIDI0OSwgMTQsIDcsIDIxNiwgMjQ4LCAKLSAgICAxNCwgNywgMjE2LCAyNDcsIDE0LCA3LCAyMTYsIDI0NiwgMTQsIDcsIDIxNiwgMjQ1LCAxNCwgNywgMjE2LCAyNDQsIDE0LCAKLSAgICA3LCAyMTYsIDI0MywgMTQsIDcsIDIxNiwgMjQyLCAxNCwgNywgMjE2LCAyNDEsIDE0LCA3LCAyMTYsIDI0MCwgMTQsIDcsIAotICAgIDIxNiwgMjM5LCAxNCwgNywgMjE2LCAyMzgsIDE0LCA3LCAyMTYsIDIzNywgMTQsIDcsIDIxNiwgMjM2LCAxNCwgNywgMjE2LCAKLSAgICAyMzUsIDE0LCA3LCAyMTYsIDIzNCwgMTQsIDcsIDIxNiwgMjMzLCAxNCwgNywgMjE2LCAyMzIsIDE0LCA3LCAyMTYsIDIzMSwgCi0gICAgMTQsIDcsIDIxNiwgMjMwLCAxNCwgNywgMjE2LCAyMjksIDE0LCA3LCAyMTYsIDIyOCwgMTQsIDcsIDIxNiwgMjI3LCAxNCwgCi0gICAgNywgMjE2LCAyMjYsIDE0LCA3LCAyMTYsIDIyNSwgMTQsIDcsIDIxNiwgMjI0LCAxNCwgNywgMjE2LCAyMjMsIDE0LCA3LCAKLSAgICAyMTYsIDIyMiwgMTQsIDcsIDIxNSwgOTEsIDE0LCA3LCAyMTUsIDkwLCAxNCwgNywgMjE1LCA4OSwgMTQsIDcsIDIxNSwgODgsIAotICAgIDE0LCA3LCAyMTUsIDg3LCAxNCwgNywgMjE1LCA4NiwgMTQsIDcsIDIxNSwgODUsIDE0LCA3LCAyMTUsIDg0LCAxNCwgNywgCi0gICAgMjE1LCA4MywgMTQsIDcsIDIxNSwgODIsIDE0LCA3LCAyMTUsIDgxLCAxNCwgNywgMjE1LCA4MCwgMTQsIDcsIDIxNSwgNzksIAotICAgIDE0LCA3LCAyMTUsIDc4LCAxNCwgNywgMjE1LCA3NywgMTQsIDcsIDIxNSwgNzYsIDE0LCA3LCAyMTUsIDc1LCAxNCwgNywgCi0gICAgMjE1LCA3NCwgMTQsIDcsIDIxNSwgNzMsIDE0LCA3LCAyMTUsIDcyLCAxNCwgNywgMjE1LCA3MSwgMTQsIDcsIDIxNSwgNzAsIAotICAgIDE0LCA3LCAyMTUsIDY5LCAxNCwgNywgMjE1LCA2OCwgMTQsIDcsIDIxNSwgNjcsIDE0LCA3LCAyMTUsIDY2LCAxNCwgNywgCi0gICAgMjE1LCA2NSwgMTQsIDcsIDIxNSwgNjQsIDE0LCA3LCAyMTUsIDYzLCAxNCwgNywgMjE1LCA2MiwgMTQsIDcsIDIxNSwgNjEsIAotICAgIDE0LCA3LCAyMTUsIDYwLCAxNCwgNywgMjE1LCA1OSwgMTQsIDcsIDIxNSwgNTgsIDE0LCA3LCAyMTUsIDU3LCAxNCwgNywgCi0gICAgMjE1LCA1NiwgMTQsIDcsIDIxNSwgNTUsIDE0LCA3LCAyMTUsIDU0LCAxNCwgNywgMjE1LCA1MywgMTQsIDcsIDIxNSwgNTIsIAotICAgIDE0LCA3LCAyMTUsIDUxLCAxNCwgNywgMjE1LCA1MCwgMTQsIDcsIDIxNSwgNDksIDE0LCA3LCAyMTUsIDQ4LCAxNCwgNywgCi0gICAgMjE1LCA0NywgMTQsIDcsIDIxNSwgNDYsIDE0LCA3LCAyMTUsIDQ1LCAxNCwgNywgMjE1LCA0NCwgMTQsIDcsIDIxNSwgNDMsIAotICAgIDE0LCA3LCAyMTUsIDQyLCAxNCwgNywgMjE1LCA0MSwgMTQsIDcsIDIxNSwgNDAsIDE0LCA3LCAyMTUsIDM5LCAxNCwgNywgCi0gICAgMjE1LCAzOCwgMTQsIDcsIDIxMCwgNjcsIDE0LCA3LCAyMTAsIDY2LCAxNCwgNywgMjEwLCA2NSwgMTQsIDcsIDIxMCwgNjQsIAotICAgIDE0LCA3LCAyMTAsIDYzLCAxNCwgNywgMjEwLCA2MiwgMTQsIDcsIDIxMCwgNjEsIDE0LCA3LCAyMTAsIDYwLCAxNCwgNywgCi0gICAgMjEwLCA1OSwgMTQsIDcsIDIxMCwgNTgsIDE0LCA3LCAyMTAsIDU3LCAxNCwgNywgMjEwLCA1NiwgMTQsIDcsIDIxMCwgNTUsIAotICAgIDE0LCA3LCAyMTAsIDU0LCAxNCwgNywgMjEwLCA1MywgMTQsIDcsIDIxMCwgNTIsIDE0LCA3LCAyMTAsIDUxLCAxNCwgNywgCi0gICAgMjEwLCA1MCwgMTQsIDcsIDIxMCwgNDksIDE0LCA3LCAyMTAsIDQ4LCAxNCwgNywgMjEwLCA0NywgMTQsIDcsIDIxMCwgNDYsIAotICAgIDE0LCA3LCAyMTAsIDQ1LCAxNCwgNywgMjEwLCA0NCwgMTQsIDcsIDIxMCwgNDMsIDE0LCA3LCAyMTAsIDQyLCAxNCwgNywgCi0gICAgMjEwLCA0MSwgMTQsIDcsIDIxMCwgNDAsIDE0LCA3LCAyMTAsIDM5LCAxNCwgNywgMjEwLCAzOCwgMTQsIDcsIDIxMCwgMzcsIAotICAgIDE0LCA3LCAyMTAsIDM2LCAxNCwgNywgMjEwLCAzNSwgMTQsIDcsIDIxMCwgMzQsIDE0LCA3LCAyMTAsIDMzLCAxNCwgNywgCi0gICAgMjEwLCAzMiwgMTQsIDcsIDIxMCwgMzEsIDE0LCA3LCAyMTAsIDMwLCAxNCwgNywgMjEwLCAyOSwgMTQsIDcsIDIxMCwgMjgsIAotICAgIDE0LCA3LCAyMTAsIDI3LCAxNCwgNywgMjEwLCAyNiwgMTQsIDcsIDIxMCwgMjUsIDE0LCA3LCAyMTAsIDI0LCAxNCwgNywgCi0gICAgMjA3LCA4OCwgMTQsIDcsIDIwNywgODcsIDE0LCA3LCAyMDcsIDg2LCAxNCwgNywgMjA3LCA4NSwgMTQsIDcsIDIwNywgODQsIAotICAgIDE0LCA3LCAyMDcsIDgzLCAxNCwgNywgMjA3LCA4MiwgMTQsIDcsIDIwNywgODEsIDE0LCA3LCAyMDcsIDgwLCAxNCwgNywgCi0gICAgMjA3LCA3OSwgMTQsIDcsIDIwNywgNzgsIDE0LCA3LCAyMDcsIDc3LCAxNCwgNywgMjA3LCA3NiwgMTQsIDcsIDIwNywgNzUsIAotICAgIDE0LCA3LCAyMDcsIDc0LCAxNCwgNywgMjA3LCA3MywgMTQsIDcsIDIwNywgNzIsIDE0LCA3LCAyMDcsIDcxLCAxNCwgNywgCi0gICAgMjA3LCA3MCwgMTQsIDcsIDIwNywgNjksIDE0LCA3LCAyMDcsIDY4LCAxNCwgNywgMjA3LCA2NywgMTQsIDcsIDIwNywgNjYsIAotICAgIDE0LCA3LCAyMDcsIDY1LCAxNCwgNywgMjA3LCA2NCwgMTQsIDcsIDIwNywgNjMsIDE0LCA3LCAyMDcsIDYyLCAxNCwgNywgCi0gICAgMjA3LCA2MSwgMTQsIDcsIDIwNywgNjAsIDE0LCA3LCAyMDcsIDU5LCAxNCwgNywgMjA3LCA1OCwgMTQsIDcsIDIwNywgNTcsIAotICAgIDE0LCA3LCAyMDcsIDU2LCAxNCwgNywgMjA3LCA1NSwgMTQsIDcsIDIwNywgNTQsIDE0LCA3LCAyMDcsIDUzLCAxNCwgNywgCi0gICAgMjA3LCA1MiwgMTQsIDcsIDIwNywgNTEsIDE0LCA3LCAyMDcsIDUwLCAxNCwgNywgMjA3LCA0OSwgMTQsIDcsIDIwNywgNDgsIAotICAgIDE0LCA3LCAyMDcsIDQ3LCAxNCwgNywgMjA3LCA0NiwgMTQsIDcsIDIwNywgNDUsIDE0LCA3LCAyMDcsIDQ0LCAxNCwgNywgCi0gICAgMjA3LCA0MywgMTQsIDcsIDIwNywgNDIsIDE0LCA3LCAyMDYsIDE2MywgMTQsIDcsIDIwNiwgMTYyLCAxNCwgNywgMjA2LCAKLSAgICAxNjEsIDE0LCA3LCAyMDYsIDE2MCwgMTQsIDcsIDIwNiwgMTU5LCAxNCwgNywgMjA2LCAxNTgsIDE0LCA3LCAyMDYsIDE1NywgCi0gICAgMTQsIDcsIDIwNiwgMTU2LCAxNCwgNywgMjA2LCAxNTUsIDE0LCA3LCAyMDYsIDE1NCwgMTQsIDcsIDIwNiwgMTUzLCAxNCwgCi0gICAgNywgMjA2LCAxNTIsIDE0LCA3LCAyMDYsIDE1MSwgMTQsIDcsIDIwNiwgMTUwLCAxNCwgNywgMjA2LCAxNDksIDE0LCA3LCAKLSAgICAyMDYsIDE0OCwgMTQsIDcsIDIwNiwgMTQ3LCAxNCwgNywgMjA2LCAxNDYsIDE0LCA3LCAyMDYsIDE0NSwgMTQsIDcsIDIwNiwgCi0gICAgMTQ0LCAxNCwgNywgMjA2LCAxNDMsIDE0LCA3LCAyMDYsIDE0MiwgMTQsIDcsIDIwNiwgMTQxLCAxNCwgNywgMjA2LCAxNDAsIAotICAgIDE0LCA3LCAyMDYsIDEzOSwgMTQsIDcsIDIwNiwgMTM4LCAxNCwgNywgMjA2LCAxMzcsIDE0LCA3LCAyMDYsIDEzNiwgMTQsIAotICAgIDcsIDIwNiwgMTM1LCAxNCwgNywgMjA2LCAxMzQsIDE0LCA3LCAyMDYsIDEzMywgMTQsIDcsIDIwNiwgMTMyLCAxNCwgNywgCi0gICAgMjA2LCAxMzEsIDE0LCA3LCAyMDYsIDEzMCwgMTQsIDcsIDIwNiwgMTI5LCAxNCwgNywgMjA2LCAxMjgsIDE0LCA3LCAyMDYsIAotICAgIDEyNywgMTQsIDcsIDIwNiwgMTI2LCAxNCwgNywgMjA2LCAxMjUsIDE0LCA3LCAyMDYsIDEyNCwgMTQsIDcsIDIwNiwgMTIzLCAKLSAgICAxNCwgNywgMjA2LCAxMjIsIDE0LCA3LCAyMDYsIDEyMSwgMTQsIDcsIDIwNiwgMTIwLCAxNCwgNywgMjA2LCAxMTksIDE0LCAKLSAgICA3LCAyMDYsIDExOCwgMTQsIDcsIDIwNiwgMTE3LCAxNCwgNywgMjA2LCAxMTYsIDE0LCA3LCAyMDYsIDExNSwgMTQsIDcsIAotICAgIDIwNiwgMTE0LCAxNCwgNywgMjA2LCAxMTMsIDE0LCA3LCAyMDYsIDExMiwgMTQsIDcsIDIwNiwgMTExLCAxNCwgNywgMjA2LCAKLSAgICAxMTAsIDE0LCA3LCAyMDYsIDEwOSwgMTQsIDcsIDIwNiwgMTA4LCAxNCwgNywgMjA2LCAxMDcsIDE0LCA3LCAyMDYsIDEwNiwgCi0gICAgMTQsIDcsIDIwNiwgMTA1LCAxNCwgNywgMjA2LCAxMDQsIDE0LCA3LCAyMDYsIDEwMywgMTQsIDcsIDIwNiwgMTAyLCAxNCwgCi0gICAgNywgMjA2LCAxMDEsIDE0LCA3LCAyMDYsIDEwMCwgMTQsIDcsIDIwNiwgOTksIDE0LCA3LCAyMDYsIDk4LCAxNCwgNywgMjA2LCAKLSAgICA5NywgMTQsIDcsIDIwNiwgOTYsIDE0LCA3LCAyMDYsIDk1LCAxNCwgNywgMjA2LCA5NCwgMTQsIDcsIDIwNiwgOTMsIDE0LCAKLSAgICA3LCAyMDYsIDkyLCAxNCwgNywgMjA2LCA5MSwgMTQsIDcsIDIwNiwgOTAsIDE0LCA3LCAyMDYsIDg5LCAxNCwgNywgMjA2LCAKLSAgICA4OCwgMTQsIDcsIDIwNiwgODcsIDE0LCA3LCAyMDQsIDE0MywgMTQsIDcsIDIwNCwgMTQyLCAxNCwgNywgMjA0LCAxNDEsIAotICAgIDE0LCA3LCAyMDQsIDE0MCwgMTQsIDcsIDIwNCwgMTM5LCAxNCwgNywgMjA0LCAxMzgsIDE0LCA3LCAyMDQsIDEzNywgMTQsIAotICAgIDcsIDIwNCwgMTM2LCAxNCwgNywgMjA0LCAxMzUsIDE0LCA3LCAyMDQsIDEzNCwgMTQsIDcsIDIwNCwgMTMzLCAxNCwgNywgCi0gICAgMjA0LCAxMzIsIDE0LCA3LCAyMDQsIDEzMSwgMTQsIDcsIDIwNCwgMTMwLCAxNCwgNywgMjA0LCAxMjksIDE0LCA3LCAyMDQsIAotICAgIDEyOCwgMTQsIDcsIDIwNCwgMTI3LCAxNCwgNywgMjA0LCAxMjYsIDE0LCA3LCAyMDQsIDEyNSwgMTQsIDcsIDIwNCwgMTI0LCAKLSAgICAxNCwgNywgMjA0LCAxMjMsIDE0LCA3LCAyMDQsIDEyMiwgMTQsIDcsIDIwNCwgMTIxLCAxNCwgNywgMjA0LCAxMjAsIDE0LCAKLSAgICA3LCAyMDQsIDExOSwgMTQsIDcsIDIwNCwgMTE4LCAxNCwgNywgMjA0LCAxMTcsIDE0LCA3LCAyMDQsIDExNiwgMTQsIDcsIAotICAgIDIwNCwgMTE1LCAxNCwgNywgMjA0LCAxMTQsIDE0LCA3LCAyMDQsIDExMywgMTQsIDcsIDIwNCwgMTEyLCAxNCwgNywgMjAzLCAKLSAgICAxOTQsIDE0LCA3LCAyMDMsIDE5MywgMTQsIDcsIDIwMywgMTkyLCAxNCwgNywgMjAzLCAxOTEsIDE0LCA3LCAyMDMsIDE5MCwgCi0gICAgMTQsIDcsIDIwMywgMTg5LCAxNCwgNywgMjAzLCAxODgsIDE0LCA3LCAyMDMsIDE4NywgMTQsIDcsIDIwMywgMTg2LCAxNCwgCi0gICAgNywgMjAzLCAxODUsIDE0LCA3LCAyMDMsIDE4NCwgMTQsIDcsIDIwMywgMTgzLCAxNCwgNywgMjAzLCAxMjIsIDE0LCA3LCAKLSAgICAyMDMsIDEyMSwgMTQsIDcsIDIwMywgMTIwLCAxNCwgNywgMjAzLCAxMTksIDE0LCA3LCAyMDMsIDExOCwgMTQsIDcsIDIwMywgCi0gICAgMTE3LCAxNCwgNywgMjAzLCAxMTYsIDE0LCA3LCAyMDMsIDExNSwgMTQsIDcsIDIwMywgMTE0LCAxNCwgNywgMjAyLCAxNTgsIAotICAgIDE0LCA3LCAyMDIsIDE1NywgMTQsIDcsIDIwMiwgMTU2LCAxNCwgNywgMjAyLCAxNTUsIDE0LCA3LCAyMDIsIDE1NCwgMTQsIAotICAgIDcsIDIwMiwgMTUzLCAxNCwgNywgMjAyLCAxNTIsIDE0LCA3LCAyMDIsIDE1MSwgMTQsIDcsIDIwMiwgMTUwLCAxNCwgNywgCi0gICAgMjAyLCAxNDksIDE0LCA3LCAyMDIsIDE0OCwgMTQsIDcsIDIwMiwgMTQ3LCAxNCwgNywgMjAyLCAxNDYsIDE0LCA3LCAyMDIsIAotICAgIDE0NSwgMTQsIDcsIDIwMiwgMTQ0LCAxNCwgNywgMjAyLCAxNDMsIDE0LCA3LCAyMDIsIDE0MiwgMTQsIDcsIDIwMiwgMTQxLCAKLSAgICAxNCwgNywgMjAyLCAxNDAsIDE0LCA3LCAyMDIsIDEzOSwgMTQsIDcsIDIwMiwgMTM4LCAxNCwgNywgMjAyLCAxMzcsIDE0LCAKLSAgICA3LCAyMDIsIDEzNiwgMTQsIDcsIDIwMiwgMTM1LCAxNCwgNywgMjAyLCAxMzQsIDE0LCA3LCAyMDIsIDEzMywgMTQsIDcsIAotICAgIDIwMiwgMTMyLCAxNCwgNywgMjAyLCAxMzEsIDE0LCA3LCAyMDIsIDEzMCwgMTQsIDcsIDIwMiwgMTI5LCAxNCwgNywgMjAyLCAKLSAgICAxMjgsIDE0LCA3LCAyMDIsIDEyNywgMTQsIDcsIDIwMiwgMTI2LCAxNCwgNywgMjAyLCAxMjUsIDE0LCA3LCAyMDIsIDEyNCwgCi0gICAgMTQsIDcsIDIwMiwgMTIzLCAxNCwgNywgMjAyLCAxMjIsIDE0LCA3LCAyMDIsIDEyMSwgMTQsIDcsIDIwMiwgMTIwLCAxNCwgCi0gICAgNywgMjAyLCAxMTksIDE0LCA3LCAyMDIsIDExOCwgMTQsIDcsIDI1MiwgMjQsIDE0LCA3LCAyNTIsIDIzLCAxNCwgNywgMjUyLCAKLSAgICAyMiwgMTQsIDcsIDI1MiwgMjEsIDE0LCA3LCAyNTIsIDIwLCAxNCwgNywgMjUyLCAxOSwgMTQsIDcsIDI1MiwgMTgsIDE0LCAKLSAgICA3LCAyNTIsIDE3LCAxNCwgNywgMjUyLCAxNiwgMTQsIDcsIDI1MiwgMTUsIDE0LCA3LCAyNTIsIDE0LCAxNCwgNywgMjUyLCAKLSAgICAxMywgMTQsIDcsIDI1MiwgMTIsIDE0LCA3LCAyNTIsIDExLCAxNCwgNywgMjUyLCAxMCwgMTQsIDcsIDI1MiwgOSwgMTQsIDcsIAotICAgIDI1MiwgOCwgMTQsIDcsIDI1MiwgNywgMTQsIDcsIDI1MiwgNiwgMTQsIDcsIDI1MiwgNSwgMTQsIDcsIDI1MiwgNCwgMTQsIAotICAgIDcsIDI1MiwgMywgMTQsIDcsIDI1MiwgMiwgMTQsIDcsIDI1MiwgMSwgMTQsIDcsIDI1MiwgMCwgMTQsIDcsIDI1MSwgMjU1LCAKLSAgICAxNCwgNywgMjUxLCAyNTQsIDE0LCA3LCAyNTEsIDI1MywgMTQsIDcsIDI1MSwgMjUyLCAxNCwgNywgMjUxLCAyNTEsIDE0LCAKLSAgICA3LCAyNTEsIDI1MCwgMTQsIDcsIDI1MSwgMjQ5LCAxNCwgNywgMjUxLCAyNDgsIDE0LCA3LCAyNTEsIDI0NywgMjcsIDcsIAotICAgIDI1NSwgMTgsIDI3LCA3LCAyNTUsIDE3LCAyNywgNywgMjU1LCAxNiwgMjcsIDcsIDI1NSwgMTUsIDI3LCA3LCAyNTUsIDE0LCAKLSAgICAyNywgNywgMjU1LCAxMiwgMjcsIDcsIDI1NSwgOSwgMjcsIDcsIDI1NSwgOCwgMjcsIDcsIDI1NSwgNywgMjcsIDcsIDI1NSwgCi0gICAgNiwgMjcsIDcsIDI1NSwgNSwgMjcsIDcsIDI1NSwgNCwgMjcsIDcsIDI1NSwgMywgMjcsIDcsIDI1NSwgMiwgMjcsIDcsIAotICAgIDI1NSwgMSwgMjcsIDcsIDI1NCwgMjU1LCAyNywgNywgMjU0LCAyNTQsIDI3LCA3LCAyNTQsIDI1MywgMjcsIDcsIDI1NCwgCi0gICAgMjUxLCAyNywgNywgMjU0LCAyNTAsIDI3LCA3LCAyNTQsIDI0OSwgMjcsIDcsIDI1NCwgMjQ4LCAyNywgNywgMjU0LCAyNDcsIAotICAgIDI3LCA3LCAyNTQsIDI0NiwgMjcsIDcsIDI1NCwgMjQ1LCAyNywgNywgMjU0LCAyNDQsIDI3LCA3LCAyNTQsIDI0MywgMjcsIAotICAgIDcsIDI1NCwgMjQyLCAyNywgNywgMjU0LCAyNDEsIDI3LCA3LCAyNTQsIDI0MCwgMjcsIDcsIDI1NCwgMjM4LCAyNywgNywgCi0gICAgMjU0LCAyMzcsIDI3LCA3LCAyNTQsIDIzNiwgMjcsIDcsIDI1NCwgMjM1LCAyNywgNywgMjU0LCAyMzMsIDI3LCA3LCAyNTQsIAotICAgIDIzMiwgMjcsIDcsIDI1NCwgMjMxLCAyNywgNywgMjU0LCAyMzAsIDI3LCA3LCAyNTQsIDIyOSwgMjcsIDcsIDI1NCwgMjI4LCAKLSAgICAyNywgNywgMjU0LCAyMjcsIDI3LCA3LCAyNTQsIDIyNiwgMjcsIDcsIDI1NCwgMjI1LCAyNywgNywgMjU0LCAyMjMsIDI3LCAKLSAgICA3LCAyNTQsIDIyMiwgMjcsIDcsIDI1NCwgMjIxLCAyNywgNywgMjU0LCAyMTksIDI3LCA3LCAyNTQsIDIxNywgMjcsIDcsIAotICAgIDI1NCwgMjE2LCAyNywgNywgMjU0LCAyMTUsIDI3LCA3LCAyNTQsIDIxNCwgMjcsIDcsIDI1NCwgMjEzLCAyNywgNywgMjU0LCAKLSAgICAyMTIsIDI3LCA3LCAyNTQsIDIxMSwgMjcsIDcsIDI1NCwgMjEwLCAyNywgNywgMjU0LCAyMDksIDI3LCA3LCAyNTQsIDIwOCwgCi0gICAgMjcsIDcsIDI1NCwgMjA3LCAyNywgNywgMjU0LCAyMDYsIDI3LCA3LCAyNTQsIDIwNSwgMjcsIDcsIDI1NCwgMjA0LCAyNywgCi0gICAgNywgMjU0LCAyMDMsIDI3LCA3LCAyNTQsIDIwMiwgMjcsIDcsIDI1NCwgMjAxLCAyNywgNywgMjU0LCAyMDAsIDI3LCA3LCAKLSAgICAyNTQsIDE5OSwgMjcsIDcsIDI1NCwgMTk4LCAyNywgNywgMjU0LCAxOTcsIDI3LCA3LCAyNTQsIDE5NiwgMjcsIDcsIDI1NCwgCi0gICAgMTk1LCAyNywgNywgMjU0LCAxOTQsIDI3LCA3LCAyNTQsIDE5MywgMjcsIDcsIDI1NCwgMTkyLCAyNywgNywgMjU0LCAxOTEsIAotICAgIDI3LCA3LCAyNTQsIDE5MCwgMjcsIDcsIDI1NCwgMTg5LCAyNywgNywgMjU0LCAxODgsIDI3LCA3LCAyNTQsIDE4NywgMjcsIAotICAgIDcsIDI1NCwgMTg2LCAyNywgNywgMjU0LCAxODUsIDI3LCA3LCAyNTQsIDE4NCwgMjcsIDcsIDI1NCwgMTgzLCAyNywgNywgCi0gICAgMjU0LCAxODIsIDI3LCA3LCAyNTQsIDE4MSwgMjcsIDcsIDI1NCwgMTgwLCAyNywgNywgMjU0LCAxNzksIDI3LCA3LCAyNTQsIAotICAgIDE3OCwgMjcsIDcsIDI1NCwgMTc3LCAyNywgNywgMjU0LCAxNzYsIDI3LCA3LCAyNTQsIDE3NSwgMjcsIDcsIDI1NCwgMTc0LCAKLSAgICAyNywgNywgMjU0LCAxNzMsIDI3LCA3LCAyNTQsIDE3MiwgMjcsIDcsIDI1NCwgMTcxLCAyNywgNywgMjU0LCAxNzAsIDI3LCAKLSAgICA3LCAyNTQsIDE2OSwgMjcsIDcsIDI1NCwgMTY4LCAyNywgNywgMjU0LCAxNjcsIDI3LCA3LCAyNTQsIDE2NiwgMjcsIDcsIAotICAgIDI1NCwgMTY1LCAyNywgNywgMjU0LCAxNjQsIDI3LCA3LCAyNTQsIDE2MywgMjcsIDcsIDI1NCwgMTYyLCAyNywgNywgMjU0LCAKLSAgICAxNjEsIDI3LCA3LCAyNTQsIDE2MCwgMjcsIDcsIDI1NCwgMTU5LCAyNywgNywgMjU0LCAxNTgsIDI3LCA3LCAyNTQsIDE1NywgCi0gICAgMjcsIDcsIDI1NCwgMTU2LCAyNywgNywgMjU0LCAxNTUsIDI3LCA3LCAyNTQsIDE1NCwgMjcsIDcsIDI1NCwgMTUzLCAyNywgCi0gICAgNywgMjU0LCAxNTEsIDI3LCA3LCAyNTQsIDE1MCwgMjcsIDcsIDI1NCwgMTQ5LCAyNywgNywgMjU0LCAxNDgsIDI3LCA3LCAKLSAgICAyNTQsIDE0NywgMjcsIDcsIDI1NCwgMTQ2LCAyNywgNywgMjU0LCAxNDUsIDI3LCA3LCAyNTQsIDE0NCwgMjcsIDcsIDI1NCwgCi0gICAgMTQzLCAyNywgNywgMjU0LCAxNDIsIDI3LCA3LCAyNTQsIDE0MSwgMjcsIDcsIDI1NCwgMTQwLCAyNywgNywgMjU0LCAxMzksIAotICAgIDI3LCA3LCAyNTQsIDEzOCwgMjcsIDcsIDI1NCwgMTM3LCAyNywgNywgMjU0LCAxMzYsIDI3LCA3LCAyNTQsIDEzNSwgMjcsIAotICAgIDcsIDI1NCwgMTM0LCAyNywgNywgMjU0LCAxMzMsIDI3LCA3LCAyNTQsIDEzMiwgMjcsIDcsIDI1NCwgMTMxLCAyNywgNywgCi0gICAgMjU0LCAxMzAsIDI3LCA3LCAyNTQsIDEyOSwgMjcsIDcsIDI1NCwgMTI4LCAyNywgNywgMjU0LCAxMjcsIDI3LCA3LCAyNTQsIAotICAgIDEyNiwgMjcsIDcsIDI1NCwgMTI1LCAyNywgNywgMjU0LCAxMjQsIDI3LCA3LCAyNTQsIDEyMywgMjcsIDcsIDI1NCwgMTIyLCAKLSAgICAyNywgNywgMjU0LCAxMjEsIDI3LCA3LCAyNTQsIDEyMCwgMjcsIDcsIDI1NCwgMTE5LCAyNywgNywgMjU0LCAxMTgsIDI3LCAKLSAgICA3LCAyNTQsIDExNiwgMjcsIDcsIDI1NCwgMTE1LCAyNywgNywgMjU0LCAxMTQsIDI3LCA3LCAyNTQsIDExMywgMjcsIDcsIAotICAgIDI1NCwgMTEyLCAyNywgNywgMjU0LCAxMTEsIDI3LCA3LCAyNTQsIDExMCwgMjcsIDcsIDI1NCwgMTA5LCAyNywgNywgMjU0LCAKLSAgICAxMDgsIDI3LCA3LCAyNTQsIDEwNywgMjcsIDcsIDI1NCwgMTA2LCAyNywgNywgMjU0LCAxMDUsIDI3LCA3LCAyNTQsIDEwMywgCi0gICAgMjcsIDcsIDI1NCwgMTAyLCAyNywgNywgMjU0LCAxMDEsIDI3LCA3LCAyNTQsIDEwMCwgMjcsIDcsIDI1NCwgOTksIDI3LCA3LCAKLSAgICAyNTQsIDk4LCAyNywgNywgMjU0LCA5NywgMjcsIDcsIDI1NCwgOTYsIDI3LCA3LCAyNTQsIDk1LCAyNywgNywgMjU0LCA5NCwgCi0gICAgMjcsIDcsIDI1NCwgOTMsIDI3LCA3LCAyNTQsIDkyLCAyNywgNywgMjU0LCA5MSwgMjcsIDcsIDI1NCwgOTAsIDI3LCA3LCAKLSAgICAyNTQsIDg5LCAyNywgNywgMjU0LCA4OCwgMjcsIDcsIDI1NCwgODcsIDI3LCA3LCAyNTQsIDg2LCAyNywgNywgMjU0LCA4NSwgCi0gICAgMjcsIDcsIDI1NCwgODQsIDI3LCA3LCAyNTQsIDgzLCAyNywgNywgMjU0LCA4MiwgMjcsIDcsIDI1NCwgODEsIDI3LCA3LCAKLSAgICAyNTQsIDgwLCAyNywgNywgMjU0LCA3OSwgMjcsIDcsIDI1NCwgNzgsIDI3LCA3LCAyNTQsIDc3LCAyNywgNywgMjU0LCA3NiwgCi0gICAgMjcsIDcsIDI1NCwgNzUsIDI3LCA3LCAyNTQsIDc0LCAyNywgNywgMjU0LCA3MywgMjcsIDcsIDI1NCwgNzIsIDI3LCA3LCAKLSAgICAyNTQsIDcxLCAyNywgNywgMjU0LCA3MCwgMjcsIDcsIDI1NCwgNjksIDI3LCA3LCAyNTQsIDY4LCAyNywgNywgMjU0LCA2NywgCi0gICAgMjcsIDcsIDI1NCwgNjYsIDI3LCA3LCAyNTQsIDY1LCAyNywgNywgMjU0LCA2NCwgMjcsIDcsIDI1NCwgNjMsIDI3LCA3LCAKLSAgICAyNTQsIDYyLCAyNywgNywgMjU0LCA2MSwgMjcsIDcsIDI1NCwgNjAsIDI3LCA3LCAyNTQsIDU5LCAyNywgNywgMjU0LCA1OCwgCi0gICAgMjcsIDcsIDI1NCwgNTcsIDI3LCA3LCAyNTQsIDU2LCAyNywgNywgMjU0LCA1NSwgMjcsIDcsIDI1NCwgNTQsIDI3LCA3LCAKLSAgICAyNTQsIDUzLCAyNywgNywgMjU0LCA1MiwgMjcsIDcsIDI1NCwgNTEsIDI3LCA3LCAyNTQsIDUwLCAyNywgNywgMjU0LCA0OSwgCi0gICAgMjcsIDcsIDI1NCwgNDgsIDI3LCA3LCAyNTQsIDQ3LCAyNywgNywgMjU0LCA0NiwgMjcsIDcsIDI1NCwgNDUsIDI3LCA3LCAKLSAgICAyNTQsIDQ0LCAyNywgNywgMjU0LCA0MywgMjcsIDcsIDI1NCwgNDIsIDI3LCA3LCAyNTQsIDQxLCAyNywgNywgMjU0LCA0MCwgCi0gICAgMjcsIDcsIDI1NCwgMzksIDI3LCA3LCAyNTQsIDM4LCAyNywgNywgMjU0LCAzNywgMjcsIDcsIDI1NCwgMzYsIDI3LCA3LCAKLSAgICAyNTQsIDM1LCAyNywgNywgMjU0LCAzMywgMjcsIDcsIDI1NCwgMzIsIDI3LCA3LCAyNTQsIDMxLCAyNywgNywgMjU0LCAzMCwgCi0gICAgMjcsIDcsIDI1NCwgMjksIDI3LCA3LCAyNTQsIDI4LCAyNywgNywgMjU0LCAyNywgMjcsIDcsIDI1NCwgMjYsIDI3LCA3LCAKLSAgICAyNTQsIDI1LCAyNywgNywgMjU0LCAyNCwgMjcsIDcsIDI1NCwgMjMsIDI3LCA3LCAyNTQsIDIyLCAyNywgNywgMjU0LCAyMSwgCi0gICAgMjcsIDcsIDI1NCwgMjAsIDI3LCA3LCAyNTQsIDE5LCAyNywgNywgMjU0LCAxOCwgMjcsIDcsIDI1NCwgMTcsIDI3LCA3LCAKLSAgICAyNTQsIDE2LCAyNywgNywgMjU0LCAxNSwgMjcsIDcsIDI1NCwgMTQsIDI3LCA3LCAyNTQsIDEzLCAyNywgNywgMjU0LCAxMiwgCi0gICAgMjcsIDcsIDI1NCwgMTEsIDI3LCA3LCAyNTQsIDEwLCAyNywgNywgMjU0LCA5LCAyNywgNywgMjU0LCA4LCAyNywgNywgMjU0LCAKLSAgICA3LCAyNywgNywgMjU0LCA2LCAyNywgNywgMjU0LCA1LCAyNywgNywgMjU0LCA0LCAyNywgNywgMjU0LCAzLCAyNywgNywgCi0gICAgMjU0LCAyLCAyNywgNywgMjU0LCAxLCAyNywgNywgMjU0LCAwLCAyNywgNywgMjUzLCAyNTUsIDI3LCA3LCAyNTMsIDI1NCwgCi0gICAgMjcsIDcsIDI1MywgMjUzLCAyNywgNywgMjUzLCAyNTIsIDI3LCA3LCAyNTMsIDI1MSwgMjcsIDcsIDI1MywgMjUwLCAyNywgCi0gICAgNywgMjUzLCAyNDksIDI3LCA3LCAyNTMsIDI0OCwgMjcsIDcsIDI1MywgMjQ3LCAyNywgNywgMjUzLCAyNDYsIDI3LCA3LCAKLSAgICAyNTMsIDI0NSwgMjcsIDcsIDI1MywgMjQ0LCAyNywgNywgMjUzLCAyNDMsIDI3LCA3LCAyNTMsIDI0MiwgMjcsIDcsIDI1MywgCi0gICAgMjQxLCAyNywgNywgMjUzLCAyNDAsIDI3LCA3LCAyNTMsIDIzOSwgMjcsIDcsIDI1MywgMjM4LCAyNywgNywgMjUzLCAyMzcsIAotICAgIDI3LCA3LCAyNTMsIDIzNiwgMjcsIDcsIDI1MywgMjM1LCAyNywgNywgMjUzLCAyMzQsIDI3LCA3LCAyNTMsIDIzMywgMjcsIAotICAgIDcsIDI1MywgMjMyLCAyNywgNywgMjUzLCAyMzEsIDI3LCA3LCAyNTMsIDIzMCwgMjcsIDcsIDI1MywgMjI5LCAyNywgNywgCi0gICAgMjUzLCAyMjgsIDI3LCA3LCAyNTMsIDIyNywgMjcsIDcsIDI1MywgMjI2LCAyNywgNywgMjUzLCAyMjUsIDI3LCA3LCAyNTMsIAotICAgIDIyNCwgMjcsIDcsIDI1MywgMjIzLCAyNywgNywgMjUzLCAyMjIsIDI3LCA3LCAyNTMsIDIyMSwgMjcsIDcsIDI1MywgMjIwLCAKLSAgICAyNywgNywgMjUzLCAyMTksIDI3LCA3LCAyNTMsIDIxOCwgMjcsIDcsIDI1MywgMjE3LCAyNywgNywgMjUzLCAyMTYsIDI3LCAKLSAgICA3LCAyNTMsIDIxNSwgMjcsIDcsIDI1MywgMjE0LCAyNywgNywgMjUzLCAyMTMsIDI3LCA3LCAyNTMsIDIxMiwgMjcsIDcsIAotICAgIDI1MywgMjExLCAyNywgNywgMjUzLCAyMTAsIDI3LCA3LCAyNTMsIDIwOSwgMjcsIDcsIDI1MywgMjA4LCAyNywgNywgMjUzLCAKLSAgICAyMDcsIDI3LCA3LCAyNTMsIDIwNiwgMjcsIDcsIDI1MywgMjA1LCAyNywgNywgMjUzLCAyMDQsIDI3LCA3LCAyNTMsIDIwMywgCi0gICAgMjcsIDcsIDI1MywgMjAyLCAyNywgNywgMjUzLCAyMDEsIDI3LCA3LCAyNTMsIDIwMCwgMjcsIDcsIDI1MywgMTk5LCAyNywgCi0gICAgNywgMjUzLCAxOTgsIDI3LCA3LCAyNTMsIDE5NywgMjcsIDcsIDI1MywgMTk2LCAyNywgNywgMjUzLCAxOTUsIDI3LCA3LCAKLSAgICAyNTMsIDE5NCwgMjcsIDcsIDI1MywgMTkzLCAyNywgNywgMjUzLCAxOTIsIDI3LCA3LCAyNTMsIDE5MSwgMjcsIDcsIDI1MywgCi0gICAgMTkwLCAyNywgNywgMjUzLCAxODksIDI3LCA3LCAyNTMsIDE4OCwgMjcsIDcsIDI1MywgMTg3LCAyNywgNywgMjUzLCAxODYsIAotICAgIDI3LCA3LCAyNTMsIDE4NSwgMjcsIDcsIDI1MywgMTg0LCAyNywgNywgMjUzLCAxODMsIDI3LCA3LCAyNTMsIDE4MiwgMjcsIAotICAgIDcsIDI1MywgMTgxLCAyNywgNywgMjUzLCAxODAsIDI3LCA3LCAyNTMsIDE3OSwgMjcsIDcsIDI1MywgMTc3LCAyNywgNywgCi0gICAgMjUzLCAxNzYsIDI3LCA3LCAyNTMsIDE3NSwgMjcsIDcsIDI1MywgMTc0LCAyNywgNywgMjUzLCAxNzMsIDI3LCA3LCAyNTMsIAotICAgIDE3MiwgMjcsIDcsIDI1MywgMTcxLCAyNywgNywgMjUzLCAxNzAsIDI3LCA3LCAyNTMsIDE2OSwgMjcsIDcsIDI1MywgMTY4LCAKLSAgICAyNywgNywgMjUzLCAxNjcsIDI3LCA3LCAyNTMsIDE2NCwgMjcsIDcsIDI1MywgMTYzLCAyNywgNywgMjUzLCAxNjIsIDI3LCAKLSAgICA3LCAyNTMsIDE2MSwgMjcsIDcsIDI1MywgMTU3LCAyNywgNywgMjUzLCAxNTYsIDI3LCA3LCAyNTMsIDE1NSwgMjcsIDcsIAotICAgIDI1MywgMTU0LCAyNywgNywgMjUzLCAxNTMsIDI3LCA3LCAyNTMsIDE1MiwgMjcsIDcsIDI1MywgMTUxLCAyNywgNywgMjUzLCAKLSAgICAxNTAsIDI3LCA3LCAyNTMsIDE0OSwgMjcsIDcsIDI1MywgMTQ4LCAyNywgNywgMjUzLCAxNDcsIDI3LCA3LCAyNTMsIDE0NiwgCi0gICAgMjcsIDcsIDI1MywgMTQ1LCAyNywgNywgMjUzLCAxNDQsIDI3LCA3LCAyNTMsIDE0MywgMjcsIDcsIDI1MywgMTQyLCAyNywgCi0gICAgNywgMjUzLCAxNDEsIDI3LCA3LCAyNTMsIDE0MCwgMjcsIDcsIDI1MywgMTM5LCAyNywgNywgMjUzLCAxMzcsIDI3LCA3LCAKLSAgICAyNTMsIDEzNiwgMjcsIDcsIDI1MywgMTM1LCAyNywgNywgMjUzLCAxMzQsIDI3LCA3LCAyNTMsIDEzMywgMjcsIDcsIDI1MywgCi0gICAgMTMyLCAyNywgNywgMjUzLCAxMzEsIDI3LCA3LCAyNTMsIDEzMCwgMjcsIDcsIDI1MywgMTI5LCAyNywgNywgMjUzLCAxMjgsIAotICAgIDI3LCA3LCAyNTMsIDEyNywgMjcsIDcsIDI1MywgMTI2LCAyNywgNywgMjUzLCAxMjUsIDI3LCA3LCAyNTMsIDEyNCwgMjcsIAotICAgIDcsIDI1MywgMTIzLCAyNywgNywgMjUzLCAxMjIsIDI3LCA3LCAyNTMsIDEyMSwgMjcsIDcsIDI1MywgMTIwLCAyNywgNywgCi0gICAgMjUzLCAxMTksIDI3LCA3LCAyNTMsIDExOCwgMjcsIDcsIDI1MywgMTE3LCAyNywgNywgMjUzLCAxMTYsIDI3LCA3LCAyNTMsIAotICAgIDExNSwgMjcsIDcsIDI1MywgMTE0LCAyNywgNywgMjUzLCAxMTMsIDI3LCA3LCAyNTMsIDExMiwgMjcsIDcsIDI1MywgMTExLCAKLSAgICAyNywgNywgMjUzLCAxMTAsIDI3LCA3LCAyNTMsIDEwOSwgMjcsIDcsIDI1MywgMTA4LCAyNywgNywgMjUzLCAxMDcsIDI3LCAKLSAgICA3LCAyNTMsIDEwNiwgMjcsIDcsIDI1MywgMTA1LCAyNywgNywgMjUzLCAxMDQsIDI3LCA3LCAyNTMsIDEwMywgMjcsIDcsIAotICAgIDI1MywgMTAyLCAyNywgNywgMjUzLCAxMDEsIDI3LCA3LCAyNTMsIDEwMCwgMjcsIDcsIDI1MywgOTksIDI3LCA3LCAyNTMsIAotICAgIDk4LCAyNywgNywgMjUzLCA5NywgMjcsIDcsIDI1MywgOTYsIDI3LCA3LCAyNTMsIDk1LCAyNywgNywgMjUzLCA5NCwgMjcsIAotICAgIDcsIDI1MywgOTMsIDI3LCA3LCAyNTMsIDkyLCAyNywgNywgMjUzLCA5MSwgMjcsIDcsIDI1MywgOTAsIDI3LCA3LCAyNTMsIAotICAgIDg5LCAyNywgNywgMjUzLCA4OCwgMjcsIDcsIDI1MywgODcsIDI3LCA3LCAyNTMsIDg2LCAyNywgNywgMjUzLCA4NSwgMjcsIAotICAgIDcsIDI1MywgODQsIDI3LCA3LCAyNTMsIDgzLCAyNywgNywgMjUzLCA4MiwgMjcsIDcsIDI1MywgODEsIDI3LCA3LCAyNTMsIAotICAgIDgwLCAyNywgNywgMjUzLCA3OSwgMjcsIDcsIDI1MywgNzgsIDI3LCA3LCAyNTMsIDc3LCAyNywgNywgMjUzLCA3NiwgMjE2LCAKLSAgICAyMjEsIDIxOSwgMjQ1LCAyMTYsIDU3LCAyNywgNywgMjUzLCA3NSwgMjcsIDcsIDI1MywgNzQsIDI3LCA3LCAyNTMsIDczLCAKLSAgICAyNywgNywgMjUzLCA3MiwgMjcsIDcsIDI1MywgNzEsIDI3LCA3LCAyNTMsIDcwLCAyNywgNywgMjUzLCA2OSwgMjcsIDcsIAotICAgIDI1MywgNjgsIDI3LCA3LCAyNTMsIDY3LCAyNywgNywgMjUzLCA2NiwgMjcsIDcsIDI1MywgNjUsIDI3LCA3LCAyNTMsIDY0LCAKLSAgICAxOTksIDI3LCA3LCAyNTMsIDYzLCAyNywgNywgMjUzLCA2MiwgMjcsIDcsIDI1MywgNjEsIDI3LCA3LCAyNTMsIDYwLCAyNywgCi0gICAgNywgMjUzLCA1OSwgMjcsIDcsIDI1MywgNTgsIDI3LCA3LCAyNTMsIDU3LCAyNywgNywgMjUzLCA1NSwgMjcsIDcsIDI1MywgCi0gICAgNTMsIDI3LCA3LCAyNTMsIDUxLCAyNywgNywgMjUzLCA0OSwgMjcsIDcsIDI1MywgNDcsIDI3LCA3LCAyNTMsIDQ1LCAyNywgCi0gICAgNywgMjUzLCA0MywgMjcsIDcsIDI1MywgNDEsIDI3LCA3LCAyNTMsIDM5LCAyNywgNywgMjUzLCAzNywgMjQ4LCAxNDIsIAotICAgIDIyNywgMzYsIDgyLCAyNywgNywgMjUzLCAzNSwgMjQxLCA4NCwgMjI3LCAzNiwgODIsIDI3LCA3LCAyNTMsIDM0LCAyNywgNywgCi0gICAgMjUzLCAzMiwgMjcsIDcsIDI1MywgMzAsIDI3LCA3LCAyNTMsIDI4LCAyNywgNywgMjUzLCAyNiwgMjcsIDcsIDI1MywgMjQsIAotICAgIDI3LCA3LCAyNTMsIDIyLCAyNywgNywgMjUzLCAyMCwgMjcsIDcsIDI1MywgMTgsIDI3LCA3LCAyNTMsIDE3LCAyNywgNywgCi0gICAgMjUzLCAxNiwgMjcsIDcsIDI1MywgMTUsIDI3LCA3LCAyNTMsIDE0LCAyNywgNywgMjUzLCAxMywgMjcsIDcsIDI1MywgMTIsIAotICAgIDI3LCA3LCAyNTMsIDExLCAyNywgNywgMjUzLCAxMCwgMjcsIDcsIDI1MywgOSwgMjcsIDcsIDI1MywgOCwgMjcsIDcsIDI1MywgCi0gICAgNywgMjcsIDcsIDI1MywgNiwgMjcsIDcsIDI1MywgNSwgMjcsIDcsIDI1MywgNCwgMjcsIDcsIDI1MywgMywgMjcsIDcsIAotICAgIDI1MywgMiwgMjcsIDcsIDI1MywgMSwgMjcsIDcsIDI1MywgMCwgMjcsIDcsIDI1MiwgMjU1LCAyNywgNywgMjUyLCAyNTQsIAotICAgIDI3LCA3LCAyNTIsIDI1MywgMjcsIDcsIDI1MiwgMjUyLCAyNywgNywgMjUyLCAyNTEsIDI3LCA3LCAyNTIsIDI1MCwgMjcsIAotICAgIDcsIDI1MiwgMjQ5LCAyNywgNywgMjUyLCAyNDgsIDI3LCA3LCAyNTIsIDI0NywgMjcsIDcsIDI1MiwgMjQ2LCAyNywgNywgCi0gICAgMjUyLCAyNDUsIDI3LCA3LCAyNTIsIDI0NCwgMjcsIDcsIDI1MiwgMjQzLCAyNywgNywgMjUyLCAyNDIsIDI3LCA3LCAyNTIsIAotICAgIDI0MSwgMjcsIDcsIDI1MiwgMjQwLCAyNywgNywgMjUyLCAyMzksIDI3LCA3LCAyNTIsIDIzOCwgMjcsIDcsIDI1MiwgMjM3LCAKLSAgICAyNywgNywgMjUyLCAyMzYsIDI3LCA3LCAyNTIsIDIzNSwgMjcsIDcsIDI1MiwgMjM0LCAyNywgNywgMjUyLCAyMzMsIDI3LCAKLSAgICA3LCAyNTIsIDIzMiwgMjcsIDcsIDI1MiwgMjMxLCAyNywgNywgMjUyLCAyMzAsIDI3LCA3LCAyNTIsIDIyOSwgMjcsIDcsIAotICAgIDI1MiwgMjI4LCAyNywgNywgMjUyLCAyMjcsIDI3LCA3LCAyNTIsIDIyNiwgMjcsIDcsIDI1MiwgMjI1LCAyNywgNywgMjUyLCAKLSAgICAyMjQsIDI3LCA3LCAyNTIsIDIyMywgMjcsIDcsIDI1MiwgMjIyLCAyNywgNywgMjUyLCAyMjEsIDI3LCA3LCAyNTIsIDIyMCwgCi0gICAgMjcsIDcsIDI1MiwgMjE5LCAyNywgNywgMjUyLCAyMTgsIDI3LCA3LCAyNTIsIDIxNywgMjcsIDcsIDI1MiwgMjE2LCAyNywgCi0gICAgNywgMjUyLCAyMTUsIDI3LCA3LCAyNTIsIDIxNCwgMjcsIDcsIDI1MiwgMjEzLCAyNywgNywgMjUyLCAyMTIsIDI3LCA3LCAKLSAgICAyNTIsIDIxMSwgMjcsIDcsIDI1MiwgMjEwLCAyNywgNywgMjUyLCAyMDksIDI3LCA3LCAyNTIsIDIwOCwgMjcsIDcsIDI1MiwgCi0gICAgMjA3LCAyNywgNywgMjUyLCAyMDYsIDI3LCA3LCAyNTIsIDIwNSwgMjcsIDcsIDI1MiwgMjA0LCAyNywgNywgMjUyLCAyMDMsIAotICAgIDI3LCA3LCAyNTIsIDIwMiwgMjcsIDcsIDI1MiwgMjAxLCAyNywgNywgMjUyLCAyMDAsIDI3LCA3LCAyNTIsIDE5OSwgMjcsIAotICAgIDcsIDI1MiwgMTk4LCAyNywgNywgMjUyLCAxOTcsIDI3LCA3LCAyNTIsIDE5NiwgMjcsIDcsIDI1MiwgMTk1LCAyNywgNywgCi0gICAgMjUyLCAxOTQsIDI3LCA3LCAyNTIsIDE5MywgMjcsIDcsIDI1MiwgMTkyLCAyNywgNywgMjUyLCAxOTEsIDI3LCA3LCAyNTIsIAotICAgIDE5MCwgMjcsIDcsIDI1MiwgMTg5LCAyNywgNywgMjUyLCAxODgsIDI3LCA3LCAyNTIsIDE4NywgMjcsIDcsIDI1MiwgMTg2LCAKLSAgICAyNywgNywgMjUyLCAxODUsIDI3LCA3LCAyNTIsIDE4NCwgMjcsIDcsIDI1MiwgMTgzLCAyNywgNywgMjUyLCAxODIsIDI3LCAKLSAgICA3LCAyNTIsIDE4MSwgMjcsIDcsIDI1MiwgMTgwLCAyNywgNywgMjUyLCAxNzksIDI3LCA3LCAyNTIsIDE3OCwgMjcsIDcsIAotICAgIDI1MiwgMTc3LCAyNywgNywgMjUyLCAxNzYsIDI3LCA3LCAyNTIsIDE3NSwgMjcsIDcsIDI1MiwgMTc0LCAyNywgNywgMjUyLCAKLSAgICAxNzMsIDI3LCA3LCAyNTIsIDE3MiwgMjcsIDcsIDI1MiwgMTcxLCAyNywgNywgMjUyLCAxNzAsIDI3LCA3LCAyNTIsIDE2OSwgCi0gICAgMjcsIDcsIDI1MiwgMTY4LCAyNywgNywgMjUyLCAxNjcsIDI3LCA3LCAyNTIsIDE2NiwgMjcsIDcsIDI1MiwgMTY1LCAyNywgCi0gICAgNywgMjUyLCAxNjQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAxMzYsIDIyNCwgMTk3LCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgCi0gICAgMTk4LCAyMzksIDE3OCwgMjQsIDEsIDIxOCwgMTk4LCAyMTgsIDQ3LCAyMjQsIDE5OCwgMjE4LCAxMTUsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjE4LCA0NywgMjI0LCAxOTgsIDIxOCwgMTE2LCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMTA3LCAyMjQsIDE5NywgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDE5NSwgMjQsIDEsIDIxOCwgMTk4LCAyMDgsIDE5OSwgMjI0LCAxOTcsIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjIwLCAyMTUsIDIyNCwgMTk3LCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMjU0LCAyMTksIDE2OSwgMjIyLCAKLSAgICAzMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTgsIDQ3LCAyMTksIDE2OSwgMjIyLCAzMywgMjE4LCAxMTUsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjE4LCA0NywgMjE5LCAxNjksIDIyMiwgMzMsIDIxOCwgMTE2LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTU2LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIwNywgMjA0LCAyMjUsIDE1NywgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDE5NywgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjUsIDE1MywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDExMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjMsIDE4NiwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMTMsIDExNCwgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDkxLCAyNCwgMSwgMjE4LCAxOTgsIDIyOSwgCi0gICAgMTYzLCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMCwgMjQsIDEsIDIxOCwgMTk4LCAyMTAsIDE3OSwgMjQsIDEsIDIxOCwgMTk4LCAKLSAgICAyMjIsIDEzNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDEwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNywgMTc2LCAyMjgsIDE3NSwgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDEwMSwgMjI0LCAyMDUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNjAsIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjE5LCA2MiwgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDEyNSwgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDU1LCAyMjIsIDE3MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDE5NiwgMjI0LCAyMDgsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMTA2LCAyMDIsIDE4OCwgMjIzLCAxMDAsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAxMDEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjIxLCAxMDEsIDIyMSwgMTAyLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgOTEsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjI0LCAxOTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCAyMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI0LCAzMSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMzAsIDIxLCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTY5LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjMsIDI2LCAyMjcsIDIyMywgMjQsIDEsIDIxOCwgMTk4LCAyMTgsIDIxOSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIAotICAgIDE1NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDc0LCAyNCwgMSwgMjE4LCAxOTgsIDIxNywgMTcyLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIwNywgMjAxLCAyNCwgMSwgMjE4LCAxOTgsIDIyNiwgMjM1LCAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjUxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIwOSwgMTE3LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTUxLCAyNCwgMSwgMjE4LCAxOTgsIDIyOSwgCi0gICAgMTcwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMjIsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAxODgsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjI0LCAzMiwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDE5MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjcsIDI5LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIzOSwgMjQ2LCAyNCwgMSwgMjE4LCAxOTgsIDIxNSwgMjExLCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMjMzLCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIxMSwgMjQ3LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTA3LCAyMTgsIDE1NywgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMTIsIDI0NywgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMTIsIDIzMCwgCi0gICAgMjIxLCAxMTEsIDIwMiwgMTk2LCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMjM3LCAyMjQsIDUxLCAyNCwgMSwgMjE4LCAxOTgsIAotICAgIDIxOSwgMTY0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMiwgMjQsIDEsIDIxOCwgMTk4LCAyMDYsIDIzMSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjIsIDE3MywgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDQ0LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIyNSwgNDksIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyNTEsIDI0LCAxLCAyMTgsIDE5OCwgMjA5LCAKLSAgICAxMjEsIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNDQsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxNjUsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjIxLCAxMTUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTgsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyNDgsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjI5LCAyNDEsIDI0LCAxLCAyMTgsIDE5OCwgMjIxLCAxMTgsIDI0LCAxLCAyMTgsIDE5OCwgMjA2LCAKLSAgICA1MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjYsIDIzOSwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDIzMCwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjMsIDc1LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgNDgsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCAxMTMsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjA3LCAyMDQsIDIyNSwgMTU1LCAyNCwgMSwgMjE4LCAxOTcsIDIxMiwgMTUyLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIxMywgMTE4LCAyMDcsIDIwMywgMjQsIDEsIDIxOCwgMTk3LCAyMjcsIDMxLCAyMjEsIDk3LCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIyNSwgNTUsIDIyNSwgMTU5LCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgOTIsIDI0LCAxLCAyMTgsIDE5NywgMjAzLCAxOCwgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDUwLCAyNCwgMSwgMjE4LCAxOTcsIDIzMCwgNywgMjQsIDEsIDIxOCwgMTk3LCAyMTksIAotICAgIDE5LCAyNCwgMSwgMjE4LCAxOTcsIDIwMywgOTYsIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAxOTcsIDIyOCwgMjksIDIyMSwgCi0gICAgMTExLCAyMjEsIDYsIDI0LCAxLCAyMTgsIDE5NywgMjIxLCA5NCwgMjEzLCAxNywgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIAotICAgIDI0OSwgMjIyLCA0NywgMjQsIDEsIDIxOCwgMTk3LCAyMzgsIDk4LCAyNCwgMSwgMjE4LCAxOTcsIDIxOCwgMTA1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIwNywgMjA0LCAyMjEsIDEwOSwgMjQsIDEsIDIxOCwgMTk3LCAyMTMsIDIyLCAyMjIsIDQyLCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIxMywgMTgsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAxOTgsIDIwOSwgMTIwLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIyNSwgMzcsIDIyNSwgNTEsIDI0LCAxLCAyMTgsIDE5NywgMjIwLCAyNDksIDIyMSwgOTcsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI5LCAxNTksIDI0LCAxLCAyMTgsIDE5NywgMjM4LCA5OSwgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDE1NSwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMjgsIDEwNywgMjQsIDEsIDIxOCwgMTk3LCAyMTksIDY1LCAyNCwgMSwgMjE4LCAxOTcsIDIwNSwgMjM3LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTM3LCAyMjMsIDE4NCwgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDE3MiwgMjI1LCAzMywgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDIxNSwgMjQsIDEsIDIxOCwgMTk3LCAyMTUsIDEyLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIxMCwgMTQsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMTAsIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxNTYsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjIyLCAxNTcsIDIyOCwgNywgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIwMCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMTAsIDIzMCwgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDQxLCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMzYsIDI0LCAxLCAyMTgsIAotICAgIDE5NywgMjIxLCA5LCAyNCwgMSwgMjE4LCAxOTcsIDIxNywgMTc2LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjA5LCAyMjIsIAotICAgIDE3NCwgMjQsIDEsIDIxOCwgMTk3LCAyNDAsIDMxLCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMjgsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjQwLCA1MywgMjQsIDEsIDIxOCwgMTk3LCAyMjksIDE2NywgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDE3NywgMjIyLCAzNiwgCi0gICAgMjQsIDEsIDIxOCwgMTk3LCAyMjUsIDE3NywgMjIyLCAxMiwgMjQsIDEsIDIxOCwgMTk3LCAyMjcsIDE3NSwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMjIsIDE4MCwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDEyMCwgMjQsIDEsIDIxOCwgMTk3LCAxOTIsIDI0LCAKLSAgICAxLCAyMTgsIDE5NywgMjI5LCA3NywgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDEyNSwgMjQsIDEsIDE2OCwgMjIyLCAxMzYsIAotICAgIDIyNSwgMTU3LCAyNCwgMSwgMTY4LCAyMjAsIDIxNCwgMjQsIDEsIDE2OCwgMjAyLCAxOTYsIDI0LCAxLCAxNjgsIDIwNCwgCi0gICAgOTUsIDI0LCAxLCAxNjgsIDIyMiwgMTczLCAyNCwgMSwgMTY4LCAyMjMsIDE0LCAyNCwgMSwgMTY4LCAyMjIsIDE0MywgMjQsIAotICAgIDEsIDE2OCwgMjM4LCAxMDgsIDI0LCAxLCAxNjgsIDIyNSwgNDUsIDI0LCAxLCAxNjgsIDIzOCwgMjA1LCAyNCwgMSwgMTY4LCAKLSAgICAyMjAsIDIzOSwgMjI0LCA5MSwgMjI0LCAyMTIsIDI0LCAxLCAxNjgsIDIyMSwgODksIDIyNSwgMzYsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgNDIsIDI0LCAxLCAxNjgsIDIxOCwgMTExLCAyNCwgMSwgMTY4LCAyMjIsIDI1NSwgMjQsIDEsIDE2OCwgMjI1LCA1MywgCi0gICAgMjQ3LCA4OCwgMjQsIDEsIDE2OCwgMjI5LCAxNTcsIDI0LCAxLCAxNjgsIDIzOCwgMTA5LCAyNCwgMSwgMTY4LCAyMjksIAotICAgIDE2NCwgMjQsIDEsIDE2OCwgMjAyLCAyMTQsIDIyMywgMjE1LCAyNCwgMSwgMTY4LCAyMjAsIDIwOCwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCAzMCwgMjQsIDEsIDE2OCwgMjIxLCAxMTksIDI0LCAxLCAxNjgsIDIyNSwgMzYsIDI0LCAxLCAxNjgsIDIwMywgMTksIAotICAgIDI0LCAxLCAxNjgsIDIyOCwgMjQxLCAyNCwgMSwgMTY4LCAyMzAsIDQxLCAyNCwgMSwgMTY4LCAyMTMsIDExMywgMjQsIDEsIAotICAgIDE2OCwgMjIzLCA4LCAyNCwgMSwgMTY4LCAyMTAsIDEyLCAyNCwgMSwgMTY4LCAyMjIsIDE2LCAyNCwgMSwgMTY4LCAyMDgsIAotICAgIDE5OSwgMjAyLCAxOTksIDI0LCAxLCAxNjgsIDIxMSwgNSwgMjQsIDEsIDE2OCwgMjIyLCAxNjMsIDIyMSwgNiwgMjQsIDEsIAotICAgIDE2OCwgMjA1LCAyMzYsIDI0LCAxLCAxNjgsIDIyMywgNzgsIDI0LCAxLCAxNjgsIDIyNSwgMTc3LCAyMjksIDE2NiwgMjQsIAotICAgIDEsIDE2OCwgMjIxLCAxMDIsIDI0LCAxLCAxNjgsIDIyMiwgMTU4LCAyNCwgMSwgMTY4LCAyMjgsIDExLCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDM4LCAyNCwgMSwgMTY4LCAyMjQsIDE4OSwgMjQsIDEsIDE2OCwgMjIxLCA5NiwgMjQsIDEsIDE2OCwgMjA5LCAxMTYsIAotICAgIDI0LCAxLCAxNjgsIDIyMiwgMTYwLCAyNCwgMSwgMTY4LCAyMzksIDEwNiwgMjQsIDEsIDE2OCwgMjIzLCAxMywgMjQsIDEsIAotICAgIDE2OCwgMjIxLCAxMjEsIDI0LCAxLCAxNjgsIDIyMSwgMTE3LCAyNCwgMSwgMTY4LCAyNDcsIDE2OSwgMjQsIDEsIDE2OCwgCi0gICAgMjA1LCAyMzgsIDI0LCAxLCAxNjgsIDIyNSwgNDMsIDI0LCAxLCAxNjgsIDIxNSwgMTQ1LCAyNCwgMSwgMTY4LCAyMjIsIDQ2LCAKLSAgICAyNCwgMSwgMTY4LCAyMjgsIDI4LCAyNCwgMSwgMTY4LCAyMDgsIDE5NiwgMjQsIDEsIDE2OCwgMjIxLCAxMDMsIDIyMiwgCi0gICAgMTI1LCAyNCwgMSwgMTY4LCAyMjIsIDM4LCAyNCwgMSwgMTY4LCAyMjksIDE3MCwgMjQsIDEsIDE2OCwgMjIyLCAxNjUsIDI0LCAKLSAgICAxLCAxNjgsIDIyNSwgMTUwLCAyNCwgMSwgMTY4LCAyMjUsIDMxLCAyNCwgMSwgMTY4LCAyMjYsIDIzOSwgMjQsIDEsIDE2OCwgCi0gICAgMjI4LCAxNzUsIDI0LCAxLCAxNjgsIDIyMiwgNDQsIDI0LCAxLCAxNjgsIDIyMiwgMTI1LCAyNCwgMSwgMTY4LCAyMDMsIAotICAgIDIwNSwgMjQsIDEsIDE2OCwgMjIyLCAxNjEsIDI0LCAxLCAxNjgsIDIyMSwgMTA2LCAyNCwgMSwgMTY4LCAyMjEsIDk4LCAyNCwgCi0gICAgMSwgMTY4LCAyMjgsIDE5MCwgMjIyLCAyLCAyNCwgMSwgMTY4LCAyMjEsIDEwNCwgMjQsIDEsIDE2OCwgMjIzLCAyMSwgMjQsIAotICAgIDEsIDE2OCwgMjI1LCAxNzcsIDIyMSwgMTA5LCAyNCwgMSwgMTY4LCAyMDMsIDExMCwgMjQsIDEsIDE2OCwgMjIzLCAyMCwgCi0gICAgMjQsIDEsIDE2OCwgMjEyLCAxOTQsIDI0LCAxLCAxNjgsIDIxMywgMTE2LCAyNCwgMSwgMTY4LCAyMjUsIDM5LCAyNCwgMSwgCi0gICAgMTY4LCAyMjUsIDE1NywgMjQsIDEsIDE2OCwgMjI1LCA0OSwgMjQsIDEsIDE2OCwgMjI5LCAxNTgsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgNDAsIDI0LCAxLCAxNjgsIDIyOSwgMTYyLCAyNCwgMSwgMTY4LCAyMjUsIDUzLCAyMTgsIDE2MiwgMjQsIDEsIDE2OCwgCi0gICAgMjAyLCAxNzksIDI0LCAxLCAxNjgsIDIyMiwgMzQsIDI0LCAxLCAxNjgsIDIyNCwgMTQ0LCAyNCwgMSwgMTY4LCAyMjMsIAotICAgIDI0NCwgMjQsIDEsIDE2OCwgMjEyLCAyNTAsIDI0LCAxLCAxNjgsIDIyOSwgMTgxLCAyMjcsIDI0NiwgMjQsIDEsIDE2OCwgCi0gICAgMjI5LCAxODEsIDI0MCwgNjYsIDI0LCAxLCAxNjgsIDIyMiwgMTk1LCAyNCwgMSwgMTY4LCAyMjMsIDc1LCAyNCwgMSwgMTY4LCAKLSAgICAyMjcsIDk2LCAyNCwgMSwgMTY4LCAyMTgsIDEyMywgMjQsIDEsIDE2OCwgMjE5LCA5LCAyNCwgMSwgMTY4LCAyMDksIDEzMiwgCi0gICAgMjQsIDEsIDEzNCwgMjI1LCAyOSwgMjQsIDEsIDEzNCwgMjA0LCA5MywgMjQsIDEsIDEzNCwgMjIyLCAzMiwgMjQsIDEsIAotICAgIDEzNCwgMjI0LCAxOTcsIDI0LCAxLCAxMzQsIDIyMiwgMzAsIDI0LCAxLCAxMzQsIDIyNywgMTQxLCAyNCwgMSwgMTM0LCAKLSAgICAyMjIsIDM1LCAyNCwgMSwgMTM0LCAyMjEsIDExNiwgMjQsIDEsIDEzNCwgMjIyLCAxNzksIDI0LCAxLCAxMzQsIDIyMSwgNiwgCi0gICAgMjQsIDEsIDEzNCwgMjAzLCAyMTYsIDI0LCAxLCAxMzQsIDIyMiwgMTMzLCAyNCwgMSwgMTM0LCAyMTMsIDQxLCAyNCwgMSwgCi0gICAgMTM0LCAyMjIsIDE0NCwgMjQsIDEsIDEzNCwgMjI5LCAxNjUsIDI0LCAxLCAxMzQsIDIwOSwgMTE4LCAyNCwgMSwgMTM0LCAKLSAgICAyMTMsIDIwLCAyNCwgMSwgMTM0LCAyMjIsIDQzLCAyNCwgMSwgMTM0LCAyMTAsIDIzMCwgMjQsIDEsIDEzNCwgMjI5LCAxNzAsIAotICAgIDI0LCAxLCAxMzQsIDIwMywgOTgsIDI0LCAxLCAxMzQsIDIyOCwgMTkxLCAyNCwgMSwgMTM0LCAyMTQsIDIzMywgMjQsIDEsIAotICAgIDEzNCwgMjI0LCAyMDIsIDI0LCAxLCAxMzQsIDIyMywgMTIsIDI0LCAxLCAxMzQsIDIyNSwgMTI1LCAyNCwgMSwgMTM0LCAKLSAgICAyMjQsIDIwOCwgMjQsIDEsIDEzNCwgMjEzLCAxMTUsIDI0LCAxLCAxMzQsIDIwMywgNDIsIDI0LCAxLCAxMzQsIDIyMiwgMzcsIAotICAgIDI0LCAxLCAxMzQsIDIyOSwgMTYxLCAyMjUsIDMyLCAyNCwgMSwgMTM0LCAyMjIsIDE0MCwgMjQsIDEsIDEzNCwgMjA3LCAKLSAgICAyMDMsIDI0LCAxLCAxMzQsIDIzOCwgMTE4LCAyNCwgMSwgMTM0LCAyMjIsIDEzMCwgMjQsIDEsIDEzNCwgMjQwLCAzMiwgMjQsIAotICAgIDEsIDEzNCwgMjIzLCAxNiwgMjQsIDEsIDEzNCwgMjI0LCAxODEsIDI0LCAxLCAxMzQsIDIyNywgMTY5LCAyNCwgMSwgMTM0LCAKLSAgICAyMjIsIDI1NCwgMjQsIDEsIDEzNCwgMjI0LCA1MCwgMjQsIDEsIDEzNCwgMjI0LCAxODUsIDI0LCAxLCAxMzQsIDIxNywgCi0gICAgMTU2LCAyNCwgMSwgMTM0LCAyMjQsIDE4MywgMjQsIDEsIDEzNCwgMjI0LCAxOTksIDI0LCAxLCAxMzQsIDIyNiwgMjIyLCAKLSAgICAyNCwgMSwgMTM0LCAyMjEsIDEwOCwgMjQsIDEsIDEzNCwgMjI1LCA1MiwgMjQsIDEsIDEzNCwgMjI4LCAxNjUsIDI0LCAxLCAKLSAgICAxMzQsIDIyMCwgMjUxLCAyNCwgMSwgMTM0LCAyMDksIDEyMSwgMjQsIDEsIDEzNCwgMjExLCAyNDQsIDI0LCAxLCAxMzQsIAotICAgIDIwMiwgMTc5LCAyNCwgMSwgMTM0LCAyMjksIDE2MiwgMjQsIDEsIDEzNCwgMjE2LCAyMDEsIDI0LCAxLCAxMzQsIDIwOSwgCi0gICAgMTc1LCAyNCwgMSwgMTM0LCAyMjIsIDE0MSwgMjQsIDEsIDEzNCwgMjI0LCAyMDQsIDI0LCAxLCAxMzQsIDIyMSwgMTA3LCAKLSAgICAyNCwgMSwgMTM0LCAyMjksIDE2MCwgMjQsIDEsIDEzNCwgMjE4LCAxMTcsIDI0LCAxLCAxMzQsIDIxOCwgMjEzLCAyNCwgMSwgCi0gICAgMTM0LCAyMjAsIDIyNSwgMjQsIDEsIDEzNCwgMjI3LCAxNzUsIDI0LCAxLCAxMzQsIDIyMiwgMTgwLCAyNCwgMSwgMTM0LCAKLSAgICAyMjQsIDIwMSwgMjQsIDEsIDEzNCwgMjIyLCAxNTMsIDI0LCAxLCAxMzQsIDIwMiwgMTkzLCAyNCwgMSwgMTM0LCAyMTksIAotICAgIDk2LCAyNCwgMSwgMTM0LCAyMDIsIDE5MiwgMjQsIDEsIDEzNCwgMjIzLCAyMSwgMjQsIDEsIDEzNCwgMjIxLCA5NywgMjQsIAotICAgIDEsIDEzNCwgMjExLCA3LCAyNCwgMSwgMTM0LCAyMjgsIDE5NSwgMjQsIDEsIDEzNCwgMjIyLCAxNjksIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMTM4LCAyNCwgMSwgMTM0LCAyMDcsIDE4NSwgMjQsIDEsIDEzNCwgMjI0LCAyMTIsIDI0LCAxLCAxMzQsIDIyOCwgCi0gICAgMTg1LCAyNCwgMSwgMTM0LCAyMjEsIDEwNSwgMjQsIDEsIDEzNCwgMjA5LCAxMTksIDI0LCAxLCAxMzQsIDIyNSwgMTUyLCAKLSAgICAyNCwgMSwgMTM0LCAyMjIsIDE3OCwgMjQsIDEsIDEzNCwgMjI3LCAxNjgsIDI0LCAxLCAxMzQsIDIyMiwgMTU5LCAyNCwgMSwgCi0gICAgMTM0LCAyMjEsIDExMCwgMjQsIDEsIDEzNCwgMjIyLCAxNiwgMjQsIDEsIDEzNCwgMjM4LCAxMDIsIDI0LCAxLCAxMzQsIAotICAgIDIyOCwgMjA5LCAyNCwgMSwgMTM0LCAyMTYsIDEwOCwgMjIwLCA0NSwgMjQsIDEsIDEzNCwgMjEwLCAxLCAyNCwgMSwgMTM0LCAKLSAgICAyMDgsIDE0MSwgMjQsIDEsIDEzNCwgMjIwLCAyNDgsIDI0LCAxLCAxMzQsIDIxNiwgMywgMjQsIDEsIDEzNCwgMjI3LCAyMjUsIAotICAgIDI0LCAxLCAxMzQsIDIyNSwgNywgMjQsIDEsIDEzNCwgMjI2LCAxODUsIDI0LCAxLCAxMzQsIDIxMCwgMTc5LCAyNCwgMSwgCi0gICAgMTM0LCAyMjMsIDI0NiwgMjQsIDEsIDEzNCwgMjEzLCA2LCAyNCwgMSwgMTM0LCAyMTMsIDE2LCAyNCwgMSwgMTM0LCAyMjgsIAotICAgIDEzNywgMjQsIDEsIDEzNCwgMjIxLCA4NCwgMjQsIDEsIDEzNCwgMjEyLCAxOTksIDI0LCAxLCAxMzQsIDIyMSwgOTksIDI0LCAKLSAgICAxLCAxMzQsIDIxOSwgMjMsIDI0LCAxLCAxMzQsIDIyMiwgMTAwLCAyNCwgMSwgMTM0LCAyMTIsIDIyOSwgMjQsIDEsIDEzNCwgCi0gICAgMjE3LCAxNzEsIDI0LCAxLCAxMzQsIDIyMywgMTg0LCAyNCwgMSwgMTM0LCAyMjcsIDEwLCAyNCwgMSwgMTM0LCAyMTYsIAotICAgIDEwOCwgMjIzLCAyMzksIDI0LCAxLCAxMzQsIDIwOSwgMiwgMjQsIDEsIDEzNCwgMjIxLCA4NiwgMjQsIDEsIDEzNCwgMjI1LCAKLSAgICA1MywgMjEzLCAxMTEsIDI0LCAxLCAxMzQsIDIxNCwgMjMxLCAyNCwgMSwgMTM0LCAyNDAsIDEwNywgMjQsIDEsIDkzLCAyMjMsIAotICAgIDIwLCAyNCwgMSwgOTMsIDIwOCwgMTQ3LCAyNCwgMSwgOTMsIDIyNSwgNDIsIDI0LCAxLCA5MywgMjI4LCAxMSwgMjQsIDEsIAotICAgIDkzLCAyMDUsIDE3NywgMjQsIDEsIDkzLCAyMjcsIDE2LCAyNCwgMSwgOTMsIDIxOSwgMTY4LCAyNCwgMSwgOTMsIDIxMSwgCi0gICAgMjU1LCAyNCwgMSwgOTMsIDIxNiwgMTc2LCAyNCwgMSwgOTMsIDIyMSwgMTEyLCAyNCwgMSwgOTMsIDIyMiwgMjQ3LCAyNCwgCi0gICAgMSwgOTMsIDIxNywgMTg4LCAyNCwgMSwgOTMsIDIwOSwgMjMyLCAyNCwgMSwgOTMsIDIyMiwgMTQ2LCAyNCwgMSwgOTMsIAotICAgIDIyOCwgMjM3LCAyNCwgMSwgOTMsIDIwMywgMjA4LCAyNCwgMSwgOTMsIDIxNCwgMTY1LCAyNCwgMSwgOTMsIDIyMiwgMTcwLCAKLSAgICAyNCwgMSwgOTMsIDIxOSwgMTY1LCAyNCwgMSwgOTMsIDIwOCwgMTQ4LCAyNCwgMSwgOTMsIDIyOCwgMTg5LCAyNCwgMSwgOTMsIAotICAgIDIyNywgMzAsIDI0LCAxLCA5MywgMjIxLCAxMTUsIDI0LCAxLCA5MywgMjIyLCAxMjIsIDI0LCAxLCA5MywgMjI1LCAxNTgsIAotICAgIDI0LCAxLCA5MywgMjIyLCAxMzksIDI0LCAxLCA5MywgMjIyLCAxMjEsIDI0LCAxLCA5MywgMjIxLCAxMTQsIDI0LCAxLCA5MywgCi0gICAgMjE2LCAwLCAyNCwgMSwgOTMsIDIyMiwgMzQsIDI0LCAxLCA5MywgMjE5LCAyMSwgMjQsIDEsIDkzLCAyMTUsIDMzLCAyNCwgCi0gICAgMSwgOTMsIDIyMiwgMTU0LCAyNCwgMSwgOTMsIDIyNCwgMTkxLCAyNCwgMSwgOTMsIDIzOCwgOTYsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxNDIsIDI0LCAxLCA5MywgMjIyLCA0NSwgMjQsIDEsIDkzLCAyMjUsIDEwNiwgMjQsIDEsIDkzLCAyMjcsIDEyLCAyNCwgMSwgCi0gICAgOTMsIDIyMiwgMTc1LCAyNCwgMSwgOTMsIDIyMywgNCwgMjQsIDEsIDkzLCAyMTAsIDAsIDIyMSwgOTcsIDI0LCAxLCA5MywgCi0gICAgMjEzLCAxMTcsIDI0LCAxLCA5MywgMjE3LCAxODEsIDI0LCAxLCA5MywgMjIzLCAyNCwgMjEyLCA2LCAyNCwgMSwgOTMsIAotICAgIDIyMiwgMTYyLCAyMjEsIDYsIDI0LCAxLCA5MywgMjAzLCA3LCAyNCwgMSwgOTMsIDIzOCwgOTcsIDI0LCAxLCA5MywgMjA3LCAKLSAgICAyMDIsIDI0LCAxLCA5MywgMjAzLCAyMiwgMjQsIDEsIDkzLCAyMTgsIDY5LCAyNCwgMSwgOTMsIDIwNywgMTkwLCAyNCwgMSwgCi0gICAgOTMsIDIyOSwgMTY4LCAyNCwgMSwgOTMsIDIxMSwgNiwgMjQsIDEsIDkzLCAyMDksIDEyMCwgMjQsIDEsIDkzLCAyMDUsIAotICAgIDIzOSwgMjQsIDEsIDkzLCAyMDQsIDQzLCAyNCwgMSwgOTMsIDIyOCwgMTEwLCAyNCwgMSwgOTMsIDIxNywgMTkxLCAyNCwgMSwgCi0gICAgOTMsIDIxMCwgMTMsIDI0LCAxLCA5MywgMjM4LCAxMTcsIDI0LCAxLCA5MywgMjIyLCAxODUsIDI0LCAxLCA5MywgMjEzLCAKLSAgICAxOSwgMjQsIDEsIDkzLCAyMjQsIDE4NiwgMjQsIDEsIDkzLCAyMjUsIDQ2LCAyNCwgMSwgOTMsIDIyMCwgMjEyLCAyNCwgMSwgCi0gICAgOTMsIDIyMSwgMjU0LCAyNCwgMSwgOTMsIDIzOCwgMjAxLCAyNCwgMSwgOTMsIDIwNywgMTkxLCAyNCwgMSwgOTMsIDIyOCwgCi0gICAgMTk5LCAyNCwgMSwgOTMsIDIwMywgNzQsIDI0LCAxLCA5MywgMjIwLCAyNDksIDI0NiwgMzIsIDI0LCAxLCA5MywgMjAyLCAKLSAgICAyNTMsIDI0LCAxLCA5MywgMjI0LCAyMDMsIDI0LCAxLCA5MywgMjIzLCA5LCAyNCwgMSwgOTMsIDIxOCwgMTU4LCAyNCwgMSwgCi0gICAgOTMsIDIwMiwgMTk4LCAyNCwgMSwgOTMsIDIyNywgMTcwLCAyNCwgMSwgOTMsIDIzOSwgMTA2LCAyNCwgMSwgOTMsIDIzOCwgCi0gICAgMjAwLCAyNCwgMSwgOTMsIDIyMiwgMTMyLCAyNCwgMSwgOTMsIDIyOSwgMTcwLCAyNCwgMSwgOTMsIDIyNSwgMTYxLCAyNCwgCi0gICAgMSwgOTMsIDIyMiwgMTQ1LCAyNCwgMSwgOTMsIDIzOCwgMTAzLCAyNCwgMSwgOTMsIDI0MCwgMTA4LCAyNCwgMSwgOTMsIAotICAgIDIyMSwgODcsIDI0LCAxLCA5MywgMjE4LCAyMTQsIDI0LCAxLCA5MywgMjAzLCAyMCwgMjQsIDEsIDkzLCAyMjIsIDE3MSwgCi0gICAgMjQsIDEsIDkzLCAyMjAsIDI0OSwgMjQ4LCAxMDMsIDI0LCAxLCA5MywgMjIwLCAxOTIsIDI0LCAxLCA5MywgMjE4LCA0MywgCi0gICAgMjQsIDEsIDkzLCAyMjQsIDE0NCwgMjQsIDEsIDkzLCAyMzksIDEwNCwgMjQsIDEsIDkzLCAyMjMsIDEwMCwgMjQsIDEsIDkzLCAKLSAgICAyMjMsIDI0NCwgMjQsIDEsIDkzLCAyMzgsIDEwMiwgMjQsIDEsIDkzLCAyMzksIDEwOSwgNzUsIDI0LCAxLCA5MywgMjIzLCAKLSAgICAxODUsIDI0LCAxLCA5MywgMjE3LCAxODcsIDI0LCAxLCA5MywgMjIyLCAxMzQsIDI0LCAxLCA5MywgMjI4LCAxNzUsIDI0LCAKLSAgICAxLCA5MywgMjE4LCAxNTUsIDI0LCAxLCA5MywgMjIxLCAxMDAsIDI0LCAxLCA5MywgMjAzLCAyMSwgMjQsIDEsIDkzLCAyMjIsIAotICAgIDE1NSwgMjQsIDEsIDkzLCAyMTksIDE2OSwgMjE4LCAyNTIsIDI0LCAxLCA5MywgMjM5LCAxMDksIDI0NywgNzEsIDI0LCAxLCAKLSAgICA5MywgMjM5LCAxNzksIDI0LCAxLCA5MywgMjIyLCAzOSwgMjQsIDEsIDkzLCA2MywgMjQsIDEsIDkzLCAyMDgsIDE0MSwgMjQsIAotICAgIDEsIDkzLCA3OCwgMjQsIDEsIDkzLCA3NSwgMjQsIDEsIDkzLCAyMjgsIDksIDI0LCAxLCA5MywgMjE5LCAxNjksIDIxOCwgCi0gICAgNzcsIDI0LCAxLCA5MywgMjEwLCAxOCwgMjQsIDEsIDkzLCAyMDksIDIxOSwgMjQsIDEsIDkzLCAyMjMsIDI0LCAyMjMsIAotICAgIDE3MiwgMjM2LCAzOCwgMjQsIDEsIDkzLCAyMTIsIDI1MCwgMjQsIDEsIDkzLCAyMDMsIDE3LCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTE1LCAyNCwgMSwgOTMsIDIwMiwgMjAzLCAyNCwgMSwgOTMsIDIwMiwgMjMwLCAyMTAsIDE1OSwgMjQsIDEsIDkzLCAyMDIsIAotICAgIDIzMCwgMjQ1LCAxNTEsIDI0LCAxLCA5MywgMjAyLCAxODcsIDI0LCAxLCA5MywgMjAyLCAxOTUsIDI0LCAxLCA5MywgMjI5LCAKLSAgICAxNTYsIDI0LCAxLCA5MywgMjE4LCAyMTIsIDI0LCAxLCA5MywgMjIyLCA0MCwgMjQxLCAzOSwgMjQsIDEsIDkzLCAyMTcsIAotICAgIDE4MywgMjQsIDEsIDkzLCAyMDMsIDIxNCwgMjQsIDEsIDkzLCAyNDAsIDUzLCAyNCwgMSwgOTMsIDIwNiwgNTAsIDI0LCAxLCAKLSAgICA5MywgMjI2LCAyMzksIDI0LCAxLCA5MywgMjI0LCAxNTUsIDI0LCAxLCA5MywgMjE2LCA3NSwgMjQsIDEsIDkzLCAyMTYsIAotICAgIDIwMiwgMjQsIDEsIDkzLCAyMjIsIDExNCwgMjQsIDEsIDkzLCAyMjIsIDIwMywgMjQsIDEsIDkzLCAyMTIsIDI0MiwgMjQsIAotICAgIDEsIDkzLCAyMTIsIDIyOSwgMjQsIDEsIDkzLCAyMzksIDEwOSwgMjE2LCAxMTEsIDI0LCAxLCA5MywgMjAxLCAyMDEsIDI0LCAKLSAgICAxLCA5MywgMjE4LCAxNjcsIDI0LCAxLCA5MywgMjI3LCAxMCwgMjQsIDEsIDkzLCAyMjksIDI2LCAyNCwgMSwgOTMsIDIyNCwgCi0gICAgMjQwLCAyNCwgMSwgOTMsIDE5MiwgMjQsIDEsIDkzLCAyMjUsIDEwMywgMjQsIDEsIDkzLCAyMDksIDEyMiwgMjQsIDEsIDkzLCAKLSAgICAyMjksIDEwMCwgMjQsIDEsIDkzLCAyMjQsIDU0LCAyNCwgMSwgOTMsIDIwOSwgMTUyLCAyNCwgMSwgOTMsIDI0MCwgNzcsIAotICAgIDI0LCAxLCA5MywgMjM4LCA5MCwgMjQsIDEsIDIxOCwgMTk2LCAxNzMsIDI0LCAxLCAyMTgsIDE5NiwgNjgsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI4LCAyMDksIDI0LCAxLCAyMTgsIDE5NiwgMjQxLCAxNjEsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAxMzUsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjEwLCAxLCAyNCwgMSwgMjE4LCAxOTYsIDIyMCwgMjQ4LCAyNCwgMSwgMjE4LCAxOTYsIDIyOCwgCi0gICAgMTEzLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMywgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDUwLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIyNSwgNywgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDE4LCAyNCwgMSwgMjE4LCAxOTYsIDIyMywgMjMsIDI0LCAxLCAyMTgsIAotICAgIDE5NiwgMjIyLCA0NiwgMjQsIDEsIDIxOCwgMTk2LCAyMjYsIDE4NSwgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDE3OSwgMjQsIAotICAgIDEsIDIxOCwgMTk2LCAyMTMsIDYsIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAxNjIsIDI0LCAxLCAyMTgsIDE5NiwgMjEzLCAKLSAgICAxMTMsIDI0LCAxLCAyMTgsIDE5NiwgMjI4LCAxMzcsIDI0LCAxLCAyMTgsIDE5NiwgMjI5LCAxNzAsIDI0LCAxLCAyMTgsIAotICAgIDE5NiwgMjIxLCA1NSwgMjQsIDEsIDIxOCwgMTk2LCAyMjEsIDg0LCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTcsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjAyLCAyMjksIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAxOTksIDI0LCAxLCAyMTgsIDE5NiwgMTk4LCAyNCwgCi0gICAgMSwgMjE4LCAxOTYsIDIyMSwgMTE4LCAyNCwgMSwgMjE4LCAxOTYsIDIxOCwgMjEyLCAyNCwgMSwgMjE4LCAxOTYsIDIyMSwgCi0gICAgOTksIDI0LCAxLCAyMTgsIDE5NiwgMjAzLCAyMTQsIDI0LCAxLCAyMTgsIDE5NiwgMjE5LCAyMywgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMTUsIDE0NSwgMjQsIDEsIDIxOCwgMTk2LCAyMjIsIDEwMCwgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDc1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIyOSwgMTgwLCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTMxLCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTgyLCAKLSAgICAyNCwgMSwgMjE4LCAxOTYsIDIxMiwgMjQyLCAyNCwgMSwgMjE4LCAxOTYsIDIxNywgMTg4LCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIzOSwgMTc5LCAyNCwgMSwgMjE4LCAxOTYsIDIwNCwgMTExLCAyNCwgMSwgMjE4LCAxOTYsIDIyNywgMTQ4LCAyNCwgMSwgCi0gICAgMjE4LCAxOTYsIDIyNywgMTAsIDI0LCAxLCAyMTgsIDE5NiwgMjI5LCAyNiwgMjQsIDEsIDIxOCwgMTk2LCAyMjUsIDQ0LCAKLSAgICAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgMTA3LCAyNCwgMSwgMjE4LCAxOTYsIDE5MiwgMjQsIDEsIDIxOCwgMTk2LCAyMjQsIAotICAgIDgyLCAyNCwgMSwgMjE4LCAxOTYsIDIyNSwgNTIsIDI0LCAxLCAyMTgsIDE5NiwgMjA5LCAxMzIsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjI4LCAyNDQsIDI0LCAxLCAyMTgsIDE5NiwgMjE0LCAyNTEsIDI0LCAxLCAyMTgsIDE5NiwgMjA0LCAxNjIsIDIyMywgMjQ5LCAKLSAgICAxLCAyMTAsIDIyLCAyMjMsIDI0OSwgMSwgMjIyLCAxNTEsIDIyMywgMjQ5LCAxLCAyMDIsIDI0NywgMjIzLCAyNDksIDEsIAotICAgIDIyNCwgMTEyLCAyMjMsIDI0OSwgMSwgMjQ5LCAzMiwgMjIzLCAyNDksIDEsIDI0NCwgMjEyLCAyMjMsIDI0OSwgMSwgNjMsIAotICAgIDIyMywgMjQ5LCAxLCAyMTgsIDE5MiwgMjIzLCAyNDksIDEsIDIyOSwgMTM5LCAyMjMsIDI0OSwgMSwgMjM3LCA5NSwgMjIzLCAKLSAgICAyNDksIDEsIDI0NCwgMTg4LCAyMjMsIDI0OSwgMSwgMjQ2LCA5OCwgMjIzLCAyNDksIDEsIDIyOSwgMjAwLCAyMjMsIDI0OSwgCi0gICAgMSwgMjIwLCA0NiwgMjIzLCAyNDksIDEsIDIyNSwgMTU4LCAyMjMsIDI0OSwgMSwgMjIyLCA2OCwgMjIzLCAyNDksIDEsIAotICAgIDE4NSwgMjIzLCAyNDksIDEsIDIyMCwgMTgsIDIyMywgMjQ5LCAxLCA3OCwgMjIzLCAyNDksIDEsIDIxNSwgMjI3LCAyMjMsIAotICAgIDI0OSwgMSwgMjEzLCAxMSwgMjIzLCAyNDksIDEsIDIwOSwgOTEsIDIyMywgMjQ5LCAxLCAyNDEsIDE4OSwgMjIzLCAyNDksIAotICAgIDEsIDIwNCwgMTExLCAyMjMsIDI0OSwgMSwgNzQsIDIyMywgMjQ5LCAxLCAyMjksIDI2LCAyMjMsIDI0OSwgMSwgMjI4LCAxNywgCi0gICAgMjIzLCAyNDksIDEsIDIyOCwgMTEzLCAyMjMsIDI0OSwgMSwgMjM3LCAxNDcsIDIyMywgMjQ5LCAxLCAyMTYsIDU3LCAyMjMsIAotICAgIDI0OSwgMSwgMjA5LCAxNjUsIDIyMywgMjQ5LCAxNywgMjAyLCA4NCwgMjIzLCAyNDksIDE3LCAxMDUsIDIyMywgMjQ5LCAxNywgCi0gICAgMTA4LCAyMjMsIDI0OSwgMTcsIDE0NywgMjIzLCAyNDksIDE3LCAxNDksIDIyMywgMjQ5LCAxNywgMTcwLCAyMjMsIDI0OSwgCi0gICAgMTcsIDE5NSwgMjIzLCAyNDksIDE3LCAyMTMsIDExMSwgMjIzLCAyNDksIDE3LCAxOTksIDIyMywgMjQ5LCAxNywgMjIyLCAKLSAgICA2MywgMjIzLCAyNDksIDI0NCwgMTY2LCAyMjMsIDI0OSwgNTIsIDI0NCwgMTY2LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCi0gICAgMjQxLCA3NCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDE3MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIxNCwgMTc3LCAyNDgsIAotICAgIDIxMiwgMjA2LCA4MywgMSwgMjQwLCAxMDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMjUsIDQ3LCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgMjAzLCA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjM4LCAyNDksIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDMsIAotICAgIDIzOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyOCwgMjQzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjMwLCAxMDEsIDI0OCwgCi0gICAgMjEyLCAyMDYsIDgzLCAxLCAyMzUsIDI1MywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwNCwgMTExLCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgMjAyLCAxNywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIzOCwgMTk0LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCi0gICAgMjQzLCAxMTMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDYsIDIzOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwNiwgMTcxLCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMTM1LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQ5LCAzMiwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDIwNCwgMTYzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjAzLCA0NiwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIAotICAgIDE4NSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIwNCwgMTA4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNjMsIDI0OCwgMjEyLCAKLSAgICAyMDYsIDgzLCAxLCA3OCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyMCwgMTgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA2OCwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0MSwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgNzQsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCA3NSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAxMzgsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIAotICAgIDEyNCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgMjI0LCAxNTAsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMzksIDIyNiwgMjUzLCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAyMzYsIDI0MiwgMjA4LCAxNjEsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAyMzksIDEwMiwgMjExLCA2MSwgMTE5LCAxMTcsIDIyLCAyMjksIDE5NywgMTE5LCAxMTcsIAotICAgIDIyLCAyMjksIDE5MywgMTE5LCAxMTcsIDIyLCAyMjksIDk3LCAxMTksIDExNywgMjIsIDIyOSwgNjMsIDExOSwgMTE3LCAyMiwgCi0gICAgMjI5LCAyMTgsIDExOSwgMTE3LCAyMiwgMjI5LCAyMTUsIDExOSwgMTE3LCAyMiwgMjI4LCAyMDAsIDExOSwgMTE3LCAyMiwgCi0gICAgMjI4LCAxNzIsIDExOSwgMTE3LCAyMiwgMjI5LCAxOTksIDExOSwgMTE3LCAyMiwgMjI5LCAxNTQsIDExOSwgMTE3LCAyMiwgCi0gICAgMjMwLCAxNywgMTE5LCAxMTcsIDIyLCAyMzAsIDE0LCAxMTksIDExNywgMjIsIDIyOSwgNSwgMTE5LCAxMTcsIDIyLCAyMjksIAotICAgIDIsIDExOSwgMTE3LCAyMiwgMjI5LCAyMTIsIDExOSwgMTE3LCAyMiwgMjI5LCAyMTAsIDExOSwgMTE3LCAyMiwgMjI4LCAKLSAgICAyMDIsIDExOSwgMTE3LCAyMiwgMjI4LCAyMDEsIDExOSwgMTE3LCAyMiwgMjI5LCAyMywgMTE5LCAxMTcsIDIyLCAyMjgsIAotICAgIDI0NywgMTE5LCAxMTcsIDIyLCAyMjksIDk5LCAxMTksIDExNywgMjIsIDIyOSwgOTgsIDExOSwgMTE3LCAyMiwgMjMwLCAzMiwgCi0gICAgMTE5LCAxMTcsIDIyLCAyMjksIDIxNCwgMTE5LCAxMTcsIDIyLCAyMjgsIDE2MywgMTE5LCAxMTcsIDIyLCAyMjgsIDE1NCwgCi0gICAgMTE5LCAxMTcsIDIyLCAyMzAsIDQwLCAxMTksIDExNywgMjIsIDIzMCwgMzMsIDExOSwgMTE3LCAxMDksIDIwNiwgNjEsIAotICAgIDExOSwgMTE3LCAxMDksIDIyMSwgOTAsIDExOSwgMTE3LCAxMDksIDIyNywgMjUxLCAxMTksIDExNywgMTA5LCAyMzcsIDc2LCAKLSAgICAxMTksIDExNywgMTA5LCAyMjEsIDIzMCwgMTE5LCAxMTcsIDEwOSwgMjE2LCAxNjcsIDExOSwgMTE3LCAxMDksIDIyMiwgMSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjE3LCAxMDAsIDExOSwgMTE3LCAxMDksIDIwMywgNjIsIDExOSwgMTE3LCAxMDksIDIzNiwgMjIxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMjUsIDY3LCAxMTksIDExNywgMTA5LCAyNDYsIDE3NCwgMTE5LCAxMTcsIDEwOSwgMjIzLCAyOCwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjM2LCAxNTcsIDExOSwgMTE3LCAxMDksIDIxOCwgODUsIDExOSwgMTE3LCAxMDksIDIyMSwgOTUsIAotICAgIDExOSwgMTE3LCAxMDksIDIyMywgNjUsIDExOSwgMTE3LCAxMDksIDI1MCwgMzQsIDExOSwgMTE3LCAxMDksIDIwMywgMTc4LCAKLSAgICAxMTksIDExNywgMTA5LCAyNDcsIDE1LCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMDcsIDE5OSwgMTE5LCAxMTcsIDEzMSwgCi0gICAgMjQ2LCA2NywgMjEyLCAxMywgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgMjI5LCAxNzIsIDExOSwgMTE3LCAxMzEsIDI0NiwgCi0gICAgNjcsIDIyOSwgMTMwLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMTEsIDQsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIAotICAgIDIzNiwgMTIzLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMDksIDIwNiwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDksIAotICAgIDQ0LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOCwgOSwgMjQ2LCAyMjksIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyNDYsIAotICAgIDE2MywgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMDksIDY5LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDI0MCwgNTAsIDExOSwgCi0gICAgMTE3LCAyLCAyMDMsIDEzNiwgMjIxLCA4NSwgMTE5LCAxMTcsIDIsIDIwMywgMTM2LCAyMTYsIDU5LCAxMTksIDExNywgMiwgCi0gICAgMjAzLCAxMzYsIDIwOCwgMTI0LCAxMTksIDExNywgMiwgMjAzLCAxMzYsIDI0MCwgODksIDExOSwgMTE3LCAyLCAyMDUsIAotICAgIDE3MywgMjE0LCAxNTksIDExOSwgMTE3LCAyLCAyMjUsIDYsIDIxMSwgOCwgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMjEsIAotICAgIDEzNCwgMTE5LCAxMTcsIDIsIDIzNSwgMTY3LCAyMDMsIDgxLCAxMTksIDExNywgMiwgMjAzLCAxNzcsIDExOSwgMTE3LCAyLCAKLSAgICAyNDYsIDY3LCAyMDcsIDI1MiwgMjE1LCAyMTYsIDExOSwgMTE3LCAxNywgMjAyLCA4NCwgMTE5LCAxMTcsIDE3LCAxMDUsIAotICAgIDExOSwgMTE3LCAxNywgMTA4LCAxMTksIDExNywgMTcsIDE0NywgMTE5LCAxMTcsIDE3LCAxNDksIDExOSwgMTE3LCAxNywgCi0gICAgMTcwLCAxMTksIDExNywgMTcsIDE5NSwgMTE5LCAxMTcsIDE3LCAyMTMsIDExMSwgMTE5LCAxMTcsIDE3LCAxOTksIDExOSwgCi0gICAgMTE3LCAxNywgMjIyLCA2MywgMTE5LCAxMTcsIDQyLCAyMDksIDE0NywgMTE5LCAxMTcsIDQyLCAyMzYsIDEwLCAxMTksIAotICAgIDExNywgNDIsIDIwOSwgMTUzLCAyMDksIDM0LCAxMTksIDExNywgNDIsIDIyNCwgMTEzLCAxMTksIDExNywgNDIsIDIzNiwgCi0gICAgMTIsIDIyNCwgMTEzLCAxMTksIDExNywgNDIsIDIwOSwgMTUzLCAyNDgsIDY4LCAxMTksIDExNywgNDIsIDIwOCwgNzIsIAotICAgIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjI2LCAyMzQsIDExOSwgMTE3LCAyLCAyMDMsIDEzMywgMTE5LCAxMTcsIDIsIDIzNiwgCi0gICAgMjE2LCAxMTksIDExNywgMiwgMjA5LCA1OSwgMjM2LCAyMTYsIDExOSwgMTE3LCAyLCAyMDEsIDI0NywgMjA5LCAxMDIsIAotICAgIDExOSwgMTE3LCAyLCAyMzYsIDE0MSwgMTE5LCAxMTcsIDIsIDIyMSwgMTQ4LCAxMTksIDExNywgMiwgMjAzLCAxNjksIDExOSwgCi0gICAgMTE3LCAyLCAyMjEsIDg4LCAxMTksIDExNywgMiwgMjUwLCAxOCwgMTE5LCAxMTcsIDIsIDIwNywgMTI5LCAyNDYsIDIyOCwgCi0gICAgMTE5LCAxMTcsIDIsIDIyNSwgNiwgMjA4LCAxMiwgMTE5LCAxMTcsIDIsIDIwOSwgMjA3LCAxMTksIDExNywgMiwgMjI3LCA3LCAKLSAgICAxMTksIDExNywgMiwgMjIzLCAyMDEsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMzcsIDE0MywgMjI2LCAyMTIsIDIyMSwgOTMsIAotICAgIDIyMSwgOTIsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyNDUsIDEwOSwgMjA4LCAzLCAxMTksIDExNywgMiwgMjQ2LCA2NywgCi0gICAgMjA3LCAxMjcsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAyMDcsIDEyOCwgMjQ2LCA4NiwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIAotICAgIDIxNywgMTg2LCAyNDQsIDEzNSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIyMSwgMTQxLCAyMDgsIDEzMiwgMTE5LCAxMTcsIAotICAgIDI0NiwgMzksIDIsIDIwOCwgNywgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgNDgsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAKLSAgICAyMjcsIDkzLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI3LCAyNTAsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDEzMiwgCi0gICAgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOSwgNiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIzNywgNzMsIDExOSwgMTE3LCAKLSAgICAyNDYsIDM5LCAyLCAyMjMsIDI0MiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwOSwgNDUsIDExOSwgMTE3LCAyNDYsIDM5LCAKLSAgICAyLCAyMDgsIDE3LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjE4LCAyMDUsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjksIAotICAgIDE0MiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIzNywgMTMzLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjA2LCA4MCwgMTE5LCAKLSAgICAxMTcsIDI0NiwgMzksIDIsIDI0MCwgODYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDMsIDg4LCAxMTksIDExNywgMjQ2LCAKLSAgICAzOSwgMiwgMjA3LCAyNDYsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjgsIDE1OCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIAotICAgIDIwNCwgMTUzLCAxMTEsIDEsIDE4NSwgMTExLCAxLCAyNDksIDMyLCAxMTEsIDEsIDExLCAxODUsIDExMSwgMSwgMjE4LCA5OCwgCi0gICAgMTExLCAxLCAxOTIsIDExMSwgMSwgMjI0LCAxNTgsIDExMSwgMSwgMjUwLCAxMjYsIDE5MiwgMTExLCAxLCAyNDAsIDEwOCwgCi0gICAgMTExLCAxLCAyMDYsIDg2LCAxMTEsIDEsIDIwNSwgMjMxLCAxMTEsIDEsIDIxMCwgMjIsIDExMSwgMSwgMjQ0LCAyMTIsIAotICAgIDExMSwgMSwgMTEsIDIwNywgMjQxLCAxMTEsIDEsIDExLCAyMTAsIDIyLCAxMTEsIDEsIDIwNywgMjQxLCAxMTEsIDEsIDI0NCwgCi0gICAgMTIwLCAxMTEsIDEsIDIwMSwgMjAxLCAxMTEsIDEsIDIyMiwgMTA0LCAxMTEsIDEsIDExLCAyMjEsIDIyNywgMTExLCAxLCAKLSAgICAyNTAsIDEyNiwgMjAxLCAyMDEsIDExMSwgMSwgMjIxLCAyMjcsIDExMSwgMSwgMjIxLCAyMTMsIDExMSwgMSwgMjI4LCAxMTMsIAotICAgIDExMSwgMSwgMjI2LCAxOTgsIDExMSwgMSwgMjI3LCAxNjEsIDExMSwgMSwgMjI3LCAxNTAsIDExMSwgMSwgMjA4LCAxODcsIAotICAgIDExMSwgMSwgMjQzLCAxMjEsIDExMSwgMSwgMjA4LCAxNzksIDExMSwgMSwgMjQzLCAxMjAsIDExMSwgMSwgMTczLCAxMTEsIAotICAgIDEsIDIzOSwgOCwgMTExLCAxLCAxMSwgMTczLCAxMTEsIDEsIDIxNywgMTI2LCAxMTEsIDEsIDIxNywgMTAzLCAxMTEsIDEsIAotICAgIDIyMiwgMjAzLCAxMTEsIDEsIDIyMiwgMTUyLCAxMTEsIDEsIDI1MCwgMTI2LCAyMjIsIDIwMywgMTExLCAxLCAxNTIsIDExMSwgCi0gICAgMSwgMjAzLCAxODIsIDExMSwgMSwgMjM4LCAxMTksIDExMSwgMSwgMjM4LCA5NCwgMTExLCAxLCAyMDcsIDI1MSwgMTExLCAxLCAKLSAgICAyNDEsIDIzOSwgMTExLCAxLCAyMjEsIDExLCAxMTEsIDEsIDIyMCwgMjUwLCAxMTEsIDEsIDIwOCwgMTAsIDExMSwgMSwgCi0gICAgMjQxLCAyNDksIDExMSwgMSwgMTEsIDIwOCwgMTAsIDExMSwgMSwgMTEsIDI0MSwgMjQ5LCAxMTEsIDEsIDIxNiwgMTMzLCAKLSAgICAyMDgsIDEwLCAxMTEsIDEsIDIxMywgOTAsIDExMSwgMSwgMjExLCAxNjQsIDExMSwgMSwgMjAyLCA4MCwgMTExLCAxLCAyMDIsIAotICAgIDgsIDExMSwgMSwgMjA4LCAyMCwgMTExLCAxLCAyNDEsIDI1NSwgMTExLCAxLCAxMSwgMjA4LCAyMCwgMTExLCAxLCAyMTUsIAotICAgIDM2LCAxMTEsIDEsIDIwMiwgMTE2LCAxMTEsIDEsIDIwMiwgOSwgMTExLCAxLCAyMDEsIDIzNSwgMTExLCAxLCAyMDEsIDIxNSwgCi0gICAgMTExLCAxLCAyNTAsIDEyNiwgMjAxLCAyMzUsIDExMSwgMSwgMjAxLCAyMDcsIDExMSwgMSwgMjAxLCAyMTQsIDExMSwgMSwgCi0gICAgMjA0LCAxMTEsIDExMSwgMSwgMjUxLCA3MywgMTExLCAxLCAyMzcsIDEyLCAxMTEsIDEsIDIyMywgNzAsIDExMSwgMiwgMjUwLCAKLSAgICA2NSwgMTExLCAyLCAyMTYsIDEzMywgMjA1LCAxODQsIDExMSwgMiwgMjE2LCAxMzMsIDI1MCwgNjUsIDExMSwgMjIsIDIsIAotICAgIDYzLCAxMTEsIDIyLCAyLCAyNTIsIDI1LCAxMTEsIDIyLCAyLCAyNTEsIDY5LCAxMTEsIDIyLCAyLCAyNTAsIDIzMSwgMTExLCAKLSAgICAyMiwgMiwgMjUwLCAyMjMsIDExMSwgMjIsIDIsIDc4LCAxMTEsIDIyLCAyLCAyMjAsIDE4LCAxMTEsIDIyLCAyLCAyMDQsIDAsIAotICAgIDExMSwgMjIsIDIsIDIwNCwgMTQ0LCAxMTEsIDIyLCAyLCA3NCwgMTExLCAyMiwgMiwgMjQxLCA5MiwgMTExLCAyMiwgMiwgCi0gICAgMjQxLCA3OCwgMTExLCAyMiwgMiwgMjIwLCA3MCwgMTExLCAyMiwgMiwgNzUsIDExMSwgMjIsIDIsIDIzNSwgMTcxLCAxMTEsIAotICAgIDIyLCAyLCAyMzUsIDE3MCwgMTExLCAyMiwgMiwgMjM1LCAxNjksIDExMSwgMjIsIDIsIDIzMCwgMjM0LCAxMTEsIDIyLCAyLCAKLSAgICAyMzEsIDExMCwgMTExLCAyMiwgMiwgMjMxLCA4MywgMTExLCAyMiwgMiwgMjMwLCAxOTcsIDExMSwgMjIsIDIsIDIzMSwgMjQsIAotICAgIDExMSwgMjIsIDIsIDY4LCAxMTEsIDIyLCAyLCAyMDcsIDM5LCAxMTEsIDIyLCAyLCAyMDcsIDM4LCAxMTEsIDIyLCAyLCAKLSAgICAyMDcsIDM3LCAxMTEsIDIyLCAyLCAyMDYsIDE3OCwgMTExLCAyMiwgMiwgMjA3LCAyMSwgMTExLCAyMiwgMiwgMjA2LCAyNDEsIAotICAgIDExMSwgMjIsIDIsIDIwMywgMTI0LCAxMTEsIDIyLCAyLCAyMDMsIDExLCAxMTEsIDIyLCAyLCAyNTEsIDEwOSwgMTExLCAyMiwgCi0gICAgMiwgMjUxLCAxMDUsIDExMSwgMjIsIDIsIDI0MSwgMjEsIDExMSwgMjIsIDIsIDIxNSwgMTg5LCAyNDEsIDIxLCAxMTEsIDIyLCAKLSAgICAyLCAyNDEsIDI4LCAxMTEsIDIyLCAyLCAyMTUsIDE4OSwgMjQxLCAyOCwgMTExLCAyMiwgMiwgMjUxLCA2NCwgMTExLCAyMiwgCi0gICAgMiwgMjQxLCAxNDUsIDExMSwgMjIsIDIsIDI1MCwgMzQsIDExMSwgMjIsIDIsIDIxOSwgMjE2LCAxMTEsIDIyLCAyLCAyMjMsIAotICAgIDE2MywgMTExLCAyMiwgMiwgMjIyLCAyMDUsIDExMSwgMTQzLCAyMTYsIDE2LCAxMTEsIDE0MywgMjA4LCAxNDUsIDIxNiwgCi0gICAgMTYsIDExMSwgMTQzLCA1NSwgMTExLCAxNDMsIDU2LCAxMTEsIDEsIDIwOCwgMTU5LCAxMTEsIDEsIDIwOCwgMTU4LCAxMTEsIAotICAgIDEsIDIwOCwgMTU3LCAxMTEsIDEsIDIwOCwgMTU2LCAxMTEsIDEsIDIwOCwgMTU1LCAxMTEsIDEsIDIwOCwgMTU0LCAxMTEsIAotICAgIDEsIDIwOCwgMTUzLCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE2MCwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTksIDExMSwgCi0gICAgMSwgMjE2LCAxMzMsIDIwOCwgMTU3LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1NiwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAKLSAgICAxNTUsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTUzLCA2NywgMSwgMjUwLCAxMjYsIDc0LCAxNzIsIDEsIDI1MCwgMTI2LCAKLSAgICAyMDMsIDUyLCAxMDAsIDEsIDIzNywgMTcxLCAxMDAsIDEsIDIwMywgMTk2LCAxMDAsIDEsIDIxOSwgMTg0LCAxMDAsIDEsIAotICAgIDIxMCwgNjksIDEwMCwgMSwgMjQwLCAxNzQsIDEwMCwgMSwgMjMwLCA1NCwgMTAwLCAxLCAxNTksIDEwMCwgMSwgMjQ5LCAKLSAgICAyNTUsIDEwMCwgMSwgMjQ1LCA1MSwgMTAwLCAxLCAyMDYsIDE2NCwgMTAwLCAxLCAyMzksIDc1LCAxMDAsIDEsIDE0NiwgCi0gICAgMTAwLCAxLCAyMTksIDE4NSwgMjIzLCAxNjMsIDEwMCwgMSwgMjQ1LCA1MiwgMTk0LCAxMDAsIDEsIDI0MCwgMTc1LCAyMjMsIAotICAgIDE2MywgMTAwLCAxLCAyMzAsIDU1LCAyMjYsIDE4NSwgMTAwLCAxLCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAyMDksIDExMCwgCi0gICAgMTAwLCAxLCAyMTIsIDQ1LCAyNDQsIDIsIDEwMCwgMSwgMjQ0LCAyLCAxMDAsIDEsIDIyOSwgNDgsIDEwMCwgMSwgMjEyLCAKLSAgICA0NSwgMjMwLCAxODQsIDEwMCwgMSwgMjM2LCAyMjUsIDEwMCwgMSwgMjI3LCAxNjIsIDEwMCwgMSwgMjE2LCA2MiwgMTAwLCAKLSAgICAxLCAyMjYsIDE4NSwgMTAwLCAxLCAyMjMsIDE2MywgMTAwLCAxLCAyMzAsIDE4NCwgMTAwLCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjI2LCAxODYsIDIyMywgMTYzLCAxMDAsIDEsIDIyMywgMTY0LCAyMjYsIDE4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMjI2LCAKLSAgICAxODUsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCAxODQsIDEwMCwgMSwgMjI2LCAxODYsIDMsIDI0MywgODUsIDEwMCwgMSwgCi0gICAgMjIzLCAxNjQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjMwLCAxODUsIDMsIDI0MywgODUsIDEwMCwgMSwgMjMwLCAxODUsIDMsIAotICAgIDE4NywgMjMxLCA3LCAyNSwgNTUsIDEwMCwgMSwgMjE1LCA5NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMTUsIDk0LCAzLCA3MCwgCi0gICAgNTYsIDEwMCwgMSwgMjI2LCAxODYsIDE5NCwgMTAwLCAxLCAyMjMsIDE2NCwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAxOTQsIAotICAgIDEwMCwgMSwgMjE1LCA5NCwgMTk0LCAxMDAsIDEsIDIyNiwgMTg2LCAyMjMsIDE2NCwgMTk0LCAxMDAsIDEsIDIyMywgMTY0LCAKLSAgICAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgCi0gICAgMTg1LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDIxNSwgOTQsIDMsIDI0MywgODUsIDEwMCwgMSwgMjMwLCAxODUsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIzMCwgMTg1LCAyMjMsIDE2NCwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIxMCwgNjksIDEwMCwgMSwgCi0gICAgMjE1LCA5NCwgMjEwLCA3MCwgMTQ2LCAxMDAsIDEsIDIxNSwgOTQsIDIxOSwgMTg0LCAxMDAsIDEsIDIxNSwgOTQsIDIxOSwgCi0gICAgMTg1LCAxNDYsIDEwMCwgMSwgMjEwLCA3MCwgMTk0LCAxMDAsIDEsIDIxMCwgNzAsIDIxNywgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIwNCwgMTQ0LCAxMDAsIDEsIDIwNCwgNDAsIDEwMCwgMSwgMjA0LCAxNDUsIDE0NiwgMTAwLCAxLCAyMTUsIDk0LCAyMjMsIAotICAgIDE2MywgMTAwLCAxLCAyMTUsIDk0LCAyMjYsIDE4NSwgMTAwLCAxLCAyMzAsIDU1LCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMzksIDc2LCAyMTcsIDEsIDE5NCwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDU0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgNTUsIAotICAgIDE0NiwgMTAwLCAxLCA2MywgMTAwLCAxLCAyMTIsIDQ1LCAyMTksIDE5NSwgMTAwLCAxLCAyMjAsIDk3LCAxMDAsIDEsIDc4LCAKLSAgICAxMDAsIDEsIDI1MCwgMTc2LCAxMDAsIDEsIDc1LCAxMDAsIDEsIDc0LCAxMDAsIDEsIDIzMSwgMTEwLCAxMDAsIDEsIDIxMiwgCi0gICAgMjI4LCA3NSwgMTAwLCAxLCAyMDcsIDE3LCAxMDAsIDEsIDI0MSwgMTYxLCAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgMTQ3LCAKLSAgICAxMDAsIDEsIDIxNSwgMjA5LCA3NSwgMTAwLCAxLCAyMTIsIDQ1LCAyNDEsIDE2MSwgMTAwLCAxLCAxNjMsIDc1LCAxMDAsIDEsIAotICAgIDIwMywgNTIsIDEwMCwgMSwgNjgsIDEwMCwgMSwgMjQwLCAyMzgsIDEwMCwgMSwgMjAzLCAxNDcsIDEwMCwgMSwgMTA2LCAKLSAgICAyMjMsIDE2MywgMTAwLCAxLCAxNjMsIDY4LCAxMDAsIDEsIDIxNSwgMjA5LCA2OCwgMTAwLCAxLCAyMDcsIDE4LCAxMDAsIDEsIAotICAgIDIxMiwgNDUsIDY4LCAxMDAsIDEsIDIyMCwgMTUsIDEwMCwgMSwgMjE5LCAxOTUsIDEwMCwgMSwgMjE5LCAyMTYsIDEwMCwgMSwgCi0gICAgMjA0LCAxMTEsIDEwMCwgMSwgMjA0LCAwLCAxMDAsIDEsIDIwNCwgMzAsIDEwMCwgMSwgMjA0LCA1MywgMTAwLCAxLCAyMDMsIAotICAgIDIzMCwgMTAwLCAxLCAyMjMsIDcyLCA2OCwgMTAwLCAxLCAyMjMsIDcyLCA3OCwgMTAwLCAxLCAyMjMsIDcyLCA3NSwgMTAwLCAKLSAgICAxLCAyMjMsIDcyLCA2MywgMTAwLCAxLCAyMTgsIDIzNSwgMjUwLCAyMzEsIDEwMCwgMSwgMjE4LCAyMzUsIDI1MCwgMjQ3LCAKLSAgICAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgOTIsIDEwMCwgMSwgMjEyLCA0NSwgMjUwLCAyMzEsIDEwMCwgMSwgMjEyLCA0NSwgCi0gICAgMjIwLCAzMSwgMTAwLCAxLCAxMjUsIDIyNiwgMTg1LCAxMDAsIDI1MSwgODgsIDQ5LCAyMzYsIDEwNiwgMjE0LCAxNzIsIAotICAgIDEwMCwgMjUxLCA4OCwgMjI0LCAxNTAsIDIzNiwgMTA2LCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCA1MCwgMjM2LCAxMDYsIAotICAgIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDEyNCwgODAsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDIyNCwgMTUwLCA4MCwgCi0gICAgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMTM4LCA4MCwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjE0LCAKLSAgICAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjI3LCAyMTMsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIAotICAgIDIwOSwgMjI2LCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIwOSwgMjQ4LCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDE4OCwgCi0gICAgMTEzLCAxMDAsIDI1MSwgODgsIDI1MCwgNDAsIDIzNSwgMjA2LCAxMTMsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjA5LCAKLSAgICAyMjcsIDExMywgMTAwLCAyNTEsIDg4LCAxMzgsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDIwOCwgMjQ0LCAxNjUsIDEwMCwgCi0gICAgMjUxLCA4OCwgMTM4LCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAxMzgsIDE2MywgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgCi0gICAgMTM4LCAyNDMsIDg1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjQ2LCA2MSwgMTAwLCAyNTEsIDg4LCAxMzgsIDIyNywgMTE0LCAKLSAgICAxMDAsIDI1MSwgODgsIDEzOCwgMjA0LCA3NSwgMTAwLCAyNTEsIDg4LCAxMzgsIDIwNiwgMzgsIDEwMCwgMjUxLCA4OCwgCi0gICAgMTI0LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDgsIDI0NCwgMTY1LCAxMDAsIDI1MSwgODgsIDEyNCwgMjM3LCAyNTMsIAotICAgIDEwMCwgMjUxLCA4OCwgMTI0LCAxNjMsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIDEyNCwgMjQzLCA4NSwgMTAwLCAyNTEsIAotICAgIDg4LCAxMjQsIDI0NiwgNjEsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMjcsIDExNCwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwNCwgCi0gICAgNzUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMDYsIDM4LCAxMDAsIDI1MSwgODgsIDEyNCwgNDcsIDEwMCwgMiwgMTU4LCAzLCAKLSAgICAyNDUsIDEzMCwgMTAwLCAyMDksIDY4LCAxLCAyMTQsIDE1MCwgMTAwLCA1MiwgODIsIDEwMCwgMjE3LCAxNzksIDI0NiwgCi0gICAgMTI2LCAyMzksIDEwMiwgMjExLCA2MSwgMjEyLCAyMTUsIDIzOSwgMTU4LCAxLCAyMTksIDIwMSwgMjEyLCAyMTUsIDIzOSwgCi0gICAgMTU4LCAyNDUsIDE5MCwgMjE5LCAyMDEsIDIxMiwgMjE1LCAyMzksIDE1OCwgMTIxLCAyMTEsIDc1LCAyMTIsIDIxNSwgMjM5LCAKLSAgICAxNTgsIDExMiwgMjExLCA3NSwgNjAsIDMxLCAxNiwgMjE3LCAxOTUsIDYwLCAzMSwgMTYsIDI0NCwgMTQ2LCA2MCwgMzEsIAotICAgIDE2LCAyMTgsIDIzOSwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjQzLCAKLSAgICAxNzEsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMDYsIDczLCAyNDMsIDE3MSwgNjAsIAotICAgIDMxLCAxNiwgMjI5LCAyMjEsIDYwLCAzMSwgMTYsIDIxMCwgODYsIDYwLCAzMSwgMTYsIDIxOSwgODMsIDYwLCAzMSwgMTYsIAotICAgIDIwMiwgMjE5LCA2MCwgMzEsIDE2LCAyMDIsIDIyMCwgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDIyOCwgMjI2LCA2MCwgMzEsIAotICAgIDE2LCAyNTAsIDE3MSwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDI0MCwgMjA2LCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjA5LCAKLSAgICAxNjMsIDYwLCAzMSwgMTYsIDIyOSwgMTc2LCA2MCwgMzEsIDE2LCAyNTAsIDE2MSwgNjAsIDMxLCAxNiwgMjUwLCAxNjIsIAotICAgIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyMTAsIDkzLCA2MCwgMzEsIDE2LCAyMDksIDUwLCA2MCwgMzEsIDE2LCAyMjAsIDQyLCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjM4LCAyMywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIxNywgMTk0LCA2MCwgMzEsIAotICAgIDE2LCAyNDYsIDE5MCwgNjAsIDMxLCAxNiwgMjA2LCA2MiwgNjAsIDMxLCAxNiwgMjMwLCAyMDYsIDI1MCwgMTI0LCA2MCwgCi0gICAgMzEsIDE2LCAyMjksIDE3OCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgCi0gICAgMjE0LCAyMTAsIDYwLCAzMSwgMTYsIDIxOSwgNzMsIDYwLCAzMSwgMTYsIDIxMSwgODQsIDI1MCwgMTY0LCA2MCwgMzEsIDE2LCAKLSAgICAyMTksIDE5MSwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIwNiwgNzIsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyNTAsIDE2NSwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDI1MCwgMTU5LCA2MCwgMzEsIDE2LCAyMjksIDM4LCA2MCwgMzEsIDE2LCAyMTYsIDY5LCAKLSAgICA2MCwgMzEsIDE2LCAyMTgsIDE2NSwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIwOCwgMjE3LCA2MCwgMzEsIDE2LCAyNTAsIAotICAgIDIyOSwgNjAsIDMxLCAxNiwgMjE0LCAxNTMsIDYwLCAzMSwgMTYsIDIxMCwgOTcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKLSAgICAyMTAsIDk3LCAyMjQsIDIyMSwgMjExLCA4MiwgNjAsIDMxLCAxNiwgMjE5LCAxODYsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKLSAgICAyMDksIDg2LCA2MCwgMzEsIDE2LCAyMjcsIDIwMCwgNjAsIDMxLCAxNiwgMjQyLCAyLCA2MCwgMzEsIDE2LCAyMDgsIDg3LCAKLSAgICA2MCwgMzEsIDE2LCAyMDksIDEzNCwgNjAsIDMxLCAxNiwgMjI4LCAyMjksIDYwLCAzMSwgMTYsIDI1MCwgMTcxLCAyNDAsIAotICAgIDIwNiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjMxLCA2MiwgNjAsIAotICAgIDMxLCAxNiwgMjA4LCA1NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOSwgMjI0LCAyMDgsIDU2LCA2MCwgMzEsIDE2LCAKLSAgICAyMTksIDExLCA2MCwgMzEsIDE2LCAyMTcsIDE5OSwgNjAsIDMxLCAxNiwgMjI5LCA3LCA2MCwgMzEsIDE2LCAyNDYsIDExMCwgCi0gICAgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIxNiwgMTc3LCA2MCwgMzEsIDE2LCAyMTksIDg2LCAyNTAsIDEyNCwgNjAsIDMxLCAKLSAgICAxNiwgMjE5LCA4NCwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIzNSwgMTYwLCA2MCwgMzEsIDE2LCAyMjMsIDgyLCA2MCwgMzEsIAotICAgIDE2LCAyMTgsIDIxNywgNjAsIDMxLCAxNiwgMjI5LCA4LCAyNTEsIDksIDYwLCAzMSwgMTYsIDIwOCwgNTcsIDI1MSwgOSwgCi0gICAgNjAsIDMxLCAxNiwgMjExLCA1NSwgNjAsIDMxLCAxNiwgMjM3LCAyNDAsIDYwLCAzMSwgMTYsIDIzMCwgMjA2LCAyMjIsIAotICAgIDIyNiwgNjAsIDMxLCAxNiwgMjIwLCA0MiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyMjIsIDIyNiwgNjAsIAotICAgIDMxLCAxNiwgMjE4LCAyMTYsIDYwLCAzMSwgMTYsIDIyOCwgMjQ4LCA2MCwgMzEsIDE2LCAyMTgsIDIxNSwgNjAsIDMxLCAxNiwgCi0gICAgMjI4LCAyMjgsIDYwLCAzMSwgMTYsIDIxOSwgMTIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMjksIDE3NywgMjIyLCAyMjcsIAotICAgIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMjksIDE3OCwgMjIyLCAyMjcsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMDIsIDIxNywgCi0gICAgNjAsIDMxLCAxNiwgMjUwLCAxNjIsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNTAsIDE2MywgMjEwLCA5NCwgMjIyLCAyMjYsIAotICAgIDYwLCAzMSwgMTYsIDIwMiwgMjE4LCA2MCwgMzEsIDE2LCAyMjgsIDIyNywgNjAsIDMxLCAxNiwgMjQxLCAxMjEsIDYwLCAzMSwgCi0gICAgMTYsIDI0NiwgMTkxLCA2MCwgMzEsIDE2LCAyMjQsIDEyMiwgMjMwLCAyMDUsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDIyMiwgCi0gICAgMjI2LCA2MCwgMzEsIDE2LCAyMTgsIDE2NSwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIxNywgMjAwLCAyMjIsIDIyNiwgNjAsIAotICAgIDMxLCAxNiwgMjIwLCAzOCwgNjAsIDMxLCAxNiwgMjUwLCAxODksIDYwLCAzMSwgMTYsIDIyNiwgMTk1LCA2MCwgMzEsIDE2LCAKLSAgICAyMTksIDg0LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE5LCA4NiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MCwgMjQ0LCAKLSAgICAyMTksIDg1LCA2MCwgMzEsIDE2LCAyMjgsIDEzNSwgNjAsIDMxLCAxNiwgMjUwLCAxOTAsIDYwLCAzMSwgMTYsIDIwOCwgNTcsIAotICAgIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDEsIDEyNCwgNjAsIDMxLCAxNiwgMjEwLCA5NywgMjIyLCAyMjYsIDYwLCAzMSwgCi0gICAgMTYsIDIxMCwgODcsIDYwLCAzMSwgMTYsIDI0NiwgMTEwLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQxLCA0MywgNjAsIDMxLCAKLSAgICAxNiwgMjE0LCAxNTQsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMDMsIDE2MywgMjI5LCAzOCwgNjAsIDMxLCAxNiwgMjA4LCAKLSAgICA1NCwgNjAsIDMxLCAxNiwgMjE3LCAyMDEsIDYwLCAzMSwgMTYsIDIwOCwgNTgsIDYwLCAzMSwgMTYsIDIwOCwgNTUsIDYwLCAKLSAgICAzMSwgMTYsIDIxNywgMTk4LCA2MCwgMzEsIDE2LCAyMDgsIDUzLCA2MCwgMzEsIDE2LCAyMTcsIDE5NywgNjAsIDMxLCAxNiwgCi0gICAgMjM4LCAyMiwgNjAsIDMxLCAxNiwgMjUwLCAxMTYsIDYwLCAzMSwgMTYsIDI0MCwgMjQ0LCAyNTAsIDExNiwgNjAsIDMxLCAKLSAgICAxNiwgMjE5LCAxODYsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMDksIDg1LCAyNDEsIDEsIDYwLCAzMSwgMTYsIDIwOSwgODUsIAotICAgIDI0MCwgMjA1LCA2MCwgMzEsIDE2LCAyMDksIDg3LCAyNTAsIDE2NiwgNjAsIDMxLCAxNiwgMjA5LCA3OSwgMjMwLCAxOSwgCi0gICAgMjUwLCAxNTgsIDYwLCAzMSwgMTYsIDIyOSwgMjIzLCA2MCwgMzEsIDE2LCAyNDEsIDgwLCA2MCwgMzEsIDE2LCAyMDMsIDE0LCAKLSAgICAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjAzLCAxNCwgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIxMSwgODMsIDYwLCAzMSwgMTYsIAotICAgIDIyOSwgMzksIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyNDMsIDE3MiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDIyOCwgMjMwLCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIDI1MSwgOSwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIDIyMiwgMjI2LCAKLSAgICA2MCwgMzEsIDE2LCAyNTAsIDE2NSwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI1MCwgMTY3LCA2MCwgMzEsIDE2LCAyNDMsIAotICAgIDE3MSwgNjAsIDMxLCAxNiwgMjA4LCA2OCwgNjAsIDMxLCAxNiwgMjA5LCAxMjUsIDYwLCAzMSwgMTYsIDIyOCwgMjUyLCA2MCwgCi0gICAgMzEsIDE2LCAyMjcsIDIwNSwgMjQxLCA3MywgMjQ2LCAxMDAsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyNDIsIDMsIDI0NiwgCi0gICAgMTAxLCA2MCwgMzEsIDE2LCAyMjcsIDIwNSwgMjA4LCA3MSwgMjQ2LCAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMDksIAotICAgIDEzNiwgMjQ2LCAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMzEsIDU3LCAyNDYsIDEwMCwgNjAsIDMxLCAxNiwgMjM4LCAKLSAgICAyMywgMjIyLCAyMjcsIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyMzgsIDIzLCAyMTksIDc0LCAyNTAsIDExMiwgNjAsIDMxLCAKLSAgICAxNiwgMjM4LCAyMywgMjE5LCA3NCwgMjQ0LCA2LCA2MCwgMzEsIDE2LCAyNDMsIDE5NiwgNjAsIDMxLCAxNiwgMjQzLCAxOTcsIAotICAgIDIxOSwgNzQsIDI1MCwgMTEzLCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjQzLCAxOTcsIDIxOSwgNzQsIDI1MCwgMTEzLCAKLSAgICAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjQzLCAxOTcsIDIxOSwgNzQsIDI0NCwgNiwgNjAsIDMxLCAxNiwgMjA4LCA3NiwgNjAsIAotICAgIDMxLCAxNiwgMjUwLCAxMTcsIDYwLCAzMSwgMTYsIDIzMSwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjE5LCA2MCwgMzEsIDE2LCAKLSAgICAyNTEsIDc1LCAyMTgsIDUyLCAyNTAsIDExOCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjUwLCAxMTUsIDYwLCAzMSwgMTYsIAotICAgIDI1MSwgNzUsIDI1MCwgMTE4LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyMjQsIDIxNSwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgCi0gICAgMjI0LCAyMjYsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIzOCwgMjQsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIzOCwgMjEsIDYwLCAKLSAgICAzMSwgMTYsIDI1MSwgNzUsIDIxOCwgNTIsIDIzOCwgMjQsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIxNywgMjA3LCAyMzUsIAotICAgIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjUxLCAxMSwgMjE3LCAyMDcsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIAotICAgIDg0LCAyNDQsIDUsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyNTEsIDExLCAyNDQsIDUsIDIzNSwgMTU4LCA2MCwgCi0gICAgMzEsIDE2LCAyMjUsIDg0LCAyMDgsIDYzLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjA4LCA3NywgNjAsIDMxLCAKLSAgICAxNiwgMjI1LCA4NCwgMjA5LCAxMzAsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMDksIDEzMCwgMjI3LCAyMDksIAotICAgIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMjcsIDIwOSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIAotICAgIDIxOCwgOTUsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzAsIDIxMywgMjA5LCAxNTYsIDIzNSwgMTU5LCA2MCwgMzEsIDE2LCAKLSAgICAyNTAsIDE2MywgMjA5LCAxNTYsIDIzNSwgMTU5LCA2MCwgMzEsIDE2LCAyNDAsIDgwLCAyMDksIDEyNywgNjAsIDMxLCAxNiwgCi0gICAgMjQwLCA4MCwgMjI0LCA0NiwgNjAsIDMxLCAxNiwgMjQwLCA4MCwgMjQzLCAyMDIsIDYwLCAzMSwgMTYsIDIyNSwgODQsIAotICAgIDIwNiwgNjYsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMTcsIDIwNiwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIAotICAgIDIyNSwgODQsIDIxOCwgOTUsIDIwOSwgMTMwLCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjM4LCAxOSwgMjIzLCAxNjQsIDI1MCwgCi0gICAgMTY2LCA2MCwgMzEsIDE2LCAyMzgsIDE5LCAyMjMsIDE2NCwgMjQzLCAxNzAsIDYwLCAzMSwgMTYsIDI0MSwgOTAsIDIzMCwgCi0gICAgMTksIDIzOSwgMTEwLCAyMDUsIDE3MSwgNjAsIDMxLCAxNiwgMjMxLCA2MywgNjAsIDMxLCAxNiwgMjMxLCA2MSwgNjAsIDMxLCAKLSAgICAxNiwgMjM5LCAxMTAsIDI1MCwgMTI1LCAyNDQsIDQsIDIzNSwgMTU3LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIAotICAgIDE4NSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjMsIDgyLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjIzLCAKLSAgICA3NywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDIzOSwgCi0gICAgMTEwLCAyMTIsIDY0LCAyNDMsIDIxNiwgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjI5LCAKLSAgICAyMDEsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjAyLCAxNywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgCi0gICAgMjE3LCAyMjIsIDEwMSwgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgMjIyLCAxMDEsIDI1MCwgCi0gICAgMjAyLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjI1LCAxMjgsIDI0NiwgMTAyLCAyNDMsIDIwMiwgNjAsIDMxLCAxNiwgMjM5LCAKLSAgICAxMTAsIDIyNSwgMTI4LCAyNDYsIDEwMiwgMjI0LCA0NiwgNjAsIDMxLCAxNiwgMjQwLCAyNywgMjEyLCA2NCwgMjQ2LCAxMDIsIAotICAgIDIwNiwgNjUsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMTIsIDY0LCAyNDYsIDEwMiwgMjEwLCA5OCwgNjAsIDMxLCAxNiwgCi0gICAgMjM5LCAxMTAsIDIyMiwgMjI5LCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgMjAxLCAyNDEsIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAKLSAgICAyMjksIDM3LCA2MCwgMzEsIDE2LCAyNDYsIDEwMywgMjExLCAyMTksIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMzUsIDIwNiwgCi0gICAgMjAzLCAxMywgMjA5LCAxMzEsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDEsIDkxLCAyNTAsIDE5MSwgNjAsIDMxLCAxNiwgCi0gICAgMjAzLCAxMywgMjA4LCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDIwOCwgNjQsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAKLSAgICAyMDksIDEzMSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDI1MCwgMTY4LCAyNDIsIDMsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAKLSAgICAyNDMsIDIxMCwgMjI0LCA0NCwgMjA5LCAxMzUsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjQzLCAxOTMsIAotICAgIDI0MCwgMjE4LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIDIwOCwgNzQsIDIyMCwgNDgsIDI0MywgMTA1LCA2MCwgCi0gICAgMzEsIDE2LCAyMDMsIDEzLCAyNTAsIDE2OCwgMjQyLCAzLCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjAzLCAxMywgMjI0LCAKLSAgICA0NCwgMjA5LCAxMzUsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyNDMsIDE5MywgMjQwLCAyMTgsIDI0MywgCi0gICAgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyMDgsIDc0LCAyMjAsIDQ4LCAyNDMsIDEwNSwgNjAsIDMxLCAxNiwgMjM4LCAKLSAgICAxNzUsIDI0MywgMjA5LCA2MCwgMzEsIDE2LCAyMzgsIDE3NSwgMjAzLCAxMiwgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDI1MCwgCi0gICAgMTY4LCAyMjQsIDEyMywgNjAsIDMxLCAxNiwgMjQzLCAyMTgsIDI1MCwgMTY4LCAyMjQsIDI1NSwgNjAsIDMxLCAxNiwgMjQzLCAKLSAgICAyMTgsIDI0MywgMTcxLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjA5LCA3NywgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgCi0gICAgNzcsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIDc4LCAyNDMsIDE1NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgCi0gICAgNzgsIDIwOCwgNjUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyMDksIDc4LCAyMDksIDEyMywgNjAsIDMxLCAxNiwgMjEyLCAKLSAgICAxMzAsIDI1MCwgODgsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyNTAsIDg5LCAyNDMsIDE1NSwgNjAsIDMxLCAxNiwgMjEyLCAKLSAgICAxMzAsIDI1MCwgODksIDIwOCwgNjUsIDYwLCAzMSwgMTYsIDIxMiwgMTMwLCAyNTAsIDg5LCAyMDksIDEyMywgNjAsIDMxLCAKLSAgICAxNiwgMjQzLCAxOTQsIDIzOCwgMTU2LCA2MCwgMzEsIDE2LCAyNDMsIDIwMSwgMjE5LCAyMTYsIDYwLCAzMSwgMTYsIDIxMSwgCi0gICAgNzEsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAxODUsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMDUsIDE3MSwgNjAsIDMxLCAKLSAgICAxNiwgMjUwLCAxMDksIDIzOSwgOCwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDI0MywgMjMzLCA2MCwgMzEsIDE2LCAyNTAsIAotICAgIDEwOSwgMjI5LCAyMDEsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMDIsIDE3LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjIyLCAKLSAgICAxMDAsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgMjI0LCAyMjUsIDYwLCAzMSwgMTYsIDIyOSwgMTc4LCAyMjIsIAotICAgIDIyNywgMjI0LCAyMjUsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIyOSwgCi0gICAgMTc4LCAyMjIsIDIyNywgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIyOSwgMzksIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDIzLCAyMjIsIDIyNywgMjI5LCAyMjAsIDMxLCAxNiwgMjEyLCAxMjAsIDI0OCwgMjI2LCAzMSwgMTYsIDUyLCAyNDgsIDIyNiwgCi0gICAgMzEsIDE2LCA0NiwgMjQ4LCAyMjYsIDMxLCAxNiwgMjE2LCA3NCwgNDYsIDI0OCwgMjI2LCAzMSwgMTYsIDI0NCwgMTQzLCAKLSAgICAyNDgsIDIyNiwgMzEsIDE2LCAyMTIsIDIyOCwgMjQ4LCAyMjYsIDMxLCAxNiwgNDksIDIxNiwgMTAxLCA1NCwgMzEsIDE2LCAKLSAgICA1MCwgMjE2LCAxMDEsIDU0LCAzMSwgMTYsIDIxNiwgMTAxLCAyNDMsIDgzLCAzMSwgMTYsIDI0NCwgMTg1LCAyMTQsIDE1NywgCi0gICAgMzEsIDE2LCAyNDQsIDIxMywgMjQ3LCA0NSwgMzEsIDE2LCAyMTQsIDE1NywgMzEsIDE2LCAyNDUsIDI1MCwgMzEsIDE2LCAKLSAgICAyMTYsIDk5LCAyNDAsIDE1LCAzMSwgMTYsIDIxNiwgOTksIDI0MCwgMTQsIDMxLCAxNiwgMjE2LCA5OSwgMjQwLCAxMywgMzEsIAotICAgIDE2LCAyNDAsIDM2LCAzMSwgMTYsIDI0MCwgMzcsIDU2LCAzMSwgMTYsIDI0NywgMjE2LCA4MiwgMzEsIDE2LCAyNDcsIDgyLCAKLSAgICAzMSwgMTYsIDI0NywgMjI4LCAzMSwgMTYsIDE1NSwgMzEsIDE2LCAyMjAsIDI4LCAyMTEsIDEwMiwgMzEsIDE2LCAyMDcsIAotICAgIDEzMywgMjExLCAxMDIsIDMxLCAxNiwgMjA5LCAyOSwgMjExLCAxMDIsIDMxLCAxNiwgMjM5LCAxNDYsIDIxMSwgMTAyLCAzMSwgCi0gICAgMTYsIDIzOSwgMjMyLCAyMTEsIDEwMiwgMzEsIDE2LCAyMTIsIDg3LCAyMTEsIDEwMiwgMzEsIDE2LCAyMTIsIDg1LCAyMzksIAotICAgIDEyNywgMzEsIDE2LCAyMzksIDE0NCwgMjM5LCAxMjcsIDMxLCAxNiwgMjM5LCA3NiwgMjQ2LCAzMCwgMzEsIDE2LCAyMzksIAotICAgIDc2LCAyNDYsIDMxLCAyMTksIDIxOCwgMjUxLCAwLCAzMSwgMTYsIDIzOSwgNzYsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNDgsIAotICAgIDIxMSwgMzEsIDE2LCAyNDcsIDEyNiwgMjQ2LCAzMCwgMzEsIDE2LCAyNDAsIDE3NSwgMjQ2LCAzMCwgMzEsIDE2LCAyNDAsIAotICAgIDE3NSwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI1MSwgMCwgMzEsIDE2LCAyNDAsIDE3NSwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI0OCwgCi0gICAgMjExLCAzMSwgMTYsIDI0MiwgNDcsIDI0NiwgMjksIDMxLCAxNiwgMjQyLCA0NywgMjQ2LCAyOCwgMzEsIDE2LCAyMjMsIAotICAgIDIyNiwgMjI1LCAxOSwgMjE2LCA4NSwgMzEsIDE2LCA1MiwgMjEzLCA1NiwgMzEsIDE2LCA1MiwgMjM5LCAyMTYsIDMxLCAxNiwgCi0gICAgMjM5LCAyMTcsIDIwNiwgMjI0LCAzMSwgMTYsIDIzOSwgMjE3LCAyNDIsIDcwLCAzMSwgMTYsIDIyMywgNjYsIDIwNiwgMjI0LCAKLSAgICAzMSwgMTYsIDIyMywgNjYsIDI0MiwgNzAsIDMxLCAxNiwgMjEzLCA1NywgMjA2LCAyMjQsIDMxLCAxNiwgMjEzLCA1NywgCi0gICAgMjQyLCA3MCwgMzEsIDE2LCAyMTcsIDU2LCAxNDMsIDIxMywgNTYsIDMxLCAxNiwgMjE3LCA1NiwgMTQzLCAyMzksIDIxNiwgCi0gICAgMzEsIDE2LCAyNDUsIDIzMCwgMjA4LCAyMjEsIDMxLCAxNiwgMjQ1LCA3OCwgMjA4LCAyMjEsIDMxLCAxNiwgMjE5LCAyMTgsIAotICAgIDI1MSwgMCwgMzEsIDE2LCAyMTksIDIxOCwgMjQ4LCAyMTEsIDMxLCAxNiwgMjE3LCAzNywgMjUxLCAwLCAzMSwgMTYsIDIxNywgCi0gICAgMzcsIDI0OCwgMjExLCAzMSwgMTYsIDIyMywgMjI5LCAyMTYsIDg1LCAzMSwgMTYsIDIwNCwgMzEsIDIxNiwgODUsIDMxLCAKLSAgICAxNiwgMTYyLCAyMTYsIDg1LCAzMSwgMTYsIDIxNywgNTYsIDIxNiwgODUsIDMxLCAxNiwgMjQxLCAxMzksIDIxNiwgODUsIAotICAgIDMxLCAxNiwgMjEyLCA4MSwgMjE2LCA4NSwgMzEsIDE2LCAyMDksIDUxLCAyMTYsIDg1LCAzMSwgMTYsIDIxMiwgNzMsIDIxNiwgCi0gICAgODUsIDMxLCAxNiwgMTE4LCAyMzYsIDEyLCAyMDcsIDE0OSwgMjE2LCA4NSwgMzEsIDE2LCAyMDMsIDE5NywgMjIxLCAxNTYsIAotICAgIDMxLCAxNiwgOTEsIDIyMSwgMTU2LCAzMSwgMTYsIDI0NiwgNjIsIDIwMywgMTk3LCAyMjEsIDE1NiwgMzEsIDE2LCA1MSwgCi0gICAgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAxNiwgNTEsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgCi0gICAgMTU3LCAxMTIsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDExMiwgMjQ4LCA0MywgMzEsIDE2LCAyMDgsIAotICAgIDg2LCAyMjEsIDE1NywgNDksIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDQ5LCAyNDgsIDQzLCAzMSwgCi0gICAgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA1MCwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNTAsIDI0OCwgCi0gICAgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDEyMSwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgCi0gICAgMTIxLCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAxMTIsIDUwLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgCi0gICAgODYsIDIyMSwgMTU3LCAxMTIsIDUwLCAyNDgsIDQzLCAzMSwgMTYsIDIyNCwgMzAsIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgCi0gICAgMTYsIDIyNCwgMzAsIDIyMSwgMTU3LCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgODMsIDIyMSwgMTU3LCAxMjEsIDIwNCwgMzMsIAotICAgIDMxLCAxNiwgMjA4LCA4MywgMjIxLCAxNTcsIDEyMSwgMjQ4LCA0MywgMzEsIDE2LCAyMTksIDc3LCAyMjEsIDE1NiwgMzEsIAotICAgIDE2LCAyMDUsIDE4MywgMjIxLCAxNTYsIDMxLCAxNiwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjIxLCA0OSwgMjIxLCAKLSAgICAxNTYsIDMxLCAxNiwgMjQ2LCAxLCAyMjEsIDE1NywgMjA0LCAzMywgMzEsIDE2LCAyNDYsIDEsIDIyMSwgMTU3LCAyNDgsIAotICAgIDQzLCAzMSwgMTYsIDI0NywgMjE0LCAzMSwgMTYsIDIwNCwgMzEsIDIyMSwgMTYwLCAzMSwgMTYsIDE2MiwgMjIxLCAxNjAsIAotICAgIDMxLCAxNiwgMjE3LCA1NiwgMjIxLCAxNjAsIDMxLCAxNiwgMjQxLCAxMzksIDIyMSwgMTYwLCAzMSwgMTYsIDIxMiwgODEsIAotICAgIDIyMSwgMTYwLCAzMSwgMTYsIDIwOSwgNTEsIDIyMSwgMTYwLCAzMSwgMTYsIDIxMiwgNzMsIDIyMSwgMTYwLCAzMSwgMTYsIAotICAgIDExOCwgMjM2LCAxMiwgMjA3LCAxNDksIDIyMSwgMTYwLCAzMSwgMTYsIDM5LCAyMTEsIDc3LCAzMSwgMTYsIDM5LCAyMTEsIAotICAgIDE4NCwgMjExLCA3NywgMzEsIDE2LCAzOSwgMjA4LCA5NCwgMzEsIDE2LCAzOSwgMjA4LCA5MywgMzEsIDE2LCAzOSwgMjA4LCAKLSAgICA5MiwgMzEsIDE2LCAyNDAsIDAsIDIwOCwgOTQsIDMxLCAxNiwgMjQwLCAwLCAyMDgsIDkzLCAzMSwgMTYsIDI0MCwgMCwgCi0gICAgMjA4LCA5MiwgMzEsIDE2LCAzOSwgMjUwLCAzMSwgMjQzLCA4NSwgMzEsIDE2LCAzOSwgMjM5LCAyMjQsIDMxLCAxNiwgMzksIAotICAgIDIzOSwgMjIzLCAzMSwgMTYsIDM5LCAyMzksIDIyMiwgMzEsIDE2LCAzOSwgMjM5LCAyMjEsIDMxLCAxNiwgMzksIDIzOSwgCi0gICAgMjIwLCAzMSwgMTYsIDI0OCwgMTQyLCAyNDgsIDE1OSwgMzEsIDE2LCAyNDEsIDg0LCAyNDgsIDE1OSwgMzEsIDE2LCAyNDgsIAotICAgIDE0MiwgMjA4LCAyNTAsIDMxLCAxNiwgMjQxLCA4NCwgMjA4LCAyNTAsIDMxLCAxNiwgMjQ4LCAxNDIsIDIxMiwgMzcsIDMxLCAKLSAgICAxNiwgMjQxLCA4NCwgMjEyLCAzNywgMzEsIDE2LCAyNDgsIDE0MiwgMjE4LCAxNzQsIDMxLCAxNiwgMjQxLCA4NCwgMjE4LCAKLSAgICAxNzQsIDMxLCAxNiwgMzksIDI1MSwgMTM4LCAzMSwgMTYsIDM5LCAyMTEsIDEwNSwgMzEsIDE2LCAzOSwgMjA5LCAxNDAsIAotICAgIDMxLCAxNiwgMzksIDIxMSwgMTA2LCAzMSwgMTYsIDM5LCAyMjUsIDk2LCAzMSwgMTYsIDM5LCAyMjUsIDk1LCAzMSwgMTYsIAotICAgIDM5LCAyNTEsIDEzNywgMzEsIDE2LCAzOSwgMjI3LCAyLCAzMSwgMTYsIDI1MCwgMTAwLCAyMDYsIDIyNCwgMzEsIDE2LCAKLSAgICAyNTAsIDEwMCwgMjQyLCA3MCwgMzEsIDE2LCAzOSwgMjQzLCAxMDAsIDMxLCAxNiwgMzksIDIxNSwgMjQ5LCAzMSwgMTYsIAotICAgIDM5LCAyMzksIDIwNiwgMzEsIDE2LCAzOSwgMjEyLCAzMywgMzEsIDE2LCAzOSwgMjQ4LCAxMjAsIDMxLCAxNiwgMzksIDUyLCAKLSAgICAyMDgsIDE1MCwgMzEsIDE2LCAzOSwgMjA4LCA3MCwgMjA4LCAxNTAsIDMxLCAxNiwgMjE1LCAyNTQsIDMxLCAxNiwgMjExLCAKLSAgICAwLCAzMSwgMTYsIDIwMiwgMTU5LCAzMSwgMTYsIDIxOCwgMTY2LCAzMSwgMTYsIDIyNCwgMjA2LCAzMSwgMTYsIDIzOSwgCi0gICAgMTU1LCAzMSwgMTYsIDI0NSwgMTQwLCAzMSwgMTYsIDI0NCwgNjIsIDMxLCAxNiwgMjM4LCAxNCwgMjIxLCAxNjEsIDIxMiwgCi0gICAgNTcsIDMxLCAxNiwgMjM4LCAxNCwgMjIxLCAxNjEsIDIyMSwgMTkyLCAyMTIsIDU3LCAzMSwgMTYsIDIwOCwgMTIwLCAzMSwgCi0gICAgMTYsIDIwNywgMTc1LCAzMSwgMTYsIDIzMCwgMjM5LCAyMDcsIDE3NSwgMzEsIDE2LCAyMDcsIDE3NiwgMjEyLCA1NywgMzEsIAotICAgIDE2LCAyMDcsIDE3NiwgMjA2LCAyMjQsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMzEsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgCi0gICAgMjgsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjcsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjYsIDMxLCAxNiwgMjE5LCAKLSAgICAyMzQsIDIxMSwgMjUsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjQsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjMsIDMxLCAKLSAgICAxNiwgMjE5LCAyMzQsIDIxMSwgMjIsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjEsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgCi0gICAgMzAsIDMxLCAxNiwgMjE5LCAyMzQsIDIxMSwgMjksIDMxLCAxNiwgMjM3LCA3NSwgMzEsIDE2LCAyMjIsIDIzOCwgMzEsIDE2LCAKLSAgICAyNDEsIDg0LCA3NiwgMjExLCA2NywgMzEsIDE2LCAyNDQsIDU1LCAyMTIsIDU3LCAzMSwgMTYsIDM5LCAxMjEsIDI0NywgCi0gICAgMjQwLCAzMSwgMTYsIDM5LCAxMTIsIDI0NywgMjQwLCAzMSwgMTYsIDM5LCAyMzcsIDg4LCAzMSwgMTYsIDM5LCAyMTIsIDIzLCAKLSAgICAyMTgsIDk5LCAzMSwgMTYsIDIxOSwgMjgsIDgyLCAzMSwgMTYsIDIxOSwgMjgsIDExMiwgODIsIDMxLCAxNiwgMTYyLCAyMTksIAotICAgIDI4LCA4MiwgMzEsIDE2LCAyMzgsIDQ3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMzgsIDQ3LCAyNDIsIDcwLCAzMSwgMTYsIDMsIAotICAgIDIzOSwgMjU1LCAzMSwgMTYsIDI0NCwgMTY4LCAzMSwgMTYsIDI0NCwgMTY5LCAyNTEsIDE0LCAzMSwgMTYsIDIyNSwgNjUsIAotICAgIDMxLCAxNiwgMjI3LCAyMCwgMzEsIDE2LCAyNDcsIDIxMSwgMzEsIDE2LCAyMTMsIDE0NywgMjA0LCAzMywgMzEsIDE2LCAKLSAgICAyMTMsIDE0NywgMjQ4LCA0MywgMzEsIDE2LCAyMjQsIDEwNiwgMzEsIDE2LCAyMjQsIDEwNywgMjQ4LCA0MywgMzEsIDE2LCAKLSAgICAyMTMsIDE0MSwgMjA0LCAzMywgMzEsIDE2LCAyMTMsIDE0MSwgMjQ4LCA0MywgMzEsIDE2LCAyMzksIDkzLCAyMDQsIDMzLCAKLSAgICAzMSwgMTYsIDIzOSwgOTMsIDI0OCwgNDMsIDMxLCAxNiwgMjI3LCAyMSwgMjE4LCAyNDQsIDIxNiwgODUsIDMxLCAxNiwgCi0gICAgMjI3LCAyMSwgMjMxLCA1NCwgMjE2LCA4NSwgMzEsIDE2LCAyNDcsIDIxMiwgMjE2LCA4NSwgMzEsIDE2LCAyMTMsIDE0NywgCi0gICAgMjE2LCA4NSwgMzEsIDE2LCAyMjQsIDEwNywgMjE2LCA4NSwgMzEsIDE2LCAyMTMsIDE0MSwgMjE2LCA4NSwgMzEsIDE2LCAKLSAgICAyMDksIDE1NCwgMjE4LCAyNDIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjE4LCAyNDMsIDMxLCAxNiwgMjA5LCAxNTQsIDIxOCwgCi0gICAgMjQyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTMsIDMxLCAxNiwgMjA5LCAxNTQsIDIxOCwgMjQyLCAyNDUsIDEwNCwgCi0gICAgMjE3LCAyMTYsIDIxOCwgMjQ0LCAyNDMsIDE4MSwgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgCi0gICAgMjE2LCAyMTgsIDI0MywgMzEsIDE2LCAyMDksIDE1NCwgMjMxLCA1MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMzEsIDUzLCAKLSAgICAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTQsIDI0MywgMTgxLCAzMSwgMTYsIAotICAgIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTQsIDI0MywgMTgwLCAzMSwgMTYsIDIwOSwgCi0gICAgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTQsIDI0MywgMTc5LCAzMSwgMTYsIDI0NSwgMTMzLCAKLSAgICAzMSwgMTYsIDIzNywgMjQzLCAyNDcsIDEyNiwgMjQ2LCAzMCwgMzEsIDE2LCAyMzcsIDI0MywgMjQwLCAxNzUsIDI0NiwgMzAsIAotICAgIDMxLCAxNiwgNTEsIDI0OSwgMjU1LCAzMSwgMTYsIDIwNSwgMjAzLCAzMSwgMTYsIDIxOCwgNjYsIDMxLCAxNiwgMjQ2LCAyMSwgCi0gICAgMzEsIDE2LCAyMTQsIDIwMCwgMzEsIDE2LCAyNDYsIDI1LCAzMSwgMTYsIDIwOCwgMTM4LCAzMSwgMTYsIDIxOCwgMzYsIDMxLCAKLSAgICAxNiwgMjE4LCAzNywgMjM5LCAyMDksIDMxLCAxNiwgMjE0LCAyMDEsIDIzOSwgMjA5LCAzMSwgMTYsIDIwOCwgMTM5LCAyMTYsIAotICAgIDgyLCAzMSwgMTYsIDIxOCwgMjI1LCAyMTAsIDI0NywgMzEsIDE2LCAyMjksIDkwLCAyNDcsIDEyNiwgMjQ2LCAzMCwgMzEsIAotICAgIDE2LCAyMjksIDkwLCAyNDEsIDg0LCA3NiwgMjE4LCAxNTksIDMxLCAxNiwgMjI5LCA5MCwgNDYsIDIyMSwgMTYwLCAzMSwgCi0gICAgMTYsIDIyOSwgOTAsIDIxNiwgMTUwLCA4MiwgMzEsIDE2LCAyMjksIDkwLCAyMDQsIDMxLCAyMjEsIDE2MCwgMzEsIDE2LCAKLSAgICAyMjksIDkwLCAxNjIsIDIyMSwgMTYwLCAzMSwgMTYsIDIyOSwgOTAsIDIxNywgNTYsIDIyMSwgMTYxLCAyMTEsIDc4LCAyNDIsIAotICAgIDcwLCAzMSwgMTYsIDIyOSwgOTAsIDIxNywgNTYsIDIyMSwgMTYxLCAyMTEsIDc4LCAyMDYsIDIyNCwgMzEsIDE2LCAyMjksIAotICAgIDkwLCAyNDEsIDEzOSwgMjIxLCAxNjEsIDIxMSwgNzgsIDI0MiwgNzAsIDMxLCAxNiwgMjI5LCA5MCwgMjQxLCAxMzksIDIyMSwgCi0gICAgMTYxLCAyMTEsIDc4LCAyMDYsIDIyNCwgMzEsIDE2LCAyMjksIDkwLCAyMzksIDIxNywgNTQsIDMwLCAyMDUsIDE4OCwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTQ4LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMjcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTIwLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIAotICAgIDExMiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDYsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA1LCAKLSAgICAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDMsIDMwLCAKLSAgICAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NiwgMzAsIDIwNSwgCi0gICAgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDUsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ0LCAzMCwgMjA1LCAxODgsIAotICAgIDIyMSwgMTY0LCAyMTAsIDE0MywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDIsIDMwLCAyMDUsIDE4OCwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTQxLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0MCwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMzksIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM4LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIAotICAgIDEzNiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzUsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM0LCAKLSAgICAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzMywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzIsIDMwLCAKLSAgICAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTExLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDExMCwgMzAsIDIwNSwgCi0gICAgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDksIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA4LCAzMCwgMjA1LCAxODgsIAotICAgIDIyMSwgMTY0LCAyMTAsIDEwNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQ4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMzcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTEyLCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDUsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNCwgMzAsIDIzMSwgCi0gICAgNSwgMjIxLCAxNjQsIDIxMCwgMTQ2LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDUsIDMwLCAyMzEsIDUsIDIyMSwgCi0gICAgMTY0LCAyMTAsIDE0NCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTQzLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAKLSAgICAxNDAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTM4LCAzMCwgCi0gICAgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMiwgMzAsIDIzMSwgNSwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTMxLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEyOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjYsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI0LCAzMCwgMjMxLCAKLSAgICA1LCAyMjEsIDE2NCwgMjEwLCAxMjMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyMiwgMzAsIDIzMSwgNSwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTIxLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIAotICAgIDExOCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTYsIDMwLCAKLSAgICAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE0LCAzMCwgMjMxLCA1LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMTMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExMSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTEwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDksIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwOCwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA3LCAzOSwgMzAsIDMxLCAyMDgsIDY2LCAzOSwgMzAsIDMxLCAyMDksIAotICAgIDEyNCwgMzksIDMwLCAzMSwgMjE4LCAyNTMsIDMwLCAzMSwgMjI3LCAyMDQsIDIyNCwgNDUsIDM1LCAyNDEsIDE3OSwgMjQzLCAKLSAgICAxOTUsIDM1LCAyMzcsIDUwLCAyNDEsIDE3OSwgMjQzLCAxOTUsIDM1LCAyMzYsIDE2LCAyNDEsIDE3OSwgMjQzLCAxOTUsIAotICAgIDM1LCAyNDEsIDE3OCwgMjM3LCA1MSwgMjQzLCAxOTUsIDM1LCAyNDEsIDE3OCwgMjM2LCAxNSwgMjQzLCAxOTUsIDM1LCAKLSAgICAyNDEsIDE3OSwgMjA5LCAxMjYsIDM1LCAyNDYsIDIxNywgMjA5LCAxMjYsIDM1LCAyMzksIDEwMiwgMjQ2LCA2MSwgMjA5LCAKLSAgICAxMjYsIDM1LCAyMjQsIDk4LCAyMDksIDEyNiwgMzUsIDI0OCwgMjIxLCAyMDksIDEyNiwgMzUsIDIyOSwgMTk1LCAyMTIsIAotICAgIDM2LCAyMDksIDEyNiwgMzUsIDI0NSwgMTg1LCAyMDksIDEyNiwgMzUsIDI1MCwgNzcsIDIwOSwgMTI2LCAzNSwgMjE5LCAKLSAgICAyNTAsIDIwOSwgMTI2LCAzNSwgMjQ3LCAyMjEsIDIxOSwgMjExLCAyMDksIDEyNiwgMzUsIDI0NCwgNTcsIDIxOSwgMjQ1LCAKLSAgICAyNDMsIDE0OCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE0NSwgMjA5LCAxMjYsIDM1LCAyMDIsIDIyNSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMzEsIDQwLCAyMDksIDEyNiwgMzUsIDIxOSwgNywgMjA5LCAxMjYsIDM1LCAyMTYsIDE1NywgMjA5LCAxMjYsIDM1LCAyNDUsIAotICAgIDE5NywgMjA5LCAxMjYsIDM1LCAyMzYsIDEyNywgMjQ5LCAyNSwgMjA5LCAxMjYsIDM1LCAyMDQsIDEwMywgMjA5LCAxMjYsIAotICAgIDM1LCAyMzksIDE4MSwgMjA5LCAxMjYsIDM1LCAyNTEsIDExMiwgMjA5LCAxMjYsIDM1LCAyMTYsIDExNCwgMjA5LCAxMjYsIAotICAgIDM1LCAyMTYsIDg5LCAyMDksIDEyNiwgMzUsIDI0MSwgMTc3LCAyMDksIDEyNiwgMzUsIDIzMCwgODUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjQ1LCAxOTIsIDIwOSwgMTI2LCAzNSwgMjQxLCA4MywgMjA5LCAxMjYsIDM1LCAyNDIsIDE1LCAyMDksIDEyNiwgMzUsIAotICAgIDI0NiwgMTg2LCAyMDksIDEyNiwgMzUsIDI0NCwgNjcsIDIwOSwgMTI2LCAzNSwgMjYsIDIxNiwgODgsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjE5LCAxNjAsIDIwOSwgMTI2LCAzNSwgMjI3LCAyMDgsIDIwOSwgMTI2LCAzNSwgMjQ2LCAxNCwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMjksIDgwLCAyMDksIDEyNiwgMzUsIDIzOCwgMjE0LCAyMDksIDEyNiwgMzUsIDIxMSwgNDMsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjE3LCAxNjgsIDIwOSwgMTI2LCAzNSwgMjM5LCAxMDEsIDIwOSwgMTI2LCAzNSwgMjE2LCA5MCwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMjcsIDI0NywgMjE5LCAyNDUsIDIyNCwgNzgsIDIwOSwgMTI2LCAzNSwgMjE2LCA4NiwgMjA5LCAxMjYsIDM1LCAyMzgsIAotICAgIDMzLCAyMDgsIDE3MywgMjI1LCAzLCAyMDksIDEyNiwgMzUsIDI0MSwgODUsIDIwOSwgMTI2LCAzNSwgMjExLCA1NiwgMjA5LCAKLSAgICAxMjYsIDM1LCAyMzcsIDI0NSwgMjA5LCAxMjYsIDM1LCAyNDEsIDc2LCAyMDksIDEyNiwgMzUsIDIxOSwgNTAsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjE1LCAyNDIsIDIwOSwgMTI2LCAzNSwgMjM5LCAyMDcsIDIwOSwgMTI2LCAzNSwgMjA2LCA2NCwgMjE5LCAKLSAgICAyNDUsIDIwNCwgODQsIDIwOSwgMTI2LCAzNSwgMjQ1LCAyMDIsIDIwOSwgMTI2LCAzNSwgMjI1LCAxOCwgMjA5LCAxMjYsIAotICAgIDM1LCAyNDAsIDI0NSwgMjA5LCAxMjYsIDM1LCAyMDYsIDIzNCwgMjA5LCAxMjYsIDM1LCAyNDMsIDE4MiwgMjA5LCAxMjYsIAotICAgIDM1LCAyNDYsIDE2LCAyMjQsIDcsIDIwOSwgMTI2LCAzNSwgMjM3LCAyMjIsIDIwOSwgMTI2LCAzNSwgMjM4LCAyMTUsIDIzMSwgCi0gICAgNDksIDIwOSwgMTI2LCAzNSwgMjI1LCA3MywgMjA5LCAxMjYsIDM1LCAyNTEsIDEzMywgMjA5LCAxMjYsIDM1LCAyNDEsIAotICAgIDEwMSwgMjA5LCAxMjYsIDM1LCAyNDIsIDc0LCAyMDksIDEyNiwgMzUsIDIwNCwgODIsIDIwOSwgMTI2LCAzNSwgMjEyLCAKLSAgICAxMTUsIDIwOSwgMTI2LCAzNSwgMjMxLCAxNCwgMjA5LCAxMjYsIDM1LCAyNDQsIDI1LCAyMDksIDEyNiwgMzUsIDI0NCwgCi0gICAgMTQ4LCAyMDksIDEyNiwgMzUsIDI0MywgMTc4LCAyMDksIDEyNiwgMzUsIDI0MCwgMjA5LCAyMDksIDEyNiwgMzUsIDIxMywgCi0gICAgMTA0LCAyMDksIDEyNiwgMzUsIDIxMSwgNjAsIDIwOSwgMTI2LCAzNSwgMjM3LCA5MCwgMjA5LCAxMjYsIDM1LCAyNDUsIAotICAgIDIyNiwgMjA5LCAxMjYsIDM1LCAyNDYsIDExLCAyMDksIDEyNiwgMzUsIDI0MCwgODcsIDIwOSwgMTI2LCAzNSwgMjUxLCA3NiwgCi0gICAgMjA5LCAxMjYsIDM1LCAyNDUsIDIyNSwgMjA5LCAxMjYsIDM1LCAyMjAsIDMyLCAyMDksIDkzLCAyMDYsIDQxLCAyMDksIAotICAgIDEyNiwgMzUsIDI0MywgMjA0LCAyMDksIDEyNiwgMzUsIDIyOCwgMTAxLCAyMDksIDEyNiwgMzUsIDIzOSwgMTUwLCAyNDUsIAotICAgIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTA1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTA4LCAKLSAgICAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTQ3LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgCi0gICAgMTQ5LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMTcwLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAKLSAgICAxNywgMTk1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwNiwgMjM2LCAxNywgMjEzLCAxMTEsIDI0NSwgMTUzLCAyMTUsIDIxNywgCi0gICAgMjA2LCAyMzYsIDE3LCAxOTksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAyMjIsIDYzLCAyNDUsIDE1MywgCi0gICAgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTA1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTA4LCAyNDUsIAotICAgIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTQ3LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTQ5LCAKLSAgICAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMTcwLCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgCi0gICAgMTk1LCAyNDUsIDE1MywgMjE1LCAyMTcsIDIwOSwgMTQ4LCAxNywgMjEzLCAxMTEsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAKLSAgICAxNDgsIDE3LCAxOTksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAyMjIsIDYzLCAxMywgMjYsIDYsIDYzLCAKLSAgICAxMywgMjYsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDYsIDI0NywgMTI1LCAxMywgMjYsIDYsIDI0NSwgNTEsIDEzLCAyNiwgNiwgCi0gICAgNzQsIDEzLCAyNiwgNiwgMjQwLCAxNzQsIDEzLCAyNiwgNiwgMjM5LCA3NSwgMTMsIDI2LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAKLSAgICA2LCA3NSwgMTMsIDI2LCA2LCAyMzAsIDE4NCwgMTMsIDI2LCA2LCAyMzAsIDU0LCAxMywgMjYsIDYsIDE1OSwgMTMsIDI2LCAKLSAgICA2LCAyMjYsIDE4NSwgMTMsIDI2LCA2LCAyMjMsIDE2MywgMTMsIDI2LCA2LCA3OCwgMTMsIDI2LCA2LCAyMTksIDE4NCwgMTMsIAotICAgIDI2LCA2LCAyMTcsIDEzNCwgMTMsIDI2LCA2LCAxNDYsIDEzLCAyNiwgNiwgMTk0LCAxMywgMjYsIDYsIDIxMCwgNjksIDEzLCAKLSAgICAyNiwgNiwgNjgsIDEzLCAyNiwgNiwgMjA2LCAxNjQsIDEzLCAyNiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgNiwgMjAzLCAxOTYsIAotICAgIDEzLCAyNiwgNiwgMjAzLCAxMjQsIDEzLCAyNiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgNSwgNjMsIDEzLCAyNiwgNSwgMjQ5LCAKLSAgICAyNTUsIDEzLCAyNiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgNSwgMjQ1LCA1MSwgMTMsIDI2LCA1LCA3NCwgMTMsIDI2LCA1LCAKLSAgICAyNDAsIDE3NCwgMTMsIDI2LCA1LCAyMzksIDc1LCAxMywgMjYsIDUsIDIzNywgMTcxLCAxMywgMjYsIDUsIDc1LCAxMywgMjYsIAotICAgIDUsIDIzMCwgMTg0LCAxMywgMjYsIDUsIDIzMCwgNTQsIDEzLCAyNiwgNSwgMTU5LCAxMywgMjYsIDUsIDIyNiwgMTg1LCAxMywgCi0gICAgMjYsIDUsIDIyMywgMTYzLCAxMywgMjYsIDUsIDc4LCAxMywgMjYsIDUsIDIxOSwgMTg0LCAxMywgMjYsIDUsIDIxNywgMTM0LCAKLSAgICAxMywgMjYsIDUsIDE0NiwgMTMsIDI2LCA1LCAxOTQsIDEzLCAyNiwgNSwgMjEwLCA2OSwgMTMsIDI2LCA1LCA2OCwgMTMsIAotICAgIDI2LCA1LCAyMDYsIDE2NCwgMTMsIDI2LCA1LCAyMDQsIDE0NCwgMTMsIDI2LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCA1LCAKLSAgICAyMDMsIDEyNCwgMTMsIDI2LCA1LCAyMDIsIDE1OSwgMTMsIDM3LCA2LCA2MywgMTMsIDM3LCA2LCAyNDksIDI1NSwgMTMsIAotICAgIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDM3LCA2LCAyNDUsIDUxLCAxMywgMzcsIDYsIDc0LCAxMywgMzcsIDYsIDI0MCwgMTc0LCAKLSAgICAxMywgMzcsIDYsIDIzOSwgNzUsIDEzLCAzNywgNiwgMjM3LCAxNzEsIDEzLCAzNywgNiwgNzUsIDEzLCAzNywgNiwgMjMwLCAKLSAgICAxODQsIDEzLCAzNywgNiwgMjMwLCA1NCwgMTMsIDM3LCA2LCAxNTksIDEzLCAzNywgNiwgMjI2LCAxODUsIDEzLCAzNywgNiwgCi0gICAgMjIzLCAxNjMsIDEzLCAzNywgNiwgNzgsIDEzLCAzNywgNiwgMjE5LCAxODQsIDEzLCAzNywgNiwgMjE3LCAxMzQsIDEzLCAKLSAgICAzNywgNiwgMTQ2LCAxMywgMzcsIDYsIDE5NCwgMTMsIDM3LCA2LCAyMTAsIDY5LCAxMywgMzcsIDYsIDY4LCAxMywgMzcsIDYsIAotICAgIDIwNiwgMTY0LCAxMywgMzcsIDYsIDIwNCwgMTQ0LCAxMywgMzcsIDYsIDIwMywgMTk2LCAxMywgMzcsIDYsIDIwMywgMTI0LCAKLSAgICAxMywgMzcsIDYsIDIwMiwgMTU5LCAxMywgMzcsIDUsIDYzLCAxMywgMzcsIDUsIDI0OSwgMjU1LCAxMywgMzcsIDUsIDI0NywgCi0gICAgMTI1LCAxMywgMzcsIDUsIDI0NSwgNTEsIDEzLCAzNywgNSwgNzQsIDEzLCAzNywgNSwgMjQwLCAxNzQsIDEzLCAzNywgNSwgCi0gICAgMjM5LCA3NSwgMTMsIDM3LCA1LCA3NSwgMTMsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDM3LCA1LCAyMzAsIDU0LCAxMywgMzcsIAotICAgIDUsIDE1OSwgMTMsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDM3LCA1LCAyMjMsIDE2MywgMTMsIDM3LCA1LCA3OCwgMTMsIDM3LCAKLSAgICA1LCAyMTksIDE4NCwgMTMsIDM3LCA1LCAyMTcsIDEzNCwgMTMsIDM3LCA1LCAxNDYsIDEzLCAzNywgNSwgMTk0LCAxMywgMzcsIAotICAgIDUsIDIxMCwgNjksIDEzLCAzNywgNSwgNjgsIDEzLCAzNywgNSwgMjA2LCAxNjQsIDEzLCAzNywgNSwgMjA0LCAxNDQsIDEzLCAKLSAgICAzNywgNSwgMjAzLCAxOTYsIDEzLCAzNywgNSwgMjAzLCAxMjQsIDEzLCAzNywgNSwgMjAyLCAxNTksIDEzLCAyNiwgMzcsIDYsIAotICAgIDYzLCAxMywgMjYsIDM3LCA2LCAyNDksIDI1NSwgMTMsIDI2LCAzNywgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgMzcsIDYsIDI0NSwgCi0gICAgNTEsIDEzLCAyNiwgMzcsIDYsIDc0LCAxMywgMjYsIDM3LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCAzNywgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDI2LCAzNywgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMzcsIDYsIDc1LCAxMywgMjYsIDM3LCA2LCAyMzAsIDE4NCwgMTMsIAotICAgIDI2LCAzNywgNiwgMjMwLCA1NCwgMTMsIDI2LCAzNywgNiwgMTU5LCAxMywgMjYsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDI2LCAKLSAgICAzNywgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMzcsIDYsIDc4LCAxMywgMjYsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDI2LCAzNywgCi0gICAgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMzcsIDYsIDE0NiwgMTMsIDI2LCAzNywgNiwgMTk0LCAxMywgMjYsIDM3LCA2LCAyMTAsIAotICAgIDY5LCAxMywgMjYsIDM3LCA2LCA2OCwgMTMsIDI2LCAzNywgNiwgMjA2LCAxNjQsIDEzLCAyNiwgMzcsIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgMjYsIDM3LCA2LCAyMDMsIDE5NiwgMTMsIDI2LCAzNywgNiwgMjAzLCAxMjQsIDEzLCAyNiwgMzcsIDYsIDIwMiwgCi0gICAgMTU5LCAxMywgMjYsIDM3LCA1LCA2MywgMTMsIDI2LCAzNywgNSwgMjQ5LCAyNTUsIDEzLCAyNiwgMzcsIDUsIDI0NywgMTI1LCAKLSAgICAxMywgMjYsIDM3LCA1LCAyNDUsIDUxLCAxMywgMjYsIDM3LCA1LCA3NCwgMTMsIDI2LCAzNywgNSwgMjQwLCAxNzQsIDEzLCAKLSAgICAyNiwgMzcsIDUsIDIzOSwgNzUsIDEzLCAyNiwgMzcsIDUsIDIzNywgMTcxLCAxMywgMjYsIDM3LCA1LCA3NSwgMTMsIDI2LCAKLSAgICAzNywgNSwgMjMwLCAxODQsIDEzLCAyNiwgMzcsIDUsIDIzMCwgNTQsIDEzLCAyNiwgMzcsIDUsIDE1OSwgMTMsIDI2LCAzNywgCi0gICAgNSwgMjI2LCAxODUsIDEzLCAyNiwgMzcsIDUsIDIyMywgMTYzLCAxMywgMjYsIDM3LCA1LCA3OCwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjE5LCAxODQsIDEzLCAyNiwgMzcsIDUsIDIxNywgMTM0LCAxMywgMjYsIDM3LCA1LCAxNDYsIDEzLCAyNiwgMzcsIDUsIAotICAgIDE5NCwgMTMsIDI2LCAzNywgNSwgMjEwLCA2OSwgMTMsIDI2LCAzNywgNSwgNjgsIDEzLCAyNiwgMzcsIDUsIDIwNiwgMTY0LCAKLSAgICAxMywgMjYsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIDI2LCAzNywgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMzcsIDUsIDIwMywgCi0gICAgMTI0LCAxMywgMjYsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDEzMiwgNiwgNjMsIDEzLCAxMzIsIDYsIDI0NywgMTI1LCAxMywgCi0gICAgMTMyLCA2LCAyNDUsIDUxLCAxMywgMTMyLCA2LCAyMzksIDc1LCAxMywgMTMyLCA2LCAyMzAsIDE4NCwgMTMsIDEzMiwgNiwgCi0gICAgMjMwLCA1NCwgMTMsIDEzMiwgNiwgMjIzLCAxNjMsIDEzLCAxMzIsIDYsIDc4LCAxMywgMTMyLCA2LCAyMTksIDE4NCwgMTMsIAotICAgIDEzMiwgNiwgMjE3LCAxMzQsIDEzLCAxMzIsIDYsIDE5NCwgMTMsIDEzMiwgNiwgMjEwLCA2OSwgMTMsIDEzMiwgNiwgNjgsIAotICAgIDEzLCAxMzIsIDYsIDIwNiwgMTY0LCAxMywgMTMyLCA2LCAyMDQsIDE0NCwgMTMsIDEzMiwgNiwgMjAzLCAxOTYsIDEzLCAKLSAgICAxMzIsIDYsIDIwMywgMTI0LCAxMywgMTMyLCA2LCAyMDIsIDE1OSwgMTMsIDEzMiwgNSwgNjMsIDEzLCAxMzIsIDUsIDI0OSwgCi0gICAgMjU1LCAxMywgMTMyLCA1LCAyNDcsIDEyNSwgMTMsIDEzMiwgNSwgMjQ1LCA1MSwgMTMsIDEzMiwgNSwgMjQwLCAxNzQsIDEzLCAKLSAgICAxMzIsIDUsIDIzNywgMTcxLCAxMywgMTMyLCA1LCA3NSwgMTMsIDEzMiwgNSwgMjMwLCAxODQsIDEzLCAxMzIsIDUsIDIzMCwgCi0gICAgNTQsIDEzLCAxMzIsIDUsIDE1OSwgMTMsIDEzMiwgNSwgMjI2LCAxODUsIDEzLCAxMzIsIDUsIDIyMywgMTYzLCAxMywgMTMyLCAKLSAgICA1LCAyMTksIDE4NCwgMTMsIDEzMiwgNSwgMjE3LCAxMzQsIDEzLCAxMzIsIDUsIDE0NiwgMTMsIDEzMiwgNSwgMTk0LCAxMywgCi0gICAgMTMyLCA1LCAyMTAsIDY5LCAxMywgMTMyLCA1LCA2OCwgMTMsIDEzMiwgNSwgMjA2LCAxNjQsIDEzLCAxMzIsIDUsIDIwNCwgCi0gICAgMTQ0LCAxMywgMTMyLCA1LCAyMDMsIDE5NiwgMTMsIDEzMiwgNSwgMjAzLCAxMjQsIDEzLCAxMzIsIDUsIDIwMiwgMTU5LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgNjMsIDEzLCAyNiwgMTMyLCA2LCAyNDksIDI1NSwgMTMsIDI2LCAxMzIsIDYsIDI0NywgMTI1LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjQ1LCA1MSwgMTMsIDI2LCAxMzIsIDYsIDc0LCAxMywgMjYsIDEzMiwgNiwgMjQwLCAxNzQsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyMzksIDc1LCAxMywgMjYsIDEzMiwgNiwgMjM3LCAxNzEsIDEzLCAyNiwgMTMyLCA2LCA3NSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIzMCwgMTg0LCAxMywgMjYsIDEzMiwgNiwgMjMwLCA1NCwgMTMsIDI2LCAxMzIsIDYsIDE1OSwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIyNiwgMTg1LCAxMywgMjYsIDEzMiwgNiwgMjIzLCAxNjMsIDEzLCAyNiwgMTMyLCA2LCA3OCwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIxOSwgMTg0LCAxMywgMjYsIDEzMiwgNiwgMjE3LCAxMzQsIDEzLCAyNiwgMTMyLCA2LCAxNDYsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAxOTQsIDEzLCAyNiwgMTMyLCA2LCAyMTAsIDY5LCAxMywgMjYsIDEzMiwgNiwgNjgsIDEzLCAyNiwgCi0gICAgMTMyLCA2LCAyMDYsIDE2NCwgMTMsIDI2LCAxMzIsIDYsIDIwNCwgMTQ0LCAxMywgMjYsIDEzMiwgNiwgMjAzLCAxOTYsIDEzLCAKLSAgICAyNiwgMTMyLCA2LCAyMDMsIDEyNCwgMTMsIDI2LCAxMzIsIDYsIDIwMiwgMTU5LCAxMywgMjYsIDEzMiwgNSwgNjMsIDEzLCAKLSAgICAyNiwgMTMyLCA1LCAyNDksIDI1NSwgMTMsIDI2LCAxMzIsIDUsIDI0NywgMTI1LCAxMywgMjYsIDEzMiwgNSwgMjQ1LCA1MSwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDc0LCAxMywgMjYsIDEzMiwgNSwgMjQwLCAxNzQsIDEzLCAyNiwgMTMyLCA1LCAyMzksIDc1LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjM3LCAxNzEsIDEzLCAyNiwgMTMyLCA1LCA3NSwgMTMsIDI2LCAxMzIsIDUsIDIzMCwgMTg0LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjMwLCA1NCwgMTMsIDI2LCAxMzIsIDUsIDE1OSwgMTMsIDI2LCAxMzIsIDUsIDIyNiwgMTg1LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjIzLCAxNjMsIDEzLCAyNiwgMTMyLCA1LCA3OCwgMTMsIDI2LCAxMzIsIDUsIDIxOSwgMTg0LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjE3LCAxMzQsIDEzLCAyNiwgMTMyLCA1LCAxNDYsIDEzLCAyNiwgMTMyLCA1LCAxOTQsIDEzLCAKLSAgICAyNiwgMTMyLCA1LCAyMTAsIDY5LCAxMywgMjYsIDEzMiwgNSwgNjgsIDEzLCAyNiwgMTMyLCA1LCAyMDYsIDE2NCwgMTMsIAotICAgIDI2LCAxMzIsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDEzMiwgNSwgMjAzLCAxOTYsIDEzLCAyNiwgMTMyLCA1LCAyMDMsIDEyNCwgCi0gICAgMTMsIDI2LCAxMzIsIDUsIDIwMiwgMTU5LCAxMywgMTY2LCA2LCA2MywgMTMsIDE2NiwgNiwgMjQ5LCAyNTUsIDEzLCAxNjYsIAotICAgIDYsIDI0NSwgNTEsIDEzLCAxNjYsIDYsIDc0LCAxMywgMTY2LCA2LCAyNDAsIDE3NCwgMTMsIDE2NiwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDE2NiwgNiwgMjMwLCAxODQsIDEzLCAxNjYsIDYsIDIzMCwgNTQsIDEzLCAxNjYsIDYsIDE1OSwgMTMsIDE2NiwgNiwgCi0gICAgMjI2LCAxODUsIDEzLCAxNjYsIDYsIDIyMywgMTYzLCAxMywgMTY2LCA2LCA3OCwgMTMsIDE2NiwgNiwgMjE5LCAxODQsIDEzLCAKLSAgICAxNjYsIDYsIDIxNywgMTM0LCAxMywgMTY2LCA2LCAxOTQsIDEzLCAxNjYsIDYsIDIxMCwgNjksIDEzLCAxNjYsIDYsIDY4LCAKLSAgICAxMywgMTY2LCA2LCAyMDYsIDE2NCwgMTMsIDE2NiwgNiwgMjA0LCAxNDQsIDEzLCAxNjYsIDYsIDIwMywgMTk2LCAxMywgCi0gICAgMTY2LCA2LCAyMDMsIDEyNCwgMTMsIDE2NiwgNSwgNjMsIDEzLCAxNjYsIDUsIDI0OSwgMjU1LCAxMywgMTY2LCA1LCAyNDcsIAotICAgIDEyNSwgMTMsIDE2NiwgNSwgMjQ1LCA1MSwgMTMsIDE2NiwgNSwgNzQsIDEzLCAxNjYsIDUsIDI0MCwgMTc0LCAxMywgMTY2LCAKLSAgICA1LCAyMzksIDc1LCAxMywgMTY2LCA1LCAyMzcsIDE3MSwgMTMsIDE2NiwgNSwgNzUsIDEzLCAxNjYsIDUsIDIzMCwgMTg0LCAKLSAgICAxMywgMTY2LCA1LCAyMzAsIDU0LCAxMywgMTY2LCA1LCAxNTksIDEzLCAxNjYsIDUsIDIyNiwgMTg1LCAxMywgMTY2LCA1LCAKLSAgICAyMjMsIDE2MywgMTMsIDE2NiwgNSwgNzgsIDEzLCAxNjYsIDUsIDIxOSwgMTg0LCAxMywgMTY2LCA1LCAyMTcsIDEzNCwgMTMsIAotICAgIDE2NiwgNSwgMTQ2LCAxMywgMTY2LCA1LCAxOTQsIDEzLCAxNjYsIDUsIDIxMCwgNjksIDEzLCAxNjYsIDUsIDY4LCAxMywgCi0gICAgMTY2LCA1LCAyMDYsIDE2NCwgMTMsIDE2NiwgNSwgMjA0LCAxNDQsIDEzLCAxNjYsIDUsIDIwMywgMTk2LCAxMywgMTY2LCA1LCAKLSAgICAyMDMsIDEyNCwgMTMsIDE2NiwgNSwgMjAyLCAxNTksIDEzLCAxNjksIDYsIDYzLCAxMywgMTY5LCA2LCAyNDksIDI1NSwgMTMsIAotICAgIDE2OSwgNiwgMjQ1LCA1MSwgMTMsIDE2OSwgNiwgNzQsIDEzLCAxNjksIDYsIDI0MCwgMTc0LCAxMywgMTY5LCA2LCAyMzksIAotICAgIDc1LCAxMywgMTY5LCA2LCA3NSwgMTMsIDE2OSwgNiwgMjMwLCAxODQsIDEzLCAxNjksIDYsIDIzMCwgNTQsIDEzLCAxNjksIAotICAgIDYsIDE1OSwgMTMsIDE2OSwgNiwgMjI2LCAxODUsIDEzLCAxNjksIDYsIDc4LCAxMywgMTY5LCA2LCAxOTQsIDEzLCAxNjksIAotICAgIDYsIDIxMCwgNjksIDEzLCAxNjksIDYsIDY4LCAxMywgMTY5LCA2LCAyMDYsIDE2NCwgMTMsIDE2OSwgNiwgMjA0LCAxNDQsIAotICAgIDEzLCAxNjksIDYsIDIwMywgMTk2LCAxMywgMTY5LCA2LCAyMDMsIDEyNCwgMTMsIDE2OSwgNSwgNjMsIDEzLCAxNjksIDUsIAotICAgIDI0OSwgMjU1LCAxMywgMTY5LCA1LCAyNDcsIDEyNSwgMTMsIDE2OSwgNSwgMjQ1LCA1MSwgMTMsIDE2OSwgNSwgNzQsIDEzLCAKLSAgICAxNjksIDUsIDI0MCwgMTc0LCAxMywgMTY5LCA1LCAyMzksIDc1LCAxMywgMTY5LCA1LCAyMzcsIDE3MSwgMTMsIDE2OSwgNSwgCi0gICAgNzUsIDEzLCAxNjksIDUsIDIzMCwgMTg0LCAxMywgMTY5LCA1LCAyMzAsIDU0LCAxMywgMTY5LCA1LCAxNTksIDEzLCAxNjksIAotICAgIDUsIDIyNiwgMTg1LCAxMywgMTY5LCA1LCAyMjMsIDE2MywgMTMsIDE2OSwgNSwgNzgsIDEzLCAxNjksIDUsIDIxOSwgMTg0LCAKLSAgICAxMywgMTY5LCA1LCAyMTcsIDEzNCwgMTMsIDE2OSwgNSwgMTQ2LCAxMywgMTY5LCA1LCAxOTQsIDEzLCAxNjksIDUsIDIxMCwgCi0gICAgNjksIDEzLCAxNjksIDUsIDY4LCAxMywgMTY5LCA1LCAyMDYsIDE2NCwgMTMsIDE2OSwgNSwgMjA0LCAxNDQsIDEzLCAxNjksIAotICAgIDUsIDIwMywgMTk2LCAxMywgMTY5LCA1LCAyMDMsIDEyNCwgMTMsIDE2OSwgNSwgMjAyLCAxNTksIDEzLCAyNiwgMTY2LCA2LCAKLSAgICA2MywgMTMsIDI2LCAxNjYsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDE2NiwgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyNDUsIDUxLCAxMywgMjYsIDE2NiwgNiwgNzQsIDEzLCAyNiwgMTY2LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIzOSwgNzUsIDEzLCAyNiwgMTY2LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAxNjYsIDYsIDc1LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjMwLCAxODQsIDEzLCAyNiwgMTY2LCA2LCAyMzAsIDU0LCAxMywgMjYsIDE2NiwgNiwgMTU5LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjI2LCAxODUsIDEzLCAyNiwgMTY2LCA2LCAyMjMsIDE2MywgMTMsIDI2LCAxNjYsIDYsIDc4LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjE5LCAxODQsIDEzLCAyNiwgMTY2LCA2LCAyMTcsIDEzNCwgMTMsIDI2LCAxNjYsIDYsIDE0NiwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDE5NCwgMTMsIDI2LCAxNjYsIDYsIDIxMCwgNjksIDEzLCAyNiwgMTY2LCA2LCA2OCwgMTMsIDI2LCAxNjYsIDYsIDIwNiwgCi0gICAgMTY0LCAxMywgMjYsIDE2NiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgMTY2LCA2LCAyMDMsIDE5NiwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDIwMywgMTI0LCAxMywgMjYsIDE2NiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgMTY2LCA1LCA2MywgMTMsIDI2LCAxNjYsIDUsIAotICAgIDI0OSwgMjU1LCAxMywgMjYsIDE2NiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgMTY2LCA1LCAyNDUsIDUxLCAxMywgMjYsIDE2NiwgCi0gICAgNSwgNzQsIDEzLCAyNiwgMTY2LCA1LCAyNDAsIDE3NCwgMTMsIDI2LCAxNjYsIDUsIDIzOSwgNzUsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMzcsIDE3MSwgMTMsIDI2LCAxNjYsIDUsIDc1LCAxMywgMjYsIDE2NiwgNSwgMjMwLCAxODQsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMzAsIDU0LCAxMywgMjYsIDE2NiwgNSwgMTU5LCAxMywgMjYsIDE2NiwgNSwgMjI2LCAxODUsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMjMsIDE2MywgMTMsIDI2LCAxNjYsIDUsIDc4LCAxMywgMjYsIDE2NiwgNSwgMjE5LCAxODQsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMTcsIDEzNCwgMTMsIDI2LCAxNjYsIDUsIDE0NiwgMTMsIDI2LCAxNjYsIDUsIDE5NCwgMTMsIDI2LCAxNjYsIDUsIDIxMCwgCi0gICAgNjksIDEzLCAyNiwgMTY2LCA1LCA2OCwgMTMsIDI2LCAxNjYsIDUsIDIwNiwgMTY0LCAxMywgMjYsIDE2NiwgNSwgMjA0LCAKLSAgICAxNDQsIDEzLCAyNiwgMTY2LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAxNjYsIDUsIDIwMywgMTI0LCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjAyLCAxNTksIDEzLCA0MSwgNiwgNjMsIDEzLCA0MSwgNiwgMjQ5LCAyNTUsIDEzLCA0MSwgNiwgMjQ3LCAxMjUsIDEzLCAKLSAgICA0MSwgNiwgMjQ1LCA1MSwgMTMsIDQxLCA2LCA3NCwgMTMsIDQxLCA2LCAyNDAsIDE3NCwgMTMsIDQxLCA2LCAyMzksIDc1LCAKLSAgICAxMywgNDEsIDYsIDIzNywgMTcxLCAxMywgNDEsIDYsIDc1LCAxMywgNDEsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDYsIDIzMCwgCi0gICAgNTQsIDEzLCA0MSwgNiwgMTU5LCAxMywgNDEsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDYsIDIyMywgMTYzLCAxMywgNDEsIDYsIAotICAgIDc4LCAxMywgNDEsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDYsIDIxNywgMTM0LCAxMywgNDEsIDYsIDE0NiwgMTMsIDQxLCA2LCAKLSAgICAxOTQsIDEzLCA0MSwgNiwgMjEwLCA2OSwgMTMsIDQxLCA2LCA2OCwgMTMsIDQxLCA2LCAyMDYsIDE2NCwgMTMsIDQxLCA2LCAKLSAgICAyMDQsIDE0NCwgMTMsIDQxLCA2LCAyMDMsIDE5NiwgMTMsIDQxLCA2LCAyMDMsIDEyNCwgMTMsIDQxLCA2LCAyMDIsIDE1OSwgCi0gICAgMTMsIDQxLCA1LCA2MywgMTMsIDQxLCA1LCAyNDksIDI1NSwgMTMsIDQxLCA1LCAyNDcsIDEyNSwgMTMsIDQxLCA1LCAyNDUsIAotICAgIDUxLCAxMywgNDEsIDUsIDc0LCAxMywgNDEsIDUsIDI0MCwgMTc0LCAxMywgNDEsIDUsIDIzOSwgNzUsIDEzLCA0MSwgNSwgCi0gICAgMjM3LCAxNzEsIDEzLCA0MSwgNSwgNzUsIDEzLCA0MSwgNSwgMjMwLCAxODQsIDEzLCA0MSwgNSwgMjMwLCA1NCwgMTMsIDQxLCAKLSAgICA1LCAxNTksIDEzLCA0MSwgNSwgMjI2LCAxODUsIDEzLCA0MSwgNSwgMjIzLCAxNjMsIDEzLCA0MSwgNSwgNzgsIDEzLCA0MSwgCi0gICAgNSwgMjE5LCAxODQsIDEzLCA0MSwgNSwgMjE3LCAxMzQsIDEzLCA0MSwgNSwgMTQ2LCAxMywgNDEsIDUsIDE5NCwgMTMsIDQxLCAKLSAgICA1LCAyMTAsIDY5LCAxMywgNDEsIDUsIDY4LCAxMywgNDEsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDUsIDIwNCwgMTQ0LCAxMywgCi0gICAgNDEsIDUsIDIwMywgMTk2LCAxMywgNDEsIDUsIDIwMywgMTI0LCAxMywgNDEsIDUsIDIwMiwgMTU5LCAxMywgNDEsIDI2LCA2LCAKLSAgICA2MywgMTMsIDQxLCAyNiwgNiwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDYsIDI0NywgMTI1LCAxMywgNDEsIDI2LCA2LCAyNDUsIAotICAgIDUxLCAxMywgNDEsIDI2LCA2LCA3NCwgMTMsIDQxLCAyNiwgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMjYsIDYsIDIzOSwgNzUsIAotICAgIDEzLCA0MSwgMjYsIDYsIDIzNywgMTcxLCAxMywgNDEsIDI2LCA2LCA3NSwgMTMsIDQxLCAyNiwgNiwgMjMwLCAxODQsIDEzLCAKLSAgICA0MSwgMjYsIDYsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDYsIDE1OSwgMTMsIDQxLCAyNiwgNiwgMjI2LCAxODUsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIyMywgMTYzLCAxMywgNDEsIDI2LCA2LCA3OCwgMTMsIDQxLCAyNiwgNiwgMjE5LCAxODQsIDEzLCA0MSwgMjYsIAotICAgIDYsIDIxNywgMTM0LCAxMywgNDEsIDI2LCA2LCAxNDYsIDEzLCA0MSwgMjYsIDYsIDE5NCwgMTMsIDQxLCAyNiwgNiwgMjEwLCAKLSAgICA2OSwgMTMsIDQxLCAyNiwgNiwgNjgsIDEzLCA0MSwgMjYsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDI2LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDQxLCAyNiwgNiwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDYsIDIwMywgMTI0LCAxMywgNDEsIDI2LCA2LCAyMDIsIAotICAgIDE1OSwgMTMsIDQxLCAyNiwgNSwgNjMsIDEzLCA0MSwgMjYsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDI2LCA1LCAyNDcsIDEyNSwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgNSwgNzQsIDEzLCA0MSwgMjYsIDUsIDI0MCwgMTc0LCAxMywgCi0gICAgNDEsIDI2LCA1LCAyMzksIDc1LCAxMywgNDEsIDI2LCA1LCAyMzcsIDE3MSwgMTMsIDQxLCAyNiwgNSwgNzUsIDEzLCA0MSwgCi0gICAgMjYsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCA1LCAyMzAsIDU0LCAxMywgNDEsIDI2LCA1LCAxNTksIDEzLCA0MSwgMjYsIAotICAgIDUsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCA1LCAyMjMsIDE2MywgMTMsIDQxLCAyNiwgNSwgNzgsIDEzLCA0MSwgMjYsIDUsIAotICAgIDIxOSwgMTg0LCAxMywgNDEsIDI2LCA1LCAyMTcsIDEzNCwgMTMsIDQxLCAyNiwgNSwgMTQ2LCAxMywgNDEsIDI2LCA1LCAKLSAgICAxOTQsIDEzLCA0MSwgMjYsIDUsIDIxMCwgNjksIDEzLCA0MSwgMjYsIDUsIDY4LCAxMywgNDEsIDI2LCA1LCAyMDYsIDE2NCwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjA0LCAxNDQsIDEzLCA0MSwgMjYsIDUsIDIwMywgMTk2LCAxMywgNDEsIDI2LCA1LCAyMDMsIAotICAgIDEyNCwgMTMsIDQxLCAyNiwgNSwgMjAyLCAxNTksIDEzLCA0MSwgMzcsIDYsIDYzLCAxMywgNDEsIDM3LCA2LCAyNDksIDI1NSwgCi0gICAgMTMsIDQxLCAzNywgNiwgMjQ3LCAxMjUsIDEzLCA0MSwgMzcsIDYsIDI0NSwgNTEsIDEzLCA0MSwgMzcsIDYsIDc0LCAxMywgCi0gICAgNDEsIDM3LCA2LCAyNDAsIDE3NCwgMTMsIDQxLCAzNywgNiwgMjM5LCA3NSwgMTMsIDQxLCAzNywgNiwgMjM3LCAxNzEsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDc1LCAxMywgNDEsIDM3LCA2LCAyMzAsIDE4NCwgMTMsIDQxLCAzNywgNiwgMjMwLCA1NCwgMTMsIDQxLCAKLSAgICAzNywgNiwgMTU5LCAxMywgNDEsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAzNywgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMzcsIAotICAgIDYsIDc4LCAxMywgNDEsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAzNywgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMzcsIDYsIAotICAgIDE0NiwgMTMsIDQxLCAzNywgNiwgMTk0LCAxMywgNDEsIDM3LCA2LCAyMTAsIDY5LCAxMywgNDEsIDM3LCA2LCA2OCwgMTMsIAotICAgIDQxLCAzNywgNiwgMjA2LCAxNjQsIDEzLCA0MSwgMzcsIDYsIDIwNCwgMTQ0LCAxMywgNDEsIDM3LCA2LCAyMDMsIDE5NiwgCi0gICAgMTMsIDQxLCAzNywgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMzcsIDYsIDIwMiwgMTU5LCAxMywgNDEsIDM3LCA1LCA2MywgMTMsIAotICAgIDQxLCAzNywgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMzcsIDUsIDI0NywgMTI1LCAxMywgNDEsIDM3LCA1LCAyNDUsIDUxLCAxMywgCi0gICAgNDEsIDM3LCA1LCA3NCwgMTMsIDQxLCAzNywgNSwgMjQwLCAxNzQsIDEzLCA0MSwgMzcsIDUsIDIzOSwgNzUsIDEzLCA0MSwgCi0gICAgMzcsIDUsIDIzNywgMTcxLCAxMywgNDEsIDM3LCA1LCA3NSwgMTMsIDQxLCAzNywgNSwgMjMwLCAxODQsIDEzLCA0MSwgMzcsIAotICAgIDUsIDIzMCwgNTQsIDEzLCA0MSwgMzcsIDUsIDE1OSwgMTMsIDQxLCAzNywgNSwgMjI2LCAxODUsIDEzLCA0MSwgMzcsIDUsIAotICAgIDIyMywgMTYzLCAxMywgNDEsIDM3LCA1LCA3OCwgMTMsIDQxLCAzNywgNSwgMjE5LCAxODQsIDEzLCA0MSwgMzcsIDUsIDIxNywgCi0gICAgMTM0LCAxMywgNDEsIDM3LCA1LCAxNDYsIDEzLCA0MSwgMzcsIDUsIDE5NCwgMTMsIDQxLCAzNywgNSwgMjEwLCA2OSwgMTMsIAotICAgIDQxLCAzNywgNSwgNjgsIDEzLCA0MSwgMzcsIDUsIDIwNiwgMTY0LCAxMywgNDEsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIDQxLCAKLSAgICAzNywgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMzcsIDUsIDIwMywgMTI0LCAxMywgNDEsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDYzLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDcsIAotICAgIDEyNSwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDM3LCA2LCA3NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDI0MCwgMTc0LCAxMywgNDEsIDI2LCAzNywgNiwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzNywgMTcxLCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgNzUsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzMCwgCi0gICAgNTQsIDEzLCA0MSwgMjYsIDM3LCA2LCAxNTksIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIyMywgMTYzLCAxMywgNDEsIDI2LCAzNywgNiwgNzgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDYsIDIxNywgMTM0LCAxMywgNDEsIDI2LCAzNywgNiwgMTQ2LCAxMywgNDEsIDI2LCAzNywgNiwgMTk0LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgMjEwLCA2OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDY4LCAxMywgNDEsIDI2LCAzNywgNiwgMjA2LCAKLSAgICAxNjQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMywgMTk2LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDIsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDYzLCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDcsIDEyNSwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDI0NSwgNTEsIDEzLCA0MSwgMjYsIDM3LCA1LCA3NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MCwgMTc0LCAxMywgNDEsIAotICAgIDI2LCAzNywgNSwgMjM5LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzNywgMTcxLCAxMywgNDEsIDI2LCAzNywgNSwgNzUsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAxNTksIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMywgMTYzLCAxMywgNDEsIAotICAgIDI2LCAzNywgNSwgNzgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTksIDE4NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNywgMTM0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMTQ2LCAxMywgNDEsIDI2LCAzNywgNSwgMTk0LCAxMywgNDEsIDI2LCAzNywgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDY4LCAxMywgNDEsIDI2LCAzNywgNSwgMjA2LCAxNjQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTk2LCAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxMjQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDIyNCwgNDEsIDYsIDYzLCAxMywgMjI0LCA0MSwgNiwgMjQ5LCAKLSAgICAyNTUsIDEzLCAyMjQsIDQxLCA2LCAyNDcsIDEyNSwgMTMsIDIyNCwgNDEsIDYsIDI0NSwgNTEsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICA3NCwgMTMsIDIyNCwgNDEsIDYsIDI0MCwgMTc0LCAxMywgMjI0LCA0MSwgNiwgMjM5LCA3NSwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIzNywgMTcxLCAxMywgMjI0LCA0MSwgNiwgNzUsIDEzLCAyMjQsIDQxLCA2LCAyMzAsIDE4NCwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIzMCwgNTQsIDEzLCAyMjQsIDQxLCA2LCAxNTksIDEzLCAyMjQsIDQxLCA2LCAyMjYsIDE4NSwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIyMywgMTYzLCAxMywgMjI0LCA0MSwgNiwgNzgsIDEzLCAyMjQsIDQxLCA2LCAyMTksIDE4NCwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIxNywgMTM0LCAxMywgMjI0LCA0MSwgNiwgMTQ2LCAxMywgMjI0LCA0MSwgNiwgMTk0LCAxMywgMjI0LCA0MSwgNiwgMjEwLCAKLSAgICA2OSwgMTMsIDIyNCwgNDEsIDYsIDY4LCAxMywgMjI0LCA0MSwgNiwgMjA2LCAxNjQsIDEzLCAyMjQsIDQxLCA2LCAyMDQsIAotICAgIDE0NCwgMTMsIDIyNCwgNDEsIDYsIDIwMywgMTk2LCAxMywgMjI0LCA0MSwgNiwgMjAzLCAxMjQsIDEzLCAyMjQsIDQxLCA2LCAKLSAgICAyMDIsIDE1OSwgMTMsIDIyNCwgNDEsIDUsIDYzLCAxMywgMjI0LCA0MSwgNSwgMjQ5LCAyNTUsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAyNDcsIDEyNSwgMTMsIDIyNCwgNDEsIDUsIDI0NSwgNTEsIDEzLCAyMjQsIDQxLCA1LCA3NCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDI0MCwgMTc0LCAxMywgMjI0LCA0MSwgNSwgMjM5LCA3NSwgMTMsIDIyNCwgNDEsIDUsIDIzNywgMTcxLCAxMywgMjI0LCA0MSwgCi0gICAgNSwgNzUsIDEzLCAyMjQsIDQxLCA1LCAyMzAsIDE4NCwgMTMsIDIyNCwgNDEsIDUsIDIzMCwgNTQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAxNTksIDEzLCAyMjQsIDQxLCA1LCAyMjYsIDE4NSwgMTMsIDIyNCwgNDEsIDUsIDIyMywgMTYzLCAxMywgMjI0LCA0MSwgNSwgCi0gICAgNzgsIDEzLCAyMjQsIDQxLCA1LCAyMTksIDE4NCwgMTMsIDIyNCwgNDEsIDUsIDIxNywgMTM0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMTQ2LCAxMywgMjI0LCA0MSwgNSwgMTk0LCAxMywgMjI0LCA0MSwgNSwgMjEwLCA2OSwgMTMsIDIyNCwgNDEsIDUsIDY4LCAKLSAgICAxMywgMjI0LCA0MSwgNSwgMjA2LCAxNjQsIDEzLCAyMjQsIDQxLCA1LCAyMDQsIDE0NCwgMTMsIDIyNCwgNDEsIDUsIDIwMywgCi0gICAgMTk2LCAxMywgMjI0LCA0MSwgNSwgMjAzLCAxMjQsIDEzLCAyMjQsIDQxLCA1LCAyMDIsIDE1OSwgMTMsIDM3LCA1LCAyNDMsIAotICAgIDg0LCA3NSwgMTMsIDM3LCA1LCAyNDMsIDg0LCAyMzAsIDE4NCwgMTMsIDI2LCA2LCAyNTEsIDIsIDEzLCAyNiwgNiwgMjQ4LCAKLSAgICAxMDYsIDEzLCAyNiwgNiwgMjM4LCAyMzUsIDEzLCAyNiwgNiwgMjQ0LCAzNywgMTMsIDI2LCA2LCAyNDEsIDM3LCAxMywgMjYsIAotICAgIDYsIDIwMiwgODMsIDEzLCAyNiwgNiwgMjQwLCAyNDgsIDEzLCAyNiwgNiwgMjA5LCA3NCwgMTMsIDI2LCA2LCAyMzAsIDIzMCwgCi0gICAgMTMsIDI2LCA2LCAyMjksIDI0NywgMTMsIDI2LCA2LCAyMjgsIDI0LCAxMywgMjYsIDYsIDIyMywgMjQ2LCAxMywgMjYsIDYsIAotICAgIDIyMSwgODQsIDEzLCAyNiwgNiwgMjAzLCAxNzAsIDEzLCAyNiwgNiwgMjIwLCAzNCwgMTMsIDI2LCA2LCAyMTgsIDE2NywgCi0gICAgMTMsIDI2LCA2LCAyMTYsIDU5LCAxMywgMjYsIDYsIDIwOSwgNzUsIDk3LCAxMywgMjYsIDYsIDIxMiwgMTQ0LCAxMywgMjYsIAotICAgIDYsIDIwOSwgMjA3LCAxMywgMjYsIDYsIDIwNiwgMjE2LCAxMywgMjYsIDYsIDIxOCwgMTkyLCAxMywgMjYsIDYsIDI0NiwgCi0gICAgMTQyLCAxMywgMjYsIDYsIDIxNywgMjAyLCAxMywgMjYsIDYsIDIyMCwgMzYsIDEzLCAyNiwgMjIzLCAxMDEsIDEzLCAyNiwgCi0gICAgNSwgMjUxLCAyLCAxMywgMjYsIDUsIDI0OCwgMTA2LCAxMywgMjYsIDUsIDIzOCwgMjM1LCAxMywgMjYsIDUsIDI0NCwgMzcsIAotICAgIDEzLCAyNiwgNSwgMjQxLCAzNywgMTMsIDI2LCA1LCAyMDIsIDgzLCAxMywgMjYsIDUsIDI0MCwgMjQ4LCAxMywgMjYsIDUsIAotICAgIDIwOSwgNzQsIDEzLCAyNiwgNSwgMjMwLCAyMzAsIDEzLCAyNiwgNSwgMjI5LCAyNDcsIDEzLCAyNiwgNSwgMjI4LCAyNCwgCi0gICAgMTMsIDI2LCA1LCAyMjMsIDI0NiwgMTMsIDI2LCA1LCAyMjEsIDg0LCAxMywgMjYsIDUsIDIwMywgMTcwLCAxMywgMjYsIDUsIAotICAgIDIyMCwgMzQsIDEzLCAyNiwgNSwgMjE4LCAxNjcsIDEzLCAyNiwgNSwgMjE2LCA1OSwgMTMsIDI2LCA1LCA0NiwgMjEyLCAKLSAgICAxNDQsIDEzLCAyNiwgNSwgMjEyLCAxNDQsIDEzLCAyNiwgNSwgMjA5LCAyMDcsIDEzLCAyNiwgNSwgMjA2LCAyMTYsIDEzLCAKLSAgICAyNiwgNSwgMjE4LCAxOTIsIDEzLCAyNiwgNSwgMjQ2LCAxNDIsIDEzLCAyNiwgNSwgMjE3LCAyMDIsIDEzLCAyNiwgNSwgCi0gICAgMjIwLCAzNiwgMTMsIDI2LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDI2LCAyNDEsIDM4LCA5NywgMTMsIDI2LCAyMDksIDc1LCAKLSAgICA5NywgMTMsIDI2LCAyMjksIDI0OCwgOTcsIDEzLCAyNiwgMjE4LCAxOTMsIDk3LCAxMywgMjYsIDIxNiwgNjAsIDk3LCAxMywgCi0gICAgMjYsIDIxOCwgMTY4LCA5NywgMTMsIDM3LCA2LCAyNTEsIDIsIDEzLCAzNywgNiwgMjQ4LCAxMDYsIDEzLCAzNywgNiwgMjM4LCAKLSAgICAyMzUsIDEzLCAzNywgNiwgMjQ0LCAzNywgMTMsIDM3LCA2LCAyNDEsIDM3LCAxMywgMzcsIDYsIDIwMiwgODMsIDEzLCAzNywgCi0gICAgNiwgMjQwLCAyNDgsIDEzLCAzNywgNiwgMjA5LCA3NCwgMTMsIDM3LCA2LCAyMzAsIDIzMCwgMTMsIDM3LCA2LCAyMjksIAotICAgIDI0NywgMTMsIDM3LCA2LCAyMjgsIDI0LCAxMywgMzcsIDYsIDIyMywgMjQ2LCAxMywgMzcsIDYsIDIyMSwgODQsIDEzLCAzNywgCi0gICAgNiwgMjAzLCAxNzAsIDEzLCAzNywgNiwgMjIwLCAzNCwgMTMsIDM3LCA2LCAyMTgsIDE2NywgMTMsIDM3LCA2LCAyMTYsIDU5LCAKLSAgICAxMywgMzcsIDYsIDIwOSwgNzUsIDk3LCAxMywgMzcsIDYsIDIxMiwgMTQ0LCAxMywgMzcsIDYsIDIwOSwgMjA3LCAxMywgMzcsIAotICAgIDYsIDIwNiwgMjE2LCAxMywgMzcsIDYsIDIxOCwgMTkyLCAxMywgMzcsIDYsIDI0NiwgMTQyLCAxMywgMzcsIDYsIDIxNywgCi0gICAgMjAyLCAxMywgMzcsIDYsIDIyMCwgMzYsIDEzLCAzNywgMjIzLCAxMDEsIDEzLCAzNywgNSwgMjUxLCAyLCAxMywgMzcsIDUsIAotICAgIDI0OCwgMTA2LCAxMywgMzcsIDUsIDIzOCwgMjM1LCAxMywgMzcsIDUsIDI0NCwgMzcsIDEzLCAzNywgNSwgMjQxLCAzNywgCi0gICAgMTMsIDM3LCA1LCAyMDIsIDgzLCAxMywgMzcsIDUsIDI0MCwgMjQ4LCAxMywgMzcsIDUsIDIwOSwgNzQsIDEzLCAzNywgNSwgCi0gICAgMjMwLCAyMzAsIDEzLCAzNywgNSwgMjI5LCAyNDcsIDEzLCAzNywgNSwgMjI4LCAyNCwgMTMsIDM3LCA1LCAyMjMsIDI0NiwgCi0gICAgMTMsIDM3LCA1LCAyMjEsIDg0LCAxMywgMzcsIDUsIDIwMywgMTcwLCAxMywgMzcsIDUsIDIyMCwgMzQsIDEzLCAzNywgNSwgCi0gICAgMjE4LCAxNjcsIDEzLCAzNywgNSwgMjE2LCA1OSwgMTMsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCAzNywgNSwgMjEyLCAKLSAgICAxNDQsIDEzLCAzNywgNSwgMjA5LCAyMDcsIDEzLCAzNywgNSwgMjA2LCAyMTYsIDEzLCAzNywgNSwgMjE4LCAxOTIsIDEzLCAKLSAgICAzNywgNSwgMjQ2LCAxNDIsIDEzLCAzNywgNSwgMjE3LCAyMDIsIDEzLCAzNywgNSwgMjIwLCAzNiwgMTMsIDM3LCAyMTksIAotICAgIDY5LCAyNDMsIDIwNSwgMTMsIDM3LCAyNDEsIDM4LCA5NywgMTMsIDM3LCAyMDksIDc1LCA5NywgMTMsIDM3LCAyMjksIDI0OCwgCi0gICAgOTcsIDEzLCAzNywgMjE4LCAxOTMsIDk3LCAxMywgMzcsIDIxNiwgNjAsIDk3LCAxMywgMzcsIDIxOCwgMTY4LCA5NywgMTMsIAotICAgIDI2LCAzNywgNiwgMjUxLCAyLCAxMywgMjYsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDI2LCAzNywgNiwgMjM4LCAyMzUsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDI0NCwgMzcsIDEzLCAyNiwgMzcsIDYsIDI0MSwgMzcsIDEzLCAyNiwgMzcsIDYsIDIwMiwgODMsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDI0MCwgMjQ4LCAxMywgMjYsIDM3LCA2LCAyMDksIDc0LCAxMywgMjYsIDM3LCA2LCAyMzAsIDIzMCwgMTMsIAotICAgIDI2LCAzNywgNiwgMjI5LCAyNDcsIDEzLCAyNiwgMzcsIDYsIDIyOCwgMjQsIDEzLCAyNiwgMzcsIDYsIDIyMywgMjQ2LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMjEsIDg0LCAxMywgMjYsIDM3LCA2LCAyMDMsIDE3MCwgMTMsIDI2LCAzNywgNiwgMjIwLCAzNCwgMTMsIAotICAgIDI2LCAzNywgNiwgMjE4LCAxNjcsIDEzLCAyNiwgMzcsIDYsIDIxNiwgNTksIDEzLCAyNiwgMzcsIDYsIDIwOSwgNzUsIDk3LCAKLSAgICAxMywgMjYsIDM3LCA2LCAyMTIsIDE0NCwgMTMsIDI2LCAzNywgNiwgMjA5LCAyMDcsIDEzLCAyNiwgMzcsIDYsIDIwNiwgCi0gICAgMjE2LCAxMywgMjYsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDI2LCAzNywgNiwgMjQ2LCAxNDIsIDEzLCAyNiwgMzcsIDYsIAotICAgIDIxNywgMjAyLCAxMywgMjYsIDM3LCA2LCAyMjAsIDM2LCAxMywgMjYsIDM3LCAyMjMsIDEwMSwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjUxLCAyLCAxMywgMjYsIDM3LCA1LCAyNDgsIDEwNiwgMTMsIDI2LCAzNywgNSwgMjM4LCAyMzUsIDEzLCAyNiwgMzcsIDUsIAotICAgIDI0NCwgMzcsIDEzLCAyNiwgMzcsIDUsIDI0MSwgMzcsIDEzLCAyNiwgMzcsIDUsIDIwMiwgODMsIDEzLCAyNiwgMzcsIDUsIAotICAgIDI0MCwgMjQ4LCAxMywgMjYsIDM3LCA1LCAyMDksIDc0LCAxMywgMjYsIDM3LCA1LCAyMzAsIDIzMCwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjI5LCAyNDcsIDEzLCAyNiwgMzcsIDUsIDIyOCwgMjQsIDEzLCAyNiwgMzcsIDUsIDIyMywgMjQ2LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMjEsIDg0LCAxMywgMjYsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDI2LCAzNywgNSwgMjIwLCAzNCwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjE4LCAxNjcsIDEzLCAyNiwgMzcsIDUsIDIxNiwgNTksIDEzLCAyNiwgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDI2LCAKLSAgICAzNywgNSwgMjEyLCAxNDQsIDEzLCAyNiwgMzcsIDUsIDIwOSwgMjA3LCAxMywgMjYsIDM3LCA1LCAyMDYsIDIxNiwgMTMsIAotICAgIDI2LCAzNywgNSwgMjE4LCAxOTIsIDEzLCAyNiwgMzcsIDUsIDI0NiwgMTQyLCAxMywgMjYsIDM3LCA1LCAyMTcsIDIwMiwgCi0gICAgMTMsIDI2LCAzNywgNSwgMjIwLCAzNiwgMTMsIDI2LCAzNywgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCAyNiwgMzcsIDI0MSwgCi0gICAgMzgsIDk3LCAxMywgMjYsIDM3LCAyMDksIDc1LCA5NywgMTMsIDI2LCAzNywgMjI5LCAyNDgsIDk3LCAxMywgMjYsIDM3LCAKLSAgICAyMTgsIDE5MywgOTcsIDEzLCAyNiwgMzcsIDIxNiwgNjAsIDk3LCAxMywgMjYsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI1MSwgMiwgMTMsIDQxLCAyNiwgNiwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDYsIDIzOCwgMjM1LCAxMywgNDEsIAotICAgIDI2LCA2LCAyNDQsIDM3LCAxMywgNDEsIDI2LCA2LCAyNDEsIDM3LCAxMywgNDEsIDI2LCA2LCAyMDIsIDgzLCAxMywgNDEsIAotICAgIDI2LCA2LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgNiwgMjA5LCA3NCwgMTMsIDQxLCAyNiwgNiwgMjMwLCAyMzAsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCA2LCAyMjgsIDI0LCAxMywgNDEsIDI2LCA2LCAyMjMsIDI0NiwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjIxLCA4NCwgMTMsIDQxLCAyNiwgNiwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDYsIDIyMCwgMzQsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDIxOCwgMTY3LCAxMywgNDEsIDI2LCA2LCAyMTYsIDU5LCAxMywgNDEsIDI2LCA2LCAyMDksIDc1LCA5NywgMTMsIAotICAgIDQxLCAyNiwgNiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDYsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCA2LCAyMDYsIDIxNiwgCi0gICAgMTMsIDQxLCAyNiwgNiwgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDYsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCA2LCAyMTcsIAotICAgIDIwMiwgMTMsIDQxLCAyNiwgNiwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMjIzLCAxMDEsIDEzLCA0MSwgMjYsIDUsIDI1MSwgMiwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDUsIDIzOCwgMjM1LCAxMywgNDEsIDI2LCA1LCAyNDQsIDM3LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDEsIDM3LCAxMywgNDEsIDI2LCA1LCAyMDIsIDgzLCAxMywgNDEsIDI2LCA1LCAyNDAsIDI0OCwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjA5LCA3NCwgMTMsIDQxLCAyNiwgNSwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDUsIDIyOSwgMjQ3LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMjgsIDI0LCAxMywgNDEsIDI2LCA1LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgNSwgMjIxLCA4NCwgCi0gICAgMTMsIDQxLCAyNiwgNSwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDUsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDUsIDIxOCwgMTY3LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMTYsIDU5LCAxMywgNDEsIDI2LCA1LCA0NiwgMjEyLCAxNDQsIDEzLCA0MSwgMjYsIDUsIDIxMiwgCi0gICAgMTQ0LCAxMywgNDEsIDI2LCA1LCAyMDksIDIwNywgMTMsIDQxLCAyNiwgNSwgMjA2LCAyMTYsIDEzLCA0MSwgMjYsIDUsIAotICAgIDIxOCwgMTkyLCAxMywgNDEsIDI2LCA1LCAyNDYsIDE0MiwgMTMsIDQxLCAyNiwgNSwgMjE3LCAyMDIsIDEzLCA0MSwgMjYsIAotICAgIDUsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgNDEsIDI2LCAyNDEsIDM4LCA5NywgMTMsIAotICAgIDQxLCAyNiwgMjA5LCA3NSwgOTcsIDEzLCA0MSwgMjYsIDIyOSwgMjQ4LCA5NywgMTMsIDQxLCAyNiwgMjE4LCAxOTMsIDk3LCAKLSAgICAxMywgNDEsIDI2LCAyMTYsIDYwLCA5NywgMTMsIDQxLCAyNiwgMjE4LCAxNjgsIDk3LCAxMywgNDEsIDI2LCAzNywgNiwgCi0gICAgMjUxLCAyLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ4LCAxMDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzgsIDIzNSwgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDYsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDEsIDM3LCAxMywgNDEsIDI2LCAzNywgNiwgMjAyLCAKLSAgICA4MywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCA3NCwgMTMsIDQxLCAyNiwgCi0gICAgMzcsIDYsIDIzMCwgMjMwLCAxMywgNDEsIDI2LCAzNywgNiwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjgsIDI0LCAKLSAgICAxMywgNDEsIDI2LCAzNywgNiwgMjIzLCAyNDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjEsIDg0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjAzLCAxNzAsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjAsIDM0LCAxMywgNDEsIDI2LCAzNywgNiwgMjE4LCAxNjcsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCAyMTYsIDU5LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCA3NSwgOTcsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCAzNywgNiwgMjA2LCAyMTYsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjE3LCAyMDIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAzNywgMjIzLCAxMDEsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA1LCAyNTEsIDIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgMzcsIDUsIAotICAgIDIzOCwgMjM1LCAxMywgNDEsIDI2LCAzNywgNSwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgMzcsIDUsIDI0MSwgMzcsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCAyMDIsIDgzLCAxMywgNDEsIDI2LCAzNywgNSwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDksIAotICAgIDc0LCAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgCi0gICAgMzcsIDUsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMSwgODQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyMTgsIDE2NywgMTMsIDQxLCAyNiwgMzcsIDUsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDM3LCA1LCA0NiwgMjEyLCAxNDQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjA2LCAyMTYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NiwgMTQyLCAKLSAgICAxMywgNDEsIDI2LCAzNywgNSwgMjE3LCAyMDIsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAzNywgCi0gICAgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCA0MSwgMjYsIDM3LCAyNDEsIDM4LCA5NywgMTMsIDQxLCAyNiwgMzcsIDIwOSwgNzUsIAotICAgIDk3LCAxMywgNDEsIDI2LCAzNywgMjI5LCAyNDgsIDk3LCAxMywgNDEsIDI2LCAzNywgMjE4LCAxOTMsIDk3LCAxMywgNDEsIAotICAgIDI2LCAzNywgMjE2LCA2MCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMTgsIDE2OCwgOTcsIDEzLCAyNiwgNiwgMjQzLCAxOTksIAotICAgIDEzLCAyNiwgNSwgMjQzLCAxOTksIDEzLCAyNiwgMTcsIDIwMiwgODQsIDEzLCAyNiwgMTcsIDEwNSwgMTMsIDI2LCAxNywgCi0gICAgMTA4LCAxMywgMjYsIDE3LCAxNDcsIDEzLCAyNiwgMTcsIDE0OSwgMTMsIDI2LCAxNywgMTcwLCAxMywgMjYsIDE3LCAxOTUsIAotICAgIDEzLCAyNiwgMTcsIDIxMywgMTExLCAxMywgMjYsIDE3LCAxOTksIDEzLCAyNiwgMTcsIDIyMiwgNjMsIDEzLCAxNjksIDE3LCAKLSAgICAyMDIsIDg0LCAxMywgMTY5LCAxNywgMTA1LCAxMywgMTY5LCAxNywgMTA4LCAxMywgMTY5LCAxNywgMTQ3LCAxMywgMTY5LCAKLSAgICAxNywgMTQ5LCAxMywgMTY5LCAxNywgMTcwLCAxMywgMTY5LCAxNywgMTk1LCAxMywgMTY5LCAxNywgMjEzLCAxMTEsIDEzLCAKLSAgICAxNjksIDE3LCAxOTksIDEzLCAxNjksIDE3LCAyMjIsIDYzLCAxMywgNDEsIDE3LCAyMDIsIDg0LCAxMywgNDEsIDE3LCAxMDUsIAotICAgIDEzLCA0MSwgMTcsIDEwOCwgMTMsIDQxLCAxNywgMTQ3LCAxMywgNDEsIDE3LCAxNDksIDEzLCA0MSwgMTcsIDE3MCwgMTMsIAotICAgIDQxLCAxNywgMTk1LCAxMywgNDEsIDE3LCAyMTMsIDExMSwgMTMsIDQxLCAxNywgMTk5LCAxMywgNDEsIDE3LCAyMjIsIDYzLCAKLSAgICAxMywgNDEsIDI2LCAxNywgMjAyLCA4NCwgMTMsIDQxLCAyNiwgMTcsIDEwNSwgMTMsIDQxLCAyNiwgMTcsIDEwOCwgMTMsIAotICAgIDQxLCAyNiwgMTcsIDE0NywgMTMsIDQxLCAyNiwgMTcsIDE0OSwgMTMsIDQxLCAyNiwgMTcsIDE3MCwgMTMsIDQxLCAyNiwgCi0gICAgMTcsIDE5NSwgMTMsIDQxLCAyNiwgMTcsIDIxMywgMTExLCAxMywgNDEsIDI2LCAxNywgMTk5LCAxMywgNDEsIDI2LCAxNywgCi0gICAgMjIyLCA2MywgMTMsIDIyNCwgNDEsIDE3LCAyMDIsIDg0LCAxMywgMjI0LCA0MSwgMTcsIDEwNSwgMTMsIDIyNCwgNDEsIDE3LCAKLSAgICAxMDgsIDEzLCAyMjQsIDQxLCAxNywgMTQ3LCAxMywgMjI0LCA0MSwgMTcsIDE0OSwgMTMsIDIyNCwgNDEsIDE3LCAxNzAsIAotICAgIDEzLCAyMjQsIDQxLCAxNywgMTk1LCAxMywgMjI0LCA0MSwgMTcsIDIxMywgMTExLCAxMywgMjI0LCA0MSwgMTcsIDE5OSwgCi0gICAgMTMsIDIyNCwgNDEsIDE3LCAyMjIsIDYzLCAyMSwgMTI4LCAyMzEsIDM1LCAyMSwgMjM3LCAxMjAsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDExNiwgMjMxLCAzNSwgMjEsIDIzNywgMTA1LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDksIDIzMSwgMzUsIDIxLCAyMzcsIAotICAgIDEyMiwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAyNDgsIDExNywgMjEsIDIzNywgMTIwLCAxMjIsIDI0OCwgMTE3LCAyMSwgCi0gICAgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgCi0gICAgMTI4LCAxMjIsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzYsIDIyNywgCi0gICAgMCwgMjEsIDIzNywgMTIwLCAxMjIsIDIzNiwgMjM3LCAyMSwgMTI4LCAxMjIsIDIyNCwgMTQ4LCAyMSwgMjM3LCAxMjAsIAotICAgIDEyMiwgMjI0LCAxNDgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIxNiwgMTg4LCAKLSAgICAyMjksIDI4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM1LCAKLSAgICAyMSwgMTI4LCAxMjIsIDIzNiwgMjM2LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDcsIDIxLCAKLSAgICAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTIyLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxMDEsIAotICAgIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIAotICAgIDIwOCwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEyNywgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjQ1LCAKLSAgICAxMjcsIDIxLCAxMjgsIDEwMSwgMjQ4LCAxMTgsIDExNSwgMjMxLCAzNSwgMjEsIDEyOCwgMTIyLCAyNDgsIDExOCwgMTE1LCAKLSAgICAyMjQsIDE0OCwgMjEsIDEyOCwgMTIyLCAxMDEsIDIwOSwgMjEsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDIwOSwgMjEsIAotICAgIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTEsIDUzLCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ4LCAxMTgsIAotICAgIDE0OCwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMzYsIAotICAgIDIzNiwgMjExLCAxODYsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM2LCAxNDgsIDIxMiwgCi0gICAgMTU1LCAyMSwgMTI4LCAxMjIsIDExMiwgMTAxLCAyMzYsIDIzNiwgMTQ4LCAyNDUsIDIwNywgMjEsIDEyOCwgMTIyLCAyMzYsIAotICAgIDIzNiwgMTAxLCAxMTIsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAxMTIsIDIxMSwgMTg2LCAxNDgsIDIzOSwgCi0gICAgMTUxLCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDUsIDk3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDYsIDYwLCAKLSAgICAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyMzYsIDExNCwgMjEsIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjM2LCAyMzUsIDIxLCAKLSAgICAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEyMiwgMTAxLCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDE0OCwgCi0gICAgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAyMTIsIDE1NiwgMjQ1LCAyMDcsIDIxLCAxMjgsIAotICAgIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAyMTIsIDE1NiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyMzYsIDExNSwgCi0gICAgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDIzNiwgMTE1LCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIAotICAgIDEwMSwgMjQ1LCAyMDgsIDIzNiwgMjM2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMjgsIDE0OCwgCi0gICAgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAyMzksIDE1MSwgMjEsIDEyOCwgMTIyLCAxMDEsIAotICAgIDI0NSwgMjA4LCAyNDUsIDk4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxMDEsIDE0OCwgMjQ1LCA5OCwgMTIyLCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI0NSwgOTgsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCA0MywgCi0gICAgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDQzLCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDE0OCwgCi0gICAgMjUwLCAyMTYsIDIxOSwgMjEyLCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjUwLCAyMTYsIDIzMSwgNTAsIAotICAgIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCA0MywgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxMDEsIAotICAgIDE0OCwgMjQ1LCAyMDgsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTEsIDIxLCAKLSAgICAxMjgsIDEyMiwgMTAxLCAxNDgsIDI1MCwgMjE1LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjEyLCAxMjIsIAotICAgIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgMjUwLCAyMTYsIDIxOSwgMjEyLCAxMjIsIDI0NSwgMTI3LCAyMSwgMTI4LCAKLSAgICAxMDEsIDE0OCwgMjUwLCAyMTYsIDEyMiwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzYsIDExNSwgMTAxLCAyMzYsIAotICAgIDIzNSwgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTMsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAKLSAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIDIzNiwgMjM1LCAyMSwgMjM3LCAxMTEsIDIzOSwgCi0gICAgMTQ3LCAyMzksIDI1NCwgMjQ1LCAyMDcsIDIxLCAyMzcsIDExMSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwOCwgMjExLCAKLSAgICAxOTMsIDIxLCAyMzcsIDExOCwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIDEyOCwgMjM5LCAxNDcsIDIzOSwgCi0gICAgMjU0LCAyNDUsIDIwOCwgMjQ4LCAxMTcsIDIxLCAyMzcsIDEwOSwgMjM5LCAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIAotICAgIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAKLSAgICAyMzksIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM5LCAxNDcsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzOSwgMTQ3LCAKLSAgICAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyNDgsIDExNywgMjEsIDIzNywgCi0gICAgMTExLCAyMzcsIDQ2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMzksIAotICAgIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTYsIDIzOSwgMjMzLCAyMzksIDI1NCwgCi0gICAgMjExLCAxODUsIDIxLCAyMzcsIDExNiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjIwLCA4LCAyMSwgMjM3LCAKLSAgICAxMDksIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIyMCwgOCwgMjEsIDIzNywgMTA1LCAyMzksIDIzMywgMjM5LCAKLSAgICAyNTQsIDIxMSwgMTg1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzNiwgMjM1LCAyMSwgCi0gICAgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzNiwgMjM2LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAKLSAgICAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDIzNiwgMjM2LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgCi0gICAgMTEwLCAyMSwgMjM3LCAxMTEsIDI0OCwgMTA0LCAyMTksIDEzNSwgMjQwLCA5NCwgMjEsIDIzNywgMTExLCAyMzcsIDQ1LCAKLSAgICAyMSwgMjM3LCAxMTEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMTQ4LCAyMTIsIDE1NSwgMjEsIAotICAgIDIzNywgMTExLCAxNDgsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExMSwgMjExLCAKLSAgICAxOTQsIDEyMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjQ2LCAyMTcsIDIxLCAyMzcsIDExMSwgCi0gICAgMjExLCAxOTQsIDI0NiwgMjE4LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyNDYsIDIxOCwgMTQ4LCAKLSAgICAyMTIsIDE1NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDIyNywgODUsIDIxLCAyMzcsIDExNywgMjEsIAotICAgIDIzNywgMTE4LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTgsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTgsIAotICAgIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDEwNywgMjQ1LCA5NCwgMjEsIDIzNywgMTA2LCAyMSwgMjM3LCAxMTYsIDIyMCwgOCwgCi0gICAgMjEsIDIzNywgMTE1LCAyMSwgMjM3LCAxMTYsIDE3MSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTE2LCAxNDgsIDIxMiwgCi0gICAgMTU1LCAyMSwgMjM3LCAxMTYsIDE3MSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDExNiwgMjIxLCAxOTIsIDIwOSwgCi0gICAgMjEsIDIxLCAyMzcsIDExNiwgMTcxLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAxMTYsIDE0OCwgMjM5LCAxNTEsIDIxLCAKLSAgICAyMzcsIDExNCwgMjIwLCA4LCAyMSwgMjM3LCAxMTMsIDIxLCAyMzcsIDExOSwgMjEsIDIzNywgMTA0LCAyMSwgMjM3LCAxMDUsIAotICAgIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDEwNSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwNSwgMTQ4LCAyMzksIAotICAgIDE1MSwgMjEsIDIzNywgMTA5LCAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTcxLCAxNDgsIDIzOSwgMTUxLCAyMSwgMjM3LCAKLSAgICAxMDgsIDIxLCAyMzcsIDEwOSwgMjEyLCAzNiwgMjEsIDIzNywgMTA5LCAxNzEsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIAotICAgIDEwOSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTA5LCAxNzEsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIAotICAgIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDE0OCwgMjEyLCAxNTYsIDIwOCwgMTI3LCAyMzEsIDM1LCAyMSwgCi0gICAgMjM3LCAxMDksIDE0OCwgMjQ4LCAxMDQsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEyMSwgMjEsIDEyOCwgMTIyLCAxMDEsIAotICAgIDIxNSwgMjUyLCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTA5LCAxMjIsIDEwMSwgMjE1LCAKLSAgICAyNTIsIDIxLCAyMzcsIDEyMiwgMTIyLCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMDksIDIyNywgODUsIDIxLCAxMjgsIAotICAgIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjQ1LCAyMDcsIDIxLCAKLSAgICAyMzcsIDEwOSwgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDUsIDIwNywgMjEsIDEyOCwgMjI3LCA4NiwgMjQyLCA3MCwgMjEsIAotICAgIDEyOCwgMjI3LCA4NiwgMTIxLCAyMTUsIDI0OCwgMjExLCA1MiwgMjEsIDEyOCwgMjI3LCA4NiwgMTIxLCAyMTUsIDI0OCwgCi0gICAgMjQ1LCA4NSwgMjEsIDEyOCwgMjI3LCA4NiwgMTIxLCAyMTksIDIyMCwgMjQ2LCA2MCwgMjEsIDEyOCwgMjI3LCA4NiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDIyNywgODYsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjAsIDIyNywgODYsIAotICAgIDIwNiwgMjI0LCAyMSwgMjM3LCAxMDUsIDIyNywgODYsIDIwNiwgMjI0LCAyMSwgMjM3LCAxMjIsIDIyNywgODYsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAyMjcsIDg2LCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMjI3LCA4NiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDIyNywgODYsIDIwOCwgMTI4LCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIAotICAgIDIyNywgODYsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAyMjcsIDg2LCAKLSAgICAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEyMiwgMjI3LCA4NiwgMTIyLCAxNDgsIDEyMiwgMTQ4LCAyMTksIDIxMSwgMjEsIAotICAgIDIzNywgMTIyLCAyMjcsIDg2LCAxMjIsIDE0OCwgMTIyLCAyMDksIDIxLCAyMSwgMTI4LCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgCi0gICAgMjM3LCAxMjAsIDIyNywgODYsIDIzMSwgMzUsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDIzNywgMTIyLCAKLSAgICAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjI3LCA4NSwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgCi0gICAgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAxMjIsIDEwMSwgMjI3LCA4NSwgMjEsIDIzNywgMTA5LCAyMTUsIDI1MiwgMjEsIAotICAgIDIzNywgMTIyLCAxMjIsIDEwMSwgMjI3LCA4NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTMxLCAyMjcsIDg1LCAyMSwgCi0gICAgMjM3LCAxMjAsIDEyMiwgMTAxLCAyNDUsIDEzMSwgMjI3LCA4NSwgMjEsIDEyOCwgMjE1LCAyNTMsIDI0MiwgNzAsIDIxLCAKLSAgICAyMzcsIDEwOSwgMjE1LCAyNTMsIDEyMSwgMTIyLCAxNDgsIDIzNiwgMTE2LCAyMjQsIDE0OCwgMjEsIDIzNywgMTIyLCAyMTUsIAotICAgIDI1MywgMTIxLCAxMDEsIDE0OCwgMTIyLCAyNDUsIDEzMCwgMjEsIDEyOCwgMjE1LCAyNTMsIDIwNiwgMjI0LCAyMSwgMTI4LCAKLSAgICAyMTUsIDI1MywgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAxMjgsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIAotICAgIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDUsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjIsIDIxNSwgCi0gICAgMjUzLCAyMjcsIDg1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjI0LCAxNDgsIDIxLCAxMjgsIDIxNSwgMjUzLCAxMDEsIDI0NSwgCi0gICAgMjA3LCAyMSwgMTI4LCAyMTUsIDI1MywgMTAxLCAyMTYsIDE4OCwgMjI5LCAyOCwgMjEsIDEyOCwgMjE1LCAyNTMsIDIzMSwgCi0gICAgMzUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMDksIDIxLCAyMSwgMjM3LCAxMDcsIDIxNSwgMjUzLCAyMDksIDIxLCAyMSwgMTI4LCAKLSAgICAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIAotICAgIDExNCwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjIwLCAzMSwgMjEsIDIzNywgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIAotICAgIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTA3LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMzEsIDQ5LCAyMSwgMjM3LCAKLSAgICAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIwNiwgMjQ3LCAyMSwgMjM3LCAxMTYsIDEyMiwgMjE1LCAyNTMsIDIyNywgCi0gICAgODUsIDIxLCAyMzcsIDEwOSwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTIyLCAxMjIsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMTI4LCAxMDEsIAotICAgIDI0MiwgNzAsIDIxLCAyMzcsIDEwOSwgMjI0LCAxNDgsIDIxLCAxMjgsIDEwMSwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMCwgCi0gICAgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMTAxLCAxMTIsIDE0OCwgCi0gICAgMjEyLCAxNTUsIDIxLCAyMzcsIDEwNywgMTAxLCAyMDksIDIxLCAyMSwgMTI4LCAxMDEsIDE0OCwgMjI3LCA4NSwgMjEsIAotICAgIDEyOCwgMTAxLCAyMjcsIDg1LCAyMSwgMTI4LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEwMSwgCi0gICAgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDExNCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjIwLCAzMSwgMjEsIAotICAgIDIzNywgMTE2LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIAotICAgIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTAxLCAyMTUsIAotICAgIDI1MywgMjI3LCA4NiwgMjMxLCA0OSwgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAKLSAgICAxMjAsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTgsIDEwMSwgMjE1LCAyNTMsIDIyNywgCi0gICAgODYsIDI0NSwgMjA3LCAyMSwgMjM3LCAxMTgsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMTIsIDE1NSwgCi0gICAgMjEsIDIzNywgMTA3LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjE5LCAyMTEsIDIxLCAyMzcsIDEwNywgCi0gICAgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIzMSwgNDksIDIxLCAyMzcsIDEwNywgMTAxLCAyMTUsIDI1MywgCi0gICAgMjI3LCA4NiwgMjQ1LCAyMDcsIDIxLCAyMzcsIDEwOSwgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgCi0gICAgMTU1LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxNDgsIAotICAgIDI0MywgMjI3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDE0OCwgMjQ1LCAyMDcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyMTIsIDE1NiwgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAxMjIsIDI0OCwgMTE3LCAyMSwgCi0gICAgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDI0NywgMjUxLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxNDgsIDIxMiwgMTU2LCAKLSAgICAxMjIsIDIzNiwgMjM3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM5LCAxNTIsIDEyMiwgMjExLCA1MiwgMjEsIDEyOCwgMTIyLCAKLSAgICAxNDgsIDIzOSwgMTUyLCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMTEzLCAyMSwgMTI4LCAxMjIsIDE0OCwgCi0gICAgMjQ1LCA5NCwgMjEsIDEyOCwgMTIyLCAxNDgsIDI0NSwgODgsIDE0OCwgMjMxLCA2LCAyMSwgMjM3LCAxMTgsIDEyMiwgMTQ4LCAKLSAgICAyNDUsIDg4LCAxNDgsIDIzMSwgNiwgMjEsIDEyOCwgMTIyLCAxNDgsIDI0NSwgODgsIDE0OCwgMjA2LCAyNDcsIDIxLCAxMjgsIAotICAgIDEyMiwgMTQ4LCAyNDYsIDYxLCAyMSwgMjM3LCAxMTYsIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTE2LCAxMjIsIDE0OCwgCi0gICAgMjIwLCA4LCAyMSwgMjM3LCAxMDksIDEyMiwgMTQ4LCAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIyOCwgNywgCi0gICAgMjEsIDIzNywgMTA5LCAxMjIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIxMiwgMzYsIDIxLCAyMzcsIAotICAgIDEyMiwgMTIyLCAxNDgsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEyMiwgMTQ4LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMjIsIAotICAgIDEyMiwgMjA5LCAyMSwgMjEsIDEyOCwgMjA5LCAyMSwgMjEsIDEyOCwgMTQ4LCAyMzcsIDQ1LCAyMSwgMTI4LCAxNDgsIDIxMiwgCi0gICAgMTU2LCAyNDMsIDIyNywgMjEsIDEyOCwgMTQ4LCAyMTIsIDE1NiwgMjQ1LCAyMDcsIDIxLCAxMjgsIDE0OCwgMjEyLCAxNTYsIAotICAgIDI0OCwgMTE3LCAyMSwgMTI4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMjIsIDIyNCwgMTQ4LCAKLSAgICAyMSwgMTI4LCAxNDgsIDI0OCwgMTA0LCAxMDEsIDIxNSwgMjUyLCAyMSwgMTI4LCAxNDgsIDI0OCwgMTA0LCAyMTUsIDI1MywgCi0gICAgMjI3LCA4NSwgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTIwLCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAxMTUsIDEyMCwgCi0gICAgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyNiwgMjM5LCAyNTMsIDIxLCAxMjgsIDE0OCwgMjA2LCAyNDgsIAotICAgIDIzOSwgMTQ3LCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAxMTUsIDIzOSwgMTQ3LCAyMTYsIDE4OCwgMjI5LCAyOCwgMjEsIAotICAgIDIzNywgMTEyLCAyMSwgMTI4LCAyMzcsIDQ1LCAyMSwgMjA4LCAxMjksIDIxMiwgMTE5LCAyMSwgMjA4LCAxMjksIDIyMywgCi0gICAgMjI1LCAyMSwgMjA4LCAxMjksIDI0OCwgMTAzLCAyMSwgMjM4LCAyLCAyMTIsIDExOSwgMjEsIDIzOCwgMiwgMjIzLCAyMjUsIAotICAgIDIxLCAyMzgsIDIsIDI0OCwgMTAzLCAyMSwgMjExLCAzNywgMjEyLCAxMTksIDIxLCAyMTEsIDM3LCAyMjMsIDIyNSwgMjEsIAotICAgIDIxMSwgMzcsIDI0OCwgMTAzLCAyMSwgMjQ3LCAyMDEsIDIxMiwgMTE5LCAyMSwgMjQ3LCAyMDEsIDIyMywgMjI1LCAyMSwgCi0gICAgMjQ3LCAyMDEsIDI0OCwgMTAzLCAyMSwgMjE1LCAxNDMsIDIxMiwgMTE5LCAyMSwgMjE1LCAxNDMsIDIyMywgMjI1LCAyMSwgCi0gICAgMjE1LCAxNDMsIDI0OCwgMTAzLCAyMSwgMjEwLCAxODksIDIxMCwgMTAyLCAyMSwgMjEwLCAxODksIDI0OCwgMTAzLCAyMSwgCi0gICAgMjExLCAxNzMsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMTEsIDE3MywgNSwgMjEyLCAxMTksIDIxLCAyMTEsIDE3MywgMjI4LCAKLSAgICA4LCAyMjMsIDIyNSwgMjEsIDIxMSwgMTczLCA1LCAyMjMsIDIyNSwgMjEsIDIxMSwgMTczLCAyMTMsIDEyNiwgMjEsIDIzOSwgCi0gICAgMjA4LCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjM5LCAyMDgsIDUsIDIxMiwgMTE5LCAyMSwgMjM5LCAyMDgsIDIyOCwgOCwgCi0gICAgMjIzLCAyMjUsIDIxLCAyMzksIDIwOCwgNSwgMjIzLCAyMjUsIDIxLCAyMzksIDIwOCwgMjEzLCAxMjYsIDIxLCAyMTEsIAotICAgIDE3MywgMjM5LCAyMDgsIDI1MCwgMjUyLCAyMSwgMjI0LCAwLCAxMTIsIDEyMSwgMjI4LCA3LCAyMSwgMjI0LCAwLCAxMTIsIAotICAgIDEyMSwgMjEyLCAzNiwgMjEsIDIyNCwgMCwgMTEyLCAyMTMsIDEyNiwgMjEsIDIyNCwgMCwgMTIxLCAyMTMsIDEyNiwgMjEsIAotICAgIDIyNCwgMCwgMTEyLCAxMjEsIDI1MCwgMjUzLCAyMjgsIDcsIDIxLCAyMjQsIDAsIDExMiwgMTIxLCAyNTAsIDI1MywgMjEyLCAKLSAgICAzNiwgMjEsIDIyNCwgMCwgMjEyLCAxNTYsIDIwOCwgMTczLCAyMTIsIDE1NiwgMjE0LCAxOTAsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQwLCAzLCAyNDUsIDE5NywgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDUsIDE5NywgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgCi0gICAgMjExLCA1MywgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgMjExLCA1MywgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIAotICAgIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNSwgMjEsIAotICAgIDIyMywgMjU1LCAyMTIsIDEyMCwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDUyLCAyMTEsIDUyLCAyMSwgCi0gICAgMjIzLCAyNTUsIDUyLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgNTIsIDI1MCwgMjUyLCAyMSwgMjIzLCAKLSAgICAyNTUsIDUyLCAyNTAsIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDI0NSwgMTMwLCAyMSwgMjIzLCAKLSAgICAyNTUsIDIwOCwgNzAsIDIxMSwgNTMsIDIyNCwgMywgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIAotICAgIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjUwLCAyNTIsIDIxLCAyMjMsIDI1NSwgMjA4LCA3MCwgMjUwLCAyNTMsIDIwMywgCi0gICAgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyNDgsIDEyMSwgCi0gICAgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIxMiwgMzYsIAotICAgIDIxLCAyMjMsIDI1NSwgMjQ1LCAxNjYsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjI4LCA3LCAyMSwgMjIzLCAKLSAgICAyNTUsIDI0NSwgMTY2LCAyMTUsIDE5NiwgMjEsIDIyMywgMjU1LCAyNDYsIDE2OSwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDYsIDE2OSwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NiwgMTY5LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgOTgsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjMsIDI1NSwgOTgsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCA5OCwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIAotICAgIDIwMiwgMzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjAyLCAzMCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIwMiwgMzAsIAotICAgIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIyNSwgOSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMTksIDMwLCAyMjgsIDcsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NCwgMjEyLCAxMTksIDIxLCAyMDgsIAotICAgIDk5LCAyMTUsIDE5NCwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDIxNSwgMTk0LCAyNTAsIDI1MiwgMjEsIDIwOCwgOTksIDIxNSwgCi0gICAgMTk1LCAyMTIsIDExOSwgMjEsIDIwOCwgOTksIDIxNSwgMTk1LCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTUsIAotICAgIDI1MCwgMjUyLCAyMSwgMjA4LCA5OSwgMjEzLCA3MSwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAyMTEsIDIwMiwgMjEyLCAKLSAgICAxMTksIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgMjExLCAyMDIsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyNTAsIDEwNywgCi0gICAgMjExLCAyMDIsIDIwOCwgNjksIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI1MCwgMTIsIAotICAgIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMjgsIDUsIDIxLCAKLSAgICAyMjQsIDIsIDIwOCwgMTIzLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyMDgsIDEyMywgMjI1LCA5LCAyMSwgMjI0LCAyLCAyMDgsIAotICAgIDEyMywgMjI4LCA3LCAyMSwgMjI0LCAyLCAyMDgsIDEyMywgMjI4LCA1LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgCi0gICAgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIDIyNSwgOSwgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIAotICAgIDI1MCwgMTIsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDI1MCwgMTIsIDIyOCwgNSwgMjEsIDIyNCwgMiwgMjQ4LCAKLSAgICAxMDQsIDIwOCwgMTIzLCAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyNSwgOSwgMjEsIDIyNCwgCi0gICAgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI4LCA1LCAKLSAgICAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIAotICAgIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIxMSwgCi0gICAgNTMsIDIyOCwgNSwgMjEsIDIyNCwgMSwgMjEyLCAxMjAsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgNTIsIAotICAgIDIxMSwgNTIsIDIxLCAyMjQsIDEsIDUyLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDUyLCAyNTAsIDI1MiwgCi0gICAgMjEsIDIyNCwgMSwgNTIsIDI1MCwgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjQsIDEsIDI0NSwgMTMwLCAyMSwgCi0gICAgMjI0LCAxLCAyMDgsIDcwLCAyMTEsIDUzLCAyMjQsIDMsIDIxLCAyMjQsIDEsIDIwOCwgNzAsIDIwMywgMjIxLCAyMzksIAotICAgIDIxMSwgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjUwLCAyNTMsIDIyNCwgMywgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjUwLCAKLSAgICAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgMjQ4LCAxMjAsIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjI1LCA5LCAyMSwgMjI0LCAxLCAyNDUsIDE2NiwgMjI4LCA3LCAyMSwgMjI0LCAKLSAgICAxLCAyNDYsIDE2OCwgMjEsIDIyNCwgMSwgOTgsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDk4LCAyMjUsIDksIDIxLCAyMjQsIDEsIAotICAgIDk4LCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwMiwgMzAsIDIyNSwgOSwgCi0gICAgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMTksIDMwLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAKLSAgICAyMTksIDMwLCAyMjUsIDksIDIxLCAyMjQsIDEsIDIxOSwgMzAsIDIyOCwgNywgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgCi0gICAgMjEyLCAxMTksIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTUsIDI1MCwgCi0gICAgMjUyLCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjQyLCA3OCwgCi0gICAgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NCwgMjUwLCAyNTIsIDIxLCAyMDgsIDEwMCwgMjEzLCA3MSwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDUsIDg4LCAyMTcsIDU2LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyNSwgOSwgMjEsIAotICAgIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI4LCAKLSAgICA1LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgMTM2LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIzNywgCi0gICAgMTM2LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAxMzYsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIAotICAgIDg4LCAyMzcsIDEzNiwgMjI4LCA1LCAyMSwgMjIzLCAyNTUsIDI0NSwgODgsIDIwOSwgMjcsIDI0NiwgNjIsIDIxMiwgMzYsIAotICAgIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjA5LCAyNywgMjQ2LCA2MiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIAotICAgIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIyOCwgNywgCi0gICAgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIyNSwgOSwgMjEsIDIyMywgCi0gICAgMjU1LCAyMjcsIDE1LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgNSwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAKLSAgICAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCA1MiwgMjI1LCAKLSAgICA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjQ1LCA4OCwgMjA4LCA3MCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCAyMDgsIDcwLCAyMjUsIAotICAgIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgMjA4LCA3MCwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgCi0gICAgODgsIDIwOSwgODQsIDIxMSwgNTIsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4NiwgMjQ1LCAxMzEsIDIxMiwgMzYsIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCA4NiwgMjQ1LCAxMzEsIDIyNSwgOSwgMjEsIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIxNSwgMTk0LCAKLSAgICAyNDIsIDc4LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjU0LCAyMSwgMjIzLCAyNTUsIDIxMywgNzEsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjQ1LCA4OCwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIzNiwgMjI5LCAKLSAgICAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIAotICAgIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDIxMiwgCi0gICAgMTIwLCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgNTIsIDIzNiwgMjI5LCAyMzksIDExOSwgCi0gICAgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1MywgMjM2LCAyMjksIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAKLSAgICAyNTUsIDI0NSwgODgsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAKLSAgICAxNDksIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgMTk0LCAyMTIsIDEyMCwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAKLSAgICAxOTQsIDUyLCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyNDYsIDE0OSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDMsIDIyOCwgMjE5LCA1MiwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyNDMsIDIyOCwgMjE5LCA1MiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0MywgMjI4LCAyMTksIDUyLCAyMjgsIAotICAgIDcsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgCi0gICAgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgCi0gICAgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAKLSAgICAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIDIyNywgNSwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgCi0gICAgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIAotICAgIDIyNywgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyMTIsIAotICAgIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAKLSAgICAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAKLSAgICAyMjksIDI0NiwgMjI3LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgNywgCi0gICAgMjEsIDIxNSwgMTk1LCAyMTIsIDEyMCwgMjM2LCAyMjksIDI0NiwgMjI2LCAyMSwgMjE1LCAxOTUsIDUyLCAyMzYsIDIyOSwgCi0gICAgMjQ2LCAyMjYsIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTMsIDIzNiwgMjI5LCAyNDYsIDIyNiwgMjEsIDIyNCwgMSwgMjQ1LCAKLSAgICA4OCwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMzYsIDIyOSwgMjM5LCAyMDUsIAotICAgIDIyOCwgNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDIzOSwgMjA1LCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAKLSAgICAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAKLSAgICAyMjksIDIzOSwgMjA1LCAyMDgsIDcwLCA1LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAKLSAgICAyMDUsIDIwOCwgNzAsIDIyOCwgOCwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCAKLSAgICA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDIxMiwgMTE5LCAKLSAgICAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIyNywgMTUsIAotICAgIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAKLSAgICAyMDUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA3LCAyMSwgMjE1LCAKLSAgICAxOTUsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjM5LCAyMDQsIDIxLCAyMTUsIDE5NSwgNTIsIDIzNiwgMjI5LCAyMzksIDIwNCwgCi0gICAgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MywgMjM2LCAyMjksIDIzOSwgMjA0LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMTIsIDM2LCAKLSAgICAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyMjUsIDksIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIyOCwgNywgMjEsIDIyNCwgMSwgCi0gICAgMjQ1LCA4OCwgMjI4LCA1LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAyNDUsIDIzNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjEyLCAKLSAgICAzNiwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjEyLCAyNCwgMjEsIDIyNCwgCi0gICAgMSwgMjA0LCA3NiwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjI4LCA3LCAyMSwgMjE1LCAxOTUsIDIxMiwgMTE5LCAKLSAgICAyMSwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMTUsIDE5NSwgMjUwLCAyNTIsIDIxLCAyMjQsIDEsIDIxMywgNzIsIDIxOSwgCi0gICAgODEsIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIDI0NiwgNjIsIDUsIDIxMiwgMTE5LCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAKLSAgICAyNDYsIDYyLCAyMjUsIDEwLCAyMTIsIDExOSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgNSwgMjQyLCA3OCwgCi0gICAgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgMjI1LCAxMCwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIAotICAgIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgNSwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDIyNSwgMTAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgCi0gICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyMjgsIDgsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgMjM2LCAKLSAgICAyMjksIDIwNCwgMTAwLCA1LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgCi0gICAgMTAwLCAyMjUsIDEwLCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCAKLSAgICAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgMjAzLCAyMjEsIDI0NiwgNjIsIDIzOSwgMTE5LCAyMTIsIDExOSwgMjEsIAotICAgIDIyMywgMjU1LCAyMDMsIDIyMSwgMjQ2LCA2MiwgMjM5LCAxMTksIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwMywgMjIxLCAKLSAgICAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMDMsIDIyMSwgMjQ2LCA2MiwgCi0gICAgMjM2LCAyMjksIDIwNCwgMTAwLCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIDI0MCwgMywgMjQ2LCA1OSwgMjEyLCAxMTksIDIxLCAKLSAgICAyMjMsIDI1NSwgMjQwLCAzLCAyNDYsIDU5LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NiwgNTksIDIzNiwgCi0gICAgMjI5LCAyMDQsIDEwMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ2LCA1OSwgMjM2LCAyMjksIDIwNCwgMTAwLCAKLSAgICAyNDIsIDc4LCAyMSwgMjQyLCA0LCAyNTAsIDk1LCAyMTIsIDM2LCAyMSwgMjQyLCA0LCAyNTAsIDk1LCAyMjgsIDcsIDIxLCAKLSAgICAyNDIsIDQsIDI0MCwgNzQsIDIxLCAyNDIsIDQsIDIxMiwgMzksIDIxLCAyNDIsIDQsIDIwOSwgMTQ1LCAyMSwgMjQyLCA0LCAKLSAgICAyMTYsIDExNSwgMjEsIDI0MiwgNCwgMjEyLCAxMjUsIDIxLCAyNDIsIDQsIDIxMiwgMTI2LCAyNTAsIDI1MiwgMjEsIDI0MiwgCi0gICAgNCwgMjQwLCAyMjEsIDIxOSwgMjIxLCAyMDgsIDIyMSwgMjEsIDI0MiwgNCwgMjM4LCAxMiwgMjEsIDIzNywgNjQsIDIxLCAKLSAgICAyMzcsIDY1LCAyMTYsIDEsIDIxLCAyMzcsIDY1LCAyMjMsIDI1NSwgMjExLCA1MiwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAKLSAgICAyMDgsIDIyNCwgMjEsIDIzNywgNjUsIDIyNCwgMSwgMjExLCA1MiwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAyNDUsIDg3LCAKLSAgICAyMSwgMjM3LCA2NSwgMjI0LCAxLCAyNDUsIDg3LCAyMSwgMjM3LCA2NSwgMjI0LCA0LCAyNDYsIDYxLCAyMSwgMjQwLCAxMDMsIAotICAgIDI0MywgMTY2LCAyMTgsIDM0LCAyMjEsIDE2OCwgMjM5LCAxNTIsIDIwOCwgMjIyLCAyMSwgMjQwLCAxMDMsIDI0MywgMTY2LCAKLSAgICAyMTgsIDM0LCAyMjEsIDE2OCwgMTEyLCAyMTksIDI0NSwgMjQyLCA3MCwgMjEsIDI0MCwgMTAzLCAyNDMsIDE2NiwgMjE4LCAKLSAgICAzNCwgMjIxLCAxNjgsIDExMiwgMjE5LCAyNDUsIDEyMSwgMjA4LCAyMjIsIDIxLCAyNDAsIDE5MCwgMjExLCA1MywgMjA2LCAKLSAgICAyMjQsIDIxLCAyNDAsIDE5MCwgMjExLCA1MywgMjIyLCAyMTUsIDIxLCAyNDAsIDE5MCwgMjExLCA1MywgMjQyLCA3MCwgMjEsIAotICAgIDI0MiwgNTcsIDI0MCwgMTkwLCAyMjIsIDIxNiwgMjQyLCA3MCwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAxMjEsIDIyMiwgCi0gICAgMjE1LCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDExMiwgMjIyLCAyMTUsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMjIyLCAKLSAgICAyMTYsIDIwNiwgMjI0LCAyMSwgMjM5LCAxNjQsIDIyMiwgMjE1LCAyMSwgMjM5LCAxNjQsIDI0NSwgMTk3LCAyMSwgMjM5LCAKLSAgICAxNjQsIDIwMywgMjI0LCAyMSwgMjQwLCAxODUsIDIyMCwgOCwgMjEsIDI0MCwgMTg1LCAyMTEsIDE3MiwgMjEsIDI0MCwgCi0gICAgMTg1LCAyNDYsIDE1LCAyMSwgMjQwLCAxOTIsIDI0OCwgMzQsIDIxMiwgMTE5LCAyMSwgMjQwLCAxOTIsIDI0OCwgMzQsIAotICAgIDIyMywgMjI1LCAyMSwgMjQwLCAxODUsIDE2MiwgMjIwLCA4LCAyMSwgMjQwLCAxODUsIDIwNCwgMjcsIDIyMCwgOCwgMjEsIAotICAgIDI0MCwgMTg1LCAxNjIsIDI0NiwgMTUsIDIxLCAyNDAsIDE4NSwgMjA0LCAyNSwgMjI0LCAzLCAyMSwgMjQwLCAxOTIsIDIwNCwgCi0gICAgOSwgMjEsIDI0MCwgMTg2LCAyMDYsIDIyNCwgMjEsIDI0MCwgMTg2LCAyNDIsIDcwLCAyMSwgMjQwLCAxODYsIDIzOSwgMTkxLCAKLSAgICAyMSwgMjQwLCAxODgsIDIxMSwgNTIsIDIxLCAyNDAsIDE4OCwgMjExLCA1MywgMjQyLCA3OCwgMjEsIDI0MCwgMTg4LCAyMTEsIAotICAgIDUzLCAyNTAsIDI1MiwgMjEsIDI0MCwgMTg5LCAyMTEsIDUyLCAyMSwgMjQwLCAxODksIDIxMSwgNTMsIDI0MiwgNzgsIDIxLCAKLSAgICAyNDAsIDE4OSwgMjExLCA1MywgMjUwLCAyNTIsIDIxLCAyNDAsIDE4OCwgMjQ1LCA4NSwgMjEsIDI0MCwgMTg5LCAyNDUsIAotICAgIDg1LCAyMSwgMjQwLCAxODgsIDI0NiwgNTYsIDIxLCAyNDYsIDE2NCwgMjE3LCAxODIsIDIxLCAyNDYsIDE2NCwgMjIyLCAKLSAgICAyMTUsIDIxLCAyNDYsIDE2NCwgMjEwLCAyMzQsIDIxLCAyMDksIDE0NiwgMjQ2LCAxNjQsIDIzNiwgMjQ0LCAyMSwgMjA5LCAKLSAgICAxNDYsIDI0NiwgMTY0LCAyMjQsIDE0OCwgMjEsIDIwOSwgMTQ2LCAyNDYsIDE2NCwgMjI3LCAwLCAyMSwgMjQxLCAxODEsIAotICAgIDIxLCAyMjEsIDE2OCwgMjIyLCAyMTUsIDIxLCAyMjEsIDE2OCwgMjQ1LCAxOTcsIDIxLCAyMjEsIDE2OCwgMjAzLCAyMjIsIAotICAgIDIxLCAyMjEsIDE2OCwgMjA0LCAyMiwgMjEsIDI1MSwgNTUsIDI0OCwgMjcsIDIxOSwgMjExLCAyMSwgMjUxLCA1NSwgMjEwLCAKLSAgICAyMzMsIDIzMSwgNDksIDIxLCAyNTEsIDU1LCAyNDgsIDI5LCA1LCAyMTUsIDE5MywgMjEsIDI1MSwgNTUsIDIxMCwgMjM1LCAKLSAgICA1LCAyMTUsIDE5MywgMjEsIDI0NywgMjE2LCAyMzEsIDIyLCAyMSwgMjQ3LCAyMTYsIDI0MCwgMjEwLCAyMSwgMjI0LCA4LCAKLSAgICAyNDYsIDE2LCAyMjIsIDIxNSwgMjEsIDIyNCwgOCwgMjQ2LCAxNiwgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDI0NiwgMTYsIAotICAgIDI0NSwgMTk3LCAyMSwgMjI0LCA4LCAyMTIsIDMxLCAyMSwgMjI0LCA4LCAyMTIsIDMyLCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgCi0gICAgMjEyLCAzMiwgMjIwLCA4LCAyMSwgMjI0LCA4LCAyMzksIDExNSwgMjEsIDIyNCwgOCwgMjM5LCAxMTYsIDIwMywgMjI0LCAKLSAgICAyMSwgMjI0LCA4LCAyMzksIDExNiwgMjIwLCA4LCAyMSwgMjI0LCA4LCAxNzEsIDI0NiwgNjEsIDIxLCAyMjQsIDgsIDE3MSwgCi0gICAgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDE3MSwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgMjE5LCAyMDQsIDIxLCAyMjQsIAotICAgIDgsIDE3MSwgMjE5LCAyMDUsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIDIxOSwgMjA1LCAyMDMsIDU5LCAyMSwgMjI0LCAKLSAgICA4LCAxNzEsIDIxNiwgMTQzLCAyMSwgMjI0LCA4LCAxNzEsIDIxNiwgMTQ0LCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAKLSAgICAyMTYsIDE0NCwgMjAzLCA1OSwgMjEsIDIyNCwgOCwgMjI5LCA2NiwgMjEsIDIyNCwgOCwgMjI5LCA2NywgMjM5LCAxNTEsIAotICAgIDIxLCAyMjQsIDgsIDIyOSwgNjcsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAyMDksIDE0NSwgMjEsIDIyNCwgOCwgMjA5LCAKLSAgICAxNDYsIDIzOSwgMTUxLCAyMSwgMjI0LCA4LCAyMDksIDE0NiwgMjEwLCAyMzQsIDIxLCAyMjcsIDk5LCAyMTcsIDIzOSwgCi0gICAgMjA4LCAxNjksIDIxLCAyMjcsIDEwMSwgMjI2LCAyNTEsIDExNSwgMjA2LCAyMjAsIDIxLCAyMjcsIDEwMSwgMjA2LCAyMjEsIAotICAgIDExNSwgMjI2LCAyNTAsIDIxLCAyMjQsIDgsIDI0NSwgMTY0LCAyMSwgMjI0LCA4LCAyMDMsIDIyMywgMjEyLCAxMTksIDIxLCAKLSAgICAyMjQsIDgsIDIwMywgMjIzLCAyNDIsIDc4LCAyMSwgMjA4LCAxNTEsIDIxMSwgNzIsIDIxOSwgMjEyLCAyNDAsIDc2LCAyMSwgCi0gICAgMjA4LCAxNTEsIDIyNywgMTQ0LCAyMjcsIDk4LCAyMSwgMjA4LCAxNTEsIDIwOCwgMjExLCAyNDgsIDEwNCwgMjI3LCA5OCwgCi0gICAgMjEsIDIwOCwgMTUxLCAyMDgsIDIxMSwgMjA4LCAxMjcsIDIzMSwgNywgMjI0LCA3LCAyMSwgMjA4LCAxNTEsIDIzMSwgNywgCi0gICAgMjI0LCA4LCAyMTYsIDExNSwgMjEsIDIwOCwgMTUxLCAyMjMsIDI1NCwgMjUxLCA3OSwgMjQ2LCAxNjUsIDIxLCAyMDgsIAotICAgIDE1MSwgMjQ2LCAyMTgsIDIxMSwgNzIsIDIxOSwgMjExLCAyMSwgMjA4LCAxNTEsIDI0NiwgMjE4LCAyMzEsIDcsIDIyNCwgNywgCi0gICAgMjEsIDIwOSwgMTcyLCAyMSwgMjA5LCAxNzMsIDIyNCwgMywgMjEsIDIwOSwgMTczLCAyMjAsIDMyLCAyMDgsIDE1MCwgMjEsIAotICAgIDIwOSwgMTczLCAyMjAsIDMyLCAyMDgsIDE1MSwgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDIyMCwgMzIsIDIyNywgOTgsIDIxLCAKLSAgICAyMDksIDE3MywgMjIwLCAzMiwgMjI3LCA5OSwgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDI0OCwgNTAsIDIyNywgOTgsIDIxLCAKLSAgICAyMjMsIDI1NSwgMjMwLCAxNjUsIDIxLCAyMjQsIDEsIDIzMCwgMTY1LCAyMSwgMjIyLCAyMzcsIDIxLCAyMzcsIDE0NSwgMjEsIAotICAgIDI0MCwgMjEzLCAyMSwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMTEsIDIwMywgMjEsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjE4LCAKLSAgICAzMywgMjEsIDIwNCwgOTgsIDIxMiwgMjExLCAyMzYsIDIzNCwgMjI0LCA2LCAyMSwgMjM5LCAyMDMsIDIxMiwgMjExLCAyMzYsIAotICAgIDIzNCwgMjI0LCA2LCAyMSwgMjEyLCAyMTEsIDIwOCwgMjIzLCAyMzksIDEyMCwgMjA0LCAxMDQsIDIxLCAyMDgsIDEzNCwgCi0gICAgMjExLCA1MywgMjExLCA0MSwgMjEsIDIwOCwgMTM0LCAyNDUsIDg2LCAyNDgsIDEyMCwgMjEsIDIwOCwgMTM1LCAyMDcsIAotICAgIDEzNywgMjEsIDIwNiwgMjIxLCAyNDgsIDE4LCAyMDgsIDIyMywgMjM5LCAxMjAsIDIzNiwgMjM0LCAyMzAsIDk1LCAyMSwgCi0gICAgMjI3LCAxMjYsIDI0NSwgMjM4LCAyMSwgMjI3LCAxMjYsIDIyNywgMTk1LCAyMSwgMjI3LCAxMjYsIDIyNywgMTk0LCAyMSwgCi0gICAgMjI3LCAxMjYsIDIyNywgMTkzLCAyMSwgMjI3LCAxMjYsIDIyNywgMTkyLCAyMSwgMjI3LCAxMjYsIDIyNywgMTkxLCAyMSwgCi0gICAgMjI3LCAxMjYsIDIyNywgMTkwLCAyMSwgMjI3LCAxMjYsIDIyNywgMTg5LCAyMSwgMjQwLCAyLCAyMSwgMjI3LCA0NSwgMjExLCAKLSAgICAyMjgsIDIxLCAyMjcsIDQ2LCAyMTEsIDIyOCwgMjEsIDIyNywgNDcsIDIzNywgNDEsIDIxLCAyMjcsIDQ3LCAyMDQsIDIzLCAKLSAgICAyMSwgMjI3LCA0NywgMjQ0LCAyNCwgMjEsIDIyNywgNDcsIDIzNywgNjUsIDIyMiwgMjM3LCAyMSwgMjI3LCA0NywgMjA4LCAKLSAgICAxMzYsIDIxLCAyMjcsIDQ3LCAyMjcsIDEyNSwgMjQzLCAxOTgsIDIxLCAyNDUsIDIzMywgMjEsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCAyMSwgMjEzLCAxNDMsIDIxLCAyNDUsIDI0MiwgMjEsIDIxOSwgNzYsIDIxLCAyNDAsIDEwLCAyMjQsIDY2LCAyMSwgCi0gICAgMjQwLCAxMCwgMjI0LCA2NSwgMjEsIDI0MCwgMTAsIDIyNCwgNjQsIDIxLCAyNDAsIDEwLCAyMjQsIDYzLCAyMSwgMjQwLCAKLSAgICAxMCwgMjI0LCA2MiwgMjEsIDIxNSwgMTk3LCAyMjQsIDY2LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjUsIDIxLCAyMTUsIDE5NywgCi0gICAgMjI0LCA2NCwgMjEsIDIxNSwgMTk3LCAyMjQsIDYzLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjIsIDIxLCAyMTUsIDE5NywgMjI0LCAKLSAgICA2MSwgMjEsIDIxNSwgMTk3LCAyMjQsIDYwLCAyMSwgMjE1LCAxOTcsIDIyNCwgNTksIDIxLCAyMTUsIDE5NywgMjI0LCA3MywgCi0gICAgMjEsIDIxNSwgMTk3LCAyMjQsIDcyLCAyMSwgMjE1LCAxOTcsIDIyNCwgNzEsIDIxLCAyMTUsIDE5NywgMjI0LCA3MCwgMjEsIAotICAgIDIxNSwgMTk3LCAyMjQsIDY5LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjgsIDIxLCAyMTUsIDE5NywgMjI0LCA2NywgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDE4NCwgMjI5LCAxMDAsIDczLCA3MiwgNCwgMjI2LCAxODAsIDE3MywgNzMsIDcyLCA0LCAyMjYsIDE3OCwgCi0gICAgMjI4LCAyMDksIDczLCA3MiwgNCwgMjI2LCA1NCwgMjI5LCAxOTgsIDczLCA3MiwgNCwgMjI2LCAyNCwgMjI5LCAyMDEsIDczLCAKLSAgICA3MiwgNCwgMjI2LCA0MywgMjI5LCA2LCA3MywgNzIsIDQsIDIyNiwgNzEsIDIyOSwgMjYsIDczLCA3MiwgNCwgMjI1LCAxOTYsIAotICAgIDIyOCwgMjAzLCA3MywgNzIsIDQsIDIyNiwgMTc1LCAyMDQsIDMwLCA3MywgNzIsIDQsIDIyNiwgMTczLCAyMDQsIDExMSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDE3MSwgMjAzLCAyMTcsIDczLCA3MiwgNCwgMjI1LCAyNDksIDIwNCwgNTUsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAxLCAyMDQsIDYyLCA3MywgNzIsIDQsIDIyNiwgNSwgMjAzLCAyNDQsIDczLCA3MiwgNCwgMjI2LCA3NCwgMjA0LCAwLCAKLSAgICA3MywgNzIsIDQsIDIyNSwgMTgxLCAyMDMsIDIxMywgNzMsIDcyLCA0LCAyMjUsIDIzMiwgMjA0LCA1MywgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDU4LCAyMDMsIDIwMSwgNzMsIDcyLCA0LCAyMjYsIDcwLCAyMDMsIDIwMywgNzMsIDcyLCA0LCAyMjUsIDIzNiwgCi0gICAgMjAzLCAyMDIsIDczLCA3MiwgNCwgMjI2LCAxNjksIDIyNCwgMTEwLCA3MywgNzIsIDQsIDIyNiwgMTY3LCAyMjUsIDEyMiwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDE2NSwgMjIzLCAyMTksIDczLCA3MiwgNCwgMjI2LCA2MCwgMjI0LCAyNDAsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAyNSwgMjI0LCA1NCwgNzMsIDcyLCA0LCAyMjUsIDIyMSwgMjIzLCAyNDMsIDczLCA3MiwgNCwgMjI1LCAxODYsIAotICAgIDIyMywgMjM3LCA3MywgNzIsIDQsIDIyNiwgMTYzLCAyNDgsIDg2LCA3MywgNzIsIDQsIDIyNiwgMTYwLCAyNDksIDMyLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTU4LCAyNDcsIDE5MywgNzMsIDcyLCA0LCAyMjUsIDIyNSwgMjQ4LCAxNTAsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAyMiwgMjQ4LCAxNjIsIDczLCA3MiwgNCwgMjI2LCAxNiwgMjQ4LCAxMCwgNzMsIDcyLCA0LCAyMjUsIDIzNywgMjQ4LCAyMywgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDE0OCwgNzUsIDczLCA3MiwgNCwgMjI2LCAxNDYsIDYzLCA3MywgNzIsIDQsIDIyNiwgMTQ0LCAKLSAgICA2OCwgNzMsIDcyLCA0LCAyMjUsIDIxMiwgMjQxLCAxNjEsIDczLCA3MiwgNCwgMjI2LCAxOSwgNzQsIDczLCA3MiwgNCwgCi0gICAgMjI1LCAyMTAsIDIyMCwgMTgsIDczLCA3MiwgNCwgMjI1LCAyMjgsIDc4LCA3MywgNzIsIDQsIDIyNSwgMjM4LCAyNDEsIAotICAgIDE0NSwgNzMsIDcyLCA0LCAyMjUsIDI0NCwgMjMxLCA0OSwgNzMsIDcyLCA0LCAyMjUsIDI0MCwgMjMxLCA0OSwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDE4MCwgMjUwLCAyMzEsIDczLCA3MiwgNCwgMjI1LCAxOTcsIDI0MSwgOTIsIDczLCA3MiwgNCwgMjI2LCAxMzMsIAotICAgIDIxMiwgMTYyLCA3MywgNzIsIDQsIDIyNiwgMTMxLCAyMTUsIDM2LCA3MywgNzIsIDQsIDIyNiwgMTI5LCAyMTEsIDEwLCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjEzLCAyMTQsIDE2NSwgNzMsIDcyLCA0LCAyMjYsIDMsIDIxNCwgMTc3LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjM5LCAyMTEsIDI1MCwgNzMsIDcyLCA0LCAyMjYsIDQwLCAyMTIsIDEzLCA3MywgNzIsIDQsIDIyNSwgMTc5LCAyMTIsIAotICAgIDE2MSwgNzMsIDcyLCA0LCAyMjYsIDExOSwgMjI3LCAxNDgsIDczLCA3MiwgNCwgMjI2LCAxMTcsIDIyOCwgMTEzLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTE1LCAyMjYsIDIzOSwgNzMsIDcyLCA0LCAyMjYsIDM1LCAyMjcsIDIyNiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDQ2LCAyMjcsIDIzNCwgNzMsIDcyLCA0LCAyMjYsIDY1LCAyMjcsIDE4LCA3MywgNzIsIDQsIDIyNSwgMjIyLCAyMjcsIDQ5LCAKLSAgICA3MywgNzIsIDQsIDIyNiwgOSwgMTYzLCAyMjcsIDIzNCwgNzMsIDcyLCA0LCAyMjYsIDE0MSwgMjQzLCAyMzMsIDczLCA3MiwgCi0gICAgNCwgMjI2LCAxMzgsIDI0NCwgMjEyLCA3MywgNzIsIDQsIDIyNiwgMTM1LCAyNDIsIDQyLCA3MywgNzIsIDQsIDIyNiwgMzAsIAotICAgIDI0NCwgNjEsIDczLCA3MiwgNCwgMjI1LCAxOTUsIDI0MywgOTAsIDczLCA3MiwgNCwgMjI1LCAxOTQsIDI0MywgMTEzLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTI3LCAyMDksIDIsIDczLCA3MiwgNCwgMjI2LCAxMjQsIDIxMCwgMjIsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAxMjIsIDIwNywgMjAzLCA3MywgNzIsIDQsIDIyNiwgMjgsIDIwOSwgMTc2LCA3MywgNzIsIDQsIDIyNiwgNjQsIDIwOSwgCi0gICAgMTg3LCA3MywgNzIsIDQsIDIyNiwgMTUsIDIwOCwgMTQ4LCA3MywgNzIsIDQsIDIyNiwgNTAsIDEzNSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDExMywgMjMwLCAxNDEsIDczLCA3MiwgNCwgMjI2LCAxMTAsIDIzMCwgMTgxLCA3MywgNzIsIDQsIDIyNiwgMTA4LCAKLSAgICAyMzAsIDgyLCA3MywgNzIsIDQsIDIyNSwgMjE4LCAyMzAsIDE1OSwgNzMsIDcyLCA0LCAyMjYsIDYsIDIzMCwgMTYxLCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjE1LCAyMzAsIDkxLCA3MywgNzIsIDQsIDIyNiwgNTYsIDIzMCwgMTAxLCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjAwLCAxNjMsIDIzMCwgMTAxLCA3MywgNzIsIDQsIDIyNiwgMTA2LCAyMDMsIDExLCA3MywgNzIsIDQsIDIyNiwgMTAzLCAKLSAgICAxOTgsIDczLCA3MiwgNCwgMjI2LCAxMDEsIDIwMiwgMjEzLCA3MywgNzIsIDQsIDIyNiwgMTAsIDIwMywgNDksIDczLCA3MiwgCi0gICAgNCwgMjI2LCAzOSwgMjAzLCA1MiwgNzMsIDcyLCA0LCAyMjUsIDIzNCwgMjAyLCAyMzIsIDczLCA3MiwgNCwgMjI1LCAyNTQsIAotICAgIDIwMiwgMjQ3LCA3MywgNzIsIDQsIDIyNiwgOTcsIDI0MCwgMjYsIDczLCA3MiwgNCwgMjI2LCA5NSwgMjQwLCAxMDgsIDczLCAKLSAgICA3MiwgNCwgMjI2LCA5MywgMjM5LCAxMDgsIDczLCA3MiwgNCwgMjI2LCA0MSwgMjQwLCA1MywgNzMsIDcyLCA0LCAyMjYsIAotICAgIDQ0LCAyNDAsIDYwLCA3MywgNzIsIDQsIDIyNSwgMjQyLCAyMzksIDE3NSwgNzMsIDcyLCA0LCAyMjYsIDMxLCAyMzksIDE4NiwgCi0gICAgNzMsIDcyLCA0LCAyMjUsIDE3OCwgMjM5LCAxMDcsIDczLCA3MiwgNCwgMjI2LCAxOCwgMjQwLCA4MSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDkxLCAyMjIsIDY4LCA3MywgNzIsIDQsIDIyNiwgODksIDIyMywgODMsIDczLCA3MiwgNCwgMjI2LCA4NywgMjIxLCAKLSAgICA0MCwgNzMsIDcyLCA0LCAyMjYsIDIsIDIyMiwgMjMwLCA3MywgNzIsIDQsIDIyNSwgMjA2LCAyMjEsIDE4NSwgNzMsIDcyLCAKLSAgICA0LCAyMjUsIDE5OSwgMjM3LCAzLCA3MywgNzIsIDQsIDIyNiwgODIsIDE1MiwgNzMsIDcyLCA0LCAyMjUsIDE4OSwgMjM2LCAKLSAgICAyNiwgNzMsIDcyLCA0LCAyMjYsIDg1LCAyMzcsIDQ4LCA3MywgNzIsIDQsIDIyNiwgMjMsIDIzNywgNjcsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA4MCwgMjM2LCAxMTcsIDczLCA3MiwgNCwgMjI1LCAyMzUsIDIzNiwgMTM2LCA3MywgNzIsIDQsIDIyNiwgMzYsIAotICAgIDIzNywgNDcsIDczLCA3MiwgNCwgMjI1LCAyNDcsIDIzNiwgMTEwLCA3MywgNzIsIDQsIDIyNiwgNjYsIDIzNiwgMjM4LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjQ1LCAyMzcsIDEyNiwgNzMsIDcyLCA0LCAyMjYsIDMyLCAyMzYsIDEzLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNjcsIDIzNywgMzMsIDczLCA3MiwgNCwgMjI1LCAxODIsIDIzNiwgMTIwLCA3MywgNzIsIDQsIDIyNiwgNzMsIDIzNiwgMjUsIAotICAgIDczLCA3MiwgNCwgMjI2LCAyOSwgMjIyLCAxNjgsIDczLCA3MiwgNCwgMjI2LCA3OCwgMjIyLCAxODIsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAzNywgMjIyLCAxNjUsIDczLCA3MiwgNCwgMjI2LCA0LCAyMjIsIDE3NiwgNzMsIDcyLCA0LCAyMjUsIDIyOSwgMjIyLCAKLSAgICAxNzcsIDczLCA3MiwgNCwgMjI1LCAyMTksIDIyMiwgMTY2LCA3MywgNzIsIDQsIDIyNSwgMjU1LCAyMjIsIDE2NywgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIxNiwgMjIyLCAxODEsIDczLCA3MiwgNCwgMjI1LCAyNDgsIDIyMiwgMTY0LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgMzMsIDE2MywgMjIyLCAxNzcsIDczLCA3MiwgNCwgMjI2LCAxMywgMTYzLCAyMjIsIDE2NiwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDE5MiwgMTYzLCAyMjIsIDE2NywgNzMsIDcyLCA0LCAyMjUsIDIyMCwgMjM4LCA4MSwgNzMsIDcyLCA0LCAyMjYsIDgsIDIzOSwgCi0gICAgOCwgNzMsIDcyLCA0LCAyMjUsIDIwNywgMjM3LCAyMzAsIDczLCA3MiwgNCwgMjI1LCAxODUsIDIzOCwgMTgyLCA3MywgNzIsIAotICAgIDQsIDIyNSwgMjA5LCAyMzcsIDIxNiwgNzMsIDcyLCA0LCAyMjUsIDIwOCwgMjM3LCAyMjYsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAxOTEsIDIyMiwgMTg3LCA3MywgNzIsIDQsIDIyNiwgNjIsIDIyMiwgMTI0LCA3MywgNzIsIDQsIDIyNSwgMTk4LCAyMjIsIAotICAgIDExMywgNzMsIDcyLCA0LCAyMjYsIDUxLCAyMTgsIDE2NywgNzMsIDcyLCA0LCAyMjYsIDIwLCAxODUsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA2OSwgMjE3LCAxOTEsIDczLCA3MiwgNCwgMjI2LCAzOCwgMjE5LCAyMywgNzMsIDcyLCA0LCAyMjYsIDY4LCAyMTksIAotICAgIDM0LCA3MywgNzIsIDQsIDIyNiwgMTcsIDIxOCwgNDUsIDczLCA3MiwgNCwgMjI2LCA1MywgMjE4LCA2OSwgNzMsIDcyLCA0LCAKLSAgICAyMjUsIDIzMCwgMjI1LCAzOSwgNzMsIDcyLCA0LCAyMjYsIDU3LCAyMjUsIDU0LCA3MywgNzIsIDQsIDIyNSwgMjUzLCAyMjUsIAotICAgIDMzLCA3MywgNzIsIDQsIDIyNiwgNzIsIDIyNSwgNDYsIDczLCA3MiwgNCwgMjI1LCAxODcsIDIyNSwgNDYsIDczLCA3MiwgNCwgCi0gICAgMjI2LCA0NywgMjI1LCA0NywgNzMsIDcyLCA0LCAyMjUsIDIwMywgMjI1LCAzNCwgNzMsIDcyLCA0LCAyMjUsIDIwMSwgMjI1LCAKLSAgICAzNSwgNzMsIDcyLCA0LCAyMjUsIDE4OCwgMjI1LCAyNywgNzMsIDcyLCA0LCAyMjUsIDIxNCwgMTYzLCAyMjUsIDQ3LCA3MywgCi0gICAgNzIsIDQsIDIyNiwgMTQsIDE2MywgMjI1LCAzNCwgNzMsIDcyLCA0LCAyMjUsIDIzMywgMTYzLCAyMjUsIDM1LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMjQzLCAyMjgsIDIzNiwgNzMsIDcyLCA0LCAyMjYsIDI3LCAyMjgsIDI0NCwgNzMsIDcyLCA0LCAyMjYsIDQ1LCAKLSAgICAyMjgsIDIzMiwgNzMsIDcyLCA0LCAyMjYsIDc2LCAyMjgsIDIzOSwgNzMsIDcyLCA0LCAyMjYsIDExLCAyMjgsIDI0MCwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDcsIDIyOCwgMjM0LCA3MywgNzIsIDQsIDIyNSwgMjE3LCAyMjgsIDIzNSwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDI1MSwgMjM4LCAxOTksIDczLCA3MiwgNCwgMjI2LCA2MywgMjM4LCAyMDcsIDczLCA3MiwgNCwgMjI1LCAyMjcsIDIzOCwgCi0gICAgMTk0LCA3MywgNzIsIDQsIDIyNiwgMjYsIDIzOCwgMjAzLCA3MywgNzIsIDQsIDIyNiwgMTIsIDIzOCwgMjA0LCA3MywgNzIsIAotICAgIDQsIDIyNiwgNDgsIDIzOCwgMTk1LCA3MywgNzIsIDQsIDIyNiwgNDksIDIzOCwgMTk3LCA3MywgNzIsIDQsIDIyNSwgMjA0LCAKLSAgICAyMTYsIDIyMCwgNzMsIDcyLCA0LCAyMjUsIDI1MiwgMjIzLCAxMCwgNzMsIDcyLCA0LCAyMjUsIDI0NiwgMjIzLCAyNSwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDI1MCwgMjIyLCAyNDgsIDczLCA3MiwgNCwgMjI1LCAxODQsIDIyMywgMTYsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAwLCAyMjMsIDE3LCA3MywgNzIsIDQsIDIyNiwgNTIsIDIyMiwgMjUzLCA3MywgNzIsIDQsIDIyNiwgNTUsIDIyMywgMSwgNzMsIAotICAgIDcyLCA0LCAyMjUsIDIyMywgMjIyLCA0OCwgNzMsIDcyLCA0LCAyMjUsIDE4MywgMjIyLCAxOCwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDIyNiwgMjIyLCAzOSwgNzMsIDcyLCA0LCAyMjUsIDI0MSwgMjIyLCAyMiwgNzMsIDcyLCA0LCAyMjUsIDE5MywgMjA1LCAKLSAgICAyMzAsIDczLCA3MiwgNCwgMjI1LCAxOTAsIDIwNiwgODYsIDczLCA3MiwgNCwgMjI1LCAyMjQsIDIwNCwgMTYzLCA3MywgNzIsIAotICAgIDQsIDIyNSwgMjAyLCAyMDYsIDUwLCA3MywgNzIsIDQsIDIyNiwgMzQsIDIwNiwgNTUsIDczLCA3MiwgNCwgMjI1LCAyMzEsIAotICAgIDIwNSwgMTc2LCA3MywgNzIsIDQsIDIyNiwgNDIsIDIwNSwgMTg5LCA3MywgNzIsIDQsIDIyNSwgMjExLCAyMjAsIDI0MiwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDYxLCAyMjEsIDUsIDczLCA3MiwgNCwgMjI1LCAyMDUsIDIyMCwgMjI0LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMjEsIDIyMCwgMjUzLCA3MywgNzIsIDQsIDIyNiwgNTksIDIyMCwgMjMxLCA3MywgNzIsIDE3LCAxMDUsIDczLCA3MiwgCi0gICAgMTcsIDEwOCwgNzMsIDcyLCAxNywgMTQ3LCA3MywgNzIsIDE3LCAxNDksIDczLCA3MiwgMTcsIDE3MCwgNzMsIDcyLCAxNywgCi0gICAgMTk1LCA3MywgNzIsIDE3LCAyMTMsIDExMSwgNzMsIDcyLCAxNywgMTk5LCA3MywgNzIsIDE3LCAyMjIsIDYzLCA3MywgNzIsIAotICAgIDM5LCA0MiwgMjA5LCAxNzQsIDczLCA3MiwgMzksIDQyLCAyMDksIDE0NywgNzMsIDcyLCAzOSwgNDIsIDIzNiwgMTAsIDczLCAKLSAgICA3MiwgMzksIDQyLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgMjA5LCAxNTMsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAKLSAgICAyMzYsIDEyLCAyMDksIDM0LCA3MywgNzIsIDM5LCA0MiwgMjI0LCAxMTMsIDEwLCAxMywgMjUxLCAzMCwgMTAsIDEzLCAyNDgsIAotICAgIDEzOCwgMTAsIDEzLCAyMzAsIDE1OCwgMTAsIDEzLCAyNDQsIDE4NCwgMTAsIDEzLCAyMDQsIDcwLCAxMCwgMTMsIDIwMiwgCi0gICAgMTA3LCAxMCwgMTMsIDIzNywgMTQ4LCAxMCwgMTMsIDIwOSwgMjUxLCAxMCwgMTMsIDIwMywgNDcsIDEwLCAxMywgMjMwLCAKLSAgICAyMiwgMTAsIDEzLCAyMjgsIDI4LCAxMCwgMTMsIDIyNSwgNSwgMTAsIDEzLCAyMjEsIDE3OCwgMTAsIDEzLCAyMTQsIDE2MSwgCi0gICAgMTAsIDEzLCAyNTEsIDU5LCAxMCwgMTMsIDI0MCwgNDcsIDEwLCAxMywgMjE1LCAyOCwgMTAsIDEzLCAyMTcsIDExOSwgMTAsIAotICAgIDEzLCAyMTYsIDEyMiwgMTAsIDEzLCAyMTMsIDM5LCAxMCwgMTMsIDIwOSwgMTY5LCAxMCwgMTMsIDIwOSwgODgsIDEwLCAxMywgCi0gICAgMjI5LCAxNDAsIDEwLCAxMywgMjA5LCAxMDAsIDEwLCAxMywgMjQ0LCAyMDcsIDEwLCAxMywgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjM4LCAxMTQsIDEwLCAxMywgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxMywgMjQzLCA4NCwgMjIxLCAxNzgsIDEwLCAxMywgCi0gICAgMjQzLCA4NCwgMjQwLCA0NywgMTAsIDEzLCAyNDMsIDg0LCAyMTcsIDExOSwgMTAsIDEzLCA4MSwgMjQ4LCAxMzgsIDEwLCAKLSAgICAxMywgODEsIDIzMCwgMTU4LCAxMCwgMTMsIDgxLCAyMzcsIDQzLCAxMCwgMTMsIDgxLCAyMzcsIDE0OCwgMTAsIDEzLCA4MSwgCi0gICAgMjAzLCA0NywgMTAsIDEzLCA4MSwgMjMwLCAyMiwgMTAsIDEzLCA4MSwgMjI4LCAyOCwgMTAsIDEzLCA4MSwgMjI1LCA1LCAKLSAgICAxMCwgMTMsIDgxLCAyMjEsIDE3OCwgMTAsIDEzLCA4MSwgMjE0LCAxNjEsIDEwLCAxMywgODEsIDI1MSwgNTksIDEwLCAxMywgCi0gICAgODEsIDI0MCwgNDcsIDEwLCAxMywgODEsIDIxNSwgMjgsIDEwLCAxMywgODEsIDIxNywgMTE5LCAxMCwgMTMsIDgxLCAyMTMsIAotICAgIDM5LCAxMCwgMTMsIDgxLCAyMDksIDE2OSwgMTAsIDEzLCA4MSwgMjA5LCA4OCwgMTAsIDEzLCA4MSwgMjI5LCAxNDAsIDEwLCAKLSAgICAxMywgODEsIDI0NCwgMjA3LCAxMCwgMTMsIDgxLCAyMzgsIDExNCwgMTAsIDEzLCAyMDksIDI0NywgMjMwLCAxNTgsIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDIzNywgMTQ4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMDMsIDQ3LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMjgsIAotICAgIDI4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMjEsIDE3OCwgMTAsIDEzLCAyMDksIDI0NywgMjE0LCAxNjEsIDEwLCAxMywgMjA5LCAKLSAgICAyNDcsIDI1MSwgNTksIDEwLCAxMywgMjA5LCAyNDcsIDIxNSwgMjgsIDEwLCAxMywgMjA5LCAyNDcsIDIxNywgMTE5LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyMTMsIDM5LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMjksIDE0MCwgMTAsIDEzLCAyMDksIDI0NywgMjQ0LCAKLSAgICAyMDcsIDEwLCAxMywgMjA5LCAyNDcsIDIzOCwgMTE0LCAxMCwgMTMsIDIwOSwgMjQ3LCAyNDMsIDg0LCAyMjEsIDE3OCwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjQzLCA4NCwgMjE3LCAxMTksIDEwLCAxMywgMjExLCA0MCwgMjQ4LCAxMzgsIDEwLCAxMywgMjExLCAKLSAgICA0MCwgMjMwLCAxNTgsIDEwLCAxMywgMjExLCA0MCwgMjM3LCA0MywgMTAsIDEzLCAyMTEsIDQwLCAyMzcsIDE0OCwgMTAsIAotICAgIDEzLCAyMTEsIDQwLCAyMDksIDI1MSwgMTAsIDEzLCAyMTEsIDQwLCAyMDMsIDQ3LCAxMCwgMTMsIDIxMSwgNDAsIDIzMCwgCi0gICAgMjIsIDEwLCAxMywgMjExLCA0MCwgMjI1LCA1LCAxMCwgMTMsIDIxMSwgNDAsIDIyMSwgMTc4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDIxNCwgMTYxLCAxMCwgMTMsIDIxMSwgNDAsIDI1MSwgNTksIDEwLCAxMywgMjExLCA0MCwgMjQwLCA0NywgMTAsIDEzLCAKLSAgICAyMTEsIDQwLCAyMTUsIDI4LCAxMCwgMTMsIDIxMSwgNDAsIDIxNywgMTE5LCAxMCwgMTMsIDIxMSwgNDAsIDIxMywgMzksIAotICAgIDEwLCAxMywgMjExLCA0MCwgMjA5LCAxNjksIDEwLCAxMywgMjExLCA0MCwgMjA5LCA4OCwgMTAsIDEzLCAyMTEsIDQwLCAKLSAgICAyMjksIDE0MCwgMTAsIDEzLCAyMTEsIDQwLCAyNDQsIDIwNywgMTAsIDEzLCAyMTEsIDQwLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMTEsIDQwLCAyMzgsIDExNCwgMTAsIDEzLCAyMTEsIDQwLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEzLCAyMTEsIDQwLCAKLSAgICAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMTMsIDIyNywgMTMsIDI1MSwgMzAsIDEwLCAxMywgMjI3LCAxMywgMjQ4LCAxMzgsIAotICAgIDEwLCAxMywgMjI3LCAxMywgMjMwLCAxNTgsIDEwLCAxMywgMjI3LCAxMywgMjQ0LCAxODQsIDEwLCAxMywgMjI3LCAxMywgCi0gICAgMjM3LCA0MywgMTAsIDEzLCAyMjcsIDEzLCAyMDQsIDcwLCAxMCwgMTMsIDIyNywgMTMsIDIwMiwgMTA3LCAxMCwgMTMsIAotICAgIDIyNywgMTMsIDIzNywgMTQ4LCAxMCwgMTMsIDIyNywgMTMsIDIwOSwgMjUxLCAxMCwgMTMsIDIyNywgMTMsIDIwMywgNDcsIAotICAgIDEwLCAxMywgMjI3LCAxMywgMjI4LCAyOCwgMTAsIDEzLCAyMjcsIDEzLCAyMjUsIDUsIDEwLCAxMywgMjI3LCAxMywgMjIxLCAKLSAgICAxNzgsIDEwLCAxMywgMjI3LCAxMywgMjE0LCAxNjEsIDEwLCAxMywgMjI3LCAxMywgMjUxLCA1OSwgMTAsIDEzLCAyMjcsIAotICAgIDEzLCAyNDAsIDQ3LCAxMCwgMTMsIDIyNywgMTMsIDIxNSwgMjgsIDEwLCAxMywgMjI3LCAxMywgMjE3LCAxMTksIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjE2LCAxMjIsIDEwLCAxMywgMjI3LCAxMywgMjEzLCAzOSwgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDE2OSwgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMDksIDg4LCAxMCwgMTMsIDIyNywgMTMsIDIyOSwgMTQwLCAxMCwgMTMsIDIyNywgMTMsIAotICAgIDIwOSwgMTAwLCAxMCwgMTMsIDIyNywgMTMsIDI0NCwgMjA3LCAxMCwgMTMsIDIyNywgMTMsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIyNywgMTMsIDIzOCwgMTE0LCAxMCwgMTMsIDE2OSwgMjQ4LCAxMzgsIDEwLCAxMywgMTY5LCAyMzAsIDE1OCwgMTAsIDEzLCAKLSAgICAxNjksIDI0NCwgMTg0LCAxMCwgMTMsIDE2OSwgMjA0LCA3MCwgMTAsIDEzLCAxNjksIDIwMiwgMTA3LCAxMCwgMTMsIDE2OSwgCi0gICAgMjM3LCAxNDgsIDEwLCAxMywgMTY5LCAyMDksIDI1MSwgMTAsIDEzLCAxNjksIDIwMywgNDcsIDEwLCAxMywgMTY5LCAyMjgsIAotICAgIDI4LCAxMCwgMTMsIDE2OSwgMjI1LCA1LCAxMCwgMTMsIDE2OSwgMjIxLCAxNzgsIDEwLCAxMywgMTY5LCAyMTQsIDE2MSwgCi0gICAgMTAsIDEzLCAxNjksIDI1MSwgNTksIDEwLCAxMywgMTY5LCAyNDAsIDQ3LCAxMCwgMTMsIDE2OSwgMjE1LCAyOCwgMTAsIDEzLCAKLSAgICAxNjksIDIxNywgMTE5LCAxMCwgMTMsIDE2OSwgMjE2LCAxMjIsIDEwLCAxMywgMTY5LCAyMTMsIDM5LCAxMCwgMTMsIDE2OSwgCi0gICAgMjA5LCAxNjksIDEwLCAxMywgMTY5LCAyMDksIDg4LCAxMCwgMTMsIDE2OSwgMjI5LCAxNDAsIDEwLCAxMywgMTY5LCAyMDksIAotICAgIDEwMCwgMTAsIDEzLCAxNjksIDI0NCwgMjA3LCAxMCwgMTMsIDE2OSwgMjAyLCAxMTAsIDEwLCAxMywgMTY5LCAyMzgsIDExNCwgCi0gICAgMTAsIDEzLCAyMTksIDI1NSwgODMsIDMsIDE1MSwgMywgMjA5LCAyMDksIDEwLCAxMywgMjE5LCAyNTUsIDE1MSwgMywgMjQ0LCAKLSAgICAxODQsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNzYsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgMjExLCAyMzgsIDIwNCwgMTYsIAotICAgIDIyNSwgMTQyLCA5OSwgMjA0LCA0NiwgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAxNTMsIDIwNCwgMTYsIDIyNSwgMTQyLCA5OSwgCi0gICAgMjE2LCAxMzgsIDI0MiwgNjEsIDIyNSwgMTQyLCA5OSwgMjM3LCAyNDQsIDI0MiwgNjEsIDIyNSwgMTQyLCA5OSwgNjEsIAotICAgIDI0MiwgNjEsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgMjQ2LCAKLSAgICAxODEsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDYsIAotICAgIDE4MSwgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAKLSAgICAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCAKLSAgICA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjIyLCA2NCwgNzYsIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIAotICAgIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDEyNiwgNzYsIDI0OCwgCi0gICAgMjQzLCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAKLSAgICAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMTIsIDg4LCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIAotICAgIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIyMiwgCi0gICAgNjQsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDEyMCwgNzYsIAotICAgIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0NiwgCi0gICAgNTgsIDIyNSwgMTQyLCA5OSwgMjM5LCAyMzMsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAyNDYsIAotICAgIDU4LCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyNDEsIDE0MywgNzYsIDI0NiwgCi0gICAgNTgsIDIyNSwgMTQyLCA5OSwgMjIyLCA2NCwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjE4LCA3OSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMTksIDI0MiwgMjI1LCAxNDIsIDk5LCAyNDgsIDI0NCwgMjI1LCAxNDIsIDk5LCAyNDYsIDk5LCAyMjUsIDE0MiwgCi0gICAgOTksIDIxMSwgMTgzLCAyMjUsIDE0MiwgOTksIDIxMCwgMjE2LCAyMjUsIDE0MiwgOTksIDI1MCwgMjEsIDIyNSwgMTQyLCAKLSAgICA5OSwgMjA0LCA3LCAyMjUsIDE0MiwgOTksIDIzMCwgOTQsIDIyNSwgMTQyLCA5OSwgMjQ5LCAyNSwgMTYxLCA5OSwgMjM2LCAKLSAgICAxMDYsIDI0OSwgMjUsIDE2MSwgOTksIDIzNiwgMTA0LCAxNjEsIDk5LCAyMzYsIDEwMywgMTYxLCA5OSwgMjM2LCAxMDIsIAotICAgIDE2MSwgOTksIDIzNiwgMTAxLCAxNjEsIDk5LCAyMzYsIDEwMCwgMTYxLCA5OSwgMjM2LCA5OSwgMTYxLCA5OSwgMjM2LCA5OCwgCi0gICAgMTYxLCA5OSwgMjM2LCA5NywgMTYxLCA5OSwgMjM2LCA5NiwgMTYxLCA5OSwgMjM2LCA5NSwgMTYxLCA5OSwgMjM2LCA5NCwgCi0gICAgMTYxLCA5OSwgMjM2LCA5MywgMTYxLCA5OSwgMjM2LCA5MiwgMTYxLCA5OSwgMjM2LCA5MSwgMTYxLCA5OSwgMjM2LCA5MCwgCi0gICAgMTYxLCA5OSwgMjM2LCA4OSwgMTYxLCA5OSwgMjM2LCA4OCwgMTYxLCA5OSwgMjM2LCA4NywgMTYxLCA5OSwgMjM2LCA4NiwgCi0gICAgMTYxLCA5OSwgMjM2LCA4NSwgMTYxLCA5OSwgMjM2LCA4NCwgMTYxLCA5OSwgMjM2LCA4MywgMTYxLCA5OSwgMjM2LCA4MiwgCi0gICAgMTYxLCA5OSwgMjM2LCA4MSwgMTYxLCA5OSwgMjM2LCA4MCwgMTYxLCA5OSwgMjM2LCA3OSwgMTYxLCA5OSwgMjM2LCA3OCwgCi0gICAgMTYxLCA5OSwgMjM2LCA3NywgMTYxLCA5OSwgMjM2LCA3NiwgMTYxLCA5OSwgMjM2LCA3NSwgMTYxLCA5OSwgMjM2LCA3NCwgCi0gICAgMTYxLCA5OSwgMjM2LCA3MywgMTYxLCA5OSwgMjM2LCA3MiwgMTYxLCA5OSwgMjM2LCA3MSwgMTYxLCA5OSwgMjM2LCA3MCwgCi0gICAgMTYxLCA5OSwgMjM2LCA2OSwgMTYxLCA5OSwgMjM2LCA2OCwgMTYxLCA5OSwgMjM2LCA2NywgMTYxLCA5OSwgMjM2LCA2NiwgCi0gICAgMTYxLCA5OSwgMjM2LCA2NSwgMTYxLCA5OSwgMjM2LCA2NCwgMTYxLCA5OSwgMjM2LCA2MywgMTYxLCA5OSwgMjM2LCA2MiwgCi0gICAgMTYxLCA5OSwgMjM2LCA2MSwgMTYxLCA5OSwgMjM2LCA2MCwgMTYxLCA5OSwgMjM2LCA1OSwgMTYxLCA5OSwgMjM2LCA1OCwgCi0gICAgMTYxLCA5OSwgMjM2LCA1NywgMTYxLCA5OSwgMjM2LCA1NiwgMTYxLCA5OSwgODAsIDI0OSwgMjUsIDE2MSwgOTksIDIwNiwgCi0gICAgMzcsIDE2MSwgOTksIDIwNiwgMzYsIDE2MSwgOTksIDIwNiwgMzUsIDE2MSwgOTksIDIwNiwgMzQsIDE2MSwgOTksIDIwNiwgCi0gICAgMzMsIDE2MSwgOTksIDIwNiwgMzIsIDE2MSwgOTksIDIwNiwgMzEsIDE2MSwgOTksIDIwNiwgMzAsIDE2MSwgOTksIDIwNiwgCi0gICAgMjksIDE2MSwgOTksIDIwNiwgMjgsIDE2MSwgOTksIDIwNiwgMjcsIDE2MSwgOTksIDIwNiwgMjYsIDE2MSwgOTksIDIwNiwgCi0gICAgMjUsIDE2MSwgOTksIDIwNiwgMjQsIDE2MSwgOTksIDIwNiwgMjMsIDE2MSwgOTksIDIwNiwgMjIsIDE2MSwgOTksIDIwNiwgCi0gICAgMjEsIDE2MSwgOTksIDIwNiwgMjAsIDE2MSwgOTksIDIwNiwgMTksIDE2MSwgOTksIDIwNiwgMTgsIDE2MSwgOTksIDIwNiwgCi0gICAgMTcsIDE2MSwgOTksIDIwNiwgMTYsIDE2MSwgOTksIDIwNiwgMTUsIDE2MSwgOTksIDIwNiwgMTQsIDE2MSwgOTksIDIwNiwgCi0gICAgMTMsIDE2MSwgOTksIDIwNiwgMTIsIDE2MSwgOTksIDIwNiwgMTEsIDE2MSwgOTksIDIwNiwgMTAsIDE2MSwgOTksIDIwNiwgCi0gICAgOSwgMTYxLCA5OSwgMjA2LCA4LCAxNjEsIDk5LCAyMDYsIDcsIDE2MSwgOTksIDIwNiwgNiwgMTYxLCA5OSwgMjA2LCA1LCAKLSAgICAxNjEsIDk5LCAyMDYsIDQsIDE2MSwgOTksIDIwNiwgMywgMTYxLCA5OSwgMjA2LCAyLCAxNjEsIDk5LCAyMDYsIDEsIDE2MSwgCi0gICAgOTksIDIwNiwgMCwgMTYxLCA5OSwgMjA1LCAyNTUsIDE2MSwgOTksIDIwNSwgMjU0LCAxNjEsIDk5LCAyMDUsIDI1MywgMTYxLCAKLSAgICA5OSwgMjA1LCAyNTIsIDE2MSwgOTksIDIwNSwgMjUxLCAxNjEsIDk5LCAyMDUsIDI1MCwgMTYxLCA5OSwgMjA1LCAyNDksIAotICAgIDE2MSwgOTksIDIwNSwgMjQ4LCAxNjEsIDk5LCAyMDUsIDI0NywgMTYxLCA5OSwgMjA1LCAyNDYsIDE2MSwgOTksIDIwNSwgCi0gICAgMjQ1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNDksIDI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDIxMSwgMjI1LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgCi0gICAgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEzLCAKLSAgICAxMTIsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAxNDMsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjIyLCA2NCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIDIxMSwgMjI1LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDMyLCA3NiwgCi0gICAgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAKLSAgICA4MiwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgCi0gICAgMzgsIDEyMCwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgCi0gICAgMzgsIDIzOSwgMTQ3LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAyMzcsIDUzLCAyMTgsIAotICAgIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjEzLCAxMTIsIDc2LCAyMzcsIAotICAgIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIAotICAgIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDksIDE1MywgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIzMCwgMTc5LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIDIzNywgNTMsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIxNywgNDksIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjM3LCA1MywgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjE2LCAxMzgsIDIzMCwgOTQsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjQzLCAKLSAgICAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyNDMsIAotICAgIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAKLSAgICAyMzMsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIAotICAgIDM4LCAyMTMsIDExMiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDI0MywgMjIwLCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgCi0gICAgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIyOSwgMzIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjksIDgyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDYyLCAyMzAsIDk0LCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyNTEsIDEzMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjQ2LCAyLCAyMTgsIAotICAgIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMTQ3LCA3NiwgMjQ2LCAyLCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIAotICAgIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEzLCAxMTIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgCi0gICAgMTQzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDksIDE1MywgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyNDYsIDIsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIxNywgNDksIDc2LCAyNDYsIDIsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDYxLCAyMzAsIDk0LCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMzksIDE3MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0OCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzNywgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzNCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzMywgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA4LCAzMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzMSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzMCwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjA4LCAyOSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAyOCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0NywgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0NiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0NSwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA4LCA0NCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0MiwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjA4LCA0MSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCA0MCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzOSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzOCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA4LCAzNiwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjA4LCAzNSwgMTcsIDIwMiwgODUsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjAyLCA4NSwgMjQ1LCAyMzMsIDE3LCAxMTgsIAotICAgIDI0NSwgMjMzLCAxNywgMTIwLCAyNDUsIDIzMywgMTcsIDEyNiwgMjQ1LCAyMzMsIDE3LCAyMzksIDE0NywgMjQ1LCAyMzMsIAotICAgIDE3LCAyMzksIDIzMywgMjQ1LCAyMzMsIDE3LCAyMTIsIDg4LCAyNDUsIDIzMywgMTcsIDIxMywgMTEyLCAyNDUsIDIzMywgCi0gICAgMTcsIDI0MSwgMTQzLCAyNDUsIDIzMywgMTcsIDIyMiwgNjQsIDI0NSwgMjMzLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMjAyLCAKLSAgICA4NCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMjAyLCA4NCwgMTAyLCA4LCA2LCAxLCA2MywgMTAyLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTAyLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTAyLCA4LCA2LCAxLCAyNDUsIDUxLCAxMDIsIDgsIDYsIDEsIAotICAgIDc0LCAxMDIsIDgsIDYsIDEsIDI0MCwgMTc0LCAxMDIsIDgsIDYsIDEsIDIzOSwgNzUsIDEwMiwgOCwgNiwgMSwgMjM3LCAKLSAgICAxNzEsIDEwMiwgOCwgNiwgMSwgNzUsIDEwMiwgOCwgNiwgMSwgMjMwLCAxODQsIDEwMiwgOCwgNiwgMSwgMjMwLCA1NCwgCi0gICAgMTAyLCA4LCA2LCAxLCAxNTksIDEwMiwgOCwgNiwgMSwgMjI2LCAxODUsIDEwMiwgOCwgNiwgMSwgMjIzLCAxNjMsIDEwMiwgCi0gICAgOCwgNiwgMSwgNzgsIDEwMiwgOCwgNiwgMSwgMjE5LCAxODQsIDEwMiwgOCwgNiwgMSwgMjE3LCAxMzQsIDEwMiwgOCwgNiwgCi0gICAgMSwgMTQ2LCAxMDIsIDgsIDYsIDEsIDE5NCwgMTAyLCA4LCA2LCAxLCAyMTAsIDY5LCAxMDIsIDgsIDYsIDEsIDY4LCAxMDIsIAotICAgIDgsIDYsIDEsIDIwNiwgMTY0LCAxMDIsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxMDIsIDgsIDYsIDEsIDIwMywgMTk2LCAxMDIsIAotICAgIDgsIDYsIDEsIDIwMywgMTI0LCAxMDIsIDgsIDYsIDEsIDIwMiwgMTU5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIAotICAgIDgsIDYsIDEsIDE5NCwgNDMsIDM3LCA4LCA2LCAxLCAyNDcsIDEyNSwgNDMsIDM3LCA4LCA2LCAxLCAxNDYsIDQzLCAyNDYsIAotICAgIDIzOSwgNDMsIDIwMywgMTk4LCAxMDMsIDgsIDYsIDEsIDYzLCAxMDMsIDgsIDYsIDEsIDI0OSwgMjU1LCAxMDMsIDgsIDYsIAotICAgIDEsIDI0NywgMTI1LCAxMDMsIDgsIDYsIDEsIDI0NSwgNTEsIDEwMywgOCwgNiwgMSwgNzQsIDEwMywgOCwgNiwgMSwgMjQwLCAKLSAgICAxNzQsIDEwMywgOCwgNiwgMSwgMjM5LCA3NSwgMTAzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTAzLCA4LCA2LCAxLCA3NSwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTAzLCA4LCA2LCAxLCAyMzAsIDU0LCAxMDMsIDgsIDYsIDEsIDE1OSwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMjYsIDE4NSwgMTAzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTAzLCA4LCA2LCAxLCA3OCwgMTAzLCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NCwgMTAzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTAzLCA4LCA2LCAxLCAxNDYsIDEwMywgOCwgNiwgMSwgMTk0LCAKLSAgICAxMDMsIDgsIDYsIDEsIDIxMCwgNjksIDEwMywgOCwgNiwgMSwgNjgsIDEwMywgOCwgNiwgMSwgMjA2LCAxNjQsIDEwMywgOCwgCi0gICAgNiwgMSwgMjA0LCAxNDQsIDEwMywgOCwgNiwgMSwgMjAzLCAxOTYsIDEwMywgOCwgNiwgMSwgMjAzLCAxMjQsIDEwMywgOCwgCi0gICAgNiwgMSwgMjAyLCAxNTksIDEwMywgMjM1LCAyNTUsIDEwMywgMjIzLCAxODcsIDEwMywgMjE0LCAxNzksIDEwMywgMjExLCAKLSAgICAxNjcsIDEwMywgMjE4LCAxMCwgMTAzLCAyMDQsIDYzLCAxODIsIDQzLCA4LCA2LCAxLCA2MywgMTgyLCA0MywgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDE4MiwgNDMsIDgsIDYsIDEsIDI0NywgMTI1LCAxODIsIDQzLCA4LCA2LCAxLCAyNDUsIDUxLCAxODIsIDQzLCAKLSAgICA4LCA2LCAxLCA3NCwgMTgyLCA0MywgOCwgNiwgMSwgMjQwLCAxNzQsIDE4MiwgNDMsIDgsIDYsIDEsIDIzOSwgNzUsIDE4MiwgCi0gICAgNDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxODIsIDQzLCA4LCA2LCAxLCA3NSwgMTgyLCA0MywgOCwgNiwgMSwgMjMwLCAxODQsIAotICAgIDE4MiwgNDMsIDgsIDYsIDEsIDIzMCwgNTQsIDE4MiwgNDMsIDgsIDYsIDEsIDE1OSwgMTgyLCA0MywgOCwgNiwgMSwgMjI2LCAKLSAgICAxODUsIDE4MiwgNDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxODIsIDQzLCA4LCA2LCAxLCA3OCwgMTgyLCA0MywgOCwgNiwgMSwgCi0gICAgMjE5LCAxODQsIDE4MiwgNDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxODIsIDQzLCA4LCA2LCAxLCAxNDYsIDE4MiwgNDMsIDgsIAotICAgIDYsIDEsIDE5NCwgMTgyLCA0MywgOCwgNiwgMSwgMjEwLCA2OSwgMTgyLCA0MywgOCwgNiwgMSwgNjgsIDE4MiwgNDMsIDgsIAotICAgIDYsIDEsIDIwNiwgMTY0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTgyLCA0MywgOCwgNiwgMSwgMjAzLCAxOTYsIAotICAgIDE4MiwgNDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDIsIDE1OSwgMjE2LCAxODgsIDIyNSwgCi0gICAgMjYsIDU0LCAyMTYsIDE4OCwgMjI1LCAyMywgNTQsIDE4MiwgMTAzLCA4LCA2LCAxLCA2MywgMTgyLCAxMDMsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxODIsIDEwMywgOCwgNiwgMSwgMjQ3LCAxMjUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDUsIDUxLCAxODIsIAotICAgIDEwMywgOCwgNiwgMSwgNzQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzOSwgCi0gICAgNzUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTgyLCAxMDMsIDgsIDYsIDEsIDc1LCAxODIsIDEwMywgOCwgNiwgCi0gICAgMSwgMjMwLCAxODQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMzAsIDU0LCAxODIsIDEwMywgOCwgNiwgMSwgMTU5LCAxODIsIAotICAgIDEwMywgOCwgNiwgMSwgMjI2LCAxODUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMjMsIDE2MywgMTgyLCAxMDMsIDgsIDYsIDEsIAotICAgIDc4LCAxODIsIDEwMywgOCwgNiwgMSwgMjE5LCAxODQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTgyLCAxMDMsIAotICAgIDgsIDYsIDEsIDE0NiwgMTgyLCAxMDMsIDgsIDYsIDEsIDE5NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxMCwgNjksIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCA2OCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwNiwgMTY0LCAxODIsIDEwMywgOCwgNiwgMSwgMjA0LCAKLSAgICAxNDQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwMywgMTI0LCAxODIsIDEwMywgCi0gICAgOCwgNiwgMSwgMjAyLCAxNTksIDI0NSwgMTI4LCAxODIsIDEwMywgOCwgNiwgMSwgMjE5LCAxODQsIDE4MiwgMTAzLCAyMzUsIAotICAgIDE2NCwgMTgyLCAxMDMsIDE4NSwgMTgyLCAxMDMsIDIxNSwgMzYsIDE4MiwgMTAzLCAyNTEsIDIzMiwgMTgyLCAxMDMsIDIwNCwgCi0gICAgNjMsIDUxLCAyNDMsIDEzMiwgMTAzLCAyNDYsIDQyLCAxMDMsIDI0NSwgMTc2LCAxMDMsIDIzOSwgMTI5LCAxMDMsIDIzNSwgCi0gICAgMTU1LCAxMDMsIDIyMiwgMjEzLCAxMDMsIDIyMiwgMjA1LCAxMDMsIDIyMCwgNTEsIDEwMywgMjExLCAyNDUsIDEwMywgMTEyLCAKLSAgICAzLCAyNDAsIDIxMiwgODIsIDEwMywgMjA1LCAxNjYsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNjMsIDIxNiwgMTMwLCAKLSAgICAyMzEsIDMyLCAxNiwgMSwgMjQ5LCAyNTUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjQ3LCAxMjUsIDIxNiwgMTMwLCAKLSAgICAyMzEsIDMyLCAxNiwgMSwgMjQ1LCA1MSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA3NCwgMjE2LCAxMzAsIDIzMSwgMzIsIAotICAgIDE2LCAxLCAyNDAsIDE3NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMzksIDc1LCAyMTYsIDEzMCwgMjMxLCAzMiwgCi0gICAgMTYsIDEsIDIzNywgMTcxLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIAotICAgIDIzMCwgMTg0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIzMCwgNTQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgCi0gICAgMTU5LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIyNiwgMTg1LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIyMywgCi0gICAgMTYzLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc4LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxOSwgMTg0LCAKLSAgICAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIxNywgMTM0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDE0NiwgMjE2LCAKLSAgICAxMzAsIDIzMSwgMzIsIDE2LCAxLCAxOTQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjEwLCA2OSwgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCA2OCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMDYsIDE2NCwgMjE2LCAxMzAsIDIzMSwgCi0gICAgMzIsIDE2LCAxLCAyMDQsIDE0NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMDMsIDE5NiwgMjE2LCAxMzAsIDIzMSwgCi0gICAgMzIsIDE2LCAxLCAyMDMsIDEyNCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMDIsIDE1OSwgNTEsIDE3MiwgMjM2LCAKLSAgICAxMzAsIDEwMywgNjcsIDIyOSwgMTQsIDEwMywgNjcsIDIxNSwgMzYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwMCwgCi0gICAgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTIsIDEwMywgNjcsIDI0NCwgCi0gICAgNzUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExOSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA2LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA3OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMTgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkyLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4NSwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgOTQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExNSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTAxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkzLCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMTYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA4NCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwNywgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTA5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgOTgsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDk2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMjIsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDEyMSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEwMiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTIwLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTEsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDk3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgOTksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MCwgMTAzLCAxMiwgMjA2LCAKLSAgICAyMzksIDIzMywgMTEwLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTAsIAotICAgIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDkxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA4MywgMTAzLCAxMiwgMjA2LCAKLSAgICAyMzksIDIzMywgMTE0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDgsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgCi0gICAgMTIsIDIwNiwgMjM5LCAyMzMsIDg5LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMjEsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDExOSwgMjA4LCAxMzMsIDIxMywgCi0gICAgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTAzLCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA4NiwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgOTksIAotICAgIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDgyLCAyMDgsIDEzMywgMjEzLCAzMywgCi0gICAgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMTMsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgCi0gICAgMjM5LCAyMzMsIDk1LCA0MywgMTg5LCAyNTEsIDExMSwgNDMsIDE4OSwgMjUxLCAxMzYsIDI0NSwgNjIsIDIzOSwgMTg0LCAKLSAgICAyNDYsIDE2LCAyMDcsIDMsIDIyMiwgODAsIDMsIDIxMSwgOTEsIDIxMCwgMjA5LCAxMTUsIDIyNCwgMTEsIDIxMCwgMjA4LCAKLSAgICAyNDYsIDQ2LCAyNTAsIDUwLCAyNDIsIDE3LCAyMTAsIDIwNywgMTE1LCAyNDcsIDE4MiwgMjE2LCAxODksIDI0NywgMjA4LCAKLSAgICAyNTAsIDUwLCAyMjIsIDc5LCAyMDQsIDgxLCAyMDQsIDc1LCAyMDUsIDE4MSwgMjI0LCAxMTgsIDIwNCwgNjUsIDI0MSwgCi0gICAgMTgwLCAyMzgsIDQ2LCAyNDAsIDIyOCwgMjQxLCAxODAsIDIzOCwgNDYsIDI1MCwgMjM4LCAyNDEsIDE4MCwgMjM4LCA0NiwgCi0gICAgMjUwLCA2OCwgMjM4LCA0NiwgMywgMjI0LCAyMzEsIDIyMiwgMjE0LCAyMjQsIDMwLCA5NywgMjA0LCA2NywgMjQ1LCAxMzksIAotICAgIDIyNCwgMzAsIDk3LCAyMzksIDI0NSwgMjE3LCA1NiwgMjI0LCAzMCwgOTcsIDIwNCwgNjcsIDIzOCwgNzcsIDIyNCwgMzAsIAotICAgIDk3LCAyMzksIDEwMiwgMjI0LCAzMCwgOTcsIDIwNCwgOTQsIDIzOCwgNzcsIDIyNCwgMzAsIDk3LCAyMjgsIDEsIDIxNywgCi0gICAgNTYsIDIyNCwgMzAsIDk3LCAyMDQsIDk0LCAyNDUsIDEzOSwgMjI0LCAzMCwgOTcsIDI0NSwgMTM5LCAyMjQsIDI5LCAyMjIsIAotICAgIDIxNCwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjI4LCAKLSAgICAxLCAyMTcsIDU2LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjM5LCAxMDIsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMTAsIAotICAgIDIxNSwgMywgMjQwLCAxMDIsIDIzOCwgNDQsIDIxMSwgOTQsIDIxMiwgMjMzLCAyMTEsIDk0LCAyMDksIDgwLCA2MiwgMjQyLCAKLSAgICA0OSwgNjEsIDIxMCwgMjE0LCA2MSwgMjEwLCAyMTUsIDMsIDUsIDI0NiwgNywgNjEsIDIxMCwgMjE1LCAyNDgsIDEzNSwgCi0gICAgMjQ2LCA3LCA2MSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAyNDYsIDgsIDMsIDIxNiwgMTkwLCAyNDYsIDgsIDMsIDIxNiwgMTkwLCAKLSAgICAyNDYsIDgsIDMsIDIxMiwgMTksIDI0NiwgOCwgMywgMjI3LCAxMzEsIDI0NiwgOCwgMywgMjA4LCAxMzcsIDIzOSwgMTg1LCAKLSAgICAyMDQsIDE3LCAyNDgsIDI3LCAyNDAsIDEwMiwgMjM2LCA0NywgMjQzLCAxMDIsIDIxMCwgMiwgMjQ3LCAxNTgsIDI0NiwgCi0gICAgMTQ4LCAyMTQsIDE2MywgMjQwLCAyMjIsIDIwOCwgOTUsIDI0NCwgNjksIDIwOCwgOTUsIDIxOSwgMTM1LCAyMDgsIDk1LCAKLSAgICAyNDcsIDg1LCAyMzYsIDQ3LCAyMTgsIDI0OCwgMjA3LCAxOTMsIDI0NiwgMTUyLCAyNDgsIDMwLCAyMTUsIDIwMiwgMjM3LCAKLSAgICAyLCAyMTAsIDIxMiwgMjQ4LCAzMCwgMjQxLCAxODQsIDc2LCAyMjUsIDEzMSwgMjQxLCAxODQsIDc2LCAyMTYsIDUyLCAyMzcsIAotICAgIDI4LCAyMzksIDE0NywgMjI3LCAyMzAsIDI0NiwgNiwgMjI1LCAxMDQsIDIyNywgMjI5LCAyNDAsIDg1LCAyMjcsIDIyOSwgCi0gICAgMjI3LCAyMzAsIDIzOSwgMTkyLCAyMzEsIDUwLCAyMDQsIDE2LCAyMjMsIDE5NiwgMjA4LCAxNjUsIDI1MCwgMzMsIDIzOCwgCi0gICAgNSwgMjI0LCAyNDksIDIwNCwgNzksIDIwOSwgMjI1LCAyMjcsIDE5OSwgMjQ4LCAyMzksIDIxOCwgMTIwLCAyMTYsIDEzOCwgCi0gICAgMjUwLCAxNTcsIDIzNywgMjQ0LCAyNTAsIDE1NywgMjE5LCAyOSwgMjE5LCAzMSwgMjQ2LCAxNTMsIDIxMSwgNDUsIDIzNywgCi0gICAgMTMyLCAyMTIsIDUxLCA3NiwgMjE4LCAxMDAsIDIyNSwgMTYsIDIyMCwgMzIsIDI0OCwgMTEsIDIxOCwgMjEsIDIyNywgMjEwLCAKLSAgICAyMTYsIDUzLCAyNDUsIDE0NSwgMjE2LCA1MywgMjQ4LCAyNTEsIDI0NSwgMTc5LCAyMTYsIDUyLCAyNDUsIDg5LCAyNSwgCi0gICAgMjE2LCA1MiwgMjExLCA3OSwgMjQ3LCAyMzcsIDIxMSwgMjI0LCAyNDcsIDIxOSwgMjM5LCAxMjgsIDIzOSwgMTI0LCAyMTUsIAotICAgIDIyMywgMjEwLCAxNjUsIDIxOCwgMjMsIDI0NCwgMTYzLCAyMjAsIDc1LCAyMTAsIDE4MywgMjM5LCAxMjUsIDIxMiwgMjA0LCAKLSAgICAyMzksIDI0NCwgMjQ3LCA3OSwgMywgMjEwLCAxNTgsIDI0NCwgMTMsIDIxMiwgNywgMjM1LCAxNjMsIDI0NSwgMTQzLCAyMTMsIAotICAgIDUxLCAyMzUsIDE2MiwgMjM1LCAxNjMsIDI0NSwgMTQzLCAyNDIsIDczLCAyNDUsIDE3OCwgMjQ2LCAxMTQsIDE0MiwgMjQ3LCAKLSAgICA1MSwgMjI3LCAzMiwgMjQ1LCA4MSwgMjM2LCAxMTksIDIxOCwgMjUsIDIxMiwgMjE3LCAyNDgsIDExNiwgMjQ3LCAyMzMsIAotICAgIDIxOCwgMjYsIDc2LCAyMzksIDE3NCwgMjQ1LCAxNzcsIDIzOSwgMTYzLCAyNSwgMjI5LCAzMywgMjA5LCAxODQsIDIwNCwgMywgCi0gICAgMjM3LCAxMDIsIDIxNSwgMTMsIDI0NywgMjUwLCAyNSwgMjQ1LCA5OSwgMjA0LCAxMywgMjM4LCA0OSwgMjQ1LCAyNTEsIAotICAgIDIzOCwgNDksIDIwOCwgNTEsIDI0MiwgNTQsIDI0OCwgMTQ2LCAyMjMsIDIzNSwgMjQ2LCAyMywgMjQ4LCAxNDYsIDIyMywgCi0gICAgMjM0LCAyNDksIDI4LCAyNDcsIDI0OSwgMjM5LCAxNjMsIDI1LCAyMjksIDM0LCAzLCAyMTgsIDg5LCAyNDcsIDI1MCwgMywgCi0gICAgMjE4LCAzOCwgMjQ1LCAxNjcsIDIxOCwgNDAsIDIxNiwgNTQsIDIwMywgMjI3LCAyMTcsIDI0MiwgMjQ4LCA1OCwgMjQ3LCAKLSAgICA3OCwgMjMwLCAxNzgsIDI0NiwgMTA2LCAyMDgsIDk1LCAyNDAsIDY4LCAyNDYsIDEwNSwgMjM5LCAyNDcsIDIzOSwgMjQ4LCAKLSAgICAyMTEsIDIyMiwgMjQ4LCAyNTAsIDIxOSwgNjYsIDIxOCwgMzksIDI0NSwgMjE1LCAyNDgsIDI1MSwgMjA5LCAyMjksIDIwOCwgCi0gICAgOTUsIDI0NSwgMTI4LCAyMzksIDIxOSwgMjE4LCAxMjEsIDI0NCwgNjYsIDIzMCwgMTY5LCAyNDMsIDk2LCAyNDcsIDI3LCAKLSAgICAyMTEsIDQ0LCAyMDQsIDE3LCAyNDYsIDEzMCwgMjI0LCAzMCwgMjA1LCAyMTcsIDI0NiwgMjA0LCAyMTQsIDE5NiwgMjE0LCAKLSAgICAyMjMsIDIzOCwgMTEsIDI0NywgNDgsIDIzNywgNTYsIDMsIDIwOCwgMjExLCAyMjAsIDMyLCAyMDksIDkzLCAyMjcsIDIyMiwgCi0gICAgMjQ3LCAyNDMsIDc2LCAyMzksIDE5NiwgMjI0LCAxMTksIDIyNSwgMTMsIDIxNiwgMTEwLCAyMTYsIDU0LCAzMSwgMjI5LCAKLSAgICAxNTAsIDMsIDIzMCwgMTc3LCAyMTEsIDE1LCAyMjQsIDE1MiwgMjI3LCAxNjcsIDIxMiwgNDksIDI0NSwgMTg0LCAyMjksIAotICAgIDMwLCAyNDgsIDE1OCwgMjUwLCA3OCwgMzEsIDIyMSwgMTU1LCAyNDgsIDE1OCwgMjQ0LCAxOSwgMzEsIDIyMSwgMTU1LCAKLSAgICAyNDAsIDYsIDIzOSwgMTMzLCAyNTEsIDExNCwgMjA4LCAyNTIsIDI0NywgMjgsIDIzNiwgNDksIDI0MCwgMzUsIDIwNCwgMzYsIAotICAgIDIxNSwgMjEzLCAyNDUsIDI1MiwgMjM5LCAyMzksIDIxOCwgNTQsIDI1LCAyMzksIDI0MywgMjI0LCAxNTIsIDIyMywgMjUzLCAKLSAgICAyNDcsIDY1LCAyNDYsIDY1LCAyMzcsIDYwLCAyNTAsIDg1LCAyMTksIDEzOCwgMjA4LCAxNDUsIDIzNywgODMsIDI0NiwgNTEsIAotICAgIDIwOSwgMTQ0LCAyMDgsIDI1MywgMjQ2LCAzNywgMjQ4LCAyMCwgMjE4LCAyNDEsIDI1MCwgODQsIDIwNSwgMjI2LCAyMzgsIAotICAgIDIzOCwgMjQzLCAxNjcsIDIzNiwgMjMwLCAyMTIsIDQyLCAyMjUsIDE3MiwgMjQ4LCA2OSwgMjM4LCAyMzksIDI0MywgMjEzLCAKLSAgICAyNDcsIDIzNiwgMjM5LCAxOTgsIDIxOCwgODgsIDI0NywgMzYsIDMxLCAyMjEsIDE2MCwgMjIzLCAyMjYsIDMxLCAyMjEsIAotICAgIDE1NSwgMjE0LCAyMDksIDIzNywgMjE0LCAzMSwgMjI5LCAxNDksIDIwOCwgMjcsIDIwNSwgMjA2LCAzMSwgMjE0LCAxODksIAotICAgIDIxNSwgMTI2LCAyMTIsIDI0NiwgMywgMjE0LCAyMjYsIDIwOSwgMTQ5LCAyMTYsIDIwOSwgMjUsIDI0OCwgMjUxLCAyMTIsIAotICAgIDY3LCAyNSwgMjEyLCA2NywgMjQ4LCA0LCAyNDgsIDIxMywgMjUsIDIzNiwgMTEyLCAyNDYsIDE1NCwgMjM5LCAyMjUsIDIxMiwgCi0gICAgMTgsIDIxNSwgMTI3LCAyMTAsIDE4OCwgMjExLCAxODksIDIyNSwgMTMsIDIwOCwgNTIsIDIzNiwgNTAsIDIxNiwgMjEwLCAKLSAgICAyNTAsIDIzOSwgMjM5LCAxNzEsIDIxNSwgMTM5LCAyMzksIDE3MSwgMjEwLCAxNjAsIDIwNCwgNTEsIDIyNywgMTM2LCAyMzgsIAotICAgIDMwLCAyMTYsIDIxMSwgMjI0LCAxOCwgMjE2LCAyMTEsIDI0NywgMzksIDI0NSwgMTM2LCAyNDgsIDIxMCwgMjUsIDI0OCwgCi0gICAgMjUxLCAyMDUsIDE4MCwgMjQwLCAyNSwgMjM2LCAxMzMsIDIxMSwgNzMsIDI1LCAyNDgsIDI1MSwgMjM1LCAxNjMsIDIzNiwgCi0gICAgMTMzLCAyMTEsIDczLCAyNSwgMjE3LCAxODQsIDIxMCwgOSwgMjA5LCAxNDksIDIxOSwgMTU2LCAyNSwgMjQ4LCAyNTEsIAotICAgIDIxMiwgMjAsIDI0NywgNDQsIDIyNCwgMTIsIDI0NywgNjMsIDI0OCwgMTYxLCAzLCAyMDcsIDMsIDI0NywgMTg0LCAyNDUsIAotICAgIDE5OCwgMjM2LCAzOSwgMjQ3LCAxODIsIDI0NiwgNDUsIDI0NCwgMjMsIDIzNiwgMzksIDI0NywgMTgzLCAyNDYsIDM1LCAKLSAgICAyNDcsIDE4MywgMjQ0LCAxNSwgMjQ0LCAxNiwgMjMwLCAyMDgsIDIyMywgNjcsIDIxOSwgNzIsIDIxMSwgMTA0LCAyMzYsIAotICAgIDM5LCAyNDcsIDE4MywgMjM2LCAzOSwgMywgMjM4LCAyMjIsIDIyMCwgNjcsIDI0NywgMTgzLCAyMzAsIDE2OSwgMjE4LCAzMSwgCi0gICAgMjIwLCA2NiwgMjQwLCAyMjcsIDIxOCwgMzEsIDIyMCwgNjYsIDIzNiwgNDgsIDI0OCwgMjM1LCAyNTAsIDIzLCAyMDksIAotICAgIDE1NywgMjI1LCAxNzIsIDIzNiwgNDQsIDIyNywgMSwgMjM2LCA0NCwgMjQ1LCAxODIsIDIxMSwgNTcsIDIxNCwgMTk1LCAKLSAgICAyNDQsIDI2LCAyMTEsIDU3LCAyNDAsIDkxLCAyMzAsIDE4OSwgMjI4LCAxMywgMjMwLCAxNjksIDI0NywgMTksIDI0MCwgCi0gICAgMjI3LCAyNDcsIDE5LCA2MSwgMjE5LCAzLCA2MiwgMjE5LCAzLCAyMDQsIDczLCA2MSwgMjM5LCAyMjUsIDIwNCwgNzMsIDYyLCAKLSAgICAyMzksIDIyNSwgMjE1LCAyMDEsIDYyLCAyMTUsIDIwMSwgMjI4LCAxMDUsIDI0OSwgMTIsIDIxNiwgMjA5LCAyNSwgMjEyLCAKLSAgICAxODMsIDI0NywgMjQxLCAyNSwgNDcsIDI1MCwgMjM0LCAyNDEsIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTE5LCAyNDEsIAotICAgIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTE2LCAyNDEsIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTE0LCAyNDEsIDk4LCA2NSwgCi0gICAgMjM5LCAyMzQsIDIwNywgMTEyLCAyNDEsIDk4LCA2NSwgMjM5LCAyMzQsIDIwNywgMTEwLCAyMTYsIDE3MiwgMjI0LCA5LCAKLSAgICAyMTksIDE5MywgMjA0LCA4MSwgMjQ3LCAxODgsIDI0NSwgMTQ5LCAyMDgsIDI0NSwgMjI3LCAxODMsIDIxNiwgMjEyLCAyNDcsIAotICAgIDE3LCAyNDIsIDYxLCAyNDUsIDEzNSwgMjA0LCAzOSwgMjEyLCAyNiwgMjEyLCAyNCwgMjM2LCA0OSwgMjE2LCAxODQsIDIzOCwgCi0gICAgMzUsIDIxMywgMzcsIDIyNCwgNDgsIDIxNSwgMjA1LCAyNDYsIDE0MCwgMjQzLCAxMDIsIDIxOCwgMTMxLCAyNDgsIDIxLCAKLSAgICAyNDEsIDExNCwgMjIwLCA3OCwgMjExLCAyMDIsIDIxMywgMzIsIDI0NywgMTg3LCAyNTAsIDE5OCwgMjM2LCAxMTgsIDIyOCwgCi0gICAgOTgsIDI0OCwgMTQ0LCAyMzksIDI0MywgMjA4LCA1MSwgMjM5LCAyNDMsIDI0OCwgMjgsIDIwNywgMTcxLCAyMzcsIDgxLCAKLSAgICAyNDYsIDE0MSwgMjQ5LCAyOCwgMjQ2LCAxNDEsIDIzOSwgMTE4LCAyNDksIDI4LCAyNDYsIDE0MSwgMjQ4LCA2MCwgMjE5LCAKLSAgICA1LCAyMjksIDI0LCAyMTgsIDQ0LCAyNDIsIDUxLCAyNDcsIDY3LCAyNDksIDE3LCAyNDcsIDY3LCAyNDMsIDk1LCAyMjQsIAotICAgIDEwLCAyNDAsIDEwMiwgMjQ1LCAxNTAsIDI0MCwgMTAyLCAyMDgsIDI0NiwgMjQwLCAxMDIsIDIxNiwgMjEzLCAyNDAsIDEwMiwgCi0gICAgMjQ3LCAxOCwgMjQwLCAxMDIsIDI0MiwgNjIsIDI0MCwgMTAyLCAyMTEsIDE4NywgMjA0LCAzOSwgMjM2LCA1MCwgMjQwLCAKLSAgICAxMDIsIDIyNCwgNDksIDI0MCwgMTAyLCAyNDMsIDEwMywgMjQwLCAxMDIsIDIxOCwgMTMyLCAyNDAsIDEwMiwgMjM5LCAxMjIsIAotICAgIDI0MCwgMTAyLCAyMzcsIDEyOSwgMjQwLCAxMDIsIDIwMywgMjUzLCAyNDAsIDEwMiwgMjQ4LCAxNTYsIDI0MCwgMTAyLCAKLSAgICAyMTksIDEyMCwgMjQwLCAxMDIsIDIxOCwgMTMyLCAyMjEsIDE2NywgMjE5LCA0NiwgMjE3LCAyMzAsIDI0NiwgMTI1LCAyNDAsIAotICAgIDE4NCwgMjQwLCAxOTEsIDI0MSwgMTgzLCAyMjEsIDE2NywgMjI0LCA3LCAyMDgsIDE1MCwgNjEsIDExMiwgMjE4LCA1OSwgCi0gICAgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDEyMSwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgNjEsIDQ5LCAyMTgsIDU5LCAKLSAgICAyNDksIDIzLCAyMzEsIDM1LCA2MSwgNTAsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDIzOSwgMjM3LCAyMzcsIDEyNCwgCi0gICAgNTQsIDIwNCwgNzMsIDIzNywgMTI0LCA1NCwgMjIwLCA1MiwgMjM3LCAxMjQsIDU0LCAyMDksIDIwLCAxMTIsIDU0LCAyMDksIAotICAgIDIwLCAxMjEsIDU0LCAyNDYsIDM2LCAyMzcsIDEwMCwgNTQsIDE3MSwgMjM3LCAxMDAsIDU0LCAyNDUsIDEyMiwgMjAzLCAKLSAgICAyNDksIDIzNywgODMsIDI0MCwgMTg3LCAyMjIsIDIzNiwgMjEwLCA2OCwgMjMwLCAxNjAsIDI0MiwgNTYsIDIyOSwgODUsIAotICAgIDI0OCwgNzEsIDIwMywgMjQ5LCAyNDYsIDksIDIxNywgMTY1LCAyMzcsIDEwMywgMjE4LCAyMiwgMjI1LCAxMTIsIDIxMiwgCi0gICAgMjM5LCAyNTAsIDQ2LCAyMTIsIDIzOSwgMjM2LCAyNDMsIDIxMiwgMjM5LCAyMDMsIDI0OSwgMjE0LCAyNDAsIDIwMywgMjQ5LCAKLSAgICAyNDgsIDMsIDIzOSwgMTY5LCAyNDcsIDE1MCwgMjMxLCA1MCwgMjEyLCAxMzYsIDI0NywgMTQ5LCAyMzEsIDUwLCAyMTIsIAotICAgIDEzNiwgMjQ3LCAyMzIsIDIzOCwgNjAsIDIyNSwgMTIyLCAyMDMsIDI1MCwgMjQwLCA4MiwgMjI1LCAxMjMsIDI1LCAyMDMsIAotICAgIDI1MSwgMjM2LCAxMjcsIDIzNywgOTksIDEyMCwgMjI0LCAyNDEsIDIzNiwgMTI3LCAyMzcsIDk5LCAxMjAsIDIwMywgMjQ4LCAKLSAgICAyMzYsIDEyNywgMjM3LCA5OSwgMjE4LCA1MSwgMjIwLCA2NSwgMjAzLCAyNTEsIDMsIDI0NywgMTY4LCAyNDEsIDE4MSwgCi0gICAgMjQ3LCAyMDksIDMsIDIwNiwgNDYsIDIxOCwgMjMwLCAzLCAyNDgsIDMyLCAyMzcsIDE0NSwgMjI1LCAxMjMsIDMsIDIzNywgCi0gICAgMjI3LCAyMTgsIDE2OCwgMjI1LCAxMDgsIDIyNSwgMTIzLCAzLCAyMDcsIDE4MCwgMjIwLCA0NCwgMjI1LCAxMjIsIDIyMCwgCi0gICAgNDQsIDIwMywgMjUwLCAyNDksIDI3LCAyNDUsIDE5OSwgMjAzLCAyMzQsIDIxNywgMjM1LCAyMzAsIDE2OSwgMjIwLCA2MSwgCi0gICAgMjMwLCAxNjksIDIzOCwgMzQsIDIzOCwgODksIDI0OSwgMjgsIDI1MCwgMjIxLCAyNDAsIDE5NiwgMjUxLCAyMCwgMjUxLCAKLSAgICAyMSwgMjI0LCAzOSwgMjMxLCA1NSwgMjEyLCA2MiwgMjMxLCAyNSwgMjQ0LCAxMiwgMjE4LCAyMjksIDIzNywgMjIxLCAyNDQsIAotICAgIDE2NywgMjI3LCA5NywgMjIzLCA5MSwgMjE4LCA1MCwgMjQwLCAxMDMsIDIyNSwgNzQsIDIzNywgMTQ0LCAyNDgsIDIyOSwgCi0gICAgMjE4LCA1MywgMjEwLCA4OCwgMjE4LCAxMjQsIDIyOSwgNjcsIDgyLCAyMjcsIDEsIDIyNywgMTc0LCAyMTUsIDI1MiwgMjM4LCAKLSAgICAxODAsIDIxMSwgNjMsIDIyOSwgNjYsIDI0NywgMjQyLCAyNDUsIDE1MiwgMywgMjM3LCA1NSwgMjA0LCA1OCwgMjQ4LCAxNTQsIAotICAgIDIzNywgNTUsIDI0NywgMjAzLCAyMzcsIDU1LCAxMjAsIDIzNywgNTMsIDIxMSwgMjIwLCAyMzcsIDU1LCAyMzcsIDIzNywgCi0gICAgMjM3LCA1NSwgMjM3LCA1NiwgMywgNDcsIDI0OCwgMjYsIDIzNywgNTUsIDIzNywgMjQ0LCAyMzcsIDU1LCAyMDMsIDQ1LCAKLSAgICAyMzcsIDU1LCAyMTcsIDE2NiwgMjM3LCA1NSwgMjM3LCA1NiwgMywgMjE2LCA1NCwgMjE2LCA2NywgMjM3LCA1MywgMjM3LCAKLSAgICA1NiwgMjQ0LCA2NiwgMjQzLCAyMjIsIDIxMywgNjMsIDMsIDM0LCA3MCwgMjMxLCA2LCAyNDEsIDExNywgMTU3LCAyNDcsIAotICAgIDE4MCwgMjUwLCAyMjAsIDk3LCAyNDgsIDEyLCAyMTIsIDU0LCA5NywgMjQ1LCAyNDQsIDk3LCAyMTEsIDE5NiwgMjEwLCAKLSAgICAxNjcsIDk3LCAyNDIsIDQ5LCAyNDQsIDE0NSwgOTcsIDIxOCwgMTI1LCA3NiwgMjE4LCA0NSwgMjM5LCAyMTAsIDI0OCwgODMsIAotICAgIDI0MywgMTMzLCA5NywgMjExLCAyMTIsIDI0OCwgMjUwLCAyMDksIDM4LCAyNDgsIDI1MCwgNjEsIDIzOSwgMTk3LCAyMzYsIAotICAgIDEyLCAyMTgsIDU3LCA5NywgMjI0LCA1MywgMjQ5LCAxMCwgMjQ1LCA5MiwgMjQwLCAyMTQsIDc5LCAyNDMsIDk3LCA1NCwgCi0gICAgMjQ1LCAxNDEsIDI0NywgMzcsIDI0OCwgMjM0LCAzLCAyMDMsIDQzLCA1NCwgMjQ4LCAyMzQsIDMsIDI0MywgOTcsIDU0LCAKLSAgICAyNDgsIDIzNCwgMywgMjQwLCAyMzAsIDU0LCAyNDgsIDIzNCwgMywgMjE4LCAyMCwgNTQsIDIyNCwgNTMsIDMsIDIwNCwgMTEsIAotICAgIDI0NiwgMTc4LCAzLCAxNzcsIDIwOCwgOTEsIDI1LCAyMDMsIDQzLCA1NCwgMjE0LCAxNzQsIDIxOCwgMjI4LCAyNDUsIDIyMCwgCi0gICAgMjQ3LCAyMDcsIDIyNCwgMTA4LCAyMzksIDIwMiwgMjQzLCAxNTQsIDIxOSwgMjQ4LCAyNDMsIDE1OSwgMjQyLCAxMiwgMjQwLCAKLSAgICAxMSwgMjM5LCAxODIsIDE3MSwgMjQwLCAxMSwgMjM5LCAxODIsIDIxOSwgMTU0LCAzLCAyNDUsIDk1LCAyMTksIDE1NCwgCi0gICAgMjQwLCA5NSwgMjA2LCAyMjQsIDI0NywgNzIsIDIwOSwgMTgzLCAyNDcsIDcyLCAyNDcsIDM4LCAyMzEsIDM1LCAyNDYsIAotICAgIDE3OCwgMywgMTc3LCAyMDgsIDkwLCAyNDYsIDE3OCwgMywgMTgzLCAyMDgsIDkwLCAyNDgsIDIzMSwgMjQ2LCAxNzcsIDI0NiwgCi0gICAgMjIsIDIxNywgMTYxLCAyMTUsIDE5MSwgMjE3LCAxNjEsIDIxOSwgOTQsIDIxMSwgNTMsIDIxNSwgMTMzLCAyMDgsIDgyLCAKLSAgICAyMTUsIDEzMywgMjQ4LCA4LCAyMTAsIDcsIDIyNywgMjI3LCAyMjEsIDE1OCwgMjIxLCAxNTksIDMsIDI0NCwgNjUsIDI0NSwgCi0gICAgMTUxLCAyNDYsIDE2LCAyNDgsIDksIDE3MSwgMjQ4LCA5LCAyMzcsIDI0NCwgMjQ4LCA5LCAyNDgsIDI2LCAyNDgsIDksIAotICAgIDIxOSwgMjQzLCAyNDgsIDksIDI0OCwgNiwgMjIzLCA4NSwgMjQ5LCAxNCwgMjE0LCAxODIsIDIyNCwgMjQyLCAyMDksIDE2MiwgCi0gICAgMjE2LCAxNTIsIDIxOSwgMTUyLCAyNDAsIDY1LCAyMjUsIDE3MiwgMjE0LCAyMjIsIDI1MCwgMTk1LCAyMTcsIDE4NSwgMjUxLCAKLSAgICAxMTksIDIyNywgMywgMjQ2LCAxNjIsIDIyNCwgMjU0LCAyMTksIDIxMCwgMjA4LCA5OCwgMjMxLCA0NiwgMjA4LCA5OCwgCi0gICAgMjE5LCAxNjEsIDI0MSwgMjM2LCA5NywgMjMxLCA0MywgMjQxLCA1NywgMjQxLCA1OCwgMywgMTgzLCA1MywgNTUsIDI0NiwgCi0gICAgMTYsIDIyNSwgMTM3LCAzLCAyMjYsIDI0OSwgMjM5LCAyMjUsIDI0NiwgMTYsIDIyNSwgMTM3LCAzLCAyMTYsIDE4OCwgMjM5LCAKLSAgICAyMjUsIDE3MSwgMjI1LCAxMzcsIDMsIDIxNiwgMTg4LCAyMzksIDIyNSwgMTcxLCAyMjUsIDEzNywgMywgMjI2LCAyNDksIAotICAgIDIzOSwgMjI1LCAyMTgsIDI4LCAyMTgsIDI5LCAyMzYsIDUzLCAyMjIsIDIxMCwgMjI0LCA4MCwgMjE4LCAxNzYsIDIyNCwgCi0gICAgODAsIDIxOCwgMTc3LCAzLCA4NiwgNTMsIDI1MCwgNTAsIDIyNywgMjIyLCAyMDUsIDIyOSwgMjI0LCA3OSwgMjI0LCA4MCwgCi0gICAgMjE4LCAxNzcsIDIyMCwgNjgsIDIyMSwgMTkyLCAyMjQsIDgwLCAyMTgsIDE3NSwgMjUwLCAxOTYsIDMsIDI0OCwgMjIwLCAKLSAgICAyNDcsIDY1LCAyNDcsIDY2LCAzLCAyMzksIDIxOCwgMjA1LCAyMjYsIDI0NywgNjUsIDIwOSwgMTU5LCAyMTYsIDIwNCwgCi0gICAgMjA1LCAyMjUsIDI0MCwgNiwgMjE3LCAyMTcsIDIxOCwgMzUsIDIxMSwgNzQsIDIxNywgMjU0LCAyNDgsIDE2MCwgMjA3LCAKLSAgICAxMzgsIDg2LCAyNTAsIDkxLCAyNDYsIDE4LCA4NiwgMjUsIDk2LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTEsIDI0NiwgMTgsIAotICAgIDg2LCAyNSwgOTYsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MiwgMywgNDMsIDExOCwgMjE5LCAxOTksIDI0NiwgMTgsIDE4MywgCi0gICAgMjUsIDE3NywgMTcxLCAyNDYsIDYyLCAyNTAsIDkxLCAyNTAsIDE5NCwgMTgzLCAyNSwgMTc3LCAxNzEsIDI0NiwgNjIsIAotICAgIDI1MCwgOTEsIDEyNCwgMjQ3LCAyMDYsIDk3LCAxMzgsIDI0NywgMjA2LCA5NywgMjExLCAyMTcsIDMsIDI0NywgNTgsIDk1LCAKLSAgICAyMTEsIDIxNiwgMjExLCAyMTcsIDMsIDExOCwgMjExLCAyNDEsIDIwNCwgNzUsIDIxMSwgMjE3LCAzLCAxMjYsIDIxMSwgCi0gICAgMjQxLCAyMDQsIDc0LCAyNDgsIDIwMywgMjQxLCAxMTcsIDIxOCwgODEsIDIyNywgMjE3LCAyMjUsIDE0OSwgMjM4LCA0OSwgCi0gICAgMjE2LCAxMSwgMjI1LCAxNDksIDIzOCwgNDksIDIyNywgNDMsIDMsIDIzMSwgMTcsIDIxOSwgOSwgMjQ2LCAxNiwgMjI3LCAKLSAgICA0MywgMywgMjI5LCAxNTEsIDIyOSwgMTUxLCAyMjcsIDQyLCAxNzEsIDIyNywgNDIsIDI0OCwgMTI4LCAyNDgsIDEyOSwgMywgCi0gICAgMjQ3LCA1OCwgOTUsIDI0OCwgNywgMjI3LCAxMDUsIDk3LCAyMTYsIDIwNSwgMjQ3LCAxNDUsIDI0OSwgMjYsIDMsIDk2LCAKLSAgICA1MywgNTUsIDI0MSwgODQsIDMsIDk2LCA1MywgNTUsIDIyMCwgMzIsIDMsIDI0MCwgMjEyLCAxMzEsIDMsIDQ5LCA1MCwgNTMsIAotICAgIDU1LCAyMTEsIDI0OSwgMywgODYsIDUzLCA1NSwgMjA4LCAxNDUsIDMsIDE3NywgNTMsIDU1LCAyMjEsIDE5MiwgMTE4LCAKLSAgICAyMDYsIDI0OCwgMjQxLCAxNDEsIDk3LCAyMjksIDE0OCwgMjA5LCAxNTIsIDIzMSwgMTEsIDE2LCAzNSwgOCwgNiwgMjI3LCAKLSAgICAxNzMsIDIzMSwgMTEsIDE2LCAzNSwgOCwgNSwgMjI3LCAxNzMsIDIzMSwgMTEsIDE2LCAzNSwgMjIxLCA0NSwgMjMxLCAxMSwgCi0gICAgMTYsIDM1LCAyMTAsIDEwMiwgMjMxLCAxMSwgMTYsIDM1LCA4LCAyMjcsIDE3MywgMjM5LCAyNDksIDI0MSwgMTE3LCAyMDgsIAotICAgIDE0MCwgMjAzLCAyMjUsIDIzNywgMTMwLCAyMjEsIDI4LCAyNSwgMjQ4LCAxNCwgMjM2LCAxMzQsIDIxOCwgMTA2LCAyMjQsIAotICAgIDE1MSwgMjA5LCAxNjAsIDI0NSwgMTEyLCAyNDgsIDI1MSwgMjEyLCA4OCwgMjE4LCA2MSwgMjExLCA5NSwgMywgMTAxLCAKLSAgICAyNDMsIDg1LCAyMzAsIDE2OSwgMTYsIDM1LCAyNDgsIDE0MSwgMjA4LCA4MCwgMjQxLCAxMDAsIDYyLCA1MSwgMjQ3LCAxNDUsIAotICAgIDYxLCA1MSwgMjQ3LCAxNDUsIDIyOCwgOCwgMjE2LCAxMzgsIDI0NiwgNjEsIDIyOCwgOCwgMjQ4LCAyNiwgMjQ2LCA2MSwgCi0gICAgMjI4LCA4LCAyMTksIDI0MywgMjQzLCAyMjEsIDIyOCwgOCwgMjQ4LCAyNiwgMjQzLCAyMjEsIDUsIDIxOSwgMjQzLCAyNDMsIAotICAgIDIyMSwgNSwgMjQ4LCAyNiwgMjQzLCAyMjEsIDIwNiwgMjIzLCAyMTYsIDEzOCwgMjA4LCA4NSwgMjQyLCA2OSwgMjE2LCAKLSAgICAxMzgsIDIwOCwgODUsIDIwNiwgMjIzLCA1LCAyMTYsIDEzOCwgMjA4LCA4NSwgMjQyLCA2OSwgNSwgMjE2LCAxMzgsIDIwOCwgCi0gICAgODUsIDIyNiwgMjUxLCA1MCwgMjEzLCA3NywgNjEsIDI0NiwgNjEsIDIwNiwgMjIxLCA1MCwgMjEzLCA3NywgNjEsIDI0NiwgCi0gICAgNjEsIDQzLCAyNDUsIDEzMSwgMjE4LCA0OCwgMjQ1LCAxMzEsIDIxOCwgNDksIDMsIDIzNywgMTM2LCA1NiwgMjQ1LCAxMzEsIAotICAgIDIxOCwgNDgsIDIyMSwgMTYyLCA0OSwgMjEzLCAxNDYsIDMsIDEyNiwgMjQzLCA4MywgMjIxLCAxNjIsIDUwLCAyMTMsIDE0NiwgCi0gICAgMywgMTI2LCAyNDMsIDgzLCAxNiwgMzUsIDIyNSwgODcsIDI0NiwgMTg0LCA2MSwgOCwgMjQ1LCAxMzAsIDc5LCA4LCAyNDUsIAotICAgIDEzMCwgMjQ2LCAyMjIsIDI0NSwgMTMwLCAyMjAsIDQwLCA5NywgMjQyLCA3MiwgNzYsIDIxOSwgMzIsIDIzMCwgMzksIDIyNCwgCi0gICAgMjIsIDIxMCwgOTYsIDIyNCwgMjM3LCAzLCAyMjIsIDY0LCAyNDcsIDIyMiwgMjQ3LCAyMzgsIDc2LCAyMzUsIDIyMiwgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDExOCwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDEyMCwgMjIwLCA4MywgMjQ2LCAyMCwgCi0gICAgMjQwLCAxMDMsIDEyNiwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIzOSwgMTQ3LCAyMjAsIDgzLCAyNDYsIDIwLCAKLSAgICAyNDAsIDEwMywgMjM5LCAyMzMsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTIsIDg4LCAyMjAsIDgzLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjEzLCAxMTIsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDE0MywgMjIwLCA4MywgCi0gICAgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMiwgNjQsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDksIDE1MywgMjIwLCAKLSAgICA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTEzLCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxNTUsIAotICAgIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjAsIDI3LCAyNDYsIDIwLCAyNDAsIDEwMywgMjA3LCAxMzIsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyMDksIDI2LCAyNDYsIDIwLCAyNDAsIDEwMywgMjM5LCAxNDMsIDI0NiwgMjAsIDI0MCwgMTAzLCAKLSAgICAyMzksIDIzMSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMiwgODQsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMTMsIDExMCwgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDI0MSwgMTQyLCAyNDYsIDIwLCAyNDAsIDEwMywgMjIyLCA2MiwgMjQ2LCAyMCwgMjQwLCAxMDMsIAotICAgIDIwOSwgMTUxLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxMTEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDE1MywgNTAsIAotICAgIDIxMSwgMjE2LCA1MCwgMjExLCAyMTcsIDMsIDExOCwgMjExLCAyNDEsIDIwNCwgNzUsIDUwLCAyMTEsIDIxNywgMywgMTI2LCAKLSAgICAyMTEsIDI0MSwgMjA0LCA3NCwgMjQ3LCAxNzUsIDI0NywgMTc2LCAzLCAyMTEsIDI0MSwgMjA0LCA3NCwgMjE1LCAyNTEsIAotICAgIDI0OCwgMTI4LCAyNDgsIDksIDI0NywgNTYsIDIyNSwgMTA5LCAyNDYsIDE5LCA2MiwgMjEyLCA2MywgMjUsIDI0NSwgMTI5LCAKLSAgICAyMjEsIDE5MiwgMjE4LCAxMTIsIDIzNiwgMTI2LCAyMjUsIDEyMywgMjMxLCA1MCwgMjQ3LCAxNTIsIDIxMCwgMjI4LCAyMjcsIAotICAgIDE2NiwgMjEyLCA1MiwgMjE5LCAyNDUsIDIxMSwgMTc4LCAyNDQsIDE1MCwgMjEwLCAyMTAsIDIxMSwgMjA1LCAyMTEsIDIwNiwgCi0gICAgMjA0LCA1OSwgMjMwLCA4MywgNDksIDIzNywgMTI0LCAyMDksIDE2MiwgMjE2LCAxNTIsIDIwOSwgMTYyLCAyMTYsIDE1MywgCi0gICAgMywgMjE5LCAxNTMsIDUwLCAyMzcsIDEyNCwgMjA5LCAxNjIsIDIxNiwgMTUyLCA2MSwgMjA4LCAxMjYsIDIwOSwgMTYxLCAKLSAgICA2MiwgMjA4LCAxMjYsIDIwOSwgMTYxLCAyMDksIDE2MiwgMjIwLCAzMiwgMjA4LCAxNDUsIDc2LCAyMjQsIDc2LCAyNDYsIAotICAgIDQwLCAyMjQsIDgwLCAyMTgsIDE3NiwgMjQ5LCAyNiwgNzYsIDI0MSwgNTcsIDIxMSwgMTAwLCAyNDEsIDU3LCAyNDEsIDU4LCAKLSAgICAzLCAyMjcsIDEzMSwgMjM5LCAxODksIDI0MSwgNTcsIDIxOSwgMTAsIDExNSwgMjExLCAxMDAsIDI0MSwgNTcsIDIyNywgCi0gICAgMTA0LCAyMTksIDkzLCA2MiwgMjE3LCAxNjEsIDIyNiwgMjUxLCA0OSwgMjE5LCA4LCAyMjYsIDI1MSwgNDksIDI0OCwgMjQ2LCAKLSAgICAyMTksIDksIDIyNiwgMjUxLCA0OSwgMjM5LCAxNDksIDIxOSwgOSwgMjI2LCAyNTEsIDQ5LCAyMTksIDE0NywgMjI2LCAyNTEsIAotICAgIDQ5LCAyNDUsIDE0NCwgNDksIDIwMywgMjIwLCAyMzcsIDEyMywgMjA3LCAxNzQsIDIyMCwgNTIsIDIzNywgMTI0LCA1NCwgCi0gICAgMjE2LCAxODgsIDIzNywgMTI0LCAzLCAyMzksIDI1NCwgMjExLCAxOTUsIDIxNiwgNzMsIDIxNiwgMTg4LCAyMzcsIDEyNCwgCi0gICAgMywgMjM5LCAyNTQsIDIxMSwgMTk1LCAyMTYsIDczLCAyMDksIDIwLCAxMTIsIDU0LCAyMTYsIDczLCAyMDksIDIwLCAxMjEsIAotICAgIDU0LCAyMTYsIDczLCAyMDUsIDIyOCwgMjM3LCAxMjMsIDIxNiwgNzMsIDIzNywgMTI0LCAzLCAxMDEsIDI0MCwgMywgMjQwLCAKLSAgICAyMDEsIDIxNiwgMTg4LCAyMzcsIDEyNCwgMywgMjE5LCA3MSwgMjQ4LCAxMDQsIDEwMSwgMjUsIDIxNSwgMjUzLCAyMzksIAotICAgIDI1MywgNjEsIDEyMSwgMjE4LCA1OSwgNDksIDIzNywgMTI0LCAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDQ5LCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDQ5LCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCA2MiwgNDksIDIxOCwgNTksIDI0OSwgMjMsIAotICAgIDIzMSwgMzUsIDYyLCA1MCwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCAxMTIsIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgMTIxLCAyMTgsIDU5LCAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDExMiwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYyLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDYyLCAxMTIsIDIxOCwgNTksIDI0OSwgMjMsIAotICAgIDIzMSwgMzUsIDYyLCAxMjEsIDIxOCwgNTksIDI0OSwgMjMsIDIzMSwgMzUsIDI0NCwgMTEsIDI0NSwgMjIwLCAyMjksIDE1MCwgCi0gICAgMjUsIDIyNCwgOSwgMTI2LCAyMjIsIDIxOCwgMjQ1LCAyMTksIDIxNywgMjMxLCAyMTgsIDY3LCAyNDcsIDc0LCA2MiwgMjM3LCAKLSAgICA5MSwgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgMTU0LCA2MSwgMjM3LCA5MSwgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgCi0gICAgMTU0LCAyMTIsIDcsIDIxMywgMzMsIDIzOSwgMjAyLCAyNDMsIDE1NCwgMjA5LCAyMjEsIDI0NywgMjIsIDIwNCwgNiwgMjI5LCAKLSAgICAxNDksIDExOCwgMjQ3LCAxNDYsIDIyNCwgOSwgMTIwLCAyNDcsIDE0NiwgMjI0LCA5LCAxMjYsIDI0NywgMTQ2LCAyMjQsIDksIAotICAgIDIwOCwgMTE3LCAzOCwgMjE4LCAyMjgsIDI0NSwgMjIwLCAyMzcsIDkxLCAyNDMsIDE1NCwgMjE0LCAxODQsIDIxNywgMjMyLCAKLSAgICAyMzUsIDE1NiwgMjQwLCA2NSwgMjM1LCAxNTYsIDIxOSwgMjQ4LCAyNDMsIDE2MCwgMjM1LCAxNTYsIDI0MywgMTA3LCAzLCAKLSAgICAyMDksIDExMiwgMjQzLCAxMDcsIDMsIDIwOSwgMTEzLCAyNSwgMjE4LCAxNjEsIDI0MywgMTA3LCAzLCAyMTgsIDE2MSwgCi0gICAgMjM5LCAxMzUsIDMsIDIxOCwgMTYxLCAyMzksIDEzNSwgMywgMjA4LCAyMjUsIDIzOSwgMTM1LCAzLCAyNTAsIDIzMiwgMjAzLCAKLSAgICAxOTYsIDYyLCAyMzksIDE4MiwgMjM5LCAxODIsIDE3MSwgMjM5LCAxODIsIDI0NywgMzgsIDEyMiwgMjQzLCAxNDAsIDI0NywgCi0gICAgMzgsIDI0MCwgMTEsIDI0NywgMjMzLCAyNDAsIDExLCAyNDcsIDg3LCAyNDEsIDk0LCAyMjEsIDE2MCwgMjQxLCA5NCwgMjIxLCAKLSAgICAxNjEsIDIxOSwgMTUzLCAyNDEsIDk0LCAyMjEsIDE2MSwgMjE5LCAxNTksIDIyMSwgMTYwLCAyMjEsIDE2MSwgMjE5LCAxNTMsIAotICAgIDIyMSwgMTYxLCAyMTksIDE1OSwgMjQxLCA5NCwgMjQzLCAxMDYsIDI0MSwgOTQsIDIxOSwgMTUzLCAyNDEsIDk0LCAyMTksIAotICAgIDE1MSwgMjQzLCAxMDYsIDIxOSwgMTUzLCAyMTksIDE1MSwgMjA0LCA4NSwgMjExLCAyMDIsIDIyMSwgMTYxLCAyMTksIDE1OSwgCi0gICAgMjExLCAyMDIsIDI0NywgNzMsIDIxOSwgMTU5LCAyNDQsIDExLCAyMDQsIDE1LCAyMjQsIDEwNSwgMjI1LCA2NCwgMjE5LCAKLSAgICAyMDEsIDI0NiwgMTgsIDUwLCAyNSwgNDksIDIxMywgMTQ2LCAyNTAsIDkxLCAyNDcsIDU4LCAyMDMsIDE5NiwgMjMxLCA0MSwgCi0gICAgMjM5LCAxNzYsIDIxMiwgNzIsIDk3LCAyNDQsIDY0LCAyMzksIDE3NiwgMjEyLCA3MiwgOTcsIDI0NSwgMjIxLCAzOCwgMjI5LCAKLSAgICAxNTEsIDIxNSwgMjE0LCAyMjIsIDIxMCwgMjE5LCAxNTQsIDMsIDQzLCAyMDksIDExMiwgMjExLCA2NSwgMjQ2LCAxNzcsIAotICAgIDI0NCwgMTk2LCAyMjksIDMzLCAyMjcsIDk4LCAyMTEsIDIxNSwgMjM3LCA2NSwgMjMxLCA1MCwgMjEyLCAxMzYsIDEyNiwgCi0gICAgMjE2LCAxNjMsIDU1LCAxMjYsIDIxNiwgMTYzLCA1NiwgMTI2LCAyMTYsIDE2MywgMjI3LCAyMjIsIDEyNiwgMjE2LCAxNjMsIAotICAgIDIxNiwgMTYsIDQ5LCAyMTEsIDIxMiwgMjQ3LCAxOTIsIDUwLCAyMTEsIDIxMiwgMjQ3LCAxOTIsIDEyMCwgMjExLCAyMTIsIAotICAgIDI0NywgMTkxLCAxMjYsIDIxMSwgMjEyLCAyNDcsIDE5MSwgNDksIDIwOSwgMzgsIDI0NywgMTkyLCA1MCwgMjA5LCAzOCwgCi0gICAgMjQ3LCAxOTIsIDQ5LCAyNTAsIDIyMCwgMjQ3LCAxOTIsIDUwLCAyNTAsIDIyMCwgMjQ3LCAxOTIsIDIyNCwgMzQsIDI0NywgCi0gICAgMTkyLCAyMjcsIDEzMiwgMjI0LCAzNCwgMjQ3LCAxOTIsIDIyNywgMTMyLCAyMjQsIDMzLCAyNDgsIDI0OCwgOTgsIDMsIAotICAgIDI0OCwgMjQ3LCAyNDgsIDI0OCwgMTMyLCAyMDMsIDE5NiwgMjQ4LCAyNDgsIDk4LCAzLCAxMzIsIDIwMywgMTk2LCAyNDgsIAotICAgIDI0OCwgMjYsIDEzMiwgMjAzLCAxOTYsIDI0OCwgMjQ4LCA5OCwgMywgMjYsIDEzMiwgMjAzLCAxOTYsIDE1NywgMjQ2LCAKLSAgICAxNjksIDgyLCAyNDgsIDI0OCwgOTgsIDMsIDI2LCAyNDYsIDE2OCwgMjAzLCAyMzMsIDIyNSwgMTA2LCAyMjQsIDE0LCAyMzksIAotICAgIDEwMywgMjA4LCAxNjcsIDIwOCwgMTIyLCAyMTEsIDg2LCA3NiwgMjI3LCAxNDYsIDIxMiwgMTM3LCA3NiwgMjMwLCAxNzAsIAotICAgIDIyMywgMjUxLCAyMzcsIDI0MSwgMjQwLCAxMDIsIDIzNywgMjQxLCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIAotICAgIDI0MCwgMTAzLCAzLCAyMDksIDE3OSwgNzYsIDIzMCwgODUsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgCi0gICAgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA4LCAyNSwgMjEyLCAzMCwgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgCi0gICAgMTAzLCAzLCAxNzEsIDIyNCwgOCwgMjUsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgCi0gICAgMjI0LCA4LCAyNSwgMjA4LCAyNDMsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMjM3LCAxMzUsIDIxMiwgMzAsIAotICAgIDI0MCwgMTAzLCAzLCAyMzYsIDUyLCAyMDQsIDgsIDI0MCwgMTAyLCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMjEyLCAzMCwgCi0gICAgMjQwLCAxODQsIDI0MCwgMTAzLCAyMTQsIDIxNCwgMjQ0LCA0NSwgMjM5LCAxNzQsIDIxNiwgMTEzLCAyNDAsIDEwMiwgMjEyLCAKLSAgICAzMCwgMjQwLCAxMDMsIDMsIDIzNywgNTQsIDI0MCwgMTg0LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMjEwLCAyMTAsIDIxMiwgCi0gICAgMjksIDI0MCwgMTAyLCAyMjIsIDIxNiwgMjQwLCAxMDIsIDI0MCwgMjAzLCAyNDAsIDEwMiwgMjA2LCAyNTMsIDI0MCwgMTAyLCAKLSAgICAyNDAsIDEwMywgMywgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyMTksIDEsIDI0MCwgMTAyLCAyNDUsIDIxMiwgMjQwLCAxMDIsIAotICAgIDI0NSwgMjEzLCAyNDAsIDEwMiwgMjI5LCA2NSwgMjQwLCAxMDIsIDI0MCwgMTAzLCAyMDksIDIzLCAzNCwgMjI5LCA2NiwgCi0gICAgMjI5LCA2NSwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAyMjksIDY1LCAyNDAsIDEwMywgMywgMjQ2LCAxNiwgCi0gICAgMjQwLCAxODQsIDI0MCwgMTAzLCAzLCAyMTEsIDE2LCAyMDgsIDE1MCwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUxLCAKLSAgICAyNSwgMjA0LCA4LCAyNDAsIDE5MSwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUxLCAyNSwgMjA4LCAyNDMsIDI0MCwgCi0gICAgMTg0LCAyNDMsIDE2MSwgMjQwLCAxMDIsIDIwMywgMjMyLCAyNDAsIDEwMiwgMjUwLCAyMTQsIDI0MCwgMTAyLCAyMTgsIDE5LCAKLSAgICAyNDAsIDEwMiwgMjQ1LCAxMTQsIDI0MCwgMTAyLCAyMTgsIDIzMiwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAyMjcsIDE3LCAKLSAgICA3NiwgMjA4LCA2MiwgMjQzLCAxNjEsIDI0NywgMTQ4LCAyMTYsIDExMywgMjQwLCAxMDIsIDIzOSwgMTE0LCAyNDAsIDEwMywgCi0gICAgMywgMTcxLCAyMjQsIDcsIDI1MCwgMjEyLCAyNDAsIDEwMiwgMjQwLCA1OCwgMjQwLCAxMDIsIDIwNCwgNjAsIDI0MCwgMTAyLCAKLSAgICAyMTIsIDUzLCAyNDAsIDEwMiwgMjA4LCAyMDUsIDI0MCwgMTAyLCAyMzcsIDI0MiwgMjQwLCAxMDIsIDIyNywgNCwgMjQ1LCAKLSAgICAxMTQsIDI0MCwgMTAyLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIDIzNiwgMiwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAKLSAgICAxNzEsIDIyNCwgOCwgMjUsIDI0NSwgMjQ2LCAyMTAsIDE2NiwgMjQwLCAxMDMsIDIxNCwgMTg2LCAyMzEsIDUwLCAyNDAsIAotICAgIDU5LCAyNTAsIDU2LCAyNDAsIDEwMiwgMjM5LCAxOTQsIDI0MCwgMTAyLCAyMTIsIDU0LCAyNDAsIDEwMiwgMjQzLCAxMzMsIAotICAgIDI0MCwgMTAyLCAyNDAsIDEwMywgMjA0LCAzLCAyMjQsIDcsIDI0MCwgMTAzLCAzLCAyMjUsIDEyLCAyMjUsIDc2LCAyMzcsIAotICAgIDI0MSwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIxMiwgMzAsIDI0MCwgMTg0LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjA5LCAKLSAgICAxNzksIDc2LCAyMzAsIDg1LCAyMTIsIDMwLCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDcsIDIxMiwgMzAsIAotICAgIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMzcsIDU0LCAyNDAsIDE4NCwgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIwMywgMjE4LCAKLSAgICAyMTIsIDMxLCAyMjksIDY1LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjQ2LCAxNiwgMjQwLCAxODQsIDIxOCwgMTksIDI0NywgCi0gICAgMTgsIDI0MCwgMTAyLCAyNDUsIDExNCwgMjQ3LCAxOCwgMjQwLCAxMDIsIDIwNCwgNjAsIDI0NywgMTgsIDI0MCwgMTAyLCAKLSAgICAyMTIsIDQ3LCAyMzksIDExNCwgMjQwLCAxMDIsIDIxMiwgNDcsIDIxMiwgMzAsIDI0MCwgMTAyLCAyMDYsIDIxOCwgMjQwLCAKLSAgICAxMDIsIDI0MCwgMTAzLCAzLCAyMTUsIDIxMiwgMjQwLCAxODQsIDI0MCwgMTAzLCAzLCAyMjEsIDE5MiwgMjM4LCAyNywgCi0gICAgMjM4LCAxNjAsIDI0MCwgMTAzLCAzLCAyMjAsIDUyLCAyMzgsIDE2MCwgMjE4LCAyMzAsIDI0NywgMjM5LCAyNDQsIDU5LCAKLSAgICAyMTQsIDE2NCwgMjI0LCA0OCwgMjM3LCA1NywgMjI0LCA0OCwgMjExLCAyMTgsIDIyNCwgNDgsIDIzNywgOTMsIDIxOCwgCi0gICAgMjMwLCAyMTYsIDE4NywgMTE4LCAyMzcsIDEyMywgMjE4LCAyMzAsIDIxNiwgMTg3LCAyNDcsIDI1MSwgMjM3LCAxMDAsIAotICAgIDIzMSwgNTAsIDI0NiwgMjI0LCAyMTgsIDIzMCwgMjM5LCAxMTMsIDIxOCwgMjMwLCAzLCAyMTgsIDE5LCAyNDAsIDEwMiwgCi0gICAgMjE4LCAyMzAsIDMsIDIzOSwgMTgzLCAyMzcsIDk5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAyMTEsIAotICAgIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAyMTEsIAotICAgIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIAotICAgIDIyOSwgMjA3LCAxNzQsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMjA3LCAxNzQsIDE1MywgMjQxLCAKLSAgICAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMjcsIDIyOSwgCi0gICAgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAKLSAgICAyMDUsIDIxMiwgMjI3LCAyMjksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMjExLCAyMzgsIAotICAgIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDc5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgCi0gICAgMjEyLCAyMjcsIDIyOSwgNzksIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDc5LCAKLSAgICAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyMDUsIDIxMiwgMjI3LCAyMjksIDc5LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgCi0gICAgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjExLCAyMzgsIDIwNCwgCi0gICAgNDYsIDIxOCwgNTksIDI0NywgMTg5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjExLCAyMzgsIDI0MSwgCi0gICAgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAyMTEsIAotICAgIDIzOCwgMjA0LCA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDc5LCAxNTMsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgCi0gICAgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjQ3LCAxODksIDIzNiwgMTI1LCAyMTcsIDQwLCA1MSwgMjE5LCAKLSAgICAyMzMsIDIzNiwgMTI1LCAyMTcsIDQwLCA1MSwgMjE5LCAyMzQsIDIzMSwgNTAsIDYyLCAyMTEsIDE3NywgMjEyLCAyLCAyMTcsIAotICAgIDQwLCA1MSwgMjE5LCAyMzMsIDIxMiwgMiwgMjE3LCA0MCwgNTEsIDIxOSwgMjM0LCAyMzEsIDUwLCA2MiwgMjExLCAxNzcsIAotICAgIDk2LCAyMTUsIDIxOCwgMTc3LCAyMTUsIDIxOCwgODYsIDIxNSwgMjE4LCAxODMsIDIxNSwgMjE4LCAxMzIsIDMyLCAyNDAsIAotICAgIDI1MSwgMjE5LCAyMzMsIDc5LCAxMzIsIDMyLCAyNDAsIDI1MSwgMjE5LCAyMzMsIDMyLCAxNzEsIDI0MCwgMjUxLCAyMTksIAotICAgIDIzMywgNzksIDMyLCAxNzEsIDI0MCwgMjUxLCAyMTksIDIzMywgNzksIDI1MCwgMjM2LCAyMTksIDIzMywgMjEwLCAxNjksIAotICAgIDI1MCwgMjM2LCAyMTksIDIzMywgNDEsIDc5LCA1MiwgMjA3LCAxNzQsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgCi0gICAgMjMzLCA0MSwgNzksIDUyLCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNDEsIDc5LCAxMjQsIDUyLCAyNDUsIAotICAgIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIzMCwgMjQ4LCAyMTksIDIzMywgNDEsIDIzMCwgMjQ4LCAyMTksIAotICAgIDIzMywgNzksIDQxLCAyMzAsIDI0OCwgMjE5LCAyMzMsIDIwNSwgMjQyLCA3OSwgMjEyLCAwLCAyMDUsIDI0MiwgNzksIDIxNiwgCi0gICAgNzQsIDIxMiwgMCwgMjQ2LCAxNjcsIDI0OCwgMjAsIDIxNiwgNzQsIDI0NiwgMTY3LCAyNDgsIDIwLCAyMTUsIDIxOCwgMjM3LCAKLSAgICAzOCwgMjExLCA4MSwgMjI3LCA0MCwgMjE2LCAxOTMsIDI0NywgMzksIDIzNiwgMjQwLCAyMDgsIDExMCwgMjM2LCAyNDAsIAotICAgIDIwOCwgMTExLCAzLCAyNDcsIDE3OCwgMjIxLCAxNjcsIDIwOCwgMTEwLCAyMjQsIDIxMywgMTU3LCAyMTYsIDE5NCwgMjExLCAKLSAgICA4NywgMjA4LCAxMDgsIDIwOCwgMTA5LCAyNDcsIDM5LCAyNDcsIDE1MywgMjIwLCAyOSwgMjQ3LCAxNTMsIDIwOCwgNTksIAotICAgIDI0NywgMTU0LCAyMTEsIDYxLCAyMjQsIDEwOSwgMjUwLCAyNDAsIDIzOSwgMjUwLCAyNDEsIDc3LCAyMTgsIDUxLCAyNDcsIAotICAgIDM5LCAyMjAsIDI5LCAyMTgsIDUxLCAyNDcsIDM5LCAyMDksIDE5NywgMjIwLCAyOSwgMjA5LCAxOTcsIDI1MCwgMjIsIDIyMCwgCi0gICAgMjksIDI1MCwgMjIsIDIxNiwgMTQ1LCAyMDYsIDQ3LCAyNDQsIDQxLCAyMDgsIDUwLCAyNTAsIDg2LCAyMjcsIDgsIDIwOCwgCi0gICAgMTE2LCAyMjQsIDQyLCAyMjQsIDEzLCAyMTYsIDE5MiwgMjEwLCAxODIsIDIxNiwgMTkyLCAyMjQsIDEzLCAyNDcsIDg2LCAKLSAgICAyNTEsIDk1LCAyMDgsIDEwNywgMjEyLCAyNTEsIDIxNSwgMTg4LCAyMTEsIDIxMCwgMjM2LCAxMDYsIDIwOCwgMTE0LCAyMjcsIAotICAgIDEzNCwgODAsIDIwOCwgMTE0LCAyMjcsIDEzNCwgMjQ1LCAxOTksIDU0LCAyMTgsIDUxLCAyNDcsIDI0LCAyMTYsIDY3LCAKLSAgICAyMjcsIDEzNCwgMjA4LCA4MiwgMjM5LCAyMjYsIDIyMCwgMzIsIDIxOCwgMzAsIDI0MywgODgsIDIyMSwgMTkyLCAyNDEsIAotICAgIDYzLCA1NCwgMjEyLCAyOCwgOTcsIDIyMSwgMTkyLCAyMTIsIDI4LCA5NywgMjE3LCAxNjAsIDIyNywgODcsIDIzMSwgNTAsIAotICAgIDIzMCwgMTk4LCAyMTgsIDk3LCA5NywgMjQzLCAxMTQsIDIyMSwgMTY2LCAyMjcsIDg3LCA5NywgMjE4LCAyNCwgMjA0LCA4MSwgCi0gICAgOTcsIDIyMSwgMTgyLCAyMDQsIDgxLCA5NywgMjQ4LCA4MiwgMjIxLCAxOTIsIDI0OCwgODEsIDI0OCwgODAsIDIyNCwgMTMsIAotICAgIDI0OCwgODAsIDIxOSwgMjUsIDIyMSwgMTkyLCAyMTksIDI0LCAyNDYsIDEzMiwgMjQ1LCAxMjMsIDIyNCwgMjM2LCA5NywgCi0gICAgMjAzLCAyNDcsIDk3LCAyMTYsIDgzLCAyNDksIDI4LCA5NywgMjA4LCAxNjgsIDIwNCwgODEsIDI0NiwgMTMsIDIxMiwgMjA5LCAKLSAgICAyNDgsIDIwNiwgMjQ4LCAyMDQsIDIxOSwgNTcsIDI0NSwgMTgzLCAyNDUsIDc5LCAyNDksIDcsIDI0NiwgNDEsIDQ5LCAyMjYsIAotICAgIDIyOSwgMjA4LCA4NiwgMywgMjE1LCAxODksIDI0NSwgMTY0LCAyMTcsIDIyMCwgNTQsIDQzLCAyMzEsIDI1LCAyMTEsIDIzOSwgCi0gICAgMjQ3LCAyMzEsIDk3LCAyMzgsIDU5LCA5NywgMjQ1LCAxNTcsIDI1LCAyMjgsIDE4LCAyMTIsIDU0LCAyNTEsIDEzNSwgMjEyLCAKLSAgICAyMzEsIDI0OSwgNiwgMjQ4LCAxMjcsIDI0OCwgMTI4LCAyNDgsIDE1MSwgMjE4LCA5NywgNzYsIDIwMywgMjMxLCAyMzcsIAotICAgIDEzMSwgMjUsIDIwMywgMjI1LCAyMTMsIDgsIDIyMCwgNTYsIDI0MiwgNDYsIDIyNCwgMTcsIDIxNiwgMTkzLCAyMDgsIDExOCwgCi0gICAgMjI0LCAxOSwgMjQ4LCAxOSwgMjA2LCAyMjMsIDIyNCwgMTE5LCAyNTEsIDUyLCAyMDYsIDIyMywgMjUxLCA1MiwgMjA2LCAKLSAgICAyMjMsIDUsIDI1MSwgNTIsIDUsIDI1MSwgNTIsIDIyMSwgMTcxLCAyNTEsIDUyLCAyNTEsIDUzLCAyNDQsIDI1LCAyNTEsIAotICAgIDUzLCAyNTAsIDk3LCAyMTQsIDIyMSwgMjIwLCAyOSwgMjM5LCAyNTAsIDI0MSwgNzcsIDI0MywgMjExLCAyMjcsIDQwLCAKLSAgICAyMTksIDYwLCAyMTIsIDI1MSwgMTM2LCAxNiwgMzUsIDIxNywgMzYsIDEzNiwgMTYsIDM1LCAyNTEsIDU0LCAxMzYsIDE2LCAKLSAgICAzNSwgMjM5LCAyNDksIDEzNiwgMTYsIDM1LCAyNDEsIDE3OSwgMTM2LCAxNiwgMzUsIDIwNCwgODAsIDEzNiwgMTYsIDM1LCAKLSAgICAyNTAsIDE0NiwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMTYsIDEzMiwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMTYsIAotICAgIDEzMSwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMDUsIDE5NSwgMTM2LCAxNiwgMzUsIDI1MCwgMTQ3LCAyMDUsIDE5NCwgCi0gICAgMTM2LCAxNiwgMzUsIDIwNSwgMjA5LCAxMzYsIDE2LCAzNSwgMjA1LCAyMDgsIDEzNiwgMTYsIDM1LCAyMDUsIDIwNywgMTM2LCAKLSAgICAxNiwgMzUsIDIxMCwgMjIxLCAxMzYsIDE2LCAzNSwgMjE4LCAxODQsIDIxMCwgMjIxLCAxMzYsIDE2LCAzNSwgNjIsIDIxMCwgCi0gICAgMjIxLCAxMzYsIDE2LCAzNSwgMjI0LCAyMzUsIDIxMCwgMjUyLCAxMzYsIDE2LCAzNSwgMjI0LCAyMzUsIDIxMCwgMjUxLCAKLSAgICAxMzYsIDE2LCAzNSwgMjI0LCAyMzUsIDIxMCwgMjUwLCAxMzYsIDE2LCAzNSwgMjQ2LCA2NCwgMTM2LCAxNiwgMzUsIDIxNSwgCi0gICAgMSwgMTM2LCAxNiwgMzUsIDIyMiwgNTEsIDEzNiwgMTYsIDM1LCAyMDUsIDE5MywgMTM2LCAxNiwgMzUsIDIwNSwgMTkyLCAKLSAgICAxMzYsIDE2LCAzNSwgMjE1LCAyMTksIDIxNSwgMSwgMTM2LCAxNiwgMzUsIDIxNSwgMjE5LCAyMTUsIDAsIDEzNiwgMTYsIAotICAgIDM1LCAyMzgsIDMxLCAxMzYsIDE2LCAzNSwgMjEyLCAxMzMsIDEzNiwgMTYsIDM1LCAyMzAsIDIyMSwgMjE5LCAyMzksIDEzNiwgCi0gICAgMTYsIDM1LCAyMzAsIDIyMSwgMjE5LCAyMzgsIDEzNiwgMTYsIDM1LCAyNDUsIDEzNCwgNzYsIDIzMCwgMjIwLCAxMzYsIDE2LCAKLSAgICAzNSwgMjE2LCAxMjgsIDc2LCAyMzAsIDIyMCwgMTM2LCAxNiwgMzUsIDI0NSwgMTc0LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIAotICAgIDIzMCwgMjE5LCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIxMCwgMjUzLCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAKLSAgICAyNDUsIDEzNCwgNzYsIDI0NSwgMTczLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMzQsIDc2LCAyNDUsIDE3MiwgMTM2LCAxNiwgMzUsIAotICAgIDI0NSwgMTc0LCAyNTAsIDE4OCwgMTM2LCAxNiwgMzUsIDIxNSwgMiwgNzYsIDI0NSwgMTc0LCAyNTAsIDE4OCwgMTM2LCAxNiwgCi0gICAgMzUsIDIxMCwgMjUzLCA3NiwgMjE1LCAyLCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAyMDYsIDQyLCAxMzYsIDE2LCAKLSAgICAzNSwgMjA4LCAyMTgsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjI3LCAyMzMsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgCi0gICAgMjUwLCAxODcsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIAotICAgIDIxNSwgMiwgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyMTUsIDIsIDc2LCAyNTAsIDE4NiwgCi0gICAgMTM2LCAxNiwgMzUsIDIwNSwgMjEwLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAyMTYsIDEyOCwgNzYsIDI1MCwgMTg2LCAKLSAgICAxMzYsIDE2LCAzNSwgMjE2LCAxMjgsIDc2LCAyNTAsIDE4NSwgMTM2LCAxNiwgMzUsIDIxNiwgMTI3LCAxMzYsIDE2LCAzNSwgCi0gICAgMjE2LCAxMjYsIDEzNiwgMTYsIDM1LCAyMTYsIDEyNSwgMTM2LCAxNiwgMzUsIDIxNiwgMTI0LCAxMzYsIDE2LCAzNSwgMjUxLCAKLSAgICAxNywgMTM2LCAxNiwgMzUsIDI1MSwgMTYsIDEzNiwgMTYsIDM1LCAyMjUsIDk3LCAxMzYsIDE2LCAzNSwgMjE1LCA3LCAxMzYsIAotICAgIDE2LCAzNSwgMjUwLCA5MCwgMTM2LCAxNiwgMzUsIDIxNiwgMTU1LCAxMzYsIDE2LCAzNSwgMjE2LCAxNTQsIDEzNiwgMTYsIAotICAgIDM1LCAyNTAsIDI1LCAxMzYsIDE2LCAzNSwgMjQ4LCA1MiwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMDksIDIxNiwgMTM2LCAKLSAgICAxNiwgMzUsIDIwOSwgMjE1LCAxMzYsIDE2LCAzNSwgMjE3LCA0MiwgMjI3LCAxMjMsIDEzNiwgMTYsIDM1LCAyNDgsIDAsIAotICAgIDEzNiwgMTYsIDM1LCAyNDcsIDI1NSwgMTM2LCAxNiwgMzUsIDI0NywgMjU0LCAxMzYsIDE2LCAzNSwgMjUwLCAyNDksIDEzNiwgCi0gICAgMTYsIDM1LCAyMjAsIDU1LCAxMzYsIDE2LCAzNSwgMjExLCAxOTgsIDEzNiwgMTYsIDM1LCAyMDgsIDIxNiwgMTM2LCAxNiwgCi0gICAgMzUsIDIzNywgMjEwLCAxMzYsIDE2LCAzNSwgMjA0LCA2OCwgMTM2LCAxNiwgMzUsIDIxOCwgMTgsIDEzNiwgMTYsIDM1LCAKLSAgICAyNDcsIDcwLCAxMzYsIDE2LCAzNSwgMjA3LCAxNjYsIDEzNiwgMTYsIDM1LCAyNDcsIDQxLCAyMjQsIDIzLCAxMzYsIDE2LCAKLSAgICAzNSwgMjE0LCAxOTksIDc2LCAyMzAsIDg3LCAxMzYsIDE2LCAzNSwgMjQ3LCA4MywgMTM2LCAxNiwgMzUsIDIwOCwgNzksIAotICAgIDEzNiwgMTYsIDM1LCAyMTEsIDkyLCAyMDgsIDc5LCAxMzYsIDE2LCAzNSwgMjI3LCAzOSwgMTM2LCAxNiwgMzUsIDIxMiwgCi0gICAgMTEsIDEzNiwgMTYsIDM1LCAyMDYsIDIwMiwgMTM2LCAxNiwgMzUsIDIzNiwgNTAsIDI0MiwgMjcsIDEzNiwgMTYsIDM1LCAKLSAgICAyNTAsIDcwLCAxMzYsIDE2LCAzNSwgMjE4LCAyNiwgMjUwLCA3MCwgMTM2LCAxNiwgMzUsIDI0NywgMjEwLCAxMzYsIDE2LCAKLSAgICAzNSwgMjE4LCAxNywgMjQ3LCAyMTAsIDEzNiwgMTYsIDM1LCAyNTAsIDI0NiwgMTM2LCAxNiwgMzUsIDIxMSwgNDgsIDIxMCwgCi0gICAgMjAyLCAyMTEsIDQ3LCAxMzYsIDE2LCAzNSwgMjExLCA0OCwgMjEwLCAyMDIsIDIxMSwgNDYsIDEzNiwgMTYsIDM1LCAyMTAsIAotICAgIDI0OSwgMTM2LCAxNiwgMzUsIDIxNywgMjQ3LCAxMzYsIDE2LCAzNSwgMjQzLCAxNTAsIDEzNiwgMTYsIDM1LCAyNDMsIDE1MiwgCi0gICAgMTM2LCAxNiwgMzUsIDI0MywgMTUxLCAxMzYsIDE2LCAzNSwgMjE3LCAxNjksIDEzNiwgMTYsIDM1LCAyMTcsIDE1OCwgMTM2LCAKLSAgICAxNiwgMzUsIDI0NSwgMTIxLCAxMzYsIDE2LCAzNSwgMjQ1LCAxMjAsIDEzNiwgMTYsIDM1LCAyNDUsIDExOSwgMTM2LCAxNiwgCi0gICAgMzUsIDI0NSwgMTE4LCAxMzYsIDE2LCAzNSwgMjQ1LCAxMTcsIDEzNiwgMTYsIDM1LCAyNTEsIDI5LCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ4LCAyMDcsIDc2LCAyMjUsIDgxLCAxMzYsIDE2LCAzNSwgMjQ4LCAyMDcsIDc2LCAyMDYsIDc0LCAxMzYsIDE2LCAzNSwgCi0gICAgMjE2LCA4MSwgMTM2LCAxNiwgMzUsIDIzNiwgNDIsIDEzNiwgMTYsIDM1LCAyMjIsIDc5LCAxMzYsIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzIsIDEzNiwgMTYsIDM1LCAyMjQsIDM3LCAxMzYsIDE2LCAzNSwgMTYyLCAyNDIsIDU5LCAxMzYsIDE2LCAzNSwgMTYyLCAKLSAgICAyMTksIDIxNCwgNjIsIDIyNywgMjE3LCAyMzAsIDIwNCwgNTAsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgMjMwLCAyMDQsIAotICAgIDUwLCAyMDgsIDg1LCA2MiwgMjE2LCAxMSwgMjMwLCAyMDQsIDUwLCAyMDgsIDg1LCA2MiwgMjQyLCA2OSwgMjMwLCAyMDQsIAotICAgIDUwLCAyMDgsIDg1LCA2MiwgMjEyLCA0NywgNSwgMjQ2LCA2MSwgMjI1LCAxMCwgMjYsIDYxLCAyNDYsIDYxLCAyNiwgNjEsIAotICAgIDI0NiwgNjEsIDc5LCA2MSwgMjQ2LCA2MSwgMjA1LCAyNDIsIDc5LCA2MSwgMjQ2LCA2MSwgMjQwLCAxOTUsIDc5LCA2MSwgCi0gICAgMjQ2LCA2MSwgNjEsIDI0NiwgNjIsIDI0NSwgMTk1LCA2MiwgNSwgMjQ2LCA2MSwgMjE1LCAxOTEsIDIwOSwgMjE3LCA2MiwgCi0gICAgMjA4LCAyMTMsIDIxMSwgMTc3LCA2MiwgMjEyLCA0NywgNSwgMjExLCAxNzcsIDE1NywgNjEsIDIxMSwgMTc3LCAyMjUsIDEwLCAKLSAgICA2MSwgMjExLCAxNzcsIDI2LCA2MSwgMjExLCAxNzcsIDc5LCA2MSwgMjExLCAxNzcsIDIwNSwgMjQyLCA3OSwgNjEsIDIxMSwgCi0gICAgMTc3LCAyNDAsIDE5NSwgNzksIDYxLCAyMTEsIDE3NywgNjEsIDUxLCAyNDUsIDE5NSwgNjIsIDIwNSwgMjQyLCA1LCAyMTEsIAotICAgIDE3NywgNjEsIDUxLCAyNDUsIDE5NSwgNjIsIDIyNSwgMTAsIDIxMSwgMTc3LCA1MSwgMjA5LCAyMTcsIDYyLCAyMDgsIDIxMywgCi0gICAgMjQzLCAyMjEsIDYyLCAyMDUsIDI0MiwgNSwgMjQzLCAyMjEsIDYyLCAyMjUsIDEwLCA1LCAyNDMsIDIyMSwgNjEsIDI0MywgCi0gICAgMjIyLCAyNDUsIDE5NSwgNjIsIDIwNSwgMjQyLCA1LCAyNDMsIDIyMSwgNjEsIDI0MywgMjIyLCAyNDUsIDE5NSwgNjIsIAotICAgIDIyNSwgMTAsIDI0MywgMjIxLCAyNDMsIDIyMiwgMjA5LCAyMTcsIDYyLCAyMDgsIDIxMywgMjI2LCAyNDYsIDYyLCAyMDUsIAotICAgIDI0MiwgNSwgMjI2LCAyNDYsIDYyLCAyMjUsIDEwLCA1LCAyMjYsIDI0NiwgNjEsIDIyNiwgMjQ3LCAyNDUsIDE5NSwgNjIsIAotICAgIDUsIDIyNiwgMjQ2LCAyMDksIDYzLCAzMCwgMjQ1LCAxMzAsIDE1NywgMzAsIDI0NSwgMTMwLCAyMjUsIDEwLCAzMCwgMjQ1LCAKLSAgICAxMzAsIDI2LCAzMCwgMjQ1LCAxMzAsIDIwNSwgMjQyLCAyNiwgMzAsIDI0NSwgMTMwLCAyMDUsIDI0MiwgNzksIDMwLCAyNDUsIAotICAgIDEzMCwgMjQwLCAxOTUsIDc5LCAzMCwgMjQ1LCAxMzAsIDIwOSwgNjMsIDIxNCwgMjU0LCAxNTcsIDIxNCwgMjU0LCAyMjUsIAotICAgIDEwLCAyMTQsIDI1NCwgMjYsIDIxNCwgMjU0LCA3OSwgMjE0LCAyNTQsIDIwNSwgMjQyLCA3OSwgMjE0LCAyNTQsIDI0MCwgCi0gICAgMTk1LCA3OSwgMjE0LCAyNTQsIDE1NywgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIDEwLCAyMzksIDIzMywgCi0gICAgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAyMzksIDIzMywgMjExLCAKLSAgICAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDAsIDE5NSwgNzksIAotICAgIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMTU3LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAxMCwgCi0gICAgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIDIxMiwgODgsIAotICAgIDIxMSwgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDAsIDE5NSwgCi0gICAgNzksIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAxNTcsIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgMjI1LCAKLSAgICAxMCwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNiwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgCi0gICAgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMDUsIDI0MiwgNzksIDI0MSwgMTQzLCAyMTEsIDE5MSwgMjUwLCA1OSwgCi0gICAgMTU3LCAxMjYsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAxMjYsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAxMjYsIAotICAgIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAxMjYsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIzOSwgCi0gICAgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjM5LCAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMzksIAotICAgIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgCi0gICAgMjE2LCA3NCwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjM5LCAyMzMsIDIxOCwgCi0gICAgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjM5LCAyMzMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMTIsIDg4LCAKLSAgICAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDIxMiwgODgsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMTIsIDg4LCAyMTgsIAotICAgIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMjI1LCAxMCwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjQxLCAKLSAgICAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMDUsIDI0MiwgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgCi0gICAgNzksIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIAotICAgIDIxMSwgOTQsIDc5LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMDcsIDE1NSwgMjE4LCA2MSwgMjE4LCAKLSAgICAxMTgsIDIxMSwgOTQsIDk2LCA1MywgMywgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgNSwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgODYsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAKLSAgICA5NiwgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDIyNSwgMTAsIDIwOCwgODYsIDI1MCwgCi0gICAgOTQsIDg2LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgOTYsIDUzLCAzLCAyMjgsIDgsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDIyOCwgOCwgMjA4LCAKLSAgICA4NiwgMjUwLCA5NCwgODYsIDUzLCAzLCAyMjgsIDgsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDIyOCwgOCwgCi0gICAgMjA4LCA4NiwgMjUwLCA5NCwgOTYsIDUzLCAzLCA1LCAyNDEsIDMxLCAyNTAsIDk0LCAxNzcsIDUzLCAzLCA1LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA4NiwgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIAotICAgIDk2LCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgODYsIDUzLCAzLCAKLSAgICAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgOTYsIDUzLCAzLCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA3OSwgMTc3LCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDg2LCA1MywgMywgMjQxLCAzMSwgMjUwLCAKLSAgICA5NCwgNzksIDE4MywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA5NiwgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgCi0gICAgMjUwLCA5NCwgNzksIDE3NywgNTMsIDMsIDIyOCwgOCwgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDg2LCA1MywgMywgMjI4LCA4LCAKLSAgICAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgMTgzLCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAyNTAsIDk0LCA5NiwgMjA4LCA4NCwgCi0gICAgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIyMywgNzMsIDIxMywgNzUsIDg2LCAyMDgsIAotICAgIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgOTYsIAotICAgIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMjUsIDEwLCAyMTMsIDc1LCAKLSAgICA4NiwgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgCi0gICAgNzUsIDk2LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAKLSAgICA4NiwgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgOTYsIAotICAgIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDg2LCAyMDgsIAotICAgIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCA5NiwgMjA4LCA4NCwgCi0gICAgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAKLSAgICA4NiwgMjA4LCA4NCwgNTMsIDMsIDIwNSwgMjQyLCA3OSwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIAotICAgIDc5LCAyMTMsIDc1LCA5NiwgMjQwLCAxLCA0NywgMTc3LCAyNDAsIDEsIDQ3LCA4NiwgMjQwLCAxLCA0NywgMTgzLCAyNDAsIAotICAgIDEsIDQ3LCA5NiwgMTAzLCA0NywgMTc3LCAxMDMsIDQ3LCA4NiwgMTAzLCA0NywgMTgzLCAxMDMsIDQ3LCA5NiwgMjQ1LCAKLSAgICAyMjIsIDQ3LCAxNzcsIDI0NSwgMjIyLCA0NywgODYsIDI0NSwgMjIyLCA0NywgMTgzLCAyNDUsIDIyMiwgNDcsIDk2LCA3OSwgCi0gICAgMjQ1LCAyMjIsIDQ3LCAxNzcsIDc5LCAyNDUsIDIyMiwgNDcsIDg2LCA3OSwgMjQ1LCAyMjIsIDQ3LCAxODMsIDc5LCAyNDUsIAotICAgIDIyMiwgNDcsIDk2LCA3OSwgNDcsIDE3NywgNzksIDQ3LCA4NiwgNzksIDQ3LCAxODMsIDc5LCA0NywgOTYsIDQxLCA0NywgCi0gICAgMTc3LCA0MSwgNDcsIDg2LCA0MSwgNDcsIDE4MywgNDEsIDQ3LCAxNTMsIDIwNCwgNDYsIDQxLCA0NywgMTUzLCAyNDEsIAotICAgIDE3NiwgNDEsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQxLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDQxLCA0NywgNDksIAotICAgIDUwLCA0MSwgNDcsIDExMiwgMTIxLCA0MSwgNDcsIDIwNCwgMjYsIDk2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgCi0gICAgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMTU3LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDE1NywgMTUwLCA0NywgMjA0LCAKLSAgICAyNiwgMTUzLCAyMDQsIDQ2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIDE1NywgMTUwLCA0NywgCi0gICAgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCAKLSAgICAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMTUzLCAyNDEsIDE3NiwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAyMTEsIDIzOCwgMjA0LCA0NiwgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgCi0gICAgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgODYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMjI1LCAxMCwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCAKLSAgICAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDE3NywgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCA3OSwgMTUwLCA0NywgCi0gICAgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgNzksIDE1MCwgNDcsIAotICAgIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyMDQsIDQ2LCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIAotICAgIDE3NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgOTYsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDE3NywgMjA4LCA4NiwgMjUwLCA5NCwgODYsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgMjA4LCA4NiwgMjUwLCAKLSAgICA5NCwgOTYsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDYxLCA1MywgMjA0LCA1LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA4NiwgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNjEsIDUzLCAyMDQsIDUsIDIwOCwgCi0gICAgODYsIDI1MCwgOTQsIDk2LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCAxNzcsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAKLSAgICAyNDgsIDg2LCA1MywgMywgMjIxLCAxNjIsIDIwOSwgMjQ4LCAxODMsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDc5LCAKLSAgICA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTA1LCA3OSwgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEyMCwgMjA5LCA1NywgNzksIAotICAgIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMTgsIDIzNywgMTM3LCA3OSwgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDExOCwgMjA5LCAKLSAgICA2MCwgOTYsIDI0NywgMjQ1LCA2MSwgNDcsIDg2LCAyNDcsIDI0OCwgMjEzLCA3OCwgNjEsIDQ3LCA5NiwgMjA4LCAxNDUsIAotICAgIDIxMywgNzgsIDYxLCA0NywgODYsIDIwOCwgMTQ1LCAyMTMsIDc4LCA2MSwgNDcsIDk2LCAyMjcsIDIxNiwgNjEsIDQ3LCA4NiwgCi0gICAgMjE2LCAxMCwgNjEsIDQ3LCA5NiwgMjE2LCAxMCwgNjEsIDQ3LCA4NiwgMjI3LCAyMTYsIDYxLCA0NywgOTYsIDI0OSwgMjQsIAotICAgIDIxMywgNzcsIDYxLCA0NywgODYsIDI0OSwgMjQsIDIxMywgNzcsIDYxLCA0NywgOTYsIDIzOSwgMTE3LCAyMTMsIDc3LCA2MSwgCi0gICAgNDcsIDg2LCAyMzksIDExNywgMjEzLCA3NywgNjEsIDQ3LCA2MSwgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDEwNSwgNjEsIDUzLCAKLSAgICAyMTMsIDc2LCAyMDQsIDI0LCAxMjAsIDIwOSwgNTcsIDIwMiwgMjYsIDI0MCwgMTAyLCAyMjQsIDUyLCAyNDAsIDEwMiwgCi0gICAgMjQwLCAxMDMsIDMsIDIwOSwgODAsIDIyMiwgMjIyLCAyNDAsIDEwMiwgMjA5LCA2MiwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAKLSAgICAyMzcsIDYzLCAyMTUsIDIyMSwgMjQwLCAxMDIsIDIzNiwgMjAsIDI0MCwgMTAyLCAyLCA3NiwgMjA5LCA5MywgMjM2LCA1MiwgCi0gICAgMjQ1LCAxNDYsIDIyNywgMTAyLCAyNDAsIDEwMiwgMjE0LCAxODgsIDIwNywgMTc5LCAyMDYsIDI0MCwgMjQwLCAxMDIsIAotICAgIDI0NiwgMTYxLCAyMDQsIDU3LCAxMiwgMTUsIDIzNSwgMTUyLCAxMiwgMTUsIDIzNSwgMTUxLCAxMiwgMTUsIDIzNSwgMTUwLCAKLSAgICAxMiwgMTUsIDIzNSwgMTQ5LCAxMiwgMTUsIDIzNSwgMTQ4LCAxMiwgMTUsIDIzNSwgMTQ3LCAxMiwgMTUsIDIzNSwgMTQ2LCAKLSAgICAxMiwgMTUsIDIzNSwgMTQ1LCAxMiwgMTUsIDIzNSwgMTQ0LCAxMiwgMTUsIDIzNSwgMTQzLCAxMiwgMTUsIDIzNSwgMTQyLCAKLSAgICAxMiwgMTUsIDIzNSwgMTQxLCAxMiwgMTUsIDIzNSwgMTQwLCAxMiwgMTUsIDIzNSwgMTM5LCAxMiwgMTUsIDIzNSwgMTM4LCAKLSAgICAxMiwgMTUsIDIzNSwgMTM3LCAxMiwgMTUsIDIzNSwgMTM2LCAxMiwgMTUsIDIzNSwgMTM1LCAxMiwgMTUsIDIzNSwgMTM0LCAKLSAgICAxMiwgMTUsIDIzNSwgMTMzLCAxMiwgMTUsIDIzNSwgMTMyLCAxMiwgMTUsIDIzNSwgMTMxLCAxMiwgMTUsIDIzNSwgMTMwLCAKLSAgICAxMiwgMTUsIDIzNSwgMTI5LCAxMiwgMTUsIDIzNSwgMTI4LCAxMiwgMTUsIDIzNSwgMTI3LCAxMiwgMTUsIDIzNSwgMTI2LCAKLSAgICAxMiwgMTUsIDIzNSwgMTI1LCAxMiwgMTUsIDIzNSwgMTI0LCAxMiwgMTUsIDIzNSwgMTIzLCAxMiwgMTUsIDIzNSwgMTIyLCAKLSAgICAxMiwgMTUsIDIzNSwgMTIxLCAxMiwgMTUsIDIzNSwgMTIwLCAxMiwgMTUsIDIzNSwgMTE5LCAxMiwgMTUsIDIzNSwgMTE4LCAKLSAgICAxMiwgMTUsIDIzNSwgMTE3LCAxMiwgMTUsIDIzNSwgMTE2LCAxMiwgMTUsIDIzNSwgMTE1LCAxMiwgMTUsIDIzNSwgMTE0LCAKLSAgICAxMiwgMTUsIDIzNSwgMTEzLCAxMiwgMTUsIDIzNSwgMTEyLCAxMiwgMTUsIDIzNSwgMTExLCAxMiwgMTUsIDIzNSwgMTEwLCAKLSAgICAxMiwgMTUsIDIzNSwgMTA5LCAxMiwgMTUsIDIzNSwgMTA4LCAxMiwgMTUsIDIzNSwgMTA3LCAxMiwgMTUsIDIzNSwgMTA2LCAKLSAgICAxMiwgMTUsIDIzNSwgMTA1LCAxMiwgMTUsIDIzNSwgMTA0LCAxMiwgMTUsIDIzNSwgMTAzLCAxMiwgMTUsIDIzNSwgMTAyLCAKLSAgICAxMiwgMTUsIDIzNSwgMTAxLCAxMiwgMTUsIDIzNSwgMTAwLCAxMiwgMTUsIDIzNSwgOTksIDEyLCAxNSwgMjM1LCA5OCwgMTIsIAotICAgIDE1LCAyMzUsIDk3LCAxMiwgMTUsIDIzNSwgOTYsIDEyLCAxNSwgMjM1LCA5NSwgMTIsIDE1LCAyMzUsIDk0LCAxMiwgMTUsIAotICAgIDIzNSwgOTMsIDEyLCAxNSwgMjM1LCA5MiwgMTIsIDE1LCAyMzUsIDkxLCAxMiwgMTUsIDIzNSwgOTAsIDEyLCAxNSwgMjM1LCAKLSAgICA4OSwgMTIsIDE1LCAyMzUsIDg4LCAxMiwgMTUsIDIzNSwgODcsIDEyLCAxNSwgMjM1LCA4NiwgMTIsIDE1LCAyMzUsIDg1LCAKLSAgICAxMiwgMTUsIDIzNSwgODQsIDEyLCAxNSwgMjM1LCA4MywgMTIsIDE1LCAyMzUsIDgyLCAxMiwgMTUsIDIzNSwgODEsIDEyLCAKLSAgICAxNSwgMjM1LCA4MCwgMTIsIDE1LCAyMzUsIDc5LCAxMiwgMTUsIDIzNSwgNzgsIDEyLCAxNSwgMjM1LCA3NywgMTIsIDE1LCAKLSAgICAyMzUsIDc2LCAxMiwgMTUsIDIzNSwgNzUsIDEyLCAxNSwgMjM1LCA3NCwgMTIsIDE1LCAyMzUsIDczLCAxMiwgMTUsIDIzNSwgCi0gICAgNzIsIDEyLCAxNSwgMjM1LCA3MSwgMTIsIDE1LCAyMzUsIDcwLCAxMiwgMTUsIDIzNSwgNjksIDEyLCAxNSwgMjM1LCA2OCwgCi0gICAgMTIsIDE1LCAyMzUsIDY3LCAxMiwgMTUsIDIzNSwgNjYsIDEyLCAxNSwgMjM1LCA2NSwgMTIsIDE1LCAyMzUsIDY0LCAxMiwgCi0gICAgMTUsIDIzNSwgNjMsIDEyLCAxNSwgMjM1LCA2MiwgMTIsIDE1LCAyMzUsIDYxLCAxMiwgMTUsIDIzNSwgNjAsIDEyLCAxNSwgCi0gICAgMjM1LCA1OSwgMTIsIDE1LCAyMzUsIDU4LCAxMiwgMTUsIDIzNSwgNTcsIDEyLCAxNSwgMjM1LCA1NiwgMTIsIDE1LCAyMzUsIAotICAgIDU1LCAxMiwgMTUsIDIzNSwgNTQsIDEyLCAxNSwgMjM1LCA1MywgMTIsIDE1LCAyMzUsIDUyLCAxMiwgMTUsIDIzNSwgNTEsIAotICAgIDEyLCAxNSwgMjM1LCA1MCwgMTIsIDE1LCAyMzUsIDQ5LCAxMiwgMTUsIDIzNSwgNDgsIDEyLCAxNSwgMjM1LCA0NywgMTIsIAotICAgIDE1LCAyMzUsIDQ2LCAxMiwgMTUsIDIzNSwgNDUsIDEyLCAxNSwgMjM1LCA0NCwgMTIsIDE1LCAyMzUsIDQzLCAxMiwgMTUsIAotICAgIDIzNSwgNDIsIDEyLCAxNSwgMjM1LCA0MSwgMTIsIDE1LCAyMzUsIDQwLCAxMiwgMTUsIDIzNSwgMzksIDEyLCAxNSwgMjM1LCAKLSAgICAzOCwgMTIsIDE1LCAyMzUsIDM3LCAxMiwgMTUsIDIzNSwgMzYsIDEyLCAxNSwgMjM1LCAzNSwgMTIsIDE1LCAyMzUsIDM0LCAKLSAgICAxMiwgMTUsIDIzNSwgMzMsIDEyLCAxNSwgMjM1LCAzMiwgMTIsIDE1LCAyMzUsIDMxLCAxMiwgMTUsIDIzNSwgMzAsIDEyLCAKLSAgICAxNSwgMjM1LCAyOSwgMTIsIDE1LCAyMzUsIDI4LCAxMiwgMTUsIDIzNSwgMjcsIDEyLCAxNSwgMjM1LCAyNiwgMTIsIDE1LCAKLSAgICAyMzUsIDI1LCAxMiwgMTUsIDIzNSwgMjQsIDEyLCAxNSwgMjM1LCAyMywgMTIsIDE1LCAyMzUsIDIyLCAxMiwgMTUsIDIzNSwgCi0gICAgMjEsIDEyLCAxNSwgMjM1LCAyMCwgMTIsIDE1LCAyMzUsIDE5LCAxMiwgMTUsIDIzNSwgMTgsIDEyLCAxNSwgMjM1LCAxNywgCi0gICAgMTIsIDE1LCAyMzUsIDE2LCAxMiwgMTUsIDIzNSwgMTUsIDEyLCAxNSwgMjM1LCAxNCwgMTIsIDE1LCAyMzUsIDEzLCAxMiwgCi0gICAgMTUsIDIzNSwgMTIsIDEyLCAxNSwgMjM1LCAxMSwgMTIsIDE1LCAyMzUsIDEwLCAxMiwgMTUsIDIzNSwgOSwgMTIsIDE1LCAKLSAgICAyMzUsIDgsIDEyLCAxNSwgMjM1LCA3LCAxMiwgMTUsIDIzNSwgNiwgMTIsIDE1LCAyMzUsIDUsIDEyLCAxNSwgMjM1LCA0LCAKLSAgICAxMiwgMTUsIDIzNSwgMywgMTIsIDE1LCAyMzUsIDIsIDEyLCAxNSwgMjM1LCAxLCAxMiwgMTUsIDIzNSwgMCwgMTIsIDE1LCAKLSAgICAyMzQsIDI1NSwgMTIsIDE1LCAyMzQsIDI1NCwgMTIsIDE1LCAyMzQsIDI1MywgMTIsIDE1LCAyMzQsIDI1MiwgMTIsIDE1LCAKLSAgICAyMzQsIDI1MSwgMTIsIDE1LCAyMzQsIDI1MCwgMTIsIDE1LCAyMzQsIDI0OSwgMTIsIDE1LCAyMzQsIDI0OCwgMTIsIDE1LCAKLSAgICAyMzQsIDI0NywgMTIsIDE1LCAyMzQsIDI0NiwgMTIsIDE1LCAyMzQsIDI0NSwgMTIsIDE1LCAyMzQsIDI0NCwgMTIsIDE1LCAKLSAgICAyMzQsIDI0MywgMTIsIDE1LCAyMzQsIDI0MiwgMTIsIDE1LCAyMzQsIDI0MSwgMTIsIDE1LCAyMzQsIDI0MCwgMTIsIDE1LCAKLSAgICAyMzQsIDIzOSwgMTIsIDE1LCAyMzQsIDIzOCwgMTIsIDE1LCAyMzQsIDIzNywgMTIsIDE1LCAyMzQsIDIzNiwgMTIsIDE1LCAKLSAgICAyMzQsIDIzNSwgMTIsIDE1LCAyMzQsIDIzNCwgMTIsIDE1LCAyMzQsIDIzMywgMTIsIDE1LCAyMzQsIDIzMiwgMTIsIDE1LCAKLSAgICAyMzQsIDIzMSwgMTIsIDE1LCAyMzQsIDIzMCwgMTIsIDE1LCAyMzQsIDIyOSwgMTIsIDE1LCAyMzQsIDIyOCwgMTIsIDE1LCAKLSAgICAyMzQsIDIyNywgMTIsIDE1LCAyMzQsIDIyNiwgMTIsIDE1LCAyMzQsIDIyNSwgMTIsIDE1LCAyMzQsIDIyNCwgMTIsIDE1LCAKLSAgICAyMzQsIDIyMywgMTIsIDE1LCAyMzQsIDIyMiwgMTIsIDE1LCAyMzQsIDIyMSwgMTIsIDE1LCAyMzQsIDIyMCwgMTIsIDE1LCAKLSAgICAyMzQsIDIxOSwgMTIsIDE1LCAyMzQsIDIxOCwgMTIsIDE1LCAyMzQsIDIxNywgMTIsIDE1LCAyMzQsIDIxNiwgMTIsIDE1LCAKLSAgICAyMzQsIDIxNSwgMTIsIDE1LCAyMzQsIDIxNCwgMTIsIDE1LCAyMzQsIDIxMywgMTIsIDE1LCAyMzQsIDIxMiwgMTIsIDE1LCAKLSAgICAyMzQsIDIxMSwgMTIsIDE1LCAyMzQsIDIxMCwgMTIsIDE1LCAyMzQsIDIwOSwgMTIsIDE1LCAyMzQsIDIwOCwgMTIsIDE1LCAKLSAgICAyMzQsIDIwNywgMTIsIDE1LCAyMzQsIDIwNiwgMTIsIDE1LCAyMzQsIDIwNSwgMTIsIDE1LCAyMzQsIDIwNCwgMTIsIDE1LCAKLSAgICAyMzQsIDIwMywgMTIsIDE1LCAyMzQsIDIwMiwgMTIsIDE1LCAyMzQsIDIwMSwgMTIsIDE1LCAyMzQsIDIwMCwgMTIsIDE1LCAKLSAgICAyMzQsIDE5OSwgMTIsIDE1LCAyMzQsIDE5OCwgMTIsIDE1LCAyMzQsIDE5NywgMTIsIDE1LCAyMzQsIDE5NiwgMTIsIDE1LCAKLSAgICAyMzQsIDE5NSwgMTIsIDE1LCAyMzQsIDE5NCwgMTIsIDE1LCAyMzQsIDE5MywgMTIsIDE1LCAyMzQsIDE5MiwgMTIsIDE1LCAKLSAgICAyMzQsIDE5MSwgMTIsIDE1LCAyMzQsIDE5MCwgMTIsIDE1LCAyMzQsIDE4OSwgMTIsIDE1LCAyMzQsIDE4OCwgMTIsIDE1LCAKLSAgICAyMzQsIDE4NywgMTIsIDE1LCAyMzQsIDE4NiwgMTIsIDE1LCAyMzQsIDE4NSwgMTIsIDE1LCAyMzQsIDE4NCwgMTIsIDE1LCAKLSAgICAyMzQsIDE4MywgMTIsIDE1LCAyMzQsIDE4MiwgMTIsIDE1LCAyMzQsIDE4MSwgMTIsIDE1LCAyMzQsIDE4MCwgMTIsIDE1LCAKLSAgICAyMzQsIDE3OSwgMTIsIDE1LCAyMzQsIDE3OCwgMTIsIDE1LCAyMzQsIDE3NywgMTIsIDE1LCAyMzQsIDE3NiwgMTIsIDE1LCAKLSAgICAyMzQsIDE3NSwgMTIsIDE1LCAyMzQsIDE3NCwgMTIsIDE1LCAyMzQsIDE3MywgMTIsIDE1LCAyMzQsIDE3MiwgMTIsIDE1LCAKLSAgICAyMzQsIDE3MSwgMTIsIDE1LCAyMzQsIDE3MCwgMTIsIDE1LCAyMzQsIDE2OSwgMTIsIDE1LCAyMzQsIDE2OCwgMTIsIDE1LCAKLSAgICAyMzQsIDE2NywgMTIsIDE1LCAyMzQsIDE2NiwgMTIsIDE1LCAyMzQsIDE2NSwgMTIsIDE1LCAyMzQsIDE2NCwgMTIsIDE1LCAKLSAgICAyMzQsIDE2MywgMTIsIDE1LCAyMzQsIDE2MiwgMTIsIDE1LCAyMzQsIDE2MSwgMTIsIDE1LCAyMzQsIDE2MCwgMTIsIDE1LCAKLSAgICAyMzQsIDE1OSwgMTIsIDE1LCAyMzQsIDE1OCwgMTIsIDE1LCAyMzQsIDE1NywgMTIsIDE1LCAyMzQsIDE1NiwgMTIsIDE1LCAKLSAgICAyMzQsIDE1NSwgMTIsIDE1LCAyMzQsIDE1NCwgMTIsIDE1LCAyMzQsIDE1MywgMTIsIDE1LCAyMzQsIDE1MiwgMTIsIDE1LCAKLSAgICAyMzQsIDE1MSwgMTIsIDE1LCAyMzQsIDE1MCwgMTIsIDE1LCAyMzQsIDE0OSwgMTIsIDE1LCAyMzQsIDE0OCwgMTIsIDE1LCAKLSAgICAyMzQsIDE0NywgMTIsIDE1LCAyMzQsIDE0NiwgMTIsIDE1LCAyMzQsIDE0NSwgMTIsIDE1LCAyMzQsIDE0NCwgMTIsIDE1LCAKLSAgICAyMzQsIDE0MywgMTIsIDE1LCAyMzQsIDE0MiwgMTIsIDE1LCAyMzQsIDE0MSwgMTIsIDE1LCAyMzQsIDE0MCwgMTIsIDE1LCAKLSAgICAyMzQsIDEzOSwgMTIsIDE1LCAyMzQsIDEzOCwgMTIsIDE1LCAyMzQsIDEzNywgMTIsIDE1LCAyMzQsIDEzNiwgMTIsIDE1LCAKLSAgICAyMzQsIDEzNSwgMTIsIDE1LCAyMzQsIDEzNCwgMTIsIDE1LCAyMzQsIDEzMywgMTIsIDE1LCAyMzQsIDEzMiwgMTIsIDE1LCAKLSAgICAyMzQsIDEzMSwgMTIsIDE1LCAyMzQsIDEzMCwgMTIsIDE1LCAyMzQsIDEyOSwgMTIsIDE1LCAyMzQsIDEyOCwgMTIsIDE1LCAKLSAgICAyMzQsIDEyNywgMTIsIDE1LCAyMzQsIDEyNiwgMTIsIDE1LCAyMzQsIDEyNSwgMTIsIDE1LCAyMzQsIDEyNCwgMTIsIDE1LCAKLSAgICAyMzQsIDEyMywgMTIsIDE1LCAyMzQsIDEyMiwgMTIsIDE1LCAyMzQsIDEyMSwgMTIsIDE1LCAyMzQsIDEyMCwgMTIsIDE1LCAKLSAgICAyMzQsIDExOSwgMTIsIDE1LCAyMzQsIDExOCwgMTIsIDE1LCAyMzQsIDExNywgMTIsIDE1LCAyMzQsIDExNiwgMTIsIDE1LCAKLSAgICAyMzQsIDExNSwgMTIsIDE1LCAyMzQsIDExNCwgMTIsIDE1LCAyMzQsIDExMywgMTIsIDE1LCAyMzQsIDExMiwgMTIsIDE1LCAKLSAgICAyMzQsIDExMSwgMTIsIDE1LCAyMzQsIDExMCwgMTIsIDE1LCAyMzQsIDEwOSwgMTIsIDE1LCAyMzQsIDEwOCwgMTIsIDE1LCAKLSAgICAyMzQsIDEwNywgMTIsIDE1LCAyMzQsIDEwNiwgMTIsIDE1LCAyMzQsIDEwNSwgMTIsIDE1LCAyMzQsIDEwNCwgMTIsIDE1LCAKLSAgICAyMzQsIDEwMywgMTIsIDE1LCAyMzQsIDEwMiwgMTIsIDE1LCAyMzQsIDEwMSwgMTIsIDE1LCAyMzQsIDEwMCwgMTIsIDE1LCAKLSAgICAyMzQsIDk5LCAxMiwgMTUsIDIzNCwgOTgsIDEyLCAxNSwgMjM0LCA5NywgMTIsIDE1LCAyMzQsIDk2LCAxMiwgMTUsIDIzNCwgCi0gICAgOTUsIDEyLCAxNSwgMjM0LCA5NCwgMTIsIDE1LCAyMzQsIDkzLCAxMiwgMTUsIDIzNCwgOTIsIDEyLCAxNSwgMjM0LCA5MSwgCi0gICAgMTIsIDE1LCAyMzQsIDkwLCAxMiwgMTUsIDIzNCwgODksIDEyLCAxNSwgMjM0LCA4OCwgMTIsIDE1LCAyMzQsIDg3LCAxMiwgCi0gICAgMTUsIDIzNCwgODYsIDEyLCAxNSwgMjM0LCA4NSwgMTIsIDE1LCAyMzQsIDg0LCAxMiwgMTUsIDIzNCwgODMsIDEyLCAxNSwgCi0gICAgMjM0LCA4MiwgMTIsIDE1LCAyMzQsIDgxLCAxMiwgMTUsIDIzNCwgODAsIDEyLCAxNSwgMjM0LCA3OSwgMTIsIDE1LCAyMzQsIAotICAgIDc4LCAxMiwgMTUsIDIzNCwgNzcsIDEyLCAxNSwgMjM0LCA3NiwgMTIsIDE1LCAyMzQsIDc1LCAxMiwgMTUsIDIzNCwgNzQsIAotICAgIDEyLCAxNSwgMjM0LCA3MywgMTIsIDE1LCAyMzQsIDcyLCAxMiwgMTUsIDIzNCwgNzEsIDEyLCAxNSwgMjM0LCA3MCwgMTIsIAotICAgIDE1LCAyMzQsIDY5LCAxMiwgMTUsIDIzNCwgNjgsIDEyLCAxNSwgMjM0LCA2NywgMTIsIDE1LCAyMzQsIDY2LCAxMiwgMTUsIAotICAgIDIzNCwgNjUsIDEyLCAxNSwgMjM0LCA2NCwgMTIsIDE1LCAyMzQsIDYzLCAxMiwgMTUsIDIzNCwgNjIsIDEyLCAxNSwgMjM0LCAKLSAgICA2MSwgMTIsIDE1LCAyMzQsIDYwLCAxMiwgMTUsIDIzNCwgNTksIDEyLCAxNSwgMjM0LCA1OCwgMTIsIDE1LCAyMzQsIDU3LCAKLSAgICAxMiwgMTUsIDIzNCwgNTYsIDEyLCAxNSwgMjM0LCA1NSwgMTIsIDE1LCAyMzQsIDU0LCAxMiwgMTUsIDIzNCwgNTMsIDEyLCAKLSAgICAxNSwgMjM0LCA1MiwgMTIsIDE1LCAyMzQsIDUxLCAxMiwgMTUsIDIzNCwgNTAsIDEyLCAxNSwgMjM0LCA0OSwgMTIsIDE1LCAKLSAgICAyMzQsIDQ4LCAxMiwgMTUsIDIzNCwgNDcsIDEyLCAxNSwgMjM0LCA0NiwgMTIsIDE1LCAyMzQsIDQ1LCAxMiwgMTUsIDIzNCwgCi0gICAgNDQsIDEyLCAxNSwgMjM0LCA0MywgMTIsIDE1LCAyMzQsIDQyLCAxMiwgMTUsIDIzNCwgNDEsIDEyLCAxNSwgMjM0LCA0MCwgCi0gICAgMTIsIDE1LCAyMzQsIDM5LCAxMiwgMTUsIDIzNCwgMzgsIDEyLCAxNSwgMjM0LCAzNywgMTIsIDE1LCAyMzQsIDM2LCAxMiwgCi0gICAgMTUsIDIzNCwgMzUsIDEyLCAxNSwgMjM0LCAzNCwgMTIsIDE1LCAyMzQsIDMzLCAxMiwgMTUsIDIzNCwgMzIsIDEyLCAxNSwgCi0gICAgMjM0LCAzMSwgMTIsIDE1LCAyMzQsIDMwLCAxMiwgMTUsIDIzNCwgMjksIDEyLCAxNSwgMjM0LCAyOCwgMTIsIDE1LCAyMzQsIAotICAgIDI3LCAxMiwgMTUsIDIzNCwgMjYsIDEyLCAxNSwgMjM0LCAyNSwgMTIsIDE1LCAyMzQsIDI0LCAxMiwgMTUsIDIzNCwgMjMsIAotICAgIDEyLCAxNSwgMjM0LCAyMiwgMTIsIDE1LCAyMzQsIDIxLCAxMiwgMTUsIDIzNCwgMjAsIDEyLCAxNSwgMjM0LCAxOSwgMTIsIAotICAgIDE1LCAyMzQsIDE4LCAxMiwgMTUsIDIzNCwgMTcsIDEyLCAxNSwgMjM0LCAxNiwgMTIsIDE1LCAyMzQsIDE1LCAxMiwgMTUsIAotICAgIDIzNCwgMTQsIDEyLCAxNSwgMjM0LCAxMywgMTIsIDE1LCAyMzQsIDEyLCAxMiwgMTUsIDIzNCwgMTEsIDEyLCAxNSwgMjM0LCAKLSAgICAxMCwgMTIsIDE1LCAyMzQsIDksIDEyLCAxNSwgMjM0LCA4LCAxMiwgMTUsIDIzNCwgNywgMTIsIDE1LCAyMzQsIDYsIDEyLCAKLSAgICAxNSwgMjM0LCA1LCAxMiwgMTUsIDIzNCwgNCwgMTIsIDE1LCAyMzQsIDMsIDEyLCAxNSwgMjM0LCAyLCAxMiwgMTUsIDIzNCwgCi0gICAgMSwgMTIsIDE1LCAyMzQsIDAsIDEyLCAxNSwgMjMzLCAyNTUsIDEyLCAxNSwgMjMzLCAyNTQsIDEyLCAxNSwgMjMzLCAyNTMsIAotICAgIDEyLCAxNSwgMjMzLCAyNTIsIDEyLCAxNSwgMjMzLCAyNTEsIDEyLCAxNSwgMjMzLCAyNTAsIDEyLCAxNSwgMjMzLCAyNDksIAotICAgIDEyLCAxNSwgMjMzLCAyNDgsIDEyLCAxNSwgMjMzLCAyNDcsIDEyLCAxNSwgMjMzLCAyNDYsIDEyLCAxNSwgMjMzLCAyNDUsIAotICAgIDEyLCAxNSwgMjMzLCAyNDQsIDEyLCAxNSwgMjMzLCAyNDMsIDEyLCAxNSwgMjMzLCAyNDIsIDEyLCAxNSwgMjMzLCAyNDEsIAotICAgIDEyLCAxNSwgMjMzLCAyNDAsIDEyLCAxNSwgMjMzLCAyMzksIDEyLCAxNSwgMjMzLCAyMzgsIDEyLCAxNSwgMjMzLCAyMzcsIAotICAgIDEyLCAxNSwgMjMzLCAyMzYsIDEyLCAxNSwgMjMzLCAyMzUsIDEyLCAxNSwgMjMzLCAyMzQsIDEyLCAxNSwgMjMzLCAyMzMsIAotICAgIDEyLCAxNSwgMjMzLCAyMzIsIDEyLCAxNSwgMjMzLCAyMzEsIDEyLCAxNSwgMjMzLCAyMzAsIDEyLCAxNSwgMjMzLCAyMjksIAotICAgIDEyLCAxNSwgMjMzLCAyMjgsIDEyLCAxNSwgMjMzLCAyMjcsIDEyLCAxNSwgMjMzLCAyMjYsIDEyLCAxNSwgMjMzLCAyMjUsIAotICAgIDEyLCAxNSwgMjMzLCAyMjQsIDEyLCAxNSwgMjMzLCAyMjMsIDEyLCAxNSwgMjMzLCAyMjIsIDEyLCAxNSwgMjMzLCAyMjEsIAotICAgIDEyLCAxNSwgMjMzLCAyMjAsIDEyLCAxNSwgMjMzLCAyMTksIDEyLCAxNSwgMjMzLCAyMTgsIDEyLCAxNSwgMjMzLCAyMTcsIAotICAgIDEyLCAxNSwgMjMzLCAyMTYsIDEyLCAxNSwgMjMzLCAyMTUsIDEyLCAxNSwgMjMzLCAyMTQsIDEyLCAxNSwgMjMzLCAyMTMsIAotICAgIDEyLCAxNSwgMjMzLCAyMTIsIDEyLCAxNSwgMjMzLCAyMTEsIDEyLCAxNSwgMjMzLCAyMTAsIDEyLCAxNSwgMjMzLCAyMDksIAotICAgIDEyLCAxNSwgMjMzLCAyMDgsIDEyLCAxNSwgMjMzLCAyMDcsIDEyLCAxNSwgMjMzLCAyMDYsIDEyLCAxNSwgMjMzLCAyMDUsIAotICAgIDEyLCAxNSwgMjMzLCAyMDQsIDEyLCAxNSwgMjMzLCAyMDMsIDEyLCAxNSwgMjMzLCAyMDIsIDEyLCAxNSwgMjMzLCAyMDEsIAotICAgIDEyLCAxNSwgMjMzLCAyMDAsIDEyLCAxNSwgMjMzLCAxOTksIDEyLCAxNSwgMjMzLCAxOTgsIDEyLCAxNSwgMjMzLCAxOTcsIAotICAgIDEyLCAxNSwgMjMzLCAxOTYsIDEyLCAxNSwgMjMzLCAxOTUsIDEyLCAxNSwgMjMzLCAxOTQsIDEyLCAxNSwgMjMzLCAxOTMsIAotICAgIDEyLCAxNSwgMjMzLCAxOTIsIDEyLCAxNSwgMjMzLCAxOTEsIDEyLCAxNSwgMjMzLCAxOTAsIDEyLCAxNSwgMjMzLCAxODksIAotICAgIDEyLCAxNSwgMjMzLCAxODgsIDEyLCAxNSwgMjMzLCAxODcsIDEyLCAxNSwgMjMzLCAxODYsIDEyLCAxNSwgMjMzLCAxODUsIAotICAgIDEyLCAxNSwgMjMzLCAxODQsIDEyLCAxNSwgMjMzLCAxODMsIDEyLCAxNSwgMjMzLCAxODIsIDEyLCAxNSwgMjMzLCAxODEsIAotICAgIDEyLCAxNSwgMjMzLCAxODAsIDEyLCAxNSwgMjMzLCAxNzksIDEyLCAxNSwgMjMzLCAxNzgsIDEyLCAxNSwgMjMzLCAxNzcsIAotICAgIDEyLCAxNSwgMjMzLCAxNzYsIDEyLCAxNSwgMjMzLCAxNzUsIDEyLCAxNSwgMjMzLCAxNzQsIDEyLCAxNSwgMjMzLCAxNzMsIAotICAgIDEyLCAxNSwgMjMzLCAxNzIsIDEyLCAxNSwgMjMzLCAxNzEsIDEyLCAxNSwgMjMzLCAxNzAsIDEyLCAxNSwgMjMzLCAxNjksIAotICAgIDEyLCAxNSwgMjMzLCAxNjgsIDEyLCAxNSwgMjMzLCAxNjcsIDEyLCAxNSwgMjMzLCAxNjYsIDEyLCAxNSwgMjMzLCAxNjUsIAotICAgIDEyLCAxNSwgMjMzLCAxNjQsIDEyLCAxNSwgMjMzLCAxNjMsIDEyLCAxNSwgMjMzLCAxNjIsIDEyLCAxNSwgMjMzLCAxNjEsIAotICAgIDEyLCAxNSwgMjMzLCAxNjAsIDEyLCAxNSwgMjMzLCAxNTksIDEyLCAxNSwgMjMzLCAxNTgsIDEyLCAxNSwgMjMzLCAxNTcsIAotICAgIDEyLCAxNSwgMjMzLCAxNTYsIDEyLCAxNSwgMjMzLCAxNTUsIDEyLCAxNSwgMjMzLCAxNTQsIDEyLCAxNSwgMjMzLCAxNTMsIAotICAgIDEyLCAxNSwgMjMzLCAxNTIsIDEyLCAxNSwgMjMzLCAxNTEsIDEyLCAxNSwgMjMzLCAxNTAsIDEyLCAxNSwgMjMzLCAxNDksIAotICAgIDEyLCAxNSwgMjMzLCAxNDgsIDEyLCAxNSwgMjMzLCAxNDcsIDEyLCAxNSwgMjMzLCAxNDYsIDEyLCAxNSwgMjMzLCAxNDUsIAotICAgIDEyLCAxNSwgMjMzLCAxNDQsIDEyLCAxNSwgMjMzLCAxNDMsIDEyLCAxNSwgMjMzLCAxNDIsIDEyLCAxNSwgMjMzLCAxNDEsIAotICAgIDEyLCAxNSwgMjMzLCAxNDAsIDEyLCAxNSwgMjMzLCAxMzksIDEyLCAxNSwgMjMzLCAxMzgsIDEyLCAxNSwgMjMzLCAxMzcsIAotICAgIDEyLCAxNSwgMjMzLCAxMzYsIDEyLCAxNSwgMjMzLCAxMzUsIDEyLCAxNSwgMjMzLCAxMzQsIDEyLCAxNSwgMjMzLCAxMzMsIAotICAgIDEyLCAxNSwgMjMzLCAxMzIsIDEyLCAxNSwgMjMzLCAxMzEsIDEyLCAxNSwgMjMzLCAxMzAsIDEyLCAxNSwgMjMzLCAxMjksIAotICAgIDEyLCAxNSwgMjMzLCAxMjgsIDEyLCAxNSwgMjMzLCAxMjcsIDEyLCAxNSwgMjMzLCAxMjYsIDEyLCAxNSwgMjMzLCAxMjUsIAotICAgIDEyLCAxNSwgMjMzLCAxMjQsIDEyLCAxNSwgMjMzLCAxMjMsIDIyOCwgMTQsIDIwOSwgMjU1LCAxNjAsIDIxMSwgMjI4LCAKLSAgICAxNjAsIDI0MCwgMjEyLCA4MiwgMTYwLCAyMTcsIDMxLCA4MiwgMTYwLCA0MiwgNTQsIDE2MCwgMjQzLCA5NywgNTQsIDE2MCwgCi0gICAgMjE4LCAyNDYsIDU0LCAxNjAsIDI1MCwgMjM1LCAxNjAsIDI1MCwgMTYwLCAxNjAsIDQ5LCAyMTksIDc2LCAxNjAsIDUwLCAKLSAgICAyMTksIDc2LCAxNjAsIDI1MCwgNTksIDE2MCwgOTEsIDU0LCAxNjAsIDI0NSwgMjMzLCAxNjAsIDIzNSwgMjE5LCAxNjAsIAotICAgIDIzOSwgMTAyLCAyMTEsIDYxLCAxNjAsIDIxMiwgMCwgMTYwLCAxNywgMjAyLCA4NCwgMTYwLCAxNywgMTA1LCAxNjAsIDE3LCAKLSAgICAxMDgsIDE2MCwgMTcsIDE0NywgMTYwLCAxNywgMTQ5LCAxNjAsIDE3LCAxNzAsIDE2MCwgMTcsIDE5NSwgMTYwLCAxNywgCi0gICAgMjEzLCAxMTEsIDE2MCwgMTcsIDE5OSwgMTYwLCAxNywgMjIyLCA2MywgMTYwLCAyNDUsIDI0MiwgMTYwLCAyMTMsIDE0MywgCi0gICAgMTYwLCAyMjcsIDE3OSwgNTQsIDE2MCwgMjQxLCAzNSwgNTQsIDE2MCwgMjM3LCAyNDcsIDU0LCAxNjAsIDIxNywgNDcsIDgyLCAKLSAgICAxNjAsIDI0NSwgMjMxLCAyNTAsIDQ5LCAxNjAsIDgsIDYsIDEsIDYzLCAxNjAsIDgsIDYsIDEsIDI0OSwgMjU1LCAxNjAsIDgsIAotICAgIDYsIDEsIDI0NywgMTI1LCAxNjAsIDgsIDYsIDEsIDI0NSwgNTEsIDE2MCwgOCwgNiwgMSwgNzQsIDE2MCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzQsIDE2MCwgOCwgNiwgMSwgMjM5LCA3NSwgMTYwLCA4LCA2LCAxLCAyMzcsIDE3MSwgMTYwLCA4LCA2LCAxLCAKLSAgICA3NSwgMTYwLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTYwLCA4LCA2LCAxLCAyMzAsIDU0LCAxNjAsIDgsIDYsIDEsIDE1OSwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTYwLCA4LCA2LCAxLCAyMjMsIDE2MywgMTYwLCA4LCA2LCAxLCA3OCwgMTYwLCA4LCAKLSAgICA2LCAxLCAyMTksIDE4NCwgMTYwLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTYwLCA4LCA2LCAxLCAxNDYsIDE2MCwgOCwgNiwgMSwgCi0gICAgMTk0LCAxNjAsIDgsIDYsIDEsIDIxMCwgNjksIDE2MCwgOCwgNiwgMSwgNjgsIDE2MCwgOCwgNiwgMSwgMjA2LCAxNjQsIAotICAgIDE2MCwgOCwgNiwgMSwgMjA0LCAxNDQsIDE2MCwgOCwgNiwgMSwgMjAzLCAxOTYsIDE2MCwgOCwgNiwgMSwgMjAzLCAxMjQsIAotICAgIDE2MCwgOCwgNiwgMSwgMjAyLCAxNTksIDE2MCwgNDksIDUxLCAxNTUsIDE2MCwgMjE2LCA3NCwgMjEyLCAwLCAxNjAsIDUwLCAKLSAgICA1MSwgMTU1LCAxNjAsIDI0NiwgNTMsIDI1MSwgMTM4LCAxNjAsIDEyNCwgMjI3LCAxMTQsIDE2MCwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCAxNjAsIDgsIDUsIDEsIDYzLCAxNjAsIDgsIDUsIDEsIDI0OSwgMjU1LCAxNjAsIDgsIDUsIDEsIDI0NywgMTI1LCAKLSAgICAxNjAsIDgsIDUsIDEsIDI0NSwgNTEsIDE2MCwgOCwgNSwgMSwgNzQsIDE2MCwgOCwgNSwgMSwgMjQwLCAxNzQsIDE2MCwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NSwgMTYwLCA4LCA1LCAxLCAyMzcsIDE3MSwgMTYwLCA4LCA1LCAxLCA3NSwgMTYwLCA4LCA1LCAxLCAKLSAgICAyMzAsIDE4NCwgMTYwLCA4LCA1LCAxLCAyMzAsIDU0LCAxNjAsIDgsIDUsIDEsIDE1OSwgMTYwLCA4LCA1LCAxLCAyMjYsIAotICAgIDE4NSwgMTYwLCA4LCA1LCAxLCAyMjMsIDE2MywgMTYwLCA4LCA1LCAxLCA3OCwgMTYwLCA4LCA1LCAxLCAyMTksIDE4NCwgCi0gICAgMTYwLCA4LCA1LCAxLCAyMTcsIDEzNCwgMTYwLCA4LCA1LCAxLCAxNDYsIDE2MCwgOCwgNSwgMSwgMTk0LCAxNjAsIDgsIDUsIAotICAgIDEsIDIxMCwgNjksIDE2MCwgOCwgNSwgMSwgNjgsIDE2MCwgOCwgNSwgMSwgMjA2LCAxNjQsIDE2MCwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDQsIDE2MCwgOCwgNSwgMSwgMjAzLCAxOTYsIDE2MCwgOCwgNSwgMSwgMjAzLCAxMjQsIDE2MCwgOCwgNSwgMSwgMjAyLCAKLSAgICAxNTksIDE2MCwgNDksIDI0NSwgOTMsIDE1NSwgMTYwLCA4MCwgMjI3LCAxMTQsIDE2MCwgNTAsIDI0NSwgOTMsIDE1NSwgCi0gICAgMTYwLCAyMDgsIDIyNywgMjQ3LCA2MCwgMjA5LCAyNTUsIDU3LCAyMTQsIDcxLCA1NywgMjE0LCA2MCwgNTcsIDIxNCwgNDksIAotICAgIDU3LCAyMTQsIDM3LCA1NywgMjE0LCAyNiwgNTcsIDIxNCwgMTUsIDU3LCAyMTQsIDQsIDU3LCAyMTMsIDI0OSwgNTcsIDIxMywgCi0gICAgMjM4LCA1NywgMjEzLCAyMzAsIDU3LCAyMTMsIDIyOSwgNTcsIDIxMywgMjI4LCA1NywgMjEzLCAyMjcsIDU3LCAyMTMsIAotICAgIDIyNSwgNTcsIDIxMywgMjI0LCA1NywgMjEzLCAyMjMsIDU3LCAyMTMsIDIyMiwgNTcsIDIxMywgMjIxLCA1NywgMjEzLCAKLSAgICAyMjAsIDU3LCAyMTMsIDIxOSwgNTcsIDIxMywgMjE4LCA1NywgMjEzLCAyMTcsIDU3LCAyMTMsIDIxNiwgNTcsIDIxMywgCi0gICAgMjE0LCA1NywgMjEzLCAyMTMsIDU3LCAyMTMsIDIxMiwgNTcsIDIxMywgMjExLCA1NywgMjEzLCAyMTAsIDU3LCAyMTMsIAotICAgIDIwOSwgNTcsIDIxMywgMjA4LCA1NywgMjEzLCAyMDcsIDU3LCAyMTMsIDIwNiwgNTcsIDIxMywgMjA1LCA1NywgMjEzLCAKLSAgICAyMDMsIDU3LCAyMTMsIDIwMiwgNTcsIDIxMywgMjAxLCA1NywgMjEzLCAyMDAsIDU3LCAyMTMsIDE5OSwgNTcsIDIxMywgCi0gICAgMTk4LCA1NywgMjEzLCAxOTcsIDU3LCAyMTMsIDE5NiwgNTcsIDIxMywgMTk1LCA1NywgMjEzLCAxOTQsIDU3LCAyMTMsIAotICAgIDE5MiwgNTcsIDIxMywgMTkxLCA1NywgMjEzLCAxOTAsIDU3LCAyMTMsIDE4OSwgNTcsIDIxMywgMTg4LCA1NywgMjEzLCAKLSAgICAxODcsIDU3LCAyMTMsIDE4NiwgNTcsIDIxMywgMTg1LCA1NywgMjEzLCAxODQsIDU3LCAyMTMsIDE4MywgNTcsIDIxMywgCi0gICAgMTgxLCA1NywgMjEzLCAxODAsIDU3LCAyMTMsIDE3OSwgNTcsIDIxMywgMTc4LCA1NywgMjEzLCAxNzcsIDU3LCAyMTMsIAotICAgIDE3NiwgNTcsIDIxMywgMTc1LCA1NywgMjEzLCAxNzQsIDU3LCAyMTMsIDE3MywgNTcsIDIxMywgMTcyLCA1NywgMjEzLCAKLSAgICAxNzAsIDU3LCAyMTMsIDE2OSwgNTcsIDIxMywgMTY4LCA1NywgMjEzLCAxNjcsIDU3LCAyMTMsIDE2NiwgNTcsIDIxMywgCi0gICAgMTY1LCA1NywgMjEzLCAxNjQsIDU3LCAyMTMsIDE2MywgNTcsIDIxMywgMTYyLCA1NywgMjEzLCAxNjEsIDU3LCAyMTMsIAotICAgIDE1OSwgNTcsIDIxMywgMTU4LCA1NywgMjEzLCAxNTcsIDU3LCAyMTMsIDE1NiwgNTcsIDIxMywgMTU1LCA1NywgMjEzLCAKLSAgICAxNTQsIDU3LCAyMTMsIDE1MywgNTcsIDIxMywgMTUyLCA1NywgMjEzLCAxNTEsIDU3LCAyMTMsIDE1MCwgNTcsIDIxNCwgCi0gICAgMTQ3LCA1NywgMjE0LCAxNDYsIDU3LCAyMTQsIDE0NSwgNTcsIDIxNCwgMTQ0LCA1NywgMjE0LCAxNDMsIDU3LCAyMTQsIAotICAgIDE0MiwgNTcsIDIxNCwgMTQxLCA1NywgMjE0LCAxNDAsIDU3LCAyMTQsIDEzOSwgNTcsIDIxNCwgMTM4LCA1NywgMjE0LCAKLSAgICAxMzYsIDU3LCAyMTQsIDEzNSwgNTcsIDIxNCwgMTM0LCA1NywgMjE0LCAxMzMsIDU3LCAyMTQsIDEzMiwgNTcsIDIxNCwgCi0gICAgMTMxLCA1NywgMjE0LCAxMzAsIDU3LCAyMTQsIDEyOSwgNTcsIDIxNCwgMTI4LCA1NywgMjE0LCAxMjcsIDU3LCAyMTQsIAotICAgIDEyNSwgNTcsIDIxNCwgMTI0LCA1NywgMjE0LCAxMjMsIDU3LCAyMTQsIDEyMiwgNTcsIDIxNCwgMTIxLCA1NywgMjE0LCAKLSAgICAxMjAsIDU3LCAyMTQsIDExOSwgNTcsIDIxNCwgMTE4LCA1NywgMjE0LCAxMTcsIDU3LCAyMTQsIDExNiwgNTcsIDIxNCwgCi0gICAgMTE0LCA1NywgMjE0LCAxMTMsIDU3LCAyMTQsIDExMiwgNTcsIDIxNCwgMTExLCA1NywgMjE0LCAxMTAsIDU3LCAyMTQsIAotICAgIDEwOSwgNTcsIDIxNCwgMTA4LCA1NywgMjE0LCAxMDcsIDU3LCAyMTQsIDEwNiwgNTcsIDIxNCwgMTA1LCA1NywgMjE0LCAKLSAgICAxMDMsIDU3LCAyMTQsIDEwMiwgNTcsIDIxNCwgMTAxLCA1NywgMjE0LCAxMDAsIDU3LCAyMTQsIDk5LCA1NywgMjE0LCA5OCwgCi0gICAgNTcsIDIxNCwgOTcsIDU3LCAyMTQsIDk2LCA1NywgMjE0LCA5NSwgNTcsIDIxNCwgOTQsIDU3LCAyMTQsIDkyLCA1NywgMjE0LCAKLSAgICA5MSwgNTcsIDIxNCwgOTAsIDU3LCAyMTQsIDg5LCA1NywgMjE0LCA4OCwgNTcsIDIxNCwgODcsIDU3LCAyMTQsIDg2LCA1NywgCi0gICAgMjE0LCA4NSwgNTcsIDIxNCwgODQsIDU3LCAyMTQsIDgzLCA1NywgMjE0LCA4MSwgNTcsIDIxNCwgODAsIDU3LCAyMTQsIDc5LCAKLSAgICA1NywgMjE0LCA3OCwgNTcsIDIxNCwgNzcsIDU3LCAyMTQsIDc2LCA1NywgMjE0LCA3NSwgNTcsIDIxNCwgNzQsIDU3LCAyMTQsIAotICAgIDczLCA1NywgMjE0LCA3MiwgNTcsIDIxNCwgNzAsIDU3LCAyMTQsIDY5LCA1NywgMjE0LCA2OCwgNTcsIDIxNCwgNjcsIDU3LCAKLSAgICAyMTQsIDY2LCA1NywgMjE0LCA2NSwgNTcsIDIxNCwgNjQsIDU3LCAyMTQsIDYzLCA1NywgMjE0LCA2MiwgNTcsIDIxNCwgNjEsIAotICAgIDU3LCAyMTQsIDU5LCA1NywgMjE0LCA1OCwgNTcsIDIxNCwgNTcsIDU3LCAyMTQsIDU2LCA1NywgMjE0LCA1NSwgNTcsIDIxNCwgCi0gICAgNTQsIDU3LCAyMTQsIDUzLCA1NywgMjE0LCA1MiwgNTcsIDIxNCwgNTEsIDU3LCAyMTQsIDUwLCA1NywgMjE0LCA0OCwgNTcsIAotICAgIDIxNCwgNDcsIDU3LCAyMTQsIDQ2LCA1NywgMjE0LCA0NSwgNTcsIDIxNCwgNDQsIDU3LCAyMTQsIDQzLCA1NywgMjE0LCA0MiwgCi0gICAgNTcsIDIxNCwgNDEsIDU3LCAyMTQsIDQwLCA1NywgMjE0LCAzOSwgNTcsIDIxNCwgMzYsIDU3LCAyMTQsIDM1LCA1NywgMjE0LCAKLSAgICAzNCwgNTcsIDIxNCwgMzMsIDU3LCAyMTQsIDMyLCA1NywgMjE0LCAzMSwgNTcsIDIxNCwgMzAsIDU3LCAyMTQsIDI5LCA1NywgCi0gICAgMjE0LCAyOCwgNTcsIDIxNCwgMjcsIDU3LCAyMTQsIDI1LCA1NywgMjE0LCAyNCwgNTcsIDIxNCwgMjMsIDU3LCAyMTQsIDIyLCAKLSAgICA1NywgMjE0LCAyMSwgNTcsIDIxNCwgMjAsIDU3LCAyMTQsIDE5LCA1NywgMjE0LCAxOCwgNTcsIDIxNCwgMTcsIDU3LCAyMTQsIAotICAgIDE2LCA1NywgMjE0LCAxNCwgNTcsIDIxNCwgMTMsIDU3LCAyMTQsIDEyLCA1NywgMjE0LCAxMSwgNTcsIDIxNCwgMTAsIDU3LCAKLSAgICAyMTQsIDksIDU3LCAyMTQsIDgsIDU3LCAyMTQsIDcsIDU3LCAyMTQsIDYsIDU3LCAyMTQsIDUsIDU3LCAyMTQsIDMsIDU3LCAKLSAgICAyMTQsIDIsIDU3LCAyMTQsIDEsIDU3LCAyMTQsIDAsIDU3LCAyMTMsIDI1NSwgNTcsIDIxMywgMjU0LCA1NywgMjEzLCAyNTMsIAotICAgIDU3LCAyMTMsIDI1MiwgNTcsIDIxMywgMjUxLCA1NywgMjEzLCAyNTAsIDU3LCAyMTMsIDI0OCwgNTcsIDIxMywgMjQ3LCA1NywgCi0gICAgMjEzLCAyNDYsIDU3LCAyMTMsIDI0NSwgNTcsIDIxMywgMjQ0LCA1NywgMjEzLCAyNDMsIDU3LCAyMTMsIDI0MiwgNTcsIAotICAgIDIxMywgMjQxLCA1NywgMjEzLCAyNDAsIDU3LCAyMTMsIDIzOSwgNTcsIDIxMywgMjM3LCA1NywgMjEzLCAyMzYsIDU3LCAKLSAgICAyMTMsIDIzNSwgNTcsIDIxMywgMjM0LCA1NywgMjEzLCAyMzMsIDU3LCAyMTMsIDIzMiwgNTcsIDIxMywgMjMxLCAyMjEsIAotICAgIDQ4LCAyMjEsIDUwLCAyMTEsIDkwLCA3NiwgMjM3LCA2MSwgMjEyLCAzLCAyMTEsIDkwLCA3NiwgMjA5LCAxMTIsIDIxMSwgCi0gICAgMTIsIDI0MSwgODQsIDc2LCAyMDksIDExMiwgMjQwLCAyNDAsIDI0MSwgODQsIDc2LCAyMDgsIDEwNSwgMjQxLCA0NywgMjQxLCAKLSAgICA3MSwgMjQxLCA3MiwgMjUxLCAxMzAsIDI1MSwgMTMxLCAyNTEsIDI3LCAyNDgsIDEzMSwgMjQ5LCAxOSwgMjQ3LCAxOTksIAotICAgIDE2NywgMjEwLCA1LCAyMzYsIDEwNiwgMjEwLCA1LCAyMzYsIDMxLCAyMTAsIDEwLCAyMjcsIDExNSwgMjQwLCA1MSwgMjIyLCAKLSAgICAyMTQsIDIyNywgMTE0LCAyNDEsIDg0LCA3NiwgMjI3LCAxMTQsIDIyNywgMTYzLCAyMjEsIDI1MywgMjQxLCA1MCwgMjI3LCAKLSAgICAxMTUsIDIxMCwgNSwgODAsIDIxMCwgNSwgMjA0LCAxNjUsIDIzOSwgMTU5LCAyNDAsIDUxLCAyNDAsIDMwLCAyNDcsIDI1LCAKLSAgICAyMTYsIDc3LCAyNDUsIDE0NywgMjEzLCA3LCAyMTksIDIxMSwgMjI3LCA0MSwgMTA1LCAyMTIsIDEzLCAyMTMsIDcsIDIzMSwgCi0gICAgNDksIDIyNywgNDEsIDIwMiwgODQsIDIxMiwgMTYyLCAyNDQsIDEzOSwgMjI3LCAxMDUsIDI0MSwgOSwgMjQzLCAxMjMsIAotICAgIDI0NCwgOCwgMjQ1LCAxODQsIDEwNSwgMjQ0LCAxMjgsIDI0NCwgOCwgMjQ1LCAxODQsIDEwOCwgMjQ0LCAxMjcsIDI0NCwgOCwgCi0gICAgMjQ1LCAxODQsIDE0NywgMjQ0LCAxMjYsIDI0NCwgOCwgMjQ1LCAxODQsIDE0OSwgMjQ0LCAxMjUsIDE4MiwgMjUxLCAxMzAsIAotICAgIDIyMywgODksIDIxMCwgOTUsIDIzMSwgMTEyLCAyMTAsIDk5LCAyNDEsIDg0LCA3NiwgMjA4LCAxMDYsIDI0OCwgMzMsIDI0MCwgCi0gICAgMjQ3LCAyNDcsIDU5LCAyNDcsIDYxLCAyNDEsIDg0LCA3NiwgMjI1LCA5LCAyNDEsIDQ4LCAyMTAsIDI0MiwgMjExLCAzLCAKLSAgICAyNDEsIDksIDI0MSwgMTAsIDIzMSwgMjUsIDIxMywgMTMxLCAxNDksIDI0MCwgMTEsIDIxMywgMTMwLCAyMzksIDExMiwgCi0gICAgMjMxLCAyNSwgMjEzLCAxMzEsIDE0NywgMjM3LCAyMzgsIDIxMywgMTMwLCAyMzcsIDIzNSwgMjMxLCAyNSwgMjEzLCAxMzEsIAotICAgIDEwOCwgMjE2LCAxNDksIDIxMywgMTMwLCAyMTUsIDE1MCwgMjMxLCAyNSwgMjEzLCAxMzEsIDEwNSwgMjA2LCAyMzYsIDIxMywgCi0gICAgMTMwLCAyMDYsIDE5MywgMjExLCAyMzEsIDI0NCwgNDYsIDI0NCwgNDgsIDIxOSwgMTU3LCAyNDYsIDE4MiwgMjE5LCAxNTksIAotICAgIDEzOCwgMjIwLCA4MCwgMjE3LCAyNDAsIDIzNiwgMTA5LCAyNDcsIDIxOCwgMjE4LCAyMzYsIDIzNywgMjcsIDI0NywgMjMwLCAKLSAgICAyMjEsIDE5MiwgMjQ3LCAyMTgsIDIzNywgMjcsIDIyMywgNTMsIDIzMSwgMzUsIDIzMSwgMzcsIDIyMiwgMjA4LCAyMjcsIAotICAgIDExNCwgMjIyLCAyMzEsIDIxMSwgOTAsIDc2LCAyMTQsIDE1MiwgMjUwLCAxMjAsIDIxMSwgMTY0LCAyNDEsIDg0LCA3NiwgCi0gICAgMjE0LCAxNTIsIDI1MCwgMTIwLCAyNDEsIDEyLCAxNjcsIDIxMCwgNiwgMjEzLCAxMTcsIDIzNiwgMTA2LCAyMTAsIDYsIAotICAgIDIxMywgMTE3LCAyMzYsIDI4LCAxNjcsIDIxMCwgNiwgMywgMjMwLCA2NiwgMjM2LCAxMDYsIDIxMCwgNiwgMywgMjMwLCA2NiwgCi0gICAgMjM2LCAyOSwgMjI3LCAxMTUsIDIxMCwgNiwgMjEzLCAxMTcsIDgwLCAyMTAsIDYsIDIxMywgMTE3LCAyMDQsIDE2NCwgMjE5LCAKLSAgICA2OSwgMjI3LCAxMTUsIDIzOSwgMTUxLCAyMTksIDY5LCAyMjcsIDExNSwgMjQyLCA3MCwgMjE4LCA4NywgMjE5LCA2OSwgCi0gICAgMjI3LCAxMTUsIDI0OSwgMTgsIDIxOSwgNjksIDIyNywgMTE1LCAyMDYsIDIyNCwgMjE4LCA4MiwgMjE2LCA3NCwgMjI3LCAKLSAgICAxMTUsIDI0MCwgNTEsIDIxNiwgNzQsIDIzMSwgMzUsIDIxNiwgNTcsIDIxMiwgMTIwLCAyMTMsIDcsIDEwOCwgMjEyLCAxMTcsIAotICAgIDIxMSwgMTY2LCAyMTIsIDEyMCwgMjEzLCA3LCAxNDcsIDIxMiwgMTE2LCAyMTEsIDE2NSwgMjQ0LCA4LCAyNDUsIDE4NCwgCi0gICAgMjExLCAzNCwgMjQ0LCAxMjMsIDIxNywgMjI3LCAyMDYsIDE5MiwgMTA1LCAyMTcsIDIyNywgMjA2LCAxOTAsIDIxNywgMTkwLCAKLSAgICAyMTcsIDIyNywgMjA2LCAxOTIsIDEwOCwgMjE3LCAyMjcsIDIwNiwgMTg5LCAyMTcsIDE4OSwgMjEzLCAxMTgsIDIwOCwgCi0gICAgMTA0LCAyMTEsIDg5LCAyMTEsIDE3LCAyNDcsIDYwLCAyNDYsIDE4MiwgMjQ3LCAxLCAyMjQsIDIyNCwgMjA0LCAxMDMsIAotICAgIDIyMywgMTgxLCAyMTEsIDkwLCA3NiwgMjM3LCAyMjMsIDI1MCwgMTIwLCAyMTEsIDkwLCA3NiwgMjE3LCAyMDgsIDI1MCwgCi0gICAgMTIwLCAyMTEsIDIzMCwgMjQxLCA4NCwgNzYsIDIzNywgMjIzLCAyNTAsIDEyMCwgMjQxLCA4NCwgNzYsIDIxNywgMjA4LCAKLSAgICAyNTAsIDEyMCwgMjQxLCA0NSwgMjExLCA5MCwgNzYsIDIxMSwgMzQsIDIxMSwgMjQ1LCAyMTIsIDEyMCwgMjM4LCAzLCAxNjcsIAotICAgIDIzMCwgMjQxLCAyMTMsIDk1LCAyMTIsIDEyMCwgMTY3LCAyMzAsIDI0MSwgMjE0LCAxOTEsIDI0NSwgMTg0LCAyMTMsIDEyNywgCi0gICAgMjMwLCAyNDEsIDI0NSwgMTExLCAyMTEsIDM1LCAyMDksIDEzOCwgMjExLCAxMDgsIDIyMCwgMCwgMjEwLCA4NCwgMjQ1LCAKLSAgICAyMzIsIDIxOSwgMjI2LCAyMTcsIDIyOCwgMjI0LCAyMjMsIDIxOCwgNzIsIDI1MCwgMTU2LCAyMTcsIDIyMiwgMjQ1LCAyMzIsIAotICAgIDI1MCwgMTcyLCAyMjMsIDQxLCAyMTIsIDE3MSwgOCwgNiwgMSwgMjM4LCAxMTksIDgsIDUsIDEsIDIzOCwgMTE5LCAyNDYsIAotICAgIDIwMSwgMjUxLCA4LCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgMjIyLCAyMDAsIDEsIDIyNywgCi0gICAgNjgsIDIyOCwgMTIsIDEsIDIzOSwgMTg3LCAyMzksIDE3OCwgMjI4LCAxMiwgMSwgMjM5LCAxODcsIDI0MCwgNjMsIDIyOCwgCi0gICAgMTIsIDEsIDIxNSwgMjI3LCAyMjgsIDEyLCAxLCAyMjcsIDQ5LCA3NywgMTMxLCAyNDgsIDQ1LCAyMTIsIDIzOCwgMjM4LCAKLSAgICA4MiwgMjI0LCAxNzMsIDIxNiwgNjQsIDIzOSwgODksIDIzOSwgODgsIDIzOSwgODcsIDIyMywgMTgzLCAyMDEsIDI0MywgCi0gICAgMjAxLCAyNDQsIDIwMSwgMjQ2LCAyMjYsIDI0MywgMjE1LCAyMzUsIDIyNiwgMjQ1LCAyMTUsIDIzNywgMjE5LCAzNywgMjI2LCAKLSAgICAyNDIsIDIxNSwgMjM0LCAyMjEsIDIyMywgMjI0LCA4NiwgMjA0LCAyLCAyMjYsIDI0NCwgMjE1LCAyMzYsIDIzOSwgMTExLCAKLSAgICAyMTksIDM2LCAyMDQsIDUyLCAyNDEsIDEwNywgMjM5LCA5OSwgMjI0LCAxNTQsIDIyMCwgMzIsIDIwNiwgMTk0LCA5NywgCi0gICAgMjI0LCAxNTQsIDI0NCwgMTQ1LCA5NywgOTYsIDIwOCwgODQsIDUzLCAzLCA1MiwgODAsIDk1LCA4NiwgMjA4LCA4NCwgNTMsIAotICAgIDMsIDUyLCA4MCwgOTUsIDExLCA0LCAyMzAsIDE5OSwgODIsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNjEsIAotICAgIDIyNywgMTg1LCAxNTUsIDIwNSwgMTY1LCAyMDUsIDU0LCAyMDQsIDI0MiwgMjA0LCAyMzEsIDIwNCwgMjIwLCAyMDQsIDIwOSwgCi0gICAgMjA0LCAxOTgsIDIwNCwgMTg3LCAyMDQsIDE3NiwgMjA1LCAxNjQsIDIwNSwgMTUzLCAyMDUsIDE0MiwgMjA1LCAxMzEsIAotICAgIDIwNSwgMTIwLCAyMDUsIDEwOSwgMjA1LCA5OCwgMjQ3LCAxMzAsIDIxOSwgMjQxLCA4MiwgMjQ4LCAxMywgMjAxLCAyNDUsIAotICAgIDksIDIsIDIyMSwgNTcsIDIwOSwgMTQxLCA5LCAyLCAyMjEsIDU3LCAxMTUsIDIyMSwgNTcsIDI0NywgMTYxLCAxMTUsIDI0NywgCi0gICAgMTYwLCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjEyLCA2NCwgMjQ2LCAxMDIsIDIwNiwgNjUsIDIwNSwgODcsIDIwNSwgNzYsIAotICAgIDIwNSwgNjUsIDIwNSwgNTMsIDIwNSwgNDIsIDIwNSwgMzEsIDIwNSwgMjAsIDIwNSwgOSwgMjA0LCAyNTQsIDIwNCwgMjQ2LCAKLSAgICAyMDQsIDI0NSwgMjA0LCAyNDQsIDIwNCwgMjQzLCAyMDQsIDI0MSwgMjA0LCAyNDAsIDIwNCwgMjM5LCAyMDQsIDIzOCwgCi0gICAgMjA0LCAyMzcsIDIwNCwgMjM2LCAyMDQsIDIzNSwgMjA0LCAyMzQsIDIwNCwgMjMzLCAyMDQsIDIzMiwgMjA0LCAyMzAsIAotICAgIDIwNCwgMjI5LCAyMDQsIDIyOCwgMjA0LCAyMjcsIDIwNCwgMjI2LCAyMDQsIDIyNSwgMjA0LCAyMjQsIDIwNCwgMjIzLCAKLSAgICAyMDQsIDIyMiwgMjA0LCAyMjEsIDIwNCwgMjE5LCAyMDQsIDIxOCwgMjA0LCAyMTcsIDIwNCwgMjE2LCAyMDQsIDIxNSwgCi0gICAgMjA0LCAyMTQsIDIwNCwgMjEzLCAyMDQsIDIxMiwgMjA0LCAyMTEsIDIwNCwgMjEwLCAyMDQsIDIwOCwgMjA0LCAyMDcsIAotICAgIDIwNCwgMjA2LCAyMDQsIDIwNSwgMjA0LCAyMDQsIDIwNCwgMjAzLCAyMDQsIDIwMiwgMjA0LCAyMDEsIDIwNCwgMjAwLCAKLSAgICAyMDQsIDE5OSwgMjA0LCAxOTcsIDIwNCwgMTk2LCAyMDQsIDE5NSwgMjA0LCAxOTQsIDIwNCwgMTkzLCAyMDQsIDE5MiwgCi0gICAgMjA0LCAxOTEsIDIwNCwgMTkwLCAyMDQsIDE4OSwgMjA0LCAxODgsIDIwNCwgMTg2LCAyMDQsIDE4NSwgMjA0LCAxODQsIAotICAgIDIwNCwgMTgzLCAyMDQsIDE4MiwgMjA0LCAxODEsIDIwNCwgMTgwLCAyMDQsIDE3OSwgMjA0LCAxNzgsIDIwNCwgMTc3LCAKLSAgICAyMDQsIDE3NSwgMjA0LCAxNzQsIDIwNCwgMTczLCAyMDQsIDE3MiwgMjA0LCAxNzEsIDIwNCwgMTcwLCAyMDQsIDE2OSwgCi0gICAgMjA0LCAxNjgsIDIwNCwgMTY3LCAyMDQsIDE2NiwgMjA1LCAxNjMsIDIwNSwgMTYyLCAyMDUsIDE2MSwgMjA1LCAxNjAsIAotICAgIDIwNSwgMTU5LCAyMDUsIDE1OCwgMjA1LCAxNTcsIDIwNSwgMTU2LCAyMDUsIDE1NSwgMjA1LCAxNTQsIDIwNSwgMTUyLCAKLSAgICAyMDUsIDE1MSwgMjA1LCAxNTAsIDIwNSwgMTQ5LCAyMDUsIDE0OCwgMjA1LCAxNDcsIDIwNSwgMTQ2LCAyMDUsIDE0NSwgCi0gICAgMjA1LCAxNDQsIDIwNSwgMTQzLCAyMDUsIDE0MSwgMjA1LCAxNDAsIDIwNSwgMTM5LCAyMDUsIDEzOCwgMjA1LCAxMzcsIAotICAgIDIwNSwgMTM2LCAyMDUsIDEzNSwgMjA1LCAxMzQsIDIwNSwgMTMzLCAyMDUsIDEzMiwgMjA1LCAxMzAsIDIwNSwgMTI5LCAKLSAgICAyMDUsIDEyOCwgMjA1LCAxMjcsIDIwNSwgMTI2LCAyMDUsIDEyNSwgMjA1LCAxMjQsIDIwNSwgMTIzLCAyMDUsIDEyMiwgCi0gICAgMjA1LCAxMjEsIDIwNSwgMTE5LCAyMDUsIDExOCwgMjA1LCAxMTcsIDIwNSwgMTE2LCAyMDUsIDExNSwgMjA1LCAxMTQsIAotICAgIDIwNSwgMTEzLCAyMDUsIDExMiwgMjA1LCAxMTEsIDIwNSwgMTEwLCAyMDUsIDEwOCwgMjA1LCAxMDcsIDIwNSwgMTA2LCAKLSAgICAyMDUsIDEwNSwgMjA1LCAxMDQsIDIwNSwgMTAzLCAyMDUsIDEwMiwgMjA1LCAxMDEsIDIwNSwgMTAwLCAyMDUsIDk5LCAyMDUsIAotICAgIDk3LCAyMDUsIDk2LCAyMDUsIDk1LCAyMDUsIDk0LCAyMDUsIDkzLCAyMDUsIDkyLCAyMDUsIDkxLCAyMDUsIDkwLCAyMDUsIAotICAgIDg5LCAyMDUsIDg4LCAyMDUsIDg2LCAyMDUsIDg1LCAyMDUsIDg0LCAyMDUsIDgzLCAyMDUsIDgyLCAyMDUsIDgxLCAyMDUsIAotICAgIDgwLCAyMDUsIDc5LCAyMDUsIDc4LCAyMDUsIDc3LCAyMDUsIDc1LCAyMDUsIDc0LCAyMDUsIDczLCAyMDUsIDcyLCAyMDUsIAotICAgIDcxLCAyMDUsIDcwLCAyMDUsIDY5LCAyMDUsIDY4LCAyMDUsIDY3LCAyMDUsIDY2LCAyMDUsIDY0LCAyMDUsIDYzLCAyMDUsIAotICAgIDYyLCAyMDUsIDYxLCAyMDUsIDYwLCAyMDUsIDU5LCAyMDUsIDU4LCAyMDUsIDU3LCAyMDUsIDU2LCAyMDUsIDU1LCAyMDUsIAotICAgIDUyLCAyMDUsIDUxLCAyMDUsIDUwLCAyMDUsIDQ5LCAyMDUsIDQ4LCAyMDUsIDQ3LCAyMDUsIDQ2LCAyMDUsIDQ1LCAyMDUsIAotICAgIDQ0LCAyMDUsIDQzLCAyMDUsIDQxLCAyMDUsIDQwLCAyMDUsIDM5LCAyMDUsIDM4LCAyMDUsIDM3LCAyMDUsIDM2LCAyMDUsIAotICAgIDM1LCAyMDUsIDM0LCAyMDUsIDMzLCAyMDUsIDMyLCAyMDUsIDMwLCAyMDUsIDI5LCAyMDUsIDI4LCAyMDUsIDI3LCAyMDUsIAotICAgIDI2LCAyMDUsIDI1LCAyMDUsIDI0LCAyMDUsIDIzLCAyMDUsIDIyLCAyMDUsIDIxLCAyMDUsIDE5LCAyMDUsIDE4LCAyMDUsIAotICAgIDE3LCAyMDUsIDE2LCAyMDUsIDE1LCAyMDUsIDE0LCAyMDUsIDEzLCAyMDUsIDEyLCAyMDUsIDExLCAyMDUsIDEwLCAyMDUsIAotICAgIDgsIDIwNSwgNywgMjA1LCA2LCAyMDUsIDUsIDIwNSwgNCwgMjA1LCAzLCAyMDUsIDIsIDIwNSwgMSwgMjA1LCAwLCAyMDQsIAotICAgIDI1NSwgMjA0LCAyNTMsIDIwNCwgMjUyLCAyMDQsIDI1MSwgMjA0LCAyNTAsIDIwNCwgMjQ5LCAyMDQsIDI0OCwgMjA0LCAKLSAgICAyNDcsIDgsIDYsIDEsIDM0LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjI1LCAxNzEsIAotICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDgwLCAKLSAgICAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCAKLSAgICA1LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAzLCA4MCwgCi0gICAgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjQ3LCAyOSwgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjQ3LCAyOSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIAotICAgIDEsIDIzNSwgMjA2LCAzLCAyMjUsIDE3MSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgCi0gICAgMTY1LCA4LCA1LCAxLCAyMjIsIDIwNiwgMywgMjA4LCAyMjgsIDU1LCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgCi0gICAgNTYsIDgsIDUsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIAotICAgIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgCi0gICAgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNiwgMSwgMjE1LCA5NCwgMywgODAsIDIyNywgMTE1LCA1NiwgCi0gICAgOCwgNSwgMSwgMjE1LCA5NCwgMywgODAsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDM0LCAzLCAyMjAsIAotICAgIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMzQsIDMsIDIyMCwgNjMsIAotICAgIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMzQsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgCi0gICAgMTg4LCAzLCA3MCwgODcsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgNzAsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAKLSAgICAyMzUsIDIwNiwgMywgNzAsIDg3LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAyMDgsIAotICAgIDIyNywgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIAotICAgIDYzLCAyNSwgNzAsIDg3LCAyNSwgMTY1LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCAKLSAgICA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMzAsIDE4NSwgCi0gICAgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIzMCwgMTg1LCAzLCA3MCwgODcsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMjI4LCAKLSAgICAxMzEsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIyNiwgMTg2LCAzLCAKLSAgICAyMDgsIDIyNywgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIwOCwgMjI3LCAKLSAgICA4LCA1LCAxLCAyMTcsIDEsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCAKLSAgICA1LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjA4LCAyMjcsIAotICAgIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMjUxLCAxMTAsIDMsIDIzNywgMjUzLCAKLSAgICA4LCA1LCAxLCAxNzEsIDE1OCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCAxNjUsIDgsIDUsIDEsIDIwNywgCi0gICAgMTc0LCAyMDYsIDE2NSwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDYsIDE2NSwgMywgMTY1LCA4LCA1LCAxLCAKLSAgICAyMTQsIDE5MywgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIxNCwgMTkzLCAzLCAxNjUsIDgsIDUsIDEsIDIzNiwgMTE1LCAyMTQsIAotICAgIDE5MywgMywgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNiwgMTE1LCAyMTQsIDE5MywgMywgMTY1LCAxMCwgMjEzLCAxMjcsIDg5LCAKLSAgICAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMzAsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjA0LCAKLSAgICA3MCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTI5LCAxMCwgMjEzLCAxMjcsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzMsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgNjgsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAyMTMsIDEwLCAyMTMsIDEyNywgODksIDMsIAotICAgIDIzNywgMTI4LCA4NywgMywgNzQsIDEwLCAyMTMsIDEyNywgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMDksIDEwLCAKLSAgICAyMTMsIDEyNywgMjIxLCAxNzksIDMsIDIyOSwgMTg5LCAxNzksIDEsIDIyOSwgMTE5LCA0NCwgMTA5LCAyMzAsIDU0LCA0NCwgCi0gICAgMTA5LCAyMjIsIDIwNSwgNDQsIDEwOSwgMjQ3LCAxMjUsIDQ0LCAxMDksIDIyMSwgMTMsIDQ0LCAxMDksIDIwNywgMjQ0LCAKLSAgICA0NCwgMTA5LCAyMjEsIDIyOCwgNDQsIDEwOSwgMjEwLCA2OSwgNDQsIDEwOSwgMjIzLCAxNjMsIDQ0LCAxMDksIDIxOSwgCi0gICAgMTg0LCA0NCwgMTA5LCAyMjYsIDE4NSwgNDQsIDEwOSwgMjAzLCAxMjQsIDQ0LCAxMDksIDE0NiwgNDQsIDEwOSwgMTU5LCAKLSAgICA0NCwgMTA5LCAyMDYsIDE2NCwgNDQsIDEwOSwgMjI3LCA2OSwgNDQsIDEwOSwgMjI3LCA3OCwgNDQsIDEwOSwgMjE1LCAxODYsIAotICAgIDQ0LCAxMDksIDIyMSwgMjEwLCA0NCwgMTA5LCAyMzAsIDE4NCwgNDQsIDEwOSwgMjEzLCA5MiwgNDQsIDEwOSwgMjExLCAKLSAgICAxNjcsIDQ0LCAxMDksIDE5NCwgNDQsIDEwOSwgMjM3LCAxNzEsIDQ0LCAxMDksIDIyOCwgMjI0LCA0NCwgNCwgMjMwLCA0MSwgCi0gICAgNDQsIDQsIDIyOSwgMTAwLCA0NCwgNCwgMjI5LCA4NywgNDQsIDQsIDIyOCwgMjA5LCA0NCwgNCwgMjI4LCAxNzQsIDQ0LCA0LCAKLSAgICAyMjksIDIwMSwgNDQsIDQsIDIyOSwgMTk4LCA0NCwgNCwgMjMwLCAxOCwgNDQsIDQsIDIyOSwgMjYsIDQ0LCA0LCAyMjksIDYsIAotICAgIDQ0LCA0LCAyMjksIDIxOSwgNDQsIDQsIDIyMiwgMjAyLCA0NCwgNCwgMjIyLCAxNTEsIDQ0LCA0LCAyMjIsIDE0NywgNDQsIAotICAgIDQsIDIyMiwgMTE2LCA0NCwgNCwgMjIyLCAxMDgsIDQ0LCA0LCAyMjIsIDE5MCwgNDQsIDQsIDIyMiwgMTg4LCA0NCwgNCwgCi0gICAgMjIyLCAxOTksIDQ0LCA0LCAyMjIsIDEyOCwgNDQsIDQsIDIyMiwgMTIzLCA0NCwgNCwgMjIyLCAxOTIsIDQ0LCA0LCAyNDcsIAotICAgIDkxLCA0NCwgNCwgMjQ2LCA3OSwgNDQsIDQsIDI0NiwgNjksIDQ0LCA0LCAyNDUsIDExMCwgNDQsIDQsIDI0NSwgNzYsIDQ0LCAKLSAgICA0LCAyNDYsIDIzOCwgNDQsIDQsIDI0NiwgMjMwLCA0NCwgNCwgMjQ3LCA4MCwgNDQsIDQsIDI0NSwgMjU0LCA0NCwgNCwgCi0gICAgMjQ1LCAxODAsIDQ0LCA0LCAyNDcsIDE1LCA0NCwgNCwgMjIxLCAxMCwgNDQsIDQsIDIyMCwgMjQ4LCA0NCwgNCwgMjIwLCAKLSAgICAyNDMsIDQ0LCA0LCAyMjAsIDIyNiwgNDQsIDQsIDIyMCwgMjE4LCA0NCwgNCwgMjIxLCAxLCA0NCwgNCwgMjIxLCAwLCA0NCwgCi0gICAgNCwgMjIxLCA3LCA0NCwgNCwgMjIwLCAyMzMsIDQ0LCA0LCAyMjAsIDIzMCwgNDQsIDQsIDIyMSwgNCwgNDQsIDQsIDIwNywgCi0gICAgMjQwLCA0NCwgNCwgMjA3LCAyMjAsIDQ0LCA0LCAyMDcsIDIxOSwgNDQsIDQsIDIwNywgMjA4LCA0NCwgNCwgMjA3LCAyMDUsIAotICAgIDQ0LCA0LCAyMDcsIDIzNiwgNDQsIDQsIDIwNywgMjM1LCA0NCwgNCwgMjA3LCAyMzksIDQ0LCA0LCAyMDcsIDIxOCwgNDQsIAotICAgIDQsIDIwNywgMjE3LCA0NCwgNCwgMjA3LCAyMzgsIDQ0LCA0LCAyMjEsIDIyNiwgNDQsIDQsIDIyMSwgMjEyLCA0NCwgNCwgCi0gICAgMjIxLCAyMTEsIDQ0LCA0LCAyMjEsIDE5NSwgNDQsIDQsIDIyMSwgMTk0LCA0NCwgNCwgMjIxLCAyMjIsIDQ0LCA0LCAyMjEsIAotICAgIDIyMSwgNDQsIDQsIDIyMSwgMjI1LCA0NCwgNCwgMjIxLCAxOTcsIDQ0LCA0LCAyMjEsIDE5NiwgNDQsIDQsIDIyMSwgMjI0LCAKLSAgICA0NCwgNCwgMjEwLCAxOCwgNDQsIDQsIDIwOSwgMiwgNDQsIDQsIDIwOCwgMjQyLCA0NCwgNCwgMjA3LCAyMDMsIDQ0LCA0LCAKLSAgICAyMDcsIDE2NSwgNDQsIDQsIDIwOSwgMTg3LCA0NCwgNCwgMjA5LCAxNzYsIDQ0LCA0LCAyMDksIDI1MCwgNDQsIDQsIDEzNSwgCi0gICAgNDQsIDQsIDIwOCwgMTQ4LCA0NCwgNCwgMjA5LCAyMDcsIDQ0LCA0LCAyMjMsIDEwNiwgNDQsIDQsIDIyMiwgMTAwLCA0NCwgCi0gICAgNCwgMjIyLCA3NSwgNDQsIDQsIDIyMSwgODQsIDQ0LCA0LCAyMjEsIDI1LCA0NCwgNCwgMjIyLCAyNDAsIDQ0LCA0LCAyMjIsIAotICAgIDIzNSwgNDQsIDQsIDIyMywgOTIsIDQ0LCA0LCAyMjEsIDE5MSwgNDQsIDQsIDIyMSwgMTgwLCA0NCwgNCwgMjIzLCA2NSwgCi0gICAgNDQsIDQsIDIxOSwgMTY4LCA0NCwgNCwgMjE4LCAxNjcsIDQ0LCA0LCAyMTgsIDEyOSwgNDQsIDQsIDIxNywgMTkxLCA0NCwgCi0gICAgNCwgMjE3LCAxNTcsIDQ0LCA0LCAyMTksIDM0LCA0NCwgNCwgMjE5LCAyMywgNDQsIDQsIDIxOSwgMTQ4LCA0NCwgNCwgMjE4LCAKLSAgICA2OSwgNDQsIDQsIDIxOCwgNDUsIDQ0LCA0LCAyMTksIDQ4LCA0NCwgNCwgMjI1LCAxNzUsIDQ0LCA0LCAyMjQsIDE1NSwgNDQsIAotICAgIDQsIDIyNCwgMTI1LCA0NCwgNCwgMjIzLCAyNDYsIDQ0LCA0LCAyMjMsIDE5MiwgNDQsIDQsIDIyNSwgMjAsIDQ0LCA0LCAKLSAgICAyMjUsIDgsIDQ0LCA0LCAyMjUsIDE0MCwgNDQsIDQsIDIyNCwgODIsIDQ0LCA0LCAyMjQsIDM1LCA0NCwgNCwgMjI1LCA2NywgCi0gICAgNDQsIDQsIDIwMywgMTEwLCA0NCwgNCwgMjAzLCAxMSwgNDQsIDQsIDIwMywgMiwgNDQsIDQsIDIwMiwgMjEzLCA0NCwgNCwgCi0gICAgMjAyLCAxODEsIDQ0LCA0LCAyMDMsIDUyLCA0NCwgNCwgMjAzLCA0OSwgNDQsIDQsIDIwMywgODksIDQ0LCA0LCAyMDIsIAotICAgIDI0NywgNDQsIDQsIDIwMiwgMjMyLCA0NCwgNCwgMjAzLCA2MiwgNDQsIDQsIDIxNiwgMjE2LCA0NCwgNCwgMjE2LCA1NywgCi0gICAgNDQsIDQsIDIxNiwgMywgNDQsIDQsIDIxNSwgMTQ1LCA0NCwgNCwgMjE1LCAxMTQsIDQ0LCA0LCAyMTYsIDE1OCwgNDQsIDQsIAotICAgIDIxNiwgMTM1LCA0NCwgNCwgMjE2LCAxOTcsIDQ0LCA0LCAyMTUsIDIyNywgNDQsIDQsIDIxNSwgMjA4LCA0NCwgNCwgMjE2LCAKLSAgICAxNjcsIDQ0LCA0LCAyMjgsIDExMiwgNDQsIDQsIDIyNywgMTQ4LCA0NCwgNCwgMjI3LCAxMzAsIDQ0LCA0LCAyMjYsIDIzOSwgCi0gICAgNDQsIDQsIDIyNiwgMjEwLCA0NCwgNCwgMjI3LCAyMzQsIDQ0LCA0LCAyMjcsIDIyNiwgNDQsIDQsIDIyOCwgODYsIDQ0LCA0LCAKLSAgICAyMjcsIDQ5LCA0NCwgNCwgMjI3LCAxOCwgNDQsIDQsIDIyNywgMjUxLCA0NCwgNCwgMjA2LCA4NSwgNDQsIDQsIDIwNSwgCi0gICAgMjMwLCA0NCwgNCwgMjA1LCAyMTUsIDQ0LCA0LCAyMDQsIDE2MywgNDQsIDQsIDIwNCwgMTU2LCA0NCwgNCwgMjA2LCA1NSwgCi0gICAgNDQsIDQsIDIwNiwgNTAsIDQ0LCA0LCAyMDYsIDgxLCA0NCwgNCwgMjA1LCAxODksIDQ0LCA0LCAyMDUsIDE3NiwgNDQsIDQsIAotICAgIDIwNiwgNjEsIDQ0LCA0LCAyMjcsIDY3LCA0NCwgNCwgMjI3LCA2MiwgNDQsIDQsIDIyNywgNjEsIDQ0LCA0LCAyMjcsIDU4LCAKLSAgICA0NCwgNCwgMjI3LCA1NywgNDQsIDQsIDIyNywgNjQsIDQ0LCA0LCAyMjcsIDYzLCA0NCwgNCwgMjI3LCA2NiwgNDQsIDQsIAotICAgIDIyNywgNjAsIDQ0LCA0LCAyMjcsIDU5LCA0NCwgNCwgMjI3LCA2NSwgNDQsIDQsIDIyNywgNzYsIDQ0LCA0LCAyMjcsIDcxLCAKLSAgICA0NCwgNCwgMjI3LCA3MCwgNDQsIDQsIDIyNywgNTQsIDQ0LCA0LCAyMjcsIDUzLCA0NCwgNCwgMjI3LCA3MywgNDQsIDQsIAotICAgIDIyNywgNzIsIDQ0LCA0LCAyMjcsIDc1LCA0NCwgNCwgMjI3LCA1NiwgNDQsIDQsIDIyNywgNTUsIDQ0LCA0LCAyMjcsIDc0LCAKLSAgICA0NCwgNCwgMjE1LCAxODQsIDQ0LCA0LCAyMTUsIDE3MywgNDQsIDQsIDIxNSwgMTcyLCA0NCwgNCwgMjE1LCAxNjUsIDQ0LCAKLSAgICA0LCAyMTUsIDE1OCwgNDQsIDQsIDIxNSwgMTgwLCA0NCwgNCwgMjE1LCAxNzksIDQ0LCA0LCAyMTUsIDE4MywgNDQsIDQsIAotICAgIDIxNSwgMTcxLCA0NCwgNCwgMjE1LCAxNzAsIDQ0LCA0LCAyMTUsIDE4MiwgNDQsIDQsIDIyMSwgMjA4LCA0NCwgNCwgMjIxLCAKLSAgICAyMDMsIDQ0LCA0LCAyMjEsIDIwMiwgNDQsIDQsIDIyMSwgMTk5LCA0NCwgNCwgMjIxLCAxOTgsIDQ0LCA0LCAyMjEsIDIwNSwgCi0gICAgNDQsIDQsIDIyMSwgMjA0LCA0NCwgNCwgMjIxLCAyMDcsIDQ0LCA0LCAyMjEsIDIwMSwgNDQsIDQsIDIyMSwgMjAwLCA0NCwgCi0gICAgNCwgMjIxLCAyMDYsIDQ0LCA0LCAyMzAsIDE4MCwgNDQsIDQsIDIzMCwgMTQxLCA0NCwgNCwgMjMwLCAxMzQsIDQ0LCA0LCAKLSAgICAyMzAsIDgyLCA0NCwgNCwgMjMwLCA2NCwgNDQsIDQsIDIzMCwgMTYxLCA0NCwgNCwgMjMwLCAxNTksIDQ0LCA0LCAyMzAsIAotICAgIDE3NCwgNDQsIDQsIDIzMCwgMTAxLCA0NCwgNCwgMjMwLCA5MSwgNDQsIDQsIDIzMCwgMTY3LCA0NCwgNCwgMjEzLCA4NSwgCi0gICAgNDQsIDQsIDIxMywgMTEsIDQ0LCA0LCAyMTMsIDYsIDQ0LCA0LCAyMTIsIDE5OSwgNDQsIDQsIDIxMiwgMTgyLCA0NCwgNCwgCi0gICAgMjEzLCA0MywgNDQsIDQsIDIxMywgNDEsIDQ0LCA0LCAyMTMsIDc0LCA0NCwgNCwgMjEyLCAyNDIsIDQ0LCA0LCAyMTIsIAotICAgIDIzNiwgNDQsIDQsIDIxMywgNTIsIDQ0LCA0LCAyMTEsIDE2MywgNDQsIDQsIDIxMSwgMTMyLCA0NCwgNCwgMjExLCAxMjgsIAotICAgIDQ0LCA0LCAyMTEsIDExOSwgNDQsIDQsIDIxMSwgMTE2LCA0NCwgNCwgMjExLCAxMzgsIDQ0LCA0LCAyMTEsIDEzNywgNDQsIAotICAgIDQsIDIxMSwgMTYyLCA0NCwgNCwgMjExLCAxMjQsIDQ0LCA0LCAyMTEsIDEyMywgNDQsIDQsIDIxMSwgMTQwLCA0NCwgNCwgCi0gICAgMjE1LCAzMywgNDQsIDQsIDIxMiwgMTYyLCA0NCwgNCwgMjEyLCAxNDIsIDQ0LCA0LCAyMTEsIDEwLCA0NCwgNCwgMjEwLCAKLSAgICAxNzksIDQ0LCA0LCAyMTQsIDE3NywgNDQsIDQsIDIxNCwgMTY1LCA0NCwgNCwgMjE1LCAxOCwgNDQsIDQsIDIxMiwgMTMsIAotICAgIDQ0LCA0LCAyMTEsIDI1MCwgNDQsIDQsIDIxNCwgMjE3LCA0NCwgNCwgMjM3LCAxNTcsIDQ0LCA0LCAyMzcsIDMsIDQ0LCA0LCAKLSAgICAyMzYsIDIzOSwgNDQsIDQsIDIzNiwgMjYsIDQ0LCA0LCAyMzYsIDEsIDQ0LCA0LCAyMzcsIDY3LCA0NCwgNCwgMjM3LCA0OCwgCi0gICAgNDQsIDQsIDIzNywgMTQ3LCA0NCwgNCwgMjM2LCAxMzYsIDQ0LCA0LCAyMzYsIDExNywgNDQsIDQsIDIzNywgNzYsIDQ0LCA0LCAKLSAgICAyMjgsIDIyMywgNDQsIDQsIDIyOCwgMjIyLCA0NCwgNCwgMjI4LCAyMTcsIDQ0LCA0LCAyMjgsIDIxNiwgNDQsIDQsIDIyOCwgCi0gICAgMjEzLCA0NCwgNCwgMjI4LCAyMTIsIDQ0LCA0LCAyMjgsIDIxOSwgNDQsIDQsIDIyOCwgMjE4LCA0NCwgNCwgMjI4LCAyMjEsIAotICAgIDQ0LCA0LCAyMjgsIDIxNSwgNDQsIDQsIDIyOCwgMjE0LCA0NCwgNCwgMjI4LCAyMjAsIDQ0LCA0LCAyMTIsIDIwNSwgMTQwLCAKLSAgICAxMDksIDIsIDIwMywgNzUsIDE0MCwgMTA5LCAyLCAyMTYsIDE4NiwgMTQwLCAxMDksIDIsIDIxNiwgMTAyLCAxMTQsIDEsIAotICAgIDIwNywgOTUsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAxNzMsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDE0NCwgODUsIAotICAgIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMjYsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjksIDExNSwgODUsIDEwOSwgMiwgCi0gICAgMjQ1LCAyNDksIDIyMiwgMTI4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ3LCA5MiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIAotICAgIDI0NiwgMTk5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ1LCAyNTQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDYsIDExNiwgCi0gICAgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyMCwgMjMzLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQ0LCAyMTIsIDg1LCAxMDksIAotICAgIDIsIDI0NSwgMjQ5LCAyMDcsIDIyOSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0MywgMTEzLCA4NSwgMTA5LCAyLCAyNDUsIAotICAgIDI0OSwgMjA3LCAyMjQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDEsIDIwMSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxMCwgCi0gICAgMjIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMDksIDEwOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDEzNSwgODUsIDEwOSwgCi0gICAgMiwgMjQ1LCAyNDksIDIwOSwgNDcsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMjEsIDE5MSwgODUsIDEwOSwgMiwgMjQ1LCAKLSAgICAyNDksIDI0OSwgMzIsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIDIwOCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgCi0gICAgNjksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTgsIDE4MCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyNCwgODIsIDg1LCAKLSAgICAxMDksIDIsIDI0NSwgMjQ5LCAyMDIsIDI0NywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxNSwgMjI3LCA4NSwgMTA5LCAyLCAKLSAgICAyNDUsIDI0OSwgMjI3LCA0OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwNSwgMTg5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgCi0gICAgMjEzLCA5MCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxMSwgMTY0LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE1LCAzNiwgCi0gICAgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDE1MiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOCwgMTEzLCA4NSwgMjIsIDIsIAotICAgIDI0NSwgMjQ5LCAyMTcsIDEyNiwgODUsIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE3LCA2NSwgODUsIDIzMSwgMzYsIAotICAgIDIyLCAyLCAyNDUsIDI0OSwgMjE1LCAxMDIsIDg1LCAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNSwgOTUsIDg1LCAKLSAgICAyMzEsIDM2LCAyMiwgMiwgMjQ1LCAyNDksIDIxNywgMTA2LCA4NSwgMjIsIDIsIDIyMCwgMzksIDg1LCAyMiwgMiwgMjUxLCAKLSAgICAyNDIsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAyMDMsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAxNTEsIDE3MiwgMSwgMjQ4LCAKLSAgICA3OSwgMjIyLCAxMTYsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAxOTAsIDE3MiwgMSwgMjQ4LCA3OSwgMjIyLCAxMjgsIDY3LCAKLSAgICAxLCAyNDgsIDc5LCAyMjIsIDIwMywgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTUxLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxMTYsIAotICAgIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDE5MCwgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTI4LCA2NywgMSwgMjUxLCA1NywgMjQ2LCAKLSAgICAyMzgsIDY3LCAxLCAyNTEsIDU3LCAyMDcsIDIwMywgNjcsIDEsIDI1MSwgNTcsIDEzNSwgNjcsIDEsIDI1MSwgNTcsIDIxOSwgCi0gICAgMTg0LCA2NSwgMSwgMjQwLCAxOTgsIDI0MCwgMTk3LCAyNDUsIDE4OCwgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5NywgMjQwLCAKLSAgICAxOTgsIDI0NSwgMTg4LCAxNDMsIDE0MiwgCisgICAgMCwgMjA4LCAyNDQsIDIzOCwgNDMsIDgxLCAyMTQsIDYzLCA4MSwgNDEsIDU0LCAyNDAsIDE5NCwgNTQsIDIxNiwgMjcsIDU0LCAKKyAgICAyNTEsIDg5LCAyNTEsIDEzLCA0OSwgMjE2LCAxMTUsIDUxLCAyMTYsIDExNSwgMjUwLCAxNjUsIDkzLCA1NCwgMjQ2LCA3MCwgCisgICAgMjMzLCAzMiwgMjM2LCAxODMsIDIwOCwgNzYsIDIwOSwgMTYsIDE3LCAxOTksIDgxLCAxNywgMTAyLCAxNywgMTA1LCAxNywgCisgICAgMTQ3LCAxNywgMTQ5LCAxNywgMTY0LCAxNywgMTg3LCAxNywgMjEwLCAxMzUsIDE3LCAxOTIsIDE3LCAyMTksIDExMywgMjQ2LCAKKyAgICA3OSwgMjEwLCAxNjcsIDIyNCwgMjQxLCA1NCwgMjM4LCAxMjIsIDU0LCAyMzUsIDY3LCA1NCwgMjE0LCA3OSwgODEsIDI0NiwgCisgICAgNjgsIDI1MCwgMTU1LCA4LCA2LCAxLCA2MiwgOCwgNiwgMSwgMjUwLCAxMDMsIDgsIDYsIDEsIDI0NywgMjIzLCA4LCA2LCAxLCAKKyAgICAyNDIsIDE1MywgOCwgNiwgMSwgNzIsIDgsIDYsIDEsIDIzOCwgNSwgOCwgNiwgMSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIzNCwgCisgICAgMjQ3LCA4LCA2LCAxLCA3MCwgOCwgNiwgMSwgMjI3LCAyNTEsIDgsIDYsIDEsIDIyNywgMTE4LCA4LCA2LCAxLCAxNTYsIDgsIAorICAgIDYsIDEsIDIyMywgMjQzLCA4LCA2LCAxLCAyMjAsIDIxNCwgOCwgNiwgMSwgNzQsIDgsIDYsIDEsIDIxNiwgMjI2LCA4LCA2LCAKKyAgICAxLCAyMTQsIDE2NywgOCwgNiwgMSwgMTQ2LCA4LCA2LCAxLCAyMTIsIDEyMiwgOCwgNiwgMSwgMjA3LCA4MywgOCwgNiwgMSwgCisgICAgNjYsIDgsIDYsIDEsIDIwMywgMTY4LCA4LCA2LCAxLCAyMDEsIDE0NywgOCwgNiwgMSwgMjAwLCAxOTUsIDgsIDYsIDEsIAorICAgIDIwMCwgMTIzLCA4LCA2LCAxLCAxOTksIDE1NywgNDksIDUyLCAxNTksIDIxMywgMTA2LCAyMDksIDE2LCA1MSwgNTIsIDE1OSwgCisgICAgMjQ2LCAxNDcsIDI1MSwgMjUxLCAxMjgsIDIyNCwgMTc2LCAyMzUsIDc0LCAyNTEsIDI1MSwgOCwgNCwgMSwgNjIsIDgsIDQsIAorICAgIDEsIDI1MCwgMTAzLCA4LCA0LCAxLCAyNDcsIDIyMywgOCwgNCwgMSwgMjQyLCAxNTMsIDgsIDQsIDEsIDcyLCA4LCA0LCAxLCAKKyAgICAyMzgsIDUsIDgsIDQsIDEsIDIzNiwgMTU2LCA4LCA0LCAxLCAyMzQsIDI0NywgOCwgNCwgMSwgNzAsIDgsIDQsIDEsIDIyNywgCisgICAgMjUxLCA4LCA0LCAxLCAyMjcsIDExOCwgOCwgNCwgMSwgMTU2LCA4LCA0LCAxLCAyMjMsIDI0MywgOCwgNCwgMSwgMjIwLCAKKyAgICAyMTQsIDgsIDQsIDEsIDc0LCA4LCA0LCAxLCAyMTYsIDIyNiwgOCwgNCwgMSwgMjE0LCAxNjcsIDgsIDQsIDEsIDE0NiwgOCwgCisgICAgNCwgMSwgMjEyLCAxMjIsIDgsIDQsIDEsIDIwNywgODMsIDgsIDQsIDEsIDY2LCA4LCA0LCAxLCAyMDMsIDE2OCwgOCwgNCwgCisgICAgMSwgMjAxLCAxNDcsIDgsIDQsIDEsIDIwMCwgMTk1LCA4LCA0LCAxLCAyMDAsIDEyMywgOCwgNCwgMSwgMTk5LCAxNTcsIDQ5LCAKKyAgICAyNDIsIDE5NiwgMTU5LCA4MywgMjI0LCAxNzYsIDUxLCAyNDIsIDE5NiwgMTU5LCAyMDUsIDI0MCwgMjE4LCAyNDAsIDIwOCwgCisgICAgMjQ0LCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgMjQ3LCA1OCwgNTQsIDIxNSwgNTYsIDU0LCAyNDIsIDE5NSwgNTQsIDIwMCwgCisgICAgNDIsIDU0LCAyNDgsIDQ2LCAxNDgsIDIxMSwgMTkzLCA1NCwgMjQxLCA3NCwgMjQzLCAxOSwgNTQsIDIzNywgMTI4LCAyMTcsIAorICAgIDI5LCAyMjgsIDk5LCAyMjUsIDIzLCA1MywgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIxOCwgMjE1LCA1NCwgMjA5LCAyMywgCisgICAgMjMzLCAzMywgMjEzLCAxNjEsIDU0LCAyMjIsIDIyOCwgMjQxLCAxNTUsIDU0LCAyMTUsIDExMiwgNTQsIDIwNywgMjEzLCAKKyAgICAxMDUsIDIwNywgMjEzLCAxNDcsIDI1MSwgMjM5LCAyNTEsIDI1MSwgMjIxLCAyMDksIDU0LCAyMTUsIDE2MywgNTQsIDEwMSwgCisgICAgMjQwLCAxODIsIDI0NywgNjksIDIwNywgMjEzLCAxMDIsIDIyMiwgMTM2LCAyMTcsIDI5LCAyMjgsIDk5LCAyMTMsIDQxLCAKKyAgICA1MywgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAyMDEsIDE2NCwgCisgICAgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAyMjgsIDUwLCAyMTQsIAorICAgIDc5LCA4MSwgOCwgNiwgMSwgMzUsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAxNjksIDgsIDYsIDEsIDM1LCAzLCAKKyAgICAyNDYsIDE0NiwgOCwgNiwgMSwgMzUsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAzNSwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMzUsIAorICAgIDMsIDIxMywgMjcsIDU2LCA4LCA2LCAxLCAyNTEsIDIyMSwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgNjksIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAzLCAxNjksIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDYsIDgsIAorICAgIDYsIDEsIDE5NywgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMjMzLCAxOSwgMywgCisgICAgMTY5LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NCwgOCwgNiwgCisgICAgMSwgMjM4LCA3NCwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxNjMsIDMsIDIzNSwgNzMsIDgsIAorICAgIDYsIDEsIDE2MywgMywgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQwLCAKKyAgICA4LCA2LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDIyMSwgMTksIDU0LCA4LCA2LCAxLCAxNjMsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIAorICAgIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAKKyAgICAxMDgsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAxNjksIDgsIDYsIDEsIDIwNiwgNTQsIDgsIDQsIDEsIAorICAgIDIxMCwgNzksIDIxMiwgMTIyLCA4LCA0LCAxLCAzNSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMzUsIDMsIDE2OSwgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAzNSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCA4LCA0LCAKKyAgICAxLCAzNSwgMywgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDI1MSwgMjIxLCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCA2OSwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIAorICAgIDE0NiwgOCwgNCwgMSwgMTk3LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAxNjksIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIAorICAgIDc0LCA4LCA0LCAxLCAyMzgsIDc0LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDE2MywgMywgMjQxLCA3NCwgMjQwLCAyMzUsIDU0LCA4LCA0LCAxLCAxNjMsIDMsIDk3LCAKKyAgICA4LCA0LCAxLCAxMDgsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDEwOCwgMywgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDI0NiwgCisgICAgMTQ2LCA4LCA0LCAxLCAxMDgsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAxNjksIDgsIDQsIDEsIDIwNiwgCisgICAgNTQsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAzNSwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAKKyAgICAzNSwgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDM1LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjQ3LCAyMjQsIDMsIDE2OSwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyNDcsIAorICAgIDIyNCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCA3MywgCisgICAgNTYsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgMTI1LCA4LCA2LCAKKyAgICAxLCAyNDIsIDE1NCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDk3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgOTcsIDgsIDYsIDEsIDE5NywgMywgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDE5NywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDE5NywgMywgMjQ4LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAxOTcsIDMsIDczLCA1NiwgOCwgNCwgMSwgMTk3LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjE3LCAxMTAsIAorICAgIDgsIDQsIDEsIDE5NywgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE5NywgMywgCisgICAgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0NiwgMTQ2LCAKKyAgICA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjQ4LCA1NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIAorICAgIDIzNiwgMTU3LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAKKyAgICAyNDcsIDY5LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDI0NiwgMTQ2LCAKKyAgICA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCA5NywgOCwgNCwgMSwgMjM0LCAKKyAgICAyNDgsIDMsIDk3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgCisgICAgMjMzLCAxOSwgMywgMjQ4LCA1NywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ4LCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgCisgICAgMjE3LCAxMTAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA3MywgNTYsIDgsIAorICAgIDQsIDEsIDI0MCwgMTgxLCA3MCwgOCwgNiwgMzMsIDIyOCwgMTQ5LCA4LCA0LCAzMywgMjI4LCAxNDksIDgsIDYsIDEsIDIyNywgCisgICAgMjUyLCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgCisgICAgMjQ3LCA2OSwgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDI0NywgNjksIDgsIDQsIDEsIDIyNiwgMzcsIDgsIDYsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxNjksIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAxNjksIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDY5LCA4LCAKKyAgICA0LCAxLCAyMjUsIDE5MywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAxMDEsIDI0MCwgMTgyLCA4LCA0LCAxLCAyMjUsIDE5MywgCisgICAgMywgMTAxLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDk3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgOTcsIDgsIAorICAgIDYsIDEsIDIyMCwgMjE1LCAzLCAxNjksIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAxNjksIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAKKyAgICAyNDcsIDY5LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0NywgMTI1LCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyMCwgMjE1LCAyMTUsIDMwLCAyNDcsIDIzNSwgCisgICAgMjUxLCAxMywgOCwgNiwgMSwgMjM4LCAxNjUsIDgsIDQsIDEsIDIzOCwgMTY1LCA4LCA2LCAxLCAxNjMsIDMsIDIyMiwgMjI4LCAKKyAgICA4LCA0LCAxLCAxNjMsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAxNjMsIDMsIDI0OCwgNTcsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjQ4LCA1NywgOCwgNiwgMSwgMTYzLCAzLCA1MywgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDUzLCAxNjksIDgsIDYsIDMzLCAKKyAgICAyMTcsIDEyMSwgOCwgNCwgMzMsIDIxNywgMTIxLCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAxNjksIDgsIDQsIDEsIDIxNCwgMzMsIAorICAgIDMsIDE2OSwgOCwgNiwgMSwgMjE0LCAzMywgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjQ3LCA2OSwgOCwgNiwgCisgICAgMSwgMjE0LCAzMywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMywgMywgMTY5LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTY5LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ2LCAxNDYsIAorICAgIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NywgNjksIDgsIDQsIDEsIAorICAgIDIxMiwgMTIzLCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIxMiwgMTIzLCAKKyAgICAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQ3LCA2OSwgCisgICAgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAKKyAgICAyMDcsIDg0LCAzLCA5NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgOTcsIDgsIDYsIDEsIDEwOCwgMywgMjA1LCAyNDAsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDEwOCwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAKKyAgICAyMjgsIDgsIDYsIDEsIDEwOCwgMywgMjQ4LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAxMDgsIDMsIDIxMywgMjcsIDU2LCA4LCA2LCAxLCAxMDgsIDMsIDUzLCAxNjksIDgsIAorICAgIDQsIDEsIDEwOCwgMywgNTMsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMTA4LCAzLCAyMTcsIAorICAgIDExMCwgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMjQ2LCAxNDYsIDgsIAorICAgIDYsIDEsIDIwMCwgMTI0LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAKKyAgICAyMDAsIDEyNCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDE2OSwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIAorICAgIDE2OSwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NiwgOCwgNiwgMSwgCisgICAgMTk5LCAxNTgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE2OCwgMjEyLCAKKyAgICAxMjIsIDgsIDQsIDEsIDY4LCAzLCA5NywgOCwgNiwgMSwgNjgsIDMsIDExNywgOCwgNiwgMSwgNjgsIDMsIDIwNSwgMTU1LCAKKyAgICA4LCA0LCAxLCA2OCwgMywgMjA1LCAxNTUsIDgsIDYsIDEsIDE1MCwgMTg3LCA4LCA0LCAxLCAxNTAsIDE4NywgOCwgNiwgMSwgCisgICAgMTc2LCA3NCwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDExNywgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDExNywgOCwgNiwgMSwgCisgICAgMjUxLCAxOTYsIDI0MiwgMTUzLCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgMTE3LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgMjA1LCAKKyAgICAxNTUsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMDUsIDE1NSwgOCwgNCwgMSwgMjA0LCAxODUsIDI0MSwgMTM2LCA4LCA2LCAKKyAgICAxLCAyMTMsIDEwNSwgNzIsIDgsIDYsIDEsIDIxMSwgMjE4LCA4LCA2LCAxLCAxNzYsIDcyLCA4LCA2LCAxLCAyMzgsIDYsIDMsIAorICAgIDExNywgOCwgNCwgMSwgMjM4LCA2LCAzLCAxMTcsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDYsIDEsIDIzNiwgCisgICAgNjAsIDgsIDQsIDEsIDIzMywgNjksIDgsIDYsIDEsIDIyOCwgNDEsIDgsIDYsIDEsIDIzMywgMTksIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAyMjcsIDExOSwgMywgMTE3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMTE3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMTQ4LCAKKyAgICA4LCA0LCAxLCAyMjUsIDg5LCAzLCA5NywgOCwgNiwgMSwgMjA0LCAxODUsIDIyMywgMjQzLCA4LCA2LCAxLCAyMjAsIDIxNSwgCisgICAgMywgNDksIDExNywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDE2OCwgNTEsIDIyNSwgMTYsIDgsIDYsIDEsIDE2MywgMywgMTAxLCAKKyAgICAyMDUsIDI0MCwgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNCwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNCwgOCwgNiwgMSwgCisgICAgMjE3LCAxMDUsIDgsIDQsIDEsIDIxNywgMTA1LCA4LCA2LCAxLCAyMTYsIDIyNywgMywgMTE3LCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNywgMywgMTE3LCA4LCAxLCAxOTksIDIxNCwgOCwgNiwgMSwgMTUwLCAxMDUsIDgsIDQsIDEsIDE1MCwgMTA1LCA4LCA2LCAKKyAgICAxLCAyMzgsIDk0LCA4LCAxLCAyMTMsIDEwNSwgMjM4LCA5NSwgMjI0LCA3NCwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjE2LCAKKyAgICAxODQsIDExNywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMTE3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAxMTcsIDgsIDYsIDEsIAorICAgIDIwNywgODQsIDMsIDIxMywgMTExLCAxMTcsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjQsIDgsIDQsIDEsIDEwOCwgMywgCisgICAgMjMzLCAxMjQsIDgsIDYsIDEsIDIwMywgMjIwLCA4LCA2LCAxLCAyMDMsIDE2OSwgMywgMTE3LCA4LCA2LCAxLCAyMDAsIAorICAgIDEyNCwgMywgMTE3LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMTE3LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgOTcsIDgsIDQsIAorICAgIDEsIDE5OSwgMTU4LCAzLCA5NywgOCwgNiwgMSwgMjM4LCA4LCA4LCA2LCAxLCAyMzgsIDksIDIxMywgMTA0LCA4LCA0LCAxLCAKKyAgICAyMzgsIDksIDIxMywgMTA0LCA4LCA0LCAxLCAyMzgsIDksIDMsIDIwNywgNiwgOCwgMSwgMTIwLCAzLCA5NywgOCwgNiwgMSwgCisgICAgMTUwLCAxNjQsIDgsIDQsIDEsIDE1MCwgMTY0LCA4LCAxLCAyMjgsIDUwLCAyMzUsIDEyMywgMjA4LCA3NywgMywgOTcsIDgsIAorICAgIDEsIDIwMCwgMTk4LCA4LCAxLCAyNDEsIDEyOSwgMjQ2LCAxMjEsIDgsIDEsIDIyNSwgNjEsIDI0NiwgMTIxLCA4LCAxLCAKKyAgICAyNTEsIDEwMiwgMjQ2LCAxMjEsIDgsIDEsIDIxMywgMTExLCAyNDYsIDEyMSwgOCwgNiwgMSwgMjM5LCA5NSwgMywgMjQ3LCAKKyAgICAxMjUsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCA0LCAxLCAxOTksIDE1OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzOSwgOTUsIAorICAgIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMjQsIDE0MiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDQsIDEsIDIyNywgMjUxLCA4LCAKKyAgICA0LCAxLCAyMjQsIDE0MiwgOCwgNiwgMSwgMjE5LCA5OSwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDQsIDEsIDIyNywgMjUxLCAKKyAgICA4LCA0LCAxLCAyMTksIDk5LCA4LCA2LCAxLCAzNSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDM1LCAzLCAyNDcsIDEyNSwgOCwgCisgICAgNiwgMSwgMjMzLCAxOSwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxNjMsIAorICAgIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAxNjMsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxMDgsIDMsIDI0NywgMTI1LCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDE2OSwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyNDcsIDEyNSwgOCwgCisgICAgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIzNSwgCisgICAgNzMsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDIwNCwgMTg1LCA3MiwgOCwgNiwgCisgICAgMSwgMzUsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgCisgICAgOCwgNiwgMSwgMzUsIDMsIDczLCA4OCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgMywgNzMsIDg4LCAyNiwgMjIyLCAKKyAgICAyMjgsIDgsIDYsIDEsIDI1MSwgMjIyLCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMjUxLCAyMjIsIDMsIDIyMiwgMjI4LCA4LCAKKyAgICA2LCAxLCAyMzYsIDE1NywgMywgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCA5NywgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDI0NywgMTI1LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDcsIDEyNSwgCisgICAgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAxNjMsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAxNjMsIDMsIDIxNywgMTExLCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDE2MywgMywgCisgICAgMjE3LCAxMTEsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjM4LCA5LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM4LCA5LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMzksIDk0LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgNCwgMSwgMTk5LCAxNTcsIDgsIDQsIDEsIDIzOSwgOTQsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDIzNiwgMTU3LCAzLCAxNjksIDgsIDYsIDEsIDIzMywgNjYsIDgsIDYsIDEsIDIwMCwgMTk4LCA4LCA2LCAxLCAKKyAgICAyMjAsIDIxNSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAyMTMsIAorICAgIDI3LCA4OCwgMjYsIDE2OSwgOCwgNCwgMSwgMzUsIDMsIDIxMywgMjcsIDg4LCAyNiwgMTY5LCA4LCA2LCAxLCAyNTEsIDIyMiwgCisgICAgMywgMTY5LCA4LCA0LCAxLCAyNTEsIDIyMiwgMywgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDIwOCwgNDcsIDI2LCAxNjksIDgsIAorICAgIDQsIDEsIDE2MywgMywgMjA4LCA0NywgMjYsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgCisgICAgMywgNTMsIDIzNSwgNzMsIDgsIDYsIDEsIDM1LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjI4LCAKKyAgICA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMTk3LCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCA1MywgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMTk3LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDIzMywgMTksIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMjMzLCAxOSwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCA1MywgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIAorICAgIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMjE0LCAzMywgMywgMjI4LCAKKyAgICA1MCwgMjQ4LCA1NywgOCwgNCwgMSwgMjE0LCAzMywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMTA4LCAzLCA1MywgCisgICAgMjM1LCA3MywgOCwgNCwgMSwgMTA4LCAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCAKKyAgICA4LCA0LCAxLCAxMDgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDcxLCA1NywgOCwgCisgICAgNCwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgNzEsIDU3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDYsIDcxLCA1NywgOCwgNCwgCisgICAgMSwgMjA3LCA4NCwgMywgMjQ2LCA3MSwgNTcsIDgsIDYsIDEsIDE5OSwgMjMyLCA4LCA0LCAxLCAxOTksIDIzMiwgOCwgNiwgCisgICAgMSwgMjM0LCAyNDgsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyMCwgCisgICAgMjE1LCAzLCAxNjgsIDUxLCAyMjUsIDE2LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQyLCAxOTgsIDgsIDYsIDEsIDIxNywgCisgICAgMywgOCwgNCwgMSwgMjE3LCAzLCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMTE3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMTE3LCAKKyAgICA4LCA2LCAxLCAzNSwgMywgNzMsIDU2LCA4LCA0LCAxLCAzNSwgMywgNzMsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgNjksIAorICAgIDgsIDQsIDEsIDE5NywgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMTYzLCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDQsIAorICAgIDEsIDE2MywgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjIyLCAKKyAgICAyMjgsIDgsIDQsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTYzLCAzLCA3MywgNTYsIDgsIAorICAgIDQsIDEsIDE2MywgMywgNzMsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA4OCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxNjMsIDMsIDczLCA4OCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDIwMCwgMTI0LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMjAsIDIxNSwgCisgICAgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyNDAsIDE4MSwgMjI3LCAyNTEsIAorICAgIDgsIDQsIDEsIDI0MSwgMjMwLCAyNDEsIDM0LCA4LCA0LCAxLCAyMTQsIDk4LCAyNDEsIDM0LCA4LCA2LCAxLCAzNSwgMywgCisgICAgOTcsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCA5NywgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDk3LCA4LCA2LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTQ4LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDIwNywgCisgICAgMTgzLCAyMDcsIDYsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyMDcsIDE4MywgMjA3LCA2LCA4LCA2LCAxLCAyMzUsIDEyMywgCisgICAgMjA4LCA3NiwgOCwgNCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDgsIDYsIDEsIDY4LCAzLCA5NywgOCwgNiwgMSwgMTA4LCAKKyAgICAxNDgsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMDMsIDE2OCwgOCwgNiwgMSwgMTk3LCAzLCA5NywgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICA5NywgOCwgNiwgMSwgMjI3LCAyNTIsIDMsIDk3LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgOTcsIDgsIDYsIDEsIDQsIDIxNCwgCisgICAgMTY4LCAzLCAyMzMsIDE4NywgMjA3LCA2LCA4LCA0LCAxLCAyMTQsIDE2OCwgMywgMjMzLCAxODcsIDIwNywgNiwgOCwgNiwgCisgICAgMSwgMjE0LCAzMywgMywgOTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDk3LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgOTcsIDgsIAorICAgIDQsIDEsIDIwMCwgMTI0LCAzLCA5NywgOCwgNCwgMSwgMjA0LCAxODUsIDYyLCA4LCA0LCAxLCAyNTEsIDExMiwgOCwgNCwgMSwgCisgICAgMjA0LCAxODUsIDI1MSwgMTEyLCA4LCA0LCAxLCA2OCwgMywgMTE3LCA4LCA0LCAxLCAxNzYsIDc0LCA4LCA0LCAxLCAyNDcsIAorICAgIDIyNCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMDcsIDYsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAKKyAgICAxMTcsIDgsIDQsIDEsIDIxMywgMTA1LCA3MiwgOCwgNCwgMSwgMjExLCAyMTgsIDgsIDQsIDEsIDIxMSwgMjE5LCAzLCAxMTcsIAorICAgIDgsIDQsIDEsIDE3NiwgNzIsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIDcyLCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCAKKyAgICAxOTcsIDMsIDExNywgOCwgNCwgMSwgMjQ2LCAxMTAsIDIxMywgMTA1LCAxNzYsIDcyLCA4LCA0LCAxLCAyNDAsIDE4MSwgCisgICAgMjI3LCAyNTIsIDMsIDk3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMTE3LCA4LCA0LCAxLCAxMzUsIDIzNiwgMTU2LCA4LCAxLCAKKyAgICA0LCA2LCAyMzYsIDE1NiwgOCwgNCwgMSwgMjM2LCA2MCwgOCwgNCwgMSwgMjEzLCAyMTQsIDIzMywgMTI0LCA4LCA0LCAxLCAKKyAgICAyMDQsIDE4NSwgMjM0LCAyNDcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIzNCwgMTA0LCAzLCAxMTcsIAorICAgIDgsIDQsIDEsIDIzMywgMTksIDMsIDk3LCA4LCA0LCAxLCAyMjgsIDQxLCA4LCAxLCA0LCA2LCA3MCwgOCwgNCwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDgsIDIyNiwgOCwgNCwgMSwgMjI1LCAxOTMsIAorICAgIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIyNCwgMjI2LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDQsIAorICAgIDEsIDIwNCwgMTg1LCAyMjMsIDI0NCwgMywgMTY4LCAyMjUsIDE2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMTE3LCA4LCA0LCAKKyAgICAxLCAyMjAsIDIxNSwgMywgNDksIDExNywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIxMywgMTExLCAxMTcsIDgsIDEsIDQsIDYsIAorICAgIDIyMCwgMjE0LCA4LCA0LCAxLCAyNDksIDcxLCA3NCwgOCwgMSwgNCwgNiwgMjE3LCAxMjEsIDgsIDQsIDEsIDI0NiwgMTEwLCAKKyAgICAyMTcsIDgzLCA4LCA0LCAxLCAyMTUsIDIyOSwgOCwgNCwgMSwgMjA0LCAxODUsIDE0NiwgOCwgNCwgMSwgMjA0LCAxODUsIAorICAgIDIxNCwgMzMsIDMsIDE2OCwgMjI1LCAxNiwgOCwgNCwgMSwgMjA0LCAxODUsIDIxNCwgMzMsIDMsIDExNywgOCwgNCwgMSwgCisgICAgMjE0LCAzMywgMywgMTY4LCAyMjUsIDE2LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMDcsIDYsIDgsIDQsIDEsIDIxNCwgMzMsIAorICAgIDMsIDIzNywgNjgsIDgsIDQsIDEsIDIxMywgMTA1LCAyMTQsIDMzLCAzLCAyMzcsIDY4LCA4LCAxLCA0LCA2LCAxNDYsIDgsIAorICAgIDEsIDQsIDYsIDIyOCwgNTAsIDE0NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDExNywgOCwgNCwgMSwgMjM4LCA5NCwgOCwgNCwgCisgICAgMSwgMjQwLCAxODEsIDIyNywgMjUyLCAzLCAyMDgsIDQ3LCAyNiwgMTE3LCA4LCA0LCAxLCAyMDgsIDE5MCwgMjEzLCAxMDUsIAorICAgIDIzOCwgOTQsIDgsIDQsIDEsIDIzOCwgOTUsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjA3LCA4MywgOCwgNCwgCisgICAgMSwgMjA3LCA4NCwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTA4LCAxNDgsIDgsIDQsIDEsIDIwMywgMjIwLCA4LCA0LCAKKyAgICAxLCAyMDMsIDE2OSwgMywgMTE3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAxNjgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDEsIAorICAgIDE0NywgOCwgNCwgMSwgMjA0LCAxODUsIDIwMCwgMTIzLCA4LCAxLCA0LCA2LCAyMDAsIDEyMywgOCwgNCwgMSwgMTk5LCAKKyAgICAxNTgsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjM4LCA4LCAKKyAgICA4LCA0LCAxLCAyMzgsIDksIDMsIDI0MiwgMTk4LCA4LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgMSwgMjE1LCAyMzYsIAorICAgIDIwMiwgMTg5LCAyMzYsIDIwNywgOCwgMSwgMjI4LCA1MCwgMjM1LCAxMjMsIDIwOCwgNzYsIDgsIDEsIDIwOCwgNTUsIDI0NywgCisgICAgMjIzLCA4LCAxLCAyNDgsIDE3MiwgMjQ2LCAxMjEsIDgsIDEsIDQsIDYsIDI1MCwgMTAzLCA4LCA0LCAxLCAyNDYsIDExMCwgCisgICAgMTc2LCA3MiwgOCwgMSwgNCwgNiwgMjM2LCAxNTcsIDMsIDExNywgOCwgMSwgNCwgNiwgMjM0LCAyNDcsIDgsIDQsIDEsIAorICAgIDIyNywgMjUyLCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjA0LCAxODUsIDIyNywgMTE4LCA4LCAxLCA0LCA2LCAxNTYsIDgsIAorICAgIDQsIDEsIDIxNCwgMTY4LCAzLCAxMTcsIDgsIDEsIDIzNSwgMTIzLCAyMDgsIDc3LCAzLCA5NywgOCwgMSwgMjEzLCAxMDUsIAorICAgIDIzNSwgMTIzLCAyMDgsIDc3LCAzLCA5NywgOCwgNCwgMSwgMjM5LCA5NSwgMjQxLCAzNCwgOCwgNCwgMSwgMjQxLCAxMDIsIAorICAgIDI0MSwgMzQsIDgsIDQsIDEsIDIzOSwgOTUsIDI0MSwgMzUsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMDUsIDM0LCAyNDEsIAorICAgIDM0LCA4LCA0LCAxLCAyMDYsIDE1MSwgMjQxLCAzNCwgOCwgNCwgMSwgMjA2LCAyMDgsIDI0MSwgMzUsIDMsIDI0MiwgMTk4LCAKKyAgICA4LCA0LCAxLCAyMzcsIDEyNSwgMjQxLCAzNCwgOCwgNCwgMSwgMjI0LCA0NCwgMjQxLCAzNCwgOCwgNCwgMSwgMjIzLCAyNDUsIAorICAgIDI0MSwgMzQsIDgsIDEsIDI0OCwgMTcyLCAyMTYsIDI2LCA4LCAxLCAyNDgsIDE4MCwgMjE2LCAyNiwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDIzNCwgMjQ4LCAzLCAyMzcsIDY4LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjM0LCAyNDgsIDMsIDIzNywgNjksIDI2LCAKKyAgICAyMDcsIDYsIDY3LCAxLCA0LCAyMzQsIDI0NywgNjcsIDEsIDQsIDIzNCwgMjQ4LCAzLCAxMTcsIDY3LCAxLCA0LCAyMjcsIAorICAgIDI1MSwgNjcsIDEsIDQsIDE0NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAxNDYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjE0LCAzMywgCisgICAgMywgMTE3LCA2NywgMSwgNCwgNiwgMjI4LCA1MCwgMTQ2LCA2NywgMSwgNCwgMjAxLCAxNDcsIDY3LCAxLCA0LCAyMDAsIAorICAgIDEyMywgNjcsIDEsIDIxNSwgMTQsIDY3LCAxLCA1MywgMjE1LCAxNCwgNjcsIDEsIDIwNCwgMTg1LCAyNDYsIDcwLCA2NywgMSwgCisgICAgMjUxLCAxMywgNjcsIDEsIDIxMywgMTA1LCAyNDYsIDcwLCA2NywgMSwgNTEsIDE2NywgMjEzLCAyNiwgNjcsIDEsIDQ5LCAKKyAgICAxNjcsIDIxMywgMjYsIDY3LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgNjcsIDEsIDIxMywgMTA1LCAyMzUsIDEyMywgMjA4LCAKKyAgICA3NiwgNjcsIDEsIDQ5LCAyNTAsIDIwMiwgNjcsIDEsIDUxLCAyNTAsIDIwMiwgNjcsIDEsIDExNSwgMjUwLCAyMDIsIDY3LCAKKyAgICAxLCAxMjcsIDI1MCwgMjAyLCA2NywgMSwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAyNDcsIDEyNSwgNjcsIDEsIDgzLCAyMjQsIAorICAgIDE3NiwgNjcsIDEsIDIyMiwgMjI4LCA2NywgMSwgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjM1LCA3NCwgMjUxLCAKKyAgICAyNTEsIDY3LCAxLCAxMjgsIDgzLCAyMjQsIDE3NiwgNjcsIDEsIDEyOCwgMjIyLCAyMjgsIDY3LCAxLCAxMjgsIDIzNSwgNzQsIAorICAgIDI1MSwgMjUxLCA2NywgMSwgMTI4LCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMDUsIDk1LCAyNDYsIDc5LCA2NywgMSwgCisgICAgMTY3LCAyMDUsIDk1LCAyNDYsIDc5LCA2NywgMSwgMjQ3LCA1NCwgNTEsIDE2NywgMjEzLCAyNiwgNjcsIDEsIDI0NywgNTQsIAorICAgIDQ5LCAxNjcsIDIxMywgMjYsIDY3LCAxLCAxMTUsIDIwNywgMTcsIDY3LCAxLCAxMjcsIDIwNywgMTcsIDY3LCAxLCA5MywgCisgICAgNTQsIDY3LCAxLCAyMjEsIDE1NywgNTQsIDI0OCwgNTcsIDczLCA1NiwgMjEzLCAyNywgNTYsIDIxNywgMTEwLCA0LCAyMDUsIAorICAgIDI0MCwgNTMsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIxMywgODksIDExNywgNjcsIDEsIDI0MiwgMjM1LCAyNTEsIAorICAgIDI1MSwgNjcsIDEsIDQsIDIzNiwgNjAsIDY3LCAxLCA0LCAxNTYsIDY3LCAxLCA0LCAyMTIsIDEyMiwgNjcsIDEsIDQsIDIwMCwgCisgICAgMTk1LCA2NywgMSwgNCwgMjEzLCAxMDUsIDIzNSwgMTIzLCAyMDgsIDc2LCA2NywgMSwgMjM4LCAyOSwgMTUwLCAxNDgsIDY3LCAKKyAgICAxLCAxMjIsIDE1MCwgMTQ4LCA2NywgMSwgMjIxLCAyMDYsIDE1MCwgMTQ4LCA2NywgMSwgMTI4LCAxNTAsIDE0OCwgNjcsIDEsIAorICAgIDIzOCwgMjgsIDE1MCwgMTQ4LCA2NywgMSwgMTk5LCAyNTUsIDI0MSwgMTI2LCAxNTAsIDgxLCA2NywgMSwgMjAwLCA3NiwgCisgICAgMjQxLCAxMjYsIDE1MCwgODEsIDY3LCAxLCAyMDIsIDE4NywgNjcsIDEsIDIwNCwgMSwgNjcsIDEsIDUzLCAyNTEsIDEzLCAKKyAgICA2NywgMSwgMTI4LCAxMjcsIDI1MCwgMjAyLCA2NywgMSwgMTI4LCAxMTUsIDI1MCwgMjAyLCA2NywgMSwgMTI4LCA0OSwgCisgICAgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDUxLCAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgMjEzLCAyNiwgNjcsIDEsIDEwMSwgMjM1LCAKKyAgICA3NCwgMjUxLCAyNTEsIDY3LCAxLCAxMDEsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgNjcsIDEsIDEwMSwgNTMsIDI1MSwgCisgICAgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDEyOCwgMjA1LCAyNDAsIDY3LCAxLCAyMTMsIDIyMCwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDI0OCwgMjQ0LCAxMjIsIDIwNSwgMTc0LCA2NywgMSwgMjM4LCAxNzEsIDEyMiwgMjA1LCAxNzQsIDY3LCAxLCAyNDgsIDI0NCwgCisgICAgMTI4LCAyMDUsIDE3NCwgNjcsIDEsIDIzOCwgMTcxLCAxMjgsIDIwNSwgMTc0LCA2NywgMSwgMjEwLCA1NiwgNjcsIDEsIAorICAgIDE3NiwgMjEwLCA1NiwgNjcsIDEsIDEyOCwgNDksIDQ4LCAzOCwgMjM1LCA3NCwgMjUxLCAyNTEsIDM4LCAyNTEsIDIzOSwgCisgICAgMjUxLCAyNTEsIDM4LCAyNDYsIDE0NywgMjUxLCAyNTEsIDM4LCAyMDUsIDI0MCwgMzgsIDIyMiwgMjI4LCAzOCwgMjE2LCAKKyAgICAyNDEsIDM4LCAyNDgsIDU3LCAzOCwgNzMsIDU2LCAzOCwgMjQxLCA3NCwgMzgsIDIzMywgMTg3LCA1NiwgMzgsIDIxMywgMjcsIAorICAgIDU2LCAzOCwgNTMsIDI1MSwgMjM5LCAyNTEsIDI1MSwgMzgsIDI0NywgMTI1LCAzOCwgODMsIDIyNCwgMTc3LCA1NiwgMzgsIAorICAgIDUzLCA4MywgMjI0LCAxNzcsIDU2LCAzOCwgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCAzOCwgMjQ3LCAxNDksIDM4LCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCAzOCwgMjA0LCAxODUsIDI0NiwgNzEsIDU2LCAzOCwgMjQ2LCA3MSwgNTYsIDM4LCAyMTMsIDEwNSwgCisgICAgMjQ2LCA3MSwgNTYsIDM4LCAyNDYsIDcxLCA4OCwgMjEzLCA0NiwgMzgsIDIzNSwgNzQsIDI1MSwgMjUyLCA1NywgMzgsIAorICAgIDI1MSwgMjM5LCAyNTEsIDI1MiwgNTcsIDM4LCA0OSwgMjA3LCAxOCwgNTcsIDM4LCA1MSwgMjA3LCAxOCwgNTcsIDM4LCA0OSwgCisgICAgMjUxLCA3MSwgNTYsIDM4LCAyMzMsIDEyNCwgMzgsIDQ5LCAxNjcsIDIxMywgMjcsIDU3LCAzOCwgMTE1LCAyMDcsIDE4LCAKKyAgICA1NywgMzgsIDEyNywgMjA3LCAxOCwgNTcsIDM4LCA5MywgMiwgNTcsIDM4LCAyMjEsIDE1NywgMiwgNTcsIDM4LCAyMTYsIAorICAgIDE4MiwgMjMzLCAxODcsIDU3LCAzOCwgMjEzLCAxMTEsIDIzMywgMTg3LCA1NywgMzgsIDczLCA1NywgMzgsIDI0MSwgNzUsIAorICAgIDU3LCAzOCwgMjEzLCAyNywgNTcsIDM4LCAyNDYsIDcxLCA1NywgMzgsIDI0NywgNjksIDM4LCAyMTcsIDExMCwgMzgsIDgzLCAKKyAgICAyMjQsIDE3NywgNTcsIDM4LCAyNDgsIDUxLCA1NywgMzgsIDIyOCwgNTAsIDUzLCAyNTAsIDIzNSwgNTcsIDM4LCAyNDcsIAorICAgIDEyNiwgNTcsIDM4LCAyNDYsIDE0NywgMjUxLCAyNTIsIDU3LCAzOCwgMjQ4LCA1OCwgNTcsIDM4LCAyMjgsIDUwLCAyNDgsIAorICAgIDU4LCA1NywgMzgsIDIwNSwgMjQxLCA1NywgMzgsIDIyMiwgMjI5LCA1NywgMzgsIDEyOCwgMjI0LCAxNzYsIDM4LCA1MywgCisgICAgMTI4LCAyMjQsIDE3NiwgMzgsIDIwNSwgMjQxLCAyMTYsIDI0MiwgMzgsIDIwOSwgMjUwLCAyMDgsIDQ3LCAyMTYsIDI0MiwgCisgICAgMzgsIDE2OCwgMjA4LCA0NywgMjE2LCAyNDIsIDM4LCAyMDksIDI1MCwgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCAxNjgsIAorICAgIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgNTEsIDE2NywgMjEzLCAyNywgNTcsIDM4LCAyMjgsIDUwLCAyNDgsIDUxLCA1NywgCisgICAgMzgsIDUyLCA1NywgMzgsIDIxMSwgMjAxLCA1NywgMzgsIDIwMCwgMTk2LCA1NiwgMzgsIDgzLCAyMDUsIDI0MCwgMzgsIDUzLCAKKyAgICAyMTYsIDI0MSwgMzgsIDIzNSwgNzQsIDE1MCwgODEsIDM4LCAyNTEsIDIzOSwgMTUwLCA4MSwgMzgsIDMxLCAyMTYsIDIwLCAKKyAgICAzOCwgMzEsIDIyNiwgNTgsIDM4LCAzMSwgMjQxLCA2OCwgMjA1LCAxNjIsIDM4LCAzMSwgMTk5LCAyMTksIDM4LCAyNDgsIAorICAgIDUxLCA1NiwgMzgsIDIzOCwgMTIyLCAyLCA1NywgMzgsIDUzLCA4MywgMjI0LCAxNzcsIDU3LCAzOCwgNDksIDI1MSwgNzEsIAorICAgIDU3LCAzOCwgMjE4LCAyMTUsIDIwNSwgMjQxLCA1NiwgMzgsIDIzMywgMTkzLCA1NiwgMzgsIDI1MSwgMTE3LCAxNjAsIDIwNSwgCisgICAgMTg2LCA1NiwgMzgsIDQ5LCA1MSwgNTUsIDU3LCAzOCwgMTgyLCA1NSwgNTcsIDM4LCAyMzUsIDgwLCAyMjcsIDE2MSwgMzgsIAorICAgIDUxLCAyNTAsIDIwMywgNTYsIDM4LCA0OSwgMTY3LCAyMTMsIDI3LCA1NiwgMzgsIDIzNywgMTIyLCAzOCwgMjAwLCAxOTYsIAorICAgIDU3LCAzOCwgNDksIDI1MCwgMjAzLCA1NywgMzgsIDUxLCAyNTAsIDIwMywgNTcsIDM4LCA1MSwgMjUwLCAyMDMsIDI2LCAKKyAgICAxMTUsIDI1MCwgMjAzLCA1NywgMzgsIDUxLCAxNjcsIDIxMywgMjcsIDU2LCAzOCwgNzMsIDg4LCAyMTMsIDQ2LCAzOCwgCisgICAgMjUwLCAxNjYsIDU3LCAzOCwgNTMsIDIxMywgMjcsIDU3LCAzOCwgMTk5LCAyNywgNTYsIDM4LCA1MywgMjQ4LCA1OCwgNTcsIAorICAgIDM4LCA1MywgMjQ4LCA1NywgMzgsIDUzLCAyMjIsIDIyOCwgMzgsIDUzLCAyMjIsIDIyOSwgNTcsIDM4LCA1MywgMjA1LCAKKyAgICAyNDAsIDM4LCA1MywgMjI4LCA1MCwgMjQ4LCA1NywgMzgsIDUzLCA4NywgNTUsIDU3LCAzOCwgOCwgNCwgMSwgNjIsIDM4LCAKKyAgICA4LCA0LCAxLCA3MiwgMzgsIDgsIDQsIDEsIDcwLCAzOCwgOCwgNCwgMSwgNzQsIDM4LCA4LCA0LCAxLCA2NiwgMzgsIDgsIDQsIAorICAgIDEsIDI0NywgMjIzLCAzOCwgOCwgNCwgMSwgMjQyLCAxNTMsIDM4LCA4LCA0LCAxLCAyMzQsIDI0NywgMzgsIDgsIDQsIDEsIAorICAgIDIyMywgMjQzLCAzOCwgOCwgNCwgMSwgMTQ2LCAzOCwgOCwgNCwgMSwgMjA3LCA4MywgMzgsIDgsIDQsIDEsIDIwMywgMTY4LCAKKyAgICAzOCwgOCwgNCwgMSwgMjAwLCAxOTUsIDMxLCA2LCAxLCAyMzQsIDkyLCAzMSwgNCwgMSwgMjM0LCA5MiwgMzEsIDYsIDEsIAorICAgIDI1MCwgMjM0LCAyMTIsIDE2LCAzMSwgNCwgMSwgMjUwLCAyMzQsIDIxMiwgMTYsIDMxLCAyMTgsIDkzLCA1NCwgMzEsIDIyNCwgCisgICAgNTQsIDIxOCwgOTMsIDU0LCAzMSwgNiwgMSwgMjE2LCAxNjcsIDI0MSwgNDIsIDMxLCA0LCAxLCAyMTYsIDE2NywgMjQxLCAKKyAgICA0MiwgMzEsIDE5OSwgMjE5LCAzMSwgNCwgMjEzLCAxMDUsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDQsIDIzOSwgCisgICAgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA0LCAyMTMsIDEwNSwgMjM5LCAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCAKKyAgICA5OSwgMzEsIDIxNCwgNzksIDgxLCAzMSwgNiwgMSwgMTk5LCAyMjUsIDMxLCAyMDUsIDE2MiwgMzEsIDI0MSwgNjgsIDIwNSwgCisgICAgMTYyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwNSwgMTYyLCAzMSwgMjUxLCA1NiwgMjA2LCAxNzcsIDMxLCA2LCAxLCAKKyAgICAyMzgsIDEyNSwgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIyOCwgNDIsIAorICAgIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjA1LCAKKyAgICAxNjIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAKKyAgICAyMDUsIDE2MiwgMzEsIDYsIDEsIDI1MSwgMTEyLCAzMSwgNiwgMSwgMjQ4LCAyMDgsIDMxLCA2LCAxLCAyMzYsIDYwLCAzMSwgCisgICAgNiwgMSwgMjQxLCAxMzYsIDMxLCA2LCAxLCAyMzgsIDEyNCwgMzEsIDYsIDEsIDE5OSwgODAsIDMxLCA2LCAxLCAyMzgsIDc5LCAKKyAgICAzMSwgNiwgMSwgMjA2LCA4OCwgMzEsIDYsIDEsIDIyOCwgNDEsIDMxLCA2LCAxLCAyMjcsIDU0LCAzMSwgNiwgMSwgMjI1LCAKKyAgICA4NywgMzEsIDYsIDEsIDIyMSwgNDEsIDMxLCA2LCAxLCAyMTgsIDEzMywgMzEsIDYsIDEsIDIwMCwgMTY5LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MSwgMzEsIDYsIDEsIDIxNSwgMjA0LCAzMSwgNiwgMSwgMjEzLCA5MCwgMzEsIDYsIDEsIDIwOSwgMTYzLCAzMSwgCisgICAgNiwgMSwgMjA2LCAyMjEsIDMxLCA2LCAxLCAyMDMsIDIyMCwgMzEsIDYsIDEsIDIxNSwgMjI5LCAzMSwgNiwgMSwgMjQ2LCAKKyAgICAyMzYsIDMxLCA2LCAxLCAyMTQsIDIzNSwgMzEsIDYsIDEsIDIxNywgODMsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyNDEsIAorICAgIDY3LCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjcsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjA1LCAxNjIsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDEyNSwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIAorICAgIDIyOCwgNDIsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMDUsIDE2MiwgMzEsIAorICAgIDQsIDEsIDI1MSwgMTEyLCAzMSwgNCwgMSwgMjQ4LCAyMDgsIDMxLCA0LCAxLCAyMzYsIDYwLCAzMSwgNCwgMSwgMjQxLCAKKyAgICAxMzYsIDMxLCA0LCAxLCAyMzgsIDEyNCwgMzEsIDQsIDEsIDE5OSwgODAsIDMxLCA0LCAxLCAyMzgsIDc5LCAzMSwgNCwgMSwgCisgICAgMjA2LCA4OCwgMzEsIDQsIDEsIDIyOCwgNDEsIDMxLCA0LCAxLCAyMjcsIDU0LCAzMSwgNCwgMSwgMjI1LCA4NywgMzEsIDQsIAorICAgIDEsIDIyMSwgNDEsIDMxLCA0LCAxLCAyMTgsIDEzMywgMzEsIDQsIDEsIDIwMCwgMTY5LCAzMSwgNCwgMSwgMjE3LCA4MSwgCisgICAgMzEsIDQsIDEsIDIxNSwgMjA0LCAzMSwgNCwgMSwgMjEzLCA5MCwgMzEsIDQsIDEsIDQ3LCAyMDksIDE2MywgMzEsIDQsIDEsIAorICAgIDIwOSwgMTYzLCAzMSwgNCwgMSwgMjA2LCAyMjEsIDMxLCA0LCAxLCAyMDMsIDIyMCwgMzEsIDQsIDEsIDIxNSwgMjI5LCAzMSwgCisgICAgNCwgMSwgMjQ2LCAyMzYsIDMxLCA0LCAxLCAyMTQsIDIzNSwgMzEsIDQsIDEsIDIxNywgODMsIDMxLCA0LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyNDEsIDY3LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjcsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMDUsIAorICAgIDE2MiwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIwNSwgMTYyLCAzMSwgCisgICAgNiwgMjI3LCA4MywgOTksIDMxLCAyNDgsIDIwOSwgOTksIDMxLCAyMDYsIDg5LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAyMzMsIAorICAgIDE4NywgOTksIDMxLCAyMDMsIDIyMSwgMywgMjUxLCAyMzksIDI2LCAyMzMsIDE4NywgOTksIDMxLCAyMDMsIDIyMSwgMywgCisgICAgMjQxLCA3NSwgMjYsIDIzMywgMTg3LCA5OSwgMzEsIDIxNSwgMjMwLCA5OSwgMzEsIDIxNSwgMjA1LCA5OSwgMzEsIDIyNywgCisgICAgODMsIDk5LCAzMSwgMSwgMjUwLCAyMzQsIDIyNiwgNjIsIDMxLCA0LCAxLCAyNTAsIDIzNCwgMjI2LCA2MiwgMzEsIDEsIAorICAgIDIwOCwgODYsIDMxLCA0LCAxLCAyMDgsIDg2LCAzMSwgMSwgMjQxLCA0MiwgMzEsIDQsIDEsIDI0MSwgNDIsIDMxLCAxLCAKKyAgICAyMjYsIDYyLCAzMSwgNCwgMSwgMjI2LCA2MiwgMzEsIDEsIDIxMiwgMTYsIDMxLCA0LCAxLCAyMTIsIDE2LCA4NSwgNiwgMSwgCisgICAgMjEwLCA1NywgODUsIDQsIDEsIDIxMCwgNTcsIDg1LCA2LCAxLCAyMzcsIDEzMiwgODUsIDQsIDEsIDIzNywgMTMyLCA4NSwgCisgICAgNiwgMSwgMjI2LCAxOTAsIDg1LCA0LCAxLCAyMjYsIDE5MCwgODUsIDYsIDEsIDIzMywgMTc4LCA4NSwgNCwgMSwgMjMzLCAKKyAgICAxNzgsIDg1LCA2LCAxLCAyMzYsIDU1LCA4NSwgNCwgMSwgMjM2LCA1NSwgODUsIDYsIDEsIDIxMCwgMjMsIDg1LCA0LCAxLCAKKyAgICAyMTAsIDIzLCA4NSwgNiwgMSwgMjQxLCAxNTIsIDg1LCA0LCAxLCAyNDEsIDE1MiwgMzEsIDIyNywgNTUsIDk5LCAzMSwgCisgICAgMjEzLCA5MSwgOTksIDMxLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCAxLCAxOTksIDIyNSwgMzEsIDYsIDIwNiwgODksIAorICAgIDk5LCAzMSwgMjI0LCAyNCwgMjM4LCAxMjUsIDk5LCAzMSwgMjEzLCAxMDUsIDIyNCwgMjQsIDIzOCwgMTI1LCA5OSwgMzEsIAorICAgIDYsIDEsIDIxMCwgOCwgMzEsIDQsIDEsIDIxMCwgOCwgMzEsIDYsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDYsIDEsIAorICAgIDIxMiwgMTMsIDMxLCA0LCAxLCAyMTIsIDEzLCAzMSwgMjEzLCA5MSwgMywgMjA4LCA0NywgOTksIDMxLCA2LCAyMTMsIDEwNSwgCisgICAgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgMjM5LCAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDYsIAorICAgIDIxMywgMTA1LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzNywgNiwgMSwgMjI4LCAxNzksIDMsIDIzNSwgCisgICAgNzMsIDM3LCA2LCAxLCAyMjgsIDQ1LCAzNywgNiwgMSwgMjQwLCAyMjgsIDM3LCA2LCAxLCAyMzUsIDEzMiwgMzcsIDYsIDEsIAorICAgIDIwNCwgMTcsIDIyOCwgMTc4LCAzNywgNiwgMSwgMjM5LCA5MCwgMzcsIDYsIDEsIDI0NywgMjMzLCA3MCwgMzcsIDYsIDEsIAorICAgIDIwMCwgOSwgMzcsIDYsIDEsIDIyNywgMjI3LCAzNywgNiwgMSwgMjI0LCAxNDEsIDM3LCA2LCAxLCAyMTksIDkxLCAzNywgNiwgCisgICAgMSwgMjA1LCAyMCwgMzcsIDYsIDEsIDIyNiwgMTExLCAzNywgNiwgMSwgMjMzLCAxOSwgMywgMjM1LCA3MywgMzcsIDYsIDEsIAorICAgIDIwOSwgMjUwLCA2NiwgMzcsIDYsIDEsIDIzOSwgODYsIDM3LCA2LCAxLCA2MiwgMzcsIDYsIDEsIDI0OSwgOCwgMzcsIDYsIAorICAgIDEsIDIwMywgNTksIDM3LCA2LCAxLCAyMzUsIDE4NSwgMzcsIDYsIDEsIDI0MSwgMTc1LCAzNywgNiwgMSwgMjI4LCAxNzgsIAorICAgIDM3LCA2LCAxLCAxOTksIDY4LCAzNywgNiwgMSwgMTk5LCA4OSwgMzcsIDYsIDEsIDcwLCAzNywgNiwgMSwgMjA5LCAyNTAsIAorICAgIDcwLCAzNywgNiwgMSwgMTYxLCAzNywgNiwgMSwgMjM4LCAyMDksIDM3LCA2LCAxLCAyMzgsIDE5MCwgMzcsIDYsIDEsIDIzOCwgCisgICAgMTc5LCAzNywgNiwgMSwgNzQsIDM3LCA2LCAxLCAyMTYsIDczLCAzNywgNiwgMSwgMjM4LCAxMTUsIDM3LCA2LCAxLCAyMzgsIAorICAgIDEwNCwgMzcsIDYsIDEsIDIwNiwgMjAxLCAzNywgNiwgMSwgNjYsIDM3LCA2LCAxLCAyMzgsIDI0OCwgMzcsIDYsIDEsIDE0NCwgCisgICAgMzcsIDYsIDEsIDIwNSwgMjYsIDM3LCA2LCAxLCAyNDcsIDgsIDM3LCA2LCAxLCAyMTAsIDExNCwgMzcsIDYsIDEsIDIxMCwgCisgICAgNjgsIDM3LCA2LCAxLCAyMzQsIDE2NSwgNTQsIDM3LCA2LCAxLCAyMDAsIDI5LCAzNywgNiwgMSwgMjA5LCAyMywgNTQsIDM3LCAKKyAgICA2LCAxLCA3MiwgMzcsIDYsIDEsIDE5OSwgMjExLCAzNywgNiwgMSwgMTgzLCAzNywgNCwgMSwgNjIsIDM3LCA0LCAxLCAyNDksIAorICAgIDgsIDM3LCA0LCAxLCAyMDMsIDU5LCAzNywgNCwgMSwgMjM1LCAxODUsIDM3LCA0LCAxLCAyNDEsIDE3NSwgMzcsIDQsIDEsIAorICAgIDIyOCwgMTc4LCAzNywgNCwgMSwgMTk5LCA2OCwgMzcsIDQsIDEsIDE5OSwgODksIDM3LCA0LCAxLCA3MCwgMzcsIDQsIDEsIAorICAgIDIwOSwgMjUwLCA3MCwgMzcsIDQsIDEsIDE2MSwgMzcsIDQsIDEsIDIzOCwgMjA5LCAzNywgNCwgMSwgMjM4LCAxOTAsIDM3LCAKKyAgICA0LCAxLCAyMzgsIDE3OSwgMzcsIDQsIDEsIDc0LCAzNywgNCwgMSwgMjE2LCA3MywgMzcsIDQsIDEsIDIzOCwgMTE1LCAzNywgCisgICAgNCwgMSwgMjM4LCAxMDQsIDM3LCA0LCAxLCAyMDYsIDIwMSwgMzcsIDQsIDEsIDY2LCAzNywgNCwgMSwgMjM4LCAyNDgsIDM3LCAKKyAgICA0LCAxLCAxNDQsIDM3LCA0LCAxLCAyMDUsIDI2LCAzNywgNCwgMSwgMjQ3LCA4LCAzNywgNCwgMSwgMjEwLCAxMTQsIDM3LCAKKyAgICA0LCAxLCAyMTAsIDY4LCAzNywgNCwgMSwgMjM0LCAxNjUsIDU0LCAzNywgNCwgMSwgMjAwLCAyOSwgMzcsIDQsIDEsIDIwOSwgCisgICAgMjMsIDU0LCAzNywgNCwgMSwgNzIsIDM3LCA0LCAxLCAxOTksIDIxMSwgMzcsIDQsIDEsIDE4MywgMzcsIDQsIDEsIDIyOCwgCisgICAgMTc5LCAzLCAyMzUsIDczLCAzNywgNCwgMSwgMjI4LCA0NSwgMzcsIDQsIDEsIDI0MCwgMjI4LCAzNywgNCwgMSwgMjM1LCAKKyAgICAxMzIsIDM3LCA0LCAxLCAyMDQsIDE3LCAyMjgsIDE3OCwgMzcsIDQsIDEsIDIzOSwgOTAsIDM3LCA0LCAxLCAyNDcsIDIzMywgCisgICAgNzAsIDM3LCA0LCAxLCAyMDAsIDksIDM3LCA0LCAxLCAyMjcsIDIyNywgMzcsIDQsIDEsIDIyNCwgMTQxLCAzNywgNCwgMSwgCisgICAgMjE5LCA5MSwgMzcsIDQsIDEsIDIwNSwgMjAsIDM3LCA0LCAxLCAyMjYsIDExMSwgMzcsIDQsIDEsIDIzMywgMTksIDMsIAorICAgIDIzNSwgNzMsIDM3LCA0LCAxLCAyMDksIDI1MCwgNjYsIDM3LCA0LCAxLCAyMzksIDg2LCAzNywgNiwgMSwgMjE3LCA4MywgCisgICAgMzcsIDQsIDEsIDIxNywgODMsIDM3LCA2LCAxLCAyMDAsIDY1LCAzNywgNCwgMSwgMjAwLCA2NSwgMzcsIDYsIDEsIDIyOCwgCisgICAgMzksIDcyLCAzNywgNCwgMSwgMjI4LCAzOSwgNzIsIDM3LCA2LCAxLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAKKyAgICAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA2LCAxLCAyMjgsIDM5LCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAyMjgsIAorICAgIDM5LCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA2LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDgsIDE3NSwgCisgICAgMTk5LCAxODEsIDM3LCA2LCAxLCAyMjgsIDM5LCAyNDgsIDE3NSwgMTk5LCAxODEsIDM3LCA0LCAxLCAyMjgsIDM5LCAyNDgsIAorICAgIDE3NSwgMTk5LCAxODEsIDM3LCA2LCAxLCAyMjYsIDMxLCAzNywgNCwgMSwgMjI2LCAzMSwgMzcsIDYsIDEsIDIxNCwgMjM1LCAKKyAgICAzNywgNCwgMSwgMjE0LCAyMzUsIDM3LCA2LCAxLCAyMzcsIDYzLCAzNywgNCwgMSwgMjM3LCA2MywgMzcsIDYsIDEsIDIyNywgCisgICAgMjUzLCAzNywgNCwgMSwgMjI3LCAyNTMsIDM3LCA2LCAxLCAyMjcsIDI1NCwgMywgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCAKKyAgICAzNywgNCwgMSwgMjI3LCAyNTQsIDMsIDUzLCAyMzUsIDc0LCAyNTEsIDI1MSwgMzcsIDYsIDEsIDIwNCwgMjAsIDM3LCA0LCAKKyAgICAxLCAyMDQsIDIwLCAzNywgNiwgMSwgMjEyLCAyMjEsIDIxNywgODMsIDM3LCA0LCAxLCAyMTIsIDIyMSwgMjE3LCA4MywgMzcsIAorICAgIDYsIDEsIDIxNywgODQsIDMsIDIwNSwgMjEwLCAzNywgNCwgMSwgMjE3LCA4NCwgMywgMjA1LCAyMTAsIDM3LCA2LCAxLCAKKyAgICAyMTcsIDExLCAzNywgNCwgMSwgMjE3LCAxMSwgMzcsIDYsIDEsIDIyNiwgNjIsIDM3LCA0LCAxLCAyMjYsIDYyLCAzNywgCisgICAgMjA2LCA0OSwgNTQsIDM4LCAzNywgMjA1LCAyMTAsIDM4LCAzNywgMjE2LCAxODMsIDM4LCAzNywgMjQxLCAyNDIsIDIxNSwgCisgICAgMTA4LCAzOCwgMzcsIDIxNCwgMjI5LCAyMTUsIDEwOCwgMzgsIDM3LCAyMTUsIDkyLCAzOCwgMzcsIDIzMywgODMsIDIwNiwgCisgICAgNDksIDU0LCAzOCwgMzcsIDIyMSwgMTY4LCA1NCwgMzcsIDYsIDEsIDIwOSwgMjUwLCAyMzMsIDE5LCAzLCAyMDcsIDYsIDM3LCAKKyAgICA0LCAxLCAyMDksIDI1MCwgMjMzLCAxOSwgMywgMjA3LCA2LCAzNywgNiwgMSwgMjEwLCAxNjMsIDU0LCAzNywgNCwgMSwgCisgICAgMjEwLCAxNjMsIDU0LCAzNywgNiwgMSwgMjM4LCAxMTYsIDMsIDIwNiwgMTEsIDM3LCA0LCAxLCAyMzgsIDExNiwgMywgMjA2LCAKKyAgICAxMSwgMzcsIDYsIDEsIDIzNSwgMTg2LCAzLCAyMDMsIDIxOSwgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyMDMsIDIxOSwgMzcsIAorICAgIDYsIDEsIDIzNSwgMTg2LCAzLCA5NywgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCA5NywgMzcsIDYsIDEsIDIzNSwgMTg2LCAzLCAKKyAgICAxMDEsIDExNywgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDE5OSwgNjksIDMsIDI0MSwgCisgICAgMTE5LCAzNywgNCwgMSwgMTk5LCA2OSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAxOTksIDkwLCAzLCAyNDEsIDExOSwgMzcsIAorICAgIDQsIDEsIDE5OSwgOTAsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjI3LCAxMDgsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgCisgICAgMjI3LCAxMDgsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjI3LCAxMDgsIDMsIDgzLCA5NywgMzcsIDQsIDEsIDIyNywgMTA4LCAKKyAgICAzLCA4MywgOTcsIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgOTcsIDM3LCA0LCAxLCAyMjcsIDEwOCwgMywgOTcsIDM3LCA2LCAKKyAgICAxLCAyNDksIDYwLCAxNjEsIDM3LCA0LCAxLCAyNDksIDYwLCAxNjEsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMjQxLCAxMTksIAorICAgIDM3LCA0LCAxLCAyMzgsIDE4MCwgMywgMjQxLCAxMTksIDM3LCA2LCAzMywgMjM4LCAxODAsIDIzNSwgMTg1LCAzNywgNCwgCisgICAgMzMsIDIzOCwgMTgwLCAyMzUsIDE4NSwgMzcsIDYsIDEsIDIxNiwgNzQsIDMsIDEwMSwgMTE3LCAzNywgNCwgMSwgMjE2LCAKKyAgICA3NCwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAyNTIsIDIsIDE0NCwgMzcsIDQsIDEsIDI1MiwgMiwgMTQ0LCAzNywgNiwgMSwgCisgICAgMjM4LCAxMDUsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM4LCAxMDUsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjA2LCAKKyAgICAyMDIsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjA2LCAyMDIsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjA4LCA2OCwgNjYsIAorICAgIDM3LCA0LCAxLCAyMDgsIDY4LCA2NiwgMzcsIDYsIDEsIDIwOCwgNjgsIDEwOCwgMywgOTcsIDM3LCA0LCAxLCAyMDgsIDY4LCAKKyAgICAxMDgsIDMsIDk3LCAzNywgNiwgMSwgMjM0LCAyMzYsIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjM0LCAyMzYsIDMsIDI0MSwgCisgICAgMTE5LCAzNywgNiwgMzMsIDIwNiwgMjAyLCAyMDUsIDI2LCAzNywgNCwgMzMsIDIwNiwgMjAyLCAyMDUsIDI2LCAzNywgNiwgCisgICAgMSwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyNDcsIDksIAorICAgIDMsIDgzLCA5NywgMzcsIDQsIDEsIDI0NywgOSwgMywgODMsIDk3LCAzNywgNiwgMSwgMjEwLCAzNCwgMzcsIDQsIDEsIDIxMCwgCisgICAgMzQsIDM3LCA2LCAxLCAyNTIsIDIsIDI0NywgOCwgMzcsIDQsIDEsIDI1MiwgMiwgMjQ3LCA4LCAzNywgNiwgMSwgMjUyLCAyLCAKKyAgICAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjUyLCAyLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgMSwgMjE2LCAKKyAgICAxNzQsIDM3LCA2LCAxLCAxOTksIDY5LCAzLCAyNDgsIDU3LCAzNywgNCwgMSwgMTk5LCA2OSwgMywgMjQ4LCA1NywgMzcsIDYsIAorICAgIDEsIDIyNywgMTA4LCAzLCAxMTcsIDM3LCA0LCAxLCAyMjcsIDEwOCwgMywgMTE3LCAzNywgNiwgMSwgMjM4LCAyMTAsIDMsIAorICAgIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMTE3LCAzNywgNCwgCisgICAgMSwgMjM4LCAxODAsIDMsIDExNywgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDE4MCwgCisgICAgMywgMjA3LCA2LCAzNywgNiwgMSwgMjI2LCAyMDEsIDI0NywgOCwgMzcsIDQsIDEsIDIyNiwgMjAxLCAyNDcsIDgsIDM3LCA2LCAKKyAgICAxLCAyMzgsIDE5MSwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAxOTEsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIxNiwgCisgICAgMTc0LCAzNywgNiwgMSwgMzUsIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAzNSwgMywgMjQ4LCA1NywgMzcsIDYsIDEsIDM1LCAzLCAKKyAgICAyNDEsIDc0LCAzNywgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDM3LCA2LCAzMywgMzUsIDIyOCwgMTc4LCAzNywgNCwgMzMsIAorICAgIDM1LCAyMjgsIDE3OCwgMzcsIDYsIDEsIDIyOCwgMTc5LCAzLCAyNDgsIDU3LCAzNywgNCwgMSwgMjI4LCAxNzksIDMsIDI0OCwgCisgICAgNTcsIDM3LCA2LCAxLCAyMTEsIDIxOCwgMzcsIDQsIDEsIDIxMSwgMjE4LCAzNywgNiwgMSwgMjExLCAyMTksIDMsIDI0MSwgCisgICAgNzQsIDM3LCA0LCAxLCAyMTEsIDIxOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE5OSwgNjksIDMsIDI0MSwgNzQsIDM3LCA0LCAKKyAgICAxLCAxOTksIDY5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTk5LCA5MCwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDE5OSwgOTAsIAorICAgIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAyNTIsIDIsIDIzOSwgOTAsIDM3LCA0LCAxLCAyNTIsIDIsIDIzOSwgOTAsIDM3LCA2LCAKKyAgICAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOCwgMzcsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCAzNywgNiwgMSwgMjMzLCAKKyAgICAxOSwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxNjMsIDMsIDI0MSwgNzQsIAorICAgIDM3LCA0LCAxLCAxNjMsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAyNDksIDcxLCA3NCwgMzcsIDQsIDEsIDI0OSwgNzEsIDc0LCAKKyAgICAzNywgNiwgMSwgMjQ5LCA3MSwgMTYzLCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjQ5LCA3MSwgMTYzLCAzLCAyNDEsIDc0LCAKKyAgICAzNywgNiwgMSwgMTk3LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMTk3LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOCwgMzcsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjgsIDM3LCA2LCAxLCAxMDgsIDMsIDI0MSwgNzQsIDM3LCA0LCAKKyAgICAxLCAxMDgsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxMDgsIDMsIDUzLCAxNjksIDM3LCA0LCAxLCAxMDgsIDMsIDUzLCAxNjksIAorICAgIDM3LCA2LCAxLCAyNDcsIDksIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyNDcsIDksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAKKyAgICAyMzUsIDE4NiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDAsIAorICAgIDMwLCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjAwLCAzMCwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDIzNSwgMTg2LCAzLCAKKyAgICAyMDgsIDQ3LCAyNiwgMTE3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDIwOCwgNDcsIDI2LCAxMTcsIDM3LCA2LCAxLCAyMzQsIAorICAgIDIzNiwgMywgMTE3LCAzNywgNCwgMSwgMjM0LCAyMzYsIDMsIDExNywgMzcsIDYsIDEsIDIzNCwgMjM2LCAzLCA5NywgMzcsIAorICAgIDQsIDEsIDIzNCwgMjM2LCAzLCA5NywgMzcsIDYsIDEsIDIyNiwgNzIsIDI0MSwgMTc1LCAzNywgNCwgMSwgMjI2LCA3MiwgCisgICAgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMjYsIDcyLCAyNDAsIDIyOCwgMzcsIDQsIDEsIDIyNiwgNzIsIDI0MCwgMjI4LCAzNywgCisgICAgNiwgMSwgMjI2LCA3MiwgMTk5LCAxOCwgMzcsIDQsIDEsIDIyNiwgNzIsIDE5OSwgMTgsIDM3LCA2LCAxLCAyMjYsIDcyLCAKKyAgICAyMzksIDgyLCAzNywgNCwgMSwgMjI2LCA3MiwgMjM5LCA4MiwgMzcsIDYsIDEsIDIyNiwgNzIsIDIyNCwgMTQxLCAzNywgNCwgCisgICAgMSwgMjI2LCA3MiwgMjI0LCAxNDEsIDM3LCA2LCAxLCAyMjYsIDcyLCAyMTksIDkxLCAzNywgNCwgMSwgMjI2LCA3MiwgMjE5LCAKKyAgICA5MSwgMzcsIDYsIDEsIDIyNiwgNzIsIDIwOSwgODksIDM3LCA0LCAxLCAyMjYsIDcyLCAyMDksIDg5LCAzNywgNiwgMSwgCisgICAgMjI2LCA3MiwgMjA1LCAyMDQsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMDUsIDIwNCwgMzcsIDYsIDEsIDIxMywgMTA1LCAxOTksIAorICAgIDg5LCAzNywgNCwgMSwgMjEzLCAxMDUsIDE5OSwgODksIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgMTE3LCAzNywgNCwgMSwgCisgICAgMjM4LCAyMTAsIDMsIDExNywgMzcsIDYsIDEsIDIyNCwgMjIzLCAzNywgNCwgMSwgMjI0LCAyMjMsIDM3LCA2LCAxLCAyMTMsIAorICAgIDkzLCAzNywgNCwgMSwgMjEzLCA5MywgMzcsIDYsIDEsIDIwMCwgOTgsIDM3LCA0LCAxLCAyMDAsIDk4LCAzNywgNiwgMSwgCisgICAgMjE0LCAxNTksIDM3LCA0LCAxLCAyMTQsIDE1OSwgMzcsIDYsIDEsIDIwMSwgNjQsIDM3LCA0LCAxLCAyMDEsIDY0LCAzNywgCisgICAgNiwgMSwgMjUxLCAxMzgsIDE2MSwgMzcsIDQsIDEsIDI1MSwgMTM4LCAxNjEsIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgMTAxLCAKKyAgICAxMTcsIDM3LCA0LCAxLCAyMzgsIDIxMCwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDE4MCwgMywgMTAxLCAxMTcsIAorICAgIDM3LCA0LCAxLCAyMzgsIDE4MCwgMywgMTAxLCAxMTcsIDM3LCA2LCAxLCAyMTYsIDc0LCAzLCAyNDEsIDExOSwgMzcsIDQsIAorICAgIDEsIDIxNiwgNzQsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjEwLCAzNSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMTAsIAorICAgIDM1LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCA0OSwgMTE3LCAzNywgNCwgMSwgMjM4LCAxODAsIDMsIAorICAgIDQ5LCAxMTcsIDM3LCA2LCAxLCAyMzksIDc1LCAzNywgNCwgMSwgMjM5LCA3NSwgMzcsIDYsIDEsIDI0MSwgMjI0LCAzNywgNCwgCisgICAgMSwgMjQxLCAyMjQsIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzgsIDIxMCwgMywgMjQxLCAKKyAgICAxMTksIDE4NCwgNiwgMSwgMjUwLCAxMDksIDE4NCwgNiwgMSwgMjQ4LCAyMjQsIDE4NCwgNiwgMSwgMjM1LCAxNDksIDE4NCwgCisgICAgNiwgMSwgMjQyLCA1OCwgMTg0LCA2LCAxLCAyMzksIDUsIDE4NCwgNiwgMSwgMTk5LCAxMTQsIDE4NCwgNiwgMSwgMjM4LCAKKyAgICAyNDEsIDE4NCwgNiwgMSwgMjM4LCA4MSwgMTg0LCA2LCAxLCAxMzgsIDE4NCwgNiwgMSwgMTk5LCA2OCwgMTg0LCA2LCAxLCAKKyAgICAyMjgsIDg2LCAxODQsIDYsIDEsIDIyNCwgMTQ1LCAxODQsIDYsIDEsIDIwMCwgMTczLCAxODQsIDYsIDEsIDI0NywgMTkwLCAKKyAgICAxODQsIDYsIDEsIDIyNiwgMjQzLCAxODQsIDYsIDEsIDIzMywgMjA3LCAxODQsIDYsIDEsIDIyNywgMjQ4LCAxODQsIDYsIDEsIAorICAgIDIzNSwgMTk2LCAxODQsIDYsIDEsIDI0NiwgMjU0LCAxODQsIDYsIDEsIDIyMiwgNDAsIDE4NCwgNiwgMSwgMjAwLCA5LCAKKyAgICAxODQsIDYsIDEsIDIxOCwgMjAxLCAxODQsIDYsIDEsIDIxMCwgMTE0LCAxODQsIDYsIDEsIDIwMiwgMTkzLCAxODQsIDYsIDEsIAorICAgIDI0NywgMzcsIDE4NCwgNiwgMSwgMjE2LCA1NCwgMTg0LCA2LCAxLCAyMjcsIDIxMCwgMTg0LCA2LCAxLCAyMTMsIDI1MiwgCisgICAgMTg0LCA2LCAxLCAyMTEsIDE4MCwgMTg0LCA2LCAxLCAyMDIsIDIzOCwgMTg0LCA2LCAxLCAyMDUsIDIwNywgMTg0LCA2LCAxLCAKKyAgICAyMTMsIDE1NCwgMTg0LCA2LCAxLCAyNDYsIDkxLCAxODQsIDYsIDEsIDE5OSwgMjUwLCAxODQsIDYsIDEsIDIxNSwgMTM5LCAKKyAgICAxODQsIDYsIDEsIDIyNiwgMjU0LCAxODQsIDYsIDEsIDIxNywgMTA4LCAxODQsIDYsIDEsIDIzNywgMTM0LCAxODQsIDY3LCAKKyAgICAxLCA0OSwgMTY3LCAyMTMsIDI2LCAxODQsIDI1MSwgMTMsIDE4NCwgMjM4LCAxODMsIDgxLCAxODQsIDIzOCwgNDMsIDgxLCAKKyAgICAxODQsIDI0NiwgNzAsIDE4NCwgMjE0LCA3OSwgODEsIDE4NCwgMjUyLCAzLCA4MSwgMTg0LCA0LCAxLCAyNTAsIDEwOSwgCisgICAgMTg0LCA0LCAxLCAyNDgsIDIyNCwgMTg0LCA0LCAxLCAyMzUsIDE0OSwgMTg0LCA0LCAxLCAyNDIsIDU4LCAxODQsIDQsIDEsIAorICAgIDIzOSwgNSwgMTg0LCA0LCAxLCAxOTksIDExNCwgMTg0LCA0LCAxLCAyMzgsIDI0MSwgMTg0LCA0LCAxLCAyMzgsIDgxLCAKKyAgICAxODQsIDQsIDEsIDEzOCwgMTg0LCA0LCAxLCAxOTksIDY4LCAxODQsIDQsIDEsIDIyOCwgODYsIDE4NCwgNCwgMSwgMjI0LCAKKyAgICAxNDUsIDE4NCwgNCwgMSwgMjAwLCAxNzMsIDE4NCwgNCwgMSwgMjQ3LCAxOTAsIDE4NCwgNCwgMSwgMjI2LCAyNDMsIDE4NCwgCisgICAgNCwgMSwgMjMzLCAyMDcsIDE4NCwgNCwgMSwgMjI3LCAyNDgsIDE4NCwgNCwgMSwgMjM1LCAxOTYsIDE4NCwgNCwgMSwgMjQ2LCAKKyAgICAyNTQsIDE4NCwgNCwgMSwgMjIyLCA0MCwgMTg0LCA0LCAxLCAyMDAsIDksIDE4NCwgNCwgMSwgMjE4LCAyMDEsIDE4NCwgNCwgCisgICAgMSwgMjEwLCAxMTQsIDE4NCwgNCwgMSwgMjAyLCAxOTMsIDE4NCwgNCwgMSwgMjQ3LCAzNywgMTg0LCA0LCAxLCAyMTYsIDU0LCAKKyAgICAxODQsIDQsIDEsIDIyNywgMjEwLCAxODQsIDQsIDEsIDIxMywgMjUyLCAxODQsIDQsIDEsIDIxMSwgMTgwLCAxODQsIDQsIDEsIAorICAgIDIwMiwgMjM4LCAxODQsIDQsIDEsIDIwNSwgMjA3LCAxODQsIDQsIDEsIDIxMywgMTU0LCAxODQsIDQsIDEsIDI0NiwgOTEsIAorICAgIDE4NCwgNCwgMSwgMTk5LCAyNTAsIDE4NCwgNCwgMSwgMjE1LCAxMzksIDE4NCwgNCwgMSwgMjI2LCAyNTQsIDE4NCwgNCwgMSwgCisgICAgMjE3LCAxMDgsIDE4NCwgNCwgMSwgMjM3LCAxMzQsIDE4NCwgNCwgMzMsIDIzOSwgNiwgMTk5LCAyNTAsIDE4NCwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDE4NCwgMjMzLCAzMywgMjEzLCA0NSwgMTg0LCAyMzgsIDc3LCA1NCwgMjI1LCAyNywgMTg0LCAyMzgsIAorICAgIDc3LCA1NCwgMTg0LCAyMzksIDE1NywgNTQsIDExMywgMjUxLCAyNTIsIDIzOCwgNzIsIDExMywgMjUxLCAyNTIsIDIxMSwgCisgICAgMTgxLCAxMTMsIDI1MSwgMjUyLCAyMTAsIDkyLCAxMTMsIDI1MSwgMjUyLCAxOTksIDEwMCwgMjE0LCAxNDIsIDExMywgMjUxLCAKKyAgICAyNTIsIDE5OSwgMTAwLCAyMzYsIDc5LCAxMTMsIDI1MSwgMjUyLCAyMDUsIDIyMiwgMTEzLCAyNTEsIDI1MiwgMjEzLCAxMDIsIAorICAgIDExMywgMjUxLCAyNTIsIDE5OSwgOTgsIDExMywgMjUxLCAyNTIsIDIxNiwgMTAwLCAxMTMsIDI1MSwgMjUyLCAyMDAsIDIyLCAKKyAgICAxMTMsIDI1MSwgMjUyLCAyMDYsIDEyOSwgMTEzLCAyNTEsIDI1MiwgMjM1LCAyNDcsIDExMywgMjUxLCAyNTIsIDIzNSwgCisgICAgMjQ4LCAyMjEsIDMsIDExMywgMjUxLCAyNTIsIDIzNSwgMjQ1LCAxMTMsIDI1MSwgMjUyLCAyMTQsIDE0MywgMjE2LCAxMjksIAorICAgIDExMywgMjUxLCAyNTIsIDIwNiwgMTcyLCAyMzYsIDgsIDExMywgMjUxLCAyNTIsIDIxNiwgNzksIDExMywgMjUxLCAyNTIsIAorICAgIDI1MCwgMTQ4LCAyMzQsIDIyOCwgMTEzLCAyNTEsIDI1MiwgMjIxLCAxMywgMTEzLCAyNTEsIDI1MiwgMjIyLCAyMDMsIDExMywgCisgICAgMjUxLCAyNTIsIDIyMiwgMjksIDExMywgMjUxLCAyNTIsIDIyMiwgMzAsIDIyNiwgMjU1LCAxMTMsIDI1MSwgMjUyLCAyNDEsIAorICAgIDI1MSwgMTEzLCAyNTEsIDI1MiwgMjE0LCAxNTQsIDExMywgMjUxLCAyNTIsIDIwNiwgMTcyLCAyMTQsIDEzNywgMTEzLCAKKyAgICAyNTEsIDI1MiwgMjAwLCAzMiwgMjQ4LCAyMjUsIDE5OSwgMjMxLCAxMTMsIDI1MSwgMjUyLCAyMTcsIDkwLCAxMTMsIDI1MSwgCisgICAgMjUyLCAyMjgsIDEzNywgMTEzLCAyNTEsIDI1MiwgMjQxLCAxNTMsIDExMywgMjUxLCAyNTIsIDE5OSwgMjUsIDExMywgMTM0LCAKKyAgICAyMjIsIDEzMSwgMjQ2LCAxNTUsIDExMywgMjE1LCAxMDAsIDIxMCwgMzcsIDExMywgMjE1LCAxMDAsIDIzNCwgMTU2LCAyMTEsIAorICAgIDE4MSwgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxNiwgOTMsIDExMywgMjE1LCAxMDAsIDIzNCwgMTU2LCAyMTQsIDE0NywgCisgICAgMTEzLCAyMTUsIDEwMCwgMjM0LCA0NywgMTEzLCAyMTUsIDEwMCwgMjA1LCAyMywgMTEzLCAyMTUsIDEwMCwgMjExLCAxODEsIAorICAgIDExMywgMjE1LCAxMDAsIDIxNiwgOTMsIDExMywgMjE1LCAxMDAsIDIxNCwgMTQ3LCAxMTMsIDIxNSwgMTAwLCAyMzMsIDE5OSwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjMzLCAyMDAsIDIzNCwgMTU4LCAzNiwgMjAzLCA2MywgMTEzLCAyMTUsIDEwMCwgMjE0LCA4MywgCisgICAgMTEzLCAyMTUsIDEwMCwgMjQyLCA0MywgMjE3LCAzNCwgMjIyLCAxNjMsIDExMywgMjE1LCAxMDAsIDIyMiwgMTksIDExMywgCisgICAgMjE0LCAyMTIsIDIyMiwgMTYwLCAxMTMsIDIxNSwgMTAwLCAyMTMsIDIzMiwgMTEzLCAyMTQsIDIxMiwgMjE2LCAxMDIsIAorICAgIDExMywgMjE1LCAxMDAsIDIxMCwgMjIsIDI0MCwgMTgyLCAxMTMsIDIxNSwgMTAwLCAyMDksIDE0MywgMjQwLCAxODIsIDExMywgCisgICAgMjE0LCAyMTIsIDIwOSwgMjQsIDIxNiwgOTUsIDExMywgMTM0LCAyMDMsIDIyNSwgMjQwLCAxODIsIDExMywgMTM0LCAyMjQsIAorICAgIDU0LCAyNDAsIDE4MiwgMTEzLCAyMTQsIDIxMiwgMjE4LCA5MCwgMjM0LCAyMjcsIDExMywgMjE1LCAxMDAsIDIxNCwgMTQ4LCAKKyAgICAyMTQsIDE0MiwgMTEzLCAxLCAyNTEsIDE0MiwgMTEzLCAxLCAyNDgsIDIxMCwgMTEzLCAxLCAyMzUsIDE0NywgMTEzLCAxLCAKKyAgICAyNDIsIDIzLCAxMTMsIDEsIDIzNCwgMTM5LCAxMTMsIDEsIDIwMywgNjMsIDExMywgMSwgMTk5LCA5MiwgMTEzLCAxLCAyMzQsIAorICAgIDkzLCAxMTMsIDEsIDIwNiwgMTQ2LCAxMTMsIDEsIDE5OSwgMjM0LCAxMTMsIDEsIDQ3LCAyMjcsIDg2LCAxMTMsIDEsIDIyNywgCisgICAgODYsIDExMywgMSwgMjI1LCA4MywgMTEzLCAxLCA0NywgMjIyLCA0NywgMTEzLCAxLCAyMjIsIDQ3LCAxMTMsIDEsIDQ3LCAKKyAgICAyMTgsIDg5LCAxMTMsIDEsIDIxOCwgODksIDExMywgMSwgMjEyLCAxOSwgMTEzLCAxLCAyNTAsIDEwNywgMTEzLCAxLCA0NywgCisgICAgMjE2LCA3MywgMTEzLCAxLCAyMTYsIDczLCAxMTMsIDEsIDQ3LCAyMDUsIDI3LCAxMTMsIDEsIDIwNSwgMjcsIDExMywgMSwgCisgICAgMjE0LCAxMDYsIDExMywgMSwgMjEzLCAxMjMsIDExMywgMSwgMjEwLCAyMSwgMTEzLCAxLCAyMDYsIDIxNywgMTEzLCAzMywgCisgICAgMjAwLCA3LCA1MywgMjAzLCA2MywgMTEzLCAzMywgMjAwLCA3LCAyMDMsIDY0LCAxOTksIDIzNCwgMTEzLCAzMywgMjAwLCA3LCAKKyAgICA1MywgMTk5LCAyMzQsIDExMywgMjE0LCAyMTIsIDIzNSwgMjQ3LCAxMTMsIDIxNCwgMjEyLCAyMzUsIDI0NSwgOSwgNDEsIAorICAgIDU0LCA5LCAyLCAyMTIsIDEyLCA5LCAyMzYsIDI1MywgMjIyLCAxNDUsIDksIDIsIDIxMiwgNTIsIDksIDIsIDIxMiwgMTUsIAorICAgIDksIDQxLCAxMzQsIDU2LCAyNTAsIDI0OCwgMjQyLCAyMTAsIDIxMiwgMjM0LCAyNTAsIDI0OCwgMjM2LCAyMjIsIDIxMiwgCisgICAgMjM0LCA5LCAyMTMsIDE5NywgMjUwLCAyNDgsIDIxNiwgMjgsIDIyMSwgMTcwLCA1NCwgMjUwLCAyNDgsIDIxNiwgMjgsIAorICAgIDIwNiwgMTY3LCAyMDYsIDUxLCA1NCwgMjUxLCAxOTgsIDU0LCA5LCAyNDYsIDcwLCA5LCAyNDEsIDIzOCwgMjEwLCAxNTQsIAorICAgIDksIDIxNSwgMTAyLCAyMDMsIDQ0LCA1NCwgOSwgMiwgMjIxLCAxNDksIDksIDIsIDIxMiwgMjksIDI1MSwgMTQ1LCAyMDEsIAorICAgIDg4LCA5LCAyLCAyNTEsIDE0NSwgMjUwLCAxNzAsIDksIDIsIDIxMywgMjMwLCAyNTEsIDE0NCwgOSwgMiwgMjEzLCAyMzgsIAorICAgIDI1MSwgMTIyLCAyNTEsIDYzLCA5LCAyLCAyMDYsIDI1NCwgOSwgNCwgMTIyLCAyMDcsIDksIDksIDQsIDEyMiwgMzMsIDE0MCwgCisgICAgMywgMjI1LCA5MiwgMywgMjAwLCA0NiwgOSwgNCwgMTIyLCAxOTksIDEwNSwgOSwgNCwgMjM3LCAxNTgsIDksIDQsIDI0MiwgCisgICAgMTcsIDksIDQsIDIyNywgMzYsIDksIDIxMCwgMTY3LCA5LCAxLCA4MSwgOSwgMjA1LCA4MywgNzMsIDIxNCwgMjEyLCA4MSwgCisgICAgOSwgMjE0LCA3OSwgODEsIDksIDEsIDIyNywgNDAsIDIwMCwgNDYsIDksIDEsIDIzNCwgMjAzLCA5LCAxLCAxNDAsIDMsIAorICAgIDIyMiwgMjI0LCA1NiwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDIwMSwgNzMsIDMsIDIzNCwgMjA0LCA1NiwgCisgICAgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgNTcsIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDI1MSwgMTQyLCA5LCAKKyAgICAxLCAyNDgsIDI0MCwgOSwgMSwgMjA2LCAxODQsIDIyMiwgMTU2LCA5LCAxLCAyMDYsIDE4MywgOSwgMSwgMjA2LCAxMDIsIDksIAorICAgIDEsIDIyNywgMjI0LCA5LCAxLCAyMzQsIDIyNCwgOSwgMSwgMjI2LCAyMDMsIDksIDEsIDI0MiwgMjksIDksIDEsIDIwNiwgCisgICAgMTE0LCA5LCAxLCAyMTMsIDE1NCwgOSwgMSwgMTk5LCAxMDUsIDksIDEsIDIxMSwgMTg2LCA5LCAxLCAyMTAsIDYxLCA5LCAxLCAKKyAgICAyMTIsIDU2LCA5LCAxLCAyNDIsIDUyLCA5LCAxLCAyMDcsIDksIDksIDEsIDE5OSwgMTA4LCA5LCAxLCAyNTEsIDE3MSwgOSwgCisgICAgMSwgMjM1LCAxOTQsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIAorICAgIDE5MCwgNTcsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgCisgICAgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMjA2LCAyMjMsIDksIDEsIAorICAgIDIzNywgMTM0LCA5LCAxLCAyMTQsIDE1MiwgOSwgMSwgMjI3LCA4NiwgOSwgMSwgMjI1LCA5MSwgOSwgMSwgMjIyLCA2MSwgOSwgCisgICAgMSwgMjE4LCAyMjcsIDksIDEsIDIzNCwgMTE1LCA5LCAxLCAyMDEsIDcyLCA5LCAxLCAxNDAsIDIyMiwgMTg3LCA5LCAxLCAKKyAgICAyMDAsIDQ2LCA5LCAyMzcsIDE1NiwgOSwgMjQyLCAxNSwgOSwgMjI3LCAzNCwgOSwgMjM3LCAxNTgsIDksIDI0MiwgMTcsIDksIAorICAgIDIyNywgMzYsIDksIDIxMCwgMTA0LCA5LCAyMDcsIDIzNiwgOSwgMjIyLCAyMjIsIDU2LCA5LCAyMzQsIDIwNCwgNTYsIDksIAorICAgIDIzNCwgMjA0LCA1NywgOSwgMjA4LCA0LCAyNTEsIDE0MiwgOSwgMjI4LCA1MCwgMjQyLCAxNywgOSwgMTM0LCAyMTgsIDIyOCwgCisgICAgMjM1LCAxNjUsIDksIDE5OCwgMjQ1LCA5LCAyMiwgMiwgNCwgMjAzLCAxNjksIDU2LCA5LCAyMiwgMiwgMjI4LCA1MCwgNCwgCisgICAgMjAzLCAxNjksIDU2LCA5LCAyMiwgMiwgNzMsIDU3LCA5LCAyMTMsIDEwNSwgMjQyLCAxNywgOSwgMjM3LCAxNTksIDMsIAorICAgIDEyMCwgMjQwLCAxODAsIDksIDIwMSwgNzQsIDIzNCwgMjA0LCA1NywgMjUwLCAyNDgsIDE3LCAxOTksIDgxLCAyNTAsIDI0OCwgCisgICAgMTcsIDEwMiwgMjUwLCAyNDgsIDE3LCAxMDUsIDI1MCwgMjQ4LCAxNywgMTQ3LCAyNTAsIDI0OCwgMTcsIDE0OSwgMjUwLCAKKyAgICAyNDgsIDE3LCAxNjQsIDI1MCwgMjQ4LCAxNywgMTg3LCAyNTAsIDI0OCwgMTcsIDIxMCwgMTM1LCAyNTAsIDI0OCwgMTcsIAorICAgIDE5MiwgMjUwLCAyNDgsIDE3LCAyMTksIDExMywgOSwgMjE2LCAyNywgNTQsIDksIDI0MSwgMTY4LCAyMTAsIDE1NCwgOSwgCisgICAgMjA2LCA0OSwgMjEwLCAxNTQsIDksIDIzNywgNjEsIDIxNSwgOTgsIDIwOCwgMTA5LCA5LCAxLCAyNDAsIDE4MSwgMjQ4LCAKKyAgICAyNDAsIDksIDEsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMSwgMjA3LCAyMTMsIDI1MSwgMTQyLCA5LCAxLCAxNDAsIDIwMSwgCisgICAgODksIDksIDEsIDE0MCwgMywgMjAxLCA3NCwgMjM0LCAyMDQsIDU2LCA5LCAxLCAxNDAsIDMsIDIwMSwgNzQsIDIzNCwgMjA0LCAKKyAgICA1NywgOSwgMSwgMTIyLCAyMzQsIDIwMywgOSwgMSwgMTIyLCAyMzQsIDIwNCwgMjUxLCAxNDIsIDksIDEsIDEyMiwgMjM0LCAKKyAgICAyMDQsIDIwMSwgNzIsIDksIDEsIDEwOCwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxMjIsIDIzNCwgMjA0LCAyMDAsIDQ2LCAKKyAgICA5LCAxLCAyMDQsIDI0NSwgOSwgMSwgMjA0LCAyNDMsIDksIDEsIDI0OCwgMjUwLCA5LCAxLCAyMDYsIDE4NCwgMywgMjEzLCAKKyAgICAyNiwgOSwgMSwgMjA2LCAxODQsIDMsIDEyNiwgMTkwLCA4OCwgMjM5LCAxNjUsIDksIDEsIDIxNiwgNTQsIDksIDEsIDIwNiwgCisgICAgMTgxLCA5LCAxLCAyNDgsIDIzOCwgOSwgMSwgMTU1LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDE1NSwgMywgMTIwLCAxOTAsIAorICAgIDgzLCA1NiwgOSwgMSwgMjE4LCA0NywgOSwgMSwgMjM5LCA5OSwgOSwgMSwgMTU1LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIAorICAgIDIwNiwgMjA1LCA5LCAxLCAyMDYsIDIwMywgOSwgMSwgMjQxLCAyMTUsIDksIDEsIDI0MiwgMzAsIDMsIDIxMywgMjYsIDksIAorICAgIDEsIDI0MiwgMzAsIDMsIDczLCA1NywgOSwgMSwgMjQyLCAzMCwgMywgNzMsIDI0OCwgMjI4LCAyNiwgNCwgMjA3LCA5LCA5LCAKKyAgICAxLCAyNDIsIDM2LCA5LCAxLCAyNDEsIDIxNywgOSwgMSwgMjM5LCAxMjcsIDksIDEsIDI0MiwgMzAsIDMsIDEyNiwgMTkwLCAKKyAgICA4OCwgMjM5LCAxNjUsIDksIDEsIDI0MiwgMzAsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAxLCAyMTIsIDIwNywgOSwgMSwgCisgICAgMjEzLCAxNTUsIDMsIDQsIDIwMywgMTY4LCA5LCAxLCAyMTMsIDE1NSwgMywgMjEzLCAyNiwgOSwgMSwgMjEzLCAxNTUsIDMsIAorICAgIDczLCA1NywgOSwgMSwgMjEzLCAxNTUsIDMsIDQsIDIwMywgMTY5LCA1NywgOSwgMSwgMjEzLCAxNTUsIDMsIDczLCAyNDgsIAorICAgIDIyOCwgMjYsIDczLCA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjI3LCAyMjEsIDksIDEsIAorICAgIDIxMywgMTU1LCAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDczLCAKKyAgICA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjExLCAxODcsIDMsIDEyNiwgMTkwLCAyNDgsIAorICAgIDIyOCwgMjYsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjEyLCA1NywgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMTIsIDU3LCAzLCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDIwNywgMTAsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyNiwgCisgICAgMTkwLCA1NiwgOSwgMSwgMjQwLCAxODEsIDIzNywgMTM0LCA5LCAxLCAyMzcsIDEzNSwgMywgNzMsIDIyMSwgNTYsIDU3LCA5LCAKKyAgICAxLCAyMzcsIDEzNSwgMywgNzMsIDU3LCA5LCAxLCAyMDMsIDUyLCA5LCAxLCAyMzcsIDEzNSwgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCAyMTYsIDUyLCA5LCAxLCAyMTQsIDE1MywgMywgNzMsIDU2LCA5LCAxLCAyMTQsIDE1MywgMywgMTI2LCAxOTAsIAorICAgIDU2LCA5LCAxLCAyMjYsIDI1MiwgOSwgMSwgMjA3LCAxODMsIDIyNywgODYsIDksIDEsIDIyNywgODcsIDMsIDIxMywgMjYsIAorICAgIDksIDEsIDIyNywgODcsIDMsIDczLCA1NiwgOSwgMSwgMjE5LCAyNTUsIDksIDEsIDIyNywgODcsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgMjM2LCA3NiwgOSwgMSwgMjM2LCA3NywgMywgMjEzLCAyNiwgOSwgMSwgMjE5LCAxNzYsIDksIDEsIDIzNiwgNzcsIAorICAgIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjM1LCAzNywgOSwgMSwgMjM2LCA3NywgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAKKyAgICAyMjUsIDkyLCAzLCA0LCAyMDMsIDE2OCwgOSwgMSwgMjI1LCA5MiwgMywgNzMsIDU2LCA5LCAxLCAyMjUsIDkyLCAzLCAxMjYsIAorICAgIDE5MCwgNTYsIDksIDEsIDIyNSwgOTIsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjE4LCAyMjgsIDMsIDczLCA1NywgOSwgMSwgCisgICAgMjE4LCAyMjgsIDIzNSwgMTY1LCA5LCAxLCAyMTMsIDQsIDksIDEsIDIxOCwgMjI4LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDcsIDksIDEsIDIwNiwgMjA2LCAzLCA3MywgCisgICAgNTYsIDksIDEsIDIzNCwgMTE2LCAzLCA5MCwgNTYsIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExMywgOSwgMSwgMjM0LCAxMTYsIAorICAgIDIzNSwgMTE0LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDIwNiwgMTg0LCAyMjIsIDE1NywgMjM1LCAxMTMsIDksIDEsIDIwMSwgCisgICAgNzMsIDMsIDIxMywgMjYsIDksIDEsIDIyNiwgMTM5LCAyMTcsIDEyMSwgOSwgMSwgMjE3LCAxMjEsIDksIDEsIDY2LCA5LCAxLCAKKyAgICAxOTksIDIxMSwgOSwgMSwgMjI2LCAxMzksIDE5OSwgMjExLCA5LCAxLCAyMDEsIDczLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIAorICAgIDIwMywgNTksIDksIDEsIDIzNywgMTYyLCAyMDAsIDQ2LCA5LCAxLCA5MCwgMywgMjA3LCA2LCA5LCAxLCA5MCwgMywgNCwgCisgICAgMjAzLCAxNjgsIDksIDEsIDIwMSwgNzMsIDMsIDczLCA1NiwgOSwgMSwgNzIsIDksIDEsIDkwLCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDkwLCAyNDksIDY5LCA5LCAxLCA5MCwgMjQ5LCA3MCwgMywgMjM0LCAyMDQsIDU2LCA5LCAyMzYsIDE4MywgMjA4LCAKKyAgICA3NiwgOSwgMSwgMjUxLCAyMjEsIDksIDQsIDEyMiwgMzMsIDIxMiwgNTcsIDMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODcsIAorICAgIDksIDQsIDEyMiwgMzMsIDIxNCwgMTUzLCAzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg3LCA5LCA0LCAxMjIsIDg0LCA4MiwgCisgICAgMTksIDksIDQsIDEyMiwgMjI1LCA5MiwgMjUxLCAxNDIsIDksIDQsIDEyMiwgMjI3LCAyMjQsIDksIDQsIDEyMiwgMTI2LCAKKyAgICAyNDAsIDE4MCwgOSwgNCwgMTIyLCAyMTEsIDE4NiwgOSwgMjM4LCAxNzEsIDc2LCAyNTAsIDExMSwgOSwgMjA4LCAxMDUsIAorICAgIDc2LCAyMTIsIDE3MywgMjM4LCAyMTAsIDIzNCwgNDIsIDksIDQsIDEyMiwgMjEyLCAyMTksIDE5OSwgODEsIDksIDQsIDEyMiwgCisgICAgMjAzLCAyMjMsIDIxMywgMTc0LCAxOTksIDgxLCA5LCA0LCAxMjIsIDI0MCwgMTgxLCAyMzQsIDEzNywgNzYsIDIyNiwgMjAzLCAKKyAgICA5LCA0LCAxMjIsIDg0LCA2NSwgMTksIDksIDQsIDEyOCwgMjExLCAxODYsIDksIDQsIDEyMiwgMjIyLCAyMjMsIDksIDQsIAorICAgIDIwMSwgNzIsIDksIDQsIDIwMCwgNDYsIDksIDQsIDEyMiwgMjAwLCA0NiwgOSwgNCwgMTIyLCAyMTgsIDIyNywgOSwgMjE1LCAKKyAgICAxMzQsIDc2LCAyMTIsIDQyLCA5LCAyMzgsIDE4MSwgMjQ3LCA1NiwgMTI4LCAyMDgsIDc2LCA5LCAyMzgsIDE4MSwgMjQ3LCAKKyAgICA1NiwgMTIyLCAyMDgsIDc2LCA5LCAyMTIsIDIxOSwgMTIyLCAyMDgsIDc3LCAzLCAyMzcsIDk0LCAyNDcsIDU1LCA5LCA0LCAKKyAgICAxMjgsIDIyMiwgNjEsIDksIDEsIDI0MiwgMzAsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCA5LCAxLCAyMTMsIDE1NSwgMywgCisgICAgMjI4LCA1MCwgMjAzLCAxNjgsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTk5LCA4MSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxMDIsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTA1LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE0NywgMjM4LCAzMywgCisgICAgMjUwLCAyNDgsIDE3LCAxNDksIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTY0LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDE4NywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAyMTAsIDEzNSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxOTIsIDIzOCwgCisgICAgMzMsIDI1MCwgMjQ4LCAxNywgMjE5LCAxMTMsIDksIDEsIDIxMCwgNjIsIDMsIDczLCA1NywgOSwgMSwgMjQyLCA1MywgMywgCisgICAgNzMsIDU3LCA5LCAxLCAyMzUsIDE5NSwgMywgNzMsIDU3LCA5LCAyLCAyMDksIDE0MiwgMjUxLCA4OSwgOSwgMiwgMjA5LCAKKyAgICAxNDIsIDIxNSwgNjMsIDIyMiwgNDAsIDksIDEsIDIzNCwgMTE2LCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgMjA3LCAxMDMsIAorICAgIDIzOCwgMTcxLCA3NiwgMjE2LCAxMjcsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjM2LCAxODMsIDIwOCwgNzYsIDIwNywgMTAzLCAKKyAgICAyMDgsIDYsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDcsIDEwMywgMjA3LCAyMDksIDI0NiwgNzksIDIwNywgMTAzLCAyMDgsIDYsIAorICAgIDI0NiwgNzksIDIwNywgMTAzLCAyMzMsIDE3NywgMjQ2LCA3OSwgMjA3LCAxMDMsIDI0NiwgODAsIDIwOSwgODYsIDIyNSwgCisgICAgMjgsIDIwNywgMTAzLCAyNDYsIDgwLCAyMDksIDg2LCAyMTMsIDQ2LCAyMDcsIDEwMywgMjA3LCAyMDksIDI0NiwgODAsIAorICAgIDIwOSwgODYsIDIyNSwgMjgsIDIwNywgMTAzLCAyMDgsIDYsIDI0NiwgODAsIDIwOSwgODYsIDIxMywgNDYsIDIwNywgMTAzLCAKKyAgICAyNDMsIDM2LCAyMDcsIDEwMywgMjM0LCAxNjMsIDIxNywgMTQwLCAyMDcsIDEwMywgMjM0LCAxNjMsIDIyMiwgMTcsIDIwNywgCisgICAgMTAzLCAyMzQsIDE2MywgMjUwLCAxNjcsIDIwNywgMTAzLCAyNTIsIDMsIDgxLCAyMDcsIDEwMywgMSwgMjUxLCAxNDcsIAorICAgIDIwNywgMTAzLCAxLCAyMDcsIDIxMywgMjUxLCAxNDcsIDIwNywgMTAzLCAxLCAyNDgsIDIwNywgMjA3LCAxMDMsIDEsIDIzNiwgCisgICAgNjYsIDIwNywgMTAzLCAxLCAyMzYsIDY3LCAyMzYsIDQ0LCAyMDcsIDEwMywgMSwgMjQyLCAyNiwgMjA3LCAxMDMsIDEsIAorICAgIDI0MCwgMTgxLCAyNDIsIDI3LCAyMTMsIDIwLCAyMDcsIDEwMywgMSwgMjM0LCAxMzksIDIwNywgMTAzLCAxLCAyMDEsIDcyLCAKKyAgICAyMDcsIDEwMywgMSwgMTk5LCAxMDUsIDIwNywgMTAzLCAxLCAyMzQsIDkxLCAyMDcsIDEwMywgMSwgMjA2LCAxNDIsIDIwNywgCisgICAgMTAzLCAxLCAyMDYsIDE0MywgMjM2LCA0NCwgMjA3LCAxMDMsIDEsIDE5OSwgMTk4LCAyMDcsIDEwMywgMSwgMTk5LCAxOTksIAorICAgIDIzNCwgMTM5LCAyMDcsIDEwMywgMSwgMjI3LCA1NywgMjA3LCAxMDMsIDEsIDIyNSwgOTAsIDIwNywgMTAzLCAxLCAyMjEsIAorICAgIDE2NiwgMjA3LCAxMDMsIDEsIDIxOCwgODksIDIwNywgMTAzLCAxLCAyMTAsIDE2MCwgMjA3LCAxMDMsIDEsIDQ3LCAyMTAsIAorICAgIDE2MCwgMjA3LCAxMDMsIDEsIDcyLCAyMDcsIDEwMywgMSwgMjE2LCA3MywgMjA3LCAxMDMsIDEsIDIxMywgMTA1LCAyMTYsIAorICAgIDczLCAyMDcsIDEwMywgMSwgMjEyLCA1NCwgMjA3LCAxMDMsIDEsIDIxNCwgMTQ2LCAyMDcsIDEwMywgMSwgMjEzLCAyMCwgCisgICAgMjA3LCAxMDMsIDEsIDIxMCwgMjEsIDIwNywgMTAzLCAxLCAyMDYsIDIxNSwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDI0OCwgCisgICAgMTk0LCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjM1LCAxOTIsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyNDEsIDk1LCAyMDcsIAorICAgIDEwMywgMjE0LCAyMjUsIDU2LCAyMDcsIDEwMywgMjE0LCAyMjUsIDU3LCAyMDcsIDEwMywgMjE0LCAyMjUsIDIzOSwgMTc5LCAKKyAgICAyMDcsIDEwMywgMTk5LCA4LCA1NiwgMjA3LCAxMDMsIDE5OSwgOCwgNTcsIDIwNywgMTAzLCAxOTksIDgsIDIzOSwgMTc5LCAKKyAgICAyMDcsIDEwMywgMjEzLCAxOTMsIDU2LCAyMDcsIDEwMywgMjEzLCAxOTMsIDU3LCAyMDcsIDEwMywgMjM5LCAxODAsIDE5OSwgCisgICAgMTUsIDIzMywgMTc2LCAyMDcsIDEwMywgMjM5LCAxODAsIDE5OSwgMTUsIDI1MSwgNjQsIDIwNywgMTAzLCAyMzQsIDE0NCwgCisgICAgNTYsIDIwNywgMTAzLCAyMzQsIDE0NCwgNTcsIDIwNywgMTAzLCAyMzQsIDE0MywgMjM5LCAxNzksIDIwNywgMTAzLCAyMzgsIAorICAgIDk4LCA1NiwgMjA3LCAxMDMsIDIzOCwgOTgsIDU3LCAyMDcsIDEwMywgMjEyLCAxMzgsIDIwNywgMTAzLCAyMzcsIDEyOCwgCisgICAgMjQwLCAxODIsIDIwNywgMTAzLCAyMTQsIDU3LCAyMDcsIDEwMywgMjEyLCAxNjcsIDIwNywgMTAzLCAxMjAsIDgzLCAxOTAsIAorICAgIDU2LCAyMDcsIDEwMywgMTIwLCA4MywgMTkwLCA1NywgMjA3LCAxMDMsIDEyNiwgMTkwLCA1NiwgMjA3LCAxMDMsIDEyNiwgCisgICAgMTkwLCA1NywgMjA3LCAxMDMsIDIxNywgMTM4LCAyMjQsIDE3NywgNTYsIDIwNywgMTAzLCAyMTcsIDEzOCwgMjI0LCAxNzcsIAorICAgIDU3LCAyMDcsIDEwMywgMjIwLCAyNDUsIDIwNywgMTAzLCAyNDksIDY4LCAyMDcsIDEwMywgMSwgMjA5LCAyMCwgMTk5LCA3NSwgCisgICAgMjA3LCAxMDMsIDEsIDIwOSwgMjAsIDIyNiwgMTk2LCAyMDcsIDEwMywgMSwgMjA5LCAyMCwgMjM3LCAxNDcsIDksIDEsIAorICAgIDI0OCwgMjQxLCAzLCAxMjYsIDE5MCwgMjMzLCAxMjYsIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgNzMsIDI0OCwgMjI4LCAyNiwgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCAyNDgsIDI0MSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDI0OCwgCisgICAgMjQxLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCAyNDgsIDIyOCwgMjYsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjQ4LCAKKyAgICAyNDEsIDMsIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOSwgMSwgMjQ4LCAyNDEsIDMsIDIyOCwgNTAsIDQsIAorICAgIDIwMywgMTY5LCA1NywgOSwgMSwgMjQ4LCAyNDEsIDMsIDQsIDIwMywgMTY4LCA5LCAxLCAxNTUsIDMsIDEyMCwgMTkwLCA1NiwgCisgICAgOSwgMSwgMTU1LCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjQyLCAzMCwgMywgMTIwLCAxOTAsIAorICAgIDIwMiwgMjQ4LCAyNDgsIDIyOCwgMjYsIDQsIDIwNywgOSwgOSwgMSwgMjQyLCAzMCwgMywgMjI4LCA1MCwgNCwgMjAzLCAKKyAgICAxNjksIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgOTcsIDksIDEsIDIxMSwgMTg3LCAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgOSwgCisgICAgMSwgMjUxLCAxNzIsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIAorICAgIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTIwLCAxOTAsIDIwMiwgMjQ4LCA1NiwgOSwgMSwgMjM3LCAxMzUsIDMsIDEyMCwgCisgICAgMTkwLCA1NywgOSwgMSwgMjM3LCAxMzUsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyMjYsIDI1MywgCisgICAgMywgNzMsIDU2LCA5LCAxLCAyMjYsIDI1MywgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMjYsIDI1MywgMywgMTI2LCAxOTAsIAorICAgIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDg0LCAzLCA3MywgNTYsIDksIDEsIDg0LCAzLCA3MywgNTcsIDksIDEsIDIxOCwgCisgICAgMjI4LCAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIxOCwgMjI4LCAzLCA0LCAyMDcsIDksIDksIDEsIDIxOCwgMjI4LCAzLCA0LCAKKyAgICAyMDMsIDE2OCwgOSwgMSwgMjI1LCA5MiwgMywgMTQ4LCA5LCAxLCAyMTMsIDE1NSwgMywgMTIwLCAxOTAsIDIwMiwgMjQ4LCAKKyAgICA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDEyMCwgMTkwLCAyMDIsIAorICAgIDI0OCwgNTYsIDksIDEsIDE1NSwgMywgNCwgOSwgMSwgMjA3LCAxMCwgNTcsIDksIDEsIDE1NSwgMywgNCwgOSwgMSwgMjA3LCAKKyAgICAxMCwgMjYsIDEyMCwgMjQwLCAxODAsIDksIDEsIDIxMSwgMTg3LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCAyNiwgMTIwLCAyNDAsIAorICAgIDE4MCwgOSwgMSwgMjEzLCAxNTUsIDMsIDQsIDksIDEsIDIwNywgMTAsIDI2LCAxMjAsIDI0MCwgMTgwLCA5LCAxLCAxNTUsIAorICAgIDMsIDQsIDksIDEsIDIwNywgMTAsIDU2LCA5LCAxLCAxNDAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCA1NiwgOSwgCisgICAgMSwgMTQwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyNiwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAKKyAgICAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTI2LCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIzNiwgMjI5LCA1NywgOSwgCisgICAgMSwgMjAxLCA3MywgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIDU2LCA5LCAxLCAyMDEsIDczLCAzLCAyMzgsIDMzLCAKKyAgICAyNTAsIDI0OCwgMTcsIDEyNiwgNTYsIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgCisgICAgNTYsIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyNiwgNTYsIDksIDEsIDE1NSwgMywgCisgICAgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAyMzYsIDIyOSwgNTcsIDksIDEsIDIxMSwgMTg3LCAzLCAyMzgsIDMzLCAyNTAsIAorICAgIDI0OCwgMTcsIDIzNiwgMjI5LCA1NiwgOSwgMSwgMjExLCAxODcsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCA5LCAxLCAyMjcsIAorICAgIDg3LCAzLCAxMjAsIDE5MCwgNTYsIDIwNiwgMTE5LCAxLCAyMzQsIDIzMywgMjA2LCAxMTksIDEsIDIxMCwgNzEsIDIwNiwgCisgICAgMTE5LCAxLCAyMTgsIDIyNiwgMjA2LCAxMTksIDEsIDIxMywgMjQ4LCAyMDYsIDExOSwgMSwgMjQ5LCAxMzQsIDIwNiwgMTE5LCAKKyAgICAxLCAyMjQsIDIyMCwgMjA2LCAxMTksIDEsIDIyNywgMTAxLCAyMDYsIDExOSwgMSwgMjUxLCAxMjksIDIwNiwgMTE5LCAxLCAKKyAgICAyMDMsIDg4LCAyMDYsIDExOSwgMSwgMjIyLCA2MCwgMjA2LCAxMTksIDEsIDIzNywgMTkzLCAyMDYsIDExOSwgMSwgMjQxLCAKKyAgICA5OCwgMjA2LCAxMTksIDEsIDIwNiwgMTIxLCAyMDYsIDExOSwgMSwgMjI1LCAxNzIsIDIwNiwgMTE5LCAxLCAyMzYsIDg1LCAKKyAgICAyMDYsIDExOSwgMSwgMjM1LCAxMTksIDIwNiwgMTE5LCAxLCAyMTEsIDE4NSwgMjA2LCAxMTksIDEsIDI0MSwgMjM2LCAyMDYsIAorICAgIDExOSwgMSwgMTk5LCA5NSwgMjA2LCAxMTksIDEsIDIwNiwgMjE2LCAyMDYsIDExOSwgMSwgMjAwLCAxMDksIDIwNiwgMTE5LCAKKyAgICAxLCAyMTYsIDg2LCAyMDYsIDExOSwgMSwgMjI3LCAyMzIsIDIwNiwgMTE5LCAxLCAyNDcsIDExLCAyMDYsIDExOSwgMSwgCisgICAgMjA0LCAyNTIsIDIwNiwgMTE5LCAxLCAyMzQsIDgzLCAyMDYsIDExOSwgMSwgMjI2LCAyMDYsIDIwNiwgMTE5LCAxLCAyMDYsIAorICAgIDEyMCwgMjA2LCAxMTksIDEsIDE5OSwgMTEyLCAyMDYsIDExOSwgMSwgMjEwLCA2MCwgMjA2LCAxMTksIDEsIDIxMiwgNjAsIAorICAgIDIwNiwgMTE5LCAxLCAyNDIsIDU2LCAyMDYsIDExOSwgMSwgMTM4LCAyMDYsIDExOSwgMSwgMTk5LCAxNCwgMjA2LCAxMTksIAorICAgIDEsIDI1MSwgMTY4LCAyMDYsIDExOSwgMSwgMjM1LCAxOTMsIDIwNiwgMTE5LCAxLCAyMTQsIDE1NiwgMjA2LCAxMTksIDEsIAorICAgIDIwMSwgMTEyLCAyMDYsIDExOSwgMjUyLCA1LCAyMDYsIDExOSwgMjUyLCAxMDMsIDIwNiwgMTE5LCAyMzIsIDIzNCwgMjA2LCAKKyAgICAxMTksIDIzOCwgMjU0LCAyMDYsIDExOSwgMjA0LCAzOSwgMjA2LCAxMTksIDIxNywgNjIsIDIwNiwgMTE5LCAyMzksIDgsIAorICAgIDIwNiwgMTE5LCAyMzgsIDI0LCAyMDYsIDExOSwgMjE3LCAxMzcsIDIwNiwgMTE5LCAyMTcsIDE0NSwgMjA2LCAxMTksIDIwNywgCisgICAgMjM2LCAyMDYsIDExOSwgMSwgMjIwLCAxNTcsIDIxOSwgNDksIDE3LCAxOTksIDgxLCAyMTksIDQ5LCAxNywgMTAyLCAyMTksIAorICAgIDQ5LCAxNywgMTA1LCAyMTksIDQ5LCAxNywgMTQ3LCAyMTksIDQ5LCAxNywgMTQ5LCAyMTksIDQ5LCAxNywgMTY0LCAyMTksIAorICAgIDQ5LCAxNywgMTg3LCAyMTksIDQ5LCAxNywgMjEwLCAxMzUsIDIxOSwgNDksIDE3LCAxOTIsIDIxOSwgNDksIDE3LCAyMTksIAorICAgIDExMywgMjE5LCA0OSwgMSwgNjIsIDIxOSwgNDksIDEsIDIzOCwgMjU1LCAyMTksIDQ5LCAxLCA3MCwgMjE5LCA0OSwgMSwgCisgICAgNzIsIDIxOSwgNDksIDEsIDY2LCAyMTksIDQ5LCAxLCAyMTcsIDYzLCAyMTksIDQ5LCAxLCA3NCwgMjE5LCA0OSwgMSwgMjQyLCAKKyAgICA0NCwgMjE5LCA0OSwgMSwgMjIwLCAyMTQsIDIxOSwgNDksIDEsIDI0OSwgMTM2LCAyMTksIDQ5LCAxLCAxNzIsIDIxOSwgNDksIAorICAgIDEsIDIwNywgMzYsIDIxOSwgNDksIDEsIDIyNywgMjQ4LCAyMTksIDQ5LCAxLCAyNDcsIDM3LCAyMTksIDQ5LCAxLCAyNDIsIAorICAgIDU4LCAyMTksIDQ5LCAxLCAyMTMsIDI1MiwgMjE5LCA0OSwgMSwgMjEyLCAyMTUsIDIxOSwgNDksIDEsIDIxMiwgNjQsIDIxOSwgCisgICAgNDksIDEsIDIzNiwgMzIsIDIxOSwgNDksIDEsIDIzNywgMTk1LCAyMTksIDQ5LCAxLCAxNjEsIDIxOSwgNDksIDEsIDE5NCwgCisgICAgMjE5LCA0OSwgMSwgMjIwLCAxNjIsIDIwMCwgMjUyLCAyMTksIDQ5LCAxLCAxNzgsIDIxOSwgNDksIDEsIDIxOCwgNjAsIAorICAgIDIxOSwgNDksIDEsIDE4OCwgMjE5LCA0OSwgMSwgMTQ0LCAyMTksIDQ5LCAxLCAyMDEsIDExNCwgMjE5LCA0OSwgMSwgMTgzLCAKKyAgICAyMTksIDQ5LCAxLCAyMTgsIDYxLCAyMDAsIDI1MiwgMjE5LCA0OSwgMSwgMjI3LCAxNTgsIDIyNywgMjQ4LCAyMTksIDQ5LCAKKyAgICAxLCAyMjcsIDE1OCwgMjQ3LCAzNywgMjE5LCA0OSwgMSwgMjI3LCAxNTgsIDIxMywgMjUyLCAyMTksIDQ5LCAzOCwgMjA5LCAKKyAgICAyNTAsIDEyMiwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAyMDksIDI1MCwgMTI4LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIAorICAgIDIwOSwgMjUwLCAyMTMsIDE5LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDE2OCwgMjQxLCAxMTgsIDIwNSwgMTc0LCAyMTksIAorICAgIDQ5LCAzOCwgMTY4LCAxMjIsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMTY4LCAxMjgsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgCisgICAgMTY4LCAyMTMsIDE5LCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDIyMCwgMTIyLCA4MSwgMjE5LCA0OSwgMzgsIDUzLCA3MywgCisgICAgNTYsIDIxOSwgNDksIDEyMiwgMTUwLCAyNTEsIDEzLCAyMTksIDQ5LCAxMjgsIDE1MCwgMjUxLCAxMywgMjE5LCA0OSwgMTYsIAorICAgIDIxNywgNjQsIDI0MSwgMTMyLCAyMTksIDQ5LCAxNiwgMjM2LCAzMSwgMjE5LCA0OSwgMjQ2LCA3MCwgMjE5LCA0OSwgMjM4LCAKKyAgICA0MywgODEsIDIxOSwgNDksIDIyNSwgMTQ3LCAyMTIsIDIyLCAxLCAyNTEsIDE0OSwgMjEyLCAyMiwgMSwgMjQ4LCAxNTIsIAorICAgIDIxMiwgMjIsIDEsIDIzNiwgNjUsIDIxMiwgMjIsIDEsIDI0MiwgMjgsIDIxMiwgMjIsIDEsIDIyOCwgMywgMjEyLCAyMiwgMSwgCisgICAgMjQ5LCAxMzQsIDIxMiwgMjIsIDEsIDE5OSwgODQsIDIxMiwgMjIsIDEsIDIyOCwgMTIsIDIxMiwgMjIsIDEsIDIwNSwgMjEzLCAKKyAgICAyMTIsIDIyLCAxLCAxOTksIDE4MCwgMjEyLCAyMiwgMSwgMjI3LCAxMDIsIDIxMiwgMjIsIDEsIDIyNSwgMTY5LCAyMTIsIAorICAgIDIyLCAxLCAyMjEsIDE2NiwgMjEyLCAyMiwgMSwgMjE4LCA4OSwgMjEyLCAyMiwgMSwgMjA5LCAxNDAsIDIxMiwgMjIsIDEsIAorICAgIDIyOCwgMTE3LCAyMTIsIDIyLCAxLCAyMzcsIDExMiwgMjEyLCAyMiwgMSwgMjA1LCAzMCwgMjEyLCAyMiwgMSwgMjE0LCA3NiwgCisgICAgMjEyLCAyMiwgMSwgMjEzLCAyMCwgMjEyLCAyMiwgMSwgMjEwLCA4OSwgMjEyLCAyMiwgMSwgMjA3LCAzMSwgMjEyLCAyMiwgCisgICAgMTM0LCAyMjgsIDExNywgMjEyLCAyMiwgMTM0LCAyMjgsIDExNiwgMjEyLCAyMiwgMTM0LCAyMTcsIDEzMywgMjEyLCAyMiwgCisgICAgMTM0LCAyNDIsIDQyLCAyMTIsIDIyLCA2NywgMSwgMjM4LCAxMjksIDE5OSwgMTgwLCAyMTIsIDIyLCAxMzQsIDIzOCwgMTI5LCAKKyAgICAxOTksIDE4MCwgMjEyLCAyMiwgMjIsIDIsIDE2OCwgNzIsIDIxMiwgMjIsIDIyLCAyLCA3MiwgMjEyLCAyMiwgMjIsIDIsIAorICAgIDIxNiwgMjQwLCAyNTIsIDEzOCwgMjEyLCAyMiwgMjIsIDIsIDE2OCwgMjUyLCAxMzgsIDIxMiwgMjIsIDIyLCAyLCAyNTIsIAorICAgIDEzOCwgMjEyLCAyMiwgMjIsIDIsIDIxNiwgMjQwLCA2MiwgMjEyLCAyMiwgMjIsIDIsIDE2OCwgNjIsIDIxMiwgMjIsIDIyLCAKKyAgICAyLCA2MiwgMjEyLCAyMiwgNjcsIDEsIDIwOSwgMjUwLCA2MiwgMjEyLCAyMiwgMjIsIDIsIDIwOSwgMjUwLCA2MiwgMjEyLCAKKyAgICAyMiwgMjIsIDIsIDE2OCwgNjYsIDIxMiwgMjIsIDIyLCAyLCA2NiwgMjEyLCAyMiwgNjcsIDEsIDcwLCAyMTIsIDIyLCAyMiwgCisgICAgMiwgMTY4LCA3MCwgMjEyLCAyMiwgMjIsIDIsIDcwLCAyMTIsIDIyLCAyMiwgMiwgNzQsIDIxMiwgMjIsIDIyLCAyLCAyMDcsIAorICAgIDIzNiwgMjEyLCAyMiwgMTM0LCAyMjAsIDE3LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjIwLCAxNywgMjEyLCAyMiwgMjE0LCAKKyAgICAyMTIsIDI1MSwgMTk1LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUxLCA3NSwgMjEyLCAyMiwgMjE0LCAyMTIsIDI0OSwgNDgsIAorICAgIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTAsIDE0OSwgMjEyLCAyMiwgMjE0LCAyMTIsIDIxMCwgOSwgMjEyLCAyMiwgMjUyLCAzLCAKKyAgICA4MSwgMjEyLCAyMiwgMjE0LCAyMTIsIDIyMiwgNTAsIDIxNCwgMTEyLCAyMTIsIDIyLCAyMTQsIDIxMiwgMTk5LCAyMiwgCisgICAgMjEyLCAyMiwgMjE0LCAyMTIsIDIxNCwgMTEyLCAyMTIsIDIyLCAyMTQsIDIxMiwgMTk5LCAxMTEsIDIxMiwgMjIsIDIxNCwgCisgICAgMjEyLCAyMDQsIDE4MSwgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MCwgMjE5LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjA5LCAyNCwgCisgICAgMjIyLCAxMzMsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTEsIDU5LCAyMjIsIDE3NiwgMSwgMjM0LCAyMTAsIDIyMiwgMTc2LCAxLCAKKyAgICAyNTIsIDg5LCAyMjIsIDE3NiwgMSwgMjUxLCAxOTMsIDIyMiwgMTc2LCAxLCAyNTEsIDIzNSwgMjIyLCAxNzYsIDEsIDI1MSwgCisgICAgMTg1LCAyMjIsIDE3NiwgMSwgMjAzLCAxODgsIDIyMiwgMTc2LCAxLCAyNTAsIDEwNSwgMjIyLCAxNzYsIDEsIDIyOCwgMTIsIAorICAgIDIyMiwgMTc2LCAxLCAyNTAsIDE0NiwgMjIyLCAxNzYsIDEsIDI1MSwgMTU0LCAyMjIsIDE3NiwgMSwgMjUxLCAxNTksIDIyMiwgCisgICAgMTc2LCAxLCAyNTEsIDE1MSwgMjIyLCAxNzYsIDEsIDI1MSwgMTAxLCAyMjIsIDE3NiwgMSwgMjUxLCA4NSwgMjIyLCAxNzYsIAorICAgIDEsIDI1MCwgMTg4LCAyMjIsIDE3NiwgMSwgMjI4LCAxMTcsIDIyMiwgMTc2LCAxLCAyNTEsIDI4LCAyMjIsIDE3NiwgMSwgCisgICAgMjUwLCAxNTcsIDIyMiwgMTc2LCAxLCAyNTEsIDEsIDIyMiwgMTc2LCAxLCAyNTAsIDI1MywgMjIyLCAxNzYsIDEsIDI1MCwgCisgICAgMTgxLCAyMjIsIDE3NiwgMSwgMjUwLCAxNTUsIDIyMiwgMTc2LCAxLCAyMzksIDExMiwgMjIyLCAxNzYsIDEsIDIyNywgOTQsIAorICAgIDIyMiwgMTc2LCAxLCAyNTEsIDE3MSwgMjIyLCAxNzYsIDI1MSwgMTk5LCA4MSwgMjIyLCAxNzYsIDIwMiwgMTkxLCA4MSwgCisgICAgMjIyLCAxNzYsIDIzNiwgMywgODEsIDIyMiwgMTc2LCAyMTQsIDIxMSwgOSwgMSwgMjQ4LCAyNDEsIDMsIDQsIDIwMywgMTY5LCAKKyAgICA1NywgOSwgMSwgMjQ4LCAyNDEsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTkzLCAzLCAxMjAsIDE5MCwgNTYsIDksIDEsIAorICAgIDIwNywgMTAsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjM3LCAxMzUsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDEyNiwgMTkwLCAKKyAgICA1NiwgOSwgMSwgMjE0LCAxNTMsIDMsIDczLCA1NywgOSwgMSwgMjI1LCA5MiwgMywgNTMsIDE0OCwgOSwgMSwgODQsIDMsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgOTAsIDMsIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDIzNCwgMjA0LCA1NiwgOSwgMSwgCisgICAgOTAsIDMsIDEyMCwgMTkwLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOSwgMSwgMjEzLCAxNTUsIDMsIDIyNCwgNzQsIDksIDEsIAorICAgIDIwMSwgNzMsIDMsIDczLCAyMDEsIDQsIDksIDEsIDIxMiwgMjQ1LCAyMDAsIDQ2LCA5LCAxLCAxMjgsIDI1MSwgMTQyLCA5LCAKKyAgICAxLCAyNDIsIDMwLCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIxMiwgNTcsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjM2LCAKKyAgICA3NywgMywgMjI4LCA1MCwgOTcsIDksIDEsIDIwOCwgNjgsIDIwMSwgNzIsIDksIDEsIDE5OSwgMTA2LCAzLCAyMjgsIDUwLCAKKyAgICAyMDMsIDE2OSwgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjYsIDE5MCwgNTcsIDksIDEsIDIyNywgODcsIDMsIDczLCA1NywgCisgICAgOSwgMSwgMjQ4LCAyNDEsIDMsIDQsIDg0LCA1NiwgOSwgMSwgMjE2LCA1NSwgMywgNCwgODQsIDU2LCA5LCAxLCAyMDYsIAorICAgIDE4NCwgMywgNCwgMjA2LCAxODQsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgMjE4LCAyMjgsIDU2LCA5LCAxLCA5MCwgMywgCisgICAgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNCwgMjE4LCAyMjgsIDU2LCA5LCAxLCAyNTEsIDE5NiwgMjM3LCAxMzQsIDksIDEsIAorICAgIDI1MSwgMTk2LCAyMTQsIDE1MiwgOSwgMSwgMjUxLCAxOTYsIDIxOCwgMjI3LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyNTAsIAorICAgIDI1MCwgOSwgNCwgMTIyLCAyMTIsIDU2LCA5LCA0LCAxMjIsIDI1MSwgMTcxLCA5LCA0LCAxMjIsIDIxNCwgMTUyLCA5LCA0LCAKKyAgICAxMjIsIDIxOCwgMjI4LCAzLCAyMjcsIDM2LCA5LCA0LCAxMjgsIDIxOCwgMjI4LCAzLCAyMjcsIDM2LCA5LCA0LCAxMjIsIAorICAgIDIwMCwgMjM4LCAyNTAsIDE1NCwgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjUwLCAxODcsIDksIDQsIDEyMiwgMjAwLCAyMzgsIAorICAgIDI1MSwgODQsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDIxMiwgMzcsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDIxNCwgMTE2LCA5LCAKKyAgICA0LCAxMjIsIDIwMCwgMjM4LCAyMDEsIDk1LCA5LCA0LCAxMjIsIDIzNiwgMjUzLCAyMjIsIDE0NSwgOSwgNCwgMTIyLCAyLCAKKyAgICAyMTIsIDUyLCA5LCAyNDAsIDI1MSwgMjM4LCAxNzEsIDc2LCAyNTAsIDExMSwgOSwgMjA0LCAxODUsIDI0MiwgMTgsIDU3LCAKKyAgICA5LCAyNDIsIDE5NiwgMjM3LCAxNTgsIDksIDI0MiwgMTk2LCAyNDIsIDE3LCA5LCAyNDIsIDE5NiwgMjI3LCAzNiwgOSwgCisgICAgMjQyLCAxOTYsIDIzNywgMTU2LCA5LCAyNDIsIDE5NiwgMjQyLCAxNSwgOSwgMjQyLCAxOTYsIDIyNywgMzQsIDksIDE1MCwgCisgICAgMTEyLCA3MywgNTYsIDksIDE1MCwgMTIwLCAxOTAsIDU2LCA5LCAxNTAsIDIyNCwgNzUsIDU2LCA5LCAxNTAsIDExMiwgNzMsIAorICAgIDU3LCA5LCAxNTAsIDEyMCwgMTkwLCA1NywgOSwgMTUwLCAyMjQsIDc1LCA1NywgOSwgMTc2LCAyMzcsIDE1NiwgOSwgMTc2LCAKKyAgICAyNDIsIDE1LCA5LCAxNzYsIDIyNywgMzQsIDksIDQsIDEyMiwgMjAxLCA3MiwgOSwgMjM3LCAxNTksIDMsIDIxMywgMjYsIDksIAorICAgIDIzNywgMTU5LCAzLCA3MywgNTYsIDksIDIyNywgMzcsIDMsIDczLCA1NywgOSwgNDksIDI1MCwgMjAzLCA1NiwgOSwgNTEsIAorICAgIDI1MCwgMjAzLCA1NiwgOSwgNDksIDI1MCwgMjAzLCA1NywgOSwgNTEsIDI1MCwgMjAzLCA1NywgOSwgNTMsIDUxLCAyNTAsIAorICAgIDIwMywgNTYsIDksIDUzLCA1MSwgMjUwLCAyMDMsIDg4LCAzLCAyNDAsIDE4MiwgOSwgNTEsIDI1MCwgMjAzLCA4OCwgMywgCisgICAgMjQwLCAxODIsIDksIDI0MiwgMTgsIDMsIDI0MCwgMTgyLCA5LCAxMzQsIDIwOSwgMTczLCAyMTgsIDIyOCwgMjM1LCAxNjUsIAorICAgIDk0LCAyLCAyMjgsIDUwLCAyNDcsIDE0OSwgOTQsIDIsIDI0NywgMTQ5LCA5NCwgMiwgMjUxLCAzMywgOTQsIDIsIDIwMiwgCisgICAgMjAzLCA5NCwgMSwgMjA5LCAyNTAsIDYyLCA5NCwgMSwgNjIsIDk0LCAxLCAyNTIsIDEzOCwgOTQsIDEsIDcwLCA5NCwgMSwgCisgICAgMjI4LCAxNTEsIDk0LCAxLCA2NiwgOTQsIDEsIDIwMywgMTgyLCA5NCwgMSwgMTA5LCAxNDYsIDk0LCAxLCAxMDksIDE1NiwgCisgICAgOTQsIDEsIDI0NywgMTUyLCA3MiwgOTQsIDEsIDIwOSwgMjUwLCA3MiwgOTQsIDEsIDcyLCA5NCwgMSwgMjUxLCAxNzYsIDk0LCAKKyAgICAxLCAyNDcsIDE1MiwgNzQsIDk0LCAxLCAyMDksIDI1MCwgNzQsIDk0LCAxLCA3NCwgOTQsIDEsIDI1MCwgMTM5LCA5NCwgMSwgCisgICAgMTYxLCA5NCwgMSwgMjI2LCAyMDcsIDk0LCAxLCAyMzYsIDg5LCA5NCwgMSwgMjM1LCAxOTksIDk0LCAxLCAyMTksIDI1MywgCisgICAgOTQsIDEsIDI0NywgMTkwLCA5NCwgMSwgMjQ3LCAzNywgOTQsIDEsIDIyNywgMjQ4LCA5NCwgMSwgMjI3LCAyMTUsIDk0LCAxLCAKKyAgICAyMTgsIDYwLCA5NCwgMSwgMjA0LCAyNTMsIDk0LCAxLCAyMDQsIDI0MSwgOTQsIDEsIDI0MSwgMjIwLCA5NCwgMSwgMjQxLCAKKyAgICAyMDQsIDk0LCAxLCAyMTksIDIxLCA5NCwgMSwgMjA3LCAzNiwgOTQsIDEsIDIwNiwgMTIyLCA5NCwgMSwgMjQyLCA1OCwgOTQsIAorICAgIDEsIDI0MSwgMTAwLCA5NCwgMSwgMTg4LCA5NCwgMSwgMjE5LCAzLCA5NCwgMSwgMTcyLCA5NCwgMSwgMjE1LCAyNDUsIDk0LCAKKyAgICAxLCAyNDksIDEzNiwgOTQsIDEsIDI0OCwgMjAwLCA5NCwgMSwgMTc4LCA5NCwgMSwgMTgzLCA5NCwgMSwgMjEzLCAyNTIsIAorICAgIDk0LCAxLCAyMTIsIDIxNSwgOTQsIDEsIDE5NCwgOTQsIDEsIDIyNCwgMTM4LCA5NCwgMSwgMjI0LCAxMjksIDk0LCAxLCAKKyAgICAyMDMsIDkwLCA5NCwgMSwgMjEwLCAxMTQsIDk0LCAxLCAyMDgsIDE3OSwgOTQsIDEsIDIxMiwgNjQsIDk0LCAxLCAxNDQsIAorICAgIDk0LCAyMiwgMiwgMjE3LCAxMjEsIDk0LCAyMiwgMiwgMjE3LCA2MSwgOTQsIDIsIDIxOCwgMTAwLCA5NCwgMiwgMjUwLCAKKyAgICAxMjIsIDk0LCAyMiwgMiwgMjUyLCAxMzgsIDk0LCAyMiwgMiwgNzAsIDk0LCAyMiwgMiwgMjI4LCAxNTEsIDk0LCAyMiwgMiwgCisgICAgNjYsIDk0LCAyMiwgMiwgMjAzLCAxODIsIDk0LCAyMiwgMiwgMTA5LCAxNDYsIDk0LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgCisgICAgOTQsIDIyLCAyLCAyNDcsIDE1MiwgNzIsIDk0LCAyMiwgMiwgMjA5LCAyNTAsIDcyLCA5NCwgMjIsIDIsIDcyLCA5NCwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCA5NCwgMjIsIDIsIDI0NywgMTUyLCA3NCwgOTQsIDIyLCAyLCAyMDksIDI1MCwgNzQsIDk0LCAyMiwgMiwgCisgICAgNzQsIDk0LCAyMiwgMiwgMjUwLCAxMzksIDk0LCAyLCAyMDIsIDIwOCwgOTQsIDIyLCAyLCAyMTUsIDYsIDcyLCA5NCwgMjIsIAorICAgIDIsIDI1MCwgMTE3LCA5NCwgMjE3LCA4NiwgOTQsIDIwOCwgNTcsIDIsIDIwNCwgMzMsIDk0LCAyMDgsIDU3LCAyLCAyNTEsIAorICAgIDM1LCA5NCwgMjM1LCA3NCwgMjUxLCAyNTEsIDk0LCAyNTEsIDIzOSwgMjUxLCAyNTEsIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIAorICAgIDE2OCwgNzIsIDk0LCAyMiwgMiwgMjA0LCAzMSwgOTQsIDIyLCAyLCAyMDMsIDE4MSwgOTQsIDEsIDIxNCwgMTU5LCA5NCwgMSwgCisgICAgMjI2LCAxODgsIDk0LCAxLCAyMzUsIDE3NCwgOTQsIDEsIDE5OSwgMTE0LCA5NCwgMSwgMjQxLCAyMDksIDk0LCAxLCAyMTMsIAorICAgIDkzLCA5NCwgMSwgMjM3LCAxOTUsIDk0LCAxLCAxOTksIDE2NiwgOTQsIDEsIDEwOSwgMjEyLCAyMTYsIDk0LCAxLCAxMDksIAorICAgIDIyNCwgMTM5LCA5NCwgMjIsIDIsIDEwOSwgMTU2LCA5NCwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDk0LCAyNDIsIDEwLCA5NCwgCisgICAgNTMsIDI0MiwgMTAsIDk0LCAxNywgMTk5LCA4MSwgOTQsIDE3LCAxMDIsIDk0LCAxNywgMTA1LCA5NCwgMTcsIDE0NywgOTQsIAorICAgIDE3LCAxNDksIDk0LCAxNywgMTY0LCA5NCwgMTcsIDE4NywgOTQsIDE3LCAyMTAsIDEzNSwgOTQsIDE3LCAxOTIsIDk0LCAxNywgCisgICAgMjE5LCAxMTMsIDk0LCAyNTIsIDMsIDU0LCA5NCwgMiwgMTIyLCAyMDgsIDI0MywgMjQwLCAxODIsIDk0LCAxLCAyNDcsIAorICAgIDE1MiwgNjIsIDk0LCAxLCAyMTcsIDEyMSwgOTQsIDEsIDIxNywgNjEsIDk0LCAxLCAyNTAsIDExNywgOTQsIDEsIDIwNCwgCisgICAgMzEsIDk0LCAxLCAyMDMsIDE4MSwgOTQsIDEsIDIyMiwgMTM4LCAyNDEsIDIyMCwgOTQsIDEsIDE5OSwgNzcsIDk0LCAxLCAKKyAgICA4MCwgMTgzLCA5NCwgMSwgMjM1LCAyMzUsIDk0LCAxLCAyMjcsIDE5NCwgOTQsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA5NCwgCisgICAgMSwgMjQxLCAyMTAsIDk0LCAxLCAyNDksIDQ0LCAxODUsIDI1MSwgNjIsIDE4NSwgMiwgMjQ3LCAxNDksIDE4NSwgMiwgMjUxLCAKKyAgICAzMywgMTg1LCAyLCAyMDIsIDIwMywgMTg1LCAxLCA2MiwgMTg1LCAxLCAyNTIsIDEzOCwgMTg1LCAxLCA3MCwgMTg1LCAxLCAKKyAgICAyMjgsIDE1MSwgMTg1LCAxLCA2NiwgMTg1LCAxLCAyMDMsIDE4MiwgMTg1LCAxLCAxMDksIDE0NiwgMTg1LCAxLCAxMDksIAorICAgIDE1NiwgMTg1LCAxLCA3MiwgMTg1LCAxLCAyNTEsIDE3NiwgMTg1LCAxLCA3NCwgMTg1LCAxLCAyNTAsIDEzOSwgMTg1LCAxLCAKKyAgICAxNjEsIDE4NSwgMSwgMjI2LCAyMDcsIDE4NSwgMSwgMjM2LCA4OSwgMTg1LCAxLCAyMzUsIDE5OSwgMTg1LCAxLCAyMTksIAorICAgIDI1MywgMTg1LCAxLCAyNDcsIDE5MCwgMTg1LCAxLCAyNDcsIDM3LCAxODUsIDEsIDIyNywgMjQ4LCAxODUsIDEsIDIyNywgCisgICAgMjE1LCAxODUsIDEsIDIxOCwgNjAsIDE4NSwgMSwgMjA0LCAyNTMsIDE4NSwgMSwgMjA0LCAyNDEsIDE4NSwgMSwgMjQxLCAKKyAgICAyMjAsIDE4NSwgMSwgMjQxLCAyMDQsIDE4NSwgMSwgMjE5LCAyMSwgMTg1LCAxLCAyMDcsIDM2LCAxODUsIDEsIDIwNiwgCisgICAgMTIyLCAxODUsIDEsIDI0MiwgNTgsIDE4NSwgMSwgMjQxLCAxMDAsIDE4NSwgMSwgMTg4LCAxODUsIDEsIDE3MiwgMTg1LCAxLCAKKyAgICAyMTUsIDI0NSwgMTg1LCAxLCAyNDksIDEzNiwgMTg1LCAxLCAyNDgsIDIwMCwgMTg1LCAxLCAxNzgsIDE4NSwgMSwgMTgzLCAKKyAgICAxODUsIDEsIDIxMywgMjUyLCAxODUsIDEsIDE5NCwgMTg1LCAxLCAyMTAsIDExNCwgMTg1LCAxLCAyMDgsIDE3OSwgMTg1LCAKKyAgICAxLCAyMTIsIDY0LCAxODUsIDEsIDE0NCwgMTg1LCAyLCAyMTgsIDEwMCwgMTg1LCAyLCAyNTAsIDEyMiwgMTg1LCAyMiwgMiwgCisgICAgMjUyLCAxMzgsIDE4NSwgMjIsIDIsIDcwLCAxODUsIDIyLCAyLCAyMjgsIDE1MSwgMTg1LCAyMiwgMiwgNjYsIDE4NSwgMjIsIAorICAgIDIsIDIwMywgMTgyLCAxODUsIDIyLCAyLCAxMDksIDE0NiwgMTg1LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTg1LCAyMiwgMiwgCisgICAgNzIsIDE4NSwgMjIsIDIsIDI1MSwgMTc2LCAxODUsIDIyLCAyLCA3NCwgMTg1LCAyMiwgMiwgMjUwLCAxMzksIDE4NSwgMiwgCisgICAgMjAyLCAyMDgsIDE4NSwgMSwgMjI2LCAxOTgsIDIwNywgMzYsIDE4NSwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDE4NSwgMSwgCisgICAgMjEyLCAyMTUsIDE4NSwgMSwgMjEzLCA5MywgMTg1LCAxLCAxOTksIDE2NiwgMTg1LCAxLCAxMDksIDIxMiwgMjE2LCAxODUsIAorICAgIDEsIDEwOSwgMjI0LCAxMzksIDE4NSwgMjIsIDIsIDEwOSwgMTU2LCAxODUsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxODUsIAorICAgIDE3LCAxOTksIDgxLCAxODUsIDE3LCAxMDIsIDE4NSwgMTcsIDEwNSwgMTg1LCAxNywgMTQ3LCAxODUsIDE3LCAxNDksIDE4NSwgCisgICAgMTcsIDE2NCwgMTg1LCAxNywgMTg3LCAxODUsIDE3LCAyMTAsIDEzNSwgMTg1LCAxNywgMTkyLCAxODUsIDE3LCAyMTksIAorICAgIDExMywgMTg1LCAxLCAyMTMsIDI1MywgMywgMTAxLCAyNDEsIDcwLCAxODUsIDEsIDIxMywgMjUzLCAzLCAyMjQsIDU0LCAKKyAgICAyNDEsIDcwLCAxODUsIDIxMiwgMTQ5LCA4MSwgMTg1LCAyMTIsIDE0OSwgNTQsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIAorICAgIDEwMiwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgMTA1LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxNDcsIDE4NSwgMjQyLCAKKyAgICAxOTUsIDIxOCwgOTIsIDE0OSwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgMTEyLCAyMjQsIDI0MiwgMjA2LCAxMTIsIDIwNiwgCisgICAgMTA3LCAyNDEsIDEzMCwgMTg1LCAyNDIsIDE5NSwgMjQxLCAxMzEsIDIwOSwgMTAwLCAxODUsIDIyOCwgMTMsIDE4NSwgMjM2LCAKKyAgICA1NiwgODEsIDIzNSwgMTgsIDIsIDI1MSwgMjM0LCAyNDgsIDE2OCwgMjM1LCAxOCwgMiwgMjQ4LCAxNjgsIDIzNSwgMTgsIDIsIAorICAgIDIwMiwgMjAzLCAyMzUsIDE4LCAxLCA2MiwgMjM1LCAxOCwgMSwgMjUyLCAxMzgsIDIzNSwgMTgsIDEsIDcwLCAyMzUsIDE4LCAKKyAgICAxLCAyMjgsIDE1MSwgMjM1LCAxOCwgMSwgNjYsIDIzNSwgMTgsIDEsIDIwMywgMTgyLCAyMzUsIDE4LCAxLCAyMzgsIDI1NSwgCisgICAgMjM1LCAxOCwgMSwgMjUxLCAxNzYsIDIzNSwgMTgsIDEsIDIxNywgNjMsIDIzNSwgMTgsIDEsIDI1MCwgMTM5LCAyMzUsIDE4LCAKKyAgICAxLCAxNjEsIDIzNSwgMTgsIDEsIDIyNiwgMjA3LCAyMzUsIDE4LCAxLCAyMzYsIDg5LCAyMzUsIDE4LCAxLCAyMzUsIDE5OSwgCisgICAgMjM1LCAxOCwgMSwgMjE5LCAyNTMsIDIzNSwgMTgsIDEsIDI0NywgMTkwLCAyMzUsIDE4LCAxLCAyNDcsIDM3LCAyMzUsIDE4LCAKKyAgICAxLCAyMjcsIDI0OCwgMjM1LCAxOCwgMSwgMjI3LCAyMTUsIDIzNSwgMTgsIDEsIDIxOCwgNjAsIDIzNSwgMTgsIDEsIDIwNCwgCisgICAgMjUzLCAyMzUsIDE4LCAxLCAyMDQsIDI0MSwgMjM1LCAxOCwgMSwgMjQxLCAyMjAsIDIzNSwgMTgsIDEsIDI0MSwgMjA0LCAKKyAgICAyMzUsIDE4LCAxLCAyMTksIDIxLCAyMzUsIDE4LCAxLCAyMDcsIDM2LCAyMzUsIDE4LCAxLCAyMDYsIDEyMiwgMjM1LCAxOCwgCisgICAgMSwgMjQyLCA1OCwgMjM1LCAxOCwgMSwgMjQxLCAxMDAsIDIzNSwgMTgsIDEsIDE4OCwgMjM1LCAxOCwgMSwgMTcyLCAyMzUsIAorICAgIDE4LCAxLCAyMTUsIDI0NSwgMjM1LCAxOCwgMSwgMjQ5LCAxMzYsIDIzNSwgMTgsIDEsIDI0OCwgMjAwLCAyMzUsIDE4LCAxLCAKKyAgICAxNzgsIDIzNSwgMTgsIDEsIDE4MywgMjM1LCAxOCwgMSwgMjEzLCAyNTIsIDIzNSwgMTgsIDEsIDE5NCwgMjM1LCAxOCwgMSwgCisgICAgMjI0LCAxMzgsIDIzNSwgMTgsIDEsIDIwMywgOTAsIDIzNSwgMTgsIDEsIDIxMCwgMTE0LCAyMzUsIDE4LCAxLCAyMTIsIDY0LCAKKyAgICAyMzUsIDE4LCAxLCAxNDQsIDIzNSwgMTgsIDIsIDIxOCwgMTAwLCAyMzUsIDE4LCAyMiwgMiwgMjUyLCAxMzgsIDIzNSwgMTgsIAorICAgIDIyLCAyLCA3MCwgMjM1LCAxOCwgMjIsIDIsIDIyOCwgMTUxLCAyMzUsIDE4LCAyMiwgMiwgNjYsIDIzNSwgMTgsIDIyLCAyLCAKKyAgICAyMDMsIDE4MiwgMjM1LCAxOCwgMjIsIDIsIDIzOCwgMjU1LCAyMzUsIDE4LCAyMiwgMiwgMjUxLCAxNzYsIDIzNSwgMTgsIAorICAgIDIyLCAyLCAyMTcsIDYzLCAyMzUsIDE4LCAyMiwgMiwgMjUwLCAxMzksIDIzNSwgMTgsIDIsIDIwMiwgMjA4LCAyMzUsIDE4LCAKKyAgICAyLCAyMDQsIDM1LCAyMzUsIDE4LCAxLCAyMjYsIDE4OCwgMjM1LCAxOCwgMSwgMjM1LCAxNzQsIDIzNSwgMTgsIDEsIDE5OSwgCisgICAgMTE0LCAyMzUsIDE4LCAxLCAyMTIsIDIxNSwgMjM1LCAxOCwgMSwgMjM3LCAxOTUsIDIzNSwgMTgsIDE3LCAxOTksIDgxLCAKKyAgICAyMzUsIDE4LCAxNywgMTAyLCAyMzUsIDE4LCAxNywgMTA1LCAyMzUsIDE4LCAxNywgMTQ3LCAyMzUsIDE4LCAxNywgMTQ5LCAKKyAgICAyMzUsIDE4LCAxNywgMTY0LCAyMzUsIDE4LCAxNywgMTg3LCAyMzUsIDE4LCAxNywgMjEwLCAxMzUsIDIzNSwgMTgsIDE3LCAKKyAgICAxOTIsIDIzNSwgMTgsIDE3LCAyMTksIDExMywgMjM1LCAxOCwgMjA1LCAyMjEsIDIzNSwgMTgsIDI1MSwgMjMzLCAyMzUsIAorICAgIDE4LCAyMjgsIDMzLCAyMzUsIDE4LCAyMDMsIDIxMCwgMjM1LCAxOCwgMjM4LCAyMTcsIDIxNywgNjgsIDIzNSwgMTgsIDIsIAorICAgIDIwMCwgODQsIDIzNSwgMzMsIDIsIDI0NywgMTQ5LCAyMzUsIDMzLCAyLCAyNTEsIDMzLCAyMzUsIDMzLCAyLCAyMDIsIDIwMywgCisgICAgMjM1LCAzMywgMSwgNjIsIDIzNSwgMzMsIDEsIDI1MiwgMTM4LCAyMzUsIDMzLCAxLCA3MCwgMjM1LCAzMywgMSwgMjI4LCAKKyAgICAxNTEsIDIzNSwgMzMsIDEsIDY2LCAyMzUsIDMzLCAxLCAyMDMsIDE4MiwgMjM1LCAzMywgMSwgMTA5LCAxNDYsIDIzNSwgMzMsIAorICAgIDEsIDEwOSwgMTU2LCAyMzUsIDMzLCAyMiwgMjQ3LCAxNTIsIDcyLCAyMzUsIDMzLCAxLCA3MiwgMjM1LCAzMywgMSwgMjUxLCAKKyAgICAxNzYsIDIzNSwgMzMsIDIyLCAyNDcsIDE1MiwgNzQsIDIzNSwgMzMsIDEsIDc0LCAyMzUsIDMzLCAxLCAyNTAsIDEzOSwgCisgICAgMjM1LCAzMywgMSwgMTYxLCAyMzUsIDMzLCAxLCAyMjYsIDIwNywgMjM1LCAzMywgMSwgMjM2LCA4OSwgMjM1LCAzMywgMSwgCisgICAgMjM1LCAxOTksIDIzNSwgMzMsIDEsIDIxOSwgMjUzLCAyMzUsIDMzLCAxLCAyNDcsIDE5MCwgMjM1LCAzMywgMSwgMjQ3LCAKKyAgICAzNywgMjM1LCAzMywgMSwgMjI3LCAyNDgsIDIzNSwgMzMsIDEsIDIyNywgMjE1LCAyMzUsIDMzLCAxLCAyMTgsIDYwLCAyMzUsIAorICAgIDMzLCAxLCAyMDQsIDI1MywgMjM1LCAzMywgMSwgMjA0LCAyNDEsIDIzNSwgMzMsIDEsIDI0MSwgMjIwLCAyMzUsIDMzLCAxLCAKKyAgICAyNDEsIDIwNCwgMjM1LCAzMywgMSwgMjE5LCAyMSwgMjM1LCAzMywgMSwgMjA3LCAzNiwgMjM1LCAzMywgMSwgMjA2LCAxMjIsIAorICAgIDIzNSwgMzMsIDEsIDI0MiwgNTgsIDIzNSwgMzMsIDEsIDI0MSwgMTAwLCAyMzUsIDMzLCAxLCAxODgsIDIzNSwgMzMsIDEsIAorICAgIDE3MiwgMjM1LCAzMywgMSwgMjE1LCAyNDUsIDIzNSwgMzMsIDEsIDI0OSwgMTM2LCAyMzUsIDMzLCAxLCAyNDgsIDIwMCwgCisgICAgMjM1LCAzMywgMSwgMTc4LCAyMzUsIDMzLCAxLCAxODMsIDIzNSwgMzMsIDEsIDIxMywgMjUyLCAyMzUsIDMzLCAxLCAxOTQsIAorICAgIDIzNSwgMzMsIDEsIDIyNCwgMTM4LCAyMzUsIDMzLCAxLCAyMDMsIDkwLCAyMzUsIDMzLCAxLCAyMTAsIDExNCwgMjM1LCAzMywgCisgICAgMSwgMjA4LCAxNzksIDIzNSwgMzMsIDEsIDIxMiwgNjQsIDIzNSwgMzMsIDEsIDE0NCwgMjM1LCAzMywgMiwgMjE4LCAxMDAsIAorICAgIDIzNSwgMzMsIDIsIDI1MCwgMTIyLCAyMzUsIDMzLCAyMiwgMiwgMjUyLCAxMzgsIDIzNSwgMzMsIDIyLCAyLCA3MCwgMjM1LCAKKyAgICAzMywgMjIsIDIsIDIyOCwgMTUxLCAyMzUsIDMzLCAyMiwgMiwgNjYsIDIzNSwgMzMsIDIyLCAyLCAyMDMsIDE4MiwgMjM1LCAKKyAgICAzMywgMjIsIDIsIDEwOSwgMTQ2LCAyMzUsIDMzLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjM1LCAzMywgMjIsIDIsIDI0NywgCisgICAgMTUyLCA3MiwgMjM1LCAzMywgMjIsIDIsIDcyLCAyMzUsIDMzLCAyMiwgMiwgMjUxLCAxNzYsIDIzNSwgMzMsIDIyLCAyLCAKKyAgICAyNDcsIDE1MiwgNzQsIDIzNSwgMzMsIDIyLCAyLCA3NCwgMjM1LCAzMywgMjIsIDIsIDI1MCwgMTM5LCAyMzUsIDMzLCAyLCAKKyAgICAyMDIsIDIwOCwgMjM1LCAzMywgMjE3LCA4NiwgMjM1LCAzMywgMSwgMTA5LCAyMTIsIDIxNiwgMjM1LCAzMywgMSwgMTA5LCAKKyAgICAyMjQsIDEzOSwgMjM1LCAzMywgMjIsIDIsIDEwOSwgMTU2LCAyMzUsIDMzLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMjM1LCAKKyAgICAzMywgMTcsIDE5OSwgODEsIDIzNSwgMzMsIDE3LCAxMDIsIDIzNSwgMzMsIDE3LCAxMDUsIDIzNSwgMzMsIDE3LCAxNDcsIAorICAgIDIzNSwgMzMsIDE3LCAxNDksIDIzNSwgMzMsIDE3LCAxNjQsIDIzNSwgMzMsIDE3LCAxODcsIDIzNSwgMzMsIDE3LCAyMTAsIAorICAgIDEzNSwgMjM1LCAzMywgMTcsIDE5MiwgMjM1LCAzMywgMTcsIDIxOSwgMTEzLCAyMzUsIDMzLCAyNTIsIDMsIDU0LCAyMzUsIAorICAgIDMzLCAyMTIsIDE0OSwgNTQsIDIzNSwgMzMsIDEsIDE5OSwgNzcsIDIxNywgMjQsIDIsIDI0NywgMTQ5LCAyMTcsIDI0LCAyLCAKKyAgICAyNTEsIDMzLCAyMTcsIDI0LCAyLCAyMDIsIDIwMywgMjE3LCAyNCwgMSwgNjIsIDIxNywgMjQsIDEsIDI1MiwgMTM4LCAyMTcsIAorICAgIDI0LCAxLCA3MCwgMjE3LCAyNCwgMSwgMjI4LCAxNTEsIDIxNywgMjQsIDEsIDY2LCAyMTcsIDI0LCAxLCAyMDMsIDE4MiwgCisgICAgMjE3LCAyNCwgMSwgMTA5LCAxNDYsIDIxNywgMjQsIDEsIDEwOSwgMTU2LCAyMTcsIDI0LCAxLCA3MiwgMjE3LCAyNCwgMSwgCisgICAgMjUxLCAxNzYsIDIxNywgMjQsIDEsIDc0LCAyMTcsIDI0LCAxLCAyNTAsIDEzOSwgMjE3LCAyNCwgMSwgMTYxLCAyMTcsIDI0LCAKKyAgICAxLCAyMjYsIDIwNywgMjE3LCAyNCwgMSwgMjM2LCA4OSwgMjE3LCAyNCwgMSwgMjM1LCAxOTksIDIxNywgMjQsIDEsIDIxOSwgCisgICAgMjUzLCAyMTcsIDI0LCAxLCAyNDcsIDE5MCwgMjE3LCAyNCwgMSwgMjQ3LCAzNywgMjE3LCAyNCwgMSwgMjI3LCAyNDgsIAorICAgIDIxNywgMjQsIDEsIDIyNywgMjE1LCAyMTcsIDI0LCAxLCAyMTgsIDYwLCAyMTcsIDI0LCAxLCAyMDQsIDI1MywgMjE3LCAyNCwgCisgICAgMSwgMjA0LCAyNDEsIDIxNywgMjQsIDEsIDI0MSwgMjIwLCAyMTcsIDI0LCAxLCAyNDEsIDIwNCwgMjE3LCAyNCwgMSwgMjE5LCAKKyAgICAyMSwgMjE3LCAyNCwgMSwgMjA3LCAzNiwgMjE3LCAyNCwgMSwgMjA2LCAxMjIsIDIxNywgMjQsIDEsIDI0MiwgNTgsIDIxNywgCisgICAgMjQsIDEsIDI0MSwgMTAwLCAyMTcsIDI0LCAxLCAxODgsIDIxNywgMjQsIDEsIDE3MiwgMjE3LCAyNCwgMSwgMjE1LCAyNDUsIAorICAgIDIxNywgMjQsIDEsIDI0OSwgMTM2LCAyMTcsIDI0LCAxLCAyNDgsIDIwMCwgMjE3LCAyNCwgMSwgMTc4LCAyMTcsIDI0LCAxLCAKKyAgICAxODMsIDIxNywgMjQsIDEsIDIxMywgMjUyLCAyMTcsIDI0LCAxLCAxOTQsIDIxNywgMjQsIDEsIDIyNCwgMTM4LCAyMTcsIAorICAgIDI0LCAxLCAyMDMsIDkwLCAyMTcsIDI0LCAxLCAyMTAsIDExNCwgMjE3LCAyNCwgMSwgMjA4LCAxNzksIDIxNywgMjQsIDEsIAorICAgIDIxMiwgNjQsIDIxNywgMjQsIDEsIDE0NCwgMjE3LCAyNCwgMiwgMjE4LCAxMDAsIDIxNywgMjQsIDIsIDI1MCwgMTIyLCAKKyAgICAyMTcsIDI0LCAyMiwgMiwgMjUyLCAxMzgsIDIxNywgMjQsIDIyLCAyLCA3MCwgMjE3LCAyNCwgMjIsIDIsIDIyOCwgMTUxLCAKKyAgICAyMTcsIDI0LCAyMiwgMiwgNjYsIDIxNywgMjQsIDIyLCAyLCAyMDMsIDE4MiwgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAyMTcsIDI0LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjE3LCAyNCwgMjIsIDIsIDcyLCAyMTcsIDI0LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIxNywgMjQsIDIyLCAyLCA3NCwgMjE3LCAyNCwgMjIsIDIsIDI1MCwgMTM5LCAyMTcsIDI0LCAyLCAyMDIsIDIwOCwgCisgICAgMjE3LCAyNCwgMjUxLCAxNzcsIDIyNSwgMiwgODEsIDIxNywgMjQsIDI1MCwgMTQwLCAyMjUsIDIsIDgxLCAyMTcsIDI0LCAxLCAKKyAgICAyMTIsIDIxNSwgMjE3LCAyNCwgMSwgMjEzLCA5MywgMjE3LCAyNCwgMSwgMTk5LCAxNjYsIDIxNywgMjQsIDEsIDEwOSwgCisgICAgMjEyLCAyMTYsIDIxNywgMjQsIDEsIDEwOSwgMjI0LCAxMzksIDIxNywgMjQsIDIyLCAyLCAxMDksIDE1NiwgMjE3LCAyNCwgCisgICAgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDIxNywgMjQsIDE3LCAxOTksIDgxLCAyMTcsIDI0LCAxNywgMTAyLCAyMTcsIDI0LCAKKyAgICAxNywgMTA1LCAyMTcsIDI0LCAxNywgMTQ3LCAyMTcsIDI0LCAxNywgMTQ5LCAyMTcsIDI0LCAxNywgMTY0LCAyMTcsIDI0LCAKKyAgICAxNywgMTg3LCAyMTcsIDI0LCAxNywgMjEwLCAxMzUsIDIxNywgMjQsIDE3LCAxOTIsIDIxNywgMjQsIDE3LCAyMTksIDExMywgCisgICAgMjE3LCAyNCwgMjI4LCAxMywgMjE3LCAyNCwgMSwgMjAxLCAxMTQsIDIxNywgMjQsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIAorICAgIDIxNywgMjQsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMTcsIDI0LCAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAyMTcsIAorICAgIDI0LCAyMzYsIDIxOSwgMTEyLCAyMDksIDk4LCAyMTcsIDI0LCAyMzYsIDIxOSwgMTEyLCAyMzgsIDIyNywgMjE3LCAyNCwgCisgICAgMjM2LCAyMTksIDEyNiwgMjA5LCA5NywgNDUsIDIsIDI1MSwgMzMsIDQ1LCAyLCAyMDIsIDIwMywgNDUsIDEsIDYyLCA0NSwgCisgICAgMSwgMjUyLCAxMzgsIDQ1LCAxLCA3MCwgNDUsIDEsIDIyOCwgMTUxLCA0NSwgMSwgNjYsIDQ1LCAxLCAyMDMsIDE4MiwgNDUsIAorICAgIDEsIDcyLCA0NSwgMSwgMjM4LCAyNTUsIDQ1LCAxLCAyNTEsIDE3NiwgNDUsIDEsIDc0LCA0NSwgMSwgMjE3LCA2MywgNDUsIAorICAgIDEsIDI1MCwgMTM5LCA0NSwgMSwgMTYxLCA0NSwgMSwgMjE5LCAyNTMsIDQ1LCAxLCAyNDcsIDE5MCwgNDUsIDEsIDIyNywgCisgICAgMjQ4LCA0NSwgMSwgMjE4LCA2MCwgNDUsIDEsIDIwNCwgMjUzLCA0NSwgMSwgMjE5LCAyMSwgNDUsIDEsIDIwNywgMzYsIDQ1LCAKKyAgICAxLCAxODgsIDQ1LCAxLCAyMTksIDMsIDQ1LCAxLCAxNzIsIDQ1LCAxLCAxNzgsIDQ1LCAxLCAxODMsIDQ1LCAxLCAyMTMsIAorICAgIDI1MiwgNDUsIDEsIDIxMiwgMjE1LCA0NSwgMSwgMTk0LCA0NSwgMSwgMjI0LCAxMzgsIDQ1LCAxLCAyMjQsIDEyOSwgNDUsIAorICAgIDEsIDIwMywgOTAsIDQ1LCAxLCAyMTAsIDExNCwgNDUsIDEsIDIwOCwgMTc5LCA0NSwgMSwgMjEyLCA2NCwgNDUsIDEsIDE0NCwgCisgICAgNDUsIDIyLCAyLCAyNTIsIDEzOCwgNDUsIDIyLCAyLCA3MCwgNDUsIDIyLCAyLCAyMjgsIDE1MSwgNDUsIDIyLCAyLCA2NiwgCisgICAgNDUsIDIyLCAyLCAyMDMsIDE4MiwgNDUsIDIyLCAyLCA3MiwgNDUsIDIyLCAyLCAyMzgsIDI1NSwgNDUsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgNDUsIDIyLCAyLCA3NCwgNDUsIDIyLCAyLCAyMTcsIDYzLCA0NSwgMjIsIDIsIDI1MCwgMTM5LCA0NSwgMiwgMjAyLCAKKyAgICAyMDgsIDQ1LCAyMTcsIDg2LCA0NSwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDQ1LCAxNywgMTk5LCA4MSwgNDUsIDE3LCAxMDIsIAorICAgIDQ1LCAxNywgMTA1LCA0NSwgMTcsIDE0NywgNDUsIDE3LCAxNDksIDQ1LCAxNywgMTY0LCA0NSwgMTcsIDE4NywgNDUsIDE3LCAKKyAgICAyMTAsIDEzNSwgNDUsIDE3LCAxOTIsIDQ1LCAxNywgMjE5LCAxMTMsIDQ1LCA0MSwgMjA2LCAxNjYsIDQ1LCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCA0NSwgNDEsIDExMiwgMjA2LCA1MCwgNDUsIDI0MSwgMjMzLCA1NCwgNDUsIDIyMSwgOTAsIDU0LCA0NSwgCisgICAgMjAwLCA0OSwgNTQsIDQ1LCAyNDEsIDE3MiwgNTQsIDQ1LCAyNDIsIDI0NiwgNTQsIDQ1LCAyNTAsIDE4OSwgODgsIDU0LCAKKyAgICA0NSwgMjEyLCAxNDksIDU0LCA0NSwgNDEsIDU0LCAxODAsIDIsIDM4LCAyNDcsIDE1MCwgNTYsIDE4MCwgMiwgMjQ3LCAxNDksIAorICAgIDE4MCwgMiwgMjUxLCAzMywgMTgwLCAyLCAyMDIsIDIwMywgMTgwLCAxLCA2MiwgMTgwLCAxLCAyNTIsIDEzOCwgMTgwLCAxLCAKKyAgICA3MCwgMTgwLCAxLCAyMjgsIDE1MSwgMTgwLCAxLCA2NiwgMTgwLCAxLCAyMDMsIDE4MiwgMTgwLCAxLCAxMDksIDE0NiwgCisgICAgMTgwLCAxLCAxMDksIDE1NiwgMTgwLCAxLCA3MiwgMTgwLCAxLCAyMzgsIDI1NSwgMTgwLCAxLCAyNTEsIDE3NiwgMTgwLCAxLCAKKyAgICA3NCwgMTgwLCAxLCAyMTcsIDYzLCAxODAsIDEsIDI1MCwgMTM5LCAxODAsIDEsIDE2MSwgMTgwLCAxLCAyMjYsIDIwNywgCisgICAgMTgwLCAxLCAyMzYsIDg5LCAxODAsIDEsIDIzNSwgMTk5LCAxODAsIDEsIDIxOSwgMjUzLCAxODAsIDEsIDI0NywgMTkwLCAKKyAgICAxODAsIDEsIDI0NywgMzcsIDE4MCwgMSwgMjI3LCAyNDgsIDE4MCwgMSwgMjI3LCAyMTUsIDE4MCwgMSwgMjE4LCA2MCwgCisgICAgMTgwLCAxLCAyMDQsIDI1MywgMTgwLCAxLCAyMDQsIDI0MSwgMTgwLCAxLCAyNDEsIDIyMCwgMTgwLCAxLCAyNDEsIDIwNCwgCisgICAgMTgwLCAxLCAyMTksIDIxLCAxODAsIDEsIDIwNywgMzYsIDE4MCwgMSwgMjA2LCAxMjIsIDE4MCwgMSwgMjQyLCA1OCwgMTgwLCAKKyAgICAxLCAyNDEsIDEwMCwgMTgwLCAxLCAxODgsIDE4MCwgMSwgMTcyLCAxODAsIDEsIDIxNSwgMjQ1LCAxODAsIDEsIDI0OSwgCisgICAgMTM2LCAxODAsIDEsIDI0OCwgMjAwLCAxODAsIDEsIDE3OCwgMTgwLCAxLCAxODMsIDE4MCwgMSwgMjEzLCAyNTIsIDE4MCwgCisgICAgMSwgMjEyLCAyMTUsIDE4MCwgMSwgMTk0LCAxODAsIDEsIDIyNCwgMTM4LCAxODAsIDEsIDIyNCwgMTI5LCAxODAsIDEsIAorICAgIDIwMywgOTAsIDE4MCwgMSwgMjEwLCAxMTQsIDE4MCwgMSwgMjA4LCAxNzksIDE4MCwgMSwgMjEyLCA2NCwgMTgwLCAxLCAKKyAgICAxNDQsIDE4MCwgMiwgMjUwLCAxMjIsIDE4MCwgMjIsIDIsIDI1MiwgMTM4LCAxODAsIDIyLCAyLCA3MCwgMTgwLCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE4MCwgMjIsIDIsIDY2LCAxODAsIDIyLCAyLCAyMDMsIDE4MiwgMTgwLCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE4MCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE4MCwgMjIsIDIsIDcyLCAxODAsIDIyLCAyLCAyMzgsIDI1NSwgMTgwLCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDE4MCwgMjIsIDIsIDc0LCAxODAsIDIyLCAyLCAyMTcsIDYzLCAxODAsIDIyLCAyLCAyNTAsIDEzOSwgCisgICAgMTgwLCAyLCAyMDIsIDIwOCwgMTgwLCAyMjUsIDIsIDgxLCAxODAsIDI1MSwgMTc3LCAyMjUsIDIsIDgxLCAxODAsIDEsIAorICAgIDIwNSwgMzIsIDE4MCwgMSwgMjM5LCA5MywgMTgwLCAxLCAyMTIsIDE5NiwgMTgwLCAxLCAxMDksIDIxMiwgMjE2LCAxODAsIAorICAgIDEsIDEwOSwgMjI0LCAxMzksIDE4MCwgMjIsIDIsIDEwOSwgMTU2LCAxODAsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxODAsIAorICAgIDE3LCAxOTksIDgxLCAxODAsIDE3LCAxMDIsIDE4MCwgMTcsIDEwNSwgMTgwLCAxNywgMTQ3LCAxODAsIDE3LCAxNDksIDE4MCwgCisgICAgMTcsIDE2NCwgMTgwLCAxNywgMTg3LCAxODAsIDE3LCAyMTAsIDEzNSwgMTgwLCAxNywgMTkyLCAxODAsIDE3LCAyMTksIAorICAgIDExMywgMTgwLCAyMzYsIDIxOSwgMTcsIDE5OSwgODIsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAKKyAgICAyMzYsIDIxOSwgMTcsIDExMiwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgCisgICAgMTIwLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAxMjYsIDM2LCAyMTcsIAorICAgIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDExMiwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAKKyAgICAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAxMjAsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgCisgICAgMjE5LCAxNywgMTI2LCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyLCAyMDQsIDE3NSwgMjI3LCA2MywgCisgICAgMiwgMjA4LCAyNDMsIDI0NywgMTQ5LCAyMjcsIDYzLCAyLCAyNDcsIDE0OSwgMjI3LCA2MywgMiwgMjUxLCAzMywgMjI3LCAKKyAgICA2MywgMiwgMjAyLCAyMDMsIDIyNywgNjMsIDEsIDYyLCAyMjcsIDYzLCAxLCAyNTIsIDEzOCwgMjI3LCA2MywgMSwgNzAsIAorICAgIDIyNywgNjMsIDEsIDIyOCwgMTUxLCAyMjcsIDYzLCAxLCA2NiwgMjI3LCA2MywgMSwgMjAzLCAxODIsIDIyNywgNjMsIDEsIAorICAgIDEwOSwgMTQ2LCAyMjcsIDYzLCAxLCAxMDksIDE1NiwgMjI3LCA2MywgMSwgNzIsIDIyNywgNjMsIDEsIDIzOCwgMjU1LCAKKyAgICAyMjcsIDYzLCAxLCAyNTEsIDE3NiwgMjI3LCA2MywgMSwgNzQsIDIyNywgNjMsIDEsIDIxNywgNjMsIDIyNywgNjMsIDEsIAorICAgIDI1MCwgMTM5LCAyMjcsIDYzLCAxLCAxNjEsIDIyNywgNjMsIDEsIDIyNiwgMjA3LCAyMjcsIDYzLCAxLCAyMzYsIDg5LCAKKyAgICAyMjcsIDYzLCAxLCAyMzUsIDE5OSwgMjI3LCA2MywgMSwgMjE5LCAyNTMsIDIyNywgNjMsIDEsIDI0NywgMTkwLCAyMjcsIAorICAgIDYzLCAxLCAyNDcsIDM3LCAyMjcsIDYzLCAxLCAyMjcsIDI0OCwgMjI3LCA2MywgMSwgMjI3LCAyMTUsIDIyNywgNjMsIDEsIAorICAgIDIxOCwgNjAsIDIyNywgNjMsIDEsIDIwNCwgMjUzLCAyMjcsIDYzLCAxLCAyMDQsIDI0MSwgMjI3LCA2MywgMSwgMjQxLCAKKyAgICAyMjAsIDIyNywgNjMsIDEsIDI0MSwgMjA0LCAyMjcsIDYzLCAxLCAyMTksIDIxLCAyMjcsIDYzLCAxLCAyMDcsIDM2LCAyMjcsIAorICAgIDYzLCAxLCAyMDYsIDEyMiwgMjI3LCA2MywgMSwgMjQyLCA1OCwgMjI3LCA2MywgMSwgMjQxLCAxMDAsIDIyNywgNjMsIDEsIAorICAgIDE4OCwgMjI3LCA2MywgMSwgMTcyLCAyMjcsIDYzLCAxLCAyMTUsIDI0NSwgMjI3LCA2MywgMSwgMjQ5LCAxMzYsIDIyNywgCisgICAgNjMsIDEsIDI0OCwgMjAwLCAyMjcsIDYzLCAxLCAxNzgsIDIyNywgNjMsIDEsIDE4MywgMjI3LCA2MywgMSwgMjEzLCAyNTIsIAorICAgIDIyNywgNjMsIDEsIDIxMiwgMjE1LCAyMjcsIDYzLCAxLCAxOTQsIDIyNywgNjMsIDEsIDIyNCwgMTM4LCAyMjcsIDYzLCAxLCAKKyAgICAyMDMsIDkwLCAyMjcsIDYzLCAxLCAyMTAsIDExNCwgMjI3LCA2MywgMSwgMjA4LCAxNzksIDIyNywgNjMsIDEsIDIxMiwgNjQsIAorICAgIDIyNywgNjMsIDEsIDE0NCwgMjI3LCA2MywgMiwgMjE4LCAxMDAsIDIyNywgNjMsIDIsIDI1MCwgMTIyLCAyMjcsIDYzLCAyMiwgCisgICAgMiwgMjUyLCAxMzgsIDIyNywgNjMsIDIyLCAyLCA3MCwgMjI3LCA2MywgMjIsIDIsIDIyOCwgMTUxLCAyMjcsIDYzLCAyMiwgCisgICAgMiwgNjYsIDIyNywgNjMsIDIyLCAyLCAyMDMsIDE4MiwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMTQ2LCAyMjcsIDYzLCAyMiwgCisgICAgMiwgMTA5LCAyMTIsIDIxNiwgMjI3LCA2MywgMjIsIDIsIDcyLCAyMjcsIDYzLCAyMiwgMiwgMjM4LCAyNTUsIDIyNywgNjMsIAorICAgIDIyLCAyLCAyNTEsIDE3NiwgMjI3LCA2MywgMjIsIDIsIDc0LCAyMjcsIDYzLCAyMiwgMiwgMjE3LCA2MywgMjI3LCA2MywgCisgICAgMjIsIDIsIDI1MCwgMTM5LCAyMjcsIDYzLCAyLCAyMDIsIDIwOCwgMjI3LCA2MywgMjI1LCAyLCA4MSwgMjI3LCA2MywgMjUxLCAKKyAgICAxNzcsIDIyNSwgMiwgODEsIDIyNywgNjMsIDEsIDIzNywgMTk1LCAyMjcsIDYzLCAxLCAxMDksIDIxMiwgMjE2LCAyMjcsIAorICAgIDYzLCAxLCAxMDksIDIyNCwgMTM5LCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAxNTYsIDIyNywgNjMsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCAyMjcsIDYzLCAxNywgMTk5LCA4MSwgMjI3LCA2MywgMTcsIDEwMiwgMjI3LCA2MywgMTcsIDEwNSwgMjI3LCA2MywgCisgICAgMTcsIDE0NywgMjI3LCA2MywgMTcsIDE0OSwgMjI3LCA2MywgMTcsIDE2NCwgMjI3LCA2MywgMTcsIDE4NywgMjI3LCA2MywgCisgICAgMTcsIDIxMCwgMTM1LCAyMjcsIDYzLCAxNywgMTkyLCAyMjcsIDYzLCAxNywgMjE5LCAxMTMsIDIyNywgNjMsIDIsIDIyNywgCisgICAgMjAxLCAyMjcsIDYzLCAyLCAyMDMsIDIyNiwgMTQyLCAyLCAyNDcsIDE0OSwgMTQyLCAyLCAyNTEsIDMzLCAxNDIsIDIsIAorICAgIDIwMiwgMjAzLCAxNDIsIDEsIDYyLCAxNDIsIDEsIDI1MiwgMTM4LCAxNDIsIDEsIDcwLCAxNDIsIDEsIDIyOCwgMTUxLCAKKyAgICAxNDIsIDEsIDY2LCAxNDIsIDEsIDIwMywgMTgyLCAxNDIsIDEsIDEwOSwgMTQ2LCAxNDIsIDEsIDEwOSwgMTU2LCAxNDIsIDEsIAorICAgIDcyLCAxNDIsIDEsIDIzOCwgMjU1LCAxNDIsIDEsIDI1MSwgMTc2LCAxNDIsIDEsIDc0LCAxNDIsIDEsIDIxNywgNjMsIDE0MiwgCisgICAgMSwgMjUwLCAxMzksIDE0MiwgMSwgMTYxLCAxNDIsIDEsIDIyNiwgMjA3LCAxNDIsIDEsIDIzNiwgODksIDE0MiwgMSwgMjM1LCAKKyAgICAxOTksIDE0MiwgMSwgMjE5LCAyNTMsIDE0MiwgMSwgMjQ3LCAxOTAsIDE0MiwgMSwgMjQ3LCAzNywgMTQyLCAxLCAyMjcsIAorICAgIDI0OCwgMTQyLCAxLCAyMjcsIDIxNSwgMTQyLCAxLCAyMTgsIDYwLCAxNDIsIDEsIDIwNCwgMjUzLCAxNDIsIDEsIDIwNCwgCisgICAgMjQxLCAxNDIsIDEsIDI0MSwgMjIwLCAxNDIsIDEsIDI0MSwgMjA0LCAxNDIsIDEsIDIxOSwgMjEsIDE0MiwgMSwgMjA3LCAKKyAgICAzNiwgMTQyLCAxLCAyMDYsIDEyMiwgMTQyLCAxLCAyNDIsIDU4LCAxNDIsIDEsIDI0MSwgMTAwLCAxNDIsIDEsIDE4OCwgCisgICAgMTQyLCAxLCAyMTksIDMsIDE0MiwgMSwgMTcyLCAxNDIsIDEsIDIxNSwgMjQ1LCAxNDIsIDEsIDI0OSwgMTM2LCAxNDIsIDEsIAorICAgIDI0OCwgMjAwLCAxNDIsIDEsIDE3OCwgMTQyLCAxLCAxODMsIDE0MiwgMSwgMjEzLCAyNTIsIDE0MiwgMSwgMjEyLCAyMTUsIAorICAgIDE0MiwgMSwgMTk0LCAxNDIsIDEsIDIyNCwgMTM4LCAxNDIsIDEsIDIyNCwgMTI5LCAxNDIsIDEsIDIwMywgOTAsIDE0MiwgMSwgCisgICAgMjEwLCAxMTQsIDE0MiwgMSwgMjA4LCAxNzksIDE0MiwgMSwgMjEyLCA2NCwgMTQyLCAxLCAxNDQsIDE0MiwgMSwgMjA0LCAKKyAgICAyMjIsIDE0MiwgMiwgMjUwLCAxMjIsIDE0MiwgMjIsIDIsIDI1MiwgMTM4LCAxNDIsIDIyLCAyLCA3MCwgMTQyLCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE0MiwgMjIsIDIsIDY2LCAxNDIsIDIyLCAyLCAyMDMsIDE4MiwgMTQyLCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE0MiwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE0MiwgMjIsIDIsIDcyLCAxNDIsIDIyLCAyLCAyMzgsIDI1NSwgMTQyLCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDE0MiwgMjIsIDIsIDc0LCAxNDIsIDIyLCAyLCAyMTcsIDYzLCAxNDIsIDIyLCAyLCAyNTAsIDEzOSwgCisgICAgMTQyLCAyLCAyMDIsIDIwOCwgMTQyLCAxLCA3MywgMjEzLCAxMjksIDE0MiwgMiwgMjE2LCAxMjksIDE0MiwgMSwgMjQ2LCAKKyAgICAyMjUsIDIyMywgMjQzLCAxNDIsIDEsIDI0NiwgMjI1LCAyMDAsIDEyMywgMTQyLCAxLCAyNDYsIDIyNSwgMjI0LCAxMzAsIAorICAgIDE0MiwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDE0MiwgMjM2LCAyMTksIDExMiwgMjE3LCA3NCwgMTQyLCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMzYsIDIzNywgMTQyLCAyMzYsIDIxOSwgMTI2LCAyMzgsIDIyNCwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMDQsIAorICAgIDE2MiwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMDYsIDE1NywgMTQyLCAyMzYsIDIxOSwgMTI2LCAyMDQsIDE2MSwgMTQyLCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMzcsIDEwNywgMTQyLCAxLCAyNTAsIDIzNCwgMjI4LCAxNTEsIDE0MiwgMSwgMTA5LCAyMTIsIAorICAgIDIxNiwgMTQyLCAxLCAxMDksIDIyNCwgMTM5LCAxNDIsIDIyLCAyLCAxMDksIDE1NiwgMTQyLCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgMTQyLCAxNywgMTk5LCA4MSwgMTQyLCAxNywgMTAyLCAxNDIsIDE3LCAxMDUsIDE0MiwgMTcsIDE0NywgMTQyLCAxNywgCisgICAgMTQ5LCAxNDIsIDE3LCAxNjQsIDE0MiwgMTcsIDE4NywgMTQyLCAxNywgMjEwLCAxMzUsIDE0MiwgMTcsIDE5MiwgMTQyLCAKKyAgICAxNywgMjE5LCAxMTMsIDE0MiwgNDEsIDIwNiwgMTY2LCAxNDIsIDQxLCAxMTIsIDIzMywgODIsIDE0MiwgNDEsIDExMiwgCisgICAgMjA2LCA1MCwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMTQsIDg3LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAxNDIsIAorICAgIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDE0MiwgMjM2LCAyMTksIDExMiwgMjA5LCA5OCwgMTQyLCAyMzYsIDIxOSwgMTEyLCAKKyAgICAyMzgsIDIyNywgMTQyLCAyMzYsIDIxOSwgMTI2LCAyMDksIDk3LCAxNDIsIDI0MSwgMjM4LCA4MSwgMTQyLCAxLCAyNDYsIAorICAgIDIyNSwgMjE5LCAyMiwgMTQyLCAxLCAyNDYsIDIyNSwgMjIwLCAyMTQsIDE0MiwgMSwgMjQ2LCAyMjUsIDIxMiwgMjE2LCAKKyAgICAxNDIsIDEsIDI0NiwgMjI1LCAxNTYsIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNCwgMTM5LCAxNDIsIDEsIDI0NiwgMjI1LCAyMjcsIAorICAgIDExOCwgMTQzLCAyLCAyNTEsIDMyLCAxNDMsIDIsIDIwMiwgMjAyLCAxNDMsIDEsIDI1MCwgMTEwLCAxNDMsIDEsIDI1MiwgCisgICAgOTIsIDE0MywgMSwgMjUxLCAyMDEsIDE0MywgMSwgMjUxLCAyMTYsIDE0MywgMSwgMjI4LCAyLCAxNDMsIDEsIDIyOCwgMTUwLCAKKyAgICAxNDMsIDEsIDIwMywgMTczLCAxNDMsIDEsIDIwMywgMTc2LCAxNDMsIDEsIDIyOCwgMjgsIDE0MywgMSwgMjI4LCAyOSwgCisgICAgMTQzLCAxLCAyMjgsIDEzNiwgMTQzLCAxLCAyMjgsIDEzOCwgMTQzLCAxLCAyMzgsIDI1LCAxNDMsIDEsIDIzOCwgMjUwLCAKKyAgICAxNDMsIDEsIDI1MSwgMTYxLCAxNDMsIDEsIDIxNiwgMjI5LCAxNDMsIDEsIDIxNywgNTYsIDE0MywgMSwgMjUwLCAxMjUsIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDIyNywgMTMsIDE0MywgMSwgMjIyLCAyMDUsIDIyNywgMTMsIDE0MywgMSwgMjUxLCAxMTUsIAorICAgIDIzNiwgMzUsIDE0MywgMSwgMjIyLCAyMDUsIDIzNiwgMzUsIDE0MywgMSwgMjI3LCA2MiwgMjIwLCAxNTQsIDE0MywgMSwgCisgICAgMjEyLCA1LCAyMzYsIDM1LCAxNDMsIDEsIDI1MSwgMTE1LCAyNDcsIDEwMiwgMTQzLCAxLCAyMjIsIDIwNSwgMjQ3LCAxMDIsIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDIyNywgMjMwLCAxNDMsIDEsIDIyMiwgMjA1LCAyMjcsIDIzMCwgMTQzLCAxLCAyMDcsIDI5LCAKKyAgICAyMjAsIDE1NCwgMTQzLCAxLCAyMDcsIDI5LCAyMTIsIDQsIDIyMCwgMTU1LCAxNDMsIDEsIDIxMiwgNSwgMjI3LCAyMzAsIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDIwNCwgMjQ5LCAxNDMsIDEsIDIyMiwgMjA1LCAyMDQsIDI0OSwgMTQzLCAxLCAyNTEsIDExNSwgCisgICAgMjQxLCAyMTEsIDE0MywgMSwgMjIyLCAyMDUsIDI0MSwgMjExLCAxNDMsIDEsIDIyMCwgMjQyLCAyMjAsIDEwOCwgMTQzLCAxLCAKKyAgICAyMTIsIDUsIDI0MSwgMjExLCAxNDMsIDEsIDI1MSwgMTE1LCAyMDYsIDIwOSwgMTQzLCAxLCAyMjIsIDIwNSwgMjA2LCAyMDksIAorICAgIDE0MywgMSwgMjUxLCAxMTUsIDI0MSwgMjMxLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDEsIDIzMSwgMTQzLCAxLCAyNDIsIDYsIAorICAgIDIyMCwgMTA4LCAxNDMsIDEsIDIxMiwgNSwgMjQxLCAyMzEsIDE0MywgMSwgMjUxLCAxMTUsIDIxNiwgODEsIDE0MywgMSwgCisgICAgMjIyLCAyMDUsIDIxNiwgODEsIDE0MywgMSwgMjUxLCAxMTUsIDI0OSwgNDYsIDE0MywgMSwgMjIyLCAyMDUsIDI0OSwgNDYsIAorICAgIDE0MywgMSwgMjIyLCAxMTgsIDE0MywgMSwgMjUxLCA5NSwgMjQ5LCA0NiwgMTQzLCAxLCAyMDAsIDU2LCAxNDMsIDEsIDIxMywgCisgICAgMTk2LCAxNDMsIDEsIDI0MiwgNiwgMjI1LCA0OSwgMTQzLCAxLCAyMDMsIDYxLCAxNDMsIDEsIDIwNywgMjksIDIxMSwgMjMzLCAKKyAgICAxNDMsIDEsIDIyMCwgMjQyLCAyMTEsIDIzMywgMTQzLCAxLCAyNDIsIDYsIDIxMSwgMjMzLCAxNDMsIDEsIDIzNCwgMTQ1LCAKKyAgICAxNDMsIDEsIDIyMCwgMjQyLCAyMjUsIDQ5LCAxNDMsIDEsIDIzNywgMTQ5LCAxNDMsIDIsIDI1MSwgMTUwLCAxNDMsIDIyLCAKKyAgICAyLCAyNTEsIDIxMSwgMTQzLCAyMiwgMiwgMjI2LCAyMzIsIDI1MSwgMjE4LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyNTEsIAorICAgIDIxOCwgMTQzLCAyMiwgMiwgMjI2LCAyMzIsIDIyOCwgMjUsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIyOCwgMjUsIDE0MywgCisgICAgMjIsIDIsIDIyNiwgMjMyLCAyMTYsIDIwOSwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjE2LCAyMDksIDE0MywgMjIsIDIsIAorICAgIDIzNiwgNzgsIDE0MywgMjIsIDIsIDIyNiwgNzMsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDIyNiwgNzMsIDE0MywgMjIsIDIsIAorICAgIDIyNiwgNzUsIDI0MSwgMTUwLCAxNDMsIDIyLCAyLCAyMjYsIDc0LCAyMzQsIDIzNCwgMjUxLCAyMTEsIDE0MywgMjIsIDIsIAorICAgIDIyNiwgNzQsIDIzNCwgMjM0LCAyNDEsIDQzLCAyNTEsIDIxMSwgMTQzLCAyMiwgMiwgMjI2LCA3NCwgMjM0LCAyMzQsIDIzNiwgCisgICAgMzQsIDE0MywgMjIsIDIsIDIzNiwgMzQsIDE0MywgMjI0LCAxNTEsIDE3LCAxOTksIDgxLCAxNDMsIDIyNCwgMTUxLCAxNywgCisgICAgMTAyLCAxNDMsIDIyNCwgMTUxLCAxNywgMTA1LCAxNDMsIDIyNCwgMTUxLCAxNywgMTQ3LCAxNDMsIDIyNCwgMTUxLCAxNywgCisgICAgMTQ5LCAxNDMsIDIyNCwgMTUxLCAxNywgMTY0LCAxNDMsIDIyNCwgMTUxLCAxNywgMTg3LCAxNDMsIDIyNCwgMTUxLCAxNywgCisgICAgMjEwLCAxMzUsIDE0MywgMjI0LCAxNTEsIDE3LCAxOTIsIDE0MywgMjI0LCAxNTEsIDE3LCAyMTksIDExMywgMTQzLCAyMiwgCisgICAgMiwgMjQxLCA0MywgMjM2LCA3OCwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjM2LCAzNCwgMTQzLCAyMTQsIDIxMiwgMjI2LCAwLCAKKyAgICAyMDYsIDExNywgMTcxLCAyMjYsIDg5LCAyMjcsIDgyLCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAyMDIsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE3MSwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTY2LCAyMDYsIAorICAgIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNzUsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMTMsIDIxNywgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjE5LCAxNzksIDIxOSwgMTY2LCAyMDYsIDExNywgMTcxLCAyNDYsIDIxMSwgMjQ3LCAyNiwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjQ2LCAyMTEsIDI0NiwgMjIxLCAyMDYsIDExNywgMTcxLCAyNDYsIDIxMSwgMjQ3LCAyNSwgMjA2LCAxMTcsIDE3MSwgCisgICAgMjA5LCAzMCwgMjA5LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjQ2LCAyMTEsIDI0NiwgMjA3LCAyMDYsIDExNywgMTcxLCAxOTksIAorICAgIDI0NiwgMTk5LCAyNTMsIDIwNiwgMTE3LCAxNzEsIDI0MCwgMjEyLCAyNDcsIDM0LCAyMDYsIDExNywgMTcxLCAyMDUsIDE4NiwgCisgICAgMjE2LCA5MiwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCAxMTEsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIyMCwgCisgICAgMTMxLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMTUsIDIwNywgMjA2LCAxMTcsIDE3MSwgMjE4LCAyNDIsIDIyMCwgMjQsIAorICAgIDIwNiwgMTE3LCAxNzEsIDI0MCwgMjEyLCAyNDEsIDE1MSwgMjA2LCAxMTcsIDE3MSwgMjA1LCAxODYsIDIwNiwgMjM3LCAKKyAgICAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDI5LCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDExOCwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjA2LCA2MiwgMjA2LCA1NywgMjA2LCAxMTcsIDE3MSwgMjE4LCAyNDIsIDIxOCwgMTMzLCAyMDYsIDExNywgCisgICAgMTcxLCAyNDgsIDEyNSwgMjQ5LCAxMDIsIDIwNiwgMTE3LCAxNzEsIDIxNSwgMTA3LCAyMTUsIDEzNSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjE1LCAyMTgsIDIxNSwgMjA5LCAyMDYsIDExNywgMTcxLCAyMzcsIDE0LCAyMzcsIDE5NSwgMjA2LCAxMTcsIDE3MSwgCisgICAgMjE1LCAyMTgsIDIxNSwgMjM4LCAyMDYsIDExNywgMTcxLCAyMzcsIDE0LCAyMzcsIDE2OCwgMjA2LCAxMTcsIDE3MSwgMjE1LCAKKyAgICAyMTgsIDIxMiwgMTcsIDIwNiwgMTE3LCAxNzEsIDIyMSwgMTM3LCAxNzgsIDIwNiwgMTE3LCAxNzEsIDE5OSwgMjQ2LCAyMDAsIAorICAgIDg1LCAyMDYsIDExNywgMTcxLCAyMTMsIDIsIDIxMiwgMTc0LCAyMDYsIDExNywgMTcxLCAyMTIsIDE3NSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjI0LCAxMTEsIDIyNCwgMTY5LCAyMDYsIDExNywgMTcxLCAyMjQsIDQyLCAyMDYsIDExNywgMTcxLCAyMDEsIDEsIAorICAgIDIwMSwgMTA5LCAyMDYsIDExNywgMTcxLCAyMDksIDMwLCAyMTIsIDMzLCAyMDYsIDExNywgMTcxLCAyMDksIDMwLCAyMTIsIAorICAgIDE0NSwgMjA2LCAxMTcsIDE3MSwgMjA5LCAzMCwgMjA4LCAyMywgMjA2LCAxMTcsIDE3MSwgMjMzLCAyMDgsIDIzNCwgNDgsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyNCwgMTExLCAyNDYsIDE5MSwgMjA2LCAxMTcsIDE3MSwgMTYzLCAyNTEsIDc2LCAyMDYsIDExNywgCisgICAgMTcxLCAyMzMsIDIwOCwgMjE4LCAyMzcsIDIwNiwgMTE3LCAxNzEsIDIxNiwgMTg2LCAyMDYsIDExNywgMTcxLCAyMTEsIAorICAgIDI1NSwgNjIsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMzQsIDIwMSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MiwgCisgICAgMTM4LCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAxMDEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCA3MCwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjExLCAyNTUsIDIyOCwgMTUxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjA0LCAzMSwgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDIwNCwgMjksIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCA2NiwgMjA2LCAxMTcsIDE3MSwgMjExLCAKKyAgICAyNTUsIDIwMywgMTgyLCAyMDYsIDExNywgMTcxLCAyMTUsIDIyMCwgMjA2LCAxMTcsIDI0MiwgMTk1LCAxNiwgMjQ5LCAxMDMsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCA3MiwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMjIxLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgNzQsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDE3NywgMjIyLCAxOTMsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCAyNTEsIDE3NywgMjIyLCAxOTQsIDIwNiwgMTE3LCAxNzEsIDIyNSwgOTUsIDIwNiwgMTE3LCAxNzEsIAorICAgIDIyMiwgMTkwLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5MSwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIzOCwgMjE2LCAKKyAgICAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjA2LCA2MSwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIwNSwgMTAxLCAyMDYsIAorICAgIDExNywgMTcxLCAyMjIsIDE5OSwgMjQ3LCAxMywgMjA2LCAxMTcsIDE3MSwgMjA2LCAxMDksIDIwNiwgMTE3LCAxNzEsIDIxOSwgCisgICAgMTIyLCAyMDYsIDExNywgMTcxLCAyMDAsIDc5LCAyMDYsIDExNywgMTcxLCAyMzcsIDQsIDIwNiwgMTE3LCAxNywgMTk5LCAKKyAgICA4MSwgMjA2LCAxMTcsIDE3LCAxMDIsIDIwNiwgMTE3LCAxNywgMTA1LCAyMDYsIDExNywgMTcsIDE0NywgMjA2LCAxMTcsIAorICAgIDE3LCAxNDksIDIwNiwgMTE3LCAxNywgMTY0LCAyMDYsIDExNywgMTcsIDE4NywgMjA2LCAxMTcsIDE3LCAyMTAsIDEzNSwgCisgICAgMjA2LCAxMTcsIDE3LCAxOTIsIDIwNiwgMTE3LCAxNywgMjE5LCAxMTMsIDIwNiwgMTE3LCAxNzEsIDI1MSwgNzIsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyNiwgMTc2LCAyMjUsIDc1LCAxLCAyMjYsIDg4LCAyMjUsIDc1LCAxLCAyMjYsIDE3OSwgMjA3LCAyMjUsIAorICAgIDIyNSwgNzUsIDEsIDIyNiwgMTc5LCAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE5LCAxNzgsIDIyNSwgNzUsIDEsIDI0NiwgCisgICAgOTEsIDIyNSwgNzUsIDEsIDIwOSwgMzAsIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTgsIDI2LCAyMjUsIDc1LCAxLCAyNDAsIAorICAgIDIxMSwgMjI1LCA3NSwgMSwgMTM4LCAyMjUsIDc1LCAxLCAyMDYsIDYyLCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgMjA2LCA2MiwgCisgICAgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOCwgMjQxLCAyMjUsIDc1LCAxLCAyNDgsIDEyNCwgMjI1LCA3NSwgMSwgMjE1LCAKKyAgICAxMDYsIDIyNSwgNzUsIDEsIDIxNSwgMjE4LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgMjA2LCAyNDYsIDIyNSwgCisgICAgNzUsIDEsIDIxNSwgMjE4LCAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIAorICAgIDIyMSwgMTM2LCAyMjUsIDc1LCAxLCAxOTksIDI0NSwgMjI1LCA3NSwgMSwgMjI0LCAxMTEsIDIyNCwgMTY5LCAyMjUsIDc1LCAKKyAgICAxLCAyMjQsIDExMSwgMjI0LCA3MiwgMjI1LCA3NSwgMSwgMjAxLCAwLCAyMjUsIDc1LCAxLCAyMDksIDMwLCAyMDcsIDIyNSwgCisgICAgMjI1LCA3NSwgMSwgMjMzLCAyMDgsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCA3NCwgMjI1LCA3NSwgMSwgMjMzLCAyMDgsIAorICAgIDIwNiwgMjQ2LCAyMjUsIDc1LCAyMzgsIDE5NSwgMjI1LCA3NSwgMjIsIDIsIDYyLCAyMjUsIDc1LCAyMiwgMiwgMjIyLCAKKyAgICAxOTksIDIyNywgNjgsIDIyNSwgNzUsIDIyLCAyLCAyNTIsIDEzOCwgMjI1LCA3NSwgMjIsIDIsIDI1MSwgMTAxLCAyMjUsIAorICAgIDc1LCAyMiwgMiwgNzAsIDIyNSwgNzUsIDIyLCAyLCAyMjgsIDE1MSwgMjI1LCA3NSwgMjIsIDIsIDIwMCwgMTIzLCAyMjUsIAorICAgIDc1LCAyMiwgMiwgMTk5LCAxNjcsIDIyNSwgNzUsIDIyLCAyLCA2NiwgMjI1LCA3NSwgMjIsIDIsIDIwMywgMTgyLCAyMjUsIAorICAgIDc1LCAyMiwgMiwgMjIyLCAxOTksIDIyNiwgNzEsIDIyNSwgNzUsIDIxMCwgMTYyLCAyLCAyMjQsIDExMCwgMjI1LCA3NSwgCisgICAgMjEwLCAxNjIsIDIsIDIxOCwgMjYsIDIyNSwgNzUsIDIyLCAyLCA3MiwgMjI1LCA3NSwgMjIsIDIsIDIzOCwgMjM0LCAyMjUsIAorICAgIDc1LCAyMiwgMiwgNzQsIDIyNSwgNzUsIDIyLCAyLCAyNTAsIDExMiwgMjI1LCA3NSwgMjIsIDIsIDI1MSwgMTc2LCAyMjUsIAorICAgIDc1LCAyMjYsIDg5LCAxOTQsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIDIzOCwgMjE2LCAyMjUsIDc1LCAxNTAsIDIyMiwgCisgICAgMTk5LCAyMDYsIDYxLCAyMjUsIDc1LCAxNTAsIDIyMiwgMTk5LCAyMDYsIDE1LCAyMjUsIDc1LCAxNTAsIDIyMiwgMTk5LCAKKyAgICAyNDcsIDExMCwgMjI1LCA3NSwgMjQ3LCAxNTUsIDgxLCAyMjUsIDc1LCAyMTksIDEzMSwgMjI1LCA3NSwgMTcsIDE5OSwgODEsIAorICAgIDIyNSwgNzUsIDE3LCAxMDIsIDIyNSwgNzUsIDE3LCAxMDUsIDIyNSwgNzUsIDE3LCAxNDcsIDIyNSwgNzUsIDE3LCAxNDksIAorICAgIDIyNSwgNzUsIDE3LCAxNjQsIDIyNSwgNzUsIDE3LCAxODcsIDIyNSwgNzUsIDE3LCAyMTAsIDEzNSwgMjI1LCA3NSwgMTcsIAorICAgIDE5MiwgMjI1LCA3NSwgMTcsIDIxOSwgMTEzLCAyMjUsIDc1LCAyMzMsIDIwOCwgMjE4LCAyNDEsIDIyNSwgNzUsIDIzMywgCisgICAgMjA4LCAyMjEsIDEzNiwgMjI1LCA3NSwgMSwgMjI2LCAxODAsIDIzNSwgMTE2LCAyMjUsIDc1LCAxLCAyMjYsIDE4MCwgMjE4LCAKKyAgICAyNiwgNzksIDUsIDIxNywgODYsIDc5LCAxMzQsIDIzNSwgNTIsIDIwMCwgMSwgMjIxLCAyMjksIDIwNSwgMzgsIDYyLCA3OSwgCisgICAgMTM0LCAyMzUsIDUyLCAyMDAsIDEsIDIyMSwgMjI5LCAyNTUsIDEzNSwgMjEzLCA2LCAyNDksIDEwLCAxNzgsIDc5LCAxMzQsIAorICAgIDIzNSwgNTIsIDIwMCwgMSwgMjIxLCAyMjksIDI1NSwgMTM1LCAyMzUsIDUyLCAyMDUsIDE4LCAxNzgsIDc5LCAxMzQsIDgyLCAKKyAgICAyMDAsIDEsIDIyMSwgMjI5LCAyMjIsIDc4LCAxNzgsIDc5LCAxMzQsIDI0NiwgMTA2LCAyMDAsIDEsIDIyMSwgMjI5LCAyMTAsIAorICAgIDEyMSwgMTc4LCA3OSwgMTM0LCAyNDcsIDEzMCwgMjAwLCAxLCAyMjEsIDIyOSwgMjE1LCAyMDgsIDIxMCwgMTA3LCAxNzgsIAorICAgIDc5LCAxMzQsIDIwMCwgMSwgMjIxLCAyMjksIDIwNSwgMTgsIDIxMCwgMTA3LCAxNzgsIDc5LCAxMzQsIDIxMSwgMjMxLCAKKyAgICAyMTAsIDEwNiwgNzksIDEzNCwgMjQ4LCAzOSwgMjAwLCAxLCAyMjEsIDIyOCwgNzksIDEzNCwgMjQ4LCAxNDYsIDIxMCwgNCwgCisgICAgMjAwLCAxLCAyMjEsIDIyOCwgNzksIDEzNCwgMjI4LCA1NCwgMjA1LCAxNywgNzksIDEzNCwgMjQxLCAxNDMsIDIwNSwgMTgsIAorICAgIDI0OCwgMzgsIDc5LCAxMzQsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTgsIDMxLCAyMTAsIDEwNiwgNzksIDEzNCwgMjA1LCAxOCwgCisgICAgMjEwLCAxMDYsIDc5LCAxMzQsIDIxOCwgMzEsIDIwNSwgMTgsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTMsIDI5LCAyNDYsIAorICAgIDI1MCwgMjA4LCAxOTYsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMTMsIDk3LCAyMzUsIDg1LCAyMTAsIDEwNiwgNzksIDEzNCwgCisgICAgMjQ3LCAxMzAsIDI1NSwgMTM5LCAyMTIsIDE3OSwgMjIyLCA3NywgMTY4LCAyNDcsIDE1OCwgNzksIDEzNCwgMjM1LCA1MiwgCisgICAgMjA1LCAxNywgNzksIDIyNCwgOTYsIDIsIDI0NywgMzUsIDIxMiwgMTc4LCA3OSwgMjI0LCA5NiwgMiwgMjI0LCAyMjEsIAorICAgIDIxMiwgMTc4LCA3OSwgMjUwLCAxNjEsIDIsIDIxMCwgMTE3LCAyMzYsIDE4LCAyNTUsIDE0MCwgMjEyLCAxNzgsIDc5LCAKKyAgICAyNTAsIDE2MSwgMiwgMjU1LCAxMzcsIDE3MiwgNzksIDI1MCwgMTYxLCAyLCAyMTEsIDIwMywgMjA1LCAxMiwgNzksIDIsIAorICAgIDIxMywgMTkyLCAyNDAsIDIyNSwgMjM2LCAxNywgNzksIDIsIDIxMywgMTkyLCAyNDAsIDIyNSwgMjM1LCAxMTgsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjQwLCAyMjUsIDIzNSwgNTMsIDc5LCAyLCAyMTMsIDE5MiwgMjIwLCAxNTAsIDIzNiwgMTcsIDc5LCAyLCAKKyAgICAyMTMsIDE5MiwgMjIwLCAxNTAsIDIzNSwgMTE4LCA3OSwgMiwgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMTMsIDE5MiwgMjIwLCAKKyAgICAxNDksIDc5LCAxNywgMTk5LCA4MSwgNzksIDE3LCAxMDIsIDc5LCAxNywgMTA1LCA3OSwgMTcsIDE0NywgNzksIDE3LCAxNDksIAorICAgIDc5LCAxNywgMTY0LCA3OSwgMTcsIDE4NywgNzksIDE3LCAyMTAsIDEzNSwgNzksIDE3LCAxOTIsIDc5LCAxNywgMjE5LCAKKyAgICAxMTMsIDc5LCAxNywgMTY3LCAxMDIsIDc5LCAxNywgMTY3LCAxMDUsIDc5LCAxNywgMTY3LCAxNDcsIDc5LCAxNywgMTY3LCAKKyAgICAxNDksIDc5LCAxNywgMTY3LCAxNjQsIDc5LCAxNywgMTY3LCAxODcsIDc5LCAxNywgMTY3LCAyMTAsIDEzNSwgNzksIDE3LCAKKyAgICAxNjcsIDE5MiwgNzksIDE3LCAxNjcsIDIxOSwgMTEzLCA3OSwgMTcsIDE2NywgMTk5LCA4MSwgNzksIDEzNCwgMjQ4LCA0MSwgCisgICAgMjEyLCAxNzgsIDc5LCAxMzQsIDIxOSwgMjQ0LCAyNDcsIDIyNSwgMjE4LCA0MiwgMTk5LCAxNiwgNzksIDEzNCwgMjQ3LCAKKyAgICAxMzAsIDI1NSwgMTM5LCAyMTIsIDE3OSwgMjQ3LCAyMjYsIDIyMSwgMTgyLCAyNDcsIDE1OCwgNzksIDEzNCwgMjE5LCAyNDQsIAorICAgIDI0NywgMjI1LCAyMTAsIDExOCwgMjEyLCAxNzgsIDc5LCAxMzQsIDI0NywgOSwgMjIxLCAyMjgsIDc5LCAxMzQsIDIwNSwgCisgICAgMzMsIDI1NSwgMTM2LCA3OSwgMTM0LCAyMzUsIDM1LCAyMTIsIDE3OSwgMjM0LCAyNTAsIDc5LCAxMzQsIDIzNSwgMzUsIAorICAgIDIxMiwgMTc5LCAyMzUsIDAsIDc5LCAxMzQsIDI1MSwgNzcsIDIyNiwgMTk3LCAyMzQsIDI1MCwgNzksIDEzNCwgMjUxLCA3NywgCisgICAgMjI2LCAxOTcsIDIzNSwgMCwgNzksIDIsIDIwMCwgNzEsIDIwNSwgMTYsIDc5LCAyLCAyMjIsIDE1OSwgMjA1LCAxNiwgNzksIAorICAgIDEsIDE2MSwgNzksIDEsIDIyNiwgMjA3LCA3OSwgMSwgMjM2LCA4OSwgNzksIDEsIDIzNSwgMTk5LCA3OSwgMSwgMjE5LCAKKyAgICAyNTMsIDc5LCAxLCAyNDcsIDE5MCwgNzksIDEsIDI0NywgMzcsIDc5LCAxLCAyMjcsIDI0OCwgNzksIDEsIDIxOCwgNjAsIAorICAgIDc5LCAxLCAyMDQsIDI1MywgNzksIDEsIDIwNCwgMjQxLCA3OSwgMSwgMjQxLCAyMjAsIDc5LCAxLCAyNDEsIDIwNCwgNzksIAorICAgIDEsIDIxOSwgMjEsIDc5LCAxLCAyMDcsIDM2LCA3OSwgMSwgMjA2LCAxMjIsIDc5LCAxLCAyNDIsIDU4LCA3OSwgMSwgMjQxLCAKKyAgICAxMDAsIDc5LCAxLCAxODgsIDc5LCAxLCAxNzIsIDc5LCAxLCAyMTUsIDI0NSwgNzksIDEsIDI0OSwgMTM2LCA3OSwgMSwgCisgICAgMjQ4LCAyMDAsIDc5LCAxLCAxNzgsIDc5LCAxLCAyMDUsIDMyLCA3OSwgMSwgMjA1LCAyMiwgNzksIDEsIDIzOSwgOTMsIDc5LCAKKyAgICAxLCAyMzksIDg3LCA3OSwgMSwgMjAxLCAxMTQsIDc5LCAxLCAxOTksIDc3LCA3OSwgMSwgMTk5LCAxMTQsIDc5LCAxLCAyNTUsIAorICAgIDE0MiwgNzksIDEsIDE4MywgNzksIDEsIDIxMywgMjUyLCA3OSwgMSwgMTk0LCA3OSwgMSwgMjEwLCAxMTQsIDc5LCAxLCAKKyAgICAyMDgsIDE3OSwgNzksIDEsIDIxMiwgNjQsIDc5LCAxLCAxNDQsIDc5LCAxLCA2MiwgNzksIDEsIDIyNiwgMjksIDc5LCAxLCAKKyAgICAyMzcsIDU3LCAyMTMsIDI1MiwgNzksIDEsIDIyNiwgMTA5LCA3OSwgMSwgMjEyLCAyMTUsIDc5LCAyMiwgMiwgMjUyLCAxMzgsIAorICAgIDc5LCAyMiwgMiwgNzAsIDc5LCAyMiwgMiwgMjI4LCAxNTEsIDc5LCAyMiwgMiwgNjYsIDc5LCAyMiwgMiwgMjAzLCAxODIsIAorICAgIDc5LCAyMiwgMiwgMTA5LCAxNDYsIDc5LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgNzksIDIyLCAyLCAxMDksIDE1NiwgNzksIAorICAgIDIyLCAyLCAxMDksIDIyNCwgMTM5LCA3OSwgMjIsIDIsIDcyLCA3OSwgMjIsIDIsIDIzOCwgMjU1LCA3OSwgMjIsIDIsIDc0LCAKKyAgICA3OSwgMjIsIDIsIDIxNywgNjMsIDc5LCAyLCAyMTMsIDEyLCAyMDgsIDI1LCAyMTksIDI1NCwgMjEzLCAxLCA3OSwgMiwgCisgICAgMjEzLCA2LCAyNDksIDksIDc5LCAyMiwgMiwgMjEzLCAxMDUsIDcwLCA3OSwgMjIsIDIsIDIxMywgMTA1LCAyMjgsIDE1MSwgCisgICAgNzksIDIsIDIxOCwgNDIsIDE5OSwgMTcsIDIyMCwgMTU4LCAyNDIsIDU4LCA3OSwgMiwgMjA5LCA0NCwgMjI1LCA0MiwgNzksIAorICAgIDEzNCwgMjM0LCAyMTUsIDc5LCAxMzQsIDIxNiwgMTczLCA3OSwgMiwgMjI1LCA0NSwgMjEyLCAxNzgsIDc5LCAyLCAyMDAsIAorICAgIDc2LCAyMTIsIDE3OCwgNzksIDIsIDIyNSwgNDYsIDIwNSwgMzMsIDI0NywgMTU4LCA3OSwgMiwgMjIyLCA4MCwgMjQ3LCAKKyAgICAxNTgsIDc5LCAyLCAyMzUsIDU2LCAyNDcsIDE1OSwgMjEzLCA5NSwgNzksIDIsIDIzNSwgNTYsIDIyMiwgNzAsIDIxMywgOTUsIAorICAgIDc5LCAyLCAyMjgsIDUwLCAyMjIsIDgwLCAyNDcsIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyNSwgNDYsIDIwNSwgMzMsIDI0NywgCisgICAgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjIyLCA4MCwgMjQ3LCAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjgsIDUwLCAyMjIsIDgwLCAKKyAgICAyNDcsIDE1OCwgNzksIDIwOCwgMTIsIDEsIDE2MSwgNzksIDIwOCwgMTIsIDEsIDIyNiwgMjA3LCA3OSwgMjA4LCAxMiwgMSwgCisgICAgMjM2LCA4OSwgNzksIDIwOCwgMTIsIDEsIDIzNSwgMTk5LCA3OSwgMjA4LCAxMiwgMSwgMjE5LCAyNTMsIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAyNDcsIDE5MCwgNzksIDIwOCwgMTIsIDEsIDI0NywgMzcsIDc5LCAyMDgsIDEyLCAxLCAyMjcsIDI0OCwgNzksIDIwOCwgCisgICAgMTIsIDEsIDIxOCwgNjAsIDc5LCAyMDgsIDEyLCAxLCAyMDQsIDI1MywgNzksIDIwOCwgMTIsIDEsIDIwNCwgMjQxLCA3OSwgCisgICAgMjA4LCAxMiwgMSwgMjQxLCAyMjAsIDc5LCAyMDgsIDEyLCAxLCAyNDEsIDIwNCwgNzksIDIwOCwgMTIsIDEsIDIxOSwgMjEsIAorICAgIDc5LCAyMDgsIDEyLCAxLCAyMDcsIDM2LCA3OSwgMjA4LCAxMiwgMSwgMjA2LCAxMjIsIDc5LCAyMDgsIDEyLCAxLCAyNDIsIAorICAgIDU4LCA3OSwgMjA4LCAxMiwgMSwgMjQxLCAxMDAsIDc5LCAyMDgsIDEyLCAxLCAxODgsIDc5LCAyMDgsIDEyLCAxLCAxNzIsIAorICAgIDc5LCAyMDgsIDEyLCAxLCAyMTUsIDI0NSwgNzksIDIwOCwgMTIsIDEsIDI0OSwgMTM2LCA3OSwgMjA4LCAxMiwgMSwgMjQ4LCAKKyAgICAyMDAsIDc5LCAyMDgsIDEyLCAxLCAxNzgsIDc5LCAyMDgsIDEyLCAxLCAyMDUsIDMyLCA3OSwgMjA4LCAxMiwgMSwgMjA1LCAKKyAgICAyMiwgNzksIDIwOCwgMTIsIDEsIDIzOSwgOTMsIDc5LCAyMDgsIDEyLCAxLCAyMzksIDg3LCA3OSwgMjA4LCAxMiwgMSwgCisgICAgMjAxLCAxMTQsIDc5LCAyMDgsIDEyLCAxLCAxOTksIDc3LCA3OSwgMjA4LCAxMiwgMSwgMTk5LCAxMTQsIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAyNTUsIDE0MiwgNzksIDIwOCwgMTIsIDEsIDE4MywgNzksIDIwOCwgMTIsIDEsIDIxMywgMjUyLCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMTk0LCA3OSwgMjA4LCAxMiwgMSwgMjEwLCAxMTQsIDc5LCAyMDgsIDEyLCAxLCAyMDgsIDE3OSwgNzksIDIwOCwgMTIsIAorICAgIDEsIDIxMiwgNjQsIDc5LCAyMDgsIDEyLCAxLCAxNDQsIDc5LCAyMDgsIDEyLCAxLCA2MiwgNzksIDIwOCwgMTIsIDEsIDIyNiwgCisgICAgMjksIDc5LCAyMDgsIDEyLCAxLCAyMzcsIDU3LCAyMDEsIDExNCwgNzksIDIwOCwgMTIsIDEsIDIzNywgNTcsIDE4MywgNzksIAorICAgIDIwOCwgMTIsIDEsIDIzNywgNTcsIDIxMywgMjUyLCA3OSwgMjI2LCAxNiwgMjEyLCAxNzYsIDIyNiwgMjA3LCA3OSwgMjI2LCAKKyAgICAxNiwgMjEyLCAxNzYsIDIyNiwgMjA4LCAyNDcsIDIyNiwgMjIxLCAxODIsIDI0NywgMTU4LCA3OSwgMjQ3LCAxNDUsIDIsIAorICAgIDgwLCAyNDksIDEsIDc5LCAyNDcsIDE0NSwgMiwgMTYyLCAyNDksIDEsIDc5LCAyNDcsIDE0NSwgMiwgMjQ3LCAxNDcsIDIwNiwgCisgICAgMTk5LCA3OSwgMjQ3LCAxNDUsIDIsIDIxMSwgMjMwLCAyNTUsIDE0MSwgNzksIDE2LCAyMzksIDE1MiwgMjQ4LCAzNiwgNzksIAorICAgIDE2LCAyMTMsIDE5MSwgMjEzLCAxMywgNzksIDE2LCAyMTYsIDE5NywgMjM2LCAxNiwgNzksIDE2LCAyMTMsIDE5MSwgMjEzLCAKKyAgICAxNCwgMjEzLCA5NywgMjM1LCA4NCwgNzksIDE2LCAyMTUsIDIwOCwgMTcyLCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM2LCAKKyAgICA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAyMTgsIDMxLCAyNTUsIDEzOCwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgCisgICAgMjM1LCA1NCwgMjU1LCAxMzgsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIDI0NywgMjI2LCAyNTUsIDEzOCwgNzksIDIsIAorICAgIDIxMywgMTkyLCAyMjAsIDE1MCwgMjEzLCAxOTIsIDI0MCwgMjI0LCA3OSwgMiwgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMzUsIAorICAgIDUzLCA3OSwgMTM0LCAyNDgsIDQwLCAyMTAsIDQsIDIzNSwgMTYyLCAyMjEsIDIyOSwgMjEzLCA5NiwgNzksIDEzNCwgMjIxLCAKKyAgICAxMzgsIDIwMCwgMSwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCA3OSwgMTM0LCAyMTgsIDMxLCAyMDUsIDE3LCA3OSwgCisgICAgMTM0LCA4MiwgMjQ4LCA2MywgMjEzLCAzLCAyMDAsIDEsIDIyMSwgMjI5LCAyMjIsIDc4LCAxNzgsIDc5LCAxMzQsIDI0NiwgCisgICAgMTA2LCAyNDgsIDYzLCAyMTMsIDMsIDIwMCwgMSwgMjIxLCAyMjksIDIxMCwgMTIxLCAxNzgsIDIxMywgNDUsIDIwNywgMTg4LCAKKyAgICA1NCwgMjI1LCAyNywgMjA3LCAxODgsIDU0LCAyMTMsIDQ1LCAyMDcsIDE4OCwgMiwgMywgMjQwLCAxODAsIDIyNSwgMjcsIAorICAgIDIwNywgMTg4LCAyLCAzLCAyNDAsIDE4MCwgNzksIDEzNCwgMjI1LCAzNywgMjIyLCA4MSwgMjEyLCAxNzgsIDc5LCAxMzQsIAorICAgIDIwNSwgMTI1LCAyMjIsIDgxLCAyMTIsIDE3OCwgNzEsIDEsIDE2MSwgNzEsIDEsIDIyNiwgMjA3LCA3MSwgMSwgMjM2LCA4OSwgCisgICAgNzEsIDEsIDIzNSwgMTk5LCA3MSwgMSwgMjE5LCAyNTMsIDcxLCAxLCAyNDcsIDE5MCwgNzEsIDEsIDI0NywgMzcsIDcxLCAxLCAKKyAgICAyMjcsIDI0OCwgNzEsIDEsIDIyNywgMjE1LCA3MSwgMSwgMjE4LCA2MCwgNzEsIDEsIDIxOCwgMjQzLCA3MSwgMSwgMjA0LCAKKyAgICAyNTMsIDcxLCAxLCAyMDQsIDI0MSwgNzEsIDEsIDI0MSwgMjIwLCA3MSwgMSwgMjQxLCAyMDQsIDcxLCAxLCAyMTksIDIxLCAKKyAgICA3MSwgMSwgMjA3LCAzNiwgNzEsIDEsIDIwNiwgMTIyLCA3MSwgMSwgMjQyLCA1OCwgNzEsIDEsIDI0MSwgMTAwLCA3MSwgMSwgCisgICAgMTg4LCA3MSwgMSwgMTcyLCA3MSwgMSwgMjE1LCAyNDUsIDcxLCAxLCAyNDksIDEzNiwgNzEsIDEsIDI0OCwgMjAwLCA3MSwgCisgICAgMSwgMTc4LCA3MSwgMSwgMTgzLCA3MSwgMSwgMjEzLCAyNTIsIDcxLCAxLCAxOTQsIDcxLCAxLCAyMDEsIDExNCwgNzEsIDEsIAorICAgIDIxMiwgNjQsIDcxLCAxLCAxNDQsIDcxLCAxLCAyMjQsIDEzOCwgNzEsIDEsIDYyLCA3MSwgMSwgMjEwLCA5MCwgNjIsIDcxLCAKKyAgICAxLCA3MCwgNzEsIDEsIDIyOCwgMTUxLCA3MSwgMSwgNjYsIDcxLCAxLCAyMDMsIDE4MiwgNzEsIDEsIDcyLCA3MSwgMSwgCisgICAgMjIxLCAxMDcsIDcyLCA3MSwgMSwgNzQsIDcxLCAxLCAyNTAsIDEzOSwgNzEsIDIyLCAyLCAyMDYsIDI0OCwgMjUyLCAxMzgsIAorICAgIDcxLCAyMiwgMiwgMjUyLCAxMzgsIDcxLCAyMiwgMiwgNzAsIDcxLCAyMiwgMiwgMjI4LCAxNTEsIDcxLCAyMiwgMiwgNjYsIAorICAgIDcxLCAyMiwgMiwgMjAzLCAxODIsIDcxLCAyMiwgMiwgNzIsIDcxLCAyMiwgMiwgMjUxLCAxNzYsIDcxLCAyMiwgMiwgMjIxLCAKKyAgICAxMDcsIDIyOCwgMTUxLCA3MSwgMjIsIDIsIDIyMSwgMTA3LCA3NCwgNzEsIDIyLCAyLCAxOTcsIDU2LCA3MSwgMiwgMjUxLCAKKyAgICAzMywgNzEsIDIsIDczLCA1NywgNzEsIDIsIDIwMiwgMjAzLCA3MSwgMiwgMjAyLCAyMDgsIDcxLCAyLCAyNTAsIDE4NSwgNzEsIAorICAgIDExMSwgMiwgMTc5LCAxODMsIDcxLCAxMTEsIDIsIDE3OSwgMjEzLCAyNTIsIDcxLCAxMTEsIDIsIDE3OSwgMjAxLCAxMTQsIAorICAgIDcxLCAxMTEsIDIsIDE3OSwgMTQ0LCA3MSwgMSwgMjM1LCA2OSwgMjEyLCA2NCwgNzEsIDE3LCAxOTksIDgxLCA3MSwgMTcsIAorICAgIDEwMiwgNzEsIDE3LCAxMDUsIDcxLCAxNywgMTQ3LCA3MSwgMTcsIDE0OSwgNzEsIDE3LCAxNjQsIDcxLCAxNywgMTg3LCA3MSwgCisgICAgMTcsIDIxMCwgMTM1LCA3MSwgMTcsIDE5MiwgNzEsIDE3LCAyMTksIDExMywgNzEsIDIsIDIyNCwgMTQ4LCAyMTEsIDE5MiwgCisgICAgNzEsIDIsIDIxMSwgMTkyLCA3MSwgMTYsIDIyNCwgMTA1LCA3MSwgMTYsIDI0NiwgNjQsIDcxLCAxNiwgMjUxLCAxOTcsIDcxLCAKKyAgICAxNiwgMjM1LCAyNTQsIDcxLCAxLCAyMTAsIDExNCwgNzEsIDEsIDIwOCwgMTc5LCA3MSwgMSwgMTA5LCAxNDYsIDcxLCAxLCAKKyAgICAxMDksIDIxMiwgMjE2LCA3MSwgMSwgMTA5LCAxNTYsIDcxLCAxLCAxMDksIDIyNCwgMTM5LCA3MSwgMjIsIDIsIDEwOSwgCisgICAgMTQ2LCA3MSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDcxLCAyMiwgMiwgMTA5LCAxNTYsIDcxLCAyMiwgMiwgMTA5LCAyMjQsIAorICAgIDEzOSwgNzEsIDEsIDIyMSwgMTA3LCAyMTksIDI1MywgNzEsIDEsIDIyMSwgMTA3LCAyMjcsIDIxNSwgNzEsIDEsIDIyMSwgCisgICAgMTA3LCAyNDksIDQ0LCA3MSwgMSwgMjIxLCAxMDcsIDI0OSwgMzksIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE4OCwgCisgICAgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTc4LCA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxOTQsIDcxLCAxLCAKKyAgICAyMTAsIDEyMCwgMjI3LCA0NCwgMjEwLCAxMTQsIDcxLCAyMiwgMiwgMjEwLCAxMjAsIDIyNywgNDQsIDIzOCwgNjksIDcxLCAKKyAgICAxNTAsIDEzNCwgMjEwLCAxMjAsIDIyNywgNDQsIDIzNCwgMTUzLCA3MSwgMTUwLCAxMzQsIDIxMCwgMTIwLCAyMjcsIDQ0LCAKKyAgICAyMjcsIDksIDIxNSwgMjE3LCA3MSwgMSwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNiwgMTIyLCA3MSwgMSwgCisgICAgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIxNCwgMTg1LCA3MSwgMjIsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIAorICAgIDQ0LCAyMzgsIDY5LCA3MSwgMjIsIDIsIDIwMSwgNDUsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMDQsIDMxLCA3MSwgMiwgMjAxLCAKKyAgICA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgMTczLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgCisgICAgMTcyLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgMTcxLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAKKyAgICAxNzksIDIyNywgNDQsIDIwNSwgMTcwLCA3MSwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNSwgMTY5LCA3MSwgCisgICAgMSwgMjM5LCAxMiwgMjE0LCAxNzksIDIyNywgNDQsIDIxOSwgMjEsIDcxLCAxLCAyMzksIDEyLCAyMTQsIDE3OSwgMjI3LCAKKyAgICA0NCwgMTk5LCAxNzQsIDcxLCAxLCAyMzksIDEyLCAyMTQsIDE3OSwgMjI3LCA0NCwgMjM1LCAxNjQsIDcxLCAyMiwgMiwgCisgICAgMjM2LCAxMSwgMjI3LCA0NCwgNzAsIDcxLCAyMiwgMiwgMjI3LCAxNCwgMjE3LCAxMjEsIDcxLCAyMiwgMiwgMjI3LCAxNCwgCisgICAgNjYsIDcxLCAyMiwgMiwgMjI3LCAxNCwgMjM4LCAyNTUsIDcxLCAxLCAyMTAsIDkwLCAxNjEsIDcxLCAxLCAyMTAsIDkwLCAKKyAgICAyMjYsIDIwNywgNzEsIDEsIDIxMCwgOTAsIDIzNiwgODksIDcxLCAxLCAyMTAsIDkwLCAyNDcsIDE5MCwgNzEsIDEsIDIxMCwgCisgICAgOTAsIDE5OSwgMTE0LCA3MSwgMSwgMjEwLCA5MCwgMjE4LCA2MCwgNzEsIDEsIDIxMCwgOTAsIDI0MiwgNTgsIDcxLCAxLCAKKyAgICAyMTAsIDkwLCAxODgsIDcxLCAxLCAyMTAsIDkwLCAyMTUsIDI0NSwgNzEsIDEsIDIxMCwgOTAsIDIzNywgMTk1LCA3MSwgMSwgCisgICAgMjEwLCA5MCwgMjQ5LCAxMzYsIDcxLCAxLCAyMTAsIDkwLCAyMDYsIDEyMiwgNzEsIDEsIDIxMCwgOTAsIDE0NCwgNzEsIAorICAgIDExMSwgMiwgMjEwLCA5MCwgMTc5LCAyMDEsIDExNCwgNzEsIDIyLCAyLCAyMTAsIDkwLCAyNTIsIDEzOCwgNzEsIDIyLCAyLCAKKyAgICAyMTAsIDkwLCA3MiwgNzEsIDIyLCAyLCAyMTAsIDkwLCAxOTcsIDU2LCA3MSwgMjIsIDIsIDIxMCwgOTAsIDQ3LCAyMDAsIAorICAgIDEyMywgNzEsIDIsIDIxMCwgOTAsIDIwNSwgMTcyLCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNzEsIDcxLCAyLCAyMTAsIDkwLCAKKyAgICAyMDUsIDE2OSwgNzEsIDIsIDIxMCwgOTAsIDIwNSwgMTY4LCA3MSwgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMDUsIDE3MiwgNzEsIAorICAgIDIsIDIxMCwgOTAsIDI0MywgNiwgMjA1LCAxNzEsIDcxLCAyLCAyMTAsIDkwLCAyNDMsIDYsIDIzOCwgMTgyLCAyMDUsIDE3NCwgCisgICAgNzEsIDEsIDIxMiwgMTYwLCAyMTYsIDE4MSwgMjM3LCAxOTUsIDcxLCAyLCAyMTIsIDE2MCwgMjE2LCAxODEsIDIwNSwgMTY5LCAKKyAgICA3MSwgMjEwLCA5MCwgMTcsIDE5OSwgODEsIDcxLCAyMTAsIDkwLCAxNywgMTAyLCA3MSwgMjEwLCA5MCwgMTcsIDEwNSwgNzEsIAorICAgIDIxMCwgOTAsIDE3LCAxNDcsIDcxLCAyMTAsIDkwLCAxNywgMTQ5LCA3MSwgMjEwLCA5MCwgMTcsIDE2NCwgNzEsIDIxMCwgCisgICAgOTAsIDE3LCAxODcsIDcxLCAyMTAsIDkwLCAxNywgMjEwLCAxMzUsIDcxLCAyMTAsIDkwLCAxNywgMTkyLCA3MSwgMjEwLCAKKyAgICA5MCwgMTcsIDIxOSwgMTEzLCA3MSwgMiwgMjI2LCAyMDAsIDIwNSwgMTczLCA3MSwgMiwgMjI2LCAyMDAsIDIwNSwgMTcxLCAKKyAgICA3MSwgMjIsIDIsIDI1MSwgMTYzLCA2MiwgNzEsIDIyLCAyLCAyNTEsIDE2MywgMjUxLCAxNzYsIDcxLCAxNiwgMjEwLCA5MCwgCisgICAgMTAyLCA3MSwgMTYsIDIxMCwgOTAsIDIzOCwgNDIsIDExOCwgNiwgMSwgMjUxLCA4NSwgMTE4LCA2LCAxLCAyNDksIDg4LCAKKyAgICAxMTgsIDYsIDEsIDIzNiwgNTksIDExOCwgNiwgMSwgMjQwLCAxOTAsIDExOCwgNiwgMSwgMjM4LCAxNzksIDExOCwgNiwgMSwgCisgICAgMjAyLCAyMTcsIDExOCwgNiwgMSwgMTk5LCA4NCwgMTE4LCA2LCAxLCAyMDYsIDI0NCwgMTE4LCA2LCAxLCAyMjgsIDExNywgCisgICAgMTE4LCA2LCAxLCAyMjcsIDY4LCAxMTgsIDYsIDEsIDIyNSwgNjUsIDExOCwgNiwgMSwgMjIyLCAxODAsIDExOCwgNiwgMSwgCisgICAgMjIwLCAxMjUsIDExOCwgNiwgMSwgMjE3LCA3OCwgMTE4LCA2LCAxLCAyMTYsIDEzMCwgMTE4LCA2LCAxLCAxOTksIDczLCAKKyAgICAxMTgsIDYsIDEsIDIxMywgMjM0LCAxMTgsIDYsIDEsIDIxMiwgMTMsIDExOCwgNiwgMSwgMjA2LCAyMzIsIDExOCwgNiwgMSwgCisgICAgMjA0LCA1LCAxMTgsIDYsIDEsIDIxNSwgMjM3LCAxMTgsIDYsIDEsIDIyNiwgMTk1LCAxMTgsIDYsIDEsIDIzNSwgMTkwLCAKKyAgICAxMTgsIDYsIDEsIDIxNCwgMTQ0LCAxMTgsIDYsIDEsIDIxMCwgMjEsIDExOCwgNiwgMSwgMjQ2LCAyMjMsIDExOCwgNiwgMSwgCisgICAgMjQ3LCAxNTgsIDExOCwgNiwgMSwgMjI3LCAxOTgsIDExOCwgNiwgMSwgMjQ2LCAxNjIsIDExOCwgNiwgMSwgMjQ3LCAyMSwgCisgICAgMTE4LCA2LCAxLCAyMDAsIDE3OSwgMTE4LCA2LCAxLCAyMjcsIDIxMiwgMTE4LCA2LCAxLCAyMzQsIDIzMCwgMTE4LCA2LCAxLCAKKyAgICAyMzQsIDEzOSwgMTE4LCA2LCAxLCAyMzQsIDY5LCAxMTgsIDYsIDEsIDIwMSwgNjQsIDExOCwgNiwgMSwgMjM0LCAxNjYsIAorICAgIDExOCwgNiwgMSwgMjMzLCAyMDMsIDExOCwgNiwgMSwgMTk5LCAyNDcsIDExOCwgNiwgMSwgMjUxLCAyMTAsIDExOCwgMSwgCisgICAgMjUxLCA4NSwgMTE4LCAxLCAyNDksIDg4LCAxMTgsIDEsIDIzNiwgNTksIDExOCwgMSwgMjQwLCAxOTAsIDExOCwgMSwgMjM4LCAKKyAgICAxNzksIDExOCwgMSwgMjAyLCAyMTcsIDExOCwgMSwgMTk5LCA4NCwgMTE4LCAxLCAyMDYsIDI0NCwgMTE4LCAxLCAyMjgsIAorICAgIDExNywgMTE4LCAxLCAyMjcsIDY4LCAxMTgsIDEsIDIyNSwgNjUsIDExOCwgMSwgMjIyLCAxODAsIDExOCwgMSwgMjIwLCAKKyAgICAxMjUsIDExOCwgMSwgMjE3LCA3OCwgMTE4LCAxLCAyMTYsIDEzMCwgMTE4LCAxLCAxOTksIDczLCAxMTgsIDEsIDIxMywgCisgICAgMjM0LCAxMTgsIDEsIDIxMiwgMTMsIDExOCwgMSwgMjA2LCAyMzIsIDExOCwgMSwgMjA0LCA1LCAxMTgsIDEsIDIxNSwgMjM3LCAKKyAgICAxMTgsIDEsIDIyNiwgMTk1LCAxMTgsIDEsIDIzNSwgMTkwLCAxMTgsIDEsIDIxNCwgMTQ0LCAxMTgsIDEsIDIxMCwgMjEsIAorICAgIDExOCwgMSwgMjQ2LCAyMjMsIDExOCwgMSwgMjQ3LCAxNTgsIDExOCwgMSwgMjI3LCAxOTgsIDExOCwgMSwgMjQ2LCAxNjIsIAorICAgIDExOCwgMSwgMjQ3LCAyMSwgMTE4LCAxLCAyMDAsIDE3OSwgMTE4LCAxLCAyMjcsIDIxMiwgMTE4LCAxLCAyMzQsIDIzMCwgCisgICAgMTE4LCAxLCAyMzQsIDEzOSwgMTE4LCAxLCAyMzQsIDY5LCAxMTgsIDEsIDIwMSwgNjQsIDExOCwgMSwgMjM0LCAxNjYsIAorICAgIDExOCwgMSwgMjMzLCAyMDMsIDExOCwgMSwgMjM3LCAxMTIsIDExOCwgMSwgMTk5LCAyNDcsIDExOCwgMSwgMjM4LCAxOTcsIAorICAgIDExOCwgMSwgMjA0LCAxODUsIDIzNiwgNTksIDExOCwgMSwgMjUxLCAxNzEsIDExOCwgMjE2LCAxMjgsIDIxMCwgMTU0LCA2NywgCisgICAgMSwgMTE4LCAyMjAsIDEyNSwgMTE4LCAxLCAyNTEsIDIxMCwgMTE4LCAxLCAyMzQsIDE2NSwgNTQsIDExOCwgMSwgMjI1LCAKKyAgICAxNjcsIDU0LCAyOSwgMTI5LCAyMjYsIDEyMSwgMjksIDEyOSwgMjA4LCAxNzEsIDI5LCAxMjksIDIxOSwgMTQzLCAyOSwgCisgICAgMTI5LCAyMDUsIDI1MywgMjksIDEyOSwgMjA4LCAxNjAsIDI5LCAxMjksIDIxMywgNzgsIDI5LCAxMjksIDIyMSwgMTk3LCAKKyAgICAyOSwgMTI5LCAyMTUsIDE5MCwgMjksIDEyOSwgMjA4LCAxNjgsIDI5LCAxMjksIDIwOSwgMTI5LCAyOSwgMTI5LCAyMDgsIAorICAgIDE2NSwgMjksIDEyOSwgMjI4LCAxNzQsIDI5LCAxMjksIDI0NiwgMTY4LCAyOSwgMTI5LCAyMDgsIDE3NSwgMjksIDEyOSwgCisgICAgMjQ2LCAyMzIsIDI5LCAxMjksIDIyNiwgMTgzLCAyOSwgMTI5LCAyMDYsIDgwLCAyOSwgMTI5LCAyMTUsIDIyNywgMjksIAorICAgIDEyOSwgMjM0LCA2NiwgMjksIDEyOSwgMjE5LCAxMzksIDI5LCAxMjksIDIwOCwgMTY5LCAyOSwgMTI5LCAyMTksIDEzMywgCisgICAgMjksIDEyOSwgMjE5LCAxMzcsIDI5LCAxMjksIDIwNSwgMjUwLCAyOSwgMTI5LCAyMTMsIDY2LCAyOSwgMTI5LCAyMDgsIAorICAgIDE2NywgMjksIDEyOSwgMjEzLCA3NiwgMjksIDEyOSwgMjI3LCA1MCwgMjksIDEyOSwgMjIxLCAxOTAsIDI5LCAxMjksIDIyNywgCisgICAgNTMsIDI5LCAxMjksIDIxNSwgMTg1LCAyOSwgMTI5LCAyMTUsIDE4MywgMjksIDEyOSwgMjE1LCAxNzEsIDI5LCAxMjksIAorICAgIDIxNSwgMTc5LCAyOSwgMTI5LCAyMTUsIDE3NywgMjksIDEyOSwgMjE1LCAxNzQsIDI5LCAxMjksIDIxNSwgMTc2LCAyOSwgCisgICAgMTI5LCAyMTUsIDE3MywgMjksIDEyOSwgMjE1LCAxNzgsIDI5LCAxMjksIDIxNSwgMTg4LCAyOSwgMTI5LCAyMTUsIDE4OSwgCisgICAgMjksIDEyOSwgMjE1LCAxNzIsIDI5LCAxMjksIDIxNSwgMTgyLCAyOSwgMTI5LCAyMjcsIDUxLCAyOSwgMTI5LCAyMjcsIDQ5LCAKKyAgICAyOSwgMTI5LCAyMDksIDEyMiwgMjksIDEyOSwgMjA5LCAxMjAsIDI5LCAxMjksIDIwOSwgMTEyLCAyOSwgMTI5LCAyMDksIAorICAgIDExNSwgMjksIDEyOSwgMjA5LCAxMjEsIDI5LCAxMjksIDIwOSwgMTE3LCAyOSwgMTI5LCAyMDksIDExNiwgMjksIDEyOSwgCisgICAgMjA5LCAxMTQsIDI5LCAxMjksIDIwOSwgMTI1LCAyOSwgMTI5LCAyMDksIDEyNywgMjksIDEyOSwgMjA5LCAxMjgsIDI5LCAKKyAgICAxMjksIDIwOSwgMTIzLCAyOSwgMTI5LCAyMDksIDExMywgMjksIDEyOSwgMjA5LCAxMTgsIDI5LCAxMjksIDIwOSwgMTI2LCAKKyAgICAyOSwgMTI5LCAyNDYsIDIxNCwgMjksIDEyOSwgMjQ2LCAyMTIsIDI5LCAxMjksIDI0NywgNDgsIDI5LCAxMjksIDI0NywgNDYsIAorICAgIDI5LCAxMjksIDIxNiwgMTQ2LCAyOSwgMTI5LCAyMjgsIDE2OSwgMjksIDEyOSwgMjI4LCAxNjAsIDI5LCAxMjksIDIyOCwgCisgICAgMTY4LCAyOSwgMTI5LCAyMjgsIDE2NSwgMjksIDEyOSwgMjI4LCAxNjMsIDI5LCAxMjksIDIyOCwgMTY3LCAyOSwgMTI5LCAKKyAgICAyMDgsIDE3MiwgMjksIDEyOSwgMjI4LCAxNzIsIDI5LCAxMjksIDIyOCwgMTczLCAyOSwgMTI5LCAyMjgsIDE2MSwgMjksIAorICAgIDEyOSwgMjI4LCAxNjYsIDI5LCAxMjksIDIwMCwgMjgsIDI5LCAxMjksIDI0NiwgMTY3LCAyOSwgMTI5LCAyNDYsIDIxNSwgCisgICAgMjksIDEyOSwgMjQ2LCAyMTMsIDI5LCAxMjksIDI0NywgNDksIDI5LCAxMjksIDI0NywgNDcsIDI5LCAxMjksIDI0NiwgMjMwLCAKKyAgICAyOSwgMTI5LCAyNDYsIDIzMSwgMjksIDEyOSwgMjQ2LCAyMTYsIDI5LCAxMjksIDI0NywgNTAsIDI5LCAxMjksIDIxNSwgCisgICAgMjI1LCAyOSwgMTI5LCAyMjcsIDUyLCAyOSwgMTI5LCAyMDgsIDE3MywgMjksIDEyOSwgMjAwLCAzNCwgMjksIDEyOSwgMjI2LCAKKyAgICAxMTIsIDI5LCAxMjksIDIxOSwgMTM1LCAyOSwgMTI5LCAyMTksIDE0MSwgMjksIDEyOSwgMjE5LCAxNDAsIDI5LCAxMjksIAorICAgIDIwNSwgMjQ3LCAyOSwgMTI5LCAyMzcsIDkzLCAyOSwgMTgxLCAyMzcsIDkzLCAyOSwgMTgxLCA2MiwgMjksIDE4MSwgMjUxLCAKKyAgICAyMjEsIDI5LCAxODEsIDE4MywgMjksIDE4MSwgMjAwLCA5OCwgMjksIDE4MSwgMjM4LCAxNDIsIDI5LCAxODEsIDcyLCAyOSwgCisgICAgMTgxLCAyMDAsIDM4LCAyOSwgMTgxLCAyMDAsIDUxLCAyOSwgMTgxLCA3NCwgMjksIDE4MSwgMjAxLCAxMTQsIDI5LCAxODEsIAorICAgIDIwMSwgMTEwLCAyOSwgMTgxLCAyMTcsIDEyMSwgMjksIDE4MSwgMTk5LCAyNDUsIDI5LCAxODEsIDY2LCAyOSwgMTgxLCAKKyAgICAyMDEsIDUwLCAyOSwgMTgxLCAyMDEsIDY0LCAyOSwgMTgxLCAyMDEsIDMxLCAyOSwgMTgxLCAxOTksIDIxMSwgMjksIDE4MSwgCisgICAgMjM4LCA2OSwgMjksIDE4MSwgMjAwLCA5LCAyOSwgMTgxLCA3MCwgMjksIDE4MSwgMjU1LCAxMzMsIDI5LCAxODEsIDI1NSwgCisgICAgMTMyLCAyOSwgMTgxLCAyMDAsIDExMiwgMjksIDE4MSwgMjAwLCAxMTAsIDI5LCAxODEsIDIzOCwgMTQwLCAyOSwgMTgxLCAKKyAgICAyMzgsIDEzOSwgMjksIDE4MSwgMjM4LCAxNDEsIDI5LCAxODEsIDIwMCwgMzcsIDI5LCAxODEsIDIwMCwgMzYsIDI5LCAxODEsIAorICAgIDIxNywgMjMwLCAyOSwgMTgxLCAyMTcsIDIzMSwgMjksIDE4MSwgMjE3LCAyMjQsIDI5LCAxODEsIDIxNywgMjI5LCAyOSwgCisgICAgMTgxLCAyMTcsIDIyNywgMjksIDE4MSwgMTk5LCAyMzksIDI5LCAxODEsIDE5OSwgMjM4LCAyOSwgMTgxLCAxOTksIDIzNywgCisgICAgMjksIDE4MSwgMTk5LCAyNDAsIDI5LCAxODEsIDE5OSwgMjQxLCAyOSwgMTgxLCAyMDQsIDEwNCwgMjksIDE4MSwgMjA0LCAKKyAgICAxMDMsIDI5LCAxODEsIDIwNCwgMTAxLCAyOSwgMTgxLCAyMDQsIDk3LCAyOSwgMTgxLCAyMDQsIDk4LCAyOSwgMTgxLCAxOTksIAorICAgIDIxMCwgMjksIDE4MSwgMTk5LCAyMDcsIDI5LCAxODEsIDE5OSwgMjA4LCAyOSwgMTgxLCAxOTksIDIwMiwgMjksIDE4MSwgCisgICAgMTk5LCAyMDMsIDI5LCAxODEsIDE5OSwgMjA0LCAyOSwgMTgxLCAxOTksIDIwNiwgMjksIDE4MSwgMjM4LCA2MywgMjksIAorICAgIDE4MSwgMjM4LCA2NSwgMjksIDE4MSwgMjAwLCA4LCAyOSwgMTgxLCAyMzMsIDE4LCAyOSwgMTgxLCAyMzMsIDEwLCAyOSwgCisgICAgMTgxLCAyMzMsIDEzLCAyOSwgMTgxLCAyMzMsIDExLCAyOSwgMTgxLCAyMzMsIDE1LCAyOSwgMTgxLCAyMzMsIDE3LCAyOSwgCisgICAgMTgxLCAyNTAsIDI0NSwgMjksIDE4MSwgMjUwLCAyNDIsIDI5LCAxODEsIDI1MCwgMjQwLCAyOSwgMTgxLCAyNTAsIDI0MSwgCisgICAgMjksIDE4MSwgMjA4LCAxNzYsIDI5LCAxODEsIDI1NSwgMTM0LCAyOSwgMTgxLCAyMDAsIDExMSwgMjksIDE4MSwgMjAwLCAKKyAgICAzNSwgMjksIDE4MSwgMjE3LCAyMjYsIDI5LCAxODEsIDIxNywgMjI1LCAyOSwgMTEwLCAyMjYsIDEyMSwgMjksIDExMCwgCisgICAgMjA4LCAxNzEsIDI5LCAxMTAsIDIyNiwgMTE0LCAyOSwgMTEwLCAyMTksIDE0MywgMjksIDExMCwgMjE5LCAxNDEsIDI5LCAKKyAgICAxMTAsIDIxOSwgMTQwLCAyOSwgMTEwLCAyMDUsIDI1MywgMjksIDExMCwgMjEzLCA3OCwgMjksIDExMCwgMjEzLCA3MywgMjksIAorICAgIDExMCwgMjEzLCA3MCwgMjksIDExMCwgMjEzLCA2MywgMjksIDExMCwgMjEzLCA1OCwgMjksIDExMCwgMjEzLCA1MywgMjksIAorICAgIDExMCwgMjEzLCA2NCwgMjksIDExMCwgMjEzLCA3NiwgMjksIDExMCwgMjIxLCAxOTcsIDI5LCAxMTAsIDIxNSwgMTkwLCAyOSwgCisgICAgMTEwLCAyMTUsIDE3OSwgMjksIDExMCwgMjA5LCAxMjksIDI5LCAxMTAsIDIwOCwgMTY1LCAyOSwgMTEwLCAyMjgsIDE3NCwgCisgICAgMjksIDExMCwgMjQ2LCAxNjgsIDI5LCAxMTAsIDI0NiwgMjMyLCAyOSwgMTEwLCAyMjYsIDE4MywgMjksIDExMCwgMjA2LCAKKyAgICA4MCwgMjksIDExMCwgMjE1LCAyMjcsIDI5LCAxMTAsIDIzNCwgNjYsIDI5LCAxMTAsIDIyNiwgMTE1LCAyOSwgMTEwLCAyMjYsIAorICAgIDExMywgMjksIDExMCwgMjE5LCAxMzksIDI5LCAxMTAsIDIxOSwgMTMzLCAyOSwgMTEwLCAyMTksIDEzNSwgMjksIDExMCwgCisgICAgMjE5LCAxMzgsIDI5LCAxMTAsIDIxOSwgMTM0LCAyOSwgMTEwLCAyMDUsIDI1MCwgMjksIDExMCwgMjA1LCAyNDcsIDI5LCAKKyAgICAxMTAsIDIxMywgNzEsIDI5LCAxMTAsIDIxMywgNjYsIDI5LCAxMTAsIDIxMywgNTIsIDI5LCAxMTAsIDIxMywgNTEsIDI5LCAKKyAgICAxMTAsIDIwOCwgMTY3LCAyOSwgMTEwLCAyMTMsIDY4LCAyOSwgMTEwLCAyMTMsIDY3LCAyOSwgMTEwLCAyMTMsIDYwLCAyOSwgCisgICAgMTEwLCAyMTMsIDYyLCAyOSwgMTEwLCAyMTMsIDc1LCAyOSwgMTEwLCAyMTMsIDU1LCAyOSwgMTEwLCAyMTMsIDY1LCAyOSwgCisgICAgMTEwLCAyMTMsIDc0LCAyOSwgMTEwLCAyMTMsIDUwLCAyOSwgMTEwLCAyMjEsIDE5MywgMjksIDExMCwgMjIxLCAxODgsIDI5LCAKKyAgICAxMTAsIDIyMSwgMTkwLCAyOSwgMTEwLCAyMjEsIDE4NywgMjksIDExMCwgMjIxLCAxODUsIDI5LCAxMTAsIDIyMSwgMTkxLCAKKyAgICAyOSwgMTEwLCAyMjEsIDE5NiwgMjksIDExMCwgMjIxLCAxOTQsIDI5LCAxMTAsIDIyNywgNTMsIDI5LCAxMTAsIDIxNSwgCisgICAgMTgxLCAyOSwgMTEwLCAyMTUsIDE4MiwgMjksIDExMCwgMjE1LCAxODcsIDI5LCAxMTAsIDIyNywgNTEsIDI5LCAxMTAsIAorICAgIDIwOSwgMTIyLCAyOSwgMTEwLCAyMDksIDExMiwgMjksIDExMCwgMjA5LCAxMTUsIDI5LCAxMTAsIDIwOSwgMTE3LCAyOSwgCisgICAgMTEwLCAyMTYsIDE0NiwgMjksIDExMCwgMjI4LCAxNjksIDI5LCAxMTAsIDIyOCwgMTYyLCAyOSwgMTEwLCAyMDgsIDE3MiwgCisgICAgMjksIDExMCwgMjI4LCAxNzAsIDI5LCAxMTAsIDIwMCwgMjgsIDI5LCAxMTAsIDIwMCwgMjQsIDI5LCAxMTAsIDIwMCwgMjUsIAorICAgIDI5LCAxMTAsIDIxNSwgMjI1LCAyOSwgMTEwLCAyMjcsIDUyLCAyOSwgMTEwLCAyMzQsIDY0LCAyOSwgMTEwLCAyMzQsIDYyLCAKKyAgICAyOSwgMTEwLCAyMzQsIDY1LCAyOSwgMTEwLCAyMzQsIDYzLCAyOSwgMTEwLCAyMDAsIDM0LCAyOSwgMTEwLCAyMjYsIDExNywgCisgICAgMjksIDExMCwgMjI2LCAxMTYsIDI5LCAxMTAsIDIyNiwgMTIwLCAyOSwgMTEwLCAyMjYsIDExOCwgMjksIDExMCwgMjI2LCAKKyAgICAxMTksIDI5LCAxMTAsIDIwOCwgMTY5LCAzNCwgNSwgMTQ0LCAzNCwgNSwgMjMzLCA5NywgMzQsIDUsIDIzNCwgNzUsIDM0LCAKKyAgICA1LCAyMzQsIDIzMywgMzQsIDUsIDIzNCwgMTIwLCAzNCwgNSwgMjM0LCAxMzksIDM0LCA1LCAyMzMsIDIwNywgMzQsIDUsIAorICAgIDIzMywgMjA2LCAzNCwgNSwgMTk0LCAzNCwgNSwgMjI0LCA0MiwgMzQsIDUsIDIyNCwgMjEwLCAzNCwgNSwgMjI1LCAxNzUsIAorICAgIDM0LCA1LCAyMjUsIDMyLCAzNCwgNSwgMjI1LCA0MCwgMzQsIDUsIDIyNCwgMTEwLCAzNCwgNSwgMjI0LCAxMCwgMzQsIDUsIAorICAgIDIzNCwgODQsIDM0LCA1LCAyMzQsIDc4LCAzNCwgNSwgMjM0LCA4MCwgMzQsIDUsIDIzNCwgODMsIDM0LCA1LCAyMzQsIDgxLCAKKyAgICAzNCwgNSwgMjM0LCA4MiwgMzQsIDUsIDIzNCwgNzksIDM0LCA1LCAyMzQsIDc3LCAzNCwgNSwgMTc4LCAzNCwgNSwgMjIxLCAKKyAgICA0MSwgMzQsIDUsIDIyMSwgMjExLCAzNCwgNSwgMjIyLCAyMzMsIDM0LCA1LCAyMjIsIDY0LCAzNCwgNSwgMjIyLCA3NiwgMzQsIAorICAgIDUsIDIyMSwgMTM2LCAzNCwgNSwgMjIwLCAyMzEsIDM0LCA1LCAyMDcsIDk0LCAzNCwgNSwgMjA3LCA4OCwgMzQsIDUsIDIwNywgCisgICAgOTAsIDM0LCA1LCAyMDcsIDkzLCAzNCwgNSwgMjA3LCA5MSwgMzQsIDUsIDIwNywgOTIsIDM0LCA1LCAyMDcsIDg5LCAzNCwgCisgICAgNSwgMjA3LCA4NywgMzQsIDUsIDIxMywgMjUyLCAzNCwgNSwgMjEyLCAxNzUsIDM0LCA1LCAyMTMsIDg4LCAzNCwgNSwgMjEzLCAKKyAgICAyNDgsIDM0LCA1LCAyMTMsIDE2NywgMzQsIDUsIDIxMywgMTkwLCAzNCwgNSwgMjEzLCAxLCAzNCwgNSwgMjEyLCAxNDAsIAorICAgIDM0LCA1LCAyMTIsIDY0LCAzNCwgNSwgMjA4LCAyNCwgMzQsIDUsIDIwOSwgMTgyLCAzNCwgNSwgMjEyLCA2MSwgMzQsIDUsIAorICAgIDIxMSwgMTkwLCAzNCwgNSwgMjExLCAyMDIsIDM0LCA1LCAyMDksIDI5LCAzNCwgNSwgMjA3LCAxODYsIDM0LCA1LCAyMTAsIAorICAgIDExNCwgMzQsIDUsIDIwOSwgMjIwLCAzNCwgNSwgMjEwLCAzMywgMzQsIDUsIDIxMCwgMTA5LCAzNCwgNSwgMjEwLCA2MywgCisgICAgMzQsIDUsIDIxMCwgNjUsIDM0LCA1LCAyMTAsIDgsIDM0LCA1LCAyMDksIDIwMCwgMzQsIDUsIDIxNCwgMTU5LCAzNCwgNSwgCisgICAgMjE0LCA5NywgMzQsIDUsIDIxNCwgMTIxLCAzNCwgNSwgMjE0LCAxNTgsIDM0LCA1LCAyMTQsIDEzOCwgMzQsIDUsIDIxNCwgCisgICAgMTM5LCAzNCwgNSwgMjE0LCAxMDksIDM0LCA1LCAyMTQsIDEwOCwgMzQsIDUsIDIxNCwgNTEsIDM0LCA1LCAyMTQsIDQ3LCAKKyAgICAzNCwgNSwgMjE0LCA1MCwgMzQsIDUsIDIxNCwgNDgsIDM0LCA1LCAyMTQsIDQ5LCAzNCwgNSwgMjE0LCAxMzUsIDM0LCA1LCAKKyAgICAyMTQsIDEyNywgMzQsIDUsIDIxNCwgMTMwLCAzNCwgNSwgMjE0LCAxMzQsIDM0LCA1LCAyMTQsIDEzMSwgMzQsIDUsIDIxNCwgCisgICAgMTMyLCAzNCwgNSwgMjE0LCAxMjksIDM0LCA1LCAyMTQsIDEyNiwgMzQsIDUsIDIxNCwgMTIyLCAzNCwgNSwgMjE0LCAxMjUsIAorICAgIDM0LCA1LCAyMTQsIDEyMywgMzQsIDUsIDIxNCwgMTI0LCAzNCwgNSwgMjQ5LCAxMzYsIDM0LCA1LCAyNDgsIDM2LCAzNCwgNSwgCisgICAgMjQ4LCAxODgsIDM0LCA1LCAyNDksIDEzNCwgMzQsIDUsIDI0OCwgMjUyLCAzNCwgNSwgMjQ5LCA4LCAzNCwgNSwgMjQ4LCAKKyAgICAxMjQsIDM0LCA1LCAyNDcsIDI0MCwgMzQsIDUsIDIwMywgOTAsIDM0LCA1LCAyMDEsIDE2NiwgMzQsIDUsIDIwMiwgMjM0LCAKKyAgICAzNCwgNSwgMjAzLCA4OSwgMzQsIDUsIDIwMywgNTQsIDM0LCA1LCAyMDMsIDU5LCAzNCwgNSwgMjAyLCAxOTMsIDM0LCA1LCAKKyAgICAyMDEsIDE1NywgMzQsIDUsIDIwNywgMzYsIDM0LCA1LCAyMDQsIDIxNSwgMzQsIDUsIDIwNiwgMTUsIDM0LCA1LCAyMDcsIAorICAgIDMyLCAzNCwgNSwgMjA2LCAxOTAsIDM0LCA1LCAyMDYsIDIwMSwgMzQsIDUsIDEzOCwgMzQsIDUsIDIwNCwgMTcwLCAzNCwgNSwgCisgICAgMjQ3LCAxOTAsIDM0LCA1LCAyNDIsIDIxNCwgMzQsIDUsIDI0NiwgMTczLCAzNCwgNSwgMjQ3LCAxODksIDM0LCA1LCAyNDcsIAorICAgIDY4LCAzNCwgNSwgMjQ3LCA3NiwgMzQsIDUsIDI0NiwgOTEsIDM0LCA1LCAyNDIsIDE3NiwgMzQsIDUsIDIwMCwgMTgxLCAzNCwgCisgICAgNSwgMjAwLCAxNTEsIDM0LCA1LCAyMDAsIDE2OSwgMzQsIDUsIDIwMCwgMTgwLCAzNCwgNSwgMjAwLCAxNzQsIDM0LCA1LCAKKyAgICAyMDAsIDE3NSwgMzQsIDUsIDIwMCwgMTU5LCAzNCwgNSwgMjAwLCAxNTgsIDM0LCA1LCAyMDAsIDE0NSwgMzQsIDUsIDIwMCwgCisgICAgMTQxLCAzNCwgNSwgMjAwLCAxNDQsIDM0LCA1LCAyMDAsIDE0MiwgMzQsIDUsIDIwMCwgMTQzLCAzNCwgNSwgMTg4LCAzNCwgCisgICAgNSwgMjE4LCAxMzMsIDM0LCA1LCAyMTksIDE1MCwgMzQsIDUsIDIyMCwgMTU3LCAzNCwgNSwgMjIwLCAyOSwgMzQsIDUsIAorICAgIDIyMCwgMzQsIDM0LCA1LCAyMTgsIDI0MSwgMzQsIDUsIDIxOCwgNjksIDM0LCA1LCAyMTgsIDYwLCAzNCwgNSwgMjE4LCAxOSwgCisgICAgMzQsIDUsIDIxOCwgNDEsIDM0LCA1LCAyMTgsIDU5LCAzNCwgNSwgMjE4LCA0OSwgMzQsIDUsIDIxOCwgNTAsIDM0LCA1LCAKKyAgICAyMTgsIDI2LCAzNCwgNSwgMjE4LCA5LCAzNCwgNSwgMjM1LCAxMjMsIDYyLCAzNCwgNSwgMjM1LCAxMjMsIDY2LCAzNCwgNSwgCisgICAgMjM1LCAxMjMsIDcwLCAzNCwgNSwgMjM1LCAxMjMsIDI1MiwgMTM4LCAzNCwgNSwgMjM1LCAxMjMsIDIzOCwgMjU1LCAzNCwgCisgICAgNSwgMjM1LCAxMjMsIDcyLCAzNCwgNSwgMjM1LCAxMjMsIDc0LCAzNCwgNSwgMjM1LCAxMjMsIDIwMSwgMTE0LCAzNCwgNSwgCisgICAgMTYxLCAzNCwgNSwgMjI2LCAxNSwgMzQsIDUsIDIyNiwgMTYzLCAzNCwgNSwgMjI3LCAxMDUsIDM0LCA1LCAyMjcsIDUsIDM0LCAKKyAgICA1LCAyMjcsIDgsIDM0LCA1LCAyMjYsIDg4LCAzNCwgNSwgMjI2LCA4NywgMzQsIDUsIDIyNSwgMjI5LCAzNCwgNSwgMjI1LCAKKyAgICAyMjIsIDM0LCA1LCAyMjUsIDIyOCwgMzQsIDUsIDIyNSwgMjIzLCAzNCwgNSwgMjI1LCAyMjQsIDM0LCA1LCAyMjUsIDIxNSwgCisgICAgMzQsIDUsIDIyNSwgMjA5LCAzNCwgNSwgMjI1LCAyMTEsIDM0LCA1LCAyMjUsIDIxNCwgMzQsIDUsIDIyNSwgMjEyLCAzNCwgCisgICAgNSwgMjI1LCAyMTMsIDM0LCA1LCAyMjUsIDIxMCwgMzQsIDUsIDIyNSwgMjA4LCAzNCwgNSwgMjI1LCAyMDQsIDM0LCA1LCAKKyAgICAyMjUsIDIwNywgMzQsIDUsIDIyNSwgMjA1LCAzNCwgNSwgMjI1LCAyMDYsIDM0LCA1LCAyMDEsIDExNCwgMzQsIDUsIDIwMCwgCisgICAgMjE2LCAzNCwgNSwgMjAxLCAzMSwgMzQsIDUsIDIwMSwgMTEzLCAzNCwgNSwgMjAxLCA1NywgMzQsIDUsIDIwMSwgNjQsIDM0LCAKKyAgICA1LCAyMDEsIDAsIDM0LCA1LCAyMDAsIDI1NSwgMzQsIDUsIDIxNSwgMjM2LCA2MiwgMzQsIDUsIDIxNSwgMjM2LCA2NiwgMzQsIAorICAgIDUsIDIxNSwgMjM2LCA3MCwgMzQsIDUsIDIxNSwgMjM2LCAyNTIsIDEzOCwgMzQsIDUsIDIxNSwgMjM2LCAyMzgsIDI1NSwgCisgICAgMzQsIDUsIDIxNSwgMjM2LCA3MiwgMzQsIDUsIDIxNSwgMjM2LCA3NCwgMzQsIDUsIDE5OSwgMTE0LCAzNCwgNSwgMTk5LCAzLCAKKyAgICAzNCwgNSwgMTk5LCAzNiwgMzQsIDUsIDE5OSwgMTEyLCAzNCwgNSwgMTk5LCA4NywgMzQsIDUsIDE5OSwgODksIDM0LCA1LCAKKyAgICAxOTksIDE0LCAzNCwgNSwgMTk4LCAyNDYsIDM0LCA1LCAxOTksIDc3LCAzNCwgNSwgMTk5LCA1NCwgMzQsIDUsIDE5OSwgNjMsIAorICAgIDM0LCA1LCAxOTksIDc2LCAzNCwgNSwgMTk5LCA2NywgMzQsIDUsIDE5OSwgNjgsIDM0LCA1LCAxOTksIDYwLCAzNCwgNSwgCisgICAgMTk5LCA0NSwgMzQsIDUsIDE4MywgMzQsIDUsIDE5OSwgMjExLCAzNCwgNSwgMjAwLCA5LCAzNCwgNSwgMjAwLCAxMDksIDM0LCAKKyAgICA1LCAyMDAsIDQ4LCAzNCwgNSwgMjAwLCA1MSwgMzQsIDUsIDE5OSwgMjQ1LCAzNCwgNSwgMTk5LCAyMzYsIDM0LCA1LCAyNDIsIAorICAgIDU4LCAzNCwgNSwgMjM5LCAxMzcsIDM0LCA1LCAyNDEsIDc2LCAzNCwgNSwgMjQyLCA1NywgMzQsIDUsIDI0MSwgMTYxLCAzNCwgCisgICAgNSwgMjQxLCAxNzUsIDM0LCA1LCAyNDAsIDIxMSwgMzQsIDUsIDIzOSwgMTA0LCAzNCwgNSwgMjQxLCAyMjAsIDM0LCA1LCAKKyAgICAyNDEsIDE4NSwgMzQsIDUsIDI0MSwgMTk3LCAzNCwgNSwgMjQxLCAyMTksIDM0LCA1LCAyNDEsIDIwNywgMzQsIDUsIDI0MSwgCisgICAgMjA4LCAzNCwgNSwgMjQxLCAxOTAsIDM0LCA1LCAyNDEsIDE3NiwgMzQsIDUsIDIyNywgMjQ4LCAzNCwgNSwgMjI3LCAxNDcsIAorICAgIDM0LCA1LCAyMjcsIDIwNywgMzQsIDUsIDIyNywgMjQ3LCAzNCwgNSwgMjI3LCAyMjUsIDM0LCA1LCAyMjcsIDIyNywgMzQsIAorICAgIDUsIDIyNywgMTY2LCAzNCwgNSwgMjI3LCAxMjYsIDM0LCA1LCAyMzYsIDg5LCAzNCwgNSwgMjM1LCA1MCwgMzQsIDUsIDIzNSwgCisgICAgMTYxLCAzNCwgNSwgMjM2LCA4NiwgMzQsIDUsIDIzNiwgNywgMzQsIDUsIDIzNiwgMTUsIDM0LCA1LCAyMzUsIDExNiwgMzQsIAorICAgIDUsIDIzNSwgMTE1LCAzNCwgNSwgMjM1LCAxMCwgMzQsIDUsIDIzNSwgNiwgMzQsIDUsIDIzNSwgOSwgMzQsIDUsIDIzNSwgNywgCisgICAgMzQsIDUsIDIzNSwgOCwgMzQsIDUsIDIzNSwgMjM1LCAzNCwgNSwgMjM1LCAyMTUsIDM0LCA1LCAyMzUsIDIyNSwgMzQsIDUsIAorICAgIDIzNSwgMjM0LCAzNCwgNSwgMjM1LCAyMjksIDM0LCA1LCAyMzUsIDIzMCwgMzQsIDUsIDIzNSwgMjE5LCAzNCwgNSwgMjM1LCAKKyAgICAyMDQsIDM0LCA1LCAyMDYsIDEyMiwgMzQsIDUsIDIwNiwgMzUsIDM0LCA1LCAyMDYsIDg0LCAzNCwgNSwgMjA2LCAxMjEsIAorICAgIDM0LCA1LCAyMDYsIDEwNCwgMzQsIDUsIDIwNiwgMTA2LCAzNCwgNSwgMjA2LCA2MSwgMzQsIDUsIDIwNiwgMjYsIDM0LCA1LCAKKyAgICAyNDcsIDM3LCAzNCwgNSwgMjQ2LCAxOTIsIDM0LCA1LCAyNDYsIDIzNiwgMzQsIDUsIDI0NywgMzYsIDM0LCA1LCAyNDcsIDQsIAorICAgIDM0LCA1LCAyNDcsIDgsIDM0LCA1LCAyNDYsIDIxMCwgMzQsIDUsIDI0NiwgMTgxLCAzNCwgNSwgMjE1LCAyNDUsIDM0LCA1LCAKKyAgICAyMTUsIDIxMCwgMzQsIDUsIDIxNSwgMjI5LCAzNCwgNSwgMjE1LCAyNDQsIDM0LCA1LCAyMTUsIDIzMSwgMzQsIDUsIDIxNSwgCisgICAgMjMyLCAzNCwgNSwgMjE1LCAyMTcsIDM0LCA1LCAyMTUsIDIwNiwgMzQsIDUsIDIwNSwgMzIsIDM0LCA1LCAyMDUsIDUsIDM0LCAKKyAgICA1LCAyMDUsIDExLCAzNCwgNSwgMjA1LCAzMSwgMzQsIDUsIDIwNSwgMjUsIDM0LCA1LCAyMDUsIDI2LCAzNCwgNSwgMjA1LCAKKyAgICA5LCAzNCwgNSwgMjA1LCAzLCAzNCwgNSwgMjA0LCAxMTMsIDM0LCA1LCAyMDQsIDEwNSwgMzQsIDUsIDIwNCwgMTA5LCAzNCwgCisgICAgNSwgMjA0LCAxMTIsIDM0LCA1LCAyMDQsIDExMCwgMzQsIDUsIDIwNCwgMTExLCAzNCwgNSwgMjA0LCAxMDcsIDM0LCA1LCAKKyAgICAyMDQsIDEwNiwgMzQsIDUsIDIzNywgMTk1LCAzNCwgNSwgMjM2LCAxODksIDM0LCA1LCAyMzcsIDExMiwgMzQsIDUsIDIzNywgCisgICAgMTk0LCAzNCwgNSwgMjM3LCAxNDAsIDM0LCA1LCAyMzcsIDE0NywgMzQsIDUsIDIzNywgMTMsIDM0LCA1LCAyMzYsIDE2NywgCisgICAgMzQsIDUsIDE3MiwgMzQsIDUsIDIxNCwgMjI0LCAzNCwgNSwgMjE1LCAyMDQsIDM0LCA1LCAyMTYsIDIxMCwgMzQsIDUsIAorICAgIDIxNiwgNjEsIDM0LCA1LCAyMTYsIDczLCAzNCwgNSwgMjE1LCAxMDYsIDM0LCA1LCAyMTQsIDE4NSwgMzQsIDUsIDIxMiwgCisgICAgMTMwLCAzNCwgNSwgMjIwLCAyMjAsIDM0LCA1LCAyMzYsIDE2MSwgMzQsIDM4LCAyMzYsIDMsIDI2LCAyMiwgMjI1LCAyLCAKKyAgICA4MSwgMzQsIDM4LCAyMiwgMjI1LCAyLCA4MSwgMzQsIDM4LCAyMzYsIDMsIDgxLCAzNCwgMjExLCAxOTMsIDgxLCAzNCwgCisgICAgMjAwLCAyMzcsIDM0LCAyMzYsIDE4MywgMjA4LCA3NiwgMzQsIDI0NiwgNzAsIDM0LCAyMTAsIDE2NywgMzQsIDI0NiwgNzksIAorICAgIDM0LCAyMTUsIDI1LCAyNDYsIDc5LCAzNCwgMjE0LCA3OSwgODEsIDM0LCAyMTYsIDEyOCwgMjEwLCAxNTQsIDM0LCAxNywgCisgICAgMTAyLCAzNCwgMTcsIDEwNSwgMzQsIDE3LCAxNDcsIDM0LCAxNywgMTQ5LCAzNCwgMTcsIDE2NCwgMzQsIDE3LCAxODcsIDM0LCAKKyAgICAxNywgMjEwLCAxMzUsIDM0LCAxNywgMTkyLCAzNCwgMTcsIDIxOSwgMTEzLCAzNCwgNDEsIDIwNiwgMTY2LCAzNCwgNDEsIAorICAgIDIwNCwgMTU5LCAzNCwgNDEsIDIwNiwgNjcsIDM0LCA0MSwgMjM2LCAyMzUsIDM0LCA0MSwgMjM3LCAxMDQsIDM0LCA0MSwgCisgICAgMjA5LCA5MiwgMzQsIDQxLCAyMTAsIDEyOSwgMzQsIDQxLCAyMzgsIDIyMiwgMzQsIDQxLCAyMTksIDEwOCwgMzQsIDQxLCAKKyAgICAyMzMsIDgyLCAzNCwgNDEsIDIwNiwgMTY3LCAyMDYsIDUwLCAzNCwgNSwgMjExLCAxOTgsIDIyMCwgMjMxLCAzNCwgNSwgCisgICAgMjIwLCAyMjcsIDM0LCA1LCAyMjAsIDIyOCwgMzQsIDUsIDIyMCwgMjI5LCAzNCwgNSwgMjExLCAxOTgsIDI0NywgMjQwLCAKKyAgICAzNCwgNSwgMjQ3LCAyMzcsIDM0LCA1LCAyNDcsIDIzOCwgMzQsIDUsIDI0NywgMjM5LCAzNCwgNSwgMjExLCAxOTgsIDIzNiwgCisgICAgMTY3LCAzNCwgNSwgMjM2LCAxNjMsIDM0LCA1LCAyMzYsIDE2NCwgMzQsIDUsIDIzNiwgMTY1LCAzNCwgNSwgMjExLCAxOTgsIAorICAgIDIxNCwgMTg1LCAzNCwgNSwgMjE0LCAxODEsIDM0LCA1LCAyMTQsIDE4MiwgMzQsIDUsIDIxNCwgMTgzLCAzNCwgMjA1LCAKKyAgICAxNzUsIDEzNCwgMTk5LCAyNDgsIDM0LCAyMDUsIDE3NSwgMTM0LCAyNDEsIDEyMSwgMzQsIDIwNSwgMTc1LCAxMzQsIDIxMywgCisgICAgMzIsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMDksIDI1MCwgMjEzLCAzMiwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0MSwgNTAsIDM0LCAKKyAgICAyMDUsIDE3NSwgMTM0LCAyMjYsIDI0MiwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0NiwgMjE4LCAzNCwgMjA1LCAxNzUsIDEzNCwgCisgICAgMjM0LCA3MSwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0MSwgMTIwLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjI1LCAyNDMsIDkxLCAxLCAKKyAgICA2MiwgOTEsIDEsIDcyLCA5MSwgMSwgNzAsIDkxLCAxLCA3NCwgOTEsIDEsIDY2LCA5MSwgMSwgMjAzLCAxNjgsIDkxLCAxLCAKKyAgICAyMzYsIDg5LCA5MSwgMSwgMTYxLCA5MSwgMSwgMjM2LCAxNSwgOTEsIDEsIDIzNSwgMTYxLCA5MSwgMSwgMjM1LCAxMTYsIAorICAgIDkxLCAxLCAyMzUsIDUwLCA5MSwgMSwgMjM1LCAxMiwgOTEsIDEsIDE0NCwgOTEsIDEsIDIzNCwgMTM5LCA5MSwgMSwgMjM0LCAKKyAgICA3NSwgOTEsIDEsIDIzMywgMjA3LCA5MSwgMSwgMjMzLCA5NywgOTEsIDEsIDIzMywgNjksIDkxLCAxLCAxOTQsIDkxLCAxLCAKKyAgICAyMjUsIDQwLCA5MSwgMSwgMjI0LCAyMTAsIDkxLCAxLCAyMjQsIDExMCwgOTEsIDEsIDIyNCwgNDIsIDkxLCAxLCAyMjQsIAorICAgIDExLCA5MSwgMSwgMTc4LCA5MSwgMSwgMjIyLCA3NiwgOTEsIDEsIDIyMSwgMjExLCA5MSwgMSwgMjIxLCAxMzYsIDkxLCAxLCAKKyAgICAyMjEsIDQxLCA5MSwgMSwgMTg4LCA5MSwgMSwgMjMzLCAyMzEsIDkxLCAxLCAyMjAsIDE0NCwgOTEsIDEsIDIyMCwgMzQsIAorICAgIDkxLCAxLCAyMTksIDE1MCwgOTEsIDEsIDIxOCwgMjQxLCA5MSwgMSwgMjE4LCAxMzMsIDkxLCAxLCAyMTgsIDcxLCA5MSwgMSwgCisgICAgMjE0LCA5NiwgOTEsIDEsIDIxNCwgODIsIDkxLCAxLCAyMTQsIDc1LCA5MSwgMSwgMjE0LCA2NiwgOTEsIDEsIDIxNCwgNTUsIAorICAgIDkxLCAxLCAyMTQsIDUzLCA5MSwgMSwgMjEyLCA2NCwgOTEsIDEsIDIxMiwgMTIyLCA5MSwgMSwgMjExLCAyMDIsIDkxLCAxLCAKKyAgICAyMDksIDE4MiwgOTEsIDEsIDIwOSwgMjksIDkxLCAxLCAyMDgsIDI0LCA5MSwgMSwgMjA3LCAxOTEsIDkxLCAxLCAyNDIsIAorICAgIDU4LCA5MSwgMSwgMjA3LCAzNiwgOTEsIDEsIDI0MSwgMTc1LCA5MSwgMSwgMjA2LCAyMDEsIDkxLCAxLCAyNDEsIDc2LCA5MSwgCisgICAgMSwgMjA2LCAxNSwgOTEsIDEsIDI0MCwgMjExLCA5MSwgMSwgMjM5LCAxMzcsIDkxLCAxLCAyMzksIDEwNywgOTEsIDEsIAorICAgIDI0MCwgMjIyLCA5MSwgMSwgMjA1LCAyMDMsIDkxLCAxLCAyMDUsIDIwMiwgOTEsIDEsIDIwNSwgMTkxLCA5MSwgMSwgMjA1LCAKKyAgICAxOTAsIDkxLCAxLCAyMDUsIDE4OSwgOTEsIDEsIDIwNSwgMTg4LCA5MSwgMSwgMjA1LCAzMiwgOTEsIDEsIDIwNSwgMjYsIAorICAgIDkxLCAxLCAyMDUsIDExLCA5MSwgMSwgMjA1LCA5LCA5MSwgMSwgMjA1LCA1LCA5MSwgMSwgMjA1LCA0LCA5MSwgMSwgMjAxLCAKKyAgICAxMTQsIDkxLCAxLCAyMDEsIDY0LCA5MSwgMSwgMjAxLCAzMSwgOTEsIDEsIDIwMSwgMCwgOTEsIDEsIDIwMCwgMjE2LCA5MSwgCisgICAgMSwgMjAwLCAyMDMsIDkxLCAxLCAxODMsIDkxLCAxLCAyMDAsIDUxLCA5MSwgMSwgMjAwLCA5LCA5MSwgMSwgMTk5LCAyNDUsIAorICAgIDkxLCAxLCAxOTksIDIxMSwgOTEsIDEsIDE5OSwgMTc1LCA5MSwgMSwgMjIwLCAyMzgsIDkxLCA0LCAxLCAyMDAsIDUxLCA5MSwgCisgICAgNCwgMSwgMjAwLCA5LCA5MSwgNCwgMSwgMTk5LCAyNDUsIDkxLCA0LCAxLCAxOTksIDIxMSwgOTEsIDQsIDEsIDE5OSwgMTc1LCAKKyAgICA5MSwgNCwgMSwgMjIwLCAyMzgsIDIwLCAyMSwgMjMzLCAzMywgMjAsIDIxLCA3MiwgMjAsIDIxLCAyNTIsIDEwMiwgMjAsIAorICAgIDIxLCA3MCwgMjAsIDIxLCAyMjgsIDE1MSwgMjAsIDIxLCA3NCwgMjAsIDIxLCAyMTcsIDYzLCAyMCwgMjEsIDIwMCwgMTIyLCAKKyAgICAyMTcsIDYzLCAyMCwgMjEsIDg5LCAyMzgsIDI1NSwgMjAsIDIxLCA4OSwgNzAsIDIwLCAyMSwgNjIsIDIwLCAyMSwgMjUyLCAKKyAgICAxMzgsIDIwLCAyMSwgMjAxLCA2NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDY0LCAyMCwgMjEsIDIwMSwgMzEsIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjAxLCAzMSwgMjAsIDIxLCAyMDEsIDIwLCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMjAsIDIwLCAyMSwgMjAxLCAKKyAgICAwLCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgMCwgMjAsIDIxLCAyMDAsIDI0NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDAsIDI0NCwgCisgICAgMjAsIDIxLCAyMjAsIDExOSwgMjAwLCAyNDQsIDIwLCAyMSwgMjAxLCAxMTQsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAxMTQsIAorICAgIDIwLCAyMSwgMjAxLCAxMTMsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAxMTMsIDIwLCAyMSwgMjIwLCAxMTksIDIwMSwgMTEzLCAKKyAgICAyMCwgMjEsIDI1MSwgMTc2LCAyMCwgMjEsIDIwMCwgMTIyLCAyMDEsIDE0NywgMjAsIDIxLCAyMzUsIDEyMywgMjA4LCA3NiwgCisgICAgMjAsIDIxLCA0NywgMTY5LCAyMCwgMjEsIDQ3LCAyMzUsIDczLCAyMCwgMjEsIDQ3LCAyNDgsIDkzLCAxNjcsIDIxMywgMjYsIAorICAgIDIwLCAyMSwgNDcsIDIwNSwgMTU4LCAxNjcsIDIxMywgMjYsIDIwLCAyMSwgNDcsIDUxLCAxNjcsIDIxMywgMjYsIDIwLCAyMSwgCisgICAgNDcsIDIxMywgMjYsIDIwLCAyMSwgNDcsIDUzLCAxNjksIDIwLCAyMSwgNDcsIDUzLCAyMDksIDI1MCwgODMsIDIwOCwgMzQsIAorICAgIDIwLCAyMSwgNDcsIDEwMSwgMjQwLCAxODIsIDIwLCAyMSwgNDcsIDIwOSwgMjUwLCAyMzMsIDE3NywgOTcsIDIwLCAyMSwgCisgICAgNDcsIDIxNSwgMTEzLCAyMCwgMjEsIDQ3LCAxMjcsIDIwNywgMTcsIDIwLCAyMSwgMjM4LCAxNzksIDIwLCAyMSwgMjI4LCAKKyAgICAxMTcsIDIwLCAyMSwgMjE3LCA3OCwgMjAsIDIxLCAyNTEsIDg1LCAyMCwgMjEsIDIxNiwgNzMsIDIwLCAyMSwgMjE2LCAyMDgsIAorICAgIDIwLCAyMSwgMjE1LCAyMDQsIDIwLCAyMSwgMjE1LCAxNjYsIDIwLCAyMSwgMjE1LCAxMDYsIDIwLCAyMSwgMjE1LCA4MSwgCisgICAgMjAsIDIxLCAyMDAsIDEyMiwgMjE1LCA4MSwgMjAsIDIxLCA4OSwgMjM0LCAxMjAsIDIwLCAyMSwgODksIDIzNCwgNzUsIDIwLCAKKyAgICAyMSwgMTcyLCAyMCwgMjEsIDIxNiwgMjEwLCAyMCwgMjEsIDIxNCwgMTgzLCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTgzLCAKKyAgICAyMCwgMjEsIDIxNCwgMTgxLCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTgxLCAyMCwgMjEsIDIxNCwgMTgwLCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDIxNCwgMTgwLCAyMCwgMjEsIDIxNCwgMTc4LCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTc4LCAyMCwgMjEsIAorICAgIDIxNCwgMTc3LCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTc3LCAyMCwgMjEsIDIxNCwgMTg1LCAyMCwgMjEsIDIwMSwgNDYsIAorICAgIDIxNCwgMTg1LCAyMCwgMjEsIDIxNCwgMTg0LCAyMCwgMjEsIDIwMSwgNDYsIDIxNCwgMTg0LCAyMCwgMjEsIDIwMCwgMTIyLCAKKyAgICAyMTQsIDE4NCwgMjAsIDIxLCAyMTYsIDIyNiwgMjAsIDIxLCAyMDEsIDQ2LCAyMTYsIDIyNiwgMjAsIDIxLCA4OSwgMjM0LCAKKyAgICAyNDcsIDIwLCAyMSwgMjA2LCAyMDEsIDIwLCAyMSwgMjA3LCAzMCwgMjAsIDIxLCAyMDYsIDE1LCAyMCwgMjEsIDIwNSwgCisgICAgMjU1LCAyMCwgMjEsIDEzOCwgMjAsIDIxLCAyMDUsIDE2MSwgMjAsIDIxLCAyMDAsIDEyMiwgMjA1LCAxNjEsIDIwLCAyMSwgCisgICAgODksIDI0MSwgMTYxLCAyMCwgMjEsIDg5LCAyNDEsIDc2LCAyMCwgMjEsIDIwNywgMzYsIDIwLCAyMSwgMjA3LCAzMiwgMjAsIAorICAgIDIxLCAyMDQsIDE2OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDE2OCwgMjAsIDIxLCAyMDQsIDE0NywgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDQsIDE0NywgMjAsIDIxLCAyMDQsIDE0NiwgMjAsIDIxLCAyMDEsIDQ2LCAyMDQsIDE0NiwgMjAsIDIxLCAxMDUsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMTA1LCAyMCwgMjEsIDIwNCwgMTM3LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTM3LCAyMCwgCisgICAgMjEsIDIwNCwgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTcwLCAyMCwgMjEsIDIwNCwgMTY5LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwNCwgMTY5LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDQsIDE2OSwgMjAsIDIxLCAyMDcsIDgzLCAyMCwgMjEsIDIwNCwgCisgICAgMjQ4LCAyMCwgMjEsIDIwNCwgMjMyLCAyMCwgMjEsIDIwNCwgMjMwLCAyMCwgMjEsIDIwNCwgMjUzLCAyMCwgMjEsIDIyNywgCisgICAgOCwgMjAsIDIxLCAyMjcsIDEwMCwgMjAsIDIxLCAyMjYsIDE2MywgMjAsIDIxLCAyMjYsIDE1MCwgMjAsIDIxLCAyMjYsIDg4LCAKKyAgICAyMCwgMjEsIDIyNiwgNjgsIDIwLCAyMSwgMjAwLCAxMjIsIDIyNiwgNjgsIDIwLCAyMSwgMTYxLCAyMCwgMjEsIDIyNywgCisgICAgMTA1LCAyMCwgMjEsIDIyNSwgMjI0LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjI0LCAyMCwgMjEsIDIyNSwgMjIyLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIyNSwgMjIyLCAyMCwgMjEsIDIyNSwgMjIxLCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjIxLCAyMCwgCisgICAgMjEsIDIyNSwgMjE5LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjE5LCAyMCwgMjEsIDIyNSwgMjE4LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyNSwgMjE4LCAyMCwgMjEsIDIyNSwgMjI5LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjI5LCAyMCwgMjEsIDIyNSwgCisgICAgMjI4LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMjI4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMjUsIDIyOCwgMjAsIDIxLCAyMjcsIAorICAgIDExOCwgMjAsIDIxLCAyMjUsIDIzMCwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCAyNTQsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgCisgICAgMTUxLCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIDgyLCAyMCwgMjEsIDIwOCwgMjUzLCAyMjcsIDg0LCAyMCwgMjEsIDI0NywgCisgICAgNzYsIDIwLCAyMSwgMjQ3LCAxODgsIDIwLCAyMSwgMjQ2LCAxNzMsIDIwLCAyMSwgMjQ2LCAxNjMsIDIwLCAyMSwgMjQ2LCAKKyAgICA5MSwgMjAsIDIxLCAyNDMsIDMwLCAyMCwgMjEsIDIwMCwgMTIyLCAyNDMsIDMwLCAyMCwgMjEsIDI0NywgMTkwLCAyMCwgMjEsIAorICAgIDI0NywgMTg5LCAyMCwgMjEsIDI0MiwgMTc0LCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTc0LCAyMCwgMjEsIDI0MiwgMTcyLCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTcyLCAyMCwgMjEsIDI0MiwgMTcxLCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTcxLCAKKyAgICAyMCwgMjEsIDI0MiwgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTcwLCAyMCwgMjEsIDI0MiwgMTY5LCAyMCwgMjEsIAorICAgIDIwMSwgNDYsIDI0MiwgMTY5LCAyMCwgMjEsIDI0MiwgMTc2LCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTc2LCAyMCwgMjEsIAorICAgIDI0MiwgMTc1LCAyMCwgMjEsIDIwMSwgNDYsIDI0MiwgMTc1LCAyMCwgMjEsIDIyMCwgMTE5LCAyNDIsIDE3NSwgMjAsIDIxLCAKKyAgICAyNDcsIDIyMywgMjAsIDIxLCAyMTEsIDIzMiwgMjA2LCAxMjQsIDIwLCAyMSwgMjIyLCA3NiwgMjAsIDIxLCAyMjIsIDIzMiwgCisgICAgMjAsIDIxLCAyMjEsIDIxMSwgMjAsIDIxLCAyMjEsIDE4MSwgMjAsIDIxLCAyMjEsIDEzNiwgMjAsIDIxLCAyMjEsIDg3LCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMjEsIDg3LCAyMCwgMjEsIDE3OCwgMjAsIDIxLCAyMjIsIDIzMywgMjAsIDIxLCAyMjAsIAorICAgIDIyOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIyOSwgMjAsIDIxLCAyMjAsIDIyNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIAorICAgIDIyNywgMjAsIDIxLCAyMjAsIDIyNiwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIyNiwgMjAsIDIxLCAyMjAsIDIyNSwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMjAsIDIyNSwgMjAsIDIxLCAyMjAsIDIyNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIyNCwgMjAsIAorICAgIDIxLCAyMjAsIDIzMSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjAsIDIzMSwgMjAsIDIxLCAyMjAsIDIzMCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjAsIDIzMCwgMjAsIDIxLCAyMjAsIDExOSwgMjIwLCAyMzAsIDIwLCAyMSwgMjIzLCAyNDMsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjIzLCAyNDMsIDIwLCAyMSwgMjIxLCAyMTUsIDIwLCAyMSwgMjUwLCAxNTMsIDIyMywgMjQzLCAyMCwgMjEsIDIxMSwgCisgICAgMjMyLCAyMjMsIDI0MywgMjAsIDIxLCAyMjAsIDM0LCAyMCwgMjEsIDIyMCwgMTU2LCAyMCwgMjEsIDIxOSwgMTUwLCAyMCwgCisgICAgMjEsIDIxOSwgMTI1LCAyMCwgMjEsIDIxOCwgMjQxLCAyMCwgMjEsIDIxOCwgMjI5LCAyMCwgMjEsIDIwMCwgMTIyLCAyMTgsIAorICAgIDIyOSwgMjAsIDIxLCAxODgsIDIwLCAyMSwgMjIwLCAxNTcsIDIwLCAyMSwgMjE4LCA2NywgMjAsIDIxLCAyMDEsIDQ2LCAKKyAgICAyMTgsIDY3LCAyMCwgMjEsIDIxOCwgNjksIDIwLCAyMSwgMjAxLCA0NiwgMjE4LCA2OSwgMjAsIDIxLCAyMTgsIDY4LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIxOCwgNjgsIDIwLCAyMSwgMjIwLCAxMTksIDIxOCwgNjgsIDIwLCAyMSwgMjIwLCAyMTQsIDIwLCAKKyAgICAyMSwgODksIDIxOSwgMjU1LCAyMCwgMjEsIDIxOSwgMTU1LCAyMCwgMjEsIDIyNSwgNDAsIDIwLCAyMSwgMjI1LCAxNzQsIAorICAgIDIwLCAyMSwgMjI0LCAyMTAsIDIwLCAyMSwgMjI0LCAxOTIsIDIwLCAyMSwgMjI0LCAxMTAsIDIwLCAyMSwgMjI0LCA3OCwgCisgICAgMjAsIDIxLCAyMDAsIDEyMiwgMjI0LCA3OCwgMjAsIDIxLCAxOTQsIDIwLCAyMSwgMjI1LCAxNzUsIDIwLCAyMSwgMjI0LCA4LCAKKyAgICAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgOCwgMjAsIDIxLCAyMjQsIDcsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA3LCAyMCwgMjEsIAorICAgIDIyNCwgNiwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDYsIDIwLCAyMSwgMjI0LCA1LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNSwgCisgICAgMjAsIDIxLCAyMjQsIDQsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA0LCAyMCwgMjEsIDIyNCwgMTAsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjI0LCAxMCwgMjAsIDIxLCAyMjQsIDksIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA5LCAyMCwgMjEsIDE1NiwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAxNTYsIDIwLCAyMSwgMTc5LCAxNTYsIDIwLCAyMSwgMjExLCAyMDIsIDIwLCAyMSwgMjEyLCA1OSwgCisgICAgMjAsIDIxLCAyMDksIDE4MiwgMjAsIDIxLCAyMDksIDE2MSwgMjAsIDIxLCAyMDksIDI5LCAyMCwgMjEsIDIwOSwgMTAsIDIwLCAKKyAgICAyMSwgMjAwLCAxMjIsIDIwOSwgMTAsIDIwLCAyMSwgMjEyLCA2NCwgMjAsIDIxLCAyMTIsIDYxLCAyMCwgMjEsIDIwNywgCisgICAgMTgyLCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTgyLCAyMCwgMjEsIDIwNywgMTc2LCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgCisgICAgMTc2LCAyMCwgMjEsIDIwNywgMTc1LCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTc1LCAyMCwgMjEsIDIwNywgMTcxLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIwNywgMTcxLCAyMCwgMjEsIDIwNywgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTcwLCAyMCwgCisgICAgMjEsIDIwNywgMTg2LCAyMCwgMjEsIDIwMSwgNDYsIDIwNywgMTg2LCAyMCwgMjEsIDIwNywgMTg1LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwNywgMTg1LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDcsIDE4NSwgMjAsIDIxLCAyMTIsIDEyMiwgMjAsIDIxLCAyNTAsIAorICAgIDE1MywgMjEyLCAxMjIsIDIwLCAyMSwgMjA3LCAxODcsIDIwLCAyMSwgMjQ4LCAxNDEsIDIxMiwgMTIyLCAyMCwgMjEsIDIyMSwgCisgICAgODAsIDIwOSwgODgsIDIwLCAyMSwgMjIwLCAxMTksIDIwOSwgNzksIDIwLCAyMSwgMjIwLCAxMTksIDIxMiwgMTIwLCAyMCwgCisgICAgMjEsIDIyMCwgMTE5LCAyMDgsIDE5NSwgMjAsIDIxLCAyMjAsIDExOSwgMjA4LCAyNywgMjAsIDIxLCAyMjAsIDExOSwgMjA5LCAKKyAgICA3OCwgMjAsIDIxLCAyMjAsIDExOSwgMjExLCAyMDUsIDIwLCAyMSwgMjEwLCA2NSwgMjAsIDIxLCAyMTAsIDMzLCAyMCwgMjEsIAorICAgIDIxMCwgMjgsIDIwLCAyMSwgMjEwLCA4LCAyMCwgMjEsIDIxMCwgMiwgMjAsIDIxLCAyMTAsIDExNCwgMjAsIDIxLCAyMTAsIAorICAgIDEwOSwgMjAsIDIxLCAyMDksIDE5NywgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5NywgMjAsIDIxLCAyMDksIDE5NiwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMDksIDE5NiwgMjAsIDIxLCAyMDksIDE5NSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5NSwgMjAsIAorICAgIDIxLCAyMDksIDE5NCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5NCwgMjAsIDIxLCAyMDksIDE5MywgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMDksIDE5MywgMjAsIDIxLCAyMDksIDIwMCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDIwMCwgMjAsIDIxLCAyMDksIAorICAgIDE5OSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDksIDE5OSwgMjAsIDIxLCAyMTAsIDExNiwgMjAsIDIxLCAyMDAsIDUxLCAyMCwgCisgICAgMjEsIDIwMCwgMTA3LCAyMCwgMjEsIDIwMCwgOSwgMjAsIDIxLCAyMDAsIDAsIDIwLCAyMSwgMTk5LCAyNDUsIDIwLCAyMSwgCisgICAgMTk5LCAyMzAsIDIwLCAyMSwgMjAwLCAxMjIsIDE5OSwgMjMwLCAyMCwgMjEsIDE4MywgMjAsIDIxLCAyMDAsIDEwOSwgMjAsIAorICAgIDIxLCAxOTksIDE3MiwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE3MiwgMjAsIDIxLCAxOTksIDE3MSwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAxOTksIDE3MSwgMjAsIDIxLCAxOTksIDE3MCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE3MCwgMjAsIDIxLCAxOTksIAorICAgIDE2OSwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE2OSwgMjAsIDIxLCAxOTksIDE2OCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIAorICAgIDE2OCwgMjAsIDIxLCAxOTksIDE3NCwgMjAsIDIxLCAyMDEsIDQ2LCAxOTksIDE3NCwgMjAsIDIxLCAxOTksIDE3MywgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAxOTksIDE3MywgMjAsIDIxLCAyMjAsIDExOSwgMTk5LCAxNzMsIDIwLCAyMSwgMjAwLCAxMjMsIDIwLCAKKyAgICAyMSwgMjQ4LCAxODYsIDIwMCwgMTIzLCAyMCwgMjEsIDIwMSwgNDYsIDIwMCwgMTIzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMDAsIAorICAgIDksIDIwLCAyMSwgMjEzLCAxOTAsIDIwLCAyMSwgMjE0LCAzMiwgMjEzLCAxOTAsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCA0MCwgCisgICAgMjAsIDIxLCAyMTMsIDI0NywgMjAsIDIxLCAyMTMsIDg4LCAyMCwgMjEsIDIxMywgMzMsIDIwLCAyMSwgMjEzLCAxLCAyMCwgCisgICAgMjEsIDIxMiwgMjM4LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgMTEwLCAyMCwgMjEsIDIxMywgMjUyLCAyMCwgMjEsIDIxMywgCisgICAgMjQ4LCAyMCwgMjEsIDIwMSwgNDYsIDE5NCwgMjAsIDIxLCAyMTIsIDEzOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTIsIDEzOSwgCisgICAgMjAsIDIxLCAxNDYsIDIwLCAyMSwgMjAxLCA0NiwgMTQ2LCAyMCwgMjEsIDE3OSwgMTQ2LCAyMCwgMjEsIDIzNywgMTQ3LCAKKyAgICAyMCwgMjEsIDIzNywgMTkyLCAyMCwgMjEsIDIzNywgMTEyLCAyMCwgMjEsIDIzNywgOTgsIDIwLCAyMSwgMjM3LCAxMywgMjAsIAorICAgIDIxLCAyMzcsIDIsIDIwLCAyMSwgMjM3LCAxOTUsIDIwLCAyMSwgMjM3LCAxOTQsIDIwLCAyMSwgMjM2LCAxNjYsIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjM2LCAxNjYsIDIwLCAyMSwgMjM4LCA1LCAyMCwgMjEsIDIwNiwgMTA2LCAyMCwgMjEsIDIyMCwgMjEyLCAKKyAgICAyMDYsIDEwNiwgMjAsIDIxLCAyMDYsIDg0LCAyMCwgMjEsIDIyMCwgMjEyLCAyMDYsIDg0LCAyMCwgMjEsIDIwNiwgNzgsIAorICAgIDIwLCAyMSwgMjIwLCAyMTIsIDIwNiwgNzgsIDIwLCAyMSwgMjA2LCA2MSwgMjAsIDIxLCAyMDYsIDU2LCAyMCwgMjEsIDIwNiwgCisgICAgMTIyLCAyMCwgMjEsIDIwNiwgMTIxLCAyMCwgMjEsIDIwNiwgMjUsIDIwLCAyMSwgMjAxLCA0NiwgMjA2LCAyNSwgMjAsIDIxLCAKKyAgICAyMDYsIDEyNCwgMjAsIDIxLCAyMDQsIDIzOSwgMjAsIDIxLCAyMDQsIDIzNywgMjAsIDIxLCAyMDQsIDIzNiwgMjAsIDIxLCAKKyAgICAyMDQsIDI0MSwgMjAsIDIxLCAyMDQsIDI0MiwgMjAsIDIxLCAyMDQsIDEzMSwgMjAsIDIxLCAyMDQsIDEzMCwgMjAsIDIxLCAKKyAgICAyMDQsIDEyOSwgMjAsIDIxLCAyMDQsIDEzMywgMjAsIDIxLCAyMTgsIDg4LCAyMzQsIDEzOSwgMjAsIDIxLCAyMTgsIDg4LCAKKyAgICAyMzQsIDc1LCAyMCwgMjEsIDIxOCwgODgsIDIzNCwgNTQsIDIwLCAyMSwgMjE4LCA4OCwgMjMzLCAyMDcsIDIwLCAyMSwgCisgICAgMjE4LCA4OCwgMjMzLCAxODgsIDIwLCAyMSwgMjE4LCA4OCwgMTQ0LCAyMCwgMjEsIDIxOCwgODgsIDIzNCwgMjMzLCAyMCwgCisgICAgMjEsIDIxOCwgODgsIDIzNCwgMjQ3LCAyMCwgMjEsIDIxOCwgODcsIDIzNCwgMjQ3LCAyMCwgMjEsIDIzNCwgNDEsIDIwLCAKKyAgICAyMSwgMjE0LCAxNTUsIDIwLCAyMSwgMjE0LCAxMjEsIDIwLCAyMSwgMjE0LCAxMTUsIDIwLCAyMSwgMjE0LCAxMDksIDIwLCAKKyAgICAyMSwgMjE0LCAxMDQsIDIwLCAyMSwgMjE0LCAxNTksIDIwLCAyMSwgMjE0LCAxNTgsIDIwLCAyMSwgMjE0LCAxNjcsIDIwLCAKKyAgICAyMSwgMjA1LCAxOTksIDIwLCAyMSwgMjA1LCAxOTcsIDIwLCAyMSwgMjA1LCAxOTYsIDIwLCAyMSwgMjA1LCAyMDAsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjEzLCAxOTAsIDIwLCAyMSwgMjAxLCA0NiwgMjEzLCA4OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDEsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjEzLCAyNTIsIDIwLCAyMSwgMjE5LCAyNTEsIDIwLCAyMSwgMjE5LCAyMDEsIDIwLCAyMSwgCisgICAgMjE5LCAxOTcsIDIwLCAyMSwgMjE5LCAxNzgsIDIwLCAyMSwgMjE5LCAxNzMsIDIwLCAyMSwgMjE5LCAyNTMsIDIwLCAyMSwgCisgICAgMjE5LCAyNTIsIDIwLCAyMSwgMjE5LCAyNTUsIDIwLCAyMSwgMjE5LCAxNCwgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCA2NSwgCisgICAgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCAzMywgMjAsIDIxLCAyMTEsIDIzMiwgMjEwLCA4LCAyMCwgMjEsIDIxMSwgMjMyLCAKKyAgICAyMTAsIDExNCwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAxMDYsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgODQsIDIwLCAyMSwgCisgICAgMjAwLCAyNDIsIDIwNiwgNjEsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMTIyLCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIAorICAgIDEyNCwgMjAsIDIxLCAyMjQsIDIxNywgMjAsIDIxLCAyMjQsIDIxNiwgMjAsIDIxLCAyMjQsIDIxNSwgMjAsIDIxLCAyMjQsIAorICAgIDIxNCwgMjAsIDIxLCAyMjQsIDIyMywgMjAsIDIxLCAyMjQsIDIyMiwgMjAsIDIxLCAyMjQsIDIyNCwgMjAsIDIxLCAyMDYsIAorICAgIDEyMywgMjA2LCAxMDYsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgODQsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgNzgsIDIwLCAKKyAgICAyMSwgMjA2LCAxMjMsIDIwNiwgNjEsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgNTYsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgCisgICAgMTIyLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDEyMSwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAxMjQsIDIwLCAyMSwgMjUxLCAKKyAgICAxNjIsIDI1MCwgMTAzLCAyMCwgMjEsIDI0OCwgMTQxLCA3MiwgMjAsIDIxLCAyNDgsIDE0MSwgNzAsIDIwLCAyMSwgMjQ4LCAKKyAgICAxNDEsIDc0LCAyMCwgMjEsIDI0OCwgMTQxLCA2MiwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCA2NCwgMjAsIDIxLCAyNDgsIAorICAgIDE0MSwgMjAxLCAzMSwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCAwLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDExNCwgMjAsIAorICAgIDIxLCAyNDgsIDE0MSwgMjIwLCAzNCwgMjAsIDIxLCAyNDgsIDE0MSwgMjE5LCAxNTAsIDIwLCAyMSwgMjQ4LCAxNDEsIDIxOCwgCisgICAgMjQxLCAyMCwgMjEsIDI0OCwgMTQxLCAxODgsIDIwLCAyMSwgMjQ4LCAxNDEsIDIyNywgOCwgMjAsIDIxLCAyNDgsIDE0MSwgCisgICAgMjI2LCAxNjMsIDIwLCAyMSwgMjQ4LCAxNDEsIDIyNiwgODgsIDIwLCAyMSwgMjQ4LCAxNDEsIDE2MSwgMjAsIDIxLCAyMTEsIAorICAgIDIzMiwgMjM0LCAxMzksIDIwLCAyMSwgMjExLCAyMzIsIDIzNCwgNzUsIDIwLCAyMSwgMjExLCAyMzIsIDIzMywgMjA3LCAyMCwgCisgICAgMjEsIDIxMSwgMjMyLCAxNDQsIDIwLCAyMSwgODksIDIzNSwgMTY3LCAyMCwgMjEsIDg5LCAyMzUsIDE3MSwgMjAsIDIxLCAKKyAgICA4OSwgMjM1LCAxODUsIDIwLCAyMSwgODksIDIzNSwgMTg0LCAyMCwgMjEsIDg5LCAyMzUsIDE3MywgMjAsIDIxLCA4OSwgCisgICAgMjM1LCAxOTksIDIwLCAyMSwgODksIDIxMiwgMTc1LCAyMCwgMjEsIDg5LCAyMTMsIDEsIDIwLCAyMSwgODksIDIxMywgMTkwLCAKKyAgICAyMCwgMjEsIDg5LCAyMTMsIDE2NywgMjAsIDIxLCA4OSwgMjEzLCA4OCwgMjAsIDIxLCA4OSwgMjEzLCAyNTIsIDIwLCAyMSwgCisgICAgODksIDIwMCwgMjE2LCAyMCwgMjEsIDg5LCAyMDEsIDAsIDIwLCAyMSwgODksIDIwMSwgNjQsIDIwLCAyMSwgODksIDIwMSwgCisgICAgNTcsIDIwLCAyMSwgODksIDIwMSwgMzEsIDIwLCAyMSwgODksIDIwMSwgMTE0LCAyMCwgMjEsIDg5LCAyMzMsIDYxLCAyMCwgCisgICAgMjEsIDg5LCAyMzMsIDYyLCAyMCwgMjEsIDg5LCAyMzMsIDY1LCAyMCwgMjEsIDg5LCAyMzMsIDY0LCAyMCwgMjEsIDg5LCAKKyAgICAyMzMsIDYzLCAyMCwgMjEsIDg5LCAyMzMsIDY4LCAyMCwgMjEsIDg5LCAyMDYsIDM1LCAyMCwgMjEsIDg5LCAyMDYsIDYxLCAKKyAgICAyMCwgMjEsIDg5LCAyMDYsIDEwNiwgMjAsIDIxLCA4OSwgMjA2LCAxMDQsIDIwLCAyMSwgODksIDIwNiwgODQsIDIwLCAyMSwgCisgICAgODksIDIwNiwgMTIyLCAyMCwgMjEsIDg5LCAyMDQsIDIyMCwgMjAsIDIxLCA4OSwgMjA0LCAyMzAsIDIwLCAyMSwgODksIAorICAgIDIwNCwgMjQ4LCAyMCwgMjEsIDg5LCAyMDQsIDI0NywgMjAsIDIxLCA4OSwgMjA0LCAyMzIsIDIwLCAyMSwgODksIDIwNCwgCisgICAgMjUzLCAyMCwgMjEsIDg5LCAyMTQsIDIyNCwgMjAsIDIxLCA4OSwgMjE1LCAxMDYsIDIwLCAyMSwgODksIDIxNiwgNzMsIDIwLCAKKyAgICAyMSwgODksIDIxNiwgNjEsIDIwLCAyMSwgODksIDIxNSwgMjA0LCAyMCwgMjEsIDg5LCAxNzIsIDIwLCAyMSwgODksIDIxNiwgCisgICAgMjI2LCAyMCwgMjEsIDg5LCAyMzUsIDUwLCAyMCwgMjEsIDg5LCAyMzUsIDExNiwgMjAsIDIxLCA4OSwgMjM2LCAxNSwgMjAsIAorICAgIDIxLCA4OSwgMjM2LCA3LCAyMCwgMjEsIDg5LCAyMzUsIDE2MSwgMjAsIDIxLCA4OSwgMjM2LCA4OSwgMjAsIDIxLCA4OSwgCisgICAgMjI2LCAxNzIsIDIwLCAyMSwgODksIDIyNiwgMTc4LCAyMCwgMjEsIDg5LCAyMjYsIDE5MiwgMjAsIDIxLCA4OSwgMjI2LCAKKyAgICAxOTEsIDIwLCAyMSwgODksIDIyNiwgMTg1LCAyMCwgMjEsIDg5LCAyMjYsIDIwNywgMjAsIDIxLCA4OSwgMjI2LCAxMDQsIAorICAgIDIwLCAyMSwgODksIDIyNiwgMTA1LCAyMCwgMjEsIDg5LCAyMjYsIDEwOCwgMjAsIDIxLCA4OSwgMjI2LCAxMDcsIDIwLCAyMSwgCisgICAgODksIDIyNiwgMTA2LCAyMCwgMjEsIDg5LCAyMjYsIDEwOSwgMjAsIDIxLCA4OSwgMjI2LCAxMTAsIDIwLCAyMSwgODksIAorICAgIDIxOCwgMTMzLCAyMCwgMjEsIDg5LCAyMTgsIDI0MSwgMjAsIDIxLCA4OSwgMjIwLCAzNCwgMjAsIDIxLCA4OSwgMjIwLCAyOSwgCisgICAgMjAsIDIxLCA4OSwgMjE5LCAxNTAsIDIwLCAyMSwgODksIDE4OCwgMjAsIDIxLCA4OSwgMjIxLCA0MSwgMjAsIDIxLCA4OSwgCisgICAgMjIxLCAxMzYsIDIwLCAyMSwgODksIDIyMiwgNzYsIDIwLCAyMSwgODksIDIyMiwgNjQsIDIwLCAyMSwgODksIDIyMSwgMjExLCAKKyAgICAyMCwgMjEsIDg5LCAxNzgsIDIwLCAyMSwgODksIDE5OSwgMjExLCAyMCwgMjEsIDg5LCAxOTksIDI0NSwgMjAsIDIxLCA4OSwgCisgICAgMjAwLCA1MSwgMjAsIDIxLCA4OSwgMjAwLCA0OCwgMjAsIDIxLCA4OSwgMjAwLCA5LCAyMCwgMjEsIDg5LCAxODMsIDIwLCAKKyAgICAyMSwgODksIDIyNywgMTQ3LCAyMCwgMjEsIDIxMSwgMjMyLCAyMjcsIDE0NywgMjAsIDIxLCA4OSwgMjI3LCAxNjYsIDIwLCAKKyAgICAyMSwgODksIDIyNywgMjI3LCAyMCwgMjEsIDg5LCAyMjcsIDIyNSwgMjAsIDIxLCA4OSwgMjI3LCAyMDcsIDIwLCAyMSwgCisgICAgMjExLCAyMzIsIDIyNywgMjA3LCAyMCwgMjEsIDg5LCAyMjcsIDI0OCwgMjAsIDIxLCA4OSwgMjI3LCAxNzksIDIwLCAyMSwgCisgICAgODksIDIyNywgMTgzLCAyMCwgMjEsIDg5LCAyMjcsIDE5MywgMjAsIDIxLCA4OSwgMjI3LCAxOTIsIDIwLCAyMSwgODksIAorICAgIDIyNywgMTkxLCAyMCwgMjEsIDg5LCAyMjcsIDE5NCwgMjAsIDIxLCA4OSwgMjI0LCA0MiwgMjAsIDIxLCA4OSwgMjI0LCAKKyAgICAxMTAsIDIwLCAyMSwgODksIDIyNSwgNDAsIDIwLCAyMSwgODksIDIyNSwgMzIsIDIwLCAyMSwgODksIDIyNCwgMjEwLCAyMCwgCisgICAgMjEsIDg5LCAxOTQsIDIwLCAyMSwgODksIDI0MCwgMjE1LCAyMCwgMjEsIDg5LCAyNDAsIDIxNiwgMjAsIDIxLCA4OSwgMjQwLCAKKyAgICAyMjEsIDIwLCAyMSwgODksIDI0MCwgMjIwLCAyMCwgMjEsIDg5LCAyNDAsIDIxNywgMjAsIDIxLCA4OSwgMjQwLCAyMjIsIAorICAgIDIwLCAyMSwgODksIDIyNCwgMjEzLCAyMCwgMjEsIDg5LCAyMjQsIDIxNSwgMjAsIDIxLCA4OSwgMjI0LCAyMTksIDIwLCAyMSwgCisgICAgODksIDIyNCwgMjE4LCAyMCwgMjEsIDg5LCAyMjQsIDIxNywgMjAsIDIxLCA4OSwgMjI0LCAyMjMsIDIwLCAyMSwgODksIAorICAgIDIwNSwgMTk0LCAyMCwgMjEsIDg5LCAyMDUsIDE5NiwgMjAsIDIxLCA4OSwgMjA1LCAxOTksIDIwLCAyMSwgODksIDIwNSwgCisgICAgMTk4LCAyMCwgMjEsIDg5LCAyMDUsIDE5NywgMjAsIDIxLCA4OSwgMjA1LCAyMDAsIDIwLCAyMSwgODksIDIwNSwgMTg5LCAKKyAgICAyMCwgMjEsIDg5LCAyMDUsIDE5MCwgMjAsIDIxLCA4OSwgMjA1LCAyMDIsIDIwLCAyMSwgODksIDIwNSwgMjAxLCAyMCwgMjEsIAorICAgIDg5LCAyMDUsIDE5MSwgMjAsIDIxLCA4OSwgMjA1LCAyMDMsIDIwLCAyMSwgODksIDE5OSwgMywgMjAsIDIxLCA4OSwgMTk5LCAKKyAgICAxNCwgMjAsIDIxLCA4OSwgMTk5LCA4OSwgMjAsIDIxLCA4OSwgMTk5LCA4NywgMjAsIDIxLCA4OSwgMTk5LCAzNiwgMjAsIAorICAgIDIxLCA4OSwgMTk5LCAxMTQsIDIwLCAyMSwgODksIDE5OSwgMTU3LCAyMCwgMjEsIDg5LCA4MiwgMTk5LCAxNTcsIDIwLCAyMSwgCisgICAgODksIDIzOSwgODAsIDIwLCAyMSwgODksIDIzOSwgODEsIDIwLCAyMSwgODksIDIzOSwgOTAsIDIwLCAyMSwgODksIDIzOSwgCisgICAgODksIDIwLCAyMSwgODksIDIzOSwgODQsIDIwLCAyMSwgODksIDIzOSwgOTMsIDIwLCAyMSwgODksIDIwOCwgMjQsIDIwLCAKKyAgICAyMSwgODksIDIwOSwgMjksIDIwLCAyMSwgODksIDIxMSwgMjAyLCAyMCwgMjEsIDg5LCAyMTEsIDE5MCwgMjAsIDIxLCA4OSwgCisgICAgMjA5LCAxODIsIDIwLCAyMSwgODksIDIxMiwgNjQsIDIwLCAyMSwgODksIDIwOSwgMjIwLCAyMCwgMjEsIDg5LCAyMTAsIDgsIAorICAgIDIwLCAyMSwgODksIDIxMCwgNjUsIDIwLCAyMSwgODksIDIxMCwgNjMsIDIwLCAyMSwgODksIDIxMCwgMzMsIDIwLCAyMSwgCisgICAgODksIDIxMCwgMTE0LCAyMCwgMjEsIDg5LCAyMTAsIDExNiwgMjAsIDIxLCA4OSwgMjA1LCA1LCAyMCwgMjEsIDg5LCAyMDUsIAorICAgIDksIDIwLCAyMSwgODksIDIwNSwgMjYsIDIwLCAyMSwgODksIDIwNSwgMjUsIDIwLCAyMSwgODksIDIwNSwgMTEsIDIwLCAyMSwgCisgICAgODksIDIwNSwgMzIsIDIwLCAyMSwgODksIDI0NiwgMTkyLCAyMCwgMjEsIDg5LCAyNDYsIDIxMCwgMjAsIDIxLCA4OSwgMjQ3LCAKKyAgICA4LCAyMCwgMjEsIDg5LCAyNDcsIDQsIDIwLCAyMSwgODksIDI0NiwgMjM2LCAyMCwgMjEsIDg5LCAyNDcsIDM3LCAyMCwgMjEsIAorICAgIDg5LCAyMDQsIDIyMywgMjAsIDIxLCA4OSwgMjA0LCAyMjQsIDIwLCAyMSwgODksIDIwNCwgMjI3LCAyMCwgMjEsIDg5LCAKKyAgICAyMDQsIDIyNiwgMjAsIDIxLCA4OSwgMjA0LCAyMjUsIDIwLCAyMSwgODksIDIwNCwgMjI4LCAyMCwgMjEsIDI0NiwgMjM3LCAKKyAgICA1NCwgMjAsIDIxLCAyMzYsIDE4MywgMjA4LCA3NiwgMjAsIDIxLCAyMTQsIDE1MSwgMjAsIDIxLCAyMTksIDI0OSwgMjAsIAorICAgIDIxLCAyMTksIDExLCAyMCwgMjEsIDIxOSwgMTAsIDIwLCAyMSwgMjE5LCA5LCAyMCwgMjEsIDIxOSwgOCwgMjAsIDIxLCAKKyAgICAyMTksIDEzLCAyMCwgMjEsIDIxOSwgMTIsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjMsIDIwLCAyMSwgMjAwLCAyNDIsIAorICAgIDIwNiwgMjIsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjEsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjAsIDIwLCAyMSwgCisgICAgMjAwLCAyNDIsIDIwNiwgMTksIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjYsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgMjUsIAorICAgIDIwLCAyMSwgMjAwLCAyNDIsIDQ3LCAyMDYsIDEyNCwgMjAsIDIxLCAyNDgsIDE0MSwgMjAxLCAxNDcsIDIxNywgMTEyLCAKKyAgICAyMDgsIDI0NSwgODEsIDIxNywgMTEyLCAxLCAyNDgsIDIzNCwgMjE3LCAxMTIsIDEsIDIyNCwgMjgsIDIxNywgMTEyLCAxLCAKKyAgICAyMzcsIDE0NCwgMjE3LCAxMTIsIDEsIDIxMiwgNDQsIDIxNywgMTEyLCAxLCAyMTksIDEwNiwgMjE3LCAxMTIsIDEsIDIwNCwgCisgICAgNDMsIDIxNywgMTEyLCAxLCAyNDIsIDMxLCAyMTcsIDExMiwgMSwgMjA1LCAyMjcsIDIxNywgMTEyLCAxLCAyNDYsIDgyLCAKKyAgICAyMTcsIDExMiwgMSwgMjQ3LCA2MywgMjE3LCAxMTIsIDEsIDIyMSwgMjgsIDIxNywgMTEyLCAxLCAyMzUsIDk2LCAyMTcsIAorICAgIDExMiwgMSwgMjE5LCAyMzksIDIxNywgMTEyLCAxLCAyMDgsIDY5LCAyMTcsIDExMiwgMSwgMjEyLCAxNjgsIDIxNywgMTEyLCAKKyAgICAxLCAyNTEsIDE3MywgMjE3LCAxMTIsIDEsIDIxNywgNjcsIDIxNywgMTEyLCAxLCAyMDMsIDIxNCwgMjE3LCAxMTIsIDEsIAorICAgIDIzOSwgMjUsIDIxNywgMTEyLCAxLCAyMjgsIDQ0LCAyMTcsIDExMiwgMSwgMjM5LCAyNiwgMjE3LCAxMTIsIDEsIDIxNywgCisgICAgMzMsIDIxNywgMTEyLCAxLCAyMDQsIDIxLCAyMTcsIDExMiwgMSwgMjI4LCAxNTcsIDIxNywgMTEyLCAxLCAyMzksIDIzLCAKKyAgICAyMTcsIDExMiwgMSwgMjE2LCA1MSwgMjE3LCAxMTIsIDIzNywgMTQzLCA4MSwgMjE3LCAxMTIsIDIxMywgMTA1LCAyMzcsIAorICAgIDE0MywgODEsIDIxMiwgMTU3LCAxLCAyMzcsIDEzMywgMjM3LCAxMjQsIDIzNywgMTQ4LCAyMzgsIDUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMDMsIDE2OCwgMjEyLCAxNTcsIDEsIDIwMywgMTk5LCAyMDMsIDIxNSwgNjYsIDIxMiwgMTU3LCAxLCAxOTksIDIxNCwgCisgICAgMjEyLCAxNTcsIDEsIDIwMCwgMTIzLCAyMTIsIDE1NywgMSwgMjAxLCAxNDcsIDIxMiwgMTU3LCAxLCAyMDYsIDI4LCAyMDYsIAorICAgIDI3LCAyMDYsIDU0LCAyMTIsIDE1NywgMSwgMjM4LCA3NCwgMjEyLCAxNTcsIDEsIDI1MSwgNTIsIDYyLCAyMTIsIDE1NywgMSwgCisgICAgMjE3LCAxNiwgNzQsIDIxMiwgMTU3LCAxLCAyNTEsIDI1NSwgNjIsIDIxMiwgMTU3LCAxLCAyNTEsIDIwNSwgMjEyLCAxNTcsIAorICAgIDEsIDIyNCwgODUsIDc0LCAyMTIsIDE1NywgMSwgMjA5LCAyNDMsIDc0LCAyMTIsIDE1NywgMSwgNzQsIDIxMiwgMTU3LCAxLCAKKyAgICAyMTcsIDEyMSwgMjEyLCAxNTcsIDEsIDIxNywgNzgsIDIxMiwgMTU3LCAxLCAyMTMsIDIyNywgMjEzLCAyNDAsIDIxMywgCisgICAgMTUyLCAxNDYsIDIxMiwgMTU3LCAxLCAyMjcsIDIzLCAyMTIsIDE1NywgMSwgMjQ3LCA1OSwgMjEyLCAxNTcsIDEsIDIyNywgCisgICAgMjQsIDIyNywgMTE4LCAyMTIsIDE1NywgMSwgMjM2LCAxNTYsIDIxMiwgMTU3LCAxLCAyMzgsIDE2NSwgMjEyLCAxNTcsIDEsIAorICAgIDIzNiwgMTAsIDIzNCwgMjUzLCAyMzYsIDE1NiwgMjEyLCAxNTcsIDEsIDIzNiwgNDksIDIxMiwgMTU3LCAxLCAyMDAsIDIwOCwgCisgICAgMjAwLCAxOTksIDIwMSwgMTQ3LCAyMTIsIDE1NywgMSwgMjM0LCAyMjUsIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjM0LCAKKyAgICAyMjksIDIzNCwgMjQ3LCAyMTIsIDE1NywgMSwgMjI0LCA4NywgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMDksIDI0NiwgCisgICAgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMjAsIDExNCwgMjE4LCA1MSwgMjIwLCAxMTUsIDIyMCwgMjE0LCAyMTIsIDE1NywgCisgICAgMSwgMjA5LCAyNDQsIDIyMCwgMjE0LCAyMTIsIDE1NywgMSwgMjM5LCAxNzcsIDIxMiwgMTU3LCAxLCAyMjgsIDIzLCAyMjgsIAorICAgIDI3LCAyMjgsIDE0LCA3MCwgMjEyLCAxNTcsIDEsIDcyLCAyMTIsIDE1NywgMSwgMjI3LCAyMTgsIDIyNywgMjUxLCAyMTIsIAorICAgIDE1NywgMSwgMjM1LCAyNDksIDIxMiwgMTU3LCAxLCAyMjQsIDg4LCAyNTEsIDIyMSwgMjEyLCAxNTcsIDEsIDIwOSwgMjQ4LCAKKyAgICA2MiwgMjEyLCAxNTcsIDEsIDIyOCwgNiwgMjM4LCAxMzgsIDIxMiwgMTU3LCAxLCAyMTYsIDcsIDIxNiwgMzIsIDIxNiwgCisgICAgMjI2LCAyMTIsIDE1NywgMSwgMjUxLCAxMzUsIDIzOCwgMTM2LCAyMTIsIDE1NywgMSwgMjA4LCAyNTAsIDIxMiwgMTIyLCAKKyAgICAyMTIsIDE1NywgMSwgMjA5LCAxNjUsIDIyNCwgODQsIDIxMiwgMTIyLCAyMTIsIDE1NywgMSwgMjA5LCAyNDIsIDIxMiwgCisgICAgMTIyLCAyMTIsIDE1NywgMSwgMjQ3LCAyMjMsIDIxMiwgMTU3LCAxLCAxOTksIDE1NywgMjEyLCAxNTcsIDEsIDIwNSwgMjA4LCAKKyAgICAyMDUsIDIyMCwgMjA0LCAxMTUsIDIwNywgODMsIDIxMiwgMTU3LCAxLCAyMDksIDI0MSwgMjA3LCA4MywgMjEyLCAxNTcsIDEsIAorICAgIDI0MiwgMTUzLCAyMTIsIDE1NywgMSwgMjQ4LCAyMTMsIDI0OCwgMjE2LCAyNDgsIDE0NywgMjUwLCAxMDMsIDIxMiwgMTU3LCAKKyAgICAxLCAyMDksIDI0NywgMjUwLCAxMDMsIDIxMiwgMTU3LCAxLCAyMzksIDE3NiwgMjEyLCAxNTcsIDEsIDIxNywgNDcsIDIxMiwgCisgICAgMTU3LCAxLCAyMzgsIDIzNSwgMjM4LCAyNDIsIDcyLCAyMTIsIDE1NywgMSwgMjIyLCAxNzEsIDIyMiwgMTgxLCAyMjMsIAorICAgIDI0MywgMjEyLCAxNTcsIDEsIDIyNCwgODYsIDIyMywgMjQzLCAyMTIsIDE1NywgMSwgMjA5LCAyNDUsIDIyMywgMjQzLCAKKyAgICAyMTIsIDE1NywgMSwgMjI1LCA1NSwgMjI1LCAxNTQsIDIyNCwgOTUsIDE1NiwgMjEyLCAxNTcsIDEsIDIzOSwgMTc4LCAyMTIsIAorICAgIDE1NywgMSwgMjI4LCA5MCwgMjEyLCAxNTcsIDEsIDIyOCwgOTEsIDIxMiwgMTU3LCAxLCAyNDIsIDQ1LCAyNDIsIDUxLCAKKyAgICAyNDIsIDE1MywgMjEyLCAxNTcsIDEsIDIxNywgOSwgMjM4LCA3MywgNzQsIDIxMiwgMTU3LCAxLCAyMzksIDIxLCAyMTIsIAorICAgIDE1NywgMSwgMjI4LCA0MywgMjEyLCAxNTcsIDEsIDI0MiwgMTczLCAyMTIsIDE1NywgMSwgMjQ3LCAxNzMsIDIxMiwgMTU3LCAKKyAgICAxLCAyNDcsIDc1LCAyMTIsIDE1NywgMSwgMjA4LCAxMTQsIDIxMiwgMTU3LCAxLCAyMjQsIDgzLCAyMTIsIDE1NywgMSwgCisgICAgMjA5LCAyNDAsIDIxMiwgMTU3LCAxLCAyMzIsIDIzMCwgMjEyLCAxNTcsIDEsIDIxNCwgMTY3LCAyMTIsIDE1NywgMSwgMjAwLCAKKyAgICAxOTUsIDIxMiwgMTU3LCAyMDksIDEzOSwgMjE0LCAyMTEsIDIxMiwgMTU3LCAyMjEsIDIxLCAyMTQsIDIxMSwgMjEyLCAxNTcsIAorICAgIDI0MiwgMjM1LCAyMTQsIDIxMSwgMjEyLCAxNTcsIDI1MCwgMjE2LCA5OSwgMjEyLCAxNTcsIDIwNCwgMTcyLCA5OSwgMjEyLCAKKyAgICAxNTcsIDI0OCwgMjMyLCA5OSwgMjEyLCAxNTcsIDEsIDIyNywgMTE4LCAyMTIsIDE1NywgMSwgMjEwLCAxMTYsIDIxMiwgCisgICAgMTU3LCAxLCAyMTcsIDYzLCAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgMTE0LCAyMTcsIDE1LCAyMTIsIDE1NywgMSwgCisgICAgMjM2LCAyMTIsIDI0NywgMTE0LCAyMjgsIDI2LCAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgMTE0LCAyMzgsIDI0MSwgCisgICAgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIDExNCwgMjUxLCAyNTQsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAKKyAgICAxMTQsIDI1MSwgMjA1LCAyMDcsIDEyLCAxLCA2MiwgMjA3LCAxMiwgMSwgNzAsIDIwNywgMTIsIDEsIDY2LCAyMDcsIDEyLCAKKyAgICAxLCAxNjEsIDIwNywgMTIsIDEsIDIzNiwgODksIDIwNywgMTIsIDEsIDIxOSwgMjUzLCAyMDcsIDEyLCAxLCAyMDcsIDM2LCAKKyAgICAyMDcsIDEyLCAxLCAyNDIsIDU4LCAyMDcsIDEyLCAxLCAxODgsIDIwNywgMTIsIDEsIDE3MiwgMjA3LCAxMiwgMSwgMjQ5LCAKKyAgICAxMzYsIDIwNywgMTIsIDEsIDE3OCwgMjA3LCAxMiwgMSwgMTgzLCAyMDcsIDEyLCAxLCAxOTQsIDIwNywgMTIsIDEsIDIwMSwgCisgICAgMTE0LCAyMDcsIDEyLCAxLCAyMTIsIDY0LCAyMDcsIDEyLCAxLCAxNDQsIDIwNywgMTIsIDIyLCAyLCA3MCwgMjA3LCAxMiwgCisgICAgMjIsIDIsIDY2LCAyMDcsIDEyLCAyLCAyMDIsIDIwOCwgMjM0LCAxNzAsIDEsIDYyLCAyMzQsIDE3MCwgMSwgNzAsIDIzNCwgCisgICAgMTcwLCAxLCA2NiwgMjM0LCAxNzAsIDEsIDE2MSwgMjM0LCAxNzAsIDEsIDIzNiwgODksIDIzNCwgMTcwLCAxLCAyMTksIAorICAgIDI1MywgMjM0LCAxNzAsIDEsIDIwNywgMzYsIDIzNCwgMTcwLCAxLCAyNDIsIDU4LCAyMzQsIDE3MCwgMSwgMTg4LCAyMzQsIAorICAgIDE3MCwgMSwgMTcyLCAyMzQsIDE3MCwgMSwgMjQ5LCAxMzYsIDIzNCwgMTcwLCAxLCAxNzgsIDIzNCwgMTcwLCAxLCAxODMsIAorICAgIDIzNCwgMTcwLCAxLCAyMTMsIDI1MiwgMjM0LCAxNzAsIDEsIDE5NCwgMjM0LCAxNzAsIDEsIDIwMSwgMTE0LCAyMzQsIDE3MCwgCisgICAgMSwgMjEyLCA2NCwgMjM0LCAxNzAsIDEsIDE0NCwgMjM0LCAxNzAsIDIyLCAyLCA3MCwgMjM0LCAxNzAsIDIyLCAyLCA2NiwgCisgICAgMjM0LCAxNzAsIDIsIDIxNiwgMTY1LCAyMTUsIDIyMiwgMjA5LCAxMzksIDIxNCwgMjExLCAyMTUsIDIyMiwgNTMsIDIxNCwgCisgICAgMjExLCAyNDgsIDI4LCAxLCA2MiwgMjQ4LCAyOCwgMSwgNzAsIDI0OCwgMjgsIDEsIDY2LCAyNDgsIDI4LCAxLCAxNjEsIAorICAgIDI0OCwgMjgsIDEsIDIzNiwgODksIDI0OCwgMjgsIDEsIDIxOSwgMjUzLCAyNDgsIDI4LCAxLCAyMDcsIDM2LCAyNDgsIDI4LCAKKyAgICAxLCAyNDIsIDU4LCAyNDgsIDI4LCAxLCAxODgsIDI0OCwgMjgsIDEsIDE3MiwgMjQ4LCAyOCwgMSwgMjQ5LCAxMzYsIDI0OCwgCisgICAgMjgsIDEsIDE3OCwgMjQ4LCAyOCwgMSwgMTgzLCAyNDgsIDI4LCAxLCAyMTMsIDI1MiwgMjQ4LCAyOCwgMSwgMTk0LCAyNDgsIAorICAgIDI4LCAxLCAyMDEsIDExNCwgMjQ4LCAyOCwgMSwgMjEyLCA2NCwgMjQ4LCAyOCwgMSwgMTQ0LCAyNDgsIDI4LCAyMiwgMiwgCisgICAgNzAsIDI0OCwgMjgsIDIyLCAyLCA2NiwgMjA3LCAxMSwgMSwgNjIsIDIwNywgMTEsIDEsIDcwLCAyMDcsIDExLCAxLCA2NiwgCisgICAgMjA3LCAxMSwgMSwgMTYxLCAyMDcsIDExLCAxLCAyMzYsIDg5LCAyMDcsIDExLCAxLCAyMTksIDI1MywgMjA3LCAxMSwgMSwgCisgICAgMjA3LCAzNiwgMjA3LCAxMSwgMSwgMjQyLCA1OCwgMjA3LCAxMSwgMSwgMTg4LCAyMDcsIDExLCAxLCAxNzIsIDIwNywgMTEsIAorICAgIDEsIDI0OSwgMTM2LCAyMDcsIDExLCAxLCAxNzgsIDIwNywgMTEsIDEsIDE4MywgMjA3LCAxMSwgMSwgMTk0LCAyMDcsIDExLCAKKyAgICAxLCAyMDEsIDExNCwgMjA3LCAxMSwgMSwgMjEyLCA2NCwgMjA3LCAxMSwgMjIsIDIsIDcwLCAyMDcsIDExLCAyMiwgMiwgNjYsIAorICAgIDg2LCAxLCAxNjEsIDg2LCAxLCAyMjYsIDIwNywgODYsIDEsIDIyNiwgODgsIDg2LCAxLCAyMjYsIDE3OCwgODYsIDEsIDIxOSwgCisgICAgMTc4LCA4NiwgMSwgMjQ3LCAxOTAsIDg2LCAxLCAyNDcsIDM3LCA4NiwgMSwgMjQ2LCA5MSwgODYsIDEsIDI0NiwgMjEwLCAKKyAgICA4NiwgMSwgMjE4LCAyNiwgODYsIDEsIDI0MiwgNTgsIDg2LCAxLCAyMDQsIDI0MSwgODYsIDEsIDI0MCwgMjExLCA4NiwgMSwgCisgICAgMjA0LCAyMzYsIDg2LCAxLCAyMTgsIDI0NywgODYsIDEsIDIwNywgMzYsIDg2LCAxLCAyMDYsIDEyMiwgODYsIDEsIDEzOCwgCisgICAgODYsIDEsIDIwNiwgNjEsIDg2LCAxLCAyMTgsIDI0MSwgODYsIDEsIDI0OSwgMTM2LCA4NiwgMSwgMjE1LCAyNDUsIDg2LCAxLCAKKyAgICAyMTUsIDEwNiwgODYsIDEsIDIxNSwgMjE3LCA4NiwgMSwgMjIxLCAxMzYsIDg2LCAxLCAxOTksIDI0NSwgODYsIDEsIDIxMywgCisgICAgMSwgODYsIDEsIDIyNCwgMTEwLCA4NiwgMSwgMjAyLCAxOTMsIDg2LCAxLCAyMTAsIDExNCwgODYsIDEsIDIwOCwgMTM5LCAKKyAgICA4NiwgMSwgMjEyLCA2NCwgODYsIDEsIDE0NCwgODYsIDEsIDE5NCwgODYsIDEsIDIxNCwgMTU5LCA4NiwgMjI4LCAxMDQsIAorICAgIDIyLCAyMTQsIDE0NSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxNTgsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTIxLCA4NiwgCisgICAgMjI4LCAxMDQsIDIyLCAyMTQsIDExNSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCA5NywgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAKKyAgICA2NywgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCA1NSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCA1NCwgODYsIDIyOCwgMTA0LCAKKyAgICAyMiwgMjEyLCAxMzEsIDg2LCAyMjgsIDEwNCwgMjIsIDIxMiwgMTI0LCA4NiwgMjI4LCAxMDQsIDIyLCAyMjQsIDIsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIyMywgMjQ2LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDEzOSwgODYsIDIyOCwgMTA0LCAyMiwgCisgICAgMjE0LCAxNTEsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTA1LCAyMDQsIDEyOCwgMTAyLCA4NiwgMjI4LCAxMDQsIDIyLCAKKyAgICAyMTQsIDEwNSwgMjA0LCAxMjgsIDEwNSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxNDEsIDg2LCAyMiwgMjI4LCA4OCwgCisgICAgMjUxLCAxLCA4NiwgMjIsIDIyOCwgODgsIDI1MiwgMTM4LCA4NiwgMjIsIDIsIDI1MiwgMTM4LCA4NiwgMjIsIDIsIDcwLCAKKyAgICA4NiwgMjIsIDIsIDIyOCwgMTUxLCA4NiwgMjIsIDIsIDIwMCwgMTIzLCA4NiwgMjIsIDIsIDE5OSwgMTY3LCA4NiwgMjIsIDIsIAorICAgIDY2LCA4NiwgMjIsIDIsIDIwMywgMTgyLCA4NiwgMjIsIDIsIDIwNCwgNDYsIDg2LCAyMiwgMiwgMjE3LCAxMjEsIDg2LCAyMiwgCisgICAgMiwgMTgzLCA4NiwgMjIsIDIsIDIyOCwgMTc4LCA4NiwgMjIsIDIsIDcyLCA4NiwgMjIsIDIsIDI1MSwgMjIxLCA4NiwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCA4NiwgMjIsIDIsIDIxNywgNjMsIDg2LCAyMiwgMiwgMjUwLCAxMzksIDg2LCAyLCAyMTksIDEyMywgCisgICAgODYsIDIsIDIxMywgMTg4LCA4NiwgMiwgMTk5LCAxNzgsIDg2LCAyLCAyMjAsIDI0MSwgODYsIDIsIDIwNSwgODYsIDg2LCAyLCAKKyAgICAyNDksIDc5LCA4NiwgMiwgMjEyLCAyNTIsIDg2LCAyLCAyMDUsIDE4NCwgODYsIDIsIDIyNywgNzUsIDg2LCAyLCAyNTEsIAorICAgIDE3OCwgODYsIDIsIDIxMiwgMTQsIDIxMiwgNywgODYsIDIsIDIwMiwgMjA1LCA4NiwgMiwgMjQ2LCA4NSwgODYsIDIsIDI0OSwgCisgICAgNTEsIDg2LCAyLCAyMjYsIDE5OSwgODYsIDIsIDI0OSwgNzQsIDg2LCAyLCAyNDcsIDE2MSwgMjE1LCAxNjcsIDIyNSwgMjM1LCAKKyAgICA4NiwgMiwgMjI1LCA5LCAyMDUsIDE2MSwgODYsIDIsIDI0OCwgMjAyLCA4NiwgMiwgMjE1LCAyMTksIDIyMSwgMzgsIDg2LCAKKyAgICAyLCAyMjYsIDY2LCA4NiwgMjQyLCAxOTUsIDE2LCAyMTMsIDgwLCA4NiwgMiwgMjUwLCAxMjEsIDg2LCAyLCAyNTAsIDE0MiwgCisgICAgODYsIDE3LCAxOTksIDgxLCA4NiwgMTcsIDEwMiwgODYsIDE3LCAxMDUsIDg2LCAxNywgMTQ3LCA4NiwgMTcsIDE0OSwgODYsIAorICAgIDE3LCAxNjQsIDg2LCAxNywgMTg3LCA4NiwgMTcsIDIxMCwgMTM1LCA4NiwgMTcsIDE5MiwgODYsIDE3LCAyMTksIDExMywgCisgICAgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMDksIDEzLCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIyMSwgNSwgODYsIAorICAgIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDE2NiwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyNDgsIDIzNSwgODYsIAorICAgIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyNDgsIDgsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCA0MiwgODYsIDE2LCAKKyAgICAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDM2LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzQsIDg2LCAxNiwgCisgICAgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCA0MCwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDM4LCA5MiwgMjQ4LCAKKyAgICAxNjAsIDkyLCAyMzgsIDE5NSwgOTIsIDI0NiwgNzAsIDkyLCAyMzYsIDE4MywgMjA4LCA3NiwgOTIsIDI0NiwgNzksIDkyLCAKKyAgICAyMzYsIDIyOSwgMjQwLCAxODAsIDkyLCAyMDUsIDE4MywgMjA5LCAyMywgMjMzLCAzMywgOTIsIDIwOSwgMTgwLCA1LCAyNDgsIAorICAgIDg5LCAyMjIsIDE0NSwgOTIsIDIyMiwgMTc3LCAyNDYsIDcwLCA5MiwgMjIyLCAxNzcsIDIzNiwgMTgzLCAyMDgsIDc2LCA5MiwgCisgICAgMjE5LCAxMDQsIDkyLCAyMzYsIDIxMSwgNTgsIDIxMSwgMTc2LCAxMDIsIDkyLCAyMzYsIDIxMSwgNTgsIDIxMSwgMTc2LCAKKyAgICAxMDUsIDkyLCAyMzYsIDIxMSwgNTgsIDIxMSwgMTc2LCAxNDcsIDkyLCAyMiwgMjEwLCAxNTQsIDkyLCAxNywgMTk5LCA4MSwgCisgICAgOTIsIDE3LCAxMDIsIDkyLCAxNywgMTA1LCA5MiwgMTcsIDE0NywgOTIsIDE3LCAxNDksIDkyLCAxNywgMTY0LCA5MiwgMTcsIAorICAgIDE4NywgOTIsIDE3LCAyMTAsIDEzNSwgOTIsIDE3LCAxOTIsIDkyLCAxNywgMjE5LCAxMTMsIDkyLCAxLCA2MiwgOTIsIDEsIAorICAgIDcyLCA5MiwgMSwgNzAsIDkyLCAxLCA3NCwgOTIsIDEsIDY2LCA5MiwgMSwgMjE3LCAxMjEsIDkyLCAxLCAyMDQsIDMxLCA5MiwgCisgICAgMSwgMjM4LCAyNTUsIDkyLCAxLCAxODgsIDkyLCAxLCAyNTEsIDc2LCA5MiwgMSwgMjQ5LCAxMzYsIDkyLCAxLCAxNzIsIDkyLCAKKyAgICAxLCAyMTQsIDE1OSwgOTIsIDEsIDIzNiwgODksIDkyLCAxLCAxNzgsIDkyLCAxLCAxOTQsIDkyLCAxLCAyMTIsIDY0LCA5MiwgCisgICAgMSwgMjEwLCAxMTQsIDkyLCAxLCAyMDcsIDM2LCA5MiwgMSwgMjQyLCA1OCwgOTIsIDEsIDI0NywgMzcsIDkyLCAxLCAyMjcsIAorICAgIDI0OCwgOTIsIDEsIDE4MywgOTIsIDEsIDIxMywgMjUyLCA5MiwgMSwgMjAxLCAxMTQsIDkyLCAxLCAyMzcsIDE5NSwgOTIsIAorICAgIDEsIDE2MSwgOTIsIDEsIDIyNiwgMjA3LCA5MiwgMSwgMjA1LCAzMiwgOTIsIDEsIDE5OSwgMTE0LCA5MiwgMSwgMjM0LCAKKyAgICAyMzMsIDkyLCAxLCAxOTksIDcsIDkyLCAxLCAyMjQsIDIyMywgOTIsIDEsIDE5OSwgNjMsIDkyLCAxLCAyNDYsIDIzNiwgOTIsIAorICAgIDEsIDIwNSwgMTgzLCAxNjgsIDIyLCA1NCwgOTIsIDEsIDIwNSwgMTgzLCA3MiwgOTIsIDEsIDIwNSwgMTgzLCA3MCwgOTIsIAorICAgIDEsIDIwNSwgMTgzLCA3NCwgOTIsIDEsIDIwNSwgMTgzLCA2NiwgOTIsIDEsIDIwNSwgMTgzLCAyMTcsIDEyMSwgOTIsIDEsIAorICAgIDIwNSwgMTgzLCAyMDQsIDMxLCA5MiwgMSwgMjA1LCAxODMsIDI1MSwgNzYsIDkyLCAxLCAyMDUsIDE4MywgMjQ5LCAxMzYsIAorICAgIDkyLCAxLCAyMDUsIDE4MywgMTcyLCA5MiwgMSwgMjA1LCAxODMsIDIxNCwgMTU5LCA5MiwgMSwgMjA1LCAxODMsIDIzNiwgCisgICAgODksIDkyLCAxLCAyMDUsIDE4MywgMTc4LCA5MiwgMSwgMjA1LCAxODMsIDIwNywgMzYsIDkyLCAxLCAyMDUsIDE4MywgMjQyLCAKKyAgICA1OCwgOTIsIDEsIDIwNSwgMTgzLCAyNDcsIDM3LCA5MiwgMSwgMjA1LCAxODMsIDIyNywgMjQ4LCA5MiwgMSwgMjA1LCAxODMsIAorICAgIDIwNSwgMzIsIDkyLCAxLCAyMDUsIDE4MywgMTgzLCA5MiwgMSwgMjA1LCAxODMsIDIwMSwgMTE0LCA5MiwgMSwgMjA1LCAKKyAgICAxODMsIDE2MSwgOTIsIDEsIDIwNSwgMTgzLCAyMzYsIDg2LCA5MiwgMSwgMjA1LCAxODMsIDIzNCwgMjMzLCA5MiwgMSwgCisgICAgMjA1LCAxODMsIDIyNywgMjA2LCA5MiwgMSwgMjA1LCAxODMsIDIxOSwgMTQ4LCA5MiwgMSwgMjA1LCAxODMsIDIzOSwgOTMsIAorICAgIDkyLCAxLCAyMDksIDE4MCwgNzIsIDkyLCAxLCAyMDksIDE4MCwgNzAsIDkyLCAxLCAyMDksIDE4MCwgMjI4LCAzLCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDIwNCwgMzEsIDkyLCAxLCAyMDksIDE4MCwgNjYsIDkyLCAxLCAyMDksIDE4MCwgMjUxLCA3NiwgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAxNjEsIDkyLCAxLCAyMDksIDE4MCwgMjM2LCA4OSwgOTIsIDEsIDIwOSwgMTgwLCAxNDQsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMTcyLCA5MiwgMSwgMjA5LCAxODAsIDIxMCwgMTE0LCA5MiwgMSwgMjA5LCAxODAsIDIwNywgMzYsIDkyLCAKKyAgICAxLCAyMDksIDE4MCwgMjQyLCA1OCwgOTIsIDEsIDIwOSwgMTgwLCAyMjcsIDI0OCwgOTIsIDEsIDIwOSwgMTgwLCAyMzcsIAorICAgIDE5NSwgOTIsIDEsIDIwOSwgMTgwLCAyMzYsIDg2LCA5MiwgMSwgMjA5LCAxODAsIDIzNCwgMjMzLCA5MiwgMSwgMjA5LCAKKyAgICAxODAsIDIwNSwgMzIsIDkyLCAxLCAyMDksIDE4MCwgMTk5LCAxMTQsIDkyLCAxLCAyMDksIDE4MCwgMjEzLCAyNDgsIDkyLCAKKyAgICAxLCAyMDksIDE4MCwgMjQ3LCAzNywgOTIsIDEsIDIwOSwgMTgwLCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDcwLCA5MiwgCisgICAgMSwgMjIyLCAxNzcsIDE2MSwgOTIsIDEsIDIyMiwgMTc3LCAyMTMsIDI1MiwgOTIsIDEsIDIyMiwgMTc3LCAyMzcsIDE5NSwgCisgICAgOTIsIDEsIDIyMiwgMTc3LCAxOTksIDc3LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI1MSwgMzQsIDEwMiwgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDIsIDIwNCwgMTAyLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgMTksIDkyLCAKKyAgICAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCA0MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMjgsIDUwLCAyMDQsIAorICAgIDQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI0OSwgOTEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTI2LCAKKyAgICAyNDksIDkxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDYyLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDcwLCA5MiwgCisgICAgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE2MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMTksIDI1MywgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDcsIDE5MCwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDI1MywgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDI0MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDEsIDIyMCwgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyMTksIDIxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNywgMzYsIDkyLCAxLCAKKyAgICAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCA1OCwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNzIsIDkyLCAxLCAyNTEsIAorICAgIDEzNCwgMjM2LCA2OSwgMjE1LCAyNDUsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA4LCAxNzksIDkyLCAxLCAyNTEsIAorICAgIDEzNCwgMjM2LCA2OSwgMTk5LCA3NywgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDExNCwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAyNTEsIDE4NSwgOTIsIDEsIDIwNSwgMTgzLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA3LCAzNiwgOTIsIAorICAgIDEsIDIwNSwgMTgzLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTk5LCA3NywgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCAKKyAgICA2OSwgMjM1LCAxOTksIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjUzLCA5MiwgMSwgMjIyLCAKKyAgICAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDcsIDE5MCwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgCisgICAgMjI3LCAyMTUsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjUzLCA5MiwgMSwgMjIyLCAxNzcsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDEsIDIwNCwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA3LCAzNiwgCisgICAgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQxLCAxMDAsIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIAorICAgIDIzNiwgNjksIDIwOCwgMTc5LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDE2NywgOTIsIDEsIAorICAgIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMTk5LCA3NywgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgCisgICAgMTk5LCAxMTQsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTY3LCA2NiwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAxNjcsIDE4MywgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ4LCAyMDAsIDkyLCAxLCAyNTEsIDEzNCwgCisgICAgMjM2LCA2OSwgMjQyLCA0NiwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjI0LCAyMjMsIDIwLCAyMSwgCisgICAgMjE2LCAyMzAsIDIwLCAyMSwgMjUwLCAxMTIsIDIwLCAyMSwgMjUyLCA5MywgMjAsIDIxLCAyMDEsIDY3LCAyMCwgMjEsIAorICAgIDIxNSwgNDgsIDIwLCAyMSwgMjE2LCA4MiwgMjAsIDIxLCAyMTQsIDE3NiwgMjAsIDIxLCAyMDYsIDIxMCwgMjAsIDIxLCAKKyAgICAyMjcsIDE1LCAyMCwgMjEsIDIyNSwgMjI2LCAyMCwgMjEsIDIyMiwgMTE5LCAyMCwgMjEsIDIxOCwgMTk4LCAyMCwgMjEsIAorICAgIDIyMCwgMTA5LCAyMCwgMjEsIDIyNSwgNTAsIDIwLCAyMSwgMjA4LCAyNDgsIDIwLCAyMSwgMjExLCAyMzQsIDIwLCAyMSwgCisgICAgMjA5LCAyMjksIDIwLCAyMSwgMjEwLCA2OSwgMjAsIDIxLCAyMDksIDE5MiwgMjAsIDIxLCAxOTksIDIyMCwgMjAsIDIxLCAKKyAgICAyMDAsIDU3LCAyMCwgMjEsIDIxMywgMTk3LCAyMCwgMjEsIDIxOCwgNjYsIDIwLCAyMSwgMjE3LCAxMDAsIDIxOCwgNjYsIAorICAgIDIwLCAyMSwgMjE4LCA2NSwgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2NSwgMjAsIDIxLCAyMTgsIDY0LCAyMCwgMjEsIDIxNywgCisgICAgMTAwLCAyMTgsIDY0LCAyMCwgMjEsIDIxOCwgNjMsIDIwLCAyMSwgMjE3LCAxMDAsIDIxOCwgNjMsIDIwLCAyMSwgMjEyLCAKKyAgICAxMzYsIDIwLCAyMSwgMjEyLCAxMzUsIDIwLCAyMSwgMjEyLCAxMzQsIDIwLCAyMSwgMjEyLCAxMzMsIDIwLCAyMSwgMjEyLCAKKyAgICAxMzIsIDIwLCAyMSwgMjEyLCAxNDAsIDIwLCAyMSwgMjE3LCAxMDAsIDIxNiwgMjI2LCAyMCwgMjEsIDIxNywgMTAwLCAyMDcsIAorICAgIDgzLCAyMCwgMjEsIDIxNywgMTAwLCAyMjcsIDExOCwgMjAsIDIxLCAyMTcsIDEwMCwgMjQ3LCAyMjMsIDIwLCAyMSwgMjE3LCAKKyAgICAxMDAsIDIyMywgMjQzLCAyMCwgMjEsIDIxNywgMTAwLCAyMjAsIDIxNCwgMjAsIDIxLCAyMTcsIDEwMCwgMjEyLCAxMjIsIAorICAgIDIwLCAyMSwgMjE3LCAxMDAsIDIxMCwgMTE2LCAyMCwgMjEsIDIzOSwgMTIsIDIwMSwgMTQ3LCAyMCwgMjEsIDIwMSwgNDUsIAorICAgIDIwMSwgMTQ3LCAyMCwgMjEsIDQ3LCA0LCAyMTMsIDI2LCAyMCwgMjEsIDQ3LCAyMTMsIDIyMCwgMjQwLCAxODIsIDIwLCAyMSwgCisgICAgMjE0LCAzMiwgMjEyLCAxMzcsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA3OCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDE3NSwgCisgICAgMjAsIDIxLCAyMDYsIDI0LCAyMCwgMjEsIDIwNiwgMjYsIDIwLCAyMSwgMjA0LCAyMzMsIDIwLCAyMSwgMjA0LCAyMzUsIDIwLCAKKyAgICAyMSwgMjA0LCAyNDAsIDIwLCAyMSwgMjA1LCAxOTMsIDIwLCAyMSwgMjA1LCAxOTUsIDIwLCAyMSwgMjExLCAyMzIsIDIwOSwgCisgICAgMTk3LCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDIsIDIwLCAyMSwgMjExLCAyMzIsIDIzMywgMTg4LCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDUsIDIwLCAyMSwgODksIDI0MSwgMTM0LCAyMzYsIDcsIDIwLCAyMSwgODksIDIzNiwgODYsIDIwLCAyMSwgODksIAorICAgIDIzNSwgMTAsIDIwLCAyMSwgMjExLCAyMzIsIDIyNywgMTI4LCAyMCwgMjEsIDg5LCAyMjcsIDEyNiwgMjAsIDIxLCAyNDgsIAorICAgIDI1NSwgMjQxLCAxMzQsIDE1NiwgMjAsIDIxLCAyNDgsIDI1NSwgMjQxLCAxMzQsIDE0NiwgMjAsIDIxLCA4OSwgMjQxLCAKKyAgICAxMjksIDIxMiwgMTIyLCAyMjQsIDE4NiwgMjAyLCAxNzIsIDIyNCwgMjM2LCAyMjQsIDE4NiwgMSwgMTYxLCAyMjQsIDE4NiwgCisgICAgMSwgMjI2LCAyMDcsIDIyNCwgMTg2LCAxLCAyMzYsIDg5LCAyMjQsIDE4NiwgMSwgMjM1LCAxOTksIDIyNCwgMTg2LCAxLCAKKyAgICAyMTksIDI1MywgMjI0LCAxODYsIDEsIDI0NywgMTkwLCAyMjQsIDE4NiwgMSwgMjQ3LCAzNywgMjI0LCAxODYsIDEsIDIyNywgCisgICAgMjQ4LCAyMjQsIDE4NiwgMSwgMjI3LCAyMTUsIDIyNCwgMTg2LCAxLCAyMDAsIDc3LCAyMjQsIDE4NiwgMSwgMjA3LCAzNiwgCisgICAgMjI0LCAxODYsIDEsIDIwNiwgMTIyLCAyMjQsIDE4NiwgMSwgMjQyLCA1OCwgMjI0LCAxODYsIDEsIDI0MSwgMTAwLCAyMjQsIAorICAgIDE4NiwgMSwgMTg4LCAyMjQsIDE4NiwgMSwgMTcyLCAyMjQsIDE4NiwgMSwgMjE1LCAyNDUsIDIyNCwgMTg2LCAxLCAyNDksIAorICAgIDEzNiwgMjI0LCAxODYsIDEsIDI0OCwgMjAwLCAyMjQsIDE4NiwgMSwgMTc4LCAyMjQsIDE4NiwgMSwgMTgzLCAyMjQsIDE4NiwgCisgICAgMSwgMjEzLCAyNTIsIDIyNCwgMTg2LCAxLCAxOTQsIDIyNCwgMTg2LCAxLCAyMDEsIDExNCwgMjI0LCAxODYsIDEsIDIxMCwgCisgICAgMTE0LCAyMjQsIDE4NiwgMSwgMjA4LCAxNzksIDIyNCwgMTg2LCAxLCAyMTIsIDY0LCAyMjQsIDE4NiwgMSwgMTQ0LCAyMjQsIAorICAgIDE4NiwgMSwgMjM1LCAxLCAyMjQsIDE4NiwgMSwgMjA1LCAxMzIsIDIyNCwgMTg2LCAyMiwgMiwgNjIsIDIyNCwgMTg2LCAyMiwgCisgICAgMiwgNzAsIDIyNCwgMTg2LCAyMiwgMiwgNjYsIDIyNCwgMTg2LCAyMiwgMiwgMjM4LCAyNTUsIDIyNCwgMTg2LCAyMiwgMiwgCisgICAgMjUxLCAxNzYsIDIyNCwgMTg2LCAyMiwgMiwgMjE3LCA2MywgMjI0LCAxODYsIDIyLCAyLCAyNTAsIDEzOSwgMjI0LCAxODYsIAorICAgIDIyLCAyLCA3MiwgMjI0LCAxODYsIDIyLCAyLCA3NCwgMjI0LCAxODYsIDIwOCwgMTIsIDEsIDE4MywgMjI0LCAxODYsIDIwOCwgCisgICAgMTIsIDEsIDIxMywgMjUyLCAyMjQsIDE4NiwgMjA4LCAxMiwgMSwgMjAxLCAxMTQsIDIyNCwgMTg2LCA0LCAxLCAxNjEsIAorICAgIDIyNCwgMTg2LCA0LCAxLCAyMTksIDI1MywgMjI0LCAxODYsIDQsIDEsIDI1MSwgMzMsIDIyNCwgMTg2LCA0LCAxLCAyMDcsIAorICAgIDM2LCAyMjQsIDE4NiwgNCwgMSwgMTg4LCAyMjQsIDE4NiwgNCwgMSwgMTcyLCAyMjQsIDE4NiwgNCwgMSwgMTc4LCAyMjQsIAorICAgIDE4NiwgNCwgMSwgMjEzLCAyNTIsIDIyNCwgMTg2LCA0LCAxLCAxOTQsIDIyNCwgMTg2LCAyLCAyMjEsIDI2LCAyMjQsIDE4NiwgCisgICAgMiwgMjI2LCAyNDksIDIyNCwgMTg2LCAyLCAyMTIsIDYyLCAyMjQsIDE4NiwgMiwgMjI0LCA3OCwgMjI0LCAxODYsIDIzOCwgCisgICAgNDMsIDgxLCAyMjQsIDE4NiwgMjE0LCA3OSwgODEsIDIyNCwgMTg2LCAxNywgMTk5LCA4MSwgMjI0LCAxODYsIDE3LCAxMDIsIAorICAgIDIyNCwgMTg2LCAxNywgMTA1LCAyMjQsIDE4NiwgMTcsIDE0NywgMjI0LCAxODYsIDE3LCAxNDksIDIyNCwgMTg2LCAxNywgCisgICAgMTY0LCAyMjQsIDE4NiwgMTcsIDE4NywgMjI0LCAxODYsIDE3LCAyMTAsIDEzNSwgMjI0LCAxODYsIDE3LCAxOTIsIDIyNCwgCisgICAgMTg2LCAxNywgMjE5LCAxMTMsIDQ2LCAyMjUsIDQxLCAxLCAxNjEsIDQ2LCAyMjUsIDQxLCAxLCAyMDAsIDE4MSwgNDYsIAorICAgIDIyNSwgNDEsIDEsIDIxOSwgMjUzLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAzMiwgNDYsIDIyNSwgNDEsIDEsIDIxMiwgNjQsIAorICAgIDQ2LCAyMjUsIDQxLCAxLCAxODMsIDQ2LCAyMjUsIDQxLCAxLCAyMDcsIDM2LCA0NiwgMjI1LCA0MSwgMSwgMjA2LCAxMjIsIAorICAgIDQ2LCAyMjUsIDQxLCAxLCAxOTQsIDQ2LCAyMjUsIDQxLCAxLCAxNzIsIDQ2LCAyMjUsIDQxLCAxLCAyMTUsIDI0NSwgNDYsIAorICAgIDIyNSwgNDEsIDEsIDE3OCwgNDYsIDIyNSwgNDEsIDEsIDIzNywgMTk1LCA0NiwgMjI1LCA0MSwgMSwgMjAzLCA5MCwgNDYsIAorICAgIDIyNSwgNDEsIDEsIDE0NCwgNDYsIDIyNSwgNDEsIDEsIDIxNCwgMTU5LCA0NiwgMjI1LCA0MSwgMSwgMjI2LCAyMDcsIDQ2LCAKKyAgICAyMjUsIDQxLCAxLCAyMDUsIDIyLCA0NiwgMjI1LCA0MSwgMSwgMTg4LCA0NiwgMjI1LCA0MSwgMSwgNjIsIDQ2LCAyMjUsIAorICAgIDQxLCAxLCA3MCwgNDYsIDIyNSwgNDEsIDEsIDIzOCwgMjU1LCA0NiwgMjI1LCA0MSwgMSwgMjM4LCAyNDEsIDQ2LCAyMjUsIAorICAgIDQxLCAxLCA2NiwgNDYsIDIyNSwgNDEsIDEsIDIxNywgNjMsIDQ2LCAyMjUsIDQxLCAxLCA3NCwgNDYsIDIyNSwgNDEsIDEsIAorICAgIDIwNCwgMzEsIDQ2LCAyMjUsIDQxLCAxLCA3MiwgNDYsIDIyNSwgNDEsIDEsIDI1MCwgMTM3LCA0NiwgMjI1LCA0MSwgMSwgCisgICAgMjUxLCAxNzYsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE3MiwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTcxLCA0NiwgMjI1LCAKKyAgICA0MSwgMSwgMjA1LCAxNzAsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDE2OSwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTY4LCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIxNCwgMTU5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxNCwgMTU5LCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE2MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDAsIDE4MSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMTksIDI1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAxNjEsIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjAwLCAxODEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE5LCAKKyAgICAyNTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA1LCAzMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAKKyAgICAyMTIsIDY0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE4MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAKKyAgICAyMDUsIDMyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxMiwgNjQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMTgzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwNywgMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjA2LCAxMjIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTg4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDIwNywgMzYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjA2LCAxMjIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTg4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE3MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyMTUsIDI0NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNzgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMTcyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIxNSwgMjQ1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDE3OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMzcsIDE5NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyMDMsIDkwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE5NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAyMzcsIDE5NSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDMsIDkwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE5NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxNDQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyMiwgMjQyLCA1OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyNDksIDEzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxNDQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjQyLCA1OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAyNDksIDEzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMjUsIDIzMSwgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMSwgMTIyLCAyMDAsIDE0OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMjUsIDIzMSwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMSwgMTI4LCAyMDAsIDE0OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDgsIDIzLCAyMjAsIDgsIAorICAgIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwOCwgMjMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMiwgMjA5LCAyMzgsIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTIsIDEzOCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIyOCwgCisgICAgMTUxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNjYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDcyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjUxLCAKKyAgICAyMjEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA3NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIxNywgCisgICAgMTQ2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjA0LCAzMSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIAorICAgIDI1MCwgMTEyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjUyLCA5MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIAorICAgIDIsIDIwMywgMTc0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjE2LCAyMzAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDIyLCAyLCAyMTcsIDE0MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwNCwgMjcsIDIyMCwgOCwgNDYsIDIyNCwgCisgICAgMzYsIDIyLCAyLCAyMjgsIDMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMDMsIDE2OCwgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMSwgNDcsIDIxOSwgMjU1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjIwLCAyMTQsIDIyMCwgOCwgNDYsIAorICAgIDIyNCwgMzYsIDEsIDQ3LCAyMjMsIDI0MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIyNywgMTE4LCAyMjAsIDgsIAorICAgIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjQyLCAxNTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyNTAsIDEwMywgMjIwLCAKKyAgICA4LCA0NiwgMjI0LCAzNiwgMTUwLCAyMjIsIDE0OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTUwLCAyMjIsIDE0OCwgMjIwLCAKKyAgICA4LCA0NiwgMjI0LCAzNiwgMTcsIDE5OSwgODEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxMDIsIDIyMCwgOCwgNDYsIAorICAgIDIyNCwgMzYsIDE3LCAxMDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxNDcsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAKKyAgICAxNDksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxNjQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDE3LCAxODcsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDE3LCAyMTAsIDEzNSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE5MiwgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMTcsIDIxOSwgMTEzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxMDcsIDE3LCAxMDIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDIsIDIyNSwgMTYwLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyLCAyMjUsIDE1OSwgODYsIDE2LCAyMTYsIDkwLCA4NiwgMTYsIAorICAgIDIyMSwgNiwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDE2NywgMjI2LCA4NCwgODYsIDE2LCAyNDgsIDIzNiwgMjI2LCA4NCwgCisgICAgODYsIDE2LCAyNDgsIDksIDIyNiwgODQsIDg2LCAxNiwgMjE1LCA0MywgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDM3LCAyMjYsIAorICAgIDg0LCA4NiwgMTYsIDIxNSwgMzUsIDIyNiwgODQsIDg2LCAxNiwgMjE1LCA0MSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDM5LCAKKyAgICAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgNSwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDEsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAKKyAgICAwLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMywgMjI2LCA4NCwgODYsIDE2LCAyNDIsIDIsIDIyNiwgODQsIDg2LCAxNiwgCisgICAgMjQxLCAyNTUsIDIyNiwgODQsIDg2LCAxNiwgMjA0LCAxNzgsIDg2LCAxNiwgMjIxLCA2LCAyMTIsIDI1MCwgODYsIDE2LCAKKyAgICAyMTUsIDE2NywgMjEyLCAyNTAsIDg2LCAxNiwgMjQ4LCAyMzYsIDIxMiwgMjUwLCA4NiwgMTYsIDI0OCwgOSwgMjEyLCAyNTAsIAorICAgIDg2LCAxNiwgMjE1LCA0MywgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCAzNywgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCAzNSwgCisgICAgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCA0MSwgMjEyLCAyNTAsIDg2LCAxNiwgMjE1LCAzOSwgMjEyLCAyNTAsIDg2LCAxNiwgCisgICAgMjQyLCA1LCAyMTIsIDI1MCwgODYsIDE2LCAyNDIsIDEsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMCwgMjEyLCAyNTAsIDg2LCAKKyAgICAxNiwgMjQyLCAzLCAyMTIsIDI1MCwgODYsIDE2LCAyNDIsIDIsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MSwgMjU1LCAyMTIsIAorICAgIDI1MCwgMjQ4LCAyOSwgMSwgMTYxLCAyNDgsIDI5LCAxLCAyMzYsIDg5LCAyNDgsIDI5LCAxLCAyMTksIDI1MywgMjQ4LCAyOSwgCisgICAgMSwgMjE5LCAxOTYsIDI0OCwgMjksIDEsIDE3MiwgMjQ4LCAyOSwgMSwgMjQ5LCAxMzYsIDI0OCwgMjksIDEsIDE3OCwgMjQ4LCAKKyAgICAyOSwgMSwgMjIxLCA0NSwgMjQ4LCAyOSwgMSwgMjA3LCAzNiwgMjQ4LCAyOSwgMSwgMjQyLCA1OCwgMjQ4LCAyOSwgMSwgCisgICAgMTg4LCAyNDgsIDI5LCAxLCAyMTgsIDE5NiwgMjQ4LCAyOSwgMSwgMjQ3LCAxOTAsIDI0OCwgMjksIDEsIDIyNywgMjQ4LCAKKyAgICAyNDgsIDI5LCAxLCAyMTgsIDYwLCAyNDgsIDI5LCAxLCAyMTgsIDUyLCAyNDgsIDI5LCAxLCAxODMsIDI0OCwgMjksIDEsIAorICAgIDIxMywgMjUyLCAyNDgsIDI5LCAxLCAxOTQsIDI0OCwgMjksIDEsIDIwMywgOTAsIDI0OCwgMjksIDEsIDIxMiwgNjQsIDI0OCwgCisgICAgMjksIDEsIDYyLCAyNDgsIDI5LCAxLCAxNDQsIDI0OCwgMjksIDIyLCAyLCA3MCwgMjQ4LCAyOSwgMjIsIDIsIDY2LCAyNDgsIAorICAgIDI5LCAyMiwgMiwgNzIsIDI0OCwgMjksIDIyLCAyLCA3NCwgMjQ4LCAyOSwgMjIsIDIsIDI1MSwgMjIxLCAyNDgsIDI5LCAKKyAgICAyMTYsIDE3OCwgMjQ4LCAyOSwgMjM4LCAxNzEsIDc2LCAyMTEsIDE5MiwgNDYsIDEwNywgMSwgMTIyLCAxNjEsIDQ2LCAxMDcsIAorICAgIDEsIDEyMiwgMjI2LCAyMDcsIDQ2LCAxMDcsIDEsIDEyMiwgMjI1LCAyMTUsIDQ2LCAxMDcsIDEsIDEyOCwgMTYxLCA0NiwgCisgICAgMTA3LCAxLCAxMjgsIDIyNSwgMjE1LCA0NiwgMTA3LCAxLCAxMjgsIDIyNiwgMjA3LCA0NiwgMTA3LCAxLCAyMTksIDI1MywgCisgICAgNDYsIDEwNywgMSwgMTIyLCAyNDcsIDE5MCwgNDYsIDEwNywgMSwgMTIyLCAyNDcsIDM3LCA0NiwgMTA3LCAxLCAxMjgsIAorICAgIDI0NywgMTkwLCA0NiwgMTA3LCAxLCAxMjgsIDIxMiwgNjQsIDQ2LCAxMDcsIDEsIDEyOCwgMjQ3LCAzNywgNDYsIDEwNywgMSwgCisgICAgMjE4LCA2MCwgNDYsIDEwNywgMSwgMjEzLCAyMDMsIDQ2LCAxMDcsIDEsIDEyMiwgMjEzLCAyMDEsIDQ2LCAxMDcsIDEsIAorICAgIDI0MiwgNTgsIDQ2LCAxMDcsIDEsIDEyOCwgMjEzLCAyMDEsIDQ2LCAxMDcsIDEsIDIxMywgMjEyLCA0NiwgMTA3LCAxLCAKKyAgICAxMjIsIDIwNywgMzYsIDQ2LCAxMDcsIDEsIDEyMiwgMjA2LCAxMjIsIDQ2LCAxMDcsIDEsIDEyOCwgMjA3LCAzNiwgNDYsIAorICAgIDEwNywgMSwgMTI4LCAyMDYsIDEyMiwgNDYsIDEwNywgMSwgMTg4LCA0NiwgMTA3LCAxLCAyNDksIDEzNiwgNDYsIDEwNywgMSwgCisgICAgMTIyLCAxNzIsIDQ2LCAxMDcsIDEsIDEyMiwgMjE1LCAyNDUsIDQ2LCAxMDcsIDEsIDEyMiwgMjM3LCAxOTUsIDQ2LCAxMDcsIAorICAgIDEsIDEyOCwgMTcyLCA0NiwgMTA3LCAxLCAxMjgsIDIzNywgMTk1LCA0NiwgMTA3LCAxLCAxMjgsIDIxNSwgMjQ1LCA0NiwgCisgICAgMTA3LCAxLCAxNzgsIDQ2LCAxMDcsIDEsIDEyOCwgMTgzLCA0NiwgMTA3LCAxLCAxMjIsIDE4MywgNDYsIDEwNywgMSwgMjEzLCAKKyAgICAyNTIsIDQ2LCAxMDcsIDEsIDIxMiwgMTcwLCA0NiwgMTA3LCAxLCAxOTQsIDQ2LCAxMDcsIDEsIDIyNCwgMzUsIDQ2LCAxMDcsIAorICAgIDEsIDIwMSwgMTE0LCA0NiwgMTA3LCAxLCAxMjIsIDIxMCwgMTE0LCA0NiwgMTA3LCAxLCAxMjIsIDIwOCwgMTc5LCA0NiwgCisgICAgMTA3LCAxLCAxMjIsIDIxMiwgNjQsIDQ2LCAxMDcsIDEsIDEyMiwgMTQ0LCA0NiwgMTA3LCAxLCAyMjQsIDEzOCwgNDYsIAorICAgIDEwNywgMSwgNjIsIDQ2LCAxMDcsIDEsIDEyOCwgMTQ0LCA0NiwgMTA3LCAxLCA3MCwgNDYsIDEwNywgMSwgMjI4LCAxNTEsIAorICAgIDQ2LCAxMDcsIDEsIDY2LCA0NiwgMTA3LCAxLCAyMDMsIDE4MiwgNDYsIDEwNywgMSwgMjM4LCAyNTUsIDQ2LCAxMDcsIDEsIAorICAgIDIxNywgNjMsIDQ2LCAxMDcsIDEsIDIyNSwgMTYwLCA0NiwgMTA3LCAxLCAyMzUsIDY5LCAyMTIsIDY0LCA0NiwgMTA3LCAKKyAgICAxMTEsIDIsIDE3OSwgMjEzLCAyNTIsIDQ2LCAxMDcsIDExMSwgMiwgMTc5LCAxOTQsIDQ2LCAxMDcsIDExMSwgMiwgMjI1LCAKKyAgICAxNzYsIDIwNiwgMjQyLCAyMjUsIDE0OSwgNDYsIDEwNywgMiwgMjIyLCAxOTksIDIyNywgNjUsIDIyNSwgMTQ5LCA0NiwgCisgICAgMTA3LCAxMTEsIDIsIDQ3LCAyMTksIDI1MywgNDYsIDEwNywgMTExLCAyLCAxMjgsIDE3MiwgNDYsIDEwNywgMTExLCAyLCAKKyAgICAxMjIsIDIxMywgMjAyLCAyMTcsIDM0LCAxMjgsIDE3MiwgNDYsIDEwNywgMTExLCAyLCAxNzgsIDQ2LCAxMDcsIDExMSwgMiwgCisgICAgMjQ5LCAxMzYsIDQ2LCAxMDcsIDExMSwgMiwgMjEyLCA2NCwgNDYsIDEwNywgMiwgMjEyLCAzOCwgNDYsIDEwNywgMjIsIDIsIAorICAgIDYyLCA0NiwgMTA3LCAyMiwgMiwgMjIyLCAxOTksIDIxMSwgMjUxLCA0NiwgMTA3LCAyMiwgMiwgMjUyLCAxMzgsIDQ2LCAKKyAgICAxMDcsIDIyLCAyLCAyMDYsIDI0OCwgMjUyLCAxMzgsIDQ2LCAxMDcsIDIyLCAyLCA3MCwgNDYsIDEwNywgMjIsIDIsIDIyOCwgCisgICAgMTUxLCA0NiwgMTA3LCAyMiwgMiwgMjA0LCAzMSwgNDYsIDEwNywgMjIsIDIsIDIwMywgMTgxLCA0NiwgMTA3LCAyMiwgMiwgCisgICAgNjYsIDQ2LCAxMDcsIDIyLCAyLCAyMDMsIDE4MiwgNDYsIDEwNywgMjIsIDIsIDc0LCA0NiwgMTA3LCAyMiwgMiwgMjE3LCAKKyAgICAxNDcsIDU3LCA0NiwgMTA3LCAyMiwgMiwgMjE2LCAyMzAsIDQ2LCAxMDcsIDIyLCAyLCA3MiwgNDYsIDEwNywgMjIsIDIsIAorICAgIDI1MSwgMjIxLCA0NiwgMTA3LCAyMiwgMiwgMjE3LCA2MywgNDYsIDEwNywgMjIsIDIsIDI1MSwgMTc2LCA0NiwgMTA3LCAyMiwgCisgICAgMiwgMTA3LCAyNTEsIDE3NiwgNDYsIDEwNywgMjIsIDIsIDIxNywgMTQ3LCA1NiwgNDYsIDEwNywgMiwgMjIyLCAxOTksIAorICAgIDIyNywgNjQsIDQ2LCAxMDcsIDIsIDIwNSwgMTczLCA0NiwgMTA3LCAyLCAyMDUsIDE3MiwgNDYsIDEwNywgMiwgMjI2LCAKKyAgICAxNjgsIDIwNSwgMTcxLCA0NiwgMTA3LCAyLCAyMjYsIDE2OCwgMjA1LCAxNzAsIDQ2LCAxMDcsIDIsIDIyNiwgMTY4LCAyMDUsIAorICAgIDE2OSwgNDYsIDEwNywgMiwgMjEzLCAyNTMsIDIzNCwgMjMyLCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjEyLCAyMywgNDYsIAorICAgIDEwNywgMiwgMjI2LCAxNjcsIDIyNywgNDYsIDQ2LCAxMDcsIDM4LCAyNDIsIDIxNywgMjQwLCAxODIsIDQ2LCAxMDcsIDIzMywgCisgICAgMTc5LCAxNywgMTk5LCA4MSwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxMDIsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTA1LCAKKyAgICA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE0NywgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxNDksIDQ2LCAxMDcsIDIzMywgCisgICAgMTc5LCAxNywgMTY0LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE4NywgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAyMTAsIAorICAgIDEzNSwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxOTIsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMjE5LCAxMTMsIDQ2LCAKKyAgICAxMDcsIDEwNywgMTcsIDE5OSwgODEsIDQ2LCAxMDcsIDEwNywgMTcsIDEwMiwgNDYsIDEwNywgMTA3LCAxNywgMTA1LCA0NiwgCisgICAgMTA3LCAxMDcsIDE3LCAxNDcsIDQ2LCAxMDcsIDEwNywgMTcsIDE0OSwgNDYsIDEwNywgMTA3LCAxNywgMTY0LCA0NiwgMTA3LCAKKyAgICAxMDcsIDE3LCAxODcsIDQ2LCAxMDcsIDEwNywgMTcsIDIxMCwgMTM1LCA0NiwgMTA3LCAxMDcsIDE3LCAxOTIsIDQ2LCAxMDcsIAorICAgIDEwNywgMTcsIDIxOSwgMTEzLCA0NiwgMTA3LCAyLCAyMDEsIDMwLCA0NiwgMTA3LCAyLCAyMDEsIDI5LCA0NiwgMTA3LCAyLCAKKyAgICAyMTEsIDIzOCwgNDYsIDEwNywgMiwgMjI2LCAyMzgsIDQ2LCAxMDcsIDIsIDIzMywgMTA3LCA0NiwgMTA3LCAyLCAyNDAsIAorICAgIDE5NiwgNDYsIDEwNywgMiwgMjEzLCAxMDUsIDIxMiwgMjI4LCAyMTMsIDIxMiwgNDYsIDEwNywgMiwgMjIyLCAxOTksIDIwMCwgCisgICAgNzgsIDQ2LCAxMDcsIDIsIDIyNywgOTksIDQ2LCAxMDcsIDIsIDIyNywgOTgsIDQ2LCAxMDcsIDIsIDIxMSwgMjQ2LCA0NiwgCisgICAgMTA3LCAyLCAyMTEsIDI0NSwgNDYsIDEwNywgMiwgMjM0LCAxNzIsIDQ2LCAxMDcsIDIsIDI0NywgMTg3LCAzOCwgMjM5LCAKKyAgICAxNzIsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMzgsIDI0MSwgNzMsIDM4LCAyMjgsIDk0LCAzOCwgMTkxLCA0OCwgMzgsIDIwNSwgCisgICAgODMsIDI0MCwgMTgyLCAzOCwgMjAwLCAxOTQsIDU3LCAzOCwgMjAxLCAyMiwgMjI0LCAxNzcsIDU3LCAzOCwgMTc2LCAxMzQsIAorICAgIDU3LCAzOCwgNTMsIDE3NiwgMTM0LCA1NywgMzgsIDE2MiwgMjQ3LCA1NywgMjA4LCA0NywgNTcsIDM4LCAyMDgsIDMzLCAKKyAgICAyNDcsIDU3LCAyMDgsIDQ3LCA1NywgMzgsIDIxNiwgMTE3LCA1NiwgMzgsIDUzLCAyMTYsIDExNywgNTYsIDM4LCAyMTYsIAorICAgIDExNywgNTcsIDM4LCAyMTYsIDExNywgMjE2LCAyNDIsIDEzMywgMiwgMjA0LCAxNSwgMjEzLCA4MiwgMTMzLCAyLCAyMDQsIAorICAgIDE1LCAyNDcsIDE1MSwgMTMzLCAyLCAyNDcsIDcyLCAxMzMsIDIsIDIwNywgMjA1LCAxMzMsIDIsIDI0OCwgMTU3LCAxMzMsIAorICAgIDEsIDI1MSwgMTU3LCAxMzMsIDEsIDI1MSwgMTU4LCAyMDYsIDE5MiwgMTMzLCAxLCAyMjgsIDE0NywgMTMzLCAxLCAyMjgsIAorICAgIDE0OCwgMjA2LCAxOTIsIDEzMywgMSwgMjA0LCAxOCwgMTMzLCAxLCAyMDQsIDE5LCAyMDYsIDE5MiwgMTMzLCAxLCAyMTMsIAorICAgIDI1MywgMjEzLCAxMzUsIDEzMywgMSwgMjEzLCAyNTMsIDIxMywgMTM2LCAyMDYsIDE5MiwgMTMzLCAxLCAyMjUsIDE3NiwgCisgICAgMjI1LCAzLCAxMzMsIDEsIDIyNSwgMTc2LCAyMjUsIDQsIDIwNiwgMTkyLCAxMzMsIDEsIDIzOCwgMjE0LCAxMzMsIDEsIAorICAgIDI1MSwgMTc0LCAxMzMsIDEsIDIxNywgOTYsIDEzMywgMSwgMjE3LCA5NywgMjA2LCAxOTIsIDEzMywgMSwgMTYxLCAxMzMsIAorICAgIDEsIDIyNywgMTA4LCAyMjIsIDIwMiwgMTMzLCAxLCAyMzYsIDg5LCAxMzMsIDEsIDIzNiwgOTAsIDIzNSwgMTAyLCAxMzMsIAorICAgIDEsIDIxOSwgMjUzLCAxMzMsIDEsIDI0NywgMTkwLCAxMzMsIDEsIDI0NywgMTkxLCAyMjUsIDE2MywgMTMzLCAxLCAyMjcsIAorICAgIDI0OCwgMTMzLCAxLCAyMjcsIDI0OSwgMjI3LCAyMTksIDEzMywgMSwgMjE4LCA2MCwgMTMzLCAxLCAyMDcsIDM3LCAyMjUsIAorICAgIDYwLCAxMzMsIDEsIDIwNywgMzcsIDIyMSwgMSwgMjIyLCAyMDIsIDEzMywgMSwgMjQyLCA1OSwgMjIxLCAxLCAyNTEsIDExNCwgCisgICAgMTMzLCAxLCAyNDIsIDU5LCAyMjEsIDEsIDIyMiwgMjAyLCAxMzMsIDEsIDIyMCwgMTYyLCAyMTMsIDIxNSwgMTMzLCAxLCAKKyAgICAyMDcsIDM2LCAxMzMsIDEsIDIwNywgMzcsIDIwNiwgMjE0LCAxMzMsIDEsIDI0MiwgNTgsIDEzMywgMSwgMjQyLCA1OSwgCisgICAgMjIyLCAyMjEsIDEzMywgMSwgMTg4LCAxMzMsIDEsIDE3MiwgMTMzLCAxLCAyMTYsIDIxMSwgMjI3LCA1OCwgMTMzLCAxLCAKKyAgICAyNDksIDEzNiwgMTMzLCAxLCAyNDksIDEzNywgMjI2LCAyNTAsIDEzMywgMSwgMTc4LCAxMzMsIDEsIDE4MywgMTMzLCAxLCAKKyAgICAyMTMsIDI1MiwgMTMzLCAxLCAxOTQsIDEzMywgMSwgMjAxLCAxMTQsIDEzMywgMSwgMjEyLCA2NSwgMjEyLCA0OSwgMTMzLCAKKyAgICAxLCAyMTIsIDY1LCAyMTIsIDIsIDEzMywgMSwgMjEyLCA2NCwgMTMzLCAxLCAxNDQsIDEzMywgMiwgMjEzLCAxMjYsIDEzMywgCisgICAgMjIsIDIsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMDQsIDE0LCAxMzMsIDIyLCAyLCAyMDQsIDE1LCAyMTEsIDI1NCwgMTMzLCAKKyAgICAyMiwgMiwgMjA3LCAyMzgsIDEzMywgMjIsIDIsIDIwNywgMjM5LCAyMjgsIDEzOSwgMTMzLCAyMiwgMiwgMjEzLCAyNTMsIAorICAgIDIxMywgMTM1LCAxMzMsIDIyLCAyLCAyMTMsIDI1MywgMjEzLCAxMzYsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMjUsIDE3NiwgCisgICAgMjI1LCAzLCAxMzMsIDIyLCAyLCAyMjUsIDE3NiwgMjI1LCA0LCAyMDYsIDE5MiwgMTMzLCAyMiwgMiwgMjA2LCAyNDksIAorICAgIDEzMywgMjIsIDIsIDIwNiwgMjUwLCAyMTMsIDEzNSwgMTMzLCAyMiwgMiwgMjA2LCAyNTAsIDIwNiwgMTkyLCAxMzMsIDIyLCAKKyAgICAyLCAyMDYsIDI1MCwgMjEzLCAxMzYsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMTYsIDMwLCAxMzMsIDIyLCAyLCAyMTYsIAorICAgIDMxLCAyMDYsIDE5MiwgMTMzLCAyNTEsIDIzMCwgMjUxLCAyMjksIDEzMywgMSwgMjI3LCA4NywgMjExLCAyNTMsIDEzMywgMSwgCisgICAgMjI2LCAxNzQsIDIxMSwgMjUzLCAxMzMsIDEsIDIwNCwgMTA4LCAyMTEsIDI1MywgMTMzLCAxLCAyMzgsIDI0OSwgMjExLCAKKyAgICAyNTMsIDEzMywgMSwgMjAzLCA2MCwgMjExLCAyNTMsIDEzMywgMSwgMTk5LCAxMDQsIDIxMSwgMjUzLCAxMzMsIDEsIDI1MCwgCisgICAgMTU4LCAyMTEsIDI1MywgMTMzLCAxNywgMTk5LCA4MSwgMTMzLCAxNywgMTAyLCAxMzMsIDE3LCAxMDUsIDEzMywgMTcsIAorICAgIDE0NywgMTMzLCAxNywgMTQ5LCAxMzMsIDE3LCAxNjQsIDEzMywgMTcsIDE4NywgMTMzLCAxNywgMjEwLCAxMzUsIDEzMywgCisgICAgMTcsIDE5MiwgMTMzLCAxNywgMjE5LCAxMTMsIDEzMywgMjE2LCAxNDMsIDEzMywgMjE2LCAxNzEsIDEzMywgMjAxLCAxNCwgCisgICAgMTMzLCAyNDcsIDEyNywgMjE2LCAxNjQsIDEzMywgMjQ3LCAxMjcsIDIwOSwgMTU4LCAxMzMsIDI0NywgMTI3LCAyMTYsIAorICAgIDExNCwgMTMzLCAyMTYsIDE3MCwgMTMzLCAzMiwgMTYsIDI0MCwgMTg4LCAxMzMsIDMyLCAxNiwgMjQxLCAxMzMsIDEzMywgCisgICAgMzIsIDE2LCAyMzksIDEyMSwgMTMzLCAzMiwgMTYsIDI0MiwgOCwgMTMzLCAzMiwgMTYsIDI0MiwgOSwgMjA3LCAyMDUsIAorICAgIDEzMywgMzIsIDE2LCAyNDEsIDE4LCAxMzMsIDMyLCAxNiwgMjQyLCA1MCwgMTMzLCAzMiwgMTYsIDI0MSwgMTA5LCAxMzMsIAorICAgIDMyLCAxNiwgMjQyLCAzMiwgMTMzLCAzMiwgMTYsIDI0MiwgOSwgMjM2LCA5LCAxMzMsIDMyLCAxNiwgMzgsIDIwNiwgMTg1LCAKKyAgICAxMzMsIDMyLCAxNiwgMzgsIDIzOCwgMTY5LCAxMzMsIDMyLCAxNiwgMzgsIDIyNiwgMjQ1LCAxMzMsIDMyLCAxNiwgMzgsIAorICAgIDIyNiwgMjQ3LCAxMzMsIDMyLCAxNiwgMzgsIDIyNywgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDIyNiwgMjQ2LCAzLCAyMjcsIAorICAgIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyMjYsIDI0OCwgMywgMjI3LCAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjQ4LCAyMjEsIAorICAgIDEzMywgMzIsIDE2LCAzOCwgMjM1LCAxMDYsIDEzMywgMzIsIDE2LCAyMTMsIDQ0LCAxNzYsIDIzOSwgMTMxLCAxMzMsIDMyLCAKKyAgICAxNiwgMjEzLCA0NCwgMTc2LCAyNDIsIDQ4LCAxMzMsIDMyLCAxNiwgMjEzLCA0NCwgMjQ2LCAxMTAsIDIwNCwgMjA3LCAxMzMsIAorICAgIDMyLCAxNiwgMjEzLCA0NCwgMjQ2LCAxMTAsIDIwNywgMiwgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgMjE2LCAxNTcsIAorICAgIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIDIxNCwgMjEwLCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMjQ2LCAxMTAsIDIxNSwgCisgICAgMTMxLCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMjQ2LCAxMTAsIDIxNSwgMTE3LCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAKKyAgICAyMTUsIDE1NiwgMjA3LCAyMjcsIDIsIDIxNiwgMTQwLCAyMDcsIDIyNywgMiwgMjE2LCAxNTMsIDIwNywgMjI3LCAyLCAyMTYsIAorICAgIDE0OSwgMjA3LCAyMjcsIDEsIDYyLCAyMDcsIDIyNywgMSwgNzAsIDIwNywgMjI3LCAxLCA2NiwgMjA3LCAyMjcsIDEsIDI1MSwgCisgICAgMjIxLCAyMDcsIDIyNywgMSwgNzQsIDIwNywgMjI3LCAxLCA3MiwgMjA3LCAyMjcsIDEsIDIzOCwgNjksIDIwNywgMjI3LCAxLCAKKyAgICAxNjEsIDIwNywgMjI3LCAxLCAyMTQsIDE1OSwgMjA3LCAyMjcsIDEsIDIzNiwgODksIDIwNywgMjI3LCAxLCAyMTksIDI1MywgCisgICAgMjA3LCAyMjcsIDEsIDI0NywgMTkwLCAyMDcsIDIyNywgMSwgMjI3LCAyNDgsIDIwNywgMjI3LCAxLCAxOTksIDExNCwgMjA3LCAKKyAgICAyMjcsIDEsIDIxOCwgNjAsIDIwNywgMjI3LCAxLCAyMDcsIDM2LCAyMDcsIDIyNywgMSwgMjQyLCA1OCwgMjA3LCAyMjcsIDEsIAorICAgIDE4OCwgMjA3LCAyMjcsIDEsIDE3MiwgMjA3LCAyMjcsIDEsIDIzNywgMTk1LCAyMDcsIDIyNywgMSwgMjAzLCA5MCwgMjA3LCAKKyAgICAyMjcsIDEsIDI0OSwgMTM2LCAyMDcsIDIyNywgMSwgMTc4LCAyMDcsIDIyNywgMSwgMTgzLCAyMDcsIDIyNywgMSwgMjEzLCAKKyAgICAyNTIsIDIwNywgMjI3LCAxLCAxOTQsIDIwNywgMjI3LCAxLCAyMDEsIDExNCwgMjA3LCAyMjcsIDEsIDIxMiwgNjQsIDIwNywgCisgICAgMjI3LCAxLCAyMDAsIDE4MSwgMjA3LCAyMjcsIDEsIDE0NCwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxNjgsIDIwNywgMjI3LCAKKyAgICAxMTEsIDIsIDIxNiwgMTQyLCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDEzOSwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE1NiwgCisgICAgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDEzOCwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE2MSwgMjA3LCAyMjcsIDIyLCAyLCAKKyAgICAyMTYsIDE0OCwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE2OSwgMjA3LCAyMjcsIDIyLCAyLCAyMTYsIDE1OCwgMjA3LCAyMjcsIAorICAgIDIsIDIxNiwgMTcyLCAyMDcsIDIyNywgMiwgMjAyLCAyMDgsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTAzLCAxNzgsIDIwNywgCisgICAgMjI3LCAxMTEsIDIsIDIxNiwgMTAzLCAyMDEsIDExNCwgMjA3LCAyMjcsIDEsIDIyNiwgMjA3LCAyMDcsIDIyNywgMSwgMjA3LCAKKyAgICAxNjQsIDIwNywgMjI3LCAxNywgMTk5LCA4MSwgMjA3LCAyMjcsIDE3LCAxMDIsIDIwNywgMjI3LCAxNywgMTA1LCAyMDcsIAorICAgIDIyNywgMTcsIDE0NywgMjA3LCAyMjcsIDE3LCAxNDksIDIwNywgMjI3LCAxNywgMTY0LCAyMDcsIDIyNywgMTcsIDE4NywgCisgICAgMjA3LCAyMjcsIDE3LCAyMTAsIDEzNSwgMjA3LCAyMjcsIDE3LCAxOTIsIDIwNywgMjI3LCAxNywgMjE5LCAxMTMsIDIwNywgCisgICAgMjI3LCAyNTAsIDEyMiwgMjA3LCAyMjcsIDEsIDIxMywgMTA4LCAyMDcsIDIyNywgMSwgMjI0LCAyMzMsIDIwNywgMjI3LCAxLCAKKyAgICAyNDgsIDIwMCwgMjA3LCAyMjcsIDEsIDQ3LCAyMjcsIDExOCwgMjA3LCAyMjcsIDEsIDQ3LCAyMjMsIDI0MywgMjQ5LCA1NCwgCisgICAgMSwgNjIsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCA2MiwgMjQ5LCA1NCwgMSwgMTQ0LCAyNDksIDU0LCAxLCAyMDksIDE1MCwgCisgICAgMTQ0LCAyNDksIDU0LCAxLCAyMjIsIDE3NSwgMTQ0LCAyNDksIDU0LCAxLCAyNDksIDEzNiwgMjQ5LCA1NCwgMSwgMjI3LCAKKyAgICA0MywgMjQ5LCAxMzYsIDI0OSwgNTQsIDEsIDE3MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDE3MiwgMjQ5LCA1NCwgMSwgCisgICAgMTg4LCAyNDksIDU0LCAxLCAyMjIsIDE3NSwgMTg4LCAyNDksIDU0LCAxLCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjA5LCAKKyAgICAxNTAsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMTYsIDE4NSwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIzNiwgODksIDI0OSwgCisgICAgNTQsIDEsIDIwOSwgMTUwLCAyMzYsIDg5LCAyNDksIDU0LCAxLCAyMjcsIDI0OCwgMjQ5LCA1NCwgMSwgMjQyLCA1OCwgMjQ5LCAKKyAgICA1NCwgMSwgMjEzLCAyNTIsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAyMTMsIDI1MiwgMjQ5LCA1NCwgMSwgMTc4LCAyNDksIAorICAgIDU0LCAxLCAyMDksIDE1MCwgMTc4LCAyNDksIDU0LCAxLCAyMDgsIDI1MiwgMjA3LCAzNiwgMjQ5LCA1NCwgMSwgMjE4LCAKKyAgICAyMTksIDIwNywgMzYsIDI0OSwgNTQsIDEsIDIxMiwgNjQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAyMTIsIDY0LCAyNDksIAorICAgIDU0LCAxLCAyMjIsIDE3NSwgMjEyLCA2NCwgMjQ5LCA1NCwgMSwgMTgzLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMTgzLCAKKyAgICAyNDksIDU0LCAxLCAyMTksIDI1MywgMjQ5LCA1NCwgMSwgMTk0LCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMTk0LCAyNDksIAorICAgIDU0LCAxLCAyMTgsIDYwLCAyNDksIDU0LCAxLCAyNDcsIDE5MCwgMjQ5LCA1NCwgMSwgMjIwLCA3NSwgMjQ5LCA1NCwgMSwgCisgICAgMjIyLCAxMTAsIDI0OSwgNTQsIDEsIDcwLCAyNDksIDU0LCAxLCA2NiwgMjQ5LCA1NCwgMiwgMjA1LCAxNzcsIDI0OSwgNTQsIAorICAgIDIyLCAyLCA3MiwgMjQ5LCA1NCwgMjIsIDIsIDIxNiwgMTg1LCA3MiwgMjQ5LCA1NCwgMjIsIDIsIDIzOCwgMjU1LCAyNDksIAorICAgIDU0LCAyMiwgMiwgNzAsIDI0OSwgNTQsIDIyLCAyLCAyMjcsIDQzLCA3MCwgMjQ5LCA1NCwgMjIsIDIsIDc0LCAyNDksIDU0LCAKKyAgICAyMiwgMiwgMjI3LCA0MywgNzQsIDI0OSwgNTQsIDIyLCAyLCA2NiwgMjQ5LCA1NCwgMjIsIDIsIDEwOCwgMzYsIDIwOSwgCisgICAgMTUwLCAyMTIsIDY0LCAyNDksIDU0LCAxMTEsIDIsIDIxOSwgMjU1LCAyNDksIDU0LCAxMTEsIDIsIDIzNCwgMjQ3LCAyNDksIAorICAgIDU0LCAyMTYsIDE1MSwgMjQ5LCA1NCwgMjE2LCAxNDcsIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjIwLCAxNjIsIDIyMiwgCisgICAgMTgsIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjE1LCAxNTksIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjI3LCAxNDQsIAorICAgIDI0OSwgNTQsIDE2LCAyNDgsIDE2NiwgMjE2LCAxNTEsIDIyNCwgMjQzLCAxLCAxNjEsIDIyNCwgMjQzLCAxLCAyMjYsIDEwMiwgCisgICAgMjI0LCAyNDMsIDEsIDIyNiwgMjA3LCAyMjQsIDI0MywgMSwgMjM2LCA4OSwgMjI0LCAyNDMsIDEsIDIzNSwgMTMxLCAyMjQsIAorICAgIDI0MywgMSwgMjE5LCAyNTMsIDIyNCwgMjQzLCAxLCAyNDcsIDE5MCwgMjI0LCAyNDMsIDEsIDI0NywgMzcsIDIyNCwgMjQzLCAKKyAgICAxLCAyMjcsIDI0OCwgMjI0LCAyNDMsIDEsIDIxOCwgNjAsIDIyNCwgMjQzLCAxLCAyMDcsIDM2LCAyMjQsIDI0MywgMSwgCisgICAgMjA2LCAxMjIsIDIyNCwgMjQzLCAxLCAyNDIsIDU4LCAyMjQsIDI0MywgMSwgMTg4LCAyMjQsIDI0MywgMSwgMTcyLCAyMjQsIAorICAgIDI0MywgMSwgMjE1LCAxMzUsIDIyNCwgMjQzLCAxLCAyMTUsIDI0NSwgMjI0LCAyNDMsIDEsIDIzNywgMTk1LCAyMjQsIDI0MywgCisgICAgMSwgMjM3LCA1NSwgMjI0LCAyNDMsIDEsIDI0OSwgMTM2LCAyMjQsIDI0MywgMSwgMjQ4LCAxNDUsIDIyNCwgMjQzLCAxLCAKKyAgICAxNzgsIDIyNCwgMjQzLCAxLCAyMjEsIDE0MywgMjI0LCAyNDMsIDEsIDIwNSwgMzIsIDIyNCwgMjQzLCAxLCAyMDUsIDIyLCAKKyAgICAyMjQsIDI0MywgMSwgMjM5LCA5MywgMjI0LCAyNDMsIDEsIDE4MywgMjI0LCAyNDMsIDEsIDIxMywgMjUyLCAyMjQsIDI0MywgCisgICAgMSwgMTk0LCAyMjQsIDI0MywgMSwgMTQ0LCAyMjQsIDI0MywgMSwgMjM0LCAzOSwgMjI0LCAyNDMsIDEsIDIwMywgOTAsIAorICAgIDIyNCwgMjQzLCAxLCAyMTIsIDY0LCAyMjQsIDI0MywgMSwgMjEwLCAxMTQsIDIyNCwgMjQzLCAxLCAyMDEsIDExNCwgMjI0LCAKKyAgICAyNDMsIDEsIDYyLCAyMjQsIDI0MywgMjA4LCAxMiwgMSwgMTgzLCAyMjQsIDI0MywgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIAorICAgIDIyNCwgMjQzLCAyMiwgMiwgMjUyLCAxMzgsIDIyNCwgMjQzLCAyMiwgMiwgNzAsIDIyNCwgMjQzLCAyMiwgMiwgNzQsIDIyNCwgCisgICAgMjQzLCAyMiwgMiwgMjE3LCA2MywgMjI0LCAyNDMsIDIyLCAyLCA2NiwgMjI0LCAyNDMsIDIyLCAyLCAyMDMsIDE4MiwgMjI0LCAKKyAgICAyNDMsIDIyLCAyLCA3MiwgMjI0LCAyNDMsIDExMSwgMiwgMjI3LCAxMTgsIDIyNCwgMjQzLCAxMTEsIDIsIDIyMywgMjQzLCAKKyAgICAyMjQsIDI0MywgMTExLCAyLCAxNTYsIDIyNCwgMjQzLCAxMTEsIDIsIDIyMCwgMjE0LCAyMjQsIDI0MywgMTExLCAyLCAyMTYsIAorICAgIDIyNiwgMjI0LCAyNDMsIDExMSwgMiwgMTQ2LCAyMjQsIDI0MywgMTExLCAyLCAyMDcsIDgzLCAyMjQsIDI0MywgMTExLCAyLCAKKyAgICAyMTgsIDM0LCAyMjQsIDI0MywgMTExLCAyLCAyMjcsIDY0LCAyMjQsIDI0MywgMiwgMjEzLCAyMTMsIDIyNCwgMjQzLCAyLCAKKyAgICAyMTgsIDEwMCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMDcsIDM0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDIxOCwgNDUsIDIwNiwgCisgICAgMTgsIDIwNywgMzQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjQ3LCA0NCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyMDUsIDE0LCAKKyAgICAyNDcsIDQ0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNSwgMTMsIDIyNCwgMjQzLCAxNywgMTk5LCA4MSwgMjI0LCAyNDMsIAorICAgIDE3LCAxMDIsIDIyNCwgMjQzLCAxNywgMTA1LCAyMjQsIDI0MywgMTcsIDE0NywgMjI0LCAyNDMsIDE3LCAxNDksIDIyNCwgCisgICAgMjQzLCAxNywgMTY0LCAyMjQsIDI0MywgMTcsIDE4NywgMjI0LCAyNDMsIDE3LCAyMTAsIDEzNSwgMjI0LCAyNDMsIDE3LCAKKyAgICAxOTIsIDIyNCwgMjQzLCAxNywgMjE5LCAxMTMsIDIyNCwgMjQzLCAxLCAyMDQsIDI1MywgMjI0LCAyNDMsIDEsIDIwNCwgCisgICAgMjQxLCAyMjQsIDI0MywgMSwgMjQxLCAyMjAsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTk5LCA4MSwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDE3LCAxMDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTA1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE0NywgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNDksIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTY0LCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMTcsIDE4NywgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAyMTAsIDEzNSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAKKyAgICAxOTIsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMjE5LCAxMTMsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAxOTQsIDIxNywgOTQsIAorICAgIDI0NiwgMjI5LCAxLCAyNTAsIDE1NSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MSwgMTkzLCAyMTcsIDk0LCAyNDYsIDIyOSwgCisgICAgMSwgMjUxLCA3NiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MSwgMTUxLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI1LCAKKyAgICAxNzUsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDEwMCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgMTAxLCAyMTcsIAorICAgIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCA5OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgOTQsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxLCAyMjQsIDIxMCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyOCwgMjYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAKKyAgICAyMjgsIDE1MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyOCwgNDcsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjgsIDM1LCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI0LCA0MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIwNCwgMzgsIDIxNywgOTQsIAorICAgIDI0NiwgMjI5LCAxLCAyMDQsIDM2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjAzLCAyMzMsIDIxNywgOTQsIDI0NiwgMjI5LCAKKyAgICAxLCAyMDMsIDE3NCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNSwgNDAsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIAorICAgIDEzMywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIzOSwgMiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgMTc5LCAyMTcsIAorICAgIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAxMDgsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjQsIDExMCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDEsIDIxNywgNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIxNywgMTQyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgCisgICAgMjE2LCAyNDksIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMTcsIDEwOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIyMSwgNDIsIAorICAgIDIwNCwgMjE4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjM2LCA4NCwgMjA0LCAyMTksIDIxNywgOTQsIDI0NiwgMjI5LCAyMjEsIAorICAgIDQwLCAyMDQsIDIxOSwgMjE3LCA5NCwgMjQ2LCAyMjksIDIxMywgMTUwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMjE1LCAyNDMsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAyNTEsIDE4NCwgMjE3LCA5NCwgMjQ2LCAyMjksIDIxNCwgMjEyLCAyMjEsIDM2LCAyMTcsIAorICAgIDk0LCAyNDYsIDIyOSwgMjE0LCAyMTIsIDUzLCAyMjEsIDM2LCAzNywgNCwgMSwgMjEyLCAyMTksIDIwMywgNTksIDM3LCA0LCAKKyAgICAxLCAyMjQsIDgyLCAyNDEsIDE3NSwgMzcsIDQsIDEsIDIyMCwgMTI0LCA3NCwgMzcsIDQsIDEsIDIwMSwgMjgsIDIzOCwgCisgICAgMTA0LCAzNywgNCwgMSwgMjA2LCAyNDgsIDIwNiwgMjAxLCAzNywgNCwgMSwgMjA2LCA0MywgMjA2LCAyMDEsIDM3LCA0LCAxLCAKKyAgICAyMDYsIDI0OCwgMjM0LCAxNjUsIDU0LCAzNywgNCwgMSwgMjA2LCAyNDgsIDIwMCwgNjUsIDM3LCA0LCAxLCAyMDQsIDAsIAorICAgIDIwNCwgMjAsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIwNywgMTk4LCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgCisgICAgMTY2LCAyMTYsIDE1MiwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjE0LCAyMDAsIDIwNywgMjI3LCAyMTQsIAorICAgIDIxMiwgMjQ4LCAxNjYsIDI0NywgMTc1LCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMjQsIDIzNCwgMjExLCAKKyAgICAyNTAsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIyNywgMTA4LCAyMTEsIDI1MCwgMjA3LCAyMjcsIDIxNCwgCisgICAgMjEyLCAyNDgsIDE2NiwgMjQyLCA1OSwgMjExLCAyNTAsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDI0OSwgMTM3LCAKKyAgICAyMTEsIDI1MCwgMjAzLCA1NiwgMTUwLCAyMjcsIDQxLCAyMDMsIDU2LCAxNTAsIDIxMCwgODEsIDIwMywgNTYsIDE1MCwgCisgICAgMjE1LCAyMywgMjAzLCA1NiwgMiwgMjE5LCAxMjYsIDIwMywgNTYsIDIsIDIwMCwgODYsIDIyMSwgMjAyLCAyMDcsIDE4OSwgCisgICAgMjAzLCA1NiwgMTUwLCAyMDAsIDg2LCAyNTEsIDE4OSwgMjI4LCAxMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIwMCwgCisgICAgODYsIDIyOCwgMTA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMTUwLCAyMDAsIDg2LCAyMjcsIDI5LCAyMjgsIDEwNCwgMjA3LCAKKyAgICAxODksIDIwMywgNTYsIDE1MCwgMjQ3LCAxNTIsIDU3LCAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDIyNywgMjksIDIyOCwgCisgICAgMTA0LCAyMDcsIDE5MCwgMjExLCAyMjAsIDIwMywgNTYsIDE1MCwgNTMsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIwNSwgCisgICAgODMsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIyNywgMjksIDI1MSwgMzUsIDIwMywgNTYsIDE1MCwgNzMsIDU3LCAyMDMsIAorICAgIDU2LCAxNTAsIDEyMCwgMTkwLCA1NywgMjAzLCA1NiwgMTUwLCAxMjYsIDE5MCwgNTcsIDIwMywgNTYsIDE1MCwgMjEzLCAzNCwgCisgICAgMjI3LCA0MCwgMjI4LCAxMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDI1MCwgMTUyLCAyMjgsIDEwNCwgMjA3LCAxODksIAorICAgIDIwMywgNTYsIDIsIDIwMiwgMjA0LCAyMDcsIDE4OSwgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDIwNCwgMzMsIDIwMywgNTYsIAorICAgIDIsIDIxMywgMTA1LCAyMDIsIDIwNCwgMjA0LCAzMywgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDI1MSwgMzUsIDIwMywgNTYsIAorICAgIDIsIDIxMywgMTA1LCAyMDIsIDIwNCwgMjUxLCAzNSwgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDIwNCwgMzQsIDMsIDIwNywgNiwgCisgICAgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDI1MSwgMzYsIDMsIDIwNywgNiwgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjUxLCA1MCwgCisgICAgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjQ5LCAxMDQsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDIwMywgODEsIDIwMywgNTYsIDIsIAorICAgIDI1MSwgMzQsIDIwMywgODIsIDMsIDIwNywgNiwgMjAzLCA1NiwgMiwgMjA1LCAyMTQsIDIwMywgNTYsIDIsIDIzNCwgODcsIAorICAgIDE2OCwgMjUxLCAzMywgMjAzLCA1NiwgMiwgMTY4LCAyNTEsIDMzLCAyMDMsIDU2LCAyLCAyMTIsIDE3NywgMTY4LCAyNTEsIAorICAgIDMzLCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyMDQsIDQwLCAyMjEsIDI3LCAyMDMsIDU2LCAyLCAyNTAsIDIzMCwgMjAzLCA1NiwgCisgICAgMiwgMjEyLCAyMjgsIDI1MCwgMjMwLCAyMDMsIDU2LCAxNTAsIDI0NywgMTUyLCA1NiwgMjAzLCA1NiwgMiwgMjI3LCAyMDEsIAorICAgIDIwMywgNTYsIDIsIDIwMywgMjI2LCAyMDMsIDU2LCAxNTAsIDIxMywgMjcsIDU2LCAyMDMsIDU2LCAxNTAsIDUzLCAyMTMsIAorICAgIDI3LCA1NiwgOCwgMSwgNCwgNiwgNjIsIDgsIDEsIDQsIDYsIDI1MSwgMjIxLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjUxLCAKKyAgICAyMjEsIDgsIDEsIDQsIDYsIDI0OSwgNzEsIDI1MCwgMTAzLCA4LCAxLCA0LCA2LCAyNDcsIDIyMywgOCwgMSwgNCwgNiwgCisgICAgMjQyLCAxNTMsIDgsIDEsIDQsIDYsIDIzOCwgNzQsIDgsIDEsIDQsIDYsIDcyLCA4LCA0LCAxLCAyMDQsIDE4NSwgMTc2LCAKKyAgICA3MiwgOCwgNCwgMSwgMjA0LCAxODUsIDcwLCA4LCAxLCA0LCA2LCAyMjcsIDI1MSwgOCwgMSwgNCwgNiwgMjI3LCAxMTgsIDgsIAorICAgIDEsIDQsIDYsIDIyNSwgMTkzLCAzLCA5NywgOCwgMSwgNCwgNiwgMjIzLCAyNDMsIDgsIDEsIDQsIDYsIDIxMywgMTA1LCAKKyAgICAyMjAsIDIxNCwgOCwgMSwgNCwgNiwgNzQsIDgsIDEsIDQsIDYsIDE3NiwgNzQsIDgsIDQsIDEsIDIwOSwgMTczLCA3NCwgOCwgCisgICAgNCwgMSwgMjA5LCAxNzMsIDE3NiwgNzQsIDgsIDQsIDEsIDIwOSwgMTczLCAxNjMsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMjE3LCAxMjEsIDgsIDEsIDQsIDYsIDIxNywgMywgOCwgNCwgMSwgMjA1LCAxNTgsIDE2NywgNzQsIDgsIDQsIDEsIAorICAgIDI0OCwgOTMsIDE2NywgNzQsIDgsIDEsIDQsIDYsIDIxNiwgMjI2LCA4LCAxLCA0LCA2LCAyMTMsIDEwNSwgMTQ2LCA4LCAxLCAKKyAgICA0LCA2LCAyMDQsIDE4NSwgMTQ2LCA4LCAxLCA0LCA2LCAyMDcsIDgzLCA4LCAxLCA0LCA2LCA2NiwgOCwgNCwgMSwgMjA5LCAKKyAgICAxNzMsIDY2LCA4LCA0LCAxLCAyMDksIDE3MywgMjQxLCA3MiwgNjYsIDgsIDQsIDEsIDIwOSwgMTczLCAyMDQsIDE4NSwgCisgICAgMjIzLCAyNDMsIDgsIDEsIDQsIDYsIDIwMywgMTY4LCA4LCAxLCA0LCA2LCAyMDEsIDE0NywgOCwgMSwgNCwgNiwgMTk5LCAKKyAgICAxNTcsIDgsIDEsIDQsIDYsIDIzOCwgOCwgOCwgMSwgMjAyLCAxODksIDIyNSwgNjYsIDIwOCwgMjE2LCA4LCAxLCAyNTEsIAorICAgIDE3MSwgMzEsIDEsIDQsIDYsIDIzNiwgNjAsIDMxLCAxLCA0LCA2LCAyMjUsIDg3LCAzMSwgMSwgNCwgNiwgMjE1LCAyMDQsIAorICAgIDMxLCAxLCA0LCA2LCAyMTMsIDkwLCAzMSwgMSwgNCwgNiwgMjE0LCAyMzUsIDM3LCAxLCA0LCA2LCAyMzgsIDIwOSwgNjcsIAorICAgIDEsIDYsIDYyLCA2NywgMSwgNiwgMjUxLCAyMjEsIDY3LCAxLCA2LCAyNTAsIDEwMywgNjcsIDEsIDYsIDI0OSwgNzEsIDI1MCwgCisgICAgMTAzLCA2NywgMSwgNiwgMjQyLCAxNTMsIDY3LCAxLCA2LCA3MiwgNjcsIDEsIDYsIDIxMywgMTA1LCA3MiwgNjcsIDEsIDYsIAorICAgIDIzNiwgMTU2LCA2NywgMSwgNiwgMjM0LCAyNDcsIDY3LCAxLCA2LCA3MCwgNjcsIDEsIDYsIDIyNywgMjUxLCA2NywgMSwgNiwgCisgICAgMjI3LCAxMTgsIDY3LCAxLCA2LCAxNTYsIDY3LCAxLCA2LCAyMjMsIDI0MywgNjcsIDEsIDYsIDIyMCwgMjE0LCA2NywgMSwgCisgICAgNiwgMjEzLCAxMDUsIDIyMCwgMjE0LCA2NywgMSwgNiwgNzQsIDY3LCAxLCA2LCAyMTcsIDMsIDY3LCAxLCA2LCAyMTYsIAorICAgIDIyNiwgNjcsIDEsIDYsIDE0NiwgNjcsIDEsIDYsIDIwNywgODMsIDY3LCAxLCA2LCA2NiwgNjcsIDEsIDYsIDIwMSwgMTQ3LCAKKyAgICA2NywgMSwgNCwgNjIsIDY3LCAxLCA0LCAyMDQsIDE4NSwgNjIsIDY3LCAxLCA0LCAyNTEsIDExMiwgNjcsIDEsIDQsIDIwNCwgCisgICAgMTg1LCAyNTEsIDIyMSwgNjcsIDEsIDQsIDI1MCwgMTAzLCA2NywgMSwgNCwgMjQyLCAxNTMsIDY3LCAxLCA0LCA3MiwgNjcsIAorICAgIDEsIDQsIDIxMSwgMjE4LCA2NywgMSwgNCwgMTc2LCA3MiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAxNzYsIDcyLCA2NywgMSwgNCwgCisgICAgMjM2LCAxNTYsIDY3LCAxLCA0LCAyMDQsIDE4NSwgNzAsIDY3LCAxLCA0LCAyMjcsIDExOCwgNjcsIDEsIDQsIDIyMywgMjQzLCAKKyAgICA2NywgMSwgNCwgMjM4LCAxNjUsIDY3LCAxLCA0LCA3NCwgNjcsIDEsIDQsIDE3NiwgNzQsIDY3LCAxLCA0LCAyMDUsIDE1OCwgCisgICAgMTY3LCA3NCwgNjcsIDEsIDQsIDI0OCwgOTMsIDE2NywgNzQsIDY3LCAxLCA0LCAyMTYsIDIyNiwgNjcsIDEsIDQsIDIwNywgCisgICAgODMsIDY3LCAxLCA0LCA2NiwgNjcsIDEsIDQsIDIwOSwgMTczLCA2NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMjMsIDI0MywgCisgICAgNjcsIDEsIDQsIDIwMywgMTY4LCA2NywgMSwgNCwgMjUxLCAxNzEsIDY3LCAxLCA0LCAyNDgsIDIwOCwgNjcsIDEsIDQsIDMxLCAKKyAgICAyMzYsIDYwLCA2NywgMSwgNCwgMjQxLCAxMzYsIDY3LCAxLCA0LCAzMSwgMjE1LCAyMjksIDY3LCAxLCA0LCAyNDYsIDIzNiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCA3MCwgOCwgMjA4LCA0LCA0LCAxLCAxNDYsIDgsIDIwOCwgNCwgNCwgMSwgNjYsIDgsIDIwOCwgCisgICAgNCwgNCwgMSwgMjAzLCAxNjgsIDMxLCAyMDgsIDQsIDQsIDEsIDI0OCwgMjA4LCAzMSwgMjA4LCA0LCA0LCAxLCAyMzYsIDYwLCAKKyAgICAzMSwgMjA4LCA0LCA0LCAxLCAyMTMsIDkwLCAzMSwgMjA4LCA0LCA0LCAxLCAyMTUsIDIyOSwgMzEsIDIwOCwgNCwgNCwgMSwgCisgICAgMjQ2LCAyMzYsIDgsIDQsIDEsIDIwNCwgMzEsIDgsIDQsIDEsIDY4LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyNDIsIAorICAgIDE1NCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjM4LCA2LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjMsIAorICAgIDI0NCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI3LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTQsIAorICAgIDMzLCAzLCAyMzcsIDY5LCAyNiwgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDEwMSwgMjA1LCAyNDAsIAorICAgIDgsIDQsIDEsIDIwNywgODQsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAxMDEsIDIwNSwgMjQwLCAKKyAgICA4LCA0LCAxLCAyMDQsIDE4NSwgMjM2LCAxNTYsIDY3LCAxLCAzNywgMjM4LCAxNzksIDgsIDQsIDEsIDIyOCwgNzEsIDIzNiwgCisgICAgMTU2LCA4LCA0LCAxLCAyMDYsIDEyNSwgMywgMjA4LCA1MSwgOCwgNCwgNiwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDQsIDEsIAorICAgIDIyOCwgNDIsIDMsIDk3LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgOTcsIDgsIDQsIDYsIDEsIDEwOCwgMywgOTcsIDgsIDQsIAorICAgIDEsIDIwMywgMjIxLCAzLCA5NywgOCwgNCwgMSwgNjgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMzgsIDk1LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAKKyAgICAxMTEsIDExNywgOCwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMzMsIAorICAgIDE4NywgMjYsIDIwNywgNiwgOCwgNCwgMSwgMTk3LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxNzYsIDE5NywgMywgCisgICAgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgMTk3LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAyMTEsIDIxOSwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMTc2LCAxNjMsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDIzOCwgOTUsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDEwOCwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjM4LCA5LCAzLCAyMTMsIDExMSwgMTE3LCA2NywgMSwgNCwgMjA0LCAKKyAgICAxODUsIDI1MSwgMTEyLCA2NywgMSwgNCwgMjQ3LCAyMjMsIDY3LCAxLCA0LCAyNDcsIDIyNCwgMywgMjQyLCAxOTgsIDY3LCAKKyAgICAxLCA0LCAyMzgsIDc0LCA2NywgMSwgNCwgMjEzLCAxMDUsIDE3NiwgNzIsIDY3LCAxLCA0LCAyMzgsIDUsIDY3LCAxLCA0LCAKKyAgICAyNDAsIDE4MSwgMjI3LCAyNTIsIDMsIDk3LCA2NywgMSwgNCwgMTM1LCAyMzYsIDE1NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAKKyAgICAyMzQsIDI0NywgNjcsIDEsIDQsIDIzMywgMTksIDMsIDk3LCA2NywgMSwgNCwgMjI4LCA0MSwgNjcsIDEsIDQsIDYsIDcwLCAKKyAgICA2NywgMSwgNCwgNiwgMjMzLCAxOSwgMywgOTcsIDY3LCAxLCA0LCAyMjcsIDI1MiwgMywgMjQyLCAyMzAsIDY3LCAxLCA0LCAKKyAgICAyMjUsIDE5MywgMywgMjEzLCAxMTEsIDExNywgNjcsIDEsIDQsIDIyNSwgMTkzLCAzLCAyMTYsIDE4NCwgMTE3LCA2NywgMSwgCisgICAgNCwgNiwgMTU2LCA2NywgMSwgNCwgMjIzLCAyNDQsIDMsIDExNywgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMjMsIDI0NCwgMywgCisgICAgMTY4LCAyMjUsIDE2LCA2NywgMSwgNCwgMjIwLCAyMTUsIDMsIDQ5LCAxMTcsIDY3LCAxLCA0LCAyMjAsIDIxNSwgMywgMjEzLCAKKyAgICAxMTEsIDExNywgNjcsIDEsIDQsIDYsIDIyMCwgMjE0LCA2NywgMSwgNCwgMjQ5LCA3MSwgNzQsIDY3LCAxLCA0LCAyMTUsIAorICAgIDIyOSwgNjcsIDEsIDQsIDIxMiwgMTIzLCAzLCAxMTcsIDY3LCAxLCA0LCAyMzgsIDk0LCA2NywgMSwgNCwgMjA3LCA4NCwgMywgCisgICAgMjE2LCAxODQsIDExNywgNjcsIDEsIDQsIDEwOCwgMTQ4LCA2NywgMSwgNCwgMjAzLCAyMjAsIDY3LCAxLCA0LCA2LCA2NiwgCisgICAgNjcsIDEsIDQsIDIwMywgMTY5LCAzLCAxMTcsIDY3LCAxLCA0LCAyMDQsIDE4NSwgMjAzLCAxNjgsIDY3LCAxLCA0LCAxOTksIAorICAgIDE1NywgNjcsIDEsIDQsIDE5OSwgMTU4LCAzLCAyMTMsIDExMSwgMTE3LCA2NywgMSwgNCwgMTk5LCAxNTgsIDMsIDI0MiwgCisgICAgMTk4LCA2NywgMSwgNCwgMjM4LCA4LCA2NywgMSwgNCwgMjA2LCA4OCwgMzgsIDIzOSwgMTgwLCAyMzUsIDc0LCAyNTEsIAorICAgIDI1MSwgMzgsIDIzOSwgMTgwLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDM4LCAyMDksIDQyLCA1NywgMzgsIDIwNywgMTk2LCA4MSwgCisgICAgMzgsIDIyMiwgMjI3LCAzOCwgMjM1LCA3MSwgMzgsIDIyMiwgMjI1LCAzOCwgMjUxLCAyMzcsIDM4LCAyMzUsIDcyLCAzOCwgCisgICAgMjUxLCAyMzgsIDM4LCA4LCA0LCAxLCAyMTQsIDMzLCA1NywgMzgsIDI0OCwgNTYsIDM4LCAyMjIsIDIyNiwgMzgsIDUzLCAKKyAgICAyNDYsIDE0NywgNTYsIDM4LCAyMTcsIDExMSwgNTYsIDM4LCAxOTksIDI3LCA1NywgMzgsIDIyOCwgMjcsIDU3LCAzOCwgCisgICAgMjAzLCAyMTUsIDU2LCAzOCwgMjAzLCAxOTgsIDU2LCAzOCwgOCwgNCwgMSwgMjM3LCA0MSwgMTc2LCAzNSwgNTYsIDM4LCA4LCAKKyAgICA0LCAxLCAyNTEsIDIyMSwgMzgsIDgsIDQsIDEsIDI1MSwgMzEsIDM4LCA4LCA0LCAxLCAyNTAsIDEyMywgMzgsIDgsIDQsIDEsIAorICAgIDI0NywgMjI0LCAyNDcsIDY5LCAzOCwgOCwgNCwgMSwgMjI4LCA3MSwgMjQyLCAxNTMsIDM4LCA4LCA0LCAxLCAyMzgsIDc0LCAKKyAgICAzOCwgOCwgNCwgMSwgMjM2LCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAyMzYsIDE1NiwgMzgsIDgsIDQsIDEsIDIyNywgMTE4LCAKKyAgICAzOCwgOCwgNCwgMSwgMTU2LCAzOCwgOCwgMSwgNCwgNiwgMTU2LCAzOCwgOCwgMSwgNCwgNiwgMjIzLCAyNDMsIDM4LCA4LCAKKyAgICA0LCAxLCAyMjAsIDIxNCwgMzgsIDgsIDEsIDQsIDYsIDIyMCwgMjE0LCAzOCwgOCwgMSwgNCwgNiwgMTQ2LCAzOCwgOCwgNCwgCisgICAgMSwgMjE0LCAzMywgMjEyLCAyMjIsIDM4LCA4LCA0LCAxLCAyMTIsIDEyMiwgMzgsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjIsIAorICAgIDM4LCA4LCA0LCAxLCAxOTksIDE1NywgMzgsIDgsIDQsIDEsIDI1MSwgMTEyLCAzOCwgOCwgNCwgMSwgMjUwLCAxMDMsIDM4LCAKKyAgICA4LCA0LCAxLCAyNDgsIDIwOCwgMzgsIDgsIDQsIDEsIDIxMSwgMjE4LCAzOCwgOCwgNCwgMSwgMjM4LCA1LCAzOCwgOCwgNCwgCisgICAgMSwgMjI1LCAxOTMsIDMsIDUzLCAxMDEsIDIwNSwgMjQwLCAzOCwgOCwgNCwgMSwgMTYzLCAzLCAxNjIsIDI0NywgNTcsIDk3LCAKKyAgICAzOCwgOCwgNCwgMSwgMjE2LCAyMjYsIDM4LCA4LCA0LCAxLCAyMzgsIDk0LCAzOCwgOCwgNCwgMSwgMTA4LCAzLCAxNjIsIAorICAgIDI0NywgNTcsIDk3LCAzOCwgOCwgNCwgMSwgMjAxLCAxNDcsIDM4LCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgMzgsIDgsIAorICAgIDQsIDEsIDE2MywgMywgMjQxLCA3NCwgMzgsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NCwgMzgsIDExNSwgMjA3LCAxOCwgCisgICAgNTYsIDM4LCAyNDEsIDE0NSwgODEsIDM4LCA1MywgMjI4LCA1MCwgMjQ4LCA1OCwgNTcsIDM4LCAyNTEsIDExNywgMTYwLCAKKyAgICAyMDUsIDE4NiwgNTcsIDM4LCA0OSwgMjUwLCAyMDMsIDU2LCAzOCwgNTEsIDI1MCwgMjAzLCAyNiwgMTI3LCAyNTAsIDIwMywgCisgICAgNTcsIDgsIDYsIDEsIDM1LCAzLCAyMTMsIDI3LCA1NywgOCwgNCwgMSwgMzUsIDMsIDIxMywgMjcsIDU3LCA4LCA2LCAxLCAKKyAgICA2OCwgMywgNzMsIDU2LCA4LCA0LCAxLCA2OCwgMywgNzMsIDU2LCA4LCA2LCAxLCA2OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICA2OCwgMywgNzMsIDU3LCA4LCA2LCAxLCA2OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCA2OCwgMywgMjI0LCAxNzcsIAorICAgIDU3LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCA3MCwgMjYsIDE2OSwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgCisgICAgNzAsIDI2LCAxNjksIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTYsIAorICAgIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyMjIsIAorICAgIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIAorICAgIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA2LCAxLCAxOTcsIAorICAgIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDE5NywgMywgMjA1LCAKKyAgICAyNDEsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDIwNSwgMjQxLCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDcwLCAyNiwgCisgICAgMjQ4LCA1NywgOCwgNCwgMSwgMTk3LCAzLCAyNDcsIDcwLCAyNiwgMjQ4LCA1NywgOCwgNiwgMSwgMjM4LCA2LCAzLCA3MywgCisgICAgNTYsIDgsIDQsIDEsIDIzOCwgNiwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDIzNiwgMTU3LCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjM0LCAyNDgsIAorICAgIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDczLCA1NywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDczLCA1NywgOCwgCisgICAgNiwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMzQsIAorICAgIDI0OCwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAKKyAgICAyNDgsIDU4LCA1NywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0OCwgNTgsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMDUsIAorICAgIDI0MSwgNTcsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQxLCA1NywgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NSwgCisgICAgMjYsIDE2OSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NSwgMjYsIDE2OSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIAorICAgIDE2OSwgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDE2OSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMjI3LCAxMTksIDMsIDczLCA1NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjI3LCAKKyAgICAxMTksIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDczLCA1NywgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyMjQsIDE3NywgNTcsIAorICAgIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyNDYsIDE0NywgNTcsIAorICAgIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCAxNjksIDgsIDQsIDEsIAorICAgIDIyMywgMjQ0LCAzLCAxNjksIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCA3MywgCisgICAgNTYsIDgsIDYsIDEsIDIyMywgMjQ0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCA3MywgNTcsIDgsIDYsIDEsIAorICAgIDIyMCwgMjE1LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAKKyAgICA3MywgNTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMjQsIDE3NywgNTcsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDYsIDE0NywgNTcsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAxNjksIAorICAgIDgsIDQsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyNDEsIAorICAgIDc0LCA4LCA0LCAxLCAxNjMsIDMsIDIwNSwgMjQxLCAyNiwgMjQxLCA3NCwgOCwgNiwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAyNiwgMTY5LCA4LCA2LCAxLCAyMTYsIDIyNywgCisgICAgMywgMTY5LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMTY5LCA4LCA2LCAxLCAyMTYsIDIyNywgMywgNzMsIDU2LCA4LCA0LCAxLCAKKyAgICAyMTYsIDIyNywgMywgNzMsIDU2LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCA3MywgNTYsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIAorICAgIDczLCA1NiwgOCwgNiwgMSwgMjE0LCAzMywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA3MywgNTcsIDgsIDYsIAorICAgIDEsIDIxNCwgMzMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCA3MywgMjQ4LCAKKyAgICAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjE0LCAzMywgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMTQsIDMzLCAKKyAgICAzLCAyMjQsIDE3NywgNTcsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCA3MywgNTYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCA3MywgCisgICAgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCA3MywgNTcsIDgsIDYsIDEsIAorICAgIDIxMiwgMTIzLCAzLCAyNTEsIDIzOSwgMjYsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDI1MSwgMjM5LCAyNiwgCisgICAgNzMsIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ3LCAxMjYsIDI2LCA3MywgNTYsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAKKyAgICAyNDcsIDEyNiwgMjYsIDczLCA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCAyNDgsIDIyOCwgMjYsIDczLCA1NiwgOCwgNiwgMSwgMjA3LCA4NCwgMywgNzMsIDU2LCAKKyAgICA4LCA0LCAxLCAyMDcsIDg0LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIwNywgODQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjA3LCAKKyAgICA4NCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIAorICAgIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjA3LCA4NCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAKKyAgICAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NSwgNTcsIAorICAgIDgsIDYsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDIwNSwgMjQxLCA1NywgOCwgNiwgMSwgCisgICAgMTA4LCAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIwNSwgMjQxLCAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIwNSwgMjQxLCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI5LCAyNiwgMjQxLCA3NCwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDI0MSwgNzQsIDgsIDYsIDEsIAorICAgIDIwMywgMTY5LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMDMsIDE2OSwgCisgICAgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAxNjksIDgsIDQsIDEsIDIwMSwgCisgICAgMTQ4LCAzLCAxNjksIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMjQxLCAKKyAgICA3NCwgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDczLCA1NiwgOCwgNiwgMSwgCisgICAgMjAxLCAxNDgsIDMsIDczLCA1NywgOCwgNCwgMSwgMjAxLCAxNDgsIDMsIDczLCA1NywgOCwgNiwgMSwgMjAwLCAxOTYsIDMsIAorICAgIDczLCA1NiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjAwLCAxOTYsIDMsIDI0MSwgNzQsIDgsIAorICAgIDQsIDEsIDIwMCwgMTk2LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMDAsIAorICAgIDEyNCwgMywgNzMsIDU2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAKKyAgICAyNDYsIDE0NiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDczLCA1NywgOCwgCisgICAgNiwgMSwgMTk5LCAxNTgsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIyNCwgMTc3LCA1NywgOCwgCisgICAgNCwgMSwgMjM0LCAyNDgsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgCisgICAgMjAxLCAxNDgsIDMsIDIxMywgMjcsIDU2LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA1MSwgMTY3LCAyMTMsIDI2LCA4LCA0LCAxLCAxNjgsIDIxMiwgMTIzLCAzLCA3MywgNTYsIDgsIDQsIDEsIDE2OCwgCisgICAgMjEyLCAxMjMsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAxNjgsIDIxMiwgMTIzLCAzLCAxMjIsIDk3LCA4LCA2LCAxLCAKKyAgICAyMTAsIDc5LCAyMTIsIDEyMiwgOCwgNCwgMSwgMjQxLCAxMzYsIDgsIDYsIDEsIDM1LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDM1LCAzLCA3MywgNTcsIDgsIDYsIDEsIDM1LCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDM1LCAzLCAyMzMsIDE4NywgCisgICAgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDE2OSwgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCAKKyAgICA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIAorICAgIDczLCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgCisgICAgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAKKyAgICAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDgsIDU4LCAyNiwgMTY5LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIAorICAgIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzMsIDE4NywgNTYsIAorICAgIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIAorICAgIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgCisgICAgMjYsIDczLCA1NywgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDE5NywgMywgNzMsIDU3LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDczLCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE5NywgMywgCisgICAgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxOTcsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDIwNSwgMjQwLCA4LCA2LCAKKyAgICAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA2LCAKKyAgICAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIAorICAgIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIAorICAgIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAKKyAgICAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA0LCAKKyAgICAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIAorICAgIDEsIDIzMywgMTksIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMjMzLCAxOSwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMzMsIAorICAgIDE5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDE2MywgMywgNzMsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMzMsIAorICAgIDE4NywgNTYsIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIAorICAgIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNCwgCisgICAgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzMsIAorICAgIDE4NywgNTYsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAxMDgsIDMsIDczLCA1NywgOCwgNCwgMSwgMTA4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxODcsIAorICAgIDU2LCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgCisgICAgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgCisgICAgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxMDgsIAorICAgIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNiwgCisgICAgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDczLCA1NywgCisgICAgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAyMDAsIDEyNCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgCisgICAgMjMzLCAxODcsIDU2LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgCisgICAgMjA1LCAyNDAsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjIxLCAyMDMsIDIyNCwgMTM5LCA4LCAKKyAgICA0LCAxLCAyMjEsIDIwMywgMjI0LCAxMzksIDgsIDYsIDEsIDIyMSwgMjAzLCAyMDMsIDE2OCwgOCwgNCwgMSwgMjIxLCAyMDMsIAorICAgIDIwMywgMTY4LCA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMjI0LCA3NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIyNCwgNzQsIAorICAgIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDEsIDMxLCA0LCAKKyAgICAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgCisgICAgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIwLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDI1MSwgCisgICAgMTEzLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAKKyAgICAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAKKyAgICAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI4LCAKKyAgICAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIAorICAgIDEyNSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgCisgICAgMjMxLCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQxLCAKKyAgICAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIAorICAgIDEsIDIzOCwgMTI1LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjgsIAorICAgIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCAKKyAgICA3NCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIAorICAgIDI0MSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIAorICAgIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDQsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAKKyAgICAyMjgsIDQyLCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIAorICAgIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIAorICAgIDIwLCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MSwgMzEsIAorICAgIDQsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIAorICAgIDgyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgyLCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIAorICAgIDEsIDIxNywgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA0LCAxLCAyMDMsIDIyMSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIAorICAgIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDEsIAorICAgIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgCisgICAgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MSwgMzEsIDQsIDEsIDIxNywgCisgICAgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCAKKyAgICA3NCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgCisgICAgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjgsIAorICAgIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCAKKyAgICA3NCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgCisgICAgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMzEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIzOCwgODAsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIwMywgNzQsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODIsIDMsIAorICAgIDIwMywgNzQsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMDMsIDc0LCAKKyAgICAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIAorICAgIDIxNywgODQsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCAKKyAgICA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIAorICAgIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAKKyAgICAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgCisgICAgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIAorICAgIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAKKyAgICAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIAorICAgIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgCisgICAgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAKKyAgICAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNCwgMSwgCisgICAgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgCisgICAgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAxOTksIDIxOSwgMzEsIAorICAgIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgCisgICAgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAKKyAgICAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgCisgICAgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc1LCAyNiwgMjE0LCAKKyAgICAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIAorICAgIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgCisgICAgMjE0LCAyNDIsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4NCwgMywgMjQxLCAyNDIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAKKyAgICAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAKKyAgICAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTQsIDI0MiwgCisgICAgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIAorICAgIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCAKKyAgICA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgCisgICAgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgCisgICAgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDIsIDE3MCwgMzEsIAorICAgIDQsIDEsIDI1MSwgMTEzLCAzLCAyMjIsIDIyOCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDMsIDc1LCAyNiwgMTk5LCAKKyAgICAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAyMzIsIAorICAgIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgCisgICAgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMDIsIDE3MCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAKKyAgICAyMjIsIDIyOCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgCisgICAgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjQyLCAzMSwgMjI2LCA1OCwgMzEsIDIxNCwgMjQyLCAzMSwgMjE0LCAKKyAgICAyMjgsIDMxLCAyMTYsIDIwLCAzMSwgMjQxLCA2OCwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIAorICAgIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjM4LCA4MCwgCisgICAgMywgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIAorICAgIDEyNSwgMywgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDI0MiwgMzEsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAKKyAgICAyMDIsIDE3MCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgCisgICAgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAKKyAgICAyMjgsIDQyLCAzLCAyMDIsIDE3MCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjI4LCA0MiwgCisgICAgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAKKyAgICAzMSwgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMDIsIDE3MCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyMjIsIDIyOCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAKKyAgICAyNDEsIDY4LCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMTMsIDkxLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxMywgOTEsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgCisgICAgMjAzLCAyMjEsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIxNiwgMjAsIDMxLCA2LCAKKyAgICAxLCAyMDMsIDIyMSwgMywgMjAyLCAxNzAsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjIyLCAyMjgsIDMxLCA2LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxMywgOTEsIDMsIAorICAgIDI0MSwgMjQxLCAzMSwgMjQxLCA2OCwgMjYsIDIwMywgNzQsIDMxLCAyNDEsIDY4LCAyNiwgMjE2LCAyMzEsIDMxLCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgCisgICAgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTYsIDIzMiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4NCwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNiwgMjEsIDI2LCAxOTksIDIxOSwgMzEsIDYsIDEsIAorICAgIDIxNywgODIsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODQsIAorICAgIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgCisgICAgMjQyLCAzMSwgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MSwgMjM4LCAxODAsIDIxNCwgOTQsIDIzOCwgMTkxLCAyMTQsIDk0LCAKKyAgICAyMzgsIDE4MCwgMjA4LCAyNDQsIDIzOCwgMTkxLCAyMDgsIDI0NCwgMjA2LCA0MSwgMjA4LCAyNDQsIDIzNiwgMjI3LCAyMDgsIAorICAgIDI0NCwgMjA5LCAxMDQsIDIwOCwgMjQ0LCAyMzcsIDEwMiwgMjA4LCAyNDQsIDIxNCwgMjEyLCAyMDgsIDI0NCwgMjA2LCA3NywgCisgICAgMjA4LCAyNDQsIDIzNCwgMjIyLCAyMDgsIDI0NCwgMTk5LCA4MiwgMjAxLCAyNSwgMjA4LCAyNDQsIDE5OSwgODIsIDIwMSwgCisgICAgMjUsIDIxOCwgMjMyLCAxOTksIDgyLCAyMDEsIDI1LCAyMjcsIDE2MSwgMjI1LCAxOSwgODEsIDIxMywgMzcsIDgxLCAyMzMsIAorICAgIDMzLCAyMTgsIDIzMywgMjMzLCAzMywgMjM3LCAxMDIsIDI0MSwgMjQ0LCAyMzgsIDE4MCwgMjQxLCAyNDQsIDIzOCwgMTkxLCAKKyAgICAyNDEsIDI0NCwgMjMzLCAxNzcsIDE0OCwgNTMsIDgzLCAyMjQsIDE3NiwgNTMsIDEyOCwgMjI0LCAxNzYsIDQ5LCAyMDksIAorICAgIDEzOSwgMjE0LCA2MywgODEsIDUxLCAyMDksIDEzOSwgMjE0LCA2MywgODEsIDIwOSwgMTM5LCAyMjQsIDU4LCAyMTQsIDYzLCAKKyAgICA4MSwgMjA5LCAxMzksIDIzNCwgNTYsIDIxNCwgNjMsIDgxLCA0OSwgNTMsIDIxNCwgNjMsIDgxLCA1MSwgNTMsIDIxNCwgNjMsIAorICAgIDgxLCA1MywgMjI0LCA1OCwgMjE0LCA2MywgODEsIDUzLCAyMzQsIDU2LCAyMTQsIDYzLCA4MSwgMjQyLCA0MCwgNTMsIDI0MiwgCisgICAgNDAsIDI0OCwgMjAsIDIwNSwgOTUsIDI0OCwgMjAsIDExMiwgNzMsIDIyNSwgMzgsIDEyMCwgNzMsIDIyNSwgMzgsIDIzMywgCisgICAgMTc3LCAyMzgsIDE5NSwgMjMzLCAzMSwgMjE1LCA5OSwgMjI0LCAxNzcsIDIxMCwgMTU0LCAyMTYsIDEyOCwgMjEwLCAxNTQsIAorICAgIDIyNSwgMTksIDIzOCwgMTg5LCAyMTMsIDM3LCAyMzgsIDE4OSwgMjE1LCA3OCwgMjQxLCA4LCAyMzYsIDI0MCwgMjI1LCAxOSwgCisgICAgMjE2LCAyMzksIDIxMywgMzcsIDIxNiwgMjM5LCAyMjAsIDEyNCwgMjE4LCAyNDAsIDIwOCwgMjQ0LCAyMTYsIDI4LCAyMjEsIAorICAgIDE3MCwgNTQsIDIxNiwgMjgsIDIwNiwgMTY3LCAyMDYsIDUxLCA1NCwgMjE1LCAxNCwgNTMsIDIxNSwgMTQsIDIwNSwgODMsIAorICAgIDIxNSwgMTQsIDIxMywgMTA1LCAyMTUsIDE0LCAyMTMsIDEwNSwgNTMsIDIxNSwgMTQsIDIxMywgMTA1LCAyMDUsIDgzLCAKKyAgICAyMTUsIDE0LCAyNDcsIDEyOSwgMjA5LCAxMzksIDIyNSwgMjMsIDI1MSwgNzEsIDIxNCwgNjMsIDgxLCAyMDksIDEzOSwgCisgICAgMjEzLCA0MSwgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIxMywgMTY2LCA4MSwgNTMsIDIzOCwgNDMsIDgxLCAyMjgsIDU4LCAKKyAgICAyMTYsIDI0MSwgMjAzLCAyNDgsIDE3MSwgMjA2LCA3LCAyNDcsIDEzMCwgMjI4LCA3NSwgMjE1LCA5OSwgMjUwLCAxNjMsIAorICAgIDIzMywgMzQsIDI0OCwgMjAsIDIzNiwgMjE5LCAyMDksIDc1LCA0OSwgNTIsIDI0OCwgNzAsIDMsIDIxNCwgNzMsIDUxLCA1MiwgCisgICAgMjQ4LCA3MCwgMywgMjE0LCA3MywgNTMsIDIxNCwgNzksIDgxLCAyMTQsIDc5LCAyMzgsIDQzLCA4MSwgMjM4LCA0MywgMjE0LCAKKyAgICA3OSwgODEsIDIwNSwgMjE2LCAyLCAyMzgsIDgxLCAyMTMsIDEwNSwgMjE1LCAxNjMsIDU0LCA2MywgOTgsIDI0OCwgMjAsIAorICAgIDYzLCA4NywgMjQ4LCAyMCwgMTI4LCAyNTAsIDE2NSwgMjEzLCAxMDUsIDIxMCwgMTY3LCAyNDYsIDExMSwgMjAzLCAyMjgsIAorICAgIDEyMCwgMjUwLCAxNjQsIDI1MSwgMTI4LCAyMDIsIDI0NywgMjQ2LCA2OCwgMjIxLCAxNTcsIDU0LCAyMDcsIDE2NywgMjQxLCAKKyAgICAyNDQsIDIyOCwgNTAsIDIwMywgMjQ4LCAyMzcsIDI1LCAyMTQsIDIxMiwgODEsIDEyNiwgNzMsIDIxNCwgMjExLCAyMTQsIAorICAgIDkwLCAyMTUsIDE0LCAyMzYsIDIyOSwgNzMsIDIxNCwgMjExLCAyMzcsIDYxLCA3MywgMjE0LCAyMTEsIDEyMCwgNzMsIDIxNCwgCisgICAgMjExLCAyMzYsIDIyOSwgNzMsIDgxLCAyMzksIDE4MCwgMjQyLCAyMzQsIDIwNSwgOTQsIDgzLCAyMzYsIDIyOSwgMjQwLCAKKyAgICAxODAsIDIyMiwgNjYsIDEzLCAyMDgsIDI0NCwgMjAwLCAyMzgsIDIyNywgMTYxLCAyMzYsIDE4MSwgMjUxLCA4LCAyMjgsIAorICAgIDQ4LCAyMDUsIDIzMiwgMjI4LCA0OCwgMjEwLCAxNTQsIDIyOCwgNDgsIDIxNSwgMTEzLCAyMjUsIDE5LCAyMjgsIDE4LCAKKyAgICAyMTMsIDM3LCAyMjgsIDE4LCAyMzcsIDczLCAyMDgsIDMzLCAyMjgsIDE4LCAyMTUsIDc4LCAyNDEsIDgsIDIyOCwgMTgsIAorICAgIDIyOCwgODcsIDIwNywgMTE1LCAyMDcsIDE4NCwgMjUxLCAyNDEsIDIwNywgMTE1LCAyMDcsIDE4NCwgMjI4LCA4NywgOSwgCisgICAgMjM2LCAyNDIsIDIxMCwgODQsIDI1MSwgMjQxLCA5LCAyMzYsIDI0MiwgMjEwLCA4NCwgMjIwLCAxMTgsIDE3LCAyMTAsIDg1LCAKKyAgICAyMTgsIDIzNiwgMTcsIDIxMCwgODUsIDIwNywgMjEzLCAxOTksIDgxLCAyMDcsIDIxMywgOCwgNCwgMSwgNzAsIDIwNywgCisgICAgMjEzLCAxNDksIDIwNywgMjEzLCAxNjQsIDIwNywgMjEzLCAxODcsIDIwNywgMjEzLCAyMTAsIDEzNSwgMjA3LCAyMTMsIAorICAgIDE5MiwgMjA3LCAyMTMsIDIxOSwgMTEzLCAyMDcsIDIxMywgOTMsIDU0LCAyMDcsIDIxMywgMjIxLCAxNTYsIDIwNywgMjEzLCAKKyAgICAyMzgsIDEyMiwgNTQsIDIwNywgMjEzLCA0OSwgMjE2LCAxMTUsIDIwNywgMjEzLCA1MSwgMjE2LCAxMTUsIDIwNywgMjEzLCAKKyAgICA4LCA0LCAxLCAyMjAsIDIxNCwgMjA4LCA0LCAxOTksIDgxLCAyMDgsIDQsIDEwMiwgMjA4LCA0LCAxMDUsIDIwOCwgNCwgCisgICAgMTQ3LCAyMDgsIDQsIDE0OSwgMjA4LCA0LCAxNjQsIDIwOCwgNCwgMTg3LCAyMDgsIDQsIDIxMCwgMTM1LCAyMDgsIDQsIAorICAgIDE5MiwgMjA4LCA0LCAyMTksIDExMywgMjA4LCA0LCA5MywgNTQsIDIwOCwgNCwgMjIxLCAxNTYsIDIwOCwgNCwgMjM4LCAKKyAgICAxMjIsIDU0LCAyMDgsIDQsIDQ5LCAyMTYsIDExNSwgMjA4LCA0LCA1MSwgMjE2LCAxMTUsIDgsIDIwOCwgNCwgNCwgMSwgNjIsIAorICAgIDgsIDIwOCwgNCwgNCwgMSwgNzIsIDgsIDIwOCwgNCwgNCwgMSwgNzQsIDgsIDIwOCwgNCwgNCwgMSwgMjAwLCAxOTUsIDgsIAorICAgIDIwOCwgNCwgNCwgMSwgMjExLCAyMTgsIDgsIDIwOCwgNCwgNCwgMSwgMjM0LCAyNDcsIDgsIDIwOCwgNCwgNCwgMSwgMjI3LCAKKyAgICAxMTgsIDgsIDIwOCwgNCwgNCwgMSwgMTU2LCA4LCAyMDgsIDQsIDQsIDEsIDIyMywgMjQzLCA4LCAyMDgsIDQsIDQsIDEsIAorICAgIDIyMCwgMjE0LCA4LCAyMDgsIDQsIDQsIDEsIDIxNiwgMjI2LCA4LCAyMDgsIDQsIDQsIDEsIDIxMiwgMTIyLCA4LCAyMDgsIAorICAgIDQsIDQsIDEsIDIwNywgODMsIDIzOCwgNjAsIDU0LCAyNDYsIDgwLCA1NCwgMjQyLCAyMTksIDU0LCAyMzYsIDIwOSwgMjM2LCAKKyAgICAyMTMsIDU0LCAyMjQsIDE1NiwgNTQsIDIyMSwgMTcxLCA1NCwgMjIwLCAxNDEsIDU0LCAyMTYsIDUsIDU0LCAyMTIsIDE0OSwgCisgICAgNTQsIDIwMCwgMjQ2LCA1NCwgMjIwLCA4LCAyMTAsIDUxLCA1NCwgMjQwLCAxODksIDU0LCAyMzgsIDYxLCA1NCwgMjI2LCAKKyAgICAxNDIsIDU0LCAyMDQsIDIwOCwgNTQsIDIzOSwgMTYzLCA1NCwgMjM1LCAyNDYsIDIxNiwgNDAsIDU0LCAyMTYsIDIsIDU0LCAKKyAgICAyMzUsIDQ1LCA1NCwgMjUwLCAxMjksIDU0LCAyMzMsIDEwMywgNTQsIDI0NywgNzEsIDU0LCAyMjQsIDE0NiwgMjA1LCAxMzgsIAorICAgIDU0LCAyMDgsIDIyNSwgNTQsIDIwNiwgMTY0LCA1NCwgMjI4LCAxMDIsIDIxMiwgMTQ5LCA1NCwgMjA0LCAxODgsIDIyNCwgCisgICAgMTU2LCA1NCwgMjE4LCAyMjIsIDEzNCwgNTQsIDIyMiwgMTc4LCA1NCwgMjEyLCAxNzIsIDU0LCAyMjUsIDY3LCA1NCwgMzgsIAorICAgIDQ5LCAyMzQsIDE2MSwgNTYsIDM4LCA1MSwgMjM0LCAxNjEsIDU2LCAzOCwgMTY4LCA4MywgMjI0LCAxNzcsIDIxNiwgMjQyLCAKKyAgICAzOCwgMjA5LCAyNTAsIDgzLCAyMjQsIDE3NywgMjE2LCAyNDIsIDM4LCAyNTEsIDQ3LCA1NSwgNTYsIDM4LCAyNDYsIDExMiwgCisgICAgNTUsIDU2LCAzOCwgNDksIDU1LCA1NiwgMzgsIDUxLCA1NSwgNTYsIDM4LCAyMTMsIDI3LCAyMTYsIDI0MiwgMzgsIDI0NiwgCisgICAgMTEyLCAyMTMsIDI3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNDcsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMTI2LCAxOTAsIDU2LCAKKyAgICAzOCwgMjM2LCAyMjksIDE5MCwgNTYsIDM4LCAyMzgsIDE3NSwgMjQ2LCAxNTUsIDM4LCAyMzgsIDE3NSwgMjA4LCAxOTMsIAorICAgIDM4LCAyMzgsIDE3NSwgMjQxLCA2NCwgMzgsIDIzOCwgMTc1LCAyNDYsIDE1NiwgMjQ5LCAxMjQsIDM4LCA0OSwgNTEsIDU1LCAKKyAgICA1NiwgMzgsIDIzOCwgMTc1LCAyMTEsIDIwOSwgMzgsIDIzOCwgMTc1LCAyMjYsIDIxMCwgMzgsIDIzOCwgMTc1LCAyMDMsIAorICAgIDIxOCwgMjE1LCA5NiwgMjA1LCA5OCwgMzgsIDIxMywgMTA2LCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDUzLCA4MywgMjA4LCAKKyAgICA0NywgMjE2LCAyNDIsIDM4LCAyNTEsIDU3LCA5OSwgMzgsIDIwNSwgODMsIDIwMywgMjUwLCAzOCwgMjAxLCAyOCwgMjQ4LCAKKyAgICA1MSwgNTYsIDM4LCA5OCwgNTUsIDIxNiwgMjQyLCAzOCwgMTY4LCA1MywgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA4NywgCisgICAgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjUsIDM4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAxNjUsIDM4LCA0OSwgCisgICAgNTUsIDU3LCAzOCwgNTEsIDU1LCA1NywgMzgsIDI1MCwgMTY2LCA1NiwgMjUxLCAyNDcsIDIxNywgMTE3LCAyNTEsIDIzMSwgCisgICAgMjA1LCAxODYsIDIwNiwgMTA3LCAyMDgsIDEzLCAxNzUsIDYsIDI0NywgMjIzLCAyNDEsIDE1NSwgMjQ3LCA2MSwgMjQ3LCAKKyAgICA1NiwgMjI0LCAxNzcsIDk5LCAyNDcsIDEzMSwgMjE3LCAxMTcsIDI0NywgMTgyLCAyMDQsIDQsIDIzOCwgNjIsIDI0MywgNTAsIAorICAgIDIxMSwgMjA2LCAyNDEsIDE1NSwgMjM3LCAxNzcsIDEzNSwgNCwgMjM2LCAxNTYsIDEzNSwgNiwgMjM0LCAyNDcsIDI0OCwgCisgICAgMTQyLCA2LCAyMzQsIDI0NywgMTc1LCA2LCAyMzQsIDI0NywgMjE1LCAxMzAsIDI0MywgNTAsIDIxNSwgMTMwLCAyNDMsIDUxLCAKKyAgICAxMTksIDEyMCwgMjE1LCAyMDQsIDEzNSwgNiwgNzAsIDI0OCwgMTQyLCA2LCA3MCwgMTM1LCA2LCAxNTYsIDEzNSwgNCwgCisgICAgMTU2LCAyMjUsIDE5MywgNjgsIDI0OSwgNzcsIDk5LCAxNzUsIDYsIDIyMCwgMjE0LCAyMTgsIDkxLCA1NCwgMjA5LCAxLCAKKyAgICAyMTMsIDE3OCwgMjQzLCAxOCwgMTM1LCA2LCAyMTYsIDIyNiwgMTc1LCA2LCAyMTYsIDIyNiwgMTc1LCA2LCAyMTQsIDE2NywgCisgICAgMTM1LCA2LCAxNDYsIDI0OCwgMTQyLCA2LCAxNDYsIDE3NSwgNiwgMTQ2LCAyMTUsIDIxLCAyMDYsIDI1NSwgMjEzLCAxMTgsIAorICAgIDIxMCwgMTQ2LCA4MSwgMjA2LCAxNzYsIDU0LCAyMDUsIDEyOCwgMTM0LCA1NCwgMjAzLCA0MywgMTc1LCA2LCAxOTksIDE1NywgCisgICAgMjE3LCAyLCA1NCwgMjE3LCAxMDcsIDU0LCAyMjgsIDUwLCAyMTcsIDEwNywgNTQsIDI0OCwgMTQyLCA2LCAxOTksIDE1NywgCisgICAgMjA0LCAxODUsIDMxLCA0LCAxLCAyMjgsIDQxLCAyMjYsIDI1MSwgNTQsIDI1MSwgNjYsIDU0LCAxMzUsIDYsIDI1MCwgMTAzLCAKKyAgICAyNDgsIDE0MiwgNiwgMjQ3LCAyMjMsIDIzOCwgODYsIDk5LCAxMzUsIDQsIDcyLCAxMzUsIDYsIDcyLCAxMzUsIDYsIDIzOCwgCisgICAgNSwgMjA0LCAxODUsIDYsIDIzOCwgNSwgMTM1LCA2LCAyMjMsIDI0MywgMTM1LCA0LCA3NCwgMTQwLCA5OSwgMjQ4LCAyMTEsIAorICAgIDk5LCAyMzUsIDE0OCwgOTksIDI0MiwgMjQsIDk5LCAyMjgsIDkyLCAyMDgsIDI1NSwgMjEyLCAyMjgsIDYsIDIxNCwgMTY3LCAKKyAgICAyMzcsIDE4MCwgNTQsIDE3NSwgNCwgMjE1LCAyMDQsIDE3NSwgNCwgMjM2LCA2MCwgMTc1LCA2LCAyMzYsIDYwLCAxNzUsIDYsIAorICAgIDIxNSwgMjA0LCAxNzUsIDIyMCwgMjEzLCAyMDcsIDIzMSwgMjA0LCAxODUsIDQzLCA2LCAyMzYsIDE1NiwgMjA0LCAxODUsIAorICAgIDQzLCA2LCAxNTYsIDIxMywgMTA1LCA0MywgNiwgMTU2LCAyMDQsIDE4NSwgNDMsIDYsIDIwMCwgMTIzLCAxNzUsIDM5LCA2LCAKKyAgICAyNDIsIDE1MywgMTc1LCAzOSwgNCwgMjQyLCAxNTMsIDE3NSwgMzksIDQsIDcyLCAxNzUsIDM5LCA0LCA3MCwgMTc1LCAzOSwgCisgICAgNCwgMjI3LCAyNTEsIDIxNCwgMjQ1LCAyMjQsIDE3NiwgMjA0LCAxODUsIDI1MSwgODksIDIxNiwgMjgsIDU0LCAyNTEsIAorICAgIDE1MywgMjA0LCAxODUsIDQsIDIzOCwgNSwgMTYsIDM2LCAyMTIsIDIyLCAyMDgsIDI1NSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIxMCwgMTMxLCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjE5LCAxMDcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgCisgICAgMTEyLCAyMDYsIDE1NywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIwNiwgNzQsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTIwLCAKKyAgICAyMDYsIDcxLCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjM3LCAxMDcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTIwLCAyMzcsIAorICAgIDEwNiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIzNywgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDIzNiwgMjI5LCAKKyAgICAyMzcsIDEwNiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjM3LCA2MSwgCisgICAgMjA5LCA5NCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjM4LCAKKyAgICAyMjUsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjM3LCA2MSwgMjM4LCAyMjUsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjEwLCAxMzYsIAorICAgIDIzOCwgMjI1LCAyMzYsIDIxOSwgMjE4LCA5MiwgMTAyLCAyMTIsIDI0MCwgMjE4LCA5MywgMTAyLCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMTA1LCAyMTIsIDI0MCwgMjE4LCA5MywgMTQ3LCAyMTIsIDI0MCwgMjE4LCA5MywgMTQ5LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMTY0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTg3LCAyMTIsIDI0MCwgMjE4LCA5MywgMjEwLCAxMzUsIDIxMiwgMjQwLCAKKyAgICAyMTgsIDkzLCAxOTIsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTksIDExMywgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNiwgMTY2LCAKKyAgICAyMTIsIDI0MCwgMjE4LCA5MywgMjM4LCAxOTksIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDQsIDE2NCwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDIzNywgMTA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMzMsIDgyLCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAKKyAgICA2MSwgMjMzLCA4MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MCwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDEwMiwgCisgICAgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDEwNSwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE0NywgNCwgMjEyLCAyNDAsIDIxOCwgCisgICAgOTMsIDE0OSwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE2NCwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDE4NywgNCwgMjEyLCAKKyAgICAyNDAsIDIxOCwgOTMsIDIxMCwgMTM1LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTkyLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgCisgICAgMjE5LCAxMTMsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDYsIDE2NiwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzOCwgMTk5LCAKKyAgICA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjA0LCAxNjQsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIDEwNCwgNCwgMjEyLCAKKyAgICAyNDAsIDIxOCwgOTMsIDExMiwgMjMzLCA4MiwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgNjEsIDIzMywgODIsIDQsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIwNiwgNTAsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIwNiwgNTEsIDI0NywgCisgICAgMjI0LCAyNDIsIDE1MywgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgNjEsIDIwNiwgNTAsIDIxMiwgMjQwLCAyMTgsIDkzLCAKKyAgICAyMDYsIDE2NywgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIxMywgMTA1LCAxMTIsIDIzMywgODIsIDgsIDQsIDEsIAorICAgIDIxMywgMTA1LCAyNDcsIDIyMywgMjEyLCAyNDAsIDIxOCwgOTMsIDIwOSwgMTA2LCAyMjUsIDYyLCAxOSwgMjEyLCAyNDAsIAorICAgIDIxOCwgOTMsIDIzNywgMTA1LCAyMzksIDIwLCAxOSwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgMTA1LCAyMDYsIDUwLCAKKyAgICAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMzMsIDgzLCAyMDYsIDUwLCAyMDEsIDE2NCwgMjM2LCAyMTksIDE5OSwgODIsIAorICAgIDIwNiwgNzEsIDIwNCwgMTg1LCAxNywgMTA1LCAyMDQsIDE4NSwgMTcsIDE0NywgOTgsIDQ4LCAxODIsIDQ4LCA4NywgNDgsIAorICAgIDE5MSwgNDgsIDQ5LCA1MSwgNDgsIDExNSwgMTI3LCA0OCwgMTU3LCAyMDEsIDQ4LCA0OCwgMTU3LCAyMzksIDE0LCA0OCwgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDgsIDk4LCA1NSwgMywgOTcsIDg3LCA1NSwgMywgCisgICAgOTcsIDk4LCAyMDEsIDc4LCA0OCwgODcsIDIwMSwgNzgsIDQ4LCA5OCwgMTIwLCAyMzQsIDEzNCwgNDgsIDE4MiwgMTIwLCAKKyAgICAyMzQsIDEzNCwgNDgsIDg3LCAxMjAsIDIzNCwgMTM0LCA0OCwgMTkxLCAxMjAsIDIzNCwgMTM0LCA0OCwgOTgsIDU1LCAzLCAKKyAgICAyMDcsIDYsIDg3LCA1NSwgMywgMjA3LCA2LCA5OCwgNTUsIDIzNiwgMjAxLCAxNDgsIDE4MiwgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDg3LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTkxLCA1NSwgMjM2LCAyMDEsIDE0OCwgMTE1LCAxMjcsIDU1LCAzLCAyNDksIDY0LCAKKyAgICA5OCwgNTUsIDMsIDExNywgODcsIDU1LCAzLCAxMTcsIDk4LCA1NSwgMywgMjI0LCA3NCwgODcsIDU1LCAzLCAyMjQsIDc0LCAKKyAgICA0OSwgNTEsIDIwMSwgNzgsIDQ4LCA0OSwgNTEsIDU1LCAzLCA5NywgMTkxLCAxOTksIDI3LCA0OCwgMTgyLCA1NSwgMywgCisgICAgMjA1LCAyMjQsIDIyNSwgMTgsIDE4MiwgNTUsIDMsIDIwNSwgMjI0LCAyMTMsIDM1LCAxOTEsIDU1LCAzLCAyMDUsIDIyNCwgCisgICAgMjI1LCAxOCwgMTkxLCA1NSwgMywgMjA1LCAyMjQsIDIxMywgMzUsIDg3LCA1NSwgMywgMjQzLCAxNiwgMjM5LCAxNjUsIAorICAgIDE5MSwgNTUsIDMsIDI0MywgMTYsIDIyNSwgMTgsIDI1MSwgNDcsIDIwNSwgMTU4LCAyMTAsIDE3MCwgNDgsIDI0NiwgMTEyLCAKKyAgICAyMDUsIDE1OCwgMjEwLCAxNzAsIDQ4LCAxNTcsIDIwMSwgNDgsIDU1LCAyMDUsIDE4NiwgMTY4LCAxNDgsIDk4LCA1NSwgCisgICAgMjA1LCAxODYsIDI0OSwgNzcsIDExOSwgODcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAyNTEsIDQ3LCAxNzYsIDI0NiwgMTU2LCAKKyAgICA0OCwgMjQ2LCAxMTIsIDE3NiwgMjQ2LCAxNTYsIDQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMjAzLCAyMTYsIDk4LCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDM1LCAxODIsIDIzNCwgMTYxLCAzLCAKKyAgICAxNTQsIDIyNSwgMTgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMDMsIDIxNiwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgCisgICAgMTY1LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgMzUsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjI1LCAxOCwgODcsIAorICAgIDU1LCAxMTksIDk4LCA0OCwgMTgyLCA1NSwgOTgsIDc2LCAxOTEsIDQ4LCA5OCwgNTUsIDExOSwgODcsIDQ4LCA5OCwgMjE2LCAKKyAgICAxODgsIDI1MCwgMTk5LCAxODIsIDIxNiwgMTg4LCAyNTAsIDE5OSwgODcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgMTkxLCAyMTYsIAorICAgIDE4OCwgMjUwLCAxOTksIDk4LCAyMzQsIDE2MSwgMTE5LCA4NywgMjM0LCAxNjAsIDg3LCAyMzQsIDE2MSwgMTE5LCA5OCwgCisgICAgMjM0LCAxNjAsIDk4LCA1MywgNTUsIDMsIDk3LCA0OSwgNTEsIDUzLCA1NSwgMywgOTcsIDg3LCA1MywgNTUsIDMsIDk3LCAKKyAgICA5OCwgNTMsIDQ4LCAxODIsIDUzLCA0OCwgODcsIDUzLCA0OCwgMTkxLCA1MywgNDgsIDQ5LCA1MSwgNTMsIDQ4LCAxMTUsIAorICAgIDEyNywgNTMsIDQ4LCAxNTcsIDIwMSwgNDgsIDUzLCA0OCwgMTU3LCAyMzksIDE0LCA1MywgNDgsIDIwOCwgMjU0LCAyMzksIAorICAgIDE0LCA1MywgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA1MywgNDgsIDk4LCAyMDUsIDgzLCA0OCwgODcsIDIwNSwgODMsIDQ4LCAKKyAgICA5OCwgMjA4LCAxODYsIDQ4LCA4NywgMjA4LCAxODYsIDQ4LCAxODIsIDU1LCAzLCA1MywgOTcsIDE5MSwgNTUsIDMsIDUzLCAKKyAgICA5NywgOTgsIDI0MSwgMjQzLCA0OCwgMTgyLCAyNDEsIDI0MywgNDgsIDg3LCAyNDEsIDI0MywgNDgsIDE5MSwgMjQxLCAyNDMsIAorICAgIDQ4LCA5OCwgNTUsIDIwNSwgMTg2LCAxNDgsIDg3LCA1NSwgMjA1LCAxODYsIDE0OCwgOTgsIDY0LCA0OCwgMTgyLCA2NCwgCisgICAgNDgsIDg3LCA2NCwgNDgsIDE5MSwgNjQsIDQ4LCAxODIsIDY0LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTgyLCA2NCwgNTUsIAorICAgIDIxNywgNzksIDIxNiwgNjQsIDE4MiwgNjQsIDU1LCAyMTcsIDc5LCAyMTYsIDY1LCAzLCAyMzMsIDE3NywgMTQ4LCAxODIsIAorICAgIDY0LCA1NSwgMjE3LCA3OSwgMjE2LCA2NSwgMywgODMsIDE0OCwgMTgyLCA2NCwgNTMsIDQ4LCAxODIsIDY0LCA1MywgNTUsIAorICAgIDIxNywgNzksIDIxNiwgNjQsIDg3LCA2NCwgNTUsIDIzNiwgMjAxLCAyMDEsIDEwMiwgMTU3LCAyMDEsIDQ4LCA1NSwgMjA1LCAKKyAgICAxODYsIDI0MywgMTUsIDIwOCwgMjU0LCAyMzksIDE0LCA1NSwgMjA1LCAxODYsIDI0MywgMTUsIDExNSwgMTI3LCA2NCwgNDgsIAorICAgIDUxLCA1NSwgMywgNCwgMjQ2LCAxNTUsIDE5MSwgNTUsIDk4LCA3NiwgMTgyLCA0OCwgMTI2LCA4NywgMjUwLCAxOTksIDk4LCAKKyAgICA1NSwgMywgODMsIDk3LCA4NywgNTUsIDMsIDgzLCA5NywgNDksIDUxLCA1NSwgMywgODMsIDk3LCA5OCwgNTUsIDMsIDUzLCAKKyAgICA4MywgOTcsIDg3LCA1NSwgMywgNTMsIDgzLCA5NywgNDksIDUxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDIxNywgNTEsIAorICAgIDQ4LCA4NywgMjE3LCA1MSwgNDgsIDQ5LCA1MSwgMjE3LCA1MSwgNDgsIDM2LCAyNTEsIDEyNCwgMjQ2LCA2NSwgMjE2LCAKKyAgICAxMDgsIDI0MSwgNDgsIDIwNiwgOTcsIDIzOCwgMzgsIDIwNiwgOTcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjM4LCAzOSwgCisgICAgMjM4LCAxODEsIDIxMCwgMTQxLCAyMjgsIDEwNiwgMjIwLCAxNTIsIDIzOCwgMjAyLCAyMTcsIDExNywgMjE4LCAyMTUsIAorICAgIDI1MSwgODYsIDIzOCwgMjAyLCAyMTcsIDExNywgNCwgMjM4LCAyMDIsIDIxNywgMTE3LCAyNDMsIDQ0LCAyNTAsIDE4OSwgCisgICAgMjIyLCA0NCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIDQ2LCAyNTAsIDE4OSwgMjIyLCA0NCwgNCwgMjQzLCA0NCwgMjUwLCAKKyAgICAxODksIDIyMiwgNDQsIDIzOCwgMTcxLCA3NiwgMjE0LCAyNDcsIDIyMCwgMjEzLCAyMTUsIDEsIDIyMCwgMjEzLCAyNDMsIAorICAgIDIxLCAyMjAsIDIxMywgMjA3LCAyMzEsIDIyMSwgMTU3LCA1NCwgMjIxLCAxNTUsIDU0LCA3MywgMjE1LCAxMTMsIDI0MCwgCisgICAgMjM1LCAyMDksIDc1LCAyMTAsIDE0MiwgMjIxLCAxNTYsIDI1MCwgMTY2LCAyMTcsIDQzLCAyMTMsIDI3LCAyMTcsIDQzLCAKKyAgICAyNDgsIDIxLCAyMTcsIDQzLCA1MiwgMjEyLCAyMzQsIDI0MiwgMjEwLCAyMTIsIDIzNCwgMjM2LCAyMjIsIDIxMiwgMjM0LCAKKyAgICAyMTQsIDI0MywgMTM4LCAyMjgsIDk0LCA1MSwgMjUxLCA3MCwgMjUxLCA3MCwgMjIyLCA3MywgMjUxLCA3MCwgMjA4LCAyMjQsIAorICAgIDI1MSwgNzAsIDI0MCwgMjM3LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MCwgMjQxLCAyMTYsIDEyMSwgMTM4LCAyMTgsIDIxNSwgCisgICAgMjE2LCAxMjEsIDEzOCwgMjI0LCA5OCwgMjUxLCA3OSwgMjI0LCA5OCwgMjE3LCAzMywgMjI4LCA1NSwgMjAzLCAyNDEsIAorICAgIDIyOCwgNjksIDUzLCAyMjgsIDY5LCAyMDUsIDgzLCAyMjgsIDY5LCAyNDMsIDM4LCAyMjgsIDY5LCAyMDcsIDIwMywgMjI4LCAKKyAgICA2OSwgMjAyLCAxODEsIDIyOCwgNjksIDI0NiwgMTEyLCAyMjgsIDY5LCAyNDYsIDExMiwgMjQzLCAzOCwgMjI4LCA2OSwgCisgICAgMjUxLCA0NywgMjQzLCAzOCwgMjI4LCA2OSwgMjA2LCA5NiwgMjQ4LCAyNTQsIDIxMywgMjAwLCAyMTQsIDI0NCwgNzMsIAorICAgIDIyMSwgMTU2LCAyMzgsIDQ2LCAyMzUsIDI1MiwgMjE0LCAyNDQsIDIzMywgMTkyLCAyMDUsIDI0MSwgMjE3LCA0MywgMjEzLCAKKyAgICAxMDUsIDIwNSwgMjQwLCAyMjgsIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgMjA5LCAxNDEsIDIwMSwgNzcsIDIwMCwgMjI2LCAKKyAgICAyMTUsIDEsIDIxOCwgMjE1LCAyMDUsIDI0MCwgMjIxLCAxNTcsIDIwNSwgMjQwLCAyNTAsIDE1OSwgMTYwLCAxMzgsIDIxOCwgCisgICAgMjE1LCAyNTAsIDE1OSwgMTYwLCAxMzgsIDI1MSwgNCwgMTYwLCAxMzgsIDI1MSwgNCwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAKKyAgICAyNTEsIDI0MCwgMTYwLCAxMzgsIDIyMCwgMjYsIDI1MSwgNCwgMjE4LCAyMjQsIDI1MSwgMjQwLCAxNjAsIDEzOCwgMjUxLCAKKyAgICAxMTcsIDE2MCwgMTM4LCAyMTgsIDIxNSwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyNTEsIDExNywgMTYwLCAyMTcsIDM0LCAxNjAsIAorICAgIDEzOCwgMjA1LCA4MywgMjA1LCAyNDAsIDI1MSwgMTI1LCAxNjAsIDEzOCwgMjM4LCAxMTcsIDEzOCwgMjM1LCAyNTEsIDIzOCwgCisgICAgMTE3LCAxMzgsIDI0MSwgNDksIDI0OCwgMjA1LCAyNTEsIDYsIDIwNiwgMTA3LCAyMjQsIDE4NCwgMjM1LCAyNTEsIDE2MCwgCisgICAgMTM4LCAyNTEsIDQsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIwNiwgMTA3LCAyMjgsIDEzMywgMjE3LCAxMTcsIDIyOCwgCisgICAgMTMzLCA3NiwgMjE3LCAzNCwgMjUxLCA0LCAxNjAsIDEzOCwgMjQ2LCA4MCwgMjM4LCAxMjEsIDIzOCwgMTIyLCAyNDYsIDc5LCAKKyAgICAyMTMsIDI3LCAyMjgsIDExOCwgMTYwLCAxMzgsIDIxMywgMjcsIDE2MCwgMTM4LCAyNDMsIDksIDEzOCwgMjM4LCA4NSwgCisgICAgMjM4LCAxMjAsIDEzOCwgMjA4LCAxMTAsIDIzOCwgMTIxLCAyNDEsIDEzNywgMTYwLCAxMzgsIDE2MCwgMjA1LCAxODYsIAorICAgIDI0NywgMjM1LCAyNDEsIDE1NiwgMjIyLCA3MywgMjQ3LCAyMzQsIDIxNCwgNzcsIDE2MCwgMTM4LCAyMTgsIDIxNSwgMTYwLCAKKyAgICAxMzgsIDIzMiwgMjIzLCAxMzgsIDIxOCwgMjE1LCAyMzIsIDIyMywgMTM4LCAyMDgsIDU0LCAyMzgsIDExNywgMTM4LCAyMjQsIAorICAgIDI0MSwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzNSwgNjcsIDIxNywgMzQsIDE2MCwgMTM4LCAyMjQsIDI0MSwgMTE5LCAxNjAsIAorICAgIDEzOCwgMjM1LCA2NywgMTE5LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIzNSwgCisgICAgNjcsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIyMSwgMzUsIDIyNCwgMjQwLCAyMjEsIDM1LCAyMzUsIDY2LCAKKyAgICAyNDgsIDIwNSwgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxOCwgMjE1LCAyMjQsIDI0MCwgMjE4LCAyMTUsIDIzNSwgNjYsIAorICAgIDIyMCwgMjYsIDIyNCwgMjQxLCAyMTgsIDIyNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAxNjAsIAorICAgIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIzOCwgMTE3LCAxMzgsIDIzNSwgNjcsIDIxNywgMzQsIDIzOCwgMTE3LCAxMzgsIAorICAgIDIyMCwgMjYsIDIyNCwgMjQxLCAyMTgsIDIyNCwgMjM4LCAxMTcsIDEzOCwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIAorICAgIDIzOCwgMTE3LCAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMzUsIDY2LCAyMzUsIDY3LCAyMTcsIDM0LCAyMjQsIDI0MCwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAyMzUsIDY2LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgMjI0LCAKKyAgICAyNDAsIDIxNSwgMjgsIDIwNywgMjUwLCAyMTUsIDI5LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMTUsIDI5LCAyMTcsIDM0LCAyMzgsIDExNywgMTM4LCAyMDcsIDI1MSwgMjE3LCAzNCwgMjM4LCAxMTcsIAorICAgIDEzOCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMTUsIDMxLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIwNywgMjUyLCAyMDgsIDMsIAorICAgIDIxNywgMTE3LCAyMDcsIDIxMiwgMjE3LCAxMTcsIDIxOCwgMjE1LCAzNSwgMjA4LCAzLCAyMTcsIDExNywgMjE4LCAyMTUsIAorICAgIDM1LCAyMDcsIDIxMiwgMjE3LCAxMTcsIDIwOCwgMywgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyMDcsIDIxMiwgNzYsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMjAsIDI2LCAzNSwgMjA4LCAzLCA3NiwgMjE4LCAyMjQsIDE2MCwgMTM4LCAyMjAsIDI2LCAzNSwgCisgICAgMjA3LCAyMTIsIDc2LCAyMTgsIDIyNCwgMTYwLCAxMzgsIDIwOCwgMywgNzYsIDMsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAKKyAgICAyMTIsIDc2LCAzLCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIyMSwgMTYsIDIyMSwgMTcsIDIyMSwgMTgsIDIyMSwgMTcsIDIwMywgCisgICAgMjQxLCA1MiwgMjI4LCAxMzMsIDIxNywgMTE3LCA1MiwgMjE3LCAyNSwgMjE3LCAxMTcsIDUyLCAyMjgsIDEzMywgNzYsIAorICAgIDIxNywgMzQsIDE2MCwgMTM4LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCA1MiwgMjQ3LCAxNDQsIDUyLCAKKyAgICAyNDIsIDIwMiwgNDQsIDIxNSwgMTEzLCA0NCwgMjIxLCAxNTYsIDQ0LCAyMDUsIDIzMiwgNDQsIDI0MCwgMjM1LCAyMDksIAorICAgIDc1LCA0NCwgNzMsIDIxNywgNDMsIDQ0LCAyMTMsIDI3LCAyMTcsIDQzLCA0NCwgMjUwLCAxNjYsIDIxNywgNDMsIDQ0LCAKKyAgICAyMzgsIDEyMSwgNDQsIDI0MSwgMjQ0LCA5NSwgMjE1LCAxMTMsIDk1LCAyMjEsIDE1NiwgOTUsIDIwNSwgMjMyLCA5NSwgNzMsIAorICAgIDIxNywgNDMsIDUxLCAyMDcsIDE3LCA0OSwgMjA3LCAxNywgMTI3LCAyMDcsIDE3LCAxMTUsIDIwNywgMTcsIDI1MCwgMTY5LCAKKyAgICAyMjEsIDEzMSwgMjA1LCA2MSwgMjM2LCAyNDgsIDIwNSwgODMsIDgzLCAyNDksIDc3LCA1MSwgMjA0LCAxODQsIDUzLCA4MywgCisgICAgMjQ5LCA3NywgNTMsIDUxLCAyMDQsIDE4NCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMTQsIDIzOCwgMjE4LCAyMTUsIDIwNSwgCisgICAgNjEsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjM2LCAyNDksIDIyMCwgMjgsIDUzLCA4MywgMjQ5LCA3NywgNTMsIDUxLCAyMDQsIAorICAgIDE4NCwgMjE1LCAyOSwgMjAzLCAyNTMsIDIxMywgMTQ5LCAyMDcsIDI1MSwgMjAzLCAyNTMsIDIxMywgMTQ5LCAyMTgsIDIyMSwgCisgICAgMjA4LCAxNiwgMjE3LCAxMTcsIDI0MywgNDQsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNSwgMjE4LCAyMjEsIDIwOCwgCisgICAgMTYsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQzLCA0NCwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE2LCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjE3LCAyNSwgMjE3LCAxMTcsIDIyOCwgMTMzLCAyMTcsIDExNywgMjIxLCAyMywgMjM0LCA5NiwgMjQzLCAKKyAgICA1NSwgMjIyLCAxMjUsIDIyOCwgNjYsIDIwMCwgMTU1LCAyMjAsIDEzMiwgMjE4LCAyMjMsIDUxLCAyNTEsIDcxLCAzLCAyNTAsIAorICAgIDIzNiwgNTEsIDIwNSwgOTgsIDIyMCwgMjEzLCAyMjQsIDk4LCAyNTEsIDc5LCAyMjAsIDIxMywgMjI0LCA5OCwgMjE3LCAzMywgCisgICAgMjIwLCAyMTMsIDIyOCwgNTUsIDIyMCwgMjEzLCAyMDMsIDI0MSwgMjQxLCA2NSwgMjE3LCA0MywgNzMsIDIxNywgNDMsIAorICAgIDIwOCwgMTEwLCAyMTcsIDQzLCAyNDAsIDIzNSwgMjA1LCAyMzIsIDI0OCwgNzksIDQ5LCAyMTgsIDIyMSwgMjM3LCAxNzksIAorICAgIDIxMCwgMTY2LCAyMTUsIDEsIDUxLCAyMTgsIDIyMSwgMjM3LCAxNzksIDIxMCwgMTY2LCAyMTUsIDEsIDQ5LCAyMTAsIDE2NiwgCisgICAgMjE1LCAxLCA1MSwgMjEwLCAxNjYsIDIxNSwgMSwgMjEzLCAxMDUsIDIwNSwgMjQxLCAyMzgsIDEyMSwgMjQyLCAxOTYsIAorICAgIDIyNCwgOTgsIDIxNywgMzMsIDI0MiwgMTk2LCAyMjQsIDk4LCAyNTEsIDc5LCA1MywgMjA4LCAyLCA1MywgMjA3LCAyMTEsIAorICAgIDUzLCAyMjgsIDU1LCA1MywgMjAzLCAyNDEsIDIxNSwgMTQwLCAxNjAsIDI2LCAyMTYsIDEyMSwgMTM4LCAyMjQsIDI0MSwgMywgCisgICAgMjQwLCAxODIsIDIzNSwgNjcsIDMsIDI0MCwgMTgyLCAyMDIsIDI0NiwgMjIxLCAzNSwgMjI0LCAyNDAsIDIwMiwgMjQ2LCAKKyAgICAyMjEsIDM1LCAyMzUsIDY2LCAyMjQsIDI0MSwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgMjM1LCA2NywgCisgICAgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAxNjAsIAorICAgIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMTUsIDI4LCAxNjAsIDIwNSwgCisgICAgMTg2LCAyMTcsIDM0LCAyMDcsIDI1MCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMTUsIDMyLCAyMTcsIDM0LCAyMzgsIDEyMywgCisgICAgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMDcsIDI1MywgMjE3LCAzNCwgMjM4LCAxMjMsIDIxOCwgMjE1LCA1MiwgMjI4LCAxMzMsIAorICAgIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjE4LCAyMTUsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAKKyAgICAyMjgsIDEzMywgNzYsIDIxNywgMzQsIDIxOCwgMjE1LCAxNjAsIDEzOCwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAyMTgsIAorICAgIDIxNSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIzNSwgNjcsIDI0NywgCisgICAgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE1LCAyOSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAKKyAgICAyMDcsIDI1MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTgsIDIxNSwgMjE4LCAyMjEsIDIwOCwgMTYsIAorICAgIDIxNywgMTE3LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgNDYsIDI1MCwgMTg5LCAyMTgsIDIyMSwgMjA4LCAxNSwgMjE4LCAKKyAgICAyMTUsIDIxOCwgMjIxLCAyMDgsIDE2LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCAKKyAgICA0NiwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE2LCAyMTcsIDM0LCAyMzgsIDEyMywgODMsIDIzOCwgMTk1LCAyMjEsIAorICAgIDIwMiwgMjMzLCAxNzcsIDIzOCwgMTk1LCAxMTUsIDUxLCAyNDEsIDcxLCAyMzgsIDE5NSwgMTI3LCA1MSwgMjQxLCA3MSwgCisgICAgMjM4LCAxOTUsIDIzOCwgMjAyLCA3NiwgMywgMTY4LCAyMzMsIDE3NywgOTcsIDIzOCwgMjAyLCA3NiwgMywgODMsIDI0OSwgCisgICAgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgNCwgMjM4LCAyMDIsIDc2LCAzLCA4MywgMjQ5LCAKKyAgICA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCAyMzgsIDIwMiwgNzYsIDMsIDczLCA1NiwgMjM4LCAKKyAgICAyMDIsIDc2LCAzLCAyMTYsIDI0NiwgNCwgMjM4LCAyMDIsIDc2LCAzLCAyMTYsIDI0NiwgMjM4LCAyMDIsIDc2LCAzLCAyMDMsIAorICAgIDI1MSwgMjM4LCAyMDIsIDc2LCAzLCAxMjAsIDIzMywgMTc3LCAyMDgsIDM0LCAyNDMsIDQ0LCAzLCAxNjgsIDIzMywgMTc3LCAKKyAgICA5NywgMjQzLCA0NCwgMywgODMsIDI0OSwgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgNCwgCisgICAgMjQzLCA0NCwgMywgODMsIDI0OSwgNzcsIDI1MCwgMTU2LCAyMzgsIDE3MSwgNzYsIDIzMywgMTc3LCA5NywgMjQzLCA0NCwgCisgICAgMywgMjE2LCAyNDYsIDQsIDI0MywgNDQsIDMsIDIxNiwgMjQ2LCAxOTksIDE1OCwgMjE4LCAyMTMsIDI0OSwgMTE0LCAyMjIsIAorICAgIDQzLCAyNDEsIDY2LCA1NCwgMjM4LCAyMDQsIDQ4LCAyMzMsIDEwOSwgMTE1LCAyNTAsIDIwMiwgMTI3LCAyNTAsIDIwMiwgCisgICAgMjE0LCAyNTEsIDIxNiwgOCwgMjAxLCA3NCwgMjI0LCAxNzYsIDQ5LCAyNDcsIDY0LCA1MSwgMjQ3LCA2NCwgNDksIDIzNywgCisgICAgMzEsIDUxLCAyMzcsIDMxLCAyNDgsIDkzLCA1MSwgMjQyLCAyMzYsIDI0OCwgOTMsIDQ5LCAyNDIsIDIzNiwgMjA1LCAxNTgsIAorICAgIDUxLCAyNDIsIDIzNiwgMjA1LCAxNTgsIDQ5LCAyNDIsIDIzNiwgMjEzLCAxMDUsIDIxOCwgMjE1LCA1NCwgNTIsIDIyNCwgCisgICAgNDksIDI1MCwgMjM2LCAyMTEsIDE4MywgMjExLCAxOTEsIDIwNiwgMTc2LCAyMTMsIDE3OSwgMjE1LCA3MCwgMjI4LCA5OSwgCisgICAgMjAyLCAyMjIsIDIwOCwgMTkzLCAyMTUsIDEzNCwgNzYsIDIyOCwgNjUsIDU0LCAyMDQsIDE4NSwgMjE4LCAyMTUsIDU0LCAKKyAgICAyMDEsIDg0LCAyMzMsIDExMSwgMjA1LCAxNTgsIDQ5LCAyNDMsIDE1LCAyMDUsIDE1OCwgNTEsIDI0MywgMTUsIDI0OCwgOTMsIAorICAgIDQ5LCAyNDMsIDE1LCAyNDgsIDkzLCA1MSwgMjQzLCAxNSwgMjA1LCAxNTgsIDE2NywgMjI4LCA2OSwgMjQ4LCA5MywgMTY3LCAKKyAgICAyMjgsIDY5LCAyMzYsIDE5NiwgMjA5LCA0OCwgMTE1LCAyNTAsIDIwMywgMjQ4LCAyMDYsIDEyMCwgMjMzLCAxNzcsIDI0OSwgCisgICAgNjYsIDIxNywgMzYsIDIyNiwgMjE0LCAyMzgsIDExMywgMjA1LCAxODYsIDIwNiwgMTA3LCAyMTMsIDQ2LCAyMDAsIDE5NiwgCisgICAgMjI4LCAxMTgsIDM1LCAyMTMsIDE3NiwgMjQ4LCA3OCwgMjI2LCAyMTIsIDIyNSwgMjMsIDI1MSwgNzEsIDE1OSwgMjEzLCAKKyAgICA0MSwgMjUxLCA3MSwgMTU5LCAyMzgsIDExMywgMjA1LCAxODYsIDIwNiwgMTA3LCAyMjUsIDI4LCAyNDgsIDIxNywgMjEzLCAKKyAgICAyNiwgMjQyLCAxNjMsIDI1MSwgMTI1LCAyNTAsIDIxMSwgMjA3LCAxMTQsIDIwNSwgMTQzLCAyMTIsIDE1NCwgMjQxLCAyOCwgCisgICAgMjE3LCAyNiwgMjQzLCA1OSwgMjA2LCAyMzQsIDIwOSwgNjEsIDI0MywgNSwgMjQzLCA0LCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIzMywgMTYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjA4LCAxODQsIDIxNCwgOTQsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjE0LCA5NSwgMjM4LCAxMjMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQwLCAyNDEsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjQxLCA2NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMjcsIDE1MywgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDYsIDE1NSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIAorICAgIDE1NiwgMjA4LCA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjI3LCAxNTMsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjA5LCA3NiwgMTQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0OSwgMTI1LCAxNDgsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjA5LCA3NSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDksIDEyNCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMjQsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAKKyAgICAyMzUsIDY2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDk4LCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDg3LCAKKyAgICAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDk4LCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyMTQsIDk1LCA4NywgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDI0OSwgMTI0LCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDEyNywgMjA3LCAxOCwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxMzcsIDIwOCwgCisgICAgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMTI3LCAyNDcsIDEyOSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyMTQsIDk1LCAyNDEsIDEzNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMjcsIDIwNywgMTgsIDIyNywgMTUzLCAyNTEsIAorICAgIDIyLCAyMzYsIDE3OSwgMTYsIDE4MiwgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxODIsIDQ4LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgMjA3LCAxOCwgMjE2LCAyNDYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgCisgICAgMjQxLCAxNDksIDIwOCwgODQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMTE1LCAyNDcsIDEyOSwgMjUxLCAKKyAgICAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDEsIDE0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMTUsIDIwNywgMTgsIAorICAgIDIyNywgMTUzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDE5MSwgMjAzLCA4MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyMTQsIDk1LCAxOTEsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgNjIsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDI0MSwgMTM3LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDY1LCAyMDMsIDI1MSwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMjcsIDE1NCwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAKKyAgICAxNTYsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgMjEwLCA2LCAyMjcsIDE1MywgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDYyLCAyMTQsIDk0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyMDgsIAorICAgIDEwOSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDYsIDc5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgCisgICAgMjA3LCAxOCwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDE0OSwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMDgsIDExMCwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMjcsIDE1NCwgMjQxLCA3NCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjQxLCA3NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMjcsIAorICAgIDIxMCwgNiwgMjA4LCA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCA0OSwgMjEwLCA2LCAyMDgsIDg0LCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIwNSwgMjQxLCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIzNSwgNjcsIDI0MSwgNzQsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCA3MSwgMTQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTQ5LCAKKyAgICAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxOTksIDI2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIwOCwgODUsIAorICAgIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxMCwgMTY4LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMTQsIDk1LCAyMTgsIDIxNSwgMjM4LCAxMjMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgMjE0LCA3OCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAxMjcsIDI0NywgMTMwLCAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAxMTUsIDI0NywgMTMwLCAyMDUsIDI0MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMjgsIDQxLCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIxMywgOTAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE3LCA4MywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyNTEsIDExMywgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjM4LCAxMjUsIDIwMywgMjUxLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIyOCwgNDIsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNywgODQsIDIwMywgCisgICAgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI1MSwgMTEyLCAyMTgsIDIxNSwgMjQ3LCA3LCA4MSwgNTEsIDI1MSwgNzEsIAorICAgIDMsIDE5MSwgMTk5LCAyNywgNDgsIDIwOSwgMjMyLCAxNzYsIDI0OCwgNzgsIDI0OCwgMjMxLCA5OSwgODMsIDIyNCwgMTc3LCAKKyAgICAzLCAxMDEsIDI0MCwgMTgyLCAyMjgsIDc1LCA5OSwgMjQzLCAzOSwgMjAzLCAyNDksIDk5LCAyNDEsIDEsIDIwMywgMjQ5LCAKKyAgICA5OSwgMjM4LCAxODMsIDk5LCAyNDMsIDc0LCA5OSwgNjQsIDUyLCAzLCAyNDcsIDU2LCA4MywgMjI0LCAxNzYsIDIzOCwgCisgICAgMTU1LCA5OSwgMjUxLCAxMDQsIDIyNiwgMjE1LCA5OSwgMjM0LCAxMDksIDk5LCA0NCwgMjMzLCAxNzcsIDI0OSwgNzcsIDMsIAorICAgIDIxOCwgMjEyLCA0NCwgMjA1LCA5OSwgMjM5LCAxNjcsIDI0OCwgNDYsIDI0NiwgMTU2LCAzLCAyMTgsIDIxOCwgNDgsIDIwMywgCisgICAgMjQ3LCA5OSwgMjIxLCA5MiwgOTksIDIzMywgMjksIDk5LCAyMTcsIDUyLCAyMzQsIDI0NiwgOTksIDIxNywgNTIsIDIyNSwgCisgICAgMTkxLCA5OSwgMjE2LCA5OCwgOTksIDIxNiwgOTcsIDk5LCAyNDEsIDEwLCAyNDIsIDE5NCwgMTYsIDIzNiwgMjQyLCAxMDUsIAorICAgIDIwOSwgMjEsIDk5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTQsIDI0MSwgMTY4LCAyMTAsIDE1NSwgMjI2LCAKKyAgICAyMTUsIDk5LCAyMTUsIDE2LCAyMTYsIDE5NSwgMjIwLCAyLCAyMTYsIDE5NSwgMjE1LCAxMSwgMjExLCAyMTAsIDk5LCAyNDYsIAorICAgIDEyNywgMjExLCAyMTAsIDk5LCA0OSwgMjE2LCAxMTYsIDIwMywgMjI1LCAxMTcsIDQ5LCAyMTYsIDExNiwgMjM4LCAzMSwgCisgICAgNDksIDIxNiwgMTE2LCAyMjQsIDU0LCAxMTcsIDUxLCAyMTYsIDExNiwgMjAzLCAyMjUsIDExNywgNTEsIDIxNiwgMTE2LCAKKyAgICAyMzgsIDMxLCA1MSwgMjE2LCAxMTYsIDIyNCwgNTQsIDExNywgNDksIDUyLCAyNDgsIDcwLCAyMDMsIDIyNSwgMjQzLCAxNSwgCisgICAgNDksIDUyLCAyNDgsIDcwLCAyMzgsIDMxLCA0OSwgNTIsIDI0OCwgNzAsIDIyNCwgNTQsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCAKKyAgICA3MCwgMjAzLCAyMjUsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMjM4LCAzMSwgNTEsIDUyLCAyNDgsIDcwLCAyMjQsIAorICAgIDU0LCAyNDMsIDE1LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIwMywgMjI1LCAxMTcsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgCisgICAgMTAxLCAyMTUsIDE5NiwgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAyMjQsIDU0LCAxMTcsIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAyMzgsIDMxLCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIwMywgMjI1LCAxMTcsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgCisgICAgMTAxLCAyMTUsIDE5NiwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMjQsIDU0LCAxMTcsIDIyOCwgNzAsIDIzOCwgMzEsIAorICAgIDIzMywgMTc3LCAyMjQsIDE3NywgMjM4LCAzMSwgMjAzLCAyMjUsIDQ5LCAyMTcsIDM0LCAyMjQsIDU0LCA1MSwgMjQyLCAKKyAgICAxOTYsIDI0OCwgNzAsIDIxMSwgMTkyLCAyMDMsIDIyNSwgNTEsIDIxNywgMzQsIDIyNCwgNTQsIDQ5LCAyNDIsIDE5NiwgCisgICAgMjQ4LCA3MCwgMjExLCAxOTIsIDIwNywgMjMyLCAyMDUsIDE1NywgMjA3LCAyMzIsIDI0OCwgOTIsIDIwNSwgMTU4LCA1MiwgCisgICAgMTU5LCAyNDgsIDkzLCA1MiwgMTU5LCAyNDgsIDkzLCA1MiwgMjQ4LCA3MCwgMTE5LCAyMDUsIDE1OCwgNTIsIDE1OSwgNDIsIAorICAgIDE2LCAyNDgsIDkyLCA0OSwgODMsIDEwMCwgMjI0LCAxNzYsIDUxLCA4MywgMTAwLCAyMjQsIDE3NiwgMjMzLCAxNzcsIDIxMSwgCisgICAgMjI4LCAyMjQsIDE3NSwgMjMzLCAxNzcsIDIxMSwgMjI4LCAyMjQsIDE3NCwgMjMzLCAxNzcsIDIxMSwgMjI4LCAyMjQsIAorICAgIDE3MywgMjMzLCAxNzcsIDIxMSwgMjI4LCAyMjQsIDE3MiwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjA1LCAxNTgsIAorICAgIDIxMywgNDYsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDI0OCwgOTMsIDIxMywgNDYsIDI0MSwgMTI4LCAxNiwgMTYyLCAKKyAgICA4MywgMywgMjQ2LCAxNTUsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NywgMywgMjQ2LCAxNTUsIDI0MSwgCisgICAgMTI4LCAxNiwgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NywgMywgMjQ2LCAxNTUsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMywgCisgICAgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIAorICAgIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzcsIDMsIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDIwMSwgNzcsIAorICAgIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NywgMywgMjAxLCA3NywgMjQxLCAxMjgsIDE2LCAxNjIsIDExNSwgCisgICAgMjYsIDIzMywgMTc3LCAzLCAyMDEsIDc3LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzYsIDI0MSwgMTI4LCAKKyAgICAxNiwgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NiwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjA1LCAxNTgsIDIyNSwgMjgsIAorICAgIDI0MSwgMTI4LCAxNiwgMTYyLCA4MywgMjYsIDI0OCwgOTMsIDIyNSwgMjgsIDUyLCAyMzYsIDI1NSwgMjEzLCAxMTAsIDk5LCAKKyAgICAyMzgsIDIxOCwgOTksIDgzLCAyMjQsIDE3NywgMjM4LCAzMSwgMjIyLCAxNCwgMjQ4LCA1NywgMjIyLCAxNCwgMTY4LCAxMTksIAorICAgIDIwOSwgMjQ5LCAyMjIsIDE0LCAyMDksIDI1MCwgMTE5LCAyMjQsIDg5LCAyMjIsIDE0LCAxNjgsIDExOSwgMTIwLCAyMDksIAorICAgIDIzNSwgMjIyLCAxNCwgMTIwLCAyMDksIDIzNiwgMTE5LCAyMjQsIDg5LCAyMjIsIDE0LCAxMjAsIDIwOSwgMjM2LCAyMjcsIAorICAgIDE2MiwgMjIyLCAxNCwgMjA1LCA3OSwgMjIyLCAxNCwgMjA2LCAxMzgsIDIyMiwgMTQsIDIxNiwgMzUsIDIzOSwgMTgsIDIzNSwgCisgICAgNTksIDIzNiwgMTczLCAyMDUsIDE1OCwgMjE2LCAxMTUsIDI0OCwgOTMsIDIxNiwgMTE1LCAyMDUsIDE1OCwgMjQyLCAxOTYsIAorICAgIDE1OSwgMjQ4LCA5MywgMjQyLCAxOTYsIDE1OSwgMjA1LCAxNTgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDI0OCwgOTMsIAorICAgIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDY0LCAyMDUsIDExNCwgMjQ4LCAyMTcsIDIxMywgMjcsIDMsIDI0NiwgMTU1LCAKKyAgICAyMDgsIDY2LCAyMzcsIDQyLCAyNTEsIDI1NSwgMjQyLCAxOTMsIDIzOCwgMjAzLCAyMjgsIDU1LCAyNDEsIDE2OCwgMjM4LCAKKyAgICAzNSwgOTksIDYzLCAyMTMsIDQxLCA1MywgMjA1LCA5OCwgNjMsIDIyNSwgMjMsIDUzLCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIAorICAgIDUzLCAyMDUsIDk4LCA2MywgMjM5LCAxNjYsIDUzLCAyMDUsIDk4LCA2MywgMjEzLCA0MSwgNTMsIDIwNSwgOTksIDMsIDgzLCAKKyAgICAxNDgsIDYzLCAyMjUsIDIzLCA1MywgMjA1LCA5OSwgMywgODMsIDE0OCwgNjMsIDIxMywgNDEsIDIwNSwgOTksIDMsIDUzLCAKKyAgICA4MywgMTQ4LCAyNTEsIDE0NiwgMjQ2LCAxMTMsIDIwOCwgNzMsIDIwNSwgMjMzLCAyNDYsIDExMywgMjMzLCAxMTIsIDMsIAorICAgIDIzNywgMjIsIDIxMiwgMTEsIDYzLCAyMjIsIDY2LCAyMjUsIDIzLCAyMDUsIDk4LCA2MywgMjIyLCA2NiwgMjEzLCA0MSwgCisgICAgMjA1LCA5OCwgNjMsIDIyMiwgNjYsIDIwMywgMjI3LCAyMDUsIDk4LCA2MywgMjIyLCA2NiwgMjM5LCAxNjYsIDIwNSwgOTgsIAorICAgIDUzLCA4MywgMTQ4LCA2MywgNTIsIDM2LCAyMDgsIDc2LCA2MywgMjQ2LCAxNTYsIDM2LCAyMTMsIDE4MCwgMjE1LCA1MiwgCisgICAgOTksIDIxNSwgNTIsIDIxNywgNzcsIDk5LCAyMTUsIDUyLCAyMTcsIDc5LCA5OSwgMjE1LCA1MiwgMjA5LCA3MiwgOTksIDE2LCAKKyAgICAzNiwgMjE4LCA5NywgMTYsIDM2LCAyMDgsIDEwNSwgNzYsIDIzNCwgMTMzLCAxNiwgMzYsIDIwOCwgMTA1LCA3NiwgMjA2LCAKKyAgICAxMjYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDYsIDEyNiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE4LCAxNiwgCisgICAgMzYsIDIzOCwgMTU4LCAxNiwgMzYsIDI1MSwgMjQzLCAxNiwgMzYsIDI0OCwgMjMwLCAxNiwgMzYsIDI0OSwgMTIzLCAxNiwgCisgICAgMzYsIDIzMywgMTc3LCAyMDcsIDE5LCAxNiwgMzYsIDIyNCwgMTc3LCAyMzcsIDEzOCwgMTYsIDM2LCA4MywgMjA3LCAxOSwgCisgICAgMTYsIDM2LCAyMzYsIDI0MiwgMjM3LCAxMzgsIDE2LCAzNiwgMjQ3LCAxMjEsIDIxMywgMTA5LCAxNiwgMzYsIDIxMCwgMjksIAorICAgIDIxNiwgMjU0LCAxNiwgMzYsIDIxMCwgMjksIDIyOCwgMTE3LCAxNiwgMzYsIDI0MSwgMjM5LCAyMjQsIDE2NywgMjM4LCA5NiwgCisgICAgMTYsIDM2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTAyLCAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDUsIDE2LCAzNiwgCisgICAgMjQxLCAxMDcsIDI0MywgMzQsIDE0NywgMTYsIDM2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTQ5LCAxNiwgMzYsIDE4OSwgMjUxLCAKKyAgICAyNDMsIDE2LCAzNiwgMjA3LCAxMDksIDIyOCwgMTgwLCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTksIDI0OCwgCisgICAgMTM0LCAxNiwgMzYsIDI0NywgMTU2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjIyLCA2NSwgMTYsIDM2LCAyMDgsIDAsIDE2LCAKKyAgICAzNiwgMjM4LCA5NiwgMTYsIDM2LCAyMzcsIDk3LCAyMTAsIDE1NCwgMTYsIDM2LCAyMzUsIDU4LCAyMTAsIDE1NCwgMTYsIAorICAgIDM2LCAyMTMsIDE4MSwgMjEwLCAxNTQsIDE2LCAzNiwgMjAzLCAyNDAsIDIxMCwgMTU0LCAxNiwgMzYsIDIwOCwgMjQ0LCAxNiwgCisgICAgMzYsIDI0MSwgMTQ2LCAyNDgsIDEzOCwgOTksIDE3NiwgMjQ4LCA3OCwgMTYsIDM2LCAyMjAsIDUsIDE2LCAzNiwgMjQxLCAKKyAgICAxNDcsIDIzNiwgMjQyLCAxMDUsIDE2LCAzNiwgMjA4LCAxLCAyMzYsIDI0MiwgMTA1LCAyMTcsIDEzMSwgMTE3LCAyMTcsIAorICAgIDEzMSwgMjQ3LCAzMiwgMjE3LCAxMzEsIDIzNiwgMjQ1LCAyMTcsIDEzMSwgMjI4LCA1MCwgMjM2LCAyNDUsIDIxNywgMTMxLCAKKyAgICAyNDgsIDIyNywgMjQ4LCAzMywgMjE3LCAxMzEsIDI0OCwgODYsIDIwNiwgNywgMjE3LCAxMzEsIDI0OCwgNjcsIDI0OSwgODIsIAorICAgIDIzMiwgMjIyLCAyMTcsIDEzMSwgMjUxLCA5MSwgNzYsIDI0NywgNiwgMjE3LCAxMzEsIDI0MSwgMjQ0LCAyMTcsIDEzMSwgCisgICAgMjQyLCAxODIsIDI1MSwgMjQ3LCAyMTgsIDk1LCAyMTcsIDEzMSwgNTMsIDI0OSwgMTI0LCA0NCwgMTcsIDEwMiwgNDQsIDE3LCAKKyAgICAxMDUsIDQ0LCAxNywgMTQ3LCA0NCwgMTcsIDE0OSwgNDQsIDE3LCAxNjQsIDQ0LCAxNywgMTg3LCA0NCwgMTcsIDIxMCwgCisgICAgMTM1LCA0NCwgMTcsIDE5MiwgNDQsIDE3LCAyMTksIDExMywgNDQsIDQxLCAyMDYsIDE2NiwgNDQsIDQxLCAyMzgsIDE5OSwgCisgICAgNDQsIDQxLCAyMDQsIDE2NCwgNDQsIDQxLCAyMDYsIDY5LCA0NCwgNDEsIDIzNiwgMjIzLCA0NCwgNDEsIDIzNywgMTA4LCAKKyAgICA0NCwgNDEsIDIwOSwgMTAwLCA0NCwgNDEsIDIxMCwgMTMyLCA0NCwgNDEsIDIzOCwgMjI5LCA0NCwgNDEsIDIxOSwgMTEwLCAKKyAgICA0NCwgNDEsIDIwNCwgMTU5LCAxMDYsIDE3LCAxMDIsIDEwNiwgMTcsIDEwNSwgMTA2LCAxNywgMTQ3LCAxMDYsIDE3LCAxNDksIAorICAgIDEwNiwgMTcsIDE2NCwgMTA2LCAxNywgMTg3LCAxMDYsIDE3LCAyMTAsIDEzNSwgMTA2LCAxNywgMTkyLCAxMDYsIDE3LCAKKyAgICAyMTksIDExMywgMTA2LCA0MSwgMjA2LCAxNjYsIDEwNiwgNDEsIDIzOCwgMTk5LCAxMDYsIDQxLCAyMDQsIDE2NCwgMTA2LCAKKyAgICA0MSwgMjA2LCA2OSwgMTA2LCA0MSwgMjM2LCAyMjMsIDEwNiwgNDEsIDIzNywgMTA4LCAxMDYsIDQxLCAyMDksIDEwMCwgCisgICAgMTA2LCA0MSwgMjEwLCAxMzIsIDEwNiwgNDEsIDIzOCwgMjI5LCAxMDYsIDQxLCAyMTksIDExMCwgMTA2LCA0MSwgMjA0LCAKKyAgICAxNTksIDE3LCAxMTIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTIwLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDEyNiwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMzYsIDIyOSwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAyMzcsIDYxLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTcsIDIwOSwgMTA2LCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIxMCwgMTM2LCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgMTcsIDIzOCwgMjMyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIxOSwgMTE0LCAyMzYsIDE4MywgMjA4LCAKKyAgICA3NiwgNDEsIDIwNiwgMTY3LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIzOCwgMjAwLCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIAorICAgIDIwNCwgMTY1LCAyMzYsIDE4MywgMjA4LCA3NiwgNDEsIDIwNiwgNzAsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM2LCAKKyAgICAyMjQsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM3LCAxMDksIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjA5LCAxMDEsIAorICAgIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjEwLCAxMzMsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM4LCAyMzAsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCA0MSwgMjE5LCAxMTEsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjA0LCAxNjAsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCAxMDYsIDgsIDQsIDEsIDYyLCAxMDYsIDgsIDQsIDEsIDI1MCwgMTAzLCAxMDYsIDgsIDQsIDEsIDI0NywgCisgICAgMjIzLCAxMDYsIDgsIDQsIDEsIDI0MiwgMTUzLCAxMDYsIDgsIDQsIDEsIDcyLCAxMDYsIDgsIDQsIDEsIDIzOCwgNSwgMTA2LCAKKyAgICA4LCA0LCAxLCAyMzYsIDE1NiwgMTA2LCA4LCA0LCAxLCAyMzQsIDI0NywgMTA2LCA4LCA0LCAxLCA3MCwgMTA2LCA4LCA0LCAKKyAgICAxLCAyMjcsIDI1MSwgMTA2LCA4LCA0LCAxLCAyMjcsIDExOCwgMTA2LCA4LCA0LCAxLCAxNTYsIDEwNiwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDMsIDEwNiwgOCwgNCwgMSwgMjIwLCAyMTQsIDEwNiwgOCwgNCwgMSwgNzQsIDEwNiwgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjYsIDEwNiwgOCwgNCwgMSwgMjE0LCAxNjcsIDEwNiwgOCwgNCwgMSwgMTQ2LCAxMDYsIDgsIDQsIDEsIDIxMiwgMTIyLCAKKyAgICAxMDYsIDgsIDQsIDEsIDIwNywgODMsIDEwNiwgOCwgNCwgMSwgNjYsIDEwNiwgOCwgNCwgMSwgMjAzLCAxNjgsIDEwNiwgOCwgCisgICAgNCwgMSwgMjAxLCAxNDcsIDEwNiwgOCwgNCwgMSwgMjAwLCAxOTUsIDEwNiwgOCwgNCwgMSwgMjAwLCAxMjMsIDEwNiwgOCwgCisgICAgNCwgMSwgMTk5LCAxNTcsIDQ0LCA4LCA2LCAxLCA2MiwgNDQsIDgsIDYsIDEsIDI1MCwgMTAzLCA0NCwgOCwgNiwgMSwgMjQ3LCAKKyAgICAyMjMsIDQ0LCA4LCA2LCAxLCAyNDIsIDE1MywgNDQsIDgsIDYsIDEsIDcyLCA0NCwgOCwgNiwgMSwgMjM4LCA1LCA0NCwgOCwgCisgICAgNiwgMSwgMjM2LCAxNTYsIDQ0LCA4LCA2LCAxLCAyMzQsIDI0NywgNDQsIDgsIDYsIDEsIDcwLCA0NCwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTEsIDQ0LCA4LCA2LCAxLCAyMjcsIDExOCwgNDQsIDgsIDYsIDEsIDE1NiwgNDQsIDgsIDYsIDEsIDIyMywgMjQzLCA0NCwgCisgICAgOCwgNiwgMSwgMjIwLCAyMTQsIDQ0LCA4LCA2LCAxLCA3NCwgNDQsIDgsIDYsIDEsIDIxNiwgMjI2LCA0NCwgOCwgNiwgMSwgCisgICAgMjE0LCAxNjcsIDQ0LCA4LCA2LCAxLCAxNDYsIDQ0LCA4LCA2LCAxLCAyMTIsIDEyMiwgNDQsIDgsIDYsIDEsIDIwNywgODMsIAorICAgIDQ0LCA4LCA2LCAxLCA2NiwgNDQsIDgsIDYsIDEsIDIwMywgMTY4LCA0NCwgOCwgNiwgMSwgMjAxLCAxNDcsIDQ0LCA4LCA2LCAKKyAgICAxLCAyMDAsIDE5NSwgNDQsIDgsIDYsIDEsIDIwMCwgMTIzLCA0NCwgOCwgNiwgMSwgMTk5LCAxNTcsIDQ0LCA4LCA0LCAxLCAKKyAgICA2MiwgNDQsIDgsIDQsIDEsIDI1MCwgMTAzLCA0NCwgOCwgNCwgMSwgMjQ3LCAyMjMsIDQ0LCA4LCA0LCAxLCAyNDIsIDE1MywgCisgICAgNDQsIDgsIDQsIDEsIDcyLCA0NCwgOCwgNCwgMSwgMjM4LCA1LCA0NCwgOCwgNCwgMSwgMjM2LCAxNTYsIDQ0LCA4LCA0LCAxLCAKKyAgICAyMzQsIDI0NywgNDQsIDgsIDQsIDEsIDcwLCA0NCwgOCwgNCwgMSwgMjI3LCAyNTEsIDQ0LCA4LCA0LCAxLCAyMjcsIDExOCwgCisgICAgNDQsIDgsIDQsIDEsIDE1NiwgNDQsIDgsIDQsIDEsIDIyMywgMjQzLCA0NCwgOCwgNCwgMSwgMjIwLCAyMTQsIDQ0LCA4LCA0LCAKKyAgICAxLCA3NCwgNDQsIDgsIDQsIDEsIDIxNiwgMjI2LCA0NCwgOCwgNCwgMSwgMjE0LCAxNjcsIDQ0LCA4LCA0LCAxLCAxNDYsIAorICAgIDQ0LCA4LCA0LCAxLCAyMTIsIDEyMiwgNDQsIDgsIDQsIDEsIDIwNywgODMsIDQ0LCA4LCA0LCAxLCA2NiwgNDQsIDgsIDQsIAorICAgIDEsIDIwMywgMTY4LCA0NCwgOCwgNCwgMSwgMjAxLCAxNDcsIDQ0LCA4LCA0LCAxLCAyMDAsIDE5NSwgNDQsIDgsIDQsIDEsIAorICAgIDIwMCwgMTIzLCA0NCwgOCwgNCwgMSwgMTk5LCAxNTcsIDQ0LCAxNywgMTk5LCA4MSwgMTg5LCA0NCwgNDEsIDIzOCwgMTk5LCAKKyAgICAxODksIDQ0LCA0MSwgMjA0LCAxNjQsIDE4OSwgNDQsIDQxLCAyMDYsIDY5LCAxODksIDQ0LCA0MSwgMjM2LCAyMjMsIDE4OSwgCisgICAgNDQsIDQxLCAyMzcsIDEwOCwgMTg5LCA0NCwgNDEsIDIwOSwgMTAwLCAxODksIDQ0LCA0MSwgMjEwLCAxMzIsIDE4OSwgNDQsIAorICAgIDQxLCAyMzgsIDIyOSwgMTg5LCA0NCwgNDEsIDIxOSwgMTEwLCAxODksIDQ0LCA0MSwgMjA0LCAxNTksIDUzLCA0NCwgMTcsIAorICAgIDEwMiwgNTMsIDQ0LCAxNywgMTA1LCA1MywgNDQsIDE3LCAxNDcsIDUzLCA0NCwgMTcsIDE0OSwgNTMsIDQ0LCAxNywgMTY0LCAKKyAgICA1MywgNDQsIDE3LCAxODcsIDUzLCA0NCwgMTcsIDIxMCwgMTM1LCA1MywgNDQsIDE3LCAxOTIsIDUzLCA0NCwgMTcsIDIxOSwgCisgICAgMTEzLCA1MywgNDQsIDQxLCAyMDYsIDE2NiwgMTg5LCA0NCwgMTcsIDE5OSwgODEsIDEwMCwgMTIxLCAxNjIsIDIzMywgMTc2LCAKKyAgICAxMDAsIDEyMSwgODAsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDIwMywgNDIsIAorICAgIDEwMCwgMTIxLCAxNjIsIDIwNSwgODMsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDgwLCAyMDUsIDgzLCAyNDEsIAorICAgIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIwNSwgODMsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIAorICAgIDIwNSwgODMsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgMTYyLCAyMTQsIDkwLCAyNDEsIDI0NSwgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA4MCwgMjE0LCA5MCwgMjQxLCAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCAyMTQsIDkwLCAyNDEsIAorICAgIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCAyMTQsIDkwLCAyNDEsIDI0NSwgMjAzLCA0MiwgMTAwLCAxMjEsIDE2MiwgCisgICAgMTI3LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgNTEsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCAKKyAgICA4MCwgMjYsIDUxLCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMjcsIAorICAgIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgCisgICAgNDksIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIAorICAgIDIxMywgNDYsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDUxLCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCA1MSwgCisgICAgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgMjI1LCAKKyAgICAyOCwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgNDksIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDQ5LCAyMjQsIAorICAgIDE5NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCA4MywgMjYsIDIxMywgNDYsIDEwMCwgCisgICAgMTIxLCA4MywgMTYyLCAyNiwgNTEsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDUxLCAxMjcsIDIyNCwgMTk2LCAKKyAgICAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIDgwLCAyNiwgNTEsIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA1MSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgCisgICAgNTEsIDEyNywgMjM0LCAxMjEsIDEwMCwgMTIxLCA4MCwgODMsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCA4MywgMjYsIAorICAgIDIyNSwgMjgsIDEwMCwgMTIxLCA4MywgMTYyLCAyNiwgNDksIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDQ5LCAKKyAgICAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIAorICAgIDgwLCAyNiwgNDksIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA0OSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAKKyAgICAxMjEsIDExNSwgMTYyLCAyNiwgNDksIDEyNywgMjM0LCAxMjEsIDEwMCwgMTIxLCA4MCwgODMsIDI2LCAyMjUsIDI4LCAxMDAsIAorICAgIDEyMSwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDQ5LCA4MCwgMjYsIDUxLCAxMjcsIDIyNCwgMTk2LCAKKyAgICAxMDAsIDEyMSwgNTEsIDgwLCAyNiwgNDksIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDIzMywgCisgICAgMTc3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCAyMzMsIDE3NywgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgCisgICAgMTYyLCAyNiwgNDksIDEyNywgMjM0LCAxMjEsIDEwMCwgMTIxLCA0OSwgMTYyLCAyNiwgNTEsIDEyNywgMjM0LCAxMjEsIAorICAgIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDExNSwgMjYsIDIzMywgMTc2LCAxMDAsIAorICAgIDEyMSwgNDksIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgODAsIDI2LCA0OSwgMTE1LCAyMjQsIAorICAgIDE5NiwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgMjMzLCAxNzcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIAorICAgIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAxNjIsIDI2LCA0OSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAxMjEsIAorICAgIDQ5LCAxNjIsIDI2LCA1MSwgMTE1LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAyMzMsIDE3NiwgMTAwLCAKKyAgICAxMjEsIDE2MiwgODMsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDQ5LCA4MCwgMjYsIDUxLCA4MywgMjI0LCAxOTYsIDEwMCwgCisgICAgMTIxLCA1MSwgODAsIDI2LCA0OSwgODMsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIDE2MiwgMjYsIDIzMywgMTc3LCAyMzQsIAorICAgIDEyMSwgMTAwLCAxMjEsIDExNSwgODAsIDI2LCAxMjcsIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgODAsIAorICAgIDI2LCAxMTUsIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDgzLCA4MCwgMjYsIDIzMywgMTc3LCAyMjQsIDE5NiwgCisgICAgMTAwLCAxMjEsIDQ5LCAxMTUsIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCA1MSwgMTE1LCA4MCwgMjYsIAorICAgIDQ5LCAxMjcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNDksIDEyNywgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAKKyAgICAxMjEsIDUxLCAxMjcsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDExNSwgCisgICAgMjMzLCAxNzcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAxMjcsIDIzMywgMTc3LCAyMzQsIDEyMSwgMTAwLCAKKyAgICAxMjEsIDUxLCAxNjIsIDI2LCA0OSwgODMsIDIzNCwgMTIxLCAxMDAsIDEyMSwgNDksIDE2MiwgMjYsIDUxLCA4MywgMjM0LCAKKyAgICAxMjEsIDEwMCwgMTIxLCA4MCwgODMsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgNTMsIDI0MSwgMjQ1LCAyMzMsIAorICAgIDE3NiwgMTAwLCAxMjEsIDgwLCA1MywgMjQxLCAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCA1MywgMjQxLCAyNDUsIAorICAgIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgNTMsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgNTMsIDIzMywgMTc2LCAKKyAgICAxMDAsIDEyMSwgNTMsIDIwMywgNDIsIDEwMCwgMTIxLCAxMjcsIDIwOSwgMTM5LCAyNiwgNTEsIDIzOSwgMTc1LCAxMDAsIAorICAgIDEyMSwgMTI3LCA1MywgMjYsIDUxLCAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgCisgICAgMTI3LCAyMDksIDEzOSwgMjYsIDQ5LCAyMzksIDE3NSwgMTAwLCAxMjEsIDEyNywgNTMsIDI2LCA0OSwgMjA5LCAxMzgsIAorICAgIDEwMCwgMTIxLCA1MywgMTI3LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDExNSwgMjA5LCAxMzksIDI2LCA1MSwgMjM5LCAKKyAgICAxNzUsIDEwMCwgMTIxLCAxMTUsIDUzLCAyNiwgNTEsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDExNSwgMjYsIDIxMywgNDYsIAorICAgIDEwMCwgMTIxLCAxMTUsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgMTE1LCA1MywgMjYsIDQ5LCAKKyAgICAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCAxMTUsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgODMsIDIwOSwgMTM5LCAyNiwgNTEsIAorICAgIDIzOSwgMTc1LCAxMDAsIDEyMSwgODMsIDUzLCAyNiwgNTEsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDgzLCAyNiwgMjEzLCAKKyAgICA0NiwgMTAwLCAxMjEsIDgzLCAyMDksIDEzOSwgMjYsIDQ5LCAyMzksIDE3NSwgMTAwLCAxMjEsIDgzLCA1MywgMjYsIDQ5LCAKKyAgICAyMDksIDEzOCwgMTAwLCAxMjEsIDUzLCA4MywgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMjcsIDIwOSwgMTM5LCAyNiwgCisgICAgMjMzLCAxNzcsIDIzOSwgMTc1LCAxMDAsIDEyMSwgMTI3LCA1MywgMjYsIDIzMywgMTc3LCAyMDksIDEzOCwgMTAwLCAxMjEsIAorICAgIDUzLCAxMjcsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDExNSwgMjA5LCAxMzksIDI2LCAyMzMsIDE3NywgMjM5LCAxNzUsIAorICAgIDEwMCwgMTIxLCAxMTUsIDUzLCAyNiwgMjMzLCAxNzcsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDExNSwgMjYsIDIzMywgCisgICAgMTc2LCAxMDAsIDEyMSwgODMsIDIwOSwgMTM5LCAyNiwgMjMzLCAxNzcsIDIzOSwgMTc1LCAxMDAsIDEyMSwgODMsIDUzLCAKKyAgICAyNiwgMjMzLCAxNzcsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDgzLCAyNiwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIAorICAgIDI1MCwgMjM3LCAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTI3LCAyNiwgMjI1LCAyOCwgCisgICAgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMTUsIAorICAgIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAyNDEsIDcxLCAyMDMsIDIyNSwgNTEsIDIwNSwgMTg2LCAyMjQsIDU0LCAKKyAgICAyMjUsIDI4LCAxMDAsIDEyMSwgMTYyLCAyNDEsIDcxLCAyMDMsIDIyNSwgNDksIDIwNSwgMTg2LCAyMjQsIDU0LCAyMTMsIAorICAgIDQ2LCAxMDAsIDEyMSwgMTYyLCAyNDEsIDcxLCAyNDIsIDIzNCwgMTAwLCAxMjEsIDE2MiwgMjI1LCAyOCwgMTAwLCAxMjEsIAorICAgIDE2MiwgMjAzLCAyMjgsIDEwMCwgMTIxLCAxNjIsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDIzOSwgMTY3LCAxMDAsIDEyMSwgCisgICAgODAsIDIyNSwgMjgsIDEwMCwgMTIxLCA4MCwgMjAzLCAyMjgsIDEwMCwgMTIxLCA4MCwgMjEzLCA0NiwgMTAwLCAxMjEsIDgwLCAKKyAgICAyMzksIDE2NywgMTAwLCAxMjEsIDE2MiwgNDksIDI2LCA4MCwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgODAsIAorICAgIDIzOSwgMTY3LCAxMDAsIDEyMSwgODAsIDQ5LCAyNiwgMTYyLCAyMTMsIDQ2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDE2MiwgCisgICAgMjM5LCAxNjcsIDIwMywgMjI1LCAxNjcsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMTIsIDIzOCwgMjI4LCAyNDgsIDEzNCwgMjI0LCAKKyAgICA1NCwgMTEyLCAyMTQsIDg4LCAyNDgsIDEzNCwgMjI0LCA1NCwgMTI2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDIyNCwgNTQsIAorICAgIDE2NywgMjQ4LCAxMzQsIDIyNCwgNTQsIDIzNywgNjEsIDIzOCwgMjI2LCAyNDgsIDEzNCwgMjI0LCA1NCwgMTI2LCAyMTQsIAorICAgIDg2LCAyNDgsIDEzNCwgMjI0LCA1NCwgMjEwLCAxMzYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgMjM2LCAxODMsIDI0OCwgMTM0LCAKKyAgICA0OSwgMjEwLCAxMzYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgNDksIDEyNiwgMjE0LCA4NiwgMjQ4LCAxMzQsIDQ5LCAyMzcsIAorICAgIDYxLCAyMzgsIDIyNiwgMjQ4LCAxMzQsIDQ5LCAxNjcsIDI0OCwgMTM0LCA0OSwgMTI2LCAyMzgsIDIyNiwgMjQ4LCAxMzQsIAorICAgIDQ5LCAxMTIsIDIxNCwgODgsIDI0OCwgMTM0LCA0OSwgMTEyLCAyMzgsIDIyOCwgMjQ4LCAxMzQsIDUxLCAxNjcsIDI0OCwgCisgICAgMTM0LCAxNjIsIDIxMCwgMTAzLCAyMjIsIDY2LCAyMTAsIDEwMywgMjQxLCAyNTAsIDIxMCwgMTAzLCAyMDMsIDIyNSwgMTEyLCAKKyAgICAyMzgsIDIyOCwgMjQ4LCAxMzQsIDUxLCAxMTIsIDIzOCwgMjI4LCAyNDgsIDEzNCwgMjE0LCA5MiwgMjI0LCA1NCwgMjI1LCAKKyAgICAyOCwgMjE0LCA5MiwgMjI0LCA1NCwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDIyNSwgMjgsIDIxNCwgOTIsIDIwMywgCisgICAgMjI1LCA0OSwgMjYsIDIyNCwgNTQsIDQ5LCAyNiwgMjI0LCA1NCwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDQ5LCAKKyAgICAyNiwgMjI0LCA1NCwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDQ5LCAyNiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCAKKyAgICA1NCwgMjI1LCAyOCwgMjE0LCA5MiwgMjAzLCAyMjUsIDQ5LCAyNiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgMjEzLCAKKyAgICA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDIxMywgNDYsIDIxNCwgOTIsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgNTQsIDIyNSwgCisgICAgMjgsIDIxNCwgOTIsIDIwMywgMjI1LCA1MSwgMjYsIDIyNCwgNTQsIDQ5LCAyNiwgMjI0LCA1NCwgMjEzLCA0NiwgNjMsIAorICAgIDIwOCwgMTkzLCA2NCwgMjA4LCAxOTMsIDY0LCA1MiwgMywgMjEyLCAyMTksIDI0MywgMTQsIDY0LCA1MiwgMjQzLCA0NSwgCisgICAgNjMsIDQsIDIwOCwgMTkzLCA1MiwgMywgMjMzLCAxNzcsIDIzNywgOTUsIDUyLCAzLCA4MywgMjM3LCA5NSwgNTIsIDMsIAorICAgIDIxNywgMTcsIDI0MiwgMjI5LCAyMzcsIDk1LCA1MiwgMywgMjAzLCAyMjUsIDQ5LCAyMDUsIDE4NiwgMjI0LCA1NCwgNTEsIAorICAgIDIzNywgOTUsIDUyLCAzLCAyMDMsIDIyNSwgNTEsIDIwNSwgMTg2LCAyMjQsIDU0LCA0OSwgMjM3LCA5NSwgNTIsIDMsIDI0MSwgCisgICAgNzEsIDI0MiwgMjI5LCAyMzcsIDk1LCA2MywgNCwgMjA4LCAxOTMsIDY0LCA0LCAyMDgsIDE5MywgNjMsIDIxMywgMTc1LCAKKyAgICA2NCwgMjEzLCAxNzUsIDYzLCA4MywgMjEzLCAxNzUsIDY0LCA4MywgMjEzLCAxNzUsIDYzLCAyMTYsIDExOSwgNjQsIDIxNiwgCisgICAgMTE5LCA2MywgMjAzLCAyMjcsIDIwNSwgOTgsIDY0LCAyMDMsIDIyNywgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCA0LCAyMDUsIAorICAgIDk4LCA2NCwgMjAzLCAyMjcsIDQsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCAyMDUsIDk4LCA2NCwgMjEzLCA0MSwgMjA1LCA5OCwgCisgICAgNjMsIDIxMywgNDEsIDQsIDIwNSwgOTgsIDY0LCAyMTMsIDQxLCA0LCAyMDUsIDk4LCA2MywgMjEzLCA0MSwgMjE1LCA5NywgCisgICAgNjQsIDIxMywgNDEsIDIxNSwgOTcsIDYzLCAyMzksIDE2NiwgMjA1LCA5OCwgNjQsIDIzOSwgMTY2LCAyMDUsIDk4LCA2MywgCisgICAgMjM5LCAxNjYsIDQsIDIwNSwgOTgsIDY0LCAyMzksIDE2NiwgNCwgMjA1LCA5OCwgNjMsIDIyNSwgMjMsIDIwNSwgOTgsIDY0LCAKKyAgICAyMjUsIDIzLCAyMDUsIDk4LCA2MywgMjI1LCAyMywgNCwgMjA1LCA5OCwgNjQsIDIyNSwgMjMsIDQsIDIwNSwgOTgsIDYzLCAKKyAgICAyMjUsIDIzLCAyMTUsIDk3LCA2NCwgMjI1LCAyMywgMjE1LCA5NywgNjMsIDI0MSwgNjQsIDY0LCAyNDEsIDY0LCA2NCwgCisgICAgMjQxLCA2NSwgMjQzLCA0NSwgNjMsIDQsIDI0MSwgNjQsIDIzNywgNzAsIDIyNCwgNDksIDY0LCAyNDYsIDE1NSwgMjM5LCAKKyAgICAxODAsIDI0NiwgMTU1LCAyNDYsIDE1NiwgMywgODMsIDIzNywgOTUsIDI0OCwgMTYsIDYzLCAyNDYsIDE1NSwgMjQ2LCAxNTYsIAorICAgIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyMjQsIAorICAgIDU0LCAxNjcsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgMjAzLCAyMjUsIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAKKyAgICAyMDMsIDIyNSwgNTEsIDIxNCwgOTIsIDI0OCwgMTQ0LCAyNDYsIDE1NiwgMywgMjUxLCAxMjUsIDI0NywgMjQ3LCAyMDMsIAorICAgIDIyNSwgNDksIDIxNCwgOTIsIDI0OCwgMTQ0LCA0OSwgMTY3LCA2MywgMjQ2LCAxNTUsIDUxLCAxNjcsIDYzLCAyNDYsIDE1NSwgCisgICAgMjI4LCA1MSwgMjQ4LCAyMCwgMjI4LCA1MSwgNjQsIDI0NiwgMTU1LCAyMDMsIDIyNSwgMTY3LCAyMjgsIDUxLCA2NCwgMjQ2LCAKKyAgICAxNTUsIDIyNCwgNTQsIDE2NywgMjI4LCA1MSwgNjQsIDI0NiwgMTU1LCAyMDMsIDIyNSwgNDksIDIxNCwgOTIsIDI0NiwgCisgICAgMTQ5LCAyNTAsIDIzNiwgMjAzLCAyMjUsIDUxLCAyMTQsIDkyLCAyNDYsIDE0OSwgMjUwLCAyMzYsIDIyNCwgNTQsIDUxLCAKKyAgICAyMTQsIDkyLCAyNDYsIDE0OSwgMjUwLCAyMzYsIDIyNCwgNTQsIDQ5LCAyMTQsIDkyLCAyNDYsIDE0OSwgMjUwLCAyMzYsIAorICAgIDIwMywgMjI1LCAxNjcsIDI0NiwgMTU1LCAyMjQsIDU0LCAxNjcsIDI0NiwgMTU1LCA2MywgMjI0LCA1NCwgNTEsIDIwNSwgCisgICAgOTgsIDYzLCAyMjQsIDU0LCA0OSwgMjA1LCA5OCwgNjMsIDIwMywgMjI1LCA0OSwgMjA1LCA5OCwgNjMsIDIwMywgMjI1LCAKKyAgICA1MSwgMjA1LCA5OCwgNjQsIDI0OCwgMjAsIDUyLCAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIDUxLCAxNjcsIDI0OCwgCisgICAgMTQ0LCA1MiwgMywgMjAzLCAyMjUsIDQ5LCAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgMjI0LCA1NCwgNTEsIAorICAgIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDY0LCA1MiwgMywgODMsIDI0OCwgMTU2LCAyMjQsIDE3NiwgNjQsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAzLCAyNDAsIDE4MiwgMjAzLCAyMjcsIDIwNSwgOTksIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDIyNSwgNzEsIDI0NiwgMTU1LCA2NCwgNTIsIDMsIDIwMywgMjI1LCAKKyAgICA0OSwgMjE0LCA5MSwgNjQsIDUyLCAzLCAyMjQsIDU0LCA0OSwgMjE0LCA5MSwgNjQsIDUyLCAzLCAyMjQsIDU0LCA1MSwgCisgICAgMjE0LCA5MSwgNjQsIDUyLCAzLCAyMDMsIDIyNSwgNTEsIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjAzLCAyMjUsIDQ5LCAKKyAgICAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIyNCwgNTQsIDQ5LCAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIyNCwgNTQsIAorICAgIDUxLCAyMTQsIDkxLCA2NCwgMjQ2LCAxNTYsIDMsIDIwMywgMjI1LCA1MSwgMjE0LCA5MSwgMjAzLCAyMjUsIDQ5LCAyMDUsIAorICAgIDk4LCAyMDMsIDIyNSwgNTEsIDIwNSwgOTgsIDIyNCwgNTQsIDQ5LCAyMDUsIDk4LCA2NCwgMjIyLCA2NiwgMjA4LCAxOTMsIAorICAgIDYzLCAyMjIsIDY2LCAyMDgsIDE5MywgNjQsIDIyMiwgNjYsIDQsIDIwOCwgMTkzLCA2MywgMjIyLCA2NiwgNCwgMjA4LCAKKyAgICAxOTMsIDIyNCwgNTQsIDUxLCAyMDUsIDk4LCA2MywgMjA3LCAyMjksIDMsIDIxMywgMTk0LCAyNDYsIDEwMSwgMjA0LCA5LCAKKyAgICAyMDksIDMxLCAyNDYsIDczLCA2MywgMjA4LCAxMDksIDY0LCAyMDgsIDEwOSwgMjI0LCAxOTMsIDIwNiwgMzAsIDIwNywgCisgICAgMjI4LCAyNTAsIDE4NCwgMjE4LCAyMzgsIDI0MSwgMTE4LCAyMTgsIDIzOCwgMjQzLCA1NCwgMjE3LCAzOSwgNjMsIDIwNiwgCisgICAgMTc1LCA2NCwgMjA2LCAxNzUsIDI0OSwgOTQsIDI0OCwgNzgsIDI0OSwgOTQsIDEwMCwgMywgMjQ3LCA2LCAyNDksIDk0LCAKKyAgICAxMDAsIDMsIDIwMCwgMTk1LCAyMTIsIDI0LCAyMDQsIDEwLCAzLCAyMTMsIDIyMywgMjM5LCAxNDQsIDIzMywgMTE4LCAyNDgsIAorICAgIDIwNCwgNjQsIDIxMCwgMywgMjE1LCAxOTYsIDYzLCAyMTAsIDMsIDIxNSwgMTk2LCAyMTAsIDkxLCAyMTMsIDEwNSwgMjEyLCAKKyAgICAyMjgsIDIzNywgMjgsIDIzNCwgMTI4LCAyNDgsIDIwLCA2MywgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCA2MywgNTEsIDIxNSwgCisgICAgOTYsIDIyOCwgMTAzLCA2NCwgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgMTE1LCAyMTUsIDk2LCAyMjgsIDEwMywgNjQsIAorICAgIDUxLCAyMTUsIDk2LCAyMjgsIDEwMywgNjQsIDEyNywgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgODEsIDI2LCAyNDIsIDIzMywgCisgICAgMjQ3LCAxMDUsIDU0LCAyMTMsIDIzNSwgNTQsIDI0OCwgMTY0LCA1NCwgMjQ3LCAxODEsIDI1MSwgNjEsIDIxNywgMTgsIAorICAgIDI0MiwgMjM0LCAyNDYsIDIzNywgMjEzLCA5MCwgMjQyLCAyMzUsIDc2LCAyMjQsIDY5LCAyNDIsIDIzNSwgNzYsIDIyNywgCisgICAgMjE3LCAyMDgsIDExMCwgMjYsIDI0MiwgMjQzLCAyMzcsIDE2MiwgOTksIDI1MSwgMjI4LCAyMTAsIDk0LCAyMzQsIDIwNywgCisgICAgMjYsIDIwOSwgMTc5LCAyMTYsIDcyLCA5OSwgMTk5LCAyNTUsIDIwMCwgNzUsIDIwNSwgODgsIDM2LCAyMzQsIDEyMywgMjA1LCAKKyAgICA4OCwgMzYsIDIyNSwgOTYsIDIwNSwgODgsIDM2LCAyMzcsIDc3LCAyMDUsIDg4LCAzNiwgMjA2LCAzMSwgMjA1LCA4OCwgMzYsIAorICAgIDIwMSwgMTYsIDIwNSwgODgsIDM2LCAyMDEsIDgyLCAyMDUsIDg4LCAzNiwgMjIxLCA2MywgMjA1LCA4OCwgMzYsIDIzOSwgCisgICAgMTcsIDIwMSwgMzgsIDc2LCAyNDEsIDkyLCA2NCwgMjM2LCAxOTUsIDIzNywgMTg5LCA2NCwgMjA5LCA0NywgMjM3LCAxODksIAorICAgIDYzLCAyMDksIDQ3LCAyMzcsIDE4OSwgNjQsIDIwNywgMjI5LCAzLCAyMTMsIDE5NCwgMjM3LCA3MywgMjE0LCA4OCwgMjIxLCAKKyAgICA4MSwgMjI1LCA2NCwgMjE0LCA4OCwgMjIxLCA4MSwgMjIyLCAzNCwgMjM3LCAxMzAsIDU0LCAyMzksIDE3LCAyMjIsIDE4NSwgCisgICAgNTQsIDIyNywgMTMzLCAyMTEsIDI0NCwgMjAzLCAyMDksIDIyMCwgMTgsIDIxNSwgMTEwLCAyNTAsIDIyMiwgMjA2LCAyMTksIAorICAgIDIzNiwgMiwgMjQ3LCAxNTQsIDIyNCwgMjQ2LCAyMDIsIDIwNiwgMjI0LCAyMDcsIDIxMSwgMjEyLCAyMTIsIDQ4LCAyNDcsIAorICAgIDEzOSwgMjUwLCAyNTQsIDIxNSwgMTQ1LCA2NCwgMjQ2LCAyNDQsIDIyNiwgMTQ0LCA2NCwgMjQ2LCAyNDQsIDIxNCwgODAsIAorICAgIDY0LCAyNDYsIDI0NCwgMjEyLCAyMzYsIDY0LCAyNDYsIDI0NCwgMjQ4LCAxNTUsIDY0LCAyNDYsIDI0NCwgMjI2LCA5MywgCisgICAgNjQsIDI0NiwgMjQ0LCAyMTYsIDg0LCA2MywgMjQ2LCAyNDQsIDIyNiwgMTQ0LCA2MywgMjQ2LCAyNDQsIDIxNCwgODAsIDYzLCAKKyAgICAyNDYsIDI0NCwgMjEyLCAyMzYsIDYzLCAyNDYsIDI0NCwgMjQ4LCAxNTUsIDYzLCAyNDYsIDI0NCwgMjI2LCA5MywgNjMsIAorICAgIDI0NiwgMjQ0LCAyMTYsIDg0LCA2MywgMjA4LCAyNDIsIDIwNywgMjQxLCA2NCwgMjM0LCAxMjgsIDIwNywgMjQxLCA2NCwgCisgICAgMjQxLCA2NSwgMjA3LCAyNDEsIDYzLCAyNDYsIDk4LCAyMDcsIDI0MSwgNjQsIDIwOCwgMjQyLCAyMDcsIDI0MSwgNjMsIAorICAgIDIzNCwgMTI4LCAyMDcsIDI0MSwgNjMsIDI0MSwgNjUsIDIwNywgMjQxLCA2NCwgMjQ2LCA5OCwgMjA3LCAyNDEsIDIzMywgCisgICAgMTE4LCAyMDgsIDE5OCwgMjE0LCA4OCwgMjE4LCAyMDksIDIzOCwgMjI4LCAyMTgsIDIwOSwgMjQ5LCA0LCAyMzgsIDIyOCwgCisgICAgMjE4LCAyMDQsIDI0OSwgNCwgMjA5LCA5OSwgMjE4LCAyMDQsIDIyMCwgMjQ2LCAyMzcsIDQ1LCA1NCwgMjIwLCAyNDYsIAorICAgIDIyMCwgMTE3LCA1NCwgMjIwLCAyNDYsIDIxMCwgNzksIDU0LCAyMDEsIDQ4LCAyMDcsIDEwMywgMjQyLCAyMzQsIDIzOSwgCisgICAgMTQsIDIwNywgMTAzLCAyNDIsIDIzNCwgMjAzLCAyMzcsIDIxMywgMTcxLCA5OSwgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAKKyAgICAxMjcsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDEyNSwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIAorICAgIDIwNCwgMTI0LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMjIsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIAorICAgIDM2LCAyMDQsIDEyMCwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTE4LCAyMTUsIDEyNywgMjEzLCAxNzEsIAorICAgIDE2LCAzNiwgMjA0LCAxMTYsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMzYsIDAsIDIyMiwgMTI2LCA2MywgMjAzLCAKKyAgICAyMzcsIDIxMywgMTcxLCA5OSwgMjEzLCAxNzIsIDIxNiwgMTM0LCA5OSwgMjE2LCAxMDcsIDIxNiwgMTM0LCA5OSwgMjE2LCAKKyAgICAxOSwgMjE2LCAxMzQsIDU0LCAyMDEsIDM2LCA5OSwgMjQxLCA1NywgMjM3LCAxODgsIDI0MSwgNTcsIDIzNywgMTg3LCAyNDEsIAorICAgIDU3LCAyMzcsIDE4NiwgMjQxLCA1NywgMjM3LCAxODUsIDI0MSwgNTcsIDIzNywgMTg0LCAyNDEsIDU3LCAyMzcsIDE4MywgCisgICAgNjQsIDI0NiwgMTU2LCAzLCA3MywgMjEzLCA0NiwgNjQsIDI0NiwgMTU2LCAzLCAxMjAsIDI0MCwgMTgwLCA2MywgMjQ2LCAKKyAgICAxNTYsIDMsIDY0LCA3MywgMjEzLCA0NiwgNjMsIDI0NiwgMTU2LCAzLCAxMjAsIDY0LCAyNDAsIDE4MCwgMjIxLCA5NywgMzYsIAorICAgIDIwMCwgNzUsIDIyMSwgOTcsIDM2LCAxOTksIDI1NCwgMjQxLCAzOCwgMzYsIDIzNSwgNjgsIDIwMCwgNzUsIDI0MSwgMzgsIAorICAgIDM2LCAyMjQsIDIzOSwgMTk5LCAyNTQsIDI0MSwgMzgsIDM2LCAyMjQsIDIzOSwgMjAwLCA3NSwgMjQxLCAzOCwgMzYsIDIzNSwgCisgICAgNjgsIDE5OSwgMjU0LCA2NCwgMjM3LCA1MywgNjMsIDIzNywgNTMsIDIzNCwgMjA3LCAyNiwgMjE1LCAyMDAsIDI1MSwgODEsIAorICAgIDI0MiwgMjMyLCAyMDcsIDE2OCwgMjA4LCAxMTgsIDc2LCAyNTEsIDIwNCwgMjExLCAyMjksIDI1MSwgMTQxLCAyMzcsIDI0LCAKKyAgICAyMzYsIDEyLCAyMDgsIDExOCwgNzYsIDIzNCwgOTgsIDI1MCwgMTQ3LCA5OSwgMjM3LCA0MCwgMjE2LCAyNTAsIDY0LCAyMDgsIAorICAgIDEwOSwgMTI2LCAyMjQsIDE3MSwgMjQzLCAzMSwgMjEzLCA0NiwgMTI2LCAyMjQsIDE3MSwgMjQzLCAzMSwgMjI1LCAyOCwgCisgICAgMjAxLCA5MywgNTQsIDEyMiwgMjAyLCAxODIsIDU0LCAyMzksIDE3MiwgMjM3LCAxMzAsIDU0LCAyMzksIDE3MiwgMjIyLCAKKyAgICAxODUsIDU0LCAyMjgsIDYxLCAyMzcsIDEzMCwgMjYsIDIyMiwgMTg1LCA1NCwgMjIyLCAxODUsIDI2LCAyMzcsIDEzMCwgNTQsIAorICAgIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCA1NCwgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDI2LCAyMjIsIDE4NSwgMjYsIDIzNywgCisgICAgMTMwLCA1NCwgODMsIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCA1NCwgMjMzLCAxNzcsIDIyMiwgMTg1LCAzLCAyMDgsIDQ3LCAKKyAgICA1NCwgMjIyLCA2NiwgNjQsIDI0NiwgMTU1LCAyMjIsIDY2LCA2MywgMjQ2LCAxNTUsIDIyMiwgNjYsIDQsIDY0LCAyNDYsIAorICAgIDE1NSwgMjIyLCAxNDMsIDk5LCAyNDAsIDIzMywgOTksIDIwMywgMjM0LCAyMTYsIDEwNiwgOTksIDI0NiwgODQsIDIzNiwgCisgICAgMTc4LCAyMDMsIDIwNSwgMjIwLCAxMSwgMjQ3LCA0MSwgMjE2LCAxNzksIDIyNywgMTM5LCAyMDIsIDI0NCwgMjQ2LCAyMTcsIAorICAgIDYzLCAyMjEsIDgyLCAyMjQsIDE5MCwgMjEwLCAxMjUsIDIxMCwgMTY0LCAyMTQsIDcwLCAyMTAsIDE0NCwgMjA5LCAyNiwgCisgICAgMjQ5LCA5NywgMjQ5LCA2MywgOTUsIDIyNiwgMjE0LCA2NCwgMjM5LCAxNTUsIDIyMiwgMTgwLCA2NCwgMjM5LCAxNTUsIAorICAgIDIyNiwgMTQ0LCA2MywgMjM5LCAxNTUsIDIyMiwgMTgwLCA2MywgMjM5LCAxNTUsIDIyNiwgMTQ0LCAyMDksIDMyLCAyMDEsIAorICAgIDMsIDIwOSwgMzUsIDIwNywgMjI5LCAyNDgsIDIzNywgMjQ2LCAxMDEsIDIxMywgMjIyLCA2MywgMjA5LCAzMSwgMjA2LCAzMiwgCisgICAgMjQ2LCAxMDIsIDI2LCAyMTMsIDIyMiwgMjA0LCAxODUsIDY0LCAyMTAsIDMsIDIxNSwgMTk2LCAyMDQsIDE4NSwgNjMsIAorICAgIDIxMCwgMywgMjE1LCAxOTYsIDY0LCAyNDEsIDY1LCAyMjgsIDExOCwgMjA4LCAxOTMsIDI0MiwgMjI4LCAyMjUsIDc4LCAKKyAgICAyNDEsIDUsIDI0NywgMTM1LCAyMTcsIDQyLCAyMTUsIDIwMCwgMjQ3LCAxMzYsIDIwOSwgNjUsIDIzNCwgMTA4LCAzLCA2NCwgCisgICAgMjQyLCAyMzQsIDQ0LCAyNDIsIDIyOCwgMjI1LCA3OCwgMjQ3LCAzMywgMjE4LCAyNDIsIDIzOCwgMTQ5LCAyNTEsIDEwOSwgCisgICAgMjE3LCA3MSwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2MywgMjA0LCAxMzgsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjQsIAorICAgIDIwNCwgMTM4LCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDYzLCA0OSwgMjI1LCA3OSwgMjIyLCAzMywgNjQsIDQ5LCAyMjUsIAorICAgIDc5LCAyMjIsIDMzLCAyMzksIDE1MCwgMjA5LCA1NywgNTQsIDgwLCA2NCwgMjM5LCAxNjYsIDIwNSwgOTgsIDQ5LCAyNDYsIAorICAgIDExMCwgMjM4LCAxNDksIDk1LCAyMTIsIDI0LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjI4LCAxMTgsIDY0LCAyNDYsIDE1NiwgCisgICAgMjI4LCAxMTgsIDYzLCAyMDgsIDE5MywgNjMsIDIwNSwgNjIsIDIxMywgMTE2LCA0OSwgMjM4LCAxNDgsIDIxMywgMTE2LCAKKyAgICA0OSwgMjM4LCAxNDcsIDI1MCwgMTYwLCAxNiwgMzYsIDIwMywgMjA5LCA4MCwgMjQ2LCAxNTYsIDMsIDIwOCwgNDcsIDI2LCAKKyAgICAxMjAsIDE5MCwgNTYsIDIxNiwgMzYsIDIxMywgNDMsIDIyOCwgNjMsIDIxNiwgMzYsIDIyNSwgMjUsIDIyOCwgNjMsIDIxNiwgCisgICAgMzYsIDIyOCwgNTAsIDIxNiwgMzYsIDYzLCAyNDIsIDIzNSwgMjE3LCA3OSwgMjEwLCAzMCwgMjEwLCAxOCwgMjA5LCAyMjUsIAorICAgIDI0NiwgMTg0LCAyNDcsIDExMywgMjM0LCA0NiwgMjA5LCAxMDcsIDIzNiwgMTMsIDIwMSwgMywgMjMzLCA5NCwgMjM2LCAxMywgCisgICAgMywgMjM0LCAxNzYsIDIyMiwgMTY1LCAxNiwgMzYsIDIyNCwgMTk1LCAyMjEsIDYzLCAyMDQsIDEwLCAyMTcsIDc5LCAyMzUsIAorICAgIDU5LCAyMzYsIDIzMCwgMjM3LCA1NCwgMjI4LCAxMTgsIDIzMywgMTk3LCAyMzcsIDEyMCwgMjEyLCA0MywgNTIsIDIzNiwgCisgICAgMjI5LCAyNDMsIDE0LCAyMDksIDg0LCAyMzIsIDIzMiwgMjA5LCA4NywgMjE2LCAxMSwgMywgMjQ5LCA5NywgMjA2LCAxNTgsIAorICAgIDIyNywgMjM2LCAyNDksIDgyLCA5OSwgMjM0LCAxMzEsIDIzNSwgNzAsIDk5LCAyMzYsIDE4NiwgMjE0LCAyMTMsIDI0MiwgCisgICAgMjAzLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDY0LCAyMzcsIDU0LCAzLCAyMzMsIDE3NywgMTAxLCA2MywgMjA4LCA0OCwgCisgICAgNjMsIDIxMiwgNTMsIDIxMSwgMjE2LCAyMDMsIDIyNSwgMjQ4LCAxMzksIDIxMSwgMjE2LCA2MywgMjExLCAyMTYsIDIyNCwgCisgICAgNTQsIDI0OCwgMTM5LCAyMTEsIDIxNiwgNjQsIDIxMSwgMjE2LCA2NCwgODAsIDI0NywgNywgODEsIDIwNiwgMTc2LCAyMjQsIAorICAgIDEwOCwgNTQsIDIwNiwgMjM1LCAyMzksIDE0OSwgMjUxLCAxNjQsIDIzOCwgMTQ0LCAyMTMsIDIyMCwgMjM3LCA2NiwgMjEzLCAKKyAgICAyMjAsIDIzNCwgMTk5LCAyMDIsIDIzMiwgMjM0LCAxOTksIDIwMCwgMjE5LCAyMzQsIDE5OSwgMjI0LCA1NCwgNTEsIDIxNiwgCisgICAgNDYsIDIxNiwgNDYsIDIwMywgMjI1LCA1MSwgMjE2LCA0NiwgNjQsIDIxOSwgMTQ3LCA2MywgMjE5LCAxNDcsIDI0NywgNywgCisgICAgODEsIDgwLCAyNDcsIDcsIDgxLCAyMjEsIDE5LCAyMDAsIDE5NSwgODAsIDIyMSwgMTksIDIwMCwgMTk1LCAyNDksIDk0LCAKKyAgICAyMDAsIDE5NSwgODAsIDI0OSwgOTQsIDIwMCwgMTk1LCAyMTYsIDI1MCwgMzEsIDI0MiwgMjM0LCA4MCwgMzEsIDI0MiwgCisgICAgMjM0LCAxNzYsIDI0NywgNTYsIDI0MiwgMjM0LCA4MCwgMTc2LCAyNDcsIDU2LCAyNDIsIDIzNCwgOCwgMjQyLCAyMzQsIAorICAgIDIxMCwgMTAxLCA2NCwgOCwgMjQyLCAyMzQsIDIxNiwgMjUwLCA4LCAyNDIsIDIzNCwgMjIyLCAxODIsIDI0MiwgMjM0LCAKKyAgICAyMDgsIDExMCwgNzYsIDI0MSwgMjM3LCAyMzYsIDIyOSwgMjA2LCAxOTQsIDI1MCwgMTY1LCAyMzYsIDIyOSwgMjQ5LCA5NSwgCisgICAgMjUwLCAxNjUsIDgwLCAyMzYsIDIyOSwgMjQ5LCA5NSwgMjUwLCAxNjUsIDIzNiwgMjI5LCAyNDYsIDk2LCAyNTAsIDE2NSwgCisgICAgNjMsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMDgsIDEwOSwgNjQsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMDgsIDEwOSwgMjA4LCAKKyAgICAyMzcsIDIwOCwgNTcsIDIxNiwgMjUwLCA2NCwgMjA4LCAxMDksIDQ0LCA2NCwgMjA4LCAxMDksIDE3NiwgMjQ3LCA1NiwgNjMsIAorICAgIDIwOCwgMTA5LCA2MywgMjQ3LCA1NiwgNjQsIDIwOCwgMTA5LCAyMTYsIDI1MCwgNjMsIDIwOCwgMTA5LCA4MCwgMjE2LCAKKyAgICAyNTAsIDYzLCAyMDgsIDEwOSwgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMTAsIDEwMSwgNjQsIDIwOCwgMTA5LCA4MCwgMjUwLCAKKyAgICAxNjUsIDE3NiwgMjQ3LCA1NiwgMjUwLCAxNjUsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjMyLCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDIzOCwgMjMyLCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIwOSwgMTA2LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDIzOCwgMjMyLCAyMTUsIDk4LCAyMTMsIDE3MywgNjMsIDIwOCwgMTA5LCA4MCwgMjM4LCAKKyAgICAyMzIsIDIxNSwgOTgsIDIxMywgMTczLCA2MywgMjA4LCAxMDksIDIwNCwgMTY1LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIAorICAgIDIwOSwgMTAxLCAyMTUsIDk4LCAyNTAsIDE2NSwgMjA2LCAxOTQsIDI1MCwgMTY1LCAxNzYsIDI0NywgNTYsIDIwNiwgMTk0LCAKKyAgICAyNTAsIDE2NSwgODAsIDIwNiwgMTk0LCAyNTAsIDE2NSwgMjA5LCAxMDYsIDIxNSwgMjU1LCA2MywgMjYsIDY0LCAyMzcsIAorICAgIDI3LCA2MywgMjM3LCAyNywgNjQsIDIzNywgMjcsIDIzOCwgMjMyLCAyMTUsIDI1NSwgMjE2LCAyNTAsIDYzLCAyMzcsIDI3LCAKKyAgICA0NCwgMTc2LCAyNDcsIDU2LCAyMzgsIDIzMiwgMjE1LCA5OCwgMjA4LCAxMDksIDgwLCAyMDYsIDE5NCwgMjE1LCAxNTUsIAorICAgIDI1MCwgMTY1LCAyMDksIDMzLCAyMDYsIDEsIDIwNSwgOTEsIDIwOSwgMzMsIDgwLCAyNDYsIDI0MCwgMjA5LCAzMywgMjA4LCAKKyAgICAyMzksIDgwLCAyMDgsIDIzOSwgMjQ5LCA5NSwgMjUwLCAxNjUsIDIzOCwgMjMyLCAyMDYsIDE5NCwgMjE0LCAyNDYsIDI1MCwgCisgICAgMTY1LCA4MCwgMjM4LCAyMzIsIDIwNiwgMTk0LCAyMTQsIDI0NiwgMjUwLCAxNjUsIDI0MiwgMjM1LCA4MSwgMjEwLCAxMDEsIAorICAgIDY0LCAyNDYsIDE1NSwgMTg5LCA5NSwgMjQyLCAyMzUsIDgxLCAyMjQsIDU0LCA1MSwgMjM5LCAxNDYsIDY0LCAyMDgsIDE5MywgCisgICAgMjAzLCAyMjUsIDUxLCAyMzksIDE0NiwgNjQsIDIwOCwgMTkzLCAyMjQsIDU0LCA1MSwgMjEwLCAxMDEsIDY0LCAyMDgsIAorICAgIDE5MywgMjAzLCAyMjUsIDUxLCAyMTAsIDEwMSwgNjQsIDIwOCwgMTkzLCA2MywgMjE0LCA3OSwgMTM0LCAyMTcsIDIxLCA2NCwgCisgICAgMjE0LCA3OSwgMTM0LCAyMTcsIDIxLCA2NCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCA2MywgMjQxLCA2NSwgMjIxLCAxNTcsIAorICAgIDY0LCAyMDAsIDE5NSwgODAsIDIzOCwgNDMsIDEzNCwgOTksIDE2MiwgODMsIDE0OCwgMjIyLCA2NiwgODMsIDE0OCwgODAsIAorICAgIDgzLCAxNDgsIDgwLCAyMDksIDEzOSwgMjA0LCAxODUsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDIwOSwgCisgICAgMTM5LCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCA1MywgMjA0LCAxODUsIDI0NiwgNzEsIDIxNCwgNjMsIAorICAgIDEzNCwgMjE3LCAyMSwgODAsIDUzLCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAxMjgsIDIwOSwgMTM5LCAKKyAgICAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAxMjgsIDUzLCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgCisgICAgMjEsIDI0MiwgMTg4LCAyMDgsIDkzLCAyMTYsIDEyOCwgMiwgMjE3LCAyMSwgODAsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgCisgICAgODAsIDIzNCwgMTI4LCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIDgwLCA2MywgMjM0LCAxMjcsIDIxMiwgMjI4LCA4MCwgNjMsIAorICAgIDIzNCwgMTI4LCAyNDgsIDIwLCAyMzcsIDI4LCAyMzQsIDEyNywgMjEyLCAyMjgsIDIzNywgMjgsIDIzNCwgMTI4LCAyNDgsIAorICAgIDIwLCAyMjIsIDY2LCA0OSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgNjYsIDUxLCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCAKKyAgICA2NiwgMjM3LCA0MSwgNDksIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIDY2LCAyMzcsIDQxLCA1MSwgMjE2LCAxMTYsIDIxNywgCisgICAgMjEsIDIyMiwgNjYsIDIyNSwgMjMsIDI1MSwgNzEsIDI0OCwgNzAsIDIxNywgMjEsIDIyMiwgNjYsIDIxMywgNDEsIDI1MSwgCisgICAgNzEsIDI0OCwgNzAsIDIxNywgMjEsIDgwLCAyMjUsIDIzLCAyNTEsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAKKyAgICAyMTMsIDQxLCAyNTEsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDgwLCAyMjUsIDIzLCAyNTEsIDcxLCAyNDgsIDcwLCAKKyAgICAyMTcsIDIxLCA4MCwgMjEzLCA0MSwgMjUxLCA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgMTYyLCA0OSwgMjA1LCAxNDYsIDIxMCwgCisgICAgNTUsIDI0OCwgNzAsIDIxNywgMjEsIDE2MiwgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDcwLCAyMTcsIDIxLCAyMjIsIAorICAgIDY2LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIxNywgMjEsIDIyMiwgNjYsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjE3LCAKKyAgICAyMSwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDEwMiwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDEwNSwgMjQxLCAxNywgMTg5LCAKKyAgICA0NCwgMTcsIDE0NywgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDE0OSwgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDE2NCwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgMTcsIDE4NywgMjQxLCAxNywgMTg5LCA0NCwgMTcsIDIxMCwgMTM1LCAyNDEsIDE3LCAxODksIDQ0LCAKKyAgICAxNywgMTkyLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMjE5LCAxMTMsIDI0MSwgMTcsIDE4OSwgNDQsIDQxLCAyMDYsIDE2NiwgCisgICAgMjQxLCAxNywgNDQsIDQzLCAxNywgMTAyLCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxMDUsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIAorICAgIDE0NywgMjQxLCAxNywgNDQsIDQzLCAxNywgMTQ5LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxNjQsIDI0MSwgMTcsIDQ0LCA0MywgCisgICAgMTcsIDE4NywgMjQxLCAxNywgNDQsIDQzLCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE5MiwgMjQxLCAKKyAgICAxNywgNDQsIDQzLCAxNywgMjE5LCAxMTMsIDI0MSwgMTcsIDQ0LCA0MywgNDEsIDIwNiwgMTY2LCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCA0MywgMTcsIDEwMiwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAxMDUsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgCisgICAgMTQ3LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDE0OSwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAxNjQsIDI0MSwgCisgICAgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTg3LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDIxMCwgMTM1LCAyNDEsIDE3LCAKKyAgICAxODksIDQ0LCA0MywgMTcsIDE5MiwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAyMTksIDExMywgMjQxLCAxNywgMTg5LCAKKyAgICA0NCwgNDMsIDQxLCAyMDYsIDE2NiwgODAsIDIwMSwgMjcsIDg3LCA0OCwgODAsIDkzLCA1NCwgODAsIDIyMSwgMTU3LCA1NCwgCisgICAgODAsIDI0MCwgMjM1LCA1NCwgODAsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgODAsIDg3LCA0OCwgODAsIDE1NywgMjM5LCAKKyAgICAxNCwgNDgsIDIzOSwgMTYwLCAyMTUsIDEwMCwgODcsIDQ4LCA4MCwgMjEyLCAyMjAsIDg3LCA0OCwgMjA1LCA5NywgODcsIAorICAgIDQ4LCA4MCwgMjA1LCA5NywgODcsIDQ4LCAyNDEsIDI0MywgMjA1LCA5NywgODcsIDQ4LCA4MCwgMjQxLCAyNDMsIDIwNSwgCisgICAgOTcsIDg3LCA0OCwgNjMsIDg3LCA0OCwgMjA2LCA0NSwgMjA1LCAxNTYsIDg3LCAyNTAsIDIwMiwgMjA2LCA0NSwgMjQ4LCAKKyAgICA5MSwgODcsIDI1MCwgMjAyLCA2MywgODcsIDI1MCwgMjAyLCA4MCwgNjMsIDI0MiwgMTg4LCAxOTEsIDI2LCA4NywgNDgsIAorICAgIDgwLCA2MywgMjQyLCAxODgsIDE4MiwgMjYsIDg3LCA0OCwgMjA4LCAxOTAsIDYzLCA4NywgNDgsIDgwLCAyNDMsIDY3LCA2MywgCisgICAgODcsIDQ4LCAyMTMsIDQwLCA2NCwgODcsIDQ4LCAyMjUsIDIyLCA2NCwgODcsIDQ4LCAyNDksIDEyOCwgMjEwLCAxMDEsIDY0LCAKKyAgICA4NywgNDgsIDIzNiwgMTk4LCAyMTAsIDEwMSwgNjQsIDg3LCA0OCwgODAsIDIyNCwgNTQsIDIxMywgMzksIDY0LCA4NywgNDgsIAorICAgIDgwLCAyMDMsIDIyNSwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgMjE4LCAyMTEsIDIyNCwgNTQsIDIxMywgMzksIDY0LCA4NywgCisgICAgNDgsIDI0MiwgMTk2LCAyMjQsIDc0LCAyMTgsIDIxMSwgMjAzLCAyMjUsIDIxMywgMzksIDY0LCA4NywgNDgsIDQ0LCA4MCwgCisgICAgNjQsIDg3LCA0OCwgMjAxLCAzMywgODcsIDQ4LCAyNDgsIDE0MywgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyNDgsIDE0MywgCisgICAgODcsIDQ4LCAyNDgsIDE0MywgMTU3LCAyMzksIDE0LCA0OCwgODAsIDI0OCwgMTQzLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIAorICAgIDgwLCAyNDgsIDE0MywgODcsIDQ4LCA4MCwgMjQ4LCAxNDMsIDE1NywgMjM5LCAxNCwgNDgsIDIwNiwgMTk2LCA4NywgNDgsIAorICAgIDgwLCAyMDYsIDE5NSwgODcsIDQ4LCAyMDEsIDU4LCA4NywgNDgsIDgwLCAyMDEsIDU4LCA4NywgNDgsIDIxNywgNDgsIDg3LCAKKyAgICA0OCwgNTMsIDI0MiwgMTk2LCAyMjQsIDc0LCAxMjYsIDI0MSwgMjcsIDI1MSwgNzAsIDY0LCAyMDUsIDk5LCAyNDMsIDQ1LCAKKyAgICA0LCA2NCwgMjA1LCA5OCwgMjE2LCAxNCwgMTc2LCAyMDgsIDIsIDE3NiwgMjA3LCAyMTEsIDQ5LCAyMTIsIDEyMSwgMjQ5LCAKKyAgICAxMTQsIDI0MSwgMTQyLCA1MSwgMjEyLCAxMjEsIDI0OSwgMTE0LCAyNDEsIDE0MiwgMjE3LCAzNCwgMywgNzMsIDIyOCwgNzMsIAorICAgIDIxMywgMTA2LCAyMDksIDE3LCAyMTUsIDI3LCAyMDgsIDIsIDIwNywgMjEyLCAyMTUsIDI3LCAyMDksIDE2LCA4MywgMjQ5LCAKKyAgICA3NywgMywgMjMzLCAxNzcsIDk3LCAxMywgMjEzLCAxOSwgMjQxLCA3MCwgMTY4LCAyNDAsIDIzNCwgMTMsIDIzNywgMTcxLCAKKyAgICAyNDEsIDcwLCA5NSwgMjI0LCA5OCwgMjUxLCA3OSwgOTUsIDIyNCwgOTgsIDIxNywgMzMsIDY0LCAyNDEsIDY1LCAzLCAyNDcsIAorICAgIDU0LCAyNDAsIDE4MiwgMjYsIDMsIDI0MCwgMTgyLCAyMzgsIDIwMiwgNzYsIDIxNywgNDYsIDIwMywgMjE2LCAyMjQsIDU0LCAKKyAgICA1MSwgMjQzLCAxNiwgMywgMjQwLCAxODIsIDIwMywgMjI1LCA0OSwgMjQzLCAxNiwgMywgMjQwLCAxODIsIDQ5LCAyMTYsIAorICAgIDI1MiwgMjI3LCAxNjQsIDUxLCAyMTYsIDI1MiwgMjI3LCAxNjQsIDIzNiwgMTgzLCAyMTYsIDI1MiwgMjI3LCAxNjQsIDIyNSwgCisgICAgNzEsIDExNSwgMjA3LCAxNywgMjI1LCA3MSwgMTI3LCAyMDcsIDE3LCA0OSwgMjYsIDUxLCA1MywgMjA0LCAxODQsIDQ5LCAKKyAgICAyNiwgNTEsIDIwNywgMTcsIDQ5LCAyMjEsIDIzLCAxNjgsIDUxLCAyMDcsIDE3LCAxNjgsIDQ5LCAyMDcsIDE3LCAxMTUsIAorICAgIDIwNywgMTgsIDMsIDI0NiwgMTU2LCA1NiwgMjI0LCA1MCwgMjQwLCAyNDAsIDI0NywgMjM1LCAyMzMsIDE3NywgMjEyLCAKKyAgICAxNjUsIDY0LCAyNDMsIDY2LCAyNDEsIDY0LCA2NCwgMjQzLCA2NiwgMjQxLCA2NSwgMywgOTgsIDIwNiwgMTEsIDY0LCAyNDMsIAorICAgIDY2LCAyNDEsIDY1LCAzLCA4NywgMjA2LCAxMSwgNjQsIDUyLCAzLCA5OCwgMjA2LCAxMSwgNjQsIDUyLCAzLCA4NywgMjA2LCAKKyAgICAxMSwgMTMsIDQ5LCA2NCwgNTIsIDE1OSwgMTMsIDUxLCA2NCwgNTIsIDE1OSwgMTMsIDQ5LCAyNTEsIDcxLCAxNTksIDEzLCAKKyAgICA1MSwgMjUxLCA3MSwgMTU5LCAxMywgNDksIDUzLCAyNTEsIDcxLCAxNTksIDEzLCA1MSwgNTMsIDI1MSwgNzEsIDE1OSwgMTMsIAorICAgIDQ5LCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMTMsIDUxLCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMTMsIAorICAgIDQ5LCAyMzcsIDQxLCAyMTYsIDExNSwgMTMsIDUxLCAyMzcsIDQxLCAyMTYsIDExNSwgMTgyLCAyMTQsIDkwLCA0OCwgMTkxLCAKKyAgICAyMTQsIDkwLCA0OCwgMjUxLCA0NywgMjM2LCA1MSwgMjQ2LCAxNTYsIDQ4LCAyNDYsIDExMiwgMjM2LCA1MSwgMjQ2LCAxNTYsIAorICAgIDQ4LCA1MSwgNTUsIDMsIDQ0LCAyMTUsIDExMywgMTY4LCA5OCwgNDgsIDE2OCwgODcsIDQ4LCAxNjgsIDQ5LCA1MSwgNDgsIAorICAgIDE2OCwgOTgsIDUzLCA0OCwgMTY4LCA4NywgNTMsIDQ4LCAxNjgsIDQ5LCA1MSwgNTMsIDQ4LCAxNjgsIDk4LCA1NSwgMjM2LCAKKyAgICAyMDEsIDE0OCwgMTY4LCA4NywgNTUsIDIzNiwgMjAxLCAxNDgsIDE2OCwgOTgsIDUzLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgMTY4LCA4NywgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxNjgsIDg3LCAyMDgsIDE4NiwgNDgsIDU5LCA2MCwgMjQ4LCAxMzcsIAorICAgIDU5LCA2MCwgMjQwLCAxNzksIDU5LCA2MCwgMjQwLCA1MSwgNTksIDYwLCAyNDAsIDE3OCwgNTksIDYwLCAyMzksIDI0MywgCisgICAgNTksIDYwLCAyNDAsIDExNCwgNTksIDYwLCAyNDAsIDUwLCA1OSwgNjAsIDI0MCwgMTc3LCA1OSwgNjAsIDIzOSwgMjExLCAKKyAgICA1OSwgNjAsIDI0MCwgODIsIDU5LCA2MCwgMjQwLCAxOCwgNTksIDYwLCAyNDAsIDE0NSwgNTksIDYwLCAyMzksIDI0MiwgNTksIAorICAgIDYwLCAyNDAsIDExMywgNTksIDYwLCAyNDAsIDQ5LCA1OSwgNjAsIDI0MCwgMTc2LCA1OSwgNjAsIDIzOSwgMTk1LCA1OSwgCisgICAgNjAsIDI0MCwgNjYsIDU5LCA2MCwgMjQwLCAyLCA1OSwgNjAsIDI0MCwgMTI5LCA1OSwgNjAsIDIzOSwgMjI2LCA1OSwgNjAsIAorICAgIDI0MCwgOTcsIDU5LCA2MCwgMjQwLCAzMywgNTksIDYwLCAyNDAsIDE2MCwgNTksIDYwLCAyMzksIDIxMCwgNTksIDYwLCAKKyAgICAyNDAsIDgxLCA1OSwgNjAsIDI0MCwgMTcsIDU5LCA2MCwgMjQwLCAxNDQsIDU5LCA2MCwgMjM5LCAyNDEsIDU5LCA2MCwgCisgICAgMjQwLCAxMTIsIDU5LCA2MCwgMjQwLCA0OCwgNTksIDYwLCAyNDAsIDE3NSwgNTksIDYwLCAyMzksIDE4NywgNTksIDYwLCAKKyAgICAyNDAsIDU4LCA1OSwgNjAsIDIzOSwgMjUwLCA1OSwgNjAsIDI0MCwgMTIxLCA1OSwgNjAsIDIzOSwgMjE4LCA1OSwgNjAsIAorICAgIDI0MCwgODksIDU5LCA2MCwgMjQwLCAyNSwgNTksIDYwLCAyNDAsIDE1MiwgNTksIDYwLCAyMzksIDIwMiwgNTksIDYwLCAKKyAgICAyNDAsIDczLCA1OSwgNjAsIDI0MCwgOSwgNTksIDYwLCAyNDAsIDEzNiwgNTksIDYwLCAyMzksIDIzMywgNTksIDYwLCAyNDAsIAorICAgIDEwNCwgNTksIDYwLCAyNDAsIDQwLCA1OSwgNjAsIDI0MCwgMTY3LCA1OSwgNjAsIDIzOSwgMTk0LCA1OSwgNjAsIDI0MCwgCisgICAgNjUsIDU5LCA2MCwgMjQwLCAxLCA1OSwgNjAsIDI0MCwgMTI4LCA1OSwgNjAsIDIzOSwgMjI1LCA1OSwgNjAsIDI0MCwgOTYsIAorICAgIDU5LCA2MCwgMjQwLCAzMiwgNTksIDYwLCAyNDAsIDE1OSwgNTksIDYwLCAyMzksIDIwOSwgNTksIDYwLCAyNDAsIDgwLCA1OSwgCisgICAgNjAsIDI0MCwgMTYsIDU5LCA2MCwgMjQwLCAxNDMsIDU5LCA2MCwgMjM5LCAyNDAsIDU5LCA2MCwgMjQwLCAxMTEsIDU5LCAKKyAgICA2MCwgMjQwLCA0NywgNTksIDYwLCAyNDAsIDE3NCwgNTksIDYwLCAyMzksIDE4MywgNTksIDYwLCAyNDAsIDU0LCA1OSwgNjAsIAorICAgIDIzOSwgMjQ2LCA1OSwgNjAsIDI0MCwgMTE3LCA1OSwgNjAsIDIzOSwgMjE0LCA1OSwgNjAsIDI0MCwgODUsIDU5LCA2MCwgCisgICAgMjQwLCAyMSwgNTksIDYwLCAyNDAsIDE0OCwgNTksIDYwLCAyMzksIDE5OCwgNTksIDYwLCAyNDAsIDY5LCA1OSwgNjAsIAorICAgIDI0MCwgNSwgNTksIDYwLCAyNDAsIDEzMiwgNTksIDYwLCAyMzksIDIyOSwgNTksIDYwLCAyNDAsIDEwMCwgNTksIDYwLCAKKyAgICAyNDAsIDM2LCA1OSwgNjAsIDI0MCwgMTYzLCA1OSwgNjAsIDIzOSwgMTkwLCA1OSwgNjAsIDI0MCwgNjEsIDU5LCA2MCwgCisgICAgMjM5LCAyNTMsIDU5LCA2MCwgMjQwLCAxMjQsIDU5LCA2MCwgMjM5LCAyMjEsIDU5LCA2MCwgMjQwLCA5MiwgNTksIDYwLCAKKyAgICAyNDAsIDI4LCA1OSwgNjAsIDI0MCwgMTU1LCA1OSwgNjAsIDIzOSwgMjA1LCA1OSwgNjAsIDI0MCwgNzYsIDU5LCA2MCwgCisgICAgMjQwLCAxMiwgNTksIDYwLCAyNDAsIDEzOSwgNTksIDYwLCAyMzksIDIzNiwgNTksIDYwLCAyNDAsIDEwNywgNTksIDYwLCAKKyAgICAyNDAsIDQzLCA1OSwgNjAsIDI0MCwgMTcwLCA1OSwgNjAsIDIzOSwgMTg2LCA1OSwgNjAsIDI0MCwgNTcsIDU5LCA2MCwgCisgICAgMjM5LCAyNDksIDU5LCA2MCwgMjQwLCAxMjAsIDU5LCA2MCwgMjM5LCAyMTcsIDU5LCA2MCwgMjQwLCA4OCwgNTksIDYwLCAKKyAgICAyNDAsIDI0LCA1OSwgNjAsIDI0MCwgMTUxLCA1OSwgNjAsIDIzOSwgMjAxLCA1OSwgNjAsIDI0MCwgNzIsIDU5LCA2MCwgCisgICAgMjQwLCA4LCA1OSwgNjAsIDI0MCwgMTM1LCA1OSwgNjAsIDIzOSwgMjMyLCA1OSwgNjAsIDI0MCwgMTAzLCA1OSwgNjAsIAorICAgIDI0MCwgMzksIDU5LCA2MCwgMjQwLCAxNjYsIDU5LCA2MCwgMjM5LCAxOTMsIDU5LCA2MCwgMjQwLCA2NCwgNTksIDYwLCAKKyAgICAyNDAsIDAsIDU5LCA2MCwgMjQwLCAxMjcsIDU5LCA2MCwgMjM5LCAyMjQsIDU5LCA2MCwgMjQwLCA5NSwgNTksIDYwLCAyNDAsIAorICAgIDMxLCA1OSwgNjAsIDI0MCwgMTU4LCA1OSwgNjAsIDIzOSwgMjA4LCA1OSwgNjAsIDI0MCwgNzksIDU5LCA2MCwgMjQwLCAxNSwgCisgICAgNTksIDYwLCAyNDAsIDE0MiwgNTksIDYwLCAyMzksIDIzOSwgNTksIDYwLCAyNDAsIDExMCwgNTksIDYwLCAyNDAsIDQ2LCAKKyAgICA1OSwgNjAsIDI0MCwgMTczLCA1OSwgNjAsIDIzOSwgMTgxLCA1OSwgNjAsIDI0MCwgNTIsIDU5LCA2MCwgMjM5LCAyNDQsIAorICAgIDU5LCA2MCwgMjQwLCAxMTUsIDU5LCA2MCwgMjM5LCAyMTIsIDU5LCA2MCwgMjQwLCA4MywgNTksIDYwLCAyNDAsIDE5LCA1OSwgCisgICAgNjAsIDI0MCwgMTQ2LCA1OSwgNjAsIDIzOSwgMTk2LCA1OSwgNjAsIDI0MCwgNjcsIDU5LCA2MCwgMjQwLCAzLCA1OSwgNjAsIAorICAgIDI0MCwgMTMwLCA1OSwgNjAsIDIzOSwgMjI3LCA1OSwgNjAsIDI0MCwgOTgsIDU5LCA2MCwgMjQwLCAzNCwgNTksIDYwLCAKKyAgICAyNDAsIDE2MSwgNTksIDYwLCAyMzksIDE4OCwgNTksIDYwLCAyNDAsIDU5LCA1OSwgNjAsIDIzOSwgMjUxLCA1OSwgNjAsIAorICAgIDI0MCwgMTIyLCA1OSwgNjAsIDIzOSwgMjE5LCA1OSwgNjAsIDI0MCwgOTAsIDU5LCA2MCwgMjQwLCAyNiwgNTksIDYwLCAKKyAgICAyNDAsIDE1MywgNTksIDYwLCAyMzksIDIwMywgNTksIDYwLCAyNDAsIDc0LCA1OSwgNjAsIDI0MCwgMTAsIDU5LCA2MCwgCisgICAgMjQwLCAxMzcsIDU5LCA2MCwgMjM5LCAyMzQsIDU5LCA2MCwgMjQwLCAxMDUsIDU5LCA2MCwgMjQwLCA0MSwgNTksIDYwLCAKKyAgICAyNDAsIDE2OCwgNTksIDYwLCAyMzksIDE4NCwgNTksIDYwLCAyNDAsIDU1LCA1OSwgNjAsIDIzOSwgMjQ3LCA1OSwgNjAsIAorICAgIDI0MCwgMTE4LCA1OSwgNjAsIDIzOSwgMjE1LCA1OSwgNjAsIDI0MCwgODYsIDU5LCA2MCwgMjQwLCAyMiwgNTksIDYwLCAKKyAgICAyNDAsIDE0OSwgNTksIDYwLCAyMzksIDE5OSwgNTksIDYwLCAyNDAsIDcwLCA1OSwgNjAsIDI0MCwgNiwgNTksIDYwLCAyNDAsIAorICAgIDEzMywgNTksIDYwLCAyMzksIDIzMCwgNTksIDYwLCAyNDAsIDEwMSwgNTksIDYwLCAyNDAsIDM3LCA1OSwgNjAsIDI0MCwgCisgICAgMTY0LCA1OSwgNjAsIDIzOSwgMTkxLCA1OSwgNjAsIDI0MCwgNjIsIDU5LCA2MCwgMjM5LCAyNTQsIDU5LCA2MCwgMjQwLCAKKyAgICAxMjUsIDU5LCA2MCwgMjM5LCAyMjIsIDU5LCA2MCwgMjQwLCA5MywgNTksIDYwLCAyNDAsIDI5LCA1OSwgNjAsIDI0MCwgCisgICAgMTU2LCA1OSwgNjAsIDIzOSwgMjA2LCA1OSwgNjAsIDI0MCwgNzcsIDU5LCA2MCwgMjQwLCAxMywgNTksIDYwLCAyNDAsIAorICAgIDE0MCwgNTksIDYwLCAyMzksIDIzNywgNTksIDYwLCAyNDAsIDEwOCwgNTksIDYwLCAyNDAsIDQ0LCA1OSwgNjAsIDI0MCwgCisgICAgMTcxLCA1OSwgNjAsIDIzOSwgMTgyLCA1OSwgNjAsIDI0MCwgNTMsIDU5LCA2MCwgMjM5LCAyNDUsIDU5LCA2MCwgMjQwLCAKKyAgICAxMTYsIDU5LCA2MCwgMjM5LCAyMTMsIDU5LCA2MCwgMjQwLCA4NCwgNTksIDYwLCAyNDAsIDIwLCA1OSwgNjAsIDI0MCwgCisgICAgMTQ3LCA1OSwgNjAsIDIzOSwgMTk3LCA1OSwgNjAsIDI0MCwgNjgsIDU5LCA2MCwgMjQwLCA0LCA1OSwgNjAsIDI0MCwgMTMxLCAKKyAgICA1OSwgNjAsIDIzOSwgMjI4LCA1OSwgNjAsIDI0MCwgOTksIDU5LCA2MCwgMjQwLCAzNSwgNTksIDYwLCAyNDAsIDE2MiwgNTksIAorICAgIDYwLCAyMzksIDE4OSwgNTksIDYwLCAyNDAsIDYwLCA1OSwgNjAsIDIzOSwgMjUyLCA1OSwgNjAsIDI0MCwgMTIzLCA1OSwgCisgICAgNjAsIDIzOSwgMjIwLCA1OSwgNjAsIDI0MCwgOTEsIDU5LCA2MCwgMjQwLCAyNywgNTksIDYwLCAyNDAsIDE1NCwgNTksIDYwLCAKKyAgICAyMzksIDIwNCwgNTksIDYwLCAyNDAsIDc1LCA1OSwgNjAsIDI0MCwgMTEsIDU5LCA2MCwgMjQwLCAxMzgsIDU5LCA2MCwgCisgICAgMjM5LCAyMzUsIDU5LCA2MCwgMjQwLCAxMDYsIDU5LCA2MCwgMjQwLCA0MiwgNTksIDYwLCAyNDAsIDE2OSwgNTksIDYwLCAKKyAgICAyMzksIDE4NSwgNTksIDYwLCAyNDAsIDU2LCA1OSwgNjAsIDIzOSwgMjQ4LCA1OSwgNjAsIDI0MCwgMTE5LCA1OSwgNjAsIAorICAgIDIzOSwgMjE2LCA1OSwgNjAsIDI0MCwgODcsIDU5LCA2MCwgMjQwLCAyMywgNTksIDYwLCAyNDAsIDE1MCwgNTksIDYwLCAKKyAgICAyMzksIDIwMCwgNTksIDYwLCAyNDAsIDcxLCA1OSwgNjAsIDI0MCwgNywgNTksIDYwLCAyNDAsIDEzNCwgNTksIDYwLCAyMzksIAorICAgIDIzMSwgNTksIDYwLCAyNDAsIDEwMiwgNTksIDYwLCAyNDAsIDM4LCA1OSwgNjAsIDI0MCwgMTY1LCA1OSwgNjAsIDIzOSwgCisgICAgMTkyLCA1OSwgNjAsIDI0MCwgNjMsIDU5LCA2MCwgMjM5LCAyNTUsIDU5LCA2MCwgMjQwLCAxMjYsIDU5LCA2MCwgMjM5LCAKKyAgICAyMjMsIDU5LCA2MCwgMjQwLCA5NCwgNTksIDYwLCAyNDAsIDMwLCA1OSwgNjAsIDI0MCwgMTU3LCA1OSwgNjAsIDIzOSwgCisgICAgMjA3LCA1OSwgNjAsIDI0MCwgNzgsIDU5LCA2MCwgMjQwLCAxNCwgNTksIDYwLCAyNDAsIDE0MSwgNTksIDYwLCAyMzksIAorICAgIDIzOCwgNTksIDYwLCAyNDAsIDEwOSwgNTksIDYwLCAyNDAsIDQ1LCA1OSwgNjAsIDI0MCwgMTcyLCA4NywgMjA0LCAxNDEsIAorICAgIDU1LCAzLCA4MywgOTcsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCA1MywgNTUsIDMsIDgzLCA5NywgCisgICAgODcsIDUzLCA1NSwgMywgODMsIDk3LCA0OSwgNTEsIDUzLCA1NSwgMywgODMsIDk3LCA4NywgMjA0LCAxNDEsIDU1LCAyMzYsIAorICAgIDIwMSwgMTQ4LCA5OCwgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCA4NywgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDU1LCAKKyAgICAzLCAyMzMsIDE3NywgOTcsIDE4MiwgNTUsIDMsIDIzMywgMTc3LCA5NywgMTgyLCAyMDUsIDgzLCA0OCwgMTkxLCAyMDUsIAorICAgIDgzLCA0OCwgOTgsIDUzLCAyNDEsIDI0NSwgNDgsIDg3LCA1MywgMjQxLCAyNDUsIDQ4LCA5OCwgMjA1LCA4MywgMjQxLCAKKyAgICAyNDUsIDQ4LCA4NywgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCA4NywgMjA0LCAxNDEsIDIwNSwgODMsIDI0MSwgMjQ1LCA0OCwgCisgICAgODcsIDU1LCAzLCAyMzksIDE4MCwgMjA4LCA5MiwgMTgyLCA1NSwgMjA1LCAxODYsIDE0OCwgMTkxLCA1NSwgMjA1LCAxODYsIAorICAgIDE0OCwgODcsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgODcsIDU1LCAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDg3LCAKKyAgICAyMDQsIDE0MSwgNTUsIDMsIDIwNywgNiwgODcsIDIwNCwgMTQxLCA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDg3LCAyMDQsIAorICAgIDE0MSwgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgOTgsIDI1MCwgMjA0LCA4NywgMjUwLCAyMDQsIDk4LCA1MywgCisgICAgMjUwLCAyMDQsIDg3LCA1MywgMjUwLCAyMDQsIDk4LCA1NSwgMjA1LCAxODYsIDYzLCAyNDEsIDY0LCA4NywgNTUsIDIwNSwgCisgICAgMTg2LCA2MywgMjQxLCA2NCwgOTgsIDU1LCAyMzYsIDIwMSwgMjQ5LCA3NywgMjA1LCAxODYsIDYzLCAyNDEsIDY0LCA4NywgCisgICAgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDE1NywgMjAxLCA0OCwgMjYsIDIwOCwgMjU0LCAKKyAgICAyMzksIDE0LCA0OCwgMTU3LCAyMzksIDE0LCAyNiwgMjA4LCAyNTQsIDIwMSwgNDgsIDQ4LCAxNTcsIDIwMSwgNDgsIDU1LCAKKyAgICAzLCAxMTcsIDE1NywgMjM5LCAxNCwgNTUsIDMsIDExNywgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAzLCAxMTcsIDIwOCwgCisgICAgMjU0LCAyMDEsIDQ4LCA1NSwgMywgMTE3LCAxNTcsIDIwMSwgNDgsIDU1LCAyNiwgMTU3LCAyMzksIDE0LCA0OCwgMTU3LCAKKyAgICAyMzksIDE0LCA1NSwgMjYsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAyNiwgMjA4LCAKKyAgICAyNTQsIDIwMSwgNDgsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNTUsIDI2LCAxNTcsIDIwMSwgNDgsIDQ4LCAyMTMsIDE5LCAKKyAgICAyNDEsIDcxLCAyNDIsIDIyOCwgMjM3LCAxNzEsIDI0MSwgNzAsIDIzNywgMTcxLCAyNDEsIDcxLCAyNDIsIDIyOCwgMjEzLCAKKyAgICAxOSwgMjQxLCA3MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAyNDIsIDIyOCwgMTU3LCAyMzksIDE0LCA0OCwgMTU3LCAyMzksIAorICAgIDE0LCA1NSwgMjQyLCAyMjgsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgMjM3LCAxNzEsIDI0MSwgNzEsIDI0MiwgMjI4LCAKKyAgICAxNTcsIDIzOSwgMTQsIDQ4LCAyMTMsIDE5LCAyNDEsIDcxLCAyNDIsIDIyOCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAxNTcsIAorICAgIDIzOSwgMTQsIDU1LCAyNDIsIDIyOCwgMTU3LCAyMDEsIDQ4LCA0OCwgMTU3LCAyMDEsIDQ4LCA1NSwgMjQyLCAyMjgsIDE1NywgCisgICAgMjM5LCAxNCwgNDgsIDIwMSwgNzgsIDU1LCAyMTUsIDk2LCAyNDEsIDcsIDIxMywgNDYsIDU1LCAyMTUsIDk2LCA4NywgMjA2LCAKKyAgICA5OCwgMjQyLCAxODYsIDIwMywgMjE2LCA1NSwgMjE1LCA5NiwgODcsIDIwNiwgOTgsIDI0MiwgMTg2LCAyMzksIDE2NSwgNTUsIAorICAgIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMjQyLCAxODYsIDIyNSwgMTgsIDU1LCAyMTUsIDk2LCAxOTEsIDIwNiwgOTgsIDI0MiwgCisgICAgMTg2LCAyMTMsIDM1LCAyMTMsIDM4LCAyNTAsIDIzNywgMjQ2LCAxMTIsIDQ4LCAyMjUsIDIxLCAyNTAsIDIzNywgMjUxLCAKKyAgICA0NywgNDgsIDIwNSwgMTU4LCAyNTAsIDIzNywgMjUxLCA0NywgNDgsIDI0OCwgOTMsIDI1MCwgMjM3LCAyNTEsIDQ3LCA0OCwgCisgICAgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNDYsIDExMiwgNTUsIDMsIDIyMSwgMTU2LCAyMDUsIDE1OCwgMjUwLCAyMzcsIDI1MSwgCisgICAgNDcsIDU1LCAzLCAyMTUsIDExMywgMjI0LCA1NCwgNTEsIDIxMCwgMTY5LCAyNDYsIDExMiwgNDgsIDIyNCwgNTQsIDQ5LCAKKyAgICAyMTAsIDE2OSwgMjUxLCA0NywgNDgsIDI1MSwgNDcsIDI0NiwgMTEwLCAyNDYsIDE1NiwgNDgsIDI0NiwgMTEyLCAyNDYsIAorICAgIDExMCwgMjQ2LCAxNTYsIDQ4LCA4NywgNTUsIDg4LCAyMDksIDI1MCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyMDksIDI1MCwgCisgICAgODcsIDQ4LCAyMDksIDI1MCwgODcsIDU1LCA4OCwgOTgsIDQ4LCA4NywgNTUsIDMsIDkzLCA1NywgOTgsIDU1LCAzLCA5MywgCisgICAgNTcsIDg3LCA1NSwgMjA2LCAzOCwgMjAwLCAxOTUsIDQ5LCA1MSwgNTUsIDIwNiwgMzgsIDQsIDI0NiwgMTU1LCAxODIsIAorICAgIDIwNCwgMTQxLCA1NSwgMjM2LCAyMDEsIDQsIDI0NiwgMTU1LCA0OSwgMTU0LCAxMTUsIDUxLCAxNTQsIDEyNywgMjM0LCAKKyAgICAxNjAsIDQ5LCAxNTQsIDEyNywgNTEsIDE1NCwgMTE1LCAyMzQsIDE2MCwgMTE1LCAxNTQsIDUxLCAxMjcsIDE1NCwgNDksIAorICAgIDIzNCwgMTYwLCAxMTUsIDE1NCwgNDksIDEyNywgMTU0LCA1MSwgMjM0LCAxNjAsIDQ5LCAxNTQsIDExNSwgNTEsIDE1NCwgCisgICAgMTE1LCAyMzQsIDE2MCwgMTE1LCAxNTQsIDUxLCAxMjcsIDE1NCwgNTEsIDIzNCwgMTYwLCA0OSwgMTU0LCAxMjcsIDUxLCAKKyAgICAxNTQsIDEyNywgMjM0LCAxNjAsIDExNSwgMTU0LCA0OSwgMTI3LCAxNTQsIDQ5LCAyMzQsIDE2MCwgOTgsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDExNSwgMjA1LCAxODYsIDE0OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgMjA1LCAxODYsIDE0OCwgCisgICAgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjA1LCAxODYsIDE0OCwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjA1LCAKKyAgICAxODYsIDE0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgMjA1LCAxODYsIDE0OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDEyNywgMjA1LCAxODYsIDE0OCwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCA0OSwgMjA1LCAxODYsIDE0OCwgMTkxLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjA1LCAxODYsIDE0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgMjM2LCAyMDEsIDE0OCwgCisgICAgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgMjM2LCAyMDEsIDE0OCwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjM2LCAKKyAgICAyMDEsIDE0OCwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCA1MSwgMjM2LCAyMDEsIDE0OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDEyNywgMjM2LCAyMDEsIDE0OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgMjM2LCAyMDEsIDE0OCwgMTgyLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjM2LCAyMDEsIDE0OCwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCA0OSwgMjM2LCAyMDEsIDE0OCwgCisgICAgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NywgMTgyLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgODcsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDExNSwgODgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NywgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICA0OSwgMjQ4LCAyMTIsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgCisgICAgODgsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAyMDMsIDIyOCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgODgsIDg3LCAKKyAgICAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NywgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDk4LCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCAyMDMsIDIyOCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgODgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAKKyAgICAyMzksIDE2NywgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDExNSwgODgsIDE2OCwgMjQxLCAyNDQsIDk4LCAyMzQsIDE2MSwgMywgCisgICAgMTU0LCAxMjcsIDI0OCwgMjI4LCAxNjgsIDI0MSwgMjQ0LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgMTY4LCAKKyAgICAyNDEsIDI0NCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDEyNywgMjQ4LCAyMjgsIDE2OCwgMjQxLCAyNDQsIDE4MiwgMjM0LCAKKyAgICAxNjEsIDMsIDE1NCwgNDksIDI0OCwgMjEyLCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDE5MSwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgNDksIDI0OCwgMjEyLCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgNDYsIDUxLCA1MywgNTUsIDMsIDIxMiwgCisgICAgMjE5LCAyMzQsIDEzNiwgMjM4LCAxMjIsIDIsIDg4LCA4NywgNDgsIDIwNSwgMjQxLCAyMTcsIDQ0LCA4OCwgODcsIDQ4LCAKKyAgICA5OCwgNTUsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDg3LCA1NSwgODgsIAorICAgIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDg4LCA5OCwgNDgsIDk4LCA1NSwgMjA2LCAzOCwgMjI0LCAyNDAsIDIzNSwgCisgICAgNjcsIDg4LCA4NywgNDgsIDIwOCwgMywgODgsIDg3LCA0OCwgOTgsIDU1LCAyMDYsIDM4LCAyMDgsIDIsIDIwNywgMjEyLCAKKyAgICA4OCwgOTgsIDQ4LCA0OSwgMjM3LCA3MiwgMjA3LCA2LCA1MSwgMjM3LCA3MiwgMjA3LCA2LCAxMTUsIDIzNywgNzIsIDIwNywgCisgICAgNiwgMTI3LCAyMzcsIDcyLCAyMDcsIDYsIDIwNSwgODMsIDgzLCAyNDksIDc3LCAyNDEsIDE0MiwgMTk5LCAxNTgsIDIxOCwgCisgICAgMjEzLCAyMDgsIDIwNCwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMDQsIDEyOCwgMjQ2LCA3OSwgNDksIDY0LCAyNDIsIDE5NiwgCisgICAgMTU5LCA1MSwgNjQsIDI0MiwgMTk2LCAxNTksIDQ5LCA2NCwgMjE2LCAxMTUsIDUxLCA2NCwgMjE2LCAxMTUsIDE5OSwgMTU4LCAKKyAgICAyMTgsIDIxMywgNDksIDIyOCwgMTMzLCAxNTksIDE5OSwgMTU4LCAyMTgsIDIxMywgNTEsIDIyOCwgMTMzLCAxNTksIDE5OSwgCisgICAgMTU4LCAyMTgsIDIxMywgNDksIDI0OCwgMTY3LCAxNTksIDE5OSwgMTU4LCAyMTgsIDIxMywgNTEsIDI0OCwgMTY3LCAxNTksIAorICAgIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjAzLCAyNTEsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjAzLCAyNTEsIDQ5LCA1MiwgMjQ4LCAKKyAgICA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDIwNSwgMTU4LCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgNzAsIDMsIDIwNiwgMTIsIAorICAgIDIyOCwgMTE4LCAyNDgsIDkzLCAyNDMsIDE1LCA0OSwgNTIsIDI0OCwgNzAsIDMsIDIwNiwgMTIsIDIyOCwgMTE4LCAyNDgsIAorICAgIDkzLCAyNDMsIDE1LCA1MSwgNTIsIDI0OCwgNzAsIDMsIDIwNiwgMTIsIDIyOCwgMTE4LCAyMDUsIDE1OCwgMjQzLCAxNSwgCisgICAgNDksIDI1MSwgNzEsIDI0OCwgNzAsIDMsIDI0MCwgMTgyLCA1MSwgMjUxLCA3MSwgMjQ4LCA3MCwgMywgMjQwLCAxODIsIDQ5LCAKKyAgICAyNTAsIDIzNywgMjI0LCAyNDEsIDE1OSwgNTEsIDI1MCwgMjM3LCAyMzUsIDY3LCAxNTksIDUzLCA0OSwgMjUwLCAyMzcsIAorICAgIDIzNSwgNjcsIDE1OSwgNTMsIDUxLCAyNTAsIDIzNywgMjI0LCAyNDEsIDE1OSwgNDksIDYzLCAyMDUsIDE0NiwgMjEwLCA1NSwgCisgICAgMTU5LCA1MSwgNjMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDIzOSwgMTgwLCAyMzcsIDEyNywgODMsIDE5OSwgMjcsIAorICAgIDIyNCwgMTc2LCAyMjIsIDczLCAyNTEsIDcxLCAyMTcsIDQ2LCAyMjUsIDI4LCA1MSwgMjUxLCA3MSwgMjAzLCA3MywgMywgCisgICAgMjA4LCAxOTMsIDIyMiwgNzMsIDUxLCAyNTEsIDcxLCAzLCAyNDAsIDE4MiwgMjUxLCA3MSwgMywgMjEyLCAxMjMsIDIyOCwgCisgICAgNzMsIDI1MSwgMjM5LCAyNTEsIDcwLCAyMDgsIDIyNCwgMjUxLCA3MSwgMjE3LCA0NiwgMjI1LCAyOCwgMjA4LCAyMjQsIAorICAgIDI1MSwgNzEsIDIxNywgNDYsIDIwMywgMjI4LCAyMDQsIDE4NSwgMjUxLCA3MCwgMjEzLCAxMDUsIDI1MSwgNzAsIDI1MSwgCisgICAgNzEsIDMsIDIwMywgMjUxLCAyMTMsIDEwNSwgMjUxLCA3MSwgMywgMjAzLCAyNTEsIDIxNywgMTM4LCAyNTEsIDcxLCAyMTcsIAorICAgIDQ2LCAyMDMsIDIyOCwgMjE3LCAxMzgsIDI1MSwgNzEsIDIxNywgNDYsIDIzOSwgMTY3LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAKKyAgICAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCAxMTUsIDI2LCAyMTMsIDQ2LCAyMjIsIAorICAgIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCAxMTUsIDI2LCAKKyAgICAyMjUsIDI4LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIAorICAgIDk2LCAxMjcsIDI2LCAyMTMsIDQ2LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAKKyAgICAxMTgsIDU1LCAyMTUsIDk2LCAxMjcsIDI2LCAyMjUsIDI4LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAKKyAgICAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCA1MSwgMjYsIDIwMywgMjI4LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAKKyAgICAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCA0OSwgMjYsIDIwMywgMjI4LCAyMjIsIAorICAgIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAyMTUsIDk2LCA1MSwgMjYsIAorICAgIDIzOSwgMTY3LCAyMjIsIDczLCAyNTEsIDcxLCAzLCAxNzYsIDI1MCwgMjE1LCAyMzgsIDE2OCwgMjI4LCAxMTgsIDU1LCAKKyAgICAyMTUsIDk2LCA0OSwgMjYsIDIzOSwgMTY3LCAyMTMsIDEwNSwgMjM4LCAxODEsIDIxMCwgMTQxLCAyMzgsIDE4MSwgMjEwLCAKKyAgICAxNDIsIDMsIDIxNiwgMjQ2LCAyMzgsIDE4MSwgMjEwLCAxNDIsIDMsIDQsIDI0NiwgMTU2LCA1NiwgMjM4LCAxODEsIDIxMCwgCisgICAgMTQyLCAzLCA1MSwgNTUsIDU2LCAyMzgsIDE4MSwgMjEwLCAxNDIsIDMsIDQ5LCA1NSwgNTYsIDI0NiwgMTU2LCAzLCAyMzMsIAorICAgIDE3NywgMTQ4LCA0NCwgODMsIDE0OCwgNDQsIDIxNiwgMTIwLCA0NCwgMjEzLCAxMDYsIDIwOSwgMTYsIDQ0LCAyMTYsIDE0LCAKKyAgICAyNDYsIDE1NiwgMjQwLCAyNDAsIDI0NywgMjM1LCAyMzMsIDE3NywgMjQ5LCA3NywgMjYsIDIwNSwgMTU4LCAxNjcsIDI0MCwgCisgICAgMjQwLCAyNDcsIDIzNSwgODMsIDE0OCwgMjQ2LCAxNTYsIDMsIDIwNywgMjE0LCAyMDAsIDE5NSwgNDQsIDI1MSwgNDUsIAorICAgIDI0MCwgMjM1LCA1NCwgMTE1LCA1NSwgMjA2LCAzOCwgMjQ2LCAxNTUsIDQ0LCA2NCwgMjQ4LCAyMCwgNDQsIDI0OCwgMjAsIAorICAgIDQ0LCAyMjQsIDI0MCwgNDQsIDIzNSwgNjYsIDI0NiwgMTU2LCAzLCA0LCAyNDYsIDE1NiwgMjA1LCAxODYsIDIwNiwgMTA3LCAKKyAgICAyMTMsIDQ2LCAyNDYsIDE1NiwgMywgMTIwLCAyMzMsIDE3NywgMjA4LCAzNSwgMjA1LCAxODYsIDIwNiwgMTA3LCAyMTMsIAorICAgIDQ2LCA5NSwgMjEzLCAxOSwgMjQxLCA3MSwgMjA5LCA3NSwgOTUsIDIzNywgMTcxLCAyNDEsIDcxLCAyMDksIDc1LCA5NSwgCisgICAgMjUwLCAxNjUsIDk1LCA0LCAyNDYsIDE1NSwgOTUsIDIwOCwgMTkzLCAxMjAsIDIyNywgMTYzLCAyMDgsIDE5MSwgMjA1LCAKKyAgICA5OSwgMywgNzMsIDU2LCAyMDUsIDk5LCAzLCAyMDMsIDI1MSwgMjEyLCAxMjMsIDIyOCwgMTE4LCAyMDUsIDk4LCAyMDUsIAorICAgIDk5LCAzLCAyMTAsIDE0OCwgMjUwLCAxNTYsIDI0OCwgOTIsIDUxLCAyMDUsIDk5LCA4OCwgNDksIDIwNSwgOTgsIDQ5LCAKKyAgICAyMDUsIDk5LCAyNDgsIDIxMiwgODMsIDE0OCwgODMsIDI0OSwgNzcsIDI0OCwgMjEyLCA1MSwgMjA1LCA5OCwgMjQ4LCA4MCwgCisgICAgMywgNDksIDE2NywgMjQ4LCAxNDQsIDI0OCwgODAsIDMsIDUxLCAxNjcsIDI0OCwgMTQ0LCA2MywgMjQ4LCA3OSwgMjQsIDMsIAorICAgIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyNCwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDY0LCAyMzMsIDExMSwgNjMsIDIzMywgMTExLCAKKyAgICA0OSwgMjAxLCAyMiwgMjM3LCAxMjcsIDUxLCAyMDEsIDIyLCAyMzcsIDEyNywgNDksIDUzLCAyMDEsIDIyLCAyMzcsIDEyNywgCisgICAgNTEsIDUzLCAyMDEsIDIyLCAyMzcsIDEyNywgMjI4LCAxMTAsIDIyOCwgOTQsIDIwNiwgOCwgMTE5LCAyMjgsIDk0LCAyMjgsIAorICAgIDk1LCAyMjAsIDI4LCAzLCA4MywgMTQ4LCAyMzksIDE3NCwgMjIxLCAyMywgNTIsIDMsIDI0MywgMzcsIDIxNiwgMjUxLCAKKyAgICAyMjgsIDEwNywgMjUwLCAxODgsIDIwOSwgMjE0LCAyMTUsIDEsIDIzOCwgMTIyLCAyLCAyNiwgMjA5LCA3NywgMjE2LCAxMjAsIAorICAgIDIzOCwgMTIyLCAyLCAyNiwgMjA5LCA3NywgMjE2LCAxMjEsIDMsIDIwNSwgMjQxLCA1NiwgMjMyLCAyMjMsIDIwNSwgMTg2LCAKKyAgICAyNiwgMjA5LCA3NywgMjE2LCAxMjAsIDIzNSwgMTI2LCAyMDgsIDEwOCwgMjA2LCA5NSwgMjM5LCAxNjYsIDIwNSwgOTksIDMsIAorICAgIDQ5LCAxNjcsIDI0OCwgMTQ0LCAyMzksIDE2NiwgMjA1LCA5OSwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDYzLCAyNDEsIDY1LCAKKyAgICAzLCAxMjcsIDQ4LCA2MywgMjI0LCA0OSwgNjQsIDI0NiwgMTU2LCAzLCAxMjcsIDQ4LCA2MywgMjQ2LCAxNTYsIDMsIDEyNywgCisgICAgNDgsIDIzOCwgMTA3LCA2NCwgMjA4LCAxOTMsIDIzOCwgMTA3LCA2MywgMjA4LCAxOTMsIDIzOCwgMTA3LCA2NCwgMjQxLCAKKyAgICA2NCwgMjM4LCAxMDcsIDYzLCAyNDEsIDY0LCAyMzgsIDEwNywgNjQsIDI0NiwgMTU1LCAyMzgsIDEwNywgNjMsIDI0NiwgCisgICAgMTU1LCAyMTIsIDE2NCwgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNywgNDMsIDIwOSwgMTcsIDMsIDIxNiwgMjQ2LCAyMTMsIAorICAgIDEwNiwgMjA5LCAxNywgMywgMjMzLCAxNzcsIDk3LCAyNDgsIDE3NSwgMjA5LCAxNiwgMjQ4LCAxNzUsIDIxMywgMTA2LCAKKyAgICAyMDksIDE2LCA1MywgMjE1LCAxMTMsIDIwNSwgODMsIDIxNSwgMTEzLCAyMjUsIDIzLCAyNDIsIDE4OCwgMjUxLCA3MSwgCisgICAgMTU5LCAyMTMsIDQxLCAyNDIsIDE4OCwgMjUxLCA3MSwgMTU5LCAyMDUsIDIyNSwgMjIxLCAxNTQsIDIyMCwgMjEzLCA0NCwgCisgICAgNzMsIDIxNywgNDMsIDIyMCwgMjEzLCA0NCwgOTMsIDIxNywgNDMsIDIyMCwgMjEzLCA0NCwgMjQsIDIxNywgNDMsIDIyMCwgCisgICAgMjEzLCAyMDMsIDI0MiwgMjE3LCA0NCwgMywgMjQwLCAxODIsIDIyMCwgMjEzLCAyMDMsIDI0MiwgMjE3LCA0NCwgMywgMjE1LCAKKyAgICAxMTMsIDIyMCwgMjEzLCA1MiwgMjI4LCA1NiwgMjE3LCA0MywgMjIwLCAyMTMsIDUyLCAyMDMsIDI0MiwgMjE3LCA0MywgCisgICAgMTIwLCAyMjQsIDk4LCAyNiwgMjE3LCA0MywgMTIwLCAyMjQsIDk4LCAyMTcsIDM0LCAyMTcsIDQzLCAyMjAsIDIxMywgMjQsIAorICAgIDIxNywgNDMsIDIyMSwgMTEwLCAxMjAsIDIwNywgMjM0LCAyMDcsIDIzMiwgMywgMjI4LCA2OSwgMjE0LCA5MCwgMjI4LCA3MCwgCisgICAgMjE3LCA0MywgMjM3LCA4MCwgMjE2LCAxMTAsIDIyOCwgNjksIDIyOCwgNzAsIDMsIDUzLCA5NywgMjI4LCA3MCwgMjUwLCAKKyAgICAxMjAsIDMsIDIwOSwgNzUsIDI0NiwgMTQ4LCAyMzYsIDE4MCwgMjUxLCA0NywgMjI4LCA2NywgMjI0LCAxNzcsIDIyOCwgNjgsIAorICAgIDMsIDIxMywgMTc0LCAyMTYsIDkxLCAyNTAsIDIxMiwgMjE1LCA5MCwgMjI0LCAxNzcsIDIyOCwgNjgsIDMsIDIxMCwgMTY5LCAKKyAgICAyMTYsIDkxLCAyNTAsIDIxMiwgMjE1LCA5MCwgMjI0LCAxNzcsIDIyOCwgNjgsIDIxOCwgMjE1LCAyMjgsIDExMiwgMjA2LCAKKyAgICAxMDcsIDIxNSwgOTAsIDIyOCwgNzAsIDI1MCwgMjEyLCAzNSwgMjE1LCAxMDAsIDIxNywgNDMsIDIxNCwgODQsIDIyOCwgNzAsIAorICAgIDIxNywgNDMsIDIyOCwgNzAsIDMsIDk4LCA1NSwgMywgMTE3LCAyMjgsIDcwLCAzLCAyNCwgNTQsIDIyOCwgNzAsIDMsIDIyOCwgCisgICAgNTUsIDIyOCwgNzAsIDMsIDIwMywgMjQxLCAyMjgsIDcwLCAzLCAyMTYsIDI0NiwgMjI4LCA3MCwgMywgMjAzLCAyNTEsIAorICAgIDIyNywgMTY0LCAyMjUsIDcxLCA0OSwgMjA1LCA5OSwgMjE3LCA0MywgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTEsIDIyNCwgCisgICAgMjQzLCA3MywgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTEsIDIyNCwgMjE1LCAxNTEsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjExLCAKKyAgICAyMjQsIDIxNCwgMjUyLCA5MywgMiwgMywgNCwgMjQ2LCAxNTYsIDU2LCA5MywgMiwgMywgMjQ2LCAxNDcsIDI1MSwgMjUyLCAKKyAgICA1NiwgOTMsIDIsIDMsIDIwNSwgMjQxLCA1NiwgOTMsIDIsIDMsIDczLCA1NywgOTMsIDIsIDMsIDIwNSwgMjQxLCA1NywgOTMsIAorICAgIDIsIDMsIDIwOCwgNCwgMTA1LCA5MywgMiwgMywgNjMsIDIwNSwgOTgsIDIyMSwgMTU3LCAyLCAzLCAyNDYsIDcxLCA1NiwgCisgICAgMjIxLCAxNTcsIDIsIDMsIDczLCA1NywgMjIxLCAxNTcsIDIsIDMsIDIzNywgMTcxLCAyNDAsIDE4MCwgMjIxLCAxNTcsIDIsIAorICAgIDMsIDIxMywgMTksIDI0MCwgMTgwLCA5MywgMiwgMjI4LCAxMTgsIDQ5LCAxNjcsIDI0NiwgMTU1LCA5MywgMiwgMjI4LCAKKyAgICAxMTgsIDUxLCAxNjcsIDI0NiwgMTU1LCAyMDMsIDU4LCAyMTcsIDM0LCAyNDIsIDIzNSwgMjE1LCAxLCAyMjEsIDE5LCAyLCAKKyAgICAzLCA3MywgNTYsIDIyMSwgMTksIDIsIDMsIDIwMywgMjUxLCAyMTAsIDE2NiwgMjE1LCAyLCAzLCAyNDgsIDkzLCAyNDYsIAorICAgIDEwOSwgMjA5LCA1MSwgMjE1LCAxLCAyMjEsIDE5LCAyLCAyMjgsIDExOCwgNDksIDE2NywgMjQ2LCAxNTUsIDIyMSwgMTksIAorICAgIDIsIDIyOCwgMTE4LCA1MSwgMTY3LCAyNDYsIDE1NSwgNDQsIDIyMSwgMTksIDIsIDMsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgCisgICAgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDUzLCAyNDYsIDE1NSwgNDQsIDI0MCwgMjM1LCA1NCwgOTMsIDIsIDIyOCwgMTE4LCAKKyAgICAyMDUsIDk4LCAyMjEsIDE1NywgMiwgMjI4LCAxMTgsIDIwNSwgOTgsIDIyMSwgMTksIDIsIDIyOCwgMTE4LCAyMDUsIDk4LCAKKyAgICAyMjgsIDY0LCAyMTUsIDEsIDIxMywgMzYsIDIyOCwgNjQsIDIxNSwgMSwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTMsIDE0OCwgCisgICAgMjQzLCA3MywgMjUxLCA5OSwgMjE3LCAzNCwgMjQzLCAyMSwgMjI4LCA1NiwgMywgMjQwLCAxODIsIDIwMywgMjQyLCAzLCAKKyAgICAyMjEsIDE1NywgNTQsIDIwMywgMjQyLCAzLCAyMTYsIDI0NiwgMjI4LCA1NiwgMywgMjE2LCAyNDYsIDIyOCwgNTYsIDMsIAorICAgIDIyNCwgOTgsIDI1MSwgNzksIDIwMywgMjQyLCAzLCAyMjQsIDk4LCAyMTcsIDMzLCAyMDMsIDI0MiwgODgsIDIyOCwgNTUsIAorICAgIDIyOCwgNTYsIDg4LCAyMDMsIDI0MSwgMjAzLCAyNDIsIDg4LCAyNDksIDc3LCA4OCwgMjI4LCA1NSwgMjI4LCA1NiwgODgsIAorICAgIDI0OSwgNzcsIDg4LCAyMDMsIDI0MSwgMjAzLCAyNDIsIDI0OCwgMjEyLCAyNiwgMjI3LCAxNjMsIDMsIDIwMywgMjQxLCAKKyAgICAyMjgsIDU2LCAyNDgsIDIxMiwgMjYsIDIyNywgMTYzLCAzLCAyMjgsIDU1LCAyNDYsIDExMCwgMjAzLCAyNDIsIDMsIDIxMCwgCisgICAgMTQ3LCAyNDYsIDExMCwgMjI4LCA1NiwgMywgMjEwLCAxNDcsIDUzLCA1MiwgMjI4LCA1NSwgNTMsIDUyLCAyMDMsIDI0MSwgCisgICAgMjQ2LCAxMTAsIDIwMywgMjQyLCAzLCAyMTAsIDE0OCwgMjYsIDIwOSwgNTEsIDIxNSwgMSwgMjI0LCA5OCwgMjYsIDMsIDczLCAKKyAgICA1NiwgMjI0LCA5OCwgMjE3LCAzNCwgMywgNzMsIDU2LCA1MywgMjI0LCA5OCwgMjUxLCA3OSwgNTMsIDIyNCwgOTgsIDIxNywgCisgICAgMzMsIDEyMCwgMjI4LCA1NywgMjI0LCA5OCwgMjUxLCA3OSwgMTIwLCAyMjgsIDU3LCAyMjQsIDk4LCAyMTcsIDMzLCAyMDksIAorICAgIDYwLCAyMjUsIDcxLCAyMTcsIDMzLCAyMDksIDYwLCAyMjUsIDcxLCAyNTEsIDc5LCAyMjQsIDk4LCAyMTcsIDM0LCAyMTYsIAorICAgIDI0MywgMjI0LCA5OCwgMjUxLCA3OSwgMjI0LCA5OCwgMjYsIDMsIDEwMSwgMjA4LCA5MiwgMjI0LCA5OCwgMjE3LCAzNCwgMywgCisgICAgMTAxLCAyMDgsIDkyLCAyMjQsIDk4LCAyNiwgMywgMjMzLCAxNzcsIDI0MSwgMjQ0LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCAKKyAgICAyMzMsIDE3NywgMjQxLCAyNDQsIDIyNCwgOTgsIDI2LCAzLCA1MywgMjE2LCAyNDYsIDIyNCwgOTgsIDI2LCAzLCAyMDMsIAorICAgIDI1MSwgMjI0LCA5OCwgMjYsIDMsIDUzLCAyMDMsIDI1MSwgNCwgMjAzLCA1NSwgMywgMjAzLCAyNTEsIDIyNCwgOTgsIDIxNywgCisgICAgMzQsIDMsIDUzLCAyMTYsIDI0NiwgMjI0LCA5OCwgMjE3LCAzNCwgMywgNTMsIDIwMywgMjUxLCAxOTksIDE1OCwgMjE4LCAKKyAgICAyMTMsIDI0MCwgMTkxLCAyNTEsIDM3LCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMywgMjExLCAyNTEsIDM3LCAyMzgsIDEyMiwgCisgICAgMiwgMywgNzMsIDU3LCAyMzIsIDIyMywgMywgNzMsIDU2LCAyMDUsIDgzLCAyMzMsIDE3NywgMjQ5LCA3NywgMywgNTMsIDgzLCAKKyAgICA5NywgMjA1LCA4MywgMjMzLCAxNzcsIDI0OSwgNzcsIDMsIDIwNSwgODMsIDgzLCA5NywgMjA1LCAyNDEsIDIxNywgNDQsIDMsIAorICAgIDczLCA1NiwgMjA1LCAyNDEsIDIxNywgNDQsIDMsIDIxMywgMTksIDI0MCwgMTgwLCAyMDksIDE0OCwgMjIxLCAxNTcsIDIwOSwgCisgICAgMTQ3LCAyNDMsIDYwLCAzLCA3MywgNTYsIDIzOCwgMTIyLCAzLCAyNTAsIDE2NSwgMjUxLCAxMTcsIDE2MCwgMjA1LCAxODYsIAorICAgIDMsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMjUxLCA0LCAxNjAsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzgsIDEyMiwgMiwgODgsIAorICAgIDkzLCA1NCwgOTMsIDIsIDg4LCAyMzgsIDEyMiwgNTQsIDIzOCwgMTIyLCAyLCA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDUzLCAKKyAgICAyNDYsIDgwLCAyMzgsIDEyMywgMTIwLCAyNDMsIDUzLCAyMzgsIDEyMiwgMjA5LCAxNjIsIDEyNiwgMjQzLCA1MywgMjM4LCAKKyAgICAxMjIsIDIwOSwgMTYyLCAyMzgsIDEyMiwgMiwgMywgMTIwLCAxOTAsIDg4LCAyNiwgMTIwLCAxOTAsIDU3LCAyMzgsIDExNywgCisgICAgMywgMjM2LCAyMjksIDE5MCwgNTYsIDIyNCwgMjQxLCAzLCAyNDYsIDE1NiwgMjI4LCA3MywgMjM1LCA2NywgMywgMjQ2LCAKKyAgICAxNTYsIDIyOCwgNzMsIDIyNCwgMjQxLCAzLCAyMTQsIDc5LCAxMzQsIDU2LCAyMzUsIDY3LCAzLCAyMTQsIDc5LCAxMzQsIAorICAgIDU2LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAxMzgsIDIzNSwgNjcsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgCisgICAgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDIyOCwgNzMsIDIzNSwgNjcsIAorICAgIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCAyMjgsIDczLCAyMjQsIDI0MSwgMjE3LCAzNCwgMjA5LCAKKyAgICA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDU2LCAyMzUsIDY3LCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAKKyAgICAzLCA3MywgNTYsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgODgsIDIxMywgNDYsIAorICAgIDIzNSwgNjcsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA4OCwgMjI1LCAyOCwgMjI0LCAyNDEsIAorICAgIDIxNywgMzQsIDI1MSwgNSwgMjM1LCA2NywgMjE3LCAzNCwgMjUxLCA1LCAyMjQsIDI0MSwgMjYsIDIwOSwgMTM3LCAyMTgsIAorICAgIDIxNSwgMTYwLCAxMzgsIDIzNSwgNjcsIDI2LCAyMDksIDEzNywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjYsIAorICAgIDIxOCwgMjE1LCAyNTEsIDUsIDIzNSwgNjcsIDI2LCAyMTgsIDIxNSwgMjUxLCA1LCAyMjQsIDI0MSwgODgsIDIzOSwgMTczLCAKKyAgICAxNjAsIDg4LCAyMzUsIDY2LCAyMzUsIDY3LCA4OCwgMjM5LCAxNzMsIDE2MCwgODgsIDIyNCwgMjQwLCAyMjQsIDI0MSwgODgsIAorICAgIDIwOSwgMTQ4LCAyMTcsIDM0LCAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIwOSwgMTQ4LCAyMTcsIDM0LCAyMzgsIDEyMywgCisgICAgMjI0LCAyNDEsIDg4LCAyMDksIDE0OCwgODgsIDIzNSwgNjYsIDIzNSwgNjcsIDg4LCAyMDksIDE0OCwgODgsIDIyNCwgMjQwLCAKKyAgICAyMjQsIDI0MSwgODgsIDIzNSwgNjcsIDg4LCAyMzksIDE3MywgMjM4LCAxMjMsIDIzNSwgNjcsIDg4LCAyMjQsIDI0MSwgODgsIAorICAgIDIzOSwgMTczLCAyMzgsIDEyMywgMjI0LCAyNDEsIDg4LCAyMDksIDc3LCAxNjAsIDg4LCAyMzUsIDY3LCA4OCwgMjA5LCA3NywgCisgICAgMjM4LCAxMjMsIDIzNSwgNjcsIDg4LCAyMDksIDc3LCAxNjAsIDg4LCAyMjQsIDI0MSwgODgsIDIwOSwgNzcsIDIzOCwgMTIzLCAKKyAgICAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAKKyAgICAzNCwgMjM1LCA2NiwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDEsIDMsIDczLCAyMjgsIDczLCAKKyAgICAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY3LCAzLCA3MywgMjI4LCA3MywgMjM5LCAxNzMsIDE2MCwgCisgICAgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAyMzksIDE3MywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgCisgICAgMjM5LCAxNzMsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAyMzksIDE3MywgMjA5LCA3NywgCisgICAgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjM1LCA2NiwgMjA5LCAxNDgsIDIxNywgMzQsIDIyNCwgMjQwLCAyMDksIDE0OCwgCisgICAgMjE3LCAzNCwgMjM1LCA2NiwgMjA5LCAxNDgsIDg4LCAyMjQsIDI0MSwgODgsIDIzOCwgMTIyLCA1NCwgMjA5LCAxNDgsIDg4LCAKKyAgICAyMzUsIDY3LCA4OCwgMjM4LCAxMjIsIDU0LCA1MywgMjIwLCAxNSwgMjI0LCAyNDAsIDUzLCAyMjAsIDE1LCAyMzUsIDY2LCAKKyAgICA1MywgMjIwLCAxNSwgMjI0LCAyNDEsIDMsIDIwMywgMjUxLCAyMzUsIDY3LCAyMTYsIDI0MywgMjI0LCAyNDAsIDIzNSwgNjcsIAorICAgIDI0OCwgMjEyLCAyMjQsIDI0MCwgMjI0LCAyNDEsIDI0NiwgMTEwLCAyNDcsIDIzNSwgMjQyLCAxODksIDIzNSwgNjcsIDI0NiwgCisgICAgMTEwLCAyNDcsIDIzNSwgMjQyLCAxODksIDIyNCwgMjQxLCAyNDYsIDExMCwgMjQ3LCAyMzUsIDI0MiwgMTkwLCA4OCwgMjA5LCAKKyAgICA3NywgMjM4LCAxMjMsIDIzNSwgNjcsIDI0NiwgMTEwLCAyNDcsIDIzNSwgMjQyLCAxOTAsIDg4LCAyMDksIDc3LCAyMzgsIAorICAgIDEyMywgMjA5LCA1MiwgMjA2LCAxMTEsIDIyNSwgNjksIDIwNiwgMTExLCAyMDksIDUyLCAyMDYsIDExMiwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIyNSwgNjksIDIwNiwgMTEyLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM4LCAxMjIsIDIsIDMsIDI0OCwgMTMsIAorICAgIDU2LCAyMTUsIDI5LCA4OCwgMjA5LCAxMzcsIDIzOCwgMTIyLCA1NCwgMjA3LCAyNTEsIDg4LCAyMDksIDEzNywgMjM4LCAKKyAgICAxMjIsIDU0LCAyMTUsIDI5LCA4OCwgMjA5LCAxMzcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyMDksIAorICAgIDEzNywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMTUsIDI5LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDcsIDI1MSwgODgsIDIzOCwgCisgICAgMTIyLCA1NCwgMjE1LCAyOSwgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyMTgsIDIxNSwgMTYwLCAKKyAgICAxMzgsIDIxNSwgMjksIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwNywgMjUxLCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAKKyAgICAyMTUsIDI5LCA4OCwgMjE4LCAyMTUsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyMTgsIDIxNSwgMjUxLCAKKyAgICAxMTcsIDE2MCwgMTM4LCA1MywgMjE1LCAyOCwgNTMsIDIwNywgMjUwLCAyMDgsIDMsIDMsIDI0MCwgMTgyLCAyMDcsIDIxMiwgCisgICAgMywgMjQwLCAxODIsIDIwOCwgMywgMywgOTMsIDIsIDU3LCAyMDcsIDIxMiwgMywgOTMsIDIsIDU3LCAyMDgsIDMsIDMsIAorICAgIDIyMSwgMTksIDIsIDU3LCAyMDcsIDIxMiwgMywgMjIxLCAxOSwgMiwgNTcsIDIwOCwgMywgNzYsIDIxNywgMzQsIDE2MCwgCisgICAgMjA1LCAxODYsIDMsIDczLCA1NiwgMjA3LCAyMTIsIDc2LCAyMTcsIDM0LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgNTYsIAorICAgIDIwOCwgMywgNzYsIDg4LCAyMzgsIDEyMiwgNTQsIDIwNywgMjEyLCA3NiwgODgsIDIzOCwgMTIyLCA1NCwgMjA4LCAzLCA3NiwgCisgICAgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMDcsIDIxMiwgNzYsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgMjA4LCAzLCA3NiwgCisgICAgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA3LCAyMTIsIDc2LCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDIxMiwgNzYsIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDUyLCA0OSwgCisgICAgMTc2LCAxMDAsIDIxNywgNDMsIDUyLCA1MSwgMTc2LCAxMDAsIDIxNywgNDMsIDI0NiwgMTEwLCAyMDgsIDIsIDI0NiwgMTEwLCAKKyAgICAyMDcsIDIxMSwgMjQ2LCAxMTAsIDIwOCwgMywgMjE3LCAzNCwgMTYwLCAxMzgsIDI0NiwgMTEwLCAyMDcsIDIxMiwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIwOCwgMywgODgsIDIwNywgMjExLCAyMDcsIDIxMiwgODgsIDIwOCwgMiwgMjA4LCAzLCA4OCwgCisgICAgMjA4LCAyLCAyMDcsIDIxMiwgODgsIDIwNywgMjExLCAyMDcsIDIxMiwgMjQ4LCAyMTIsIDIwOCwgMiwgMjA3LCAyMTIsIAorICAgIDI0OCwgMjEyLCAyNiwgMjI3LCAxNjMsIDI0NywgMjM1LCAyNDEsIDI0NSwgMywgMjA4LCAyLCAyMzgsIDIwMiwgNzYsIDIxNywgCisgICAgNDYsIDIzOSwgMTY1LCAyMTUsIDE0MSwgMywgMjA2LCAxOTEsIDIwNSwgMTU3LCAyMDUsIDExNSwgMjI4LCA1NSwgMjM2LCAKKyAgICAyNDMsIDIxOCwgMjMwLCAyMDksIDI1MCwgNDksIDIwNywgMTcsIDIwOSwgMjUwLCAxMjcsIDIwNywgMTcsIDIwOSwgMjUwLCAKKyAgICAxMTUsIDIwNywgMTcsIDIxNiwgMTUsIDMsIDIxMiwgMTIyLCA4MywgMjQ5LCA3NywgMjA1LCA4MywgNTEsIDIwNCwgMTg0LCAKKyAgICA1MywgODMsIDI0OSwgNzcsIDQ5LCAyMDQsIDE4NCwgODMsIDI0OSwgNzcsIDUzLCA0OSwgMjA0LCAxODQsIDUzLCA4MywgCisgICAgMjQ5LCA3NywgNTMsIDQ5LCAyMDQsIDE4NCwgMTY4LCAyNDEsIDI0NSwgMjM2LCAyMDEsIDQ5LCAyMjIsIDQ1LCA3NiwgNTMsIAorICAgIDIwMywgNDIsIDIwOSwgMjUwLCAxMjcsIDIwNywgMTgsIDMsIDIxNiwgMjQ2LCAyMDksIDI1MCwgMTE1LCAyMDcsIDE4LCAzLCAKKyAgICAyMDMsIDI1MSwgMjA5LCAyNTAsIDExNSwgMjA3LCAxOCwgODgsIDIwOSwgMjUwLCAxMjcsIDIwNywgMTcsIDUzLCAxMjcsIAorICAgIDIwNywgMTcsIDUzLCAxMTUsIDIwNywgMTcsIDUzLCAyMDgsIDQ3LCAyMTgsIDIxNSwgNTQsIDIxMywgMTA1LCA1MywgMjA4LCAKKyAgICA0NywgMjE4LCAyMTUsIDU0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MCwgMjQyLCAzLCAyMTMsIDEwNSwgMjIwLCAyNywgCisgICAgMjA5LCA3NSwgODMsIDIyNCwgMTc3LCAzLCAyNDYsIDE1NiwgNTYsIDgzLCAyMjQsIDE3NywgMywgMjQ2LCAxNTYsIDU3LCAKKyAgICAxMjcsIDIwNywgMTgsIDMsIDI0NiwgMTU2LCA1NywgMjE2LCAxMjEsIDMsIDIzMywgMTc3LCA5NywgMjE2LCAxMjEsIDMsIAorICAgIDIwNSwgMjQxLCAyMTcsIDQzLCAyMDUsIDgzLCA4MywgMjQ5LCA3NywgMjQ4LCAxNjksIDIxMywgMTQ5LCAyMDUsIDgzLCA4MywgCisgICAgMjQ5LCA3NywgMywgMjMzLCAxNzcsIDk3LCAyMDUsIDgzLCAyNDYsIDgwLCAyMTcsIDQzLCAyMDUsIDgzLCAyMjAsIDE1LCAKKyAgICAyMjQsIDI0MCwgMjA1LCA4MywgMjIwLCAxNSwgMjM1LCA2NiwgMjM5LCAxNzMsIDIwOSwgNzcsIDIyNCwgMjQxLCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjM5LCAxNzMsIDIwOSwgNzcsIDIzNSwgNjcsIDIxNywgMzQsIDE2MCwgMTM4LCAyMDUsIDgzLCAKKyAgICAyMDksIDE3LCAyNDgsIDE2OSwgMjEzLCAxNDksIDIyNSwgNzEsIDIwNSwgODMsIDgzLCAyNDksIDc3LCAyMTcsIDQzLCA1MywgCisgICAgMjA5LCAxNywgMjE3LCA0MywgNjQsIDgzLCAxNDgsIDIyMCwgMjEzLCA2NCwgODMsIDE0OCwgMTU3LCAyMzksIDE0LCA2NCwgCisgICAgNDgsIDE1NywgMjAxLCA0OCwgNjQsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNjQsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgCisgICAgNjQsIDQ4LCA0OSwgNTEsIDY0LCA0OCwgOTgsIDYzLCA0OCwgMTgyLCA2MywgNDgsIDE5MSwgNjMsIDQ4LCAxNTcsIDIzOSwgCisgICAgMTQsIDYzLCA0OCwgMTU3LCAyMDEsIDQ4LCA2MywgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA2MywgNDgsIDIwOCwgMjU0LCAKKyAgICAyMDEsIDQ4LCA2MywgNDgsIDQ5LCA1MSwgNjMsIDQ4LCAxMTUsIDEyNywgNjMsIDQ4LCA4NywgNTUsIDMsIDIwNSwgMjI0LCAKKyAgICAyMzksIDE2NSwgODcsIDU1LCAzLCAyMDUsIDIyNCwgMjAzLCAyMTYsIDk4LCA1NSwgMywgMjA1LCAyMjQsIDIzOSwgMTY1LCAKKyAgICA5OCwgNTUsIDMsIDIwNSwgMjI0LCAyMDMsIDIxNiwgNTIsIDMsIDIwNSwgMTU4LCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgCisgICAgMjQ4LCA5MywgMTY3LCAyNDgsIDE0NCwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNTIsIAorICAgIDMsIDIyNCwgNTQsIDQ5LCAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCAyNDEsIDY1LCAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgCisgICAgMjQxLCA2NSwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDI0MSwgNjUsIDMsIDIwNSwgMTU4LCAxNjcsIDI0OCwgMTQ0LCAyNDEsIAorICAgIDY1LCAzLCAyNDgsIDkzLCAxNjcsIDI0OCwgMTQ0LCAyMzksIDE4MCwgMjA4LCAxOTMsIDYzLCAyMjUsIDcxLCAyMDgsIDE5MywgCisgICAgNjQsIDIyNSwgNzEsIDIwOCwgMTkzLCA2MywgMjAyLCAyNDYsIDQsIDIwOCwgMTkzLCA2NCwgMjAyLCAyNDYsIDQsIDIwOCwgCisgICAgMTkzLCA2MywgMjE2LCAzNywgNjQsIDIxNiwgMzcsIDY0LCAyMzQsIDg5LCA2MywgMjM0LCA4OSwgMjMzLCAxNzcsIDYzLCAKKyAgICAyMzQsIDg5LCA2MywgMjI1LCA3MSwgMjQ2LCAxNTUsIDYzLCAyMjIsIDY2LCAyNDEsIDY0LCA2NCwgMjIyLCA2NiwgMjQxLCAKKyAgICA2NCwgNjMsIDIyMiwgNjYsIDIyNCwgNDksIDY0LCAyMjIsIDY2LCAyMjQsIDQ5LCA2MywgNCwgMjQxLCA2NCwgNjMsIDQsIAorICAgIDIyNCwgNDksIDY0LCA0LCAyMjQsIDQ5LCA2MywgMjMzLCAxNzcsIDIzOCwgMTk2LCA2NCwgMjMzLCAxNzcsIDIzOCwgMTk2LCAKKyAgICA2MywgODMsIDIzOCwgMTk2LCA2NCwgODMsIDIzOCwgMTk2LCA0OSwgNTUsIDMsIDQsIDI0NiwgMTU1LCAxMjYsIDk4LCAyNTAsIAorICAgIDE5OSwgNDksIDU1LCAzLCA0NCwgMjE1LCAxMTMsIDE2OCwgOTgsIDIwOCwgMTg2LCA0OCwgOTgsIDIwNCwgMTQxLCA1NSwgMywgCisgICAgODMsIDk3LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgMjA0LCAxNDEsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA5OCwgMjA0LCAxNDEsIDIwNSwgODMsIDI0MSwgMjQ1LCA0OCwgOTgsIDU1LCAzLCAyMzksIDE4MCwgMjA4LCA5MiwgOTgsIAorICAgIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgOTgsIDU1LCAzLCAyMDcsIDcsIDMsIDUzLCA4MywgOTcsIDk4LCAyMDQsIDE0MSwgCisgICAgNTUsIDMsIDIwNywgNiwgOTgsIDIwNCwgMTQxLCA1NSwgMywgMjA3LCA3LCAzLCA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIAorICAgIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgOTgsIDU1LCAyMDYsIDM4LCAyMDAsIDE5NSwgMjAxLCA3OCwgNTUsIDIxNSwgCisgICAgOTYsIDI0MSwgNywgMjI1LCAyOCwgMjM4LCAxMjIsIDIsIDg4LCA5OCwgNDgsIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCAKKyAgICA0NCwgODgsIDk4LCA0OCwgOTgsIDU1LCA4OCwgMjEzLCAxMDYsIDI1MSwgMTE3LCAxNjAsIDEzOCwgODcsIDU1LCAyMDYsIAorICAgIDM4LCAyMzUsIDY2LCA4NywgNTUsIDIwNiwgMzgsIDIwNywgMjExLCA5OCwgMjE0LCA5MCwgNDgsIDg3LCAyMTQsIDkwLCA0OCwgCisgICAgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIDQ0LCA4OCwgODcsIDQ4LCA4NywgNTUsIDg4LCAyMTMsIDEwNiwgMjUxLCAxMTcsIAorICAgIDE2MCwgMTM4LCAyMDUsIDI0MSwgMjE3LCA0NCwgODgsIDk4LCA0OCwgOTgsIDU1LCA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAKKyAgICA5OCwgNTUsIDg4LCAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgNDMsIDg3LCA1NSwgODgsIDIxMywgMTA2LCAyMDUsIDI0MSwgCisgICAgMjE3LCA0MywgMTkxLCAyMDUsIDk3LCAxOTksIDI3LCA0OCwgMjA5LCAyNTAsIDIwOSwgNzcsIDE1NywgNDgsIDIwOSwgMjUwLCAKKyAgICAyNDksIDEyNiwgMjA4LCAyNTQsIDQ4LCA2NCwgMjIyLCA2NiwgMjA4LCAxMDksIDYzLCA0LCAyMDgsIDEwOSwgNjQsIDQsIAorICAgIDIwOCwgMTA5LCA2MywgMjEzLCA0MSwgMjE2LCAzNywgNjQsIDIxMywgNDEsIDIxNiwgMzcsIDgwLCAyMjUsIDcxLCAyNDYsIAorICAgIDE1NSwgODAsIDIxNiwgMjQ4LCAzLCAyMTYsIDI0OCwgMjI4LCA3MywgODAsIDI0NiwgMTU2LCAzLCAyNDYsIDE1NiwgMjI4LCAKKyAgICA3MywgODAsIDI0NiwgMTU1LCA4MCwgNDQsIDIxMiwgMjQsIDIwOSwgNzcsIDE1NywgNTUsIDMsIDIzMywgMTg2LCAyMzQsIAorICAgIDEzNiwgMjQ5LCAxMjYsIDIwOCwgMjU0LCA1NSwgMywgMjMzLCAxODYsIDIwNywgNiwgMjA5LCA3NywgMTU3LCA1NSwgMywgCisgICAgMjMzLCAxNzcsIDIwNywgNiwgMjQ5LCAxMjYsIDIwOCwgMjU0LCA1NSwgMywgMjMzLCAxNzcsIDIwNywgNiwgMjQ4LCAyMjAsIAorICAgIDU1LCAyMTUsIDk2LCAxOTEsIDIwNiwgOTgsIDE1NywgMjM5LCAxMywgMjA5LCAyNTAsIDI0OCwgMjIwLCA1NSwgMjE1LCA5NiwgCisgICAgMTkxLCAyMDYsIDk4LCAxNTcsIDIzOSwgMTMsIDk4LCAyMDUsIDk3LCA0OCwgMTgyLCAyMDUsIDk3LCA0OCwgODcsIDIwNSwgCisgICAgOTcsIDQ4LCAxOTEsIDIwNSwgOTcsIDQ4LCA0OSwgNTEsIDIwNSwgOTcsIDQ4LCAxMTUsIDEyNywgMjA1LCA5NywgNDgsIAorICAgIDE1NywgMjAxLCA0OCwgMjA1LCA5NywgNDgsIDE1NywgMjM5LCAxNCwgMjA1LCA5NywgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCAKKyAgICAyMDUsIDk3LCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDIwNSwgOTcsIDQ4LCA5OCwgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCAKKyAgICAxODIsIDIwNSwgOTcsIDI0MSwgMjQzLCA0OCwgODcsIDIwNSwgOTcsIDI0MSwgMjQzLCA0OCwgMTkxLCAyMDUsIDk3LCAyNDEsIAorICAgIDI0MywgNDgsIDI0NiwgMTEyLCAyMDUsIDk3LCAxNzYsIDI0NiwgMTU2LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgMTc2LCAKKyAgICAyNDYsIDE1NiwgNDgsIDk4LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMTgyLCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIAorICAgIDE0OCwgODcsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAKKyAgICAxNTcsIDIwMSwgNDgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxNTcsIDIzOSwgMTQsIDIwNSwgOTcsIDU1LCAyMDUsIAorICAgIDE4NiwgMTQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDIwOCwgMjU0LCAyMDEsIAorICAgIDQ4LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgOTgsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIDk3LCAKKyAgICAxODIsIDIwNSwgOTcsIDU1LCAzLCA1MywgMjMzLCAxNzcsIDk3LCA4NywgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgCisgICAgOTcsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIDIzMywgMTc3LCAyMDcsIDI1LCAyMjYsIDIxNCwgCisgICAgODMsIDIwNywgMjUsIDIyNiwgMjE0LCA5OCwgMjA1LCA5NywgNTUsIDExOSwgODcsIDIwNSwgOTcsIDQ4LCAxODIsIDIwNSwgCisgICAgOTcsIDU1LCA5OCwgNzYsIDE5MSwgMjA1LCA5NywgNDgsIDg3LCAyMDUsIDk3LCA1NSwgMTE5LCA5OCwgMjA1LCA5NywgNDgsIAorICAgIDE5MSwgMjA1LCA5NywgNTUsIDk4LCA3NiwgMTgyLCAyMDUsIDk3LCA0OCwgOTgsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIAorICAgIDE5OSwgMTgyLCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDg3LCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAxOTksIAorICAgIDE5MSwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgMTk5LCA5OCwgNjMsIDQ0LCA2NCwgNDgsIDE4MiwgNjMsIDQ0LCA2NCwgCisgICAgNDgsIDg3LCA2MywgNDQsIDY0LCA0OCwgMTkxLCA2MywgNDQsIDY0LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgNTEsIDIwNCwgCisgICAgOTksIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCAyNDgsIDkzLCAyMDQsIDk5LCA0OCwgMjUxLCA0NywgMjA1LCA5NywgNDksIAorICAgIDIwNCwgOTksIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCAyMDUsIDE1OCwgMjA0LCA5OSwgNDgsIDIxMywgMTEwLCAyMjUsIDI4LCAKKyAgICAyMTMsIDExMCwgMjEzLCA0NiwgMjIwLCA2LCAyMjUsIDI4LCAyMjAsIDYsIDIxMywgNDYsIDIzNiwgMjI5LCAyNDMsIDE2LCAKKyAgICAyNTAsIDIwMCwgMjQ2LCAxNTEsIDI1MSwgNDYsIDg3LCA2MywgNDgsIDIwNiwgNDUsIDIwNSwgMTU2LCA5OCwgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMTMsIDQyLCAxODIsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMjA2LCA0NSwgMjA1LCAxNTYsIAorICAgIDg3LCAyMzgsIDExOCwgMjUwLCAyMDIsIDIwNiwgNDUsIDIyNSwgMjQsIDE5MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA2MywgCisgICAgOTgsIDIzOCwgMTE4LCAyNTAsIDIwMiwgNjMsIDE4MiwgMjM4LCAxMTgsIDI1MCwgMjAyLCA2MywgODcsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgNjMsIDE5MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgCisgICAgMjI0LCAyMjUsIDE4LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMTMsIDM1LCAxODIsIDIwNSwgOTcsIAorICAgIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMjUsIDE4LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAxNjgsIDIwNSwgMjI0LCAyMTMsIAorICAgIDM1LCA5OCwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIwMywgMjE2LCA4NywgMjA1LCA5NywgNTUsIDMsIDE2OCwgCisgICAgMjA1LCAyMjQsIDIwMywgMjE2LCA5OCwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIzOSwgMTY1LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIzOSwgMTY1LCA2MywgMjQyLCAxODgsIDE5MSwgMjYsIDk4LCA0OCwgNjMsIAorICAgIDI0MiwgMTg4LCAxOTEsIDI2LCA4NywgNDgsIDYzLCAyNDIsIDE4OCwgMTgyLCAyNiwgOTgsIDQ4LCA2MywgMjQyLCAxODgsIAorICAgIDE4MiwgMjYsIDg3LCA0OCwgNjMsIDI0MiwgMTg4LCA5OCwgMjYsIDE4MiwgNDgsIDYzLCAyNDIsIDE4OCwgODcsIDI2LCAKKyAgICAxODIsIDQ4LCA2MywgMjQyLCAxODgsIDk4LCAyNiwgMTkxLCA0OCwgNjMsIDI0MiwgMTg4LCA4NywgMjYsIDE5MSwgNDgsIAorICAgIDIxMywgODYsIDU1LCAxMjcsIDIyNSwgMjgsIDIxMywgODYsIDU1LCAxMjcsIDIxMywgNDYsIDIxMywgODYsIDU1LCAxMTUsIAorICAgIDIyNSwgMjgsIDIxMywgODYsIDU1LCAxMTUsIDIxMywgNDYsIDIxMywgODYsIDU1LCA0OSwgMjAzLCAyMjgsIDIxMywgODYsIAorICAgIDU1LCA1MSwgMjAzLCAyMjgsIDIxMywgODYsIDU1LCA0OSwgMjM5LCAxNjcsIDIxMywgODYsIDU1LCA1MSwgMjM5LCAxNjcsIAorICAgIDE4MiwgNjQsIDU1LCAyMzYsIDIwMSwgMjQ5LCA3NywgMywgMjMzLCAxNzcsIDE0OCwgMTE1LCAyNTAsIDIwMywgMjI4LCAKKyAgICAxMTgsIDM1LCAyMTMsIDE3NiwgMjQ4LCA3OCwgMjQ5LCA5NCwgMTAwLCAzLCAxNjIsIDIwMCwgMTk1LCA0NCwgMjAwLCAxOTUsIAorICAgIDQ0LCAyNywgMjAwLCAxOTUsIDYzLCA1MiwgMjQ3LCA1MywgNjMsIDI0MSwgNjUsIDI0NywgNTMsIDIwNCwgMTg1LCA2MywgCisgICAgMjE2LCAzNywgMjMzLCAxNzcsIDYzLCAyMTcsIDEzMCwgNjMsIDIxNywgMTMwLCA2MywgMjIyLCA2NiwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDI0NywgNTMsIDYzLCAyMjIsIDY2LCAyMzksIDE2NiwgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIAorICAgIDIyNSwgMjMsIDIwNSwgOTksIDI0NywgNTMsIDYzLCAyMjIsIDY2LCAyMTMsIDQxLCAyMDUsIDk5LCAyNDcsIDUzLCAyMDUsIAorICAgIDE1OCwgMTY3LCA2MywgMjQ2LCAxNTUsIDI0OCwgOTMsIDE2NywgNjMsIDI0NiwgMTU1LCAxNjIsIDIzNiwgMjI5LCAyMTUsIAorICAgIDk4LCA2MywgMjQyLCAxODQsIDIxMiwgMjI4LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCA2MywgMjQyLCAxODQsIDY0LCAKKyAgICAyMzYsIDIyOSwgMjE1LCA5OCwgMjQyLCAxODQsIDIxMiwgMjI4LCA2NCwgMjM2LCAyMjksIDIxNSwgOTgsIDI0MiwgMTg0LCAKKyAgICA1MiwgMjE1LCA3MCwgMjI4LCA5OSwgMjAzLCAyNTUsIDU0LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIDk5LCAyNTAsIAorICAgIDIwMSwgMTgyLCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgOTksIDI1MCwgMjAxLCA4NywgMjA0LCAxNDEsIDU1LCAzLCAyMDUsIAorICAgIDk5LCAyNTAsIDIwMSwgMTkxLCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgOTksIDI1MCwgMjAxLCAxMTYsIDYsIDEsIDI1MCwgCisgICAgMTA0LCAxMTYsIDYsIDEsIDI0OCwgMjQsIDExNiwgNiwgMSwgMjAzLCA1NywgMTE2LCA2LCAxLCAyMzUsIDEzMCwgMTE2LCA2LCAKKyAgICAxLCAyNDAsIDIwNiwgMTE2LCA2LCAxLCAyMDAsIDIzLCAxMTYsIDYsIDEsIDE5OSwgNjEsIDExNiwgNiwgMSwgMjM5LCA4OCwgCisgICAgMTE2LCA2LCAxLCAxOTksIDg2LCAxMTYsIDYsIDEsIDIyNywgMjU1LCAxMTYsIDYsIDEsIDgyLCAyMjcsIDI1NSwgMTE2LCA2LCAKKyAgICAxLCA3MCwgMTE2LCA2LCAxLCAyNDAsIDIyNiwgMTE2LCA2LCAxLCAyMjcsIDc0LCAxMTYsIDYsIDEsIDIyNCwgMTQwLCAxMTYsIAorICAgIDYsIDEsIDIyMCwgMjE4LCAxMTYsIDYsIDEsIDIyMCwgMTIwLCAxMTYsIDYsIDEsIDIxNywgNjUsIDExNiwgNiwgMSwgMjE1LCAKKyAgICA5MywgMTE2LCA2LCAxLCAyMTMsIDE4LCAxMTYsIDYsIDEsIDIwOSwgNTgsIDExNiwgNiwgMSwgMjA0LCAxNzEsIDExNiwgNiwgCisgICAgMSwgMjA0LCAxNiwgMTE2LCA2LCAxLCAyMzYsIDIwNCwgMTE2LCA2LCAxLCAyMzQsIDk1LCAxMTYsIDYsIDEsIDIxNywgNCwgCisgICAgMTE2LCA2LCAxLCAyMTYsIDczLCAxMTYsIDYsIDEsIDIwOSwgMjIzLCAxMTYsIDYsIDEsIDIwNSwgMTEsIDExNiwgNiwgMSwgCisgICAgMjQ2LCAxOTgsIDExNiwgNiwgMSwgMjEwLCAxMTQsIDExNiwgNiwgMSwgMjAwLCAyOSwgMTE2LCA2LCAxLCAyMDAsIDMxLCAKKyAgICAxMTYsIDYsIDEsIDIwMCwgNjMsIDExNiwgNiwgMSwgMjA4LCAyMjAsIDE0NCwgMTE2LCA2LCAxLCAxOTksIDIxMSwgMTE2LCAKKyAgICA2LCAxLCA0LCAxOTksIDE4MSwgMTE2LCA2LCAxLCA0LCAxOTksIDE4MiwgMywgMjA3LCA2LCAxMTYsIDYsIDEsIDE5OSwgCisgICAgMjQ1LCAxMTYsIDYsIDEsIDIyOCwgNDAsIDQsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCAKKyAgICA2LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAxODEsIDExNiwgNiwgMSwgMjM3LCA2MywgMTE2LCA2LCAxLCAyMjcsIAorICAgIDI1MywgMTE2LCA2LCAxLCAyMDksIDIyMiwgMTE2LCA2LCAxLCAyMDUsIDczLCA2MiwgMTE2LCA2LCAxLCAyMjUsIDU5LCAKKyAgICAyMjAsIDIxOCwgMTE2LCA0LCAxLCAyNTAsIDEwNCwgMTE2LCA0LCAxLCAyNDgsIDI0LCAxMTYsIDQsIDEsIDIwMywgNTcsIAorICAgIDExNiwgNCwgMSwgMjM1LCAxMzAsIDExNiwgNCwgMSwgMjQwLCAyMDYsIDExNiwgNCwgMSwgMjAwLCAyMywgMTE2LCA0LCAxLCAKKyAgICAxOTksIDYxLCAxMTYsIDQsIDEsIDIzOSwgODgsIDExNiwgNCwgMSwgMTk5LCA4NiwgMTE2LCA0LCAxLCAyMjcsIDI1NSwgCisgICAgMTE2LCA0LCAxLCA4MiwgMjI3LCAyNTUsIDExNiwgNCwgMSwgNzAsIDExNiwgNCwgMSwgMjQwLCAyMjYsIDExNiwgNCwgMSwgCisgICAgMjI3LCA3NCwgMTE2LCA0LCAxLCAyMjQsIDE0MCwgMTE2LCA0LCAxLCAyMjAsIDIxOCwgMTE2LCA0LCAxLCAyMjAsIDEyMCwgCisgICAgMTE2LCA0LCAxLCAyMTcsIDY1LCAxMTYsIDQsIDEsIDIxNSwgOTMsIDExNiwgNCwgMSwgMjEzLCAxOCwgMTE2LCA0LCAxLCAKKyAgICAyMDksIDU4LCAxMTYsIDQsIDEsIDIwNCwgMTcxLCAxMTYsIDQsIDEsIDIwNCwgMTYsIDExNiwgNCwgMSwgMjM2LCAyMDQsIAorICAgIDExNiwgNCwgMSwgMjM0LCA5NSwgMTE2LCA0LCAxLCAyMTcsIDQsIDExNiwgNCwgMSwgMjE2LCA3MywgMTE2LCA0LCAxLCAKKyAgICAyMDksIDIyMywgMTE2LCA0LCAxLCAyMDUsIDExLCAxMTYsIDQsIDEsIDI0NiwgMTk4LCAxMTYsIDQsIDEsIDIxMCwgMTE0LCAKKyAgICAxMTYsIDQsIDEsIDIwMCwgMjksIDExNiwgNCwgMSwgMjAwLCAzMSwgMTE2LCA0LCAxLCAyMDAsIDYzLCAxMTYsIDQsIDEsIAorICAgIDIwOCwgMjIwLCAxNDQsIDExNiwgNCwgMSwgMTk5LCAyMTEsIDExNiwgNCwgMSwgNCwgMTk5LCAxODEsIDExNiwgNCwgMSwgNCwgCisgICAgMTk5LCAxODIsIDMsIDIwNywgNiwgMTE2LCA0LCAxLCAxOTksIDI0NSwgMTE2LCA0LCAxLCAyMjgsIDQwLCA0LCAxOTksIAorICAgIDE4MSwgMTE2LCA0LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDExNiwgNCwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgCisgICAgMTgxLCAxMTYsIDQsIDEsIDIzNywgNjMsIDExNiwgNCwgMSwgMjI3LCAyNTMsIDExNiwgNCwgMSwgMjA5LCAyMjIsIDExNiwgCisgICAgNCwgMSwgMjA1LCA3MywgNjIsIDExNiwgNCwgMSwgMjI1LCA1OSwgMjIwLCAyMTgsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICA1MywgMTQ4LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgNTMsIDE0OCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEwMSwgMjA1LCAKKyAgICAyNDAsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCA5NywgOCwgNiwgMSwgMjE0LCAzMywgMywgMjA3LCA2LCA4LCA0LCAxLCAzNSwgCisgICAgMywgOTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMjQxLCAxMTksIAorICAgIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAKKyAgICAyMjcsIDExOSwgMywgMjQxLCAxMTksIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgMTk5LCAxNTgsIAorICAgIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyNTEsIDExMiwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDExNywgOCwgNiwgMSwgMjA0LCAKKyAgICAxODUsIDYyLCA4LCA2LCAxLCAyMDQsIDE4NSwgMjUxLCAxMTIsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCA1MSwgMTE3LCA4LCAKKyAgICA2LCAxLCAyMDEsIDE0OCwgMywgMTE3LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMTE3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgCisgICAgMjQyLCAxOTgsIDgsIDYsIDEsIDE2NywgMjM0LCAyNDcsIDgsIDQsIDEsIDE2NywgMjM0LCAyNDcsIDgsIDQsIDEsIDIwNywgCisgICAgNCwgMjE1LCAyMjksIDgsIDQsIDEsIDE5NywgMywgMjE4LCAyMTIsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMTQsIDMzLCAzLCAKKyAgICAyMDcsIDYsIDgsIDQsIDEsIDE2MywgMywgMTI4LCAyMTMsIDI3LCAyMjgsIDczLCA4LCAxLCA0LCA2LCAyMDQsIDE4NSwgNzIsIAorICAgIDgsIDIwOCwgNCwgNCwgMSwgMjI3LCAyNTEsIDY3LCAxLCA2LCAyMDMsIDE2OCwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDIwNywgCisgICAgMTgzLCAyMDcsIDYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAyMDcsIDE4MywgMjA3LCA2LCA4NSwgNiwgMSwgMjUxLCAxMzYsIAorICAgIDg1LCA0LCAxLCAyNTEsIDEzNiwgODUsIDYsIDEsIDIwMiwgMjMxLCA4NSwgNCwgMSwgMjAyLCAyMzEsIDg1LCA2LCAxLCAKKyAgICAyMzYsIDYwLCA4NSwgNCwgMSwgMjM2LCA2MCwgODUsIDYsIDEsIDI0MiwgMjUsIDg1LCA0LCAxLCAyNDIsIDI1LCA4NSwgNiwgCisgICAgMSwgMjM4LCAyMzMsIDg1LCA0LCAxLCAyMzgsIDIzMywgODUsIDYsIDEsIDIwOSwgMywgODUsIDQsIDEsIDIwOSwgMywgODUsIAorICAgIDYsIDEsIDE5OSwgOTYsIDg1LCA0LCAxLCAxOTksIDk2LCA4NSwgNiwgMSwgMjM0LCAxNTQsIDg1LCA0LCAxLCAyMzQsIDE1NCwgCisgICAgODUsIDYsIDEsIDIwNiwgODYsIDg1LCA0LCAxLCAyMDYsIDg2LCA4NSwgNiwgMSwgMjMyLCAyMzcsIDg1LCA0LCAxLCAyMzIsIAorICAgIDIzNywgODUsIDYsIDEsIDIyNywgNTksIDg1LCA0LCAxLCAyMjcsIDU5LCA4NSwgNiwgMSwgMjI1LCA1NCwgODUsIDQsIDEsIAorICAgIDIyNSwgNTQsIDg1LCA2LCAxLCAyMjEsIDIxMSwgODUsIDQsIDEsIDIyMSwgMjExLCA4NSwgNiwgMSwgMjE5LCAxNTAsIDg1LCAKKyAgICA0LCAxLCAyMTksIDE1MCwgODUsIDYsIDEsIDIyNiwgMzEsIDg1LCA0LCAxLCAyMjYsIDMxLCA4NSwgNiwgMSwgNzQsIDg1LCAKKyAgICA0LCAxLCA3NCwgODUsIDYsIDEsIDIxNSwgMjA0LCA4NSwgNCwgMSwgMjE1LCAyMDQsIDg1LCA2LCAxLCAyMTMsIDEsIDg1LCAKKyAgICA0LCAxLCAyMTMsIDEsIDg1LCA2LCAxLCAyMDksIDE1MSwgODUsIDQsIDEsIDIwOSwgMTUxLCA4NSwgNiwgMSwgMjA2LCAyMjEsIAorICAgIDg1LCA0LCAxLCAyMDYsIDIyMSwgODUsIDYsIDEsIDIwNCwgNDYsIDg1LCA0LCAxLCAyMDQsIDQ2LCA4NSwgNiwgMSwgMjM3LCAKKyAgICAxMTIsIDg1LCA0LCAxLCAyMzcsIDExMiwgODUsIDYsIDEsIDIyNiwgMTg1LCA4NSwgNCwgMSwgMjI2LCAxODUsIDg1LCA2LCAKKyAgICAxLCAyMTQsIDIzNSwgODUsIDQsIDEsIDIxNCwgMjM1LCA4NSwgNiwgMSwgMjE3LCA1NywgODUsIDQsIDEsIDIxNywgNTcsIAorICAgIDg1LCA2LCAxLCAyNDEsIDY5LCAyNTEsIDE0MiwgODUsIDQsIDEsIDI0MSwgNjksIDI1MSwgMTQyLCA4NSwgNiwgMSwgNDAsIAorICAgIDg1LCAyNTEsIDE3MSwgODUsIDQsIDEsIDQwLCA4NSwgMjUxLCAxNzEsIDg1LCA2LCAxLCAyNDIsIDIxNywgMjM4LCAyMzMsIAorICAgIDg1LCA0LCAxLCAyNDIsIDIxNywgMjM4LCAyMzMsIDg1LCA2LCAxLCAyNDEsIDY5LCAyMjcsIDU5LCA4NSwgNCwgMSwgMjQxLCAKKyAgICA2OSwgMjI3LCA1OSwgODUsIDYsIDEsIDI0MSwgNjksIDIxOSwgMTUwLCA4NSwgNCwgMSwgMjQxLCA2OSwgMjE5LCAxNTAsIAorICAgIDg1LCA2LCAxLCAyNDIsIDIxNywgMjE5LCAxNTAsIDg1LCA0LCAxLCAyNDIsIDIxNywgMjE5LCAxNTAsIDg1LCA2LCAxLCA0MCwgCisgICAgODUsIDIxNywgNTcsIDg1LCA0LCAxLCA0MCwgODUsIDIxNywgNTcsIDg1LCA2LCAxLCAyMTIsIDE2LCA4NSwgNCwgMSwgMjEyLCAKKyAgICAxNiwgODUsIDYsIDEsIDI0MiwgMjMyLCAyMTAsIDU3LCA4NSwgNCwgMSwgMjQyLCAyMzIsIDIxMCwgNTcsIDg1LCA2LCAxLCAKKyAgICA0MCwgODUsIDIxMCwgNTcsIDg1LCA0LCAxLCA0MCwgODUsIDIxMCwgNTcsIDg1LCA2LCAxLCA0MCwgODUsIDIzOCwgOTQsIAorICAgIDg1LCA0LCAxLCA0MCwgODUsIDIzOCwgOTQsIDg1LCA2LCAxLCAyNTEsIDE1NSwgMjI2LCAxOTAsIDg1LCA0LCAxLCAyNTEsIAorICAgIDE1NSwgMjI2LCAxOTAsIDg1LCA2LCAxLCAyNDEsIDY5LCAyMzMsIDE3OCwgODUsIDQsIDEsIDI0MSwgNjksIDIzMywgMTc4LCAKKyAgICA4NSwgNiwgMSwgNDAsIDg1LCAyMzMsIDE3OCwgODUsIDQsIDEsIDQwLCA4NSwgMjMzLCAxNzgsIDg1LCA2LCAxLCA0MCwgODUsIAorICAgIDE0NCwgODUsIDQsIDEsIDQwLCA4NSwgMTQ0LCA4NSwgNiwgMSwgMjI1LCAxOTIsIDE0NCwgODUsIDQsIDEsIDIyNSwgMTkyLCAKKyAgICAxNDQsIDg1LCA2LCAxLCA0MCwgODUsIDIzNCwgMTE0LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzQsIDExNCwgODUsIDYsIDEsIAorICAgIDQwLCA4NSwgMjM0LCAxNTcsIDg1LCA0LCAxLCA0MCwgODUsIDIzNCwgMTU3LCA4NSwgNiwgMSwgNDAsIDg1LCAyMzYsIDU1LCAKKyAgICA4NSwgNCwgMSwgNDAsIDg1LCAyMzYsIDU1LCA4NSwgNiwgMSwgNDAsIDg1LCAyNDAsIDIyOSwgODUsIDQsIDEsIDQwLCA4NSwgCisgICAgMjQwLCAyMjksIDg1LCA2LCAxLCA0MCwgODUsIDIxMCwgMjMsIDg1LCA0LCAxLCA0MCwgODUsIDIxMCwgMjMsIDg1LCA2LCAxLCAKKyAgICA0MCwgMjE4LCAxMDMsIDIxMCwgMjMsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxMCwgMjMsIDg1LCA2LCAxLCA0MCwgCisgICAgMjE4LCAxMDMsIDIxOSwgMjAxLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTksIDIwMSwgODUsIDYsIDEsIDQwLCAyMTgsIAorICAgIDEwMywgMjE4LCA0MSwgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjE4LCA0MSwgODUsIDYsIDEsIDQwLCAyMTgsIDEwMywgCisgICAgMjAxLCA3OSwgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjAxLCA3OSwgODUsIDE2LCAyMjcsIDgyLCA4NSwgMTYsIDIyMSwgCisgICAgMjEyLCAyMTMsIDEsIDg1LCAxNiwgMjE1LCAyMDUsIDIxMywgMSwgODUsIDE2LCAyMDgsIDEwMCwgODUsIDE2LCAyMDYsIAorICAgIDIyMiwgMjEzLCAxLCA4NSwgMTYsIDIyNiwgMTg2LCAyMTMsIDEsIDg1LCAxNiwgMjEwLCAyNCwgMjA5LCAxNTEsIDg1LCA2LCAKKyAgICAxLCAyNDIsIDIxNywgMjEwLCA1NywgODUsIDQsIDEsIDI0MiwgMjE3LCAyMTAsIDU3LCA4NSwgNiwgMSwgMjQyLCAyMTcsIAorICAgIDIzNiwgNTUsIDg1LCA0LCAxLCAyNDIsIDIxNywgMjM2LCA1NSwgODUsIDM4LCAyMTksIDE1MSwgNTYsIDg1LCAzOCwgMjA4LCAKKyAgICAyMTMsIDI1MCwgMTczLCA4NSwgMzgsIDIwOCwgMjEzLCAyMjQsIDI0OCwgODUsIDYsIDEsIDI0OCwgMTE3LCAyMjYsIDE5MCwgCisgICAgODUsIDQsIDEsIDI0OCwgMTE3LCAyMjYsIDE5MCwgODUsIDQwLCAyMTgsIDEwMywgMjM2LCAxODMsIDIwOCwgNzYsIDg1LCAKKyAgICA0MCwgMjE4LCAxMDMsIDI0MSwgMTAsIDIxNCwgNzksIDgxLCA4NSwgNDAsIDIxOCwgMTAzLCAyMjgsIDk3LCAyMTQsIDc5LCAKKyAgICA4MSwgODUsIDQwLCAyMTgsIDEwMywgMjAzLCA0NCwgMjQwLCAyMzksIDg1LCAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgODUsIAorICAgIDIzNiwgMTgzLCAyMDgsIDc2LCA4NSwgMjIxLCA3NywgMjQwLCAyMzksIDExOCwgNCwgMSwgMjUxLCA4NSwgMTE4LCA0LCAxLCAKKyAgICAyNDksIDg4LCAxMTgsIDQsIDEsIDIzNiwgNTksIDExOCwgNCwgMSwgMjQwLCAxOTAsIDExOCwgNCwgMSwgMjM4LCAxNzksIAorICAgIDExOCwgNCwgMSwgMjAyLCAyMTcsIDExOCwgNCwgMSwgMTk5LCA4NCwgMTE4LCA0LCAxLCAyMDYsIDI0NCwgMTE4LCA0LCAxLCAKKyAgICAyMjgsIDExNywgMTE4LCA0LCAxLCAyMjcsIDY4LCAxMTgsIDQsIDEsIDIyNSwgNjUsIDExOCwgNCwgMSwgMjIyLCAxODAsIAorICAgIDExOCwgNCwgMSwgMjIwLCAxMjUsIDExOCwgNCwgMSwgMjE3LCA3OCwgMTE4LCA0LCAxLCAyMTYsIDEzMCwgMTE4LCA0LCAxLCAKKyAgICAxOTksIDczLCAxMTgsIDQsIDEsIDIxMywgMjM0LCAxMTgsIDQsIDEsIDIxMiwgMTMsIDExOCwgNCwgMSwgMjA2LCAyMzIsIAorICAgIDExOCwgNCwgMSwgMjA0LCA1LCAxMTgsIDQsIDEsIDIxNSwgMjM3LCAxMTgsIDQsIDEsIDIyNiwgMTk1LCAxMTgsIDQsIDEsIAorICAgIDIzNSwgMTkwLCAxMTgsIDQsIDEsIDIxNCwgMTQ0LCAxMTgsIDQsIDEsIDIxMCwgMjEsIDExOCwgNCwgMSwgMjQ2LCAyMjMsIAorICAgIDExOCwgNCwgMSwgMjQ3LCAxNTgsIDExOCwgNCwgMSwgMjI3LCAxOTgsIDExOCwgNCwgMSwgMjQ2LCAxNjIsIDExOCwgNCwgMSwgCisgICAgMjQ3LCAyMSwgMTE4LCA0LCAxLCAyMDAsIDE3OSwgMTE4LCA0LCAxLCAyMjcsIDIxMiwgMTE4LCA0LCAxLCAyMzQsIDIzMCwgCisgICAgMTE4LCA0LCAxLCAyMzQsIDEzOSwgMTE4LCA0LCAxLCAyMzQsIDY5LCAxMTgsIDQsIDEsIDIwMSwgNjQsIDExOCwgNCwgMSwgCisgICAgMjM0LCAxNjYsIDExOCwgNCwgMSwgMjMzLCAyMDMsIDExOCwgNCwgMSwgMTk5LCAyNDcsIDExOCwgNCwgMSwgMjUxLCAyMTAsIAorICAgIDIwNiwgNCwgMSwgMTgzLCAyMDYsIDQsIDEsIDIwMCwgMTA1LCAyMDYsIDQsIDEsIDIwMCwgMTA0LCAyMDYsIDQsIDEsIDIwMCwgCisgICAgOTQsIDIwNiwgNCwgMSwgMjAwLCA5MiwgMjA2LCA0LCAxLCAyNDgsIDIxNCwgMjUxLCAyNTMsIDIwMCwgODcsIDIwNiwgNCwgCisgICAgMSwgMjAwLCA4NywgMjA2LCA0LCAxLCAyMDAsIDEwMiwgMjA2LCA0LCAxLCAyMDAsIDk5LCAyMDYsIDQsIDEsIDIwMCwgMTAxLCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgMTAwLCAyMDYsIDQsIDEsIDIwMCwgMTQsIDIwNiwgNCwgMSwgMjAwLCA5NiwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDg1LCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDg1LCAyMDYsIDQsIDEsIDIwMCwgODIsIDIwNiwgNCwgMSwgCisgICAgMjAwLCA5MCwgMjA2LCA0LCAxLCAyNDgsIDIxNCwgMjUxLCAyNTMsIDIwMCwgOTAsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIAorICAgIDIwMCwgOTAsIDIwNiwgNCwgMSwgMjAwLCA4OSwgMjA2LCA0LCAxLCAyMDAsIDEwOSwgMjA2LCA0LCAxLCAyMDAsIDgzLCAKKyAgICAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDgzLCAyMDYsIDQsIDEsIDIwMCwgNzIsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIAorICAgIDIwMCwgNzIsIDIwNiwgNCwgMSwgMjAwLCA5LCAyMDYsIDQsIDEsIDIwMCwgNTMsIDIwNiwgNCwgMSwgMjUxLCAxODMsIDIwMCwgCisgICAgNTMsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgNTMsIDIwNiwgNCwgMSwgMjAwLCA4MSwgMjA2LCA0LCAxLCAyMDAsIDgwLCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNzcsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgOTEsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIAorICAgIDIwMCwgNzUsIDIwNiwgNCwgMSwgMjAwLCA3MywgMjA2LCA0LCAxLCAxOTksIDIxMSwgMjA2LCA0LCAxLCAyMDAsIDcwLCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNjksIDIwNiwgNCwgMSwgMjAwLCA5MywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA5MywgCisgICAgMjA2LCA0LCAxLCAyNTAsIDEwOCwgMjAwLCA5MywgMjA2LCA0LCAxLCAyMDAsIDY4LCAyMDYsIDQsIDEsIDIwMCwgNjYsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA2NywgMjA2LCA0LCAxLCAyMDAsIDY1LCAyMDYsIDQsIDEsIDIwMCwgNjQsIDIwNiwgNCwgMSwgCisgICAgMjAwLCAxMDMsIDIwNiwgNCwgMSwgMjAwLCA2MiwgMjA2LCA0LCAxLCAyMDAsIDYwLCAyMDYsIDQsIDEsIDIwMCwgNTksIAorICAgIDIwNiwgNCwgMSwgMjAwLCA1NywgMjA2LCA0LCAxLCAyMDAsIDU0LCAyMDYsIDQsIDEsIDIwNiwgMjEzLCAyMDAsIDU0LCAKKyAgICAyMDYsIDQsIDEsIDIwMCwgNTIsIDIwNiwgNCwgMSwgMjAwLCA1MSwgMjA2LCA0LCAxLCAxOTksIDI0NSwgMjA2LCA0LCA2NywgCisgICAgMSwgMjI1LCAxNjYsIDgxLCAyMDYsIDQsIDIxMCwgMTU1LCA4MSwgMjA2LCA0LCAxMTEsIDIyNywgMTYxLCAzNCwgNSwgMjI0LCAKKyAgICAxMDksIDM0LCA1LCAyMjEsIDEzNSwgMzQsIDUsIDIxMiwgMjU1LCAzNCwgNSwgMjA5LCAyOCwgMzQsIDUsIDIxMCwgNywgMzQsIAorICAgIDUsIDI0OCwgMTIzLCAzNCwgNSwgMjA1LCAxODUsIDM0LCA1LCAyNDYsIDkwLCAzNCwgNSwgMjE4LCAyMzksIDM0LCA1LCAKKyAgICAyMTgsIDI1LCAzNCwgNSwgMjM1LCAxMjMsIDIxNywgMTQ2LCAzNCwgNSwgMTk5LCAxMywgMzQsIDUsIDI0MCwgMjA5LCAzNCwgCisgICAgNSwgMjQxLCAxODksIDM0LCA1LCAyMjcsIDE2NSwgMzQsIDUsIDIwNiwgNjAsIDM0LCA1LCAyNDYsIDIwOSwgMzQsIDUsIAorICAgIDIxNSwgMjE2LCAzNCwgNSwgMjE1LCAxMDUsIDM0LCA1LCAyMzUsIDIwNSwgMzQsIDUsIDIzNSwgMjAxLCAzNCwgNSwgMjM1LCAKKyAgICAyMDIsIDM0LCA1LCAyMzUsIDIwMywgMzQsIDUsIDIwOCwgMTc5LCAzNCwgNSwgMjA4LCAxMzQsIDM0LCA1LCAyMDgsIDE0NywgCisgICAgMzQsIDUsIDIwOCwgMTc4LCAzNCwgNSwgMjA4LCAxNTIsIDM0LCA1LCAyMDgsIDE1MywgMzQsIDUsIDIwOCwgMTM5LCAzNCwgCisgICAgNSwgMjQ3LCA5OSwgMzQsIDUsIDI0NywgNzgsIDM0LCA1LCAyNDcsIDgwLCAzNCwgNSwgMjQ3LCA5OCwgMzQsIDUsIDI0NywgCisgICAgOTYsIDM0LCA1LCAyNDcsIDk3LCAzNCwgNSwgMjQ3LCA3OSwgMzQsIDUsIDE5OCwgMjMyLCAzNCwgNSwgMTk4LCAyMTAsIDM0LCAKKyAgICA1LCAxOTgsIDIyMywgMzQsIDUsIDE5OCwgMjMxLCAzNCwgNSwgMTk4LCAyMjYsIDM0LCA1LCAxOTgsIDIyNywgMzQsIDUsIAorICAgIDE5OCwgMjE1LCAzNCwgNSwgMjQ3LCA5NCwgMzQsIDUsIDI0NywgODEsIDM0LCA1LCAyNDcsIDgzLCAzNCwgNSwgMjQ3LCA5MywgCisgICAgMzQsIDUsIDI0NywgOTEsIDM0LCA1LCAyNDcsIDkyLCAzNCwgNSwgMjQ3LCA4MiwgMzQsIDUsIDIxNCwgNDUsIDM0LCA1LCAKKyAgICAyMTQsIDM1LCAzNCwgNSwgMjE0LCA0MSwgMzQsIDUsIDIxNCwgNDQsIDM0LCA1LCAyMTQsIDQyLCAzNCwgNSwgMjE0LCA0MywgCisgICAgMzQsIDUsIDIxNCwgNDAsIDM0LCA1LCAyMjUsIDIwMywgMzQsIDUsIDIyNSwgMTk1LCAzNCwgNSwgMjI1LCAxOTgsIDM0LCA1LCAKKyAgICAyMjUsIDIwMiwgMzQsIDUsIDIyNSwgMTk5LCAzNCwgNSwgMjI1LCAyMDAsIDM0LCA1LCAyMjUsIDE5NiwgMzQsIDUsIDIwMCwgCisgICAgMTM5LCAzNCwgNSwgMjAwLCAxMjYsIDM0LCA1LCAyMDAsIDEzNCwgMzQsIDUsIDIwMCwgMTM4LCAzNCwgNSwgMjAwLCAxMzYsIAorICAgIDM0LCA1LCAyMDAsIDEzNywgMzQsIDUsIDIwMCwgMTMzLCAzNCwgNSwgMjM1LCAzLCAzNCwgNSwgMjM0LCAyNDksIDM0LCA1LCAKKyAgICAyMzQsIDI1MiwgMzQsIDUsIDIzNSwgMiwgMzQsIDUsIDIzNCwgMjU0LCAzNCwgNSwgMjM0LCAyNTUsIDM0LCA1LCAyMzQsIAorICAgIDI1MSwgMzgsIDM3LCAxLCAyNDksIDgsIDM4LCAzNywgMSwgMjAzLCA1OSwgMzgsIDM3LCAxLCAyMzUsIDE4NSwgMzgsIDM3LCAKKyAgICAxLCAyNDEsIDE3NSwgMzgsIDM3LCAxLCAxOTksIDY4LCAzOCwgMzcsIDEsIDE5OSwgODksIDM4LCAzNywgMSwgMTYxLCAzOCwgCisgICAgMzcsIDEsIDIzOCwgMjA5LCAzOCwgMzcsIDEsIDIzOCwgMTkwLCAzOCwgMzcsIDEsIDIzOCwgMTc5LCAzOCwgMzcsIDEsIDc0LCAKKyAgICAzOCwgMzcsIDEsIDIxNiwgNzMsIDM4LCAzNywgMSwgMjM4LCAxMTUsIDM4LCAzNywgMSwgMjM4LCAxMDQsIDM4LCAzNywgMSwgCisgICAgMjA2LCAyMDEsIDM4LCAzNywgMSwgMTQ0LCAzOCwgMzcsIDEsIDIwNSwgMjYsIDM4LCAzNywgMSwgMjQ3LCA4LCAzOCwgMzcsIAorICAgIDEsIDIxMCwgMTE0LCAzOCwgMzcsIDEsIDIxMCwgNjgsIDM4LCAzNywgMSwgMjM3LCA2MywgMzgsIDM3LCAxLCAyMzgsIDEwMCwgCisgICAgMzgsIDM3LCAxLCA2MiwgMzgsIDM3LCAxLCAyMjgsIDE3OCwgMzgsIDM3LCAxLCAyNDAsIDIyNywgMzgsIDM3LCAxLCAyMjEsIAorICAgIDk1LCAyMDQsIDIwLCAzOCwgMzcsIDEsIDIwMCwgNjUsIDM4LCAzNywgMSwgMTk5LCAyMTEsIDM4LCAzNywgMSwgMjI4LCAzOSwgCisgICAgNjIsIDM4LCAzNywgMSwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzOCwgMzcsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzgsIDM3LCAKKyAgICAxLCAyMjgsIDM5LCAyNDgsIDE3NSwgMTk5LCAxODEsIDUxLCAyNTEsIDcxLCAyMDcsIDI1NSwgMjIyLCAxNDUsIDUxLCAyNTEsIAorICAgIDcxLCAyMzksIDE4MCwgMjA3LCAyNTUsIDIyMiwgMTQ1LCA0OSwgMjA3LCAyNTUsIDE1OSwgNTEsIDIwNywgMjU1LCAxNTksIAorICAgIDQ5LCAyMzksIDE4MCwgMjA3LCAyNTUsIDE1OSwgNTEsIDIzOSwgMTgwLCAyMDcsIDI1NSwgMTU5LCAyMTMsIDIyMCwgMjI4LCAKKyAgICA2MCwgMjIyLCAxNDUsIDIxMywgMjIwLCAyMzksIDE4MCwgMjI4LCA2MCwgMjIyLCAxNDUsIDIzOSwgMTgwLCAyMDUsIDExNiwgCisgICAgMjIyLCAxNDUsIDQ5LCAyMDUsIDExNiwgMTU5LCA1MSwgMjA1LCAxMTYsIDE1OSwgMjEzLCAyMjAsIDIwOCwgMTkzLCA0OSwgCisgICAgMjEzLCAyMjAsIDIxNywgODAsIDE1OSwgNTEsIDIxMywgMjIwLCAyMTcsIDgwLCAxNTksIDIzOSwgMCwgMjQzLCAxMywgMjE2LCAKKyAgICAxMjYsIDIzNiwgMjQ0LCAyMTYsIDEyNiwgMjEzLCAxMDUsIDIzNiwgMjQ0LCAyMTYsIDEyNiwgMjMzLCAzMCwgMjM5LCAxODAsIAorICAgIDIxNywgMTQxLCAxOTEsIDI1MSwgODAsIDE4MiwgMjUxLCA4MCwgMjM5LCAxODAsIDIxMywgNDEsIDI1MSwgNzAsIDUzLCAKKyAgICAyMTcsIDEzOCwgMjMzLCAzMywgMjI4LCA1MCwgMjI4LCA1OCwgMjE2LCAxNzcsIDI0OCwgNjYsIDIzMywgMzQsIDMsIDI0MSwgCisgICAgNzQsIDIwNSwgMjQxLCAzLCAyMTMsIDI3LCA1NiwgNDksIDEyOCwgMjE2LCAxMTgsIDE1OSwgNTEsIDEyOCwgMjE2LCAxMTgsIAorICAgIDE1OSwgMjA1LCAyNDEsIDMsIDczLCA1NiwgMjA1LCAyNDEsIDMsIDczLCA1NywgNDksIDgzLCAyNDksIDc3LCAzLCAyMTQsIAorICAgIDczLCA1MSwgODMsIDI0OSwgNzcsIDMsIDIxNCwgNzMsIDIwNSwgMTU4LCA0OSwgMTY3LCAxNTksIDIwNSwgMTU4LCA1MSwgCisgICAgMTY3LCAxNTksIDI0OCwgOTMsIDQ5LCAxNjcsIDE1OSwgMjQ4LCA5MywgNTEsIDE2NywgMTU5LCA0OSwgMjA5LCAxNzMsIAorICAgIDEwOCwgMTU5LCA1MSwgMjA5LCAxNzMsIDEwOCwgMTU5LCA0OSwgNTMsIDIxNiwgMTE1LCA1MSwgNTMsIDIxNiwgMTE1LCAKKyAgICAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAyMTQsIDIxMSwgMTEyLCA3MywgMTE5LCAxMjAsIDE5MCwgMjE0LCAyMTEsIDk1LCAKKyAgICAyMzYsIDIyOSwgNzMsIDIxNCwgMjExLCAyMzcsIDYxLCA3MywgODEsIDIxMywgMTA1LCAyMTQsIDc5LCA4MSwgODMsIDIwNSwgCisgICAgMjQwLCAyMTMsIDI3LCAyMTUsIDk5LCAyMDAsIDIzOCwgMjEwLCAxNTUsIDEwMSwgMjQwLCAxODIsIDIwNCwgMTg1LCAyNDYsIAorICAgIDcwLCAyMTMsIDIyMCwgMjQwLCAxODIsIDIxMywgMjIwLCAyNDYsIDcwLCAyMDQsIDE4NSwgMjEwLCAxNjcsIDI0MiwgNDEsIAorICAgIDMsIDQ5LCAyMzUsIDQ0LCAyNDIsIDQxLCAzLCA1MSwgMjM1LCA0NCwgMjA0LCAxODUsIDI0MiwgNDAsIDIwNSwgMTU4LCAKKyAgICAxNjcsIDIxMSwgMTkzLCA1NCwgMjA0LCAxNDIsIDI0MSwgMjQ0LCAyMDYsIDQ0LCAyNDEsIDI0NCwgMjA4LCA5MSwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDgzLCAyMDksIDEwNiwgMjQwLCAxODAsIDIwMSwgMjIsIDgzLCAyMjQsIDE3NiwgMjQ3LCAxNDIsIAorICAgIDUzLCAyMzMsIDMzLCAyMTMsIDEwNSwgMjQ2LCA3MCwgNTMsIDIyNCwgNTUsIDIxNCwgNjMsIDgxLCAyNDEsIDI0NSwgMywgCisgICAgNDksIDIwMywgMjE5LCA1MywgMjA3LCAxOTYsIDgxLCAxMiwgNDIsIDIxMywgMTMyLCAxMiwgNDIsIDI0NiwgMTIwLCAxMiwgCisgICAgNDIsIDIxMSwgMTk2LCAxMDIsIDEyLCA0MiwgMjExLCAxOTYsIDEwNSwgMTIsIDQyLCAyMTEsIDE5NiwgMTQ3LCAxMiwgNDIsIAorICAgIDIxNiwgMTAsIDEyLCA0MiwgMjQ4LCA3OCwgMTIsIDQyLCAyMDcsIDIyLCAxMiwgNDIsIDIyNiwgOTYsIDEwMiwgMTIsIDQyLCAKKyAgICAyMjYsIDk2LCAxMDUsIDEyLCA0MiwgMjQwLCAyMzYsIDEyLCA0MiwgMjExLCAyMDAsIDEyLCA0MiwgNCwgMTAyLCAxMiwgNDIsIAorICAgIDQsIDEwNSwgMTIsIDQyLCAyMjUsIDg2LCAxMDIsIDEyLCA0MiwgMjI1LCA4NiwgMTA1LCAxMiwgNDIsIDIyNSwgODYsIDE0NywgCisgICAgMTIsIDQyLCAyMjUsIDg2LCAxNDksIDEyLCA0MiwgMjA5LCA0MSwgMTIsIDQyLCAyMDYsIDQ3LCAxMiwgNDIsIDIwOSwgMzgsIAorICAgIDEwMiwgMTIsIDQyLCAyMDksIDM4LCAxMDUsIDEyLCA0MiwgMjM0LCAxMjgsIDEwMiwgMTIsIDQyLCAyMzQsIDEyOCwgMTA1LCAKKyAgICAxMiwgNDIsIDIzNCwgMTk5LCAxMiwgNDIsIDIxMywgMjEwLCAxMiwgNDIsIDI0NiwgMjA2LCAxMiwgNDIsIDIwNywgMjI4LCAKKyAgICAxMiwgNDIsIDIyMSwgODEsIDEyLCA0MiwgMjQxLCAxNzMsIDEyLCA0MiwgMjIxLCA3MSwgMTIsIDQyLCAyNDYsIDEzOCwgMTIsIAorICAgIDQyLCAyMDEsIDgzLCAxMDIsIDEyLCA0MiwgMjAxLCA4MywgMTA1LCAxMiwgNDIsIDIzNywgNzcsIDEyLCA0MiwgMjE2LCA4NSwgCisgICAgMTAyLCAxMiwgNDIsIDIxNiwgODUsIDEwNSwgMTIsIDQyLCAyMDksIDE0NiwgMTY3LCAyMDUsIDEwOSwgMjA1LCAzNywgMTIsIAorICAgIDQyLCAyNDIsIDI1NSwgMTIsIDQyLCAyNDAsIDIwMCwgMTIsIDQyLCAyMjcsIDI0MywgMTIsIDQyLCAyNDgsIDExNiwgNzYsIAorICAgIDI0NiwgMTA0LCAxMiwgNDIsIDIzOCwgMjIsIDEyLCA0MiwgMjA4LCAyMTUsIDEwMiwgMTIsIDQyLCAyMDgsIDIxNSwgMTA1LCAKKyAgICAxMiwgNDIsIDI0OSwgOTAsIDEyLCA0MiwgMjA5LCAxNTMsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwOSwgMTUzLCAxMiwgNDIsIAorICAgIDIyMCwgMTQsIDEwMiwgMTIsIDQyLCAyMjAsIDE0LCAxMDUsIDEyLCA0MiwgMjIwLCAxNCwgMTQ3LCAxMiwgNDIsIDIyMCwgCisgICAgMTQsIDE0OSwgMTIsIDQyLCAyMjIsIDI3LCAxMiwgNDIsIDIxMCwgNTksIDEyLCA0MiwgMjEzLCAyMTYsIDEyLCA0MiwgMjM4LCAKKyAgICA1MCwgMTIsIDQyLCAyMTcsIDkyLCAxMiwgNDIsIDI0OCwgNDQsIDEwMiwgMTIsIDQyLCAyNDgsIDQ0LCAxMDUsIDEyLCA0MiwgCisgICAgMjIyLCA3MSwgMTIsIDQyLCAyMjEsIDc2LCAxMiwgNDIsIDIzNSwgNzcsIDEwMiwgMTIsIDQyLCAyMzUsIDc3LCAxMDUsIDEyLCAKKyAgICA0MiwgMjM1LCA3NywgMTQ3LCAxMiwgNDIsIDIwNiwgMiwgMTIsIDQyLCAyNDYsIDEwMywgMTIsIDQyLCAyMDEsIDQ4LCAxMDIsIAorICAgIDEyLCA0MiwgMjAxLCA0OCwgMTA1LCAxMiwgNDIsIDI0NywgMjIwLCAyMTEsIDE5MCwgMTIsIDQyLCAyMDksIDE0NiwgMjMzLCAKKyAgICAxMjQsIDEyLCA0MiwgMjMzLCAxMjQsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwOCwgMjI3LCAxMiwgNDIsIDI0NywgMjIwLCAyMTAsIAorICAgIDU0LCAxMiwgNDIsIDIzNiwgMjU1LCAxMiwgNDIsIDI0NywgMjIwLCAyNDcsIDExOCwgMTIsIDQyLCAyMDksIDE0NiwgMjAxLCAKKyAgICAxMDQsIDEyLCA0MiwgMjAxLCAxMDUsIDEwMiwgMTIsIDQyLCAyMDEsIDEwNSwgMTA1LCAxMiwgNDIsIDI0NiwgMTQxLCAxMiwgCisgICAgNDIsIDI0NywgMjIwLCAyMzUsIDEwOCwgMTIsIDQyLCAxNjgsIDEwMiwgMTIsIDQyLCAxNjgsIDEwNSwgMTIsIDQyLCAyNDcsIAorICAgIDIyMCwgMjI0LCA4OSwgMTIsIDQyLCAyNDcsIDIyMCwgMjM2LCA0MSwgMTIsIDQyLCAyMjEsIDY3LCAxMDIsIDEyLCA0MiwgCisgICAgMjIxLCA2NywgMTA1LCAxMiwgNDIsIDIxMywgMjIyLCAxMiwgNDIsIDI0OCwgMTI2LCAxMiwgNDIsIDI0NywgMjIwLCAyMDYsIAorICAgIDIzOCwgMjI1LCAzNCwgMTIsIDQyLCAyNDcsIDIyMCwgMjI1LCAzNSwgMTIsIDQyLCAyNDcsIDIyMCwgMjAxLCAxNiwgMTIsIAorICAgIDQyLCAyNDcsIDIyMCwgMjM3LCAxNywgMTIsIDQyLCAyMzksIDExLCAxMDIsIDEyLCA0MiwgMjM5LCAxMSwgMTA1LCAxMiwgCisgICAgNDIsIDIzOSwgMTEsIDE0NywgMTIsIDQyLCAyNDcsIDIyMCwgMjM5LCAxMCwgMTIsIDQyLCAyMzQsIDEzNiwgMTIsIDQyLCAKKyAgICAyNDcsIDIyMCwgMjMzLCAxMjAsIDEyLCA0MiwgMjQ4LCAxMTIsIDEyLCA0MiwgMjM1LCAxNjksIDEyLCA0MiwgMjQ3LCAyMjAsIAorICAgIDIzNywgNzEsIDEyLCA0MiwgMjQ3LCAyMjAsIDI0OCwgMTYyLCAxMiwgNDIsIDI0NywgMjIwLCAyMTIsIDI3LCAxMiwgNDIsIAorICAgIDIwOSwgMTQ2LCAyMDEsIDM5LCAxMiwgNDIsIDIwOSwgMTQ2LCAyMDAsIDQzLCAxMiwgNDIsIDI0NywgMjIwLCAyMzYsIDIwMiwgCisgICAgMTIsIDQyLCAyMjcsIDI1MCwgMjM4LCA1NSwgMTIsIDQyLCAyNDcsIDIyMCwgMjM4LCA1NSwgMTIsIDQyLCAyMjcsIDI1MCwgCisgICAgMjA1LCAxNTksIDEyLCA0MiwgMjQ3LCAyMjAsIDIwNSwgMTU5LCAxMiwgNDIsIDIyNywgMjUwLCAyMzksIDE1OCwgMTIsIDQyLCAKKyAgICAyNDcsIDIyMCwgMjM5LCAxNTgsIDEyLCA0MiwgMjA0LCAxODIsIDEyLCA0MiwgMjI3LCAyNTAsIDIwNCwgMTgyLCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMDQsIDE4MiwgNzUsIDQyLCAxMDIsIDc1LCA0MiwgMjI0LCAxNzYsIDc1LCA0MiwgMjQwLCAxODIsIDc1LCAKKyAgICA0MiwgMjA5LCA3NSwgNzUsIDQyLCAyMTEsIDE5NSwgNzUsIDQyLCAxMTcsIDc1LCA0MiwgMTA1LCA3NSwgNDIsIDIyNCwgCisgICAgMjA1LCA3NSwgNDIsIDIyMiwgMTgwLCA3NSwgNDIsIDIyNSwgMTMsIDc1LCA0MiwgMjM4LCAxNTQsIDc1LCA0MiwgMTkyLCAKKyAgICA3NSwgNDIsIDEyNywgMjQ4LCA3OCwgNzUsIDQyLCAyNDMsIDEsIDc1LCA0MiwgMjMyLCAyMzEsIDc1LCA0MiwgMjA3LCAyMiwgCisgICAgNzUsIDQyLCAxNzYsIDI0OCwgNzgsIDc1LCA0MiwgMjI2LCA5NSwgNzUsIDQyLCAyMTUsIDUxLCA3NSwgNDIsIDIwMCwgMjI4LCAKKyAgICA3NSwgNDIsIDIwOCwgMjA2LCA3NSwgNDIsIDUxLCAxNzYsIDI0OCwgNzgsIDc1LCA0MiwgMjM0LCA3MCwgMjM4LCAxNzQsIAorICAgIDc1LCA0MiwgMjA2LCAxNjYsIDc1LCA0MiwgMjQwLCAyMzYsIDc1LCA0MiwgMjExLCAyMDAsIDc1LCA0MiwgMjQ2LCAxMjAsIAorICAgIDc1LCA0MiwgMjE1LCAzLCA3NSwgNDIsIDI1MSwgMTkyLCA3NSwgNDIsIDIyMSwgNTgsIDc1LCA0MiwgMjM4LCAxNzQsIDc1LCAKKyAgICA0MiwgMjM5LCAxNywgNzUsIDQyLCAyMTEsIDIyMywgNzUsIDQyLCAyMzUsIDExNiwgNzUsIDQyLCAyMzUsIDExNywgMjA5LCAKKyAgICA1NSwgNzUsIDQyLCAyMzgsIDU0LCA3NSwgNDIsIDI0OCwgMTc0LCA3NSwgNDIsIDIwMCwgMjUwLCA3NSwgNDIsIDI0NiwgCisgICAgMjI3LCA3NSwgNDIsIDIxMiwgMjM3LCA3NSwgNDIsIDIyOCwgMTEzLCA3NSwgNDIsIDIwOSwgNTMsIDc1LCA0MiwgMjI1LCAKKyAgICA4NSwgNzUsIDQyLCAyNDMsIDExLCA3NSwgNDIsIDIwOCwgMTk3LCA3NSwgNDIsIDIyMSwgNjMsIDc1LCA0MiwgMjEzLCAxNSwgCisgICAgNzUsIDQyLCAyMDAsIDIzNSwgNzUsIDQyLCAyMTcsIDcwLCA3NSwgNDIsIDIwNCwgMTkxLCA3NSwgNDIsIDIzOSwgMTM5LCAKKyAgICA3NSwgNDIsIDIwOSwgMjUwLCAyMDYsIDQ3LCA3NSwgNDIsIDIzOSwgMTgwLCAyNDYsIDEyMCwgNzUsIDQyLCAxNjgsIDIwOCwgCisgICAgNTMsIDc1LCA0MiwgMTIwLCAyMzQsIDE3NCwgNzUsIDQyLCAyMTAsIDAsIDc1LCA0MiwgMjQ4LCA4NSwgNzUsIDQyLCAyMDksIAorICAgIDM3LCA3NSwgNDIsIDI0OCwgNDgsIDc1LCA0MiwgMjA4LCA5MCwgNzUsIDQyLCAyMzQsIDEyNywgNzUsIDQyLCAyMzQsIDIxNCwgCisgICAgNzUsIDQyLCAyNDAsIDE4NSwgNzUsIDQyLCAyMzQsIDE5OSwgNzUsIDQyLCAyNDgsIDY2LCA3NSwgNDIsIDIxMywgMjEwLCAKKyAgICA3NSwgNDIsIDIxMSwgMjA4LCA3NSwgNDIsIDI0MSwgMTIsIDc1LCA0MiwgMjUwLCAxMTMsIDc1LCA0MiwgMjA4LCAxOTMsIAorICAgIDc1LCA0MiwgMjE4LCAyMTQsIDc1LCA0MiwgMjA3LCAyMjgsIDc1LCA0MiwgMjExLCAyMzQsIDc1LCA0MiwgMjIxLCA4MSwgCisgICAgNzUsIDQyLCAyMDUsIDEwOCwgNzUsIDQyLCAyMjUsIDE2MiwgNzUsIDQyLCAyMDgsIDc2LCA3NSwgNDIsIDI0MSwgMTczLCAKKyAgICA3NSwgNDIsIDIwMSwgNjMsIDc1LCA0MiwgMjQwLCAyMTIsIDIxOCwgMjE0LCA3NSwgNDIsIDI0NiwgNjYsIDc1LCA0MiwgCisgICAgMjM2LCAxNzYsIDc1LCA0MiwgMjQ2LCAxMzIsIDc1LCA0MiwgMjA4LCA5NSwgNzUsIDQyLCAyMDEsIDgyLCA3NSwgNDIsIAorICAgIDIzNywgNzcsIDc1LCA0MiwgMjQ2LCAxMjgsIDc1LCA0MiwgMjM3LCAxNTQsIDc1LCA0MiwgNTMsIDIwMCwgMTk1LCA3NSwgCisgICAgNDIsIDE2NywgMjA1LCAxMDksIDIwNSwgMzcsIDc1LCA0MiwgMjA5LCA2NywgNzUsIDQyLCAyMzcsIDE2NiwgNzUsIDQyLCAKKyAgICAyNDIsIDI1NSwgNzUsIDQyLCAyNDAsIDIwMCwgNzUsIDQyLCAyMTUsIDAsIDc1LCA0MiwgMjI3LCAyNDMsIDc1LCA0MiwgCisgICAgMjIyLCA0OSwgNzUsIDQyLCAyMDUsIDIzOSwgNzUsIDQyLCAyMDcsIDE3OCwgNzUsIDQyLCAyMjQsIDE5OSwgNzUsIDQyLCAKKyAgICAyMDMsIDE5NSwgNzUsIDQyLCAyMzcsIDExMCwgNzUsIDQyLCAyNDgsIDExNiwgNzYsIDI0NiwgMTA0LCA3NSwgNDIsIDIwOSwgCisgICAgMTc4LCA3NSwgNDIsIDIzOSwgMTgwLCAyMDYsIDE1OCwgNzUsIDQyLCAyMDEsIDM0LCA3NSwgNDIsIDIwOSwgODMsIDc1LCAKKyAgICA0MiwgMjQwLCAyNTUsIDc1LCA0MiwgMjM4LCAyMiwgNzUsIDQyLCAyMDgsIDIzMCwgNzUsIDQyLCA0OCwgNzUsIDQyLCAyMDgsIAorICAgIDc4LCA3NSwgNDIsIDIwOCwgMjE0LCA3NSwgNDIsIDIwNSwgMTMxLCA3NSwgNDIsIDIzNSwgODYsIDc1LCA0MiwgMjQ3LCAKKyAgICAxMDQsIDc1LCA0MiwgMjA4LCAxMTMsIDc1LCA0MiwgMjQ5LCA5MCwgNzUsIDQyLCAyMTMsIDgzLCA3NSwgNDIsIDIwOSwgCisgICAgMTUzLCA3NSwgNDIsIDIyNywgMjM1LCA3NSwgNDIsIDIyMCwgMTMsIDc1LCA0MiwgMjEwLCA1OSwgNzUsIDQyLCAyMzcsIAorICAgIDE0MiwgNzUsIDQyLCAyMTcsIDkyLCA3NSwgNDIsIDI1MSwgNzksIDc1LCA0MiwgMjE1LCAxMjAsIDc1LCA0MiwgMjM5LCAyMSwgCisgICAgNzUsIDQyLCAyNDgsIDQzLCA3NSwgNDIsIDIyMiwgNzEsIDc1LCA0MiwgMjIxLCAxNTgsIDc1LCA0MiwgMjEwLCAxNzQsIDc1LCAKKyAgICA0MiwgMjUwLCAyMDYsIDc1LCA0MiwgMjIxLCA3NiwgNzUsIDQyLCAyMDUsIDE2MywgNzUsIDQyLCAyMTcsIDQxLCA3NSwgNDIsIAorICAgIDI0OCwgMTIwLCA3NSwgNDIsIDIwOCwgNzQsIDc1LCA0MiwgMjQ2LCA3OCwgNzUsIDQyLCAyMzUsIDc2LCA3NSwgNDIsIDIwNiwgCisgICAgMiwgNzUsIDQyLCAyMjgsIDc2LCA3NSwgNDIsIDI0OCwgMTMyLCA3NSwgNDIsIDIwMSwgMTA1LCAyMzgsIDE3NCwgNzUsIDQyLCAKKyAgICAyNDYsIDEwMywgNzUsIDQyLCAyMDEsIDQ3LCA3NSwgNDIsIDIxMSwgMTkwLCA3NSwgNDIsIDIzMywgMTI0LCA3NSwgNDIsIAorICAgIDIwOCwgMjI3LCA3NSwgNDIsIDIwMywgODMsIDc1LCA0MiwgMjQ5LCAzLCA3NSwgNDIsIDIxNSwgMTY4LCA3NSwgNDIsIDI0OSwgCisgICAgMTE2LCA3NSwgNDIsIDIxMCwgNTQsIDc1LCA0MiwgMjEzLCAxNjksIDc1LCA0MiwgMjEyLCAxNTgsIDc1LCA0MiwgMjM2LCAKKyAgICAyNTUsIDc1LCA0MiwgMjQ4LCAxMTgsIDc1LCA0MiwgMjQ3LCAxMTgsIDc1LCA0MiwgMjQ4LCAxNDksIDc1LCA0MiwgMjIxLCAKKyAgICA3OCwgNzUsIDQyLCAyMDEsIDEwNCwgNzUsIDQyLCAyNDYsIDE0MSwgNzUsIDQyLCAyMDEsIDEyLCA3NSwgNDIsIDI0MCwgCisgICAgMjQ3LCA3NSwgNDIsIDIwMiwgMjE4LCA3NSwgNDIsIDIzNSwgMTA4LCA3NSwgNDIsIDIyNCwgODksIDc1LCA0MiwgMjM2LCAKKyAgICA0MSwgNzUsIDQyLCAyMjEsIDY2LCA3NSwgNDIsIDIwOSwgNzQsIDc1LCA0MiwgMjA5LCAyNTAsIDIwNywgNSwgMjQ4LCAxNjIsIAorICAgIDc1LCA0MiwgMjEzLCAyMjIsIDc1LCA0MiwgMjQ4LCAxMjYsIDc1LCA0MiwgMjAwLCAyMTgsIDc1LCA0MiwgMjM3LCAxODksIAorICAgIDc1LCA0MiwgMjI1LCAzNCwgNzUsIDQyLCAyMDYsIDIzOCwgMjI1LCAzNCwgNzUsIDQyLCAyMjUsIDMwLCA3NSwgNDIsIDIwOSwgCisgICAgMCwgNzUsIDQyLCAyMjUsIDM1LCA3NSwgNDIsIDIwMSwgMTYsIDc1LCA0MiwgMjM3LCAxNywgNzUsIDQyLCAyMzksIDEwLCAKKyAgICA3NSwgNDIsIDIzNCwgMTM2LCA3NSwgNDIsIDIzNiwgMjE3LCA3NSwgNDIsIDIzMywgMTIwLCA3NSwgNDIsIDI0OCwgMTEyLCAKKyAgICA3NSwgNDIsIDIwNiwgMjQ3LCA3NSwgNDIsIDIzNCwgMjIxLCA3NSwgNDIsIDIzNywgMTAzLCA3NSwgNDIsIDIxMiwgNTgsIAorICAgIDIwMSwgMTIsIDc1LCA0MiwgMjQ3LCAxMDYsIDc1LCA0MiwgMjM1LCAxNjksIDc1LCA0MiwgMjM3LCA3MSwgNzUsIDQyLCAKKyAgICAyNDgsIDE2MiwgNzUsIDQyLCAyMTIsIDI3LCA3NSwgNDIsIDI0MSwgMTU4LCA3NSwgNDIsIDIwMSwgMzksIDc1LCA0MiwgCisgICAgMjM0LCAxMDYsIDc1LCA0MiwgMjAwLCA0MywgNzUsIDQyLCAyMjEsIDE2OSwgNzUsIDQyLCAyNDgsIDE0NCwgNzUsIDQyLCAKKyAgICAyMzgsIDE4NiwgNzUsIDQyLCAyMzYsIDIwMiwgNzUsIDQyLCAyMDUsIDgwLCA3NSwgNDIsIDIzOSwgMTQyLCA3NSwgNDIsIAorICAgIDIxMywgMjA0LCA3NSwgNDIsIDIxOCwgMjE2LCA3NSwgNDIsIDIzOCwgNTUsIDc1LCA0MiwgMjA1LCAxNTksIDc1LCA0MiwgCisgICAgMjM5LCAxNTgsIDc1LCA0MiwgMjA0LCAxODIsIDc1LCA0MiwgMjM3LCAyMCwgMTQxLCAyNDEsIDExNywgMTcxLCA0OSwgMjA1LCAKKyAgICAxODYsIDIxMywgNDYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgODgsIDIwNSwgMTg2LCA1NywgMTQxLCAyNDEsIDExNywgMTcxLCAKKyAgICA0OSwgMjA1LCAxODYsIDEwMSwgMjYsIDIxMywgNDYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgODgsIDIwNSwgMTg2LCAxMDEsIAorICAgIDI2LCA1NywgMTQxLCAyNDEsIDExNywgMTcxLCAyMzYsIDE4MywgMjA3LCAyMDAsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAKKyAgICAyMDEsIDIzNiwgMjAxLCA1NiwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDU3LCAxNDEsIDI0MSwgCisgICAgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgMjI1LCAyOCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAKKyAgICAyMDEsIDIwMywgMjI1LCAyMjUsIDI4LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgMjAzLCAyMjUsIAorICAgIDIxMywgNDYsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMjQsIDU0LCAyMjUsIDI4LCAxNDEsIAorICAgIDI0MSwgMTE3LCAxNzEsIDIxNiwgMjQ1LCAxNDEsIDIwOCwgMjQ0LCAxNDEsIDI0NiwgNzAsIDE0MSwgMjM2LCAxODMsIDIwOCwgCisgICAgNzYsIDI0MCwgMjQ0LCA4MSwgMjI3LCAyMzYsIDIyOCwgOTYsIDIwOCwgMTEyLCA5OSwgMTQxLCAyMjgsIDEwLCA4MSwgMTQxLCAKKyAgICAyNDYsIDEwNiwgODEsIDE0MSwgNDEsIDE5OSwgODEsIDQ5LCAyNTEsIDcxLCAxNTksIDUxLCAyNTEsIDcxLCAxNTksIDQ5LCAKKyAgICA1MywgMjUxLCA3MSwgMTU5LCA1MSwgNTMsIDI1MSwgNzEsIDE1OSwgNDksIDI0MywgMTYsIDE1OSwgNTEsIDI0MywgMTYsIAorICAgIDE1OSwgNDksIDY0LCAyNDMsIDE2LCAxNTksIDUxLCA2NCwgMjQzLCAxNiwgMTU5LCA0OSwgNjMsIDIyNCwgMjQ3LCAxNTksIAorICAgIDUxLCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCA2NSwgODEsIDIzNSwgMjM4LCA4MSwgNDksIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAxNTksIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA0OSwgNjQsIDIyNCwgMjQ3LCAxNTksIDUxLCA2NCwgMjI0LCAyNDcsIAorICAgIDE1OSwgNDksIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCA1MSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDQ5LCAKKyAgICA2NCwgNTIsIDE1OSwgNTEsIDY0LCA1MiwgMTU5LCAyMDEsIDc4LCAyNDEsIDI0NCwgMjEzLCAxMDUsIDUzLCAyMTUsIDE1LCAKKyAgICAyMTQsIDYzLCA4MSwgNTMsIDIxNSwgMTUsIDIxNCwgNjMsIDgxLCAxMjgsIDUzLCAyMTUsIDE1LCAyMTQsIDYzLCA4MSwgCisgICAgMjE1LCA2NSwgMTM0LCAyMzcsIDE4OSwgMjM0LCAxNzEsIDIxOCwgOTMsIDEwMiwgMjM0LCAxNzEsIDIxOCwgOTMsIDEwNSwgCisgICAgMjM0LCAxNzEsIDIxOCwgOTMsIDE0NywgMjM0LCAxNzEsIDIxOCwgOTMsIDE0OSwgMjM0LCAxNzEsIDIxOCwgOTMsIDE2NCwgCisgICAgMjM0LCAxNzEsIDIxOCwgOTMsIDE4NywgMjM0LCAxNzEsIDIxOCwgOTMsIDIxMCwgMTM1LCAyMzQsIDE3MSwgMjE4LCA5MywgCisgICAgMTkyLCAyMzQsIDE3MSwgMjE4LCA5MywgMjE5LCAxMTMsIDE0MSwgMjI0LCAyMjksIDE1MCwgODEsIDE0MSwgMjEzLCAxOSwgCisgICAgMTUwLCA4MSwgMTQxLCAyNDEsIDEyNiwgMTUwLCA4MSwgMTQxLCAyMzgsIDE1MywgMTUwLCA4MSwgMjksIDIwOSwgMTM5LCAKKyAgICA3MywgMTUwLCA4MSwgMjksIDUzLCA3MywgMTUwLCA4MSwgMjAxLCA3NCwgMjQxLCAyNDQsIDgzLCAyMjcsIDY3LCAyMTMsIAorICAgIDEzMywgODEsIDgzLCAyMjcsIDY3LCAyMTMsIDEzMywgMywgMjAyLCAxODksIDIwOSwgMSwgODEsIDgzLCAyMjcsIDY3LCAKKyAgICAyMTMsIDEzMywgMTM0LCAyMDMsIDIyNSwgMjM0LCAyMTMsIDgzLCAyMjcsIDY3LCAyMTMsIDEzMywgMywgMjAyLCAxODksIAorICAgIDIwOSwgMSwgMTM0LCAyMDMsIDIyNSwgMjM0LCAyMTMsIDgzLCAyMjcsIDY3LCAyMTMsIDEzMywgMTM0LCAyMjQsIDU0LCAKKyAgICAyMzQsIDIxMywgNDQsIDIxNSwgNjUsIDgxLCAxNDEsIDIwNiwgMTc4LCAyMjQsIDE3NywgMjM3LCAxMzksIDIxMCwgMTU1LCAKKyAgICA5OSwgMjM0LCAxNzEsIDIxOCwgOTMsIDIwNiwgMTY2LCAyMzQsIDE3MSwgMjE4LCA5MywgMjA0LCAxNTksIDIzNCwgMTcxLCAKKyAgICAyMTgsIDkzLCAyMDYsIDY3LCA4MywgMTQxLCAyMjgsIDEwLCA4MSwgMjIyLCAxMjgsIDgxLCAyMTYsIDExMCwgMjUxLCAxMDUsIAorICAgIDgxLCAxNDEsIDU4LCAyMjgsIDk5LCAxNDEsIDE2NywgMjM3LCA5NiwgMjA4LCAyNDQsIDE3NywgMSwgNCwgNjIsIDE3NywgMSwgCisgICAgNjIsIDE3NywgMSwgNCwgNzAsIDE3NywgMSwgNzAsIDE3NywgMSwgNCwgNjYsIDE3NywgMSwgNjYsIDE3NywgMSwgNCwgNzIsIAorICAgIDE3NywgMSwgNzIsIDE3NywgMSwgNCwgNzQsIDE3NywgMSwgNzQsIDE3NywgMSwgMTYxLCAxNzcsIDEsIDIzNiwgODksIDE3NywgCisgICAgMSwgMjI2LCAxNjMsIDE3NywgMSwgMjM1LCAxNjEsIDE3NywgMSwgMjI2LCAxNSwgMTc3LCAxLCAyMzUsIDUwLCAxNzcsIDEsIAorICAgIDIyNywgOCwgMTc3LCAxLCAyMzYsIDE1LCAxNzcsIDEsIDIyNiwgODgsIDE3NywgMSwgMjM1LCAxMTYsIDE3NywgMSwgMjEyLCAKKyAgICA2NCwgMTc3LCAxLCAxOTksIDExNCwgMTc3LCAxLCAyMDksIDE4MiwgMTc3LCAxLCAxOTksIDM2LCAxNzcsIDEsIDIwOCwgMjQsIAorICAgIDE3NywgMSwgMTk5LCAzLCAxNzcsIDEsIDIxMSwgMjAyLCAxNzcsIDEsIDE5OSwgODksIDE3NywgMSwgMjA5LCAyOSwgMTc3LCAKKyAgICAxLCAxOTksIDE0LCAxNzcsIDEsIDIwNywgMzYsIDE3NywgMSwgMjQyLCA1OCwgMTc3LCAxLCAyMDYsIDE1LCAxNzcsIDEsIAorICAgIDI0MSwgNzYsIDE3NywgMSwgNCwgMjA0LCAyMTUsIDE3NywgMSwgMjA0LCAyMTUsIDE3NywgMSwgMjM5LCAxMzcsIDE3NywgMSwgCisgICAgMjA2LCAyMDEsIDE3NywgMSwgMjQxLCAxNzUsIDE3NywgMSwgMTM4LCAxNzcsIDEsIDI0MCwgMjExLCAxNzcsIDEsIDE4OCwgCisgICAgMTc3LCAxLCAyMTksIDE1MCwgMTc3LCAxLCAyMTgsIDEzMywgMTc3LCAxLCAyMjAsIDM0LCAxNzcsIDEsIDIxOCwgMjQxLCAKKyAgICAxNzcsIDEsIDE0NCwgMTc3LCAxLCAyNDksIDEzNiwgMTc3LCAxLCAxNzIsIDE3NywgMSwgMjM0LCA3NSwgMTc3LCAxLCAyNDgsIAorICAgIDE4OCwgMTc3LCAxLCAyMTUsIDIwNCwgMTc3LCAxLCAyMzMsIDk3LCAxNzcsIDEsIDI0OCwgMzYsIDE3NywgMSwgMjE0LCAKKyAgICAyMjQsIDE3NywgMSwgMjM0LCAxMzksIDE3NywgMSwgMjQ5LCA4LCAxNzcsIDEsIDIxNiwgNzMsIDE3NywgMSwgMjMzLCAyMDcsIAorICAgIDE3NywgMSwgMjQ4LCAxMjQsIDE3NywgMSwgMjE1LCAxMDYsIDE3NywgMSwgMTc4LCAxNzcsIDEsIDIyMSwgMjExLCAxNzcsIAorICAgIDEsIDIyMSwgNDEsIDE3NywgMSwgMjIyLCA3NiwgMTc3LCAxLCAyMjEsIDEzNiwgMTc3LCAxLCA0LCAxODMsIDE3NywgMSwgCisgICAgMTgzLCAxNzcsIDEsIDQsIDE5OSwgMjExLCAxNzcsIDEsIDE5OSwgMjExLCAxNzcsIDEsIDQsIDE5OSwgMjQ1LCAxNzcsIDEsIAorICAgIDE5OSwgMjQ1LCAxNzcsIDEsIDIxMywgMjUyLCAxNzcsIDEsIDIxMywgODgsIDE3NywgMSwgMjEyLCAxNzUsIDE3NywgMSwgCisgICAgMjEzLCAxOTAsIDE3NywgMSwgMjEzLCAxLCAxNzcsIDEsIDQsIDIwMSwgMTE0LCAxNzcsIDEsIDIwMSwgMTE0LCAxNzcsIDEsIAorICAgIDIwMSwgMzEsIDE3NywgMSwgMjAxLCA2NCwgMTc3LCAxLCAyMDEsIDAsIDE3NywgMSwgMjIwLCAyMTQsIDE3NywgMSwgMjAxLCAKKyAgICAxNjYsIDE3NywgMSwgNCwgMTYxLCAxNzcsIDEsIDQsIDIyNywgOCwgMzgsIDIyNywgMzIsIDIwMiwgMTg5LCAyMDksIDEsIAorICAgIDgxLCAzOCwgMjI3LCAzMiwgMjEwLCAxNzIsIDIwOSwgMSwgODEsIDIyNywgMzIsIDIwMiwgMTg5LCAyMDksIDEsIDgxLCAKKyAgICAyMjcsIDMyLCAyMTAsIDE3MiwgMjA5LCAxLCA4MSwgMTc3LCAyMjgsIDEwLCA4MSwgMTc3LCAyMDIsIDE4OSwgMjI4LCAxMCwgCisgICAgODEsIDE3NywgMjQxLCAzNSwgMTk5LCAyMjYsIDIyNywgMzIsIDUzLCAyMzMsIDMzLCA2OSwgMSwgNCwgNjIsIDY5LCAxLCAKKyAgICA2MiwgNjksIDEsIDQsIDcwLCA2OSwgMSwgNzAsIDY5LCAxLCA0LCA2NiwgNjksIDEsIDY2LCA2OSwgMSwgNCwgNzIsIDY5LCAKKyAgICAxLCA3MiwgNjksIDEsIDQsIDc0LCA2OSwgMSwgNzQsIDY5LCAxLCAxNjEsIDY5LCAxLCAyMzYsIDg5LCA2OSwgMSwgMjI2LCAKKyAgICAxNjMsIDY5LCAxLCAyMzUsIDE2MSwgNjksIDEsIDIyNiwgMTUsIDY5LCAxLCAyMzUsIDUwLCA2OSwgMSwgMjI3LCA4LCA2OSwgCisgICAgMSwgMjM2LCAxNSwgNjksIDEsIDIyNiwgODgsIDY5LCAxLCAyMzUsIDExNiwgNjksIDEsIDIxMiwgNjQsIDY5LCAxLCAxOTksIAorICAgIDExNCwgNjksIDEsIDIwOSwgMTgyLCA2OSwgMSwgMTk5LCAzNiwgNjksIDEsIDIwOCwgMjQsIDY5LCAxLCAxOTksIDMsIDY5LCAKKyAgICAxLCAyMTEsIDIwMiwgNjksIDEsIDE5OSwgODksIDY5LCAxLCAyMDksIDI5LCA2OSwgMSwgMTk5LCAxNCwgNjksIDEsIDIwNywgCisgICAgMzYsIDY5LCAxLCAyNDIsIDU4LCA2OSwgMSwgMjA2LCAxNSwgNjksIDEsIDI0MSwgNzYsIDY5LCAxLCA0LCAyMDQsIDIxNSwgCisgICAgNjksIDEsIDIwNCwgMjE1LCA2OSwgMSwgMjM5LCAxMzcsIDY5LCAxLCAyMDYsIDIwMSwgNjksIDEsIDI0MSwgMTc1LCA2OSwgCisgICAgMSwgMTM4LCA2OSwgMSwgMjQwLCAyMTEsIDY5LCAxLCAxODgsIDY5LCAxLCAyMTksIDE1MCwgNjksIDEsIDIxOCwgMTMzLCAKKyAgICA2OSwgMSwgMjIwLCAzNCwgNjksIDEsIDIxOCwgMjQxLCA2OSwgMSwgMTQ0LCA2OSwgMSwgMjQ5LCAxMzYsIDY5LCAxLCAxNzIsIAorICAgIDY5LCAxLCAyMzQsIDc1LCA2OSwgMSwgMjQ4LCAxODgsIDY5LCAxLCAyMTUsIDIwNCwgNjksIDEsIDIzMywgOTcsIDY5LCAxLCAKKyAgICAyNDgsIDM2LCA2OSwgMSwgMjE0LCAyMjQsIDY5LCAxLCAyMzQsIDEzOSwgNjksIDEsIDI0OSwgOCwgNjksIDEsIDIxNiwgNzMsIAorICAgIDY5LCAxLCAyMzMsIDIwNywgNjksIDEsIDI0OCwgMTI0LCA2OSwgMSwgMjE1LCAxMDYsIDY5LCAxLCAxNzgsIDY5LCAxLCAKKyAgICAyMjEsIDIxMSwgNjksIDEsIDIyMSwgNDEsIDY5LCAxLCAyMjIsIDc2LCA2OSwgMSwgMjIxLCAxMzYsIDY5LCAxLCA0LCAxODMsIAorICAgIDY5LCAxLCAxODMsIDY5LCAxLCA0LCAxOTksIDIxMSwgNjksIDEsIDE5OSwgMjExLCA2OSwgMSwgNCwgMTk5LCAyNDUsIDY5LCAKKyAgICAxLCAxOTksIDI0NSwgNjksIDEsIDIxMywgMjUyLCA2OSwgMSwgMjEzLCA4OCwgNjksIDEsIDIxMiwgMTc1LCA2OSwgMSwgCisgICAgMjEzLCAxOTAsIDY5LCAxLCAyMTMsIDEsIDY5LCAxLCA0LCAyMDEsIDExNCwgNjksIDEsIDIwMSwgMTE0LCA2OSwgMSwgMjAxLCAKKyAgICAzMSwgNjksIDEsIDIwMSwgNjQsIDY5LCAxLCAyMDEsIDAsIDY5LCAxLCAyMjAsIDIxNCwgNjksIDEsIDIwMSwgMTY2LCA2OSwgCisgICAgMSwgNCwgMTYxLCA2OSwgMSwgNCwgMjI3LCA4LCA2OSwgMSwgMjAzLCA5MCwgNjksIDEsIDIwMiwgMjM0LCA2OSwgMSwgMjAzLCAKKyAgICA1OSwgNjksIDEsIDIwMiwgMTkzLCA2OSwgMTAxLCAyNDAsIDE4MiwgMjI3LCAzMiwgMjE0LCAyNDgsIDIwOSwgMSwgODEsIAorICAgIDY5LCAyMjgsIDEwLCA4MSwgNjksIDIwMiwgMTg5LCAyMjgsIDEwLCA4MSwgNjksIDI0MSwgMzUsIDIyNiwgNTUsIDI0OCwgCisgICAgMTAyLCAxLCAyNTAsIDEwMywgMjQ4LCAxMDIsIDEsIDIxNiwgMjI2LCAyNDgsIDEwMiwgMSwgMjIzLCAyNDMsIDI0OCwgMTAyLCAKKyAgICAxLCAyMzgsIDUsIDI0OCwgMTAyLCAxLCAyNDIsIDE1MywgMjQ4LCAxMDIsIDEsIDIwNywgODMsIDI0OCwgMTAyLCAxLCAyMjAsIAorICAgIDIxNCwgMjQ4LCAxMDIsIDEsIDE1NiwgMjQ4LCAxMDIsIDEsIDIzNiwgMTU2LCAyNDgsIDEwMiwgMSwgMjI3LCAxMTgsIDI0OCwgCisgICAgMTAyLCAxLCAyMzQsIDI0NywgMjQ4LCAxMDIsIDEsIDIyNywgMjUxLCAyNDgsIDEwMiwgMSwgMjE0LCAxNjcsIDI0OCwgMTAyLCAKKyAgICAxLCAyMDAsIDE5NSwgMjQ4LCAxMDIsIDEsIDE5OSwgNzgsIDI0OCwgMTAyLCAxLCAyNDcsIDM4LCAyNDgsIDEwMiwgMSwgCisgICAgMjEwLCAxMTYsIDI0OCwgMTAyLCAxLCAxNDYsIDI0OCwgMTAyLCAxLCAxOTksIDE1NywgMjQ4LCAxMDIsIDEsIDI0NywgMjIzLCAKKyAgICAyNDgsIDEwMiwgMSwgMjEyLCAxMjIsIDI0OCwgMTAyLCAxLCA2MiwgMjQ4LCAxMDIsIDEsIDc0LCAyNDgsIDEwMiwgMSwgNzIsIAorICAgIDI0OCwgMTAyLCAxLCAyMzgsIDI0MSwgMjQ4LCAxMDIsIDEsIDI1MSwgMTc2LCAyNDgsIDEwMiwgMSwgMjM4LCAyMzQsIDI0OCwgCisgICAgMTAyLCAxLCAyNTAsIDEzOSwgMjQ4LCAxMDIsIDEsIDIxNywgMywgMjQ4LCAxMDIsIDEsIDI1MSwgODUsIDI0OCwgMTAyLCAxLCAKKyAgICAyMzgsIDE3OSwgMjQ4LCAxMDIsIDEsIDI1MSwgNzYsIDI0OCwgMTAyLCAxLCAyMzgsIDE2NSwgMjQ4LCAxMDIsIDEsIDIzOCwgCisgICAgMTE1LCAyNDgsIDEwMiwgMSwgNzAsIDI0OCwgMTAyLCAxLCA2NiwgMjQ4LCAxMDIsIDEsIDIyOCwgOCwgMjQ4LCAxMDIsIDEsIAorICAgIDIwMywgMTY4LCAyNDgsIDEwMiwgMSwgMjE5LCAyNTUsIDI0OCwgMTAyLCAxLCAyMzUsIDEyMCwgMjQ4LCAxMDIsIDEsIDIyOCwgCisgICAgMTUyLCAyOSwgMSwgMjI2LCAxMjEsIDI5LCAxLCAyMDgsIDE3MSwgMjksIDEsIDIyNiwgMTE0LCAyOSwgMSwgMjE5LCAxNDMsIAorICAgIDI5LCAxLCAyMTksIDE0MSwgMjksIDEsIDIxOSwgMTQwLCAyOSwgMSwgMjA1LCAyNTMsIDI5LCAxLCAyMDgsIDE2MCwgMjksIAorICAgIDEsIDIxMywgNzgsIDI5LCAxLCAyMTMsIDczLCAyOSwgMSwgMjEzLCA3MCwgMjksIDEsIDIxMywgNjMsIDI5LCAxLCAyMTMsIAorICAgIDU4LCAyOSwgMSwgMjEzLCA1MywgMjksIDEsIDIxMywgNjQsIDI5LCAxLCAyMTMsIDc2LCAyOSwgMSwgMjIxLCAxOTcsIDI5LCAKKyAgICAxLCAyMTUsIDE5MCwgMjksIDEsIDIwOCwgMTY4LCAyOSwgMSwgMjE1LCAxNzksIDI5LCAxLCAyMDksIDEyOSwgMjksIDEsIAorICAgIDIwOCwgMTY1LCAyOSwgMSwgMjI4LCAxNzQsIDI5LCAxLCAyNDYsIDE2OCwgMjksIDEsIDIwOCwgMTc1LCAyOSwgMSwgMjQ2LCAKKyAgICAyMzIsIDI5LCAxLCAyMjYsIDE4MywgMjksIDEsIDIwNiwgODAsIDI5LCAxLCAyMTUsIDIyNywgMjksIDEsIDIzNCwgNjYsIAorICAgIDI5LCAxLCA2MiwgMjksIDEsIDI1MSwgMjIxLCAyOSwgMSwgMTgzLCAyOSwgMSwgMjAwLCA5OCwgMjksIDEsIDIzOCwgMTQyLCAKKyAgICAyOSwgMSwgNzIsIDI5LCAxLCAyMDAsIDM4LCAyOSwgMSwgMjAwLCA1MSwgMjksIDEsIDc0LCAyOSwgMSwgMjAxLCAxMTQsIAorICAgIDI5LCAxLCAyMDEsIDExMCwgMjksIDEsIDIxNywgMTIxLCAyOSwgMSwgMTk5LCAyNDUsIDI5LCAxLCA2NiwgMjksIDEsIDIwMSwgCisgICAgNTAsIDI5LCAxLCAyMDEsIDY0LCAyOSwgMSwgMjAxLCAzMSwgMjksIDEsIDE5OSwgMjExLCAyOSwgMSwgMjM4LCA2OSwgMjksIAorICAgIDEsIDIwMCwgOSwgMjksIDEsIDcwLCAyOSwgMjM3LCA5MywgMjksIDEsIDIwOCwgMTY5LCAyOSwgMSwgMjE5LCAxMzMsIDI5LCAKKyAgICAxLCAyMTksIDEzNSwgMjksIDEsIDIxOSwgMTM4LCAyOSwgMSwgMjEzLCA3MSwgMjksIDEsIDIxMywgNTIsIDI5LCAxLCAyMTMsIAorICAgIDYwLCAyOSwgMSwgMjEzLCA2NSwgMjksIDEsIDIxMywgNTAsIDI5LCAxLCAyMjEsIDE5MCwgMjksIDEsIDIyMSwgMTg3LCAyOSwgCisgICAgMSwgMjIxLCAxOTEsIDI5LCAxLCAyMjcsIDUzLCAyOSwgMSwgMjE1LCAxODUsIDI5LCAxLCAyMTUsIDE3MSwgMjksIDEsIAorICAgIDIxNSwgMTc3LCAyOSwgMSwgMjE1LCAxNzQsIDI5LCAxLCAyMTUsIDE4OCwgMjksIDEsIDIxNSwgMTcyLCAyOSwgMSwgMjI3LCAKKyAgICA1MSwgMjksIDEsIDIyNywgNDksIDI5LCAxLCAyMDksIDEyMiwgMjksIDEsIDIwOSwgMTIwLCAyOSwgMSwgMjA5LCAxMTIsIAorICAgIDI5LCAxLCAyMDksIDExNywgMjksIDEsIDIwOSwgMTI3LCAyOSwgMSwgMjE2LCAxNDYsIDI5LCAxLCAyMDgsIDE3MiwgMjksIAorICAgIDEsIDIwMCwgMjgsIDI5LCAxLCAyMDAsIDI0LCAyOSwgMSwgMjAwLCAyNSwgMjksIDEsIDIyNywgNTIsIDI5LCAxLCAyMDgsIAorICAgIDE3MywgMjksIDEsIDIwMCwgMzQsIDI5LCAxLCAxOTksIDIzOSwgMjksIDEsIDE5OSwgMjM4LCAyOSwgMSwgMTk5LCAyNDEsIAorICAgIDI5LCAxLCAxOTksIDIwMiwgMjksIDEsIDE5OSwgMjAzLCAyOSwgMSwgMTk5LCAyMDYsIDI5LCAxLCAyNTAsIDI0NSwgMjksIAorICAgIDEsIDI1MCwgMjM5LCAxNDEsIDI1MSwgNTgsIDIyNCwgMTY1LCA4MSwgMTQxLCAyNTEsIDU4LCAyMTMsIDEwNiwgODEsIDE0MSwgCisgICAgMjUxLCA1OCwgMTEyLCA4MSwgMTQxLCAyNTEsIDU4LCAxMjAsIDgxLCAxNDEsIDI1MSwgNTgsIDEyNiwgODEsIDE0MSwgMjUxLCAKKyAgICA1OCwgMjM2LCAyMjksIDgxLCAxNDEsIDI1MSwgNTgsIDIwNSwgMTU4LCA4MSwgMTQxLCAyNTEsIDU4LCAxMDEsIDgxLCAxNDEsIAorICAgIDI1MSwgNTgsIDI0OCwgOTMsIDgxLCAxNDEsIDI1MSwgNTgsIDIzNywgNzMsIDgxLCAxNDEsIDI1MSwgNTgsIDIxMSwgMTk2LCAKKyAgICA4MSwgMTQxLCAyNTEsIDU4LCAyMDYsIDc1LCA4MSwgMTQxLCAyNTEsIDU4LCAyMzYsIDIyMiwgODEsIDE0MSwgMjUxLCA1OCwgCisgICAgMjM0LCAxMjQsIDgxLCAxNDEsIDI1MSwgNTgsIDIzOSwgMTgsIDgxLCAxNDEsIDI1MSwgNTgsIDIyMiwgMTgxLCA4MSwgMjQ4LCAKKyAgICAxMDIsIDEsIDI0OCwgMzYsIDI0OCwgMTAyLCAxLCAxOTksIDM2LCAyNDgsIDEwMiwgMSwgMjI3LCAyMDcsIDI0OCwgMTAyLCAKKyAgICAxLCAyMzUsIDUwLCAyNDgsIDEwMiwgMSwgMjM4LCAyNTUsIDI0OCwgMTAyLCAxLCAyMzgsIDE2MiwgMjQ4LCAxMDIsIDEsIAorICAgIDIxNywgNjMsIDI0OCwgMTAyLCAxLCAyMTcsIDY3LCAyNDgsIDEwMiwgMSwgMjI4LCAzNSwgMjQ4LCAxMDIsIDEsIDI1MSwgCisgICAgNjAsIDI0OCwgMTAyLCAxLCAyMjgsIDgzLCAyNDgsIDEwMiwgMSwgMjAzLCAyMzMsIDI0OCwgMTAyLCAxLCAyMjgsIDEzNCwgCisgICAgMjQ4LCAxMDIsIDEsIDIxOSwgMjMzLCAyNDgsIDEwMiwgMSwgMjUxLCAxNzAsIDI0OCwgMTAyLCAxLCAyNTAsIDEzNCwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MSwgMTAxLCAyNDgsIDEwMiwgMSwgMjE3LCA4NiwgMjQ4LCAxMDIsIDEsIDIxNywgNjksIDI0OCwgMTAyLCAKKyAgICAxLCAyMjgsIDgwLCAyNDgsIDEwMiwgNDcsIDEsIDIxNiwgMjI2LCAyNDgsIDEwMiwgNDcsIDEsIDIwNywgODMsIDI0OCwgCisgICAgMTAyLCA0NywgMSwgMjI3LCAxMTgsIDI0OCwgMTAyLCA0NywgMSwgMjM0LCAyNDcsIDI0OCwgMTAyLCAxLCAyMzUsIDIwMCwgCisgICAgMjQ4LCAxMDIsIDEsIDIyNCwgMjI0LCAyNDgsIDEwMiwgMSwgMTk4LCAyMzksIDEyLCAyMDgsIDQ3LCAyMDcsIDgzLCAxMiwgCisgICAgMjA4LCA0NywgMjAxLCA0MiwgMTIsIDIwOCwgNDcsIDIwMCwgMTcwLCAxMiwgMjA4LCA0NywgMjQ3LCAyMzYsIDEyLCAyMDgsIAorICAgIDQ3LCAyMDcsIDE4NywgMTIsIDIwOCwgNDcsIDIzMywgMjMsIDEyLCAyMDgsIDQ3LCAyMzMsIDI3LCAxMiwgMjA4LCA0NywgCisgICAgMjMzLCAxMDYsIDEyLCAyMDgsIDQ3LCAyMzMsIDI0LCAxMiwgMjA4LCA0NywgMjA3LCA4NiwgMTIsIDIwOCwgNDcsIDIzMywgCisgICAgMjYsIDEyLCAyMDgsIDQ3LCAyMzMsIDIyLCAxMiwgMjA4LCA0NywgMjMzLCAxMDQsIDEyLCAyMDgsIDQ3LCAyMzMsIDI1LCAKKyAgICAxMiwgMjA4LCA0NywgMjMzLCAyMSwgMTIsIDIwOCwgNDcsIDIyMCwgMjE0LCAxMiwgMjA4LCA0NywgMjM0LCAyNDcsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMTIsIDEyMiwgMTIsIDIwOCwgNDcsIDIxNiwgMjI2LCAxMiwgMjA4LCA0NywgMjA4LCAyNDcsIDEyLCAyMDgsIAorICAgIDQ3LCAyNDIsIDE1MywgMTIsIDIwOCwgNDcsIDIzMywgMjgsIDEyLCAyMDgsIDQ3LCAyMzQsIDg1LCAxMiwgMjA4LCA0NywgCisgICAgMjA3LCA5NSwgMTIsIDIwOCwgNDcsIDIwNywgMTY2LCAxMiwgMjA4LCA0NywgMjA4LCAxMjMsIDEyLCAyMDgsIDQ3LCAyMTAsIAorICAgIDEyMiwgMTIsIDIwOCwgNDcsIDIxNiwgNzcsIDEyLCAyMDgsIDQ3LCAyMTQsIDE2OSwgMTIsIDIwOCwgNDcsIDIwNSwgMTg3LCAKKyAgICAxMiwgMjA4LCA0NywgMjA3LCA4NSwgMTIsIDIwOCwgNDcsIDIwNywgMTc3LCAxMiwgMjA4LCA0NywgMjMzLCAzNywgMTIsIAorICAgIDIwOCwgNDcsIDIzMywgMjAsIDEyLCAyMDgsIDQ3LCAyMTUsIDI0NywgMTIsIDIwOCwgNDcsIDIxNCwgMTY3LCA2OSwgMSwgNCwgCisgICAgMjI2LCAxNSwgNjksIDEsIDQsIDIwOSwgMTgyLCA2OSwgMSwgNCwgMjA4LCAyNCwgNjksIDEsIDQsIDEzOCwgNjksIDEsIDQsIAorICAgIDIxOCwgMTMzLCA2OSwgMSwgNCwgMTQ0LCA2OSwgMSwgNCwgMjM0LCA3NSwgNjksIDEsIDQsIDIzMywgOTcsIDY5LCAxLCA0LCAKKyAgICAyMzQsIDEzOSwgNjksIDEsIDQsIDIzMywgMjA3LCA2OSwgMSwgNCwgMjIxLCA0MSwgNjksIDEsIDQsIDIxMywgMjUyLCA2OSwgCisgICAgMSwgNCwgMjEzLCA4OCwgNjksIDEsIDQsIDIxMiwgMTc1LCA2OSwgMSwgNCwgMjEzLCAxOTAsIDY5LCAxLCA0LCAyMTMsIDEsIAorICAgIDEwNiwgMjksIDIyNiwgMTIxLCAxMDYsIDI5LCAyMTksIDE0MywgMTA2LCAyOSwgMjA1LCAyNTMsIDEwNiwgMjksIDIxMywgCisgICAgNzgsIDEwNiwgMjksIDIyMSwgMTk3LCAxMDYsIDI5LCAyMTUsIDE5MCwgMTA2LCAyOSwgMjA5LCAxMjksIDEwNiwgMjksIAorICAgIDIyOCwgMTc0LCAxMDYsIDI5LCAyNDYsIDE2OCwgMTA2LCAyOSwgMjQ2LCAyMzIsIDEwNiwgMjksIDIyNiwgMTgzLCAxMDYsIAorICAgIDI5LCAyMDYsIDgwLCAxMDYsIDI5LCAyMTUsIDIyNywgMTA2LCAyOSwgMjM0LCA2NiwgMTA2LCAyOSwgMjI2LCAxMjIsIDYyLCAKKyAgICAxMDYsIDI5LCAyMTksIDE0NCwgNjIsIDEwNiwgMjksIDIwNSwgMjU0LCA2MiwgMTA2LCAyOSwgMjEzLCA3OSwgNjIsIDEwNiwgCisgICAgMjksIDIyMSwgMTk4LCA2MiwgMTA2LCAyOSwgMjE1LCAxOTEsIDYyLCAxMDYsIDI5LCAyMDksIDEzMCwgNjIsIDEwNiwgMjksIAorICAgIDIyOCwgMTc1LCA2MiwgMTA2LCAyOSwgMjQ2LCAxNjksIDYyLCAxMDYsIDI5LCAyNDYsIDIzMywgNjIsIDEwNiwgMjksIDIyNiwgCisgICAgMTg0LCA2MiwgMTA2LCAyOSwgMjA2LCA4MSwgNjIsIDEwNiwgMjksIDIxNSwgMjI4LCA2MiwgMTA2LCAyOSwgMjM0LCA2NywgCisgICAgNjIsIDEwNiwgMjksIDI0NiwgMTY5LCA2NiwgMTA2LCAyMjYsIDU5LCAxNzEsIDIxNywgMTAxLCAxMDYsIDIyNiwgNTksIAorICAgIDE3MSwgMTYzLCAyMzMsIDk3LCAxMDYsIDE5OCwgMTk4LCAxMDIsIDEwNiwgMTk4LCAxOTgsIDEwNSwgMTA2LCAxOTgsIDE5OCwgCisgICAgMTQ3LCAxMDYsIDE5OCwgMTk4LCAxNDksIDEwNiwgMTk4LCAxOTgsIDE2NCwgMTA2LCAxOTgsIDE5OCwgMTg3LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMTAsIDEzNSwgMTA2LCAxOTgsIDE5OCwgMTkyLCAxMDYsIDE5OCwgMTk4LCAyMTksIDExMywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjA2LCAxNjYsIDEwNiwgMTk4LCAxOTgsIDIyMSwgODEsIDEwNiwgMTk4LCAxOTgsIDIzNywgNzcsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwMSwgODIsIDEwNiwgMTk4LCAxOTgsIDIwMCwgMjQzLCAxMDYsIDE5OCwgMTk4LCAyMjIsIDIwLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMzksIDE3LCAxMDYsIDE5OCwgMTk4LCAyMDcsIDIyOCwgMTA2LCAxOTgsIDE5OCwgMjA4LCA3OSwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjM0LCAxNDgsIDEwNiwgMTk4LCAxOTgsIDIwOSwgMjUsIDEwNiwgMTk4LCAxOTgsIDIyMCwgMTM1LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDgsIDIyOSwgMTA2LCAxOTgsIDE5OCwgMjM3LCA4OCwgMTA2LCAxOTgsIDE5OCwgMjQzLCA2MSwgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjI1LCAxNjUsIDEwNiwgMTk4LCAxOTgsIDIxMywgMTI3LCAxMDYsIDE5OCwgMTk4LCAyNDcsIDE2OCwgCisgICAgMTA2LCAxOTgsIDE5OCwgMjA4LCAyOSwgMTA2LCAxOTgsIDE5OCwgMjA3LCAyMTAsIDEwNiwgMTk4LCAxOTgsIDIzOCwgMTUyLCAKKyAgICAxMDYsIDE5OCwgMTk4LCAyMTMsIDExOSwgMTA2LCAxOTgsIDE5OCwgMjUxLCAxMjAsIDEwNiwgMTk4LCAxOTgsIDIzNywgCisgICAgMTE5LCAxMDYsIDE5OCwgMTk4LCAyMTMsIDExNywgMTA2LCAxOTgsIDE5OCwgMjEwLCAxNzQsIDEwNiwgMTk4LCAxOTgsIAorICAgIDIxMywgMTg5LCA0NCwgMTk4LCAxOTgsIDIxNCwgNzgsIDQ0LCAxOTgsIDE5OCwgMjI2LCAxNDYsIDQ0LCAxOTgsIDE5OCwgCisgICAgMjExLCAyMjEsIDQ0LCAxOTgsIDE5OCwgMjI2LCA1NSwgNDQsIDQxLCAyMDYsIDE2NywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCAKKyAgICA0NCwgNDEsIDIwNCwgMTYwLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjA2LCA2OCwgMjE3LCA3OSwgNjMsIAorICAgIDIwOCwgMTkzLCA0NCwgNDEsIDIzNiwgMjM2LCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjM3LCAxMDUsIDIxNywgCisgICAgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMDksIDkzLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDQ0LCA0MSwgMjEwLCAKKyAgICAxMzAsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMzgsIDIyMywgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCAyMTYsIAorICAgIDEwNiwgNTQsIDQ0LCA0MSwgMjA0LCAxNjAsIDEwMiwgNDQsIDQxLCAyMDQsIDE2MCwgMTA1LCA0NCwgNDEsIDIwNCwgMTYwLCAKKyAgICAxNDcsIDQ0LCA0MSwgMjA0LCAxNjAsIDE0OSwgNDQsIDQxLCAyMDQsIDE2MCwgMTY0LCA0NCwgNDEsIDIwNCwgMTYwLCAxODcsIAorICAgIDQ0LCA0MSwgMjA0LCAxNjAsIDIxMCwgMTM1LCA0NCwgNDEsIDIwNCwgMTYwLCAxOTIsIDQ0LCA0MSwgMjA0LCAxNjAsIDIxOSwgCisgICAgMTEzLCA0NCwgNDEsIDIwNiwgNjcsIDQ0LCA0MSwgMjA2LCA2OCwgMTAyLCA0NCwgNDEsIDIwNiwgNjgsIDEwNSwgNDQsIDQxLCAKKyAgICAyMDYsIDY4LCAxNDcsIDQ0LCA0MSwgMjA2LCA2OCwgMTQ5LCA0NCwgNDEsIDIwNiwgNjgsIDE2NCwgNDQsIDI5LCAyMjYsIAorICAgIDEyMSwgNDQsIDI5LCAyMTksIDE0MywgNDQsIDI5LCAyMDUsIDI1MywgNDQsIDI5LCAyMTMsIDc4LCA0NCwgMjksIDIyMSwgCisgICAgMTk3LCA0NCwgMjksIDIxNSwgMTkwLCA0NCwgMjksIDIwOSwgMTI5LCA0NCwgMjksIDIyOCwgMTc0LCA0NCwgMjksIDI0NiwgCisgICAgMTY4LCA0NCwgMjksIDI0NiwgMjMyLCA0NCwgMjksIDIyNiwgMTgzLCA0NCwgMjksIDIwNiwgODAsIDQ0LCAyOSwgMjE1LCAKKyAgICAyMjcsIDQ0LCAyOSwgMjM0LCA2NiwgNDQsIDI5LCAyMjYsIDEyMiwgNjIsIDQ0LCAyOSwgMjE5LCAxNDQsIDYyLCA0NCwgMjksIAorICAgIDIwNSwgMjU0LCA2MiwgNDQsIDI5LCAyMTMsIDc5LCA2MiwgNDQsIDI5LCAyMjEsIDE5OCwgNjIsIDQ0LCAyOSwgMjE1LCAKKyAgICAxOTEsIDYyLCA0NCwgMjksIDIwOSwgMTMwLCA2MiwgNDQsIDI5LCAyMjgsIDE3NSwgNjIsIDQ0LCAyOSwgMjQ2LCAxNjksIAorICAgIDYyLCA0NCwgMjksIDI0NiwgMjMzLCA2MiwgNDQsIDI5LCAyMjYsIDE4NCwgNjIsIDQ0LCAyOSwgMjA2LCA4MSwgNjIsIDQ0LCAKKyAgICAyOSwgMjE1LCAyMjgsIDYyLCA0NCwgMjksIDIzNCwgNjcsIDYyLCA0NCwgMjI2LCA1OSwgMTcxLCAyNDcsIDI3LCA0NCwgCisgICAgMjI2LCA1OSwgMTcxLCAyMjcsIDE0MywgNDQsIDI5LCAyMjgsIDE3NSwgNjYsIDIyNiwgNTksIDIwOCwgMTEyLCA5OSwgNDQsIAorICAgIDE5OCwgMTk4LCAxMDIsIDQ0LCAxOTgsIDE5OCwgMTA1LCA0NCwgMTk4LCAxOTgsIDE0NywgNDQsIDE5OCwgMTk4LCAxNDksIAorICAgIDQ0LCAxOTgsIDE5OCwgMTY0LCA0NCwgMTk4LCAxOTgsIDE4NywgNDQsIDE5OCwgMTk4LCAyMTAsIDEzNSwgNDQsIDE5OCwgCisgICAgMTk4LCAxOTIsIDQ0LCAxOTgsIDE5OCwgMjE5LCAxMTMsIDQ0LCAxOTgsIDE5OCwgMjA2LCAxNjYsIDQ0LCAxOTgsIDE5OCwgCisgICAgMjIxLCA4MSwgNDQsIDE5OCwgMTk4LCAyMzcsIDc3LCA0NCwgMTk4LCAxOTgsIDIwMSwgODIsIDQ0LCAxOTgsIDE5OCwgMjAwLCAKKyAgICAyNDMsIDQ0LCAxOTgsIDE5OCwgMjIyLCAyMCwgNDQsIDE5OCwgMTk4LCAyMzksIDE3LCA0NCwgMTk4LCAxOTgsIDIwNywgCisgICAgMjI4LCA0NCwgMTk4LCAxOTgsIDIwOCwgNzksIDQ0LCAxOTgsIDE5OCwgMjM0LCAxNDgsIDQ0LCAxOTgsIDE5OCwgMjA5LCAKKyAgICAyNSwgNDQsIDE5OCwgMTk4LCAyMjAsIDEzNSwgNDQsIDE5OCwgMTk4LCAyMDgsIDIyOSwgNDQsIDE5OCwgMTk4LCAyMzcsIAorICAgIDg4LCA0NCwgMTk4LCAxOTgsIDI0MywgNjEsIDQ0LCAxOTgsIDE5OCwgMjI1LCAxNjUsIDQ0LCAxOTgsIDE5OCwgMjExLCAKKyAgICAxOTQsIDQ0LCAxOTgsIDE5OCwgMjIyLCAxODQsIDQ0LCAxOTgsIDE5OCwgMjM3LCAxMjksIDQ0LCAxOTgsIDE5OCwgMjA3LCAKKyAgICAyNDAsIDQ0LCAxOTgsIDE5OCwgMjM4LCA0NywgNDQsIDE5OCwgMTk4LCAyMTUsIDEwLCA0NCwgMTk4LCAxOTgsIDI1MCwgCisgICAgMTQzLCA0NCwgMTk4LCAxOTgsIDIyOCwgMTEsIDQ0LCAxOTgsIDE5OCwgMjEzLCAxMTcsIDQ0LCAxOTgsIDE5OCwgMjQzLCAKKyAgICAyMCwgNDQsIDE5OCwgMTk4LCAyNDMsIDEwLCA0NCwgMTk4LCAxOTgsIDIzNCwgNTksIDQ0LCAxOTgsIDE5OCwgMjQ3LCA1NSwgCisgICAgNDQsIDE5OCwgMTk4LCAyMjQsIDU5LCA0NCwgMTk4LCAxOTgsIDIyNSwgMjgsIDQ0LCAxOTgsIDE5OCwgMjEzLCA0NiwgNDQsIAorICAgIDE5OCwgMTk4LCAyMjIsIDY3LCA0NCwgMTk4LCAxOTgsIDIxMywgMTQ0LCA0NCwgMTk4LCAxOTgsIDIwOCwgMjksIDQ0LCAKKyAgICAxOTgsIDE5OCwgMjA3LCAyMTAsIDQ0LCAxOTgsIDE5OCwgMjM4LCAxNTIsIDQ0LCAxOTgsIDE5OCwgMjEzLCAxMTksIDQ0LCAKKyAgICAxOTgsIDE5OCwgMjUxLCAxMjAsIDQ0LCAxOTgsIDE5OCwgMjE5LCAxMjksIDQ0LCA0MSwgMjA2LCA2OCwgMTg3LCA0NCwgNDEsIAorICAgIDIwNiwgNjgsIDIxMCwgMTM1LCA0NCwgNDEsIDIwNiwgNjgsIDE5MiwgNDQsIDQxLCAyMDYsIDY4LCAyMTksIDExMywgNDQsIAorICAgIDQxLCAyMzYsIDIzNSwgNDQsIDQxLCAyMzYsIDIzNiwgMTAyLCA0NCwgNDEsIDIzNiwgMjM2LCAxMDUsIDQ0LCA0MSwgMjM2LCAKKyAgICAyMzYsIDE0NywgNDQsIDQxLCAyMzYsIDIzNiwgMTQ5LCA0NCwgNDEsIDIzNiwgMjM2LCAxNjQsIDQ0LCA0MSwgMjM2LCAyMzYsIAorICAgIDE4NywgNDQsIDQxLCAyMzYsIDIzNiwgMjEwLCAxMzUsIDQ0LCA0MSwgMjM2LCAyMzYsIDE5MiwgNDQsIDQxLCAyMzYsIDIzNiwgCisgICAgMjE5LCAxMTMsIDQ0LCA0MSwgMjM3LCAxMDQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjI3LCAyMzgsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjM3LCAxNDEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjIyLCAxNTIsIDE0MSwgMjA2LCAxNzgsIAorICAgIDE2LCAzNiwgMjUxLCAzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyMiwgMTE5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIyNywgMTQwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIyNywgMTQxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI1MCwgCisgICAgMTM1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIxMCwgMTUzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIxNywgMTI3LCAKKyAgICAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIxOCwgMjAyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMTcwLCA1MiwgCisgICAgMjM0LCA4NSwgNTIsIDIzOCwgMTExLCA1MiwgMjM4LCA1NywgMjI0LCAxODIsIDIyNCwgMjA5LCA1NCwgNDQsIDY5LCA2MiwgCisgICAgNDQsIDY5LCA3MCwgNDQsIDY5LCA2NiwgNDQsIDY5LCA3MiwgNDQsIDY5LCA3NCwgNDQsIDY5LCAxNjEsIDQ0LCA2OSwgMjI2LCAKKyAgICAxNjMsIDQ0LCA2OSwgMjI2LCAxNSwgNDQsIDY5LCAyMjcsIDgsIDQ0LCA2OSwgMjI2LCA4OCwgNDQsIDY5LCAyMTIsIDY0LCAKKyAgICA0NCwgNjksIDIwOSwgMTgyLCA0NCwgNjksIDIwOCwgMjQsIDQ0LCA2OSwgMjExLCAyMDIsIDQ0LCA2OSwgMjA5LCAyOSwgNDQsIAorICAgIDY5LCAyMDcsIDM2LCA0NCwgNjksIDIwNiwgMTUsIDQ0LCA2OSwgMjA0LCAyMTUsIDQ0LCA2OSwgMjA2LCAyMDEsIDQ0LCA2OSwgCisgICAgMTM4LCA0NCwgNjksIDE4OCwgNDQsIDY5LCAyMTksIDE1MCwgNDQsIDY5LCAyMTgsIDEzMywgNDQsIDY5LCAyMjAsIDM0LCAKKyAgICA0NCwgNjksIDIxOCwgMjQxLCA0NCwgNjksIDE0NCwgNDQsIDY5LCAyMzQsIDc1LCA0NCwgNjksIDIzMywgOTcsIDQ0LCA2OSwgCisgICAgMjM0LCAxMzksIDQ0LCA2OSwgMjMzLCAyMDcsIDQ0LCA2OSwgMTc4LCA0NCwgNjksIDIyMSwgMjExLCA0NCwgNjksIDIyMSwgCisgICAgNDEsIDQ0LCA2OSwgMjIyLCA3NiwgNDQsIDY5LCAyMjEsIDEzNiwgNDQsIDY5LCAxODMsIDQ0LCA2OSwgMTk5LCAyMTEsIDQ0LCAKKyAgICA2OSwgMTk5LCAyNDUsIDQ0LCA2OSwgMjEzLCAyNTIsIDQ0LCA2OSwgMjEzLCA4OCwgNDQsIDY5LCAyMTIsIDE3NSwgNDQsIAorICAgIDY5LCAyMTMsIDE5MCwgNDQsIDY5LCAyMTMsIDEsIDQ0LCA2OSwgMjAxLCAxMTQsIDQ0LCA2OSwgMjAxLCAzMSwgNDQsIDY5LCAKKyAgICAyMDEsIDY0LCA0NCwgNjksIDIwMSwgMCwgNTIsIDI1MSwgMjcsIDUyLCAyNTAsIDE5MCwgNTIsIDI1MSwgNTQsIDUyLCAyNTIsIAorICAgIDk2LCA1MiwgMjI4LCA4NSwgNTIsIDIyOCwgNTMsIDUyLCAyMDMsIDIzMSwgNTIsIDIzOCwgODQsIDUyLCAyMzgsIDI1MiwgCisgICAgNTIsIDIxNywgNjYsIDUyLCAyMTcsIDU5LCA1MiwgMjI3LCA4MCwgNTIsIDIyNywgNDUsIDUyLCAyMjcsIDQyLCA1MiwgMjM2LCAKKyAgICA0NSwgNTIsIDIzNiwgNTQsIDUyLCAyMzUsIDE1MCwgNTIsIDIzNSwgMTQ2LCA1MiwgMjI1LCAxOTQsIDUyLCAyMzUsIDEzOCwgCisgICAgNTIsIDIyNiwgMTM4LCA1MiwgMjI2LCAxMzcsIDUyLCAyMjYsIDEzNiwgNTIsIDIyNiwgMTM1LCA1MiwgMjM1LCAyMCwgNTIsIAorICAgIDIzNSwgMTksIDUyLCAyMjUsIDI0MiwgNTIsIDIyNSwgMjQ0LCA1MiwgMjI3LCAxLCA1MiwgMjI2LCA1NywgNTIsIDIyNiwgCisgICAgNjUsIDUyLCAyMTIsIDQ1LCA1MiwgMjEyLCA2LCA1MiwgMjA5LCAxMTAsIDUyLCAyMTAsIDE1OCwgNTIsIDIxMCwgMTU3LCAKKyAgICA1MiwgMjQyLCA1NCwgNTIsIDI0MSwgMTEzLCA1MiwgMjQwLCAxODMsIDUyLCAyMDUsIDE3NiwgNTIsIDIyMCwgMTMwLCA1MiwgCisgICAgMjE4LCAyMDMsIDUyLCAyMzQsIDIxOCwgNTIsIDIxNiwgMjA1LCA1MiwgMjE2LCAyMDQsIDUyLCAyNDksIDEzMywgNTIsIAorICAgIDIxNSwgMjAxLCA1MiwgMjE1LCAxNjQsIDUyLCAyMTUsIDE2NSwgNTIsIDI0OCwgMTU4LCA1MiwgMjMzLCA5NSwgNTIsIDIzMywgCisgICAgOTAsIDUyLCAyNDcsIDI1MCwgNTIsIDIzMywgNzQsIDUyLCAyMzQsIDExMSwgNTIsIDIxNiwgMSwgNTIsIDIxNiwgNDIsIDUyLCAKKyAgICAyMzQsIDk0LCA1MiwgMjE2LCAzOCwgNTIsIDIxNiwgNTYsIDUyLCAyNDgsIDI0NywgNTIsIDIxNSwgOTUsIDUyLCAyNDgsIAorICAgIDk4LCA1MiwgMjMzLCAxOTEsIDUyLCAyMTUsIDgyLCA1MiwgMjMzLCAxODIsIDUyLCAyMzMsIDE4NCwgNTIsIDIyMiwgMTk2LCAKKyAgICA1MiwgMjIyLCAxOTIsIDUyLCAyMjIsIDIwMSwgNTIsIDIyMiwgMTM5LCA1MiwgMjIyLCAxNjgsIDUyLCAyMjEsIDE3NiwgNTIsIAorICAgIDIyMSwgMTUxLCA1MiwgMjIxLCAxNTAsIDUyLCAyMjIsIDU2LCA1MiwgMjIyLCA1MywgNTIsIDIyMiwgNTcsIDUyLCAyMDAsIAorICAgIDEwOCwgNTIsIDIwMCwgMTA2LCA1MiwgMTk5LCAyMDAsIDUyLCAyMTMsIDE3LCA1MiwgMjEzLCAyMSwgNTIsIDIxMiwgMTQ4LCAKKyAgICA1MiwgMjEyLCAxNDIsIDUyLCAyMTMsIDE0MSwgNTIsIDIxMywgMTM4LCA1MiwgMjAxLCA4MCwgMTQxLCAyMDYsIDE3OCwgMTYsIAorICAgIDM2LCAyMzMsIDExNCwgMTk5LCA4MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTAyLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxMDUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE0NywgMTQxLCAKKyAgICAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTQ5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNjQsIAorICAgIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE4NywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgCisgICAgMjEwLCAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE5MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjE5LCAxMTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNiwgMTY2LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMzgsIDE5OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAKKyAgICAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNiwgNjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIzNiwgMjIzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMzcsIDEwOCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA5LCAxMDAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIxMCwgCisgICAgMTMyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMzgsIDIyOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjE5LCAxMTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgMTU5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIDE1MywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAKKyAgICAxNDgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgMTUwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMDQsIDE1NSwgNTIsIDIzMywgMTA1LCA1MiwgMjQyLCA1OCwgNTIsIDI1MCwgMTM5LCA1MiwgMTQ4LCA1MiwgCisgICAgMjE2LCAyNDksIDUyLCAyMTYsIDc4LCA1MiwgMjQwLCAyMTMsIDUyLCAyNDAsIDIxNCwgMjA4LCAxOTIsIDUyLCAyNDAsIAorICAgIDIxNCwgMjQyLCAyMDksIDUyLCAyMjgsIDgsIDUyLCAyMzgsIDExNCwgMjIwLCAxMzYsIDIzNCwgMTEyLCA1MiwgMjM4LCAKKyAgICAxMTQsIDIyMCwgMTM2LCAyMDcsIDEwNiwgNTIsIDIzOCwgMTE0LCAyMjAsIDEzNiwgMjA3LCAzLCA1MiwgMjM4LCAxMTQsIAorICAgIDIyMCwgMTM2LCAyMjIsIDUyLCA1MiwgMjQzLCAxMiwgNTIsIDIxNiwgMjExLCAyNTEsIDg3LCA1MiwgMTg4LCA1MiwgMjIxLCAKKyAgICA0MiwgNjIsIDUyLCAxNzgsIDUyLCAxNjEsIDUyLCAyMjcsIDExLCA1MiwgMjIyLCAxMTUsIDUyLCAyMzYsIDMzLCA1MiwgCisgICAgMjQ3LCAxNzQsIDUyLCAyMjcsIDEwLCA1MiwgMjE1LCAyNDgsIDUyLCAyMjAsIDEsIDUyLCAyMjEsIDQyLCAyMzgsIDUsIDUyLCAKKyAgICAyMjEsIDQyLCAyMzYsIDE1NiwgNTIsIDIyMSwgMjUyLCA1MiwgMjI2LCAyMDksIDUyLCAyMzMsIDI4LCA1MiwgMjI2LCAxNjUsIAorICAgIDUyLCAyMjEsIDIxMywgNTIsIDIzNSwgMTYzLCA1MiwgMjA2LCAxNywgNTIsIDIyMSwgNDIsIDE1NiwgNTIsIDIyMSwgMTQ0LCAKKyAgICA1MiwgMjQwLCAyMjMsIDUyLCAyMjYsIDEwMywgNTIsIDIzNywgMTUsIDUyLCAyMTksIDIzLCA1MiwgMjIxLCA0MiwgMjIzLCAKKyAgICAyNDMsIDUyLCAyMjEsIDE0MSwgNTIsIDI0NiwgOTIsIDUyLCAyMjYsIDk3LCA1MiwgMjIxLCAxNDIsIDIwOCwgMTkyLCA1MiwgCisgICAgMjQ2LCA5MywgMjA4LCAxOTIsIDUyLCAyMjMsIDI0NCwgMjA4LCAxOTIsIDUyLCAyMjYsIDk4LCAyMDgsIDE5MiwgNTIsIAorICAgIDIyMSwgMTQyLCAyNDIsIDIwOSwgNTIsIDI0NiwgOTMsIDI0MiwgMjA5LCA1MiwgMjIzLCAyNDQsIDI0MiwgMjA5LCA1MiwgCisgICAgMjI2LCA5OCwgMjQyLCAyMDksIDUyLCAyMjMsIDI0NCwgMTE5LCAyMTIsIDEyMiwgNTIsIDIyMywgMjQ0LCAxMTksIDIxMiwgCisgICAgMTIzLCAyMDgsIDE5MiwgNTIsIDE3MiwgNTIsIDIyNiwgNTAsIDUyLCAyMjEsIDQ1LCA1MiwgMjM1LCA5MSwgNTIsIDIxMywgCisgICAgMjM5LCA1MiwgMjEzLCAyNDAsIDExOSwgMjEyLCAxMjIsIDUyLCAyMTMsIDI0MCwgMTE5LCAyMTIsIDEyMywgMjA4LCAxOTIsIAorICAgIDUyLCAyMTQsIDIzNywgNTIsIDIxOCwgMTcxLCA1MiwgMjIxLCA0MiwgMjEyLCAxMjIsIDUyLCAyMjEsIDQzLCA1MiwgMjE0LCAKKyAgICAxODcsIDUyLCAyMTgsIDcxLCA1MiwgMjIxLCA0MiwgMjAzLCAxNjgsIDUyLCAyMjAsIDIzOCwgNTIsIDIyNSwgMjMyLCA1MiwgCisgICAgMjIwLCAyMzksIDIyMiwgNTYsIDUyLCAyMTQsIDE4NiwgNTIsIDIxOCwgNzAsIDUyLCAyMjEsIDQyLCAyMDEsIDE0NywgNTIsIAorICAgIDIyMCwgMjMyLCA1MiwgMjI1LCAyMzAsIDUyLCAyMjAsIDIzMywgMjIyLCA1NiwgNTIsIDIyNywgMTE5LCAyMTcsIDEwNiwgCisgICAgNTIsIDIyMywgMjQ0LCAyMTcsIDEwNiwgNTIsIDI1MSwgMTAxLCA1MiwgMjQ4LCA3MywgNTIsIDI0NywgMTAwLCA1MiwgMjQ3LCAKKyAgICA3NywgNTIsIDI0NywgMjI0LCAxMTksIDIyNiwgMjA5LCA1MiwgMjQ2LCA5MSwgNTIsIDI0MSwgMjI5LCA1MiwgMjM1LCA0LCAKKyAgICA1MiwgMTQ0LCA1MiwgMjMzLCAxMDYsIDUyLCAyMjgsIDExNywgNTIsIDIyNiwgMTEwLCA1MiwgMjI2LCA5OCwgMjQ3LCAxNDMsIAorICAgIDUyLCAyMjYsIDE3LCA1MiwgMjI0LCAxMTMsIDUyLCAyMjQsIDExMiwgNTIsIDIyNCwgOTksIDUyLCAyMjQsIDMsIDUyLCAKKyAgICAyMjIsIDExNiwgMjA5LCA1MywgNTIsIDIyMSwgMTc1LCA1MiwgMjIxLCAxMDgsIDUyLCAyMTUsIDI0NiwgNTIsIDIxNSwgCisgICAgMTA5LCA1MiwgMjE1LCA0NiwgNTIsIDIxNSwgNDQsIDUyLCAyMDgsIDE4MywgNTIsIDIwNywgMTkxLCA1MiwgMjAxLCA2NiwgCisgICAgNTIsIDIwMywgMTY5LCAxMTksIDIyMywgMjQzLCA1MiwgMzUsIDExOSwgMjIzLCAyNDMsIDE0MSwgMjA2LCAxNzgsIDE2LCAKKyAgICAzNiwgMjQxLCAyMzMsIDEwMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTA1LCAxNDEsIDIwNiwgMTc4LCAKKyAgICAxNiwgMzYsIDI0MSwgMjMzLCAxNDcsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE0OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTY0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxODcsIDE0MSwgCisgICAgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxMCwgMTM1LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAKKyAgICAxOTIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxOSwgMTEzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDYsIDE2NiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjM4LCAxOTksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTY0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDYsIAorICAgIDY5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzYsIDIyMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjM3LCAxMDgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwOSwgMTAwLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMTAsIDEzMiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjM4LCAKKyAgICAyMjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxOSwgMTEwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDQsIDE1OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTMsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTQ4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIAorICAgIDE1MCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNCwgMTU2LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNTIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgCisgICAgMTU4LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA2LCA2NywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA2LCA2NiwgNTIsIDIzNiwgNzEsIAorICAgIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjQyLCAyNDcsIDIzNCwgMTIzLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIxMywgCisgICAgMTgzLCAyMzksIDE3LCAyMzQsIDg4LCAzNiwgMjQxLCA0NiwgMjUwLCAxNTYsIDIwNiwgMTA3LCAyNDgsIDI0MiwgMjM0LCAKKyAgICA4OCwgMzYsIDE5OSwgMjI0LCAyMzcsIDcsIDIzNCwgODgsIDM2LCAyMDEsIDEwNiwgMjM0LCA4OCwgMzYsIDI0MywgNjQsIAorICAgIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUwLCAyMTMsIDIzNCwgODgsIDM2LCAyMzMsIDE5OCwgMjA1LCAxODIsIDIzNCwgCisgICAgODgsIDM2LCA0LCAyMDYsIDI0NSwgMjM0LCA4OCwgMzYsIDIwNSwgMTEwLCAyMzQsIDg4LCAzNiwgMjE2LCA3MSwgMjM0LCAKKyAgICA4OCwgMzYsIDIwOCwgMTExLCAyMzQsIDg4LCAzNiwgMjM3LCAxMzEsIDIzNCwgODgsIDM2LCAyMzUsIDY5LCAyMTUsIDY4LCAKKyAgICAyMzQsIDg4LCAzNiwgMjIxLCAxMjgsIDIzNCwgODgsIDM2LCAyMzgsIDE1MSwgMjM0LCA4OCwgMzYsIDIzNywgOCwgMjM0LCAKKyAgICA4OCwgMzYsIDIwMCwgMjM2LCAyMTcsIDc5LCAyMDYsIDEwNywgMjQxLCAxNzEsIDIzNCwgODgsIDM2LCAyNTEsIDcsIDIzNCwgCisgICAgODgsIDM2LCAyNDMsIDQzLCAyMzQsIDg4LCAzNiwgMjQ4LCAxNTAsIDIwNiwgMzcsIDIzNCwgODgsIDM2LCAyMzUsIDg5LCAKKyAgICAyMzQsIDg4LCAzNiwgMjA4LCAyMDgsIDI1MSwgMjYsIDIzNCwgODgsIDM2LCAyMTMsIDEwOSwgMjM0LCA4OCwgMzYsIDIyOCwgCisgICAgNzksIDIzNCwgODgsIDM2LCAyMzUsIDY5LCAyMDYsIDI0NSwgMjM0LCA4OCwgMzYsIDIyMSwgNTksIDI0MywgMTQsIDIzNCwgCisgICAgODgsIDM2LCAyMzUsIDY5LCAyMTUsIDIyLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI1MiwgMCwgMjAxLCA4MiwgMjM0LCAKKyAgICA4OCwgMzYsIDIwNiwgMTA3LCAyNDYsIDExOCwgMjM3LCA3NywgMjM0LCA4OCwgMzYsIDIyOCwgOTMsIDIzNCwgODgsIDM2LCAKKyAgICAyMzksIDExNCwgMjM0LCA4OCwgMzYsIDIxMywgMTEyLCAyMzQsIDg4LCAzNiwgMjM1LCA2OSwgMjE1LCA1MSwgMjM0LCA4OCwgCisgICAgMzYsIDIxNCwgMjU0LCAyMzQsIDg4LCAzNiwgMjQxLCAyNDksIDc2LCAyMDYsIDEwNywgMjI0LCAxOTYsIDIzNCwgODgsIDM2LCAKKyAgICAyMDYsIDEwNywgMjM3LCAxNjksIDIzNCwgODgsIDM2LCAyMTcsIDM5LCAyMzQsIDg4LCAzNiwgMjE3LCAxMzQsIDIzNCwgODgsIAorICAgIDM2LCAyNDEsIDE0MSwgMjM0LCA4OCwgMzYsIDI0MSwgMTYzLCAyMzQsIDg4LCAzNiwgMjI4LCAxMDgsIDIzNCwgODgsIDM2LCAKKyAgICAyNDgsIDYwLCAyMzQsIDg4LCAzNiwgMjQ2LCA3MiwgMjA1LCAxODYsIDIyMiwgNTksIDIzNCwgODgsIDM2LCAyMzYsIDQwLCAKKyAgICAyMDUsIDE4MiwgMjM0LCA4OCwgMzYsIDIxNCwgMTk2LCAyMDMsIDIxNywgMjM0LCA4OCwgMzYsIDIxNywgMzgsIDIzNCwgODgsIAorICAgIDM2LCAyMDYsIDEwNywgMjAxLCA1MiwgMjM0LCA4OCwgMzYsIDIxMywgMTAwLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI0NywgCisgICAgMTA2LCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDI1MCwgMjA5LCAyMDYsIDMxLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIAorICAgIDIyNywgMiwgMjA4LCA4MywgMjIxLCA2MywgMjM0LCA4OCwgMzYsIDI0MSwgMTA4LCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIAorICAgIDIyMiwgMTQyLCAyMjIsIDE5NywgMjM0LCA4OCwgMzYsIDI1MiwgMSwgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyMDEsIDk5LCAKKyAgICAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIzNSwgMjUzLCAyMDEsIDE2LCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIyNywgCisgICAgMTQ5LCAyMjUsIDk2LCAyMzQsIDg4LCAzNiwgMjQwLCAyNTIsIDIzNCwgODgsIDM2LCAyMjQsIDE4MywgMjM0LCA4OCwgMzYsIAorICAgIDIyOCwgODIsIDIwNSwgMzYsIDIzNCwgODgsIDM2LCA0LCAyMTUsIDIyLCAyMzQsIDg4LCAzNiwgMjUxLCAxOTQsIDI0NiwgCisgICAgNjMsIDIzNCwgODgsIDM2LCAyNDgsIDI0NSwgMjQ2LCA2MywgMTEsIDUsIDIyOCwgMTIsIDExLCA1LCAyMjgsIDQsIDExLCA1LCAKKyAgICA3MCwgMTEsIDUsIDIyOCwgMzgsIDExLCA1LCAyMjgsIDE3NiwgMTEsIDUsIDIyOCwgMTU5LCAxMSwgNSwgMjI4LCAxNzgsIAorICAgIDExLCA1LCAyMjgsIDE3NywgMTEsIDUsIDI1MCwgMTU1LCAxMSwgNSwgMjUwLCAxMTQsIDExLCA1LCA2MiwgMTEsIDUsIDI1MSwgCisgICAgMjgsIDExLCA1LCAyMDMsIDIyOSwgMTEsIDUsIDIwMywgMjMyLCAxMSwgNSwgMjAzLCAyMzAsIDExLCA1LCAyMTcsIDExLCAKKyAgICAxMSwgNSwgMjE2LCAyMzUsIDExLCA1LCA3NCwgMTEsIDUsIDIxNywgNTQsIDExLCA1LCAyMzgsIDQ4LCAxMSwgNSwgNzIsIAorICAgIDExLCA1LCAyMDAsIDIxNiwgMTEsIDUsIDI0OCwgMTUyLCAxMSwgNSwgMjQ4LCAxNDgsIDExLCA1LCAyNDgsIDE4OCwgMTEsIAorICAgIDUsIDI0OCwgMTYzLCAxMSwgNSwgMjQ4LCAxNzcsIDExLCA1LCAyNDgsIDE3NiwgMTEsIDUsIDI0OCwgMTc5LCAxMSwgNSwgCisgICAgMjQ4LCAxNzgsIDExLCA1LCAyNDksIDU1LCAxMSwgNSwgMjQ5LCA0NywgMTEsIDUsIDI0OSwgMTM2LCAxMSwgNSwgMjQ5LCAKKyAgICA3OCwgMTEsIDUsIDI0OCwgNiwgMTEsIDUsIDI0OCwgMTAsIDExLCA1LCAyNDgsIDcsIDExLCA1LCAyNDgsIDk3LCAxMSwgNSwgCisgICAgMjQ4LCA3OCwgMTEsIDUsIDI0OCwgMTI0LCAxMSwgNSwgMjQ4LCAxMDMsIDExLCA1LCAyNDgsIDIwMywgMTEsIDUsIDI0OSwgCisgICAgOCwgMTEsIDUsIDI0OCwgMjE1LCAxMSwgNSwgMjQ3LCAyNDYsIDExLCA1LCAyNDcsIDI0MSwgMTEsIDUsIDI0OCwgMzYsIDExLCAKKyAgICA1LCAyNDgsIDUsIDExLCA1LCAyNDcsIDI1NCwgMTEsIDUsIDI0OCwgMywgMTEsIDUsIDI0NywgMjI5LCAxMSwgNSwgMjQ3LCAKKyAgICAyMjcsIDExLCA1LCAyNDcsIDIzNCwgMTEsIDUsIDI0NywgMjMyLCAxMSwgNSwgMjQ3LCAyMzAsIDExLCA1LCAyNDcsIDIzMSwgCisgICAgMTEsIDUsIDIxNSwgMTQyLCAxMSwgNSwgMjE1LCAxMzgsIDExLCA1LCAyMTUsIDIwNCwgMTEsIDUsIDIxNSwgMTU0LCAxMSwgCisgICAgNSwgMjE1LCAxNzAsIDExLCA1LCAyMTUsIDE5NywgMTEsIDUsIDIxNSwgMTkzLCAxMSwgNSwgMjE2LCA5NCwgMTEsIDUsIAorICAgIDIxNiwgODMsIDExLCA1LCAxNzIsIDExLCA1LCAyMTYsIDEzNSwgMTEsIDUsIDIxNCwgMjA2LCAxMSwgNSwgMjE0LCAyMDgsIAorICAgIDExLCA1LCAyMTQsIDIwNywgMTEsIDUsIDIxNSwgNjEsIDExLCA1LCAyMTUsIDQ5LCAxMSwgNSwgMjE1LCAxMDYsIDExLCA1LCAKKyAgICAyMTUsIDc3LCAxMSwgNSwgMjE0LCAxOTIsIDExLCA1LCAyMTQsIDE4OCwgMTEsIDUsIDIxNCwgMjI0LCAxMSwgNSwgMjE0LCAKKyAgICAyMDUsIDExLCA1LCAyMTQsIDE5NywgMTEsIDUsIDIxNCwgMjAzLCAxMSwgNSwgMjE0LCAxNzEsIDExLCA1LCAyMTQsIDE3MCwgCisgICAgMTEsIDUsIDIxNCwgMTc1LCAxMSwgNSwgMjE0LCAxNzQsIDExLCA1LCAyMTQsIDE3MiwgMTEsIDUsIDIxNCwgMTczLCAxMSwgCisgICAgNSwgMjQ5LCAyOSwgMTEsIDUsIDI0OSwgMjgsIDExLCA1LCAyNDksIDM1LCAxMSwgNSwgMjQ5LCAzMCwgMTEsIDUsIDI0OSwgCisgICAgMzIsIDExLCA1LCAyNDksIDMxLCAxMSwgNSwgMjQ5LCAzNCwgMTEsIDUsIDI0OSwgMzMsIDExLCA1LCAyNDksIDQxLCAxMSwgCisgICAgNSwgMjQ5LCA0MCwgMTEsIDUsIDI0OSwgNDQsIDExLCA1LCAyNDksIDQyLCAxMSwgNSwgMjQ5LCAyMCwgMTEsIDUsIDI0OSwgCisgICAgMjIsIDExLCA1LCAyNDksIDIxLCAxMSwgNSwgMjQ5LCAyNSwgMTEsIDUsIDI0OSwgMjQsIDExLCA1LCAyNDksIDI3LCAxMSwgCisgICAgNSwgMjQ5LCAyNiwgMTEsIDUsIDI0OSwgMzYsIDExLCA1LCAyNDksIDM5LCAxMSwgNSwgMjQ5LCAzNywgMTEsIDUsIDI0OSwgCisgICAgMTYsIDExLCA1LCAyNDksIDE1LCAxMSwgNSwgMjQ5LCAyMywgMTEsIDUsIDI0OSwgMTksIDExLCA1LCAyNDksIDE3LCAxMSwgCisgICAgNSwgMjQ5LCAxOCwgMTEsIDUsIDI0OSwgMTIsIDExLCA1LCAyNDksIDExLCAxMSwgNSwgMjQ5LCAxNCwgMTEsIDUsIDI0OSwgCisgICAgMTMsIDExLCA1LCAyMjAsIDk3LCAxMSwgNSwgMjIwLCA5NiwgMTEsIDUsIDIyMCwgMTAyLCAxMSwgNSwgMjIwLCA5OCwgMTEsIAorICAgIDUsIDIyMCwgOTksIDExLCA1LCAyMjAsIDEwMSwgMTEsIDUsIDIyMCwgMTAwLCAxMSwgNSwgMjIwLCAxMDUsIDExLCA1LCAKKyAgICAyMjAsIDEwNCwgMTEsIDUsIDIyMCwgMTA3LCAxMSwgNSwgMjIwLCAxMDYsIDExLCA1LCAyMjAsIDkzLCAxMSwgNSwgMjIwLCAKKyAgICA5MiwgMTEsIDUsIDIyMCwgOTUsIDExLCA1LCAyMjAsIDk0LCAxMSwgNSwgMjIwLCA4NiwgMTEsIDUsIDIyMCwgODUsIDExLCAKKyAgICA1LCAyMjAsIDkwLCAxMSwgNSwgMjIwLCA4OSwgMTEsIDUsIDIyMCwgODcsIDExLCA1LCAyMjAsIDg4LCAxMSwgNSwgMjIwLCAKKyAgICA4MCwgMTEsIDUsIDIyMCwgNzksIDExLCA1LCAyMjAsIDg0LCAxMSwgNSwgMjIwLCA4MywgMTEsIDUsIDIyMCwgODEsIDExLCAKKyAgICA1LCAyMjAsIDgyLCAxMSwgNSwgMjMzLCAyNTEsIDExLCA1LCAyMzMsIDI1MCwgMTEsIDUsIDIzNCwgMCwgMTEsIDUsIDIzMywgCisgICAgMjUyLCAxMSwgNSwgMjMzLCAyNTMsIDExLCA1LCAyMzMsIDI1NSwgMTEsIDUsIDIzMywgMjU0LCAxMSwgNSwgMjM0LCAzLCAKKyAgICAxMSwgNSwgMjM0LCAyLCAxMSwgNSwgMjM0LCA1LCAxMSwgNSwgMjM0LCA0LCAxMSwgNSwgMjMzLCAyNDIsIDExLCA1LCAyMzMsIAorICAgIDI0NCwgMTEsIDUsIDIzMywgMjQzLCAxMSwgNSwgMjMzLCAyNDcsIDExLCA1LCAyMzMsIDI0NiwgMTEsIDUsIDIzMywgMjQ5LCAKKyAgICAxMSwgNSwgMjMzLCAyNDgsIDExLCA1LCAyMzMsIDIzOCwgMTEsIDUsIDIzMywgMjM3LCAxMSwgNSwgMjMzLCAyNDUsIDExLCAKKyAgICA1LCAyMzMsIDI0MSwgMTEsIDUsIDIzMywgMjM5LCAxMSwgNSwgMjMzLCAyNDAsIDExLCA1LCAyMzMsIDIzMiwgMTEsIDUsIAorICAgIDIzMywgMjM2LCAxMSwgNSwgMjMzLCAyMzUsIDExLCA1LCAyMzMsIDIzMywgMTEsIDUsIDIzMywgMjM0LCAxMSwgNSwgMjIxLCAKKyAgICAxNDcsIDExLCA1LCAyMjEsIDE0NiwgMTEsIDUsIDIyMSwgMjExLCAxMSwgNSwgMjIxLCAxNTMsIDExLCA1LCAyMjEsIDE4MywgCisgICAgMTEsIDUsIDIyMSwgMjAxLCAxMSwgNSwgMjIxLCAxOTksIDExLCA1LCAyMjIsIDEyNywgMTEsIDUsIDIyMiwgMTIyLCAxMSwgCisgICAgNSwgMTc4LCAxMSwgNSwgMjIyLCAxNjQsIDExLCA1LCAyMjEsIDgsIDExLCA1LCAyMjEsIDcsIDExLCA1LCAyMjEsIDExLCAKKyAgICAxMSwgNSwgMjIxLCA5LCAxMSwgNSwgMjIxLCA3MywgMTEsIDUsIDIyMSwgNDcsIDExLCA1LCAyMjEsIDEzNiwgMTEsIDUsIAorICAgIDIyMSwgNzksIDExLCA1LCAyMjIsIDcsIDExLCA1LCAyMjIsIDc2LCAxMSwgNSwgMjIwLCAyNDQsIDExLCA1LCAyMjAsIDI0MCwgCisgICAgMTEsIDUsIDIyMSwgNDEsIDExLCA1LCAyMjEsIDQsIDExLCA1LCAyMjAsIDI1MywgMTEsIDUsIDIyMSwgMiwgMTEsIDUsIAorICAgIDIyMCwgMjE3LCAxMSwgNSwgMjIwLCAyMTYsIDExLCA1LCAyMjAsIDIyMiwgMTEsIDUsIDIyMCwgMjE5LCAxMSwgNSwgMjM3LCAKKyAgICA2NCwgMTEsIDUsIDIzNywgNTgsIDExLCA1LCAyMzcsIDExMiwgMTEsIDUsIDIzNywgNzksIDExLCA1LCAyMzcsIDE2MCwgMTEsIAorICAgIDUsIDIzNywgMTUxLCAxMSwgNSwgMjM3LCAxOTUsIDExLCA1LCAyMzcsIDE2NSwgMTEsIDUsIDIzNiwgMjIwLCAxMSwgNSwgCisgICAgMjM3LCAxMywgMTEsIDUsIDIzNiwgMjUwLCAxMSwgNSwgMjM2LCAxNzIsIDExLCA1LCAyMzYsIDE3MSwgMTEsIDUsIDIzNiwgCisgICAgMTg5LCAxMSwgNSwgMjM2LCAxNzcsIDExLCA1LCAyMzYsIDE3NSwgMTEsIDUsIDIzNiwgMTc2LCAxMSwgNSwgMjM2LCAxNTksIAorICAgIDExLCA1LCAyMzYsIDE1OCwgMTEsIDUsIDIzNiwgMTYyLCAxMSwgNSwgMjM2LCAxNjAsIDExLCA1LCAyMDIsIDIwMCwgMTEsIAorICAgIDUsIDIwMiwgMTk1LCAxMSwgNSwgMjAyLCAyMzQsIDExLCA1LCAyMDIsIDIwOSwgMTEsIDUsIDIwMiwgMjIzLCAxMSwgNSwgCisgICAgMjAyLCAyMjAsIDExLCA1LCAyMDIsIDIyNiwgMTEsIDUsIDIwMiwgMjI1LCAxMSwgNSwgMjAzLCA2NywgMTEsIDUsIDIwMywgCisgICAgNjIsIDExLCA1LCAyMDMsIDkwLCAxMSwgNSwgMjAzLCA3OSwgMTEsIDUsIDIwMiwgMTc1LCAxMSwgNSwgMjAyLCAxNzEsIDExLCAKKyAgICA1LCAyMDIsIDE5MywgMTEsIDUsIDIwMiwgMTc3LCAxMSwgNSwgMjAyLCAyMzcsIDExLCA1LCAyMDMsIDQ4LCAxMSwgNSwgCisgICAgMjAxLCAxNjAsIDExLCA1LCAyMDEsIDE1OCwgMTEsIDUsIDIwMSwgMTY2LCAxMSwgNSwgMjAxLCAxNjMsIDExLCA1LCAyMDEsIAorICAgIDE2MSwgMTEsIDUsIDIwMSwgMTYyLCAxMSwgNSwgMjAxLCAxNTEsIDExLCA1LCAyMDEsIDE1MCwgMTEsIDUsIDIwMSwgMTU1LCAKKyAgICAxMSwgNSwgMjAxLCAxNTQsIDExLCA1LCAyMDEsIDE1MiwgMTEsIDUsIDIwMSwgMTUzLCAxMSwgNSwgMjQwLCAyNDUsIDExLCAKKyAgICA1LCAyNDAsIDIzMiwgMTEsIDUsIDI0MSwgNzYsIDExLCA1LCAyNDEsIDE2LCAxMSwgNSwgMjQxLCA1MSwgMTEsIDUsIDI0MSwgCisgICAgNTYsIDExLCA1LCAyNDEsIDU1LCAxMSwgNSwgMjQxLCAyNDAsIDExLCA1LCAyNDEsIDIzNCwgMTEsIDUsIDI0MiwgNTgsIDExLCAKKyAgICA1LCAyNDIsIDQsIDExLCA1LCAyMzksIDExOSwgMTEsIDUsIDIzOSwgMTIwLCAxMSwgNSwgMjQwLCAxODIsIDExLCA1LCAyMzksIAorICAgIDE2NCwgMTEsIDUsIDI0MCwgMjExLCAxMSwgNSwgMjQwLCAxODQsIDExLCA1LCAyNDEsIDEwNiwgMTEsIDUsIDI0MSwgMTc1LCAKKyAgICAxMSwgNSwgMjQxLCAxMjcsIDExLCA1LCAyMzksIDExMCwgMTEsIDUsIDIzOSwgMTA4LCAxMSwgNSwgMjM5LCAxMzcsIDExLCAKKyAgICA1LCAyMzksIDExOCwgMTEsIDUsIDIzOSwgMTEzLCAxMSwgNSwgMjM5LCAxMTYsIDExLCA1LCAyMDUsIDIxMywgMTEsIDUsIAorICAgIDIwNSwgMjA1LCAxMSwgNSwgMjA2LCAxNSwgMTEsIDUsIDIwNSwgMjIzLCAxMSwgNSwgMjA2LCA1LCAxMSwgNSwgMjA2LCA3LCAKKyAgICAxMSwgNSwgMjA2LCA2LCAxMSwgNSwgMjA2LCAyMjYsIDExLCA1LCAyMDYsIDIxMiwgMTEsIDUsIDIwNywgMzYsIDExLCA1LCAKKyAgICAyMDYsIDIzNiwgMTEsIDUsIDIwNCwgMTk2LCAxMSwgNSwgMjA0LCAxOTUsIDExLCA1LCAyMDQsIDE5OCwgMTEsIDUsIDIwNCwgCisgICAgMTk3LCAxMSwgNSwgMjA1LCAxNDQsIDExLCA1LCAyMDUsIDEzNCwgMTEsIDUsIDEzOCwgMTEsIDUsIDIwNSwgMTU3LCAxMSwgCisgICAgNSwgMjA2LCAxMjgsIDExLCA1LCAyMDYsIDIwMSwgMTEsIDUsIDIwNiwgMTUzLCAxMSwgNSwgMjA0LCAxNzksIDExLCA1LCAKKyAgICAyMDQsIDE3NCwgMTEsIDUsIDIwNCwgMjE1LCAxMSwgNSwgMjA0LCAxOTQsIDExLCA1LCAyMDQsIDE4MCwgMTEsIDUsIDIwNCwgCisgICAgMTkyLCAxMSwgNSwgMjQxLCAxOTIsIDExLCA1LCAyNDEsIDE5MSwgMTEsIDUsIDI0MSwgMTk3LCAxMSwgNSwgMjQxLCAxOTMsIAorICAgIDExLCA1LCAyNDEsIDE5NCwgMTEsIDUsIDI0MSwgMTk2LCAxMSwgNSwgMjQxLCAxOTUsIDExLCA1LCAyNDEsIDIxMywgMTEsIAorICAgIDUsIDI0MSwgMjEyLCAxMSwgNSwgMjQxLCAyMjAsIDExLCA1LCAyNDEsIDIxNCwgMTEsIDUsIDI0MSwgMTgyLCAxMSwgNSwgCisgICAgMjQxLCAxODQsIDExLCA1LCAyNDEsIDE4MywgMTEsIDUsIDI0MSwgMTg3LCAxMSwgNSwgMjQxLCAxODYsIDExLCA1LCAyNDEsIAorICAgIDE5MCwgMTEsIDUsIDI0MSwgMTg4LCAxMSwgNSwgMjQxLCAyMDUsIDExLCA1LCAyNDEsIDIwOCwgMTEsIDUsIDI0MSwgMjA2LCAKKyAgICAxMSwgNSwgMjQxLCAxNzgsIDExLCA1LCAyNDEsIDE3NywgMTEsIDUsIDI0MSwgMTg1LCAxMSwgNSwgMjQxLCAxODEsIDExLCAKKyAgICA1LCAyNDEsIDE3OSwgMTEsIDUsIDI0MSwgMTgwLCAxMSwgNSwgMjIwLCA1MywgMTEsIDUsIDIyMCwgNTIsIDExLCA1LCAyMjAsIAorICAgIDYwLCAxMSwgNSwgMjIwLCA1NSwgMTEsIDUsIDIyMCwgNTYsIDExLCA1LCAyMjAsIDU3LCAxMSwgNSwgMjIwLCA2OSwgMTEsIAorICAgIDUsIDIyMCwgNjgsIDExLCA1LCAyMjAsIDc1LCAxMSwgNSwgMjIwLCA3MCwgMTEsIDUsIDIyMCwgNDUsIDExLCA1LCAyMjAsIAorICAgIDQ0LCAxMSwgNSwgMjIwLCA1MSwgMTEsIDUsIDIyMCwgNDYsIDExLCA1LCAyMjAsIDYxLCAxMSwgNSwgMjIwLCA2NywgMTEsIAorICAgIDUsIDIyMCwgNjUsIDExLCA1LCAyMjAsIDM3LCAxMSwgNSwgMjIwLCAzNiwgMTEsIDUsIDIyMCwgNDIsIDExLCA1LCAyMjAsIAorICAgIDQwLCAxMSwgNSwgMjIwLCAzOCwgMTEsIDUsIDIyMCwgMzksIDExLCA1LCAyMzMsIDIxNywgMTEsIDUsIDIzMywgMjE2LCAxMSwgCisgICAgNSwgMjMzLCAyMjMsIDExLCA1LCAyMzMsIDIxOCwgMTEsIDUsIDIzMywgMjIwLCAxMSwgNSwgMjMzLCAyMTksIDExLCA1LCAKKyAgICAyMzMsIDIyMiwgMTEsIDUsIDIzMywgMjIxLCAxMSwgNSwgMjMzLCAyMjksIDExLCA1LCAyMzMsIDIyNywgMTEsIDUsIDIzMywgCisgICAgMjMxLCAxMSwgNSwgMjMzLCAyMzAsIDExLCA1LCAyMzMsIDIxMCwgMTEsIDUsIDIzMywgMjExLCAxMSwgNSwgMjMzLCAyMTQsIAorICAgIDExLCA1LCAyMzMsIDIxMywgMTEsIDUsIDIzMywgMjE1LCAxMSwgNSwgMjMzLCAyMjQsIDExLCA1LCAyMzMsIDIyNiwgMTEsIAorICAgIDUsIDIzMywgMjI1LCAxMSwgNSwgMjMzLCAyMDksIDExLCA1LCAyMTksIDEwMiwgMTEsIDUsIDIxOSwgMTAwLCAxMSwgNSwgCisgICAgMjE5LCAxNTAsIDExLCA1LCAyMTksIDEwNSwgMTEsIDUsIDIxOSwgMTMyLCAxMSwgNSwgMjE5LCAxNDYsIDExLCA1LCAyMTksIAorICAgIDE0NSwgMTEsIDUsIDIyMCwgMTExLCAxMSwgNSwgMTg4LCAxMSwgNSwgMjIwLCAxMjcsIDExLCA1LCAyMTgsIDgxLCAxMSwgNSwgCisgICAgMjE4LCA4MywgMTEsIDUsIDIxOCwgODIsIDExLCA1LCAyMTgsIDIxNCwgMTEsIDUsIDIxOCwgMTk5LCAxMSwgNSwgMjE4LCAKKyAgICAyNDEsIDExLCA1LCAyMTgsIDIyNSwgMTEsIDUsIDIyMCwgMywgMTEsIDUsIDIyMCwgMzQsIDExLCA1LCAyMjAsIDE5LCAxMSwgCisgICAgNSwgMjE4LCA3NiwgMTEsIDUsIDIxOCwgNzIsIDExLCA1LCAyMTgsIDEzMywgMTEsIDUsIDIxOCwgODAsIDExLCA1LCAyMTgsIAorICAgIDc4LCAxMSwgNSwgMjE4LCA3OSwgMTEsIDUsIDIzNCwgMjYsIDExLCA1LCAyMzQsIDI1LCAxMSwgNSwgMjM0LCAzMSwgMTEsIAorICAgIDUsIDIzNCwgMjcsIDExLCA1LCAyMzQsIDI4LCAxMSwgNSwgMjM0LCAzMCwgMTEsIDUsIDIzNCwgMjksIDExLCA1LCAyMzQsIAorICAgIDM3LCAxMSwgNSwgMjM0LCAzNSwgMTEsIDUsIDIzNCwgMzksIDExLCA1LCAyMzQsIDM4LCAxMSwgNSwgMjM0LCAxOCwgMTEsIAorICAgIDUsIDIzNCwgMjAsIDExLCA1LCAyMzQsIDE5LCAxMSwgNSwgMjM0LCAyMiwgMTEsIDUsIDIzNCwgMjQsIDExLCA1LCAyMzQsIAorICAgIDIzLCAxMSwgNSwgMjM0LCAzMiwgMTEsIDUsIDIzNCwgMzQsIDExLCA1LCAyMzQsIDMzLCAxMSwgNSwgMjM0LCAxNCwgMTEsIAorICAgIDUsIDIzNCwgMTMsIDExLCA1LCAyMzQsIDIxLCAxMSwgNSwgMjM0LCAxNywgMTEsIDUsIDIzNCwgMTUsIDExLCA1LCAyMzQsIAorICAgIDE2LCAxMSwgNSwgMjM0LCA4LCAxMSwgNSwgMjM0LCA3LCAxMSwgNSwgMjM0LCAxMiwgMTEsIDUsIDIzNCwgMTEsIDExLCA1LCAKKyAgICAyMzQsIDksIDExLCA1LCAyMzQsIDEwLCAxMSwgNSwgMjI0LCAxNTIsIDExLCA1LCAyMjQsIDE0NCwgMTEsIDUsIDIyNCwgCisgICAgMjEwLCAxMSwgNSwgMjI0LCAxNjIsIDExLCA1LCAyMjQsIDIwMSwgMTEsIDUsIDIyNCwgMjAwLCAxMSwgNSwgMjI0LCAyMDQsIAorICAgIDExLCA1LCAyMjQsIDIwMiwgMTEsIDUsIDIyNSwgNjMsIDExLCA1LCAyMjUsIDUxLCAxMSwgNSwgMTk0LCAxMSwgNSwgMjI1LCAKKyAgICA3NCwgMTEsIDUsIDIyNCwgMjAsIDExLCA1LCAyMjQsIDE5LCAxMSwgNSwgMjI0LCAyMiwgMTEsIDUsIDIyNCwgMjEsIDExLCAKKyAgICA1LCAyMjQsIDY1LCAxMSwgNSwgMjI0LCA1MSwgMTEsIDUsIDIyNCwgMTEwLCAxMSwgNSwgMjI0LCA3MSwgMTEsIDUsIDIyNCwgCisgICAgMjI3LCAxMSwgNSwgMjI1LCA0MCwgMTEsIDUsIDIyNCwgMjQ0LCAxMSwgNSwgMjI0LCAxNCwgMTEsIDUsIDIyNCwgMTIsIDExLCAKKyAgICA1LCAyMjQsIDQyLCAxMSwgNSwgMjI0LCAxOCwgMTEsIDUsIDIyNCwgMTYsIDExLCA1LCAyMjQsIDE3LCAxMSwgNSwgMjIzLCAKKyAgICAyNDgsIDExLCA1LCAyMjMsIDI0NywgMTEsIDUsIDIyNCwgMiwgMTEsIDUsIDIyMywgMjUxLCAxMSwgNSwgMjIzLCAyNDksIAorICAgIDExLCA1LCAyMjMsIDI1MCwgMTEsIDUsIDIzNSwgMTM0LCAxMSwgNSwgMjM1LCAxMzMsIDExLCA1LCAyMzUsIDE2MSwgMTEsIAorICAgIDUsIDIzNSwgMTQ1LCAxMSwgNSwgMjM1LCAxNTMsIDExLCA1LCAyMzUsIDE1MiwgMTEsIDUsIDIzNSwgMTU1LCAxMSwgNSwgCisgICAgMjM1LCAxNTQsIDExLCA1LCAyMzYsIDQyLCAxMSwgNSwgMjM2LCAzNywgMTEsIDUsIDIzNiwgODksIDExLCA1LCAyMzYsIDUyLCAKKyAgICAxMSwgNSwgMjM1LCAyNSwgMTEsIDUsIDIzNSwgMjQsIDExLCA1LCAyMzUsIDI3LCAxMSwgNSwgMjM1LCAyNiwgMTEsIDUsIAorICAgIDIzNSwgOTQsIDExLCA1LCAyMzUsIDkyLCAxMSwgNSwgMjM1LCAxMTYsIDExLCA1LCAyMzUsIDEwMywgMTEsIDUsIDIzNSwgCisgICAgMjM5LCAxMSwgNSwgMjM1LCAyMzcsIDExLCA1LCAyMzYsIDE1LCAxMSwgNSwgMjM1LCAyNTAsIDExLCA1LCAyMzUsIDE0LCAKKyAgICAxMSwgNSwgMjM1LCAxMywgMTEsIDUsIDIzNSwgNTAsIDExLCA1LCAyMzUsIDIzLCAxMSwgNSwgMjM1LCAxNSwgMTEsIDUsIAorICAgIDIzNSwgMjIsIDExLCA1LCAyMjYsIDEyNywgMTEsIDUsIDIyNiwgMTIzLCAxMSwgNSwgMjI2LCAxNjMsIDExLCA1LCAyMjYsIAorICAgIDE0MSwgMTEsIDUsIDIyNiwgMTUyLCAxMSwgNSwgMjI2LCAxNTYsIDExLCA1LCAyMjYsIDE1NCwgMTEsIDUsIDIyNywgMzMsIAorICAgIDExLCA1LCAyMjcsIDE2LCAxMSwgNSwgMTYxLCAxMSwgNSwgMjI3LCA2MCwgMTEsIDUsIDIyNSwgMjQ5LCAxMSwgNSwgMjI1LCAKKyAgICAyNTQsIDExLCA1LCAyMjUsIDI1MSwgMTEsIDUsIDIyNiwgNTYsIDExLCA1LCAyMjYsIDUxLCAxMSwgNSwgMjI2LCA4OCwgMTEsIAorICAgIDUsIDIyNiwgNjMsIDExLCA1LCAyMjYsIDIzMywgMTEsIDUsIDIyNiwgMjE2LCAxMSwgNSwgMjI3LCA4LCAxMSwgNSwgMjI2LCAKKyAgICAyMzcsIDExLCA1LCAyMjUsIDIzNywgMTEsIDUsIDIyNSwgMjMzLCAxMSwgNSwgMjI2LCAxNSwgMTEsIDUsIDIyNSwgMjQ4LCAKKyAgICAxMSwgNSwgMjI1LCAyNDEsIDExLCA1LCAyMjUsIDI0NSwgMTEsIDUsIDIzNSwgMjIxLCAxMSwgNSwgMjM1LCAyMjAsIDExLCAKKyAgICA1LCAyMzUsIDIyNSwgMTEsIDUsIDIzNSwgMjIyLCAxMSwgNSwgMjM1LCAyMjQsIDExLCA1LCAyMzUsIDIyMywgMTEsIDUsIAorICAgIDIzNSwgMjMyLCAxMSwgNSwgMjM1LCAyMzEsIDExLCA1LCAyMzUsIDIzNSwgMTEsIDUsIDIzNSwgMjMzLCAxMSwgNSwgMjM1LCAKKyAgICAyMTIsIDExLCA1LCAyMzUsIDIxMSwgMTEsIDUsIDIzNSwgMjE0LCAxMSwgNSwgMjM1LCAyMTMsIDExLCA1LCAyMzUsIDIxNywgCisgICAgMTEsIDUsIDIzNSwgMjE2LCAxMSwgNSwgMjM1LCAyMTksIDExLCA1LCAyMzUsIDIxOCwgMTEsIDUsIDIzNSwgMjI3LCAxMSwgCisgICAgNSwgMjM1LCAyMjYsIDExLCA1LCAyMzUsIDIzMCwgMTEsIDUsIDIzNSwgMjI4LCAxMSwgNSwgMjM1LCAyMDcsIDExLCA1LCAKKyAgICAyMzUsIDIwNiwgMTEsIDUsIDIzNSwgMjE1LCAxMSwgNSwgMjM1LCAyMTAsIDExLCA1LCAyMzUsIDIwOCwgMTEsIDUsIDIzNSwgCisgICAgMjA5LCAxMSwgNSwgMjIxLCAyMzAsIDExLCA1LCAyMjEsIDIzMSwgMTEsIDUsIDIyMSwgMjQ5LCAxMSwgNSwgMjIxLCAyNDgsIAorICAgIDExLCA1LCAyMjEsIDI1MSwgMTEsIDUsIDIyMSwgMjUwLCAxMSwgNSwgMjIxLCAyMjEsIDExLCA1LCAyMjEsIDIyMywgMTEsIAorICAgIDUsIDIyMSwgMjIyLCAxMSwgNSwgMjIxLCAyMjYsIDExLCA1LCAyMjEsIDIyNSwgMTEsIDUsIDIyMSwgMjI4LCAxMSwgNSwgCisgICAgMjIxLCAyMjcsIDExLCA1LCAyMjEsIDIzMiwgMTEsIDUsIDIyMSwgMjM0LCAxMSwgNSwgMjIxLCAyMzMsIDExLCA1LCAyMjEsIAorICAgIDIxNywgMTEsIDUsIDIyMSwgMjE2LCAxMSwgNSwgMjIxLCAyMjQsIDExLCA1LCAyMjEsIDIyMCwgMTEsIDUsIDIyMSwgMjE4LCAKKyAgICAxMSwgNSwgMjIxLCAyMTksIDExLCA1LCAyMzMsIDQ3LCAxMSwgNSwgMjMzLCA0NiwgMTEsIDUsIDIzMywgNTMsIDExLCA1LCAKKyAgICAyMzMsIDQ4LCAxMSwgNSwgMjMzLCA1MCwgMTEsIDUsIDIzMywgNDksIDExLCA1LCAyMzMsIDUyLCAxMSwgNSwgMjMzLCA1MSwgCisgICAgMTEsIDUsIDIzMywgNTgsIDExLCA1LCAyMzMsIDU3LCAxMSwgNSwgMjMzLCA2MCwgMTEsIDUsIDIzMywgNTksIDExLCA1LCAKKyAgICAyMzMsIDM5LCAxMSwgNSwgMjMzLCAzOCwgMTEsIDUsIDIzMywgNDEsIDExLCA1LCAyMzMsIDQwLCAxMSwgNSwgMjMzLCA0MywgCisgICAgMTEsIDUsIDIzMywgNDIsIDExLCA1LCAyMzMsIDQ1LCAxMSwgNSwgMjMzLCA0NCwgMTEsIDUsIDIzMywgNTQsIDExLCA1LCAKKyAgICAyMzMsIDU2LCAxMSwgNSwgMjMzLCA1NSwgMTEsIDUsIDIxOSwgMTk4LCAxMSwgNSwgMjE5LCAyMDAsIDExLCA1LCAyMTksIAorICAgIDE5OSwgMTEsIDUsIDIxOSwgMjQzLCAxMSwgNSwgMjE5LCAyNDEsIDExLCA1LCAyMTksIDI1MywgMTEsIDUsIDIxOSwgMjQ2LCAKKyAgICAxMSwgNSwgMjE5LCAxNjAsIDExLCA1LCAyMTksIDE1OSwgMTEsIDUsIDIxOSwgMTYxLCAxMSwgNSwgMjE5LCAxNzAsIDExLCAKKyAgICA1LCAyMTksIDE2NywgMTEsIDUsIDIxOSwgMTc4LCAxMSwgNSwgMjE5LCAxNzIsIDExLCA1LCAyMTksIDIzNCwgMTEsIDUsIAorICAgIDIxOSwgMjQwLCAxMSwgNSwgMjE5LCAyMzYsIDExLCA1LCAyMzQsIDQ1LCAxMSwgNSwgMjM0LCA2MCwgMTEsIDUsIDIzNCwgCisgICAgNjksIDExLCA1LCAyMzQsIDE1NywgMTEsIDUsIDIzNCwgMTQ2LCAxMSwgNSwgMTQ0LCAxMSwgNSwgMjM0LCAxNjgsIDExLCA1LCAKKyAgICAyMzMsIDc2LCAxMSwgNSwgMjMzLCA3NSwgMTEsIDUsIDIzMywgNzgsIDExLCA1LCAyMzMsIDc3LCAxMSwgNSwgMjMzLCAxMTcsIAorICAgIDExLCA1LCAyMzMsIDEwOCwgMTEsIDUsIDIzMywgMjA3LCAxMSwgNSwgMjMzLCAxODAsIDExLCA1LCAyMzQsIDkwLCAxMSwgNSwgCisgICAgMjM0LCAxMzksIDExLCA1LCAyMzQsIDEwMiwgMTEsIDUsIDIwMSwgODUsIDExLCA1LCAyMDEsIDcwLCAxMSwgNSwgMjAxLCAKKyAgICAxMTQsIDExLCA1LCAyMDEsIDk2LCAxMSwgNSwgMjAwLCAyMDUsIDExLCA1LCAyMDAsIDIwNywgMTEsIDUsIDIwMCwgMjA2LCAKKyAgICAxMSwgNSwgMjAwLCAyMjksIDExLCA1LCAyMDEsIDAsIDExLCA1LCAyMDAsIDIzOSwgMTEsIDUsIDIwMSwgNDMsIDExLCA1LCAKKyAgICAyMDEsIDY0LCAxMSwgNSwgMjAxLCA0OSwgMTEsIDUsIDE5OSwgMjEsIDExLCA1LCAxOTksIDIwLCAxMSwgNSwgMTk5LCAzNiwgCisgICAgMTEsIDUsIDE5OSwgMjQsIDExLCA1LCAxOTksIDI5LCAxMSwgNSwgMTk5LCAzMSwgMTEsIDUsIDE5OSwgMzAsIDExLCA1LCAKKyAgICAxOTksIDk3LCAxMSwgNSwgMTk5LCA5NCwgMTEsIDUsIDE5OSwgMTE0LCAxMSwgNSwgMTk5LCAxMDEsIDExLCA1LCAxOTgsIAorICAgIDI1MiwgMTEsIDUsIDE5OCwgMjU0LCAxMSwgNSwgMTk4LCAyNTMsIDExLCA1LCAxOTksIDEwLCAxMSwgNSwgMTk5LCA5LCAxMSwgCisgICAgNSwgMTk5LCAxNCwgMTEsIDUsIDE5OSwgMTEsIDExLCA1LCAxOTksIDc5LCAxMSwgNSwgMTk5LCA4OSwgMTEsIDUsIDE5OSwgCisgICAgODMsIDExLCA1LCAxOTgsIDI0OCwgMTEsIDUsIDE5OCwgMjQ3LCAxMSwgNSwgMTk5LCAzLCAxMSwgNSwgMTk4LCAyNTEsIDExLCAKKyAgICA1LCAxOTgsIDI0OSwgMTEsIDUsIDE5OCwgMjUwLCAxMSwgNSwgMTk4LCAyMzQsIDExLCA1LCAxOTgsIDIzMywgMTEsIDUsIAorICAgIDE5OCwgMjM5LCAxMSwgNSwgMTk4LCAyMzcsIDExLCA1LCAxOTgsIDIzNSwgMTEsIDUsIDE5OCwgMjM2LCAxMSwgNSwgMjQ2LCAKKyAgICAxNDQsIDExLCA1LCAyNDYsIDEzNywgMTEsIDUsIDI0NiwgMTczLCAxMSwgNSwgMjQ2LCAxNTcsIDExLCA1LCAyNDYsIDE3MCwgCisgICAgMTEsIDUsIDI0NiwgMTY0LCAxMSwgNSwgMjQ2LCAxNzIsIDExLCA1LCAyNDYsIDE3MSwgMTEsIDUsIDI0NywgMTExLCAxMSwgCisgICAgNSwgMjQ3LCAxMDMsIDExLCA1LCAyNDcsIDE5MCwgMTEsIDUsIDI0NywgMTQ0LCAxMSwgNSwgMjQyLCAyMDQsIDExLCA1LCAKKyAgICAyNDIsIDIwNiwgMTEsIDUsIDI0MiwgMjA1LCAxMSwgNSwgMjQzLCA4LCAxMSwgNSwgMjQyLCAyNTMsIDExLCA1LCAyNDYsIAorICAgIDkxLCAxMSwgNSwgMjQzLCAyNSwgMTEsIDUsIDI0NywgNDAsIDExLCA1LCAyNDcsIDc2LCAxMSwgNSwgMjQ3LCA0NSwgMTEsIAorICAgIDUsIDI0MiwgMTc5LCAxMSwgNSwgMjQyLCAxNzcsIDExLCA1LCAyNDIsIDIxNCwgMTEsIDUsIDI0MiwgMjAyLCAxMSwgNSwgCisgICAgMjQyLCAxODUsIDExLCA1LCAyNDIsIDE5OSwgMTEsIDUsIDI0MiwgMTU2LCAxMSwgNSwgMjQyLCAxNTUsIDExLCA1LCAyNDIsIAorICAgIDE2OCwgMTEsIDUsIDI0MiwgMTYyLCAxMSwgNSwgMjQyLCAxNTcsIDExLCA1LCAyNDIsIDE1OSwgMTEsIDUsIDE5OCwgMjE3LCAKKyAgICAxMSwgNSwgMTk4LCAyMTYsIDExLCA1LCAxOTgsIDIyMywgMTEsIDUsIDE5OCwgMjE4LCAxMSwgNSwgMTk4LCAyMjAsIDExLCAKKyAgICA1LCAxOTgsIDIxOSwgMTEsIDUsIDE5OCwgMjIyLCAxMSwgNSwgMTk4LCAyMjEsIDExLCA1LCAxOTgsIDIyOSwgMTEsIDUsIAorICAgIDE5OCwgMjI4LCAxMSwgNSwgMTk4LCAyMzIsIDExLCA1LCAxOTgsIDIzMCwgMTEsIDUsIDE5OCwgMjEzLCAxMSwgNSwgMTk4LCAKKyAgICAyMTUsIDExLCA1LCAxOTgsIDIxNCwgMTEsIDUsIDE5OCwgMjI0LCAxMSwgNSwgMTk4LCAyMjcsIDExLCA1LCAxOTgsIDIyNSwgCisgICAgMTEsIDUsIDE5OCwgMjA2LCAxMSwgNSwgMTk4LCAyMTAsIDExLCA1LCAxOTgsIDIwOSwgMTEsIDUsIDE5OCwgMjA3LCAxMSwgCisgICAgNSwgMTk4LCAyMDgsIDExLCA1LCAxOTgsIDIwMCwgMTEsIDUsIDE5OCwgMTk5LCAxMSwgNSwgMTk4LCAyMDUsIDExLCA1LCAKKyAgICAxOTgsIDIwMywgMTEsIDUsIDE5OCwgMjAxLCAxMSwgNSwgMTk4LCAyMDIsIDExLCA1LCAyMTcsIDI1MCwgMTEsIDUsIDIxNywgCisgICAgMjQ5LCAxMSwgNSwgMjE3LCAyNTUsIDExLCA1LCAyMTcsIDI1MSwgMTEsIDUsIDIxNywgMjUyLCAxMSwgNSwgMjE3LCAyNTQsIAorICAgIDExLCA1LCAyMTcsIDI1MywgMTEsIDUsIDIxOCwgNCwgMTEsIDUsIDIxOCwgMywgMTEsIDUsIDIxOCwgNywgMTEsIDUsIDIxOCwgCisgICAgNiwgMTEsIDUsIDIxNywgMjQzLCAxMSwgNSwgMjE3LCAyNDQsIDExLCA1LCAyMTcsIDI0NywgMTEsIDUsIDIxNywgMjQ4LCAKKyAgICAxMSwgNSwgMjE4LCAwLCAxMSwgNSwgMjE4LCAyLCAxMSwgNSwgMjE3LCAyMzgsIDExLCA1LCAyMTcsIDI0NiwgMTEsIDUsIAorICAgIDIxNywgMjQyLCAxMSwgNSwgMjE3LCAyMzksIDExLCA1LCAyMTcsIDI0MCwgMTEsIDUsIDIxNywgMjMzLCAxMSwgNSwgMjE3LCAKKyAgICAyMzIsIDExLCA1LCAyMTcsIDIzNywgMTEsIDUsIDIxNywgMjM2LCAxMSwgNSwgMjE3LCAyMzQsIDExLCA1LCAyMTcsIDIzNSwgCisgICAgMTEsIDUsIDIwOSwgMTA4LCAxMSwgNSwgMTg3LCAxMSwgNSwgMjA5LCAxODIsIDExLCA1LCAyMDksIDExMSwgMTEsIDUsIAorICAgIDIwOSwgMTY5LCAxMSwgNSwgMjA5LCAxNzIsIDExLCA1LCAyMDksIDE3MCwgMTEsIDUsIDIxMSwgMjUxLCAxMSwgNSwgMjExLCAKKyAgICAyMzcsIDExLCA1LCAyMTIsIDY0LCAxMSwgNSwgMjEyLCAzLCAxMSwgNSwgMjA3LCAyMTgsIDExLCA1LCAyMDcsIDIyMCwgMTEsIAorICAgIDUsIDIwNywgMjE5LCAxMSwgNSwgMjA5LCA0LCAxMSwgNSwgMjA4LCAyNDksIDExLCA1LCAyMDksIDI5LCAxMSwgNSwgMjA5LCAKKyAgICA4LCAxMSwgNSwgMjEwLCAxMjcsIDExLCA1LCAyMTEsIDIwMiwgMTEsIDUsIDIxMCwgMTU2LCAxMSwgNSwgMjA3LCAxOTUsIAorICAgIDExLCA1LCAyMDcsIDE5MiwgMTEsIDUsIDIwOCwgMjQsIDExLCA1LCAyMDcsIDIxNywgMTEsIDUsIDIwNywgMTk5LCAxMSwgNSwgCisgICAgMjA3LCAyMDcsIDExLCA1LCAyMDcsIDk3LCAxMSwgNSwgMjA3LCA5NiwgMTEsIDUsIDIwNywgMTY1LCAxMSwgNSwgMjA3LCAKKyAgICAxMDUsIDExLCA1LCAyMDcsIDk5LCAxMSwgNSwgMjA3LCAxMDQsIDExLCA1LCAyMDgsIDE0MSwgMTEsIDUsIDIwOCwgMTQwLCAKKyAgICAxMSwgNSwgMjA4LCAxNDcsIDExLCA1LCAyMDgsIDE0MiwgMTEsIDUsIDIwOCwgMTQ0LCAxMSwgNSwgMjA4LCAxNDYsIDExLCAKKyAgICA1LCAyMDgsIDE0NSwgMTEsIDUsIDIwOCwgMTU2LCAxMSwgNSwgMjA4LCAxNTQsIDExLCA1LCAyMDgsIDE3OSwgMTEsIDUsIAorICAgIDIwOCwgMTU3LCAxMSwgNSwgMjA4LCAxMzYsIDExLCA1LCAyMDgsIDEzNSwgMTEsIDUsIDIwOCwgMTM5LCAxMSwgNSwgMjA4LCAKKyAgICAxMzcsIDExLCA1LCAyMDgsIDE1MCwgMTEsIDUsIDIwOCwgMTUzLCAxMSwgNSwgMjA4LCAxNTEsIDExLCA1LCAyMDgsIDEzMiwgCisgICAgMTEsIDUsIDIwOCwgMTMwLCAxMSwgNSwgMjA4LCAxMzQsIDExLCA1LCAyMDgsIDEzMywgMTEsIDUsIDIwOCwgMTI1LCAxMSwgCisgICAgNSwgMjA4LCAxMjQsIDExLCA1LCAyMDgsIDEyOSwgMTEsIDUsIDIwOCwgMTI4LCAxMSwgNSwgMjA4LCAxMjYsIDExLCA1LCAKKyAgICAyMDgsIDEyNywgMTEsIDUsIDE5OSwgNzIsIDExLCA1LCAxOTksIDcxLCAxMSwgNSwgMTk5LCA3NywgMTEsIDUsIDE5OSwgNzQsIAorICAgIDExLCA1LCAxOTksIDUxLCAxMSwgNSwgMTk5LCA1MywgMTEsIDUsIDE5OSwgNTIsIDExLCA1LCAxOTksIDU2LCAxMSwgNSwgCisgICAgMTk5LCA1NSwgMTEsIDUsIDE5OSwgNjAsIDExLCA1LCAxOTksIDU3LCAxMSwgNSwgMTk5LCA2NSwgMTEsIDUsIDE5OSwgNjQsIAorICAgIDExLCA1LCAxOTksIDY4LCAxMSwgNSwgMTk5LCA2NiwgMTEsIDUsIDE5OSwgNDcsIDExLCA1LCAxOTksIDQ2LCAxMSwgNSwgCisgICAgMTk5LCA1NCwgMTEsIDUsIDE5OSwgNTAsIDExLCA1LCAxOTksIDQ4LCAxMSwgNSwgMTk5LCA0OSwgMTEsIDUsIDE5OSwgMzksIAorICAgIDExLCA1LCAxOTksIDM4LCAxMSwgNSwgMTk5LCA0MywgMTEsIDUsIDE5OSwgNDIsIDExLCA1LCAxOTksIDQwLCAxMSwgNSwgCisgICAgMTk5LCA0MSwgMTEsIDUsIDI0NywgMTQsIDExLCA1LCAyNDcsIDEwLCAxMSwgNSwgMjQ3LCAzNywgMTEsIDUsIDI0NywgMjMsIAorICAgIDExLCA1LCAyNDYsIDE4OCwgMTEsIDUsIDI0NiwgMTg3LCAxMSwgNSwgMjQ2LCAxOTAsIDExLCA1LCAyNDYsIDE4OSwgMTEsIAorICAgIDUsIDI0NiwgMjAzLCAxMSwgNSwgMjQ2LCAyMDIsIDExLCA1LCAyNDYsIDIxMCwgMTEsIDUsIDI0NiwgMjA1LCAxMSwgNSwgCisgICAgMjQ2LCAyNDEsIDExLCA1LCAyNDYsIDIzOSwgMTEsIDUsIDI0NywgOCwgMTEsIDUsIDI0NiwgMjQ5LCAxMSwgNSwgMjQ2LCAKKyAgICAxODIsIDExLCA1LCAyNDYsIDE5MiwgMTEsIDUsIDI0NiwgMTg2LCAxMSwgNSwgMjQ2LCAxODMsIDExLCA1LCAyNDYsIDE4NSwgCisgICAgMTEsIDUsIDI0NiwgMTc1LCAxMSwgNSwgMjQ2LCAxNzQsIDExLCA1LCAyNDYsIDE3OSwgMTEsIDUsIDI0NiwgMTc4LCAxMSwgCisgICAgNSwgMjQ2LCAxNzYsIDExLCA1LCAyNDYsIDE3NywgMTEsIDUsIDIxMiwgMjExLCAxMSwgNSwgMjEyLCAyMTUsIDExLCA1LCAKKyAgICAyMTIsIDE5MywgMTEsIDUsIDIxMiwgMTk0LCAxMSwgNSwgMjEyLCAxOTgsIDExLCA1LCAyMTIsIDE5NywgMTEsIDUsIDIxMiwgCisgICAgMjAxLCAxMSwgNSwgMjEyLCAxOTksIDExLCA1LCAyMTIsIDIwNSwgMTEsIDUsIDIxMiwgMjA0LCAxMSwgNSwgMjEyLCAyMTAsIAorICAgIDExLCA1LCAyMTIsIDIwNiwgMTEsIDUsIDIxMiwgMTg5LCAxMSwgNSwgMjEyLCAxODcsIDExLCA1LCAyMTIsIDE5NSwgMTEsIAorICAgIDUsIDIxMiwgMTkyLCAxMSwgNSwgMjEyLCAxOTAsIDExLCA1LCAyMTIsIDE5MSwgMTEsIDUsIDIxMiwgMTgyLCAxMSwgNSwgCisgICAgMjEyLCAxODEsIDExLCA1LCAyMTIsIDE4NiwgMTEsIDUsIDIxMiwgMTg1LCAxMSwgNSwgMjEyLCAxODMsIDExLCA1LCAyMTIsIAorICAgIDE4NCwgMTEsIDUsIDIxOCwgMTk0LCAxMSwgNSwgMjE4LCAxOTMsIDExLCA1LCAyMTgsIDE5NiwgMTEsIDUsIDIxOCwgMTk1LCAKKyAgICAxMSwgNSwgMjE4LCAxODUsIDExLCA1LCAyMTgsIDE4NywgMTEsIDUsIDIxOCwgMTg2LCAxMSwgNSwgMjE4LCAxODksIDExLCAKKyAgICA1LCAyMTgsIDE4OCwgMTEsIDUsIDIxOCwgMTkyLCAxMSwgNSwgMjE4LCAxOTEsIDExLCA1LCAyMTgsIDE3OSwgMTEsIDUsIAorICAgIDIxOCwgMTc4LCAxMSwgNSwgMjE4LCAxODQsIDExLCA1LCAyMTgsIDE4MiwgMTEsIDUsIDIxOCwgMTgwLCAxMSwgNSwgMjE4LCAKKyAgICAxODEsIDExLCA1LCAyMTgsIDE3MywgMTEsIDUsIDIxOCwgMTcyLCAxMSwgNSwgMjE4LCAxNzcsIDExLCA1LCAyMTgsIDE3NiwgCisgICAgMTEsIDUsIDIxOCwgMTc0LCAxMSwgNSwgMjE4LCAxNzUsIDExLCA1LCAyMTAsIDc1LCAxMSwgNSwgMjEwLCA3MCwgMTEsIDUsIAorICAgIDIxMCwgMTE0LCAxMSwgNSwgMjEwLCA4NywgMTEsIDUsIDIwOSwgMjA5LCAxMSwgNSwgMjA5LCAyMTEsIDExLCA1LCAyMDksIAorICAgIDIxMCwgMTEsIDUsIDIwOSwgMjM0LCAxMSwgNSwgMjA5LCAyMzAsIDExLCA1LCAyMTAsIDgsIDExLCA1LCAyMDksIDI1NCwgCisgICAgMTEsIDUsIDIxMCwgNDMsIDExLCA1LCAyMTAsIDM2LCAxMSwgNSwgMjEwLCA2NSwgMTEsIDUsIDIxMCwgNTIsIDExLCA1LCAKKyAgICAyMDksIDIwNSwgMTEsIDUsIDIwOSwgMjAyLCAxMSwgNSwgMjA5LCAyMjAsIDExLCA1LCAyMDksIDIwOCwgMTEsIDUsIDIwOSwgCisgICAgMjA2LCAxMSwgNSwgMjA5LCAyMDcsIDExLCA1LCAyMDksIDE4NSwgMTEsIDUsIDIwOSwgMTg0LCAxMSwgNSwgMjA5LCAxOTEsIAorICAgIDExLCA1LCAyMDksIDE4OCwgMTEsIDUsIDIwOSwgMTg2LCAxMSwgNSwgMjA5LCAxODcsIDExLCA1LCAyMTMsIDIwNCwgMTEsIAorICAgIDUsIDIxMywgMTk4LCAxMSwgNSwgMjEzLCAyNTIsIDExLCA1LCAyMTMsIDIxMCwgMTEsIDUsIDIxMiwgMTUxLCAxMSwgNSwgCisgICAgMjEyLCAxNTMsIDExLCA1LCAyMTIsIDE1MiwgMTEsIDUsIDIxMiwgMjI5LCAxMSwgNSwgMjEyLCAyMTcsIDExLCA1LCAyMTMsIAorICAgIDEsIDExLCA1LCAyMTIsIDIzMywgMTEsIDUsIDIxMywgOTgsIDExLCA1LCAyMTMsIDE5MCwgMTEsIDUsIDIxMywgMTM3LCAxMSwgCisgICAgNSwgMjEyLCAxNDQsIDExLCA1LCAyMTIsIDE0MSwgMTEsIDUsIDIxMiwgMTc1LCAxMSwgNSwgMjEyLCAxNTAsIDExLCA1LCAKKyAgICAyMTIsIDE0NiwgMTEsIDUsIDIxMiwgMTQ3LCAxMSwgNSwgMjEyLCAxMjYsIDExLCA1LCAyMTIsIDEyNSwgMTEsIDUsIDIxMiwgCisgICAgMTMxLCAxMSwgNSwgMjEyLCAxMjksIDExLCA1LCAyMTIsIDEyNywgMTEsIDUsIDIxMiwgMTI4LCAxMSwgNSwgMjI3LCAxOTYsIAorICAgIDExLCA1LCAyMjcsIDE5NSwgMTEsIDUsIDIyNywgMjA3LCAxMSwgNSwgMjI3LCAxOTcsIDExLCA1LCAyMjcsIDIwMywgMTEsIAorICAgIDUsIDIyNywgMjAyLCAxMSwgNSwgMjI3LCAyMDUsIDExLCA1LCAyMjcsIDIwNCwgMTEsIDUsIDIyNywgMTM2LCAxMSwgNSwgCisgICAgMjI3LCAxMzUsIDExLCA1LCAyMjcsIDEzOCwgMTEsIDUsIDIyNywgMTM3LCAxMSwgNSwgMjI3LCAxNTMsIDExLCA1LCAyMjcsIAorICAgIDE1MSwgMTEsIDUsIDIyNywgMTY2LCAxMSwgNSwgMjI3LCAxNTUsIDExLCA1LCAyMjcsIDEyOSwgMTEsIDUsIDIyNywgMTI3LCAKKyAgICAxMSwgNSwgMjI3LCAxNDcsIDExLCA1LCAyMjcsIDEzNCwgMTEsIDUsIDIyNywgMTMxLCAxMSwgNSwgMjI3LCAxMzIsIDExLCAKKyAgICA1LCAyMjcsIDEyMSwgMTEsIDUsIDIyNywgMTIwLCAxMSwgNSwgMjI3LCAxMjUsIDExLCA1LCAyMjcsIDEyNCwgMTEsIDUsIAorICAgIDIyNywgMTIyLCAxMSwgNSwgMjI3LCAxMjMsIDExLCA1LCAyMTQsIDExMywgMTEsIDUsIDIxNCwgMTExLCAxMSwgNSwgMjE0LCAKKyAgICAxMjEsIDExLCA1LCAyMTQsIDExNCwgMTEsIDUsIDIxNCwgMTE4LCAxMSwgNSwgMjE0LCAxMTcsIDExLCA1LCAyMTQsIDEyMCwgCisgICAgMTEsIDUsIDIxNCwgMTE5LCAxMSwgNSwgMjE0LCA2NCwgMTEsIDUsIDIxNCwgNjEsIDExLCA1LCAyMTQsIDY2LCAxMSwgNSwgCisgICAgMjE0LCA2NSwgMTEsIDUsIDIxNCwgMTAwLCAxMSwgNSwgMjE0LCA5OSwgMTEsIDUsIDIxNCwgMTA5LCAxMSwgNSwgMjE0LCAKKyAgICAxMDMsIDExLCA1LCAyMTQsIDU2LCAxMSwgNSwgMjE0LCA1MiwgMTEsIDUsIDIxNCwgOTcsIDExLCA1LCAyMTQsIDYwLCAxMSwgCisgICAgNSwgMjE0LCA1OCwgMTEsIDUsIDIxNCwgNTksIDExLCA1LCAyMTQsIDM2LCAxMSwgNSwgMjE0LCAzNCwgMTEsIDUsIDIxNCwgCisgICAgNDYsIDExLCA1LCAyMTQsIDM5LCAxMSwgNSwgMjE0LCAzNywgMTEsIDUsIDIxNCwgMzgsIDExLCA1LCAyMjcsIDE4NSwgMTEsIAorICAgIDUsIDIyNywgMTg0LCAxMSwgNSwgMjI3LCAxOTEsIDExLCA1LCAyMjcsIDE4NiwgMTEsIDUsIDIyNywgMTg4LCAxMSwgNSwgCisgICAgMjI3LCAxODcsIDExLCA1LCAyMjcsIDE5MCwgMTEsIDUsIDIyNywgMTg5LCAxMSwgNSwgMjI3LCAxNzYsIDExLCA1LCAyMjcsIAorICAgIDE3OCwgMTEsIDUsIDIyNywgMTc3LCAxMSwgNSwgMjI3LCAxODEsIDExLCA1LCAyMjcsIDE4MCwgMTEsIDUsIDIyNywgMTgzLCAKKyAgICAxMSwgNSwgMjI3LCAxODIsIDExLCA1LCAyMjcsIDE3MiwgMTEsIDUsIDIyNywgMTcxLCAxMSwgNSwgMjI3LCAxNzksIDExLCAKKyAgICA1LCAyMjcsIDE3NSwgMTEsIDUsIDIyNywgMTczLCAxMSwgNSwgMjI3LCAxNzQsIDExLCA1LCAyMjcsIDE2OCwgMTEsIDUsIAorICAgIDIyNywgMTY3LCAxMSwgNSwgMjI3LCAxNzAsIDExLCA1LCAyMjcsIDE2OSwgMTEsIDUsIDIxOSwgNzUsIDExLCA1LCAyMTksIAorICAgIDc0LCAxMSwgNSwgMjE5LCA4MiwgMTEsIDUsIDIxOSwgNzYsIDExLCA1LCAyMTksIDc4LCAxMSwgNSwgMjE5LCA3NywgMTEsIAorICAgIDUsIDIxOSwgODEsIDExLCA1LCAyMTksIDc5LCAxMSwgNSwgMjE5LCA2NCwgMTEsIDUsIDIxOSwgNjUsIDExLCA1LCAyMTksIAorICAgIDcwLCAxMSwgNSwgMjE5LCA2OSwgMTEsIDUsIDIxOSwgNzMsIDExLCA1LCAyMTksIDcxLCAxMSwgNSwgMjE5LCA1OSwgMTEsIAorICAgIDUsIDIxOSwgNjgsIDExLCA1LCAyMTksIDYzLCAxMSwgNSwgMjE5LCA2MCwgMTEsIDUsIDIxOSwgNjEsIDExLCA1LCAyMTksIAorICAgIDU0LCAxMSwgNSwgMjE5LCA1MywgMTEsIDUsIDIxOSwgNTgsIDExLCA1LCAyMTksIDU3LCAxMSwgNSwgMjE5LCA1NSwgMTEsIAorICAgIDUsIDIxOSwgNTYsIDExLCA1LCAyMTgsIDI5LCAxMSwgNSwgMjE4LCAyOCwgMTEsIDUsIDIxOCwgNDEsIDExLCA1LCAyMTgsIAorICAgIDMzLCAxMSwgNSwgMjE4LCAzOCwgMTEsIDUsIDIxOCwgMzcsIDExLCA1LCAyMTgsIDQwLCAxMSwgNSwgMjE4LCAzOSwgMTEsIAorICAgIDUsIDIxOCwgMTQsIDExLCA1LCAyMTgsIDE2LCAxMSwgNSwgMjE4LCAxNSwgMTEsIDUsIDIxOCwgMjEsIDExLCA1LCAyMTgsIAorICAgIDIwLCAxMSwgNSwgMjE4LCAyNiwgMTEsIDUsIDIxOCwgMjIsIDExLCA1LCAyMTgsIDEyLCAxMSwgNSwgMjE4LCAxMCwgMTEsIAorICAgIDUsIDIxOCwgMTksIDExLCA1LCAyMTgsIDEzLCAxMSwgNSwgMjAwLCAxNjEsIDExLCA1LCAyMDAsIDE2MCwgMTEsIDUsIDIwMCwgCisgICAgMTY5LCAxMSwgNSwgMjAwLCAxNjMsIDExLCA1LCAyMDAsIDE2NSwgMTEsIDUsIDIwMCwgMTY0LCAxMSwgNSwgMjAwLCAxNjcsIAorICAgIDExLCA1LCAyMDAsIDE2NiwgMTEsIDUsIDIwMCwgMTQ5LCAxMSwgNSwgMjAwLCAxNTAsIDExLCA1LCAyMDAsIDE1NCwgMTEsIAorICAgIDUsIDIwMCwgMTUzLCAxMSwgNSwgMjAwLCAxNTksIDExLCA1LCAyMDAsIDE1NywgMTEsIDUsIDIwMCwgMTI3LCAxMSwgNSwgCisgICAgMjAwLCAxMjUsIDExLCA1LCAyMDAsIDE0MCwgMTEsIDUsIDIwMCwgMTMwLCAxMSwgNSwgMjAwLCAxMjgsIDExLCA1LCAyMDAsIAorICAgIDEyOSwgMTEsIDUsIDE5OSwgMjUxLCAxMSwgNSwgMTk5LCAyNDksIDExLCA1LCAyMDAsIDksIDExLCA1LCAxOTksIDI1MiwgCisgICAgMTEsIDUsIDIwMCwgMywgMTEsIDUsIDIwMCwgMiwgMTEsIDUsIDIwMCwgNiwgMTEsIDUsIDIwMCwgNCwgMTEsIDUsIDE5OSwgCisgICAgMTg5LCAxMSwgNSwgMTk5LCAxODgsIDExLCA1LCAxOTksIDE5MiwgMTEsIDUsIDE5OSwgMTkwLCAxMSwgNSwgMTk5LCAyMjUsIAorICAgIDExLCA1LCAxOTksIDIyMSwgMTEsIDUsIDE5OSwgMjQ1LCAxMSwgNSwgMTk5LCAyMjksIDExLCA1LCAxOTksIDE4MCwgMTEsIAorICAgIDUsIDE5OSwgMTc2LCAxMSwgNSwgMTk5LCAyMTEsIDExLCA1LCAxOTksIDE4NywgMTEsIDUsIDE5OSwgMTgzLCAxMSwgNSwgCisgICAgMTk5LCAxODQsIDExLCA1LCAxOTksIDE2MCwgMTEsIDUsIDE5OSwgMTU5LCAxMSwgNSwgMTk5LCAxNjcsIDExLCA1LCAxOTksIAorICAgIDE2MywgMTEsIDUsIDE5OSwgMTYxLCAxMSwgNSwgMTk5LCAxNjIsIDExLCA0MiwgMjE0LCAxMDAsIDExLCA0MiwgMjI0LCAKKyAgICAyMTAsIDExLCA0MiwgMjI2LCAxMjcsIDExLCA0MiwgMjE4LCAzMywgMTEsIDQyLCAyNDIsIDE2MiwgMTEsIDQyLCAyMDgsIAorICAgIDE0NywgMTEsIDQyLCAyMzUsIDIxOCwgMTEsIDQyLCAyMzUsIDI1MCwgMTEsIDQyLCAyMjEsIDIxMSwgMTEsIDQyLCAyMzMsIAorICAgIDQ3LCAxMSwgNDIsIDIyMywgMjUwLCAxMSwgNDIsIDI0OSwgMTYsIDExLCA0MiwgMjIxLCA3OSwgMTEsIDQyLCAxOTksIDI0NSwgCisgICAgMTEsIDQyLCAyMTQsIDE5MiwgMTEsIDQyLCAyMzMsIDQxLCAxMSwgNDIsIDIwNiwgMjI2LCAxMSwgNDIsIDIzNiwgODksIDExLCAKKyAgICA0MiwgMTk4LCAyNTEsIDExLCA0MiwgMjQyLCAxNTYsIDExLCA0MiwgMjQxLCAxODAsIDExLCA0MiwgMjQ4LCAzLCAxMSwgNDIsIAorICAgIDIzNSwgMjE0LCAxMSwgNDIsIDIxOCwgMjIsIDExLCA0MiwgMjA0LCAyMTUsIDExLCA0MiwgMjE3LCA1NCwgMTEsIDQyLCAKKyAgICAyMjcsIDE3MiwgMTEsIDQyLCAxOTksIDEwLCAxMSwgNDIsIDIxNCwgMTcxLCAxMSwgNDIsIDIzMywgMjQ5LCAxMSwgNDIsIAorICAgIDE5OSwgMjUxLCAxMSwgNDIsIDIwMSwgMTYyLCAxMSwgNDIsIDIwOSwgMTkxLCAxMSwgNDIsIDIwMywgNDgsIDExLCA0MiwgCisgICAgMTk5LCAxMTQsIDExLCA0MiwgMjI3LCAxNjYsIDExLCA0MiwgMjE3LCAyNDIsIDExLCA0MiwgMjI3LCAxNzAsIDExLCA0MiwgCisgICAgMjM1LCA5NCwgMTEsIDQyLCAyMjcsIDE5MCwgMTEsIDQyLCAyMDEsIDAsIDExLCA0MiwgMjM5LCAxMzcsIDExLCA0MiwgMjA5LCAKKyAgICAyMDcsIDExLCA0MiwgMjI0LCAyMDQsIDExLCA0MiwgMjQyLCAxNjgsIDExLCA0MiwgMjQyLCAyMDUsIDExLCA0MiwgMjQ2LCAKKyAgICAxNTcsIDExLCA0MiwgMjMzLCA0NCwgMTEsIDQyLCAyMTAsIDc1LCAxMSwgNDIsIDE5OCwgMjUwLCAxMSwgNDIsIDIwOSwgCisgICAgMjU0LCAxMSwgNDIsIDI0NywgOCwgMTEsIDQyLCAxOTgsIDIyMCwgMTEsIDQyLCAyMjAsIDEwMSwgMTEsIDQyLCAyMjcsIDgsIAorICAgIDIyNCwgMTUzLCAxLCAyNDksIDEzNiwgMjI0LCAxNTMsIDEsIDE3MiwgMjI0LCAxNTMsIDEsIDIxNSwgMjQ1LCAyMjQsIDE1MywgCisgICAgMSwgMjQyLCA1OCwgMjI0LCAxNTMsIDEsIDIwNywgMzYsIDIyNCwgMTUzLCAxLCAyMDYsIDEyMiwgMjI0LCAxNTMsIDEsIAorICAgIDIzNiwgODksIDIyNCwgMTUzLCAxLCAxNjEsIDIyNCwgMTUzLCAxLCAyMjYsIDIwNywgMjI0LCAxNTMsIDEsIDIyNywgMjQ4LCAKKyAgICAyMjQsIDE1MywgMSwgMjQ3LCAxOTAsIDIyNCwgMTUzLCAxLCAyNDcsIDM3LCAyMjQsIDE1MywgMSwgMjM5LCA5MywgMjI0LCAKKyAgICAxNTMsIDEsIDIwNSwgMzIsIDIyNCwgMTUzLCAxLCAyMDUsIDIyLCAyMjQsIDE1MywgMSwgMTc4LCAyMjQsIDE1MywgMSwgCisgICAgMTg4LCAyMjQsIDE1MywgMSwgMTk0LCAyMjQsIDE1MywgMSwgMjEyLCA2NCwgMjI0LCAxNTMsIDEsIDE5OSwgNzcsIDIyNCwgCisgICAgMTUzLCAxLCAxOTksIDExNCwgMjI0LCAxNTMsIDEsIDIxOSwgMjUzLCAyMjQsIDE1MywgMSwgMTQ0LCAyMjQsIDE1MywgMSwgCisgICAgMjAwLCAxODEsIDIyNCwgMTUzLCAxLCAyMzQsIDg0LCAyMjQsIDE1MywgMSwgMjM3LCAxOTUsIDIyNCwgMTUzLCAxLCAyMDEsIAorICAgIDExNCwgMjI0LCAxNTMsIDEsIDIxMCwgMTE0LCAyMjQsIDE1MywgMSwgMTgzLCAyMjQsIDE1MywgMSwgMjM1LCAxOTksIDIyNCwgCisgICAgMTUzLCAxLCA2MiwgMjI0LCAxNTMsIDEsIDI1MSwgMjIxLCAyMjQsIDE1MywgMSwgNzIsIDIyNCwgMTUzLCAxLCAyMzgsIDY5LCAKKyAgICAyMjQsIDE1MywgMSwgNzAsIDIyNCwgMTUzLCAxLCA3NCwgMjI0LCAxNTMsIDEsIDY2LCAyMjQsIDE1MywgMSwgMjA0LCAzMSwgCisgICAgMjI0LCAxNTMsIDEsIDIwNCwgMjUsIDIyNCwgMTUzLCAxLCAyMTcsIDEyMSwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIAorICAgIDIwNiwgMTUsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMTYyLCAyMTUsIDEwNiwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAKKyAgICAyMjEsIDI0MiwgMTY3LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgMjQ4LCAxMjQsIDIyNCwgMTUzLCAxLCAxNTAsIAorICAgIDIyMCwgMjIxLCAxODgsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAyMjcsIDIxNiwgMjI0LCAxNTMsIDIxNCwgMjEyLCAKKyAgICAyNDYsIDcwLCAyMjQsIDE1MywgMjE0LCAyMTIsIDIzNiwgMTgzLCAyMDgsIDc2LCA1MCwgNSwgMjM4LCAyNTUsIDUwLCA1LCAKKyAgICAyMzgsIDI1MSwgNTAsIDUsIDIzNCwgMTIwLCA1MCwgNSwgMjAxLCA1NywgNTAsIDUsIDIwMSwgNTYsIDUwLCA1LCAyMTYsIAorICAgIDYxLCA1MCwgNSwgMjQ4LCAxOTUsIDUwLCA1LCAyNDgsIDI1MiwgNTAsIDUsIDIyMiwgMTAyLCA1MCwgNSwgMjI2LCA0NSwgCisgICAgNTAsIDUsIDIyMSwgMjQzLCA1MCwgNSwgMjM2LCAyOCwgNTAsIDUsIDIzNywgMTQwLCA1MCwgNSwgMjAzLCA1NCwgNTAsIDUsIAorICAgIDIwNiwgMTkwLCA1MCwgNSwgMjA2LCAxMDQsIDUwLCA1LCAyNDEsIDkwLCA1MCwgNSwgMjQxLCA4NywgNTAsIDUsIDIyNSwgCisgICAgMzIsIDUwLCA1LCAyMTMsIDE2NywgNTAsIDUsIDI0MSwgMTYxLCA1MCwgNSwgMjIwLCA2NiwgNTAsIDUsIDIxMSwgMTkwLCAKKyAgICA1MCwgNSwgMjEwLCA2MywgNTAsIDUsIDE5OSwgODcsIDUwLCA1LCAxOTksIDY3LCA1MCwgNSwgMjQ3LCA2OCwgNTAsIDUsIAorICAgIDIyNywgMjI1LCA1MCwgNSwgMjE5LCA4OSwgNTAsIDUsIDIwMCwgNDgsIDUwLCA1LCAyMjcsIDUsIDUwLCA1LCAyMTksIDIyNiwgCisgICAgNTAsIDUsIDIzNiwgNywgNTAsIDUsIDIyMiwgNjQsIDUwLCA1LCAyMjAsIDI5LCA1MCwgNSwgMjE4LCA0OSwgNTAsIDUsIDcwLCAKKyAgICA1MCwgNSwgMjI4LCAxMTcsIDUwLCA1LCAyMzQsIDc1LCA1MCwgNSwgMjM0LCA1MywgNTAsIDUsIDIwMSwgMzEsIDUwLCA1LCAKKyAgICAyMDEsIDE4LCA1MCwgNSwgMjE1LCAyMDQsIDUwLCA1LCAyNDgsIDE5MywgNTAsIDUsIDI0OCwgMTg4LCA1MCwgNSwgMjIyLCAKKyAgICA5NSwgNTAsIDUsIDIyNiwgNDIsIDUwLCA1LCAyMjEsIDI0MCwgNTAsIDUsIDIzNiwgMjQsIDUwLCA1LCAyMzcsIDExMiwgNTAsIAorICAgIDUsIDIwMiwgMjM0LCA1MCwgNSwgMjA2LCAxNSwgNTAsIDUsIDIwNiwgODQsIDUwLCA1LCAyNDEsIDgyLCA1MCwgNSwgMjQxLCAKKyAgICA4NiwgNTAsIDUsIDIyNCwgMjEwLCA1MCwgNSwgMjEzLCA4OCwgNTAsIDUsIDI0MSwgNzYsIDUwLCA1LCAyMjAsIDYwLCA1MCwgCisgICAgNSwgMjA5LCAxODIsIDUwLCA1LCAyMTAsIDMzLCA1MCwgNSwgMTk5LCAzNiwgNTAsIDUsIDE5OSwgNjMsIDUwLCA1LCAyNDYsIAorICAgIDE3MywgNTAsIDUsIDIyNywgMjA3LCA1MCwgNSwgMjE5LCA4MiwgNTAsIDUsIDIwMCwgOSwgNTAsIDUsIDIyNiwgMTYzLCA1MCwgCisgICAgNSwgMjE5LCAyMTgsIDUwLCA1LCAyMzUsIDE2MSwgNTAsIDUsIDIyMSwgMjExLCA1MCwgNSwgMjE5LCAxNTAsIDUwLCA1LCAKKyAgICAyMTgsIDQxLCA1MCwgNSwgNjIsIDUwLCA1LCAyNTEsIDg1LCA1MCwgNSwgMjE5LCAyNDgsIDUwLCA1LCAxNDQsIDUwLCA1LCAKKyAgICAyMzQsIDIwMiwgNTAsIDUsIDIwMSwgMTE0LCA1MCwgNSwgMjAxLCAxMDAsIDUwLCA1LCAxNzIsIDUwLCA1LCAyNDgsIDIwMCwgCisgICAgNTAsIDUsIDI0OSwgMTM2LCA1MCwgNSwgMjIyLCAxMTAsIDUwLCA1LCAyMjYsIDUwLCA1MCwgNSwgMjI2LCA0OCwgNTAsIDUsIAorICAgIDIyMSwgMjQ3LCA1MCwgNSwgMjM2LCAzMiwgNTAsIDUsIDIzNywgMTk1LCA1MCwgNSwgMjAzLCA5MCwgNTAsIDUsIDIwNywgCisgICAgMzYsIDUwLCA1LCAyMDYsIDEyMiwgNTAsIDUsIDI0MSwgMTAwLCA1MCwgNSwgMjQxLCA4OSwgNTAsIDUsIDE5NCwgNTAsIDUsIAorICAgIDIxMywgMjUyLCA1MCwgNSwgMjQyLCA1OCwgNTAsIDUsIDIyMCwgNzUsIDUwLCA1LCAyMTIsIDY0LCA1MCwgNSwgMjEwLCAKKyAgICAxMTQsIDUwLCA1LCAxOTksIDExNCwgNTAsIDUsIDE5OSwgNzcsIDUwLCA1LCAyNDcsIDE5MCwgNTAsIDUsIDIyNywgMjQ4LCAKKyAgICA1MCwgNSwgMjE5LCA5OCwgNTAsIDUsIDE4MywgNTAsIDUsIDE2MSwgNTAsIDUsIDIyNywgNjgsIDUwLCA1LCAyMTksIDIzMiwgCisgICAgNTAsIDUsIDIzNiwgODksIDUwLCA1LCAxNzgsIDUwLCA1LCAxODgsIDUwLCA1LCAyMTgsIDYwLCA1MCwgNSwgMjE3LCA2MywgCisgICAgNTAsIDUsIDIxNywgNTgsIDUwLCA1LCAyMzMsIDE4OCwgNTAsIDUsIDIwMCwgMjQ0LCA1MCwgNSwgMjAwLCAyNDAsIDUwLCA1LCAKKyAgICAyMTUsIDgxLCA1MCwgNSwgMjQ4LCAxOTEsIDUwLCA1LCAyNDgsIDExMSwgNTAsIDUsIDIyMiwgOTAsIDUwLCA1LCAyMjYsIAorICAgIDQwLCA1MCwgNSwgMjIxLCAyMzYsIDUwLCA1LCAyMzYsIDIwLCA1MCwgNSwgMjM3LCAyLCA1MCwgNSwgMjAyLCAxNzksIDUwLCAKKyAgICA1LCAyMDUsIDE2MSwgNTAsIDUsIDIwNiwgNTYsIDUwLCA1LCAyNDEsIDc5LCA1MCwgNSwgMjQxLCA4NCwgNTAsIDUsIDIyNCwgCisgICAgNzgsIDUwLCA1LCAyMTIsIDIzOCwgNTAsIDUsIDI0MCwgMTg3LCA1MCwgNSwgMjIwLCA0NywgNTAsIDUsIDIwOSwgMTAsIDUwLCAKKyAgICA1LCAyMTAsIDIsIDUwLCA1LCAxOTksIDEyLCA1MCwgNSwgMTk5LCA1OCwgNTAsIDUsIDI0MywgMzAsIDUwLCA1LCAyMjcsIAorICAgIDE1NiwgNTAsIDUsIDIxOSwgNzIsIDUwLCA1LCAxOTksIDIzMCwgNTAsIDUsIDIyNiwgNjgsIDUwLCA1LCAyMTksIDIxNiwgCisgICAgNTAsIDUsIDIzNSwgMTA1LCA1MCwgNSwgMjIxLCA4NywgNTAsIDUsIDIxOCwgMjI5LCA1MCwgNSwgMjE4LCAyMywgNTAsIDUsIAorICAgIDY2LCA1MCwgNSwgMjA0LCA1LCA1MCwgNSwgMjMzLCA5NywgNTAsIDUsIDIzMywgODQsIDUwLCA1LCAyMDAsIDIxNiwgNTAsIAorICAgIDUsIDIwMCwgMjA5LCA1MCwgNSwgMjE0LCAyMjQsIDUwLCA1LCAyNDgsIDE5MCwgNTAsIDUsIDI0OCwgMzYsIDUwLCA1LCAKKyAgICAyMjIsIDg5LCA1MCwgNSwgMjI2LCAzOCwgNTAsIDUsIDIyMSwgMjM1LCA1MCwgNSwgMjM2LCAxOSwgNTAsIDUsIDIzNiwgCisgICAgMTg5LCA1MCwgNSwgMjAxLCAxNjYsIDUwLCA1LCAyMDQsIDIxNSwgNTAsIDUsIDIwNiwgMzUsIDUwLCA1LCAyNDEsIDc3LCAKKyAgICA1MCwgNSwgMjQxLCA4MywgNTAsIDUsIDIyNCwgNDIsIDUwLCA1LCAyMTIsIDE3NSwgNTAsIDUsIDIzOSwgMTM3LCA1MCwgNSwgCisgICAgMjIwLCA0MiwgNTAsIDUsIDIwOCwgMjQsIDUwLCA1LCAyMDksIDIyMCwgNTAsIDUsIDE5OSwgMywgNTAsIDUsIDE5OSwgNTQsIAorICAgIDUwLCA1LCAyNDIsIDIxNCwgNTAsIDUsIDIyNywgMTQ3LCA1MCwgNSwgMjE5LCA2OCwgNTAsIDUsIDE5OSwgMjExLCA1MCwgNSwgCisgICAgMjI2LCAxNSwgNTAsIDUsIDIxOSwgMjE1LCA1MCwgNSwgMjM1LCA1MCwgNTAsIDUsIDIyMSwgNDEsIDUwLCA1LCAyMTgsIAorICAgIDEzMywgNTAsIDUsIDIxOCwgMTksIDUwLCA1LCA3NCwgNTAsIDUsIDIxNywgNzgsIDUwLCA1LCAyMTksIDE3NCwgNTAsIDUsIAorICAgIDIzMywgMjA3LCA1MCwgNSwgMjMzLCAxOTEsIDUwLCA1LCAyMDEsIDAsIDUwLCA1LCAyMDAsIDI0NSwgNTAsIDUsIDIxNSwgCisgICAgMTA2LCA1MCwgNSwgMjQ4LCAxOTIsIDUwLCA1LCAyNDgsIDEyNCwgNTAsIDUsIDIyMiwgOTEsIDUwLCA1LCAyMjYsIDQxLCAKKyAgICA1MCwgNSwgMjIxLCAyMzgsIDUwLCA1LCAyMzYsIDIyLCA1MCwgNSwgMjM2LCAyMSwgNTAsIDUsIDIzNywgMTMsIDUwLCA1LCAKKyAgICAyMDIsIDE5MywgNTAsIDUsIDEzOCwgNTAsIDUsIDIwNiwgNjEsIDUwLCA1LCAyNDEsIDgwLCA1MCwgNSwgMjQxLCA4NSwgNTAsIAorICAgIDUsIDIyNCwgMTEwLCA1MCwgNSwgMjEzLCAxLCA1MCwgNSwgMjQwLCAyMTEsIDUwLCA1LCAyMjAsIDUxLCA1MCwgNSwgMjA5LCAKKyAgICAyOSwgNTAsIDUsIDIxMCwgOCwgNTAsIDUsIDE5OSwgMTQsIDUwLCA1LCAxOTksIDYwLCA1MCwgNSwgMjQ2LCA5MSwgNTAsIDUsIAorICAgIDIyNywgMTY2LCA1MCwgNSwgMjE5LCA3MywgNTAsIDUsIDE5OSwgMjQ1LCA1MCwgNSwgMjI2LCA4OCwgNTAsIDUsIDIxOSwgCisgICAgMjE3LCA1MCwgNSwgMjM1LCAxMTYsIDUwLCA1LCAyMjEsIDEzNiwgNTAsIDUsIDIxOCwgMjQxLCA1MCwgNSwgMjE4LCAyNiwgCisgICAgNTAsIDUsIDcyLCA1MCwgNSwgMjM4LCAxNzksIDUwLCA1LCAyMTksIDIzNywgNTAsIDUsIDIzNCwgMTM5LCA1MCwgNSwgMjM0LCAKKyAgICAxMDUsIDUwLCA1LCAyMDEsIDY0LCA1MCwgNSwgMjAxLCA1MSwgNTAsIDUsIDIxNiwgNzMsIDUwLCA1LCAyNDgsIDE5NiwgNTAsIAorICAgIDUsIDI0OSwgOCwgNTAsIDUsIDIyMiwgMTAzLCA1MCwgNSwgMjI2LCA0NiwgNTAsIDUsIDIyNiwgNDQsIDUwLCA1LCAyMjEsIAorICAgIDI0NCwgNTAsIDUsIDIzNiwgMjksIDUwLCA1LCAyMzYsIDI3LCA1MCwgNSwgMjM3LCAxNDcsIDUwLCA1LCAyMDMsIDU5LCA1MCwgCisgICAgNSwgMjA2LCAyMDEsIDUwLCA1LCAyMDYsIDEwNiwgNTAsIDUsIDI0MSwgOTEsIDUwLCA1LCAyNDEsIDg4LCA1MCwgNSwgMjI1LCAKKyAgICA0MCwgNTAsIDUsIDIxMywgMTkwLCA1MCwgNSwgMjQxLCAxNzUsIDUwLCA1LCAyMjAsIDY3LCA1MCwgNSwgMjExLCAyMDIsIAorICAgIDUwLCA1LCAyMTAsIDY1LCA1MCwgNSwgMTk5LCA4OSwgNTAsIDUsIDE5OSwgNjgsIDUwLCA1LCAyNDcsIDc2LCA1MCwgNSwgCisgICAgMjI3LCAyMjcsIDUwLCA1LCAyMTksIDkxLCA1MCwgNSwgMjAwLCA1MSwgNTAsIDUsIDIyNywgOCwgNTAsIDUsIDIxOSwgMjI3LCAKKyAgICA1MCwgNSwgMjE5LCAyMjMsIDUwLCA1LCAyMzYsIDE1LCA1MCwgNSwgMjM2LCAxLCA1MCwgNSwgMjIyLCA3NiwgNTAsIDUsIAorICAgIDIyMCwgMzQsIDUwLCA1LCAyMTgsIDUwLCA1MCwgNSwgMjE5LCAyNTUsIDUwLCA1LCAyMjQsIDI1MCwgNTAsIDI0NiwgNzAsIAorICAgIDUwLCAyMzYsIDE4MywgMjA4LCA3NiwgNTAsIDIxNCwgNzksIDgxLCA1MCwgNSwgMjIwLCA1MCwgMjM3LCAxOTUsIDUwLCA1LCAKKyAgICAyMjAsIDUwLCAxNjEsIDUwLCA1LCAyMjAsIDUwLCAyMDksIDEwLCA1MCwgMTYsIDIzNywgMTM2LCA1MCwgMTYsIDIyNywgMywgCisgICAgNTAsIDE2LCAyMDUsIDIyOCwgNTAsIDE2LCAyMTksIDEyNSwgNTAsIDE2LCAyNDksIDgzLCA1MCwgMTYsIDIzNywgMTk0LCAKKyAgICA1MCwgMTYsIDIwNywgMzIsIDUwLCAxNiwgMjQyLCA4LCA1MCwgMTYsIDI0MCwgMTg2LCA1MCwgMTYsIDIyNSwgMjU1LCA1MCwgCisgICAgMTYsIDIwNSwgMTY1LCA1MCwgMTYsIDI0MCwgMjEwLCA1MCwgMTYsIDIyNywgMTU3LCA1MCwgMTcsIDE5OSwgODEsIDUwLCAKKyAgICAxNywgMTAyLCA1MCwgMTcsIDEwNSwgNTAsIDE3LCAxNDcsIDUwLCAxNywgMTQ5LCA1MCwgMTcsIDE2NCwgNTAsIDE3LCAxODcsIAorICAgIDUwLCAxNywgMjEwLCAxMzUsIDUwLCAxNywgMTkyLCA1MCwgMTcsIDIxOSwgMTEzLCA1MCwgNSwgMjIwLCA1MCwgMTc4LCA1MCwgCisgICAgNSwgMjIwLCA1MCwgMjQwLCAyMTEsIDM3LCA2LCAxLCAxOTksIDg1LCAzNywgNCwgMSwgMTk5LCA4NSwgMzcsIDYsIDEsIAorICAgIDIzOSwgODgsIDM3LCA0LCAxLCAyMzksIDg4LCAzNywgNiwgMSwgMjEzLCAxMDUsIDIzOSwgOTAsIDM3LCA0LCAxLCAyMTMsIAorICAgIDEwNSwgMjM5LCA5MCwgMzcsIDYsIDEsIDIyOCwgNDEsIDM3LCA0LCAxLCAyMjgsIDQxLCAzNywgNiwgMSwgMjQwLCAyMjcsIAorICAgIDM3LCA0LCAxLCAyNDAsIDIyNywgMzcsIDYsIDEsIDIyMSwgOTUsIDIwNCwgMjAsIDM3LCA0LCAxLCAyMjEsIDk1LCAyMDQsIAorICAgIDIwLCAzNywgNiwgMSwgMjQ4LCA0NywgMjE3LCA4MywgMzcsIDQsIDEsIDI0OCwgNDcsIDIxNywgODMsIDM3LCA2LCAxLCAKKyAgICAyMjAsIDEwLCAyMDAsIDMzLCAzNywgNCwgMSwgMjIwLCAxMCwgMjAwLCAzMywgMzcsIDYsIDEsIDIwMCwgMzAsIDMsIDI0OSwgCisgICAgMTMwLCAyMDAsIDMzLCAzNywgNCwgMSwgMjAwLCAzMCwgMywgMjQ5LCAxMzAsIDIwMCwgMzMsIDM3LCA2LCAxLCAyMjgsIDM5LCAKKyAgICAyMDAsIDY1LCAzNywgNCwgMSwgMjI4LCAzOSwgMjAwLCA2NSwgMzcsIDYsIDEsIDIxMywgMTA1LCAxOTksIDIxMSwgMzcsIDQsIAorICAgIDEsIDIxMywgMTA1LCAxOTksIDIxMSwgMzcsIDYsIDEsIDIyOCwgMzksIDYyLCAzNywgNCwgMSwgMjI4LCAzOSwgNjIsIDM3LCAKKyAgICA2LCAxLCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIAorICAgIDE4MSwgMzcsIDYsIDEsIDI0OCwgMTM2LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0OCwgMTM2LCAxOTksIDE4MSwgMzcsIDYsIAorICAgIDEsIDIyOCwgMzksIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAyMjgsIDM5LCAyNDYsIDExMCwgCisgICAgMjI0LCAxNDgsIDE5OSwgMTgxLCAzNywgNiwgMSwgMTk5LCAyNDcsIDM3LCA0LCAxLCAxOTksIDI0NywgMzcsIDYsIDEsIAorICAgIDIxMywgMTA1LCAyMDUsIDI2LCAzNywgNCwgMSwgMjEzLCAxMDUsIDIwNSwgMjYsIDM3LCA2LCAxLCAyMDksIDIzLCAyNDEsIAorICAgIDE3NSwgMzcsIDQsIDEsIDIwOSwgMjMsIDI0MSwgMTc1LCAzNywgNiwgMSwgMjA5LCAyMywgMjM4LCAyMDksIDM3LCA0LCAxLCAKKyAgICAyMDksIDIzLCAyMzgsIDIwOSwgMzcsIDYsIDEsIDIwOSwgMjMsIDIzOCwgMTkwLCAzNywgNCwgMSwgMjA5LCAyMywgMjM4LCAKKyAgICAxOTAsIDM3LCA2LCAxLCAyMjEsIDk5LCA3NCwgMzcsIDQsIDEsIDIyMSwgOTksIDc0LCAzNywgNiwgMSwgMjQ4LCAxNjUsIAorICAgIDc0LCAzNywgNCwgMSwgMjQ4LCAxNjUsIDc0LCAzNywgNiwgMSwgNTMsIDIyMSwgOTksIDc0LCAzNywgNCwgMSwgNTMsIDIyMSwgCisgICAgOTksIDc0LCAzNywgMSwgMjIxLCAyMiwgNzQsIDM4LCAzNywgMjAxLCAxNDksIDM4LCAzNywgMjA2LCAxNjcsIDIyMSwgMTY4LCAKKyAgICA1NCwgMzgsIDM3LCAyMzMsIDgzLCAyMjEsIDE2OCwgNTQsIDM4LCAzNywgMjA2LCA1MSwgMjIxLCAxNjgsIDU0LCAyMDksIAorICAgIDczLCAyNTAsIDE2NSwgMzgsIDM3LCAxLCAyMDQsIDE3LCAyMjgsIDE3OCwgMzgsIDM3LCAxLCA3MCwgMzgsIDM3LCAxLCAKKyAgICAyMDAsIDksIDM4LCAzNywgMSwgNjYsIDM4LCAzNywgMSwgMjM0LCAxNjUsIDU0LCAzOCwgMzcsIDEsIDIwMCwgMjksIDM4LCAKKyAgICAzNywgMSwgMjA5LCAyMywgNTQsIDM4LCAzNywgMSwgMjE3LCA4MywgMzgsIDM3LCAyMjcsIDIwLCAzOCwgMzcsIDIxNiwgODAsIAorICAgIDM3LCAyMjcsIDIwLCAzNywgMjE2LCA4MCwgMzcsIDYsIDEsIDIzOSwgMTAzLCAzNywgNCwgMSwgMjM5LCAxMDMsIDM3LCA2LCAKKyAgICAxLCAyMzksIDc5LCAzNywgNCwgMSwgMjM5LCA3OSwgMzcsIDYsIDEsIDE5OSwgNDQsIDM3LCA0LCAxLCAxOTksIDQ0LCAzNywgCisgICAgNiwgMSwgMjQ3LCA5MiwgMzcsIDQsIDEsIDI0NywgOTIsIDM3LCA2LCAxLCAyMzksIDc2LCAzNywgNCwgMSwgMjM5LCA3NiwgCisgICAgMzcsIDYsIDEsIDIwNiwgMjAyLCAzLCAxMDEsIDExNywgMzcsIDQsIDEsIDIwNiwgMjAyLCAzLCAxMDEsIDExNywgMzcsIDYsIAorICAgIDEsIDIwNCwgMTY4LCAzNywgNCwgMSwgMjA0LCAxNjgsIDM3LCA2LCAxLCAyMDUsIDEsIDM3LCA0LCAxLCAyMDUsIDEsIDM3LCAKKyAgICA2LCAxLCAyMDUsIDYsIDM3LCA0LCAxLCAyMDUsIDYsIDM3LCA2LCAxLCAyMDYsIDIwNywgMzcsIDQsIDEsIDIwNiwgMjA3LCAKKyAgICAzNywgNiwgMSwgMjMzLCA2NSwgMzcsIDQsIDEsIDIzMywgNjUsIDM3LCA2LCAxLCAyMDksIDE5NywgMzcsIDQsIDEsIDIwOSwgCisgICAgMTk3LCAzNywgNiwgMSwgNTMsIDc0LCAzNywgNCwgMSwgNTMsIDc0LCAzNywgNiwgMSwgMjQyLCAyMzIsIDc0LCAzNywgNCwgCisgICAgMSwgMjQyLCAyMzIsIDc0LCA2NywgMSwgMzcsIDIzNCwgMTY1LCA1NCwgNjcsIDEsIDM3LCAyMDksIDIzLCA1NCwgMzgsIDM3LCAKKyAgICAxLCAyMzgsIDI0OCwgMzgsIDM3LCAxLCAyMjgsIDM5LCA3MiwgMjUsIDEsIDYyLCAyNSwgMSwgMTYxLCAyNSwgMSwgNjYsIAorICAgIDI1LCAxLCAyMjYsIDE1LCAyNSwgMSwgMjM4LCAyNTUsIDI1LCAxLCAyMTMsIDE2NywgMjUsIDEsIDIwNywgMTUsIDI1LCAxLCAKKyAgICA3NCwgMjUsIDEsIDIxOCwgNDEsIDI1LCAxLCA3MCwgMjUsIDEsIDE5NCwgMjUsIDEsIDE3MiwgMjUsIDEsIDIxMywgMzMsIAorICAgIDI1LCAxLCAyMTMsIDgxLCAyNSwgMSwgMjI1LCAzMSwgMjUsIDEsIDIyMiwgNjMsIDI1LCAxLCAyMDcsIDMyLCAyNSwgMSwgCisgICAgMjIwLCA3MywgMjUsIDEsIDIxOSwgOTYsIDI1LCAxLCAyMjMsIDI0MywgMjUsIDEsIDIwNywgMTkzLCAyNSwgMSwgMjIxLCAKKyAgICA0MSwgMjUsIDEsIDIxMCwgMjgsIDI1LCAxLCAyMDksIDE4MiwgMjUsIDEsIDIxMCwgMzgsIDI1LCAxLCAyMTAsIDEzNywgMjUsIAorICAgIDEsIDIyNSwgMTk5LCAyNSwgMSwgMjI2LCAyMzMsIDI1LCAxLCAyMTgsIDEwNCwgMjUsIDEsIDIxOCwgMTMzLCAyNSwgMSwgCisgICAgMjE5LCA2NywgMjUsIDEsIDE5OSwgMjI3LCAyNSwgMSwgMjA5LCAyMjAsIDI1LCAxLCAxOTksIDE4NSwgMjUsIDEsIDE4MywgCisgICAgMjUsIDEsIDIxOCwgMTY3LCAyNSwgMSwgMjI2LCAyMTksIDI1LCAxLCAyMTUsIDI0OSwgMjUsIDEsIDIxOSwgODksIDI1LCAxLCAKKyAgICAyMTgsIDE0OCwgMjUsIDEsIDIxNCwgMjE2LCAyNSwgMSwgMjAwLCAyMTMsIDI1LCAxLCAyMTYsIDYxLCAyNSwgMSwgMjM3LCAKKyAgICAxNDAsIDI1LCAxLCAyMTIsIDE3NSwgMjUsIDEsIDIyNCwgNDIsIDI1LCAxLCAyMjEsIDIxMSwgMjUsIDEsIDIxOSwgMTUwLCAKKyAgICAyNSwgMSwgMjEzLCAxMDcsIDI1LCAxLCAyMTMsIDIzNCwgMjUsIDEsIDIyNiwgMjQzLCAyNSwgMSwgMjE5LCAxODEsIDI1LCAKKyAgICAxLCAyMTksIDIzMiwgMjUsIDEsIDIxOSwgMjUzLCAyNSwgMSwgMjEwLCA4LCAyNSwgMSwgMjE0LCAyMjEsIDI1LCAxLCAyMzYsIAorICAgIDE4OSwgMjUsIDEsIDIzNywgNiwgMjUsIDEsIDIwMSwgMTE0LCAyNSwgMSwgMTg4LCAyNSwgMSwgMjI0LCAyMTAsIDI1LCAxLCAKKyAgICAyMTUsIDIwNCwgMjUsIDEsIDIyNCwgNzAsIDI1LCAxLCAyMjYsIDg4LCAyNSwgMSwgMjIyLCAxMDAsIDI1LCAxLCAyMTMsIAorICAgIDEzOSwgMjUsIDEsIDIyMiwgNDAsIDI1LCAxLCAxNzgsIDI1LCAxLCAyMDYsIDE1LCAyNSwgMSwgMjI2LCAxNjMsIDI1LCAxLCAKKyAgICAyMjEsIDEzNiwgMjUsIDEsIDIyMiwgMTA4LCAyNSwgMSwgMjA2LCAxNDYsIDI1LCAxLCAyMjYsIDUwLCAyNSwgMSwgMjA2LCAKKyAgICAxNjYsIDI1LCAxLCAyMTgsIDEzNSwgMjUsIDEsIDIxMiwgMjEsIDI1LCAxLCAyMzcsIDE5MSwgMjUsIDEsIDIyNiwgNTIsIAorICAgIDI1LCAxLCAyMjYsIDgzLCAyNSwgMzgsIDEzNCwgMjI2LCA2MSwgMjUsIDM4LCAxMzQsIDIwNCwgMjA2LCAyNSwgMjE5LCA5NSwgCisgICAgMjUsIDIzNiwgMTgzLCAyMDgsIDc2LCAyNSwgMjQ2LCA3OSwgMjUsIDI0NiwgNzAsIDI1LCAyMTAsIDE2NywgMjUsIDIxNCwgCisgICAgNzksIDgxLCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgMTk5LCAyNTUsIDIxNSwgMTU2LCA2NywgMSwgMjQ2LCAyMjIsIDE1MCwgCisgICAgMjAwLCA3NiwgMjE1LCAxNTYsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjEwLCA4OCwgNjcsIDEsIDI0NiwgCisgICAgMjIyLCAxNTAsIDIwMCwgNzYsIDIxMCwgODgsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjE0LCA5NywgNjcsIAorICAgIDEsIDI0NiwgMjIyLCAxNTAsIDIwMCwgNzYsIDIxNCwgOTcsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjEyLCAKKyAgICAxNzUsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAyMDAsIDc2LCAyMTIsIDE3NSwgNjcsIDEsIDIzOCwgMjksIDIzOSwgMTgwLCAKKyAgICAxNTAsIDE0OCwgNjcsIDEsIDEyMiwgMjM5LCAxODAsIDE1MCwgMTQ4LCA2NywgMSwgMjIxLCAyMDYsIDIzOSwgMTgwLCAxNTAsIAorICAgIDE0OCwgNjcsIDEsIDEyOCwgMjM5LCAxODAsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM5LCAxODAsIDE1MCwgMTQ4LCAKKyAgICA2NywgMSwgMjM4LCAyOSwgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMzksIDE4MCwgMjI1LCAKKyAgICAyMCwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMjM5LCAxODAsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTI4LCAKKyAgICAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIAorICAgIDY3LCAxLCAyMzgsIDI5LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyMiwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAKKyAgICAyMjEsIDIwNiwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAKKyAgICAyOCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCA3MywgODMsIDE0OCwgNjcsIDEsIDczLCAyMDksIDc1LCA2NywgMSwgNzMsIAorICAgIDIzMywgMTc3LCAxNDgsIDY3LCAxLCAyMjQsIDU0LCA1MSwgMjQzLCAxNiwgMjUxLCA3MCwgNjcsIDEsIDIxMywgMjIwLCAKKyAgICAxMTUsIDQ4LCA2NywgMSwgMjEzLCAyMjAsIDEyNywgNDgsIDY3LCAxLCAyMTMsIDIyMCwgMjM4LCA0MywgODEsIDY3LCAxLCAKKyAgICAyMTMsIDIyMCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDY3LCAxLCAxMjgsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCA2NywgMSwgCisgICAgMjA4LCA1NywgMjYsIDEyMiwgMjA1LCAxNzQsIDY3LCAxLCAyMDgsIDU3LCAyNiwgMTI4LCAyMDUsIDE3NCwgOCwgNiwgMSwgCisgICAgMjM4LCAyNDMsIDI1MSwgMTQyLCA4LCA0LCAxLCAyMzgsIDI0MywgMjUxLCAxNDIsIDgsIDYsIDEsIDIzOCwgMjQzLCAyNTEsIAorICAgIDE3MSwgOCwgNCwgMSwgMjM4LCAyNDMsIDI1MSwgMTcxLCA4LCA2LCAxLCAyMzQsIDEwMywgOCwgNCwgMSwgMjM0LCAxMDMsIAorICAgIDgsIDYsIDEsIDIwNCwgMTE0LCA4LCA0LCAxLCAyMDQsIDExNCwgOCwgNiwgMSwgMjA1LCAxMDIsIDgsIDQsIDEsIDIwNSwgCisgICAgMTAyLCA4LCA2LCAxLCAyNDIsIDIxMSwgOCwgNCwgMSwgMjQyLCAyMTEsIDgsIDYsIDEsIDI0MiwgMjEyLCAzLCAyNDYsIDcwLCAKKyAgICA4LCA0LCAxLCAyNDIsIDIxMiwgMywgMjQ2LCA3MCwgOCwgMSwgNCwgNiwgMjM4LCA1LCA4LCAxLCA0LCA2LCAyMTIsIDEyMiwgCisgICAgOCwgNiwgMSwgMjUyLCAxMzgsIDgsIDQsIDEsIDI1MiwgMTM4LCA4LCA2LCAxLCAyNTEsIDMxLCA4LCA0LCAxLCAyNTEsIDMxLCAKKyAgICA4LCA2LCAxLCAyNTAsIDEzOSwgOCwgNCwgMSwgMjUwLCAxMzksIDgsIDYsIDEsIDI1MCwgMTIzLCA4LCA0LCAxLCAyNTAsIAorICAgIDEyMywgOCwgNiwgMSwgMjUwLCAxMjQsIDMsIDIzMywgMTc3LCAxNDgsIDgsIDQsIDEsIDI1MCwgMTI0LCAzLCAyMzMsIDE3NywgCisgICAgMTQ4LCA4LCA2LCAxLCAyNTAsIDExMiwgOCwgNCwgMSwgMjUwLCAxMTIsIDgsIDYsIDEsIDIxMywgMTA1LCAyNDcsIDIyNCwgCisgICAgMywgMjQwLCAxODIsIDgsIDQsIDEsIDIxMywgMTA1LCAyNDcsIDIyNCwgMywgMjQwLCAxODIsIDgsIDYsIDEsIDIyNywgMTE5LCAKKyAgICAzLCA5NywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDk3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIAorICAgIDEsIDIyNywgMTE5LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDIwOCwgNDcsIDI2LCAyNDEsIDcxLCAKKyAgICA5NywgOCwgNCwgMSwgMjI3LCAxMTksIDMsIDIwOCwgNDcsIDI2LCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjQ4LCA0NiwgCisgICAgMTU2LCA4LCA0LCAxLCAyNDgsIDQ2LCAxNTYsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAxMjIsIDk3LCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTIyLCA5NywgOCwgNiwgMSwgMTYzLCAzLCAxNjgsIDIwOCwgNDcsIDIxNiwgMjQyLCA4LCA0LCAxLCAxNjMsIAorICAgIDMsIDE2OCwgMjA4LCA0NywgMjE2LCAyNDIsIDgsIDYsIDEsIDE2MywgMywgMjI0LCA3NCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMjQsIDc0LCA4LCA2LCAxLCAyMTcsIDYzLCA4LCA0LCAxLCAyMTcsIDYzLCA4LCA2LCAxLCAyMTYsIDIyNywgMywgMjA4LCAKKyAgICA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgCisgICAgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDIzNywgMjYsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAyMzcsIDI2LCA4LCA2LCAxLCAKKyAgICAyMTYsIDIyNywgMywgMjA4LCAxODUsIDIwNywgNiwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgMTg1LCAyMDcsIDYsIDgsIAorICAgIDYsIDEsIDIxNCwgMTY4LCAzLCAyMDgsIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjE0LCAxNjgsIDMsIDIwOCwgCisgICAgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA2LCAxLCAyMTQsIDE2OCwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIxNCwgCisgICAgMTY4LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgMjE0LCAzMywgMjEyLCAyMjIsIDgsIDQsIDEsIDIxNCwgMzMsIDIxMiwgCisgICAgMjIyLCA4LCA2LCAxLCAyMTIsIDE2MiwgMjEyLCAyMjIsIDgsIDQsIDEsIDIxMiwgMTYyLCAyMTIsIDIyMiwgOCwgNiwgMSwgCisgICAgMjAzLCAxNjksIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIAorICAgIDIwMSwgMTU1LCA4LCA0LCAxLCAyMDEsIDE1NSwgOCwgNiwgMSwgMjAyLCAyMDEsIDE5OSwgMTU3LCA4LCA0LCAxLCAyMDIsIAorICAgIDIwMSwgMTk5LCAxNTcsIDgsIDYsIDEsIDIwNiwgNTUsIDMsIDk3LCA4LCA0LCAxLCAyMDYsIDU1LCAzLCA5NywgOCwgNiwgMSwgCisgICAgMjA2LCA1NSwgMywgMjA4LCA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDQsIDEsIDIwNiwgNTUsIDMsIDIwOCwgNDcsIAorICAgIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA2LCAxLCAyMDMsIDQ5LCA4LCA0LCAxLCAyMDMsIDQ5LCA4LCA2LCAxLCAyMzgsIDgxLCAKKyAgICA4LCA0LCAxLCAyMzgsIDgxLCA4LCA2LCAxLCAyMjgsIDI2LCA4LCA0LCAxLCAyMjgsIDI2LCA4LCA2LCAxLCAyNDMsIDY4LCAKKyAgICA4LCA0LCAxLCAyNDMsIDY4LCA2NywgMSwgMjAzLCAxOTcsIDgsIDQsIDEsIDIzOSwgMTI2LCA4LCA0LCAxLCAyMjQsIDI1LCAKKyAgICA4LCA0LCAxLCAyMjEsIDE1LCA4LCA0LCAxLCAyMTgsIDk2LCA4LCA0LCAxLCAyMTIsIDE2MSwgOCwgMSwgNCwgNiwgMjEyLCAKKyAgICAxNjEsIDgsIDQsIDEsIDIwNCwgMjAzLCA4LCA0LCAxLCAyMDQsIDEyLCA4LCA2LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgOCwgCisgICAgNCwgMSwgMjI4LCA3MSwgMjQyLCAxNTMsIDgsIDYsIDEsIDIyOCwgNzEsIDIzOCwgNSwgOCwgNCwgMSwgMjI4LCA3MSwgMjM4LCAKKyAgICA1LCA4LCA2LCAxLCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjA0LCAxODUsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCAKKyAgICA0LCAxLCAyMDQsIDE4NSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIwNCwgMTg1LCAxNTYsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAxNTYsIDgsIDYsIDEsIDIyOCwgNzEsIDE0NiwgOCwgNCwgMSwgMjI4LCA3MSwgMTQ2LCA4LCA2LCAxLCAyMjgsIDcxLCAKKyAgICAyMTIsIDEyMiwgOCwgNCwgMSwgMjI4LCA3MSwgMjEyLCAxMjIsIDgsIDYsIDEsIDIyOCwgNzEsIDIwNywgODMsIDgsIDQsIDEsIAorICAgIDIyOCwgNzEsIDIwNywgODMsIDY3LCAxLCAxMjgsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgNjcsIDEsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAyMDksIDI1MCwgMjM4LCAxMjIsIDU0LCA4LCA2LCAxLCAyMTIsIDI1LCA4LCA0LCAxLCAyMTIsIDI1LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgMjM0LCAyNDcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyMTMsIDExMSwgMjMzLCAxODcsIDI2LCAyNDgsIDIyNiwgOCwgCisgICAgMSwgMjA5LCAxMzIsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQxLCAxMTksIDgsIDQsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDE0OCwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDE0OCwgOCwgNCwgCisgICAgMSwgMjQ3LCAyMjQsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA2LCAKKyAgICAxLCA2OCwgMywgMjM3LCAyNiwgOCwgNCwgMSwgNjgsIDMsIDIzNywgMjYsIDgsIDYsIDEsIDIzOCwgNiwgMywgOTcsIDgsIDQsIAorICAgIDEsIDIzOCwgNiwgMywgOTcsIDgsIDYsIDEsIDIwMiwgMTg1LCAyNTEsIDIyMSwgOCwgNCwgMSwgMjAyLCAxODUsIDI1MSwgCisgICAgMjIxLCA4LCA2LCAxLCAyMDIsIDE4NSwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwMiwgMTg1LCAyMTcsIDEyMSwgOCwgNiwgMSwgCisgICAgMjAyLCAxODUsIDIwNCwgMzEsIDgsIDQsIDEsIDIwMiwgMTg1LCAyMDQsIDMxLCA4LCA2LCAxLCAyMzYsIDE1NywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDIxNywgMTM4LCA5NywgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDExNywgCisgICAgOCwgNiwgMSwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDYsIDEsIDEzNSwgMjM2LCAxNTYsIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyNDgsIDIyNiwgOCwgNiwgMSwgNCwgNiwgNzAsIDgsIDYsIDEsIDIwNCwgMTg1LCAyMjcsIDExOCwgOCwgNiwgMSwgMjA0LCAKKyAgICAxODUsIDIwNywgODMsIDgsIDYsIDEsIDIyNywgMjUyLCAzLCAyNDIsIDIzMCwgOCwgNiwgMSwgMjQ2LCAyMzYsIDgsIDYsIDEsIAorICAgIDI0OCwgMjA4LCA4LCA0LCAxLCAyNDgsIDIwOCwgOCwgNiwgMSwgMjE3LCA4MywgOCwgNCwgMSwgMjE3LCA4MywgOCwgMjM4LCAKKyAgICAxMjcsIDEsIDIwOSwgMTczLCA3MCwgNjcsIDEsIDYsIDIzNCwgMjQ4LCAzLCA5NywgNjcsIDEsIDQsIDMzLCAyMTcsIDEyMSwgCisgICAgOCwgMSwgNCwgNiwgMjA0LCAxODUsIDIyMywgMjQzLCA4LCAyMzgsIDEyNywgMSwgMjEzLCAxMDUsIDIzOCwgNSwgOCwgMjM4LCAKKyAgICAxMjcsIDEsIDIxMywgMTA1LCAyMTYsIDIyNiwgOCwgMjM4LCAxMjcsIDEsIDIyOCwgNTAsIDIyMywgMjQzLCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjMzLCAxOSwgMjI0LCA4MCwgOCwgMjM4LCAxMjcsIDEsIDI1MCwgMjM0LCAyMjMsIDI0MywgMjA3LCAxNjMsIAorICAgIDIyMCwgMTQ1LCAxLCA2MiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCA3MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyLCAyMzksIAorICAgIDEwNSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCA2NiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCA3MiwgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAxLCA3NCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyLCAyMzQsIDE1OSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjYsIAorICAgIDg4LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNiwgMTc4LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIzNSwgMTE2LCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIzNSwgMTcxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDI1MSwgMzMsIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjQ2LCA5MSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDYsIDIxMCwgMjA3LCAxNjMsIAorICAgIDIyMCwgMTQ1LCAxLCAyMjcsIDE2NiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjcsIDIwOSwgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAxLCAyMDQsIDIzMCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMDQsIDIzNiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAKKyAgICAyNDEsIDE5MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDEsIDE5OSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAxMzgsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjA2LCA2MSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyNDAsIDIxMSwgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyNDEsIDgwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxOCwgMjQxLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDIxNSwgMTA2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxNSwgMjE3LCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDI0OCwgMTI0LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0OCwgMTkyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIAorICAgIDIyMSwgMTM2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxMywgMSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMjQsIDExMCwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMTIsIDIwMSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMDksIDI5LCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDIzMywgMjA3LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCA2MiwgMjA3LCAxNjMsIDIyMCwgCisgICAgMTQ1LCAyMiwgMiwgNzAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCAKKyAgICA3MiwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgMjE3LCA2MywgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMTUsIDEwMSwgCisgICAgMjIyLCAxNDksIDIwNywgMTYzLCAyMjAsIDE0NSwgMjE1LCAxMDEsIDIyMiwgMTQ4LCAyMDcsIDE2MywgMjIwLCAxNDUsIAorICAgIDIxNSwgMTAxLCAyMjIsIDE0NywgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMTUsIDEwMSwgMjIyLCAxNDYsIDE1NywgMjI4LCAKKyAgICAxMDEsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAxNTcsIAorICAgIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTI2LCAyMTQsIDg1LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMDksIDk4LCAKKyAgICAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTEyLCAyMzgsIDIyNywgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDEyNiwgCisgICAgMjA5LCA5NywgMTU3LCAyMjgsIDEwMSwgMjE0LCA4OCwgODEsIDE1NywgMjI4LCAxMDEsIDIxNSwgMTMzLCA4MSwgMTU3LCAKKyAgICAyMjgsIDEwMSwgMjEyLCAxNDksIDgxLCAxNTcsIDIyOCwgMTAxLCAyMTQsIDg5LCA4MSwgMjE1LCAyNDEsIDEsIDE2MSwgCisgICAgMjE1LCAyNDEsIDEsIDIyNiwgMjA3LCAyMTUsIDI0MSwgMSwgMjM2LCA4OSwgMjE1LCAyNDEsIDEsIDIxOSwgMjUzLCAyMTUsIAorICAgIDI0MSwgMSwgMjQ3LCAxOTAsIDIxNSwgMjQxLCAxLCAyNDcsIDM3LCAyMTUsIDI0MSwgMSwgMjI3LCAyNDgsIDIxNSwgMjQxLCAKKyAgICAxLCAyMTgsIDYwLCAyMTUsIDI0MSwgMSwgMjA3LCAzNiwgMjE1LCAyNDEsIDEsIDIwNiwgMTIyLCAyMTUsIDI0MSwgMSwgCisgICAgMjQyLCA1OCwgMjE1LCAyNDEsIDEsIDE4OCwgMjE1LCAyNDEsIDEsIDE3MiwgMjE1LCAyNDEsIDEsIDIxNSwgMjQ1LCAyMTUsIAorICAgIDI0MSwgMSwgMjQ5LCAxMzYsIDIxNSwgMjQxLCAxLCAxNzgsIDIxNSwgMjQxLCAxLCAyMDUsIDMyLCAyMTUsIDI0MSwgMSwgCisgICAgMjA1LCAyMiwgMjE1LCAyNDEsIDEsIDIzOSwgOTMsIDIxNSwgMjQxLCAxLCAyMDEsIDExNCwgMjE1LCAyNDEsIDEsIDE5OSwgCisgICAgNzcsIDIxNSwgMjQxLCAxLCAxOTksIDExNCwgMjE1LCAyNDEsIDEsIDQsIDYyLCAyMTUsIDI0MSwgMSwgMTgzLCAyMTUsIAorICAgIDI0MSwgMSwgMjEzLCAyNTIsIDIxNSwgMjQxLCAxLCAxOTQsIDIxNSwgMjQxLCAxLCAyMTAsIDExNCwgMjE1LCAyNDEsIDEsIAorICAgIDIxMiwgNjQsIDIxNSwgMjQxLCAxLCAxNDQsIDIxNSwgMjQxLCAxLCA2MiwgMjE1LCAyNDEsIDEsIDcwLCAyMTUsIDI0MSwgMSwgCisgICAgNjYsIDIxNSwgMjQxLCAxLCA3MiwgMjE1LCAyNDEsIDEsIDc0LCAyMTUsIDI0MSwgMSwgMjE0LCAxNTksIDIxNSwgMjQxLCAxLCAKKyAgICAyMDAsIDE4MSwgMjE1LCAyNDEsIDEsIDIzNywgMTk1LCAyMTUsIDI0MSwgMSwgMjM1LCAyMzUsIDIxNSwgMjQxLCAxLCAyMzgsIAorICAgIDI1NSwgMjE1LCAyNDEsIDIwOCwgMTIsIDEsIDIwMSwgMTE0LCAyMTUsIDI0MSwgMjA4LCAxMiwgMSwgMTgzLCAyMTUsIDI0MSwgCisgICAgMSwgMjA0LCAyNTMsIDIxNSwgMjQxLCAxLCAyMDQsIDI0MSwgMjE1LCAyNDEsIDEsIDI0MSwgMjIwLCAyMTUsIDI0MSwgMSwgCisgICAgMjE5LCAyMSwgMjE1LCAyNDEsIDEsIDI1MSwgMTA5LCAxODMsIDIxNSwgMjQxLCAxLCAyMDIsIDE4OCwgMjEwLCAxMTQsIAorICAgIDIxNSwgMjQxLCAxLCAyMDIsIDE4OSwgMTQ0LCAyMTUsIDI0MSwgMSwgMjUwLCAxNzIsIDIzNywgMTk1LCAyMTUsIDI0MSwgCisgICAgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDIxNSwgMjQxLCAyMDcsIDIxNSwgMSwgMjEzLCAyNTIsIDIxNSwgMjQxLCAxLCAyNDcsIAorICAgIDE0OSwgMjE1LCAyNDEsIDIwOSwgMTM5LCAyMzQsIDEzNywgODEsIDIxNSwgMjQxLCA1MywgMjM0LCAxMzcsIDgxLCAyMTUsIAorICAgIDI0MSwgMTM0LCAyMTAsIDEwNiwgMjE1LCAyNDEsIDEzNCwgNTMsIDIxMCwgMTA2LCAyMTEsIDI0MSwgMiwgMjUxLCAzMywgCisgICAgMjExLCAyNDEsIDIsIDIwMiwgMjAzLCAyMTEsIDI0MSwgMSwgNjIsIDIxMSwgMjQxLCAxLCAyNTIsIDEzOCwgMjExLCAyNDEsIAorICAgIDEsIDcwLCAyMTEsIDI0MSwgMSwgMjI4LCAxNTEsIDIxMSwgMjQxLCAxLCA2NiwgMjExLCAyNDEsIDEsIDIwMywgMTgyLCAKKyAgICAyMTEsIDI0MSwgMSwgMTA5LCAxNDYsIDIxMSwgMjQxLCAxLCAxMDksIDIxMiwgMjE2LCAyMTEsIDI0MSwgMSwgMTA5LCAxNTYsIAorICAgIDIxMSwgMjQxLCAxLCAxMDksIDIyNCwgMTM5LCAyMTEsIDI0MSwgMSwgNzIsIDIxMSwgMjQxLCAxLCAyMzgsIDI1NSwgMjExLCAKKyAgICAyNDEsIDEsIDI1MSwgMTc2LCAyMTEsIDI0MSwgMSwgNzQsIDIxMSwgMjQxLCAxLCAyMTcsIDYzLCAyMTEsIDI0MSwgMSwgCisgICAgMjUwLCAxMzksIDIxMSwgMjQxLCAxLCAxNjEsIDIxMSwgMjQxLCAxLCAyMjYsIDIwNywgMjExLCAyNDEsIDEsIDIzNiwgODksIAorICAgIDIxMSwgMjQxLCAxLCAyMzUsIDE5OSwgMjExLCAyNDEsIDEsIDIxOSwgMjUzLCAyMTEsIDI0MSwgMSwgMjQ3LCAxOTAsIDIxMSwgCisgICAgMjQxLCAxLCAyNDcsIDM3LCAyMTEsIDI0MSwgMSwgMjI3LCAyNDgsIDIxMSwgMjQxLCAxLCAyMjcsIDIxNSwgMjExLCAyNDEsIAorICAgIDEsIDIxOCwgNjAsIDIxMSwgMjQxLCAxLCAyMDQsIDI1MywgMjExLCAyNDEsIDEsIDIwNCwgMjQxLCAyMTEsIDI0MSwgMSwgCisgICAgMjQxLCAyMjAsIDIxMSwgMjQxLCAxLCAyNDEsIDIwNCwgMjExLCAyNDEsIDEsIDIxOSwgMjEsIDIxMSwgMjQxLCAxLCAyMDcsIAorICAgIDM2LCAyMTEsIDI0MSwgMSwgMjA2LCAxMjIsIDIxMSwgMjQxLCAxLCAyNDIsIDU4LCAyMTEsIDI0MSwgMSwgMjQxLCAxMDAsIAorICAgIDIxMSwgMjQxLCAxLCAxODgsIDIxMSwgMjQxLCAxLCAxNzIsIDIxMSwgMjQxLCAxLCAyMTUsIDI0NSwgMjExLCAyNDEsIDEsIAorICAgIDI0OSwgMTM2LCAyMTEsIDI0MSwgMSwgMjQ4LCAyMDAsIDIxMSwgMjQxLCAxLCAxNzgsIDIxMSwgMjQxLCAxLCAxODMsIDIxMSwgCisgICAgMjQxLCAxLCAyMTMsIDI1MiwgMjExLCAyNDEsIDEsIDE5NCwgMjExLCAyNDEsIDEsIDIwMywgOTAsIDIxMSwgMjQxLCAxLCAKKyAgICAyMTAsIDExNCwgMjExLCAyNDEsIDEsIDIwOCwgMTc5LCAyMTEsIDI0MSwgMSwgMjEyLCA2NCwgMjExLCAyNDEsIDEsIDE0NCwgCisgICAgMjExLCAyNDEsIDEsIDIyNCwgMTM4LCAyMTEsIDI0MSwgMTExLCAyLCAyMzQsIDIzMSwgMjExLCAyNDEsIDIyLCAyLCAyNTIsIAorICAgIDEzOCwgMjExLCAyNDEsIDIyLCAyLCA3MCwgMjExLCAyNDEsIDIyLCAyLCAyMjgsIDE1MSwgMjExLCAyNDEsIDIyLCAyLCA2NiwgCisgICAgMjExLCAyNDEsIDIyLCAyLCAyMDMsIDE4MiwgMjExLCAyNDEsIDIyLCAyLCAxMDksIDE0NiwgMjExLCAyNDEsIDIyLCAyLCAKKyAgICAxMDksIDIxMiwgMjE2LCAyMTEsIDI0MSwgMjIsIDIsIDEwOSwgMTU2LCAyMTEsIDI0MSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIAorICAgIDIxMSwgMjQxLCAyMiwgMiwgNzIsIDIxMSwgMjQxLCAyMiwgMiwgMjM4LCAyNTUsIDIxMSwgMjQxLCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIxMSwgMjQxLCAyMiwgMiwgNzQsIDIxMSwgMjQxLCAyMiwgMiwgMjE3LCA2MywgMjExLCAyNDEsIDIyLCAyLCAyNTAsIAorICAgIDEzOSwgMjExLCAyNDEsIDIsIDIwMiwgMjA4LCAyMTEsIDI0MSwgMiwgMjQ3LCAxNDksIDIxMSwgMjQxLCAyNDIsIDEwLCAKKyAgICAyMTEsIDI0MSwgNTMsIDI0MiwgMTAsIDIxMSwgMjQxLCAxNywgMTk5LCA4MSwgMjExLCAyNDEsIDE3LCAxMDIsIDIxMSwgCisgICAgMjQxLCAxNywgMTA1LCAyMTEsIDI0MSwgMTcsIDE0NywgMjExLCAyNDEsIDE3LCAxNDksIDIxMSwgMjQxLCAxNywgMTY0LCAKKyAgICAyMTEsIDI0MSwgMTcsIDE4NywgMjExLCAyNDEsIDE3LCAyMTAsIDEzNSwgMjExLCAyNDEsIDE3LCAxOTIsIDIxMSwgMjQxLCAKKyAgICAxNywgMjE5LCAxMTMsIDM4LCA5NCwgMTcsIDE5OSwgODEsIDM4LCA5NCwgMTcsIDEwMiwgMzgsIDk0LCAxNywgMTA1LCAzOCwgCisgICAgOTQsIDE3LCAxNDcsIDM4LCA5NCwgMTcsIDE0OSwgMzgsIDk0LCAxNywgMTY0LCAzOCwgOTQsIDE3LCAxODcsIDM4LCA5NCwgCisgICAgMTcsIDIxMCwgMTM1LCAzOCwgOTQsIDE3LCAxOTIsIDM4LCA5NCwgMTcsIDIxOSwgMTEzLCAzOCwgOTQsIDEsIDYyLCAzOCwgCisgICAgOTQsIDEsIDY2LCAzOCwgOTQsIDEsIDE2MSwgMzgsIDk0LCAxLCAxODgsIDM4LCA5NCwgMSwgMTcyLCAzOCwgOTQsIDEsIAorICAgIDIxMywgMjUyLCAzOCwgOTQsIDEsIDIwMiwgMjM0LCAzOCwgOTQsIDIsIDI1MCwgMTIyLCA5NCwgMiwgMjA4LCAyNDMsIDI0NywgCisgICAgMTQ5LCA5NCwgMiwgMjQ3LCAxNTAsIDIwMiwgMjA4LCA5NCwgMiwgNTMsIDI0NywgMTUwLCAyMDIsIDIwOCwgOTQsIDIsIAorICAgIDI0NywgMTUwLCAxMDUsIDk0LCAyLCAyNDcsIDE1MCwgMTQ3LCA5NCwgMiwgMjQ3LCAxNTAsIDI1MCwgMTIyLCA5NCwgMiwgCisgICAgMjE0LCAxOTUsIDk0LCAyMzYsIDUzLCAyMzcsIDkzLCA5NCwgMjQ3LCAxMjksIDk0LCAyMzQsIDEzMCwgOTQsIDIsIDIwOSwgCisgICAgMTc3LCA5NCwgMjI3LCAyNDAsIDIxNywgODYsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTk5LCA4MSwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDE3LCAxMDIsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTA1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE0NywgCisgICAgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNDksIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTY0LCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMTcsIDE4NywgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAyMTAsIDEzNSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAKKyAgICAxOTIsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMjE5LCAxMTMsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNjEsIDIyNywgMTQsIAorICAgIDIyNCwgMjExLCAxLCAyMjYsIDIwNywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIzNiwgODksIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAxLCAyMTksIDI1MywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMiwgNjQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTAsIAorICAgIDExNCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE5OSwgMTE0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjE4LCA2MCwgMjI3LCAKKyAgICAxNCwgMjI0LCAyMTEsIDEsIDIwNywgMzYsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMzMsIDEwMSwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDEsIDE4OCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE3MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxNSwgMjQ1LCAKKyAgICAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTc4LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjQyLCA1OCwgMjI3LCAxNCwgMjI0LCAKKyAgICAyMTEsIDEsIDI0OSwgMTM2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEzLCAyNTIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAKKyAgICAxODMsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxOTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMDEsIDExNCwgMjI3LCAxNCwgCisgICAgMjI0LCAyMTEsIDEsIDIwNiwgMTIyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTQ0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgCisgICAgMjAzLCA5MCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDI0NywgMTkwLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgNjIsIDIyNywgCisgICAgMTQsIDIyNCwgMjExLCAxLCAyMTcsIDEyMSwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDcwLCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMSwgMjE3LCA2MywgMjI3LCAxNCwgMjI0LCAyMTEsIDIyLCAyMDQsIDMxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDcyLCAKKyAgICAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDY2LCAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDIzOCwgMjU1LCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMjIsIDc0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAyMTUsIDEyMSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgCisgICAgMjQ3LCAxNjUsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIDI0NywgMTY2LCAyMTUsIDEyMSwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDIsIDI0MiwgMTcyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMiwgMjA5LCAxOTAsIDIxMywgMTUxLCAxLCAxNjEsIDIxMywgMTUxLCAKKyAgICAxLCAyMzYsIDg5LCAyMTMsIDE1MSwgMSwgMjE5LCAyNTMsIDIxMywgMTUxLCAxLCAyMDcsIDM2LCAyMTMsIDE1MSwgMSwgCisgICAgMjQyLCA1OCwgMjEzLCAxNTEsIDEsIDE4OCwgMjEzLCAxNTEsIDEsIDE3MiwgMjEzLCAxNTEsIDEsIDI0OSwgMTM2LCAyMTMsIAorICAgIDE1MSwgMSwgMTc4LCAyMTMsIDE1MSwgMSwgMjQ3LCAxOTAsIDIxMywgMTUxLCAxLCAyMjcsIDI0OCwgMjEzLCAxNTEsIDEsIAorICAgIDIxOCwgNjAsIDIxMywgMTUxLCAxLCAyMTIsIDY0LCAyMTMsIDE1MSwgMSwgMjEzLCAyNTIsIDIxMywgMTUxLCAxLCAxOTQsIAorICAgIDIxMywgMTUxLCAxLCAxODMsIDIxMywgMTUxLCAxLCAyMDEsIDExNCwgMjEzLCAxNTEsIDEsIDE0NCwgMjEzLCAxNTEsIDEsIAorICAgIDIyMiwgMTEwLCAyMTMsIDE1MSwgMSwgMjE5LCAyMzIsIDIxMywgMTUxLCAxLCAyMjAsIDc1LCAyMTMsIDE1MSwgMSwgMjE4LCAKKyAgICAyNywgMjEzLCAxNTEsIDEsIDYyLCAyMTMsIDE1MSwgMjIsIDIsIDcwLCAyMTMsIDE1MSwgMjIsIDIsIDY2LCAyMTMsIDE1MSwgCisgICAgMjIsIDIsIDcyLCAyMTMsIDE1MSwgMjIsIDIsIDI1MSwgMTc2LCAyMTMsIDE1MSwgMjIsIDIsIDc0LCAyMTMsIDE1MSwgMjIsIAorICAgIDIsIDI1MCwgMTM5LCAyMTMsIDE1MSwgMjIsIDIsIDIzOCwgNjksIDIxMywgMTUxLCAyMiwgMiwgMjM5LCAyNywgMjEzLCAKKyAgICAxNTEsIDExMSwgMiwgMjE5LCAyNTUsIDIxMywgMTUxLCAxMTEsIDIsIDIyMCwgMjE0LCAyMTMsIDE1MSwgMTExLCAyLCAxNDYsIAorICAgIDIxMywgMTUxLCAxMTEsIDIsIDIzNCwgMjQ3LCAyMTMsIDE1MSwgMjAyLCAyMDgsIDIxMywgMTUxLCAyMTEsIDE5MywgODEsIAorICAgIDI5LCAxMjksIDIwNSwgMjQ5LCAyOSwgMTI5LCAyMDUsIDI0OCwgMjksIDEyOSwgMjA1LCAyNDYsIDI5LCAxMjksIDIwNSwgCisgICAgMjUxLCAyOSwgMTI5LCAyMTMsIDczLCAyOSwgMTI5LCAyMTMsIDU3LCAyOSwgMTI5LCAyMTMsIDUyLCAyOSwgMTI5LCAyMTMsIAorICAgIDU0LCAyOSwgMTI5LCAyMTMsIDcwLCAyOSwgMTI5LCAyMTMsIDYzLCAyOSwgMTI5LCAyMTMsIDU2LCAyOSwgMTI5LCAyMTMsIAorICAgIDc1LCAyOSwgMTI5LCAyMTMsIDU4LCAyOSwgMTI5LCAyMTMsIDc3LCAyOSwgMTI5LCAyMTMsIDc0LCAyOSwgMTI5LCAyMjEsIAorICAgIDE5MywgMjksIDEyOSwgMjIxLCAxODQsIDI5LCAxMjksIDIyMSwgMTg3LCAyOSwgMTI5LCAyMTUsIDE3NSwgMjksIDEyOSwgCisgICAgMjE1LCAxODYsIDI5LCAxMjksIDIxNSwgMTg3LCAyOSwgMTI5LCAyMDgsIDE2MywgMjksIDEyOSwgMjI4LCAxNjQsIDI5LCAKKyAgICAxMjksIDIyOCwgMTcxLCAyOSwgMTI5LCAyMDgsIDE3NCwgMjksIDEyOSwgMjA4LCAxNjEsIDI5LCAxMjksIDIxNSwgMjI2LCAKKyAgICAyOSwgMTI5LCAyMzQsIDYxLCAyOSwgMTI5LCAyMDgsIDE1OCwgMjI3LCAyMzMsIDIsIDIxNiwgMTQxLCAyMjcsIDIzMywgMiwgCisgICAgMjQ3LCA3MywgMjI3LCAyMzMsIDIsIDIyNSwgNDgsIDIyNywgMjMzLCAyLCAyMDEsIDIxLCAyMjcsIDIzMywgMSwgNjIsIAorICAgIDIyNywgMjMzLCAxLCAyMzMsIDE5LCAyMjcsIDE4LCAyMjcsIDIzMywgMSwgNzAsIDIyNywgMjMzLCAxLCAyMjgsIDE1MSwgCisgICAgMjI3LCAyMzMsIDEsIDY2LCAyMjcsIDIzMywgMSwgMjE2LCAyMTEsIDI0NywgNDMsIDIyNywgMjMzLCAxLCAyMTksIDI1NCwgCisgICAgMjI1LCA3LCAyMjcsIDIzMywgMSwgMjE5LCAyNTQsIDIyNSwgOCwgMjEzLCAyMDUsIDIyNywgMjMzLCAxLCA3MiwgMjI3LCAKKyAgICAyMzMsIDEsIDI1MSwgMTc2LCAyMjcsIDIzMywgMSwgNzQsIDIyNywgMjMzLCAxLCAxNjEsIDIyNywgMjMzLCAxLCAyMjcsIAorICAgIDEwOCwgMjExLCAyNTMsIDIyNywgMjMzLCAxLCAyMjcsIDEwOCwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjM2LCA4OSwgMjI3LCAKKyAgICAyMzMsIDEsIDIzNiwgOTAsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIxOSwgMjUzLCAyMjcsIDIzMywgMSwgMjQ3LCAxOTAsIAorICAgIDIyNywgMjMzLCAxLCAyNDcsIDE5MSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjI3LCAyNDgsIDIyNywgMjMzLCAxLCAyMTgsIAorICAgIDYxLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMjcsIDI0OSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyMTgsIDYwLCAyMjcsIAorICAgIDIzMywgMSwgMjA0LCAyNTMsIDIyNywgMjMzLCAxLCAyMDQsIDI1NCwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAyNDEsIDIyMCwgCisgICAgMjI3LCAyMzMsIDEsIDI0MSwgMjIxLCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDIyMCwgMTYyLCAyMjEsIDAsIDIyNywgMjMzLCAKKyAgICAxLCAyMDcsIDM2LCAyMjcsIDIzMywgMSwgMjA3LCAzNywgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjQyLCA1OCwgMjI3LCAyMzMsIAorICAgIDEsIDI0MiwgNTksIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMTg4LCAyMjcsIDIzMywgMSwgMTcyLCAyMjcsIDIzMywgMSwgCisgICAgMjE2LCAyMTEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDI0OSwgMTM2LCAyMjcsIDIzMywgMSwgMjQ5LCAxMzcsIDIyMSwgMCwgCisgICAgMjI3LCAyMzMsIDEsIDE3OCwgMjI3LCAyMzMsIDEsIDE4MywgMjI3LCAyMzMsIDEsIDIxMywgMjUyLCAyMjcsIDIzMywgMSwgCisgICAgMjEzLCAyNTMsIDI1MSwgMTg2LCAyMjcsIDIzMywgMSwgMTk0LCAyMjcsIDIzMywgMSwgMjAxLCAxMTQsIDIyNywgMjMzLCAxLCAKKyAgICAyMTIsIDY1LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMTIsIDY1LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDIxMiwgNjQsIAorICAgIDIyNywgMjMzLCAxLCAxNDQsIDIyNywgMjMzLCAyLCAyNDcsIDc0LCAyMDYsIDE2OSwgMjI3LCAyMzMsIDIyLCAyLCAyMDYsIAorICAgIDIyOCwgMjI3LCAyMzMsIDIyLCAyLCAyMDUsIDE3OSwgMjI3LCAyMzMsIDIyLCAyLCAyMDAsIDIxMCwgMjI3LCAyMzMsIDIyLCAKKyAgICAyLCAyMDAsIDIxMSwgMjIyLCA1MSwgMjI3LCAyMzMsIDIyLCAyLCAyMDcsIDIzOCwgMjI3LCAyMzMsIDIyLCAyLCAyMDcsIAorICAgIDIzOSwgMjIyLCAzOSwgMjI3LCAyMzMsIDIyLCAyLCAyMDYsIDI0OSwgMjI3LCAyMzMsIDIyLCAyLCAyNDEsIDYsIDIyMCwgCisgICAgMjU1LCAyMjcsIDIzMywgMjIsIDIsIDIxNiwgMzAsIDIyNywgMjMzLCAxMTEsIDIsIDIyNiwgMjM2LCAyMjcsIDIzMywgMTExLCAKKyAgICAyLCAyMTYsIDQ0LCAyMjcsIDIzMywgMTExLCAyLCAyNDcsIDE3NSwgMjI3LCAyMzMsIDIxNiwgMTU0LCAyMjcsIDIzMywgNDksIAorICAgIDIxMywgMTI1LCAyMjcsIDIzMywgNTEsIDIxMywgMTI1LCAyMjcsIDIzMywgMjE2LCAyMDAsIDI1MSwgNzgsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjIyLCAyMjAsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjI0LCAyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMDEsIAorICAgIDE0LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIxNiwgMTU1LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIyNCwgMTY4LCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyNCwgMjMsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjUxLCAyMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjUxLCAKKyAgICAyMzAsIDI1MSwgMjI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIxNSwgMTQ0LCAyMjcsIDIzMywgMjA0LCAxODUsIDIxNiwgCisgICAgMjAwLCAyMTUsIDE0NCwgMjI3LCAyMzMsIDIxNiwgMTUwLCAyMjcsIDIzMywgMTcsIDE5OSwgODEsIDIyNywgMjMzLCAxNywgCisgICAgMTAyLCAyMjcsIDIzMywgMTcsIDEwNSwgMjI3LCAyMzMsIDE3LCAxNDcsIDIyNywgMjMzLCAxNywgMTQ5LCAyMjcsIDIzMywgCisgICAgMTcsIDE2NCwgMjI3LCAyMzMsIDE3LCAxODcsIDIyNywgMjMzLCAxNywgMjEwLCAxMzUsIDIyNywgMjMzLCAxNywgMTkyLCAKKyAgICAyMjcsIDIzMywgMTcsIDIxOSwgMTEzLCAyMjcsIDIzMywgMjE2LCAyMDAsIDIwNSwgMjE1LCAyMDQsIDIwMCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjgsIDIyLCA3MSwgMSwgMjEwLCA5MCwgMjM1LCAxOTksIDcxLCAxLCAyMTAsIDkwLCAyNDcsIDM3LCA3MSwgCisgICAgMSwgMjEwLCA5MCwgMjI3LCAyMTUsIDcxLCAxLCAyMTAsIDkwLCAyMTksIDIxLCA3MSwgMSwgMjEwLCA5MCwgMjQ4LCAyMDAsIAorICAgIDcxLCAyLCAyMTAsIDkwLCAyMTEsIDIzOSwgNzEsIDY3LCAxLCAyMTAsIDkwLCAyMTMsIDE2OCwgNzEsIDEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMjE4LCA2MCwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM3LCAxOTUsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIzNiwgCisgICAgODksIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIzNSwgMTk5LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMjcsIDI0OCwgNzEsIDEsIAorICAgIDQ2LCAyMjUsIDE0OCwgMjI3LCAyMTUsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0MSwgMjIwLCA3MSwgMSwgNDYsIDIyNSwgCisgICAgMTQ4LCAyNDEsIDIwNCwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjE5LCAyMSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE5OSwgCisgICAgODEsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxMDIsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxMDUsIDcxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDE3LCAxNDcsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxNDksIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAxNjQsIDcxLCAKKyAgICA0NiwgMjI1LCAxNDgsIDE3LCAxODcsIDcxLCA0NiwgMjI1LCAxNDgsIDE3LCAyMTAsIDEzNSwgNzEsIDQ2LCAyMjUsIDE0OCwgCisgICAgMTcsIDE5MiwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDIxOSwgMTEzLCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMjQsIDEzOCwgCisgICAgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQyLCA1OCwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQxLCAxMDAsIDcxLCAxLCA0NiwgCisgICAgMjI1LCAxNDgsIDI0OSwgMTM2LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDgsIDIwMCwgMjQ3LCAzMCwgMSwgNjIsIDI0NywgCisgICAgMzAsIDEsIDcwLCAyNDcsIDMwLCAxLCA2NiwgMjQ3LCAzMCwgMSwgNzIsIDI0NywgMzAsIDEsIDI1MSwgMTc2LCAyNDcsIDMwLCAKKyAgICAxLCA3NCwgMjQ3LCAzMCwgMSwgMTYxLCAyNDcsIDMwLCAxLCAyMjYsIDIwNywgMjQ3LCAzMCwgMSwgMjM2LCA4OSwgMjQ3LCAKKyAgICAzMCwgMSwgMjM1LCAxOTksIDI0NywgMzAsIDEsIDIxOSwgMTYyLCAyNDcsIDMwLCAxLCAyMTksIDI1MywgMjQ3LCAzMCwgMSwgCisgICAgMjQ3LCAzNywgMjQ3LCAzMCwgMSwgMjQ2LCAyMzgsIDI0NywgMzAsIDEsIDIyNywgMjQ4LCAyNDcsIDMwLCAxLCAyMjcsIAorICAgIDIxNSwgMjQ3LCAzMCwgMSwgMjE5LCAxNTIsIDI0NywgMzAsIDEsIDIxOSwgMTU0LCAyNDcsIDMwLCAxLCAyMTksIDE1MywgCisgICAgMjQ3LCAzMCwgMSwgMjA3LCAzNiwgMjQ3LCAzMCwgMSwgMjA2LCAxMjIsIDI0NywgMzAsIDEsIDI0MiwgNTgsIDI0NywgMzAsIAorICAgIDEsIDI0MSwgMTAwLCAyNDcsIDMwLCAxLCAyMTgsIDEwMiwgMjQ3LCAzMCwgMSwgMTg4LCAyNDcsIDMwLCAxLCAyNDEsIDIyMCwgCisgICAgMjQ3LCAzMCwgMSwgMTcyLCAyNDcsIDMwLCAxLCAyMTUsIDQ3LCAyNDcsIDMwLCAxLCAyMTUsIDI0NSwgMjQ3LCAzMCwgMSwgCisgICAgMjQ5LCAxMzYsIDI0NywgMzAsIDEsIDI0OCwgMjAwLCAyNDcsIDMwLCAxLCAyMjEsIDMzLCAyNDcsIDMwLCAxLCAxNzgsIAorICAgIDI0NywgMzAsIDEsIDI0OSwgNDQsIDI0NywgMzAsIDEsIDE4MywgMjQ3LCAzMCwgMSwgMjEzLCAyNTIsIDI0NywgMzAsIDEsIAorICAgIDE5NCwgMjQ3LCAzMCwgMSwgMjAzLCA5MCwgMjQ3LCAzMCwgMSwgMjA4LCAxNzksIDI0NywgMzAsIDEsIDIxMiwgNjQsIDI0NywgCisgICAgMzAsIDEsIDE0NCwgMjQ3LCAzMCwgMjIsIDIsIDI1MiwgMTM4LCAyNDcsIDMwLCAyMiwgMiwgNzAsIDI0NywgMzAsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMjQ3LCAzMCwgMjIsIDIsIDIzOCwgMjM0LCAyNDcsIDMwLCAyMiwgMiwgNjYsIDI0NywgMzAsIDIyLCAyLCAKKyAgICAyMTcsIDEyMSwgMjQ3LCAzMCwgMjIsIDIsIDc0LCAyNDcsIDMwLCAyMiwgMiwgMjUxLCAxNzYsIDI0NywgMzAsIDIyLCAyLCAKKyAgICAyNTAsIDEzOSwgMjQ3LCAzMCwgMjIsIDIsIDIwNCwgMzEsIDI0NywgMzAsIDExMSwgMiwgMTgzLCAyNDcsIDMwLCAxMTEsIDIsIAorICAgIDIxMywgMjUyLCAyNDcsIDMwLCAxMTEsIDIsIDE5NCwgMjQ3LCAzMCwgMTExLCAyLCAyMDEsIDExNCwgMjQ3LCAzMCwgMSwgCisgICAgNDcsIDIyNywgMTE4LCAyNDcsIDMwLCAxLCA0NywgMjM2LCAxNTYsIDI0NywgMzAsIDEsIDQ3LCAyMTksIDI1NSwgMjQ3LCAKKyAgICAzMCwgMTExLCAyLCA0NywgMjE5LCAyNTUsIDI0NywgMzAsIDEsIDQ3LCAyNDcsIDM4LCAyNDcsIDMwLCAxLCA0NywgMjA3LCAKKyAgICA4MywgMjQ3LCAzMCwgMSwgNDcsIDIyMCwgMjE0LCAyNDcsIDMwLCAxLCA0NywgMjE2LCAyMjYsIDI0NywgMzAsIDEsIDQ3LCAKKyAgICAyMDAsIDEyMywgMjQ3LCAzMCwgMSwgNDcsIDE0NiwgMjQ3LCAzMCwgMSwgNDcsIDE1NiwgMjQ3LCAzMCwgMSwgNDcsIDIwOCwgCisgICAgMTgyLCAyNDcsIDMwLCAxMTEsIDIsIDQ3LCAyMjMsIDI0MywgMjQ3LCAzMCwgMTExLCAyLCA0NywgMjM0LCAyNDcsIDI0NywgCisgICAgMzAsIDE3LCAxOTksIDgxLCAyNDcsIDMwLCAxNywgMTAyLCAyNDcsIDMwLCAxNywgMTA1LCAyNDcsIDMwLCAxNywgMTQ3LCAKKyAgICAyNDcsIDMwLCAxNywgMTQ5LCAyNDcsIDMwLCAxNywgMTY0LCAyNDcsIDMwLCAxNywgMTg3LCAyNDcsIDMwLCAxNywgMjEwLCAKKyAgICAxMzUsIDI0NywgMzAsIDE3LCAxOTIsIDI0NywgMzAsIDE3LCAyMTksIDExMywgMjQ3LCAzMCwgMjE0LCAyMTIsIDIwOCwgCisgICAgMjE3LCAyNDcsIDMwLCAyMTQsIDIxMiwgMjQyLCAxMCwgMjQ3LCAzMCwgMjE0LCAyMTIsIDUzLCAyNDIsIDEwLCAyNDcsIDMwLCAKKyAgICAyMTQsIDIxMiwgMjA1LCA4MywgMjQyLCAxMCwgNzEsIDEsIDIyNiwgMjAwLCAyMzYsIDg5LCA3MSwgMSwgMjI2LCAyMDAsIAorICAgIDI0NywgMTkwLCA3MSwgMSwgMjI2LCAyMDAsIDI0NywgMzcsIDcxLCAxLCAyMjYsIDIwMCwgMjI3LCAyNDgsIDcxLCAxLCAKKyAgICAyMjYsIDIwMCwgMjI3LCAyMTUsIDcxLCAxLCAyMjYsIDIwMCwgMjE4LCA2MCwgNzEsIDEsIDIyNiwgMjAwLCAyMDQsIDI1MywgCisgICAgNzEsIDEsIDIyNiwgMjAwLCAyMDQsIDI0MSwgNzEsIDEsIDIyNiwgMjAwLCAyNDEsIDIyMCwgNzEsIDEsIDIyNiwgMjAwLCAKKyAgICAyNDEsIDIwNCwgNzEsIDEsIDIyNiwgMjAwLCAyNDEsIDEwMCwgNzEsIDEsIDIyNiwgMjAwLCAxODgsIDcxLCAxLCAyMjYsIAorICAgIDIwMCwgMjEyLCA2NCwgNzEsIDEsIDIyNiwgMjAwLCAxNDQsIDcxLCAxLCAyMjYsIDIwMCwgMjM0LCA4NCwgNzEsIDEsIDIyNiwgCisgICAgMjAwLCAyMzcsIDE5NSwgNzEsIDY3LCAxLCAyMjYsIDIwMCwgMjEzLCAxNjgsIDcxLCAxLCAyMjYsIDIwMCwgMjAwLCAxODEsIAorICAgIDcxLCAxLCAyMjYsIDIwMCwgMTk5LCAxMTQsIDcxLCAxLCAyMjYsIDIwMCwgMjEzLCAyNTIsIDcxLCAyMjQsIDk3LCAyMjYsIAorICAgIDIwMCwgMjE3LCAxNDMsIDcxLCAyMjQsIDk3LCAyMjYsIDIwMCwgMjE0LCAxMTAsIDcxLCAyMjQsIDk3LCAyMjYsIDIwMCwgCisgICAgMjM0LCA2LCA3MSwgMTYsIDI1MSwgMTYzLCAyMzgsIDQyLCA3MSwgMTYsIDI1MSwgMTYzLCAxMDIsIDcxLCAxNiwgMjUxLCAKKyAgICAxNjMsIDEwNSwgNzEsIDEsIDI1MSwgMTYzLCAyMTMsIDI1MiwgNzEsIDIsIDIxNiwgMTM3LCAyMjcsIDQ0LCAyMDUsIDE3NCwgCisgICAgNzEsIDIsIDQ2LCAyMjUsIDE0OCwgMjA1LCAxNzIsIDcxLCAyLCA0NiwgMjI1LCAxNDgsIDIwNSwgMTY5LCA3MSwgMSwgMjA5LCAKKyAgICAxOTgsIDIxNiwgMTgxLCAyNDcsIDM3LCA3MSwgMSwgMjA5LCAxOTgsIDIxNiwgMTgxLCAyMTAsIDExNCwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIyNiwgODgsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjYsIDg4LCA0NiwgMjAyLCAyMjQsIDEsIAorICAgIDEyOCwgMjI2LCAxNzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjYsIDE3OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIyNiwgCisgICAgMTg3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjI2LCAxODcsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMzUsIDExNiwgNDYsIAorICAgIDIwMiwgMjI0LCAxLCAxMjIsIDIzNSwgMTE2LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE5LCAxNzgsIDQ2LCAyMDIsIDIyNCwgCisgICAgMSwgMTIyLCAyMTksIDE3OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDI0NiwgOTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyNDYsIDkxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjQ2LCAyMTAsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyNDYsIDIxMCwgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwOSwgMjksIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMDksIDI5LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjE4LCAyNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIxOCwgMjYsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyNDAsIDIxMSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0MCwgMjExLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMTM4LCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMTM4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAKKyAgICAxLCAxMjIsIDIwNiwgNjEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTgsIDI0MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDIxOCwgMjQxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjQ4LCAxMjQsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyNDgsIDEyNCwgCisgICAgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxNSwgMTA2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE1LCAxMDYsIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMTUsIDIxNywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIxNSwgMjE3LCA0NiwgMjAyLCAyMjQsIDEsIAorICAgIDEyOCwgMjM3LCAxMywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIzNywgMTMsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMjEsIAorICAgIDEzNiwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyMSwgMTM2LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMTk5LCAyNDUsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMSwgMTIyLCAxOTksIDI0NSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxMywgMSwgNDYsIDIwMiwgMjI0LCAKKyAgICAxLCAxMjIsIDIxMywgMSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIyNCwgMTEwLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjI0LCAxMTAsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDIsIDE5MywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIwMiwgMTkzLCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjMzLCAyMDcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMzMsIDIwNywgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDc0LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgNzQsIDQ2LCAyMDIsIDIyNCwgMjIyLCAxOTksIDIyNywgCisgICAgNjQsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MiwgMTM4LCA0NiwgMjAyLCAyMjQsIDIyLCA3MCwgNDYsIDIwMiwgMjI0LCAyMiwgCisgICAgMjA0LCAzMSwgNDYsIDIwMiwgMjI0LCAyMiwgNjYsIDQ2LCAyMDIsIDIyNCwgMjIsIDcyLCA0NiwgMjAyLCAyMjQsIDIyLCAKKyAgICA3NCwgNDYsIDIwMiwgMjI0LCAyMjIsIDE5OSwgMjI2LCAxODEsIDQ2LCAyMDIsIDIyNCwgMjIsIDIzMiwgMjQwLCA0NiwgCisgICAgMjAyLCAyMjQsIDIyLCAyMDQsIDMwLCA0NiwgMjAyLCAyMjQsIDIyLCAyMDQsIDQ2LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTAsIAorICAgIDEzNywgNDYsIDIwMiwgMjI0LCAyMiwgMjUwLCAxMTIsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MSwgODUsIDQ2LCAyMDIsIDIyNCwgCisgICAgMjIsIDI1MSwgMTAxLCA0NiwgMjAyLCAyMjQsIDE1MCwgMjIyLCAxOTksIDIzOCwgMjE2LCA0NiwgMjAyLCAyMjQsIDE1MCwgCisgICAgMjIyLCAxOTksIDIxOCwgMTAxLCA0NiwgMjAyLCAyMjQsIDE1MCwgMjIyLCAxOTksIDIwNiwgNjEsIDQ2LCAyMDIsIDIyNCwgCisgICAgMTUwLCAyMjIsIDE5OSwgMjA5LCAxMiwgNDYsIDIwMiwgMjI0LCAxNiwgMjI2LCA3MSwgNDYsIDIwMiwgMjI0LCAxNiwgMjE4LCAKKyAgICAxMDEsIDQ2LCAyMDIsIDIyNCwgMTYsIDIxMiwgMjMsIDQ2LCAyMDIsIDIyNCwgMTYsIDIzMywgMjA4LCAyMzMsIDIwMiwgNDYsIAorICAgIDIwMiwgMjI0LCAxNiwgMjI2LCA4MSwgMjI2LCA4MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDcyLCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMSwgNzQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDcsIDM3LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE4LCA2MCwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNCwgMjUzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA0LCAyNDEsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAxLCAyNDEsIDIyMCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgMjA0LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjE5LCAyMSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxMCwgMTE0LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA4LCAKKyAgICAxNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjI4LCAxNTEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjAzLCAKKyAgICAxODIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjUyLCAxMDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjUwLCAKKyAgICAxMzksIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjUyLCA5NSwgMjIyLCA1OCwgMjIyLCAxMTcsIDI0NiwgMjUzLCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMjUxLCAxODIsIDIyNiwgMTcwLCAyMjIsIDU4LCAyMjIsIDExNywgMjUxLCA2MiwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDUsIDIxMywgMTMwLCA4MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIwMCwgMjM4LCAyMTMsIDEzMCwgODEsIAorICAgIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjAyLCAyMDMsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMDIsIDIwOCwgMzQsIDUsIAorICAgIDIwNCwgMjM0LCAzNCwgNSwgMjA0LCAyMzcsIDM0LCA1LCAyMDQsIDI0MCwgMzQsIDUsIDIwNCwgMjM4LCAzNCwgNSwgMjA0LCAKKyAgICAyMzksIDM0LCA1LCAyMDQsIDIzNiwgMzQsIDUsIDI0MSwgMTk4LCAzNCwgNSwgMjQxLCAyMDAsIDM0LCA1LCAyNDEsIDIwMywgCisgICAgMzQsIDUsIDI0MSwgMjAxLCAzNCwgNSwgMjQxLCAyMDIsIDM0LCA1LCAyNDEsIDE5OSwgMzQsIDUsIDIzOSwgODAsIDM0LCA1LCAKKyAgICAyMzksIDg0LCAzNCwgNSwgMjM5LCA5MiwgMzQsIDUsIDIzOSwgODksIDM0LCA1LCAyMzksIDkwLCAzNCwgNSwgMjM5LCA4MSwgCisgICAgMzQsIDUsIDI0NywgOTAsIDM0LCA1LCAyNDcsIDg0LCAzNCwgNSwgMjQ3LCA4NiwgMzQsIDUsIDI0NywgODksIDM0LCA1LCAKKyAgICAyNDcsIDg3LCAzNCwgNSwgMjQ3LCA4OCwgMzQsIDUsIDI0NywgODUsIDM0LCA1LCAyNDksIDQ0LCAzNCwgNSwgMjQ5LCAyMywgCisgICAgMzQsIDUsIDI0OSwgMzUsIDM0LCA1LCAyNDksIDQzLCAzNCwgNSwgMjQ5LCAzOCwgMzQsIDUsIDI0OSwgMzksIDM0LCA1LCAKKyAgICAyNDksIDI3LCA4LCA0LCAxLCAyNDksIDcxLCAyNTEsIDExMiwgOCwgNCwgMSwgMzUsIDIxMywgMTAzLCA4LCA0LCAxLCAyNDgsIAorICAgIDE0MCwgNzIsIDgsIDQsIDEsIDI0OSwgNzEsIDcyLCA4LCA0LCAxLCAxOTcsIDMsIDIzNywgMjYsIDgsIDQsIDEsIDIyNCwgCisgICAgMjQ5LCAyMzgsIDUsIDgsIDQsIDEsIDEzNSwgMjM2LCAxNTcsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjI4LCA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA1MywgMTAxLCAyMDUsIDI0MCwgOCwgCisgICAgNCwgMSwgMjI1LCAxOTMsIDMsIDEwMSwgMjEzLCAyNiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAKKyAgICAyMjAsIDIxNSwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIzOCwgMTY2LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjQ4LCAxNDAsIAorICAgIDc0LCA4LCA0LCAxLCAyNDgsIDE0MCwgMTYzLCAzLCA5NywgOCwgNCwgMSwgMTc2LCAxNjMsIDMsIDk3LCA4LCA0LCAxLCAKKyAgICAyMjgsIDUwLCAyMTcsIDEyMSwgOCwgNCwgMSwgMjA0LCAxODUsIDIxNywgMTIyLCAzLCA5NywgOCwgNCwgMSwgMjA0LCAxODUsIAorICAgIDIxNywgMTIyLCAzLCAyMzMsIDE3NywgOTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAxNjMsIDIxNywgNDksIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAxNjMsIDIxNywgNTAsIDMsIDk3LCA4LCA0LCAxLCAyMDgsIDgxLCAxNDYsIDgsIDEsIDQsIDYsIDIxNCwgMzMsIDMsIAorICAgIDUxLCAyMjUsIDE2LCA4LCA0LCAxLCAyMTQsIDMzLCAyMDEsIDMsIDIzNCwgMTc3LCA4LCA0LCAxLCA1MywgMTQ2LCA4LCA0LCAKKyAgICAxLCAyMTQsIDMzLCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgNTMsIDIxNCwgMzMsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAxMzUsIAorICAgIDE0NiwgOCwgNCwgMSwgMTM1LCAyMTQsIDMzLCAzLCAyMTMsIDI2LCA4LCA0LCAxLCAyNDksIDYyLCAyMzgsIDk0LCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDIwOSwgMjUwLCA1MSwgMjI1LCAxNiwgOCwgNCwgMSwgMTA4LCAyNDksIDc3LCAzLCAyMDksIDI1MCwgNTEsIAorICAgIDIyNSwgMTYsIDgsIDQsIDEsIDIwNCwgMjMsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDQsIDIzLCA4LCA0LCAxLCAxMDgsIDMsIAorICAgIDQ5LCAxMTcsIDgsIDQsIDEsIDI0NiwgMjM2LCA4LCA0LCAxLCAyNDYsIDIzNywgMywgMTI4LCA1MSwgMjEzLCAyNiwgOCwgNCwgCisgICAgMSwgMjQ2LCAyMzcsIDMsIDEyOCwgNDksIDIxMCwgMTQ5LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTI4LCA1MSwgMjEzLCAKKyAgICAyNiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDE2OCwgNDksIDIyNSwgMTYsIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxNjgsIAorICAgIDQ5LCAyMjUsIDE3LCAyNiwgMTI4LCA1MSwgMjEzLCAyNiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDE2OCwgNDksIDIyNSwgCisgICAgMTcsIDMsIDIxMCwgMTQ5LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjA5LCAyNTAsIDUxLCAyMjUsIDE2LCA2NywgMjQ4LCAKKyAgICA1OCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgNjcsIDEsIDQsIDIzNCwgMTAzLCA2NywgMSwgNCwgMjI1LCAxOTMsIDMsIDIyOCwgCisgICAgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCA2NywgMSwgNCwgMjI1LCAxOTMsIDMsIDEwMSwgMjA1LCAyNDAsIDY3LCAxLCA0LCAKKyAgICAxMDgsIDMsIDQ5LCAxMTcsIDgsIDQsIDEsIDIxMiwgMzksIDIwMCwgNjUsIDgsIDQsIDEsIDIyOCwgMzksIDcyLCA4LCA0LCAKKyAgICAxLCAxNzYsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDMsIDIzMiwgOCwgNCwgMSwgMjI4LCA1MCwgMjUxLCAxMTIsIDMxLCAxLCAKKyAgICA0LCA2LCAyMTcsIDgzLCA5MSwgNCwgMSwgNjIsIDkxLCA0LCAxLCA3MiwgOTEsIDQsIDEsIDcwLCA5MSwgNCwgMSwgNzQsIAorICAgIDkxLCA0LCAxLCA2NiwgOTEsIDQsIDEsIDIwMywgMTY4LCA5MSwgNCwgMSwgMjM2LCA4OSwgOTEsIDQsIDEsIDE2MSwgOTEsIAorICAgIDQsIDEsIDIzNiwgMTUsIDkxLCA0LCAxLCAyMzUsIDE2MSwgOTEsIDQsIDEsIDIzNSwgMTE2LCA5MSwgNCwgMSwgMjM1LCA1MCwgCisgICAgOTEsIDQsIDEsIDIzNSwgMTIsIDkxLCA0LCAxLCAxNDQsIDkxLCA0LCAxLCAyMzQsIDEzOSwgOTEsIDQsIDEsIDIzNCwgNzUsIAorICAgIDkxLCA0LCAxLCAyMzMsIDIwNywgOTEsIDQsIDEsIDIzMywgOTcsIDkxLCA0LCAxLCAyMzMsIDY5LCA5MSwgNCwgMSwgMTk0LCAKKyAgICA5MSwgNCwgMSwgMjI1LCA0MCwgOTEsIDQsIDEsIDIyNCwgMjEwLCA5MSwgNCwgMSwgMjI0LCAxMTAsIDkxLCA0LCAxLCAyMjQsIAorICAgIDQyLCA5MSwgNCwgMSwgMjI0LCAxMSwgOTEsIDQsIDEsIDE3OCwgOTEsIDQsIDEsIDIyMiwgNzYsIDkxLCA0LCAxLCAyMjEsIAorICAgIDIxMSwgOTEsIDQsIDEsIDIyMSwgMTM2LCA5MSwgNCwgMSwgMjIxLCA0MSwgOTEsIDQsIDEsIDE4OCwgOTEsIDQsIDEsIDIzMywgCisgICAgMjMxLCA5MSwgNCwgMSwgMjIwLCAxNDQsIDkxLCA0LCAxLCAyMjAsIDM0LCA5MSwgNCwgMSwgMjE5LCAxNTAsIDkxLCA0LCAxLCAKKyAgICAyMTgsIDI0MSwgOTEsIDQsIDEsIDIxOCwgMTMzLCA5MSwgNCwgMSwgMjE4LCA3MSwgOTEsIDQsIDEsIDIxNCwgOTYsIDkxLCAKKyAgICA0LCAxLCAyMTQsIDgyLCA5MSwgNCwgMSwgMjE0LCA3NSwgOTEsIDQsIDEsIDIxNCwgNjYsIDkxLCA0LCAxLCAyMTQsIDU1LCAKKyAgICA5MSwgNCwgMSwgMjE0LCA1MywgOTEsIDQsIDEsIDIxMiwgNjQsIDkxLCA0LCAxLCAyMTIsIDEyMiwgOTEsIDQsIDEsIDIxMSwgCisgICAgMjAyLCA5MSwgNCwgMSwgMjA5LCAxODIsIDkxLCA0LCAxLCAyMDksIDI5LCA5MSwgNCwgMSwgMjA4LCAyNCwgOTEsIDQsIDEsIAorICAgIDIwNywgMTkxLCA5MSwgNCwgMSwgMjQyLCA1OCwgOTEsIDQsIDEsIDIwNywgMzYsIDkxLCA0LCAxLCAyNDEsIDE3NSwgOTEsIAorICAgIDQsIDEsIDIwNiwgMjAxLCA5MSwgNCwgMSwgMjQxLCA3NiwgOTEsIDQsIDEsIDIwNiwgMTUsIDkxLCA0LCAxLCAyNDAsIDIxMSwgCisgICAgOTEsIDQsIDEsIDIzOSwgMTM3LCA5MSwgNCwgMSwgMjM5LCAxMDcsIDkxLCA0LCAxLCAyNDAsIDIyMiwgOTEsIDQsIDEsIAorICAgIDIwNSwgMjAzLCA5MSwgNCwgMSwgMjA1LCAyMDIsIDkxLCA0LCAxLCAyMDUsIDE5MSwgOTEsIDQsIDEsIDIwNSwgMTkwLCA5MSwgCisgICAgNCwgMSwgMjA1LCAxODksIDkxLCA0LCAxLCAyMDUsIDE4OCwgOTEsIDQsIDEsIDIwNSwgMzIsIDkxLCA0LCAxLCAyMDUsIDI2LCAKKyAgICA5MSwgNCwgMSwgMjA1LCAxMSwgOTEsIDQsIDEsIDIwNSwgOSwgOTEsIDQsIDEsIDIwNSwgNSwgOTEsIDQsIDEsIDIwNSwgNCwgCisgICAgOTEsIDQsIDEsIDIwMSwgMTE0LCA5MSwgNCwgMSwgMjAxLCA2NCwgOTEsIDQsIDEsIDIwMSwgMzEsIDkxLCA0LCAxLCAyMDEsIAorICAgIDAsIDkxLCA0LCAxLCAyMDAsIDIxNiwgOTEsIDQsIDEsIDIwMCwgMjAzLCA5MSwgNCwgMSwgMTgzLCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMSwgMjI2LCA3OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxMiwgMjMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAKKyAgICAyMjUsIDE0OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMSwgMTQ3LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMTcyLCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMTg4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQ2LCAyMjgsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMDUsIDI0MiwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNiwgMTczLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE5LCAKKyAgICAxNjgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDYsIDUzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjAxLCAxMDgsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyMDAsIDc1LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjMzLCA4OSwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDEsIDIwNCwgNSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDcwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE1LCAyMzksIAorICAgIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNTAsIDE1MCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIzNSwgMTA5LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMSwgMjI3LCAyMTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTMsIDIyOSwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDI0OSwgMTM2LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI3LCAxOTgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDEsIAorICAgIDMzLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjM1LCAxNjgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDEsIDc4LCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMjQ4LCAxOTgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjYsIDc5LCAyMjQsIDc5LCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMSwgMjI1LCAxNTAsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjEsIDE0OCwgMjI0LCAKKyAgICA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxNiwgMjExLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIwLCAKKyAgICAxNjIsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDUsIDI0MywgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIxOSwgMTY5LCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjMzLCAxOSwgMjI0LCA3OSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDIyLCAyLCAyMTcsIDc2LCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIyOCwgMTE1LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDI1MSwgODMsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjAwLCA0MCwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDIyLCAyLCAyMDksIDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjA0LCAyLCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMjIsIDIsIDI0NiwgMjUxLCAyMjIsIDU4LCAyMjIsIDExNywgMjIsIDIsIDIxOCwgODYsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAyNDYsIDI1MiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyNCwgMjYsIDIyOCwgMSwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDI1MSwgMiwgMjI4LCAxLCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE5OSwgODEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgCisgICAgMTAyLCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDEwNSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxNDcsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAxNywgMTQ5LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE2NCwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAKKyAgICAxODcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMjEwLCAxMzUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTkyLCAyMjIsIAorICAgIDU4LCAyMjIsIDExNywgMTcsIDIxOSwgMTEzLCAyOSwgMTgxLCAyMTcsIDIyMywgMjksIDE4MSwgMjE3LCAyMjgsIDI5LCAKKyAgICAxODEsIDE5OSwgMjQ0LCAyOSwgMTgxLCAxOTksIDI0MywgMjksIDE4MSwgMTk5LCAyNDIsIDI5LCAxODEsIDIwNCwgOTYsIAorICAgIDI5LCAxODEsIDIwNCwgMTAwLCAyOSwgMTgxLCAxOTksIDIwOSwgMjksIDE4MSwgMTk5LCAyMDUsIDI5LCAxODEsIDIzOCwgCisgICAgNjgsIDI5LCAxODEsIDIzOCwgNjYsIDI5LCAxODEsIDIzOCwgNjcsIDI5LCAxODEsIDIzOCwgNjQsIDI5LCAxODEsIDIzMywgCisgICAgOSwgMjksIDE4MSwgMjMzLCA4LCAyOSwgMTgxLCAyMzMsIDYsIDI5LCAxODEsIDIzMywgNywgMjksIDE4MSwgMjMzLCAxMiwgCisgICAgMjksIDE4MSwgMjMzLCA1LCAyOSwgMTgxLCAyMzMsIDQsIDI5LCAxODEsIDIzMywgMTQsIDI5LCAxODEsIDI1MCwgMjQ0LCAKKyAgICAyOSwgMTgxLCAyNTAsIDI0MywgMjksIDExMCwgMjE5LCAxMzYsIDI5LCAxMTAsIDIxOSwgMTQyLCAyOSwgMTEwLCAyMDgsIAorICAgIDE2MCwgMjksIDExMCwgMjA4LCAxNTksIDI5LCAxMTAsIDIwNSwgMjQ4LCAyOSwgMTEwLCAyMDUsIDI0NiwgMjksIDExMCwgCisgICAgMjA1LCAyNDUsIDI5LCAxMTAsIDIwNSwgMjUxLCAyOSwgMTEwLCAyMDUsIDI1MiwgMjksIDExMCwgMjA1LCAyNDQsIDI5LCAKKyAgICAxMTAsIDIxMywgNTcsIDI5LCAxMTAsIDIxMywgNzIsIDI5LCAxMTAsIDIwOCwgMTY2LCAyOSwgMTEwLCAyMTMsIDY5LCAyOSwgCisgICAgMTEwLCAyMTMsIDU5LCAyOSwgMTEwLCAyMTMsIDYxLCAyOSwgMTEwLCAyMTMsIDQ4LCAyOSwgMTEwLCAyMTMsIDQ5LCAyOSwgCisgICAgMTEwLCAyMjcsIDUwLCAyOSwgMTEwLCAyMjEsIDE5MiwgMjksIDExMCwgMjIxLCAxODYsIDI5LCAxMTAsIDIwOCwgMTcwLCAKKyAgICAyOSwgMTEwLCAyMjEsIDE4OSwgMjksIDExMCwgMjIxLCAxOTUsIDI5LCAxMTAsIDIxNSwgMTcxLCAyOSwgMTEwLCAyMTUsIAorICAgIDE4MCwgMjksIDExMCwgMjE1LCAxODQsIDI5LCAxMTAsIDIwOCwgMTY4LCAyOSwgMTEwLCAyMTUsIDE3NCwgMjksIDExMCwgCisgICAgMjE1LCAxODgsIDI5LCAxMTAsIDIxNSwgMTg5LCAyOSwgMTEwLCAyMDksIDEyMSwgMjksIDExMCwgMjA5LCAxMjQsIDI5LCAKKyAgICAxMTAsIDIwOCwgMTY0LCAyOSwgMTEwLCAyMDgsIDE2MiwgMjksIDExMCwgMjA5LCAxMTksIDI5LCAxMTAsIDIwOSwgMTI3LCAKKyAgICAyOSwgMTEwLCAyMDksIDEyOCwgMjksIDExMCwgMjA5LCAxMTMsIDI5LCAxMTAsIDIwOSwgMTI2LCAyOSwgMTEwLCAyMTYsIAorICAgIDE0NCwgMjksIDExMCwgMjE2LCAxNDUsIDI5LCAxMTAsIDIwMCwgMjYsIDI5LCAxMTAsIDIwMCwgMjcsIDI5LCAxMTAsIDI0NiwgCisgICAgMTY2LCAyOSwgMTEwLCAyNDYsIDE2NSwgMjksIDExMCwgMjA4LCAxNzUsIDI5LCAxMTAsIDIxNSwgMjI0LCAyOSwgMTEwLCAKKyAgICAyMTUsIDIyMywgMTIsIDE1LCAyMzAsIDE0MiwgMTIsIDE1LCAyMzAsIDE0MSwgMTIsIDE1LCAyMzAsIDE0MCwgMTIsIDE1LCAKKyAgICAyMzAsIDEzOSwgMTIsIDE1LCAyMzAsIDEzOCwgMTIsIDE1LCAyMzAsIDEzNywgMTIsIDE1LCAyMzAsIDEzNiwgMTIsIDE1LCAKKyAgICAyMzAsIDEzNSwgMTIsIDE1LCAyMzAsIDEzNCwgMTIsIDE1LCAyMzAsIDEzMywgMTIsIDE1LCAyMzAsIDEzMiwgMTIsIDE1LCAKKyAgICAyMzAsIDEzMSwgMTIsIDE1LCAyMzAsIDEzMCwgMTIsIDE1LCAyMzAsIDEyOSwgMTIsIDE1LCAyMzAsIDEyOCwgMTIsIDE1LCAKKyAgICAyMzAsIDEyNywgMTIsIDE1LCAyMzAsIDEyNiwgMTIsIDE1LCAyMzAsIDEyNSwgMTIsIDE1LCAyMzAsIDEyNCwgMTIsIDE1LCAKKyAgICAyMzAsIDEyMywgMTIsIDE1LCAyMzAsIDEyMiwgMTIsIDE1LCAyMzAsIDEyMSwgMTIsIDE1LCAyMzAsIDEyMCwgMTIsIDE1LCAKKyAgICAyMzAsIDExOSwgMTIsIDE1LCAyMzAsIDExOCwgMTIsIDE1LCAyMzAsIDExNywgMTIsIDE1LCAyMzAsIDExNiwgMTIsIDE1LCAKKyAgICAyMzAsIDExNSwgMTIsIDE1LCAyMzAsIDExNCwgMTIsIDE1LCAyMzAsIDExMywgMTIsIDE1LCAyMzAsIDExMiwgMTIsIDE1LCAKKyAgICAyMzAsIDExMSwgMTIsIDE1LCAyMzAsIDExMCwgMTIsIDE1LCAyMzAsIDEwOSwgMTIsIDE1LCAyMzAsIDEwOCwgMTIsIDE1LCAKKyAgICAyMzAsIDEwNywgMTIsIDE1LCAyMzAsIDEwNiwgMTIsIDE1LCAyMzAsIDEwNSwgMTIsIDE1LCAyMzAsIDEwNCwgMTIsIDE1LCAKKyAgICAyMzAsIDEwMywgMTIsIDE1LCAyMzAsIDEwMiwgMTIsIDE1LCAyMzAsIDEwMSwgMTIsIDE1LCAyMzAsIDEwMCwgMTIsIDE1LCAKKyAgICAyMzAsIDk5LCAxMiwgMTUsIDIzMCwgOTgsIDEyLCAxNSwgMjMwLCA5NywgMTIsIDE1LCAyMzAsIDk2LCAxMiwgMTUsIDIzMCwgCisgICAgOTUsIDEyLCAxNSwgMjMwLCA5NCwgMTIsIDE1LCAyMzAsIDkzLCAxMiwgMTUsIDIzMCwgOTIsIDEyLCAxNSwgMjMwLCA5MSwgCisgICAgMTIsIDE1LCAyMzAsIDkwLCAxMiwgMTUsIDIzMCwgODksIDEyLCAxNSwgMjMwLCA4OCwgMTIsIDE1LCAyMzAsIDg3LCAxMiwgCisgICAgMTUsIDIzMCwgODYsIDEyLCAxNSwgMjMwLCA4NSwgMTIsIDE1LCAyMzAsIDg0LCAxMiwgMTUsIDIzMCwgODMsIDEyLCAxNSwgCisgICAgMjMwLCA4MiwgMTIsIDE1LCAyMzAsIDgxLCAxMiwgMTUsIDIzMCwgODAsIDEyLCAxNSwgMjMwLCA3OSwgMTIsIDE1LCAyMzAsIAorICAgIDc4LCAxMiwgMTUsIDIzMCwgNzcsIDEyLCAxNSwgMjMwLCA3NiwgMTIsIDE1LCAyMzAsIDc1LCAxMiwgMTUsIDIzMCwgNzQsIAorICAgIDEyLCAxNSwgMjMwLCA3MywgMTIsIDE1LCAyMzAsIDcyLCAxMiwgMTUsIDIzMCwgNzEsIDEyLCAxNSwgMjMwLCA3MCwgMTIsIAorICAgIDE1LCAyMzAsIDY5LCAxMiwgMTUsIDIzMCwgNjgsIDEyLCAxNSwgMjMwLCA2NywgMTIsIDE1LCAyMzAsIDY2LCAxMiwgMTUsIAorICAgIDIzMCwgNjUsIDEyLCAxNSwgMjMwLCA2NCwgMTIsIDE1LCAyMzAsIDYzLCAxMiwgMTUsIDIzMCwgNjIsIDEyLCAxNSwgMjMwLCAKKyAgICA2MSwgMTIsIDE1LCAyMzAsIDYwLCAxMiwgMTUsIDIzMCwgNTksIDEyLCAxNSwgMjMwLCA1OCwgMTIsIDE1LCAyMzAsIDU3LCAKKyAgICAxMiwgMTUsIDIzMCwgNTYsIDEyLCAxNSwgMjMwLCA1NSwgMTIsIDE1LCAyMzAsIDU0LCAxMiwgMTUsIDIzMCwgNTMsIDEyLCAKKyAgICAxNSwgMjMwLCA1MiwgMTIsIDE1LCAyMzAsIDUxLCAxMiwgMTUsIDIzMCwgNTAsIDEyLCAxNSwgMjMwLCA0OSwgMTIsIDE1LCAKKyAgICAyMzAsIDQ4LCAxMiwgMTUsIDIzMCwgNDcsIDEyLCAxNSwgMjMwLCA0NiwgMTIsIDE1LCAyMzAsIDQ1LCAxMiwgMTUsIDIzMCwgCisgICAgNDQsIDEyLCAxNSwgMjMwLCA0MywgMTIsIDE1LCAyMzAsIDQyLCAxMiwgMTUsIDIzMCwgNDEsIDEyLCAxNSwgMjMwLCA0MCwgCisgICAgMTIsIDE1LCAyMzAsIDM5LCAxMiwgMTUsIDIzMCwgMzgsIDEyLCAxNSwgMjMwLCAzNywgMTIsIDE1LCAyMzAsIDM2LCAxMiwgCisgICAgMTUsIDIzMCwgMzUsIDEyLCAxNSwgMjMwLCAzNCwgMTIsIDE1LCAyMzAsIDMzLCAxMiwgMTUsIDIzMCwgMzIsIDEyLCAxNSwgCisgICAgMjMwLCAzMSwgMTIsIDE1LCAyMzAsIDMwLCAxMiwgMTUsIDIzMCwgMjksIDEyLCAxNSwgMjMwLCAyOCwgMTIsIDE1LCAyMzAsIAorICAgIDI3LCAxMiwgMTUsIDIzMCwgMjYsIDEyLCAxNSwgMjMwLCAyNSwgMTIsIDE1LCAyMzAsIDI0LCAxMiwgMTUsIDIzMCwgMjMsIAorICAgIDEyLCAxNSwgMjMwLCAyMiwgMTIsIDE1LCAyMzAsIDIxLCAxMiwgMTUsIDIzMCwgMjAsIDEyLCAxNSwgMjMwLCAxOSwgMTIsIAorICAgIDE1LCAyMzAsIDE4LCAxMiwgMTUsIDIzMCwgMTcsIDEyLCAxNSwgMjMwLCAxNiwgMTIsIDE1LCAyMzAsIDE1LCAxMiwgMTUsIAorICAgIDIzMCwgMTQsIDEyLCAxNSwgMjMwLCAxMywgMTIsIDE1LCAyMzAsIDEyLCAxMiwgMTUsIDIzMCwgMTEsIDEyLCAxNSwgMjMwLCAKKyAgICAxMCwgMTIsIDE1LCAyMzAsIDksIDEyLCAxNSwgMjMwLCA4LCAxMiwgMTUsIDIzMCwgNywgMTIsIDE1LCAyMzAsIDYsIDEyLCAKKyAgICAxNSwgMjMwLCA1LCAxMiwgMTUsIDIzMCwgNCwgMTIsIDE1LCAyMzAsIDMsIDEyLCAxNSwgMjMwLCAyLCAxMiwgMTUsIDIzMCwgCisgICAgMSwgMTIsIDE1LCAyMzAsIDAsIDEyLCAxNSwgMjI5LCAyNTUsIDEyLCAxNSwgMjI5LCAyNTQsIDEyLCAxNSwgMjI5LCAyNTMsIAorICAgIDEyLCAxNSwgMjI5LCAyNTIsIDEyLCAxNSwgMjI5LCAyNTEsIDEyLCAxNSwgMjI5LCAyNTAsIDEyLCAxNSwgMjI5LCAyNDksIAorICAgIDEyLCAxNSwgMjI5LCAyNDgsIDEyLCAxNSwgMjI5LCAyNDcsIDEyLCAxNSwgMjI5LCAyNDYsIDEyLCAxNSwgMjI5LCAyNDUsIAorICAgIDEyLCAxNSwgMjI5LCAyNDQsIDEyLCAxNSwgMjI5LCAyNDMsIDEyLCAxNSwgMjI5LCAyNDIsIDEyLCAxNSwgMjI5LCAyNDEsIAorICAgIDEyLCAxNSwgMjI5LCAyNDAsIDEyLCAxNSwgMjI5LCAyMzksIDEyLCAxNSwgMjI5LCAyMzgsIDEyLCAxNSwgMjI5LCAyMzcsIAorICAgIDEyLCAxNSwgMjI5LCAyMzYsIDEyLCAxNSwgMjI5LCAyMzUsIDEyLCAxNSwgMjI5LCAyMzQsIDEyLCAxNSwgMjI5LCAyMzMsIAorICAgIDEyLCAxNSwgMjI5LCAyMzIsIDEyLCAxNSwgMjI5LCAyMzEsIDEyLCAxNSwgMjI5LCAyMzAsIDEyLCAxNSwgMjI5LCAyMjksIAorICAgIDEyLCAxNSwgMjI5LCAyMjgsIDEyLCAxNSwgMjI5LCAyMjcsIDEyLCAxNSwgMjI5LCAyMjYsIDEyLCAxNSwgMjI5LCAyMjUsIAorICAgIDEyLCAxNSwgMjI5LCAyMjQsIDEyLCAxNSwgMjI5LCAyMjMsIDEyLCAxNSwgMjI5LCAyMjIsIDEyLCAxNSwgMjI5LCAyMjEsIAorICAgIDEyLCAxNSwgMjI5LCAyMjAsIDEyLCAxNSwgMjI5LCAyMTksIDEyLCAxNSwgMjI5LCAyMTgsIDEyLCAxNSwgMjI5LCAyMTcsIAorICAgIDEyLCAxNSwgMjI5LCAyMTYsIDEyLCAxNSwgMjI5LCAyMTUsIDEyLCAxNSwgMjI5LCAyMTQsIDEyLCAxNSwgMjI5LCAyMTMsIAorICAgIDEyLCAxNSwgMjI5LCAyMTIsIDEyLCAxNSwgMjI5LCAyMTEsIDEyLCAxNSwgMjI5LCAyMTAsIDEyLCAxNSwgMjI5LCAyMDksIAorICAgIDEyLCAxNSwgMjI5LCAyMDgsIDEyLCAxNSwgMjI5LCAyMDcsIDEyLCAxNSwgMjI5LCAyMDYsIDEyLCAxNSwgMjI5LCAyMDUsIAorICAgIDEyLCAxNSwgMjI5LCAyMDQsIDEyLCAxNSwgMjI5LCAyMDMsIDEyLCAxNSwgMjI5LCAyMDIsIDEyLCAxNSwgMjI5LCAyMDEsIAorICAgIDEyLCAxNSwgMjI5LCAyMDAsIDEyLCAxNSwgMjI5LCAxOTksIDEyLCAxNSwgMjI5LCAxOTgsIDEyLCAxNSwgMjI5LCAxOTcsIAorICAgIDEyLCAxNSwgMjI5LCAxOTYsIDEyLCAxNSwgMjI5LCAxOTUsIDEyLCAxNSwgMjI5LCAxOTQsIDEyLCAxNSwgMjI5LCAxOTMsIAorICAgIDEyLCAxNSwgMjI5LCAxOTIsIDEyLCAxNSwgMjI5LCAxOTEsIDEyLCAxNSwgMjI5LCAxOTAsIDEyLCAxNSwgMjI5LCAxODksIAorICAgIDEyLCAxNSwgMjI5LCAxODgsIDEyLCAxNSwgMjI5LCAxODcsIDEyLCAxNSwgMjI5LCAxODYsIDEyLCAxNSwgMjI5LCAxODUsIAorICAgIDEyLCAxNSwgMjI5LCAxODQsIDEyLCAxNSwgMjI5LCAxODMsIDEyLCAxNSwgMjI5LCAxODIsIDEyLCAxNSwgMjI5LCAxODEsIAorICAgIDEyLCAxNSwgMjI5LCAxODAsIDEyLCAxNSwgMjI5LCAxNzksIDEyLCAxNSwgMjI5LCAxNzgsIDEyLCAxNSwgMjI5LCAxNzcsIAorICAgIDEyLCAxNSwgMjI5LCAxNzYsIDEyLCAxNSwgMjI5LCAxNzUsIDEyLCAxNSwgMjI5LCAxNzQsIDEyLCAxNSwgMjI5LCAxNzMsIAorICAgIDEyLCAxNSwgMjI5LCAxNzIsIDEyLCAxNSwgMjI5LCAxNzEsIDEyLCAxNSwgMjI5LCAxNzAsIDEyLCAxNSwgMjI5LCAxNjksIAorICAgIDEyLCAxNSwgMjI5LCAxNjgsIDEyLCAxNSwgMjI5LCAxNjcsIDEyLCAxNSwgMjI5LCAxNjYsIDEyLCAxNSwgMjI5LCAxNjUsIAorICAgIDEyLCAxNSwgMjI5LCAxNjQsIDEyLCAxNSwgMjI5LCAxNjMsIDEyLCAxNSwgMjI5LCAxNjIsIDEyLCAxNSwgMjI5LCAxNjEsIAorICAgIDEyLCAxNSwgMjI5LCAxNjAsIDEyLCAxNSwgMjI5LCAxNTksIDEyLCAxNSwgMjI5LCAxNTgsIDEyLCAxNSwgMjI5LCAxNTcsIAorICAgIDEyLCAxNSwgMjI5LCAxNTYsIDEyLCAxNSwgMjI5LCAxNTUsIDEyLCAxNSwgMjI5LCAxNTQsIDEyLCAxNSwgMjI5LCAxNTMsIAorICAgIDEyLCAxNSwgMjI5LCAxNTIsIDEyLCAxNSwgMjI5LCAxNTEsIDEyLCAxNSwgMjI5LCAxNTAsIDEyLCAxNSwgMjI5LCAxNDksIAorICAgIDEyLCAxNSwgMjI5LCAxNDgsIDEyLCAxNSwgMjI5LCAxNDcsIDEyLCAxNSwgMjI5LCAxNDYsIDEyLCAxNSwgMjI5LCAxNDUsIAorICAgIDEyLCAxNSwgMjI5LCAxNDQsIDEyLCAxNSwgMjI5LCAxNDMsIDEyLCAxNSwgMjI5LCAxNDIsIDEyLCAxNSwgMjI5LCAxNDEsIAorICAgIDEyLCAxNSwgMjI5LCAxNDAsIDEyLCAxNSwgMjI5LCAxMzksIDEyLCAxNSwgMjI5LCAxMzgsIDEyLCAxNSwgMjI5LCAxMzcsIAorICAgIDEyLCAxNSwgMjI5LCAxMzYsIDEyLCAxNSwgMjI5LCAxMzUsIDEyLCAxNSwgMjI5LCAxMzQsIDEyLCAxNSwgMjI5LCAxMzMsIAorICAgIDEyLCAxNSwgMjI5LCAxMzIsIDEyLCAxNSwgMjI5LCAxMzEsIDEyLCAxNSwgMjI5LCAxMzAsIDEyLCAxNSwgMjI5LCAxMjksIAorICAgIDEyLCAxNSwgMjI5LCAxMjgsIDEyLCAxNSwgMjI5LCAxMjcsIDEyLCAxNSwgMjI5LCAxMjYsIDEyLCAxNSwgMjI5LCAxMjUsIAorICAgIDEyLCAxNSwgMjI5LCAxMjQsIDEyLCAxNSwgMjI5LCAxMjMsIDEyLCAxNSwgMjI5LCAxMjIsIDEyLCAxNSwgMjI5LCAxMjEsIAorICAgIDEyLCAxNSwgMjI5LCAxMjAsIDEyLCAxNSwgMjI5LCAxMTksIDEyLCAxNSwgMjI5LCAxMTgsIDEyLCAxNSwgMjI5LCAxMTcsIAorICAgIDEyLCAxNSwgMjI5LCAxMTYsIDEyLCAxNSwgMjI5LCAxMTUsIDEyLCAxNSwgMjI5LCAxMTQsIDEyLCAxNSwgMjI5LCAxMTMsIAorICAgIDEyLCAxNSwgMjI5LCAxMTIsIDEyLCAxNSwgMjI5LCAxMTEsIDEyLCAxNSwgMjI5LCAxMTAsIDEyLCAxNSwgMjI5LCAxMDksIAorICAgIDEyLCAxNSwgMjI5LCAxMDgsIDEyLCAxNSwgMjI5LCAxMDcsIDEyLCAxNSwgMjI5LCAxMDYsIDEyLCAxNSwgMjI5LCAxMDUsIAorICAgIDEyLCAxNSwgMjI5LCAxMDQsIDEyLCAxNSwgMjI5LCAxMDMsIDEyLCAxNSwgMjI5LCAxMDIsIDEyLCAxNSwgMjI5LCAxMDEsIAorICAgIDEyLCAxNSwgMjI5LCAxMDAsIDEyLCAxNSwgMjI5LCA5OSwgMTIsIDE1LCAyMjksIDk4LCAxMiwgMTUsIDIyOSwgOTcsIDEyLCAKKyAgICAxNSwgMjI5LCA5NiwgMTIsIDE1LCAyMjksIDk1LCAxMiwgMTUsIDIyOSwgOTQsIDEyLCAxNSwgMjI5LCA5MywgMTIsIDE1LCAKKyAgICAyMjksIDkyLCAxMiwgMTUsIDIyOSwgOTEsIDEyLCAxNSwgMjI5LCA5MCwgMTIsIDE1LCAyMjksIDg5LCAxMiwgMTUsIDIyOSwgCisgICAgODgsIDEyLCAxNSwgMjI5LCA4NywgMTIsIDE1LCAyMjksIDg2LCAxMiwgMTUsIDIyOSwgODUsIDEyLCAxNSwgMjI5LCA4NCwgCisgICAgMTIsIDE1LCAyMjksIDgzLCAxMiwgMTUsIDIyOSwgODIsIDEyLCAxNSwgMjI5LCA4MSwgMTIsIDE1LCAyMjksIDgwLCAxMiwgCisgICAgMTUsIDIyOSwgNzksIDEyLCAxNSwgMjI5LCA3OCwgMTIsIDE1LCAyMjksIDc3LCAxMiwgMTUsIDIyOSwgNzYsIDEyLCAxNSwgCisgICAgMjI5LCA3NSwgMTIsIDE1LCAyMjksIDc0LCAxMiwgMTUsIDIyOSwgNzMsIDEyLCAxNSwgMjI5LCA3MiwgMTIsIDE1LCAyMjksIAorICAgIDcxLCAxMiwgMTUsIDIyOSwgNzAsIDEyLCAxNSwgMjI5LCA2OSwgMTIsIDE1LCAyMjksIDY4LCAxMiwgMTUsIDIyOSwgNjcsIAorICAgIDEyLCAxNSwgMjI5LCA2NiwgMTIsIDE1LCAyMjksIDY1LCAxMiwgMTUsIDIyOSwgNjQsIDEyLCAxNSwgMjI5LCA2MywgMTIsIAorICAgIDE1LCAyMjksIDYyLCAxMiwgMTUsIDIyOSwgNjEsIDEyLCAxNSwgMjI5LCA2MCwgMTIsIDE1LCAyMjksIDU5LCAxMiwgMTUsIAorICAgIDIyOSwgNTgsIDEyLCAxNSwgMjI5LCA1NywgMTIsIDE1LCAyMjksIDU2LCAxMiwgMTUsIDIyOSwgNTUsIDEyLCAxNSwgMjI5LCAKKyAgICA1NCwgMTIsIDE1LCAyMjksIDUzLCAxMiwgMTUsIDIyOSwgNTIsIDEyLCAxNSwgMjI5LCA1MSwgMTIsIDE1LCAyMjksIDUwLCAKKyAgICAxMiwgMTUsIDIyOSwgNDksIDEyLCAxNSwgMjI5LCA0OCwgMTIsIDE1LCAyMjksIDQ3LCAxMiwgMTUsIDIyOSwgNDYsIDEyLCAKKyAgICAxNSwgMjI5LCA0NSwgMTIsIDE1LCAyMjksIDQ0LCAxMiwgMTUsIDIyOSwgNDMsIDEyLCAxNSwgMjI5LCA0MiwgMTIsIDE1LCAKKyAgICAyMjksIDQxLCAxMiwgMTUsIDIyOSwgNDAsIDEyLCAxNSwgMjI5LCAzOSwgMTIsIDE1LCAyMjksIDM4LCAxMiwgMTUsIDIyOSwgCisgICAgMzcsIDEyLCAxNSwgMjI5LCAzNiwgMTIsIDE1LCAyMjksIDM1LCAxMiwgMTUsIDIyOSwgMzQsIDEyLCAxNSwgMjI5LCAzMywgCisgICAgMTIsIDE1LCAyMjksIDMyLCAxMiwgMTUsIDIyOSwgMzEsIDEyLCAxNSwgMjI5LCAzMCwgMTIsIDE1LCAyMjksIDI5LCAxMiwgCisgICAgMTUsIDIyOSwgMjgsIDEyLCAxNSwgMjI5LCAyNywgMTIsIDE1LCAyMjksIDI2LCAxMiwgMTUsIDIyOSwgMjUsIDEyLCAxNSwgCisgICAgMjI5LCAyNCwgMTIsIDE1LCAyMjksIDIzLCAxMiwgMTUsIDIyOSwgMjIsIDEyLCAxNSwgMjI5LCAyMSwgMTIsIDE1LCAyMjksIAorICAgIDIwLCAxMiwgMTUsIDIyOSwgMTksIDEyLCAxNSwgMjI5LCAxOCwgMTIsIDE1LCAyMjksIDE3LCAxMiwgMTUsIDIyOSwgMTYsIAorICAgIDEyLCAxNSwgMjI5LCAxNSwgMTIsIDE1LCAyMjksIDE0LCAxMiwgMTUsIDIyOSwgMTMsIDEyLCAxNSwgMjI5LCAxMiwgMTIsIAorICAgIDE1LCAyMjksIDExLCAxMiwgMTUsIDIyOSwgMTAsIDEyLCAxNSwgMjI5LCA5LCAxMiwgMTUsIDIyOSwgOCwgMTIsIDE1LCAKKyAgICAyMjksIDcsIDEyLCAxNSwgMjI5LCA2LCAxMiwgMTUsIDIyOSwgNSwgMTIsIDE1LCAyMjksIDQsIDEyLCAxNSwgMjI5LCAzLCAKKyAgICAxMiwgMTUsIDIyOSwgMiwgMTIsIDE1LCAyMjksIDEsIDEyLCAxNSwgMjI5LCAwLCAxMiwgMTUsIDIyOCwgMjU1LCAxMiwgMTUsIAorICAgIDIyOCwgMjU0LCAxMiwgMTUsIDIyOCwgMjUzLCAxMiwgMTUsIDIyOCwgMjUyLCAxMiwgMTUsIDIyOCwgMjUxLCAxMiwgMTUsIAorICAgIDIyOCwgMjUwLCAxMiwgMTUsIDIyOCwgMjQ5LCAxMiwgMTUsIDIyOCwgMjQ4LCAxMiwgMTUsIDIyOCwgMjQ3LCAxMiwgMTUsIAorICAgIDIyOCwgMjQ2LCAxMiwgMTUsIDIyOCwgMjQ1LCAxMiwgMTUsIDIyOCwgMjQ0LCAxMiwgMTUsIDIyOCwgMjQzLCAxMiwgMTUsIAorICAgIDIyOCwgMjQyLCAxMiwgMTUsIDIyOCwgMjQxLCAxMiwgMTUsIDIyOCwgMjQwLCAxMiwgMTUsIDIyOCwgMjM5LCAxMiwgMTUsIAorICAgIDIyOCwgMjM4LCAxMiwgMTUsIDIyOCwgMjM3LCAxMiwgMTUsIDIyOCwgMjM2LCAxMiwgMTUsIDIyOCwgMjM1LCAxMiwgMTUsIAorICAgIDIyOCwgMjM0LCAxMiwgMTUsIDIyOCwgMjMzLCAxMiwgMTUsIDIyOCwgMjMyLCAxMiwgMTUsIDIyOCwgMjMxLCAxMiwgMTUsIAorICAgIDIyOCwgMjMwLCAxMiwgMTUsIDIyOCwgMjI5LCAxMiwgMTUsIDIyOCwgMjI4LCAxMiwgMTUsIDIyOCwgMjI3LCAxMiwgMTUsIAorICAgIDIyOCwgMjI2LCAxMiwgMTUsIDIyOCwgMjI1LCAxMiwgMTUsIDIyOCwgMjI0LCAxMiwgMTUsIDIyOCwgMjIzLCAxMiwgMTUsIAorICAgIDIyOCwgMjIyLCAxMiwgMTUsIDIyOCwgMjIxLCAxMiwgMTUsIDIyOCwgMjIwLCAxMiwgMTUsIDIyOCwgMjE5LCAxMiwgMTUsIAorICAgIDIyOCwgMjE4LCAxMiwgMTUsIDIyOCwgMjE3LCAxMiwgMTUsIDIyOCwgMjE2LCAxMiwgMTUsIDIyOCwgMjE1LCAxMiwgMTUsIAorICAgIDIyOCwgMjE0LCAxMiwgMTUsIDIyOCwgMjEzLCAxMiwgMTUsIDIyOCwgMjEyLCAxMiwgMTUsIDIyOCwgMjExLCAxMiwgMTUsIAorICAgIDIyOCwgMjEwLCAxMiwgMTUsIDIyOCwgMjA5LCAxMiwgMTUsIDIyOCwgMjA4LCAxMiwgMTUsIDIyOCwgMjA3LCAxMiwgMTUsIAorICAgIDIyOCwgMjA2LCAxMiwgMTUsIDIyOCwgMjA1LCAxMiwgMTUsIDIyOCwgMjA0LCAxMiwgMTUsIDIyOCwgMjAzLCAxMiwgMTUsIAorICAgIDIyOCwgMjAyLCAxMiwgMTUsIDIyOCwgMjAxLCAxMiwgMTUsIDIyOCwgMjAwLCAxMiwgMTUsIDIyOCwgMTk5LCAxMiwgMTUsIAorICAgIDIyOCwgMTk4LCAxMiwgMTUsIDIyOCwgMTk3LCAxMiwgMTUsIDIyOCwgMTk2LCAxMiwgMTUsIDIyOCwgMTk1LCAxMiwgMTUsIAorICAgIDIyOCwgMTk0LCAxMiwgMTUsIDIyOCwgMTkzLCAxMiwgMTUsIDIyOCwgMTkyLCAxMiwgMTUsIDIyOCwgMTkxLCAxMiwgMTUsIAorICAgIDIyOCwgMTkwLCAxMiwgMTUsIDIyOCwgMTg5LCAxMiwgMTUsIDIyOCwgMTg4LCAxMiwgMTUsIDIyOCwgMTg3LCAxMiwgMTUsIAorICAgIDIyOCwgMTg2LCAxMiwgMTUsIDIyOCwgMTg1LCAxMiwgMTUsIDIyOCwgMTg0LCAxMiwgMTUsIDIyOCwgMTgzLCA4LCA0LCAzMywgCisgICAgMjM3LCAxMTYsIDgsIDQsIDMzLCAyMzcsIDExMiwgOCwgNCwgMzMsIDIzNywgNTYsIDgsIDQsIDMzLCAyMzcsIDExNSwgOCwgCisgICAgNCwgMzMsIDIzNywgMTE0LCA4LCA0LCAzMywgMTY4LCAyMTIsIDEyMywgMjA3LCA4MywgOCwgNCwgMzMsIDIwOCwgMTIzLCAKKyAgICAxODQsIDQsIDMzLCAyMjIsIDQxLCAyMTgsIDIwMSwgMTg0LCA0LCAzMywgMjIyLCA0MSwgMjM5LCA1LCAxODQsIDQsIDMzLCAKKyAgICAyMjIsIDQxLCAyMjgsIDg2LCAxODQsIDQsIDMzLCAyMDIsIDIzOSwgMjE4LCAyMDEsIDE4NCwgNCwgMzMsIDIyMiwgNDEsIAorICAgIDIwMCwgMTczLCAxMTMsIDEsIDE5OSwgMjM1LCAzLCAyMzQsIDQ3LCAxMTMsIDIxNSwgMTAwLCAyMjcsIDE0NiwgMjAzLCA3MSwgCisgICAgMTEzLCAzMywgMjAwLCA3LCAxOTksIDIzNSwgMTk5LCAyMzUsIDIxNiwgOTMsIDExMywgMSwgMjUxLCAxMDQsIDI1MCwgMTA3LCAKKyAgICAxMTMsIDEsIDIwMSwgMjgsIDI1MSwgMTQyLCAxMTMsIDEsIDIwMSwgMjgsIDI0MiwgMjMsIDExMywgMSwgMjAxLCAyOCwgCisgICAgMjM0LCAxMzksIDExMywgMSwgMjAxLCAyOCwgMjI3LCA4NiwgMTEzLCAxLCAyMDEsIDI4LCAyMjUsIDgzLCAxMTMsIDEsIAorICAgIDIwMSwgMjgsIDQ3LCAyMjIsIDQ3LCAxMTMsIDEsIDIwMSwgMjgsIDIxMywgMTIzLCAxMTMsIDEsIDIwMSwgMjgsIDIwNiwgCisgICAgMjE3LCAxMTMsIDEsIDI1MSwgMTA0LCA5MywgNTQsIDExMywgMSwgMjEwLCAyMiwgMywgMjEwLCAyMiwgMjQwLCAxODIsIAorICAgIDExMywgMSwgMjEwLCAyMiwgMywgMjA5LCAxNDMsIDI0MCwgMTgyLCAxMTMsIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDMsIDI2LCAKKyAgICAyMTAsIDIyLCAyNDAsIDE4MiwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyNDIsIDQzLCAyNiwgMjA5LCAxNDMsIDI0MCwgMTgyLCAKKyAgICAxMTMsIDEsIDE0MCwgMywgMjE2LCA5MywgMTEzLCAxLCAxNDAsIDMsIDIxNCwgMTQ3LCAxMTMsIDEsIDE0MCwgMywgMjIyLCAKKyAgICAxNjMsIDExMywgMSwgMjQ4LCAyMTEsIDMsIDI0MiwgNDIsIDExMywgMSwgMjM1LCAxNDgsIDMsIDI0MiwgNDIsIDExMywgMSwgCisgICAgMjQyLCAyNCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMzQsIDE0MCwgMywgMjIyLCAxNjMsIDExMywgMSwgMjAzLCA2NCwgMywgCisgICAgMjQyLCA0MiwgMTEzLCAxLCAxOTksIDkzLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwNiwgMTQ3LCAzLCAyNDIsIDQyLCAxMTMsIAorICAgIDEsIDE5OSwgMjM1LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDQ3LCAyMjcsIDg3LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyNywgCisgICAgODcsIDMsIDI0MiwgNDIsIDExMywgMSwgMjI1LCA4NCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjIsIDQ4LCAzLCAyNDIsIDQyLCAKKyAgICAxMTMsIDEsIDIxOCwgOTAsIDMsIDI0MiwgNDIsIDExMywgMSwgMjEyLCAyMCwgMywgMjQyLCA0MiwgMTEzLCAxLCA0NywgCisgICAgMjE2LCA3NCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTYsIDc0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwNSwgMjgsIDMsIAorICAgIDI0MiwgNDIsIDExMywgMSwgMjE0LCAxMDcsIDMsIDI0MiwgNDIsIDExMywgMSwgMjEzLCAxMjQsIDMsIDI0MiwgNDIsIDExMywgCisgICAgMSwgMjEwLCAyMiwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDYsIDIxOCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMDMsIDY0LCAzLCAKKyAgICAyMzMsIDE5OSwgMTEzLCAxLCAyNDgsIDIxMSwgMywgMjEzLCAyMzIsIDExMywgMSwgMjI3LCA4NywgMywgMjEzLCAyMzIsIAorICAgIDExMywgMSwgMjE2LCA3NCwgMywgMjEzLCAyMzIsIDExMywgMzMsIDE0MCwgMjI1LCA4MywgOSwgMSwgMTQwLCAyMDEsIDkwLCAKKyAgICA2NSwgMTksIDksIDEsIDE0MCwgMjAxLCA5MCwgNDcsIDE5LCA5LCAxLCAyNDgsIDI1MSwgNjUsIDE5LCA5LCAxLCAyNDgsIAorICAgIDI1MSwgNDcsIDE5LCA5LCAxLCAyNDgsIDI1MSwgODIsIDE5LCA5LCAxLCAyNDgsIDI1MSwgMTc5LCAxOSwgOSwgMSwgMjE2LCAKKyAgICA1NSwgNjUsIDE5LCA5LCAxLCAyMTYsIDU1LCA0NywgMTksIDksIDEsIDIxNiwgNTUsIDgyLCAxOSwgOSwgMSwgMjE2LCA1NSwgCisgICAgMTc5LCAxOSwgOSwgMSwgMjQ4LCAyMzksIDY1LCAxOSwgOSwgMSwgMjQ4LCAyMzksIDQ3LCAxOSwgOSwgMSwgMjQ4LCAyMzksIAorICAgIDgyLCAxOSwgOSwgMSwgMjQ4LCAyMzksIDE3OSwgMTksIDksIDEsIDIwNCwgMjQ0LCA2NSwgMTksIDksIDEsIDIwNCwgMjQ0LCAKKyAgICA0NywgMTksIDksIDEsIDIwNCwgMjQ0LCA4MiwgMTksIDksIDEsIDIwNCwgMjQ0LCAxNzksIDE5LCA5LCAxLCAyMDYsIDE4MiwgCisgICAgNjUsIDE5LCA5LCAxLCAyMDYsIDE4MiwgNDcsIDE5LCA5LCAxLCAyMDYsIDE4MiwgODIsIDE5LCA5LCAxLCAyMDYsIDE4MiwgCisgICAgMTc5LCAxOSwgOSwgMSwgMjA0LCAyNDYsIDY1LCAxOSwgOSwgMSwgMjA0LCAyNDYsIDQ3LCAxOSwgOSwgMSwgMjA0LCAyNDYsIAorICAgIDgyLCAxOSwgOSwgMSwgMjA0LCAyNDYsIDE3OSwgMTksIDksIDEsIDIwMywgNTMsIDY1LCAxOSwgOSwgMSwgMjAzLCA1MywgCisgICAgNDcsIDE5LCA5LCAxLCAyMDMsIDUzLCA4MiwgMTksIDksIDEsIDIwMywgNTMsIDE3OSwgMTksIDksIDEsIDIxNiwgNTMsIDY1LCAKKyAgICAxOSwgOSwgMSwgMjE2LCA1MywgNDcsIDE5LCA5LCAxLCAyMTYsIDUzLCA4MiwgMTksIDksIDEsIDIxNiwgNTMsIDE3OSwgMTksIAorICAgIDksIDEsIDIzOSwgMTAwLCA2NSwgMTksIDksIDEsIDIzOSwgMTAwLCA0NywgMTksIDksIDEsIDIzOSwgMTAwLCA4MiwgMTksIAorICAgIDksIDEsIDIzOSwgMTAwLCAxNzksIDE5LCA5LCAxLCAyMTgsIDQ4LCA2NSwgMTksIDksIDEsIDIxOCwgNDgsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjE4LCA0OCwgODIsIDE5LCA5LCAxLCAyMTgsIDQ4LCAxNzksIDE5LCA5LCAxLCAyMDYsIDIwNiwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNiwgNDcsIDE5LCA5LCAxLCAyMDYsIDIwNiwgODIsIDE5LCA5LCAxLCAyMDYsIDIwNiwgMTc5LCAxOSwgOSwgMSwgCisgICAgMjA2LCAyMDQsIDY1LCAxOSwgOSwgMSwgMjA2LCAyMDQsIDQ3LCAxOSwgOSwgMSwgMjA2LCAyMDQsIDgyLCAxOSwgOSwgMSwgCisgICAgMjA2LCAyMDQsIDE3OSwgMTksIDksIDEsIDI0MSwgMjE4LCA2NSwgMTksIDksIDEsIDI0MSwgMjE4LCA0NywgMTksIDksIDEsIAorICAgIDI0MiwgMzcsIDY1LCAxOSwgOSwgMSwgMjQyLCAzNywgNDcsIDE5LCA5LCAxLCAyMzksIDEyOCwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMzksIDEyOCwgNDcsIDE5LCA5LCAxLCAyNDEsIDIxNiwgNjUsIDE5LCA5LCAxLCAyNDEsIDIxNiwgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjcsIDIyMiwgNjUsIDE5LCA5LCAxLCAyMjcsIDIyMiwgNDcsIDE5LCA5LCAxLCAyMTIsIDIwOCwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMTIsIDIwOCwgNDcsIDE5LCA5LCAxLCAyMjYsIDI1MywgNjUsIDE5LCA5LCAxLCAyMjYsIDI1MywgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjYsIDI1MywgODIsIDE5LCA5LCAxLCAyMjYsIDI1MywgMTc5LCAxOSwgOSwgMSwgMjM2LCA3NywgNjUsIDE5LCA5LCAxLCAKKyAgICAyMzYsIDc3LCA0NywgMTksIDksIDEsIDIzNiwgNzcsIDgyLCAxOSwgOSwgMSwgMjM2LCA3NywgMTc5LCAxOSwgOSwgMSwgCisgICAgMjM1LCAzOCwgNjUsIDE5LCA5LCAxLCAyMzUsIDM4LCA0NywgMTksIDksIDEsIDIzNSwgMzgsIDgyLCAxOSwgOSwgMSwgMjM1LCAKKyAgICAzOCwgMTc5LCAxOSwgOSwgMSwgMjE5LCAxNzcsIDY1LCAxOSwgOSwgMSwgMjE5LCAxNzcsIDQ3LCAxOSwgOSwgMSwgMjE5LCAKKyAgICAxNzcsIDgyLCAxOSwgOSwgMSwgMjE5LCAxNzcsIDE3OSwgMTksIDksIDEsIDIxOCwgMjI4LCAyMzUsIDE2NiwgNjUsIDE5LCAKKyAgICA5LCAxLCAyMTgsIDIyOCwgMjM1LCAxNjYsIDQ3LCAxOSwgOSwgMSwgMjEzLCA1LCA2NSwgMTksIDksIDEsIDIxMywgNSwgNDcsIAorICAgIDE5LCA5LCAxLCAyMTMsIDUsIDgyLCAxOSwgOSwgMSwgMjEzLCA1LCAxNzksIDE5LCA5LCAxLCAyMzQsIDExNiwgMywgOTAsIAorICAgIDg4LCA2NSwgMTksIDksIDEsIDIzNCwgMTE2LCAzLCA5MCwgODgsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCAKKyAgICA2NSwgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDgyLCAKKyAgICAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCAxNzksIDE5LCA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDY1LCAxOSwgCisgICAgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgODIsIDE5LCA5LCAxLCAKKyAgICAyMzQsIDExNiwgMjQwLCAyMDgsIDE3OSwgMTksIDksIDEsIDkwLCAyNDksIDcwLCA2NSwgMTksIDksIDEsIDkwLCAyNDksIAorICAgIDcwLCA0NywgMTksIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgMSwgOTAsIDI0OSwgCisgICAgNzAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxNiwgNzMsIDU2LCA5LCAxNiwgNzMsIDU3LCA5LCAxNiwgMTIwLCAKKyAgICAxOTAsIDU2LCA5LCAxNiwgMTIwLCAxOTAsIDU3LCA5LCAxNiwgMTI2LCAxOTAsIDU2LCA5LCAxNiwgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxNiwgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgNTYsIDksIDE2LCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCA1NywgOSwgCisgICAgMTYsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAxNiwgMjM2LCAyMjksIDE5MCwgNTcsIDksIDE2LCA1MywgODMsIDI0OSwgNzcsIAorICAgIDU3LCA5LCAxNiwgMTIwLCAxOTAsIDIwMiwgMjQ4LCA1NiwgOSwgMTYsIDEyMCwgMTkwLCAyMDIsIDI0OCwgNTcsIDksIDE2LCAKKyAgICAyMTMsIDI2LCA5LCAxNiwgNCwgMjA3LCAxMCwgNTYsIDksIDE2LCA0LCAyMDcsIDEwLCA1NywgOSwgMSwgMjIwLCAwLCA2NSwgCisgICAgMTksIDksIDEsIDIyMCwgMCwgNDcsIDE5LCA5LCAxLCAyMjAsIDAsIDgyLCAxOSwgOSwgMSwgMjIwLCAwLCAxNzksIDE5LCA5LCAKKyAgICAxLCAxMDgsIDY1LCAxOSwgOSwgMSwgMTA4LCA0NywgMTksIDksIDEsIDIxNywgMTIyLCA2NSwgMTksIDksIDEsIDIxNywgCisgICAgMTIyLCA0NywgMTksIDksIDEsIDE5OSwgMjEyLCA2NSwgMTksIDksIDEsIDE5OSwgMjEyLCA0NywgMTksIDksIDEsIDEwOCwgCisgICAgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIDEsIDIwMywgNjAsIDY1LCAxOSwgOSwgMSwgMjAzLCA2MCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMjYsIDEzOSwgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMSwgMjI2LCAxMzksIDIxNywgMTIyLCA0NywgMTksIDksIDEsIAorICAgIDIyNiwgMTM5LCAxOTksIDIxMiwgNjUsIDE5LCA5LCAxLCAyMjYsIDEzOSwgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMSwgMTk3LCAKKyAgICA2NSwgMTksIDksIDEsIDE5NywgNDcsIDE5LCA5LCAxLCAxOTcsIDgyLCAxOSwgOSwgMSwgMTk3LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMDQsIDIyLCAyMjcsIDEyLCAyMjYsIDEzOSwgMTQwLCAyMjIsIDE4OCwgODIsIDE5LCA5LCAxLCAyMDQsIDIyLCAyMjcsIAorICAgIDEyLCAyMjYsIDEzOSwgMTQwLCAyMjIsIDE4OCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgCisgICAgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAKKyAgICAyMDQsIDg4LCAzLCAyNTEsIDIyMiwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjUxLCAyMjIsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIwMSwgNzMsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIwMSwgNzMsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDEwOCwgNjUsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTA4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIAorICAgIDg4LCAzLCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjE3LCAxMjIsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgMjEyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIAorICAgIDg4LCAzLCAxOTksIDIxMiwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk3LCA2NSwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTcsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIAorICAgIDE5NywgODIsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA0NywgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgODIsIDE5LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDY1LCAxOSwgOSwgMSwgMjM3LCAxNjIsIDkwLCA0NywgMTksIDksIAorICAgIDEsIDIzNywgMTYyLCA5MCwgODIsIDE5LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAKKyAgICAyMDQsIDg4LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE1NSwgNjUsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIAorICAgIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyNDgsIDI0MSwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxODQsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTAzLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA2LCAKKyAgICAxMDMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMTkzLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDE5MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgMTkzLCA2NSwgCisgICAgMTksIDksIDMzLCAxNTUsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMjYsIDIwNCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAKKyAgICAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxOTMsIDY1LCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDI0MiwgNTMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIAorICAgIDMsIDg0LCA2NSwgMTksIDksIDMzLCAxOTksIDEwOSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIAorICAgIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE5MywgNjUsIDE5LCAKKyAgICA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMzcsIDEzNSwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNywgMTM1LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjE0LCAKKyAgICAxNTMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjE0LCAxNTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIAorICAgIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjYsIAorICAgIDIwNCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCA5MiwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDkwLCAKKyAgICA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA2NSwgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA5MCwgNjUsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgCisgICAgMjA0LCA2NSwgMTksIDksIDMzLCA4NCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCA4NCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMzQsIAorICAgIDExNiwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMzQsIDExNiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAxNTUsIAorICAgIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAKKyAgICA5MCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMDYsIDExNSwgCisgICAgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjEzLCAxNTUsIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgCisgICAgMzMsIDE0MCwgMjIyLCAxODgsIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE2LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjI3LCAzNSwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIzNywgCisgICAgMTU5LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxOCwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIAorICAgIDIyNywgMzcsIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAKKyAgICAxMDYsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCA0NywgMTksIDksIDMzLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAKKyAgICAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCAKKyAgICAyNDgsIDI0MSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjQ4LCAyNDEsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTk5LCAxMDYsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDkwLCA0NywgMTksIAorICAgIDksIDMzLCAyMDYsIDEwMywgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAxOTksIDEwNiwgNDcsIAorICAgIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMjE4LCAyMjgsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDIwNiwgMTAzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDEwMywgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTQsIDE1MywgMywgCisgICAgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCA5MiwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDg0LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIAorICAgIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAKKyAgICAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgCisgICAgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNDAsIDIyMiwgCisgICAgMTg4LCAzLCAyMDcsIDIxMywgMTQwLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDkwLCAKKyAgICAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjE4LCAyMjgsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgOTAsIAorICAgIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIzNCwgMTE2LCAKKyAgICA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTU1LCA4MiwgMTksIAorICAgIDksIDMzLCAyNDgsIDI0MSwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjQ4LCAyNDEsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTkzLCA4MiwgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMDYsIDEwMywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDE5MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAxOTMsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAxNTUsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMTU1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjI2LCAyMDQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTEsIAorICAgIDE4NywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgCisgICAgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCA4MiwgMTksIDksIAorICAgIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIwNywgMTAsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMTk5LCAxMDksIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgCisgICAgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxOTMsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE5MywgODIsIDE5LCAKKyAgICA5LCAzMywgMjM3LCAxMzUsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMzcsIDEzNSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxNCwgCisgICAgMTUzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIAorICAgIDkyLCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCA4MiwgCisgICAgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCA4MiwgMTksIAorICAgIDksIDMzLCAyMjUsIDkyLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgCisgICAgMzMsIDg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIAorICAgIDIwNCwgODIsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCA4MiwgMTksIAorICAgIDksIDMzLCAyMTgsIDIyOCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxOCwgMjI4LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMzQsIDExNiwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIzNCwgCisgICAgMTE2LCAzLCAyMDcsIDIxMywgMTQwLCA4MiwgMTksIDksIDMzLCA5MCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA5MCwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgMTc5LCAxOSwgCisgICAgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAKKyAgICAxNzksIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgCisgICAgOTIsIDE3OSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAxNzksIAorICAgIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIzNCwgMTE2LCAxNzksIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgCisgICAgMjEwLCAxMDUsIDMsIDIzNywgMTU5LCAxNzksIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTgsIDE3OSwgMTksIDksIAorICAgIDMzLCAyMTAsIDEwNSwgMywgMjI3LCAzNywgMTc5LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAxOTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgCisgICAgOSwgMzMsIDE5MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMjYsIDIwNCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIxMiwgNTcsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyNDIsIDUzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMTAsIAorICAgIDYyLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAKKyAgICAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAKKyAgICAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIAorICAgIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDcsIAorICAgIDEwLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgCisgICAgMTcyLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIzNSwgMTk1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMSwgMTg3LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgCisgICAgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAxOTMsIDMsIAorICAgIDkwLCA0NywgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjI2LCAyMDQsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE5MywgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMjYsIDIwNCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjEzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMTMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxMCwgNjIsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDIzNCwgMTE2LCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMzQsIDExNiwgODIsIDE5LCAKKyAgICA5LCAzMywgMjA3LCAxMCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxOTMsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTEsIDE4NywgMywgMTU1LCAxNzksIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAzMywgCisgICAgMjEwLCA2MiwgMywgMTkzLCAxNzksIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTU1LCAxNzksIDE5LCA5LCAzMywgMjEwLCAKKyAgICA2MiwgMywgMjI2LCAyMDQsIDE3OSwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDE5OSwgCisgICAgMTA5LCAzLCA4NCwgMTc5LCAxOSwgOSwgMzMsIDE0MCwgMywgMjM3LCAxNTcsIDQ3LCAxOSwgOSwgMzMsIDE0MCwgMywgMjM3LCAKKyAgICAxNTcsIDY1LCAxOSwgMjE3LCAxOSwgNDksIDIxNiwgMTE1LCAyMTcsIDE5LCA1MSwgMjE2LCAxMTUsIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMTkzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgMTkzLCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDg0LCA4MiwgCisgICAgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIAorICAgIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAKKyAgICAzLCA4NCwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDE5MywgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgCisgICAgMTkzLCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAxNTUsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTU1LCAKKyAgICAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIAorICAgIDksIDMzLCAyMTEsIDE4NywgMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxOTMsIDMsIDE0MCwgCisgICAgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTEsIAorICAgIDE4NywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCA4NCwgMywgODQsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAKKyAgICAxNTUsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTAsIAorICAgIDYyLCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgMjI2LCAyMDQsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgODQsIDMsIDg0LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE1NSwgMywgCisgICAgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMjI2LCAyMDQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAKKyAgICAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCAxNTUsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTkzLCAzLCAKKyAgICA4NCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIAorICAgIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMzUsIDE5NSwgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAKKyAgICAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDg0LCA0NywgCisgICAgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIAorICAgIDMsIDE5MywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDE5MywgNDcsIDE5LCA5LCAzMywgCisgICAgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCAxNTUsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAyMDQsIDMsIDE5MywgODIsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgMjI2LCAKKyAgICAyMDQsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCA4NCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMzQsIDExNiwgMywgCisgICAgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTU1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE4LCAKKyAgICAyMjgsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgODQsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAKKyAgICAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMywgODQsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMjYsIDIwNCwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTkzLCAKKyAgICAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAKKyAgICA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMTkzLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgCisgICAgMTksIDksIDMzLCAxOTMsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjI2LCAKKyAgICAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE1NSwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAxOTMsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCA4NCwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTU1LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgCisgICAgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgMTU1LCA4MiwgMTksIDksIDMzLCA4NCwgMywgCisgICAgMjI2LCAyMDQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMjcsIDg3LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgODQsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDMsIDkwLCA0NywgMTksIAorICAgIDksIDMzLCAxNTUsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMzcsIDEzNSwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTU1LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTkzLCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjI2LCAKKyAgICAyMDQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEyLCAKKyAgICAzMCwgMjAzLCAxOTIsIDI1MCwgMTg5LCAyMjYsIDYwLCAyMDgsIDc3LCAyLCA2NSwgMTksIDksIDMzLCAyMTQsIDE0OSwgCisgICAgMjAzLCAxOTIsIDI1MCwgMTg5LCAyMjYsIDYwLCAyMDgsIDc3LCAyLCA2NSwgMTksIDksIDMzLCAyNTEsIDEyMywgNjUsIDE5LCAKKyAgICA5LCAzMywgMjUxLCAxNTYsIDY1LCAxOSwgOSwgMzMsIDIyMSwgMTA5LCA2NSwgMTksIDksIDMzLCAyMTIsIDMxLCA2NSwgMTksIAorICAgIDksIDMzLCAyMTMsIDIwNiwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNDUsIDY1LCAxOSwgOSwgMzMsIDIwMSwgOTIsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIxMiwgMzAsIDY1LCAxOSwgOSwgMzMsIDIxMiwgMjksIDI1MSwgMTQ1LCAyMDEsIDkxLCA5LCAzMywgMjI3LCAKKyAgICAyMzksIDIxMywgODcsIDU0LCA5LCAzMywgMjQ4LCAxNTQsIDI1MCwgMjUxLCAyNTAsIDI1MiwgNTgsIDIxMSwgMTc0LCA1OCwgCisgICAgMjExLCA2MywgNTgsIDIxMCwgMjUxLCA1OCwgMjEwLCAyNDAsIDU4LCAyMTAsIDIyOSwgNTgsIDIxMCwgMjE4LCA1OCwgMjEwLCAKKyAgICAyMDcsIDU4LCAyMTAsIDE5NiwgNTgsIDIxMCwgMTg1LCA1OCwgMjExLCAxNzMsIDU4LCAyMTEsIDE2MiwgNTgsIDIxMSwgCisgICAgMTUxLCA1OCwgMjExLCAxNDAsIDU4LCAyMTEsIDEyOSwgNTgsIDIxMSwgMTE4LCA1OCwgMjExLCAxMDcsIDIxNSwgMTksIAorICAgIDIzNiwgMjQyLCAzNiwgODMsIDI0NiwgNzAsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDE0MSwgMjQ2LCA3MCwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMTQxLCAyMzYsIDE4MywgMjA4LCA3NiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgMjQ2LCA3OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjEwLCAxNjcsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDIzOCwgNDMsIDgxLCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMTQsIDc5LCA4MSwgMjE1LCAxOSwgMjM2LCAyNDIsIAorICAgIDM2LCA4MywgNDksIDY0LCAyMjQsIDI0NywgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNjQsIDIyNCwgCisgICAgMjQ3LCAyNDgsIDY4LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMzMsIDE3NywgMjM4LCAxOTUsIDM4LCAzMywgNDksIAorICAgIDIzNCwgMjEzLCAzOCwgMzMsIDUxLCAyMzQsIDIxMywgMzgsIDUzLCAyMDUsIDI0MSwgNDksIDIzNCwgMjEzLCAzOCwgNTMsIAorICAgIDIwNSwgMjQxLCA1MSwgMjM0LCAyMTMsIDM4LCAyMjIsIDIyOSwgNDksIDIzNCwgMjEzLCAzOCwgMjIyLCAyMjksIDUxLCAKKyAgICAyMzQsIDIxMywgMzgsIDI0MywgNTYsIDIyMiwgMjI4LCAzOCwgMzMsIDQ5LCAxNjcsIDU3LCAzOCwgMzMsIDUxLCAxNjcsIAorICAgIDU3LCAzOCwgMjA1LCAyNDEsIDQ5LCAxNjcsIDU3LCAzOCwgMjA1LCAyNDEsIDUxLCAxNjcsIDU3LCAzOCwgMjIyLCAyMjksIAorICAgIDQ5LCAxNjcsIDU3LCAzOCwgMjIyLCAyMjksIDUxLCAxNjcsIDU3LCAzOCwgMjQzLCA1NiwgMjIyLCAyMjksIDU3LCAzOCwgCisgICAgMzcsIDIwNSwgMjExLCA0OSwgMjM0LCAyMTMsIDM4LCAzNywgMjA1LCAyMTEsIDUxLCAyMzQsIDIxMywgMjE1LCAxOSwgMjM2LCAKKyAgICAyNDIsIDM2LCA4MywgMTIwLCA3MywgMjI1LCAzOCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjM4LCAxOTEsIDI0MSwgCisgICAgMjQ0LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMzgsIDE4MCwgMjQxLCAyNDQsIDIxNSwgMTksIDIzNiwgMjQyLCAKKyAgICAzNiwgODMsIDEyOCwgMjI0LCAxNzYsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIwMSwgNzQsIDEyOCwgMjI0LCAxNzYsIAorICAgIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyMTYsIDExNSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIAorICAgIDIxNiwgMTE1LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjQyLCAxOTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAKKyAgICAyNDIsIDM2LCA4MywgNTEsIDI0MiwgMTk2LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyMDUsIDE0NiwgCisgICAgMjEwLCA1NSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICA1MSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA1MywgMjUxLCA3MSwgMTU5LCAKKyAgICAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNTMsIDI1MSwgNzEsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCAKKyAgICA4MywgNDksIDI1MSwgNzEsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDI1MSwgNzEsIDE1OSwgMjE1LCAKKyAgICAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDI0MywgMTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNTEsIAorICAgIDI0MywgMTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDY0LCAyNDMsIDE2LCAxNTksIDIxNSwgMTksIAorICAgIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjQzLCAxNiwgMTU5LCAyMTAsIDE0NSwgMjQwLCAxODIsIDY0LCAyMTAsIDE0NSwgCisgICAgMjQwLCAxODIsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCA1MiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIAorICAgIDgzLCA1MSwgNTIsIDE1OSwgMjQxLCAyNDMsIDIxNiwgMjQxLCAyNDcsIDUyLCAyMTYsIDI0MSwgMjAxLCA3NCwgMjE2LCAKKyAgICAyNDEsIDUzLCAyMDEsIDc0LCAyMTYsIDI0MSwgMjQxLCAyNDMsIDEyOCwgMjI0LCAxNzYsIDI0NywgNTIsIDEyOCwgMjI0LCAKKyAgICAxNzYsIDIwMSwgNzQsIDEyOCwgMjI0LCAxNzYsIDQsIDI0NiwgNzAsIDQsIDE0MSwgMjQ2LCA3MCwgNCwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDQsIDIxMCwgMTY3LCA0LCAyNDYsIDc5LCA0LCAyMTQsIDc5LCA4MSwgNCwgMjM4LCA0MywgODEsIDQsIDIzOCwgCisgICAgMTkxLCAyNDEsIDI0NCwgNCwgNDksIDIxNiwgMTE1LCA0LCA1MSwgMjE2LCAxMTUsIDQsIDQ5LCAyNDIsIDE5NiwgMTU5LCA0LCAKKyAgICA1MSwgMjQyLCAxOTYsIDE1OSwgNCwgNDksIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDQsIDUxLCAyMDUsIDE0NiwgMjEwLCAKKyAgICA1NSwgMTU5LCA0LCA0MSwgNTQsIDQsIDI1MSwgODksIDQsIDI1MCwgMTY1LCA0LCA5MywgNTQsIDQsIDIzMywgMzIsIDQsIAorICAgIDIyNCwgMjQxLCA1NCwgNCwgMjM1LCA2NywgNTQsIDQsIDIzOCwgMTIyLCA1NCwgNCwgMjEzLCAxMDYsIDIwOSwgMTYsIDQsIAorICAgIDI0MCwgMTk0LCA1NCwgNCwgMjE2LCAyNywgNTQsIDQsIDI0NiwgNjgsIDI1MCwgMTU1LCA5LCAyMzcsIDE1NywgNjUsIDE5LCAKKyAgICA5LCAyMDYsIDIyNCwgMywgMjM3LCAxNTcsIDU2LCA5LCAyNDIsIDE2LCA2NSwgMTksIDksIDIwNywgNywgMjM2LCAyMTgsIDksIAorICAgIDIyNywgMzUsIDY1LCAxOSwgOSwgMjM3LCAxNTksIDY1LCAxOSwgOSwgMjM3LCAxNTksIDE3OSwgMTksIDksIDI0MiwgMTgsIAorICAgIDY1LCAxOSwgOSwgMjQyLCAxOCwgMTc5LCAxOSwgOSwgMjI3LCAzNywgNjUsIDE5LCA5LCAyMjcsIDM3LCAxNzksIDE5LCA5LCAKKyAgICAyMTAsIDEwNSwgNjUsIDE5LCA5LCAyMTAsIDEwNSwgMTc5LCAxOSwgOSwgMjA3LCAyMzcsIDY1LCAxOSwgOSwgMjA3LCAyMzcsIAorICAgIDE3OSwgMTksIDksIDEsIDIzNCwgMjA0LCA2NSwgMTksIDksIDEsIDE0MCwgMywgMjIyLCAyMjQsIDg4LCA2NSwgMTksIDksIAorICAgIDEsIDE0MCwgMywgMjIyLCAyMjQsIDg4LCA0NywgMTksIDksIDEsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIAorICAgIDEsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDEsIDIwMSwgNzMsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCAKKyAgICA5LCAxLCAyMDEsIDczLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgMjQ4LCAyMjgsIAorICAgIDY1LCAxOSwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgMjQ4LCAyMjgsIDQ3LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCAKKyAgICA4OCwgNjUsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIAorICAgIDgyLCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMTc5LCAxOSwgOSwgMSwgMTQwLCA2NSwgMTksIDksIDEsIDE0MCwgCisgICAgNDcsIDE5LCA5LCAxLCAyNDgsIDI0MSwgNjUsIDE5LCA5LCAxLCAyNDgsIDI0MSwgNDcsIDE5LCA5LCAxLCAyNDgsIDI0MSwgCisgICAgODIsIDE5LCA5LCAxLCAyNDgsIDI0MSwgMTc5LCAxOSwgOSwgMSwgMjA2LCAxODQsIDIyMiwgMTU3LCA2NSwgMTksIDksIDEsIAorICAgIDIwNiwgMTg0LCAyMjIsIDE1NywgNDcsIDE5LCA5LCAxLCAyMDYsIDE4NCwgNjUsIDE5LCA5LCAxLCAyMDYsIDE4NCwgNDcsIAorICAgIDE5LCA5LCAxLCAyMDYsIDE4NCwgODIsIDE5LCA5LCAxLCAyMDYsIDE4NCwgMTc5LCAxOSwgOSwgMSwgMjA2LCAxMDMsIDY1LCAKKyAgICAxOSwgOSwgMSwgMjA2LCAxMDMsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxMDMsIDgyLCAxOSwgOSwgMSwgMjA2LCAxMDMsIDE3OSwgCisgICAgMTksIDksIDEsIDE5MywgNjUsIDE5LCA5LCAxLCAxOTMsIDQ3LCAxOSwgOSwgMSwgMTkzLCA4MiwgMTksIDksIDEsIDE5MywgCisgICAgMTc5LCAxOSwgOSwgMSwgMTU1LCA2NSwgMTksIDksIDEsIDE1NSwgNDcsIDE5LCA5LCAxLCAxNTUsIDgyLCAxOSwgOSwgMSwgCisgICAgMTU1LCAxNzksIDE5LCA5LCAxLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAxLCAyMjYsIDIwNCwgNDcsIDE5LCA5LCAxLCAyMjYsIAorICAgIDIwNCwgODIsIDE5LCA5LCAxLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMSwgMjQyLCAzMCwgNjUsIDE5LCA5LCAxLCAyNDIsIAorICAgIDMwLCA0NywgMTksIDksIDEsIDIwNiwgMTE1LCA2NSwgMTksIDksIDEsIDIwNiwgMTE1LCA0NywgMTksIDksIDEsIDIxMywgCisgICAgMTU1LCA2NSwgMTksIDksIDEsIDIxMywgMTU1LCA0NywgMTksIDksIDEsIDE5OSwgMTA2LCA2NSwgMTksIDksIDEsIDE5OSwgCisgICAgMTA2LCA0NywgMTksIDksIDEsIDIxMSwgMTg3LCA2NSwgMTksIDksIDEsIDIxMSwgMTg3LCA0NywgMTksIDksIDEsIDIxMSwgCisgICAgMTg3LCA4MiwgMTksIDksIDEsIDIxMSwgMTg3LCAxNzksIDE5LCA5LCAxLCAyMTAsIDYyLCA2NSwgMTksIDksIDEsIDIxMCwgCisgICAgNjIsIDQ3LCAxOSwgOSwgMSwgMjEwLCA2MiwgODIsIDE5LCA5LCAxLCAyMTAsIDYyLCAxNzksIDE5LCA5LCAxLCAyMTIsIDU3LCAKKyAgICA2NSwgMTksIDksIDEsIDIxMiwgNTcsIDQ3LCAxOSwgOSwgMSwgMjEyLCA1NywgODIsIDE5LCA5LCAxLCAyMTIsIDU3LCAxNzksIAorICAgIDE5LCA5LCAxLCAyNDIsIDUzLCA2NSwgMTksIDksIDEsIDI0MiwgNTMsIDQ3LCAxOSwgOSwgMSwgMjQyLCA1MywgODIsIDE5LCAKKyAgICA5LCAxLCAyNDIsIDUzLCAxNzksIDE5LCA5LCAxLCAyMDcsIDEwLCA2NSwgMTksIDksIDEsIDIwNywgMTAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjA3LCAxMCwgODIsIDE5LCA5LCAxLCAyMDcsIDEwLCAxNzksIDE5LCA5LCAxLCAxOTksIDEwOSwgNjUsIDE5LCA5LCAxLCAKKyAgICAxOTksIDEwOSwgNDcsIDE5LCA5LCAxLCAxOTksIDEwOSwgODIsIDE5LCA5LCAxLCAxOTksIDEwOSwgMTc5LCAxOSwgOSwgMSwgCisgICAgMjUxLCAxNzIsIDY1LCAxOSwgOSwgMSwgMjUxLCAxNzIsIDQ3LCAxOSwgOSwgMSwgMjUxLCAxNzIsIDgyLCAxOSwgOSwgMSwgCisgICAgMjUxLCAxNzIsIDE3OSwgMTksIDksIDEsIDIzNSwgMTk1LCA2NSwgMTksIDksIDEsIDIzNSwgMTk1LCA0NywgMTksIDksIDEsIAorICAgIDIzNSwgMTk1LCA4MiwgMTksIDksIDEsIDIzNSwgMTk1LCAxNzksIDE5LCA5LCAxLCAyMzcsIDEzNSwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMzcsIDEzNSwgNDcsIDE5LCA5LCAxLCAyMzcsIDEzNSwgODIsIDE5LCA5LCAxLCAyMzcsIDEzNSwgMTc5LCAxOSwgOSwgMSwgCisgICAgMjE0LCAxNTMsIDY1LCAxOSwgOSwgMSwgMjE0LCAxNTMsIDQ3LCAxOSwgOSwgMSwgMjE0LCAxNTMsIDgyLCAxOSwgOSwgMSwgCisgICAgMjE0LCAxNTMsIDE3OSwgMTksIDksIDEsIDIyNywgODcsIDY1LCAxOSwgOSwgMSwgMjI3LCA4NywgNDcsIDE5LCA5LCAxLCAKKyAgICAyMjcsIDg3LCA4MiwgMTksIDksIDEsIDIyNywgODcsIDE3OSwgMTksIDksIDEsIDIyNSwgOTIsIDY1LCAxOSwgOSwgMSwgCisgICAgMjI1LCA5MiwgNDcsIDE5LCA5LCAxLCAyMjUsIDkyLCA4MiwgMTksIDksIDEsIDIyNSwgOTIsIDE3OSwgMTksIDksIDEsIDg0LCAKKyAgICA2NSwgMTksIDksIDEsIDg0LCA0NywgMTksIDksIDEsIDg0LCA4MiwgMTksIDksIDEsIDg0LCAxNzksIDE5LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgNjUsIDE5LCA5LCAxLCAyMTgsIDIyOCwgNDcsIDE5LCA5LCAxLCAyMTgsIDIyOCwgODIsIDE5LCA5LCAxLCAyMTgsIAorICAgIDIyOCwgMTc5LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDQ3LCAxOSwgOSwgMSwgMjM0LCAKKyAgICAxMTYsIDgyLCAxOSwgOSwgMSwgMjM0LCAxMTYsIDE3OSwgMTksIDksIDEsIDIwMSwgNzMsIDY1LCAxOSwgOSwgMSwgMjAxLCAKKyAgICA3MywgNDcsIDE5LCA5LCAxLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDEsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMSwgOTAsIDY1LCAxOSwgOSwgMSwgOTAsIDQ3LCAxOSwgOSwgMSwgOTAsIDgyLCAxOSwgOSwgMSwgOTAsIDE3OSwgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIyMiwgMjI0LCA4OCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAKKyAgICAyMjIsIDIyNCwgODgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAKKyAgICAyMzQsIDIwNCwgMjQ4LCAyMjgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjM0LCAyMDQsIDI0OCwgCisgICAgMjI4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgNDcsIAorICAgIDE5LCAxOTksIDgyLCAyMDEsIDI1LCAyMTgsIDI0MCwgMjA4LCAyNDQsIDE1OCwgMjM4LCA0MywgODEsIDE1OCwgMjE0LCA2MywgCisgICAgODEsIDE1OCwgNDEsIDU0LCAxNTgsIDI0MCwgMTk0LCA1NCwgMTU4LCAyMTYsIDI3LCA1NCwgMTU4LCAyNTEsIDg5LCAxNTgsIAorICAgIDI1MSwgMTMsIDE1OCwgNDksIDIxNiwgMTE1LCAxNTgsIDUxLCAyMTYsIDExNSwgMTU4LCAyNTAsIDE2NSwgMTU4LCA5MywgCisgICAgNTQsIDE1OCwgMjQ2LCA3MCwgMTU4LCAyMzMsIDMyLCAxNTgsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNTgsIDIwOSwgMTYsIAorICAgIDE1OCwgMTcsIDE5OSwgODEsIDE1OCwgMTcsIDEwMiwgMTU4LCAxNywgMTA1LCAxNTgsIDE3LCAxNDcsIDE1OCwgMTcsIDE0OSwgCisgICAgMTU4LCAxNywgMTY0LCAxNTgsIDE3LCAxODcsIDE1OCwgMTcsIDIxMCwgMTM1LCAxNTgsIDE3LCAxOTIsIDE1OCwgMTcsIAorICAgIDIxOSwgMTEzLCAxNTgsIDI0NiwgNzksIDE1OCwgMjEwLCAxNjcsIDE1OCwgMjI0LCAyNDEsIDU0LCAxNTgsIDIzOCwgMTIyLCAKKyAgICA1NCwgMTU4LCAyMzUsIDY3LCA1NCwgMTU4LCAyMTQsIDc5LCA4MSwgMTU4LCAyNDYsIDY4LCAyNTAsIDE1NSwgMTU4LCA4LCAKKyAgICA2LCAxLCA2MiwgMTU4LCA4LCA2LCAxLCAyNTAsIDEwMywgMTU4LCA4LCA2LCAxLCAyNDcsIDIyMywgMTU4LCA4LCA2LCAxLCAKKyAgICAyNDIsIDE1MywgMTU4LCA4LCA2LCAxLCA3MiwgMTU4LCA4LCA2LCAxLCAyMzgsIDUsIDE1OCwgOCwgNiwgMSwgMjM2LCAxNTYsIAorICAgIDE1OCwgOCwgNiwgMSwgMjM0LCAyNDcsIDE1OCwgOCwgNiwgMSwgNzAsIDE1OCwgOCwgNiwgMSwgMjI3LCAyNTEsIDE1OCwgOCwgCisgICAgNiwgMSwgMjI3LCAxMTgsIDE1OCwgOCwgNiwgMSwgMTU2LCAxNTgsIDgsIDYsIDEsIDIyMywgMjQzLCAxNTgsIDgsIDYsIDEsIAorICAgIDIyMCwgMjE0LCAxNTgsIDgsIDYsIDEsIDc0LCAxNTgsIDgsIDYsIDEsIDIxNiwgMjI2LCAxNTgsIDgsIDYsIDEsIDIxNCwgCisgICAgMTY3LCAxNTgsIDgsIDYsIDEsIDE0NiwgMTU4LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTU4LCA4LCA2LCAxLCAyMDcsIDgzLCAKKyAgICAxNTgsIDgsIDYsIDEsIDY2LCAxNTgsIDgsIDYsIDEsIDIwMywgMTY4LCAxNTgsIDgsIDYsIDEsIDIwMSwgMTQ3LCAxNTgsIDgsIAorICAgIDYsIDEsIDIwMCwgMTk1LCAxNTgsIDgsIDYsIDEsIDIwMCwgMTIzLCAxNTgsIDgsIDYsIDEsIDE5OSwgMTU3LCAxNTgsIDQ5LCAKKyAgICA1MiwgMTU5LCAxNTgsIDIxMywgMTA2LCAyMDksIDE2LCAxNTgsIDUxLCA1MiwgMTU5LCAxNTgsIDI0NiwgMTQ3LCAyNTEsIAorICAgIDI1MSwgMTU4LCAxMjgsIDIyNCwgMTc2LCAxNTgsIDIzNSwgNzQsIDI1MSwgMjUxLCAxNTgsIDgsIDQsIDEsIDYyLCAxNTgsIAorICAgIDgsIDQsIDEsIDI1MCwgMTAzLCAxNTgsIDgsIDQsIDEsIDI0NywgMjIzLCAxNTgsIDgsIDQsIDEsIDI0MiwgMTUzLCAxNTgsIAorICAgIDgsIDQsIDEsIDcyLCAxNTgsIDgsIDQsIDEsIDIzOCwgNSwgMTU4LCA4LCA0LCAxLCAyMzYsIDE1NiwgMTU4LCA4LCA0LCAxLCAKKyAgICAyMzQsIDI0NywgMTU4LCA4LCA0LCAxLCA3MCwgMTU4LCA4LCA0LCAxLCAyMjcsIDI1MSwgMTU4LCA4LCA0LCAxLCAyMjcsIAorICAgIDExOCwgMTU4LCA4LCA0LCAxLCAxNTYsIDE1OCwgOCwgNCwgMSwgMjIzLCAyNDMsIDE1OCwgOCwgNCwgMSwgMjIwLCAyMTQsIAorICAgIDE1OCwgOCwgNCwgMSwgNzQsIDE1OCwgOCwgNCwgMSwgMjE2LCAyMjYsIDE1OCwgOCwgNCwgMSwgMjE0LCAxNjcsIDE1OCwgOCwgCisgICAgNCwgMSwgMTQ2LCAxNTgsIDgsIDQsIDEsIDIxMiwgMTIyLCAxNTgsIDgsIDQsIDEsIDIwNywgODMsIDE1OCwgOCwgNCwgMSwgCisgICAgNjYsIDE1OCwgOCwgNCwgMSwgMjAzLCAxNjgsIDE1OCwgOCwgNCwgMSwgMjAxLCAxNDcsIDE1OCwgOCwgNCwgMSwgMjAwLCAKKyAgICAxOTUsIDE1OCwgOCwgNCwgMSwgMjAwLCAxMjMsIDE1OCwgOCwgNCwgMSwgMTk5LCAxNTcsIDE1OCwgNDksIDI0MiwgMTk2LCAKKyAgICAxNTksIDE1OCwgODMsIDIyNCwgMTc2LCAxNTgsIDUxLCAyNDIsIDE5NiwgMTU5LCAxNTgsIDIwNSwgMjQwLCAxNTgsIDQ5LCAKKyAgICA2NCwgMjE2LCAxMTUsIDE1OCwgNTEsIDY0LCAyMTYsIDExNSwgMTMwLCAxNDEsIDIzNiwgMTgzLCAyMDgsIDc2LCAxMzAsIAorICAgIDQ5LCAyNDMsIDE2LCAxNTksIDEzMCwgNTEsIDI0MywgMTYsIDE1OSwgMTMwLCAxNDEsIDI0NiwgNzAsIDEzMCwgNjksIDEwMSwgCisgICAgMjQwLCAxODIsIDEzMCwgNjksIDEsIDIwMSwgMCwgMTMwLCA2OSwgMSwgNCwgNjIsIDEzMCwgNjksIDEsIDQsIDcwLCAxMzAsIAorICAgIDY5LCAxLCA0LCA2NiwgMTMwLCA2OSwgMSwgNCwgNzIsIDEzMCwgNjksIDEsIDQsIDc0LCAxMzAsIDY5LCAxLCA0LCAxODMsIAorICAgIDEzMCwgNjksIDEsIDQsIDE5OSwgMjExLCAxMzAsIDY5LCAxLCA0LCAxOTksIDI0NSwgMTMwLCA2OSwgMSwgNCwgMjA0LCAKKyAgICAyMTUsIDEzMCwgMjI3LCAzMiwgMjE0LCAyNDgsIDIwOSwgMSwgODEsIDEzMCwgNjksIDEsIDYyLCAxMzAsIDY5LCAxLCA3MCwgCisgICAgMTMwLCA2OSwgMSwgNjYsIDEzMCwgNjksIDEsIDcyLCAxMzAsIDY5LCAxLCA3NCwgMTMwLCA2OSwgMSwgMTYxLCAxMzAsIDY5LCAKKyAgICAxLCAyMjYsIDE2MywgMTMwLCA2OSwgMSwgMjI2LCAxNSwgMTMwLCA2OSwgMSwgMjI3LCA4LCAxMzAsIDY5LCAxLCAyMjYsIAorICAgIDg4LCAxMzAsIDY5LCAxLCAyMTIsIDY0LCAxMzAsIDY5LCAxLCAyMDksIDE4MiwgMTMwLCA2OSwgMSwgMjA4LCAyNCwgMTMwLCAKKyAgICA2OSwgMSwgMjExLCAyMDIsIDEzMCwgNjksIDEsIDIwOSwgMjksIDEzMCwgNjksIDEsIDIwNywgMzYsIDEzMCwgNjksIDEsIAorICAgIDIwNiwgMTUsIDEzMCwgNjksIDEsIDIwNCwgMjE1LCAxMzAsIDY5LCAxLCAyMDYsIDIwMSwgMTMwLCA2OSwgMSwgMTM4LCAKKyAgICAxMzAsIDY5LCAxLCAxODgsIDEzMCwgNjksIDEsIDIxOSwgMTUwLCAxMzAsIDY5LCAxLCAyMTgsIDEzMywgMTMwLCA2OSwgMSwgCisgICAgMjIwLCAzNCwgMTMwLCA2OSwgMSwgMjE4LCAyNDEsIDEzMCwgNjksIDEsIDE0NCwgMTMwLCA2OSwgMSwgMjM0LCA3NSwgMTMwLCAKKyAgICA2OSwgMSwgMjMzLCA5NywgMTMwLCA2OSwgMSwgMjM0LCAxMzksIDEzMCwgNjksIDEsIDIzMywgMjA3LCAxMzAsIDY5LCAxLCAKKyAgICAxNzgsIDEzMCwgNjksIDEsIDIyMSwgMjExLCAxMzAsIDY5LCAxLCAyMjEsIDQxLCAxMzAsIDY5LCAxLCAyMjIsIDc2LCAxMzAsIAorICAgIDY5LCAxLCAyMjEsIDEzNiwgMTMwLCA2OSwgMSwgMTgzLCAxMzAsIDY5LCAxLCAxOTksIDIxMSwgMTMwLCA2OSwgMSwgMTk5LCAKKyAgICAyNDUsIDEzMCwgNjksIDEsIDIxMywgMjUyLCAxMzAsIDY5LCAxLCAyMTMsIDg4LCAxMzAsIDY5LCAxLCAyMTIsIDE3NSwgCisgICAgMTMwLCA2OSwgMSwgMjEzLCAxOTAsIDEzMCwgNjksIDEsIDIxMywgMSwgMTMwLCA2OSwgMSwgMjAxLCAxMTQsIDEzMCwgNjksIAorICAgIDEsIDIyMCwgMjE0LCAxMzAsIDY5LCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgMTMwLCA2OSwgMjEwLCAxNzIsIDIwOSwgMSwgCisgICAgODEsIDEzMCwgMjksIDIzNywgOTMsIDEzMCwgMjksIDEsIDIyNiwgMTIxLCAxMzAsIDI5LCAxLCAyMDgsIDE3MSwgMTMwLCAKKyAgICAyOSwgMSwgMjI2LCAxMTQsIDEzMCwgMjksIDEsIDIxOSwgMTQzLCAxMzAsIDI5LCAxLCAyMTksIDE0MSwgMTMwLCAyOSwgMSwgCisgICAgMjE5LCAxNDAsIDEzMCwgMjksIDEsIDIwNSwgMjUzLCAxMzAsIDI5LCAxLCAyMDgsIDE2MCwgMTMwLCAyOSwgMSwgMjEzLCAKKyAgICA3OCwgMTMwLCAyOSwgMSwgMjEzLCA3MywgMTMwLCAyOSwgMSwgMjEzLCA3MCwgMTMwLCAyOSwgMSwgMjEzLCA2MywgMTMwLCAKKyAgICAyOSwgMSwgMjEzLCA1OCwgMTMwLCAyOSwgMSwgMjEzLCA1MywgMTMwLCAyOSwgMSwgMjEzLCA2NCwgMTMwLCAyOSwgMSwgCisgICAgMjEzLCA3NiwgMTMwLCAyOSwgMSwgMjIxLCAxOTcsIDEzMCwgMjksIDEsIDIxNSwgMTkwLCAxMzAsIDI5LCAxLCAyMDgsIAorICAgIDE2OCwgMTMwLCAyOSwgMSwgMjE1LCAxNzksIDEzMCwgMjksIDEsIDIwOSwgMTI5LCAxMzAsIDI5LCAxLCAyMDgsIDE2NSwgCisgICAgMTMwLCAyOSwgMSwgMjI4LCAxNzQsIDEzMCwgMjksIDEsIDI0NiwgMTY4LCAxMzAsIDI5LCAxLCAyMDgsIDE3NSwgMTMwLCAKKyAgICAyOSwgMSwgMjQ2LCAyMzIsIDEzMCwgMjksIDEsIDIyNiwgMTgzLCAxMzAsIDI5LCAxLCAyMDYsIDgwLCAxMzAsIDI5LCAxLCAKKyAgICAyMTUsIDIyNywgMTMwLCAyOSwgMSwgMjM0LCA2NiwgMTMwLCAyOSwgMSwgNjIsIDEzMCwgMjksIDEsIDI1MSwgMjIxLCAxMzAsIAorICAgIDI5LCAxLCAxODMsIDEzMCwgMjksIDEsIDIwMCwgOTgsIDEzMCwgMjksIDEsIDIzOCwgMTQyLCAxMzAsIDI5LCAxLCA3MiwgCisgICAgMTMwLCAyOSwgMSwgMjAwLCAzOCwgMTMwLCAyOSwgMSwgMjAwLCA1MSwgMTMwLCAyOSwgMSwgNzQsIDEzMCwgMjksIDEsIAorICAgIDIwMSwgMTE0LCAxMzAsIDI5LCAxLCAyMDEsIDExMCwgMTMwLCAyOSwgMSwgMjE3LCAxMjEsIDEzMCwgMjksIDEsIDE5OSwgCisgICAgMjQ1LCAxMzAsIDI5LCAxLCA2NiwgMTMwLCAyOSwgMSwgMjAxLCA1MCwgMTMwLCAyOSwgMSwgMjAxLCA2NCwgMTMwLCAyOSwgCisgICAgMSwgMjAxLCAzMSwgMTMwLCAyOSwgMSwgMTk5LCAyMTEsIDEzMCwgMjksIDEsIDIzOCwgNjksIDEzMCwgMjksIDEsIDIwMCwgCisgICAgOSwgMTMwLCAyOSwgMSwgNzAsIDE1OCwgMjQ3LCA1OCwgNTQsIDE1OCwgMjE1LCA1NiwgNTQsIDE1OCwgMjE4LCAyMTUsIDU0LCAKKyAgICAxNTgsIDIyMiwgMjI4LCAxNTgsIDI0OCwgNDYsIDE0OCwgMTU4LCAyMDAsIDQyLCA1NCwgMTU4LCAyMDAsIDI0NiwgNTQsIAorICAgIDEzMCwgMjM2LCAyMzksIDE2MiwgMjAzLCA0MiwgMTMwLCA5OCwgNDgsIDEzMCwgMTgyLCA0OCwgMTMwLCA4NywgNDgsIDEzMCwgCisgICAgMTkxLCA0OCwgMTMwLCA2MywgMjA4LCAxOTMsIDEzMCwgNjQsIDI0NiwgMTU1LCAyMjgsIDYyLCAyNTEsIDU4LCAyNTEsIDgxLCAKKyAgICAyMjgsIDYyLCAyNTEsIDU4LCAyMTAsIDE1NCwgMjI4LCA2MiwgMjUxLCA1OCwgMjA2LCAxNTIsIDIxNywgMTM5LCAyMTMsIAorICAgIDEyOCwgMjQ3LCAyMCwgMjEzLCAxMjgsIDI0NywgMjAsIDMwLCA2OCwgNSwgMjUwLCA4NywgNjIsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA1NiwgNzIsIDMwLCA2OCwgNSwgMjUwLCA2NSwgNzAsIDMwLCA2OCwgNSwgMjUwLCAzMywgNzQsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA4MywgNjYsIDMwLCA2OCwgNSwgMjUwLCAxMDIsIDI0MiwgNTgsIDMwLCA2OCwgNSwgMjUwLCA0OSwgMjQxLCAxNzUsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA4OSwgMjQxLCA3NiwgMzAsIDY4LCA1LCAyNTAsIDc5LCAyNDAsIDIxMSwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDQzLCAyMzksIDEzNywgMzAsIDY4LCA1LCAyNTAsIDM3LCAyMjcsIDI0OCwgMzAsIDY4LCA1LCAyNTAsIDQ4LCAyMjcsIDIyNywgCisgICAgMzAsIDY4LCA1LCAyNTAsIDU4LCAyMjcsIDE2NiwgMzAsIDY4LCA1LCAyNTAsIDI5LCAyMjcsIDE0NywgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDE3LCAxNjEsIDMwLCA2OCwgNSwgMjUwLCA1MCwgMjI3LCA4LCAzMCwgNjgsIDUsIDI1MCwgMjcsIDIyNiwgMTYzLCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgMjQsIDIyNiwgODgsIDMwLCA2OCwgNSwgMjUwLCAxMywgMjI2LCAxNSwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDE0LCAxNzgsIDMwLCA2OCwgNSwgMjUwLCA4MCwgMjIyLCA3NiwgMzAsIDY4LCA1LCAyNTAsIDIxLCAyMjEsIDIxMSwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDc4LCAyMjEsIDEzNiwgMzAsIDY4LCA1LCAyNTAsIDcwLCAyMjEsIDQxLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgOTEsIDE4OCwgMzAsIDY4LCA1LCAyNTAsIDY5LCAyMjAsIDM0LCAzMCwgNjgsIDUsIDI1MCwgNjMsIDIxOSwgMTUwLCAzMCwgCisgICAgNjgsIDUsIDI1MCwgNDIsIDIxOCwgMjQxLCAzMCwgNjgsIDUsIDI1MCwgMzksIDIxOCwgMTMzLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgOTgsIDE3MiwgMzAsIDY4LCA1LCAyNTAsIDIyLCAyMTYsIDczLCAzMCwgNjgsIDUsIDI1MCwgNTUsIDIxNSwgMjA0LCAzMCwgCisgICAgNjgsIDUsIDI1MCwgODIsIDIxNSwgMTA2LCAzMCwgNjgsIDUsIDI1MCwgNDQsIDIxNCwgMjI0LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNzcsIDIxNCwgMTU5LCAzMCwgNjgsIDUsIDI1MCwgMTYsIDIxNCwgMTM5LCAzMCwgNjgsIDUsIDI1MCwgNzIsIDIxNCwgMTIxLCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgNjEsIDIxNCwgMTA5LCAzMCwgNjgsIDUsIDI1MCwgMzQsIDIxMywgMjUyLCAzMCwgNjgsIDUsIAorICAgIDI1MCwgNjYsIDIxMywgMTkwLCAzMCwgNjgsIDUsIDI1MCwgNDEsIDIxMywgODgsIDMwLCA2OCwgNSwgMjUwLCAxMDAsIDIxMywgCisgICAgMSwgMzAsIDY4LCA1LCAyNTAsIDY3LCAyMTIsIDE3NSwgMzAsIDY4LCA1LCAyNTAsIDYyLCAyMTIsIDY0LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgODUsIDIxMSwgMjAyLCAzMCwgNjgsIDUsIDI1MCwgNTMsIDIwOSwgMTgyLCAzMCwgNjgsIDUsIDI1MCwgODEsIDIwOSwgCisgICAgMjksIDMwLCA2OCwgNSwgMjUwLCAzNiwgMjA4LCAyNCwgMzAsIDY4LCA1LCAyNTAsIDM1LCAyMDcsIDM2LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgOTYsIDIwNiwgMjAxLCAzMCwgNjgsIDUsIDI1MCwgNTcsIDIwNiwgMTUsIDMwLCA2OCwgNSwgMjUwLCA5NCwgMTM4LCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgMjUsIDIwNCwgMjE1LCAzMCwgNjgsIDUsIDI1MCwgNDAsIDIwMSwgMTE0LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgMTksIDIwMSwgNjQsIDMwLCA2OCwgNSwgMjUwLCA1NCwgMjAxLCAzMSwgMzAsIDY4LCA1LCAyNTAsIDUyLCAyMDEsIAorICAgIDAsIDMwLCA2OCwgNSwgMjUwLCA3NiwgMTk5LCAxMTQsIDMwLCA2OCwgNSwgMjUwLCAyMCwgMTk5LCA4OSwgMzAsIDY4LCA1LCAKKyAgICAyNTAsIDczLCAxOTksIDE0LCAzMCwgNjgsIDUsIDI1MCwgNjgsIDI1NCwgMTQ3LCAzMCwgNjgsIDUsIDI1MCwgNTEsIDI1NCwgCisgICAgMzUsIDMwLCA2OCwgNSwgMjUwLCAxMCwgMjUwLCAxMzksIDMwLCA2OCwgNSwgMjUwLCAyMywgMjM5LCAxMDMsIDMwLCA2OCwgCisgICAgNSwgMjUwLCA2LCAyMzksIDEwMiwgMzAsIDY4LCA1LCAyNTAsIDQ2LCAyMTgsIDY5LCAzMCwgNjgsIDUsIDI1MCwgNjQsIAorICAgIDIxNCwgMjIyLCAzMCwgNjgsIDUsIDI1MCwgMzIsIDIxNCwgMjI2LCAzMCwgNjgsIDUsIDI1MCwgMTgsIDIxMywgMjUwLCAzMCwgCisgICAgNjgsIDUsIDI1MCwgNjAsIDIxMywgMjQ5LCAzMCwgNjgsIDUsIDI1MCwgMjYsIDIxMywgMCwgMzAsIDY4LCA1LCAyNTAsIDI4LCAKKyAgICAyMDcsIDMzLCAzMCwgNjgsIDUsIDI1MCwgOCwgMjA0LCAxNjgsIDMwLCA2OCwgNSwgMjUwLCA1LCAxMDUsIDMwLCA2OCwgMTYsIAorICAgIDI1MCwgNzUsIDMwLCA2OCwgMTYsIDI1MCwgNzQsIDMwLCA2OCwgMTYsIDI1MCwgNzEsIDMwLCA2OCwgMTYsIDI1MCwgNTksIAorICAgIDMwLCA2OCwgMTYsIDI1MCwgNDcsIDMwLCA2OCwgMTYsIDI1MCwgNDUsIDMwLCA2OCwgMTYsIDI1MCwgMzgsIDMwLCA2OCwgCisgICAgMTYsIDI1MCwgMzEsIDMwLCA2OCwgMTYsIDI1MCwgMzAsIDMwLCA2OCwgMTYsIDI1MCwgMTUsIDMwLCA2OCwgMTYsIDI1MCwgCisgICAgMTIsIDMwLCA2OCwgMTYsIDI1MCwgMTEsIDMwLCA2OCwgMTYsIDI1MCwgOSwgMzAsIDY4LCAxNiwgMjUwLCA3LCAzMCwgNjgsIAorICAgIDEzNiwgMjUwLCA0LCAyMjIsIDE4MCwgMzAsIDY4LCAxMzYsIDI1MCwgMywgMjAwLCAyNTAsIDMwLCA2OCwgMTM2LCAyNTAsIAorICAgIDIsIDI0MSwgMTU4LCAzMCwgNjgsIDEzNiwgMjUwLCAxLCAyMzgsIDExOSwgMzAsIDY4LCAxMzYsIDI1MCwgMCwgMjIyLCAKKyAgICAxNTAsIDMwLCA2OCwgMTM2LCAyNDksIDI1NSwgMjA4LCAxMTYsIDMwLCA2OCwgMTM2LCAyNDksIDI1NCwgMjM4LCA1MCwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMjUzLCAyMTMsIDIxNiwgMzAsIDY4LCAxMzYsIDI0OSwgMjUyLCAyMTAsIDY0LCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAyNTEsIDIzNCwgMTM4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTAsIDIwOCwgMjUxLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyNDksIDI0OCwgMTIyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDgsIDI0MiwgMjU1LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDcsIAorICAgIDI0OCwgMjIsIDMwLCA2OCwgMTM2LCAyNDksIDI0NiwgMjAxLCAzOSwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ1LCAyNDksIDczLCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAyNDQsIDIxNywgODgsIDMwLCA2OCwgMTM2LCAyNDksIDI0MywgMjA4LCAyMjMsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDI0MiwgMjQyLCAxNjEsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyNDEsIDIyNywgNTYsIDMwLCA2OCwgMjIxLCAKKyAgICA5NywgMjQ5LCAyNDAsIDIyNywgNjYsIDMwLCA2OCwgMTM2LCAyNDksIDIzOSwgMjE3LCAxMDMsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIzOCwgMjAxLCAxMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjM3LCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjM2LCAyNTAsIDIyNywgCisgICAgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDIzNSwgMjIyLCAzMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjM0LCAyNDgsIDQ1LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyMzMsIDIzNSwgMTA4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzIsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIzMSwgMjAwLCAyNDEsIDMwLCA2OCwgMTM2LCAyNDksIDIzMCwgMzAsIDY4LCAxMzYsIDI0OSwgMjI5LCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAyMjgsIDIzMywgMTI0LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjcsIDMwLCA2OCwgMTM2LCAyNDksIDIyNiwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjI1LCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjIzLCAyMDQsIDE4MywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjIyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjEsIDMwLCA2OCwgMTM2LCAyNDksIDIyMCwgMjQ2LCAxMDQsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDIxOSwgMzAsIDY4LCAxMzYsIDI0OSwgMjE4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTcsIDIzNiwgNDYsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIxNiwgMjUwLCAyMTQsIDMwLCA2OCwgMTM2LCAyNDksIDIxNSwgMzAsIDY4LCAxMzYsIDI0OSwgMjE0LCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAyMTMsIDMwLCA2OCwgMTM2LCAyNDksIDIxMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjExLCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyMTAsIDMwLCA2OCwgMTM2LCAyNDksIDIwOSwgMzAsIDY4LCAxMzYsIDI0OSwgMjA4LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMDcsIDMwLCA2OCwgMTM2LCAyNDksIDIwNiwgMjIxLCA4OSwgMzAsIDY4LCAxMzYsIDI0OSwgMjA1LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyMDQsIDIwNSwgMTA4LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDMsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDIwMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjAxLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDAsIDMwLCA2OCwgMTM2LCAyNDksIDE5OSwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMTk4LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTcsIDMwLCA2OCwgMTM2LCAyNDksIDE5NiwgMzAsIAorICAgIDY4LCAxMzYsIDI0OSwgMTk1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxOTQsIDMwLCA2OCwgMTM2LCAyNDksIDE5MywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTkyLCAyMzQsIDEwNywgMzAsIDY4LCAxMzYsIDI0OSwgMTcxLCAyMzYsIDI1MSwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMTY4LCAyNDksIDUwLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNjMsIDIwOCwgMjMwLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAxNjIsIDQ4LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNjEsIDMwLCA2OCwgMTM2LCAyNDksIDE2MCwgMjA3LCAxNjksIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDE1OSwgMzAsIDY4LCAxMzYsIDI0OSwgMTU4LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTcsIDIwMSwgMzUsIAorICAgIDI0NywgMTcsIDMwLCA2OCwgMTM2LCAyNDksIDE1NiwgMjQ3LCAxNywgMzAsIDY4LCAxMzYsIDI0OSwgMTU1LCAyNDcsIDE4LCAKKyAgICAyMzYsIDIxNSwgMzAsIDY4LCAxMzYsIDI0OSwgMTU0LCAyMDEsIDM3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTMsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDE1MiwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDE1MSwgMjQxLCAxMSwgMzAsIDY4LCAxMzYsIDI0OSwgMTUwLCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxNDksIDMwLCA2OCwgMTM2LCAyNDksIDE0NywgMzAsIDY4LCAxMzYsIDI0OSwgMTQ2LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAxNDUsIDMwLCA2OCwgMTM2LCAyNDksIDE0NCwgMjQxLCAyNDcsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDE0MywgMzAsIDY4LCAxMzYsIDI0OSwgMTQyLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDEsIDMwLCA2OCwgMTM2LCAyNDksIDE0MCwgCisgICAgMzAsIDY4LCAxMzYsIDI0OSwgMTM5LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMjI0LCAzMCwgNjgsIDEzNiwgMjAyLCAKKyAgICAyNDUsIDI0OSwgMTkxLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTkwLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIAorICAgIDI0OSwgMTg5LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg4LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgCisgICAgMTg3LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg2LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg1LCAKKyAgICAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTg0LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTgzLCAzMCwgNjgsIAorICAgIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTgyLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTgxLCAzMCwgNjgsIDEzNiwgCisgICAgMjAyLCAyNDUsIDI0OSwgMTgwLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTc5LCAzMCwgNjgsIDEzNiwgMjAyLCAKKyAgICAyNDUsIDI0OSwgMTc4LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTc3LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIAorICAgIDI0OSwgMTc2LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTc1LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgCisgICAgMTc0LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTczLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTcyLCAKKyAgICAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTcwLCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY5LCAzMCwgNjgsIAorICAgIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY3LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY2LCAzMCwgNjgsIDEzNiwgCisgICAgMjAyLCAyNDUsIDI0OSwgMTY1LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTY0LCAzMCwgNjgsIDEzNiwgMjAyLCAKKyAgICAyNDUsIDI0OSwgMTQ4LCAzMCwgNjgsIDEzNiwgMjAyLCAyNDUsIDI0OSwgMTM4LCAyNTEsIDIxNCwgMjAwLCAyMzgsIDIxMCwgCisgICAgMTU1LCAyMjQsIDE3NiwgMjUxLCAyMTQsIDIwMCwgMjM4LCAyMTAsIDE1NSwgMjQwLCAxODIsIDI1MSwgMjE0LCAyNDcsIDcsIAorICAgIDgxLCAyNTEsIDIxNCwgNDEsIDEwMiwgMjUxLCAyMTQsIDQxLCAxMDUsIDI1MSwgMjE0LCA0MSwgMTQ3LCAyNTEsIDIxNCwgCisgICAgNDEsIDE0OSwgMjUxLCAyMTQsIDQxLCAxNjQsIDI1MSwgMjE0LCA0MSwgMTg3LCAyNTEsIDIxNCwgNDEsIDIxMCwgMTM1LCAKKyAgICAyNTEsIDIxNCwgNDEsIDE5MiwgMjUxLCAyMTQsIDQxLCAyMTksIDExMywgMjUxLCAyMTQsIDQxLCAyMDYsIDE2NiwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMDQsIDE1OSwgMjUxLCAyMTQsIDQxLCAyMDYsIDY3LCAyNTEsIDIxNCwgNDEsIDIzNiwgMjM1LCAyNTEsIAorICAgIDIxNCwgNDEsIDIzNywgMTA0LCAyNTEsIDIxNCwgNDEsIDIwOSwgOTIsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMjksIDI1MSwgCisgICAgMjE0LCA0MSwgMjM4LCAyMjIsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMDgsIDI1MSwgMjE0LCA0MSwgMTEyLCAyMzMsIDgyLCAKKyAgICAyNTEsIDIxNCwgNDEsIDEyMCwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAxMjYsIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgCisgICAgMjM2LCAyMjksIDIzMywgODIsIDI1MSwgMjE0LCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMDksIAorICAgIDEwNiwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMzgsIDIzMiwgCisgICAgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAxMTIsIDIwNiwgNTAsIAorICAgIDI1MSwgMjE0LCA0MSwgMTIwLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDEyNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAKKyAgICAyMzYsIDIyOSwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzcsIDYxLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIwOSwgCisgICAgMTA2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTM2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTE0LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIwNiwgMTY3LCAyMDYsIAorICAgIDUwLCAyNTEsIDIxNCwgNDEsIDIwNCwgMTYwLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIwNiwgNjgsIDIwNiwgNTAsIDI1MSwgCisgICAgMjE0LCA0MSwgMjM2LCAyMzYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM3LCAxMDUsIDIwNiwgNTAsIDI1MSwgMjE0LCAKKyAgICA0MSwgMjA5LCA5MywgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTAsIDEzMCwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzgsIAorICAgIDIyMywgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMTksIDEwOSwgMjA2LCA1MCwgMjUxLCAyMTQsIDIwMSwgNTMsIDI0OSwgCisgICAgNjUsIDIwMywgMjM5LCAyNTEsIDIxNCwgMjAxLCA1MywgMjM3LCA3MywgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMDEsIDUzLCAKKyAgICAyMTEsIDE5NiwgMjA3LCAyNTQsIDI1MSwgMjE0LCAyMDEsIDUzLCAyMDYsIDc1LCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgCisgICAgNTMsIDIzNiwgMjIyLCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIzOSwgMTQwLCAyMjIsIDc1LCAyMzcsIDczLCAyMDcsIDI1NCwgCisgICAgMjUxLCAyMTQsIDIyNCwgMTU3LCAyMjIsIDc1LCAyMzcsIDczLCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIyMiwgNzUsIDIxMSwgCisgICAgMTk2LCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIyMiwgNzUsIDIwNiwgNzUsIDIwNywgMjU0LCAzMSwgMjUxLCAyNDIsIDI1MCwgCisgICAgMTQxLCAxMTIsIDIxNCwgODcsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjM0LCAyMTMsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDExMiwgMjM5LCAxNjIsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDE2NCwgMzEsIDI1MSwgMjQyLCAyNTAsIAorICAgIDE0MSwgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgNTAsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDUwLCAKKyAgICAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAKKyAgICAxNjcsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgCisgICAgMjUwLCAxNDEsIDExMiwgMjMzLCA4MywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIzMywgCisgICAgODMsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxMTIsIDIwNiwgNTEsIDIwNiwgMjUxLCAzMSwgMjUxLCAKKyAgICAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMDYsIDUxLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAKKyAgICA2MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgMTY3LCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAxMTIsIDIzMywgODMsIDIwOCwgCisgICAgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDYxLCAyMzMsIDgzLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMDYsIDUxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIwNiwgCisgICAgNTEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA2LCA1MSwgMjA4LCAxMDMsIDMxLCAKKyAgICAyNTEsIDI0MiwgMjUwLCAxNDEsIDIwNiwgMTY3LCAyMjEsIDEzOSwgMzEsIDI1MSwgMjQyLCAyMzQsIDEwMSwgMTEyLCAyMTUsIAorICAgIDEyMywgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMDIsIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMTAyLCAzMSwgMjUxLCAKKyAgICAyNDIsIDIzOCwgMTI4LCAxMDUsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMTA1LCAzMSwgMjUxLCAyNDIsIDI0MiwgMTU4LCAKKyAgICAxMjAsIDIzOSwgMTYxLCAzMSwgMjUxLCAyNDIsIDIzOCwgMTI4LCAxMjAsIDIzOSwgMTYxLCAzMSwgMjUxLCAyNDIsIDIwNSwgCisgICAgNzQsIDE2NCwgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMDYsIDE2NiwgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMDYsIAorICAgIDE2NywgMjUxLCAxMDksIDE5LCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIyMiwgCisgICAgMjIsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIAorICAgIDIwNiwgNjcsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjM3LCAxMDQsIDMxLCAyNTEsIDI0MiwgMjA1LCA3NCwgMjM3LCAKKyAgICAxMDUsIDI1MSwgMTA5LCAxOSwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyMDYsIAorICAgIDkwLCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMTIsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgCisgICAgMTI2LCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIzOCwgMTI4LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIAorICAgIDIwNSwgNzQsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIAorICAgIDI1MSwgMjQyLCAyNDcsIDExNSwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMjAsIDExMCwgMjM3LCA2MSwgCisgICAgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMTIsIDIwNiwgNTAsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMjM3LCAKKyAgICA2MSwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyNDEsIDEzOSwgMjM3LCA2MSwgMjIxLCAxMzksIDMxLCAyNTEsIDI0MiwgCisgICAgMjA4LCA2NCwgMjM3LCAxMDUsIDIyMSwgMTM5LCAzMSwgMTEyLCAxNjcsIDU0LCAzMSwgMTEyLCAxNjcsIDIsIDI1MSwgMTA5LCAKKyAgICAxOSwgMzEsIDEyMCwgMjA2LCA3MiwgNTQsIDMxLCAxMjYsIDIxNCwgODYsIDU0LCAzMSwgMjAwLCA0OSwgNTQsIDMxLCAyMDYsIAorICAgIDI1MiwgNTQsIDMxLCAyMzksIDE2MywgNTQsIDMxLCAyMTcsIDEzNiwgNTQsIDMxLCAxMjAsIDIxNywgMTM1LCA1NCwgMzEsIAorICAgIDEyNiwgMjE3LCAxMzUsIDU0LCAzMSwgMjM2LCAyMjksIDIxNywgMTM1LCA1NCwgMzEsIDIzNywgNjEsIDIxNywgMTM1LCA1NCwgCisgICAgMzEsIDIyMiwgMTYsIDU0LCAzMSwgMjI1LCAyMDEsIDI0OSwgNjUsIDU0LCAzMSwgMjI0LCAxNTAsIDU0LCAzMSwgMjE3LCAwLCAKKyAgICA1NCwgMzEsIDIwMCwgMTcyLCA1NCwgMzEsIDI1MCwgMTk1LCA1NCwgMzEsIDI1MCwgMjEwLCA1NCwgMzEsIDIzNSwgODMsIAorICAgIDU0LCAzMSwgMjA1LCAzNSwgMjQ5LCA2NSwgNTQsIDMxLCAxOTksIDgyLCA1NCwgMzEsIDExMiwgMjE0LCA4OCwgNTQsIDMxLCAKKyAgICAyMDksIDEzMSwgNTQsIDMxLCAyMjgsIDk4LCA1NCwgMjE4LCAyMzUsIDU0LCAyMTIsIDI0MCwgMjEwLCAxMjYsIDU0LCAyMTIsIAorICAgIDI0MCwgMjAzLCAyNTQsIDU0LCAyMTIsIDI0MCwgMjEwLCAxNTksIDU0LCAyMTIsIDI0MCwgMjEwLCAxMjQsIDU0LCAyMTIsIAorICAgIDI0MCwgMjQxLCAyNiwgMjEwLCAxMjQsIDU0LCAyMTIsIDI0MCwgMjA5LCAxNTQsIDU0LCAyMTIsIDI0MCwgMjQxLCAxMzUsIAorICAgIDU0LCAyMTIsIDI0MCwgMjE0LCA3MSwgNTQsIDIxMiwgMjQwLCAyMTAsIDE0MywgNTQsIDIxMiwgMjQwLCAyMzksIDExNywgCisgICAgNTQsIDIxMiwgMjQwLCAyNTAsIDE4OSwgNTQsIDIxMiwgMjQwLCAyNDcsIDUxLCA1NCwgMzEsIDE2LCAyMDYsIDIyMiwgMjEzLCAKKyAgICA5MCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE2LCA2MywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE1LCAxMTUsIDIzNCwgCisgICAgMTM2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDYsIDIyNSwgMjM0LCAxMzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NywgCisgICAgMTM4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDYsIDIyNywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjAwLCAyNTAsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDIzNCwgMTA3LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzYsIDM4LCAyMTUsIDI0MCwgMjQxLCAzLCAKKyAgICAyLCAyMDYsIDEzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCA0OCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCA4NSwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjEwLCAzMCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ2LCA5NywgMjE1LCAyNDAsIDI0MSwgMywgCisgICAgMiwgMjIyLCAxNzksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIyMiwgMTI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTEsIAorICAgIDIzOSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjI0LCAyMDUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMTA2LCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyNDcsIDEyMiwgMjE1LCAxMjgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0MCwgMTk1LCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyNDYsIDc2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDksIDYzLCAyMTUsIDI0MCwgMjQxLCAzLCAKKyAgICAyLCAyNDYsIDc3LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDI0OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjEwLCAxNywgCisgICAgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjMzLCAxMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNCwgNzIsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDI0OCwgMTcsIDIyNSwgMTYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NywgMTExLCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyMTMsIDIxNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM5LCAyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgCisgICAgMjM5LCAxNjgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwNCwgMTk5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDI1MiwgCisgICAgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE1LCAxMjksIDIwNSwgMTA4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDIsIDIxNSwgCisgICAgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE2LCAxMzEsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMiwgMjMxLCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyMjQsIDE4OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjE2LCAyMzYsIDI0OSwgMTI5LCAyMTUsIDI0MCwgCisgICAgMjQxLCAzLCAyLCAyMzcsIDIwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzUsIDc1LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAKKyAgICAyMDgsIDY1LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCA0LCAyNTAsIDExMywgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjAxLCA3NCwgCisgICAgMjQ5LCA4NCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMzgsIDIxNywgMTM4LCA5NywgMjI0LCAwLCAxLCA2MiwgMjI0LCAwLCAxLCAKKyAgICA3MiwgMjI0LCAwLCAxLCAyNTAsIDEwMywgMjI0LCAwLCAxLCAyNDgsIDIwMSwgMjI0LCAwLCAxLCAyMzYsIDE1NiwgMjI0LCAKKyAgICAwLCAxLCAyNDIsIDE1MywgMjI0LCAwLCAxLCA3MCwgMjI0LCAwLCAxLCAyMDEsIDE0NywgMjI0LCAwLCAxLCAxOTksIDE1NywgCisgICAgMjI0LCAwLCAxLCAyMDYsIDEyNCwgMjI0LCAwLCAxLCAyMjcsIDI1MSwgMjI0LCAwLCAxLCAyMjcsIDExOCwgMjI0LCAwLCAxLCAKKyAgICAyMTQsIDE2NywgMjI0LCAwLCAxLCAxNTYsIDIyNCwgMCwgMSwgMjIzLCAyNDMsIDIyNCwgMCwgMSwgMjIwLCAyMTQsIDIyNCwgCisgICAgMCwgMSwgMjIxLCAxNDEsIDIyNCwgMCwgMSwgMjE5LCAyMiwgMjI0LCAwLCAxLCA2NiwgMjI0LCAwLCAxLCAyMTYsIDIyNiwgCisgICAgMjI0LCAwLCAxLCAyMjYsIDExMCwgMjI0LCAwLCAxLCAxNDYsIDIyNCwgMCwgMSwgMjEyLCAxMjIsIDIyNCwgMCwgMSwgMjA3LCAKKyAgICA4MywgMjI0LCAwLCAxLCAyMDUsIDAsIDIyNCwgMCwgMSwgMjUxLCA4NSwgMjI0LCAwLCAxLCAyMzgsIDE3OSwgMjI0LCAwLCAKKyAgICAxLCAyMzQsIDI0NywgMjI0LCAwLCAxLCAyMDAsIDE5NSwgMjQ3LCAxMjgsIDEsIDYyLCAyNDcsIDEyOCwgMSwgMjE2LCAyMTIsIAorICAgIDI0NywgMTI4LCAxLCAyNDIsIDE1MywgMjQ3LCAxMjgsIDEsIDE1NiwgMjQ3LCAxMjgsIDEsIDIwMywgMTgwLCAyNDcsIDEyOCwgCisgICAgMSwgMTQ2LCAyNDcsIDEyOCwgMSwgMjI1LCA0NCwgMjQ3LCAxMjgsIDEsIDI1NCwgMTQ3LCAyNDcsIDEyOCwgMSwgMjE0LCAKKyAgICAxNjcsIDI0NywgMTI4LCAxLCAyNTAsIDEwMywgMjQ3LCAxMjgsIDEsIDIyMywgMjQzLCAyNDcsIDEyOCwgMSwgNzQsIDI0NywgCisgICAgMTI4LCAxLCAyNDIsIDYwLCAyNDcsIDEyOCwgMSwgMjA3LCA4MywgMjQ3LCAxMjgsIDEsIDIxMCwgMTE2LCAyNDcsIDEyOCwgCisgICAgMSwgMjEwLCAxMTUsIDI0NywgMTI4LCAxLCAyMTIsIDEyMiwgMjQ3LCAxMjgsIDEsIDI0NywgMjIyLCAyNDcsIDEyOCwgMSwgCisgICAgNjYsIDI0NywgMTI4LCAxLCAyMTksIDIyLCAyNDcsIDEyOCwgMSwgMjAwLCAxOTUsIDI0NywgMTI4LCAxLCAyMjAsIDIxNCwgCisgICAgMjQ3LCAxMjgsIDEsIDIwNCwgMjU1LCAyNDcsIDEyOCwgMSwgMjE2LCAyMjYsIDI0NywgMTI4LCAxLCAyMDgsIDE4MiwgMjQ3LCAKKyAgICAxMjgsIDEsIDcwLCAyNDcsIDEyOCwgMSwgNzIsIDI0NywgMTI4LCAxLCAyMDMsIDE3NywgMjQ3LCAxMjgsIDEsIDIyNywgCisgICAgMTE4LCAyNDcsIDEyOCwgMSwgMjI3LCAxMDksIDI0NywgMTI4LCAxLCAyMjAsIDc3LCAyNDcsIDEyOCwgMSwgMjAzLCAxODIsIAorICAgIDI0NywgMTI4LCAxLCAyMzYsIDE1NiwgMjQ3LCAxMjgsIDEsIDIzNiwgOTEsIDI0NywgMTI4LCAxLCAyMDgsIDEyMywgMjQ3LCAKKyAgICAxMjgsIDEsIDIwOCwgMTIyLCAyNDcsIDEyOCwgMSwgMjE5LCAyNTUsIDI0NywgMTI4LCAxLCAyMjgsIDE1MSwgMjQ3LCAxMjgsIAorICAgIDEsIDI0NywgMjIxLCAyNDcsIDEyOCwgMSwgMjA1LCAwLCAyNDcsIDEyOCwgMSwgMjAzLCAxNzksIDI0NywgMTI4LCAxLCAKKyAgICAyMTIsIDIxNiwgMjQ3LCAxMjgsIDEsIDIyMiwgMTE1LCAyNDcsIDEyOCwgMSwgMjIyLCAxMTQsIDI0NywgMTI4LCAxLCAyMjIsIAorICAgIDExMywgMjQ3LCAxMjgsIDEsIDIyMiwgMTEyLCAyNDcsIDEyOCwgMSwgMjI1LCA0MywgMjQ3LCAxMjgsIDEsIDIzOSwgMjgsIAorICAgIDI0NywgMTI4LCAxLCAyMDMsIDE3OCwgODUsIDIzOCwgMTMxLCAyMDYsIDQ5LCA4MSwgODUsIDIzOCwgMTMxLCAxNywgMTAyLCAKKyAgICA4NSwgMjM4LCAxMzEsIDE3LCAxMDUsIDg1LCAyMzgsIDEzMSwgMTcsIDE0NywgODUsIDIzOCwgMTMxLCAxNywgMTQ5LCA4NSwgCisgICAgMjM4LCAxMzEsIDE3LCAxNjQsIDg1LCAyMzgsIDEzMSwgMTcsIDE4NywgODUsIDIzOCwgMTMxLCAxNywgMjEwLCAxMzUsIDg1LCAKKyAgICAyMzgsIDEzMSwgMTcsIDE5MiwgODUsIDIzOCwgMTMxLCAxNywgMjE5LCAxMTMsIDg1LCAyMzgsIDEzMSwgNDEsIDIwNiwgCisgICAgMTY2LCA4NSwgMjM4LCAxMzEsIDQxLCAyMDQsIDE1OSwgODUsIDIzOCwgMTMxLCA0MSwgMjA2LCA2NywgODUsIDIzOCwgMTMxLCAKKyAgICA0MSwgMjM2LCAyMzUsIDg1LCAyMzgsIDEzMSwgNDEsIDIzNywgMTA0LCA4NSwgMjM4LCAxMzEsIDQxLCAyMDksIDkyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTAsIDEyOSwgODUsIDIzOCwgMTMxLCA0MSwgMjM4LCAyMjIsIDg1LCAyMzgsIDEzMSwgNDEsIAorICAgIDIxOSwgMTA4LCA4NSwgMjM4LCAxMzEsIDQxLCAxMTIsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDEyMCwgMjMzLCA4MiwgCisgICAgODUsIDIzOCwgMTMxLCA0MSwgMTI2LCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMjA5LCAxMDYsIDIzMywgODIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAyMzgsIDIzMiwgMjMzLCA4MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDQwLCAzOSwgMSwgNjIsIDQwLCAzOSwgMSwgMjQ5LCA4LCA0MCwgCisgICAgMzksIDEsIDIyNywgOCwgNDAsIDM5LCAxLCAyNDEsIDE3NSwgNDAsIDM5LCAxLCA3MiwgNDAsIDM5LCAxLCAyMDMsIDU5LCAKKyAgICA0MCwgMzksIDEsIDE5OSwgODksIDQwLCAzOSwgMSwgMjM0LCAxMzksIDQwLCAzOSwgMSwgMjA2LCAxMDYsIDQwLCAzOSwgMSwgCisgICAgNzAsIDQwLCAzOSwgMSwgMTYxLCA0MCwgMzksIDEsIDIzOCwgMjA5LCA0MCwgMzksIDEsIDIzOCwgMTkwLCA0MCwgMzksIDEsIAorICAgIDIzOCwgMTc5LCA0MCwgMzksIDEsIDIzOCwgOTQsIDQwLCAzOSwgMSwgNzQsIDQwLCAzOSwgMSwgMjE2LCA3MywgNDAsIDM5LCAKKyAgICAxLCAyMTAsIDY1LCA0MCwgMzksIDEsIDIyNiwgMTUsIDQwLCAzOSwgMSwgMjM4LCAxMTUsIDQwLCAzOSwgMSwgMjM4LCAxMDQsIAorICAgIDQwLCAzOSwgMSwgMjA2LCAyMDEsIDQwLCAzOSwgMSwgNjYsIDQwLCAzOSwgMSwgMjM4LCAyMTIsIDQwLCAzOSwgMSwgMjE1LCAKKyAgICAyMzIsIDQwLCAzOSwgMSwgMjI2LCAxOTIsIDQwLCAzOSwgMSwgMjM4LCAyNDgsIDQwLCAzOSwgMSwgMjM4LCAxMDYsIDQwLCAKKyAgICAzOSwgMSwgMjQ3LCA4LCA0MCwgMzksIDEsIDIyOCwgMTUxLCA0MCwgMzksIDEsIDIwMywgMTgyLCA0MCwgMzksIDEsIDIzOCwgCisgICAgODcsIDQwLCAzOSwgMjE4LCA5MywgMTAyLCA0MCwgMzksIDIxOCwgOTMsIDE2NCwgNDAsIDM5LCAyMTgsIDkzLCAyMDYsIAorICAgIDE2NiwgNDAsIDM5LCAyMTgsIDkzLCAyMzcsIDEwNCwgMjM1LCA5MywgMSwgMjUxLCAxNzksIDIzNSwgOTMsIDEsIDI0OSwgCisgICAgMTAxLCAyMzUsIDkzLCAxLCAyMzUsIDE1OCwgMjM1LCA5MywgMSwgMjQyLCAzOSwgMjM1LCA5MywgMSwgMjUxLCAxNzUsIAorICAgIDIzNSwgOTMsIDEsIDIxNCwgMTUwLCAyMzUsIDkzLCAxLCAyMjgsIDcsIDIzNSwgOTMsIDEsIDIzNCwgMjI2LCAyMzUsIDkzLCAKKyAgICAxLCAyMDYsIDYzLCAyMzUsIDkzLCAxLCAyMzgsIDIyMCwgMjM1LCA5MywgMSwgMjI1LCAyMzgsIDIzNSwgOTMsIDEsIDIyNSwgCisgICAgMTUzLCAyMzUsIDkzLCAxLCAyMjIsIDE3MiwgMjM1LCA5MywgMSwgMjIwLCAxMTIsIDIzNSwgOTMsIDEsIDIyNywgMjIwLCAKKyAgICAyMzUsIDkzLCAxLCAyMDMsIDIwMCwgMjM1LCA5MywgMSwgMjE2LCAxODcsIDIzNSwgOTMsIDEsIDIxOSwgMTA4LCAyMzUsIAorICAgIDkzLCAxLCAyMTMsIDIyOCwgMjM1LCA5MywgMSwgMjExLCAyNDIsIDIzNSwgOTMsIDEsIDIwNiwgMTgwLCAyMzUsIDkzLCAxLCAKKyAgICAyMDEsIDEwLCAyMzUsIDkzLCAxLCAyMzcsIDE3NSwgMjM1LCA5MywgMSwgMjI4LCAxNTUsIDIzNSwgOTMsIDEsIDIzMywgNjYsIAorICAgIDIzNSwgOTMsIDEsIDIxNywgMTAsIDIzNSwgOTMsIDEsIDIxOSwgMTE0LCAyMzMsIDgyLCA0MCwgMjE2LCAxOCwgMSwgMjUxLCAKKyAgICA4NSwgNDAsIDIxNiwgMTgsIDEsIDI0OCwgMywgNDAsIDIxNiwgMTgsIDEsIDIzNiwgNzMsIDQwLCAyMTYsIDE4LCAxLCAyNDAsIAorICAgIDE5OSwgNDAsIDIxNiwgMTgsIDEsIDcyLCA0MCwgMjE2LCAxOCwgMSwgMTk5LCA1OSwgNDAsIDIxNiwgMTgsIDEsIDIzOSwgCisgICAgODUsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDk2LCA0MCwgMjE2LCAxOCwgMSwgMjM5LCA4MywgNDAsIDIxNiwgMTgsIDEsIDcwLCAKKyAgICA0MCwgMjE2LCAxOCwgMSwgMjI2LCA3NywgNDAsIDIxNiwgMTgsIDEsIDIyNSwgMTIsIDQwLCAyMTYsIDE4LCAxLCAyMjIsIAorICAgIDM4LCA0MCwgMjE2LCAxOCwgMSwgMjIwLCAyMiwgNDAsIDIxNiwgMTgsIDEsIDIwMiwgMTc4LCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjE2LCA2MCwgNDAsIDIxNiwgMTgsIDEsIDIxMywgMTUzLCA0MCwgMjE2LCAxOCwgMSwgMjA5LCAxNjEsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDcsIDgsIDQwLCAyMTYsIDE4LCAxLCA2NiwgNDAsIDIxNiwgMTgsIDEsIDI0NiwgMjQ1LCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjEwLCAxLCA0MCwgMjE2LCAxOCwgMSwgMjEwLCA2NywgNDAsIDIxNiwgMTgsIDEsIDE5OSwgMjEzLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjAwLCAyOSwgNDAsIDIxNiwgMTgsIDEsIDc0LCA0MCwgMjE2LCAxOCwgMSwgMjE3LCA2MywgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIzOCwgMjQ4LCA0MCwgMjE2LCAxOCwgMSwgMTQ0LCA0MCwgMjE2LCAxOCwgMSwgMjA1LCAxMCwgNDAsIDIxNiwgMTgsIDEsIAorICAgIDIwMywgNDcsIDQwLCAyMTYsIDE4LCAxLCAyMDAsIDMzLCA0MCwgMjE2LCAxOCwgMSwgMjAwLCAzMSwgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwMCwgNjUsIDQwLCAyMTYsIDE4LCAxLCAyMjgsIDE3OCwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgMjExLCA0MCwgMjE2LCAKKyAgICAxOCwgMSwgMTgzLCA0MCwgMjE2LCAxOCwgMSwgMjMyLCAyNDAsIDM4LCA0MCwgMjE2LCAxOCwgMSwgMjUxLCA4NSwgMzgsIAorICAgIDQwLCAyMTYsIDE4LCAxLCAyNDAsIDE5OSwgMzgsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDk2LCAzOCwgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIyMCwgMjIsIDM4LCA0MCwgMjE2LCAxOCwgMSwgMjA5LCAxNjEsIDIwNCwgMjYsIDEsIDI1MSwgMTE2LCAyMDQsIDI2LCAKKyAgICAxLCAyNDgsIDIwOCwgMjA0LCAyNiwgMSwgMjM2LCA2MSwgMjA0LCAyNiwgMSwgMjI2LCAyMDcsIDIwNCwgMjYsIDEsIDI0MSwgCisgICAgMTM2LCAyMDQsIDI2LCAxLCAyMzMsIDIwNywgMjA0LCAyNiwgMSwgMjAxLCAwLCAyMDQsIDI2LCAxLCAxOTksIDgwLCAyMDQsIAorICAgIDI2LCAxLCAyMzMsIDExNiwgMjA0LCAyNiwgMSwgMjA2LCAxNDYsIDIwNCwgMjYsIDEsIDE5OSwgMjM0LCAyMDQsIDI2LCAxLCAKKyAgICAyMjcsIDg2LCAyMDQsIDI2LCAxLCAyMTAsIDIxLCAyMDQsIDI2LCAxLCAyMjUsIDg3LCAyMDQsIDI2LCAxLCAyMjIsIDQ3LCAKKyAgICAyMDQsIDI2LCAxLCAyNDEsIDk2LCAyMDQsIDI2LCAxLCAyMTgsIDg5LCAyMDQsIDI2LCAxLCAxOTksIDMsIDIwNCwgMjYsIDEsIAorICAgIDIxMiwgMTgsIDIwNCwgMjYsIDEsIDI1MSwgMTcxLCAyMDQsIDI2LCAxLCAyMTQsIDIyNCwgMjA0LCAyNiwgMSwgMjEyLCA1NSwgCisgICAgMjA0LCAyNiwgMSwgMjE0LCAxMDIsIDIwNCwgMjYsIDEsIDIxMywgMjA3LCAyMDQsIDI2LCAxLCAyMDYsIDExMCwgMjA0LCAKKyAgICAyNiwgMSwgMjM1LCAxOTQsIDIwNCwgMjYsIDEsIDEzOCwgMjA0LCAyNiwgMSwgNzAsIDIwNCwgMjYsIDEsIDY2LCAyMDQsIAorICAgIDI2LCAxLCAyMDgsIDEzNCwgMjA0LCAyNiwgMjAwLCAyMzgsIDI0MCwgMjM5LCA0MCwgMjE2LCAxMiwgMiwgNjIsIDQwLCAKKyAgICAyMTYsIDEyLCAyLCA3MCwgNDAsIDIxNiwgMTIsIDIsIDY2LCA0MCwgMjE2LCAxMiwgMiwgMTYxLCA0MCwgMjE2LCAxMiwgMiwgCisgICAgMjI2LCAxNSwgNDAsIDIxNiwgMTIsIDIsIDIzNiwgODksIDQwLCAyMTYsIDEyLCAyLCAyMzUsIDUwLCA0MCwgMjE2LCAxMiwgCisgICAgMiwgMjAwLCAxODEsIDQwLCAyMTYsIDEyLCAyLCAyNDcsIDE5MCwgNDAsIDIxNiwgMTIsIDIsIDIyNywgMjQ4LCA0MCwgMjE2LCAKKyAgICAxMiwgMiwgMjI3LCAyMDcsIDQwLCAyMTYsIDEyLCAyLCAyMDcsIDM2LCA0MCwgMjE2LCAxMiwgMiwgMjA0LCAyMTUsIDQwLCAKKyAgICAyMTYsIDEyLCAyLCAyNDIsIDU4LCA0MCwgMjE2LCAxMiwgMiwgMjQxLCA3NiwgNDAsIDIxNiwgMTIsIDIsIDIzOSwgMTM3LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjA2LCAxMjIsIDQwLCAyMTYsIDEyLCAyLCAxNzIsIDQwLCAyMTYsIDEyLCAyLCAyNDksIDEzNiwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIzNywgMTk1LCA0MCwgMjE2LCAxMiwgMiwgMTg4LCA0MCwgMjE2LCAxMiwgMiwgMjE4LCAxMzMsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAxNzgsIDQwLCAyMTYsIDEyLCAyLCAyMjEsIDIxMSwgNDAsIDIxNiwgMTIsIDIsIDIyMSwgNDEsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAxODMsIDQwLCAyMTYsIDEyLCAyLCAyMDMsIDkwLCA0MCwgMjE2LCAxMiwgMiwgMjAyLCAyMzQsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMTMsIDI1MiwgNDAsIDIxNiwgMTIsIDIsIDIxMiwgMTc1LCA0MCwgMjE2LCAxMiwgMiwgMTk0LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjEyLCA2NCwgNDAsIDIxNiwgMTIsIDIsIDE5OSwgMTE0LCA0MCwgMjE2LCAxMiwgMiwgMjEwLCAKKyAgICAxMTQsIDQwLCAyMTYsIDEyLCAyLCAyMDgsIDE3OSwgNDAsIDIxNiwgMTIsIDIsIDE0NCwgNDAsIDIxNiwgMTIsIDIsIDI1MCwgCisgICAgMTMzLCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAxMzIsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIDEzMSwgNDAsIDIxNiwgMTIsIDIsIAorICAgIDIwMCwgMTUyLCA0MCwgMjE2LCAxMiwgMiwgMjQyLCAzNSwgNDAsIDIxNiwgMTIsIDIsIDI0MiwgMzQsIDQwLCAyMTYsIDEyLCAKKyAgICAyLCAyNDksIDExMSwgNDAsIDIxNiwgMTIsIDIsIDI0NywgMjQyLCA0MCwgMjE2LCAxMiwgMjAwLCAyMzgsIDI0MCwgMjM5LCAKKyAgICA0MCwgMjE2LCAxMiwgNDEsIDEwMiwgNDAsIDIxNiwgMTIsIDQxLCAxMDUsIDQwLCAyMTYsIDEyLCA0MSwgMjA2LCAxNjYsIAorICAgIDQwLCAyMTYsIDEyLCA0MSwgMjA0LCAxNTksIDQwLCAyMTYsIDEyLCA0MSwgMjMzLCA4MiwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgCisgICAgNzAsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDcyLCAyNDEsIDExNiwgNiwgMSwgMTY4LCA2MiwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDE2OCwgMjUxLCAxODUsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDc0LCAyNDEsIDExNiwgNiwgMSwgMTY4LCAyMTcsIDYzLCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDcwLCAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDcyLCAyNDEsIDExNiwgNiwgCisgICAgMSwgMjA5LCAyNTAsIDYyLCAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDI1MSwgMTg1LCAyNDEsIDExNiwgNiwgMSwgMjA5LCAKKyAgICAyNTAsIDc0LCAyNDEsIDExNiwgNiwgMSwgMjA5LCAyNTAsIDIxNywgNjMsIDI0MSwgMTE2LCA2LCAxLCAyNTAsIDExMiwgCisgICAgMjQxLCAxMTYsIDYsIDEsIDIxNiwgMjM4LCAyNDEsIDExNiwgNiwgMSwgMjAwLCAyMTYsIDI0MSwgMTE2LCA2LCAxLCAyMDAsIAorICAgIDQ4LCAyNDEsIDExNiwgNiwgMSwgMjM0LCAyNDcsIDI0MSwgMTE2LCA2LCAxLCAyMTYsIDYxLCAyNDEsIDExNiwgNiwgMSwgCisgICAgMjQ4LCAyNTIsIDI0MSwgMTE2LCA2LCAxLCAyMDYsIDE5MCwgMjQxLCAxMTYsIDYsIDEsIDI0MSwgMTYxLCAyNDEsIDExNiwgCisgICAgNiwgMSwgMjQ3LCA0LCAyNDEsIDExNiwgNiwgMSwgMjI3LCAyMjUsIDI0MSwgMTE2LCA2LCAxLCAyMjcsIDE1LCAyNDEsIAorICAgIDExNiwgNiwgMSwgMjM2LCAzNiwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMjQ4LCAyNDEsIDExNiwgNiwgMSwgMjAzLCA1NCwgCisgICAgMjQxLCAxMTYsIDYsIDEsIDIzOCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAyMDYsIDEwNCwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgCisgICAgMTA0LCAyNDEsIDExNiwgNiwgMSwgMTk5LCA4NywgMjQxLCAxMTYsIDYsIDEsIDIzOCwgOTQsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAxOTksIDY3LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAxMTUsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDIwOSwgMjQxLCAxMTYsIDYsIAorICAgIDEsIDIzOCwgMTkwLCAyNDEsIDExNiwgNiwgMSwgMjM4LCAxNzksIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDE2NSwgMjQxLCAKKyAgICAxMTYsIDYsIDEsIDIxNywgMTA1LCAyNDEsIDExNiwgNiwgMSwgMjM4LCA1MSwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzAsIAorICAgIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDcyLCAyNDEsIDExNiwgNCwgMSwgMTY4LCA2MiwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgCisgICAgMjUxLCAxODUsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDc0LCAyNDEsIDExNiwgNCwgMSwgMTY4LCAyMTcsIDYzLCAyNDEsIAorICAgIDExNiwgNCwgMSwgMjA5LCAyNTAsIDcwLCAyNDEsIDExNiwgNCwgMSwgMjA5LCAyNTAsIDcyLCAyNDEsIDExNiwgNCwgMSwgCisgICAgMjA5LCAyNTAsIDYyLCAyNDEsIDExNiwgNCwgMSwgMjA5LCAyNTAsIDI1MSwgMTg1LCAyNDEsIDExNiwgNCwgMSwgMjA5LCAKKyAgICAyNTAsIDc0LCAyNDEsIDExNiwgNCwgMSwgMjA5LCAyNTAsIDIxNywgNjMsIDI0MSwgMTE2LCA0LCAxLCAyNTAsIDExMiwgCisgICAgMjQxLCAxMTYsIDQsIDEsIDIxNiwgMjM4LCAyNDEsIDExNiwgNCwgMSwgMjAwLCAyMTYsIDI0MSwgMTE2LCA0LCAxLCAyMDAsIAorICAgIDQ4LCAyNDEsIDExNiwgNCwgMSwgMjM0LCAyNDcsIDI0MSwgMTE2LCA0LCAxLCAyMTYsIDYxLCAyNDEsIDExNiwgNCwgMSwgCisgICAgMjQ4LCAyNTIsIDI0MSwgMTE2LCA0LCAxLCAyMDYsIDE5MCwgMjQxLCAxMTYsIDQsIDEsIDI0MSwgMTYxLCAyNDEsIDExNiwgCisgICAgNCwgMSwgMjQ3LCA0LCAyNDEsIDExNiwgNCwgMSwgMjI3LCAyMjUsIDI0MSwgMTE2LCA0LCAxLCAyMjcsIDE1LCAyNDEsIAorICAgIDExNiwgNCwgMSwgMjM2LCAzNiwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMjQ4LCAyNDEsIDExNiwgNCwgMSwgMjAzLCA1NCwgCisgICAgMjQxLCAxMTYsIDQsIDEsIDIzOCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAyMDYsIDEwNCwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgCisgICAgMTA0LCAyNDEsIDExNiwgNCwgMSwgMTk5LCA4NywgMjQxLCAxMTYsIDQsIDEsIDIzOCwgOTQsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAxOTksIDY3LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAxMTUsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDIwOSwgMjQxLCAxMTYsIDQsIAorICAgIDEsIDIzOCwgMTkwLCAyNDEsIDExNiwgNCwgMSwgMjM4LCAxNzksIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDE2NSwgMjQxLCAKKyAgICAxMTYsIDQsIDEsIDIxNywgMTA1LCAyNDEsIDExNiwgNCwgMSwgMjM4LCA1MSwgMjEwLCA3MiwgMSwgMjE2LCA1OCwgMjEwLCAKKyAgICA3MiwgMSwgMjA1LCAxNDQsIDIxMCwgNzIsIDEsIDIyNiwgMTU5LCAyMTAsIDcyLCAxLCAyMzcsIDE0MCwgMjEwLCA3MiwgMSwgCisgICAgMjA2LCA3OSwgMjEwLCA3MiwgMSwgMjA5LCAyOSwgMjEwLCA3MiwgMSwgMjA3LCAyMDQsIDIxMCwgNzIsIDEsIDI0NiwgMTg0LCAKKyAgICAyMTAsIDcyLCAxLCAyMDAsIDUwLCAyMTAsIDcyLCAxLCAyMzMsIDc5LCAyMTAsIDcyLCAxLCAyNDgsIDE4NywgMjEwLCA3MiwgCisgICAgMSwgMjQxLCAxNzQsIDIxMCwgNzIsIDEsIDIzNiwgNzUsIDIxMCwgNzIsIDEsIDIwMiwgMTczLCAyMTAsIDcyLCAxLCAyMDYsIAorICAgIDg1LCAyMTAsIDcyLCAxLCAxOTksIDEyLCAyMTAsIDcyLCAxLCAyMjIsIDc0LCAyMTAsIDcyLCAxLCAyMjcsIDE0NSwgMjEwLCAKKyAgICA3MiwgMSwgMjAwLCAyNTQsIDIxMCwgNzIsIDEsIDIzNCwgMjM1LCAyMTAsIDcyLCAxLCAyMjQsIDk0LCAyMTAsIDcyLCAxLCAKKyAgICAyMjEsIDE2NSwgMjEwLCA3MiwgMSwgMjI4LCAxNTgsIDIxMCwgNzIsIDEsIDIzOCwgMjQ2LCAyMTAsIDcyLCAxLCAyNTAsIAorICAgIDE4MSwgMjEwLCA3MiwgMSwgMjUxLCAyMjUsIDIxMCwgNzIsIDEsIDIxNywgNzgsIDIxMCwgNzIsIDEsIDIwMCwgMjQxLCAKKyAgICAyMTAsIDcyLCAxLCAyMTYsIDI1NCwgMjEwLCA3MiwgMSwgMjUxLCAxODUsIDIxMCwgNzIsIDEsIDIxMiwgMjU0LCAyMTAsIAorICAgIDcyLCAxLCAyMTgsIDg5LCAyMTAsIDcyLCAxLCAyMzksIDEwLCAyMTAsIDcyLCAxLCAyNTEsIDE5MCwgMjEwLCA3MiwgMSwgCisgICAgMjMyLCAyMzEsIDIxMCwgNzIsIDEsIDIwMywgMjI4LCAyMTAsIDcyLCAxLCAyMTcsIDE0NCwgMjEwLCA3MiwgMSwgMjE3LCAKKyAgICA1NSwgMjEwLCA3MiwgMSwgMjE3LCAxMDMsIDIxMCwgNzIsIDEsIDI1MCwgMTE1LCAyMTAsIDcyLCAxLCAyNTAsIDIyOSwgCisgICAgMjEwLCA3MiwgMSwgMjE3LCAzMywgMjEwLCA3MiwgMSwgMjUxLCAxNjYsIDIxMCwgNzIsIDEsIDIzOCwgMTA4LCAyMTAsIDcyLCAKKyAgICAxLCAyNTAsIDIwNywgMjEwLCA3MiwgMSwgMjM5LCAyMSwgMjEwLCA3MiwgMSwgMjMyLCAyMzksIDIxMCwgNzIsIDEsIDIwMCwgCisgICAgMTUsIDIxNywgMTIsIDEsIDI1MSwgMTQyLCAyMTcsIDEyLCAxLCAyNDksIDEzNiwgMjE3LCAxMiwgMSwgMjA3LCAzNiwgMjE3LCAKKyAgICAxMiwgMSwgMjI3LCAyNDgsIDIxNywgMTIsIDEsIDIwMCwgMTgxLCAyMTcsIDEyLCAxLCAyMjYsIDIwNywgMjE3LCAxMiwgMSwgCisgICAgMjQxLCAxNjAsIDIxNywgMTIsIDEsIDIxMywgMjUyLCAyMTcsIDEyLCAxLCAyMTIsIDY0LCAyMTcsIDEyLCAxLCAyMTAsIDI3LCAKKyAgICAyMTcsIDEyLCAxLCAyNDEsIDEwMCwgMjE3LCAxMiwgMSwgMjQ3LCAxMDEsIDIxNywgMTIsIDEsIDIzNiwgODksIDIxNywgMTIsIAorICAgIDEsIDIzNywgMTk1LCAyMTcsIDEyLCAxLCAyMTQsIDE1NywgMjE3LCAxMiwgMSwgMjI3LCAxMDIsIDIxNywgMTIsIDEsIDIyNSwgCisgICAgMTcxLCAyMTcsIDEyLCAxLCAyMjEsIDE3OSwgMjE3LCAxMiwgMSwgMjE4LCA3MywgMjE3LCAxMiwgMSwgMjAxLCA3MiwgMjE3LCAKKyAgICAxMiwgMSwgMTQ0LCAyMTcsIDEyLCAxLCAxODMsIDIxNywgMTIsIDEsIDYyLCAyMTcsIDEyLCAxLCA3MiwgMjE3LCAxMiwgMSwgCisgICAgNzAsIDIxNywgMTIsIDEsIDc0LCAyMTcsIDEyLCAxLCA2NiwgMjE3LCAxMiwgMSwgMjUyLCAxMzgsIDIxNywgMTIsIDEsIAorICAgIDIzOCwgMjU1LCAyMTcsIDEyLCAxLCAyMTcsIDYzLCAyMTcsIDEyLCAxNywgMTk5LCA4MSwgMjE3LCAxMiwgMTcsIDEwMiwgCisgICAgMjE3LCAxMiwgMTcsIDEwNSwgMjE3LCAxMiwgMTcsIDE0NywgMjE3LCAxMiwgMTcsIDE0OSwgMjE3LCAxMiwgMTcsIDE2NCwgCisgICAgMjE3LCAxMiwgMTcsIDE4NywgMjE3LCAxMiwgMTcsIDIxMCwgMTM1LCAyMTcsIDEyLCAxNywgMTkyLCAyMTcsIDEyLCAxNywgCisgICAgMjE5LCAxMTMsIDIxNywgMTQsIDYsIDEsIDYyLCAyMTcsIDE0LCA2LCAxLCAyNTEsIDE3NiwgMjE3LCAxNCwgNiwgMSwgMjUxLCAKKyAgICAxNzEsIDIxNywgMTQsIDYsIDEsIDI1MSwgMTg1LCAyMTcsIDE0LCA2LCAxLCAyNDgsIDcyLCAyMTcsIDE0LCA2LCAxLCAyNDcsIAorICAgIDM3LCAyMTcsIDE0LCA2LCAxLCAyMzgsIDI0MCwgMjE3LCAxNCwgNiwgMSwgNzIsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjIxLCAKKyAgICAyMTcsIDE0LCA2LCAxLCAxNDQsIDIxNywgMTQsIDYsIDEsIDIzMywgMzYsIDIxNywgMTQsIDYsIDEsIDcwLCAyMTcsIDE0LCAKKyAgICA2LCAxLCAxNjEsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjM5LCAyMTcsIDE0LCA2LCAxLCAyMjUsIDIwMywgMjE3LCAxNCwgNiwgCisgICAgMSwgMTk0LCAyMTcsIDE0LCA2LCAxLCAxNzgsIDIxNywgMTQsIDYsIDEsIDE4OCwgMjE3LCAxNCwgNiwgMSwgNzQsIDIxNywgCisgICAgMTQsIDYsIDEsIDIxNywgMTAyLCAyMTcsIDE0LCA2LCAxLCAxNzIsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjM4LCAyMTcsIDE0LCAKKyAgICA2LCAxLCAyMTIsIDY0LCAyMTcsIDE0LCA2LCAxLCAyMTAsIDExNCwgMjE3LCAxNCwgNiwgMSwgMjA3LCAzNiwgMjE3LCAxNCwgCisgICAgNiwgMSwgMjM4LCAyMzcsIDIxNywgMTQsIDYsIDEsIDIwNSwgMzIsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjM2LCAyMTcsIDE0LCAKKyAgICA2LCAxLCAyMDUsIDIyLCAyMTcsIDE0LCA2LCAxLCAyNDEsIDEwMCwgMjE3LCAxNCwgNiwgMSwgNjYsIDIxNywgMTQsIDYsIDEsIAorICAgIDIwMSwgMTE0LCAyMTcsIDE0LCA2LCAxLCAyMjYsIDIwNywgMjE3LCAxNCwgNiwgMSwgMjM1LCAxOTksIDIxNywgMTQsIDYsIAorICAgIDEsIDE5OSwgMTE0LCAyMTcsIDE0LCA2LCAxLCAxOTksIDc3LCAyMTcsIDE0LCA0LCAxLCA2MiwgMjE3LCAxNCwgNCwgMSwgCisgICAgMjUxLCAxNzYsIDIxNywgMTQsIDQsIDEsIDI1MSwgMTcxLCAyMTcsIDE0LCA0LCAxLCAyNTEsIDE4NSwgMjE3LCAxNCwgNCwgCisgICAgMSwgMjQ4LCA3MiwgMjE3LCAxNCwgNCwgMSwgMjQ3LCAzNywgMjE3LCAxNCwgNCwgMSwgMjM4LCAyNDAsIDIxNywgMTQsIDQsIAorICAgIDEsIDcyLCAyMTcsIDE0LCA0LCAxLCAyMzgsIDIyMSwgMjE3LCAxNCwgNCwgMSwgMTQ0LCAyMTcsIDE0LCA0LCAxLCAyMzMsIAorICAgIDM2LCAyMTcsIDE0LCA0LCAxLCA3MCwgMjE3LCAxNCwgNCwgMSwgMTYxLCAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzOSwgMjE3LCAKKyAgICAxNCwgNCwgMSwgMjI1LCAyMDMsIDIxNywgMTQsIDQsIDEsIDE5NCwgMjE3LCAxNCwgNCwgMSwgMTc4LCAyMTcsIDE0LCA0LCAKKyAgICAxLCAxODgsIDIxNywgMTQsIDQsIDEsIDc0LCAyMTcsIDE0LCA0LCAxLCAyMTcsIDEwMiwgMjE3LCAxNCwgNCwgMSwgMTcyLCAKKyAgICAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzOCwgMjE3LCAxNCwgNCwgMSwgMjEyLCA2NCwgMjE3LCAxNCwgNCwgMSwgMjEwLCAxMTQsIAorICAgIDIxNywgMTQsIDQsIDEsIDIwNywgMzYsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM3LCAyMTcsIDE0LCA0LCAxLCAyMDUsIDMyLCAKKyAgICAyMTcsIDE0LCA0LCAxLCAyMzgsIDIzNiwgMjE3LCAxNCwgNCwgMSwgMjA1LCAyMiwgMjE3LCAxNCwgNCwgMSwgMjQxLCAxMDAsIAorICAgIDIxNywgMTQsIDQsIDEsIDY2LCAyMTcsIDE0LCA0LCAxLCAyMDEsIDExNCwgMjE3LCAxNCwgNCwgMSwgMjI2LCAyMDcsIDIxNywgCisgICAgMTQsIDQsIDEsIDIzNSwgMTk5LCAyMTcsIDE0LCA0LCAxLCAxOTksIDExNCwgMjE3LCAxNCwgNCwgMSwgMTk5LCA3NywgMjM4LCAKKyAgICAyMDUsIDEsIDYyLCAyMzgsIDIwNSwgMSwgMjQ5LCA4LCAyMzgsIDIwNSwgMSwgMjQ3LCA3NiwgMjM4LCAyMDUsIDEsIDI0NywgCisgICAgOCwgMjM4LCAyMDUsIDEsIDI0MSwgMTc1LCAyMzgsIDIwNSwgMSwgMjIwLCA2NywgMjM4LCAyMDUsIDEsIDI0MSwgOTEsIAorICAgIDIzOCwgMjA1LCAxLCAyMzgsIDIzNCwgMjM4LCAyMDUsIDEsIDcyLCAyMzgsIDIwNSwgMSwgMjM3LCAxNDcsIDIzOCwgMjA1LCAKKyAgICAxLCAyMzYsIDE1LCAyMzgsIDIwNSwgMSwgMjM1LCAxMzIsIDIzOCwgMjA1LCAxLCAyMzQsIDEzOSwgMjM4LCAyMDUsIDEsIAorICAgIDcwLCAyMzgsIDIwNSwgMSwgMjI3LCAyMjcsIDIzOCwgMjA1LCAxLCAyMjcsIDgsIDIzOCwgMjA1LCAxLCAyMjUsIDQwLCAKKyAgICAyMzgsIDIwNSwgMSwgMjI0LCAxMzQsIDIzOCwgMjA1LCAxLCAyMjIsIDc2LCAyMzgsIDIwNSwgMSwgMjIwLCAzNCwgMjM4LCAKKyAgICAyMDUsIDEsIDE4OCwgMjM4LCAyMDUsIDEsIDIxOSwgOTEsIDIzOCwgMjA1LCAxLCA3NCwgMjM4LCAyMDUsIDEsIDIxNiwgNzMsIAorICAgIDIzOCwgMjA1LCAxLCAyMTQsIDEzOSwgMjM4LCAyMDUsIDEsIDIxMywgMTkwLCAyMzgsIDIwNSwgMSwgMjEyLCAyMTAsIDIzOCwgCisgICAgMjA1LCAxLCAyMTEsIDIwMiwgMjM4LCAyMDUsIDEsIDIxMCwgNjUsIDIzOCwgMjA1LCAxLCAyMDYsIDIwMSwgMjM4LCAyMDUsIAorICAgIDEsIDIwNiwgMTA2LCAyMzgsIDIwNSwgMSwgNjYsIDIzOCwgMjA1LCAxLCAyMDMsIDU5LCAyMzgsIDIwNSwgMSwgMjAwLCAKKyAgICAxNzUsIDIzOCwgMjA1LCAxLCAyMDAsIDEyMywgMjM4LCAyMDUsIDEsIDE5OSwgODksIDIzOCwgMjA1LCAxLCAxOTksIDY4LCAKKyAgICAyMzgsIDIwNSwgMSwgMjM1LCAxODUsIDIzOCwgMjA1LCAxLCAyMzUsIDE5MSwgMjM4LCAyMDUsIDEsIDIyNiwgMTkyLCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDI1MSwgMTExLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0OCwgMjEwLCAyNDcsIDEwOCwgCisgICAgMjUxLCAxNDMsIDEsIDIzNSwgMTQ5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0MSwgMjQwLCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIzOSwgOSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDk5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIzOCwgMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA2MiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDYsIDIyNywgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDcsIDM3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgMjIyLCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgNzcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI4LCAzNCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMTAsIDExNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjUsIDgwLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIyOCwgNDYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjAwLCAxNzEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM5LCAKKyAgICAxMDEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ3LCAxMzUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI3LCAyMDgsIAorICAgIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI3LCA0NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjMsIDI1MiwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMzQsIDg2LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxNCwgMTQwLCAyNDcsIDEwOCwgCisgICAgMjUxLCAxNDMsIDEsIDI1MSwgMzAsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ2LCAyMDEsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjQ2LCAyMzYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQyLCAxNjUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjIyLCAxNjEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE0LCAxNDQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE4LCAKKyAgICAyMDAsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM5LCA3OCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTAsIDk3LCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIyNywgMjI4LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxNywgNzgsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjA0LCAxMzIsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM3LCAxNzAsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjM5LCA5MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDcsIDE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIAorICAgIDIxNiwgNDcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjM1LCAxNzUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjEzLCAKKyAgICAyMDQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjEwLCAxMjMsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjAyLCAyMzYsIAorICAgIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjA1LCAyMDYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjA5LCAyMjksIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjI4LCA1LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0MiwgMTY2LCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDI0NywgMTAxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwMCwgNTUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjE1LCAxMzksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjI2LCAxMjUsIDI0NywgMTA4LCAyNTEsIDE0MywgMjQ2LCAxNDMsIAorICAgIDgxLCAzMCwgMzUsIDIsIDI1MiwgODgsIDMwLCAzNSwgMiwgMjUyLCA4NywgMzAsIDM1LCAyLCAyNTIsIDg2LCAzMCwgMzUsIAorICAgIDIsIDI1MiwgODUsIDMwLCAzNSwgMiwgMjUyLCA4NCwgMzAsIDM1LCAyLCAyNTIsIDgzLCAzMCwgMzUsIDIsIDI1MiwgODIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCA4MSwgMzAsIDM1LCAyLCAyNTIsIDgwLCAzMCwgMzUsIDIsIDI1MiwgNzksIDMwLCAzNSwgMiwgCisgICAgMjUyLCA3OCwgMzAsIDM1LCAyLCAyNTIsIDc3LCAzMCwgMzUsIDIsIDI1MiwgNzYsIDMwLCAzNSwgMiwgMjUyLCA3NSwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDc0LCAzMCwgMzUsIDIsIDI1MiwgNzMsIDMwLCAzNSwgMiwgMjUyLCA3MiwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDcxLCAzMCwgMzUsIDIsIDI1MiwgNzAsIDMwLCAzNSwgMiwgMjUyLCA2OSwgMzAsIDM1LCAyLCAyNTIsIDY4LCAzMCwgMzUsIAorICAgIDIsIDI1MiwgNjcsIDMwLCAzNSwgMiwgMjUyLCA2NiwgMzAsIDM1LCAyLCAyNTIsIDY1LCAzMCwgMzUsIDIsIDI1MiwgNjQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCA2MywgMzAsIDM1LCAyLCAyNTIsIDYyLCAzMCwgMzUsIDIsIDI1NSwgOTYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCA2MSwgMzAsIDM1LCAyLCAyNTIsIDYwLCAzMCwgMzUsIDIsIDI1MiwgNTksIDMwLCAzNSwgMiwgMjUyLCA1OCwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDU3LCAzMCwgMzUsIDIsIDI1MiwgNTYsIDMwLCAzNSwgMiwgMjUyLCA1NSwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDU0LCAzMCwgMzUsIDIsIDI1MiwgNTMsIDMwLCAzNSwgMiwgMjUyLCA1MiwgMzAsIDM1LCAyLCAyNTIsIDUxLCAzMCwgMzUsIAorICAgIDIsIDI1MiwgNTAsIDMwLCAzNSwgMiwgMjUyLCA0OSwgMzAsIDM1LCAyLCAyNTIsIDQ4LCAzMCwgMzUsIDIsIDI1MiwgNDcsIAorICAgIDMwLCAzNSwgMiwgMjUyLCA0NiwgMzAsIDM1LCAyLCAyNTIsIDQ1LCAzMCwgMzUsIDIsIDI1MiwgNDQsIDMwLCAzNSwgMiwgCisgICAgMjUyLCA0MywgMzAsIDM1LCAyLCAyNTIsIDQyLCAzMCwgMzUsIDIsIDI1MiwgNDEsIDMwLCAzNSwgMiwgMjUyLCA0MCwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDM5LCAzMCwgMzUsIDIsIDI1MiwgMzgsIDMwLCAzNSwgMiwgMjUyLCAzNywgMzAsIDM1LCAyLCAyNTIsIAorICAgIDM2LCAzMCwgMzUsIDIsIDI1MiwgMzUsIDMwLCAzNSwgMiwgMjUyLCAzNCwgMzAsIDM1LCAyLCAyNTIsIDMzLCAzMCwgMzUsIAorICAgIDIsIDI1MiwgMzIsIDMwLCAzNSwgMiwgMjUyLCAzMSwgMzAsIDM1LCAyLCAyNTIsIDMwLCAzMCwgMzUsIDIsIDI1MiwgMjksIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyOCwgMzAsIDM1LCAyLCAyNTIsIDI3LCAzMCwgMzUsIDIsIDI1MiwgMjYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNSwgMzAsIDM1LCAyLCAyNTIsIDI0LCAzMCwgMzUsIDIsIDI1MiwgMjMsIDMwLCAzNSwgMiwgMjUyLCAyMiwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDIxLCAzMCwgMzUsIDIsIDI1MiwgMjAsIDMwLCAzNSwgMiwgMjUyLCAxOSwgMzAsIDM1LCAyLCAyNTUsIAorICAgIDksIDMwLCAzNSwgMiwgMjUyLCAxOCwgMzAsIDM1LCAyLCAyNTIsIDE3LCAzMCwgMzUsIDIsIDI1NCwgMjMwLCAzMCwgMzUsIAorICAgIDIsIDI1MiwgMTYsIDMwLCAzNSwgMiwgMjUyLCAxNSwgMzAsIDM1LCAyLCAyNTIsIDE0LCAzMCwgMzUsIDIsIDI1MiwgMTMsIAorICAgIDMwLCAzNSwgMiwgMjU0LCAyMTcsIDMwLCAzNSwgMiwgMjUyLCAxMiwgMzAsIDM1LCAyLCAyNTIsIDExLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTAsIDMwLCAzNSwgMiwgMjUyLCA5LCAzMCwgMzUsIDIsIDI1MiwgOCwgMzAsIDM1LCAyLCAyNTQsIDMzLCAzMCwgCisgICAgMzUsIDIsIDI1NCwgMzIsIDMwLCAzNSwgMiwgMjU0LCAzMSwgMzAsIDM1LCAyLCAyNTQsIDMwLCAzMCwgMzUsIDIsIDI1NCwgCisgICAgMjksIDMwLCAzNSwgMiwgMjU0LCAyOCwgMzAsIDM1LCAyLCAyNTQsIDI3LCAzMCwgMzUsIDIsIDI1NCwgMjYsIDMwLCAzNSwgCisgICAgMiwgMjU0LCAyNCwgMzAsIDM1LCAyLCAyNTQsIDIzLCAzMCwgMzUsIDIsIDI1NCwgMjIsIDMwLCAzNSwgMiwgMjU0LCAyMSwgCisgICAgMzAsIDM1LCAyLCAyNTQsIDIwLCAzMCwgMzUsIDIsIDI1NCwgMTksIDMwLCAzNSwgMiwgMjU0LCAxNywgMzAsIDM1LCAyLCAKKyAgICAyNTQsIDE2LCAzMCwgMzUsIDIsIDI1NCwgMTUsIDMwLCAzNSwgMiwgMjU0LCAxNCwgMzAsIDM1LCAyLCAyNTQsIDEzLCAzMCwgCisgICAgMzUsIDIsIDI1NCwgMTIsIDMwLCAzNSwgMiwgMjU0LCAxMSwgMzAsIDM1LCAyLCAyNTQsIDEwLCAzMCwgMzUsIDIsIDI1NCwgCisgICAgOSwgMzAsIDM1LCAyLCAyNTQsIDgsIDMwLCAzNSwgMiwgMjU0LCA3LCAzMCwgMzUsIDIsIDI1NCwgNiwgMzAsIDM1LCAyLCAKKyAgICAyNTQsIDUsIDMwLCAzNSwgMiwgMjU0LCA0LCAzMCwgMzUsIDIsIDI1NCwgMywgMzAsIDM1LCAyLCAyNTQsIDIsIDMwLCAzNSwgCisgICAgMiwgMjU0LCAxLCAzMCwgMzUsIDIsIDI1NCwgMCwgMzAsIDM1LCAyLCAyNTMsIDI1NSwgMzAsIDM1LCAyLCAyNTMsIDI1MywgCisgICAgMzAsIDM1LCAyLCAyNTMsIDI1MiwgMzAsIDM1LCAyLCAyNTMsIDI1MSwgMzAsIDM1LCAyLCAyNTMsIDI0NywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDI0NiwgMzAsIDM1LCAyLCAyNTMsIDI0NSwgMzAsIDM1LCAyLCAyNTMsIDI0NCwgMzAsIDM1LCAyLCAyNTMsIDI0MCwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIzOSwgMzAsIDM1LCAyLCAyNTMsIDIzOCwgMzAsIDM1LCAyLCAyNTMsIDIzNywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIzNiwgMzAsIDM1LCAyLCAyNTMsIDIzNSwgMzAsIDM1LCAyLCAyNTMsIDIzNCwgMzAsIDM1LCAyLCAyNTMsIDIzMywgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIzMiwgMzAsIDM1LCAyLCAyNTMsIDIzMSwgMzAsIDM1LCAyLCAyNTMsIDIzMCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIyOSwgMzAsIDM1LCAyLCAyNTMsIDIyOCwgMzAsIDM1LCAyLCAyNTMsIDIyNywgMzAsIDM1LCAyLCAyNTMsIDIyNiwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIyNSwgMzAsIDM1LCAyLCAyNTMsIDIyNCwgMzAsIDM1LCAyLCAyNTMsIDIyMywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIyMiwgMzAsIDM1LCAyLCAyNTMsIDIyMSwgMzAsIDM1LCAyLCAyNTMsIDIyMCwgMzAsIDM1LCAyLCAyNTMsIDIxOSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIxOCwgMzAsIDM1LCAyLCAyNTMsIDIxNiwgMzAsIDM1LCAyLCAyNTMsIDIxNSwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIxNCwgMzAsIDM1LCAyLCAyNTMsIDIxMywgMzAsIDM1LCAyLCAyNTMsIDIxMiwgMzAsIDM1LCAyLCAyNTMsIDIxMCwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDIwOSwgMzAsIDM1LCAyLCAyNTMsIDIwOCwgMzAsIDM1LCAyLCAyNTMsIDIwNywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDIwNSwgMzAsIDM1LCAyLCAyNTMsIDIwNCwgMzAsIDM1LCAyLCAyNTMsIDIwMywgMzAsIDM1LCAyLCAyNTMsIDE2OSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDE2NywgMzAsIDM1LCAyLCAyNTMsIDE2NSwgMzAsIDM1LCAyLCAyNTMsIDE2MywgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDE2MSwgMzAsIDM1LCAyLCAyNTMsIDE1OSwgMzAsIDM1LCAyLCAyNTMsIDE1NywgMzAsIDM1LCAyLCAyNTMsIDE1NSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDE1MywgMzAsIDM1LCAyLCAyNTMsIDE1MSwgMzAsIDM1LCAyLCAyNTMsIDE0OSwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDE0NiwgMzAsIDM1LCAyLCAyNTMsIDE0NCwgMzAsIDM1LCAyLCAyNTMsIDE0MiwgMzAsIDM1LCAyLCAyNTMsIDE0MCwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDEzOCwgMzAsIDM1LCAyLCAyNTMsIDEzNiwgMzAsIDM1LCAyLCAyNTMsIDEzNCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDEzMiwgMzAsIDM1LCAyLCAyNTMsIDUwLCAzMCwgMzUsIDIsIDI1MywgNDksIDMwLCAzNSwgMiwgMjUzLCA0OCwgMzAsIAorICAgIDM1LCAyLCAyNTMsIDQ3LCAzMCwgMzUsIDIsIDI1MywgNDYsIDMwLCAzNSwgMiwgMjUzLCA0NSwgMzAsIDM1LCAyLCAyNTMsIAorICAgIDQzLCAzMCwgMzUsIDIsIDI1MywgNDIsIDMwLCAzNSwgMiwgMjUzLCA0MSwgMzAsIDM1LCAyLCAyNTMsIDQwLCAzMCwgMzUsIAorICAgIDIsIDI1MywgMzksIDMwLCAzNSwgMiwgMjUzLCAzOCwgMzAsIDM1LCAyLCAyNTMsIDM2LCAzMCwgMzUsIDIsIDI1MywgMzUsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAzMSwgMzAsIDM1LCAyLCAyNTMsIDMwLCAzMCwgMzUsIDIsIDI1MywgMjgsIDMwLCAzNSwgMiwgCisgICAgMjUzLCAyNywgMzAsIDM1LCAyLCAyNTMsIDI2LCAzMCwgMzUsIDIsIDI1MywgMjUsIDMwLCAzNSwgMiwgMjUzLCAyNCwgMzAsIAorICAgIDM1LCAyLCAyNTMsIDIzLCAzMCwgMzUsIDIsIDI1MywgMjIsIDMwLCAzNSwgMiwgMjUzLCAyMSwgMzAsIDM1LCAyLCAyNTMsIAorICAgIDIwLCAzMCwgMzUsIDIsIDI1MywgMTksIDMwLCAzNSwgMiwgMjUzLCAxOCwgMzAsIDM1LCAyLCAyNTMsIDE3LCAzMCwgMzUsIAorICAgIDIsIDI1MywgMTYsIDMwLCAzNSwgMiwgMjUzLCAxNSwgMzAsIDM1LCAyLCAyNTMsIDE0LCAzMCwgMzUsIDIsIDI1MywgMTMsIAorICAgIDMwLCAzNSwgMiwgMjUzLCAxMiwgMzAsIDM1LCAyLCAyNTMsIDExLCAzMCwgMzUsIDIsIDI1MywgMTAsIDMwLCAzNSwgMiwgCisgICAgMjUzLCA5LCAzMCwgMzUsIDIsIDI1MywgOCwgMzAsIDM1LCAyLCAyNTMsIDcsIDMwLCAzNSwgMiwgMjUzLCA2LCAzMCwgMzUsIAorICAgIDIsIDI1MywgNSwgMzAsIDM1LCAyLCAyNTMsIDQsIDMwLCAzNSwgMiwgMjUzLCAzLCAzMCwgMzUsIDIsIDI1MywgMiwgMzAsIAorICAgIDM1LCAyLCAyNTMsIDEsIDMwLCAzNSwgMiwgMjUzLCAwLCAzMCwgMzUsIDIsIDI1MiwgMjU1LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMjU0LCAzMCwgMzUsIDIsIDI1MiwgMjUzLCAzMCwgMzUsIDIsIDI1MiwgMjUyLCAzMCwgMzUsIDIsIDI1MiwgMjUxLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMjUwLCAzMCwgMzUsIDIsIDI1MiwgMjQ5LCAzMCwgMzUsIDIsIDI1MiwgMjQ4LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjQ3LCAzMCwgMzUsIDIsIDI1MiwgMjQ2LCAzMCwgMzUsIDIsIDI1MiwgMjQ1LCAzMCwgMzUsIDIsIDI1MiwgMjQ0LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjQzLCAzMCwgMzUsIDIsIDI1MiwgMjQyLCAzMCwgMzUsIDIsIDI1MiwgMjQxLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjQwLCAzMCwgMzUsIDIsIDI1MiwgMjM5LCAzMCwgMzUsIDIsIDI1MiwgMjM4LCAzMCwgMzUsIDIsIDI1MiwgMjM3LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjM2LCAzMCwgMzUsIDIsIDI1MiwgMjM1LCAzMCwgMzUsIDIsIDI1MiwgMjM0LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjMzLCAzMCwgMzUsIDIsIDI1MiwgMjMyLCAzMCwgMzUsIDIsIDI1MiwgMjMxLCAzMCwgMzUsIDIsIDI1MiwgMjMwLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjI5LCAzMCwgMzUsIDIsIDI1MiwgMjI4LCAzMCwgMzUsIDIsIDI1MiwgMjI3LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjI2LCAzMCwgMzUsIDIsIDI1MiwgMjI1LCAzMCwgMzUsIDIsIDI1MiwgMjI0LCAzMCwgMzUsIDIsIDI1MiwgMjIzLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjIyLCAzMCwgMzUsIDIsIDI1MiwgMjIxLCAzMCwgMzUsIDIsIDI1MiwgMjIwLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjE5LCAzMCwgMzUsIDIsIDI1MiwgMjE4LCAzMCwgMzUsIDIsIDI1MiwgMjE3LCAzMCwgMzUsIDIsIDI1MiwgMjE2LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjE1LCAzMCwgMzUsIDIsIDI1MiwgMjE0LCAzMCwgMzUsIDIsIDI1MiwgMjEzLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjEyLCAzMCwgMzUsIDIsIDI1MiwgMjExLCAzMCwgMzUsIDIsIDI1MiwgMjEwLCAzMCwgMzUsIDIsIDI1MiwgMjA5LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjA4LCAzMCwgMzUsIDIsIDI1MiwgMjA3LCAzMCwgMzUsIDIsIDI1MiwgMjA2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMjA1LCAzMCwgMzUsIDIsIDI1MiwgMjA0LCAzMCwgMzUsIDIsIDI1MiwgMjAzLCAzMCwgMzUsIDIsIDI1MiwgMjAyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMjAxLCAzMCwgMzUsIDIsIDI1MiwgMjAwLCAzMCwgMzUsIDIsIDI1MiwgMTk5LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTk4LCAzMCwgMzUsIDIsIDI1MiwgMTk3LCAzMCwgMzUsIDIsIDI1MiwgMTk2LCAzMCwgMzUsIDIsIDI1MiwgMTk1LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTk0LCAzMCwgMzUsIDIsIDI1MiwgMTkzLCAzMCwgMzUsIDIsIDI1MiwgMTkyLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTkxLCAzMCwgMzUsIDIsIDI1MiwgMTkwLCAzMCwgMzUsIDIsIDI1MiwgMTg5LCAzMCwgMzUsIDIsIDI1MiwgMTg4LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTg3LCAzMCwgMzUsIDIsIDI1MiwgMTg2LCAzMCwgMzUsIDIsIDI1MiwgMTg1LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTg0LCAzMCwgMzUsIDIsIDI1MiwgMTgzLCAzMCwgMzUsIDIsIDI1MiwgMTgyLCAzMCwgMzUsIDIsIDI1MiwgMTgxLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTgwLCAzMCwgMzUsIDIsIDI1MiwgMTc5LCAzMCwgMzUsIDIsIDI1MiwgMTc4LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTc3LCAzMCwgMzUsIDIsIDI1MiwgMTc2LCAzMCwgMzUsIDIsIDI1MiwgMTc1LCAzMCwgMzUsIDIsIDI1MiwgMTc0LCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTczLCAzMCwgMzUsIDIsIDI1MiwgMTcyLCAzMCwgMzUsIDIsIDI1MiwgMTcxLCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTcwLCAzMCwgMzUsIDIsIDI1MiwgMTY5LCAzMCwgMzUsIDIsIDI1MiwgMTY4LCA2MiwgMzAsIDM1LCAyLCAyNTIsIAorICAgIDE2NywgMjUwLCAxMDMsIDMwLCAzNSwgMiwgMjUyLCAxNjYsIDI0MiwgMTUzLCAzMCwgMzUsIDIsIDI1MiwgMTY1LCA3MiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE2NCwgMjM4LCA1LCAzMCwgMzUsIDIsIDI1MiwgMTYzLCAyMzQsIDI0NywgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE2MiwgMjI3LCAyNTEsIDMwLCAzNSwgMiwgMjUyLCAxNjEsIDIyNywgMTE4LCAzMCwgMzUsIDIsIDI1MiwgMTYwLCAKKyAgICAxNTYsIDMwLCAzNSwgMiwgMjUyLCAxNTksIDIyNSwgMTgwLCAzMCwgMzUsIDIsIDI1MiwgMTU4LCAyMjUsIDE3OSwgMzAsIAorICAgIDM1LCAyLCAyNTIsIDE1NywgMjI1LCAxNzgsIDMwLCAzNSwgMiwgMjUyLCAxNTYsIDIyNSwgMTc3LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMTU1LCAyMDEsIDE0NywgMzAsIDM1LCAyLCAyNTIsIDE1NCwgMjAwLCAxOTUsIDMwLCAzNSwgMiwgMjUyLCAxNTMsIDIwMCwgCisgICAgMTIzLCAzMCwgMzUsIDIsIDI1MiwgMTUyLCAyMTcsIDgzLCAzMCwgMzUsIDIsIDI1MiwgMTUxLCAyNTIsIDQsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAxNTAsIDI0OSwgNDUsIDMwLCAzNSwgMiwgMjUyLCAxNDksIDI0MSwgMjIyLCAzMCwgMzUsIDIsIDI1MiwgMTQ4LCAKKyAgICAyMzgsIDEzLCAzMCwgMzUsIDIsIDI1MiwgMTQ3LCAyMjcsIDIyNywgMzAsIDM1LCAyLCAyNTIsIDE0NiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDE0NSwgMzAsIDM1LCAyLCAyNTIsIDE0NCwgMzAsIDM1LCAyLCAyNTIsIDE0MywgMzAsIDM1LCAyLCAyNTIsIDE0MiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDE0MSwgMzAsIDM1LCAyLCAyNTIsIDE0MCwgMzAsIDM1LCAyLCAyNTIsIDEzOSwgMjQyLCAxNjAsIAorICAgIDUsIDYyLCAyNDIsIDE2MCwgNSwgNzIsIDI0MiwgMTYwLCA1LCA3MCwgMjQyLCAxNjAsIDUsIDc0LCAyNDIsIDE2MCwgNSwgCisgICAgNjYsIDI0MiwgMTYwLCA1LCAyMjcsIDI0OCwgMjQyLCAxNjAsIDUsIDIyNywgMTY2LCAyNDIsIDE2MCwgNSwgMTYxLCAyNDIsIAorICAgIDE2MCwgNSwgMjI3LCA4LCAyNDIsIDE2MCwgNSwgMjI2LCAxNjMsIDI0MiwgMTYwLCA1LCAyMjYsIDg4LCAyNDIsIDE2MCwgNSwgCisgICAgMjI2LCAxNSwgMjQyLCAxNjAsIDUsIDE5NCwgMjQyLCAxNjAsIDUsIDIyNSwgNDAsIDI0MiwgMTYwLCA1LCAyMjQsIDIxMCwgCisgICAgMjQyLCAxNjAsIDUsIDIyNCwgMTEwLCAyNDIsIDE2MCwgNSwgMjI0LCA0MiwgMjQyLCAxNjAsIDUsIDE3OCwgMjQyLCAxNjAsIAorICAgIDUsIDIyMiwgNzYsIDI0MiwgMTYwLCA1LCAyMjEsIDIxMSwgMjQyLCAxNjAsIDUsIDIyMSwgMTM2LCAyNDIsIDE2MCwgNSwgCisgICAgMjIxLCA0MSwgMjQyLCAxNjAsIDUsIDE4OCwgMjQyLCAxNjAsIDUsIDIyMCwgMzQsIDI0MiwgMTYwLCA1LCAyMTksIDE1MCwgCisgICAgMjQyLCAxNjAsIDUsIDIxOCwgMjQxLCAyNDIsIDE2MCwgNSwgMjE4LCAxMzMsIDI0MiwgMTYwLCA1LCAxNzIsIDI0MiwgMTYwLCAKKyAgICA1LCAyMTYsIDczLCAyNDIsIDE2MCwgNSwgMjE1LCAyMDQsIDI0MiwgMTYwLCA1LCAyMTUsIDEwNiwgMjQyLCAxNjAsIDUsIAorICAgIDIxNCwgMjI0LCAyNDIsIDE2MCwgNSwgMjEzLCAyNTIsIDI0MiwgMTYwLCA1LCAyMTMsIDE5MCwgMjQyLCAxNjAsIDUsIDIxMywgCisgICAgODgsIDI0MiwgMTYwLCA1LCAyMTMsIDEsIDI0MiwgMTYwLCA1LCAyMTIsIDE3NSwgMjQyLCAxNjAsIDUsIDIxMiwgNjQsIAorICAgIDI0MiwgMTYwLCA1LCAyMTEsIDIwMiwgMjQyLCAxNjAsIDUsIDIwOSwgMTgyLCAyNDIsIDE2MCwgNSwgMjA5LCAyOSwgMjQyLCAKKyAgICAxNjAsIDUsIDIwOCwgMjQsIDI0MiwgMTYwLCA1LCAyMDcsIDM2LCAyNDIsIDE2MCwgNSwgMjA2LCAyMDEsIDI0MiwgMTYwLCAKKyAgICA1LCAyMDYsIDE1LCAyNDIsIDE2MCwgNSwgMTM4LCAyNDIsIDE2MCwgNSwgMjA0LCAyMTUsIDI0MiwgMTYwLCA1LCAyMDEsIAorICAgIDExNCwgMjQyLCAxNjAsIDUsIDIwMSwgNjQsIDI0MiwgMTYwLCA1LCAyMDEsIDMxLCAyNDIsIDE2MCwgNSwgMjAxLCAwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjAwLCAxODEsIDI0MiwgMTYwLCA1LCAyMDAsIDE3NSwgMjQyLCAxNjAsIDUsIDE5OSwgMTE0LCAyNDIsIAorICAgIDE2MCwgNSwgMTk5LCAxNCwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyNTEsIDE0MCwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyNDgsIDIwNywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMzUsIDE0NywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyNDIsIAorICAgIDIyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNCwgMTM5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIwMSwgNzIsIDIyOCwgCisgICAgMTE5LCAyNTAsIDIzOCwgMSwgMTk5LCA5MiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMzQsIDkxLCAyMjgsIDExOSwgMjUwLCAKKyAgICAyMzgsIDEsIDIwNiwgMTQyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDE5OSwgMjMzLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDIyNywgNTcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjI1LCA4MiwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMjIsIDQ3LCAKKyAgICAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxOCwgODksIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjEyLCAxOSwgMjI4LCAxMTksIAorICAgIDI1MCwgMjM4LCAxLCAyNTAsIDEwNywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTYsIDczLCAyMjgsIDExOSwgMjUwLCAKKyAgICAyMzgsIDEsIDIxMiwgNTQsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE0LCAxMDEsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjEzLCAxMjMsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjEwLCAyMSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMDYsIAorICAgIDIxNSwgMjI4LCAxMTksIDI1MCwgMjM4LCAyMTEsIDE5MywgNTQsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDEwMiwgMjI4LCAKKyAgICAxMTksIDI1MCwgMjM4LCA0MSwgMTA1LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAxNDcsIDIyOCwgMTE5LCAyNTAsIDIzOCwgCisgICAgNDEsIDIwNiwgMTY2LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAyMDQsIDE1OSwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgCisgICAgMTEyLCAyMzMsIDgyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAxMTIsIDIwNiwgNTAsIDIyOCwgMTE5LCAyNTAsIDIzOCwgCisgICAgNDEsIDIwNiwgMTY3LCAyMDYsIDUwLCAyMTYsIDE3NSwgMSwgMjUxLCAxNDAsIDIxNiwgMTc1LCAxLCAyNDgsIDIwNywgMjE2LCAKKyAgICAxNzUsIDEsIDIzNSwgMTQ3LCAyMTYsIDE3NSwgMSwgMjQyLCAyMiwgMjE2LCAxNzUsIDEsIDIzNCwgMTM5LCAyMTYsIDE3NSwgCisgICAgMSwgMjAxLCA3MiwgMjE2LCAxNzUsIDEsIDE5OSwgOTIsIDIxNiwgMTc1LCAxLCAyMzQsIDkxLCAyMTYsIDE3NSwgMSwgMjA2LCAKKyAgICAxNDIsIDIxNiwgMTc1LCAxLCAxOTksIDIzMywgMjE2LCAxNzUsIDEsIDIyNywgNTcsIDIxNiwgMTc1LCAxLCAyMjUsIDgyLCAKKyAgICAyMTYsIDE3NSwgMSwgMjIyLCA0NywgMjE2LCAxNzUsIDEsIDQ3LCAyMTgsIDg5LCAyMTYsIDE3NSwgMSwgMjE4LCA4OSwgCisgICAgMjE2LCAxNzUsIDEsIDIxMiwgMTksIDIxNiwgMTc1LCAxLCAyNTAsIDEwNywgMjE2LCAxNzUsIDEsIDIxNiwgNzMsIDIxNiwgCisgICAgMTc1LCAxLCAyMTIsIDU0LCAyMTYsIDE3NSwgMSwgMjE0LCAxMDEsIDIxNiwgMTc1LCAxLCAyMTMsIDEyMywgMjE2LCAxNzUsIAorICAgIDEsIDIxMCwgMjEsIDIxNiwgMTc1LCAxLCAyMDYsIDIxNSwgMjE2LCAxNzUsIDIyNSwgMjMsIDIzNywgMzksIDIxNiwgMTc1LCAKKyAgICAyMTMsIDQxLCAyMzcsIDM5LCAyMTYsIDE3NSwgNDEsIDEwMiwgMjE2LCAxNzUsIDQxLCAxMDUsIDIxNiwgMTc1LCA0MSwgCisgICAgMTQ3LCAyMTYsIDE3NSwgNDEsIDE0OSwgMjE2LCAxNzUsIDQxLCAxNjQsIDIxNiwgMTc1LCA0MSwgMjA2LCAxNjYsIDIxNiwgCisgICAgMTc1LCA0MSwgMjA0LCAxNTksIDIyMCwgMTUzLCAxLCA0NywgMjUxLCAxNDAsIDIyMCwgMTUzLCAxLCAyNTEsIDE0MCwgMjIwLCAKKyAgICAxNTMsIDEsIDQ3LCAyNDgsIDIwNywgMjIwLCAxNTMsIDEsIDI0OCwgMjA3LCAyMjAsIDE1MywgMSwgMjM1LCAxNDcsIDIyMCwgCisgICAgMTUzLCAxLCAyNDIsIDIyLCAyMjAsIDE1MywgMSwgNDcsIDIzNCwgMTM5LCAyMjAsIDE1MywgMSwgMjM0LCAxMzksIDIyMCwgCisgICAgMTUzLCAxLCAyMDEsIDcyLCAyMjAsIDE1MywgMSwgMTk5LCA5MiwgMjIwLCAxNTMsIDEsIDIzNCwgOTEsIDIyMCwgMTUzLCAxLCAKKyAgICAyMDYsIDE0MiwgMjIwLCAxNTMsIDEsIDQ3LCAxOTksIDIzMywgMjIwLCAxNTMsIDEsIDE5OSwgMjMzLCAyMjAsIDE1MywgMSwgCisgICAgNDcsIDIyNywgNTcsIDIyMCwgMTUzLCAxLCAyMjcsIDU3LCAyMjAsIDE1MywgMSwgNDcsIDIyNSwgODIsIDIyMCwgMTUzLCAxLCAKKyAgICAyMjUsIDgyLCAyMjAsIDE1MywgMSwgNDcsIDIyMiwgNDcsIDIyMCwgMTUzLCAxLCAyMjIsIDQ3LCAyMjAsIDE1MywgMSwgNDcsIAorICAgIDIxOCwgODksIDIyMCwgMTUzLCAxLCAyMTgsIDg5LCAyMjAsIDE1MywgMSwgMjEyLCAxOSwgMjIwLCAxNTMsIDEsIDI1MCwgCisgICAgMTA3LCAyMjAsIDE1MywgMSwgMjE2LCA3MywgMjIwLCAxNTMsIDEsIDIxMiwgNTQsIDIyMCwgMTUzLCAxLCAyMTQsIDEwMSwgCisgICAgMjIwLCAxNTMsIDEsIDIxMywgMTIzLCAyMjAsIDE1MywgMSwgNDcsIDIxMCwgMjEsIDIyMCwgMTUzLCAxLCAyMTAsIDIxLCAKKyAgICAyMjAsIDE1MywgMSwgMjA2LCAyMTUsIDIyMCwgMTUzLCA0MSwgMTAyLCAyMjAsIDE1MywgNDEsIDEwNSwgMjIwLCAxNTMsIAorICAgIDQxLCAxNDcsIDIyMCwgMTUzLCA0MSwgMTQ5LCAyMjAsIDE1MywgMjQyLCAyMjAsIDQxLCAxNDksIDIyMCwgMTUzLCA0MSwgCisgICAgMTY0LCAyMjAsIDE1MywgNDEsIDIwNiwgMTY2LCAyMjAsIDE1MywgNDEsIDIwNCwgMTU5LCAyMjAsIDE1MywgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgMjM0LCAxNTIsIDEsIDI1MSwgMTQwLCAyMzQsIDE1MiwgMSwgMjQ4LCAyMDcsIDIzNCwgMTUyLCAxLCAyMzUsIAorICAgIDE0NywgMjM0LCAxNTIsIDEsIDI0MiwgMjEsIDIzNCwgMTUyLCAxLCAyMzQsIDEzOSwgMjM0LCAxNTIsIDEsIDIwMSwgNzIsIAorICAgIDIzNCwgMTUyLCAxLCAxOTksIDkxLCAyMzQsIDE1MiwgMSwgMjM0LCA5MSwgMjM0LCAxNTIsIDEsIDIwNiwgMTQyLCAyMzQsIAorICAgIDE1MiwgMSwgMTk5LCAyMzMsIDIzNCwgMTUyLCAxLCAyMjcsIDU3LCAyMzQsIDE1MiwgMSwgMjI1LCA4MiwgMjM0LCAxNTIsIAorICAgIDEsIDIyMiwgNDcsIDIzNCwgMTUyLCAxLCAyMTgsIDg5LCAyMzQsIDE1MiwgMSwgMjEyLCAxOSwgMjM0LCAxNTIsIDEsIDI1MCwgCisgICAgMTA2LCAyMzQsIDE1MiwgMSwgMjE2LCA3MywgMjM0LCAxNTIsIDEsIDIxMiwgNTQsIDIzNCwgMTUyLCAxLCAyMTQsIDEwMSwgCisgICAgMjM0LCAxNTIsIDEsIDIxMCwgMjEsIDIzNCwgMTUyLCAxLCAyMDYsIDIxNSwgMjM0LCAxNTIsIDQxLCAxMDIsIDIzNCwgMTUyLCAKKyAgICA0MSwgMTY0LCAyMzQsIDE1MiwgNDEsIDIwNiwgMTY2LCAyMzQsIDE1MiwgNDEsIDIwNCwgMTU5LCAyMzQsIDE1MiwgNDEsIAorICAgIDExMiwgMjMzLCA4MiwgMjE1LCAyMTUsIDEsIDI1MSwgMTM3LCAyMTUsIDIxNSwgMSwgMjQ4LCAyMTAsIDIxNSwgMjE1LCAxLCAKKyAgICAyMzYsIDYyLCAyMTUsIDIxNSwgMSwgMjQxLCAxMzgsIDIxNSwgMjE1LCAxLCAyMzQsIDEzOSwgMjE1LCAyMTUsIDEsIDIwMSwgCisgICAgNzksIDIxNSwgMjE1LCAxLCAxOTksIDEwNywgMjE1LCAyMTUsIDEsIDIzNCwgOTMsIDIxNSwgMjE1LCAxLCAyMDYsIDE0NiwgCisgICAgMjE1LCAyMTUsIDEsIDE5OSwgMjM0LCAyMTUsIDIxNSwgMSwgMjI3LCA4NiwgMjE1LCAyMTUsIDEsIDIyNSwgODgsIDIxNSwgCisgICAgMjE1LCAxLCAyMjIsIDQ3LCAyMTUsIDIxNSwgMSwgMjE4LCA4OSwgMjE1LCAyMTUsIDEsIDIxMCwgMTYxLCAyMTUsIDIxNSwgCisgICAgMSwgMjUxLCAxNzEsIDIxNSwgMjE1LCAxLCAyMTYsIDczLCAyMTUsIDIxNSwgMSwgMjEyLCA1NSwgMjE1LCAyMTUsIDEsIAorICAgIDIxNCwgMTA2LCAyMTUsIDIxNSwgMSwgMjEyLCAyMzAsIDIxNSwgMjE1LCAxLCAyMTAsIDIxLCAyMTUsIDIxNSwgMSwgMjA2LCAKKyAgICAyMjEsIDIxNSwgMjE1LCA0MSwgMTAyLCAyMTUsIDIxNSwgNDEsIDIwNiwgMTY2LCAyMTUsIDIxNSwgNDEsIDIwNCwgMTU5LCAKKyAgICAyMTUsIDIxNSwgNDEsIDExMiwgMjMzLCA4MiwgMjE1LCAyMTUsIDQxLCAxMDUsIDIxNSwgMjE1LCA0MSwgMTQ3LCAyMTUsIAorICAgIDIxNSwgMjAwLCAyMzgsIDIxMCwgMTU0LCAyMjMsIDI1NSwgMSwgNjIsIDIyMywgMjU1LCAxLCAyNTAsIDEwMywgMjIzLCAKKyAgICAyNTUsIDEsIDIzNiwgMTU2LCAyMjMsIDI1NSwgMSwgMjQyLCAxNTMsIDIyMywgMjU1LCAxLCA3MiwgMjIzLCAyNTUsIDEsIAorICAgIDIwMywgMTY4LCAyMjMsIDI1NSwgMSwgNzAsIDIyMywgMjU1LCAxLCAyMDAsIDEyMywgMjIzLCAyNTUsIDEsIDIyNywgMTE4LCAKKyAgICAyMjMsIDI1NSwgMSwgMTU2LCAyMjMsIDI1NSwgMSwgMjIzLCAyNDMsIDIyMywgMjU1LCAxLCAyMjAsIDIxNCwgMjIzLCAyNTUsIAorICAgIDEsIDc0LCAyMjMsIDI1NSwgMSwgMTQ2LCAyMjMsIDI1NSwgMSwgMjA4LCAxODIsIDIyMywgMjU1LCAxLCAyMDcsIDgzLCAKKyAgICAyMjMsIDI1NSwgMSwgNjYsIDIyMywgMjU1LCAxLCAyMzgsIDUsIDIyMywgMjU1LCAxLCAyMTQsIDE2NywgMjIzLCAyNTUsIDEsIAorICAgIDIxMiwgMTIyLCAyMjMsIDI1NSwgMSwgMjA1LCAwLCAyMjMsIDI1NSwgMSwgMjUxLCA4NSwgMjIzLCAyNTUsIDEsIDIzOCwgCisgICAgMTc5LCAyMjMsIDI1NSwgMSwgMjI0LCAyLCAyMjMsIDI1NSwgMSwgMjE5LCAyMiwgMjIzLCAyNTUsIDEsIDI0NywgMjIzLCAKKyAgICAyMjMsIDI1NSwgMjA1LCA5NSwgODEsIDEzMiwgMjM0LCA2OCwgMSwgNjIsIDEzMiwgMjM0LCA2OCwgMSwgNzIsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgNzAsIDEzMiwgMjM0LCA2OCwgMSwgNzQsIDEzMiwgMjM0LCA2OCwgMSwgMTgzLCAxMzIsIDIzNCwgNjgsIAorICAgIDEsIDIwMSwgMTE0LCAxMzIsIDIzNCwgNjgsIDEsIDI0OSwgMTM2LCAxMzIsIDIzNCwgNjgsIDEsIDI0OSwgMTM1LCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDE3MiwgMTMyLCAyMzQsIDY4LCAxLCAxNzgsIDEzMiwgMjM0LCA2OCwgMSwgMTg4LCAxMzIsIDIzNCwgCisgICAgNjgsIDEsIDIyMCwgMTYxLCAxMzIsIDIzNCwgNjgsIDEsIDIyMCwgMzQsIDEzMiwgMjM0LCA2OCwgMSwgMjIwLCAzMywgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAyMTMsIDI1MiwgMTMyLCAyMzQsIDY4LCAxLCAyMTMsIDI1MSwgMTMyLCAyMzQsIDY4LCAxLCAxOTQsIAorICAgIDEzMiwgMjM0LCA2OCwgMSwgMjI2LCAyMDcsIDEzMiwgMjM0LCA2OCwgMSwgMjM0LCA4NCwgMTMyLCAyMzQsIDY4LCAxLCAKKyAgICAyMTIsIDY0LCAxMzIsIDIzNCwgNjgsIDEsIDIxMiwgNjMsIDEzMiwgMjM0LCA2OCwgMSwgMjExLCAyMDIsIDEzMiwgMjM0LCAKKyAgICA2OCwgMSwgMTYxLCAxMzIsIDIzNCwgNjgsIDEsIDIxNCwgMTU5LCAxMzIsIDIzNCwgNjgsIDEsIDIwNywgMzYsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMjA3LCAzNSwgMTMyLCAyMzQsIDY4LCAxLCAyMDYsIDIwMSwgMTMyLCAyMzQsIDY4LCAxLCAyMDYsIAorICAgIDIwMCwgMTMyLCAyMzQsIDY4LCAxLCAxMzgsIDEzMiwgMjM0LCA2OCwgMSwgMjQyLCA1OCwgMTMyLCAyMzQsIDY4LCAxNiwgCisgICAgMjAyLCAyMjgsIDEzMiwgMjM0LCA2OCwgMTYsIDIwMiwgMjI3LCAxMzIsIDI0MiwgMTkxLCAxLCA2MiwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgNzIsIDEzMiwgMjQyLCAxOTEsIDEsIDcwLCAxMzIsIDI0MiwgMTkxLCAxLCA3NCwgMTMyLCAyNDIsIDE5MSwgMSwgCisgICAgMTgzLCAxMzIsIDI0MiwgMTkxLCAxLCAyMDEsIDExNCwgMTMyLCAyNDIsIDE5MSwgMSwgMjQ5LCAxMzYsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDEsIDE3MiwgMTMyLCAyNDIsIDE5MSwgMSwgMTc4LCAxMzIsIDI0MiwgMTkxLCAxLCAxODgsIDEzMiwgMjQyLCAxOTEsIAorICAgIDEsIDIyMCwgMzQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMywgMjUyLCAxMzIsIDI0MiwgMTkxLCAxLCAxOTQsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDEsIDIyNiwgMjA3LCAxMzIsIDI0MiwgMTkxLCAxLCAyMzQsIDg0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTIsIDY0LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAxLCAyNTAsIDIzNCwgMjEyLCA2NCwgMTMyLCAyNDIsIDE5MSwgMSwgMjExLCAyMDIsIDEzMiwgCisgICAgMjQyLCAxOTEsIDEsIDE2MSwgMTMyLCAyNDIsIDE5MSwgMSwgMjE0LCAxNTksIDEzMiwgMjQyLCAxOTEsIDEsIDIwNywgMzYsIAorICAgIDEzMiwgMjQyLCAxOTEsIDEsIDIwNiwgMjAxLCAxMzIsIDI0MiwgMTkxLCAxLCAxMzgsIDEzMiwgMjQyLCAxOTEsIDEsIDI0MiwgCisgICAgNTgsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzgsIDIwMCwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIzNCwgMjEzLCAxMzIsIDI0MiwgMTkxLCAyMjQsIDk3LCAyMTMsIDcsIDEzMiwgMjQyLCAxOTEsIDIyNCwgOTcsIAorICAgIDIyOCwgMTI0LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTAyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTA1LCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMTQ3LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTQ5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTY0LCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMTg3LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAxMzUsIDEzMiwgMjQyLCAxOTEsIDQxLCAxOTIsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMTksIDExMywgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgMTY2LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA0LCAKKyAgICAxNTksIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDY3LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM2LCAyMzUsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzcsIDEwNCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgOTIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIAorICAgIDEyOSwgMTMyLCAyNDIsIDE5MSwgNDEsIDExMiwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDEyMCwgMjMzLCA4MiwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDEyNiwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgyLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwOSwgMTA2LCAyMzMsIAorICAgIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIzMiwgCisgICAgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTIwLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTI2LCAyMDYsIAorICAgIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM2LCAyMjksIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDYxLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCAxMDYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIAorICAgIDEzNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjMyLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgCisgICAgMjE5LCAxMTQsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDE2NywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDIwNCwgMTYwLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCA2OCwgMjA2LCA1MCwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNiwgMjM2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM3LCAxMDUsIDIwNiwgNTAsIDEzMiwgCisgICAgMjQyLCAxOTEsIDQxLCAyMDksIDkzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjEwLCAxMzAsIDIwNiwgNTAsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzgsIDIyMywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxOSwgMTA5LCAyMDYsIAorICAgIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTEyLCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTIwLCAKKyAgICAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTI2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM2LCAyMjksIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDYxLCAyMzMsIDgzLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCAxMDYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAyMTAsIDEzNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgzLCAKKyAgICAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMTQsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIwNCwgMTY3LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMTIwLCAyMDQsIDE2NiwgMTMyLCAKKyAgICAyNDIsIDE5MSwgMjM2LCAyMTksIDEyNiwgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzYsIDIyOSwgCisgICAgMjA0LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAyMzcsIDYxLCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAKKyAgICAyMTksIDIwOSwgMTA2LCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIxMCwgMTM2LCAyMDQsIDE2NiwgCisgICAgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzOCwgMjMyLCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIAorICAgIDIxOSwgMTE0LCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIwNiwgMTY3LCAyMDQsIDE2NiwgMjI2LCAKKyAgICAxOTQsIDEsIDYyLCAyMjYsIDE5NCwgMjIsIDIsIDcwLCAyMjYsIDE5NCwgMjIsIDIsIDY2LCAyMjYsIDE5NCwgMjIsIDIsIAorICAgIDEwOSwgMTQ2LCAyMjYsIDE5NCwgMjIsIDIsIDcyLCAyMjYsIDE5NCwgMjIsIDIsIDc0LCAyMjYsIDE5NCwgMjIsIDIyNSwgMiwgCisgICAgODEsIDIyNiwgMTk0LCAyLCA1MywgMjEzLCAyNywgNTcsIDIyNiwgMTk0LCAyLCAyNTEsIDMzLCAyMjYsIDE5NCwgMiwgMjAyLCAKKyAgICAyMDMsIDIyNiwgMTk0LCAxLCAxNjEsIDIyNiwgMTk0LCAxLCAyMjYsIDIwNywgMjI2LCAxOTQsIDEsIDIzNiwgODksIDIyNiwgCisgICAgMTk0LCAxLCAyMzUsIDE5OSwgMjI2LCAxOTQsIDEsIDI0NywgMTkwLCAyMjYsIDE5NCwgMSwgMjQ3LCAzNywgMjI2LCAxOTQsIAorICAgIDEsIDIyNywgMjQ4LCAyMjYsIDE5NCwgMSwgMjE4LCA2MCwgMjI2LCAxOTQsIDEsIDIwNCwgMjUzLCAyMjYsIDE5NCwgMSwgCisgICAgMjA0LCAyNDEsIDIyNiwgMTk0LCAxLCAyNDEsIDIyMCwgMjI2LCAxOTQsIDEsIDI0MSwgMjA0LCAyMjYsIDE5NCwgMSwgMjE5LCAKKyAgICAyMSwgMjI2LCAxOTQsIDEsIDIwNywgMzYsIDIyNiwgMTk0LCAxLCAyMDYsIDEyMiwgMjI2LCAxOTQsIDEsIDI0MiwgNTgsIAorICAgIDIyNiwgMTk0LCAxLCAyNDEsIDEwMCwgMjI2LCAxOTQsIDEsIDE4OCwgMjI2LCAxOTQsIDEsIDE3MiwgMjI2LCAxOTQsIDEsIAorICAgIDIxNSwgMjQ1LCAyMjYsIDE5NCwgMSwgMjQ5LCAxMzYsIDIyNiwgMTk0LCAxLCAyNDgsIDIwMCwgMjI2LCAxOTQsIDEsIDE3OCwgCisgICAgMjI2LCAxOTQsIDEsIDE4MywgMjI2LCAxOTQsIDEsIDIxMywgMjUyLCAyMjYsIDE5NCwgMSwgMTk0LCAyMjYsIDE5NCwgMSwgCisgICAgMjAzLCA5MCwgMjI2LCAxOTQsIDEsIDIxMCwgMTE0LCAyMjYsIDE5NCwgMSwgMjA4LCAxNzksIDIyNiwgMTk0LCAxLCAyMTIsIAorICAgIDY0LCAyMjYsIDE5NCwgMSwgMTk5LCAxMTQsIDIyNiwgMTk0LCAxLCAxNDQsIDIyNiwgMTk0LCAxLCAyMjYsIDEwOSwgMjI2LCAKKyAgICAxOTQsIDEsIDIwNCwgMjIxLCAyMjYsIDE5NCwgMiwgMjQ5LCA3NywgNTYsIDIyNiwgMTk0LCAyLCAyNDcsIDEwNywgMjI2LCAKKyAgICAxOTQsIDIsIDczLCA1NywgMjI2LCAxOTQsIDIwMiwgMjA4LCAyMjYsIDE5NCwgMTcsIDEwMiwgMjI2LCAxOTQsIDE3LCAxMDUsIAorICAgIDIyNiwgMTk0LCAxNywgMTQ3LCAyMjYsIDE5NCwgMTcsIDE0OSwgMjI2LCAxOTQsIDQxLCAyMDYsIDE2NiwgMjI2LCAxOTQsIAorICAgIDQxLCAyMDQsIDE1OSwgMjI2LCAxOTQsIDQxLCAxMTIsIDIzMywgODIsIDIyNiwgMTk0LCA0MSwgMTEyLCAyMDYsIDUwLCAKKyAgICAyMjYsIDE5NCwgMjE0LCAyMTIsIDI0MCwgMTgyLCAyMjYsIDE5NCwgMjE0LCAyMTIsIDQsIDI0NiwgMTU1LCAyMjYsIDE5NCwgCisgICAgMjE0LCAyMTIsIDI0NiwgMTU1LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDI0MiwgMjQ0LCAxNDgsIDIyNiwgMTk0LCAyMTQsIAorICAgIDIxMiwgMjIyLCAxNzQsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjI0LCA2NCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyNDIsIDEwLCAKKyAgICAyMjYsIDE5NCwgMjE0LCAyMTIsIDUzLCAyNDIsIDEwLCAyMjYsIDE5NCwgMjE0LCAyMTIsIDIyNCwgMTcwLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzQsIDEzOSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjI1LCA4MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM0LCA5MSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjIyLCA0NywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjE0LCAxMDEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwMSwgNzIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxMCwgMjEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIxMywgMTIzLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyNDgsIDIwNywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAyMTUsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxMSwgMjUxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjcsIDU3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTgsIDg5LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjYsIDE4OSwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjEyLCA1NCwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjEyLCAxOSwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM3LCAxNDcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI1MSwgMTQyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyNTAsIDEwNiwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjQxLCA5NywgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM1LCAxNDcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDI0MiwgMjIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNSwgMTg3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDE0MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMTk5LCA5MSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjQxLCA5NCwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMTk5LCAyMzMsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMTA4LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDg3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCA0MSwgMTAyLCA0MCwgMjA4LCAyNTQsIAorICAgIDI1MCwgMjQ5LCA0MSwgMjM3LCAxMDQsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDE0NSwgMjI4LCA5OSwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDEsIDIzNCwgMTE1LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjI1LCA5MSwgNDAsIDE1NywgMjUwLCAyNDksIAorICAgIDEsIDIzNCwgMjI0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjIyLCA2MSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIxNCwgCisgICAgMTUyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjAxLCA3MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAyLCA0MCwgCisgICAgMTU3LCAyNTAsIDI0OSwgMSwgMjEzLCAxNTQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNDgsIDI0MCwgNDAsIDE1NywgMjUwLCAKKyAgICAyNDksIDEsIDIwNiwgMTgzLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDMsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAKKyAgICAyMjcsIDg2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjE4LCAyMjcsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjYsIDIwMywgCisgICAgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIxMiwgNTYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMSwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDEsIDIzNywgMTM0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjUxLCAxNDIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAKKyAgICAxLCAyNTEsIDE3MSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0MiwgNTIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzYsIDYsIAorICAgIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNDIsIDI5LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM1LCAxOTQsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCAxLCAyMDcsIDksIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAxOTksIDEwNSwgNDAsIDE1NywgMjUwLCAyNDksIAorICAgIDEsIDIwNiwgMTE0LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjAwLCA0NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIwNiwgCisgICAgMTAyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMTk5LCAxMDgsIDQwLCAxNTcsIDI1MCwgMjQ5LCA0MSwgMTAyLCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgNDEsIDIwNiwgMTY2LCA0MCwgMTU3LCAyNTAsIDI0OSwgNDEsIDIwNCwgMTU5LCAyMjIsIDE3MywgMSwgCisgICAgMjUxLCAxNDAsIDIyMiwgMTczLCAxLCAyNDgsIDIwNywgMjIyLCAxNzMsIDEsIDI0OCwgMTk0LCAyMjIsIDE3MywgMSwgMjM1LCAKKyAgICAxNDcsIDIyMiwgMTczLCAxLCAyMzUsIDE3MiwgMjIyLCAxNzMsIDEsIDI0MiwgMjIsIDIyMiwgMTczLCAxLCAyMzQsIDEzOSwgCisgICAgMjIyLCAxNzMsIDEsIDIwMSwgNzIsIDIyMiwgMTczLCAyLCAyMDQsIDM2LCAyMjIsIDE3MywgMSwgMTk5LCA5MiwgMjIyLCAKKyAgICAxNzMsIDEsIDE5OSwgNzAsIDIyMiwgMTczLCAxLCAyMjcsIDIyOSwgMjIyLCAxNzMsIDEsIDIyNywgMjExLCAyMjIsIDE3MywgCisgICAgMSwgMjM0LCA5MSwgMjIyLCAxNzMsIDEsIDIwNiwgMTQyLCAyMjIsIDE3MywgMSwgMTk5LCAyMzMsIDIyMiwgMTczLCAxLCAKKyAgICAyMjcsIDU3LCAyMjIsIDE3MywgMSwgMjAwLCAxNzgsIDIyMiwgMTczLCAxLCAyMjYsIDE5NiwgMjIyLCAxNzMsIDEsIDIyNSwgCisgICAgODIsIDIyMiwgMTczLCAxLCAyNDEsIDkzLCAyMjIsIDE3MywgMSwgMjA2LCAxMTMsIDIyMiwgMTczLCAxLCAyMjIsIDQ3LCAKKyAgICAyMjIsIDE3MywgMSwgMjE4LCA4OSwgMjIyLCAxNzMsIDEsIDIxMiwgMTksIDIyMiwgMTczLCAxLCAyNTAsIDEwNywgMjIyLCAKKyAgICAxNzMsIDEsIDI1MiwgOTEsIDIyMiwgMTczLCAxLCAyMTYsIDczLCAyMjIsIDE3MywgMSwgMjM3LCAxNDcsIDIyMiwgMTczLCAKKyAgICAxLCAyMTIsIDU0LCAyMjIsIDE3MywgMSwgMjE0LCAxMDEsIDIyMiwgMTczLCAxLCAyMDAsIDE1NiwgMjIyLCAxNzMsIDEsIAorICAgIDIxNCwgMTI4LCAyMjIsIDE3MywgMSwgMjEzLCAxMjMsIDIyMiwgMTczLCAxLCAyMTAsIDIxLCAyMjIsIDE3MywgMSwgMjA4LCAKKyAgICAxNDgsIDIyMiwgMTczLCAxLCAyMDYsIDIxNSwgMjIyLCAxNzMsIDI1MiwgMywgMTM0LCA1NiwgMjIyLCAxNzMsIDI1MiwgMywgCisgICAgMTM0LCA1NywgMjIyLCAxNzMsIDQxLCAxMDIsIDIyMiwgMTczLCA0MSwgMTY0LCAyMjIsIDE3MywgNDEsIDIwNiwgMTY2LCAKKyAgICAyMjIsIDE3MywgNDEsIDIwNCwgMTU5LCAyMjIsIDE3MywgNDEsIDExMiwgMjMzLCA4MiwgMjIyLCAxNzMsIDIxNCwgMjEyLCAKKyAgICAyMDgsIDEwOSwgMjIyLCAxNzMsIDIxNCwgMjEyLCAyMzcsIDM5LCAyMjIsIDE3MywgMjE0LCAyMTIsIDUzLCA3MywgMjAxLCAKKyAgICA1LCAyNDAsIDE4MiwgMjIyLCAxNzMsIDIxNCwgMjEyLCA3MywgMjAxLCA1LCAyNDAsIDE4MiwgMjIyLCAxNzMsIDIxNCwgCisgICAgMjEyLCAyNDAsIDE4MiwgMjIyLCAxNzMsIDIxNCwgMjEyLCAxMjAsIDI0MCwgMTgwLCAyMjIsIDE3MywgMjE0LCAyMTIsIAorICAgIDIyNCwgMTc3LCAyMzcsIDkzLCAyNTAsIDExOSwgMSwgNjIsIDI1MCwgMTE5LCAxLCAyNTIsIDEzOCwgMjUwLCAxMTksIDEsIAorICAgIDI1MSwgMzEsIDI1MCwgMTE5LCAxLCAyNTIsIDk3LCAyNTAsIDExOSwgMSwgMjUxLCA4NSwgMjUwLCAxMTksIDEsIDI1MiwgCisgICAgOTgsIDI1MCwgMTE5LCAxLCAyNTEsIDIyMSwgMjUwLCAxMTksIDEsIDI1MSwgMjE3LCAyNTAsIDExOSwgMSwgNzIsIDI1MCwgCisgICAgMTE5LCAxLCAyMzgsIDI1NSwgMjUwLCAxMTksIDEsIDc0LCAyNTAsIDExOSwgMSwgMjE3LCA2MywgMjUwLCAxMTksIDEsIDcwLCAKKyAgICAyNTAsIDExOSwgMSwgMjI4LCAxNTEsIDI1MCwgMTE5LCAxLCA2NiwgMjUwLCAxMTksIDEsIDIwMywgMTgyLCAyNTAsIDExOSwgCisgICAgMSwgMjI3LCA4LCAyNTAsIDExOSwgMSwgMjAwLCAxNzUsIDI1MCwgMTE5LCAxLCAyMDAsIDEzNywgMjUwLCAxMTksIDEsIAorICAgIDIwMCwgMTQ3LCAyNTAsIDExOSwgMSwgMjM2LCAxNSwgMjUwLCAxMTksIDEsIDIzNSwgMjMwLCAyNTAsIDExOSwgMSwgMjM1LCAKKyAgICAxODUsIDI1MCwgMTE5LCAxLCAyNDcsIDc2LCAyNTAsIDExOSwgMSwgMjI3LCAyMjcsIDI1MCwgMTE5LCAxLCAyMDYsIDIwMSwgCisgICAgMjUwLCAxMTksIDEsIDIwNiwgMTA2LCAyNTAsIDExOSwgMSwgMjQxLCAxNzUsIDI1MCwgMTE5LCAxLCAyNDEsIDkxLCAyNTAsIAorICAgIDExOSwgMSwgMjA0LCAyNDgsIDI1MCwgMTE5LCAxLCAyMTYsIDczLCAyNTAsIDExOSwgMSwgMjM3LCAxNDcsIDI1MCwgMTE5LCAKKyAgICAxLCAyNDksIDgsIDI1MCwgMTE5LCAxLCAyNDgsIDE5NiwgMjUwLCAxMTksIDEsIDIxOSwgMjQwLCAyNTAsIDExOSwgMSwgCisgICAgMjE5LCAxNTYsIDI1MCwgMTE5LCAxLCAyMTksIDE1NywgMjUwLCAxMTksIDEsIDIyMCwgMzQsIDI1MCwgMTE5LCAxLCAyMTgsIAorICAgIDUwLCAyNTAsIDExOSwgMSwgMjE5LCAxNiwgMjUwLCAxMTksIDEsIDIyMiwgNzYsIDI1MCwgMTE5LCAxLCAyMzQsIDEsIDI1MCwgCisgICAgMTE5LCAxLCAxOTksIDE2NCwgMjUwLCAxMTksIDEsIDIwMCwgNTEsIDI1MCwgMTE5LCAxLCAyMDMsIDU5LCAyNTAsIDExOSwgCisgICAgMSwgMjEzLCAxOTAsIDI1MCwgMTE5LCAxLCAyMjUsIDQwLCAyNTAsIDExOSwgMSwgMjExLCAyMDIsIDI1MCwgMTE5LCAxLCAKKyAgICAxOTksIDg5LCAyNTAsIDExOSwgMSwgMjEwLCA2NSwgMjUwLCAxMTksIDEsIDE5OSwgNjgsIDI1MCwgMTE5LCAxLCAyMDksIAorICAgIDE4OSwgMjUwLCAxMTksIDEsIDIwOCwgMTQ5LCAyNTAsIDExOSwgMSwgMjM0LCAxMzksIDI1MCwgMTE5LCAyNTIsIDMsIDgxLCAKKyAgICAyMDUsIDIyNiwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgMjE0LCAyMTEsIDQsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIAorICAgIDIxNCwgMjExLCAyMjUsIDcxLCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAyMTQsIDIxMSwgMjI1LCA3MSwgMTEyLCA3MywgCisgICAgMTE5LCAxMjAsIDE5MCwgMjE0LCAyMTEsIDIyNSwgNzEsIDEyMCwgMjEzLCAyNCwgMTE5LCAxMTIsIDIxMywgMjcsIDIxNCwgCisgICAgMjExLCAyMjUsIDcxLCAxMTIsIDIxMywgMjcsIDExOSwgMTIwLCAyMTMsIDI0LCAyMTQsIDIxMSwgMjI4LCA3NywgMjE2LCAKKyAgICAxMDksIDEsIDI1MSwgMTQwLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjQ4LCAyMDcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAKKyAgICAyMzUsIDE0NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDI0MiwgMjIsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMzQsIDEzOSwgCisgICAgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIwMSwgNzIsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAxOTksIDkyLCAyMjgsIDc3LCAKKyAgICAyMTYsIDEwOSwgMSwgMjM0LCA5MSwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIwNiwgMTQyLCAyMjgsIDc3LCAyMTYsIDEwOSwgCisgICAgMSwgMTk5LCAyMzMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjcsIDU3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjI1LCAKKyAgICA4MiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyMiwgNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTgsIDg5LCAyMjgsIAorICAgIDc3LCAyMTYsIDEwOSwgMSwgMjEyLCAxOSwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDI1MCwgMTA3LCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgMSwgMjE2LCA3MywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxMiwgNTQsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAKKyAgICAyMTQsIDEwMSwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxMywgMTIzLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEwLCAyMSwgCisgICAgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIwNiwgMjE1LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDEwMiwgMjI4LCA3NywgMjE2LCAKKyAgICAxMDksIDQxLCAxMDUsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDE0OSwgCisgICAgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAyMDYsIDE2NiwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAyMDQsIDE1OSwgMjI4LCAKKyAgICA3NywgMjE2LCAxMDksIDQxLCAxMTIsIDIzMywgODIsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTEyLCAyMDYsIDUwLCAyMjgsIAorICAgIDc3LCAyMTYsIDE5MSwgMSwgMjUxLCAxNDAsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyNDgsIDIwNywgMjI4LCA3NywgMjE2LCAKKyAgICAxOTEsIDEsIDIzNSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjQyLCAyMiwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIAorICAgIDIzNCwgMTM5LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjAxLCA3MSwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDE5OSwgOTIsIAorICAgIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMzQsIDkxLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjA2LCAxNDIsIDIyOCwgNzcsIAorICAgIDIxNiwgMTkxLCAxLCAxOTksIDIzMywgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIyNywgNTcsIDIyOCwgNzcsIDIxNiwgMTkxLCAKKyAgICAxLCAyMjUsIDgyLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjIyLCA0NiwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxOCwgODksIAorICAgIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTIsIDE5LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjE2LCA3MywgMjI4LCA3NywgCisgICAgMjE2LCAxOTEsIDEsIDIxMiwgNTQsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTAsIDIxLCAyMjgsIDc3LCAyMTYsIDE5MSwgCisgICAgMSwgMjA2LCAyMTUsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTAyLCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDEwNSwgMjI4LCAKKyAgICA3NywgMjE2LCAxOTEsIDQxLCAxNDcsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTQ5LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIAorICAgIDIwNiwgMTY2LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDIwNCwgMTU5LCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMTIsIDIwNiwgNTAsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjUxLCAKKyAgICAxNDAsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjQ4LCAyMDcsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjM1LCAxNDcsIAorICAgIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjQyLCAyMiwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMzQsIDEzOSwgMjE0LCAKKyAgICAyMzYsIDIxNiwgMTkxLCAxLCAyMDEsIDcxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDE5OSwgOTIsIDIxNCwgMjM2LCAyMTYsIAorICAgIDE5MSwgMSwgMjM0LCA5MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAxOTksIDIzMywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAKKyAgICAyMjcsIDU3LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIyNSwgODIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjIyLCA0NiwgCisgICAgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMTgsIDg5LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxMiwgMTksIDIxNCwgMjM2LCAKKyAgICAyMTYsIDE5MSwgMSwgMjE2LCA3MywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMTIsIDU0LCAyMTQsIDIzNiwgMjE2LCAxOTEsIAorICAgIDEsIDIxMCwgMjEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjA2LCAyMTUsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMjExLCAKKyAgICAxOTMsIDgxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDIwNCwgMTg1LCAyMTEsIDE5MywgODEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgCisgICAgMjM2LCAyMjksIDE5MCwgMywgMjQyLCAyMzQsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMjM2LCAyMjksIDE5MCwgMywgMjQwLCAKKyAgICAxODIsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDEwMiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTA1LCAyMTQsIDIzNiwgCisgICAgMjE2LCAxOTEsIDQxLCAxNDcsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDE0OSwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgCisgICAgMjA2LCAxNjYsIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDIwNCwgMTU5LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgNjIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgNjIsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMjEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgNzAsIDQwLCAyMDQsIAorICAgIDE4OSwgMSwgMjAwLCAzOSwgNzAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgNzIsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAKKyAgICAyMywgNzQsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjE3LCAxMjEsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjE3LCAxMjEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUyLCA4OSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTIsIDg5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjIwLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjIwLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMTkzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMTkzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjE1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjE1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjM1LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgMjM1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjE5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTIsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTAsIDExMiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDExMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIwMiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIwMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIxMywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIxMywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMTcsIDExOSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMTcsIDExOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDE1MSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDE1MSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyNTEsIDIxMiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDE5MywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzgsIDE5MCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDg1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEwLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjEwLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTU3LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTU3LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTc2LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTc2LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTQzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgMTQzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MSwgNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCAxNjUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMDksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjM4LCAxMzMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjE3LCA1NCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzIsIDIzMywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMzksIDcsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM5LCA3LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgCisgICAgMSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDEsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjI4LCAzNywgCisgICAgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMjgsIDM3LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIxNywgMzUsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjE3LCAzNSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDI1MywgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDI1MywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIwOCwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDE4OCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIwNiwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDE4MSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDE4MSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDk0LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIzOCwgOTQsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUwLCAxNTUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUwLCAxNTUsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMDMsIDQwLCAKKyAgICAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjE3LCAxMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNDksIDYxLCA0MCwgCisgICAgMTUyLCA2LCAxLCA2MiwgNDAsIDE1MiwgNiwgMSwgMjUyLCAxMzgsIDQwLCAxNTIsIDYsIDEsIDIzOSwgOSwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjUxLCA5NiwgNDAsIDE1MiwgNiwgMSwgMjM5LCA3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE3NiwgNDAsIDE1MiwgCisgICAgNiwgMSwgMjM5LCA0LCA0MCwgMTUyLCA2LCAxLCAyMzksIDMsIDQwLCAxNTIsIDYsIDEsIDI1MSwgNzksIDQwLCAxNTIsIDYsIAorICAgIDEsIDcyLCA0MCwgMTUyLCA2LCAxLCAyNDYsIDExMSwgNzIsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjU1LCA0MCwgMTUyLCA2LCAKKyAgICAxLCAyMzgsIDI0OCwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNDcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMjQ0LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMzgsIDI0MSwgNDAsIDE1MiwgNiwgMSwgNzAsIDQwLCAxNTIsIDYsIDEsIDIyOCwgMTUxLCA0MCwgMTUyLCA2LCAKKyAgICAxLCAyMzgsIDIxOSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyMTYsIDQwLCAxNTIsIDYsIDEsIDI1MSwgMTU5LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMDMsIDIzNiwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyMDksIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTkyLCA0MCwgCisgICAgMTUyLCA2LCAxLCAyMzgsIDE5MCwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNzksIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTQzLCAKKyAgICA0MCwgMTUyLCA2LCAxLCA3NCwgNDAsIDE1MiwgNiwgMSwgMjE3LCA2MywgNDAsIDE1MiwgNiwgMSwgMjE5LCAxMjEsIDIxNywgCisgICAgMTIxLCA0MCwgMTUyLCA2LCAxLCAyMTIsIDE3MSwgMjE3LCAxMjEsIDQwLCAxNTIsIDYsIDEsIDIxNywgMTIwLCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMzgsIDEzMywgNDAsIDE1MiwgNiwgMSwgMjM4LCAxODQsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTE1LCA0MCwgCisgICAgMTUyLCA2LCAxLCAyMDksIDI1MCwgMjM4LCAxMTUsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTA0LCA0MCwgMTUyLCA2LCAxLCAKKyAgICAyMzgsIDgzLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDgxLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE1NywgNDAsIDE1MiwgNiwgMSwgCisgICAgMjM4LCA3MCwgNDAsIDE1MiwgNiwgMSwgMjM5LCA1LCA0MCwgMTUyLCA2LCAxLCA2NiwgNDAsIDE1MiwgNiwgMSwgMjAzLCAKKyAgICAxODIsIDQwLCAxNTIsIDYsIDEsIDIxOSwgMTIxLCAyMDQsIDMxLCA0MCwgMTUyLCA2LCAxLCAyMTIsIDE3MSwgMjA0LCAzMSwgCisgICAgNDAsIDE1MiwgNiwgMSwgMjM4LCA1NywgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMiwgNDAsIDE1MiwgNiwgMSwgMjM4LCA3LCAKKyAgICA0MCwgMTUyLCA2LCAxLCAyMzgsIDE1NiwgNTQsIDQwLCAxNTIsIDYsIDEsIDIwMywgMTk3LCA0MCwgMTUyLCA0LCAxLCA2MiwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjUyLCAxMzgsIDQwLCAxNTIsIDQsIDEsIDIzOSwgOSwgNDAsIDE1MiwgNCwgMSwgMjUxLCA5NiwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM5LCA3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE3NiwgNDAsIDE1MiwgNCwgMSwgMjM5LCA0LCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDMsIDQwLCAxNTIsIDQsIDEsIDI1MSwgNzksIDQwLCAxNTIsIDQsIDEsIDcyLCA0MCwgCisgICAgMTUyLCA0LCAxLCAyNDYsIDExMSwgNzIsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjU1LCA0MCwgMTUyLCA0LCAxLCAyMzgsIAorICAgIDI0OCwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNDcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMjQ0LCA0MCwgMTUyLCA0LCAxLCAKKyAgICAyMzgsIDI0MSwgNDAsIDE1MiwgNCwgMSwgNzAsIDQwLCAxNTIsIDQsIDEsIDIyOCwgMTUxLCA0MCwgMTUyLCA0LCAxLCAyMzgsIAorICAgIDIxOSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyMTYsIDQwLCAxNTIsIDQsIDEsIDI1MSwgMTU5LCA0MCwgMTUyLCA0LCAxLCAKKyAgICAyMDMsIDIzNiwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyMDksIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTkyLCA0MCwgMTUyLCA0LCAKKyAgICAxLCAyMzgsIDE5MCwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNzksIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTQzLCA0MCwgMTUyLCAKKyAgICA0LCAxLCA3NCwgNDAsIDE1MiwgNCwgMSwgMjE3LCA2MywgNDAsIDE1MiwgNCwgMSwgMjE5LCAxMjEsIDIxNywgMTIxLCA0MCwgCisgICAgMTUyLCA0LCAxLCAyMTIsIDE3MSwgMjE3LCAxMjEsIDQwLCAxNTIsIDQsIDEsIDIxNywgMTIwLCA0MCwgMTUyLCA0LCAxLCAKKyAgICAyMzgsIDEzMywgNDAsIDE1MiwgNCwgMSwgMjM4LCAxODQsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTE1LCA0MCwgMTUyLCA0LCAKKyAgICAxLCAyMDksIDI1MCwgMjM4LCAxMTUsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTA0LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDgzLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzgsIDgxLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE1NywgNDAsIDE1MiwgNCwgMSwgMjM4LCA3MCwgCisgICAgNDAsIDE1MiwgNCwgMSwgMjM5LCA1LCA0MCwgMTUyLCA0LCAxLCA2NiwgNDAsIDE1MiwgNCwgMSwgMjAzLCAxODIsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDIxOSwgMTIxLCAyMDQsIDMxLCA0MCwgMTUyLCA0LCAxLCAyMTIsIDE3MSwgMjA0LCAzMSwgNDAsIDE1MiwgCisgICAgNCwgMSwgMjM4LCA1NywgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMiwgNDAsIDE1MiwgNCwgMSwgMjM4LCA3LCA0MCwgMTUyLCA0LCAKKyAgICAxLCAyMzgsIDE1NiwgNTQsIDQwLCAxNTIsIDQsIDEsIDIwMywgMTk3LCA0MCwgMTUyLCA0MSwgMTAyLCA0MCwgMTUyLCA0MSwgCisgICAgMTY0LCA0MCwgMTUyLCA0MSwgMjA2LCAxNjYsIDQwLCAxNTIsIDQxLCAyMzcsIDEwNCwgNDAsIDE1MiwgNDEsIDExMiwgMjMzLCAKKyAgICA4MiwgNDAsIDE1MiwgNDEsIDExMiwgMjA2LCA1MCwgMjEyLCAxNTksIDE3LCAxMDIsIDIxMiwgMTU5LCAxNywgMTA1LCAyMTIsIAorICAgIDE1OSwgMTcsIDE0NywgMjEyLCAxNTksIDE3LCAxNDksIDIxMiwgMTU5LCAxNywgMTY0LCAyMTIsIDE1OSwgMTcsIDE4NywgCisgICAgMjEyLCAxNTksIDE3LCAyMTAsIDEzNSwgMjEyLCAxNTksIDE3LCAxOTIsIDIxMiwgMTU5LCAxNywgMjE5LCAxMTMsIDIxMiwgCisgICAgMTU5LCA0MSwgMjA2LCAxNjYsIDIxMiwgMTU5LCA0MSwgMjA0LCAxNTksIDIxMiwgMTU5LCA0MSwgMjA2LCA2NywgMjEyLCAKKyAgICAxNTksIDQxLCAyMzYsIDIzNSwgMjEyLCAxNTksIDQxLCAyMzcsIDEwNCwgMjEyLCAxNTksIDQxLCAyMDksIDkyLCAyMTIsIAorICAgIDE1OSwgNDEsIDIxMCwgMTI5LCAyMTIsIDE1OSwgNDEsIDIzOCwgMjIyLCAyMTIsIDE1OSwgNDEsIDIxOSwgMTA4LCAyMTIsIAorICAgIDE1OSwgNDEsIDExMiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAxMjAsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMTI2LCAKKyAgICAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDIzNywgNjEsIDIzMywgODIsIAorICAgIDIxMiwgMTU5LCA0MSwgMjA5LCAxMDYsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDIxMiwgCisgICAgMTU5LCA0MSwgMjM4LCAyMzIsIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDIxMiwgMTU5LCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjEyLCAxNTksIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDIxMiwgMTU5LCAyMzYsIAorICAgIDIxOSwgMTEyLCAyMDYsIDc0LCAyMTIsIDE1OSwgMjM2LCAyMTksIDEyMCwgMjA2LCA3MSwgMTUxLCAyLCAyNDcsIDE0OSwgCisgICAgMTUxLCAyLCAyNTEsIDMzLCAxNTEsIDIsIDIwMiwgMjAzLCAxNTEsIDIsIDIyNywgMjAxLCAxNTEsIDIsIDIwMywgMjI2LCAKKyAgICAxNTEsIDEsIDYyLCAxNTEsIDEsIDI1MiwgMTM4LCAxNTEsIDEsIDcwLCAxNTEsIDEsIDIyOCwgMTUxLCAxNTEsIDEsIDY2LCAKKyAgICAxNTEsIDEsIDIwMywgMTgyLCAxNTEsIDEsIDEwOSwgMTQ2LCAxNTEsIDEsIDEwOSwgMjEyLCAyMTYsIDE1MSwgMSwgMTA5LCAKKyAgICAxNTYsIDE1MSwgMSwgMTA5LCAyMjQsIDEzOSwgMTUxLCAxLCA3MiwgMTUxLCAxLCAyNTEsIDE3NiwgMTUxLCAxLCA3NCwgCisgICAgMTUxLCAxLCAyNTAsIDEzOSwgMTUxLCAxLCAxNjEsIDE1MSwgMSwgMjI2LCAyMDcsIDE1MSwgMSwgMjM2LCA4OSwgMTUxLCAxLCAKKyAgICAyMzUsIDE5OSwgMTUxLCAxLCAyMTksIDI1MywgMTUxLCAxLCAyNDcsIDE5MCwgMTUxLCAxLCAyNDcsIDM3LCAxNTEsIDEsIAorICAgIDIyNywgMjQ4LCAxNTEsIDEsIDIyNywgMjE1LCAxNTEsIDEsIDIxOCwgNjAsIDE1MSwgMSwgMjA0LCAyNTMsIDE1MSwgMSwgCisgICAgMjA0LCAyNDEsIDE1MSwgMSwgMjQxLCAyMjAsIDE1MSwgMSwgMjQxLCAyMDQsIDE1MSwgMSwgMjE5LCAyMSwgMTUxLCAxLCAKKyAgICAyMDcsIDM2LCAxNTEsIDEsIDIwNiwgMTIyLCAxNTEsIDEsIDI0MiwgNTgsIDE1MSwgMSwgMjQxLCAxMDAsIDE1MSwgMSwgCisgICAgMTg4LCAxNTEsIDEsIDE3MiwgMTUxLCAxLCAyMTUsIDI0NSwgMTUxLCAxLCAyNDksIDEzNiwgMTUxLCAxLCAyNDgsIDIwMCwgCisgICAgMTUxLCAxLCAxNzgsIDE1MSwgMSwgMTgzLCAxNTEsIDEsIDIxMywgMjUyLCAxNTEsIDEsIDE5NCwgMTUxLCAxLCAyMDMsIDkwLCAKKyAgICAxNTEsIDEsIDIxMCwgMTE0LCAxNTEsIDEsIDIwOCwgMTc5LCAxNTEsIDEsIDIxMiwgNjQsIDE1MSwgMSwgMTQ0LCAxNTEsIDEsIAorICAgIDIyNCwgMTM4LCAxNTEsIDEsIDQwLCA0NSwgMjI0LCAxMjksIDE1MSwgMSwgNDAsIDQ1LCAyMTIsIDIxNSwgMTUxLCAxLCA0MCwgCisgICAgNDUsIDIxOSwgMywgMTUxLCAyMiwgMiwgMjUyLCAxMzgsIDE1MSwgMjIsIDIsIDI0OCwgMTk3LCAyNTIsIDEzOCwgMTUxLCAKKyAgICAyMiwgMiwgNzAsIDE1MSwgMjIsIDIsIDIyOCwgMTUxLCAxNTEsIDIyLCAyLCA2NiwgMTUxLCAyMiwgMiwgMjAzLCAxODIsIAorICAgIDE1MSwgMjIsIDIsIDEwOSwgMTQ2LCAxNTEsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxNTEsIDIyLCAyLCAxMDksIDE1NiwgCisgICAgMTUxLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTUxLCAyMiwgMiwgNzIsIDE1MSwgMjIsIDIsIDI1MSwgMTc2LCAxNTEsIDIyLCAKKyAgICAyLCA3NCwgMTUxLCAyMiwgMiwgMjUwLCAxMzksIDE1MSwgMjAyLCAyMDgsIDE1MSwgMjQyLCAxMCwgMTUxLCA1MywgMjQyLCAKKyAgICAxMCwgMTUxLCAyMTQsIDIxMiwgMjQwLCAxODIsIDE1MSwgMjE0LCAyMTIsIDUzLCAyNDAsIDE4MiwgMTUxLCAyMTQsIDIxMiwgCisgICAgMjI0LCAxNzYsIDE1MSwgMjE0LCAyMTIsIDI0MiwgMjQ0LCAxNDgsIDE1MSwgMjE0LCAyMTIsIDIyNCwgNjQsIDE1MSwgNDEsIAorICAgIDEwMiwgMTUxLCA0MSwgMTA1LCAxNTEsIDQxLCAxNDcsIDE1MSwgNDEsIDE0OSwgMTUxLCA0MSwgMTY0LCAxNTEsIDQxLCAKKyAgICAxODcsIDE1MSwgNDEsIDIxMCwgMTM1LCAxNTEsIDQxLCAxOTIsIDE1MSwgNDEsIDIxOSwgMTEzLCAxNTEsIDQxLCAyMDYsIAorICAgIDE2NiwgMTUxLCA0MSwgMjA0LCAxNTksIDE1MSwgNDEsIDIwNiwgNjcsIDE1MSwgNDEsIDIzNiwgMjM1LCAxNTEsIDQxLCAKKyAgICAyMzcsIDEwNCwgMTUxLCA0MSwgMjA5LCA5MiwgMTUxLCA0MSwgMjEwLCAxMjksIDE1MSwgNDEsIDIzOCwgMjIyLCAxNTEsIAorICAgIDQxLCAyMTksIDEwOCwgMTUxLCA0MSwgMTEyLCAyMzMsIDgyLCAxNTEsIDQxLCAxMTIsIDIwNiwgNTAsIDE1MSwgMTcsIDE5OSwgCisgICAgODEsIDE1MSwgMTcsIDEwMiwgMTUxLCAxNywgMTA1LCAxNTEsIDE3LCAxNDcsIDE1MSwgMTcsIDE0OSwgMTUxLCAxNywgMTY0LCAKKyAgICAxNTEsIDE3LCAxODcsIDE1MSwgMTcsIDIxMCwgMTM1LCAxNTEsIDE3LCAxOTIsIDE1MSwgMTcsIDIxOSwgMTEzLCAxNTEsIAorICAgIDQxLCAyMjcsIDE2MSwgMjI3LCA3OSwgMiwgMjQ3LCAxNDksIDIyNywgNzksIDIsIDI1MSwgMzMsIDIyNywgNzksIDIsIDIwMiwgCisgICAgMjAzLCAyMjcsIDc5LCAxLCA2MiwgMjI3LCA3OSwgMSwgMjUyLCAxMzgsIDIyNywgNzksIDEsIDcwLCAyMjcsIDc5LCAxLCAKKyAgICAyMjgsIDE1MSwgMjI3LCA3OSwgMSwgNjYsIDIyNywgNzksIDEsIDIwMywgMTgyLCAyMjcsIDc5LCAxLCA3MiwgMjI3LCA3OSwgCisgICAgMSwgMjUxLCAxNzYsIDIyNywgNzksIDEsIDc0LCAyMjcsIDc5LCAxLCAyNTAsIDEzOSwgMjI3LCA3OSwgMSwgMTYxLCAyMjcsIAorICAgIDc5LCAxLCAyMjYsIDIwNywgMjI3LCA3OSwgMSwgMjM2LCA4OSwgMjI3LCA3OSwgMSwgMjM1LCAxOTksIDIyNywgNzksIDEsIAorICAgIDIxOSwgMjUzLCAyMjcsIDc5LCAxLCAyNDcsIDE5MCwgMjI3LCA3OSwgMSwgMjQ3LCAzNywgMjI3LCA3OSwgMSwgMjI3LCAKKyAgICAyNDgsIDIyNywgNzksIDEsIDIyNywgMjE1LCAyMjcsIDc5LCAxLCAyMTgsIDYwLCAyMjcsIDc5LCAxLCAyMDQsIDI1MywgCisgICAgMjI3LCA3OSwgMSwgMjA0LCAyNDEsIDIyNywgNzksIDEsIDI0MSwgMjIwLCAyMjcsIDc5LCAxLCAyNDEsIDIwOSwgMjI3LCAKKyAgICA3OSwgMSwgMjQxLCAyMDQsIDIyNywgNzksIDEsIDIxMywgOTMsIDIyNywgNzksIDEsIDIxOSwgMjEsIDIyNywgNzksIDEsIAorICAgIDIwNywgMzYsIDIyNywgNzksIDEsIDIwNiwgMTIyLCAyMjcsIDc5LCAxLCAyNDIsIDU4LCAyMjcsIDc5LCAxLCAyNDEsIDEwMCwgCisgICAgMjI3LCA3OSwgMSwgMTg4LCAyMjcsIDc5LCAxLCAxNzIsIDIyNywgNzksIDEsIDIxNSwgMjQ1LCAyMjcsIDc5LCAxLCAyNDksIAorICAgIDEzNiwgMjI3LCA3OSwgMSwgMjQ4LCAyMDAsIDIyNywgNzksIDEsIDE3OCwgMjI3LCA3OSwgMSwgMTgzLCAyMjcsIDc5LCAxLCAKKyAgICAyMTMsIDI1MiwgMjI3LCA3OSwgMSwgMTk0LCAyMjcsIDc5LCAxLCAyMDMsIDkwLCAyMjcsIDc5LCAxLCAyMTAsIDExNCwgCisgICAgMjI3LCA3OSwgMSwgMjA4LCAxNzksIDIyNywgNzksIDEsIDIxMiwgNjQsIDIyNywgNzksIDEsIDE0NCwgMjI3LCA3OSwgMjIsIAorICAgIDIsIDI1MiwgMTM4LCAyMjcsIDc5LCAyMiwgMiwgNzAsIDIyNywgNzksIDIyLCAyLCAyMjgsIDE1MSwgMjI3LCA3OSwgMjIsIAorICAgIDIsIDY2LCAyMjcsIDc5LCAyMiwgMiwgMjAzLCAxODIsIDIyNywgNzksIDIyLCAyLCA3MiwgMjI3LCA3OSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMjcsIDc5LCAyMiwgMiwgNzQsIDIyNywgNzksIDIyLCAyLCAyNTAsIDEzOSwgMjI3LCA3OSwgMiwgMjAyLCAyMDgsIAorICAgIDIyNywgNzksIDIsIDIxOCwgMTAwLCAyMjcsIDc5LCAyNTIsIDMsIDU0LCAyMjcsIDc5LCAyMzgsIDE0NiwgNTQsIDIyNywgCisgICAgNzksIDQxLCA1NCwgMjI3LCA3OSwgMjExLCAxOTMsIDgxLCAyMjcsIDc5LCA1MywgMjExLCAxOTMsIDgxLCAyMjcsIDc5LCAKKyAgICAyNDIsIDEwLCAyMjcsIDc5LCA1MywgMjQyLCAxMCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTIsIDQ3LCAyMDksIDYsIDIwOSwgCisgICAgMTQsIDEsIDIwNywgOSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyNDksIDEwNywgMjA5LCA2LCAyMDksIDE0LCAxLCAyNDcsIAorICAgIDE3OSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyNDIsIDM4LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIzNiwgNzQsIDIwOSwgNiwgCisgICAgMjA5LCAxNCwgMSwgMjIyLCAyMDYsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjE5LCAyNTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjI1LCAxNTIsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjIwLCAxNDQsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjAzLCA4NiwgMjA5LCAKKyAgICA2LCAyMDksIDE0LCAxLCAyMTYsIDE5MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMDAsIDkwLCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDIxMywgMjMxLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIzNCwgMjI0LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyNywgODQsIDIwOSwgCisgICAgNiwgMjA5LCAxNCwgMSwgMjI3LCAyNDIsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjE4LCA1NywgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyNTEsIDE4NSwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMzgsIDI1MywgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjgsIDE1MiwgCisgICAgMjA5LCA2LCAyMDksIDE0LCAxLCAyMDQsIDI1LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxNywgMTA4LCAyMDksIDYsIDIwOSwgCisgICAgMTQsIDEsIDIzOCwgMjQxLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyMiwgMjE5LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxOTksIAorICAgIDgxLCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxMDIsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDEwNSwgMjA5LCA2LCAyMDksIDE0LCAKKyAgICAxNywgMTQ3LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxNDksIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE2NCwgMjA5LCA2LCAyMDksIAorICAgIDE0LCAxNywgMTg3LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAyMTAsIDEzNSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTkyLCAKKyAgICAyMDksIDYsIDIwOSwgMTQsIDE3LCAyMTksIDExMywgMjQ3LCAzMSwgMiwgMjQ3LCAxNDksIDI0NywgMzEsIDIsIDI1MSwgMzMsIAorICAgIDI0NywgMzEsIDIsIDIwMiwgMjAzLCAyNDcsIDMxLCAxLCAyNTIsIDEzOCwgMjQ3LCAzMSwgMSwgNzAsIDI0NywgMzEsIDEsIAorICAgIDY2LCAyNDcsIDMxLCAxLCA3MiwgMjQ3LCAzMSwgMSwgMjI3LCAxMDUsIDI0NywgMzEsIDEsIDIyNiwgMjA2LCAyNDcsIDMxLCAKKyAgICAxLCAyMzYsIDg2LCAyNDcsIDMxLCAxLCAyMzUsIDE5OCwgMjQ3LCAzMSwgMSwgMjE5LCAyNTIsIDI0NywgMzEsIDEsIDI0NywgCisgICAgMTg5LCAyNDcsIDMxLCAxLCAyNDcsIDM2LCAyNDcsIDMxLCAxLCAyMjcsIDI0NywgMjQ3LCAzMSwgMSwgMjI3LCAyMTQsIAorICAgIDI0NywgMzEsIDEsIDIxOCwgNTksIDI0NywgMzEsIDEsIDIwNCwgMjUyLCAyNDcsIDMxLCAxLCAyMDQsIDI0MCwgMjQ3LCAzMSwgCisgICAgMSwgMjQxLCAyMTksIDI0NywgMzEsIDEsIDI0MSwgMjAzLCAyNDcsIDMxLCAxLCAyMTksIDIwLCAyNDcsIDMxLCAxLCAyMDcsIAorICAgIDMyLCAyNDcsIDMxLCAxLCAyMDYsIDEyMSwgMjQ3LCAzMSwgMSwgMjQyLCA1NywgMjQ3LCAzMSwgMSwgMjQxLCA5OSwgMjQ3LCAKKyAgICAzMSwgMSwgMjIwLCAxNTcsIDI0NywgMzEsIDEsIDIxNiwgMjEwLCAyNDcsIDMxLCAxLCAyMTUsIDI0NCwgMjQ3LCAzMSwgMSwgCisgICAgMjQ5LCAxMzQsIDI0NywgMzEsIDEsIDI0OCwgMTk5LCAyNDcsIDMxLCAxLCAyMjIsIDIzMywgMjQ3LCAzMSwgMSwgMTk5LCAKKyAgICAxNjUsIDI0NywgMzEsIDEsIDIwMCwgMTA5LCAyNDcsIDMxLCAxLCAyMTMsIDI0OCwgMjQ3LCAzMSwgMSwgMjI1LCAxNzUsIAorICAgIDI0NywgMzEsIDEsIDIwMSwgMTEzLCAyNDcsIDMxLCAxLCAyMTIsIDYxLCAyNDcsIDMxLCAxLCAyMzQsIDIzMywgMjQ3LCAzMSwgCisgICAgMjIsIDIsIDYyLCAyNDcsIDMxLCAyMiwgMiwgNzAsIDI0NywgMzEsIDIyLCAyLCAyMjgsIDE1MSwgMjQ3LCAzMSwgMjIsIDIsIAorICAgIDY2LCAyNDcsIDMxLCAyMiwgMiwgMjAzLCAxODIsIDI0NywgMzEsIDIyLCAyLCA3MiwgMjQ3LCAzMSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyNDcsIDMxLCAyMiwgMiwgNzQsIDI0NywgMzEsIDIyLCAyLCAyNTAsIDEzOSwgMjQ3LCAzMSwgMjIsIDIsIDIxNywgCisgICAgMTA1LCAyNDcsIDMxLCAxNjMsIDgxLCAyNDcsIDMxLCAyNTAsIDE0MCwgODEsIDI0NywgMzEsIDIwMiwgMjA4LCAyNDcsIDMxLCAKKyAgICAyMjIsIDIzMSwgMjQ3LCAzMSwgMTcsIDE5OSwgODEsIDI0NywgMzEsIDE3LCAxMDIsIDI0NywgMzEsIDE3LCAxMDUsIDI0NywgCisgICAgMzEsIDE3LCAxNDcsIDI0NywgMzEsIDE3LCAxNDksIDI0NywgMzEsIDE3LCAxNjQsIDI0NywgMzEsIDE3LCAxODcsIDI0NywgCisgICAgMzEsIDE3LCAyMTAsIDEzNSwgMjQ3LCAzMSwgMTcsIDE5MiwgMjQ3LCAzMSwgMTcsIDIxOSwgMTEzLCAyNDcsIDMxLCAyMTEsIAorICAgIDE5MywgODEsIDI0NywgMzEsIDI0MiwgMTAsIDI0NywgMzEsIDUzLCAyNDIsIDEwLCAyNDcsIDMxLCAyMTQsIDc5LCA4MSwgCisgICAgMjIyLCAyMDQsIDEsIDYyLCAyMjIsIDIwNCwgMSwgNzAsIDIyMiwgMjA0LCAxLCA2NiwgMjIyLCAyMDQsIDEsIDcyLCAyMjIsIAorICAgIDIwNCwgMSwgNzQsIDIyMiwgMjA0LCAxLCAxNjEsIDIyMiwgMjA0LCAxLCAyMjYsIDIwNywgMjIyLCAyMDQsIDEsIDIzNiwgCisgICAgODksIDIyMiwgMjA0LCAxLCAyMzUsIDE5OSwgMjIyLCAyMDQsIDEsIDI0NywgMTkwLCAyMjIsIDIwNCwgMSwgMjQ3LCAzNywgCisgICAgMjIyLCAyMDQsIDEsIDIyNywgMjQ4LCAyMjIsIDIwNCwgMSwgMjI3LCAyMTUsIDIyMiwgMjA0LCAxLCAyMTgsIDYwLCAyMjIsIAorICAgIDIwNCwgMSwgMjA0LCAyNTMsIDIyMiwgMjA0LCAxLCAyMDQsIDI0MSwgMjIyLCAyMDQsIDEsIDI0MSwgMjIwLCAyMjIsIDIwNCwgCisgICAgMSwgMjQxLCAyMDQsIDIyMiwgMjA0LCAxLCAyMTksIDIxLCAyMjIsIDIwNCwgMSwgMjA3LCAzNiwgMjIyLCAyMDQsIDEsIAorICAgIDIwNiwgMTIyLCAyMjIsIDIwNCwgMSwgMjQyLCA1OCwgMjIyLCAyMDQsIDEsIDI0MSwgMTAwLCAyMjIsIDIwNCwgMSwgMTg4LCAKKyAgICAyMjIsIDIwNCwgMSwgMTcyLCAyMjIsIDIwNCwgMSwgMjE1LCAyNDUsIDIyMiwgMjA0LCAxLCAyNDksIDEzNiwgMjIyLCAyMDQsIAorICAgIDEsIDI0OCwgMjAwLCAyMjIsIDIwNCwgMSwgMTc4LCAyMjIsIDIwNCwgMSwgMjEzLCAyNTIsIDIyMiwgMjA0LCAxLCAxOTQsIAorICAgIDIyMiwgMjA0LCAxLCAyMDMsIDkwLCAyMjIsIDIwNCwgMSwgMjEyLCA2NCwgMjIyLCAyMDQsIDEsIDE0NCwgMjIyLCAyMDQsIAorICAgIDEsIDIxMiwgMjE1LCAyMjIsIDIwNCwgMiwgMjE4LCAxMDAsIDIyMiwgMjA0LCAyNTIsIDMsIDU0LCAyMjIsIDIwNCwgMjExLCAKKyAgICAxOTMsIDgxLCAyMjIsIDIwNCwgMzMsIDIwOSwgMjI4LCAxODYsIDIsIDI0NywgMTQ5LCAxODYsIDIsIDI1MSwgMzMsIDE4NiwgCisgICAgMiwgMjAyLCAyMDMsIDE4NiwgMSwgNjIsIDE4NiwgMSwgMjUyLCAxMzgsIDE4NiwgMSwgNzAsIDE4NiwgMSwgMjI4LCAxNTEsIAorICAgIDE4NiwgMSwgNjYsIDE4NiwgMSwgMjAzLCAxODIsIDE4NiwgMSwgMTA5LCAxNDYsIDE4NiwgMSwgMTA5LCAyMTIsIDIxNiwgCisgICAgMTg2LCAxLCAxMDksIDE1NiwgMTg2LCAxLCAxMDksIDIyNCwgMTM5LCAxODYsIDEsIDcyLCAxODYsIDEsIDI1MSwgMTc2LCAKKyAgICAxODYsIDEsIDc0LCAxODYsIDEsIDI1MCwgMTM5LCAxODYsIDEsIDE2MSwgMTg2LCAxLCAyMjYsIDIwNywgMTg2LCAxLCAyMzYsIAorICAgIDg5LCAxODYsIDEsIDIzNSwgMTk5LCAxODYsIDEsIDIxOSwgMjUzLCAxODYsIDEsIDI0NywgMTkwLCAxODYsIDEsIDI0NywgCisgICAgMzcsIDE4NiwgMSwgMjI3LCAyNDgsIDE4NiwgMSwgMjI3LCAyMTUsIDE4NiwgMSwgMjE4LCA2MCwgMTg2LCAxLCAyMDQsIAorICAgIDI1MywgMTg2LCAxLCAyMDQsIDI0MSwgMTg2LCAxLCAyNDEsIDIyMCwgMTg2LCAxLCAyNDEsIDIwNCwgMTg2LCAxLCAyMTksIAorICAgIDIxLCAxODYsIDEsIDIwNywgMzYsIDE4NiwgMSwgMjA2LCAxMjIsIDE4NiwgMSwgMjQyLCA1OCwgMTg2LCAxLCAyNDEsIDEwMCwgCisgICAgMTg2LCAxLCAxODgsIDE4NiwgMSwgMTcyLCAxODYsIDEsIDIxNSwgMjQ1LCAxODYsIDEsIDI0OSwgMTM2LCAxODYsIDEsIAorICAgIDI0OCwgMjAwLCAxODYsIDEsIDE3OCwgMTg2LCAxLCAxODMsIDE4NiwgMSwgMjEzLCAyNTIsIDE4NiwgMSwgMTk0LCAxODYsIAorICAgIDEsIDIyNCwgMTM4LCAxODYsIDEsIDIwMywgOTAsIDE4NiwgMSwgMjEwLCAxMTQsIDE4NiwgMSwgMjA4LCAxNzksIDE4NiwgMSwgCisgICAgMjEyLCA2NCwgMTg2LCAxLCAxNDQsIDE4NiwgMjIsIDIsIDI1MiwgMTM4LCAxODYsIDIyLCAyLCA3MCwgMTg2LCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE4NiwgMjIsIDIsIDY2LCAxODYsIDIyLCAyLCAyMDMsIDE4MiwgMTg2LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE4NiwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE4NiwgMjIsIDIsIDEwOSwgMTU2LCAxODYsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCAxODYsIDIyLCAyLCA3MiwgMTg2LCAyMiwgMiwgMjUxLCAxNzYsIDE4NiwgMjIsIDIsIDc0LCAxODYsIDIyLCAyLCAKKyAgICAyNTAsIDEzOSwgMTg2LCAyLCAyMDIsIDIwOCwgMTg2LCAyLCAyNTAsIDEyMiwgMTg2LCAyLCAyMjcsIDIwMSwgMTg2LCAyLCAKKyAgICAyMDMsIDIyNiwgMTg2LCAyMTcsIDg2LCAxODYsIDI0MiwgMTAsIDE4NiwgNTMsIDI0MiwgMTAsIDE4NiwgMjUyLCAzLCA1NCwgCisgICAgMTg2LCAyMTAsIDE1NCwgMTg2LCAyMTIsIDksIDgxLCAxODYsIDIsIDIxOCwgMTAwLCAxODYsIDIyLCA2NywgODEsIDE4NiwgCisgICAgMjM4LCAzMCwgMjA5LCAyNTAsIDIyLCA4MSwgMTg2LCAyMDcsIDE5NCwgODEsIDE4NiwgMTcsIDE5OSwgODEsIDE4NiwgMTcsIAorICAgIDEwMiwgMTg2LCAxNywgMTA1LCAxODYsIDE3LCAxNDcsIDE4NiwgMTcsIDE0OSwgMTg2LCAxNywgMTY0LCAxODYsIDE3LCAKKyAgICAxODcsIDE4NiwgMTcsIDIxMCwgMTM1LCAxODYsIDE3LCAxOTIsIDE4NiwgMTcsIDIxOSwgMTEzLCAxODYsIDIzOCwgMjE1LCAKKyAgICAxODYsIDIsIDIwOSwgMTc3LCAxODYsIDIzNCwgMTMwLCAxODYsIDI0MywgNDEsIDU0LCAxODYsIDIxMSwgMTkzLCAyMjIsIAorICAgIDE0OSwgMTg2LCAyMTEsIDE5MywgMjIyLCAxNDgsIDE0MywgMjUwLCAyMzQsIDE3LCAxMDIsIDE0MywgMjUwLCAyMzQsIDE3LCAKKyAgICAxMDUsIDE0MywgMjUwLCAyMzQsIDE3LCAxNDcsIDE0MywgMjUwLCAyMzQsIDE3LCAxNDksIDE0MywgMjUwLCAyMzQsIDE3LCAKKyAgICAxNjQsIDE0MywgMjUwLCAyMzQsIDE3LCAxODcsIDE0MywgMjUwLCAyMzQsIDE3LCAyMTAsIDEzNSwgMTQzLCAyNTAsIDIzNCwgCisgICAgMTcsIDE5MiwgMTQzLCAyNTAsIDIzNCwgMTcsIDIxOSwgMTEzLCAxNDMsIDI1MCwgMjM0LCA0MSwgMjA2LCAxNjYsIDE0MywgCisgICAgMjUwLCAyMzQsIDQxLCAyMDQsIDE1OSwgMTQzLCAyNTAsIDIzNCwgNDEsIDIwNiwgNjcsIDE0MywgMjUwLCAyMzQsIDQxLCAKKyAgICAyMzYsIDIzNSwgMTQzLCAyNTAsIDIzNCwgNDEsIDIzNywgMTA0LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjA5LCA5MiwgMTQzLCAKKyAgICAyNTAsIDIzNCwgNDEsIDIxMCwgMTI5LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjM4LCAyMjIsIDE0MywgMjUwLCAyMzQsIDQxLCAKKyAgICAyMTksIDEwOCwgMTQzLCAyNTAsIDIzNCwgNDEsIDExMiwgMjMzLCA4MiwgMTQzLCAyNTAsIDIzNCwgNDEsIDExMiwgMjA2LCAKKyAgICA1MCwgMjI2LCAxNzcsIDEsIDYyLCAyMjYsIDE3NywgMSwgMjUyLCAxMzgsIDIyNiwgMTc3LCAxLCA3MCwgMjI2LCAxNzcsIDEsIAorICAgIDY2LCAyMjYsIDE3NywgMSwgNzIsIDIyNiwgMTc3LCAxLCAyNTEsIDE3NiwgMjI2LCAxNzcsIDEsIDc0LCAyMjYsIDE3NywgMSwgCisgICAgMjUwLCAxMzksIDIyNiwgMTc3LCAxLCAxNjEsIDIyNiwgMTc3LCAxLCAyMjYsIDIwNywgMjI2LCAxNzcsIDEsIDIzNiwgODksIAorICAgIDIyNiwgMTc3LCAxLCAyMzUsIDIzNSwgMjI2LCAxNzcsIDEsIDIzNSwgMTk5LCAyMjYsIDE3NywgMSwgMjE5LCAyNTMsIDIyNiwgCisgICAgMTc3LCAxLCAyNDcsIDE5MCwgMjI2LCAxNzcsIDEsIDI0NywgMzcsIDIyNiwgMTc3LCAxLCAyMjcsIDI0OCwgMjI2LCAxNzcsIAorICAgIDEsIDIyNywgMTk0LCAyMjYsIDE3NywgMSwgMjE4LCA2MCwgMjI2LCAxNzcsIDEsIDIwNCwgMjUzLCAyMjYsIDE3NywgMSwgCisgICAgMjA0LCAyNDEsIDIyNiwgMTc3LCAxLCAyNDEsIDIyMCwgMjI2LCAxNzcsIDEsIDI0MSwgMjA0LCAyMjYsIDE3NywgMSwgMjE5LCAKKyAgICAyMSwgMjI2LCAxNzcsIDEsIDIwNywgMzYsIDIyNiwgMTc3LCAxLCAyMDYsIDEyMiwgMjI2LCAxNzcsIDEsIDI0MiwgNTgsIAorICAgIDIyNiwgMTc3LCAxLCAyNDEsIDIxMCwgMjI2LCAxNzcsIDEsIDI0MSwgMTAwLCAyMjYsIDE3NywgMSwgMTg4LCAyMjYsIDE3NywgCisgICAgMSwgMTcyLCAyMjYsIDE3NywgMSwgMjE1LCAyNDUsIDIyNiwgMTc3LCAxLCAyNDksIDEzNiwgMjI2LCAxNzcsIDEsIDI0OSwgCisgICAgNDQsIDIyNiwgMTc3LCAxLCAyNDgsIDIwMCwgMjI2LCAxNzcsIDEsIDE3OCwgMjI2LCAxNzcsIDEsIDE4MywgMjI2LCAxNzcsIAorICAgIDEsIDIxMywgMjUyLCAyMjYsIDE3NywgMSwgMTk0LCAyMjYsIDE3NywgMSwgMjAzLCA5MCwgMjI2LCAxNzcsIDEsIDIxMiwgCisgICAgNjQsIDIyNiwgMTc3LCAxLCAxNDQsIDIyNiwgMTc3LCAxLCAyMjQsIDEzOCwgMjI2LCAxNzcsIDIyLCAyLCAyNTIsIDEzOCwgCisgICAgMjI2LCAxNzcsIDIyLCAyLCA3MCwgMjI2LCAxNzcsIDIyLCAyLCAyMjgsIDE1MSwgMjI2LCAxNzcsIDIyLCAyLCA2NiwgMjI2LCAKKyAgICAxNzcsIDIyLCAyLCA3MiwgMjI2LCAxNzcsIDIyLCAyLCAyNTEsIDE3NiwgMjI2LCAxNzcsIDIyLCAyLCA3NCwgMjI2LCAxNzcsIAorICAgIDIyLCAyLCAyNTAsIDEzOSwgMjI2LCAxNzcsIDIsIDI1MSwgMzMsIDIyNiwgMTc3LCAyLCAyMDIsIDIwOCwgMjI2LCAxNzcsIAorICAgIDIsIDIxOCwgMTAwLCAyMjYsIDE3NywgMiwgMjEwLCAxMDQsIDIyNiwgMTc3LCAyNDIsIDEwLCAyMjYsIDE3NywgNTMsIDI0MiwgCisgICAgMTAsIDIyNiwgMTc3LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDIyNiwgMTc3LCAyMTEsIDE5MywgODEsIDIyNiwgMTc3LCA1MywgCisgICAgMjExLCAxOTMsIDgxLCAyMjYsIDE3NywgMjUyLCAzLCA1NCwgMjI2LCAxNzcsIDIsIDIwNywgMjM2LCAyMjEsIDI1LCAxLCAKKyAgICA2MiwgMjIxLCAyNSwgMSwgNzAsIDIyMSwgMjUsIDEsIDY2LCAyMjEsIDI1LCAxLCA3MiwgMjIxLCAyNSwgMSwgMTYxLCAyMjEsIAorICAgIDI1LCAxLCAyMjYsIDIwNywgMjIxLCAyNSwgMSwgMjM2LCA4OSwgMjIxLCAyNSwgMSwgMjM1LCAxOTksIDIyMSwgMjUsIDEsIAorICAgIDI0NywgMTkwLCAyMjEsIDI1LCAxLCAyNDcsIDM3LCAyMjEsIDI1LCAxLCAyMjcsIDI0OCwgMjIxLCAyNSwgMSwgMjI3LCAKKyAgICAxOTQsIDIyMSwgMjUsIDEsIDIxOCwgNjAsIDIyMSwgMjUsIDEsIDIwNCwgMjUzLCAyMjEsIDI1LCAxLCAyMDQsIDI0MSwgCisgICAgMjIxLCAyNSwgMSwgMjQxLCAyMjAsIDIyMSwgMjUsIDEsIDI0MSwgMjEwLCAyMjEsIDI1LCAxLCAyNDEsIDIwNCwgMjIxLCAKKyAgICAyNSwgMSwgMjE5LCAyMSwgMjIxLCAyNSwgMSwgMjA3LCAzNiwgMjIxLCAyNSwgMSwgMjA2LCAxMjIsIDIyMSwgMjUsIDEsIAorICAgIDI0MiwgNTgsIDIyMSwgMjUsIDEsIDI0MSwgMTAwLCAyMjEsIDI1LCAxLCAxODgsIDIyMSwgMjUsIDEsIDE3MiwgMjIxLCAyNSwgCisgICAgMSwgMjE1LCAyNDUsIDIyMSwgMjUsIDEsIDI0OSwgMTM2LCAyMjEsIDI1LCAxLCAyNDgsIDIwMCwgMjIxLCAyNSwgMSwgMTc4LCAKKyAgICAyMjEsIDI1LCAxLCAxODMsIDIyMSwgMjUsIDEsIDIxMywgMjUyLCAyMjEsIDI1LCAxLCAxOTQsIDIyMSwgMjUsIDEsIDIwMywgCisgICAgOTAsIDIyMSwgMjUsIDEsIDIxMiwgNjQsIDIyMSwgMjUsIDEsIDE0NCwgMjIxLCAyNSwgMSwgMjEyLCAyMTUsIDIyMSwgMjUsIAorICAgIDEsIDIxMywgOTMsIDIyMSwgMjUsIDIxMSwgMTkzLCA4MSwgMjI2LCAxNjksIDEsIDYyLCAyMjYsIDE2OSwgMSwgMjUyLCAKKyAgICAxMzgsIDIyNiwgMTY5LCAxLCA3MCwgMjI2LCAxNjksIDEsIDIyOCwgMTUxLCAyMjYsIDE2OSwgMSwgNjYsIDIyNiwgMTY5LCAKKyAgICAxLCAyMDMsIDE4MiwgMjI2LCAxNjksIDEsIDcyLCAyMjYsIDE2OSwgMSwgMjUxLCAxNzYsIDIyNiwgMTY5LCAxLCA3NCwgCisgICAgMjI2LCAxNjksIDEsIDI1MCwgMTM5LCAyMjYsIDE2OSwgMSwgMTYxLCAyMjYsIDE2OSwgMSwgMjI2LCAyMDcsIDIyNiwgMTY5LCAKKyAgICAxLCAyMzYsIDg5LCAyMjYsIDE2OSwgMSwgMjM1LCAyMzUsIDIyNiwgMTY5LCAxLCAyMzUsIDE5OSwgMjI2LCAxNjksIDEsIAorICAgIDIxOSwgMjUzLCAyMjYsIDE2OSwgMSwgMjQ3LCAxOTAsIDIyNiwgMTY5LCAxLCAyNDcsIDM3LCAyMjYsIDE2OSwgMSwgMjI3LCAKKyAgICAyNDgsIDIyNiwgMTY5LCAxLCAyMjcsIDE5NCwgMjI2LCAxNjksIDEsIDIyNywgMjE1LCAyMjYsIDE2OSwgMSwgMjE4LCA2MCwgCisgICAgMjI2LCAxNjksIDEsIDIwNCwgMjUzLCAyMjYsIDE2OSwgMSwgMjA0LCAyNDEsIDIyNiwgMTY5LCAxLCAyNDEsIDIyMCwgMjI2LCAKKyAgICAxNjksIDEsIDI0MSwgMjEwLCAyMjYsIDE2OSwgMSwgMjEyLCAyMTUsIDIyNiwgMTY5LCAxLCAyNDEsIDIwNCwgMjI2LCAxNjksIAorICAgIDEsIDIxOSwgMjEsIDIyNiwgMTY5LCAxLCAyMDcsIDM2LCAyMjYsIDE2OSwgMSwgMjA2LCAxMjIsIDIyNiwgMTY5LCAxLCAKKyAgICAyNDIsIDU4LCAyMjYsIDE2OSwgMSwgMjQxLCAxMDAsIDIyNiwgMTY5LCAxLCAxODgsIDIyNiwgMTY5LCAxLCAxNzIsIDIyNiwgCisgICAgMTY5LCAxLCAyMTUsIDI0NSwgMjI2LCAxNjksIDEsIDI0OSwgMTM2LCAyMjYsIDE2OSwgMSwgMjQ5LCA0NCwgMjI2LCAxNjksIAorICAgIDEsIDI0OCwgMjAwLCAyMjYsIDE2OSwgMSwgMTc4LCAyMjYsIDE2OSwgMSwgMTgzLCAyMjYsIDE2OSwgMSwgMjEzLCAyNTIsIAorICAgIDIyNiwgMTY5LCAxLCAxOTQsIDIyNiwgMTY5LCAxLCAyMDMsIDkwLCAyMjYsIDE2OSwgMSwgMjEwLCAxMTQsIDIyNiwgMTY5LCAKKyAgICAxLCAyMTIsIDY0LCAyMjYsIDE2OSwgMSwgMTQ0LCAyMjYsIDE2OSwgMiwgMjUxLCAzMywgMjI2LCAxNjksIDIyLCAyLCAyNTIsIAorICAgIDEzOCwgMjI2LCAxNjksIDIyLCAyLCA3MCwgMjI2LCAxNjksIDIyLCAyLCAyMjgsIDE1MSwgMjI2LCAxNjksIDIyLCAyLCA2NiwgCisgICAgMjI2LCAxNjksIDIyLCAyLCAyMDMsIDE4MiwgMjI2LCAxNjksIDIyLCAyLCA3MiwgMjI2LCAxNjksIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjI2LCAxNjksIDIyLCAyLCA3NCwgMjI2LCAxNjksIDIyLCAyLCAyNTAsIDEzOSwgMjI2LCAxNjksIDIsIDIxOCwgCisgICAgMTAwLCAyMjYsIDE2OSwgMiwgMjAyLCAyMDgsIDIyNiwgMTY5LCAxNywgMTk5LCA4MSwgMjI2LCAxNjksIDE3LCAxMDIsIAorICAgIDIyNiwgMTY5LCAxNywgMTA1LCAyMjYsIDE2OSwgMTcsIDE0NywgMjI2LCAxNjksIDE3LCAxNDksIDIyNiwgMTY5LCAxNywgCisgICAgMTY0LCAyMjYsIDE2OSwgMTcsIDE4NywgMjI2LCAxNjksIDE3LCAyMTAsIDEzNSwgMjI2LCAxNjksIDE3LCAxOTIsIDIyNiwgCisgICAgMTY5LCAxNywgMjE5LCAxMTMsIDIzNSwgODIsIDIsIDM4LCAyNTEsIDM0LCA1NiwgMjM1LCA4MiwgMiwgMjQ3LCAxNDksIAorICAgIDIzNSwgODIsIDIsIDI1MSwgMzMsIDIzNSwgODIsIDIsIDIwMiwgMjAzLCAyMzUsIDgyLCAxLCA2MiwgMjM1LCA4MiwgMSwgCisgICAgMjUyLCAxMzgsIDIzNSwgODIsIDEsIDcwLCAyMzUsIDgyLCAxLCAyMjgsIDE1MSwgMjM1LCA4MiwgMSwgNjYsIDIzNSwgODIsIAorICAgIDEsIDIwMywgMTgyLCAyMzUsIDgyLCAxLCAxMDksIDE0NiwgMjM1LCA4MiwgMSwgMTA5LCAxNTYsIDIzNSwgODIsIDEsIDIzOCwgCisgICAgMjU1LCAyMzUsIDgyLCAxLCAyNTEsIDE3NiwgMjM1LCA4MiwgMSwgMjE3LCA2MywgMjM1LCA4MiwgMSwgMjUwLCAxMzksIAorICAgIDIzNSwgODIsIDEsIDE2MSwgMjM1LCA4MiwgMSwgMjI2LCAyMDcsIDIzNSwgODIsIDEsIDIzNiwgODksIDIzNSwgODIsIDEsIAorICAgIDIzNSwgMTk5LCAyMzUsIDgyLCAxLCAyMTksIDI1MywgMjM1LCA4MiwgMSwgMjQ3LCAxOTAsIDIzNSwgODIsIDEsIDI0NywgCisgICAgMzcsIDIzNSwgODIsIDEsIDIyNywgMjQ4LCAyMzUsIDgyLCAxLCAyMjcsIDIxNSwgMjM1LCA4MiwgMSwgMjE4LCA2MCwgMjM1LCAKKyAgICA4MiwgMSwgMjA0LCAyNTMsIDIzNSwgODIsIDEsIDIwNCwgMjQxLCAyMzUsIDgyLCAxLCAyNDEsIDIyMCwgMjM1LCA4MiwgMSwgCisgICAgMjQxLCAyMDQsIDIzNSwgODIsIDEsIDIxOSwgMjEsIDIzNSwgODIsIDEsIDIwNywgMzYsIDIzNSwgODIsIDEsIDIwNiwgMTIyLCAKKyAgICAyMzUsIDgyLCAxLCAyNDIsIDU4LCAyMzUsIDgyLCAxLCAyNDEsIDEwMCwgMjM1LCA4MiwgMSwgMTg4LCAyMzUsIDgyLCAxLCAKKyAgICAxNzIsIDIzNSwgODIsIDEsIDIxNSwgMjQ1LCAyMzUsIDgyLCAxLCAyNDksIDEzNiwgMjM1LCA4MiwgMSwgMjQ4LCAyMDAsIAorICAgIDIzNSwgODIsIDEsIDE3OCwgMjM1LCA4MiwgMSwgMTgzLCAyMzUsIDgyLCAxLCAyMTMsIDI1MiwgMjM1LCA4MiwgMSwgMTk0LCAKKyAgICAyMzUsIDgyLCAxLCAyMjQsIDEzOCwgMjM1LCA4MiwgMSwgMjAzLCA5MCwgMjM1LCA4MiwgMSwgMjEwLCAxMTQsIDIzNSwgODIsIAorICAgIDEsIDIwOCwgMTc5LCAyMzUsIDgyLCAxLCAyMTIsIDY0LCAyMzUsIDgyLCAxLCAxNDQsIDIzNSwgODIsIDIsIDIxOCwgMTAwLCAKKyAgICAyMzUsIDgyLCAyLCAyNTAsIDEyMiwgMjM1LCA4MiwgMjIsIDIsIDI1MiwgMTM4LCAyMzUsIDgyLCAyMiwgMiwgNzAsIDIzNSwgCisgICAgODIsIDIyLCAyLCAyMjgsIDE1MSwgMjM1LCA4MiwgMjIsIDIsIDY2LCAyMzUsIDgyLCAyMiwgMiwgMjAzLCAxODIsIDIzNSwgCisgICAgODIsIDIyLCAyLCAxMDksIDE0NiwgMjM1LCA4MiwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIzNSwgODIsIDIyLCAyLCAyMzgsIAorICAgIDI1NSwgMjM1LCA4MiwgMjIsIDIsIDI1MSwgMTc2LCAyMzUsIDgyLCAyMiwgMiwgMjE3LCA2MywgMjM1LCA4MiwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAyMzUsIDgyLCAyLCAyMDIsIDIwOCwgMjM1LCA4MiwgMjE3LCA4NiwgMjM1LCA4MiwgMjUwLCAxNDAsIDIyNSwgCisgICAgMiwgODEsIDIzNSwgODIsIDIsIDIxNSwgMTExLCAyMzUsIDgyLCAxLCAyMDMsIDU2LCAyNTEsIDMzLCAyMzUsIDgyLCAxLCAKKyAgICAyMDMsIDU2LCA1MywgMjUxLCAzMywgMjM1LCA4MiwgMSwgMTA5LCAyMTIsIDIxNiwgMjM1LCA4MiwgMSwgMTA5LCAyMjQsIAorICAgIDEzOSwgMjM1LCA4MiwgMjIsIDIsIDEwOSwgMTU2LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMzgsIDIzNSwgCisgICAgODIsIDE3LCAxOTksIDgxLCAzOCwgMjM1LCA4MiwgMTcsIDEwMiwgMzgsIDIzNSwgODIsIDE3LCAxMDUsIDM4LCAyMzUsIDgyLCAKKyAgICAxNywgMTQ3LCAzOCwgMjM1LCA4MiwgMTcsIDE0OSwgMzgsIDIzNSwgODIsIDE3LCAxNjQsIDM4LCAyMzUsIDgyLCAxNywgCisgICAgMTg3LCAzOCwgMjM1LCA4MiwgMSwgNjIsIDM4LCAyMzUsIDgyLCAxLCAxNjEsIDM4LCAyMzUsIDgyLCAxLCAxODgsIDM4LCAKKyAgICAyMzUsIDgyLCAxLCAyMDIsIDIzNCwgMzgsIDIzNSwgODIsIDEsIDE3MiwgMTk1LCAxLCA2MiwgMTk1LCAxLCAyNTIsIDEzOCwgCisgICAgMTk1LCAxLCA3MCwgMTk1LCAxLCAyMjgsIDE1MSwgMTk1LCAxLCA2NiwgMTk1LCAxLCAyMDMsIDE4MiwgMTk1LCAxLCAxMDksIAorICAgIDE0NiwgMTk1LCAxLCAxMDksIDIxMiwgMjE2LCAxOTUsIDEsIDEwOSwgMTU2LCAxOTUsIDEsIDEwOSwgMjI0LCAxMzksIDE5NSwgCisgICAgMSwgNzIsIDE5NSwgMSwgMjUxLCAxNzYsIDE5NSwgMSwgNzQsIDE5NSwgMSwgMjUwLCAxMzksIDE5NSwgMSwgMTYxLCAxOTUsIAorICAgIDEsIDIyNiwgMjA3LCAxOTUsIDEsIDIzNiwgODksIDE5NSwgMSwgMjM1LCAxOTksIDE5NSwgMSwgMjE5LCAyNTMsIDE5NSwgMSwgCisgICAgMjE5LCAyMDIsIDE5NSwgMSwgMjQ3LCAxOTAsIDE5NSwgMSwgMjQ3LCAzNywgMTk1LCAxLCAyMjcsIDI0OCwgMTk1LCAxLCAKKyAgICAyMjcsIDIxNSwgMTk1LCAxLCAyMTgsIDYwLCAxOTUsIDEsIDIxOCwgNDMsIDE5NSwgMSwgMjA0LCAyNTMsIDE5NSwgMSwgCisgICAgMjA0LCAyNDEsIDE5NSwgMSwgMjQxLCAyMjAsIDE5NSwgMSwgMjQxLCAyMDQsIDE5NSwgMSwgMjE5LCAyMSwgMTk1LCAxLCAKKyAgICAyMDcsIDM2LCAxOTUsIDEsIDIwNiwgMTIyLCAxOTUsIDEsIDI0MiwgNTgsIDE5NSwgMSwgMjQxLCAxMDAsIDE5NSwgMSwgCisgICAgMTg4LCAxOTUsIDEsIDIxOSwgMTU0LCAxOTUsIDEsIDE3MiwgMTk1LCAxLCAyMTUsIDI0NSwgMTk1LCAxLCAyNDksIDEzNiwgCisgICAgMTk1LCAxLCAyNDgsIDIwMCwgMTk1LCAxLCAxNzgsIDE5NSwgMSwgMjIxLCAyMTQsIDE5NSwgMSwgMTgzLCAxOTUsIDEsIAorICAgIDIxMywgMjUyLCAxOTUsIDEsIDIxMywgOTMsIDE5NSwgMSwgMTk0LCAxOTUsIDEsIDIyNCwgMjIzLCAxOTUsIDEsIDIwMSwgCisgICAgMTE0LCAxOTUsIDEsIDIxMCwgMTE0LCAxOTUsIDEsIDIwOCwgMTc5LCAxOTUsIDEsIDIxMiwgNjQsIDE5NSwgMSwgMTQ0LCAKKyAgICAxOTUsIDIyLCAyLCAyNTIsIDEzOCwgMTk1LCAyMiwgMiwgNzAsIDE5NSwgMjIsIDIsIDIyOCwgMTUxLCAxOTUsIDIyLCAyLCAKKyAgICA2NiwgMTk1LCAyMiwgMiwgMjAzLCAxODIsIDE5NSwgMjIsIDIsIDEwOSwgMTQ2LCAxOTUsIDIyLCAyLCAxMDksIDIxMiwgCisgICAgMjE2LCAxOTUsIDIyLCAyLCAxMDksIDE1NiwgMTk1LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMTk1LCAyMiwgMiwgNzIsIAorICAgIDE5NSwgMjIsIDIsIDI1MSwgMTc2LCAxOTUsIDIyLCAyLCA3NCwgMTk1LCAyMiwgMiwgMjUwLCAxMzksIDE5NSwgMiwgMjAyLCAKKyAgICAyMDgsIDE5NSwgMiwgMjQ3LCAxNDksIDE5NSwgMiwgMjUxLCAzMywgMTk1LCAyLCAyMDIsIDIwMywgMTk1LCAyLCAyMTgsIAorICAgIDEwMCwgMTk1LCAyLCAyNTAsIDEyMiwgMTk1LCAyLCA0NywgMjUxLCAzMywgMTk1LCAyMTcsIDg2LCAxOTUsIDIwOSwgMTc2LCAKKyAgICAxOTUsIDI0MiwgMTAsIDE5NSwgNTMsIDI0MiwgMTAsIDE5NSwgMjQ2LCA3MCwgMTk1LCAyMzYsIDUzLCAyMzcsIDkzLCAxOTUsIAorICAgIDI1MiwgMywgNTQsIDE5NSwgMTcsIDE5OSwgODEsIDE5NSwgMTcsIDEwMiwgMTk1LCAxNywgMTA1LCAxOTUsIDE3LCAxNDcsIAorICAgIDE5NSwgMTcsIDE0OSwgMTk1LCAxNywgMTY0LCAxOTUsIDE3LCAxODcsIDE5NSwgMTcsIDIxMCwgMTM1LCAxOTUsIDE3LCAKKyAgICAxOTIsIDE5NSwgMTcsIDIxOSwgMTEzLCAxOTUsIDIxNSwgMTMzLCA4MSwgMTk1LCAyMjgsIDc1LCA1NCwgMjA1LCAyMTcsIAorICAgIDI1MSwgNjIsIDIwNSwgMjE3LCAxLCA2MiwgMjA1LCAyMTcsIDEsIDI1MiwgMTM4LCAyMDUsIDIxNywgMSwgNzAsIDIwNSwgCisgICAgMjE3LCAxLCAyMjgsIDE1MSwgMjA1LCAyMTcsIDEsIDY2LCAyMDUsIDIxNywgMSwgMjAzLCAxODIsIDIwNSwgMjE3LCAxLCAKKyAgICAxMDksIDE0NiwgMjA1LCAyMTcsIDEsIDEwOSwgMjEyLCAyMTYsIDIwNSwgMjE3LCAxLCAxMDksIDE1NiwgMjA1LCAyMTcsIDEsIAorICAgIDEwOSwgMjI0LCAxMzksIDIwNSwgMjE3LCAxLCA3MiwgMjA1LCAyMTcsIDEsIDI1MSwgMTc2LCAyMDUsIDIxNywgMSwgNzQsIAorICAgIDIwNSwgMjE3LCAxLCAyNTAsIDEzOSwgMjA1LCAyMTcsIDEsIDE2MSwgMjA1LCAyMTcsIDEsIDIyNiwgMjA3LCAyMDUsIDIxNywgCisgICAgMSwgMjM2LCA4OSwgMjA1LCAyMTcsIDEsIDIzNSwgMTk5LCAyMDUsIDIxNywgMSwgMjE5LCAyNTMsIDIwNSwgMjE3LCAxLCAKKyAgICAyNDcsIDE5MCwgMjA1LCAyMTcsIDEsIDI0NywgMzcsIDIwNSwgMjE3LCAxLCAyMjcsIDI0OCwgMjA1LCAyMTcsIDEsIDIyNywgCisgICAgMjE1LCAyMDUsIDIxNywgMSwgMjE4LCA2MCwgMjA1LCAyMTcsIDEsIDIwNCwgMjUzLCAyMDUsIDIxNywgMSwgMjA0LCAyNDEsIAorICAgIDIwNSwgMjE3LCAxLCAyNDEsIDIyMCwgMjA1LCAyMTcsIDEsIDI0MSwgMjA0LCAyMDUsIDIxNywgMSwgMjE5LCAyMSwgMjA1LCAKKyAgICAyMTcsIDEsIDIwNywgMzYsIDIwNSwgMjE3LCAxLCAyMDYsIDEyMiwgMjA1LCAyMTcsIDEsIDI0MiwgNTgsIDIwNSwgMjE3LCAKKyAgICAxLCAyNDEsIDEwMCwgMjA1LCAyMTcsIDEsIDE4OCwgMjA1LCAyMTcsIDEsIDE3MiwgMjA1LCAyMTcsIDEsIDIxNSwgMjQ1LCAKKyAgICAyMDUsIDIxNywgMSwgMjQ5LCAxMzYsIDIwNSwgMjE3LCAxLCAyNDgsIDIwMCwgMjA1LCAyMTcsIDEsIDE3OCwgMjA1LCAyMTcsIAorICAgIDEsIDE4MywgMjA1LCAyMTcsIDEsIDIxMywgMjUyLCAyMDUsIDIxNywgMSwgMTk0LCAyMDUsIDIxNywgMSwgMjAzLCA5MCwgCisgICAgMjA1LCAyMTcsIDEsIDIxMCwgMTE0LCAyMDUsIDIxNywgMSwgMjA4LCAxNzksIDIwNSwgMjE3LCAxLCAyMTIsIDY0LCAyMDUsIAorICAgIDIxNywgMSwgMTQ0LCAyMDUsIDIxNywgMjIsIDIsIDI1MiwgMTM4LCAyMDUsIDIxNywgMjIsIDIsIDcwLCAyMDUsIDIxNywgCisgICAgMjIsIDIsIDIyOCwgMTUxLCAyMDUsIDIxNywgMjIsIDIsIDY2LCAyMDUsIDIxNywgMjIsIDIsIDIwMywgMTgyLCAyMDUsIAorICAgIDIxNywgMjIsIDIsIDEwOSwgMTQ2LCAyMDUsIDIxNywgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDIwNSwgMjE3LCAyMiwgMiwgCisgICAgMTA5LCAxNTYsIDIwNSwgMjE3LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMjA1LCAyMTcsIDIyLCAyLCA3MiwgMjA1LCAyMTcsIAorICAgIDIyLCAyLCAyMDksIDI1MCwgNzIsIDIwNSwgMjE3LCAyMiwgMiwgMjUxLCAxNzYsIDIwNSwgMjE3LCAyMiwgMiwgNzQsIDIwNSwgCisgICAgMjE3LCAyMiwgMiwgMjA5LCAyNTAsIDc0LCAyMDUsIDIxNywgMjIsIDIsIDI1MCwgMTM5LCAyMDUsIDIxNywgMiwgMjQ3LCAKKyAgICAxNDksIDIwNSwgMjE3LCAyLCAyNTEsIDMzLCAyMDUsIDIxNywgMiwgMjAyLCAyMDMsIDIwNSwgMjE3LCAyLCAyMDIsIDIwOCwgCisgICAgMjA1LCAyMTcsIDIsIDIxOCwgMTAwLCAyMDUsIDIxNywgMiwgMjUwLCAxMjIsIDIwNSwgMjE3LCAyMzUsIDExLCAyMDUsIAorICAgIDIxNywgMjUyLCAzLCA1NCwgMjA1LCAyMTcsIDIxNywgODYsIDIwNSwgMjE3LCAxNywgMTk5LCA4MSwgMjA1LCAyMTcsIDE3LCAKKyAgICAxMDIsIDIwNSwgMjE3LCAxNywgMTA1LCAyMDUsIDIxNywgMTcsIDE0NywgMjA1LCAyMTcsIDE3LCAxNDksIDIwNSwgMjE3LCAKKyAgICAxNywgMTY0LCAyMDUsIDIxNywgMTcsIDE4NywgMjA1LCAyMTcsIDE3LCAyMTAsIDEzNSwgMjA1LCAyMTcsIDE3LCAxOTIsIAorICAgIDIwNSwgMjE3LCAxNywgMjE5LCAxMTMsIDE5NiwgMSwgNjIsIDE5NiwgMSwgMjUyLCAxMzgsIDE5NiwgMSwgNzAsIDE5NiwgMSwgCisgICAgMjI4LCAxNTEsIDE5NiwgMSwgNjYsIDE5NiwgMSwgMjAzLCAxODIsIDE5NiwgMSwgMTA5LCAxNDYsIDE5NiwgMSwgMTA5LCAKKyAgICAyMTIsIDIxNiwgMTk2LCAxLCAxMDksIDE1NiwgMTk2LCAxLCAxMDksIDIyNCwgMTM5LCAxOTYsIDEsIDcyLCAxOTYsIDEsIAorICAgIDI1MSwgMTc2LCAxOTYsIDEsIDc0LCAxOTYsIDEsIDI1MCwgMTM5LCAxOTYsIDEsIDE2MSwgMTk2LCAxLCAyMjYsIDIwNywgCisgICAgMTk2LCAxLCAyMzYsIDg5LCAxOTYsIDEsIDIzNSwgMTk5LCAxOTYsIDEsIDIxOSwgMjUzLCAxOTYsIDEsIDI0NywgMTkwLCAKKyAgICAxOTYsIDEsIDI0NywgMzcsIDE5NiwgMSwgMjI3LCAyNDgsIDE5NiwgMSwgMjI3LCAyMTUsIDE5NiwgMSwgMjE4LCA2MCwgCisgICAgMTk2LCAxLCAyMDQsIDI1MywgMTk2LCAxLCAyMDQsIDI0MSwgMTk2LCAxLCAyNDEsIDIyMCwgMTk2LCAxLCAyNDEsIDIwNCwgCisgICAgMTk2LCAxLCAyMTksIDIxLCAxOTYsIDEsIDIwNywgMzYsIDE5NiwgMSwgMjA2LCAxMjIsIDE5NiwgMSwgMjQyLCA1OCwgMTk2LCAKKyAgICAxLCAyNDEsIDEwMCwgMTk2LCAxLCAxODgsIDE5NiwgMSwgMTcyLCAxOTYsIDEsIDIxNSwgMjQ1LCAxOTYsIDEsIDI0OSwgCisgICAgMTM2LCAxOTYsIDEsIDI0OCwgMjAwLCAxOTYsIDEsIDE3OCwgMTk2LCAxLCAxODMsIDE5NiwgMSwgMjEzLCAyNTIsIDE5NiwgCisgICAgMSwgMTk0LCAxOTYsIDEsIDIwMywgOTAsIDE5NiwgMSwgMjEwLCAxMTQsIDE5NiwgMSwgMjA4LCAxNzksIDE5NiwgMSwgMjEyLCAKKyAgICA2NCwgMTk2LCAxLCAxNDQsIDE5NiwgMjIsIDIsIDI1MiwgMTM4LCAxOTYsIDIyLCAyLCA3MCwgMTk2LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDE5NiwgMjIsIDIsIDY2LCAxOTYsIDIyLCAyLCAyMDMsIDE4MiwgMTk2LCAyMiwgMiwgMTA5LCAxNDYsIDE5NiwgMjIsIAorICAgIDIsIDEwOSwgMjEyLCAyMTYsIDE5NiwgMjIsIDIsIDcyLCAxOTYsIDIyLCAyLCAyNTEsIDE3NiwgMTk2LCAyMiwgMiwgNzQsIAorICAgIDE5NiwgMjIsIDIsIDI1MCwgMTM5LCAxOTYsIDIsIDI0NywgMTQ5LCAxOTYsIDIsIDI1MSwgMzMsIDE5NiwgMiwgMjAyLCAKKyAgICAyMDMsIDE5NiwgMiwgMjAyLCAyMDgsIDE5NiwgMiwgMjE4LCAxMDAsIDE5NiwgMiwgMjA5LCAxNzcsIDE5NiwgMjQyLCAxMCwgCisgICAgMTk2LCA1MywgMjQyLCAxMCwgMTk2LCAyMTAsIDE1NSwgMjQwLCAxODIsIDE5NiwgMjEwLCAxNTUsIDE0OCwgMTk2LCAyMTMsIAorICAgIDEzMCwgMjIyLCAxNDksIDE5NiwgMjEzLCAxMzAsIDIyMiwgMTQ4LCAxOTYsIDIxMywgMTMwLCAyMjIsIDE0NywgMTk2LCAKKyAgICAyMzgsIDE3MSwgNzYsIDIwNiwgMTI3LCA4MSwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMDUsIDkzLCAyNiwgMjA0LCA5OSwgCisgICAgMjE3LCAyMCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMDUsIDkzLCAyNiwgMjM5LCAxODAsIDI0MiwgMjQyLCAxOTYsIAorICAgIDIxMSwgMTkzLCAxMzQsIDMsIDIxMywgMTk1LCAyNiwgMjM5LCAxODAsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIAorICAgIDMsIDIxMywgMTk1LCAyNiwgMjM5LCAxODAsIDUzLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyMTMsIDE5NSwgCisgICAgMjYsIDIzOSwgMTgwLCAyMDUsIDgzLCAyNDIsIDI0MiwgMTk2LCAyMTEsIDE5MywgMTM0LCA1MywgMjEzLCAyNiwgMTk2LCAKKyAgICAyMTEsIDE5MywgMTM0LCA1MywgMjEzLCAyNywgMywgMjEzLCAxOTQsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgNTMsIDI0MiwgCisgICAgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgODMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIAorICAgIDIxNCwgOTAsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIxMCwgMTUyLCAyNDIsIDI0MiwgMTk2LCAyMTEsIAorICAgIDE5MywgMTM0LCAzLCAyNDYsIDE1MywgMjYsIDIxMywgMTk0LCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgCisgICAgMTIwLCAyMzgsIDE3MywgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCAyNDYsIDE1MywgMjYsIDIzNiwgMjI5LCAyMzgsIDE3MywgCisgICAgMTk2LCAxLCAyMDYsIDQ2LCAyNTEsIDEwOSwgNzAsIDE5NiwgMSwgMjA0LCAxNDMsIDI1MSwgMTA5LCA3MCwgMTk2LCAxLCAKKyAgICAyMDQsIDE0MywgMjUxLCAxMDksIDIyOCwgMTUxLCAxOTYsIDEsIDI1MSwgMTA5LCA2NiwgMTk2LCAyMiwgMiwgMjUxLCAxMDksIAorICAgIDY2LCAxOTYsIDIyLCAyLCAyNTEsIDEwOSwgMjAzLCAxODIsIDIyMSwgMTI3LCAxLCA2MiwgMjIxLCAxMjcsIDEsIDI1MiwgCisgICAgMTM4LCAyMjEsIDEyNywgMSwgNzAsIDIyMSwgMTI3LCAxLCAyMjgsIDE1MSwgMjIxLCAxMjcsIDEsIDY2LCAyMjEsIDEyNywgCisgICAgMSwgMjAzLCAxODIsIDIyMSwgMTI3LCAxLCAxMDksIDE0NiwgMjIxLCAxMjcsIDEsIDEwOSwgMjEyLCAyMTYsIDIyMSwgMTI3LCAKKyAgICAxLCAxMDksIDE1NiwgMjIxLCAxMjcsIDEsIDEwOSwgMjI0LCAxMzksIDIyMSwgMTI3LCAxLCA3MiwgMjIxLCAxMjcsIDEsIAorICAgIDI1MSwgMTc2LCAyMjEsIDEyNywgMSwgNzQsIDIyMSwgMTI3LCAxLCAyNTAsIDEzOSwgMjIxLCAxMjcsIDEsIDE2MSwgMjIxLCAKKyAgICAxMjcsIDEsIDIyNiwgMjA3LCAyMjEsIDEyNywgMSwgMjM2LCA4OSwgMjIxLCAxMjcsIDEsIDIzNSwgMTk5LCAyMjEsIDEyNywgCisgICAgMSwgMjE5LCAyNTMsIDIyMSwgMTI3LCAxLCAyNDcsIDE5MCwgMjIxLCAxMjcsIDEsIDI0NywgMzcsIDIyMSwgMTI3LCAxLCAKKyAgICAyMjcsIDI0OCwgMjIxLCAxMjcsIDEsIDIyNywgMjE1LCAyMjEsIDEyNywgMSwgMjE4LCA2MCwgMjIxLCAxMjcsIDEsIDIwNCwgCisgICAgMjUzLCAyMjEsIDEyNywgMSwgMjA0LCAyNDEsIDIyMSwgMTI3LCAxLCAyNDEsIDIyMCwgMjIxLCAxMjcsIDEsIDI0MSwgMjA0LCAKKyAgICAyMjEsIDEyNywgMSwgMjE5LCAyMSwgMjIxLCAxMjcsIDEsIDIwNywgMzYsIDIyMSwgMTI3LCAxLCAyMDYsIDEyMiwgMjIxLCAKKyAgICAxMjcsIDEsIDI0MiwgNTgsIDIyMSwgMTI3LCAxLCAyNDEsIDEwMCwgMjIxLCAxMjcsIDEsIDE4OCwgMjIxLCAxMjcsIDEsIAorICAgIDE3MiwgMjIxLCAxMjcsIDEsIDIxNSwgMjQ1LCAyMjEsIDEyNywgMSwgMjQ5LCAxMzYsIDIyMSwgMTI3LCAxLCAyNDgsIDIwMCwgCisgICAgMjIxLCAxMjcsIDEsIDE3OCwgMjIxLCAxMjcsIDEsIDE4MywgMjIxLCAxMjcsIDEsIDIxMywgMjUyLCAyMjEsIDEyNywgMSwgCisgICAgMTk0LCAyMjEsIDEyNywgMSwgMjAzLCA5MCwgMjIxLCAxMjcsIDEsIDIxMCwgMTE0LCAyMjEsIDEyNywgMSwgMjA4LCAxNzksIAorICAgIDIyMSwgMTI3LCAxLCAyMTIsIDY0LCAyMjEsIDEyNywgMSwgMTQ0LCAyMjEsIDEyNywgMSwgMjI0LCAxMzgsIDIyMSwgMTI3LCAKKyAgICAyMiwgMiwgMjUyLCAxMzgsIDIyMSwgMTI3LCAyMiwgMiwgNzAsIDIyMSwgMTI3LCAyMiwgMiwgMjI4LCAxNTEsIDIyMSwgCisgICAgMTI3LCAyMiwgMiwgNjYsIDIyMSwgMTI3LCAyMiwgMiwgMjAzLCAxODIsIDIyMSwgMTI3LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDIyMSwgMTI3LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDE1NiwgMjIxLCAxMjcsIDIyLCAKKyAgICAyLCAxMDksIDIyNCwgMTM5LCAyMjEsIDEyNywgMjIsIDIsIDcyLCAyMjEsIDEyNywgMjIsIDIsIDI1MSwgMTc2LCAyMjEsIAorICAgIDEyNywgMjIsIDIsIDc0LCAyMjEsIDEyNywgMjIsIDIsIDI1MCwgMTM5LCAyMjEsIDEyNywgMiwgMjUxLCAzMywgMjIxLCAKKyAgICAxMjcsIDIsIDIwMiwgMjAzLCAyMjEsIDEyNywgMiwgMjAyLCAyMDgsIDIyMSwgMTI3LCAyLCAyNTAsIDIzMSwgMjIxLCAxMjcsIAorICAgIDI0MiwgMTAsIDIyMSwgMTI3LCA1MywgMjQyLCAxMCwgMjIxLCAxMjcsIDI1MiwgMywgNTQsIDIyMSwgMTI3LCAyLCAyMzMsIAorICAgIDcwLCAyMjEsIDEyNywgMTcsIDE5OSwgODEsIDIyMSwgMTI3LCAxNywgMTAyLCAyMjEsIDEyNywgMTcsIDEwNSwgMjIxLCAKKyAgICAxMjcsIDE3LCAxNDcsIDIyMSwgMTI3LCAxNywgMTQ5LCAyMjEsIDEyNywgMTcsIDE2NCwgMjIxLCAxMjcsIDE3LCAxODcsIAorICAgIDIyMSwgMTI3LCAxNywgMjEwLCAxMzUsIDIyMSwgMTI3LCAxNywgMTkyLCAyMjEsIDEyNywgMTcsIDIxOSwgMTEzLCA5MiwgCisgICAgMjQ4LCAxNjEsIDMsIDIxNywgMjEsIDkyLCAyMTIsIDIyOCwgMjQ4LCAxNjAsIDkyLCA1MywgMjQ4LCAxNjEsIDMsIDIxNywgCisgICAgMjEsIDkyLCAyMDUsIDgzLCAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgOTIsIAorICAgIDIxMiwgMjI4LCAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDIxMiwgMjI4LCAyNDgsIDE2MSwgMywgNTMsIDIxNywgMjEsIAorICAgIDkyLCAyMjgsIDUwLCAyNDgsIDE2MCwgOTIsIDIyOCwgNTAsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgOTIsIDIwNywgCisgICAgMTcyLCAyNDgsIDE2MCwgOTIsIDIwNywgMTcyLCAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDIwNywgMTcyLCAyNDgsIAorICAgIDE2MSwgMywgNTMsIDIxNywgMjEsIDkyLCAyMDQsIDE4NSwgMjA3LCAxNzIsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgCisgICAgMjA2LCAyNTMsIDEsIDYyLCAyMDYsIDI1MywgMSwgMjUyLCAxMzgsIDIwNiwgMjUzLCAxLCA3MCwgMjA2LCAyNTMsIDEsIAorICAgIDIyOCwgMTUxLCAyMDYsIDI1MywgMSwgNjYsIDIwNiwgMjUzLCAxLCAyMDMsIDE4MiwgMjA2LCAyNTMsIDEsIDcyLCAyMDYsIAorICAgIDI1MywgMSwgMjUxLCAxNzYsIDIwNiwgMjUzLCAxLCA3NCwgMjA2LCAyNTMsIDEsIDI1MCwgMTM5LCAyMDYsIDI1MywgMSwgCisgICAgMTYxLCAyMDYsIDI1MywgMSwgMjI2LCAyMDcsIDIwNiwgMjUzLCAxLCAyMzYsIDg5LCAyMDYsIDI1MywgMSwgMjM1LCAxOTksIAorICAgIDIwNiwgMjUzLCAxLCAyMTksIDI1MywgMjA2LCAyNTMsIDEsIDI0NywgMTkwLCAyMDYsIDI1MywgMSwgMjQ3LCAzNywgMjA2LCAKKyAgICAyNTMsIDEsIDIyNywgMjQ4LCAyMDYsIDI1MywgMSwgMjI3LCAyMTUsIDIwNiwgMjUzLCAxLCAyMTgsIDYwLCAyMDYsIDI1MywgCisgICAgMSwgMjA0LCAyNTMsIDIwNiwgMjUzLCAxLCAyMDQsIDI0MSwgMjA2LCAyNTMsIDEsIDI0MSwgMjIwLCAyMDYsIDI1MywgMSwgCisgICAgMjQxLCAyMDQsIDIwNiwgMjUzLCAxLCAyMTksIDIxLCAyMDYsIDI1MywgMSwgMjA3LCAzNiwgMjA2LCAyNTMsIDEsIDIwNiwgCisgICAgMTIyLCAyMDYsIDI1MywgMSwgMjQyLCA1OCwgMjA2LCAyNTMsIDEsIDI0MSwgMTAwLCAyMDYsIDI1MywgMSwgMTg4LCAyMDYsIAorICAgIDI1MywgMSwgMTcyLCAyMDYsIDI1MywgMSwgMjE1LCAyNDUsIDIwNiwgMjUzLCAxLCAyNDksIDEzNiwgMjA2LCAyNTMsIDEsIAorICAgIDI0OCwgMjAwLCAyMDYsIDI1MywgMSwgMTc4LCAyMDYsIDI1MywgMSwgMTgzLCAyMDYsIDI1MywgMSwgMjEzLCAyNTIsIDIwNiwgCisgICAgMjUzLCAxLCAxOTQsIDIwNiwgMjUzLCAxLCAyMDMsIDkwLCAyMDYsIDI1MywgMSwgMjEwLCAxMTQsIDIwNiwgMjUzLCAxLCAKKyAgICAyMTIsIDY0LCAyMDYsIDI1MywgMSwgMTQ0LCAyMDYsIDI1MywgMSwgMjEyLCAyMTUsIDIwNiwgMjUzLCAyLCAyNTEsIDMzLCAKKyAgICAyMDYsIDI1MywgMiwgMjAyLCAyMDMsIDIwNiwgMjUzLCAyMiwgMiwgMjUyLCAxMzgsIDIwNiwgMjUzLCAyMiwgMiwgNzAsIAorICAgIDIwNiwgMjUzLCAyMiwgMiwgMjI4LCAxNTEsIDIwNiwgMjUzLCAyMiwgMiwgNjYsIDIwNiwgMjUzLCAyMiwgMiwgMjAzLCAKKyAgICAxODIsIDIwNiwgMjUzLCAyMiwgMiwgNzIsIDIwNiwgMjUzLCAyMiwgMiwgMjUxLCAxNzYsIDIwNiwgMjUzLCAyMiwgMiwgNzQsIAorICAgIDIwNiwgMjUzLCAyMiwgMiwgMjUwLCAxMzksIDIwNiwgMjUzLCAyLCAyMDIsIDIwOCwgMjA2LCAyNTMsIDIsIDIxOCwgMTAwLCAKKyAgICAyMDYsIDI1MywgMTcsIDE5OSwgODEsIDIwNiwgMjUzLCAxNywgMTAyLCAyMDYsIDI1MywgMTcsIDEwNSwgMjA2LCAyNTMsIAorICAgIDE3LCAxNDcsIDIwNiwgMjUzLCAxNywgMTQ5LCAyMDYsIDI1MywgMTcsIDE2NCwgMjA2LCAyNTMsIDE3LCAxODcsIDIwNiwgCisgICAgMjUzLCAxNywgMjEwLCAxMzUsIDIwNiwgMjUzLCAxNywgMTkyLCAyMDYsIDI1MywgMTcsIDIxOSwgMTEzLCAyNTEsIDE4MCwgCisgICAgMSwgMTYxLCAyNTEsIDE4MCwgMSwgMjI2LCAyMDcsIDI1MSwgMTgwLCAxLCAyMTksIDI1MywgMjUxLCAxODAsIDEsIDE4OCwgCisgICAgMjUxLCAxODAsIDEsIDIwNywgMzYsIDI1MSwgMTgwLCAxLCAyNTEsIDEwOSwgMjA3LCAzNiwgMjUxLCAxODAsIDEsIDE3MiwgCisgICAgMjUxLCAxODAsIDEsIDIxNSwgMjQ1LCAyNTEsIDE4MCwgMSwgMjQ5LCAxMzYsIDI1MSwgMTgwLCAxLCAxNzgsIDI1MSwgMTgwLCAKKyAgICAxLCAyMjcsIDI0OCwgMjUxLCAxODAsIDEsIDI0NywgMzcsIDI1MSwgMTgwLCAxLCAyMDYsIDEyMiwgMjUxLCAxODAsIDEsIAorICAgIDIxMywgMjUyLCAyNTEsIDE4MCwgMSwgMTk0LCAyNTEsIDE4MCwgMSwgMjEyLCA2NCwgMjUxLCAxODAsIDEsIDIxOCwgNjAsIAorICAgIDI1MSwgMTgwLCAxLCAxNDQsIDI1MSwgMTgwLCAxLCA2MiwgMjUxLCAxODAsIDEsIDI0MiwgNTgsIDI1MSwgMTgwLCAxLCAKKyAgICAyNDEsIDEwMCwgMjUxLCAxODAsIDEsIDIzNiwgODksIDI1MSwgMTgwLCAxLCAyNTEsIDEwOSwgMjM2LCA4OSwgMjUxLCAxODAsIAorICAgIDEsIDIzNSwgMTk5LCAyNTEsIDE4MCwgMSwgMjQ4LCAyMDAsIDI1MSwgMTgwLCAxLCAyMjcsIDIxNSwgMjUxLCAxODAsIDExMSwgCisgICAgMiwgMTc5LCAxOTQsIDI1MSwgMTgwLCAxMTEsIDIsIDE3OSwgMjEzLCAyNTIsIDI1MSwgMTgwLCAxMTEsIDIsIDE3OSwgMjI0LCAKKyAgICAxOTcsIDIxMywgMjUyLCAyNTEsIDE4MCwgMjIsIDIsIDYyLCAyNTEsIDE4MCwgMjIsIDIsIDI1MiwgMTM4LCAyNTEsIDE4MCwgCisgICAgMjIsIDIsIDcwLCAyNTEsIDE4MCwgMjIsIDIsIDIyOCwgMTUxLCAyNTEsIDE4MCwgMjIsIDIsIDY2LCAyNTEsIDE4MCwgMjIsIAorICAgIDIsIDIwMywgMTgyLCAyNTEsIDE4MCwgMjIsIDIsIDcyLCAyNTEsIDE4MCwgMjIsIDIsIDI1MCwgMTE3LCAyNTEsIDE4MCwgCisgICAgMjIsIDIsIDc0LCAyNTEsIDE4MCwgMjIsIDIsIDI1MSwgMTc2LCAyNTEsIDE4MCwgMjIsIDIsIDI1MSwgMTAxLCAyNTEsIAorICAgIDE4MCwgMiwgMjI2LCAxNDksIDI1MSwgMTgwLCAxNywgMTk5LCA4MSwgMjUxLCAxODAsIDE3LCAxMDIsIDI1MSwgMTgwLCAxNywgCisgICAgMTA1LCAyNTEsIDE4MCwgMTcsIDE0NywgMjUxLCAxODAsIDE3LCAxNDksIDI1MSwgMTgwLCAxNywgMTY0LCAyNTEsIDE4MCwgCisgICAgMTcsIDE4NywgMjUxLCAxODAsIDE3LCAyMTAsIDEzNSwgMjUxLCAxODAsIDE3LCAxOTIsIDI1MSwgMTgwLCAxNywgMjE5LCAKKyAgICAxMTMsIDI1MSwgMTgwLCA0MSwgMjA2LCAxNjYsIDI1MSwgMTgwLCA0MSwgMjA0LCAxNTksIDI1MSwgMTgwLCAyLCA0LCAyMTEsIAorICAgIDE5MiwgMjUxLCAxODAsIDIsIDIxMSwgMTkyLCAyNTEsIDE4MCwgMiwgMjEyLCAxNjYsIDI1MSwgMTgwLCAxNiwgMjAyLCAKKyAgICAyMzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMTksIDI1MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjAxLCAzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDE5OSwgMjExLCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgNiwgMSwgMTgzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMTk5LCAyNDUsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCAyMjgsIDE1MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwMywgMTgyLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgNzIsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCA3NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDI1MSwgCisgICAgNzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzYsIDg5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjI2LCA4OCwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzOCwgMTQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMTk5LCAxOTUsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDQsIDM4LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM4LCAxNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMTcsIDEyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwNCwgMjQ4LCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgNiwgMSwgMjE4LCA4NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDI0MiwgNTgsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCAyNTAsIDE1NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDI1MSwgMTAxLCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNiwgMSwgMjQ4LCAzNiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxNCwgMjI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgCisgICAgNiwgMSwgMjM0LCA0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzMywgMTk1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgCisgICAgMSwgMjMzLCAxMjIsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzQsIDE2NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIAorICAgIDIwOCwgMTMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA5LCAxNjEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAKKyAgICAyMDIsIDE5NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIxOSwgMjUyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgNjIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDEsIDMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMTk5LCAyMTEsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA0LCAxLCAxODMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAxOTksIDI0NSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDIyOCwgMTUxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjAzLCAxODIsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCA3MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDc0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjUxLCAKKyAgICA3NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzNiwgODksIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMjYsIDg4LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM4LCAxNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAxOTksIDE5NSwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwNCwgMzgsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzgsIDE2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIxNywgMTI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA0LCAyNDgsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA0LCAxLCAyMTgsIDg2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjQyLCA1OCwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDI1MCwgMTU1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjUxLCAxMDEsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0LCAxLCAyNDgsIDM2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE0LCAyMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAKKyAgICA0LCAxLCAyMzQsIDQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjMzLCAxOTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAKKyAgICAxLCAyMzMsIDEyMiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzNCwgMTY2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgCisgICAgMjA4LCAxMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDksIDE2MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIAorICAgIDIwMiwgMTk0LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE5OSwgODEsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTAyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDEwNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxNDcsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCAxNywgMTQ5LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE2NCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxODcsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMjEwLCAxMzUsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTkyLCAyMDEsIDk0LCAKKyAgICAyNDYsIDE0MiwgMTcsIDIxOSwgMTEzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIwNiwgMTY2LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNDEsIDIwNCwgMTU5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIwNiwgNjcsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgCisgICAgMjM2LCAyMzUsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjM3LCAxMDQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA5LCAKKyAgICA5MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMTAsIDEyOSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMzgsIDIyMiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMTksIDEwOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDIxNywgODYsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTcyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE2MSwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxOTQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTc4LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0MiwgNTgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTk5LCAxMTQsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjAzLCA5MCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAKKyAgICAyMTksIDI1MywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNDQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIAorICAgIDE1MSwgMSwgMjM2LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMjYsIDIwNywgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAxLCAyMTIsIDY0LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0OSwgMTM2LCAyMTYsIAorICAgIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0NywgMTkwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIwNywgCisgICAgMzYsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjA2LCAxMjIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIAorICAgIDE1MSwgMSwgMTg4LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIxNSwgMjQ1LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDEsIDIxMywgMjUyLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIzNywgMTk1LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDI0NywgMzcsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNjIsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNzIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNzAsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNzQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNjYsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjA0LCA0NiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMzIsIAorICAgIDI0MCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjE2LCAyMjYsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMSwgNDcsIDIyNywgMTE4LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMDcsIDgzLCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMjMsIDI0MywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCA0NywgMjIwLCAyMTQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDE1NiwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMjAxLCAxNDcsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIAorICAgIDIxOSwgMjU1LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMDAsIDEyMywgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMTMsIDE5LCAxNTAsIDIyNCwgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEzLCAKKyAgICAxOSwgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAyMzUsIDEyMywgMjA4LCA3NiwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTMsIDE5LCAxNTAsIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAKKyAgICAxNjAsIDIzNCwgMTUxLCAyMTMsIDE5LCAxNTAsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjEyLCAKKyAgICA5LCAyMzUsIDEyMywgMjA4LCA3NywgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDE1MCwgCisgICAgMjI0LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMTUwLCAxNjgsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgCisgICAgMjEyLCA5LCAxNTAsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjIxLCAyMDUsIDIwNSwgMTc0LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc3LCAyMDMsIDcyLCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIyMSwgMjA1LCAxNTAsIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAKKyAgICAyMjEsIDIwNSwgMTUwLCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgMjI0LCAKKyAgICA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAxNTAsIAorICAgIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjQsIDU3LCAxNTAsIDIzNywgODksIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIzNywgODksIDE3NCwgMSwgNjIsIDE3NCwgMSwgCisgICAgMjUyLCAxMzgsIDE3NCwgMSwgNzAsIDE3NCwgMSwgMjI4LCAxNTEsIDE3NCwgMSwgNjYsIDE3NCwgMSwgMjAzLCAxODIsIAorICAgIDE3NCwgMSwgMTA5LCAxNDYsIDE3NCwgMSwgMTA5LCAyMTIsIDIxNiwgMTc0LCAxLCAxMDksIDE1NiwgMTc0LCAxLCA3MiwgCisgICAgMTc0LCAxLCAyNTEsIDE3NiwgMTc0LCAxLCA3NCwgMTc0LCAxLCAyNTAsIDEzOSwgMTc0LCAxLCAxNjEsIDE3NCwgMSwgMjI2LCAKKyAgICAyMDcsIDE3NCwgMSwgMjM2LCA4OSwgMTc0LCAxLCAyMzUsIDE5OSwgMTc0LCAxLCAyMTksIDI1MywgMTc0LCAxLCAyNDcsIAorICAgIDE5MCwgMTc0LCAxLCAyNDcsIDM3LCAxNzQsIDEsIDIyNywgMjQ4LCAxNzQsIDEsIDIyNywgMjE1LCAxNzQsIDEsIDIxOCwgCisgICAgNjAsIDE3NCwgMSwgMjA0LCAyNTMsIDE3NCwgMSwgMjA0LCAyNDEsIDE3NCwgMSwgMjQxLCAyMjAsIDE3NCwgMSwgMjQxLCAKKyAgICAyMDQsIDE3NCwgMSwgMjE5LCAyMSwgMTc0LCAxLCAyMDcsIDM2LCAxNzQsIDEsIDIwNiwgMTIyLCAxNzQsIDEsIDI0MiwgNTgsIAorICAgIDE3NCwgMSwgMjQxLCAxMDAsIDE3NCwgMSwgMTg4LCAxNzQsIDEsIDE3MiwgMTc0LCAxLCAyMTUsIDI0NSwgMTc0LCAxLCAKKyAgICAyNDksIDEzNiwgMTc0LCAxLCAyNDgsIDIwMCwgMTc0LCAxLCAxNzgsIDE3NCwgMSwgMTgzLCAxNzQsIDEsIDIxMywgMjUyLCAKKyAgICAxNzQsIDEsIDE5NCwgMTc0LCAxLCAyMDMsIDkwLCAxNzQsIDEsIDIxMCwgMTE0LCAxNzQsIDEsIDIwOCwgMTc5LCAxNzQsIDEsIAorICAgIDIxMiwgNjQsIDE3NCwgMSwgMTQ0LCAxNzQsIDIyLCAyLCAyNTIsIDEzOCwgMTc0LCAyMiwgMiwgNzAsIDE3NCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAxNzQsIDIyLCAyLCA2NiwgMTc0LCAyMiwgMiwgMjAzLCAxODIsIDE3NCwgMjIsIDIsIDEwOSwgMTQ2LCAKKyAgICAxNzQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxNzQsIDIyLCAyLCAxMDksIDE1NiwgMTc0LCAyMiwgMiwgNzIsIDE3NCwgMjIsIAorICAgIDIsIDI1MSwgMTc2LCAxNzQsIDIyLCAyLCA3NCwgMTc0LCAyMiwgMiwgMjUwLCAxMzksIDE3NCwgMiwgMjQ3LCAxNDksIDE3NCwgCisgICAgMiwgMjUxLCAzMywgMTc0LCAyLCAyMDIsIDIwMywgMTc0LCAyLCAyMDIsIDIwOCwgMTc0LCAyLCAyNTAsIDEyMiwgMTc0LCAKKyAgICAyNDIsIDEwLCAxNzQsIDUzLCAyNDIsIDEwLCAxNzQsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMTc0LCAyMzYsIDUzLCAyMzcsIAorICAgIDkyLCAxNzQsIDIzNiwgNTMsIDIzNywgOTEsIDE3NCwgMTcsIDE5OSwgODEsIDE3NCwgMTcsIDEwMiwgMTc0LCAxNywgMTA1LCAKKyAgICAxNzQsIDE3LCAxNDcsIDE3NCwgMTcsIDE0OSwgMTc0LCAxNywgMTY0LCAxNzQsIDE3LCAxODcsIDE3NCwgMTcsIDIxMCwgCisgICAgMTM1LCAxNzQsIDE3LCAxOTIsIDE3NCwgMTcsIDIxOSwgMTEzLCAxNzQsIDQxLCAxMDIsIDE3NCwgNDEsIDEwNSwgMTc0LCAKKyAgICA0MSwgMTQ3LCAxNzQsIDQxLCAxNDksIDE3NCwgNDEsIDE2NCwgMTc0LCA0MSwgMTg3LCAxNzQsIDQxLCAyMTAsIDEzNSwgCisgICAgMTc0LCA0MSwgMTkyLCAxNzQsIDQxLCAyMTksIDExMywgMTc0LCA0MSwgMjA2LCAxNjYsIDE3NCwgNDEsIDIwNCwgMTU5LCAKKyAgICAxNzQsIDQxLCAyMDYsIDY3LCAxNzQsIDQxLCAyMzYsIDIzNSwgMTc0LCA0MSwgMjM3LCAxMDQsIDE3NCwgNDEsIDIwOSwgOTIsIAorICAgIDE3NCwgNDEsIDIxMCwgMTI5LCAxNzQsIDQxLCAyMzgsIDIyMiwgMTc0LCA0MSwgMjE5LCAxMDgsIDE3NCwgMjMzLCA4MSwgCisgICAgMjAzLCAyNDAsIDgxLCAyMjIsIDE1MSwgMjM0LCAxMzcsIDgxLCAyMjIsIDE1MSwgMTM0LCAyMTAsIDEwNiwgMjIyLCAxNTEsIAorICAgIDEsIDE2MSwgMjIyLCAxNTEsIDEsIDIyNiwgMjA3LCAyMjIsIDE1MSwgMSwgMjM2LCA4OSwgMjIyLCAxNTEsIDEsIDIxOSwgCisgICAgMjUzLCAyMjIsIDE1MSwgMSwgMjQ3LCAxOTAsIDIyMiwgMTUxLCAxLCAyNDcsIDM3LCAyMjIsIDE1MSwgMSwgMjI3LCAyNDgsIAorICAgIDIyMiwgMTUxLCAxLCAyMTgsIDYwLCAyMjIsIDE1MSwgMSwgMjA3LCAzNiwgMjIyLCAxNTEsIDEsIDIwNiwgMTIyLCAyMjIsIAorICAgIDE1MSwgMSwgMjQyLCA1OCwgMjIyLCAxNTEsIDEsIDE4OCwgMjIyLCAxNTEsIDEsIDE3MiwgMjIyLCAxNTEsIDEsIDIxNSwgCisgICAgMjQ1LCAyMjIsIDE1MSwgMSwgMjQ5LCAxMzYsIDIyMiwgMTUxLCAxLCAxNzgsIDIyMiwgMTUxLCAxLCAyMDUsIDMyLCAyMjIsIAorICAgIDE1MSwgMSwgMjA1LCAyMiwgMjIyLCAxNTEsIDEsIDIzOSwgOTMsIDIyMiwgMTUxLCAxLCAyMDEsIDExNCwgMjIyLCAxNTEsIAorICAgIDEsIDE5OSwgNzcsIDIyMiwgMTUxLCAxLCAxOTksIDExNCwgMjIyLCAxNTEsIDEsIDI1NSwgMTQyLCAyMjIsIDE1MSwgMSwgCisgICAgMTgzLCAyMjIsIDE1MSwgMSwgMjEzLCAyNTIsIDIyMiwgMTUxLCAxLCAxOTQsIDIyMiwgMTUxLCAxLCAyMTAsIDExNCwgMjIyLCAKKyAgICAxNTEsIDEsIDIxMiwgNjQsIDIyMiwgMTUxLCAxLCAxNDQsIDIyMiwgMTUxLCAxLCA2MiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDE2MSwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIyNiwgMjA3LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjM2LCA4OSwgMjIyLCAKKyAgICAxNTEsIDIwOCwgMTIsIDEsIDIxOSwgMjUzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjQ3LCAxOTAsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAyNDcsIDM3LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjI3LCAyNDgsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAKKyAgICAyMTgsIDYwLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA3LCAzNiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNiwgMTIyLCAKKyAgICAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjQyLCA1OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE4OCwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDE3MiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxNSwgMjQ1LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjQ5LCAKKyAgICAxMzYsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxNzgsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDUsIDMyLCAyMjIsIDE1MSwgCisgICAgMjA4LCAxMiwgMSwgMjA1LCAyMiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIzOSwgOTMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAKKyAgICAyMDEsIDExNCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE5OSwgNzcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxOTksIDExNCwgCisgICAgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE4MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMywgMjUyLCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMTk0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEwLCAxMTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTIsIAorICAgIDY0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTQ0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgNjIsIDIyMiwgMTUxLCAyMiwgMiwgCisgICAgMjUyLCAxMzgsIDIyMiwgMTUxLCAyMiwgMiwgNzAsIDIyMiwgMTUxLCAyMiwgMiwgNjYsIDIyMiwgMTUxLCAyMiwgMiwgNzIsIAorICAgIDIyMiwgMTUxLCAyMiwgMiwgNzQsIDIyMiwgMTUxLCAyLCAyNTEsIDMzLCAyMjIsIDE1MSwgMiwgMjQ3LCAxNDksIDEwLCAyLCAKKyAgICA2MiwgMTAsIDIsIDM1LCAyNCwgNjIsIDEwLCAyLCAzNSwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMzUsIDI0LCAyMzYsIDU4LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDM1LCAyNCwgMTQ0LCAxMCwgMiwgMzUsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDM1LCAyNCwgCisgICAgMjI1LCAxNTYsIDIzNSwgMjgsIDEwLCAyLCAzNSwgMjQsIDIyMCwgMjUwLCAxMCwgMiwgMzUsIDI0LCAyMTIsIDUwLCAxMCwgCisgICAgMiwgMjU0LCAxNDcsIDEwLCAyLCAyNTIsIDg5LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjUyLCAKKyAgICA5MCwgMjQsIDIzOSwgMTI0LCAyMzUsIDI4LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIzNiwgNzEsIDEwLCAyLCAyNTIsIDkwLCAKKyAgICAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMTQ0LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIyOCwgMTI3LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIyNSwgMTU3LCAKKyAgICAxMCwgMiwgMjUyLCA5MCwgMjQsIDIxMCwgNDksIDEwLCAyLCAyNTIsIDkwLCAyNCwgMTA4LCA5MywgMTA4LCA5MywgNjYsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyMzUsIDI4LCAxMCwgMiwgMjUyLCA2LCAxMCwgMiwgMjUyLCA3LCAyNCwgMjQ5LCA5OCwgMTAsIAorICAgIDIsIDI1MiwgNywgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjUyLCA3LCAyNCwgMjIyLCA3NywgOTMsIDIzOCwgCisgICAgMTc5LCAxMCwgMiwgMjUyLCA3LCAyNCwgMjEwLCAxMTIsIDEwLCAyLCAyNTIsIDcsIDI0LCAyMDcsIDAsIDEwLCAyLCAyNTEsIAorICAgIDIzNSwgMTAsIDIsIDI1MSwgMTU5LCAxMCwgMiwgMjUxLCAxNjAsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDI1MSwgMTYwLCAyNCwgCisgICAgMjEwLCAxMSwgOTMsIDIzNSwgMTM1LCAxMCwgMiwgMjUxLCAxNTEsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDI1MSwgMTUxLCAKKyAgICAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyNDEsIDI5LCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDI1MSwgCisgICAgMTUyLCAyNCwgMTQ0LCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMjcsIDkxLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMjYsIAorICAgIDE2MywgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAKKyAgICAyNTEsIDE0OCwgMTAsIDIsIDI1MSwgMTQwLCAxMCwgMiwgMjUxLCA5NywgMTAsIDIsIDI1MSwgOTgsIDI0LCAyMTAsIDY1LCAKKyAgICAxMCwgMiwgMjUxLCA4NSwgMTAsIDIsIDI1MSwgODYsIDExOSwgMjUxLCA4NSwgMTAsIDIsIDI1MSwgODYsIDEyNiwgMjA1LCAKKyAgICAyMzIsIDEwLCAyLCAyNTEsIDg2LCA5MywgMjIwLCAxNDgsIDIxNywgNDAsIDI1MSwgODYsIDkzLCAyMjAsIDE0NywgMTAsIDIsIAorICAgIDI1MSwgODYsIDkzLCAyMjAsIDE0OCwgMjA4LCAxOTIsIDEwLCAyLCAyNTEsIDUzLCAxMCwgMiwgMjUxLCAyMywgMTAsIDIsIAorICAgIDI1MCwgMjQ2LCAxMCwgMiwgMjUwLCAyNDcsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDI1MCwgMjE4LCAxMCwgMiwgMjUwLCAKKyAgICAxODYsIDEwLCAyLCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTgyLCAxOTksIDMyLCAyMDYsIDE1NSwgMTAsIDIsIDI1MCwgCisgICAgMTgyLCAyMjcsIDk1LCAyMDYsIDE1NSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAyMDQsIDIxMCwgMTE5LCAKKyAgICAyMDQsIDIxMCwgMjA0LCAyMTAsIDExOSwgMjA0LCAyMTAsIDIxNiwgMTM1LCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAKKyAgICAxODIsIDExOSwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMTE5LCAyNTAsIDE4MiwgMjQyLCAKKyAgICAyMjgsIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxNzksIDEwLCAyLCAyNTAsIAorICAgIDE3NSwgMTAsIDIsIDI0OSwgMTM2LCAxMCwgMiwgMjQ5LCAxMTgsIDEwLCAyLCAyNDksIDExMiwgMTAsIDIsIDI0OSwgMTA1LCAKKyAgICAxMCwgMiwgMjQ5LCA5OSwgMTAsIDIsIDI0OSwgMTAwLCAxMTksIDI0OSwgOTksIDEwLCAyLCAyNDksIDk4LCAxMCwgMiwgCisgICAgMTQ4LCAxMCwgMiwgMjQ5LCA3NiwgMTAsIDIsIDI0OCwgMTg4LCAxMCwgMiwgMjQ4LCAxODksIDI0LCA2MiwgMTAsIDIsIAorICAgIDI0OCwgMTg5LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDI0OCwgMTg5LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyNDgsIDM2LCAxMCwgMiwgMjQ4LCAzNywgMTE5LCAyNDgsIDM3LCAyNTIsIDg5LCAxMCwgMiwgMjQ4LCAzNywgMTE5LCAyNDgsIAorICAgIDM3LCAyMDQsIDUsIDEwLCAyLCAyNDgsIDM3LCAyNDIsIDIyOCwgMjQ4LCAzNiwgMTAsIDIsIDI0OCwgMTQsIDEwLCAyLCAKKyAgICAyNDgsIDE1LCAxMTksIDI0OCwgMTQsIDEwLCAyLCAyNDgsIDMsIDEwLCAyLCAyNDgsIDIsIDEwLCAyLCAyNDIsIDU4LCAxMCwgCisgICAgMiwgMjQyLCA0OCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMzUsIDkzLCAyMjIsIDEzNSwgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjUxLCA5NywgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjQ5LCA5OCwgMTAsIDIsIAorICAgIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNiwgODksIAorICAgIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNiwgOTAsIDkzLCAyMjIsIDEzNSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgCisgICAgMTMyLCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNSwgMTQzLCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAxNDQsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDIyOCwgMzUsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyOCwgMzYsIDkzLCAKKyAgICAyMjQsIDQyLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIAorICAgIDI0LCAxOTQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNCwgNDIsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgCisgICAgMjQsIDIyNCwgNDMsIDkzLCAyMjIsIDEzNCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI0LCAyNSwgMTAsIDIsIAorICAgIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjIwLCAzNCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjE2LCAxMzYsIAorICAgIDkzLCAyMTYsIDEzNSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjA5LCAxODIsIDEwLCAyLCAyNDIsIDQ5LCAKKyAgICAyMjYsIDEzMiwgMjQsIDIwNywgMCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjA0LCA0OCwgOTMsIDIzNSwgCisgICAgMTQzLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIDI0MiwgMjAsIDEwLCAyLCAyNDEsIAorICAgIDI1NCwgMTAsIDIsIDI0MSwgMjUzLCAxMCwgMiwgMjQxLCAyNTIsIDEwLCAyLCAyNDEsIDc2LCAxMCwgMiwgMjQxLCA1OCwgCisgICAgMTAsIDIsIDI0MSwgMzEsIDEwLCAyLCAyNDEsIDMyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDI0MSwgMjksIDEwLCAyLCAyNDEsIAorICAgIDE5LCAxMCwgMiwgMjQxLCAyMCwgMjI3LCAzOSwgMTA4LCAyMzUsIDI5LCAyNDAsIDI1NSwgMTAsIDIsIDI0MCwgMjU1LCAxMCwgCisgICAgMiwgMjM5LCAxMzcsIDEwLCAyLCAyMzksIDEzOCwgMTE5LCAyMzksIDEzNywgMTAsIDIsIDIzOSwgMTM4LCAyMzUsIDI4LCAKKyAgICAxMCwgMiwgMjM5LCAxMzgsIDIxMCwgNDYsIDEwLCAyLCAyMzksIDEzNSwgMTAsIDIsIDIzOSwgMTM2LCAyNCwgMjM4LCA5MSwgCisgICAgMTAsIDIsIDIzOSwgMTM0LCAxMCwgMiwgMjM5LCAxMzEsIDEwLCAyLCAyMzksIDEzMCwgMTAsIDIsIDIzOSwgMTI5LCAxMCwgCisgICAgMiwgMjM5LCAxMjUsIDEwLCAyLCAyMzksIDEyMywgMTAsIDIsIDIzOSwgMTI0LCAyMzUsIDI4LCAxMCwgMiwgMjM5LCAxMjQsIAorICAgIDIzNSwgMjksIDIzNSwgMjgsIDEwLCAyLCAyMzksIDEyMiwgMTAsIDIsIDIzOSwgMTE1LCAxMCwgMiwgNzIsIDEwLCAyLCAKKyAgICAxOTcsIDI0LCAyMTYsIDEzNSwgMTAsIDIsIDE5NywgMTE5LCAxOTcsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIzOSwgMjgsIDEwLCAyLCAyMzksIDI5LCAyNCwgMzUsIDkzLCAyMzQsIDIzNiwgOTMsIDI0MiwgNTgsIDEwLCAyLCAyMzksIAorICAgIDI5LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTIsIAorICAgIDM1LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzksIDI5LCAyNCwgNjYsIDEwLCAyLCAyMzksIDEsIAorICAgIDEwLCAyLCAyMzgsIDI0NSwgMTAsIDIsIDIzOCwgMjA5LCAxMCwgMiwgMjM4LCAxNzksIDEwLCAyLCAyMzgsIDE4MCwgMjQsIAorICAgIDIzNiwgNTcsIDEwLCAyLCAyMzgsIDE4MCwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM4LCAxODAsIDI0LCAKKyAgICAyMjIsIDc2LCAxMCwgMiwgMjM4LCAxODAsIDI0MiwgMjI4LCAyMzgsIDE3OSwgMTAsIDIsIDIzOCwgMTgwLCAyMTcsIDQwLCAKKyAgICAyMzgsIDE3OSwgMTAsIDIsIDIzOCwgMTgwLCAyMDgsIDE5MiwgMTAsIDIsIDIzOCwgMTEyLCAxMCwgMiwgMjM4LCAxMDksIAorICAgIDEwLCAyLCAyMzgsIDkxLCAxMCwgMiwgMjM4LCAxMCwgMTAsIDIsIDIzOCwgMTEsIDI0LCA2MiwgMTAsIDIsIDIzOCwgMTEsIAorICAgIDI0LCAzNSwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAyNCwgMzUsIDkzLCAyMjUsIDk0LCAyNCwgMjI1LCA5MywgCisgICAgMTAsIDIsIDIzOCwgMTEsIDI0LCAyNTEsIDg1LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM4LCAKKyAgICAxMSwgMjQsIDIzOSwgMTI0LCAyMzUsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzOSwgMTI0LCAyMzUsIDI5LCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDE0NCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMzQsIDIzNiwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIzOCwgMTEsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMjcsIDM4LCAxMCwgMiwgCisgICAgMjM4LCAxMSwgMjQsIDIyNywgMzksIDIwOCwgMTkyLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNiwgMTMsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyNCwgMTk0LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNSwgOTQsIDI0LCAyMjUsIDkzLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjQsIDIyNCwgMjEwLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA0LCA0NywgCisgICAgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjM2LCA4OSwgMTAsIDIsIDIzNiwgOTAsIDIzNSwgMjgsIDEwLCAKKyAgICAyLCAyMzYsIDg3LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDM1LCA5MywgMjQyLCA1OSwgOTMsIDE0NCwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAzNSwgOTMsIDE0NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAzNSwgOTMsIDIyOCwgMTUzLCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDI1MiwgNywgMjA2LCAxNTYsIDkzLCAyMDcsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI1MSwgODUsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjUwLCAxODAsIDkzLCAyMzYsIDcxLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0OSwgNzcsIDkzLCAyMTMsIDI1MiwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDgsIDMsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQ4LCA0LCA5MywgMjEzLCAyNTIsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQyLCA1OCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDEsIDc2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDI0MSwgMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOSwgMTM1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIzOCwgMjA5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOCwgMjEwLCA5MywgMTk0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOCwgCisgICAgMTc5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOCwgMTgwLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA0OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMzUsIDE2MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzUsIDE1OSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzUsIDE2MCwgOTMsIAorICAgIDYyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTQ0LCA5MywgMjA4LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzQsIAorICAgIDIzNiwgOTMsIDIyNCwgNDMsIDkzLCAyMzgsIDkxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNCwgMjE2LCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDIzNCwgMjE3LCA5MywgMTk0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNCwgNzYsIDkzLCAyMjQsIDIxMCwgMTAsIAorICAgIDIsIDIzNiwgODgsIDI0LCAyMzMsIDkyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyOCwgMjEsIDkzLCAyMzMsIDk4LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI3LCAKKyAgICA3NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNiwgMTU3LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyNiwgMTU4LCA5MywgMjI1LCA5MywgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjYsIDE0LCA5MywgMjUxLCAKKyAgICA4NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIyLCA3NywgOTMsIDIzOCwgMTc5LCAKKyAgICAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxOCwgODksIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDE3MiwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMiwgMCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTAsIDY1LCAxMCwgCisgICAgMiwgMjM2LCA4OCwgMjQsIDIxMCwgNjYsIDkzLCAyMDQsIDE5MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTAsIDMxLCAxMCwgCisgICAgMiwgMjM2LCA4OCwgMjQsIDIwNywgMjM0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIwNywgMCwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICA2NiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIwNCwgMzcsIDkzLCAyMzksIAorICAgIDEzNywgMTAsIDIsIDIzNiwgODgsIDExOSwgMjM2LCA4NywgMTAsIDIsIDIzNiwgODIsIDEwLCAyLCAyMzYsIDgzLCAyNDIsIAorICAgIDIyOCwgMjM2LCA4MiwgMTAsIDIsIDIzNiwgODAsIDEwLCAyLCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIDExOSwgCisgICAgMjM2LCA0OSwgMTAsIDIsIDIzNiwgNzEsIDEwLCAyLCAyMzYsIDcyLCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIAorICAgIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIzNiwgNzAsIDEwLCAyLCAyMzYsIDY4LCAxMCwgMiwgMjM2LCA1OSwgMTAsIDIsIDIzNiwgCisgICAgNTcsIDEwLCAyLCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgNTgsIDExOSwgMjM2LCA1NywgMTAsIDIsIDIzNiwgCisgICAgNTgsIDI0MiwgMjI4LCAyMzYsIDU3LCAxMCwgMiwgMjM2LCA0OSwgMTAsIDIsIDIzNiwgNDgsIDEwLCAyLCAyMzYsIDQzLCAKKyAgICAxMCwgMiwgMjM1LCAyNDIsIDEwLCAyLCAyMzUsIDI0MywgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCAxNjEsIDEwLCAyLCAKKyAgICAyMzUsIDE2MiwgMjQsIDcyLCAxMCwgMiwgMjM1LCAxNjIsIDI0LCA2NiwgMTAsIDIsIDIzNSwgMTYyLCAyNDIsIDIyOCwgCisgICAgMjM1LCAxNjEsIDEwLCAyLCAyMzUsIDE1OSwgMTAsIDIsIDIzNSwgMTYwLCAxMTksIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAKKyAgICAxNjAsIDI0MiwgMjI4LCAyMzUsIDE1OSwgMTAsIDIsIDIzNSwgMTU2LCAxMCwgMiwgMjM1LCAxNDMsIDEwLCAyLCAyMzUsIAorICAgIDE0NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgMTQxLCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAzNSwgOTMsIDIyOCwgMTUzLCAxMCwgCisgICAgMiwgMjM1LCAxNDIsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNSwgMTQyLCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAKKyAgICAyMzUsIDE0MiwgMjQsIDIyNCwgNDMsIDkzLCAyMjgsIDE1MywgMTAsIDIsIDIzNSwgMTQyLCAyNCwgMTcyLCAxMCwgMiwgCisgICAgMjM1LCAxMzcsIDEwLCAyLCAyMzUsIDEzNSwgMTAsIDIsIDIzNSwgMTM2LCAyNDIsIDIyOCwgMjM1LCAxMzUsIDEwLCAyLCAKKyAgICAyMzUsIDEzNiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjM1LCAxMzYsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMzUsIDEzNiwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMzUsIDUwLCAxMCwgMiwgMjM1LCA1MSwgMjQyLCAyMjgsIDIzNSwgNTAsIDEwLCAyLCAyMzUsIAorICAgIDQ4LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjI3LCA3NywgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCA0OSwgMjQsIDIxOCwgODksIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjEyLCAzNiwgCisgICAgOTMsIDIwNCwgMjA5LCAxMCwgMiwgMjM1LCA0OSwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgMzksIDEwLCAyLCAyMzUsIDQwLCAKKyAgICAyNCwgMzUsIDkzLCAyMjUsIDI0NSwgMTAsIDIsIDIzNSwgNDAsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzNSwgNDAsIDExOSwgCisgICAgMjM1LCA0MCwgMjI0LCAzMywgMTAsIDIsIDIzNSwgMzIsIDEwLCAyLCAyMzUsIDMwLCAxMCwgMiwgMjM1LCAzMSwgMjQsIAorICAgIDIxMCwgNjUsIDEwLCAyLCAyMzUsIDIyLCAxMCwgMiwgMjM1LCAyMSwgMTAsIDIsIDIzNSwgMTcsIDEwLCAyLCAyMzUsIDE2LCAKKyAgICAxMCwgMiwgMTQ0LCAxMCwgMiwgMjM0LCAyMzYsIDIwNiwgMTU1LCAxMCwgMiwgMjM0LCAyMzYsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzQsIDIxNiwgMTAsIDIsIDIzNCwgNzUsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzQsIDc2LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjQwLCAyNTUsIAorICAgIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjM2LCA4MCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMjYsIDE0NywgMTAsIDIsIDIzNCwgCisgICAgNzYsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjM0LCA3NiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzQsIDc2LCAyNCwgNjYsIDEwLCAKKyAgICAyLCAyMzMsIDk3LCAxMCwgMiwgMjMzLCA5MiwgMTAsIDIsIDIzMywgOTMsIDI0LCAyNTEsIDg1LCAxMCwgMiwgMjMzLCA5MywgCisgICAgMjQsIDIzNCwgMjE2LCAxMCwgMiwgMjMzLCA5MywgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjI0LCAxNTQsIAorICAgIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzMywgODgsIDEwLCAyLCA3MCwgMTAsIDIsIDIzMywgMTksIAorICAgIDYyLCAxMCwgMiwgMjMyLCAyMzUsIDEwLCAyLCAyMjgsIDE4MSwgMTAsIDIsIDIyOCwgMTgyLCAxMTksIDIyOCwgMTgyLCAKKyAgICAyNDgsIDMsIDEwLCAyLCAyMjgsIDE4MiwgMTE5LCAyMjgsIDE4MiwgMjA4LCAxOTIsIDEwLCAyLCAyMjgsIDE1NiwgMTAsIDIsIAorICAgIDIyOCwgMTUzLCAxMCwgMiwgMjI4LCAxNTQsIDI0MSwgNTgsIDEwLCAyLCAyMjgsIDE1NCwgMjEzLCA4OCwgMTAsIDIsIDIyOCwgCisgICAgMTU0LCAxMTksIDIyOCwgMTU0LCAyMTAsIDE1LCAxMTksIDIxMCwgMTUsIDIwNCwgMzcsIDExOSwgMjA0LCAzNiwgMTAsIDIsIAorICAgIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjI4LCAxNDUsIDEwLCAyLCAyMjgsIDE0NiwgMjQsIDIzNiwgNTgsIDIwNiwgCisgICAgMTU1LCAxMCwgMiwgMjI4LCAxNDQsIDEwLCAyLCAyMjgsIDEzNCwgMTAsIDIsIDIyOCwgMTM1LCAyNCwgMjA3LCAwLCAxMCwgCisgICAgMiwgMjI4LCAxMzUsIDI0MiwgMjI4LCAyMjgsIDEzNCwgMTAsIDIsIDIyOCwgMTM1LCAyMTcsIDQwLCAyMjgsIDEzNCwgMTAsIAorICAgIDIsIDIyOCwgMTM1LCAyMDgsIDE5MiwgMTAsIDIsIDIyOCwgMTI3LCAxMCwgMiwgMjI4LCAxMTcsIDEwLCAyLCAyMjgsIDM1LCAKKyAgICAxMCwgMiwgMjI4LCAyMCwgMTAsIDIsIDE2MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgNjIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDI1MSwgMjM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNTEsIDIzNiwgOTMsIDIyNiwgMTMsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjQ5LCAKKyAgICA5OCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTQ4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzOCwgOTEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIzNiwgODksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNzEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNTgsIDIwNiwgCisgICAgMTU1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzYsIDUwLCA5MywgMjEwLCAKKyAgICAxMTMsIDkzLCA2MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgCisgICAgMTQzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDEzNiwgOTMsIDIxMiwgMCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAKKyAgICAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCA1MCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjM1LCAyMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyOCwgCisgICAgMTM0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjYsIDE2MywgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjI2LCAxNTcsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNCwgMjEwLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjIsIDc2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjIsIDc3LCAKKyAgICA5MywgMjM5LCAxMzcsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzcsIDkzLCAyMzUsIDE2MSwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjIyLCA3NywgOTMsIDIwNiwgMjAxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjIxLCAyMTIsIDkzLCAyMTgsIDg0LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjAsIDM0LCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTUsIDIwNCwgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjEyLCAxNzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMiwgNjQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMiwgMCwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEwLCAxMTQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMjcsIAorICAgIDEwOCwgMjQsIDIxMCwgMzEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwOSwgMjIwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyMDksIDE2OCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA3LCAyNDMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNiwgMjMyLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCA2NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA0LCA0NywgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA0LCA4LCAyNCwgMTcyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAKKyAgICAyMDMsIDE5MCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTk5LCAzNiwgMTAsIDIsIDIyNywgMTA2LCAxMCwgMiwgMjI3LCAxMDcsIAorICAgIDI0MiwgMjI4LCAyMjcsIDEwNiwgMTAsIDIsIDIyNywgOTYsIDEwLCAyLCAyMjcsIDkzLCAxMCwgMiwgMjI3LCA5MSwgMTAsIAorICAgIDIsIDIyNywgOTAsIDEwLCAyLCAyMjcsIDg4LCAxMCwgMiwgMjI3LCA4OSwgMTE5LCAyMjcsIDg4LCAxMCwgMiwgMjI3LCA3NiwgCisgICAgMTAsIDIsIDIyNywgNzcsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIyNywgNzIsIDEwLCAyLCAyMjcsIDczLCAKKyAgICAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjcsIDczLCAyNDIsIDIyOCwgMjI3LCA3MiwgMTAsIDIsIDIyNywgNzAsIDEwLCAyLCAKKyAgICAyMjcsIDY5LCAxMCwgMiwgMjI3LCAzOCwgMTAsIDIsIDIyNywgMzksIDIyNSwgMTU4LCAyNCwgMTA4LCAxMTksIDIyNSwgCisgICAgMTU4LCAyNCwgNjYsIDEwLCAyLCAyMjcsIDM5LCAxMTksIDIyNywgMzksIDIyNSwgMTU4LCAyNCwgMTA4LCAxMTksIDIyNSwgCisgICAgMTU4LCAyNCwgNjYsIDEwLCAyLCAyMjYsIDIzNCwgMTAsIDIsIDIyNiwgMTYzLCAxMCwgMiwgMjI2LCAxNjQsIDI0LCAyNDksIAorICAgIDExOCwgMTAsIDIsIDIyNiwgMTY0LCAyNCwgNjYsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjYsIAorICAgIDE1NywgMTAsIDIsIDIyNiwgMTQ3LCAxMCwgMiwgMjI2LCAxMzQsIDEwLCAyLCAyMjYsIDEzMywgMTAsIDIsIDIyNiwgMTMxLCAKKyAgICAxMCwgMiwgMjI2LCAxMzIsIDExOSwgMjI2LCAxMzEsIDEwLCAyLCAyMjYsIDE1LCAxMCwgMiwgMjI2LCAxNiwgMTE5LCAyMzQsIAorICAgIDc2LCAyNCwgMjUwLCAxODAsIDIyNiwgMTYsIDExOSwgMjM0LCA3NiwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjI2LCAxMywgCisgICAgMTAsIDIsIDIyNiwgMTEsIDEwLCAyLCAyMjYsIDEyLCAyMDMsIDczLCAxOSwgMTAsIDIsIDIyNiwgMTAsIDEwLCAyLCAyMjYsIAorICAgIDIsIDEwLCAyLCAyMjYsIDMsIDIzNSwgMjgsIDEwLCAyLCAyMjYsIDEsIDEwLCAyLCAyMjUsIDI0NSwgMTAsIDIsIDIyNSwgCisgICAgMjQ2LCAyMTcsIDQwLCAyMjUsIDI0NSwgMTAsIDIsIDIyNSwgMjM5LCAxMCwgMiwgMjI1LCAyMTcsIDEwLCAyLCAxOTQsIDEwLCAKKyAgICAyLCAyMjUsIDE1NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgNjIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDM1LCA5MywgMjQyLCAKKyAgICA1OSwgOTMsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMzUsIDkzLCAyMzYsIDQ5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAKKyAgICAzNSwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MSwgMTUxLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNTEsIAorICAgIDg1LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNTAsIDE4MiwgMTk5LCAzMiwgMjA2LCAxNTUsIDEwLCAyLCAyMjUsIDE1OCwgCisgICAgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjQxLCAKKyAgICAyNTQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzOCwgMTc5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzYsIDg5LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAKKyAgICAyMzUsIDQwLCA5MywgMjM1LCAzOSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzQsIAorICAgIDIxNiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM0LCA3NiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIDEzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAKKyAgICAxMzUsIDkzLCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgMTM1LCA5MywgMjI0LCA0MiwgMTAsIDIsIDIyNSwgCisgICAgMTU4LCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNiwgMTQ3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAKKyAgICAyMjYsIDEzLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjYsIDIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNiwgMywgOTMsIAorICAgIDIzNCwgNzYsIDkzLCA2MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI1LCAxNTcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgCisgICAgMTU0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjQsIDQyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjQsIDI3LCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAyMjIsIDc2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIyMCwgMjUwLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjI1LCAxNTgsIAorICAgIDI0LCAyMTAsIDY2LCA5MywgMjA3LCAyMzQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIxMCwgMTEsIDkzLCAyMzUsIDEzNiwgCisgICAgOTMsIDIzOCwgMTA5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMTAsIDExLCA5MywgMjM1LCAxMzYsIDIwNiwgMTU1LCAxMCwgCisgICAgMiwgMjI1LCAxNTgsIDI0LCAyMDksIDIxOCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA5LCAyMTksIDkzLCAyMDksIDIxOCwgCisgICAgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA3LCAyMzQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNywgMTMsIDEwLCAyLCAyMjUsIAorICAgIDE1OCwgMjQsIDIwNywgMCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA2LCAyMDIsIDkzLCAzNSwgOTMsIDIwOCwgMjUsIDkzLCAKKyAgICAxODgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDY2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAxMDgsIDkzLCA2MiwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMTA4LCA5MywgMTA4LCA5MywgNjYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIwNCwgNDgsIDkzLCAKKyAgICAyNTAsIDE4MSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjAzLCAxOTAsIAorICAgIDEwLCAyLCAyMjUsIDE1OCwgMjA4LCAxOTIsIDEwLCAyLCAyMjUsIDE1NSwgMTAsIDIsIDIyNSwgMTU2LCAyNCwgMjEwLCA2NSwgCisgICAgMTAsIDIsIDIyNSwgMTU2LCAyNCwgMjEwLCA2NiwgOTMsIDIwNywgMjM0LCAxMCwgMiwgMjI1LCAxNTYsIDIzNSwgMjgsIDEwLCAKKyAgICAyLCAyMjUsIDE1NiwgMjM1LCAyOSwgMTE5LCAyMjUsIDE1NiwgMjM1LCAyOSwgMjEwLCA2NSwgMTAsIDIsIDIyNSwgMTUxLCAKKyAgICAxMCwgMiwgMjI1LCA5MywgMTAsIDIsIDIyNSwgOTQsIDI0LCAyMjUsIDkzLCAxMCwgMiwgMjI1LCA5MSwgMTAsIDIsIDIyNSwgCisgICAgOTIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIyNSwgOTIsIDI0LCAyMjUsIDI0NiwgOTMsIDIxMiwgMTc1LCAxMCwgMiwgMjI0LCAKKyAgICAyMTAsIDEwLCAyLCAyMjQsIDE5MSwgMTAsIDIsIDIyNCwgMTc5LCAxMCwgMiwgMjI0LCAxNTQsIDEwLCAyLCAyMjQsIDQyLCAKKyAgICAxMCwgMiwgMjI0LCA0MywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyNTEsIAorICAgIDE1MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzgsIDkxLCAxMCwgMiwgCisgICAgMjI0LCA0MSwgMjQsIDIzOCwgOTIsIDIwNiwgMTU1LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAKKyAgICAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzNCwgNzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjgsIDEzNCwgCisgICAgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjcsIDkzLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNywgOTEsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjI3LCA5MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIyNSwgMTc2LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI1LCAxNTcsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjIyLCA3NywgOTMsIDIzOCwgMTc5LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjE4LCAxMzMsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjA5LCAxODMsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMDksIDE2MCwgOTMsIDI0OCwgMzYsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjA0LCAyMDksIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIyNCwgNDEsIDI0MiwgMjI4LCAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjE3LCA0MCwgCisgICAgMjI0LCA0MCwgMTAsIDIsIDIyNCwgNDEsIDIwOCwgMTkyLCAxMCwgMiwgMjI0LCA0MSwgMjEwLCA0NiwgMTAsIDIsIDIyNCwgCisgICAgMzksIDEwLCAyLCAyMjQsIDMzLCAxMCwgMiwgMjI0LCAzNCwgMTE5LCAyMjQsIDMzLCAxMCwgMiwgMjI0LCAzNCwgMjE3LCAKKyAgICA0MCwgMjI0LCAzMywgMTAsIDIsIDIyNCwgMzQsIDIxMCwgNDYsIDEwLCAyLCAyMjQsIDMwLCAxMCwgMiwgMjI0LCAyNywgMTAsIAorICAgIDIsIDIyNCwgMjUsIDEwLCAyLCAyMjQsIDI2LCAxMTksIDIyNCwgMjUsIDEwLCAyLCAyMjQsIDI2LCAxMTksIDIyNCwgMjYsIAorICAgIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDE3OCwgMTAsIDIsIDIyMiwgMjM1LCAyNCwgMjA3LCAwLCAxMCwgMiwgCisgICAgMjIyLCAyMzUsIDIzNSwgMjgsIDEwLCAyLCAyMjIsIDIzNCwgMTAsIDIsIDIyMiwgMjA2LCAxMCwgMiwgMjIyLCAxNTgsIDEwLCAKKyAgICAyLCAyMjIsIDEzNSwgMTAsIDIsIDIyMiwgMTM0LCAxMCwgMiwgMjIyLCA3NiwgMTAsIDIsIDIyMiwgMjgsIDEwLCAyLCAyMjEsIAorICAgIDIxMSwgMTAsIDIsIDIyMSwgMTY0LCAxMCwgMiwgMjIxLCA0MSwgMTAsIDIsIDIyMSwgNDIsIDExOSwgMjIxLCA0MSwgMTAsIAorICAgIDIsIDIyMSwgMzAsIDEwLCAyLCAyMjEsIDMxLCAyMzUsIDI4LCAxMCwgMiwgMjIxLCAxMiwgMTAsIDIsIDIyMCwgMjU0LCAxMCwgCisgICAgMiwgMjIwLCAyNTAsIDEwLCAyLCAyMjAsIDI1MSwgMjQsIDYyLCAxMCwgMiwgMjIwLCAyNTEsIDI0LCAyMjUsIDI0NSwgMTAsIAorICAgIDIsIDIyMCwgMjUxLCAyNCwgMTk5LCAxMTQsIDEwLCAyLCAyMjAsIDI1MSwgMTE5LCAyMjAsIDI1MCwgMTAsIDIsIDIyMCwgCisgICAgMjUxLCAxMTksIDIyMCwgMjUxLCAyNCwgMzUsIDkzLCAxODgsIDEwLCAyLCAyMjAsIDI1MSwgMjQyLCAyMjgsIDIyMCwgMjUwLCAKKyAgICAxMCwgMiwgMjIwLCAyNDgsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDYyLCAxMCwgMiwgMjIwLCAyNDksIDI0LCAzNSwgOTMsIAorICAgIDI0MSwgNzYsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDI0MSwgNzYsIDEwLCAyLCAyMjAsIDI0OSwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDE4OCwgMTAsIDIsIDIyMCwgMTYwLCAxMCwgMiwgMjIwLCAxNDcsIDEwLCAyLCAyMjAsIDE0OCwgMjI4LCA0OSwgMTAsIDIsIAorICAgIDIyMCwgMTQ4LCAyNCwgMjA5LCAyMjEsIDIwNiwgMTU1LCAxMCwgMiwgMjIwLCAxNDgsIDIxNywgNDAsIDIyMCwgMTQ3LCAxMCwgCisgICAgMiwgMjIwLCAxNDYsIDEwLCAyLCAyMjAsIDEzOSwgMjE4LCA3NSwgMTAsIDIsIDIyMCwgMTM4LCAxMCwgMiwgMjIwLCAxMzcsIAorICAgIDEwLCAyLCAyMjAsIDM0LCAxMCwgMiwgMjIwLCAzNSwgMjQsIDYyLCAxMCwgMiwgMjIwLCAzNSwgMjQsIDIwNCwgMzYsIDEwLCAKKyAgICAyLCAyMjAsIDM1LCAyMTAsIDQ2LCAxMCwgMiwgMjE5LCAxNTAsIDEwLCAyLCAyMTksIDE1MSwgMjQsIDcyLCAxMCwgMiwgCisgICAgMjE5LCAxNDksIDEwLCAyLCAyMTksIDExOSwgMTAsIDIsIDIxOSwgMTIwLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAKKyAgICAyMTksIDEyMCwgMjQsIDIzNiwgNTAsIDkzLCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIxOSwgMTE1LCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAyNTEsIDg1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAKKyAgICAyNCwgMjUwLCAxODIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjIyLCA3NywgOTMsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjAsIDM0LCAKKyAgICAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMzUsIDI1MSwgODUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAyNTAsIAorICAgIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDI1MCwgMTgyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDIwNCwgNDgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjAzLCAxOTAsIDEwLCAKKyAgICAyLCAyMTksIDEwMywgMTAsIDIsIDIxOCwgMTMzLCAxMCwgMiwgMjE4LCAxMDUsIDEwLCAyLCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMjIsIDEzNSwgCisgICAgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjEyLCAKKyAgICAzNiwgMTE5LCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIAorICAgIDIwMywgMTkwLCAxMCwgMiwgMjE4LCA5MCwgMjA2LCAxNTUsIDEwLCAyLCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMTgsIDkwLCAyNDIsIDIyOCwgMjE4LCA4OSwgMTAsIDIsIDIxOCwgOTAsIDI0MiwgMjI4LCAyMTgsIDkwLCAyMjUsIDE1NiwgCisgICAgMTE5LCAyMjUsIDE1NSwgMTAsIDIsIDIxOCwgODQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyNTAsIDE3NSwgMTAsIAorICAgIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjM5LCAxMzEsIAorICAgIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjcsIDkxLCAxMCwgMiwgMjE4LCA4NSwgMjUyLCAKKyAgICA3LCAyNCwgMTk0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgCisgICAgMjQsIDIwOSwgMTU3LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjA0LCA0NywgMTAsIDIsIDIxOCwgODUsIDIyNiwgCisgICAgMTMyLCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMTgsIDg1LCAyMjYsIDEzMiwgMjQsIDI0OCwgMTg5LCA2NiwgMTAsIDIsIAorICAgIDE3MiwgMTAsIDIsIDIxNiwgMjAxLCAxMCwgMiwgMjE2LCAxNjIsIDEwLCAyLCAyMTYsIDEzNSwgMTAsIDIsIDIxNiwgMywgCisgICAgMTAsIDIsIDIxNSwgMjA0LCAxMCwgMiwgMjE1LCAyMDUsIDI0LCA2MiwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjUyLCA4OSwgCisgICAgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDI0OCwgMzYsIDEwLCAyLCAyMTUsIAorICAgIDIwNSwgMjQsIDcyLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCA3MCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjMyLCAyMzUsIDEwLCAKKyAgICAyLCAyMTUsIDIwNSwgMjQsIDY2LCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjE1LCAyMDUsIDI0MiwgCisgICAgMjI4LCAyMTUsIDIwNCwgMTAsIDIsIDIxNSwgMTQ2LCAxMCwgMiwgMjE1LCAxNDcsIDI0LCAyMjcsIDcyLCAxMCwgMiwgMjE1LCAKKyAgICAxNDcsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjE1LCAxNDcsIDI0LCAxOTksIDExNCwgMTAsIDIsIDIxNSwgMTQ3LCAyMTcsIAorICAgIDQwLCAyMTUsIDE0NiwgMTAsIDIsIDIxMywgMjUyLCAxMCwgMiwgMjEzLCAyNDYsIDEwLCAyLCAyMTMsIDg4LCAxMCwgMiwgCisgICAgMjEyLCAxNzUsIDEwLCAyLCAyMTIsIDY0LCAxMCwgMiwgMjEyLCA1MSwgMjE4LCA3NSwgMTAsIDIsIDIxMiwgNTAsIDEwLCAyLCAKKyAgICAyMTIsIDUxLCAyNCwgNjIsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjM5LCAxMzcsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjM5LCAKKyAgICAxMzUsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMTQ0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMTIsIAorICAgIDUxLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjEsIAorICAgIDIxMSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIxMiwgMzUsIDEwLCAyLCAKKyAgICAyMTIsIDUxLCAyNCwgMjEwLCAzMSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDcsIDI0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIAorICAgIDIwNCwgNDcsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA0LCA0MiwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDQsIDEyLCAxMCwgMiwgCisgICAgMjEyLCA1MSwgMjQsIDIwMywgMjE0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwMywgMTkwLCAxMCwgMiwgMjEyLCA1MSwgMTE5LCAKKyAgICAyMTIsIDUwLCAxMCwgMiwgMjEyLCA1MSwgMjM1LCAyOCwgMTAsIDIsIDIxMiwgMzUsIDEwLCAyLCAyMTIsIDM2LCAyMjUsIAorICAgIDE1OCwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjEyLCA4LCAxMCwgMiwgMjEyLCAwLCAxMCwgMiwgMjEwLCAxMTQsIDEwLCAyLCAKKyAgICAyMTAsIDExMiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgNjIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgCisgICAgMjEwLCAxMTMsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIxMCwgMTEzLCAKKyAgICAyNCwgMjA5LCAyMTgsIDEwLCAyLCAyMTAsIDExMywgMjQsIDIwNCwgMTkyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCA2NiwgMTAsIAorICAgIDIsIDIxMCwgMTEzLCAyNCwgMTA4LCA5MywgNjIsIDEwLCAyLCAyMTAsIDExMCwgMTAsIDIsIDIxMCwgMTA4LCAxMCwgMiwgCisgICAgMjEwLCA4MiwgMTAsIDIsIDIxMCwgNjUsIDEwLCAyLCAyMTAsIDY2LCAyMzMsIDk3LCAxMCwgMiwgMjEwLCA2NiwgMTE5LCAKKyAgICAyMTAsIDY2LCAyMzYsIDgxLCAxMTksIDIzNiwgODEsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIxMCwgNjYsIAorICAgIDExOSwgMjEwLCA2NiwgMjA3LCAyNSwgMTE5LCAyMDcsIDI1LCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMTAsIAorICAgIDU4LCAxMCwgMiwgMjEwLCA1MywgMTAsIDIsIDIxMCwgNDksIDEwLCAyLCAyMTAsIDQ4LCAxMCwgMiwgMjEwLCA0NSwgMTAsIAorICAgIDIsIDIxMCwgMzEsIDEwLCAyLCAyMTAsIDMyLCAyNCwgNjIsIDEwLCAyLCAyMTAsIDMyLCAyNCwgMjI4LCAxMzQsIDEwLCAyLCAKKyAgICAyMTAsIDI1LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDYyLCAxMCwgMiwgMjEwLCAyNiwgMjQsIDI0OSwgOTksIDEwLCAyLCAyMTAsIAorICAgIDI2LCAyNCwgMjQ4LCAxNCwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyNDEsIDE5LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIzNiwgCisgICAgNDksIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIAorICAgIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI1LCAyMzksIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjI0LCAyNywgMTAsIDIsIDIxMCwgCisgICAgMjYsIDI0LCAyMjEsIDMwLCAxMCwgMiwgMjEwLCAyNiwgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMTAsIDE5LCAxMCwgMiwgMjEwLCAKKyAgICAxNCwgMTAsIDIsIDIxMCwgMTUsIDIwNiwgMTU1LCAxMCwgMiwgMjEwLCAxNSwgMTE5LCAyMTAsIDE1LCAyNDgsIDQsIDExOSwgCisgICAgMjQ4LCAzLCAxMCwgMiwgMjEwLCAxMCwgMTAsIDIsIDIwOSwgMjIwLCAxMCwgMiwgMjA5LCAyMjEsIDExOSwgMjI4LCA1MCwgCisgICAgMjA5LCAyMjAsIDEwLCAyLCAyMDksIDIxOCwgMTAsIDIsIDIwOSwgMjE3LCAxMCwgMiwgMjA5LCAxODIsIDEwLCAyLCAyMDksIAorICAgIDE4MywgMjM1LCAyOCwgMTAsIDIsIDIwOSwgMTY4LCAxMCwgMiwgMjA5LCAxNjYsIDEwLCAyLCAyMDksIDE2NywgMTE5LCAKKyAgICAyMDksIDE2NywgMjA5LCAyMTgsIDEwLCAyLCAyMDksIDE1OSwgMTAsIDIsIDIwOSwgMTU3LCAxMCwgMiwgMjA4LCAyNCwgMTAsIAorICAgIDIsIDIwOCwgMjUsIDExOSwgMjA4LCAyNCwgMTAsIDIsIDIwNywgMjQ2LCAxMCwgMiwgMjA3LCAyNDUsIDEwLCAyLCAyMDcsIAorICAgIDI0MywgMTAsIDIsIDIwNywgMjM0LCAxMCwgMiwgMjA3LCAyMzMsIDEwLCAyLCAyMDcsIDIwNywgMTAsIDIsIDIwNywgMjA2LCAKKyAgICAxMCwgMiwgMjA3LCAzNiwgMTAsIDIsIDIwNywgMzcsIDI1MCwgMTY1LCAxMCwgMiwgMjA3LCAzNywgMjQsIDIzNCwgNzUsIAorICAgIDEwLCAyLCAyMDcsIDM3LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMDcsIDM3LCAyMzUsIDI4LCAxMCwgMiwgMjA3LCAyNCwgCisgICAgMTAsIDIsIDIwNywgMjUsIDExOSwgMjA3LCAyNSwgMjE5LCAxNTEsIDExOSwgMjE5LCAxNTEsIDI0MSwgMCwgMTE5LCAyNDAsIAorICAgIDI1NSwgMTAsIDIsIDIwNywgMjUsIDIwOCwgMTkyLCAxMCwgMiwgMjA3LCAxMywgMTAsIDIsIDE2NSwgMjQsIDI0OCwgMTg4LCAKKyAgICAxMCwgMiwgMTY1LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDE2NSwgMjQsIDIxMCwgNjUsIDEwLCAyLCAxNjUsIDI0LCAyMDksIAorICAgIDIyMCwgMTAsIDIsIDE2NSwgMjQsIDIwNCwgMjA5LCAxMCwgMiwgMTY1LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIwNywgMCwgCisgICAgMTAsIDIsIDIwNiwgMjMyLCAxMCwgMiwgMjA2LCAyMDEsIDEwLCAyLCAyMDYsIDIwMiwgMjM1LCAyOCwgMTAsIDIsIDIwNiwgCisgICAgMTUsIDEwLCAyLCAyMDYsIDE2LCAyMDYsIDE1NSwgMTAsIDIsIDIwNSwgMjQyLCAxMCwgMiwgMjA1LCAyMTksIDEwLCAyLCAKKyAgICAyMDUsIDIyMCwgMjQsIDIwNywgMCwgMTAsIDIsIDIwNSwgMjIwLCAxMTksIDIwNSwgMjE5LCAxMCwgMiwgMjA1LCAyMjAsIAorICAgIDExOSwgMjA1LCAyMjAsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjA0LCAKKyAgICAyMTUsIDEwLCAyLCAyMDQsIDIwOSwgMTAsIDIsIDIwNCwgMjA3LCAxMCwgMiwgMjA0LCAyMDMsIDEwLCAyLCAyMDQsIDE5MiwgCisgICAgMTAsIDIsIDIwNCwgMTkzLCAxMTksIDIwNCwgMTkzLCAxOTksIDExNSwgMTE5LCAxOTksIDExNCwgMTAsIDIsIDY2LCAxMCwgCisgICAgMiwgMTA4LCAyMzUsIDM5LCAxMCwgMiwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMTA4LCAxMTksIDEwOCwgMjE2LCAyMTEsIAorICAgIDExOSwgMjE2LCAyMTEsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDEwOCwgMTE5LCAxMDgsIDIwNywgMjA4LCAKKyAgICAxMTksIDIwNywgMjA3LCAxMCwgMiwgMTA4LCAxMTksIDEwOCwgMTA4LCAyMTMsIDEwNSwgMTE5LCAxMDgsIDIxMywgMTA0LCAKKyAgICAxMCwgMiwgMjA0LCA0NywgMTAsIDIsIDIwNCwgNDIsIDEwLCAyLCAyMDQsIDM2LCAxMCwgMiwgMjA0LCAzNywgMjI1LCAyMzksIAorICAgIDEwLCAyLCAyMDQsIDM3LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMDQsIDM3LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMDQsIAorICAgIDM3LCAyNCwgMTA4LCA5MywgMTA4LCA5MywgNjYsIDEwLCAyLCAyMDQsIDM3LCAyNCwgMTA4LCA5MywgMTA4LCA5MywgMTA4LCAKKyAgICAyMzUsIDI4LCAxMCwgMiwgMjA0LCAzNywgMjM1LCAyOCwgMTAsIDIsIDIwNCwgMzcsIDIxMCwgNDYsIDEwLCAyLCAyMDQsIAorICAgIDM3LCAyMTAsIDQ3LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMDQsIDMyLCAxMCwgMiwgMjA0LCAxMiwgMTAsIDIsIDIwNCwgCisgICAgMTMsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIwNCwgMTMsIDI0LCAyMjIsIDc3LCA5MywgMjQyLCA1OCwgMTAsIDIsIDIwNCwgCisgICAgMTMsIDI0LCAyMTAsIDExMiwgMTAsIDIsIDIwNCwgMTMsIDI0LCA2NiwgMTAsIDIsIDIwNCwgMTEsIDEwLCAyLCAyMDQsIDcsIAorICAgIDEwLCAyLCAyMDQsIDgsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjA0LCA4LCAyNCwgMTcyLCAxMCwgMiwgMjA0LCA1LCAxMCwgMiwgCisgICAgMjA0LCA2LCAyMzUsIDI4LCAxMCwgMiwgMjAzLCAyMTQsIDEwLCAyLCAyMDMsIDIxNSwgMjQyLCAyMjgsIDIwMywgMjE0LCAKKyAgICAxMCwgMiwgMjAzLCAyMTUsIDIxMCwgNDYsIDEwLCAyLCAyMDMsIDIxMiwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMzUsIDkzLCAKKyAgICAxNDQsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDM1LCA5MywgMTg4LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyNTEsIDE1MSwgMTAsIAorICAgIDIsIDIwMywgMjEzLCAyNCwgMTQ0LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyMTgsIDg5LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAKKyAgICAyMDQsIDQ3LCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAyMDQsIDQ4LCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMDMsIDIxMywgMjQsIAorICAgIDIwNCwgNDgsIDkzLCAyNDgsIDE4OCwgMTAsIDIsIDIwMywgMjExLCAxMCwgMiwgMjAzLCAyMDgsIDEwLCAyLCAyMDMsIDIwNywgCisgICAgMTAsIDIsIDIwMywgMjAzLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCA2MiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjUwLCAxNzUsIAorICAgIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDE0OCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM5LCAxMjUsIDEwLCAyLCAyMDMsIDIwNCwgCisgICAgMjQsIDIzNiwgODksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNiwgNzEsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNiwgNTgsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzUsIDUwLCAxMCwgCisgICAgMiwgMjAzLCAyMDQsIDI0LCAxNDQsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAKKyAgICAyMjgsIDEzNCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI4LCAyMCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI2LCAxNjMsIAorICAgIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyMSwgMTY0LCAxMCwgMiwgMjAzLCAKKyAgICAyMDQsIDI0LCAxNzIsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwOSwgCisgICAgMTY2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDQsIDIxNSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMTA4LCA5MywgMjM1LCAKKyAgICAzOSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAKKyAgICAyMDMsIDIwMSwgMTAsIDIsIDIwMywgMjAyLCAyNCwgNjYsIDEwLCAyLCAyMDMsIDE5MCwgMTAsIDIsIDIwMywgMTkxLCAyNCwgCisgICAgNjIsIDEwLCAyLCAyMDMsIDE5MSwgMjQsIDIyNiwgMTUsIDEwLCAyLCAyMDMsIDE5MSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgCisgICAgMjAzLCAxOTEsIDI0LCAyMDcsIDAsIDEwLCAyLCAyMDMsIDE4NiwgMTAsIDIsIDIwMywgMTg5LCAxMCwgMiwgMjAzLCAxODcsIAorICAgIDEwLCAyLCAyMDMsIDE4MywgMTAsIDIsIDIwMywgMTcxLCAxMCwgMiwgMjAzLCAxNzIsIDI0LCAyMjcsIDM4LCAxMCwgMiwgCisgICAgMjAzLCAxNzAsIDEwLCAyLCAxOTksIDExNCwgMTAsIDIsIDE5OSwgMTE1LCAyMDYsIDE1NSwgMTAsIDIsIDE5OSwgMTE1LCAKKyAgICA5NSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMTk5LCAxMTAsIDEwLCAyLCAxOTksIDEwMiwgMTAsIDIsIDE5OSwgODgsIDEwLCAKKyAgICAyLCAxOTksIDM2LCAxMCwgMiwgMTk5LCAzNywgMTE5LCAxOTksIDM2LCAxMCwgMiwgMTk5LCAzNSwgMTAsIDIsIDE5OSwgMzMsIAorICAgIDEwLCAyLCAxOTksIDM0LCAyMjcsIDk1LCAyMDYsIDE1NSwgMTAsIDIsIDE5OSwgMjgsIDEwLCAyLCAxOTksIDE5LCAxMCwgMiwgCisgICAgMTk5LCAzLCAxMCwgMiwgMTk5LCAxLCAxMCwgMiwgMTk5LCAyLCAyNCwgNjIsIDEwLCAyLCAxOTksIDAsIDEwLCAyLCAxOTgsIAorICAgIDI1NSwgMTAsIDIsIDIyNywgNjEsIDIzOCwgMjA2LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIxOCwgODksIDEwLCAyLCAyNTIsIAorICAgIDcsIDI0LCA2MiwgMTAsIDIsIDI1MSwgOTgsIDI0LCAyMjYsIDQsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwNCwgCisgICAgNDgsIDkzLCAyMjIsIDEzNSwgMTAsIDIsIDI0MiwgNDcsIDEwLCAyLCAyNDEsIDAsIDkzLCAyMDksIDIyMCwgMTAsIDIsIAorICAgIDIzOSwgMTM2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjM4LCAxMSwgMjQsIAorICAgIDIxMCwgNjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjUxLCA4NiwgOTMsIDIyNywgNzcsIDkzLCA2MiwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIzNiwgMTQsIDEwLCAyLCAyMzUsIDE1MSwgMTAsIDIsIDIzMywgNzMsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDI1MSwgNTMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI1MCwgMTc4LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAzOSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM0LCA3NiwgCisgICAgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxNzIsIDEwLCAKKyAgICAyLCAyMjcsIDEwOCwgMjQsIDIwOSwgMjEzLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDIxNSwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjAzLCAyMTIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjI0LCA0MSwgMjEwLCAKKyAgICA0NywgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzOCwgOTIsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjI0LCAKKyAgICA0MSwgMjQsIDIwOSwgMjIwLCAxMCwgMiwgMjIyLCAyNywgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMTk5LCAxMTQsIDEwLCAyLCAKKyAgICAyMjAsIDE1OSwgMTAsIDIsIDIxOSwgMTE4LCAxMCwgMiwgMjE5LCAxMTcsIDEwLCAyLCAyMTksIDExNiwgMjQsIDI0OSwgOTksIAorICAgIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjE4LCAxMDYsIDIxMiwgMjI4LCAyMTksIDEwOSwgMjQxLCAKKyAgICAxNTQsIDEwLCAyLCAyMTYsIDQsIDI1MCwgMTY1LCAxMCwgMiwgMjE1LCAxNTAsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMDYsIDE0LCAxMCwgMiwgMjA0LCAxMywgMjQsIDIyMiwgNzYsIDEwLCAyLCAxMDgsIAorICAgIDY2LCAxMCwgMTQ1LCAyLCAxMjAsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMjYsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDI1MCwgMTgxLCAKKyAgICAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDEyNiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjQwLCAyNTUsIAorICAgIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDY2LCAxMCwgMTQ1LCAyLCAKKyAgICAyMzcsIDYxLCA2NiwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDY2LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgNjYsIDEwLCAxNDUsIAorICAgIDIsIDIzOCwgMjMyLCA2NiwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDY2LCAxMCwgMTQ1LCAyLCAxMTIsIDIzNSwgMjQ0LCAxMCwgCisgICAgMTQ1LCAyLCAxMjAsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAxMjYsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgCisgICAgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjM1LCAyNDQsIAorICAgIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAKKyAgICAyLCAyMTksIDExNCwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDExMiwgMjM1LCAyNDEsIDEwLCAxNDUsIDIsIDEyMCwgMjM1LCAKKyAgICAyNDEsIDEwLCAxNDUsIDIsIDEyNiwgMjM1LCAyNDEsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMzUsIDI0MSwgMTAsIDE0NSwgCisgICAgMiwgMjM3LCA2MSwgMjM1LCAyNDEsIDEwLCAxNDUsIDIsIDEyMCwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDgyLCAKKyAgICAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgODMsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjEwLCA4MiwgMTAsIAorICAgIDE0NSwgMiwgMjM3LCA2MSwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIxMCwgCisgICAgMTM2LCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDIxMCwgCisgICAgODIsIDEwLCAxNDUsIDIsIDExMiwgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTIwLCAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjYsIAorICAgIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA3NywgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAKKyAgICAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAyMTAsIDgzLCAyNCwgMjM2LCA3MiwgCisgICAgOTMsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMTAsIDgzLCAyNCwgMjM2LCA3MiwgOTMsIDIyMSwgMTY0LCAxMCwgMTQ1LCAyLCAKKyAgICAxMTIsIDI0NywgMjU1LCAxMCwgMTQ1LCAyLCAxMjAsIDI0NywgMjU1LCAxMCwgMTQ1LCAyLCAxMjYsIDI0NywgMjU1LCAxMCwgCisgICAgMTQ1LCAyLCAxMjYsIDI0OCwgMCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNDcsIDI1NSwgMTAsIAorICAgIDE0NSwgMiwgMjM3LCA2MSwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIzOCwgOTMsIAorICAgIDEwLCAxNDUsIDIsIDEyNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIzOCwgOTAsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMDMsIAorICAgIDczLCAyMzYsIDI0MiwgMjI0LCAxODAsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI0LCAKKyAgICAxNzgsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI0LCAxODEsIDYyLCAxMCwgMTQ1LCAyLCAKKyAgICAyMzYsIDIyOSwgMjAzLCA3MywgMjM2LCAyNDIsIDIyNCwgMTgxLCAyNTAsIDEwMywgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDIwMywgNzMsIDIzNiwgMjQyLCAyNTAsIDE3NywgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDIwMywgNzMsIDIzNiwgMjQyLCAKKyAgICAyMjgsIDEyNiwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDEyOCwgNjIsIDEwLCAxNDUsIAorICAgIDIsIDIxMCwgMTM2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxMjgsIDI1MCwgMTAzLCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgCisgICAgMjAzLCA3MywgMjM2LCAyNDIsIDIwMywgMTg1LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjAzLCA3MywgMjM2LCAyNDIsIAorICAgIDIwMywgMTg0LCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTQyLCAxMCwgMTQ1LCAyLCAKKyAgICAyMTksIDExNCwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTQxLCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjAzLCA3MywgCisgICAgMjM2LCAyNDIsIDIyOCwgMTQwLCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTQzLCAKKyAgICA2MiwgMTAsIDE0NSwgMiwgMTIwLCAyNTAsIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDEyNiwgMjUwLCAxODIsIDIwNiwgCisgICAgMTU1LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjUwLCAxODIsIDIwNiwgMTU1LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNTAsIAorICAgIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyNTAsIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDExMiwgCisgICAgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMTIwLCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAxMjYsIDI0OSwgODYsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyNDksIDg2LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMjQ5LCA4NywgMjAzLCA3MywgMTksIDEwLCAxNDUsIAorICAgIDIsIDIzNywgNjEsIDI0OSwgODYsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI0OSwgODcsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAKKyAgICAyLCAyMTksIDEyNywgMTAsIDE0NSwgMiwgMjE5LCAxMjgsIDEwLCAxNDUsIDIsIDExMiwgMjM4LCA4OSwgMTAsIDE0NSwgMiwgCisgICAgMTIwLCAyMzgsIDg5LCAxMCwgMTQ1LCAyLCAxMTIsIDIwNiwgNzUsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAxMjAsIDIwNiwgCisgICAgNzIsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyMDksIDk1LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAyMDYsIDc1LCAyMDMsIDczLCAyMzYsIDI0MiwgNjIsIDEwLCAxNDUsIDIsIDEyMCwgMjA2LCA3MiwgMjAzLCA3MywgMjM2LCAKKyAgICAyNDIsIDYyLCAxMCwgMTQ1LCAyLCAxMTIsIDIzOCwgMjI4LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTEyLCAyMTQsIDg4LCAKKyAgICAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgNDAsIDI1MCwgMTY4LCAxMTIsIDIwOSwgOTYsIDEwLCAxNDUsIDIsIDQwLCAyNTAsIAorICAgIDE2OCwgMTEyLCAyMTQsIDg3LCAxMCwgMTQ1LCAyLCAxMTIsIDIxNCwgODgsIDIzNSwgMjIsIDEwLCAxNDUsIDIsIDExMiwgCisgICAgMTY3LCAyMzUsIDIyLCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgMTEyLCAyMDYsIDc0LCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgCisgICAgMTIwLCAyMDYsIDcxLCAxMCwgMTQ1LCAyLCAyMzgsIDIwNywgMjM2LCAyMzUsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAyMzcsIAorICAgIDEwNCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNywgNjEsIDEwOCwgCisgICAgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMTAsIAorICAgIDEzNiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM4LCAyMzIsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTE0LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMjE0LCAyMTIsIDIsIDQwLCAyNTAsIDE2OCwgMjAwLCAyMzgsIAorICAgIDI0MCwgMjM5LCAxMCwgMjE0LCAyMTIsIDIsIDgzLCAyNDYsIDc5LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDI0NiwgCisgICAgNzksIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjA1LCA5NCwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyMTQsIDkzLCAKKyAgICAxMCwgMiwgMjUyLCA5MCwgMjQsIDIxOCwgOTAsIDIwNiwgMTU1LCAxMCwgMiwgMjUyLCA5MCwgMjQsIDIwOSwgMjE4LCAxMCwgCisgICAgMiwgMjUxLCAyMzYsIDI0LCAyMzgsIDkxLCAxMCwgMiwgMjQ5LCAxMTksIDI0LCAyNDEsIDAsIDIwNiwgMTU1LCAxMCwgMiwgCisgICAgMjQ5LCAxMDYsIDI0LCAyNTIsIDYsIDEwLCAyLCAyNDksIDEwNiwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjQ5LCAxMDYsIDI0LCAKKyAgICAxOTksIDExNCwgMTAsIDIsIDI0OCwgMzcsIDExOSwgMjQ4LCAzNywgMjQsIDIyMCwgMTYwLCAxMCwgMiwgMjQyLCA1OSwgMjQsIAorICAgIDIwNywgMCwgMTAsIDIsIDI0MiwgNDksIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDI0MSwgMzIsIDI0LCAyMjgsIDE1MywgMTAsIAorICAgIDIsIDI0MSwgMzIsIDI0LCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAyNDEsIDMwLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIzOSwgCisgICAgMTMyLCAyNCwgMjUxLCA1MywgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIAorICAgIDI1MCwgMTgyLCAyNTAsIDE1NiwgMjI1LCAyOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjQxLCAxOSwgMTAsIDIsIDIzOSwgCisgICAgMTMyLCAyNCwgMjM5LCAxMjUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAKKyAgICAyMzYsIDg5LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxNDQsIAorICAgIDIzNSwgMjgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAxNDQsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIzNCwgNzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMjM5LCAxMzIsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzOSwgMTMyLCAKKyAgICAyNCwgMjI1LCAyMzksIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNSwgMjQwLCA5MywgMjI3LCAzOCwgMTAsIDIsIDIzOSwgCisgICAgMTMyLCAyNCwgMjI1LCAxNDUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNSwgOTEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIAorICAgIDIyNSwgOTIsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI0LCAzMSwgOTMsIDIzNSwgMTM1LCAxMCwgMiwgCisgICAgMjM5LCAxMzIsIDI0LCAyMjIsIDEzNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjIyLCAyOCwgMTAsIDIsIDIzOSwgMTMyLCAKKyAgICAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTUsIAorICAgIDIwNCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjA5LCAxODMsIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjE2LCAxMzUsIDEwLCAyLCAKKyAgICAyMzgsIDExMCwgMjAwLCAxOTUsIDEwLCAyLCAyMzgsIDkyLCAyNDIsIDIyOCwgMjM4LCA5MSwgMTAsIDIsIDIzOCwgMTEsIAorICAgIDIxMCwgNDcsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMzQsIDc1LCAxMCwgMiwgMjM4LCAKKyAgICAxMSwgMjEwLCA0NywgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDE5NCwgMTAsIAorICAgIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjUsIDkzLCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyMiwgNzYsIAorICAgIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjIyLCAyOCwgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMDgsIAorICAgIDI0LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwOCwgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQ5LCAxMDUsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQxLCAzMiwgMjM1LCAyOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzksIDEzMiwgMjQsIDIyOCwgCisgICAgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOSwgMTMyLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzgsIDExMiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgNTAsIAorICAgIDkzLCAyNDEsIDc2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgNTAsIDkzLCAyMjAsIDM0LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzNCwgMjM2LCA5MywgNjIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI1LCAyNDAsIDkzLCAyMjcsIDM4LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyNSwgOTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI1LCA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDIyNCwgMzAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjIwLCAzNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjAsIDM1LCA5MywgMjM5LCAyOCwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMjAsIDM1LCA5MywgMjM1LCAxNjEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEwLCAyNSwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAxOTksIDE5LCAxMCwgMiwgMjM2LCA4MywgMjEyLCAyMjgsIDIxOSwgMTA5LCAyNDEsIDE1NCwgMTAsIDIsIDIzNSwgMjQzLCAKKyAgICAyNCwgNjYsIDEwLCAyLCAyMzUsIDEzNiwgMjQsIDIzNSwgMTM2LCAyNDIsIDIyOCwgMjM1LCAxMzUsIDEwLCAyLCAyMzUsIAorICAgIDQ5LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDQwLCA5MywgMjM1LCAxMzYsIDI0LCAyMDcsIDAsIDEwLCAKKyAgICAyLCAyMzQsIDIzNiwgMjA2LCAxNTYsIDIzNSwgMjgsIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjUwLCAxODIsIDExOSwgMjM0LCAKKyAgICA3NiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDgsIDM2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxNjEsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjAzLCAyMTQsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDE5OSwgNCwgMTE5LCAxOTksIDMsIDEwLCAyLCAyMjUsIDE0NiwgMTAsIDIsIDIyNSwgMTQ0LCAxMCwgCisgICAgMiwgMjI1LCAxNDMsIDEwLCAyLCAyMjUsIDE0MiwgMTAsIDIsIDIyNSwgMTQxLCAxMCwgMiwgMjI1LCAxNDAsIDEwLCAyLCAKKyAgICAyMjUsIDEzOSwgMTAsIDIsIDIyNSwgMTM4LCAxMTksIDIyNSwgMTM4LCAyMzUsIDI4LCAxMCwgMiwgMjI1LCAxMzcsIDEwLCAKKyAgICAyLCAyMjUsIDEzNiwgMTE5LCAyMjUsIDEzNSwgMTAsIDIsIDIyNSwgMTM0LCAxMCwgMiwgMjI1LCAxMzMsIDEwLCAyLCAyMjUsIAorICAgIDEzMiwgMTAsIDIsIDIyNSwgMTMxLCAxMCwgMiwgMjI1LCAxMzAsIDEwLCAyLCAyMjUsIDEyOSwgMTAsIDIsIDIyNSwgMTI4LCAKKyAgICAxMCwgMiwgMjI1LCAxMjcsIDEwLCAyLCAyMjUsIDEyNiwgMTAsIDIsIDIyNSwgMTI1LCAxMCwgMiwgMjI1LCAxMjQsIDEwLCAKKyAgICAyLCAyMjUsIDEyMywgMTAsIDIsIDIyNSwgMTIyLCAxMCwgMiwgMjI1LCAxMjEsIDEwLCAyLCAyMjUsIDEyMCwgMTAsIDIsIAorICAgIDIyNSwgMTE5LCAxMCwgMiwgMjI1LCAxMTgsIDEwLCAyLCAyMjUsIDExNywgMTAsIDIsIDIyNSwgMTE1LCAxMCwgMiwgMjI1LCAKKyAgICAxMTYsIDI0LCAyMzUsIDUwLCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNSwgMTE2LCAyNCwgCisgICAgMjE2LCAxMzYsIDkzLCAyMjQsIDM5LCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM2LCA5MywgCisgICAgMjI0LCAzOSwgMTAsIDIsIDIyNSwgMTE2LCAyNCwgMjA0LCA0OCwgOTMsIDI0OSwgMTM2LCAxMCwgMiwgMjI1LCAxMTQsIDEwLCAKKyAgICAyLCAyMjUsIDExMywgMTAsIDIsIDIyNSwgMTEyLCAxMCwgMiwgMjI1LCAxMTEsIDEwLCAyLCAyMjUsIDExMCwgMTAsIDIsIAorICAgIDIyNSwgMTA5LCAxMCwgMiwgMjI1LCAxMDgsIDEwLCAyLCAyMjUsIDEwNywgMTAsIDIsIDIyNSwgMTA2LCAxMCwgMiwgMjI1LCAKKyAgICAxMDUsIDEwLCAyLCAyMjUsIDEwMywgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIAorICAgIDI0OSwgMTE4LCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMzksIDEyNCwgMjM1LCAyOSwgMjM1LCAyOCwgMTAsIDIsIDIyNSwgCisgICAgMTA0LCAyNCwgMjI2LCAxMywgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMTk0LCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDYsIAorICAgIDIzMiwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA2LCAyMDEsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNCwgNDcsIDEwLCAyLCAKKyAgICAyMjUsIDEwNCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwMywgMjAxLCAxMCwgMiwgMjI1LCAxMDIsIAorICAgIDEwLCAyLCAyMjUsIDEwMCwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjM5LCAxMzUsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIzNiwgCisgICAgODksIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMjgsIDE1NCwgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxNiwgMTM2LCA5MywgCisgICAgMjE2LCAxMzYsIDkzLCAyMjQsIDM5LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTAsIDUwLCA5MywgMjI2LCAxNjMsIDEwLCAyLCAKKyAgICAyMjUsIDEwMSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIwMywgMjAxLCAxMCwgMiwgMjI1LCA5OCwgMTAsIAorICAgIDIsIDIyNSwgOTcsIDEwLCAyLCAyMjQsIDQxLCAyMzUsIDI5LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgCisgICAgMjQwLCAyNTUsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjE2LCAxMzUsIDEwLCAKKyAgICAyLCAyMjQsIDQxLCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjQsIDQxLCAyNCwgCisgICAgMjA3LCAwLCAxMCwgMiwgMjIxLCAyMTIsIDkzLCAxOTksIDExMywgMTAsIDIsIDIyMCwgMjUxLCAxMTksIDIyMCwgMjUxLCAKKyAgICAyNCwgMjM2LCA4OSwgMTAsIDIsIDIyMCwgMjUxLCAxMTksIDIyMCwgMjUxLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjQxLCAzMiwgMjM1LCAyOCwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIzNSwgMzIsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIzNCwgNzUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyNiwgCisgICAgMjM0LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjUsIDE0MSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjIyLCAxMzUsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDY2LCAxMCwgMiwgCisgICAgMjE5LCAxMTYsIDI0LCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMTIsIDUxLCAKKyAgICAyMzUsIDI5LCAyNCwgMTQ0LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIzOCwgMTc5LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIxMCwgCisgICAgNjYsIDI1MCwgMTU2LCAyMjUsIDI4LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNywgMCwgMTAsIDIsIDIxMCwgMTExLCAyMDYsIAorICAgIDE1NSwgMTAsIDIsIDIxMCwgNjYsIDExOSwgMjEwLCA2NSwgMTAsIDIsIDIxMCwgNjYsIDkzLCAyMzMsIDkyLCAxMCwgMiwgCisgICAgMjEwLCA2NiwgOTMsIDIyMCwgMTM3LCAxMCwgMiwgMjEwLCA2NiwgOTMsIDIxMiwgMCwgMTAsIDIsIDIwOSwgMjE5LCA5MywgCisgICAgMjM5LCAxMzIsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIwOSwgMjE5LCA5MywgMjM5LCAyOSwgMjQsIDI1MSwgODUsIDEwLCAyLCAKKyAgICAyMDksIDE4MywgMjQsIDIwNywgMCwgMTAsIDIsIDIwNywgMSwgOTMsIDIxMiwgNTAsIDEwLCAyLCAyMDQsIDIwNCwgMjQsIAorICAgIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjA0LCAyMDQsIDI0LCAxMjYsIDI0MCwgMjU1LCAxMCwgMiwgMjAzLCAyMTMsIAorICAgIDIyOCwgNDksIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDI0MSwgMjUzLCAxMCwgCisgICAgMiwgMjAzLCAyMDQsIDI0LCAyMjUsIDk5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjQsIDM5LCAxMCwgMiwgMTk5LCAxMTMsIAorICAgIDEwLCAyLCAxOTksIDQsIDExOSwgMTk5LCA0LCA5MywgMjEyLCAwLCAxMCwgMiwgMTk5LCAyLCAyNCwgMTI2LCAyNDEsIDAsIAorICAgIDIwNiwgMTU1LCAxNCwgNywgMjU1LCAxMzEsIDE0LCA3LCAyNTUsIDEzMCwgMTQsIDcsIDI1NSwgMTI5LCAxNCwgNywgMjU1LCAKKyAgICAxMjgsIDE0LCA3LCAyNTUsIDEyNywgMTQsIDcsIDI1NSwgMTI2LCAxNCwgNywgMjU1LCAxMjUsIDE0LCA3LCAyNTUsIDEyNCwgCisgICAgMTQsIDcsIDI1NSwgMTIzLCAxNCwgNywgMjU1LCAxMjIsIDE0LCA3LCAyNTUsIDEyMSwgMTQsIDcsIDI1NSwgMTIwLCAxNCwgCisgICAgNywgMjU1LCAxMTksIDE0LCA3LCAyNTUsIDExNywgMTQsIDcsIDI1NSwgMTE2LCAxNCwgNywgMjU1LCAxMTUsIDE0LCA3LCAKKyAgICAyNTUsIDExNCwgMTQsIDcsIDI1NSwgMTEzLCAxNCwgNywgMjU1LCAxMTIsIDE0LCA3LCAyNTUsIDExMSwgMTQsIDcsIDI1NSwgCisgICAgMTEwLCAxNCwgNywgMjU1LCAxMDksIDE0LCA3LCAyNTUsIDEwOCwgMTQsIDcsIDI1NSwgMTA3LCAxNCwgNywgMjU1LCAxMDYsIAorICAgIDE0LCA3LCAyNTUsIDEwNSwgMTQsIDcsIDI1NSwgMTA0LCAxNCwgNywgMjU1LCAxMDMsIDE0LCA3LCAyNTUsIDEwMiwgMTQsIAorICAgIDcsIDI1NSwgMTAxLCAxNCwgNywgMjU1LCAxMDAsIDE0LCA3LCAyNTUsIDk4LCAxNCwgNywgMjU1LCA5NywgMTQsIDcsIDI1NSwgCisgICAgOTUsIDE0LCA3LCAyNTUsIDk0LCAxNCwgNywgMjU1LCA5MywgMTQsIDcsIDI1NSwgOTIsIDE0LCA3LCAyNTUsIDkxLCAxNCwgCisgICAgNywgMjU1LCA5MCwgMTQsIDcsIDI1NSwgODksIDE0LCA3LCAyNTUsIDg4LCAxNCwgNywgMjU1LCA4NywgMTQsIDcsIDI1NSwgCisgICAgODYsIDE0LCA3LCAyNTUsIDg1LCAxNCwgNywgMjU1LCA4NCwgMTQsIDcsIDI1NSwgODIsIDE0LCA3LCAyNTUsIDgxLCAxNCwgCisgICAgNywgMjU1LCA4MCwgMTQsIDcsIDI1NSwgNzgsIDE0LCA3LCAyNTUsIDc3LCAxNCwgNywgMjU1LCA3NiwgMTQsIDcsIDI1NSwgCisgICAgNzUsIDE0LCA3LCAyNTUsIDc0LCAxNCwgNywgMjU1LCA3MywgMTQsIDcsIDI1NSwgNzIsIDE0LCA3LCAyNTUsIDcxLCAxNCwgCisgICAgNywgMjU1LCA2OCwgMTQsIDcsIDI1NSwgNjcsIDE0LCA3LCAyNTUsIDY2LCAxNCwgNywgMjU1LCA2NSwgMTQsIDcsIDI1NSwgCisgICAgNjQsIDE0LCA3LCAyNTUsIDYzLCAxNCwgNywgMjU1LCA2MiwgMTQsIDcsIDI1NSwgNjEsIDE0LCA3LCAyNTUsIDYwLCAxNCwgCisgICAgNywgMjU1LCA1OSwgMTQsIDcsIDI1NSwgNTgsIDE0LCA3LCAyNTUsIDU3LCAxNCwgNywgMjU1LCA1NiwgMTQsIDcsIDI1NSwgCisgICAgNTUsIDE0LCA3LCAyNTUsIDU0LCAxNCwgNywgMjU1LCA1MywgMTQsIDcsIDI1NSwgNTIsIDE0LCA3LCAyNTUsIDUxLCAxNCwgCisgICAgNywgMjU1LCA1MCwgMTQsIDcsIDI1NSwgNDksIDE0LCA3LCAyNTUsIDQ1LCAxNCwgNywgMjU1LCA0NCwgMTQsIDcsIDI1NSwgCisgICAgNDMsIDE0LCA3LCAyNTUsIDQyLCAxNCwgNywgMjUwLCAxMDEsIDE0LCA3LCAyNTAsIDk5LCAxNCwgNywgMjUwLCA5NywgMTQsIAorICAgIDcsIDI1MCwgOTUsIDE0LCA3LCAyNTAsIDkzLCAxNCwgNywgMjUwLCA5MiwgMTQsIDcsIDI1MCwgOTAsIDE0LCA3LCAyNTAsIAorICAgIDg4LCAxNCwgNywgMjUwLCA4NiwgMTQsIDcsIDI1MCwgODQsIDE0LCA3LCAyNDcsIDIxOSwgMTQsIDcsIDI0NywgMjE4LCAxNCwgCisgICAgNywgMjQ3LCAyMTcsIDE0LCA3LCAyNDcsIDIxNiwgMTQsIDcsIDI0NywgMjE1LCAxNCwgNywgMjQ3LCAyMTQsIDE0LCA3LCAKKyAgICAyNDcsIDIxMywgMTQsIDcsIDI0NywgMjEyLCAxNCwgNywgMjQ3LCAyMTEsIDE0LCA3LCAyNDcsIDIxMCwgMTQsIDcsIDI0NywgCisgICAgMjA5LCAxNCwgNywgMjQ3LCAyMDgsIDE0LCA3LCAyNDcsIDIwNywgMTQsIDcsIDI0NywgMjA2LCAxNCwgNywgMjQ3LCAyMDUsIAorICAgIDE0LCA3LCAyNDcsIDIwNCwgMTQsIDcsIDI0NywgMjAzLCAxNCwgNywgMjQ3LCAyMDIsIDE0LCA3LCAyNDcsIDIwMSwgMTQsIAorICAgIDcsIDI0NywgMjAwLCAxNCwgNywgMjQ3LCAxOTksIDE0LCA3LCAyNDcsIDE5OCwgMTQsIDcsIDI0NywgMTk3LCAxNCwgNywgCisgICAgMjQ3LCAxOTYsIDE0LCA3LCAyNDcsIDE5NSwgMTQsIDcsIDI0NywgMTk0LCAxNCwgNywgMjQ3LCAxOTMsIDE0LCA3LCAyNDcsIAorICAgIDE5MiwgMTQsIDcsIDI0MiwgMTUyLCAxNCwgNywgMjQyLCAxNTEsIDE0LCA3LCAyNDIsIDE1MCwgMTQsIDcsIDI0MiwgMTQ5LCAKKyAgICAxNCwgNywgMjQyLCAxNDgsIDE0LCA3LCAyNDIsIDE0NywgMTQsIDcsIDI0MiwgMTQ2LCAxNCwgNywgMjQyLCAxNDUsIDE0LCAKKyAgICA3LCAyNDIsIDE0NCwgMTQsIDcsIDI0MiwgMTQzLCAxNCwgNywgMjQyLCAxNDIsIDE0LCA3LCAyNDIsIDE0MSwgMTQsIDcsIAorICAgIDI0MiwgMTQwLCAxNCwgNywgMjQyLCAxMzksIDE0LCA3LCAyNDIsIDEzOCwgMTQsIDcsIDI0MiwgMTM3LCAxNCwgNywgMjQyLCAKKyAgICAxMzYsIDE0LCA3LCAyNDIsIDEzNSwgMTQsIDcsIDI0MiwgMTM0LCAxNCwgNywgMjQyLCAxMzMsIDE0LCA3LCAyNDIsIDEzMiwgCisgICAgMTQsIDcsIDI0MiwgMTMxLCAxNCwgNywgMjQyLCAxMzAsIDE0LCA3LCAyNDIsIDEyOSwgMTQsIDcsIDI0MiwgMTI4LCAxNCwgCisgICAgNywgMjQyLCAxMjcsIDE0LCA3LCAyNDIsIDEyNiwgMTQsIDcsIDI0MiwgMTI1LCAxNCwgNywgMjQyLCAxMjQsIDE0LCA3LCAKKyAgICAyNDIsIDEyMywgMTQsIDcsIDI0MiwgMTIyLCAxNCwgNywgMjQyLCAxMjEsIDE0LCA3LCAyNDIsIDEyMCwgMTQsIDcsIDI0MiwgCisgICAgMTE5LCAxNCwgNywgMjQyLCAxMTgsIDE0LCA3LCAyNDIsIDExNywgMTQsIDcsIDI0MiwgMTE2LCAxNCwgNywgMjQyLCAxMTUsIAorICAgIDE0LCA3LCAyNDIsIDExNCwgMTQsIDcsIDI0MiwgMTEzLCAxNCwgNywgMjQyLCAxMTIsIDE0LCA3LCAyNDIsIDExMSwgMTQsIAorICAgIDcsIDI0MiwgMTEwLCAxNCwgNywgMjQyLCAxMDksIDE0LCA3LCAyNDIsIDEwOCwgMTQsIDcsIDI0MiwgMTA3LCAxNCwgNywgCisgICAgMjQyLCAxMDYsIDE0LCA3LCAyNDIsIDEwNSwgMTQsIDcsIDI0MiwgMTA0LCAxNCwgNywgMjQyLCAxMDMsIDE0LCA3LCAyNDIsIAorICAgIDEwMiwgMTQsIDcsIDI0MiwgMTAxLCAxNCwgNywgMjQyLCAxMDAsIDE0LCA3LCAyNDIsIDk5LCAxNCwgNywgMjQyLCA5OCwgCisgICAgMTQsIDcsIDI0MiwgOTcsIDE0LCA3LCAyNDIsIDk2LCAxNCwgNywgMjQyLCA5NSwgMTQsIDcsIDI0MiwgOTQsIDE0LCA3LCAKKyAgICAyNDIsIDkzLCAxNCwgNywgMjQyLCA5MiwgMTQsIDcsIDI0MiwgOTEsIDE0LCA3LCAyNDIsIDkwLCAxNCwgNywgMjQyLCA4OSwgCisgICAgMTQsIDcsIDI0MiwgODgsIDE0LCA3LCAyNDIsIDg3LCAxNCwgNywgMjQyLCA4NiwgMTQsIDcsIDI0MiwgODUsIDE0LCA3LCAKKyAgICAyNDIsIDg0LCAxNCwgNywgMjQyLCA4MywgMTQsIDcsIDI0MiwgODIsIDE0LCA3LCAyNDIsIDgxLCAxNCwgNywgMjQyLCA4MCwgCisgICAgMTQsIDcsIDI0MiwgNzksIDE0LCA3LCAyNDIsIDc4LCAxNCwgNywgMjQyLCA3NywgMTQsIDcsIDI0MiwgNzYsIDE0LCA3LCAKKyAgICAyNDIsIDc1LCAxNCwgNywgMjQyLCA3NCwgMTQsIDcsIDI0MiwgNzMsIDE0LCA3LCAyNDIsIDcyLCAxNCwgNywgMjQyLCA3MSwgCisgICAgMTQsIDcsIDI0MiwgNzAsIDE0LCA3LCAyNDIsIDY5LCAxNCwgNywgMjQyLCA2OCwgMTQsIDcsIDI0MiwgNjcsIDE0LCA3LCAKKyAgICAyNDIsIDY2LCAxNCwgNywgMjQyLCA2NSwgMTQsIDcsIDI0MiwgNjQsIDE0LCA3LCAyNDIsIDYzLCAxNCwgNywgMjQyLCA2MiwgCisgICAgMTQsIDcsIDI0MiwgNjEsIDE0LCA3LCAyMzksIDczLCAxNCwgNywgMjM5LCA3MiwgMTQsIDcsIDIzOSwgNzEsIDE0LCA3LCAKKyAgICAyMzksIDcwLCAxNCwgNywgMjM5LCA2OSwgMTQsIDcsIDIzOSwgNjgsIDE0LCA3LCAyMzksIDY3LCAxNCwgNywgMjM5LCA2NiwgCisgICAgMTQsIDcsIDIzOSwgNjUsIDE0LCA3LCAyMzksIDY0LCAxNCwgNywgMjM5LCA2MywgMTQsIDcsIDIzOSwgNjIsIDE0LCA3LCAKKyAgICAyMzksIDYxLCAxNCwgNywgMjM5LCA2MCwgMTQsIDcsIDIzOSwgNTksIDE0LCA3LCAyMzksIDU4LCAxNCwgNywgMjM5LCA1NywgCisgICAgMTQsIDcsIDIzOSwgNTYsIDE0LCA3LCAyMzksIDU1LCAxNCwgNywgMjM5LCA1NCwgMTQsIDcsIDIzOSwgNTMsIDE0LCA3LCAKKyAgICAyMzksIDUyLCAxNCwgNywgMjM5LCA1MSwgMTQsIDcsIDIzOSwgNTAsIDE0LCA3LCAyMzksIDQ5LCAxNCwgNywgMjM5LCA0OCwgCisgICAgMTQsIDcsIDIzOSwgNDcsIDE0LCA3LCAyMzksIDQ2LCAxNCwgNywgMjM5LCA0NSwgMTQsIDcsIDIzOSwgNDQsIDE0LCA3LCAKKyAgICAyMzksIDQzLCAxNCwgNywgMjM5LCA0MiwgMTQsIDcsIDIzOSwgNDEsIDE0LCA3LCAyMzksIDQwLCAxNCwgNywgMjM5LCAzOSwgCisgICAgMTQsIDcsIDIzOSwgMzgsIDE0LCA3LCAyMzksIDM3LCAxNCwgNywgMjM5LCAzNiwgMTQsIDcsIDIzOSwgMzUsIDE0LCA3LCAKKyAgICAyMzksIDM0LCAxNCwgNywgMjM5LCAzMywgMTQsIDcsIDIzOSwgMzIsIDE0LCA3LCAyMzksIDMxLCAxNCwgNywgMjM5LCAzMCwgCisgICAgMTQsIDcsIDIzOCwgNCwgMTQsIDcsIDIzOCwgMywgMTQsIDcsIDIzOCwgMiwgMTQsIDcsIDIzOCwgMSwgMTQsIDcsIDIzOCwgCisgICAgMCwgMTQsIDcsIDIzNywgMjU1LCAxNCwgNywgMjM3LCAyNTQsIDE0LCA3LCAyMzcsIDI1MywgMTQsIDcsIDIzNywgMjUyLCAKKyAgICAxNCwgNywgMjM3LCAyNTEsIDE0LCA3LCAyMzcsIDI1MCwgMTQsIDcsIDIzNywgMjQ5LCAxNCwgNywgMjM3LCAyNDgsIDE0LCAKKyAgICA3LCAyMzcsIDI0NywgMTQsIDcsIDIzNywgMjQ2LCAxNCwgNywgMjM3LCAyNDUsIDE0LCA3LCAyMzcsIDI0NCwgMTQsIDcsIAorICAgIDIzNywgMjQzLCAxNCwgNywgMjM3LCAyNDIsIDE0LCA3LCAyMzcsIDI0MSwgMTQsIDcsIDIzNywgMjQwLCAxNCwgNywgMjM3LCAKKyAgICAyMzksIDE0LCA3LCAyMzcsIDIzOCwgMTQsIDcsIDIzNywgMjM3LCAxNCwgNywgMjM3LCAyMzYsIDE0LCA3LCAyMzcsIDIzNSwgCisgICAgMTQsIDcsIDIzNywgMjM0LCAxNCwgNywgMjM3LCAyMzMsIDE0LCA3LCAyMzcsIDIzMiwgMTQsIDcsIDIzNywgMjMxLCAxNCwgCisgICAgNywgMjM3LCAyMzAsIDE0LCA3LCAyMzcsIDIyOSwgMTQsIDcsIDIzNywgMjI4LCAxNCwgNywgMjM3LCAyMjcsIDE0LCA3LCAKKyAgICAyMzcsIDIyNiwgMTQsIDcsIDIzNywgMjI1LCAxNCwgNywgMjM3LCAyMjQsIDE0LCA3LCAyMzcsIDIyMywgMTQsIDcsIDIzNywgCisgICAgMjIyLCAxNCwgNywgMjM3LCAyMjEsIDE0LCA3LCAyMzcsIDIyMCwgMTQsIDcsIDIzNywgMjE5LCAxNCwgNywgMjM3LCAyMTgsIAorICAgIDE0LCA3LCAyMzcsIDIxNywgMTQsIDcsIDIzNywgMjE2LCAxNCwgNywgMjM3LCAyMTUsIDE0LCA3LCAyMzcsIDIxNCwgMTQsIAorICAgIDcsIDIzNywgMjEzLCAxNCwgNywgMjM3LCAyMTIsIDE0LCA3LCAyMzcsIDIxMSwgMTQsIDcsIDIzNywgMjEwLCAxNCwgNywgCisgICAgMjM3LCAyMDksIDE0LCA3LCAyMzcsIDIwOCwgMTQsIDcsIDIzNywgMjA3LCAxNCwgNywgMjM3LCAyMDYsIDE0LCA3LCAyMzcsIAorICAgIDIwNSwgMTQsIDcsIDIzNywgMjA0LCAxNCwgNywgMjM3LCAyMDMsIDE0LCA3LCAyMzcsIDIwMiwgMTQsIDcsIDIzNywgMjAxLCAKKyAgICAxNCwgNywgMjM3LCAyMDAsIDE0LCA3LCAyMzcsIDE5OSwgMTQsIDcsIDIzNywgMTk4LCAxNCwgNywgMjM3LCAxOTcsIDE0LCAKKyAgICA3LCAyMzcsIDE5NiwgMTQsIDcsIDIzNiwgMTU1LCAxNCwgNywgMjM2LCAxNTQsIDE0LCA3LCAyMzYsIDE1MywgMTQsIDcsIAorICAgIDIzNiwgMTUyLCAxNCwgNywgMjM2LCAxNTEsIDE0LCA3LCAyMzYsIDE1MCwgMTQsIDcsIDIzNiwgMTQ5LCAxNCwgNywgMjM2LCAKKyAgICAxNDgsIDE0LCA3LCAyMzYsIDE0NywgMTQsIDcsIDIzNiwgMTQ2LCAxNCwgNywgMjM2LCAxNDUsIDE0LCA3LCAyMzYsIDE0NCwgCisgICAgMTQsIDcsIDIzNiwgMTQzLCAxNCwgNywgMjM2LCAxNDIsIDE0LCA3LCAyMzYsIDE0MSwgMTQsIDcsIDIzNiwgMTQwLCAxNCwgCisgICAgNywgMjM2LCAxMzksIDE0LCA3LCAyMzYsIDEzOCwgMTQsIDcsIDIzNiwgMTM3LCAxNCwgNywgMjM2LCAxMzYsIDE0LCA3LCAKKyAgICAyMzYsIDEzNSwgMTQsIDcsIDIzNiwgMTM0LCAxNCwgNywgMjM2LCAxMzMsIDE0LCA3LCAyMzYsIDEzMiwgMTQsIDcsIDIzNiwgCisgICAgMTMxLCAxNCwgNywgMjM2LCAxMzAsIDE0LCA3LCAyMzYsIDEyOSwgMTQsIDcsIDIzNiwgMTI4LCAxNCwgNywgMjM2LCAxMjcsIAorICAgIDE0LCA3LCAyMzYsIDEyNiwgMTQsIDcsIDIzNiwgMTI1LCAxNCwgNywgMjM2LCAxMjQsIDE0LCA3LCAyMzYsIDEyMywgMTQsIAorICAgIDcsIDIzNiwgMTIyLCAxNCwgNywgMjM2LCAxMjEsIDE0LCA3LCAyMzYsIDEyMCwgMTQsIDcsIDIzNiwgMTE5LCAxNCwgNywgCisgICAgMjM2LCAxMTgsIDE0LCA3LCAyMzYsIDExNywgMTQsIDcsIDIzNiwgMTE2LCAxNCwgNywgMjM2LCAxMTUsIDE0LCA3LCAyMzYsIAorICAgIDExNCwgMTQsIDcsIDIzNiwgMTEzLCAxNCwgNywgMjM2LCAxMTIsIDE0LCA3LCAyMzYsIDExMSwgMTQsIDcsIDIzNiwgMTEwLCAKKyAgICAxNCwgNywgMjM2LCAxMDksIDE0LCA3LCAyMzYsIDEwOCwgMTQsIDcsIDIzNiwgMTA3LCAxNCwgNywgMjM2LCAxMDYsIDE0LCAKKyAgICA3LCAyMzYsIDEwNSwgMTQsIDcsIDIzNiwgMTA0LCAxNCwgNywgMjM2LCAxMDMsIDE0LCA3LCAyMzYsIDEwMiwgMTQsIDcsIAorICAgIDIzNiwgMTAxLCAxNCwgNywgMjM2LCAxMDAsIDE0LCA3LCAyMzYsIDk5LCAxNCwgNywgMjM2LCA5OCwgMTQsIDcsIDIzNiwgCisgICAgOTcsIDE0LCA3LCAyMzYsIDk2LCAxNCwgNywgMjM2LCA5NSwgMTQsIDcsIDIzNiwgOTQsIDE0LCA3LCAyMzYsIDkzLCAxNCwgCisgICAgNywgMjM2LCA5MiwgMTQsIDcsIDIzNCwgMjQ1LCAxNCwgNywgMjM0LCAyNDQsIDE0LCA3LCAyMzQsIDI0MywgMTQsIDcsIAorICAgIDIzNCwgMjQyLCAxNCwgNywgMjM0LCAyNDEsIDE0LCA3LCAyMzQsIDI0MCwgMTQsIDcsIDIzNCwgMjM5LCAxNCwgNywgMjM0LCAKKyAgICAyMzgsIDE0LCA3LCAyMzQsIDIzNywgMTQsIDcsIDIzMywgMywgMTQsIDcsIDIzMywgMiwgMTQsIDcsIDIzMywgMSwgMTQsIDcsIAorICAgIDIzMywgMCwgMTQsIDcsIDIzMiwgMjU1LCAxNCwgNywgMjMyLCAyNTQsIDE0LCA3LCAyMzIsIDI1MywgMTQsIDcsIDIzMiwgCisgICAgMjUyLCAxNCwgNywgMjMyLCAyNTEsIDE0LCA3LCAyMzIsIDI1MCwgMTQsIDcsIDIzMiwgMjQ5LCAxNCwgNywgMjMyLCAyNDgsIAorICAgIDE0LCA3LCAyMzIsIDI0NywgMTQsIDcsIDIzMiwgMjQ2LCAxNCwgNywgMjMyLCAyNDUsIDE0LCA3LCAyMzIsIDI0NCwgMTQsIAorICAgIDcsIDIzMiwgMjQzLCAxNCwgNywgMjMyLCAyNDIsIDE0LCA3LCAyMzIsIDI0MSwgMTQsIDcsIDIyNywgMTE3LCAxNCwgNywgCisgICAgMjI3LCAxMTYsIDE0LCA3LCAyMjcsIDExNSwgMTQsIDcsIDIyNywgMTE0LCAxNCwgNywgMjI3LCAxMTMsIDE0LCA3LCAyMjcsIAorICAgIDExMiwgMTQsIDcsIDIyNywgMTExLCAxNCwgNywgMjI3LCAxMTAsIDE0LCA3LCAyMjUsIDE5MCwgMTQsIDcsIDIyNSwgMTg5LCAKKyAgICAxNCwgNywgMjI1LCAxODgsIDE0LCA3LCAyMjUsIDE4NywgMTQsIDcsIDIyNSwgMTg2LCAxNCwgNywgMjI1LCAxODUsIDE0LCAKKyAgICA3LCAyMjUsIDE4NCwgMTQsIDcsIDIyNSwgMTgzLCAxNCwgNywgMjI1LCAxODIsIDE0LCA3LCAyMjUsIDE4MSwgMTQsIDcsIAorICAgIDIyMywgMjQxLCAxNCwgNywgMjIzLCAyNDAsIDE0LCA3LCAyMjMsIDIzOSwgMTQsIDcsIDIyMywgMjM3LCAxNCwgNywgMjIzLCAKKyAgICAyMzUsIDE0LCA3LCAyMjMsIDIzNCwgMTQsIDcsIDIyMywgMjMyLCAxNCwgNywgMjIzLCAyMzAsIDE0LCA3LCAyMjMsIDIyOCwgCisgICAgMTQsIDcsIDIyMywgMjI2LCAxNCwgNywgMjIzLCAyMjQsIDE0LCA3LCAyMjMsIDIyMiwgMTQsIDcsIDIyMywgMjIwLCAxNCwgCisgICAgNywgMjIzLCAyMTksIDE0LCA3LCAyMjMsIDIxNywgMTQsIDcsIDIyMywgMjE1LCAxNCwgNywgMjIzLCAyMTQsIDE0LCA3LCAKKyAgICAyMjMsIDIxMywgMTQsIDcsIDIyMywgMjEyLCAxNCwgNywgMjIzLCAyMTEsIDE0LCA3LCAyMjMsIDIxMCwgMTQsIDcsIDIyMywgCisgICAgMjA5LCAxNCwgNywgMjIzLCAyMDgsIDE0LCA3LCAyMjMsIDIwNywgMTQsIDcsIDIyMywgMjA1LCAxNCwgNywgMjIzLCAyMDMsIAorICAgIDE0LCA3LCAyMjMsIDIwMSwgMTQsIDcsIDIyMywgMjAwLCAxNCwgNywgMjIzLCAxOTgsIDE0LCA3LCAyMjMsIDE5NywgMTQsIAorICAgIDcsIDIyMywgMTk1LCAxNCwgNywgMjIzLCAxOTQsIDE0LCA3LCAyMjMsIDE5MiwgMTQsIDcsIDIyMywgMTkwLCAxNCwgNywgCisgICAgMjIzLCAxODgsIDE0LCA3LCAyMjMsIDE4NiwgMTQsIDcsIDIyMywgMTg0LCAxNCwgNywgMjIzLCAxODMsIDE0LCA3LCAyMjMsIAorICAgIDE4MSwgMTQsIDcsIDIyMywgMTc5LCAxNCwgNywgMjIzLCAxNzgsIDE0LCA3LCAyMjMsIDE3NiwgMTQsIDcsIDIyMywgMTc0LCAKKyAgICAxNCwgNywgMjIzLCAxNzIsIDE0LCA3LCAyMjMsIDE3MCwgMTQsIDcsIDIyMywgMTY5LCAxNCwgNywgMjIzLCAxNjcsIDE0LCAKKyAgICA3LCAyMjMsIDE2NSwgMTQsIDcsIDIyMywgMTYzLCAxNCwgNywgMjIzLCAxNjIsIDE0LCA3LCAyMjMsIDE2MCwgMTQsIDcsIAorICAgIDIyMywgMTU4LCAxNCwgNywgMjIzLCAxNTcsIDE0LCA3LCAyMjMsIDE1NiwgMTQsIDcsIDIyMywgMTU0LCAxNCwgNywgMjIzLCAKKyAgICAxNTIsIDE0LCA3LCAyMjMsIDE1MCwgMTQsIDcsIDIyMywgMTQ4LCAxNCwgNywgMjIzLCAxNDYsIDE0LCA3LCAyMjMsIDE0NCwgCisgICAgMTQsIDcsIDIyMywgMTQyLCAxNCwgNywgMjIzLCAxNDEsIDE0LCA3LCAyMjMsIDEzOSwgMTQsIDcsIDIyMywgMTM3LCAxNCwgCisgICAgNywgMjIzLCAxMzUsIDE0LCA3LCAyMjMsIDEzMywgMTQsIDcsIDIyMCwgMjExLCAxNCwgNywgMjIwLCAyMTAsIDE0LCA3LCAKKyAgICAyMjAsIDIwOSwgMTQsIDcsIDIyMCwgMjA4LCAxNCwgNywgMjIwLCAyMDcsIDE0LCA3LCAyMjAsIDIwNiwgMTQsIDcsIDIyMCwgCisgICAgMjA1LCAxNCwgNywgMjIwLCAyMDQsIDE0LCA3LCAyMjAsIDIwMywgMTQsIDcsIDIyMCwgMjAyLCAxNCwgNywgMjIwLCAyMDEsIAorICAgIDE0LCA3LCAyMjAsIDIwMCwgMTQsIDcsIDIyMCwgMTk5LCAxNCwgNywgMjIwLCAxOTgsIDE0LCA3LCAyMjAsIDE5NywgMTQsIAorICAgIDcsIDIyMCwgMTk2LCAxNCwgNywgMjIwLCAxOTUsIDE0LCA3LCAyMjAsIDE5NCwgMTQsIDcsIDIyMCwgMTkzLCAxNCwgNywgCisgICAgMjIwLCAxOTIsIDE0LCA3LCAyMjAsIDE5MSwgMTQsIDcsIDIyMCwgMTkwLCAxNCwgNywgMjIwLCAxODksIDE0LCA3LCAyMjAsIAorICAgIDE4OCwgMTQsIDcsIDIyMCwgMTg3LCAxNCwgNywgMjIwLCAxODYsIDE0LCA3LCAyMjAsIDE4NSwgMTQsIDcsIDIyMCwgMTg0LCAKKyAgICAxNCwgNywgMjIwLCAxODMsIDE0LCA3LCAyMjAsIDE4MiwgMTQsIDcsIDIyMCwgMTgxLCAxNCwgNywgMjIwLCAxODAsIDE0LCAKKyAgICA3LCAyMjAsIDE3OSwgMTQsIDcsIDIyMCwgMTc4LCAxNCwgNywgMjIwLCAxNzcsIDE0LCA3LCAyMjAsIDE3NiwgMTQsIDcsIAorICAgIDIyMCwgMTc1LCAxNCwgNywgMjIwLCAxNzQsIDE0LCA3LCAyMjAsIDE3MywgMTQsIDcsIDIyMCwgMTcyLCAxNCwgNywgMjIwLCAKKyAgICAxNzEsIDE0LCA3LCAyMjAsIDE3MCwgMTQsIDcsIDIyMCwgMTY5LCAxNCwgNywgMjIwLCAxNjgsIDE0LCA3LCAyMjAsIDE2NywgCisgICAgMTQsIDcsIDIyMCwgMTY2LCAxNCwgNywgMjIwLCAxNjUsIDE0LCA3LCAyMjAsIDE2NCwgMTQsIDcsIDIyMCwgMTYzLCAxNCwgCisgICAgNywgMjE5LCA0NiwgMTQsIDcsIDIxOSwgNDUsIDE0LCA3LCAyMTksIDQ0LCAxNCwgNywgMjE5LCA0MywgMTQsIDcsIDIxOSwgCisgICAgNDIsIDE0LCA3LCAyMTksIDQxLCAxNCwgNywgMjE5LCA0MCwgMTQsIDcsIDIxOSwgMzksIDE0LCA3LCAyMTksIDM4LCAxNCwgCisgICAgNywgMjE5LCAzNywgMTQsIDcsIDIxOSwgMzYsIDE0LCA3LCAyMTksIDM1LCAxNCwgNywgMjE5LCAzNCwgMTQsIDcsIDIxOSwgCisgICAgMzMsIDE0LCA3LCAyMTksIDMyLCAxNCwgNywgMjE5LCAzMSwgMTQsIDcsIDIxOSwgMzAsIDE0LCA3LCAyMTksIDI5LCAxNCwgCisgICAgNywgMjE5LCAyOCwgMTQsIDcsIDIxOSwgMjcsIDE0LCA3LCAyMTksIDI2LCAxNCwgNywgMjE5LCAyNSwgMTQsIDcsIDIxOCwgCisgICAgMTMyLCAxNCwgNywgMjE4LCAxMzEsIDE0LCA3LCAyMTgsIDEzMCwgMTQsIDcsIDIxOCwgMTI5LCAxNCwgNywgMjE4LCAxMjgsIAorICAgIDE0LCA3LCAyMTgsIDEyNywgMTQsIDcsIDIxOCwgMTI2LCAxNCwgNywgMjE4LCAxMjUsIDE0LCA3LCAyMTgsIDEyNCwgMTQsIAorICAgIDcsIDIxOCwgMTIzLCAxNCwgNywgMjE4LCAxMjIsIDE0LCA3LCAyMTgsIDEyMSwgMTQsIDcsIDIxOCwgMTIwLCAxNCwgNywgCisgICAgMjE4LCAxMTksIDE0LCA3LCAyMTgsIDExOCwgMTQsIDcsIDIxOCwgMTE3LCAxNCwgNywgMjE4LCAxMTYsIDE0LCA3LCAyMTgsIAorICAgIDExNSwgMTQsIDcsIDIxOCwgMTE0LCAxNCwgNywgMjE4LCAxMTMsIDE0LCA3LCAyMTgsIDExMiwgMTQsIDcsIDIxOCwgMTExLCAKKyAgICAxNCwgNywgMjE4LCAxMTAsIDE0LCA3LCAyMTgsIDEwOSwgMTQsIDcsIDIxOCwgMTA4LCAxNCwgNywgMjE4LCAxMDcsIDE0LCAKKyAgICA3LCAyMTcsIDIyMiwgMTQsIDcsIDIxNywgMjIxLCAxNCwgNywgMjE3LCAyMjAsIDE0LCA3LCAyMTcsIDIxOSwgMTQsIDcsIAorICAgIDIxNywgMjE4LCAxNCwgNywgMjE3LCAyMTcsIDE0LCA3LCAyMTcsIDIxNiwgMTQsIDcsIDIxNywgMjE1LCAxNCwgNywgMjE3LCAKKyAgICAyMTQsIDE0LCA3LCAyMTcsIDIxMywgMTQsIDcsIDIxNywgMjEyLCAxNCwgNywgMjE3LCAyMTEsIDE0LCA3LCAyMTcsIDIxMCwgCisgICAgMTQsIDcsIDIxNywgMjA5LCAxNCwgNywgMjE3LCAyMDgsIDE0LCA3LCAyMTcsIDIwNywgMTQsIDcsIDIxNywgMjA2LCAxNCwgCisgICAgNywgMjE3LCAyMDUsIDE0LCA3LCAyMTcsIDIwNCwgMTQsIDcsIDIxNywgMjAzLCAxNCwgNywgMjE3LCAyMDIsIDE0LCA3LCAKKyAgICAyMTcsIDIwMSwgMTQsIDcsIDIxNywgMjAwLCAxNCwgNywgMjE3LCAxOTksIDE0LCA3LCAyMTcsIDE5OCwgMTQsIDcsIDIxNywgCisgICAgMTk3LCAxNCwgNywgMjE3LCAxOTYsIDE0LCA3LCAyMTcsIDE5NSwgMTQsIDcsIDIxNywgMTk0LCAxNCwgNywgMjE3LCAxOTMsIAorICAgIDE0LCA3LCAyMTcsIDE5MiwgMTQsIDcsIDIxNywgMTkxLCAxNCwgNywgMjE3LCAxOTAsIDE0LCA3LCAyMTcsIDE4OSwgMTQsIAorICAgIDcsIDIxNywgMTg4LCAxNCwgNywgMjE3LCAxODcsIDE0LCA3LCAyMTcsIDE4NiwgMTQsIDcsIDIxNywgMTg1LCAxNCwgNywgCisgICAgMjE3LCAxODQsIDE0LCA3LCAyMTcsIDE4MywgMTQsIDcsIDIxNywgMTgyLCAxNCwgNywgMjE3LCAxODEsIDE0LCA3LCAyMTcsIAorICAgIDE4MCwgMTQsIDcsIDIxNywgMTc5LCAxNCwgNywgMjE3LCAxNzgsIDE0LCA3LCAyMTcsIDE3NywgMTQsIDcsIDIxNywgMTc2LCAKKyAgICAxNCwgNywgMjE3LCAxNzUsIDE0LCA3LCAyMTcsIDE3NCwgMTQsIDcsIDIxNywgMTczLCAxNCwgNywgMjE3LCAxNzIsIDE0LCAKKyAgICA3LCAyMTcsIDE3MSwgMTQsIDcsIDIxNywgMTcwLCAxNCwgNywgMjE3LCAxNjksIDE0LCA3LCAyMTcsIDE2OCwgMTQsIDcsIAorICAgIDIxNywgMTY3LCAxNCwgNywgMjE3LCAxNjYsIDE0LCA3LCAyMTcsIDE2NSwgMTQsIDcsIDIxNywgMTY0LCAxNCwgNywgMjE3LCAKKyAgICAxNjMsIDE0LCA3LCAyMTcsIDE2MiwgMTQsIDcsIDIxNywgMTYxLCAxNCwgNywgMjE3LCAxNjAsIDE0LCA3LCAyMTcsIDE1OSwgCisgICAgMTQsIDcsIDIxNywgMTU4LCAxNCwgNywgMjE3LCAxNTcsIDE0LCA3LCAyMTcsIDE1NiwgMTQsIDcsIDIxNywgMTU1LCAxNCwgCisgICAgNywgMjE3LCAxNTQsIDE0LCA3LCAyMTcsIDE1MywgMTQsIDcsIDIxNywgMTUyLCAxNCwgNywgMjE3LCAxNTEsIDE0LCA3LCAKKyAgICAyMTcsIDE1MCwgMTQsIDcsIDIxNywgMTQ5LCAxNCwgNywgMjE3LCAxNDgsIDE0LCA3LCAyMTYsIDIyNSwgMTQsIDcsIDIxNiwgCisgICAgMjI0LCAxNCwgNywgMjE2LCAyMjMsIDE0LCA3LCAyMTYsIDIyMiwgMTQsIDcsIDIxNiwgMjIxLCAxNCwgNywgMjE2LCAyMjAsIAorICAgIDE0LCA3LCAyMTYsIDIxOSwgMTQsIDcsIDIxNiwgMjE4LCAxNCwgNywgMjE2LCAyMTcsIDE0LCA3LCAyMTYsIDIxNiwgMTQsIAorICAgIDcsIDIxNiwgMjE1LCAxNCwgNywgMjE2LCAyMTQsIDE0LCA3LCAyMTYsIDIxMywgMTQsIDcsIDIxNCwgMTY2LCAxNCwgNywgCisgICAgMjE0LCAxNjUsIDE0LCA3LCAyMTQsIDE2NCwgMTQsIDcsIDIxNCwgMTYzLCAxNCwgNywgMjE0LCAxNjIsIDE0LCA3LCAyMTQsIAorICAgIDE2MSwgMTQsIDcsIDIxNCwgMTYwLCAxNCwgNywgMjE0LCAzMSwgMTQsIDcsIDIxNCwgMzAsIDE0LCA3LCAyMTQsIDI5LCAxNCwgCisgICAgNywgMjE0LCAyOCwgMTQsIDcsIDIxNCwgMjcsIDE0LCA3LCAyMTQsIDI2LCAxNCwgNywgMjE0LCAyNSwgMTQsIDcsIDIxNCwgCisgICAgMjQsIDE0LCA3LCAyMTQsIDIzLCAxNCwgNywgMjE0LCAyMiwgMTQsIDcsIDIxNCwgMjEsIDE0LCA3LCAyMTQsIDIwLCAxNCwgCisgICAgNywgMjE0LCAxOSwgMTQsIDcsIDIxNCwgMTgsIDE0LCA3LCAyMTQsIDE3LCAxNCwgNywgMjE0LCAxNiwgMTQsIDcsIDIxNCwgCisgICAgMTUsIDE0LCA3LCAyMTQsIDE0LCAxNCwgNywgMjE0LCAxMywgMTQsIDcsIDIxNCwgMTIsIDE0LCA3LCAyMTQsIDExLCAxNCwgCisgICAgNywgMjE0LCAxMCwgMTQsIDcsIDIxNCwgOSwgMTQsIDcsIDIxNCwgOCwgMTQsIDcsIDIxNCwgNywgMTQsIDcsIDIxNCwgNiwgCisgICAgMTQsIDcsIDIxNCwgNSwgMTQsIDcsIDIxNCwgNCwgMTQsIDcsIDIxNCwgMywgMTQsIDcsIDIxNCwgMiwgMTQsIDcsIDIxNCwgCisgICAgMSwgMTQsIDcsIDIxNCwgMCwgMTQsIDcsIDIxMywgMjU1LCAxNCwgNywgMjEzLCAyNTQsIDE0LCA3LCAyMTIsIDExOSwgMTQsIAorICAgIDcsIDIxMiwgMTE4LCAxNCwgNywgMjEyLCAxMTcsIDE0LCA3LCAyMTIsIDExNiwgMTQsIDcsIDIxMiwgMTE1LCAxNCwgNywgCisgICAgMjEyLCAxMTQsIDE0LCA3LCAyMTIsIDExMywgMTQsIDcsIDIxMiwgMTEyLCAxNCwgNywgMjEyLCAxMTEsIDE0LCA3LCAyMTIsIAorICAgIDExMCwgMTQsIDcsIDIxMiwgMTA5LCAxNCwgNywgMjEyLCAxMDgsIDE0LCA3LCAyMTIsIDEwNywgMTQsIDcsIDIxMiwgMTA2LCAKKyAgICAxNCwgNywgMjEyLCAxMDUsIDE0LCA3LCAyMTIsIDEwNCwgMTQsIDcsIDIxMiwgMTAzLCAxNCwgNywgMjEyLCAxMDIsIDE0LCAKKyAgICA3LCAyMTIsIDEwMSwgMTQsIDcsIDIxMiwgMTAwLCAxNCwgNywgMjEyLCA5OSwgMTQsIDcsIDIxMiwgOTgsIDE0LCA3LCAyMTIsIAorICAgIDk3LCAxNCwgNywgMjEyLCA5NiwgMTQsIDcsIDIxMiwgOTUsIDE0LCA3LCAyMTIsIDk0LCAxNCwgNywgMjEyLCA5MywgMTQsIAorICAgIDcsIDIxMiwgOTIsIDE0LCA3LCAyMTIsIDkxLCAxNCwgNywgMjEyLCA5MCwgMTQsIDcsIDIxMiwgODksIDE0LCA3LCAyMTIsIAorICAgIDg4LCAxNCwgNywgMjEyLCA4NywgMTQsIDcsIDIxMiwgODYsIDE0LCA3LCAyMTIsIDg1LCAxNCwgNywgMjEyLCA4NCwgMTQsIAorICAgIDcsIDIxMiwgODMsIDE0LCA3LCAyMTIsIDgyLCAxNCwgNywgMjEyLCA4MSwgMTQsIDcsIDIxMiwgODAsIDE0LCA3LCAyMTIsIAorICAgIDc5LCAxNCwgNywgMjEyLCA3OCwgMTQsIDcsIDIxMiwgNzcsIDE0LCA3LCAyMTIsIDc2LCAxNCwgNywgMjEyLCA3NSwgMTQsIAorICAgIDcsIDIxMiwgNzQsIDE0LCA3LCAyMTIsIDczLCAxNCwgNywgMjEyLCA3MiwgMTQsIDcsIDIxMiwgNzEsIDE0LCA3LCAyMTIsIAorICAgIDcwLCAxNCwgNywgMjEyLCA2OSwgMTQsIDcsIDIxMiwgNjgsIDE0LCA3LCAyMTIsIDY3LCAxNCwgNywgMjEyLCA2NiwgMTQsIAorICAgIDcsIDIwNywgODEsIDE0LCA3LCAyMDcsIDgwLCAxNCwgNywgMjA3LCA3OSwgMTQsIDcsIDIwNywgNzgsIDE0LCA3LCAyMDcsIAorICAgIDc3LCAxNCwgNywgMjA3LCA3NiwgMTQsIDcsIDIwNywgNzUsIDE0LCA3LCAyMDcsIDc0LCAxNCwgNywgMjA3LCA3MywgMTQsIAorICAgIDcsIDIwNywgNzIsIDE0LCA3LCAyMDcsIDcxLCAxNCwgNywgMjA3LCA3MCwgMTQsIDcsIDIwNywgNjksIDE0LCA3LCAyMDcsIAorICAgIDY4LCAxNCwgNywgMjA3LCA2NywgMTQsIDcsIDIwNywgNjYsIDE0LCA3LCAyMDcsIDY1LCAxNCwgNywgMjA3LCA2NCwgMTQsIAorICAgIDcsIDIwNywgNjMsIDE0LCA3LCAyMDcsIDYyLCAxNCwgNywgMjA3LCA2MSwgMTQsIDcsIDIwNywgNjAsIDE0LCA3LCAyMDcsIAorICAgIDU5LCAxNCwgNywgMjA3LCA1OCwgMTQsIDcsIDIwNywgNTcsIDE0LCA3LCAyMDcsIDU2LCAxNCwgNywgMjA3LCA1NSwgMTQsIAorICAgIDcsIDIwNywgNTQsIDE0LCA3LCAyMDcsIDUzLCAxNCwgNywgMjA3LCA1MiwgMTQsIDcsIDIwNywgNTEsIDE0LCA3LCAyMDcsIAorICAgIDUwLCAxNCwgNywgMjA3LCA0OSwgMTQsIDcsIDIwNywgNDgsIDE0LCA3LCAyMDcsIDQ3LCAxNCwgNywgMjA3LCA0NiwgMTQsIAorICAgIDcsIDIwNywgNDUsIDE0LCA3LCAyMDcsIDQ0LCAxNCwgNywgMjA3LCA0MywgMTQsIDcsIDIwNywgNDIsIDE0LCA3LCAyMDcsIAorICAgIDQxLCAxNCwgNywgMjA3LCA0MCwgMTQsIDcsIDIwNywgMzksIDE0LCA3LCAyMDcsIDM4LCAxNCwgNywgMjA0LCA5NSwgMTQsIAorICAgIDcsIDIwNCwgOTQsIDE0LCA3LCAyMDQsIDkzLCAxNCwgNywgMjA0LCA5MiwgMTQsIDcsIDIwNCwgOTEsIDE0LCA3LCAyMDQsIAorICAgIDkwLCAxNCwgNywgMjA0LCA4OSwgMTQsIDcsIDIwNCwgODgsIDE0LCA3LCAyMDQsIDg3LCAxNCwgNywgMjA0LCA4NiwgMTQsIAorICAgIDcsIDIwNCwgODUsIDE0LCA3LCAyMDQsIDg0LCAxNCwgNywgMjA0LCA4MywgMTQsIDcsIDIwNCwgODIsIDE0LCA3LCAyMDQsIAorICAgIDgxLCAxNCwgNywgMjA0LCA4MCwgMTQsIDcsIDIwNCwgNzksIDE0LCA3LCAyMDQsIDc4LCAxNCwgNywgMjA0LCA3NywgMTQsIAorICAgIDcsIDIwNCwgNzYsIDE0LCA3LCAyMDQsIDc1LCAxNCwgNywgMjA0LCA3NCwgMTQsIDcsIDIwNCwgNzMsIDE0LCA3LCAyMDQsIAorICAgIDcyLCAxNCwgNywgMjA0LCA3MSwgMTQsIDcsIDIwNCwgNzAsIDE0LCA3LCAyMDQsIDY5LCAxNCwgNywgMjA0LCA2OCwgMTQsIAorICAgIDcsIDIwNCwgNjcsIDE0LCA3LCAyMDQsIDY2LCAxNCwgNywgMjA0LCA2NSwgMTQsIDcsIDIwNCwgNjQsIDE0LCA3LCAyMDQsIAorICAgIDYzLCAxNCwgNywgMjA0LCA2MiwgMTQsIDcsIDIwNCwgNjEsIDE0LCA3LCAyMDQsIDYwLCAxNCwgNywgMjA0LCA1OSwgMTQsIAorICAgIDcsIDIwNCwgNTgsIDE0LCA3LCAyMDQsIDU3LCAxNCwgNywgMjA0LCA1NiwgMTQsIDcsIDIwNCwgNTUsIDE0LCA3LCAyMDQsIAorICAgIDU0LCAxNCwgNywgMjA0LCA1MywgMTQsIDcsIDIwNCwgNTIsIDE0LCA3LCAyMDQsIDUxLCAxNCwgNywgMjA0LCA1MCwgMTQsIAorICAgIDcsIDIwNCwgNDksIDE0LCA3LCAyMDMsIDE2NywgMTQsIDcsIDIwMywgMTY2LCAxNCwgNywgMjAzLCAxNjUsIDE0LCA3LCAKKyAgICAyMDMsIDE2NCwgMTQsIDcsIDIwMywgMTYzLCAxNCwgNywgMjAzLCAxNjIsIDE0LCA3LCAyMDMsIDE2MSwgMTQsIDcsIDIwMywgCisgICAgMTYwLCAxNCwgNywgMjAzLCAxNTksIDE0LCA3LCAyMDMsIDE1OCwgMTQsIDcsIDIwMywgMTU3LCAxNCwgNywgMjAzLCAxNTYsIAorICAgIDE0LCA3LCAyMDMsIDE1NSwgMTQsIDcsIDIwMywgMTU0LCAxNCwgNywgMjAzLCAxNTMsIDE0LCA3LCAyMDMsIDE1MiwgMTQsIAorICAgIDcsIDIwMywgMTUxLCAxNCwgNywgMjAzLCAxNTAsIDE0LCA3LCAyMDMsIDE0OSwgMTQsIDcsIDIwMywgMTQ4LCAxNCwgNywgCisgICAgMjAzLCAxNDcsIDE0LCA3LCAyMDMsIDE0NiwgMTQsIDcsIDIwMywgMTQ1LCAxNCwgNywgMjAzLCAxNDQsIDE0LCA3LCAyMDMsIAorICAgIDE0MywgMTQsIDcsIDIwMywgMTQyLCAxNCwgNywgMjAzLCAxNDEsIDE0LCA3LCAyMDMsIDE0MCwgMTQsIDcsIDIwMywgMTM5LCAKKyAgICAxNCwgNywgMjAzLCAxMzgsIDE0LCA3LCAyMDMsIDEzNywgMTQsIDcsIDIwMywgMTM2LCAxNCwgNywgMjAzLCAxMzUsIDE0LCAKKyAgICA3LCAyMDMsIDEzNCwgMTQsIDcsIDIwMywgMTMzLCAxNCwgNywgMjAzLCAxMzIsIDE0LCA3LCAyMDMsIDEzMSwgMTQsIDcsIAorICAgIDIwMywgMTMwLCAxNCwgNywgMjAzLCAxMjksIDE0LCA3LCAyMDMsIDEyOCwgMTQsIDcsIDIwMywgMTI3LCAxNCwgNywgMjAzLCAKKyAgICAxMjYsIDE0LCA3LCAyMDMsIDEyNSwgMTQsIDcsIDIwMywgMTI0LCAxNCwgNywgMjAzLCAxMjMsIDE0LCA3LCAyMDMsIDEyMiwgCisgICAgMTQsIDcsIDIwMywgMTIxLCAxNCwgNywgMjAzLCAxMjAsIDE0LCA3LCAyMDMsIDExOSwgMTQsIDcsIDIwMywgMTE4LCAxNCwgCisgICAgNywgMjAzLCAxMTcsIDE0LCA3LCAyMDMsIDExNiwgMTQsIDcsIDIwMywgMTE1LCAxNCwgNywgMjAzLCAxMTQsIDE0LCA3LCAKKyAgICAyMDMsIDExMywgMTQsIDcsIDIwMywgMTEyLCAxNCwgNywgMjAzLCAxMTEsIDE0LCA3LCAyMDMsIDExMCwgMTQsIDcsIDIwMywgCisgICAgMTA5LCAxNCwgNywgMjAzLCAxMDgsIDE0LCA3LCAyMDMsIDEwNywgMTQsIDcsIDIwMywgMTA2LCAxNCwgNywgMjAzLCAxMDUsIAorICAgIDE0LCA3LCAyMDMsIDEwNCwgMTQsIDcsIDIwMywgMTAzLCAxNCwgNywgMjAzLCAxMDIsIDE0LCA3LCAyMDMsIDEwMSwgMTQsIAorICAgIDcsIDIwMywgMTAwLCAxNCwgNywgMjAzLCA5OSwgMTQsIDcsIDIwMywgOTgsIDE0LCA3LCAyMDMsIDk3LCAxNCwgNywgMjAzLCAKKyAgICA5NiwgMTQsIDcsIDIwMywgOTUsIDE0LCA3LCAyMDMsIDk0LCAxNCwgNywgMjAzLCA5MywgMTQsIDcsIDIwMywgOTIsIDE0LCAKKyAgICA3LCAyMDMsIDkxLCAxNCwgNywgMjAxLCAxNDYsIDE0LCA3LCAyMDEsIDE0NSwgMTQsIDcsIDIwMSwgMTQ0LCAxNCwgNywgCisgICAgMjAxLCAxNDMsIDE0LCA3LCAyMDEsIDE0MiwgMTQsIDcsIDIwMSwgMTQxLCAxNCwgNywgMjAxLCAxNDAsIDE0LCA3LCAyMDEsIAorICAgIDEzOSwgMTQsIDcsIDIwMSwgMTM4LCAxNCwgNywgMjAxLCAxMzcsIDE0LCA3LCAyMDEsIDEzNiwgMTQsIDcsIDIwMSwgMTM1LCAKKyAgICAxNCwgNywgMjAxLCAxMzQsIDE0LCA3LCAyMDEsIDEzMywgMTQsIDcsIDIwMSwgMTMyLCAxNCwgNywgMjAxLCAxMzEsIDE0LCAKKyAgICA3LCAyMDEsIDEzMCwgMTQsIDcsIDIwMSwgMTI5LCAxNCwgNywgMjAxLCAxMjgsIDE0LCA3LCAyMDEsIDEyNywgMTQsIDcsIAorICAgIDIwMSwgMTI2LCAxNCwgNywgMjAxLCAxMjUsIDE0LCA3LCAyMDEsIDEyNCwgMTQsIDcsIDIwMSwgMTIzLCAxNCwgNywgMjAxLCAKKyAgICAxMjIsIDE0LCA3LCAyMDEsIDEyMSwgMTQsIDcsIDIwMSwgMTIwLCAxNCwgNywgMjAxLCAxMTksIDE0LCA3LCAyMDEsIDExOCwgCisgICAgMTQsIDcsIDIwMSwgMTE3LCAxNCwgNywgMjAxLCAxMTYsIDE0LCA3LCAyMDEsIDExNSwgMTQsIDcsIDIwMCwgMTkzLCAxNCwgCisgICAgNywgMjAwLCAxOTIsIDE0LCA3LCAyMDAsIDE5MSwgMTQsIDcsIDIwMCwgMTkwLCAxNCwgNywgMjAwLCAxODksIDE0LCA3LCAKKyAgICAyMDAsIDE4OCwgMTQsIDcsIDIwMCwgMTg3LCAxNCwgNywgMjAwLCAxODYsIDE0LCA3LCAyMDAsIDE4NSwgMTQsIDcsIDIwMCwgCisgICAgMTg0LCAxNCwgNywgMjAwLCAxODMsIDE0LCA3LCAyMDAsIDE4MiwgMTQsIDcsIDIwMCwgMTIxLCAxNCwgNywgMjAwLCAxMjAsIAorICAgIDE0LCA3LCAyMDAsIDExOSwgMTQsIDcsIDIwMCwgMTE4LCAxNCwgNywgMjAwLCAxMTcsIDE0LCA3LCAyMDAsIDExNiwgMTQsIAorICAgIDcsIDIwMCwgMTE1LCAxNCwgNywgMjAwLCAxMTQsIDE0LCA3LCAyMDAsIDExMywgMTQsIDcsIDE5OSwgMTU2LCAxNCwgNywgCisgICAgMTk5LCAxNTUsIDE0LCA3LCAxOTksIDE1NCwgMTQsIDcsIDE5OSwgMTUzLCAxNCwgNywgMTk5LCAxNTIsIDE0LCA3LCAxOTksIAorICAgIDE1MSwgMTQsIDcsIDE5OSwgMTUwLCAxNCwgNywgMTk5LCAxNDksIDE0LCA3LCAxOTksIDE0OCwgMTQsIDcsIDE5OSwgMTQ3LCAKKyAgICAxNCwgNywgMTk5LCAxNDYsIDE0LCA3LCAxOTksIDE0NSwgMTQsIDcsIDE5OSwgMTQ0LCAxNCwgNywgMTk5LCAxNDMsIDE0LCAKKyAgICA3LCAxOTksIDE0MiwgMTQsIDcsIDE5OSwgMTQxLCAxNCwgNywgMTk5LCAxNDAsIDE0LCA3LCAxOTksIDEzOSwgMTQsIDcsIAorICAgIDE5OSwgMTM4LCAxNCwgNywgMTk5LCAxMzcsIDE0LCA3LCAxOTksIDEzNiwgMTQsIDcsIDE5OSwgMTM1LCAxNCwgNywgMTk5LCAKKyAgICAxMzQsIDE0LCA3LCAxOTksIDEzMywgMTQsIDcsIDE5OSwgMTMyLCAxNCwgNywgMTk5LCAxMzEsIDE0LCA3LCAxOTksIDEzMCwgCisgICAgMTQsIDcsIDE5OSwgMTI5LCAxNCwgNywgMTk5LCAxMjgsIDE0LCA3LCAxOTksIDEyNywgMTQsIDcsIDE5OSwgMTI2LCAxNCwgCisgICAgNywgMTk5LCAxMjUsIDE0LCA3LCAxOTksIDEyNCwgMTQsIDcsIDE5OSwgMTIzLCAxNCwgNywgMTk5LCAxMjIsIDE0LCA3LCAKKyAgICAxOTksIDEyMSwgMTQsIDcsIDE5OSwgMTIwLCAxNCwgNywgMTk5LCAxMTksIDE0LCA3LCAxOTksIDExOCwgMTQsIDcsIDE5OSwgCisgICAgMTE3LCAxNCwgNywgMTk5LCAxMTYsIDE0LCA3LCAyNTIsIDEzNywgMTQsIDcsIDI1MiwgMTM2LCAxNCwgNywgMjUyLCAxMzUsIAorICAgIDE0LCA3LCAyNTIsIDEzNCwgMTQsIDcsIDI1MiwgMTMzLCAxNCwgNywgMjUyLCAxMzIsIDE0LCA3LCAyNTIsIDEzMSwgMTQsIAorICAgIDcsIDI1MiwgMTMwLCAxNCwgNywgMjUyLCAxMjksIDE0LCA3LCAyNTIsIDEyOCwgMTQsIDcsIDI1MiwgMTI3LCAxNCwgNywgCisgICAgMjUyLCAxMjYsIDE0LCA3LCAyNTIsIDEyNSwgMTQsIDcsIDI1MiwgMTI0LCAxNCwgNywgMjUyLCAxMjMsIDE0LCA3LCAyNTIsIAorICAgIDEyMiwgMTQsIDcsIDI1MiwgMTIxLCAxNCwgNywgMjUyLCAxMjAsIDE0LCA3LCAyNTIsIDExOSwgMTQsIDcsIDI1MiwgMTE4LCAKKyAgICAxNCwgNywgMjUyLCAxMTcsIDE0LCA3LCAyNTIsIDExNiwgMTQsIDcsIDI1MiwgMTE1LCAxNCwgNywgMjUyLCAxMTQsIDE0LCAKKyAgICA3LCAyNTIsIDExMywgMTQsIDcsIDI1MiwgMTEyLCAxNCwgNywgMjUyLCAxMTEsIDE0LCA3LCAyNTIsIDExMCwgMTQsIDcsIAorICAgIDI1MiwgMTA5LCAxNCwgNywgMjUyLCAxMDgsIDE0LCA3LCAyNTIsIDEwNywgMTQsIDcsIDI1MiwgMTA2LCAxNCwgNywgMjUyLCAKKyAgICAxMDUsIDE0LCA3LCAyNTIsIDEwNCwgMjgsIDcsIDI1NSwgMTMxLCAyOCwgNywgMjU1LCAxMzAsIDI4LCA3LCAyNTUsIDEyOSwgCisgICAgMjgsIDcsIDI1NSwgMTI4LCAyOCwgNywgMjU1LCAxMjcsIDI4LCA3LCAyNTUsIDEyNSwgMjgsIDcsIDI1NSwgMTIyLCAyOCwgCisgICAgNywgMjU1LCAxMjEsIDI4LCA3LCAyNTUsIDEyMCwgMjgsIDcsIDI1NSwgMTE5LCAyOCwgNywgMjU1LCAxMTgsIDI4LCA3LCAKKyAgICAyNTUsIDExNywgMjgsIDcsIDI1NSwgMTE2LCAyOCwgNywgMjU1LCAxMTUsIDI4LCA3LCAyNTUsIDExNCwgMjgsIDcsIDI1NSwgCisgICAgMTEyLCAyOCwgNywgMjU1LCAxMTEsIDI4LCA3LCAyNTUsIDExMCwgMjgsIDcsIDI1NSwgMTA4LCAyOCwgNywgMjU1LCAxMDcsIAorICAgIDI4LCA3LCAyNTUsIDEwNiwgMjgsIDcsIDI1NSwgMTA1LCAyOCwgNywgMjU1LCAxMDQsIDI4LCA3LCAyNTUsIDEwMywgMjgsIAorICAgIDcsIDI1NSwgMTAyLCAyOCwgNywgMjU1LCAxMDEsIDI4LCA3LCAyNTUsIDEwMCwgMjgsIDcsIDI1NSwgOTksIDI4LCA3LCAKKyAgICAyNTUsIDk4LCAyOCwgNywgMjU1LCA5NywgMjgsIDcsIDI1NSwgOTUsIDI4LCA3LCAyNTUsIDk0LCAyOCwgNywgMjU1LCA5MywgCisgICAgMjgsIDcsIDI1NSwgOTIsIDI4LCA3LCAyNTUsIDkwLCAyOCwgNywgMjU1LCA4OSwgMjgsIDcsIDI1NSwgODgsIDI4LCA3LCAKKyAgICAyNTUsIDg3LCAyOCwgNywgMjU1LCA4NiwgMjgsIDcsIDI1NSwgODUsIDI4LCA3LCAyNTUsIDg0LCAyOCwgNywgMjU1LCA4MywgCisgICAgMjgsIDcsIDI1NSwgODIsIDI4LCA3LCAyNTUsIDgwLCAyOCwgNywgMjU1LCA3OSwgMjgsIDcsIDI1NSwgNzgsIDI4LCA3LCAKKyAgICAyNTUsIDc2LCAyOCwgNywgMjU1LCA3NCwgMjgsIDcsIDI1NSwgNzMsIDI4LCA3LCAyNTUsIDcyLCAyOCwgNywgMjU1LCA3MSwgCisgICAgMjgsIDcsIDI1NSwgNzAsIDI4LCA3LCAyNTUsIDY5LCAyOCwgNywgMjU1LCA2OCwgMjgsIDcsIDI1NSwgNjcsIDI4LCA3LCAKKyAgICAyNTUsIDY2LCAyOCwgNywgMjU1LCA2NSwgMjgsIDcsIDI1NSwgNjQsIDI4LCA3LCAyNTUsIDYzLCAyOCwgNywgMjU1LCA2MiwgCisgICAgMjgsIDcsIDI1NSwgNjEsIDI4LCA3LCAyNTUsIDYwLCAyOCwgNywgMjU1LCA1OSwgMjgsIDcsIDI1NSwgNTgsIDI4LCA3LCAKKyAgICAyNTUsIDU3LCAyOCwgNywgMjU1LCA1NiwgMjgsIDcsIDI1NSwgNTUsIDI4LCA3LCAyNTUsIDU0LCAyOCwgNywgMjU1LCA1MywgCisgICAgMjgsIDcsIDI1NSwgNTIsIDI4LCA3LCAyNTUsIDUxLCAyOCwgNywgMjU1LCA1MCwgMjgsIDcsIDI1NSwgNDksIDI4LCA3LCAKKyAgICAyNTUsIDQ4LCAyOCwgNywgMjU1LCA0NywgMjgsIDcsIDI1NSwgNDYsIDI4LCA3LCAyNTUsIDQ1LCAyOCwgNywgMjU1LCA0NCwgCisgICAgMjgsIDcsIDI1NSwgNDMsIDI4LCA3LCAyNTUsIDQyLCAyOCwgNywgMjU1LCA0MSwgMjgsIDcsIDI1NSwgNDAsIDI4LCA3LCAKKyAgICAyNTUsIDM5LCAyOCwgNywgMjU1LCAzOCwgMjgsIDcsIDI1NSwgMzcsIDI4LCA3LCAyNTUsIDM2LCAyOCwgNywgMjU1LCAzNSwgCisgICAgMjgsIDcsIDI1NSwgMzQsIDI4LCA3LCAyNTUsIDMzLCAyOCwgNywgMjU1LCAzMiwgMjgsIDcsIDI1NSwgMzEsIDI4LCA3LCAKKyAgICAyNTUsIDMwLCAyOCwgNywgMjU1LCAyOSwgMjgsIDcsIDI1NSwgMjgsIDI4LCA3LCAyNTUsIDI3LCAyOCwgNywgMjU1LCAyNiwgCisgICAgMjgsIDcsIDI1NSwgMjUsIDI4LCA3LCAyNTUsIDI0LCAyOCwgNywgMjU1LCAyMywgMjgsIDcsIDI1NSwgMjIsIDI4LCA3LCAKKyAgICAyNTUsIDIxLCAyOCwgNywgMjU1LCAyMCwgMjgsIDcsIDI1NSwgMTksIDI4LCA3LCAyNTUsIDE4LCAyOCwgNywgMjU1LCAxNywgCisgICAgMjgsIDcsIDI1NSwgMTYsIDI4LCA3LCAyNTUsIDE1LCAyOCwgNywgMjU1LCAxNCwgMjgsIDcsIDI1NSwgMTMsIDI4LCA3LCAKKyAgICAyNTUsIDEyLCAyOCwgNywgMjU1LCAxMSwgMjgsIDcsIDI1NSwgMTAsIDI4LCA3LCAyNTUsIDgsIDI4LCA3LCAyNTUsIDcsIAorICAgIDI4LCA3LCAyNTUsIDYsIDI4LCA3LCAyNTUsIDUsIDI4LCA3LCAyNTUsIDQsIDI4LCA3LCAyNTUsIDMsIDI4LCA3LCAyNTUsIAorICAgIDIsIDI4LCA3LCAyNTUsIDEsIDI4LCA3LCAyNTUsIDAsIDI4LCA3LCAyNTQsIDI1NSwgMjgsIDcsIDI1NCwgMjU0LCAyOCwgNywgCisgICAgMjU0LCAyNTMsIDI4LCA3LCAyNTQsIDI1MiwgMjgsIDcsIDI1NCwgMjUxLCAyOCwgNywgMjU0LCAyNTAsIDI4LCA3LCAyNTQsIAorICAgIDI0OSwgMjgsIDcsIDI1NCwgMjQ4LCAyOCwgNywgMjU0LCAyNDcsIDI4LCA3LCAyNTQsIDI0NiwgMjgsIDcsIDI1NCwgMjQ1LCAKKyAgICAyOCwgNywgMjU0LCAyNDQsIDI4LCA3LCAyNTQsIDI0MywgMjgsIDcsIDI1NCwgMjQyLCAyOCwgNywgMjU0LCAyNDEsIDI4LCAKKyAgICA3LCAyNTQsIDI0MCwgMjgsIDcsIDI1NCwgMjM5LCAyOCwgNywgMjU0LCAyMzgsIDI4LCA3LCAyNTQsIDIzNywgMjgsIDcsIAorICAgIDI1NCwgMjM2LCAyOCwgNywgMjU0LCAyMzUsIDI4LCA3LCAyNTQsIDIzNCwgMjgsIDcsIDI1NCwgMjMzLCAyOCwgNywgMjU0LCAKKyAgICAyMzIsIDI4LCA3LCAyNTQsIDIzMSwgMjgsIDcsIDI1NCwgMjI5LCAyOCwgNywgMjU0LCAyMjgsIDI4LCA3LCAyNTQsIDIyNywgCisgICAgMjgsIDcsIDI1NCwgMjI2LCAyOCwgNywgMjU0LCAyMjUsIDI4LCA3LCAyNTQsIDIyNCwgMjgsIDcsIDI1NCwgMjIzLCAyOCwgCisgICAgNywgMjU0LCAyMjIsIDI4LCA3LCAyNTQsIDIyMSwgMjgsIDcsIDI1NCwgMjIwLCAyOCwgNywgMjU0LCAyMTksIDI4LCA3LCAKKyAgICAyNTQsIDIxOCwgMjgsIDcsIDI1NCwgMjE2LCAyOCwgNywgMjU0LCAyMTUsIDI4LCA3LCAyNTQsIDIxNCwgMjgsIDcsIDI1NCwgCisgICAgMjEzLCAyOCwgNywgMjU0LCAyMTIsIDI4LCA3LCAyNTQsIDIxMSwgMjgsIDcsIDI1NCwgMjEwLCAyOCwgNywgMjU0LCAyMDksIAorICAgIDI4LCA3LCAyNTQsIDIwOCwgMjgsIDcsIDI1NCwgMjA3LCAyOCwgNywgMjU0LCAyMDYsIDI4LCA3LCAyNTQsIDIwNSwgMjgsIAorICAgIDcsIDI1NCwgMjA0LCAyOCwgNywgMjU0LCAyMDMsIDI4LCA3LCAyNTQsIDIwMiwgMjgsIDcsIDI1NCwgMjAxLCAyOCwgNywgCisgICAgMjU0LCAyMDAsIDI4LCA3LCAyNTQsIDE5OSwgMjgsIDcsIDI1NCwgMTk4LCAyOCwgNywgMjU0LCAxOTcsIDI4LCA3LCAyNTQsIAorICAgIDE5NiwgMjgsIDcsIDI1NCwgMTk1LCAyOCwgNywgMjU0LCAxOTQsIDI4LCA3LCAyNTQsIDE5MywgMjgsIDcsIDI1NCwgMTkyLCAKKyAgICAyOCwgNywgMjU0LCAxOTEsIDI4LCA3LCAyNTQsIDE5MCwgMjgsIDcsIDI1NCwgMTg5LCAyOCwgNywgMjU0LCAxODgsIDI4LCAKKyAgICA3LCAyNTQsIDE4NywgMjgsIDcsIDI1NCwgMTg2LCAyOCwgNywgMjU0LCAxODUsIDI4LCA3LCAyNTQsIDE4NCwgMjgsIDcsIAorICAgIDI1NCwgMTgzLCAyOCwgNywgMjU0LCAxODIsIDI4LCA3LCAyNTQsIDE4MSwgMjgsIDcsIDI1NCwgMTgwLCAyOCwgNywgMjU0LCAKKyAgICAxNzksIDI4LCA3LCAyNTQsIDE3OCwgMjgsIDcsIDI1NCwgMTc3LCAyOCwgNywgMjU0LCAxNzYsIDI4LCA3LCAyNTQsIDE3NSwgCisgICAgMjgsIDcsIDI1NCwgMTc0LCAyOCwgNywgMjU0LCAxNzMsIDI4LCA3LCAyNTQsIDE3MiwgMjgsIDcsIDI1NCwgMTcxLCAyOCwgCisgICAgNywgMjU0LCAxNzAsIDI4LCA3LCAyNTQsIDE2OSwgMjgsIDcsIDI1NCwgMTY4LCAyOCwgNywgMjU0LCAxNjcsIDI4LCA3LCAKKyAgICAyNTQsIDE2NiwgMjgsIDcsIDI1NCwgMTY1LCAyOCwgNywgMjU0LCAxNjQsIDI4LCA3LCAyNTQsIDE2MywgMjgsIDcsIDI1NCwgCisgICAgMTYyLCAyOCwgNywgMjU0LCAxNjEsIDI4LCA3LCAyNTQsIDE2MCwgMjgsIDcsIDI1NCwgMTU5LCAyOCwgNywgMjU0LCAxNTgsIAorICAgIDI4LCA3LCAyNTQsIDE1NywgMjgsIDcsIDI1NCwgMTU2LCAyOCwgNywgMjU0LCAxNTUsIDI4LCA3LCAyNTQsIDE1NCwgMjgsIAorICAgIDcsIDI1NCwgMTUzLCAyOCwgNywgMjU0LCAxNTIsIDI4LCA3LCAyNTQsIDE1MSwgMjgsIDcsIDI1NCwgMTUwLCAyOCwgNywgCisgICAgMjU0LCAxNDksIDI4LCA3LCAyNTQsIDE0OCwgMjgsIDcsIDI1NCwgMTQ2LCAyOCwgNywgMjU0LCAxNDUsIDI4LCA3LCAyNTQsIAorICAgIDE0NCwgMjgsIDcsIDI1NCwgMTQzLCAyOCwgNywgMjU0LCAxNDIsIDI4LCA3LCAyNTQsIDE0MSwgMjgsIDcsIDI1NCwgMTQwLCAKKyAgICAyOCwgNywgMjU0LCAxMzksIDI4LCA3LCAyNTQsIDEzOCwgMjgsIDcsIDI1NCwgMTM3LCAyOCwgNywgMjU0LCAxMzYsIDI4LCAKKyAgICA3LCAyNTQsIDEzNSwgMjgsIDcsIDI1NCwgMTM0LCAyOCwgNywgMjU0LCAxMzMsIDI4LCA3LCAyNTQsIDEzMiwgMjgsIDcsIAorICAgIDI1NCwgMTMxLCAyOCwgNywgMjU0LCAxMzAsIDI4LCA3LCAyNTQsIDEyOSwgMjgsIDcsIDI1NCwgMTI4LCAyOCwgNywgMjU0LCAKKyAgICAxMjcsIDI4LCA3LCAyNTQsIDEyNiwgMjgsIDcsIDI1NCwgMTI1LCAyOCwgNywgMjU0LCAxMjQsIDI4LCA3LCAyNTQsIDEyMywgCisgICAgMjgsIDcsIDI1NCwgMTIyLCAyOCwgNywgMjU0LCAxMjEsIDI4LCA3LCAyNTQsIDEyMCwgMjgsIDcsIDI1NCwgMTE5LCAyOCwgCisgICAgNywgMjU0LCAxMTgsIDI4LCA3LCAyNTQsIDExNywgMjgsIDcsIDI1NCwgMTE2LCAyOCwgNywgMjU0LCAxMTUsIDI4LCA3LCAKKyAgICAyNTQsIDExNCwgMjgsIDcsIDI1NCwgMTEzLCAyOCwgNywgMjU0LCAxMTIsIDI4LCA3LCAyNTQsIDExMSwgMjgsIDcsIDI1NCwgCisgICAgMTEwLCAyOCwgNywgMjU0LCAxMDksIDI4LCA3LCAyNTQsIDEwOCwgMjgsIDcsIDI1NCwgMTA3LCAyOCwgNywgMjU0LCAxMDYsIAorICAgIDI4LCA3LCAyNTQsIDEwNSwgMjgsIDcsIDI1NCwgMTA0LCAyOCwgNywgMjU0LCAxMDMsIDI4LCA3LCAyNTQsIDEwMiwgMjgsIAorICAgIDcsIDI1NCwgMTAxLCAyOCwgNywgMjU0LCAxMDAsIDI4LCA3LCAyNTQsIDk5LCAyOCwgNywgMjU0LCA5OCwgMjgsIDcsIDI1NCwgCisgICAgOTcsIDI4LCA3LCAyNTQsIDk2LCAyOCwgNywgMjU0LCA5NSwgMjgsIDcsIDI1NCwgOTQsIDI4LCA3LCAyNTQsIDkzLCAyOCwgCisgICAgNywgMjU0LCA5MiwgMjgsIDcsIDI1NCwgOTEsIDI4LCA3LCAyNTQsIDkwLCAyOCwgNywgMjU0LCA4OSwgMjgsIDcsIDI1NCwgCisgICAgODgsIDI4LCA3LCAyNTQsIDg3LCAyOCwgNywgMjU0LCA4NiwgMjgsIDcsIDI1NCwgODUsIDI4LCA3LCAyNTQsIDg0LCAyOCwgCisgICAgNywgMjU0LCA4MywgMjgsIDcsIDI1NCwgODIsIDI4LCA3LCAyNTQsIDgxLCAyOCwgNywgMjU0LCA4MCwgMjgsIDcsIDI1NCwgCisgICAgNzksIDI4LCA3LCAyNTQsIDc4LCAyOCwgNywgMjU0LCA3NywgMjgsIDcsIDI1NCwgNzYsIDI4LCA3LCAyNTQsIDc1LCAyOCwgCisgICAgNywgMjU0LCA3NCwgMjgsIDcsIDI1NCwgNzMsIDI4LCA3LCAyNTQsIDcyLCAyOCwgNywgMjU0LCA3MSwgMjgsIDcsIDI1NCwgCisgICAgNzAsIDI4LCA3LCAyNTQsIDY5LCAyOCwgNywgMjU0LCA2OCwgMjgsIDcsIDI1NCwgNjcsIDI4LCA3LCAyNTQsIDY2LCAyOCwgCisgICAgNywgMjU0LCA2NSwgMjgsIDcsIDI1NCwgNjQsIDI4LCA3LCAyNTQsIDYzLCAyOCwgNywgMjU0LCA2MiwgMjgsIDcsIDI1NCwgCisgICAgNjEsIDI4LCA3LCAyNTQsIDYwLCAyOCwgNywgMjU0LCA1OSwgMjgsIDcsIDI1NCwgNTgsIDI4LCA3LCAyNTQsIDU3LCAyOCwgCisgICAgNywgMjU0LCA1NiwgMjgsIDcsIDI1NCwgNTUsIDI4LCA3LCAyNTQsIDU0LCAyOCwgNywgMjU0LCA1MywgMjgsIDcsIDI1NCwgCisgICAgNTIsIDI4LCA3LCAyNTQsIDUxLCAyOCwgNywgMjU0LCA1MCwgMjgsIDcsIDI1NCwgNDksIDI4LCA3LCAyNTQsIDQ4LCAyOCwgCisgICAgNywgMjU0LCA0NywgMjgsIDcsIDI1NCwgNDYsIDI4LCA3LCAyNTQsIDQ1LCAyOCwgNywgMjU0LCA0NCwgMjgsIDcsIDI1NCwgCisgICAgNDMsIDI4LCA3LCAyNTQsIDQyLCAyOCwgNywgMjU0LCA0MSwgMjgsIDcsIDI1NCwgNDAsIDI4LCA3LCAyNTQsIDM5LCAyOCwgCisgICAgNywgMjU0LCAzOCwgMjgsIDcsIDI1NCwgMzcsIDI4LCA3LCAyNTQsIDM2LCAyOCwgNywgMjU0LCAzNCwgMjgsIDcsIDI1NCwgCisgICAgMzMsIDI4LCA3LCAyNTQsIDMyLCAyOCwgNywgMjU0LCAzMSwgMjgsIDcsIDI1NCwgMzAsIDI4LCA3LCAyNTQsIDI5LCAyOCwgCisgICAgNywgMjU0LCAyOCwgMjgsIDcsIDI1NCwgMjcsIDI4LCA3LCAyNTQsIDI2LCAyOCwgNywgMjU0LCAyNSwgMjgsIDcsIDI1NCwgCisgICAgMjQsIDI4LCA3LCAyNTQsIDIxLCAyOCwgNywgMjU0LCAyMCwgMjgsIDcsIDI1NCwgMTksIDI4LCA3LCAyNTQsIDE4LCAyOCwgCisgICAgNywgMjU0LCAxNCwgMjgsIDcsIDI1NCwgMTMsIDI4LCA3LCAyNTQsIDEyLCAyOCwgNywgMjU0LCAxMSwgMjgsIDcsIDI1NCwgCisgICAgMTAsIDI4LCA3LCAyNTQsIDksIDI4LCA3LCAyNTQsIDgsIDI4LCA3LCAyNTQsIDcsIDI4LCA3LCAyNTQsIDYsIDI4LCA3LCAKKyAgICAyNTQsIDUsIDI4LCA3LCAyNTQsIDQsIDI4LCA3LCAyNTQsIDMsIDI4LCA3LCAyNTQsIDIsIDI4LCA3LCAyNTQsIDEsIDI4LCAKKyAgICA3LCAyNTQsIDAsIDI4LCA3LCAyNTMsIDI1NSwgMjgsIDcsIDI1MywgMjU0LCAyOCwgNywgMjUzLCAyNTMsIDI4LCA3LCAyNTMsIAorICAgIDI1MiwgMjgsIDcsIDI1MywgMjUwLCAyOCwgNywgMjUzLCAyNDksIDI4LCA3LCAyNTMsIDI0OCwgMjgsIDcsIDI1MywgMjQ3LCAKKyAgICAyOCwgNywgMjUzLCAyNDYsIDI4LCA3LCAyNTMsIDI0NSwgMjgsIDcsIDI1MywgMjQ0LCAyOCwgNywgMjUzLCAyNDMsIDI4LCAKKyAgICA3LCAyNTMsIDI0MiwgMjgsIDcsIDI1MywgMjQxLCAyOCwgNywgMjUzLCAyNDAsIDI4LCA3LCAyNTMsIDIzOSwgMjgsIDcsIAorICAgIDI1MywgMjM4LCAyOCwgNywgMjUzLCAyMzcsIDI4LCA3LCAyNTMsIDIzNiwgMjgsIDcsIDI1MywgMjM1LCAyOCwgNywgMjUzLCAKKyAgICAyMzQsIDI4LCA3LCAyNTMsIDIzMywgMjgsIDcsIDI1MywgMjMyLCAyOCwgNywgMjUzLCAyMzEsIDI4LCA3LCAyNTMsIDIzMCwgCisgICAgMjgsIDcsIDI1MywgMjI5LCAyOCwgNywgMjUzLCAyMjgsIDI4LCA3LCAyNTMsIDIyNywgMjgsIDcsIDI1MywgMjI2LCAyOCwgCisgICAgNywgMjUzLCAyMjUsIDI4LCA3LCAyNTMsIDIyNCwgMjgsIDcsIDI1MywgMjIzLCAyOCwgNywgMjUzLCAyMjIsIDI4LCA3LCAKKyAgICAyNTMsIDIyMSwgMjgsIDcsIDI1MywgMjIwLCAyOCwgNywgMjUzLCAyMTksIDI4LCA3LCAyNTMsIDIxOCwgMjgsIDcsIDI1MywgCisgICAgMjE3LCAyOCwgNywgMjUzLCAyMTYsIDI4LCA3LCAyNTMsIDIxNSwgMjgsIDcsIDI1MywgMjE0LCAyOCwgNywgMjUzLCAyMTMsIAorICAgIDI4LCA3LCAyNTMsIDIxMiwgMjgsIDcsIDI1MywgMjExLCAyOCwgNywgMjUzLCAyMTAsIDI4LCA3LCAyNTMsIDIwOSwgMjgsIAorICAgIDcsIDI1MywgMjA4LCAyOCwgNywgMjUzLCAyMDcsIDI4LCA3LCAyNTMsIDIwNiwgMjgsIDcsIDI1MywgMjA1LCAyOCwgNywgCisgICAgMjUzLCAyMDQsIDI4LCA3LCAyNTMsIDIwMywgMjgsIDcsIDI1MywgMjAyLCAyOCwgNywgMjUzLCAyMDEsIDI4LCA3LCAyNTMsIAorICAgIDIwMCwgMjgsIDcsIDI1MywgMTk5LCAyOCwgNywgMjUzLCAxOTgsIDI4LCA3LCAyNTMsIDE5NywgMjgsIDcsIDI1MywgMTk2LCAKKyAgICAyOCwgNywgMjUzLCAxOTUsIDI4LCA3LCAyNTMsIDE5NCwgMjgsIDcsIDI1MywgMTkzLCAyOCwgNywgMjUzLCAxOTIsIDI4LCAKKyAgICA3LCAyNTMsIDE5MSwgMjgsIDcsIDI1MywgMTkwLCAyOCwgNywgMjUzLCAxODksIDIxMywgMjUzLCAyMTcsIDM0LCAyMTMsIAorICAgIDg4LCAyOCwgNywgMjUzLCAxODgsIDI4LCA3LCAyNTMsIDE4NywgMjgsIDcsIDI1MywgMTg2LCAyOCwgNywgMjUzLCAxODUsIAorICAgIDI4LCA3LCAyNTMsIDE4NCwgMjgsIDcsIDI1MywgMTgzLCAyOCwgNywgMjUzLCAxODIsIDI4LCA3LCAyNTMsIDE4MSwgMjgsIAorICAgIDcsIDI1MywgMTgwLCAyOCwgNywgMjUzLCAxNzksIDI4LCA3LCAyNTMsIDE3OCwgMjgsIDcsIDI1MywgMTc3LCAxOTIsIDI4LCAKKyAgICA3LCAyNTMsIDE3NiwgMjgsIDcsIDI1MywgMTc1LCAyOCwgNywgMjUzLCAxNzQsIDI4LCA3LCAyNTMsIDE3MywgMjgsIDcsIAorICAgIDI1MywgMTcyLCAyOCwgNywgMjUzLCAxNzEsIDI4LCA3LCAyNTMsIDE3MCwgMjgsIDcsIDI1MywgMTY4LCAyOCwgNywgMjUzLCAKKyAgICAxNjYsIDI4LCA3LCAyNTMsIDE2NCwgMjgsIDcsIDI1MywgMTYyLCAyOCwgNywgMjUzLCAxNjAsIDI4LCA3LCAyNTMsIDE1OCwgCisgICAgMjgsIDcsIDI1MywgMTU2LCAyOCwgNywgMjUzLCAxNTQsIDI4LCA3LCAyNTMsIDE1MiwgMjgsIDcsIDI1MywgMTUwLCAyNDgsIAorICAgIDI0NCwgMjI0LCA5NywgODEsIDI4LCA3LCAyNTMsIDE0OCwgMjM4LCAxNzEsIDIyNCwgOTcsIDgxLCAyOCwgNywgMjUzLCAKKyAgICAxNDcsIDI4LCA3LCAyNTMsIDE0NSwgMjgsIDcsIDI1MywgMTQzLCAyOCwgNywgMjUzLCAxNDEsIDI4LCA3LCAyNTMsIDEzOSwgCisgICAgMjgsIDcsIDI1MywgMTM3LCAyOCwgNywgMjUzLCAxMzUsIDI4LCA3LCAyNTMsIDEzMywgMjgsIDcsIDI1MywgMTMxLCAyOCwgCisgICAgNywgMjUzLCAxMzAsIDI4LCA3LCAyNTMsIDEyOSwgMjgsIDcsIDI1MywgMTI4LCAyOCwgNywgMjUzLCAxMjcsIDI4LCA3LCAKKyAgICAyNTMsIDEyNiwgMjgsIDcsIDI1MywgMTI1LCAyOCwgNywgMjUzLCAxMjQsIDI4LCA3LCAyNTMsIDEyMywgMjgsIDcsIDI1MywgCisgICAgMTIyLCAyOCwgNywgMjUzLCAxMjEsIDI4LCA3LCAyNTMsIDEyMCwgMjgsIDcsIDI1MywgMTE5LCAyOCwgNywgMjUzLCAxMTgsIAorICAgIDI4LCA3LCAyNTMsIDExNywgMjgsIDcsIDI1MywgMTE2LCAyOCwgNywgMjUzLCAxMTUsIDI4LCA3LCAyNTMsIDExNCwgMjgsIAorICAgIDcsIDI1MywgMTEzLCAyOCwgNywgMjUzLCAxMTIsIDI4LCA3LCAyNTMsIDExMSwgMjgsIDcsIDI1MywgMTEwLCAyOCwgNywgCisgICAgMjUzLCAxMDksIDI4LCA3LCAyNTMsIDEwOCwgMjgsIDcsIDI1MywgMTA3LCAyOCwgNywgMjUzLCAxMDYsIDI4LCA3LCAyNTMsIAorICAgIDEwNSwgMjgsIDcsIDI1MywgMTA0LCAyOCwgNywgMjUzLCAxMDMsIDI4LCA3LCAyNTMsIDEwMiwgMjgsIDcsIDI1MywgMTAxLCAKKyAgICAyOCwgNywgMjUzLCAxMDAsIDI4LCA3LCAyNTMsIDk5LCAyOCwgNywgMjUzLCA5OCwgMjgsIDcsIDI1MywgOTcsIDI4LCA3LCAKKyAgICAyNTMsIDk2LCAyOCwgNywgMjUzLCA5NSwgMjgsIDcsIDI1MywgOTQsIDI4LCA3LCAyNTMsIDkzLCAyOCwgNywgMjUzLCA5MiwgCisgICAgMjgsIDcsIDI1MywgOTEsIDI4LCA3LCAyNTMsIDkwLCAyOCwgNywgMjUzLCA4OSwgMjgsIDcsIDI1MywgODgsIDI4LCA3LCAKKyAgICAyNTMsIDg3LCAyOCwgNywgMjUzLCA4NiwgMjgsIDcsIDI1MywgODUsIDI4LCA3LCAyNTMsIDg0LCAyOCwgNywgMjUzLCA4MywgCisgICAgMjgsIDcsIDI1MywgODIsIDI4LCA3LCAyNTMsIDgxLCAyOCwgNywgMjUzLCA4MCwgMjgsIDcsIDI1MywgNzksIDI4LCA3LCAKKyAgICAyNTMsIDc4LCAyOCwgNywgMjUzLCA3NywgMjgsIDcsIDI1MywgNzYsIDI4LCA3LCAyNTMsIDc1LCAyOCwgNywgMjUzLCA3NCwgCisgICAgMjgsIDcsIDI1MywgNzMsIDI4LCA3LCAyNTMsIDcyLCAyOCwgNywgMjUzLCA3MSwgMjgsIDcsIDI1MywgNzAsIDI4LCA3LCAKKyAgICAyNTMsIDY5LCAyOCwgNywgMjUzLCA2OCwgMjgsIDcsIDI1MywgNjcsIDI4LCA3LCAyNTMsIDY2LCAyOCwgNywgMjUzLCA2NSwgCisgICAgMjgsIDcsIDI1MywgNjQsIDI4LCA3LCAyNTMsIDYzLCAyOCwgNywgMjUzLCA2MiwgMjgsIDcsIDI1MywgNjEsIDI4LCA3LCAKKyAgICAyNTMsIDYwLCAyOCwgNywgMjUzLCA1OSwgMjgsIDcsIDI1MywgNTgsIDI4LCA3LCAyNTMsIDU3LCAyOCwgNywgMjUzLCA1NiwgCisgICAgMjgsIDcsIDI1MywgNTUsIDI4LCA3LCAyNTMsIDU0LCAyOCwgNywgMjUzLCA1MywgMjgsIDcsIDI1MywgNTIsIDI4LCA3LCAKKyAgICAyNTMsIDUxLCAyOCwgNywgMjUzLCA1MCwgMjgsIDcsIDI1MywgNDksIDI4LCA3LCAyNTMsIDQ4LCAyOCwgNywgMjUzLCA0NywgCisgICAgMjgsIDcsIDI1MywgNDYsIDI4LCA3LCAyNTMsIDQ1LCAyOCwgNywgMjUzLCA0NCwgMjgsIDcsIDI1MywgNDMsIDI4LCA3LCAKKyAgICAyNTMsIDQyLCAyOCwgNywgMjUzLCA0MSwgMjgsIDcsIDI1MywgNDAsIDI4LCA3LCAyNTMsIDM5LCAyOCwgNywgMjUzLCAzOCwgCisgICAgMjgsIDcsIDI1MywgMzcsIDI4LCA3LCAyNTMsIDM2LCAyOCwgNywgMjUzLCAzNSwgMjgsIDcsIDI1MywgMzQsIDI4LCA3LCAKKyAgICAyNTMsIDMzLCAyOCwgNywgMjUzLCAzMiwgMjgsIDcsIDI1MywgMzEsIDI4LCA3LCAyNTMsIDMwLCAyOCwgNywgMjUzLCAyOSwgCisgICAgMjgsIDcsIDI1MywgMjgsIDI4LCA3LCAyNTMsIDI3LCAyOCwgNywgMjUzLCAyNiwgMjgsIDcsIDI1MywgMjUsIDI4LCA3LCAKKyAgICAyNTMsIDI0LCAyOCwgNywgMjUzLCAyMywgMjgsIDcsIDI1MywgMjIsIDI4LCA3LCAyNTMsIDIxLCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxOSwgMTg2LCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMzYsIDIzLCAyMzcsIDUsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE1LCA4MywgMjIxLCAyNTQsIDIxNSwgMTUyLCAyNSwgMSwgMjE1LCAyMzUsIDIxNSwgODMsIDIyMSwgMjU0LCAyMTUsIAorICAgIDE1MywgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDE1OCwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyMTYsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA1LCAyMTIsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgOCwgMjIxLCAyNTMsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjEwLCAyMCwgMjE2LCAyMTEsIDIxOSwgODIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjE2LCAKKyAgICAyMTEsIDIxOSwgODMsIDIxNSwgMTUyLCAyNSwgMSwgMjE1LCAyMzUsIDIxNSwgODMsIDIxNiwgMjExLCAyMTksIDgzLCAyMTUsIAorICAgIDE1MywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxNCwgMjUsIDEsIDIxNSwgMjM1LCAyMDQsIDIxNiwgMjIyLCAyMTUsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjE5LCAyNDcsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTEsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAKKyAgICAxNjksIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCAyMzcsIDI1LCAxLCAyMTUsIDIzNSwgMjEwLCAxMzgsIDI1LCAxLCAyMTUsIAorICAgIDIzNSwgMjE4LCAxNDAsIDI1LCAxLCAyMTUsIDIzNSwgMjI2LCAyMjYsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCA1MCwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDcsIDE5MywgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDE4NSwgMjUsIDEsIDIxNSwgMjM1LCAyMjUsIAorICAgIDczLCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgMjM4LCAyMjUsIDIzNywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE1MCwgMjIyLCAKKyAgICA1LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE4LCAyNSwgMSwgMjE1LCAyMzUsIDIxNiwgMTAxLCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIzNSwgMTgwLCAyNSwgMSwgMjE1LCAyMzUsIDIxNiwgMTY2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgMTA3LCAyMTksIDIyMCwgCisgICAgMjUsIDEsIDIxNSwgMjM1LCAyMTcsIDI0NSwgMjIyLCA4LCAyNSwgMSwgMjE1LCAyMzUsIDEwOCwgMTk5LCAxODYsIDIyMCwgCisgICAgMTUxLCAyNSwgMSwgMjE1LCAyMzUsIDIzNSwgMTgxLCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTUwLCAyMTgsIDE1MSwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDksIDEwOSwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDI0NiwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDExLCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgODMsIDI1LCAxLCAyMTUsIDIzNSwgMjI3LCA4NSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTYsIDIxMSwgMjI1LCAyOSwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDc2LCAyMjUsIDI5LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNiwgMCwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxMiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDEyNCwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMTQsIDIwNSwgMjUsIDEsIDIxNSwgMjM1LCAyMDQsIDIxMywgMjUsIDEsIDIxNSwgMjM1LCAyMjQsIDM4LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwOSwgMTEsIDI1LCAxLCAyMTUsIDIzNSwgMjA2LCAxMzEsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAKKyAgICAyMDksIDI1LCAxLCAyMTUsIDIzNSwgMjI2LCAyMzMsIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCA3MiwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMjUsIDI1MCwgMjUsIDEsIDIxNSwgMjM1LCAyMjEsIDg0LCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjEyLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIyNCwgOTAsIDI1LCAxLCAyMTUsIDIzNSwgMjM3LCA3NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTIsIAorICAgIDI0MSwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDM5LCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgNywgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMjIsIDE2NSwgMjE1LCAxOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjEwLCAxMywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE0OSwgCisgICAgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDI1MiwgMjE4LCAxNjAsIDE5OSwgMTk0LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMzAsIAorICAgIDIyMSwgMTAzLCAyNSwgMSwgMjE1LCAyMzUsIDIxNiwgMjA2LCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgNTIsIDI1LCAxLCAKKyAgICAyMTUsIDIzNSwgMjAzLCAyMzUsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCAyMjMsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMDgsIAorICAgIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCA5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDEwNSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTgsIDQ0LCAyNSwgMSwgMjE1LCAyMzUsIDIwNiwgMTM1LCAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgNCwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMTYsIDIwNywgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIDE2NCwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxNiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTgsIDQxLCAyNSwgMSwgMjE1LCAyMzUsIDIyNywgNDgsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAKKyAgICAxNjcsIDI1LCAxLCAyMTUsIDIzNSwgMjAzLCA1NCwgMjUsIDEsIDIxNSwgMjM1LCAyMjQsIDQyLCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIyMCwgMjQsIDI1LCAxLCAyMTUsIDIzNSwgMjIwLCAxMjYsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAxMDQsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE4LCAxNjIsIDI1LCAxLCAyMTUsIDIzNCwgMjA0LCAyMTYsIDIyMiwgMjEzLCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIwOSwgMTcxLCAyNSwgMSwgMjE1LCAyMzQsIDIxMCwgMTQyLCAyMDQsIDIxNSwgMjUsIDEsIDIxNSwgMjM0LCAyMjQsIDkyLCAKKyAgICAyMTgsIDE0NiwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDExMSwgMjIyLCAyMTcsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAxNTUsIAorICAgIDI1LCAxLCAyMTUsIDIzNCwgMjAwLCAxNywgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDEwNiwgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMjcsIDcxLCAyNSwgMSwgMjE1LCAyMzQsIDIxNiwgNTcsIDI1LCAxLCAyMTUsIDIzNCwgMjAwLCA5NSwgMjI1LCAyOSwgMjUsIAorICAgIDEsIDIxNSwgMjM0LCAyMjUsIDkyLCAyMTgsIDE2MCwgMjE4LCA1NSwgMjUsIDEsIDIxNSwgMjM0LCAyMTgsIDE0MywgMjEwLCAKKyAgICAzOSwgMjUsIDEsIDIxNSwgMjM0LCAyMjAsIDQzLCAyMTksIDk3LCAyNSwgMSwgMjE1LCAyMzQsIDIzNSwgMTc4LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxNSwgMTQyLCAyNSwgMSwgMjE1LCAyMzQsIDIwNCwgMjE2LCAyMTgsIDE1OCwgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMTAsIDQ0LCAyMTksIDkyLCAyNSwgMSwgMjE1LCAyMzQsIDIxMCwgNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjIxLCAyNTQsIAorICAgIDIwNiwgMTM0LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgOTMsIDIyMiwgMTA3LCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgNDIsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMjIyLCAyNSwgMSwgMjE1LCAyMzQsIDIzNSwgMTc5LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIyNiwgMjE4LCAyNSwgMSwgMjE1LCAyMzQsIDIyNSwgMTcwLCAyNSwgMSwgMjE1LCAyMzQsIDIxNiwgMTA0LCAKKyAgICAyNSwgMSwgMjE1LCAyMzQsIDIwMiwgMjQxLCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMTg3LCAyMjAsIDIzNSwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTksIDIyMiwgMjIyLCA4OSwgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDIxNCwgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMTIsIDQwLCAyNSwgMSwgMjE1LCAyMzQsIDIwNywgMjgsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAxMCwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMTksIDIwNiwgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDIwNywgMjI1LCA3MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIAorICAgIDAsIDI1LCAxLCAyMTUsIDIzNCwgMjA3LCAyNDQsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCA5NywgMjUsIDEsIDIxNSwgMjM0LCAKKyAgICAyMjEsIDg4LCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgNTgsIDI1LCAxLCAyMTUsIDIzNCwgMjE0LCAyMDksIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjIyLCA5LCAyMTksIDIyNCwgMjUsIDEsIDIxNSwgMjM0LCAyMzcsIDExNywgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIAorICAgIDg0LCAyNSwgMSwgMjE1LCAyMzQsIDIzNywgMTQwLCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMjMwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIyMiwgMjM1LCAyMTksIDg2LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMjM1LCAyMTksIDYyLCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIyNCwgMjM3LCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMjMwLCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgMTY5LCAyNSwgCisgICAgMSwgMjE1LCAyMzQsIDE3OCwgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDE0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMTksIDE3NSwgCisgICAgMjUsIDEsIDE3MywgMjE5LCAxODYsIDIyMiwgMjE1LCAyNSwgMSwgMTczLCAyMTgsIDcsIDI1LCAxLCAxNzMsIDE5OSwgMTk0LCAKKyAgICAyNSwgMSwgMTczLCAyMDEsIDk4LCAyNSwgMSwgMTczLCAyMTksIDIyMywgMjUsIDEsIDE3MywgMjIwLCA2NCwgMjUsIDEsIAorICAgIDE3MywgMjE5LCAxOTMsIDI1LCAxLCAxNzMsIDIzNSwgMTg4LCAyNSwgMSwgMTczLCAyMjIsIDEwMSwgMjUsIDEsIDE3MywgCisgICAgMjM2LCAzMCwgMjUsIDEsIDE3MywgMjE4LCAzMiwgMjIxLCAxNDUsIDIyMiwgMTIsIDI1LCAxLCAxNzMsIDIxOCwgMTM4LCAKKyAgICAyMjIsIDkyLCAyNSwgMSwgMTczLCAyMjIsIDk4LCAyNSwgMSwgMTczLCAyMTUsIDE0OCwgMjUsIDEsIDE3MywgMjIwLCA0OSwgCisgICAgMjUsIDEsIDE3MywgMjIyLCAxMDksIDI0NywgMTg2LCAyNSwgMSwgMTczLCAyMjYsIDIyMCwgMjUsIDEsIDE3MywgMjM1LCAKKyAgICAxODksIDI1LCAxLCAxNzMsIDIyNiwgMjI3LCAyNSwgMSwgMTczLCAxOTksIDIxMiwgMjIxLCAxMCwgMjUsIDEsIDE3MywgCisgICAgMjE4LCAxLCAyNSwgMSwgMTczLCAyMjIsIDg2LCAyNSwgMSwgMTczLCAyMTgsIDE2OCwgMjUsIDEsIDE3MywgMjIyLCA5MiwgCisgICAgMjUsIDEsIDE3MywgMjAwLCAxOCwgMjUsIDEsIDE3MywgMjI2LCA0NywgMjUsIDEsIDE3MywgMjI3LCAxMDUsIDI1LCAxLCAKKyAgICAxNzMsIDIxMCwgMTM3LCAyNSwgMSwgMTczLCAyMjAsIDU4LCAyNSwgMSwgMTczLCAyMDcsIDI2LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDY2LCAyNSwgMSwgMTczLCAyMDUsIDIxMiwgMTk5LCAxOTcsIDI1LCAxLCAxNzMsIDIwOCwgMTksIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgMjEzLCAyMTgsIDU1LCAyNSwgMSwgMTczLCAyMDIsIDI0MCwgMjUsIDEsIDE3MywgMjIwLCAxMjksIDI1LCAxLCAxNzMsIAorICAgIDIyMiwgMjM1LCAyMjYsIDIyOSwgMjUsIDEsIDE3MywgMjE4LCAxNTEsIDI1LCAxLCAxNzMsIDIxOSwgMjA4LCAyNSwgMSwgCisgICAgMTczLCAyMjUsIDc0LCAyNSwgMSwgMTczLCAyMjIsIDk0LCAyNSwgMSwgMTczLCAyMjEsIDI0NSwgMjUsIDEsIDE3MywgMjE4LCAKKyAgICAxNDUsIDI1LCAxLCAxNzMsIDIwNiwgMTMwLCAyNSwgMSwgMTczLCAyMTksIDIxMCwgMjUsIDEsIDE3MywgMjM2LCAxODcsIAorICAgIDI1LCAxLCAxNzMsIDIyMCwgNjMsIDI1LCAxLCAxNzMsIDIxOCwgMTcwLCAyNSwgMSwgMTczLCAyMTgsIDE2NiwgMjUsIDEsIAorICAgIDE3MywgMjQ4LCAxMiwgMjUsIDEsIDE3MywgMjAyLCAyNDIsIDI1LCAxLCAxNzMsIDIyMiwgOTksIDI1LCAxLCAxNzMsIDIxMiwgCisgICAgMTc1LCAyNSwgMSwgMTczLCAyMTksIDk2LCAyNSwgMSwgMTczLCAyMjUsIDkxLCAyNSwgMSwgMTczLCAyMDUsIDIwOSwgMjUsIAorICAgIDEsIDE3MywgMjE4LCAxNTIsIDIxOSwgMTc1LCAyNSwgMSwgMTczLCAyMTksIDg4LCAyNSwgMSwgMTczLCAyMjYsIDIzMywgCisgICAgMjUsIDEsIDE3MywgMjE5LCAyMTUsIDI1LCAxLCAxNzMsIDIyMiwgMjA4LCAyNSwgMSwgMTczLCAyMjIsIDg3LCAyNSwgMSwgCisgICAgMTczLCAyMjQsIDQyLCAyNSwgMSwgMTczLCAyMjUsIDIzNywgMjUsIDEsIDE3MywgMjE5LCA5NCwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICAxNzUsIDI1LCAxLCAxNzMsIDIwMCwgMjA0LCAyNSwgMSwgMTczLCAyMTksIDIxMSwgMjUsIDEsIDE3MywgMjE4LCAxNTUsIAorICAgIDI1LCAxLCAxNzMsIDIxOCwgMTQ3LCAyNSwgMSwgMTczLCAyMjUsIDI1MiwgMjE5LCA1MiwgMjUsIDEsIDE3MywgMjE4LCAKKyAgICAxNTMsIDI1LCAxLCAxNzMsIDIyMCwgNzEsIDI1LCAxLCAxNzMsIDIyMiwgMjM1LCAyMTgsIDE1OCwgMjUsIDEsIDE3MywgCisgICAgMjAwLCAxMDksIDI1LCAxLCAxNzMsIDIyMCwgNzAsIDI1LCAxLCAxNzMsIDIwOSwgMjE1LCAyNSwgMSwgMTczLCAyMTAsIAorICAgIDE0MCwgMjUsIDEsIDE3MywgMjIyLCA5NSwgMjUsIDEsIDE3MywgMjIyLCAyMTUsIDI1LCAxLCAxNzMsIDIyMiwgMTA1LCAyNSwgCisgICAgMSwgMTczLCAyMjYsIDIyMSwgMjUsIDEsIDE3MywgMjIyLCA5NiwgMjUsIDEsIDE3MywgMjI2LCAyMjUsIDI1LCAxLCAxNzMsIAorICAgIDIyMiwgMTA5LCAyMTUsIDE5OSwgMjUsIDEsIDE3MywgMTk5LCAxNzcsIDI1LCAxLCAxNzMsIDIxOSwgODQsIDI1LCAxLCAKKyAgICAxNzMsIDIyMSwgMjAwLCAyNSwgMSwgMTczLCAyMjEsIDM5LCAyNSwgMSwgMTczLCAyMTAsIDE2LCAyNSwgMSwgMTczLCAyMjYsIAorICAgIDI0NCwgMjI1LCA1MiwgMjUsIDEsIDE3MywgMjI2LCAyNDQsIDIzNywgMTUzLCAyNSwgMSwgMTczLCAyMTksIDI0NSwgMjUsIAorICAgIDEsIDE3MywgMjIwLCAxMjYsIDI1LCAxLCAxNzMsIDIyNCwgMTU4LCAyNSwgMSwgMTczLCAyMTUsIDE2MCwgMjUsIDEsIDE3MywgCisgICAgMjE2LCA0NywgMjUsIDEsIDE3MywgMjA2LCAxNDYsIDI1LCAxLCAxMzcsIDIyMiwgODUsIDI1LCAxLCAxMzcsIDIwMSwgOTYsIAorICAgIDI1LCAxLCAxMzcsIDIxOSwgODIsIDI1LCAxLCAxMzcsIDIyMSwgMjUzLCAyNSwgMSwgMTM3LCAyMTksIDgwLCAyNSwgMSwgCisgICAgMTM3LCAyMjQsIDIwMywgMjUsIDEsIDEzNywgMjE5LCA4NSwgMjUsIDEsIDEzNywgMjE4LCAxNjUsIDI1LCAxLCAxMzcsIAorICAgIDIxOSwgMjI5LCAyNSwgMSwgMTM3LCAyMTgsIDU1LCAyNSwgMSwgMTM3LCAyMDAsIDIxNSwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAxODMsIDI1LCAxLCAxMzcsIDIxMCwgNjMsIDI1LCAxLCAxMzcsIDIxOSwgMTk0LCAyNSwgMSwgMTM3LCAyMjYsIDIyOCwgMjUsIAorICAgIDEsIDEzNywgMjA2LCAxMzIsIDI1LCAxLCAxMzcsIDIxMCwgNDIsIDI1LCAxLCAxMzcsIDIxOSwgOTMsIDI1LCAxLCAxMzcsIAorICAgIDIwNywgMjQ0LCAyNSwgMSwgMTM3LCAyMjYsIDIzMywgMjUsIDEsIDEzNywgMjAwLCA5NywgMjUsIDEsIDEzNywgMjI1LCAKKyAgICAyNTMsIDI1LCAxLCAxMzcsIDIxMiwgMywgMjUsIDEsIDEzNywgMjIyLCAyLCAyNSwgMSwgMTM3LCAyMjAsIDYyLCAyNSwgMSwgCisgICAgMTM3LCAyMjIsIDE4MywgMjUsIDEsIDEzNywgMjIyLCA4LCAyNSwgMSwgMTM3LCAyMTAsIDEzOSwgMjUsIDEsIDEzNywgMjAwLCAKKyAgICA0MSwgMjUsIDEsIDEzNywgMjE5LCA4NywgMjUsIDEsIDEzNywgMjI2LCAyMjQsIDIyMiwgODgsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMTkwLCAyNSwgMSwgMTM3LCAyMDQsIDIxNSwgMjUsIDEsIDEzNywgMjM1LCAxOTgsIDI1LCAxLCAxMzcsIDIxOSwgMTgwLCAKKyAgICAyNSwgMSwgMTM3LCAyMzcsIDExOCwgMjUsIDEsIDEzNywgMjIwLCA2NiwgMjUsIDEsIDEzNywgMjIxLCAyMzcsIDI1LCAxLCAKKyAgICAxMzcsIDIyNCwgMjMxLCAyNSwgMSwgMTM3LCAyMjAsIDQ4LCAyNSwgMSwgMTM3LCAyMjEsIDEwMiwgMjUsIDEsIDEzNywgCisgICAgMjIxLCAyNDEsIDI1LCAxLCAxMzcsIDIxNCwgMTg5LCAyNSwgMSwgMTM3LCAyMjEsIDIzOSwgMjUsIDEsIDEzNywgMjIxLCAKKyAgICAyNTUsIDI1LCAxLCAxMzcsIDIyNCwgMjUsIDI1LCAxLCAxMzcsIDIxOCwgMTU3LCAyNSwgMSwgMTM3LCAyMjIsIDEwOCwgMjUsIAorICAgIDEsIDEzNywgMjI1LCAyMjcsIDI1LCAxLCAxMzcsIDIxOCwgNDQsIDI1LCAxLCAxMzcsIDIwNiwgMTM1LCAyNSwgMSwgMTM3LCAKKyAgICAyMDksIDQsIDI1LCAxLCAxMzcsIDE5OSwgMTc3LCAyNSwgMSwgMTM3LCAyMjYsIDIyNSwgMjUsIDEsIDEzNywgMjEzLCAyMzMsIAorICAgIDI1LCAxLCAxMzcsIDIwNiwgMTg5LCAyNSwgMSwgMTM3LCAyMTksIDE5MSwgMjUsIDEsIDEzNywgMjIyLCA0LCAyNSwgMSwgCisgICAgMTM3LCAyMTgsIDE1NiwgMjUsIDEsIDEzNywgMjI2LCAyMjMsIDI1LCAxLCAxMzcsIDIxNSwgMTU0LCAyNSwgMSwgMTM3LCAKKyAgICAyMTUsIDI1MCwgMjUsIDEsIDEzNywgMjE4LCAxOCwgMjUsIDEsIDEzNywgMjI0LCAyMzcsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMjMwLCAyNSwgMSwgMTM3LCAyMjIsIDEsIDI1LCAxLCAxMzcsIDIxOSwgMjAzLCAyNSwgMSwgMTM3LCAxOTksIDE5MSwgMjUsIAorICAgIDEsIDEzNywgMjE2LCAxMzUsIDI1LCAxLCAxMzcsIDE5OSwgMTkwLCAyNSwgMSwgMTM3LCAyMjAsIDcxLCAyNSwgMSwgMTM3LCAKKyAgICAyMTgsIDE0NiwgMjUsIDEsIDEzNywgMjA4LCAyMSwgMjUsIDEsIDEzNywgMjI2LCAxLCAyNSwgMSwgMTM3LCAyMTksIDIxOSwgCisgICAgMjUsIDEsIDEzNywgMjE5LCAxODgsIDI1LCAxLCAxMzcsIDIwNCwgMTk2LCAyNSwgMSwgMTM3LCAyMjIsIDEyLCAyNSwgMSwgCisgICAgMTM3LCAyMjUsIDI0NywgMjUsIDEsIDEzNywgMjE4LCAxNTQsIDI1LCAxLCAxMzcsIDIwNiwgMTMzLCAyNSwgMSwgMTM3LCAKKyAgICAyMjIsIDIxMCwgMjUsIDEsIDEzNywgMjE5LCAyMjgsIDI1LCAxLCAxMzcsIDIyNCwgMjMwLCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDIwOSwgMjUsIDEsIDEzNywgMjE4LCAxNTksIDI1LCAxLCAxMzcsIDIxOSwgNjYsIDI1LCAxLCAxMzcsIDIzNSwgMTgyLCAyNSwgCisgICAgMSwgMTM3LCAyMjYsIDE1LCAyNSwgMSwgMTM3LCAyMTMsIDE0MCwgMjE3LCA5MiwgMjUsIDEsIDEzNywgMjA3LCAxNSwgMjUsIAorICAgIDEsIDEzNywgMjA1LCAxNTQsIDI1LCAxLCAxMzcsIDIxOCwgNDEsIDI1LCAxLCAxMzcsIDIxMywgMzMsIDI1LCAxLCAxMzcsIAorICAgIDIyNSwgMzEsIDI1LCAxLCAxMzcsIDIyMiwgNjMsIDI1LCAxLCAxMzcsIDIyMywgMjQzLCAyNSwgMSwgMTM3LCAyMDcsIDE5MywgCisgICAgMjUsIDEsIDEzNywgMjIxLCA0MSwgMjUsIDEsIDEzNywgMjEwLCAyOCwgMjUsIDEsIDEzNywgMjEwLCAzOCwgMjUsIDEsIAorICAgIDEzNywgMjI1LCAxOTksIDI1LCAxLCAxMzcsIDIxOCwgMTMzLCAyNSwgMSwgMTM3LCAyMDksIDIyMCwgMjUsIDEsIDEzNywgCisgICAgMjE4LCAxNDgsIDI1LCAxLCAxMzcsIDIxNiwgNjEsIDI1LCAxLCAxMzcsIDIxOSwgMTUwLCAyNSwgMSwgMTM3LCAyMDksIAorICAgIDI1MSwgMjUsIDEsIDEzNywgMjE0LCAyMDQsIDI1LCAxLCAxMzcsIDIyMCwgMjM1LCAyNSwgMSwgMTM3LCAyMjQsIDcwLCAyNSwgCisgICAgMSwgMTM3LCAyMTMsIDE0MCwgMjIxLCAzNCwgMjUsIDEsIDEzNywgMjA2LCAxNSwgMjUsIDEsIDEzNywgMjE4LCAxMzUsIDI1LCAKKyAgICAxLCAxMzcsIDIyMiwgMTA5LCAyMTAsIDEzNSwgMjUsIDEsIDEzNywgMjEyLCAxLCAyNSwgMSwgMTM3LCAyMzcsIDE5NCwgMjUsIAorICAgIDEsIDk2LCAyMjAsIDcwLCAyNSwgMSwgOTYsIDIwNSwgMTYwLCAyNSwgMSwgOTYsIDIyMiwgOTgsIDI1LCAxLCA5NiwgMjI1LCAKKyAgICA3NCwgMjUsIDEsIDk2LCAyMDIsIDE4MCwgMjUsIDEsIDk2LCAyMjQsIDc2LCAyNSwgMSwgOTYsIDIxNiwgMjEwLCAyNSwgMSwgCisgICAgOTYsIDIwOSwgMTUsIDI1LCAxLCA5NiwgMjEzLCAyMDgsIDI1LCAxLCA5NiwgMjE4LCAxNjEsIDI1LCAxLCA5NiwgMjIwLCAKKyAgICA0MSwgMjUsIDEsIDk2LCAyMTQsIDIyMSwgMjUsIDEsIDk2LCAyMDYsIDI0NiwgMjUsIDEsIDk2LCAyMTksIDE5NiwgMjUsIDEsIAorICAgIDk2LCAyMjYsIDQzLCAyNSwgMSwgOTYsIDIwMCwgMjA3LCAyNSwgMSwgOTYsIDIxMSwgMTkwLCAyNSwgMSwgOTYsIDIxOSwgCisgICAgMjIwLCAyNSwgMSwgOTYsIDIxNiwgMjA3LCAyNSwgMSwgOTYsIDIwNSwgMTYxLCAyNSwgMSwgOTYsIDIyNSwgMjUxLCAyNSwgCisgICAgMSwgOTYsIDIyNCwgOTEsIDI1LCAxLCA5NiwgMjE4LCAxNjQsIDI1LCAxLCA5NiwgMjE5LCAxNzIsIDI1LCAxLCA5NiwgMjIyLCAKKyAgICAyMTYsIDI1LCAxLCA5NiwgMjE5LCAxODksIDI1LCAxLCA5NiwgMjE5LCAxNzEsIDI1LCAxLCA5NiwgMjE4LCAxNjMsIDI1LCAKKyAgICAxLCA5NiwgMjEzLCAzMCwgMjUsIDEsIDk2LCAyMTksIDg0LCAyNSwgMSwgOTYsIDIxNiwgNTksIDI1LCAxLCA5NiwgMjEyLCAKKyAgICA2MSwgMjUsIDEsIDk2LCAyMTksIDIwNCwgMjUsIDEsIDk2LCAyMjEsIDI0NywgMjUsIDEsIDk2LCAyMzUsIDE3NiwgMjUsIDEsIAorICAgIDk2LCAyMTksIDE5MiwgMjUsIDEsIDk2LCAyMTksIDk1LCAyNSwgMSwgOTYsIDIyMiwgMTY0LCAyNSwgMSwgOTYsIDIyNCwgCisgICAgNzIsIDI1LCAxLCA5NiwgMjE5LCAyMjUsIDI1LCAxLCA5NiwgMjIwLCA1NCwgMjUsIDEsIDk2LCAyMDcsIDE0LCAyMTgsIAorICAgIDE0NiwgMjUsIDEsIDk2LCAyMTAsIDE0MSwgMjUsIDEsIDk2LCAyMTQsIDIxNCwgMjUsIDEsIDk2LCAyMjAsIDc0LCAyMDksIAorICAgIDIyLCAyNSwgMSwgOTYsIDIxOSwgMjEyLCAyMTgsIDU1LCAyNSwgMSwgOTYsIDIwMCwgNSwgMjUsIDEsIDk2LCAyMzUsIDE3NywgCisgICAgMjUsIDEsIDk2LCAyMDQsIDIxNCwgMjUsIDEsIDk2LCAyMDAsIDIxLCAyNSwgMSwgOTYsIDIxNSwgMTA2LCAyNSwgMSwgOTYsIAorICAgIDIwNCwgMjAyLCAyNSwgMSwgOTYsIDIyNiwgMjMxLCAyNSwgMSwgOTYsIDIwOCwgMjAsIDI1LCAxLCA5NiwgMjA2LCAxMzQsIAorICAgIDI1LCAxLCA5NiwgMjAyLCAyNDMsIDI1LCAxLCA5NiwgMjAxLCA0NCwgMjUsIDEsIDk2LCAyMjUsIDE3MywgMjUsIDEsIDk2LCAKKyAgICAyMTQsIDIyNCwgMjUsIDEsIDk2LCAyMDcsIDI3LCAyNSwgMSwgOTYsIDIzNSwgMTk3LCAyNSwgMSwgOTYsIDIxOSwgMjM1LCAKKyAgICAyNSwgMSwgOTYsIDIxMCwgNDEsIDI1LCAxLCA5NiwgMjIxLCAyNDIsIDI1LCAxLCA5NiwgMjIyLCAxMDIsIDI1LCAxLCA5NiwgCisgICAgMjE4LCA1LCAyNSwgMSwgOTYsIDIxOSwgNDgsIDI1LCAxLCA5NiwgMjM2LCAyNiwgMjUsIDEsIDk2LCAyMDQsIDIwMywgMjUsIAorICAgIDEsIDk2LCAyMjYsIDUsIDI1LCAxLCA5NiwgMjAwLCA3MywgMjUsIDEsIDk2LCAyMTgsIDQyLCAyNDYsIDEyNiwgMjUsIDEsIAorICAgIDk2LCAxOTksIDI1MSwgMjUsIDEsIDk2LCAyMjIsIDMsIDI1LCAxLCA5NiwgMjIwLCA1OSwgMjUsIDEsIDk2LCAyMTUsIDE5NSwgCisgICAgMjUsIDEsIDk2LCAxOTksIDE5NiwgMjUsIDEsIDk2LCAyMjQsIDIzMiwgMjUsIDEsIDk2LCAyMzYsIDE4NywgMjUsIDEsIDk2LCAKKyAgICAyMzYsIDI1LCAyNSwgMSwgOTYsIDIxOSwgMTgyLCAyNSwgMSwgOTYsIDIyNiwgMjMzLCAyNSwgMSwgOTYsIDIyMiwgMjE5LCAKKyAgICAyNSwgMSwgOTYsIDIxOSwgMTk1LCAyNSwgMSwgOTYsIDIzNSwgMTgzLCAyNSwgMSwgOTYsIDIzNywgMTk1LCAyNSwgMSwgOTYsIAorICAgIDIxOCwgMTM2LCAyNSwgMSwgOTYsIDIxNSwgMjUxLCAyNSwgMSwgOTYsIDIwMCwgMTksIDI1LCAxLCA5NiwgMjE5LCAyMjEsIAorICAgIDI1LCAxLCA5NiwgMjE4LCA0MiwgMjQ4LCAyMDUsIDI1LCAxLCA5NiwgMjE3LCAyNDEsIDI1LCAxLCA5NiwgMjE1LCA3OSwgCisgICAgMjUsIDEsIDk2LCAyMjEsIDIwMCwgMjUsIDEsIDk2LCAyMzYsIDE4NSwgMjUsIDEsIDk2LCAyMjAsIDE1MSwgMjUsIDEsIDk2LCAKKyAgICAyMjEsIDM5LCAyNSwgMSwgOTYsIDIzNSwgMTgyLCAyNSwgMSwgOTYsIDIzNiwgMTkwLCA3MCwgMjUsIDEsIDk2LCAyMjAsIAorICAgIDIzNiwgMjUsIDEsIDk2LCAyMTQsIDIyMCwgMjUsIDEsIDk2LCAyMTksIDE4NCwgMjUsIDEsIDk2LCAyMjUsIDIzNywgMjUsIAorICAgIDEsIDk2LCAyMTUsIDE5MiwgMjUsIDEsIDk2LCAyMTgsIDE0OSwgMjUsIDEsIDk2LCAyMDAsIDIwLCAyNSwgMSwgOTYsIDIxOSwgCisgICAgMjA1LCAyNSwgMSwgOTYsIDIxNiwgMjExLCAyMTYsIDMzLCAyNSwgMSwgOTYsIDIzNiwgMTkwLCAyNDcsIDE2OCwgMjUsIDEsIAorICAgIDk2LCAyMzcsIDYsIDI1LCAxLCA5NiwgMjE5LCA4OSwgMjUsIDEsIDk2LCA2MiwgMjUsIDEsIDk2LCAyMDUsIDE1NCwgMjUsIAorICAgIDEsIDk2LCA3NCwgMjUsIDEsIDk2LCA3MCwgMjUsIDEsIDk2LCAyMjUsIDcyLCAyNSwgMSwgOTYsIDIxNiwgMjExLCAyMTUsIAorICAgIDExNCwgMjUsIDEsIDk2LCAyMDcsIDMyLCAyNSwgMSwgOTYsIDIwNiwgMjMzLCAyNSwgMSwgOTYsIDIyMCwgNzQsIDIyMCwgCisgICAgMjIzLCAyMzMsIDEwOSwgMjUsIDEsIDk2LCAyMTAsIDE2LCAyNSwgMSwgOTYsIDIwMCwgMTYsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAxNjUsIDI1LCAxLCA5NiwgMTk5LCAyMDEsIDI1LCAxLCA5NiwgMTk5LCAyMjgsIDIwNywgMTczLCAyNSwgMSwgOTYsIDE5OSwgCisgICAgMjI4LCAyNDMsIDEsIDI1LCAxLCA5NiwgMTk5LCAxODUsIDI1LCAxLCA5NiwgMTk5LCAxOTMsIDI1LCAxLCA5NiwgMjI2LCAKKyAgICAyMTksIDI1LCAxLCA5NiwgMjE1LCAyNDksIDI1LCAxLCA5NiwgMjE5LCA5MCwgMjM4LCAxMjYsIDI1LCAxLCA5NiwgMjE0LCAKKyAgICAyMTYsIDI1LCAxLCA5NiwgMjAwLCAyMTMsIDI1LCAxLCA5NiwgMjM3LCAxNDAsIDI1LCAxLCA5NiwgMjAzLCA1NCwgMjUsIDEsIAorICAgIDk2LCAyMjQsIDQyLCAyNSwgMSwgOTYsIDIyMSwgMjExLCAyNSwgMSwgOTYsIDIxMywgMTA3LCAyNSwgMSwgOTYsIDIxMywgCisgICAgMjM0LCAyNSwgMSwgOTYsIDIxOSwgMTY0LCAyNSwgMSwgOTYsIDIxOSwgMjUzLCAyNSwgMSwgOTYsIDIxMCwgOCwgMjUsIDEsIAorICAgIDk2LCAyMDksIDI1MSwgMjUsIDEsIDk2LCAyMzYsIDE5MCwgMjEzLCAxNDMsIDI1LCAxLCA5NiwgMTg4LCAyNSwgMSwgOTYsIAorICAgIDIxNSwgMjA0LCAyNSwgMSwgOTYsIDIyNCwgNzAsIDI1LCAxLCA5NiwgMjI2LCA4OCwgMjUsIDEsIDk2LCAyMjIsIDQwLCAyNSwgCisgICAgMSwgOTYsIDE3OCwgMjUsIDEsIDk2LCAyMjIsIDE2MSwgMjUsIDEsIDk2LCAyMDYsIDEzNiwgMjUsIDEsIDk2LCAyMjYsIAorICAgIDE2MywgMjUsIDEsIDk2LCAyMjEsIDEwNiwgMjUsIDEsIDk2LCAyMDYsIDE2NiwgMjUsIDEsIDk2LCAyMzcsIDE2NCwgMjUsIAorICAgIDEsIDk2LCAyMzUsIDE3MCwgMjUsIDEsIDIxNSwgMjMzLCAxNjEsIDI1LCAxLCAyMTUsIDIzMywgNjYsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjI2LCAxNSwgMjUsIDEsIDIxNSwgMjMzLCAyMzgsIDI1NSwgMjUsIDEsIDIxNSwgMjMzLCAyMTMsIDE2NywgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMDcsIDE1LCAyNSwgMSwgMjE1LCAyMzMsIDIxOCwgNDEsIDI1LCAxLCAyMTUsIDIzMywgMTk0LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIxMywgMzMsIDI1LCAxLCAyMTUsIDIzMywgMjEzLCA4MSwgMjUsIDEsIDIxNSwgMjMzLCAyMjIsIDYzLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIwNywgMzIsIDI1LCAxLCAyMTUsIDIzMywgMjIwLCA3MywgMjUsIDEsIDIxNSwgMjMzLCAyMTksIAorICAgIDk2LCAyNSwgMSwgMjE1LCAyMzMsIDIyMywgMjQzLCAyNSwgMSwgMjE1LCAyMzMsIDIwNywgMTkzLCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIxMCwgMjgsIDI1LCAxLCAyMTUsIDIzMywgMjA5LCAxODIsIDI1LCAxLCAyMTUsIDIzMywgMjEwLCAxMzcsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjI1LCAxOTksIDI1LCAxLCAyMTUsIDIzMywgMjI2LCAyMzMsIDI1LCAxLCAyMTUsIDIzMywgMjE4LCAKKyAgICAxMDQsIDI1LCAxLCAyMTUsIDIzMywgMjE4LCAxMzMsIDI1LCAxLCAyMTUsIDIzMywgMjE5LCA2NywgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAxOTksIDIyNywgMjUsIDEsIDIxNSwgMjMzLCAyMDksIDIyMCwgMjUsIDEsIDIxNSwgMjMzLCAxODMsIDI1LCAxLCAKKyAgICAyMTUsIDIzMywgMjE4LCAxNjcsIDI1LCAxLCAyMTUsIDIzMywgMjE1LCAyNDksIDI1LCAxLCAyMTUsIDIzMywgMjE4LCAxNDgsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjAwLCAyMTMsIDI1LCAxLCAyMTUsIDIzMywgMjE2LCA2MSwgMjUsIDEsIDIxNSwgMjMzLCAKKyAgICAyMTIsIDE3NSwgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDE1MCwgMjUsIDEsIDIxNSwgMjMzLCAyMTMsIDEwNywgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMjYsIDI0MywgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDE4MSwgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDIzMiwgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMTAsIDgsIDI1LCAxLCAyMTUsIDIzMywgMjE0LCAyMjEsIDI1LCAxLCAyMTUsIDIzMywgMjM3LCAKKyAgICA2LCAyNSwgMSwgMjE1LCAyMzMsIDIwMSwgMTE0LCAyNSwgMSwgMjE1LCAyMzMsIDIyNCwgMjEwLCAyNSwgMSwgMjE1LCAyMzMsIAorICAgIDIyNCwgNzAsIDI1LCAxLCAyMTUsIDIzMywgMjI2LCA4OCwgMjUsIDEsIDIxNSwgMjMzLCAyMjIsIDEwMCwgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMTMsIDEzOSwgMjUsIDEsIDIxNSwgMjMzLCAxNzgsIDI1LCAxLCAyMTUsIDIzMywgMjIxLCAxMzYsIDI1LCAxLCAKKyAgICAyMTUsIDIzMywgMjIyLCAxMDgsIDI1LCAxLCAyMTUsIDIzMywgMjA2LCAxNDYsIDI1LCAxLCAyMTUsIDIzMywgMjI2LCA1MCwgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMTIsIDIxLCAyNSwgMSwgMjE1LCAyMzMsIDIwMSwgMTY1LCAyMjEsIDQ0LCAxLCAyMDcsIDM2LCAKKyAgICAyMjEsIDQ0LCAxLCAyMTksIDIwMSwgMjIxLCA0NCwgMSwgMTk5LCAyNDUsIDIyMSwgNDQsIDEsIDIyMSwgMTY2LCAyMjEsIAorICAgIDQ0LCAxLCAyNDksIDEzNiwgMjIxLCA0NCwgMSwgMjQyLCA1OCwgMjIxLCA0NCwgMSwgNjIsIDIyMSwgNDQsIDEsIDIxNSwgCisgICAgMjI5LCAyMjEsIDQ0LCAxLCAyMjYsIDIwMiwgMjIxLCA0NCwgMSwgMjM0LCAxNjksIDIyMSwgNDQsIDEsIDI0MiwgMzMsIAorICAgIDIyMSwgNDQsIDEsIDI0NiwgMTkyLCAyMjEsIDQ0LCAxLCAyMjcsIDcsIDIyMSwgNDQsIDEsIDIxNywgOTMsIDIyMSwgNDQsIAorICAgIDEsIDIyMiwgMjE2LCAyMjEsIDQ0LCAxLCAyMTksIDExOCwgMjIxLCA0NCwgMSwgMTcyLCAyMjEsIDQ0LCAxLCAyMTcsIDYzLCAKKyAgICAyMjEsIDQ0LCAxLCA3NCwgMjIxLCA0NCwgMSwgMjEzLCAxLCAyMjEsIDQ0LCAxLCAyMTAsIDMzLCAyMjEsIDQ0LCAxLCAyMDYsIAorICAgIDEwNSwgMjIxLCA0NCwgMSwgMjM5LCAyNywgMjIxLCA0NCwgMSwgMjAxLCAxMTQsIDIyMSwgNDQsIDEsIDcyLCAyMjEsIDQ0LCAKKyAgICAxLCAyMjYsIDg4LCAyMjEsIDQ0LCAxLCAyMjUsIDgwLCAyMjEsIDQ0LCAxLCAxOTQsIDIyMSwgNDQsIDEsIDIzNCwgMjIzLCAKKyAgICAyMjEsIDQ0LCAxLCAyMTMsIDg4LCAyMjEsIDQ0LCAxLCAyMDYsIDE3OSwgMjIxLCA0NCwgMTcsIDE5OSwgODEsIDIyMSwgNDQsIAorICAgIDE3LCAxMDIsIDIyMSwgNDQsIDE3LCAxMDUsIDIyMSwgNDQsIDE3LCAxNDcsIDIyMSwgNDQsIDE3LCAxNDksIDIyMSwgNDQsIAorICAgIDE3LCAxNjQsIDIyMSwgNDQsIDE3LCAxODcsIDIyMSwgNDQsIDE3LCAyMTAsIDEzNSwgMjIxLCA0NCwgMTcsIDE5MiwgMjIxLCAKKyAgICA0NCwgMTcsIDIxOSwgMTEzLCAyMjEsIDQ0LCAyNDIsIDEwLCAyMjEsIDQ0LCA1MywgMjQyLCAxMCwgMjQ5LCA1OCwgMjAzLCAKKyAgICA4NywgMSwgMjM4LCAxNjEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDE2MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjExLCAyMDIsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzNywgMTk1LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMjIsIDEwMywgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMjAwLCA2LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzYsIDc0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAKKyAgICAyNDEsIDgxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMjYsIDQ5LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMjcsIDE2NiwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjMzLCA2NywgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAxLCAxMTQsIDI0OSwgNTgsIAorICAgIDIwMywgODcsIDEsIDE5OSwgMTQsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzNiwgMTksIDI0OSwgNTgsIDIwMywgODcsIDEsIAorICAgIDI0MCwgMjExLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyNDcsIDc2LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDMsIDE3NSwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTM4LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyNDksIDEzNiwgMjQ5LCA1OCwgMjAzLCAKKyAgICA4NywgMSwgMjAxLCAxNjYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMCwgNDUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDE3MiwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAxLCAxMTEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDYyLCAyNDksIDU4LCAyMDMsIDg3LCAKKyAgICAxLCA3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjE3LCA2MywgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNjYsIDI0OSwgNTgsIAorICAgIDIwMywgODcsIDEsIDIzOCwgMjU1LCAyNDksIDU4LCAyMDMsIDg3LCAxLCA3MiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNzAsIAorICAgIDI0OSwgNTgsIDIwMywgODcsIDM4LCAxMjIsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMTI4LCAyMDUsIDE3NCwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDIyMSwgMjA2LCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDIyNCwgNTYsIAorICAgIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjM0LCA1NywgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxMjUsIDEyMywgMjIsIDIyNywgNCwgMTI1LCAxMjMsIDIyLCAyMjcsIDAsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI2LCAxNjAsIDEyNSwgMTIzLCAyMiwgMjI2LCAxMjYsIDEyNSwgMTIzLCAyMiwgMjI3LCAyNSwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjcsIDIyLCAxMjUsIDEyMywgMjIsIDIyNiwgNiwgMTI1LCAxMjMsIDIyLCAyMjUsIDIzNCwgMTI1LCAxMjMsIDIyLCAyMjcsIAorICAgIDYsIDEyNSwgMTIzLCAyMiwgMjI2LCAyMTcsIDEyNSwgMTIzLCAyMiwgMjI3LCA4MSwgMTI1LCAxMjMsIDIyLCAyMjcsIDc4LCAKKyAgICAxMjUsIDEyMywgMjIsIDIyNiwgNjcsIDEyNSwgMTIzLCAyMiwgMjI2LCA2NCwgMTI1LCAxMjMsIDIyLCAyMjcsIDE5LCAxMjUsIAorICAgIDEyMywgMjIsIDIyNywgMTcsIDEyNSwgMTIzLCAyMiwgMjI2LCA4LCAxMjUsIDEyMywgMjIsIDIyNiwgNywgMTI1LCAxMjMsIAorICAgIDIyLCAyMjYsIDg1LCAxMjUsIDEyMywgMjIsIDIyNiwgNTMsIDEyNSwgMTIzLCAyMiwgMjI2LCAxNjIsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI2LCAxNjEsIDEyNSwgMTIzLCAyMiwgMjI3LCA5NiwgMTI1LCAxMjMsIDIyLCAyMjcsIDIxLCAxMjUsIDEyMywgMjIsIAorICAgIDIyNSwgMjI1LCAxMjUsIDEyMywgMjIsIDIyNSwgMjE2LCAxMjUsIDEyMywgMjIsIDIyNywgMTA0LCAxMjUsIDEyMywgMjIsIAorICAgIDIyNywgOTcsIDEyNSwgMTIzLCAxMTEsIDIwMywgNjUsIDEyNSwgMTIzLCAxMTEsIDIxOCwgMTM5LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMjUsIDU4LCAxMjUsIDEyMywgMTExLCAyMzQsIDE1MCwgMTI1LCAxMjMsIDExMSwgMjE5LCAyNCwgMTI1LCAxMjMsIDExMSwgCisgICAgMjEzLCAxOTksIDEyNSwgMTIzLCAxMTEsIDIxOSwgNTEsIDEyNSwgMTIzLCAxMTEsIDIxNCwgMTMzLCAxMjUsIDEyMywgMTExLCAKKyAgICAyMDAsIDYxLCAxMjUsIDEyMywgMTExLCAyMzQsIDM2LCAxMjUsIDEyMywgMTExLCAyMjIsIDEyMywgMTI1LCAxMjMsIDExMSwgCisgICAgMjQ3LCAxMiwgMTI1LCAxMjMsIDExMSwgMjIwLCA3OCwgMTI1LCAxMjMsIDExMSwgMjMzLCAyMjgsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIxNSwgMTIyLCAxMjUsIDEyMywgMTExLCAyMTgsIDE0NCwgMTI1LCAxMjMsIDExMSwgMjIwLCAxMTYsIDEyNSwgMTIzLCAKKyAgICAxMTEsIDI1MCwgMTM5LCAxMjUsIDEyMywgMTExLCAyMDAsIDE3NywgMTI1LCAxMjMsIDExMSwgMjQ3LCAxMDksIDEyNSwgCisgICAgMTIzLCAxMzQsIDI0NiwgMTYxLCAyMDQsIDIxMSwgMTI1LCAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIwOSwgMjksIDEyNSwgMTIzLCAKKyAgICAxMzQsIDI0NiwgMTYxLCAyMjYsIDIzNSwgMTI1LCAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIyNiwgMTkzLCAxMjUsIDEyMywgCisgICAgMTM0LCAyNDYsIDE2MSwgMjA4LCAxOCwgMTI1LCAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIzMywgMTk0LCAxMjUsIDEyMywgMTM0LCAKKyAgICAyNDYsIDE2MSwgMjA2LCAyMjAsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjA2LCA1OCwgMTI1LCAxMjMsIDIsIDIwMiwgCisgICAgMTc2LCAyMDUsIDIxLCAyNDcsIDY3LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDI0NywgMSwgMTI1LCAxMjMsIDIsIDIwMiwgCisgICAgMTc2LCAyMDYsIDgzLCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIzNywgMTM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIAorICAgIDIxOCwgMTM0LCAxMjUsIDEyMywgMiwgMjAwLCAxMzUsIDIxMywgOTAsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgMjA1LCAKKyAgICAxMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgMjM3LCAxNzYsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjExLCAxODQsIAorICAgIDEyNSwgMTIzLCAyLCAyMjIsIDYyLCAyMDgsIDIyLCAxMjUsIDEyMywgMiwgMjAyLCAxNzYsIDIxOCwgMTgzLCAxMjUsIDEyMywgCisgICAgMiwgMjMyLCAyMzYsIDIwMCwgODAsIDEyNSwgMTIzLCAyLCAyMDAsIDE3NiwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMDUsIAorICAgIDgsIDIxMiwgMjQ2LCAxMjUsIDEyMywgMTcsIDE5OSwgODEsIDEyNSwgMTIzLCAxNywgMTAyLCAxMjUsIDEyMywgMTcsIDEwNSwgCisgICAgMTI1LCAxMjMsIDE3LCAxNDcsIDEyNSwgMTIzLCAxNywgMTQ5LCAxMjUsIDEyMywgMTcsIDE2NCwgMTI1LCAxMjMsIDE3LCAKKyAgICAxODcsIDEyNSwgMTIzLCAxNywgMjEwLCAxMzUsIDEyNSwgMTIzLCAxNywgMTkyLCAxMjUsIDEyMywgMTcsIDIxOSwgMTEzLCAKKyAgICAxMjUsIDEyMywgNDEsIDIwNiwgMTYxLCAxMjUsIDEyMywgNDEsIDIzMywgODAsIDEyNSwgMTIzLCA0MSwgMjA2LCAxNjcsIAorICAgIDIwNiwgNDgsIDEyNSwgMTIzLCA0MSwgMjIxLCAxNjcsIDEyNSwgMTIzLCA0MSwgMjMzLCA4MywgMjIxLCAxNjcsIDEyNSwgCisgICAgMTIzLCA0MSwgMjA2LCAxNjcsIDI0OCwgMTcwLCAxMjUsIDEyMywgNDEsIDIwNSwgODUsIDEyNSwgMTIzLCAyLCAyMDIsIAorICAgIDE3NiwgMjI0LCAzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTMyLCAxMjUsIDEyMywgMiwgMjM0LCAzMSwgMTI1LCAxMjMsIDIsIAorICAgIDIwNiwgNzMsIDIzNCwgMzEsIDEyNSwgMTIzLCAyLCAxOTgsIDI0NCwgMjA2LCAxMTYsIDEyNSwgMTIzLCAyLCAyMzMsIDIxMiwgCisgICAgMTI1LCAxMjMsIDIsIDIxOCwgMTk3LCAxMjUsIDEyMywgMiwgMjAwLCAxNjgsIDEyNSwgMTIzLCAyLCAyMTgsIDEzNywgMTI1LCAKKyAgICAxMjMsIDIsIDI1MCwgMTIzLCAxMjUsIDEyMywgMiwgMjA0LCAxMzYsIDI0NywgNjYsIDEyNSwgMTIzLCAyLCAyMjIsIDYyLCAKKyAgICAyMDUsIDI0LCAxMjUsIDEyMywgMiwgMjA2LCAyMjEsIDEyNSwgMTIzLCAyLCAyMjQsIDY3LCAxMjUsIDEyMywgMiwgMjIwLCAKKyAgICAyNTIsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjM0LCAyMTksIDIyNCwgMTUsIDIxOCwgMTQyLCAyMTgsIDE0MSwgMTI1LCAKKyAgICAxMjMsIDIsIDI0NiwgMTYxLCAyNDIsIDIxMywgMjA1LCAxNSwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMDQsIDEzNCwgCisgICAgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMDQsIDEzNSwgMjQ2LCAxODAsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjE0LCAKKyAgICAyMTksIDI0MSwgMjM1LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIxOCwgMTkwLCAyMDUsIDE0NSwgMTI1LCAxMjMsIDI0NiwgCisgICAgMTMzLCAyLCAyMDUsIDE5LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgNDcsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgCisgICAgMjI0LCAxNTUsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjI1LCA1NiwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIAorICAgIDEzMSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjYsIDY4LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIzNCwgMTQ3LCAKKyAgICAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyMSwgMzcsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjA2LCA1OSwgMTI1LCAxMjMsIAorICAgIDI0NiwgMTMzLCAyLCAyMDUsIDI5LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIxNSwgMjQyLCAxMjUsIDEyMywgMjQ2LCAKKyAgICAxMzMsIDIsIDIyNiwgMjA1LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIzNCwgMjA5LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIAorICAgIDIwMywgODQsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM3LCAxNzMsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCA4NywgCisgICAgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDUsIDIsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjI1LCAyMjAsIDEyNSwgMTIzLCAKKyAgICAyNDYsIDEzMywgMiwgMjAxLCAxNTYsIDExNCwgMSwgMTcyLCAxMTQsIDEsIDI0OSwgMTM2LCAxMTQsIDEsIDExLCAxNzIsIAorICAgIDExNCwgMSwgMjE1LCAxMzUsIDExNCwgMSwgMTc4LCAxMTQsIDEsIDIyMSwgMjE0LCAxMTQsIDEsIDI1MCwgMjM0LCAxNzgsIAorICAgIDExNCwgMSwgMjM3LCAxOTUsIDExNCwgMSwgMjAzLCA5MCwgMTE0LCAxLCAyMDIsIDIzNSwgMTE0LCAxLCAyMDcsIDM2LCAKKyAgICAxMTQsIDEsIDI0MiwgNTgsIDExNCwgMSwgMTEsIDIwNCwgMjUzLCAxMTQsIDEsIDExLCAyMDcsIDM2LCAxMTQsIDEsIDIwNCwgCisgICAgMjUzLCAxMTQsIDEsIDI0MSwgMjIwLCAxMTQsIDEsIDE4OCwgMTE0LCAxLCAyMTksIDE1NCwgMTE0LCAxLCAxMSwgMjE5LCAKKyAgICAyMSwgMTE0LCAxLCAyNTAsIDIzNCwgMTg4LCAxMTQsIDEsIDIxOSwgMjEsIDExNCwgMSwgMjE5LCA3LCAxMTQsIDEsIDE5NCwgCisgICAgMTE0LCAxLCAyMjQsIDEsIDExNCwgMSwgMjI0LCAyMjMsIDExNCwgMSwgMjI0LCAyMTIsIDExNCwgMSwgMjA1LCAyMDAsIAorICAgIDExNCwgMSwgMjQwLCAyMTksIDExNCwgMSwgMjA1LCAxOTIsIDExNCwgMSwgMjQwLCAyMTgsIDExNCwgMSwgMTYxLCAxMTQsIAorICAgIDEsIDIzNiwgODksIDExNCwgMSwgMTEsIDE2MSwgMTE0LCAxLCAyMTQsIDE1OSwgMTE0LCAxLCAyMTQsIDEzNiwgMTE0LCAxLCAKKyAgICAyMTksIDI1MywgMTE0LCAxLCAyMTksIDIwMiwgMTE0LCAxLCAyNTAsIDIzNCwgMjE5LCAyNTMsIDExNCwgMSwgMTQ0LCAxMTQsIAorICAgIDEsIDIwMCwgMTgxLCAxMTQsIDEsIDIzNSwgMTk5LCAxMTQsIDEsIDIzNSwgMTc0LCAxMTQsIDEsIDIwNSwgNywgMTE0LCAxLCAKKyAgICAyMzksIDc3LCAxMTQsIDEsIDIxOCwgNjAsIDExNCwgMSwgMjE4LCA0MywgMTE0LCAxLCAyMDUsIDIyLCAxMTQsIDEsIDIzOSwgCisgICAgODcsIDExNCwgMSwgMTEsIDIwNSwgMjIsIDExNCwgMSwgMTEsIDIzOSwgODcsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMjIsIAorICAgIDExNCwgMSwgMjEwLCAxMTQsIDExNCwgMSwgMjA4LCAxNzksIDExNCwgMSwgMTk5LCA3NywgMTE0LCAxLCAxOTksIDUsIDExNCwgCisgICAgMSwgMjA1LCAzMiwgMTE0LCAxLCAyMzksIDkzLCAxMTQsIDEsIDExLCAyMDUsIDMyLCAxMTQsIDEsIDIxMiwgNjQsIDExNCwgCisgICAgMSwgMTk5LCAxMTQsIDExNCwgMSwgMTk5LCA2LCAxMTQsIDEsIDE5OCwgMjMyLCAxMTQsIDEsIDE5OCwgMjEyLCAxMTQsIDEsIAorICAgIDI1MCwgMjM0LCAxOTgsIDIzMiwgMTE0LCAxLCAxOTgsIDIwNCwgMTE0LCAxLCAxOTgsIDIxMSwgMTE0LCAxLCAyMDEsIDExNCwgCisgICAgMTE0LCAxLCAyNTEsIDE4NSwgMTE0LCAxLCAyMzQsIDg0LCAxMTQsIDEsIDIyMCwgMTIxLCAxMTQsIDIsIDI1MCwgMTcxLCAKKyAgICAxMTQsIDIsIDIxMywgMTY1LCAyMDIsIDE4NywgMTE0LCAyLCAyMTMsIDE2NSwgMjUwLCAxNzEsIDExNCwgMjIsIDIsIDYyLCAKKyAgICAxMTQsIDIyLCAyLCAyNTIsIDEzOCwgMTE0LCAyMiwgMiwgMjUxLCAxODEsIDExNCwgMjIsIDIsIDI1MSwgODUsIDExNCwgMjIsIAorICAgIDIsIDI1MSwgNzYsIDExNCwgMjIsIDIsIDc0LCAxMTQsIDIyLCAyLCAyMTcsIDYzLCAxMTQsIDIyLCAyLCAyMDEsIDAsIDExNCwgCisgICAgMjIsIDIsIDIwMSwgMTQ3LCAxMTQsIDIyLCAyLCA3MiwgMTE0LCAyMiwgMiwgMjM4LCAxNzksIDExNCwgMjIsIDIsIDIzOCwgCisgICAgMTY1LCAxMTQsIDIyLCAyLCAyMTcsIDExOCwgMTE0LCAyMiwgMiwgNzAsIDExNCwgMjIsIDIsIDIzMiwgMjQwLCAxMTQsIDIyLCAKKyAgICAyLCAyMzIsIDIzOSwgMTE0LCAyMiwgMiwgMjMyLCAyMzgsIDExNCwgMjIsIDIsIDIyOCwgNDUsIDExNCwgMjIsIDIsIDIyOCwgCisgICAgMTc4LCAxMTQsIDIyLCAyLCAyMjgsIDE1MSwgMTE0LCAyMiwgMiwgMjI4LCA4LCAxMTQsIDIyLCAyLCAyMjgsIDkxLCAxMTQsIAorICAgIDIyLCAyLCA2NiwgMTE0LCAyMiwgMiwgMjA0LCA0NiwgMTE0LCAyMiwgMiwgMjA0LCA0NSwgMTE0LCAyMiwgMiwgMjA0LCA0NCwgCisgICAgMTE0LCAyMiwgMiwgMjAzLCAxODIsIDExNCwgMjIsIDIsIDIwNCwgMjgsIDExNCwgMjIsIDIsIDIwMywgMjQ2LCAxMTQsIDIyLCAKKyAgICAyLCAyMDAsIDEyMywgMTE0LCAyMiwgMiwgMjAwLCA5LCAxMTQsIDIyLCAyLCAyNTEsIDIyMSwgMTE0LCAyMiwgMiwgMjUxLCAKKyAgICAyMTcsIDExNCwgMjIsIDIsIDIzOCwgMTA4LCAxMTQsIDIyLCAyLCAyMTIsIDIxOSwgMjM4LCAxMDgsIDExNCwgMjIsIDIsIAorICAgIDIzOCwgMTE1LCAxMTQsIDIyLCAyLCAyMTIsIDIxOSwgMjM4LCAxMTUsIDExNCwgMjIsIDIsIDI1MSwgMTc2LCAxMTQsIDIyLCAKKyAgICAyLCAyMzgsIDIzNCwgMTE0LCAyMiwgMiwgMjUwLCAxMzksIDExNCwgMjIsIDIsIDIxNywgMywgMTE0LCAyMiwgMiwgMjIwLCAKKyAgICAyMTQsIDExNCwgMjIsIDIsIDIxOSwgMjU1LCAxMTQsIDE1MCwgMjEzLCA0NiwgMTE0LCAxNTAsIDIwNSwgMTU4LCAyMTMsIAorICAgIDQ2LCAxMTQsIDE1MCwgNTYsIDExNCwgMTUwLCA1NywgMTE0LCAxLCAyMDUsIDE3MiwgMTE0LCAxLCAyMDUsIDE3MSwgMTE0LCAKKyAgICAxLCAyMDUsIDE3MCwgMTE0LCAxLCAyMDUsIDE2OSwgMTE0LCAxLCAyMDUsIDE2OCwgMTE0LCAxLCAyMDUsIDE2NywgMTE0LCAKKyAgICAxLCAyMDUsIDE2NiwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNzMsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTcyLCAxMTQsIAorICAgIDEsIDIxMywgMTY1LCAyMDUsIDE3MCwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNjksIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgCisgICAgMTY4LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE2NiwgMTgsIDIyOCwgMTAsIDgxLCAxOCwgMjQ2LCA2MSwgMTgsIDI0NiwgCisgICAgNjAsIDE4LCAyNDYsIDU5LCAxOCwgMjQ2LCA1OCwgMTgsIDI0NiwgNTcsIDE4LCAyNDYsIDU2LCAxOCwgMjQ2LCA1NSwgMTgsIAorICAgIDI0NiwgNTQsIDE4LCAyNDYsIDUzLCAxOCwgMjQ2LCA1MiwgMTgsIDI0NiwgNTEsIDE4LCAyNDYsIDUwLCAxOCwgMjQ2LCA0OSwgCisgICAgMTgsIDI0NiwgNDgsIDE4LCAyNDYsIDQ3LCAxOCwgMjQ2LCA0NiwgMTgsIDI0NiwgNDUsIDE4LCAyNDYsIDQ0LCAxOCwgMjQ2LCAKKyAgICA0MywgMTgsIDI0NiwgNDIsIDE4LCAyNDYsIDQxLCAxOCwgMjQ2LCA0MCwgMTgsIDI0NiwgMzksIDE4LCAyNDYsIDM4LCAxOCwgCisgICAgMjQ2LCAzNywgMTgsIDI0NiwgMzYsIDE4LCAyNDYsIDM1LCAxOCwgMjQ2LCAzNCwgMTgsIDI0NiwgMzMsIDE4LCAyNDYsIDMyLCAKKyAgICAxOCwgMjQ2LCAzMSwgMTgsIDI0NiwgMzAsIDE4LCAyNDYsIDI5LCAxOCwgMjQ2LCAyOCwgMTgsIDI0NiwgMjcsIDE4LCAyNDYsIAorICAgIDI2LCAxOCwgMjQ2LCAyNSwgMTgsIDI0NiwgMjQsIDE4LCAyNDYsIDIzLCAxOCwgMjQ2LCAyMiwgMTgsIDI0NiwgMjEsIDE4LCAKKyAgICAyNDYsIDIwLCAxOCwgMjQ2LCAxOSwgMTgsIDI0NiwgMTgsIDE4LCAyNDYsIDE3LCAxOCwgMjQ2LCAxNiwgMTgsIDI0NiwgMTUsIAorICAgIDE4LCAyNDYsIDE0LCAxOCwgMjQ2LCAxMywgMTgsIDI0NiwgMTIsIDE4LCAyNDYsIDExLCAxOCwgMjQ2LCAxMCwgMTgsIDI0NiwgCisgICAgOSwgMTgsIDI0NiwgOCwgMTgsIDI0NiwgNywgMTgsIDI0NiwgNiwgMTgsIDI0NiwgNSwgMTgsIDI0NiwgNCwgMTgsIDI0NiwgCisgICAgMywgMTgsIDI0NiwgMiwgMTgsIDI0NiwgMSwgMTgsIDI0NiwgMCwgMTgsIDI0NSwgMjU1LCAxOCwgMjQ1LCAyNTQsIDE4LCAKKyAgICAyNDUsIDI1MywgMTgsIDI0NSwgMjUyLCAxOCwgMjQ1LCAyNTEsIDE4LCAyNDUsIDI1MCwgMTgsIDI0NSwgMjQ5LCAxOCwgCisgICAgMjQ1LCAyNDgsIDE4LCAyNDUsIDI0NywgMTgsIDI0NSwgMjQ2LCAxOCwgMjQ1LCAyNDUsIDE4LCAyNDUsIDI0NCwgMTgsIAorICAgIDI0NSwgMjQzLCAxOCwgMjQ1LCAyNDIsIDE4LCAyNDUsIDI0MSwgMTgsIDI0NSwgMjQwLCAxOCwgMjQ1LCAyMzksIDE4LCAKKyAgICAyNDUsIDIzOCwgMTgsIDI0NSwgMjM3LCAxOCwgMjQ1LCAyMzYsIDE4LCAyNDUsIDIzNSwgMTgsIDI0NSwgMjM0LCAxOCwgCisgICAgMjQ1LCAyMzMsIDE4LCAyNDUsIDIzMiwgMTgsIDI0NSwgMjMxLCAxOCwgMjQ1LCAyMzAsIDE4LCAyNDUsIDIyOSwgMTgsIAorICAgIDI0NSwgMjI4LCAxOCwgMjQ1LCAyMjcsIDE4LCAyNDUsIDIyNiwgMTgsIDI0NSwgMjI1LCAxOCwgMjQ1LCAyMjQsIDE4LCAKKyAgICAyNDUsIDIyMywgMTgsIDI0NSwgMjIyLCAxOCwgMjQ1LCAyMjEsIDE4LCAyNDUsIDIyMCwgMTgsIDI0NSwgMjE5LCAxOCwgCisgICAgMjQ1LCAyMTgsIDE4LCAyNDUsIDIxNywgMTgsIDI0NSwgMjE2LCAxOCwgMjQ1LCAyMTUsIDE4LCAyNDUsIDIxNCwgMTgsIAorICAgIDI0NSwgMjEzLCAxOCwgMjQ1LCAyMTIsIDE4LCAyNDUsIDIxMSwgMTgsIDI0NSwgMjEwLCAxOCwgMjQ1LCAyMDksIDE4LCAKKyAgICAyNDUsIDIwOCwgMTgsIDI0NSwgMjA3LCAxOCwgMjQ1LCAyMDYsIDE4LCAyNDUsIDIwNSwgMTgsIDI0NSwgMjA0LCAxOCwgCisgICAgMjQ1LCAyMDMsIDE4LCAyNDUsIDIwMiwgMTgsIDI0NSwgMjAxLCAxOCwgMjQ1LCAyMDAsIDE4LCAyNDUsIDE5OSwgMTgsIAorICAgIDI0NSwgMTk4LCAxOCwgMjQ1LCAxOTcsIDE4LCAyNDUsIDE5NiwgMTgsIDI0NSwgMTk1LCAxOCwgMjQ1LCAxOTQsIDE4LCAKKyAgICAyNDUsIDE5MywgMTgsIDI0NSwgMTkyLCAxOCwgMjQ1LCAxOTEsIDE4LCAyNDUsIDE5MCwgMTgsIDI0NSwgMTg5LCAxOCwgCisgICAgMjQ1LCAxODgsIDE4LCAyNDUsIDE4NywgMTgsIDI0NSwgMTg2LCAxOCwgMjQ1LCAxODUsIDE4LCAyNDUsIDE4NCwgMTgsIAorICAgIDI0NSwgMTgzLCAxOCwgMjQ1LCAxODIsIDE4LCAyNDUsIDE4MSwgMTgsIDI0NSwgMTgwLCAxOCwgMjQ1LCAxNzksIDE4LCAKKyAgICAyNDUsIDE3OCwgMTgsIDI0NSwgMTc3LCAxOCwgMjQ1LCAxNzYsIDE4LCAyNDUsIDE3NSwgMTgsIDI0NSwgMTc0LCAxOCwgCisgICAgMjQ1LCAxNzMsIDE4LCAyNDUsIDE3MiwgMTgsIDI0NSwgMTcxLCAxOCwgMjQ1LCAxNzAsIDE4LCAyNDUsIDE2OSwgMTgsIAorICAgIDI0NSwgMTY4LCAxOCwgMjQ1LCAxNjcsIDE4LCAyNDUsIDE2NiwgMTgsIDI0NSwgMTY1LCAxOCwgMjQ1LCAxNjQsIDE4LCAKKyAgICAyNDUsIDE2MywgMTgsIDI0NSwgMTYyLCAxOCwgMjQ1LCAxNjEsIDE4LCAyNDUsIDE2MCwgMTgsIDI0NSwgMTU5LCAxOCwgCisgICAgMjQ1LCAxNTgsIDE4LCAyNDUsIDE1NywgMTgsIDI0NSwgMTU2LCAxOCwgMjQ1LCAxNTUsIDE4LCAyNDUsIDE1NCwgMTgsIAorICAgIDI0NSwgMTUzLCAxOCwgMjQ1LCAxNTIsIDE4LCAyNDUsIDE1MSwgMTgsIDI0NSwgMTUwLCAxOCwgMjQ1LCAxNDksIDE4LCAKKyAgICAyNDUsIDE0OCwgMTgsIDI0NSwgMTQ3LCAxOCwgMjQ1LCAxNDYsIDE4LCAyNDUsIDE0NSwgMTgsIDI0NSwgMTQ0LCAxOCwgCisgICAgMjQ1LCAxNDMsIDE4LCAyNDUsIDE0MiwgMTgsIDI0NSwgMTQxLCAxOCwgMjQ1LCAxNDAsIDE4LCAyNDUsIDEzOSwgMTgsIAorICAgIDI0NSwgMTM4LCAxOCwgMjQ1LCAxMzcsIDE4LCAyNDUsIDEzNiwgMTgsIDI0NSwgMTM1LCAxOCwgMjQ1LCAxMzQsIDE4LCAKKyAgICAyNDUsIDEzMywgMTgsIDI0NSwgMTMyLCAxOCwgMjQ1LCAxMzEsIDE4LCAyNDUsIDEzMCwgMTgsIDI0NSwgMTI5LCAxOCwgCisgICAgMjQ1LCAxMjgsIDE4LCAyNDUsIDEyNywgMTgsIDI0NSwgMTI2LCAxOCwgMjQ1LCAxMjUsIDE4LCAyNDUsIDEyNCwgMTgsIAorICAgIDI0NSwgMTIzLCAxOCwgMjQ1LCAxMjIsIDE4LCAyNDUsIDEyMSwgMTgsIDI0NSwgMTIwLCAxOCwgMjQ1LCAxMTksIDE4LCAKKyAgICAyNDUsIDExOCwgMTgsIDI0NSwgMTE3LCAxOCwgMjQ1LCAxMTYsIDE4LCAyNDUsIDExNSwgMTgsIDI0NSwgMTE0LCAxOCwgCisgICAgMjQ1LCAxMTMsIDE4LCAyNDUsIDExMiwgMTgsIDI0NSwgMTExLCAxOCwgMjQ1LCAxMTAsIDE4LCAyNDUsIDEwOSwgMTgsIAorICAgIDI0NSwgMTA4LCAxOCwgMjQ1LCAxMDcsIDE4LCAyNDUsIDEwNiwgMTgsIDI0NSwgMTA1LCAxOCwgMjQ1LCAxMDQsIDE4LCAKKyAgICAyNDUsIDEwMywgMTgsIDI0NSwgMTAyLCAxOCwgMjQ1LCAxMDEsIDE4LCAyNDUsIDEwMCwgMTgsIDI0NSwgOTksIDE4LCAyNDUsIAorICAgIDk4LCAxOCwgMjQ1LCA5NywgMTgsIDI0NSwgOTYsIDE4LCAyNDUsIDk1LCAxOCwgMjQ1LCA5NCwgMTgsIDI0NSwgOTMsIDE4LCAKKyAgICAyNDUsIDkyLCAxOCwgMjQ1LCA5MSwgMTgsIDI0NSwgOTAsIDE4LCAyNDUsIDg5LCAxOCwgMjQ1LCA4OCwgMTgsIDI0NSwgODcsIAorICAgIDE4LCAyNDUsIDg2LCAxOCwgMjQ1LCA4NSwgMTgsIDI0NSwgODQsIDE4LCAyNDUsIDgzLCAxOCwgMjQ1LCA4MiwgMTgsIDI0NSwgCisgICAgODEsIDE4LCAyNDUsIDgwLCAxOCwgMjQ1LCA3OSwgMTgsIDI0NSwgNzgsIDE4LCAyNDUsIDc3LCAxOCwgMjQ1LCA3NiwgMTgsIAorICAgIDI0NSwgNzUsIDE4LCAyNDUsIDc0LCAxOCwgMjQ1LCA3MywgMTgsIDI0NSwgNzIsIDE4LCAyNDUsIDcxLCAxOCwgMjQ1LCA3MCwgCisgICAgMTgsIDI0NSwgNjksIDE4LCAyNDUsIDY4LCAxOCwgMjQ1LCA2NywgMTgsIDI0NSwgNjYsIDE4LCAyNDUsIDY1LCAxOCwgMjQ1LCAKKyAgICA2NCwgMTgsIDI0NSwgNjMsIDE4LCAyNDUsIDYyLCAxOCwgMjQ1LCA2MSwgMTgsIDI0NSwgNjAsIDE4LCAyNDUsIDU5LCAxOCwgCisgICAgMjQ1LCA1OCwgMTgsIDI0NSwgNTcsIDE4LCAyNDUsIDU2LCAxOCwgMjQ1LCA1NSwgMTgsIDI0NSwgNTQsIDE4LCAyNDUsIDUzLCAKKyAgICAxOCwgMjQ1LCA1MiwgMTgsIDI0NSwgNTEsIDE4LCAyNDUsIDUwLCAxOCwgMjQ1LCA0OSwgMTgsIDI0NSwgNDgsIDE4LCAyNDUsIAorICAgIDQ3LCAxOCwgMjQ1LCA0NiwgMTgsIDI0NSwgNDUsIDE4LCAyNDUsIDQ0LCAxOCwgMjQ1LCA0MywgMTgsIDI0NSwgNDIsIDE4LCAKKyAgICAyNDUsIDQxLCAxOCwgMjQ1LCA0MCwgMTgsIDI0NSwgMzksIDE4LCAyNDUsIDM4LCAxOCwgMjQ1LCAzNywgMTgsIDI0NSwgMzYsIAorICAgIDE4LCAyNDUsIDM1LCAxOCwgMjQ1LCAzNCwgMTgsIDI0NSwgMzMsIDE4LCAyNDUsIDMyLCAxOCwgMjQ1LCAzMSwgMTgsIDI0NSwgCisgICAgMzAsIDE4LCAyNDUsIDI5LCAxOCwgMjQ1LCAyOCwgMTgsIDI0NSwgMjcsIDE4LCAyNDUsIDI2LCAxOCwgMjQ1LCAyNSwgMTgsIAorICAgIDI0NSwgMjQsIDE4LCAyNDUsIDIzLCAxOCwgMjQ1LCAyMiwgMTgsIDI0NSwgMjEsIDE4LCAyNDUsIDIwLCAxOCwgMjQ1LCAxOSwgCisgICAgMTgsIDI0NSwgMTgsIDE4LCAyNDUsIDE3LCAxOCwgMjQ1LCAxNiwgMTgsIDI0NSwgMTUsIDE4LCAyNDUsIDE0LCAxOCwgMjQ1LCAKKyAgICAxMywgMTgsIDI0NSwgMTIsIDE4LCAyNDUsIDExLCAxOCwgMjQ1LCAxMCwgMTgsIDI0NSwgOSwgMTgsIDI0NSwgOCwgMTgsIAorICAgIDI0NSwgNywgMTgsIDI0NSwgNiwgMTgsIDI0NSwgNSwgMTgsIDI0NSwgNCwgMTgsIDI0NSwgMywgMTgsIDI0NSwgMiwgMTgsIAorICAgIDI0NSwgMSwgMTgsIDI0NSwgMCwgMTgsIDI0NCwgMjU1LCAxOCwgMjQ0LCAyNTQsIDE4LCAyNDQsIDI1MywgMTgsIDI0NCwgCisgICAgMjUyLCAxOCwgMjQ0LCAyNTEsIDE4LCAyNDQsIDI1MCwgMTgsIDI0NCwgMjQ5LCAxOCwgMjQ0LCAyNDgsIDE4LCAyNDQsIAorICAgIDI0NywgMTgsIDI0NCwgMjQ2LCAxOCwgMjQ0LCAyNDUsIDE4LCAyNDQsIDI0NCwgMTgsIDI0NCwgMjQzLCAxOCwgMjQ0LCAKKyAgICAyNDIsIDE4LCAyNDQsIDI0MSwgMTgsIDI0NCwgMjQwLCAxOCwgMjQ0LCAyMzksIDE4LCAyNDQsIDIzOCwgMTgsIDI0NCwgCisgICAgMjM3LCAxOCwgMjQ0LCAyMzYsIDE4LCAyNDQsIDIzNSwgMTgsIDI0NCwgMjM0LCAxOCwgMjQ0LCAyMzMsIDE4LCAyNDQsIAorICAgIDIzMiwgMTgsIDI0NCwgMjMxLCAxOCwgMjQ0LCAyMzAsIDE4LCAyNDQsIDIyOSwgMTgsIDI0NCwgMjI4LCAxOCwgMjQ0LCAKKyAgICAyMjcsIDE4LCAyNDQsIDIyNiwgMTgsIDI0NCwgMjI1LCAxOCwgMjQ0LCAyMjQsIDE4LCAyNDQsIDIyMywgMTgsIDI0NCwgCisgICAgMjIyLCAxOCwgMjQ0LCAyMjEsIDE4LCAyNDQsIDIyMCwgMTgsIDI0NCwgMjE5LCAxOCwgMjQ0LCAyMTgsIDE4LCAyNDQsIAorICAgIDIxNywgMTgsIDI0NCwgMjE2LCAxOCwgMjQ0LCAyMTUsIDE4LCAyNDQsIDIxNCwgMTgsIDI0NCwgMjEzLCAxOCwgMjQ0LCAKKyAgICAyMTIsIDE4LCAyNDQsIDIxMSwgMTgsIDI0NCwgMjEwLCAxOCwgMjQ0LCAyMDksIDE4LCAyNDQsIDIwOCwgMTgsIDI0NCwgCisgICAgMjA3LCAxOCwgMjQ0LCAyMDYsIDE4LCAyNDQsIDIwNSwgMTgsIDI0NCwgMjA0LCAxOCwgMjQ0LCAyMDMsIDE4LCAyNDQsIAorICAgIDIwMiwgMTgsIDI0NCwgMjAxLCAxOCwgMjQ0LCAyMDAsIDE4LCAyNDQsIDE5OSwgMTgsIDI0NCwgMTk4LCAxOCwgMjQ0LCAKKyAgICAxOTcsIDE4LCAyNDQsIDE5NiwgMTgsIDI0NCwgMTk1LCAxOCwgMjQ0LCAxOTQsIDE4LCAyNDQsIDE5MywgMTgsIDI0NCwgCisgICAgMTkyLCAxOCwgMjQ0LCAxOTEsIDE4LCAyNDQsIDE5MCwgMTgsIDI0NCwgMTg5LCAxOCwgMjQ0LCAxODgsIDE4LCAyNDQsIAorICAgIDE4NywgMTgsIDI0NCwgMTg2LCAxOCwgMjQ0LCAxODUsIDE4LCAyNDQsIDE4NCwgMTgsIDI0NCwgMTgzLCAxOCwgMjQ0LCAKKyAgICAxODIsIDE4LCAyNDQsIDE4MSwgMTgsIDI0NCwgMTgwLCAxOCwgMjQ0LCAxNzksIDE4LCAyNDQsIDE3OCwgMTgsIDI0NCwgCisgICAgMTc3LCAxOCwgMjQ0LCAxNzYsIDE4LCAyNDQsIDE3NSwgMTgsIDI0NCwgMTc0LCAxOCwgMjQ0LCAxNzMsIDE4LCAyNDQsIAorICAgIDE3MiwgMTgsIDI0NCwgMTcxLCAxOCwgMjQ0LCAxNzAsIDE4LCAyNDQsIDE2OSwgMTgsIDI0NCwgMTY4LCAxOCwgMjQ0LCAKKyAgICAxNjcsIDE4LCAyNDQsIDE2NiwgMTgsIDI0NCwgMTY1LCAxOCwgMjQ0LCAxNjQsIDE4LCAyNDQsIDE2MywgMTgsIDI0NCwgCisgICAgMTYyLCAxOCwgMjQ0LCAxNjEsIDE4LCAyNDQsIDE2MCwgMTgsIDI0NCwgMTU5LCAxOCwgMjQ0LCAxNTgsIDE4LCAyNDQsIAorICAgIDE1NywgMTgsIDI0NCwgMTU2LCAxOCwgMjQ0LCAxNTUsIDE4LCAyNDQsIDE1NCwgMTgsIDI0NCwgMTUzLCAxOCwgMjQ0LCAKKyAgICAxNTIsIDE4LCAyNDQsIDE1MSwgMTgsIDI0NCwgMTUwLCAxOCwgMjQ0LCAxNDksIDE4LCAyNDQsIDE0OCwgMTgsIDI0NCwgCisgICAgMTQ3LCAxOCwgMjQ0LCAxNDYsIDE4LCAyNDQsIDE0NSwgMTgsIDI0NCwgMTQ0LCAxOCwgMjQ0LCAxNDMsIDE4LCAyNDQsIAorICAgIDE0MiwgMTgsIDI0NCwgMTQxLCAxOCwgMjQ0LCAxNDAsIDE4LCAyNDQsIDEzOSwgMTgsIDI0NCwgMTM4LCAxOCwgMjQ0LCAKKyAgICAxMzcsIDE4LCAyNDQsIDEzNiwgMTgsIDI0NCwgMTM1LCAxOCwgMjQ0LCAxMzQsIDE4LCAyNDQsIDEzMywgMTgsIDI0NCwgCisgICAgMTMyLCAxOCwgMjQ0LCAxMzEsIDE4LCAyNDQsIDEzMCwgMTgsIDI0NCwgMTI5LCAxOCwgMjQ0LCAxMjgsIDE4LCAyNDQsIAorICAgIDEyNywgMTgsIDI0NCwgMTI2LCAxOCwgMjQ0LCAxMjUsIDE4LCAyNDQsIDEyNCwgMTgsIDI0NCwgMTIzLCAxOCwgMjQ0LCAKKyAgICAxMjIsIDE4LCAyNDQsIDEyMSwgMTgsIDI0NCwgMTIwLCAxOCwgMjQ0LCAxMTksIDE4LCAyNDQsIDExOCwgMTgsIDI0NCwgCisgICAgMTE3LCAxOCwgMjQ0LCAxMTYsIDE4LCAyNDQsIDExNSwgMTgsIDI0NCwgMTE0LCAxOCwgMjQ0LCAxMTMsIDE4LCAyNDQsIAorICAgIDExMiwgMTgsIDI0NCwgMTExLCAxOCwgMjQ0LCAxMTAsIDE4LCAyNDQsIDEwOSwgMTgsIDI0NCwgMTA4LCAxOCwgMjQ0LCAKKyAgICAxMDcsIDE4LCAyNDQsIDEwNiwgMTgsIDI0NCwgMTA1LCAxOCwgMjQ0LCAxMDQsIDE4LCAyNDQsIDEwMywgMTgsIDI0NCwgCisgICAgMTAyLCAxOCwgMjQ0LCAxMDEsIDE4LCAyNDQsIDEwMCwgMTgsIDI0NCwgOTksIDE4LCAyNDQsIDk4LCAxOCwgMjQ0LCA5NywgCisgICAgMTgsIDI0NCwgOTYsIDE4LCAyNDQsIDk1LCAxOCwgMjQ0LCA5NCwgMTgsIDI0NCwgOTMsIDE4LCAyNDQsIDkyLCAxOCwgMjQ0LCAKKyAgICA5MSwgMTgsIDI0NCwgOTAsIDE4LCAyNDQsIDg5LCAxOCwgMjQ0LCA4OCwgMTgsIDI0NCwgODcsIDE4LCAyNDQsIDg2LCAxOCwgCisgICAgMjQ0LCA4NSwgMTgsIDI0NCwgODQsIDE4LCAyNDQsIDgzLCAxOCwgMjQ0LCA4MiwgMTgsIDI0NCwgODEsIDE4LCAyNDQsIDgwLCAKKyAgICAxOCwgMjQ0LCA3OSwgMTgsIDI0NCwgNzgsIDE4LCAyNDQsIDc3LCAxOCwgMjQ0LCA3NiwgMTgsIDI0NCwgNzUsIDE4LCAyNDQsIAorICAgIDc0LCAxOCwgMjQ0LCA3MywgMTgsIDI0NCwgNzIsIDE4LCAyNDQsIDcxLCAxOCwgMjQ0LCA3MCwgMTgsIDI0NCwgNjksIDE4LCAKKyAgICAyNDQsIDY4LCAxOCwgMjQ0LCA2NywgMTgsIDI0NCwgNjYsIDE4LCAyNDQsIDY1LCAxOCwgMjQ0LCA2NCwgMTgsIDI0NCwgNjMsIAorICAgIDE4LCAyNDQsIDYyLCAxOCwgMjQ0LCA2MSwgMTgsIDI0NCwgNjAsIDE4LCAyNDQsIDU5LCAxOCwgMjQ0LCA1OCwgMTgsIDI0NCwgCisgICAgNTcsIDE4LCAyNDQsIDU2LCAxOCwgMjQ0LCA1NSwgMTgsIDI0NCwgNTQsIDE4LCAyNDQsIDUzLCAxOCwgMjQ0LCA1MiwgMTgsIAorICAgIDI0NCwgNTEsIDE4LCAyNDQsIDUwLCAxOCwgMjQ0LCA0OSwgMTgsIDI0NCwgNDgsIDE4LCAyNDQsIDQ3LCAxOCwgMjQ0LCA0NiwgCisgICAgMTgsIDI0NCwgNDUsIDE4LCAyNDQsIDQ0LCAxOCwgMjQ0LCA0MywgMTgsIDI0NCwgNDIsIDE4LCAyNDQsIDQxLCAxOCwgMjQ0LCAKKyAgICA0MCwgMTgsIDI0NCwgMzksIDE4LCAyNDQsIDM4LCAxOCwgMjQ0LCAzNywgMTgsIDI0NCwgMzYsIDE4LCAyNDQsIDM1LCAxOCwgCisgICAgMjQ0LCAzNCwgMTgsIDI0NCwgMzMsIDE4LCAyNDQsIDMyLCAxOCwgMjQ0LCAzMSwgMTgsIDI0NCwgMzAsIDE4LCAyNDQsIDI5LCAKKyAgICAxOCwgMjQ0LCAyOCwgMTgsIDI0NCwgMjcsIDE4LCAyNDQsIDI2LCAxOCwgMjQ0LCAyNSwgMTgsIDI0NCwgMjQsIDE4LCAyNDQsIAorICAgIDIzLCAxOCwgMjQ0LCAyMiwgMTgsIDI0NCwgMjEsIDE4LCAyNDQsIDIwLCAxOCwgMjQ0LCAxOSwgMTgsIDI0NCwgMTgsIDE4LCAKKyAgICAyNDQsIDE3LCAxOCwgMjQ0LCAxNiwgMTgsIDI0NCwgMTUsIDE4LCAyNDQsIDE0LCAxOCwgMjQ0LCAxMywgMTgsIDI0NCwgMTIsIAorICAgIDE4LCAyNDQsIDExLCAxOCwgMjQ0LCAxMCwgMTgsIDI0NCwgOSwgMTgsIDI0NCwgOCwgMTgsIDI0NCwgNywgMTgsIDI0NCwgNiwgCisgICAgMTgsIDI0NCwgNSwgMTgsIDI0NCwgNCwgMTgsIDI0NCwgMywgMTgsIDI0NCwgMiwgMTgsIDI0NCwgMSwgMTgsIDI0NCwgMCwgCisgICAgMTgsIDI0MywgMjU1LCAxOCwgMjQzLCAyNTQsIDE4LCAyNDMsIDI1MywgMTgsIDI0MywgMjUyLCAxOCwgMjQzLCAyNTEsIDE4LCAKKyAgICAyNDMsIDI1MCwgMTgsIDI0MywgMjQ5LCAxOCwgMjQzLCAyNDgsIDE4LCAyNDMsIDI0NywgMTgsIDI0MywgMjQ2LCAxOCwgCisgICAgMjQzLCAyNDUsIDE4LCAyNDMsIDI0NCwgMTgsIDI0MywgMjQzLCAxOCwgMjQzLCAyNDIsIDE4LCAyNDMsIDI0MSwgMTgsIAorICAgIDI0MywgMjQwLCAxOCwgMjQzLCAyMzksIDE4LCAyNDMsIDIzOCwgMTgsIDI0MywgMjM3LCAxOCwgMjQzLCAyMzYsIDE4LCAKKyAgICAyNDMsIDIzNSwgMTgsIDI0MywgMjM0LCAxOCwgMjQzLCAyMzMsIDE4LCAyNDMsIDIzMiwgMTgsIDI0MywgMjMxLCAxOCwgCisgICAgMjQzLCAyMzAsIDE4LCAyNDMsIDIyOSwgMTgsIDI0MywgMjI4LCAxOCwgMjQzLCAyMjcsIDE4LCAyNDMsIDIyNiwgMTgsIAorICAgIDI0MywgMjI1LCAxOCwgMjQzLCAyMjQsIDE4LCAyNDMsIDIyMywgMTgsIDI0MywgMjIyLCAxOCwgMjQzLCAyMjEsIDE4LCAKKyAgICAyNDMsIDIyMCwgMTgsIDI0MywgMjE5LCAxOCwgMjQzLCAyMTgsIDE4LCAyNDMsIDIxNywgMTgsIDI0MywgMjE2LCAxOCwgCisgICAgMjQzLCAyMTUsIDE4LCAyNDMsIDIxNCwgMTgsIDI0MywgMjEzLCAxOCwgMjQzLCAyMTIsIDE4LCAyNDMsIDIxMSwgMTgsIAorICAgIDI0MywgMjEwLCAxOCwgMjQzLCAyMDksIDE4LCAyNDMsIDIwOCwgMTgsIDI0MywgMjA3LCAxOCwgMjQzLCAyMDYsIDE4LCAKKyAgICAyNDMsIDIwNSwgMTgsIDI0MywgMjA0LCAxOCwgMjQzLCAyMDMsIDE4LCAyNDMsIDIwMiwgMTgsIDI0MywgMjAxLCAxOCwgCisgICAgMjQzLCAyMDAsIDE4LCAyNDMsIDE5OSwgMTgsIDI0MywgMTk4LCAxOCwgMjQzLCAxOTcsIDE4LCAyNDMsIDE5NiwgMTgsIAorICAgIDI0MywgMTk1LCAxOCwgMjQzLCAxOTQsIDE4LCAyNDMsIDE5MywgMTgsIDI0MywgMTkyLCAxOCwgMjQzLCAxOTEsIDE4LCAKKyAgICAyNDMsIDE5MCwgMTgsIDI0MywgMTg5LCAxOCwgMjQzLCAxODgsIDE4LCAyNDMsIDE4NywgMTgsIDI0MywgMTg2LCAxOCwgCisgICAgMjQzLCAxODUsIDE4LCAyNDMsIDE4NCwgMTgsIDI0MywgMTgzLCAxOCwgMjQzLCAxODIsIDE4LCAyNDMsIDE4MSwgMTgsIAorICAgIDI0MywgMTgwLCAxOCwgMjQzLCAxNzksIDE4LCAyNDMsIDE3OCwgMTgsIDI0MywgMTc3LCAxOCwgMjQzLCAxNzYsIDE4LCAKKyAgICAyNDMsIDE3NSwgMTgsIDI0MywgMTc0LCAxOCwgMjQzLCAxNzMsIDE4LCAyNDMsIDE3MiwgMTgsIDI0MywgMTcxLCAxOCwgCisgICAgMjQzLCAxNzAsIDE4LCAyNDMsIDE2OSwgMTgsIDI0MywgMTY4LCAxOCwgMjQzLCAxNjcsIDE4LCAyNDMsIDE2NiwgMTgsIAorICAgIDI0MywgMTY1LCAxOCwgMjQzLCAxNjQsIDE4LCAyNDMsIDE2MywgMTgsIDI0MywgMTYyLCAxOCwgMjQzLCAxNjEsIDE4LCAKKyAgICAyNDMsIDE2MCwgMTgsIDI0MywgMTU5LCAxOCwgMjQzLCAxNTgsIDE4LCAyNDMsIDE1NywgMTgsIDI0MywgMTU2LCAxOCwgCisgICAgMjQzLCAxNTUsIDE4LCAyNDMsIDE1NCwgMTgsIDI0MywgMTUzLCAxOCwgMjQzLCAxNTIsIDE4LCAyNDMsIDE1MSwgMTgsIAorICAgIDI0MywgMTUwLCAxOCwgMjQzLCAxNDksIDE4LCAyNDMsIDE0OCwgMTgsIDI0MywgMTQ3LCAxOCwgMjQzLCAxNDYsIDE4LCAKKyAgICAyNDMsIDE0NSwgMTgsIDI0MywgMTQ0LCAxOCwgMjQzLCAxNDMsIDE4LCAyNDMsIDE0MiwgMTgsIDI0MywgMTQxLCAxOCwgCisgICAgMjQzLCAxNDAsIDE4LCAyNDMsIDEzOSwgMTgsIDI0MywgMTM4LCAxOCwgMjQzLCAxMzcsIDE4LCAyNDMsIDEzNiwgMTgsIAorICAgIDI0MywgMTM1LCAxOCwgMjQzLCAxMzQsIDE4LCAyNDMsIDEzMywgMTgsIDI0MywgMTMyLCAxOCwgMjQzLCAxMzEsIDE4LCAKKyAgICAyNDMsIDEzMCwgMTgsIDI0MywgMTI5LCAxOCwgMjQzLCAxMjgsIDE4LCAyNDMsIDEyNywgMTgsIDI0MywgMTI2LCAxOCwgCisgICAgMjQzLCAxMjUsIDE4LCAyNDMsIDEyNCwgMTgsIDI0MywgMTIzLCAxOCwgMjQzLCAxMjIsIDE4LCAyNDMsIDEyMSwgMTgsIAorICAgIDI0MywgMTIwLCAxOCwgMjQzLCAxMTksIDE4LCAyNDMsIDExOCwgMTgsIDI0MywgMTE3LCAxOCwgMjQzLCAxMTYsIDE4LCAKKyAgICAyNDMsIDExNSwgMTgsIDI0MywgMTE0LCAxOCwgMjQzLCAxMTMsIDE4LCAyNDMsIDExMiwgMTgsIDI0MywgMTExLCAxOCwgCisgICAgMjQzLCAxMTAsIDE4LCAyNDMsIDEwOSwgMTgsIDI0MywgMTA4LCAxOCwgMjQzLCAxMDcsIDE4LCAyNDMsIDEwNiwgMTgsIAorICAgIDI0MywgMTA1LCAxOCwgMjQzLCAxMDQsIDE4LCAyNDMsIDEwMywgMTgsIDI0MywgMTAyLCAxOCwgMjQzLCAxMDEsIDE4LCAKKyAgICAyNDMsIDEwMCwgMTgsIDI0MywgOTksIDE4LCAyNDMsIDk4LCAxOCwgMjQzLCA5NywgMTgsIDI0MywgOTYsIDE4LCAyNDMsIAorICAgIDk1LCAxOCwgMjQzLCA5NCwgMTgsIDI0MywgOTMsIDE4LCAyNDMsIDkyLCAxOCwgMjQzLCA5MSwgMTgsIDI0MywgOTAsIDE4LCAKKyAgICAyNDMsIDg5LCAxOCwgMjQzLCA4OCwgMTgsIDI0MywgODcsIDE4LCAyNDMsIDg2LCAxOCwgMjQzLCA4NSwgMTgsIDI0MywgODQsIAorICAgIDE4LCAyNDMsIDgzLCAxOCwgMjQzLCA4MiwgMTgsIDI0MywgODEsIDE4LCAyNDMsIDgwLCAxOCwgMjQzLCA3OSwgMTgsIDI0MywgCisgICAgNzgsIDE4LCAyNDMsIDc3LCAxOCwgMjQzLCA3NiwgMTgsIDI0MywgNzUsIDY5LCAxLCAyNTAsIDIzNCwgNzIsIDE3NywgMSwgCisgICAgMjUwLCAyMzQsIDIwMCwgNTEsIDEwNCwgMSwgMjM0LCAyNDcsIDEwNCwgMSwgMjAwLCAxOTUsIDEwNCwgMSwgMjE2LCAyMjYsIAorICAgIDEwNCwgMSwgMjA3LCA4MywgMTA0LCAxLCAyMzgsIDUsIDEwNCwgMSwgMjI3LCAxMTgsIDEwNCwgMSwgMTU2LCAxMDQsIDEsIAorICAgIDI1MCwgMTAzLCAxMDQsIDEsIDI0MiwgMTUzLCAxMDQsIDEsIDIwMywgMTY4LCAxMDQsIDEsIDIzNiwgMTU2LCAxMDQsIDEsIAorICAgIDE0NiwgMTA0LCAxLCAyMTYsIDIyNywgMjIwLCAyMTQsIDEwNCwgMSwgMjQyLCAxNTQsIDIxMiwgMTIyLCAxMDQsIDEsIDIzOCwgCisgICAgNiwgMjIwLCAyMTQsIDEwNCwgMSwgMjI3LCAxMTksIDIyMywgMjQzLCAxMDQsIDEsIDIxNCwgMzMsIDIxMiwgMTIyLCAxMDQsIAorICAgIDEsIDIwNiwgMTI0LCAxMDQsIDEsIDIwOSwgNjIsIDI0MSwgMTAxLCAxMDQsIDEsIDI0MSwgMTAxLCAxMDQsIDEsIDIyNiwgCisgICAgMTEwLCAxMDQsIDEsIDIwOSwgNjIsIDIyNywgMjUxLCAxMDQsIDEsIDIzNCwgNDAsIDEwNCwgMSwgMjI0LCAyMjQsIDEwNCwgCisgICAgMSwgMjEzLCA5NCwgMTA0LCAxLCAyMjMsIDI0MywgMTA0LCAxLCAyMjAsIDIxNCwgMTA0LCAxLCAyMjcsIDI1MSwgMTA0LCAxLCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMjMsIDI0NCwgMjIwLCAyMTQsIDEwNCwgMSwgMjIwLCAyMTUsIDIyMywgMjQzLCAxMDQsIDEsIAorICAgIDIyNywgMjUyLCAyMjMsIDI0MywgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAyNTEsIDEwNCwgMSwgMjIzLCAyNDQsIDMsIDI0MCwgCisgICAgMTgyLCAxMDQsIDEsIDIyMCwgMjE1LCAzLCAyNDAsIDE4MiwgMTA0LCAxLCAyMjcsIDI1MiwgMywgMjQwLCAxODIsIDEwNCwgCisgICAgMSwgMjI3LCAyNTIsIDMsIDE5MCwgMjI4LCA3NCwgMjYsIDU2LCAxMDQsIDEsIDIxMiwgMTIzLCAzLCAyNDAsIDE4MiwgMTA0LCAKKyAgICAxLCAyMTIsIDEyMywgMywgNzMsIDU3LCAxMDQsIDEsIDIyMywgMjQ0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMjAsIDIxNSwgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjI3LCAyNTIsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMTIsIDEyMiwgMTA0LCAxLCAKKyAgICAyMjMsIDI0NCwgMjIwLCAyMTUsIDIxMiwgMTIyLCAxMDQsIDEsIDIyMCwgMjE1LCAyMjMsIDI0NCwgMjEyLCAxMjIsIDEwNCwgCisgICAgMSwgMjI3LCAyNTIsIDIyMywgMjQ0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAyNTIsIDIxMiwgMTIyLCAKKyAgICAxMDQsIDEsIDIyNywgMjUyLCAyMTIsIDEyMywgMywgMjQwLCAxODIsIDEwNCwgMSwgMjI3LCAyNTIsIDIyMCwgMjE0LCAxMDQsIAorICAgIDEsIDIyNywgMjUyLCAyMjAsIDIxNSwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIwNywgODMsIDEwNCwgMSwgMjEyLCAKKyAgICAxMjMsIDIwNywgODQsIDE0NiwgMTA0LCAxLCAyMTIsIDEyMywgMjE2LCAyMjYsIDEwNCwgMSwgMjEyLCAxMjMsIDIxNiwgCisgICAgMjI3LCAxNDYsIDEwNCwgMSwgMjA3LCA4NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjA3LCA4NCwgMjE0LCAzMywgMjEyLCAxMjIsIAorICAgIDEwNCwgMSwgMjAxLCAxNDcsIDEwNCwgMSwgMjAxLCA0MSwgMTA0LCAxLCAyMDEsIDE0OCwgMTQ2LCAxMDQsIDEsIDIxMiwgCisgICAgMTIzLCAyMjAsIDIxNCwgMTA0LCAxLCAyMTIsIDEyMywgMjIzLCAyNDMsIDEwNCwgMSwgMjI3LCAxMTksIDIxNCwgMzMsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIzNiwgMTU3LCAyMTQsIDMzLCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAKKyAgICAxMTgsIDEwNCwgMSwgMjEyLCAxMjMsIDIyNywgMTE5LCAxNDYsIDEwNCwgMSwgNjIsIDEwNCwgMSwgMjA5LCA2MiwgMjE2LCAKKyAgICAyMzgsIDEwNCwgMSwgMjE3LCAxNDYsIDEwNCwgMSwgNzQsIDEwNCwgMSwgMjUxLCAyOSwgMTA0LCAxLCA3MCwgMTA0LCAxLCAKKyAgICA3MiwgMTA0LCAxLCAyMjgsIDE3OCwgMTA0LCAxLCAyMDksIDI1MCwgNzAsIDEwNCwgMSwgMjA0LCAyMywgMTA0LCAxLCAyMzgsIAorICAgIDI1NSwgMTA0LCAxLCAyMDksIDYyLCAyMzgsIDI0MSwgMTA0LCAxLCAyMTIsIDIzOSwgNzAsIDEwNCwgMSwgMjA5LCA2MiwgCisgICAgMjM4LCAyNTUsIDEwNCwgMSwgMTY4LCA3MCwgMTA0LCAxLCAyMDAsIDUxLCAxMDQsIDEsIDY2LCAxMDQsIDEsIDIzOCwgNjksIAorICAgIDEwNCwgMSwgMjAwLCAxNDYsIDEwNCwgMSwgMTA4LCAyMjAsIDIxNCwgMTA0LCAxLCAxNjgsIDY2LCAxMDQsIDEsIDIxMiwgCisgICAgMjM5LCA2NiwgMTA0LCAxLCAyMDQsIDI1LCAxMDQsIDEsIDIwOSwgNjIsIDY2LCAxMDQsIDEsIDIxNywgNjAsIDEwNCwgMSwgCisgICAgMjE2LCAyMzgsIDEwNCwgMSwgMjE3LCAzLCAxMDQsIDEsIDIwMSwgMTE0LCAxMDQsIDEsIDIwMSwgMCwgMTA0LCAxLCAyMDEsIAorICAgIDMxLCAxMDQsIDEsIDIwMSwgNTUsIDEwNCwgMSwgMjAwLCAyMzAsIDEwNCwgMSwgMjIwLCAxMjMsIDY2LCAxMDQsIDEsIDIyMCwgCisgICAgMTIzLCA3NCwgMTA0LCAxLCAyMjAsIDEyMywgNzAsIDEwNCwgMSwgMjIwLCAxMjMsIDYyLCAxMDQsIDEsIDIxNiwgMTYsIAorICAgIDI1MSwgODUsIDEwNCwgMSwgMjE2LCAxNiwgMjUxLCAxMDEsIDEwNCwgMSwgMjA5LCA2MiwgMjM4LCAxNzksIDEwNCwgMSwgCisgICAgMjA5LCA2MiwgMjUxLCA4NSwgMTA0LCAxLCAyMDksIDYyLCAyMTcsIDc4LCAxMDQsIDEsIDEwOSwgMjIzLCAyNDMsIDEwNCwgCisgICAgMjUxLCAyMDAsIDQ5LCAyMzMsIDE3NywgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDIyMSwgMjA2LCAyMzMsIDE3NywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDUxLCAyMzMsIDE3NywgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDEyOCwgODMsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCAyMjEsIDIwNiwgODMsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDgzLCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIxMSwgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjI1LCAxOSwgCisgICAgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMDYsIDI0MCwgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIAorICAgIDIwNywgNiwgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDE5NywgMTE3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjMzLCAKKyAgICAxOSwgMTE3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjA2LCAyNDEsIDExNywgMTA0LCAyNTEsIDIwMCwgMTIyLCAxNjksIAorICAgIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjA2LCAxLCAxNjksIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjM1LCA3MywgMTA0LCAyNTEsIAorICAgIDIwMCwgMTIyLCAxNjgsIDIzNSwgNzMsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjQwLCAxODIsIDEwNCwgMjUxLCAyMDAsIDEyMiwgCisgICAgMjQ2LCAxNTUsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjI0LCAxNzYsIDEwNCwgMjUxLCAyMDAsIDEyMiwgMjAxLCA3NywgMTA0LCAKKyAgICAyNTEsIDIwMCwgMTIyLCAyMDMsIDQyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDE2OSwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMDYsIAorICAgIDEsIDE2OSwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMzUsIDczLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDE2OCwgMjM1LCA3MywgCisgICAgMTA0LCAyNTEsIDIwMCwgMTI4LCAyNDAsIDE4MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyNDYsIDE1NSwgMTA0LCAyNTEsIAorICAgIDIwMCwgMTI4LCAyMjQsIDE3NiwgMTA0LCAyNTEsIDIwMCwgMTI4LCAyMDEsIDc3LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwMywgCisgICAgNDIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgNDgsIDEwNCwgMiwgMTYzLCAzLCAyNDIsIDIzNCwgMTA0LCAyMDYsIDgyLCAxLCAKKyAgICAyMTEsIDE3NSwgMTA0LCA1MywgODEsIDEwNCwgMjE0LCAyMTIsIDI0NiwgMjIwLCAyMzYsIDE4MywgMjA4LCA3NiwgMjA5LCAKKyAgICAyMzcsIDIzNiwgMjQxLCAxLCAyMTYsIDI0NCwgMjA5LCAyMzcsIDIzNiwgMjQxLCAyNDMsIDQwLCAyMTYsIDI0NCwgMjA5LCAKKyAgICAyMzcsIDIzNiwgMjQxLCAxMjcsIDIwOCwgOTAsIDIwOSwgMjM3LCAyMzYsIDI0MSwgMTE1LCAyMDgsIDkwLCA2MSwgMzIsIAorICAgIDE2LCAyMTQsIDIyOCwgNjEsIDMyLCAxNiwgMjQxLCAyNDYsIDYxLCAzMiwgMTYsIDIxNiwgMjAsIDYxLCAzMiwgMTYsIDIxNiwgCisgICAgMjM0LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgMjE2LCAyMzQsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIwMywgNzcsIDIzOCwgCisgICAgMjEzLCA2MSwgMzIsIDE2LCAyMDMsIDc3LCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMjcsIDI4LCA2MSwgMzIsIDE2LCAyMDcsIAorICAgIDEwMCwgNjEsIDMyLCAxNiwgMjE2LCAxMjIsIDYxLCAzMiwgMTYsIDE5OSwgMjE3LCA2MSwgMzIsIDE2LCAxOTksIDIxOCwgCisgICAgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjI2LCAzMiwgNjEsIDMyLCAxNiwgMjUxLCAyNCwgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIAorICAgIDIzOCwgMzcsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAyMDYsIDE3NywgNjEsIDMyLCAxNiwgMjI2LCAyMzksIDYxLCAzMiwgCisgICAgMTYsIDI1MSwgMTQsIDYxLCAzMiwgMTYsIDI1MSwgMTUsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIwNywgMTA3LCA2MSwgMzIsIAorICAgIDE2LCAyMDYsIDY0LCA2MSwgMzIsIDE2LCAyMTcsIDg5LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjM1LCAxMDAsIDI1MCwgCisgICAgMjMyLCA2MSwgMzIsIDE2LCAyMTQsIDIyNywgNjEsIDMyLCAxNiwgMjQ3LCAyOCwgNjEsIDMyLCAxNiwgMjAzLCA2NiwgNjEsIAorICAgIDMyLCAxNiwgMjI4LCAxNywgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgMjQxLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAyNDAsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMTEsIDIzNiwgNjEsIDMyLCAxNiwgMjE2LCAxMTIsIDYxLCAzMiwgCisgICAgMTYsIDIwOCwgOTksIDI1MSwgMTcsIDYxLCAzMiwgMTYsIDIxNiwgMjMzLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjAzLCAKKyAgICA3NiwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDI1MSwgMTgsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyNTEsIDEyLCA2MSwgMzIsIAorICAgIDE2LCAyMjYsIDEwMCwgNjEsIDMyLCAxNiwgMjEzLCAxMDEsIDYxLCAzMiwgMTYsIDIxNSwgMjAyLCAyNTAsIDIzMiwgNjEsIAorICAgIDMyLCAxNiwgMjA1LCAyMzAsIDYxLCAzMiwgMTYsIDI1MSwgODIsIDYxLCAzMiwgMTYsIDIxMSwgMTc4LCA2MSwgMzIsIDE2LCAKKyAgICAyMDcsIDExMSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIwNywgMTExLCAyMjIsIDIxLCAyMDgsIDk3LCA2MSwgMzIsIDE2LCAKKyAgICAyMTYsIDIyOCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIwNiwgMTAwLCA2MSwgMzIsIDE2LCAyMjUsIDYsIDYxLCAzMiwgMTYsIAorICAgIDIzOSwgOTYsIDYxLCAzMiwgMTYsIDIwNSwgMTAwLCA2MSwgMzIsIDE2LCAyMDYsIDE0OCwgNjEsIDMyLCAxNiwgMjI2LCAzNSwgCisgICAgNjEsIDMyLCAxNiwgMjUxLCAyNCwgMjM4LCAzNywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI1MCwgMjMyLCAKKyAgICA2MSwgMzIsIDE2LCAyMjgsIDEzMCwgNjEsIDMyLCAxNiwgMjA1LCA2OSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIyNywgMzEsIAorICAgIDIwNSwgNjgsIDYxLCAzMiwgMTYsIDIxNiwgNDksIDYxLCAzMiwgMTYsIDIxNCwgMjMyLCA2MSwgMzIsIDE2LCAyMjYsIDY5LCAKKyAgICA2MSwgMzIsIDE2LCAyNDYsIDIwNCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIxMywgMjA5LCA2MSwgMzIsIDE2LCAyMTYsIAorICAgIDEyNSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIxNiwgMTIzLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjMyLCAyMjksIDYxLCAKKyAgICAzMiwgMTYsIDIyMCwgMTMzLCA2MSwgMzIsIDE2LCAyMTUsIDI1NCwgNjEsIDMyLCAxNiwgMjI2LCA3MCwgMjUxLCAxMTksIAorICAgIDYxLCAzMiwgMTYsIDIwNSwgNjksIDI1MSwgMTE5LCA2MSwgMzIsIDE2LCAyMDgsIDcwLCA2MSwgMzIsIDE2LCAyMzUsIDYwLCAKKyAgICA2MSwgMzIsIDE2LCAyMjgsIDE3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTcsIDg5LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyMTYsIDIzNCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE1LCAyNTMsIDYxLCAzMiwgMTYsIDIyNiwgNTQsIDYxLCAzMiwgMTYsIAorICAgIDIxNSwgMjUyLCA2MSwgMzIsIDE2LCAyMjYsIDM0LCA2MSwgMzIsIDE2LCAyMTYsIDUwLCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDI0MCwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjI2LCAyNDEsIDIyMCwgMjEsIDI1MSwgNTUsIDYxLCAKKyAgICAzMiwgMTYsIDE5OSwgMjE1LCA2MSwgMzIsIDE2LCAyNTEsIDE1LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDE2LCAyMDcsIAorICAgIDEwOCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMTk5LCAyMTYsIDYxLCAzMiwgMTYsIDIyNiwgMzMsIDYxLCAzMiwgMTYsIDIzOCwgCisgICAgMjA4LCA2MSwgMzIsIDE2LCAyNDcsIDI5LCA2MSwgMzIsIDE2LCAyMjEsIDE3NywgMjI4LCAxNiwgNjEsIDMyLCAxNiwgMjAzLCAKKyAgICA3NywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE1LCAyMDIsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNCwgMjMzLCAyMjAsIAorICAgIDIwLCA2MSwgMzIsIDE2LCAyMTcsIDg1LCA2MSwgMzIsIDE2LCAyNTEsIDQyLCA2MSwgMzIsIDE2LCAyMjMsIDI1NCwgNjEsIAorICAgIDMyLCAxNiwgMjE2LCAxMjMsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNiwgMTI1LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyMzgsIDc1LCAyMTYsIDEyNCwgNjEsIDMyLCAxNiwgMjI1LCAxOTcsIDYxLCAzMiwgMTYsIDI1MSwgNDMsIDYxLCAzMiwgMTYsIAorICAgIDIwNSwgNjksIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzOCwgMjExLCA2MSwgMzIsIDE2LCAyMDcsIDExMSwgMjIwLCAyMCwgCisgICAgNjEsIDMyLCAxNiwgMjA3LCAxMDEsIDYxLCAzMiwgMTYsIDI0NiwgMjA0LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzgsIAorICAgIDEzMCwgNjEsIDMyLCAxNiwgMjExLCAxNzksIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIwMCwgMTYyLCAyMjYsIDEwMCwgNjEsIAorICAgIDMyLCAxNiwgMjA1LCA2NiwgNjEsIDMyLCAxNiwgMjE0LCAyMzQsIDYxLCAzMiwgMTYsIDIwNSwgNzAsIDYxLCAzMiwgMTYsIAorICAgIDIwNSwgNjcsIDYxLCAzMiwgMTYsIDIxNCwgMjMxLCA2MSwgMzIsIDE2LCAyMDUsIDY1LCA2MSwgMzIsIDE2LCAyMTQsIDIzMCwgCisgICAgNjEsIDMyLCAxNiwgMjM1LCA5OSwgNjEsIDMyLCAxNiwgMjUwLCAyMjQsIDYxLCAzMiwgMTYsIDIzOCwgNzUsIDI1MCwgMjI0LCAKKyAgICA2MSwgMzIsIDE2LCAyMTYsIDIyOCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjA2LCA5OSwgMjM4LCA4OCwgNjEsIDMyLCAxNiwgCisgICAgMjA2LCA5OSwgMjM4LCAzNiwgNjEsIDMyLCAxNiwgMjA2LCAxMDEsIDI1MSwgMTksIDYxLCAzMiwgMTYsIDIwNiwgOTMsIAorICAgIDIyNywgODMsIDI1MSwgMTEsIDYxLCAzMiwgMTYsIDIyNywgMzAsIDYxLCAzMiwgMTYsIDIzOCwgMTY3LCA2MSwgMzIsIDE2LCAKKyAgICAyMDAsIDEzLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAyMDAsIDEzLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMDgsIDk4LCA2MSwgCisgICAgMzIsIDE2LCAyMjYsIDEwMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjQxLCAxNSwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMzYsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMjYsIDM2LCAyNTEsIDExOSwgNjEsIDMyLCAxNiwgMjI2LCAzNiwgCisgICAgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjUxLCAxOCwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjUxLCAyMCwgNjEsIDMyLCAxNiwgCisgICAgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjA1LCA4MSwgNjEsIDMyLCAxNiwgMjA2LCAxMzksIDYxLCAzMiwgMTYsIDIyNiwgNTgsIAorICAgIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIzOCwgMTYwLCAyNDYsIDE5NCwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjM5LCA5NywgCisgICAgMjQ2LCAxOTUsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIwNSwgODQsIDI0NiwgMTk1LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAKKyAgICAyMDYsIDE1MCwgMjQ2LCAxOTUsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIDIyOCwgMTI1LCAyNDYsIDE5NCwgNjEsIDMyLCAxNiwgCisgICAgMjM1LCAxMDAsIDIyMCwgMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIzNSwgMTAwLCAyMTYsIDExMywgMjUwLCAyMjAsIDYxLCAKKyAgICAzMiwgMTYsIDIzNSwgMTAwLCAyMTYsIDExMywgMjQxLCAxMDUsIDYxLCAzMiwgMTYsIDI0MSwgMzksIDYxLCAzMiwgMTYsIAorICAgIDI0MSwgNDAsIDIxNiwgMTEzLCAyNTAsIDIyMSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgMjQxLCA0MCwgMjE2LCAxMTMsIDI1MCwgCisgICAgMjIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyNDEsIDQwLCAyMTYsIDExMywgMjQxLCAxMDUsIDYxLCAzMiwgMTYsIDIwNSwgCisgICAgODksIDYxLCAzMiwgMTYsIDI1MCwgMjI1LCA2MSwgMzIsIDE2LCAyMjgsIDEzMiwgNjEsIDMyLCAxNiwgMjQxLCA2MiwgNjEsIAorICAgIDMyLCAxNiwgMjUxLCAxODcsIDIxNSwgODksIDI1MCwgMjI2LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjUwLCAyMjMsIDYxLCAKKyAgICAzMiwgMTYsIDI1MSwgMTg3LCAyNTAsIDIyNiwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIDIyMiwgMTUsIDYxLCAzMiwgMTYsIAorICAgIDI1MSwgMTg3LCAyMjIsIDI2LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjM1LCAxMDEsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAKKyAgICAyMzUsIDk4LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjE1LCA4OSwgMjM1LCAxMDEsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAKKyAgICAyMTQsIDI0MCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNTEsIDEyMSwgMjE0LCAyNDAsIDIzMiwgMjI3LCAKKyAgICA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjQxLCAxMDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjUxLCAxMjEsIAorICAgIDI0MSwgMTA0LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIwNSwgNzYsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMjIsIDE0MCwgMjA1LCA5MCwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIwNiwgMTQ0LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgCisgICAgMjIyLCAxNDAsIDIwNiwgMTQ0LCAyMjUsIDE1LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIyNSwgMTUsIAorICAgIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjE1LCAxMzIsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjgsIDI0LCAKKyAgICAyMDYsIDE3MCwgMjMyLCAyMjgsIDYxLCAzMiwgMTYsIDI1MSwgMTYsIDIwNiwgMTcwLCAyMzIsIDIyOCwgNjEsIDMyLCAxNiwgCisgICAgMjM3LCAxNjcsIDIwNiwgMTQxLCA2MSwgMzIsIDE2LCAyMzcsIDE2NywgMjIxLCA5OCwgNjEsIDMyLCAxNiwgMjM3LCAxNjcsIAorICAgIDI0MSwgNDUsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMDMsIDcwLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIAorICAgIDIxNCwgMjM5LCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIxNSwgMTMyLCAyMDYsIDE0NCwgMjMyLCAyMjcsIAorICAgIDYxLCAzMiwgMTYsIDIzNSwgOTUsIDIyMCwgMjE1LCAyNTEsIDE5LCA2MSwgMzIsIDE2LCAyMzUsIDk1LCAyMjAsIDIxNSwgCisgICAgMjQxLCAxMywgNjEsIDMyLCAxNiwgMjM4LCAxNzcsIDIyNywgODMsIDIzNiwgMTkxLCAyMDIsIDE3NCwgNjEsIDMyLCAxNiwgCisgICAgMjI4LCAxMzEsIDYxLCAzMiwgMTYsIDIyOCwgMTI5LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjUwLCAyMzMsIDI0MSwgMTAzLCAKKyAgICAyMzIsIDIyNiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDE3MiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgCisgICAgNjAsIDIyMCwgMTMzLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIwLCAxMjgsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMzYsIAorICAgIDE5MSwgMjQxLCA2MCwgMjQxLCA3NiwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgODIsIDI0MSwgNTksIDI0MSwgNzYsIAorICAgIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAyMjcsIDgsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAKKyAgICAxOTksIDE0LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMjE5LCAxNTEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIAorICAgIDIzNiwgMTkxLCAyNDEsIDYwLCAyMTksIDE1MSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMiwgMTg2LCAKKyAgICAyNDYsIDE5NiwgMjQxLCA0NSwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIyMiwgMTg2LCAyNDYsIDE5NiwgMjIxLCA5OCwgNjEsIAorICAgIDMyLCAxNiwgMjM3LCAxMTMsIDIwOSwgODIsIDI0NiwgMTk2LCAyMDMsIDY5LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCAKKyAgICA4MiwgMjQ2LCAxOTYsIDIwNywgMTEyLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIwLCAyMywgNjEsIDMyLCAxNiwgMjQ2LCAKKyAgICAxOTcsIDE5OCwgMjM4LCA2MSwgMzIsIDE2LCAyNDYsIDE5NywgMjI2LCA5OSwgNjEsIDMyLCAxNiwgMjQ2LCAxOTcsIDIwOCwgCisgICAgMjM1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjMzLCAxOSwgMjAwLCAxMiwgMjA2LCAxNDUsIDYxLCAzMiwgMTYsIDIzNiwgCisgICAgMTkxLCAyMzgsIDE3OCwgMjUxLCA0NCwgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjA1LCA3NywgNjEsIDMyLCAxNiwgMjQxLCAKKyAgICA1MywgMjA1LCA3NywgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjA2LCAxNDUsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDI1MSwgMjEsIAorICAgIDIzOSwgOTcsIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyMjEsIDk2LCAyMDYsIDE0OSwgMjQwLCAyMDMsIDYxLCAKKyAgICAzMiwgMTYsIDI0MSwgNTMsIDI0MSwgMzYsIDIzOCwgNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyMDUsIAorICAgIDg3LCAyMTcsIDk1LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjUxLCAyMSwgMjM5LCA5NywgMjQwLCAyMDMsIAorICAgIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDIyMSwgOTYsIDIwNiwgMTQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjAwLCAxMiwgCisgICAgMjQxLCAzNiwgMjM4LCA0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDIwMCwgMTIsIDIwNSwgODcsIDIxNywgOTUsIDI0MCwgCisgICAgMjAzLCA2MSwgMzIsIDE2LCAyMzUsIDI1NSwgMjQxLCA1MiwgNjEsIDMyLCAxNiwgMjM1LCAyNTUsIDIwMCwgMTEsIDYxLCAKKyAgICAzMiwgMTYsIDI0MSwgNjEsIDI1MSwgMjEsIDIyMSwgMTc4LCA2MSwgMzIsIDE2LCAyNDEsIDYxLCAyNTEsIDIxLCAyMjIsIAorICAgIDU1LCA2MSwgMzIsIDE2LCAyNDEsIDYxLCAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyNDEsIDYxLCAyMDYsIDkxLCA2MSwgMzIsIAorICAgIDE2LCAyMDksIDE0OSwgMjA2LCA5MSwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDIwNiwgOTIsIDI0MCwgMjU0LCA2MSwgMzIsIAorICAgIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjA1LCA3OCwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDIwNiwgOTIsIDIwNiwgMTM3LCAKKyAgICA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTYsIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NywgMjQwLCAyNTQsIAorICAgIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NywgMjA1LCA3OCwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAKKyAgICAyMDYsIDEzNywgNjEsIDMyLCAxNiwgMjQxLCAzNywgMjM1LCAyMzYsIDYxLCAzMiwgMTYsIDI0MSwgNDQsIDIxNywgMywgNjEsIAorICAgIDMyLCAxNiwgMjA4LCA4NiwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDE3MiwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDIwMiwgCisgICAgMTc0LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjM2LCA4OSwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDI0MSwgNzYsIDYxLCAKKyAgICAzMiwgMTYsIDI1MCwgMjE3LCAyMjcsIDgsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAxOTksIDE0LCA2MSwgMzIsIDE2LCAyNTAsIAorICAgIDIxNywgMjE5LCAxNTAsIDYxLCAzMiwgMTYsIDIyNiwgMjQwLCAyMjAsIDIxLCAyMjIsIDI1LCA2MSwgMzIsIDE2LCAyMjYsIAorICAgIDI0MSwgMjIwLCAyMSwgMjIyLCAyNSwgNjEsIDMyLCAxNiwgMjI2LCAyNDAsIDIyMCwgMjEsIDIyNywgMjcsIDYxLCAzMiwgCisgICAgMTYsIDIyNiwgMjQxLCAyMjAsIDIxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAyMjYsIDEwMSwgMjI3LCAyNywgNjEsIDMyLCAKKyAgICAxNiwgMjM1LCAxMDAsIDIyMCwgMjEsIDIyNywgMjcsIDMyLCAxNiwgMjA5LCAxMzksIDI0OSwgNzIsIDMyLCAxNiwgNTMsIAorICAgIDI0OSwgNzIsIDMyLCAxNiwgNDcsIDI0OSwgNzIsIDMyLCAxNiwgMjEzLCAxMDYsIDQ3LCAyNDksIDcyLCAzMiwgMTYsIDI0MSwgCisgICAgMjQzLCAyNDksIDcyLCAzMiwgMTYsIDIwOSwgMjUwLCAyNDksIDcyLCAzMiwgMTYsIDQ5LCAyMTMsIDEzMywgNTQsIDMyLCAKKyAgICAxNiwgNTEsIDIxMywgMTMzLCA1NCwgMzIsIDE2LCAyMTMsIDEzMywgMjQwLCAxODAsIDMyLCAxNiwgMjQyLCAzMCwgMjExLCAKKyAgICAxODIsIDMyLCAxNiwgMjQyLCA1OSwgMjQ3LCAxNDEsIDMyLCAxNiwgMjExLCAxODIsIDMyLCAxNiwgMjQ2LCA4NywgMzIsIAorICAgIDE2LCAyMTMsIDEzMSwgMjM3LCAxMDEsIDMyLCAxNiwgMjEzLCAxMzEsIDIzNywgMTAwLCAzMiwgMTYsIDIxMywgMTMxLCAKKyAgICAyMzcsIDk5LCAzMiwgMTYsIDIzNywgMTIyLCAzMiwgMTYsIDIzNywgMTIzLCA1NywgMzIsIDE2LCAyNDgsIDU5LCA4MSwgMzIsIAorICAgIDE2LCAyNDcsIDE4MCwgMzIsIDE2LCAyNDgsIDcxLCAzMiwgMTYsIDE1OSwgMzIsIDE2LCAyMTcsIDczLCAyMDgsIDExNywgCisgICAgMzIsIDE2LCAyMDQsIDE0MCwgMjA4LCAxMTcsIDMyLCAxNiwgMjA2LCA0MiwgMjA4LCAxMTcsIDMyLCAxNiwgMjM2LCAyMjgsIAorICAgIDIwOCwgMTE3LCAzMiwgMTYsIDIzNywgNjAsIDIwOCwgMTE3LCAzMiwgMTYsIDIwOSwgMTA1LCAyMDgsIDExNywgMzIsIDE2LCAKKyAgICAyMDksIDEwMywgMjM2LCAyMDgsIDMyLCAxNiwgMjM2LCAyMjYsIDIzNiwgMjA4LCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIAorICAgIDEyNCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAxMjUsIDIxNywgNSwgMjUxLCAxMTAsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgCisgICAgMTI1LCAyMTcsIDUsIDI0OSwgNTcsIDMyLCAxNiwgMjQ3LCAyMjQsIDI0NiwgMTI0LCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAKKyAgICAxMjQsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIDEyNSwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgCisgICAgMTI1LCAyMTcsIDUsIDI0OSwgNTcsIDMyLCAxNiwgMjM5LCAxNDMsIDI0NiwgMTIzLCAzMiwgMTYsIDIzOSwgMTQzLCAyNDYsIAorICAgIDEyMiwgMzIsIDE2LCAyMjEsIDIxLCAyMjIsIDc1LCAyMTMsIDExNywgMzIsIDE2LCA1MywgMjEwLCA3OCwgMzIsIDE2LCA1MywgCisgICAgMjM3LCA0NCwgMzIsIDE2LCAyMzcsIDQ1LCAyMDMsIDIyOCwgMzIsIDE2LCAyMzcsIDQ1LCAyMzksIDE2NywgMzIsIDE2LCAKKyAgICAyMjAsIDExNywgMjAzLCAyMjgsIDMyLCAxNiwgMjIwLCAxMTcsIDIzOSwgMTY3LCAzMiwgMTYsIDIxMCwgNzksIDIwMywgCisgICAgMjI4LCAzMiwgMTYsIDIxMCwgNzksIDIzOSwgMTY3LCAzMiwgMTYsIDIxNCwgODgsIDE1MCwgMjEwLCA3OCwgMzIsIDE2LCAKKyAgICAyMTQsIDg4LCAxNTAsIDIzNywgNDQsIDMyLCAxNiwgMjQ2LCA2NywgMjA1LCAyMzQsIDMyLCAxNiwgMjQyLCAxODAsIDIwNSwgCisgICAgMjM0LCAzMiwgMTYsIDIxNywgNSwgMjUxLCAxMTAsIDMyLCAxNiwgMjE3LCA1LCAyNDksIDU3LCAzMiwgMTYsIDIxNCwgNjksIAorICAgIDI1MSwgMTEwLCAzMiwgMTYsIDIxNCwgNjksIDI0OSwgNTcsIDMyLCAxNiwgMjIxLCAyNCwgMjEzLCAxMTcsIDMyLCAxNiwgCisgICAgMjAxLCAzMiwgMjEzLCAxMTcsIDMyLCAxNiwgMTY3LCAyMTMsIDExNywgMzIsIDE2LCAyMTQsIDg4LCAyMTMsIDExNywgMzIsIAorICAgIDE2LCAyMzgsIDIyOCwgMjEzLCAxMTcsIDMyLCAxNiwgMjA5LCA5OSwgMjEzLCAxMTcsIDMyLCAxNiwgMjA2LCA2NSwgMjEzLCAKKyAgICAxMTcsIDMyLCAxNiwgMjA5LCA5MSwgMjEzLCAxMTcsIDMyLCAxNiwgMTEyLCAyMzMsIDgzLCAyMDQsIDE1NywgMjEzLCAxMTcsIAorICAgIDMyLCAxNiwgMjAwLCAxOTYsIDIxOCwgMjA1LCAzMiwgMTYsIDkzLCAyMTgsIDIwNSwgMzIsIDE2LCAyNDYsIDE1NiwgMjAwLCAKKyAgICAxOTYsIDIxOCwgMjA1LCAzMiwgMTYsIDUyLCAyMTgsIDIwNiwgMjAxLCAzNCwgMzIsIDE2LCA1MiwgMjE4LCAyMDYsIDI0OCwgCisgICAgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIAorICAgIDExNSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDQ5LCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIAorICAgIDIxOCwgMjA2LCA0OSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDUxLCAyMDEsIDM0LCAzMiwgMTYsIAorICAgIDIwNSwgOTksIDIxOCwgMjA2LCA1MSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDEyNywgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTI3LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTE1LCAKKyAgICA1MSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTE1LCA1MSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjIxLCAKKyAgICA4MiwgMjE4LCAyMDYsIDIwMSwgMzQsIDMyLCAxNiwgMjIxLCA4MiwgMjE4LCAyMDYsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgCisgICAgOTYsIDIxOCwgMjA2LCAxMjcsIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5NiwgMjE4LCAyMDYsIDEyNywgMjQ4LCAxNDQsIDMyLCAKKyAgICAxNiwgMjE2LCAxMTYsIDIxOCwgMjA1LCAzMiwgMTYsIDIwMiwgMTg2LCAyMTgsIDIwNSwgMzIsIDE2LCAyMTgsIDIwNiwgCisgICAgMjQ4LCAxNDQsIDMyLCAxNiwgMjE4LCA5OCwgMjE4LCAyMDUsIDMyLCAxNiwgMjQ2LCA5NCwgMjE4LCAyMDYsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjQ2LCA5NCwgMjE4LCAyMDYsIDI0OCwgMTQ0LCAzMiwgMTYsIDI0OCwgNTcsIDMyLCAxNiwgMjAxLCAzMiwgCisgICAgMjE4LCAyMDksIDMyLCAxNiwgMTY3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMTQsIDg4LCAyMTgsIDIwOSwgMzIsIDE2LCAyMzgsIAorICAgIDIyOCwgMjE4LCAyMDksIDMyLCAxNiwgMjA5LCA5OSwgMjE4LCAyMDksIDMyLCAxNiwgMjA2LCA2NSwgMjE4LCAyMDksIDMyLCAKKyAgICAxNiwgMjA5LCA5MSwgMjE4LCAyMDksIDMyLCAxNiwgMTEyLCAyMzMsIDgzLCAyMDQsIDE1NywgMjE4LCAyMDksIDMyLCAxNiwgCisgICAgMzgsIDIwOCwgOTIsIDMyLCAxNiwgMzgsIDIwOCwgMjAwLCAyMDgsIDkyLCAzMiwgMTYsIDM4LCAyMDUsIDEwNywgMzIsIDE2LCAKKyAgICAzOCwgMjA1LCAxMDYsIDMyLCAxNiwgMzgsIDIwNSwgMTA1LCAzMiwgMTYsIDIzNywgODQsIDIwNSwgMTA3LCAzMiwgMTYsIAorICAgIDIzNywgODQsIDIwNSwgMTA2LCAzMiwgMTYsIDIzNywgODQsIDIwNSwgMTA1LCAzMiwgMTYsIDM4LCAyNTAsIDEzNiwgMjQwLCAKKyAgICAxODIsIDMyLCAxNiwgMzgsIDIzNywgNTIsIDMyLCAxNiwgMzgsIDIzNywgNTEsIDMyLCAxNiwgMzgsIDIzNywgNTAsIDMyLCAKKyAgICAxNiwgMzgsIDIzNywgNDksIDMyLCAxNiwgMzgsIDIzNywgNDgsIDMyLCAxNiwgMjQ4LCAyNDQsIDI0OSwgNSwgMzIsIDE2LCAKKyAgICAyMzgsIDE3MSwgMjQ5LCA1LCAzMiwgMTYsIDI0OCwgMjQ0LCAyMDYsIDcsIDMyLCAxNiwgMjM4LCAxNzEsIDIwNiwgNywgMzIsIAorICAgIDE2LCAyNDgsIDI0NCwgMjA5LCA1NCwgMzIsIDE2LCAyMzgsIDE3MSwgMjA5LCA1NCwgMzIsIDE2LCAyNDgsIDI0NCwgMjE1LCAKKyAgICAyMTEsIDMyLCAxNiwgMjM4LCAxNzEsIDIxNSwgMjExLCAzMiwgMTYsIDM4LCAyNTEsIDI1MSwgMzIsIDE2LCAzOCwgMjA4LCAKKyAgICAxMjAsIDMyLCAxNiwgMzgsIDIwNiwgMTU0LCAzMiwgMTYsIDM4LCAyMDgsIDEyMSwgMzIsIDE2LCAzOCwgMjIyLCAxNTQsIAorICAgIDMyLCAxNiwgMzgsIDIyMiwgMTUzLCAzMiwgMTYsIDM4LCAyNTEsIDI1MCwgMzIsIDE2LCAzOCwgMjI0LCA2MSwgMzIsIDE2LCAKKyAgICAyNTAsIDIwOCwgMjAzLCAyMjgsIDMyLCAxNiwgMjUwLCAyMDgsIDIzOSwgMTY3LCAzMiwgMTYsIDM4LCAyNDAsIDE5NywgMzIsIAorICAgIDE2LCAzOCwgMjEzLCAyMywgMzIsIDE2LCAzOCwgMjM3LCAzMywgMzIsIDE2LCAzOCwgMjA5LCA1MCwgMzIsIDE2LCAzOCwgCisgICAgMjQ4LCAyMjIsIDMyLCAxNiwgMzgsIDUzLCAyMDUsIDE2MywgMzIsIDE2LCAzOCwgMjA1LCA4MywgMjA1LCAxNjMsIDMyLCAKKyAgICAxNiwgMjEzLCAyOCwgMzIsIDE2LCAyMDgsIDE0LCAzMiwgMTYsIDE5OSwgMTU3LCAzMiwgMTYsIDIxNSwgMjAzLCAzMiwgMTYsIAorICAgIDIyMiwgNiwgMzIsIDE2LCAyMzYsIDIzOCwgMzIsIDE2LCAyNDIsIDI0NSwgMzIsIDE2LCAyNDEsIDE2MiwgMzIsIDE2LCAKKyAgICAyMzUsIDkwLCAyMTgsIDIxMCwgMjA5LCA3NSwgMzIsIDE2LCAyMzUsIDkwLCAyMTgsIDIxMCwgMjE4LCAyNDIsIDIwOSwgNzUsIAorICAgIDMyLCAxNiwgMjA1LCAxMzMsIDMyLCAxNiwgMjA0LCAxODYsIDMyLCAxNiwgMjI4LCA1MCwgMjA0LCAxODYsIDMyLCAxNiwgCisgICAgMjA0LCAxODcsIDIwOSwgNzUsIDMyLCAxNiwgMjA0LCAxODcsIDIwMywgMjI4LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDYsIAorICAgIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0MywgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQyLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgCisgICAgNDEsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0MCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDM5LCAzMiwgMTYsIDIxNywgMjIsIAorICAgIDIwOCwgMzgsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAzNywgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDM2LCAzMiwgMTYsIDIxNywgCisgICAgMjIsIDIwOCwgNDUsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0NCwgMzIsIDE2LCAyMzQsIDE0OSwgMzIsIDE2LCAyMjAsIDMyLCAKKyAgICAzMiwgMTYsIDIzOCwgMTcxLCA3NiwgMjA4LCA4MiwgMzIsIDE2LCAyNDEsIDE1NSwgMjA5LCA3NSwgMzIsIDE2LCAzOCwgCisgICAgMTI3LCAyNDgsIDg1LCAzMiwgMTYsIDM4LCAxMTUsIDI0OCwgODUsIDMyLCAxNiwgMzgsIDIzNCwgMTYyLCAzMiwgMTYsIDM4LCAKKyAgICAyMDksIDQwLCAyMTUsIDEzNiwgMzIsIDE2LCAyMTYsIDY2LCA4MSwgMzIsIDE2LCAyMTYsIDY2LCAxMTUsIDgxLCAzMiwgMTYsIAorICAgIDE2NywgMjE2LCA2NiwgODEsIDMyLCAxNiwgMjM1LCAxMjUsIDIwMywgMjI4LCAzMiwgMTYsIDIzNSwgMTI1LCAyMzksIDE2NywgCisgICAgMzIsIDE2LCAzLCAyMzcsIDgzLCAzMiwgMTYsIDI0MiwgMTMsIDMyLCAxNiwgMjQyLCAxNCwgMjUxLCAxMjQsIDMyLCAxNiwgCisgICAgMjIyLCAxMjEsIDMyLCAxNiwgMjI0LCA4MCwgMzIsIDE2LCAyNDgsIDU0LCAzMiwgMTYsIDIxMCwgMTcxLCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDIxMCwgMTcxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMjEsIDE2MCwgMzIsIDE2LCAyMjEsIDE2MSwgMjQ4LCAxNDQsIAorICAgIDMyLCAxNiwgMjEwLCAxNjUsIDIwMSwgMzQsIDMyLCAxNiwgMjEwLCAxNjUsIDI0OCwgMTQ0LCAzMiwgMTYsIDIzNiwgMTc0LCAKKyAgICAyMDEsIDM0LCAzMiwgMTYsIDIzNiwgMTc0LCAyNDgsIDE0NCwgMzIsIDE2LCAyMjQsIDgxLCAyMTYsIDI1LCAyMTMsIDExNywgCisgICAgMzIsIDE2LCAyMjQsIDgxLCAyMjgsIDEyMiwgMjEzLCAxMTcsIDMyLCAxNiwgMjQ4LCA1NSwgMjEzLCAxMTcsIDMyLCAxNiwgCisgICAgMjEwLCAxNzEsIDIxMywgMTE3LCAzMiwgMTYsIDIyMSwgMTYxLCAyMTMsIDExNywgMzIsIDE2LCAyMTAsIDE2NSwgMjEzLCAKKyAgICAxMTcsIDMyLCAxNiwgMjA2LCAxNjgsIDIxNiwgMjMsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjE2LCAyNCwgMzIsIDE2LCAyMDYsIAorICAgIDE2OCwgMjE2LCAyMywgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMSwgMzIsIDE2LCAyMDYsIDE2OCwgMjE2LCAyMywgCisgICAgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMTYsIDI1LCAyNDEsIDI0LCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAKKyAgICAyMDcsIDIxNCwgMjQ5LCAyMTYsIDI0LCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAKKyAgICAyMjgsIDEyMSwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgCisgICAgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIDIzLCAKKyAgICAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAyMiwgMzIsIAorICAgIDE2LCAyNDIsIDIzNywgMzIsIDE2LCAyMzUsIDYzLCAyNDcsIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjM1LCA2MywgMjM4LCAKKyAgICA2LCAyNDYsIDEyNCwgMzIsIDE2LCA1MiwgMjUwLCAxMDMsIDMyLCAxNiwgMjAyLCAyMDcsIDMyLCAxNiwgMjE1LCAxMDMsIAorICAgIDMyLCAxNiwgMjQ2LCAxMTUsIDMyLCAxNiwgMjExLCAyMjYsIDMyLCAxNiwgMjQ2LCAxMTksIDMyLCAxNiwgMjA1LCAxNTEsIAorICAgIDMyLCAxNiwgMjE1LCA3MiwgMzIsIDE2LCAyMTUsIDczLCAyMzcsIDM2LCAzMiwgMTYsIDIxMSwgMjI3LCAyMzcsIDM2LCAzMiwgCisgICAgMTYsIDIwNSwgMTUyLCAyMTMsIDExNCwgMzIsIDE2LCAyMTYsIDYsIDIwOCwgNSwgMzIsIDE2LCAyMjYsIDE1MywgMjQ3LCAKKyAgICAyMjQsIDI0NiwgMTI0LCAzMiwgMTYsIDIyNiwgMTUzLCAyMzgsIDE3MSwgNzYsIDIxNSwgMTk2LCAzMiwgMTYsIDIyNiwgCisgICAgMTUzLCA0NywgMjE4LCAyMDksIDMyLCAxNiwgMjI2LCAxNTMsIDIxMywgMTgyLCA4MSwgMzIsIDE2LCAyMjYsIDE1MywgMjAxLCAKKyAgICAzMiwgMjE4LCAyMDksIDMyLCAxNiwgMjI2LCAxNTMsIDE2NywgMjE4LCAyMDksIDMyLCAxNiwgMjI2LCAxNTMsIDIxNCwgODgsIAorICAgIDIxOCwgMjEwLCAyMDgsIDkzLCAyMzksIDE2NywgMzIsIDE2LCAyMjYsIDE1MywgMjE0LCA4OCwgMjE4LCAyMTAsIDIwOCwgCisgICAgOTMsIDIwMywgMjI4LCAzMiwgMTYsIDIyNiwgMTUzLCAyMzgsIDIyOCwgMjE4LCAyMTAsIDIwOCwgOTMsIDIzOSwgMTY3LCAKKyAgICAzMiwgMTYsIDIyNiwgMTUzLCAyMzgsIDIyOCwgMjE4LCAyMTAsIDIwOCwgOTMsIDIwMywgMjI4LCAzMiwgMTYsIDIyNiwgCisgICAgMTUzLCAyMzcsIDQ1LCA1NCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNjIsIDMxLCAyMDIsIDE5MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTUxLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0MSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMzQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTI2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDEyMCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTksIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE4LCAKKyAgICAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExNywgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNjEsIDMxLCAKKyAgICAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTYwLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1OSwgMzEsIDIwMiwgCisgICAgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTgsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU3LCAzMSwgMjAyLCAxOTIsIAorICAgIDIxOCwgMjEzLCAyMDcsIDE1NiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTUsIDMxLCAyMDIsIDE5MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTU0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1MywgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxNTIsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTUwLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIAorICAgIDE0OSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDgsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ3LCAKKyAgICAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0NiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjUsIDMxLCAKKyAgICAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTI0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMywgMzEsIDIwMiwgCisgICAgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjIsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIxLCAzMSwgMjI4LCA3MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTYyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTUxLCAzMSwgMjI4LCA3MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTM0LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI2LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTE5LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTE4LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTYwLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU5LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU4LCAKKyAgICAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU3LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTU0LCAzMSwgCisgICAgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTUzLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTUyLCAzMSwgMjI4LCAKKyAgICA3MiwgMjE4LCAyMTMsIDIwNywgMTQ3LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTQ2LCAzMSwgMjI4LCA3MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTQ1LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTQ0LCAzMSwgMjI4LCA3MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTQzLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTQyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTQwLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM5LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTM4LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM3LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM2LCAKKyAgICAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTM1LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTMzLCAzMSwgCisgICAgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTMyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTMxLCAzMSwgMjI4LCAKKyAgICA3MiwgMjE4LCAyMTMsIDIwNywgMTMwLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI5LCAzMSwgMjI4LCA3MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTI4LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI3LCAzMSwgMjI4LCA3MiwgMjE4LCAKKyAgICAyMTMsIDIwNywgMTI1LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTI0LCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIAorICAgIDIwNywgMTIzLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgMTIyLCAzMSwgMjI4LCA3MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTIxLCAzOCwgMzEsIDMyLCAyMDUsIDc5LCAzOCwgMzEsIDMyLCAyMDYsIDEzOCwgMzgsIDMxLCAzMiwgMjE2LCAzNSwgMzEsIAorICAgIDMyLCAyMjUsIDEwLCAyMjEsIDk3LCAzNiwgMjM5LCAxNywgMjQxLCAzOCwgMzYsIDIzNCwgMTIyLCAyMzksIDE3LCAyNDEsIAorICAgIDM4LCAzNiwgMjMzLCA4NywgMjM5LCAxNywgMjQxLCAzOCwgMzYsIDIzOSwgMTYsIDIzNCwgMTIzLCAyNDEsIDM4LCAzNiwgCisgICAgMjM5LCAxNiwgMjMzLCA4NiwgMjQxLCAzOCwgMzYsIDIzOSwgMTcsIDIwNiwgMTQwLCAzNiwgMjQ3LCA1NSwgMjA2LCAxNDAsIAorICAgIDM2LCAyMzYsIDE4MywgMjQ2LCAxNTUsIDIwNiwgMTQwLCAzNiwgMjIxLCAxNTIsIDIwNiwgMTQwLCAzNiwgMjQ5LCA2NywgCisgICAgMjA2LCAxNDAsIDM2LCAyMjcsIDIsIDIwOSwgNTMsIDIwNiwgMTQwLCAzNiwgMjQzLCAzNSwgMjA2LCAxNDAsIDM2LCAyNTAsIAorICAgIDE4MywgMjA2LCAxNDAsIDM2LCAyMTcsIDM5LCAyMDYsIDE0MCwgMzYsIDI0OCwgNjQsIDIxNiwgMjU0LCAyMDYsIDE0MCwgCisgICAgMzYsIDI0MSwgMTU3LCAyMTcsIDM0LCAyNDAsIDI0NiwgMjA2LCAxNDAsIDM2LCAyNDAsIDI0MywgMjA2LCAxNDAsIDM2LCAKKyAgICAxOTksIDIyMywgMjA2LCAxNDAsIDM2LCAyMjgsIDEwOCwgMjA2LCAxNDAsIDM2LCAyMTYsIDQ1LCAyMDYsIDE0MCwgMzYsIAorICAgIDIxMywgMTg5LCAyMDYsIDE0MCwgMzYsIDI0MywgNDcsIDIwNiwgMTQwLCAzNiwgMjMzLCAxOTgsIDI0OSwgMTI5LCAyMDYsIAorICAgIDE0MCwgMzYsIDIwMSwgMTA2LCAyMDYsIDE0MCwgMzYsIDIzNywgOCwgMjA2LCAxNDAsIDM2LCAyNTEsIDIyNCwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTMsIDE0NiwgMjA2LCAxNDAsIDM2LCAyMTMsIDEyMSwgMjA2LCAxNDAsIDM2LCAyMzksIDE1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIyNywgMTUwLCAyMDYsIDE0MCwgMzYsIDI0MywgNDIsIDIwNiwgMTQwLCAzNiwgMjM4LCAxNzAsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM5LCAxMDksIDIwNiwgMTQwLCAzNiwgMjQ3LCAyNCwgMjA2LCAxNDAsIDM2LCAyNDEsIDE2NywgMjA2LCAKKyAgICAxNDAsIDM2LCAyNywgMjEzLCAxMjAsIDIwNiwgMTQwLCAzNiwgMjE2LCAyMDIsIDIwNiwgMTQwLCAzNiwgMjI1LCAxNCwgCisgICAgMjA2LCAxNDAsIDM2LCAyNDYsIDEwOCwgMjA2LCAxNDAsIDM2LCAyMjYsIDE0MywgMjA2LCAxNDAsIDM2LCAyMzYsIDM5LCAKKyAgICAyMDYsIDE0MCwgMzYsIDIwOCwgNTgsIDIwNiwgMTQwLCAzNiwgMjE0LCAyMDEsIDIwNiwgMTQwLCAzNiwgMjM2LCAxODIsIAorICAgIDIwNiwgMTQwLCAzNiwgMjEzLCAxMjIsIDIwNiwgMTQwLCAzNiwgMjI1LCA1MywgMjE3LCAzNCwgMjIxLCAxMzIsIDIwNiwgCisgICAgMTQwLCAzNiwgMjEzLCAxMTgsIDIwNiwgMTQwLCAzNiwgMjM1LCAxMTAsIDIwNSwgMTg2LCAyMjIsIDU5LCAyMDYsIDE0MCwgCisgICAgMzYsIDIzOCwgMTcyLCAyMDYsIDE0MCwgMzYsIDIwOCwgNzEsIDIwNiwgMTQwLCAzNiwgMjM1LCA2NSwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzgsIDE2MywgMjA2LCAxNDAsIDM2LCAyMTYsIDg5LCAyMDYsIDE0MCwgMzYsIDIxMywgMTYsIDIwNiwgMTQwLCAzNiwgCisgICAgMjM3LCAzNCwgMjA2LCAxNDAsIDM2LCAyMDMsIDY4LCAyMTcsIDM0LCAyMDEsIDg2LCAyMDYsIDE0MCwgMzYsIDI0MywgNTIsIAorICAgIDIwNiwgMTQwLCAzNiwgMjIyLCA3NCwgMjA2LCAxNDAsIDM2LCAyMzgsIDc2LCAyMDYsIDE0MCwgMzYsIDIwMywgMjM4LCAKKyAgICAyMDYsIDE0MCwgMzYsIDI0MSwgMjUsIDIwNiwgMTQwLCAzNiwgMjQ2LCAxMTAsIDIyMSwgNTgsIDIwNiwgMTQwLCAzNiwgCisgICAgMjM1LCA0MiwgMjA2LCAxNDAsIDM2LCAyMzYsIDQwLCAyMjgsIDExNywgMjA2LCAxNDAsIDM2LCAyMjIsIDEyOSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyNTEsIDI0NiwgMjA2LCAxNDAsIDM2LCAyMzgsIDE4OCwgMjA2LCAxNDAsIDM2LCAyMzksIDE3MSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMDEsIDg0LCAyMDYsIDE0MCwgMzYsIDIwOSwgMTM0LCAyMDYsIDE0MCwgMzYsIDIyOCwgODEsIDIwNiwgCisgICAgMTQwLCAzNiwgMjQxLCAxMjQsIDIwNiwgMTQwLCAzNiwgMjQxLCAyNDgsIDIwNiwgMTQwLCAzNiwgMjQxLCAyMSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzgsIDQwLCAyMDYsIDE0MCwgMzYsIDIxMCwgMTI4LCAyMDYsIDE0MCwgMzYsIDIwOCwgNzUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjM0LCAxNjQsIDIwNiwgMTQwLCAzNiwgMjQ2LCA2MywgMjA2LCAxNDAsIDM2LCAyNDYsIDEwNSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzcsIDE3NCwgMjA2LCAxNDAsIDM2LCAyNTEsIDE4OCwgMjA2LCAxNDAsIDM2LCAyNDYsIDYyLCAyMDYsIAorICAgIDE0MCwgMzYsIDIxNywgNzksIDIwNiwgMTA3LCAyMDMsIDQ1LCAyMDYsIDE0MCwgMzYsIDI0MSwgNDcsIDIwNiwgMTQwLCAzNiwgCisgICAgMjI1LCAxNjQsIDIwNiwgMTQwLCAzNiwgMjM2LCAyMzIsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTAyLCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDEwNSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNDcsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTQ5LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE2NCwgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxODcsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMjEwLCAKKyAgICAxMzUsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTkyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIAorICAgIDIxOSwgMTEzLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDEwMiwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxMDUsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTQ3LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDE0OSwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxNjQsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTg3LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDIxMCwgMTM1LCAyNDMsIDMsIDIxMiwgMjQ3LCAKKyAgICAyMDYsIDE2MiwgMTcsIDE5MiwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAyMTksIDExMywgMTMsIDI3LCA2LCAKKyAgICA2MiwgMTMsIDI3LCA2LCAyNTAsIDEwMywgMTMsIDI3LCA2LCAyNDcsIDIyMywgMTMsIDI3LCA2LCAyNDIsIDE1MywgMTMsIAorICAgIDI3LCA2LCA3MiwgMTMsIDI3LCA2LCAyMzgsIDUsIDEzLCAyNywgNiwgMjM2LCAxNTYsIDEzLCAyNywgNiwgMjM0LCAyNDcsIAorICAgIDEzLCAyNywgNiwgNzAsIDEzLCAyNywgNiwgMjI3LCAyNTEsIDEzLCAyNywgNiwgMjI3LCAxMTgsIDEzLCAyNywgNiwgMTU2LCAKKyAgICAxMywgMjcsIDYsIDIyMywgMjQzLCAxMywgMjcsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDYsIDc0LCAxMywgMjcsIDYsIDIxNiwgCisgICAgMjI2LCAxMywgMjcsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDYsIDE0NiwgMTMsIDI3LCA2LCAyMTIsIDEyMiwgMTMsIDI3LCA2LCAKKyAgICAyMDcsIDgzLCAxMywgMjcsIDYsIDY2LCAxMywgMjcsIDYsIDIwMywgMTY4LCAxMywgMjcsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIAorICAgIDYsIDIwMCwgMTk1LCAxMywgMjcsIDYsIDIwMCwgMTIzLCAxMywgMjcsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDQsIDYyLCAxMywgCisgICAgMjcsIDQsIDI1MCwgMTAzLCAxMywgMjcsIDQsIDI0NywgMjIzLCAxMywgMjcsIDQsIDI0MiwgMTUzLCAxMywgMjcsIDQsIDcyLCAKKyAgICAxMywgMjcsIDQsIDIzOCwgNSwgMTMsIDI3LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCA0LCAyMzQsIDI0NywgMTMsIDI3LCA0LCAKKyAgICA3MCwgMTMsIDI3LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCA0LCAyMjcsIDExOCwgMTMsIDI3LCA0LCAxNTYsIDEzLCAyNywgNCwgCisgICAgMjIzLCAyNDMsIDEzLCAyNywgNCwgMjIwLCAyMTQsIDEzLCAyNywgNCwgNzQsIDEzLCAyNywgNCwgMjE2LCAyMjYsIDEzLCAKKyAgICAyNywgNCwgMjE0LCAxNjcsIDEzLCAyNywgNCwgMTQ2LCAxMywgMjcsIDQsIDIxMiwgMTIyLCAxMywgMjcsIDQsIDIwNywgODMsIAorICAgIDEzLCAyNywgNCwgNjYsIDEzLCAyNywgNCwgMjAzLCAxNjgsIDEzLCAyNywgNCwgMjAxLCAxNDcsIDEzLCAyNywgNCwgMjAwLCAKKyAgICAxOTUsIDEzLCAyNywgNCwgMjAwLCAxMjMsIDEzLCAyNywgNCwgMTk5LCAxNTcsIDEzLCAzOSwgNiwgNjIsIDEzLCAzOSwgNiwgCisgICAgMjUwLCAxMDMsIDEzLCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCAzOSwgNiwgMjQyLCAxNTMsIDEzLCAzOSwgNiwgNzIsIDEzLCAKKyAgICAzOSwgNiwgMjM4LCA1LCAxMywgMzksIDYsIDIzNiwgMTU2LCAxMywgMzksIDYsIDIzNCwgMjQ3LCAxMywgMzksIDYsIDcwLCAKKyAgICAxMywgMzksIDYsIDIyNywgMjUxLCAxMywgMzksIDYsIDIyNywgMTE4LCAxMywgMzksIDYsIDE1NiwgMTMsIDM5LCA2LCAyMjMsIAorICAgIDI0MywgMTMsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIDM5LCA2LCA3NCwgMTMsIDM5LCA2LCAyMTYsIDIyNiwgMTMsIDM5LCA2LCAKKyAgICAyMTQsIDE2NywgMTMsIDM5LCA2LCAxNDYsIDEzLCAzOSwgNiwgMjEyLCAxMjIsIDEzLCAzOSwgNiwgMjA3LCA4MywgMTMsIAorICAgIDM5LCA2LCA2NiwgMTMsIDM5LCA2LCAyMDMsIDE2OCwgMTMsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDM5LCA2LCAyMDAsIDE5NSwgCisgICAgMTMsIDM5LCA2LCAyMDAsIDEyMywgMTMsIDM5LCA2LCAxOTksIDE1NywgMTMsIDM5LCA0LCA2MiwgMTMsIDM5LCA0LCAyNTAsIAorICAgIDEwMywgMTMsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDM5LCA0LCA3MiwgMTMsIDM5LCA0LCAKKyAgICAyMzgsIDUsIDEzLCAzOSwgNCwgMjM2LCAxNTYsIDEzLCAzOSwgNCwgNzAsIDEzLCAzOSwgNCwgMjI3LCAyNTEsIDEzLCAzOSwgCisgICAgNCwgMjI3LCAxMTgsIDEzLCAzOSwgNCwgMTU2LCAxMywgMzksIDQsIDIyMywgMjQzLCAxMywgMzksIDQsIDIyMCwgMjE0LCAKKyAgICAxMywgMzksIDQsIDc0LCAxMywgMzksIDQsIDIxNiwgMjI2LCAxMywgMzksIDQsIDIxNCwgMTY3LCAxMywgMzksIDQsIDE0NiwgCisgICAgMTMsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDM5LCA0LCAyMDcsIDgzLCAxMywgMzksIDQsIDY2LCAxMywgMzksIDQsIDIwMywgCisgICAgMTY4LCAxMywgMzksIDQsIDIwMSwgMTQ3LCAxMywgMzksIDQsIDIwMCwgMTk1LCAxMywgMzksIDQsIDIwMCwgMTIzLCAxMywgCisgICAgMzksIDQsIDE5OSwgMTU3LCAxMywgMjcsIDM5LCA2LCA2MiwgMTMsIDI3LCAzOSwgNiwgMjUwLCAxMDMsIDEzLCAyNywgMzksIAorICAgIDYsIDI0NywgMjIzLCAxMywgMjcsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDI3LCAzOSwgNiwgNzIsIDEzLCAyNywgMzksIDYsIAorICAgIDIzOCwgNSwgMTMsIDI3LCAzOSwgNiwgMjM2LCAxNTYsIDEzLCAyNywgMzksIDYsIDIzNCwgMjQ3LCAxMywgMjcsIDM5LCA2LCAKKyAgICA3MCwgMTMsIDI3LCAzOSwgNiwgMjI3LCAyNTEsIDEzLCAyNywgMzksIDYsIDIyNywgMTE4LCAxMywgMjcsIDM5LCA2LCAxNTYsIAorICAgIDEzLCAyNywgMzksIDYsIDIyMywgMjQzLCAxMywgMjcsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCAzOSwgNiwgNzQsIDEzLCAKKyAgICAyNywgMzksIDYsIDIxNiwgMjI2LCAxMywgMjcsIDM5LCA2LCAyMTQsIDE2NywgMTMsIDI3LCAzOSwgNiwgMTQ2LCAxMywgMjcsIAorICAgIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDI3LCAzOSwgNiwgMjA3LCA4MywgMTMsIDI3LCAzOSwgNiwgNjYsIDEzLCAyNywgMzksIAorICAgIDYsIDIwMywgMTY4LCAxMywgMjcsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAzOSwgNiwgMjAwLCAxOTUsIDEzLCAyNywgCisgICAgMzksIDYsIDIwMCwgMTIzLCAxMywgMjcsIDM5LCA2LCAxOTksIDE1NywgMTMsIDI3LCAzOSwgNCwgNjIsIDEzLCAyNywgMzksIAorICAgIDQsIDI1MCwgMTAzLCAxMywgMjcsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDI3LCAzOSwgNCwgMjQyLCAxNTMsIDEzLCAyNywgCisgICAgMzksIDQsIDcyLCAxMywgMjcsIDM5LCA0LCAyMzgsIDUsIDEzLCAyNywgMzksIDQsIDIzNiwgMTU2LCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMzQsIDI0NywgMTMsIDI3LCAzOSwgNCwgNzAsIDEzLCAyNywgMzksIDQsIDIyNywgMjUxLCAxMywgMjcsIDM5LCA0LCAyMjcsIAorICAgIDExOCwgMTMsIDI3LCAzOSwgNCwgMTU2LCAxMywgMjcsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDI3LCAzOSwgNCwgMjIwLCAKKyAgICAyMTQsIDEzLCAyNywgMzksIDQsIDc0LCAxMywgMjcsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDI3LCAzOSwgNCwgMjE0LCAxNjcsIAorICAgIDEzLCAyNywgMzksIDQsIDE0NiwgMTMsIDI3LCAzOSwgNCwgMjEyLCAxMjIsIDEzLCAyNywgMzksIDQsIDIwNywgODMsIDEzLCAKKyAgICAyNywgMzksIDQsIDY2LCAxMywgMjcsIDM5LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCAzOSwgNCwgMjAxLCAxNDcsIDEzLCAyNywgCisgICAgMzksIDQsIDIwMCwgMTk1LCAxMywgMjcsIDM5LCA0LCAyMDAsIDEyMywgMTMsIDI3LCAzOSwgNCwgMTk5LCAxNTcsIDEzLCAKKyAgICAxMzUsIDYsIDYyLCAxMywgMTM1LCA2LCAyNDcsIDIyMywgMTMsIDEzNSwgNiwgMjQyLCAxNTMsIDEzLCAxMzUsIDYsIDIzNiwgCisgICAgMTU2LCAxMywgMTM1LCA2LCAyMjcsIDI1MSwgMTMsIDEzNSwgNiwgMjI3LCAxMTgsIDEzLCAxMzUsIDYsIDIyMCwgMjE0LCAKKyAgICAxMywgMTM1LCA2LCA3NCwgMTMsIDEzNSwgNiwgMjE2LCAyMjYsIDEzLCAxMzUsIDYsIDIxNCwgMTY3LCAxMywgMTM1LCA2LCAKKyAgICAyMTIsIDEyMiwgMTMsIDEzNSwgNiwgMjA3LCA4MywgMTMsIDEzNSwgNiwgNjYsIDEzLCAxMzUsIDYsIDIwMywgMTY4LCAxMywgCisgICAgMTM1LCA2LCAyMDEsIDE0NywgMTMsIDEzNSwgNiwgMjAwLCAxOTUsIDEzLCAxMzUsIDYsIDIwMCwgMTIzLCAxMywgMTM1LCA2LCAKKyAgICAxOTksIDE1NywgMTMsIDEzNSwgNCwgNjIsIDEzLCAxMzUsIDQsIDI1MCwgMTAzLCAxMywgMTM1LCA0LCAyNDcsIDIyMywgMTMsIAorICAgIDEzNSwgNCwgMjQyLCAxNTMsIDEzLCAxMzUsIDQsIDIzOCwgNSwgMTMsIDEzNSwgNCwgMjM0LCAyNDcsIDEzLCAxMzUsIDQsIAorICAgIDcwLCAxMywgMTM1LCA0LCAyMjcsIDI1MSwgMTMsIDEzNSwgNCwgMjI3LCAxMTgsIDEzLCAxMzUsIDQsIDE1NiwgMTMsIDEzNSwgCisgICAgNCwgMjIzLCAyNDMsIDEzLCAxMzUsIDQsIDIyMCwgMjE0LCAxMywgMTM1LCA0LCAyMTYsIDIyNiwgMTMsIDEzNSwgNCwgMjE0LCAKKyAgICAxNjcsIDEzLCAxMzUsIDQsIDE0NiwgMTMsIDEzNSwgNCwgMjEyLCAxMjIsIDEzLCAxMzUsIDQsIDIwNywgODMsIDEzLCAxMzUsIAorICAgIDQsIDY2LCAxMywgMTM1LCA0LCAyMDMsIDE2OCwgMTMsIDEzNSwgNCwgMjAxLCAxNDcsIDEzLCAxMzUsIDQsIDIwMCwgMTk1LCAKKyAgICAxMywgMTM1LCA0LCAyMDAsIDEyMywgMTMsIDEzNSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgMTM1LCA2LCA2MiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDEzNSwgNiwgMjQ3LCAyMjMsIDEzLCAyNywgMTM1LCA2LCAyNDIsIDE1MywgMTMsIAorICAgIDI3LCAxMzUsIDYsIDcyLCAxMywgMjcsIDEzNSwgNiwgMjM4LCA1LCAxMywgMjcsIDEzNSwgNiwgMjM2LCAxNTYsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMzQsIDI0NywgMTMsIDI3LCAxMzUsIDYsIDcwLCAxMywgMjcsIDEzNSwgNiwgMjI3LCAyNTEsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMjcsIDExOCwgMTMsIDI3LCAxMzUsIDYsIDE1NiwgMTMsIDI3LCAxMzUsIDYsIDIyMywgMjQzLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjIwLCAyMTQsIDEzLCAyNywgMTM1LCA2LCA3NCwgMTMsIDI3LCAxMzUsIDYsIDIxNiwgMjI2LCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjE0LCAxNjcsIDEzLCAyNywgMTM1LCA2LCAxNDYsIDEzLCAyNywgMTM1LCA2LCAyMTIsIDEyMiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIwNywgODMsIDEzLCAyNywgMTM1LCA2LCA2NiwgMTMsIDI3LCAxMzUsIDYsIDIwMywgMTY4LCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjAxLCAxNDcsIDEzLCAyNywgMTM1LCA2LCAyMDAsIDE5NSwgMTMsIDI3LCAxMzUsIDYsIDIwMCwgMTIzLCAxMywgCisgICAgMjcsIDEzNSwgNiwgMTk5LCAxNTcsIDEzLCAyNywgMTM1LCA0LCA2MiwgMTMsIDI3LCAxMzUsIDQsIDI1MCwgMTAzLCAxMywgCisgICAgMjcsIDEzNSwgNCwgMjQ3LCAyMjMsIDEzLCAyNywgMTM1LCA0LCAyNDIsIDE1MywgMTMsIDI3LCAxMzUsIDQsIDcyLCAxMywgCisgICAgMjcsIDEzNSwgNCwgMjM4LCA1LCAxMywgMjcsIDEzNSwgNCwgMjM2LCAxNTYsIDEzLCAyNywgMTM1LCA0LCAyMzQsIDI0NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDcwLCAxMywgMjcsIDEzNSwgNCwgMjI3LCAyNTEsIDEzLCAyNywgMTM1LCA0LCAyMjcsIDExOCwgCisgICAgMTMsIDI3LCAxMzUsIDQsIDE1NiwgMTMsIDI3LCAxMzUsIDQsIDIyMywgMjQzLCAxMywgMjcsIDEzNSwgNCwgMjIwLCAyMTQsIAorICAgIDEzLCAyNywgMTM1LCA0LCA3NCwgMTMsIDI3LCAxMzUsIDQsIDIxNiwgMjI2LCAxMywgMjcsIDEzNSwgNCwgMjE0LCAxNjcsIAorICAgIDEzLCAyNywgMTM1LCA0LCAxNDYsIDEzLCAyNywgMTM1LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCAxMzUsIDQsIDIwNywgODMsIAorICAgIDEzLCAyNywgMTM1LCA0LCA2NiwgMTMsIDI3LCAxMzUsIDQsIDIwMywgMTY4LCAxMywgMjcsIDEzNSwgNCwgMjAxLCAxNDcsIAorICAgIDEzLCAyNywgMTM1LCA0LCAyMDAsIDE5NSwgMTMsIDI3LCAxMzUsIDQsIDIwMCwgMTIzLCAxMywgMjcsIDEzNSwgNCwgMTk5LCAKKyAgICAxNTcsIDEzLCAxNzAsIDYsIDYyLCAxMywgMTcwLCA2LCAyNTAsIDEwMywgMTMsIDE3MCwgNiwgMjQyLCAxNTMsIDEzLCAxNzAsIAorICAgIDYsIDcyLCAxMywgMTcwLCA2LCAyMzgsIDUsIDEzLCAxNzAsIDYsIDIzNiwgMTU2LCAxMywgMTcwLCA2LCAyMjcsIDI1MSwgCisgICAgMTMsIDE3MCwgNiwgMjI3LCAxMTgsIDEzLCAxNzAsIDYsIDE1NiwgMTMsIDE3MCwgNiwgMjIzLCAyNDMsIDEzLCAxNzAsIDYsIAorICAgIDIyMCwgMjE0LCAxMywgMTcwLCA2LCA3NCwgMTMsIDE3MCwgNiwgMjE2LCAyMjYsIDEzLCAxNzAsIDYsIDIxNCwgMTY3LCAxMywgCisgICAgMTcwLCA2LCAyMTIsIDEyMiwgMTMsIDE3MCwgNiwgMjA3LCA4MywgMTMsIDE3MCwgNiwgNjYsIDEzLCAxNzAsIDYsIDIwMywgCisgICAgMTY4LCAxMywgMTcwLCA2LCAyMDEsIDE0NywgMTMsIDE3MCwgNiwgMjAwLCAxOTUsIDEzLCAxNzAsIDYsIDIwMCwgMTIzLCAKKyAgICAxMywgMTcwLCA0LCA2MiwgMTMsIDE3MCwgNCwgMjUwLCAxMDMsIDEzLCAxNzAsIDQsIDI0NywgMjIzLCAxMywgMTcwLCA0LCAKKyAgICAyNDIsIDE1MywgMTMsIDE3MCwgNCwgNzIsIDEzLCAxNzAsIDQsIDIzOCwgNSwgMTMsIDE3MCwgNCwgMjM2LCAxNTYsIDEzLCAKKyAgICAxNzAsIDQsIDIzNCwgMjQ3LCAxMywgMTcwLCA0LCA3MCwgMTMsIDE3MCwgNCwgMjI3LCAyNTEsIDEzLCAxNzAsIDQsIDIyNywgCisgICAgMTE4LCAxMywgMTcwLCA0LCAxNTYsIDEzLCAxNzAsIDQsIDIyMywgMjQzLCAxMywgMTcwLCA0LCAyMjAsIDIxNCwgMTMsIAorICAgIDE3MCwgNCwgNzQsIDEzLCAxNzAsIDQsIDIxNiwgMjI2LCAxMywgMTcwLCA0LCAyMTQsIDE2NywgMTMsIDE3MCwgNCwgMTQ2LCAKKyAgICAxMywgMTcwLCA0LCAyMTIsIDEyMiwgMTMsIDE3MCwgNCwgMjA3LCA4MywgMTMsIDE3MCwgNCwgNjYsIDEzLCAxNzAsIDQsIAorICAgIDIwMywgMTY4LCAxMywgMTcwLCA0LCAyMDEsIDE0NywgMTMsIDE3MCwgNCwgMjAwLCAxOTUsIDEzLCAxNzAsIDQsIDIwMCwgCisgICAgMTIzLCAxMywgMTcwLCA0LCAxOTksIDE1NywgMTMsIDE3NSwgNiwgNjIsIDEzLCAxNzUsIDYsIDI1MCwgMTAzLCAxMywgMTc1LCAKKyAgICA2LCAyNDIsIDE1MywgMTMsIDE3NSwgNiwgNzIsIDEzLCAxNzUsIDYsIDIzOCwgNSwgMTMsIDE3NSwgNiwgMjM2LCAxNTYsIAorICAgIDEzLCAxNzUsIDYsIDcwLCAxMywgMTc1LCA2LCAyMjcsIDI1MSwgMTMsIDE3NSwgNiwgMjI3LCAxMTgsIDEzLCAxNzUsIDYsIAorICAgIDE1NiwgMTMsIDE3NSwgNiwgMjIzLCAyNDMsIDEzLCAxNzUsIDYsIDc0LCAxMywgMTc1LCA2LCAyMTIsIDEyMiwgMTMsIDE3NSwgCisgICAgNiwgMjA3LCA4MywgMTMsIDE3NSwgNiwgNjYsIDEzLCAxNzUsIDYsIDIwMywgMTY4LCAxMywgMTc1LCA2LCAyMDEsIDE0NywgCisgICAgMTMsIDE3NSwgNiwgMjAwLCAxOTUsIDEzLCAxNzUsIDYsIDIwMCwgMTIzLCAxMywgMTc1LCA0LCA2MiwgMTMsIDE3NSwgNCwgCisgICAgMjUwLCAxMDMsIDEzLCAxNzUsIDQsIDI0NywgMjIzLCAxMywgMTc1LCA0LCAyNDIsIDE1MywgMTMsIDE3NSwgNCwgNzIsIDEzLCAKKyAgICAxNzUsIDQsIDIzOCwgNSwgMTMsIDE3NSwgNCwgMjM2LCAxNTYsIDEzLCAxNzUsIDQsIDIzNCwgMjQ3LCAxMywgMTc1LCA0LCAKKyAgICA3MCwgMTMsIDE3NSwgNCwgMjI3LCAyNTEsIDEzLCAxNzUsIDQsIDIyNywgMTE4LCAxMywgMTc1LCA0LCAxNTYsIDEzLCAxNzUsIAorICAgIDQsIDIyMywgMjQzLCAxMywgMTc1LCA0LCAyMjAsIDIxNCwgMTMsIDE3NSwgNCwgNzQsIDEzLCAxNzUsIDQsIDIxNiwgMjI2LCAKKyAgICAxMywgMTc1LCA0LCAyMTQsIDE2NywgMTMsIDE3NSwgNCwgMTQ2LCAxMywgMTc1LCA0LCAyMTIsIDEyMiwgMTMsIDE3NSwgNCwgCisgICAgMjA3LCA4MywgMTMsIDE3NSwgNCwgNjYsIDEzLCAxNzUsIDQsIDIwMywgMTY4LCAxMywgMTc1LCA0LCAyMDEsIDE0NywgMTMsIAorICAgIDE3NSwgNCwgMjAwLCAxOTUsIDEzLCAxNzUsIDQsIDIwMCwgMTIzLCAxMywgMTc1LCA0LCAxOTksIDE1NywgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDYyLCAxMywgMjcsIDE3MCwgNiwgMjUwLCAxMDMsIDEzLCAyNywgMTcwLCA2LCAyNDcsIDIyMywgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDI0MiwgMTUzLCAxMywgMjcsIDE3MCwgNiwgNzIsIDEzLCAyNywgMTcwLCA2LCAyMzgsIDUsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAxNzAsIDYsIDIzNCwgMjQ3LCAxMywgMjcsIDE3MCwgNiwgNzAsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAxNzAsIDYsIDIyNywgMTE4LCAxMywgMjcsIDE3MCwgNiwgMTU2LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjIzLCAyNDMsIDEzLCAyNywgMTcwLCA2LCAyMjAsIDIxNCwgMTMsIDI3LCAxNzAsIDYsIDc0LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjE2LCAyMjYsIDEzLCAyNywgMTcwLCA2LCAyMTQsIDE2NywgMTMsIDI3LCAxNzAsIDYsIDE0NiwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIxMiwgMTIyLCAxMywgMjcsIDE3MCwgNiwgMjA3LCA4MywgMTMsIDI3LCAxNzAsIDYsIDY2LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjAzLCAxNjgsIDEzLCAyNywgMTcwLCA2LCAyMDEsIDE0NywgMTMsIDI3LCAxNzAsIDYsIDIwMCwgMTk1LCAxMywgCisgICAgMjcsIDE3MCwgNiwgMjAwLCAxMjMsIDEzLCAyNywgMTcwLCA2LCAxOTksIDE1NywgMTMsIDI3LCAxNzAsIDQsIDYyLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjUwLCAxMDMsIDEzLCAyNywgMTcwLCA0LCAyNDcsIDIyMywgMTMsIDI3LCAxNzAsIDQsIDI0MiwgMTUzLCAKKyAgICAxMywgMjcsIDE3MCwgNCwgNzIsIDEzLCAyNywgMTcwLCA0LCAyMzgsIDUsIDEzLCAyNywgMTcwLCA0LCAyMzYsIDE1NiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIzNCwgMjQ3LCAxMywgMjcsIDE3MCwgNCwgNzAsIDEzLCAyNywgMTcwLCA0LCAyMjcsIDI1MSwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIyNywgMTE4LCAxMywgMjcsIDE3MCwgNCwgMTU2LCAxMywgMjcsIDE3MCwgNCwgMjIzLCAyNDMsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMjAsIDIxNCwgMTMsIDI3LCAxNzAsIDQsIDc0LCAxMywgMjcsIDE3MCwgNCwgMjE2LCAyMjYsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMTQsIDE2NywgMTMsIDI3LCAxNzAsIDQsIDE0NiwgMTMsIDI3LCAxNzAsIDQsIDIxMiwgMTIyLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjA3LCA4MywgMTMsIDI3LCAxNzAsIDQsIDY2LCAxMywgMjcsIDE3MCwgNCwgMjAzLCAxNjgsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMDEsIDE0NywgMTMsIDI3LCAxNzAsIDQsIDIwMCwgMTk1LCAxMywgMjcsIDE3MCwgNCwgMjAwLCAxMjMsIAorICAgIDEzLCAyNywgMTcwLCA0LCAxOTksIDE1NywgMTMsIDQzLCA2LCA2MiwgMTMsIDQzLCA2LCAyNTAsIDEwMywgMTMsIDQzLCA2LCAKKyAgICAyNDcsIDIyMywgMTMsIDQzLCA2LCAyNDIsIDE1MywgMTMsIDQzLCA2LCA3MiwgMTMsIDQzLCA2LCAyMzgsIDUsIDEzLCA0MywgCisgICAgNiwgMjM2LCAxNTYsIDEzLCA0MywgNiwgMjM0LCAyNDcsIDEzLCA0MywgNiwgNzAsIDEzLCA0MywgNiwgMjI3LCAyNTEsIDEzLCAKKyAgICA0MywgNiwgMjI3LCAxMTgsIDEzLCA0MywgNiwgMTU2LCAxMywgNDMsIDYsIDIyMywgMjQzLCAxMywgNDMsIDYsIDIyMCwgCisgICAgMjE0LCAxMywgNDMsIDYsIDc0LCAxMywgNDMsIDYsIDIxNiwgMjI2LCAxMywgNDMsIDYsIDIxNCwgMTY3LCAxMywgNDMsIDYsIAorICAgIDE0NiwgMTMsIDQzLCA2LCAyMTIsIDEyMiwgMTMsIDQzLCA2LCAyMDcsIDgzLCAxMywgNDMsIDYsIDY2LCAxMywgNDMsIDYsIAorICAgIDIwMywgMTY4LCAxMywgNDMsIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDYsIDIwMCwgMTk1LCAxMywgNDMsIDYsIDIwMCwgMTIzLCAKKyAgICAxMywgNDMsIDYsIDE5OSwgMTU3LCAxMywgNDMsIDQsIDYyLCAxMywgNDMsIDQsIDI1MCwgMTAzLCAxMywgNDMsIDQsIDI0NywgCisgICAgMjIzLCAxMywgNDMsIDQsIDI0MiwgMTUzLCAxMywgNDMsIDQsIDcyLCAxMywgNDMsIDQsIDIzOCwgNSwgMTMsIDQzLCA0LCAKKyAgICAyMzYsIDE1NiwgMTMsIDQzLCA0LCAyMzQsIDI0NywgMTMsIDQzLCA0LCA3MCwgMTMsIDQzLCA0LCAyMjcsIDI1MSwgMTMsIAorICAgIDQzLCA0LCAyMjcsIDExOCwgMTMsIDQzLCA0LCAxNTYsIDEzLCA0MywgNCwgMjIzLCAyNDMsIDEzLCA0MywgNCwgMjIwLCAKKyAgICAyMTQsIDEzLCA0MywgNCwgNzQsIDEzLCA0MywgNCwgMjE2LCAyMjYsIDEzLCA0MywgNCwgMjE0LCAxNjcsIDEzLCA0MywgNCwgCisgICAgMTQ2LCAxMywgNDMsIDQsIDIxMiwgMTIyLCAxMywgNDMsIDQsIDIwNywgODMsIDEzLCA0MywgNCwgNjYsIDEzLCA0MywgNCwgCisgICAgMjAzLCAxNjgsIDEzLCA0MywgNCwgMjAxLCAxNDcsIDEzLCA0MywgNCwgMjAwLCAxOTUsIDEzLCA0MywgNCwgMjAwLCAxMjMsIAorICAgIDEzLCA0MywgNCwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDYsIDYyLCAxMywgNDMsIDI3LCA2LCAyNTAsIDEwMywgMTMsIDQzLCAKKyAgICAyNywgNiwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDYsIDI0MiwgMTUzLCAxMywgNDMsIDI3LCA2LCA3MiwgMTMsIDQzLCAyNywgCisgICAgNiwgMjM4LCA1LCAxMywgNDMsIDI3LCA2LCAyMzYsIDE1NiwgMTMsIDQzLCAyNywgNiwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIAorICAgIDYsIDcwLCAxMywgNDMsIDI3LCA2LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgNiwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIDYsIAorICAgIDE1NiwgMTMsIDQzLCAyNywgNiwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDYsIDIyMCwgMjE0LCAxMywgNDMsIDI3LCA2LCA3NCwgCisgICAgMTMsIDQzLCAyNywgNiwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDYsIDIxNCwgMTY3LCAxMywgNDMsIDI3LCA2LCAxNDYsIDEzLCAKKyAgICA0MywgMjcsIDYsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCA2LCAyMDcsIDgzLCAxMywgNDMsIDI3LCA2LCA2NiwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDI3LCA2LCAyMDAsIDE5NSwgMTMsIAorICAgIDQzLCAyNywgNiwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDYsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCA0LCA2MiwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjUwLCAxMDMsIDEzLCA0MywgMjcsIDQsIDI0NywgMjIzLCAxMywgNDMsIDI3LCA0LCAyNDIsIDE1MywgMTMsIAorICAgIDQzLCAyNywgNCwgNzIsIDEzLCA0MywgMjcsIDQsIDIzOCwgNSwgMTMsIDQzLCAyNywgNCwgMjM2LCAxNTYsIDEzLCA0MywgCisgICAgMjcsIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDI3LCA0LCA3MCwgMTMsIDQzLCAyNywgNCwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIAorICAgIDQsIDIyNywgMTE4LCAxMywgNDMsIDI3LCA0LCAxNTYsIDEzLCA0MywgMjcsIDQsIDIyMywgMjQzLCAxMywgNDMsIDI3LCA0LCAKKyAgICAyMjAsIDIxNCwgMTMsIDQzLCAyNywgNCwgNzQsIDEzLCA0MywgMjcsIDQsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCA0LCAyMTQsIAorICAgIDE2NywgMTMsIDQzLCAyNywgNCwgMTQ2LCAxMywgNDMsIDI3LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgNCwgMjA3LCA4MywgCisgICAgMTMsIDQzLCAyNywgNCwgNjYsIDEzLCA0MywgMjcsIDQsIDIwMywgMTY4LCAxMywgNDMsIDI3LCA0LCAyMDEsIDE0NywgMTMsIAorICAgIDQzLCAyNywgNCwgMjAwLCAxOTUsIDEzLCA0MywgMjcsIDQsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCA0LCAxOTksIDE1NywgCisgICAgMTMsIDQzLCAzOSwgNiwgNjIsIDEzLCA0MywgMzksIDYsIDI1MCwgMTAzLCAxMywgNDMsIDM5LCA2LCAyNDcsIDIyMywgMTMsIAorICAgIDQzLCAzOSwgNiwgMjQyLCAxNTMsIDEzLCA0MywgMzksIDYsIDcyLCAxMywgNDMsIDM5LCA2LCAyMzgsIDUsIDEzLCA0MywgCisgICAgMzksIDYsIDIzNiwgMTU2LCAxMywgNDMsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAzOSwgNiwgNzAsIDEzLCA0MywgMzksIAorICAgIDYsIDIyNywgMjUxLCAxMywgNDMsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAzOSwgNiwgMTU2LCAxMywgNDMsIDM5LCA2LCAKKyAgICAyMjMsIDI0MywgMTMsIDQzLCAzOSwgNiwgMjIwLCAyMTQsIDEzLCA0MywgMzksIDYsIDc0LCAxMywgNDMsIDM5LCA2LCAyMTYsIAorICAgIDIyNiwgMTMsIDQzLCAzOSwgNiwgMjE0LCAxNjcsIDEzLCA0MywgMzksIDYsIDE0NiwgMTMsIDQzLCAzOSwgNiwgMjEyLCAKKyAgICAxMjIsIDEzLCA0MywgMzksIDYsIDIwNywgODMsIDEzLCA0MywgMzksIDYsIDY2LCAxMywgNDMsIDM5LCA2LCAyMDMsIDE2OCwgCisgICAgMTMsIDQzLCAzOSwgNiwgMjAxLCAxNDcsIDEzLCA0MywgMzksIDYsIDIwMCwgMTk1LCAxMywgNDMsIDM5LCA2LCAyMDAsIAorICAgIDEyMywgMTMsIDQzLCAzOSwgNiwgMTk5LCAxNTcsIDEzLCA0MywgMzksIDQsIDYyLCAxMywgNDMsIDM5LCA0LCAyNTAsIDEwMywgCisgICAgMTMsIDQzLCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMzksIDQsIDI0MiwgMTUzLCAxMywgNDMsIDM5LCA0LCA3MiwgMTMsIAorICAgIDQzLCAzOSwgNCwgMjM4LCA1LCAxMywgNDMsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDQzLCAzOSwgNCwgMjM0LCAyNDcsIDEzLCAKKyAgICA0MywgMzksIDQsIDcwLCAxMywgNDMsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDQzLCAzOSwgNCwgMjI3LCAxMTgsIDEzLCA0MywgCisgICAgMzksIDQsIDE1NiwgMTMsIDQzLCAzOSwgNCwgMjIzLCAyNDMsIDEzLCA0MywgMzksIDQsIDIyMCwgMjE0LCAxMywgNDMsIDM5LCAKKyAgICA0LCA3NCwgMTMsIDQzLCAzOSwgNCwgMjE2LCAyMjYsIDEzLCA0MywgMzksIDQsIDIxNCwgMTY3LCAxMywgNDMsIDM5LCA0LCAKKyAgICAxNDYsIDEzLCA0MywgMzksIDQsIDIxMiwgMTIyLCAxMywgNDMsIDM5LCA0LCAyMDcsIDgzLCAxMywgNDMsIDM5LCA0LCA2NiwgCisgICAgMTMsIDQzLCAzOSwgNCwgMjAzLCAxNjgsIDEzLCA0MywgMzksIDQsIDIwMSwgMTQ3LCAxMywgNDMsIDM5LCA0LCAyMDAsIAorICAgIDE5NSwgMTMsIDQzLCAzOSwgNCwgMjAwLCAxMjMsIDEzLCA0MywgMzksIDQsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgNjIsIDEzLCA0MywgMjcsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDQzLCAyNywgMzksIDYsIDI0NywgMjIzLCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMjQyLCAxNTMsIDEzLCA0MywgMjcsIDM5LCA2LCA3MiwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgNSwgMTMsIAorICAgIDQzLCAyNywgMzksIDYsIDIzNiwgMTU2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICA3MCwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgMjUxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAxNTYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgMzksIDYsIDIyMCwgMjE0LCAxMywgCisgICAgNDMsIDI3LCAzOSwgNiwgNzQsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgMzksIDYsIDIxNCwgCisgICAgMTY3LCAxMywgNDMsIDI3LCAzOSwgNiwgMTQ2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA2LCAyMDcsIDgzLCAxMywgNDMsIDI3LCAzOSwgNiwgNjYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDMsIDE2OCwgMTMsIDQzLCAKKyAgICAyNywgMzksIDYsIDIwMSwgMTQ3LCAxMywgNDMsIDI3LCAzOSwgNiwgMjAwLCAxOTUsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDAsIAorICAgIDEyMywgMTMsIDQzLCAyNywgMzksIDYsIDE5OSwgMTU3LCAxMywgNDMsIDI3LCAzOSwgNCwgNjIsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyNTAsIDEwMywgMTMsIDQzLCAyNywgMzksIDQsIDI0NywgMjIzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQyLCAxNTMsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCA3MiwgMTMsIDQzLCAyNywgMzksIDQsIDIzOCwgNSwgMTMsIDQzLCAyNywgMzksIDQsIDIzNiwgCisgICAgMTU2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIDM5LCA0LCA3MCwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDIyNywgMjUxLCAxMywgNDMsIDI3LCAzOSwgNCwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIDM5LCA0LCAxNTYsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgMzksIDQsIDIyMCwgMjE0LCAxMywgNDMsIDI3LCAzOSwgNCwgNzQsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgMzksIDQsIDIxNCwgMTY3LCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMTQ2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDcsIDgzLCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgNjYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgMzksIDQsIDIwMSwgMTQ3LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjAwLCAxOTUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDE5OSwgMTU3LCAxMywgMjIxLCA5MywgNiwgNjIsIDEzLCAyMjEsIDkzLCA2LCAyNTAsIDEwMywgMTMsIDIyMSwgOTMsIAorICAgIDYsIDI0NywgMjIzLCAxMywgMjIxLCA5MywgNiwgMjQyLCAxNTMsIDEzLCAyMjEsIDkzLCA2LCA3MiwgMTMsIDIyMSwgOTMsIAorICAgIDYsIDIzOCwgNSwgMTMsIDIyMSwgOTMsIDYsIDIzNiwgMTU2LCAxMywgMjIxLCA5MywgNiwgMjM0LCAyNDcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA3MCwgMTMsIDIyMSwgOTMsIDYsIDIyNywgMjUxLCAxMywgMjIxLCA5MywgNiwgMjI3LCAxMTgsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAxNTYsIDEzLCAyMjEsIDkzLCA2LCAyMjMsIDI0MywgMTMsIDIyMSwgOTMsIDYsIDIyMCwgMjE0LCAxMywgMjIxLCAKKyAgICA5MywgNiwgNzQsIDEzLCAyMjEsIDkzLCA2LCAyMTYsIDIyNiwgMTMsIDIyMSwgOTMsIDYsIDIxNCwgMTY3LCAxMywgMjIxLCAKKyAgICA5MywgNiwgMTQ2LCAxMywgMjIxLCA5MywgNiwgMjEyLCAxMjIsIDEzLCAyMjEsIDkzLCA2LCAyMDcsIDgzLCAxMywgMjIxLCAKKyAgICA5MywgNiwgNjYsIDEzLCAyMjEsIDkzLCA2LCAyMDMsIDE2OCwgMTMsIDIyMSwgOTMsIDYsIDIwMSwgMTQ3LCAxMywgMjIxLCAKKyAgICA5MywgNiwgMjAwLCAxOTUsIDEzLCAyMjEsIDkzLCA2LCAyMDAsIDEyMywgMTMsIDIyMSwgOTMsIDYsIDE5OSwgMTU3LCAxMywgCisgICAgMjIxLCA5MywgNCwgNjIsIDEzLCAyMjEsIDkzLCA0LCAyNTAsIDEwMywgMTMsIDIyMSwgOTMsIDQsIDI0NywgMjIzLCAxMywgCisgICAgMjIxLCA5MywgNCwgMjQyLCAxNTMsIDEzLCAyMjEsIDkzLCA0LCA3MiwgMTMsIDIyMSwgOTMsIDQsIDIzOCwgNSwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIzNiwgMTU2LCAxMywgMjIxLCA5MywgNCwgMjM0LCAyNDcsIDEzLCAyMjEsIDkzLCA0LCA3MCwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIyNywgMjUxLCAxMywgMjIxLCA5MywgNCwgMjI3LCAxMTgsIDEzLCAyMjEsIDkzLCA0LCAxNTYsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMjMsIDI0MywgMTMsIDIyMSwgOTMsIDQsIDIyMCwgMjE0LCAxMywgMjIxLCA5MywgNCwgNzQsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMTYsIDIyNiwgMTMsIDIyMSwgOTMsIDQsIDIxNCwgMTY3LCAxMywgMjIxLCA5MywgNCwgMTQ2LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjEyLCAxMjIsIDEzLCAyMjEsIDkzLCA0LCAyMDcsIDgzLCAxMywgMjIxLCA5MywgNCwgNjYsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMDMsIDE2OCwgMTMsIDIyMSwgOTMsIDQsIDIwMSwgMTQ3LCAxMywgMjIxLCA5MywgNCwgMjAwLCAxOTUsIAorICAgIDEzLCAyMjEsIDkzLCA0LCAyMDAsIDEyMywgMTMsIDIyMSwgOTMsIDQsIDE5OSwgMTU3LCAxMywgMzksIDQsIDI0MCwgMTgxLCAKKyAgICA3MCwgMTMsIDM5LCA0LCAyNDAsIDE4MSwgMjI3LCAyNTEsIDEzLCAyNywgNiwgMjUxLCAxMTIsIDEzLCAyNywgNiwgMjQ4LCAKKyAgICAyMDgsIDEzLCAyNywgNiwgMjM2LCA2MCwgMTMsIDI3LCA2LCAyNDEsIDEzNiwgMTMsIDI3LCA2LCAyMzgsIDEyNCwgMTMsIAorICAgIDI3LCA2LCAxOTksIDgwLCAxMywgMjcsIDYsIDIzOCwgNzksIDEzLCAyNywgNiwgMjA2LCA4OCwgMTMsIDI3LCA2LCAyMjgsIAorICAgIDQxLCAxMywgMjcsIDYsIDIyNywgNTQsIDEzLCAyNywgNiwgMjI1LCA4NywgMTMsIDI3LCA2LCAyMjEsIDQxLCAxMywgMjcsIAorICAgIDYsIDIxOCwgMTMzLCAxMywgMjcsIDYsIDIwMCwgMTY5LCAxMywgMjcsIDYsIDIxNywgODEsIDEzLCAyNywgNiwgMjE1LCAKKyAgICAyMDQsIDEzLCAyNywgNiwgMjEzLCA5MCwgMTMsIDI3LCA2LCAyMDYsIDg5LCA5OSwgMTMsIDI3LCA2LCAyMDksIDE2MywgMTMsIAorICAgIDI3LCA2LCAyMDYsIDIyMSwgMTMsIDI3LCA2LCAyMDMsIDIyMCwgMTMsIDI3LCA2LCAyMTUsIDIyOSwgMTMsIDI3LCA2LCAKKyAgICAyNDYsIDIzNiwgMTMsIDI3LCA2LCAyMTQsIDIzNSwgMTMsIDI3LCA2LCAyMTcsIDgzLCAxMywgMjcsIDIyMCwgMTUyLCAxMywgCisgICAgMjcsIDQsIDI1MSwgMTEyLCAxMywgMjcsIDQsIDI0OCwgMjA4LCAxMywgMjcsIDQsIDIzNiwgNjAsIDEzLCAyNywgNCwgMjQxLCAKKyAgICAxMzYsIDEzLCAyNywgNCwgMjM4LCAxMjQsIDEzLCAyNywgNCwgMTk5LCA4MCwgMTMsIDI3LCA0LCAyMzgsIDc5LCAxMywgMjcsIAorICAgIDQsIDIwNiwgODgsIDEzLCAyNywgNCwgMjI4LCA0MSwgMTMsIDI3LCA0LCAyMjcsIDU0LCAxMywgMjcsIDQsIDIyNSwgODcsIAorICAgIDEzLCAyNywgNCwgMjIxLCA0MSwgMTMsIDI3LCA0LCAyMTgsIDEzMywgMTMsIDI3LCA0LCAyMDAsIDE2OSwgMTMsIDI3LCA0LCAKKyAgICAyMTcsIDgxLCAxMywgMjcsIDQsIDIxNSwgMjA0LCAxMywgMjcsIDQsIDIxMywgOTAsIDEzLCAyNywgNCwgNDcsIDIwOSwgCisgICAgMTYzLCAxMywgMjcsIDQsIDIwOSwgMTYzLCAxMywgMjcsIDQsIDIwNiwgMjIxLCAxMywgMjcsIDQsIDIwMywgMjIwLCAxMywgCisgICAgMjcsIDQsIDIxNSwgMjI5LCAxMywgMjcsIDQsIDI0NiwgMjM2LCAxMywgMjcsIDQsIDIxNCwgMjM1LCAxMywgMjcsIDQsIAorICAgIDIxNywgODMsIDEzLCAyNywgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCAyNywgMjM4LCAxMjUsIDk5LCAxMywgMjcsIDIwNiwgCisgICAgODksIDk5LCAxMywgMjcsIDIyNywgNTUsIDk5LCAxMywgMjcsIDIxNSwgMjMwLCA5OSwgMTMsIDI3LCAyMTMsIDkxLCA5OSwgCisgICAgMTMsIDI3LCAyMTUsIDIwNSwgOTksIDEzLCAzOSwgNiwgMjUxLCAxMTIsIDEzLCAzOSwgNiwgMjQ4LCAyMDgsIDEzLCAzOSwgCisgICAgNiwgMjM2LCA2MCwgMTMsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDM5LCA2LCAyMzgsIDEyNCwgMTMsIDM5LCA2LCAxOTksIDgwLCAKKyAgICAxMywgMzksIDYsIDIzOCwgNzksIDEzLCAzOSwgNiwgMjA2LCA4OCwgMTMsIDM5LCA2LCAyMjgsIDQxLCAxMywgMzksIDYsIAorICAgIDIyNywgNTQsIDEzLCAzOSwgNiwgMjI1LCA4NywgMTMsIDM5LCA2LCAyMjEsIDQxLCAxMywgMzksIDYsIDIxOCwgMTMzLCAxMywgCisgICAgMzksIDYsIDIwMCwgMTY5LCAxMywgMzksIDYsIDIxNywgODEsIDEzLCAzOSwgNiwgMjE1LCAyMDQsIDEzLCAzOSwgNiwgMjEzLCAKKyAgICA5MCwgMTMsIDM5LCA2LCAyMDYsIDg5LCA5OSwgMTMsIDM5LCA2LCAyMDksIDE2MywgMTMsIDM5LCA2LCAyMDYsIDIyMSwgMTMsIAorICAgIDM5LCA2LCAyMDMsIDIyMCwgMTMsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDM5LCA2LCAyNDYsIDIzNiwgMTMsIDM5LCA2LCAKKyAgICAyMTQsIDIzNSwgMTMsIDM5LCA2LCAyMTcsIDgzLCAxMywgMzksIDIyMCwgMTUyLCAxMywgMzksIDQsIDI1MSwgMTEyLCAxMywgCisgICAgMzksIDQsIDI0OCwgMjA4LCAxMywgMzksIDQsIDIzNiwgNjAsIDEzLCAzOSwgNCwgMjQxLCAxMzYsIDEzLCAzOSwgNCwgMjM4LCAKKyAgICAxMjQsIDEzLCAzOSwgNCwgMTk5LCA4MCwgMTMsIDM5LCA0LCAyMzgsIDc5LCAxMywgMzksIDQsIDIwNiwgODgsIDEzLCAzOSwgCisgICAgNCwgMjI4LCA0MSwgMTMsIDM5LCA0LCAyMjcsIDU0LCAxMywgMzksIDQsIDIyNSwgODcsIDEzLCAzOSwgNCwgMjIxLCA0MSwgCisgICAgMTMsIDM5LCA0LCAyMTgsIDEzMywgMTMsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDM5LCA0LCAyMTcsIDgxLCAxMywgMzksIDQsIAorICAgIDIxNSwgMjA0LCAxMywgMzksIDQsIDIxMywgOTAsIDEzLCAzOSwgNCwgNDcsIDIwOSwgMTYzLCAxMywgMzksIDQsIDIwOSwgCisgICAgMTYzLCAxMywgMzksIDQsIDIwNiwgMjIxLCAxMywgMzksIDQsIDIwMywgMjIwLCAxMywgMzksIDQsIDIxNSwgMjI5LCAxMywgCisgICAgMzksIDQsIDI0NiwgMjM2LCAxMywgMzksIDQsIDIxNCwgMjM1LCAxMywgMzksIDQsIDIxNywgODMsIDEzLCAzOSwgMjE2LCAKKyAgICAxMDgsIDI0MSwgNDgsIDEzLCAzOSwgMjM4LCAxMjUsIDk5LCAxMywgMzksIDIwNiwgODksIDk5LCAxMywgMzksIDIyNywgNTUsIAorICAgIDk5LCAxMywgMzksIDIxNSwgMjMwLCA5OSwgMTMsIDM5LCAyMTMsIDkxLCA5OSwgMTMsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCAKKyAgICAyNywgMzksIDYsIDI1MSwgMTEyLCAxMywgMjcsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDI3LCAzOSwgNiwgMjM2LCA2MCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjQxLCAxMzYsIDEzLCAyNywgMzksIDYsIDIzOCwgMTI0LCAxMywgMjcsIDM5LCA2LCAxOTksIDgwLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMzgsIDc5LCAxMywgMjcsIDM5LCA2LCAyMDYsIDg4LCAxMywgMjcsIDM5LCA2LCAyMjgsIDQxLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMjcsIDU0LCAxMywgMjcsIDM5LCA2LCAyMjUsIDg3LCAxMywgMjcsIDM5LCA2LCAyMjEsIDQxLCAxMywgCisgICAgMjcsIDM5LCA2LCAyMTgsIDEzMywgMTMsIDI3LCAzOSwgNiwgMjAwLCAxNjksIDEzLCAyNywgMzksIDYsIDIxNywgODEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIxNSwgMjA0LCAxMywgMjcsIDM5LCA2LCAyMTMsIDkwLCAxMywgMjcsIDM5LCA2LCAyMDYsIDg5LCA5OSwgCisgICAgMTMsIDI3LCAzOSwgNiwgMjA5LCAxNjMsIDEzLCAyNywgMzksIDYsIDIwNiwgMjIxLCAxMywgMjcsIDM5LCA2LCAyMDMsIAorICAgIDIyMCwgMTMsIDI3LCAzOSwgNiwgMjE1LCAyMjksIDEzLCAyNywgMzksIDYsIDI0NiwgMjM2LCAxMywgMjcsIDM5LCA2LCAKKyAgICAyMTQsIDIzNSwgMTMsIDI3LCAzOSwgNiwgMjE3LCA4MywgMTMsIDI3LCAzOSwgMjIwLCAxNTIsIDEzLCAyNywgMzksIDQsIAorICAgIDI1MSwgMTEyLCAxMywgMjcsIDM5LCA0LCAyNDgsIDIwOCwgMTMsIDI3LCAzOSwgNCwgMjM2LCA2MCwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjQxLCAxMzYsIDEzLCAyNywgMzksIDQsIDIzOCwgMTI0LCAxMywgMjcsIDM5LCA0LCAxOTksIDgwLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMzgsIDc5LCAxMywgMjcsIDM5LCA0LCAyMDYsIDg4LCAxMywgMjcsIDM5LCA0LCAyMjgsIDQxLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMjcsIDU0LCAxMywgMjcsIDM5LCA0LCAyMjUsIDg3LCAxMywgMjcsIDM5LCA0LCAyMjEsIDQxLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyMTgsIDEzMywgMTMsIDI3LCAzOSwgNCwgMjAwLCAxNjksIDEzLCAyNywgMzksIDQsIDIxNywgODEsIDEzLCAyNywgMzksIDQsIAorICAgIDIxNSwgMjA0LCAxMywgMjcsIDM5LCA0LCAyMTMsIDkwLCAxMywgMjcsIDM5LCA0LCA0NywgMjA5LCAxNjMsIDEzLCAyNywgCisgICAgMzksIDQsIDIwOSwgMTYzLCAxMywgMjcsIDM5LCA0LCAyMDYsIDIyMSwgMTMsIDI3LCAzOSwgNCwgMjAzLCAyMjAsIDEzLCAKKyAgICAyNywgMzksIDQsIDIxNSwgMjI5LCAxMywgMjcsIDM5LCA0LCAyNDYsIDIzNiwgMTMsIDI3LCAzOSwgNCwgMjE0LCAyMzUsIAorICAgIDEzLCAyNywgMzksIDQsIDIxNywgODMsIDEzLCAyNywgMzksIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgMjcsIDM5LCAyMzgsIAorICAgIDEyNSwgOTksIDEzLCAyNywgMzksIDIwNiwgODksIDk5LCAxMywgMjcsIDM5LCAyMjcsIDU1LCA5OSwgMTMsIDI3LCAzOSwgCisgICAgMjE1LCAyMzAsIDk5LCAxMywgMjcsIDM5LCAyMTMsIDkxLCA5OSwgMTMsIDI3LCAzOSwgMjE1LCAyMDUsIDk5LCAxMywgNDMsIAorICAgIDI3LCA2LCAyNTEsIDExMiwgMTMsIDQzLCAyNywgNiwgMjQ4LCAyMDgsIDEzLCA0MywgMjcsIDYsIDIzNiwgNjAsIDEzLCA0MywgCisgICAgMjcsIDYsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCA2LCAyMzgsIDEyNCwgMTMsIDQzLCAyNywgNiwgMTk5LCA4MCwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjM4LCA3OSwgMTMsIDQzLCAyNywgNiwgMjA2LCA4OCwgMTMsIDQzLCAyNywgNiwgMjI4LCA0MSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjI3LCA1NCwgMTMsIDQzLCAyNywgNiwgMjI1LCA4NywgMTMsIDQzLCAyNywgNiwgMjIxLCA0MSwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIDYsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCA2LCAyMTcsIDgxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMTUsIDIwNCwgMTMsIDQzLCAyNywgNiwgMjEzLCA5MCwgMTMsIDQzLCAyNywgNiwgMjA2LCA4OSwgOTksIDEzLCAKKyAgICA0MywgMjcsIDYsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCA2LCAyMDYsIDIyMSwgMTMsIDQzLCAyNywgNiwgMjAzLCAyMjAsIAorICAgIDEzLCA0MywgMjcsIDYsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCA2LCAyNDYsIDIzNiwgMTMsIDQzLCAyNywgNiwgMjE0LCAKKyAgICAyMzUsIDEzLCA0MywgMjcsIDYsIDIxNywgODMsIDEzLCA0MywgMjcsIDIyMCwgMTUyLCAxMywgNDMsIDI3LCA0LCAyNTEsIAorICAgIDExMiwgMTMsIDQzLCAyNywgNCwgMjQ4LCAyMDgsIDEzLCA0MywgMjcsIDQsIDIzNiwgNjAsIDEzLCA0MywgMjcsIDQsIDI0MSwgCisgICAgMTM2LCAxMywgNDMsIDI3LCA0LCAyMzgsIDEyNCwgMTMsIDQzLCAyNywgNCwgMTk5LCA4MCwgMTMsIDQzLCAyNywgNCwgMjM4LCAKKyAgICA3OSwgMTMsIDQzLCAyNywgNCwgMjA2LCA4OCwgMTMsIDQzLCAyNywgNCwgMjI4LCA0MSwgMTMsIDQzLCAyNywgNCwgMjI3LCAKKyAgICA1NCwgMTMsIDQzLCAyNywgNCwgMjI1LCA4NywgMTMsIDQzLCAyNywgNCwgMjIxLCA0MSwgMTMsIDQzLCAyNywgNCwgMjE4LCAKKyAgICAxMzMsIDEzLCA0MywgMjcsIDQsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCA0LCAyMTcsIDgxLCAxMywgNDMsIDI3LCA0LCAyMTUsIAorICAgIDIwNCwgMTMsIDQzLCAyNywgNCwgMjEzLCA5MCwgMTMsIDQzLCAyNywgNCwgNDcsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCA0LCAKKyAgICAyMDksIDE2MywgMTMsIDQzLCAyNywgNCwgMjA2LCAyMjEsIDEzLCA0MywgMjcsIDQsIDIwMywgMjIwLCAxMywgNDMsIDI3LCAKKyAgICA0LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgNCwgMjQ2LCAyMzYsIDEzLCA0MywgMjcsIDQsIDIxNCwgMjM1LCAxMywgNDMsIAorICAgIDI3LCA0LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDQzLCAyNywgMjM4LCAxMjUsIDk5LCAKKyAgICAxMywgNDMsIDI3LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgMjI3LCA1NSwgOTksIDEzLCA0MywgMjcsIDIxNSwgMjMwLCAKKyAgICA5OSwgMTMsIDQzLCAyNywgMjEzLCA5MSwgOTksIDEzLCA0MywgMjcsIDIxNSwgMjA1LCA5OSwgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDI1MSwgMTEyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ4LCAyMDgsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzYsIDYwLCAxMywgCisgICAgNDMsIDI3LCAzOSwgNiwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzgsIDEyNCwgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDE5OSwgODAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzgsIDc5LCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCA4OCwgMTMsIDQzLCAKKyAgICAyNywgMzksIDYsIDIyOCwgNDEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDU0LCAxMywgNDMsIDI3LCAzOSwgNiwgMjI1LCAKKyAgICA4NywgMTMsIDQzLCAyNywgMzksIDYsIDIyMSwgNDEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDIwMCwgMTY5LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE3LCA4MSwgMTMsIDQzLCAyNywgMzksIDYsIDIxNSwgMjA0LCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNiwgMjEzLCA5MCwgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDIyMSwgMTMsIDQzLCAyNywgMzksIDYsIDIwMywgCisgICAgMjIwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDM5LCA2LCAyNDYsIDIzNiwgMTMsIDQzLCAKKyAgICAyNywgMzksIDYsIDIxNCwgMjM1LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE3LCA4MywgMTMsIDQzLCAyNywgMzksIDIyMCwgCisgICAgMTUyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDgsIDIwOCwgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDIzNiwgNjAsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgMzksIDQsIDIzOCwgCisgICAgMTI0LCAxMywgNDMsIDI3LCAzOSwgNCwgMTk5LCA4MCwgMTMsIDQzLCAyNywgMzksIDQsIDIzOCwgNzksIDEzLCA0MywgMjcsIAorICAgIDM5LCA0LCAyMDYsIDg4LCAxMywgNDMsIDI3LCAzOSwgNCwgMjI4LCA0MSwgMTMsIDQzLCAyNywgMzksIDQsIDIyNywgNTQsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMjUsIDg3LCAxMywgNDMsIDI3LCAzOSwgNCwgMjIxLCA0MSwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDM5LCA0LCAyMTcsIDgxLCAxMywgCisgICAgNDMsIDI3LCAzOSwgNCwgMjE1LCAyMDQsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTMsIDkwLCAxMywgNDMsIDI3LCAzOSwgNCwgCisgICAgNDcsIDIwOSwgMTYzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDYsIDIyMSwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIwMywgMjIwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAyNDYsIDIzNiwgMTMsIDQzLCAyNywgMzksIDQsIDIxNCwgMjM1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE3LCA4MywgMTMsIAorICAgIDQzLCAyNywgMzksIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgNDMsIDI3LCAzOSwgMjM4LCAxMjUsIDk5LCAxMywgNDMsIDI3LCAKKyAgICAzOSwgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMjcsIDU1LCA5OSwgMTMsIDQzLCAyNywgMzksIDIxNSwgMjMwLCAKKyAgICA5OSwgMTMsIDQzLCAyNywgMzksIDIxMywgOTEsIDk5LCAxMywgNDMsIDI3LCAzOSwgMjE1LCAyMDUsIDk5LCAxMywgMjcsIDYsIAorICAgIDI0MSwgNDIsIDEzLCAyNywgNCwgMjQxLCA0MiwgMTMsIDI3LCAxNywgMTk5LCA4MSwgMTMsIDI3LCAxNywgMTAyLCAxMywgCisgICAgMjcsIDE3LCAxMDUsIDEzLCAyNywgMTcsIDE0NywgMTMsIDI3LCAxNywgMTQ5LCAxMywgMjcsIDE3LCAxNjQsIDEzLCAyNywgCisgICAgMTcsIDE4NywgMTMsIDI3LCAxNywgMjEwLCAxMzUsIDEzLCAyNywgMTcsIDE5MiwgMTMsIDI3LCAxNywgMjE5LCAxMTMsIDEzLCAKKyAgICAxNzUsIDE3LCAxOTksIDgxLCAxMywgMTc1LCAxNywgMTAyLCAxMywgMTc1LCAxNywgMTA1LCAxMywgMTc1LCAxNywgMTQ3LCAKKyAgICAxMywgMTc1LCAxNywgMTQ5LCAxMywgMTc1LCAxNywgMTY0LCAxMywgMTc1LCAxNywgMTg3LCAxMywgMTc1LCAxNywgMjEwLCAKKyAgICAxMzUsIDEzLCAxNzUsIDE3LCAxOTIsIDEzLCAxNzUsIDE3LCAyMTksIDExMywgMTMsIDQzLCAxNywgMTk5LCA4MSwgMTMsIAorICAgIDQzLCAxNywgMTAyLCAxMywgNDMsIDE3LCAxMDUsIDEzLCA0MywgMTcsIDE0NywgMTMsIDQzLCAxNywgMTQ5LCAxMywgNDMsIAorICAgIDE3LCAxNjQsIDEzLCA0MywgMTcsIDE4NywgMTMsIDQzLCAxNywgMjEwLCAxMzUsIDEzLCA0MywgMTcsIDE5MiwgMTMsIDQzLCAKKyAgICAxNywgMjE5LCAxMTMsIDEzLCA0MywgMjcsIDE3LCAxOTksIDgxLCAxMywgNDMsIDI3LCAxNywgMTAyLCAxMywgNDMsIDI3LCAKKyAgICAxNywgMTA1LCAxMywgNDMsIDI3LCAxNywgMTQ3LCAxMywgNDMsIDI3LCAxNywgMTQ5LCAxMywgNDMsIDI3LCAxNywgMTY0LCAKKyAgICAxMywgNDMsIDI3LCAxNywgMTg3LCAxMywgNDMsIDI3LCAxNywgMjEwLCAxMzUsIDEzLCA0MywgMjcsIDE3LCAxOTIsIDEzLCAKKyAgICA0MywgMjcsIDE3LCAyMTksIDExMywgMTMsIDIyMSwgOTMsIDE3LCAxOTksIDgxLCAxMywgMjIxLCA5MywgMTcsIDEwMiwgMTMsIAorICAgIDIyMSwgOTMsIDE3LCAxMDUsIDEzLCAyMjEsIDkzLCAxNywgMTQ3LCAxMywgMjIxLCA5MywgMTcsIDE0OSwgMTMsIDIyMSwgCisgICAgOTMsIDE3LCAxNjQsIDEzLCAyMjEsIDkzLCAxNywgMTg3LCAxMywgMjIxLCA5MywgMTcsIDIxMCwgMTM1LCAxMywgMjIxLCAKKyAgICA5MywgMTcsIDE5MiwgMTMsIDIyMSwgOTMsIDE3LCAyMTksIDExMywgMjMsIDEzMSwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5NiwgCisgICAgMjI4LCAxMDMsIDIzLCAyMzQsIDE5MiwgMjI4LCAxMDMsIDIzLCAyMzQsIDE4MSwgMjI4LCAxMDMsIDIzLCAyMzQsIDE4NSwgCisgICAgMjI4LCAxMDMsIDIzLCAyMzQsIDE5OCwgMjI4LCAxMDMsIDIzLCAxMzEsIDEyNCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE5NiwgCisgICAgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAyMTMsIAorICAgIDIyMCwgMjI2LCA5MSwgMjMsIDEzMSwgMTI0LCAyNDIsIDIwMCwgMjMsIDEzMSwgMTI0LCAyMzQsIDUwLCAyMywgMTMxLCAKKyAgICAxMjQsIDIzNCwgNTEsIDIyNCwgNTksIDIzLCAyMzQsIDE5NiwgMTI0LCAyMzQsIDUyLCAyMywgMTMxLCAxMjQsIDIyMSwgCisgICAgMjA0LCAyMywgMjM0LCAxOTYsIDEyNCwgMjIxLCAyMDQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxMDEsIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgMTMxLCAxMjQsIDEwMSwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMTUsIDEwMSwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAyMzQsIDUxLCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1NywgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU4LCAxMDEsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjQyLCAyMDAsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDEwMSwgMjQyLCAyMzEsIDIzLCAyMzQsIAorICAgIDE5NiwgMTI0LCAxMDEsIDI0MiwgMjMxLCAyMywgMTMxLCAxMDEsIDI0OCwgMjIwLCAxMTksIDIyOCwgMTAzLCAyMywgMTMxLCAKKyAgICAxMjQsIDI0OCwgMjIwLCAxMTksIDIyMSwgMjA0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjA2LCAzNCwgMjMsIDIzNCwgMTk2LCAKKyAgICAxMjQsIDEwMSwgMjA2LCAzNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDIwOCwgNjgsIDE1MywgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTAxLCAyNDgsIDIyMCwgMTUzLCAyMDgsIDY3LCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNDgsIDIxOSwgMjMsIAorICAgIDEzMSwgMTI0LCAxMDEsIDIzNCwgNTEsIDIwOCwgMjAyLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDExNSwgMTAxLCAKKyAgICAyMzQsIDUxLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDExNSwgMTAxLCAyMzQsIDUxLCAxNTMsIDI0MywgNTcsIAorICAgIDIzLCAxMzEsIDEyNCwgMjM0LCA1MSwgMTAxLCAxMTUsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAxMTUsIAorICAgIDIwOCwgMjAyLCAxNTMsIDIzNiwgMjMzLCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNDIsIDIwMCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDE1MywgMjQ2LCAxNTQsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDIzMywgMTg1LCAyMywgMTMxLCAxMjQsIDEwMSwgCisgICAgMTUzLCAyMzQsIDUwLCAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAxMjQsIDEwMSwgMjA4LCA2NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc1LCAKKyAgICAyNDMsIDU3LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NSwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEwMSwgMTUzLCAyMzMsIDE4NiwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDIzMywgMTg2LCAxMDEsIDIwMywgCisgICAgMjI4LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjM0LCA1MSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MiwgMjMyLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTUzLCAyMzYsIDIzMywgCisgICAgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDI0MiwgMjAxLCAxNTMsIDIzNiwgMjMzLCAyMywgMTMxLCAxMDEsIDE1MywgCisgICAgMjQyLCAyMDEsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDIwMSwgMTAxLCAyMDMsIDIyOCwgMjMsIAorICAgIDEzMSwgMTAxLCAxNTMsIDQ0LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDE1MywgNDQsIDEyNCwgMjM0LCA1MCwgCisgICAgMjMsIDEzMSwgMTI0LCAxNTMsIDI1MSwgNjksIDIxNiwgMjU1LCAxMDEsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgCisgICAgMjUxLCA2OSwgMjI4LCAxMTgsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCA0NCwgMTAxLCAyMDMsIDIyOCwgCisgICAgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjQzLCA1OCwgMjM0LCA1MCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjUxLCAKKyAgICA2OSwgMjE2LCAyNTQsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI1MSwgNjgsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIAorICAgIDY5LCAyMTYsIDI1NSwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgNjksIDIxNiwgMjU1LCAxMjQsIAorICAgIDI0MiwgMjMxLCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCA2OSwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIAorICAgIDIzMywgMTg2LCAxMDEsIDIzNCwgNTAsIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODEsIDIzLCAyMzQsIDE4NywgCisgICAgMjM2LCAyMjksIDIzNywgODIsIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIDgyLCAyMzQsIDUwLCAKKyAgICAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU3LCAyMywgMjM0LCAxODcsIDIzNiwgMjI5LCAyMzcsIAorICAgIDgyLCAyNDMsIDU4LCAyMDgsIDIwOSwgMjMsIDIzNCwgMTk0LCAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1NywgMjMsIDEzMSwgCisgICAgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTgsIDI0OCwgMjE5LCAyMywgMjM0LCAxODUsIDIzNiwgMjI5LCAyMzcsIDgyLCAKKyAgICAyNDMsIDU3LCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxODcsIDIzNCwgCisgICAgMTE4LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMSwgMjMsIDIzNCwgMTg3LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIAorICAgIDIwMiwgMjM2LCAyMjksIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIAorICAgIDIwMiwgMjM2LCAyMjksIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyNDgsIAorICAgIDIxOSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExOCwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDI0OCwgMjE5LCAyMywgCisgICAgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxOTIsIDIzNywgCisgICAgNjEsIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxOTIsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMTcsIDUzLCAKKyAgICAyMywgMjM0LCAxODUsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMTcsIDUzLCAyMywgMjM0LCAxODEsIDIzNywgNjEsIAorICAgIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMzQsIDUwLCAyMywgCisgICAgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMzQsIDUxLCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAKKyAgICAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAyLCAyMzQsIDUxLCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgCisgICAgMTg2LCAyMywgMjM0LCAxODcsIDI0OCwgMjA2LCAyMTYsIDE3NywgMjM3LCAxODEsIDIzLCAyMzQsIDE4NywgMjM0LCAxMTcsIAorICAgIDIzLCAyMzQsIDE4NywgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg3LCAyMzQsIDExOCwgMTUzLCAyMDksIDE3NCwgMjMsIAorICAgIDIzNCwgMTg3LCAxNTMsIDI0OCwgMjE5LCAyMywgMjM0LCAxODcsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE4NywgMjA4LCAKKyAgICAyMTAsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg3LCAyMDgsIDIxMCwgMjQ3LCA1NSwgMjMsIDIzNCwgMTg3LCAKKyAgICAyMDgsIDIxMCwgMjQ3LCA1NiwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg3LCAyMDgsIDIxMCwgMjQ3LCA1NiwgMTUzLCAKKyAgICAyMDksIDE3NSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjA4LCAyMTAsIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTMsIDIzLCAKKyAgICAyMzQsIDE5NCwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTk0LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTk0LCAKKyAgICAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxODMsIDI0MiwgMTk3LCAyMywgMjM0LCAxODIsIDIzLCAyMzQsIDE5MiwgMjE3LCAKKyAgICA1MywgMjMsIDIzNCwgMTkxLCAyMywgMjM0LCAxOTIsIDE3NiwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTkyLCAxNTMsIAorICAgIDIwOSwgMTc0LCAyMywgMjM0LCAxOTIsIDE3NiwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE5MiwgMjE4LCAyNDIsIAorICAgIDIwNiwgMzQsIDIzLCAyMzQsIDE5MiwgMTc2LCAxNTMsIDIzNiwgMjMzLCAyMywgMjM0LCAxOTIsIDE1MywgMjM2LCAyMzMsIAorICAgIDIzLCAyMzQsIDE5MCwgMjE3LCA1MywgMjMsIDIzNCwgMTg5LCAyMywgMjM0LCAxOTUsIDIzLCAyMzQsIDE4MCwgMjMsIDIzNCwgCisgICAgMTgxLCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODEsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxODEsIDE1MywgCisgICAgMjM2LCAyMzMsIDIzLCAyMzQsIDE4NSwgMjE3LCA1MywgMjMsIDIzNCwgMTg1LCAxNzYsIDE1MywgMjM2LCAyMzMsIDIzLCAKKyAgICAyMzQsIDE4NCwgMjMsIDIzNCwgMTg1LCAyMDksIDUzLCAyMywgMjM0LCAxODUsIDE3NiwgMTUzLCAyMDksIDE3NCwgMjMsIAorICAgIDIzNCwgMTg1LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODUsIDE3NiwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIAorICAgIDE4NSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE4NSwgMTUzLCAyMDksIDE3NSwgMjA1LCAxNDAsIDIyOCwgMTAzLCAKKyAgICAyMywgMjM0LCAxODUsIDE1MywgMjQ4LCAyMDYsIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTk3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTg1LCAxMjQsIDEwMSwgCisgICAgMjEzLCAyNiwgMjMsIDIzNCwgMTk4LCAxMjQsIDEwMSwgMjEzLCAyNiwgMjMsIDIzNCwgMTg1LCAyMjQsIDE0NywgMjMsIAorICAgIDEzMSwgMTI0LCAxMDEsIDIxMywgMjcsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDEwMSwgMjEzLCAyNywgMjQzLCA1NywgCisgICAgMjMsIDIzNCwgMTg1LCAxMjQsIDEwMSwgMjEzLCAyNywgMjQzLCA1NywgMjMsIDEzMSwgMjI0LCAxNDgsIDIzOSwgMTY3LCAKKyAgICAyMywgMTMxLCAyMjQsIDE0OCwgMTI3LCAyMTMsIDIyLCAyMDgsIDY3LCAyMywgMTMxLCAyMjQsIDE0OCwgMTI3LCAyMTMsIAorICAgIDIyLCAyNDIsIDE4NywgMjMsIDEzMSwgMjI0LCAxNDgsIDEyNywgMjE3LCA3LCAyNDYsIDE1NCwgMjMsIDEzMSwgMjI0LCAKKyAgICAxNDgsIDIwMywgMjI4LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE5NiwgCisgICAgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxODEsIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTk4LCAyMjQsIAorICAgIDE0OCwgMjAzLCAyMjgsIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMTMsIDIyMCwgMjI2LCA5MSwgMjMsIDEzMSwgMjI0LCAxNDgsIAorICAgIDI0OCwgMjE5LCAyMywgMTMxLCAyMjQsIDE0OCwgMjA1LCAxNDEsIDIwNiwgMzQsIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMDYsIAorICAgIDM0LCAyMywgMjM0LCAxODUsIDIyNCwgMTQ4LCAyMDYsIDM0LCAyMywgMTMxLCAyMjQsIDE0OCwgMTI0LCAyMDYsIDM0LCAyMywgCisgICAgMjM0LCAxODUsIDIyNCwgMTQ4LCAxMjQsIDIwNiwgMzQsIDIzLCAyMzQsIDE5OCwgMjI0LCAxNDgsIDEyNCwgMTUzLCAxMjQsIAorICAgIDE1MywgMjE2LCAyNTQsIDIzLCAyMzQsIDE5OCwgMjI0LCAxNDgsIDEyNCwgMTUzLCAxMjQsIDIwNiwgMzQsIDIzLCAxMzEsIAorICAgIDIyNCwgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTk2LCAyMjQsIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE4NSwgMjI0LCAKKyAgICAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTgsIDIyNCwgMTQ4LCAyMjgsIDEwMywgMjMsIDEzMSwgMTI0LCAxMDEsIDIyNCwgCisgICAgMTQ3LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMjQsIDEwMSwgMjI0LCAxNDcsIAorICAgIDIzLCAyMzQsIDE4NSwgMjEzLCAyNiwgMjMsIDIzNCwgMTk4LCAxMjQsIDEwMSwgMjI0LCAxNDcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDIsIDIzNSwgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDI0MiwgMjM1LCAyMjQsIDE0NywgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMjM5LCAxNjcsIDIzLCAyMzQsIDE4NSwgMjEzLCAyNywgMTI3LCAxMjQsIDE1MywgMjMzLCAxODcsIAorICAgIDIyMSwgMjA0LCAyMywgMjM0LCAxOTgsIDIxMywgMjcsIDEyNywgMTAxLCAxNTMsIDEyNCwgMjQyLCAyMzQsIDIzLCAxMzEsIAorICAgIDIxMywgMjcsIDIwMywgMjI4LCAyMywgMTMxLCAyMTMsIDI3LCAyMTMsIDIyMCwgMjI2LCA5MSwgMjMsIDEzMSwgMjEzLCAyNywgCisgICAgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE4MSwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDcsIDIzLCAyMzQsIDE5OCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAxMzEsIDIxMywgMjcsIDIyMSwgMjA0LCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAxMDEsIDI0MywgNTcsIDIzLCAxMzEsIDIxMywgMjcsIDEwMSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDIyOCwgMTAzLCAyMywgMTMxLCAyMTMsIDI3LCAyMDYsIDM0LCAyMywgMjM0LCAxODMsIDIxMywgMjcsIAorICAgIDIwNiwgMzQsIDIzLCAxMzEsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE5NiwgMTI0LCAyMTMsIDI3LCAKKyAgICAyMjQsIDE0NywgMjMsIDIzNCwgMTkwLCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTcsIDc4LCAyMywgMjM0LCAxODMsIAorICAgIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgMjM0LCAxODMsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIAorICAgIDIyOCwgMTE3LCAyMywgMjM0LCAxODMsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIwMywgMjUyLCAyMywgMjM0LCAxOTIsIAorICAgIDEyNCwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgCisgICAgMTk4LCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAxMjQsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ3LCAyMywgMTMxLCAxMDEsIDIzOSwgMTY3LCAyMywgMjM0LCAxODUsIDIyMSwgMjA0LCAyMywgMTMxLCAxMDEsIDIwMywgCisgICAgMjI4LCAyMywgMjM0LCAxOTYsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMjEzLCAyMjAsIDIyNiwgOTEsIDIzLCAKKyAgICAxMzEsIDEwMSwgMTE1LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODMsIDEwMSwgMjA2LCAzNCwgMjMsIDEzMSwgMTAxLCAKKyAgICAxNTMsIDIyNCwgMTQ3LCAyMywgMTMxLCAxMDEsIDIyNCwgMTQ3LCAyMywgMTMxLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ3LCAKKyAgICAyMywgMjM0LCAxOTYsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MCwgMTAxLCAyMTMsIDI3LCAyMjQsIAorICAgIDE0OCwgMjE3LCA3OCwgMjMsIDIzNCwgMTkyLCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEwMSwgCisgICAgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE5OCwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAKKyAgICAyMzQsIDE5OCwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjI4LCAxMTcsIDIzLCAyMzQsIDE5OCwgMTAxLCAyMTMsIDI3LCAKKyAgICAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTk0LCAKKyAgICAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyNDMsIDU3LCAyMywgMjM0LCAxOTQsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIAorICAgIDI0MywgNTgsIDIwOSwgMTc0LCAyMywgMjM0LCAxODMsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTgsIDIxNiwgCisgICAgMjU0LCAyMywgMjM0LCAxODMsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTgsIDIyOCwgMTE3LCAyMywgMjM0LCAKKyAgICAxODMsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTcsIDIzLCAyMzQsIDE4NSwgMTI0LCAyMzQsIDUwLCAyMywgCisgICAgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NSwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIAorICAgIDE1MywgMjA5LCAxNzUsIDE1MywgMjQxLCA3MCwgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0MywgNTcsIAorICAgIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAKKyAgICAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDI0OCwgOTYsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDE1MywgMjA5LCAxNzUsIDEyNCwgMjM0LCA1MiwgMjMsIDEzMSwgMTI0LCAxNTMsIDIzNiwgMjM0LCAxMjQsIDIwOCwgCisgICAgNjcsIDIzLCAxMzEsIDEyNCwgMTUzLCAyMzYsIDIzNCwgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAxNTMsIDExNywgCisgICAgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMTk3LCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAxOTAsIDE1MywgMjI4LCA3MywgCisgICAgMjMsIDIzNCwgMTk0LCAxMjQsIDE1MywgMjQyLCAxOTAsIDE1MywgMjI4LCA3MywgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgCisgICAgMTkwLCAxNTMsIDIwMywgMjUyLCAyMywgMTMxLCAxMjQsIDE1MywgMjQ2LCAxNTUsIDIzLCAyMzQsIDE5MiwgMTI0LCAyMDYsIAorICAgIDM0LCAyMywgMjM0LCAxOTIsIDEyNCwgMTUzLCAyMTcsIDUzLCAyMywgMjM0LCAxODUsIDEyNCwgMTUzLCAyMTcsIDUzLCAyMywgCisgICAgMjM0LCAxODUsIDEyNCwgMTUzLCAyMjUsIDcwLCAyMywgMjM0LCAxODUsIDEyNCwgMjA2LCAzNCwgMjMsIDIzNCwgMTg1LCAKKyAgICAxMjQsIDE1MywgMjA5LCA1MywgMjMsIDIzNCwgMTk4LCAxMjQsIDE1MywgMjE2LCAyNTQsIDIzLCAyMzQsIDE5OCwgMTI0LCAKKyAgICAxNTMsIDIyOCwgMTE3LCAyMywgMjM0LCAxOTgsIDEyNCwgMjA2LCAzNCwgMjMsIDEzMSwgMjA2LCAzNCwgMjMsIDEzMSwgCisgICAgMTUzLCAyMzQsIDExNywgMjMsIDEzMSwgMTUzLCAyMDksIDE3NSwgMjQxLCA3MCwgMjMsIDEzMSwgMTUzLCAyMDksIDE3NSwgCisgICAgMjQzLCA1NywgMjMsIDEzMSwgMTUzLCAyMDksIDE3NSwgMjQ4LCAyMTksIDIzLCAxMzEsIDE1MywgMjM2LCAyMzMsIDIzLCAKKyAgICAxMzEsIDE1MywgMjQ4LCAyMDYsIDEyNCwgMjIxLCAyMDQsIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDEwMSwgMjEzLCAyNiwgCisgICAgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDEyMCwgCisgICAgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAxMTksIDEyMCwgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMTI2LCAKKyAgICAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAyMzYsIDIyOSwgMjM3LCA4MSwgMjMsIDEzMSwgMTUzLCAxMTksIAorICAgIDIzNiwgMjI5LCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIDIzNCwgMTg4LCAyMywgMTMxLCAyMzQsIDExNywgMjMsIDIwNSwgCisgICAgMTQyLCAyMDksIDEzOCwgMjMsIDIwNSwgMTQyLCAyMjEsIDIwLCAyMywgMjA1LCAxNDIsIDI0OCwgMjA1LCAyMywgMjM1LCAKKyAgICA3OCwgMjA5LCAxMzgsIDIzLCAyMzUsIDc4LCAyMjEsIDIwLCAyMywgMjM1LCA3OCwgMjQ4LCAyMDUsIDIzLCAyMDgsIDUyLCAKKyAgICAyMDksIDEzOCwgMjMsIDIwOCwgNTIsIDIyMSwgMjAsIDIzLCAyMDgsIDUyLCAyNDgsIDIwNSwgMjMsIDI0OCwgNDQsIDIwOSwgCisgICAgMTM4LCAyMywgMjQ4LCA0NCwgMjIxLCAyMCwgMjMsIDI0OCwgNDQsIDI0OCwgMjA1LCAyMywgMjEyLCAxNzMsIDIwOSwgMTM4LCAKKyAgICAyMywgMjEyLCAxNzMsIDIyMSwgMjAsIDIzLCAyMTIsIDE3MywgMjQ4LCAyMDUsIDIzLCAyMDcsIDIwMywgMjA3LCAxMTYsIAorICAgIDIzLCAyMDcsIDIwMywgMjQ4LCAyMDUsIDIzLCAyMDgsIDE4OSwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMDgsIDE4OSwgNCwgCisgICAgMjA5LCAxMzgsIDIzLCAyMDgsIDE4OSwgMjI1LCA3MSwgMjIxLCAyMCwgMjMsIDIwOCwgMTg5LCA0LCAyMjEsIDIwLCAyMywgCisgICAgMjA4LCAxODksIDIxMCwgMTUwLCAyMywgMjM3LCAzNSwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMzcsIDM1LCA0LCAyMDksIAorICAgIDEzOCwgMjMsIDIzNywgMzUsIDIyNSwgNzEsIDIyMSwgMjAsIDIzLCAyMzcsIDM1LCA0LCAyMjEsIDIwLCAyMywgMjM3LCAzNSwgCisgICAgMjEwLCAxNTAsIDIzLCAyMDgsIDE4OSwgMjM3LCAzNSwgMjUxLCAxMDYsIDIzLCAyMjEsIDUxLCAxMTUsIDEyNywgMjI1LCAKKyAgICA3MCwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyMDksIDUzLCAyMywgMjIxLCA1MSwgMTE1LCAyMTAsIDE1MCwgMjMsIDIyMSwgCisgICAgNTEsIDEyNywgMjEwLCAxNTAsIDIzLCAyMjEsIDUxLCAxMTUsIDEyNywgMjUxLCAxMDcsIDIyNSwgNzAsIDIzLCAyMjEsIDUxLCAKKyAgICAxMTUsIDEyNywgMjUxLCAxMDcsIDIwOSwgNTMsIDIzLCAyMjEsIDUxLCAyMDksIDE3NSwgMjA1LCAxODYsIDIwOSwgMTc1LCAKKyAgICAyMTEsIDIxNiwgMjMsIDIyMSwgNTAsIDIzNywgODcsIDI0MywgNDcsIDIzLCAyMjEsIDUyLCAyMzcsIDg3LCAyNDMsIDQ3LCAKKyAgICAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIAorICAgIDIwOCwgNjgsIDIyNSwgNjgsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAKKyAgICA1MywgMjA4LCA2NywgMjMsIDIyMSwgNTAsIDUzLCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDUzLCAyNTEsIAorICAgIDEwNiwgMjMsIDIyMSwgNTAsIDUzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyNDIsIDIzNCwgCisgICAgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDIwOCwgNjgsIDIyMSwgNTQsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyMDAsIDIyMCwgCisgICAgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDI1MSwgMTA2LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjUxLCAxMDcsIAorICAgIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjA5LCA1MywgCisgICAgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMjUsIDcwLCAyMywgMjIxLCAKKyAgICA1MCwgMjQzLCAxNiwgMjEyLCAyMjYsIDIzLCAyMjEsIDUwLCAyNDcsIDcsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDcsIDcsIAorICAgIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDcsIDcsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAxMDAsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUwLCAxMDAsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAxMDAsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAKKyAgICAyMDksIDUzLCAyMywgMjIxLCA1MCwgMTk5LCAyNywgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIDIyNSwgNzAsIAorICAgIDIzLCAyMjEsIDUwLCAyMTYsIDY5LCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjE2LCA2OSwgMjIyLCA2NSwgMjMsIDIyMSwgCisgICAgNTAsIDIxNiwgNjksIDIyNSwgNzAsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjA1LCAxMTIsIAorICAgIDIxMiwgMjI0LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNCwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMiwgMjEyLCAKKyAgICAyMjUsIDIwOSwgMTM4LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI1LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNSwgCisgICAgMjUxLCAxMDYsIDIzLCAyMDUsIDExMiwgMjEwLCA5NSwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgMjA4LCAyMTgsIDIwOSwgCisgICAgMTM4LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAyMDgsIDIxOCwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIAorICAgIDIwOCwgMjE4LCAyMDUsIDgyLCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIDIwOSwgNTMsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIDIyNSwgNjgsIAorICAgIDIzLCAyMjEsIDUzLCAyMDUsIDEzNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMjIsIDY1LCAyMywgMjIxLCAKKyAgICA1MywgMjA1LCAxMzYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyMDUsIDEzNiwgMjI1LCA2OCwgMjMsIDIyMSwgNTMsIDI0OCwgCisgICAgMjA2LCAyNTAsIDExNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyNTAsIDExNiwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTMsIDI0OCwgMjA2LCAyNTAsIDExNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyNTAsIDExNiwgCisgICAgMjI1LCA2OCwgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyMDUsIDEzNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAKKyAgICAyMDUsIDEzNiwgMjIyLCA2NSwgMjMsIDIyMSwgNTMsIDI0OCwgMjA2LCAyMDUsIDEzNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIAorICAgIDI0OCwgMjA2LCAyMDUsIDEzNiwgMjI1LCA2OCwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMDksIDUzLCAyMywgCisgICAgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyMiwgNjUsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjI1LCAKKyAgICA3MCwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjUsIDY4LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwMCwgCisgICAgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgNTMsIDIwOCwgNjcsIDIzLCAyMjEsIDUyLCA1MywgMjAwLCAyMjAsIDIzNywgCisgICAgMzgsIDIzLCAyMjEsIDUyLCA1MywgMjUxLCAxMDYsIDIzLCAyMjEsIDUyLCA1MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIAorICAgIDM4LCAyMywgMjIxLCA1MiwgMjQyLCAyMzQsIDIzLCAyMjEsIDUyLCAyMDUsIDgzLCAyMDgsIDY4LCAyMjEsIDU0LCAyMywgCisgICAgMjIxLCA1MiwgMjA1LCA4MywgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCAyMDUsIDgzLCAyNTEsIDEwNywgMjIxLCAKKyAgICA1NCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDI0OCwgCisgICAgMjIyLCAyMywgMjIxLCA1MiwgMjQzLCAxNiwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDI0MywgMTYsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUyLCAyNDMsIDE2LCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQ3LCA2LCAyMywgMjIxLCA1MiwgMTAwLCAyMDksIAorICAgIDUzLCAyMywgMjIxLCA1MiwgMTAwLCAyMjIsIDY1LCAyMywgMjIxLCA1MiwgMTAwLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgCisgICAgMTk5LCAyNywgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDE5OSwgMjcsIDIyMiwgNjUsIDIzLCAyMjEsIDUyLCAxOTksIDI3LCAKKyAgICAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMjUsIDcwLCAyMywgMjA1LCAxMTMsIDIxMiwgMjI1LCAyMDksIDEzOCwgMjMsIDIwNSwgCisgICAgMTEzLCAyMTIsIDIyNSwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMywgMjEyLCAyMjUsIDI1MSwgMTA2LCAyMywgMjA1LCAxMTMsIAorICAgIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNCwgMjM5LCAxNzUsIDIzLCAyMDUsIDExMywgMjEyLCAKKyAgICAyMjQsIDI1MSwgMTA2LCAyMywgMjA1LCAxMTMsIDIxMCwgOTUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjE0LCA4OCwgCisgICAgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIAorICAgIDIxNCwgODgsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjE0LCA4OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTAsIAorICAgIDI0MiwgMTkwLCAyMzQsIDIxMiwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIDIxMiwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIDIxMiwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIAorICAgIDIxMiwgMjI1LCA2OCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMDYsIDQwLCAyNDYsIDE1NiwgMjA5LCA1MywgMjMsIDIyMSwgCisgICAgNTAsIDI0MiwgMTkwLCAyMDYsIDQwLCAyNDYsIDE1NiwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIwOSwgNTMsIAorICAgIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjI1LCA3MCwgMjMsIDIyMSwgCisgICAgNTAsIDIyNCwgNzUsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMjQsIDc1LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjI0LCAKKyAgICA3NSwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDIyNCwgNzUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgCisgICAgMjQyLCAxOTAsIDUzLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDUzLCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDUzLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIAorICAgIDIwNSwgODMsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgMjA1LCA4MywgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAyMDUsIDgzLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIwNiwgCisgICAgOTgsIDIwOCwgNjcsIDIzLCAyMjEsIDUwLCAyNDIsIDE4OCwgMjQyLCAyMzUsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyNDIsIAorICAgIDE4OCwgMjQyLCAyMzUsIDIyMiwgNjUsIDIzLCAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMTIsIDIyNCwgMjM5LCAxNzUsIAorICAgIDIzLCAyMTIsIDIyNCwgMjUxLCAxMDgsIDIzLCAyMjEsIDUwLCAyMTAsIDk1LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIAorICAgIDEwMiwgMjMsIDIyMSwgNTAsIDIyNCwgNzUsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIyMSwgNTAsIDIwMSwgCisgICAgNzgsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgMjI0LCAyMDksIDEzOSwgMjM0LCA0NCwgMjM2LCAKKyAgICAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAyMjQsIDUzLCAyMzQsIDQ0LCAyMzYsIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIAorICAgIDIyNCwgMjUxLCAxMDcsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMzQsIAorICAgIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjI0LCAKKyAgICA3NSwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIxMiwgCisgICAgMjI0LCAyMDksIDEzOSwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMTIsIDIyNCwgNTMsIDIzNCwgNDQsIDI0NiwgMjQzLCAKKyAgICAyMywgMjEyLCAyMjQsIDI1MSwgMTA3LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIAorICAgIDIxNiwgOTEsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAyMTYsIDkxLCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgMjE2LCA5MSwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIAorICAgIDQ0LCAyNDcsIDY1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzAsIAorICAgIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyNDcsIDY1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgCisgICAgODUsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgCisgICAgMjQ3LCA2NSwgNCwgMjA1LCA4MiwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzEsIAorICAgIDIwNSwgODIsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyNDcsIDY1LCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgCisgICAgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzEsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgCisgICAgMjM0LCA0NCwgMjQ3LCA2NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAyNDcsIDY1LCAKKyAgICAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NywgNjUsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyNDcsIDY1LCAyMjUsIDcwLCAyMywgMjEyLCAyMjUsIDIwOSwgMTM5LCAyMzQsIAorICAgIDQ0LCAyNDcsIDY0LCAyMywgMjEyLCAyMjUsIDUzLCAyMzQsIDQ0LCAyNDcsIDY0LCAyMywgMjEyLCAyMjUsIDI1MSwgMTA3LCAKKyAgICAyMzQsIDQ0LCAyNDcsIDY0LCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgNDQsIDIzNywgMzIsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgCisgICAgNDQsIDIzNywgMzIsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCAKKyAgICA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDUsIDgzLCA0LCAyMDUsIAorICAgIDgyLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjA1LCA4MywgMjI1LCA3MSwgMjA1LCA4MiwgCisgICAgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDIzNywgMzIsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjI0LCAKKyAgICA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAyMzQsIDQ0LCAKKyAgICAyMzcsIDMyLCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzEsIAorICAgIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjM3LCAzMiwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIAorICAgIDIwMSwgNzgsIDIzNCwgNDQsIDIzNywgMzIsIDIyNSwgNzAsIDIzLCAyMTIsIDIyNSwgMjA5LCAxMzksIDIzNCwgNDQsIDIzNywgCisgICAgMzEsIDIzLCAyMTIsIDIyNSwgNTMsIDIzNCwgNDQsIDIzNywgMzEsIDIzLCAyMTIsIDIyNSwgMjUxLCAxMDcsIDIzNCwgNDQsIAorICAgIDIzNywgMzEsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjI1LCA2OCwgMjMsIDIyMSwgCisgICAgNTIsIDI0MiwgMTkwLCAyNDYsIDc0LCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDIyNCwgCisgICAgNzUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMDksIDQxLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjA5LCAKKyAgICA1MywgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIyNSwgNzAsIDIzLCAyMTIsIDIyNSwgMjA5LCAxMzgsIDIzLCAyMTIsIDIyNSwgCisgICAgMjM5LCAxNzUsIDIzLCAyMTIsIDIyNSwgMjUxLCAxMDYsIDIzLCAyMjEsIDUyLCAyMTAsIDk2LCAyMTYsIDEyMCwgMjMsIAorICAgIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIDE1NiwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIyMiwgNjYsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCA0LCAyMzksIDE3NSwgMjMsIAorICAgIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIDE1NiwgMjIyLCA2NiwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgCisgICAgMjQ2LCAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIyMiwgNjYsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIDE1NiwgCisgICAgMjM0LCA0NCwgMjAxLCAxMDMsIDIyMiwgNjYsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgMTU2LCAKKyAgICAyMzQsIDQ0LCAyMDEsIDEwMywgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIAorICAgIDIzNiwgMjAwLCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM2LCAyMDAsIDIzOSwgMTc1LCAKKyAgICAyMywgMjIxLCA1MiwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjA5LCAxMzgsIDIzLCAyMjEsIAorICAgIDUyLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIzNywgCisgICAgODcsIDI0NiwgMTUzLCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDIzNywgODcsIDI0NiwgMTUzLCAyMzksIDE3NSwgMjMsIAorICAgIDIyMSwgNTIsIDIzNywgODcsIDI0NiwgMTUzLCAyMzQsIDQ0LCAyMDEsIDEwMywgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAKKyAgICAyMzcsIDg3LCAyNDYsIDE1MywgMjM0LCA0NCwgMjAxLCAxMDMsIDIzOSwgMTc1LCAyMywgMjM5LCA5OCwgMjUwLCAyMDMsIAorICAgIDIwOSwgNTMsIDIzLCAyMzksIDk4LCAyNTAsIDIwMywgMjI1LCA3MCwgMjMsIDIzOSwgOTgsIDIzNywgMTYxLCAyMywgMjM5LCAKKyAgICA5OCwgMjA5LCA1NiwgMjMsIDIzOSwgOTgsIDIwNiwgMTU5LCAyMywgMjM5LCA5OCwgMjEzLCAxNDcsIDIzLCAyMzksIDk4LCAKKyAgICAyMDksIDE0NCwgMjMsIDIzOSwgOTgsIDIwOSwgMTQ1LCAyNTEsIDEwNiwgMjMsIDIzOSwgOTgsIDIzOCwgNTIsIDIxNywgOCwgCisgICAgMjA1LCAyMzQsIDIzLCAyMzksIDk4LCAyMzUsIDg4LCAyMywgMjM0LCAxMzYsIDIzLCAyMzQsIDEzNywgMjEzLCAzMSwgMjMsIAorICAgIDIzNCwgMTM3LCAyMjEsIDUwLCAyMDgsIDY3LCAyMywgMjM0LCAxMzcsIDIyMSwgNTAsIDIwNSwgMjM3LCAyMywgMjM0LCAKKyAgICAxMzcsIDIyMSwgNTIsIDIwOCwgNjcsIDIzLCAyMzQsIDEzNywgMjIxLCA1MCwgMjQyLCAxODksIDIzLCAyMzQsIDEzNywgCisgICAgMjIxLCA1MiwgMjQyLCAxODksIDIzLCAyMzQsIDEzNywgMjIxLCA1NSwgMjQ2LCAxNTUsIDIzLCAyMzcsIDE5MCwgMjQxLCA5LCAKKyAgICAyMTUsIDcwLCAyMTgsIDIxNywgMjM2LCAyMzQsIDIwNSwgMjM1LCAyMywgMjM3LCAxOTAsIDI0MSwgOSwgMjE1LCA3MCwgCisgICAgMjE4LCAyMTcsIDExNSwgMjE3LCAzNCwgMjM5LCAxNjcsIDIzLCAyMzcsIDE5MCwgMjQxLCA5LCAyMTUsIDcwLCAyMTgsIAorICAgIDIxNywgMTE1LCAyMTcsIDM0LCAxMjcsIDIwNSwgMjM1LCAyMywgMjM4LCAyMSwgMjA4LCA2OCwgMjAzLCAyMjgsIDIzLCAKKyAgICAyMzgsIDIxLCAyMDgsIDY4LCAyMjAsIDksIDIzLCAyMzgsIDIxLCAyMDgsIDY4LCAyMzksIDE2NywgMjMsIDIzOSwgMTU0LCAKKyAgICAyMzgsIDIxLCAyMjAsIDEwLCAyMzksIDE2NywgMjMsIDIzOSwgMTU0LCAyMzgsIDIxLCAxMjcsIDIyMCwgOSwgMjMsIDIzOSwgCisgICAgMTU0LCAyMzgsIDIxLCAxMTUsIDIyMCwgOSwgMjMsIDIzOSwgMTU0LCAyMzgsIDIxLCAyMjAsIDEwLCAyMDMsIDIyOCwgMjMsIAorICAgIDIzNiwgMjQ3LCAyMjAsIDksIDIzLCAyMzYsIDI0NywgMjQzLCA0NywgMjMsIDIzNiwgMjQ3LCAyMDAsIDIyMywgMjMsIDIzOCwgCisgICAgMTYsIDIxNywgNTMsIDIzLCAyMzgsIDE2LCAyMDgsIDE4OCwgMjMsIDIzOCwgMTYsIDI0NiwgMTA5LCAyMywgMjM4LCAyMywgCisgICAgMjQ4LCAxMzUsIDIwOSwgMTM4LCAyMywgMjM4LCAyMywgMjQ4LCAxMzUsIDIyMSwgMjAsIDIzLCAyMzgsIDE2LCAxNjcsIAorICAgIDIxNywgNTMsIDIzLCAyMzgsIDE2LCAyMDEsIDI4LCAyMTcsIDUzLCAyMywgMjM4LCAxNiwgMTY3LCAyNDYsIDEwOSwgMjMsIAorICAgIDIzOCwgMTYsIDIwMSwgMjYsIDIyMSwgNTQsIDIzLCAyMzgsIDIzLCAyMDEsIDksIDIzLCAyMzgsIDE3LCAyMDMsIDIyOCwgCisgICAgMjMsIDIzOCwgMTcsIDIzOSwgMTY3LCAyMywgMjM4LCAxNywgMjM3LCAxOCwgMjMsIDIzOCwgMTksIDIwOCwgNjcsIDIzLCAKKyAgICAyMzgsIDE5LCAyMDgsIDY4LCAyMzksIDE3NSwgMjMsIDIzOCwgMTksIDIwOCwgNjgsIDI1MSwgMTA2LCAyMywgMjM4LCAyMCwgCisgICAgMjA4LCA2NywgMjMsIDIzOCwgMjAsIDIwOCwgNjgsIDIzOSwgMTc1LCAyMywgMjM4LCAyMCwgMjA4LCA2OCwgMjUxLCAxMDYsIAorICAgIDIzLCAyMzgsIDE5LCAyNDIsIDE4NywgMjMsIDIzOCwgMjAsIDI0MiwgMTg3LCAyMywgMjM4LCAxOSwgMjQ2LCAxNTAsIDIzLCAKKyAgICAyNDcsIDIsIDIxNCwgMjE1LCAyMywgMjQ3LCAyLCAyMjAsIDksIDIzLCAyNDcsIDIsIDIwNywgMjQ4LCAyMywgMjA2LCAxNjAsIAorICAgIDI0NywgMiwgMjM0LCA1OSwgMjMsIDIwNiwgMTYwLCAyNDcsIDIsIDIyMSwgMjA0LCAyMywgMjA2LCAxNjAsIDI0NywgMiwgCisgICAgMjI0LCA1OSwgMjMsIDIzOSwgMTksIDIzLCAyMTgsIDIxNywgMjIwLCA5LCAyMywgMjE4LCAyMTcsIDI0MywgNDcsIDIzLCAKKyAgICAyMTgsIDIxNywgMjAwLCAyMjEsIDIzLCAyMTgsIDIxNywgMjAxLCAyMywgMjMsIDI1MSwgMTY3LCAyNDgsIDEyOCwgMjE2LCAKKyAgICAyNTQsIDIzLCAyNTEsIDE2NywgMjA3LCAyNDcsIDIyOCwgMTE3LCAyMywgMjUxLCAxNjcsIDI0OCwgMTMwLCA0LCAyMTIsIAorICAgIDIyMywgMjMsIDI1MSwgMTY3LCAyMDcsIDI0OSwgNCwgMjEyLCAyMjMsIDIzLCAyNDgsIDU5LCAyMjgsIDg5LCAyMywgMjQ4LCAKKyAgICA1OSwgMjM4LCA0MSwgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyMjAsIDksIDIzLCAyMjEsIDU5LCAyNDYsIDExMCwgMjM2LCAKKyAgICAyMzMsIDIzLCAyMjEsIDU5LCAyNDYsIDExMCwgMjQzLCA0NywgMjMsIDIyMSwgNTksIDIwOSwgNDgsIDIzLCAyMjEsIDU5LCAKKyAgICAyMDksIDQ5LCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDIwOSwgNDksIDIxNywgNTMsIDIzLCAyMjEsIDU5LCAyMzYsIDE5NiwgCisgICAgMjMsIDIyMSwgNTksIDIzNiwgMTk3LCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDIzNiwgMTk3LCAyMTcsIDUzLCAyMywgMjIxLCAKKyAgICA1OSwgMTc2LCAyNDYsIDE1NSwgMjMsIDIyMSwgNTksIDE3NiwgMjM2LCAyMzMsIDIzLCAyMjEsIDU5LCAxNzYsIDIwMCwgCisgICAgMjIzLCAyMywgMjIxLCA1OSwgMTc2LCAyMTYsIDI0NywgMjMsIDIyMSwgNTksIDE3NiwgMjE2LCAyNDgsIDIwMCwgMjIzLCAKKyAgICAyMywgMjIxLCA1OSwgMTc2LCAyMTYsIDI0OCwgMjAwLCA1OCwgMjMsIDIyMSwgNTksIDE3NiwgMjEzLCAxNzUsIDIzLCAyMjEsIAorICAgIDU5LCAxNzYsIDIxMywgMTc2LCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDE3NiwgMjEzLCAxNzYsIDIwMCwgNTgsIDIzLCAKKyAgICAyMjEsIDU5LCAyMjYsIDEyOSwgMjMsIDIyMSwgNTksIDIyNiwgMTMwLCAyMzYsIDIzMywgMjMsIDIyMSwgNTksIDIyNiwgCisgICAgMTMwLCAyMDAsIDIyMywgMjMsIDIyMSwgNTksIDIwNiwgMTU5LCAyMywgMjIxLCA1OSwgMjA2LCAxNjAsIDIzNiwgMjMzLCAKKyAgICAyMywgMjIxLCA1OSwgMjA2LCAxNjAsIDIwNywgMjQ4LCAyMywgMjI0LCAxNjEsIDIxNSwgMTcsIDIwNSwgMTgyLCAyMywgCisgICAgMjI0LCAxNjMsIDIyNCwgNTQsIDExOSwgMjAzLCAyMjQsIDIzLCAyMjQsIDE2MywgMjAzLCAyMjUsIDExOSwgMjI0LCA1MywgCisgICAgMjMsIDIyMSwgNTksIDI0MywgMTQsIDIzLCAyMjEsIDU5LCAyMDAsIDIyMiwgMjA5LCAxMzgsIDIzLCAyMjEsIDU5LCAyMDAsIAorICAgIDIyMiwgMjM5LCAxNzUsIDIzLCAyMDUsIDE2NCwgMjA4LCA4NywgMjE2LCAyNTUsIDIzNywgMTYzLCAyMywgMjA1LCAxNjQsIAorICAgIDIyNCwgMjA2LCAyMjQsIDE2MCwgMjMsIDIwNSwgMTY0LCAyMDUsIDIyNCwgMjQ4LCAyMDYsIDIyNCwgMTYwLCAyMywgMjA1LCAKKyAgICAxNjQsIDIwNSwgMjI0LCAyMDUsIDE0MCwgMjI4LCA3NCwgMjIxLCA1OCwgMjMsIDIwNSwgMTY0LCAyMjgsIDc0LCAyMjEsIAorICAgIDU5LCAyMTMsIDE0NywgMjMsIDIwNSwgMTY0LCAyMjEsIDQ5LCAyNTEsIDE5MSwgMjQ3LCAzLCAyMywgMjA1LCAxNjQsIDI0NywgCisgICAgNTYsIDIwOCwgODcsIDIxNiwgMjU0LCAyMywgMjA1LCAxNjQsIDI0NywgNTYsIDIyOCwgNzQsIDIyMSwgNTgsIDIzLCAyMDYsIAorICAgIDE4NiwgMjMsIDIwNiwgMTg3LCAyMjEsIDU0LCAyMywgMjA2LCAxODcsIDIxNywgNzksIDIwNSwgMTYzLCAyMywgMjA2LCAKKyAgICAxODcsIDIxNywgNzksIDIwNSwgMTY0LCAyMjEsIDU0LCAyMywgMjA2LCAxODcsIDIxNywgNzksIDIyNCwgMTYwLCAyMywgCisgICAgMjA2LCAxODcsIDIxNywgNzksIDIyNCwgMTYxLCAyMjEsIDU0LCAyMywgMjA2LCAxODcsIDI0OCwgMTUxLCAyMjQsIDE2MCwgCisgICAgMjMsIDIyMSwgNTAsIDIyNywgMjMxLCAyMywgMjIxLCA1MiwgMjI3LCAyMzEsIDIzLCAyMjAsIDMxLCAyMywgMjM0LCAyMjEsIAorICAgIDIzLCAyMzgsIDQ0LCAyMywgMjA5LCAyMzMsIDIzNCwgNDksIDIwOCwgMjE5LCAyMywgMjA5LCAyMzMsIDIzNCwgNDksIDIxNSwgCisgICAgNjksIDIzLCAyMDEsIDEwMSwgMjA5LCAyMzMsIDIzNCwgNDksIDIyMSwgNTcsIDIzLCAyMzcsIDMwLCAyMDksIDIzMywgMjM0LCAKKyAgICA0OSwgMjIxLCA1NywgMjMsIDIwOSwgMjMzLCAyMDUsIDIzNiwgMjM2LCAyMDEsIDIwMSwgMTA3LCAyMywgMjA1LCAxNDcsIAorICAgIDIwOCwgNjgsIDIwOCwgNTYsIDIzLCAyMDUsIDE0NywgMjQyLCAxODgsIDI0OCwgMjIyLCAyMywgMjA1LCAxNDgsIDIwNCwgCisgICAgMTQ0LCAyMywgMjAzLCAyMjUsIDI0OCwgMTE5LCAyMDUsIDIzNiwgMjM2LCAyMDEsIDIzNCwgNDksIDIyNywgMTYwLCAyMywgCisgICAgMjI0LCAxODgsIDI0NiwgNzUsIDIzLCAyMjQsIDE4OCwgMjI1LCAxLCAyMywgMjI0LCAxODgsIDIyNSwgMCwgMjMsIDIyNCwgCisgICAgMTg4LCAyMjQsIDI1NSwgMjMsIDIyNCwgMTg4LCAyMjQsIDI1NCwgMjMsIDIyNCwgMTg4LCAyMjQsIDI1MywgMjMsIDIyNCwgCisgICAgMTg4LCAyMjQsIDI1MiwgMjMsIDIyNCwgMTg4LCAyMjQsIDI1MSwgMjMsIDIzNywgODYsIDIzLCAyMjQsIDEwNiwgMjA4LCAKKyAgICAyNDQsIDIzLCAyMjQsIDEwNywgMjA4LCAyNDQsIDIzLCAyMjQsIDEwOCwgMjM0LCAxMTMsIDIzLCAyMjQsIDEwOCwgMjAxLCAKKyAgICAyNCwgMjMsIDIyNCwgMTA4LCAyNDEsIDEyMywgMjMsIDIyNCwgMTA4LCAyMzQsIDEzNywgMjIwLCAzMSwgMjMsIDIyNCwgCisgICAgMTA4LCAyMDUsIDE0OSwgMjMsIDIyNCwgMTA4LCAyMjQsIDE4NywgMjQxLCA0MSwgMjMsIDI0NiwgNzAsIDIzLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMjMsIDIxMCwgMTY3LCAyMywgMjQ2LCA3OSwgMjMsIDIxNiwgMTE1LCAyMywgMjM3LCA5NiwgMjIxLCAKKyAgICAxMTgsIDIzLCAyMzcsIDk2LCAyMjEsIDExNywgMjMsIDIzNywgOTYsIDIyMSwgMTE2LCAyMywgMjM3LCA5NiwgMjIxLCAxMTUsIAorICAgIDIzLCAyMzcsIDk2LCAyMjEsIDExNCwgMjMsIDIxMiwgMjI3LCAyMjEsIDExOCwgMjMsIDIxMiwgMjI3LCAyMjEsIDExNywgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDExNiwgMjMsIDIxMiwgMjI3LCAyMjEsIDExNSwgMjMsIDIxMiwgMjI3LCAyMjEsIDExNCwgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDExMywgMjMsIDIxMiwgMjI3LCAyMjEsIDExMiwgMjMsIDIxMiwgMjI3LCAyMjEsIDExMSwgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDEyNSwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyNCwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMywgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMiwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMSwgMjMsIDIxMiwgMjI3LCAyMjEsIDEyMCwgCisgICAgMjMsIDIxMiwgMjI3LCAyMjEsIDExOSwgMzgsIDExNiwgMSwgMjUwLCAxMDQsIDM4LCAxMTYsIDEsIDI0OCwgMjQsIDM4LCAKKyAgICAxMTYsIDEsIDIwMywgNTcsIDM4LCAxMTYsIDEsIDIzNSwgMTMwLCAzOCwgMTE2LCAxLCAyNDAsIDIwNiwgMzgsIDExNiwgMSwgCisgICAgMjAwLCAyMywgMzgsIDExNiwgMSwgMTk5LCA2MSwgMzgsIDExNiwgMSwgMTk5LCA4NiwgMzgsIDExNiwgMSwgMjI3LCAyNTUsIAorICAgIDM4LCAxMTYsIDEsIDgyLCAyMjcsIDI1NSwgMzgsIDExNiwgMSwgNzAsIDM4LCAxMTYsIDEsIDI0MCwgMjI2LCAzOCwgMTE2LCAKKyAgICAxLCAyMjcsIDc0LCAzOCwgMTE2LCAxLCAyMjQsIDE0MCwgMzgsIDExNiwgMSwgMjIwLCAyMTgsIDM4LCAxMTYsIDEsIDIyMCwgCisgICAgMTIwLCAzOCwgMTE2LCAxLCAyMTcsIDY1LCAzOCwgMTE2LCAxLCAyMTUsIDkzLCAzOCwgMTE2LCAxLCAyMTMsIDE4LCAzOCwgCisgICAgMTE2LCAxLCAyMDksIDU4LCAzOCwgMTE2LCAxLCAyMDQsIDE3MSwgMzgsIDExNiwgMSwgMjA0LCAxNiwgMzgsIDExNiwgMSwgCisgICAgMjM2LCAyMDQsIDM4LCAxMTYsIDEsIDIzNCwgOTUsIDM4LCAxMTYsIDEsIDIwOSwgMjIzLCAzOCwgMTE2LCAxLCAyMDUsIDExLCAKKyAgICAzOCwgMTE2LCAxLCAyNDYsIDE5OCwgMzgsIDExNiwgMSwgMjEwLCAxMTQsIDM4LCAxMTYsIDEsIDIwMCwgMjksIDM4LCAxMTYsIAorICAgIDEsIDIwMCwgMzEsIDM4LCAxMTYsIDEsIDIwMCwgNjMsIDM4LCAxMTYsIDEsIDE5OSwgMjExLCAzOCwgMTE2LCAxLCA0LCAKKyAgICAxOTksIDE4MSwgMzgsIDExNiwgMSwgMTk5LCAyNDUsIDM4LCAxMTYsIDEsIDIyOCwgNDAsIDQsIDE5OSwgMTgxLCAzOCwgCisgICAgMTE2LCAxLCAyNDgsIDE3NSwgMTk5LCAxODEsIDM4LCAxMTYsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzgsIAorICAgIDExNiwgMSwgMjM3LCA2MywgNzgsIDc3LCA1LCAyMjMsIDI0MiwgMjI2LCAxNjMsIDc4LCA3NywgNSwgMjIzLCAyMzgsIDE2MSwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDIzNiwgMjI2LCAxNSwgNzgsIDc3LCA1LCAyMjMsIDExMiwgMjI3LCA1LCA3OCwgNzcsIDUsIAorICAgIDIyMywgODIsIDIyNywgOCwgNzgsIDc3LCA1LCAyMjMsIDEwMSwgMjI2LCA2OCwgNzgsIDc3LCA1LCAyMjMsIDEyOSwgMjI2LCAKKyAgICA4OCwgNzgsIDc3LCA1LCAyMjIsIDI1NCwgMjI2LCA5LCA3OCwgNzcsIDUsIDIyMywgMjMzLCAyMDEsIDMxLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMjMxLCAyMDEsIDExNCwgNzgsIDc3LCA1LCAyMjMsIDIyOSwgMjAwLCAyMTYsIDc4LCA3NywgNSwgMjIzLCA1MSwgCisgICAgMjAxLCA1NywgNzgsIDc3LCA1LCAyMjMsIDU5LCAyMDEsIDY0LCA3OCwgNzcsIDUsIDIyMywgNjMsIDIwMCwgMjQ0LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTMyLCAyMDEsIDAsIDc4LCA3NywgNSwgMjIyLCAyMzksIDIwMCwgMjEyLCA3OCwgNzcsIDUsIDIyMywgCisgICAgMzQsIDIwMSwgNTUsIDc4LCA3NywgNSwgMjIzLCAxMTYsIDIwMCwgMjAwLCA3OCwgNzcsIDUsIDIyMywgMTI4LCAyMDAsIAorICAgIDIwMiwgNzgsIDc3LCA1LCAyMjMsIDM4LCAyMDAsIDIwMSwgNzgsIDc3LCA1LCAyMjMsIDIyNywgMjIxLCAxNjQsIDc4LCA3NywgCisgICAgNSwgMjIzLCAyMjUsIDIyMiwgMTgwLCA3OCwgNzcsIDUsIDIyMywgMjIzLCAyMjEsIDE0LCA3OCwgNzcsIDUsIDIyMywgMTE4LCAKKyAgICAyMjIsIDQwLCA3OCwgNzcsIDUsIDIyMywgODMsIDIyMSwgMTA2LCA3OCwgNzcsIDUsIDIyMywgMjMsIDIyMSwgMzgsIDc4LCAKKyAgICA3NywgNSwgMjIyLCAyNDQsIDIyMSwgMzIsIDc4LCA3NywgNSwgMjIzLCAyMjEsIDI0OCwgMTg4LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMjE4LCAyNDksIDEzNiwgNzgsIDc3LCA1LCAyMjMsIDIxNiwgMjQ4LCAzNiwgNzgsIDc3LCA1LCAyMjMsIDI3LCAyNDgsIAorICAgIDI1MiwgNzgsIDc3LCA1LCAyMjMsIDgwLCAyNDksIDgsIDc4LCA3NywgNSwgMjIzLCA3NCwgMjQ4LCAxMTEsIDc4LCA3NywgNSwgCisgICAgMjIzLCAzOSwgMjQ4LCAxMjQsIDc4LCA3NywgNSwgMjIzLCAyMDYsIDcwLCA3OCwgNzcsIDUsIDIyMywgMjA0LCA2MiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDIwMiwgNjYsIDc4LCA3NywgNSwgMjIzLCAxNCwgMjM4LCAyNTUsIDc4LCA3NywgNSwgMjIzLCA3NywgCisgICAgNzIsIDc4LCA3NywgNSwgMjIzLCAxMiwgMjE3LCA2MywgNzgsIDc3LCA1LCAyMjMsIDMwLCA3NCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDQwLCAyMzgsIDIzNCwgNzgsIDc3LCA1LCAyMjMsIDQ2LCAyMjgsIDExNywgNzgsIDc3LCA1LCAyMjMsIDQyLCAyMjgsIDExNywgCisgICAgNzgsIDc3LCA1LCAyMjIsIDIzOCwgMjUxLCA4NSwgNzgsIDc3LCA1LCAyMjIsIDI1NSwgMjM4LCAxNzksIDc4LCA3NywgNSwgCisgICAgMjIzLCAxOTEsIDIwOSwgMTgyLCA3OCwgNzcsIDUsIDIyMywgMTg5LCAyMTIsIDY0LCA3OCwgNzcsIDUsIDIyMywgMTg3LCAKKyAgICAyMDgsIDI0LCA3OCwgNzcsIDUsIDIyMywgMTUsIDIxMSwgMTkwLCA3OCwgNzcsIDUsIDIyMywgNjEsIDIxMSwgMjAyLCA3OCwgCisgICAgNzcsIDUsIDIyMywgNDEsIDIwOSwgMTAsIDc4LCA3NywgNSwgMjIzLCA5OCwgMjA5LCAyOSwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDIzNywgMjA5LCAxODEsIDc4LCA3NywgNSwgMjIzLCAxNzcsIDIyNCwgMjEwLCA3OCwgNzcsIDUsIDIyMywgMTc1LCAxOTQsIAorICAgIDc4LCA3NywgNSwgMjIzLCAxNzMsIDIyNCwgNDIsIDc4LCA3NywgNSwgMjIzLCA5MywgMjI1LCAzMiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDEwNCwgMjI1LCA0MCwgNzgsIDc3LCA1LCAyMjMsIDEyMywgMjI0LCA3OCwgNzgsIDc3LCA1LCAyMjMsIDI0LCAyMjQsIAorICAgIDExMCwgNzgsIDc3LCA1LCAyMjMsIDY3LCAxNjgsIDIyNSwgNDAsIDc4LCA3NywgNSwgMjIzLCAxOTksIDI0MSwgNzYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxOTYsIDI0MiwgNTgsIDc4LCA3NywgNSwgMjIzLCAxOTMsIDIzOSwgMTM3LCA3OCwgNzcsIDUsIDIyMywgCisgICAgODgsIDI0MSwgMTYxLCA3OCwgNzcsIDUsIDIyMiwgMjUzLCAyNDAsIDE4NywgNzgsIDc3LCA1LCAyMjIsIDI1MiwgMjQwLCAKKyAgICAyMTEsIDc4LCA3NywgNSwgMjIzLCAxODUsIDIwNiwgMTUsIDc4LCA3NywgNSwgMjIzLCAxODIsIDIwNywgMzYsIDc4LCA3NywgCisgICAgNSwgMjIzLCAxODAsIDIwNCwgMjE1LCA3OCwgNzcsIDUsIDIyMywgODYsIDIwNiwgMTkwLCA3OCwgNzcsIDUsIDIyMywgMTIyLCAKKyAgICAyMDYsIDIwMSwgNzgsIDc3LCA1LCAyMjMsIDczLCAyMDUsIDE2MSwgNzgsIDc3LCA1LCAyMjMsIDEwOCwgMTM4LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMTcxLCAyMjcsIDIwNywgNzgsIDc3LCA1LCAyMjMsIDE2OCwgMjI3LCAyNDgsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNjYsIDIyNywgMTQ3LCA3OCwgNzcsIDUsIDIyMywgMjAsIDIyNywgMjI1LCA3OCwgNzcsIDUsIDIyMywgNjQsIDIyNywgCisgICAgMjI3LCA3OCwgNzcsIDUsIDIyMywgMTcsIDIyNywgMTU2LCA3OCwgNzcsIDUsIDIyMywgMTE0LCAyMjcsIDE2NiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDIsIDE2OCwgMjI3LCAxNjYsIDc4LCA3NywgNSwgMjIzLCAxNjQsIDIwMCwgOSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE2MSwgMTgzLCA3OCwgNzcsIDUsIDIyMywgMTU5LCAxOTksIDIxMSwgNzgsIDc3LCA1LCAyMjMsIDY4LCAyMDAsIDQ4LCA3OCwgCisgICAgNzcsIDUsIDIyMywgOTcsIDIwMCwgNTEsIDc4LCA3NywgNSwgMjIzLCAzNiwgMTk5LCAyMzAsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA1NiwgMTk5LCAyNDUsIDc4LCA3NywgNSwgMjIzLCAxNTUsIDIzNywgMTEyLCA3OCwgNzcsIDUsIDIyMywgMTUzLCAyMzcsIAorICAgIDE5NSwgNzgsIDc3LCA1LCAyMjMsIDE1MSwgMjM2LCAxODksIDc4LCA3NywgNSwgMjIzLCA5OSwgMjM3LCAxNDAsIDc4LCA3NywgCisgICAgNSwgMjIzLCAxMDIsIDIzNywgMTQ3LCA3OCwgNzcsIDUsIDIyMywgNDQsIDIzNywgMiwgNzgsIDc3LCA1LCAyMjMsIDg5LCAKKyAgICAyMzcsIDEzLCA3OCwgNzcsIDUsIDIyMiwgMjM2LCAyMzYsIDE4OCwgNzgsIDc3LCA1LCAyMjMsIDc2LCAyMzcsIDE2OCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDE0OSwgMjE5LCAxMTgsIDc4LCA3NywgNSwgMjIzLCAxNDcsIDIyMCwgMTM0LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTQ1LCAyMTgsIDg5LCA3OCwgNzcsIDUsIDIyMywgNjAsIDIyMCwgMjQsIDc4LCA3NywgNSwgMjIzLCA4LCAyMTgsIDIzNCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDEsIDIzNCwgNzUsIDc4LCA3NywgNSwgMjIzLCAxNDAsIDE0NCwgNzgsIDc3LCA1LCAyMjIsIAorICAgIDI0NywgMjMzLCA5NywgNzgsIDc3LCA1LCAyMjMsIDE0MywgMjM0LCAxMjAsIDc4LCA3NywgNSwgMjIzLCA4MSwgMjM0LCAKKyAgICAxMzksIDc4LCA3NywgNSwgMjIzLCAxMzgsIDIzMywgMTg4LCA3OCwgNzcsIDUsIDIyMywgMzcsIDIzMywgMjA3LCA3OCwgNzcsIAorICAgIDUsIDIyMywgOTQsIDIzNCwgMTE5LCA3OCwgNzcsIDUsIDIyMywgNDksIDIzMywgMTgxLCA3OCwgNzcsIDUsIDIyMywgMTI0LCAKKyAgICAyMzQsIDUzLCA3OCwgNzcsIDUsIDIyMywgNDcsIDIzNCwgMjAyLCA3OCwgNzcsIDUsIDIyMywgOTAsIDIzMywgODQsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMjUsIDIzNCwgMTA1LCA3OCwgNzcsIDUsIDIyMiwgMjQwLCAyMzMsIDE5MSwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDEzMSwgMjMzLCA5NiwgNzgsIDc3LCA1LCAyMjMsIDg3LCAyMTksIDIxOCwgNzgsIDc3LCA1LCAyMjMsIDEzNiwgMjE5LCAKKyAgICAyMzIsIDc4LCA3NywgNSwgMjIzLCA5NSwgMjE5LCAyMTUsIDc4LCA3NywgNSwgMjIzLCA2MiwgMjE5LCAyMjYsIDc4LCA3NywgCisgICAgNSwgMjIzLCAzMSwgMjE5LCAyMjcsIDc4LCA3NywgNSwgMjIzLCAyMSwgMjE5LCAyMTYsIDc4LCA3NywgNSwgMjIzLCA1NywgCisgICAgMjE5LCAyMTcsIDc4LCA3NywgNSwgMjIzLCAxOCwgMjE5LCAyMzEsIDc4LCA3NywgNSwgMjIzLCA1MCwgMjE5LCAyMTQsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA5MSwgMTY4LCAyMTksIDIyNywgNzgsIDc3LCA1LCAyMjMsIDcxLCAxNjgsIDIxOSwgMjE2LCA3OCwgNzcsIAorICAgIDUsIDIyMiwgMjUwLCAxNjgsIDIxOSwgMjE3LCA3OCwgNzcsIDUsIDIyMywgMjIsIDIzNSwgMTYxLCA3OCwgNzcsIDUsIDIyMywgCisgICAgNjYsIDIzNiwgODksIDc4LCA3NywgNSwgMjIzLCA5LCAyMzUsIDUwLCA3OCwgNzcsIDUsIDIyMiwgMjQzLCAyMzYsIDcsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMSwgMjM1LCAzNiwgNzgsIDc3LCA1LCAyMjMsIDEwLCAyMzUsIDQ2LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjQ5LCAyMTksIDIzNywgNzgsIDc3LCA1LCAyMjMsIDEyMCwgMjE5LCAxNzQsIDc4LCA3NywgNSwgMjIzLCAwLCAyMTksIAorICAgIDE2MywgNzgsIDc3LCA1LCAyMjMsIDEwOSwgMjE1LCAyMDQsIDc4LCA3NywgNSwgMjIzLCA3OCwgMTcyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTI3LCAyMTQsIDIyNCwgNzgsIDc3LCA1LCAyMjMsIDk2LCAyMTYsIDYxLCA3OCwgNzcsIDUsIDIyMywgMTI2LCAKKyAgICAyMTYsIDczLCA3OCwgNzcsIDUsIDIyMywgNzUsIDIxNSwgODEsIDc4LCA3NywgNSwgMjIzLCAxMTEsIDIxNSwgMTA2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMzIsIDIyMiwgOTUsIDc4LCA3NywgNSwgMjIzLCAxMTUsIDIyMiwgMTEwLCA3OCwgNzcsIDUsIDIyMywgCisgICAgNTUsIDIyMiwgODksIDc4LCA3NywgNSwgMjIzLCAxMzAsIDIyMiwgMTAyLCA3OCwgNzcsIDUsIDIyMiwgMjQ1LCAyMjIsIAorICAgIDEwMiwgNzgsIDc3LCA1LCAyMjMsIDEwNSwgMjIyLCAxMDMsIDc4LCA3NywgNSwgMjIzLCA1LCAyMjIsIDkwLCA3OCwgNzcsIAorICAgIDUsIDIyMywgMywgMjIyLCA5MSwgNzgsIDc3LCA1LCAyMjIsIDI0NiwgMjIyLCA4MywgNzgsIDc3LCA1LCAyMjMsIDE2LCAKKyAgICAxNjgsIDIyMiwgMTAzLCA3OCwgNzcsIDUsIDIyMywgNzIsIDE2OCwgMjIyLCA5MCwgNzgsIDc3LCA1LCAyMjMsIDM1LCAxNjgsIAorICAgIDIyMiwgOTEsIDc4LCA3NywgNSwgMjIzLCA0NSwgMjI2LCA0MiwgNzgsIDc3LCA1LCAyMjMsIDg1LCAyMjYsIDUwLCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTAzLCAyMjYsIDM4LCA3OCwgNzcsIDUsIDIyMywgMTM0LCAyMjYsIDQ1LCA3OCwgNzcsIDUsIDIyMywgCisgICAgNjksIDIyNiwgNDYsIDc4LCA3NywgNSwgMjIzLCA2NSwgMjI2LCA0MCwgNzgsIDc3LCA1LCAyMjMsIDE5LCAyMjYsIDQxLCAKKyAgICA3OCwgNzcsIDUsIDIyMywgNTMsIDIzNiwgMjQsIDc4LCA3NywgNSwgMjIzLCAxMjEsIDIzNiwgMzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAyOSwgMjM2LCAxOSwgNzgsIDc3LCA1LCAyMjMsIDg0LCAyMzYsIDI4LCA3OCwgNzcsIDUsIDIyMywgNzAsIDIzNiwgCisgICAgMjksIDc4LCA3NywgNSwgMjIzLCAxMDYsIDIzNiwgMjAsIDc4LCA3NywgNSwgMjIzLCAxMDcsIDIzNiwgMjIsIDc4LCA3NywgCisgICAgNSwgMjIzLCA2LCAyMTMsIDI1MiwgNzgsIDc3LCA1LCAyMjMsIDU0LCAyMjAsIDYwLCA3OCwgNzcsIDUsIDIyMywgNDgsIAorICAgIDIyMCwgNzUsIDc4LCA3NywgNSwgMjIzLCA1MiwgMjIwLCA0MiwgNzgsIDc3LCA1LCAyMjIsIDI0MiwgMjIwLCA2NiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDU4LCAyMjAsIDY3LCA3OCwgNzcsIDUsIDIyMywgMTEwLCAyMjAsIDQ3LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTEzLCAyMjAsIDUxLCA3OCwgNzcsIDUsIDIyMywgMjUsIDIxOSwgOTgsIDc4LCA3NywgNSwgMjIyLCAyNDEsIDIxOSwgNjgsIAorICAgIDc4LCA3NywgNSwgMjIzLCAyOCwgMjE5LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDQzLCAyMTksIDcyLCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjUxLCAyMDIsIDIzNCwgNzgsIDc3LCA1LCAyMjIsIDI0OCwgMjAzLCA5MCwgNzgsIDc3LCA1LCAyMjMsIDI2LCAyMDEsIAorICAgIDE2NiwgNzgsIDc3LCA1LCAyMjMsIDQsIDIwMywgNTQsIDc4LCA3NywgNSwgMjIzLCA5MiwgMjAzLCA1OSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDMzLCAyMDIsIDE3OSwgNzgsIDc3LCA1LCAyMjMsIDEwMCwgMjAyLCAxOTMsIDc4LCA3NywgNSwgMjIzLCAxMywgCisgICAgMjE4LCAzNSwgNzgsIDc3LCA1LCAyMjMsIDExOSwgMjE4LCA1NCwgNzgsIDc3LCA1LCAyMjMsIDcsIDIxOCwgMTcsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA3OSwgMjE4LCA0NiwgNzgsIDc3LCA1LCAyMjMsIDExNywgMjE4LCAyNCwgNzgsIDc3LCAxNywgMTAyLCAKKyAgICA3OCwgNzcsIDE3LCAxMDUsIDc4LCA3NywgMTcsIDE0NywgNzgsIDc3LCAxNywgMTQ5LCA3OCwgNzcsIDE3LCAxNjQsIDc4LCAKKyAgICA3NywgMTcsIDE4NywgNzgsIDc3LCAxNywgMjEwLCAxMzUsIDc4LCA3NywgMTcsIDE5MiwgNzgsIDc3LCAxNywgMjE5LCAxMTMsIAorICAgIDc4LCA3NywgMzgsIDQxLCAyMDYsIDE4OCwgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTYxLCA3OCwgNzcsIDM4LCA0MSwgMjMzLCAKKyAgICA4MCwgNzgsIDc3LCAzOCwgNDEsIDIwNiwgNDgsIDc4LCA3NywgMzgsIDQxLCAyMDYsIDE2NywgMjA2LCA0OCwgNzgsIDc3LCAKKyAgICAzOCwgNDEsIDIzMywgODMsIDIwNiwgNDgsIDc4LCA3NywgMzgsIDQxLCAyMjEsIDE2NywgMjUxLCAyMjcsIDYsIDEsIDI1MSwgCisgICAgMTMwLCAyNTEsIDIyNywgNiwgMSwgMjQyLCA1NSwgMjUxLCAyMjcsIDYsIDEsIDIyNSwgMTczLCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjIxLCAxODAsIDI1MSwgMjI3LCA2LCAxLCAyNDksIDEzNiwgMjUxLCAyMjcsIDYsIDEsIDIwOSwgMTMzLCAyNTEsIDIyNywgCisgICAgNiwgMSwgMjE2LCA3MywgMjUxLCAyMjcsIDYsIDEsIDI0OCwgMTk2LCAyNTEsIDIyNywgNiwgMSwgMjEzLCAyNTIsIDI1MSwgCisgICAgMjI3LCA2LCAxLCA3MiwgMjUxLCAyMjcsIDYsIDEsIDIzNywgMTk1LCAyNTEsIDIyNywgNiwgMSwgNzAsIDI1MSwgMjI3LCA2LCAKKyAgICAxLCA3NCwgMjUxLCAyMjcsIDYsIDEsIDI0MSwgMTAwLCAyNTEsIDIyNywgNiwgMSwgMjAwLCAxMCwgMjUxLCAyMjcsIDYsIDEsIAorICAgIDIwMSwgNzIsIDI1MSwgMjI3LCA2LCAxLCAyMTgsIDg5LCAyNTEsIDIyNywgNiwgMSwgMjI3LCA4NiwgMjUxLCAyMjcsIDYsIAorICAgIDEsIDE4MywgMjUxLCAyMjcsIDYsIDEsIDY2LCAyNTEsIDIyNywgNiwgMSwgMjI3LCAxOTksIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyNDYsIDIzNiwgMjUxLCAyMjcsIDYsIDEsIDE0NCwgMjUxLCAyMjcsIDYsIDEsIDIxNCwgMTU3LCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjM2LCA4OSwgMjUxLCAyMjcsIDYsIDEsIDIxOCwgNjAsIDI1MSwgMjI3LCA2LCAxLCAyMDQsIDIxNSwgMjUxLCAyMjcsIDYsIAorICAgIDEsIDIxOSwgMTU0LCAyNTEsIDIyNywgNiwgMSwgMjAzLCA5MCwgMjUxLCAyMjcsIDYsIDEsIDIyNiwgMjA3LCAyNTEsIDIyNywgCisgICAgNiwgMSwgMjM2LCAyOSwgMjUxLCAyMjcsIDYsIDEsIDE5OSwgMTAzLCAyNTEsIDIyNywgNiwgMSwgMjI2LCA0MSwgMjUxLCAKKyAgICAyMjcsIDYsIDEsIDIxMCwgMTE0LCAyNTEsIDIyNywgNCwgMSwgMjUxLCAxMzAsIDI1MSwgMjI3LCA0LCAxLCAyNDIsIDU1LCAKKyAgICAyNTEsIDIyNywgNCwgMSwgMjI1LCAxNzMsIDI1MSwgMjI3LCA0LCAxLCAyMjEsIDE4MCwgMjUxLCAyMjcsIDQsIDEsIDI0OSwgCisgICAgMTM2LCAyNTEsIDIyNywgNCwgMSwgMjA5LCAxMzMsIDI1MSwgMjI3LCA0LCAxLCAyMTYsIDczLCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjQ4LCAxOTYsIDI1MSwgMjI3LCA0LCAxLCAyMTMsIDI1MiwgMjUxLCAyMjcsIDQsIDEsIDcyLCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjM3LCAxOTUsIDI1MSwgMjI3LCA0LCAxLCA3MCwgMjUxLCAyMjcsIDQsIDEsIDc0LCAyNTEsIDIyNywgNCwgMSwgMjQxLCAKKyAgICAxMDAsIDI1MSwgMjI3LCA0LCAxLCAyMDAsIDEwLCAyNTEsIDIyNywgNCwgMSwgMjAxLCA3MiwgMjUxLCAyMjcsIDQsIDEsIAorICAgIDIxOCwgODksIDI1MSwgMjI3LCA0LCAxLCAyMjcsIDg2LCAyNTEsIDIyNywgNCwgMSwgMTgzLCAyNTEsIDIyNywgNCwgMSwgCisgICAgNjYsIDI1MSwgMjI3LCA0LCAxLCAyMjcsIDE5OSwgMjUxLCAyMjcsIDQsIDEsIDI0NiwgMjM2LCAyNTEsIDIyNywgNCwgMSwgCisgICAgMTQ0LCAyNTEsIDIyNywgNCwgMSwgMjE0LCAxNTcsIDI1MSwgMjI3LCA0LCAxLCAyMzYsIDg5LCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjE4LCA2MCwgMjUxLCAyMjcsIDQsIDEsIDIwNCwgMjE1LCAyNTEsIDIyNywgNCwgMSwgMjE5LCAxNTQsIDI1MSwgMjI3LCA0LCAKKyAgICAxLCAyMDMsIDkwLCAyNTEsIDIyNywgNCwgMSwgMjI2LCAyMDcsIDI1MSwgMjI3LCA0LCAxLCAyMzYsIDI5LCAyNTEsIDIyNywgCisgICAgNCwgMSwgMTk5LCAxMDMsIDI1MSwgMjI3LCA0LCAxLCAyMjYsIDQxLCAyNTEsIDIyNywgNCwgMSwgMjEwLCAxMTQsIDI1MSwgCisgICAgMjI3LCAyNTEsIDEzMSwgMjI0LCAyNTAsIDI1MSwgMjI3LCAyMiwgMjI0LCAyNTAsIDI1MSwgMjI3LCAyMzYsIDMsIDgxLCAKKyAgICAyNTEsIDIyNywgMjM0LCAyMDMsIDI1MSwgMjI3LCAxMTEsIDIyMSwgMTI2LCAyNTEsIDIyNywgMjM2LCA0LCAxMTEsIDIyMSwgCisgICAgMTI2LCAyNTEsIDIyNywgMjE4LCAxMDAsIDI1MSwgMjI3LCAxNywgMTk5LCA4MSwgMjUxLCAyMjcsIDE3LCAxMDIsIDI1MSwgCisgICAgMjI3LCAxNywgMTA1LCAyNTEsIDIyNywgMTcsIDE0NywgMjUxLCAyMjcsIDE3LCAxNDksIDI1MSwgMjI3LCAxNywgMTY0LCAKKyAgICAyNTEsIDIyNywgMTcsIDE4NywgMjUxLCAyMjcsIDE3LCAyMTAsIDEzNSwgMjUxLCAyMjcsIDE3LCAxOTIsIDI1MSwgMjI3LCAKKyAgICAxNywgMjE5LCAxMTMsIDI1MSwgMjI3LCA4MiwgMjM4LCA0MywgODEsIDI1MSwgMjI3LCA4MiwgMjE0LCA3OSwgODEsIDksIAorICAgIDEzLCAyNTEsIDE0MiwgOSwgMTMsIDI0OCwgMjQwLCA5LCAxMywgMjI3LCAyMjQsIDksIDEzLCAyNDIsIDI5LCA5LCAxMywgCisgICAgMjAxLCA3MiwgOSwgMTMsIDE5OSwgMTA1LCA5LCAxMywgMjM0LCAyMjQsIDksIDEzLCAyMDcsIDksIDksIDEzLCAyMDAsIDQ2LCAKKyAgICA5LCAxMywgMjI3LCA4NiwgOSwgMTMsIDIyNSwgOTEsIDksIDEzLCAyMjIsIDYxLCA5LCAxMywgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyMTEsIDE4NiwgOSwgMTMsIDI1MSwgMTcxLCA5LCAxMywgMjM3LCAxMzQsIDksIDEzLCAyMTIsIDU2LCA5LCAxMywgMjE0LCAKKyAgICAxNTIsIDksIDEzLCAyMTMsIDE1NCwgOSwgMTMsIDIxMCwgNjEsIDksIDEzLCAyMDYsIDE4MywgOSwgMTMsIDIwNiwgMTAyLCAKKyAgICA5LCAxMywgMjI2LCAyMDMsIDksIDEzLCAyMDYsIDExNCwgOSwgMTMsIDI0MiwgNTIsIDksIDEzLCAxOTksIDEwOCwgOSwgMTMsIAorICAgIDIzNSwgMTk0LCA5LCAxMywgMjQwLCAxODEsIDI0OCwgMjQwLCA5LCAxMywgMjQwLCAxODEsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjQwLCAxODEsIDIzNywgMTM0LCA5LCAxMywgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxMywgODIsIDI0OCwgMjQwLCA5LCAKKyAgICAxMywgODIsIDIyNywgMjI0LCA5LCAxMywgODIsIDIzNCwgMTE1LCA5LCAxMywgODIsIDIzNCwgMjI0LCA5LCAxMywgODIsIAorICAgIDIwMCwgNDYsIDksIDEzLCA4MiwgMjI3LCA4NiwgOSwgMTMsIDgyLCAyMjUsIDkxLCA5LCAxMywgODIsIDIyMiwgNjEsIDksIAorICAgIDEzLCA4MiwgMjE4LCAyMjcsIDksIDEzLCA4MiwgMjExLCAxODYsIDksIDEzLCA4MiwgMjUxLCAxNzEsIDksIDEzLCA4MiwgCisgICAgMjM3LCAxMzQsIDksIDEzLCA4MiwgMjEyLCA1NiwgOSwgMTMsIDgyLCAyMTQsIDE1MiwgOSwgMTMsIDgyLCAyMTAsIDYxLCA5LCAKKyAgICAxMywgODIsIDIwNiwgMTgzLCA5LCAxMywgODIsIDIwNiwgMTAyLCA5LCAxMywgODIsIDIyNiwgMjAzLCA5LCAxMywgODIsIAorICAgIDI0MiwgNTIsIDksIDEzLCA4MiwgMjM1LCAxOTQsIDksIDEzLCAyMDcsIDUsIDIyNywgMjI0LCA5LCAxMywgMjA3LCA1LCAKKyAgICAyMzQsIDIyNCwgOSwgMTMsIDIwNywgNSwgMjAwLCA0NiwgOSwgMTMsIDIwNywgNSwgMjI1LCA5MSwgOSwgMTMsIDIwNywgNSwgCisgICAgMjE4LCAyMjcsIDksIDEzLCAyMDcsIDUsIDIxMSwgMTg2LCA5LCAxMywgMjA3LCA1LCAyNTEsIDE3MSwgOSwgMTMsIDIwNywgCisgICAgNSwgMjEyLCA1NiwgOSwgMTMsIDIwNywgNSwgMjE0LCAxNTIsIDksIDEzLCAyMDcsIDUsIDIxMCwgNjEsIDksIDEzLCAyMDcsIAorICAgIDUsIDIyNiwgMjAzLCA5LCAxMywgMjA3LCA1LCAyNDIsIDUyLCA5LCAxMywgMjA3LCA1LCAyMzUsIDE5NCwgOSwgMTMsIDIwNywgCisgICAgNSwgMjQwLCAxODEsIDIxOCwgMjI3LCA5LCAxMywgMjA3LCA1LCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyNDgsIDI0MCwgOSwgMTMsIDIwOCwgNTUsIDIyNywgMjI0LCA5LCAxMywgMjA4LCA1NSwgMjM0LCAxMTUsIDksIDEzLCAyMDgsIAorICAgIDU1LCAyMzQsIDIyNCwgOSwgMTMsIDIwOCwgNTUsIDIwNywgOSwgOSwgMTMsIDIwOCwgNTUsIDIwMCwgNDYsIDksIDEzLCAKKyAgICAyMDgsIDU1LCAyMjcsIDg2LCA5LCAxMywgMjA4LCA1NSwgMjIyLCA2MSwgOSwgMTMsIDIwOCwgNTUsIDIxOCwgMjI3LCA5LCAKKyAgICAxMywgMjA4LCA1NSwgMjExLCAxODYsIDksIDEzLCAyMDgsIDU1LCAyNTEsIDE3MSwgOSwgMTMsIDIwOCwgNTUsIDIzNywgCisgICAgMTM0LCA5LCAxMywgMjA4LCA1NSwgMjEyLCA1NiwgOSwgMTMsIDIwOCwgNTUsIDIxNCwgMTUyLCA5LCAxMywgMjA4LCA1NSwgCisgICAgMjEwLCA2MSwgOSwgMTMsIDIwOCwgNTUsIDIwNiwgMTgzLCA5LCAxMywgMjA4LCA1NSwgMjA2LCAxMDIsIDksIDEzLCAyMDgsIAorICAgIDU1LCAyMjYsIDIwMywgOSwgMTMsIDIwOCwgNTUsIDI0MiwgNTIsIDksIDEzLCAyMDgsIDU1LCAxOTksIDEwOCwgOSwgMTMsIAorICAgIDIwOCwgNTUsIDIzNSwgMTk0LCA5LCAxMywgMjA4LCA1NSwgMjQwLCAxODEsIDI0OCwgMjQwLCA5LCAxMywgMjA4LCA1NSwgCisgICAgMjQwLCAxODEsIDIzNywgMTM0LCA5LCAxMywgMjI0LCA3MywgMjUxLCAxNDIsIDksIDEzLCAyMjQsIDczLCAyNDgsIDI0MCwgCisgICAgOSwgMTMsIDIyNCwgNzMsIDIyNywgMjI0LCA5LCAxMywgMjI0LCA3MywgMjQyLCAyOSwgOSwgMTMsIDIyNCwgNzMsIDIzNCwgCisgICAgMTE1LCA5LCAxMywgMjI0LCA3MywgMjAxLCA3MiwgOSwgMTMsIDIyNCwgNzMsIDE5OSwgMTA1LCA5LCAxMywgMjI0LCA3MywgCisgICAgMjM0LCAyMjQsIDksIDEzLCAyMjQsIDczLCAyMDcsIDksIDksIDEzLCAyMjQsIDczLCAyMDAsIDQ2LCA5LCAxMywgMjI0LCAKKyAgICA3MywgMjI1LCA5MSwgOSwgMTMsIDIyNCwgNzMsIDIyMiwgNjEsIDksIDEzLCAyMjQsIDczLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDIyNCwgNzMsIDIxMSwgMTg2LCA5LCAxMywgMjI0LCA3MywgMjUxLCAxNzEsIDksIDEzLCAyMjQsIDczLCAyMzcsIDEzNCwgOSwgCisgICAgMTMsIDIyNCwgNzMsIDIxMiwgNTYsIDksIDEzLCAyMjQsIDczLCAyMTQsIDE1MiwgOSwgMTMsIDIyNCwgNzMsIDIxMywgMTU0LCAKKyAgICA5LCAxMywgMjI0LCA3MywgMjEwLCA2MSwgOSwgMTMsIDIyNCwgNzMsIDIwNiwgMTgzLCA5LCAxMywgMjI0LCA3MywgMjA2LCAKKyAgICAxMDIsIDksIDEzLCAyMjQsIDczLCAyMjYsIDIwMywgOSwgMTMsIDIyNCwgNzMsIDIwNiwgMTE0LCA5LCAxMywgMjI0LCA3MywgCisgICAgMjQyLCA1MiwgOSwgMTMsIDIyNCwgNzMsIDE5OSwgMTA4LCA5LCAxMywgMjI0LCA3MywgMjM1LCAxOTQsIDksIDEzLCAxNzUsIAorICAgIDI0OCwgMjQwLCA5LCAxMywgMTc1LCAyMjcsIDIyNCwgOSwgMTMsIDE3NSwgMjQyLCAyOSwgOSwgMTMsIDE3NSwgMjAxLCA3MiwgCisgICAgOSwgMTMsIDE3NSwgMTk5LCAxMDUsIDksIDEzLCAxNzUsIDIzNCwgMjI0LCA5LCAxMywgMTc1LCAyMDcsIDksIDksIDEzLCAKKyAgICAxNzUsIDIwMCwgNDYsIDksIDEzLCAxNzUsIDIyNSwgOTEsIDksIDEzLCAxNzUsIDIyMiwgNjEsIDksIDEzLCAxNzUsIDIxOCwgCisgICAgMjI3LCA5LCAxMywgMTc1LCAyMTEsIDE4NiwgOSwgMTMsIDE3NSwgMjUxLCAxNzEsIDksIDEzLCAxNzUsIDIzNywgMTM0LCA5LCAKKyAgICAxMywgMTc1LCAyMTIsIDU2LCA5LCAxMywgMTc1LCAyMTQsIDE1MiwgOSwgMTMsIDE3NSwgMjEzLCAxNTQsIDksIDEzLCAxNzUsIAorICAgIDIxMCwgNjEsIDksIDEzLCAxNzUsIDIwNiwgMTgzLCA5LCAxMywgMTc1LCAyMDYsIDEwMiwgOSwgMTMsIDE3NSwgMjI2LCAKKyAgICAyMDMsIDksIDEzLCAxNzUsIDIwNiwgMTE0LCA5LCAxMywgMTc1LCAyNDIsIDUyLCA5LCAxMywgMTc1LCAxOTksIDEwOCwgOSwgCisgICAgMTMsIDE3NSwgMjM1LCAxOTQsIDksIDEzLCAyMTcsIDQ0LCA4NCwgMywgMTU1LCAzLCAyMDYsIDIyMywgOSwgMTMsIDIxNywgCisgICAgNDQsIDE1NSwgMywgMjQyLCAyOSwgMjIyLCAyMDAsIDEwMywgMjM5LCAxNCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMjA4LCAKKyAgICAyNTQsIDIwMSwgMTYsIDIyMiwgMjAwLCAxMDMsIDIwMSwgNDgsIDIwMSwgMTYsIDIyMiwgMjAwLCAxMDMsIDE1NywgMjAxLCAKKyAgICAxNiwgMjIyLCAyMDAsIDEwMywgMjEzLCAxNzAsIDIzOSwgMTU4LCAyMjIsIDIwMCwgMTAzLCAyMzUsIDY0LCAyMzksIDE1OCwgCisgICAgMjIyLCAyMDAsIDEwMywgNjQsIDIzOSwgMTU4LCAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgCisgICAgMTAzLCAxMjAsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAxMjYsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAKKyAgICAyMzYsIDIyOSwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDIzNywgNjEsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgCisgICAgMTAzLCAyMDksIDEwNiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgMjQ3LCAxOSwgMjIyLCAKKyAgICAyMDAsIDEwMywgMjM4LCAyMzIsIDc2LCAyNDcsIDE5LCAyMjIsIDIwMCwgMTAzLCAyMTksIDExNCwgNzYsIDI0NywgMTksIAorICAgIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDEyMCwgNzYsIDI0OSwgODksIDIyMiwgCisgICAgMjAwLCAxMDMsIDEyNiwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDIzNiwgMjI5LCA3NiwgMjQ5LCA4OSwgMjIyLCAKKyAgICAyMDAsIDEwMywgMjM3LCA2MSwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ5LCA4OSwgCisgICAgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAyMzgsIDIzMiwgNzYsIDI0OSwgCisgICAgODksIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ2LCAKKyAgICAxNTIsIDIyMiwgMjAwLCAxMDMsIDEyMCwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAxMjYsIDc2LCAyNDYsIDE1MiwgCisgICAgMjIyLCAyMDAsIDEwMywgMjM2LCAyMjksIDc2LCAyNDYsIDE1MiwgMjIyLCAyMDAsIDEwMywgMjM3LCA2MSwgNzYsIDI0NiwgCisgICAgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMDksIDEwNiwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIAorICAgIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMzgsIDIzMiwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMTksIDExNCwgCisgICAgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMTUsIDExNiwgMjIyLCAyMDAsIDEwMywgMjE3LCAzMSwgMjIyLCAyMDAsIAorICAgIDEwMywgMjQ5LCA5MCwgMjIyLCAyMDAsIDEwMywgMjQ2LCAxOTMsIDIyMiwgMjAwLCAxMDMsIDIwOCwgMTk5LCAyMjIsIDIwMCwgCisgICAgMTAzLCAyMDcsIDIzMCwgMjIyLCAyMDAsIDEwMywgMjUwLCAxMjYsIDIyMiwgMjAwLCAxMDMsIDIwMSwgNywgMjIyLCAyMDAsIAorICAgIDEwMywgMjI3LCAxNTksIDIyMiwgMjAwLCAxMDMsIDI0OSwgMTI5LCAxNjYsIDEwMywgMjMzLCAxNzcsIDI0OSwgMTI5LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNzUsIDE2NiwgMTAzLCAyMzMsIDE3NCwgMTY2LCAxMDMsIDIzMywgMTczLCAxNjYsIDEwMywgCisgICAgMjMzLCAxNzIsIDE2NiwgMTAzLCAyMzMsIDE3MSwgMTY2LCAxMDMsIDIzMywgMTcwLCAxNjYsIDEwMywgMjMzLCAxNjksIAorICAgIDE2NiwgMTAzLCAyMzMsIDE2OCwgMTY2LCAxMDMsIDIzMywgMTY3LCAxNjYsIDEwMywgMjMzLCAxNjYsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE2NSwgMTY2LCAxMDMsIDIzMywgMTY0LCAxNjYsIDEwMywgMjMzLCAxNjMsIDE2NiwgMTAzLCAyMzMsIDE2MiwgCisgICAgMTY2LCAxMDMsIDIzMywgMTYxLCAxNjYsIDEwMywgMjMzLCAxNjAsIDE2NiwgMTAzLCAyMzMsIDE1OSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTU4LCAxNjYsIDEwMywgMjMzLCAxNTcsIDE2NiwgMTAzLCAyMzMsIDE1NiwgMTY2LCAxMDMsIDIzMywgMTU1LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNTQsIDE2NiwgMTAzLCAyMzMsIDE1MywgMTY2LCAxMDMsIDIzMywgMTUyLCAxNjYsIDEwMywgCisgICAgMjMzLCAxNTEsIDE2NiwgMTAzLCAyMzMsIDE1MCwgMTY2LCAxMDMsIDIzMywgMTQ5LCAxNjYsIDEwMywgMjMzLCAxNDgsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE0NywgMTY2LCAxMDMsIDIzMywgMTQ2LCAxNjYsIDEwMywgMjMzLCAxNDUsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE0NCwgMTY2LCAxMDMsIDIzMywgMTQzLCAxNjYsIDEwMywgMjMzLCAxNDIsIDE2NiwgMTAzLCAyMzMsIDE0MSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTQwLCAxNjYsIDEwMywgMjMzLCAxMzksIDE2NiwgMTAzLCAyMzMsIDEzOCwgMTY2LCAxMDMsIAorICAgIDIzMywgMTM3LCAxNjYsIDEwMywgMjMzLCAxMzYsIDE2NiwgMTAzLCAyMzMsIDEzNSwgMTY2LCAxMDMsIDIzMywgMTM0LCAKKyAgICAxNjYsIDEwMywgMjMzLCAxMzMsIDE2NiwgMTAzLCAyMzMsIDEzMiwgMTY2LCAxMDMsIDIzMywgMTMxLCAxNjYsIDEwMywgCisgICAgMjMzLCAxMzAsIDE2NiwgMTAzLCAyMzMsIDEyOSwgMTY2LCAxMDMsIDIzMywgMTI4LCAxNjYsIDEwMywgMjMzLCAxMjcsIAorICAgIDE2NiwgMTAzLCA4MywgMjQ5LCAxMjksIDE2NiwgMTAzLCAyMDMsIDQxLCAxNjYsIDEwMywgMjAzLCA0MCwgMTY2LCAxMDMsIAorICAgIDIwMywgMzksIDE2NiwgMTAzLCAyMDMsIDM4LCAxNjYsIDEwMywgMjAzLCAzNywgMTY2LCAxMDMsIDIwMywgMzYsIDE2NiwgCisgICAgMTAzLCAyMDMsIDM1LCAxNjYsIDEwMywgMjAzLCAzNCwgMTY2LCAxMDMsIDIwMywgMzMsIDE2NiwgMTAzLCAyMDMsIDMyLCAKKyAgICAxNjYsIDEwMywgMjAzLCAzMSwgMTY2LCAxMDMsIDIwMywgMzAsIDE2NiwgMTAzLCAyMDMsIDI5LCAxNjYsIDEwMywgMjAzLCAKKyAgICAyOCwgMTY2LCAxMDMsIDIwMywgMjcsIDE2NiwgMTAzLCAyMDMsIDI2LCAxNjYsIDEwMywgMjAzLCAyNSwgMTY2LCAxMDMsIAorICAgIDIwMywgMjQsIDE2NiwgMTAzLCAyMDMsIDIzLCAxNjYsIDEwMywgMjAzLCAyMiwgMTY2LCAxMDMsIDIwMywgMjEsIDE2NiwgCisgICAgMTAzLCAyMDMsIDIwLCAxNjYsIDEwMywgMjAzLCAxOSwgMTY2LCAxMDMsIDIwMywgMTgsIDE2NiwgMTAzLCAyMDMsIDE3LCAKKyAgICAxNjYsIDEwMywgMjAzLCAxNiwgMTY2LCAxMDMsIDIwMywgMTUsIDE2NiwgMTAzLCAyMDMsIDE0LCAxNjYsIDEwMywgMjAzLCAKKyAgICAxMywgMTY2LCAxMDMsIDIwMywgMTIsIDE2NiwgMTAzLCAyMDMsIDExLCAxNjYsIDEwMywgMjAzLCAxMCwgMTY2LCAxMDMsIAorICAgIDIwMywgOSwgMTY2LCAxMDMsIDIwMywgOCwgMTY2LCAxMDMsIDIwMywgNywgMTY2LCAxMDMsIDIwMywgNiwgMTY2LCAxMDMsIAorICAgIDIwMywgNSwgMTY2LCAxMDMsIDIwMywgNCwgMTY2LCAxMDMsIDIwMywgMywgMTY2LCAxMDMsIDIwMywgMiwgMTY2LCAxMDMsIAorICAgIDIwMywgMSwgMTY2LCAxMDMsIDIwMywgMCwgMTY2LCAxMDMsIDIwMiwgMjU1LCAxNjYsIDEwMywgMjAyLCAyNTQsIDE2NiwgCisgICAgMTAzLCAyMDIsIDI1MywgMTY2LCAxMDMsIDIwMiwgMjUyLCAxNjYsIDEwMywgMjAyLCAyNTEsIDE2NiwgMTAzLCAyMDIsIAorICAgIDI1MCwgMTY2LCAxMDMsIDIwMiwgMjQ5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDI0OSwgMTI5LCAyMTUsIDEyNSwgMjQ3LCAKKyAgICAxMzQsIDI1MSwgMjQ1LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCA3NiwgMjA4LCAyNDEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMTI2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM2LCAyMjksIDc2LCAyMDgsIAorICAgIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA5LCAKKyAgICAxMDYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIzOCwgMjMyLCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAyMDgsIAorICAgIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNywgCisgICAgMjQ2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIxNCwgODEsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDE0NSwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDI1MSwgMjQ1LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCAKKyAgICA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTI2LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjM2LCAyMjksIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjM0LCAxMjUsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA5LCAxMDYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIAorICAgIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzOCwgMjMyLCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjE5LCAxMTQsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDIzNCwgMTI1LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIyNywgMjQ2LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIAorICAgIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxNCwgODEsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMjYsIDE0NSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMywgMTcwLCAyMjcsIDE1OSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyNTEsIDI0NSwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMTIwLCA3NiwgMjQxLCA2MywgCisgICAgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNiwgMjI5LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDYxLCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDksIDEwNiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEwLCAxMzYsIDc2LCAyNDEsIDYzLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIzOCwgMjMyLCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIAorICAgIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA2LCAxNjcsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIyNywgMjQ2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjQxLCA2MywgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMTQsIDgxLCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDE0NSwgNzYsIAorICAgIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgNjMsIDIyNywgMTU5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDI1MSwgMjQ1LCAKKyAgICA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDEyNiwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM2LCAyMjksIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwOSwgMTA2LCA3NiwgMjQ2LCAKKyAgICA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM4LCAKKyAgICAyMzIsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI3LCAyNDYsIDc2LCAyNDYsIAorICAgIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxNCwgCisgICAgODEsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIAorICAgIDI0NywgMTM0LCA2NCwgMjI3LCAxNTksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM3LCAwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNjAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ2LCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDQzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDIsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDQwLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTksIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA1OCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU3LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTYsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDU0LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNTMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MiwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDUxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0OCwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDQ3LCAxNywgMTk5LCA4MiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxOTksIDgyLCAyNDYsIDcwLCAxNywgMTEyLCAKKyAgICAyNDYsIDcwLCAxNywgMTIwLCAyNDYsIDcwLCAxNywgMTI2LCAyNDYsIDcwLCAxNywgMjM2LCAyMjksIDI0NiwgNzAsIDE3LCAKKyAgICAyMzcsIDYxLCAyNDYsIDcwLCAxNywgMjA5LCAxMDYsIDI0NiwgNzAsIDE3LCAyMTAsIDEzNiwgMjQ2LCA3MCwgMTcsIDIzOCwgCisgICAgMjMyLCAyNDYsIDcwLCAxNywgMjE5LCAxMTQsIDI0NiwgNzAsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE5OSwgODEsIDI0MSwgCisgICAgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTk5LCA4MSwgMTA2LCA4LCA2LCAxLCA2MiwgMTA2LCA4LCA2LCAxLCAyNTAsIDEwMywgCisgICAgMTA2LCA4LCA2LCAxLCAyNDcsIDIyMywgMTA2LCA4LCA2LCAxLCAyNDIsIDE1MywgMTA2LCA4LCA2LCAxLCA3MiwgMTA2LCA4LCAKKyAgICA2LCAxLCAyMzgsIDUsIDEwNiwgOCwgNiwgMSwgMjM2LCAxNTYsIDEwNiwgOCwgNiwgMSwgMjM0LCAyNDcsIDEwNiwgOCwgNiwgCisgICAgMSwgNzAsIDEwNiwgOCwgNiwgMSwgMjI3LCAyNTEsIDEwNiwgOCwgNiwgMSwgMjI3LCAxMTgsIDEwNiwgOCwgNiwgMSwgMTU2LCAKKyAgICAxMDYsIDgsIDYsIDEsIDIyMywgMjQzLCAxMDYsIDgsIDYsIDEsIDIyMCwgMjE0LCAxMDYsIDgsIDYsIDEsIDc0LCAxMDYsIDgsIAorICAgIDYsIDEsIDIxNiwgMjI2LCAxMDYsIDgsIDYsIDEsIDIxNCwgMTY3LCAxMDYsIDgsIDYsIDEsIDE0NiwgMTA2LCA4LCA2LCAxLCAKKyAgICAyMTIsIDEyMiwgMTA2LCA4LCA2LCAxLCAyMDcsIDgzLCAxMDYsIDgsIDYsIDEsIDY2LCAxMDYsIDgsIDYsIDEsIDIwMywgCisgICAgMTY4LCAxMDYsIDgsIDYsIDEsIDIwMSwgMTQ3LCAxMDYsIDgsIDYsIDEsIDIwMCwgMTk1LCAxMDYsIDgsIDYsIDEsIDIwMCwgCisgICAgMTIzLCAxMDYsIDgsIDYsIDEsIDE5OSwgMTU3LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgOCwgNiwgMSwgMjEyLCAKKyAgICAxMjIsIDQ0LCAzOSwgOCwgNiwgMSwgMjQ3LCAyMjMsIDQ0LCAzOSwgOCwgNiwgMSwgMTQ2LCA0NCwgMjQ3LCA3NywgNDQsIAorICAgIDIwMCwgMTk3LCA5NSwgOCwgNiwgMSwgNjIsIDk1LCA4LCA2LCAxLCAyNTAsIDEwMywgOTUsIDgsIDYsIDEsIDI0NywgMjIzLCAKKyAgICA5NSwgOCwgNiwgMSwgMjQyLCAxNTMsIDk1LCA4LCA2LCAxLCA3MiwgOTUsIDgsIDYsIDEsIDIzOCwgNSwgOTUsIDgsIDYsIDEsIAorICAgIDIzNiwgMTU2LCA5NSwgOCwgNiwgMSwgMjM0LCAyNDcsIDk1LCA4LCA2LCAxLCA3MCwgOTUsIDgsIDYsIDEsIDIyNywgMjUxLCAKKyAgICA5NSwgOCwgNiwgMSwgMjI3LCAxMTgsIDk1LCA4LCA2LCAxLCAxNTYsIDk1LCA4LCA2LCAxLCAyMjMsIDI0MywgOTUsIDgsIDYsIAorICAgIDEsIDIyMCwgMjE0LCA5NSwgOCwgNiwgMSwgNzQsIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgOTUsIDgsIDYsIDEsIDIxNCwgCisgICAgMTY3LCA5NSwgOCwgNiwgMSwgMTQ2LCA5NSwgOCwgNiwgMSwgMjEyLCAxMjIsIDk1LCA4LCA2LCAxLCAyMDcsIDgzLCA5NSwgCisgICAgOCwgNiwgMSwgNjYsIDk1LCA4LCA2LCAxLCAyMDMsIDE2OCwgOTUsIDgsIDYsIDEsIDIwMSwgMTQ3LCA5NSwgOCwgNiwgMSwgCisgICAgMjAwLCAxOTUsIDk1LCA4LCA2LCAxLCAyMDAsIDEyMywgOTUsIDgsIDYsIDEsIDE5OSwgMTU3LCA5NSwgMjMzLCA2OSwgOTUsIAorICAgIDIyMCwgMjM4LCA5NSwgMjExLCAyMDQsIDk1LCAyMDgsIDE4MiwgOTUsIDIxNSwgNDUsIDk1LCAyMDEsIDY1LCAxODksIDQ0LCAKKyAgICA4LCA2LCAxLCA2MiwgMTg5LCA0NCwgOCwgNiwgMSwgMjUwLCAxMDMsIDE4OSwgNDQsIDgsIDYsIDEsIDI0NywgMjIzLCAxODksIAorICAgIDQ0LCA4LCA2LCAxLCAyNDIsIDE1MywgMTg5LCA0NCwgOCwgNiwgMSwgNzIsIDE4OSwgNDQsIDgsIDYsIDEsIDIzOCwgNSwgCisgICAgMTg5LCA0NCwgOCwgNiwgMSwgMjM2LCAxNTYsIDE4OSwgNDQsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxODksIDQ0LCA4LCA2LCAxLCAKKyAgICA3MCwgMTg5LCA0NCwgOCwgNiwgMSwgMjI3LCAyNTEsIDE4OSwgNDQsIDgsIDYsIDEsIDIyNywgMTE4LCAxODksIDQ0LCA4LCAKKyAgICA2LCAxLCAxNTYsIDE4OSwgNDQsIDgsIDYsIDEsIDIyMywgMjQzLCAxODksIDQ0LCA4LCA2LCAxLCAyMjAsIDIxNCwgMTg5LCAKKyAgICA0NCwgOCwgNiwgMSwgNzQsIDE4OSwgNDQsIDgsIDYsIDEsIDIxNiwgMjI2LCAxODksIDQ0LCA4LCA2LCAxLCAyMTQsIDE2NywgCisgICAgMTg5LCA0NCwgOCwgNiwgMSwgMTQ2LCAxODksIDQ0LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTg5LCA0NCwgOCwgNiwgMSwgMjA3LCAKKyAgICA4MywgMTg5LCA0NCwgOCwgNiwgMSwgNjYsIDE4OSwgNDQsIDgsIDYsIDEsIDIwMywgMTY4LCAxODksIDQ0LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE0NywgMTg5LCA0NCwgOCwgNiwgMSwgMjAwLCAxOTUsIDE4OSwgNDQsIDgsIDYsIDEsIDIwMCwgMTIzLCAxODksIAorICAgIDQ0LCA4LCA2LCAxLCAxOTksIDE1NywgMjEzLCAyMjAsIDIyMiwgODIsIDU0LCAyMTMsIDIyMCwgMjIyLCA3OSwgNTQsIDE4OSwgCisgICAgOTUsIDgsIDYsIDEsIDYyLCAxODksIDk1LCA4LCA2LCAxLCAyNTAsIDEwMywgMTg5LCA5NSwgOCwgNiwgMSwgMjQ3LCAyMjMsIAorICAgIDE4OSwgOTUsIDgsIDYsIDEsIDI0MiwgMTUzLCAxODksIDk1LCA4LCA2LCAxLCA3MiwgMTg5LCA5NSwgOCwgNiwgMSwgMjM4LCAKKyAgICA1LCAxODksIDk1LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjM0LCAyNDcsIDE4OSwgOTUsIDgsIDYsIAorICAgIDEsIDcwLCAxODksIDk1LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTg5LCA5NSwgOCwgNiwgMSwgMjI3LCAxMTgsIDE4OSwgOTUsIAorICAgIDgsIDYsIDEsIDE1NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjIzLCAyNDMsIDE4OSwgOTUsIDgsIDYsIDEsIDIyMCwgMjE0LCAKKyAgICAxODksIDk1LCA4LCA2LCAxLCA3NCwgMTg5LCA5NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDE4OSwgOTUsIDgsIDYsIDEsIDIxNCwgCisgICAgMTY3LCAxODksIDk1LCA4LCA2LCAxLCAxNDYsIDE4OSwgOTUsIDgsIDYsIDEsIDIxMiwgMTIyLCAxODksIDk1LCA4LCA2LCAxLCAKKyAgICAyMDcsIDgzLCAxODksIDk1LCA4LCA2LCAxLCA2NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjAzLCAxNjgsIDE4OSwgOTUsIDgsIDYsIAorICAgIDEsIDIwMSwgMTQ3LCAxODksIDk1LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTg5LCA5NSwgOCwgNiwgMSwgMjAwLCAxMjMsIDE4OSwgCisgICAgOTUsIDgsIDYsIDEsIDE5OSwgMTU3LCAyNDIsIDIzMiwgMTg5LCA5NSwgOCwgNiwgMSwgMjE2LCAyMjYsIDE4OSwgOTUsIAorICAgIDIzMiwgMjMzLCAxODksIDk1LCAxNzIsIDE4OSwgOTUsIDIxMiwgNjQsIDE4OSwgOTUsIDI1MiwgODksIDE4OSwgOTUsIDIwMSwgCisgICAgNjUsIDUyLCAyNDAsIDIzMCwgOTUsIDI0NiwgMTM2LCA5NSwgMjQzLCAyNiwgOTUsIDIzNiwgMjEwLCA5NSwgMjMyLCAyMjQsIAorICAgIDk1LCAyMjAsIDcsIDk1LCAyMTksIDI1NSwgOTUsIDIxNywgOTgsIDk1LCAyMDksIDUsIDk1LCAxMTUsIDMsIDIzOCwgNDMsIAorICAgIDgxLCA5NSwgMjAyLCAxNjksIDk1LCAxMjYsIDI0MiwgMTUzLCA5NSwgMjExLCAxOTYsIDIxMSwgMjA5LCA5NSwgMTIwLCAKKyAgICAyMjcsIDExOCwgOTUsIDIzNiwgMjI5LCAyMjcsIDExOCwgOTUsIDIzOCwgMjMyLCAyMjcsIDExOCwgOTUsIDIzNywgNjEsIAorICAgIDIxNSwgMTAwLCAxMDIsIDk1LCAyMTAsIDEzNiwgMjE1LCAxMDAsIDEwMiwgOTUsIDIwNCwgMTQ5LCAyMTUsIDEwMCwgMTA1LCAKKyAgICA5NSwgMjA5LCA5MywgMjE2LCAyMjYsIDk1LCAxMTIsIDIzMywgODMsIDIwNCwgMTYwLCAyMTYsIDIyNiwgOTUsIDgsIDQsIDEsIAorICAgIDI0MiwgMTUzLCA5NSwgMjM0LCAxNDIsIDk1LCAyMzQsIDE0MSwgOTUsIDIzNCwgNzQsIDk1LCAyMjQsIDY2LCA5NSwgMjA5LCAKKyAgICAyMDEsIDk1LCAyMDQsIDI0LCA5NSwgMjAyLCAxOTAsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDYyLCAyMTMsIDE2MiwgCisgICAgMjI4LCAxMDAsIDE2LCAxLCAyNTAsIDEwMywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjQ3LCAyMjMsIDIxMywgMTYyLCAKKyAgICAyMjgsIDEwMCwgMTYsIDEsIDI0MiwgMTUzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA3MiwgMjEzLCAxNjIsIDIyOCwgCisgICAgMTAwLCAxNiwgMSwgMjM4LCA1LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMzYsIDE1NiwgMjEzLCAxNjIsIDIyOCwgCisgICAgMTAwLCAxNiwgMSwgMjM0LCAyNDcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDcwLCAyMTMsIDE2MiwgMjI4LCAxMDAsIAorICAgIDE2LCAxLCAyMjcsIDI1MSwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjI3LCAxMTgsIDIxMywgMTYyLCAyMjgsIDEwMCwgCisgICAgMTYsIDEsIDE1NiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjIzLCAyNDMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIAorICAgIDEsIDIyMCwgMjE0LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA3NCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgCisgICAgMjE2LCAyMjYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIxNCwgMTY3LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAKKyAgICAxNDYsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIxMiwgMTIyLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDcsIAorICAgIDgzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCA2NiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAzLCAxNjgsIAorICAgIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMSwgMTQ3LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDAsIDE5NSwgCisgICAgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAwLCAxMjMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDE5OSwgMTU3LCAKKyAgICA1MiwgMTc3LCAyMzMsIDIwMSwgOTUsIDY5LCAyMjYsIDc2LCA5NSwgNjksIDIxMiwgNjQsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTY5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODEsIDk1LCA2OSwgCisgICAgMjQxLCAxNzUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3NSwgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc0LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE4NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjEsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTU0LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE2MywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODQsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTcwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjIsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTg1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTMsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3NiwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxNzgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTU2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2NywgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNjUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkxLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDQsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTcxLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE4OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODAsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY2LCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTUwLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzksIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTU3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1OSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUyLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MywgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNzcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQzLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE1OCwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTAsIAorICAgIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg4LCAyMDUsIDE0NiwgMjEwLCA1NSwgCisgICAgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3MiwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNTUsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY4LCAyMDUsIAorICAgIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgCisgICAgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxODIsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTY0LCA0NCwgMTk4LCAxOTgsIDI1MSwgMjIzLCA0NCwgMTk4LCAxOTgsIDI1MSwgMjQ5LCAyNDIsIDE2NCwgMjM3LCAKKyAgICAxMSwgMjQ2LCAxMTAsIDIwNCwgOSwgMjE5LCAxMzAsIDMsIDIwOCwgMTA2LCAyMDcsIDIyMywgMTE5LCAyMjEsIDYyLCAyMDcsIAorICAgIDIyMiwgMjQ2LCAxNDAsIDI1MCwgMTU2LCAyMzksIDExMSwgMjA3LCAyMjEsIDExOSwgMjQ4LCAyNSwgMjEzLCAyMjEsIDI0OCwgCisgICAgNTEsIDI1MCwgMTU2LCAyMTksIDEyOSwgMjAxLCA4MywgMjAxLCA3NywgMjAyLCAxODQsIDIyMSwgMTcyLCAyMDEsIDY3LCAKKyAgICAyMzksIDE4LCAyMzUsIDEyNCwgMjM4LCA1OSwgMjM5LCAxOCwgMjM1LCAxMjQsIDI1MSwgOTIsIDIzOSwgMTgsIDIzNSwgCisgICAgMTI0LCAyNTAsIDE3NCwgMjM1LCAxMjQsIDMsIDIyMiwgMzEsIDIyMCwgOCwgMjIxLCA4MiwgOTksIDIwMSwgNjksIDI0MiwgCisgICAgMjQ0LCAyMjEsIDgyLCA5OSwgMjM3LCA3MywgMjE0LCA4OCwgMjIxLCA4MiwgOTksIDIwMSwgNjksIDIzNSwgMTU3LCAyMjEsIAorICAgIDgyLCA5OSwgMjM2LCAxODMsIDIyMSwgODIsIDk5LCAyMDEsIDk3LCAyMzUsIDE1NywgMjIxLCA4MiwgOTksIDIyNSwgNjQsIAorICAgIDIxNCwgODgsIDIyMSwgODIsIDk5LCAyMDEsIDk3LCAyNDIsIDI0NCwgMjIxLCA4MiwgOTksIDI0MiwgMjQ0LCAyMjEsIDgxLCAKKyAgICAyMjAsIDgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgCisgICAgMjI1LCA2NCwgMjE0LCA4OCwgMjIxLCA4MiwgMywgMjM3LCAxODksIDIzNiwgMTgzLCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgCisgICAgMjA3LCAyMjksIDMsIDIzNywgMTg5LCAyMzUsIDEyMSwgMjA4LCAxMDksIDIwOSwgMjU1LCAyMDgsIDEwOSwgMjA2LCA5NCwgCisgICAgNjMsIDIzOSwgMTQ1LCA2NCwgMjA3LCAyMjgsIDY0LCAyMDcsIDIyOSwgMywgNCwgMjQ2LCAxMDEsIDY0LCAyMDcsIDIyOSwgCisgICAgMjQ4LCAyMzcsIDI0NiwgMTAxLCA2NCwgMjA3LCAyMjksIDI0OCwgMjM3LCAyNDYsIDEwMiwgMywgMjEzLCAyMjIsIDI0NiwgCisgICAgMTAyLCAzLCAyMTMsIDIyMiwgMjQ2LCAxMDIsIDMsIDIwOSwgMzUsIDI0NiwgMTAyLCAzLCAyMjQsIDE5MywgMjQ2LCAxMDIsIAorICAgIDMsIDIwNSwgMTUwLCAyMzcsIDEyLCAyMDEsIDE3LCAyNDgsIDEyOCwgMjM3LCAxODksIDIzMywgMTE4LCAyNDAsIDIwMCwgCisgICAgMjA3LCAxNiwgMjQ4LCAxLCAyNDYsIDI0MiwgMjExLCAxODgsIDIzOCwgNTMsIDIwNSwgMTA4LCAyNDEsIDE2OSwgMjA1LCAKKyAgICAxMDgsIDIxNiwgMTc3LCAyMDUsIDEwOCwgMjQ3LCAxODMsIDIzMywgMTE4LCAyMTYsIDI5LCAyMDQsIDIwNSwgMjQ2LCAyNDYsIAorICAgIDI0OCwgMTMxLCAyMTIsIDIzMiwgMjM0LCA3MywgMjA3LCAyMjYsIDI0OCwgMTMxLCAyMzksIDIyLCA3NiwgMjIyLCAxODksIAorICAgIDIzOSwgMjIsIDc2LCAyMTMsIDgzLCAyMzQsIDEwMCwgMjM2LCAyMjksIDIyNSwgMzYsIDI0NiwgMTAwLCAyMjIsIDE2MiwgCisgICAgMjI1LCAzNSwgMjM3LCAxNzIsIDIyNSwgMzUsIDIyNSwgMzYsIDIzNywgMTksIDIyOCwgMTE4LCAyMDEsIDE2LCAyMjAsIAorICAgIDI0NywgMjA1LCAxNzgsIDI1MCwgMTM4LCAyMzUsIDgxLCAyMjIsIDQ5LCAyMDEsIDgxLCAyMDYsIDIzOSwgMjI1LCA1LCAKKyAgICAyNDksIDg1LCAyMTUsIDE1NywgMjEzLCAxNzAsIDI1MSwgMTAsIDIzNSwgNjQsIDI1MSwgMTAsIDIxNiwgNjcsIDIxNiwgNzAsIAorICAgIDI0NiwgMjQ3LCAyMDgsIDYwLCAyMzQsIDIwOCwgMjA5LCA2OCwgNzYsIDIxNSwgMTM3LCAyMjIsIDcyLCAyMTcsIDc5LCAKKyAgICAyNDgsIDExMiwgMjE1LCA1NywgMjI1LCAxNiwgMjEzLCA4NCwgMjQyLCAyNTAsIDIxMywgODQsIDI0OSwgOTcsIDI0MywgMjksIAorICAgIDIxMywgODMsIDI0MiwgMTkyLCAyNiwgMjEzLCA4MywgMjA4LCA5NCwgMjQ4LCA4MiwgMjA4LCAyNDAsIDI0OCwgNjIsIDIzNiwgCisgICAgMjA5LCAyMzYsIDIwNSwgMjEyLCAyNTMsIDIwNywgMTc5LCAyMTUsIDU5LCAyNDIsIDcsIDIxNywgMTIzLCAyMDcsIDE5NywgCisgICAgMjM2LCAyMDYsIDIwOSwgMjI2LCAyMzcsIDcyLCAyNDcsIDE3NywgMywgMjA3LCAxNzIsIDI0MSwgMTEyLCAyMDksIDIzLCAKKyAgICAyMzIsIDIzMiwgMjQyLCAyNDgsIDIxMCwgNzMsIDIzMiwgMjMxLCAyMzIsIDIzMiwgMjQyLCAyNDgsIDIzOSwgMTcwLCAyNDMsIAorICAgIDI4LCAyNDYsIDIwOCwgMTQ4LCAyNDcsIDE0OCwgMjI0LCA5MywgMjQyLCAxODMsIDIzMywgMTkwLCAyMTUsIDYxLCAyMDksIAorICAgIDIzOSwgMjQ4LCAyMTgsIDI0OCwgNzgsIDIxNSwgNjIsIDc2LCAyMzcsIDEsIDI0MywgMjcsIDIzNiwgMjQ2LCAyNiwgMjI2LCAKKyAgICA5NSwgMjA2LCAxOTgsIDIwMSwgMywgMjM0LCAxNzcsIDIxMiwgNDEsIDI0OCwgOTUsIDI2LCAyNDIsIDIwMiwgMjAxLCAxMywgCisgICAgMjM1LCAxMjgsIDI0NiwgODgsIDIzNSwgMTI4LCAyMDUsIDYzLCAyMzksIDE1MSwgMjQ4LCAyNDgsIDIyMSwgMzAsIDI0NiwgCisgICAgMTE3LCAyNDgsIDI0OCwgMjIxLCAyOSwgMjQ5LCAxMzIsIDI0OCwgOTQsIDIzNiwgMjQ2LCAyNiwgMjI2LCA5NiwgMywgMjE1LCAKKyAgICAxMjYsIDI0OCwgOTUsIDMsIDIxNSwgNzQsIDI0MywgMTcsIDIxNSwgNzYsIDIxMywgODUsIDIwMCwgMjI3LCAyMTUsIDIwLCAKKyAgICAyNDgsIDE1OSwgMjQ3LCAxNzYsIDIyNywgMjQ1LCAyNDYsIDIwMCwgMjA1LCAxMDgsIDIzNywgMTU1LCAyNDYsIDE5OSwgCisgICAgMjM3LCA3NSwgMjM3LCA3NiwgMjA4LCAyMzgsIDI0OSwgOTYsIDIxNiwgMTA1LCAyMTUsIDc1LCAyNDMsIDY1LCAyNDksIDk3LCAKKyAgICAyMDYsIDI0MywgMjA1LCAxMDgsIDI0MiwgMjMyLCAyMzcsIDQ3LCAyMTUsIDE1OCwgMjQxLCAxNjYsIDIyNywgMjM2LCAyNDAsIAorICAgIDE5MywgMjQ3LCAxMjMsIDIwOCwgNTksIDIwMSwgMTcsIDI0NiwgMjI0LCAyMjEsIDgyLCAyMDIsIDIyMSwgMjQ3LCA0MiwgCisgICAgMjExLCAyMjIsIDIxMSwgMjQ5LCAyMzUsIDg3LCAyNDcsIDE0NCwgMjM0LCAxMjgsIDMsIDIwNSwgMjI0LCAyMTcsIDc5LCAKKyAgICAyMDYsIDEwNywgMjI1LCAyOCwgMjQ4LCA4OCwgNzYsIDIzNywgMjMsIDIyMSwgMTc0LCAyMjIsIDY5LCAyMTMsIDE0MiwgCisgICAgMjEzLCA4NSwgMzIsIDIyNiwgMjEzLCAzLCAyMjcsIDI0NCwgMjA4LCAzMCwgMjIxLCAyMDgsIDIyNCwgMjI5LCAyMDksIDY2LCAKKyAgICAyNDMsIDM0LCAyMjYsIDkyLCAyNDksIDQsIDI1MCwgMTg0LCAzMiwgMjE4LCAyMDQsIDI0OSwgNCwgMjQxLCAxMTgsIDMyLCAKKyAgICAyMTgsIDIwNCwgMjM3LCA5MCwgMjM2LCAyMTQsIDI1MSwgMjI2LCAyMDYsIDksIDI0NywgMTI0LCAyMzMsIDEyMCwgMjM3LCAKKyAgICAxMjEsIDIwMSwgMzcsIDIxMiwgMjQzLCAyNDYsIDg5LCAyMzcsIDY3LCAyMTUsIDkxLCAyNiwgMjM3LCA3MSwgMjIxLCAyMDgsIAorICAgIDIyMSwgNDgsIDI0NywgMTYyLCAyNDYsIDE1OSwgMjM0LCAxMzIsIDI1MCwgMTkzLCAyMTYsIDE4MCwgMjA1LCAxNTgsIDIzNCwgCisgICAgMTU3LCAyNDYsIDE0NSwgMjA2LCAxNTgsIDIwNiwgMTAsIDI0NiwgMTMxLCAyNDgsIDEyMSwgMjE2LCAyMiwgMjUwLCAxOTEsIAorICAgIDIwMiwgMjMwLCAyMzYsIDYzLCAyNDEsIDEwLCAyMzQsIDQ1LCAyMDksIDU5LCAyMjIsIDIzMCwgMjQ4LCAxNzEsIDIzNiwgCisgICAgNjQsIDI0MSwgNTYsIDI0OCwgODEsIDIzNywgMjUsIDIxNSwgMTI1LCAyNDcsIDEzMiwgMzIsIDIxOCwgMjA5LCAyMjEsIDIxLCAKKyAgICAzMiwgMjE4LCAyMDQsIDIxMSwgMjM1LCAyMzUsIDM0LCAzMiwgMjI2LCAyMTIsIDIwNSwgMzksIDIwMiwgMjEwLCAzMiwgCisgICAgMjExLCAyMTQsIDIxMiwgMTU1LCAyMTAsIDEyLCAzLCAyMTEsIDI1MiwgMjA2LCAxNjMsIDIxMywgMjQxLCAyNiwgMjQ5LCAKKyAgICA5NywgMjA5LCA4NSwgMjYsIDIwOSwgODUsIDI0OCwgMTA1LCAyNDksIDU5LCAyNiwgMjMzLCAxODMsIDI0NiwgMjQ4LCAyMzcsIAorICAgIDUzLCAyMDksIDM0LCAyMTIsIDE1NiwgMjA3LCAyMDIsIDIwOCwgMjA1LCAyMjIsIDY5LCAyMDUsIDY0LCAyMzMsIDEyMSwgCisgICAgMjEzLCAyNDIsIDI1MSwgOTMsIDIzNiwgMjU0LCAyMTIsIDE2OSwgMjM2LCAyNTQsIDIwNywgMTc0LCAyMDEsIDUzLCAyMjQsIAorICAgIDE5OCwgMjM1LCAxMDcsIDIxMywgMjQzLCAyMjEsIDY5LCAyMTMsIDI0MywgMjQ3LCAxMzUsIDI0MiwgMjQxLCAyNDksIDU2LCAKKyAgICAyNiwgMjQ5LCA5NywgMjAyLCAxODMsIDIzNywgMTExLCAyMzMsIDIwNCwgMjA4LCA4OCwgMjYsIDI0OSwgOTcsIDIzMiwgCisgICAgMjMyLCAyMzMsIDIwNCwgMjA4LCA4OCwgMjYsIDIxNCwgMjE3LCAyMDcsIDIzLCAyMDYsIDE2MywgMjE2LCAxOTgsIDI2LCAKKyAgICAyNDksIDk3LCAyMDksIDM2LCAyNDcsIDE0MCwgMjIxLCA2MywgMjQ3LCAxNjAsIDI0OSwgNywgMywgMjA0LCA5LCAyNDgsIAorICAgIDI3LCAyNDMsIDQ4LCAyMzMsIDExMCwgMjQ4LCAyNSwgMjQ2LCAxMzksIDI0MSwgMTIyLCAyMzMsIDExMCwgMjQ4LCAyNiwgCisgICAgMjQ2LCAxMjksIDI0OCwgMjYsIDI0MSwgMTE0LCAyNDEsIDExNSwgMjI4LCAxOSwgMjIwLCAxMTgsIDIxNiwgMTExLCAyMDgsIAorICAgIDExOSwgMjMzLCAxMTAsIDI0OCwgMjYsIDIzMywgMTEwLCAzLCAyMzYsIDQ3LCAyMTcsIDExNSwgMjQ4LCAyNiwgMjI3LCAKKyAgICAyMzYsIDIxNSwgNjcsIDIxNywgMTE0LCAyMzgsIDU4LCAyMTUsIDY3LCAyMTcsIDExNCwgMjMzLCAxMTksIDI0OSwgODEsIAorICAgIDI1MCwgMTI4LCAyMDYsIDE3MSwgMjIyLCAyMzAsIDIzMywgMTE1LCAyMjQsIDYwLCAyMzMsIDExNSwgMjQzLCAzMiwgMjA4LCAKKyAgICA3MiwgMjExLCAyMjEsIDI0MSwgMTI1LCAyMDgsIDcyLCAyMzcsIDE3OCwgMjI4LCAwLCAyMjUsIDc2LCAyMjcsIDIzNiwgCisgICAgMjQ3LCAxMTMsIDIzOCwgNTgsIDI0NywgMTEzLCA2NCwgMjE2LCA0MSwgNjMsIDIxNiwgNDEsIDIwMSwgNzUsIDY0LCAyMzcsIAorICAgIDUzLCAyMDEsIDc1LCA2MywgMjM3LCA1MywgMjEyLCAyMzEsIDYzLCAyMTIsIDIzMSwgMjI1LCAxNjgsIDI0OSwgMTE1LCAKKyAgICAyMTMsIDI0MSwgMjYsIDIwOSwgMjA0LCAyNDgsIDg2LCAyNiwgNDgsIDI1MSwgODgsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgCisgICAgMjA0LCAxMjYsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAxMjMsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAKKyAgICAxMjEsIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAxMTksIDIzOCwgMTg1LCA2NywgMjM3LCA2MiwgMjA0LCAxMTcsIAorICAgIDIxMywgMjA0LCAyMjEsIDYwLCAyMTYsIDIzNSwgMjAxLCA4MywgMjQ4LCAzMSwgMjQyLCAyNTUsIDIwNiwgMiwgMjI0LCAKKyAgICAyNDUsIDIxMywgMjQ0LCAyNDcsIDExMSwgMjM5LCAxNTgsIDI0MiwgMjQwLCAyMDEsIDQwLCAyMDksIDQzLCAyMDksIDQxLCAKKyAgICAyMzMsIDEyMCwgMjEzLCAyMTYsIDIzNSwgMTEyLCAyMTAsIDU5LCAyMjEsIDEwMCwgMjEyLCAyMzUsIDI0NiwgMjM0LCAyNDAsIAorICAgIDIwMCwgMjE1LCAxNjgsIDI0OCwgMTIyLCAyMzgsIDIwMSwgMjE3LCAxMjYsIDIwOCwgMjE4LCAyMTAsIDU0LCAyNDgsIDMwLCAKKyAgICAyNTEsIDUxLCAyMzMsIDE4OSwgMjI1LCAxNjEsIDI0OCwgMjQ2LCAyMzcsIDcxLCAyMDUsIDYzLCAyMzcsIDcxLCAyNDgsIAorICAgIDEyOSwgMjA0LCAxODIsIDIzNCwgMTU1LCAyNDYsIDIzNSwgMjQ5LCAxMzIsIDI0NiwgMjM1LCAyMzYsIDE5OSwgMjQ5LCAKKyAgICAxMzIsIDI0NiwgMjM1LCAyNDgsIDE2MiwgMjE2LCA0MywgMjI2LCA4NiwgMjE1LCA4MCwgMjM5LCAxNDgsIDI0NywgMTY0LCAKKyAgICAyNDksIDEyMCwgMjQ3LCAxNjQsIDI0MCwgMTkyLCAyMjEsIDYxLCAyMzcsIDE4OSwgMjQzLCAwLCAyMzcsIDE4OSwgMjA2LCAKKyAgICAzLCAyMzcsIDE4OSwgMjEzLCAyNDUsIDIzNywgMTg5LCAyNDcsIDExMiwgMjM3LCAxODksIDIzOSwgMTU5LCAyMzcsIDE4OSwgCisgICAgMjA4LCAyMDMsIDIwMSwgNDAsIDIzMywgMTIxLCAyMzcsIDE4OSwgMjIxLCAxMDEsIDIzNywgMTg5LCAyNDAsIDIwMSwgMjM3LCAKKyAgICAxODksIDIxNSwgMTY5LCAyMzcsIDE4OSwgMjM2LCAyMDMsIDIzNywgMTg5LCAyMzQsIDIwNSwgMjM3LCAxODksIDIwMCwgCisgICAgMjUzLCAyMzcsIDE4OSwgMjQ5LCAyLCAyMzcsIDE4OSwgMjE2LCAxNTksIDIzNywgMTg5LCAyMTUsIDE2OSwgMjE4LCAyMTYsIAorICAgIDIxNiwgODUsIDIxNSwgNywgMjQ2LCAyMTksIDIzOCwgMTUsIDIzOCwgMjIsIDIzOSwgMjEsIDIxOCwgMjE2LCAyMjEsIDU4LCAKKyAgICAyMDUsIDE2MywgNjQsIDExNSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2NCwgMTI3LCAyMTUsIDk2LCAyNDksIAorICAgIDEyNywgMjI4LCAxMDMsIDY0LCA0OSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2NCwgNTEsIDIxNSwgOTYsIDI0OSwgCisgICAgMTI3LCAyMjgsIDEwMywgMjM3LCA2NSwgMjM0LCAyMDAsIDU0LCAyMDEsIDc1LCAyMzQsIDIwMCwgNTQsIDIxNywgOTksIAorICAgIDIzNCwgMjAwLCA1NCwgMjA2LCAzMywgMTE1LCA1NCwgMjA2LCAzMywgMTI3LCA1NCwgMjQ2LCAxMzAsIDIzNCwgMTc1LCA1NCwgCisgICAgMTc2LCAyMzQsIDE3NSwgNTQsIDI0MiwgMjI2LCAyMDAsIDI0OSwgMjM0LCAxNTcsIDIzOCwgMTgsIDIyMCwgMzAsIDIwNywgCisgICAgODIsIDIyNywgMjI2LCAyMzksIDE1MywgMjI2LCAxNDgsIDI0OCwgMTczLCAyMDAsIDI0OSwgMjQ2LCAxMDMsIDIxNCwgMTk4LCAKKyAgICAyMzQsIDE3OSwgMjE1LCA1OCwgMjIyLCAxNzAsIDIxMCwgNSwgMjUwLCAxNTEsIDIxMCwgNSwgMjM0LCA1OCwgMjEwLCA1LCAKKyAgICAyMDAsIDI0OSwgMjEyLCAxMCwgMjAwLCAyNDksIDI0OCwgMTA0LCAyMzYsIDI1MiwgMjQ3LCAyNDksIDIyOCwgMTE4LCAyMDksIAorICAgIDE1NSwgMjQ3LCAyNDgsIDIyOCwgMTE4LCAyMDksIDE1NSwgMjQ4LCA3NiwgMjM1LCAxNDAsIDIyMiwgMTgwLCAyMDAsIDI1MCwgCisgICAgMjM3LCAxNjksIDIyMiwgMTgxLCAyNiwgMjAwLCAyNTEsIDIzMywgMTk4LCAyMzQsIDE3NCwgMTIwLCAyMjIsIDQxLCAyMzMsIAorICAgIDE5OCwgMjM0LCAxNzQsIDEyMCwgMjAwLCAyNDgsIDIzMywgMTk4LCAyMzQsIDE3NCwgMjE1LCA4OCwgMjE3LCAxMTMsIDIwMCwgCisgICAgMjUxLCAzLCAyNDgsIDExLCAyMzksIDE5LCAyNDgsIDUyLCAzLCAyMDMsIDUwLCAyMTYsIDExLCAzLCAyNDgsIDEzMywgMjM0LCAKKyAgICAyMjEsIDIyMiwgMTgxLCAzLCAyMzUsIDQ3LCAyMTUsIDIwNSwgMjIyLCAxNjYsIDIyMiwgMTgxLCAzLCAyMDQsIDE5MSwgCisgICAgMjE3LCA5MSwgMjIyLCAxODAsIDIxNywgOTEsIDIwMCwgMjUwLCAyNDksIDEzMSwgMjQzLCA0OSwgMjAwLCAyMzQsIDIxNSwgCisgICAgMTIsIDIyNywgMjM2LCAyMTcsIDEwOSwgMjI3LCAyMzYsIDIzNSwgMTExLCAyMzUsIDE2OSwgMjQ5LCAxMzIsIDI1MSwgNzQsIAorICAgIDIzOCwgMjcsIDI1MSwgMTMyLCAyNTEsIDEzMywgMjIxLCA5MSwgMjI4LCAxMjMsIDIwOSwgODAsIDIyOCwgOTIsIDI0MSwgCisgICAgMTExLCAyMTYsIDEwLCAyMzUsIDQxLCAyNDIsIDEyLCAyMjQsIDE1OSwgMjIwLCAxNDIsIDIxNSwgODcsIDIzNywgMTkwLCAKKyAgICAyMjIsIDEzMCwgMjM0LCAyMjAsIDI0OSwgNzUsIDIxNSwgOTAsIDIwNywgMTAyLCAyMTUsIDE2MSwgMjI2LCAxMzAsIDgxLCAKKyAgICAyMjQsIDYwLCAyMjQsIDIzNiwgMjEzLCAyNiwgMjM2LCA1LCAyMDgsIDc4LCAyMjYsIDEyOSwgMjQ4LCA4NywgMjQzLCAyLCAKKyAgICAzLCAyMzQsIDEyNywgMjAxLCA2MCwgMjQ5LCAwLCAyMzQsIDEyNywgMjQ4LCA0NiwgMjM0LCAxMjcsIDEyMCwgMjM0LCAxMjUsIAorICAgIDIwOCwgMjM2LCAyMzQsIDEyNywgMjM1LCA1NywgMjM0LCAxMjcsIDIzNCwgMTI4LCAzLCA0OCwgMjQ4LCAxMjcsIDIzNCwgCisgICAgMTI3LCAyMzUsIDY0LCAyMzQsIDEyNywgMjAwLCA0NCwgMjM0LCAxMjcsIDIxNCwgMTk5LCAyMzQsIDEyNywgMjM0LCAxMjgsIAorICAgIDMsIDIxMywgODUsIDIxMywgOTksIDIzNCwgMTI1LCAyMzQsIDEyOCwgMjQxLCAxNjYsIDI0MSwgNjUsIDIxMCwgODYsIDMsIAorICAgIDM1LCA3MywgMjI4LCA3MywgMjM4LCAyMDQsIDE2MiwgMjQ4LCAyMywgMjUxLCA3MywgOTksIDI0OCwgMTEzLCAyMDksIDcxLCAKKyAgICA5OSwgMjQ2LCA4MSwgOTksIDIwOCwgMjEyLCAyMDcsIDE4MSwgOTksIDIzOSwgMTQ1LCAyNDEsIDI0NSwgOTksIDIxNSwgCisgICAgMTYyLCA3NiwgMjE1LCA4MSwgMjM3LCAzNywgMjQ4LCAxODUsIDI0MCwgMjMxLCA5OSwgMjA4LCAyMjgsIDI0OSwgOTYsIAorICAgIDIwNiwgNTIsIDI0OSwgOTYsIDY0LCAyMzcsIDI0LCAyMzMsIDgzLCAyMTUsIDk0LCA5OSwgMjIxLCAxMDUsIDI0OSwgMTEzLCAKKyAgICAyNDIsIDE5NSwgMjM4LCA0NSwgODAsIDI0MCwgMTk0LCA1NCwgMjQyLCAyNDYsIDI0NywgMTMzLCAyNDksIDgwLCAzLCAyMDAsIAorICAgIDQyLCA1NCwgMjQ5LCA4MCwgMywgMjQwLCAxOTQsIDU0LCAyNDksIDgwLCAzLCAyMzgsIDYxLCA1NCwgMjQ5LCA4MCwgMywgCisgICAgMjE1LCA1NiwgNTQsIDIyMSwgMTA1LCAzLCAyMDEsIDExLCAyNDcsIDE2LCAzLCAxODIsIDIwNSwgMTA0LCAyNiwgMjAwLCAKKyAgICA0MiwgNTQsIDIxMSwgMTk5LCAyMTYsIDksIDI0MywgNzAsIDI0OCwgNTAsIDIyMSwgMTYyLCAyMzcsIDI5LCAyNDAsIDI1MywgCisgICAgMjE3LCAzNywgMjQxLCAyLCAyMzksIDEwNiwgMjM3LCA5NywgMjM3LCA5LCAxNzYsIDIzNywgOTcsIDIzNywgOSwgMjE2LCAKKyAgICAxOTYsIDMsIDI0MiwgMTk4LCAyMTYsIDE5NiwgMjM3LCAxODIsIDIwMywgMjI4LCAyNDcsIDE3MCwgMjA2LCAxOTcsIDI0NywgCisgICAgMTcwLCAyNDcsIDEzNCwgMjI4LCAxMDMsIDI0NywgMTYsIDMsIDE4MiwgMjA1LCAxMDMsIDI0NywgMTYsIDMsIDE5MSwgMjA1LCAKKyAgICAxMDMsIDI0OSwgNzcsIDI0NywgMTUsIDI0NiwgMTE2LCAyMTQsIDE5NCwgMjEyLCAyMjEsIDIxNCwgMTk0LCAyMTYsIDEzMywgCisgICAgMjA4LCA2OCwgMjEyLCAxNjMsIDIwNSwgOTUsIDIxMiwgMTYzLCAyNDgsIDEwOSwgMjA3LCAyMSwgMjI1LCAzMywgMjE4LCAKKyAgICAyMDcsIDIxOCwgMjA4LCAzLCAyNDEsIDE2NSwgMjQzLCAxLCAyNDYsIDExMCwgMjQ4LCAxMTAsIDE3NiwgMjQ4LCAxMTAsIAorICAgIDIzNSwgNjQsIDI0OCwgMTEwLCAyNDgsIDEyNywgMjQ4LCAxMTAsIDIxNywgMzIsIDI0OCwgMTEwLCAyNDgsIDEwNywgMjIwLCAKKyAgICAxMzYsIDI0OSwgMTE3LCAyMTEsIDIwNywgMjIyLCA0MiwgMjA2LCAxNzYsIDIxMywgMTg0LCAyMTYsIDE5NCwgMjM3LCAxNTIsIAorICAgIDIyMiwgMjMwLCAyMTEsIDI0OCwgMjUxLCA0OCwgMjE0LCAyMTgsIDI1MSwgMjMyLCAyMjQsIDYyLCAyNDcsIDAsIDIyMiwgCisgICAgNTQsIDIxNiwgMjUzLCAyMDUsIDExMSwgMjI4LCAxMTQsIDIwNSwgMTExLCAyMTYsIDIwMywgMjM5LCA3NCwgOTksIDIyOCwgCisgICAgMTExLCAyMzgsIDE0NCwgMjM4LCAxNDUsIDMsIDE5MSwgNTUsIDU2LCAyNDYsIDExMCwgMjIyLCAxOTUsIDMsIDIyNCwgNTIsIAorICAgIDIzNywgNTMsIDI0NiwgMTEwLCAyMjIsIDE5NSwgMywgMjEzLCAyMjAsIDIzNywgNTMsIDE3NiwgMjIyLCAxOTUsIDMsIDIxMywgCisgICAgMjIwLCAyMzcsIDUzLCAxNzYsIDIyMiwgMTk1LCAzLCAyMjQsIDUyLCAyMzcsIDUzLCAyMTUsIDY0LCAyMTUsIDY1LCAyMzMsIAorICAgIDEyNCwgMjIwLCA0LCAyMjEsIDEzNCwgMjE1LCAyMTMsIDIyMSwgMTM0LCAyMTUsIDIxNCwgMywgODcsIDU1LCAyNTAsIDE1NiwgCisgICAgMjI1LCAyOCwgMjAyLCAyMzMsIDIyMSwgMTMzLCAyMjEsIDEzNCwgMjE1LCAyMTQsIDIxNywgMTE2LCAyMTgsIDI0MiwgMjIxLCAKKyAgICAxMzQsIDIxNSwgMjEyLCAyNTEsIDQ5LCAzLCAyNDksIDY2LCAyNDcsIDE2MiwgMjQ3LCAxNjMsIDMsIDIzNywgNDYsIDIwMiwgCisgICAgMjMwLCAyNDcsIDE2MiwgMjA2LCAxNzMsIDIxMywgMjM2LCAyMDIsIDIyOSwgMjM3LCA5MCwgMjE0LCAyNTAsIDIxNSwgNzEsIAorICAgIDIwOCwgODksIDIxNSwgMzMsIDI0OSwgNiwgMjA0LCAxNDUsIDg3LCAyNTAsIDE5OSwgMjQ2LCAxMTIsIDg3LCAyNiwgOTgsIAorICAgIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAyNDYsIDExMiwgODcsIDI2LCA5OCwgMTc2LCAyNDYsIDE1NiwgMjUwLCAyMDAsIAorICAgIDMsIDQ0LCAxMTIsIDIxNiwgMjQyLCAyNDYsIDExMiwgMTkxLCAyNiwgMTgyLCAxNzYsIDI0NiwgMTU2LCAyNTAsIDE5OSwgCisgICAgMjUxLCA0NywgMTkxLCAyNiwgMTgyLCAxNzYsIDI0NiwgMTU2LCAyNTAsIDE5OSwgMTI4LCAyNDgsIDQ5LCA5OSwgMTIyLCAKKyAgICAyNDgsIDQ5LCA5OSwgMjA4LCAyMzMsIDMsIDI0NywgMTU1LCA5NywgMjA4LCAyMzIsIDIwOCwgMjMzLCAzLCAxMTIsIDIwOSwgCisgICAgMSwgMjAxLCA3NywgMjA4LCAyMzMsIDMsIDEyNiwgMjA5LCAxLCAyMDEsIDc2LCAyNDksIDQ5LCAyMzgsIDIwNCwgMjE1LCAKKyAgICAxMTgsIDIyNSwgMjMsIDIyMiwgMjA3LCAyMzUsIDEyOCwgMjEzLCA0MSwgMjIyLCAyMDcsIDIzNSwgMTI4LCAyMjQsIDEwNCwgCisgICAgMywgMjI4LCA4NCwgMjE2LCA0NywgMjQ2LCAxMTAsIDIyNCwgMTA0LCAzLCAyMjYsIDIxNCwgMjI2LCAyMTQsIDIyNCwgMTAzLCAKKyAgICAxNzYsIDIyNCwgMTAzLCAyNDgsIDIzMCwgMjQ4LCAyMzEsIDMsIDI0NywgMTU1LCA5NywgMjQ4LCAxMDgsIDIyNCwgMTY3LCAKKyAgICA5OSwgMjEzLCAyMzcsIDI0NywgMjQzLCAyNDksIDEzMCwgMywgOTgsIDU1LCA1NiwgMjM4LCAxNzEsIDMsIDk4LCA1NSwgNTYsIAorICAgIDIxNywgNzksIDMsIDIzOCwgNDMsIDEzNCwgMywgNDksIDUxLCA1NSwgNTYsIDIwOSwgOSwgMywgODcsIDU1LCA1NiwgMjA1LCAKKyAgICAxNTgsIDMsIDE4MiwgNTUsIDU2LCAyMTgsIDI0MiwgMTEyLCAyMDMsIDI1MywgMjM4LCAyMzAsIDk5LCAyMjYsIDIxMSwgCisgICAgMjA2LCAxNjYsIDIyOCwgNzgsIDE2LCAzNiwgOCwgNiwgMjI0LCAyMzUsIDIyOCwgNzgsIDE2LCAzNiwgOCwgNCwgMjI0LCAKKyAgICAyMzUsIDIyOCwgNzgsIDE2LCAzNiwgMjE4LCA5NCwgMjI4LCA3OCwgMTYsIDM2LCAyMDcsIDExNiwgMjI4LCA3OCwgMTYsIAorICAgIDM2LCA4LCAyMjQsIDIzNSwgMjM3LCA3NywgMjM4LCAyMDQsIDIwNSwgMTUzLCAyMDAsIDIyNSwgMjM0LCAyMDYsIDIxOCwgCisgICAgNzcsIDI2LCAyNDgsIDExNSwgMjMzLCAyMDUsIDIxNSwgMTQzLCAyMjEsIDIwNywgMjA2LCAxNzQsIDI0MiwgMjE2LCAyNDksIAorICAgIDk3LCAyMDksIDEwNiwgMjE1LCA5OCwgMjA4LCAxMTAsIDMsIDEwMSwgMjQwLCAxODIsIDIyNywgMjM2LCAxNiwgMzYsIDI0OCwgCisgICAgMjQzLCAyMDUsIDkzLCAyMzgsIDE4NywgNjMsIDUyLCAyNDcsIDI0MywgNjQsIDUyLCAyNDcsIDI0MywgMjI1LCA3MSwgMjEzLCAKKyAgICAxNzAsIDI0NiwgMTU1LCAyMjUsIDcxLCAyNDgsIDEyNywgMjQ2LCAxNTUsIDIyNSwgNzEsIDIxNywgMzIsIDI0MSwgNjQsIAorICAgIDIyNSwgNzEsIDI0OCwgMTI3LCAyNDEsIDY0LCA0LCAyMTcsIDMyLCAyNDEsIDY0LCA0LCAyNDgsIDEyNywgMjQxLCA2NCwgCisgICAgMjAzLCAyMjcsIDIxMywgMTcwLCAyMDUsIDk4LCAyMzksIDE2NiwgMjEzLCAxNzAsIDIwNSwgOTgsIDIwMywgMjI3LCA0LCAKKyAgICAyMTMsIDE3MCwgMjA1LCA5OCwgMjM5LCAxNjYsIDQsIDIxMywgMTcwLCAyMDUsIDk4LCAyMjQsIDU0LCA1MSwgMjEwLCAxMDEsIAorICAgIDY0LCAyNDYsIDE1NSwgMjAzLCAyMjUsIDUxLCAyMTAsIDEwMSwgNjQsIDI0NiwgMTU1LCA0NCwgMjQyLCAyMzUsIDIxNSwgCisgICAgODQsIDI0MiwgMjM1LCAyMTUsIDg1LCAzLCAyMzQsIDIxMiwgNTcsIDI0MiwgMjM1LCAyMTUsIDg0LCAyMTgsIDIxMSwgNDksIAorICAgIDIxMCwgMTcwLCAzLCAxMjYsIDI0MCwgMTgwLCAyMTgsIDIxMSwgNTEsIDIxMCwgMTcwLCAzLCAxMjYsIDI0MCwgMTgwLCAxNiwgCisgICAgMzYsIDIyMiwgMTQ0LCAyNDcsIDIyLCA2NCwgOCwgMjQyLCAyMzQsIDgwLCA4LCAyNDIsIDIzNCwgMjQ3LCA2MCwgMjQyLCAKKyAgICAyMzQsIDIxNywgODcsIDk5LCAyMzksIDE2OSwgNzYsIDIxNiwgNzEsIDIyNywgMTAzLCAyMjEsIDc0LCAyMDcsIDExMCwgCisgICAgMjIyLCAzNywgMywgMjE5LCAxMTQsIDI0OCwgNjUsIDI0OCwgODMsIDc2LCAyMzMsIDM1LCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDExMiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMTIwLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAKKyAgICAxMjYsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzNiwgMjI5LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgCisgICAgMTkwLCAyMzcsIDYxLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDksIDEwNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAKKyAgICAyMzcsIDE5MCwgMjEwLCAxMzYsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMjMyLCAyMTcsIDEzMiwgCisgICAgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTksIDExNCwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA2LCAxNjcsIAorICAgIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzOCwgMjAwLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAKKyAgICAyMDQsIDE2NSwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjE3LCA3MiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDQsIAorICAgIDEzOSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDYsIDM5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIzNiwgMjI1LCAyNDYsIDExNCwgCisgICAgMjM3LCAxOTAsIDIzNywgNTksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjA5LCAxMDIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjEwLCAKKyAgICAxMzQsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMzEsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjE5LCAxMTIsIDI0NiwgCisgICAgMTE0LCAyMzcsIDE5MCwgMjA2LCAxNjUsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAxOTgsIDI0NiwgMTE0LCAyMzcsIAorICAgIDE5MCwgMjA0LCAxNjMsIDUxLCAyMDgsIDIzMiwgNTEsIDIwOCwgMjMzLCAzLCAxMTIsIDIwOSwgMSwgMjAxLCA3NywgNTEsIAorICAgIDIwOCwgMjMzLCAzLCAxMjYsIDIwOSwgMSwgMjAxLCA3NiwgMjQ4LCAxOCwgMjQ4LCAxOSwgMywgMjA5LCAxLCAyMDEsIDc2LCAKKyAgICAyMTMsIDI1LCAyNDgsIDIzMCwgMjQ4LCAxMTAsIDI0NywgMTUzLCAyMjIsIDE2NywgMjQ2LCAxMTMsIDYzLCAyMDksIDgxLCAKKyAgICAyNiwgMjQyLCAyMzMsIDIxOCwgMjQyLCAyMTUsIDE0OSwgMjMzLCAxOTcsIDIyMiwgMTgxLCAyMjgsIDExOCwgMjQ3LCAyNTEsIAorICAgIDIwNywgMjQyLCAyMjQsIDIyOCwgMjA5LCA2OSwgMjE3LCAzNCwgMjA4LCAxOTQsIDI0MSwgMjUwLCAyMDcsIDIyNCwgMjA4LCAKKyAgICAyMjEsIDIwOCwgMjIyLCAyMDEsIDYxLCAyMjcsIDE0OCwgMjIyLCAxODEsIDI0MiwgMTEsIDQ5LCAyMzQsIDIwMCwgMjA2LCAKKyAgICAxNzYsIDIxMywgMTg0LCAyMDYsIDE3NiwgMjEzLCAxODUsIDMsIDIxNiwgMTk1LCA1MSwgMjM0LCAyMDAsIDIwNiwgMTc2LCAKKyAgICAyMTMsIDE4NCwgNjQsIDIwNSwgMTM5LCAyMDYsIDE3NSwgNjMsIDIwNSwgMTM5LCAyMDYsIDE3NSwgMjA2LCAxNzYsIDIxNywgCisgICAgNzksIDIwNSwgMTU4LCA3NiwgMjIxLCAxMzAsIDI0NiwgMTM0LCAyMjEsIDEzNCwgMjE1LCAyMTMsIDI0OSwgMTMwLCA3NiwgCisgICAgMjM4LCAxNDQsIDIwOCwgMTE1LCAyMzgsIDE0NCwgMjM4LCAxNDUsIDMsIDIyNCwgMTkzLCAyMzcsIDE2LCAyMzgsIDE0NCwgCisgICAgMjE2LCA0OCwgMTE5LCAyMDgsIDExNSwgMjM4LCAxNDQsIDIyNCwgMTY2LCAyMTYsIDEzMiwgNjMsIDIxNCwgMTk0LCAyMjQsIAorICAgIDU0LCA0OSwgMjE2LCA0NiwgMjI0LCA1NCwgNDksIDI0OSwgOTIsIDIxNiwgNDcsIDIyNCwgNTQsIDQ5LCAyMzYsIDIzMSwgCisgICAgMjE2LCA0NywgMjI0LCA1NCwgNDksIDIxNiwgMTg5LCAyMjQsIDU0LCA0OSwgMjQyLCAyNDksIDQ5LCAyMDAsIDIxOSwgMjM0LCAKKyAgICAxOTksIDIwNCwgMTg1LCAyMTcsIDk5LCAyMzQsIDIwMCwgNTQsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgMjM3LCA4MiwgCisgICAgMjA4LCAyMTEsIDIxMywgMTA1LCAyMTMsIDIyMCwgMjM0LCAyMDAsIDMsIDIzNywgODIsIDIwOCwgMjExLCAyMTMsIDEwNSwgCisgICAgMjA2LCAzMywgMTE1LCA1NCwgMjEzLCAxMDUsIDIwNiwgMzMsIDEyNywgNTQsIDIxMywgMTA1LCAyMDIsIDIzMiwgMjM0LCAKKyAgICAxOTksIDIxMywgMTA1LCAyMzQsIDIwMCwgMywgMTAxLCAyMzcsIDg3LCAyMzgsIDMyLCAyMTMsIDIyMCwgMjM0LCAyMDAsIDMsIAorICAgIDIxNiwgMTEwLCAyNDgsIDIwNiwgMTAxLCAyNiwgMjEzLCAyNywgMjM3LCA4MSwgNjQsIDEyNywgMjE1LCA5NiwgNDksIDIzNCwgCisgICAgMjAwLCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgNTEsIAorICAgIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCA1MSwgCisgICAgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCA0OSwgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgNTEsIDIxNSwgOTYsIAorICAgIDI0OSwgMTI3LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIAorICAgIDEyNywgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgMTE1LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIAorICAgIDYzLCAxMjcsIDIxNSwgOTYsIDIyOCwgMTAzLCA2MywgMTE1LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCAKKyAgICAxMjcsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIDIzNCwgMTI3LCAyNDEsIDExMCwgMjQzLCA3MCwgMjI2LCAKKyAgICAyMTMsIDI2LCAyMjEsIDYwLCAxMjYsIDIyMCwgMTIsIDI0MywgNjksIDIxNSwgOCwgMjE1LCAxMDQsIDI0NywgMTcyLCA2MywgCisgICAgMjM0LCAxNjUsIDIxMCwgNTUsIDIzNywgMjksIDI0MCwgMjUzLCA2NCwgMjM0LCAxNjUsIDIxMCwgNTUsIDIzNywgMjksIAorICAgIDI0MCwgMjUzLCAyMDksIDIzLCAyMTAsIDU1LCAyMzcsIDI5LCAyNDAsIDI1MywgMjA2LCAyMzUsIDI0NywgMTE3LCAyMDEsIAorICAgIDYsIDIyNiwgMjEyLCAxMTIsIDI0NywgMjQ0LCAyMjEsIDYwLCAxMjAsIDI0NywgMjQ0LCAyMjEsIDYwLCAxMjYsIDI0NywgCisgICAgMjQ0LCAyMjEsIDYwLCAyMDUsIDEzMCwgNDAsIDIxNiwgOSwgMjQzLCA3MCwgMjM0LCAxNjUsIDI0MCwgMjUzLCAyMTEsIAorICAgIDIwOSwgMjE1LCA5LCAyMzIsIDIyNSwgMjM3LCAxNTIsIDIzMiwgMjI1LCAyMTcsIDM3LCAyNDEsIDMsIDIzMiwgMjI1LCAKKyAgICAyNDAsIDIwNSwgMywgMjA2LCAxMjYsIDI0MCwgMjA1LCAzLCAyMDYsIDEyNywgMjYsIDIxNSwgMTk4LCAyNDAsIDIwNSwgMywgCisgICAgMjE1LCAxOTgsIDIzNiwgMjE2LCAzLCAyMTUsIDE5OCwgMjM2LCAyMTYsIDMsIDIwNSwgMjM4LCAyMzYsIDIxNiwgMywgMjUxLCAKKyAgICA4NiwgMjAwLCAxOTUsIDYzLCAyMzcsIDksIDIzNywgOSwgMTc2LCAyMzcsIDksIDI0NywgMTM0LCAxMjQsIDI0MCwgMjM4LCAKKyAgICAyNDcsIDEzNCwgMjM3LCA5NywgMjQ4LCA3OCwgMjM3LCA5NywgMjQ3LCAxODUsIDIzOCwgMTgxLCAyMTgsIDIwOSwgMjM4LCAKKyAgICAxODEsIDIxOCwgMjEwLCAyMTYsIDE5NSwgMjM4LCAxODEsIDIxOCwgMjEwLCAyMTYsIDIwMSwgMjE4LCAyMDksIDIxOCwgCisgICAgMjEwLCAyMTYsIDE5NSwgMjE4LCAyMTAsIDIxNiwgMjAxLCAyMzgsIDE4MSwgMjQwLCAyMDQsIDIzOCwgMTgxLCAyMTYsIAorICAgIDE5NSwgMjM4LCAxODEsIDIxNiwgMTkzLCAyNDAsIDIwNCwgMjE2LCAxOTUsIDIxNiwgMTkzLCAyMDEsIDg3LCAyMDgsIDIxOCwgCisgICAgMjE4LCAyMTAsIDIxNiwgMjAxLCAyMDgsIDIxOCwgMjQ3LCAxNzEsIDIxNiwgMjAxLCAyNDEsIDExMCwgMjAxLCAxNSwgMjIxLCAKKyAgICAxNTksIDIyMiwgMTIwLCAyMTYsIDI0NCwgMjQ2LCAxMTIsIDUxLCAyNiwgNDksIDIxMCwgMTcwLCAyNTAsIDE5OSwgMjQ3LCAKKyAgICAxNTUsIDIwMCwgMTk1LCAyMjgsIDEwOSwgMjM3LCAzLCAyMDksIDkwLCA5OSwgMjQxLCAxNjQsIDIzNywgMywgMjA5LCA5MCwgCisgICAgOTksIDI0MywgNzEsIDQwLCAyMjYsIDIxNCwgMjEyLCAyNDQsIDIyMCwgNCwgMjE2LCAxOTYsIDMsIDQ0LCAyMDYsIDEyNiwgCisgICAgMjA4LCA4MCwgMjQ3LCAxNSwgMjQyLCA0MSwgMjI2LCA5NSwgMjI0LCAxNjAsIDIwOCwgMjMxLCAyMzQsIDEzNywgMjI4LCAKKyAgICAxMTgsIDIwOSwgMTU1LCAxMjYsIDIxMywgMTk1LCA1NiwgMTI2LCAyMTMsIDE5NSwgNTcsIDEyNiwgMjEzLCAxOTUsIDIyNSwgCisgICAgMjgsIDEyNiwgMjEzLCAxOTUsIDIxMywgNDYsIDQ5LCAyMDgsIDIyOCwgMjQ4LCAzNSwgNTEsIDIwOCwgMjI4LCAyNDgsIDM1LCAKKyAgICAxMjAsIDIwOCwgMjI4LCAyNDgsIDM0LCAxMjYsIDIwOCwgMjI4LCAyNDgsIDM0LCA0OSwgMjA2LCA1MiwgMjQ4LCAzNSwgNTEsIAorICAgIDIwNiwgNTIsIDI0OCwgMzUsIDQ5LCAyNTEsIDczLCAyNDgsIDM1LCA1MSwgMjUxLCA3MywgMjQ4LCAzNSwgMjIxLCA4NiwgCisgICAgMjQ4LCAzNSwgMjI0LCAxOTQsIDIyMSwgODYsIDI0OCwgMzUsIDIyNCwgMTk0LCAyMjEsIDg1LCAyNDksIDk0LCAxMDAsIDMsIAorICAgIDI0OSwgOTMsIDI0OSwgOTQsIDEzNSwgMjAwLCAxOTUsIDI0OSwgOTQsIDEwMCwgMywgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgCisgICAgMjcsIDEzNSwgMjAwLCAxOTUsIDI0OSwgOTQsIDEwMCwgMywgMjcsIDEzNSwgMjAwLCAxOTUsIDE2MiwgMjQ3LCA3LCA4MSwgCisgICAgMjQ5LCA5NCwgMTAwLCAzLCAyNywgMjQ3LCA2LCAyMDAsIDIzMywgMjIyLCAxNjQsIDIyMSwgNjUsIDIzNiwgMTg0LCAyMDUsIAorICAgIDE4MCwgMjA1LCAxMzUsIDIwOCwgMTAxLCA3NiwgMjI0LCAyMDgsIDIwOSwgMTU2LCA3NiwgMjI3LCAyMzcsIDIyMSwgNDYsIAorICAgIDIzNSwgNjEsIDIzNywgMTg5LCAyMzUsIDYxLCAyMzcsIDE5MCwgMywgMjA5LCA0NywgMjM4LCAxNSwgMjM3LCAxOTAsIDMsIAorICAgIDIwNiwgMTkzLCA3NiwgMjI3LCAxNTAsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIwOSwgNDcsIDIzNywgCisgICAgMTkwLCAzLCAxNzYsIDIyMSwgNTksIDI2LCAyMDksIDQ3LCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMTc2LCAKKyAgICAyMjEsIDU5LCAyNiwgMjQ2LCA4MywgMjA3LCAxODAsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTksIDI2LCAKKyAgICAyMDYsIDAsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMzQsIDIxMSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIAorICAgIDIzMywgMTIzLCAyMDEsIDgsIDIzNywgMTg5LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjA5LCA0NywgMjM4LCAxNSwgMjM3LCAKKyAgICAxOTAsIDIxMSwgMjQwLCAyNDEsIDE0NCwgMjM3LCAxLCAyMTMsIDE0NSwgMjM3LCAxODksIDIwOSwgNDcsIDIzNywgMTkwLCAKKyAgICAzLCAyMzQsIDEyNiwgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIwNywgMjI0LCAyMDksIDQ2LCAyMzcsIDE4OSwgCisgICAgMjIwLCAxMCwgMjM3LCAxODksIDIzOCwgMzQsIDIzNywgMTg5LCAyMDQsIDMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjQ2LCAKKyAgICA4MywgMjA3LCAxODAsIDIxNiwgMzksIDIzNywgMTg5LCAyNDMsIDYyLCAyMzcsIDE4OSwgMjQzLCA2MywgMjM3LCAxODksIAorICAgIDIyNiwgMTI4LCAyMzcsIDE4OSwgMjM3LCAxOTAsIDIwNiwgMzYsIDM1LCAyMjYsIDEyOSwgMjI2LCAxMjgsIDIzNywgMTkwLCAKKyAgICAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMjYsIDEyOCwgMjM3LCAxOTAsIDMsIDI0NiwgMTEwLCAyMzgsIDE1LCAyMzcsIDE5MCwgCisgICAgMywgMjA4LCAzMSwgMjA1LCAxNjMsIDIzNywgMTkwLCAzLCAyMDgsIDMxLCAyMDUsIDE2NCwgMjYsIDIwMSwgOCwgMjM4LCAKKyAgICAyMiwgMjM3LCAxOTAsIDMsIDIwOCwgMzEsIDIwNSwgMTY0LCAyNiwgMjA2LCAwLCAyMzgsIDE1LCAyNDEsIDQsIDIzNywgCisgICAgMTg5LCAyMDAsIDIzMiwgMjM3LCAxODksIDI1MSwgNjcsIDIzNywgMTg5LCAyMTUsIDU1LCAyMzcsIDE4OSwgMjQyLCAyMTgsIAorICAgIDIzNywgMTg5LCAyMTYsIDEzLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDIyNCwgNzcsIDc2LCAyMDUsIDc1LCAyNDEsIDQsIAorICAgIDI0NywgMjQ3LCAyMTMsIDE0NSwgMjM3LCAxODksIDIzNiwgMTk1LCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyNTEsIAorICAgIDY1LCAyMzcsIDE4OSwgMjM3LCAxNDUsIDIzNywgMTg5LCAyMDEsIDYyLCAyMzcsIDE4OSwgMjA5LCA3MCwgMjM3LCAxODksIAorICAgIDIwNSwgMjE4LCAyMzcsIDE4OSwgMjM1LCA2MiwgMjM3LCAxODksIDIyNCwgNjMsIDI0MiwgMjE4LCAyMzcsIDE4OSwgMjM3LCAKKyAgICAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjMzLCA3MiwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTksIDI2LCAKKyAgICAyNDYsIDgzLCAyMDcsIDE4MCwgMjM3LCAxOTAsIDIxMSwgMjExLCAyMjgsIDExOCwgMjM3LCAxNDYsIDI1MCwgMTYyLCAyMzcsIAorICAgIDE4OSwgMjM3LCAyMSwgMjM3LCAxODksIDIwOSwgNzEsIDIzNywgMTg5LCAyNDAsIDIzMSwgMjM3LCAxODksIDIzNywgMTkwLCAKKyAgICAyMDEsIDMsIDIyMSwgNTgsIDIzNywgMTkwLCAzLCAyMjIsIDY4LCAyMjIsIDEzMiwgMjM1LCA2MSwgMjQ3LCAxMTIsIDIzNywgCisgICAgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDIwNiwgMTkzLCA3NiwgMjI3LCAxNTAsIAorICAgIDIwOSwgNDcsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMDksIDQ3LCAyNDcsIDExMiwgMjM3LCAKKyAgICAxOTAsIDMsIDIzNCwgMTI2LCAyMzgsIDE1LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDIwMCwgMjE3LCAyMDksIDQ4LCAyMjYsIAorICAgIDEyOCwgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAyNDYsIDExMCwgMjM4LCAxNSwgMjE1LCA1NSwgMjQ3LCAxMTIsIDIzNywgCisgICAgMTg5LCAyNDIsIDIxOCwgMjQ3LCAxMTIsIDIzNywgMTg5LCAyMDEsIDYyLCAyNDcsIDExMiwgMjM3LCAxODksIDIwOSwgNjQsIAorICAgIDIzNiwgMTk1LCAyMzcsIDE4OSwgMjA5LCA2NCwgMjA5LCA0NywgMjM3LCAxODksIDIwMywgMjIyLCAyMzcsIDE4OSwgMjM3LCAKKyAgICAxOTAsIDMsIDIxMiwgMjQyLCAyMzgsIDE1LCAyMzcsIDE5MCwgMywgMjE4LCAyNDIsIDIzNSwgMTA0LCAyMzUsIDI0MCwgCisgICAgMjM3LCAxOTAsIDMsIDIxNywgOTksIDIzNSwgMjQwLCAyMTYsIDExLCAyNDgsIDg0LCAyNDEsIDE1OSwgMjExLCAxODksIAorICAgIDIyMSwgMTAwLCAyMzQsIDEyOSwgMjIxLCAxMDAsIDIwOCwgMjM0LCAyMjEsIDEwMCwgMjM0LCAxNjcsIDIxNiwgMTEsIDIxMywgCisgICAgMjE5LCAxMTIsIDIzNCwgMTk5LCAyMTYsIDExLCAyMTMsIDIxOSwgMjQ4LCA5NiwgMjM0LCAxNzUsIDIyOCwgMTE4LCAyNDcsIAorICAgIDYyLCAyMTYsIDExLCAyMzYsIDE5NCwgMjE2LCAxMSwgMywgMjE1LCA1NSwgMjM3LCAxODksIDIxNiwgMTEsIDMsIDIzNywgCisgICAgMTAsIDIzNCwgMTc0LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIyNSwgMzUsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAKKyAgICAyMjUsIDM1LCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgMzUsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIAorICAgIDM1LCAyMDQsIDE4NSwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMjUsIDM1LCAyMDQsIDE4NSwgMjA4LCAyNTQsIDIwMSwgCisgICAgNDgsIDIxNSwgOTYsIDIyNSwgMzUsIDIwNCwgMTg1LCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgMzUsIDIwNCwgMTg1LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyMDIsIDIxNiwgCisgICAgMjI1LCAzNSwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAxNTcsIDIzOSwgMTQsIAorICAgIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgCisgICAgMzUsIDgwLCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCA4MCwgMjA4LCAyNTQsIDIwMSwgNDgsIAorICAgIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCA4MCwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgCisgICAgODAsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAzNSwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAKKyAgICAyNDgsIDMyLCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjQ4LCAzMiwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIAorICAgIDMyLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAzMiwgODAsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjQ4LCAKKyAgICAzMiwgODAsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIDMyLCA4MCwgMTU3LCAyMzksIDE0LCAyMTUsIDk2LCAKKyAgICAyNDgsIDMyLCA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgMzIsIDIzMywgMTk2LCAyMTQsIDcyLCA1MiwgCisgICAgMjE3LCAyMSwgMjMzLCAxOTYsIDIxNCwgNzIsIDUyLCAyMTcsIDIyLCAyMjgsIDExOCwgNjMsIDIwOCwgMTkzLCAyMDksIDE4LCAKKyAgICAyMTQsIDcyLCA1MiwgMjE3LCAyMSwgMjA5LCAxOCwgMjE0LCA3MiwgNTIsIDIxNywgMjIsIDIyOCwgMTE4LCA2MywgMjA4LCAKKyAgICAxOTMsIDk4LCAyMTIsIDI0OCwgMTgyLCAyMTIsIDI0OCwgODcsIDIxMiwgMjQ4LCAxOTEsIDIxMiwgMjQ4LCAxMzUsIDMzLCAKKyAgICAyMzgsIDgyLCAyMTcsIDIxLCA4MCwgMTM1LCAzMywgMjM4LCA4MiwgMjE3LCAyMSwgMzMsIDE3NiwgMjM4LCA4MiwgMjE3LCAKKyAgICAyMSwgODAsIDMzLCAxNzYsIDIzOCwgODIsIDIxNywgMjEsIDgwLCAyNTEsIDkwLCAyMTcsIDIxLCAyMDcsIDE4MywgMjUxLCAKKyAgICA5MCwgMjE3LCAyMSwgNDMsIDgwLCA1MywgMjA0LCAxODUsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgNDMsIAorICAgIDgwLCA1MywgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA0MywgODAsIDEyOCwgNTMsIDI0NiwgNzEsIDIxNCwgCisgICAgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDIyOCwgNTksIDIxNywgMjEsIDQzLCAyMjgsIDU5LCAyMTcsIDIxLCA4MCwgNDMsIAorICAgIDIyOCwgNTksIDIxNywgMjEsIDIwMiwgMjQ2LCA4MCwgMjA5LCAxNiwgMjAyLCAyNDYsIDgwLCAyMTMsIDEwNiwgMjA5LCAxNiwgCisgICAgMjQ3LCA1LCAyNDgsIDEyMSwgMjEzLCAxMDYsIDI0NywgNSwgMjQ4LCAxMjEsIDIxMiwgMjQ4LCAyMzQsIDExMCwgMjA4LCAKKyAgICA5NiwgMjI0LCAxMDEsIDIxMywgMjI1LCAyNDcsIDEzNSwgMjM0LCA1NSwgMjA1LCAxMjMsIDIzNCwgNTUsIDIwNSwgMTI0LCAKKyAgICAzLCAyNDgsIDIxLCAyMTgsIDIxNiwgMjA1LCAxMjMsIDIyMiwgMTMsIDE2MiwgMjEzLCAyMjYsIDIwOCwgMTAyLCAyMDUsIAorICAgIDEyMSwgMjA1LCAxMjIsIDI0NywgMTM1LCAyNDcsIDI1MiwgMjE3LCA3NSwgMjQ3LCAyNTIsIDIwNSwgNzEsIDI0NywgMjUzLCAKKyAgICAyMDgsIDc2LCAyMjEsIDE2MywgMjUxLCA5NCwgMjM3LCA3OCwgMjM4LCAxNjQsIDIxNSwgODgsIDI0NywgMTM1LCAyMTcsIAorICAgIDc1LCAyMTUsIDg4LCAyNDcsIDEzNSwgMjA2LCAyMTEsIDIxNywgNzUsIDIwNiwgMjExLCAyNTAsIDEyNywgMjE3LCA3NSwgCisgICAgMjUwLCAxMjcsIDIxMywgMTc3LCAyMDMsIDUxLCAyNDEsIDE0MCwgMjA1LCA2MiwgMjUwLCAxOTQsIDIyNCwgNjgsIDIwNSwgCisgICAgMTI5LCAyMjEsIDk0LCAyMjEsIDY0LCAyMTMsIDIyNCwgMjA3LCAxOTYsIDIxMywgMjI0LCAyMjEsIDY0LCAyNDcsIDE4NCwgCisgICAgMjUxLCAyMDcsIDIwNSwgMTIwLCAyMTAsIDE3LCAyMTIsIDIxOCwgMjA4LCAyMjYsIDIzMywgMTc3LCAyMDUsIDEyNywgMjI0LCAKKyAgICAxOTYsIDgzLCAyMDUsIDEyNywgMjI0LCAxOTYsIDI0MywgNDksIDU0LCAyMTUsIDg4LCAyNDcsIDExOSwgMjEzLCA5OSwgCisgICAgMjI0LCAxOTYsIDIwNSwgOTUsIDIzNywgNTQsIDIxNywgNzksIDIxNSwgNjYsIDI0MCwgMTg1LCAyMTgsIDI0MiwgMjM4LCAKKyAgICAxNTAsIDU0LCAyMDksIDQ1LCA5OSwgMjE4LCAyNDIsIDIwOSwgNDUsIDk5LCAyMTQsIDE5MywgMjI0LCAxNDksIDIyOCwgCisgICAgMTE4LCAyMjgsIDksIDIxNSwgMTM0LCA5OSwgMjQwLCAyMTIsIDIxOCwgMjE1LCAyMjQsIDE0OSwgOTksIDIxNSwgNjAsIAorICAgIDIwMSwgODMsIDk5LCAyMTgsIDIzMSwgMjAxLCA4MywgOTksIDI0OCwgMTg0LCAyMTgsIDI0MiwgMjQ4LCAxODMsIDI0OCwgCisgICAgMTgyLCAyMjEsIDY0LCAyNDgsIDE4MiwgMjE2LCA2MywgMjE4LCAyNDIsIDIxNiwgNjIsIDI0NiwgMjI2LCAyNDIsIDIyNywgCisgICAgMjIyLCAzNiwgOTksIDIwMCwgMjQ3LCA5OSwgMjEzLCAxMTUsIDI0OSwgMTMyLCA5OSwgMjA1LCAxODEsIDIwMSwgODMsIAorICAgIDI0NiwgMTA3LCAyMDksIDIzMSwgMjQ5LCA1MiwgMjQ5LCA1MCwgMjE2LCA5NiwgMjQzLCAzMywgMjQyLCAxODEsIDI0OSwgCisgICAgMTEwLCAyNDYsIDEzNSwgNDksIDIyNCwgMzIsIDIwNSwgOTksIDMsIDIxMiwgMjE5LCAyNDMsIDE0LCAyMTQsIDI1MywgNTQsIAorICAgIDQ0LCAyMjgsIDkyLCAyMDgsIDI1NSwgMjQ4LCA3NSwgOTksIDIzNSwgMTM5LCA5OSwgMjQzLCA3LCAyNiwgMjI1LCA4MSwgCisgICAgMjA5LCA3MSwgMjUxLCAyNDgsIDIwOSwgMjUzLCAyNDksIDEwOSwgMjQ4LCAyMjksIDI0OCwgMjMwLCAyNDgsIDI1MywgMjE1LCAKKyAgICAxMzQsIDc2LCAyMDAsIDIzMSwgMjE3LCAxMjksIDU0LCAyMDksIDI1MywgMjA1LCA3MiwgMjM0LCAyMDcsIDI2LCAyMDAsIAorICAgIDIyNSwgMjEwLCAzMCwgMjE3LCAxMDQsIDIzOSwgMTQyLCAyMjEsIDY4LCAyMTMsIDIyNSwgMjA1LCAxMzEsIDIyMSwgNzAsIAorICAgIDI0OCwgMTIwLCAyMDMsIDIyNywgMjIxLCAxNzQsIDI1MSwgMTY0LCAyMDMsIDIyNywgMjUxLCAxNjQsIDIwMywgMjI3LCA0LCAKKyAgICAyNTEsIDE2NCwgNCwgMjUxLCAxNjQsIDIxOCwgMjIwLCAyNTEsIDE2NCwgMjUxLCAxNjUsIDI0MSwgMTI0LCAyNTEsIDE2NSwgCisgICAgMjUwLCAyMDUsIDIxMSwgMjQ3LCAyMTcsIDc1LCAyMzcsIDc4LCAyMzgsIDE2NCwgMjQxLCA1NCwgMjI0LCAxMDEsIDIxNiwgCisgICAgOTksIDIxMCwgMTcsIDIxMSwgMjE1LCAyMjEsIDcwLCAyMTEsIDIxNSwgMjQ3LCAxNDYsIDEzOSwgMTYsIDM2LCAyMTQsIDY4LCAKKyAgICAxMzksIDE2LCAzNiwgMjUxLCAxNjYsIDEzOSwgMTYsIDM2LCAyMzcsIDc3LCAxMzksIDE2LCAzNiwgMjM5LCAxNywgMTM5LCAKKyAgICAxNiwgMzYsIDIwMSwgODIsIDEzOSwgMTYsIDM2LCAyNTAsIDI1NSwgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjEzLCAxNjQsIAorICAgIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIxMywgMTYzLCAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMDIsIDE5OSwgMTM5LCAxNiwgCisgICAgMzYsIDI1MSwgMCwgMjAyLCAxOTgsIDEzOSwgMTYsIDM2LCAyMDIsIDIxMywgMTM5LCAxNiwgMzYsIDIwMiwgMjEyLCAxMzksIAorICAgIDE2LCAzNiwgMjAyLCAyMTEsIDEzOSwgMTYsIDM2LCAyMDcsIDIzNSwgMTM5LCAxNiwgMzYsIDIxNSwgMjIxLCAyMDcsIDIzNSwgCisgICAgMTM5LCAxNiwgMzYsIDYzLCAyMDcsIDIzNSwgMTM5LCAxNiwgMzYsIDIyMiwgMzUsIDIwOCwgMTAsIDEzOSwgMTYsIDM2LCAKKyAgICAyMjIsIDM1LCAyMDgsIDksIDEzOSwgMTYsIDM2LCAyMjIsIDM1LCAyMDgsIDgsIDEzOSwgMTYsIDM2LCAyNDYsIDE1OCwgCisgICAgMTM5LCAxNiwgMzYsIDIxMiwgMjcsIDEzOSwgMTYsIDM2LCAyMTksIDEwMSwgMTM5LCAxNiwgMzYsIDIwMiwgMTk3LCAxMzksIAorICAgIDE2LCAzNiwgMjAyLCAxOTYsIDEzOSwgMTYsIDM2LCAyMTIsIDI0OSwgMjEyLCAyNywgMTM5LCAxNiwgMzYsIDIxMiwgMjQ5LCAKKyAgICAyMTIsIDI2LCAxMzksIDE2LCAzNiwgMjM1LCAxMDgsIDEzOSwgMTYsIDM2LCAyMDksIDE1MiwgMTM5LCAxNiwgMzYsIDIyOCwgCisgICAgMzIsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMjgsIDMyLCAyMTcsIDI3LCAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAKKyAgICAyMjgsIDMxLCAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyMjgsIDMxLCAxMzksIDE2LCAzNiwgMjQzLCAyNCwgMjE3LCAKKyAgICAyOCwgMTM5LCAxNiwgMzYsIDIyOCwgMzAsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjQzLCAyMywgCisgICAgMTM5LCAxNiwgMzYsIDI0MiwgMjM5LCA3NiwgMjQzLCAyMywgMTM5LCAxNiwgMzYsIDI0MiwgMjM5LCA3NiwgMjQzLCAyMiwgCisgICAgMTM5LCAxNiwgMzYsIDI0MywgMjQsIDI1MSwgNDEsIDEzOSwgMTYsIDM2LCAyMTIsIDI4LCA3NiwgMjQzLCAyNCwgMjUxLCAKKyAgICA0MSwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyMTIsIDI4LCA3NiwgMjQzLCAyMywgMTM5LCAxNiwgMzYsIDIwMywgNDYsIAorICAgIDEzOSwgMTYsIDM2LCAyMDUsIDIzMSwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIyNSwgMzksIDIxNywgMjgsIDEzOSwgMTYsIAorICAgIDM2LCAyNTEsIDQwLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDI1MSwgMzksIDEzOSwgMTYsIDM2LCAKKyAgICAyMTIsIDI4LCA3NiwgMjUxLCAzOSwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyMTIsIDI4LCA3NiwgMjUxLCAzOSwgCisgICAgMTM5LCAxNiwgMzYsIDIwMiwgMjE0LCA3NiwgMjUxLCAzOSwgMTM5LCAxNiwgMzYsIDIxMywgMTYwLCA3NiwgMjUxLCAzOSwgCisgICAgMTM5LCAxNiwgMzYsIDIxMywgMTYwLCA3NiwgMjUxLCAzOCwgMTM5LCAxNiwgMzYsIDIxMywgMTU5LCAxMzksIDE2LCAzNiwgCisgICAgMjEzLCAxNTgsIDEzOSwgMTYsIDM2LCAyMTMsIDE1NywgMTM5LCAxNiwgMzYsIDIxMywgMTU2LCAxMzksIDE2LCAzNiwgMjUxLCAKKyAgICAxMjcsIDEzOSwgMTYsIDM2LCAyNTEsIDEyNiwgMTM5LCAxNiwgMzYsIDIyMiwgMTU1LCAxMzksIDE2LCAzNiwgMjEyLCAzNCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MCwgMTk4LCAxMzksIDE2LCAzNiwgMjEzLCAxODcsIDEzOSwgMTYsIDM2LCAyMTMsIDE4NiwgMTM5LCAKKyAgICAxNiwgMzYsIDI1MCwgMTMwLCAxMzksIDE2LCAzNiwgMjQ4LCAxNTMsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMDYsIDIzMCwgCisgICAgMTM5LCAxNiwgMzYsIDIwNiwgMjI5LCAxMzksIDE2LCAzNiwgMjE0LCA3NCwgMjI0LCAxODUsIDEzOSwgMTYsIDM2LCAyNDgsIAorICAgIDEwMSwgMTM5LCAxNiwgMzYsIDI0OCwgMTAwLCAxMzksIDE2LCAzNiwgMjQ4LCA5OSwgMTM5LCAxNiwgMzYsIDI1MSwgMTAzLCAKKyAgICAxMzksIDE2LCAzNiwgMjE3LCAxMDMsIDEzOSwgMTYsIDM2LCAyMDgsIDIxNCwgMTM5LCAxNiwgMzYsIDIwNSwgMjI5LCAxMzksIAorICAgIDE2LCAzNiwgMjM1LCAzMCwgMTM5LCAxNiwgMzYsIDIwMSwgNzAsIDEzOSwgMTYsIDM2LCAyMTUsIDU0LCAxMzksIDE2LCAzNiwgCisgICAgMjQ3LCAxNjcsIDEzOSwgMTYsIDM2LCAyMDQsIDE3NywgMTM5LCAxNiwgMzYsIDI0NywgMTM3LCAyMjEsIDc1LCAxMzksIDE2LCAKKyAgICAzNiwgMjExLCAyMjUsIDc2LCAyMjcsIDE1MiwgMTM5LCAxNiwgMzYsIDI0NywgMTgxLCAxMzksIDE2LCAzNiwgMjA1LCA5MiwgCisgICAgMTM5LCAxNiwgMzYsIDIwOCwgMTA3LCAyMDUsIDkyLCAxMzksIDE2LCAzNiwgMjI0LCAxMDAsIDEzOSwgMTYsIDM2LCAyMDksIAorICAgIDI3LCAxMzksIDE2LCAzNiwgMjAzLCAyMDYsIDEzOSwgMTYsIDM2LCAyMzMsIDEyMSwgMjM5LCAxMjEsIDEzOSwgMTYsIDM2LCAKKyAgICAyNTAsIDE3NiwgMTM5LCAxNiwgMzYsIDIxNSwgNjIsIDI1MCwgMTc2LCAxMzksIDE2LCAzNiwgMjQ4LCA1MywgMTM5LCAxNiwgCisgICAgMzYsIDIxNSwgNTMsIDI0OCwgNTMsIDEzOSwgMTYsIDM2LCAyNTEsIDEwMCwgMTM5LCAxNiwgMzYsIDIwOCwgNjMsIDIwNywgCisgICAgMjE2LCAyMDgsIDYyLCAxMzksIDE2LCAzNiwgMjA4LCA2MywgMjA3LCAyMTYsIDIwOCwgNjEsIDEzOSwgMTYsIDM2LCAyMDgsIAorICAgIDcsIDEzOSwgMTYsIDM2LCAyMTUsIDI2LCAxMzksIDE2LCAzNiwgMjQwLCAyNDgsIDEzOSwgMTYsIDM2LCAyNDAsIDI1MCwgCisgICAgMTM5LCAxNiwgMzYsIDI0MCwgMjQ5LCAxMzksIDE2LCAzNiwgMjE0LCAyMDIsIDEzOSwgMTYsIDM2LCAyMTQsIDE5MSwgMTM5LCAKKyAgICAxNiwgMzYsIDI0MiwgMjI1LCAxMzksIDE2LCAzNiwgMjQyLCAyMjQsIDEzOSwgMTYsIDM2LCAyNDIsIDIyMywgMTM5LCAxNiwgCisgICAgMzYsIDI0MiwgMjIyLCAxMzksIDE2LCAzNiwgMjQyLCAyMjEsIDEzOSwgMTYsIDM2LCAyNTEsIDE0MSwgMTM5LCAxNiwgMzYsIAorICAgIDI0OSwgNTMsIDc2LCAyMjIsIDEzNywgMTM5LCAxNiwgMzYsIDI0OSwgNTMsIDc2LCAyMDMsIDc4LCAxMzksIDE2LCAzNiwgCisgICAgMjEzLCAxMTMsIDEzOSwgMTYsIDM2LCAyMzMsIDExMywgMTM5LCAxNiwgMzYsIDIxOSwgMTI5LCAxMzksIDE2LCAzNiwgMjQxLCAKKyAgICAyMzIsIDEzOSwgMTYsIDM2LCAyMjEsIDg5LCAxMzksIDE2LCAzNiwgMTY3LCAyMzksIDE1NiwgMTM5LCAxNiwgMzYsIDE2NywgCisgICAgMjE3LCAxLCA2MywgMjI1LCAyMywgMjI4LCAxNSwgNTEsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgMjI4LCAxNSwgNTEsIAorICAgIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCAyMjgsIDE1LCA1MSwgMjA1LCA5OCwgNjMsIDIzOSwgMTY2LCAyMjgsIDE1LCA1MSwgCisgICAgMjA1LCA5OCwgNjMsIDIwOSwgNjQsIDQsIDI0NiwgMTU1LCAyMjIsIDY2LCAyNywgNjQsIDI0NiwgMTU1LCAyNywgNjQsIAorICAgIDI0NiwgMTU1LCA4MCwgNjQsIDI0NiwgMTU1LCAyMDIsIDI0NiwgODAsIDY0LCAyNDYsIDE1NSwgMjM4LCAyNiwgODAsIDY0LCAKKyAgICAyNDYsIDE1NSwgNjQsIDI0NiwgMTU2LCAyNDMsIDQ1LCA2MywgNCwgMjQ2LCAxNTUsIDIxMiwgMjIxLCAyMDYsIDIzMSwgNjMsIAorICAgIDIwNSwgMjI2LCAyMDgsIDE5MywgNjMsIDIwOSwgNjQsIDQsIDIwOCwgMTkzLCAxNjIsIDY0LCAyMDgsIDE5MywgMjIyLCA2NiwgCisgICAgNjQsIDIwOCwgMTkzLCAyNywgNjQsIDIwOCwgMTkzLCA4MCwgNjQsIDIwOCwgMTkzLCAyMDIsIDI0NiwgODAsIDY0LCAyMDgsIAorICAgIDE5MywgMjM4LCAyNiwgODAsIDY0LCAyMDgsIDE5MywgNjQsIDUyLCAyNDMsIDQ1LCA2MywgMjAyLCAyNDYsIDQsIDIwOCwgCisgICAgMTkzLCA2NCwgNTIsIDI0MywgNDUsIDYzLCAyMjIsIDY2LCAyMDgsIDE5MywgNTIsIDIwNiwgMjMxLCA2MywgMjA1LCAyMjYsIAorICAgIDI0MSwgNjQsIDYzLCAyMDIsIDI0NiwgNCwgMjQxLCA2NCwgNjMsIDIyMiwgNjYsIDQsIDI0MSwgNjQsIDY0LCAyNDEsIDY1LCAKKyAgICAyNDMsIDQ1LCA2MywgMjAyLCAyNDYsIDQsIDI0MSwgNjQsIDY0LCAyNDEsIDY1LCAyNDMsIDQ1LCA2MywgMjIyLCA2NiwgCisgICAgMjQxLCA2NCwgMjQxLCA2NSwgMjA2LCAyMzEsIDYzLCAyMDUsIDIyNiwgMjI0LCA0OSwgNjMsIDIwMiwgMjQ2LCA0LCAyMjQsIAorICAgIDQ5LCA2MywgMjIyLCA2NiwgNCwgMjI0LCA0OSwgNjQsIDIyNCwgNTAsIDI0MywgNDUsIDYzLCA0LCAyMjQsIDQ5LCAyMDYsIAorICAgIDc3LCAzMSwgMjQyLCAyMzQsIDE2MiwgMzEsIDI0MiwgMjM0LCAyMjIsIDY2LCAzMSwgMjQyLCAyMzQsIDI3LCAzMSwgMjQyLCAKKyAgICAyMzQsIDIwMiwgMjQ2LCAyNywgMzEsIDI0MiwgMjM0LCAyMDIsIDI0NiwgODAsIDMxLCAyNDIsIDIzNCwgMjM4LCAyNiwgODAsIAorICAgIDMxLCAyNDIsIDIzNCwgMjA2LCA3NywgMjEyLCAyNCwgMTYyLCAyMTIsIDI0LCAyMjIsIDY2LCAyMTIsIDI0LCAyNywgMjEyLCAKKyAgICAyNCwgODAsIDIxMiwgMjQsIDIwMiwgMjQ2LCA4MCwgMjEyLCAyNCwgMjM4LCAyNiwgODAsIDIxMiwgMjQsIDE2MiwgMjM3LCAKKyAgICA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMjIsIDY2LCAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDI3LCAyMzcsIAorICAgIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIwMiwgMjQ2LCA4MCwgCisgICAgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMzgsIDI2LCA4MCwgMjM3LCA2MSwgMjA4LCAyMDcsIDI1MCwgMTY1LCAKKyAgICAxNjIsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIAorICAgIDI3LCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjAyLCAKKyAgICAyNDYsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMzgsIDI2LCA4MCwgMjA5LCAxMDYsIDIwOCwgMjA3LCAKKyAgICAyNTAsIDE2NSwgMTYyLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMjIsIDY2LCAyMzgsIDIzMiwgMjA4LCAyMDcsIAorICAgIDI1MCwgMTY1LCAyNywgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAKKyAgICAxNjUsIDIwMiwgMjQ2LCA4MCwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMTYyLCAxMjYsIDIxNSwgOTgsIDYzLCAKKyAgICAyMDgsIDEwOSwgMjIyLCA2NiwgMTI2LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDEyNiwgMjE1LCA5OCwgNjMsIDIwOCwgCisgICAgMTA5LCAyMjIsIDY2LCAxMjYsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMTYyLCAyMzYsIDIyOSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMzYsIDIyOSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMzYsIDIyOSwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAyMTMsIAorICAgIDEwNiwgMTYyLCAyMzYsIDIyOSwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAxNjIsIDIzNywgNjEsIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgODAsIDIzNywgNjEsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjIyLCA2NiwgMjA5LCAxMDYsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIwOSwgMTA2LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIwOSwgMTA2LCAyMTUsIDk4LCAKKyAgICAyMTUsIDE1NSwgMjA4LCAxMDksIDIyMiwgNjYsIDIzOCwgMjMyLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMzgsIAorICAgIDIzMiwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMDIsIDI0NiwgODAsIDIzOCwgMjMyLCAyMTUsIDk4LCA2MywgMjA4LCAKKyAgICAxMDksIDgwLCAyMzgsIDIzMiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAxNjIsIDIwNCwgMTY1LCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDgwLCAyMDQsIDE2NSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjA0LCAxNjUsIDIxNSwgOTgsIAorICAgIDIxNSwgMTU1LCAyMDgsIDEwOSwgOTgsIDU1LCAzLCA0LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgNCwgMjA1LCAKKyAgICA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgNCwgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgNTUsIDMsIDQsIDIwNSwgOTksIAorICAgIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDU1LCAzLCAyMjIsIDY2LCAKKyAgICAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgCisgICAgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgCisgICAgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCAKKyAgICAxOTEsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIAorICAgIDE4MiwgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODcsIDU1LCAzLCA0LCAyMzgsIDExOCwgMjUwLCAyMDIsIDE5MSwgCisgICAgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIAorICAgIDIzOCwgMTE4LCAyNTAsIDIwMiwgODcsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDE5MSwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDk4LCA1NSwgMywgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTgyLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgODcsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxOTEsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA5OCwgNTUsIDMsIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE4MiwgNTUsIDMsIAorICAgIDIyNSwgNzEsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDg3LCA1NSwgMywgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCAKKyAgICA4MCwgMTkxLCA1NSwgMywgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA5OCwgMjA1LCA5NywgNTUsIDMsIDIyMCwgCisgICAgMTI0LCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIDEyNCwgMjEwLCA5OSwgODcsIDIwNSwgOTcsIDU1LCAzLCAKKyAgICAyMjAsIDEyNCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjIwLCAxMjQsIDIxMCwgOTksIDk4LCAyMDUsIDk3LCAKKyAgICA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjIyLCA2NiwgMjEwLCA5OSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCA5OCwgCisgICAgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDk4LCAyMDUsIDk3LCAKKyAgICA1NSwgMywgODAsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDgwLCAyMTAsIDk5LCA4NywgMjA1LCA5NywgNTUsIDMsIAorICAgIDgwLCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCA4MCwgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIDU1LCAzLCAyMDIsIAorICAgIDI0NiwgODAsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIwMiwgMjQ2LCA4MCwgMjEwLCA5OSwgODcsIDIwNSwgCisgICAgOTcsIDU1LCAzLCAyMDIsIDI0NiwgODAsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIwMiwgMjQ2LCA4MCwgMjEwLCAKKyAgICA5OSwgOTgsIDIzNywgODUsIDQ4LCAxODIsIDIzNywgODUsIDQ4LCA4NywgMjM3LCA4NSwgNDgsIDE5MSwgMjM3LCA4NSwgNDgsIAorICAgIDk4LCA5NSwgNDgsIDE4MiwgOTUsIDQ4LCA4NywgOTUsIDQ4LCAxOTEsIDk1LCA0OCwgOTgsIDI0MywgNzIsIDQ4LCAxODIsIAorICAgIDI0MywgNzIsIDQ4LCA4NywgMjQzLCA3MiwgNDgsIDE5MSwgMjQzLCA3MiwgNDgsIDk4LCA4MCwgMjQzLCA3MiwgNDgsIDE4MiwgCisgICAgODAsIDI0MywgNzIsIDQ4LCA4NywgODAsIDI0MywgNzIsIDQ4LCAxOTEsIDgwLCAyNDMsIDcyLCA0OCwgOTgsIDgwLCA0OCwgCisgICAgMTgyLCA4MCwgNDgsIDg3LCA4MCwgNDgsIDE5MSwgODAsIDQ4LCA5OCwgNDMsIDQ4LCAxODIsIDQzLCA0OCwgODcsIDQzLCAKKyAgICA0OCwgMTkxLCA0MywgNDgsIDE1NywgMjAxLCA0OCwgNDMsIDQ4LCAxNTcsIDIzOSwgMTQsIDQzLCA0OCwgMjA4LCAyNTQsIAorICAgIDIzOSwgMTQsIDQzLCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDQzLCA0OCwgNDksIDUxLCA0MywgNDgsIDExNSwgMTI3LCA0MywgCisgICAgNDgsIDIwMSwgMjcsIDk4LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgCisgICAgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAxNjIsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjM5LCAxNCwgCisgICAgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCA5OCwgMTU0LCAKKyAgICA0OCwgMjAxLCAyNywgMTgyLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAxNTQsIDQ4LCAKKyAgICAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMTU0LCA0OCwgMjAxLCAyNywgCisgICAgMjA4LCAyNTQsIDIzOSwgMTQsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAxNTQsIDQ4LCAyMDEsIDI3LCAKKyAgICA5OCwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgMjIyLCAKKyAgICA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDIyMiwgCisgICAgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIAorICAgIDIzOSwgMTQsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMjIsIDY2LCAxNTQsIDQ4LCAKKyAgICAyMDEsIDI3LCA5OCwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTkxLCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCA4MCwgMTU0LCA0OCwgCisgICAgMjAxLCAyNywgMTU3LCAyMzksIDE0LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIzOSwgMTQsIDgwLCAxNTQsIAorICAgIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDk4LCAyMDIsIDI0NiwgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE4MiwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCA4NywgMjAyLCAyNDYsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDIwMiwgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMDEsIDQ4LCAyMDIsIAorICAgIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjM5LCAxNCwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjAxLCA0OCwgCisgICAgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCA5OCwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCAKKyAgICAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAKKyAgICAyNTAsIDIwMiwgMTgyLCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA2NCwgNTUsIDIwMSwgNSwgCisgICAgMjA1LCA5OSwgMjUwLCAyMDIsIDE5MSwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIAorICAgIDIxOCwgMjExLCAyMDcsIDYsIDE4MiwgNTUsIDMsIDIxOCwgMjExLCAyMDcsIDYsIDg3LCA1NSwgMywgMjE4LCAyMTEsIDIwNywgCisgICAgNiwgMTkxLCA1NSwgMywgMjE4LCAyMTEsIDIwNywgNiwgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTAyLCA4MCwgNTUsIAorICAgIDIxMCwgMTAwLCAyMDEsIDI1LCAxMjAsIDIwNiwgNzEsIDgwLCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDExMiwgMjM0LCAKKyAgICAyMTMsIDgwLCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDExMiwgMjA2LCA3NCwgOTgsIDI0OCwgOTAsIDY0LCA0OCwgODcsIAorICAgIDI0OCwgOTMsIDIxMCwgMTAyLCA2NCwgNDgsIDk4LCAyMDUsIDE1OCwgMjEwLCAxMDIsIDY0LCA0OCwgODcsIDIwNSwgMTU4LCAKKyAgICAyMTAsIDEwMiwgNjQsIDQ4LCA5OCwgMjI1LCAyMiwgNjQsIDQ4LCA4NywgMjEzLCA0MCwgNjQsIDQ4LCA5OCwgMjEzLCA0MCwgCisgICAgNjQsIDQ4LCA4NywgMjI1LCAyMiwgNjQsIDQ4LCA5OCwgMjQ5LCAxMjgsIDIxMCwgMTAxLCA2NCwgNDgsIDg3LCAyNDksIAorICAgIDEyOCwgMjEwLCAxMDEsIDY0LCA0OCwgOTgsIDIzNiwgMTk4LCAyMTAsIDEwMSwgNjQsIDQ4LCA4NywgMjM2LCAxOTgsIDIxMCwgCisgICAgMTAxLCA2NCwgNDgsIDY0LCA1NSwgMjEwLCAxMDAsIDIwMSwgMjUsIDEwMiwgNjQsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgCisgICAgMTIwLCAyMDYsIDcxLCAxOTksIDIzLCAyMzcsIDE4OSwgMjIxLCAxMDQsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjA2LCAKKyAgICA5NCwgMjIwLCAxNiwgMjM3LCAxODksIDIwNiwgNzYsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjM0LCAxMzUsIDIxMiwgCisgICAgMjUxLCAyMzcsIDE4OSwgMjMzLCA5MSwgMjM3LCAxODksIDIsIDc2LCAyMDYsIDEwNywgMjMzLCAxMjMsIDI0NywgMTY5LCAKKyAgICAyMjIsIDc3LCAyMzQsIDE5OSwgMjEzLCAyMjAsIDI0OSwgMTMwLCA3NiwgMjM0LCAxOTksIDIyNSwgMjcsIDIzNywgNjYsIAorICAgIDIxMywgNDUsIDIzNywgNjYsIDIzNCwgMTczLCAyMzQsIDIwMCwgMywgMTI0LCAyNiwgMTAxLCAyMzcsIDgyLCAyNDIsIDIzMSwgCisgICAgMjM3LCAxOTAsIDMsIDI0MiwgMjU0LCAyMzQsIDE1NywgMjQ2LCA5OSwgMjM3LCAxODksIDIyMCwgMTEzLCAyMzcsIDE4OSwgCisgICAgMjEyLCAyNDIsIDIxNywgNzksIDIwNiwgMTA3LCAyMzcsIDMyLCAyMjUsIDU3LCAyMzksIDE0NywgMjM3LCAxODksIDIyMywgCisgICAgMjUzLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDIxNiwgMTc2LCAyMDksIDM5LCAyMzcsIDE4OSwgMjE1LCAyNCwgMjAwLCAyNTAsIAorICAgIDIxMCwgMTczLCAyMTUsIDEzLCAyMjIsIDE4MSwgMjI4LCAxMTgsIDIwNCwgMTczLCAyMjEsIDcyLCAyNDYsIDE5OSwgMjA5LCAKKyAgICAyMjQsIDIxNiwgMTEsIDI0MCwgMTk4LCAyNDcsIDExNiwgMjI3LCAxNDIsIDIzNywgMTI2LCAyMjEsIDEyOSwgMjE2LCAzNCwgCisgICAgMjAwLCAyMjQsIDIwMSwgODMsIDIxNSwgODYsIDIzNCwgMTc4LCAyMDEsIDE5LCAyMzcsIDI0LCAyMzksIDE0MywgMywgMjM5LCAKKyAgICAxNDEsIDI0NiwgMTE3LCAyMzUsIDEyNywgMjA0LCAyMDEsIDIzNSwgMTI4LCAyMDgsIDIwNiwgMjM1LCAxMTQsIDIyMCwgMTMsIAorICAgIDIxMywgNDcsIDIzNywgNzMsIDIxNSwgMTM0LCAyMjIsIDY5LCAyMTEsIDE5NiwgMjE1LCAxMzQsIDIyMiwgNjksIDIwNiwgCisgICAgNzUsIDIxNSwgMTM0LCAyMjIsIDY5LCAyNDgsIDc3LCAyMzUsIDEyMiwgMjIyLCAxNDEsIDI1MCwgMTkyLCAyMDMsIDI0MywgCisgICAgMjQyLCAyMzgsIDI1MCwgMTE4LCAyNDIsIDIwOCwgMjQ5LCAxMjEsIDIxNSwgNTksIDI0NywgMTIwLCAyNDksIDEwOCwgMjQ4LCAKKyAgICA2MiwgMjM1LCA2NCwgMjEyLCAzMiwgMjEwLCA5MywgMjE2LCAxNjMsIDc2LCAyMzcsIDEsIDIwOCwgMjgsIDIzNywgNDMsIAorICAgIDIzOCwgMjQ2LCAyMzUsIDEyOSwgNzYsIDIyMSwgMTczLCAyMTYsIDY4LCAyMjYsIDEyNCwgMjE2LCAxNjAsIDI0MiwgMjUxLCAKKyAgICAyMjQsIDE2NCwgMjM3LCAxODksIDIxMSwgMjEzLCAyMDQsIDE5MCwgMjAzLCAyNDUsIDIzNywgMTg5LCAyMzksIDI0LCAyMzksIAorICAgIDEzMywgMjQ5LCA1NSwgMjEwLCA4MCwgMjE2LCAyMzcsIDIzNiwgMjIxLCAyMzcsIDE4OSwgMjQ3LCAyNDUsIDI0MSwgMTU4LCAKKyAgICAyMzUsIDk3LCAyMjQsIDE0MywgMjEzLCA5MiwgMjA5LCAyMjYsIDIwOCwgMTg3LCAyNDYsIDI1NSwgMjAxLCA1OSwgMTIsIAorICAgIDE1LCAyMzIsIDIyMSwgMTIsIDE1LCAyMzIsIDIyMCwgMTIsIDE1LCAyMzIsIDIxOSwgMTIsIDE1LCAyMzIsIDIxOCwgMTIsIAorICAgIDE1LCAyMzIsIDIxNywgMTIsIDE1LCAyMzIsIDIxNiwgMTIsIDE1LCAyMzIsIDIxNSwgMTIsIDE1LCAyMzIsIDIxNCwgMTIsIAorICAgIDE1LCAyMzIsIDIxMywgMTIsIDE1LCAyMzIsIDIxMiwgMTIsIDE1LCAyMzIsIDIxMSwgMTIsIDE1LCAyMzIsIDIxMCwgMTIsIAorICAgIDE1LCAyMzIsIDIwOSwgMTIsIDE1LCAyMzIsIDIwOCwgMTIsIDE1LCAyMzIsIDIwNywgMTIsIDE1LCAyMzIsIDIwNiwgMTIsIAorICAgIDE1LCAyMzIsIDIwNSwgMTIsIDE1LCAyMzIsIDIwNCwgMTIsIDE1LCAyMzIsIDIwMywgMTIsIDE1LCAyMzIsIDIwMiwgMTIsIAorICAgIDE1LCAyMzIsIDIwMSwgMTIsIDE1LCAyMzIsIDIwMCwgMTIsIDE1LCAyMzIsIDE5OSwgMTIsIDE1LCAyMzIsIDE5OCwgMTIsIAorICAgIDE1LCAyMzIsIDE5NywgMTIsIDE1LCAyMzIsIDE5NiwgMTIsIDE1LCAyMzIsIDE5NSwgMTIsIDE1LCAyMzIsIDE5NCwgMTIsIAorICAgIDE1LCAyMzIsIDE5MywgMTIsIDE1LCAyMzIsIDE5MiwgMTIsIDE1LCAyMzIsIDE5MSwgMTIsIDE1LCAyMzIsIDE5MCwgMTIsIAorICAgIDE1LCAyMzIsIDE4OSwgMTIsIDE1LCAyMzIsIDE4OCwgMTIsIDE1LCAyMzIsIDE4NywgMTIsIDE1LCAyMzIsIDE4NiwgMTIsIAorICAgIDE1LCAyMzIsIDE4NSwgMTIsIDE1LCAyMzIsIDE4NCwgMTIsIDE1LCAyMzIsIDE4MywgMTIsIDE1LCAyMzIsIDE4MiwgMTIsIAorICAgIDE1LCAyMzIsIDE4MSwgMTIsIDE1LCAyMzIsIDE4MCwgMTIsIDE1LCAyMzIsIDE3OSwgMTIsIDE1LCAyMzIsIDE3OCwgMTIsIAorICAgIDE1LCAyMzIsIDE3NywgMTIsIDE1LCAyMzIsIDE3NiwgMTIsIDE1LCAyMzIsIDE3NSwgMTIsIDE1LCAyMzIsIDE3NCwgMTIsIAorICAgIDE1LCAyMzIsIDE3MywgMTIsIDE1LCAyMzIsIDE3MiwgMTIsIDE1LCAyMzIsIDE3MSwgMTIsIDE1LCAyMzIsIDE3MCwgMTIsIAorICAgIDE1LCAyMzIsIDE2OSwgMTIsIDE1LCAyMzIsIDE2OCwgMTIsIDE1LCAyMzIsIDE2NywgMTIsIDE1LCAyMzIsIDE2NiwgMTIsIAorICAgIDE1LCAyMzIsIDE2NSwgMTIsIDE1LCAyMzIsIDE2NCwgMTIsIDE1LCAyMzIsIDE2MywgMTIsIDE1LCAyMzIsIDE2MiwgMTIsIAorICAgIDE1LCAyMzIsIDE2MSwgMTIsIDE1LCAyMzIsIDE2MCwgMTIsIDE1LCAyMzIsIDE1OSwgMTIsIDE1LCAyMzIsIDE1OCwgMTIsIAorICAgIDE1LCAyMzIsIDE1NywgMTIsIDE1LCAyMzIsIDE1NiwgMTIsIDE1LCAyMzIsIDE1NSwgMTIsIDE1LCAyMzIsIDE1NCwgMTIsIAorICAgIDE1LCAyMzIsIDE1MywgMTIsIDE1LCAyMzIsIDE1MiwgMTIsIDE1LCAyMzIsIDE1MSwgMTIsIDE1LCAyMzIsIDE1MCwgMTIsIAorICAgIDE1LCAyMzIsIDE0OSwgMTIsIDE1LCAyMzIsIDE0OCwgMTIsIDE1LCAyMzIsIDE0NywgMTIsIDE1LCAyMzIsIDE0NiwgMTIsIAorICAgIDE1LCAyMzIsIDE0NSwgMTIsIDE1LCAyMzIsIDE0NCwgMTIsIDE1LCAyMzIsIDE0MywgMTIsIDE1LCAyMzIsIDE0MiwgMTIsIAorICAgIDE1LCAyMzIsIDE0MSwgMTIsIDE1LCAyMzIsIDE0MCwgMTIsIDE1LCAyMzIsIDEzOSwgMTIsIDE1LCAyMzIsIDEzOCwgMTIsIAorICAgIDE1LCAyMzIsIDEzNywgMTIsIDE1LCAyMzIsIDEzNiwgMTIsIDE1LCAyMzIsIDEzNSwgMTIsIDE1LCAyMzIsIDEzNCwgMTIsIAorICAgIDE1LCAyMzIsIDEzMywgMTIsIDE1LCAyMzIsIDEzMiwgMTIsIDE1LCAyMzIsIDEzMSwgMTIsIDE1LCAyMzIsIDEzMCwgMTIsIAorICAgIDE1LCAyMzIsIDEyOSwgMTIsIDE1LCAyMzIsIDEyOCwgMTIsIDE1LCAyMzIsIDEyNywgMTIsIDE1LCAyMzIsIDEyNiwgMTIsIAorICAgIDE1LCAyMzIsIDEyNSwgMTIsIDE1LCAyMzIsIDEyNCwgMTIsIDE1LCAyMzIsIDEyMywgMTIsIDE1LCAyMzIsIDEyMiwgMTIsIAorICAgIDE1LCAyMzIsIDEyMSwgMTIsIDE1LCAyMzIsIDEyMCwgMTIsIDE1LCAyMzIsIDExOSwgMTIsIDE1LCAyMzIsIDExOCwgMTIsIAorICAgIDE1LCAyMzIsIDExNywgMTIsIDE1LCAyMzIsIDExNiwgMTIsIDE1LCAyMzIsIDExNSwgMTIsIDE1LCAyMzIsIDExNCwgMTIsIAorICAgIDE1LCAyMzIsIDExMywgMTIsIDE1LCAyMzIsIDExMiwgMTIsIDE1LCAyMzIsIDExMSwgMTIsIDE1LCAyMzIsIDExMCwgMTIsIAorICAgIDE1LCAyMzIsIDEwOSwgMTIsIDE1LCAyMzIsIDEwOCwgMTIsIDE1LCAyMzIsIDEwNywgMTIsIDE1LCAyMzIsIDEwNiwgMTIsIAorICAgIDE1LCAyMzIsIDEwNSwgMTIsIDE1LCAyMzIsIDEwNCwgMTIsIDE1LCAyMzIsIDEwMywgMTIsIDE1LCAyMzIsIDEwMiwgMTIsIAorICAgIDE1LCAyMzIsIDEwMSwgMTIsIDE1LCAyMzIsIDEwMCwgMTIsIDE1LCAyMzIsIDk5LCAxMiwgMTUsIDIzMiwgOTgsIDEyLCAxNSwgCisgICAgMjMyLCA5NywgMTIsIDE1LCAyMzIsIDk2LCAxMiwgMTUsIDIzMiwgOTUsIDEyLCAxNSwgMjMyLCA5NCwgMTIsIDE1LCAyMzIsIAorICAgIDkzLCAxMiwgMTUsIDIzMiwgOTIsIDEyLCAxNSwgMjMyLCA5MSwgMTIsIDE1LCAyMzIsIDkwLCAxMiwgMTUsIDIzMiwgODksIAorICAgIDEyLCAxNSwgMjMyLCA4OCwgMTIsIDE1LCAyMzIsIDg3LCAxMiwgMTUsIDIzMiwgODYsIDEyLCAxNSwgMjMyLCA4NSwgMTIsIAorICAgIDE1LCAyMzIsIDg0LCAxMiwgMTUsIDIzMiwgODMsIDEyLCAxNSwgMjMyLCA4MiwgMTIsIDE1LCAyMzIsIDgxLCAxMiwgMTUsIAorICAgIDIzMiwgODAsIDEyLCAxNSwgMjMyLCA3OSwgMTIsIDE1LCAyMzIsIDc4LCAxMiwgMTUsIDIzMiwgNzcsIDEyLCAxNSwgMjMyLCAKKyAgICA3NiwgMTIsIDE1LCAyMzIsIDc1LCAxMiwgMTUsIDIzMiwgNzQsIDEyLCAxNSwgMjMyLCA3MywgMTIsIDE1LCAyMzIsIDcyLCAKKyAgICAxMiwgMTUsIDIzMiwgNzEsIDEyLCAxNSwgMjMyLCA3MCwgMTIsIDE1LCAyMzIsIDY5LCAxMiwgMTUsIDIzMiwgNjgsIDEyLCAKKyAgICAxNSwgMjMyLCA2NywgMTIsIDE1LCAyMzIsIDY2LCAxMiwgMTUsIDIzMiwgNjUsIDEyLCAxNSwgMjMyLCA2NCwgMTIsIDE1LCAKKyAgICAyMzIsIDYzLCAxMiwgMTUsIDIzMiwgNjIsIDEyLCAxNSwgMjMyLCA2MSwgMTIsIDE1LCAyMzIsIDYwLCAxMiwgMTUsIDIzMiwgCisgICAgNTksIDEyLCAxNSwgMjMyLCA1OCwgMTIsIDE1LCAyMzIsIDU3LCAxMiwgMTUsIDIzMiwgNTYsIDEyLCAxNSwgMjMyLCA1NSwgCisgICAgMTIsIDE1LCAyMzIsIDU0LCAxMiwgMTUsIDIzMiwgNTMsIDEyLCAxNSwgMjMyLCA1MiwgMTIsIDE1LCAyMzIsIDUxLCAxMiwgCisgICAgMTUsIDIzMiwgNTAsIDEyLCAxNSwgMjMyLCA0OSwgMTIsIDE1LCAyMzIsIDQ4LCAxMiwgMTUsIDIzMiwgNDcsIDEyLCAxNSwgCisgICAgMjMyLCA0NiwgMTIsIDE1LCAyMzIsIDQ1LCAxMiwgMTUsIDIzMiwgNDQsIDEyLCAxNSwgMjMyLCA0MywgMTIsIDE1LCAyMzIsIAorICAgIDQyLCAxMiwgMTUsIDIzMiwgNDEsIDEyLCAxNSwgMjMyLCA0MCwgMTIsIDE1LCAyMzIsIDM5LCAxMiwgMTUsIDIzMiwgMzgsIAorICAgIDEyLCAxNSwgMjMyLCAzNywgMTIsIDE1LCAyMzIsIDM2LCAxMiwgMTUsIDIzMiwgMzUsIDEyLCAxNSwgMjMyLCAzNCwgMTIsIAorICAgIDE1LCAyMzIsIDMzLCAxMiwgMTUsIDIzMiwgMzIsIDEyLCAxNSwgMjMyLCAzMSwgMTIsIDE1LCAyMzIsIDMwLCAxMiwgMTUsIAorICAgIDIzMiwgMjksIDEyLCAxNSwgMjMyLCAyOCwgMTIsIDE1LCAyMzIsIDI3LCAxMiwgMTUsIDIzMiwgMjYsIDEyLCAxNSwgMjMyLCAKKyAgICAyNSwgMTIsIDE1LCAyMzIsIDI0LCAxMiwgMTUsIDIzMiwgMjMsIDEyLCAxNSwgMjMyLCAyMiwgMTIsIDE1LCAyMzIsIDIxLCAKKyAgICAxMiwgMTUsIDIzMiwgMjAsIDEyLCAxNSwgMjMyLCAxOSwgMTIsIDE1LCAyMzIsIDE4LCAxMiwgMTUsIDIzMiwgMTcsIDEyLCAKKyAgICAxNSwgMjMyLCAxNiwgMTIsIDE1LCAyMzIsIDE1LCAxMiwgMTUsIDIzMiwgMTQsIDEyLCAxNSwgMjMyLCAxMywgMTIsIDE1LCAKKyAgICAyMzIsIDEyLCAxMiwgMTUsIDIzMiwgMTEsIDEyLCAxNSwgMjMyLCAxMCwgMTIsIDE1LCAyMzIsIDksIDEyLCAxNSwgMjMyLCAKKyAgICA4LCAxMiwgMTUsIDIzMiwgNywgMTIsIDE1LCAyMzIsIDYsIDEyLCAxNSwgMjMyLCA1LCAxMiwgMTUsIDIzMiwgNCwgMTIsIAorICAgIDE1LCAyMzIsIDMsIDEyLCAxNSwgMjMyLCAyLCAxMiwgMTUsIDIzMiwgMSwgMTIsIDE1LCAyMzIsIDAsIDEyLCAxNSwgMjMxLCAKKyAgICAyNTUsIDEyLCAxNSwgMjMxLCAyNTQsIDEyLCAxNSwgMjMxLCAyNTMsIDEyLCAxNSwgMjMxLCAyNTIsIDEyLCAxNSwgMjMxLCAKKyAgICAyNTEsIDEyLCAxNSwgMjMxLCAyNTAsIDEyLCAxNSwgMjMxLCAyNDksIDEyLCAxNSwgMjMxLCAyNDgsIDEyLCAxNSwgMjMxLCAKKyAgICAyNDcsIDEyLCAxNSwgMjMxLCAyNDYsIDEyLCAxNSwgMjMxLCAyNDUsIDEyLCAxNSwgMjMxLCAyNDQsIDEyLCAxNSwgMjMxLCAKKyAgICAyNDMsIDEyLCAxNSwgMjMxLCAyNDIsIDEyLCAxNSwgMjMxLCAyNDEsIDEyLCAxNSwgMjMxLCAyNDAsIDEyLCAxNSwgMjMxLCAKKyAgICAyMzksIDEyLCAxNSwgMjMxLCAyMzgsIDEyLCAxNSwgMjMxLCAyMzcsIDEyLCAxNSwgMjMxLCAyMzYsIDEyLCAxNSwgMjMxLCAKKyAgICAyMzUsIDEyLCAxNSwgMjMxLCAyMzQsIDEyLCAxNSwgMjMxLCAyMzMsIDEyLCAxNSwgMjMxLCAyMzIsIDEyLCAxNSwgMjMxLCAKKyAgICAyMzEsIDEyLCAxNSwgMjMxLCAyMzAsIDEyLCAxNSwgMjMxLCAyMjksIDEyLCAxNSwgMjMxLCAyMjgsIDEyLCAxNSwgMjMxLCAKKyAgICAyMjcsIDEyLCAxNSwgMjMxLCAyMjYsIDEyLCAxNSwgMjMxLCAyMjUsIDEyLCAxNSwgMjMxLCAyMjQsIDEyLCAxNSwgMjMxLCAKKyAgICAyMjMsIDEyLCAxNSwgMjMxLCAyMjIsIDEyLCAxNSwgMjMxLCAyMjEsIDEyLCAxNSwgMjMxLCAyMjAsIDEyLCAxNSwgMjMxLCAKKyAgICAyMTksIDEyLCAxNSwgMjMxLCAyMTgsIDEyLCAxNSwgMjMxLCAyMTcsIDEyLCAxNSwgMjMxLCAyMTYsIDEyLCAxNSwgMjMxLCAKKyAgICAyMTUsIDEyLCAxNSwgMjMxLCAyMTQsIDEyLCAxNSwgMjMxLCAyMTMsIDEyLCAxNSwgMjMxLCAyMTIsIDEyLCAxNSwgMjMxLCAKKyAgICAyMTEsIDEyLCAxNSwgMjMxLCAyMTAsIDEyLCAxNSwgMjMxLCAyMDksIDEyLCAxNSwgMjMxLCAyMDgsIDEyLCAxNSwgMjMxLCAKKyAgICAyMDcsIDEyLCAxNSwgMjMxLCAyMDYsIDEyLCAxNSwgMjMxLCAyMDUsIDEyLCAxNSwgMjMxLCAyMDQsIDEyLCAxNSwgMjMxLCAKKyAgICAyMDMsIDEyLCAxNSwgMjMxLCAyMDIsIDEyLCAxNSwgMjMxLCAyMDEsIDEyLCAxNSwgMjMxLCAyMDAsIDEyLCAxNSwgMjMxLCAKKyAgICAxOTksIDEyLCAxNSwgMjMxLCAxOTgsIDEyLCAxNSwgMjMxLCAxOTcsIDEyLCAxNSwgMjMxLCAxOTYsIDEyLCAxNSwgMjMxLCAKKyAgICAxOTUsIDEyLCAxNSwgMjMxLCAxOTQsIDEyLCAxNSwgMjMxLCAxOTMsIDEyLCAxNSwgMjMxLCAxOTIsIDEyLCAxNSwgMjMxLCAKKyAgICAxOTEsIDEyLCAxNSwgMjMxLCAxOTAsIDEyLCAxNSwgMjMxLCAxODksIDEyLCAxNSwgMjMxLCAxODgsIDEyLCAxNSwgMjMxLCAKKyAgICAxODcsIDEyLCAxNSwgMjMxLCAxODYsIDEyLCAxNSwgMjMxLCAxODUsIDEyLCAxNSwgMjMxLCAxODQsIDEyLCAxNSwgMjMxLCAKKyAgICAxODMsIDEyLCAxNSwgMjMxLCAxODIsIDEyLCAxNSwgMjMxLCAxODEsIDEyLCAxNSwgMjMxLCAxODAsIDEyLCAxNSwgMjMxLCAKKyAgICAxNzksIDEyLCAxNSwgMjMxLCAxNzgsIDEyLCAxNSwgMjMxLCAxNzcsIDEyLCAxNSwgMjMxLCAxNzYsIDEyLCAxNSwgMjMxLCAKKyAgICAxNzUsIDEyLCAxNSwgMjMxLCAxNzQsIDEyLCAxNSwgMjMxLCAxNzMsIDEyLCAxNSwgMjMxLCAxNzIsIDEyLCAxNSwgMjMxLCAKKyAgICAxNzEsIDEyLCAxNSwgMjMxLCAxNzAsIDEyLCAxNSwgMjMxLCAxNjksIDEyLCAxNSwgMjMxLCAxNjgsIDEyLCAxNSwgMjMxLCAKKyAgICAxNjcsIDEyLCAxNSwgMjMxLCAxNjYsIDEyLCAxNSwgMjMxLCAxNjUsIDEyLCAxNSwgMjMxLCAxNjQsIDEyLCAxNSwgMjMxLCAKKyAgICAxNjMsIDEyLCAxNSwgMjMxLCAxNjIsIDEyLCAxNSwgMjMxLCAxNjEsIDEyLCAxNSwgMjMxLCAxNjAsIDEyLCAxNSwgMjMxLCAKKyAgICAxNTksIDEyLCAxNSwgMjMxLCAxNTgsIDEyLCAxNSwgMjMxLCAxNTcsIDEyLCAxNSwgMjMxLCAxNTYsIDEyLCAxNSwgMjMxLCAKKyAgICAxNTUsIDEyLCAxNSwgMjMxLCAxNTQsIDEyLCAxNSwgMjMxLCAxNTMsIDEyLCAxNSwgMjMxLCAxNTIsIDEyLCAxNSwgMjMxLCAKKyAgICAxNTEsIDEyLCAxNSwgMjMxLCAxNTAsIDEyLCAxNSwgMjMxLCAxNDksIDEyLCAxNSwgMjMxLCAxNDgsIDEyLCAxNSwgMjMxLCAKKyAgICAxNDcsIDEyLCAxNSwgMjMxLCAxNDYsIDEyLCAxNSwgMjMxLCAxNDUsIDEyLCAxNSwgMjMxLCAxNDQsIDEyLCAxNSwgMjMxLCAKKyAgICAxNDMsIDEyLCAxNSwgMjMxLCAxNDIsIDEyLCAxNSwgMjMxLCAxNDEsIDEyLCAxNSwgMjMxLCAxNDAsIDEyLCAxNSwgMjMxLCAKKyAgICAxMzksIDEyLCAxNSwgMjMxLCAxMzgsIDEyLCAxNSwgMjMxLCAxMzcsIDEyLCAxNSwgMjMxLCAxMzYsIDEyLCAxNSwgMjMxLCAKKyAgICAxMzUsIDEyLCAxNSwgMjMxLCAxMzQsIDEyLCAxNSwgMjMxLCAxMzMsIDEyLCAxNSwgMjMxLCAxMzIsIDEyLCAxNSwgMjMxLCAKKyAgICAxMzEsIDEyLCAxNSwgMjMxLCAxMzAsIDEyLCAxNSwgMjMxLCAxMjksIDEyLCAxNSwgMjMxLCAxMjgsIDEyLCAxNSwgMjMxLCAKKyAgICAxMjcsIDEyLCAxNSwgMjMxLCAxMjYsIDEyLCAxNSwgMjMxLCAxMjUsIDEyLCAxNSwgMjMxLCAxMjQsIDEyLCAxNSwgMjMxLCAKKyAgICAxMjMsIDEyLCAxNSwgMjMxLCAxMjIsIDEyLCAxNSwgMjMxLCAxMjEsIDEyLCAxNSwgMjMxLCAxMjAsIDEyLCAxNSwgMjMxLCAKKyAgICAxMTksIDEyLCAxNSwgMjMxLCAxMTgsIDEyLCAxNSwgMjMxLCAxMTcsIDEyLCAxNSwgMjMxLCAxMTYsIDEyLCAxNSwgMjMxLCAKKyAgICAxMTUsIDEyLCAxNSwgMjMxLCAxMTQsIDEyLCAxNSwgMjMxLCAxMTMsIDEyLCAxNSwgMjMxLCAxMTIsIDEyLCAxNSwgMjMxLCAKKyAgICAxMTEsIDEyLCAxNSwgMjMxLCAxMTAsIDEyLCAxNSwgMjMxLCAxMDksIDEyLCAxNSwgMjMxLCAxMDgsIDEyLCAxNSwgMjMxLCAKKyAgICAxMDcsIDEyLCAxNSwgMjMxLCAxMDYsIDEyLCAxNSwgMjMxLCAxMDUsIDEyLCAxNSwgMjMxLCAxMDQsIDEyLCAxNSwgMjMxLCAKKyAgICAxMDMsIDEyLCAxNSwgMjMxLCAxMDIsIDEyLCAxNSwgMjMxLCAxMDEsIDEyLCAxNSwgMjMxLCAxMDAsIDEyLCAxNSwgMjMxLCAKKyAgICA5OSwgMTIsIDE1LCAyMzEsIDk4LCAxMiwgMTUsIDIzMSwgOTcsIDEyLCAxNSwgMjMxLCA5NiwgMTIsIDE1LCAyMzEsIDk1LCAKKyAgICAxMiwgMTUsIDIzMSwgOTQsIDEyLCAxNSwgMjMxLCA5MywgMTIsIDE1LCAyMzEsIDkyLCAxMiwgMTUsIDIzMSwgOTEsIDEyLCAKKyAgICAxNSwgMjMxLCA5MCwgMTIsIDE1LCAyMzEsIDg5LCAxMiwgMTUsIDIzMSwgODgsIDEyLCAxNSwgMjMxLCA4NywgMTIsIDE1LCAKKyAgICAyMzEsIDg2LCAxMiwgMTUsIDIzMSwgODUsIDEyLCAxNSwgMjMxLCA4NCwgMTIsIDE1LCAyMzEsIDgzLCAxMiwgMTUsIDIzMSwgCisgICAgODIsIDEyLCAxNSwgMjMxLCA4MSwgMTIsIDE1LCAyMzEsIDgwLCAxMiwgMTUsIDIzMSwgNzksIDEyLCAxNSwgMjMxLCA3OCwgCisgICAgMTIsIDE1LCAyMzEsIDc3LCAxMiwgMTUsIDIzMSwgNzYsIDEyLCAxNSwgMjMxLCA3NSwgMTIsIDE1LCAyMzEsIDc0LCAxMiwgCisgICAgMTUsIDIzMSwgNzMsIDEyLCAxNSwgMjMxLCA3MiwgMTIsIDE1LCAyMzEsIDcxLCAxMiwgMTUsIDIzMSwgNzAsIDEyLCAxNSwgCisgICAgMjMxLCA2OSwgMTIsIDE1LCAyMzEsIDY4LCAxMiwgMTUsIDIzMSwgNjcsIDEyLCAxNSwgMjMxLCA2NiwgMTIsIDE1LCAyMzEsIAorICAgIDY1LCAxMiwgMTUsIDIzMSwgNjQsIDEyLCAxNSwgMjMxLCA2MywgMTIsIDE1LCAyMzEsIDYyLCAxMiwgMTUsIDIzMSwgNjEsIAorICAgIDEyLCAxNSwgMjMxLCA2MCwgMTIsIDE1LCAyMzEsIDU5LCAxMiwgMTUsIDIzMSwgNTgsIDEyLCAxNSwgMjMxLCA1NywgMTIsIAorICAgIDE1LCAyMzEsIDU2LCAxMiwgMTUsIDIzMSwgNTUsIDEyLCAxNSwgMjMxLCA1NCwgMTIsIDE1LCAyMzEsIDUzLCAxMiwgMTUsIAorICAgIDIzMSwgNTIsIDEyLCAxNSwgMjMxLCA1MSwgMTIsIDE1LCAyMzEsIDUwLCAxMiwgMTUsIDIzMSwgNDksIDEyLCAxNSwgMjMxLCAKKyAgICA0OCwgMTIsIDE1LCAyMzEsIDQ3LCAxMiwgMTUsIDIzMSwgNDYsIDEyLCAxNSwgMjMxLCA0NSwgMTIsIDE1LCAyMzEsIDQ0LCAKKyAgICAxMiwgMTUsIDIzMSwgNDMsIDEyLCAxNSwgMjMxLCA0MiwgMTIsIDE1LCAyMzEsIDQxLCAxMiwgMTUsIDIzMSwgNDAsIDEyLCAKKyAgICAxNSwgMjMxLCAzOSwgMTIsIDE1LCAyMzEsIDM4LCAxMiwgMTUsIDIzMSwgMzcsIDEyLCAxNSwgMjMxLCAzNiwgMTIsIDE1LCAKKyAgICAyMzEsIDM1LCAxMiwgMTUsIDIzMSwgMzQsIDEyLCAxNSwgMjMxLCAzMywgMTIsIDE1LCAyMzEsIDMyLCAxMiwgMTUsIDIzMSwgCisgICAgMzEsIDEyLCAxNSwgMjMxLCAzMCwgMTIsIDE1LCAyMzEsIDI5LCAxMiwgMTUsIDIzMSwgMjgsIDEyLCAxNSwgMjMxLCAyNywgCisgICAgMTIsIDE1LCAyMzEsIDI2LCAxMiwgMTUsIDIzMSwgMjUsIDEyLCAxNSwgMjMxLCAyNCwgMTIsIDE1LCAyMzEsIDIzLCAxMiwgCisgICAgMTUsIDIzMSwgMjIsIDEyLCAxNSwgMjMxLCAyMSwgMTIsIDE1LCAyMzEsIDIwLCAxMiwgMTUsIDIzMSwgMTksIDEyLCAxNSwgCisgICAgMjMxLCAxOCwgMTIsIDE1LCAyMzEsIDE3LCAxMiwgMTUsIDIzMSwgMTYsIDEyLCAxNSwgMjMxLCAxNSwgMTIsIDE1LCAyMzEsIAorICAgIDE0LCAxMiwgMTUsIDIzMSwgMTMsIDEyLCAxNSwgMjMxLCAxMiwgMTIsIDE1LCAyMzEsIDExLCAxMiwgMTUsIDIzMSwgMTAsIAorICAgIDEyLCAxNSwgMjMxLCA5LCAxMiwgMTUsIDIzMSwgOCwgMTIsIDE1LCAyMzEsIDcsIDEyLCAxNSwgMjMxLCA2LCAxMiwgMTUsIAorICAgIDIzMSwgNSwgMTIsIDE1LCAyMzEsIDQsIDEyLCAxNSwgMjMxLCAzLCAxMiwgMTUsIDIzMSwgMiwgMTIsIDE1LCAyMzEsIDEsIAorICAgIDEyLCAxNSwgMjMxLCAwLCAxMiwgMTUsIDIzMCwgMjU1LCAxMiwgMTUsIDIzMCwgMjU0LCAxMiwgMTUsIDIzMCwgMjUzLCAxMiwgCisgICAgMTUsIDIzMCwgMjUyLCAxMiwgMTUsIDIzMCwgMjUxLCAxMiwgMTUsIDIzMCwgMjUwLCAxMiwgMTUsIDIzMCwgMjQ5LCAxMiwgCisgICAgMTUsIDIzMCwgMjQ4LCAxMiwgMTUsIDIzMCwgMjQ3LCAxMiwgMTUsIDIzMCwgMjQ2LCAxMiwgMTUsIDIzMCwgMjQ1LCAxMiwgCisgICAgMTUsIDIzMCwgMjQ0LCAxMiwgMTUsIDIzMCwgMjQzLCAxMiwgMTUsIDIzMCwgMjQyLCAxMiwgMTUsIDIzMCwgMjQxLCAxMiwgCisgICAgMTUsIDIzMCwgMjQwLCAxMiwgMTUsIDIzMCwgMjM5LCAxMiwgMTUsIDIzMCwgMjM4LCAxMiwgMTUsIDIzMCwgMjM3LCAxMiwgCisgICAgMTUsIDIzMCwgMjM2LCAxMiwgMTUsIDIzMCwgMjM1LCAxMiwgMTUsIDIzMCwgMjM0LCAxMiwgMTUsIDIzMCwgMjMzLCAxMiwgCisgICAgMTUsIDIzMCwgMjMyLCAxMiwgMTUsIDIzMCwgMjMxLCAxMiwgMTUsIDIzMCwgMjMwLCAxMiwgMTUsIDIzMCwgMjI5LCAxMiwgCisgICAgMTUsIDIzMCwgMjI4LCAxMiwgMTUsIDIzMCwgMjI3LCAxMiwgMTUsIDIzMCwgMjI2LCAxMiwgMTUsIDIzMCwgMjI1LCAxMiwgCisgICAgMTUsIDIzMCwgMjI0LCAxMiwgMTUsIDIzMCwgMjIzLCAxMiwgMTUsIDIzMCwgMjIyLCAxMiwgMTUsIDIzMCwgMjIxLCAxMiwgCisgICAgMTUsIDIzMCwgMjIwLCAxMiwgMTUsIDIzMCwgMjE5LCAxMiwgMTUsIDIzMCwgMjE4LCAxMiwgMTUsIDIzMCwgMjE3LCAxMiwgCisgICAgMTUsIDIzMCwgMjE2LCAxMiwgMTUsIDIzMCwgMjE1LCAxMiwgMTUsIDIzMCwgMjE0LCAxMiwgMTUsIDIzMCwgMjEzLCAxMiwgCisgICAgMTUsIDIzMCwgMjEyLCAxMiwgMTUsIDIzMCwgMjExLCAxMiwgMTUsIDIzMCwgMjEwLCAxMiwgMTUsIDIzMCwgMjA5LCAxMiwgCisgICAgMTUsIDIzMCwgMjA4LCAxMiwgMTUsIDIzMCwgMjA3LCAxMiwgMTUsIDIzMCwgMjA2LCAxMiwgMTUsIDIzMCwgMjA1LCAxMiwgCisgICAgMTUsIDIzMCwgMjA0LCAxMiwgMTUsIDIzMCwgMjAzLCAxMiwgMTUsIDIzMCwgMjAyLCAxMiwgMTUsIDIzMCwgMjAxLCAxMiwgCisgICAgMTUsIDIzMCwgMjAwLCAxMiwgMTUsIDIzMCwgMTk5LCAxMiwgMTUsIDIzMCwgMTk4LCAxMiwgMTUsIDIzMCwgMTk3LCAxMiwgCisgICAgMTUsIDIzMCwgMTk2LCAxMiwgMTUsIDIzMCwgMTk1LCAxMiwgMTUsIDIzMCwgMTk0LCAxMiwgMTUsIDIzMCwgMTkzLCAxMiwgCisgICAgMTUsIDIzMCwgMTkyLCAyMjUsIDc3LCAyMDcsIDEzLCAxNjUsIDIwOCwgMjQ0LCAxNjUsIDIzOCwgNDMsIDgxLCAxNjUsIAorICAgIDIxNCwgNjMsIDgxLCAxNjUsIDQxLCA1NCwgMTY1LCAyNDAsIDE5NCwgNTQsIDE2NSwgMjE2LCAyNywgNTQsIDE2NSwgMjUxLCAKKyAgICA4OSwgMTY1LCAyNTEsIDEzLCAxNjUsIDQ5LCAyMTYsIDExNSwgMTY1LCA1MSwgMjE2LCAxMTUsIDE2NSwgMjUwLCAxNjUsIAorICAgIDE2NSwgOTMsIDU0LCAxNjUsIDI0NiwgNzAsIDE2NSwgMjMzLCAzMiwgMTY1LCAyMzYsIDE4MywgMjA4LCA3NiwgMTY1LCAKKyAgICAyMDksIDE2LCAxNjUsIDE3LCAxOTksIDgxLCAxNjUsIDE3LCAxMDIsIDE2NSwgMTcsIDEwNSwgMTY1LCAxNywgMTQ3LCAxNjUsIAorICAgIDE3LCAxNDksIDE2NSwgMTcsIDE2NCwgMTY1LCAxNywgMTg3LCAxNjUsIDE3LCAyMTAsIDEzNSwgMTY1LCAxNywgMTkyLCAKKyAgICAxNjUsIDE3LCAyMTksIDExMywgMTY1LCAyNDYsIDc5LCAxNjUsIDIxMCwgMTY3LCAxNjUsIDIyNCwgMjQxLCA1NCwgMTY1LCAKKyAgICAyMzgsIDEyMiwgNTQsIDE2NSwgMjM1LCA2NywgNTQsIDE2NSwgMjE0LCA3OSwgODEsIDE2NSwgMjQ2LCA2OCwgMjUwLCAxNTUsIAorICAgIDE2NSwgOCwgNiwgMSwgNjIsIDE2NSwgOCwgNiwgMSwgMjUwLCAxMDMsIDE2NSwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE2NSwgOCwgCisgICAgNiwgMSwgMjQyLCAxNTMsIDE2NSwgOCwgNiwgMSwgNzIsIDE2NSwgOCwgNiwgMSwgMjM4LCA1LCAxNjUsIDgsIDYsIDEsIAorICAgIDIzNiwgMTU2LCAxNjUsIDgsIDYsIDEsIDIzNCwgMjQ3LCAxNjUsIDgsIDYsIDEsIDcwLCAxNjUsIDgsIDYsIDEsIDIyNywgCisgICAgMjUxLCAxNjUsIDgsIDYsIDEsIDIyNywgMTE4LCAxNjUsIDgsIDYsIDEsIDE1NiwgMTY1LCA4LCA2LCAxLCAyMjMsIDI0MywgCisgICAgMTY1LCA4LCA2LCAxLCAyMjAsIDIxNCwgMTY1LCA4LCA2LCAxLCA3NCwgMTY1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTY1LCA4LCAKKyAgICA2LCAxLCAyMTQsIDE2NywgMTY1LCA4LCA2LCAxLCAxNDYsIDE2NSwgOCwgNiwgMSwgMjEyLCAxMjIsIDE2NSwgOCwgNiwgMSwgCisgICAgMjA3LCA4MywgMTY1LCA4LCA2LCAxLCA2NiwgMTY1LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTY1LCA4LCA2LCAxLCAyMDEsIAorICAgIDE0NywgMTY1LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTY1LCA4LCA2LCAxLCAyMDAsIDEyMywgMTY1LCA4LCA2LCAxLCAxOTksIAorICAgIDE1NywgMTY1LCA0OSwgNTIsIDE1OSwgMTY1LCAyMTMsIDEwNiwgMjA5LCAxNiwgMTY1LCA1MSwgNTIsIDE1OSwgMTY1LCAKKyAgICAyNDYsIDE0NywgMjUxLCAyNTEsIDE2NSwgMTI4LCAyMjQsIDE3NiwgMTY1LCAyMzUsIDc0LCAyNTEsIDI1MSwgMTY1LCA4LCAKKyAgICA0LCAxLCA2MiwgMTY1LCA4LCA0LCAxLCAyNTAsIDEwMywgMTY1LCA4LCA0LCAxLCAyNDcsIDIyMywgMTY1LCA4LCA0LCAxLCAKKyAgICAyNDIsIDE1MywgMTY1LCA4LCA0LCAxLCA3MiwgMTY1LCA4LCA0LCAxLCAyMzgsIDUsIDE2NSwgOCwgNCwgMSwgMjM2LCAxNTYsIAorICAgIDE2NSwgOCwgNCwgMSwgMjM0LCAyNDcsIDE2NSwgOCwgNCwgMSwgNzAsIDE2NSwgOCwgNCwgMSwgMjI3LCAyNTEsIDE2NSwgOCwgCisgICAgNCwgMSwgMjI3LCAxMTgsIDE2NSwgOCwgNCwgMSwgMTU2LCAxNjUsIDgsIDQsIDEsIDIyMywgMjQzLCAxNjUsIDgsIDQsIDEsIAorICAgIDIyMCwgMjE0LCAxNjUsIDgsIDQsIDEsIDc0LCAxNjUsIDgsIDQsIDEsIDIxNiwgMjI2LCAxNjUsIDgsIDQsIDEsIDIxNCwgCisgICAgMTY3LCAxNjUsIDgsIDQsIDEsIDE0NiwgMTY1LCA4LCA0LCAxLCAyMTIsIDEyMiwgMTY1LCA4LCA0LCAxLCAyMDcsIDgzLCAKKyAgICAxNjUsIDgsIDQsIDEsIDY2LCAxNjUsIDgsIDQsIDEsIDIwMywgMTY4LCAxNjUsIDgsIDQsIDEsIDIwMSwgMTQ3LCAxNjUsIDgsIAorICAgIDQsIDEsIDIwMCwgMTk1LCAxNjUsIDgsIDQsIDEsIDIwMCwgMTIzLCAxNjUsIDgsIDQsIDEsIDE5OSwgMTU3LCAxNjUsIDQ5LCAKKyAgICAyNDIsIDE5NiwgMTU5LCAxNjUsIDgzLCAyMjQsIDE3NiwgMTY1LCA1MSwgMjQyLCAxOTYsIDE1OSwgMTY1LCAyMDUsIDI0MCwgCisgICAgMjQ3LCAxNTcsIDIwNywgMTMsIDU4LCAyMTEsIDk2LCA1OCwgMjExLCA4NSwgNTgsIDIxMSwgNzQsIDU4LCAyMTEsIDYyLCAKKyAgICA1OCwgMjExLCA1MSwgNTgsIDIxMSwgNDAsIDU4LCAyMTEsIDI5LCA1OCwgMjExLCAxOCwgNTgsIDIxMSwgNywgNTgsIDIxMCwgCisgICAgMjU1LCA1OCwgMjEwLCAyNTQsIDU4LCAyMTAsIDI1MywgNTgsIDIxMCwgMjUyLCA1OCwgMjEwLCAyNTAsIDU4LCAyMTAsIAorICAgIDI0OSwgNTgsIDIxMCwgMjQ4LCA1OCwgMjEwLCAyNDcsIDU4LCAyMTAsIDI0NiwgNTgsIDIxMCwgMjQ1LCA1OCwgMjEwLCAKKyAgICAyNDQsIDU4LCAyMTAsIDI0MywgNTgsIDIxMCwgMjQyLCA1OCwgMjEwLCAyNDEsIDU4LCAyMTAsIDIzOSwgNTgsIDIxMCwgCisgICAgMjM4LCA1OCwgMjEwLCAyMzcsIDU4LCAyMTAsIDIzNiwgNTgsIDIxMCwgMjM1LCA1OCwgMjEwLCAyMzQsIDU4LCAyMTAsIAorICAgIDIzMywgNTgsIDIxMCwgMjMyLCA1OCwgMjEwLCAyMzEsIDU4LCAyMTAsIDIzMCwgNTgsIDIxMCwgMjI4LCA1OCwgMjEwLCAKKyAgICAyMjcsIDU4LCAyMTAsIDIyNiwgNTgsIDIxMCwgMjI1LCA1OCwgMjEwLCAyMjQsIDU4LCAyMTAsIDIyMywgNTgsIDIxMCwgCisgICAgMjIyLCA1OCwgMjEwLCAyMjEsIDU4LCAyMTAsIDIyMCwgNTgsIDIxMCwgMjE5LCA1OCwgMjEwLCAyMTcsIDU4LCAyMTAsIAorICAgIDIxNiwgNTgsIDIxMCwgMjE1LCA1OCwgMjEwLCAyMTQsIDU4LCAyMTAsIDIxMywgNTgsIDIxMCwgMjEyLCA1OCwgMjEwLCAKKyAgICAyMTEsIDU4LCAyMTAsIDIxMCwgNTgsIDIxMCwgMjA5LCA1OCwgMjEwLCAyMDgsIDU4LCAyMTAsIDIwNiwgNTgsIDIxMCwgCisgICAgMjA1LCA1OCwgMjEwLCAyMDQsIDU4LCAyMTAsIDIwMywgNTgsIDIxMCwgMjAyLCA1OCwgMjEwLCAyMDEsIDU4LCAyMTAsIAorICAgIDIwMCwgNTgsIDIxMCwgMTk5LCA1OCwgMjEwLCAxOTgsIDU4LCAyMTAsIDE5NywgNTgsIDIxMCwgMTk1LCA1OCwgMjEwLCAKKyAgICAxOTQsIDU4LCAyMTAsIDE5MywgNTgsIDIxMCwgMTkyLCA1OCwgMjEwLCAxOTEsIDU4LCAyMTAsIDE5MCwgNTgsIDIxMCwgCisgICAgMTg5LCA1OCwgMjEwLCAxODgsIDU4LCAyMTAsIDE4NywgNTgsIDIxMCwgMTg2LCA1OCwgMjEwLCAxODQsIDU4LCAyMTAsIAorICAgIDE4MywgNTgsIDIxMCwgMTgyLCA1OCwgMjEwLCAxODEsIDU4LCAyMTAsIDE4MCwgNTgsIDIxMCwgMTc5LCA1OCwgMjEwLCAKKyAgICAxNzgsIDU4LCAyMTAsIDE3NywgNTgsIDIxMCwgMTc2LCA1OCwgMjEwLCAxNzUsIDU4LCAyMTEsIDE3MiwgNTgsIDIxMSwgCisgICAgMTcxLCA1OCwgMjExLCAxNzAsIDU4LCAyMTEsIDE2OSwgNTgsIDIxMSwgMTY4LCA1OCwgMjExLCAxNjcsIDU4LCAyMTEsIAorICAgIDE2NiwgNTgsIDIxMSwgMTY1LCA1OCwgMjExLCAxNjQsIDU4LCAyMTEsIDE2MywgNTgsIDIxMSwgMTYxLCA1OCwgMjExLCAKKyAgICAxNjAsIDU4LCAyMTEsIDE1OSwgNTgsIDIxMSwgMTU4LCA1OCwgMjExLCAxNTcsIDU4LCAyMTEsIDE1NiwgNTgsIDIxMSwgCisgICAgMTU1LCA1OCwgMjExLCAxNTQsIDU4LCAyMTEsIDE1MywgNTgsIDIxMSwgMTUyLCA1OCwgMjExLCAxNTAsIDU4LCAyMTEsIAorICAgIDE0OSwgNTgsIDIxMSwgMTQ4LCA1OCwgMjExLCAxNDcsIDU4LCAyMTEsIDE0NiwgNTgsIDIxMSwgMTQ1LCA1OCwgMjExLCAKKyAgICAxNDQsIDU4LCAyMTEsIDE0MywgNTgsIDIxMSwgMTQyLCA1OCwgMjExLCAxNDEsIDU4LCAyMTEsIDEzOSwgNTgsIDIxMSwgCisgICAgMTM4LCA1OCwgMjExLCAxMzcsIDU4LCAyMTEsIDEzNiwgNTgsIDIxMSwgMTM1LCA1OCwgMjExLCAxMzQsIDU4LCAyMTEsIAorICAgIDEzMywgNTgsIDIxMSwgMTMyLCA1OCwgMjExLCAxMzEsIDU4LCAyMTEsIDEzMCwgNTgsIDIxMSwgMTI4LCA1OCwgMjExLCAKKyAgICAxMjcsIDU4LCAyMTEsIDEyNiwgNTgsIDIxMSwgMTI1LCA1OCwgMjExLCAxMjQsIDU4LCAyMTEsIDEyMywgNTgsIDIxMSwgCisgICAgMTIyLCA1OCwgMjExLCAxMjEsIDU4LCAyMTEsIDEyMCwgNTgsIDIxMSwgMTE5LCA1OCwgMjExLCAxMTcsIDU4LCAyMTEsIAorICAgIDExNiwgNTgsIDIxMSwgMTE1LCA1OCwgMjExLCAxMTQsIDU4LCAyMTEsIDExMywgNTgsIDIxMSwgMTEyLCA1OCwgMjExLCAKKyAgICAxMTEsIDU4LCAyMTEsIDExMCwgNTgsIDIxMSwgMTA5LCA1OCwgMjExLCAxMDgsIDU4LCAyMTEsIDEwNiwgNTgsIDIxMSwgCisgICAgMTA1LCA1OCwgMjExLCAxMDQsIDU4LCAyMTEsIDEwMywgNTgsIDIxMSwgMTAyLCA1OCwgMjExLCAxMDEsIDU4LCAyMTEsIAorICAgIDEwMCwgNTgsIDIxMSwgOTksIDU4LCAyMTEsIDk4LCA1OCwgMjExLCA5NywgNTgsIDIxMSwgOTUsIDU4LCAyMTEsIDk0LCA1OCwgCisgICAgMjExLCA5MywgNTgsIDIxMSwgOTIsIDU4LCAyMTEsIDkxLCA1OCwgMjExLCA5MCwgNTgsIDIxMSwgODksIDU4LCAyMTEsIDg4LCAKKyAgICA1OCwgMjExLCA4NywgNTgsIDIxMSwgODYsIDU4LCAyMTEsIDg0LCA1OCwgMjExLCA4MywgNTgsIDIxMSwgODIsIDU4LCAyMTEsIAorICAgIDgxLCA1OCwgMjExLCA4MCwgNTgsIDIxMSwgNzksIDU4LCAyMTEsIDc4LCA1OCwgMjExLCA3NywgNTgsIDIxMSwgNzYsIDU4LCAKKyAgICAyMTEsIDc1LCA1OCwgMjExLCA3MywgNTgsIDIxMSwgNzIsIDU4LCAyMTEsIDcxLCA1OCwgMjExLCA3MCwgNTgsIDIxMSwgNjksIAorICAgIDU4LCAyMTEsIDY4LCA1OCwgMjExLCA2NywgNTgsIDIxMSwgNjYsIDU4LCAyMTEsIDY1LCA1OCwgMjExLCA2NCwgNTgsIDIxMSwgCisgICAgNjEsIDU4LCAyMTEsIDYwLCA1OCwgMjExLCA1OSwgNTgsIDIxMSwgNTgsIDU4LCAyMTEsIDU3LCA1OCwgMjExLCA1NiwgNTgsIAorICAgIDIxMSwgNTUsIDU4LCAyMTEsIDU0LCA1OCwgMjExLCA1MywgNTgsIDIxMSwgNTIsIDU4LCAyMTEsIDUwLCA1OCwgMjExLCA0OSwgCisgICAgNTgsIDIxMSwgNDgsIDU4LCAyMTEsIDQ3LCA1OCwgMjExLCA0NiwgNTgsIDIxMSwgNDUsIDU4LCAyMTEsIDQ0LCA1OCwgMjExLCAKKyAgICA0MywgNTgsIDIxMSwgNDIsIDU4LCAyMTEsIDQxLCA1OCwgMjExLCAzOSwgNTgsIDIxMSwgMzgsIDU4LCAyMTEsIDM3LCA1OCwgCisgICAgMjExLCAzNiwgNTgsIDIxMSwgMzUsIDU4LCAyMTEsIDM0LCA1OCwgMjExLCAzMywgNTgsIDIxMSwgMzIsIDU4LCAyMTEsIDMxLCAKKyAgICA1OCwgMjExLCAzMCwgNTgsIDIxMSwgMjgsIDU4LCAyMTEsIDI3LCA1OCwgMjExLCAyNiwgNTgsIDIxMSwgMjUsIDU4LCAyMTEsIAorICAgIDI0LCA1OCwgMjExLCAyMywgNTgsIDIxMSwgMjIsIDU4LCAyMTEsIDIxLCA1OCwgMjExLCAyMCwgNTgsIDIxMSwgMTksIDU4LCAKKyAgICAyMTEsIDE3LCA1OCwgMjExLCAxNiwgNTgsIDIxMSwgMTUsIDU4LCAyMTEsIDE0LCA1OCwgMjExLCAxMywgNTgsIDIxMSwgMTIsIAorICAgIDU4LCAyMTEsIDExLCA1OCwgMjExLCAxMCwgNTgsIDIxMSwgOSwgNTgsIDIxMSwgOCwgNTgsIDIxMSwgNiwgNTgsIDIxMSwgNSwgCisgICAgNTgsIDIxMSwgNCwgNTgsIDIxMSwgMywgNTgsIDIxMSwgMiwgNTgsIDIxMSwgMSwgNTgsIDIxMSwgMCwgMjE4LCA5NywgMjE4LCAKKyAgICA5OSwgMjA4LCAxMDUsIDc2LCAyMzQsIDEzMywgMjA5LCAxOSwgMjA4LCAxMDUsIDc2LCAyMDYsIDEyNiwgMjA4LCAyNiwgCisgICAgMjM4LCAxNzEsIDc2LCAyMDYsIDEyNiwgMjM4LCA3MSwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOCwgMjM4LCAxMzQsIDIzOCwgCisgICAgMTU4LCAyMzgsIDE1OSwgMjUxLCAyNDMsIDI1MSwgMjQ0LCAyNTEsIDEzOSwgMjQ4LCAyMzMsIDI0OSwgMTIzLCAyNDgsIDQyLCAKKyAgICAxNzEsIDIwNywgMTksIDIzMywgMTc3LCAyMDcsIDE5LCAyMzMsIDEwMiwgMjA3LCAyNCwgMjI0LCAxNzcsIDIzNywgMTM4LCAKKyAgICAyMjAsIDgsIDIyNCwgMTc2LCAyMzgsIDE3MSwgNzYsIDIyNCwgMTc2LCAyMjQsIDIyNSwgMjE5LCA0NywgMjM4LCAxMzcsIAorICAgIDIyNCwgMTc3LCAyMDcsIDE5LCA4MywgMjA3LCAxOSwgMjAxLCAxNjgsIDIzNiwgMjQyLCAyMzcsIDEzOCwgMjM3LCAxMTYsIAorICAgIDI0NywgMTIxLCAyMTMsIDEwOSwgMjQyLCAyNTIsIDIxMCwgMjksIDIxNiwgMjU0LCAyMjQsIDEwMiwgMTAyLCAyMDksIDI5LCAKKyAgICAyMTAsIDI5LCAyMjgsIDExNywgMjI0LCAxMDIsIDE5OSwgODEsIDIwOSwgMTgyLCAyNDEsIDIzOSwgMjI0LCAxNjcsIDIzOCwgCisgICAgOTYsIDI0MCwgMjIxLCAyNDEsIDEwNywgMjQzLCAzNCwgMTAyLCAyNDEsIDIyOCwgMjQxLCAxMDcsIDI0MywgMzQsIDEwNSwgCisgICAgMjQxLCAyMjcsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDcsIDI0MSwgMjI2LCAyNDEsIDEwNywgMjQzLCAzNCwgMTQ5LCAyNDEsIAorICAgIDIyNSwgMTg5LCAyNTEsIDI0MywgMjIwLCAxNDAsIDIwNywgMTA5LCAyMjgsIDE4MCwgMjA3LCAxMTMsIDIzOCwgMTcxLCA3NiwgCisgICAgMjA1LCAxMTksIDI0OCwgMTM0LCAyMzgsIDc4LCAyNDcsIDE1NiwgMjQ3LCAxNTgsIDIzOCwgMTcxLCA3NiwgMjIyLCA2NSwgCisgICAgMjM4LCAxMzUsIDIwOCwgMCwgMjA4LCAxNywgMjM4LCA5NiwgMjM4LCA5NywgMjI4LCA5MiwgMjEwLCAxNTUsIDE0OSwgMjM3LCAKKyAgICA5NywgMjEwLCAxNTQsIDIzNiwgMTkzLCAyMjgsIDkyLCAyMTAsIDE1NSwgMTQ3LCAyMzUsIDU4LCAyMTAsIDE1NCwgMjM1LCAKKyAgICA1NSwgMjI4LCA5MiwgMjEwLCAxNTUsIDEwNSwgMjEzLCAxODEsIDIxMCwgMTU0LCAyMTIsIDE4MCwgMjI4LCA5MiwgMjEwLCAKKyAgICAxNTUsIDEwMiwgMjAzLCAyNDAsIDIxMCwgMTU0LCAyMDMsIDE5NywgMjA4LCAyNDcsIDI0MSwgMTQ2LCAyNDEsIDE0OCwgCisgICAgMjE2LCAxOTksIDI0NywgMjAsIDIxNiwgMjAxLCAxMjIsIDIxNywgMTI4LCAyMTUsIDE4LCAyMzMsIDE4MCwgMjQ4LCA2MSwgCisgICAgMjE2LCAxNywgMjM0LCA5OSwgMjQ4LCA3NCwgMjE4LCAyNDIsIDI0OCwgNjEsIDIzNCwgOTksIDIyMCwgMTAzLCAyMjgsIAorICAgIDEwMywgMjI4LCAxMDUsIDIyMCwgMiwgMjI0LCAxNzYsIDIyMCwgMjUsIDIwOCwgMTA1LCA3NiwgMjExLCAxNzcsIDI1MCwgCisgICAgMjI4LCAyMDgsIDE3OSwgMjM4LCAxNzEsIDc2LCAyMTEsIDE3NywgMjUwLCAyMjgsIDIzOCwgOTksIDE3MSwgMjA3LCAyMCwgCisgICAgMjEwLCAxNDEsIDIzMywgMTc3LCAyMDcsIDIwLCAyMTAsIDE0MSwgMjMzLCA5OSwgMTcxLCAyMDcsIDIwLCAzLCAyMjcsIAorICAgIDEzMCwgMjMzLCAxNzcsIDIwNywgMjAsIDMsIDIyNywgMTMwLCAyMzMsIDEwMCwgMjI0LCAxNzcsIDIwNywgMjAsIDIxMCwgCisgICAgMTQxLCA4MywgMjA3LCAyMCwgMjEwLCAxNDEsIDIwMSwgMTY3LCAyMTYsIDEwOCwgMjI0LCAxNzcsIDIzNiwgMjMzLCAyMTYsIAorICAgIDEwOCwgMjI0LCAxNzcsIDIzOSwgMTY3LCAyMTUsIDEyNCwgMjE2LCAxMDgsIDIyNCwgMTc3LCAyNDksIDEyMiwgMjE2LCAKKyAgICAxMDgsIDIyNCwgMTc3LCAyMDMsIDIyOCwgMjE1LCAxMTksIDIxMywgMTA2LCAyMjQsIDE3NywgMjM3LCAxMzgsIDIxMywgCisgICAgMTA2LCAyMjgsIDEwMywgMjEzLCA4OCwgMjA5LCAxMzksIDIxMCwgMjksIDEwNSwgMjA5LCAxMzYsIDIwOCwgMTgxLCAyMDksIAorICAgIDEzOSwgMjEwLCAyOSwgMTQ3LCAyMDksIDEzNSwgMjA4LCAxODAsIDI0MSwgMTA3LCAyNDMsIDM0LCAyMDgsIDQ5LCAyNDEsIAorICAgIDIyMywgMjE1LCA0LCAyMDMsIDE5NiwgMTAyLCAyMTUsIDQsIDIwMywgMTk0LCAyMTQsIDIyMywgMjE1LCA0LCAyMDMsIDE5NiwgCisgICAgMTA1LCAyMTUsIDQsIDIwMywgMTkzLCAyMTQsIDIyMiwgMjEwLCAxNDIsIDIwNSwgMTE3LCAyMDgsIDEwNCwgMjA4LCAzMiwgCisgICAgMjQ3LCAxNTcsIDI0NywgMjAsIDI0NywgOTUsIDIyMiwgMjQsIDIwMSwgMTA2LCAyMjAsIDIzMiwgMjA4LCAxMDUsIDc2LCAKKyAgICAyMzUsIDQzLCAyNTAsIDIyOCwgMjA4LCAxMDUsIDc2LCAyMTQsIDI0MSwgMjUwLCAyMjgsIDIwOCwgMjQ2LCAyMzgsIDE3MSwgCisgICAgNzYsIDIzNSwgNDMsIDI1MCwgMjI4LCAyMzgsIDE3MSwgNzYsIDIxNCwgMjQxLCAyNTAsIDIyOCwgMjM4LCAxMzIsIDIwOCwgCisgICAgMTA1LCA3NiwgMjA4LCA0OSwgMjA5LCA1LCAyMDksIDEzOSwgMjM1LCA3OSwgMTcxLCAyMjgsIDUyLCAyMTAsIDExOSwgMjA5LCAKKyAgICAxMzksIDE3MSwgMjI4LCA1MiwgMjExLCAyMTcsIDI0MywgMzQsIDIxMCwgMTUxLCAyMjgsIDUyLCAyNDIsIDIxNSwgMjA4LCAKKyAgICA1MCwgMjA2LCAxNTIsIDIwOCwgMTIzLCAyMTcsIDQ1LCAyMDcsIDk4LCAyNDYsIDY5LCAyMTcsIDEzLCAyMTUsIDUsIDIyMiwgCisgICAgMjMsIDIxNSwgMTA5LCAyNTEsIDksIDIxNCwgMjU1LCAyNDYsIDY5LCAyNTEsIDI1LCAyMjAsIDkxLCAyMDksIDE5MSwgOCwgCisgICAgNiwgMSwgMjM1LCAxOTksIDgsIDQsIDEsIDIzNSwgMTk5LCAyNDcsIDM5LCAyNTEsIDExOCwgMjA3LCAxMDMsIDIwOCwgNiwgCisgICAgMjQ2LCA4MCwgMjA5LCA4NiwgMjI1LCAyOCwgMjI3LCA2MywgMSwgMjI0LCAxMjksIDIyNSwgNzUsIDEsIDIzNywgMTQsIAorICAgIDIzNywgNSwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgMjM3LCAxNTAsIDIyNSwgNzUsIDEsIDIxMywgMSwgMjI1LCA3NSwgMSwgCisgICAgMjI0LCAxMTAsIDc5LCAxMzQsIDI0OCwgMTQ2LCAyMTAsIDQsIDIzNSwgMTYyLCAyMjEsIDIyOSwgMjEzLCA5NiwgMjM2LCAKKyAgICAxNzAsIDIzNiwgMTY5LCAyMzYsIDE2OCwgMjIwLCAyMzQsIDE5OCwgMjQwLCAxOTgsIDI0MSwgMTk4LCAyNDMsIDIyNCwgNDYsIAorICAgIDIxMywgOSwgMjI0LCA0OCwgMjEzLCAxMSwgMjE2LCA3NiwgMjI0LCA0NSwgMjEzLCA4LCAyMTksIDE3LCAyMjEsIDE0MCwgCisgICAgMjAxLCAyLCAyMjQsIDQ3LCAyMTMsIDEwLCAyMzYsIDE5MiwgMjE2LCA3NSwgMjAxLCA1NCwgMjM4LCAxOTQsIDIzNiwgMTgwLCAKKyAgICAyMjEsIDIxMCwgMjE3LCA3OSwgMjAzLCAxOTgsIDk5LCAyMjEsIDIxMCwgMjQxLCAyNDUsIDk5LCA5OCwgMjA1LCA5NywgNTUsIAorICAgIDMsIDUzLCA4MywgOTcsIDg3LCAyMDUsIDk3LCA1NSwgMywgNTMsIDgzLCA5NywgMTEsIDUsIDIyOCwgMTAsIDgxLCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgNjQsIDIyNCwgMjQ3LCAxNTksIDIwMiwgMTY4LCAyMDIsIDU3LCAyMDEsIDI0NSwgCisgICAgMjAxLCAyMzQsIDIwMSwgMjIzLCAyMDEsIDIxMiwgMjAxLCAyMDEsIDIwMSwgMTkwLCAyMDEsIDE3OSwgMjAyLCAxNjcsIAorICAgIDIwMiwgMTU2LCAyMDIsIDE0NSwgMjAyLCAxMzQsIDIwMiwgMTIzLCAyMDIsIDExMiwgMjAyLCAxMDEsIDI0NywgMjI4LCAKKyAgICAyMTcsIDMwLCA4MSwgMjQ4LCAxMTQsIDE5OCwgMjQyLCAxMCwgMiwgMjE4LCAxMDYsIDIwNiwgMTU1LCAxMCwgMiwgMjE4LCAKKyAgICAxMDYsIDExOSwgMjE4LCAxMDYsIDI0OCwgNCwgMTE5LCAyNDgsIDMsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIDgyLCAKKyAgICAyNDYsIDE5NiwgMjAzLCA2OSwgMjAyLCA5MCwgMjAyLCA3OSwgMjAyLCA2OCwgMjAyLCA1NiwgMjAyLCA0NSwgMjAyLCAzNCwgCisgICAgMjAyLCAyMywgMjAyLCAxMiwgMjAyLCAxLCAyMDEsIDI0OSwgMjAxLCAyNDgsIDIwMSwgMjQ3LCAyMDEsIDI0NiwgMjAxLCAKKyAgICAyNDQsIDIwMSwgMjQzLCAyMDEsIDI0MiwgMjAxLCAyNDEsIDIwMSwgMjQwLCAyMDEsIDIzOSwgMjAxLCAyMzgsIDIwMSwgCisgICAgMjM3LCAyMDEsIDIzNiwgMjAxLCAyMzUsIDIwMSwgMjMzLCAyMDEsIDIzMiwgMjAxLCAyMzEsIDIwMSwgMjMwLCAyMDEsIAorICAgIDIyOSwgMjAxLCAyMjgsIDIwMSwgMjI3LCAyMDEsIDIyNiwgMjAxLCAyMjUsIDIwMSwgMjI0LCAyMDEsIDIyMiwgMjAxLCAKKyAgICAyMjEsIDIwMSwgMjIwLCAyMDEsIDIxOSwgMjAxLCAyMTgsIDIwMSwgMjE3LCAyMDEsIDIxNiwgMjAxLCAyMTUsIDIwMSwgCisgICAgMjE0LCAyMDEsIDIxMywgMjAxLCAyMTEsIDIwMSwgMjEwLCAyMDEsIDIwOSwgMjAxLCAyMDgsIDIwMSwgMjA3LCAyMDEsIAorICAgIDIwNiwgMjAxLCAyMDUsIDIwMSwgMjA0LCAyMDEsIDIwMywgMjAxLCAyMDIsIDIwMSwgMjAwLCAyMDEsIDE5OSwgMjAxLCAKKyAgICAxOTgsIDIwMSwgMTk3LCAyMDEsIDE5NiwgMjAxLCAxOTUsIDIwMSwgMTk0LCAyMDEsIDE5MywgMjAxLCAxOTIsIDIwMSwgCisgICAgMTkxLCAyMDEsIDE4OSwgMjAxLCAxODgsIDIwMSwgMTg3LCAyMDEsIDE4NiwgMjAxLCAxODUsIDIwMSwgMTg0LCAyMDEsIAorICAgIDE4MywgMjAxLCAxODIsIDIwMSwgMTgxLCAyMDEsIDE4MCwgMjAxLCAxNzgsIDIwMSwgMTc3LCAyMDEsIDE3NiwgMjAxLCAKKyAgICAxNzUsIDIwMSwgMTc0LCAyMDEsIDE3MywgMjAxLCAxNzIsIDIwMSwgMTcxLCAyMDEsIDE3MCwgMjAxLCAxNjksIDIwMiwgCisgICAgMTY2LCAyMDIsIDE2NSwgMjAyLCAxNjQsIDIwMiwgMTYzLCAyMDIsIDE2MiwgMjAyLCAxNjEsIDIwMiwgMTYwLCAyMDIsIAorICAgIDE1OSwgMjAyLCAxNTgsIDIwMiwgMTU3LCAyMDIsIDE1NSwgMjAyLCAxNTQsIDIwMiwgMTUzLCAyMDIsIDE1MiwgMjAyLCAKKyAgICAxNTEsIDIwMiwgMTUwLCAyMDIsIDE0OSwgMjAyLCAxNDgsIDIwMiwgMTQ3LCAyMDIsIDE0NiwgMjAyLCAxNDQsIDIwMiwgCisgICAgMTQzLCAyMDIsIDE0MiwgMjAyLCAxNDEsIDIwMiwgMTQwLCAyMDIsIDEzOSwgMjAyLCAxMzgsIDIwMiwgMTM3LCAyMDIsIAorICAgIDEzNiwgMjAyLCAxMzUsIDIwMiwgMTMzLCAyMDIsIDEzMiwgMjAyLCAxMzEsIDIwMiwgMTMwLCAyMDIsIDEyOSwgMjAyLCAKKyAgICAxMjgsIDIwMiwgMTI3LCAyMDIsIDEyNiwgMjAyLCAxMjUsIDIwMiwgMTI0LCAyMDIsIDEyMiwgMjAyLCAxMjEsIDIwMiwgCisgICAgMTIwLCAyMDIsIDExOSwgMjAyLCAxMTgsIDIwMiwgMTE3LCAyMDIsIDExNiwgMjAyLCAxMTUsIDIwMiwgMTE0LCAyMDIsIAorICAgIDExMywgMjAyLCAxMTEsIDIwMiwgMTEwLCAyMDIsIDEwOSwgMjAyLCAxMDgsIDIwMiwgMTA3LCAyMDIsIDEwNiwgMjAyLCAKKyAgICAxMDUsIDIwMiwgMTA0LCAyMDIsIDEwMywgMjAyLCAxMDIsIDIwMiwgMTAwLCAyMDIsIDk5LCAyMDIsIDk4LCAyMDIsIDk3LCAKKyAgICAyMDIsIDk2LCAyMDIsIDk1LCAyMDIsIDk0LCAyMDIsIDkzLCAyMDIsIDkyLCAyMDIsIDkxLCAyMDIsIDg5LCAyMDIsIDg4LCAKKyAgICAyMDIsIDg3LCAyMDIsIDg2LCAyMDIsIDg1LCAyMDIsIDg0LCAyMDIsIDgzLCAyMDIsIDgyLCAyMDIsIDgxLCAyMDIsIDgwLCAKKyAgICAyMDIsIDc4LCAyMDIsIDc3LCAyMDIsIDc2LCAyMDIsIDc1LCAyMDIsIDc0LCAyMDIsIDczLCAyMDIsIDcyLCAyMDIsIDcxLCAKKyAgICAyMDIsIDcwLCAyMDIsIDY5LCAyMDIsIDY3LCAyMDIsIDY2LCAyMDIsIDY1LCAyMDIsIDY0LCAyMDIsIDYzLCAyMDIsIDYyLCAKKyAgICAyMDIsIDYxLCAyMDIsIDYwLCAyMDIsIDU5LCAyMDIsIDU4LCAyMDIsIDU1LCAyMDIsIDU0LCAyMDIsIDUzLCAyMDIsIDUyLCAKKyAgICAyMDIsIDUxLCAyMDIsIDUwLCAyMDIsIDQ5LCAyMDIsIDQ4LCAyMDIsIDQ3LCAyMDIsIDQ2LCAyMDIsIDQ0LCAyMDIsIDQzLCAKKyAgICAyMDIsIDQyLCAyMDIsIDQxLCAyMDIsIDQwLCAyMDIsIDM5LCAyMDIsIDM4LCAyMDIsIDM3LCAyMDIsIDM2LCAyMDIsIDM1LCAKKyAgICAyMDIsIDMzLCAyMDIsIDMyLCAyMDIsIDMxLCAyMDIsIDMwLCAyMDIsIDI5LCAyMDIsIDI4LCAyMDIsIDI3LCAyMDIsIDI2LCAKKyAgICAyMDIsIDI1LCAyMDIsIDI0LCAyMDIsIDIyLCAyMDIsIDIxLCAyMDIsIDIwLCAyMDIsIDE5LCAyMDIsIDE4LCAyMDIsIDE3LCAKKyAgICAyMDIsIDE2LCAyMDIsIDE1LCAyMDIsIDE0LCAyMDIsIDEzLCAyMDIsIDExLCAyMDIsIDEwLCAyMDIsIDksIDIwMiwgOCwgCisgICAgMjAyLCA3LCAyMDIsIDYsIDIwMiwgNSwgMjAyLCA0LCAyMDIsIDMsIDIwMiwgMiwgMjAyLCAwLCAyMDEsIDI1NSwgMjAxLCAKKyAgICAyNTQsIDIwMSwgMjUzLCAyMDEsIDI1MiwgMjAxLCAyNTEsIDIwMSwgMjUwLCA4LCA2LCAxLCAzNSwgMywgMjIyLCAyMjksIAorICAgIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAKKyAgICAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDE5NywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMTk3LCAzLCA4MywgCisgICAgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAKKyAgICAyMjIsIDIyOCwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxOTcsIDMsIDI0NiwgCisgICAgMTQ3LCAyNiwgMjQ3LCAxMjUsIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyNDcsIDEyNSwgOCwgNiwgMSwgMjMzLCAKKyAgICAxOSwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIAorICAgIDgsIDQsIDEsIDIzMywgMTksIDMsIDczLCA4OCwgMjYsIDE2OSwgOCwgNCwgMSwgMjIwLCAwLCAzLCAyMDUsIDI0MSwgNTYsIAorICAgIDgsIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAKKyAgICAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIAorICAgIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNiwgMSwgMjEyLCAKKyAgICAxMjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA2LCAKKyAgICAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIAorICAgIDgsIDYsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNCwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCAKKyAgICA2LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAKKyAgICAyNDAsIDgsIDYsIDEsIDE5NywgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjE3LCAxMTEsIDI2LCAKKyAgICAxNjksIDgsIDYsIDEsIDE5NywgMywgMjE3LCAxMTEsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAxOTcsIDMsIDczLCA4OCwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCA3MywgODgsIAorICAgIDI2LCAxNjksIDgsIDYsIDEsIDE5NywgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgNzMsIDg4LCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDczLCA4OCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIAorICAgIDMsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCA3MywgODgsIDI2LCAxNjksIDgsIDYsIDEsIDIzMywgMTksIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIDgsIAorICAgIDYsIDEsIDIyNywgMjUyLCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI3LCAyNTIsIDMsIDczLCA4OCwgMjYsIDIwNSwgMjQwLCAKKyAgICA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgCisgICAgMjIzLCAyNDQsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIxNCwgMzMsIAorICAgIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAyMTcsIDExMSwgCisgICAgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgMTExLCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjksIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAKKyAgICAyNTEsIDIyMiwgMywgMjM1LCA3MywgOCwgNCwgMSwgMTc2LCAxNjMsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE3NiwgMTYzLCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIDE2OSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgCisgICAgMTY5LCAzLCAxNjksIDgsIDQsIDEsIDIxMSwgMjE5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMTEsIDIxOSwgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyMzMsIDE4NiwgMjExLCAyMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTg2LCAyMTEsIDIxOSwgMywgCisgICAgMTY5LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjUxLCAxNDIsIDksIDIxMCwgMTUxLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCAyMDEsIDcyLCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4NywgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIxNywgMTIxLCA5LCAyMTAsIDE1MSwgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgNjYsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIDIxMSwgOSwgCisgICAgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDcyLCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgCisgICAgMywgMjUxLCAyMjEsIDksIDIxMCwgMTUxLCAyMTgsIDIyOCwgMywgMjI2LCAyNTIsIDE4NSwgMSwgMjI2LCAxODIsIDQ1LCAKKyAgICAxMTEsIDIyNywgMTE4LCA0NSwgMTExLCAyMTksIDI1NSwgNDUsIDExMSwgMjQ3LCAyMjMsIDQ1LCAxMTEsIDIxOCwgNjIsIAorICAgIDQ1LCAxMTEsIDIwNSwgMCwgNDUsIDExMSwgMjE5LCAyMiwgNDUsIDExMSwgMjA3LCA4MywgNDUsIDExMSwgMjIwLCAyMTQsIAorICAgIDQ1LCAxMTEsIDIxNiwgMjI2LCA0NSwgMTExLCAyMjMsIDI0MywgNDUsIDExMSwgMjAwLCAxMjMsIDQ1LCAxMTEsIDE0NiwgCisgICAgNDUsIDExMSwgMTU2LCA0NSwgMTExLCAyMDMsIDE2OCwgNDUsIDExMSwgMjI0LCAxMzAsIDQ1LCAxMTEsIDIyNCwgMTM5LCAKKyAgICA0NSwgMTExLCAyMTIsIDIxNiwgNDUsIDExMSwgMjE5LCA0LCA0NSwgMTExLCAyMjcsIDI1MSwgNDUsIDExMSwgMjEwLCAxMTYsIAorICAgIDQ1LCAxMTEsIDIwOCwgMTgyLCA0NSwgMTExLCAyMTIsIDEyMiwgNDUsIDExMSwgMjM0LCAyNDcsIDQ1LCAxMTEsIDIyNiwgCisgICAgMzAsIDQ1LCA1LCAyMjcsIDEwNSwgNDUsIDUsIDIyNiwgMTYzLCA0NSwgNSwgMjI2LCAxNTAsIDQ1LCA1LCAyMjYsIDE1LCAKKyAgICA0NSwgNSwgMjI1LCAyMzYsIDQ1LCA1LCAyMjcsIDgsIDQ1LCA1LCAyMjcsIDUsIDQ1LCA1LCAyMjcsIDgyLCA0NSwgNSwgCisgICAgMjI2LCA4OCwgNDUsIDUsIDIyNiwgNjgsIDQ1LCA1LCAyMjcsIDI2LCA0NSwgNSwgMjE5LCAyNTIsIDQ1LCA1LCAyMTksIAorICAgIDIwMSwgNDUsIDUsIDIxOSwgMTk3LCA0NSwgNSwgMjE5LCAxNjYsIDQ1LCA1LCAyMTksIDE1OCwgNDUsIDUsIDIxOSwgMjQwLCAKKyAgICA0NSwgNSwgMjE5LCAyMzgsIDQ1LCA1LCAyMTksIDI0OSwgNDUsIDUsIDIxOSwgMTc4LCA0NSwgNSwgMjE5LCAxNzMsIDQ1LCAKKyAgICA1LCAyMTksIDI0MiwgNDUsIDUsIDI0NywgMTg5LCA0NSwgNSwgMjQ2LCAxNzMsIDQ1LCA1LCAyNDYsIDE2MywgNDUsIDUsIAorICAgIDI0MiwgMjE0LCA0NSwgNSwgMjQyLCAxNzgsIDQ1LCA1LCAyNDcsIDc2LCA0NSwgNSwgMjQ3LCA2OCwgNDUsIDUsIDI0NywgCisgICAgMTc4LCA0NSwgNSwgMjQ2LCA5MSwgNDUsIDUsIDI0MywgMzAsIDQ1LCA1LCAyNDcsIDEwOSwgNDUsIDUsIDIxOCwgNTksIDQ1LCAKKyAgICA1LCAyMTgsIDQxLCA0NSwgNSwgMjE4LCAzNiwgNDUsIDUsIDIxOCwgMTksIDQ1LCA1LCAyMTgsIDExLCA0NSwgNSwgMjE4LCAKKyAgICA1MCwgNDUsIDUsIDIxOCwgNDksIDQ1LCA1LCAyMTgsIDU2LCA0NSwgNSwgMjE4LCAyNiwgNDUsIDUsIDIxOCwgMjMsIDQ1LCAKKyAgICA1LCAyMTgsIDUzLCA0NSwgNSwgMjA0LCAyNTIsIDQ1LCA1LCAyMDQsIDIzMiwgNDUsIDUsIDIwNCwgMjMxLCA0NSwgNSwgCisgICAgMjA0LCAyMjAsIDQ1LCA1LCAyMDQsIDIxNywgNDUsIDUsIDIwNCwgMjQ4LCA0NSwgNSwgMjA0LCAyNDcsIDQ1LCA1LCAyMDQsIAorICAgIDI1MSwgNDUsIDUsIDIwNCwgMjMwLCA0NSwgNSwgMjA0LCAyMjksIDQ1LCA1LCAyMDQsIDI1MCwgNDUsIDUsIDIxOSwgMjAsIAorICAgIDQ1LCA1LCAyMTksIDYsIDQ1LCA1LCAyMTksIDUsIDQ1LCA1LCAyMTgsIDI0NSwgNDUsIDUsIDIxOCwgMjQ0LCA0NSwgNSwgCisgICAgMjE5LCAxNiwgNDUsIDUsIDIxOSwgMTUsIDQ1LCA1LCAyMTksIDE5LCA0NSwgNSwgMjE4LCAyNDcsIDQ1LCA1LCAyMTgsIAorICAgIDI0NiwgNDUsIDUsIDIxOSwgMTgsIDQ1LCA1LCAyMDcsIDMyLCA0NSwgNSwgMjA2LCAxNSwgNDUsIDUsIDIwNSwgMjU1LCA0NSwgCisgICAgNSwgMjA0LCAyMTUsIDQ1LCA1LCAyMDQsIDE3NiwgNDUsIDUsIDIwNiwgMjAxLCA0NSwgNSwgMjA2LCAxOTAsIDQ1LCA1LCAKKyAgICAyMDcsIDgsIDQ1LCA1LCAxMzgsIDQ1LCA1LCAyMDUsIDE2MSwgNDUsIDUsIDIwNiwgMjIxLCA0NSwgNSwgMjIwLCAxNTcsIAorICAgIDQ1LCA1LCAyMTksIDE1MCwgNDUsIDUsIDIxOSwgMTI1LCA0NSwgNSwgMjE4LCAxMzMsIDQ1LCA1LCAyMTgsIDc0LCA0NSwgNSwgCisgICAgMjIwLCAzNCwgNDUsIDUsIDIyMCwgMjksIDQ1LCA1LCAyMjAsIDE0MywgNDUsIDUsIDIxOCwgMjQxLCA0NSwgNSwgMjE4LCAKKyAgICAyMjksIDQ1LCA1LCAyMjAsIDExNiwgNDUsIDUsIDIxNiwgMjEwLCA0NSwgNSwgMjE1LCAyMDQsIDQ1LCA1LCAyMTUsIDE2NiwgCisgICAgNDUsIDUsIDIxNCwgMjI0LCA0NSwgNSwgMjE0LCAxOTAsIDQ1LCA1LCAyMTYsIDczLCA0NSwgNSwgMjE2LCA2MSwgNDUsIDUsIAorICAgIDIxNiwgMTkwLCA0NSwgNSwgMjE1LCAxMDYsIDQ1LCA1LCAyMTUsIDgxLCA0NSwgNSwgMjE2LCA4NywgNDUsIDUsIDIyMiwgCisgICAgMjMzLCA0NSwgNSwgMjIxLCAyMTEsIDQ1LCA1LCAyMjEsIDE4MSwgNDUsIDUsIDIyMSwgNDEsIDQ1LCA1LCAyMjAsIDI0MywgCisgICAgNDUsIDUsIDIyMiwgNzYsIDQ1LCA1LCAyMjIsIDY0LCA0NSwgNSwgMjIyLCAxOTgsIDQ1LCA1LCAyMjEsIDEzNiwgNDUsIDUsIAorICAgIDIyMSwgODcsIDQ1LCA1LCAyMjIsIDEyMywgNDUsIDUsIDIwMCwgMTA5LCA0NSwgNSwgMjAwLCA5LCA0NSwgNSwgMjAwLCAwLCAKKyAgICA0NSwgNSwgMTk5LCAyMTEsIDQ1LCA1LCAxOTksIDE3OSwgNDUsIDUsIDIwMCwgNTEsIDQ1LCA1LCAyMDAsIDQ4LCA0NSwgNSwgCisgICAgMjAwLCA4OCwgNDUsIDUsIDE5OSwgMjQ1LCA0NSwgNSwgMTk5LCAyMzAsIDQ1LCA1LCAyMDAsIDYxLCA0NSwgNSwgMjEzLCAKKyAgICAyNDgsIDQ1LCA1LCAyMTMsIDg4LCA0NSwgNSwgMjEzLCAzMywgNDUsIDUsIDIxMiwgMTc1LCA0NSwgNSwgMjEyLCAxNDMsIAorICAgIDQ1LCA1LCAyMTMsIDE5MCwgNDUsIDUsIDIxMywgMTY3LCA0NSwgNSwgMjEzLCAyMjksIDQ1LCA1LCAyMTMsIDEsIDQ1LCA1LCAKKyAgICAyMTIsIDIzOCwgNDUsIDUsIDIxMywgMTk5LCA0NSwgNSwgMjI1LCAxNzUsIDQ1LCA1LCAyMjQsIDIxMCwgNDUsIDUsIDIyNCwgCisgICAgMTkyLCA0NSwgNSwgMjI0LCA0MiwgNDUsIDUsIDIyNCwgMTMsIDQ1LCA1LCAyMjUsIDQwLCA0NSwgNSwgMjI1LCAzMiwgNDUsIAorICAgIDUsIDIyNSwgMTQ5LCA0NSwgNSwgMjI0LCAxMTAsIDQ1LCA1LCAyMjQsIDc4LCA0NSwgNSwgMjI1LCA1OCwgNDUsIDUsIDIwMywgCisgICAgODksIDQ1LCA1LCAyMDIsIDIzNCwgNDUsIDUsIDIwMiwgMjE5LCA0NSwgNSwgMjAxLCAxNjYsIDQ1LCA1LCAyMDEsIDE1OSwgCisgICAgNDUsIDUsIDIwMywgNTksIDQ1LCA1LCAyMDMsIDU0LCA0NSwgNSwgMjAzLCA4NSwgNDUsIDUsIDIwMiwgMTkzLCA0NSwgNSwgCisgICAgMjAyLCAxNzksIDQ1LCA1LCAyMDMsIDY1LCA0NSwgNSwgMjI0LCAxMjgsIDQ1LCA1LCAyMjQsIDEyMywgNDUsIDUsIDIyNCwgCisgICAgMTIyLCA0NSwgNSwgMjI0LCAxMTksIDQ1LCA1LCAyMjQsIDExOCwgNDUsIDUsIDIyNCwgMTI1LCA0NSwgNSwgMjI0LCAxMjQsIAorICAgIDQ1LCA1LCAyMjQsIDEyNywgNDUsIDUsIDIyNCwgMTIxLCA0NSwgNSwgMjI0LCAxMjAsIDQ1LCA1LCAyMjQsIDEyNiwgNDUsIAorICAgIDUsIDIyNCwgMTM3LCA0NSwgNSwgMjI0LCAxMzIsIDQ1LCA1LCAyMjQsIDEzMSwgNDUsIDUsIDIyNCwgMTE1LCA0NSwgNSwgCisgICAgMjI0LCAxMTQsIDQ1LCA1LCAyMjQsIDEzNCwgNDUsIDUsIDIyNCwgMTMzLCA0NSwgNSwgMjI0LCAxMzYsIDQ1LCA1LCAyMjQsIAorICAgIDExNywgNDUsIDUsIDIyNCwgMTE2LCA0NSwgNSwgMjI0LCAxMzUsIDQ1LCA1LCAyMTIsIDIxNCwgNDUsIDUsIDIxMiwgMjAzLCAKKyAgICA0NSwgNSwgMjEyLCAyMDIsIDQ1LCA1LCAyMTIsIDE5NSwgNDUsIDUsIDIxMiwgMTg4LCA0NSwgNSwgMjEyLCAyMTAsIDQ1LCAKKyAgICA1LCAyMTIsIDIwOSwgNDUsIDUsIDIxMiwgMjEzLCA0NSwgNSwgMjEyLCAyMDEsIDQ1LCA1LCAyMTIsIDIwMCwgNDUsIDUsIAorICAgIDIxMiwgMjEyLCA0NSwgNSwgMjE5LCAyLCA0NSwgNSwgMjE4LCAyNTMsIDQ1LCA1LCAyMTgsIDI1MiwgNDUsIDUsIDIxOCwgCisgICAgMjQ5LCA0NSwgNSwgMjE4LCAyNDgsIDQ1LCA1LCAyMTgsIDI1NSwgNDUsIDUsIDIxOCwgMjU0LCA0NSwgNSwgMjE5LCAxLCAKKyAgICA0NSwgNSwgMjE4LCAyNTEsIDQ1LCA1LCAyMTgsIDI1MCwgNDUsIDUsIDIxOSwgMCwgNDUsIDUsIDIyNywgMjQ3LCA0NSwgNSwgCisgICAgMjI3LCAyMDcsIDQ1LCA1LCAyMjcsIDIwMCwgNDUsIDUsIDIyNywgMTQ3LCA0NSwgNSwgMjI3LCAxMjgsIDQ1LCA1LCAyMjcsIAorICAgIDIyNywgNDUsIDUsIDIyNywgMjI1LCA0NSwgNSwgMjI3LCAyNDEsIDQ1LCA1LCAyMjcsIDE2NiwgNDUsIDUsIDIyNywgMTU2LCAKKyAgICA0NSwgNSwgMjI3LCAyMzQsIDQ1LCA1LCAyMTAsIDEwOSwgNDUsIDUsIDIxMCwgMzMsIDQ1LCA1LCAyMTAsIDI4LCA0NSwgNSwgCisgICAgMjA5LCAyMjAsIDQ1LCA1LCAyMDksIDIwMywgNDUsIDUsIDIxMCwgNjUsIDQ1LCA1LCAyMTAsIDYzLCA0NSwgNSwgMjEwLCAKKyAgICA5OCwgNDUsIDUsIDIxMCwgOCwgNDUsIDUsIDIxMCwgMiwgNDUsIDUsIDIxMCwgNzQsIDQ1LCA1LCAyMDgsIDE3OCwgNDUsIDUsIAorICAgIDIwOCwgMTQ3LCA0NSwgNSwgMjA4LCAxNDMsIDQ1LCA1LCAyMDgsIDEzNCwgNDUsIDUsIDIwOCwgMTMxLCA0NSwgNSwgMjA4LCAKKyAgICAxNTMsIDQ1LCA1LCAyMDgsIDE1MiwgNDUsIDUsIDIwOCwgMTc3LCA0NSwgNSwgMjA4LCAxMzksIDQ1LCA1LCAyMDgsIDEzOCwgCisgICAgNDUsIDUsIDIwOCwgMTU1LCA0NSwgNSwgMjEyLCA2MSwgNDUsIDUsIDIwOSwgMTgyLCA0NSwgNSwgMjA5LCAxNjEsIDQ1LCA1LCAKKyAgICAyMDgsIDI0LCA0NSwgNSwgMjA3LCAxOTMsIDQ1LCA1LCAyMTEsIDIwMiwgNDUsIDUsIDIxMSwgMTkwLCA0NSwgNSwgMjEyLCAKKyAgICA0NiwgNDUsIDUsIDIwOSwgMjksIDQ1LCA1LCAyMDksIDEwLCA0NSwgNSwgMjExLCAyNDMsIDQ1LCA1LCAyMzQsIDIzMywgNDUsIAorICAgIDUsIDIzNCwgNzUsIDQ1LCA1LCAyMzQsIDU0LCA0NSwgNSwgMjMzLCA5NywgNDUsIDUsIDIzMywgNzEsIDQ1LCA1LCAyMzQsIAorICAgIDEzOSwgNDUsIDUsIDIzNCwgMTIwLCA0NSwgNSwgMjM0LCAyMjMsIDQ1LCA1LCAyMzMsIDIwNywgNDUsIDUsIDIzMywgMTg4LCAKKyAgICA0NSwgNSwgMjM0LCAxNTAsIDQ1LCA1LCAyMjYsIDI5LCA0NSwgNSwgMjI2LCAyOCwgNDUsIDUsIDIyNiwgMjMsIDQ1LCA1LCAKKyAgICAyMjYsIDIyLCA0NSwgNSwgMjI2LCAxOSwgNDUsIDUsIDIyNiwgMTgsIDQ1LCA1LCAyMjYsIDI1LCA0NSwgNSwgMjI2LCAyNCwgCisgICAgNDUsIDUsIDIyNiwgMjcsIDQ1LCA1LCAyMjYsIDIxLCA0NSwgNSwgMjI2LCAyMCwgNDUsIDUsIDIyNiwgMjYsIDQ1LCA1LCAKKyAgICAyMDksIDIyNywgMTQzLCAxMTEsIDIsIDIwMCwgNzQsIDE0MywgMTExLCAyLCAyMTMsIDIxOCwgMTQzLCAxMTEsIDIsIDIxMywgCisgICAgMTM0LCAxMTgsIDEsIDIwNCwgMTAyLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxNjEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIyNiwgMjA3LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjYsIDg4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjYsIDE3OCwgCisgICAgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE5LCAxNzgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NywgMTkwLCA4NiwgMTExLCAyLCAKKyAgICAyNDYsIDg2LCAyNDcsIDM3LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDYsIDkxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDYsIAorICAgIDIxMCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE4LCAyNiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQyLCA1OCwgODYsIDExMSwgCisgICAgMiwgMjQ2LCA4NiwgMjA0LCAyNDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0MCwgMjExLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAyMDQsIDIzNiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTg4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMDcsIDM2LCA4NiwgCisgICAgMTExLCAyLCAyNDYsIDg2LCAyMDYsIDEyMiwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMTM4LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAyMDYsIDYxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTgsIDI0MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ5LCAxMzYsIAorICAgIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxNSwgMjQ1LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTUsIDEwNiwgODYsIDExMSwgMiwgCisgICAgMjQ2LCA4NiwgMjE1LCAyMTcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyMSwgMTM2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAxOTksIDI0NSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjEzLCAxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMjQsIDExMCwgODYsIAorICAgIDExMSwgMiwgMjQ2LCA4NiwgMjAyLCAxOTMsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxMCwgMTE0LCA4NiwgMTExLCAyLCAKKyAgICAyNDYsIDg2LCAyMDgsIDE3OSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjEyLCA2NCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMTQ0LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxOTQsIDg2LCAyMiwgMiwgMjQ2LCA4NiwgMjE0LCAxNTksIDg2LCAyMjgsIAorICAgIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxNCwgOTcsIDg2LCAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxMiwgMTMxLCA4NiwgCisgICAgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTIsIDEyNCwgODYsIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjE0LCAKKyAgICAxMzksIDg2LCAyMiwgMiwgMjE3LCA4NiwgODYsIDIyLCAyLCAyNTIsIDk5LCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDI1MywgCisgICAgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAyMDEsIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMTY2LCAxNzcsIDEsIDI0OCwgMTgxLCAKKyAgICAyMTksIDI0MCwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAxNzgsIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAyNTMsIDY5LCAxLCAKKyAgICAyNDgsIDE4MSwgMjE5LCAyMDEsIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAxNjYsIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAyNDAsIAorICAgIDY5LCAxLCAyNDgsIDE4MSwgMjE5LCAxNzgsIDY5LCAxLCAyNTEsIDE2OSwgMjQ3LCA3NiwgNjksIDEsIDI1MSwgMTY5LCAKKyAgICAyMDQsIDIxNSwgNjksIDEsIDI1MSwgMTY5LCAxMzgsIDY5LCAxLCAyNTEsIDE2OSwgMjE2LCAyMjYsIDY3LCAxLCAyMzgsIAorICAgIDI5LCAyMzgsIDI4LCAyNDMsIDM4LCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOCwgMjksIDI0MywgMzgsIDE1MCwgCisgICAgMTQ4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIHBocmFzZWJvb2tfb2Zmc2V0MVtdID0gewpAQCAtMTY1MzMsMjAgKzE3NjQ5LDIwIEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgCiAgICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA1MiwgODcsIDUyLCA4OCwgCi0gICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA1MiwgOTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgOTgsIDk5LCAxMDAsIAotICAgIDEwMSwgMTAyLCAxMDMsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMDQsIDEwNSwgMTA2LCAKLSAgICAxMDcsIDEwOCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgMTA5LCAxMTAsIDExMSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDUyLCA5NywgNTIsIDk4LCA1MiwgNTIsIDUyLCA5OSwgMTAwLCAxMDEsIAorICAgIDEwMiwgMTAzLCAxMDQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMDUsIDEwNiwgMTA3LCAKKyAgICAxMDgsIDEwOSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgMTEwLCAxMTEsIDExMiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgMTEyLCAxMTMsIDExNCwgMTE1LCA1MiwgNTIsIDUyLCAxMTYsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDExMywgMTE0LCAxMTUsIDExNiwgNTIsIDUyLCA1MiwgMTE3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMTgsIDExOSwgCisgICAgMTIwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgMTE3LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOCwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOSwgMTIwLCAKLSAgICAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTMwLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEzMSwgNTIsIDEzMiwgMTMzLCAxMzQsIAotICAgIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCAxMjEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTIyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTIzLCAxMjQsIAorICAgIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAxMzMsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTM0LCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTM1LCAxMzYsIDUyLCA1MiwgNTIsIDUyLCAxMzcsIDUyLCAxMzgsIDEzOSwgMTQwLCAKKyAgICAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY1NjAsNyArMTc2NzYsNyBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQyLCAxNDMsIDE0NCwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDgsIDE0OSwgMTUwLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzE3LDcgKzE3ODMzLDcgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTQ1LCAxNDYsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNTEsIDE1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjczMSw4ICsxNzg0Nyw4IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDcsIDE0OCwgMTQ5LCAKLSAgICAxNTAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNTMsIDE1NCwgMTU1LCAKKyAgICAxNTYsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjc2OCwxMjE0ICsxNzg4NCwxMjE3IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMywgNiwgOSwgMTEsIDE0LCAxNywgMTksIDIxLCAyNCwgMjcsIDI5LCAzMSwgCiAgICAgMzMsIDM1LCAzOSwgNDEsIDQ0LCA0NiwgNDgsIDUwLCA1MiwgNTQsIDU2LCA1OSwgNjEsIDY0LCA2NiwgNjgsIDcxLCA3NCwgCiAgICAgNzcsIDgwLCA4NCwgODgsIDkzLCA5OCwgMTAzLCAxMDcsIDExMiwgMTE3LCAxMjIsIDEyNiwgMTMxLCAxMzYsIDE0MCwgMTQ1LCAKLSAgICAxNTAsIDE1NCwgMTU5LCAxNjQsIDE2OCwgMTcyLCAxNzcsIDE4MSwgMTg2LCAxOTEsIDE5NiwgMjAxLCAyMDYsIDIwOSwgCi0gICAgMjEzLCAyMTYsIDIyMCwgMjIzLCAyMjcsIDIzMSwgMjM2LCAyNDEsIDI0NiwgMjUwLCAyNTUsIDI2MCwgMjY1LCAyNjksIAotICAgIDI3NCwgMjc5LCAyODMsIDI4OCwgMjkzLCAyOTcsIDMwMiwgMzA3LCAzMTEsIDMxNSwgMzIwLCAzMjQsIDMyOSwgMzM0LCAKLSAgICAzMzksIDM0NCwgMzQ5LCAzNTMsIDM1NiwgMzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjIsIDM2NiwgMzcxLCAKLSAgICAzNzQsIDM3NywgMzgwLCAzODMsIDM4NiwgMzg5LCAzOTEsIDM5NCwgNDAwLCA0MDgsIDQxMSwgNDE1LCA0MTgsIDQyMCwgCi0gICAgNDIzLCA0MjYsIDQyOSwgNDMyLCA0MzYsIDQzOSwgNDQyLCA0NDUsIDQ0NywgNDUwLCA0NTYsIDQ2NCwgNDcxLCA0NzgsIAotICAgIDQ4NSwgNDkwLCA0OTcsIDUwMywgNTEwLCA1MTcsIDUyNCwgNTMyLCA1MzcsIDU0NSwgNTUyLCA1NTgsIDU2NSwgNTcyLCAKLSAgICA1ODAsIDU4NywgNTk1LCA2MDMsIDYwOCwgNjE2LCA2MjMsIDYyOSwgNjM2LCA2NDMsIDY1MCwgNjUzLCA2NTksIDY2NiwgCi0gICAgNjcyLCA2NzksIDY4NiwgNjkzLCA2OTgsIDcwNCwgNzExLCA3MTcsIDcyNCwgNzMxLCA3MzgsIDc0NiwgNzUxLCA3NTksIAotICAgIDc2NiwgNzcyLCA3NzksIDc4NiwgNzk0LCA4MDEsIDgwOSwgODE3LCA4MjIsIDgzMCwgODM3LCA4NDMsIDg1MCwgODU3LCAKLSAgICA4NjQsIDg2NywgODczLCA4ODAsIDg4NiwgODkzLCA5MDAsIDkwNywgOTEyLCA5MjAsIDkyNywgOTM0LCA5NDEsIDk0OCwgCi0gICAgOTU1LCA5NjIsIDk2OSwgOTc2LCA5ODQsIDk5MiwgMTAwMCwgMTAwOCwgMTAxNiwgMTAyNCwgMTAzMiwgMTA0MCwgMTA0NywgCi0gICAgMTA1NCwgMTA2MSwgMTA2OCwgMTA3NSwgMTA4MiwgMTA4OSwgMTA5NiwgMTEwMywgMTExMCwgMTExNywgMTEyNCwgMTEzMiwgCi0gICAgMTE0MCwgMTE0OCwgMTE1NiwgMTE2NCwgMTE3MiwgMTE4MCwgMTE4OCwgMTE5NiwgMTIwNCwgMTIxMSwgMTIxOCwgMTIyNiwgCi0gICAgMTIzNCwgMTI0MiwgMTI1MCwgMTI1OCwgMTI2NiwgMTI3NCwgMTI4MiwgMTI5MCwgMTI5NiwgMTMwMSwgMTMwNiwgMTMxNCwgCi0gICAgMTMyMiwgMTMzMCwgMTMzOCwgMTM0MywgMTM1MCwgMTM1NywgMTM2NSwgMTM3MywgMTM4MSwgMTM4OSwgMTM5OCwgMTQwNywgCi0gICAgMTQxNCwgMTQyMSwgMTQyOCwgMTQzNSwgMTQ0MywgMTQ1MSwgMTQ1OSwgMTQ2NywgMTQ3OCwgMTQ4MywgMTQ4OCwgMTQ5NSwgCi0gICAgMTUwMiwgMTUwOSwgMTUxNiwgMTUyMywgMTUzMCwgMTUzNSwgMTU0MCwgMTU0NywgMTU1NCwgMTU2MiwgMTU3MCwgMTU3OCwgCi0gICAgMTU4NiwgMTU5MywgMTYwMCwgMTYwOCwgMTYxNiwgMTYyNCwgMTYzMiwgMTY0MCwgMTY0OCwgMTY1NiwgMTY2NCwgMTY3MiwgCi0gICAgMTY4MCwgMTY4NywgMTY5NCwgMTcwMSwgMTcwOCwgMTcxNSwgMTcyMiwgMTcyOSwgMTczNiwgMTc0NCwgMTc1MiwgMTc1OSwgCi0gICAgMTc2NiwgMTc3MywgMTc4MCwgMTc4OCwgMTc5NiwgMTgwNCwgMTgxMiwgMTgyMCwgMTgyNywgMTgzNCwgMTg0MiwgMTg1MCwgCi0gICAgMTg1OCwgMTg2NiwgMTg3MSwgMTg3NywgMTg4MywgMTg5MCwgMTg5NywgMTkwMiwgMTkwNywgMTkxMiwgMTkxOSwgMTkyNiwgCi0gICAgMTkzMywgMTk0MCwgMTk0OCwgMTk1NiwgMTk2MywgMTk2OSwgMTk3NCwgMTk3OSwgMTk4NiwgMTk5MywgMjAwMCwgMjAwNSwgCi0gICAgMjAxMCwgMjAxNSwgMjAyMiwgMjAyOSwgMjAzNiwgMjA0MywgMjA1MCwgMjA1NywgMjA2NSwgMjA3NSwgMjA4MywgMjA5MCwgCi0gICAgMjA5NywgMjEwMiwgMjEwNywgMjExNCwgMjEyMSwgMjEyNSwgMjEzMCwgMjEzNSwgMjE0MCwgMjE0OCwgMjE1NywgMjE2NCwgCi0gICAgMjE3MSwgMjE4MCwgMjE4NywgMjE5NCwgMjE5OSwgMjIwNiwgMjIxMywgMjIyMCwgMjIyNywgMjIzNCwgMjIzOSwgMjI0NiwgCi0gICAgMjI1MywgMjI2MSwgMjI2NiwgMjI3MSwgMjI3NiwgMjI4NiwgMjI5MCwgMjI5NiwgMjMwMiwgMjMwOCwgMjMxNCwgMjMyMiwgCi0gICAgMjMzNSwgMjM0MywgMjM0OCwgMjM1OCwgMjM2MywgMjM2OCwgMjM3OCwgMjM4MywgMjM5MCwgMjM5NywgMjQwNSwgMjQxMywgCi0gICAgMjQyMCwgMjQyNywgMjQzNCwgMjQ0MSwgMjQ1MSwgMjQ2MSwgMjQ3MCwgMjQ3OSwgMjQ4OSwgMjQ5OSwgMjUwOSwgMjUxOSwgCi0gICAgMjUyNSwgMjUzNSwgMjU0NSwgMjU1NSwgMjU2NSwgMjU3MywgMjU4MSwgMjU4OCwgMjU5NSwgMjYwMywgMjYxMSwgMjYxOSwgCi0gICAgMjYyNywgMjYzNCwgMjY0MSwgMjY1MSwgMjY2MSwgMjY2OSwgMjY3NywgMjY4NSwgMjY5MCwgMjcwMCwgMjcwNSwgMjcxMiwgCi0gICAgMjcxOSwgMjcyNCwgMjcyOSwgMjczNywgMjc0NSwgMjc1NSwgMjc2NSwgMjc3MiwgMjc3OSwgMjc4OCwgMjc5NywgMjgwNSwgCi0gICAgMjgxMywgMjgyMiwgMjgzMSwgMjgzOSwgMjg0NywgMjg1NiwgMjg2NSwgMjg3NCwgMjg4MywgMjg5MywgMjkwMywgMjkxMSwgCi0gICAgMjkxOSwgMjkyOCwgMjkzNywgMjk0NiwgMjk1NSwgMjk2NSwgMjk3NSwgMjk4MywgMjk5MSwgMzAwMCwgMzAwOSwgMzAxOCwgCi0gICAgMzAyNywgMzAzNiwgMzA0NSwgMzA1MCwgMzA1NSwgMzA2MywgMzA3MSwgMzA4MSwgMzA4OSwgMzA5NCwgMzA5OSwgMzEwNiwgCi0gICAgMzExMywgMzEyMCwgMzEyNywgMzEzNCwgMzE0MSwgMzE1MSwgMzE2MSwgMzE3MSwgMzE4MSwgMzE4OCwgMzE5NSwgMzIwNSwgCi0gICAgMzIxNSwgMzIyMywgMzIzMSwgMzIzOSwgMzI0NywgMzI1NSwgMzI2MiwgMzI2OSwgMzI3NiwgMzI4MiwgMzI4OSwgMzI5NiwgCi0gICAgMzMwMywgMzMxMiwgMzMyMiwgMzMzMiwgMzMzOSwgMzM0NiwgMzM1MiwgMzM1NywgMzM2NCwgMzM3MCwgMzM3NiwgMzM4MywgCi0gICAgMzM5MCwgMzQwMSwgMzQxMSwgMzQxOCwgMzQyNSwgMzQzMiwgMzQzOSwgMzQ0NSwgMzQ1MCwgMzQ1NywgMzQ2MywgMzQ2OCwgCi0gICAgMzQ3NiwgMzQ4NCwgMzQ5MSwgMzQ5NywgMzUwMiwgMzUwOSwgMzUxNCwgMzUyMSwgMzUzMCwgMzUzOSwgMzU0OCwgMzU1NSwgCi0gICAgMzU2MSwgMzU2NywgMzU3MiwgMzU3OSwgMzU4NiwgMzU5MywgMzYwMCwgMzYwNywgMzYxMiwgMzYxNywgMzYyNiwgMzYzNCwgCi0gICAgMzY0MywgMzY0OCwgMzY1NSwgMzY2NiwgMzY3MywgMzY4MSwgMzY5MCwgMzY5NiwgMzcwMiwgMzcwOCwgMzcxNSwgMzcyMCwgCi0gICAgMzcyNiwgMzczNywgMzc0NiwgMzc1NSwgMzc2MywgMzc3MSwgMzc4MSwgMzc4NiwgMzc5MywgMzgwMCwgMzgwNSwgMzgxNywgCi0gICAgMzgyNiwgMzgzNCwgMzg0MSwgMzg1MCwgMzg1NSwgMzg2MCwgMzg2NywgMzg3NCwgMzg4MSwgMzg4OCwgMzg5NCwgMzkwMywgCi0gICAgMzkxMSwgMzkxNiwgMzkyNCwgMzkzMCwgMzkzOCwgMzk0NiwgMzk1MiwgMzk1OCwgMzk2NCwgMzk3MSwgMzk3OSwgMzk4NSwgCi0gICAgMzk5MywgNDAwMCwgNDAwNSwgNDAxMiwgNDAyMCwgNDAzMCwgNDAzNywgNDA0NCwgNDA1NCwgNDA2MSwgNDA2OCwgNDA3OCwgCi0gICAgNDA4NSwgNDA5MiwgNDA5OSwgNDEwNSwgNDExMSwgNDEyMSwgNDEzNCwgNDEzOSwgNDE0NiwgNDE1MSwgNDE1NSwgNDE2MSwgCi0gICAgNDE3MCwgNDE3NywgNDE4MiwgNDE4NywgNDE5MSwgNDE5NiwgNDIwMiwgNDIwNiwgNDIxMiwgNDIxOCwgNDIyNCwgNDIzMCwgCi0gICAgNDIzOCwgNDI0MywgNDI0OCwgNDI1MywgNDI1OCwgNDI2NCwgNDI2NiwgNDI3MSwgNDI3NSwgNDI4MSwgNDI4NywgNDI5MywgCi0gICAgNDI5OCwgNDMwNSwgNDMxMiwgNDMxOCwgNDMyNSwgNDMzMywgNDM0MSwgNDM0NiwgNDM1MSwgNDM1NSwgNDM2MCwgNDM2MiwgCi0gICAgNDM2NCwgNDM2NywgNDM2OSwgNDM3MiwgNDM3NywgNDM4MiwgNDM4OCwgNDM5MywgNDM5NywgNDQwMSwgNDQwNiwgNDQxNSwgCi0gICAgNDQyMSwgNDQyNiwgNDQzMiwgNDQzNywgNDQ0MywgNDQ1MSwgNDQ1OSwgNDQ2MywgNDQ2NywgNDQ3MiwgNDQ3OCwgNDQ4NCwgCi0gICAgNDQ5MCwgNDQ5NiwgNDUwMSwgNDUwOCwgNDUxNiwgNDUyNCwgNDUyOSwgNDUzNSwgNDU0MiwgNDU0OSwgNDU1NiwgNDU2MywgCi0gICAgNDU2NywgNDU3MiwgNDU3NywgNDU4MiwgNDU4NywgNDU5MiwgNDU5NSwgNDU5OCwgNDYwMSwgNDYwNCwgNDYwNywgNDYxMCwgCi0gICAgNDYxNCwgNDYxOCwgNDYyNCwgNDYyNywgNDYzMiwgNDYzOCwgNDY0NCwgNDY0NywgNDY1MiwgNDY1OCwgNDY2MiwgNDY2OCwgCi0gICAgNDY3NCwgNDY4MCwgNDY4NiwgNDY5MSwgNDY5NiwgNDcwMSwgNDcwNCwgNDcxMCwgNDcxNSwgNDcyMCwgNDcyNCwgNDcyOSwgCi0gICAgNDczNSwgNDc0MSwgNDc0NCwgNDc0OCwgNDc1MiwgNDc1NiwgNDc1OSwgNDc2MiwgNDc2NywgNDc3MSwgNDc3OCwgNDc4MiwgCi0gICAgNDc4OCwgNDc5MiwgNDc5OCwgNDgwMiwgNDgwNiwgNDgxMCwgNDgxNSwgNDgyMCwgNDgyNywgNDgzMywgNDg0MCwgNDg0NiwgCi0gICAgNDg1MiwgNDg1OCwgNDg2MSwgNDg2NSwgNDg2OSwgNDg3MywgNDg3NywgNDg4MiwgNDg4NywgNDg5MSwgNDg5NSwgNDkwMSwgCi0gICAgNDkwNSwgNDkwOSwgNDkxNCwgNDkyMCwgNDkyNSwgNDkzMSwgNDkzNSwgNDk0MiwgNDk0NywgNDk1MSwgNDk1NiwgNDk2MSwgCi0gICAgNDk2NywgNDk3MCwgNDk3NCwgNDk3OSwgNDk4NCwgNDk5MywgNDk5OSwgNTAwNCwgNTAwOCwgNTAxMywgNTAxNywgNTAyMiwgCi0gICAgNTAyNiwgNTAzMCwgNTAzNSwgNTAzOSwgNTA0NSwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MCwgNTA3NSwgNTA4MSwgCi0gICAgNTA4NywgNTA5MywgNTA5OSwgNTEwNCwgNTExMCwgNTExNiwgNTEyMiwgNTEyNywgNTEzMiwgNTEzOSwgNTE0NiwgNTE1MCwgCi0gICAgNTE1NiwgNTE2MywgMCwgMCwgNTE3MCwgNTE3MywgNTE4MiwgNTE5MSwgNTIwMiwgNTIwNiwgMCwgMCwgMCwgMCwgNTIxMSwgCi0gICAgNTIxNCwgNTIxOSwgNTIyNywgNTIzMiwgNTI0MCwgNTI0OCwgMCwgNTI1NiwgMCwgNTI2NCwgNTI3MiwgNTI4MCwgNTI5MSwgCi0gICAgNTI5NiwgNTMwMSwgNTMwNiwgNTMxMSwgNTMxNiwgNTMyMSwgNTMyNiwgNTMzMSwgNTMzNiwgNTM0MSwgNTM0NiwgNTM1MSwgCi0gICAgNTM1NiwgNTM2MSwgNTM2NiwgNTM3MSwgMCwgNTM3NiwgNTM4MSwgNTM4NiwgNTM5MSwgNTM5NiwgNTQwMSwgNTQwNiwgCi0gICAgNTQxMSwgNTQxOSwgNTQyNywgNTQzNSwgNTQ0MywgNTQ1MSwgNTQ1OSwgNTQ3MCwgNTQ3NSwgNTQ4MCwgNTQ4NSwgNTQ5MCwgCi0gICAgNTQ5NSwgNTUwMCwgNTUwNSwgNTUxMCwgNTUxNSwgNTUyMCwgNTUyNSwgNTUzMCwgNTUzNSwgNTU0MCwgNTU0NSwgNTU1MCwgCi0gICAgNTU1NSwgNTU2MSwgNTU2NiwgNTU3MSwgNTU3NiwgNTU4MSwgNTU4NiwgNTU5MSwgNTU5NiwgNTYwNCwgNTYxMiwgNTYyMCwgCi0gICAgNTYyOCwgNTYzNiwgNTY0MSwgNTY0NSwgNTY0OSwgNTY1NiwgNTY2NiwgNTY3NiwgNTY4MCwgNTY4NCwgNTY4OCwgNTY5NCwgCi0gICAgNTcwMSwgNTcwNSwgNTcxMCwgNTcxNCwgNTcxOSwgNTcyMywgNTcyOCwgNTczMiwgNTczNywgNTc0MiwgNTc0NywgNTc1MiwgCi0gICAgNTc1NywgNTc2MiwgNTc2NywgNTc3MiwgNTc3NywgNTc4MiwgNTc4NywgNTc5MiwgNTc5NywgNTgwMiwgNTgwNywgNTgxMSwgCi0gICAgNTgxNSwgNTgyMSwgNTgyNSwgNTgzMCwgNTgzNiwgNTg0NCwgNTg0OSwgNTg1NCwgNTg2MSwgNTg2NiwgNTg3MSwgNTg3OCwgCi0gICAgNTg4NywgNTg5NiwgNTkwNywgNTkxNSwgNTkyMCwgNTkyNSwgNTkzMCwgNTkzNywgNTk0MiwgNTk0OCwgNTk1MywgNTk1OCwgCi0gICAgNTk2MywgNTk2OCwgNTk3MywgNTk3OCwgNTk4NiwgNTk5MiwgNTk5NywgNjAwMSwgNjAwNiwgNjAxMSwgNjAxNiwgNjAyMSwgCi0gICAgNjAyNiwgNjAzMSwgNjAzNiwgNjA0MCwgNjA0NiwgNjA1MCwgNjA1NSwgNjA2MCwgNjA2NSwgNjA2OSwgNjA3NCwgNjA3OSwgCi0gICAgNjA4NCwgNjA4OSwgNjA5MywgNjA5OCwgNjEwMiwgNjEwNywgNjExMiwgNjExNywgNjEyMiwgNjEyOCwgNjEzMywgNjEzOSwgCi0gICAgNjE0MywgNjE0OCwgNjE1MiwgNjE1NiwgNjE2MSwgNjE2NiwgNjE3MSwgNjE3NiwgNjE4MSwgNjE4NiwgNjE5MSwgNjE5NSwgCi0gICAgNjIwMSwgNjIwNSwgNjIxMCwgNjIxNSwgNjIyMCwgNjIyNCwgNjIyOSwgNjIzNCwgNjIzOSwgNjI0NCwgNjI0OCwgNjI1MywgCi0gICAgNjI1NywgNjI2MiwgNjI2NywgNjI3MiwgNjI3NywgNjI4MywgNjI4OCwgNjI5NCwgNjI5OCwgNjMwMywgNjMwNywgNjMxNSwgCi0gICAgNjMyMCwgNjMyNSwgNjMzMCwgNjMzNywgNjM0MiwgNjM0OCwgNjM1MywgNjM1OCwgNjM2MywgNjM2OCwgNjM3MywgNjM3OCwgCi0gICAgNjM4NiwgNjM5MiwgNjM5NywgNjQwMiwgNjQwNywgNjQxMiwgNjQxNywgNjQyMywgNjQyOSwgNjQzNiwgNjQ0MywgNjQ1MiwgCi0gICAgNjQ2MSwgNjQ2OCwgNjQ3NSwgNjQ4NCwgNjQ5MywgNjQ5OCwgNjUwMywgNjUwOCwgNjUxMywgNjUxOCwgNjUyMywgNjUyOCwgCi0gICAgNjUzMywgNjU0NCwgNjU1NSwgNjU2MCwgNjU2NSwgNjU3MiwgNjU3OSwgNjU4NywgNjU5NSwgNjYwMCwgNjYwNSwgNjYxMCwgCi0gICAgNjYxNSwgNjYxOSwgNjYyMywgNjYyNywgNjYzMywgNjYzOSwgNjY0MywgNjY1MCwgNjY1NSwgNjY2NSwgNjY3NSwgNjY4MSwgCi0gICAgNjY4NywgNjY5NSwgNjcwMywgNjcxMSwgNjcxOSwgNjcyNiwgNjczMywgNjc0MSwgNjc0OSwgNjc1NywgNjc2NSwgNjc3MywgCi0gICAgNjc4MSwgNjc4OSwgNjc5NywgNjgwNSwgNjgxMywgNjgyMCwgNjgyNywgNjgzMywgNjgzOSwgNjg0NywgNjg1NSwgNjg2MiwgCi0gICAgNjg2OSwgNjg3NywgNjg4NSwgNjg5MSwgNjg5NywgNjkwNSwgNjkxMywgNjkyMSwgNjkyOSwgNjkzNSwgNjk0MSwgNjk0OSwgCi0gICAgNjk1NywgNjk2NSwgNjk3MywgNjk4MCwgNjk4NywgNjk5NSwgNzAwMywgNzAxMSwgNzAxOSwgNzAyNCwgNzAyOSwgNzAzNiwgCi0gICAgNzA0MywgNzA1MywgNzA2MywgNzA2NywgNzA3NSwgNzA4MywgNzA5MCwgNzA5NywgNzEwNSwgNzExMywgNzEyMCwgNzEyNywgCi0gICAgNzEzNSwgNzE0MywgNzE1MCwgNzE1NywgNzE2NSwgNzE3MywgNzE3OCwgNzE4NSwgNzE5MiwgNzE5OSwgNzIwNiwgNzIxMiwgCi0gICAgNzIxOCwgNzIyNiwgNzIzNCwgNzIzOSwgNzI0NCwgNzI1MiwgNzI2MCwgNzI2OCwgNzI3NiwgNzI4NCwgNzI5MiwgNzI5OSwgCi0gICAgNzMwNiwgNzMxNCwgNzMyMiwgNzMzMCwgNzMzOCwgNzM0NSwgNzM1MiwgNzM1OCwgNzM2NCwgNzM3MywgNzM4MiwgNzM4OSwgCi0gICAgNzM5NiwgNzQwMywgNzQxMCwgNzQxNywgNzQyNCwgNzQzMSwgNzQzOCwgNzQ0NiwgNzQ1NCwgNzQ2MiwgNzQ3MCwgNzQ3OCwgCi0gICAgNzQ4NiwgNzQ5NiwgNzUwNiwgNzUxMywgNzUyMCwgNzUyNywgNzUzNCwgNzU0MSwgNzU0OCwgNzU1NSwgNzU2MiwgNzU2OSwgCi0gICAgNzU3NiwgNzU4MywgNzU5MCwgNzU5NywgNzYwNCwgNzYxMSwgNzYxOCwgNzYyNSwgNzYzMiwgNzYzOSwgNzY0NiwgNzY1MywgCi0gICAgNzY2MCwgNzY2NywgNzY3NCwgNzY3OSwgNzY4NCwgNzY4OSwgNzY5NCwgNzY5OSwgNzcwNCwgNzcwOSwgNzcxNCwgNzcxOSwgCi0gICAgNzcyNCwgNzczMCwgNzczNiwgNzc0NCwgNzc1MiwgNzc2MCwgNzc2OCwgNzc3NiwgNzc4NCwgNzc5MiwgNzgwMCwgNzgwOCwgCi0gICAgNzgxNiwgNzgyMSwgNzgyNiwgNzgzMSwgNzgzNiwgNzg0NCwgMCwgNzg1MiwgNzg1NywgNzg2MiwgNzg2NywgNzg3MiwgCi0gICAgNzg3NywgNzg4MiwgNzg4NywgNzg5MiwgNzg5NiwgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMSwgCi0gICAgNzkzNiwgNzk0MSwgNzk0NiwgNzk1MSwgNzk1NiwgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NiwgNzk5MSwgCi0gICAgNzk5NiwgODAwMSwgODAwNiwgODAxMSwgODAxNiwgODAyMSwgODAyNiwgODAzMSwgODAzNiwgMCwgMCwgODA0MSwgODA0OCwgCi0gICAgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2NiwgMCwgODA3MCwgODA3NSwgODA4MCwgODA4NSwgODA5MCwgODA5NSwgCi0gICAgODEwMCwgODEwNSwgODExMCwgODExNCwgODExOSwgODEyNCwgODEyOSwgODEzNCwgODEzOSwgODE0NCwgODE0OSwgODE1NCwgCi0gICAgODE1OSwgODE2NCwgODE2OSwgODE3NCwgODE3OSwgODE4NCwgODE4OSwgODE5NCwgODE5OSwgODIwNCwgODIwOSwgODIxNCwgCi0gICAgODIxOSwgODIyNCwgODIyOSwgODIzNCwgODIzOSwgODI0NCwgODI0OSwgODI1NCwgODI1OSwgMCwgODI2NiwgODI3MSwgMCwgCi0gICAgMCwgODI3NCwgODI4MCwgODI4NiwgMCwgODI5MCwgODI5NSwgODMwMCwgODMwNSwgODMxMiwgODMxOSwgODMyNCwgODMyOSwgCi0gICAgODMzNCwgODMzOSwgODM0NCwgODM0OSwgODM1NCwgODM2MSwgODM2NiwgODM3MywgODM4MCwgODM4NSwgODM5MiwgODM5NywgCi0gICAgODQwMiwgODQwNywgODQxNCwgODQxOSwgODQyNCwgODQzMSwgODQ0MCwgODQ0NSwgODQ1MCwgODQ1NSwgODQ2MCwgODQ2NiwgCi0gICAgODQ3MSwgODQ3OCwgODQ4NSwgODQ5MiwgODQ5NywgODUwMiwgODUwNywgODUxMiwgODUxNywgODUyMiwgODUzMiwgODUzNywgCi0gICAgODU0NiwgODU1MSwgODU1NiwgODU2MSwgODU2NiwgODU3MywgODU4MCwgODU4NywgODU5MywgODU5OSwgODYwNiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgODYxMywgODYxNywgODYyMSwgODYyNSwgODYyOSwgODYzMywgODYzNywgODY0MSwgODY0NSwgCi0gICAgODY0OSwgODY1MywgODY1OCwgODY2MiwgODY2NiwgODY3MSwgODY3NSwgODY4MCwgODY4NCwgODY4OCwgODY5MiwgODY5NywgCi0gICAgODcwMSwgODcwNiwgODcxMCwgODcxNCwgODcxOCwgODcyMiwgMCwgMCwgMCwgMCwgMCwgODcyNiwgODczMywgODc0MSwgCi0gICAgODc0OCwgODc1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc1OCwgODc2MSwgODc2NSwgODc3MCwgCi0gICAgODc3NCwgODc3OCwgODc4MiwgODc4OCwgODc5NCwgODc5NywgODgwNCwgODgxMywgODgxNiwgODgxOSwgODgyNCwgODgzMCwgCi0gICAgODgzNCwgODg0MiwgODg0OCwgODg1NCwgODg2MiwgODg2NiwgODg3MSwgODg4MiwgODg4NywgODg5MSwgODg5NSwgODg5OSwgCi0gICAgODkwMiwgMCwgODkwNSwgODkxMiwgODkxNiwgODkyMiwgODkyNiwgODkzMywgODk0MCwgODk0OCwgODk1NSwgODk2MiwgCi0gICAgODk2NiwgODk3MCwgODk3NiwgODk4MCwgODk4NCwgODk4OCwgODk5MiwgODk5NiwgOTAwMCwgOTAwNCwgOTAwOCwgOTAxMiwgCi0gICAgOTAxNiwgOTAyMCwgOTAyNCwgOTAyOCwgOTAzMiwgOTAzNiwgOTA0MCwgOTA0NCwgOTA1MiwgOTA2MCwgOTA3MCwgOTA3OSwgCi0gICAgOTA4OCwgOTA5MSwgOTA5NSwgOTA5OSwgOTEwMywgOTEwNywgOTExMSwgOTExNSwgOTExOSwgOTEyMywgOTEyOCwgOTEzMiwgCi0gICAgOTEzNSwgOTEzOCwgOTE0MSwgOTE0NCwgOTE0NywgOTE1MCwgOTE1MywgOTE1NiwgOTE2MCwgOTE2NCwgOTE2OCwgOTE3MywgCi0gICAgOTE3OCwgOTE4NCwgOTE4NywgOTE5NCwgOTIwMywgOTIwOCwgOTIxMywgOTIyMCwgOTIyNiwgOTIzMSwgOTIzNSwgOTIzOSwgCi0gICAgOTI0MywgOTI0NywgOTI1MSwgOTI1NSwgOTI2MCwgOTI2NCwgOTI2OSwgOTI3MywgOTI3OCwgOTI4MywgOTI5MCwgOTI5NiwgCi0gICAgOTMwMiwgOTMwOCwgOTMxMywgOTMyMiwgOTMzMSwgOTMzNiwgOTM0MywgOTM1MCwgOTM1NywgOTM2NCwgOTM2OCwgOTM3MiwgCi0gICAgOTM3NiwgOTM4MywgOTM5MywgOTM5NywgOTQwMSwgOTQwNSwgOTQxMiwgOTQyMCwgOTQyNCwgOTQyOCwgOTQzNSwgOTQzOSwgCi0gICAgOTQ0MywgOTQ0NywgOTQ1NCwgOTQ2MSwgOTQ3MywgOTQ3NywgOTQ4MSwgOTQ4NSwgOTQ5NSwgOTUwNCwgOTUwOCwgOTUxNiwgCi0gICAgOTUyMywgOTUzMCwgOTUzOSwgOTU1MCwgOTU1OCwgOTU2MiwgOTU3MSwgOTU4MiwgOTU5MCwgOTYwMywgOTYxMSwgOTYxOSwgCi0gICAgOTYyNywgOTYzNSwgOTY0MSwgOTY1MCwgOTY1NywgOTY2MSwgOTY2OSwgOTY3MywgOTY4MCwgOTY4OCwgOTY5MiwgOTY5OCwgCi0gICAgOTcwNSwgOTcxMiwgOTcxNiwgOTcyNCwgOTcyOCwgOTczNSwgOTczOSwgOTc0NywgOTc1MSwgOTc1OSwgOTc2NywgOTc3NCwgCi0gICAgOTc4MiwgOTc5MCwgOTc5NywgOTgwMywgOTgwNywgOTgxNCwgOTgyMiwgOTgyOCwgOTgzNSwgOTg0MiwgOTg0OCwgOTg1OCwgCi0gICAgOTg2NiwgOTg3MywgOTg3OSwgOTg4MywgOTg4NiwgOTg5MCwgOTg5NiwgOTkwNCwgOTkwOCwgOTkxNCwgOTkyMCwgOTkyNywgCi0gICAgOTkzNCwgOTkzNywgOTk0NCwgOTk0OSwgOTk1OCwgOTk2MywgOTk2NywgOTk4MCwgOTk5MywgOTk5OSwgMTAwMDYsIDEwMDExLCAKLSAgICAxMDAxNywgMTAwMjIsIDEwMDI4LCAxMDAzOCwgMTAwNDUsIDEwMDU0LCAxMDA2NCwgMTAwNzAsIDEwMDc1LCAxMDA4MCwgCi0gICAgMTAwODQsIDEwMDg4LCAxMDA5MywgMTAwOTgsIDEwMTA0LCAxMDExMiwgMTAxMjAsIDEwMTMxLCAxMDEzNiwgMTAxNDUsIAotICAgIDEwMTU0LCAxMDE2MSwgMTAxNjcsIDEwMTczLCAxMDE3OSwgMTAxODUsIDEwMTkxLCAxMDE5NywgMTAyMDQsIDEwMjEwLCAKLSAgICAxMDIxNywgMTAyMjQsIDEwMjMxLCAxMDIzOCwgMTAyNDQsIDEwMjUyLCAxMDI2MSwgMTAyNjgsIDEwMjc2LCAxMDI4NCwgCi0gICAgMTAyOTAsIDEwMjk2LCAxMDMwMiwgMTAzMTAsIDEwMzE4LCAxMDMyOCwgMTAzMzgsIDEwMzQyLCAxMDM0OCwgMTAzNTQsIDAsIAotICAgIDEwMzYwLCAxMDM2NSwgMTAzNzAsIDEwMzc3LCAxMDM4MiwgMTAzODcsIDEwMzk0LCAxMDM5OSwgMTA0MDgsIDEwNDEzLCAKLSAgICAxMDQxOCwgMTA0MjMsIDEwNDI4LCAxMDQzMywgMTA0NDAsIDEwNDQ1LCAxMDQ1MiwgMTA0NTcsIDEwNDYyLCAxMDQ2NywgCi0gICAgMTA0NzIsIDEwNDc3LCAxMDQ4MywgMTA0ODcsIDEwNDkyLCAxMDQ5OSwgMTA1MDQsIDEwNTA5LCAxMDUxNCwgMTA1MTksIAotICAgIDEwNTI0LCAxMDUzMSwgMTA1MzgsIDEwNTQ1LCAxMDU1MCwgMTA1NTUsIDEwNTYxLCAxMDU2NiwgMTA1NzEsIDEwNTc3LCAKLSAgICAxMDU4MiwgMTA1ODcsIDEwNTk1LCAxMDYwMywgMTA2MDgsIDEwNjEzLCAxMDYxOSwgMTA2MjQsIDEwNjI5LCAxMDYzMywgCi0gICAgMTA2MzksIDEwNjQzLCAxMDY0NywgMTA2NTMsIDEwNjU5LCAxMDY2NCwgMTA2NjksIDEwNjc2LCAxMDY4MywgMTA2ODcsIDAsIAotICAgIDAsIDEwNjkxLCAxMDY5OCwgMTA3MDUsIDEwNzEyLCAxMDcyMiwgMTA3MzQsIDEwNzQ1LCAxMDc2MSwgMTA3NzMsIDEwNzg0LCAKLSAgICAxMDc5MiwgMTA3OTksIDEwODA5LCAxMDgyNCwgMTA4MzUsIDEwODQxLCAxMDg1MCwgMTA4NTgsIDEwODY5LCAxMDg3OSwgCi0gICAgMTA4ODcsIDEwODk4LCAxMDkwNSwgMTA5MTMsIDEwOTI0LCAxMDkzMCwgMTA5MzYsIDEwOTQ0LCAxMDk1MiwgMTA5NjAsIAotICAgIDEwOTY2LCAxMDk3NiwgMTA5ODQsIDEwOTk0LCAxMTAwNCwgMTEwMTcsIDExMDMxLCAxMTA0NSwgMTEwNTUsIDExMDY2LCAKLSAgICAxMTA3NywgMTEwOTAsIDExMTAzLCAxMTExNywgMTExMjksIDExMTQxLCAxMTE1NCwgMTExNjcsIDExMTc5LCAxMTE5MiwgCi0gICAgMTEyMDEsIDExMjA5LCAxMTIxNCwgMTEyMTksIDExMjI0LCAxMTIyOSwgMTEyMzQsIDExMjM5LCAxMTI0NCwgMTEyNDksIAotICAgIDExMjU0LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NCwgMTEyNzksIDExMjg0LCAxMTI4OSwgMTEyOTQsIDExMjk5LCAKLSAgICAxMTMwNCwgMTEzMDksIDExMzE0LCAxMTMxOSwgMTEzMjQsIDExMzI5LCAxMTMzNCwgMTEzMzksIDExMzQ0LCAxMTM0OSwgCi0gICAgMTEzNTQsIDExMzU5LCAxMTM2NCwgMTEzNjksIDExMzczLCAxMTM3OCwgMTEzODMsIDExMzg4LCAxMTM5MywgMTEzOTgsIAotICAgIDExNDAyLCAxMTQwNiwgMTE0MTAsIDExNDE0LCAxMTQxOCwgMTE0MjIsIDExNDI2LCAxMTQzMCwgMTE0MzQsIDExNDM4LCAKLSAgICAxMTQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NDcsIDExNDUyLCAxMTQ1NiwgCi0gICAgMTE0NjAsIDExNDY0LCAxMTQ2OCwgMTE0NzIsIDExNDc2LCAxMTQ4MSwgMTE0ODUsIDExNDkwLCAxMTQ5NCwgMTE0OTksIAotICAgIDExNTAzLCAxMTUwNywgMTE1MTEsIDExNTE2LCAxMTUyMCwgMTE1MjUsIDExNTMwLCAxMTUzNSwgMTE1MzksIDExNTQ0LCAKLSAgICAxMTU0OSwgMTE1NTQsIDExNTU5LCAxMTU2NCwgMTE1NjksIDExNTc0LCAxMTU3OSwgMTE1ODQsIDExNTg4LCAxMTU5MywgCi0gICAgMTE2MDAsIDExNjA0LCAxMTYwOSwgMTE2MTQsIDExNjE4LCAxMTYyMywgMTE2MjcsIDExNjM0LCAxMTY0MSwgMTE2NDgsIAotICAgIDExNjU1LCAxMTY2MywgMTE2NzEsIDExNjgwLCAxMTY4OCwgMTE2OTUsIDExNzAyLCAxMTcxMCwgMTE3MTYsIDExNzIyLCAKLSAgICAxMTcyOCwgMTE3MzQsIDExNzQxLCAxMTc0NiwgMTE3NTAsIDExNzU1LCAwLCAwLCAwLCAwLCAwLCAxMTc1OSwgMTE3NjQsIAotICAgIDExNzY5LCAxMTc3NCwgMTE3NzksIDExNzg0LCAxMTc4OSwgMTE3OTQsIDExNzk5LCAxMTgwNCwgMTE4MDksIDExODE0LCAKLSAgICAxMTgxOSwgMTE4MjQsIDExODI5LCAxMTgzNCwgMTE4MzksIDExODQ0LCAxMTg0OSwgMTE4NTQsIDExODU5LCAxMTg2NCwgCi0gICAgMTE4NjksIDExODc0LCAxMTg3OSwgMTE4ODQsIDExODg5LCAxMTg5NywgMTE5MDQsIDExOTEwLCAxMTkxNSwgMTE5MjMsIAotICAgIDExOTMwLCAxMTkzNiwgMTE5NDMsIDExOTQ5LCAxMTk1NCwgMTE5NjEsIDExOTY4LCAxMTk3NCwgMTE5NzksIDExOTg0LCAKLSAgICAxMTk5MCwgMTE5OTUsIDEyMDAwLCAxMjAwNiwgMCwgMCwgMTIwMTEsIDEyMDE3LCAxMjAyMywgMTIwMjksIDEyMDM1LCAKLSAgICAxMjA0MSwgMTIwNDcsIDEyMDUyLCAxMjA2MCwgMTIwNjYsIDEyMDcyLCAxMjA3OCwgMTIwODQsIDEyMDkwLCAxMjA5OCwgMCwgCi0gICAgMTIxMDQsIDEyMTA5LCAxMjExNCwgMTIxMTksIDEyMTI0LCAxMjEyOSwgMTIxMzQsIDEyMTM5LCAxMjE0NCwgMTIxNDksIAotICAgIDEyMTU0LCAxMjE1OSwgMTIxNjQsIDEyMTY5LCAxMjE3NCwgMTIxNzksIDEyMTg0LCAxMjE4OSwgMTIxOTQsIDEyMTk5LCAKLSAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjQsIDEyMjI5LCAxMjIzNCwgMTIyMzksIDAsIDAsIDEyMjQ0LCAwLCAKKyAgICAxNTAsIDE1NCwgMTU5LCAxNjQsIDE2OCwgMTczLCAxNzgsIDE4MiwgMTg3LCAxOTIsIDE5NywgMjAyLCAyMDcsIDIxMCwgCisgICAgMjE0LCAyMTcsIDIyMSwgMjI0LCAyMjgsIDIzMiwgMjM3LCAyNDIsIDI0NywgMjUxLCAyNTYsIDI2MSwgMjY2LCAyNzAsIAorICAgIDI3NSwgMjgwLCAyODQsIDI4OSwgMjk0LCAyOTgsIDMwMywgMzA4LCAzMTIsIDMxNywgMzIyLCAzMjYsIDMzMSwgMzM2LCAKKyAgICAzNDEsIDM0NiwgMzUxLCAzNTUsIDM1OCwgMzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjQsIDM2OCwgMzczLCAKKyAgICAzNzYsIDM3OSwgMzgyLCAzODUsIDM4OCwgMzkxLCAzOTMsIDM5NiwgNDAyLCA0MTAsIDQxMywgNDE3LCA0MjAsIDQyMiwgCisgICAgNDI1LCA0MjgsIDQzMSwgNDM0LCA0MzgsIDQ0MSwgNDQ0LCA0NDcsIDQ0OSwgNDUyLCA0NTgsIDQ2NiwgNDczLCA0ODAsIAorICAgIDQ4NywgNDkyLCA0OTksIDUwNSwgNTEyLCA1MTksIDUyNiwgNTM0LCA1MzksIDU0NywgNTU0LCA1NjAsIDU2NywgNTc0LCAKKyAgICA1ODIsIDU4OSwgNTk3LCA2MDUsIDYxMCwgNjE4LCA2MjUsIDYzMSwgNjM4LCA2NDUsIDY1MiwgNjU1LCA2NjEsIDY2OCwgCisgICAgNjc0LCA2ODEsIDY4OCwgNjk1LCA3MDAsIDcwNywgNzE0LCA3MjAsIDcyNywgNzM0LCA3NDEsIDc0OSwgNzU0LCA3NjIsIAorICAgIDc2OSwgNzc1LCA3ODIsIDc4OSwgNzk3LCA4MDQsIDgxMiwgODIwLCA4MjUsIDgzMywgODQwLCA4NDYsIDg1MywgODYwLCAKKyAgICA4NjcsIDg3MCwgODc2LCA4ODMsIDg4OSwgODk2LCA5MDMsIDkxMCwgOTE1LCA5MjMsIDkzMCwgOTM3LCA5NDQsIDk1MSwgCisgICAgOTU4LCA5NjUsIDk3MiwgOTc5LCA5ODcsIDk5NSwgMTAwMywgMTAxMSwgMTAxOSwgMTAyNywgMTAzNSwgMTA0MywgMTA1MCwgCisgICAgMTA1NywgMTA2NCwgMTA3MSwgMTA3OCwgMTA4NSwgMTA5MiwgMTA5OSwgMTEwNiwgMTExMywgMTEyMCwgMTEyNywgMTEzNSwgCisgICAgMTE0MywgMTE1MSwgMTE1OSwgMTE2NywgMTE3NSwgMTE4MywgMTE5MSwgMTE5OSwgMTIwNywgMTIxNCwgMTIyMSwgMTIyOSwgCisgICAgMTIzNywgMTI0NSwgMTI1MywgMTI2MSwgMTI2OSwgMTI3NywgMTI4NSwgMTI5MywgMTI5OSwgMTMwNCwgMTMwOSwgMTMxNywgCisgICAgMTMyNSwgMTMzMywgMTM0MSwgMTM0NiwgMTM1MywgMTM2MCwgMTM2OCwgMTM3NiwgMTM4NCwgMTM5MiwgMTQwMSwgMTQxMCwgCisgICAgMTQxNywgMTQyNCwgMTQzMSwgMTQzOCwgMTQ0NiwgMTQ1NCwgMTQ2MiwgMTQ3MCwgMTQ4MSwgMTQ4NiwgMTQ5MSwgMTQ5OCwgCisgICAgMTUwNSwgMTUxMiwgMTUxOSwgMTUyNiwgMTUzMywgMTUzOCwgMTU0MywgMTU1MCwgMTU1NywgMTU2NSwgMTU3MywgMTU4MSwgCisgICAgMTU4OSwgMTU5NiwgMTYwMywgMTYxMSwgMTYxOSwgMTYyNywgMTYzNSwgMTY0MywgMTY1MSwgMTY1OSwgMTY2NywgMTY3NSwgCisgICAgMTY4MywgMTY5MCwgMTY5NywgMTcwNCwgMTcxMSwgMTcxOCwgMTcyNSwgMTczMiwgMTczOSwgMTc0NywgMTc1NSwgMTc2MiwgCisgICAgMTc2OSwgMTc3NiwgMTc4MywgMTc5MSwgMTc5OSwgMTgwNywgMTgxNSwgMTgyMywgMTgzMCwgMTgzNywgMTg0NSwgMTg1MywgCisgICAgMTg2MSwgMTg2OSwgMTg3NSwgMTg4MSwgMTg4NywgMTg5NCwgMTkwMSwgMTkwNiwgMTkxMSwgMTkxNiwgMTkyMywgMTkzMCwgCisgICAgMTkzNywgMTk0NCwgMTk1MiwgMTk2MCwgMTk2NywgMTk3MywgMTk3OCwgMTk4MywgMTk5MCwgMTk5NywgMjAwNCwgMjAwOSwgCisgICAgMjAxNCwgMjAxOSwgMjAyNiwgMjAzMywgMjA0MCwgMjA0NywgMjA1NCwgMjA2MSwgMjA2OSwgMjA3OSwgMjA4NywgMjA5NCwgCisgICAgMjEwMSwgMjEwNiwgMjExMSwgMjExOCwgMjEyNSwgMjEyOSwgMjEzNCwgMjEzOSwgMjE0NCwgMjE1MiwgMjE2MSwgMjE2OCwgCisgICAgMjE3NSwgMjE4NCwgMjE5MSwgMjE5OCwgMjIwMywgMjIxMCwgMjIxNywgMjIyNCwgMjIzMSwgMjIzOCwgMjI0MywgMjI1MCwgCisgICAgMjI1NywgMjI2NSwgMjI3MCwgMjI3NSwgMjI4MCwgMjI5MCwgMjI5NCwgMjMwMCwgMjMwNiwgMjMxMiwgMjMxOCwgMjMyNiwgCisgICAgMjMzOSwgMjM0NywgMjM1MiwgMjM2MiwgMjM2NywgMjM3MiwgMjM4MiwgMjM4NywgMjM5NCwgMjQwMSwgMjQwOSwgMjQxNywgCisgICAgMjQyNCwgMjQzMSwgMjQzOCwgMjQ0NSwgMjQ1NSwgMjQ2NSwgMjQ3NCwgMjQ4MywgMjQ5MywgMjUwMywgMjUxMywgMjUyMywgCisgICAgMjUyOSwgMjUzOSwgMjU0OSwgMjU1OSwgMjU2OSwgMjU3NywgMjU4NSwgMjU5MiwgMjU5OSwgMjYwNywgMjYxNSwgMjYyMywgCisgICAgMjYzMSwgMjYzOCwgMjY0NSwgMjY1NSwgMjY2NSwgMjY3MywgMjY4MSwgMjY4OSwgMjY5NCwgMjcwNCwgMjcwOSwgMjcxNiwgCisgICAgMjcyMywgMjcyOCwgMjczMywgMjc0MSwgMjc0OSwgMjc1OSwgMjc2OSwgMjc3NiwgMjc4MywgMjc5MiwgMjgwMSwgMjgwOSwgCisgICAgMjgxNywgMjgyNiwgMjgzNSwgMjg0MywgMjg1MSwgMjg2MCwgMjg2OSwgMjg3OCwgMjg4NywgMjg5NywgMjkwNywgMjkxNSwgCisgICAgMjkyMywgMjkzMiwgMjk0MSwgMjk1MCwgMjk1OSwgMjk2OSwgMjk3OSwgMjk4NywgMjk5NSwgMzAwNCwgMzAxMywgMzAyMiwgCisgICAgMzAzMSwgMzA0MCwgMzA0OSwgMzA1NCwgMzA1OSwgMzA2NywgMzA3NSwgMzA4NSwgMzA5MywgMzA5OCwgMzEwMywgMzExMCwgCisgICAgMzExNywgMzEyNCwgMzEzMSwgMzEzOCwgMzE0NSwgMzE1NSwgMzE2NSwgMzE3NSwgMzE4NSwgMzE5MiwgMzE5OSwgMzIwOSwgCisgICAgMzIxOSwgMzIyNywgMzIzNSwgMzI0MywgMzI1MSwgMzI1OSwgMzI2NiwgMzI3MywgMzI4MCwgMzI4NiwgMzI5MywgMzMwMCwgCisgICAgMzMwNywgMzMxNiwgMzMyNiwgMzMzNiwgMzM0MywgMzM1MCwgMzM1NiwgMzM2MSwgMzM2OCwgMzM3NCwgMzM4MCwgMzM4NywgCisgICAgMzM5NCwgMzQwNSwgMzQxNSwgMzQyMiwgMzQyOSwgMzQzNiwgMzQ0MywgMzQ0OSwgMzQ1NCwgMzQ2MSwgMzQ2NywgMzQ3MiwgCisgICAgMzQ4MCwgMzQ4OCwgMzQ5NSwgMzUwMSwgMzUwNiwgMzUxMywgMzUxOCwgMzUyNSwgMzUzNCwgMzU0MywgMzU1MiwgMzU1OSwgCisgICAgMzU2NSwgMzU3MSwgMzU3NiwgMzU4MywgMzU5MCwgMzU5NywgMzYwNCwgMzYxMSwgMzYxNiwgMzYyMSwgMzYzMCwgMzYzOCwgCisgICAgMzY0NywgMzY1MiwgMzY1OSwgMzY3MCwgMzY3NywgMzY4NSwgMzY5NCwgMzcwMCwgMzcwNiwgMzcxMiwgMzcxOSwgMzcyNCwgCisgICAgMzczMCwgMzc0MSwgMzc1MCwgMzc1OSwgMzc2NywgMzc3NSwgMzc4NSwgMzc5MCwgMzc5NywgMzgwNCwgMzgwOSwgMzgyMSwgCisgICAgMzgzMCwgMzgzOCwgMzg0NSwgMzg1NCwgMzg1OSwgMzg2NCwgMzg3MSwgMzg3OCwgMzg4NSwgMzg5MiwgMzg5OCwgMzkwNywgCisgICAgMzkxNSwgMzkyMCwgMzkyOCwgMzkzNCwgMzk0MiwgMzk1MCwgMzk1NiwgMzk2MiwgMzk2OCwgMzk3NSwgMzk4MywgMzk4OSwgCisgICAgMzk5NywgNDAwNCwgNDAwOSwgNDAxNiwgNDAyNCwgNDAzNCwgNDA0MSwgNDA0OCwgNDA1OCwgNDA2NSwgNDA3MiwgNDA4MiwgCisgICAgNDA4OSwgNDA5NiwgNDEwMywgNDEwOSwgNDExNSwgNDEyNSwgNDEzOCwgNDE0MywgNDE1MCwgNDE1NSwgNDE1OSwgNDE2NSwgCisgICAgNDE3NCwgNDE4MSwgNDE4NiwgNDE5MSwgNDE5NSwgNDIwMCwgNDIwNiwgNDIxMCwgNDIxNiwgNDIyMiwgNDIyOCwgNDIzNCwgCisgICAgNDI0MiwgNDI0NywgNDI1MiwgNDI1NywgNDI2MiwgNDI2OCwgNDI3MCwgNDI3NSwgNDI3OSwgNDI4NSwgNDI5MSwgNDI5NywgCisgICAgNDMwMiwgNDMwOSwgNDMxNiwgNDMyMiwgNDMyOSwgNDMzNywgNDM0NSwgNDM1MCwgNDM1NSwgNDM1OSwgNDM2NCwgNDM2NiwgCisgICAgNDM2OCwgNDM3MSwgNDM3MywgNDM3NiwgNDM4MSwgNDM4NiwgNDM5MiwgNDM5NywgNDQwMSwgNDQwNiwgNDQxMSwgNDQyMCwgCisgICAgNDQyNiwgNDQzMSwgNDQzNywgNDQ0MiwgNDQ0OCwgNDQ1NiwgNDQ2NCwgNDQ2OCwgNDQ3MiwgNDQ3NywgNDQ4MywgNDQ4OSwgCisgICAgNDQ5NSwgNDUwMSwgNDUwNiwgNDUxMywgNDUyMSwgNDUyOSwgNDUzNCwgNDU0MCwgNDU0NywgNDU1NCwgNDU2MSwgNDU2OCwgCisgICAgNDU3MiwgNDU3NywgNDU4MiwgNDU4NywgNDU5MiwgNDU5NywgNDYwMCwgNDYwMywgNDYwNiwgNDYwOSwgNDYxMiwgNDYxNSwgCisgICAgNDYxOSwgNDYyMywgNDYyOSwgNDYzMiwgNDYzNywgNDY0MywgNDY0OSwgNDY1MiwgNDY1NywgNDY2MywgNDY2NywgNDY3MywgCisgICAgNDY3OSwgNDY4NSwgNDY5MSwgNDY5NiwgNDcwMSwgNDcwNiwgNDcwOSwgNDcxNSwgNDcyMCwgNDcyNSwgNDcyOSwgNDczNCwgCisgICAgNDc0MCwgNDc0NiwgNDc0OSwgNDc1MywgNDc1NywgNDc2MSwgNDc2NCwgNDc2NywgNDc3MiwgNDc3NiwgNDc4MywgNDc4NywgCisgICAgNDc5MywgNDc5NywgNDgwMywgNDgwNywgNDgxMSwgNDgxNSwgNDgyMCwgNDgyNSwgNDgzMiwgNDgzOCwgNDg0NSwgNDg1MSwgCisgICAgNDg1NywgNDg2MywgNDg2NiwgNDg3MCwgNDg3NCwgNDg3OCwgNDg4MiwgNDg4NywgNDg5MiwgNDg5NiwgNDkwMCwgNDkwNiwgCisgICAgNDkxMCwgNDkxNCwgNDkxOSwgNDkyNSwgNDkzMCwgNDkzNiwgNDk0MCwgNDk0NywgNDk1MiwgNDk1NiwgNDk2MSwgNDk2NiwgCisgICAgNDk3MiwgNDk3NSwgNDk3OSwgNDk4NCwgNDk4OSwgNDk5OCwgNTAwNCwgNTAwOSwgNTAxMywgNTAxOCwgNTAyMiwgNTAyNywgCisgICAgNTAzMSwgNTAzNSwgNTA0MCwgNTA0NCwgNTA1MCwgNTA1NSwgNTA2MCwgNTA2NSwgNTA3MCwgNTA3NSwgNTA4MCwgNTA4NiwgCisgICAgNTA5MiwgNTA5OCwgNTEwNCwgNTEwOSwgNTExNSwgNTEyMSwgNTEyNywgNTEzMiwgNTEzNywgNTE0NCwgNTE1MSwgNTE1NSwgCisgICAgNTE2MSwgNTE2OCwgMCwgMCwgNTE3NSwgNTE3OCwgNTE4NywgNTE5NiwgNTIwNywgNTIxMSwgMCwgMCwgMCwgMCwgNTIxNiwgCisgICAgNTIxOSwgNTIyNCwgNTIzMiwgNTIzNywgNTI0NSwgNTI1MywgMCwgNTI2MSwgMCwgNTI2OSwgNTI3NywgNTI4NSwgNTI5NiwgCisgICAgNTMwMSwgNTMwNiwgNTMxMSwgNTMxNiwgNTMyMSwgNTMyNiwgNTMzMSwgNTMzNiwgNTM0MSwgNTM0NiwgNTM1MSwgNTM1NiwgCisgICAgNTM2MSwgNTM2NiwgNTM3MSwgNTM3NiwgMCwgNTM4MSwgNTM4NiwgNTM5MSwgNTM5NiwgNTQwMSwgNTQwNiwgNTQxMSwgCisgICAgNTQxNiwgNTQyNCwgNTQzMiwgNTQ0MCwgNTQ0OCwgNTQ1NiwgNTQ2NCwgNTQ3NSwgNTQ4MCwgNTQ4NSwgNTQ5MCwgNTQ5NSwgCisgICAgNTUwMCwgNTUwNSwgNTUxMCwgNTUxNSwgNTUyMCwgNTUyNSwgNTUzMCwgNTUzNSwgNTU0MCwgNTU0NSwgNTU1MCwgNTU1NSwgCisgICAgNTU2MCwgNTU2NiwgNTU3MSwgNTU3NiwgNTU4MSwgNTU4NiwgNTU5MSwgNTU5NiwgNTYwMSwgNTYwOSwgNTYxNywgNTYyNSwgCisgICAgNTYzMywgNTY0MSwgNTY0NiwgNTY1MCwgNTY1NCwgNTY2MSwgNTY3MSwgNTY4MSwgNTY4NSwgNTY4OSwgNTY5MywgNTY5OSwgCisgICAgNTcwNiwgNTcxMCwgNTcxNSwgNTcxOSwgNTcyNCwgNTcyOCwgNTczMywgNTczNywgNTc0MiwgNTc0NywgNTc1MiwgNTc1NywgCisgICAgNTc2MiwgNTc2NywgNTc3MiwgNTc3NywgNTc4MiwgNTc4NywgNTc5MiwgNTc5NywgNTgwMiwgNTgwNywgNTgxMiwgNTgxNiwgCisgICAgNTgyMCwgNTgyNiwgNTgzMCwgNTgzNSwgNTg0MSwgNTg0OSwgNTg1NCwgNTg1OSwgNTg2NiwgNTg3MSwgNTg3NiwgNTg4MywgCisgICAgNTg5MiwgNTkwMSwgNTkxMiwgNTkyMCwgNTkyNSwgNTkzMCwgNTkzNSwgNTk0MiwgNTk0NywgNTk1MywgNTk1OCwgNTk2MywgCisgICAgNTk2OCwgNTk3MywgNTk3OCwgNTk4MywgNTk5MSwgNTk5NywgNjAwMiwgNjAwNiwgNjAxMSwgNjAxNiwgNjAyMSwgNjAyNiwgCisgICAgNjAzMSwgNjAzNiwgNjA0MSwgNjA0NSwgNjA1MSwgNjA1NSwgNjA2MCwgNjA2NSwgNjA3MCwgNjA3NCwgNjA3OSwgNjA4NCwgCisgICAgNjA4OSwgNjA5NCwgNjA5OCwgNjEwMywgNjEwNywgNjExMiwgNjExNywgNjEyMiwgNjEyNywgNjEzMywgNjEzOCwgNjE0NCwgCisgICAgNjE0OCwgNjE1MywgNjE1NywgNjE2MSwgNjE2NiwgNjE3MSwgNjE3NiwgNjE4MSwgNjE4NiwgNjE5MSwgNjE5NiwgNjIwMCwgCisgICAgNjIwNiwgNjIxMCwgNjIxNSwgNjIyMCwgNjIyNSwgNjIyOSwgNjIzNCwgNjIzOSwgNjI0NCwgNjI0OSwgNjI1MywgNjI1OCwgCisgICAgNjI2MiwgNjI2NywgNjI3MiwgNjI3NywgNjI4MiwgNjI4OCwgNjI5MywgNjI5OSwgNjMwMywgNjMwOCwgNjMxMiwgNjMyMCwgCisgICAgNjMyNSwgNjMzMCwgNjMzNSwgNjM0MiwgNjM0NywgNjM1MywgNjM1OCwgNjM2MywgNjM2OCwgNjM3MywgNjM3OCwgNjM4MywgCisgICAgNjM5MSwgNjM5NywgNjQwMiwgNjQwNywgNjQxMiwgNjQxNywgNjQyMiwgNjQyOCwgNjQzNCwgNjQ0MSwgNjQ0OCwgNjQ1NywgCisgICAgNjQ2NiwgNjQ3MywgNjQ4MCwgNjQ4OSwgNjQ5OCwgNjUwMywgNjUwOCwgNjUxMywgNjUxOCwgNjUyMywgNjUyOCwgNjUzMywgCisgICAgNjUzOCwgNjU0OSwgNjU2MCwgNjU2NSwgNjU3MCwgNjU3NywgNjU4NCwgNjU5MiwgNjYwMCwgNjYwNSwgNjYxMCwgNjYxNSwgCisgICAgNjYyMCwgNjYyNCwgNjYyOCwgNjYzMiwgNjYzOCwgNjY0NCwgNjY0OCwgNjY1NSwgNjY2MCwgNjY3MCwgNjY4MCwgNjY4NiwgCisgICAgNjY5MiwgNjcwMCwgNjcwOCwgNjcxNiwgNjcyNCwgNjczMSwgNjczOCwgNjc0NiwgNjc1NCwgNjc2MiwgNjc3MCwgNjc3OCwgCisgICAgNjc4NiwgNjc5NCwgNjgwMiwgNjgxMCwgNjgxOCwgNjgyNSwgNjgzMiwgNjgzOCwgNjg0NCwgNjg1MiwgNjg2MCwgNjg2NywgCisgICAgNjg3NCwgNjg4MiwgNjg5MCwgNjg5NiwgNjkwMiwgNjkxMCwgNjkxOCwgNjkyNiwgNjkzNCwgNjk0MCwgNjk0NiwgNjk1NCwgCisgICAgNjk2MiwgNjk3MCwgNjk3OCwgNjk4NSwgNjk5MiwgNzAwMCwgNzAwOCwgNzAxNiwgNzAyNCwgNzAyOSwgNzAzNCwgNzA0MSwgCisgICAgNzA0OCwgNzA1OCwgNzA2OCwgNzA3MiwgNzA4MCwgNzA4OCwgNzA5NSwgNzEwMiwgNzExMCwgNzExOCwgNzEyNSwgNzEzMiwgCisgICAgNzE0MCwgNzE0OCwgNzE1NSwgNzE2MiwgNzE3MCwgNzE3OCwgNzE4MywgNzE5MCwgNzE5NywgNzIwNCwgNzIxMSwgNzIxNywgCisgICAgNzIyMywgNzIzMSwgNzIzOSwgNzI0NCwgNzI0OSwgNzI1NywgNzI2NSwgNzI3MywgNzI4MSwgNzI4OSwgNzI5NywgNzMwNCwgCisgICAgNzMxMSwgNzMxOSwgNzMyNywgNzMzNSwgNzM0MywgNzM1MCwgNzM1NywgNzM2MywgNzM2OSwgNzM3OCwgNzM4NywgNzM5NCwgCisgICAgNzQwMSwgNzQwOCwgNzQxNSwgNzQyMiwgNzQyOSwgNzQzNiwgNzQ0MywgNzQ1MSwgNzQ1OSwgNzQ2NywgNzQ3NSwgNzQ4MywgCisgICAgNzQ5MSwgNzUwMSwgNzUxMSwgNzUxOCwgNzUyNSwgNzUzMiwgNzUzOSwgNzU0NiwgNzU1MywgNzU2MCwgNzU2NywgNzU3NCwgCisgICAgNzU4MSwgNzU4OCwgNzU5NSwgNzYwMiwgNzYwOSwgNzYxNiwgNzYyMywgNzYzMCwgNzYzNywgNzY0NCwgNzY1MSwgNzY1OCwgCisgICAgNzY2NSwgNzY3MiwgNzY3OSwgNzY4NCwgNzY4OSwgNzY5NCwgNzY5OSwgNzcwNCwgNzcwOSwgNzcxNCwgNzcxOSwgNzcyNCwgCisgICAgNzcyOSwgNzczNSwgNzc0MSwgNzc0OSwgNzc1NywgNzc2NSwgNzc3MywgNzc4MSwgNzc4OSwgNzc5NywgNzgwNSwgNzgxMywgCisgICAgNzgyMSwgNzgyNiwgNzgzMSwgNzgzNiwgNzg0MSwgNzg0OSwgMCwgNzg1NywgNzg2MiwgNzg2NywgNzg3MiwgNzg3NywgCisgICAgNzg4MiwgNzg4NywgNzg5MiwgNzg5NywgNzkwMSwgNzkwNiwgNzkxMSwgNzkxNiwgNzkyMSwgNzkyNiwgNzkzMSwgNzkzNiwgCisgICAgNzk0MSwgNzk0NiwgNzk1MSwgNzk1NiwgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NiwgNzk5MSwgNzk5NiwgCisgICAgODAwMSwgODAwNiwgODAxMSwgODAxNiwgODAyMSwgODAyNiwgODAzMSwgODAzNiwgODA0MSwgMCwgMCwgODA0NiwgODA1MywgCisgICAgODA1NiwgODA2MCwgODA2NCwgODA2NywgODA3MSwgMCwgODA3NSwgODA4MCwgODA4NSwgODA5MCwgODA5NSwgODEwMCwgCisgICAgODEwNSwgODExMCwgODExNSwgODExOSwgODEyNCwgODEyOSwgODEzNCwgODEzOSwgODE0NCwgODE0OSwgODE1NCwgODE1OSwgCisgICAgODE2NCwgODE2OSwgODE3NCwgODE3OSwgODE4NCwgODE4OSwgODE5NCwgODE5OSwgODIwNCwgODIwOSwgODIxNCwgODIxOSwgCisgICAgODIyNCwgODIyOSwgODIzNCwgODIzOSwgODI0NCwgODI0OSwgODI1NCwgODI1OSwgODI2NCwgMCwgODI3MSwgODI3NiwgMCwgCisgICAgMCwgODI3OSwgODI4NSwgODI5MSwgMCwgODI5NSwgODMwMCwgODMwNSwgODMxMCwgODMxNywgODMyNCwgODMyOSwgODMzNCwgCisgICAgODMzOSwgODM0NCwgODM0OSwgODM1NCwgODM1OSwgODM2NiwgODM3MSwgODM3OCwgODM4NSwgODM5MCwgODM5NywgODQwMiwgCisgICAgODQwNywgODQxMiwgODQxOSwgODQyNCwgODQyOSwgODQzNiwgODQ0NSwgODQ1MCwgODQ1NSwgODQ2MCwgODQ2NSwgODQ3MSwgCisgICAgODQ3NiwgODQ4MywgODQ5MCwgODQ5NywgODUwMiwgODUwNywgODUxMiwgODUxNywgODUyMiwgODUyNywgODUzNywgODU0MiwgCisgICAgODU1MSwgODU1NiwgODU2MSwgODU2NiwgODU3MSwgODU3OCwgODU4NSwgODU5MiwgODU5OCwgODYwNCwgODYxMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgODYxOCwgODYyMiwgODYyNiwgODYzMCwgODYzNCwgODYzOCwgODY0MiwgODY0NiwgODY1MCwgCisgICAgODY1NCwgODY1OCwgODY2MywgODY2NywgODY3MSwgODY3NiwgODY4MCwgODY4NSwgODY4OSwgODY5MywgODY5NywgODcwMiwgCisgICAgODcwNiwgODcxMSwgODcxNSwgODcxOSwgODcyMywgODcyNywgMCwgMCwgMCwgMCwgMCwgODczMSwgODczOCwgODc0NiwgCisgICAgODc1MywgODc1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc2MywgODc2NiwgODc3MCwgODc3NSwgCisgICAgODc3OSwgODc4MywgODc4NywgODc5MywgODc5OSwgODgwMiwgODgwOSwgODgxOCwgODgyMSwgODgyNCwgODgyOSwgODgzNSwgCisgICAgODgzOSwgODg0NywgODg1MywgODg1OSwgODg2NywgODg3MSwgODg3NiwgODg4NywgODg5MiwgODg5NiwgODkwMCwgODkwNCwgCisgICAgODkwNywgMCwgODkxMCwgODkxNywgODkyMSwgODkyNywgODkzMSwgODkzOCwgODk0NSwgODk1MywgODk2MCwgODk2NywgCisgICAgODk3MSwgODk3NSwgODk4MSwgODk4NSwgODk4OSwgODk5MywgODk5NywgOTAwMSwgOTAwNSwgOTAwOSwgOTAxMywgOTAxNywgCisgICAgOTAyMSwgOTAyNSwgOTAyOSwgOTAzMywgOTAzNywgOTA0MSwgOTA0NSwgOTA0OSwgOTA1NywgOTA2NSwgOTA3NSwgOTA4NCwgCisgICAgOTA5MywgOTA5NiwgOTEwMCwgOTEwNCwgOTEwOCwgOTExMiwgOTExNiwgOTEyMCwgOTEyNCwgOTEyOCwgOTEzMywgOTEzNywgCisgICAgOTE0MCwgOTE0MywgOTE0NiwgOTE0OSwgOTE1MiwgOTE1NSwgOTE1OCwgOTE2MSwgOTE2NSwgOTE2OSwgOTE3MywgOTE3OCwgCisgICAgOTE4MywgOTE4OSwgOTE5MiwgOTE5OSwgOTIwOCwgOTIxMywgOTIxOCwgOTIyNSwgOTIzMSwgOTIzNiwgOTI0MCwgOTI0NCwgCisgICAgOTI0OCwgOTI1MiwgOTI1NiwgOTI2MCwgOTI2NSwgOTI2OSwgOTI3NCwgOTI3OCwgOTI4MywgOTI4OCwgOTI5NSwgOTMwMSwgCisgICAgOTMwNywgOTMxMywgOTMxOCwgOTMyNywgOTMzNiwgOTM0MSwgOTM0OCwgOTM1NSwgOTM2MiwgOTM2OSwgOTM3MywgOTM3NywgCisgICAgOTM4MSwgOTM4OCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgOTQxNywgOTQyNSwgOTQyOSwgOTQzMywgOTQ0MCwgOTQ0NCwgCisgICAgOTQ0OCwgOTQ1MiwgOTQ1OSwgOTQ2NiwgOTQ3OCwgOTQ4MiwgOTQ4NiwgOTQ5MCwgOTUwMCwgOTUwOSwgOTUxMywgOTUyMSwgCisgICAgOTUyOCwgOTUzNSwgOTU0NCwgOTU1NSwgOTU2MywgOTU2NywgOTU3NiwgOTU4NywgOTU5NSwgOTYwOCwgOTYxNiwgOTYyNCwgCisgICAgOTYzMiwgOTY0MCwgOTY0NiwgOTY1NSwgOTY2MiwgOTY2NiwgOTY3NCwgOTY3OCwgOTY4NSwgOTY5MywgOTY5NywgOTcwMywgCisgICAgOTcxMCwgOTcxNywgOTcyMSwgOTcyOSwgOTczMywgOTc0MCwgOTc0NCwgOTc1MiwgOTc1NiwgOTc2NCwgOTc3MiwgOTc3OSwgCisgICAgOTc4NywgOTc5NSwgOTgwMiwgOTgwOCwgOTgxMiwgOTgxOSwgOTgyNywgOTgzMywgOTg0MCwgOTg0NywgOTg1MywgOTg2MywgCisgICAgOTg3MSwgOTg3OCwgOTg4NCwgOTg4OCwgOTg5MSwgOTg5NSwgOTkwMSwgOTkwOSwgOTkxMywgOTkxOSwgOTkyNSwgOTkzMiwgCisgICAgOTkzOSwgOTk0MiwgOTk0OSwgOTk1NCwgOTk2MywgOTk2OCwgOTk3MiwgOTk4NSwgOTk5OCwgMTAwMDQsIDEwMDExLCAKKyAgICAxMDAxNiwgMTAwMjIsIDEwMDI3LCAxMDAzMywgMTAwNDMsIDEwMDUwLCAxMDA1OSwgMTAwNjksIDEwMDc1LCAxMDA4MCwgCisgICAgMTAwODUsIDEwMDg5LCAxMDA5MywgMTAwOTgsIDEwMTAzLCAxMDEwOSwgMTAxMTcsIDEwMTI1LCAxMDEzNiwgMTAxNDEsIAorICAgIDEwMTUwLCAxMDE1OSwgMTAxNjYsIDEwMTcyLCAxMDE3OCwgMTAxODQsIDEwMTkwLCAxMDE5NiwgMTAyMDIsIDEwMjA5LCAKKyAgICAxMDIxNSwgMTAyMjIsIDEwMjI5LCAxMDIzNiwgMTAyNDMsIDEwMjQ5LCAxMDI1NywgMTAyNjYsIDEwMjczLCAxMDI4MSwgCisgICAgMTAyODksIDEwMjk1LCAxMDMwMSwgMTAzMDcsIDEwMzE1LCAxMDMyMywgMTAzMzMsIDEwMzQzLCAxMDM0NywgMTAzNTMsIAorICAgIDEwMzU5LCAwLCAxMDM2NSwgMTAzNzAsIDEwMzc1LCAxMDM4MiwgMTAzODcsIDEwMzkyLCAxMDM5OSwgMTA0MDQsIDEwNDEzLCAKKyAgICAxMDQxOCwgMTA0MjMsIDEwNDI4LCAxMDQzMywgMTA0MzgsIDEwNDQ1LCAxMDQ1MCwgMTA0NTcsIDEwNDYyLCAxMDQ2NywgCisgICAgMTA0NzIsIDEwNDc3LCAxMDQ4MiwgMTA0ODgsIDEwNDkyLCAxMDQ5NywgMTA1MDQsIDEwNTA5LCAxMDUxNCwgMTA1MTksIAorICAgIDEwNTI0LCAxMDUyOSwgMTA1MzYsIDEwNTQzLCAxMDU1MCwgMTA1NTUsIDEwNTYwLCAxMDU2NiwgMTA1NzEsIDEwNTc2LCAKKyAgICAxMDU4MiwgMTA1ODcsIDEwNTkyLCAxMDYwMCwgMTA2MDgsIDEwNjEzLCAxMDYxOCwgMTA2MjQsIDEwNjI5LCAxMDYzNCwgCisgICAgMTA2MzgsIDEwNjQ0LCAxMDY0OCwgMTA2NTIsIDEwNjU4LCAxMDY2NCwgMTA2NjksIDEwNjc0LCAxMDY4MSwgMTA2ODgsIAorICAgIDEwNjkyLCAwLCAwLCAxMDY5NiwgMTA3MDMsIDEwNzEwLCAxMDcxNywgMTA3MjcsIDEwNzM5LCAxMDc1MCwgMTA3NjYsIAorICAgIDEwNzc4LCAxMDc4OSwgMTA3OTcsIDEwODA0LCAxMDgxNCwgMTA4MjksIDEwODQwLCAxMDg0NiwgMTA4NTUsIDEwODYzLCAKKyAgICAxMDg3NCwgMTA4ODQsIDEwODkyLCAxMDkwMywgMTA5MTAsIDEwOTE4LCAxMDkyOSwgMTA5MzUsIDEwOTQxLCAxMDk0OSwgCisgICAgMTA5NTcsIDEwOTY1LCAxMDk3MSwgMTA5ODEsIDEwOTg5LCAxMDk5OSwgMTEwMDksIDExMDIyLCAxMTAzNiwgMTEwNTAsIAorICAgIDExMDYwLCAxMTA3MSwgMTEwODIsIDExMDk1LCAxMTEwOCwgMTExMjIsIDExMTM0LCAxMTE0NiwgMTExNTksIDExMTcyLCAKKyAgICAxMTE4NCwgMTExOTcsIDExMjA2LCAxMTIxNCwgMTEyMTksIDExMjI0LCAxMTIyOSwgMTEyMzQsIDExMjM5LCAxMTI0NCwgCisgICAgMTEyNDksIDExMjU0LCAxMTI1OSwgMTEyNjQsIDExMjY5LCAxMTI3NCwgMTEyNzksIDExMjg0LCAxMTI4OSwgMTEyOTQsIAorICAgIDExMjk5LCAxMTMwNCwgMTEzMDksIDExMzE0LCAxMTMxOSwgMTEzMjQsIDExMzI5LCAxMTMzNCwgMTEzMzksIDExMzQ0LCAKKyAgICAxMTM0OSwgMTEzNTQsIDExMzU5LCAxMTM2NCwgMTEzNjksIDExMzc0LCAxMTM3OCwgMTEzODMsIDExMzg4LCAxMTM5MywgCisgICAgMTEzOTgsIDExNDAzLCAxMTQwNywgMTE0MTEsIDExNDE1LCAxMTQxOSwgMTE0MjMsIDExNDI3LCAxMTQzMSwgMTE0MzUsIAorICAgIDExNDM5LCAxMTQ0MywgMTE0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDUyLCAKKyAgICAxMTQ1NywgMTE0NjEsIDExNDY1LCAxMTQ2OSwgMTE0NzMsIDExNDc3LCAxMTQ4MSwgMTE0ODYsIDExNDkwLCAxMTQ5NSwgCisgICAgMTE0OTksIDExNTA0LCAxMTUwOCwgMTE1MTIsIDExNTE2LCAxMTUyMSwgMTE1MjUsIDExNTMwLCAxMTUzNSwgMTE1NDAsIAorICAgIDExNTQ0LCAxMTU0OSwgMTE1NTQsIDExNTU5LCAxMTU2NCwgMTE1NjksIDExNTc0LCAxMTU3OSwgMTE1ODQsIDExNTg5LCAKKyAgICAxMTU5MywgMTE1OTcsIDExNjA0LCAxMTYwOCwgMTE2MTMsIDExNjE3LCAxMTYyMSwgMTE2MjYsIDExNjMwLCAxMTYzNywgCisgICAgMTE2NDQsIDExNjUxLCAxMTY1OCwgMTE2NjYsIDExNjc0LCAxMTY4MywgMTE2OTEsIDExNjk4LCAxMTcwNSwgMTE3MTMsIAorICAgIDExNzE5LCAxMTcyNSwgMTE3MzEsIDExNzM3LCAxMTc0NCwgMTE3NDksIDExNzUzLCAxMTc1OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTE3NjIsIDExNzY3LCAxMTc3MiwgMTE3NzcsIDExNzgyLCAxMTc4NywgMTE3OTIsIDExNzk3LCAxMTgwMiwgMTE4MDcsIAorICAgIDExODEyLCAxMTgxNywgMTE4MjIsIDExODI3LCAxMTgzMiwgMTE4MzcsIDExODQyLCAxMTg0NywgMTE4NTIsIDExODU3LCAKKyAgICAxMTg2MiwgMTE4NjcsIDExODcyLCAxMTg3NywgMTE4ODIsIDExODg3LCAxMTg5MiwgMTE5MDAsIDExOTA3LCAxMTkxMywgCisgICAgMTE5MTgsIDExOTI2LCAxMTkzMywgMTE5MzksIDExOTQ2LCAxMTk1MiwgMTE5NTcsIDExOTY0LCAxMTk3MSwgMTE5NzcsIAorICAgIDExOTgyLCAxMTk4NywgMTE5OTMsIDExOTk4LCAxMjAwMywgMTIwMDksIDAsIDAsIDEyMDE0LCAxMjAyMCwgMTIwMjYsIAorICAgIDEyMDMyLCAxMjAzOCwgMTIwNDQsIDEyMDUwLCAxMjA1NSwgMTIwNjMsIDEyMDY5LCAxMjA3NSwgMTIwODEsIDEyMDg3LCAKKyAgICAxMjA5MywgMTIxMDEsIDAsIDEyMTA3LCAxMjExMiwgMTIxMTcsIDEyMTIyLCAxMjEyNywgMTIxMzIsIDEyMTM3LCAxMjE0MiwgCisgICAgMTIxNDcsIDEyMTUyLCAxMjE1NywgMTIxNjIsIDEyMTY3LCAxMjE3MiwgMTIxNzcsIDEyMTgyLCAxMjE4NywgMTIxOTIsIAorICAgIDEyMTk3LCAxMjIwMiwgMTIyMDcsIDEyMjEyLCAxMjIxNywgMTIyMjIsIDEyMjI3LCAxMjIzMiwgMTIyMzcsIDEyMjQyLCAwLCAKKyAgICAwLCAxMjI0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNTEsIDEyMjYwLCAKKyAgICAxMjI2OCwgMTIyNzUsIDEyMjgzLCAxMjI5NSwgMTIzMDIsIDEyMzA5LCAxMjMxNiwgMTIzMjgsIDEyMzM5LCAxMjM0NiwgCisgICAgMTIzNTQsIDEyMzYwLCAxMjM2NSwgMTIzNzMsIDEyMzgxLCAxMjM4OSwgMTIzOTUsIDEyNDA1LCAxMjQxMywgMCwgMTI0MjAsIAorICAgIDEyNDI4LCAxMjQzNiwgMTI0NDUsIDEyNDU0LCAxMjQ2NywgMTI0NzMsIDEyNDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ4NSwgMTI0OTIsIDEyNDk3LCAxMjUwMiwgCisgICAgMTI1MDcsIDEyNTE1LCAxMjUyMywgMTI1MzAsIDEyNTM3LCAxMjU0NCwgMTI1NTEsIDEyNTU4LCAxMjU2NSwgMTI1NzIsIAorICAgIDEyNTc4LCAxMjU4NiwgMTI1OTIsIDEyNTk3LCAxMjYwMiwgMTI2MDcsIDEyNjEyLCAxMjYxNywgMTI2MjIsIDEyNjI3LCAKKyAgICAxMjYzMiwgMTI2MzcsIDEyNjQyLCAxMjY0NywgMTI2NTIsIDEyNjU2LCAxMjY2MCwgMTI2NjQsIDEyNjY5LCAxMjY3NSwgCisgICAgMTI2ODEsIDEyNjg3LCAxMjY5MiwgMTI2OTcsIDEyNzAyLCAxMjcwNywgMTI3MTMsIDEyNzIyLCAxMjczMCwgMTI3MzYsIAorICAgIDEyNzQ0LCAxMjc1MCwgMTI3NTQsIDEyNzU4LCAxMjc2MiwgMTI3NjcsIDEyNzcwLCAxMjc3NCwgMTI3NzcsIDEyNzgxLCAKKyAgICAxMjc4NCwgMTI3ODgsIDEyNzkyLCAxMjc5NiwgMTI4MDEsIDEyODA2LCAxMjgwOSwgMTI4MTMsIDEyODE4LCAxMjgyMywgCisgICAgMTI4MjYsIDEyODMwLCAxMjgzMywgMTI4MzcsIDEyODQxLCAxMjg0NSwgMTI4NDksIDEyODUzLCAxMjg1NywgMTI4NjEsIAorICAgIDEyODY1LCAxMjg2OSwgMTI4NzMsIDEyODc3LCAxMjg4MSwgMTI4ODUsIDEyODg5LCAxMjg5MywgMTI4OTcsIDEyOTAxLCAKKyAgICAxMjkwNSwgMTI5MDgsIDEyOTEyLCAxMjkxNSwgMTI5MTksIDEyOTIzLCAxMjkyNywgMTI5MzAsIDEyOTMzLCAxMjkzNywgCisgICAgMTI5NDEsIDEyOTQ0LCAxMjk0OCwgMTI5NTIsIDEyOTU2LCAxMjk2MCwgMTI5NjQsIDEyOTY4LCAxMjk3MSwgMTI5NzYsIAorICAgIDEyOTgxLCAxMjk4NSwgMTI5ODksIDEyOTk0LCAxMjk5OCwgMTMwMDMsIDEzMDA3LCAxMzAxMiwgMTMwMTcsIDEzMDIzLCAKKyAgICAxMzAyOSwgMTMwMzUsIDEzMDM5LCAxMzA0NCwgMTMwNTAsIDEzMDU2LCAxMzA2MCwgMTMwNjUsIDEzMDY5LCAxMzA3NSwgCisgICAgMTMwODAsIDEzMDgzLCAxMzA4OSwgMTMwOTUsIDEzMTAwLCAxMzEwNSwgMTMxMTIsIDEzMTE3LCAxMzEyMiwgMTMxMjYsIAorICAgIDEzMTMwLCAxMzEzNCwgMTMxMzgsIDEzMTQyLCAxMzE0NiwgMTMxNTAsIDEzMTU0LCAxMzE1OSwgMTMxNjQsIDEzMTY5LCAKKyAgICAxMzE3NSwgMTMxNzgsIDEzMTgyLCAxMzE4NiwgMTMxODksIDEzMTkyLCAxMzE5NSwgMTMxOTgsIDEzMjAxLCAxMzIwNCwgCisgICAgMTMyMDgsIDEzMjExLCAxMzIxNSwgMTMyMTksIDEzMjI2LCAxMzIzMSwgMTMyMzUsIDEzMjM5LCAxMzI0MywgMTMyNDcsIAorICAgIDEzMjUxLCAxMzI1NywgMTMyNjEsIDEzMjY1LCAxMzI2OSwgMTMyNzMsIDEzMjc5LCAxMzI4MywgMTMyODcsIDEzMjkwLCAKKyAgICAxMzI5NCwgMTMyOTgsIDAsIDEzMzAyLCAxMzMwNSwgMTMzMDksIDEzMzEyLCAxMzMxNiwgMTMzMTksIDEzMzIzLCAxMzMyNywgCisgICAgMCwgMCwgMTMzMzEsIDEzMzM0LCAwLCAwLCAxMzMzOCwgMTMzNDEsIDEzMzQ1LCAxMzM0OCwgMTMzNTIsIDEzMzU2LCAKKyAgICAxMzM2MCwgMTMzNjQsIDEzMzY4LCAxMzM3MiwgMTMzNzYsIDEzMzgwLCAxMzM4NCwgMTMzODgsIDEzMzkyLCAxMzM5NiwgCisgICAgMTM0MDAsIDEzNDA0LCAxMzQwOCwgMTM0MTIsIDEzNDE2LCAxMzQyMCwgMCwgMTM0MjMsIDEzNDI2LCAxMzQzMCwgMTM0MzQsIAorICAgIDEzNDM4LCAxMzQ0MSwgMTM0NDQsIDAsIDEzNDQ4LCAwLCAwLCAwLCAxMzQ1MSwgMTM0NTUsIDEzNDU5LCAxMzQ2MywgMCwgMCwgCisgICAgMTM0NjYsIDEzNDcwLCAxMzQ3NCwgMTM0NzksIDEzNDgzLCAxMzQ4OCwgMTM0OTIsIDEzNDk3LCAxMzUwMiwgMCwgMCwgCisgICAgMTM1MDgsIDEzNTEyLCAwLCAwLCAxMzUxNywgMTM1MjEsIDEzNTI2LCAxMzUzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM1MzYsIDAsIDAsIDAsIDAsIDEzNTQyLCAxMzU0NiwgMCwgMTM1NTAsIDEzNTU0LCAxMzU1OSwgMTM1NjQsIDEzNTY5LCAwLCAKKyAgICAwLCAxMzU3NSwgMTM1NzksIDEzNTgyLCAxMzU4NSwgMTM1ODgsIDEzNTkxLCAxMzU5NCwgMTM1OTcsIDEzNjAxLCAxMzYwNCwgCisgICAgMTM2MDgsIDEzNjE2LCAxMzYyNSwgMTM2MjksIDEzNjMzLCAxMzYzOSwgMTM2NDUsIDEzNjUxLCAxMzY1NywgMTM2NzEsIAorICAgIDEzNjc4LCAxMzY4MSwgMCwgMCwgMCwgMCwgMCwgMTM2ODUsIDEzNjkyLCAxMzY5NywgMCwgMTM3MDIsIDEzNzA2LCAxMzcxMSwgCisgICAgMTM3MTUsIDEzNzIwLCAxMzcyNCwgMCwgMCwgMCwgMCwgMTM3MjksIDEzNzM0LCAwLCAwLCAxMzczOSwgMTM3NDQsIDEzNzQ5LCAKKyAgICAxMzc1MywgMTM3NTgsIDEzNzYzLCAxMzc2OCwgMTM3NzMsIDEzNzc4LCAxMzc4MywgMTM3ODgsIDEzNzkzLCAxMzc5OCwgCisgICAgMTM4MDMsIDEzODA4LCAxMzgxMywgMTM4MTgsIDEzODIzLCAxMzgyOCwgMTM4MzMsIDEzODM4LCAxMzg0MywgMCwgMTM4NDcsIAorICAgIDEzODUxLCAxMzg1NiwgMTM4NjEsIDEzODY2LCAxMzg3MCwgMTM4NzQsIDAsIDEzODc5LCAxMzg4MywgMCwgMTM4ODgsIAorICAgIDEzODkzLCAwLCAxMzg5OCwgMTM5MDMsIDAsIDAsIDEzOTA3LCAwLCAxMzkxMiwgMTM5MTgsIDEzOTIzLCAxMzkyOSwgCisgICAgMTM5MzQsIDAsIDAsIDAsIDAsIDEzOTQwLCAxMzk0NiwgMCwgMCwgMTM5NTIsIDEzOTU4LCAxMzk2NCwgMCwgMCwgMCwgCisgICAgMTM5NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOTc0LCAxMzk3OSwgMTM5ODQsIDEzOTg5LCAwLCAxMzk5NCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM5OTksIDE0MDA0LCAxNDAwOCwgMTQwMTIsIDE0MDE2LCAxNDAyMCwgMTQwMjQsIDE0MDI4LCAKKyAgICAxNDAzMywgMTQwMzcsIDE0MDQyLCAxNDA0NiwgMTQwNTAsIDE0MDU0LCAxNDA1OCwgMTQwNjQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE0MDY5LCAxNDA3NCwgMTQwNzksIDAsIDE0MDg0LCAxNDA4OCwgMTQwOTMsIDE0MDk3LCAxNDEwMiwgCisgICAgMTQxMDYsIDE0MTExLCAxNDExNiwgMTQxMjEsIDAsIDE0MTI3LCAxNDEzMSwgMTQxMzYsIDAsIDE0MTQyLCAxNDE0NiwgCisgICAgMTQxNTEsIDE0MTU1LCAxNDE2MCwgMTQxNjUsIDE0MTcwLCAxNDE3NSwgMTQxODAsIDE0MTg1LCAxNDE5MCwgMTQxOTUsIAorICAgIDE0MjAwLCAxNDIwNSwgMTQyMTAsIDE0MjE1LCAxNDIyMCwgMTQyMjUsIDE0MjMwLCAxNDIzNSwgMTQyNDAsIDE0MjQ1LCAwLCAKKyAgICAxNDI0OSwgMTQyNTMsIDE0MjU4LCAxNDI2MywgMTQyNjgsIDE0MjcyLCAxNDI3NiwgMCwgMTQyODEsIDE0Mjg1LCAwLCAKKyAgICAxNDI5MCwgMTQyOTUsIDE0MzAwLCAxNDMwNSwgMTQzMTAsIDAsIDAsIDE0MzE0LCAxNDMxOSwgMTQzMjQsIDE0MzMwLCAKKyAgICAxNDMzNSwgMTQzNDEsIDE0MzQ2LCAxNDM1MiwgMTQzNTgsIDE0MzY1LCAwLCAxNDM3MiwgMTQzNzcsIDE0MzgzLCAwLCAKKyAgICAxNDM5MCwgMTQzOTUsIDE0NDAxLCAwLCAwLCAxNDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTQ0MTAsIDE0NDE2LCAxNDQyMiwgMTQ0MjgsIDAsIDAsIDE0NDM1LCAxNDQ0MCwgMTQ0NDQsIDE0NDQ4LCAKKyAgICAxNDQ1MiwgMTQ0NTYsIDE0NDYwLCAxNDQ2NCwgMTQ0NjksIDE0NDczLCAxNDQ3OCwgMTQ0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE0NDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQ5MywgMTQ0OTgsIDE0NTAzLCAwLCAxNDUwOCwgMTQ1MTIsIAorICAgIDE0NTE3LCAxNDUyMSwgMTQ1MjYsIDE0NTMwLCAxNDUzNSwgMTQ1NDAsIDAsIDAsIDE0NTQ1LCAxNDU0OSwgMCwgMCwgCisgICAgMTQ1NTQsIDE0NTU4LCAxNDU2MywgMTQ1NjcsIDE0NTcyLCAxNDU3NywgMTQ1ODIsIDE0NTg3LCAxNDU5MiwgMTQ1OTcsIAorICAgIDE0NjAyLCAxNDYwNywgMTQ2MTIsIDE0NjE3LCAxNDYyMiwgMTQ2MjcsIDE0NjMyLCAxNDYzNywgMTQ2NDIsIDE0NjQ3LCAKKyAgICAxNDY1MiwgMTQ2NTcsIDAsIDE0NjYxLCAxNDY2NSwgMTQ2NzAsIDE0Njc1LCAxNDY4MCwgMTQ2ODQsIDE0Njg4LCAwLCAKKyAgICAxNDY5MywgMTQ2OTcsIDAsIDE0NzAyLCAxNDcwNywgMTQ3MTIsIDE0NzE3LCAxNDcyMiwgMCwgMCwgMTQ3MjYsIDE0NzMxLCAKKyAgICAxNDczNiwgMTQ3NDIsIDE0NzQ3LCAxNDc1MywgMTQ3NTgsIDE0NzY0LCAxNDc3MCwgMCwgMCwgMTQ3NzcsIDE0NzgyLCAwLCAKKyAgICAwLCAxNDc4OCwgMTQ3OTMsIDE0Nzk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgwNCwgMTQ4MTEsIDAsIDAsIDAsIDAsIAorICAgIDE0ODE4LCAxNDgyMywgMCwgMTQ4MjgsIDE0ODMzLCAxNDgzOSwgMTQ4NDUsIDE0ODUxLCAwLCAwLCAxNDg1OCwgMTQ4NjMsIAorICAgIDE0ODY3LCAxNDg3MSwgMTQ4NzUsIDE0ODc5LCAxNDg4MywgMTQ4ODcsIDE0ODkyLCAxNDg5NiwgMTQ5MDEsIDE0OTA1LCAKKyAgICAxNDkxMCwgMTQ5MTcsIDE0OTI0LCAxNDkzMSwgMTQ5MzgsIDE0OTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDk1MiwgMTQ5NTYsIDAsIDE0OTYwLCAxNDk2MywgMTQ5NjcsIDE0OTcwLCAxNDk3NCwgMTQ5NzcsIDAsIDAsIDAsIAorICAgIDE0OTgxLCAxNDk4NCwgMTQ5ODgsIDAsIDE0OTkyLCAxNDk5NSwgMTQ5OTksIDE1MDAzLCAwLCAwLCAwLCAxNTAwNiwgCisgICAgMTUwMTAsIDAsIDE1MDE0LCAwLCAxNTAxOCwgMTUwMjIsIDAsIDAsIDAsIDE1MDI2LCAxNTAzMCwgMCwgMCwgMCwgMTUwMzQsIAorICAgIDE1MDM3LCAxNTA0MSwgMCwgMCwgMCwgMTUwNDQsIDE1MDQ3LCAxNTA1MCwgMTUwNTQsIDE1MDU4LCAxNTA2MSwgMTUwNjUsIAorICAgIDE1MDY5LCAxNTA3MywgMTUwNzcsIDE1MDgxLCAxNTA4NSwgMCwgMCwgMCwgMCwgMTUwODgsIDE1MDkzLCAxNTA5NywgCisgICAgMTUxMDIsIDE1MTA2LCAwLCAwLCAwLCAxNTExMSwgMTUxMTUsIDE1MTIwLCAwLCAxNTEyNSwgMTUxMjksIDE1MTM0LCAKKyAgICAxNTEzOSwgMCwgMCwgMTUxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNTE1MiwgMTUxNTYsIDE1MTU5LCAxNTE2MiwgMTUxNjUsIDE1MTY4LCAxNTE3MSwgMTUxNzQsIAorICAgIDE1MTc4LCAxNTE4MSwgMTUxODUsIDE1MTg5LCAxNTE5NCwgMTUxOTksIDE1MjAzLCAxNTIwNywgMTUyMTEsIDE1MjE1LCAKKyAgICAxNTIxOSwgMTUyMjQsIDE1MjI4LCAwLCAwLCAwLCAwLCAwLCAxNTIzMSwgMTUyMzcsIDE1MjQxLCAxNTI0NSwgMCwgMTUyNDksIAorICAgIDE1MjUyLCAxNTI1NiwgMTUyNTksIDE1MjYzLCAxNTI2NiwgMTUyNzAsIDE1Mjc0LCAwLCAxNTI3OCwgMTUyODEsIDE1Mjg1LCAKKyAgICAwLCAxNTI4OSwgMTUyOTIsIDE1Mjk2LCAxNTMwMCwgMTUzMDMsIDE1MzA3LCAxNTMxMSwgMTUzMTUsIDE1MzE5LCAxNTMyMywgCisgICAgMTUzMjcsIDE1MzMxLCAxNTMzNSwgMTUzMzksIDE1MzQzLCAxNTM0NywgMTUzNTEsIDE1MzU1LCAxNTM1OSwgMTUzNjMsIAorICAgIDE1MzY3LCAxNTM3MSwgMTUzNzUsIDAsIDE1Mzc4LCAxNTM4MSwgMTUzODUsIDE1Mzg5LCAxNTM5MywgMTUzOTYsIDE1Mzk5LCAKKyAgICAxNTQwMywgMTU0MDcsIDE1NDEwLCAxNTQxNCwgMTU0MTgsIDE1NDIyLCAxNTQyNiwgMTU0MzAsIDE1NDM0LCAwLCAwLCAwLCAKKyAgICAxNTQzNywgMTU0NDEsIDE1NDQ2LCAxNTQ1MCwgMTU0NTUsIDE1NDU5LCAxNTQ2NCwgMTU0NjksIDAsIDE1NDc1LCAxNTQ3OSwgCisgICAgMTU0ODQsIDAsIDE1NDg5LCAxNTQ5MywgMTU0OTgsIDE1NTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTUwNywgMTU1MTEsIAorICAgIDAsIDE1NTE3LCAxNTUyMSwgMTU1MjUsIDAsIDAsIDAsIDAsIDAsIDE1NTI5LCAxNTUzNCwgMTU1MzksIDE1NTQ0LCAwLCAwLCAKKyAgICAxNTU1MCwgMTU1NTQsIDE1NTU3LCAxNTU2MCwgMTU1NjMsIDE1NTY2LCAxNTU2OSwgMTU1NzIsIDE1NTc2LCAxNTU3OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1ODMsIDE1NTk2LCAxNTYwOCwgMTU2MjAsIDE1NjMyLCAxNTY0NCwgMTU2NTYsIAorICAgIDE1NjY4LCAxNTY3MiwgMTU2NzksIDE1Njg0LCAxNTY4OSwgMCwgMTU2OTQsIDE1Njk4LCAxNTcwMywgMTU3MDcsIDE1NzEyLCAKKyAgICAxNTcxNiwgMTU3MjEsIDE1NzI2LCAwLCAxNTczMSwgMTU3MzUsIDE1NzQwLCAwLCAxNTc0NSwgMTU3NDksIDE1NzU0LCAKKyAgICAxNTc1OSwgMTU3NjMsIDE1NzY4LCAxNTc3MywgMTU3NzgsIDE1NzgzLCAxNTc4OCwgMTU3OTMsIDE1Nzk4LCAxNTgwMywgCisgICAgMTU4MDgsIDE1ODEzLCAxNTgxOCwgMTU4MjMsIDE1ODI4LCAxNTgzMywgMTU4MzgsIDE1ODQzLCAxNTg0OCwgMTU4NTMsIDAsIAorICAgIDE1ODU3LCAxNTg2MSwgMTU4NjYsIDE1ODcxLCAxNTg3NiwgMTU4ODAsIDE1ODg0LCAxNTg4OSwgMTU4OTQsIDE1ODk4LCAwLCAKKyAgICAxNTkwMywgMTU5MDgsIDE1OTEzLCAxNTkxOCwgMTU5MjMsIDAsIDAsIDE1OTI3LCAxNTkzMiwgMTU5MzcsIDE1OTQzLCAKKyAgICAxNTk0OCwgMTU5NTQsIDE1OTU5LCAxNTk2NSwgMTU5NzEsIDAsIDE1OTc4LCAxNTk4MywgMTU5ODksIDAsIDE1OTk1LCAKKyAgICAxNjAwMCwgMTYwMDYsIDE2MDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjAxNywgMTYwMjIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE2MDI5LCAwLCAxNjAzNCwgMTYwNDAsIDE2MDQ2LCAxNjA1MiwgMCwgMCwgMTYwNTksIDE2MDY0LCAxNjA2OCwgCisgICAgMTYwNzIsIDE2MDc2LCAxNjA4MCwgMTYwODQsIDE2MDg4LCAxNjA5MywgMTYwOTcsIDAsIDE2MTAyLCAxNjEwNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxMTIsIDE2MTE2LCAxNjEyMCwgMCwgMTYxMjQsIDE2MTI3LCAKKyAgICAxNjEzMSwgMTYxMzQsIDE2MTM4LCAxNjE0MSwgMTYxNDUsIDE2MTQ5LCAwLCAxNjE1MywgMTYxNTYsIDE2MTYwLCAwLCAKKyAgICAxNjE2NCwgMTYxNjcsIDE2MTcxLCAxNjE3NSwgMTYxNzgsIDE2MTgyLCAxNjE4NiwgMTYxOTAsIDE2MTk0LCAxNjE5OCwgCisgICAgMTYyMDIsIDE2MjA2LCAxNjIxMCwgMTYyMTQsIDE2MjE4LCAxNjIyMiwgMTYyMjYsIDE2MjMwLCAxNjIzNCwgMTYyMzgsIAorICAgIDE2MjQyLCAxNjI0NiwgMTYyNTAsIDE2MjUzLCAxNjI1NywgMTYyNjAsIDE2MjY0LCAxNjI2OCwgMTYyNzIsIDE2Mjc1LCAKKyAgICAxNjI3OCwgMTYyODIsIDE2Mjg2LCAxNjI4OSwgMTYyOTMsIDE2Mjk3LCAxNjMwMSwgMTYzMDUsIDE2MzA5LCAxNjMxMywgCisgICAgMTYzMTYsIDAsIDAsIDE2MzIwLCAxNjMyNCwgMTYzMjksIDE2MzMzLCAxNjMzOCwgMTYzNDIsIDE2MzQ3LCAxNjM1MiwgMCwgCisgICAgMTYzNTgsIDE2MzYyLCAxNjM2NywgMCwgMTYzNzIsIDE2Mzc2LCAxNjM4MSwgMTYzODYsIDE2MzkwLCAxNjM5NSwgMCwgMCwgCisgICAgMCwgMCwgMTYzOTksIDE2NDA1LCAxNjQxMSwgMTY0MTcsIDE2NDIzLCAxNjQyOSwgMTY0MzUsIDE2NDQxLCAxNjQ0NywgCisgICAgMTY0NTMsIDE2NDU5LCAxNjQ2NSwgMTY0NzEsIDE2NDc2LCAxNjQ4MSwgMTY0ODYsIDAsIDAsIDE2NDkyLCAxNjQ5NiwgCisgICAgMTY0OTksIDE2NTAyLCAxNjUwNSwgMTY1MDgsIDE2NTExLCAxNjUxNCwgMTY1MTgsIDE2NTIxLCAxNjUyNSwgMTY1MjksIAorICAgIDE2NTM0LCAxNjUzOSwgMTY1NDUsIDE2NTUxLCAxNjU1NywgMTY1NjMsIDE2NTY5LCAxNjU3NSwgMTY1NzksIDE2NTg1LCAKKyAgICAxNjU5MSwgMTY1OTcsIDE2NjAyLCAxNjYwOCwgMCwgMCwgMTY2MTQsIDE2NjE4LCAwLCAxNjYyMiwgMTY2MjYsIDE2NjMwLCAKKyAgICAxNjYzNCwgMTY2MzgsIDE2NjQyLCAxNjY0NiwgMTY2NTAsIDE2NjU0LCAxNjY1OCwgMTY2NjIsIDE2NjY2LCAxNjY3MCwgCisgICAgMTY2NzQsIDE2Njc4LCAxNjY4MiwgMTY2ODYsIDE2NjkwLCAwLCAwLCAwLCAxNjY5NCwgMTY3MDAsIDE2NzA2LCAxNjcxMiwgCisgICAgMTY3MTgsIDE2NzI0LCAxNjczMCwgMTY3MzYsIDE2NzQyLCAxNjc0OCwgMTY3NTQsIDE2NzYwLCAxNjc2OCwgMTY3NzQsIAorICAgIDE2NzgwLCAxNjc4NiwgMTY3OTIsIDE2Nzk4LCAxNjgwNCwgMTY4MTAsIDE2ODE2LCAxNjgyMiwgMTY4MjgsIDE2ODM0LCAwLCAKKyAgICAxNjg0MCwgMTY4NDYsIDE2ODUyLCAxNjg1OCwgMTY4NjQsIDE2ODcwLCAxNjg3NCwgMTY4ODAsIDE2ODg0LCAwLCAxNjg4OCwgCisgICAgMCwgMCwgMTY4OTQsIDE2ODk4LCAxNjkwNCwgMTY5MTAsIDE2OTE2LCAxNjkyMCwgMTY5MjYsIDAsIDAsIDAsIDE2OTMwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjkzNCwgMTY5MzksIDE2OTQ2LCAxNjk1MywgMTY5NjAsIDE2OTY3LCAwLCAxNjk3NCwgMCwgMTY5ODEsIAorICAgIDE2OTg2LCAxNjk5MSwgMTY5OTgsIDE3MDA1LCAxNzAxNCwgMTcwMjUsIDE3MDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAzOSwgCisgICAgMTcwNDUsIDE3MDUwLCAxNzA1NSwgMTcwNjAsIDE3MDY1LCAxNzA3MCwgMTcwNzUsIDE3MDgxLCAxNzA4NiwgMCwgMCwgCisgICAgMTcwOTIsIDE3MDk5LCAxNzEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcxMTEsIDE3MTE4LCAKKyAgICAxNzEyNSwgMTcxMzIsIDE3MTM5LCAxNzE0NiwgMTcxNTMsIDE3MTYwLCAxNzE2NywgMTcxNzQsIDE3MTgxLCAxNzE4OCwgCisgICAgMTcxOTUsIDE3MjAyLCAxNzIwOSwgMTcyMTYsIDE3MjIzLCAxNzIzMCwgMTcyMzcsIDE3MjQ0LCAxNzI1MSwgMTcyNTgsIAorICAgIDE3MjY1LCAxNzI3MiwgMTcyNzksIDE3Mjg2LCAxNzI5MywgMTczMDAsIDE3MzA3LCAxNzMxNCwgMTczMjEsIDE3MzI4LCAKKyAgICAxNzMzNSwgMTczNDEsIDE3MzQ4LCAxNzM1NSwgMTczNjAsIDE3MzY3LCAxNzM3MiwgMTczNzksIDE3Mzg2LCAxNzM5MywgCisgICAgMTc0MDAsIDE3NDA3LCAxNzQxNCwgMTc0MjAsIDE3NDI3LCAxNzQzMiwgMTc0MzgsIDE3NDQ1LCAxNzQ1MiwgMTc0NTksIAorICAgIDE3NDY1LCAxNzQ3MiwgMTc0NzksIDE3NDg2LCAxNzQ5MiwgMTc0OTksIDAsIDAsIDAsIDAsIDE3NTA0LCAxNzUxMSwgCisgICAgMTc1MTcsIDE3NTI0LCAxNzUzMCwgMTc1MzksIDE3NTQ4LCAxNzU1MywgMTc1NTgsIDE3NTYzLCAxNzU3MCwgMTc1NzcsIAorICAgIDE3NTg0LCAxNzU5MSwgMTc1OTYsIDE3NjAxLCAxNzYwNiwgMTc2MTEsIDE3NjE2LCAxNzYyMCwgMTc2MjQsIDE3NjI4LCAKKyAgICAxNzYzMiwgMTc2MzYsIDE3NjQwLCAxNzY0NSwgMTc2NDksIDE3NjU0LCAxNzY1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTc2NjQsIDE3NjY5LCAwLCAxNzY3NiwgMCwgMCwgMTc2ODMsIDE3Njg4LCAwLCAxNzY5MywgMCwgCisgICAgMCwgMTc3MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NzA1LCAxNzcxMCwgMTc3MTQsIDE3NzIxLCAwLCAxNzcyOCwgMTc3MzMsIAorICAgIDE3NzM4LCAxNzc0MywgMTc3NTAsIDE3NzU3LCAxNzc2NCwgMCwgMTc3NzEsIDE3Nzc2LCAxNzc4MSwgMCwgMTc3ODgsIDAsIAorICAgIDE3Nzk1LCAwLCAwLCAxNzgwMCwgMTc4MDcsIDAsIDE3ODE0LCAxNzgxOCwgMTc4MjUsIDE3ODI5LCAxNzgzNCwgMTc4NDIsIAorICAgIDE3ODQ4LCAxNzg1NCwgMTc4NTksIDE3ODY1LCAxNzg3MSwgMTc4NzcsIDE3ODgyLCAwLCAxNzg4OCwgMTc4OTYsIDE3OTAzLCAKKyAgICAwLCAwLCAxNzkxMCwgMTc5MTUsIDE3OTIxLCAxNzkyNiwgMTc5MzIsIDAsIDE3OTM4LCAwLCAxNzk0MywgMTc5NTAsIAorICAgIDE3OTU3LCAxNzk2NCwgMTc5NzEsIDE3OTc2LCAwLCAwLCAxNzk4MCwgMTc5ODUsIDE3OTg5LCAxNzk5MywgMTc5OTcsIAorICAgIDE4MDAxLCAxODAwNSwgMTgwMDksIDE4MDE0LCAxODAxOCwgMCwgMCwgMTgwMjMsIDE4MDI5LCAxODAzNSwgMTgwNDIsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MDQ5LCAxODA1MywgMTgwNjQsIDE4MDc5LCAxODA5NCwgMTgxMDQsIDE4MTE1LCAKKyAgICAxODEyOCwgMTgxMzksIDE4MTQ1LCAxODE1MywgMTgxNjMsIDE4MTY5LCAxODE3NywgMTgxODEsIDE4MTg3LCAxODE5MywgCisgICAgMTgyMDEsIDE4MjExLCAxODIxOSwgMTgyMzIsIDE4MjM4LCAxODI0NiwgMTgyNTQsIDE4MjY2LCAxODI3MywgMTgyODEsIAorICAgIDE4Mjg5LCAxODI5NywgMTgzMDUsIDE4MzEzLCAxODMyMSwgMTgzMzEsIDE4MzM1LCAxODMzOCwgMTgzNDEsIDE4MzQ0LCAKKyAgICAxODM0NywgMTgzNTAsIDE4MzUzLCAxODM1NywgMTgzNjAsIDE4MzY0LCAxODM2OCwgMTgzNzIsIDE4Mzc2LCAxODM4MCwgCisgICAgMTgzODQsIDE4Mzg4LCAxODM5MywgMTgzOTcsIDE4NDAyLCAxODQwNywgMTg0MTMsIDE4NDIzLCAxODQzNywgMTg0NDcsIAorICAgIDE4NDUzLCAxODQ1OSwgMTg0NjcsIDE4NDc1LCAxODQ4MywgMTg0OTEsIDE4NDk3LCAxODUwMywgMTg1MDYsIDE4NTEwLCAKKyAgICAxODUxNCwgMTg1MTgsIDE4NTIyLCAxODUyNiwgMTg1MzAsIDAsIDE4NTM0LCAxODUzOCwgMTg1NDIsIDE4NTQ2LCAxODU1MCwgCisgICAgMTg1NTQsIDE4NTU4LCAxODU2MiwgMTg1NjYsIDE4NTcwLCAxODU3NCwgMTg1NzcsIDE4NTgwLCAxODU4NCwgMTg1ODgsIAorICAgIDE4NTkyLCAxODU5NSwgMTg1OTksIDE4NjAzLCAxODYwNywgMTg2MTEsIDE4NjE1LCAxODYxOSwgMTg2MjMsIDE4NjI3LCAKKyAgICAxODYzMCwgMTg2MzQsIDE4NjM3LCAxODY0MSwgMTg2NDUsIDE4NjQ5LCAxODY1MiwgMTg2NTUsIDE4NjU5LCAxODY2NSwgCisgICAgMTg2NjksIDAsIDAsIDAsIDAsIDE4NjczLCAxODY3OCwgMTg2ODIsIDE4Njg3LCAxODY5MSwgMTg2OTYsIDE4NzAxLCAKKyAgICAxODcwNywgMTg3MTIsIDE4NzE4LCAxODcyMiwgMTg3MjcsIDE4NzMxLCAxODczNiwgMTg3NDYsIDE4NzUyLCAxODc1OCwgCisgICAgMTg3NjUsIDE4Nzc1LCAxODc4MSwgMTg3ODUsIDE4Nzg5LCAxODc5NSwgMTg4MDEsIDE4ODA5LCAxODgxNSwgMTg4MjMsIAorICAgIDE4ODMxLCAxODgzOSwgMTg4NDksIDE4ODU3LCAxODg2NywgMTg4NzIsIDE4ODc4LCAxODg4NCwgMTg4OTAsIDE4ODk2LCAKKyAgICAxODkwMiwgMTg5MDgsIDAsIDE4OTE0LCAxODkyMCwgMTg5MjYsIDE4OTMyLCAxODkzOCwgMTg5NDQsIDE4OTUwLCAxODk1NiwgCisgICAgMTg5NjIsIDE4OTY4LCAxODk3NCwgMTg5NzksIDE4OTg0LCAxODk5MCwgMTg5OTYsIDE5MDAyLCAxOTAwNywgMTkwMTMsIAorICAgIDE5MDE5LCAxOTAyNSwgMTkwMzEsIDE5MDM3LCAxOTA0MywgMTkwNDksIDE5MDU1LCAxOTA2MCwgMTkwNjYsIDE5MDcxLCAKKyAgICAxOTA3NywgMTkwODMsIDE5MDg5LCAxOTA5NCwgMTkwOTksIDE5MTA1LCAxOTExMywgMTkxMjAsIDAsIDE5MTI4LCAxOTEzNSwgCisgICAgMTkxNDgsIDE5MTU1LCAxOTE2MiwgMTkxNzAsIDE5MTc4LCAxOTE4NCwgMTkxOTAsIDE5MTk2LCAxOTIwNiwgMTkyMTEsIAorICAgIDE5MjE3LCAxOTIyNywgMTkyMzcsIDAsIDE5MjQ3LCAxOTI1NywgMTkyNjUsIDE5Mjc3LCAxOTI4OSwgMTkyOTUsIDE5MzA5LCAKKyAgICAxOTMyNCwgMTkzMjksIDE5MzM0LCAxOTM0MiwgMTkzNTAsIDE5MzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxOTM2NiwgMTkzNjksIDE5MzczLCAxOTM3NywgMTkzODEsIDE5Mzg1LCAxOTM4OSwgMTkzOTMsIDE5Mzk3LCAKKyAgICAxOTQwMSwgMTk0MDUsIDE5NDA5LCAxOTQxMywgMTk0MTcsIDE5NDIxLCAxOTQyNSwgMTk0MjksIDE5NDMzLCAxOTQzNywgCisgICAgMTk0NDEsIDE5NDQ1LCAxOTQ0OCwgMTk0NTEsIDE5NDU1LCAxOTQ1OSwgMTk0NjMsIDE5NDY2LCAxOTQ2OSwgMTk0NzMsIAorICAgIDE5NDc2LCAxOTQ4MCwgMTk0ODQsIDE5NDg3LCAxOTQ5MSwgMTk0OTQsIDE5NDk5LCAxOTUwMiwgMTk1MDYsIDE5NTA5LCAKKyAgICAxOTUxMywgMTk1MTYsIDE5NTIxLCAxOTUyNCwgMTk1MjgsIDE5NTM1LCAxOTU0MCwgMTk1NDQsIDE5NTQ5LCAxOTU1MywgCisgICAgMTk1NTgsIDE5NTYyLCAxOTU2NywgMTk1NzQsIDE5NTgwLCAxOTU4NSwgMTk1ODksIDE5NTkzLCAxOTU5NywgMTk2MDEsIAorICAgIDE5NjA1LCAxOTYxMCwgMTk2MTYsIDE5NjIyLCAxOTYyNywgMTk2MzMsIDE5NjM3LCAxOTY0MCwgMTk2NDMsIDE5NjQ2LCAKKyAgICAxOTY0OSwgMTk2NTIsIDE5NjU1LCAxOTY1OSwgMTk2NjIsIDE5NjY2LCAxOTY3MiwgMTk2NzYsIDE5NjgwLCAxOTY4NCwgCisgICAgMTk2ODgsIDE5NjkyLCAxOTY5NiwgMTk3MDAsIDE5NzA0LCAxOTcwOSwgMTk3MTMsIDE5NzE4LCAxOTcyMywgMTk3MjksIAorICAgIDE5NzM0LCAxOTc0MCwgMTk3NDYsIDE5NzUyLCAxOTc1OCwgMTk3NjQsIDE5NzcxLCAxOTc3OCwgMTk3ODUsIDE5NzkzLCAKKyAgICAxOTgwMiwgMTk4MTEsIDE5ODIyLCAxOTgzMiwgMTk4NDIsIDE5ODUzLCAxOTg2NCwgMTk4NzQsIDE5ODg0LCAxOTg5NCwgCisgICAgMTk5MDQsIDE5OTE0LCAxOTkyNCwgMTk5MzQsIDE5OTQ0LCAxOTk1MiwgMTk5NTksIDE5OTY1LCAxOTk3MiwgMTk5NzcsIAorICAgIDE5OTgzLCAxOTk4OSwgMTk5OTUsIDIwMDAxLCAyMDAwNywgMjAwMTMsIDIwMDE4LCAyMDAyNCwgMjAwMzAsIDIwMDM2LCAKKyAgICAyMDA0MiwgMjAwNDcsIDIwMDU1LCAyMDA2MiwgMjAwNjgsIDIwMDc1LCAyMDA4MywgMjAwODksIDIwMDk1LCAyMDEwMSwgCisgICAgMjAxMDcsIDIwMTE1LCAyMDEyMywgMjAxMzMsIDIwMTQxLCAyMDE0OSwgMjAxNTUsIDIwMTYwLCAyMDE2NSwgMjAxNzAsIAorICAgIDIwMTc1LCAyMDE4MCwgMjAxODUsIDIwMTkxLCAyMDE5NiwgMjAyMDIsIDIwMjA4LCAyMDIxNCwgMjAyMjAsIDIwMjI3LCAKKyAgICAyMDIzMiwgMjAyMzgsIDIwMjQzLCAyMDI0OCwgMjAyNTMsIDIwMjU4LCAyMDI2MywgMjAyNjgsIDIwMjczLCAyMDI3OCwgCisgICAgMjAyODMsIDIwMjg4LCAyMDI5MywgMjAyOTgsIDIwMzAzLCAyMDMwOCwgMjAzMTMsIDIwMzE4LCAyMDMyMywgMjAzMjgsIAorICAgIDIwMzMzLCAyMDMzOCwgMjAzNDMsIDIwMzQ4LCAyMDM1MywgMjAzNTgsIDIwMzYzLCAyMDM2OCwgMjAzNzMsIDIwMzc4LCAKKyAgICAyMDM4MywgMjAzODgsIDIwMzkzLCAyMDM5OCwgMjA0MDMsIDIwNDA4LCAyMDQxMywgMjA0MTgsIDIwNDIzLCAwLCAyMDQyOCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjA0MzMsIDAsIDAsIDIwNDM4LCAyMDQ0MiwgMjA0NDYsIDIwNDUwLCAyMDQ1NCwgMjA0NTgsIAorICAgIDIwNDYyLCAyMDQ2NiwgMjA0NzAsIDIwNDc0LCAyMDQ3OCwgMjA0ODIsIDIwNDg2LCAyMDQ5MCwgMjA0OTQsIDIwNDk4LCAKKyAgICAyMDUwMiwgMjA1MDYsIDIwNTEwLCAyMDUxNCwgMjA1MTgsIDIwNTIyLCAyMDUyNiwgMjA1MzAsIDIwNTM0LCAyMDUzOCwgCisgICAgMjA1NDIsIDIwNTQ2LCAyMDU1MCwgMjA1NTQsIDIwNTU4LCAyMDU2MiwgMjA1NjYsIDIwNTcwLCAyMDU3NCwgMjA1NzgsIAorICAgIDIwNTgyLCAyMDU4NiwgMjA1OTAsIDIwNTk0LCAyMDU5OCwgMjA2MDIsIDIwNjA4LCAyMDYxMiwgMjA2MTcsIDIwNjIyLCAKKyAgICAyMDYyNiwgMjA2MzEsIDIwNjM2LCAyMDY0MCwgMjA2NDQsIDIwNjQ4LCAyMDY1MiwgMjA2NTYsIDIwNjYwLCAyMDY2NCwgCisgICAgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIDIwNjg0LCAyMDY4OCwgMjA2OTIsIDIwNjk2LCAyMDcwMCwgMjA3MDQsIAorICAgIDIwNzA4LCAyMDcxMiwgMjA3MTYsIDIwNzIwLCAyMDcyNCwgMjA3MjgsIDIwNzMyLCAyMDczNiwgMjA3NDAsIDIwNzQ0LCAKKyAgICAyMDc0OCwgMjA3NTIsIDIwNzU2LCAyMDc2MCwgMjA3NjQsIDIwNzY4LCAyMDc3MiwgMjA3NzYsIDIwNzgwLCAyMDc4NCwgCisgICAgMjA3ODgsIDIwNzkyLCAyMDc5NiwgMjA4MDAsIDIwODA0LCAyMDgwOCwgMjA4MTIsIDIwODE2LCAyMDgyMCwgMjA4MjQsIAorICAgIDIwODI4LCAyMDgzMiwgMjA4MzYsIDIwODQwLCAyMDg0NCwgMjA4NDgsIDIwODUyLCAyMDg1NiwgMjA4NjAsIDIwODY0LCAKKyAgICAyMDg2OCwgMjA4NzIsIDIwODc2LCAyMDg4MCwgMjA4ODQsIDIwODg4LCAyMDg5MiwgMjA4OTYsIDIwOTAwLCAyMDkwNCwgCisgICAgMjA5MDgsIDIwOTEyLCAyMDkxNiwgMjA5MjAsIDIwOTI0LCAyMDkyOCwgMjA5MzIsIDIwOTM2LCAyMDk0MCwgMjA5NDQsIAorICAgIDIwOTQ4LCAyMDk1MiwgMjA5NTYsIDIwOTYwLCAyMDk2NCwgMjA5NjgsIDIwOTcyLCAyMDk3NiwgMjA5ODAsIDIwOTg0LCAKKyAgICAyMDk4OCwgMjA5OTIsIDIwOTk2LCAyMTAwMCwgMjEwMDQsIDIxMDA4LCAyMTAxMiwgMjEwMTYsIDIxMDIwLCAyMTAyNCwgCisgICAgMjEwMjcsIDIxMDMxLCAyMTAzNCwgMjEwMzgsIDIxMDQyLCAyMTA0NSwgMjEwNDksIDIxMDUzLCAyMTA1NiwgMjEwNjAsIAorICAgIDIxMDY0LCAyMTA2OCwgMjEwNzIsIDIxMDc1LCAyMTA3OSwgMjEwODMsIDIxMDg3LCAyMTA5MSwgMjEwOTUsIDIxMDk5LCAKKyAgICAyMTEwMiwgMjExMDYsIDIxMTEwLCAyMTExNCwgMjExMTgsIDIxMTIyLCAyMTEyNiwgMjExMzAsIDIxMTM0LCAyMTEzOCwgCisgICAgMjExNDIsIDIxMTQ2LCAyMTE1MCwgMjExNTQsIDIxMTU4LCAyMTE2MiwgMjExNjYsIDIxMTcwLCAyMTE3NCwgMjExNzgsIAorICAgIDIxMTgyLCAyMTE4NiwgMjExOTAsIDIxMTk0LCAyMTE5OCwgMjEyMDIsIDIxMjA2LCAyMTIxMCwgMjEyMTQsIDIxMjE4LCAKKyAgICAyMTIyMiwgMjEyMjYsIDIxMjMwLCAyMTIzNCwgMjEyMzgsIDIxMjQyLCAyMTI0NiwgMjEyNTAsIDIxMjU0LCAyMTI1OCwgCisgICAgMjEyNjIsIDIxMjY2LCAyMTI3MCwgMjEyNzQsIDIxMjc4LCAyMTI4MiwgMjEyODYsIDIxMjkwLCAyMTI5NCwgMjEyOTgsIAorICAgIDIxMzAyLCAyMTMwNiwgMjEzMTAsIDIxMzE0LCAyMTMxOCwgMjEzMjIsIDIxMzI2LCAyMTMzMCwgMjEzMzQsIDIxMzM4LCAKKyAgICAyMTM0MiwgMjEzNDYsIDIxMzUwLCAyMTM1NCwgMjEzNTgsIDIxMzYyLCAyMTM2NiwgMjEzNzAsIDIxMzc0LCAyMTM3OCwgCisgICAgMjEzODIsIDIxMzg2LCAyMTM5MCwgMjEzOTQsIDIxMzk4LCAyMTQwMiwgMjE0MDYsIDIxNDEwLCAyMTQxNCwgMjE0MTgsIAorICAgIDIxNDIyLCAyMTQyNiwgMjE0MzAsIDIxNDM0LCAyMTQzOCwgMjE0NDIsIDIxNDQ2LCAyMTQ1MCwgMjE0NTQsIDIxNDU4LCAKKyAgICAyMTQ2MiwgMjE0NjYsIDIxNDcwLCAyMTQ3NCwgMjE0NzgsIDIxNDgyLCAyMTQ4NiwgMjE0OTAsIDIxNDk0LCAyMTQ5OCwgCisgICAgMjE1MDIsIDIxNTA2LCAyMTUxMCwgMjE1MTQsIDIxNTE4LCAyMTUyMiwgMjE1MjYsIDIxNTMwLCAyMTUzNCwgMjE1MzgsIAorICAgIDIxNTQyLCAyMTU0NiwgMjE1NTAsIDIxNTU0LCAyMTU1OCwgMjE1NjIsIDIxNTY2LCAyMTU3MCwgMjE1NzQsIDIxNTc4LCAKKyAgICAyMTU4MiwgMjE1ODYsIDIxNTkwLCAyMTU5NCwgMjE1OTgsIDIxNjAyLCAyMTYwNiwgMjE2MTAsIDIxNjE0LCAyMTYxOCwgCisgICAgMjE2MjIsIDIxNjI2LCAyMTYzMCwgMjE2MzQsIDIxNjM4LCAyMTY0MiwgMjE2NDYsIDIxNjUwLCAyMTY1NCwgMjE2NTcsIAorICAgIDIxNjYxLCAyMTY2NSwgMjE2NjksIDIxNjczLCAyMTY3NywgMjE2ODEsIDIxNjg1LCAyMTY4OCwgMjE2OTIsIDIxNjk2LCAKKyAgICAyMTcwMCwgMjE3MDQsIDIxNzA4LCAyMTcxMiwgMjE3MTYsIDIxNzIwLCAyMTcyNCwgMjE3MjgsIDIxNzMyLCAyMTczNiwgCisgICAgMjE3NDAsIDIxNzQ0LCAyMTc0OCwgMjE3NTEsIDIxNzU1LCAyMTc1OSwgMjE3NjMsIDIxNzY3LCAyMTc3MSwgMjE3NzUsIAorICAgIDIxNzc5LCAyMTc4MywgMjE3ODcsIDIxNzkxLCAyMTc5NSwgMjE3OTksIDIxODAzLCAyMTgwNywgMjE4MTEsIDIxODE1LCAKKyAgICAyMTgxOSwgMjE4MjMsIDIxODI3LCAyMTgzMSwgMjE4MzUsIDIxODM5LCAyMTg0MywgMjE4NDcsIDIxODUxLCAyMTg1NSwgCisgICAgMjE4NTksIDIxODYzLCAyMTg2NywgMjE4NzEsIDIxODc1LCAyMTg3OSwgMjE4ODMsIDIxODg3LCAyMTg5MSwgMjE4OTUsIAorICAgIDIxODk5LCAyMTkwMywgMjE5MDcsIDIxOTExLCAyMTkxNSwgMjE5MTksIDIxOTIzLCAyMTkyNywgMjE5MzEsIDIxOTM1LCAKKyAgICAyMTkzOSwgMCwgMjE5NDMsIDIxOTQ3LCAyMTk1MSwgMjE5NTUsIDAsIDAsIDIxOTU5LCAyMTk2MywgMjE5NjcsIDIxOTcxLCAKKyAgICAyMTk3NSwgMjE5NzksIDIxOTgzLCAwLCAyMTk4NywgMCwgMjE5OTEsIDIxOTk1LCAyMTk5OSwgMjIwMDMsIDAsIDAsIAorICAgIDIyMDA3LCAyMjAxMSwgMjIwMTUsIDIyMDE5LCAyMjAyMywgMjIwMjcsIDIyMDMxLCAyMjAzNSwgMjIwMzksIDIyMDQzLCAKKyAgICAyMjA0NywgMjIwNTEsIDIyMDU1LCAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgMjIwNzUsIDIyMDc5LCAyMjA4MywgCisgICAgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTgsIDIyMTAyLCAyMjEwNiwgMjIxMTAsIDIyMTE0LCAyMjExOCwgMjIxMjIsIAorICAgIDIyMTI2LCAyMjEzMCwgMjIxMzQsIDIyMTM4LCAyMjE0MiwgMjIxNDYsIDIyMTUwLCAyMjE1NCwgMjIxNTgsIDIyMTYyLCAKKyAgICAyMjE2NiwgMCwgMjIxNzAsIDIyMTc0LCAyMjE3OCwgMjIxODIsIDAsIDAsIDIyMTg2LCAyMjE4OSwgMjIxOTMsIDIyMTk3LCAKKyAgICAyMjIwMSwgMjIyMDUsIDIyMjA5LCAyMjIxMywgMjIyMTcsIDIyMjIxLCAyMjIyNSwgMjIyMjksIDIyMjMzLCAyMjIzNywgCisgICAgMjIyNDEsIDIyMjQ1LCAyMjI0OSwgMjIyNTQsIDIyMjU5LCAyMjI2NCwgMjIyNzAsIDIyMjc2LCAyMjI4MSwgMjIyODYsIAorICAgIDIyMjkyLCAyMjI5NSwgMjIyOTksIDIyMzAzLCAyMjMwNywgMjIzMTEsIDIyMzE1LCAyMjMxOSwgMjIzMjMsIDAsIDIyMzI3LCAKKyAgICAyMjMzMSwgMjIzMzUsIDIyMzM5LCAwLCAwLCAyMjM0MywgMjIzNDcsIDIyMzUxLCAyMjM1NSwgMjIzNTksIDIyMzYzLCAKKyAgICAyMjM2NywgMCwgMjIzNzEsIDAsIDIyMzc1LCAyMjM3OSwgMjIzODMsIDIyMzg3LCAwLCAwLCAyMjM5MSwgMjIzOTUsIAorICAgIDIyMzk5LCAyMjQwMywgMjI0MDcsIDIyNDExLCAyMjQxNSwgMjI0MTksIDIyNDIzLCAyMjQyOCwgMjI0MzMsIDIyNDM4LCAKKyAgICAyMjQ0NCwgMjI0NTAsIDIyNDU1LCAwLCAyMjQ2MCwgMjI0NjQsIDIyNDY4LCAyMjQ3MiwgMjI0NzYsIDIyNDgwLCAyMjQ4NCwgCisgICAgMjI0ODgsIDIyNDkyLCAyMjQ5NiwgMjI1MDAsIDIyNTA0LCAyMjUwOCwgMjI1MTIsIDIyNTE2LCAyMjUyMCwgMjI1MjQsIAorICAgIDIyNTI3LCAyMjUzMSwgMjI1MzUsIDIyNTM5LCAyMjU0MywgMjI1NDcsIDIyNTUxLCAyMjU1NSwgMjI1NTksIDIyNTYzLCAKKyAgICAyMjU2NywgMjI1NzEsIDIyNTc1LCAyMjU3OSwgMjI1ODMsIDIyNTg3LCAyMjU5MSwgMjI1OTUsIDIyNTk5LCAyMjYwMywgCisgICAgMjI2MDcsIDIyNjExLCAyMjYxNSwgMjI2MTksIDIyNjIzLCAyMjYyNywgMjI2MzEsIDIyNjM1LCAyMjYzOSwgMjI2NDMsIAorICAgIDIyNjQ3LCAyMjY1MSwgMjI2NTUsIDIyNjU5LCAyMjY2MywgMjI2NjcsIDIyNjcxLCAyMjY3NSwgMjI2NzksIDIyNjgzLCAwLCAKKyAgICAyMjY4NywgMjI2OTEsIDIyNjk1LCAyMjY5OSwgMCwgMCwgMjI3MDMsIDIyNzA3LCAyMjcxMSwgMjI3MTUsIDIyNzE5LCAKKyAgICAyMjcyMywgMjI3MjcsIDIyNzMxLCAyMjczNSwgMjI3MzksIDIyNzQzLCAyMjc0NywgMjI3NTEsIDIyNzU1LCAyMjc1OSwgCisgICAgMjI3NjMsIDIyNzY3LCAyMjc3MSwgMjI3NzUsIDIyNzc5LCAyMjc4MywgMjI3ODcsIDIyNzkxLCAyMjc5NSwgMjI3OTksIAorICAgIDIyODAzLCAyMjgwNywgMjI4MTEsIDIyODE1LCAyMjgxOSwgMjI4MjMsIDIyODI3LCAyMjgzMSwgMjI4MzUsIDIyODM5LCAKKyAgICAyMjg0MywgMjI4NDcsIDIyODUxLCAyMjg1NSwgMjI4NTksIDIyODYzLCAyMjg2NywgMjI4NzEsIDIyODc1LCAyMjg3OSwgCisgICAgMjI4ODMsIDIyODg3LCAyMjg5MSwgMjI4OTUsIDIyODk5LCAyMjkwMywgMjI5MDcsIDIyOTExLCAyMjkxNSwgMjI5MTksIAorICAgIDIyOTIzLCAyMjkyNywgMjI5MzAsIDIyOTM0LCAyMjkzOCwgMjI5NDIsIDIyOTQ2LCAyMjk1MCwgMjI5NTQsIDIyOTU4LCAKKyAgICAyMjk2MiwgMjI5NjYsIDAsIDAsIDIyOTcwLCAyMjk3OSwgMjI5ODUsIDIyOTkwLCAyMjk5NCwgMjI5OTcsIDIzMDAyLCAKKyAgICAyMzAwNSwgMjMwMDgsIDIzMDExLCAyMzAxNiwgMjMwMjAsIDIzMDI1LCAyMzAyOCwgMjMwMzEsIDIzMDM0LCAyMzAzNywgCisgICAgMjMwNDAsIDIzMDQzLCAyMzA0NywgMjMwNTAsIDIzMDU0LCAyMzA1OCwgMjMwNjIsIDIzMDY2LCAyMzA3MCwgMjMwNzQsIAorICAgIDIzMDc4LCAyMzA4MiwgMjMwODYsIDIzMDkwLCAyMzA5NCwgMCwgMCwgMCwgMjMxMDAsIDIzMTA2LCAyMzExMCwgMjMxMTQsIAorICAgIDIzMTE4LCAyMzEyNCwgMjMxMjgsIDIzMTMyLCAyMzEzNiwgMjMxNDIsIDIzMTQ2LCAyMzE1MCwgMjMxNTQsIDIzMTYwLCAKKyAgICAyMzE2NCwgMjMxNjgsIDIzMTcyLCAyMzE3OCwgMjMxODQsIDIzMTkwLCAyMzE5OCwgMjMyMDQsIDIzMjEwLCAyMzIxNiwgCisgICAgMjMyMjIsIDIzMjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAyMzIzNCwgMjMyMzcsIDIzMjQwLCAyMzI0MywgMjMyNDYsIDIzMjQ5LCAKKyAgICAyMzI1MywgMjMyNTcsIDIzMjYwLCAyMzI2NCwgMjMyNjgsIDIzMjcyLCAyMzI3NiwgMjMyODAsIDIzMjgzLCAyMzI4NywgCisgICAgMjMyOTEsIDIzMjk1LCAyMzI5OSwgMjMzMDMsIDIzMzA2LCAyMzMxMCwgMjMzMTQsIDIzMzE4LCAyMzMyMiwgMjMzMjYsIAorICAgIDIzMzI5LCAyMzMzMywgMjMzMzcsIDIzMzQxLCAyMzM0NSwgMjMzNDgsIDIzMzUyLCAyMzM1NiwgMjMzNjAsIDIzMzY0LCAKKyAgICAyMzM2OCwgMjMzNzIsIDIzMzc2LCAyMzM4MCwgMjMzODQsIDIzMzg4LCAyMzM5MiwgMjMzOTYsIDIzNDAwLCAyMzQwNCwgCisgICAgMjM0MDgsIDIzNDEyLCAyMzQxNiwgMjM0MjAsIDIzNDI0LCAyMzQyOCwgMjM0MzIsIDIzNDM2LCAyMzQ0MCwgMjM0NDQsIAorICAgIDIzNDQ4LCAyMzQ1MiwgMjM0NTYsIDIzNDYwLCAyMzQ2NCwgMjM0NjgsIDIzNDcyLCAyMzQ3NiwgMjM0ODAsIDIzNDg0LCAKKyAgICAyMzQ4OCwgMjM0OTIsIDIzNDk2LCAyMzUwMCwgMjM1MDQsIDIzNTA4LCAyMzUxMiwgMjM1MTYsIDIzNTIwLCAyMzUyNCwgCisgICAgMjM1MjgsIDIzNTMyLCAyMzUzNiwgMjM1NDAsIDIzNTQzLCAyMzU0NywgMjM1NTEsIDIzNTU1LCAyMzU1OSwgMjM1NjMsIDAsIAorICAgIDAsIDIzNTY3LCAyMzU3MiwgMjM1NzcsIDIzNTgyLCAyMzU4NywgMjM1OTIsIDAsIDAsIDIzNTk3LCAyMzYwMSwgMjM2MDQsIAorICAgIDIzNjA4LCAyMzYxMSwgMjM2MTUsIDIzNjE4LCAyMzYyMiwgMjM2MjgsIDIzNjMzLCAyMzYzNywgMjM2NDAsIDIzNjQ0LCAKKyAgICAyMzY0OCwgMjM2NTQsIDIzNjU4LCAyMzY2NCwgMjM2NjgsIDIzNjc0LCAyMzY3OCwgMjM2ODQsIDIzNjg4LCAyMzY5NCwgCisgICAgMjM3MDAsIDIzNzA0LCAyMzcxMCwgMjM3MTQsIDIzNzIwLCAyMzcyNiwgMjM3MzAsIDIzNzM2LCAyMzc0MiwgMjM3NDYsIAorICAgIDIzNzUxLCAyMzc1OSwgMjM3NjcsIDIzNzc0LCAyMzc3OSwgMjM3ODQsIDIzNzkzLCAyMzc5OSwgMjM4MDcsIDIzODEyLCAKKyAgICAyMzgxOCwgMjM4MjIsIDIzODI2LCAyMzgzMCwgMjM4MzQsIDIzODM4LCAyMzg0MiwgMjM4NDYsIDIzODUwLCAyMzg1NCwgCisgICAgMjM4NTgsIDIzODY0LCAyMzg2OSwgMjM4NzQsIDIzODc3LCAyMzg4MSwgMjM4ODUsIDIzODkxLCAyMzg5NSwgMjM5MDEsIAorICAgIDIzOTA1LCAyMzkxMSwgMjM5MTUsIDIzOTIxLCAyMzkyNSwgMjM5MzEsIDIzOTM1LCAyMzk0MSwgMjM5NDUsIDIzOTUxLCAKKyAgICAyMzk1NywgMjM5NjEsIDIzOTY3LCAyMzk3MiwgMjM5NzYsIDIzOTgwLCAyMzk4NCwgMjM5ODgsIDIzOTkxLCAyMzk5NSwgCisgICAgMjQwMDEsIDI0MDA2LCAyNDAxMSwgMjQwMTUsIDI0MDE5LCAyNDAyMywgMjQwMjksIDI0MDMzLCAyNDAzOSwgMjQwNDMsIAorICAgIDI0MDQ5LCAyNDA1MiwgMjQwNTcsIDI0MDYxLCAyNDA2NywgMjQwNzEsIDI0MDc3LCAyNDA4MSwgMjQwODcsIDI0MDkzLCAKKyAgICAyNDA5NywgMjQxMDEsIDI0MTA1LCAyNDEwOSwgMjQxMTMsIDI0MTE3LCAyNDEyMSwgMjQxMjUsIDI0MTI5LCAyNDEzMywgCisgICAgMjQxMzcsIDI0MTQzLCAyNDE0NiwgMjQxNTAsIDI0MTU0LCAyNDE2MCwgMjQxNjQsIDI0MTcwLCAyNDE3NCwgMjQxODAsIAorICAgIDI0MTg0LCAyNDE5MCwgMjQxOTQsIDI0MjAwLCAyNDIwNCwgMjQyMTAsIDI0MjE0LCAyNDIyMCwgMjQyMjYsIDI0MjMwLCAKKyAgICAyNDIzNCwgMjQyNDAsIDI0MjQ2LCAyNDI1MiwgMjQyNTgsIDI0MjYyLCAyNDI2NiwgMjQyNzAsIDI0Mjc0LCAyNDI3OCwgCisgICAgMjQyODIsIDI0Mjg4LCAyNDI5MiwgMjQyOTYsIDI0MzAwLCAyNDMwNiwgMjQzMTAsIDI0MzE2LCAyNDMyMCwgMjQzMjYsIAorICAgIDI0MzMwLCAyNDMzNiwgMjQzNDAsIDI0MzQ2LCAyNDM1MCwgMjQzNTYsIDI0MzYwLCAyNDM2NiwgMjQzNzIsIDI0Mzc2LCAKKyAgICAyNDM4MiwgMjQzODYsIDI0MzkwLCAyNDM5NCwgMjQzOTgsIDI0NDAyLCAyNDQwNiwgMjQ0MTIsIDI0NDE1LCAyNDQxOSwgCisgICAgMjQ0MjMsIDI0NDI5LCAyNDQzMywgMjQ0MzksIDI0NDQzLCAyNDQ0OSwgMjQ0NTMsIDI0NDU5LCAyNDQ2MywgMjQ0NjksIAorICAgIDI0NDczLCAyNDQ3OSwgMjQ0ODMsIDI0NDg5LCAyNDQ5NSwgMjQ0OTksIDI0NTA1LCAyNDUwOSwgMjQ1MTUsIDI0NTIxLCAKKyAgICAyNDUyNSwgMjQ1MjksIDI0NTMzLCAyNDUzNywgMjQ1NDEsIDI0NTQ1LCAyNDU1MSwgMjQ1NTQsIDI0NTU4LCAyNDU2MiwgCisgICAgMjQ1NjgsIDI0NTcyLCAyNDU3OCwgMjQ1ODIsIDI0NTg4LCAyNDU5NCwgMjQ1OTgsIDI0NjAzLCAyNDYwNywgMjQ2MTEsIAorICAgIDI0NjE1LCAyNDYxOSwgMjQ2MjMsIDI0NjI3LCAyNDYzMSwgMjQ2MzcsIDI0NjQwLCAyNDY0NCwgMjQ2NDgsIDI0NjU0LCAKKyAgICAyNDY1OCwgMjQ2NjQsIDI0NjY4LCAyNDY3NCwgMjQ2NzgsIDI0Njg0LCAyNDY4OCwgMjQ2OTQsIDI0Njk4LCAyNDcwNCwgCisgICAgMjQ3MDgsIDI0NzE0LCAyNDcxNywgMjQ3MjIsIDI0NzI2LCAyNDczMCwgMjQ3MzQsIDI0NzM4LCAyNDc0MiwgMjQ3NDYsIAorICAgIDI0NzUwLCAyNDc1NiwgMjQ3NjAsIDI0NzY0LCAyNDc2OCwgMjQ3NzQsIDI0Nzc4LCAyNDc4NCwgMjQ3ODgsIDI0Nzk0LCAKKyAgICAyNDc5OCwgMjQ4MDQsIDI0ODA4LCAyNDgxNCwgMjQ4MTgsIDI0ODI0LCAyNDgyOCwgMjQ4MzQsIDI0ODQwLCAyNDg0NCwgCisgICAgMjQ4NTAsIDI0ODU0LCAyNDg2MCwgMjQ4NjYsIDI0ODcyLCAyNDg3OCwgMjQ4ODQsIDI0ODkwLCAyNDg5NiwgMjQ5MDIsIAorICAgIDI0OTA2LCAyNDkxMCwgMjQ5MTQsIDI0OTE4LCAyNDkyMiwgMjQ5MjYsIDI0OTMwLCAyNDkzNCwgMjQ5NDAsIDI0OTQ0LCAKKyAgICAyNDk1MCwgMjQ5NTQsIDI0OTYwLCAyNDk2NCwgMjQ5NzAsIDI0OTc0LCAyNDk4MCwgMjQ5ODQsIDI0OTkwLCAyNDk5NCwgCisgICAgMjUwMDAsIDI1MDA0LCAyNTAwOCwgMjUwMTIsIDI1MDE2LCAyNTAyMCwgMjUwMjQsIDI1MDI4LCAyNTAzNCwgMjUwMzcsIAorICAgIDI1MDQxLCAyNTA0NSwgMjUwNTEsIDI1MDU1LCAyNTA2MSwgMjUwNjUsIDI1MDcxLCAyNTA3NSwgMjUwODEsIDI1MDg1LCAKKyAgICAyNTA5MSwgMjUwOTUsIDI1MTAxLCAyNTEwNSwgMjUxMTEsIDI1MTE3LCAyNTEyMSwgMjUxMjcsIDI1MTMzLCAyNTEzOSwgCisgICAgMjUxNDMsIDI1MTQ5LCAyNTE1NSwgMjUxNTksIDI1MTYzLCAyNTE2NywgMjUxNzEsIDI1MTc1LCAyNTE4MSwgMjUxODUsIAorICAgIDI1MTg5LCAyNTE5NCwgMjUxOTgsIDI1MjA0LCAyNTIwNywgMjUyMTIsIDI1MjE2LCAyNTIyMCwgMjUyMjQsIDI1MjI4LCAKKyAgICAyNTIzMiwgMjUyMzYsIDI1MjQwLCAyNTI0NCwgMjUyNDgsIDI1MjUyLCAyNTI1OCwgMjUyNjIsIDI1MjY2LCAyNTI3MiwgCisgICAgMjUyNzYsIDI1MjgyLCAyNTI4NiwgMjUyOTIsIDI1Mjk2LCAyNTMwMCwgMjUzMDQsIDI1MzA4LCAyNTMxMiwgMjUzMTgsIAorICAgIDI1MzIyLCAyNTMyNiwgMjUzMzAsIDI1MzM0LCAyNTMzOCwgMjUzNDIsIDI1MzQ2LCAyNTM1MCwgMjUzNTQsIDI1MzU4LCAKKyAgICAyNTM2NCwgMjUzNzAsIDI1Mzc2LCAyNTM4MiwgMjUzODgsIDI1MzkzLCAyNTM5OSwgMjU0MDUsIDI1NDExLCAyNTQxNSwgCisgICAgMjU0MTksIDI1NDIzLCAyNTQyNywgMjU0MzEsIDI1NDM1LCAyNTQzOSwgMjU0NDMsIDI1NDQ3LCAyNTQ1MSwgMjU0NTUsIAorICAgIDI1NDU5LCAyNTQ2MywgMjU0NjksIDI1NDc1LCAyNTQ4MSwgMjU0ODcsIDI1NDkxLCAyNTQ5NSwgMjU0OTksIDI1NTAzLCAKKyAgICAyNTUwNywgMjU1MTEsIDI1NTE1LCAyNTUxOSwgMjU1MjMsIDI1NTI5LCAyNTUzNSwgMjU1NDEsIDI1NTQ3LCAyNTU1MywgCisgICAgMjU1NTksIDI1NTY1LCAyNTU3MSwgMjU1NzcsIDI1NTgxLCAyNTU4NSwgMjU1ODksIDI1NTkzLCAyNTU5NywgMjU2MDEsIAorICAgIDI1NjA1LCAyNTYxMSwgMjU2MTcsIDI1NjIzLCAyNTYyOSwgMjU2MzUsIDI1NjQxLCAyNTY0NywgMjU2NTMsIDI1NjU5LCAKKyAgICAyNTY2NCwgMjU2NjksIDI1Njc0LCAyNTY3OSwgMjU2ODUsIDI1NjkxLCAyNTY5NywgMjU3MDMsIDI1NzA5LCAyNTcxNSwgCisgICAgMjU3MjEsIDI1NzI2LCAyNTczMiwgMjU3MzgsIDI1NzQ0LCAyNTc0OSwgMjU3NTUsIDI1NzYxLCAyNTc2NywgMjU3NzIsIAorICAgIDI1Nzc3LCAyNTc4MiwgMjU3ODcsIDI1NzkyLCAyNTc5NywgMjU4MDIsIDI1ODA3LCAyNTgxMiwgMjU4MTcsIDI1ODIyLCAKKyAgICAyNTgyNywgMjU4MzIsIDI1ODM3LCAyNTg0MiwgMjU4NDcsIDI1ODUyLCAyNTg1NywgMjU4NjIsIDI1ODY3LCAyNTg3MiwgCisgICAgMjU4NzcsIDI1ODgyLCAyNTg4NywgMjU4OTIsIDI1ODk3LCAyNTkwMiwgMjU5MDcsIDI1OTEyLCAyNTkxNywgMjU5MjIsIAorICAgIDI1OTI3LCAyNTkzMiwgMjU5MzcsIDI1OTQyLCAyNTk0NywgMjU5NTIsIDI1OTU3LCAyNTk2MiwgMjU5NjcsIDI1OTcyLCAKKyAgICAyNTk3NywgMjU5ODEsIDI1OTg2LCAyNTk5MSwgMjU5OTYsIDI2MDAxLCAyNjAwNiwgMjYwMTEsIDI2MDE2LCAyNjAyMSwgCisgICAgMjYwMjYsIDI2MDMxLCAyNjAzNiwgMjYwNDEsIDI2MDQ2LCAyNjA1MSwgMjYwNTYsIDI2MDYxLCAyNjA2NiwgMjYwNzEsIAorICAgIDI2MDc2LCAyNjA4MSwgMjYwODYsIDI2MDkxLCAyNjA5NiwgMjYxMDEsIDI2MTA2LCAyNjExMCwgMjYxMTUsIDI2MTIwLCAKKyAgICAyNjEyNSwgMjYxMzAsIDI2MTM1LCAyNjEzOSwgMjYxNDQsIDI2MTQ5LCAyNjE1NCwgMjYxNTksIDI2MTY0LCAyNjE2OCwgCisgICAgMjYxNzMsIDI2MTc5LCAyNjE4NCwgMjYxODksIDI2MTk0LCAyNjE5OSwgMjYyMDUsIDI2MjEwLCAyNjIxNSwgMjYyMjAsIAorICAgIDI2MjI1LCAyNjIzMCwgMjYyMzUsIDI2MjQwLCAyNjI0NSwgMjYyNTAsIDI2MjU1LCAyNjI2MCwgMjYyNjUsIDI2MjY5LCAKKyAgICAyNjI3NCwgMjYyNzksIDI2Mjg0LCAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzE0LCAyNjMxOSwgCisgICAgMjYzMjQsIDI2MzI5LCAyNjMzNCwgMjYzMzksIDI2MzQ0LCAyNjM0OSwgMjYzNTQsIDI2MzU5LCAyNjM2NCwgMjYzNjksIAorICAgIDI2Mzc0LCAyNjM3OSwgMjYzODQsIDI2Mzg5LCAyNjM5NCwgMjYzOTksIDI2NDA0LCAyNjQwOSwgMjY0MTQsIDI2NDE5LCAKKyAgICAyNjQyNCwgMjY0MzAsIDI2NDM1LCAyNjQ0MCwgMjY0NDUsIDI2NDUwLCAyNjQ1NSwgMjY0NjAsIDI2NDY1LCAyNjQ3MCwgCisgICAgMjY0NzUsIDI2NDgwLCAyNjQ4NSwgMjY0OTAsIDI2NDk1LCAyNjUwMCwgMjY1MDUsIDI2NTEwLCAyNjUxNSwgMjY1MjAsIAorICAgIDI2NTI1LCAyNjUzMCwgMjY1MzUsIDI2NTQwLCAyNjU0NSwgMjY1NTAsIDI2NTU1LCAyNjU2MCwgMjY1NjUsIDI2NTcwLCAKKyAgICAyNjU3NSwgMjY1ODAsIDI2NTg1LCAyNjU5MCwgMjY1OTUsIDI2NjAwLCAyNjYwNSwgMjY2MTAsIDI2NjE1LCAyNjYyMCwgCisgICAgMjY2MjYsIDI2NjMwLCAyNjYzNCwgMjY2MzgsIDI2NjQyLCAyNjY0NiwgMjY2NTAsIDI2NjU0LCAyNjY1OCwgMjY2NjQsIAorICAgIDI2NjcwLCAyNjY3NiwgMjY2ODIsIDI2Njg4LCAyNjY5NCwgMjY3MDAsIDI2NzA3LCAyNjcxMywgMjY3MTgsIDI2NzIzLCAKKyAgICAyNjcyOCwgMjY3MzMsIDI2NzM4LCAyNjc0MywgMjY3NDgsIDI2NzUzLCAyNjc1OCwgMjY3NjMsIDI2NzY4LCAyNjc3MywgCisgICAgMjY3NzgsIDI2NzgzLCAyNjc4OCwgMjY3OTMsIDI2Nzk4LCAyNjgwMywgMjY4MDgsIDI2ODEzLCAyNjgxOCwgMjY4MjMsIAorICAgIDI2ODI4LCAyNjgzMywgMjY4MzgsIDI2ODQzLCAyNjg0OCwgMjY4NTMsIDAsIDAsIDAsIDI2ODYwLCAyNjg3MSwgMjY4NzYsIAorICAgIDI2ODg0LCAyNjg4OSwgMjY4OTQsIDI2ODk5LCAyNjkwOCwgMjY5MTMsIDI2OTE5LCAyNjkyNSwgMjY5MzEsIDI2OTM2LCAKKyAgICAyNjk0MiwgMjY5NDgsIDI2OTUyLCAyNjk1NywgMjY5NjIsIDI2OTcyLCAyNjk3NywgMjY5ODIsIDI2OTg5LCAyNjk5NCwgCisgICAgMjY5OTksIDI3MDA4LCAyNzAxMywgMjcwMjIsIDI3MDI5LCAyNzAzNiwgMjcwNDMsIDI3MDUwLCAyNzA2MSwgMjcwNjgsIAorICAgIDI3MDczLCAyNzA4MywgMjcwODcsIDI3MDk0LCAyNzA5OSwgMjcxMDYsIDI3MTEyLCAyNzExOSwgMjcxMjgsIDI3MTM1LCAKKyAgICAyNzE0MiwgMjcxNTEsIDI3MTU4LCAyNzE2MywgMjcxNjgsIDI3MTc5LCAyNzE4NiwgMjcxOTEsIDI3MjAyLCAyNzIwOSwgCisgICAgMjcyMTQsIDI3MjE5LCAyNzIyNywgMjcyMzYsIDI3MjQzLCAyNzI1MCwgMjcyNjAsIDI3MjY1LCAyNzI3MCwgMjcyNzUsIAorICAgIDI3Mjg0LCAyNzI5MiwgMjcyOTcsIDI3MzAyLCAyNzMwNywgMjczMTIsIDI3MzE3LCAyNzMyMiwgMjczMjcsIDI3MzMyLCAKKyAgICAyNzMzNywgMjczNDIsIDI3MzQ3LCAyNzM1MywgMjczNTksIDI3MzY1LCAyNzM3MCwgMjczNzUsIDI3MzgwLCAyNzM4NSwgCisgICAgMjczOTAsIDI3Mzk1LCAyNzQwNCwgMjc0MTMsIDI3NDIyLCAyNzQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc0NDAsIAorICAgIDI3NDQ0LCAyNzQ0OCwgMjc0NTIsIDI3NDU2LCAyNzQ2MSwgMjc0NjYsIDI3NDcxLCAyNzQ3NiwgMjc0ODAsIDI3NDg0LCAKKyAgICAyNzQ4OSwgMjc0OTMsIDAsIDI3NDk3LCAyNzUwMSwgMjc1MDYsIDI3NTExLCAyNzUxNSwgMjc1MjAsIDI3NTI1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUzMCwgMjc1MzQsIDI3NTM4LCAyNzU0MiwgMjc1NDYsIDI3NTUxLCAKKyAgICAyNzU1NiwgMjc1NjEsIDI3NTY2LCAyNzU3MCwgMjc1NzQsIDI3NTc5LCAyNzU4MywgMjc1ODcsIDI3NTkyLCAyNzU5NiwgCisgICAgMjc2MDEsIDI3NjA2LCAyNzYxMCwgMjc2MTUsIDI3NjIwLCAyNzYyNSwgMjc2MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3NjM2LCAyNzY0MCwgMjc2NDQsIDI3NjQ4LCAyNzY1MiwgMjc2NTcsIDI3NjYyLCAyNzY2NywgMjc2NzIsIDI3Njc2LCAKKyAgICAyNzY4MCwgMjc2ODUsIDI3Njg5LCAyNzY5MywgMjc2OTgsIDI3NzAyLCAyNzcwNywgMjc3MTIsIDI3NzE2LCAyNzcyMSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3MjYsIDI3NzMwLCAyNzczNCwgMjc3MzgsIDI3NzQyLCAKKyAgICAyNzc0NywgMjc3NTIsIDI3NzU3LCAyNzc2MiwgMjc3NjYsIDI3NzcwLCAyNzc3NSwgMjc3NzksIDAsIDI3NzgzLCAyNzc4NywgCisgICAgMjc3OTIsIDAsIDI3Nzk3LCAyNzgwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4MDcsIDI3ODEwLCAKKyAgICAyNzgxNCwgMjc4MTgsIDI3ODIyLCAyNzgyNiwgMjc4MzAsIDI3ODM0LCAyNzgzOCwgMjc4NDIsIDI3ODQ2LCAyNzg1MCwgCisgICAgMjc4NTQsIDI3ODU4LCAyNzg2MiwgMjc4NjYsIDI3ODcwLCAyNzg3NCwgMjc4NzcsIDI3ODgxLCAyNzg4NSwgMjc4ODksIAorICAgIDI3ODkzLCAyNzg5NywgMjc5MDEsIDI3OTA1LCAyNzkwOSwgMjc5MTMsIDI3OTE3LCAyNzkyMSwgMjc5MjUsIDI3OTI5LCAKKyAgICAyNzkzMywgMjc5MzYsIDI3OTM5LCAyNzk0MywgMjc5NDksIDI3OTU1LCAyNzk2MSwgMjc5NjcsIDI3OTczLCAyNzk3OSwgCisgICAgMjc5ODUsIDI3OTkxLCAyNzk5NywgMjgwMDMsIDI4MDA5LCAyODAxNSwgMjgwMjEsIDI4MDI3LCAyODAzNiwgMjgwNDUsIAorICAgIDI4MDUxLCAyODA1NywgMjgwNjMsIDI4MDY4LCAyODA3MiwgMjgwNzcsIDI4MDgyLCAyODA4NywgMjgwOTEsIDI4MDk2LCAKKyAgICAyODEwMSwgMjgxMDYsIDI4MTEwLCAyODExNSwgMjgxMTksIDI4MTI0LCAyODEyOSwgMjgxMzQsIDI4MTM5LCAyODE0MywgCisgICAgMjgxNDcsIDI4MTUxLCAyODE1NSwgMjgxNTksIDI4MTYzLCAyODE2NywgMjgxNzEsIDI4MTc1LCAyODE3OSwgMjgxODUsIAorICAgIDI4MTg5LCAyODE5MywgMjgxOTcsIDI4MjAxLCAyODIwNSwgMjgyMTMsIDI4MjE5LCAyODIyMywgMjgyMjksIDI4MjMzLCAKKyAgICAyODIzOSwgMjgyNDMsIDAsIDAsIDI4MjQ3LCAyODI1MSwgMjgyNTQsIDI4MjU3LCAyODI2MCwgMjgyNjMsIDI4MjY2LCAKKyAgICAyODI2OSwgMjgyNzMsIDI4Mjc2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODI4MCwgMjgyODgsIDI4Mjk2LCAyODMwNCwgMjgzMTIsIAorICAgIDI4MzIwLCAyODMyOCwgMjgzMzYsIDI4MzQ0LCAyODM1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMjgzNjAsIDI4MzYzLCAyODM2NiwgCisgICAgMjgzNjksIDI4Mzc0LCAyODM3NywgMjgzODIsIDI4Mzg5LCAyODM5NywgMjg0MDIsIDI4NDA5LCAyODQxMiwgMjg0MTksIAorICAgIDI4NDI2LCAyODQzMywgMCwgMjg0MzcsIDI4NDQxLCAyODQ0NCwgMjg0NDcsIDI4NDUwLCAyODQ1MywgMjg0NTYsIDI4NDU5LCAKKyAgICAyODQ2MywgMjg0NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDI4NDcwLCAyODQ3MywgMjg0NzYsIDI4NDc5LCAyODQ4MiwgMjg0ODUsIAorICAgIDI4NDg5LCAyODQ5MywgMjg0OTcsIDI4NTAwLCAyODUwNCwgMjg1MDgsIDI4NTExLCAyODUxNSwgMjg1MTksIDI4NTIyLCAKKyAgICAyODUyNSwgMjg1MjksIDI4NTMzLCAyODUzNywgMjg1NDEsIDI4NTQ1LCAyODU0OSwgMjg1NTIsIDI4NTU2LCAyODU2MCwgCisgICAgMjg1NjQsIDI4NTY3LCAyODU3MSwgMjg1NzUsIDI4NTc5LCAyODU4MywgMjg1ODcsIDI4NTkxLCAyODU5NSwgMjg1OTksIAorICAgIDI4NjA2LCAyODYxMSwgMjg2MTYsIDI4NjIxLCAyODYyNiwgMjg2MzIsIDI4NjM4LCAyODY0NCwgMjg2NTAsIDI4NjU1LCAKKyAgICAyODY2MSwgMjg2NjcsIDI4NjcyLCAyODY3OCwgMjg2ODQsIDI4NjkwLCAyODY5NiwgMjg3MDIsIDI4NzA3LCAyODcxMywgCisgICAgMjg3MTgsIDI4NzI0LCAyODczMCwgMjg3MzYsIDI4NzQyLCAyODc0OCwgMjg3NTMsIDI4NzU4LCAyODc2NCwgMjg3NzAsIAorICAgIDI4Nzc1LCAyODc4MSwgMjg3ODYsIDI4NzkyLCAyODc5NywgMjg4MDIsIDI4ODA4LCAyODgxNCwgMjg4MjAsIDI4ODI2LCAKKyAgICAyODgzMiwgMjg4MzgsIDI4ODQ0LCAyODg1MCwgMjg4NTYsIDI4ODYyLCAyODg2OCwgMjg4NzQsIDI4ODc5LCAyODg4NCwgCisgICAgMjg4OTAsIDI4ODk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODkwMiwgMjg5MTEsIDI4OTIwLCAyODkyOCwgMjg5MzYsIAorICAgIDI4OTQ2LCAyODk1NCwgMjg5NjMsIDI4OTcwLCAyODk3NywgMjg5ODQsIDI4OTkyLCAyOTAwMCwgMjkwMDgsIDI5MDE2LCAKKyAgICAyOTAyNCwgMjkwMzIsIDI5MDQwLCAyOTA0OCwgMjkwNTUsIDI5MDYzLCAyOTA3MSwgMjkwNzksIDI5MDg3LCAyOTA5NSwgCisgICAgMjkxMDUsIDI5MTE1LCAyOTEyNSwgMjkxMzUsIDI5MTQ1LCAyOTE1NSwgMjkxNjUsIDI5MTc1LCAyOTE4NSwgMjkxOTUsIAorICAgIDI5MjA1LCAyOTIxNSwgMjkyMjUsIDI5MjM1LCAyOTI0MywgMjkyNTEsIDI5MjYxLCAyOTI2OSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjkyNzksIDI5MjgzLCAyOTI4NywgMjkyOTEsIDI5Mjk1LCAyOTI5OSwgMjkzMDMsIDI5MzA3LCAyOTMxMSwgMjkzMTUsIAorICAgIDI5MzE5LCAyOTMyMywgMjkzMjcsIDI5MzMxLCAyOTMzNSwgMjkzMzksIDI5MzQzLCAyOTM0NywgMjkzNTEsIDI5MzU1LCAKKyAgICAyOTM1OSwgMjkzNjMsIDI5MzY3LCAyOTM3MSwgMjkzNzcsIDI5MzgxLCAyOTM4NywgMjkzOTEsIDI5Mzk3LCAyOTQwMSwgCisgICAgMjk0MDcsIDI5NDExLCAyOTQxNSwgMjk0MTksIDI5NDIzLCAyOTQyNywgMjk0MzEsIDI5NDM3LCAyOTQ0MywgMjk0NDksIAorICAgIDI5NDU1LCAyOTQ2MSwgMjk0NjcsIDI5NDczLCAyOTQ3OSwgMjk0ODUsIDI5NDkxLCAyOTQ5NywgMjk1MDQsIDI5NTEwLCAKKyAgICAyOTUxNiwgMjk1MjIsIDI5NTI2LCAyOTUzMCwgMjk1MzQsIDI5NTM4LCAyOTU0MiwgMjk1NDYsIDI5NTUwLCAyOTU1NiwgCisgICAgMjk1NjIsIDI5NTY4LCAyOTU3MywgMjk1ODAsIDI5NTg1LCAyOTU5MCwgMjk1OTYsIDI5NjAxLCAyOTYwOCwgMjk2MTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NjIyLCAyOTYyOCwgMjk2MzIsIDI5NjM3LCAyOTY0MiwgMjk2NDcsIAorICAgIDI5NjUyLCAyOTY1NywgMjk2NjIsIDI5NjY3LCAyOTY3MiwgMjk2NzcsIDI5NjgyLCAyOTY4NywgMjk2OTIsIDI5Njk3LCAKKyAgICAyOTcwMSwgMjk3MDUsIDI5NzEwLCAyOTcxNSwgMjk3MjAsIDI5NzI0LCAyOTcyOCwgMjk3MzMsIDI5NzM3LCAyOTc0MiwgCisgICAgMjk3NDcsIDI5NzUyLCAyOTc1NywgMjk3NjEsIDI5NzY2LCAwLCAyOTc3MSwgMjk3NzYsIDI5NzgxLCAyOTc4NiwgMjk3OTIsIAorICAgIDI5Nzk4LCAyOTgwNCwgMjk4MTAsIDI5ODE1LCAyOTgyMCwgMjk4MjYsIDI5ODMzLCAwLCAwLCAwLCAwLCAyOTg0MCwgCisgICAgMjk4NDUsIDI5ODUxLCAyOTg1NywgMjk4NjMsIDI5ODY4LCAyOTg3MywgMjk4NzgsIDI5ODg0LCAyOTg4OSwgMjk4OTQsIAorICAgIDI5ODk5LCAwLCAwLCAwLCAwLCAyOTkwNCwgMCwgMCwgMCwgMjk5MDksIDI5OTE0LCAyOTkxOSwgMjk5MjQsIDI5OTI4LCAKKyAgICAyOTkzMiwgMjk5MzYsIDI5OTQwLCAyOTk0NCwgMjk5NDgsIDI5OTUzLCAyOTk1NywgMjk5NjIsIDI5OTY3LCAyOTk3MywgCisgICAgMjk5NzksIDI5OTg1LCAyOTk5MSwgMjk5OTYsIDMwMDAyLCAzMDAwOCwgMzAwMTMsIDMwMDE4LCAzMDAyNCwgMzAwMjksIAorICAgIDMwMDM1LCAzMDA0MSwgMzAwNDYsIDMwMDUyLCAzMDA1OCwgMzAwNjQsIDMwMDY5LCAzMDA3NCwgMzAwNzksIDMwMDg1LCAKKyAgICAzMDA5MSwgMzAwOTYsIDMwMTAyLCAzMDEwNywgMzAxMTMsIDMwMTE4LCAzMDEyNCwgMCwgMCwgMzAxMzAsIDMwMTM2LCAKKyAgICAzMDE0MiwgMzAxNDgsIDMwMTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDE2MCwgMzAxNjksIAorICAgIDMwMTc4LCAzMDE4NiwgMzAxOTUsIDMwMjA0LCAzMDIxMiwgMzAyMjEsIDMwMjMwLCAzMDIzOSwgMzAyNDgsIDMwMjU2LCAKKyAgICAzMDI2NSwgMzAyNzQsIDMwMjgyLCAzMDI5MSwgMzAzMDAsIDMwMzA4LCAzMDMxNywgMzAzMjYsIDMwMzM0LCAzMDM0MiwgCisgICAgMzAzNTEsIDMwMzU5LCAzMDM2NywgMzAzNzYsIDMwMzg0LCAzMDM5MywgMzA0MDIsIDMwNDEwLCAzMDQxOSwgMzA0MjgsIAorICAgIDMwNDM2LCAzMDQ0NCwgMzA0NTMsIDMwNDYyLCAzMDQ3MCwgMzA0NzksIDMwNDg4LCAzMDQ5NywgMzA1MDYsIDMwNTE1LCAKKyAgICAzMDUyNCwgMzA1MzMsIDAsIDAsIDAsIDAsIDMwNTQyLCAzMDU1MiwgMzA1NjEsIDMwNTcwLCAzMDU3OCwgMzA1ODcsIAorICAgIDMwNTk1LCAzMDYwNCwgMzA2MTIsIDMwNjIxLCAzMDYzMCwgMzA2MzksIDMwNjQ4LCAzMDY1NywgMzA2NjYsIDMwNjc1LCAKKyAgICAzMDY4NCwgMzA2OTMsIDMwNzAyLCAzMDcxMSwgMzA3MjAsIDMwNzI5LCAzMDczOCwgMzA3NDcsIDMwNzU2LCAzMDc2NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzA3NzIsIDMwNzgwLCAzMDc4NywgMzA3OTQsIDMwODAxLCAzMDgwOCwgMzA4MTUsIDMwODIyLCAKKyAgICAzMDgzMCwgMzA4MzcsIDMwODQ1LCAwLCAwLCAwLCAzMDg1MywgMzA4NjEsIDMwODY5LCAzMDg3MywgMzA4NzksIDMwODg1LCAKKyAgICAzMDg5MSwgMzA4OTcsIDMwOTAzLCAzMDkwOSwgMzA5MTUsIDMwOTIxLCAzMDkyNywgMzA5MzMsIDMwOTM5LCAzMDk0NSwgCisgICAgMzA5NTEsIDMwOTU3LCAzMDk2MywgMzA5NjcsIDMwOTczLCAzMDk3OSwgMzA5ODUsIDMwOTkxLCAzMDk5NywgMzEwMDMsIAorICAgIDMxMDA5LCAzMTAxNSwgMzEwMjEsIDMxMDI3LCAzMTAzMywgMzEwMzksIDMxMDQ1LCAzMTA1MSwgMzEwNTcsIDMxMDYxLCAKKyAgICAzMTA2NiwgMzEwNzEsIDMxMDc2LCAzMTA4MCwgMzEwODUsIDMxMDg5LCAzMTA5NCwgMzEwOTksIDMxMTA0LCAzMTEwOCwgCisgICAgMzExMTMsIDMxMTE4LCAzMTEyMywgMzExMjgsIDMxMTMzLCAzMTEzNywgMzExNDIsIDMxMTQ2LCAzMTE1MSwgMzExNTYsIAorICAgIDMxMTYwLCAzMTE2NCwgMzExNjksIDMxMTc0LCAzMTE3OSwgMzExODQsIDAsIDAsIDMxMTkwLCAzMTE5NCwgMzEyMDEsIAorICAgIDMxMjA2LCAzMTIxMiwgMzEyMTgsIDMxMjIzLCAzMTIyOSwgMzEyMzUsIDMxMjQwLCAzMTI0NiwgMzEyNTIsIDMxMjU4LCAKKyAgICAzMTI2NCwgMzEyNzAsIDMxMjc1LCAzMTI4MCwgMzEyODYsIDMxMjkxLCAzMTI5NywgMzEzMDIsIDMxMzA4LCAzMTMxNCwgCisgICAgMzEzMjAsIDMxMzI2LCAzMTMzMCwgMzEzMzUsIDMxMzQwLCAzMTM0NiwgMzEzNTIsIDMxMzU3LCAzMTM2MywgMzEzNjksIAorICAgIDMxMzczLCAzMTM3OCwgMzEzODMsIDMxMzg4LCAzMTM5MywgMzEzOTcsIDMxNDAyLCAzMTQwNywgMzE0MTMsIDMxNDE5LCAKKyAgICAzMTQyNSwgMzE0MzAsIDMxNDM1LCAzMTQzOSwgMzE0NDQsIDMxNDQ4LCAzMTQ1MywgMzE0NTcsIDMxNDYyLCAzMTQ2NywgCisgICAgMzE0NzIsIDMxNDc3LCAzMTQ4NCwgMzE0OTEsIDMxNDk3LCAzMTUwNywgMzE1MTYsIDMxNTIzLCAzMTUyOSwgMzE1NDAsIAorICAgIDMxNTQ1LCAzMTU1MSwgMCwgMzE1NTcsIDMxNTYyLCAzMTU2NywgMzE1NzUsIDMxNTgxLCAzMTU4OSwgMzE1OTQsIDMxNjAwLCAKKyAgICAzMTYwNiwgMzE2MTIsIDMxNjE3LCAzMTYyMywgMzE2MjgsIDMxNjM1LCAzMTY0MSwgMzE2NDYsIDMxNjUyLCAzMTY1OCwgCisgICAgMzE2NjQsIDMxNjcxLCAzMTY3OCwgMzE2ODUsIDMxNjkwLCAzMTY5NSwgMzE3MDIsIDMxNzA5LCAzMTcxNiwgMzE3MjMsIAorICAgIDMxNzMwLCAwLCAwLCAzMTczNywgMzE3NDQsIDMxNzUxLCAzMTc1NywgMzE3NjMsIDMxNzY5LCAzMTc3NSwgMzE3ODEsIAorICAgIDMxNzg3LCAzMTc5NCwgMzE4MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxODA3LCAzMTgxMywgMzE4MTgsIDMxODIzLCAzMTgyOCwgCisgICAgMzE4MzMsIDMxODM4LCAzMTg0MywgMzE4NDksIDMxODU0LCAwLCAwLCAwLCAwLCAwLCAwLCAzMTg2MCwgMzE4NjUsIDMxODcwLCAKKyAgICAzMTg3NSwgMzE4ODAsIDMxODg1LCAzMTg5MCwgMzE4OTksIDMxOTA2LCAzMTkxMSwgMzE5MTYsIDMxOTIxLCAzMTkyNiwgCisgICAgMzE5MzEsIDAsIDAsIDMxOTM2LCAzMTk0MywgMzE5NDYsIDMxOTQ5LCAzMTk1MiwgMzE5NTcsIDMxOTYxLCAzMTk2NywgCisgICAgMzE5NzEsIDMxOTc2LCAzMTk4MywgMzE5OTEsIDMxOTk1LCAzMjAwMCwgMzIwMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjQ4LCAxMjI1NywgMTIyNjUsIAotICAgIDEyMjcyLCAxMjI4MCwgMTIyOTIsIDEyMjk5LCAxMjMwNiwgMTIzMTMsIDEyMzI1LCAxMjMzNiwgMTIzNDMsIDEyMzUxLCAKLSAgICAxMjM1NywgMTIzNjIsIDEyMzcwLCAxMjM3OCwgMTIzODYsIDEyMzkyLCAxMjQwMiwgMTI0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMDA5LCAzMjAxNSwgMzIwMjEsIDMyMDI1LCAzMjAyOSwgMzIwMzMsIAorICAgIDMyMDM3LCAzMjA0MywgMzIwNDcsIDMyMDUzLCAzMjA1NywgMzIwNjMsIDMyMDY5LCAzMjA3NywgMzIwODMsIDMyMDkxLCAKKyAgICAzMjA5NSwgMzIwOTksIDMyMTAzLCAzMjEwOSwgMzIxMTIsIDMyMTE4LCAzMjEyMiwgMzIxMjgsIDMyMTMyLCAzMjEzNiwgCisgICAgMzIxNDIsIDMyMTQ2LCAzMjE1MiwgMzIxNTYsIDMyMTYyLCAzMjE3MCwgMzIxNzgsIDMyMTg2LCAzMjE5MiwgMzIxOTYsIAorICAgIDMyMjAyLCAzMjIwNiwgMzIyMTIsIDMyMjE1LCAzMjIxOCwgMzIyMjQsIDMyMjI4LCAzMjIzNCwgMzIyMzcsIDMyMjQwLCAKKyAgICAzMjI0NCwgMzIyNDcsIDMyMjUxLCAzMjI1NywgMzIyNjMsIDMyMjY3LCAzMjI3MCwgMzIyNzQsIDMyMjc5LCAzMjI4NCwgCisgICAgMzIyOTEsIDMyMjk2LCAzMjMwMywgMzIzMTAsIDMyMzE5LCAzMjMyNiwgMzIzMzUsIDMyMzQwLCAzMjM0NywgMzIzNTQsIAorICAgIDMyMzYzLCAzMjM2OCwgMzIzNzUsIDMyMzgwLCAzMjM4NiwgMzIzOTIsIDMyMzk4LCAzMjQwNCwgMzI0MTAsIDMyNDE2LCAwLCAKKyAgICAwLCAwLCAwLCAzMjQyMiwgMzI0MjYsIDMyNDI5LCAzMjQzMiwgMzI0MzUsIDMyNDM4LCAzMjQ0MSwgMzI0NDQsIDMyNDQ4LCAKKyAgICAzMjQ1MSwgMzI0NTUsIDMyNDU4LCAzMjQ2MSwgMzI0NjQsIDMyNDY5LCAzMjQ3NCwgMzI0NzksIDMyNDgyLCAzMjQ4NywgCisgICAgMzI0OTIsIDMyNDk3LCAzMjUwMiwgMzI1MDksIDMyNTE0LCAzMjUxOSwgMzI1MjQsIDMyNTI5LCAzMjUzNiwgMzI1NDIsIAorICAgIDMyNTQ4LCAzMjU1NCwgMzI1NjAsIDMyNTY2LCAzMjU3NSwgMzI1ODQsIDMyNTkwLCAzMjU5NiwgMzI2MDQsIDMyNjEyLCAKKyAgICAzMjYyMSwgMzI2MzAsIDMyNjM4LCAzMjY0NiwgMzI2NTUsIDMyNjY0LCAwLCAwLCAwLCAzMjY3MiwgMzI2NzcsIDMyNjgyLCAKKyAgICAzMjY4NywgMzI2OTEsIDMyNjk1LCAzMjY5OSwgMzI3MDQsIDMyNzA4LCAzMjcxMiwgMzI3MTcsIDMyNzIxLCAzMjcyNiwgCisgICAgMzI3MzEsIDMyNzM2LCAzMjc0MSwgMzI3NDYsIDMyNzUxLCAzMjc1NiwgMzI3NjEsIDMyNzY2LCAzMjc3MCwgMzI3NzQsIAorICAgIDMyNzc5LCAzMjc4NCwgMzI3ODksIDMyNzkzLCAzMjc5NywgMzI4MDIsIDMyODA2LCAzMjgxMSwgMzI4MTYsIDMyODIxLCAKKyAgICAzMjgyNSwgMzI4MzEsIDMyODM3LCAzMjg0MywgMzI4NDksIDMyODU1LCAzMjg2MSwgMzI4NjcsIDMyODczLCAzMjg3OSwgCisgICAgMzI4ODQsIDMyODg5LCAzMjg5NiwgMzI5MDQsIDMyOTA5LCAzMjkxNCwgMzI5MTksIDMyOTIzLCAzMjkyNywgMzI5MzEsIAorICAgIDMyOTM1LCAzMjkzOSwgMzI5NDMsIDMyOTQ4LCAzMjk1MiwgMzI5NTcsIDMyOTYxLCAzMjk2NiwgMzI5NzEsIDMyOTc2LCAKKyAgICAzMjk4MiwgMzI5ODgsIDMyOTkyLCAzMjk5OCwgMzMwMDIsIDMzMDA4LCAzMzAxNCwgMzMwMTksIDMzMDI2LCAzMzAzMCwgCisgICAgMzMwMzYsIDMzMDQwLCAzMzA0NiwgMzMwNTEsIDMzMDU4LCAzMzA2NSwgMzMwNzAsIDMzMDc3LCAzMzA4MiwgMzMwODcsIAorICAgIDMzMDkyLCAzMzA5OSwgMzMxMDMsIDMzMTA5LCAzMzExNiwgMzMxMjMsIDMzMTI4LCAzMzEzNSwgMzMxNDIsIDMzMTQ2LCAKKyAgICAzMzE1MiwgMzMxNTcsIDMzMTYxLCAzMzE2NywgMzMxNzIsIDMzMTc3LCAzMzE4MiwgMzMxODcsIDMzMTkxLCAzMzE5NSwgCisgICAgMzMyMDAsIDMzMjA1LCAzMzIxMiwgMzMyMTgsIDMzMjIzLCAzMzIzMCwgMzMyMzUsIDMzMjQyLCAzMzI0NywgMzMyNTcsIAorICAgIDMzMjYzLCAzMzI2OSwgMzMyNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMjc3LCAzMzI4NiwgMzMyOTMsIDMzMzAwLCAKKyAgICAzMzMwNywgMzMzMTEsIDMzMzE2LCAzMzMyMSwgMzMzMjYsIDMzMzMxLCAzMzMzNiwgMzMzNDEsIDMzMzQ2LCAzMzM1MSwgCisgICAgMzMzNTYsIDMzMzYxLCAzMzM2NiwgMzMzNzEsIDMzMzc1LCAzMzM3OSwgMzMzODQsIDMzMzg5LCAzMzM5NCwgMzMzOTksIAorICAgIDMzNDA0LCAzMzQwOSwgMzM0MTMsIDMzNDE4LCAzMzQyMywgMzM0MjgsIDMzNDMzLCAzMzQzNywgMzM0NDIsIDMzNDQ2LCAKKyAgICAzMzQ1MCwgMzM0NTUsIDMzNDYwLCAzMzQ2NSwgMzM0NzAsIDMzNDc1LCAzMzQ3OSwgMzM0ODUsIDMzNDkyLCAzMzQ5OCwgCisgICAgMzM1MDMsIDMzNTA4LCAzMzUxNCwgMzM1MTksIDMzNTI1LCAzMzUzMCwgMzM1MzYsIDMzNTQyLCAzMzU0NywgMzM1NTMsIAorICAgIDMzNTU5LCAzMzU2NCwgMzM1NzAsIDMzNTc2LCAzMzU4MiwgMzM1ODcsIDAsIDAsIDAsIDMzNTkyLCAzMzU5OCwgMzM2MDgsIAorICAgIDMzNjE0LCAzMzYyMiwgMzM2MjgsIDMzNjMzLCAzMzYzNywgMzM2NDEsIDMzNjQ1LCAzMzY0OSwgMzM2NTMsIDMzNjU3LCAKKyAgICAzMzY2MiwgMzM2NjYsIDAsIDAsIDAsIDMzNjcxLCAzMzY3NiwgMzM2ODEsIDMzNjg2LCAzMzY5MywgMzM2OTksIDMzNzA1LCAKKyAgICAzMzcxMSwgMzM3MTcsIDMzNzIzLCAzMzcyOSwgMzM3MzYsIDMzNzQyLCAzMzc0OSwgMzM3NTUsIDMzNzYyLCAzMzc2OSwgCisgICAgMzM3NzYsIDMzNzgzLCAzMzc5MCwgMzM3OTcsIDMzODA0LCAzMzgxMSwgMzM4MTgsIDMzODI1LCAzMzgzMiwgMzM4MzksIAorICAgIDMzODQ2LCAzMzg1MywgMzM4NjAsIDMzODY3LCAzMzg3NCwgMzM4ODEsIDMzODg4LCAzMzg5NSwgMzM5MDIsIDMzOTA5LCAKKyAgICAzMzkxNiwgMzM5MjMsIDMzOTMwLCAzMzkzNywgMzM5NDQsIDMzOTUxLCAzMzk1OCwgMzM5NjYsIDMzOTc0LCAzMzk4MiwgCisgICAgMzM5ODgsIDMzOTk0LCAzNDAwMCwgMzQwMDgsIDM0MDE3LCAzNDAyNCwgMzQwMzEsIDM0MDM3LCAzNDA0NCwgMzQwNTEsIAorICAgIDM0MDU4LCAzNDA2NiwgMzQwNzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDE3LCAxMjQyMywgMTI0MjgsIAotICAgIDEyNDMzLCAxMjQzOCwgMTI0NDMsIDEyNDQ4LCAxMjQ1MywgMTI0NTgsIDEyNDYzLCAxMjQ2OCwgMTI0NzMsIDEyNDc4LCAKLSAgICAxMjQ4MywgMTI0ODcsIDEyNDkxLCAxMjQ5NSwgMTI1MDAsIDEyNTA2LCAxMjUxMiwgMTI1MTgsIDEyNTIzLCAxMjUyOCwgCi0gICAgMTI1MzMsIDEyNTM4LCAxMjU0NCwgMTI1NTMsIDEyNTYxLCAxMjU2NywgMTI1NzUsIDEyNTgxLCAxMjU4NSwgMTI1ODksIAotICAgIDEyNTkzLCAxMjU5OCwgMTI2MDEsIDEyNjA1LCAxMjYwOCwgMTI2MTIsIDEyNjE1LCAxMjYxOSwgMTI2MjMsIDEyNjI3LCAKLSAgICAxMjYzMiwgMTI2MzcsIDEyNjQwLCAxMjY0NCwgMTI2NDksIDEyNjU0LCAxMjY1NywgMTI2NjEsIDEyNjY0LCAxMjY2OCwgCi0gICAgMTI2NzIsIDEyNjc2LCAxMjY4MCwgMTI2ODQsIDEyNjg4LCAxMjY5MiwgMTI2OTYsIDEyNzAwLCAxMjcwNCwgMTI3MDgsIAotICAgIDEyNzEyLCAxMjcxNiwgMTI3MjAsIDEyNzI0LCAxMjcyOCwgMTI3MzIsIDEyNzM2LCAxMjc0MCwgMTI3NDQsIDEyNzQ3LCAKLSAgICAxMjc1MSwgMTI3NTUsIDEyNzU5LCAxMjc2MiwgMTI3NjUsIDEyNzY5LCAxMjc3MywgMTI3NzcsIDEyNzgxLCAxMjc4NSwgCi0gICAgMTI3ODksIDEyNzkzLCAxMjc5NywgMTI4MDEsIDEyODA0LCAxMjgwOSwgMTI4MTQsIDEyODE4LCAxMjgyMiwgMTI4MjcsIAotICAgIDEyODMxLCAxMjgzNiwgMTI4NDAsIDEyODQ1LCAxMjg1MCwgMTI4NTYsIDEyODYyLCAxMjg2OCwgMTI4NzIsIDEyODc3LCAKLSAgICAxMjg4MywgMTI4ODksIDEyODkzLCAxMjg5OCwgMTI5MDIsIDEyOTA4LCAxMjkxMywgMTI5MTYsIDEyOTIyLCAxMjkyOCwgCi0gICAgMTI5MzMsIDEyOTM4LCAxMjk0NSwgMTI5NTAsIDEyOTU1LCAxMjk1OSwgMTI5NjMsIDEyOTY3LCAxMjk3MSwgMTI5NzUsIAotICAgIDEyOTc5LCAxMjk4MywgMTI5ODcsIDEyOTkyLCAxMjk5NywgMTMwMDIsIDEzMDA4LCAxMzAxMSwgMTMwMTUsIDEzMDE5LCAKLSAgICAxMzAyMiwgMTMwMjUsIDEzMDI4LCAxMzAzMSwgMTMwMzQsIDEzMDM3LCAxMzA0MSwgMTMwNDQsIDEzMDQ4LCAxMzA1MiwgCi0gICAgMTMwNTksIDEzMDY0LCAxMzA2OCwgMTMwNzIsIDEzMDc2LCAxMzA4MCwgMTMwODQsIDEzMDkwLCAxMzA5NCwgMTMwOTgsIAotICAgIDEzMTAyLCAxMzEwNiwgMTMxMTIsIDEzMTE2LCAxMzEyMCwgMTMxMjMsIDEzMTI3LCAxMzEzMSwgMCwgMTMxMzUsIDEzMTM4LCAKLSAgICAxMzE0MiwgMTMxNDUsIDEzMTQ5LCAxMzE1MiwgMTMxNTYsIDEzMTYwLCAwLCAwLCAxMzE2NCwgMTMxNjcsIDAsIDAsIAotICAgIDEzMTcxLCAxMzE3NCwgMTMxNzgsIDEzMTgxLCAxMzE4NSwgMTMxODksIDEzMTkzLCAxMzE5NywgMTMyMDEsIDEzMjA1LCAKLSAgICAxMzIwOSwgMTMyMTMsIDEzMjE3LCAxMzIyMSwgMTMyMjUsIDEzMjI5LCAxMzIzMywgMTMyMzcsIDEzMjQxLCAxMzI0NSwgCi0gICAgMTMyNDksIDEzMjUzLCAwLCAxMzI1NywgMTMyNjAsIDEzMjY0LCAxMzI2OCwgMTMyNzIsIDEzMjc1LCAxMzI3OCwgMCwgCi0gICAgMTMyODIsIDAsIDAsIDAsIDEzMjg2LCAxMzI5MCwgMTMyOTQsIDEzMjk4LCAwLCAwLCAxMzMwMSwgMTMzMDUsIDEzMzA5LCAKLSAgICAxMzMxNCwgMTMzMTgsIDEzMzIzLCAxMzMyNywgMTMzMzIsIDEzMzM3LCAwLCAwLCAxMzM0MywgMTMzNDcsIDAsIDAsIAotICAgIDEzMzUyLCAxMzM1NiwgMTMzNjEsIDEzMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzM3MSwgMCwgMCwgMCwgMCwgCi0gICAgMTMzNzcsIDEzMzgxLCAwLCAxMzM4NSwgMTMzODksIDEzMzk0LCAxMzM5OSwgMTM0MDQsIDAsIDAsIDEzNDEwLCAxMzQxNCwgCi0gICAgMTM0MTcsIDEzNDIwLCAxMzQyMywgMTM0MjYsIDEzNDI5LCAxMzQzMiwgMTM0MzYsIDEzNDM5LCAxMzQ0MywgMTM0NTEsIAotICAgIDEzNDYwLCAxMzQ2NCwgMTM0NjgsIDEzNDc0LCAxMzQ4MCwgMTM0ODYsIDEzNDkyLCAxMzUwNiwgMTM1MTMsIDEzNTE2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUyMCwgMTM1MjcsIDEzNTMyLCAwLCAxMzUzNywgMTM1NDEsIDEzNTQ2LCAxMzU1MCwgMTM1NTUsIAotICAgIDEzNTU5LCAwLCAwLCAwLCAwLCAxMzU2NCwgMTM1NjksIDAsIDAsIDEzNTc0LCAxMzU3OSwgMTM1ODQsIDEzNTg4LCAxMzU5MywgCi0gICAgMTM1OTgsIDEzNjAzLCAxMzYwOCwgMTM2MTMsIDEzNjE4LCAxMzYyMywgMTM2MjgsIDEzNjMzLCAxMzYzOCwgMTM2NDMsIAotICAgIDEzNjQ4LCAxMzY1MywgMTM2NTgsIDEzNjYzLCAxMzY2OCwgMTM2NzMsIDEzNjc4LCAwLCAxMzY4MywgMTM2ODcsIDEzNjkyLCAKLSAgICAxMzY5NywgMTM3MDIsIDEzNzA2LCAxMzcxMCwgMCwgMTM3MTUsIDEzNzIwLCAwLCAxMzcyNSwgMTM3MzAsIDAsIDEzNzM1LCAKLSAgICAxMzc0MCwgMCwgMCwgMTM3NDQsIDAsIDEzNzQ5LCAxMzc1NSwgMTM3NjAsIDEzNzY2LCAxMzc3MSwgMCwgMCwgMCwgMCwgCi0gICAgMTM3NzcsIDEzNzgzLCAwLCAwLCAxMzc4OSwgMTM3OTUsIDEzODAxLCAwLCAwLCAwLCAxMzgwNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTM4MTEsIDEzODE2LCAxMzgyMSwgMTM4MjYsIDAsIDEzODMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgzNiwgCi0gICAgMTM4NDEsIDEzODQ1LCAxMzg0OSwgMTM4NTMsIDEzODU3LCAxMzg2MSwgMTM4NjUsIDEzODcwLCAxMzg3NCwgMTM4NzksIAotICAgIDEzODgzLCAxMzg4NywgMTM4OTEsIDEzODk1LCAxMzkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTM5MDYsIDEzOTExLCAxMzkxNiwgMCwgMTM5MjEsIDEzOTI1LCAxMzkzMCwgMTM5MzQsIDEzOTM5LCAxMzk0MywgMTM5NDgsIAotICAgIDEzOTUzLCAxMzk1OCwgMCwgMTM5NjQsIDEzOTY4LCAxMzk3MywgMCwgMTM5NzksIDEzOTgzLCAxMzk4OCwgMTM5OTIsIAotICAgIDEzOTk3LCAxNDAwMiwgMTQwMDcsIDE0MDEyLCAxNDAxNywgMTQwMjIsIDE0MDI3LCAxNDAzMiwgMTQwMzcsIDE0MDQyLCAKLSAgICAxNDA0NywgMTQwNTIsIDE0MDU3LCAxNDA2MiwgMTQwNjcsIDE0MDcyLCAxNDA3NywgMTQwODIsIDAsIDE0MDg3LCAxNDA5MSwgCi0gICAgMTQwOTYsIDE0MTAxLCAxNDEwNiwgMTQxMTAsIDE0MTE0LCAwLCAxNDExOSwgMTQxMjQsIDAsIDE0MTI5LCAxNDEzNCwgCi0gICAgMTQxMzksIDE0MTQ0LCAxNDE0OSwgMCwgMCwgMTQxNTMsIDE0MTU4LCAxNDE2MywgMTQxNjksIDE0MTc0LCAxNDE4MCwgCi0gICAgMTQxODUsIDE0MTkxLCAxNDE5NywgMTQyMDQsIDAsIDE0MjExLCAxNDIxNiwgMTQyMjIsIDAsIDE0MjI5LCAxNDIzNCwgCi0gICAgMTQyNDAsIDAsIDAsIDE0MjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDI0OSwgCi0gICAgMTQyNTUsIDE0MjYxLCAxNDI2NywgMCwgMCwgMTQyNzQsIDE0Mjc5LCAxNDI4MywgMTQyODcsIDE0MjkxLCAxNDI5NSwgCi0gICAgMTQyOTksIDE0MzAzLCAxNDMwOCwgMTQzMTIsIDE0MzE3LCAxNDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzMjcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE0MzMyLCAxNDMzNiwgMTQzNDAsIDAsIDE0MzQ0LCAxNDM0NywgMTQzNTEsIDE0MzU0LCAKLSAgICAxNDM1OCwgMTQzNjEsIDE0MzY1LCAxNDM2OSwgMCwgMCwgMTQzNzMsIDE0Mzc2LCAwLCAwLCAxNDM4MCwgMTQzODMsIAotICAgIDE0Mzg3LCAxNDM5MCwgMTQzOTQsIDE0Mzk4LCAxNDQwMiwgMTQ0MDYsIDE0NDEwLCAxNDQxNCwgMTQ0MTgsIDE0NDIyLCAKLSAgICAxNDQyNiwgMTQ0MzAsIDE0NDM0LCAxNDQzOCwgMTQ0NDIsIDE0NDQ2LCAxNDQ1MCwgMTQ0NTQsIDE0NDU4LCAxNDQ2MiwgMCwgCi0gICAgMTQ0NjYsIDE0NDY5LCAxNDQ3MywgMTQ0NzcsIDE0NDgxLCAxNDQ4NCwgMTQ0ODcsIDAsIDE0NDkxLCAxNDQ5NSwgMCwgCi0gICAgMTQ0OTksIDE0NTAzLCAxNDUwNywgMTQ1MTEsIDE0NTE1LCAwLCAwLCAxNDUxOCwgMTQ1MjIsIDE0NTI2LCAxNDUzMSwgCi0gICAgMTQ1MzUsIDE0NTQwLCAxNDU0NCwgMTQ1NDksIDE0NTU0LCAwLCAwLCAxNDU2MCwgMTQ1NjQsIDAsIDAsIDE0NTY5LCAKLSAgICAxNDU3MywgMTQ1NzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTgyLCAxNDU4OCwgMCwgMCwgMCwgMCwgMTQ1OTQsIAotICAgIDE0NTk4LCAwLCAxNDYwMiwgMTQ2MDYsIDE0NjExLCAxNDYxNiwgMTQ2MjEsIDAsIDAsIDE0NjI3LCAxNDYzMSwgMTQ2MzQsIAotICAgIDE0NjM3LCAxNDY0MCwgMTQ2NDMsIDE0NjQ2LCAxNDY0OSwgMTQ2NTMsIDE0NjU2LCAxNDY2MCwgMTQ2NjMsIDE0NjY3LCAKLSAgICAxNDY3MywgMTQ2NzksIDE0Njg1LCAxNDY5MSwgMTQ2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzAzLCAKLSAgICAxNDcwNywgMCwgMTQ3MTEsIDE0NzE0LCAxNDcxOCwgMTQ3MjEsIDE0NzI1LCAxNDcyOCwgMCwgMCwgMCwgMTQ3MzIsIAotICAgIDE0NzM1LCAxNDczOSwgMCwgMTQ3NDMsIDE0NzQ2LCAxNDc1MCwgMTQ3NTQsIDAsIDAsIDAsIDE0NzU3LCAxNDc2MSwgMCwgCi0gICAgMTQ3NjUsIDAsIDE0NzY5LCAxNDc3MywgMCwgMCwgMCwgMTQ3NzcsIDE0NzgxLCAwLCAwLCAwLCAxNDc4NSwgMTQ3ODksIAotICAgIDE0NzkzLCAwLCAwLCAwLCAxNDc5NiwgMTQ3OTksIDE0ODAyLCAxNDgwNiwgMTQ4MTAsIDE0ODE0LCAxNDgxOCwgMTQ4MjIsIAotICAgIDE0ODI2LCAxNDgzMCwgMTQ4MzQsIDE0ODM4LCAwLCAwLCAwLCAwLCAxNDg0MSwgMTQ4NDYsIDE0ODUwLCAxNDg1NSwgCi0gICAgMTQ4NTksIDAsIDAsIDAsIDE0ODY0LCAxNDg2OCwgMTQ4NzMsIDAsIDE0ODc4LCAxNDg4MiwgMTQ4ODcsIDE0ODkyLCAwLCAwLCAKLSAgICAxNDg5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0OTA1LCAxNDkwOSwgMTQ5MTIsIDE0OTE1LCAxNDkxOCwgMTQ5MjEsIDE0OTI0LCAxNDkyNywgMTQ5MzEsIDE0OTM0LCAKLSAgICAxNDkzOCwgMTQ5NDIsIDE0OTQ3LCAxNDk1MiwgMTQ5NTYsIDE0OTYwLCAxNDk2NCwgMTQ5NjgsIDE0OTcyLCAxNDk3NywgCi0gICAgMTQ5ODEsIDAsIDAsIDAsIDAsIDAsIDE0OTg0LCAxNDk5MCwgMTQ5OTQsIDE0OTk4LCAwLCAxNTAwMiwgMTUwMDUsIDE1MDA5LCAKLSAgICAxNTAxMiwgMTUwMTYsIDE1MDE5LCAxNTAyMywgMTUwMjcsIDAsIDE1MDMxLCAxNTAzNCwgMTUwMzgsIDAsIDE1MDQyLCAKLSAgICAxNTA0NSwgMTUwNDksIDE1MDUzLCAxNTA1NiwgMTUwNjAsIDE1MDY0LCAxNTA2OCwgMTUwNzIsIDE1MDc2LCAxNTA4MCwgCi0gICAgMTUwODQsIDE1MDg4LCAxNTA5MiwgMTUwOTYsIDE1MTAwLCAxNTEwNCwgMTUxMDgsIDE1MTEyLCAxNTExNiwgMTUxMjAsIAotICAgIDE1MTI0LCAxNTEyOCwgMCwgMTUxMzIsIDE1MTM1LCAxNTEzOSwgMTUxNDMsIDE1MTQ3LCAxNTE1MCwgMTUxNTMsIDE1MTU3LCAKLSAgICAxNTE2MSwgMTUxNjUsIDE1MTY5LCAxNTE3MywgMTUxNzcsIDE1MTgxLCAxNTE4NSwgMTUxODksIDAsIDAsIDAsIDE1MTkyLCAKLSAgICAxNTE5NiwgMTUyMDEsIDE1MjA1LCAxNTIxMCwgMTUyMTQsIDE1MjE5LCAxNTIyNCwgMCwgMTUyMzAsIDE1MjM0LCAxNTIzOSwgCi0gICAgMCwgMTUyNDQsIDE1MjQ4LCAxNTI1MywgMTUyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjYyLCAxNTI2NiwgMCwgCi0gICAgMTUyNzIsIDE1Mjc2LCAxNTI4MCwgMCwgMCwgMCwgMCwgMCwgMTUyODQsIDE1Mjg5LCAxNTI5NCwgMTUyOTksIDAsIDAsIAotICAgIDE1MzA1LCAxNTMwOSwgMTUzMTIsIDE1MzE1LCAxNTMxOCwgMTUzMjEsIDE1MzI0LCAxNTMyNywgMTUzMzEsIDE1MzM0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzOCwgMTUzNTEsIDE1MzYzLCAxNTM3NSwgMTUzODcsIDE1Mzk5LCAxNTQxMSwgCi0gICAgMTU0MjMsIDAsIDE1NDI3LCAxNTQzMSwgMTU0MzUsIDAsIDE1NDM5LCAxNTQ0MiwgMTU0NDYsIDE1NDQ5LCAxNTQ1MywgCi0gICAgMTU0NTYsIDE1NDYwLCAxNTQ2NCwgMCwgMTU0NjgsIDE1NDcxLCAxNTQ3NSwgMCwgMTU0NzksIDE1NDgyLCAxNTQ4NiwgCi0gICAgMTU0OTAsIDE1NDkzLCAxNTQ5NywgMTU1MDEsIDE1NTA1LCAxNTUwOSwgMTU1MTMsIDE1NTE3LCAxNTUyMSwgMTU1MjUsIAotICAgIDE1NTI5LCAxNTUzMywgMTU1MzcsIDE1NTQxLCAxNTU0NSwgMTU1NDksIDE1NTUzLCAxNTU1NywgMTU1NjEsIDE1NTY1LCAwLCAKLSAgICAxNTU2OSwgMTU1NzIsIDE1NTc2LCAxNTU4MCwgMTU1ODQsIDE1NTg3LCAxNTU5MCwgMTU1OTQsIDE1NTk4LCAxNTYwMiwgMCwgCi0gICAgMTU2MDYsIDE1NjEwLCAxNTYxNCwgMTU2MTgsIDE1NjIyLCAwLCAwLCAxNTYyNSwgMTU2MjksIDE1NjMzLCAxNTYzOCwgCi0gICAgMTU2NDIsIDE1NjQ3LCAxNTY1MSwgMTU2NTYsIDE1NjYxLCAwLCAxNTY2NywgMTU2NzEsIDE1Njc2LCAwLCAxNTY4MSwgCi0gICAgMTU2ODUsIDE1NjkwLCAxNTY5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2OTksIDE1NzAzLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNTcwOSwgMCwgMTU3MTMsIDE1NzE4LCAxNTcyMywgMTU3MjgsIDAsIDAsIDE1NzM0LCAxNTczOCwgMTU3NDEsIAotICAgIDE1NzQ0LCAxNTc0NywgMTU3NTAsIDE1NzUzLCAxNTc1NiwgMTU3NjAsIDE1NzYzLCAwLCAxNTc2NywgMTU3NzEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1Nzc1LCAxNTc3OSwgMTU3ODMsIDAsIDE1Nzg3LCAxNTc5MCwgCi0gICAgMTU3OTQsIDE1Nzk3LCAxNTgwMSwgMTU4MDQsIDE1ODA4LCAxNTgxMiwgMCwgMTU4MTYsIDE1ODE5LCAxNTgyMywgMCwgCi0gICAgMTU4MjcsIDE1ODMwLCAxNTgzNCwgMTU4MzgsIDE1ODQxLCAxNTg0NSwgMTU4NDksIDE1ODUzLCAxNTg1NywgMTU4NjEsIAotICAgIDE1ODY1LCAxNTg2OSwgMTU4NzMsIDE1ODc3LCAxNTg4MSwgMTU4ODUsIDE1ODg5LCAxNTg5MywgMTU4OTcsIDE1OTAxLCAKLSAgICAxNTkwNSwgMTU5MDksIDE1OTEzLCAxNTkxNywgMTU5MjEsIDE1OTI0LCAxNTkyOCwgMTU5MzIsIDE1OTM2LCAxNTkzOSwgCi0gICAgMTU5NDIsIDE1OTQ2LCAxNTk1MCwgMTU5NTQsIDE1OTU4LCAxNTk2MiwgMTU5NjYsIDE1OTcwLCAxNTk3NCwgMTU5NzgsIAotICAgIDE1OTgxLCAwLCAwLCAxNTk4NSwgMTU5ODksIDE1OTk0LCAxNTk5OCwgMTYwMDMsIDE2MDA3LCAxNjAxMiwgMTYwMTcsIDAsIAotICAgIDE2MDIzLCAxNjAyNywgMTYwMzIsIDAsIDE2MDM3LCAxNjA0MSwgMTYwNDYsIDE2MDUxLCAxNjA1NSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTYwNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDY2LCAxNjA3MiwgMTYwNzcsIDE2MDgyLCAxNjA4NywgCi0gICAgMCwgMCwgMTYwOTMsIDE2MDk3LCAxNjEwMCwgMTYxMDMsIDE2MTA2LCAxNjEwOSwgMTYxMTIsIDE2MTE1LCAxNjExOSwgCi0gICAgMTYxMjIsIDE2MTI2LCAxNjEzMCwgMTYxMzUsIDE2MTQwLCAxNjE0NiwgMTYxNTIsIDAsIDAsIDAsIDE2MTU4LCAxNjE2MiwgCi0gICAgMTYxNjgsIDE2MTc0LCAxNjE4MCwgMTYxODUsIDE2MTkxLCAwLCAwLCAxNjE5NywgMTYyMDEsIDAsIDE2MjA1LCAxNjIwOSwgCi0gICAgMTYyMTMsIDE2MjE3LCAxNjIyMSwgMTYyMjUsIDE2MjI5LCAxNjIzMywgMTYyMzcsIDE2MjQxLCAxNjI0NSwgMTYyNDksIAotICAgIDE2MjUzLCAxNjI1NywgMTYyNjEsIDE2MjY1LCAxNjI2OSwgMTYyNzMsIDAsIDAsIDAsIDE2Mjc3LCAxNjI4MywgMTYyODksIAotICAgIDE2Mjk1LCAxNjMwMSwgMTYzMDcsIDE2MzEzLCAxNjMxOSwgMTYzMjUsIDE2MzMxLCAxNjMzNywgMTYzNDMsIDE2MzUxLCAKLSAgICAxNjM1NywgMTYzNjMsIDE2MzY5LCAxNjM3NSwgMTYzODEsIDE2Mzg3LCAxNjM5MywgMTYzOTksIDE2NDA1LCAxNjQxMSwgCi0gICAgMTY0MTcsIDAsIDE2NDIzLCAxNjQyOSwgMTY0MzUsIDE2NDQxLCAxNjQ0NywgMTY0NTMsIDE2NDU3LCAxNjQ2MywgMTY0NjcsIAotICAgIDAsIDE2NDcxLCAwLCAwLCAxNjQ3NywgMTY0ODEsIDE2NDg3LCAxNjQ5MywgMTY0OTksIDE2NTAzLCAxNjUwOSwgMCwgMCwgMCwgCi0gICAgMTY1MTMsIDAsIDAsIDAsIDAsIDE2NTE3LCAxNjUyMiwgMTY1MjksIDE2NTM2LCAxNjU0MywgMTY1NTAsIDAsIDE2NTU3LCAwLCAKLSAgICAxNjU2NCwgMTY1NjksIDE2NTc0LCAxNjU4MSwgMTY1ODgsIDE2NTk3LCAxNjYwOCwgMTY2MTcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE2NjIyLCAxNjYyOCwgMTY2MzMsIDE2NjM4LCAxNjY0MywgMTY2NDgsIDE2NjUzLCAxNjY1OCwgMTY2NjQsIDE2NjY5LCAwLCAKLSAgICAwLCAxNjY3NSwgMTY2ODIsIDE2Njg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjY5NCwgMTY3MDEsIAotICAgIDE2NzA4LCAxNjcxNSwgMTY3MjIsIDE2NzI5LCAxNjczNiwgMTY3NDMsIDE2NzUwLCAxNjc1NywgMTY3NjQsIDE2NzcxLCAKLSAgICAxNjc3OCwgMTY3ODUsIDE2NzkyLCAxNjc5OSwgMTY4MDYsIDE2ODEzLCAxNjgyMCwgMTY4MjcsIDE2ODM0LCAxNjg0MSwgCi0gICAgMTY4NDgsIDE2ODU1LCAxNjg2MiwgMTY4NjksIDE2ODc2LCAxNjg4MywgMTY4OTAsIDE2ODk3LCAxNjkwNCwgMTY5MTEsIAotICAgIDE2OTE4LCAxNjkyNCwgMTY5MzEsIDE2OTM4LCAxNjk0MywgMTY5NTAsIDE2OTU1LCAxNjk2MiwgMTY5NjksIDE2OTc2LCAKLSAgICAxNjk4MywgMTY5OTAsIDE2OTk3LCAxNzAwMywgMTcwMTAsIDE3MDE1LCAxNzAyMSwgMTcwMjgsIDE3MDM1LCAxNzA0MiwgCi0gICAgMTcwNDgsIDE3MDU1LCAxNzA2MiwgMTcwNjksIDE3MDc1LCAxNzA4MiwgMCwgMCwgMCwgMCwgMTcwODcsIDE3MDk0LCAKLSAgICAxNzEwMCwgMTcxMDcsIDE3MTEzLCAxNzEyMiwgMTcxMzEsIDE3MTM2LCAxNzE0MSwgMTcxNDYsIDE3MTUzLCAxNzE2MCwgCi0gICAgMTcxNjcsIDE3MTc0LCAxNzE3OSwgMTcxODQsIDE3MTg5LCAxNzE5NCwgMTcxOTksIDE3MjAzLCAxNzIwNywgMTcyMTEsIAotICAgIDE3MjE1LCAxNzIxOSwgMTcyMjMsIDE3MjI4LCAxNzIzMiwgMTcyMzcsIDE3MjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNzI0NywgMTcyNTIsIDAsIDE3MjU5LCAwLCAwLCAxNzI2NiwgMTcyNzEsIDAsIDE3Mjc2LCAwLCAKLSAgICAwLCAxNzI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMTcyODgsIDE3MjkzLCAxNzI5NywgMTczMDQsIDAsIDE3MzExLCAxNzMxNiwgCi0gICAgMTczMjEsIDE3MzI2LCAxNzMzMywgMTczNDAsIDE3MzQ3LCAwLCAxNzM1NCwgMTczNTksIDE3MzY0LCAwLCAxNzM3MSwgMCwgCi0gICAgMTczNzgsIDAsIDAsIDE3MzgzLCAxNzM5MCwgMCwgMTczOTcsIDE3NDAxLCAxNzQwOCwgMTc0MTIsIDE3NDE3LCAxNzQyNSwgCi0gICAgMTc0MzEsIDE3NDM3LCAxNzQ0MiwgMTc0NDgsIDE3NDU0LCAxNzQ2MCwgMTc0NjUsIDAsIDE3NDcxLCAxNzQ3OSwgMTc0ODYsIAotICAgIDAsIDAsIDE3NDkzLCAxNzQ5OCwgMTc1MDQsIDE3NTA5LCAxNzUxNSwgMCwgMTc1MjEsIDAsIDE3NTI3LCAxNzUzNCwgCi0gICAgMTc1NDEsIDE3NTQ4LCAxNzU1NSwgMTc1NjAsIDAsIDAsIDE3NTY0LCAxNzU2OSwgMTc1NzMsIDE3NTc3LCAxNzU4MSwgCi0gICAgMTc1ODUsIDE3NTg5LCAxNzU5MywgMTc1OTgsIDE3NjAyLCAwLCAwLCAxNzYwNywgMTc2MTMsIDE3NjE5LCAxNzYyNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc2MzMsIDE3NjM3LCAxNzY0OCwgMTc2NjMsIDE3Njc4LCAxNzY4OCwgMTc2OTksIAotICAgIDE3NzEyLCAxNzcyMywgMTc3MjksIDE3NzM3LCAxNzc0NywgMTc3NTMsIDE3NzYxLCAxNzc2NSwgMTc3NzEsIDE3Nzc3LCAKLSAgICAxNzc4NSwgMTc3OTUsIDE3ODAzLCAxNzgxNiwgMTc4MjIsIDE3ODMwLCAxNzgzOCwgMTc4NTAsIDE3ODU3LCAxNzg2NSwgCi0gICAgMTc4NzMsIDE3ODgxLCAxNzg4OSwgMTc4OTcsIDE3OTA1LCAxNzkxNSwgMTc5MTksIDE3OTIyLCAxNzkyNSwgMTc5MjgsIAotICAgIDE3OTMxLCAxNzkzNCwgMTc5MzcsIDE3OTQxLCAxNzk0NCwgMTc5NDgsIDE3OTUyLCAxNzk1NiwgMTc5NjAsIDE3OTY0LCAKLSAgICAxNzk2OCwgMTc5NzIsIDE3OTc3LCAxNzk4MSwgMTc5ODYsIDE3OTkxLCAxNzk5NywgMTgwMDcsIDE4MDIxLCAxODAzMSwgCi0gICAgMTgwMzcsIDE4MDQzLCAxODA1MSwgMTgwNTksIDE4MDY3LCAxODA3NSwgMTgwODEsIDE4MDg3LCAxODA5MCwgMTgwOTQsIAotICAgIDE4MDk4LCAxODEwMiwgMTgxMDYsIDE4MTEwLCAxODExNCwgMCwgMTgxMTgsIDE4MTIyLCAxODEyNiwgMTgxMzAsIDE4MTM0LCAKLSAgICAxODEzOCwgMTgxNDIsIDE4MTQ2LCAxODE1MCwgMTgxNTQsIDE4MTU4LCAxODE2MiwgMTgxNjUsIDE4MTY5LCAxODE3MywgCi0gICAgMTgxNzcsIDE4MTgwLCAxODE4NCwgMTgxODgsIDE4MTkyLCAxODE5NiwgMTgyMDAsIDE4MjA0LCAxODIwOCwgMTgyMTIsIAotICAgIDE4MjE1LCAxODIxOSwgMTgyMjMsIDE4MjI3LCAxODIzMSwgMTgyMzUsIDE4MjM4LCAxODI0MSwgMTgyNDUsIDE4MjUxLCAKLSAgICAxODI1NSwgMCwgMCwgMCwgMCwgMTgyNTksIDE4MjY0LCAxODI2OCwgMTgyNzMsIDE4Mjc3LCAxODI4MiwgMTgyODcsIAotICAgIDE4MjkzLCAxODI5OCwgMTgzMDQsIDE4MzA4LCAxODMxMywgMTgzMTcsIDE4MzIyLCAxODMzMiwgMTgzMzgsIDE4MzQ0LCAKLSAgICAxODM1MSwgMTgzNjEsIDE4MzY3LCAxODM3MSwgMTgzNzUsIDE4MzgxLCAxODM4NywgMTgzOTUsIDE4NDAxLCAxODQwOSwgCi0gICAgMTg0MTcsIDE4NDI1LCAxODQzNSwgMTg0NDMsIDE4NDUzLCAxODQ1OCwgMTg0NjQsIDE4NDcwLCAxODQ3NiwgMTg0ODIsIAotICAgIDE4NDg4LCAxODQ5NCwgMCwgMTg1MDAsIDE4NTA2LCAxODUxMiwgMTg1MTgsIDE4NTI0LCAxODUzMCwgMTg1MzYsIDE4NTQyLCAKLSAgICAxODU0OCwgMTg1NTQsIDE4NTYwLCAxODU2NiwgMTg1NzEsIDE4NTc3LCAxODU4MywgMTg1ODksIDE4NTk0LCAxODYwMCwgCi0gICAgMTg2MDYsIDE4NjEyLCAxODYxOCwgMTg2MjQsIDE4NjMwLCAxODYzNiwgMTg2NDIsIDE4NjQ3LCAxODY1MywgMTg2NTksIAotICAgIDE4NjY1LCAxODY3MSwgMTg2NzcsIDE4NjgyLCAxODY4NywgMTg2OTMsIDE4NzAxLCAxODcwOCwgMCwgMTg3MTYsIDE4NzIzLCAKLSAgICAxODczNiwgMTg3NDMsIDE4NzUwLCAxODc1OCwgMTg3NjYsIDE4NzcyLCAxODc3OCwgMTg3ODQsIDE4Nzk0LCAxODc5OSwgCi0gICAgMTg4MDUsIDE4ODE1LCAxODgyNSwgMCwgMTg4MzUsIDE4ODQ1LCAxODg1MywgMTg4NjUsIDE4ODc3LCAxODg4MywgMTg4OTcsIAotICAgIDE4OTEyLCAxODkxNywgMTg5MjIsIDE4OTMwLCAxODkzOCwgMTg5NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE4OTU0LCAxODk1NywgMTg5NjEsIDE4OTY1LCAxODk2OSwgMTg5NzMsIDE4OTc3LCAxODk4MSwgMTg5ODUsIAotICAgIDE4OTg5LCAxODk5MywgMTg5OTcsIDE5MDAxLCAxOTAwNSwgMTkwMDksIDE5MDEzLCAxOTAxNywgMTkwMjEsIDE5MDI1LCAKLSAgICAxOTAyOSwgMTkwMzMsIDE5MDM3LCAxOTA0MCwgMTkwNDQsIDE5MDQ4LCAxOTA1MiwgMTkwNTUsIDE5MDU4LCAxOTA2MiwgCi0gICAgMTkwNjYsIDE5MDcwLCAxOTA3NCwgMTkwNzcsIDE5MDgxLCAxOTA4NCwgMTkwODksIDE5MDkyLCAxOTA5NiwgMTkwOTksIAotICAgIDE5MTAzLCAxOTEwNiwgMTkxMTEsIDE5MTE0LCAxOTExOCwgMTkxMjUsIDE5MTMwLCAxOTEzNCwgMTkxMzksIDE5MTQzLCAKLSAgICAxOTE0OCwgMTkxNTIsIDE5MTU3LCAxOTE2NCwgMTkxNzAsIDE5MTc1LCAxOTE3OSwgMTkxODMsIDE5MTg3LCAxOTE5MSwgCi0gICAgMTkxOTUsIDE5MjAwLCAxOTIwNiwgMTkyMTIsIDE5MjE3LCAxOTIyMywgMTkyMjcsIDE5MjMwLCAxOTIzMywgMTkyMzYsIAotICAgIDE5MjM5LCAxOTI0MiwgMTkyNDUsIDE5MjQ5LCAxOTI1MiwgMTkyNTYsIDE5MjYyLCAxOTI2NiwgMTkyNzAsIDE5Mjc0LCAKLSAgICAxOTI3OCwgMTkyODIsIDE5Mjg2LCAxOTI5MCwgMTkyOTQsIDE5Mjk5LCAxOTMwMywgMTkzMDgsIDE5MzEzLCAxOTMxOSwgCi0gICAgMTkzMjQsIDE5MzMwLCAxOTMzNiwgMTkzNDIsIDE5MzQ4LCAxOTM1NCwgMTkzNjIsIDE5MzY5LCAxOTM3NywgMTkzODUsIAotICAgIDE5Mzk0LCAxOTQwMywgMTk0MTQsIDE5NDI0LCAxOTQzNCwgMTk0NDUsIDE5NDU2LCAxOTQ2NiwgMTk0NzYsIDE5NDg2LCAKLSAgICAxOTQ5NiwgMTk1MDYsIDE5NTE2LCAxOTUyNiwgMTk1MzYsIDE5NTQ0LCAxOTU1MSwgMTk1NTcsIDE5NTY0LCAxOTU2OSwgCi0gICAgMTk1NzUsIDE5NTgxLCAxOTU4NywgMTk1OTMsIDE5NTk5LCAxOTYwNSwgMTk2MTEsIDE5NjE3LCAxOTYyMywgMTk2MjksIAotICAgIDE5NjM1LCAxOTY0MCwgMTk2NDgsIDE5NjU1LCAxOTY2MSwgMTk2NjgsIDE5Njc2LCAxOTY4MiwgMTk2ODgsIDE5Njk0LCAKLSAgICAxOTcwMCwgMTk3MDgsIDE5NzE2LCAxOTcyNiwgMTk3MzQsIDE5NzQyLCAxOTc0OCwgMTk3NTMsIDE5NzU4LCAxOTc2MywgCi0gICAgMTk3NjgsIDE5NzczLCAxOTc3OCwgMTk3ODQsIDE5Nzg5LCAxOTc5NSwgMTk4MDEsIDE5ODA3LCAxOTgxMywgMTk4MjAsIAotICAgIDE5ODI1LCAxOTgzMSwgMTk4MzYsIDE5ODQxLCAxOTg0NiwgMTk4NTEsIDE5ODU2LCAxOTg2MSwgMTk4NjYsIDE5ODcxLCAKLSAgICAxOTg3NiwgMTk4ODEsIDE5ODg2LCAxOTg5MSwgMTk4OTYsIDE5OTAxLCAxOTkwNiwgMTk5MTEsIDE5OTE2LCAxOTkyMSwgCi0gICAgMTk5MjYsIDE5OTMxLCAxOTkzNiwgMTk5NDEsIDE5OTQ2LCAxOTk1MSwgMTk5NTYsIDE5OTYxLCAxOTk2NiwgMTk5NzEsIAotICAgIDE5OTc2LCAxOTk4MSwgMTk5ODYsIDE5OTkxLCAxOTk5NiwgMjAwMDEsIDIwMDA2LCAyMDAxMSwgMjAwMTYsIDAsIDIwMDIxLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyMDAyNiwgMCwgMCwgMjAwMzEsIDIwMDM1LCAyMDAzOSwgMjAwNDMsIDIwMDQ3LCAyMDA1MSwgCi0gICAgMjAwNTUsIDIwMDU5LCAyMDA2MywgMjAwNjcsIDIwMDcxLCAyMDA3NSwgMjAwNzksIDIwMDgzLCAyMDA4NywgMjAwOTEsIAotICAgIDIwMDk1LCAyMDA5OSwgMjAxMDMsIDIwMTA3LCAyMDExMSwgMjAxMTUsIDIwMTE5LCAyMDEyMywgMjAxMjcsIDIwMTMxLCAKLSAgICAyMDEzNSwgMjAxMzksIDIwMTQzLCAyMDE0NywgMjAxNTEsIDIwMTU1LCAyMDE1OSwgMjAxNjMsIDIwMTY3LCAyMDE3MSwgCi0gICAgMjAxNzUsIDIwMTc5LCAyMDE4MywgMjAxODcsIDIwMTkxLCAyMDE5NSwgMjAyMDEsIDIwMjA1LCAyMDIxMCwgMjAyMTUsIAotICAgIDIwMjE5LCAyMDIyNCwgMjAyMjksIDIwMjMzLCAyMDIzNywgMjAyNDEsIDIwMjQ1LCAyMDI0OSwgMjAyNTMsIDIwMjU3LCAKLSAgICAyMDI2MSwgMjAyNjUsIDIwMjY5LCAyMDI3MywgMjAyNzcsIDIwMjgxLCAyMDI4NSwgMjAyODksIDIwMjkzLCAyMDI5NywgCi0gICAgMjAzMDEsIDIwMzA1LCAyMDMwOSwgMjAzMTMsIDIwMzE3LCAyMDMyMSwgMjAzMjUsIDIwMzI5LCAyMDMzMywgMjAzMzcsIAotICAgIDIwMzQxLCAyMDM0NSwgMjAzNDksIDIwMzUzLCAyMDM1NywgMjAzNjEsIDIwMzY1LCAyMDM2OSwgMjAzNzMsIDIwMzc3LCAKLSAgICAyMDM4MSwgMjAzODUsIDIwMzg5LCAyMDM5MywgMjAzOTcsIDIwNDAxLCAyMDQwNSwgMjA0MDksIDIwNDEzLCAyMDQxNywgCi0gICAgMjA0MjEsIDIwNDI1LCAyMDQyOSwgMjA0MzMsIDIwNDM3LCAyMDQ0MSwgMjA0NDUsIDIwNDQ5LCAyMDQ1MywgMjA0NTcsIAotICAgIDIwNDYxLCAyMDQ2NSwgMjA0NjksIDIwNDczLCAyMDQ3NywgMjA0ODEsIDIwNDg1LCAyMDQ4OSwgMjA0OTMsIDIwNDk3LCAKLSAgICAyMDUwMSwgMjA1MDUsIDIwNTA5LCAyMDUxMywgMjA1MTcsIDIwNTIxLCAyMDUyNSwgMjA1MjksIDIwNTMzLCAyMDUzNywgCi0gICAgMjA1NDEsIDIwNTQ1LCAyMDU0OSwgMjA1NTMsIDIwNTU3LCAyMDU2MSwgMjA1NjUsIDIwNTY5LCAyMDU3MywgMjA1NzcsIAotICAgIDIwNTgxLCAyMDU4NSwgMjA1ODksIDIwNTkzLCAyMDU5NywgMjA2MDEsIDIwNjA1LCAyMDYwOSwgMjA2MTMsIDIwNjE3LCAKLSAgICAyMDYyMCwgMjA2MjQsIDIwNjI3LCAyMDYzMSwgMjA2MzUsIDIwNjM4LCAyMDY0MiwgMjA2NDYsIDIwNjQ5LCAyMDY1MywgCi0gICAgMjA2NTcsIDIwNjYxLCAyMDY2NSwgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIDIwNjg0LCAyMDY4OCwgMjA2OTIsIAotICAgIDIwNjk1LCAyMDY5OSwgMjA3MDMsIDIwNzA3LCAyMDcxMSwgMjA3MTUsIDIwNzE5LCAyMDcyMywgMjA3MjcsIDIwNzMxLCAKLSAgICAyMDczNSwgMjA3MzksIDIwNzQzLCAyMDc0NywgMjA3NTEsIDIwNzU1LCAyMDc1OSwgMjA3NjMsIDIwNzY3LCAyMDc3MSwgCi0gICAgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAyMDc5NSwgMjA3OTksIDIwODAzLCAyMDgwNywgMjA4MTEsIAotICAgIDIwODE1LCAyMDgxOSwgMjA4MjMsIDIwODI3LCAyMDgzMSwgMjA4MzUsIDIwODM5LCAyMDg0MywgMjA4NDcsIDIwODUxLCAKLSAgICAyMDg1NSwgMjA4NTksIDIwODYzLCAyMDg2NywgMjA4NzEsIDIwODc1LCAyMDg3OSwgMjA4ODMsIDIwODg3LCAyMDg5MSwgCi0gICAgMjA4OTUsIDIwODk5LCAyMDkwMywgMjA5MDcsIDIwOTExLCAyMDkxNSwgMjA5MTksIDIwOTIzLCAyMDkyNywgMjA5MzEsIAotICAgIDIwOTM1LCAyMDkzOSwgMjA5NDMsIDIwOTQ3LCAyMDk1MSwgMjA5NTUsIDIwOTU5LCAyMDk2MywgMjA5NjcsIDIwOTcxLCAKLSAgICAyMDk3NSwgMjA5NzksIDIwOTgzLCAyMDk4NywgMjA5OTEsIDIwOTk1LCAyMDk5OSwgMjEwMDMsIDIxMDA3LCAyMTAxMSwgCi0gICAgMjEwMTUsIDIxMDE5LCAyMTAyMywgMjEwMjcsIDIxMDMxLCAyMTAzNSwgMjEwMzksIDIxMDQzLCAyMTA0NywgMjEwNTEsIAotICAgIDIxMDU1LCAyMTA1OSwgMjEwNjMsIDIxMDY3LCAyMTA3MSwgMjEwNzUsIDIxMDc5LCAyMTA4MywgMjEwODcsIDIxMDkxLCAKLSAgICAyMTA5NSwgMjEwOTksIDIxMTAzLCAyMTEwNywgMjExMTEsIDIxMTE1LCAyMTExOSwgMjExMjMsIDIxMTI3LCAyMTEzMSwgCi0gICAgMjExMzUsIDIxMTM5LCAyMTE0MywgMjExNDcsIDIxMTUxLCAyMTE1NSwgMjExNTksIDIxMTYzLCAyMTE2NywgMjExNzEsIAotICAgIDIxMTc1LCAyMTE3OSwgMjExODMsIDIxMTg3LCAyMTE5MSwgMjExOTUsIDIxMTk5LCAyMTIwMywgMjEyMDcsIDIxMjExLCAKLSAgICAyMTIxNSwgMjEyMTksIDIxMjIzLCAyMTIyNywgMjEyMzEsIDIxMjM1LCAyMTIzOSwgMjEyNDMsIDIxMjQ3LCAyMTI1MCwgCi0gICAgMjEyNTQsIDIxMjU4LCAyMTI2MiwgMjEyNjYsIDIxMjcwLCAyMTI3NCwgMjEyNzgsIDIxMjgyLCAyMTI4NiwgMjEyOTAsIAotICAgIDIxMjk0LCAyMTI5OCwgMjEzMDIsIDIxMzA2LCAyMTMxMCwgMjEzMTQsIDIxMzE4LCAyMTMyMiwgMjEzMjYsIDIxMzMwLCAKLSAgICAyMTMzNCwgMjEzMzgsIDIxMzQyLCAyMTM0NSwgMjEzNDksIDIxMzUzLCAyMTM1NywgMjEzNjEsIDIxMzY1LCAyMTM2OSwgCi0gICAgMjEzNzMsIDIxMzc3LCAyMTM4MSwgMjEzODUsIDIxMzg5LCAyMTM5MywgMjEzOTcsIDIxNDAxLCAyMTQwNSwgMjE0MDksIAotICAgIDIxNDEzLCAyMTQxNywgMjE0MjEsIDIxNDI1LCAyMTQyOSwgMjE0MzMsIDIxNDM3LCAyMTQ0MSwgMjE0NDUsIDIxNDQ5LCAKLSAgICAyMTQ1MywgMjE0NTcsIDIxNDYxLCAyMTQ2NSwgMjE0NjksIDIxNDczLCAyMTQ3NywgMjE0ODEsIDIxNDg1LCAyMTQ4OSwgCi0gICAgMjE0OTMsIDIxNDk3LCAyMTUwMSwgMjE1MDUsIDIxNTA5LCAyMTUxMywgMjE1MTcsIDIxNTIxLCAyMTUyNSwgMjE1MjksIAotICAgIDIxNTMzLCAwLCAyMTUzNywgMjE1NDEsIDIxNTQ1LCAyMTU0OSwgMCwgMCwgMjE1NTMsIDIxNTU3LCAyMTU2MSwgMjE1NjUsIAotICAgIDIxNTY5LCAyMTU3MywgMjE1NzcsIDAsIDIxNTgxLCAwLCAyMTU4NSwgMjE1ODksIDIxNTkzLCAyMTU5NywgMCwgMCwgCi0gICAgMjE2MDEsIDIxNjA1LCAyMTYwOSwgMjE2MTMsIDIxNjE3LCAyMTYyMSwgMjE2MjUsIDIxNjI5LCAyMTYzMywgMjE2MzcsIAotICAgIDIxNjQxLCAyMTY0NSwgMjE2NDksIDIxNjUzLCAyMTY1NywgMjE2NjEsIDIxNjY1LCAyMTY2OSwgMjE2NzMsIDIxNjc3LCAKLSAgICAyMTY4MSwgMjE2ODUsIDIxNjg5LCAyMTY5MiwgMjE2OTYsIDIxNzAwLCAyMTcwNCwgMjE3MDgsIDIxNzEyLCAyMTcxNiwgCi0gICAgMjE3MjAsIDIxNzI0LCAyMTcyOCwgMjE3MzIsIDIxNzM2LCAyMTc0MCwgMjE3NDQsIDIxNzQ4LCAyMTc1MiwgMjE3NTYsIAotICAgIDIxNzYwLCAwLCAyMTc2NCwgMjE3NjgsIDIxNzcyLCAyMTc3NiwgMCwgMCwgMjE3ODAsIDIxNzg0LCAyMTc4OCwgMjE3OTIsIAotICAgIDIxNzk2LCAyMTgwMCwgMjE4MDQsIDIxODA4LCAyMTgxMiwgMjE4MTYsIDIxODIwLCAyMTgyNCwgMjE4MjgsIDIxODMyLCAKLSAgICAyMTgzNiwgMjE4NDAsIDIxODQ0LCAyMTg0OSwgMjE4NTQsIDIxODU5LCAyMTg2NSwgMjE4NzEsIDIxODc2LCAyMTg4MSwgCi0gICAgMjE4ODcsIDIxODkwLCAyMTg5NCwgMjE4OTgsIDIxOTAyLCAyMTkwNiwgMjE5MTAsIDIxOTE0LCAyMTkxOCwgMCwgMjE5MjIsIAotICAgIDIxOTI2LCAyMTkzMCwgMjE5MzQsIDAsIDAsIDIxOTM4LCAyMTk0MiwgMjE5NDYsIDIxOTUwLCAyMTk1NCwgMjE5NTgsIAotICAgIDIxOTYyLCAwLCAyMTk2NiwgMCwgMjE5NzAsIDIxOTc0LCAyMTk3OCwgMjE5ODIsIDAsIDAsIDIxOTg2LCAyMTk5MCwgCi0gICAgMjE5OTQsIDIxOTk4LCAyMjAwMiwgMjIwMDYsIDIyMDEwLCAyMjAxNCwgMjIwMTgsIDIyMDIzLCAyMjAyOCwgMjIwMzMsIAotICAgIDIyMDM5LCAyMjA0NSwgMjIwNTAsIDAsIDIyMDU1LCAyMjA1OSwgMjIwNjMsIDIyMDY3LCAyMjA3MSwgMjIwNzUsIDIyMDc5LCAKLSAgICAyMjA4MywgMjIwODcsIDIyMDkxLCAyMjA5NSwgMjIwOTksIDIyMTAzLCAyMjEwNywgMjIxMTEsIDIyMTE1LCAyMjExOSwgCi0gICAgMjIxMjIsIDIyMTI2LCAyMjEzMCwgMjIxMzQsIDIyMTM4LCAyMjE0MiwgMjIxNDYsIDIyMTUwLCAyMjE1NCwgMjIxNTgsIAotICAgIDIyMTYyLCAyMjE2NiwgMjIxNzAsIDIyMTc0LCAyMjE3OCwgMjIxODIsIDIyMTg2LCAyMjE5MCwgMjIxOTQsIDIyMTk4LCAKLSAgICAyMjIwMiwgMjIyMDYsIDIyMjEwLCAyMjIxNCwgMjIyMTgsIDIyMjIyLCAyMjIyNiwgMjIyMzAsIDIyMjM0LCAyMjIzOCwgCi0gICAgMjIyNDIsIDIyMjQ2LCAyMjI1MCwgMjIyNTQsIDIyMjU4LCAyMjI2MiwgMjIyNjYsIDIyMjcwLCAyMjI3NCwgMjIyNzgsIDAsIAotICAgIDIyMjgyLCAyMjI4NiwgMjIyOTAsIDIyMjk0LCAwLCAwLCAyMjI5OCwgMjIzMDIsIDIyMzA2LCAyMjMxMCwgMjIzMTQsIAotICAgIDIyMzE4LCAyMjMyMiwgMjIzMjYsIDIyMzMwLCAyMjMzNCwgMjIzMzgsIDIyMzQyLCAyMjM0NiwgMjIzNTAsIDIyMzU0LCAKLSAgICAyMjM1OCwgMjIzNjIsIDIyMzY2LCAyMjM3MCwgMjIzNzQsIDIyMzc4LCAyMjM4MiwgMjIzODYsIDIyMzkwLCAyMjM5NCwgCi0gICAgMjIzOTgsIDIyNDAyLCAyMjQwNiwgMjI0MTAsIDIyNDE0LCAyMjQxOCwgMjI0MjIsIDIyNDI2LCAyMjQzMCwgMjI0MzQsIAotICAgIDIyNDM4LCAyMjQ0MiwgMjI0NDYsIDIyNDUwLCAyMjQ1NCwgMjI0NTgsIDIyNDYyLCAyMjQ2NiwgMjI0NzAsIDIyNDc0LCAKLSAgICAyMjQ3OCwgMjI0ODIsIDIyNDg2LCAyMjQ5MCwgMjI0OTQsIDIyNDk4LCAyMjUwMiwgMjI1MDYsIDIyNTEwLCAyMjUxNCwgCi0gICAgMjI1MTgsIDIyNTIyLCAyMjUyNSwgMjI1MjksIDIyNTMzLCAyMjUzNywgMjI1NDEsIDIyNTQ1LCAyMjU0OSwgMjI1NTMsIAotICAgIDIyNTU3LCAyMjU2MSwgMCwgMCwgMjI1NjUsIDIyNTc0LCAyMjU4MCwgMjI1ODUsIDIyNTg5LCAyMjU5MiwgMjI1OTcsIAotICAgIDIyNjAwLCAyMjYwMywgMjI2MDYsIDIyNjExLCAyMjYxNSwgMjI2MjAsIDIyNjIzLCAyMjYyNiwgMjI2MjksIDIyNjMyLCAKLSAgICAyMjYzNSwgMjI2MzgsIDIyNjQyLCAyMjY0NSwgMjI2NDksIDIyNjUzLCAyMjY1NywgMjI2NjEsIDIyNjY1LCAyMjY2OSwgCi0gICAgMjI2NzMsIDIyNjc3LCAyMjY4MSwgMjI2ODUsIDIyNjg5LCAwLCAwLCAwLCAyMjY5NSwgMjI3MDEsIDIyNzA1LCAyMjcwOSwgCi0gICAgMjI3MTMsIDIyNzE5LCAyMjcyMywgMjI3MjcsIDIyNzMxLCAyMjczNywgMjI3NDEsIDIyNzQ1LCAyMjc0OSwgMjI3NTUsIAotICAgIDIyNzU5LCAyMjc2MywgMjI3NjcsIDIyNzczLCAyMjc3OSwgMjI3ODUsIDIyNzkzLCAyMjc5OSwgMjI4MDUsIDIyODExLCAKLSAgICAyMjgxNywgMjI4MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDIyODI5LCAyMjgzMiwgMjI4MzUsIDIyODM4LCAyMjg0MSwgMjI4NDQsIAotICAgIDIyODQ4LCAyMjg1MiwgMjI4NTUsIDIyODU5LCAyMjg2MywgMjI4NjcsIDIyODcxLCAyMjg3NSwgMjI4NzgsIDIyODgyLCAKLSAgICAyMjg4NiwgMjI4OTAsIDIyODk0LCAyMjg5OCwgMjI5MDIsIDIyOTA2LCAyMjkxMCwgMjI5MTQsIDIyOTE4LCAyMjkyMiwgCi0gICAgMjI5MjUsIDIyOTI5LCAyMjkzMywgMjI5MzcsIDIyOTQxLCAyMjk0NSwgMjI5NDksIDIyOTUzLCAyMjk1NywgMjI5NjEsIAotICAgIDIyOTY1LCAyMjk2OSwgMjI5NzMsIDIyOTc3LCAyMjk4MSwgMjI5ODUsIDIyOTg5LCAyMjk5MywgMjI5OTcsIDIzMDAxLCAKLSAgICAyMzAwNCwgMjMwMDgsIDIzMDEyLCAyMzAxNiwgMjMwMjAsIDIzMDI0LCAyMzAyOCwgMjMwMzIsIDIzMDM2LCAyMzA0MCwgCi0gICAgMjMwNDQsIDIzMDQ4LCAyMzA1MiwgMjMwNTYsIDIzMDYwLCAyMzA2NCwgMjMwNjgsIDIzMDcyLCAyMzA3NiwgMjMwODAsIAotICAgIDIzMDg0LCAyMzA4OCwgMjMwOTIsIDIzMDk2LCAyMzEwMCwgMjMxMDQsIDIzMTA4LCAyMzExMiwgMjMxMTYsIDIzMTIwLCAKLSAgICAyMzEyNCwgMjMxMjgsIDIzMTMyLCAyMzEzNiwgMjMxMzksIDIzMTQzLCAyMzE0NywgMjMxNTEsIDIzMTU1LCAyMzE1OSwgMCwgCi0gICAgMCwgMjMxNjMsIDIzMTY4LCAyMzE3MywgMjMxNzgsIDIzMTgzLCAyMzE4OCwgMCwgMCwgMjMxOTMsIDIzMTk3LCAyMzIwMCwgCi0gICAgMjMyMDQsIDIzMjA3LCAyMzIxMSwgMjMyMTQsIDIzMjE4LCAyMzIyNCwgMjMyMjksIDIzMjMzLCAyMzIzNiwgMjMyNDAsIAotICAgIDIzMjQ0LCAyMzI0OSwgMjMyNTMsIDIzMjU4LCAyMzI2MiwgMjMyNjcsIDIzMjcxLCAyMzI3NiwgMjMyODAsIDIzMjg1LCAKLSAgICAyMzI5MSwgMjMyOTUsIDIzMzAwLCAyMzMwNCwgMjMzMDksIDIzMzE1LCAyMzMxOSwgMjMzMjUsIDIzMzMxLCAyMzMzNSwgCi0gICAgMjMzNDAsIDIzMzQ4LCAyMzM1NiwgMjMzNjMsIDIzMzY4LCAyMzM3MywgMjMzODIsIDIzMzg4LCAyMzM5NiwgMjM0MDEsIAotICAgIDIzNDA3LCAyMzQxMSwgMjM0MTUsIDIzNDE5LCAyMzQyMywgMjM0MjcsIDIzNDMxLCAyMzQzNSwgMjM0MzksIDIzNDQzLCAKLSAgICAyMzQ0NywgMjM0NTMsIDIzNDU4LCAyMzQ2MywgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgMjM0NzksIDIzNDgzLCAyMzQ4OCwgCi0gICAgMjM0OTIsIDIzNDk3LCAyMzUwMSwgMjM1MDYsIDIzNTEwLCAyMzUxNSwgMjM1MTksIDIzNTI0LCAyMzUyOCwgMjM1MzMsIAotICAgIDIzNTM5LCAyMzU0MywgMjM1NDgsIDIzNTUzLCAyMzU1NywgMjM1NjEsIDIzNTY1LCAyMzU2OSwgMjM1NzIsIDIzNTc2LCAKLSAgICAyMzU4MiwgMjM1ODcsIDIzNTkyLCAyMzU5NiwgMjM2MDAsIDIzNjA0LCAyMzYwOSwgMjM2MTMsIDIzNjE4LCAyMzYyMiwgCi0gICAgMjM2MjcsIDIzNjMwLCAyMzYzNCwgMjM2MzgsIDIzNjQzLCAyMzY0NywgMjM2NTIsIDIzNjU2LCAyMzY2MSwgMjM2NjcsIAotICAgIDIzNjcxLCAyMzY3NSwgMjM2NzksIDIzNjgzLCAyMzY4NywgMjM2OTEsIDIzNjk1LCAyMzY5OSwgMjM3MDMsIDIzNzA3LCAKLSAgICAyMzcxMSwgMjM3MTcsIDIzNzIwLCAyMzcyNCwgMjM3MjgsIDIzNzMzLCAyMzczNywgMjM3NDIsIDIzNzQ2LCAyMzc1MSwgCi0gICAgMjM3NTUsIDIzNzYwLCAyMzc2NCwgMjM3NjksIDIzNzczLCAyMzc3OCwgMjM3ODIsIDIzNzg3LCAyMzc5MywgMjM3OTcsIAotICAgIDIzODAxLCAyMzgwNywgMjM4MTMsIDIzODE5LCAyMzgyNSwgMjM4MjksIDIzODMzLCAyMzgzNywgMjM4NDEsIDIzODQ1LCAKLSAgICAyMzg0OSwgMjM4NTUsIDIzODU5LCAyMzg2MywgMjM4NjcsIDIzODcyLCAyMzg3NiwgMjM4ODEsIDIzODg1LCAyMzg5MCwgCi0gICAgMjM4OTQsIDIzODk5LCAyMzkwMywgMjM5MDgsIDIzOTEyLCAyMzkxNywgMjM5MjEsIDIzOTI2LCAyMzkzMiwgMjM5MzYsIAotICAgIDIzOTQyLCAyMzk0NiwgMjM5NTAsIDIzOTU0LCAyMzk1OCwgMjM5NjIsIDIzOTY2LCAyMzk3MiwgMjM5NzUsIDIzOTc5LCAKLSAgICAyMzk4MywgMjM5ODgsIDIzOTkyLCAyMzk5NywgMjQwMDEsIDI0MDA2LCAyNDAxMCwgMjQwMTUsIDI0MDE5LCAyNDAyNCwgCi0gICAgMjQwMjgsIDI0MDMzLCAyNDAzNywgMjQwNDIsIDI0MDQ4LCAyNDA1MiwgMjQwNTcsIDI0MDYxLCAyNDA2NywgMjQwNzMsIAotICAgIDI0MDc3LCAyNDA4MSwgMjQwODUsIDI0MDg5LCAyNDA5MywgMjQwOTcsIDI0MTAzLCAyNDEwNywgMjQxMTEsIDI0MTE1LCAKLSAgICAyNDEyMCwgMjQxMjQsIDI0MTI5LCAyNDEzMywgMjQxMzgsIDI0MTQ0LCAyNDE0OCwgMjQxNTMsIDI0MTU3LCAyNDE2MSwgCi0gICAgMjQxNjUsIDI0MTY5LCAyNDE3MywgMjQxNzcsIDI0MTgxLCAyNDE4NywgMjQxOTEsIDI0MTk1LCAyNDE5OSwgMjQyMDQsIAotICAgIDI0MjA4LCAyNDIxMywgMjQyMTcsIDI0MjIyLCAyNDIyNiwgMjQyMzEsIDI0MjM1LCAyNDI0MCwgMjQyNDQsIDI0MjQ5LCAKLSAgICAyNDI1MywgMjQyNTgsIDI0MjYxLCAyNDI2NSwgMjQyNjksIDI0MjczLCAyNDI3NywgMjQyODEsIDI0Mjg1LCAyNDI4OSwgCi0gICAgMjQyOTMsIDI0Mjk5LCAyNDMwMywgMjQzMDcsIDI0MzExLCAyNDMxNiwgMjQzMjAsIDI0MzI1LCAyNDMyOSwgMjQzMzQsIAotICAgIDI0MzM4LCAyNDM0MywgMjQzNDcsIDI0MzUyLCAyNDM1NiwgMjQzNjEsIDI0MzY1LCAyNDM3MCwgMjQzNzYsIDI0Mzc5LCAKLSAgICAyNDM4NCwgMjQzODgsIDI0MzkzLCAyNDM5OSwgMjQ0MDUsIDI0NDExLCAyNDQxNywgMjQ0MjMsIDI0NDI5LCAyNDQzNSwgCi0gICAgMjQ0MzksIDI0NDQzLCAyNDQ0NywgMjQ0NTEsIDI0NDU1LCAyNDQ1OSwgMjQ0NjMsIDI0NDY3LCAyNDQ3MiwgMjQ0NzYsIAotICAgIDI0NDgxLCAyNDQ4NSwgMjQ0OTAsIDI0NDk0LCAyNDQ5OSwgMjQ1MDMsIDI0NTA4LCAyNDUxMiwgMjQ1MTcsIDI0NTIxLCAKLSAgICAyNDUyNiwgMjQ1MzAsIDI0NTM0LCAyNDUzOCwgMjQ1NDIsIDI0NTQ2LCAyNDU1MCwgMjQ1NTQsIDI0NTYwLCAyNDU2MywgCi0gICAgMjQ1NjcsIDI0NTcxLCAyNDU3NiwgMjQ1ODAsIDI0NTg1LCAyNDU4OSwgMjQ1OTQsIDI0NTk4LCAyNDYwMywgMjQ2MDcsIAotICAgIDI0NjEyLCAyNDYxNiwgMjQ2MjEsIDI0NjI1LCAyNDYzMCwgMjQ2MzYsIDI0NjQwLCAyNDY0NiwgMjQ2NTEsIDI0NjU3LCAKLSAgICAyNDY2MSwgMjQ2NjcsIDI0NjcyLCAyNDY3NiwgMjQ2ODAsIDI0Njg0LCAyNDY4OCwgMjQ2OTIsIDI0Njk3LCAyNDcwMSwgCi0gICAgMjQ3MDUsIDI0NzEwLCAyNDcxNCwgMjQ3MTksIDI0NzIyLCAyNDcyNiwgMjQ3MzAsIDI0NzM0LCAyNDczOCwgMjQ3NDIsIAotICAgIDI0NzQ2LCAyNDc1MCwgMjQ3NTQsIDI0NzU4LCAyNDc2MiwgMjQ3NjYsIDI0NzcxLCAyNDc3NSwgMjQ3NzksIDI0Nzg1LCAKLSAgICAyNDc4OSwgMjQ3OTUsIDI0Nzk5LCAyNDgwNSwgMjQ4MDksIDI0ODEzLCAyNDgxNywgMjQ4MjEsIDI0ODI1LCAyNDgzMCwgCi0gICAgMjQ4MzQsIDI0ODM4LCAyNDg0MiwgMjQ4NDYsIDI0ODUwLCAyNDg1NCwgMjQ4NTgsIDI0ODYyLCAyNDg2NiwgMjQ4NzAsIAotICAgIDI0ODc2LCAyNDg4MiwgMjQ4ODgsIDI0ODk0LCAyNDkwMCwgMjQ5MDUsIDI0OTExLCAyNDkxNywgMjQ5MjMsIDI0OTI3LCAKLSAgICAyNDkzMSwgMjQ5MzUsIDI0OTM5LCAyNDk0MywgMjQ5NDcsIDI0OTUxLCAyNDk1NSwgMjQ5NTksIDI0OTYzLCAyNDk2NywgCi0gICAgMjQ5NzEsIDI0OTc1LCAyNDk4MCwgMjQ5ODUsIDI0OTkwLCAyNDk5NSwgMjQ5OTksIDI1MDAzLCAyNTAwNywgMjUwMTEsIAotICAgIDI1MDE1LCAyNTAxOSwgMjUwMjMsIDI1MDI3LCAyNTAzMSwgMjUwMzcsIDI1MDQzLCAyNTA0OSwgMjUwNTUsIDI1MDYxLCAKLSAgICAyNTA2NywgMjUwNzMsIDI1MDc5LCAyNTA4NSwgMjUwODksIDI1MDkzLCAyNTA5NywgMjUxMDEsIDI1MTA1LCAyNTEwOSwgCi0gICAgMjUxMTMsIDI1MTE5LCAyNTEyNSwgMjUxMzEsIDI1MTM3LCAyNTE0MywgMjUxNDksIDI1MTU1LCAyNTE2MSwgMjUxNjcsIAotICAgIDI1MTcyLCAyNTE3NywgMjUxODIsIDI1MTg3LCAyNTE5MywgMjUxOTksIDI1MjA1LCAyNTIxMSwgMjUyMTcsIDI1MjIzLCAKLSAgICAyNTIyOSwgMjUyMzUsIDI1MjQxLCAyNTI0NywgMjUyNTMsIDI1MjU4LCAyNTI2NCwgMjUyNzAsIDI1Mjc2LCAyNTI4MSwgCi0gICAgMjUyODYsIDI1MjkxLCAyNTI5NiwgMjUzMDEsIDI1MzA2LCAyNTMxMSwgMjUzMTYsIDI1MzIxLCAyNTMyNiwgMjUzMzEsIAotICAgIDI1MzM2LCAyNTM0MSwgMjUzNDYsIDI1MzUxLCAyNTM1NiwgMjUzNjEsIDI1MzY2LCAyNTM3MSwgMjUzNzYsIDI1MzgxLCAKLSAgICAyNTM4NiwgMjUzOTEsIDI1Mzk2LCAyNTQwMSwgMjU0MDYsIDI1NDExLCAyNTQxNiwgMjU0MjEsIDI1NDI2LCAyNTQzMSwgCi0gICAgMjU0MzYsIDI1NDQxLCAyNTQ0NiwgMjU0NTEsIDI1NDU2LCAyNTQ2MSwgMjU0NjYsIDI1NDcxLCAyNTQ3NiwgMjU0ODEsIAotICAgIDI1NDg2LCAyNTQ5MCwgMjU0OTUsIDI1NTAwLCAyNTUwNSwgMjU1MTAsIDI1NTE1LCAyNTUyMCwgMjU1MjUsIDI1NTMwLCAKLSAgICAyNTUzNSwgMjU1NDAsIDI1NTQ1LCAyNTU1MCwgMjU1NTUsIDI1NTYwLCAyNTU2NSwgMjU1NzAsIDI1NTc1LCAyNTU4MCwgCi0gICAgMjU1ODUsIDI1NTkwLCAyNTU5NSwgMjU2MDAsIDI1NjA1LCAyNTYxMCwgMjU2MTUsIDI1NjIwLCAyNTYyNSwgMjU2MzAsIAotICAgIDI1NjM1LCAyNTY0MCwgMjU2NDUsIDI1NjQ5LCAyNTY1NCwgMjU2NTksIDI1NjY0LCAyNTY2OSwgMjU2NzQsIDI1Njc4LCAKLSAgICAyNTY4MywgMjU2ODksIDI1Njk0LCAyNTY5OSwgMjU3MDQsIDI1NzA5LCAyNTcxNSwgMjU3MjAsIDI1NzI1LCAyNTczMCwgCi0gICAgMjU3MzUsIDI1NzQwLCAyNTc0NSwgMjU3NTAsIDI1NzU1LCAyNTc2MCwgMjU3NjUsIDI1NzcwLCAyNTc3NSwgMjU3ODAsIAotICAgIDI1Nzg1LCAyNTc5MCwgMjU3OTUsIDI1ODAwLCAyNTgwNSwgMjU4MTAsIDI1ODE1LCAyNTgyMCwgMjU4MjUsIDI1ODMwLCAKLSAgICAyNTgzNSwgMjU4NDAsIDI1ODQ1LCAyNTg1MCwgMjU4NTUsIDI1ODYwLCAyNTg2NSwgMjU4NzAsIDI1ODc1LCAyNTg4MCwgCi0gICAgMjU4ODUsIDI1ODkwLCAyNTg5NSwgMjU5MDAsIDI1OTA1LCAyNTkxMCwgMjU5MTUsIDI1OTIwLCAyNTkyNSwgMjU5MzAsIAotICAgIDI1OTM1LCAyNTk0MSwgMjU5NDYsIDI1OTUxLCAyNTk1NiwgMjU5NjEsIDI1OTY2LCAyNTk3MSwgMjU5NzYsIDI1OTgxLCAKLSAgICAyNTk4NiwgMjU5OTEsIDI1OTk2LCAyNjAwMSwgMjYwMDYsIDI2MDExLCAyNjAxNiwgMjYwMjEsIDI2MDI2LCAyNjAzMSwgCi0gICAgMjYwMzYsIDI2MDQxLCAyNjA0NiwgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcxLCAyNjA3NiwgMjYwODEsIAotICAgIDI2MDg2LCAyNjA5MSwgMjYwOTYsIDI2MTAxLCAyNjEwNiwgMjYxMTEsIDI2MTE2LCAyNjEyMSwgMjYxMjYsIDI2MTMxLCAKLSAgICAyNjEzNywgMjYxNDEsIDI2MTQ1LCAyNjE0OSwgMjYxNTMsIDI2MTU3LCAyNjE2MSwgMjYxNjUsIDI2MTY5LCAyNjE3NSwgCi0gICAgMjYxODEsIDI2MTg3LCAyNjE5MywgMjYxOTksIDI2MjA1LCAyNjIxMSwgMjYyMTgsIDI2MjI0LCAyNjIyOSwgMjYyMzQsIAotICAgIDI2MjM5LCAyNjI0NCwgMjYyNDksIDI2MjU0LCAyNjI1OSwgMjYyNjQsIDI2MjY5LCAyNjI3NCwgMjYyNzksIDI2Mjg0LCAKLSAgICAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzE0LCAyNjMxOSwgMjYzMjQsIDI2MzI5LCAyNjMzNCwgCi0gICAgMjYzMzksIDI2MzQ0LCAyNjM0OSwgMjYzNTQsIDI2MzU5LCAyNjM2NCwgMCwgMCwgMCwgMjYzNzEsIDI2MzgxLCAyNjM4NSwgCi0gICAgMjYzOTIsIDI2Mzk2LCAyNjQwMCwgMjY0MDQsIDI2NDEyLCAyNjQxNiwgMjY0MjEsIDI2NDI2LCAyNjQzMSwgMjY0MzUsIAotICAgIDI2NDQwLCAyNjQ0NSwgMjY0NDgsIDI2NDUyLCAyNjQ1NiwgMjY0NjUsIDI2NDY5LCAyNjQ3MywgMjY0NzksIDI2NDgzLCAKLSAgICAyNjQ4NywgMjY0OTUsIDI2NDk5LCAyNjUwNywgMjY1MTMsIDI2NTE5LCAyNjUyNSwgMjY1MzEsIDI2NTQxLCAyNjU0NywgCi0gICAgMjY1NTEsIDI2NTYwLCAyNjU2MywgMjY1NjksIDI2NTczLCAyNjU3OSwgMjY1ODQsIDI2NTkwLCAyNjU5OCwgMjY2MDQsIAotICAgIDI2NjA5LCAyNjYxNiwgMjY2MjEsIDI2NjI1LCAyNjYyOSwgMjY2MzksIDI2NjQ1LCAyNjY0OSwgMjY2NTksIDI2NjY1LCAKLSAgICAyNjY2OSwgMjY2NzMsIDI2NjgwLCAyNjY4OCwgMjY2OTQsIDI2NzAwLCAyNjcwOSwgMjY3MTMsIDI2NzE3LCAyNjcyMSwgCi0gICAgMjY3MjksIDI2NzM2LCAyNjc0MCwgMjY3NDQsIDI2NzQ4LCAyNjc1MiwgMjY3NTYsIDI2NzYwLCAyNjc2NCwgMjY3NjgsIAotICAgIDI2NzcyLCAyNjc3NiwgMjY3ODAsIDI2Nzg1LCAyNjc5MCwgMjY3OTUsIDI2Nzk5LCAyNjgwMywgMjY4MDcsIDI2ODExLCAKLSAgICAyNjgxNSwgMjY4MTksIDI2ODI3LCAyNjgzNSwgMjY4NDMsIDI2ODUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjg1OSwgCi0gICAgMjY4NjMsIDI2ODY3LCAyNjg3MSwgMjY4NzUsIDI2ODgwLCAyNjg4NSwgMjY4OTAsIDI2ODk1LCAyNjkwMCwgMjY5MDQsIAotICAgIDI2OTA5LCAyNjkxMywgMCwgMjY5MTcsIDI2OTIyLCAyNjkyNywgMjY5MzIsIDI2OTM2LCAyNjk0MSwgMjY5NDYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OTUxLCAyNjk1NSwgMjY5NTksIDI2OTYzLCAyNjk2NywgMjY5NzIsIAotICAgIDI2OTc3LCAyNjk4MiwgMjY5ODcsIDI2OTkyLCAyNjk5NiwgMjcwMDEsIDI3MDA1LCAyNzAwOSwgMjcwMTQsIDI3MDE5LCAKLSAgICAyNzAyNCwgMjcwMjksIDI3MDMzLCAyNzAzOCwgMjcwNDMsIDI3MDQ4LCAyNzA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjcwNTksIDI3MDYzLCAyNzA2NywgMjcwNzEsIDI3MDc1LCAyNzA4MCwgMjcwODUsIDI3MDkwLCAyNzA5NSwgMjcxMDAsIAotICAgIDI3MTA0LCAyNzEwOSwgMjcxMTMsIDI3MTE3LCAyNzEyMiwgMjcxMjcsIDI3MTMyLCAyNzEzNywgMjcxNDEsIDI3MTQ2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzE1MSwgMjcxNTUsIDI3MTU5LCAyNzE2MywgMjcxNjcsIAotICAgIDI3MTcyLCAyNzE3NywgMjcxODIsIDI3MTg3LCAyNzE5MiwgMjcxOTYsIDI3MjAxLCAyNzIwNSwgMCwgMjcyMDksIDI3MjE0LCAKLSAgICAyNzIxOSwgMCwgMjcyMjQsIDI3MjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIzNCwgMjcyMzcsIAotICAgIDI3MjQxLCAyNzI0NSwgMjcyNDksIDI3MjUzLCAyNzI1NywgMjcyNjEsIDI3MjY1LCAyNzI2OSwgMjcyNzMsIDI3Mjc3LCAKLSAgICAyNzI4MSwgMjcyODUsIDI3Mjg5LCAyNzI5MywgMjcyOTcsIDI3MzAxLCAyNzMwNCwgMjczMDgsIDI3MzEyLCAyNzMxNiwgCi0gICAgMjczMjAsIDI3MzI0LCAyNzMyOCwgMjczMzIsIDI3MzM2LCAyNzM0MCwgMjczNDQsIDI3MzQ4LCAyNzM1MiwgMjczNTYsIAotICAgIDI3MzYwLCAyNzM2MywgMjczNjcsIDI3MzcxLCAyNzM3NywgMjczODMsIDI3Mzg5LCAyNzM5NSwgMjc0MDEsIDI3NDA3LCAKLSAgICAyNzQxMywgMjc0MTksIDI3NDI1LCAyNzQzMSwgMjc0MzcsIDI3NDQzLCAyNzQ0OSwgMjc0NTUsIDI3NDY0LCAyNzQ3MywgCi0gICAgMjc0NzksIDI3NDg1LCAyNzQ5MSwgMjc0OTYsIDI3NTAwLCAyNzUwNSwgMjc1MTAsIDI3NTE1LCAyNzUxOSwgMjc1MjQsIAotICAgIDI3NTI5LCAyNzUzNCwgMjc1MzgsIDI3NTQzLCAyNzU0NywgMjc1NTIsIDI3NTU3LCAyNzU2MiwgMjc1NjcsIDI3NTcxLCAKLSAgICAyNzU3NSwgMjc1NzksIDI3NTgzLCAyNzU4NywgMjc1OTEsIDI3NTk1LCAyNzU5OSwgMjc2MDMsIDI3NjA3LCAyNzYxMywgCi0gICAgMjc2MTcsIDI3NjIxLCAyNzYyNSwgMjc2MjksIDI3NjMzLCAyNzY0MSwgMjc2NDcsIDI3NjUxLCAyNzY1NywgMjc2NjEsIAotICAgIDI3NjY3LCAyNzY3MSwgMCwgMCwgMjc2NzUsIDI3Njc5LCAyNzY4MiwgMjc2ODUsIDI3Njg4LCAyNzY5MSwgMjc2OTQsIAotICAgIDI3Njk3LCAyNzcwMSwgMjc3MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NzA4LCAyNzcxNiwgMjc3MjQsIDI3NzMyLCAyNzc0MCwgCi0gICAgMjc3NDgsIDI3NzU2LCAyNzc2NCwgMjc3NzIsIDI3NzgwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzc4OCwgMjc3OTEsIDI3Nzk0LCAKLSAgICAyNzc5NywgMjc4MDIsIDI3ODA1LCAyNzgxMCwgMjc4MTcsIDI3ODI1LCAyNzgzMCwgMjc4MzcsIDI3ODQwLCAyNzg0NywgCi0gICAgMjc4NTQsIDI3ODYxLCAwLCAyNzg2NSwgMjc4NjksIDI3ODcyLCAyNzg3NSwgMjc4NzgsIDI3ODgxLCAyNzg4NCwgMjc4ODcsIAotICAgIDI3ODkxLCAyNzg5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4OTgsIDI3OTAxLCAyNzkwNCwgMjc5MDcsIDI3OTEwLCAyNzkxMywgCi0gICAgMjc5MTcsIDI3OTIxLCAyNzkyNSwgMjc5MjksIDI3OTMzLCAyNzkzNywgMjc5NDAsIDI3OTQ0LCAyNzk0OCwgMjc5NTEsIAotICAgIDI3OTU1LCAyNzk1OSwgMjc5NjMsIDI3OTY3LCAyNzk3MSwgMjc5NzUsIDI3OTc5LCAyNzk4MiwgMjc5ODYsIDI3OTkwLCAKLSAgICAyNzk5NCwgMjc5OTcsIDI4MDAxLCAyODAwNSwgMjgwMDksIDI4MDEzLCAyODAxNywgMjgwMjEsIDI4MDI1LCAyODAyOSwgCi0gICAgMjgwMzYsIDI4MDQxLCAyODA0NiwgMjgwNTEsIDI4MDU2LCAyODA2MiwgMjgwNjgsIDI4MDc0LCAyODA4MCwgMjgwODUsIAotICAgIDI4MDkxLCAyODA5NywgMjgxMDIsIDI4MTA4LCAyODExNCwgMjgxMjAsIDI4MTI2LCAyODEzMiwgMjgxMzcsIDI4MTQzLCAKLSAgICAyODE0OCwgMjgxNTQsIDI4MTYwLCAyODE2NiwgMjgxNzIsIDI4MTc4LCAyODE4MywgMjgxODgsIDI4MTk0LCAyODIwMCwgCi0gICAgMjgyMDUsIDI4MjExLCAyODIxNiwgMjgyMjIsIDI4MjI3LCAyODIzMiwgMjgyMzgsIDI4MjQ0LCAyODI1MCwgMjgyNTYsIAotICAgIDI4MjYyLCAyODI2OCwgMjgyNzQsIDI4MjgwLCAyODI4NiwgMjgyOTIsIDI4Mjk4LCAyODMwNCwgMjgzMDksIDI4MzE0LCAKLSAgICAyODMyMCwgMjgzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MzMyLCAyODM0MSwgMjgzNTAsIDI4MzU4LCAyODM2NiwgCi0gICAgMjgzNzYsIDI4Mzg0LCAyODM5MywgMjg0MDAsIDI4NDA3LCAyODQxNCwgMjg0MjIsIDI4NDMwLCAyODQzOCwgMjg0NDYsIAotICAgIDI4NDU0LCAyODQ2MiwgMjg0NzAsIDI4NDc4LCAyODQ4NSwgMjg0OTMsIDI4NTAxLCAyODUwOSwgMjg1MTcsIDI4NTI1LCAKLSAgICAyODUzNSwgMjg1NDUsIDI4NTU1LCAyODU2NSwgMjg1NzUsIDI4NTg1LCAyODU5NSwgMjg2MDUsIDI4NjE1LCAyODYyNSwgCi0gICAgMjg2MzUsIDI4NjQ1LCAyODY1NSwgMjg2NjUsIDI4NjczLCAyODY4MSwgMjg2OTEsIDI4Njk5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyODcwOSwgMjg3MTMsIDI4NzE3LCAyODcyMSwgMjg3MjUsIDI4NzI5LCAyODczMywgMjg3MzcsIDI4NzQxLCAyODc0NSwgCi0gICAgMjg3NDksIDI4NzUzLCAyODc1NywgMjg3NjEsIDI4NzY1LCAyODc2OSwgMjg3NzMsIDI4Nzc3LCAyODc4MSwgMjg3ODUsIAotICAgIDI4Nzg5LCAyODc5MywgMjg3OTcsIDI4ODAxLCAyODgwNywgMjg4MTEsIDI4ODE3LCAyODgyMSwgMjg4MjcsIDI4ODMxLCAKLSAgICAyODgzNywgMjg4NDEsIDI4ODQ1LCAyODg0OSwgMjg4NTMsIDI4ODU3LCAyODg2MSwgMjg4NjcsIDI4ODczLCAyODg3OSwgCi0gICAgMjg4ODUsIDI4ODkxLCAyODg5NywgMjg5MDIsIDI4OTA4LCAyODkxNCwgMjg5MjAsIDI4OTI2LCAyODkzMywgMjg5MzksIAotICAgIDI4OTQ0LCAyODk0OSwgMjg5NTMsIDI4OTU3LCAyODk2MSwgMjg5NjUsIDI4OTY5LCAyODk3MywgMjg5NzcsIDI4OTgzLCAKLSAgICAyODk4OSwgMjg5OTUsIDI5MDAwLCAyOTAwNywgMjkwMTIsIDI5MDE3LCAyOTAyMywgMjkwMjgsIDI5MDM1LCAyOTA0MiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkwNDgsIDI5MDU0LCAyOTA1OCwgMjkwNjMsIDI5MDY4LCAyOTA3MywgCi0gICAgMjkwNzgsIDI5MDgzLCAyOTA4OCwgMjkwOTMsIDI5MDk4LCAyOTEwMywgMjkxMDgsIDI5MTEzLCAyOTExOCwgMjkxMjMsIAotICAgIDI5MTI4LCAyOTEzMiwgMjkxMzcsIDI5MTQyLCAyOTE0NywgMjkxNTEsIDI5MTU1LCAyOTE2MCwgMjkxNjUsIDI5MTcwLCAKLSAgICAyOTE3NSwgMjkxODAsIDI5MTg1LCAyOTE4OSwgMjkxOTQsIDAsIDI5MTk5LCAyOTIwNCwgMjkyMDksIDI5MjE0LCAyOTIyMCwgCi0gICAgMjkyMjYsIDI5MjMyLCAyOTIzOCwgMjkyNDMsIDI5MjQ4LCAyOTI1NCwgMjkyNjEsIDAsIDAsIDAsIDAsIDI5MjY4LCAKLSAgICAyOTI3MywgMjkyNzksIDI5Mjg1LCAyOTI5MSwgMjkyOTcsIDI5MzAyLCAyOTMwNywgMjkzMTMsIDI5MzE5LCAyOTMyNCwgCi0gICAgMjkzMjksIDAsIDAsIDAsIDAsIDI5MzM0LCAwLCAwLCAwLCAyOTMzOSwgMjkzNDQsIDI5MzQ5LCAyOTM1NCwgMjkzNTgsIAotICAgIDI5MzYyLCAyOTM2NiwgMjkzNzAsIDI5Mzc0LCAyOTM3OCwgMjkzODMsIDI5Mzg3LCAyOTM5MiwgMjkzOTcsIDI5NDAzLCAKLSAgICAyOTQwOSwgMjk0MTUsIDI5NDIxLCAyOTQyNiwgMjk0MzIsIDI5NDM4LCAyOTQ0NCwgMjk0NDksIDI5NDU1LCAyOTQ2MCwgCi0gICAgMjk0NjYsIDI5NDcyLCAyOTQ3NywgMjk0ODMsIDI5NDg5LCAyOTQ5NSwgMjk1MDEsIDI5NTA2LCAyOTUxMSwgMjk1MTcsIAotICAgIDI5NTIzLCAyOTUyOCwgMjk1MzQsIDI5NTM5LCAyOTU0NSwgMjk1NTAsIDI5NTU2LCAwLCAwLCAyOTU2MiwgMjk1NjgsIAotICAgIDI5NTc0LCAyOTU4MCwgMjk1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NTkyLCAyOTYwMSwgCi0gICAgMjk2MTAsIDI5NjE4LCAyOTYyNywgMjk2MzYsIDI5NjQ0LCAyOTY1MywgMjk2NjIsIDI5NjcxLCAyOTY4MCwgMjk2ODgsIAotICAgIDI5Njk3LCAyOTcwNiwgMjk3MTQsIDI5NzIzLCAyOTczMiwgMjk3NDEsIDI5NzUwLCAyOTc1OSwgMjk3NjgsIDI5Nzc2LCAKLSAgICAyOTc4NSwgMjk3OTMsIDI5ODAxLCAyOTgxMCwgMjk4MTgsIDI5ODI3LCAyOTgzNiwgMjk4NDUsIDI5ODU0LCAyOTg2MywgCi0gICAgMjk4NzIsIDI5ODgwLCAyOTg4OSwgMjk4OTgsIDI5OTA2LCAyOTkxNSwgMjk5MjQsIDI5OTMzLCAyOTk0MiwgMjk5NTEsIAotICAgIDI5OTYwLCAyOTk2OSwgMCwgMCwgMCwgMCwgMjk5NzgsIDI5OTg4LCAyOTk5NywgMzAwMDYsIDMwMDE0LCAzMDAyMywgCi0gICAgMzAwMzEsIDMwMDQwLCAzMDA0OCwgMzAwNTcsIDMwMDY2LCAzMDA3NSwgMzAwODQsIDMwMDkzLCAzMDEwMiwgMzAxMTEsIAotICAgIDMwMTIwLCAzMDEyOSwgMzAxMzgsIDMwMTQ3LCAzMDE1NiwgMzAxNjUsIDMwMTc0LCAzMDE4MywgMzAxOTIsIDMwMjAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzMDIwOCwgMzAyMTYsIDMwMjIzLCAzMDIzMCwgMzAyMzcsIDMwMjQ0LCAzMDI1MSwgMzAyNTgsIAotICAgIDMwMjY2LCAzMDI3MywgMzAyODEsIDAsIDAsIDAsIDMwMjg5LCAzMDI5NywgMzAzMDUsIDMwMzA5LCAzMDMxNSwgMzAzMjEsIAotICAgIDMwMzI3LCAzMDMzMywgMzAzMzksIDMwMzQ1LCAzMDM1MSwgMzAzNTcsIDMwMzYzLCAzMDM2OSwgMzAzNzUsIDMwMzgxLCAKLSAgICAzMDM4NywgMzAzOTMsIDMwMzk5LCAzMDQwMywgMzA0MDksIDMwNDE1LCAzMDQyMSwgMzA0MjcsIDMwNDMzLCAzMDQzOSwgCi0gICAgMzA0NDUsIDMwNDUxLCAzMDQ1NywgMzA0NjMsIDMwNDY5LCAzMDQ3NSwgMzA0ODEsIDMwNDg3LCAzMDQ5MywgMzA0OTcsIAotICAgIDMwNTAyLCAzMDUwNywgMzA1MTIsIDMwNTE2LCAzMDUyMSwgMzA1MjUsIDMwNTMwLCAzMDUzNSwgMzA1NDAsIDMwNTQ1LCAKLSAgICAzMDU1MCwgMzA1NTUsIDMwNTYwLCAzMDU2NSwgMzA1NzAsIDMwNTc0LCAzMDU3OSwgMzA1ODQsIDMwNTg5LCAzMDU5NCwgCi0gICAgMzA1OTgsIDMwNjAyLCAzMDYwNywgMzA2MTIsIDMwNjE3LCAzMDYyMiwgMCwgMCwgMzA2MjgsIDMwNjMyLCAzMDYzOSwgCi0gICAgMzA2NDQsIDMwNjUwLCAzMDY1NiwgMzA2NjEsIDMwNjY3LCAzMDY3MywgMzA2NzgsIDMwNjg0LCAzMDY5MCwgMzA2OTYsIAotICAgIDMwNzAyLCAzMDcwOCwgMzA3MTMsIDMwNzE4LCAzMDcyNCwgMzA3MjksIDMwNzM1LCAzMDc0MCwgMzA3NDYsIDMwNzUyLCAKLSAgICAzMDc1OCwgMzA3NjQsIDMwNzY5LCAzMDc3NCwgMzA3NzksIDMwNzg1LCAzMDc5MSwgMzA3OTYsIDMwODAyLCAzMDgwOCwgCi0gICAgMzA4MTIsIDMwODE3LCAzMDgyMiwgMzA4MjcsIDMwODMyLCAzMDgzNywgMzA4NDIsIDMwODQ3LCAzMDg1MywgMzA4NTksIAotICAgIDMwODY1LCAzMDg3MCwgMzA4NzUsIDMwODc5LCAzMDg4NCwgMzA4ODgsIDMwODkzLCAzMDg5NywgMzA5MDIsIDMwOTA3LCAKLSAgICAzMDkxMiwgMzA5MTcsIDMwOTI0LCAzMDkzMSwgMzA5MzgsIDMwOTQ4LCAzMDk1NywgMzA5NjQsIDMwOTcwLCAzMDk4MSwgCi0gICAgMzA5ODYsIDMwOTkyLCAwLCAzMDk5OCwgMzEwMDMsIDMxMDA4LCAzMTAxNiwgMzEwMjIsIDMxMDMwLCAzMTAzNSwgMzEwNDEsIAotICAgIDMxMDQ3LCAzMTA1MywgMzEwNTgsIDMxMDY0LCAzMTA2OSwgMzEwNzYsIDMxMDgyLCAzMTA4NywgMzEwOTMsIDMxMDk5LCAKLSAgICAzMTEwNSwgMzExMTIsIDMxMTE5LCAzMTEyNiwgMzExMzEsIDMxMTM2LCAzMTE0MywgMzExNTAsIDMxMTU3LCAzMTE2NCwgCi0gICAgMzExNzEsIDAsIDAsIDMxMTc4LCAzMTE4NSwgMzExOTIsIDMxMTk4LCAzMTIwNCwgMzEyMTAsIDMxMjE2LCAzMTIyMiwgCi0gICAgMzEyMjgsIDMxMjM1LCAzMTI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyNDgsIDMxMjU0LCAzMTI1OSwgMzEyNjQsIDMxMjY5LCAKLSAgICAzMTI3NCwgMzEyNzksIDMxMjg0LCAzMTI5MCwgMzEyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMzAxLCAzMTMwNiwgMzEzMTEsIAotICAgIDMxMzE2LCAzMTMyMSwgMzEzMjYsIDMxMzMxLCAzMTM0MCwgMzEzNDcsIDMxMzUyLCAzMTM1NywgMzEzNjIsIDMxMzY3LCAKLSAgICAzMTM3MiwgMCwgMCwgMzEzNzcsIDMxMzg0LCAzMTM4NywgMzEzOTAsIDMxMzkzLCAzMTM5OCwgMzE0MDIsIDMxNDA4LCAKLSAgICAzMTQxMiwgMzE0MTcsIDMxNDI0LCAzMTQzMiwgMzE0MzYsIDMxNDQxLCAzMTQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQwODAsIDM0MDg4LCAzNDA5NiwgMzQxMDQsIAorICAgIDM0MTEyLCAzNDEyMiwgMzQxMzIsIDM0MTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDE1MiwgMzQxNTcsIDM0MTYyLCAKKyAgICAzNDE2NywgMzQxNzIsIDM0MTgxLCAzNDE5MiwgMzQyMDEsIDM0MjEyLCAzNDIxOCwgMzQyMzEsIDM0MjM3LCAzNDI0NCwgCisgICAgMzQyNTEsIDM0MjU2LCAzNDI2MiwgMzQyNjgsIDM0Mjc5LCAzNDI4OCwgMzQyOTUsIDM0MzAyLCAzNDMxMSwgMzQzMTgsIAorICAgIDM0MzI3LCAzNDMzNywgMzQzNDcsIDM0MzU0LCAzNDM2MSwgMzQzNjgsIDM0Mzc4LCAzNDM4MywgMzQzOTEsIDM0Mzk3LCAKKyAgICAzNDQwNSwgMzQ0MTQsIDM0NDE5LCAzNDQyNiwgMzQ0MzIsIDM0NDM3LCAwLCAzNDQ0MiwgMzQ0NDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM0NDU1LCAzNDQ2MCwgMzQ0NjYsIDM0NDczLCAzNDQ4MSwgMzQ0ODcsIDM0NDkzLCAzNDQ5OSwgMzQ1MDQsIDM0NTExLCAKKyAgICAzNDUxNywgMzQ1MjMsIDM0NTI5LCAzNDUzNywgMzQ1NDMsIDM0NTUxLCAzNDU1NiwgMzQ1NjIsIDM0NTY4LCAzNDU3NSwgCisgICAgMzQ1ODMsIDM0NTkwLCAzNDU5NiwgMzQ2MDMsIDM0NjEwLCAzNDYxNiwgMzQ2MjMsIDM0NjMwLCAzNDYzNiwgMzQ2NDEsIAorICAgIDM0NjQ3LCAzNDY1NSwgMzQ2NjQsIDM0NjcwLCAzNDY3NiwgMzQ2ODIsIDM0Njg4LCAzNDY5NiwgMzQ3MDAsIDM0NzA2LCAKKyAgICAzNDcxMiwgMzQ3MTgsIDM0NzI0LCAzNDczMCwgMzQ3MzYsIDM0NzQwLCAzNDc0NSwgMzQ3NTAsIDM0NzU3LCAzNDc2MiwgCisgICAgMzQ3NjYsIDM0NzcyLCAzNDc3NywgMzQ3ODIsIDM0Nzg2LCAzNDc5MSwgMzQ3OTYsIDM0ODAwLCAzNDgwNSwgMzQ4MTAsIAorICAgIDM0ODE3LCAzNDgyMSwgMzQ4MjYsIDM0ODMxLCAzNDgzNSwgMzQ4NDAsIDM0ODQ0LCAzNDg0OSwgMzQ4NTMsIDM0ODU5LCAKKyAgICAzNDg2NCwgMzQ4NzEsIDM0ODc2LCAzNDg4MSwgMzQ4ODUsIDM0ODkwLCAzNDg5NSwgMzQ5MDIsIDM0OTA3LCAzNDkxMywgCisgICAgMzQ5MTgsIDM0OTIzLCAzNDkyOCwgMzQ5MzIsIDM0OTM3LCAzNDk0NCwgMzQ5NTEsIDM0OTU2LCAzNDk2MSwgMzQ5NjUsIAorICAgIDM0OTcxLCAzNDk3OCwgMzQ5ODMsIDM0OTg4LCAzNDk5MywgMzQ5OTksIDM1MDA0LCAzNTAxMCwgMzUwMTUsIDM1MDIxLCAKKyAgICAzNTAyNywgMzUwMzMsIDM1MDQwLCAzNTA0NywgMzUwNTQsIDM1MDYxLCAzNTA2OCwgMzUwNzUsIDM1MDgwLCAzNTA4OCwgCisgICAgMzUwOTcsIDM1MTA2LCAzNTExNSwgMzUxMjQsIDM1MTMzLCAzNTE0MiwgMzUxNTQsIDM1MTYzLCAzNTE3MiwgMzUxODEsIAorICAgIDM1MTg4LCAzNTE5MywgMzUyMDAsIDM1MjA4LCAzNTIxNiwgMzUyMjMsIDM1MjMwLCAzNTIzNywgMzUyNDQsIDM1MjUyLCAKKyAgICAzNTI2MSwgMzUyNzAsIDM1Mjc5LCAzNTI4OCwgMzUyOTcsIDM1MzA2LCAzNTMxNSwgMzUzMjQsIDM1MzMzLCAzNTM0MiwgCisgICAgMzUzNTEsIDM1MzYwLCAzNTM2OSwgMzUzNzgsIDM1Mzg2LCAzNTM5NSwgMzU0MDYsIDM1NDE0LCAzNTQyMywgMzU0MzQsIAorICAgIDM1NDQzLCAzNTQ1MiwgMzU0NjEsIDM1NDcwLCAzNTQ3OCwgMzU0ODcsIDM1NDk0LCAzNTQ5OSwgMzU1MDcsIDM1NTEyLCAKKyAgICAzNTUxOSwgMzU1MjQsIDM1NTMzLCAzNTUzOSwgMzU1NDYsIDM1NTUzLCAzNTU1OCwgMzU1NjMsIDM1NTcxLCAzNTU3OSwgCisgICAgMzU1ODgsIDM1NTk3LCAzNTYwMiwgMzU2MDksIDM1NjIwLCAzNTYyOCwgMzU2MzcsIDM1NjQzLCAzNTY0OSwgMzU2NTQsIAorICAgIDM1NjYxLCAzNTY2NiwgMzU2NzUsIDM1NjgwLCAzNTY4NSwgMzU2OTAsIDM1Njk3LCAzNTcwNCwgMzU3MDksIDM1NzE4LCAKKyAgICAzNTcyNiwgMzU3MzEsIDM1NzM2LCAzNTc0MywgMzU3NTAsIDM1NzU0LCAzNTc1OCwgMzU3NjEsIDM1NzY0LCAzNTc2NywgCisgICAgMzU3NzAsIDM1NzczLCAzNTc3NiwgMzU3ODMsIDM1Nzg2LCAzNTc4OSwgMzU3OTQsIDM1Nzk4LCAzNTgwMiwgMzU4MDYsIAorICAgIDM1ODEwLCAzNTgxNCwgMzU4MjMsIDM1ODI5LCAzNTgzNSwgMzU4NDEsIDM1ODQ5LCAzNTg1NywgMzU4NjMsIDM1ODY5LCAKKyAgICAzNTg3NiwgMzU4ODIsIDM1ODg3LCAzNTg5MywgMzU5MDAsIDM1OTA2LCAzNTkxMywgMzU5MTksIDM1OTI3LCAzNTkzMywgCisgICAgMzU5NDAsIDM1OTQ2LCAzNTk1MiwgMzU5NTgsIDM1OTY0LCAzNTk3MCwgMzU5NzYsIDM1OTg3LCAzNTk5NywgMzYwMDMsIAorICAgIDM2MDA5LCAzNjAxOSwgMzYwMjUsIDM2MDMzLCAzNjA0MSwgMzYwNDksIDAsIDAsIDAsIDAsIDAsIDM2MDU0LCAzNjA1OCwgCisgICAgMzYwNjUsIDM2MDcyLCAzNjA3NywgMzYwODYsIDM2MDk0LCAzNjEwMiwgMzYxMDksIDM2MTE2LCAzNjEyMywgMzYxMzAsIAorICAgIDM2MTM4LCAzNjE0NiwgMzYxNTYsIDM2MTY2LCAzNjE3NCwgMzYxODIsIDM2MTkwLCAzNjE5OCwgMzYyMDcsIDM2MjE2LCAKKyAgICAzNjIyNCwgMzYyMzIsIDM2MjQxLCAzNjI1MCwgMzYyNjAsIDM2MjcwLCAzNjI3OSwgMzYyODgsIDM2Mjk2LCAzNjMwNCwgCisgICAgMzYzMTIsIDM2MzIwLCAzNjMzMCwgMzYzNDAsIDM2MzQ4LCAzNjM1NiwgMzYzNjQsIDM2MzcyLCAzNjM4MCwgMzYzODgsIAorICAgIDM2Mzk2LCAzNjQwNCwgMzY0MTIsIDM2NDIwLCAzNjQyOCwgMzY0MzYsIDM2NDQ1LCAzNjQ1NCwgMzY0NjMsIDM2NDcyLCAKKyAgICAzNjQ4MiwgMzY0OTIsIDM2NDk5LCAzNjUwNiwgMzY1MTQsIDM2NTIyLCAzNjUzMSwgMzY1NDAsIDM2NTQ4LCAzNjU1NiwgCisgICAgMzY1NjgsIDM2NTgwLCAzNjU4OSwgMzY1OTgsIDM2NjA3LCAzNjYxNiwgMzY2MjMsIDM2NjMwLCAzNjYzOCwgMzY2NDYsIAorICAgIDM2NjU0LCAzNjY2MiwgMzY2NzAsIDM2Njc4LCAzNjY4NiwgMzY2OTQsIDM2NzAzLCAzNjcxMiwgMzY3MjEsIDM2NzMwLCAKKyAgICAzNjczOSwgMzY3NDgsIDM2NzU4LCAzNjc2OCwgMzY3NzgsIDM2Nzg4LCAzNjc5NywgMzY4MDYsIDM2ODEzLCAzNjgyMCwgCisgICAgMzY4MjgsIDM2ODM2LCAzNjg0NCwgMzY4NTIsIDM2ODYwLCAzNjg2OCwgMzY4ODAsIDM2ODkyLCAzNjkwMSwgMzY5MTAsIAorICAgIDM2OTE4LCAzNjkyNiwgMzY5MzQsIDM2OTQyLCAzNjk1MywgMzY5NjQsIDM2OTc1LCAzNjk4NiwgMzY5OTgsIDM3MDEwLCAKKyAgICAzNzAxOCwgMzcwMjYsIDM3MDM0LCAzNzA0MiwgMzcwNTEsIDM3MDYwLCAzNzA2OSwgMzcwNzgsIDM3MDg2LCAzNzA5NCwgCisgICAgMzcxMDIsIDM3MTEwLCAzNzExOCwgMzcxMjYsIDM3MTM1LCAzNzE0NCwgMzcxNTQsIDM3MTY0LCAzNzE3MiwgMzcxODAsIAorICAgIDM3MTg4LCAzNzE5NiwgMzcyMDQsIDM3MjEyLCAzNzIxOSwgMzcyMjYsIDM3MjM0LCAzNzI0MiwgMzcyNTAsIDM3MjU4LCAKKyAgICAzNzI2NiwgMzcyNzQsIDM3MjgyLCAzNzI5MCwgMzcyOTgsIDM3MzA2LCAzNzMxNCwgMzczMjIsIDM3MzMwLCAzNzMzOCwgCisgICAgMzczNDYsIDM3MzU0LCAzNzM2MywgMzczNzIsIDM3MzgxLCAzNzM4OSwgMzczOTgsIDM3NDA3LCAzNzQxNiwgMzc0MjUsIAorICAgIDM3NDM1LCAzNzQ0NCwgMzc0NTEsIDM3NDU2LCAzNzQ2MywgMzc0NzAsIDM3NDc4LCAzNzQ4NiwgMzc0OTUsIDM3NTA0LCAKKyAgICAzNzUxNCwgMzc1MjQsIDM3NTM1LCAzNzU0NiwgMzc1NTYsIDM3NTY2LCAzNzU3NiwgMzc1ODYsIDM3NTk1LCAzNzYwNCwgCisgICAgMzc2MTQsIDM3NjI0LCAzNzYzNSwgMzc2NDYsIDM3NjU2LCAzNzY2NiwgMzc2NzYsIDM3Njg2LCAzNzY5MywgMzc3MDAsIAorICAgIDM3NzA4LCAzNzcxNiwgMzc3MjMsIDM3NzMwLCAzNzczOSwgMzc3NDgsIDM3NzU4LCAzNzc2OCwgMzc3NzksIDM3NzkwLCAKKyAgICAzNzgwMCwgMzc4MTAsIDM3ODIwLCAzNzgzMCwgMzc4MzksIDM3ODQ4LCAzNzg1NiwgMzc4NjQsIDM3ODcxLCAzNzg3OCwgCisgICAgMzc4ODYsIDM3ODk0LCAzNzkwMywgMzc5MTIsIDM3OTIyLCAzNzkzMiwgMzc5NDMsIDM3OTU0LCAzNzk2NCwgMzc5NzQsIAorICAgIDM3OTg0LCAzNzk5NCwgMzgwMDMsIDM4MDEyLCAzODAyMiwgMzgwMzIsIDM4MDQzLCAzODA1NCwgMzgwNjQsIDM4MDc0LCAKKyAgICAzODA4NCwgMzgwOTQsIDM4MTAxLCAzODEwOCwgMzgxMTYsIDM4MTI0LCAzODEzMywgMzgxNDIsIDM4MTUyLCAzODE2MiwgCisgICAgMzgxNzMsIDM4MTg0LCAzODE5NCwgMzgyMDQsIDM4MjE0LCAzODIyNCwgMzgyMzIsIDM4MjQwLCAzODI0OCwgMzgyNTYsIAorICAgIDM4MjY1LCAzODI3NCwgMzgyODIsIDM4MjkwLCAzODI5NywgMzgzMDQsIDM4MzExLCAzODMxOCwgMzgzMjYsIDM4MzM0LCAKKyAgICAzODM0MiwgMzgzNTAsIDM4MzYxLCAzODM3MiwgMzgzODMsIDM4Mzk0LCAzODQwNSwgMzg0MTYsIDM4NDI0LCAzODQzMiwgCisgICAgMzg0NDMsIDM4NDU0LCAzODQ2NSwgMzg0NzYsIDM4NDg3LCAzODQ5OCwgMzg1MDYsIDM4NTE0LCAzODUyNSwgMzg1MzYsIAorICAgIDM4NTQ3LCAwLCAwLCAzODU1OCwgMzg1NjYsIDM4NTc0LCAzODU4NSwgMzg1OTYsIDM4NjA3LCAwLCAwLCAzODYxOCwgCisgICAgMzg2MjYsIDM4NjM0LCAzODY0NSwgMzg2NTYsIDM4NjY3LCAzODY3OCwgMzg2ODksIDM4NzAwLCAzODcwOCwgMzg3MTYsIAorICAgIDM4NzI3LCAzODczOCwgMzg3NDksIDM4NzYwLCAzODc3MSwgMzg3ODIsIDM4NzkwLCAzODc5OCwgMzg4MDksIDM4ODIwLCAKKyAgICAzODgzMSwgMzg4NDIsIDM4ODUzLCAzODg2NCwgMzg4NzIsIDM4ODgwLCAzODg5MSwgMzg5MDIsIDM4OTEzLCAzODkyNCwgCisgICAgMzg5MzUsIDM4OTQ2LCAzODk1NCwgMzg5NjIsIDM4OTczLCAzODk4NCwgMzg5OTUsIDAsIDAsIDM5MDA2LCAzOTAxNCwgCisgICAgMzkwMjIsIDM5MDMzLCAzOTA0NCwgMzkwNTUsIDAsIDAsIDM5MDY2LCAzOTA3NCwgMzkwODIsIDM5MDkzLCAzOTEwNCwgCisgICAgMzkxMTUsIDM5MTI2LCAzOTEzNywgMCwgMzkxNDgsIDAsIDM5MTU2LCAwLCAzOTE2NywgMCwgMzkxNzgsIDM5MTg5LCAKKyAgICAzOTE5NywgMzkyMDUsIDM5MjE2LCAzOTIyNywgMzkyMzgsIDM5MjQ5LCAzOTI2MCwgMzkyNzEsIDM5Mjc5LCAzOTI4NywgCisgICAgMzkyOTgsIDM5MzA5LCAzOTMyMCwgMzkzMzEsIDM5MzQyLCAzOTM1MywgMzkzNjEsIDM5MzY5LCAzOTM3NywgMzkzODUsIAorICAgIDM5MzkzLCAzOTQwMSwgMzk0MDksIDM5NDE3LCAzOTQyNSwgMzk0MzMsIDM5NDQxLCAzOTQ0OSwgMzk0NTcsIDAsIDAsIAorICAgIDM5NDY1LCAzOTQ3NiwgMzk0ODcsIDM5NTAxLCAzOTUxNSwgMzk1MjksIDM5NTQzLCAzOTU1NywgMzk1NzEsIDM5NTgyLCAKKyAgICAzOTU5MywgMzk2MDcsIDM5NjIxLCAzOTYzNSwgMzk2NDksIDM5NjYzLCAzOTY3NywgMzk2ODgsIDM5Njk5LCAzOTcxMywgCisgICAgMzk3MjcsIDM5NzQxLCAzOTc1NSwgMzk3NjksIDM5NzgzLCAzOTc5NCwgMzk4MDUsIDM5ODE5LCAzOTgzMywgMzk4NDcsIAorICAgIDM5ODYxLCAzOTg3NSwgMzk4ODksIDM5OTAwLCAzOTkxMSwgMzk5MjUsIDM5OTM5LCAzOTk1MywgMzk5NjcsIDM5OTgxLCAKKyAgICAzOTk5NSwgNDAwMDYsIDQwMDE3LCA0MDAzMSwgNDAwNDUsIDQwMDU5LCA0MDA3MywgNDAwODcsIDQwMTAxLCA0MDEwOSwgCisgICAgNDAxMTcsIDQwMTI4LCA0MDEzNiwgMCwgNDAxNDcsIDQwMTU1LCA0MDE2NiwgNDAxNzQsIDQwMTgyLCA0MDE5MCwgNDAxOTgsIAorICAgIDQwMjA2LCA0MDIwOSwgNDAyMTIsIDQwMjE1LCA0MDIxOCwgNDAyMjQsIDQwMjM1LCA0MDI0MywgMCwgNDAyNTQsIDQwMjYyLCAKKyAgICA0MDI3MywgNDAyODEsIDQwMjg5LCA0MDI5NywgNDAzMDUsIDQwMzEzLCA0MDMxOSwgNDAzMjUsIDQwMzMxLCA0MDMzOSwgCisgICAgNDAzNDcsIDQwMzU4LCAwLCAwLCA0MDM2OSwgNDAzNzcsIDQwMzg4LCA0MDM5NiwgNDA0MDQsIDQwNDEyLCAwLCA0MDQyMCwgCisgICAgNDA0MjYsIDQwNDMyLCA0MDQzOCwgNDA0NDYsIDQwNDU0LCA0MDQ2NSwgNDA0NzYsIDQwNDg0LCA0MDQ5MiwgNDA1MDAsIAorICAgIDQwNTExLCA0MDUxOSwgNDA1MjcsIDQwNTM1LCA0MDU0MywgNDA1NTEsIDQwNTU3LCA0MDU2MywgMCwgMCwgNDA1NjYsIAorICAgIDQwNTc3LCA0MDU4NSwgMCwgNDA1OTYsIDQwNjA0LCA0MDYxNSwgNDA2MjMsIDQwNjMxLCA0MDYzOSwgNDA2NDcsIDQwNjU1LCAKKyAgICA0MDY1OCwgMCwgNDA2NjEsIDQwNjY1LCA0MDY2OSwgNDA2NzMsIDQwNjc3LCA0MDY4MSwgNDA2ODUsIDQwNjg5LCA0MDY5MywgCisgICAgNDA2OTcsIDQwNzAxLCA0MDcwNSwgNDA3MTEsIDQwNzE3LCA0MDcyMywgNDA3MjYsIDQwNzI5LCA0MDczMSwgNDA3MzUsIAorICAgIDQwNzM5LCA0MDc0MywgNDA3NDcsIDQwNzUwLCA0MDc1NCwgNDA3NTgsIDQwNzY0LCA0MDc3MCwgNDA3NzcsIDQwNzg0LCAKKyAgICA0MDc4OSwgNDA3OTQsIDQwODAwLCA0MDgwNiwgNDA4MDgsIDQwODExLCA0MDgxMywgNDA4MTcsIDQwODIxLCA0MDgyNSwgCisgICAgNDA4MjksIDQwODMzLCA0MDgzNywgNDA4NDEsIDQwODQ1LCA0MDg0OSwgNDA4NTUsIDQwODU5LCA0MDg2MywgNDA4NjksIAorICAgIDQwODc0LCA0MDg4MSwgNDA4ODMsIDQwODg2LCA0MDg5MCwgNDA4OTQsIDQwODk5LCA0MDkwNSwgNDA5MDcsIDQwOTE2LCAKKyAgICA0MDkyNSwgNDA5MjgsIDQwOTMyLCA0MDkzNCwgNDA5MzYsIDQwOTM4LCA0MDk0MSwgNDA5NDcsIDQwOTQ5LCA0MDk1MywgCisgICAgNDA5NTcsIDQwOTY0LCA0MDk3MSwgNDA5NzUsIDQwOTgwLCA0MDk4NSwgNDA5OTAsIDQwOTk1LCA0MDk5OSwgNDEwMDMsIAorICAgIDQxMDA2LCA0MTAxMCwgNDEwMTQsIDQxMDIxLCA0MTAyNiwgNDEwMzAsIDQxMDM0LCA0MTAzOSwgNDEwNDMsIDQxMDQ3LCAKKyAgICA0MTA1MiwgNDEwNTcsIDQxMDYxLCA0MTA2NSwgNDEwNjksIDQxMDcxLCA0MTA3NiwgNDEwODEsIDQxMDg1LCA0MTA4OSwgCisgICAgNDEwOTMsIDQxMDk3LCAwLCA0MTEwMSwgNDExMDUsIDQxMTA5LCA0MTExNSwgNDExMjEsIDQxMTI3LCA0MTEzMywgNDExNDAsIAorICAgIDQxMTQ3LCA0MTE1MiwgNDExNTcsIDQxMTYxLCAwLCAwLCA0MTE2NywgNDExNzAsIDQxMTczLCA0MTE3NiwgNDExODAsIAorICAgIDQxMTgzLCA0MTE4NywgNDExOTEsIDQxMTk1LCA0MTIwMCwgNDEyMDUsIDQxMjEwLCA0MTIxNywgNDEyMjEsIDQxMjI0LCAKKyAgICA0MTIyNywgNDEyMzAsIDQxMjMzLCA0MTIzNiwgNDEyMzksIDQxMjQzLCA0MTI0NiwgNDEyNTAsIDQxMjU0LCA0MTI1OCwgCisgICAgNDEyNjMsIDQxMjY4LCAwLCA0MTI3MywgNDEyNzksIDQxMjg1LCA0MTI5MSwgNDEyOTgsIDQxMzA1LCA0MTMxMiwgNDEzMTksIAorICAgIDQxMzI1LCA0MTMzMiwgNDEzMzksIDQxMzQ2LCA0MTM1MywgMCwgMCwgMCwgNDEzNjAsIDQxMzYzLCA0MTM2NiwgNDEzNjksIAorICAgIDQxMzc0LCA0MTM3NywgNDEzODAsIDQxMzgzLCA0MTM4NiwgNDEzODksIDQxMzkyLCA0MTM5NywgNDE0MDAsIDQxNDAzLCAKKyAgICA0MTQwNiwgNDE0MDksIDQxNDEyLCA0MTQxNywgNDE0MjAsIDQxNDIzLCA0MTQyNiwgNDE0MjksIDQxNDMyLCA0MTQzNywgCisgICAgNDE0NDAsIDQxNDQzLCA0MTQ0OCwgNDE0NTMsIDQxNDU3LCA0MTQ2MCwgNDE0NjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNDY2LCA0MTQ3MSwgNDE0NzYsIDQxNDgzLCA0MTQ5MSwgNDE0OTYsIAorICAgIDQxNTAxLCA0MTUwNSwgNDE1MDksIDQxNTE0LCA0MTUyMSwgNDE1MjgsIDQxNTMyLCA0MTUzNywgNDE1NDIsIDQxNTQ3LCAKKyAgICA0MTU1MiwgNDE1NTksIDQxNTY0LCA0MTU2OSwgNDE1NzQsIDQxNTgzLCA0MTU5MCwgNDE1OTcsIDQxNjAxLCA0MTYwNiwgCisgICAgNDE2MTIsIDQxNjE3LCA0MTYyNCwgNDE2MzIsIDQxNjQwLCA0MTY0NCwgNDE2NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNjUyLCA0MTY1NiwgNDE2NjQsIDQxNjY4LCA0MTY3MiwgNDE2NzcsIDQxNjgxLCAKKyAgICA0MTY4NSwgNDE2ODksIDQxNjkxLCA0MTY5NSwgNDE2OTksIDQxNzAzLCA0MTcwOCwgNDE3MTIsIDQxNzE2LCA0MTcyNCwgCisgICAgNDE3MjcsIDQxNzMxLCA0MTczNCwgNDE3MzcsIDQxNzQzLCA0MTc0NywgNDE3NTAsIDQxNzU2LCA0MTc2MCwgNDE3NjQsIAorICAgIDQxNzY4LCA0MTc3MSwgNDE3NzUsIDQxNzc4LCA0MTc4MiwgNDE3ODQsIDQxNzg3LCA0MTc5MCwgNDE3OTQsIDQxNzk2LCAKKyAgICA0MTgwMCwgNDE4MDMsIDQxODA2LCA0MTgxMSwgNDE4MTYsIDQxODIzLCA0MTgyNiwgNDE4MjksIDQxODMzLCA0MTgzOCwgCisgICAgNDE4NDEsIDQxODQ0LCA0MTg0NywgNDE4NTEsIDQxODU2LCA0MTg2MCwgNDE4NjMsIDQxODY1LCA0MTg2OCwgNDE4NzEsIAorICAgIDQxODc0LCA0MTg3OCwgNDE4ODMsIDQxODg2LCA0MTg5MCwgNDE4OTQsIDQxODk4LCA0MTkwMiwgNDE5MDcsIDQxOTEzLCAKKyAgICA0MTkxOCwgNDE5MjMsIDQxOTI5LCA0MTkzNCwgNDE5MzksIDQxOTQzLCA0MTk0NywgNDE5NTIsIDQxOTU2LCA0MTk2MCwgCisgICAgNDE5NjMsIDQxOTY1LCA0MTk3MCwgNDE5NzYsIDQxOTgzLCA0MTk5MCwgNDE5OTcsIDQyMDA0LCA0MjAxMSwgNDIwMTgsIAorICAgIDQyMDI1LCA0MjAzMiwgNDIwNDAsIDQyMDQ3LCA0MjA1NSwgNDIwNjIsIDQyMDY5LCA0MjA3NywgNDIwODUsIDQyMDkwLCAKKyAgICA0MjA5NSwgNDIxMDAsIDQyMTA1LCA0MjExMCwgNDIxMTUsIDQyMTIwLCA0MjEyNiwgNDIxMzEsIDQyMTM3LCA0MjE0MywgCisgICAgNDIxNDksIDQyMTU1LCA0MjE2MSwgNDIxNjgsIDQyMTc2LCA0MjE4MywgNDIxODksIDQyMTk1LCA0MjIwMSwgNDIyMDcsIAorICAgIDQyMjEzLCA0MjIxOSwgNDIyMjYsIDQyMjMyLCA0MjIzOSwgNDIyNDYsIDQyMjUzLCA0MjI2MCwgNDIyNjcsIDQyMjc1LCAKKyAgICA0MjI4NCwgNDIyOTIsIDQyMzAzLCA0MjMxMSwgNDIzMTksIDQyMzI4LCA0MjMzNSwgNDIzNDQsIDQyMzUzLCA0MjM2MSwgCisgICAgNDIzNzAsIDQyMzc4LCA0MjM4MiwgMCwgMCwgMCwgMCwgNDIzODYsIDQyMzg4LCA0MjM5MCwgNDIzOTIsIDQyMzk0LCAKKyAgICA0MjM5NywgNDI0MDAsIDQyNDA0LCA0MjQwOCwgNDI0MTMsIDQyNDE4LCA0MjQyMiwgNDI0MjYsIDQyNDMwLCA0MjQzNCwgCisgICAgNDI0MzksIDQyNDQ0LCA0MjQ0OSwgNDI0NTQsIDQyNDU5LCA0MjQ2NCwgNDI0NjksIDQyNDc0LCA0MjQ3OSwgNDI0ODQsIAorICAgIDQyNDkwLCA0MjQ5NCwgNDI0OTgsIDQyNTAzLCA0MjUwOCwgNDI1MTMsIDQyNTE4LCA0MjUyMiwgNDI1MjksIDQyNTM2LCAKKyAgICA0MjU0MywgNDI1NTAsIDQyNTU3LCA0MjU2NCwgNDI1NzEsIDQyNTc4LCA0MjU4NiwgNDI1OTgsIDQyNjA0LCA0MjYxMCwgCisgICAgNDI2MTcsIDQyNjI0LCA0MjYzMSwgNDI2MzgsIDQyNjQ1LCA0MjY1MiwgNDI2NTksIDQyNjY2LCA0MjY3MSwgNDI2NzcsIAorICAgIDQyNjgyLCA0MjY4NywgNDI2OTIsIDQyNjk3LCA0MjcwMiwgNDI3MDksIDQyNzE2LCA0MjcyMSwgNDI3MjcsIDQyNzMyLCAKKyAgICA0MjczNSwgNDI3MzgsIDQyNzQxLCA0Mjc0NCwgNDI3NDgsIDQyNzUyLCA0Mjc1NywgNDI3NjIsIDQyNzY4LCA0Mjc3NCwgCisgICAgNDI3NzgsIDQyNzgyLCA0Mjc4NiwgNDI3OTAsIDQyNzk1LCA0MjgwMCwgNDI4MDQsIDQyODA4LCA0MjgxMiwgNDI4MTYsIAorICAgIDQyODIxLCA0MjgyNiwgNDI4MjksIDQyODMyLCA0MjgzNSwgNDI4MzgsIDQyODQ0LCA0Mjg1MSwgNDI4NjIsIDQyODcyLCAKKyAgICA0Mjg3NiwgNDI4ODQsIDQyODkxLCA0Mjg5OSwgNDI5MDgsIDQyOTEyLCA0MjkxOCwgNDI5MjQsIDQyOTI4LCA0MjkzMywgCisgICAgNDI5MzgsIDQyOTQ0LCA0Mjk1MCwgNDI5NTYsIDQyOTYzLCA0Mjk2NywgNDI5NzEsIDQyOTc2LCA0Mjk3OSwgNDI5ODEsIAorICAgIDQyOTg1LCA0Mjk4OSwgNDI5OTcsIDQzMDAxLCA0MzAwMywgNDMwMDUsIDQzMDA5LCA0MzAxNywgNDMwMjIsIDQzMDI4LCAKKyAgICA0MzAzOCwgNDMwNDUsIDQzMDUwLCA0MzA1NCwgNDMwNTgsIDQzMDYyLCA0MzA2NSwgNDMwNjgsIDQzMDcxLCA0MzA3NSwgCisgICAgNDMwNzksIDQzMDgzLCA0MzA4NywgNDMwOTEsIDQzMDk0LCA0MzA5OCwgNDMxMDIsIDQzMTA1LCA0MzEwNywgNDMxMTAsIAorICAgIDQzMTEyLCA0MzExNiwgNDMxMjAsIDQzMTIyLCA0MzEyOCwgNDMxMzEsIDQzMTM2LCA0MzE0MCwgNDMxNDQsIDQzMTQ2LCAKKyAgICA0MzE0OCwgNDMxNTAsIDQzMTUzLCA0MzE1NywgNDMxNjEsIDQzMTY1LCA0MzE2OSwgNDMxNzMsIDQzMTc5LCA0MzE4NSwgCisgICAgNDMxODcsIDQzMTg5LCA0MzE5MSwgNDMxOTMsIDQzMTk2LCA0MzE5OCwgNDMyMDIsIDQzMjA0LCA0MzIwOCwgNDMyMTIsIAorICAgIDQzMjE4LCA0MzIyMiwgNDMyMjYsIDQzMjMwLCA0MzIzNCwgNDMyMzgsIDQzMjQ0LCA0MzI0OCwgNDMyNTgsIDQzMjY4LCAKKyAgICA0MzI3MiwgNDMyNzgsIDQzMjg1LCA0MzI4OSwgNDMyOTMsIDQzMjk2LCA0MzMwMSwgNDMzMDUsIDQzMzExLCA0MzMxNSwgCisgICAgNDMzMjgsIDQzMzM3LCA0MzM0MSwgNDMzNDUsIDQzMzUxLCA0MzM1NSwgNDMzNTgsIDQzMzYwLCA0MzM2MywgNDMzNjcsIAorICAgIDQzMzcxLCA0MzM3OCwgNDMzODIsIDQzMzg2LCA0MzM5MCwgNDMzOTMsIDQzMzk4LCA0MzQwMywgNDM0MDksIDQzNDE1LCAKKyAgICA0MzQyMCwgNDM0MjUsIDQzNDMzLCA0MzQ0MSwgNDM0NDUsIDQzNDQ5LCA0MzQ1MSwgNDM0NTYsIDQzNDYwLCA0MzQ2NCwgCisgICAgNDM0NzIsIDQzNDgwLCA0MzQ4NywgNDM0OTQsIDQzNTAzLCA0MzUxMiwgNDM1MTgsIDQzNTI0LCA0MzUzMiwgNDM1NDAsIAorICAgIDQzNTQyLCA0MzU0NCwgNDM1NTAsIDQzNTU2LCA0MzU2MywgNDM1NzAsIDQzNTc2LCA0MzU4MiwgNDM1ODYsIDQzNTkwLCAKKyAgICA0MzU5NywgNDM2MDQsIDQzNjExLCA0MzYxOCwgNDM2MjgsIDQzNjM4LCA0MzY0NiwgNDM2NTQsIDQzNjU2LCA0MzY2MCwgCisgICAgNDM2NjQsIDQzNjY5LCA0MzY3NCwgNDM2ODIsIDQzNjkwLCA0MzY5MywgNDM2OTYsIDQzNjk5LCA0MzcwMiwgNDM3MDUsIAorICAgIDQzNzEwLCA0MzcxNCwgNDM3MTksIDQzNzI0LCA0MzcyNywgNDM3MzAsIDQzNzMzLCA0MzczNiwgNDM3MzksIDQzNzQzLCAKKyAgICA0Mzc0NiwgNDM3NDksIDQzNzUyLCA0Mzc1NSwgNDM3NTcsIDQzNzU5LCA0Mzc2MSwgNDM3NjMsIDQzNzcxLCA0Mzc3OSwgCisgICAgNDM3ODUsIDQzNzg5LCA0Mzc5NSwgNDM4MDUsIDQzODExLCA0MzgxNywgNDM4MjMsIDQzODMxLCA0Mzg0MCwgNDM4NTIsIAorICAgIDQzODU2LCA0Mzg2MCwgNDM4NjIsIDQzODY4LCA0Mzg3MCwgNDM4NzIsIDQzODc0LCA0Mzg3NiwgNDM4ODIsIDQzODg1LCAKKyAgICA0Mzg5MSwgNDM4OTcsIDQzOTAxLCA0MzkwNSwgNDM5MDksIDQzOTEyLCA0MzkxNiwgNDM5MjAsIDQzOTIyLCA0MzkzMSwgCisgICAgNDM5NDAsIDQzOTQ1LCA0Mzk1MCwgNDM5NTYsIDQzOTYyLCA0Mzk2OCwgNDM5NzEsIDQzOTc0LCA0Mzk3NywgNDM5ODAsIAorICAgIDQzOTgyLCA0Mzk4NywgNDM5OTIsIDQzOTk3LCA0NDAwMywgNDQwMDksIDQ0MDE4LCA0NDAyNywgNDQwMzQsIDQ0MDQxLCAKKyAgICA0NDA0OCwgNDQwNTUsIDQ0MDY1LCA0NDA3NSwgNDQwODUsIDQ0MDk1LCA0NDEwNSwgNDQxMTUsIDQ0MTI0LCA0NDEzMywgCisgICAgNDQxNDIsIDQ0MTUxLCA0NDE1OSwgNDQxNzEsIDQ0MTgyLCA0NDE5OCwgNDQyMDEsIDQ0MjA3LCA0NDIxMywgNDQyMTksIAorICAgIDQ0MjI3LCA0NDI0MiwgNDQyNTgsIDQ0MjY0LCA0NDI3MCwgNDQyNzcsIDQ0MjgzLCA0NDI5MiwgNDQyOTksIDQ0MzEzLCAKKyAgICA0NDMyOCwgNDQzMzMsIDQ0MzM5LCA0NDM0NywgNDQzNTAsIDQ0MzUzLCA0NDM1NSwgNDQzNTgsIDQ0MzYxLCA0NDM2MywgCisgICAgNDQzNjUsIDQ0MzY5LCA0NDM3MiwgNDQzNzUsIDQ0Mzc4LCA0NDM4MSwgNDQzODYsIDQ0MzkxLCA0NDM5NiwgNDQ0MDEsIAorICAgIDQ0NDA2LCA0NDQwOSwgNDQ0MTEsIDQ0NDEzLCA0NDQxNSwgNDQ0MTksIDQ0NDIzLCA0NDQyNywgNDQ0MzMsIDQ0NDM4LCAKKyAgICA0NDQ0MCwgNDQ0NDIsIDQ0NDQ3LCA0NDQ1MiwgNDQ0NTcsIDQ0NDYyLCA0NDQ2NywgNDQ0NzIsIDQ0NDc0LCA0NDQ3NiwgCisgICAgNDQ0ODYsIDQ0NDkwLCA0NDQ5OCwgNDQ1MDcsIDQ0NTA5LCA0NDUxNCwgNDQ1MTksIDQ0NTI3LCA0NDUzMSwgNDQ1MzMsIAorICAgIDQ0NTM3LCA0NDUzOSwgNDQ1NDMsIDQ0NTQ3LCA0NDU1MSwgNDQ1NTMsIDQ0NTU1LCA0NDU1NywgNDQ1NjQsIDQ0NTczLCAKKyAgICA0NDU4MiwgNDQ1OTEsIDQ0NjAwLCA0NDYwOSwgNDQ2MTgsIDQ0NjI3LCA0NDYzNiwgNDQ2NDQsIDQ0NjUyLCA0NDY2MSwgCisgICAgNDQ2NzAsIDQ0Njc5LCA0NDY4OCwgNDQ2OTYsIDQ0NzA0LCA0NDcxMywgNDQ3MjIsIDQ0NzMxLCA0NDc0MSwgNDQ3NTAsIAorICAgIDQ0NzYwLCA0NDc2OSwgNDQ3NzksIDQ0Nzg3LCA0NDc5NiwgNDQ4MDYsIDQ0ODE1LCA0NDgyNSwgNDQ4MzQsIDQ0ODQ0LCAKKyAgICA0NDg1MiwgNDQ4NjEsIDQ0ODcwLCA0NDg3OSwgNDQ4ODgsIDQ0ODk3LCA0NDkwNiwgNDQ5MTYsIDQ0OTI1LCA0NDkzNCwgCisgICAgNDQ5NDMsIDQ0OTUzLCA0NDk2MiwgNDQ5NzEsIDQ0OTgwLCA0NDk4OSwgNDQ5OTksIDQ1MDA5LCA0NTAxOCwgNDUwMjcsIAorICAgIDQ1MDM1LCA0NTA0NCwgNDUwNTEsIDQ1MDYwLCA0NTA2OSwgNDUwODAsIDQ1MDg5LCA0NTA5OSwgNDUxMDksIDQ1MTE2LCAKKyAgICA0NTEyMywgNDUxMzAsIDQ1MTM5LCA0NTE0OCwgNDUxNTcsIDQ1MTY2LCA0NTE3MywgNDUxNzgsIDQ1MTg2LCA0NTE5MSwgCisgICAgNDUxOTQsIDQ1MjAxLCA0NTIwNCwgNDUyMDksIDQ1MjE0LCA0NTIxNywgNDUyMjAsIDQ1MjI4LCA0NTIzMSwgNDUyMzYsIAorICAgIDQ1MjM5LCA0NTI0NywgNDUyNTIsIDQ1MjYwLCA0NTI2MywgNDUyNjYsIDQ1MjY5LCA0NTI3NCwgNDUyNzksIDQ1MjgyLCAKKyAgICA0NTI4NSwgNDUyOTMsIDQ1Mjk2LCA0NTMwMywgNDUzMTAsIDQ1MzE0LCA0NTMxOCwgNDUzMjMsIDQ1MzI4LCA0NTMzNCwgCisgICAgNDUzMzksIDQ1MzQ1LCA0NTM1MSwgNDUzNTYsIDQ1MzYyLCA0NTM3MCwgNDUzNzYsIDQ1Mzg0LCA0NTM5MiwgNDUzOTgsIAorICAgIDQ1NDA2LCA0NTQxNCwgNDU0MjIsIDQ1NDMwLCA0NTQzNiwgNDU0NDQsIDQ1NDUyLCA0NTQ2MCwgNDU0NjQsIDQ1NDcwLCAKKyAgICA0NTQ4NCwgNDU0OTgsIDQ1NTAyLCA0NTUwNiwgNDU1MTAsIDQ1NTE0LCA0NTUyNCwgNDU1MjgsIDQ1NTMzLCA0NTUzOCwgCisgICAgNDU1NDQsIDQ1NTUwLCA0NTU1NiwgNDU1NjIsIDQ1NTcyLCA0NTU4MiwgNDU1OTAsIDQ1NjAxLCA0NTYxMiwgNDU2MjAsIAorICAgIDQ1NjMxLCA0NTY0MiwgNDU2NTAsIDQ1NjYxLCA0NTY3MiwgNDU2ODAsIDQ1Njg4LCA0NTY5OCwgNDU3MDgsIDQ1NzExLCAKKyAgICA0NTcxNCwgNDU3MTcsIDQ1NzIyLCA0NTcyNiwgNDU3MzIsIDQ1NzM5LCA0NTc0NiwgNDU3NTQsIDQ1NzYxLCA0NTc2NSwgCisgICAgNDU3NjksIDQ1NzczLCA0NTc3NywgNDU3NzksIDQ1NzgzLCA0NTc4NywgNDU3OTIsIDQ1Nzk3LCA0NTgwNCwgNDU4MTEsIAorICAgIDQ1ODE0LCA0NTgyMSwgNDU4MjMsIDQ1ODI1LCA0NTgyOSwgNDU4MzMsIDQ1ODM4LCA0NTg0NCwgNDU4NTAsIDQ1ODU2LCAKKyAgICA0NTg2MiwgNDU4NzEsIDQ1ODgwLCA0NTg4OSwgNDU4OTMsIDQ1ODk1LCA0NTg5OSwgNDU5MDYsIDQ1OTEzLCA0NTkyMCwgCisgICAgNDU5MjcsIDQ1OTM0LCA0NTkzNywgNDU5NDIsIDQ1OTQ4LCA0NTk1MSwgNDU5NTYsIDQ1OTYxLCAwLCA0NTk2NiwgNDU5NzAsIAorICAgIDQ1OTc3LCA0NTk4NCwgNDU5OTEsIDQ1OTk4LCA0NjAwMiwgNDYwMDYsIDQ2MDEwLCA0NjAxNCwgNDYwMjAsIDQ2MDI2LCAKKyAgICA0NjAzMSwgNDYwMzcsIDQ2MDQzLCA0NjA0OSwgNDYwNTUsIDQ2MDYzLCA0NjA3MCwgNDYwNzcsIDQ2MDg0LCA0NjA5MSwgCisgICAgNDYwOTYsIDQ2MTAyLCA0NjExMSwgNDYxMTUsIDQ2MTIyLCA0NjEyNiwgNDYxMzAsIDQ2MTM2LCA0NjE0MiwgNDYxNDgsIAorICAgIDQ2MTU0LCA0NjE1OCwgNDYxNjIsIDQ2MTY1LCA0NjE2OCwgNDYxNzIsIDQ2MTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjE4NiwgNDYxODksIDQ2MTkzLCAKKyAgICA0NjE5NywgNDYyMDMsIDQ2MjA5LCA0NjIxNSwgNDYyMjMsIDQ2MjMwLCA0NjIzNCwgNDYyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MjQ3LCA0NjI1MCwgNDYyNTMsIDQ2MjU2LCAKKyAgICA0NjI1OSwgNDYyNjIsIDQ2MjY1LCA0NjI2OSwgNDYyNzIsIDQ2Mjc2LCA0NjI4MCwgNDYyODQsIDQ2Mjg4LCA0NjI5MiwgCisgICAgNDYyOTYsIDQ2MzAwLCA0NjMwNCwgNDYzMDgsIDQ2MzEyLCA0NjMxNiwgNDYzMjAsIDQ2MzIzLCA0NjMyNiwgNDYzMjksIAorICAgIDQ2MzMyLCA0NjMzNSwgNDYzMzgsIDQ2MzQyLCA0NjM0NSwgNDYzNDksIDQ2MzUzLCA0NjM1NywgNDYzNjEsIDQ2MzY1LCAKKyAgICA0NjM2OSwgNDYzNzMsIDQ2Mzc3LCA0NjM4MSwgNDYzODUsIDQ2Mzg5LCA0NjM5MywgNDYzOTksIDQ2NDA1LCA0NjQxMSwgCisgICAgNDY0MTgsIDQ2NDI1LCA0NjQzMiwgNDY0MzksIDQ2NDQ2LCA0NjQ1MywgNDY0NjAsIDQ2NDY3LCA0NjQ3NCwgNDY0ODEsIAorICAgIDQ2NDg4LCA0NjQ5NSwgNDY1MDIsIDQ2NTA5LCA0NjUxNiwgNDY1MjMsIDQ2NTMwLCA0NjUzNSwgNDY1NDEsIDQ2NTQ3LCAKKyAgICA0NjU1MywgNDY1NTgsIDQ2NTY0LCA0NjU3MCwgNDY1NzYsIDQ2NTgxLCA0NjU4NywgNDY1OTMsIDQ2NTk4LCA0NjYwNCwgCisgICAgNDY2MTAsIDQ2NjE1LCA0NjYyMSwgNDY2MjcsIDQ2NjMyLCA0NjYzOCwgNDY2NDQsIDQ2NjQ5LCA0NjY1NSwgNDY2NjEsIAorICAgIDQ2NjY3LCA0NjY3MywgNDY2NzksIDQ2Njg0LCA0NjY5MCwgNDY2OTYsIDQ2NzAyLCA0NjcwNywgNDY3MTMsIDQ2NzE5LCAKKyAgICA0NjcyNSwgNDY3MzAsIDQ2NzM2LCA0Njc0MiwgNDY3NDcsIDQ2NzUzLCA0Njc1OSwgNDY3NjQsIDQ2NzcwLCA0Njc3NiwgCisgICAgNDY3ODEsIDQ2Nzg3LCA0Njc5MywgNDY3OTgsIDQ2ODA0LCA0NjgxMCwgNDY4MTYsIDQ2ODIyLCA0NjgyOCwgNDY4MzMsIAorICAgIDQ2ODM5LCA0Njg0NSwgNDY4NTEsIDQ2ODU2LCA0Njg2MiwgNDY4NjgsIDQ2ODc0LCA0Njg3OSwgNDY4ODUsIDQ2ODkxLCAKKyAgICA0Njg5NiwgNDY5MDIsIDQ2OTA4LCA0NjkxMywgNDY5MTksIDQ2OTI1LCA0NjkzMCwgNDY5MzYsIDQ2OTQyLCA0Njk0NywgCisgICAgNDY5NTMsIDQ2OTU5LCA0Njk2NSwgNDY5NzEsIDQ2OTc3LCA0Njk4MSwgNDY5ODYsIDQ2OTkxLCA0Njk5NiwgNDcwMDEsIAorICAgIDQ3MDA2LCA0NzAxMSwgNDcwMTYsIDQ3MDIxLCA0NzAyNiwgNDcwMzEsIDQ3MDM1LCA0NzAzOSwgNDcwNDMsIDQ3MDQ3LCAKKyAgICA0NzA1MSwgNDcwNTUsIDQ3MDYwLCA0NzA2NCwgNDcwNjksIDQ3MDc0LCA0NzA3OSwgNDcwODQsIDQ3MDg5LCA0NzA5NCwgCisgICAgNDcwOTksIDQ3MTA4LCA0NzExNywgNDcxMjYsIDQ3MTM1LCA0NzE0NCwgNDcxNTMsIDQ3MTYyLCA0NzE3MSwgNDcxNzgsIAorICAgIDQ3MTg2LCA0NzE5NCwgNDcyMDEsIDQ3MjA4LCA0NzIxNiwgNDcyMjQsIDQ3MjMxLCA0NzIzOCwgNDcyNDYsIDQ3MjU0LCAKKyAgICA0NzI2MSwgNDcyNjgsIDQ3Mjc2LCA0NzI4NCwgNDcyOTEsIDQ3Mjk4LCA0NzMwNiwgNDczMTUsIDQ3MzI0LCA0NzMzMiwgCisgICAgNDczNDEsIDQ3MzUwLCA0NzM1NywgNDczNjQsIDQ3MzcyLCA0NzM4MSwgNDczOTAsIDQ3Mzk4LCA0NzQwNywgNDc0MTYsIAorICAgIDQ3NDIzLCA0NzQzMCwgNDc0MzksIDQ3NDQ4LCA0NzQ1NywgNDc0NjYsIDQ3NDc1LCA0NzQ4NCwgNDc0OTEsIDQ3NDk4LCAKKyAgICA0NzUwNywgNDc1MTYsIDQ3NTI1LCA0NzUzNCwgNDc1NDMsIDQ3NTUyLCA0NzU1OSwgNDc1NjYsIDQ3NTc1LCA0NzU4NCwgCisgICAgNDc1OTMsIDQ3NjAzLCA0NzYxMywgNDc2MjIsIDQ3NjMyLCA0NzY0MiwgNDc2NTIsIDQ3NjYyLCA0NzY3MiwgNDc2ODIsIAorICAgIDQ3NjkxLCA0NzcwMCwgNDc3MDcsIDQ3NzE1LCA0NzcyMywgNDc3MzEsIDQ3NzM5LCA0Nzc0NCwgNDc3NDksIDQ3NzU4LCAKKyAgICA0Nzc2NiwgNDc3NzMsIDQ3NzgyLCA0Nzc5MCwgNDc3OTcsIDQ3ODA2LCA0NzgxNCwgNDc4MjEsIDQ3ODMwLCA0NzgzOCwgCisgICAgNDc4NDUsIDQ3ODU0LCA0Nzg2MiwgNDc4NjksIDQ3ODc4LCA0Nzg4NiwgNDc4OTMsIDQ3OTAzLCA0NzkxMiwgNDc5MTksIAorICAgIDQ3OTI5LCA0NzkzOCwgNDc5NDUsIDQ3OTU1LCA0Nzk2NCwgNDc5NzEsIDQ3OTgwLCA0Nzk4OSwgNDc5OTgsIDQ4MDA3LCAKKyAgICA0ODAyMSwgNDgwMzUsIDQ4MDQyLCA0ODA0NywgNDgwNTIsIDQ4MDU3LCA0ODA2MiwgNDgwNjcsIDQ4MDcyLCA0ODA3NywgCisgICAgNDgwODIsIDQ4MDkwLCA0ODA5OCwgNDgxMDYsIDQ4MTE0LCA0ODExOSwgNDgxMjYsIDQ4MTMzLCA0ODE0MCwgNDgxNDUsIAorICAgIDQ4MTUzLCA0ODE2MCwgNDgxNjgsIDQ4MTcyLCA0ODE3OSwgNDgxODUsIDQ4MTkyLCA0ODE5NiwgNDgyMDIsIDQ4MjA4LCAKKyAgICA0ODIxNCwgNDgyMTgsIDQ4MjIxLCA0ODIyNSwgNDgyMjksIDQ4MjM2LCA0ODI0MiwgNDgyNDgsIDQ4MjU0LCA0ODI2MCwgCisgICAgNDgyNzQsIDQ4Mjg0LCA0ODI5OCwgNDgzMTIsIDQ4MzE4LCA0ODMyOCwgNDgzNDIsIDQ4MzQ1LCA0ODM0OCwgNDgzNTUsIAorICAgIDQ4MzYzLCA0ODM2OSwgNDgzNzQsIDQ4MzgyLCA0ODM5NCwgNDg0MDYsIDQ4NDE0LCA0ODQxOCwgNDg0MjIsIDQ4NDI1LCAKKyAgICA0ODQyOCwgNDg0MzIsIDQ4NDM2LCA0ODQzOSwgNDg0NDIsIDQ4NDQ3LCA0ODQ1MiwgNDg0NTgsIDQ4NDY0LCA0ODQ2OSwgCisgICAgNDg0NzQsIDQ4NDgwLCA0ODQ4NiwgNDg0OTEsIDQ4NDk2LCA0ODUwMSwgNDg1MDYsIDQ4NTEyLCA0ODUxOCwgNDg1MjMsIAorICAgIDQ4NTI4LCA0ODUzNCwgNDg1NDAsIDQ4NTQ1LCA0ODU1MCwgNDg1NTMsIDQ4NTU2LCA0ODU2NSwgNDg1NjcsIDQ4NTY5LCAKKyAgICA0ODU3MiwgNDg1NzYsIDQ4NTgyLCA0ODU4NCwgNDg1ODcsIDQ4NTk0LCA0ODYwMSwgNDg2MDksIDQ4NjE3LCA0ODYyNywgCisgICAgNDg2NDEsIDQ4NjQ2LCA0ODY1MSwgNDg2NTUsIDQ4NjYwLCA0ODY2OCwgNDg2NzYsIDQ4Njg1LCA0ODY5NCwgNDg3MDMsIAorICAgIDQ4NzEyLCA0ODcxNywgNDg3MjIsIDQ4NzI4LCA0ODczNCwgNDg3NDAsIDQ4NzQ2LCA0ODc0OSwgNDg3NTUsIDQ4NzYxLCAKKyAgICA0ODc3MSwgNDg3ODEsIDQ4Nzg5LCA0ODc5NywgNDg4MDYsIDQ4ODE1LCA0ODgxOSwgNDg4MjcsIDQ4ODM1LCA0ODg0MywgCisgICAgNDg4NTEsIDQ4ODYwLCA0ODg2OSwgNDg4NzgsIDQ4ODg3LCA0ODg5MiwgNDg4OTcsIDQ4OTAyLCA0ODkwNywgNDg5MTIsIAorICAgIDQ4OTE4LCA0ODkyNCwgNDg5MjksIDQ4OTM1LCA0ODkzNywgNDg5MzksIDQ4OTQxLCA0ODk0MywgNDg5NDYsIDQ4OTQ5LCAKKyAgICA0ODk1MSwgNDg5NTMsIDQ4OTU1LCA0ODk1OSwgNDg5NjMsIDQ4OTY1LCA0ODk2NywgNDg5NzAsIDQ4OTczLCA0ODk3NywgCisgICAgNDg5ODMsIDQ4OTg5LCA0ODk5MSwgNDg5OTgsIDQ5MDAyLCA0OTAwNywgNDkwMTIsIDQ5MDE0LCA0OTAyNCwgNDkwMzAsIAorICAgIDQ5MDM2LCA0OTA0MiwgNDkwNDgsIDQ5MDU0LCA0OTA2MCwgNDkwNjUsIDQ5MDY4LCA0OTA3MSwgNDkwNzQsIDQ5MDc2LCAKKyAgICA0OTA3OCwgNDkwODIsIDQ5MDg2LCA0OTA5MSwgNDkwOTYsIDQ5MTAxLCA0OTEwNCwgNDkxMDgsIDQ5MTEzLCA0OTExNiwgCisgICAgNDkxMjAsIDQ5MTI1LCA0OTEzMCwgNDkxMzUsIDQ5MTQwLCA0OTE0NSwgNDkxNTAsIDQ5MTU1LCA0OTE2MCwgNDkxNjUsIAorICAgIDQ5MTcwLCA0OTE3NSwgNDkxODAsIDQ5MTg2LCA0OTE5MiwgNDkxOTgsIDQ5MjAwLCA0OTIwMywgNDkyMDUsIDQ5MjA4LCAKKyAgICA0OTIxMCwgNDkyMTIsIDQ5MjE0LCA0OTIxNiwgNDkyMTgsIDQ5MjIwLCA0OTIyMiwgNDkyMjQsIDQ5MjI2LCA0OTIyOCwgCisgICAgNDkyMzAsIDQ5MjMyLCA0OTIzNCwgNDkyMzYsIDQ5MjM4LCA0OTI0MCwgNDkyNDIsIDQ5MjQ3LCA0OTI1MiwgNDkyNTcsIAorICAgIDQ5MjYyLCA0OTI2NywgNDkyNzIsIDQ5Mjc3LCA0OTI4MiwgNDkyODcsIDQ5MjkyLCA0OTI5NywgNDkzMDIsIDQ5MzA3LCAKKyAgICA0OTMxMiwgNDkzMTcsIDQ5MzIyLCA0OTMyNywgNDkzMzIsIDQ5MzM3LCA0OTM0MiwgNDkzNDYsIDQ5MzUwLCA0OTM1NCwgCisgICAgNDkzNjAsIDQ5MzY2LCA0OTM3MSwgNDkzNzYsIDQ5MzgxLCA0OTM4NywgNDkzOTMsIDQ5Mzk4LCA0OTQwNiwgNDk0MTQsIAorICAgIDQ5NDIyLCA0OTQzMCwgNDk0MzgsIDQ5NDQ2LCA0OTQ1NCwgNDk0NjIsIDQ5NDY4LCA0OTQ3MywgNDk0NzgsIDQ5NDgzLCAKKyAgICA0OTQ4NiwgNDk0OTAsIDQ5NDk0LCA0OTQ5OCwgNDk1MDIsIDQ5NTA2LCA0OTUxMCwgNDk1MTcsIDQ5NTI0LCA0OTUzMiwgCisgICAgNDk1NDAsIDQ5NTQ1LCA0OTU1MCwgNDk1NTcsIDQ5NTY0LCA0OTU3MSwgNDk1NzgsIDQ5NTgxLCA0OTU4NCwgNDk1ODksIAorICAgIDQ5NTkxLCA0OTU5NSwgNDk2MDAsIDQ5NjAyLCA0OTYwNCwgNDk2MDYsIDQ5NjA4LCA0OTYxMywgNDk2MTYsIDQ5NjE4LCAKKyAgICA0OTYyMywgNDk2MzAsIDQ5NjM3LCA0OTY0MCwgNDk2NDQsIDQ5NjQ5LCA0OTY1NCwgNDk2NjIsIDQ5NjY4LCA0OTY3NCwgCisgICAgNDk2ODYsIDQ5NjkzLCA0OTcwMSwgNDk3MDYsIDQ5NzExLCA0OTcxNywgNDk3MjAsIDQ5NzIzLCA0OTcyOCwgNDk3MzAsIAorICAgIDQ5NzM0LCA0OTczNiwgNDk3MzgsIDQ5NzQwLCA0OTc0MiwgNDk3NDQsIDQ5NzQ2LCA0OTc1MSwgNDk3NTMsIDQ5NzU1LCAKKyAgICA0OTc1NywgNDk3NTksIDQ5NzYzLCA0OTc2NSwgNDk3NjgsIDQ5NzczLCA0OTc3OCwgNDk3ODMsIDQ5Nzg4LCA0OTc5NCwgCisgICAgNDk4MDAsIDQ5ODAyLCA0OTgwNSwgNDk4MTIsIDQ5ODE5LCA0OTgyNiwgNDk4MzMsIDQ5ODM3LCA0OTg0MSwgNDk4NDMsIAorICAgIDQ5ODQ1LCA0OTg0OSwgNDk4NTUsIDQ5ODYwLCA0OTg2MiwgNDk4NjYsIDQ5ODc1LCA0OTg4MywgNDk4OTEsIDQ5ODk3LCAKKyAgICA0OTkwMywgNDk5MDgsIDQ5OTE0LCA0OTkxOSwgNDk5MjIsIDQ5OTM2LCA0OTkzOSwgNDk5NDQsIDQ5OTQ5LCA0OTk1NSwgCisgICAgNDk5NjUsIDQ5OTY3LCA0OTk3MywgNDk5NzksIDQ5OTgzLCA0OTk5MCwgNDk5OTQsIDQ5OTk2LCA0OTk5OCwgNTAwMDIsIAorICAgIDUwMDA4LCA1MDAxMywgNTAwMTksIDUwMDIxLCA1MDAyNywgNTAwMjksIDUwMDM1LCA1MDAzNywgNTAwMzksIDUwMDQ0LCAKKyAgICA1MDA0NiwgNTAwNTAsIDUwMDU1LCA1MDA1NywgNTAwNjIsIDUwMDY3LCA1MDA3MSwgNTAwNzgsIDUwMDg4LCA1MDA5MywgCisgICAgNTAwOTksIDUwMTAyLCA1MDEwOCwgNTAxMTEsIDUwMTE2LCA1MDEyMSwgNTAxMjUsIDUwMTI3LCA1MDEyOSwgNTAxMzMsIAorICAgIDUwMTM3LCA1MDE0MSwgNTAxNDUsIDUwMTUwLCA1MDE1MiwgNTAxNTcsIDUwMTYwLCA1MDE2MywgNTAxNjYsIDUwMTcwLCAKKyAgICA1MDE3NCwgNTAxNzksIDUwMTgzLCA1MDE4OCwgNTAxOTMsIDUwMTk3LCA1MDIwMiwgNTAyMDgsIDUwMjExLCA1MDIxNywgCisgICAgNTAyMjIsIDUwMjI2LCA1MDIzMSwgNTAyMzcsIDUwMjQzLCA1MDI1MCwgNTAyNTYsIDUwMjYzLCA1MDI3MCwgNTAyNzIsIAorICAgIDUwMjc5LCA1MDI4MywgNTAyODksIDUwMjk1LCA1MDMwMCwgNTAzMDYsIDUwMzEwLCA1MDMxNSwgNTAzMTgsIDUwMzIzLCAKKyAgICA1MDMyOSwgNTAzMzYsIDUwMzQ0LCA1MDM1MSwgNTAzNjAsIDUwMzcwLCA1MDM3NywgNTAzODMsIDUwMzg3LCA1MDM5NCwgCisgICAgNTAzOTksIDUwNDA4LCA1MDQxMSwgNTA0MTQsIDUwNDIzLCA1MDQzMywgNTA0NDAsIDUwNDQyLCA1MDQ0OCwgNTA0NTMsIAorICAgIDUwNDU1LCA1MDQ1OCwgNTA0NjIsIDUwNDcwLCA1MDQ3OSwgNTA0ODIsIDUwNDg3LCA1MDQ5MiwgNTA1MDAsIDUwNTA4LCAKKyAgICA1MDUxNiwgNTA1MjQsIDUwNTMwLCA1MDUzNiwgNTA1NDIsIDUwNTUwLCA1MDU1NSwgNTA1NTgsIDUwNTYyLCA1MDU2NSwgCisgICAgNTA1NzcsIDUwNTg3LCA1MDU5OCwgNTA2MDcsIDUwNjE4LCA1MDYyOCwgNTA2MzcsIDUwNjQzLCA1MDY1MSwgNTA2NTUsIAorICAgIDUwNjYzLCA1MDY2NywgNTA2NzUsIDUwNjgyLCA1MDY4OSwgNTA2OTgsIDUwNzA3LCA1MDcxNywgNTA3MjcsIDUwNzM3LCAKKyAgICA1MDc0NywgNTA3NTYsIDUwNzY1LCA1MDc3NSwgNTA3ODUsIDUwNzk0LCA1MDgwMywgNTA4MDksIDUwODE1LCA1MDgyMSwgCisgICAgNTA4MjcsIDUwODMzLCA1MDgzOSwgNTA4NDYsIDUwODUyLCA1MDg1OSwgNTA4NjYsIDUwODcyLCA1MDg3OCwgNTA4ODQsIAorICAgIDUwODkwLCA1MDg5NiwgNTA5MDIsIDUwOTA5LCA1MDkxNSwgNTA5MjIsIDUwOTI5LCA1MDkzNiwgNTA5NDMsIDUwOTUwLCAKKyAgICA1MDk1NywgNTA5NjQsIDUwOTcxLCA1MDk3OSwgNTA5ODYsIDUwOTk0LCA1MTAwMiwgNTEwMDcsIDUxMDEwLCA1MTAxNCwgCisgICAgNTEwMTgsIDUxMDI0LCA1MTAyNywgNTEwMzIsIDUxMDM4LCA1MTA0MywgNTEwNDcsIDUxMDUyLCA1MTA1OCwgNTEwNjUsIAorICAgIDUxMDY4LCA1MTA3NSwgNTEwODIsIDUxMDg2LCA1MTA5NCwgNTExMDIsIDUxMTA3LCA1MTExMywgNTExMTgsIDUxMTIzLCAKKyAgICA1MTEzMCwgNTExMzcsIDUxMTQ1LCA1MTE1MywgNTExNjIsIDUxMTY2LCA1MTE3NSwgNTExODAsIDUxMTg0LCA1MTE5MSwgCisgICAgNTExOTUsIDUxMjAxLCA1MTIwOSwgNTEyMTQsIDUxMjIxLCA1MTIyNSwgNTEyMzAsIDUxMjM0LCA1MTIzOSwgNTEyNDMsIAorICAgIDUxMjQ4LCA1MTI1MywgNTEyNjIsIDUxMjY0LCA1MTI2NywgNTEyNzAsIDUxMjc3LCA1MTI4NCwgNTEyOTAsIDUxMjk4LCAKKyAgICA1MTMwNCwgNTEzMTEsIDUxMzE2LCA1MTMxOSwgNTEzMjQsIDUxMzI5LCA1MTMzNCwgNTEzNDIsIDUxMzQ2LCA1MTM1MywgCisgICAgNTEzNjEsIDUxMzY5LCA1MTM3NCwgNTEzNzksIDUxMzg1LCA1MTM5MCwgNTEzOTUsIDUxNDAxLCA1MTQwNiwgNTE0MDksIAorICAgIDUxNDEzLCA1MTQxNywgNTE0MjQsIDUxNDM0LCA1MTQzOSwgNTE0NDgsIDUxNDU3LCA1MTQ2MywgNTE0NjksIDUxNDc0LCAKKyAgICA1MTQ3OSwgNTE0ODQsIDUxNDg5LCA1MTQ5NSwgNTE1MDEsIDUxNTA5LCA1MTUxNywgNTE1MjMsIDUxNTI5LCA1MTUzMywgCisgICAgNTE1MzcsIDUxNTQ0LCA1MTU1MSwgNTE1NTcsIDUxNTYwLCA1MTU2MywgNTE1NjcsIDUxNTcxLCA1MTU3NSwgNTE1ODAsIAorICAgIDUxNTg2LCA1MTU5MiwgNTE1OTksIDUxNjA2LCA1MTYxMSwgNTE2MTUsIDUxNjE5LCA1MTYyMywgNTE2MjcsIDUxNjMxLCAKKyAgICA1MTYzNSwgNTE2MzksIDUxNjQzLCA1MTY0NywgNTE2NTEsIDUxNjU1LCA1MTY1OSwgNTE2NjMsIDUxNjY3LCA1MTY3MSwgCisgICAgNTE2NzUsIDUxNjc5LCA1MTY4MywgNTE2ODcsIDUxNjkxLCA1MTY5NSwgNTE2OTksIDUxNzAzLCA1MTcwNywgNTE3MTEsIAorICAgIDUxNzE1LCA1MTcxOSwgNTE3MjMsIDUxNzI3LCA1MTczMSwgNTE3MzUsIDUxNzM5LCA1MTc0MywgNTE3NDcsIDUxNzUxLCAKKyAgICA1MTc1NSwgNTE3NTksIDUxNzYzLCA1MTc2NywgNTE3NzEsIDUxNzc1LCA1MTc3OSwgNTE3ODMsIDUxNzg3LCA1MTc5MSwgCisgICAgNTE3OTUsIDUxNzk5LCA1MTgwMywgNTE4MDcsIDUxODExLCA1MTgxNSwgNTE4MTksIDUxODIzLCA1MTgyNywgNTE4MzEsIAorICAgIDUxODM1LCA1MTgzOSwgNTE4NDMsIDUxODQ3LCA1MTg1MSwgNTE4NTUsIDUxODU5LCA1MTg2MywgNTE4NjcsIDUxODcxLCAKKyAgICA1MTg3NSwgNTE4NzksIDUxODgzLCA1MTg4NywgNTE4OTEsIDUxODk1LCA1MTg5OSwgNTE5MDMsIDUxOTA3LCA1MTkxMSwgCisgICAgNTE5MTUsIDUxOTE5LCA1MTkyMywgNTE5MjcsIDUxOTMxLCA1MTkzNSwgNTE5MzksIDUxOTQzLCA1MTk0NywgNTE5NTEsIAorICAgIDUxOTU1LCA1MTk1OSwgNTE5NjMsIDUxOTY3LCA1MTk3MSwgNTE5NzUsIDUxOTc5LCA1MTk4MywgNTE5ODcsIDUxOTkxLCAKKyAgICA1MTk5NSwgNTE5OTksIDUyMDAzLCA1MjAwNywgNTIwMTEsIDUyMDE1LCA1MjAxOSwgNTIwMjMsIDUyMDI3LCA1MjAzMSwgCisgICAgNTIwMzUsIDUyMDM5LCA1MjA0MywgNTIwNDcsIDUyMDUxLCA1MjA1NSwgNTIwNTksIDUyMDYzLCA1MjA2NywgNTIwNzEsIAorICAgIDUyMDc1LCA1MjA3OSwgNTIwODMsIDUyMDg3LCA1MjA5MSwgNTIwOTUsIDUyMDk5LCA1MjEwMywgNTIxMDcsIDUyMTExLCAKKyAgICA1MjExNSwgNTIxMTksIDUyMTIzLCA1MjEyNywgNTIxMzEsIDUyMTM1LCA1MjEzOSwgNTIxNDMsIDUyMTQ3LCA1MjE1MSwgCisgICAgNTIxNTUsIDUyMTU5LCA1MjE2MywgNTIxNjcsIDUyMTcxLCA1MjE3NSwgNTIxNzksIDUyMTgzLCA1MjE4NywgNTIxOTEsIAorICAgIDUyMTk1LCA1MjE5OSwgNTIyMDMsIDUyMjA3LCA1MjIxMSwgNTIyMTUsIDUyMjE5LCA1MjIyMywgNTIyMjcsIDUyMjMxLCAKKyAgICA1MjIzNSwgNTIyMzksIDUyMjQzLCA1MjI0NywgNTIyNTEsIDUyMjU1LCA1MjI1OSwgNTIyNjMsIDUyMjY3LCA1MjI3MSwgCisgICAgNTIyNzUsIDUyMjc5LCA1MjI4MywgNTIyODcsIDUyMjkxLCA1MjI5NSwgNTIyOTksIDUyMzAzLCA1MjMwNywgNTIzMTEsIAorICAgIDUyMzE1LCA1MjMxOSwgNTIzMjMsIDUyMzI3LCA1MjMzMSwgNTIzMzUsIDUyMzM5LCA1MjM0MywgNTIzNDcsIDUyMzUxLCAKKyAgICA1MjM1NSwgNTIzNTksIDUyMzYzLCA1MjM2NywgNTIzNzEsIDUyMzc1LCA1MjM3OSwgNTIzODMsIDUyMzg3LCA1MjM5MSwgCisgICAgNTIzOTUsIDUyMzk5LCA1MjQwMywgNTI0MDcsIDUyNDExLCA1MjQxNSwgNTI0MTksIDUyNDIzLCA1MjQyNywgNTI0MzEsIAorICAgIDUyNDM1LCA1MjQzOSwgNTI0NDMsIDUyNDQ3LCA1MjQ1MSwgNTI0NTUsIDUyNDU5LCA1MjQ2MywgNTI0NjcsIDUyNDcxLCAKKyAgICA1MjQ3NSwgNTI0NzksIDUyNDgzLCA1MjQ4NywgNTI0OTEsIDUyNDk1LCA1MjQ5OSwgNTI1MDMsIDUyNTA3LCA1MjUxMSwgCisgICAgNTI1MTUsIDUyNTE5LCA1MjUyMywgNTI1MjcsIDUyNTMxLCA1MjUzNSwgNTI1MzksIDUyNTQzLCA1MjU0NywgNTI1NTEsIAorICAgIDUyNTU1LCA1MjU1OSwgNTI1NjMsIDUyNTY3LCA1MjU3MSwgNTI1NzUsIDUyNTc5LCA1MjU4MywgNTI1ODcsIDUyNTkxLCAKKyAgICA1MjU5NSwgNTI1OTksIDUyNjAzLCA1MjYwNywgNTI2MTEsIDUyNjE1LCA1MjYxOSwgNTI2MjMsIDUyNjI3LCA1MjYzMSwgCisgICAgNTI2MzUsIDUyNjQyLCA1MjY1MCwgNTI2NTYsIDUyNjYyLCA1MjY2OSwgNTI2NzYsIDUyNjgyLCA1MjY4OCwgNTI2OTQsIAorICAgIDUyNzAwLCA1MjcwNCwgNTI3MDgsIDUyNzEzLCA1MjcxOCwgNTI3MjQsIDUyNzMwLCA1MjczOCwgNTI3NDUsIDUyNzUwLCAKKyAgICA1Mjc1NSwgNTI3NjMsIDUyNzcyLCA1Mjc3OSwgNTI3ODksIDUyODAwLCA1MjgwMywgNTI4MDYsIDUyODEwLCA1MjgxNCwgCisgICAgNTI4MjEsIDUyODI4LCA1MjgzOSwgNTI4NTAsIDUyODU5LCA1Mjg2OCwgNTI4NzQsIDUyODgwLCA1Mjg4NywgNTI4OTQsIAorICAgIDUyOTAzLCA1MjkxMywgNTI5MjQsIDUyOTM0LCA1Mjk0NCwgNTI5NTQsIDUyOTY1LCA1Mjk3NiwgNTI5ODYsIDUyOTk3LCAKKyAgICA1MzAwNywgNTMwMTcsIDUzMDI2LCA1MzAzNiwgNTMwNDYsIDUzMDU2LCA1MzA2NiwgNTMwNzMsIDUzMDgwLCA1MzA4NywgCisgICAgNTMwOTQsIDUzMTA0LCA1MzExNCwgNTMxMjIsIDUzMTMwLCA1MzEzNywgNTMxNDQsIDUzMTUxLCA1MzE1OCwgNTMxNjUsIAorICAgIDUzMTcwLCA1MzE3NSwgNTMxODEsIDUzMTg5LCA1MzE5OCwgNTMyMDYsIDUzMjE0LCA1MzIyMiwgNTMyMzAsIDUzMjM4LCAKKyAgICA1MzI0NiwgNTMyNTQsIDUzMjYyLCA1MzI3MSwgNTMyODAsIDUzMjg5LCA1MzI5OCwgNTMzMDcsIDUzMzE2LCA1MzMyNSwgCisgICAgNTMzMzQsIDUzMzQzLCA1MzM1MiwgNTMzNjEsIDUzMzcwLCA1MzM3OSwgNTMzODgsIDUzMzk3LCA1MzQwNiwgNTM0MjAsIAorICAgIDUzNDM1LCA1MzQ0OSwgNTM0NjQsIDUzNDc4LCA1MzQ5MiwgNTM1MDYsIDUzNTIwLCA1MzUzMCwgNTM1NDEsIDUzNTUxLCAKKyAgICA1MzU2MiwgNTM1NzcsIDUzNTkyLCA1MzYwMCwgNTM2MDYsIDUzNjEzLCA1MzYyMCwgNTM2MjcsIDUzNjM0LCA1MzYzOSwgCisgICAgNTM2NDUsIDUzNjUwLCA1MzY1NSwgNTM2NjEsIDUzNjY2LCA1MzY3MSwgNTM2NzYsIDUzNjgxLCA1MzY4NiwgNTM2OTMsIAorICAgIDUzNjk5LCA1MzcwNywgNTM3MTIsIDUzNzE3LCA1MzcyMSwgNTM3MjUsIDUzNzMzLCA1Mzc0MSwgNTM3NDksIDUzNzU3LCAKKyAgICA1Mzc2NCwgNTM3NzEsIDUzNzg0LCA1Mzc5NywgNTM4MTAsIDUzODIzLCA1MzgzMSwgNTM4MzksIDUzODQ1LCA1Mzg1MSwgCisgICAgNTM4NTgsIDUzODY1LCA1Mzg3MiwgNTM4NzksIDUzODgzLCA1Mzg4OCwgNTM4OTYsIDUzOTA0LCA1MzkxMiwgNTM5MTksIAorICAgIDUzOTIzLCA1MzkzMSwgNTM5MzksIDUzOTQzLCA1Mzk0NywgNTM5NTIsIDUzOTU5LCA1Mzk2NywgNTM5NzUsIDUzOTk0LCAKKyAgICA1NDAxMywgNTQwMzIsIDU0MDUxLCA1NDA3MCwgNTQwODksIDU0MTA4LCA1NDEyNywgNTQxMzMsIDU0MTQwLCA1NDE0OSwgCisgICAgNTQxNTcsIDU0MTY1LCA1NDE3MSwgNTQxNzQsIDU0MTc3LCA1NDE4MiwgNTQxODUsIDU0MjA1LCA1NDIxMiwgNTQyMTgsIAorICAgIDU0MjI0LCA1NDIyOCwgNTQyMzEsIDU0MjM0LCA1NDIzNywgNTQyNDksIDU0MjYzLCA1NDI3MCwgNTQyNzcsIDU0MjgwLCAKKyAgICA1NDI4NCwgNTQyODcsIDU0MjkyLCA1NDI5NywgNTQzMDIsIDU0MzA4LCA1NDMxNywgNTQzMjQsIDU0MzMxLCA1NDMzOSwgCisgICAgNTQzNDYsIDU0MzUzLCA1NDM1NiwgNTQzNjIsIDU0MzY4LCA1NDM3MSwgNTQzNzQsIDU0Mzc5LCA1NDM4NCwgNTQzOTAsIAorICAgIDU0Mzk2LCA1NDQwMCwgNTQ0MDUsIDU0NDEyLCA1NDQxNiwgNTQ0MjIsIDU0NDI2LCA1NDQzMCwgNTQ0MzgsIDU0NDUwLCAKKyAgICA1NDQ1OSwgNTQ0NjMsIDU0NDY1LCA1NDQ3NCwgNTQ0ODMsIDU0NDg5LCA1NDQ5MiwgNTQ0OTgsIDU0NTA0LCA1NDUwOSwgCisgICAgNTQ1MTQsIDU0NTE5LCA1NDUyNCwgNTQ1MjksIDU0NTM0LCA1NDUzNiwgNTQ1NDIsIDU0NTQ3LCA1NDU1NSwgNTQ1NTksIAorICAgIDU0NTY1LCA1NDU2OCwgNTQ1NzIsIDU0NTc5LCA1NDU4NiwgNTQ1ODgsIDU0NTkwLCA1NDU5NiwgNTQ2MDIsIDU0NjA4LCAKKyAgICA1NDYxNywgNTQ2MjYsIDU0NjMzLCA1NDY0MCwgNTQ2NDYsIDU0NjUzLCA1NDY1OCwgNTQ2NjMsIDU0NjY4LCA1NDY3NCwgCisgICAgNTQ2ODAsIDU0Njg1LCA1NDY5MiwgNTQ2OTYsIDU0NzAwLCA1NDcxMywgNTQ3MjYsIDU0NzM4LCA1NDc0NywgNTQ3NTMsIAorICAgIDU0NzYwLCA1NDc2NSwgNTQ3NzAsIDU0Nzc1LCA1NDc4MCwgNTQ3ODUsIDU0Nzg3LCA1NDc5NCwgNTQ4MDIsIDU0ODEwLCAKKyAgICA1NDgxOCwgNTQ4MjUsIDU0ODMzLCA1NDgzOSwgNTQ4NDQsIDU0ODUwLCA1NDg1NiwgNTQ4NjIsIDU0ODY5LCA1NDg3NSwgCisgICAgNTQ4ODMsIDU0ODkxLCA1NDg5OSwgNTQ5MDcsIDU0OTE1LCA1NDkyMSwgNTQ5MjcsIDU0OTM2LCA1NDk0MCwgNTQ5NDksIAorICAgIDU0OTU4LCA1NDk2NywgNTQ5NzUsIDU0OTc5LCA1NDk4NSwgNTQ5OTIsIDU0OTk5LCA1NTAwMywgNTUwMDksIDU1MDE3LCAKKyAgICA1NTAyMywgNTUwMjgsIDU1MDM0LCA1NTAzOSwgNTUwNDQsIDU1MDUxLCA1NTA1OCwgNTUwNjMsIDU1MDY4LCA1NTA3NiwgCisgICAgNTUwODQsIDU1MDk0LCA1NTEwNCwgNTUxMTEsIDU1MTE4LCA1NTEyMiwgNTUxMjYsIDU1MTM4LCA1NTE0NCwgNTUxNTEsIAorICAgIDU1MTU2LCA1NTE2MSwgNTUxNjgsIDU1MTc1LCA1NTE4MSwgNTUxODcsIDU1MTk3LCA1NTIwNCwgNTUyMTIsIDU1MjIwLCAKKyAgICA1NTIyOSwgNTUyMzYsIDU1MjQyLCA1NTI0OSwgNTUyNTUsIDU1MjYzLCA1NTI3MSwgNTUyNzksIDU1Mjg3LCA1NTI5MywgCisgICAgNTUyOTgsIDU1MzA4LCA1NTMxOSwgNTUzMjYsIDU1MzM1LCA1NTM0MSwgNTUzNDYsIDU1MzUxLCA1NTM2MSwgNTUzNjgsIAorICAgIDU1Mzc0LCA1NTM4MCwgNTUzODgsIDU1MzkzLCA1NTQwMCwgNTU0MDcsIDU1NDE4LCA1NTQyNSwgNTU0MzIsIDU1NDM5LCAKKyAgICA1NTQ0NiwgNTU0NTMsIDU1NDYxLCA1NTQ2OSwgNTU0ODIsIDU1NDk1LCA1NTUwNywgNTU1MTksIDU1NTMzLCA1NTU0NywgCisgICAgNTU1NTMsIDU1NTU5LCA1NTU2OCwgNTU1NzcsIDU1NTg0LCA1NTU5MSwgNTU2MDAsIDU1NjA5LCA1NTYxOCwgNTU2MjcsIAorICAgIDU1NjM1LCA1NTY0MywgNTU2NTMsIDU1NjYzLCA1NTY3NywgNTU2OTEsIDU1NzAwLCA1NTcwOSwgNTU3MjIsIDU1NzM1LCAKKyAgICA1NTc0NCwgNTU3NTMsIDU1NzY0LCA1NTc3NSwgNTU3ODEsIDU1Nzg3LCA1NTc5NiwgNTU4MDUsIDU1ODEwLCA1NTgxNSwgCisgICAgNTU4MjMsIDU1ODI5LCA1NTgzNSwgNTU4NDMsIDU1ODUxLCA1NTg2NCwgNTU4NzcsIDU1ODgxLCA1NTg4NSwgNTU4OTMsIAorICAgIDU1OTAxLCA1NTkwOCwgNTU5MTYsIDU1OTI0LCA1NTkzMywgNTU5NDIsIDU1OTQ4LCA1NTk1NCwgNTU5NjEsIDU1OTY4LCAKKyAgICA1NTk3NSwgNTU5ODIsIDU1OTkxLCA1NjAwMCwgNTYwMDMsIDU2MDA2LCA1NjAxMSwgNTYwMTYsIDU2MDIyLCA1NjAyOCwgCisgICAgNTYwMzUsIDU2MDQyLCA1NjA1MywgNTYwNjQsIDU2MDcxLCA1NjA3OCwgNTYwODYsIDU2MDk0LCA1NjEwMiwgNTYxMTAsIAorICAgIDU2MTE4LCA1NjEyNiwgNTYxMzIsIDU2MTM4LCA1NjE0MiwgNTYxNDYsIDU2MTU0LCA1NjE2MiwgNTYxNjcsIDU2MTcyLCAKKyAgICA1NjE3NywgNTYxODIsIDU2MTg4LCA1NjIwMiwgNTYyMDksIDU2MjE2LCA1NjIyMCwgNTYyMjIsIDU2MjI0LCA1NjIyOSwgCisgICAgNTYyMzQsIDU2MjM5LCA1NjI0NCwgNTYyNTIsIDU2MjU5LCA1NjI2NiwgNTYyNzQsIDU2Mjg2LCA1NjI5NCwgNTYzMDIsIAorICAgIDU2MzEzLCA1NjMxNywgNTYzMjEsIDU2MzI3LCA1NjMzNSwgNTYzNDgsIDU2MzU1LCA1NjM2MiwgNTYzNjksIDU2Mzc1LCAKKyAgICA1NjM4MiwgNTYzOTEsIDU2NDAwLCA1NjQwNiwgNTY0MTIsIDU2NDE4LCA1NjQyOCwgNTY0MzgsIDU2NDQ2LCA1NjQ1NSwgCisgICAgNTY0NjAsIDU2NDYzLCA1NjQ2OCwgNTY0NzMsIDU2NDc4LCA1NjQ4NCwgNTY0OTAsIDU2NDk0LCA1NjQ5NywgNTY1MDAsIAorICAgIDU2NTAzLCA1NjUwOCwgNTY1MTMsIDU2NTE5LCA1NjUyNSwgNTY1MjksIDU2NTMzLCA1NjU0MCwgNTY1NDcsIDU2NTU0LCAKKyAgICA1NjU2MSwgNTY1NjgsIDU2NTc1LCA1NjU4NSwgNTY1OTUsIDU2NjAyLCA1NjYwOSwgNTY2MTcsIDU2NjI1LCA1NjYyOSwgCisgICAgNTY2MzQsIDU2NjM5LCA1NjY0NSwgNTY2NTEsIDU2NjU0LCA1NjY1NywgNTY2NjAsIDU2NjYzLCA1NjY2OCwgNTY2NzMsIAorICAgIDU2Njc4LCA1NjY4MywgNTY2ODgsIDU2NjkzLCA1NjY5NywgNTY3MDEsIDU2NzA1LCA1NjcxMCwgNTY3MTUsIDU2NzE5LCAKKyAgICA1NjcyMywgNTY3MjksIDU2NzMzLCA1NjczOSwgNTY3NDQsIDU2NzUxLCA1Njc1OSwgNTY3NjYsIDU2Nzc0LCA1Njc4MSwgCisgICAgNTY3ODksIDU2Nzk4LCA1NjgwNSwgNTY4MTUsIDU2ODI2LCA1NjgzMiwgNTY4NDEsIDU2ODQ3LCA1Njg1NiwgNTY4NjUsIAorICAgIDU2ODcxLCA1Njg3NywgNTY4ODEsIDU2ODg1LCA1Njg5NCwgNTY5MDMsIDU2OTEwLCA1NjkxNywgNTY5MjYsIDU2OTM1LCAKKyAgICA1Njk0MSwgNTY5NDcsIDU2OTU0LCA1Njk1OSwgNTY5NjMsIDU2OTY3LCA1Njk3MiwgNTY5NzcsIDU2OTgyLCA1Njk5MCwgCisgICAgNTY5OTgsIDU3MDAxLCA1NzAwNSwgNTcwMTQsIDU3MDI0LCA1NzAzMywgNTcwNDMsIDU3MDU0LCA1NzA2NywgNTcwNzEsIAorICAgIDU3MDc1LCA1NzA3OSwgNTcwODMsIDU3MDg4LCA1NzA5MywgNTcwOTksIDU3MTA1LCA1NzExMiwgNTcxMTksIDU3MTI1LCAKKyAgICA1NzEzMSwgNTcxMzcsIDU3MTQzLCA1NzE1MSwgNTcxNTksIDU3MTY2LCA1NzE3MywgNTcxODAsIDAsIDAsIDU3MTg3LCAKKyAgICA1NzE5NiwgNTcyMDUsIDU3MjE1LCA1NzIyNSwgNTcyMzQsIDU3MjQzLCA1NzI1MiwgNTcyNjEsIDU3MjY3LCA1NzI3MiwgCisgICAgNTcyODEsIDU3MjkxLCA1NzMwMCwgNTczMTAsIDU3MzE3LCA1NzMyNCwgNTczMzEsIDU3MzM4LCA1NzM0MywgNTczNDgsIAorICAgIDU3MzUzLCA1NzM1OCwgNTczNjYsIDU3Mzc1LCA1NzM4MywgNTczOTIsIDU3Mzk2LCA1NzQwMCwgNTc0MDQsIDU3NDA4LCAKKyAgICA1NzQxOCwgMCwgMCwgNTc0MjEsIDU3NDMwLCA1NzQzOSwgNTc0NDgsIDU3NDU3LCA1NzQ2MywgNTc0NjksIDU3NDc1LCAKKyAgICA1NzQ4MSwgNTc0OTEsIDU3NTAxLCA1NzUxMSwgNTc1MjEsIDU3NTMxLCA1NzU0MSwgNTc1NTEsIDU3NTYxLCA1NzU2OCwgCisgICAgNTc1NzUsIDU3NTgyLCA1NzU4OSwgNTc1OTYsIDU3NjAzLCA1NzYxMCwgNTc2MTcsIDU3NjIzLCA1NzYyOSwgNTc2MzUsIAorICAgIDU3NjQxLCA1NzY0NywgNTc2NTMsIDU3NjU5LCA1NzY2NSwgNTc2NzYsIDAsIDAsIDAsIDU3Njg2LCA1NzY5MywgNTc2OTYsIAorICAgIDU3NzAwLCA1NzcwNCwgNTc3MDksIDU3NzE0LCA1NzcxOSwgNTc3MjIsIDU3NzMxLCA1Nzc0MCwgNTc3NDksIDAsIDU3NzU4LCAKKyAgICA1Nzc2NCwgNTc3NzAsIDU3Nzc4LCA1Nzc4OCwgNTc3OTUsIDU3ODA0LCA1NzgwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4MTIsIDU3ODIxLCAKKyAgICA1NzgzMCwgNTc4MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3ODQ4LCAKKyAgICA1Nzg1MywgNTc4NTgsIDU3ODYzLCA1Nzg2OCwgNTc4NzMsIDU3ODc4LCA1Nzg4MywgNTc4ODgsIDU3ODkzLCA1Nzg5OCwgCisgICAgNTc5MDQsIDU3OTA4LCA1NzkxMywgNTc5MTgsIDU3OTIzLCA1NzkyOCwgNTc5MzMsIDU3OTM4LCA1Nzk0MywgNTc5NDgsIAorICAgIDU3OTUzLCA1Nzk1OCwgNTc5NjMsIDU3OTY4LCA1Nzk3MywgNTc5NzgsIDU3OTgzLCA1Nzk4OCwgNTc5OTMsIDU3OTk4LCAKKyAgICA1ODAwMywgNTgwMDgsIDU4MDEzLCA1ODAxOCwgNTgwMjQsIDU4MDI5LCA1ODAzNSwgNTgwNDQsIDU4MDQ5LCA1ODA1NywgCisgICAgNTgwNjQsIDU4MDczLCA1ODA3OCwgNTgwODMsIDU4MDg4LCA1ODA5NCwgMCwgNTgxMDEsIDU4MTA2LCA1ODExMSwgNTgxMTYsIAorICAgIDU4MTIxLCA1ODEyNiwgNTgxMzEsIDU4MTM2LCA1ODE0MSwgNTgxNDYsIDU4MTUxLCA1ODE1NywgNTgxNjEsIDU4MTY2LCAKKyAgICA1ODE3MSwgNTgxNzYsIDU4MTgxLCA1ODE4NiwgNTgxOTEsIDU4MTk2LCA1ODIwMSwgNTgyMDYsIDU4MjExLCA1ODIxNiwgCisgICAgNTgyMjEsIDU4MjI2LCA1ODIzMSwgNTgyMzYsIDU4MjQxLCA1ODI0NiwgNTgyNTEsIDU4MjU2LCA1ODI2MSwgNTgyNjYsIAorICAgIDU4MjcxLCA1ODI3NywgNTgyODIsIDU4Mjg4LCA1ODI5NywgNTgzMDIsIDU4MzEwLCA1ODMxNywgNTgzMjYsIDU4MzMxLCAKKyAgICA1ODMzNiwgNTgzNDEsIDU4MzQ3LCAwLCA1ODM1NCwgNTgzNjIsIDU4MzcwLCA1ODM3OSwgNTgzODYsIDU4Mzk0LCA1ODQwMCwgCisgICAgNTg0MDksIDU4NDE3LCA1ODQyNSwgNTg0MzMsIDU4NDQxLCA1ODQ0OSwgNTg0NTcsIDU4NDYyLCA1ODQ2OSwgNTg0NzUsIAorICAgIDU4NDgyLCA1ODQ5MCwgNTg0OTcsIDU4NTA0LCA1ODUxMiwgNTg1MTgsIDU4NTI0LCA1ODUzMSwgNTg1MzgsIDU4NTQ4LCAKKyAgICA1ODU1OCwgNTg1NjUsIDU4NTcyLCA1ODU3NywgNTg1ODcsIDU4NTk3LCA1ODYwMiwgNTg2MDcsIDU4NjEyLCA1ODYxNywgCisgICAgNTg2MjIsIDU4NjI3LCA1ODYzMiwgNTg2MzcsIDU4NjQyLCA1ODY0NywgNTg2NTIsIDU4NjU3LCA1ODY2MiwgNTg2NjcsIAorICAgIDU4NjcyLCA1ODY3NywgNTg2ODIsIDU4Njg3LCA1ODY5MiwgNTg2OTcsIDU4NzAyLCA1ODcwNywgNTg3MTIsIDU4NzE3LCAKKyAgICA1ODcyMiwgNTg3MjcsIDU4NzMyLCA1ODczNywgNTg3NDIsIDU4NzQ3LCA1ODc1MSwgNTg3NTUsIDU4NzYwLCA1ODc2NSwgCisgICAgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkwLCA1ODc5NSwgNTg4MDAsIDU4ODA1LCA1ODgxMCwgNTg4MTUsIAorICAgIDU4ODIwLCA1ODgyNSwgNTg4MzAsIDU4ODM1LCA1ODg0MCwgNTg4NDUsIDU4ODUyLCA1ODg1OSwgNTg4NjYsIDU4ODczLCAKKyAgICA1ODg4MCwgNTg4ODcsIDU4ODk0LCA1ODkwMSwgNTg5MDgsIDU4OTE1LCA1ODkyMiwgNTg5MjksIDU4OTM2LCA1ODk0MywgCisgICAgNTg5NDgsIDU4OTUzLCA1ODk2MCwgNTg5NjcsIDU4OTc0LCA1ODk4MSwgNTg5ODgsIDU4OTk1LCA1OTAwMiwgNTkwMDksIAorICAgIDU5MDE2LCA1OTAyMywgNTkwMzAsIDU5MDM3LCA1OTA0MywgNTkwNDksIDU5MDU1LCA1OTA2MSwgNTkwNjgsIDU5MDc1LCAKKyAgICA1OTA4MiwgNTkwODksIDU5MDk2LCA1OTEwMywgNTkxMTAsIDU5MTE3LCA1OTEyNCwgNTkxMzEsIDU5MTM5LCA1OTE0NywgCisgICAgNTkxNTUsIDU5MTYzLCA1OTE3MSwgNTkxNzksIDU5MTg3LCA1OTE5NSwgNTkxOTksIDU5MjA1LCA1OTIxMSwgNTkyMTUsIAorICAgIDU5MjIxLCA1OTIyNywgNTkyMzMsIDU5MjQwLCA1OTI0NywgNTkyNTQsIDU5MjYxLCA1OTI2NiwgNTkyNzIsIDU5Mjc4LCAKKyAgICA1OTI4NSwgMCwgMCwgMCwgMCwgMCwgNTkyOTIsIDU5MzAwLCA1OTMwOSwgNTkzMTgsIDU5MzI2LCA1OTMzMiwgNTkzMzcsIAorICAgIDU5MzQyLCA1OTM0NywgNTkzNTIsIDU5MzU3LCA1OTM2MiwgNTkzNjcsIDU5MzcyLCA1OTM3NywgNTkzODIsIDU5Mzg3LCAKKyAgICA1OTM5MiwgNTkzOTcsIDU5NDAyLCA1OTQwNywgNTk0MTIsIDU5NDE3LCA1OTQyMiwgNTk0MjcsIDU5NDMyLCA1OTQzNywgCisgICAgNTk0NDIsIDU5NDQ3LCA1OTQ1MiwgNTk0NTcsIDU5NDYyLCA1OTQ2NywgNTk0NzIsIDU5NDc3LCA1OTQ4MiwgNTk0ODcsIAorICAgIDU5NDkyLCA1OTQ5NywgNTk1MDIsIDU5NTA3LCA1OTUxMiwgNTk1MTcsIDU5NTIyLCA1OTUyNywgMCwgNTk1MzIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU5NTM3LCAwLCAwLCA1OTU0MiwgNTk1NDYsIDU5NTUxLCA1OTU1NiwgNTk1NjEsIDU5NTY2LCA1OTU3NSwgCisgICAgNTk1ODAsIDU5NTg1LCA1OTU5MCwgNTk1OTUsIDU5NjAwLCA1OTYwNSwgNTk2MTAsIDU5NjE1LCA1OTYyMiwgNTk2MjcsIAorICAgIDU5NjMyLCA1OTY0MSwgNTk2NDgsIDU5NjUzLCA1OTY1OCwgNTk2NjMsIDU5NjcwLCA1OTY3NSwgNTk2ODIsIDU5Njg3LCAKKyAgICA1OTY5MiwgNTk2OTksIDU5NzA2LCA1OTcxMSwgNTk3MTYsIDU5NzIxLCA1OTcyOCwgNTk3MzUsIDU5NzQwLCA1OTc0NSwgCisgICAgNTk3NTAsIDU5NzU1LCA1OTc2MCwgNTk3NjcsIDU5Nzc0LCA1OTc3OSwgNTk3ODQsIDU5Nzg5LCA1OTc5NCwgNTk3OTksIAorICAgIDU5ODA0LCA1OTgwOSwgNTk4MTQsIDU5ODE5LCA1OTgyNCwgNTk4MjksIDU5ODM2LCA1OTg0MSwgNTk4NDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU5ODUxLCA1OTg1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTk4NjMsIDU5ODY4LCA1OTg3MiwgNTk4NzYsIDU5ODgwLCA1OTg4NCwgNTk4ODgsIDU5ODkyLCA1OTg5NiwgNTk5MDAsIAorICAgIDU5OTA0LCA1OTkwOCwgNTk5MTQsIDU5OTE4LCA1OTkyMiwgNTk5MjYsIDU5OTMwLCA1OTkzNCwgNTk5MzgsIDU5OTQyLCAKKyAgICA1OTk0NiwgNTk5NTAsIDU5OTU0LCA1OTk1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5NjIsIDU5OTY2LCAKKyAgICA1OTk3MCwgNTk5NzQsIDU5OTc4LCA1OTk4MiwgNTk5ODYsIDAsIDU5OTkwLCA1OTk5NCwgNTk5OTgsIDYwMDAyLCA2MDAwNiwgCisgICAgNjAwMTAsIDYwMDE0LCAwLCA2MDAxOCwgNjAwMjIsIDYwMDI2LCA2MDAzMCwgNjAwMzQsIDYwMDM4LCA2MDA0MiwgMCwgCisgICAgNjAwNDYsIDYwMDUwLCA2MDA1NCwgNjAwNTgsIDYwMDYyLCA2MDA2NiwgNjAwNzAsIDAsIDYwMDc0LCA2MDA3OCwgNjAwODIsIAorICAgIDYwMDg2LCA2MDA5MCwgNjAwOTQsIDYwMDk4LCAwLCA2MDEwMiwgNjAxMDYsIDYwMTEwLCA2MDExNCwgNjAxMTgsIDYwMTIyLCAKKyAgICA2MDEyNiwgMCwgNjAxMzAsIDYwMTM0LCA2MDEzOCwgNjAxNDIsIDYwMTQ2LCA2MDE1MCwgNjAxNTQsIDAsIDYwMTU4LCAKKyAgICA2MDE2MiwgNjAxNjYsIDYwMTcwLCA2MDE3NCwgNjAxNzgsIDYwMTgyLCAwLCA2MDE4NiwgNjAxOTEsIDYwMTk2LCA2MDIwMSwgCisgICAgNjAyMDYsIDYwMjExLCA2MDIxNiwgNjAyMjAsIDYwMjI1LCA2MDIzMCwgNjAyMzUsIDYwMjM5LCA2MDI0NCwgNjAyNDksIAorICAgIDYwMjU0LCA2MDI1OSwgNjAyNjMsIDYwMjY4LCA2MDI3MywgNjAyNzgsIDYwMjgzLCA2MDI4OCwgNjAyOTMsIDYwMjk3LCAKKyAgICA2MDMwMiwgNjAzMDcsIDYwMzE0LCA2MDMxOSwgNjAzMjQsIDYwMzMwLCA2MDMzNywgNjAzNDQsIDYwMzUzLCA2MDM2MCwgCisgICAgNjAzNjksIDYwMzczLCA2MDM3NywgNjAzODMsIDYwMzg5LCA2MDM5NSwgNjA0MDMsIDYwNDA5LCA2MDQxMywgNjA0MTcsIAorICAgIDYwNDIxLCA2MDQyNywgNjA0MzMsIDYwNDM3LCA2MDQzOSwgNjA0NDMsIDYwNDQ5LCA2MDQ1MSwgNjA0NTUsIDYwNDU4LCAKKyAgICA2MDQ2MSwgNjA0NjcsIDYwNDcyLCA2MDQ3NiwgNjA0ODAsIDYwNDg1LCA2MDQ5MSwgNjA0OTYsIDYwNTAxLCA2MDUwNiwgCisgICAgNjA1MTEsIDYwNTE4LCA2MDUyNSwgNjA1MzAsIDYwNTM1LCA2MDU0MCwgNjA1NDUsIDYwNTUwLCA2MDU1NSwgNjA1NTksIAorICAgIDYwNTYzLCA2MDU3MCwgNjA1NzcsIDYwNTgzLCA2MDU4NywgNjA1OTIsIDYwNTk1LCA2MDU5OSwgNjA2MDYsIDYwNjEwLCAKKyAgICA2MDYxNCwgNjA2MTgsIDYwNjIyLCA2MDYyOCwgNjA2MzQsIDYwNjM4LCA2MDY0NCwgNjA2NDgsIDYwNjUyLCA2MDY1OCwgCisgICAgNjA2NjMsIDYwNjY4LCA2MDY3MCwgNjA2NzMsIDYwNjc3LCA2MDY4MywgNjA2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNDUwLCAzMTQ1NiwgMzE0NjIsIDMxNDY2LCAzMTQ3MCwgMzE0NzQsIAotICAgIDMxNDc4LCAzMTQ4NCwgMzE0ODgsIDMxNDk0LCAzMTQ5OCwgMzE1MDQsIDMxNTEwLCAzMTUxOCwgMzE1MjQsIDMxNTMyLCAKLSAgICAzMTUzNiwgMzE1NDAsIDMxNTQ0LCAzMTU1MCwgMzE1NTMsIDMxNTU5LCAzMTU2MywgMzE1NjksIDMxNTczLCAzMTU3NywgCi0gICAgMzE1ODMsIDMxNTg3LCAzMTU5MywgMzE1OTcsIDMxNjAzLCAzMTYxMSwgMzE2MTksIDMxNjI3LCAzMTYzMywgMzE2MzcsIAotICAgIDMxNjQzLCAzMTY0NywgMzE2NTMsIDMxNjU3LCAzMTY2MCwgMzE2NjYsIDMxNjcwLCAzMTY3NiwgMzE2NzksIDMxNjgyLCAKLSAgICAzMTY4NiwgMzE2OTAsIDMxNjk0LCAzMTcwMCwgMzE3MDYsIDMxNzEwLCAzMTcxMywgMzE3MTcsIDMxNzIyLCAzMTcyNywgCi0gICAgMzE3MzQsIDMxNzM5LCAzMTc0NiwgMzE3NTMsIDMxNzYyLCAzMTc2OSwgMzE3NzgsIDMxNzgzLCAzMTc5MCwgMzE3OTcsIAotICAgIDMxODA2LCAzMTgxMSwgMzE4MTgsIDMxODIzLCAzMTgyOSwgMzE4MzUsIDMxODQxLCAzMTg0NywgMzE4NTMsIDMxODU5LCAwLCAKLSAgICAwLCAwLCAwLCAzMTg2NSwgMzE4NjksIDMxODcyLCAzMTg3NSwgMzE4NzgsIDMxODgxLCAzMTg4NCwgMzE4ODcsIDMxODkxLCAKLSAgICAzMTg5NCwgMzE4OTgsIDMxOTAxLCAzMTkwNCwgMzE5MDcsIDMxOTEyLCAzMTkxNywgMzE5MjIsIDMxOTI1LCAzMTkzMCwgCi0gICAgMzE5MzUsIDMxOTQwLCAzMTk0NSwgMzE5NTIsIDMxOTU3LCAzMTk2MiwgMzE5NjcsIDMxOTcyLCAzMTk3OSwgMzE5ODUsIAotICAgIDMxOTkxLCAzMTk5NywgMzIwMDMsIDMyMDA5LCAzMjAxOCwgMzIwMjcsIDMyMDMzLCAzMjAzOSwgMzIwNDcsIDMyMDU1LCAKLSAgICAzMjA2NCwgMzIwNzMsIDMyMDgxLCAzMjA4OSwgMzIwOTgsIDMyMTA3LCAwLCAwLCAwLCAzMjExNSwgMzIxMjAsIDMyMTI1LCAKLSAgICAzMjEzMCwgMzIxMzQsIDMyMTM4LCAzMjE0MiwgMzIxNDcsIDMyMTUxLCAzMjE1NSwgMzIxNjAsIDMyMTY0LCAzMjE2OSwgCi0gICAgMzIxNzQsIDMyMTc5LCAzMjE4NCwgMzIxODksIDMyMTk0LCAzMjE5OSwgMzIyMDQsIDMyMjA5LCAzMjIxNCwgMzIyMTgsIAotICAgIDMyMjIzLCAzMjIyOCwgMzIyMzMsIDMyMjM3LCAzMjI0MSwgMzIyNDYsIDMyMjUxLCAzMjI1NiwgMzIyNjEsIDMyMjY2LCAKLSAgICAzMjI3MCwgMzIyNzYsIDMyMjgyLCAzMjI4OCwgMzIyOTQsIDMyMzAwLCAzMjMwNiwgMzIzMTIsIDMyMzE4LCAzMjMyNCwgCi0gICAgMzIzMjksIDMyMzM0LCAzMjM0MSwgMzIzNDksIDMyMzU0LCAzMjM1OSwgMzIzNjQsIDMyMzY4LCAzMjM3MiwgMzIzNzYsIAotICAgIDMyMzgwLCAzMjM4NCwgMzIzODgsIDMyMzkzLCAzMjM5NywgMzI0MDIsIDMyNDA2LCAzMjQxMSwgMzI0MTYsIDMyNDIxLCAKLSAgICAzMjQyNywgMzI0MzMsIDMyNDM3LCAzMjQ0MywgMzI0NDcsIDMyNDUzLCAzMjQ1OSwgMzI0NjQsIDMyNDcxLCAzMjQ3NSwgCi0gICAgMzI0ODEsIDMyNDg2LCAzMjQ5MywgMzI0OTgsIDMyNTA1LCAzMjUxMiwgMzI1MTcsIDMyNTI0LCAzMjUyOSwgMzI1MzQsIAotICAgIDMyNTM5LCAzMjU0NiwgMzI1NTAsIDMyNTU2LCAzMjU2MywgMzI1NzAsIDMyNTc1LCAzMjU4MiwgMzI1ODksIDMyNTkzLCAKLSAgICAzMjU5OSwgMzI2MDQsIDMyNjA5LCAzMjYxNiwgMzI2MjEsIDMyNjI2LCAzMjYzMSwgMzI2MzYsIDMyNjQwLCAzMjY0NCwgCi0gICAgMzI2NDksIDMyNjU0LCAzMjY2MSwgMzI2NjcsIDMyNjcyLCAzMjY3OSwgMzI2ODQsIDMyNjkxLCAzMjY5NiwgMzI3MDYsIAotICAgIDMyNzEyLCAzMjcxOCwgMzI3MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzI2LCAzMjczNSwgMzI3NDIsIDMyNzQ5LCAKLSAgICAzMjc1NiwgMzI3NjAsIDMyNzY1LCAzMjc3MCwgMzI3NzUsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjgwMCwgCi0gICAgMzI4MDUsIDMyODEwLCAzMjgxNSwgMzI4MjAsIDMyODI1LCAzMjgyOSwgMzI4MzQsIDMyODM5LCAzMjg0NCwgMzI4NDksIAotICAgIDMyODU0LCAzMjg1OSwgMzI4NjMsIDMyODY4LCAzMjg3MywgMzI4NzgsIDMyODgzLCAzMjg4NywgMzI4OTIsIDMyODk3LCAKLSAgICAzMjkwMSwgMzI5MDYsIDMyOTExLCAzMjkxNiwgMzI5MjEsIDMyOTI2LCAzMjkzMCwgMzI5MzYsIDMyOTQzLCAzMjk0OSwgCi0gICAgMzI5NTQsIDMyOTU5LCAzMjk2NSwgMzI5NzAsIDMyOTc2LCAzMjk4MSwgMzI5ODcsIDMyOTkzLCAzMjk5OCwgMzMwMDQsIAotICAgIDMzMDEwLCAzMzAxNSwgMzMwMjEsIDMzMDI3LCAzMzAzMywgMzMwMzgsIDAsIDAsIDAsIDMzMDQzLCAzMzA0OSwgMzMwNTksIAotICAgIDMzMDY1LCAzMzA3MywgMzMwNzksIDMzMDg0LCAzMzA4OCwgMzMwOTIsIDMzMDk2LCAzMzEwMCwgMzMxMDQsIDMzMTA4LCAKLSAgICAzMzExMywgMzMxMTcsIDAsIDAsIDAsIDMzMTIyLCAzMzEyNywgMzMxMzIsIDMzMTM3LCAzMzE0NCwgMzMxNTAsIDMzMTU2LCAKLSAgICAzMzE2MiwgMzMxNjgsIDMzMTc0LCAzMzE4MCwgMzMxODcsIDMzMTkzLCAzMzIwMCwgMzMyMDcsIDMzMjE0LCAzMzIyMSwgCi0gICAgMzMyMjgsIDMzMjM1LCAzMzI0MiwgMzMyNDksIDMzMjU2LCAzMzI2MywgMzMyNzAsIDMzMjc3LCAzMzI4NCwgMzMyOTEsIAotICAgIDMzMjk4LCAzMzMwNSwgMzMzMTIsIDMzMzE5LCAzMzMyNiwgMzMzMzMsIDMzMzQwLCAzMzM0NywgMzMzNTQsIDMzMzYxLCAKLSAgICAzMzM2OCwgMzMzNzUsIDMzMzgyLCAzMzM4OSwgMzMzOTYsIDMzNDAzLCAzMzQxMCwgMzM0MTgsIDMzNDI2LCAzMzQzNCwgCi0gICAgMzM0NDAsIDMzNDQ2LCAzMzQ1MiwgMzM0NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDMzNDY5LCAzMzQ3NywgMzM0ODUsIDMzNDkzLCAzMzUwMSwgMzM1MTEsIDMzNTIxLCAzMzUzMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMzM1NDEsIDMzNTQ2LCAzMzU1MSwgMzM1NTYsIDMzNTYxLCAzMzU3MCwgMzM1ODEsIDMzNTkwLCAzMzYwMSwgCi0gICAgMzM2MDcsIDMzNjIwLCAzMzYyNiwgMzM2MzMsIDMzNjQwLCAzMzY0NSwgMzM2NTEsIDMzNjU3LCAzMzY2OCwgMzM2NzcsIAotICAgIDMzNjg0LCAzMzY5MSwgMzM3MDAsIDMzNzA3LCAzMzcxNiwgMzM3MjYsIDMzNzM2LCAzMzc0MywgMzM3NTAsIDMzNzU3LCAKLSAgICAzMzc2NywgMzM3NzIsIDMzNzgwLCAzMzc4NiwgMzM3OTQsIDMzODAzLCAzMzgwOCwgMzM4MTUsIDMzODIxLCAzMzgyNiwgMCwgCi0gICAgMzM4MzEsIDMzODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAzMzg0NCwgMzM4NDksIDMzODU1LCAzMzg2MiwgMzM4NzAsIDMzODc2LCAKLSAgICAzMzg4MiwgMzM4ODgsIDMzODkzLCAzMzkwMCwgMzM5MDYsIDMzOTEyLCAzMzkxOCwgMzM5MjYsIDMzOTMyLCAzMzk0MCwgCi0gICAgMzM5NDUsIDMzOTUxLCAzMzk1NywgMzM5NjQsIDMzOTcyLCAzMzk3OSwgMzM5ODUsIDMzOTkyLCAzMzk5OSwgMzQwMDUsIAotICAgIDM0MDEyLCAzNDAxOSwgMzQwMjUsIDM0MDMwLCAzNDAzNiwgMzQwNDQsIDM0MDUzLCAzNDA1OSwgMzQwNjUsIDM0MDcxLCAKLSAgICAzNDA3NywgMzQwODUsIDM0MDg5LCAzNDA5NSwgMzQxMDEsIDM0MTA3LCAzNDExMywgMzQxMTksIDM0MTI1LCAzNDEyOSwgCi0gICAgMzQxMzQsIDM0MTM5LCAzNDE0NiwgMzQxNTEsIDM0MTU1LCAzNDE2MSwgMzQxNjYsIDM0MTcxLCAzNDE3NSwgMzQxODAsIAotICAgIDM0MTg1LCAzNDE4OSwgMzQxOTQsIDM0MTk5LCAzNDIwNiwgMzQyMTAsIDM0MjE1LCAzNDIyMCwgMzQyMjQsIDM0MjI5LCAKLSAgICAzNDIzMywgMzQyMzgsIDM0MjQyLCAzNDI0OCwgMzQyNTMsIDM0MjYwLCAzNDI2NSwgMzQyNzAsIDM0Mjc0LCAzNDI3OSwgCi0gICAgMzQyODQsIDM0MjkxLCAzNDI5NiwgMzQzMDIsIDM0MzA3LCAzNDMxMiwgMzQzMTcsIDM0MzIxLCAzNDMyNiwgMzQzMzMsIAotICAgIDM0MzQwLCAzNDM0NSwgMzQzNTAsIDM0MzU0LCAzNDM2MCwgMzQzNjcsIDM0MzcyLCAzNDM3NywgMzQzODIsIDM0Mzg4LCAKLSAgICAzNDM5MywgMzQzOTksIDM0NDA0LCAzNDQxMCwgMzQ0MTYsIDM0NDIyLCAzNDQyOSwgMzQ0MzYsIDM0NDQzLCAzNDQ1MCwgCi0gICAgMzQ0NTcsIDM0NDY0LCAzNDQ2OSwgMzQ0NzcsIDM0NDg2LCAzNDQ5NSwgMzQ1MDQsIDM0NTEzLCAzNDUyMiwgMzQ1MzEsIAotICAgIDM0NTQzLCAzNDU1MiwgMzQ1NjEsIDM0NTcwLCAzNDU3NywgMzQ1ODIsIDM0NTg5LCAzNDU5NywgMzQ2MDUsIDM0NjEyLCAKLSAgICAzNDYxOSwgMzQ2MjYsIDM0NjMzLCAzNDY0MSwgMzQ2NTAsIDM0NjU5LCAzNDY2OCwgMzQ2NzcsIDM0Njg2LCAzNDY5NSwgCi0gICAgMzQ3MDQsIDM0NzEzLCAzNDcyMiwgMzQ3MzEsIDM0NzQwLCAzNDc0OSwgMzQ3NTgsIDM0NzY3LCAzNDc3NSwgMzQ3ODQsIAotICAgIDM0Nzk1LCAzNDgwMywgMzQ4MTIsIDM0ODIzLCAzNDgzMiwgMzQ4NDEsIDM0ODUwLCAzNDg1OSwgMzQ4NjcsIDM0ODc2LCAKLSAgICAzNDg4MywgMzQ4ODgsIDM0ODk2LCAzNDkwMSwgMzQ5MDgsIDM0OTEzLCAzNDkyMiwgMzQ5MjgsIDM0OTM1LCAzNDk0MiwgCi0gICAgMzQ5NDcsIDM0OTUyLCAzNDk2MCwgMzQ5NjgsIDM0OTc3LCAzNDk4NiwgMzQ5OTEsIDM0OTk4LCAzNTAwOSwgMzUwMTcsIAotICAgIDM1MDI2LCAzNTAzMiwgMzUwMzgsIDM1MDQzLCAzNTA1MCwgMzUwNTUsIDM1MDY0LCAzNTA2OSwgMzUwNzQsIDM1MDc5LCAKLSAgICAzNTA4NiwgMzUwOTMsIDM1MDk4LCAzNTEwNywgMzUxMTUsIDM1MTIwLCAzNTEyNSwgMzUxMzIsIDM1MTM5LCAzNTE0MywgCi0gICAgMzUxNDcsIDM1MTUwLCAzNTE1MywgMzUxNTYsIDM1MTU5LCAzNTE2MiwgMzUxNjUsIDM1MTcyLCAzNTE3NSwgMzUxNzgsIAotICAgIDM1MTgzLCAzNTE4NywgMzUxOTEsIDM1MTk1LCAzNTE5OSwgMzUyMDMsIDM1MjEyLCAzNTIxOCwgMzUyMjQsIDM1MjMwLCAKLSAgICAzNTIzOCwgMzUyNDYsIDM1MjUyLCAzNTI1OCwgMzUyNjUsIDM1MjcxLCAzNTI3NiwgMzUyODIsIDM1Mjg5LCAzNTI5NSwgCi0gICAgMzUzMDIsIDM1MzA4LCAzNTMxNiwgMzUzMjEsIDM1MzI3LCAzNTMzMywgMzUzMzksIDM1MzQ1LCAzNTM1MSwgMzUzNTcsIAotICAgIDM1MzYzLCAzNTM3NCwgMzUzODQsIDM1MzkwLCAzNTM5NiwgMzU0MDYsIDM1NDEyLCAzNTQyMCwgMzU0MjgsIDM1NDM2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzNTQ0MSwgMzU0NDgsIDM1NDU1LCAzNTQ2MCwgMzU0NjksIDM1NDc3LCAzNTQ4NSwgMzU0OTIsIAotICAgIDM1NDk5LCAzNTUwNiwgMzU1MTMsIDM1NTIxLCAzNTUyOSwgMzU1MzksIDM1NTQ5LCAzNTU1NywgMzU1NjUsIDM1NTczLCAKLSAgICAzNTU4MSwgMzU1OTAsIDM1NTk5LCAzNTYwNywgMzU2MTUsIDM1NjI0LCAzNTYzMywgMzU2NDMsIDM1NjUzLCAzNTY2MiwgCi0gICAgMzU2NzEsIDM1Njc5LCAzNTY4NywgMzU2OTUsIDM1NzAzLCAzNTcxMywgMzU3MjMsIDM1NzMxLCAzNTczOSwgMzU3NDcsIAotICAgIDM1NzU1LCAzNTc2MywgMzU3NzEsIDM1Nzc5LCAzNTc4NywgMzU3OTUsIDM1ODAzLCAzNTgxMSwgMzU4MTksIDM1ODI4LCAKLSAgICAzNTgzNywgMzU4NDYsIDM1ODU1LCAzNTg2NSwgMzU4NzUsIDM1ODgyLCAzNTg4OSwgMzU4OTcsIDM1OTA1LCAzNTkxNCwgCi0gICAgMzU5MjMsIDM1OTMxLCAzNTkzOSwgMzU5NTEsIDM1OTYzLCAzNTk3MiwgMzU5ODEsIDM1OTkwLCAzNTk5OSwgMzYwMDYsIAotICAgIDM2MDEzLCAzNjAyMSwgMzYwMjksIDM2MDM3LCAzNjA0NSwgMzYwNTMsIDM2MDYxLCAzNjA2OSwgMzYwNzcsIDM2MDg2LCAKLSAgICAzNjA5NSwgMzYxMDQsIDM2MTEzLCAzNjEyMiwgMzYxMzEsIDM2MTQxLCAzNjE1MSwgMzYxNjEsIDM2MTcxLCAzNjE4MCwgCi0gICAgMzYxODksIDM2MTk2LCAzNjIwMywgMzYyMTEsIDM2MjE5LCAzNjIyNywgMzYyMzUsIDM2MjQzLCAzNjI1MSwgMzYyNjMsIAotICAgIDM2Mjc1LCAzNjI4NCwgMzYyOTMsIDM2MzAxLCAzNjMwOSwgMzYzMTcsIDM2MzI1LCAzNjMzNiwgMzYzNDcsIDM2MzU4LCAKLSAgICAzNjM2OSwgMzYzODEsIDM2MzkzLCAzNjQwMSwgMzY0MDksIDM2NDE3LCAzNjQyNSwgMzY0MzQsIDM2NDQzLCAzNjQ1MiwgCi0gICAgMzY0NjEsIDM2NDY5LCAzNjQ3NywgMzY0ODUsIDM2NDkzLCAzNjUwMSwgMzY1MDksIDM2NTE4LCAzNjUyNywgMzY1MzcsIAotICAgIDM2NTQ3LCAzNjU1NSwgMzY1NjMsIDM2NTcxLCAzNjU3OSwgMzY1ODcsIDM2NTk1LCAzNjYwMiwgMzY2MDksIDM2NjE3LCAKLSAgICAzNjYyNSwgMzY2MzMsIDM2NjQxLCAzNjY0OSwgMzY2NTcsIDM2NjY1LCAzNjY3MywgMzY2ODEsIDM2Njg5LCAzNjY5NywgCi0gICAgMzY3MDUsIDM2NzEzLCAzNjcyMSwgMzY3MjksIDM2NzM3LCAzNjc0NiwgMzY3NTUsIDM2NzY0LCAzNjc3MiwgMzY3ODEsIAotICAgIDM2NzkwLCAzNjc5OSwgMzY4MDgsIDM2ODE4LCAzNjgyNywgMzY4MzMsIDM2ODM4LCAzNjg0NSwgMzY4NTIsIDM2ODYwLCAKLSAgICAzNjg2OCwgMzY4NzcsIDM2ODg2LCAzNjg5NiwgMzY5MDYsIDM2OTE3LCAzNjkyOCwgMzY5MzgsIDM2OTQ4LCAzNjk1OCwgCi0gICAgMzY5NjgsIDM2OTc3LCAzNjk4NiwgMzY5OTYsIDM3MDA2LCAzNzAxNywgMzcwMjgsIDM3MDM4LCAzNzA0OCwgMzcwNTgsIAotICAgIDM3MDY4LCAzNzA3NSwgMzcwODIsIDM3MDkwLCAzNzA5OCwgMzcxMDUsIDM3MTEyLCAzNzEyMSwgMzcxMzAsIDM3MTQwLCAKLSAgICAzNzE1MCwgMzcxNjEsIDM3MTcyLCAzNzE4MiwgMzcxOTIsIDM3MjAyLCAzNzIxMiwgMzcyMjEsIDM3MjMwLCAzNzIzOCwgCi0gICAgMzcyNDYsIDM3MjUzLCAzNzI2MCwgMzcyNjgsIDM3Mjc2LCAzNzI4NSwgMzcyOTQsIDM3MzA0LCAzNzMxNCwgMzczMjUsIAotICAgIDM3MzM2LCAzNzM0NiwgMzczNTYsIDM3MzY2LCAzNzM3NiwgMzczODUsIDM3Mzk0LCAzNzQwNCwgMzc0MTQsIDM3NDI1LCAKLSAgICAzNzQzNiwgMzc0NDYsIDM3NDU2LCAzNzQ2NiwgMzc0NzYsIDM3NDgzLCAzNzQ5MCwgMzc0OTgsIDM3NTA2LCAzNzUxNSwgCi0gICAgMzc1MjQsIDM3NTM0LCAzNzU0NCwgMzc1NTUsIDM3NTY2LCAzNzU3NiwgMzc1ODYsIDM3NTk2LCAzNzYwNiwgMzc2MTQsIAotICAgIDM3NjIyLCAzNzYzMCwgMzc2MzgsIDM3NjQ3LCAzNzY1NiwgMzc2NjQsIDM3NjcyLCAzNzY3OSwgMzc2ODYsIDM3NjkzLCAKLSAgICAzNzcwMCwgMzc3MDgsIDM3NzE2LCAzNzcyNCwgMzc3MzIsIDM3NzQzLCAzNzc1NCwgMzc3NjUsIDM3Nzc2LCAzNzc4NywgCi0gICAgMzc3OTgsIDM3ODA2LCAzNzgxNCwgMzc4MjUsIDM3ODM2LCAzNzg0NywgMzc4NTgsIDM3ODY5LCAzNzg4MCwgMzc4ODgsIAotICAgIDM3ODk2LCAzNzkwNywgMzc5MTgsIDM3OTI5LCAwLCAwLCAzNzk0MCwgMzc5NDgsIDM3OTU2LCAzNzk2NywgMzc5NzgsIAotICAgIDM3OTg5LCAwLCAwLCAzODAwMCwgMzgwMDgsIDM4MDE2LCAzODAyNywgMzgwMzgsIDM4MDQ5LCAzODA2MCwgMzgwNzEsIAotICAgIDM4MDgyLCAzODA5MCwgMzgwOTgsIDM4MTA5LCAzODEyMCwgMzgxMzEsIDM4MTQyLCAzODE1MywgMzgxNjQsIDM4MTcyLCAKLSAgICAzODE4MCwgMzgxOTEsIDM4MjAyLCAzODIxMywgMzgyMjQsIDM4MjM1LCAzODI0NiwgMzgyNTQsIDM4MjYyLCAzODI3MywgCi0gICAgMzgyODQsIDM4Mjk1LCAzODMwNiwgMzgzMTcsIDM4MzI4LCAzODMzNiwgMzgzNDQsIDM4MzU1LCAzODM2NiwgMzgzNzcsIDAsIAotICAgIDAsIDM4Mzg4LCAzODM5NiwgMzg0MDQsIDM4NDE1LCAzODQyNiwgMzg0MzcsIDAsIDAsIDM4NDQ4LCAzODQ1NiwgMzg0NjQsIAotICAgIDM4NDc1LCAzODQ4NiwgMzg0OTcsIDM4NTA4LCAzODUxOSwgMCwgMzg1MzAsIDAsIDM4NTM4LCAwLCAzODU0OSwgMCwgCi0gICAgMzg1NjAsIDM4NTcxLCAzODU3OSwgMzg1ODcsIDM4NTk4LCAzODYwOSwgMzg2MjAsIDM4NjMxLCAzODY0MiwgMzg2NTMsIAotICAgIDM4NjYxLCAzODY2OSwgMzg2ODAsIDM4NjkxLCAzODcwMiwgMzg3MTMsIDM4NzI0LCAzODczNSwgMzg3NDMsIDM4NzUxLCAKLSAgICAzODc1OSwgMzg3NjcsIDM4Nzc1LCAzODc4MywgMzg3OTEsIDM4Nzk5LCAzODgwNywgMzg4MTUsIDM4ODIzLCAzODgzMSwgCi0gICAgMzg4MzksIDAsIDAsIDM4ODQ3LCAzODg1OCwgMzg4NjksIDM4ODgzLCAzODg5NywgMzg5MTEsIDM4OTI1LCAzODkzOSwgCi0gICAgMzg5NTMsIDM4OTY0LCAzODk3NSwgMzg5ODksIDM5MDAzLCAzOTAxNywgMzkwMzEsIDM5MDQ1LCAzOTA1OSwgMzkwNzAsIAotICAgIDM5MDgxLCAzOTA5NSwgMzkxMDksIDM5MTIzLCAzOTEzNywgMzkxNTEsIDM5MTY1LCAzOTE3NiwgMzkxODcsIDM5MjAxLCAKLSAgICAzOTIxNSwgMzkyMjksIDM5MjQzLCAzOTI1NywgMzkyNzEsIDM5MjgyLCAzOTI5MywgMzkzMDcsIDM5MzIxLCAzOTMzNSwgCi0gICAgMzkzNDksIDM5MzYzLCAzOTM3NywgMzkzODgsIDM5Mzk5LCAzOTQxMywgMzk0MjcsIDM5NDQxLCAzOTQ1NSwgMzk0NjksIAotICAgIDM5NDgzLCAzOTQ5MSwgMzk0OTksIDM5NTEwLCAzOTUxOCwgMCwgMzk1MjksIDM5NTM3LCAzOTU0OCwgMzk1NTYsIDM5NTY0LCAKLSAgICAzOTU3MiwgMzk1ODAsIDM5NTg4LCAzOTU5MSwgMzk1OTQsIDM5NTk3LCAzOTYwMCwgMzk2MDYsIDM5NjE3LCAzOTYyNSwgMCwgCi0gICAgMzk2MzYsIDM5NjQ0LCAzOTY1NSwgMzk2NjMsIDM5NjcxLCAzOTY3OSwgMzk2ODcsIDM5Njk1LCAzOTcwMSwgMzk3MDcsIAotICAgIDM5NzEzLCAzOTcyMSwgMzk3MjksIDM5NzQwLCAwLCAwLCAzOTc1MSwgMzk3NTksIDM5NzcwLCAzOTc3OCwgMzk3ODYsIAotICAgIDM5Nzk0LCAwLCAzOTgwMiwgMzk4MDgsIDM5ODE0LCAzOTgyMCwgMzk4MjgsIDM5ODM2LCAzOTg0NywgMzk4NTgsIDM5ODY2LCAKLSAgICAzOTg3NCwgMzk4ODIsIDM5ODkzLCAzOTkwMSwgMzk5MDksIDM5OTE3LCAzOTkyNSwgMzk5MzMsIDM5OTM5LCAzOTk0NSwgMCwgCi0gICAgMCwgMzk5NDgsIDM5OTU5LCAzOTk2NywgMCwgMzk5NzgsIDM5OTg2LCAzOTk5NywgNDAwMDUsIDQwMDEzLCA0MDAyMSwgCi0gICAgNDAwMjksIDQwMDM3LCA0MDA0MCwgMCwgNDAwNDMsIDQwMDQ3LCA0MDA1MSwgNDAwNTUsIDQwMDU5LCA0MDA2MywgNDAwNjcsIAotICAgIDQwMDcxLCA0MDA3NSwgNDAwNzksIDQwMDgzLCA0MDA4NywgNDAwOTMsIDQwMDk5LCA0MDEwNSwgNDAxMDgsIDQwMTExLCAKLSAgICA0MDExMywgNDAxMTcsIDQwMTIxLCA0MDEyNSwgNDAxMjksIDQwMTMyLCA0MDEzNiwgNDAxNDAsIDQwMTQ2LCA0MDE1MiwgCi0gICAgNDAxNTksIDQwMTY2LCA0MDE3MSwgNDAxNzYsIDQwMTgyLCA0MDE4OCwgNDAxOTAsIDQwMTkzLCA0MDE5NSwgNDAxOTksIAotICAgIDQwMjAzLCA0MDIwNywgNDAyMTEsIDQwMjE1LCA0MDIxOSwgNDAyMjMsIDQwMjI3LCA0MDIzMSwgNDAyMzcsIDQwMjQxLCAKLSAgICA0MDI0NSwgNDAyNTEsIDQwMjU2LCA0MDI2MywgNDAyNjUsIDQwMjY4LCA0MDI3MiwgNDAyNzYsIDQwMjgxLCA0MDI4NywgCi0gICAgNDAyODksIDQwMjk4LCA0MDMwNywgNDAzMTAsIDQwMzE0LCA0MDMxNiwgNDAzMTgsIDQwMzIwLCA0MDMyMywgNDAzMjksIAotICAgIDQwMzMxLCA0MDMzNSwgNDAzMzksIDQwMzQ2LCA0MDM1MywgNDAzNTcsIDQwMzYyLCA0MDM2NywgNDAzNzIsIDQwMzc3LCAKLSAgICA0MDM4MSwgNDAzODUsIDQwMzg4LCA0MDM5MiwgNDAzOTYsIDQwNDAzLCA0MDQwOCwgNDA0MTIsIDQwNDE2LCA0MDQyMSwgCi0gICAgNDA0MjUsIDQwNDI5LCA0MDQzNCwgNDA0MzksIDQwNDQzLCA0MDQ0NywgNDA0NTEsIDQwNDUzLCA0MDQ1OCwgNDA0NjMsIAotICAgIDQwNDY3LCA0MDQ3MSwgNDA0NzUsIDQwNDc5LCAwLCA0MDQ4MywgNDA0ODcsIDQwNDkxLCA0MDQ5NywgNDA1MDMsIDQwNTA5LCAKLSAgICA0MDUxNSwgNDA1MjIsIDQwNTI5LCA0MDUzNCwgNDA1MzksIDQwNTQzLCAwLCAwLCA0MDU0OSwgNDA1NTIsIDQwNTU1LCAKLSAgICA0MDU1OCwgNDA1NjIsIDQwNTY1LCA0MDU2OSwgNDA1NzMsIDQwNTc3LCA0MDU4MiwgNDA1ODcsIDQwNTkyLCA0MDU5OSwgCi0gICAgNDA2MDMsIDQwNjA2LCA0MDYwOSwgNDA2MTIsIDQwNjE1LCA0MDYxOCwgNDA2MjEsIDQwNjI1LCA0MDYyOCwgNDA2MzIsIAotICAgIDQwNjM2LCA0MDY0MCwgNDA2NDUsIDQwNjUwLCAwLCA0MDY1NSwgNDA2NjEsIDQwNjY3LCA0MDY3MywgNDA2ODAsIDQwNjg3LCAKLSAgICA0MDY5NCwgNDA3MDEsIDQwNzA3LCA0MDcxNCwgNDA3MjEsIDQwNzI4LCA0MDczNCwgMCwgMCwgMCwgNDA3NDEsIDQwNzQ0LCAKLSAgICA0MDc0NywgNDA3NTAsIDQwNzU1LCA0MDc1OCwgNDA3NjEsIDQwNzY0LCA0MDc2NywgNDA3NzAsIDQwNzczLCA0MDc3OCwgCi0gICAgNDA3ODEsIDQwNzg0LCA0MDc4NywgNDA3OTAsIDQwNzkzLCA0MDc5OCwgNDA4MDEsIDQwODA0LCA0MDgwNywgNDA4MTAsIAotICAgIDQwODEzLCA0MDgxOCwgNDA4MjEsIDQwODI0LCA0MDgyOSwgNDA4MzQsIDQwODM4LCA0MDg0MSwgNDA4NDQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwODQ3LCA0MDg1MiwgNDA4NTcsIDQwODY0LCAKLSAgICA0MDg3MiwgNDA4NzcsIDQwODgyLCA0MDg4NiwgNDA4OTAsIDQwODk1LCA0MDkwMiwgNDA5MDksIDQwOTEzLCA0MDkxOCwgCi0gICAgNDA5MjMsIDQwOTI4LCA0MDkzMywgNDA5NDAsIDQwOTQ1LCA0MDk1MCwgNDA5NTUsIDQwOTY0LCA0MDk3MSwgNDA5NzgsIAotICAgIDQwOTgyLCA0MDk4NywgNDA5OTMsIDQwOTk4LCA0MTAwNSwgNDEwMTMsIDQxMDIxLCA0MTAyNSwgNDEwMjksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMDMzLCA0MTAzNywgNDEwNDUsIDQxMDQ5LCA0MTA1MywgCi0gICAgNDEwNTgsIDQxMDYyLCA0MTA2NiwgNDEwNzAsIDQxMDcyLCA0MTA3NiwgNDEwODAsIDQxMDg0LCA0MTA4OSwgNDEwOTMsIAotICAgIDQxMDk3LCA0MTEwNSwgNDExMDgsIDQxMTEyLCA0MTExNSwgNDExMTgsIDQxMTI0LCA0MTEyOCwgNDExMzEsIDQxMTM3LCAKLSAgICA0MTE0MSwgNDExNDUsIDQxMTQ5LCA0MTE1MiwgNDExNTYsIDQxMTU5LCA0MTE2MywgNDExNjUsIDQxMTY4LCA0MTE3MSwgCi0gICAgNDExNzUsIDQxMTc3LCA0MTE4MSwgNDExODQsIDQxMTg3LCA0MTE5MiwgNDExOTcsIDQxMjA0LCA0MTIwNywgNDEyMTAsIAotICAgIDQxMjE0LCA0MTIxOSwgNDEyMjIsIDQxMjI1LCA0MTIyOCwgNDEyMzIsIDQxMjM3LCA0MTI0MSwgNDEyNDQsIDQxMjQ2LCAKLSAgICA0MTI0OSwgNDEyNTIsIDQxMjU1LCA0MTI1OSwgNDEyNjQsIDQxMjY3LCA0MTI3MSwgNDEyNzUsIDQxMjc5LCA0MTI4MywgCi0gICAgNDEyODgsIDQxMjk0LCA0MTI5OSwgNDEzMDQsIDQxMzEwLCA0MTMxNSwgNDEzMjAsIDQxMzI0LCA0MTMyOCwgNDEzMzMsIAotICAgIDQxMzM3LCA0MTM0MSwgNDEzNDQsIDQxMzQ2LCA0MTM1MSwgNDEzNTcsIDQxMzY0LCA0MTM3MSwgNDEzNzgsIDQxMzg1LCAKLSAgICA0MTM5MiwgNDEzOTksIDQxNDA2LCA0MTQxMywgNDE0MjEsIDQxNDI4LCA0MTQzNiwgNDE0NDMsIDQxNDUwLCA0MTQ1OCwgCi0gICAgNDE0NjYsIDQxNDcxLCA0MTQ3NiwgNDE0ODEsIDQxNDg2LCA0MTQ5MSwgNDE0OTYsIDQxNTAxLCA0MTUwNywgNDE1MTIsIAotICAgIDQxNTE4LCA0MTUyNCwgNDE1MzAsIDQxNTM2LCA0MTU0MiwgNDE1NDksIDQxNTU3LCA0MTU2NCwgNDE1NzAsIDQxNTc2LCAKLSAgICA0MTU4MiwgNDE1ODgsIDQxNTk0LCA0MTYwMCwgNDE2MDcsIDQxNjEzLCA0MTYyMCwgNDE2MjcsIDQxNjM0LCA0MTY0MSwgCi0gICAgNDE2NDgsIDQxNjU2LCA0MTY2NSwgNDE2NzMsIDQxNjg0LCA0MTY5MiwgNDE3MDAsIDQxNzA5LCA0MTcxNiwgNDE3MjUsIAotICAgIDQxNzM0LCA0MTc0MiwgNDE3NTEsIDQxNzU5LCA0MTc2MywgMCwgMCwgMCwgMCwgNDE3NjcsIDQxNzY5LCA0MTc3MSwgCi0gICAgNDE3NzMsIDQxNzc1LCA0MTc3OCwgNDE3ODEsIDQxNzg1LCA0MTc4OSwgNDE3OTQsIDQxNzk5LCA0MTgwMywgNDE4MDcsIAotICAgIDQxODExLCA0MTgxNSwgNDE4MjAsIDQxODI1LCA0MTgzMCwgNDE4MzUsIDQxODQwLCA0MTg0NSwgNDE4NTAsIDQxODU1LCAKLSAgICA0MTg2MCwgNDE4NjUsIDQxODcxLCA0MTg3NSwgNDE4NzksIDQxODg0LCA0MTg4OSwgNDE4OTQsIDQxODk5LCA0MTkwMywgCi0gICAgNDE5MTAsIDQxOTE3LCA0MTkyNCwgNDE5MzEsIDQxOTM4LCA0MTk0NSwgNDE5NTIsIDQxOTU5LCA0MTk2NywgNDE5NzksIAotICAgIDQxOTg1LCA0MTk5MSwgNDE5OTgsIDQyMDA1LCA0MjAxMiwgNDIwMTksIDQyMDI2LCA0MjAzMywgNDIwNDAsIDQyMDQ3LCAKLSAgICA0MjA1MiwgNDIwNTgsIDQyMDYzLCA0MjA2OCwgNDIwNzMsIDQyMDc4LCA0MjA4MywgNDIwOTAsIDQyMDk3LCA0MjEwMiwgCi0gICAgNDIxMDgsIDQyMTEzLCA0MjExNiwgNDIxMTksIDQyMTIyLCA0MjEyNSwgNDIxMjksIDQyMTMzLCA0MjEzOCwgNDIxNDMsIAotICAgIDQyMTQ5LCA0MjE1NSwgNDIxNTksIDQyMTYzLCA0MjE2NywgNDIxNzEsIDQyMTc2LCA0MjE4MSwgNDIxODUsIDQyMTg5LCAKLSAgICA0MjE5MywgNDIxOTcsIDQyMjAyLCA0MjIwNywgNDIyMTAsIDQyMjEzLCA0MjIxNiwgNDIyMTksIDQyMjI1LCA0MjIzMiwgCi0gICAgNDIyNDMsIDQyMjUzLCA0MjI1NywgNDIyNjUsIDQyMjcyLCA0MjI4MCwgNDIyODksIDQyMjkzLCA0MjI5OSwgNDIzMDUsIAotICAgIDQyMzA5LCA0MjMxNCwgNDIzMTksIDQyMzI1LCA0MjMzMSwgNDIzMzcsIDQyMzQ0LCA0MjM0OCwgNDIzNTIsIDQyMzU3LCAKLSAgICA0MjM2MCwgNDIzNjIsIDQyMzY2LCA0MjM3MCwgNDIzNzgsIDQyMzgyLCA0MjM4NCwgNDIzODYsIDQyMzkwLCA0MjM5OCwgCi0gICAgNDI0MDMsIDQyNDA5LCA0MjQxOSwgNDI0MjYsIDQyNDMxLCA0MjQzNSwgNDI0MzksIDQyNDQzLCA0MjQ0NiwgNDI0NDksIAotICAgIDQyNDUyLCA0MjQ1NiwgNDI0NjAsIDQyNDY0LCA0MjQ2OCwgNDI0NzIsIDQyNDc1LCA0MjQ3OSwgNDI0ODMsIDQyNDg2LCAKLSAgICA0MjQ4OCwgNDI0OTEsIDQyNDkzLCA0MjQ5NywgNDI1MDEsIDQyNTAzLCA0MjUwOSwgNDI1MTIsIDQyNTE3LCA0MjUyMSwgCi0gICAgNDI1MjUsIDQyNTI3LCA0MjUyOSwgNDI1MzEsIDQyNTM0LCA0MjUzOCwgNDI1NDIsIDQyNTQ2LCA0MjU1MCwgNDI1NTQsIAotICAgIDQyNTYwLCA0MjU2NiwgNDI1NjgsIDQyNTcwLCA0MjU3MiwgNDI1NzQsIDQyNTc3LCA0MjU3OSwgNDI1ODMsIDQyNTg1LCAKLSAgICA0MjU4OSwgNDI1OTMsIDQyNTk4LCA0MjYwMiwgNDI2MDYsIDQyNjEwLCA0MjYxNCwgNDI2MTgsIDQyNjI0LCA0MjYyOCwgCi0gICAgNDI2MzgsIDQyNjQ4LCA0MjY1MiwgNDI2NTgsIDQyNjY1LCA0MjY2OSwgNDI2NzMsIDQyNjc2LCA0MjY4MSwgNDI2ODUsIAotICAgIDQyNjkxLCA0MjY5NSwgNDI3MDgsIDQyNzE3LCA0MjcyMSwgNDI3MjUsIDQyNzMxLCA0MjczNSwgNDI3MzgsIDQyNzQwLCAKLSAgICA0Mjc0MywgNDI3NDcsIDQyNzUxLCA0Mjc1OCwgNDI3NjIsIDQyNzY2LCA0Mjc3MCwgNDI3NzMsIDQyNzc4LCA0Mjc4MywgCi0gICAgNDI3ODksIDQyNzk1LCA0MjgwMCwgNDI4MDUsIDQyODEzLCA0MjgyMSwgNDI4MjUsIDQyODI5LCA0MjgzMSwgNDI4MzYsIAotICAgIDQyODQwLCA0Mjg0NCwgNDI4NTIsIDQyODYwLCA0Mjg2NywgNDI4NzQsIDQyODgzLCA0Mjg5MiwgNDI4OTgsIDQyOTA0LCAKLSAgICA0MjkxMiwgNDI5MjAsIDQyOTIyLCA0MjkyNCwgNDI5MzAsIDQyOTM2LCA0Mjk0MywgNDI5NTAsIDQyOTU2LCA0Mjk2MiwgCi0gICAgNDI5NjYsIDQyOTcwLCA0Mjk3NywgNDI5ODQsIDQyOTkxLCA0Mjk5OCwgNDMwMDgsIDQzMDE4LCA0MzAyNiwgNDMwMzQsIAotICAgIDQzMDM2LCA0MzA0MCwgNDMwNDQsIDQzMDQ5LCA0MzA1NCwgNDMwNjIsIDQzMDcwLCA0MzA3MywgNDMwNzYsIDQzMDc5LCAKLSAgICA0MzA4MiwgNDMwODUsIDQzMDkwLCA0MzA5NCwgNDMwOTksIDQzMTA0LCA0MzEwNywgNDMxMTAsIDQzMTEzLCA0MzExNiwgCi0gICAgNDMxMTksIDQzMTIzLCA0MzEyNiwgNDMxMjksIDQzMTMyLCA0MzEzNSwgNDMxMzcsIDQzMTM5LCA0MzE0MSwgNDMxNDMsIAotICAgIDQzMTUxLCA0MzE1OSwgNDMxNjUsIDQzMTY5LCA0MzE3NSwgNDMxODUsIDQzMTkxLCA0MzE5NywgNDMyMDMsIDQzMjExLCAKLSAgICA0MzIyMCwgNDMyMzIsIDQzMjM2LCA0MzI0MCwgNDMyNDIsIDQzMjQ4LCA0MzI1MCwgNDMyNTIsIDQzMjU0LCA0MzI1NiwgCi0gICAgNDMyNjIsIDQzMjY1LCA0MzI3MSwgNDMyNzcsIDQzMjgxLCA0MzI4NSwgNDMyODksIDQzMjkyLCA0MzI5NiwgNDMzMDAsIAotICAgIDQzMzAyLCA0MzMxMSwgNDMzMjAsIDQzMzI1LCA0MzMzMCwgNDMzMzYsIDQzMzQyLCA0MzM0OCwgNDMzNTEsIDQzMzU0LCAKLSAgICA0MzM1NywgNDMzNjAsIDQzMzYyLCA0MzM2NywgNDMzNzIsIDQzMzc3LCA0MzM4MywgNDMzODksIDQzMzk4LCA0MzQwNywgCi0gICAgNDM0MTQsIDQzNDIxLCA0MzQyOCwgNDM0MzUsIDQzNDQ1LCA0MzQ1NSwgNDM0NjUsIDQzNDc1LCA0MzQ4NSwgNDM0OTUsIAotICAgIDQzNTA0LCA0MzUxMywgNDM1MjIsIDQzNTMxLCA0MzUzOSwgNDM1NTEsIDQzNTYyLCA0MzU3OCwgNDM1ODEsIDQzNTg3LCAKLSAgICA0MzU5MywgNDM1OTksIDQzNjA3LCA0MzYyMiwgNDM2MzgsIDQzNjQ0LCA0MzY1MCwgNDM2NTcsIDQzNjYzLCA0MzY3MiwgCi0gICAgNDM2NzksIDQzNjkzLCA0MzcwOCwgNDM3MTMsIDQzNzE5LCA0MzcyNywgNDM3MzAsIDQzNzMzLCA0MzczNSwgNDM3MzgsIAotICAgIDQzNzQxLCA0Mzc0MywgNDM3NDUsIDQzNzQ5LCA0Mzc1MiwgNDM3NTUsIDQzNzU4LCA0Mzc2MSwgNDM3NjYsIDQzNzcxLCAKLSAgICA0Mzc3NiwgNDM3ODEsIDQzNzg2LCA0Mzc4OSwgNDM3OTEsIDQzNzkzLCA0Mzc5NSwgNDM3OTksIDQzODAzLCA0MzgwNywgCi0gICAgNDM4MTMsIDQzODE4LCA0MzgyMCwgNDM4MjIsIDQzODI3LCA0MzgzMiwgNDM4MzcsIDQzODQyLCA0Mzg0NywgNDM4NTIsIAotICAgIDQzODU0LCA0Mzg1NiwgNDM4NjYsIDQzODcwLCA0Mzg3OCwgNDM4ODcsIDQzODg5LCA0Mzg5NCwgNDM4OTksIDQzOTA3LCAKLSAgICA0MzkxMSwgNDM5MTMsIDQzOTE3LCA0MzkxOSwgNDM5MjMsIDQzOTI3LCA0MzkzMSwgNDM5MzMsIDQzOTM1LCA0MzkzNywgCi0gICAgNDM5NDQsIDQzOTUzLCA0Mzk2MiwgNDM5NzEsIDQzOTgwLCA0Mzk4OSwgNDM5OTgsIDQ0MDA3LCA0NDAxNiwgNDQwMjQsIAotICAgIDQ0MDMyLCA0NDA0MSwgNDQwNTAsIDQ0MDU5LCA0NDA2OCwgNDQwNzYsIDQ0MDg0LCA0NDA5MywgNDQxMDIsIDQ0MTExLCAKLSAgICA0NDEyMSwgNDQxMzAsIDQ0MTQwLCA0NDE0OSwgNDQxNTksIDQ0MTY3LCA0NDE3NiwgNDQxODYsIDQ0MTk1LCA0NDIwNSwgCi0gICAgNDQyMTQsIDQ0MjI0LCA0NDIzMiwgNDQyNDEsIDQ0MjUwLCA0NDI1OSwgNDQyNjgsIDQ0Mjc3LCA0NDI4NiwgNDQyOTYsIAotICAgIDQ0MzA1LCA0NDMxNCwgNDQzMjMsIDQ0MzMzLCA0NDM0MiwgNDQzNTEsIDQ0MzYwLCA0NDM2OSwgNDQzNzksIDQ0Mzg5LCAKLSAgICA0NDM5OCwgNDQ0MDcsIDQ0NDE1LCA0NDQyNCwgNDQ0MzEsIDQ0NDQwLCA0NDQ0OSwgNDQ0NjAsIDQ0NDY5LCA0NDQ3OSwgCi0gICAgNDQ0ODksIDQ0NDk2LCA0NDUwMywgNDQ1MTAsIDQ0NTE5LCA0NDUyOCwgNDQ1MzcsIDQ0NTQ2LCA0NDU1MywgNDQ1NTgsIAotICAgIDQ0NTY2LCA0NDU3MSwgNDQ1NzQsIDQ0NTgxLCA0NDU4NCwgNDQ1ODksIDQ0NTk0LCA0NDU5NywgNDQ2MDAsIDQ0NjA4LCAKLSAgICA0NDYxMSwgNDQ2MTYsIDQ0NjE5LCA0NDYyNywgNDQ2MzIsIDQ0NjQwLCA0NDY0MywgNDQ2NDYsIDQ0NjQ5LCA0NDY1NCwgCi0gICAgNDQ2NTksIDQ0NjYyLCA0NDY2NSwgNDQ2NzMsIDQ0Njc2LCA0NDY4MywgNDQ2OTAsIDQ0Njk0LCA0NDY5OCwgNDQ3MDMsIAotICAgIDQ0NzA4LCA0NDcxNCwgNDQ3MTksIDQ0NzI1LCA0NDczMSwgNDQ3MzYsIDQ0NzQyLCA0NDc1MCwgNDQ3NTYsIDQ0NzY0LCAKLSAgICA0NDc3MiwgNDQ3NzgsIDQ0Nzg2LCA0NDc5NCwgNDQ4MDIsIDQ0ODEwLCA0NDgxNiwgNDQ4MjQsIDQ0ODMyLCA0NDg0MCwgCi0gICAgNDQ4NDQsIDQ0ODUwLCA0NDg2NCwgNDQ4NzgsIDQ0ODgyLCA0NDg4NiwgNDQ4OTAsIDQ0ODk0LCA0NDkwNCwgNDQ5MDgsIAotICAgIDQ0OTEzLCA0NDkxOCwgNDQ5MjQsIDQ0OTMwLCA0NDkzNiwgNDQ5NDIsIDQ0OTUyLCA0NDk2MiwgNDQ5NzAsIDQ0OTgxLCAKLSAgICA0NDk5MiwgNDUwMDAsIDQ1MDExLCA0NTAyMiwgNDUwMzAsIDQ1MDQxLCA0NTA1MiwgNDUwNjAsIDQ1MDY4LCA0NTA3OCwgCi0gICAgNDUwODgsIDQ1MDkxLCA0NTA5NCwgNDUwOTcsIDQ1MTAyLCA0NTEwNiwgNDUxMTIsIDQ1MTE5LCA0NTEyNiwgNDUxMzQsIAotICAgIDQ1MTQxLCA0NTE0NSwgNDUxNDksIDQ1MTUzLCA0NTE1NywgNDUxNTksIDQ1MTYzLCA0NTE2NywgNDUxNzIsIDQ1MTc3LCAKLSAgICA0NTE4NCwgNDUxOTEsIDQ1MTk0LCA0NTIwMSwgNDUyMDMsIDQ1MjA1LCA0NTIwOSwgNDUyMTMsIDQ1MjE4LCA0NTIyNCwgCi0gICAgNDUyMzAsIDQ1MjM2LCA0NTI0MiwgNDUyNTEsIDQ1MjYwLCA0NTI2OSwgNDUyNzMsIDQ1Mjc1LCA0NTI3OSwgNDUyODYsIAotICAgIDQ1MjkzLCA0NTMwMCwgNDUzMDcsIDQ1MzE0LCA0NTMxNywgNDUzMjIsIDAsIDAsIDAsIDAsIDAsIDQ1MzI4LCA0NTMzMiwgCi0gICAgNDUzMzksIDQ1MzQ2LCA0NTM1MywgNDUzNjAsIDQ1MzY0LCA0NTM2OCwgNDUzNzIsIDQ1Mzc2LCA0NTM4MiwgNDUzODgsIAotICAgIDQ1MzkzLCA0NTM5OSwgNDU0MDUsIDQ1NDExLCA0NTQxNywgNDU0MjUsIDQ1NDMyLCA0NTQzOSwgNDU0NDYsIDQ1NDUzLCAKLSAgICA0NTQ1OCwgNDU0NjQsIDQ1NDczLCA0NTQ3NywgNDU0ODQsIDQ1NDg4LCA0NTQ5MiwgNDU0OTgsIDQ1NTA0LCA0NTUxMCwgCi0gICAgNDU1MTYsIDQ1NTIwLCA0NTUyNCwgNDU1MjcsIDQ1NTMwLCA0NTUzNCwgNDU1NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NTQ4LCA0NTU1MSwgNDU1NTUsIAotICAgIDQ1NTU5LCA0NTU2NSwgNDU1NzEsIDQ1NTc3LCA0NTU4NSwgNDU1OTIsIDQ1NTk2LCA0NTYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU2MDksIDQ1NjEyLCA0NTYxNSwgNDU2MTgsIAotICAgIDQ1NjIxLCA0NTYyNCwgNDU2MjcsIDQ1NjMxLCA0NTYzNCwgNDU2MzgsIDQ1NjQyLCA0NTY0NiwgNDU2NTAsIDQ1NjU0LCAKLSAgICA0NTY1OCwgNDU2NjIsIDQ1NjY2LCA0NTY3MCwgNDU2NzQsIDQ1Njc4LCA0NTY4MiwgNDU2ODUsIDQ1Njg4LCA0NTY5MSwgCi0gICAgNDU2OTQsIDQ1Njk3LCA0NTcwMCwgNDU3MDQsIDQ1NzA3LCA0NTcxMSwgNDU3MTUsIDQ1NzE5LCA0NTcyMywgNDU3MjcsIAotICAgIDQ1NzMxLCA0NTczNSwgNDU3MzksIDQ1NzQzLCA0NTc0NywgNDU3NTEsIDQ1NzU1LCA0NTc2MSwgNDU3NjcsIDQ1NzczLCAKLSAgICA0NTc4MCwgNDU3ODcsIDQ1Nzk0LCA0NTgwMSwgNDU4MDgsIDQ1ODE1LCA0NTgyMiwgNDU4MjksIDQ1ODM2LCA0NTg0MywgCi0gICAgNDU4NTAsIDQ1ODU3LCA0NTg2NCwgNDU4NzEsIDQ1ODc4LCA0NTg4NSwgNDU4OTIsIDQ1ODk3LCA0NTkwMywgNDU5MDksIAotICAgIDQ1OTE1LCA0NTkyMCwgNDU5MjYsIDQ1OTMyLCA0NTkzOCwgNDU5NDMsIDQ1OTQ5LCA0NTk1NSwgNDU5NjAsIDQ1OTY2LCAKLSAgICA0NTk3MiwgNDU5NzcsIDQ1OTgzLCA0NTk4OSwgNDU5OTQsIDQ1OTk5LCA0NjAwNSwgNDYwMTAsIDQ2MDE2LCA0NjAyMiwgCi0gICAgNDYwMjgsIDQ2MDM0LCA0NjA0MCwgNDYwNDUsIDQ2MDUxLCA0NjA1NywgNDYwNjMsIDQ2MDY4LCA0NjA3NCwgNDYwODAsIAotICAgIDQ2MDg2LCA0NjA5MSwgNDYwOTcsIDQ2MTAzLCA0NjEwOCwgNDYxMTQsIDQ2MTIwLCA0NjEyNSwgNDYxMzEsIDQ2MTM3LCAKLSAgICA0NjE0MiwgNDYxNDcsIDQ2MTUzLCA0NjE1OCwgNDYxNjQsIDQ2MTcwLCA0NjE3NiwgNDYxODIsIDQ2MTg4LCA0NjE5MywgCi0gICAgNDYxOTksIDQ2MjA1LCA0NjIxMSwgNDYyMTYsIDQ2MjIyLCA0NjIyOCwgNDYyMzQsIDQ2MjM5LCA0NjI0NSwgNDYyNTEsIAotICAgIDQ2MjU2LCA0NjI2MiwgNDYyNjgsIDQ2MjczLCA0NjI3OSwgNDYyODUsIDQ2MjkwLCA0NjI5NSwgNDYzMDEsIDQ2MzA2LCAKLSAgICA0NjMxMiwgNDYzMTgsIDQ2MzI0LCA0NjMzMCwgNDYzMzYsIDQ2MzQwLCA0NjM0NSwgNDYzNTAsIDQ2MzU1LCA0NjM2MCwgCi0gICAgNDYzNjUsIDQ2MzcwLCA0NjM3NSwgNDYzODAsIDQ2Mzg1LCA0NjM5MCwgNDYzOTQsIDQ2Mzk4LCA0NjQwMiwgNDY0MDYsIAotICAgIDQ2NDEwLCA0NjQxNCwgNDY0MTksIDQ2NDIzLCA0NjQyOCwgNDY0MzMsIDQ2NDM4LCA0NjQ0MywgNDY0NDgsIDQ2NDUzLCAKLSAgICA0NjQ1OCwgNDY0NjcsIDQ2NDc2LCA0NjQ4NSwgNDY0OTQsIDQ2NTAzLCA0NjUxMiwgNDY1MjEsIDQ2NTMwLCA0NjUzNywgCi0gICAgNDY1NDUsIDQ2NTUzLCA0NjU2MCwgNDY1NjcsIDQ2NTc1LCA0NjU4MywgNDY1OTAsIDQ2NTk3LCA0NjYwNSwgNDY2MTMsIAotICAgIDQ2NjIwLCA0NjYyNywgNDY2MzUsIDQ2NjQzLCA0NjY1MCwgNDY2NTcsIDQ2NjY1LCA0NjY3NCwgNDY2ODMsIDQ2NjkxLCAKLSAgICA0NjcwMCwgNDY3MDksIDQ2NzE2LCA0NjcyMywgNDY3MzEsIDQ2NzQwLCA0Njc0OSwgNDY3NTcsIDQ2NzY2LCA0Njc3NSwgCi0gICAgNDY3ODIsIDQ2Nzg5LCA0Njc5OCwgNDY4MDcsIDQ2ODE2LCA0NjgyNSwgNDY4MzQsIDQ2ODQzLCA0Njg1MCwgNDY4NTcsIAotICAgIDQ2ODY2LCA0Njg3NSwgNDY4ODQsIDQ2ODkzLCA0NjkwMiwgNDY5MTEsIDQ2OTE4LCA0NjkyNSwgNDY5MzQsIDQ2OTQzLCAKLSAgICA0Njk1MiwgNDY5NjIsIDQ2OTcyLCA0Njk4MSwgNDY5OTEsIDQ3MDAxLCA0NzAxMSwgNDcwMjEsIDQ3MDMxLCA0NzA0MSwgCi0gICAgNDcwNTAsIDQ3MDU5LCA0NzA2NiwgNDcwNzQsIDQ3MDgyLCA0NzA5MCwgNDcwOTgsIDQ3MTAzLCA0NzEwOCwgNDcxMTcsIAotICAgIDQ3MTI1LCA0NzEzMiwgNDcxNDEsIDQ3MTQ5LCA0NzE1NiwgNDcxNjUsIDQ3MTczLCA0NzE4MCwgNDcxODksIDQ3MTk3LCAKLSAgICA0NzIwNCwgNDcyMTMsIDQ3MjIxLCA0NzIyOCwgNDcyMzcsIDQ3MjQ1LCA0NzI1MiwgNDcyNjIsIDQ3MjcxLCA0NzI3OCwgCi0gICAgNDcyODgsIDQ3Mjk3LCA0NzMwNCwgNDczMTQsIDQ3MzIzLCA0NzMzMCwgNDczMzksIDQ3MzQ4LCA0NzM1NywgNDczNjYsIAotICAgIDQ3MzgwLCA0NzM5NCwgNDc0MDEsIDQ3NDA2LCA0NzQxMSwgNDc0MTYsIDQ3NDIxLCA0NzQyNiwgNDc0MzEsIDQ3NDM2LCAKLSAgICA0NzQ0MSwgNDc0NDksIDQ3NDU3LCA0NzQ2NSwgNDc0NzMsIDQ3NDc4LCA0NzQ4NSwgNDc0OTIsIDQ3NDk5LCA0NzUwNCwgCi0gICAgNDc1MTIsIDQ3NTE5LCA0NzUyNywgNDc1MzEsIDQ3NTM4LCA0NzU0NCwgNDc1NTEsIDQ3NTU1LCA0NzU2MSwgNDc1NjcsIAotICAgIDQ3NTczLCA0NzU3NywgNDc1ODAsIDQ3NTg0LCA0NzU4OCwgNDc1OTUsIDQ3NjAxLCA0NzYwNywgNDc2MTMsIDQ3NjE5LCAKLSAgICA0NzYzMywgNDc2NDMsIDQ3NjU3LCA0NzY3MSwgNDc2NzcsIDQ3Njg3LCA0NzcwMSwgNDc3MDQsIDQ3NzA3LCA0NzcxNCwgCi0gICAgNDc3MjIsIDQ3NzI4LCA0NzczMywgNDc3NDEsIDQ3NzUzLCA0Nzc2NSwgNDc3NzMsIDQ3Nzc3LCA0Nzc4MSwgNDc3ODQsIAotICAgIDQ3Nzg3LCA0Nzc5MSwgNDc3OTUsIDQ3Nzk4LCA0NzgwMSwgNDc4MDYsIDQ3ODExLCA0NzgxNywgNDc4MjMsIDQ3ODI4LCAKLSAgICA0NzgzMywgNDc4MzksIDQ3ODQ1LCA0Nzg1MCwgNDc4NTUsIDQ3ODYwLCA0Nzg2NSwgNDc4NzEsIDQ3ODc3LCA0Nzg4MiwgCi0gICAgNDc4ODcsIDQ3ODkzLCA0Nzg5OSwgNDc5MDQsIDQ3OTA5LCA0NzkxMiwgNDc5MTUsIDQ3OTI0LCA0NzkyNiwgNDc5MjgsIAotICAgIDQ3OTMxLCA0NzkzNSwgNDc5NDEsIDQ3OTQzLCA0Nzk0NiwgNDc5NTMsIDQ3OTYwLCA0Nzk2OCwgNDc5NzYsIDQ3OTg2LCAKLSAgICA0ODAwMCwgNDgwMDUsIDQ4MDEwLCA0ODAxNCwgNDgwMTksIDQ4MDI3LCA0ODAzNSwgNDgwNDQsIDQ4MDUzLCA0ODA2MiwgCi0gICAgNDgwNzEsIDQ4MDc2LCA0ODA4MSwgNDgwODcsIDQ4MDkzLCA0ODA5OSwgNDgxMDUsIDQ4MTA4LCA0ODExNCwgNDgxMjAsIAotICAgIDQ4MTMwLCA0ODE0MCwgNDgxNDgsIDQ4MTU2LCA0ODE2NSwgNDgxNzQsIDQ4MTc4LCA0ODE4NiwgNDgxOTQsIDQ4MjAyLCAKLSAgICA0ODIxMCwgNDgyMTksIDQ4MjI4LCA0ODIzNywgNDgyNDYsIDQ4MjUxLCA0ODI1NiwgNDgyNjEsIDQ4MjY2LCA0ODI3MSwgCi0gICAgNDgyNzcsIDQ4MjgzLCA0ODI4OCwgNDgyOTQsIDQ4Mjk2LCA0ODI5OCwgNDgzMDAsIDQ4MzAyLCA0ODMwNSwgNDgzMDgsIAotICAgIDQ4MzEwLCA0ODMxMiwgNDgzMTQsIDQ4MzE4LCA0ODMyMiwgNDgzMjQsIDQ4MzI2LCA0ODMyOSwgNDgzMzIsIDQ4MzM2LCAKLSAgICA0ODM0MiwgNDgzNDgsIDQ4MzUwLCA0ODM1NywgNDgzNjEsIDQ4MzY2LCA0ODM3MSwgNDgzNzMsIDQ4MzgzLCA0ODM4OSwgCi0gICAgNDgzOTUsIDQ4NDAxLCA0ODQwNywgNDg0MTMsIDQ4NDE5LCA0ODQyNCwgNDg0MjcsIDQ4NDMwLCA0ODQzMywgNDg0MzUsIAotICAgIDQ4NDM3LCA0ODQ0MSwgNDg0NDUsIDQ4NDUwLCA0ODQ1NSwgNDg0NjAsIDQ4NDYzLCA0ODQ2NywgNDg0NzIsIDQ4NDc1LCAKLSAgICA0ODQ3OSwgNDg0ODQsIDQ4NDg5LCA0ODQ5NCwgNDg0OTksIDQ4NTA0LCA0ODUwOSwgNDg1MTQsIDQ4NTE5LCA0ODUyNCwgCi0gICAgNDg1MjksIDQ4NTM0LCA0ODUzOSwgNDg1NDUsIDQ4NTUxLCA0ODU1NywgNDg1NTksIDQ4NTYyLCA0ODU2NCwgNDg1NjcsIAotICAgIDQ4NTY5LCA0ODU3MSwgNDg1NzMsIDQ4NTc1LCA0ODU3NywgNDg1NzksIDQ4NTgxLCA0ODU4MywgNDg1ODUsIDQ4NTg3LCAKLSAgICA0ODU4OSwgNDg1OTEsIDQ4NTkzLCA0ODU5NSwgNDg1OTcsIDQ4NTk5LCA0ODYwMSwgNDg2MDYsIDQ4NjExLCA0ODYxNiwgCi0gICAgNDg2MjEsIDQ4NjI2LCA0ODYzMSwgNDg2MzYsIDQ4NjQxLCA0ODY0NiwgNDg2NTEsIDQ4NjU2LCA0ODY2MSwgNDg2NjYsIAotICAgIDQ4NjcxLCA0ODY3NiwgNDg2ODEsIDQ4Njg2LCA0ODY5MSwgNDg2OTYsIDQ4NzAxLCA0ODcwNSwgNDg3MDksIDQ4NzEzLCAKLSAgICA0ODcxOSwgNDg3MjUsIDQ4NzMwLCA0ODczNSwgNDg3NDAsIDQ4NzQ2LCA0ODc1MiwgNDg3NTcsIDQ4NzY1LCA0ODc3MywgCi0gICAgNDg3ODEsIDQ4Nzg5LCA0ODc5NywgNDg4MDUsIDQ4ODEzLCA0ODgyMSwgNDg4MjcsIDQ4ODMyLCA0ODgzNywgNDg4NDIsIAotICAgIDQ4ODQ1LCA0ODg0OSwgNDg4NTMsIDQ4ODU3LCA0ODg2MSwgNDg4NjUsIDQ4ODY5LCA0ODg3NiwgNDg4ODMsIDQ4ODkxLCAKLSAgICA0ODg5OSwgNDg5MDQsIDQ4OTA5LCA0ODkxNiwgNDg5MjMsIDQ4OTMwLCA0ODkzNywgNDg5NDAsIDQ4OTQzLCA0ODk0OCwgCi0gICAgNDg5NTAsIDQ4OTU0LCA0ODk1OSwgNDg5NjEsIDQ4OTYzLCA0ODk2NSwgNDg5NjcsIDQ4OTcyLCA0ODk3NSwgNDg5NzcsIAotICAgIDQ4OTgyLCA0ODk4OSwgNDg5OTYsIDQ4OTk5LCA0OTAwMywgNDkwMDgsIDQ5MDEzLCA0OTAyMSwgNDkwMjcsIDQ5MDMzLCAKLSAgICA0OTA0NSwgNDkwNTIsIDQ5MDYwLCA0OTA2NSwgNDkwNzAsIDQ5MDc2LCA0OTA3OSwgNDkwODIsIDQ5MDg3LCA0OTA4OSwgCi0gICAgNDkwOTMsIDQ5MDk1LCA0OTA5NywgNDkwOTksIDQ5MTAxLCA0OTEwMywgNDkxMDUsIDQ5MTEwLCA0OTExMiwgNDkxMTQsIAotICAgIDQ5MTE2LCA0OTExOCwgNDkxMjIsIDQ5MTI0LCA0OTEyNywgNDkxMzIsIDQ5MTM3LCA0OTE0MiwgNDkxNDcsIDQ5MTUzLCAKLSAgICA0OTE1OSwgNDkxNjEsIDQ5MTY0LCA0OTE3MSwgNDkxNzgsIDQ5MTg1LCA0OTE5MiwgNDkxOTYsIDQ5MjAwLCA0OTIwMiwgCi0gICAgNDkyMDQsIDQ5MjA4LCA0OTIxNCwgNDkyMTksIDQ5MjIxLCA0OTIyNSwgNDkyMzQsIDQ5MjQyLCA0OTI1MCwgNDkyNTYsIAotICAgIDQ5MjYyLCA0OTI2NywgNDkyNzMsIDQ5Mjc4LCA0OTI4MSwgNDkyOTUsIDQ5Mjk4LCA0OTMwMywgNDkzMDgsIDQ5MzE0LCAKLSAgICA0OTMyNCwgNDkzMjYsIDQ5MzMyLCA0OTMzOCwgNDkzNDIsIDQ5MzQ5LCA0OTM1MywgNDkzNTUsIDQ5MzU3LCA0OTM2MSwgCi0gICAgNDkzNjcsIDQ5MzcyLCA0OTM3OCwgNDkzODAsIDQ5Mzg2LCA0OTM4OCwgNDkzOTQsIDQ5Mzk2LCA0OTM5OCwgNDk0MDMsIAotICAgIDQ5NDA1LCA0OTQwOSwgNDk0MTQsIDQ5NDE2LCA0OTQyMSwgNDk0MjYsIDQ5NDMwLCA0OTQzNywgNDk0NDcsIDQ5NDUyLCAKLSAgICA0OTQ1OCwgNDk0NjEsIDQ5NDY3LCA0OTQ3MCwgNDk0NzUsIDQ5NDgwLCA0OTQ4NCwgNDk0ODYsIDQ5NDg4LCA0OTQ5MiwgCi0gICAgNDk0OTYsIDQ5NTAwLCA0OTUwNCwgNDk1MDksIDQ5NTExLCA0OTUxNiwgNDk1MTksIDQ5NTIyLCA0OTUyNSwgNDk1MjksIAotICAgIDQ5NTMzLCA0OTUzOCwgNDk1NDIsIDQ5NTQ3LCA0OTU1MiwgNDk1NTYsIDQ5NTYxLCA0OTU2NywgNDk1NzAsIDQ5NTc2LCAKLSAgICA0OTU4MSwgNDk1ODUsIDQ5NTkwLCA0OTU5NiwgNDk2MDIsIDQ5NjA5LCA0OTYxNSwgNDk2MjIsIDQ5NjI5LCA0OTYzMSwgCi0gICAgNDk2MzgsIDQ5NjQyLCA0OTY0OCwgNDk2NTQsIDQ5NjU5LCA0OTY2NSwgNDk2NjksIDQ5Njc0LCA0OTY3NywgNDk2ODIsIAotICAgIDQ5Njg4LCA0OTY5NSwgNDk3MDMsIDQ5NzEwLCA0OTcxOSwgNDk3MjksIDQ5NzM2LCA0OTc0MiwgNDk3NDYsIDQ5NzUzLCAKLSAgICA0OTc1OCwgNDk3NjcsIDQ5NzcwLCA0OTc3MywgNDk3ODIsIDQ5NzkyLCA0OTc5OSwgNDk4MDEsIDQ5ODA3LCA0OTgxMiwgCi0gICAgNDk4MTQsIDQ5ODE3LCA0OTgyMSwgNDk4MjksIDQ5ODM4LCA0OTg0MSwgNDk4NDYsIDQ5ODUxLCA0OTg1OSwgNDk4NjcsIAotICAgIDQ5ODc1LCA0OTg4MywgNDk4ODksIDQ5ODk1LCA0OTkwMSwgNDk5MDksIDQ5OTE0LCA0OTkxNywgNDk5MjEsIDQ5OTI0LCAKLSAgICA0OTkzNiwgNDk5NDYsIDQ5OTU3LCA0OTk2NiwgNDk5NzcsIDQ5OTg3LCA0OTk5NiwgNTAwMDIsIDUwMDEwLCA1MDAxNCwgCi0gICAgNTAwMjIsIDUwMDI2LCA1MDAzNCwgNTAwNDEsIDUwMDQ4LCA1MDA1NywgNTAwNjYsIDUwMDc2LCA1MDA4NiwgNTAwOTYsIAotICAgIDUwMTA2LCA1MDExNSwgNTAxMjQsIDUwMTM0LCA1MDE0NCwgNTAxNTMsIDUwMTYyLCA1MDE2OCwgNTAxNzQsIDUwMTgwLCAKLSAgICA1MDE4NiwgNTAxOTIsIDUwMTk4LCA1MDIwNSwgNTAyMTEsIDUwMjE4LCA1MDIyNSwgNTAyMzEsIDUwMjM3LCA1MDI0MywgCi0gICAgNTAyNDksIDUwMjU1LCA1MDI2MSwgNTAyNjgsIDUwMjc0LCA1MDI4MSwgNTAyODgsIDUwMjk1LCA1MDMwMiwgNTAzMDksIAotICAgIDUwMzE2LCA1MDMyMywgNTAzMzAsIDUwMzM4LCA1MDM0NSwgNTAzNTMsIDUwMzYxLCA1MDM2NiwgNTAzNjksIDUwMzczLCAKLSAgICA1MDM3NywgNTAzODMsIDUwMzg2LCA1MDM5MSwgNTAzOTcsIDUwNDAyLCA1MDQwNiwgNTA0MTEsIDUwNDE3LCA1MDQyNCwgCi0gICAgNTA0MjcsIDUwNDM0LCA1MDQ0MSwgNTA0NDUsIDUwNDUzLCA1MDQ2MSwgNTA0NjYsIDUwNDcyLCA1MDQ3NywgNTA0ODIsIAotICAgIDUwNDg5LCA1MDQ5NiwgNTA1MDQsIDUwNTEyLCA1MDUyMSwgNTA1MjUsIDUwNTM0LCA1MDUzOSwgNTA1NDMsIDUwNTUwLCAKLSAgICA1MDU1NCwgNTA1NjAsIDUwNTY4LCA1MDU3MywgNTA1ODAsIDUwNTg0LCA1MDU4OSwgNTA1OTMsIDUwNTk4LCA1MDYwMiwgCi0gICAgNTA2MDcsIDUwNjEyLCA1MDYyMSwgNTA2MjMsIDUwNjI2LCA1MDYyOSwgNTA2MzYsIDUwNjQzLCA1MDY0OSwgNTA2NTcsIAotICAgIDUwNjYzLCA1MDY3MCwgNTA2NzUsIDUwNjc4LCA1MDY4MywgNTA2ODgsIDUwNjkzLCA1MDcwMSwgNTA3MDUsIDUwNzEyLCAKLSAgICA1MDcyMCwgNTA3MjgsIDUwNzMzLCA1MDczOCwgNTA3NDQsIDUwNzQ5LCA1MDc1NCwgNTA3NjAsIDUwNzY1LCA1MDc2OCwgCi0gICAgNTA3NzIsIDUwNzc2LCA1MDc4MywgNTA3OTMsIDUwNzk4LCA1MDgwNywgNTA4MTYsIDUwODIyLCA1MDgyOCwgNTA4MzMsIAotICAgIDUwODM4LCA1MDg0MywgNTA4NDgsIDUwODU0LCA1MDg2MCwgNTA4NjgsIDUwODc2LCA1MDg4MiwgNTA4ODgsIDUwODkyLCAKLSAgICA1MDg5NiwgNTA5MDMsIDUwOTEwLCA1MDkxNiwgNTA5MTksIDUwOTIyLCA1MDkyNiwgNTA5MzAsIDUwOTM0LCA1MDkzOSwgCi0gICAgNTA5NDUsIDUwOTUxLCA1MDk1OCwgNTA5NjUsIDUwOTcwLCA1MDk3NCwgNTA5NzgsIDUwOTgyLCA1MDk4NiwgNTA5OTAsIAotICAgIDUwOTk0LCA1MDk5OCwgNTEwMDIsIDUxMDA2LCA1MTAxMCwgNTEwMTQsIDUxMDE4LCA1MTAyMiwgNTEwMjYsIDUxMDMwLCAKLSAgICA1MTAzNCwgNTEwMzgsIDUxMDQyLCA1MTA0NiwgNTEwNTAsIDUxMDU0LCA1MTA1OCwgNTEwNjIsIDUxMDY2LCA1MTA3MCwgCi0gICAgNTEwNzQsIDUxMDc4LCA1MTA4MiwgNTEwODYsIDUxMDkwLCA1MTA5NCwgNTEwOTgsIDUxMTAyLCA1MTEwNiwgNTExMTAsIAotICAgIDUxMTE0LCA1MTExOCwgNTExMjIsIDUxMTI2LCA1MTEzMCwgNTExMzQsIDUxMTM4LCA1MTE0MiwgNTExNDYsIDUxMTUwLCAKLSAgICA1MTE1NCwgNTExNTgsIDUxMTYyLCA1MTE2NiwgNTExNzAsIDUxMTc0LCA1MTE3OCwgNTExODIsIDUxMTg2LCA1MTE5MCwgCi0gICAgNTExOTQsIDUxMTk4LCA1MTIwMiwgNTEyMDYsIDUxMjEwLCA1MTIxNCwgNTEyMTgsIDUxMjIyLCA1MTIyNiwgNTEyMzAsIAotICAgIDUxMjM0LCA1MTIzOCwgNTEyNDIsIDUxMjQ2LCA1MTI1MCwgNTEyNTQsIDUxMjU4LCA1MTI2MiwgNTEyNjYsIDUxMjcwLCAKLSAgICA1MTI3NCwgNTEyNzgsIDUxMjgyLCA1MTI4NiwgNTEyOTAsIDUxMjk0LCA1MTI5OCwgNTEzMDIsIDUxMzA2LCA1MTMxMCwgCi0gICAgNTEzMTQsIDUxMzE4LCA1MTMyMiwgNTEzMjYsIDUxMzMwLCA1MTMzNCwgNTEzMzgsIDUxMzQyLCA1MTM0NiwgNTEzNTAsIAotICAgIDUxMzU0LCA1MTM1OCwgNTEzNjIsIDUxMzY2LCA1MTM3MCwgNTEzNzQsIDUxMzc4LCA1MTM4MiwgNTEzODYsIDUxMzkwLCAKLSAgICA1MTM5NCwgNTEzOTgsIDUxNDAyLCA1MTQwNiwgNTE0MTAsIDUxNDE0LCA1MTQxOCwgNTE0MjIsIDUxNDI2LCA1MTQzMCwgCi0gICAgNTE0MzQsIDUxNDM4LCA1MTQ0MiwgNTE0NDYsIDUxNDUwLCA1MTQ1NCwgNTE0NTgsIDUxNDYyLCA1MTQ2NiwgNTE0NzAsIAotICAgIDUxNDc0LCA1MTQ3OCwgNTE0ODIsIDUxNDg2LCA1MTQ5MCwgNTE0OTQsIDUxNDk4LCA1MTUwMiwgNTE1MDYsIDUxNTEwLCAKLSAgICA1MTUxNCwgNTE1MTgsIDUxNTIyLCA1MTUyNiwgNTE1MzAsIDUxNTM0LCA1MTUzOCwgNTE1NDIsIDUxNTQ2LCA1MTU1MCwgCi0gICAgNTE1NTQsIDUxNTU4LCA1MTU2MiwgNTE1NjYsIDUxNTcwLCA1MTU3NCwgNTE1NzgsIDUxNTgyLCA1MTU4NiwgNTE1OTAsIAotICAgIDUxNTk0LCA1MTU5OCwgNTE2MDIsIDUxNjA2LCA1MTYxMCwgNTE2MTQsIDUxNjE4LCA1MTYyMiwgNTE2MjYsIDUxNjMwLCAKLSAgICA1MTYzNCwgNTE2MzgsIDUxNjQyLCA1MTY0NiwgNTE2NTAsIDUxNjU0LCA1MTY1OCwgNTE2NjIsIDUxNjY2LCA1MTY3MCwgCi0gICAgNTE2NzQsIDUxNjc4LCA1MTY4MiwgNTE2ODYsIDUxNjkwLCA1MTY5NCwgNTE2OTgsIDUxNzAyLCA1MTcwNiwgNTE3MTAsIAotICAgIDUxNzE0LCA1MTcxOCwgNTE3MjIsIDUxNzI2LCA1MTczMCwgNTE3MzQsIDUxNzM4LCA1MTc0MiwgNTE3NDYsIDUxNzUwLCAKLSAgICA1MTc1NCwgNTE3NTgsIDUxNzYyLCA1MTc2NiwgNTE3NzAsIDUxNzc0LCA1MTc3OCwgNTE3ODIsIDUxNzg2LCA1MTc5MCwgCi0gICAgNTE3OTQsIDUxNzk4LCA1MTgwMiwgNTE4MDYsIDUxODEwLCA1MTgxNCwgNTE4MTgsIDUxODIyLCA1MTgyNiwgNTE4MzAsIAotICAgIDUxODM0LCA1MTgzOCwgNTE4NDIsIDUxODQ2LCA1MTg1MCwgNTE4NTQsIDUxODU4LCA1MTg2MiwgNTE4NjYsIDUxODcwLCAKLSAgICA1MTg3NCwgNTE4NzgsIDUxODgyLCA1MTg4NiwgNTE4OTAsIDUxODk0LCA1MTg5OCwgNTE5MDIsIDUxOTA2LCA1MTkxMCwgCi0gICAgNTE5MTQsIDUxOTE4LCA1MTkyMiwgNTE5MjYsIDUxOTMwLCA1MTkzNCwgNTE5MzgsIDUxOTQyLCA1MTk0NiwgNTE5NTAsIAotICAgIDUxOTU0LCA1MTk1OCwgNTE5NjIsIDUxOTY2LCA1MTk3MCwgNTE5NzQsIDUxOTc4LCA1MTk4MiwgNTE5ODYsIDUxOTkwLCAKLSAgICA1MTk5NCwgNTIwMDEsIDUyMDA5LCA1MjAxNSwgNTIwMjEsIDUyMDI4LCA1MjAzNSwgNTIwNDEsIDUyMDQ3LCA1MjA1MywgCi0gICAgNTIwNTksIDUyMDYzLCA1MjA2NywgNTIwNzIsIDUyMDc3LCA1MjA4MywgNTIwODksIDUyMDk3LCA1MjEwNCwgNTIxMDksIAotICAgIDUyMTE0LCA1MjEyMiwgNTIxMzEsIDUyMTM4LCA1MjE0OCwgNTIxNTksIDUyMTYyLCA1MjE2NSwgNTIxNjksIDUyMTczLCAKLSAgICA1MjE4MCwgNTIxODcsIDUyMTk4LCA1MjIwOSwgNTIyMTgsIDUyMjI3LCA1MjIzMywgNTIyMzksIDUyMjQ2LCA1MjI1MywgCi0gICAgNTIyNjIsIDUyMjcyLCA1MjI4MywgNTIyOTMsIDUyMzAzLCA1MjMxMywgNTIzMjQsIDUyMzM1LCA1MjM0NSwgNTIzNTYsIAotICAgIDUyMzY2LCA1MjM3NiwgNTIzODUsIDUyMzk1LCA1MjQwNSwgNTI0MTUsIDUyNDI1LCA1MjQzMiwgNTI0MzksIDUyNDQ2LCAKLSAgICA1MjQ1MywgNTI0NjMsIDUyNDczLCA1MjQ4MSwgNTI0ODksIDUyNDk2LCA1MjUwMywgNTI1MTAsIDUyNTE3LCA1MjUyNCwgCi0gICAgNTI1MjksIDUyNTM0LCA1MjU0MCwgNTI1NDgsIDUyNTU3LCA1MjU2NSwgNTI1NzMsIDUyNTgxLCA1MjU4OSwgNTI1OTcsIAotICAgIDUyNjA1LCA1MjYxMywgNTI2MjEsIDUyNjMwLCA1MjYzOSwgNTI2NDgsIDUyNjU3LCA1MjY2NiwgNTI2NzUsIDUyNjg0LCAKLSAgICA1MjY5MywgNTI3MDIsIDUyNzExLCA1MjcyMCwgNTI3MjksIDUyNzM4LCA1Mjc0NywgNTI3NTYsIDUyNzY1LCA1Mjc3OSwgCi0gICAgNTI3OTQsIDUyODA4LCA1MjgyMywgNTI4MzcsIDUyODUxLCA1Mjg2NSwgNTI4NzksIDUyODg5LCA1MjkwMCwgNTI5MTAsIAotICAgIDUyOTIxLCA1MjkzNiwgNTI5NTEsIDUyOTU5LCA1Mjk2NSwgNTI5NzIsIDUyOTc5LCA1Mjk4NiwgNTI5OTMsIDUyOTk4LCAKLSAgICA1MzAwNCwgNTMwMDksIDUzMDE0LCA1MzAyMCwgNTMwMjUsIDUzMDMwLCA1MzAzNSwgNTMwNDAsIDUzMDQ1LCA1MzA1MiwgCi0gICAgNTMwNTgsIDUzMDY2LCA1MzA3MSwgNTMwNzYsIDUzMDgwLCA1MzA4NCwgNTMwOTIsIDUzMTAwLCA1MzEwOCwgNTMxMTYsIAotICAgIDUzMTIzLCA1MzEzMCwgNTMxNDMsIDUzMTU2LCA1MzE2OSwgNTMxODIsIDUzMTkwLCA1MzE5OCwgNTMyMDQsIDUzMjEwLCAKLSAgICA1MzIxNywgNTMyMjQsIDUzMjMxLCA1MzIzOCwgNTMyNDIsIDUzMjQ3LCA1MzI1NSwgNTMyNjMsIDUzMjcxLCA1MzI3OCwgCi0gICAgNTMyODIsIDUzMjkwLCA1MzI5OCwgNTMzMDIsIDUzMzA2LCA1MzMxMSwgNTMzMTgsIDUzMzI2LCA1MzMzNCwgNTMzNTMsIAotICAgIDUzMzcyLCA1MzM5MSwgNTM0MTAsIDUzNDI5LCA1MzQ0OCwgNTM0NjcsIDUzNDg2LCA1MzQ5MiwgNTM0OTksIDUzNTA4LCAKLSAgICA1MzUxNiwgNTM1MjQsIDUzNTMwLCA1MzUzMywgNTM1MzYsIDUzNTQxLCA1MzU0NCwgNTM1NjQsIDUzNTcxLCA1MzU3NywgCi0gICAgNTM1ODMsIDUzNTg3LCA1MzU5MCwgNTM1OTMsIDUzNTk2LCA1MzYwOCwgNTM2MjIsIDUzNjI5LCA1MzYzNiwgNTM2MzksIAotICAgIDUzNjQzLCA1MzY0NiwgNTM2NTEsIDUzNjU2LCA1MzY2MSwgNTM2NjcsIDUzNjc2LCA1MzY4MywgNTM2OTAsIDUzNjk4LCAKLSAgICA1MzcwNSwgNTM3MTIsIDUzNzE1LCA1MzcyMSwgNTM3MjcsIDUzNzMwLCA1MzczMywgNTM3MzgsIDUzNzQzLCA1Mzc0OSwgCi0gICAgNTM3NTUsIDUzNzU5LCA1Mzc2NCwgNTM3NzEsIDUzNzc1LCA1Mzc4MSwgNTM3ODUsIDUzNzg5LCA1Mzc5NywgNTM4MDksIAotICAgIDUzODE4LCA1MzgyMiwgNTM4MjQsIDUzODMzLCA1Mzg0MiwgNTM4NDgsIDUzODUxLCA1Mzg1NywgNTM4NjMsIDUzODY4LCAKLSAgICA1Mzg3MywgNTM4NzgsIDUzODgzLCA1Mzg4OCwgNTM4OTMsIDUzODk1LCA1MzkwMSwgNTM5MDYsIDUzOTE0LCA1MzkxOCwgCi0gICAgNTM5MjQsIDUzOTI3LCA1MzkzMSwgNTM5MzgsIDUzOTQ1LCA1Mzk0NywgNTM5NDksIDUzOTU1LCA1Mzk2MSwgNTM5NjcsIAotICAgIDUzOTc2LCA1Mzk4NSwgNTM5OTIsIDUzOTk5LCA1NDAwNSwgNTQwMTIsIDU0MDE3LCA1NDAyMiwgNTQwMjcsIDU0MDMzLCAKLSAgICA1NDAzOSwgNTQwNDQsIDU0MDUxLCA1NDA1NSwgNTQwNTksIDU0MDcyLCA1NDA4NSwgNTQwOTcsIDU0MTA2LCA1NDExMiwgCi0gICAgNTQxMTksIDU0MTI0LCA1NDEyOSwgNTQxMzQsIDU0MTM5LCA1NDE0NCwgNTQxNDYsIDU0MTUzLCA1NDE2MSwgNTQxNjksIAotICAgIDU0MTc3LCA1NDE4NCwgNTQxOTIsIDU0MTk4LCA1NDIwMywgNTQyMDksIDU0MjE1LCA1NDIyMSwgNTQyMjgsIDU0MjM0LCAKLSAgICA1NDI0MiwgNTQyNTAsIDU0MjU4LCA1NDI2NiwgNTQyNzQsIDU0MjgwLCA1NDI4NiwgNTQyOTUsIDU0Mjk5LCA1NDMwOCwgCi0gICAgNTQzMTcsIDU0MzI2LCA1NDMzNCwgNTQzMzgsIDU0MzQ0LCA1NDM1MSwgNTQzNTgsIDU0MzYyLCA1NDM2OCwgNTQzNzYsIAotICAgIDU0MzgyLCA1NDM4NywgNTQzOTMsIDU0Mzk4LCA1NDQwMywgNTQ0MTAsIDU0NDE3LCA1NDQyMiwgNTQ0MjcsIDU0NDM1LCAKLSAgICA1NDQ0MywgNTQ0NTMsIDU0NDYzLCA1NDQ3MCwgNTQ0NzcsIDU0NDgxLCA1NDQ4NSwgNTQ0OTcsIDU0NTAzLCA1NDUxMCwgCi0gICAgNTQ1MTUsIDU0NTIwLCA1NDUyNywgNTQ1MzQsIDU0NTQwLCA1NDU0NiwgNTQ1NTYsIDU0NTYzLCA1NDU3MSwgNTQ1NzksIAotICAgIDU0NTg4LCA1NDU5NSwgNTQ2MDEsIDU0NjA4LCA1NDYxNCwgNTQ2MjIsIDU0NjMwLCA1NDYzOCwgNTQ2NDYsIDU0NjUyLCAKLSAgICA1NDY1NywgNTQ2NjcsIDU0Njc4LCA1NDY4NSwgNTQ2OTQsIDU0NzAwLCA1NDcwNSwgNTQ3MTAsIDU0NzIwLCA1NDcyNywgCi0gICAgNTQ3MzMsIDU0NzM5LCA1NDc0NywgNTQ3NTIsIDU0NzU5LCA1NDc2NiwgNTQ3NzcsIDU0Nzg0LCA1NDc5MSwgNTQ3OTgsIAotICAgIDU0ODA1LCA1NDgxMiwgNTQ4MjAsIDU0ODI4LCA1NDg0MSwgNTQ4NTQsIDU0ODY2LCA1NDg3OCwgNTQ4OTIsIDU0OTA2LCAKLSAgICA1NDkxMiwgNTQ5MTgsIDU0OTI3LCA1NDkzNiwgNTQ5NDMsIDU0OTUwLCA1NDk1OSwgNTQ5NjgsIDU0OTc3LCA1NDk4NiwgCi0gICAgNTQ5OTQsIDU1MDAyLCA1NTAxMiwgNTUwMjIsIDU1MDM2LCA1NTA1MCwgNTUwNTksIDU1MDY4LCA1NTA4MSwgNTUwOTQsIAotICAgIDU1MTAzLCA1NTExMiwgNTUxMjMsIDU1MTM0LCA1NTE0MCwgNTUxNDYsIDU1MTU1LCA1NTE2NCwgNTUxNjksIDU1MTc0LCAKLSAgICA1NTE4MiwgNTUxODgsIDU1MTk0LCA1NTIwMiwgNTUyMTAsIDU1MjIzLCA1NTIzNiwgNTUyNDAsIDU1MjQ0LCA1NTI1MiwgCi0gICAgNTUyNjAsIDU1MjY3LCA1NTI3NSwgNTUyODMsIDU1MjkyLCA1NTMwMSwgNTUzMDcsIDU1MzEzLCA1NTMyMCwgNTUzMjcsIAotICAgIDU1MzM0LCA1NTM0MSwgNTUzNTAsIDU1MzU5LCA1NTM2MiwgNTUzNjUsIDU1MzcwLCA1NTM3NSwgNTUzODEsIDU1Mzg3LCAKLSAgICA1NTM5NCwgNTU0MDEsIDU1NDEyLCA1NTQyMywgNTU0MzAsIDU1NDM3LCA1NTQ0NSwgNTU0NTMsIDU1NDYxLCA1NTQ2OSwgCi0gICAgNTU0NzcsIDU1NDg1LCA1NTQ5MSwgNTU0OTcsIDU1NTAxLCA1NTUwNSwgNTU1MTMsIDU1NTIxLCA1NTUyNiwgNTU1MzEsIAotICAgIDU1NTM2LCA1NTU0MSwgNTU1NDcsIDU1NTYxLCA1NTU2OCwgNTU1NzUsIDU1NTc5LCA1NTU4MSwgNTU1ODMsIDU1NTg4LCAKLSAgICA1NTU5MywgNTU1OTgsIDU1NjAyLCA1NTYxMCwgNTU2MTcsIDU1NjI0LCA1NTYzMiwgNTU2NDQsIDU1NjUyLCA1NTY2MCwgCi0gICAgNTU2NzEsIDU1Njc1LCA1NTY3OSwgNTU2ODUsIDU1NjkzLCA1NTcwNiwgNTU3MTMsIDU1NzIwLCA1NTcyNywgNTU3MzMsIAotICAgIDU1NzQwLCA1NTc0OSwgNTU3NTgsIDU1NzY0LCA1NTc3MCwgNTU3NzYsIDU1Nzg2LCA1NTc5NiwgNTU4MDQsIDU1ODEzLCAKLSAgICA1NTgxOCwgNTU4MjEsIDU1ODI2LCA1NTgzMSwgNTU4MzYsIDU1ODQyLCA1NTg0OCwgNTU4NTIsIDU1ODU1LCA1NTg1OCwgCi0gICAgNTU4NjEsIDU1ODY2LCA1NTg3MSwgNTU4NzcsIDU1ODgzLCA1NTg4NywgNTU4OTEsIDU1ODk4LCA1NTkwNSwgNTU5MTIsIAotICAgIDU1OTE5LCA1NTkyNiwgNTU5MzMsIDU1OTQzLCA1NTk1MywgNTU5NjAsIDU1OTY3LCA1NTk3NSwgNTU5ODMsIDU1OTg3LCAKLSAgICA1NTk5MiwgNTU5OTcsIDU2MDAzLCA1NjAwOSwgNTYwMTIsIDU2MDE1LCA1NjAxOCwgNTYwMjEsIDU2MDI2LCA1NjAzMSwgCi0gICAgNTYwMzYsIDU2MDQxLCA1NjA0NiwgNTYwNTEsIDU2MDU1LCA1NjA1OSwgNTYwNjMsIDU2MDY4LCA1NjA3MywgNTYwNzcsIAotICAgIDU2MDgxLCA1NjA4NywgNTYwOTEsIDU2MDk3LCA1NjEwMiwgNTYxMDksIDU2MTE3LCA1NjEyNCwgNTYxMzIsIDU2MTM5LCAKLSAgICA1NjE0NywgNTYxNTYsIDU2MTYzLCA1NjE3MywgNTYxODQsIDU2MTkwLCA1NjE5OSwgNTYyMDUsIDU2MjE0LCA1NjIyMywgCi0gICAgNTYyMjksIDU2MjM1LCA1NjIzOSwgNTYyNDMsIDU2MjUyLCA1NjI2MSwgNTYyNjgsIDU2Mjc1LCA1NjI4NCwgNTYyOTMsIAotICAgIDU2Mjk5LCA1NjMwNSwgNTYzMTIsIDU2MzE3LCA1NjMyMSwgNTYzMjUsIDU2MzMwLCA1NjMzNSwgNTYzNDAsIDU2MzQ4LCAKLSAgICA1NjM1NiwgNTYzNTksIDU2MzYzLCA1NjM3MiwgNTYzODIsIDU2MzkxLCA1NjQwMSwgNTY0MTIsIDU2NDI1LCA1NjQyOSwgCi0gICAgNTY0MzMsIDU2NDM3LCA1NjQ0MSwgNTY0NDYsIDU2NDUxLCA1NjQ1NywgNTY0NjMsIDU2NDcwLCA1NjQ3NywgNTY0ODMsIAotICAgIDU2NDg5LCA1NjQ5NSwgNTY1MDEsIDU2NTA5LCA1NjUxNywgNTY1MjQsIDU2NTMxLCA1NjUzOCwgMCwgMCwgNTY1NDUsIAotICAgIDU2NTU0LCA1NjU2MywgNTY1NzMsIDU2NTgzLCA1NjU5MiwgNTY2MDEsIDU2NjEwLCA1NjYxOSwgNTY2MjUsIDU2NjMwLCAKLSAgICA1NjYzOSwgNTY2NDksIDU2NjU4LCA1NjY2OCwgNTY2NzUsIDU2NjgyLCA1NjY4OSwgNTY2OTYsIDU2NzAxLCA1NjcwNiwgCi0gICAgNTY3MTEsIDU2NzE2LCA1NjcyNCwgNTY3MzMsIDU2NzQxLCA1Njc1MCwgNTY3NTQsIDU2NzU4LCA1Njc2MiwgNTY3NjYsIAotICAgIDU2Nzc2LCAwLCAwLCA1Njc3OSwgNTY3ODgsIDU2Nzk3LCA1NjgwNiwgNTY4MTUsIDU2ODIxLCA1NjgyNywgNTY4MzMsIAotICAgIDU2ODM5LCA1Njg0OSwgNTY4NTksIDU2ODY5LCA1Njg3OSwgNTY4ODksIDU2ODk5LCA1NjkwOSwgNTY5MTksIDU2OTI2LCAKLSAgICA1NjkzMywgNTY5NDAsIDU2OTQ3LCA1Njk1NCwgNTY5NjEsIDU2OTY4LCA1Njk3NSwgNTY5ODEsIDU2OTg3LCA1Njk5MywgCi0gICAgNTY5OTksIDU3MDA1LCA1NzAxMSwgNTcwMTcsIDU3MDIzLCA1NzAzNCwgMCwgMCwgMCwgNTcwNDQsIDU3MDUxLCA1NzA1NCwgCi0gICAgNTcwNTgsIDU3MDYyLCA1NzA2NywgNTcwNzIsIDU3MDc3LCA1NzA4MCwgNTcwODksIDU3MDk4LCA1NzEwNywgMCwgNTcxMTYsIAotICAgIDU3MTIyLCA1NzEyOCwgNTcxMzYsIDU3MTQ2LCA1NzE1MywgNTcxNjIsIDU3MTY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzE3MCwgNTcxNzksIAotICAgIDU3MTg4LCA1NzE5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcyMDYsIAotICAgIDU3MjExLCA1NzIxNiwgNTcyMjEsIDU3MjI2LCA1NzIzMSwgNTcyMzYsIDU3MjQxLCA1NzI0NiwgNTcyNTEsIDU3MjU2LCAKLSAgICA1NzI2MiwgNTcyNjYsIDU3MjcxLCA1NzI3NiwgNTcyODEsIDU3Mjg2LCA1NzI5MSwgNTcyOTYsIDU3MzAxLCA1NzMwNiwgCi0gICAgNTczMTEsIDU3MzE2LCA1NzMyMSwgNTczMjYsIDU3MzMxLCA1NzMzNiwgNTczNDEsIDU3MzQ2LCA1NzM1MSwgNTczNTYsIAotICAgIDU3MzYxLCA1NzM2NiwgNTczNzEsIDU3Mzc2LCA1NzM4MiwgNTczODcsIDU3MzkzLCA1NzQwMiwgNTc0MDcsIDU3NDE1LCAKLSAgICA1NzQyMiwgNTc0MzEsIDU3NDM2LCA1NzQ0MSwgNTc0NDYsIDU3NDUyLCAwLCA1NzQ1OSwgNTc0NjQsIDU3NDY5LCA1NzQ3NCwgCi0gICAgNTc0NzksIDU3NDg0LCA1NzQ4OSwgNTc0OTQsIDU3NDk5LCA1NzUwNCwgNTc1MDksIDU3NTE1LCA1NzUxOSwgNTc1MjQsIAotICAgIDU3NTI5LCA1NzUzNCwgNTc1MzksIDU3NTQ0LCA1NzU0OSwgNTc1NTQsIDU3NTU5LCA1NzU2NCwgNTc1NjksIDU3NTc0LCAKLSAgICA1NzU3OSwgNTc1ODQsIDU3NTg5LCA1NzU5NCwgNTc1OTksIDU3NjA0LCA1NzYwOSwgNTc2MTQsIDU3NjE5LCA1NzYyNCwgCi0gICAgNTc2MjksIDU3NjM1LCA1NzY0MCwgNTc2NDYsIDU3NjU1LCA1NzY2MCwgNTc2NjgsIDU3Njc1LCA1NzY4NCwgNTc2ODksIAotICAgIDU3Njk0LCA1NzY5OSwgNTc3MDUsIDAsIDU3NzEyLCA1NzcyMCwgNTc3MjgsIDU3NzM3LCA1Nzc0NCwgNTc3NTIsIDU3NzU4LCAKLSAgICA1Nzc2NywgNTc3NzUsIDU3NzgzLCA1Nzc5MSwgNTc3OTksIDU3ODA3LCA1NzgxNSwgNTc4MjAsIDU3ODI3LCA1NzgzMywgCi0gICAgNTc4NDAsIDU3ODQ4LCA1Nzg1NSwgNTc4NjIsIDU3ODcwLCA1Nzg3NiwgNTc4ODIsIDU3ODg5LCA1Nzg5NiwgNTc5MDYsIAotICAgIDU3OTE2LCA1NzkyMywgNTc5MzAsIDU3OTM1LCA1Nzk0NSwgNTc5NTUsIDU3OTYwLCA1Nzk2NSwgNTc5NzAsIDU3OTc1LCAKLSAgICA1Nzk4MCwgNTc5ODUsIDU3OTkwLCA1Nzk5NSwgNTgwMDAsIDU4MDA1LCA1ODAxMCwgNTgwMTUsIDU4MDIwLCA1ODAyNSwgCi0gICAgNTgwMzAsIDU4MDM1LCA1ODA0MCwgNTgwNDUsIDU4MDUwLCA1ODA1NSwgNTgwNjAsIDU4MDY1LCA1ODA3MCwgNTgwNzUsIAotICAgIDU4MDgwLCA1ODA4NSwgNTgwOTAsIDU4MDk1LCA1ODEwMCwgNTgxMDUsIDU4MTA5LCA1ODExMywgNTgxMTgsIDU4MTIzLCAKLSAgICA1ODEyOCwgNTgxMzMsIDU4MTM4LCA1ODE0MywgNTgxNDgsIDU4MTUzLCA1ODE1OCwgNTgxNjMsIDU4MTY4LCA1ODE3MywgCi0gICAgNTgxNzgsIDU4MTgzLCA1ODE4OCwgNTgxOTMsIDU4MTk4LCA1ODIwMywgNTgyMTAsIDU4MjE3LCA1ODIyNCwgNTgyMzEsIAotICAgIDU4MjM4LCA1ODI0NSwgNTgyNTIsIDU4MjU5LCA1ODI2NiwgNTgyNzMsIDU4MjgwLCA1ODI4NywgNTgyOTQsIDU4MzAxLCAKLSAgICA1ODMwNiwgNTgzMTEsIDU4MzE4LCA1ODMyNSwgNTgzMzIsIDU4MzM5LCA1ODM0NiwgNTgzNTMsIDU4MzYwLCA1ODM2NywgCi0gICAgNTgzNzQsIDU4MzgxLCA1ODM4OCwgNTgzOTUsIDU4NDAxLCA1ODQwNywgNTg0MTMsIDU4NDE5LCA1ODQyNiwgNTg0MzMsIAotICAgIDU4NDQwLCA1ODQ0NywgNTg0NTQsIDU4NDYxLCA1ODQ2OCwgNTg0NzUsIDU4NDgyLCA1ODQ4OSwgNTg0OTcsIDU4NTA1LCAKLSAgICA1ODUxMywgNTg1MjEsIDU4NTI5LCA1ODUzNywgNTg1NDUsIDU4NTUzLCA1ODU1NywgNTg1NjMsIDU4NTY5LCA1ODU3MywgCi0gICAgNTg1NzksIDU4NTg1LCA1ODU5MSwgNTg1OTgsIDU4NjA1LCA1ODYxMiwgNTg2MTksIDU4NjI0LCA1ODYzMCwgNTg2MzYsIAotICAgIDU4NjQzLCAwLCAwLCAwLCAwLCAwLCA1ODY1MCwgNTg2NTgsIDU4NjY3LCA1ODY3NiwgNTg2ODQsIDU4NjkwLCA1ODY5NSwgCi0gICAgNTg3MDAsIDU4NzA1LCA1ODcxMCwgNTg3MTUsIDU4NzIwLCA1ODcyNSwgNTg3MzAsIDU4NzM1LCA1ODc0MCwgNTg3NDUsIAotICAgIDU4NzUwLCA1ODc1NSwgNTg3NjAsIDU4NzY1LCA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTAsIDU4Nzk1LCAKLSAgICA1ODgwMCwgNTg4MDUsIDU4ODEwLCA1ODgxNSwgNTg4MjAsIDU4ODI1LCA1ODgzMCwgNTg4MzUsIDU4ODQwLCA1ODg0NSwgCi0gICAgNTg4NTAsIDU4ODU1LCA1ODg2MCwgNTg4NjUsIDU4ODcwLCA1ODg3NSwgNTg4ODAsIDU4ODg1LCAwLCA1ODg5MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTg4OTUsIDAsIDAsIDU4OTAwLCA1ODkwNCwgNTg5MDksIDU4OTE0LCA1ODkxOSwgNTg5MjQsIDU4OTMzLCAKLSAgICA1ODkzOCwgNTg5NDMsIDU4OTQ4LCA1ODk1MywgNTg5NTgsIDU4OTYzLCA1ODk2OCwgNTg5NzMsIDU4OTgwLCA1ODk4NSwgCi0gICAgNTg5OTAsIDU4OTk5LCA1OTAwNiwgNTkwMTEsIDU5MDE2LCA1OTAyMSwgNTkwMjgsIDU5MDMzLCA1OTA0MCwgNTkwNDUsIAotICAgIDU5MDUwLCA1OTA1NywgNTkwNjQsIDU5MDY5LCA1OTA3NCwgNTkwNzksIDU5MDg2LCA1OTA5MywgNTkwOTgsIDU5MTAzLCAKLSAgICA1OTEwOCwgNTkxMTMsIDU5MTE4LCA1OTEyNSwgNTkxMzIsIDU5MTM3LCA1OTE0MiwgNTkxNDcsIDU5MTUyLCA1OTE1NywgCi0gICAgNTkxNjIsIDU5MTY3LCA1OTE3MiwgNTkxNzcsIDU5MTgyLCA1OTE4NywgNTkxOTQsIDU5MTk5LCA1OTIwNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTkyMDksIDU5MjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1OTIyMSwgNTkyMjYsIDU5MjMwLCA1OTIzNCwgNTkyMzgsIDU5MjQyLCA1OTI0NiwgNTkyNTAsIDU5MjU0LCA1OTI1OCwgCi0gICAgNTkyNjIsIDU5MjY2LCA1OTI3MiwgNTkyNzYsIDU5MjgwLCA1OTI4NCwgNTkyODgsIDU5MjkyLCA1OTI5NiwgNTkzMDAsIAotICAgIDU5MzA0LCA1OTMwOCwgNTkzMTIsIDU5MzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTMyMCwgNTkzMjQsIAotICAgIDU5MzI4LCA1OTMzMiwgNTkzMzYsIDU5MzQwLCA1OTM0NCwgMCwgNTkzNDgsIDU5MzUyLCA1OTM1NiwgNTkzNjAsIDU5MzY0LCAKLSAgICA1OTM2OCwgNTkzNzIsIDAsIDU5Mzc2LCA1OTM4MCwgNTkzODQsIDU5Mzg4LCA1OTM5MiwgNTkzOTYsIDU5NDAwLCAwLCAKLSAgICA1OTQwNCwgNTk0MDgsIDU5NDEyLCA1OTQxNiwgNTk0MjAsIDU5NDI0LCA1OTQyOCwgMCwgNTk0MzIsIDU5NDM2LCA1OTQ0MCwgCi0gICAgNTk0NDQsIDU5NDQ4LCA1OTQ1MiwgNTk0NTYsIDAsIDU5NDYwLCA1OTQ2NCwgNTk0NjgsIDU5NDcyLCA1OTQ3NiwgNTk0ODAsIAotICAgIDU5NDg0LCAwLCA1OTQ4OCwgNTk0OTIsIDU5NDk2LCA1OTUwMCwgNTk1MDQsIDU5NTA4LCA1OTUxMiwgMCwgNTk1MTYsIAotICAgIDU5NTIwLCA1OTUyNCwgNTk1MjgsIDU5NTMyLCA1OTUzNiwgNTk1NDAsIDAsIDU5NTQ0LCA1OTU0OSwgNTk1NTQsIDU5NTU5LCAKLSAgICA1OTU2NCwgNTk1NjksIDU5NTc0LCA1OTU3OCwgNTk1ODMsIDU5NTg4LCA1OTU5MywgNTk1OTcsIDU5NjAyLCA1OTYwNywgCi0gICAgNTk2MTIsIDU5NjE3LCA1OTYyMSwgNTk2MjYsIDU5NjMxLCA1OTYzNiwgNTk2NDEsIDU5NjQ2LCA1OTY1MSwgNTk2NTUsIAotICAgIDU5NjYwLCA1OTY2NSwgNTk2NzIsIDU5Njc3LCA1OTY4MiwgNTk2ODgsIDU5Njk1LCA1OTcwMiwgNTk3MTEsIDU5NzE4LCAKLSAgICA1OTcyNywgNTk3MzEsIDU5NzM1LCA1OTc0MSwgNTk3NDcsIDU5NzUzLCA1OTc2MSwgNTk3NjcsIDU5NzcxLCA1OTc3NSwgCi0gICAgNTk3NzksIDU5Nzg1LCA1OTc5MSwgNTk3OTUsIDU5Nzk3LCA1OTgwMSwgNTk4MDcsIDU5ODA5LCA1OTgxMywgNTk4MTYsIAotICAgIDU5ODE5LCA1OTgyNSwgNTk4MzAsIDU5ODM0LCA1OTgzOCwgNTk4NDMsIDU5ODQ5LCA1OTg1NCwgNTk4NTksIDU5ODY0LCAKLSAgICA1OTg2OSwgNTk4NzYsIDU5ODgzLCA1OTg4OCwgNTk4OTMsIDU5ODk4LCA1OTkwMywgNTk5MDgsIDU5OTEzLCA1OTkxNywgCi0gICAgNTk5MjEsIDU5OTI4LCA1OTkzNSwgNTk5NDEsIDU5OTQ1LCA1OTk1MCwgNTk5NTMsIDU5OTU3LCA1OTk2NCwgNTk5NjgsIAotICAgIDU5OTcyLCA1OTk3NiwgNTk5ODAsIDU5OTg2LCA1OTk5MiwgNTk5OTYsIDYwMDAyLCA2MDAwNiwgNjAwMTAsIDYwMDE2LCAKLSAgICA2MDAyMSwgNjAwMjYsIDYwMDI4LCA2MDAzMSwgNjAwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYwMDQxLCA2MDA0NSwgNjAwNDksIDYwMDU0LCA2MDA1OSwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgxLCAKLSAgICA2MDA4NiwgNjAwOTAsIDYwMDk0LCA2MDA5OCwgNjAxMDIsIDYwMTA3LCA2MDExMiwgNjAxMTcsIDYwMTIyLCA2MDEyNiwgCi0gICAgNjAxMzAsIDYwMTM1LCA2MDE0MCwgNjAxNDUsIDYwMTUwLCA2MDE1NCwgMCwgNjAxNTgsIDYwMTYyLCA2MDE2NiwgNjAxNzAsIAotICAgIDYwMTc0LCA2MDE3OCwgNjAxODIsIDYwMTg3LCA2MDE5MiwgNjAxOTYsIDYwMjAxLCA2MDIwNiwgNjAyMTUsIDYwMjE5LCAKLSAgICA2MDIyMywgNjAyMjcsIDYwMjM0LCA2MDIzOCwgNjAyNDMsIDYwMjQ4LCA2MDI1MiwgNjAyNTYsIDYwMjYyLCA2MDI2NywgCi0gICAgNjAyNzIsIDYwMjc3LCA2MDI4MiwgNjAyODYsIDYwMjkwLCA2MDI5NCwgNjAyOTgsIDYwMzAyLCA2MDMwNywgNjAzMTIsIAotICAgIDYwMzE2LCA2MDMyMCwgNjAzMjUsIDYwMzMwLCA2MDMzNSwgNjAzMzksIDYwMzQzLCA2MDM0OCwgNjAzNTMsIDYwMzU5LCAKLSAgICA2MDM2NSwgNjAzNjksIDYwMzc1LCA2MDM4MSwgNjAzODUsIDYwMzkxLCA2MDM5NywgNjA0MDIsIDYwNDA3LCA2MDQxMSwgCi0gICAgNjA0MTcsIDYwNDIxLCA2MDQyNSwgNjA0MzEsIDYwNDM3LCA2MDQ0MiwgNjA0NDcsIDYwNDUxLCA2MDQ1NSwgNjA0NjMsIAotICAgIDYwNDY5LCA2MDQ3NSwgNjA0ODEsIDYwNDg2LCA2MDQ5MSwgNjA0OTYsIDYwNTAyLCA2MDUwNiwgNjA1MTIsIDYwNTE2LCAKLSAgICA2MDUyMCwgNjA1MjYsIDYwNTMyLCA2MDUzOCwgNjA1NDQsIDYwNTUwLCA2MDU1NiwgNjA1NjIsIDYwNTY4LCA2MDU3NCwgCi0gICAgNjA1ODAsIDYwNTg2LCA2MDU5MiwgNjA1OTYsIDYwNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MDYwOCwgNjA2MTEsIDYwNjE1LCA2MDYxOSwgNjA2MjMsIDYwNjI3LCA2MDYzMCwgNjA2MzMsIDYwNjM3LCA2MDY0MSwgCi0gICAgNjA2NDUsIDYwNjQ5LCA2MDY1MiwgNjA2NTcsIDYwNjYxLCA2MDY2NSwgNjA2NjksIDYwNjc0LCA2MDY3OCwgNjA2ODIsIAotICAgIDYwNjg2LCA2MDY5MCwgNjA2OTYsIDYwNzAyLCA2MDcwNiwgNjA3MTAsIDYwNzE0LCA2MDcxOCwgNjA3MjIsIDYwNzI2LCAKLSAgICA2MDczMCwgNjA3MzQsIDYwNzM4LCA2MDc0MiwgNjA3NDYsIDYwNzUyLCA2MDc1NiwgNjA3NjAsIDYwNzY0LCA2MDc2OCwgCi0gICAgNjA3NzIsIDYwNzc2LCA2MDc4MCwgNjA3ODQsIDYwNzg4LCA2MDc5MiwgNjA3OTYsIDYwODAwLCA2MDgwNCwgNjA4MDgsIAotICAgIDYwODEyLCA2MDgxNiwgNjA4MjIsIDYwODI4LCA2MDgzMywgNjA4MzgsIDYwODQyLCA2MDg0NiwgNjA4NTAsIDYwODU0LCAKLSAgICA2MDg1OCwgNjA4NjIsIDYwODY2LCA2MDg3MCwgNjA4NzQsIDYwODc4LCA2MDg4MiwgNjA4ODYsIDYwODkwLCA2MDg5NCwgCi0gICAgNjA4OTgsIDYwOTAyLCA2MDkwNiwgNjA5MTAsIDYwOTE0LCA2MDkxOCwgNjA5MjIsIDYwOTI2LCA2MDkzMCwgNjA5MzQsIAotICAgIDYwOTQwLCA2MDk0NCwgNjA5NDgsIDYwOTUyLCA2MDk1NiwgNjA5NjAsIDYwOTY0LCA2MDk2OCwgNjA5NzIsIDYwOTc3LCAKLSAgICA2MDk4NCwgNjA5ODgsIDYwOTkyLCA2MDk5NiwgNjEwMDAsIDYxMDA0LCA2MTAwOCwgNjEwMTIsIDYxMDE2LCA2MTAyMCwgCi0gICAgNjEwMjQsIDYxMDI4LCA2MTAzMiwgNjEwMzksIDYxMDQzLCA2MTA0OSwgNjEwNTMsIDYxMDU3LCA2MTA2MSwgNjEwNjUsIAotICAgIDYxMDY5LCA2MTA3MiwgNjEwNzYsIDYxMDgwLCA2MTA4NCwgNjEwODgsIDYxMDkyLCA2MTA5NiwgNjExMDAsIDYxMTA0LCAKLSAgICA2MTEwOCwgNjExMTIsIDYxMTE2LCA2MTEyMCwgNjExMjQsIDYxMTI4LCA2MTEzMiwgNjExMzYsIDYxMTQwLCA2MTE0NCwgCi0gICAgNjExNDgsIDYxMTUyLCA2MTE1NiwgNjExNjAsIDYxMTY0LCA2MTE2OCwgNjExNzIsIDYxMTc2LCA2MTE4MCwgNjExODQsIAotICAgIDYxMTg4LCA2MTE5MiwgNjExOTYsIDYxMjAwLCA2MTIwNiwgNjEyMTAsIDYxMjE0LCA2MTIxOCwgNjEyMjIsIDYxMjI2LCAKLSAgICA2MTIzMCwgNjEyMzQsIDYxMjM4LCA2MTI0MiwgNjEyNDYsIDYxMjUwLCA2MTI1NCwgNjEyNTgsIDYxMjYyLCA2MTI2NiwgCi0gICAgNjEyNzAsIDYxMjc0LCA2MTI3OCwgNjEyODIsIDYxMjg2LCA2MTI5MCwgNjEyOTQsIDYxMjk4LCA2MTMwMiwgNjEzMDYsIAotICAgIDYxMzEwLCA2MTMxNCwgNjEzMjIsIDYxMzI2LCA2MTMzMCwgNjEzMzQsIDYxMzM4LCA2MTM0MiwgNjEzNDgsIDYxMzUyLCAKLSAgICA2MTM1NiwgNjEzNjAsIDYxMzY0LCA2MTM2OCwgNjEzNzIsIDYxMzc2LCA2MTM4MCwgNjEzODQsIDYxMzg4LCA2MTM5MiwgCi0gICAgNjEzOTYsIDYxNDAwLCA2MTQwNiwgNjE0MTAsIDYxNDE0LCA2MTQxOCwgNjE0MjIsIDYxNDI2LCA2MTQzMCwgNjE0MzQsIAotICAgIDYxNDM4LCA2MTQ0MiwgNjE0NDYsIDYxNDUwLCA2MTQ1NCwgNjE0NTgsIDYxNDYyLCA2MTQ2NiwgNjE0NzAsIDYxNDc0LCAKLSAgICA2MTQ3OCwgNjE0ODIsIDYxNDg2LCA2MTQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0OTQsIDYxNTAzLCA2MTUxMSwgNjE1MjIsIDYxNTMyLCAKLSAgICA2MTU0MCwgNjE1NDksIDYxNTU4LCA2MTU2OCwgNjE1ODAsIDYxNTkyLCA2MTYwNCwgMCwgMCwgMCwgMCwgNjE2MTAsIAotICAgIDYxNjEzLCA2MTYxNiwgNjE2MjEsIDYxNjI0LCA2MTYzMSwgNjE2MzUsIDYxNjM5LCA2MTY0MywgNjE2NDcsIDYxNjUxLCAKLSAgICA2MTY1NiwgNjE2NjEsIDYxNjY1LCA2MTY2OSwgNjE2NzQsIDYxNjc5LCA2MTY4NCwgNjE2ODksIDYxNjkyLCA2MTY5NSwgCi0gICAgNjE3MDEsIDYxNzA3LCA2MTcxMiwgNjE3MTcsIDYxNzI0LCA2MTczMSwgNjE3MzUsIDYxNzM5LCA2MTc0MywgNjE3NTEsIAotICAgIDYxNzU3LCA2MTc2NCwgNjE3NjksIDYxNzc0LCA2MTc3OSwgNjE3ODQsIDYxNzg5LCA2MTc5NCwgNjE3OTksIDYxODA1LCAKLSAgICA2MTgxMCwgNjE4MTYsIDYxODIxLCA2MTgyNiwgNjE4MzEsIDYxODM2LCA2MTg0MiwgNjE4NDcsIDYxODUxLCA2MTg1NywgCi0gICAgNjE4NjgsIDYxODc4LCA2MTg5MywgNjE5MDMsIDYxOTA3LCA2MTkxNywgNjE5MjMsIDYxOTI5LCA2MTkzNSwgNjE5NDAsIAotICAgIDYxOTQzLCA2MTk0OCwgNjE5NTIsIDAsIDYxOTU4LCA2MTk2MiwgNjE5NjUsIDYxOTY5LCA2MTk3MiwgNjE5NzYsIDYxOTc5LCAKLSAgICA2MTk4MywgNjE5ODYsIDYxOTkwLCA2MTk5MywgNjE5OTYsIDYyMDAwLCA2MjAwNCwgNjIwMDgsIDYyMDEyLCA2MjAxNiwgCi0gICAgNjIwMjAsIDYyMDI0LCA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTYsIAotICAgIDYyMDYwLCA2MjA2NCwgNjIwNjgsIDYyMDcyLCA2MjA3NiwgNjIwODAsIDYyMDg0LCA2MjA4OCwgNjIwOTMsIDYyMDk3LCAKLSAgICA2MjEwMSwgNjIxMDUsIDYyMTA5LCA2MjExMiwgNjIxMTYsIDYyMTIwLCA2MjEyNCwgNjIxMjgsIDYyMTMyLCA2MjEzNiwgCi0gICAgNjIxMzksIDYyMTQzLCA2MjE0NiwgNjIxNTAsIDYyMTU0LCA2MjE1OCwgNjIxNjIsIDYyMTY2LCA2MjE3MCwgNjIxNzQsIAotICAgIDYyMTc4LCA2MjE4MiwgNjIxODYsIDYyMTkwLCA2MjE5NCwgNjIxOTcsIDYyMjAxLCA2MjIwNSwgNjIyMDksIDYyMjEzLCAKLSAgICA2MjIxNywgNjIyMjAsIDYyMjI1LCA2MjIyOSwgNjIyMzQsIDYyMjM4LCA2MjI0MiwgNjIyNDYsIDYyMjUwLCA2MjI1NCwgCi0gICAgNjIyNTgsIDYyMjYzLCA2MjI2NywgNjIyNzEsIDYyMjc1LCA2MjI3OSwgNjIyODMsIDYyMjg3LCA2MjI5MSwgMCwgMCwgCi0gICAgNjIyOTYsIDYyMzA0LCA2MjMxMiwgNjIzMTksIDYyMzI2LCA2MjMzMCwgNjIzMzYsIDYyMzQxLCA2MjM0NiwgNjIzNTAsIAotICAgIDYyMzUzLCA2MjM1NywgNjIzNjAsIDYyMzY0LCA2MjM2NywgNjIzNzEsIDYyMzc0LCA2MjM3OCwgNjIzODEsIDYyMzg0LCAKLSAgICA2MjM4OCwgNjIzOTIsIDYyMzk2LCA2MjQwMCwgNjI0MDQsIDYyNDA4LCA2MjQxMiwgNjI0MTYsIDYyNDIwLCA2MjQyNCwgCi0gICAgNjI0MjgsIDYyNDMyLCA2MjQzNiwgNjI0NDAsIDYyNDQ0LCA2MjQ0OCwgNjI0NTIsIDYyNDU2LCA2MjQ2MCwgNjI0NjQsIAotICAgIDYyNDY4LCA2MjQ3MiwgNjI0NzYsIDYyNDgxLCA2MjQ4NSwgNjI0ODksIDYyNDkzLCA2MjQ5NywgNjI1MDAsIDYyNTA0LCAKLSAgICA2MjUwOCwgNjI1MTIsIDYyNTE2LCA2MjUyMCwgNjI1MjQsIDYyNTI3LCA2MjUzMSwgNjI1MzQsIDYyNTM4LCA2MjU0MiwgCi0gICAgNjI1NDYsIDYyNTUwLCA2MjU1NCwgNjI1NTgsIDYyNTYyLCA2MjU2NiwgNjI1NzAsIDYyNTc0LCA2MjU3OCwgNjI1ODIsIAotICAgIDYyNTg1LCA2MjU4OSwgNjI1OTMsIDYyNTk3LCA2MjYwMSwgNjI2MDUsIDYyNjA4LCA2MjYxMywgNjI2MTcsIDYyNjIyLCAKLSAgICA2MjYyNiwgNjI2MzAsIDYyNjM0LCA2MjYzOCwgNjI2NDIsIDYyNjQ2LCA2MjY1MSwgNjI2NTUsIDYyNjU5LCA2MjY2MywgCi0gICAgNjI2NjcsIDYyNjcxLCA2MjY3NSwgNjI2NzksIDYyNjg0LCA2MjY4OCwgNjI2OTIsIDYyNjk2LCA2MjcwMCwgNjI3MDQsIAotICAgIDYyNzExLCA2MjcxNSwgNjI3MjEsIDAsIDAsIDAsIDAsIDAsIDYyNzI2LCA2MjczMSwgNjI3MzYsIDYyNzQxLCA2Mjc0NiwgCi0gICAgNjI3NTEsIDYyNzU2LCA2Mjc2MSwgNjI3NjUsIDYyNzcwLCA2Mjc3NSwgNjI3ODAsIDYyNzg1LCA2Mjc5MCwgNjI3OTUsIAotICAgIDYyODAwLCA2MjgwNSwgNjI4MTAsIDYyODE0LCA2MjgxOSwgNjI4MjQsIDYyODI4LCA2MjgzMiwgNjI4MzYsIDYyODQwLCAKLSAgICA2Mjg0NSwgNjI4NTAsIDYyODU1LCA2Mjg2MCwgNjI4NjUsIDYyODcwLCA2Mjg3NSwgNjI4ODAsIDYyODg1LCA2Mjg5MCwgCi0gICAgNjI4OTQsIDYyODk4LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgMCwgMCwgMCwgNjI5MjMsIDYyOTI3LCA2MjkzMSwgCi0gICAgNjI5MzUsIDYyOTM5LCA2Mjk0MywgNjI5NDcsIDYyOTUxLCA2Mjk1NSwgNjI5NTksIDYyOTYzLCA2Mjk2NywgNjI5NzEsIAotICAgIDYyOTc1LCA2Mjk3OSwgNjI5ODMsIDYyOTg3LCA2Mjk5MSwgNjI5OTUsIDYyOTk5LCA2MzAwMywgNjMwMDcsIDYzMDExLCAKLSAgICA2MzAxNSwgNjMwMTksIDYzMDIzLCA2MzAyNywgNjMwMzEsIDYzMDM1LCA2MzAzOSwgNjMwNDMsIDYzMDQ2LCA2MzA1MCwgCi0gICAgNjMwNTMsIDYzMDU3LCA2MzA2MSwgNjMwNjQsIDYzMDY4LCA2MzA3MiwgNjMwNzUsIDYzMDc5LCA2MzA4MywgNjMwODcsIAotICAgIDYzMDkxLCA2MzA5NCwgNjMwOTgsIDYzMTAyLCA2MzEwNiwgNjMxMTAsIDYzMTE0LCA2MzExOCwgNjMxMjEsIDYzMTI0LCAKLSAgICA2MzEyOCwgNjMxMzIsIDYzMTM2LCA2MzE0MCwgNjMxNDQsIDYzMTQ4LCA2MzE1MiwgNjMxNTYsIDYzMTYwLCA2MzE2NCwgCi0gICAgNjMxNjgsIDYzMTcyLCA2MzE3NiwgNjMxODAsIDYzMTg0LCA2MzE4OCwgNjMxOTIsIDYzMTk2LCA2MzIwMCwgNjMyMDQsIAotICAgIDYzMjA4LCA2MzIxMiwgNjMyMTYsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCA2MzIzNiwgNjMyNDAsIDYzMjQ0LCAKLSAgICA2MzI0OCwgNjMyNTIsIDYzMjU2LCA2MzI2MCwgNjMyNjQsIDYzMjY4LCA2MzI3MiwgNjMyNzYsIDYzMjgwLCA2MzI4NCwgCi0gICAgNjMyODgsIDAsIDYzMjkyLCA2MzI5OCwgNjMzMDQsIDYzMzA5LCA2MzMxNCwgNjMzMTksIDYzMzI1LCA2MzMzMSwgNjMzMzYsIAotICAgIDYzMzQyLCA2MzM0OCwgNjMzNTQsIDYzMzYwLCA2MzM2NiwgNjMzNzIsIDYzMzc4LCA2MzM4NCwgNjMzODksIDYzMzk0LCAKLSAgICA2MzM5OSwgNjM0MDQsIDYzNDA5LCA2MzQxNCwgNjM0MTksIDYzNDI0LCA2MzQyOSwgNjM0MzQsIDYzNDM5LCA2MzQ0NCwgCi0gICAgNjM0NDksIDYzNDU0LCA2MzQ1OSwgNjM0NjQsIDYzNDY5LCA2MzQ3NCwgNjM0NzksIDYzNDg0LCA2MzQ5MCwgNjM0OTYsIAotICAgIDYzNTAyLCA2MzUwOCwgNjM1MTMsIDYzNTE4LCAwLCAwLCAwLCAwLCAwLCA2MzUyMywgNjM1MjgsIDYzNTMzLCA2MzUzOCwgCi0gICAgNjM1NDMsIDYzNTQ4LCA2MzU1MywgNjM1NTgsIDYzNTYzLCA2MzU2OCwgNjM1NzMsIDYzNTc4LCA2MzU4MywgNjM1ODgsIAotICAgIDYzNTkzLCA2MzU5OCwgNjM2MDMsIDYzNjA4LCA2MzYxMiwgNjM2MTcsIDYzNjIyLCA2MzYyNywgNjM2MzIsIDYzNjM3LCAKLSAgICA2MzY0MiwgNjM2NDcsIDYzNjUyLCA2MzY1NywgNjM2NjIsIDYzNjY3LCA2MzY3MiwgNjM2NzcsIDYzNjgyLCA2MzY4NywgCi0gICAgNjM2OTIsIDYzNjk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzcwMiwgNjM3MDcsIDYzNzEyLCAKLSAgICA2MzcxNywgNjM3MjEsIDYzNzI2LCA2MzczMCwgNjM3MzUsIDYzNzQwLCA2Mzc0NSwgNjM3NTAsIDYzNzU1LCA2Mzc2MCwgCi0gICAgNjM3NjUsIDYzNzcwLCA2Mzc3NSwgNjM3ODAsIDYzNzg0LCA2Mzc4OCwgNjM3OTIsIDYzNzk2LCA2MzgwMCwgNjM4MDQsIAotICAgIDYzODA4LCA2MzgxMiwgNjM4MTYsIDYzODIwLCA2MzgyNCwgNjM4MjgsIDYzODMyLCA2MzgzNiwgNjM4NDEsIDYzODQ2LCAKLSAgICA2Mzg1MSwgNjM4NTYsIDYzODYxLCA2Mzg2NiwgNjM4NzEsIDYzODc2LCA2Mzg4MSwgNjM4ODYsIDYzODkxLCA2Mzg5NiwgCi0gICAgNjM5MDEsIDYzOTA2LCA2MzkxMSwgNjM5MTcsIDAsIDYzOTI0LCA2MzkyNywgNjM5MzAsIDYzOTMzLCA2MzkzNiwgNjM5MzksIAotICAgIDYzOTQyLCA2Mzk0NiwgNjM5NDksIDYzOTUzLCA2Mzk1NywgNjM5NjEsIDYzOTY1LCA2Mzk2OSwgNjM5NzMsIDYzOTc3LCAKLSAgICA2Mzk4MSwgNjM5ODUsIDYzOTg5LCA2Mzk5MywgNjM5OTcsIDY0MDAxLCA2NDAwNSwgNjQwMDksIDY0MDEzLCA2NDAxNywgCi0gICAgNjQwMjEsIDY0MDI1LCA2NDAyOSwgNjQwMzMsIDY0MDM3LCA2NDA0MSwgNjQwNDUsIDY0MDQ5LCA2NDA1MywgNjQwNTcsIAotICAgIDY0MDYxLCA2NDA2NSwgNjQwNjksIDY0MDczLCA2NDA3NywgNjQwODYsIDY0MDk1LCA2NDEwNCwgNjQxMTMsIDY0MTIyLCAKLSAgICA2NDEzMSwgNjQxNDAsIDY0MTQ5LCA2NDE1MiwgNjQxNTcsIDY0MTYyLCA2NDE2NywgNjQxNzIsIDY0MTc3LCA2NDE4MiwgCi0gICAgNjQxODgsIDY0MTkzLCA2NDE5OSwgNjQyMDMsIDY0MjA4LCA2NDIxMywgNjQyMTgsIDY0MjIzLCA2NDIyOCwgNjQyMzIsIAotICAgIDY0MjM2LCA2NDI0MCwgNjQyNDQsIDY0MjQ4LCA2NDI1MiwgNjQyNTYsIDY0MjYwLCA2NDI2NCwgNjQyNjgsIDY0MjcyLCAKLSAgICA2NDI3NiwgNjQyODAsIDY0Mjg0LCA2NDI4OSwgNjQyOTQsIDY0Mjk5LCA2NDMwNCwgNjQzMDksIDY0MzE0LCA2NDMxOSwgCi0gICAgNjQzMjQsIDY0MzI5LCA2NDMzNCwgNjQzMzksIDY0MzQ0LCA2NDM0OSwgNjQzNTQsIDY0MzYwLCA2NDM2NiwgNjQzNzEsIAotICAgIDY0Mzc2LCA2NDM3OSwgNjQzODIsIDY0Mzg1LCA2NDM4OCwgNjQzOTEsIDY0Mzk0LCA2NDM5OCwgNjQ0MDEsIDY0NDA1LCAKLSAgICA2NDQwOSwgNjQ0MTMsIDY0NDE3LCA2NDQyMSwgNjQ0MjUsIDY0NDI5LCA2NDQzMywgNjQ0MzcsIDY0NDQxLCA2NDQ0NSwgCi0gICAgNjQ0NDksIDY0NDUzLCA2NDQ1NywgNjQ0NjEsIDY0NDY1LCA2NDQ2OSwgNjQ0NzMsIDY0NDc3LCA2NDQ4MSwgNjQ0ODUsIAotICAgIDY0NDg5LCA2NDQ5MywgNjQ0OTcsIDY0NTAxLCA2NDUwNSwgNjQ1MDksIDY0NTEzLCA2NDUxNywgNjQ1MjEsIDY0NTI1LCAKLSAgICA2NDUyOSwgNjQ1MzMsIDY0NTM3LCA2NDU0MSwgNjQ1NDUsIDY0NTQ5LCA2NDU1MywgNjQ1NTcsIDY0NTYxLCA2NDU2NSwgCi0gICAgNjQ1NzAsIDY0NTc2LCA2NDU4MSwgNjQ1ODcsIDY0NTkxLCA2NDU5NiwgNjQ2MDEsIDY0NjA2LCA2NDYxMSwgNjQ2MTYsIAotICAgIDY0NjIxLCA2NDYyNywgNjQ2MzIsIDY0NjM4LCA2NDY0MiwgNjQ2NDksIDY0NjU2LCA2NDY2MywgNjQ2NzAsIDY0Njc3LCAKLSAgICA2NDY4NCwgNjQ2OTEsIDY0Njk4LCA2NDcwNSwgNjQ3MTIsIDY0NzE5LCA2NDcyNiwgNjQ3MjksIDY0NzMyLCA2NDczNSwgCi0gICAgNjQ3NDAsIDY0NzQzLCA2NDc0NiwgNjQ3NDksIDY0NzUyLCA2NDc1NSwgNjQ3NTgsIDY0NzYyLCA2NDc2NiwgNjQ3NzAsIAotICAgIDY0Nzc0LCA2NDc3OCwgNjQ3ODIsIDY0Nzg2LCA2NDc5MCwgNjQ3OTQsIDY0Nzk4LCA2NDgwMiwgNjQ4MDYsIDY0ODEwLCAKLSAgICA2NDgxMywgNjQ4MTcsIDY0ODIxLCA2NDgyNSwgNjQ4MjksIDY0ODMzLCA2NDgzNiwgNjQ4NDAsIDY0ODQ0LCA2NDg0OCwgCi0gICAgNjQ4NTIsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIDY0ODY3LCA2NDg3MSwgNjQ4NzQsIDY0ODc4LCA2NDg4MiwgNjQ4ODYsIAotICAgIDY0ODkwLCA2NDg5NCwgNjQ4OTgsIDY0OTAyLCA2NDkwNiwgNjQ5MTAsIDY0OTE0LCAwLCA2NDkxOCwgNjQ5MjEsIDY0OTI0LCAKLSAgICA2NDkyNywgNjQ5MzAsIDY0OTMzLCA2NDkzNiwgNjQ5MzksIDY0OTQyLCA2NDk0NSwgNjQ5NDgsIDY0OTUxLCA2NDk1NCwgCi0gICAgNjQ5NTcsIDY0OTYwLCA2NDk2MywgNjQ5NjYsIDY0OTY5LCA2NDk3MiwgNjQ5NzUsIDY0OTc4LCA2NDk4MSwgNjQ5ODQsIAotICAgIDY0OTg3LCA2NDk5MCwgNjQ5OTMsIDY0OTk2LCA2NDk5OSwgNjUwMDIsIDY1MDA1LCA2NTAwOCwgNjUwMTEsIDY1MDE0LCAKLSAgICA2NTAxNywgNjUwMjAsIDY1MDIzLCA2NTAyNiwgNjUwMjksIDY1MDMyLCA2NTAzNSwgNjUwMzgsIDY1MDQxLCA2NTA0NCwgCi0gICAgNjUwNDcsIDY1MDUwLCA2NTA1MywgNjUwNTYsIDY1MDU5LCA2NTA2MiwgNjUwNjUsIDY1MDY4LCA2NTA3MSwgNjUwNzQsIAotICAgIDY1MDc3LCA2NTA4MCwgNjUwODMsIDY1MDg2LCA2NTA4OSwgNjUwOTIsIDY1MDk1LCA2NTA5OCwgNjUxMDEsIDY1MTA0LCAKLSAgICA2NTEwNywgNjUxMTAsIDY1MTEzLCA2NTExNiwgNjUxMTksIDY1MTIyLCA2NTEyNSwgNjUxMjgsIDY1MTMxLCA2NTEzNCwgCi0gICAgNjUxMzcsIDY1MTQwLCA2NTE0MywgNjUxNDYsIDY1MTQ5LCA2NTE1MiwgNjUxNTUsIDY1MTU4LCA2NTE2MSwgNjUxNjQsIAotICAgIDY1MTY3LCA2NTE3MCwgNjUxNzMsIDY1MTc2LCA2NTE3OSwgNjUxODIsIDY1MTkxLCA2NTE5OSwgNjUyMDcsIDY1MjE1LCAKLSAgICA2NTIyMywgNjUyMzEsIDY1MjM5LCA2NTI0OCwgNjUyNTYsIDY1MjY1LCA2NTI3NCwgNjUyODMsIDY1MjkyLCA2NTMwMSwgCi0gICAgNjUzMTAsIDY1MzE5LCA2NTMyOCwgNjUzMzcsIDY1MzQ2LCA2NTM1NSwgNjUzNjQsIDY1MzczLCA2NTM4MiwgNjUzOTEsIAotICAgIDY1NDAwLCA2NTQwMywgNjU0MDYsIDY1NDA5LCA2NTQxMSwgNjU0MTQsIDY1NDE3LCA2NTQyMCwgNjU0MjUsIDY1NDMwLCAKLSAgICA2NTQzMywgNjU0NDAsIDY1NDQ3LCA2NTQ1NCwgNjU0NjEsIDY1NDY0LCA2NTQ2OSwgNjU0NzIsIDY1NDc2LCA2NTQ3OCwgCi0gICAgNjU0ODAsIDY1NDgzLCA2NTQ4NiwgNjU0ODksIDY1NDkyLCA2NTQ5NSwgNjU0OTgsIDY1NTAxLCA2NTUwNiwgNjU1MTEsIAotICAgIDY1NTE0LCA2NTUxNywgNjU1MjAsIDY1NTIzLCA2NTUyNiwgNjU1MjksIDY1NTMyLCA2NTUzNiwgNjU1MzksIDY1NTQyLCAKLSAgICA2NTU0NSwgNjU1NDgsIDY1NTUxLCA2NTU1NiwgNjU1NTksIDY1NTYyLCA2NTU2NSwgNjU1NzAsIDY1NTc1LCA2NTU4MCwgCi0gICAgNjU1ODUsIDY1NTkwLCA2NTU5NSwgNjU2MDAsIDY1NjA1LCA2NTYxMCwgNjU2MTgsIDY1NjIwLCA2NTYyMywgNjU2MjYsIAotICAgIDY1NjI5LCA2NTYzMiwgNjU2MzcsIDY1NjQ1LCA2NTY0OCwgNjU2NTEsIDY1NjU1LCA2NTY1OCwgNjU2NjEsIDY1NjY0LCAKLSAgICA2NTY2OSwgNjU2NzIsIDY1Njc1LCA2NTY4MCwgNjU2ODMsIDY1Njg2LCA2NTY5MSwgNjU2OTQsIDY1Njk3LCA2NTcwMiwgCi0gICAgNjU3MDcsIDY1NzEyLCA2NTcxNSwgNjU3MTgsIDY1NzIxLCA2NTcyNCwgNjU3MzAsIDY1NzMzLCA2NTczNiwgNjU3MzksIAotICAgIDY1NzQxLCA2NTc0NCwgNjU3NDcsIDY1NzUwLCA2NTc1NSwgNjU3NTgsIDY1NzYxLCA2NTc2NCwgNjU3NjcsIDY1NzcwLCAKLSAgICA2NTc3NSwgNjU3NzgsIDY1NzgxLCA2NTc4NCwgNjU3ODcsIDY1NzkwLCA2NTc5MywgNjU3OTYsIDY1Nzk5LCA2NTgwMiwgCi0gICAgNjU4MDgsIDY1ODEzLCA2NTgyMSwgNjU4MjksIDY1ODM3LCA2NTg0NSwgNjU4NTMsIDY1ODYxLCA2NTg3MCwgNjU4NzgsIAotICAgIDY1ODg3LCA2NTg5NiwgNjU5MDUsIDY1OTE0LCA2NTkyMywgNjU5MzIsIDY1OTQxLCA2NTk1MCwgNjU5NTksIDY1OTY4LCAKLSAgICA2NTk3NywgNjU5ODYsIDY1OTk1LCA2NjAwNCwgNjYwMTMsIDY2MDIyLCA2NjAzMSwgNjYwNDAsIDY2MDQ5LCA2NjA1OCwgCi0gICAgNjYwNjcsIDY2MDc2LCA2NjA4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNjA2OTMsIDYwNjk3LCA2MDcwMSwgNjA3MDYsIDYwNzExLCA2MDcxNiwgNjA3MjAsIDYwNzI0LCA2MDcyOCwgCisgICAgNjA3MzMsIDYwNzM4LCA2MDc0MiwgNjA3NDYsIDYwNzUwLCA2MDc1NCwgNjA3NTksIDYwNzY0LCA2MDc2OSwgNjA3NzQsIAorICAgIDYwNzc4LCA2MDc4MiwgNjA3ODcsIDYwNzkyLCA2MDc5NywgNjA4MDIsIDYwODA2LCAwLCA2MDgxMCwgNjA4MTQsIDYwODE4LCAKKyAgICA2MDgyMiwgNjA4MjYsIDYwODMwLCA2MDgzNCwgNjA4MzksIDYwODQ0LCA2MDg0OCwgNjA4NTMsIDYwODU4LCA2MDg2NywgCisgICAgNjA4NzEsIDYwODc1LCA2MDg3OSwgNjA4ODYsIDYwODkwLCA2MDg5NSwgNjA5MDAsIDYwOTA0LCA2MDkwOCwgNjA5MTQsIAorICAgIDYwOTE5LCA2MDkyNCwgNjA5MjksIDYwOTM0LCA2MDkzOCwgNjA5NDIsIDYwOTQ2LCA2MDk1MCwgNjA5NTQsIDYwOTU5LCAKKyAgICA2MDk2NCwgNjA5NjgsIDYwOTcyLCA2MDk3NywgNjA5ODIsIDYwOTg3LCA2MDk5MSwgNjA5OTUsIDYxMDAwLCA2MTAwNSwgCisgICAgNjEwMTEsIDYxMDE3LCA2MTAyMSwgNjEwMjcsIDYxMDMzLCA2MTAzNywgNjEwNDMsIDYxMDQ5LCA2MTA1NCwgNjEwNTksIAorICAgIDYxMDYzLCA2MTA2OSwgNjEwNzMsIDYxMDc3LCA2MTA4MywgNjEwODksIDYxMDk0LCA2MTA5OSwgNjExMDMsIDYxMTA3LCAKKyAgICA2MTExNSwgNjExMjEsIDYxMTI3LCA2MTEzMywgNjExMzgsIDYxMTQzLCA2MTE0OCwgNjExNTQsIDYxMTU4LCA2MTE2NCwgCisgICAgNjExNjgsIDYxMTcyLCA2MTE3OCwgNjExODQsIDYxMTkwLCA2MTE5NiwgNjEyMDIsIDYxMjA4LCA2MTIxNCwgNjEyMjAsIAorICAgIDYxMjI2LCA2MTIzMiwgNjEyMzgsIDYxMjQ0LCA2MTI0OCwgNjEyNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDYxMjYwLCA2MTI2MywgNjEyNjcsIDYxMjcxLCA2MTI3NSwgNjEyNzksIDYxMjgyLCA2MTI4NSwgNjEyODksIAorICAgIDYxMjkzLCA2MTI5NywgNjEzMDEsIDYxMzA0LCA2MTMwOSwgNjEzMTMsIDYxMzE3LCA2MTMyMSwgNjEzMjYsIDYxMzMwLCAKKyAgICA2MTMzNCwgNjEzMzgsIDYxMzQyLCA2MTM0OCwgNjEzNTQsIDYxMzU4LCA2MTM2MiwgNjEzNjYsIDYxMzcwLCA2MTM3NCwgCisgICAgNjEzNzgsIDYxMzgyLCA2MTM4NiwgNjEzOTAsIDYxMzk0LCA2MTM5OCwgNjE0MDQsIDYxNDA4LCA2MTQxMiwgNjE0MTYsIAorICAgIDYxNDIwLCA2MTQyNCwgNjE0MjgsIDYxNDMyLCA2MTQzNiwgNjE0NDAsIDYxNDQ0LCA2MTQ0OCwgNjE0NTIsIDYxNDU2LCAKKyAgICA2MTQ2MCwgNjE0NjQsIDYxNDY4LCA2MTQ3NCwgNjE0ODAsIDYxNDg1LCA2MTQ5MCwgNjE0OTQsIDYxNDk4LCA2MTUwMiwgCisgICAgNjE1MDYsIDYxNTEwLCA2MTUxNCwgNjE1MTgsIDYxNTIyLCA2MTUyNiwgNjE1MzAsIDYxNTM0LCA2MTUzOCwgNjE1NDIsIAorICAgIDYxNTQ2LCA2MTU1MCwgNjE1NTQsIDYxNTU4LCA2MTU2MiwgNjE1NjYsIDYxNTcwLCA2MTU3NCwgNjE1NzgsIDYxNTgyLCAKKyAgICA2MTU4NiwgNjE1OTIsIDYxNTk2LCA2MTYwMCwgNjE2MDQsIDYxNjA4LCA2MTYxMiwgNjE2MTYsIDYxNjIwLCA2MTYyNCwgCisgICAgNjE2MjksIDYxNjM2LCA2MTY0MCwgNjE2NDQsIDYxNjQ4LCA2MTY1MiwgNjE2NTYsIDYxNjYwLCA2MTY2NCwgNjE2NjgsIAorICAgIDYxNjcyLCA2MTY3NiwgNjE2ODAsIDYxNjg0LCA2MTY5MSwgNjE2OTUsIDYxNzAxLCA2MTcwNSwgNjE3MDksIDYxNzEzLCAKKyAgICA2MTcxNywgNjE3MjEsIDYxNzI0LCA2MTcyOCwgNjE3MzIsIDYxNzM2LCA2MTc0MCwgNjE3NDQsIDYxNzQ4LCA2MTc1MiwgCisgICAgNjE3NTYsIDYxNzYwLCA2MTc2NCwgNjE3NjgsIDYxNzcyLCA2MTc3NiwgNjE3ODAsIDYxNzg0LCA2MTc4OCwgNjE3OTIsIAorICAgIDYxNzk2LCA2MTgwMCwgNjE4MDQsIDYxODA4LCA2MTgxMiwgNjE4MTYsIDYxODIwLCA2MTgyNCwgNjE4MjgsIDYxODMyLCAKKyAgICA2MTgzNiwgNjE4NDAsIDYxODQ0LCA2MTg0OCwgNjE4NTIsIDYxODU4LCA2MTg2MiwgNjE4NjYsIDYxODcwLCA2MTg3NCwgCisgICAgNjE4NzgsIDYxODgyLCA2MTg4NiwgNjE4OTAsIDYxODk0LCA2MTg5OCwgNjE5MDIsIDYxOTA2LCA2MTkxMCwgNjE5MTQsIAorICAgIDYxOTE4LCA2MTkyMiwgNjE5MjYsIDYxOTMwLCA2MTkzNCwgNjE5MzgsIDYxOTQyLCA2MTk0NiwgNjE5NTAsIDYxOTU0LCAKKyAgICA2MTk1OCwgNjE5NjIsIDYxOTY2LCA2MTk3NCwgNjE5NzgsIDYxOTgyLCA2MTk4NiwgNjE5OTAsIDYxOTk0LCA2MjAwMCwgCisgICAgNjIwMDQsIDYyMDA4LCA2MjAxMiwgNjIwMTYsIDYyMDIwLCA2MjAyNCwgNjIwMjgsIDYyMDMyLCA2MjAzNiwgNjIwNDAsIAorICAgIDYyMDQ0LCA2MjA0OCwgNjIwNTIsIDYyMDU4LCA2MjA2MiwgNjIwNjYsIDYyMDcwLCA2MjA3NCwgNjIwNzgsIDYyMDgyLCAKKyAgICA2MjA4NiwgNjIwOTAsIDYyMDk0LCA2MjA5OCwgNjIxMDIsIDYyMTA2LCA2MjExMCwgNjIxMTQsIDYyMTE4LCA2MjEyMiwgCisgICAgNjIxMjYsIDYyMTMwLCA2MjEzNCwgNjIxMzgsIDYyMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjE0NiwgNjIxNTUsIDYyMTYzLCA2MjE3NCwgNjIxODQsIAorICAgIDYyMTkyLCA2MjIwMSwgNjIyMTAsIDYyMjIwLCA2MjIzMiwgNjIyNDQsIDYyMjU2LCAwLCAwLCAwLCAwLCA2MjI2MiwgCisgICAgNjIyNjUsIDYyMjY4LCA2MjI3MywgNjIyNzYsIDYyMjgzLCA2MjI4NywgNjIyOTEsIDYyMjk1LCA2MjI5OSwgNjIzMDMsIAorICAgIDYyMzA4LCA2MjMxMywgNjIzMTcsIDYyMzIxLCA2MjMyNiwgNjIzMzEsIDYyMzM2LCA2MjM0MSwgNjIzNDQsIDYyMzQ3LCAKKyAgICA2MjM1MywgNjIzNTksIDYyMzY0LCA2MjM2OSwgNjIzNzYsIDYyMzgzLCA2MjM4NywgNjIzOTEsIDYyMzk1LCA2MjQwMywgCisgICAgNjI0MDksIDYyNDE2LCA2MjQyMSwgNjI0MjYsIDYyNDMxLCA2MjQzNiwgNjI0NDEsIDYyNDQ2LCA2MjQ1MSwgNjI0NTcsIAorICAgIDYyNDYyLCA2MjQ2OCwgNjI0NzMsIDYyNDc4LCA2MjQ4MywgNjI0ODgsIDYyNDk0LCA2MjQ5OSwgNjI1MDMsIDYyNTA5LCAKKyAgICA2MjUyMCwgNjI1MzAsIDYyNTQ1LCA2MjU1NSwgNjI1NTksIDYyNTY5LCA2MjU3NSwgNjI1ODEsIDYyNTg3LCA2MjU5MiwgCisgICAgNjI1OTUsIDYyNjAwLCA2MjYwNCwgMCwgNjI2MTAsIDYyNjE0LCA2MjYxNywgNjI2MjEsIDYyNjI0LCA2MjYyOCwgNjI2MzEsIAorICAgIDYyNjM1LCA2MjYzOCwgNjI2NDIsIDYyNjQ1LCA2MjY0OCwgNjI2NTIsIDYyNjU2LCA2MjY2MCwgNjI2NjQsIDYyNjY4LCAKKyAgICA2MjY3MiwgNjI2NzYsIDYyNjgwLCA2MjY4NCwgNjI2ODgsIDYyNjkyLCA2MjY5NiwgNjI3MDAsIDYyNzA0LCA2MjcwOCwgCisgICAgNjI3MTIsIDYyNzE2LCA2MjcyMCwgNjI3MjQsIDYyNzI4LCA2MjczMiwgNjI3MzYsIDYyNzQwLCA2Mjc0NSwgNjI3NDksIAorICAgIDYyNzUzLCA2Mjc1NywgNjI3NjEsIDYyNzY0LCA2Mjc2OCwgNjI3NzEsIDYyNzc1LCA2Mjc3OSwgNjI3ODMsIDYyNzg3LCAKKyAgICA2Mjc5MCwgNjI3OTQsIDYyNzk3LCA2MjgwMSwgNjI4MDUsIDYyODA5LCA2MjgxMywgNjI4MTcsIDYyODIxLCA2MjgyNSwgCisgICAgNjI4MjksIDYyODMzLCA2MjgzNywgNjI4NDEsIDYyODQ1LCA2Mjg0OCwgNjI4NTIsIDYyODU2LCA2Mjg2MCwgNjI4NjQsIAorICAgIDYyODY4LCA2Mjg3MSwgNjI4NzYsIDYyODgwLCA2Mjg4NSwgNjI4ODksIDYyODkzLCA2Mjg5NywgNjI5MDEsIDYyOTA1LCAKKyAgICA2MjkwOSwgNjI5MTQsIDYyOTE4LCA2MjkyMiwgNjI5MjYsIDYyOTMwLCA2MjkzNCwgNjI5MzgsIDYyOTQyLCAwLCAwLCAKKyAgICA2Mjk0NywgNjI5NTUsIDYyOTYzLCA2Mjk3MCwgNjI5NzcsIDYyOTgxLCA2Mjk4NywgNjI5OTIsIDYyOTk3LCA2MzAwMSwgCisgICAgNjMwMDQsIDYzMDA4LCA2MzAxMSwgNjMwMTUsIDYzMDE4LCA2MzAyMiwgNjMwMjUsIDYzMDI5LCA2MzAzMiwgNjMwMzUsIAorICAgIDYzMDM5LCA2MzA0MywgNjMwNDcsIDYzMDUxLCA2MzA1NSwgNjMwNTksIDYzMDYzLCA2MzA2NywgNjMwNzEsIDYzMDc1LCAKKyAgICA2MzA3OSwgNjMwODMsIDYzMDg3LCA2MzA5MSwgNjMwOTUsIDYzMDk5LCA2MzEwMywgNjMxMDcsIDYzMTExLCA2MzExNSwgCisgICAgNjMxMTksIDYzMTIzLCA2MzEyNywgNjMxMzIsIDYzMTM2LCA2MzE0MCwgNjMxNDQsIDYzMTQ4LCA2MzE1MSwgNjMxNTUsIAorICAgIDYzMTU4LCA2MzE2MiwgNjMxNjYsIDYzMTcwLCA2MzE3NCwgNjMxNzcsIDYzMTgxLCA2MzE4NCwgNjMxODgsIDYzMTkyLCAKKyAgICA2MzE5NiwgNjMyMDAsIDYzMjA0LCA2MzIwOCwgNjMyMTIsIDYzMjE2LCA2MzIyMCwgNjMyMjQsIDYzMjI4LCA2MzIzMiwgCisgICAgNjMyMzUsIDYzMjM5LCA2MzI0MywgNjMyNDcsIDYzMjUxLCA2MzI1NSwgNjMyNTgsIDYzMjYzLCA2MzI2NywgNjMyNzIsIAorICAgIDYzMjc2LCA2MzI4MCwgNjMyODQsIDYzMjg4LCA2MzI5MiwgNjMyOTYsIDYzMzAxLCA2MzMwNSwgNjMzMDksIDYzMzEzLCAKKyAgICA2MzMxNywgNjMzMjEsIDYzMzI1LCA2MzMyOSwgNjMzMzQsIDYzMzM4LCA2MzM0MiwgNjMzNDYsIDYzMzUwLCA2MzM1NCwgCisgICAgNjMzNjEsIDYzMzY1LCA2MzM3MSwgMCwgMCwgMCwgMCwgMCwgNjMzNzYsIDYzMzgxLCA2MzM4NiwgNjMzOTEsIDYzMzk2LCAKKyAgICA2MzQwMSwgNjM0MDYsIDYzNDExLCA2MzQxNSwgNjM0MjAsIDYzNDI1LCA2MzQzMCwgNjM0MzUsIDYzNDQwLCA2MzQ0NSwgCisgICAgNjM0NTAsIDYzNDU1LCA2MzQ2MCwgNjM0NjQsIDYzNDY5LCA2MzQ3NCwgNjM0NzksIDYzNDgzLCA2MzQ4NywgNjM0OTEsIAorICAgIDYzNDk2LCA2MzUwMSwgNjM1MDYsIDYzNTExLCA2MzUxNiwgNjM1MjEsIDYzNTI2LCA2MzUzMSwgNjM1MzYsIDYzNTQxLCAKKyAgICA2MzU0NSwgNjM1NDksIDYzNTU0LCA2MzU1OSwgNjM1NjQsIDYzNTY5LCAwLCAwLCAwLCA2MzU3NCwgNjM1NzgsIDYzNTgyLCAKKyAgICA2MzU4NiwgNjM1OTAsIDYzNTk0LCA2MzU5OCwgNjM2MDIsIDYzNjA2LCA2MzYxMCwgNjM2MTQsIDYzNjE4LCA2MzYyMiwgCisgICAgNjM2MjYsIDYzNjMwLCA2MzYzNCwgNjM2MzgsIDYzNjQyLCA2MzY0NiwgNjM2NTAsIDYzNjU0LCA2MzY1OCwgNjM2NjIsIAorICAgIDYzNjY2LCA2MzY3MCwgNjM2NzQsIDYzNjc4LCA2MzY4MiwgNjM2ODYsIDYzNjkwLCA2MzY5NCwgNjM2OTcsIDYzNzAxLCAKKyAgICA2MzcwNCwgNjM3MDgsIDYzNzEyLCA2MzcxNSwgNjM3MTksIDYzNzIzLCA2MzcyNiwgNjM3MzAsIDYzNzM0LCA2MzczOCwgCisgICAgNjM3NDIsIDYzNzQ1LCA2Mzc0OSwgNjM3NTMsIDYzNzU3LCA2Mzc2MSwgNjM3NjUsIDYzNzY5LCA2Mzc3MiwgNjM3NzUsIAorICAgIDYzNzc5LCA2Mzc4MywgNjM3ODcsIDYzNzkxLCA2Mzc5NSwgNjM3OTksIDYzODAzLCA2MzgwNywgNjM4MTEsIDYzODE1LCAKKyAgICA2MzgxOSwgNjM4MjMsIDYzODI3LCA2MzgzMSwgNjM4MzUsIDYzODM5LCA2Mzg0MywgNjM4NDcsIDYzODUxLCA2Mzg1NSwgCisgICAgNjM4NTksIDYzODYzLCA2Mzg2NywgNjM4NzEsIDYzODc1LCA2Mzg3OSwgNjM4ODMsIDYzODg3LCA2Mzg5MSwgNjM4OTUsIAorICAgIDYzODk5LCA2MzkwMywgNjM5MDcsIDYzOTExLCA2MzkxNSwgNjM5MTksIDYzOTIzLCA2MzkyNywgNjM5MzEsIDYzOTM1LCAKKyAgICA2MzkzOSwgMCwgNjM5NDMsIDYzOTQ5LCA2Mzk1NSwgNjM5NjAsIDYzOTY1LCA2Mzk3MCwgNjM5NzYsIDYzOTgyLCA2Mzk4NywgCisgICAgNjM5OTMsIDYzOTk5LCA2NDAwNSwgNjQwMTEsIDY0MDE3LCA2NDAyMywgNjQwMjksIDY0MDM1LCA2NDA0MCwgNjQwNDUsIAorICAgIDY0MDUwLCA2NDA1NSwgNjQwNjAsIDY0MDY1LCA2NDA3MCwgNjQwNzUsIDY0MDgwLCA2NDA4NSwgNjQwOTAsIDY0MDk1LCAKKyAgICA2NDEwMCwgNjQxMDUsIDY0MTEwLCA2NDExNSwgNjQxMjAsIDY0MTI1LCA2NDEzMCwgNjQxMzUsIDY0MTQxLCA2NDE0NywgCisgICAgNjQxNTMsIDY0MTU5LCA2NDE2NCwgNjQxNjksIDAsIDAsIDAsIDAsIDAsIDY0MTc0LCA2NDE3OSwgNjQxODQsIDY0MTg5LCAKKyAgICA2NDE5NCwgNjQxOTksIDY0MjA0LCA2NDIwOSwgNjQyMTQsIDY0MjE5LCA2NDIyNCwgNjQyMjksIDY0MjM0LCA2NDIzOSwgCisgICAgNjQyNDQsIDY0MjQ5LCA2NDI1NCwgNjQyNTksIDY0MjY0LCA2NDI2OSwgNjQyNzQsIDY0Mjc5LCA2NDI4NCwgNjQyODksIAorICAgIDY0Mjk0LCA2NDI5OSwgNjQzMDQsIDY0MzA5LCA2NDMxNCwgNjQzMTksIDY0MzI0LCA2NDMyOSwgNjQzMzQsIDY0MzM5LCAKKyAgICA2NDM0NCwgNjQzNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MzU0LCA2NDM1OSwgNjQzNjQsIAorICAgIDY0MzY5LCA2NDM3MywgNjQzNzgsIDY0MzgyLCA2NDM4NywgNjQzOTIsIDY0Mzk3LCA2NDQwMiwgNjQ0MDcsIDY0NDEyLCAKKyAgICA2NDQxNywgNjQ0MjIsIDY0NDI3LCA2NDQzMiwgNjQ0MzYsIDY0NDQwLCA2NDQ0NCwgNjQ0NDgsIDY0NDUyLCA2NDQ1NiwgCisgICAgNjQ0NjAsIDY0NDY0LCA2NDQ2OCwgNjQ0NzIsIDY0NDc2LCA2NDQ4MCwgNjQ0ODQsIDY0NDg4LCA2NDQ5MywgNjQ0OTgsIAorICAgIDY0NTAzLCA2NDUwOCwgNjQ1MTMsIDY0NTE4LCA2NDUyMywgNjQ1MjgsIDY0NTMzLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCAKKyAgICA2NDU1MywgNjQ1NTgsIDY0NTYzLCA2NDU2OSwgMCwgNjQ1NzYsIDY0NTgwLCA2NDU4NCwgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgCisgICAgNjQ2MDAsIDY0NjA1LCA2NDYwOSwgNjQ2MTQsIDY0NjE5LCA2NDYyNCwgNjQ2MjksIDY0NjM0LCA2NDYzOSwgNjQ2NDQsIAorICAgIDY0NjQ5LCA2NDY1NCwgNjQ2NTksIDY0NjY0LCA2NDY2OSwgNjQ2NzQsIDY0Njc5LCA2NDY4NCwgNjQ2ODksIDY0Njk0LCAKKyAgICA2NDY5OSwgNjQ3MDQsIDY0NzA5LCA2NDcxNCwgNjQ3MTksIDY0NzI0LCA2NDcyOSwgNjQ3MzQsIDY0NzM5LCA2NDc0NCwgCisgICAgNjQ3NDksIDY0NzU0LCA2NDc1OSwgNjQ3NjQsIDY0NzY5LCA2NDc3OCwgNjQ3ODcsIDY0Nzk2LCA2NDgwNSwgNjQ4MTQsIAorICAgIDY0ODIzLCA2NDgzMiwgNjQ4NDEsIDY0ODQ0LCA2NDg0OSwgNjQ4NTQsIDY0ODU5LCA2NDg2NCwgNjQ4NjksIDY0ODc0LCAKKyAgICA2NDg4MCwgNjQ4ODUsIDY0ODkxLCA2NDg5NSwgNjQ5MDAsIDY0OTA1LCA2NDkxMCwgNjQ5MTUsIDY0OTIwLCA2NDkyNCwgCisgICAgNjQ5MjgsIDY0OTMyLCA2NDkzNiwgNjQ5NDAsIDY0OTQ0LCA2NDk0OCwgNjQ5NTIsIDY0OTU2LCA2NDk2MCwgNjQ5NjQsIAorICAgIDY0OTY4LCA2NDk3MiwgNjQ5NzYsIDY0OTgxLCA2NDk4NiwgNjQ5OTEsIDY0OTk2LCA2NTAwMSwgNjUwMDYsIDY1MDExLCAKKyAgICA2NTAxNiwgNjUwMjEsIDY1MDI2LCA2NTAzMSwgNjUwMzYsIDY1MDQxLCA2NTA0NiwgNjUwNTIsIDY1MDU4LCA2NTA2MywgCisgICAgNjUwNjgsIDY1MDcyLCA2NTA3NiwgNjUwODAsIDY1MDg0LCA2NTA4OCwgNjUwOTIsIDY1MDk3LCA2NTEwMSwgNjUxMDYsIAorICAgIDY1MTExLCA2NTExNiwgNjUxMjEsIDY1MTI2LCA2NTEzMSwgNjUxMzYsIDY1MTQxLCA2NTE0NiwgNjUxNTEsIDY1MTU2LCAKKyAgICA2NTE2MSwgNjUxNjYsIDY1MTcxLCA2NTE3NiwgNjUxODEsIDY1MTg2LCA2NTE5MSwgNjUxOTYsIDY1MjAxLCA2NTIwNiwgCisgICAgNjUyMTEsIDY1MjE2LCA2NTIyMSwgNjUyMjYsIDY1MjMxLCA2NTIzNiwgNjUyNDEsIDY1MjQ2LCA2NTI1MSwgNjUyNTYsIAorICAgIDY1MjYxLCA2NTI2NiwgNjUyNzEsIDY1Mjc2LCA2NTI4MSwgNjUyODYsIDY1MjkxLCA2NTI5NiwgNjUzMDEsIDY1MzA2LCAKKyAgICA2NTMxMSwgNjUzMTcsIDY1MzIyLCA2NTMyOCwgNjUzMzIsIDY1MzM3LCA2NTM0MiwgNjUzNDcsIDY1MzUyLCA2NTM1NywgCisgICAgNjUzNjIsIDY1MzY4LCA2NTM3MywgNjUzNzksIDY1MzgzLCA2NTM5MCwgNjUzOTcsIDY1NDA0LCA2NTQxMSwgNjU0MTgsIAorICAgIDY1NDI1LCA2NTQzMiwgNjU0MzksIDY1NDQ2LCA2NTQ1MywgNjU0NjAsIDY1NDY3LCA2NTQ3MCwgNjU0NzMsIDY1NDc2LCAKKyAgICA2NTQ4MSwgNjU0ODQsIDY1NDg3LCA2NTQ5MCwgNjU0OTMsIDY1NDk2LCA2NTQ5OSwgNjU1MDMsIDY1NTA3LCA2NTUxMSwgCisgICAgNjU1MTUsIDY1NTE5LCA2NTUyMywgNjU1MjcsIDY1NTMxLCA2NTUzNSwgNjU1MzksIDY1NTQzLCA2NTU0NywgNjU1NTEsIAorICAgIDY1NTU0LCA2NTU1NywgNjU1NjEsIDY1NTY1LCA2NTU2OSwgNjU1NzMsIDY1NTc2LCA2NTU4MCwgNjU1ODQsIDY1NTg4LCAKKyAgICA2NTU5MiwgNjU1OTUsIDY1NTk5LCA2NTYwMywgNjU2MDcsIDY1NjExLCA2NTYxNCwgNjU2MTgsIDY1NjIyLCA2NTYyNiwgCisgICAgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCA2NTY1MCwgNjU2NTQsIDAsIDY1NjU4LCA2NTY2MSwgNjU2NjQsIAorICAgIDY1NjY3LCA2NTY3MCwgNjU2NzMsIDY1Njc2LCA2NTY3OSwgNjU2ODIsIDY1Njg1LCA2NTY4OCwgNjU2OTEsIDY1Njk0LCAKKyAgICA2NTY5NywgNjU3MDAsIDY1NzAzLCA2NTcwNiwgNjU3MDksIDY1NzEyLCA2NTcxNSwgNjU3MTgsIDY1NzIxLCA2NTcyNCwgCisgICAgNjU3MjcsIDY1NzMwLCA2NTczMywgNjU3MzYsIDY1NzM5LCA2NTc0MiwgNjU3NDUsIDY1NzQ4LCA2NTc1MSwgNjU3NTQsIAorICAgIDY1NzU3LCA2NTc2MCwgNjU3NjMsIDY1NzY2LCA2NTc2OSwgNjU3NzIsIDY1Nzc1LCA2NTc3OCwgNjU3ODEsIDY1Nzg0LCAKKyAgICA2NTc4NywgNjU3OTAsIDY1NzkzLCA2NTc5NiwgNjU3OTksIDY1ODAyLCA2NTgwNSwgNjU4MDgsIDY1ODExLCA2NTgxNCwgCisgICAgNjU4MTcsIDY1ODIwLCA2NTgyMywgNjU4MjYsIDY1ODI5LCA2NTgzMiwgNjU4MzUsIDY1ODM4LCA2NTg0MSwgNjU4NDQsIAorICAgIDY1ODQ3LCA2NTg1MCwgNjU4NTMsIDY1ODU2LCA2NTg1OSwgNjU4NjIsIDY1ODY1LCA2NTg2OCwgNjU4NzEsIDY1ODc0LCAKKyAgICA2NTg3NywgNjU4ODAsIDY1ODgzLCA2NTg4NiwgNjU4ODksIDY1ODkyLCA2NTg5NSwgNjU4OTgsIDY1OTAxLCA2NTkwNCwgCisgICAgNjU5MDcsIDY1OTEwLCA2NTkxMywgNjU5MTYsIDY1OTE5LCA2NTkyMiwgNjU5MzEsIDY1OTM5LCA2NTk0NywgNjU5NTUsIAorICAgIDY1OTYzLCA2NTk3MSwgNjU5NzksIDY1OTg4LCA2NTk5NiwgNjYwMDUsIDY2MDE0LCA2NjAyMywgNjYwMzIsIDY2MDQxLCAKKyAgICA2NjA1MCwgNjYwNTksIDY2MDY4LCA2NjA3NywgNjYwODYsIDY2MDk1LCA2NjEwNCwgNjYxMTMsIDY2MTIyLCA2NjEzMSwgCisgICAgNjYxNDAsIDY2MTQzLCA2NjE0NiwgNjYxNDksIDY2MTUxLCA2NjE1NCwgNjYxNTcsIDY2MTYwLCA2NjE2NSwgNjYxNzAsIAorICAgIDY2MTczLCA2NjE4MCwgNjYxODcsIDY2MTk0LCA2NjIwMSwgNjYyMDQsIDY2MjA5LCA2NjIxMSwgNjYyMTUsIDY2MjE3LCAKKyAgICA2NjIxOSwgNjYyMjIsIDY2MjI1LCA2NjIyOCwgNjYyMzEsIDY2MjM0LCA2NjIzNywgNjYyNDAsIDY2MjQ1LCA2NjI1MCwgCisgICAgNjYyNTMsIDY2MjU2LCA2NjI1OSwgNjYyNjIsIDY2MjY1LCA2NjI2OCwgNjYyNzEsIDY2Mjc1LCA2NjI3OCwgNjYyODEsIAorICAgIDY2Mjg0LCA2NjI4NywgNjYyOTAsIDY2Mjk1LCA2NjI5OCwgNjYzMDEsIDY2MzA0LCA2NjMwOSwgNjYzMTQsIDY2MzE5LCAKKyAgICA2NjMyNCwgNjYzMjksIDY2MzM0LCA2NjMzOSwgNjYzNDQsIDY2MzUwLCA2NjM1OCwgNjYzNjAsIDY2MzYzLCA2NjM2NiwgCisgICAgNjYzNjksIDY2MzcyLCA2NjM3OCwgNjYzODYsIDY2Mzg5LCA2NjM5MiwgNjYzOTcsIDY2NDAwLCA2NjQwMywgNjY0MDYsIAorICAgIDY2NDExLCA2NjQxNCwgNjY0MTcsIDY2NDIyLCA2NjQyNSwgNjY0MjgsIDY2NDMzLCA2NjQzNiwgNjY0MzksIDY2NDQ0LCAKKyAgICA2NjQ0OSwgNjY0NTQsIDY2NDU3LCA2NjQ2MCwgNjY0NjMsIDY2NDY2LCA2NjQ3MiwgNjY0NzUsIDY2NDc4LCA2NjQ4MSwgCisgICAgNjY0ODMsIDY2NDg2LCA2NjQ4OSwgNjY0OTIsIDY2NDk3LCA2NjUwMCwgNjY1MDMsIDY2NTA2LCA2NjUwOSwgNjY1MTIsIAorICAgIDY2NTE3LCA2NjUyMCwgNjY1MjMsIDY2NTI2LCA2NjUyOSwgNjY1MzIsIDY2NTM1LCA2NjUzOCwgNjY1NDEsIDY2NTQ0LCAKKyAgICA2NjU1MCwgNjY1NTUsIDY2NTYzLCA2NjU3MSwgNjY1NzksIDY2NTg3LCA2NjU5NSwgNjY2MDMsIDY2NjEyLCA2NjYyMCwgCisgICAgNjY2MjksIDY2NjM4LCA2NjY0NywgNjY2NTYsIDY2NjY1LCA2NjY3NCwgNjY2ODMsIDY2NjkyLCA2NjcwMSwgNjY3MTAsIAorICAgIDY2NzE5LCA2NjcyOCwgNjY3MzcsIDY2NzQ2LCA2Njc1NSwgNjY3NjQsIDY2NzczLCA2Njc4MiwgNjY3OTEsIDY2ODAwLCAKKyAgICA2NjgwOSwgNjY4MTgsIDY2ODI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE3OTk0LDMwNSArMTkxMTMsMzA1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjYwODgsIDY2MDk3LCA2NjEwNiwgNjYxMTcsIDY2MTI0LCA2NjEyOSwgNjYxMzQsIDY2MTQxLCA2NjE0OCwgNjYxNTQsIAotICAgIDY2MTU5LCA2NjE2NCwgNjYxNjksIDY2MTc0LCA2NjE4MSwgNjYxODYsIDY2MTkxLCA2NjE5NiwgNjYyMDcsIDY2MjEyLCAKLSAgICA2NjIxNywgNjYyMjQsIDY2MjI5LCA2NjIzNiwgNjYyNDEsIDY2MjQ2LCA2NjI1MywgNjYyNjAsIDY2MjY3LCA2NjI3NiwgCi0gICAgNjYyODUsIDY2MjkwLCA2NjI5NSwgNjYzMDAsIDY2MzA3LCA2NjMxMiwgNjYzMjIsIDY2MzI5LCA2NjMzNCwgNjYzMzksIAotICAgIDY2MzQ0LCA2NjM0OSwgNjYzNTQsIDY2MzU5LCA2NjM2OCwgNjYzNzUsIDY2MzgyLCA2NjM4NywgNjYzOTQsIDY2Mzk5LCAKLSAgICA2NjQwNiwgNjY0MTUsIDY2NDI2LCA2NjQzMSwgNjY0NDAsIDY2NDQ1LCA2NjQ1MiwgNjY0NjEsIDY2NDcwLCA2NjQ3NSwgCi0gICAgNjY0ODAsIDY2NDg3LCA2NjQ5MywgNjY1MDAsIDY2NTA3LCA2NjUxMSwgNjY1MTUsIDY2NTE4LCA2NjUyMiwgNjY1MjYsIAotICAgIDY2NTMwLCA2NjUzNCwgNjY1MzgsIDY2NTQyLCA2NjU0NiwgNjY1NDksIDY2NTUzLCA2NjU1NywgNjY1NjEsIDY2NTY1LCAKLSAgICA2NjU2OSwgNjY1NzMsIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg3LCA2NjU5MSwgNjY1OTUsIDY2NTk5LCA2NjYwMywgCi0gICAgNjY2MDcsIDY2NjExLCA2NjYxNSwgNjY2MTksIDY2NjIzLCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIAotICAgIDY2NjQ3LCA2NjY1MSwgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCAKLSAgICA2NjY4NywgNjY2OTEsIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgCi0gICAgNjY3MjcsIDY2NzMxLCA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIAotICAgIDY2NzY2LCA2Njc3MCwgNjY3NzQsIDY2Nzc4LCA2Njc4MiwgNjY3ODYsIDY2NzkwLCA2Njc5NCwgNjY3OTgsIDY2ODAyLCAKLSAgICA2NjgwNiwgNjY4MTAsIDY2ODE0LCA2NjgxOCwgNjY4MjIsIDY2ODI2LCA2NjgzMCwgNjY4MzQsIDY2ODM4LCA2Njg0MiwgCi0gICAgNjY4NDYsIDY2ODUwLCA2Njg1NCwgNjY4NTgsIDY2ODYyLCA2Njg2NiwgNjY4NzAsIDY2ODc0LCA2Njg3OCwgNjY4ODIsIAotICAgIDY2ODg2LCA2Njg5MCwgNjY4OTQsIDY2ODk4LCA2NjkwMiwgNjY5MDYsIDY2OTEwLCA2NjkxNCwgNjY5MTgsIDY2OTIyLCAKLSAgICA2NjkyNiwgNjY5MzAsIDY2OTM0LCA2NjkzOCwgNjY5NDIsIDY2OTQ2LCA2Njk1MCwgNjY5NTQsIDY2OTU4LCA2Njk2MiwgCi0gICAgNjY5NjYsIDY2OTcwLCA2Njk3NCwgNjY5NzgsIDY2OTgyLCA2Njk4NiwgNjY5OTAsIDY2OTk0LCA2Njk5OCwgNjcwMDIsIAotICAgIDY3MDA2LCA2NzAxMCwgNjcwMTQsIDY3MDE4LCA2NzAyMiwgNjcwMjYsIDY3MDMwLCA2NzAzNCwgNjcwMzgsIDY3MDQyLCAKLSAgICA2NzA0NiwgNjcwNTAsIDY3MDU0LCA2NzA1OCwgNjcwNjIsIDY3MDY2LCA2NzA3MCwgNjcwNzQsIDY3MDc4LCA2NzA4MiwgCi0gICAgNjcwODYsIDY3MDkwLCA2NzA5NCwgNjcwOTgsIDY3MTAyLCA2NzEwNiwgNjcxMTAsIDY3MTE0LCA2NzExOCwgNjcxMjIsIAotICAgIDY3MTI2LCA2NzEzMCwgNjcxMzQsIDY3MTM4LCA2NzE0MiwgNjcxNDYsIDY3MTUwLCA2NzE1NCwgNjcxNTgsIDY3MTYyLCAKLSAgICA2NzE2NiwgNjcxNzAsIDY3MTc0LCA2NzE3OCwgNjcxODIsIDY3MTg2LCA2NzE5MCwgNjcxOTQsIDY3MTk4LCA2NzIwMiwgCi0gICAgNjcyMDYsIDY3MjEwLCA2NzIxNCwgNjcyMTgsIDY3MjIyLCA2NzIyNiwgNjcyMzAsIDY3MjM0LCA2NzIzNywgNjcyNDEsIAotICAgIDY3MjQ1LCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCAKLSAgICA2NzI4NSwgNjcyODksIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgCi0gICAgNjczMjUsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIAotICAgIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCAKLSAgICA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgCi0gICAgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIAotICAgIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCAKLSAgICA2NzUyNSwgNjc1MjksIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgCi0gICAgNjc1NjUsIDY3NTY5LCA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIAotICAgIDY3NjA1LCA2NzYwOSwgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCAKLSAgICA2NzY0NSwgNjc2NDksIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgCi0gICAgNjc2ODUsIDY3Njg5LCA2NzY5MywgNjc2OTcsIDY3NzAwLCA2NzcwNCwgNjc3MDgsIDY3NzEyLCA2NzcxNiwgNjc3MjAsIAotICAgIDY3NzI0LCA2NzcyOCwgNjc3MzIsIDY3NzM2LCA2Nzc0MCwgNjc3NDQsIDY3NzQ4LCA2Nzc1MiwgNjc3NTYsIDY3NzYwLCAKLSAgICA2Nzc2NCwgNjc3NjgsIDY3NzcyLCA2Nzc3NiwgNjc3ODAsIDY3Nzg0LCA2Nzc4OCwgNjc3OTIsIDY3Nzk2LCA2NzgwMCwgCi0gICAgNjc4MDQsIDY3ODA4LCA2NzgxMiwgNjc4MTYsIDY3ODIwLCA2NzgyNCwgNjc4MjgsIDY3ODMyLCA2NzgzNiwgNjc4NDAsIAotICAgIDY3ODQ0LCA2Nzg0OCwgNjc4NTIsIDY3ODU2LCA2Nzg2MCwgNjc4NjQsIDY3ODY4LCA2Nzg3MiwgNjc4NzYsIDY3ODgwLCAKLSAgICA2Nzg4NCwgNjc4ODgsIDY3ODkyLCA2Nzg5NiwgNjc5MDAsIDY3OTA0LCA2NzkwOCwgNjc5MTIsIDY3OTE2LCA2NzkyMCwgCi0gICAgNjc5MjQsIDY3OTI4LCA2NzkzMiwgNjc5MzYsIDY3OTQwLCA2Nzk0NCwgNjc5NDgsIDY3OTUyLCA2Nzk1NiwgNjc5NjAsIAotICAgIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk4MCwgNjc5ODQsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCAKLSAgICA2ODAwNCwgNjgwMDgsIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgCi0gICAgNjgwNDQsIDY4MDQ4LCA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIAotICAgIDY4MDg0LCA2ODA4OCwgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCAKLSAgICA2ODEyNCwgNjgxMjgsIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgCi0gICAgNjgxNjQsIDY4MTY4LCA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIAotICAgIDY4MjA0LCA2ODIwOCwgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCAKLSAgICA2ODI0NCwgNjgyNDgsIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgCi0gICAgNjgyODQsIDY4Mjg4LCA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIAotICAgIDY4MzI0LCA2ODMyOCwgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCAKLSAgICA2ODM2NCwgNjgzNjgsIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgCi0gICAgNjg0MDQsIDY4NDA4LCA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIAotICAgIDY4NDQ0LCA2ODQ0OCwgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCAKLSAgICA2ODQ4NCwgNjg0ODgsIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgCi0gICAgNjg1MjQsIDY4NTI4LCA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NSwgNjg1NTksIAotICAgIDY4NTYzLCA2ODU2NywgNjg1NzEsIDY4NTc1LCA2ODU3OSwgNjg1ODMsIDY4NTg3LCA2ODU5MSwgNjg1OTUsIDY4NTk5LCAKLSAgICA2ODYwMywgNjg2MDcsIDY4NjExLCA2ODYxNSwgNjg2MTksIDY4NjIzLCA2ODYyNywgNjg2MzEsIDY4NjM1LCA2ODYzOSwgCi0gICAgNjg2NDMsIDY4NjQ3LCA2ODY1MSwgNjg2NTUsIDY4NjU5LCA2ODY2MywgNjg2NjcsIDY4NjcxLCA2ODY3NSwgNjg2NzksIAotICAgIDY4NjgzLCA2ODY4NywgNjg2OTEsIDY4Njk1LCA2ODY5OSwgNjg3MDMsIDY4NzA3LCA2ODcxMSwgNjg3MTUsIDY4NzE5LCAKLSAgICA2ODcyMywgNjg3MjcsIDY4NzMxLCA2ODczNSwgNjg3MzksIDY4NzQzLCA2ODc0NywgNjg3NTEsIDY4NzU1LCA2ODc1OSwgCi0gICAgNjg3NjMsIDY4NzY3LCA2ODc3MSwgNjg3NzUsIDY4Nzc5LCA2ODc4MywgNjg3ODcsIDY4NzkxLCA2ODc5NSwgNjg3OTksIAotICAgIDY4ODAzLCA2ODgwNywgNjg4MTEsIDY4ODE1LCA2ODgxOSwgNjg4MjMsIDY4ODI3LCA2ODgzMSwgNjg4MzUsIDY4ODM5LCAKLSAgICA2ODg0MywgNjg4NDcsIDY4ODUxLCA2ODg1NSwgNjg4NTksIDY4ODYzLCA2ODg2NywgNjg4NzEsIDY4ODc1LCA2ODg3OSwgCi0gICAgNjg4ODMsIDY4ODg3LCA2ODg5MSwgNjg4OTUsIDY4ODk5LCA2ODkwMywgNjg5MDcsIDY4OTExLCA2ODkxNSwgNjg5MTksIAotICAgIDY4OTIzLCA2ODkyNywgNjg5MzEsIDY4OTM1LCA2ODkzOSwgNjg5NDMsIDY4OTQ3LCA2ODk1MSwgNjg5NTUsIDY4OTU5LCAKLSAgICA2ODk2MywgNjg5NjcsIDY4OTcxLCA2ODk3NSwgNjg5NzksIDY4OTgzLCA2ODk4NywgNjg5OTEsIDY4OTk1LCA2ODk5OSwgCi0gICAgNjkwMDMsIDY5MDA3LCA2OTAxMCwgNjkwMTQsIDY5MDE4LCA2OTAyMiwgNjkwMjYsIDY5MDMwLCA2OTAzNCwgNjkwMzgsIAotICAgIDY5MDQyLCA2OTA0NiwgNjkwNTAsIDY5MDU0LCA2OTA1OCwgNjkwNjIsIDY5MDY2LCA2OTA3MCwgNjkwNzQsIDY5MDc4LCAKLSAgICA2OTA4MiwgNjkwODYsIDY5MDkwLCA2OTA5NCwgNjkwOTgsIDY5MTAyLCA2OTEwNiwgNjkxMTAsIDY5MTE0LCA2OTExOCwgCi0gICAgNjkxMjIsIDY5MTI2LCA2OTEzMCwgNjkxMzQsIDY5MTM4LCA2OTE0MiwgNjkxNDYsIDY5MTUwLCA2OTE1NCwgNjkxNTgsIAotICAgIDY5MTYyLCA2OTE2NiwgNjkxNzAsIDY5MTc0LCA2OTE3OCwgNjkxODIsIDY5MTg2LCA2OTE5MCwgNjkxOTQsIDY5MTk4LCAKLSAgICA2OTIwMiwgNjkyMDYsIDY5MjEwLCA2OTIxNCwgNjkyMTgsIDY5MjIyLCA2OTIyNiwgNjkyMzAsIDY5MjM0LCA2OTIzOCwgCi0gICAgNjkyNDIsIDY5MjQ2LCA2OTI1MCwgNjkyNTQsIDY5MjU4LCA2OTI2MiwgNjkyNjYsIDY5MjcwLCA2OTI3NCwgNjkyNzgsIAotICAgIDY5MjgyLCA2OTI4NiwgNjkyOTAsIDY5Mjk0LCA2OTI5OCwgNjkzMDIsIDY5MzA2LCA2OTMxMCwgNjkzMTQsIDY5MzE4LCAKLSAgICA2OTMyMiwgNjkzMjYsIDY5MzMwLCA2OTMzNCwgNjkzMzgsIDY5MzQyLCA2OTM0NiwgNjkzNTAsIDY5MzU0LCA2OTM1OCwgCi0gICAgNjkzNjIsIDY5MzY2LCA2OTM3MCwgNjkzNzQsIDY5Mzc4LCA2OTM4MiwgNjkzODYsIDY5MzkwLCA2OTM5NCwgNjkzOTgsIAotICAgIDY5NDAyLCA2OTQwNiwgNjk0MTAsIDY5NDE0LCA2OTQxOCwgNjk0MjIsIDY5NDI2LCA2OTQzMCwgNjk0MzQsIDY5NDM4LCAKLSAgICA2OTQ0MiwgNjk0NDYsIDY5NDUwLCA2OTQ1NCwgNjk0NTgsIDY5NDYyLCA2OTQ2NiwgNjk0NzAsIDY5NDc0LCA2OTQ3OCwgCi0gICAgNjk0ODIsIDY5NDg2LCA2OTQ5MCwgNjk0OTQsIDY5NDk4LCA2OTUwMiwgNjk1MDYsIDY5NTEwLCA2OTUxNCwgNjk1MTgsIAotICAgIDY5NTIyLCA2OTUyNiwgNjk1MzAsIDY5NTM0LCA2OTUzOCwgNjk1NDIsIDY5NTQ2LCA2OTU1MCwgNjk1NTQsIDY5NTU4LCAKLSAgICA2OTU2MiwgNjk1NjYsIDY5NTcwLCA2OTU3NCwgNjk1NzgsIDY5NTgyLCA2OTU4NiwgNjk1OTAsIDY5NTk0LCA2OTU5OCwgCi0gICAgNjk2MDIsIDY5NjA2LCA2OTYxMCwgNjk2MTMsIDY5NjE3LCA2OTYyMSwgNjk2MjUsIDY5NjI5LCA2OTYzMywgNjk2MzcsIAotICAgIDY5NjQxLCA2OTY0NSwgNjk2NDksIDY5NjUzLCA2OTY1NywgNjk2NjEsIDY5NjY1LCA2OTY2OSwgNjk2NzMsIDY5Njc3LCAKLSAgICA2OTY4MSwgNjk2ODUsIDY5Njg5LCA2OTY5MywgNjk2OTcsIDY5NzAxLCA2OTcwNSwgNjk3MDksIDY5NzEzLCA2OTcxNywgCi0gICAgNjk3MjEsIDY5NzI1LCA2OTcyOSwgNjk3MzMsIDY5NzM3LCA2OTc0MSwgNjk3NDUsIDY5NzQ5LCA2OTc1MywgNjk3NTcsIAotICAgIDY5NzYxLCA2OTc2NSwgNjk3NjksIDY5NzczLCA2OTc3NywgNjk3ODEsIDY5Nzg1LCA2OTc4OSwgNjk3OTMsIDY5Nzk3LCAKLSAgICA2OTgwMSwgNjk4MDUsIDY5ODA5LCA2OTgxMywgNjk4MTcsIDY5ODIxLCA2OTgyNSwgNjk4MjksIDY5ODMzLCA2OTgzNywgCi0gICAgNjk4NDEsIDY5ODQ1LCA2OTg0OSwgNjk4NTMsIDY5ODU3LCA2OTg2MSwgNjk4NjUsIDY5ODY5LCA2OTg3MywgNjk4NzcsIAotICAgIDY5ODgxLCA2OTg4NSwgNjk4ODksIDY5ODkzLCA2OTg5NywgNjk5MDEsIDY5OTA1LCA2OTkwOSwgNjk5MTMsIDY5OTE3LCAKLSAgICA2OTkyMSwgNjk5MjUsIDY5OTI5LCA2OTkzMywgNjk5MzcsIDY5OTQxLCA2OTk0NSwgNjk5NDksIDY5OTUzLCA2OTk1NywgCi0gICAgNjk5NjEsIDY5OTY1LCA2OTk2OSwgNjk5NzMsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIDY5OTg5LCA2OTk5MywgNjk5OTcsIAotICAgIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNywgNzAwMjEsIDcwMDI1LCA3MDAyOSwgNzAwMzMsIDcwMDM3LCAKLSAgICA3MDA0MSwgNzAwNDUsIDcwMDQ5LCA3MDA1MywgNzAwNTcsIDcwMDYxLCA3MDA2NSwgNzAwNjksIDcwMDczLCA3MDA3NywgCi0gICAgNzAwODEsIDcwMDg1LCA3MDA4OSwgNzAwOTMsIDcwMDk3LCA3MDEwMSwgNzAxMDUsIDcwMTA5LCA3MDExMywgNzAxMTcsIAotICAgIDcwMTIxLCA3MDEyNSwgNzAxMjksIDcwMTMzLCA3MDEzNywgNzAxNDEsIDcwMTQ1LCA3MDE0OSwgNzAxNTMsIDcwMTU3LCAKLSAgICA3MDE2MSwgNzAxNjUsIDcwMTY5LCA3MDE3MywgNzAxNzcsIDcwMTgxLCA3MDE4NSwgNzAxODksIDcwMTkzLCA3MDE5NywgCi0gICAgNzAyMDEsIDcwMjA1LCA3MDIwOSwgNzAyMTMsIDcwMjE3LCA3MDIyMSwgNzAyMjUsIDcwMjI5LCA3MDIzMywgNzAyMzcsIAotICAgIDcwMjQxLCA3MDI0NSwgNzAyNDksIDcwMjUzLCA3MDI1NywgNzAyNjEsIDcwMjY1LCA3MDI2OSwgNzAyNzMsIDcwMjc3LCAKLSAgICA3MDI4MSwgNzAyODUsIDcwMjg5LCA3MDI5MywgNzAyOTcsIDcwMzAxLCA3MDMwNSwgNzAzMDksIDcwMzEzLCA3MDMxNywgCi0gICAgNzAzMjEsIDcwMzI1LCA3MDMyOSwgNzAzMzMsIDcwMzM3LCA3MDM0MSwgNzAzNDUsIDcwMzQ5LCA3MDM1MywgNzAzNTcsIAotICAgIDcwMzYxLCA3MDM2NSwgNzAzNjksIDcwMzczLCA3MDM3NywgNzAzODEsIDcwMzg1LCA3MDM4OSwgNzAzOTMsIDcwMzk3LCAKLSAgICA3MDQwMSwgNzA0MDUsIDcwNDA5LCA3MDQxMywgNzA0MTcsIDcwNDIxLCA3MDQyNSwgNzA0MjksIDcwNDMzLCA3MDQzNywgCi0gICAgNzA0NDEsIDcwNDQ1LCA3MDQ0OSwgNzA0NTMsIDcwNDU3LCA3MDQ2MSwgNzA0NjUsIDcwNDY5LCA3MDQ3MywgNzA0NzcsIAotICAgIDcwNDgxLCA3MDQ4NSwgNzA0ODksIDcwNDkzLCA3MDQ5NywgNzA1MDEsIDcwNTA1LCA3MDUwOSwgNzA1MTMsIDcwNTE3LCAKLSAgICA3MDUyMSwgNzA1MjUsIDcwNTI5LCA3MDUzMywgNzA1MzcsIDcwNTQxLCA3MDU0NSwgNzA1NDksIDcwNTUzLCA3MDU1NywgCi0gICAgNzA1NjEsIDcwNTY1LCA3MDU2OSwgNzA1NzMsIDcwNTc3LCA3MDU4MSwgNzA1ODUsIDcwNTg5LCA3MDU5MywgNzA1OTcsIAotICAgIDcwNjAxLCA3MDYwNSwgNzA2MDksIDcwNjEzLCA3MDYxNywgNzA2MjEsIDcwNjI1LCA3MDYyOSwgNzA2MzMsIDcwNjM3LCAKLSAgICA3MDY0MSwgNzA2NDUsIDcwNjQ5LCA3MDY1MywgNzA2NTcsIDcwNjYxLCA3MDY2NSwgNzA2NjksIDcwNjczLCA3MDY3NywgCi0gICAgNzA2ODEsIDcwNjg1LCA3MDY4OSwgNzA2OTMsIDcwNjk3LCA3MDcwMSwgNzA3MDUsIDcwNzA5LCA3MDcxMywgNzA3MTcsIAotICAgIDcwNzIxLCA3MDcyNSwgNzA3MjksIDcwNzMzLCA3MDczNywgNzA3NDEsIDcwNzQ1LCA3MDc0OSwgNzA3NTMsIDcwNzU3LCAKLSAgICA3MDc2MSwgNzA3NjUsIDcwNzY5LCA3MDc3MywgNzA3NzcsIDcwNzgxLCA3MDc4NSwgNzA3ODksIDcwNzkzLCA3MDc5NywgCi0gICAgNzA4MDEsIDcwODA1LCA3MDgwOSwgNzA4MTMsIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgNzA4MzcsIAotICAgIDcwODQxLCA3MDg0NSwgNzA4NDksIDcwODUzLCA3MDg1NywgNzA4NjEsIDcwODY1LCA3MDg2OSwgNzA4NzMsIDcwODc3LCAKLSAgICA3MDg4MSwgNzA4ODUsIDcwODg5LCA3MDg5MywgNzA4OTcsIDcwOTAxLCA3MDkwNSwgNzA5MDksIDcwOTEzLCA3MDkxNywgCi0gICAgNzA5MjEsIDcwOTI1LCA3MDkyOSwgNzA5MzMsIDcwOTM3LCA3MDk0MSwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIAotICAgIDcwOTYxLCA3MDk2NSwgNzA5NjksIDcwOTczLCA3MDk3NywgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTMsIDcwOTk3LCAKLSAgICA3MTAwMSwgNzEwMDUsIDcxMDA5LCA3MTAxMywgNzEwMTcsIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCA3MTAzNywgCi0gICAgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIAotICAgIDcxMDgxLCA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NywgNzExMDEsIDcxMTA1LCA3MTEwOSwgNzExMTMsIDcxMTE3LCAKLSAgICA3MTEyMSwgNzExMjUsIDcxMTI5LCA3MTEzMywgNzExMzcsIDcxMTQxLCA3MTE0NSwgNzExNDksIDcxMTUzLCAwLCAwLCAwLCAKLSAgICA3MTE1NywgNzExNjEsIDcxMTY1LCA3MTE2OSwgNzExNzMsIDcxMTc3LCA3MTE4MSwgNzExODUsIDcxMTg5LCA3MTE5MywgCi0gICAgNzExOTcsIDcxMjAxLCA3MTIwNSwgNzEyMDksIDcxMjEzLCA3MTIxNywgNzEyMjEsIDcxMjI1LCA3MTIyOSwgNzEyMzMsIAotICAgIDcxMjM3LCA3MTI0MSwgNzEyNDUsIDcxMjQ5LCA3MTI1MywgNzEyNTcsIDcxMjYxLCA3MTI2NSwgNzEyNjksIDcxMjczLCAKLSAgICA3MTI3NywgNzEyODEsIDcxMjg1LCA3MTI4OSwgNzEyOTMsIDcxMjk3LCA3MTMwMSwgNzEzMDUsIDcxMzA5LCA3MTMxMywgCi0gICAgNzEzMTcsIDcxMzIxLCA3MTMyNSwgNzEzMjksIDcxMzMzLCA3MTMzNywgNzEzNDEsIDcxMzQ1LCA3MTM0OSwgNzEzNTMsIAotICAgIDcxMzU3LCA3MTM2MSwgNzEzNjUsIDcxMzY5LCA3MTM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzEzNzcsIAotICAgIDcxMzgyLCA3MTM4NiwgNzEzOTEsIDcxMzk2LCA3MTQwMSwgNzE0MDYsIDcxNDExLCA3MTQxNSwgNzE0MjAsIDcxNDI1LCAKLSAgICA3MTQzMCwgNzE0MzUsIDcxNDQwLCA3MTQ0NSwgNzE0NTAsIDcxNDU0LCA3MTQ1OSwgNzE0NjQsIDcxNDY5LCA3MTQ3NCwgCi0gICAgNzE0NzksIDcxNDg0LCA3MTQ4OCwgNzE0OTMsIDcxNDk4LCA3MTUwMywgNzE1MDgsIDcxNTEzLCA3MTUxNywgNzE1MjIsIAotICAgIDcxNTI2LCA3MTUzMSwgNzE1MzUsIDcxNTQwLCA3MTU0NCwgNzE1NDgsIDcxNTUyLCA3MTU1NywgNzE1NjIsIDcxNTY3LCAKLSAgICA3MTU3NSwgNzE1ODMsIDcxNTkxLCA3MTU5OSwgNzE2MDcsIDcxNjE1LCA3MTYyMSwgNzE2MjksIDcxNjMzLCA3MTYzNywgCi0gICAgNzE2NDEsIDcxNjQ1LCA3MTY0OSwgNzE2NTMsIDcxNjU3LCA3MTY2MSwgNzE2NjUsIDcxNjY5LCA3MTY3MywgNzE2NzcsIAotICAgIDcxNjgxLCA3MTY4NSwgNzE2ODksIDcxNjkzLCA3MTY5NywgNzE3MDEsIDcxNzA1LCA3MTcwOSwgNzE3MTMsIDcxNzE3LCAKLSAgICA3MTcyMSwgNzE3MjUsIDcxNzI5LCA3MTczMywgNzE3MzcsIDcxNzQxLCA3MTc0NSwgNzE3NDksIDcxNzUzLCA3MTc1NywgCi0gICAgNzE3NjEsIDcxNzY1LCA3MTc2OSwgNzE3NzMsIDcxNzc2LCA3MTc4MCwgNzE3ODQsIDcxNzg4LCA3MTc5MiwgNzE3OTYsIAotICAgIDcxODAwLCA3MTgwNCwgNzE4MDgsIDcxODEyLCA3MTgxNiwgNzE4MjAsIDcxODI0LCA3MTgyOCwgNzE4MzIsIDcxODM2LCAKLSAgICA3MTg0MCwgNzE4NDQsIDcxODQ4LCA3MTg1MiwgNzE4NTYsIDcxODYwLCA3MTg2NCwgNzE4NjgsIDcxODcyLCA3MTg3NiwgCi0gICAgNzE4ODAsIDcxODg0LCA3MTg4OCwgNzE4OTIsIDcxODk2LCA3MTkwMCwgNzE5MDQsIDcxOTA4LCA3MTkxMiwgNzE5MTYsIAotICAgIDcxOTIwLCA3MTkyMywgNzE5MjcsIDcxOTMxLCA3MTkzNCwgNzE5MzgsIDcxOTQyLCA3MTk0NiwgNzE5NDksIDcxOTUzLCAKLSAgICA3MTk1NywgNzE5NjEsIDcxOTY1LCA3MTk2OSwgNzE5NzMsIDcxOTc3LCA3MTk4MSwgNzE5ODUsIDcxOTg5LCA3MTk5MywgCi0gICAgNzE5OTcsIDcyMDAxLCA3MjAwNSwgNzIwMDksIDcyMDEzLCA3MjAxNywgNzIwMjEsIDcyMDI1LCA3MjAyOSwgNzIwMzMsIAotICAgIDcyMDM3LCA3MjA0MSwgNzIwNDUsIDcyMDQ4LCA3MjA1MSwgNzIwNTUsIDcyMDU5LCA3MjA2MywgNzIwNjYsIDcyMDcwLCAKLSAgICA3MjA3NCwgNzIwNzgsIDcyMDgyLCA3MjA4NiwgNzIwOTAsIDcyMDk0LCA3MjA5OCwgNzIxMDIsIDcyMTA2LCA3MjExMCwgCi0gICAgNzIxMTQsIDcyMTE4LCA3MjEyMiwgNzIxMjYsIDcyMTMwLCA3MjEzNCwgNzIxMzgsIDcyMTQyLCA3MjE0NiwgNzIxNTAsIAotICAgIDcyMTU0LCA3MjE1OCwgNzIxNjIsIDcyMTY2LCA3MjE3MCwgNzIxNzQsIDcyMTc4LCA3MjE4MiwgNzIxODYsIDcyMTkwLCAKLSAgICA3MjE5NCwgNzIxOTgsIDcyMjAyLCA3MjIwNiwgNzIyMTAsIDcyMjE0LCA3MjIxOCwgNzIyMjEsIDcyMjI1LCA3MjIyOSwgCi0gICAgNzIyMzMsIDcyMjM3LCA3MjI0MSwgNzIyNDUsIDcyMjQ5LCA3MjI1MywgNzIyNTcsIDcyMjYxLCA3MjI2NSwgNzIyNjksIAotICAgIDcyMjczLCA3MjI3NywgNzIyODEsIDcyMjg1LCA3MjI4OSwgNzIyOTMsIDcyMjk3LCA3MjMwMSwgNzIzMDUsIDcyMzA5LCAKLSAgICA3MjMxMywgNzIzMTcsIDcyMzIxLCA3MjMyNSwgNzIzMjksIDcyMzMzLCA3MjMzNywgNzIzNDEsIDcyMzQ1LCA3MjM0OSwgCi0gICAgNzIzNTMsIDcyMzU3LCA3MjM2MSwgNzIzNjUsIDcyMzY4LCA3MjM3MiwgNzIzNzYsIDcyMzgwLCA3MjM4NCwgNzIzODgsIAotICAgIDcyMzkyLCA3MjM5NiwgNzI0MDAsIDcyNDA0LCA3MjQwOCwgNzI0MTIsIDcyNDE2LCA3MjQyMCwgNzI0MjQsIDcyNDI4LCAKLSAgICA3MjQzMiwgNzI0MzUsIDcyNDM5LCA3MjQ0MywgNzI0NDcsIDcyNDUxLCA3MjQ1NSwgNzI0NTksIDcyNDYzLCA3MjQ2NywgCi0gICAgNzI0NzEsIDcyNDc1LCA3MjQ3OSwgNzI0ODMsIDcyNDg3LCA3MjQ5MSwgNzI0OTUsIDcyNDk5LCA3MjUwMywgNzI1MDcsIAotICAgIDcyNTExLCA3MjUxNSwgNzI1MTksIDcyNTIyLCA3MjUyNiwgNzI1MzAsIDcyNTM0LCA3MjUzOCwgNzI1NDIsIDcyNTQ2LCAKLSAgICA3MjU1MCwgNzI1NTQsIDcyNTU4LCA3MjU2MiwgNzI1NjYsIDcyNTcwLCA3MjU3NCwgNzI1NzgsIDcyNTgyLCA3MjU4NiwgCi0gICAgNzI1OTAsIDcyNTk0LCA3MjU5OCwgNzI2MDIsIDcyNjA2LCA3MjYxMCwgNzI2MTQsIDcyNjE4LCA3MjYyMiwgNzI2MjYsIAotICAgIDcyNjMwLCA3MjYzNCwgNzI2MzgsIDcyNjQyLCA3MjY0NiwgNzI2NTAsIDcyNjU0LCA3MjY1OCwgNzI2NjIsIDcyNjY2LCAKLSAgICA3MjY3MCwgNzI2NzQsIDcyNjc4LCA3MjY4MiwgNzI2ODYsIDcyNjkwLCA3MjY5NCwgNzI2OTcsIDcyNzAyLCA3MjcwNiwgCi0gICAgNzI3MTIsIDcyNzE3LCA3MjcyMywgNzI3MjcsIDcyNzMxLCA3MjczNSwgNzI3MzksIDcyNzQzLCA3Mjc0NywgNzI3NTEsIAotICAgIDcyNzU1LCA3Mjc1OSwgNzI3NjMsIDcyNzY3LCA3Mjc3MSwgNzI3NzUsIDcyNzc5LCA3Mjc4MiwgNzI3ODUsIDcyNzg4LCAKLSAgICA3Mjc5MSwgNzI3OTQsIDcyNzk3LCA3MjgwMSwgNzI4MDQsIDcyODA4LCA3MjgxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4MTksIDcyODI0LCA3MjgyOSwgNzI4MzQsIDcyODM5LCAKLSAgICA3Mjg0NiwgNzI4NTMsIDcyODU4LCA3Mjg2MywgNzI4NjgsIDcyODczLCA3Mjg4MCwgNzI4ODcsIDcyODk0LCA3MjkwMSwgCi0gICAgNzI5MDgsIDcyOTE1LCA3MjkyNSwgNzI5MzUsIDcyOTQyLCA3Mjk0OSwgNzI5NTYsIDcyOTYzLCA3Mjk2OSwgNzI5NzUsIAotICAgIDcyOTg0LCA3Mjk5MywgNzMwMDAsIDczMDA3LCA3MzAxOCwgNzMwMjksIDczMDM0LCA3MzAzOSwgNzMwNDYsIDczMDUzLCAKLSAgICA3MzA2MCwgNzMwNjcsIDczMDc0LCA3MzA4MSwgNzMwODgsIDczMDk1LCA3MzEwMSwgNzMxMDcsIDczMTEzLCA3MzExOSwgCi0gICAgNzMxMjYsIDczMTMzLCA3MzEzOCwgNzMxNDIsIDczMTQ5LCA3MzE1NiwgNzMxNjMsIDczMTY3LCA3MzE3NCwgNzMxNzgsIAotICAgIDczMTgzLCA3MzE4NywgNzMxOTMsIDczMTk4LCA3MzIwNCwgNzMyMDksIDczMjEzLCA3MzIxNywgNzMyMjAsIDczMjIzLCAKLSAgICA3MzIyOCwgNzMyMzMsIDczMjM4LCA3MzI0MywgNzMyNDgsIDczMjUzLCA3MzI1OCwgNzMyNjMsIDczMjY4LCA3MzI3MywgCi0gICAgNzMyODEsIDczMjg5LCA3MzI5NCwgNzMyOTksIDczMzA0LCA3MzMwOSwgNzMzMTQsIDczMzE5LCA3MzMyNCwgNzMzMjksIAotICAgIDczMzM0LCA3MzMzOSwgNzMzNDQsIDczMzQ5LCA3MzM1NCwgNzMzNTksIDczMzY1LCA3MzM3MSwgNzMzNzcsIDczMzgzLCAKLSAgICA3MzM4OCwgNzMzOTQsIDczMzk3LCA3MzQwMCwgNzM0MDMsIDczNDA3LCA3MzQxMSwgNzM0MTUsIDczNDE5LCA3MzQyMiwgCi0gICAgNzM0MjYsIDczNDI5LCA3MzQzMywgNzM0MzYsIDczNDQwLCA3MzQ0NCwgNzM0NDgsIDczNDUyLCA3MzQ1NiwgNzM0NjAsIAotICAgIDczNDY0LCA3MzQ2OCwgNzM0NzIsIDczNDc2LCA3MzQ4MCwgNzM0ODQsIDczNDg4LCA3MzQ5MiwgNzM0OTYsIDczNTAwLCAKLSAgICA3MzUwNCwgNzM1MDgsIDczNTEyLCA3MzUxNiwgNzM1MjAsIDczNTI0LCA3MzUyNywgNzM1MzEsIDczNTM1LCA3MzUzOSwgCi0gICAgNzM1NDMsIDczNTQ3LCA3MzU1MSwgNzM1NTUsIDczNTU5LCA3MzU2MywgNzM1NjcsIDczNTcxLCA3MzU3NSwgNzM1NzksIAotICAgIDczNTgzLCA3MzU4NywgNzM1OTEsIDczNTk1LCA3MzU5OSwgNzM2MDMsIDczNjA3LCA3MzYxMSwgNzM2MTUsIDczNjE5LCAKLSAgICA3MzYyMywgNzM2MjcsIDczNjMxLCA3MzYzNSwgNzM2MzksIDczNjQzLCA3MzY0NywgNzM2NTEsIDczNjU1LCA3MzY1OCwgCi0gICAgNzM2NjIsIDczNjY2LCA3MzY3MCwgNzM2NzQsIDczNjc4LCA3MzY4MiwgNzM2ODYsIDczNjkwLCA3MzY5NCwgNzM2OTgsIAotICAgIDczNzAyLCA3MzcwNiwgNzM3MTEsIDczNzE2LCA3MzcxOSwgNzM3MjQsIDczNzI3LCA3MzczMCwgNzM3MzMsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDczNzM3LCA3Mzc0NiwgNzM3NTUsIDczNzY0LCA3Mzc3MywgNzM3ODIsIDczNzkxLCA3MzgwMCwgCi0gICAgNzM4MDksIDczODE3LCA3MzgyNCwgNzM4MzIsIDczODM5LCA3Mzg0NywgNzM4NTcsIDczODY2LCA3Mzg3NiwgNzM4ODUsIAotICAgIDczODk1LCA3MzkwMywgNzM5MTAsIDczOTE4LCA3MzkyNSwgNzM5MzMsIDczOTM4LCA3Mzk0MywgNzM5NDksIDczOTU4LCAKLSAgICA3Mzk2NCwgNzM5NzAsIDczOTc3LCA3Mzk4NiwgNzM5OTQsIDc0MDAyLCA3NDAxMCwgNzQwMTcsIDc0MDI0LCA3NDAzMSwgCi0gICAgNzQwMzgsIDc0MDQzLCA3NDA0OCwgNzQwNTMsIDc0MDU4LCA3NDA2MywgNzQwNjgsIDc0MDczLCA3NDA3OCwgNzQwODYsIAotICAgIDc0MDk0LCA3NDEwMCwgNzQxMDUsIDc0MTEwLCA3NDExNSwgNzQxMjAsIDc0MTI1LCA3NDEzMCwgNzQxMzUsIDc0MTQwLCAKLSAgICA3NDE0NSwgNzQxNTQsIDc0MTYzLCA3NDE2OCwgNzQxNzMsIDc0MTgzLCA3NDE5MywgNzQyMDAsIDc0MjA3LCA3NDIxNiwgCi0gICAgNzQyMjUsIDc0MjM3LCA3NDI0OSwgNzQyNTUsIDc0MjYxLCA3NDI2OSwgNzQyNzcsIDc0Mjg3LCA3NDI5NywgNzQzMDQsIAotICAgIDc0MzExLCA3NDMxNiwgNzQzMjEsIDc0MzMzLCA3NDM0NSwgNzQzNTMsIDc0MzYxLCA3NDM3MSwgNzQzODEsIDc0MzkzLCAKLSAgICA3NDQwNSwgNzQ0MTQsIDc0NDIzLCA3NDQzMCwgNzQ0MzcsIDc0NDQ0LCA3NDQ1MSwgNzQ0NjAsIDc0NDY5LCA3NDQ3NCwgCi0gICAgNzQ0NzksIDc0NDg2LCA3NDQ5MywgNzQ1MDAsIDc0NTA3LCA3NDUxOSwgNzQ1MzEsIDc0NTM2LCA3NDU0MSwgNzQ1NDYsIAotICAgIDc0NTUxLCA3NDU1NiwgNzQ1NjEsIDc0NTY2LCA3NDU3MSwgNzQ1NzUsIDc0NTgwLCA3NDU4NSwgNzQ1OTAsIDc0NTk1LCAKLSAgICA3NDYwMCwgNzQ2MDYsIDc0NjExLCA3NDYxNiwgNzQ2MjMsIDc0NjMwLCA3NDYzNywgNzQ2NDQsIDc0NjUxLCA3NDY2MCwgCi0gICAgNzQ2NjksIDc0Njc1LCA3NDY4MSwgNzQ2ODcsIDc0NjkzLCA3NDY5OSwgNzQ3MDUsIDc0NzEyLCA3NDcxOSwgNzQ3MjYsIAotICAgIDc0NzMwLCA3NDczNywgNzQ3NDIsIDc0NzQ3LCA3NDc1NCwgNzQ3NjcsIDc0NzczLCA3NDc4MSwgNzQ3ODksIDc0Nzk2LCAKLSAgICA3NDgwMywgNzQ4MTIsIDc0ODIxLCA3NDgyOCwgNzQ4MzUsIDc0ODQyLCA3NDg0OSwgNzQ4NTYsIDc0ODYzLCA3NDg3MCwgCi0gICAgNzQ4NzcsIDc0ODg0LCA3NDg5MSwgNzQ5MDAsIDc0OTA5LCA3NDkxOCwgNzQ5MjcsIDc0OTM2LCA3NDk0NSwgNzQ5NTQsIAotICAgIDc0OTYzLCA3NDk3MiwgNzQ5ODEsIDc0OTg4LCA3NDk5NSwgNzUwMDEsIDAsIDAsIDc1MDA5LCA3NTAxNiwgNzUwMjMsIAotICAgIDc1MDMxLCA3NTAzNiwgNzUwNDEsIDc1MDQ2LCA3NTA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjY4MzAsIDY2ODM5LCA2Njg0OCwgNjY4NTksIDY2ODY2LCA2Njg3MSwgNjY4NzYsIDY2ODgzLCA2Njg5MCwgNjY4OTYsIAorICAgIDY2OTAxLCA2NjkwNiwgNjY5MTEsIDY2OTE2LCA2NjkyMywgNjY5MjgsIDY2OTMzLCA2NjkzOCwgNjY5NDksIDY2OTU0LCAKKyAgICA2Njk1OSwgNjY5NjYsIDY2OTcxLCA2Njk3OCwgNjY5ODMsIDY2OTg4LCA2Njk5NSwgNjcwMDIsIDY3MDA5LCA2NzAxOCwgCisgICAgNjcwMjcsIDY3MDMyLCA2NzAzNywgNjcwNDIsIDY3MDQ5LCA2NzA1NCwgNjcwNjQsIDY3MDcxLCA2NzA3NiwgNjcwODEsIAorICAgIDY3MDg2LCA2NzA5MSwgNjcwOTYsIDY3MTAxLCA2NzExMCwgNjcxMTcsIDY3MTI0LCA2NzEyOSwgNjcxMzYsIDY3MTQxLCAKKyAgICA2NzE0OCwgNjcxNTcsIDY3MTY4LCA2NzE3MywgNjcxODIsIDY3MTg3LCA2NzE5NCwgNjcyMDMsIDY3MjEyLCA2NzIxNywgCisgICAgNjcyMjIsIDY3MjI5LCA2NzIzNSwgNjcyNDIsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYwLCA2NzI2NCwgNjcyNjgsIAorICAgIDY3MjcyLCA2NzI3NiwgNjcyODAsIDY3Mjg0LCA2NzI4OCwgNjcyOTEsIDY3Mjk1LCA2NzI5OSwgNjczMDMsIDY3MzA3LCAKKyAgICA2NzMxMSwgNjczMTUsIDY3MzE4LCA2NzMyMiwgNjczMjYsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgCisgICAgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIAorICAgIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCAKKyAgICA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgCisgICAgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIAorICAgIDY3NTA4LCA2NzUxMiwgNjc1MTYsIDY3NTIwLCA2NzUyNCwgNjc1MjgsIDY3NTMyLCA2NzUzNiwgNjc1NDAsIDY3NTQ0LCAKKyAgICA2NzU0OCwgNjc1NTIsIDY3NTU2LCA2NzU2MCwgNjc1NjQsIDY3NTY4LCA2NzU3MiwgNjc1NzYsIDY3NTgwLCA2NzU4NCwgCisgICAgNjc1ODgsIDY3NTkyLCA2NzU5NiwgNjc2MDAsIDY3NjA0LCA2NzYwOCwgNjc2MTIsIDY3NjE2LCA2NzYyMCwgNjc2MjQsIAorICAgIDY3NjI4LCA2NzYzMiwgNjc2MzYsIDY3NjQwLCA2NzY0NCwgNjc2NDgsIDY3NjUyLCA2NzY1NiwgNjc2NjAsIDY3NjY0LCAKKyAgICA2NzY2OCwgNjc2NzIsIDY3Njc2LCA2NzY4MCwgNjc2ODQsIDY3Njg4LCA2NzY5MiwgNjc2OTYsIDY3NzAwLCA2NzcwNCwgCisgICAgNjc3MDgsIDY3NzEyLCA2NzcxNiwgNjc3MjAsIDY3NzI0LCA2NzcyOCwgNjc3MzIsIDY3NzM2LCA2Nzc0MCwgNjc3NDQsIAorICAgIDY3NzQ4LCA2Nzc1MiwgNjc3NTYsIDY3NzYwLCA2Nzc2NCwgNjc3NjgsIDY3NzcyLCA2Nzc3NiwgNjc3ODAsIDY3Nzg0LCAKKyAgICA2Nzc4OCwgNjc3OTIsIDY3Nzk2LCA2NzgwMCwgNjc4MDQsIDY3ODA4LCA2NzgxMiwgNjc4MTYsIDY3ODIwLCA2NzgyNCwgCisgICAgNjc4MjgsIDY3ODMyLCA2NzgzNiwgNjc4NDAsIDY3ODQ0LCA2Nzg0OCwgNjc4NTIsIDY3ODU2LCA2Nzg2MCwgNjc4NjQsIAorICAgIDY3ODY4LCA2Nzg3MiwgNjc4NzYsIDY3ODgwLCA2Nzg4NCwgNjc4ODgsIDY3ODkyLCA2Nzg5NiwgNjc5MDAsIDY3OTA0LCAKKyAgICA2NzkwOCwgNjc5MTIsIDY3OTE2LCA2NzkyMCwgNjc5MjQsIDY3OTI4LCA2NzkzMiwgNjc5MzYsIDY3OTQwLCA2Nzk0NCwgCisgICAgNjc5NDgsIDY3OTUyLCA2Nzk1NiwgNjc5NjAsIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk3OSwgNjc5ODMsIAorICAgIDY3OTg3LCA2Nzk5MSwgNjc5OTUsIDY3OTk5LCA2ODAwMywgNjgwMDcsIDY4MDExLCA2ODAxNSwgNjgwMTksIDY4MDIzLCAKKyAgICA2ODAyNywgNjgwMzEsIDY4MDM1LCA2ODAzOSwgNjgwNDMsIDY4MDQ3LCA2ODA1MSwgNjgwNTUsIDY4MDU5LCA2ODA2MywgCisgICAgNjgwNjcsIDY4MDcxLCA2ODA3NSwgNjgwNzksIDY4MDgzLCA2ODA4NywgNjgwOTEsIDY4MDk1LCA2ODA5OSwgNjgxMDMsIAorICAgIDY4MTA3LCA2ODExMSwgNjgxMTUsIDY4MTE5LCA2ODEyMywgNjgxMjcsIDY4MTMxLCA2ODEzNSwgNjgxMzksIDY4MTQzLCAKKyAgICA2ODE0NywgNjgxNTEsIDY4MTU1LCA2ODE1OSwgNjgxNjMsIDY4MTY3LCA2ODE3MSwgNjgxNzUsIDY4MTc5LCA2ODE4MywgCisgICAgNjgxODcsIDY4MTkxLCA2ODE5NSwgNjgxOTksIDY4MjAzLCA2ODIwNywgNjgyMTEsIDY4MjE1LCA2ODIxOSwgNjgyMjMsIAorICAgIDY4MjI3LCA2ODIzMSwgNjgyMzUsIDY4MjM5LCA2ODI0MywgNjgyNDcsIDY4MjUxLCA2ODI1NSwgNjgyNTksIDY4MjYzLCAKKyAgICA2ODI2NywgNjgyNzEsIDY4Mjc1LCA2ODI3OSwgNjgyODMsIDY4Mjg3LCA2ODI5MSwgNjgyOTUsIDY4Mjk5LCA2ODMwMywgCisgICAgNjgzMDcsIDY4MzExLCA2ODMxNSwgNjgzMTksIDY4MzIzLCA2ODMyNywgNjgzMzEsIDY4MzM1LCA2ODMzOSwgNjgzNDMsIAorICAgIDY4MzQ3LCA2ODM1MSwgNjgzNTUsIDY4MzU5LCA2ODM2MywgNjgzNjcsIDY4MzcxLCA2ODM3NSwgNjgzNzksIDY4MzgzLCAKKyAgICA2ODM4NywgNjgzOTEsIDY4Mzk1LCA2ODM5OSwgNjg0MDMsIDY4NDA3LCA2ODQxMSwgNjg0MTUsIDY4NDE5LCA2ODQyMywgCisgICAgNjg0MjcsIDY4NDMxLCA2ODQzNSwgNjg0MzksIDY4NDQyLCA2ODQ0NiwgNjg0NTAsIDY4NDU0LCA2ODQ1OCwgNjg0NjIsIAorICAgIDY4NDY2LCA2ODQ3MCwgNjg0NzQsIDY4NDc4LCA2ODQ4MiwgNjg0ODYsIDY4NDkwLCA2ODQ5NCwgNjg0OTgsIDY4NTAyLCAKKyAgICA2ODUwNiwgNjg1MTAsIDY4NTE0LCA2ODUxOCwgNjg1MjIsIDY4NTI2LCA2ODUzMCwgNjg1MzQsIDY4NTM4LCA2ODU0MiwgCisgICAgNjg1NDYsIDY4NTUwLCA2ODU1NCwgNjg1NTgsIDY4NTYyLCA2ODU2NiwgNjg1NzAsIDY4NTc0LCA2ODU3OCwgNjg1ODIsIAorICAgIDY4NTg2LCA2ODU5MCwgNjg1OTQsIDY4NTk4LCA2ODYwMiwgNjg2MDYsIDY4NjEwLCA2ODYxNCwgNjg2MTgsIDY4NjIyLCAKKyAgICA2ODYyNiwgNjg2MzAsIDY4NjM0LCA2ODYzOCwgNjg2NDIsIDY4NjQ2LCA2ODY1MCwgNjg2NTQsIDY4NjU4LCA2ODY2MiwgCisgICAgNjg2NjYsIDY4NjcwLCA2ODY3NCwgNjg2NzgsIDY4NjgyLCA2ODY4NiwgNjg2OTAsIDY4Njk0LCA2ODY5OCwgNjg3MDIsIAorICAgIDY4NzA2LCA2ODcxMCwgNjg3MTQsIDY4NzE4LCA2ODcyMiwgNjg3MjYsIDY4NzMwLCA2ODczNCwgNjg3MzgsIDY4NzQyLCAKKyAgICA2ODc0NiwgNjg3NTAsIDY4NzU0LCA2ODc1OCwgNjg3NjIsIDY4NzY2LCA2ODc3MCwgNjg3NzQsIDY4Nzc4LCA2ODc4MiwgCisgICAgNjg3ODYsIDY4NzkwLCA2ODc5NCwgNjg3OTgsIDY4ODAxLCA2ODgwNSwgNjg4MDksIDY4ODEzLCA2ODgxNywgNjg4MjEsIAorICAgIDY4ODI1LCA2ODgyOSwgNjg4MzMsIDY4ODM3LCA2ODg0MSwgNjg4NDUsIDY4ODQ5LCA2ODg1MywgNjg4NTcsIDY4ODYxLCAKKyAgICA2ODg2NSwgNjg4NjksIDY4ODczLCA2ODg3NywgNjg4ODEsIDY4ODg1LCA2ODg4OSwgNjg4OTMsIDY4ODk3LCA2ODkwMSwgCisgICAgNjg5MDUsIDY4OTA5LCA2ODkxMywgNjg5MTcsIDY4OTIxLCA2ODkyNSwgNjg5MjksIDY4OTMzLCA2ODkzNywgNjg5NDEsIAorICAgIDY4OTQ1LCA2ODk0OSwgNjg5NTMsIDY4OTU3LCA2ODk2MSwgNjg5NjUsIDY4OTY5LCA2ODk3MywgNjg5NzcsIDY4OTgxLCAKKyAgICA2ODk4NSwgNjg5ODksIDY4OTkzLCA2ODk5NywgNjkwMDEsIDY5MDA1LCA2OTAwOSwgNjkwMTMsIDY5MDE3LCA2OTAyMSwgCisgICAgNjkwMjUsIDY5MDI5LCA2OTAzMywgNjkwMzcsIDY5MDQwLCA2OTA0NCwgNjkwNDgsIDY5MDUyLCA2OTA1NiwgNjkwNjAsIAorICAgIDY5MDY0LCA2OTA2OCwgNjkwNzIsIDY5MDc2LCA2OTA4MCwgNjkwODQsIDY5MDg4LCA2OTA5MiwgNjkwOTYsIDY5MTAwLCAKKyAgICA2OTEwNCwgNjkxMDgsIDY5MTEyLCA2OTExNiwgNjkxMjAsIDY5MTI0LCA2OTEyOCwgNjkxMzIsIDY5MTM2LCA2OTE0MCwgCisgICAgNjkxNDQsIDY5MTQ4LCA2OTE1MiwgNjkxNTYsIDY5MTYwLCA2OTE2NCwgNjkxNjgsIDY5MTcyLCA2OTE3NiwgNjkxODAsIAorICAgIDY5MTg0LCA2OTE4OCwgNjkxOTIsIDY5MTk2LCA2OTIwMCwgNjkyMDQsIDY5MjA4LCA2OTIxMiwgNjkyMTYsIDY5MjIwLCAKKyAgICA2OTIyNCwgNjkyMjgsIDY5MjMyLCA2OTIzNiwgNjkyNDAsIDY5MjQ0LCA2OTI0OCwgNjkyNTIsIDY5MjU2LCA2OTI2MCwgCisgICAgNjkyNjQsIDY5MjY4LCA2OTI3MiwgNjkyNzYsIDY5MjgwLCA2OTI4NCwgNjkyODgsIDY5MjkyLCA2OTI5NSwgNjkyOTksIAorICAgIDY5MzAzLCA2OTMwNywgNjkzMTEsIDY5MzE1LCA2OTMxOSwgNjkzMjMsIDY5MzI3LCA2OTMzMSwgNjkzMzUsIDY5MzM5LCAKKyAgICA2OTM0MywgNjkzNDcsIDY5MzUxLCA2OTM1NSwgNjkzNTksIDY5MzYzLCA2OTM2NywgNjkzNzEsIDY5Mzc1LCA2OTM3OSwgCisgICAgNjkzODMsIDY5Mzg3LCA2OTM5MSwgNjkzOTUsIDY5Mzk5LCA2OTQwMywgNjk0MDcsIDY5NDExLCA2OTQxNSwgNjk0MTksIAorICAgIDY5NDIzLCA2OTQyNywgNjk0MzEsIDY5NDM1LCA2OTQzOSwgNjk0NDMsIDY5NDQ3LCA2OTQ1MSwgNjk0NTUsIDY5NDU5LCAKKyAgICA2OTQ2MywgNjk0NjcsIDY5NDcxLCA2OTQ3NSwgNjk0NzksIDY5NDgzLCA2OTQ4NywgNjk0OTEsIDY5NDk1LCA2OTQ5OSwgCisgICAgNjk1MDMsIDY5NTA3LCA2OTUxMSwgNjk1MTUsIDY5NTE5LCA2OTUyMywgNjk1MjcsIDY5NTMxLCA2OTUzNSwgNjk1MzksIAorICAgIDY5NTQzLCA2OTU0NywgNjk1NTEsIDY5NTU1LCA2OTU1OSwgNjk1NjMsIDY5NTY3LCA2OTU3MSwgNjk1NzUsIDY5NTc5LCAKKyAgICA2OTU4MywgNjk1ODcsIDY5NTkxLCA2OTU5NSwgNjk1OTksIDY5NjAzLCA2OTYwNywgNjk2MTEsIDY5NjE1LCA2OTYxOSwgCisgICAgNjk2MjMsIDY5NjI3LCA2OTYzMSwgNjk2MzUsIDY5NjM5LCA2OTY0MywgNjk2NDcsIDY5NjUxLCA2OTY1NSwgNjk2NTksIAorICAgIDY5NjYzLCA2OTY2NywgNjk2NzEsIDY5Njc1LCA2OTY3OSwgNjk2ODMsIDY5Njg3LCA2OTY5MSwgNjk2OTUsIDY5Njk5LCAKKyAgICA2OTcwMywgNjk3MDcsIDY5NzExLCA2OTcxNSwgNjk3MTksIDY5NzIzLCA2OTcyNywgNjk3MzEsIDY5NzM1LCA2OTczOSwgCisgICAgNjk3NDMsIDY5NzQ3LCA2OTc1MCwgNjk3NTQsIDY5NzU4LCA2OTc2MiwgNjk3NjYsIDY5NzcwLCA2OTc3NCwgNjk3NzgsIAorICAgIDY5NzgyLCA2OTc4NiwgNjk3OTAsIDY5Nzk0LCA2OTc5OCwgNjk4MDIsIDY5ODA2LCA2OTgxMCwgNjk4MTQsIDY5ODE4LCAKKyAgICA2OTgyMiwgNjk4MjYsIDY5ODMwLCA2OTgzNCwgNjk4MzgsIDY5ODQyLCA2OTg0NiwgNjk4NTAsIDY5ODU0LCA2OTg1OCwgCisgICAgNjk4NjIsIDY5ODY2LCA2OTg3MCwgNjk4NzQsIDY5ODc4LCA2OTg4MiwgNjk4ODYsIDY5ODkwLCA2OTg5NCwgNjk4OTgsIAorICAgIDY5OTAyLCA2OTkwNiwgNjk5MTAsIDY5OTE0LCA2OTkxOCwgNjk5MjIsIDY5OTI2LCA2OTkzMCwgNjk5MzQsIDY5OTM4LCAKKyAgICA2OTk0MiwgNjk5NDYsIDY5OTUwLCA2OTk1NCwgNjk5NTgsIDY5OTYyLCA2OTk2NiwgNjk5NzAsIDY5OTc0LCA2OTk3OCwgCisgICAgNjk5ODIsIDY5OTg2LCA2OTk5MCwgNjk5OTQsIDY5OTk4LCA3MDAwMiwgNzAwMDYsIDcwMDEwLCA3MDAxNCwgNzAwMTgsIAorICAgIDcwMDIyLCA3MDAyNiwgNzAwMzAsIDcwMDM0LCA3MDAzOCwgNzAwNDIsIDcwMDQ2LCA3MDA1MCwgNzAwNTQsIDcwMDU4LCAKKyAgICA3MDA2MiwgNzAwNjYsIDcwMDcwLCA3MDA3NCwgNzAwNzgsIDcwMDgyLCA3MDA4NiwgNzAwOTAsIDcwMDk0LCA3MDA5OCwgCisgICAgNzAxMDIsIDcwMTA2LCA3MDExMCwgNzAxMTQsIDcwMTE4LCA3MDEyMiwgNzAxMjYsIDcwMTMwLCA3MDEzNCwgNzAxMzgsIAorICAgIDcwMTQyLCA3MDE0NiwgNzAxNTAsIDcwMTU0LCA3MDE1OCwgNzAxNjIsIDcwMTY2LCA3MDE3MCwgNzAxNzQsIDcwMTc4LCAKKyAgICA3MDE4MiwgNzAxODYsIDcwMTkwLCA3MDE5NCwgNzAxOTgsIDcwMjAyLCA3MDIwNiwgNzAyMTAsIDcwMjE0LCA3MDIxOCwgCisgICAgNzAyMjIsIDcwMjI2LCA3MDIzMCwgNzAyMzQsIDcwMjM4LCA3MDI0MiwgNzAyNDYsIDcwMjUwLCA3MDI1NCwgNzAyNTgsIAorICAgIDcwMjYyLCA3MDI2NiwgNzAyNzAsIDcwMjc0LCA3MDI3OCwgNzAyODIsIDcwMjg2LCA3MDI5MCwgNzAyOTQsIDcwMjk4LCAKKyAgICA3MDMwMiwgNzAzMDYsIDcwMzEwLCA3MDMxNCwgNzAzMTgsIDcwMzIyLCA3MDMyNiwgNzAzMzAsIDcwMzM0LCA3MDMzOCwgCisgICAgNzAzNDIsIDcwMzQ2LCA3MDM1MCwgNzAzNTMsIDcwMzU3LCA3MDM2MSwgNzAzNjUsIDcwMzY5LCA3MDM3MywgNzAzNzcsIAorICAgIDcwMzgxLCA3MDM4NSwgNzAzODksIDcwMzkzLCA3MDM5NywgNzA0MDEsIDcwNDA1LCA3MDQwOSwgNzA0MTMsIDcwNDE3LCAKKyAgICA3MDQyMSwgNzA0MjUsIDcwNDI5LCA3MDQzMywgNzA0MzcsIDcwNDQxLCA3MDQ0NSwgNzA0NDksIDcwNDUzLCA3MDQ1NywgCisgICAgNzA0NjEsIDcwNDY1LCA3MDQ2OSwgNzA0NzMsIDcwNDc3LCA3MDQ4MSwgNzA0ODUsIDcwNDg5LCA3MDQ5MywgNzA0OTcsIAorICAgIDcwNTAxLCA3MDUwNSwgNzA1MDksIDcwNTEzLCA3MDUxNywgNzA1MjEsIDcwNTI1LCA3MDUyOSwgNzA1MzMsIDcwNTM3LCAKKyAgICA3MDU0MSwgNzA1NDUsIDcwNTQ5LCA3MDU1MywgNzA1NTcsIDcwNTYxLCA3MDU2NSwgNzA1NjksIDcwNTczLCA3MDU3NywgCisgICAgNzA1ODEsIDcwNTg1LCA3MDU4OSwgNzA1OTMsIDcwNTk3LCA3MDYwMSwgNzA2MDUsIDcwNjA5LCA3MDYxMywgNzA2MTcsIAorICAgIDcwNjIxLCA3MDYyNSwgNzA2MjksIDcwNjMzLCA3MDYzNywgNzA2NDEsIDcwNjQ1LCA3MDY0OSwgNzA2NTMsIDcwNjU3LCAKKyAgICA3MDY2MSwgNzA2NjUsIDcwNjY5LCA3MDY3MywgNzA2NzcsIDcwNjgxLCA3MDY4NSwgNzA2ODksIDcwNjkzLCA3MDY5NywgCisgICAgNzA3MDEsIDcwNzA1LCA3MDcwOSwgNzA3MTMsIDcwNzE3LCA3MDcyMSwgNzA3MjUsIDcwNzI5LCA3MDczMywgNzA3MzcsIAorICAgIDcwNzQxLCA3MDc0NSwgNzA3NDksIDcwNzUzLCA3MDc1NywgNzA3NjEsIDcwNzY1LCA3MDc2OSwgNzA3NzMsIDcwNzc3LCAKKyAgICA3MDc4MSwgNzA3ODUsIDcwNzg5LCA3MDc5MywgNzA3OTcsIDcwODAxLCA3MDgwNSwgNzA4MDksIDcwODEzLCA3MDgxNywgCisgICAgNzA4MjEsIDcwODI1LCA3MDgyOSwgNzA4MzMsIDcwODM3LCA3MDg0MSwgNzA4NDUsIDcwODQ5LCA3MDg1MywgNzA4NTcsIAorICAgIDcwODYxLCA3MDg2NSwgNzA4NjksIDcwODczLCA3MDg3NywgNzA4ODEsIDcwODg1LCA3MDg4OSwgNzA4OTMsIDcwODk3LCAKKyAgICA3MDkwMSwgNzA5MDUsIDcwOTA5LCA3MDkxMywgNzA5MTcsIDcwOTIxLCA3MDkyNSwgNzA5MjksIDcwOTMzLCA3MDkzNywgCisgICAgNzA5NDEsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCA3MDk2MSwgNzA5NjUsIDcwOTY5LCA3MDk3MywgNzA5NzcsIAorICAgIDcwOTgxLCA3MDk4NSwgNzA5ODksIDcwOTkzLCA3MDk5NywgNzEwMDEsIDcxMDA1LCA3MTAwOSwgNzEwMTMsIDcxMDE3LCAKKyAgICA3MTAyMSwgNzEwMjUsIDcxMDI5LCA3MTAzMywgNzEwMzcsIDcxMDQxLCA3MTA0NSwgNzEwNDksIDcxMDUzLCA3MTA1NywgCisgICAgNzEwNjEsIDcxMDY1LCA3MTA2OSwgNzEwNzMsIDcxMDc3LCA3MTA4MSwgNzEwODUsIDcxMDg5LCA3MTA5MywgNzEwOTcsIAorICAgIDcxMTAxLCA3MTEwNSwgNzExMDksIDcxMTEzLCA3MTExNywgNzExMjEsIDcxMTI1LCA3MTEyOSwgNzExMzMsIDcxMTM3LCAKKyAgICA3MTE0MSwgNzExNDUsIDcxMTQ5LCA3MTE1MywgNzExNTcsIDcxMTYxLCA3MTE2NSwgNzExNjksIDcxMTczLCA3MTE3NywgCisgICAgNzExODEsIDcxMTg1LCA3MTE4OSwgNzExOTMsIDcxMTk3LCA3MTIwMSwgNzEyMDUsIDcxMjA5LCA3MTIxMywgNzEyMTcsIAorICAgIDcxMjIxLCA3MTIyNSwgNzEyMjksIDcxMjMzLCA3MTIzNywgNzEyNDEsIDcxMjQ1LCA3MTI0OSwgNzEyNTMsIDcxMjU3LCAKKyAgICA3MTI2MSwgNzEyNjUsIDcxMjY5LCA3MTI3MywgNzEyNzcsIDcxMjgxLCA3MTI4NSwgNzEyODksIDcxMjkzLCA3MTI5NywgCisgICAgNzEzMDEsIDcxMzA1LCA3MTMwOSwgNzEzMTMsIDcxMzE3LCA3MTMyMSwgNzEzMjUsIDcxMzI5LCA3MTMzMywgNzEzMzcsIAorICAgIDcxMzQxLCA3MTM0NSwgNzEzNDksIDcxMzUzLCA3MTM1NywgNzEzNjEsIDcxMzY1LCA3MTM2OSwgNzEzNzMsIDcxMzc3LCAKKyAgICA3MTM4MSwgNzEzODUsIDcxMzg5LCA3MTM5MywgNzEzOTcsIDcxNDAxLCA3MTQwNSwgNzE0MDksIDcxNDEzLCA3MTQxNywgCisgICAgNzE0MjEsIDcxNDI1LCA3MTQyOSwgNzE0MzMsIDcxNDM3LCA3MTQ0MSwgNzE0NDUsIDcxNDQ5LCA3MTQ1MywgNzE0NTcsIAorICAgIDcxNDYxLCA3MTQ2NSwgNzE0NjksIDcxNDczLCA3MTQ3NywgNzE0ODEsIDcxNDg1LCA3MTQ4OSwgNzE0OTMsIDcxNDk3LCAKKyAgICA3MTUwMSwgNzE1MDUsIDcxNTA5LCA3MTUxMywgNzE1MTcsIDcxNTIxLCA3MTUyNSwgNzE1MjksIDcxNTMzLCA3MTUzNywgCisgICAgNzE1NDEsIDcxNTQ1LCA3MTU0OSwgNzE1NTMsIDcxNTU3LCA3MTU2MSwgNzE1NjUsIDcxNTY5LCA3MTU3MywgNzE1NzcsIAorICAgIDcxNTgxLCA3MTU4NSwgNzE1ODksIDcxNTkzLCA3MTU5NywgNzE2MDEsIDcxNjA1LCA3MTYwOSwgNzE2MTMsIDcxNjE3LCAKKyAgICA3MTYyMSwgNzE2MjUsIDcxNjI5LCA3MTYzMywgNzE2MzcsIDcxNjQxLCA3MTY0NSwgNzE2NDksIDcxNjUzLCA3MTY1NywgCisgICAgNzE2NjEsIDcxNjY1LCA3MTY2OSwgNzE2NzMsIDcxNjc3LCA3MTY4MSwgNzE2ODUsIDcxNjg5LCA3MTY5MywgNzE2OTcsIAorICAgIDcxNzAxLCA3MTcwNSwgNzE3MDksIDcxNzEzLCA3MTcxNywgNzE3MjEsIDcxNzI1LCA3MTcyOSwgNzE3MzMsIDcxNzM3LCAKKyAgICA3MTc0MSwgNzE3NDUsIDcxNzQ5LCA3MTc1MywgNzE3NTcsIDcxNzYxLCA3MTc2NSwgNzE3NjksIDcxNzczLCA3MTc3NywgCisgICAgNzE3ODEsIDcxNzg1LCA3MTc4OSwgNzE3OTMsIDcxNzk3LCA3MTgwMSwgNzE4MDUsIDcxODA5LCA3MTgxMywgNzE4MTcsIAorICAgIDcxODIxLCA3MTgyNSwgNzE4MjksIDcxODMzLCA3MTgzNywgNzE4NDEsIDcxODQ1LCA3MTg0OSwgNzE4NTMsIDcxODU3LCAKKyAgICA3MTg2MSwgNzE4NjUsIDcxODY5LCA3MTg3MywgNzE4NzcsIDcxODgxLCA3MTg4NSwgNzE4ODksIDcxODkzLCAwLCAwLCAwLCAKKyAgICA3MTg5NywgNzE5MDEsIDcxOTA1LCA3MTkwOSwgNzE5MTMsIDcxOTE3LCA3MTkyMSwgNzE5MjUsIDcxOTI5LCA3MTkzMywgCisgICAgNzE5MzcsIDcxOTQxLCA3MTk0NSwgNzE5NDksIDcxOTUzLCA3MTk1NywgNzE5NjEsIDcxOTY1LCA3MTk2OSwgNzE5NzMsIAorICAgIDcxOTc3LCA3MTk4MSwgNzE5ODUsIDcxOTg5LCA3MTk5MywgNzE5OTcsIDcyMDAxLCA3MjAwNSwgNzIwMDksIDcyMDEzLCAKKyAgICA3MjAxNywgNzIwMjEsIDcyMDI1LCA3MjAyOSwgNzIwMzMsIDcyMDM3LCA3MjA0MSwgNzIwNDUsIDcyMDQ5LCA3MjA1MywgCisgICAgNzIwNTcsIDcyMDYxLCA3MjA2NSwgNzIwNjksIDcyMDczLCA3MjA3NywgNzIwODEsIDcyMDg1LCA3MjA4OSwgNzIwOTMsIAorICAgIDcyMDk3LCA3MjEwMSwgNzIxMDUsIDcyMTA5LCA3MjExMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzIxMTcsIAorICAgIDcyMTIyLCA3MjEyNiwgNzIxMzEsIDcyMTM2LCA3MjE0MSwgNzIxNDYsIDcyMTUxLCA3MjE1NSwgNzIxNjAsIDcyMTY1LCAKKyAgICA3MjE3MCwgNzIxNzUsIDcyMTgwLCA3MjE4NSwgNzIxOTAsIDcyMTk0LCA3MjE5OCwgNzIyMDIsIDcyMjA3LCA3MjIxMiwgCisgICAgNzIyMTcsIDcyMjIyLCA3MjIyNiwgNzIyMzEsIDcyMjM2LCA3MjI0MSwgNzIyNDYsIDcyMjUxLCA3MjI1NSwgNzIyNjAsIAorICAgIDcyMjY0LCA3MjI2OSwgNzIyNzMsIDcyMjc4LCA3MjI4MiwgNzIyODYsIDcyMjkwLCA3MjI5NSwgNzIzMDAsIDcyMzA1LCAKKyAgICA3MjMxMywgNzIzMjEsIDcyMzI5LCA3MjMzNywgNzIzNDQsIDcyMzUyLCA3MjM1OCwgNzIzNjYsIDcyMzcwLCA3MjM3NCwgCisgICAgNzIzNzgsIDcyMzgyLCA3MjM4NiwgNzIzOTAsIDcyMzk0LCA3MjM5OCwgNzI0MDIsIDcyNDA2LCA3MjQxMCwgNzI0MTQsIAorICAgIDcyNDE4LCA3MjQyMiwgNzI0MjYsIDcyNDMwLCA3MjQzNCwgNzI0MzgsIDcyNDQyLCA3MjQ0NiwgNzI0NTAsIDcyNDU0LCAKKyAgICA3MjQ1OCwgNzI0NjIsIDcyNDY2LCA3MjQ3MCwgNzI0NzQsIDcyNDc4LCA3MjQ4MiwgNzI0ODYsIDcyNDkwLCA3MjQ5NCwgCisgICAgNzI0OTgsIDcyNTAyLCA3MjUwNiwgNzI1MTAsIDcyNTEzLCA3MjUxNywgNzI1MjEsIDcyNTI1LCA3MjUyOSwgNzI1MzMsIAorICAgIDcyNTM3LCA3MjU0MSwgNzI1NDUsIDcyNTQ5LCA3MjU1MywgNzI1NTcsIDcyNTYxLCA3MjU2NSwgNzI1NjksIDcyNTczLCAKKyAgICA3MjU3NywgNzI1ODEsIDcyNTg1LCA3MjU4OSwgNzI1OTMsIDcyNTk3LCA3MjYwMSwgNzI2MDUsIDcyNjA5LCA3MjYxMywgCisgICAgNzI2MTcsIDcyNjIxLCA3MjYyNSwgNzI2MjksIDcyNjMzLCA3MjYzNywgNzI2NDEsIDcyNjQ1LCA3MjY0OSwgNzI2NTMsIAorICAgIDcyNjU3LCA3MjY2MCwgNzI2NjQsIDcyNjY4LCA3MjY3MSwgNzI2NzUsIDcyNjc5LCA3MjY4MywgNzI2ODYsIDcyNjkwLCAKKyAgICA3MjY5NCwgNzI2OTgsIDcyNzAyLCA3MjcwNiwgNzI3MTAsIDcyNzE0LCA3MjcxOCwgNzI3MjIsIDcyNzI2LCA3MjczMCwgCisgICAgNzI3MzQsIDcyNzM4LCA3Mjc0MSwgNzI3NDUsIDcyNzQ5LCA3Mjc1MywgNzI3NTcsIDcyNzYxLCA3Mjc2NSwgNzI3NjksIAorICAgIDcyNzczLCA3Mjc3NywgNzI3ODEsIDcyNzg0LCA3Mjc4NywgNzI3OTEsIDcyNzk1LCA3Mjc5OSwgNzI4MDIsIDcyODA1LCAKKyAgICA3MjgwOSwgNzI4MTMsIDcyODE3LCA3MjgyMSwgNzI4MjUsIDcyODI5LCA3MjgzMywgNzI4MzcsIDcyODQxLCA3Mjg0NSwgCisgICAgNzI4NDksIDcyODUzLCA3Mjg1NywgNzI4NjEsIDcyODY1LCA3Mjg2OSwgNzI4NzMsIDcyODc3LCA3Mjg4MSwgNzI4ODUsIAorICAgIDcyODg5LCA3Mjg5MywgNzI4OTcsIDcyOTAxLCA3MjkwNSwgNzI5MDksIDcyOTEzLCA3MjkxNywgNzI5MjEsIDcyOTI1LCAKKyAgICA3MjkyOSwgNzI5MzMsIDcyOTM3LCA3Mjk0MSwgNzI5NDUsIDcyOTQ5LCA3Mjk1MywgNzI5NTYsIDcyOTYwLCA3Mjk2NCwgCisgICAgNzI5NjgsIDcyOTcyLCA3Mjk3NiwgNzI5ODAsIDcyOTg0LCA3Mjk4OCwgNzI5OTIsIDcyOTk2LCA3MzAwMCwgNzMwMDQsIAorICAgIDczMDA4LCA3MzAxMiwgNzMwMTYsIDczMDIwLCA3MzAyNCwgNzMwMjgsIDczMDMyLCA3MzAzNiwgNzMwNDAsIDczMDQ0LCAKKyAgICA3MzA0OCwgNzMwNTIsIDczMDU2LCA3MzA2MCwgNzMwNjQsIDczMDY4LCA3MzA3MiwgNzMwNzYsIDczMDgwLCA3MzA4NCwgCisgICAgNzMwODgsIDczMDkyLCA3MzA5NiwgNzMxMDAsIDczMTAzLCA3MzEwNywgNzMxMTEsIDczMTE1LCA3MzExOSwgNzMxMjMsIAorICAgIDczMTI3LCA3MzEzMSwgNzMxMzUsIDczMTM5LCA3MzE0MywgNzMxNDcsIDczMTUxLCA3MzE1NSwgNzMxNTksIDczMTYzLCAKKyAgICA3MzE2NywgNzMxNzAsIDczMTc0LCA3MzE3OCwgNzMxODIsIDczMTg2LCA3MzE5MCwgNzMxOTQsIDczMTk4LCA3MzIwMiwgCisgICAgNzMyMDYsIDczMjEwLCA3MzIxNCwgNzMyMTgsIDczMjIyLCA3MzIyNiwgNzMyMzAsIDczMjM0LCA3MzIzOCwgNzMyNDIsIAorICAgIDczMjQ2LCA3MzI1MCwgNzMyNTQsIDczMjU3LCA3MzI2MSwgNzMyNjUsIDczMjY5LCA3MzI3MywgNzMyNzcsIDczMjgxLCAKKyAgICA3MzI4NSwgNzMyODksIDczMjkzLCA3MzI5NywgNzMzMDEsIDczMzA1LCA3MzMwOSwgNzMzMTMsIDczMzE3LCA3MzMyMSwgCisgICAgNzMzMjUsIDczMzI5LCA3MzMzMywgNzMzMzcsIDczMzQxLCA3MzM0NSwgNzMzNDksIDczMzUzLCA3MzM1NywgNzMzNjEsIAorICAgIDczMzY1LCA3MzM2OSwgNzMzNzMsIDczMzc3LCA3MzM4MSwgNzMzODUsIDczMzg5LCA3MzM5MywgNzMzOTcsIDczNDAxLCAKKyAgICA3MzQwNSwgNzM0MDksIDczNDEzLCA3MzQxNywgNzM0MjEsIDczNDI1LCA3MzQyOSwgNzM0MzIsIDczNDM3LCA3MzQ0MSwgCisgICAgNzM0NDcsIDczNDUyLCA3MzQ1OCwgNzM0NjIsIDczNDY2LCA3MzQ3MCwgNzM0NzQsIDczNDc4LCA3MzQ4MiwgNzM0ODYsIAorICAgIDczNDkwLCA3MzQ5NCwgNzM0OTgsIDczNTAyLCA3MzUwNiwgNzM1MTAsIDczNTE0LCA3MzUxNywgNzM1MjAsIDczNTIzLCAKKyAgICA3MzUyNiwgNzM1MjksIDczNTMyLCA3MzUzNiwgNzM1MzksIDczNTQzLCA3MzU0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzM1NTQsIDczNTU5LCA3MzU2NCwgNzM1NjksIDczNTc0LCAKKyAgICA3MzU4MSwgNzM1ODgsIDczNTkzLCA3MzU5OCwgNzM2MDMsIDczNjA4LCA3MzYxNSwgNzM2MjIsIDczNjI5LCA3MzYzNiwgCisgICAgNzM2NDMsIDczNjUwLCA3MzY2MCwgNzM2NzAsIDczNjc3LCA3MzY4NCwgNzM2OTEsIDczNjk4LCA3MzcwNCwgNzM3MTAsIAorICAgIDczNzE5LCA3MzcyOCwgNzM3MzUsIDczNzQyLCA3Mzc1MywgNzM3NjQsIDczNzY5LCA3Mzc3NCwgNzM3ODEsIDczNzg4LCAKKyAgICA3Mzc5NSwgNzM4MDIsIDczODA5LCA3MzgxNiwgNzM4MjMsIDczODMwLCA3MzgzNiwgNzM4NDIsIDczODQ4LCA3Mzg1NCwgCisgICAgNzM4NjEsIDczODY4LCA3Mzg3MywgNzM4NzcsIDczODg0LCA3Mzg5MSwgNzM4OTgsIDczOTAyLCA3MzkwOSwgNzM5MTMsIAorICAgIDczOTE4LCA3MzkyMiwgNzM5MjgsIDczOTMzLCA3MzkzOSwgNzM5NDQsIDczOTQ4LCA3Mzk1MiwgNzM5NTUsIDczOTU4LCAKKyAgICA3Mzk2MywgNzM5NjgsIDczOTczLCA3Mzk3OCwgNzM5ODMsIDczOTg4LCA3Mzk5MywgNzM5OTgsIDc0MDAzLCA3NDAwOCwgCisgICAgNzQwMTYsIDc0MDI0LCA3NDAyOSwgNzQwMzQsIDc0MDM5LCA3NDA0NCwgNzQwNDksIDc0MDU0LCA3NDA1OSwgNzQwNjQsIAorICAgIDc0MDY5LCA3NDA3NCwgNzQwNzksIDc0MDg0LCA3NDA4OSwgNzQwOTQsIDc0MTAwLCA3NDEwNiwgNzQxMTIsIDc0MTE4LCAKKyAgICA3NDEyMywgNzQxMjksIDc0MTMyLCA3NDEzNSwgNzQxMzgsIDc0MTQyLCA3NDE0NiwgNzQxNTAsIDc0MTU0LCA3NDE1NywgCisgICAgNzQxNjEsIDc0MTY0LCA3NDE2NywgNzQxNzAsIDc0MTc0LCA3NDE3OCwgNzQxODIsIDc0MTg2LCA3NDE5MCwgNzQxOTQsIAorICAgIDc0MTk4LCA3NDIwMiwgNzQyMDYsIDc0MjEwLCA3NDIxNCwgNzQyMTgsIDc0MjIyLCA3NDIyNiwgNzQyMzAsIDc0MjM0LCAKKyAgICA3NDIzOCwgNzQyNDIsIDc0MjQ2LCA3NDI1MCwgNzQyNTQsIDc0MjU4LCA3NDI2MSwgNzQyNjUsIDc0MjY5LCA3NDI3MywgCisgICAgNzQyNzcsIDc0MjgxLCA3NDI4NSwgNzQyODksIDc0MjkzLCA3NDI5NywgNzQzMDEsIDc0MzA1LCA3NDMwOSwgNzQzMTMsIAorICAgIDc0MzE3LCA3NDMyMSwgNzQzMjUsIDc0MzI5LCA3NDMzMywgNzQzMzcsIDc0MzQxLCA3NDM0NSwgNzQzNDksIDc0MzUzLCAKKyAgICA3NDM1NywgNzQzNjAsIDc0MzY0LCA3NDM2OCwgNzQzNzIsIDc0Mzc2LCA3NDM4MCwgNzQzODQsIDc0Mzg4LCA3NDM5MSwgCisgICAgNzQzOTUsIDc0Mzk5LCA3NDQwMywgNzQ0MDcsIDc0NDExLCA3NDQxNSwgNzQ0MTksIDc0NDIzLCA3NDQyNywgNzQ0MzEsIAorICAgIDc0NDM1LCA3NDQzOSwgNzQ0NDQsIDc0NDQ5LCA3NDQ1MiwgNzQ0NTcsIDc0NDYwLCA3NDQ2MywgNzQ0NjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDc0NDcwLCA3NDQ3OSwgNzQ0ODgsIDc0NDk3LCA3NDUwNiwgNzQ1MTUsIDc0NTI0LCA3NDUzMywgCisgICAgNzQ1NDIsIDc0NTUwLCA3NDU1NywgNzQ1NjUsIDc0NTcyLCA3NDU4MCwgNzQ1OTAsIDc0NTk5LCA3NDYwOSwgNzQ2MTgsIAorICAgIDc0NjI4LCA3NDYzNiwgNzQ2NDMsIDc0NjUxLCA3NDY1OCwgNzQ2NjYsIDc0NjcxLCA3NDY3NiwgNzQ2ODIsIDc0NjkxLCAKKyAgICA3NDY5NywgNzQ3MDMsIDc0NzEwLCA3NDcxOSwgNzQ3MjcsIDc0NzM1LCA3NDc0MywgNzQ3NTAsIDc0NzU3LCA3NDc2NCwgCisgICAgNzQ3NzEsIDc0Nzc2LCA3NDc4MSwgNzQ3ODYsIDc0NzkxLCA3NDc5NiwgNzQ4MDEsIDc0ODA2LCA3NDgxMSwgNzQ4MTksIAorICAgIDc0ODI3LCA3NDgzMywgNzQ4MzksIDc0ODQ0LCA3NDg0OSwgNzQ4NTQsIDc0ODU5LCA3NDg2NCwgNzQ4NjksIDc0ODc0LCAKKyAgICA3NDg3OSwgNzQ4ODgsIDc0ODk3LCA3NDkwMiwgNzQ5MDcsIDc0OTE3LCA3NDkyNywgNzQ5MzQsIDc0OTQxLCA3NDk1MCwgCisgICAgNzQ5NTksIDc0OTcxLCA3NDk4MywgNzQ5ODksIDc0OTk1LCA3NTAwMywgNzUwMTEsIDc1MDIxLCA3NTAzMSwgNzUwMzgsIAorICAgIDc1MDQ1LCA3NTA1MCwgNzUwNTUsIDc1MDY3LCA3NTA3OSwgNzUwODcsIDc1MDk1LCA3NTEwNSwgNzUxMTUsIDc1MTI3LCAKKyAgICA3NTEzOSwgNzUxNDgsIDc1MTU3LCA3NTE2NCwgNzUxNzEsIDc1MTc4LCA3NTE4NSwgNzUxOTQsIDc1MjAzLCA3NTIwOCwgCisgICAgNzUyMTMsIDc1MjIwLCA3NTIyNywgNzUyMzQsIDc1MjQxLCA3NTI1MywgNzUyNjUsIDc1MjcwLCA3NTI3NSwgNzUyODAsIAorICAgIDc1Mjg1LCA3NTI5MCwgNzUyOTUsIDc1MzAwLCA3NTMwNSwgNzUzMDksIDc1MzE0LCA3NTMxOSwgNzUzMjQsIDc1MzI5LCAKKyAgICA3NTMzNCwgNzUzNDAsIDc1MzQ1LCA3NTM1MCwgNzUzNTcsIDc1MzY0LCA3NTM3MSwgNzUzNzgsIDc1Mzg1LCA3NTM5NCwgCisgICAgNzU0MDMsIDc1NDA5LCA3NTQxNSwgNzU0MjEsIDc1NDI3LCA3NTQzNCwgNzU0NDEsIDc1NDQ4LCA3NTQ1NSwgNzU0NjIsIAorICAgIDc1NDY2LCA3NTQ3MywgNzU0NzgsIDc1NDgzLCA3NTQ5MCwgNzU1MDMsIDc1NTA5LCA3NTUxNywgNzU1MjUsIDc1NTMyLCAKKyAgICA3NTUzOSwgNzU1NDgsIDc1NTU3LCA3NTU2NCwgNzU1NzEsIDc1NTc4LCA3NTU4NSwgNzU1OTIsIDc1NTk5LCA3NTYwNiwgCisgICAgNzU2MTMsIDc1NjIwLCA3NTYyNywgNzU2MzYsIDc1NjQ1LCA3NTY1NCwgNzU2NjMsIDc1NjcyLCA3NTY4MSwgNzU2OTAsIAorICAgIDc1Njk5LCA3NTcwOCwgNzU3MTcsIDc1NzI0LCA3NTczMSwgNzU3MzcsIDc1NzQ1LCAwLCA3NTc1MSwgNzU3NTgsIDc1NzY1LCAKKyAgICA3NTc3MywgNzU3NzgsIDc1NzgzLCA3NTc4OCwgNzU3OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc1MDU2LCA3NTA2MywgNzUwNzAsIDc1MDc2LCA3NTA4NCwgNzUwOTIsIDc1MTAwLCA3NTEwOCwgNzUxMTYsIAotICAgIDc1MTI0LCA3NTEzMCwgNzUxMzYsIDc1MTQzLCA3NTE0OSwgNzUxNTUsIDc1MTYxLCA3NTE2OCwgNzUxNzUsIDc1MTgyLCAKLSAgICA3NTE4OSwgNzUxOTYsIDc1MjAzLCA3NTIxMCwgNzUyMTcsIDc1MjI0LCA3NTIzMSwgNzUyMzgsIDc1MjQ1LCA3NTI1MiwgCi0gICAgNzUyNTksIDc1MjY1LCA3NTI3MiwgNzUyNzksIDc1Mjg2LCA3NTI5MywgNzUzMDAsIDc1MzA3LCA3NTMxNCwgNzUzMjEsIAotICAgIDc1MzI4LCA3NTMzNSwgNzUzNDIsIDc1MzQ5LCA3NTM1NiwgNzUzNjMsIDc1MzcwLCA3NTM3NywgNzUzODQsIDc1MzkxLCAKLSAgICA3NTM5OSwgNzU0MDcsIDc1NDE1LCA3NTQyMywgMCwgMCwgMCwgMCwgNzU0MzEsIDc1NDM5LCA3NTQ0NywgNzU0NTUsIAotICAgIDc1NDYzLCA3NTQ3MSwgNzU0NzksIDc1NDg1LCA3NTQ5MSwgNzU0OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDc1NTAzLCA3NTUwNywgCi0gICAgNzU1MTIsIDc1NTE3LCA3NTUyMiwgNzU1MjcsIDc1NTMyLCA3NTUzNywgNzU1NDIsIDc1NTQ3LCA3NTU1MiwgNzU1NTcsIAotICAgIDc1NTYyLCA3NTU2NiwgNzU1NzEsIDc1NTc2LCA3NTU4MCwgNzU1ODUsIDc1NTkwLCA3NTU5NSwgNzU2MDAsIDc1NjA1LCAKLSAgICA3NTYxMCwgNzU2MTUsIDc1NjE5LCA3NTYyNCwgNzU2MjksIDc1NjM0LCA3NTYzOSwgNzU2NDMsIDc1NjQ3LCA3NTY1MSwgCi0gICAgNzU2NTUsIDc1NjU5LCA3NTY2MywgNzU2NjgsIDc1NjczLCA3NTY3OCwgNzU2ODMsIDc1Njg4LCA3NTY5NSwgNzU3MDEsIAotICAgIDc1NzA2LCA3NTcxMSwgNzU3MTYsIDc1NzIxLCA3NTcyNywgNzU3MzQsIDc1NzQwLCA3NTc0NywgNzU3NTQsIDc1NzYxLCAKLSAgICA3NTc2NiwgNzU3NzMsIDc1Nzc5LCA3NTc4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU3OTAsIDc1Nzk1LCA3NTgwMCwgCi0gICAgNzU4MDQsIDc1ODA5LCA3NTgxMywgNzU4MTgsIDc1ODIyLCA3NTgyNywgNzU4MzIsIDc1ODM4LCA3NTg0MywgNzU4NDksIAotICAgIDc1ODUzLCA3NTg1OCwgNzU4NjMsIDc1ODY3LCA3NTg3MiwgNzU4NzcsIDc1ODgxLCA3NTg4NiwgNzU4OTEsIDc1ODk2LCAKLSAgICA3NTkwMSwgNzU5MDYsIDc1OTExLCA3NTkxNiwgNzU5MjEsIDc1OTI2LCA3NTkzMSwgNzU5MzYsIDc1OTQxLCA3NTk0NiwgCi0gICAgNzU5NTEsIDc1OTU2LCA3NTk2MSwgNzU5NjYsIDc1OTcxLCA3NTk3NiwgNzU5ODAsIDc1OTg1LCA3NTk5MCwgNzU5OTUsIAotICAgIDc1OTk5LCA3NjAwMywgNzYwMDgsIDc2MDEzLCA3NjAxOCwgNzYwMjMsIDc2MDI4LCA3NjAzMywgNzYwMzcsIDc2MDQyLCAKLSAgICA3NjA0OCwgNzYwNTQsIDc2MDU5LCA3NjA2NSwgNzYwNzAsIDc2MDc2LCA3NjA4MiwgNzYwODksIDc2MDk1LCA3NjEwMiwgCi0gICAgNzYxMDcsIDc2MTEzLCA3NjExOSwgNzYxMjQsIDc2MTMwLCA3NjEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzYxNDEsIDc2MTQ1LCA3NjE1MCwgNzYxNTUsIDc2MTU5LCA3NjE2MywgNzYxNjcsIDc2MTcxLCA3NjE3NSwgNzYxNzksIAotICAgIDc2MTg0LCA3NjE4OCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYxOTMsIDc2MTk4LCA3NjIwMiwgNzYyMDYsIDc2MjEwLCA3NjIxNCwgCi0gICAgNzYyMTgsIDc2MjIyLCA3NjIyNywgNzYyMzEsIDc2MjM2LCA3NjI0MCwgNzYyNDQsIDc2MjQ4LCA3NjI1MywgNzYyNTcsIAotICAgIDc2MjYyLCA3NjI2NywgNzYyNzIsIDc2Mjc4LCA3NjI4NCwgNzYyOTEsIDc2Mjk2LCA3NjMwMSwgNzYzMDcsIDc2MzExLCAKLSAgICA3NjMxNiwgNzYzMTksIDc2MzIyLCA3NjMyNiwgMCwgMCwgNzYzMzEsIDc2MzM4LCA3NjM0NCwgNzYzNTAsIDc2MzU2LCAKLSAgICA3NjM2MiwgNzYzNjgsIDc2Mzc0LCA3NjM4MSwgNzYzODcsIDc2Mzk0LCA3NjQwMCwgNzY0MDcsIDc2NDE0LCA3NjQyMSwgCi0gICAgNzY0MjgsIDc2NDM1LCA3NjQ0MiwgNzY0NDksIDc2NDU2LCA3NjQ2MywgNzY0NzAsIDc2NDc2LCA3NjQ4MywgNzY0ODksIAotICAgIDc2NDk2LCA3NjUwMywgNzY1MTAsIDc2NTE2LCA3NjUyMywgNzY1MzAsIDc2NTM3LCA3NjU0MywgNzY1NTAsIDc2NTU3LCAKLSAgICA3NjU2MywgNzY1NzAsIDc2NTc2LCA3NjU4MywgNzY1OTAsIDc2NTk2LCA3NjYwMiwgNzY2MDksIDc2NjE1LCA3NjYyMiwgCi0gICAgNzY2MjksIDc2NjM4LCA3NjY0NSwgNzY2NTIsIDc2NjU2LCA3NjY2MSwgNzY2NjYsIDc2NjcxLCA3NjY3NiwgNzY2ODEsIAotICAgIDc2Njg1LCA3NjY5MCwgNzY2OTQsIDc2Njk5LCA3NjcwNCwgNzY3MDksIDc2NzE0LCA3NjcxOSwgNzY3MjQsIDc2NzI4LCAKLSAgICA3NjczMywgNzY3MzcsIDc2NzQyLCA3Njc0NywgNzY3NTIsIDc2NzU3LCA3Njc2MSwgNzY3NjYsIDc2NzcxLCA3Njc3NiwgCi0gICAgNzY3ODIsIDc2Nzg3LCA3Njc5MywgNzY3OTksIDc2ODA1LCA3NjgxMSwgNzY4MTcsIDc2ODIyLCA3NjgyOCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzY4MzIsIDc2ODM3LCA3Njg0MSwgNzY4NDUsIDc2ODQ5LCA3Njg1MywgNzY4NTcsIAotICAgIDc2ODYxLCA3Njg2NSwgNzY4NjksIDc2ODczLCA3Njg3NywgNzY4ODEsIDc2ODg1LCA3Njg4OSwgNzY4OTMsIDc2ODk3LCAKLSAgICA3NjkwMSwgNzY5MDUsIDc2OTA5LCA3NjkxMywgNzY5MTcsIDc2OTIxLCA3NjkyNSwgNzY5MjksIDc2OTMzLCA3NjkzNywgCi0gICAgNzY5NDEsIDc2OTQ1LCA3Njk0OSwgMCwgMCwgMCwgNzY5NTMsIDc2OTU3LCA3Njk2MSwgNzY5NjUsIDc2OTY5LCA3Njk3MiwgCi0gICAgNzY5NzgsIDc2OTgxLCA3Njk4NSwgNzY5ODgsIDc2OTk0LCA3NzAwMCwgNzcwMDgsIDc3MDExLCA3NzAxNSwgNzcwMTgsIAotICAgIDc3MDIxLCA3NzAyNywgNzcwMzMsIDc3MDM3LCA3NzA0MywgNzcwNDcsIDc3MDUxLCA3NzA1NywgNzcwNjEsIDc3MDY3LCAKLSAgICA3NzA3MywgNzcwNzcsIDc3MDgxLCA3NzA4NywgNzcwOTEsIDc3MDk3LCA3NzEwMywgNzcxMDcsIDc3MTEzLCA3NzExNywgCi0gICAgNzcxMjMsIDc3MTI3LCA3NzEzMCwgNzcxMzYsIDc3MTQwLCA3NzE0NiwgNzcxNDksIDc3MTUyLCA3NzE1NiwgNzcxNjIsIAotICAgIDc3MTY2LCA3NzE3MCwgNzcxNzYsIDc3MTgyLCA3NzE4NiwgNzcxODksIDc3MTk1LCA3NzIwMCwgNzcyMDUsIDc3MjEwLCAKLSAgICA3NzIxNywgNzcyMjIsIDc3MjI5LCA3NzIzNCwgNzcyNDEsIDc3MjQ2LCA3NzI1MSwgNzcyNTYsIDc3MjYxLCA3NzI2NCwgCi0gICAgNzcyNjgsIDc3MjcyLCA3NzI3NywgNzcyODIsIDc3Mjg3LCA3NzI5MiwgNzcyOTcsIDc3MzAyLCA3NzMwNywgNzczMTIsIAotICAgIDc3MzE5LCA3NzMyNCwgMCwgNzczMzEsIDc3MzM0LCA3NzMzOCwgNzczNDEsIDc3MzQ0LCA3NzM0NywgNzczNTAsIDc3MzUzLCAKLSAgICA3NzM1NiwgNzczNjAsIDc3MzYzLCAwLCAwLCAwLCAwLCA3NzM2NywgNzczNzQsIDc3Mzc5LCA3NzM4NSwgNzczOTEsIAotICAgIDc3Mzk3LCA3NzQwMywgNzc0MDksIDc3NDE1LCA3NzQyMiwgNzc0MjksIDc3NDM2LCA3NzQ0MywgNzc0NTAsIDc3NDU3LCAKLSAgICA3NzQ2NCwgNzc0NzEsIDc3NDc4LCA3NzQ4NSwgNzc0OTIsIDc3NDk4LCA3NzUwNCwgNzc1MTAsIDc3NTE2LCA3NzUyMiwgCi0gICAgNzc1MjgsIDc3NTM1LCA3NzU0MSwgNzc1NDgsIDc3NTU1LCA3NzU2MiwgNzc1NjksIDc3NTc2LCAwLCA3NzU4MywgNzc1ODcsIAotICAgIDc3NTkxLCA3NzU5NSwgNzc1OTksIDc3NjA0LCA3NzYwOCwgNzc2MTIsIDc3NjE3LCA3NzYyMiwgNzc2MjcsIDc3NjMyLCAKLSAgICA3NzYzNywgNzc2NDIsIDc3NjQ3LCA3NzY1MiwgNzc2NTcsIDc3NjYyLCA3NzY2NywgNzc2NzIsIDc3Njc3LCA3NzY4MiwgCi0gICAgNzc2ODcsIDc3NjkyLCA3NzY5NywgNzc3MDIsIDc3NzA3LCA3NzcxMSwgNzc3MTYsIDc3NzIxLCA3NzcyNiwgNzc3MzEsIAotICAgIDc3NzM2LCA3Nzc0MCwgNzc3NDUsIDc3NzQ5LCA3Nzc1NCwgNzc3NTksIDc3NzY0LCA3Nzc2OSwgNzc3NzQsIDc3Nzc4LCAKLSAgICA3Nzc4NCwgNzc3ODksIDc3Nzk1LCA3NzgwMSwgNzc4MDYsIDc3ODEyLCA3NzgxNywgNzc4MjMsIDc3ODI5LCA3NzgzNSwgCi0gICAgNzc4NDAsIDc3ODQ2LCA3Nzg1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzc4NTgsIDc3ODY0LCA3Nzg3MCwgCi0gICAgNzc4NzYsIDc3ODgzLCA3Nzg4OSwgNzc4OTUsIDc3OTAxLCA3NzkwNywgNzc5MTMsIDc3OTE4LCA3NzkyMywgNzc5MjksIAotICAgIDc3OTM2LCAwLCAwLCA3Nzk0MywgNzc5NDgsIDc3OTUyLCA3Nzk1NiwgNzc5NjAsIDc3OTY0LCA3Nzk2OCwgNzc5NzIsIAotICAgIDc3OTc3LCA3Nzk4MSwgMCwgMCwgNzc5ODYsIDc3OTkyLCA3Nzk5OCwgNzgwMDUsIDc4MDEzLCA3ODAxOSwgNzgwMjUsIAotICAgIDc4MDMxLCA3ODAzNywgNzgwNDMsIDc4MDQ5LCA3ODA1NSwgNzgwNjEsIDc4MDY3LCA3ODA3MywgNzgwNzksIDc4MDg1LCAKLSAgICA3ODA5MSwgNzgwOTYsIDc4MTAyLCA3ODEwOCwgNzgxMTUsIDc4MTIxLCA3ODEyNywgNzgxMzMsIDc4MTQwLCA3ODE0NywgCi0gICAgNzgxNTQsIDc4MTYwLCA3ODE2NSwgNzgxNzAsIDc4MTc2LCA3ODE4NCwgNzgxOTEsIDc4MTk4LCA3ODIwNiwgNzgyMTQsIAotICAgIDc4MjIxLCA3ODIyOCwgNzgyMzUsIDc4MjQyLCA3ODI0OSwgNzgyNTYsIDc4MjYzLCA3ODI3MCwgNzgyNzcsIDc4Mjg0LCAKLSAgICA3ODI5MSwgNzgyOTgsIDc4MzA1LCA3ODMxMiwgNzgzMTksIDc4MzI2LCA3ODMzMywgNzgzNDAsIDc4MzQ3LCA3ODM1NCwgCi0gICAgNzgzNjAsIDc4MzY2LCA3ODM3MywgNzgzODAsIDc4Mzg3LCA3ODM5NCwgNzg0MDEsIDc4NDA4LCA3ODQxNSwgNzg0MjIsIAotICAgIDc4NDI5LCA3ODQzNiwgNzg0NDMsIDc4NDUwLCA3ODQ1NywgNzg0NjQsIDc4NDcxLCA3ODQ3OCwgNzg0ODUsIDc4NDkyLCAKLSAgICA3ODQ5OSwgNzg1MDYsIDc4NTEzLCA3ODUyMCwgNzg1MjcsIDc4NTM0LCA3ODU0MCwgNzg1NDYsIDc4NTUzLCA3ODU1OSwgCi0gICAgNzg1NjQsIDc4NTcwLCA3ODU3NSwgNzg1ODAsIDc4NTg1LCA3ODU5MiwgNzg1OTgsIDc4NjA0LCA3ODYxMCwgNzg2MTYsIAotICAgIDc4NjIyLCA3ODYyOCwgNzg2MzQsIDc4NjQyLCA3ODY1MCwgNzg2NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4NjY2LCA3ODY3MiwgNzg2NzgsIDc4Njg0LCAKLSAgICA3ODY5MiwgNzg3MDAsIDc4NzA2LCA3ODcxMiwgNzg3MTksIDc4NzI2LCA3ODczMywgNzg3NDAsIDc4NzQ3LCA3ODc1NCwgCi0gICAgNzg3NjEsIDc4NzY4LCA3ODc3NSwgNzg3ODMsIDc4NzkxLCA3ODc5OSwgNzg4MDcsIDc4ODE1LCA3ODgyMSwgNzg4MjksIAotICAgIDc4ODM1LCA3ODg0MywgNzg4NTIsIDc4ODYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODg2NiwgNzg4NzAsIAotICAgIDc4ODc0LCA3ODg3OCwgNzg4ODIsIDc4ODg2LCAwLCAwLCA3ODg5MCwgNzg4OTQsIDc4ODk4LCA3ODkwMiwgNzg5MDYsIAotICAgIDc4OTEwLCAwLCAwLCA3ODkxNCwgNzg5MTgsIDc4OTIyLCA3ODkyNiwgNzg5MzAsIDc4OTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3ODkzOCwgNzg5NDIsIDc4OTQ2LCA3ODk1MCwgNzg5NTQsIDc4OTU4LCA3ODk2MiwgMCwgNzg5NjYsIAotICAgIDc4OTcwLCA3ODk3NCwgNzg5NzgsIDc4OTgyLCA3ODk4NiwgNzg5OTAsIDAsIDc4OTk0LCA3OTAwMSwgNzkwMDcsIDc5MDEzLCAKLSAgICA3OTAxOSwgNzkwMjYsIDc5MDMzLCA3OTA0MiwgNzkwNTMsIDc5MDYzLCA3OTA3MiwgNzkwODAsIDc5MDg4LCA3OTA5NiwgCi0gICAgNzkxMDIsIDc5MTEwLCA3OTExNywgNzkxMjQsIDc5MTMzLCA3OTE0NCwgNzkxNTIsIDc5MTYyLCA3OTE2OCwgNzkxNzgsIAotICAgIDc5MTg3LCA3OTE5MiwgNzkyMDAsIDc5MjA5LCA3OTIxNCwgNzkyMjMsIDc5MjMwLCA3OTI0MCwgNzkyNTIsIDc5MjU3LCAKLSAgICA3OTI2NCwgNzkyNzEsIDc5Mjc2LCA3OTI4NiwgNzkyOTYsIDc5MzA2LCA3OTMxNiwgNzkzMzEsIDc5MzQ0LCA3OTM1NSwgCi0gICAgNzkzNjMsIDc5MzY4LCA3OTM3OSwgNzkzODgsIDc5Mzk1LCA3OTQwMiwgNzk0MDgsIDc5NDE0LCA3OTQxOSwgNzk0MjYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5NDMyLCA3OTQzNiwgNzk0NDAsIDc5NDQ0LCA3OTQ0OCwgNzk0NTIsIAotICAgIDc5NDU3LCA3OTQ2MiwgNzk0NjYsIDc5NDcxLCA3OTQ3NiwgNzk0ODEsIDc5NDg2LCA3OTQ5MSwgNzk0OTUsIDc5NTAwLCAKLSAgICA3OTUwNSwgNzk1MTAsIDc5NTE1LCA3OTUyMCwgNzk1MjUsIDc5NTMwLCA3OTUzNSwgNzk1NDAsIDc5NTQ1LCA3OTU1MCwgCi0gICAgNzk1NTQsIDc5NTU5LCA3OTU2NCwgNzk1NjksIDc5NTc0LCA3OTU3OSwgNzk1ODQsIDc5NTg5LCA3OTU5NCwgNzk1OTksIAotICAgIDc5NjA0LCA3OTYwOSwgNzk2MTQsIDc5NjE5LCA3OTYyNCwgNzk2MjksIDc5NjM0LCA3OTYzOSwgNzk2NDQsIDc5NjQ5LCAKLSAgICA3OTY1MywgNzk2NTgsIDc5NjYzLCA3OTY2OCwgNzk2NzMsIDc5Njc4LCA3OTY4MywgNzk2ODgsIDc5NjkzLCA3OTY5OCwgCi0gICAgNzk3MDMsIDc5NzA4LCA3OTcxMywgNzk3MTgsIDc5NzIzLCA3OTcyOCwgNzk3MzMsIDc5NzM4LCA3OTc0MywgNzk3NDgsIAotICAgIDc5NzUzLCA3OTc1OCwgNzk3NjMsIDc5NzY4LCA3OTc3MywgNzk3NzgsIDc5NzgzLCA3OTc4OCwgNzk3OTMsIDc5Nzk4LCAKLSAgICA3OTgwMywgNzk4MDgsIDc5ODEzLCA3OTgxOCwgNzk4MjIsIDc5ODI5LCA3OTgzNiwgNzk4NDMsIDc5ODUwLCA3OTg1NiwgCi0gICAgNzk4NjMsIDc5ODcwLCA3OTg3NywgNzk4ODQsIDc5ODkxLCA3OTg5OCwgNzk5MDUsIDc5OTEyLCA3OTkxOSwgNzk5MjYsIAotICAgIDc5OTMyLCA3OTkzOSwgNzk5NDYsIDc5OTUzLCA3OTk2MCwgNzk5NjcsIDc5OTc0LCA3OTk4MSwgNzk5ODgsIDc5OTk1LCAKLSAgICA4MDAwMiwgODAwMDksIDgwMDE4LCA4MDAyNywgODAwMzYsIDgwMDQ1LCA4MDA1NCwgODAwNjMsIDgwMDcyLCA4MDA4MSwgCi0gICAgODAwODksIDgwMDk3LCA4MDEwNSwgODAxMTMsIDgwMTIxLCA4MDEyOSwgODAxMzcsIDgwMTQ1LCA4MDE1MSwgODAxNTksIDAsIAotICAgIDAsIDgwMTY3LCA4MDE3NCwgODAxODAsIDgwMTg2LCA4MDE5MiwgODAxOTgsIDgwMjA0LCA4MDIxMCwgODAyMTcsIDgwMjIzLCAKKyAgICAwLCAwLCA3NTc5OCwgNzU4MDUsIDc1ODEyLCA3NTgxOCwgNzU4MjYsIDc1ODM0LCA3NTg0MiwgNzU4NTAsIDc1ODU4LCAKKyAgICA3NTg2NiwgNzU4NzIsIDc1ODc4LCA3NTg4NSwgNzU4OTEsIDc1ODk3LCA3NTkwMywgNzU5MTAsIDc1OTE3LCA3NTkyNCwgCisgICAgNzU5MzEsIDc1OTM4LCA3NTk0NSwgNzU5NTIsIDc1OTU5LCA3NTk2NiwgNzU5NzMsIDc1OTgwLCA3NTk4NywgNzU5OTQsIAorICAgIDc2MDAxLCA3NjAwNywgNzYwMTQsIDc2MDIxLCA3NjAyOCwgNzYwMzUsIDc2MDQyLCA3NjA0OSwgNzYwNTYsIDc2MDYzLCAKKyAgICA3NjA3MCwgNzYwNzcsIDc2MDg0LCA3NjA5MSwgNzYwOTgsIDc2MTA1LCA3NjExMiwgNzYxMTksIDc2MTI2LCA3NjEzMywgCisgICAgNzYxNDEsIDc2MTQ5LCA3NjE1NywgNzYxNjUsIDAsIDAsIDAsIDAsIDc2MTczLCA3NjE4MSwgNzYxODksIDc2MTk3LCAKKyAgICA3NjIwNSwgNzYyMTMsIDc2MjIxLCA3NjIyNywgNzYyMzMsIDc2MjM5LCAwLCAwLCAwLCAwLCAwLCAwLCA3NjI0NSwgNzYyNDksIAorICAgIDc2MjU0LCA3NjI1OSwgNzYyNjQsIDc2MjY5LCA3NjI3NCwgNzYyNzksIDc2Mjg0LCA3NjI4OSwgNzYyOTQsIDc2Mjk5LCAKKyAgICA3NjMwMywgNzYzMDcsIDc2MzEyLCA3NjMxNywgNzYzMjEsIDc2MzI2LCA3NjMzMSwgNzYzMzYsIDc2MzQxLCA3NjM0NiwgCisgICAgNzYzNTEsIDc2MzU2LCA3NjM2MCwgNzYzNjUsIDc2MzY5LCA3NjM3NCwgNzYzNzksIDc2MzgzLCA3NjM4NywgNzYzOTEsIAorICAgIDc2Mzk1LCA3NjM5OSwgNzY0MDMsIDc2NDA4LCA3NjQxMywgNzY0MTgsIDc2NDIzLCA3NjQyOCwgNzY0MzUsIDc2NDQxLCAKKyAgICA3NjQ0NiwgNzY0NTEsIDc2NDU2LCA3NjQ2MSwgNzY0NjcsIDc2NDc0LCA3NjQ4MCwgNzY0ODcsIDc2NDk0LCA3NjUwMSwgCisgICAgNzY1MDYsIDc2NTEzLCA3NjUxOSwgNzY1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc2NTMwLCA3NjUzNSwgNzY1NDAsIAorICAgIDc2NTQ0LCA3NjU0OSwgNzY1NTMsIDc2NTU4LCA3NjU2MiwgNzY1NjcsIDc2NTcyLCA3NjU3OCwgNzY1ODMsIDc2NTg5LCAKKyAgICA3NjU5MywgNzY1OTgsIDc2NjAzLCA3NjYwNywgNzY2MTIsIDc2NjE3LCA3NjYyMSwgNzY2MjYsIDc2NjMxLCA3NjYzNiwgCisgICAgNzY2NDEsIDc2NjQ2LCA3NjY1MSwgNzY2NTYsIDc2NjYxLCA3NjY2NiwgNzY2NzEsIDc2Njc2LCA3NjY4MSwgNzY2ODYsIAorICAgIDc2NjkxLCA3NjY5NiwgNzY3MDEsIDc2NzA2LCA3NjcxMSwgNzY3MTUsIDc2NzE5LCA3NjcyNCwgNzY3MjksIDc2NzM0LCAKKyAgICA3NjczOCwgNzY3NDIsIDc2NzQ3LCA3Njc1MSwgNzY3NTYsIDc2NzYxLCA3Njc2NiwgNzY3NzEsIDc2Nzc1LCA3Njc4MCwgCisgICAgNzY3ODYsIDc2NzkyLCA3Njc5NywgNzY4MDMsIDc2ODA4LCA3NjgxNCwgNzY4MjAsIDc2ODI3LCA3NjgzMywgNzY4NDAsIAorICAgIDc2ODQ1LCA3Njg1MSwgNzY4NTcsIDc2ODYyLCA3Njg2OCwgNzY4NzQsIDc2ODc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3Njg4NCwgNzY4ODgsIDc2ODkzLCA3Njg5OCwgNzY5MDIsIDc2OTA2LCA3NjkxMCwgNzY5MTQsIDc2OTE4LCA3NjkyMiwgCisgICAgNzY5MjcsIDc2OTMxLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjkzNiwgNzY5NDEsIDc2OTQ1LCA3Njk0OSwgNzY5NTMsIDc2OTU3LCAKKyAgICA3Njk2MSwgNzY5NjUsIDc2OTcwLCA3Njk3NCwgNzY5NzksIDc2OTgzLCA3Njk4NywgNzY5OTEsIDc2OTk1LCA3Njk5OSwgCisgICAgNzcwMDQsIDc3MDA5LCA3NzAxNCwgNzcwMjAsIDc3MDI2LCA3NzAzMywgNzcwMzgsIDc3MDQzLCA3NzA0OSwgNzcwNTMsIAorICAgIDc3MDU4LCA3NzA2MSwgNzcwNjQsIDc3MDY4LCAwLCAwLCA3NzA3MywgNzcwODAsIDc3MDg2LCA3NzA5MiwgNzcwOTgsIAorICAgIDc3MTA0LCA3NzExMCwgNzcxMTYsIDc3MTIzLCA3NzEyOSwgNzcxMzYsIDc3MTQyLCA3NzE0OSwgNzcxNTYsIDc3MTYzLCAKKyAgICA3NzE3MCwgNzcxNzcsIDc3MTg0LCA3NzE5MSwgNzcxOTgsIDc3MjA1LCA3NzIxMSwgNzcyMTcsIDc3MjI0LCA3NzIzMCwgCisgICAgNzcyMzcsIDc3MjQ0LCA3NzI1MSwgNzcyNTcsIDc3MjYzLCA3NzI3MCwgNzcyNzcsIDc3MjgzLCA3NzI5MCwgNzcyOTcsIAorICAgIDc3MzAzLCA3NzMxMCwgNzczMTYsIDc3MzIzLCA3NzMzMCwgNzczMzYsIDc3MzQyLCA3NzM0OSwgNzczNTUsIDc3MzYyLCAKKyAgICA3NzM2OSwgNzczNzgsIDc3Mzg1LCA3NzM5MiwgNzczOTYsIDc3NDAxLCA3NzQwNiwgNzc0MTEsIDc3NDE2LCA3NzQyMCwgCisgICAgNzc0MjQsIDc3NDI5LCA3NzQzMywgNzc0MzgsIDc3NDQzLCA3NzQ0OCwgNzc0NTMsIDc3NDU4LCA3NzQ2MiwgNzc0NjYsIAorICAgIDc3NDcxLCA3NzQ3NSwgNzc0ODAsIDc3NDg1LCA3NzQ5MCwgNzc0OTUsIDc3NDk5LCA3NzUwNCwgNzc1MDksIDc3NTE0LCAKKyAgICA3NzUyMCwgNzc1MjUsIDc3NTMxLCA3NzUzNywgNzc1NDMsIDc3NTQ5LCA3NzU1NSwgNzc1NjAsIDc3NTY2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzU3MCwgNzc1NzUsIDc3NTc5LCA3NzU4MywgNzc1ODcsIDc3NTkxLCA3NzU5NSwgCisgICAgNzc1OTksIDc3NjAzLCA3NzYwNywgNzc2MTEsIDc3NjE1LCA3NzYxOSwgNzc2MjMsIDc3NjI3LCA3NzYzMSwgNzc2MzUsIAorICAgIDc3NjM5LCA3NzY0MywgNzc2NDcsIDc3NjUxLCA3NzY1NSwgNzc2NTksIDc3NjYzLCA3NzY2NywgNzc2NzEsIDc3Njc1LCAKKyAgICA3NzY3OSwgNzc2ODMsIDc3Njg3LCAwLCAwLCAwLCA3NzY5MSwgNzc2OTYsIDc3NzAxLCA3NzcwNiwgNzc3MTEsIDc3NzE1LCAKKyAgICA3NzcyMiwgNzc3MjYsIDc3NzMxLCA3NzczNSwgNzc3NDIsIDc3NzQ5LCA3Nzc1OCwgNzc3NjIsIDc3NzY3LCA3Nzc3MSwgCisgICAgNzc3NzUsIDc3NzgyLCA3Nzc4OSwgNzc3OTQsIDc3ODAxLCA3NzgwNiwgNzc4MTEsIDc3ODE4LCA3NzgyMywgNzc4MzAsIAorICAgIDc3ODM3LCA3Nzg0MiwgNzc4NDcsIDc3ODU0LCA3Nzg1OSwgNzc4NjYsIDc3ODczLCA3Nzg3OCwgNzc4ODUsIDc3ODkwLCAKKyAgICA3Nzg5NywgNzc5MDEsIDc3OTA1LCA3NzkxMiwgNzc5MTcsIDc3OTI0LCA3NzkyOCwgNzc5MzIsIDc3OTM3LCA3Nzk0NCwgCisgICAgNzc5NDgsIDc3OTUzLCA3Nzk2MCwgNzc5NjcsIDc3OTcyLCA3Nzk3NiwgNzc5ODMsIDc3OTg5LCA3Nzk5NSwgNzgwMDEsIAorICAgIDc4MDA5LCA3ODAxNSwgNzgwMjMsIDc4MDI5LCA3ODAzNywgNzgwNDMsIDc4MDQ5LCA3ODA1NSwgNzgwNjEsIDc4MDY1LCAKKyAgICA3ODA3MCwgNzgwNzUsIDc4MDgxLCA3ODA4NywgNzgwOTMsIDc4MDk5LCA3ODEwNSwgNzgxMTEsIDc4MTE3LCA3ODEyMywgCisgICAgNzgxMzEsIDc4MTM3LCAwLCA3ODE0NSwgNzgxNDksIDc4MTU0LCA3ODE1OCwgNzgxNjIsIDc4MTY2LCA3ODE3MCwgNzgxNzQsIAorICAgIDc4MTc4LCA3ODE4MywgNzgxODcsIDAsIDAsIDAsIDAsIDc4MTkyLCA3ODIwMCwgNzgyMDYsIDc4MjEyLCA3ODIxOCwgCisgICAgNzgyMjQsIDc4MjMwLCA3ODIzNiwgNzgyNDIsIDc4MjQ5LCA3ODI1NiwgNzgyNjMsIDc4MjcwLCA3ODI3NywgNzgyODQsIAorICAgIDc4MjkxLCA3ODI5OCwgNzgzMDUsIDc4MzEyLCA3ODMxOSwgNzgzMjUsIDc4MzMxLCA3ODMzNywgNzgzNDMsIDc4MzQ5LCAKKyAgICA3ODM1NSwgNzgzNjIsIDc4MzY4LCA3ODM3NSwgNzgzODIsIDc4Mzg5LCA3ODM5NiwgNzg0MDMsIDAsIDc4NDEwLCA3ODQxNCwgCisgICAgNzg0MTgsIDc4NDIyLCA3ODQyNiwgNzg0MzEsIDc4NDM1LCA3ODQzOSwgNzg0NDQsIDc4NDQ5LCA3ODQ1NCwgNzg0NTksIAorICAgIDc4NDY0LCA3ODQ2OSwgNzg0NzQsIDc4NDc5LCA3ODQ4NCwgNzg0ODksIDc4NDk0LCA3ODQ5OSwgNzg1MDQsIDc4NTA5LCAKKyAgICA3ODUxNCwgNzg1MTksIDc4NTI0LCA3ODUyOCwgNzg1MzMsIDc4NTM3LCA3ODU0MiwgNzg1NDcsIDc4NTUyLCA3ODU1NywgCisgICAgNzg1NjIsIDc4NTY2LCA3ODU3MSwgNzg1NzUsIDc4NTgwLCA3ODU4NCwgNzg1ODksIDc4NTk0LCA3ODU5OSwgNzg2MDMsIAorICAgIDc4NjA5LCA3ODYxNCwgNzg2MjAsIDc4NjI2LCA3ODYzMSwgNzg2MzcsIDc4NjQyLCA3ODY0OCwgNzg2NTQsIDc4NjYwLCAKKyAgICA3ODY2NSwgNzg2NzEsIDc4Njc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODY4MiwgNzg2ODgsIDc4Njk0LCAKKyAgICA3ODcwMCwgNzg3MDcsIDc4NzEzLCA3ODcxOSwgNzg3MjUsIDc4NzMxLCA3ODczNywgNzg3NDIsIDc4NzQ3LCA3ODc1MywgCisgICAgNzg3NjAsIDAsIDAsIDc4NzY3LCA3ODc3MiwgNzg3NzYsIDc4NzgwLCA3ODc4NCwgNzg3ODgsIDc4NzkyLCA3ODc5NiwgCisgICAgNzg4MDEsIDc4ODA1LCAwLCAwLCA3ODgxMCwgNzg4MTYsIDc4ODIyLCA3ODgyOSwgNzg4MzcsIDc4ODQzLCA3ODg0OSwgCisgICAgNzg4NTUsIDc4ODYxLCA3ODg2NywgNzg4NzMsIDc4ODc5LCA3ODg4NSwgNzg4OTEsIDc4ODk3LCA3ODkwMywgNzg5MDgsIAorICAgIDc4OTE0LCA3ODkxOSwgNzg5MjUsIDc4OTMxLCA3ODkzOCwgNzg5NDQsIDc4OTUwLCA3ODk1NiwgNzg5NjMsIDc4OTcwLCAKKyAgICA3ODk3NywgNzg5ODMsIDc4OTg4LCA3ODk5MywgNzg5OTksIDc5MDA3LCA3OTAxNCwgNzkwMjEsIDc5MDI5LCA3OTAzNywgCisgICAgNzkwNDQsIDc5MDUxLCA3OTA1OCwgNzkwNjUsIDc5MDcyLCA3OTA3OSwgNzkwODYsIDc5MDkzLCA3OTEwMCwgNzkxMDcsIAorICAgIDc5MTE0LCA3OTEyMSwgNzkxMjgsIDc5MTM1LCA3OTE0MiwgNzkxNDksIDc5MTU2LCA3OTE2MywgNzkxNzAsIDc5MTc3LCAKKyAgICA3OTE4MywgNzkxODksIDc5MTk2LCA3OTIwMywgNzkyMTAsIDc5MjE3LCA3OTIyNCwgNzkyMzEsIDc5MjM4LCA3OTI0NSwgCisgICAgNzkyNTIsIDc5MjU5LCA3OTI2NiwgNzkyNzMsIDc5MjgwLCA3OTI4NywgNzkyOTQsIDc5MzAxLCA3OTMwOCwgNzkzMTUsIAorICAgIDc5MzIyLCA3OTMyOSwgNzkzMzYsIDc5MzQzLCA3OTM1MCwgNzkzNTcsIDc5MzYzLCA3OTM2OSwgNzkzNzYsIDc5MzgyLCAKKyAgICA3OTM4NywgNzkzOTMsIDc5Mzk4LCA3OTQwMywgNzk0MDgsIDc5NDE1LCA3OTQyMSwgNzk0MjcsIDc5NDMzLCA3OTQzOSwgCisgICAgNzk0NDUsIDc5NDUxLCA3OTQ1NywgNzk0NjUsIDc5NDczLCA3OTQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk0ODksIDc5NDk1LCA3OTUwMSwgNzk1MDcsIAorICAgIDc5NTE1LCA3OTUyMywgNzk1MjksIDc5NTM1LCA3OTU0MiwgNzk1NDksIDc5NTU2LCA3OTU2MywgNzk1NzAsIDc5NTc3LCAKKyAgICA3OTU4NCwgNzk1OTEsIDc5NTk4LCA3OTYwNiwgNzk2MTQsIDc5NjIyLCA3OTYzMCwgNzk2MzgsIDc5NjQ0LCA3OTY1MiwgCisgICAgNzk2NTgsIDc5NjY2LCA3OTY3NSwgNzk2ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5Njg5LCA3OTY5MywgCisgICAgNzk2OTcsIDc5NzAxLCA3OTcwNSwgNzk3MDksIDAsIDAsIDc5NzEzLCA3OTcxNywgNzk3MjEsIDc5NzI1LCA3OTcyOSwgCisgICAgNzk3MzMsIDAsIDAsIDc5NzM3LCA3OTc0MSwgNzk3NDUsIDc5NzQ5LCA3OTc1MywgNzk3NTcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDc5NzYxLCA3OTc2NSwgNzk3NjksIDc5NzczLCA3OTc3NywgNzk3ODEsIDc5Nzg1LCAwLCA3OTc4OSwgCisgICAgNzk3OTMsIDc5Nzk3LCA3OTgwMSwgNzk4MDUsIDc5ODA5LCA3OTgxMywgMCwgNzk4MTcsIDc5ODI0LCA3OTgzMCwgNzk4MzYsIAorICAgIDc5ODQyLCA3OTg0OSwgNzk4NTYsIDc5ODY1LCA3OTg3NywgNzk4ODcsIDc5ODk2LCA3OTkwNCwgNzk5MTIsIDc5OTIwLCAKKyAgICA3OTkyNiwgNzk5MzQsIDc5OTQxLCA3OTk0OCwgNzk5NTcsIDc5OTY4LCA3OTk3NiwgNzk5ODYsIDc5OTkyLCA4MDAwMiwgCisgICAgODAwMTEsIDgwMDE2LCA4MDAyNCwgODAwMzMsIDgwMDM4LCA4MDA0NywgODAwNTQsIDgwMDY0LCA4MDA3NiwgODAwODEsIAorICAgIDgwMDg4LCA4MDA5NSwgODAxMDAsIDgwMTEwLCA4MDEyMCwgODAxMzAsIDgwMTQwLCA4MDE1NSwgODAxNjgsIDgwMTc5LCAKKyAgICA4MDE4NywgODAxOTIsIDgwMjA0LCA4MDIxMywgODAyMjAsIDgwMjI3LCA4MDIzMywgODAyMzksIDgwMjQ0LCA4MDI1MSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAyNTcsIDgwMjYxLCA4MDI2NSwgODAyNjksIDgwMjczLCA4MDI3NywgCisgICAgODAyODIsIDgwMjg3LCA4MDI5MSwgODAyOTYsIDgwMzAxLCA4MDMwNiwgODAzMTEsIDgwMzE2LCA4MDMyMCwgODAzMjUsIAorICAgIDgwMzMwLCA4MDMzNSwgODAzNDAsIDgwMzQ1LCA4MDM0OSwgODAzNTQsIDgwMzU5LCA4MDM2NCwgODAzNjksIDgwMzc0LCAKKyAgICA4MDM3OCwgODAzODMsIDgwMzg4LCA4MDM5MywgODAzOTgsIDgwNDAyLCA4MDQwNywgODA0MTIsIDgwNDE3LCA4MDQyMiwgCisgICAgODA0MjcsIDgwNDMyLCA4MDQzNywgODA0NDIsIDgwNDQ3LCA4MDQ1MiwgODA0NTcsIDgwNDYyLCA4MDQ2NywgODA0NzIsIAorICAgIDgwNDc3LCA4MDQ4MiwgODA0ODcsIDgwNDkyLCA4MDQ5NywgODA1MDIsIDgwNTA3LCA4MDUxMiwgODA1MTcsIDgwNTIyLCAKKyAgICA4MDUyNywgODA1MzIsIDgwNTM3LCA4MDU0MiwgODA1NDcsIDgwNTUyLCA4MDU1NywgODA1NjIsIDgwNTY3LCA4MDU3MiwgCisgICAgODA1NzcsIDgwNTgyLCA4MDU4NywgODA1OTIsIDgwNTk3LCA4MDYwMiwgODA2MDcsIDgwNjEyLCA4MDYxNywgODA2MjIsIAorICAgIDgwNjI3LCA4MDYzMiwgODA2MzcsIDgwNjQyLCA4MDY0NiwgODA2NTMsIDgwNjYwLCA4MDY2NywgODA2NzQsIDgwNjgwLCAKKyAgICA4MDY4NiwgODA2OTMsIDgwNzAwLCA4MDcwNywgODA3MTQsIDgwNzIxLCA4MDcyOCwgODA3MzUsIDgwNzQyLCA4MDc0OSwgCisgICAgODA3NTUsIDgwNzYyLCA4MDc2OSwgODA3NzYsIDgwNzgzLCA4MDc5MCwgODA3OTcsIDgwODA0LCA4MDgxMSwgODA4MTgsIAorICAgIDgwODI1LCA4MDgzMiwgODA4NDEsIDgwODUwLCA4MDg1OSwgODA4NjgsIDgwODc3LCA4MDg4NiwgODA4OTUsIDgwOTA0LCAKKyAgICA4MDkxMiwgODA5MjAsIDgwOTI4LCA4MDkzNiwgODA5NDQsIDgwOTUyLCA4MDk2MCwgODA5NjgsIDgwOTc0LCA4MDk4MiwgMCwgCisgICAgMCwgODA5OTAsIDgwOTk3LCA4MTAwMywgODEwMDksIDgxMDE1LCA4MTAyMSwgODEwMjcsIDgxMDMzLCA4MTA0MCwgODEwNDYsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTgzMDAsNjE4ICsxOTQxOSw2MzQgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDIzMCwgODAyMzQsIDgwMjM4LCA4MDI0MiwgCi0gICAgODAyNDYsIDgwMjUwLCA4MDI1NCwgODAyNTgsIDgwMjYyLCA4MDI2NiwgODAyNzAsIDgwMjc0LCA4MDI3OCwgODAyODIsIAotICAgIDgwMjg2LCA4MDI5MCwgODAyOTQsIDgwMjk4LCA4MDMwMiwgODAzMDYsIDgwMzEwLCA4MDMxNCwgODAzMTgsIDAsIDAsIDAsIAotICAgIDAsIDgwMzIyLCA4MDMyNiwgODAzMzAsIDgwMzM0LCA4MDMzOCwgODAzNDIsIDgwMzQ2LCA4MDM1MCwgODAzNTQsIDgwMzU4LCAKLSAgICA4MDM2MiwgODAzNjYsIDgwMzcwLCA4MDM3NCwgODAzNzgsIDgwMzgyLCA4MDM4NiwgODAzOTAsIDgwMzk0LCA4MDM5OCwgCi0gICAgODA0MDIsIDgwNDA2LCA4MDQxMCwgODA0MTQsIDgwNDE4LCA4MDQyMiwgODA0MjYsIDgwNDMwLCA4MDQzNCwgODA0MzgsIAotICAgIDgwNDQyLCA4MDQ0NiwgODA0NTAsIDgwNDU0LCA4MDQ1OCwgODA0NjIsIDgwNDY2LCA4MDQ3MCwgODA0NzQsIDgwNDc4LCAKLSAgICA4MDQ4MiwgODA0ODYsIDgwNDkwLCA4MDQ5NCwgODA0OTgsIDgwNTAyLCA4MDUwNiwgODA1MTAsIDgwNTE0LCAwLCAwLCAwLCAKLSAgICAwLCA4MDUxOCwgODA1MjIsIDgwNTI2LCA4MDUzMCwgODA1MzQsIDgwNTM4LCA4MDU0MiwgODA1NDYsIDgwNTUwLCA4MDU1NCwgCi0gICAgODA1NTgsIDgwNTYyLCA4MDU2NiwgODA1NzAsIDgwNTc0LCA4MDU3OCwgODA1ODIsIDgwNTg2LCA4MDU5MCwgODA1OTQsIAotICAgIDgwNTk4LCA4MDYwMiwgODA2MDYsIDgwNjEwLCA4MDYxNCwgODA2MTgsIDgwNjIyLCA4MDYyNiwgODA2MzAsIDgwNjM0LCAKLSAgICA4MDYzOCwgODA2NDIsIDgwNjQ2LCA4MDY1MCwgODA2NTQsIDgwNjU4LCA4MDY2MiwgODA2NjYsIDgwNjcwLCA4MDY3NCwgCi0gICAgODA2NzgsIDgwNjgyLCA4MDY4NiwgODA2OTAsIDgwNjk0LCA4MDY5OCwgODA3MDIsIDgwNzA2LCA4MDcxMCwgODA3MTQsIAotICAgIDgwNzE4LCA4MDcyMiwgODA3MjYsIDgwNzMwLCA4MDczNCwgODA3MzgsIDgwNzQyLCA4MDc0NiwgODA3NTAsIDgwNzU0LCAKLSAgICA4MDc1OCwgODA3NjIsIDgwNzY2LCA4MDc3MCwgODA3NzQsIDgwNzc4LCA4MDc4MiwgODA3ODYsIDgwNzkwLCA4MDc5NCwgCi0gICAgODA3OTgsIDgwODAyLCA4MDgwNiwgODA4MTAsIDgwODE0LCA4MDgxOCwgODA4MjIsIDgwODI2LCA4MDgzMCwgODA4MzQsIAotICAgIDgwODM4LCA4MDg0MiwgODA4NDYsIDgwODUwLCA4MDg1NCwgODA4NTgsIDgwODYyLCA4MDg2NiwgODA4NzAsIDgwODc0LCAKLSAgICA4MDg3OCwgODA4ODIsIDgwODg2LCA4MDg5MCwgODA4OTQsIDgwODk4LCA4MDkwMiwgODA5MDYsIDgwOTEwLCA4MDkxNCwgCi0gICAgODA5MTgsIDgwOTIyLCA4MDkyNiwgODA5MzAsIDgwOTM0LCA4MDkzOCwgODA5NDIsIDgwOTQ2LCA4MDk1MCwgODA5NTQsIAotICAgIDgwOTU4LCA4MDk2MiwgODA5NjYsIDgwOTcwLCA4MDk3NCwgODA5NzgsIDgwOTgyLCA4MDk4NiwgODA5OTAsIDgwOTk0LCAKLSAgICA4MDk5OCwgODEwMDIsIDgxMDA2LCA4MTAxMCwgODEwMTQsIDgxMDE4LCA4MTAyMiwgODEwMjYsIDgxMDMwLCA4MTAzNCwgCi0gICAgODEwMzgsIDgxMDQyLCA4MTA0NiwgODEwNTAsIDgxMDU0LCA4MTA1OCwgODEwNjIsIDgxMDY2LCA4MTA3MCwgODEwNzQsIAotICAgIDgxMDc4LCA4MTA4MiwgODEwODYsIDgxMDkwLCA4MTA5NCwgODEwOTgsIDgxMTAyLCA4MTEwNiwgODExMTAsIDgxMTE0LCAKLSAgICA4MTExOCwgODExMjIsIDgxMTI2LCA4MTEzMCwgODExMzQsIDgxMTM4LCA4MTE0MiwgODExNDYsIDgxMTUwLCA4MTE1NCwgCi0gICAgODExNTgsIDgxMTYyLCA4MTE2NiwgODExNzAsIDgxMTc0LCA4MTE3OCwgODExODIsIDgxMTg2LCA4MTE5MCwgODExOTQsIAotICAgIDgxMTk4LCA4MTIwMiwgODEyMDYsIDgxMjEwLCA4MTIxNCwgODEyMTgsIDgxMjIyLCA4MTIyNiwgODEyMzAsIDgxMjM0LCAKLSAgICA4MTIzOCwgODEyNDIsIDgxMjQ2LCA4MTI1MCwgODEyNTQsIDgxMjU4LCA4MTI2MiwgODEyNjYsIDgxMjcwLCA4MTI3NCwgCi0gICAgODEyNzgsIDgxMjgyLCA4MTI4NiwgODEyOTAsIDgxMjk0LCA4MTI5OCwgODEzMDIsIDgxMzA2LCA4MTMxMCwgODEzMTQsIAotICAgIDgxMzE4LCA4MTMyMiwgODEzMjYsIDgxMzMwLCA4MTMzNCwgODEzMzgsIDgxMzQyLCA4MTM0NiwgODEzNTAsIDgxMzU0LCAKLSAgICA4MTM1OCwgODEzNjIsIDgxMzY2LCA4MTM3MCwgODEzNzQsIDgxMzc4LCA4MTM4MiwgODEzODYsIDgxMzkwLCA4MTM5NCwgCi0gICAgODEzOTgsIDgxNDAyLCA4MTQwNiwgODE0MTAsIDgxNDE0LCA4MTQxOCwgODE0MjIsIDgxNDI2LCA4MTQzMCwgODE0MzQsIAotICAgIDgxNDM4LCA4MTQ0MiwgODE0NDYsIDgxNDUwLCA4MTQ1NCwgODE0NTgsIDgxNDYyLCA4MTQ2NiwgODE0NzAsIDgxNDc0LCAKLSAgICA4MTQ3OCwgODE0ODIsIDgxNDg2LCA4MTQ5MCwgODE0OTQsIDgxNDk4LCA4MTUwMiwgODE1MDYsIDgxNTEwLCA4MTUxNCwgCi0gICAgODE1MTgsIDgxNTIyLCA4MTUyNiwgODE1MzAsIDgxNTM0LCA4MTUzOCwgODE1NDIsIDgxNTQ2LCA4MTU1MCwgODE1NTQsIAotICAgIDgxNTU4LCA4MTU2MiwgODE1NjYsIDgxNTcwLCA4MTU3NCwgODE1NzgsIDgxNTgyLCA4MTU4NiwgODE1OTAsIDgxNTk0LCAKLSAgICA4MTU5OCwgODE2MDIsIDgxNjA2LCA4MTYxMCwgODE2MTQsIDgxNjE4LCA4MTYyMiwgODE2MjYsIDgxNjMwLCA4MTYzNCwgCi0gICAgODE2MzgsIDgxNjQyLCA4MTY0NiwgODE2NTAsIDgxNjU0LCA4MTY1OCwgODE2NjIsIDgxNjY2LCA4MTY3MCwgODE2NzQsIAotICAgIDgxNjc4LCA4MTY4MiwgODE2ODYsIDgxNjkwLCA4MTY5NCwgODE2OTgsIDgxNzAyLCA4MTcwNiwgODE3MTAsIDgxNzE0LCAKLSAgICA4MTcxOCwgODE3MjIsIDgxNzI2LCA4MTczMCwgODE3MzQsIDgxNzM4LCA4MTc0MiwgODE3NDYsIDgxNzUwLCA4MTc1NCwgCi0gICAgODE3NTgsIDgxNzYyLCA4MTc2NiwgODE3NzAsIDgxNzc0LCA4MTc3OCwgODE3ODIsIDgxNzg2LCA4MTc5MCwgODE3OTQsIAotICAgIDgxNzk4LCA4MTgwMiwgODE4MDYsIDgxODEwLCA4MTgxNCwgODE4MTgsIDgxODIyLCA4MTgyNiwgODE4MzAsIDgxODM0LCAKLSAgICA4MTgzOCwgODE4NDIsIDgxODQ2LCA4MTg1MCwgODE4NTQsIDgxODU4LCA4MTg2MiwgODE4NjYsIDgxODcwLCA4MTg3NCwgCi0gICAgODE4NzgsIDgxODgyLCA4MTg4NiwgODE4OTAsIDgxODk0LCA4MTg5OCwgODE5MDIsIDgxOTA2LCA4MTkxMCwgODE5MTQsIAotICAgIDgxOTE4LCA4MTkyMiwgODE5MjYsIDgxOTMwLCA4MTkzNCwgODE5MzgsIDgxOTQyLCA4MTk0NiwgODE5NTAsIDgxOTU0LCAKLSAgICA4MTk1OCwgODE5NjIsIDgxOTY2LCA4MTk3MCwgODE5NzQsIDgxOTc4LCAwLCAwLCA4MTk4MiwgODE5ODYsIDgxOTkwLCAKLSAgICA4MTk5NCwgODE5OTgsIDgyMDAyLCA4MjAwNiwgODIwMTAsIDgyMDE0LCA4MjAxOCwgODIwMjIsIDgyMDI2LCA4MjAzMCwgCi0gICAgODIwMzQsIDgyMDM4LCA4MjA0MiwgODIwNDYsIDgyMDUwLCA4MjA1NCwgODIwNTgsIDgyMDYyLCA4MjA2NiwgODIwNzAsIAotICAgIDgyMDc0LCA4MjA3OCwgODIwODIsIDgyMDg2LCA4MjA5MCwgODIwOTQsIDgyMDk4LCA4MjEwMiwgODIxMDYsIDgyMTEwLCAKLSAgICA4MjExNCwgODIxMTgsIDgyMTIyLCA4MjEyNiwgODIxMzAsIDgyMTM0LCA4MjEzOCwgODIxNDIsIDgyMTQ2LCA4MjE1MCwgCi0gICAgODIxNTQsIDgyMTU4LCA4MjE2MiwgODIxNjYsIDgyMTcwLCA4MjE3NCwgODIxNzgsIDgyMTgyLCA4MjE4NiwgODIxOTAsIAotICAgIDgyMTk0LCA4MjE5OCwgODIyMDIsIDgyMjA2LCA4MjIxMCwgODIyMTQsIDgyMjE4LCA4MjIyMiwgODIyMjYsIDgyMjMwLCAKLSAgICA4MjIzNCwgODIyMzgsIDgyMjQyLCA4MjI0NiwgODIyNTAsIDgyMjU0LCA4MjI1OCwgODIyNjIsIDgyMjY2LCA4MjI3MCwgCi0gICAgODIyNzQsIDgyMjc4LCA4MjI4MiwgODIyODYsIDgyMjkwLCA4MjI5NCwgODIyOTgsIDgyMzAyLCA4MjMwNiwgODIzMTAsIAotICAgIDgyMzE0LCA4MjMxOCwgODIzMjIsIDgyMzI2LCA4MjMzMCwgODIzMzQsIDgyMzM4LCA4MjM0MiwgODIzNDYsIDgyMzUwLCAKLSAgICA4MjM1NCwgODIzNTgsIDgyMzYyLCA4MjM2NiwgODIzNzAsIDgyMzc0LCA4MjM3OCwgODIzODIsIDgyMzg2LCA4MjM5MCwgCi0gICAgODIzOTQsIDgyMzk4LCA4MjQwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODI0MDYsIAotICAgIDgyNDExLCA4MjQxNiwgODI0MjEsIDgyNDI2LCA4MjQzMSwgODI0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDgyNDQ0LCA4MjQ1MSwgODI0NTgsIDgyNDY1LCA4MjQ3MiwgMCwgMCwgMCwgMCwgMCwgODI0NzksIDgyNDg2LCAKLSAgICA4MjQ5MywgODI1MDMsIDgyNTA5LCA4MjUxNSwgODI1MjEsIDgyNTI3LCA4MjUzMywgODI1MzksIDgyNTQ2LCA4MjU1MiwgCi0gICAgODI1NTgsIDgyNTY0LCA4MjU3MywgODI1ODIsIDgyNTk0LCA4MjYwNiwgODI2MTIsIDgyNjE4LCA4MjYyNCwgODI2MzEsIAotICAgIDgyNjM4LCA4MjY0NSwgODI2NTIsIDgyNjU5LCAwLCA4MjY2NiwgODI2NzMsIDgyNjgwLCA4MjY4OCwgODI2OTUsIDAsIAotICAgIDgyNzAyLCAwLCA4MjcwOSwgODI3MTYsIDAsIDgyNzIzLCA4MjczMSwgMCwgODI3MzgsIDgyNzQ1LCA4Mjc1MiwgODI3NTksIAotICAgIDgyNzY2LCA4Mjc3MywgODI3ODAsIDgyNzg3LCA4Mjc5NCwgODI4MDEsIDgyODA2LCA4MjgxMywgODI4MjAsIDgyODI2LCAKLSAgICA4MjgzMiwgODI4MzgsIDgyODQ0LCA4Mjg1MCwgODI4NTYsIDgyODYyLCA4Mjg2OCwgODI4NzQsIDgyODgwLCA4Mjg4NiwgCi0gICAgODI4OTIsIDgyODk4LCA4MjkwNCwgODI5MTAsIDgyOTE2LCA4MjkyMiwgODI5MjgsIDgyOTM0LCA4Mjk0MCwgODI5NDYsIAotICAgIDgyOTUyLCA4Mjk1OCwgODI5NjQsIDgyOTcwLCA4Mjk3NiwgODI5ODIsIDgyOTg4LCA4Mjk5NCwgODMwMDAsIDgzMDA2LCAKLSAgICA4MzAxMiwgODMwMTgsIDgzMDI0LCA4MzAzMCwgODMwMzYsIDgzMDQyLCA4MzA0OCwgODMwNTQsIDgzMDYwLCA4MzA2NiwgCi0gICAgODMwNzIsIDgzMDc4LCA4MzA4NCwgODMwOTAsIDgzMDk2LCA4MzEwMiwgODMxMDgsIDgzMTE0LCA4MzEyMCwgODMxMjYsIAotICAgIDgzMTMyLCA4MzEzOCwgODMxNDQsIDgzMTUwLCA4MzE1NiwgODMxNjIsIDgzMTY4LCA4MzE3NCwgODMxODAsIDgzMTg2LCAKLSAgICA4MzE5MiwgODMxOTgsIDgzMjA0LCA4MzIxMCwgODMyMTYsIDgzMjIyLCA4MzIyOCwgODMyMzQsIDgzMjQwLCA4MzI0NiwgCi0gICAgODMyNTIsIDgzMjU4LCA4MzI2NCwgODMyNzAsIDgzMjc2LCA4MzI4NCwgODMyOTIsIDgzMjk4LCA4MzMwNCwgODMzMTAsIAotICAgIDgzMzE2LCA4MzMyNSwgODMzMzQsIDgzMzQyLCA4MzM1MCwgODMzNTgsIDgzMzY2LCA4MzM3NCwgODMzODIsIDgzMzkwLCAKLSAgICA4MzM5OCwgODM0MDUsIDgzNDEyLCA4MzQyMywgODM0MzQsIDgzNDM4LCA4MzQ0MiwgODM0NDcsIDgzNDUyLCA4MzQ1NywgCi0gICAgODM0NjIsIDgzNDcwLCA4MzQ3OCwgODM0ODQsIDgzNDkwLCA4MzQ5NywgODM1MDQsIDgzNTExLCA4MzUxNSwgODM1MjEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzNTI3LCA4MzUzMywgODM1MzksIAotICAgIDgzNTQ1LCA4MzU1MSwgODM1NTYsIDgzNTYxLCA4MzU2NywgODM1NzMsIDgzNTc5LCA4MzU4NSwgODM1OTQsIDgzNjAwLCAKLSAgICA4MzYwNiwgODM2MTQsIDgzNjIyLCA4MzYzMCwgODM2MzgsIDgzNjQzLCA4MzY0OCwgODM2NTMsIDgzNjU4LCA4MzY3MSwgCi0gICAgODM2ODQsIDgzNjk1LCA4MzcwNiwgODM3MTgsIDgzNzMwLCA4Mzc0MiwgODM3NTQsIDgzNzY1LCA4Mzc3NiwgODM3ODgsIAotICAgIDgzODAwLCA4MzgxMiwgODM4MjQsIDgzODM1LCA4Mzg0NiwgODM4NTcsIDgzODc0LCA4Mzg5MSwgODM5MDgsIDgzOTE1LCAKLSAgICA4MzkyMiwgODM5MjksIDgzOTM2LCA4Mzk0NywgODM5NTgsIDgzOTY5LCA4Mzk4MiwgODM5OTMsIDg0MDAxLCA4NDAwOSwgCi0gICAgODQwMTgsIDg0MDI2LCA4NDAzNiwgODQwNDQsIDg0MDUyLCA4NDA2MCwgODQwNjksIDg0MDc3LCA4NDA4NywgODQwOTUsIAotICAgIDg0MTAzLCA4NDExMSwgODQxMjEsIDg0MTI5LCA4NDEzNiwgODQxNDMsIDg0MTUwLCA4NDE1NywgODQxNjUsIDg0MTczLCAKLSAgICA4NDE4MSwgODQxODksIDg0MTk3LCA4NDIwNiwgODQyMTQsIDg0MjIyLCA4NDIzMCwgODQyMzgsIDg0MjQ2LCA4NDI1NSwgCi0gICAgODQyNjMsIDg0MjcxLCA4NDI3OSwgODQyODcsIDg0Mjk1LCA4NDMwMywgODQzMTEsIDg0MzE5LCA4NDMyNywgODQzMzUsIAotICAgIDg0MzQ0LCA4NDM1MiwgODQzNjIsIDg0MzcwLCA4NDM3OCwgODQzODYsIDg0Mzk2LCA4NDQwNCwgODQ0MTIsIDg0NDIwLCAKLSAgICA4NDQyOCwgODQ0MzcsIDg0NDQ2LCA4NDQ1NCwgODQ0NjQsIDg0NDcyLCA4NDQ4MCwgODQ0ODgsIDg0NDk3LCA4NDUwNSwgCi0gICAgODQ1MTUsIDg0NTIzLCA4NDUzMCwgODQ1MzcsIDg0NTQ1LCA4NDU1MiwgODQ1NjEsIDg0NTY4LCA4NDU3NiwgODQ1ODQsIAotICAgIDg0NTkzLCA4NDYwMSwgODQ2MTEsIDg0NjE5LCA4NDYyNywgODQ2MzUsIDg0NjQ1LCA4NDY1MywgODQ2NjAsIDg0NjY3LCAKLSAgICA4NDY3NSwgODQ2ODIsIDg0NjkxLCA4NDY5OCwgODQ3MDgsIDg0NzE4LCA4NDcyOSwgODQ3MzgsIDg0NzQ3LCA4NDc1NiwgCi0gICAgODQ3NjUsIDg0Nzc0LCA4NDc4NCwgODQ3OTYsIDg0ODA4LCA4NDgxOSwgODQ4MzEsIDg0ODQ0LCA4NDg1NSwgODQ4NjQsIAotICAgIDg0ODczLCA4NDg4MSwgODQ4OTAsIDg0OTAwLCA4NDkwOCwgODQ5MTcsIDg0OTI2LCA4NDkzNCwgODQ5NDMsIDg0OTUzLCAKLSAgICA4NDk2MSwgODQ5NzAsIDg0OTc5LCA4NDk4NywgODQ5OTYsIDg1MDA2LCA4NTAxNCwgODUwMjQsIDg1MDMyLCA4NTA0MiwgCi0gICAgODUwNTAsIDg1MDU4LCA4NTA2NywgODUwNzUsIDg1MDg1LCA4NTA5MywgODUxMDEsIDg1MTExLCA4NTExOSwgODUxMjYsIAotICAgIDg1MTMzLCA4NTE0MiwgODUxNTEsIDg1MTU5LCA4NTE2OCwgODUxNzgsIDg1MTg2LCA4NTE5NywgODUyMDUsIDg1MjEzLCAKLSAgICA4NTIyMCwgODUyMjgsIDg1MjM3LCA4NTI0NCwgODUyNTUsIDg1MjY2LCA4NTI3OCwgODUyODksIDg1MzAxLCA4NTMwOSwgCi0gICAgODUzMTcsIDg1MzI2LCA4NTMzNCwgODUzNDMsIDg1MzUxLCA4NTM1OSwgODUzNjgsIDg1Mzc2LCA4NTM4NSwgODUzOTMsIAotICAgIDg1NDAwLCA4NTQwNywgODU0MTQsIDg1NDIxLCA4NTQyOSwgODU0MzcsIDg1NDQ1LCA4NTQ1MywgODU0NjIsIDg1NDcwLCAKLSAgICA4NTQ3OCwgODU0ODcsIDg1NDk1LCA4NTUwMywgODU1MTEsIDg1NTIwLCA4NTUyOCwgODU1MzYsIDg1NTQ0LCA4NTU1MiwgCi0gICAgODU1NjAsIDg1NTY4LCA4NTU3NiwgODU1ODQsIDg1NTkyLCA4NTYwMSwgODU2MDksIDg1NjE3LCA4NTYyNSwgODU2MzMsIAotICAgIDg1NjQxLCA4NTY1MCwgODU2NTksIDg1NjY3LCA4NTY3NSwgODU2ODMsIDg1NjkyLCA4NTcwMCwgODU3MDksIDg1NzE2LCAKLSAgICA4NTcyMywgODU3MzEsIDg1NzM4LCA4NTc0NiwgODU3NTQsIDg1NzYzLCA4NTc3MSwgODU3ODAsIDg1Nzg4LCA4NTc5NiwgCi0gICAgODU4MDYsIDg1ODEzLCA4NTgyMCwgODU4MjgsIDg1ODM1LCA4NTg0MywgODU4NTQsIDg1ODY2LCA4NTg3NCwgODU4ODMsIAotICAgIDg1ODkxLCA4NTkwMCwgODU5MDgsIDg1OTE3LCA4NTkyNSwgODU5MzQsIDg1OTQyLCA4NTk1MSwgODU5NjAsIDg1OTY4LCAKLSAgICA4NTk3NiwgODU5ODQsIDg1OTkzLCA4NjAwMCwgODYwMDgsIDg2MDE3LCA4NjAyNiwgODYwMzUsIDg2MDQ1LCA4NjA1MywgCi0gICAgODYwNjMsIDg2MDcxLCA4NjA4MSwgODYwODksIDg2MDk5LCA4NjEwNywgODYxMTcsIDg2MTI1LCA4NjEzNCwgODYxNDEsIAotICAgIDg2MTUwLCA4NjE1NywgODYxNjcsIDg2MTc1LCA4NjE4NSwgODYxOTMsIDg2MjAzLCA4NjIxMSwgODYyMTksIDg2MjI3LCAKLSAgICA4NjIzNiwgODYyNDQsIDg2MjUzLCA4NjI2MiwgODYyNzEsIDg2MjgwLCA4NjI5MCwgODYyOTgsIDg2MzA4LCA4NjMxNiwgCi0gICAgODYzMjYsIDg2MzM0LCA4NjM0NCwgODYzNTIsIDg2MzYyLCA4NjM3MCwgODYzNzksIDg2Mzg2LCA4NjM5NSwgODY0MDIsIAotICAgIDg2NDEyLCA4NjQyMCwgODY0MzAsIDg2NDM4LCA4NjQ0OCwgODY0NTYsIDg2NDY0LCA4NjQ3MiwgODY0ODEsIDg2NDg5LCAKLSAgICA4NjQ5OCwgODY1MDcsIDg2NTE2LCA4NjUyNSwgODY1MzMsIDg2NTQxLCA4NjU1MCwgODY1NTgsIDg2NTY3LCA4NjU3NiwgCi0gICAgODY1ODQsIDg2NTkyLCA4NjYwMCwgODY2MDksIDg2NjE3LCA4NjYyNSwgODY2MzQsIDg2NjQyLCA4NjY1MCwgODY2NTgsIAotICAgIDg2NjY2LCA4NjY3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODY2NzYsIAotICAgIDg2Njg2LCA4NjY5NiwgODY3MDYsIDg2NzE2LCA4NjcyNywgODY3MzcsIDg2NzQ3LCA4Njc1OCwgODY3NjcsIDg2Nzc2LCAKLSAgICA4Njc4NSwgODY3OTYsIDg2ODA2LCA4NjgxNiwgODY4MjgsIDg2ODM4LCA4Njg0OCwgODY4NTgsIDg2ODY4LCA4Njg3OCwgCi0gICAgODY4ODgsIDg2ODk4LCA4NjkwOCwgODY5MTgsIDg2OTI4LCA4NjkzOCwgODY5NDksIDg2OTYwLCA4Njk3MCwgODY5ODAsIAotICAgIDg2OTkyLCA4NzAwMywgODcwMTQsIDg3MDI0LCA4NzAzNCwgODcwNDQsIDg3MDU0LCA4NzA2NCwgODcwNzQsIDg3MDg0LCAKLSAgICA4NzA5NiwgODcxMDYsIDg3MTE2LCA4NzEyOCwgODcxMzksIDg3MTUwLCA4NzE2MCwgODcxNzAsIDg3MTgwLCA4NzE5MCwgCi0gICAgODcyMDIsIDg3MjEyLCA4NzIyMiwgODcyMzMsIDg3MjQ0LCA4NzI1NCwgODcyNjQsIDg3MjczLCA4NzI4MiwgODcyOTEsIAotICAgIDg3MzAwLCA4NzMwOSwgODczMTksIDAsIDAsIDg3MzI5LCA4NzMzOSwgODczNDksIDg3MzU5LCA4NzM2OSwgODczODEsIAotICAgIDg3MzkxLCA4NzQwMSwgODc0MTMsIDg3NDIzLCA4NzQzNSwgODc0NDQsIDg3NDUzLCA4NzQ2NCwgODc0NzQsIDg3NDg2LCAKLSAgICA4NzQ5NywgODc1MTAsIDg3NTIwLCA4NzUzMiwgODc1NDEsIDg3NTUyLCA4NzU2MywgODc1NzYsIDg3NTg2LCA4NzU5NiwgCi0gICAgODc2MDYsIDg3NjE2LCA4NzYyNiwgODc2MzUsIDg3NjQ0LCA4NzY1MywgODc2NjIsIDg3NjcyLCA4NzY4MiwgODc2OTIsIAotICAgIDg3NzAyLCA4NzcxMiwgODc3MjIsIDg3NzMyLCA4Nzc0MiwgODc3NTIsIDg3NzYyLCA4Nzc3MiwgODc3ODIsIDg3NzkxLCAKLSAgICA4NzgwMCwgODc4MDksIDg3ODE5LCA4NzgyOSwgODc4MzksIDg3ODQ5LCA4Nzg1OSwgODc4NzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxMDUzLCA4MTA1NywgODEwNjEsIDgxMDY1LCAKKyAgICA4MTA2OSwgODEwNzMsIDgxMDc3LCA4MTA4MSwgODEwODUsIDgxMDg5LCA4MTA5MywgODEwOTcsIDgxMTAxLCA4MTEwNSwgCisgICAgODExMDksIDgxMTEzLCA4MTExNywgODExMjEsIDgxMTI1LCA4MTEyOSwgODExMzMsIDgxMTM3LCA4MTE0MSwgMCwgMCwgMCwgCisgICAgMCwgODExNDUsIDgxMTQ5LCA4MTE1MywgODExNTcsIDgxMTYxLCA4MTE2NSwgODExNjksIDgxMTczLCA4MTE3NywgODExODEsIAorICAgIDgxMTg1LCA4MTE4OSwgODExOTMsIDgxMTk3LCA4MTIwMSwgODEyMDUsIDgxMjA5LCA4MTIxMywgODEyMTcsIDgxMjIxLCAKKyAgICA4MTIyNSwgODEyMjksIDgxMjMzLCA4MTIzNywgODEyNDEsIDgxMjQ1LCA4MTI0OSwgODEyNTMsIDgxMjU3LCA4MTI2MSwgCisgICAgODEyNjUsIDgxMjY5LCA4MTI3MywgODEyNzcsIDgxMjgxLCA4MTI4NSwgODEyODksIDgxMjkzLCA4MTI5NywgODEzMDEsIAorICAgIDgxMzA1LCA4MTMwOSwgODEzMTMsIDgxMzE3LCA4MTMyMSwgODEzMjUsIDgxMzI5LCA4MTMzMywgODEzMzcsIDAsIDAsIDAsIAorICAgIDAsIDgxMzQxLCA4MTM0NSwgODEzNDksIDgxMzUzLCA4MTM1NywgODEzNjEsIDgxMzY1LCA4MTM2OSwgODEzNzMsIDgxMzc3LCAKKyAgICA4MTM4MSwgODEzODUsIDgxMzg5LCA4MTM5MywgODEzOTcsIDgxNDAxLCA4MTQwNSwgODE0MDksIDgxNDEzLCA4MTQxNywgCisgICAgODE0MjEsIDgxNDI1LCA4MTQyOSwgODE0MzMsIDgxNDM3LCA4MTQ0MSwgODE0NDUsIDgxNDQ5LCA4MTQ1MywgODE0NTcsIAorICAgIDgxNDYxLCA4MTQ2NSwgODE0NjksIDgxNDczLCA4MTQ3NywgODE0ODEsIDgxNDg1LCA4MTQ4OSwgODE0OTMsIDgxNDk3LCAKKyAgICA4MTUwMSwgODE1MDUsIDgxNTA5LCA4MTUxMywgODE1MTcsIDgxNTIxLCA4MTUyNSwgODE1MjksIDgxNTMzLCA4MTUzNywgCisgICAgODE1NDEsIDgxNTQ1LCA4MTU0OSwgODE1NTMsIDgxNTU3LCA4MTU2MSwgODE1NjUsIDgxNTY5LCA4MTU3MywgODE1NzcsIAorICAgIDgxNTgxLCA4MTU4NSwgODE1ODksIDgxNTkzLCA4MTU5NywgODE2MDEsIDgxNjA1LCA4MTYwOSwgODE2MTMsIDgxNjE3LCAKKyAgICA4MTYyMSwgODE2MjUsIDgxNjI5LCA4MTYzMywgODE2MzcsIDgxNjQxLCA4MTY0NSwgODE2NDksIDgxNjUzLCA4MTY1NywgCisgICAgODE2NjEsIDgxNjY1LCA4MTY2OSwgODE2NzMsIDgxNjc3LCA4MTY4MSwgODE2ODUsIDgxNjg5LCA4MTY5MywgODE2OTcsIAorICAgIDgxNzAxLCA4MTcwNSwgODE3MDksIDgxNzEzLCA4MTcxNywgODE3MjEsIDgxNzI1LCA4MTcyOSwgODE3MzMsIDgxNzM3LCAKKyAgICA4MTc0MSwgODE3NDUsIDgxNzQ5LCA4MTc1MywgODE3NTcsIDgxNzYxLCA4MTc2NSwgODE3NjksIDgxNzczLCA4MTc3NywgCisgICAgODE3ODEsIDgxNzg1LCA4MTc4OSwgODE3OTMsIDgxNzk3LCA4MTgwMSwgODE4MDUsIDgxODA5LCA4MTgxMywgODE4MTcsIAorICAgIDgxODIxLCA4MTgyNSwgODE4MjksIDgxODMzLCA4MTgzNywgODE4NDEsIDgxODQ1LCA4MTg0OSwgODE4NTMsIDgxODU3LCAKKyAgICA4MTg2MSwgODE4NjUsIDgxODY5LCA4MTg3MywgODE4NzcsIDgxODgxLCA4MTg4NSwgODE4ODksIDgxODkzLCA4MTg5NywgCisgICAgODE5MDEsIDgxOTA1LCA4MTkwOSwgODE5MTMsIDgxOTE3LCA4MTkyMSwgODE5MjUsIDgxOTI5LCA4MTkzMywgODE5MzcsIAorICAgIDgxOTQxLCA4MTk0NSwgODE5NDksIDgxOTUzLCA4MTk1NywgODE5NjEsIDgxOTY1LCA4MTk2OSwgODE5NzMsIDgxOTc3LCAKKyAgICA4MTk4MSwgODE5ODUsIDgxOTg5LCA4MTk5MywgODE5OTcsIDgyMDAxLCA4MjAwNSwgODIwMDksIDgyMDEzLCA4MjAxNywgCisgICAgODIwMjEsIDgyMDI1LCA4MjAyOSwgODIwMzMsIDgyMDM3LCA4MjA0MSwgODIwNDUsIDgyMDQ5LCA4MjA1MywgODIwNTcsIAorICAgIDgyMDYxLCA4MjA2NSwgODIwNjksIDgyMDczLCA4MjA3NywgODIwODEsIDgyMDg1LCA4MjA4OSwgODIwOTMsIDgyMDk3LCAKKyAgICA4MjEwMSwgODIxMDUsIDgyMTA5LCA4MjExMywgODIxMTcsIDgyMTIxLCA4MjEyNSwgODIxMjksIDgyMTMzLCA4MjEzNywgCisgICAgODIxNDEsIDgyMTQ1LCA4MjE0OSwgODIxNTMsIDgyMTU3LCA4MjE2MSwgODIxNjUsIDgyMTY5LCA4MjE3MywgODIxNzcsIAorICAgIDgyMTgxLCA4MjE4NSwgODIxODksIDgyMTkzLCA4MjE5NywgODIyMDEsIDgyMjA1LCA4MjIwOSwgODIyMTMsIDgyMjE3LCAKKyAgICA4MjIyMSwgODIyMjUsIDgyMjI5LCA4MjIzMywgODIyMzcsIDgyMjQxLCA4MjI0NSwgODIyNDksIDgyMjUzLCA4MjI1NywgCisgICAgODIyNjEsIDgyMjY1LCA4MjI2OSwgODIyNzMsIDgyMjc3LCA4MjI4MSwgODIyODUsIDgyMjg5LCA4MjI5MywgODIyOTcsIAorICAgIDgyMzAxLCA4MjMwNSwgODIzMDksIDgyMzEzLCA4MjMxNywgODIzMjEsIDgyMzI1LCA4MjMyOSwgODIzMzMsIDgyMzM3LCAKKyAgICA4MjM0MSwgODIzNDUsIDgyMzQ5LCA4MjM1MywgODIzNTcsIDgyMzYxLCA4MjM2NSwgODIzNjksIDgyMzczLCA4MjM3NywgCisgICAgODIzODEsIDgyMzg1LCA4MjM4OSwgODIzOTMsIDgyMzk3LCA4MjQwMSwgODI0MDUsIDgyNDA5LCA4MjQxMywgODI0MTcsIAorICAgIDgyNDIxLCA4MjQyNSwgODI0MjksIDgyNDMzLCA4MjQzNywgODI0NDEsIDgyNDQ1LCA4MjQ0OSwgODI0NTMsIDgyNDU3LCAKKyAgICA4MjQ2MSwgODI0NjUsIDgyNDY5LCA4MjQ3MywgODI0NzcsIDgyNDgxLCA4MjQ4NSwgODI0ODksIDgyNDkzLCA4MjQ5NywgCisgICAgODI1MDEsIDgyNTA1LCA4MjUwOSwgODI1MTMsIDgyNTE3LCA4MjUyMSwgODI1MjUsIDgyNTI5LCA4MjUzMywgODI1MzcsIAorICAgIDgyNTQxLCA4MjU0NSwgODI1NDksIDgyNTUzLCA4MjU1NywgODI1NjEsIDgyNTY1LCA4MjU2OSwgODI1NzMsIDgyNTc3LCAKKyAgICA4MjU4MSwgODI1ODUsIDgyNTg5LCA4MjU5MywgODI1OTcsIDgyNjAxLCA4MjYwNSwgODI2MDksIDgyNjEzLCA4MjYxNywgCisgICAgODI2MjEsIDgyNjI1LCA4MjYyOSwgODI2MzMsIDgyNjM3LCA4MjY0MSwgODI2NDUsIDgyNjQ5LCA4MjY1MywgODI2NTcsIAorICAgIDgyNjYxLCA4MjY2NSwgODI2NjksIDgyNjczLCA4MjY3NywgODI2ODEsIDgyNjg1LCA4MjY4OSwgODI2OTMsIDgyNjk3LCAKKyAgICA4MjcwMSwgODI3MDUsIDgyNzA5LCA4MjcxMywgODI3MTcsIDgyNzIxLCA4MjcyNSwgODI3MjksIDgyNzMzLCA4MjczNywgCisgICAgODI3NDEsIDgyNzQ1LCA4Mjc0OSwgODI3NTMsIDgyNzU3LCA4Mjc2MSwgODI3NjUsIDgyNzY5LCA4Mjc3MywgODI3NzcsIAorICAgIDgyNzgxLCA4Mjc4NSwgODI3ODksIDgyNzkzLCA4Mjc5NywgODI4MDEsIDAsIDAsIDgyODA1LCA4MjgwOSwgODI4MTMsIAorICAgIDgyODE3LCA4MjgyMSwgODI4MjUsIDgyODI5LCA4MjgzMywgODI4MzcsIDgyODQxLCA4Mjg0NSwgODI4NDksIDgyODUzLCAKKyAgICA4Mjg1NywgODI4NjEsIDgyODY1LCA4Mjg2OSwgODI4NzMsIDgyODc3LCA4Mjg4MSwgODI4ODUsIDgyODg5LCA4Mjg5MywgCisgICAgODI4OTcsIDgyOTAxLCA4MjkwNSwgODI5MDksIDgyOTEzLCA4MjkxNywgODI5MjEsIDgyOTI1LCA4MjkyOSwgODI5MzMsIAorICAgIDgyOTM3LCA4Mjk0MSwgODI5NDUsIDgyOTQ5LCA4Mjk1MywgODI5NTcsIDgyOTYxLCA4Mjk2NSwgODI5NjksIDgyOTczLCAKKyAgICA4Mjk3NywgODI5ODEsIDgyOTg1LCA4Mjk4OSwgODI5OTMsIDgyOTk3LCA4MzAwMSwgODMwMDUsIDgzMDA5LCA4MzAxMywgCisgICAgODMwMTcsIDgzMDIxLCA4MzAyNSwgODMwMjksIDgzMDMzLCA4MzAzNywgODMwNDEsIDgzMDQ1LCA4MzA0OSwgODMwNTMsIAorICAgIDgzMDU3LCA4MzA2MSwgODMwNjUsIDgzMDY5LCA4MzA3MywgODMwNzcsIDgzMDgxLCA4MzA4NSwgODMwODksIDgzMDkzLCAKKyAgICA4MzA5NywgODMxMDEsIDgzMTA1LCA4MzEwOSwgODMxMTMsIDgzMTE3LCA4MzEyMSwgODMxMjUsIDgzMTI5LCA4MzEzMywgCisgICAgODMxMzcsIDgzMTQxLCA4MzE0NSwgODMxNDksIDgzMTUzLCA4MzE1NywgODMxNjEsIDgzMTY1LCA4MzE2OSwgODMxNzMsIAorICAgIDgzMTc3LCA4MzE4MSwgODMxODUsIDgzMTg5LCA4MzE5MywgODMxOTcsIDgzMjAxLCA4MzIwNSwgODMyMDksIDgzMjEzLCAKKyAgICA4MzIxNywgODMyMjEsIDgzMjI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MzIyOSwgCisgICAgODMyMzQsIDgzMjM5LCA4MzI0NCwgODMyNDksIDgzMjU0LCA4MzI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgODMyNjcsIDgzMjc0LCA4MzI4MSwgODMyODgsIDgzMjk1LCAwLCAwLCAwLCAwLCAwLCA4MzMwMiwgODMzMDksIAorICAgIDgzMzE2LCA4MzMyNiwgODMzMzIsIDgzMzM4LCA4MzM0NCwgODMzNTAsIDgzMzU2LCA4MzM2MiwgODMzNjksIDgzMzc1LCAKKyAgICA4MzM4MSwgODMzODcsIDgzMzk2LCA4MzQwNSwgODM0MTcsIDgzNDI5LCA4MzQzNSwgODM0NDEsIDgzNDQ3LCA4MzQ1NCwgCisgICAgODM0NjEsIDgzNDY4LCA4MzQ3NSwgODM0ODIsIDAsIDgzNDg5LCA4MzQ5NiwgODM1MDMsIDgzNTExLCA4MzUxOCwgMCwgCisgICAgODM1MjUsIDAsIDgzNTMyLCA4MzUzOSwgMCwgODM1NDYsIDgzNTU0LCAwLCA4MzU2MSwgODM1NjgsIDgzNTc1LCA4MzU4MiwgCisgICAgODM1ODksIDgzNTk2LCA4MzYwMywgODM2MTAsIDgzNjE3LCA4MzYyNCwgODM2MjksIDgzNjM2LCA4MzY0MywgODM2NDksIAorICAgIDgzNjU1LCA4MzY2MSwgODM2NjcsIDgzNjczLCA4MzY3OSwgODM2ODUsIDgzNjkxLCA4MzY5NywgODM3MDMsIDgzNzA5LCAKKyAgICA4MzcxNSwgODM3MjEsIDgzNzI3LCA4MzczMywgODM3MzksIDgzNzQ1LCA4Mzc1MSwgODM3NTcsIDgzNzYzLCA4Mzc2OSwgCisgICAgODM3NzUsIDgzNzgxLCA4Mzc4NywgODM3OTMsIDgzNzk5LCA4MzgwNSwgODM4MTEsIDgzODE3LCA4MzgyMywgODM4MjksIAorICAgIDgzODM1LCA4Mzg0MSwgODM4NDcsIDgzODUzLCA4Mzg1OSwgODM4NjUsIDgzODcxLCA4Mzg3NywgODM4ODMsIDgzODg5LCAKKyAgICA4Mzg5NSwgODM5MDEsIDgzOTA3LCA4MzkxMywgODM5MTksIDgzOTI1LCA4MzkzMSwgODM5MzcsIDgzOTQzLCA4Mzk0OSwgCisgICAgODM5NTUsIDgzOTYxLCA4Mzk2NywgODM5NzMsIDgzOTc5LCA4Mzk4NSwgODM5OTEsIDgzOTk3LCA4NDAwMywgODQwMDksIAorICAgIDg0MDE1LCA4NDAyMSwgODQwMjcsIDg0MDMzLCA4NDAzOSwgODQwNDUsIDg0MDUxLCA4NDA1NywgODQwNjMsIDg0MDY5LCAKKyAgICA4NDA3NSwgODQwODEsIDg0MDg3LCA4NDA5MywgODQwOTksIDg0MTA3LCA4NDExNSwgODQxMjEsIDg0MTI3LCA4NDEzMywgCisgICAgODQxMzksIDg0MTQ4LCA4NDE1NywgODQxNjUsIDg0MTczLCA4NDE4MSwgODQxODksIDg0MTk3LCA4NDIwNSwgODQyMTMsIAorICAgIDg0MjIxLCA4NDIyOCwgODQyMzUsIDg0MjQ2LCA4NDI1NywgODQyNjEsIDg0MjY1LCA4NDI3MCwgODQyNzUsIDg0MjgwLCAKKyAgICA4NDI4NSwgODQyOTMsIDg0MzAxLCA4NDMwNywgODQzMTMsIDg0MzIwLCA4NDMyNywgODQzMzQsIDg0MzM4LCA4NDM0NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQzNTAsIDg0MzU2LCA4NDM2MiwgCisgICAgODQzNjgsIDg0Mzc0LCA4NDM3OSwgODQzODQsIDg0MzkwLCA4NDM5NiwgODQ0MDIsIDg0NDA4LCA4NDQxNywgODQ0MjMsIAorICAgIDg0NDI5LCA4NDQzNywgODQ0NDUsIDg0NDUzLCA4NDQ2MSwgODQ0NjYsIDg0NDcxLCA4NDQ3NiwgODQ0ODEsIDg0NDk0LCAKKyAgICA4NDUwNywgODQ1MTgsIDg0NTI5LCA4NDU0MSwgODQ1NTMsIDg0NTY1LCA4NDU3NywgODQ1ODgsIDg0NTk5LCA4NDYxMSwgCisgICAgODQ2MjMsIDg0NjM1LCA4NDY0NywgODQ2NTgsIDg0NjY5LCA4NDY4MCwgODQ2OTcsIDg0NzE0LCA4NDczMSwgODQ3MzgsIAorICAgIDg0NzQ1LCA4NDc1MiwgODQ3NTksIDg0NzcwLCA4NDc4MSwgODQ3OTIsIDg0ODA1LCA4NDgxNiwgODQ4MjQsIDg0ODMyLCAKKyAgICA4NDg0MSwgODQ4NDksIDg0ODU5LCA4NDg2NywgODQ4NzUsIDg0ODgzLCA4NDg5MiwgODQ5MDAsIDg0OTEwLCA4NDkxOCwgCisgICAgODQ5MjYsIDg0OTM0LCA4NDk0NCwgODQ5NTIsIDg0OTU5LCA4NDk2NiwgODQ5NzMsIDg0OTgwLCA4NDk4OCwgODQ5OTYsIAorICAgIDg1MDA0LCA4NTAxMiwgODUwMjAsIDg1MDI5LCA4NTAzNywgODUwNDUsIDg1MDUzLCA4NTA2MSwgODUwNjksIDg1MDc4LCAKKyAgICA4NTA4NiwgODUwOTQsIDg1MTAyLCA4NTExMCwgODUxMTgsIDg1MTI2LCA4NTEzNCwgODUxNDIsIDg1MTUwLCA4NTE1OCwgCisgICAgODUxNjcsIDg1MTc1LCA4NTE4NSwgODUxOTMsIDg1MjAxLCA4NTIwOSwgODUyMTksIDg1MjI3LCA4NTIzNSwgODUyNDMsIAorICAgIDg1MjUxLCA4NTI2MCwgODUyNjksIDg1Mjc3LCA4NTI4NywgODUyOTUsIDg1MzAzLCA4NTMxMSwgODUzMjAsIDg1MzI4LCAKKyAgICA4NTMzOCwgODUzNDYsIDg1MzUzLCA4NTM2MCwgODUzNjgsIDg1Mzc1LCA4NTM4NCwgODUzOTEsIDg1Mzk5LCA4NTQwNywgCisgICAgODU0MTYsIDg1NDI0LCA4NTQzNCwgODU0NDIsIDg1NDUwLCA4NTQ1OCwgODU0NjgsIDg1NDc2LCA4NTQ4MywgODU0OTAsIAorICAgIDg1NDk4LCA4NTUwNSwgODU1MTQsIDg1NTIxLCA4NTUzMSwgODU1NDEsIDg1NTUyLCA4NTU2MSwgODU1NzAsIDg1NTc5LCAKKyAgICA4NTU4OCwgODU1OTcsIDg1NjA3LCA4NTYxOSwgODU2MzEsIDg1NjQyLCA4NTY1NCwgODU2NjcsIDg1Njc4LCA4NTY4NywgCisgICAgODU2OTYsIDg1NzA0LCA4NTcxMywgODU3MjMsIDg1NzMxLCA4NTc0MCwgODU3NDksIDg1NzU3LCA4NTc2NiwgODU3NzYsIAorICAgIDg1Nzg0LCA4NTc5MywgODU4MDIsIDg1ODEwLCA4NTgxOSwgODU4MjksIDg1ODM3LCA4NTg0NywgODU4NTUsIDg1ODY1LCAKKyAgICA4NTg3MywgODU4ODEsIDg1ODkwLCA4NTg5OCwgODU5MDgsIDg1OTE2LCA4NTkyNCwgODU5MzQsIDg1OTQyLCA4NTk0OSwgCisgICAgODU5NTYsIDg1OTY1LCA4NTk3NCwgODU5ODIsIDg1OTkxLCA4NjAwMSwgODYwMDksIDg2MDIwLCA4NjAyOCwgODYwMzYsIAorICAgIDg2MDQzLCA4NjA1MSwgODYwNjAsIDg2MDY3LCA4NjA3OCwgODYwODksIDg2MTAxLCA4NjExMiwgODYxMjQsIDg2MTMyLCAKKyAgICA4NjE0MCwgODYxNDksIDg2MTU3LCA4NjE2NiwgODYxNzQsIDg2MTgyLCA4NjE5MSwgODYxOTksIDg2MjA4LCA4NjIxNiwgCisgICAgODYyMjMsIDg2MjMwLCA4NjIzNywgODYyNDQsIDg2MjUyLCA4NjI2MCwgODYyNjgsIDg2Mjc2LCA4NjI4NSwgODYyOTMsIAorICAgIDg2MzAxLCA4NjMxMCwgODYzMTgsIDg2MzI2LCA4NjMzNCwgODYzNDMsIDg2MzUxLCA4NjM1OSwgODYzNjcsIDg2Mzc1LCAKKyAgICA4NjM4MywgODYzOTEsIDg2Mzk5LCA4NjQwNywgODY0MTUsIDg2NDI0LCA4NjQzMiwgODY0NDAsIDg2NDQ4LCA4NjQ1NiwgCisgICAgODY0NjQsIDg2NDczLCA4NjQ4MiwgODY0OTAsIDg2NDk4LCA4NjUwNiwgODY1MTUsIDg2NTIzLCA4NjUzMiwgODY1MzksIAorICAgIDg2NTQ2LCA4NjU1NCwgODY1NjEsIDg2NTY5LCA4NjU3NywgODY1ODYsIDg2NTk0LCA4NjYwMywgODY2MTEsIDg2NjE5LCAKKyAgICA4NjYyOSwgODY2MzYsIDg2NjQzLCA4NjY1MSwgODY2NTgsIDg2NjY2LCA4NjY3NywgODY2ODksIDg2Njk3LCA4NjcwNiwgCisgICAgODY3MTQsIDg2NzIzLCA4NjczMSwgODY3NDAsIDg2NzQ4LCA4Njc1NywgODY3NjUsIDg2Nzc0LCA4Njc4MywgODY3OTEsIAorICAgIDg2Nzk5LCA4NjgwNywgODY4MTYsIDg2ODIzLCA4NjgzMSwgODY4NDAsIDg2ODQ5LCA4Njg1OCwgODY4NjgsIDg2ODc2LCAKKyAgICA4Njg4NiwgODY4OTQsIDg2OTA0LCA4NjkxMiwgODY5MjIsIDg2OTMwLCA4Njk0MCwgODY5NDgsIDg2OTU3LCA4Njk2NCwgCisgICAgODY5NzMsIDg2OTgwLCA4Njk5MCwgODY5OTgsIDg3MDA4LCA4NzAxNiwgODcwMjYsIDg3MDM0LCA4NzA0MiwgODcwNTAsIAorICAgIDg3MDU5LCA4NzA2NywgODcwNzYsIDg3MDg1LCA4NzA5NCwgODcxMDMsIDg3MTEzLCA4NzEyMSwgODcxMzEsIDg3MTM5LCAKKyAgICA4NzE0OSwgODcxNTcsIDg3MTY3LCA4NzE3NSwgODcxODUsIDg3MTkzLCA4NzIwMiwgODcyMDksIDg3MjE4LCA4NzIyNSwgCisgICAgODcyMzUsIDg3MjQzLCA4NzI1MywgODcyNjEsIDg3MjcxLCA4NzI3OSwgODcyODcsIDg3Mjk1LCA4NzMwNCwgODczMTIsIAorICAgIDg3MzIxLCA4NzMzMCwgODczMzksIDg3MzQ4LCA4NzM1NiwgODczNjQsIDg3MzczLCA4NzM4MSwgODczOTAsIDg3Mzk5LCAKKyAgICA4NzQwNywgODc0MTUsIDg3NDIzLCA4NzQzMiwgODc0NDAsIDg3NDQ4LCA4NzQ1NywgODc0NjUsIDg3NDczLCA4NzQ4MSwgCisgICAgODc0ODksIDg3NDk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzQ5OSwgCisgICAgODc1MDksIDg3NTE5LCA4NzUyOSwgODc1MzksIDg3NTUwLCA4NzU2MCwgODc1NzAsIDg3NTgxLCA4NzU5MCwgODc1OTksIAorICAgIDg3NjA4LCA4NzYxOSwgODc2MjksIDg3NjM5LCA4NzY1MSwgODc2NjEsIDg3NjcxLCA4NzY4MSwgODc2OTEsIDg3NzAxLCAKKyAgICA4NzcxMSwgODc3MjEsIDg3NzMxLCA4Nzc0MSwgODc3NTEsIDg3NzYxLCA4Nzc3MiwgODc3ODMsIDg3NzkzLCA4NzgwMywgCisgICAgODc4MTUsIDg3ODI2LCA4NzgzNywgODc4NDcsIDg3ODU3LCA4Nzg2NywgODc4NzcsIDg3ODg3LCA4Nzg5NywgODc5MDcsIAorICAgIDg3OTE5LCA4NzkyOSwgODc5MzksIDg3OTUxLCA4Nzk2MiwgODc5NzMsIDg3OTgzLCA4Nzk5MywgODgwMDMsIDg4MDEzLCAKKyAgICA4ODAyNSwgODgwMzUsIDg4MDQ1LCA4ODA1NiwgODgwNjcsIDg4MDc3LCA4ODA4NywgODgwOTYsIDg4MTA1LCA4ODExNCwgCisgICAgODgxMjMsIDg4MTMyLCA4ODE0MiwgMCwgMCwgODgxNTIsIDg4MTYyLCA4ODE3MiwgODgxODIsIDg4MTkyLCA4ODIwNCwgCisgICAgODgyMTQsIDg4MjI0LCA4ODIzNiwgODgyNDYsIDg4MjU4LCA4ODI2NywgODgyNzYsIDg4Mjg3LCA4ODI5NywgODgzMDksIAorICAgIDg4MzIwLCA4ODMzMywgODgzNDMsIDg4MzU1LCA4ODM2NCwgODgzNzUsIDg4Mzg2LCA4ODM5OSwgODg0MDksIDg4NDE5LCAKKyAgICA4ODQyOSwgODg0MzksIDg4NDQ5LCA4ODQ1OCwgODg0NjcsIDg4NDc2LCA4ODQ4NSwgODg0OTUsIDg4NTA1LCA4ODUxNSwgCisgICAgODg1MjUsIDg4NTM1LCA4ODU0NSwgODg1NTUsIDg4NTY1LCA4ODU3NSwgODg1ODUsIDg4NTk1LCA4ODYwNSwgODg2MTQsIAorICAgIDg4NjIzLCA4ODYzMiwgODg2NDIsIDg4NjUyLCA4ODY2MiwgODg2NzIsIDg4NjgyLCA4ODY5MywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODc4ODAsIDg3ODk1LCA4NzkxMCwgODc5MTYsIDg3OTIyLCA4NzkyOCwgCi0gICAgODc5MzQsIDg3OTQwLCA4Nzk0NiwgODc5NTIsIDg3OTU4LCA4Nzk2NiwgODc5NzAsIDg3OTczLCAwLCAwLCA4Nzk4MSwgCi0gICAgODc5ODQsIDg3OTg3LCA4Nzk5MCwgODc5OTMsIDg3OTk2LCA4Nzk5OSwgODgwMDIsIDg4MDA1LCA4ODAwOCwgODgwMTEsIAotICAgIDg4MDE0LCA4ODAxNywgODgwMjAsIDg4MDIzLCA4ODAyNiwgODgwMjksIDg4MDM3LCA4ODA0NiwgODgwNTcsIDg4MDY1LCAKLSAgICA4ODA3MywgODgwODIsIDg4MDkxLCA4ODEwMiwgODgxMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTI0LCA4ODEyOSwgODgxMzQsIAotICAgIDg4MTQxLCA4ODE0OCwgODgxNTQsIDg4MTYwLCA4ODE2NSwgODgxNzAsIDg4MTc1LCA4ODE4MSwgODgxODcsIDg4MTkzLCAKLSAgICA4ODE5OSwgODgyMDUsIDg4MjEyLCA4ODIxOSwgODgyMjksIDg4MjM5LCA4ODI0OSwgODgyNTgsIDg4MjY5LCA4ODI3OCwgCi0gICAgODgyODcsIDg4Mjk3LCA4ODMwNywgODgzMTksIDg4MzMxLCA4ODM0MiwgODgzNTMsIDg4MzY0LCA4ODM3NSwgODgzODUsIAotICAgIDg4Mzk1LCA4ODQwNSwgODg0MTUsIDg4NDI2LCA4ODQzNywgODg0NDEsIDg4NDQ2LCA4ODQ1NSwgODg0NjQsIDg4NDY4LCAKLSAgICA4ODQ3MiwgODg0NzYsIDg4NDgxLCA4ODQ4NiwgODg0OTEsIDg4NDk2LCA4ODQ5OSwgODg1MDMsIDAsIDg4NTA4LCA4ODUxMSwgCi0gICAgODg1MTQsIDg4NTE4LCA4ODUyMiwgODg1MjcsIDg4NTMxLCA4ODUzNSwgODg1NDAsIDg4NTQ1LCA4ODU1MiwgODg1NTksIAotICAgIDg4NTYyLCA4ODU2NSwgODg1NjgsIDg4NTcxLCA4ODU3NCwgODg1NzgsIDg4NTgyLCAwLCA4ODU4NiwgODg1OTEsIDg4NTk1LCAKLSAgICA4ODU5OSwgMCwgMCwgMCwgMCwgODg2MDQsIDg4NjA5LCA4ODYxNiwgODg2MjEsIDg4NjI2LCAwLCA4ODYzMSwgODg2MzYsIAotICAgIDg4NjQxLCA4ODY0NiwgODg2NTEsIDg4NjU2LCA4ODY2MSwgODg2NjYsIDg4NjcxLCA4ODY3NiwgODg2ODEsIDg4Njg3LCAKLSAgICA4ODY5NiwgODg3MDUsIDg4NzE0LCA4ODcyMywgODg3MzMsIDg4NzQzLCA4ODc1MywgODg3NjMsIDg4NzcyLCA4ODc4MSwgCi0gICAgODg3OTAsIDg4Nzk5LCA4ODgwNCwgODg4MDksIDg4ODE1LCA4ODgyMSwgODg4MjcsIDg4ODMzLCA4ODg0MSwgODg4NDksIAotICAgIDg4ODU1LCA4ODg2MSwgODg4NjcsIDg4ODczLCA4ODg3OSwgODg4ODUsIDg4ODkxLCA4ODg5NywgODg5MDIsIDg4OTA3LCAKLSAgICA4ODkxMiwgODg5MTcsIDg4OTIyLCA4ODkyNywgODg5MzIsIDg4OTM3LCA4ODk0MywgODg5NDksIDg4OTU1LCA4ODk2MSwgCi0gICAgODg5NjcsIDg4OTczLCA4ODk3OSwgODg5ODUsIDg4OTkxLCA4ODk5NywgODkwMDMsIDg5MDA5LCA4OTAxNSwgODkwMjEsIAotICAgIDg5MDI3LCA4OTAzMywgODkwMzksIDg5MDQ1LCA4OTA1MSwgODkwNTcsIDg5MDYzLCA4OTA2OSwgODkwNzUsIDg5MDgxLCAKLSAgICA4OTA4NywgODkwOTMsIDg5MDk5LCA4OTEwNSwgODkxMTEsIDg5MTE3LCA4OTEyMywgODkxMjksIDg5MTM1LCA4OTE0MSwgCi0gICAgODkxNDcsIDg5MTUzLCA4OTE1OSwgODkxNjUsIDg5MTcxLCA4OTE3NywgODkxODMsIDg5MTg5LCA4OTE5NSwgODkyMDEsIAotICAgIDg5MjA3LCA4OTIxMywgODkyMTksIDg5MjI1LCA4OTIzMSwgODkyMzcsIDg5MjQzLCA4OTI0OSwgODkyNTUsIDg5MjYxLCAKLSAgICA4OTI2NywgODkyNzMsIDg5Mjc5LCA4OTI4NSwgODkyOTEsIDg5Mjk3LCA4OTMwMiwgODkzMDcsIDg5MzEyLCA4OTMxNywgCi0gICAgODkzMjMsIDg5MzI5LCA4OTMzNSwgODkzNDEsIDg5MzQ3LCA4OTM1MywgODkzNTksIDg5MzY1LCA4OTM3MSwgODkzNzcsIAotICAgIDg5Mzg0LCA4OTM5MSwgODkzOTYsIDg5NDAxLCA4OTQwNiwgODk0MTEsIDg5NDIzLCA4OTQzNSwgODk0NDcsIDg5NDU5LCAKLSAgICA4OTQ3MiwgODk0ODUsIDg5NDkzLCAwLCAwLCA4OTUwMSwgMCwgODk1MDksIDg5NTEzLCA4OTUxNywgODk1MjAsIDg5NTI0LCAKLSAgICA4OTUyOCwgODk1MzEsIDg5NTM0LCA4OTUzOCwgODk1NDIsIDg5NTQ1LCA4OTU0OCwgODk1NTEsIDg5NTU0LCA4OTU1OSwgCi0gICAgODk1NjIsIDg5NTY2LCA4OTU2OSwgODk1NzIsIDg5NTc1LCA4OTU3OCwgODk1ODEsIDg5NTg0LCA4OTU4OCwgODk1OTEsIAotICAgIDg5NTk1LCA4OTU5OCwgODk2MDEsIDg5NjA1LCA4OTYwOSwgODk2MTMsIDg5NjE3LCA4OTYyMiwgODk2MjcsIDg5NjMzLCAKLSAgICA4OTYzOSwgODk2NDUsIDg5NjUwLCA4OTY1NiwgODk2NjIsIDg5NjY4LCA4OTY3MywgODk2NzksIDg5Njg1LCA4OTY5MCwgCi0gICAgODk2OTYsIDg5NzAyLCA4OTcwNywgODk3MTMsIDg5NzE5LCA4OTcyNCwgODk3MjksIDg5NzM1LCA4OTc0MCwgODk3NDYsIAotICAgIDg5NzUyLCA4OTc1OCwgODk3NjQsIDg5NzcwLCA4OTc3NCwgODk3NzksIDg5NzgzLCA4OTc4OCwgODk3OTIsIDg5Nzk3LCAKLSAgICA4OTgwMiwgODk4MDgsIDg5ODE0LCA4OTgyMCwgODk4MjUsIDg5ODMxLCA4OTgzNywgODk4NDMsIDg5ODQ4LCA4OTg1NCwgCi0gICAgODk4NjAsIDg5ODY1LCA4OTg3MSwgODk4NzcsIDg5ODgyLCA4OTg4OCwgODk4OTQsIDg5ODk5LCA4OTkwNCwgODk5MTAsIAotICAgIDg5OTE1LCA4OTkyMSwgODk5MjcsIDg5OTMzLCA4OTkzOSwgODk5NDUsIDg5OTUwLCA4OTk1NCwgODk5NTksIDg5OTYyLCAKLSAgICA4OTk2NywgODk5NzIsIDg5OTc4LCA4OTk4MywgODk5ODgsIDg5OTkyLCA4OTk5NywgOTAwMDIsIDkwMDA3LCA5MDAxMiwgCi0gICAgOTAwMTcsIDkwMDIyLCA5MDAyNywgOTAwMzIsIDkwMDM4LCA5MDA0NCwgOTAwNTAsIDkwMDU4LCA5MDA2MiwgOTAwNjYsIAotICAgIDkwMDcwLCA5MDA3NCwgOTAwNzgsIDkwMDgyLCA5MDA4NywgOTAwOTIsIDkwMDk3LCA5MDEwMiwgOTAxMDcsIDkwMTEyLCAKLSAgICA5MDExNywgOTAxMjIsIDkwMTI3LCA5MDEzMiwgOTAxMzcsIDkwMTQyLCA5MDE0NywgOTAxNTEsIDkwMTU2LCA5MDE2MSwgCi0gICAgOTAxNjYsIDkwMTcxLCA5MDE3NiwgOTAxODAsIDkwMTg1LCA5MDE5MCwgOTAxOTUsIDkwMjAwLCA5MDIwNCwgOTAyMDksIAotICAgIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjI4LCA5MDIzMywgOTAyMzgsIDkwMjQzLCA5MDI0OCwgOTAyNTMsIDkwMjU4LCAKLSAgICA5MDI2MywgOTAyNjgsIDkwMjczLCA5MDI4MCwgOTAyODcsIDkwMjkxLCA5MDI5NiwgOTAzMDEsIDkwMzA2LCA5MDMxMSwgCi0gICAgOTAzMTYsIDkwMzIxLCA5MDMyNiwgOTAzMzEsIDkwMzM2LCA5MDM0MSwgOTAzNDYsIDkwMzUxLCA5MDM1NiwgOTAzNjEsIAotICAgIDkwMzY2LCA5MDM3MSwgOTAzNzYsIDkwMzgxLCA5MDM4NiwgOTAzOTEsIDkwMzk2LCA5MDQwMSwgOTA0MDYsIDkwNDExLCAKLSAgICA5MDQxNiwgOTA0MjEsIDkwNDI2LCA5MDQzMSwgOTA0MzYsIDAsIDAsIDAsIDkwNDQxLCA5MDQ0NSwgOTA0NTAsIDkwNDU0LCAKLSAgICA5MDQ1OSwgOTA0NjQsIDAsIDAsIDkwNDY4LCA5MDQ3MywgOTA0NzgsIDkwNDgyLCA5MDQ4NywgOTA0OTIsIDAsIDAsIAotICAgIDkwNDk3LCA5MDUwMiwgOTA1MDYsIDkwNTExLCA5MDUxNiwgOTA1MjEsIDAsIDAsIDkwNTI2LCA5MDUzMSwgOTA1MzYsIDAsIAotICAgIDAsIDAsIDkwNTQwLCA5MDU0NCwgOTA1NDgsIDkwNTUyLCA5MDU1NSwgOTA1NTksIDkwNTYzLCAwLCA5MDU2NywgOTA1NzMsIAotICAgIDkwNTc2LCA5MDU3OSwgOTA1ODIsIDkwNTg1LCA5MDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA1OTMsIAotICAgIDkwNTk5LCA5MDYwNSwgOTA2MTEsIDkwNjE3LCAwLCAwLCA5MDYyMSwgOTA2MjcsIDkwNjMzLCA5MDYzOSwgOTA2NDUsIAotICAgIDkwNjUxLCA5MDY1OCwgOTA2NjUsIDkwNjcyLCA5MDY3OSwgOTA2ODYsIDkwNjkzLCAwLCA5MDcwMCwgOTA3MDcsIDkwNzE0LCAKLSAgICA5MDcyMCwgOTA3MjcsIDkwNzM0LCA5MDc0MSwgOTA3NDgsIDkwNzU0LCA5MDc2MSwgOTA3NjgsIDkwNzc1LCA5MDc4MiwgCi0gICAgOTA3ODksIDkwNzk2LCA5MDgwMywgOTA4MTAsIDkwODE3LCA5MDgyMywgOTA4MzAsIDkwODM3LCA5MDg0NCwgOTA4NTEsIAotICAgIDkwODU4LCA5MDg2NSwgOTA4NzIsIDAsIDkwODc5LCA5MDg4NiwgOTA4OTMsIDkwOTAwLCA5MDkwNywgOTA5MTQsIDkwOTIxLCAKLSAgICA5MDkyOCwgOTA5MzUsIDkwOTQyLCA5MDk0OSwgOTA5NTYsIDkwOTYzLCA5MDk3MCwgOTA5NzYsIDkwOTgzLCA5MDk5MCwgCi0gICAgOTA5OTcsIDkxMDA0LCAwLCA5MTAxMSwgOTEwMTgsIDAsIDkxMDI1LCA5MTAzMiwgOTEwMzksIDkxMDQ2LCA5MTA1MywgCi0gICAgOTEwNjAsIDkxMDY3LCA5MTA3NCwgOTEwODEsIDkxMDg4LCA5MTA5NSwgOTExMDIsIDkxMTA5LCA5MTExNiwgOTExMjMsIDAsIAotICAgIDAsIDkxMTI5LCA5MTEzNCwgOTExMzksIDkxMTQ0LCA5MTE0OSwgOTExNTQsIDkxMTU5LCA5MTE2NCwgOTExNjksIDkxMTc0LCAKLSAgICA5MTE3OSwgOTExODQsIDkxMTg5LCA5MTE5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTExOTksIDkxMjA2LCAKLSAgICA5MTIxMywgOTEyMjAsIDkxMjI3LCA5MTIzNCwgOTEyNDEsIDkxMjQ4LCA5MTI1NSwgOTEyNjIsIDkxMjY5LCA5MTI3NiwgCi0gICAgOTEyODMsIDkxMjkwLCA5MTI5NywgOTEzMDQsIDkxMzExLCA5MTMxOCwgOTEzMjUsIDkxMzMyLCA5MTM0MCwgOTEzNDgsIAotICAgIDkxMzU1LCA5MTM2MiwgOTEzNjcsIDkxMzc1LCA5MTM4MywgOTEzOTAsIDkxMzk3LCA5MTQwMiwgOTE0MDksIDkxNDE0LCAKLSAgICA5MTQxOSwgOTE0MjYsIDkxNDMxLCA5MTQzNiwgOTE0NDEsIDkxNDQ5LCA5MTQ1NCwgOTE0NTksIDkxNDY2LCA5MTQ3MSwgCi0gICAgOTE0NzYsIDkxNDgzLCA5MTQ5MCwgOTE0OTUsIDkxNTAwLCA5MTUwNSwgOTE1MTAsIDkxNTE1LCA5MTUyMCwgOTE1MjUsIAotICAgIDkxNTMwLCA5MTUzNSwgOTE1NDIsIDkxNTQ3LCA5MTU1NCwgOTE1NTksIDkxNTY0LCA5MTU2OSwgOTE1NzQsIDkxNTc5LCAKLSAgICA5MTU4NCwgOTE1ODksIDkxNTk0LCA5MTU5OSwgOTE2MDQsIDkxNjA5LCA5MTYxNiwgOTE2MjMsIDkxNjMwLCA5MTYzNywgCi0gICAgOTE2NDMsIDkxNjQ4LCA5MTY1NSwgOTE2NjAsIDkxNjY1LCA5MTY3NCwgOTE2ODEsIDkxNjkwLCA5MTY5NywgOTE3MDIsIAotICAgIDkxNzA3LCA5MTcxNSwgOTE3MjAsIDkxNzI1LCA5MTczMCwgOTE3MzUsIDkxNzQwLCA5MTc0NywgOTE3NTIsIDkxNzU3LCAKLSAgICA5MTc2MiwgOTE3NjcsIDkxNzcyLCA5MTc3OSwgOTE3ODYsIDkxNzkzLCA5MTgwMCwgOTE4MDcsIDkxODE0LCA5MTgyMSwgCi0gICAgOTE4MjgsIDkxODM1LCA5MTg0MiwgOTE4NDksIDkxODU2LCA5MTg2MywgOTE4NzAsIDkxODc3LCA5MTg4NCwgOTE4OTEsIAotICAgIDkxODk4LCA5MTkwNSwgOTE5MTIsIDkxOTE5LCA5MTkyNiwgOTE5MzMsIDkxOTQwLCA5MTk0NywgOTE5NTQsIDkxOTYxLCAKLSAgICA5MTk2OCwgMCwgMCwgMCwgMCwgMCwgOTE5NzUsIDkxOTgzLCA5MTk5MSwgMCwgMCwgMCwgMCwgOTE5OTYsIDkyMDAwLCAKLSAgICA5MjAwNCwgOTIwMDgsIDkyMDEyLCA5MjAxNiwgOTIwMjAsIDkyMDI1LCA5MjAyOSwgOTIwMzQsIDkyMDM5LCA5MjA0NCwgCi0gICAgOTIwNDksIDkyMDU0LCA5MjA1OSwgOTIwNjQsIDkyMDY5LCA5MjA3NCwgOTIwNzksIDkyMDg1LCA5MjA5MSwgOTIwOTcsIAotICAgIDkyMTA0LCA5MjExMSwgOTIxMTgsIDkyMTI1LCA5MjEzMiwgOTIxMzksIDkyMTQ1LCA5MjE1MSwgOTIxNTcsIDkyMTY0LCAKLSAgICA5MjE3MSwgOTIxNzgsIDkyMTg1LCA5MjE5MiwgOTIxOTksIDkyMjA2LCA5MjIxMywgOTIyMjAsIDkyMjI3LCA5MjIzNCwgCi0gICAgOTIyNDEsIDkyMjQ4LCA5MjI1NSwgMCwgMCwgMCwgOTIyNjIsIDkyMjcwLCA5MjI3OCwgOTIyODYsIDkyMjk0LCA5MjMwMiwgCi0gICAgOTIzMTIsIDkyMzIyLCA5MjMzMCwgOTIzMzgsIDkyMzQ2LCA5MjM1NCwgOTIzNjIsIDkyMzY4LCA5MjM3NSwgOTIzODQsIAotICAgIDkyMzkzLCA5MjQwMiwgOTI0MTEsIDkyNDIwLCA5MjQyOSwgOTI0MzksIDkyNDUwLCA5MjQ2MCwgOTI0NzEsIDkyNDgwLCAKLSAgICA5MjQ4OSwgOTI0OTgsIDkyNTA4LCA5MjUxOSwgOTI1MjksIDkyNTQwLCA5MjU1MSwgOTI1NjAsIDkyNTY4LCA5MjU3NCwgCi0gICAgOTI1ODAsIDkyNTg2LCA5MjU5MiwgOTI2MDAsIDkyNjA4LCA5MjYxNCwgOTI2MjEsIDkyNjMxLCA5MjYzOCwgOTI2NDUsIAotICAgIDkyNjUyLCA5MjY1OSwgOTI2NjYsIDkyNjc2LCA5MjY4MywgOTI2OTAsIDkyNjk4LCA5MjcwNiwgOTI3MTUsIDkyNzI0LCAKLSAgICA5MjczMywgOTI3NDIsIDkyNzUxLCA5Mjc1OSwgOTI3NjgsIDkyNzc3LCA5Mjc4NiwgOTI3OTAsIDkyNzk3LCA5MjgwMiwgCi0gICAgOTI4MDcsIDkyODExLCA5MjgxNSwgOTI4MTksIDkyODIzLCA5MjgyOCwgOTI4MzMsIDkyODM5LCA5Mjg0NSwgOTI4NDksIAotICAgIDkyODU1LCA5Mjg1OSwgOTI4NjMsIDkyODY3LCA5Mjg3MSwgOTI4NzUsIDkyODc5LCA5Mjg4NSwgOTI4ODksIDkyODk0LCAwLCAKLSAgICAwLCAwLCA5Mjg5OCwgOTI5MDMsIDkyOTA4LCA5MjkxMywgOTI5MTgsIDkyOTI1LCA5MjkzMCwgOTI5MzUsIDkyOTQwLCAKLSAgICA5Mjk0NSwgOTI5NTAsIDkyOTU1LCAwLCAwLCAwLCAwLCA5Mjk2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODg3MDMsIDg4NzE4LCA4ODczMywgODg3MzksIDg4NzQ1LCA4ODc1MSwgCisgICAgODg3NTcsIDg4NzYzLCA4ODc2OSwgODg3NzUsIDg4NzgxLCA4ODc4OSwgODg3OTMsIDg4Nzk2LCAwLCAwLCA4ODgwNCwgCisgICAgODg4MDcsIDg4ODEwLCA4ODgxMywgODg4MTYsIDg4ODE5LCA4ODgyMiwgODg4MjUsIDg4ODI4LCA4ODgzMSwgODg4MzQsIAorICAgIDg4ODM3LCA4ODg0MCwgODg4NDMsIDg4ODQ2LCA4ODg0OSwgODg4NTIsIDg4ODYwLCA4ODg2OSwgODg4ODAsIDg4ODg4LCAKKyAgICA4ODg5NiwgODg5MDUsIDg4OTE0LCA4ODkyNSwgODg5MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDg4OTQ3LCA4ODk1MiwgODg5NTcsIAorICAgIDg4OTY0LCA4ODk3MSwgODg5NzcsIDg4OTgzLCA4ODk4OCwgODg5OTMsIDg4OTk4LCA4OTAwNCwgODkwMTAsIDg5MDE2LCAKKyAgICA4OTAyMiwgODkwMjgsIDg5MDM1LCA4OTA0MiwgODkwNTIsIDg5MDYyLCA4OTA3MiwgODkwODEsIDg5MDkyLCA4OTEwMSwgCisgICAgODkxMTAsIDg5MTIwLCA4OTEzMCwgODkxNDIsIDg5MTU0LCA4OTE2NSwgODkxNzYsIDg5MTg3LCA4OTE5OCwgODkyMDgsIAorICAgIDg5MjE4LCA4OTIyOCwgODkyMzgsIDg5MjQ5LCA4OTI2MCwgODkyNjQsIDg5MjY5LCA4OTI3OCwgODkyODcsIDg5MjkxLCAKKyAgICA4OTI5NSwgODkyOTksIDg5MzA0LCA4OTMwOSwgODkzMTQsIDg5MzE5LCA4OTMyMiwgODkzMjYsIDAsIDg5MzMxLCA4OTMzNCwgCisgICAgODkzMzcsIDg5MzQxLCA4OTM0NSwgODkzNTAsIDg5MzU0LCA4OTM1OCwgODkzNjMsIDg5MzY4LCA4OTM3NSwgODkzODIsIAorICAgIDg5Mzg1LCA4OTM4OCwgODkzOTEsIDg5Mzk0LCA4OTM5NywgODk0MDEsIDg5NDA1LCAwLCA4OTQwOSwgODk0MTQsIDg5NDE4LCAKKyAgICA4OTQyMiwgMCwgMCwgMCwgMCwgODk0MjcsIDg5NDMyLCA4OTQzOSwgODk0NDQsIDg5NDQ5LCAwLCA4OTQ1NCwgODk0NTksIAorICAgIDg5NDY0LCA4OTQ2OSwgODk0NzQsIDg5NDc5LCA4OTQ4NCwgODk0ODksIDg5NDk0LCA4OTQ5OSwgODk1MDQsIDg5NTEwLCAKKyAgICA4OTUxOSwgODk1MjgsIDg5NTM3LCA4OTU0NiwgODk1NTYsIDg5NTY2LCA4OTU3NiwgODk1ODYsIDg5NTk1LCA4OTYwNCwgCisgICAgODk2MTMsIDg5NjIyLCA4OTYyNywgODk2MzIsIDg5NjM4LCA4OTY0NCwgODk2NTAsIDg5NjU2LCA4OTY2NCwgODk2NzIsIAorICAgIDg5Njc4LCA4OTY4NCwgODk2OTAsIDg5Njk2LCA4OTcwMiwgODk3MDgsIDg5NzE0LCA4OTcyMCwgODk3MjUsIDg5NzMwLCAKKyAgICA4OTczNSwgODk3NDAsIDg5NzQ1LCA4OTc1MCwgODk3NTUsIDg5NzYwLCA4OTc2NiwgODk3NzIsIDg5Nzc4LCA4OTc4NCwgCisgICAgODk3OTAsIDg5Nzk2LCA4OTgwMiwgODk4MDgsIDg5ODE0LCA4OTgyMCwgODk4MjYsIDg5ODMyLCA4OTgzOCwgODk4NDQsIAorICAgIDg5ODUwLCA4OTg1NiwgODk4NjIsIDg5ODY4LCA4OTg3NCwgODk4ODAsIDg5ODg2LCA4OTg5MiwgODk4OTgsIDg5OTA0LCAKKyAgICA4OTkxMCwgODk5MTYsIDg5OTIyLCA4OTkyOCwgODk5MzQsIDg5OTQwLCA4OTk0NiwgODk5NTIsIDg5OTU4LCA4OTk2NCwgCisgICAgODk5NzAsIDg5OTc2LCA4OTk4MiwgODk5ODgsIDg5OTk0LCA5MDAwMCwgOTAwMDYsIDkwMDEyLCA5MDAxOCwgOTAwMjQsIAorICAgIDkwMDMwLCA5MDAzNiwgOTAwNDIsIDkwMDQ4LCA5MDA1NCwgOTAwNjAsIDkwMDY2LCA5MDA3MiwgOTAwNzgsIDkwMDg0LCAKKyAgICA5MDA5MCwgOTAwOTYsIDkwMTAyLCA5MDEwOCwgOTAxMTQsIDkwMTIwLCA5MDEyNSwgOTAxMzAsIDkwMTM1LCA5MDE0MCwgCisgICAgOTAxNDYsIDkwMTUyLCA5MDE1OCwgOTAxNjQsIDkwMTcwLCA5MDE3NiwgOTAxODIsIDkwMTg4LCA5MDE5NCwgOTAyMDAsIAorICAgIDkwMjA3LCA5MDIxNCwgOTAyMTksIDkwMjI0LCA5MDIyOSwgOTAyMzQsIDkwMjQ2LCA5MDI1OCwgOTAyNzAsIDkwMjgyLCAKKyAgICA5MDI5NSwgOTAzMDgsIDkwMzE2LCAwLCAwLCA5MDMyNCwgMCwgOTAzMzIsIDkwMzM2LCA5MDM0MCwgOTAzNDMsIDkwMzQ3LCAKKyAgICA5MDM1MSwgOTAzNTQsIDkwMzU3LCA5MDM2MSwgOTAzNjUsIDkwMzY4LCA5MDM3MSwgOTAzNzQsIDkwMzc3LCA5MDM4MiwgCisgICAgOTAzODUsIDkwMzg5LCA5MDM5MiwgOTAzOTUsIDkwMzk4LCA5MDQwMSwgOTA0MDQsIDkwNDA3LCA5MDQxMSwgOTA0MTQsIAorICAgIDkwNDE4LCA5MDQyMSwgOTA0MjQsIDkwNDI4LCA5MDQzMiwgOTA0MzYsIDkwNDQwLCA5MDQ0NSwgOTA0NTAsIDkwNDU2LCAKKyAgICA5MDQ2MiwgOTA0NjgsIDkwNDczLCA5MDQ3OSwgOTA0ODUsIDkwNDkxLCA5MDQ5NiwgOTA1MDIsIDkwNTA4LCA5MDUxMywgCisgICAgOTA1MTksIDkwNTI1LCA5MDUzMCwgOTA1MzYsIDkwNTQyLCA5MDU0NywgOTA1NTMsIDkwNTU5LCA5MDU2NCwgOTA1NzAsIAorICAgIDkwNTc2LCA5MDU4MiwgOTA1ODgsIDkwNTk0LCA5MDU5OCwgOTA2MDMsIDkwNjA3LCA5MDYxMiwgOTA2MTYsIDkwNjIxLCAKKyAgICA5MDYyNiwgOTA2MzIsIDkwNjM4LCA5MDY0NCwgOTA2NDksIDkwNjU1LCA5MDY2MSwgOTA2NjcsIDkwNjcyLCA5MDY3OCwgCisgICAgOTA2ODQsIDkwNjg5LCA5MDY5NSwgOTA3MDEsIDkwNzA2LCA5MDcxMiwgOTA3MTgsIDkwNzIzLCA5MDcyOSwgOTA3MzUsIAorICAgIDkwNzQwLCA5MDc0NiwgOTA3NTIsIDkwNzU4LCA5MDc2NCwgOTA3NzAsIDkwNzc1LCA5MDc3OSwgOTA3ODQsIDkwNzg3LCAKKyAgICA5MDc5MiwgOTA3OTcsIDkwODAzLCA5MDgwOCwgOTA4MTMsIDkwODE3LCA5MDgyMiwgOTA4MjcsIDkwODMyLCA5MDgzNywgCisgICAgOTA4NDIsIDkwODQ3LCA5MDg1MiwgOTA4NTcsIDkwODYzLCA5MDg2OSwgOTA4NzUsIDkwODgzLCA5MDg4NywgOTA4OTEsIAorICAgIDkwODk1LCA5MDg5OSwgOTA5MDMsIDkwOTA3LCA5MDkxMiwgOTA5MTcsIDkwOTIyLCA5MDkyNywgOTA5MzIsIDkwOTM3LCAKKyAgICA5MDk0MiwgOTA5NDcsIDkwOTUyLCA5MDk1NywgOTA5NjIsIDkwOTY3LCA5MDk3MiwgOTA5NzYsIDkwOTgwLCA5MDk4NSwgCisgICAgOTA5OTAsIDkwOTk1LCA5MTAwMCwgOTEwMDQsIDkxMDA5LCA5MTAxNCwgOTEwMTksIDkxMDI0LCA5MTAyOCwgOTEwMzMsIAorICAgIDkxMDM4LCA5MTA0MywgOTEwNDgsIDkxMDUyLCA5MTA1NywgOTEwNjIsIDkxMDY3LCA5MTA3MiwgOTEwNzcsIDkxMDgyLCAKKyAgICA5MTA4NywgOTEwOTIsIDkxMDk3LCA5MTEwNCwgOTExMTEsIDkxMTE1LCA5MTEyMCwgOTExMjUsIDkxMTMwLCA5MTEzNSwgCisgICAgOTExNDAsIDkxMTQ1LCA5MTE1MCwgOTExNTUsIDkxMTYwLCA5MTE2NSwgOTExNzAsIDkxMTc1LCA5MTE4MCwgOTExODUsIAorICAgIDkxMTkwLCA5MTE5NSwgOTEyMDAsIDkxMjA1LCA5MTIxMCwgOTEyMTUsIDkxMjIwLCA5MTIyNSwgOTEyMzAsIDkxMjM1LCAKKyAgICA5MTI0MCwgOTEyNDUsIDkxMjUwLCA5MTI1NSwgOTEyNjAsIDAsIDAsIDAsIDkxMjY1LCA5MTI2OSwgOTEyNzQsIDkxMjc4LCAKKyAgICA5MTI4MywgOTEyODgsIDAsIDAsIDkxMjkyLCA5MTI5NywgOTEzMDIsIDkxMzA2LCA5MTMxMSwgOTEzMTYsIDAsIDAsIAorICAgIDkxMzIxLCA5MTMyNiwgOTEzMzAsIDkxMzM1LCA5MTM0MCwgOTEzNDUsIDAsIDAsIDkxMzUwLCA5MTM1NSwgOTEzNjAsIDAsIAorICAgIDAsIDAsIDkxMzY0LCA5MTM2OCwgOTEzNzIsIDkxMzc2LCA5MTM3OSwgOTEzODMsIDkxMzg3LCAwLCA5MTM5MSwgOTEzOTcsIAorICAgIDkxNDAwLCA5MTQwMywgOTE0MDYsIDkxNDA5LCA5MTQxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE0MTcsIAorICAgIDkxNDIzLCA5MTQyOSwgOTE0MzUsIDkxNDQxLCAwLCAwLCA5MTQ0NSwgOTE0NTEsIDkxNDU3LCA5MTQ2MywgOTE0NjksIAorICAgIDkxNDc1LCA5MTQ4MiwgOTE0ODksIDkxNDk2LCA5MTUwMywgOTE1MTAsIDkxNTE3LCAwLCA5MTUyNCwgOTE1MzEsIDkxNTM4LCAKKyAgICA5MTU0NCwgOTE1NTEsIDkxNTU4LCA5MTU2NSwgOTE1NzIsIDkxNTc4LCA5MTU4NSwgOTE1OTIsIDkxNTk5LCA5MTYwNiwgCisgICAgOTE2MTIsIDkxNjE5LCA5MTYyNiwgOTE2MzMsIDkxNjQwLCA5MTY0NiwgOTE2NTMsIDkxNjYwLCA5MTY2NywgOTE2NzQsIAorICAgIDkxNjgxLCA5MTY4OCwgOTE2OTUsIDAsIDkxNzAyLCA5MTcwOSwgOTE3MTYsIDkxNzIzLCA5MTczMCwgOTE3MzcsIDkxNzQ0LCAKKyAgICA5MTc1MSwgOTE3NTgsIDkxNzY1LCA5MTc3MiwgOTE3NzksIDkxNzg2LCA5MTc5MywgOTE3OTksIDkxODA2LCA5MTgxMywgCisgICAgOTE4MjAsIDkxODI3LCAwLCA5MTgzNCwgOTE4NDEsIDAsIDkxODQ4LCA5MTg1NSwgOTE4NjIsIDkxODY5LCA5MTg3NiwgCisgICAgOTE4ODMsIDkxODkwLCA5MTg5NywgOTE5MDQsIDkxOTExLCA5MTkxOCwgOTE5MjUsIDkxOTMyLCA5MTkzOSwgOTE5NDYsIDAsIAorICAgIDAsIDkxOTUyLCA5MTk1NywgOTE5NjIsIDkxOTY3LCA5MTk3MiwgOTE5NzcsIDkxOTgyLCA5MTk4NywgOTE5OTIsIDkxOTk3LCAKKyAgICA5MjAwMiwgOTIwMDcsIDkyMDEyLCA5MjAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTIwMjIsIDkyMDI5LCAKKyAgICA5MjAzNiwgOTIwNDMsIDkyMDUwLCA5MjA1NywgOTIwNjQsIDkyMDcxLCA5MjA3OCwgOTIwODUsIDkyMDkyLCA5MjA5OSwgCisgICAgOTIxMDYsIDkyMTEzLCA5MjEyMCwgOTIxMjcsIDkyMTM0LCA5MjE0MSwgOTIxNDgsIDkyMTU1LCA5MjE2MywgOTIxNzEsIAorICAgIDkyMTc4LCA5MjE4NSwgOTIxOTAsIDkyMTk4LCA5MjIwNiwgOTIyMTMsIDkyMjIwLCA5MjIyNSwgOTIyMzIsIDkyMjM3LCAKKyAgICA5MjI0MiwgOTIyNDksIDkyMjU0LCA5MjI1OSwgOTIyNjQsIDkyMjcyLCA5MjI3NywgOTIyODIsIDkyMjg5LCA5MjI5NCwgCisgICAgOTIyOTksIDkyMzA2LCA5MjMxMywgOTIzMTgsIDkyMzIzLCA5MjMyOCwgOTIzMzMsIDkyMzM4LCA5MjM0MywgOTIzNDgsIAorICAgIDkyMzUzLCA5MjM1OCwgOTIzNjUsIDkyMzcwLCA5MjM3NywgOTIzODIsIDkyMzg3LCA5MjM5MiwgOTIzOTcsIDkyNDAyLCAKKyAgICA5MjQwNywgOTI0MTIsIDkyNDE3LCA5MjQyMiwgOTI0MjcsIDkyNDMyLCA5MjQzOSwgOTI0NDYsIDkyNDUzLCA5MjQ2MCwgCisgICAgOTI0NjYsIDkyNDcxLCA5MjQ3OCwgOTI0ODMsIDkyNDg4LCA5MjQ5NywgOTI1MDQsIDkyNTEzLCA5MjUyMCwgOTI1MjUsIAorICAgIDkyNTMwLCA5MjUzOCwgOTI1NDMsIDkyNTQ4LCA5MjU1MywgOTI1NTgsIDkyNTYzLCA5MjU3MCwgOTI1NzUsIDkyNTgwLCAKKyAgICA5MjU4NSwgOTI1OTAsIDkyNTk1LCA5MjYwMiwgOTI2MDksIDkyNjE2LCA5MjYyMywgOTI2MzAsIDkyNjM3LCA5MjY0NCwgCisgICAgOTI2NTEsIDkyNjU4LCA5MjY2NSwgOTI2NzIsIDkyNjc5LCA5MjY4NiwgOTI2OTMsIDkyNzAwLCA5MjcwNywgOTI3MTQsIAorICAgIDkyNzIxLCA5MjcyOCwgOTI3MzUsIDkyNzQyLCA5Mjc0OSwgOTI3NTYsIDkyNzYzLCA5Mjc3MCwgOTI3NzcsIDkyNzg0LCAKKyAgICA5Mjc5MSwgMCwgMCwgMCwgMCwgMCwgOTI3OTgsIDkyODA2LCA5MjgxNCwgMCwgMCwgMCwgMCwgOTI4MTksIDkyODIzLCAKKyAgICA5MjgyNywgOTI4MzEsIDkyODM1LCA5MjgzOSwgOTI4NDMsIDkyODQ4LCA5Mjg1MiwgOTI4NTcsIDkyODYyLCA5Mjg2NywgCisgICAgOTI4NzIsIDkyODc3LCA5Mjg4MiwgOTI4ODcsIDkyODkyLCA5Mjg5NywgOTI5MDIsIDkyOTA4LCA5MjkxNCwgOTI5MjAsIAorICAgIDkyOTI3LCA5MjkzNCwgOTI5NDEsIDkyOTQ4LCA5Mjk1NSwgOTI5NjIsIDkyOTY4LCA5Mjk3NCwgOTI5ODAsIDkyOTg3LCAKKyAgICA5Mjk5NCwgOTMwMDEsIDkzMDA4LCA5MzAxNSwgOTMwMjIsIDkzMDI5LCA5MzAzNiwgOTMwNDMsIDkzMDUwLCA5MzA1NywgCisgICAgOTMwNjQsIDkzMDcxLCA5MzA3OCwgMCwgMCwgMCwgOTMwODUsIDkzMDkzLCA5MzEwMSwgOTMxMDksIDkzMTE3LCA5MzEyNSwgCisgICAgOTMxMzUsIDkzMTQ1LCA5MzE1MywgOTMxNjEsIDkzMTY5LCA5MzE3NywgOTMxODUsIDkzMTkxLCA5MzE5OCwgOTMyMDcsIAorICAgIDkzMjE2LCA5MzIyNSwgOTMyMzQsIDkzMjQzLCA5MzI1MiwgOTMyNjIsIDkzMjczLCA5MzI4MywgOTMyOTQsIDkzMzAzLCAKKyAgICA5MzMxMiwgOTMzMjEsIDkzMzMxLCA5MzM0MiwgOTMzNTIsIDkzMzYzLCA5MzM3NCwgOTMzODMsIDkzMzkxLCA5MzM5NywgCisgICAgOTM0MDMsIDkzNDA5LCA5MzQxNSwgOTM0MjMsIDkzNDMxLCA5MzQzNywgOTM0NDQsIDkzNDU0LCA5MzQ2MSwgOTM0NjgsIAorICAgIDkzNDc1LCA5MzQ4MiwgOTM0ODksIDkzNDk5LCA5MzUwNiwgOTM1MTMsIDkzNTIxLCA5MzUyOSwgOTM1MzgsIDkzNTQ3LCAKKyAgICA5MzU1NiwgOTM1NjUsIDkzNTc0LCA5MzU4MiwgOTM1OTEsIDkzNjAwLCA5MzYwOSwgOTM2MTMsIDkzNjIwLCA5MzYyNSwgCisgICAgOTM2MzAsIDkzNjM0LCA5MzYzOCwgOTM2NDIsIDkzNjQ2LCA5MzY1MSwgOTM2NTYsIDkzNjYyLCA5MzY2OCwgOTM2NzIsIAorICAgIDkzNjc4LCA5MzY4MiwgOTM2ODYsIDkzNjkwLCA5MzY5NCwgOTM2OTgsIDkzNzAyLCA5MzcwOCwgOTM3MTIsIDkzNzE3LCAKKyAgICA5MzcyMSwgOTM3MjUsIDAsIDkzNzI4LCA5MzczMywgOTM3MzgsIDkzNzQzLCA5Mzc0OCwgOTM3NTUsIDkzNzYwLCA5Mzc2NSwgCisgICAgOTM3NzAsIDkzNzc1LCA5Mzc4MCwgOTM3ODUsIDAsIDAsIDAsIDAsIDkzNzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5Mjk2NiwgOTI5NzMsIDkyOTgyLCA5Mjk5MSwgOTI5OTgsIAotICAgIDkzMDA1LCA5MzAxMiwgOTMwMTksIDkzMDI2LCA5MzAzMywgOTMwMzksIDkzMDQ2LCA5MzA1MywgOTMwNjAsIDkzMDY3LCAKLSAgICA5MzA3NCwgOTMwODEsIDkzMDg4LCA5MzA5NSwgOTMxMDQsIDkzMTExLCA5MzExOCwgOTMxMjUsIDkzMTMyLCA5MzEzOSwgCi0gICAgOTMxNDYsIDkzMTUzLCA5MzE2MCwgOTMxNjksIDkzMTc2LCA5MzE4MywgOTMxOTAsIDkzMTk3LCA5MzIwNCwgOTMyMTEsIAotICAgIDkzMjIwLCA5MzIyNywgOTMyMzQsIDkzMjQxLCA5MzI0OCwgOTMyNTcsIDkzMjY0LCA5MzI3MSwgOTMyNzgsIDkzMjg2LCAKLSAgICA5MzI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM3OTYsIDkzODAzLCA5MzgxMiwgOTM4MjEsIAorICAgIDkzODI4LCA5MzgzNSwgOTM4NDIsIDkzODQ5LCA5Mzg1NiwgOTM4NjMsIDkzODY5LCA5Mzg3NiwgOTM4ODMsIDkzODkwLCAKKyAgICA5Mzg5NywgOTM5MDQsIDkzOTExLCA5MzkxOCwgOTM5MjUsIDkzOTM0LCA5Mzk0MSwgOTM5NDgsIDkzOTU1LCA5Mzk2MiwgCisgICAgOTM5NjksIDkzOTc2LCA5Mzk4MywgOTM5OTAsIDkzOTk5LCA5NDAwNiwgOTQwMTMsIDk0MDIwLCA5NDAyNywgOTQwMzQsIAorICAgIDk0MDQxLCA5NDA1MCwgOTQwNTcsIDk0MDY0LCA5NDA3MSwgOTQwNzgsIDk0MDg3LCA5NDA5NCwgOTQxMDEsIDk0MTA4LCAKKyAgICA5NDExNiwgOTQxMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkzMzA0LCA5MzMwOCwgOTMzMTIsIDkzMzE3LCA5MzMyMiwgCi0gICAgOTMzMjcsIDkzMzMyLCA5MzMzNiwgOTMzNDEsIDkzMzQ2LCA5MzM1MSwgOTMzNTYsIDkzMzYxLCA5MzM2NiwgOTMzNzAsIAotICAgIDkzMzc1LCA5MzM4MCwgOTMzODUsIDkzMzkwLCA5MzM5NCwgOTMzOTksIDkzNDA0LCA5MzQwOCwgOTM0MTIsIDkzNDE3LCAKLSAgICA5MzQyMiwgOTM0MjcsIDkzNDMyLCA5MzQzNywgMCwgMCwgMCwgOTM0NDIsIDkzNDQ2LCA5MzQ1MSwgOTM0NTYsIDkzNDYwLCAKLSAgICA5MzQ2NSwgOTM0NjksIDkzNDc0LCA5MzQ3OSwgOTM0ODQsIDkzNDg5LCA5MzQ5NCwgOTM0OTgsIDkzNTAzLCA5MzUwOCwgCi0gICAgOTM1MTMsIDkzNTE4LCA5MzUyMiwgOTM1MjcsIDkzNTMxLCA5MzUzNiwgOTM1NDEsIDkzNTQ2LCA5MzU1MSwgOTM1NTYsIAotICAgIDkzNTYxLCA5MzU2NSwgOTM1NjksIDkzNTc0LCA5MzU3OSwgOTM1ODQsIDkzNTg5LCA5MzU5NCwgOTM1OTksIDkzNjA0LCAKLSAgICA5MzYwOSwgOTM2MTQsIDkzNjE5LCA5MzYyNCwgOTM2MjksIDkzNjM0LCA5MzYzOSwgOTM2NDQsIDkzNjQ5LCA5MzY1NCwgCi0gICAgOTM2NTksIDkzNjY0LCA5MzY2OSwgOTM2NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDkzNjc5LCA5MzY4NSwgOTM2OTAsIDkzNjk1LCA5MzcwMCwgOTM3MDUsIDkzNzEwLCA5MzcxNSwgOTM3MjEsIDkzNzI2LCAKLSAgICA5MzczMiwgOTM3MzgsIDkzNzQ0LCA5Mzc1MCwgOTM3NTYsIDkzNzYyLCA5Mzc2OCwgOTM3NzQsIDkzNzgwLCA5Mzc4NiwgCi0gICAgOTM3OTMsIDkzODAwLCA5MzgwNywgOTM4MTUsIDkzODIzLCA5MzgzMSwgOTM4MzksIDkzODQ3LCAwLCAwLCAwLCAwLCAKLSAgICA5Mzg1NSwgOTM4NTksIDkzODY0LCA5Mzg2OSwgOTM4NzQsIDkzODc4LCA5Mzg4MywgOTM4ODgsIDkzODkzLCA5Mzg5OCwgCi0gICAgOTM5MDIsIDkzOTA2LCA5MzkxMSwgOTM5MTYsIDkzOTIxLCA5MzkyNiwgOTM5MzAsIDkzOTM1LCA5Mzk0MCwgOTM5NDUsIAotICAgIDkzOTUwLCA5Mzk1NSwgOTM5NjAsIDkzOTY0LCA5Mzk2OSwgOTM5NzQsIDkzOTc5LCA5Mzk4NCwgOTM5ODksIDkzOTk0LCAKLSAgICA5Mzk5OSwgOTQwMDQsIDk0MDA5LCA5NDAxNCwgOTQwMTksIDk0MDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA5NDAzMSwgOTQwMzYsIDk0MDQxLCA5NDA0NiwgOTQwNTEsIDk0MDU2LCA5NDA2MSwgOTQwNjYsIDk0MDcxLCAKLSAgICA5NDA3NiwgOTQwODEsIDk0MDg2LCA5NDA5MSwgOTQwOTYsIDk0MTAxLCA5NDEwNiwgOTQxMTEsIDk0MTE2LCA5NDEyMSwgCi0gICAgOTQxMjYsIDk0MTMxLCA5NDEzNiwgOTQxNDEsIDk0MTQ2LCA5NDE1MSwgOTQxNTYsIDk0MTYxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NDE2OCwgOTQxNzQsIDk0MTgwLCA5NDE4NiwgOTQxOTIsIDk0MTk3LCA5NDIwMywgOTQyMDksIDk0MjE1LCA5NDIyMSwgCi0gICAgOTQyMjYsIDk0MjMyLCA5NDIzOCwgOTQyNDQsIDk0MjUwLCA5NDI1NiwgOTQyNjIsIDk0MjY4LCA5NDI3NCwgOTQyODAsIAotICAgIDk0Mjg1LCA5NDI5MSwgOTQyOTcsIDk0MzAzLCA5NDMwOSwgOTQzMTUsIDk0MzIwLCA5NDMyNiwgOTQzMzIsIDk0MzM3LCAKLSAgICA5NDM0MywgOTQzNDksIDk0MzU1LCA5NDM2MSwgOTQzNjcsIDk0MzczLCA5NDM3OSwgOTQzODQsIDk0MzkwLCA5NDM5NywgCi0gICAgOTQ0MDQsIDk0NDExLCA5NDQxOCwgMCwgMCwgMCwgMCwgMCwgOTQ0MjUsIDk0NDMwLCA5NDQzNSwgOTQ0NDAsIDk0NDQ1LCAKLSAgICA5NDQ1MCwgOTQ0NTUsIDk0NDYwLCA5NDQ2NSwgOTQ0NzAsIDk0NDc1LCA5NDQ4MCwgOTQ0ODUsIDk0NDkwLCA5NDQ5NSwgCi0gICAgOTQ1MDAsIDk0NTA1LCA5NDUxMCwgOTQ1MTUsIDk0NTIwLCA5NDUyNSwgOTQ1MzAsIDk0NTM1LCA5NDU0MCwgOTQ1NDUsIAotICAgIDk0NTUwLCA5NDU1NSwgOTQ1NTksIDk0NTYzLCA5NDU2NywgMCwgOTQ1NzIsIDk0NTc4LCA5NDU4MywgOTQ1ODgsIDk0NTkzLCAKLSAgICA5NDU5OCwgOTQ2MDQsIDk0NjEwLCA5NDYxNiwgOTQ2MjIsIDk0NjI4LCA5NDYzNCwgOTQ2NDAsIDk0NjQ2LCA5NDY1MiwgCi0gICAgOTQ2NTgsIDk0NjY0LCA5NDY3MCwgOTQ2NzYsIDk0NjgxLCA5NDY4NywgOTQ2OTMsIDk0Njk5LCA5NDcwNSwgOTQ3MTAsIAotICAgIDk0NzE2LCA5NDcyMiwgOTQ3MjcsIDk0NzMzLCA5NDczOSwgOTQ3NDUsIDk0NzUxLCA5NDc1NywgOTQ3NjMsIDk0NzY5LCAKLSAgICA5NDc3NSwgOTQ3ODEsIDAsIDAsIDAsIDAsIDk0Nzg2LCA5NDc5MiwgOTQ3OTgsIDk0ODA0LCA5NDgxMCwgOTQ4MTYsIAotICAgIDk0ODIyLCA5NDgyOCwgOTQ4MzQsIDk0ODQxLCA5NDg0NiwgOTQ4NTEsIDk0ODU3LCA5NDg2MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQxMzQsIDk0MTM4LCA5NDE0MiwgOTQxNDcsIAorICAgIDk0MTUyLCA5NDE1NywgOTQxNjIsIDk0MTY2LCA5NDE3MSwgOTQxNzYsIDk0MTgxLCA5NDE4NiwgOTQxOTEsIDk0MTk2LCAKKyAgICA5NDIwMCwgOTQyMDUsIDk0MjEwLCA5NDIxNSwgOTQyMjAsIDk0MjI0LCA5NDIyOSwgOTQyMzQsIDk0MjM4LCA5NDI0MywgCisgICAgOTQyNDgsIDk0MjUzLCA5NDI1OCwgOTQyNjMsIDk0MjY4LCAwLCAwLCAwLCA5NDI3MywgOTQyNzcsIDk0MjgyLCA5NDI4NywgCisgICAgOTQyOTEsIDk0Mjk2LCA5NDMwMCwgOTQzMDUsIDk0MzEwLCA5NDMxNSwgOTQzMjAsIDk0MzI1LCA5NDMyOSwgOTQzMzQsIAorICAgIDk0MzM5LCA5NDM0NCwgOTQzNDksIDk0MzU0LCA5NDM1OSwgOTQzNjMsIDk0MzY4LCA5NDM3MywgOTQzNzgsIDk0MzgzLCAKKyAgICA5NDM4OCwgOTQzOTMsIDk0Mzk3LCA5NDQwMSwgOTQ0MDYsIDk0NDExLCA5NDQxNiwgOTQ0MjEsIDk0NDI2LCA5NDQzMSwgCisgICAgOTQ0MzYsIDk0NDQxLCA5NDQ0NiwgOTQ0NTEsIDk0NDU2LCA5NDQ2MSwgOTQ0NjYsIDk0NDcxLCA5NDQ3NiwgOTQ0ODEsIAorICAgIDk0NDg2LCA5NDQ5MSwgOTQ0OTYsIDk0NTAxLCA5NDUwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTQ1MTEsIDk0NTE3LCA5NDUyMiwgOTQ1MjcsIDk0NTMyLCA5NDUzNywgOTQ1NDIsIDk0NTQ3LCA5NDU1MywgCisgICAgOTQ1NTgsIDk0NTY0LCA5NDU3MCwgOTQ1NzYsIDk0NTgyLCA5NDU4OCwgOTQ1OTQsIDk0NjAwLCA5NDYwNiwgOTQ2MTIsIAorICAgIDk0NjE4LCA5NDYyNSwgOTQ2MzIsIDk0NjM5LCA5NDY0NywgOTQ2NTUsIDk0NjYzLCA5NDY3MSwgOTQ2NzksIDAsIDAsIDAsIAorICAgIDAsIDk0Njg3LCA5NDY5MSwgOTQ2OTYsIDk0NzAxLCA5NDcwNiwgOTQ3MTAsIDk0NzE1LCA5NDcyMCwgOTQ3MjUsIDk0NzMwLCAKKyAgICA5NDczNCwgOTQ3MzgsIDk0NzQzLCA5NDc0OCwgOTQ3NTMsIDk0NzU4LCA5NDc2MiwgOTQ3NjcsIDk0NzcyLCA5NDc3NywgCisgICAgOTQ3ODIsIDk0Nzg3LCA5NDc5MiwgOTQ3OTYsIDk0ODAxLCA5NDgwNiwgOTQ4MTEsIDk0ODE2LCA5NDgyMSwgOTQ4MjYsIAorICAgIDk0ODMxLCA5NDgzNiwgOTQ4NDEsIDk0ODQ2LCA5NDg1MSwgOTQ4NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDk0ODYzLCA5NDg2OCwgOTQ4NzMsIDk0ODc4LCA5NDg4MywgOTQ4ODgsIDk0ODkzLCA5NDg5OCwgOTQ5MDMsIAorICAgIDk0OTA4LCA5NDkxMywgOTQ5MTgsIDk0OTIzLCA5NDkyOCwgOTQ5MzMsIDk0OTM4LCA5NDk0MywgOTQ5NDgsIDk0OTUzLCAKKyAgICA5NDk1OCwgOTQ5NjMsIDk0OTY4LCA5NDk3MywgOTQ5NzgsIDk0OTgzLCA5NDk4OCwgOTQ5OTMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1MDAwLCA5NTAwNiwgOTUwMTIsIDk1MDE4LCA5NTAyNCwgOTUwMjksIDk1MDM1LCA5NTA0MSwgOTUwNDcsIDk1MDUzLCAKKyAgICA5NTA1OCwgOTUwNjQsIDk1MDcwLCA5NTA3NiwgOTUwODIsIDk1MDg4LCA5NTA5NCwgOTUxMDAsIDk1MTA2LCA5NTExMiwgCisgICAgOTUxMTcsIDk1MTIzLCA5NTEyOSwgOTUxMzUsIDk1MTQxLCA5NTE0NywgOTUxNTIsIDk1MTU4LCA5NTE2NCwgOTUxNjksIAorICAgIDk1MTc1LCA5NTE4MSwgOTUxODcsIDk1MTkzLCA5NTE5OSwgOTUyMDUsIDk1MjExLCA5NTIxNiwgOTUyMjIsIDk1MjI5LCAKKyAgICA5NTIzNiwgOTUyNDMsIDk1MjUwLCAwLCAwLCAwLCAwLCAwLCA5NTI1NywgOTUyNjIsIDk1MjY3LCA5NTI3MiwgOTUyNzcsIAorICAgIDk1MjgyLCA5NTI4NywgOTUyOTIsIDk1Mjk3LCA5NTMwMiwgOTUzMDcsIDk1MzEyLCA5NTMxNywgOTUzMjIsIDk1MzI3LCAKKyAgICA5NTMzMiwgOTUzMzcsIDk1MzQyLCA5NTM0NywgOTUzNTIsIDk1MzU3LCA5NTM2MiwgOTUzNjcsIDk1MzcyLCA5NTM3NywgCisgICAgOTUzODIsIDk1Mzg3LCA5NTM5MSwgOTUzOTUsIDk1Mzk5LCAwLCA5NTQwNCwgOTU0MTAsIDk1NDE1LCA5NTQyMCwgOTU0MjUsIAorICAgIDk1NDMwLCA5NTQzNiwgOTU0NDIsIDk1NDQ4LCA5NTQ1NCwgOTU0NjAsIDk1NDY2LCA5NTQ3MiwgOTU0NzgsIDk1NDg0LCAKKyAgICA5NTQ5MCwgOTU0OTYsIDk1NTAyLCA5NTUwOCwgOTU1MTMsIDk1NTE5LCA5NTUyNSwgOTU1MzAsIDk1NTM2LCA5NTU0MSwgCisgICAgOTU1NDcsIDk1NTUzLCA5NTU1OCwgOTU1NjQsIDk1NTcwLCA5NTU3NiwgOTU1ODIsIDk1NTg3LCA5NTU5MywgOTU1OTksIAorICAgIDk1NjA1LCA5NTYxMSwgMCwgMCwgMCwgMCwgOTU2MTYsIDk1NjIyLCA5NTYyOCwgOTU2MzQsIDk1NjQwLCA5NTY0NiwgCisgICAgOTU2NTIsIDk1NjU4LCA5NTY2NCwgOTU2NzEsIDk1Njc2LCA5NTY4MSwgOTU2ODcsIDk1NjkzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDg2OSwgOTQ4NzUsIDk0ODgxLCA5NDg4NywgOTQ4OTQsIAotICAgIDk0OTAwLCA5NDkwNywgOTQ5MTQsIDk0OTIxLCA5NDkyOCwgOTQ5MzYsIDk0OTQzLCA5NDk1MSwgOTQ5NTcsIDk0OTYzLCAKLSAgICA5NDk2OSwgOTQ5NzUsIDk0OTgxLCA5NDk4NywgOTQ5OTMsIDk0OTk5LCA5NTAwNSwgOTUwMTEsIDk1MDE3LCA5NTAyMywgCi0gICAgOTUwMjksIDk1MDM1LCA5NTA0MSwgOTUwNDcsIDk1MDUzLCA5NTA1OSwgOTUwNjUsIDk1MDcxLCA5NTA3NywgOTUwODMsIAotICAgIDk1MDg5LCA5NTA5NSwgOTUxMDEsIDk1MTA3LCA5NTExMywgOTUxMTksIDk1MTI1LCA5NTEzMSwgOTUxMzcsIDk1MTQ0LCAKLSAgICA5NTE1MCwgOTUxNTcsIDk1MTY0LCA5NTE3MSwgOTUxNzgsIDk1MTg2LCA5NTE5MywgOTUyMDEsIDk1MjA3LCA5NTIxMywgCi0gICAgOTUyMTksIDk1MjI1LCA5NTIzMSwgOTUyMzcsIDk1MjQzLCA5NTI0OSwgOTUyNTUsIDk1MjYxLCA5NTI2NywgOTUyNzMsIAotICAgIDk1Mjc5LCA5NTI4NSwgOTUyOTEsIDk1Mjk3LCA5NTMwMywgOTUzMDksIDk1MzE1LCA5NTMyMSwgOTUzMjcsIDk1MzMzLCAKLSAgICA5NTMzOSwgOTUzNDUsIDk1MzUxLCA5NTM1NywgOTUzNjMsIDk1MzY5LCA5NTM3NCwgOTUzNzksIDk1Mzg0LCA5NTM4OSwgCi0gICAgOTUzOTQsIDk1Mzk5LCA5NTQwNCwgOTU0MDksIDk1NDE0LCA5NTQxOSwgOTU0MjQsIDk1NDI5LCA5NTQzNCwgOTU0MzksIAotICAgIDk1NDQ0LCA5NTQ0OSwgOTU0NTQsIDk1NDU5LCA5NTQ2NCwgOTU0NjksIDk1NDc0LCA5NTQ3OSwgOTU0ODQsIDk1NDg5LCAKLSAgICA5NTQ5NCwgOTU0OTksIDk1NTA0LCA5NTUwOSwgOTU1MTQsIDk1NTE5LCA5NTUyNCwgOTU1MjksIDk1NTM0LCA5NTUzOSwgCi0gICAgOTU1NDQsIDk1NTQ5LCA5NTU1NCwgOTU1NTksIDk1NTY0LCA5NTU2OSwgOTU1NzQsIDk1NTc5LCA5NTU4NCwgOTU1ODksIAotICAgIDk1NTk0LCA5NTU5OSwgOTU2MDQsIDk1NjA5LCA5NTYxNCwgOTU2MTksIDk1NjI0LCA5NTYyOSwgOTU2MzQsIDk1NjM5LCAKLSAgICA5NTY0NCwgOTU2NDksIDk1NjU0LCA5NTY1OSwgOTU2NjQsIDk1NjY5LCA5NTY3NCwgOTU2NzksIDk1Njg0LCA5NTY4OSwgCi0gICAgOTU2OTQsIDk1Njk5LCA5NTcwNCwgOTU3MDksIDk1NzEzLCA5NTcxNywgOTU3MjEsIDk1NzI1LCA5NTcyOSwgOTU3MzMsIAotICAgIDk1NzM3LCA5NTc0MiwgOTU3NDcsIDAsIDAsIDk1NzUyLCA5NTc1NywgOTU3NjEsIDk1NzY1LCA5NTc2OSwgOTU3NzMsIAotICAgIDk1Nzc3LCA5NTc4MSwgOTU3ODYsIDk1NzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTY5OSwgOTU3MDUsIDk1NzExLCA5NTcxNywgOTU3MjQsIAorICAgIDk1NzMwLCA5NTczNywgOTU3NDQsIDk1NzUxLCA5NTc1OCwgOTU3NjYsIDk1NzczLCA5NTc4MSwgOTU3ODcsIDk1NzkzLCAKKyAgICA5NTc5OSwgOTU4MDUsIDk1ODExLCA5NTgxNywgOTU4MjMsIDk1ODI5LCA5NTgzNSwgOTU4NDEsIDk1ODQ3LCA5NTg1MywgCisgICAgOTU4NTksIDk1ODY1LCA5NTg3MSwgOTU4NzcsIDk1ODgzLCA5NTg4OSwgOTU4OTUsIDk1OTAxLCA5NTkwNywgOTU5MTMsIAorICAgIDk1OTE5LCA5NTkyNSwgOTU5MzEsIDk1OTM3LCA5NTk0MywgOTU5NDksIDk1OTU1LCA5NTk2MSwgOTU5NjcsIDk1OTc0LCAKKyAgICA5NTk4MCwgOTU5ODcsIDk1OTk0LCA5NjAwMSwgOTYwMDgsIDk2MDE2LCA5NjAyMywgOTYwMzEsIDk2MDM3LCA5NjA0MywgCisgICAgOTYwNDksIDk2MDU1LCA5NjA2MSwgOTYwNjcsIDk2MDczLCA5NjA3OSwgOTYwODUsIDk2MDkxLCA5NjA5NywgOTYxMDMsIAorICAgIDk2MTA5LCA5NjExNSwgOTYxMjEsIDk2MTI3LCA5NjEzMywgOTYxMzksIDk2MTQ1LCA5NjE1MSwgOTYxNTcsIDk2MTYzLCAKKyAgICA5NjE2OSwgOTYxNzUsIDk2MTgxLCA5NjE4NywgOTYxOTMsIDk2MTk5LCA5NjIwNCwgOTYyMDksIDk2MjE0LCA5NjIxOSwgCisgICAgOTYyMjQsIDk2MjI5LCA5NjIzNCwgOTYyMzksIDk2MjQ0LCA5NjI0OSwgOTYyNTQsIDk2MjU5LCA5NjI2NCwgOTYyNjksIAorICAgIDk2Mjc0LCA5NjI3OSwgOTYyODQsIDk2Mjg5LCA5NjI5NCwgOTYyOTksIDk2MzA0LCA5NjMwOSwgOTYzMTQsIDk2MzE5LCAKKyAgICA5NjMyNCwgOTYzMjksIDk2MzM0LCA5NjMzOSwgOTYzNDQsIDk2MzQ5LCA5NjM1NCwgOTYzNTksIDk2MzY0LCA5NjM2OSwgCisgICAgOTYzNzQsIDk2Mzc5LCA5NjM4NCwgOTYzODksIDk2Mzk0LCA5NjM5OSwgOTY0MDQsIDk2NDA5LCA5NjQxNCwgOTY0MTksIAorICAgIDk2NDI0LCA5NjQyOSwgOTY0MzQsIDk2NDM5LCA5NjQ0NCwgOTY0NDksIDk2NDU0LCA5NjQ1OSwgOTY0NjQsIDk2NDY5LCAKKyAgICA5NjQ3NCwgOTY0NzksIDk2NDg0LCA5NjQ4OSwgOTY0OTQsIDk2NDk5LCA5NjUwNCwgOTY1MDksIDk2NTE0LCA5NjUxOSwgCisgICAgOTY1MjQsIDk2NTI5LCA5NjUzNCwgOTY1MzksIDk2NTQzLCA5NjU0NywgOTY1NTEsIDk2NTU1LCA5NjU1OSwgOTY1NjMsIAorICAgIDk2NTY3LCA5NjU3MiwgOTY1NzcsIDAsIDAsIDk2NTgyLCA5NjU4NywgOTY1OTEsIDk2NTk1LCA5NjU5OSwgOTY2MDMsIAorICAgIDk2NjA3LCA5NjYxMSwgOTY2MTYsIDk2NjIwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjYyNSwgOTY2MzAsIDk2NjM2LCA5NjY0MiwgCisgICAgOTY2NDgsIDk2NjU0LCA5NjY2MCwgOTY2NjYsIDk2NjcxLCA5NjY3NywgOTY2ODIsIDk2Njg4LCA5NjY5MywgOTY2OTgsIAorICAgIDk2NzA0LCA5NjcxMCwgOTY3MTUsIDk2NzIwLCA5NjcyNSwgOTY3MzAsIDk2NzM2LCA5Njc0MSwgOTY3NDcsIDk2NzUzLCAKKyAgICA5Njc1OSwgOTY3NjUsIDk2NzcxLCA5Njc3NywgOTY3ODMsIDk2Nzg5LCA5Njc5NSwgOTY4MDAsIDk2ODA2LCA5NjgxMiwgCisgICAgOTY4MTgsIDk2ODI0LCAwLCAwLCAwLCAwLCA5NjgzMCwgOTY4MzUsIDk2ODQxLCA5Njg0NywgOTY4NTMsIDk2ODU5LCAKKyAgICA5Njg2NSwgOTY4NzEsIDk2ODc2LCA5Njg4MiwgOTY4ODcsIDk2ODkzLCA5Njg5OCwgOTY5MDMsIDk2OTA5LCA5NjkxNSwgCisgICAgOTY5MjAsIDk2OTI1LCA5NjkzMCwgOTY5MzUsIDk2OTQxLCA5Njk0NiwgOTY5NTIsIDk2OTU4LCA5Njk2NCwgOTY5NzAsIAorICAgIDk2OTc2LCA5Njk4MiwgOTY5ODgsIDk2OTk0LCA5NzAwMCwgOTcwMDUsIDk3MDExLCA5NzAxNywgOTcwMjMsIDk3MDI5LCAwLCAKKyAgICAwLCAwLCAwLCA5NzAzNSwgOTcwMzksIDk3MDQ0LCA5NzA0OSwgOTcwNTQsIDk3MDU5LCA5NzA2NCwgOTcwNjksIDk3MDc0LCAKKyAgICA5NzA3OCwgOTcwODMsIDk3MDg4LCA5NzA5MywgOTcwOTgsIDk3MTAyLCA5NzEwNywgOTcxMTIsIDk3MTE3LCA5NzEyMiwgCisgICAgOTcxMjcsIDk3MTMyLCA5NzEzNiwgOTcxNDEsIDk3MTQ1LCA5NzE1MCwgOTcxNTUsIDk3MTYwLCA5NzE2NSwgOTcxNzAsIAorICAgIDk3MTc1LCA5NzE4MCwgOTcxODUsIDk3MTg5LCA5NzE5NCwgOTcxOTksIDk3MjA0LCA5NzIwOSwgOTcyMTQsIDk3MjE5LCAKKyAgICA5NzIyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTcyMjksIDk3MjM2LCA5NzI0MywgOTcyNTAsIDk3MjU3LCA5NzI2NCwgCisgICAgOTcyNzEsIDk3Mjc4LCA5NzI4NSwgOTcyOTIsIDk3Mjk5LCA5NzMwNiwgOTczMTMsIDk3MzIwLCA5NzMyNywgOTczMzQsIAorICAgIDk3MzQxLCA5NzM0OCwgOTczNTUsIDk3MzYyLCA5NzM2OSwgOTczNzYsIDk3MzgzLCA5NzM5MCwgOTczOTcsIDk3NDA0LCAKKyAgICA5NzQxMSwgOTc0MTgsIDk3NDI1LCA5NzQzMiwgOTc0MzksIDk3NDQ2LCA5NzQ1MywgOTc0NjAsIDk3NDY3LCA5NzQ3NCwgCisgICAgOTc0ODEsIDk3NDg4LCA5NzQ5NSwgOTc1MDIsIDk3NTA5LCA5NzUxNiwgOTc1MjMsIDk3NTMwLCA5NzUzNywgOTc1NDQsIAorICAgIDk3NTUxLCA5NzU1OCwgOTc1NjUsIDk3NTcyLCA5NzU3OSwgOTc1ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDk3NTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5NTc5NSwgOTU3OTksIDk1ODA0LCA5NTgwOSwgOTU4MTQsIDk1ODE5LCA5NTgyNCwgOTU4MjksIDk1ODM0LCA5NTgzOCwgCi0gICAgOTU4NDMsIDk1ODQ4LCA5NTg1MywgOTU4NTgsIDk1ODYyLCA5NTg2NywgOTU4NzIsIDk1ODc3LCA5NTg4MiwgOTU4ODcsIAotICAgIDk1ODkyLCA5NTg5NywgOTU5MDIsIDk1OTA2LCA5NTkxMSwgOTU5MTYsIDk1OTIxLCA5NTkyNiwgOTU5MzEsIDk1OTM2LCAKLSAgICA5NTk0MSwgOTU5NDYsIDk1OTUwLCA5NTk1NSwgOTU5NjAsIDk1OTY1LCA5NTk3MCwgOTU5NzUsIDk1OTgwLCA5NTk4NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU5OTAsIDk1OTk3LCA5NjAwNCwgOTYwMTEsIDk2MDE4LCA5NjAyNSwgOTYwMzIsIAotICAgIDk2MDM5LCA5NjA0NiwgOTYwNTMsIDk2MDYwLCA5NjA2NywgOTYwNzQsIDk2MDgxLCA5NjA4OCwgOTYwOTUsIDk2MTAyLCAKLSAgICA5NjEwOSwgOTYxMTYsIDk2MTIzLCA5NjEzMCwgOTYxMzcsIDk2MTQ0LCA5NjE1MSwgOTYxNTgsIDk2MTY1LCA5NjE3MiwgCi0gICAgOTYxNzksIDk2MTg2LCA5NjE5MywgOTYyMDAsIDk2MjA3LCA5NjIxNCwgOTYyMjEsIDk2MjI4LCA5NjIzNSwgOTYyNDIsIAotICAgIDk2MjQ5LCA5NjI1NiwgOTYyNjMsIDk2MjcwLCA5NjI3NywgOTYyODQsIDk2MjkxLCA5NjI5OCwgOTYzMDUsIDk2MzEyLCAKLSAgICA5NjMxOSwgOTYzMjYsIDk2MzMzLCA5NjM0MCwgOTYzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk2MzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5NzYwMCwgOTc2MDUsIDk3NjEwLCA5NzYxNSwgOTc2MjAsIDk3NjI1LCA5NzYzMCwgOTc2MzUsIDk3NjQwLCAKKyAgICA5NzY0NSwgOTc2NTAsIDk3NjU1LCA5NzY2MCwgOTc2NjUsIDk3NjcwLCA5NzY3NSwgOTc2ODAsIDk3Njg1LCA5NzY5MCwgCisgICAgOTc2OTUsIDk3NzAwLCA5NzcwNSwgOTc3MTAsIDk3NzE1LCA5NzcyMCwgOTc3MjUsIDk3NzMwLCA5NzczNSwgOTc3NDAsIAorICAgIDk3NzQ1LCA5Nzc1MCwgOTc3NTUsIDk3NzYwLCA5Nzc2NSwgOTc3NzAsIDk3Nzc1LCA5Nzc4MCwgOTc3ODUsIDk3NzkwLCAKKyAgICA5Nzc5NSwgOTc4MDAsIDk3ODA1LCA5NzgxMCwgOTc4MTUsIDk3ODIwLCA5NzgyNSwgOTc4MzAsIDk3ODM1LCA5Nzg0MCwgCisgICAgOTc4NDUsIDk3ODUwLCA5Nzg1NSwgOTc4NjAsIDk3ODY1LCA5Nzg3MCwgOTc4NzUsIDk3ODgwLCA5Nzg4NSwgOTc4OTAsIAorICAgIDk3ODk1LCA5NzkwMCwgOTc5MDUsIDk3OTEwLCA5NzkxNSwgOTc5MjAsIDk3OTI1LCA5NzkzMCwgOTc5MzUsIDk3OTQwLCAKKyAgICA5Nzk0NSwgOTc5NTAsIDk3OTU1LCA5Nzk2MCwgOTc5NjUsIDk3OTcwLCA5Nzk3NSwgOTc5ODAsIDk3OTg1LCA5Nzk5MCwgCisgICAgOTc5OTUsIDk4MDAwLCA5ODAwNSwgOTgwMTAsIDk4MDE1LCA5ODAyMCwgOTgwMjUsIDk4MDMwLCA5ODAzNSwgOTgwNDAsIAorICAgIDk4MDQ1LCA5ODA1MCwgOTgwNTUsIDk4MDYwLCA5ODA2NSwgOTgwNzAsIDk4MDc1LCA5ODA4MCwgOTgwODUsIDk4MDkwLCAKKyAgICA5ODA5NSwgOTgxMDAsIDk4MTA1LCA5ODExMCwgOTgxMTUsIDk4MTIwLCA5ODEyNSwgOTgxMzAsIDk4MTM1LCA5ODE0MCwgCisgICAgOTgxNDUsIDk4MTUwLCA5ODE1NSwgOTgxNjAsIDk4MTY1LCA5ODE3MCwgOTgxNzUsIDk4MTgwLCA5ODE4NSwgOTgxOTAsIAorICAgIDk4MTk1LCA5ODIwMCwgOTgyMDUsIDk4MjEwLCA5ODIxNSwgOTgyMjAsIDk4MjI1LCA5ODIzMCwgOTgyMzUsIDk4MjQwLCAKKyAgICA5ODI0NSwgOTgyNTAsIDk4MjU1LCA5ODI2MCwgOTgyNjUsIDk4MjcwLCA5ODI3NSwgOTgyODAsIDk4Mjg1LCA5ODI5MCwgCisgICAgOTgyOTUsIDk4MzAwLCA5ODMwNSwgOTgzMTAsIDk4MzE1LCA5ODMyMCwgOTgzMjUsIDk4MzMwLCA5ODMzNSwgOTgzNDAsIAorICAgIDk4MzQ1LCA5ODM1MCwgOTgzNTUsIDk4MzYwLCA5ODM2NSwgOTgzNzAsIDk4Mzc1LCA5ODM4MCwgOTgzODUsIDk4MzkwLCAKKyAgICA5ODM5NSwgOTg0MDAsIDk4NDA1LCA5ODQxMCwgOTg0MTUsIDk4NDIwLCA5ODQyNSwgOTg0MzAsIDk4NDM1LCA5ODQ0MCwgCisgICAgOTg0NDUsIDk4NDUwLCA5ODQ1NSwgOTg0NjAsIDk4NDY1LCA5ODQ3MCwgOTg0NzUsIDk4NDgwLCA5ODQ4NSwgOTg0OTAsIAorICAgIDk4NDk1LCA5ODUwMCwgOTg1MDUsIDk4NTEwLCA5ODUxNSwgOTg1MjAsIDk4NTI1LCA5ODUzMCwgOTg1MzUsIDk4NTQwLCAKKyAgICA5ODU0NSwgOTg1NTAsIDk4NTU1LCA5ODU2MCwgOTg1NjUsIDk4NTcwLCA5ODU3NSwgOTg1ODAsIDk4NTg1LCA5ODU5MCwgCisgICAgOTg1OTUsIDk4NjAwLCA5ODYwNSwgOTg2MTAsIDk4NjE1LCA5ODYyMCwgOTg2MjUsIDk4NjMwLCA5ODYzNSwgOTg2NDAsIAorICAgIDk4NjQ1LCA5ODY1MCwgOTg2NTUsIDk4NjYwLCA5ODY2NSwgOTg2NzAsIDk4Njc1LCA5ODY4MCwgOTg2ODUsIDk4NjkwLCAKKyAgICA5ODY5NSwgOTg3MDAsIDk4NzA1LCA5ODcxMCwgOTg3MTUsIDk4NzIwLCA5ODcyNSwgOTg3MzAsIDk4NzM1LCA5ODc0MCwgCisgICAgOTg3NDUsIDk4NzUwLCA5ODc1NSwgOTg3NjAsIDk4NzY1LCA5ODc3MCwgOTg3NzUsIDk4NzgwLCA5ODc4NSwgOTg3OTAsIAorICAgIDk4Nzk1LCA5ODgwMCwgOTg4MDUsIDk4ODEwLCA5ODgxNSwgOTg4MjAsIDk4ODI1LCA5ODgzMCwgOTg4MzUsIDk4ODQwLCAKKyAgICA5ODg0NSwgOTg4NTAsIDk4ODU1LCA5ODg2MCwgOTg4NjUsIDk4ODcwLCA5ODg3NSwgOTg4ODAsIDk4ODg1LCA5ODg5MCwgCisgICAgOTg4OTUsIDk4OTAwLCA5ODkwNSwgOTg5MTAsIDk4OTE1LCA5ODkyMCwgOTg5MjUsIDk4OTMwLCA5ODkzNSwgOTg5NDAsIAorICAgIDk4OTQ1LCA5ODk1MCwgOTg5NTUsIDk4OTYwLCA5ODk2NSwgOTg5NzAsIDk4OTc1LCA5ODk4MCwgOTg5ODUsIDk4OTkwLCAKKyAgICA5ODk5NSwgOTkwMDAsIDk5MDA1LCA5OTAxMCwgOTkwMTUsIDk5MDIwLCA5OTAyNSwgOTkwMzAsIDk5MDM1LCA5OTA0MCwgCisgICAgOTkwNDUsIDk5MDUwLCA5OTA1NSwgOTkwNjAsIDk5MDY1LCA5OTA3MCwgOTkwNzUsIDk5MDgwLCA5OTA4NSwgOTkwOTAsIAorICAgIDk5MDk1LCA5OTEwMCwgOTkxMDUsIDk5MTEwLCA5OTExNSwgOTkxMjAsIDk5MTI1LCA5OTEzMCwgOTkxMzUsIDk5MTQwLCAKKyAgICA5OTE0NSwgOTkxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk5MTU1LCA5OTE2MSwgOTkxNjgsIDk5MTc1LCAKKyAgICA5OTE4MSwgOTkxODgsIDk5MTk1LCA5OTIwMiwgOTkyMDksIDk5MjE1LCA5OTIyMiwgOTkyMjksIDk5MjM2LCA5OTI0MywgCisgICAgOTkyNTAsIDk5MjU3LCA5OTI2NCwgOTkyNzEsIDk5Mjc4LCA5OTI4NSwgOTkyOTIsIDk5Mjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5OTMwNiwgOTkzMTEsIDk5MzE2LCA5OTMyMSwgOTkzMjYsIDk5MzMxLCA5OTMzNiwgOTkzNDEsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDk2MzYxLCA5NjM2NiwgOTYzNzEsIDk2Mzc2LCA5NjM4MSwgOTYzODYsIDk2MzkxLCA5NjM5NiwgOTY0MDEsIAotICAgIDk2NDA2LCA5NjQxMSwgOTY0MTYsIDk2NDIxLCA5NjQyNiwgOTY0MzEsIDk2NDM2LCA5NjQ0MSwgOTY0NDYsIDk2NDUxLCAKLSAgICA5NjQ1NiwgOTY0NjEsIDk2NDY2LCA5NjQ3MSwgOTY0NzYsIDk2NDgxLCA5NjQ4NiwgOTY0OTEsIDk2NDk2LCA5NjUwMSwgCi0gICAgOTY1MDYsIDk2NTExLCA5NjUxNiwgOTY1MjEsIDk2NTI2LCA5NjUzMSwgOTY1MzYsIDk2NTQxLCA5NjU0NiwgOTY1NTEsIAotICAgIDk2NTU2LCA5NjU2MSwgOTY1NjYsIDk2NTcxLCA5NjU3NiwgOTY1ODEsIDk2NTg2LCA5NjU5MSwgOTY1OTYsIDk2NjAxLCAKLSAgICA5NjYwNiwgOTY2MTEsIDk2NjE2LCA5NjYyMSwgOTY2MjYsIDk2NjMxLCA5NjYzNiwgOTY2NDEsIDk2NjQ2LCA5NjY1MSwgCi0gICAgOTY2NTYsIDk2NjYxLCA5NjY2NiwgOTY2NzEsIDk2Njc2LCA5NjY4MSwgOTY2ODYsIDk2NjkxLCA5NjY5NiwgOTY3MDEsIAotICAgIDk2NzA2LCA5NjcxMSwgOTY3MTYsIDk2NzIxLCA5NjcyNiwgOTY3MzEsIDk2NzM2LCA5Njc0MSwgOTY3NDYsIDk2NzUxLCAKLSAgICA5Njc1NiwgOTY3NjEsIDk2NzY2LCA5Njc3MSwgOTY3NzYsIDk2NzgxLCA5Njc4NiwgOTY3OTEsIDk2Nzk2LCA5NjgwMSwgCi0gICAgOTY4MDYsIDk2ODExLCA5NjgxNiwgOTY4MjEsIDk2ODI2LCA5NjgzMSwgOTY4MzYsIDk2ODQxLCA5Njg0NiwgOTY4NTEsIAotICAgIDk2ODU2LCA5Njg2MSwgOTY4NjYsIDk2ODcxLCA5Njg3NiwgOTY4ODEsIDk2ODg2LCA5Njg5MSwgOTY4OTYsIDk2OTAxLCAKLSAgICA5NjkwNiwgOTY5MTEsIDk2OTE2LCA5NjkyMSwgOTY5MjYsIDk2OTMxLCA5NjkzNiwgOTY5NDEsIDk2OTQ2LCA5Njk1MSwgCi0gICAgOTY5NTYsIDk2OTYxLCA5Njk2NiwgOTY5NzEsIDk2OTc2LCA5Njk4MSwgOTY5ODYsIDk2OTkxLCA5Njk5NiwgOTcwMDEsIAotICAgIDk3MDA2LCA5NzAxMSwgOTcwMTYsIDk3MDIxLCA5NzAyNiwgOTcwMzEsIDk3MDM2LCA5NzA0MSwgOTcwNDYsIDk3MDUxLCAKLSAgICA5NzA1NiwgOTcwNjEsIDk3MDY2LCA5NzA3MSwgOTcwNzYsIDk3MDgxLCA5NzA4NiwgOTcwOTEsIDk3MDk2LCA5NzEwMSwgCi0gICAgOTcxMDYsIDk3MTExLCA5NzExNiwgOTcxMjEsIDk3MTI2LCA5NzEzMSwgOTcxMzYsIDk3MTQxLCA5NzE0NiwgOTcxNTEsIAotICAgIDk3MTU2LCA5NzE2MSwgOTcxNjYsIDk3MTcxLCA5NzE3NiwgOTcxODEsIDk3MTg2LCA5NzE5MSwgOTcxOTYsIDk3MjAxLCAKLSAgICA5NzIwNiwgOTcyMTEsIDk3MjE2LCA5NzIyMSwgOTcyMjYsIDk3MjMxLCA5NzIzNiwgOTcyNDEsIDk3MjQ2LCA5NzI1MSwgCi0gICAgOTcyNTYsIDk3MjYxLCA5NzI2NiwgOTcyNzEsIDk3Mjc2LCA5NzI4MSwgOTcyODYsIDk3MjkxLCA5NzI5NiwgOTczMDEsIAotICAgIDk3MzA2LCA5NzMxMSwgOTczMTYsIDk3MzIxLCA5NzMyNiwgOTczMzEsIDk3MzM2LCA5NzM0MSwgOTczNDYsIDk3MzUxLCAKLSAgICA5NzM1NiwgOTczNjEsIDk3MzY2LCA5NzM3MSwgOTczNzYsIDk3MzgxLCA5NzM4NiwgOTczOTEsIDk3Mzk2LCA5NzQwMSwgCi0gICAgOTc0MDYsIDk3NDExLCA5NzQxNiwgOTc0MjEsIDk3NDI2LCA5NzQzMSwgOTc0MzYsIDk3NDQxLCA5NzQ0NiwgOTc0NTEsIAotICAgIDk3NDU2LCA5NzQ2MSwgOTc0NjYsIDk3NDcxLCA5NzQ3NiwgOTc0ODEsIDk3NDg2LCA5NzQ5MSwgOTc0OTYsIDk3NTAxLCAKLSAgICA5NzUwNiwgOTc1MTEsIDk3NTE2LCA5NzUyMSwgOTc1MjYsIDk3NTMxLCA5NzUzNiwgOTc1NDEsIDk3NTQ2LCA5NzU1MSwgCi0gICAgOTc1NTYsIDk3NTYxLCA5NzU2NiwgOTc1NzEsIDk3NTc2LCA5NzU4MSwgOTc1ODYsIDk3NTkxLCA5NzU5NiwgOTc2MDEsIAotICAgIDk3NjA2LCA5NzYxMSwgOTc2MTYsIDk3NjIxLCA5NzYyNiwgOTc2MzEsIDk3NjM2LCA5NzY0MSwgOTc2NDYsIDk3NjUxLCAKLSAgICA5NzY1NiwgOTc2NjEsIDk3NjY2LCA5NzY3MSwgOTc2NzYsIDk3NjgxLCA5NzY4NiwgOTc2OTEsIDk3Njk2LCA5NzcwMSwgCi0gICAgOTc3MDYsIDk3NzExLCA5NzcxNiwgOTc3MjEsIDk3NzI2LCA5NzczMSwgOTc3MzYsIDk3NzQxLCA5Nzc0NiwgOTc3NTEsIAotICAgIDk3NzU2LCA5Nzc2MSwgOTc3NjYsIDk3NzcxLCA5Nzc3NiwgOTc3ODEsIDk3Nzg2LCA5Nzc5MSwgOTc3OTYsIDk3ODAxLCAKLSAgICA5NzgwNiwgOTc4MTEsIDk3ODE2LCA5NzgyMSwgOTc4MjYsIDk3ODMxLCA5NzgzNiwgOTc4NDEsIDk3ODQ2LCA5Nzg1MSwgCi0gICAgOTc4NTYsIDk3ODYxLCA5Nzg2NiwgOTc4NzEsIDk3ODc2LCA5Nzg4MSwgOTc4ODYsIDk3ODkxLCA5Nzg5NiwgOTc5MDEsIAotICAgIDk3OTA2LCA5NzkxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTc5MTYsIDk3OTIyLCA5NzkyOSwgOTc5MzYsIAotICAgIDk3OTQyLCA5Nzk0OSwgOTc5NTYsIDk3OTYzLCA5Nzk3MCwgOTc5NzYsIDk3OTgzLCA5Nzk5MCwgOTc5OTcsIDk4MDA0LCAKLSAgICA5ODAxMSwgOTgwMTgsIDk4MDI1LCA5ODAzMiwgOTgwMzksIDk4MDQ2LCA5ODA1MywgOTgwNjAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDk4MDY3LCA5ODA3MiwgOTgwNzcsIDk4MDgyLCA5ODA4NywgOTgwOTIsIDk4MDk3LCA5ODEwMiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTkzNDYsIDk5MzUwLCA5OTM1NCwgOTkzNTgsIDk5MzYyLCA5OTM2NiwgMCwgMCwgOTkzNzEsIAorICAgIDAsIDk5Mzc2LCA5OTM4MCwgOTkzODUsIDk5MzkwLCA5OTM5NSwgOTk0MDAsIDk5NDA0LCA5OTQwOSwgOTk0MTQsIDk5NDE5LCAKKyAgICA5OTQyNCwgOTk0MjgsIDk5NDMzLCA5OTQzOCwgOTk0NDMsIDk5NDQ4LCA5OTQ1MiwgOTk0NTcsIDk5NDYyLCA5OTQ2NywgCisgICAgOTk0NzIsIDk5NDc2LCA5OTQ4MSwgOTk0ODYsIDk5NDkxLCA5OTQ5NiwgOTk1MDEsIDk5NTA2LCA5OTUxMSwgOTk1MTYsIAorICAgIDk5NTIxLCA5OTUyNiwgOTk1MzEsIDk5NTM2LCA5OTU0MSwgOTk1NDYsIDk5NTUxLCA5OTU1NiwgOTk1NjEsIDk5NTY1LCAKKyAgICA5OTU3MCwgOTk1NzUsIDk5NTgwLCA5OTU4NSwgMCwgOTk1OTAsIDk5NTk1LCAwLCAwLCAwLCA5OTYwMCwgMCwgMCwgOTk2MDUsIAorICAgIDk5NjEwLCA5OTYxNywgOTk2MjQsIDk5NjMxLCA5OTYzOCwgOTk2NDUsIDk5NjUyLCA5OTY1OSwgOTk2NjYsIDk5NjczLCAKKyAgICA5OTY4MCwgOTk2ODcsIDk5Njk0LCA5OTcwMSwgOTk3MDgsIDk5NzE1LCA5OTcyMiwgOTk3MjksIDk5NzM2LCA5OTc0MywgCisgICAgOTk3NTAsIDk5NzU3LCAwLCA5OTc2NCwgOTk3NzEsIDk5Nzc3LCA5OTc4MywgOTk3ODksIDk5Nzk2LCA5OTgwMywgOTk4MTEsIAorICAgIDk5ODE5LCA5OTgyOCwgOTk4MzMsIDk5ODM4LCA5OTg0MywgOTk4NDgsIDk5ODUzLCA5OTg1OCwgOTk4NjMsIDk5ODY4LCAKKyAgICA5OTg3MywgOTk4NzgsIDk5ODgzLCA5OTg4OCwgOTk4OTMsIDk5ODk5LCA5OTkwNCwgOTk5MDksIDk5OTE0LCA5OTkxOSwgCisgICAgOTk5MjQsIDk5OTI5LCA5OTkzNCwgOTk5MzksIDk5OTQ0LCA5OTk1MCwgOTk5NTYsIDk5OTYwLCA5OTk2NCwgOTk5NjgsIAorICAgIDk5OTcyLCA5OTk3NiwgOTk5ODEsIDk5OTg2LCA5OTk5MiwgOTk5OTcsIDEwMDAwMywgMTAwMDA4LCAxMDAwMTMsIDEwMDAxOCwgCisgICAgMTAwMDI0LCAxMDAwMjksIDEwMDAzNCwgMTAwMDM5LCAxMDAwNDQsIDEwMDA0OSwgMTAwMDU1LCAxMDAwNjAsIDEwMDA2NiwgCisgICAgMTAwMDcxLCAxMDAwNzcsIDEwMDA4MiwgMTAwMDg4LCAxMDAwOTMsIDEwMDA5OSwgMTAwMTA0LCAxMDAxMDksIDEwMDExNCwgCisgICAgMTAwMTE5LCAxMDAxMjQsIDEwMDEyOSwgMTAwMTM0LCAxMDAxNDAsIDEwMDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAwMTUwLCAxMDAxNTQsIDEwMDE1OCwgMTAwMTYyLCAxMDAxNjYsIDEwMDE3MiwgMTAwMTc2LCAxMDAxODEsIDEwMDE4NiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOTgxMDcsIDk4MTExLCA5ODExNSwgOTgxMTksIDk4MTIzLCA5ODEyNywgMCwgMCwgOTgxMzIsIAotICAgIDAsIDk4MTM3LCA5ODE0MSwgOTgxNDYsIDk4MTUxLCA5ODE1NiwgOTgxNjEsIDk4MTY2LCA5ODE3MSwgOTgxNzYsIDk4MTgxLCAKLSAgICA5ODE4NiwgOTgxOTAsIDk4MTk1LCA5ODIwMCwgOTgyMDUsIDk4MjEwLCA5ODIxNSwgOTgyMjAsIDk4MjI1LCA5ODIzMCwgCi0gICAgOTgyMzUsIDk4MjM5LCA5ODI0NCwgOTgyNDksIDk4MjU0LCA5ODI1OSwgOTgyNjQsIDk4MjY5LCA5ODI3NCwgOTgyNzksIAotICAgIDk4Mjg0LCA5ODI4OSwgOTgyOTQsIDk4Mjk5LCA5ODMwNCwgOTgzMDksIDk4MzE0LCA5ODMxOSwgOTgzMjQsIDk4MzI4LCAKLSAgICA5ODMzMywgOTgzMzgsIDk4MzQzLCA5ODM0OCwgMCwgOTgzNTMsIDk4MzU4LCAwLCAwLCAwLCA5ODM2MywgMCwgMCwgOTgzNjgsIAotICAgIDk4MzczLCA5ODM4MCwgOTgzODcsIDk4Mzk0LCA5ODQwMSwgOTg0MDgsIDk4NDE1LCA5ODQyMiwgOTg0MjksIDk4NDM2LCAKLSAgICA5ODQ0MywgOTg0NTAsIDk4NDU3LCA5ODQ2NCwgOTg0NzEsIDk4NDc4LCA5ODQ4NSwgOTg0OTIsIDk4NDk5LCA5ODUwNiwgCi0gICAgOTg1MTMsIDk4NTIwLCAwLCA5ODUyNywgOTg1MzQsIDk4NTQwLCA5ODU0NiwgOTg1NTIsIDk4NTU5LCA5ODU2NiwgOTg1NzQsIAotICAgIDk4NTgyLCA5ODU5MSwgOTg1OTYsIDk4NjAxLCA5ODYwNiwgOTg2MTEsIDk4NjE2LCA5ODYyMSwgOTg2MjYsIDk4NjMxLCAKLSAgICA5ODYzNiwgOTg2NDEsIDk4NjQ2LCA5ODY1MSwgOTg2NTYsIDk4NjYyLCA5ODY2NywgOTg2NzIsIDk4Njc3LCA5ODY4MiwgCi0gICAgOTg2ODcsIDk4NjkyLCA5ODY5NywgOTg3MDIsIDk4NzA3LCA5ODcxMywgOTg3MTksIDk4NzIzLCA5ODcyNywgOTg3MzEsIAotICAgIDk4NzM1LCA5ODczOSwgOTg3NDQsIDk4NzQ5LCA5ODc1NSwgOTg3NjAsIDk4NzY2LCA5ODc3MSwgOTg3NzYsIDk4NzgxLCAKLSAgICA5ODc4NywgOTg3OTIsIDk4Nzk3LCA5ODgwMiwgOTg4MDcsIDk4ODEyLCA5ODgxOCwgOTg4MjMsIDk4ODI5LCA5ODgzNCwgCi0gICAgOTg4NDAsIDk4ODQ1LCA5ODg1MSwgOTg4NTYsIDk4ODYyLCA5ODg2NywgOTg4NzIsIDk4ODc3LCA5ODg4MiwgOTg4ODcsIAotICAgIDk4ODkyLCA5ODg5NywgOTg5MDMsIDk4OTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5ODkxMywgOTg5MTcsIDk4OTIxLCAKLSAgICA5ODkyNSwgOTg5MjksIDk4OTM1LCA5ODkzOSwgOTg5NDQsIDk4OTQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5ODk1NSwgOTg5NjAsIDk4OTY1LCA5ODk3MCwgCi0gICAgOTg5NzUsIDk4OTgwLCA5ODk4NSwgOTg5OTAsIDk4OTk1LCA5OTAwMCwgOTkwMDUsIDk5MDEwLCA5OTAxNSwgOTkwMjAsIAotICAgIDk5MDI1LCA5OTAzMCwgOTkwMzUsIDk5MDQwLCA5OTA0NSwgMCwgOTkwNTAsIDk5MDU1LCAwLCAwLCAwLCAwLCAwLCA5OTA2MCwgCi0gICAgOTkwNjQsIDk5MDY4LCA5OTA3MywgOTkwNzgsIDk5MDg0LCA5OTA4OSwgOTkwOTQsIDk5MDk5LCA5OTEwNCwgOTkxMDksIAotICAgIDk5MTE0LCA5OTExOSwgOTkxMjQsIDk5MTI5LCA5OTEzNCwgOTkxMzksIDk5MTQ0LCA5OTE0OSwgOTkxNTQsIDk5MTU5LCAKLSAgICA5OTE2NCwgOTkxNjksIDk5MTc0LCA5OTE3OSwgOTkxODQsIDk5MTg5LCA5OTE5NCwgOTkxOTgsIDk5MjAzLCA5OTIwOCwgCi0gICAgOTkyMTQsIDk5MjE4LCAwLCAwLCAwLCA5OTIyMiwgOTkyMjgsIDk5MjMyLCA5OTIzNywgOTkyNDIsIDk5MjQ3LCA5OTI1MSwgCi0gICAgOTkyNTYsIDk5MjYwLCA5OTI2NSwgOTkyNzAsIDk5Mjc0LCA5OTI3OSwgOTkyODQsIDk5Mjg4LCA5OTI5MiwgOTkyOTcsIAotICAgIDk5MzAyLCA5OTMwNiwgOTkzMTEsIDk5MzE2LCA5OTMyMCwgOTkzMjUsIDk5MzMwLCA5OTMzNSwgOTkzNDAsIDk5MzQ1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5OTM1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTkzNTUsIAotICAgIDk5MzYwLCA5OTM2NSwgOTkzNzAsIDk5Mzc1LCA5OTM4MCwgOTkzODYsIDk5MzkyLCA5OTM5OCwgOTk0MDMsIDk5NDA4LCAKLSAgICA5OTQxNCwgOTk0MjAsIDk5NDI2LCA5OTQzMiwgOTk0MzgsIDk5NDQ0LCA5OTQ1MCwgOTk0NTYsIDk5NDYyLCA5OTQ2OCwgCi0gICAgOTk0NzQsIDk5NDgwLCA5OTQ4NSwgOTk0OTEsIDk5NDk3LCA5OTUwMywgOTk1MDksIDk5NTE1LCA5OTUyMCwgOTk1MjYsIAotICAgIDk5NTMyLCA5OTUzOCwgOTk1NDIsIDk5NTQ2LCA5OTU1MCwgOTk1NTQsIDk5NTU4LCA5OTU2MywgOTk1NjgsIDk5NTcyLCAKLSAgICA5OTU3NiwgOTk1ODEsIDk5NTg2LCA5OTU5MSwgOTk1OTYsIDk5NjAxLCA5OTYwNiwgOTk2MTEsIDk5NjE4LCA5OTYyMywgCi0gICAgOTk2MjcsIDk5NjMyLCA5OTYzNywgOTk2NDIsIDk5NjQ2LCAwLCAwLCAwLCAwLCA5OTY1MSwgOTk2NTksIDk5NjY2LCAKLSAgICA5OTY3MiwgOTk2NzgsIDk5NjgyLCA5OTY4NiwgOTk2OTAsIDk5Njk0LCA5OTY5OCwgOTk3MDIsIDk5NzA3LCA5OTcxMSwgCi0gICAgOTk3MTYsIDk5NzIxLCA5OTcyNiwgOTk3MzEsIDk5NzM2LCA5OTc0MSwgOTk3NDYsIDAsIDAsIDk5NzUxLCA5OTc1NywgCi0gICAgOTk3NjMsIDk5NzY5LCA5OTc3NiwgOTk3ODMsIDk5NzkwLCA5OTc5NywgOTk4MDQsIDk5ODExLCA5OTgxNywgOTk4MjMsIAotICAgIDk5ODI5LCA5OTgzNiwgOTk4NDMsIDk5ODUwLCA5OTg1NywgOTk4NjQsIDk5ODcxLCA5OTg3OCwgOTk4ODUsIDk5ODkyLCAKLSAgICA5OTg5OSwgOTk5MDYsIDk5OTEzLCA5OTkyMCwgOTk5MjcsIDk5OTM0LCA5OTk0MiwgOTk5NTAsIDk5OTU4LCA5OTk2NywgCi0gICAgOTk5NzYsIDk5OTg1LCA5OTk5NCwgMTAwMDAzLCAxMDAwMTIsIDEwMDAxOSwgMTAwMDI2LCAxMDAwMzMsIDEwMDA0MSwgCi0gICAgMTAwMDQ5LCAxMDAwNTcsIDEwMDA2NSwgMTAwMDczLCAxMDAwODEsIDEwMDA4OSwgMTAwMDkzLCAxMDAwOTgsIDEwMDEwMywgCi0gICAgMCwgMTAwMTA5LCAxMDAxMTQsIDAsIDAsIDAsIDAsIDAsIDEwMDExOSwgMTAwMTI1LCAxMDAxMzIsIDEwMDEzNywgMTAwMTQyLCAKLSAgICAxMDAxNDYsIDEwMDE1MSwgMTAwMTU2LCAwLCAxMDAxNjEsIDEwMDE2NiwgMTAwMTcxLCAwLCAxMDAxNzYsIDEwMDE4MSwgCi0gICAgMTAwMTg2LCAxMDAxOTEsIDEwMDE5NiwgMTAwMjAxLCAxMDAyMDYsIDEwMDIxMSwgMTAwMjE2LCAxMDAyMjEsIDEwMDIyNiwgCi0gICAgMTAwMjMxLCAxMDAyMzUsIDEwMDI0MCwgMTAwMjQ1LCAxMDAyNTAsIDEwMDI1NCwgMTAwMjU4LCAxMDAyNjMsIDEwMDI2OCwgCi0gICAgMTAwMjczLCAxMDAyNzgsIDEwMDI4MywgMTAwMjg4LCAxMDAyOTMsIDEwMDI5NywgMTAwMzAyLCAwLCAwLCAwLCAwLCAKLSAgICAxMDAzMDcsIDEwMDMxMywgMTAwMzE4LCAwLCAwLCAwLCAwLCAxMDAzMjMsIDEwMDMyNywgMTAwMzMxLCAxMDAzMzUsIAotICAgIDEwMDMzOSwgMTAwMzQzLCAxMDAzNDgsIDEwMDM1MywgMTAwMzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDAzNjUsIAotICAgIDEwMDM3MSwgMTAwMzc4LCAxMDAzODQsIDEwMDM5MSwgMTAwMzk3LCAxMDA0MDMsIDEwMDQwOSwgMTAwNDE2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDA0MjIsIDEwMDQzMCwgMTAwNDM4LCAxMDA0NDYsIDEwMDQ1NCwgMTAwNDYyLCAxMDA0NzAsIAotICAgIDEwMDQ3OCwgMTAwNDg2LCAxMDA0OTQsIDEwMDUwMiwgMTAwNTEwLCAxMDA1MTgsIDEwMDUyNiwgMTAwNTM0LCAxMDA1NDIsIAotICAgIDEwMDU1MCwgMTAwNTU4LCAxMDA1NjYsIDEwMDU3NCwgMTAwNTgyLCAxMDA1OTAsIDEwMDU5OCwgMTAwNjA2LCAxMDA2MTQsIAotICAgIDEwMDYyMiwgMTAwNjMwLCAxMDA2MzgsIDEwMDY0NiwgMTAwNjU0LCAxMDA2NjEsIDEwMDY2OSwgMTAwNjc3LCAxMDA2ODQsIAotICAgIDEwMDY5MSwgMTAwNjk4LCAxMDA3MDUsIDEwMDcxMiwgMTAwNzE5LCAxMDA3MjYsIDEwMDczMywgMTAwNzQwLCAxMDA3NDcsIAotICAgIDEwMDc1NCwgMTAwNzYxLCAxMDA3NjgsIDEwMDc3NSwgMTAwNzgyLCAxMDA3ODksIDEwMDc5NiwgMTAwODAzLCAxMDA4MTAsIAotICAgIDEwMDgxNywgMTAwODI0LCAxMDA4MzEsIDEwMDgzOCwgMTAwODQ1LCAxMDA4NTIsIDEwMDg1OSwgMTAwODY2LCAxMDA4NzMsIAotICAgIDEwMDg4MCwgMTAwODg2LCAxMDA4OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDkwMCwgMTAwOTA1LCAxMDA5MTAsIAotICAgIDEwMDkxNSwgMTAwOTIwLCAxMDA5MjUsIDEwMDkzMCwgMTAwOTM1LCAxMDA5NDAsIDEwMDk0NSwgMTAwOTUwLCAxMDA5NTUsIAotICAgIDEwMDk2MCwgMTAwOTY1LCAxMDA5NzAsIDEwMDk3NSwgMTAwOTgwLCAxMDA5ODUsIDEwMDk5MCwgMTAwOTk1LCAxMDEwMDAsIAotICAgIDEwMTAwNSwgMTAxMDEwLCAxMDEwMTUsIDEwMTAyMCwgMTAxMDI1LCAxMDEwMzAsIDEwMTAzNSwgMTAxMDQwLCAxMDEwNDUsIAotICAgIDEwMTA1MCwgMTAxMDU1LCAxMDEwNjAsIDEwMTA2NSwgMTAxMDcwLCAxMDEwNzUsIDEwMTA4MCwgMTAxMDg1LCAxMDEwOTEsIAotICAgIDAsIDAsIDAsIDAsIDEwMTA5NywgMTAxMTAxLCAxMDExMDUsIDEwMTExMCwgMTAxMTE1LCAxMDExMjEsIDEwMTEyNywgCi0gICAgMTAxMTMzLCAxMDExNDMsIDEwMTE1MiwgMTAxMTU4LCAxMDExNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwMTE3MywgMTAxMTc3LCAxMDExODIsIDEwMTE4NywgMTAxMTkyLCAxMDExOTcsIDEwMTIwMiwgMTAxMjA3LCAxMDEyMTIsIAotICAgIDEwMTIxNiwgMTAxMjIxLCAxMDEyMjUsIDEwMTIzMCwgMTAxMjM0LCAxMDEyMzksIDEwMTI0MywgMTAxMjQ4LCAxMDEyNTMsIAotICAgIDEwMTI1OCwgMTAxMjYzLCAxMDEyNjgsIDEwMTI3MywgMTAxMjc4LCAxMDEyODMsIDEwMTI4OCwgMTAxMjkzLCAxMDEyOTgsIAotICAgIDEwMTMwMywgMTAxMzA4LCAxMDEzMTMsIDEwMTMxOCwgMTAxMzIzLCAxMDEzMjgsIDEwMTMzMywgMTAxMzM4LCAxMDEzNDMsIAotICAgIDEwMTM0OCwgMTAxMzUzLCAxMDEzNTgsIDEwMTM2MywgMTAxMzY4LCAxMDEzNzMsIDEwMTM3OCwgMTAxMzgzLCAxMDEzODgsIAotICAgIDEwMTM5MywgMTAxMzk4LCAxMDE0MDMsIDEwMTQwOCwgMTAxNDEzLCAxMDE0MTgsIDEwMTQyMywgMTAxNDI4LCAxMDE0MzMsIAotICAgIDAsIDAsIDAsIDEwMTQzOCwgMTAxNDQzLCAxMDE0NTIsIDEwMTQ2MCwgMTAxNDY5LCAxMDE0NzgsIDEwMTQ4OSwgMTAxNTAwLCAKLSAgICAxMDE1MDcsIDEwMTUxNCwgMTAxNTIxLCAxMDE1MjgsIDEwMTUzNSwgMTAxNTQyLCAxMDE1NDksIDEwMTU1NiwgMTAxNTYzLCAKLSAgICAxMDE1NzAsIDEwMTU3NywgMTAxNTg0LCAxMDE1OTEsIDEwMTU5OCwgMTAxNjA1LCAxMDE2MTIsIDEwMTYxOSwgMTAxNjI2LCAKLSAgICAxMDE2MzMsIDEwMTY0MCwgMTAxNjQ3LCAwLCAwLCAxMDE2NTQsIDEwMTY2MCwgMTAxNjY2LCAxMDE2NzIsIDEwMTY3OCwgCi0gICAgMTAxNjg1LCAxMDE2OTIsIDEwMTcwMCwgMTAxNzA4LCAxMDE3MTUsIDEwMTcyMiwgMTAxNzI5LCAxMDE3MzYsIDEwMTc0MywgCi0gICAgMTAxNzUwLCAxMDE3NTcsIDEwMTc2NCwgMTAxNzcxLCAxMDE3NzgsIDEwMTc4NSwgMTAxNzkyLCAxMDE3OTksIDEwMTgwNiwgCi0gICAgMTAxODEzLCAxMDE4MjAsIDEwMTgyNywgMTAxODM0LCAwLCAwLCAwLCAwLCAwLCAxMDE4NDEsIDEwMTg0NywgMTAxODUzLCAKLSAgICAxMDE4NTksIDEwMTg2NSwgMTAxODcyLCAxMDE4NzksIDEwMTg4NywgMTAxODk1LCAxMDE5MDIsIDEwMTkwOSwgMTAxOTE2LCAKLSAgICAxMDE5MjMsIDEwMTkzMCwgMTAxOTM3LCAxMDE5NDQsIDEwMTk1MSwgMTAxOTU4LCAxMDE5NjUsIDEwMTk3MiwgMTAxOTc5LCAKLSAgICAxMDE5ODYsIDEwMTk5MywgMTAyMDAwLCAxMDIwMDcsIDEwMjAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyMDIxLCAKLSAgICAxMDIwMjgsIDEwMjAzNywgMTAyMDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIwNTcsIAotICAgIDEwMjA2MywgMTAyMDY5LCAxMDIwNzUsIDEwMjA4MSwgMTAyMDg4LCAxMDIwOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwMjEwMywgMTAyMTEwLCAxMDIxMTcsIDEwMjEyNSwgMTAyMTMyLCAxMDIxMzksIDEwMjE0NiwgMTAyMTUzLCAxMDIxNjEsIAotICAgIDEwMjE2OSwgMTAyMTc3LCAxMDIxODUsIDEwMjE5MywgMTAyMjAxLCAxMDIyMDksIDEwMjIxNywgMTAyMjI1LCAxMDIyMzMsIAotICAgIDEwMjI0MSwgMTAyMjQ5LCAxMDIyNTcsIDEwMjI2NSwgMTAyMjczLCAxMDIyODEsIDEwMjI4OSwgMTAyMjk3LCAxMDIzMDUsIAotICAgIDEwMjMxMywgMTAyMzIxLCAxMDIzMjksIDEwMjMzNywgMTAyMzQ1LCAxMDIzNTMsIDEwMjM2MSwgMTAyMzY5LCAxMDIzNzcsIAotICAgIDEwMjM4NSwgMTAyMzkzLCAxMDI0MDEsIDEwMjQwOSwgMTAyNDE3LCAxMDI0MjUsIDEwMjQzMywgMTAyNDQxLCAxMDI0NDksIAotICAgIDEwMjQ1NywgMTAyNDY1LCAxMDI0NzMsIDEwMjQ4MSwgMTAyNDg5LCAxMDI0OTcsIDEwMjUwNSwgMTAyNTEzLCAxMDI1MjEsIAotICAgIDEwMjUyOSwgMTAyNTM3LCAxMDI1NDUsIDEwMjU1MywgMTAyNTYxLCAxMDI1NjksIDEwMjU3NywgMTAyNTg1LCAxMDI1OTMsIAotICAgIDEwMjYwMSwgMTAyNjA5LCAxMDI2MTcsIDEwMjYyNSwgMTAyNjMzLCAxMDI2NDEsIDEwMjY0OSwgMTAyNjU3LCAxMDI2NjUsIAotICAgIDEwMjY3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyNjgxLCAxMDI2ODYsIDEwMjY5MiwgMTAyNjk4LCAxMDI3MDQsIAotICAgIDEwMjcxMCwgMTAyNzE2LCAxMDI3MjIsIDEwMjcyOCwgMTAyNzM0LCAxMDI3MzksIDEwMjc0NiwgMTAyNzUyLCAxMDI3NTgsIAotICAgIDEwMjc2NCwgMTAyNzcwLCAxMDI3NzYsIDEwMjc4MSwgMTAyNzg3LCAxMDI3OTMsIDEwMjc5OSwgMTAyODA1LCAxMDI4MTEsIAotICAgIDEwMjgxNywgMTAyODIzLCAxMDI4MjksIDEwMjgzNSwgMTAyODQxLCAxMDI4NDYsIDEwMjg1MiwgMTAyODYwLCAxMDI4NjgsIAotICAgIDEwMjg3NCwgMTAyODgwLCAxMDI4ODYsIDEwMjg5MiwgMTAyOTAwLCAxMDI5MDYsIDEwMjkxMiwgMTAyOTE4LCAxMDI5MjQsIAotICAgIDEwMjkzMCwgMTAyOTM2LCAxMDI5NDEsIDEwMjk0NywgMTAyOTU1LCAxMDI5NjMsIDEwMjk2OSwgMTAyOTc1LCAxMDI5ODEsIAotICAgIDEwMjk4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyOTk0LCAxMDI5OTksIDEwMzAwNSwgCi0gICAgMTAzMDExLCAxMDMwMTcsIDEwMzAyMywgMTAzMDI5LCAxMDMwMzUsIDEwMzA0MSwgMTAzMDQ3LCAxMDMwNTIsIDEwMzA1OSwgCi0gICAgMTAzMDY1LCAxMDMwNzEsIDEwMzA3NywgMTAzMDgzLCAxMDMwODksIDEwMzA5NCwgMTAzMTAwLCAxMDMxMDYsIDEwMzExMiwgCi0gICAgMTAzMTE4LCAxMDMxMjQsIDEwMzEzMCwgMTAzMTM2LCAxMDMxNDIsIDEwMzE0OCwgMTAzMTU0LCAxMDMxNTksIDEwMzE2NSwgCi0gICAgMTAzMTczLCAxMDMxODEsIDEwMzE4NywgMTAzMTkzLCAxMDMxOTksIDEwMzIwNSwgMTAzMjEzLCAxMDMyMTksIDEwMzIyNSwgCi0gICAgMTAzMjMxLCAxMDMyMzcsIDEwMzI0MywgMTAzMjQ5LCAxMDMyNTQsIDEwMzI2MCwgMTAzMjY4LCAxMDMyNzYsIDEwMzI4MiwgCi0gICAgMTAzMjg4LCAxMDMyOTQsIDEwMzMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzA3LCAxMDMzMTEsIDEwMzMxNSwgCi0gICAgMTAzMzIwLCAxMDMzMjUsIDEwMzMzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTAwMTkyLCAxMDAxOTcsIDEwMDIwMiwgMTAwMjA3LCAxMDAyMTIsIDEwMDIxNywgMTAwMjIyLCAxMDAyMjcsIDEwMDIzMiwgCisgICAgMTAwMjM3LCAxMDAyNDIsIDEwMDI0NywgMTAwMjUyLCAxMDAyNTcsIDEwMDI2MiwgMTAwMjY3LCAxMDAyNzIsIDEwMDI3NywgCisgICAgMTAwMjgyLCAwLCAxMDAyODcsIDEwMDI5MiwgMCwgMCwgMCwgMCwgMCwgMTAwMjk3LCAxMDAzMDEsIDEwMDMwNSwgMTAwMzEwLCAKKyAgICAxMDAzMTUsIDEwMDMyMSwgMTAwMzI2LCAxMDAzMzEsIDEwMDMzNiwgMTAwMzQxLCAxMDAzNDYsIDEwMDM1MSwgMTAwMzU2LCAKKyAgICAxMDAzNjEsIDEwMDM2NiwgMTAwMzcxLCAxMDAzNzYsIDEwMDM4MSwgMTAwMzg2LCAxMDAzOTEsIDEwMDM5NiwgMTAwNDAxLCAKKyAgICAxMDA0MDYsIDEwMDQxMSwgMTAwNDE2LCAxMDA0MjEsIDEwMDQyNiwgMTAwNDMxLCAxMDA0MzUsIDEwMDQ0MCwgMTAwNDQ1LCAKKyAgICAxMDA0NTEsIDEwMDQ1NSwgMCwgMCwgMCwgMTAwNDU5LCAxMDA0NjUsIDEwMDQ2OSwgMTAwNDc0LCAxMDA0NzksIDEwMDQ4NCwgCisgICAgMTAwNDg4LCAxMDA0OTMsIDEwMDQ5NywgMTAwNTAyLCAxMDA1MDcsIDEwMDUxMSwgMTAwNTE2LCAxMDA1MjEsIDEwMDUyNSwgCisgICAgMTAwNTI5LCAxMDA1MzQsIDEwMDUzOSwgMTAwNTQzLCAxMDA1NDgsIDEwMDU1MywgMTAwNTU4LCAxMDA1NjMsIDEwMDU2OCwgCisgICAgMTAwNTczLCAxMDA1NzgsIDEwMDU4MywgMCwgMCwgMCwgMCwgMCwgMTAwNTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA1OTMsIDEwMDU5OCwgMTAwNjAzLCAxMDA2MDgsIDEwMDYxMywgMTAwNjE4LCAKKyAgICAxMDA2MjQsIDEwMDYzMCwgMTAwNjM2LCAxMDA2NDEsIDEwMDY0NiwgMTAwNjUxLCAxMDA2NTcsIDEwMDY2MywgMTAwNjY5LCAKKyAgICAxMDA2NzUsIDEwMDY4MSwgMTAwNjg2LCAxMDA2OTIsIDEwMDY5OCwgMTAwNzA0LCAxMDA3MTAsIDEwMDcxNiwgMTAwNzIxLCAKKyAgICAxMDA3MjcsIDEwMDczMywgMTAwNzM5LCAxMDA3NDUsIDEwMDc1MSwgMTAwNzU2LCAxMDA3NjIsIDEwMDc2OCwgMTAwNzc0LCAKKyAgICAxMDA3NzksIDEwMDc4NCwgMTAwNzg5LCAxMDA3OTQsIDEwMDc5OSwgMTAwODA1LCAxMDA4MTEsIDEwMDgxNiwgMTAwODIxLCAKKyAgICAxMDA4MjYsIDEwMDgzMiwgMTAwODM4LCAxMDA4NDMsIDEwMDg0OSwgMTAwODU1LCAxMDA4NjEsIDEwMDg2OSwgMTAwODc1LCAKKyAgICAxMDA4ODAsIDEwMDg4NiwgMTAwODkyLCAxMDA4OTgsIDEwMDkwMywgMCwgMCwgMCwgMCwgMTAwOTA5LCAxMDA5MTgsIAorICAgIDEwMDkyNiwgMTAwOTMzLCAxMDA5NDAsIDEwMDk0NSwgMTAwOTUwLCAxMDA5NTUsIDEwMDk2MCwgMTAwOTY1LCAxMDA5NzAsIAorICAgIDEwMDk3NiwgMTAwOTgxLCAxMDA5ODcsIDEwMDk5MywgMTAwOTk5LCAxMDEwMDUsIDEwMTAxMSwgMTAxMDE3LCAxMDEwMjMsIAorICAgIDAsIDAsIDEwMTAyOSwgMTAxMDM2LCAxMDEwNDMsIDEwMTA1MCwgMTAxMDU4LCAxMDEwNjYsIDEwMTA3NCwgMTAxMDgyLCAKKyAgICAxMDEwOTAsIDEwMTA5OCwgMTAxMTA1LCAxMDExMTIsIDEwMTExOSwgMTAxMTI3LCAxMDExMzUsIDEwMTE0MywgMTAxMTUxLCAKKyAgICAxMDExNTksIDEwMTE2NywgMTAxMTc1LCAxMDExODMsIDEwMTE5MSwgMTAxMTk5LCAxMDEyMDcsIDEwMTIxNSwgMTAxMjIzLCAKKyAgICAxMDEyMzEsIDEwMTIzOSwgMTAxMjQ4LCAxMDEyNTcsIDEwMTI2NiwgMTAxMjc2LCAxMDEyODYsIDEwMTI5NiwgMTAxMzA2LCAKKyAgICAxMDEzMTYsIDEwMTMyNiwgMTAxMzM0LCAxMDEzNDIsIDEwMTM1MCwgMTAxMzU5LCAxMDEzNjgsIDEwMTM3NywgMTAxMzg2LCAKKyAgICAxMDEzOTUsIDEwMTQwNCwgMTAxNDEzLCAxMDE0MTcsIDEwMTQyMiwgMTAxNDI3LCAwLCAxMDE0MzMsIDEwMTQzOCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTAxNDQzLCAxMDE0NDksIDEwMTQ1NiwgMTAxNDYxLCAxMDE0NjYsIDEwMTQ3MCwgMTAxNDc1LCAxMDE0ODAsIAorICAgIDAsIDEwMTQ4NSwgMTAxNDkwLCAxMDE0OTUsIDAsIDEwMTUwMCwgMTAxNTA1LCAxMDE1MTAsIDEwMTUxNSwgMTAxNTIwLCAKKyAgICAxMDE1MjUsIDEwMTUzMCwgMTAxNTM1LCAxMDE1NDAsIDEwMTU0NSwgMTAxNTUwLCAxMDE1NTQsIDEwMTU1OCwgMTAxNTYzLCAKKyAgICAxMDE1NjgsIDEwMTU3MywgMTAxNTc3LCAxMDE1ODEsIDEwMTU4NiwgMTAxNTkwLCAxMDE1OTUsIDEwMTYwMCwgMTAxNjA1LCAKKyAgICAxMDE2MTAsIDEwMTYxNSwgMTAxNjE5LCAxMDE2MjQsIDAsIDAsIDAsIDAsIDEwMTYyOSwgMTAxNjM1LCAxMDE2NDAsIDAsIDAsIAorICAgIDAsIDAsIDEwMTY0NSwgMTAxNjQ5LCAxMDE2NTMsIDEwMTY1NywgMTAxNjYxLCAxMDE2NjUsIDEwMTY3MCwgMTAxNjc1LCAKKyAgICAxMDE2ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMTY4NywgMTAxNjkzLCAxMDE3MDAsIDEwMTcwNiwgMTAxNzEzLCAKKyAgICAxMDE3MTksIDEwMTcyNSwgMTAxNzMxLCAxMDE3MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMTc0NCwgMTAxNzUyLCAKKyAgICAxMDE3NjAsIDEwMTc2OCwgMTAxNzc2LCAxMDE3ODQsIDEwMTc5MiwgMTAxODAwLCAxMDE4MDgsIDEwMTgxNiwgMTAxODI0LCAKKyAgICAxMDE4MzIsIDEwMTg0MCwgMTAxODQ4LCAxMDE4NTYsIDEwMTg2NCwgMTAxODcyLCAxMDE4ODAsIDEwMTg4OCwgMTAxODk2LCAKKyAgICAxMDE5MDQsIDEwMTkxMiwgMTAxOTIwLCAxMDE5MjgsIDEwMTkzNiwgMTAxOTQ0LCAxMDE5NTIsIDEwMTk2MCwgMTAxOTY4LCAKKyAgICAxMDE5NzYsIDEwMTk4MywgMTAxOTkxLCAxMDE5OTksIDEwMjAwNiwgMTAyMDEzLCAxMDIwMjAsIDEwMjAyNywgMTAyMDM0LCAKKyAgICAxMDIwNDEsIDEwMjA0OCwgMTAyMDU1LCAxMDIwNjIsIDEwMjA2OSwgMTAyMDc2LCAxMDIwODMsIDEwMjA5MCwgMTAyMDk3LCAKKyAgICAxMDIxMDQsIDEwMjExMSwgMTAyMTE4LCAxMDIxMjUsIDEwMjEzMiwgMTAyMTM5LCAxMDIxNDYsIDEwMjE1MywgMTAyMTYwLCAKKyAgICAxMDIxNjcsIDEwMjE3NCwgMTAyMTgxLCAxMDIxODgsIDEwMjE5NSwgMTAyMjAyLCAxMDIyMDgsIDEwMjIxNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzM3LCAxMDMzNDEsIDEwMzM0NSwgMTAzMzQ5LCAxMDMzNTMsIDEwMzM1NywgCi0gICAgMTAzMzYxLCAxMDMzNjYsIDEwMzM3MCwgMTAzMzc1LCAxMDMzODAsIDEwMzM4NSwgMTAzMzkwLCAxMDMzOTUsIDEwMzQwMCwgCi0gICAgMTAzNDA1LCAxMDM0MTAsIDEwMzQxNSwgMTAzNDIwLCAxMDM0MjYsIDEwMzQzMiwgMTAzNDM4LCAxMDM0NDUsIDEwMzQ1MiwgCi0gICAgMTAzNDU5LCAxMDM0NjYsIDEwMzQ3MywgMTAzNDgwLCAxMDM0ODcsIDEwMzQ5NCwgMTAzNTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDIyMjIsIDEwMjIyNywgMTAyMjMyLCAxMDIyMzcsIDEwMjI0MiwgMTAyMjQ3LCAxMDIyNTIsIAorICAgIDEwMjI1NywgMTAyMjYyLCAxMDIyNjcsIDEwMjI3MiwgMTAyMjc3LCAxMDIyODIsIDEwMjI4NywgMTAyMjkyLCAxMDIyOTcsIAorICAgIDEwMjMwMiwgMTAyMzA3LCAxMDIzMTIsIDEwMjMxNywgMTAyMzIyLCAxMDIzMjcsIDEwMjMzMiwgMTAyMzM3LCAxMDIzNDIsIAorICAgIDEwMjM0NywgMTAyMzUyLCAxMDIzNTcsIDEwMjM2MiwgMTAyMzY3LCAxMDIzNzIsIDEwMjM3NywgMTAyMzgyLCAxMDIzODcsIAorICAgIDEwMjM5MiwgMTAyMzk3LCAxMDI0MDIsIDEwMjQwNywgMTAyNDEzLCAwLCAwLCAwLCAwLCAxMDI0MTksIDEwMjQyMywgCisgICAgMTAyNDI3LCAxMDI0MzIsIDEwMjQzNywgMTAyNDQzLCAxMDI0NDksIDEwMjQ1NSwgMTAyNDY1LCAxMDI0NzQsIDEwMjQ4MCwgCisgICAgMTAyNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI0OTUsIDEwMjQ5OSwgMTAyNTA0LCAxMDI1MDksIAorICAgIDEwMjUxNCwgMTAyNTE5LCAxMDI1MjQsIDEwMjUyOSwgMTAyNTM0LCAxMDI1MzgsIDEwMjU0MywgMTAyNTQ3LCAxMDI1NTIsIAorICAgIDEwMjU1NiwgMTAyNTYxLCAxMDI1NjUsIDEwMjU3MCwgMTAyNTc1LCAxMDI1ODAsIDEwMjU4NSwgMTAyNTkwLCAxMDI1OTUsIAorICAgIDEwMjYwMCwgMTAyNjA1LCAxMDI2MTAsIDEwMjYxNSwgMTAyNjIwLCAxMDI2MjUsIDEwMjYzMCwgMTAyNjM1LCAxMDI2NDAsIAorICAgIDEwMjY0NSwgMTAyNjUwLCAxMDI2NTUsIDEwMjY2MCwgMTAyNjY1LCAxMDI2NzAsIDEwMjY3NSwgMTAyNjgwLCAxMDI2ODUsIAorICAgIDEwMjY5MCwgMTAyNjk1LCAxMDI3MDAsIDEwMjcwNSwgMTAyNzEwLCAxMDI3MTUsIDEwMjcyMCwgMTAyNzI1LCAxMDI3MzAsIAorICAgIDEwMjczNSwgMTAyNzQwLCAxMDI3NDUsIDEwMjc1MCwgMTAyNzU1LCAwLCAwLCAwLCAxMDI3NjAsIDEwMjc2NSwgMTAyNzc0LCAKKyAgICAxMDI3ODIsIDEwMjc5MSwgMTAyODAwLCAxMDI4MTEsIDEwMjgyMiwgMTAyODI5LCAxMDI4MzYsIDEwMjg0MywgMTAyODUwLCAKKyAgICAxMDI4NTcsIDEwMjg2NCwgMTAyODcxLCAxMDI4NzgsIDEwMjg4NSwgMTAyODkyLCAxMDI4OTksIDEwMjkwNiwgMTAyOTEzLCAKKyAgICAxMDI5MjAsIDEwMjkyNywgMTAyOTM0LCAxMDI5NDEsIDEwMjk0OCwgMTAyOTU1LCAxMDI5NjIsIDEwMjk2OSwgMCwgMCwgCisgICAgMTAyOTc2LCAxMDI5ODIsIDEwMjk4OCwgMTAyOTk0LCAxMDMwMDAsIDEwMzAwNywgMTAzMDE0LCAxMDMwMjIsIDEwMzAzMCwgCisgICAgMTAzMDM3LCAxMDMwNDQsIDEwMzA1MSwgMTAzMDU4LCAxMDMwNjUsIDEwMzA3MiwgMTAzMDc5LCAxMDMwODYsIDEwMzA5MywgCisgICAgMTAzMTAwLCAxMDMxMDcsIDEwMzExNCwgMTAzMTIxLCAxMDMxMjgsIDEwMzEzNSwgMTAzMTQyLCAxMDMxNDksIDEwMzE1NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTAzMTYzLCAxMDMxNjksIDEwMzE3NSwgMTAzMTgxLCAxMDMxODcsIDEwMzE5NCwgMTAzMjAxLCAKKyAgICAxMDMyMDksIDEwMzIxNywgMTAzMjI0LCAxMDMyMzEsIDEwMzIzOCwgMTAzMjQ1LCAxMDMyNTIsIDEwMzI1OSwgMTAzMjY2LCAKKyAgICAxMDMyNzMsIDEwMzI4MCwgMTAzMjg3LCAxMDMyOTQsIDEwMzMwMSwgMTAzMzA4LCAxMDMzMTUsIDEwMzMyMiwgMTAzMzI5LCAKKyAgICAxMDMzMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzM0MywgMTAzMzUwLCAxMDMzNTksIDEwMzM2OSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzc5LCAxMDMzODUsIDEwMzM5MSwgMTAzMzk3LCAxMDM0MDMsIDEwMzQxMCwgCisgICAgMTAzNDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDM0MjUsIDEwMzQzMiwgMTAzNDM5LCAxMDM0NDcsIDEwMzQ1NCwgCisgICAgMTAzNDYxLCAxMDM0NjgsIDEwMzQ3NSwgMTAzNDgzLCAxMDM0OTEsIDEwMzQ5OSwgMTAzNTA3LCAxMDM1MTUsIDEwMzUyMywgCisgICAgMTAzNTMxLCAxMDM1MzksIDEwMzU0NywgMTAzNTU1LCAxMDM1NjMsIDEwMzU3MSwgMTAzNTc5LCAxMDM1ODcsIDEwMzU5NSwgCisgICAgMTAzNjAzLCAxMDM2MTEsIDEwMzYxOSwgMTAzNjI3LCAxMDM2MzUsIDEwMzY0MywgMTAzNjUxLCAxMDM2NTksIDEwMzY2NywgCisgICAgMTAzNjc1LCAxMDM2ODMsIDEwMzY5MSwgMTAzNjk5LCAxMDM3MDcsIDEwMzcxNSwgMTAzNzIzLCAxMDM3MzEsIDEwMzczOSwgCisgICAgMTAzNzQ3LCAxMDM3NTUsIDEwMzc2MywgMTAzNzcxLCAxMDM3NzksIDEwMzc4NywgMTAzNzk1LCAxMDM4MDMsIDEwMzgxMSwgCisgICAgMTAzODE5LCAxMDM4MjcsIDEwMzgzNSwgMTAzODQzLCAxMDM4NTEsIDEwMzg1OSwgMTAzODY3LCAxMDM4NzUsIDEwMzg4MywgCisgICAgMTAzODkxLCAxMDM4OTksIDEwMzkwNywgMTAzOTE1LCAxMDM5MjMsIDEwMzkzMSwgMTAzOTM5LCAxMDM5NDcsIDEwMzk1NSwgCisgICAgMTAzOTYzLCAxMDM5NzEsIDEwMzk3OSwgMTAzOTg3LCAxMDM5OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDAwMywgCisgICAgMTA0MDA4LCAxMDQwMTQsIDEwNDAyMCwgMTA0MDI2LCAxMDQwMzIsIDEwNDAzOCwgMTA0MDQ0LCAxMDQwNTAsIDEwNDA1NiwgCisgICAgMTA0MDYxLCAxMDQwNjgsIDEwNDA3NCwgMTA0MDgwLCAxMDQwODYsIDEwNDA5MiwgMTA0MDk4LCAxMDQxMDMsIDEwNDEwOSwgCisgICAgMTA0MTE1LCAxMDQxMjEsIDEwNDEyNywgMTA0MTMzLCAxMDQxMzksIDEwNDE0NSwgMTA0MTUxLCAxMDQxNTcsIDEwNDE2MywgCisgICAgMTA0MTY4LCAxMDQxNzQsIDEwNDE4MiwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMiwgMTA0MjA4LCAxMDQyMTQsIDEwNDIyMiwgCisgICAgMTA0MjI4LCAxMDQyMzQsIDEwNDI0MCwgMTA0MjQ2LCAxMDQyNTIsIDEwNDI1OCwgMTA0MjYzLCAxMDQyNjksIDEwNDI3NywgCisgICAgMTA0Mjg1LCAxMDQyOTEsIDEwNDI5NywgMTA0MzAzLCAxMDQzMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEwNDMxNiwgMTA0MzIxLCAxMDQzMjcsIDEwNDMzMywgMTA0MzM5LCAxMDQzNDUsIDEwNDM1MSwgMTA0MzU3LCAKKyAgICAxMDQzNjMsIDEwNDM2OSwgMTA0Mzc0LCAxMDQzODEsIDEwNDM4NywgMTA0MzkzLCAxMDQzOTksIDEwNDQwNSwgMTA0NDExLCAKKyAgICAxMDQ0MTYsIDEwNDQyMiwgMTA0NDI4LCAxMDQ0MzQsIDEwNDQ0MCwgMTA0NDQ2LCAxMDQ0NTIsIDEwNDQ1OCwgMTA0NDY0LCAKKyAgICAxMDQ0NzAsIDEwNDQ3NiwgMTA0NDgxLCAxMDQ0ODcsIDEwNDQ5NSwgMTA0NTAzLCAxMDQ1MDksIDEwNDUxNSwgMTA0NTIxLCAKKyAgICAxMDQ1MjcsIDEwNDUzNSwgMTA0NTQxLCAxMDQ1NDcsIDEwNDU1MywgMTA0NTU5LCAxMDQ1NjUsIDEwNDU3MSwgMTA0NTc2LCAKKyAgICAxMDQ1ODIsIDEwNDU5MCwgMTA0NTk4LCAxMDQ2MDQsIDEwNDYxMCwgMTA0NjE2LCAxMDQ2MjMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEwNDYyOSwgMTA0NjMzLCAxMDQ2MzcsIDEwNDY0MiwgMTA0NjQ3LCAxMDQ2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEwMzUwOCwgMTAzNTEyLCAxMDM1MTYsIDEwMzUyMCwgMTAzNTI0LCAxMDM1MjgsIDEwMzUzMSwgMTAzNTM1LCAKLSAgICAxMDM1MzgsIDEwMzU0MiwgMTAzNTQ1LCAxMDM1NDksIDEwMzU1MywgMTAzNTU4LCAxMDM1NjIsIDEwMzU2NywgMTAzNTcwLCAKLSAgICAxMDM1NzQsIDEwMzU3NywgMTAzNTgxLCAxMDM1ODQsIDEwMzU4OCwgMTAzNTkyLCAxMDM1OTYsIDEwMzYwMCwgMTAzNjA0LCAKLSAgICAxMDM2MDgsIDEwMzYxMiwgMTAzNjE2LCAxMDM2MjAsIDEwMzYyNCwgMTAzNjI4LCAxMDM2MzIsIDEwMzYzNiwgMTAzNjQwLCAKLSAgICAxMDM2NDQsIDEwMzY0OCwgMTAzNjUyLCAxMDM2NTYsIDEwMzY2MCwgMTAzNjYzLCAxMDM2NjcsIDEwMzY3MSwgMTAzNjc1LCAKLSAgICAxMDM2NzgsIDEwMzY4MSwgMTAzNjg1LCAxMDM2ODksIDEwMzY5MywgMTAzNjk3LCAxMDM3MDEsIDEwMzcwNSwgMTAzNzA4LCAKLSAgICAxMDM3MTIsIDEwMzcxOCwgMTAzNzI0LCAxMDM3MzAsIDEwMzczNSwgMTAzNzQyLCAxMDM3NDYsIDEwMzc1MSwgMTAzNzU1LCAKLSAgICAxMDM3NjAsIDEwMzc2NSwgMTAzNzcxLCAxMDM3NzYsIDEwMzc4MiwgMTAzNzg2LCAxMDM3OTEsIDEwMzc5NSwgMTAzODAwLCAKLSAgICAxMDM4MDMsIDEwMzgwNiwgMTAzODEwLCAxMDM4MTUsIDEwMzgyMSwgMTAzODI2LCAxMDM4MzIsIDAsIDAsIDAsIDAsIAotICAgIDEwMzgzNywgMTAzODQwLCAxMDM4NDMsIDEwMzg0NiwgMTAzODQ5LCAxMDM4NTIsIDEwMzg1NSwgMTAzODU5LCAxMDM4NjIsIAotICAgIDEwMzg2NiwgMTAzODcwLCAxMDM4NzQsIDEwMzg3OCwgMTAzODgyLCAxMDM4ODYsIDEwMzg5MCwgMTAzODk0LCAxMDM4OTgsIAotICAgIDEwMzkwMiwgMTAzOTA3LCAxMDM5MTIsIDEwMzkxNiwgMTAzOTE5LCAxMDM5MjIsIDEwMzkyNSwgMTAzOTI4LCAxMDM5MzEsIAotICAgIDEwMzkzNCwgMTAzOTM4LCAxMDM5NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwMzk0NSwgMTAzOTQ5LCAxMDM5NTQsIDEwMzk1OSwgMTAzOTY0LCAxMDM5NjgsIDEwMzk3MywgMTAzOTc3LCAxMDM5ODIsIAotICAgIDEwMzk4NiwgMTAzOTkxLCAxMDM5OTUsIDEwNDAwMCwgMTA0MDA0LCAxMDQwMDksIDEwNDAxMywgMTA0MDE4LCAxMDQwMjMsIAotICAgIDEwNDAyOCwgMTA0MDMzLCAxMDQwMzgsIDEwNDA0MywgMTA0MDQ4LCAxMDQwNTMsIDEwNDA1OCwgMTA0MDYzLCAxMDQwNjgsIAotICAgIDEwNDA3MywgMTA0MDc4LCAxMDQwODMsIDEwNDA4OCwgMTA0MDkzLCAxMDQwOTgsIDEwNDEwMywgMTA0MTA4LCAxMDQxMTMsIAotICAgIDEwNDExOCwgMTA0MTIyLCAxMDQxMjcsIDEwNDEzMiwgMTA0MTM3LCAxMDQxNDEsIDEwNDE0NSwgMTA0MTUwLCAxMDQxNTUsIAotICAgIDEwNDE2MCwgMTA0MTY1LCAxMDQxNzAsIDEwNDE3NSwgMTA0MTc5LCAxMDQxODUsIDEwNDE5MCwgMTA0MTk2LCAxMDQyMDEsIAotICAgIDEwNDIwNywgMTA0MjEyLCAxMDQyMTgsIDEwNDIyMywgMTA0MjI5LCAxMDQyMzQsIDEwNDIzOSwgMTA0MjQ0LCAxMDQyNDksIAotICAgIDEwNDI1MywgMTA0MjU4LCAxMDQyNjQsIDEwNDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0MjczLCAxMDQyODAsIDEwNDI4NywgMTA0Mjk0LCAxMDQzMDEsIDEwNDMwOCwgMTA0MzE1LCAxMDQzMjIsIDEwNDMyOSwgCi0gICAgMTA0MzM2LCAxMDQzNDMsIDEwNDM1MCwgMTA0MzU3LCAxMDQzNjQsIDEwNDM3MSwgMTA0Mzc4LCAxMDQzODUsIDEwNDM5MiwgCi0gICAgMTA0Mzk5LCAxMDQ0MDYsIDEwNDQxMywgMTA0NDIwLCAxMDQ0MjcsIDEwNDQzNCwgMTA0NDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDQ0NDgsIDEwNDQ1NSwgMTA0NDYxLCAxMDQ0NjcsIDEwNDQ3MywgMTA0NDc5LCAxMDQ0ODUsIDEwNDQ5MSwgCi0gICAgMTA0NDk4LCAxMDQ1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDUxMSwgMTA0NTE2LCAxMDQ1MjEsIDEwNDUyNiwgMTA0NTMxLCAKLSAgICAxMDQ1MzUsIDEwNDUzOSwgMTA0NTQzLCAxMDQ1NDgsIDEwNDU1MywgMTA0NTU4LCAxMDQ1NjMsIDEwNDU2OCwgMTA0NTczLCAKLSAgICAxMDQ1NzgsIDEwNDU4MywgMTA0NTg4LCAxMDQ1OTMsIDEwNDU5OCwgMTA0NjAzLCAxMDQ2MDgsIDEwNDYxMywgMTA0NjE4LCAKLSAgICAxMDQ2MjMsIDEwNDYyOCwgMTA0NjMzLCAxMDQ2MzgsIDEwNDY0MywgMTA0NjQ4LCAxMDQ2NTMsIDEwNDY1OCwgMTA0NjYzLCAKLSAgICAxMDQ2NjgsIDEwNDY3MywgMTA0Njc4LCAxMDQ2ODMsIDEwNDY4OCwgMTA0NjkzLCAxMDQ2OTgsIDEwNDcwMywgMTA0NzA4LCAKLSAgICAxMDQ3MTMsIDEwNDcxOSwgMTA0NzI0LCAxMDQ3MzAsIDEwNDczNSwgMTA0NzQxLCAxMDQ3NDYsIDEwNDc1MiwgMTA0NzU4LCAKLSAgICAxMDQ3NjIsIDEwNDc2NywgMTA0NzcxLCAwLCAxMDQ3NzUsIDEwNDc4MCwgMTA0Nzg0LCAxMDQ3ODgsIDEwNDc5MiwgCi0gICAgMTA0Nzk2LCAxMDQ4MDAsIDEwNDgwNCwgMTA0ODA5LCAxMDQ4MTMsIDEwNDgxOCwgMTA0ODIzLCAxMDQ4MjcsIDEwNDgzMiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0ODM3LCAxMDQ4NDEsIDEwNDg0NSwgMTA0ODQ5LCAKLSAgICAxMDQ4NTMsIDEwNDg1NywgMTA0ODYxLCAxMDQ4NjYsIDEwNDg3MSwgMTA0ODc2LCAxMDQ4ODEsIDEwNDg4NiwgMTA0ODkxLCAKLSAgICAxMDQ4OTYsIDEwNDkwMSwgMTA0OTA2LCAxMDQ5MTEsIDEwNDkxNiwgMTA0OTIxLCAxMDQ5MjYsIDEwNDkzMSwgMTA0OTM2LCAKLSAgICAxMDQ5NDEsIDEwNDk0NiwgMTA0OTUxLCAxMDQ5NTUsIDEwNDk2MCwgMTA0OTY1LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc5LCAKLSAgICAxMDQ5ODQsIDEwNDk4OSwgMTA0OTk0LCAxMDQ5OTgsIDEwNTAwMywgMTA1MDA4LCAxMDUwMTMsIDEwNTAxOCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MDIzLCAxMDUwMjcsIDEwNTAzMSwgMTA1MDM1LCAxMDUwMzgsIDEwNTA0MiwgMTA1MDQ1LCAKLSAgICAxMDUwNDksIDEwNTA1MiwgMTA1MDU2LCAxMDUwNjAsIDEwNTA2NSwgMTA1MDY5LCAxMDUwNzQsIDEwNTA3NywgMTA1MDgxLCAKLSAgICAxMDUwODQsIDEwNTA4OCwgMTA1MDkxLCAxMDUwOTUsIDEwNTA5OSwgMTA1MTAzLCAxMDUxMDcsIDEwNTExMSwgMTA1MTE1LCAKLSAgICAxMDUxMTksIDEwNTEyMywgMTA1MTI3LCAxMDUxMzEsIDEwNTEzNSwgMTA1MTM5LCAxMDUxNDMsIDEwNTE0NywgMTA1MTUxLCAKLSAgICAxMDUxNTUsIDEwNTE1OSwgMTA1MTYzLCAxMDUxNjcsIDEwNTE3MCwgMTA1MTc0LCAxMDUxNzgsIDEwNTE4MiwgMTA1MTg1LCAKLSAgICAxMDUxODgsIDEwNTE5MiwgMTA1MTk2LCAxMDUyMDAsIDEwNTIwNCwgMTA1MjA4LCAxMDUyMTIsIDEwNTIxNiwgMTA1MjE5LCAKLSAgICAxMDUyMjQsIDEwNTIyOCwgMTA1MjMzLCAxMDUyMzcsIDEwNTI0MiwgMTA1MjQ3LCAxMDUyNTMsIDEwNTI1OCwgMTA1MjY0LCAKLSAgICAxMDUyNjgsIDEwNTI3MywgMTA1Mjc3LCAxMDUyODIsIDEwNTI4NiwgMTA1MjkwLCAxMDUyOTQsIDEwNTI5OCwgMTA1MzAxLCAKLSAgICAxMDUzMDQsIDEwNTMwOCwgMTA1MzEyLCAxMDUzMTUsIDEwNTMxOSwgMTA1MzIzLCAxMDUzMjcsIDEwNTMzNCwgMCwgMCwgCi0gICAgMTA1MzM4LCAxMDUzNDIsIDEwNTM0NSwgMTA1MzQ4LCAxMDUzNTEsIDEwNTM1NCwgMTA1MzU3LCAxMDUzNjAsIDEwNTM2NCwgCi0gICAgMTA1MzY3LCAxMDUzNzEsIDEwNTM3NCwgMTA1Mzc4LCAxMDUzODEsIDEwNTM4NSwgMTA1MzkwLCAwLCAxMDUzOTUsIAotICAgIDEwNTQwMCwgMTA1NDA1LCAxMDU0MTAsIDEwNTQxNSwgMTA1NDIwLCAxMDU0MjUsIDEwNTQzMSwgMTA1NDM2LCAxMDU0NDIsIAotICAgIDEwNTQ0OCwgMTA1NDU0LCAxMDU0NjAsIDEwNTQ2NiwgMTA1NDcyLCAxMDU0NzgsIDEwNTQ4NCwgMTA1NDkwLCAxMDU0OTYsIAotICAgIDEwNTUwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NTEwLCAxMDU1MTQsIDEwNTUxOSwgMTA1NTIzLCAKLSAgICAxMDU1MjcsIDEwNTUzMSwgMTA1NTM2LCAxMDU1NDAsIDEwNTU0NSwgMTA1NTQ5LCAxMDU1NTQsIDEwNTU1OSwgMTA1NTY0LCAKLSAgICAxMDU1NjksIDEwNTU3NCwgMTA1NTc5LCAxMDU1ODQsIDEwNTU4OSwgMCwgMTA1NTk0LCAxMDU1OTksIDEwNTYwNCwgCi0gICAgMTA1NjA5LCAxMDU2MTQsIDEwNTYxOSwgMTA1NjI0LCAxMDU2MjksIDEwNTYzNCwgMTA1NjM5LCAxMDU2NDQsIDEwNTY0OSwgCi0gICAgMTA1NjU0LCAxMDU2NTgsIDEwNTY2MywgMTA1NjY4LCAxMDU2NzMsIDEwNTY3OCwgMTA1NjgyLCAxMDU2ODYsIDEwNTY5MSwgCi0gICAgMTA1Njk2LCAxMDU3MDEsIDEwNTcwNiwgMTA1NzEwLCAxMDU3MTUsIDEwNTcyMSwgMTA1NzI2LCAxMDU3MzIsIDEwNTczNywgCi0gICAgMTA1NzQyLCAxMDU3NDgsIDEwNTc1MywgMTA1NzU5LCAxMDU3NjQsIDEwNTc2OSwgMTA1Nzc0LCAxMDU3NzksIDEwNTc4MywgCi0gICAgMTA1Nzg4LCAxMDU3OTQsIDEwNTc5OSwgMTA1ODA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ2NTksIDEwNDY2MywgCisgICAgMTA0NjY3LCAxMDQ2NzEsIDEwNDY3NSwgMTA0Njc5LCAxMDQ2ODMsIDEwNDY4OCwgMTA0NjkyLCAxMDQ2OTcsIDEwNDcwMiwgCisgICAgMTA0NzA3LCAxMDQ3MTIsIDEwNDcxNywgMTA0NzIyLCAxMDQ3MjcsIDEwNDczMiwgMTA0NzM3LCAxMDQ3NDIsIDEwNDc0OCwgCisgICAgMTA0NzU0LCAxMDQ3NjAsIDEwNDc2NywgMTA0Nzc0LCAxMDQ3ODEsIDEwNDc4OCwgMTA0Nzk1LCAxMDQ4MDIsIDEwNDgwOSwgCisgICAgMTA0ODE2LCAxMDQ4MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwNTgxMCwgMTA1ODE0LCAxMDU4MTgsIDEwNTgyMiwgMTA1ODI2LCAxMDU4MzAsIDEwNTgzNSwgMCwgCi0gICAgMTA1ODQwLCAwLCAxMDU4NDUsIDEwNTg1MCwgMTA1ODU1LCAxMDU4NjAsIDAsIDEwNTg2NSwgMTA1ODcwLCAxMDU4NzUsIAotICAgIDEwNTg4MCwgMTA1ODg1LCAxMDU4OTAsIDEwNTg5NSwgMTA1OTAwLCAxMDU5MDUsIDEwNTkxMCwgMTA1OTE1LCAxMDU5MjAsIAotICAgIDEwNTkyNSwgMTA1OTI5LCAxMDU5MzQsIDAsIDEwNTkzOSwgMTA1OTQ0LCAxMDU5NDgsIDEwNTk1MiwgMTA1OTU3LCAKLSAgICAxMDU5NjIsIDEwNTk2NywgMTA1OTcyLCAxMDU5NzYsIDEwNTk4MSwgMTA1OTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU5OTEsIAotICAgIDEwNTk5NSwgMTA2MDAwLCAxMDYwMDQsIDEwNjAwOSwgMTA2MDEzLCAxMDYwMTgsIDEwNjAyMiwgMTA2MDI3LCAxMDYwMzEsIAotICAgIDEwNjAzNiwgMTA2MDQwLCAxMDYwNDUsIDEwNjA1MCwgMTA2MDU1LCAxMDYwNjAsIDEwNjA2NSwgMTA2MDcwLCAxMDYwNzUsIAotICAgIDEwNjA4MCwgMTA2MDg1LCAxMDYwOTAsIDEwNjA5NSwgMTA2MTAwLCAxMDYxMDUsIDEwNjExMCwgMTA2MTE1LCAxMDYxMjAsIAotICAgIDEwNjEyNSwgMTA2MTMwLCAxMDYxMzUsIDEwNjE0MCwgMTA2MTQ1LCAxMDYxNTAsIDEwNjE1NSwgMTA2MTU5LCAxMDYxNjQsIAotICAgIDEwNjE2OSwgMTA2MTc0LCAxMDYxNzksIDEwNjE4MywgMTA2MTg3LCAxMDYxOTIsIDEwNjE5NywgMTA2MjAyLCAxMDYyMDcsIAotICAgIDEwNjIxMiwgMTA2MjE2LCAxMDYyMjEsIDEwNjIyNywgMTA2MjMyLCAxMDYyMzgsIDEwNjI0MywgMTA2MjQ5LCAxMDYyNTQsIAotICAgIDEwNjI2MCwgMTA2MjY1LCAxMDYyNzEsIDEwNjI3NiwgMCwgMCwgMCwgMCwgMCwgMTA2MjgxLCAxMDYyODYsIDEwNjI5MCwgCi0gICAgMTA2Mjk0LCAxMDYyOTgsIDEwNjMwMiwgMTA2MzA2LCAxMDYzMTAsIDEwNjMxNSwgMTA2MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDYzMjQsIDEwNjMzMSwgMTA2MzM2LCAxMDYzNDEsIDAsIDEwNjM0NiwgMTA2MzUwLCAxMDYzNTUsIDEwNjM1OSwgCi0gICAgMTA2MzY0LCAxMDYzNjgsIDEwNjM3MywgMTA2Mzc4LCAwLCAwLCAxMDYzODMsIDEwNjM4OCwgMCwgMCwgMTA2MzkzLCAKLSAgICAxMDYzOTgsIDEwNjQwMywgMTA2NDA3LCAxMDY0MTIsIDEwNjQxNywgMTA2NDIyLCAxMDY0MjcsIDEwNjQzMiwgMTA2NDM3LCAKLSAgICAxMDY0NDIsIDEwNjQ0NywgMTA2NDUyLCAxMDY0NTcsIDEwNjQ2MiwgMTA2NDY3LCAxMDY0NzIsIDEwNjQ3NywgMTA2NDgyLCAKLSAgICAxMDY0ODcsIDEwNjQ5MiwgMTA2NDk3LCAwLCAxMDY1MDIsIDEwNjUwNiwgMTA2NTExLCAxMDY1MTYsIDEwNjUyMSwgCi0gICAgMTA2NTI1LCAxMDY1MjksIDAsIDEwNjUzNCwgMTA2NTM5LCAwLCAxMDY1NDQsIDEwNjU0OSwgMTA2NTU0LCAxMDY1NTksIAotICAgIDEwNjU2NCwgMCwgMCwgMTA2NTY4LCAxMDY1NzMsIDEwNjU3OCwgMTA2NTg0LCAxMDY1ODksIDEwNjU5NSwgMTA2NjAwLCAKLSAgICAxMDY2MDYsIDEwNjYxMiwgMCwgMCwgMTA2NjE5LCAxMDY2MjUsIDAsIDAsIDEwNjYzMSwgMTA2NjM3LCAxMDY2NDMsIDAsIDAsIAotICAgIDEwNjY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NjUyLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTksIDEwNjY2NCwgMTA2NjcxLCAKLSAgICAxMDY2NzksIDEwNjY4NSwgMTA2NjkxLCAxMDY2OTcsIDAsIDAsIDEwNjcwNCwgMTA2NzEwLCAxMDY3MTUsIDEwNjcyMCwgCi0gICAgMTA2NzI1LCAxMDY3MzAsIDEwNjczNSwgMCwgMCwgMCwgMTA2NzQwLCAxMDY3NDUsIDEwNjc1MCwgMTA2NzU2LCAxMDY3NjIsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDgzMCwgMTA0ODM0LCAxMDQ4MzgsIDEwNDg0MiwgCisgICAgMTA0ODQ2LCAxMDQ4NTAsIDEwNDg1MywgMTA0ODU3LCAxMDQ4NjAsIDEwNDg2NCwgMTA0ODY3LCAxMDQ4NzEsIDEwNDg3NSwgCisgICAgMTA0ODgwLCAxMDQ4ODQsIDEwNDg4OSwgMTA0ODkyLCAxMDQ4OTYsIDEwNDg5OSwgMTA0OTAzLCAxMDQ5MDYsIDEwNDkxMCwgCisgICAgMTA0OTE0LCAxMDQ5MTgsIDEwNDkyMiwgMTA0OTI2LCAxMDQ5MzAsIDEwNDkzNCwgMTA0OTM4LCAxMDQ5NDIsIDEwNDk0NiwgCisgICAgMTA0OTUwLCAxMDQ5NTQsIDEwNDk1OCwgMTA0OTYyLCAxMDQ5NjYsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzgsIDEwNDk4MSwgCisgICAgMTA0OTg0LCAxMDQ5ODgsIDEwNDk5MiwgMTA0OTk2LCAxMDQ5OTksIDEwNTAwMiwgMTA1MDA2LCAxMDUwMDksIDEwNTAxMywgCisgICAgMTA1MDE3LCAxMDUwMjEsIDEwNTAyNSwgMTA1MDI4LCAxMDUwMzIsIDEwNTAzOCwgMTA1MDQ0LCAxMDUwNTAsIDEwNTA1NSwgCisgICAgMTA1MDYyLCAxMDUwNjYsIDEwNTA3MSwgMTA1MDc1LCAxMDUwODAsIDEwNTA4NSwgMTA1MDkxLCAxMDUwOTYsIDEwNTEwMiwgCisgICAgMTA1MTA2LCAxMDUxMTEsIDEwNTExNSwgMTA1MTIwLCAxMDUxMjMsIDEwNTEyNiwgMTA1MTMwLCAxMDUxMzUsIDEwNTE0MSwgCisgICAgMTA1MTQ2LCAxMDUxNTIsIDAsIDAsIDAsIDAsIDEwNTE1NywgMTA1MTYwLCAxMDUxNjMsIDEwNTE2NiwgMTA1MTY5LCAKKyAgICAxMDUxNzIsIDEwNTE3NSwgMTA1MTc5LCAxMDUxODIsIDEwNTE4NiwgMTA1MTkwLCAxMDUxOTQsIDEwNTE5OCwgMTA1MjAyLCAKKyAgICAxMDUyMDYsIDEwNTIxMCwgMTA1MjE0LCAxMDUyMTgsIDEwNTIyMiwgMTA1MjI3LCAxMDUyMzIsIDEwNTIzNiwgMTA1MjM5LCAKKyAgICAxMDUyNDIsIDEwNTI0NSwgMTA1MjQ4LCAxMDUyNTEsIDEwNTI1NCwgMTA1MjU4LCAxMDUyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTI2NSwgMTA1MjY5LCAxMDUyNzQsIDEwNTI3OSwgMTA1Mjg0LCAKKyAgICAxMDUyODgsIDEwNTI5MywgMTA1Mjk3LCAxMDUzMDIsIDEwNTMwNiwgMTA1MzExLCAxMDUzMTUsIDEwNTMyMCwgMTA1MzI0LCAKKyAgICAxMDUzMjksIDEwNTMzMywgMTA1MzM4LCAxMDUzNDMsIDEwNTM0OCwgMTA1MzUzLCAxMDUzNTgsIDEwNTM2MywgMTA1MzY4LCAKKyAgICAxMDUzNzMsIDEwNTM3OCwgMTA1MzgzLCAxMDUzODgsIDEwNTM5MywgMTA1Mzk4LCAxMDU0MDMsIDEwNTQwOCwgMTA1NDEzLCAKKyAgICAxMDU0MTgsIDEwNTQyMywgMTA1NDI4LCAxMDU0MzMsIDEwNTQzNywgMTA1NDQxLCAxMDU0NDYsIDEwNTQ1MSwgMTA1NDU2LCAKKyAgICAxMDU0NjAsIDEwNTQ2NCwgMTA1NDY5LCAxMDU0NzMsIDEwNTQ3OCwgMTA1NDgzLCAxMDU0ODgsIDEwNTQ5MywgMTA1NDk3LCAKKyAgICAxMDU1MDMsIDEwNTUwOCwgMTA1NTE0LCAxMDU1MTksIDEwNTUyNSwgMTA1NTMwLCAxMDU1MzYsIDEwNTU0MSwgMTA1NTQ3LCAKKyAgICAxMDU1NTIsIDEwNTU1NywgMTA1NTYyLCAxMDU1NjcsIDEwNTU3MSwgMTA1NTc2LCAxMDU1ODIsIDEwNTU4NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1NTkxLCAxMDU1OTgsIDEwNTYwNSwgMTA1NjEyLCAxMDU2MTksIAorICAgIDEwNTYyNiwgMTA1NjMzLCAxMDU2NDAsIDEwNTY0NywgMTA1NjU0LCAxMDU2NjEsIDEwNTY2OCwgMTA1Njc1LCAxMDU2ODIsIAorICAgIDEwNTY4OSwgMTA1Njk2LCAxMDU3MDMsIDEwNTcxMCwgMTA1NzE3LCAxMDU3MjQsIDEwNTczMSwgMTA1NzM4LCAxMDU3NDUsIAorICAgIDEwNTc1MiwgMTA1NzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU3NjYsIDEwNTc3MywgMTA1Nzc5LCAxMDU3ODUsIAorICAgIDEwNTc5MSwgMTA1Nzk3LCAxMDU4MDMsIDEwNTgwOSwgMTA1ODE2LCAxMDU4MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTgyOSwgCisgICAgMTA1ODM0LCAxMDU4MzksIDEwNTg0NCwgMTA1ODQ5LCAxMDU4NTMsIDEwNTg1NywgMTA1ODYxLCAxMDU4NjYsIDEwNTg3MSwgCisgICAgMTA1ODc2LCAxMDU4ODEsIDEwNTg4NiwgMTA1ODkxLCAxMDU4OTYsIDEwNTkwMSwgMTA1OTA2LCAxMDU5MTEsIDEwNTkxNiwgCisgICAgMTA1OTIxLCAxMDU5MjYsIDEwNTkzMSwgMTA1OTM2LCAxMDU5NDEsIDEwNTk0NiwgMTA1OTUxLCAxMDU5NTYsIDEwNTk2MSwgCisgICAgMTA1OTY2LCAxMDU5NzEsIDEwNTk3NiwgMTA1OTgxLCAxMDU5ODYsIDEwNTk5MSwgMTA1OTk2LCAxMDYwMDEsIDEwNjAwNiwgCisgICAgMTA2MDExLCAxMDYwMTYsIDEwNjAyMSwgMTA2MDI2LCAxMDYwMzEsIDEwNjAzNywgMTA2MDQyLCAxMDYwNDgsIDEwNjA1MywgCisgICAgMTA2MDU5LCAxMDYwNjQsIDEwNjA3MCwgMTA2MDc2LCAxMDYwODAsIDEwNjA4NSwgMTA2MDg5LCAwLCAxMDYwOTMsIAorICAgIDEwNjA5OCwgMTA2MTAyLCAxMDYxMDYsIDEwNjExMCwgMTA2MTE0LCAxMDYxMTgsIDEwNjEyMiwgMTA2MTI3LCAxMDYxMzEsIAorICAgIDEwNjEzNiwgMTA2MTQxLCAxMDYxNDUsIDEwNjE1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA2MTU1LCAxMDYxNTksIDEwNjE2MywgMTA2MTY3LCAxMDYxNzEsIDEwNjE3NSwgMTA2MTc5LCAxMDYxODQsIDEwNjE4OSwgCisgICAgMTA2MTk0LCAxMDYxOTksIDEwNjIwNCwgMTA2MjA5LCAxMDYyMTQsIDEwNjIxOSwgMTA2MjI0LCAxMDYyMjksIDEwNjIzNCwgCisgICAgMTA2MjM5LCAxMDYyNDQsIDEwNjI0OSwgMTA2MjU0LCAxMDYyNTksIDEwNjI2NCwgMTA2MjY4LCAxMDYyNzIsIDEwNjI3NywgCisgICAgMTA2MjgyLCAxMDYyODcsIDEwNjI5MSwgMTA2Mjk2LCAxMDYzMDAsIDEwNjMwNSwgMTA2MzEwLCAxMDYzMTQsIDEwNjMxOSwgCisgICAgMTA2MzI0LCAxMDYzMjksIDEwNjMzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2MzM5LCAxMDYzNDMsIAorICAgIDEwNjM0NywgMTA2MzUxLCAxMDYzNTQsIDEwNjM1OCwgMTA2MzYxLCAxMDYzNjUsIDEwNjM2OCwgMTA2MzcyLCAxMDYzNzYsIAorICAgIDEwNjM4MSwgMTA2Mzg1LCAxMDYzOTAsIDEwNjM5MywgMTA2Mzk3LCAxMDY0MDAsIDEwNjQwNCwgMTA2NDA3LCAxMDY0MTEsIAorICAgIDEwNjQxNSwgMTA2NDE5LCAxMDY0MjMsIDEwNjQyNywgMTA2NDMxLCAxMDY0MzUsIDEwNjQzOSwgMTA2NDQzLCAxMDY0NDcsIAorICAgIDEwNjQ1MSwgMTA2NDU1LCAxMDY0NTksIDEwNjQ2MywgMTA2NDY3LCAxMDY0NzEsIDEwNjQ3NSwgMTA2NDc5LCAxMDY0ODIsIAorICAgIDEwNjQ4NSwgMTA2NDg5LCAxMDY0OTMsIDEwNjQ5NywgMTA2NTAwLCAxMDY1MDMsIDEwNjUwNywgMTA2NTEwLCAxMDY1MTQsIAorICAgIDEwNjUxOCwgMTA2NTIyLCAxMDY1MjYsIDEwNjUzMCwgMTA2NTMzLCAxMDY1MzgsIDEwNjU0MiwgMTA2NTQ3LCAxMDY1NTEsIAorICAgIDEwNjU1NiwgMTA2NTYxLCAxMDY1NjcsIDEwNjU3MiwgMTA2NTc4LCAxMDY1ODIsIDEwNjU4NywgMTA2NTkxLCAxMDY1OTYsIAorICAgIDEwNjYwMCwgMTA2NjA0LCAxMDY2MDgsIDEwNjYxMiwgMTA2NjE1LCAxMDY2MTgsIDEwNjYyMiwgMTA2NjI2LCAxMDY2MjksIAorICAgIDEwNjYzMywgMTA2NjM3LCAxMDY2NDEsIDEwNjY0OCwgMCwgMCwgMTA2NjUyLCAxMDY2NTYsIDEwNjY1OSwgMTA2NjYyLCAKKyAgICAxMDY2NjUsIDEwNjY2OCwgMTA2NjcxLCAxMDY2NzQsIDEwNjY3OCwgMTA2NjgxLCAxMDY2ODUsIDEwNjY4OCwgMTA2NjkyLCAKKyAgICAxMDY2OTUsIDEwNjY5OSwgMTA2NzA0LCAwLCAxMDY3MDksIDEwNjcxNCwgMTA2NzE5LCAxMDY3MjQsIDEwNjcyOSwgCisgICAgMTA2NzM0LCAxMDY3MzksIDEwNjc0NSwgMTA2NzUwLCAxMDY3NTYsIDEwNjc2MiwgMTA2NzY4LCAxMDY3NzQsIDEwNjc4MCwgCisgICAgMTA2Nzg2LCAxMDY3OTIsIDEwNjc5OCwgMTA2ODA0LCAxMDY4MTAsIDEwNjgxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTA2ODI0LCAxMDY4MjgsIDEwNjgzMywgMTA2ODM3LCAxMDY4NDEsIDEwNjg0NSwgMTA2ODUwLCAxMDY4NTQsIAorICAgIDEwNjg1OSwgMTA2ODYzLCAxMDY4NjgsIDEwNjg3MywgMTA2ODc4LCAxMDY4ODMsIDEwNjg4OCwgMTA2ODkzLCAxMDY4OTgsIAorICAgIDEwNjkwMywgMCwgMTA2OTA4LCAxMDY5MTMsIDEwNjkxOCwgMTA2OTIzLCAxMDY5MjgsIDEwNjkzMywgMTA2OTM4LCAKKyAgICAxMDY5NDMsIDEwNjk0OCwgMTA2OTUzLCAxMDY5NTgsIDEwNjk2MywgMTA2OTY3LCAxMDY5NzEsIDEwNjk3NiwgMTA2OTgxLCAKKyAgICAxMDY5ODYsIDEwNjk5MSwgMTA2OTk1LCAxMDY5OTksIDEwNzAwNCwgMTA3MDA4LCAxMDcwMTMsIDEwNzAxOCwgMTA3MDIyLCAKKyAgICAxMDcwMjcsIDEwNzAzMywgMTA3MDM4LCAxMDcwNDQsIDEwNzA0OSwgMTA3MDU0LCAxMDcwNjAsIDEwNzA2NSwgMTA3MDcxLCAKKyAgICAxMDcwNzYsIDEwNzA4MSwgMTA3MDg2LCAxMDcwOTEsIDEwNzA5NSwgMTA3MTAwLCAxMDcxMDYsIDEwNzExMSwgMTA3MTE3LCAKKyAgICAxMDcxMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzEyNywgMTA3MTMxLCAKKyAgICAxMDcxMzUsIDEwNzEzOSwgMTA3MTQzLCAxMDcxNDcsIDEwNzE1MiwgMCwgMTA3MTU3LCAwLCAxMDcxNjIsIDEwNzE2NywgCisgICAgMTA3MTcyLCAxMDcxNzcsIDAsIDEwNzE4MiwgMTA3MTg3LCAxMDcxOTIsIDEwNzE5NywgMTA3MjAyLCAxMDcyMDcsIAorICAgIDEwNzIxMiwgMTA3MjE3LCAxMDcyMjIsIDEwNzIyNywgMTA3MjMyLCAxMDcyMzcsIDEwNzI0MSwgMTA3MjQ1LCAxMDcyNTAsIAorICAgIDAsIDEwNzI1NSwgMTA3MjYwLCAxMDcyNjQsIDEwNzI2OCwgMTA3MjczLCAxMDcyNzcsIDEwNzI4MiwgMTA3Mjg3LCAKKyAgICAxMDcyOTEsIDEwNzI5NiwgMTA3MzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDczMDYsIDEwNzMxMCwgMTA3MzE1LCAxMDczMTksIAorICAgIDEwNzMyNCwgMTA3MzI4LCAxMDczMzMsIDEwNzMzNywgMTA3MzQyLCAxMDczNDYsIDEwNzM1MSwgMTA3MzU1LCAxMDczNjAsIAorICAgIDEwNzM2NSwgMTA3MzcwLCAxMDczNzUsIDEwNzM4MCwgMTA3Mzg1LCAxMDczOTAsIDEwNzM5NSwgMTA3NDAwLCAxMDc0MDUsIAorICAgIDEwNzQxMCwgMTA3NDE1LCAxMDc0MjAsIDEwNzQyNSwgMTA3NDMwLCAxMDc0MzUsIDEwNzQ0MCwgMTA3NDQ1LCAxMDc0NTAsIAorICAgIDEwNzQ1NSwgMTA3NDYwLCAxMDc0NjUsIDEwNzQ2OSwgMTA3NDczLCAxMDc0NzgsIDEwNzQ4MywgMTA3NDg4LCAxMDc0OTMsIAorICAgIDEwNzQ5NywgMTA3NTAxLCAxMDc1MDYsIDEwNzUxMCwgMTA3NTE1LCAxMDc1MjAsIDEwNzUyNSwgMTA3NTI5LCAxMDc1MzQsIAorICAgIDEwNzU0MCwgMTA3NTQ1LCAxMDc1NTEsIDEwNzU1NiwgMTA3NTYyLCAxMDc1NjcsIDEwNzU3MywgMTA3NTc4LCAxMDc1ODQsIAorICAgIDEwNzU4OSwgMCwgMCwgMCwgMCwgMCwgMTA3NTk0LCAxMDc1OTksIDEwNzYwMywgMTA3NjA3LCAxMDc2MTEsIDEwNzYxNSwgCisgICAgMTA3NjE5LCAxMDc2MjMsIDEwNzYyOCwgMTA3NjMyLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDc2MzcsIDEwNzY0NCwgMTA3NjQ5LCAKKyAgICAxMDc2NTQsIDAsIDEwNzY1OSwgMTA3NjYzLCAxMDc2NjgsIDEwNzY3MiwgMTA3Njc3LCAxMDc2ODEsIDEwNzY4NiwgCisgICAgMTA3NjkxLCAwLCAwLCAxMDc2OTYsIDEwNzcwMSwgMCwgMCwgMTA3NzA2LCAxMDc3MTEsIDEwNzcxNiwgMTA3NzIwLCAKKyAgICAxMDc3MjUsIDEwNzczMCwgMTA3NzM1LCAxMDc3NDAsIDEwNzc0NSwgMTA3NzUwLCAxMDc3NTUsIDEwNzc2MCwgMTA3NzY1LCAKKyAgICAxMDc3NzAsIDEwNzc3NSwgMTA3NzgwLCAxMDc3ODUsIDEwNzc5MCwgMTA3Nzk1LCAxMDc4MDAsIDEwNzgwNSwgMTA3ODEwLCAKKyAgICAwLCAxMDc4MTQsIDEwNzgxOCwgMTA3ODIzLCAxMDc4MjgsIDEwNzgzMywgMTA3ODM3LCAxMDc4NDEsIDAsIDEwNzg0NiwgCisgICAgMTA3ODUwLCAwLCAxMDc4NTUsIDEwNzg2MCwgMTA3ODY1LCAxMDc4NzAsIDEwNzg3NSwgMCwgMCwgMTA3ODc5LCAxMDc4ODQsIAorICAgIDEwNzg4OSwgMTA3ODk1LCAxMDc5MDAsIDEwNzkwNiwgMTA3OTExLCAxMDc5MTcsIDEwNzkyMywgMCwgMCwgMTA3OTMwLCAKKyAgICAxMDc5MzYsIDAsIDAsIDEwNzk0MiwgMTA3OTQ4LCAxMDc5NTQsIDAsIDAsIDEwNzk1OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA3OTYzLCAwLCAwLCAwLCAwLCAwLCAxMDc5NzAsIDEwNzk3NSwgMTA3OTgyLCAxMDc5OTAsIDEwNzk5NiwgMTA4MDAyLCAKKyAgICAxMDgwMDgsIDAsIDAsIDEwODAxNSwgMTA4MDIxLCAxMDgwMjYsIDEwODAzMSwgMTA4MDM2LCAxMDgwNDEsIDEwODA0NiwgMCwgCisgICAgMCwgMCwgMTA4MDUxLCAxMDgwNTYsIDEwODA2MSwgMTA4MDY2LCAxMDgwNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODA3NywgMTA4MDgwLCAxMDgwODQsIDEwODA4NywgMTA4MDkxLCAKKyAgICAxMDgwOTQsIDEwODA5OCwgMTA4MTAyLCAxMDgxMDcsIDEwODExMSwgMTA4MTE2LCAxMDgxMTksIDEwODEyMywgMTA4MTI2LCAKKyAgICAxMDgxMzAsIDEwODEzMywgMTA4MTM3LCAxMDgxNDEsIDEwODE0NSwgMTA4MTQ5LCAxMDgxNTMsIDEwODE1NywgMTA4MTYxLCAKKyAgICAxMDgxNjUsIDEwODE2OSwgMTA4MTczLCAxMDgxNzcsIDEwODE4MSwgMTA4MTg1LCAxMDgxODksIDEwODE5MywgMTA4MTk3LCAKKyAgICAxMDgyMDEsIDEwODIwNSwgMTA4MjA5LCAxMDgyMTMsIDEwODIxNiwgMTA4MjIwLCAxMDgyMjMsIDEwODIyNywgMTA4MjMxLCAKKyAgICAxMDgyMzUsIDEwODIzOCwgMTA4MjQyLCAxMDgyNDUsIDEwODI0OSwgMTA4MjUzLCAxMDgyNTYsIDEwODI2MCwgMTA4MjY0LCAKKyAgICAxMDgyNjgsIDEwODI3MiwgMTA4Mjc2LCAxMDgyNzksIDEwODI4NCwgMTA4Mjg4LCAxMDgyOTMsIDEwODI5NywgMTA4MzAyLCAKKyAgICAxMDgzMDcsIDEwODMxMywgMTA4MzE4LCAxMDgzMjQsIDEwODMyOCwgMTA4MzMzLCAxMDgzMzcsIDEwODM0MiwgMTA4MzQ2LCAKKyAgICAxMDgzNTAsIDEwODM1NCwgMTA4MzU4LCAxMDgzNjIsIDEwODM2NiwgMTA4MzcxLCAxMDgzNzQsIDEwODM3NywgMTA4MzgwLCAKKyAgICAxMDgzODQsIDEwODM4NywgMTA4MzkyLCAxMDgzOTYsIDEwODQwMCwgMTA4NDAzLCAxMDg0MDYsIDEwODQwOSwgMTA4NDEyLCAKKyAgICAxMDg0MTUsIDEwODQxOCwgMTA4NDIyLCAxMDg0MjUsIDAsIDEwODQyOSwgMCwgMTA4NDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDg0MzcsIDEwODQ0MSwgMTA4NDQ1LCAxMDg0NTAsIDEwODQ1NCwgMTA4NDU5LCAxMDg0NjMsIAorICAgIDEwODQ2OCwgMTA4NDczLCAxMDg0NzksIDEwODQ4NCwgMTA4NDkwLCAxMDg0OTQsIDEwODQ5OSwgMTA4NTAzLCAxMDg1MDgsIAorICAgIDEwODUxMiwgMTA4NTE3LCAxMDg1MjIsIDEwODUyNywgMTA4NTMyLCAxMDg1MzcsIDEwODU0MiwgMTA4NTQ3LCAxMDg1NTIsIAorICAgIDEwODU1NywgMTA4NTYyLCAxMDg1NjcsIDEwODU3MiwgMTA4NTc3LCAxMDg1ODIsIDEwODU4NywgMTA4NTkyLCAxMDg1OTcsIAorICAgIDEwODYwMiwgMTA4NjA2LCAxMDg2MTAsIDEwODYxNSwgMTA4NjIwLCAxMDg2MjUsIDEwODYyOSwgMTA4NjMzLCAxMDg2MzgsIAorICAgIDEwODY0MiwgMTA4NjQ3LCAxMDg2NTIsIDEwODY1NywgMTA4NjYyLCAxMDg2NjYsIDEwODY3MiwgMTA4Njc3LCAxMDg2ODMsIAorICAgIDEwODY4OCwgMTA4Njk0LCAxMDg3MDAsIDEwODcwNywgMTA4NzEzLCAxMDg3MjAsIDEwODcyNSwgMTA4NzMyLCAxMDg3MzgsIAorICAgIDEwODc0MywgMTA4NzUwLCAxMDg3NTYsIDEwODc2MSwgMTA4NzY2LCAxMDg3NzEsIDEwODc3NiwgMTA4NzgxLCAxMDg3ODYsIAorICAgIDEwODc5MCwgMTA4Nzk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDg3OTksIDEwODgwNCwgMTA4ODA4LCAxMDg4MTIsIAorICAgIDEwODgxNiwgMTA4ODIwLCAxMDg4MjQsIDEwODgyOCwgMTA4ODMzLCAxMDg4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDEwNjc2NywgMTA2NzcxLCAxMDY3NzUsIDEwNjc4MCwgMTA2Nzg0LCAxMDY3ODksIDEwNjc5MywgMTA2Nzk4LCAKLSAgICAxMDY4MDMsIDEwNjgwOSwgMTA2ODE0LCAxMDY4MjAsIDEwNjgyNCwgMTA2ODI5LCAxMDY4MzMsIDEwNjgzOCwgMTA2ODQyLCAKLSAgICAxMDY4NDcsIDEwNjg1MiwgMTA2ODU3LCAxMDY4NjIsIDEwNjg2NywgMTA2ODcyLCAxMDY4NzcsIDEwNjg4MiwgMTA2ODg3LCAKLSAgICAxMDY4OTIsIDEwNjg5NywgMTA2OTAyLCAxMDY5MDcsIDEwNjkxMiwgMTA2OTE3LCAxMDY5MjIsIDEwNjkyNywgMTA2OTMyLCAKLSAgICAxMDY5MzcsIDEwNjk0MSwgMTA2OTQ2LCAxMDY5NTEsIDEwNjk1NiwgMTA2OTYwLCAxMDY5NjQsIDEwNjk2OSwgMTA2OTc0LCAKLSAgICAxMDY5NzksIDEwNjk4NCwgMTA2OTg5LCAxMDY5OTQsIDEwNjk5OCwgMTA3MDA0LCAxMDcwMDksIDEwNzAxNSwgMTA3MDIwLCAKLSAgICAxMDcwMjYsIDEwNzAzMiwgMTA3MDM5LCAxMDcwNDUsIDEwNzA1MiwgMTA3MDU3LCAxMDcwNjQsIDEwNzA3MCwgMTA3MDc1LCAKLSAgICAxMDcwODIsIDEwNzA4OCwgMTA3MDkzLCAxMDcwOTgsIDEwNzEwMywgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIyLCAKLSAgICAxMDcxMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzEzMSwgMTA3MTM2LCAxMDcxNDAsIDEwNzE0NCwgMTA3MTQ4LCAKLSAgICAxMDcxNTIsIDEwNzE1NiwgMTA3MTYwLCAxMDcxNjUsIDEwNzE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4ODQyLCAxMDg4NDUsIDEwODg0OSwgMTA4ODUyLCAKKyAgICAxMDg4NTYsIDEwODg1OSwgMTA4ODYzLCAxMDg4NjcsIDEwODg3MiwgMTA4ODc2LCAxMDg4ODEsIDEwODg4NCwgMTA4ODg4LCAKKyAgICAxMDg4OTEsIDEwODg5NSwgMTA4ODk4LCAxMDg5MDIsIDEwODkwNiwgMTA4OTEwLCAxMDg5MTQsIDEwODkxOCwgMTA4OTIyLCAKKyAgICAxMDg5MjYsIDEwODkzMCwgMTA4OTM0LCAxMDg5MzgsIDEwODk0MiwgMTA4OTQ2LCAxMDg5NTAsIDEwODk1NCwgMTA4OTU4LCAKKyAgICAxMDg5NjIsIDEwODk2NiwgMTA4OTcwLCAxMDg5NzMsIDEwODk3NiwgMTA4OTgwLCAxMDg5ODQsIDEwODk4OCwgMTA4OTkxLCAKKyAgICAxMDg5OTQsIDEwODk5OCwgMTA5MDAxLCAxMDkwMDUsIDEwOTAwOSwgMTA5MDEzLCAxMDkwMTcsIDEwOTAyMCwgMTA5MDI1LCAKKyAgICAxMDkwMjksIDEwOTAzNCwgMTA5MDM4LCAxMDkwNDMsIDEwOTA0OCwgMCwgMCwgMTA5MDU0LCAxMDkwNTgsIDEwOTA2MywgCisgICAgMTA5MDY3LCAxMDkwNzIsIDEwOTA3NiwgMTA5MDgwLCAxMDkwODQsIDEwOTA4OCwgMTA5MDkyLCAxMDkwOTYsIDEwOTA5OSwgCisgICAgMTA5MTAzLCAxMDkxMDgsIDEwOTExMiwgMTA5MTE3LCAxMDkxMjIsIDEwOTEyNywgMTA5MTM0LCAxMDkxNDYsIDEwOTE1OCwgCisgICAgMTA5MTcwLCAxMDkxODMsIDEwOTE5NywgMTA5MjA0LCAxMDkyMTQsIDEwOTIyMiwgMTA5MjMxLCAxMDkyNDAsIDEwOTI0OSwgCisgICAgMTA5MjU5LCAxMDkyNzAsIDEwOTI4MiwgMTA5Mjg5LCAxMDkyOTYsIDEwOTMwNCwgMTA5MzA5LCAxMDkzMTUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzE3NCwgMTA3MTc3LCAxMDcxODEsIDEwNzE4NCwgMTA3MTg4LCAKLSAgICAxMDcxOTEsIDEwNzE5NSwgMTA3MTk5LCAxMDcyMDQsIDEwNzIwOCwgMTA3MjEzLCAxMDcyMTYsIDEwNzIyMCwgMTA3MjIzLCAKLSAgICAxMDcyMjcsIDEwNzIzMCwgMTA3MjM0LCAxMDcyMzgsIDEwNzI0MiwgMTA3MjQ2LCAxMDcyNTAsIDEwNzI1NCwgMTA3MjU4LCAKLSAgICAxMDcyNjIsIDEwNzI2NiwgMTA3MjcwLCAxMDcyNzQsIDEwNzI3OCwgMTA3MjgyLCAxMDcyODYsIDEwNzI5MCwgMTA3Mjk0LCAKLSAgICAxMDcyOTgsIDEwNzMwMiwgMTA3MzA2LCAxMDczMDksIDEwNzMxMywgMTA3MzE3LCAxMDczMjEsIDEwNzMyNCwgMTA3MzI3LCAKLSAgICAxMDczMzEsIDEwNzMzNSwgMTA3MzM5LCAxMDczNDMsIDEwNzM0NywgMTA3MzUxLCAxMDczNTQsIDEwNzM1OSwgMTA3MzYzLCAKLSAgICAxMDczNjgsIDEwNzM3MiwgMTA3Mzc3LCAxMDczODIsIDAsIDAsIDEwNzM4OCwgMTA3MzkyLCAxMDczOTcsIDEwNzQwMSwgCi0gICAgMTA3NDA2LCAxMDc0MTAsIDEwNzQxNCwgMTA3NDE4LCAxMDc0MjIsIDEwNzQyNiwgMTA3NDMwLCAxMDc0MzMsIDEwNzQzNywgCi0gICAgMTA3NDQyLCAxMDc0NDYsIDEwNzQ1MSwgMTA3NDU2LCAxMDc0NjEsIDEwNzQ2OCwgMTA3NDgwLCAxMDc0OTIsIDEwNzUwNCwgCi0gICAgMTA3NTE3LCAxMDc1MzEsIDEwNzUzOCwgMTA3NTQ4LCAxMDc1NTYsIDEwNzU2NSwgMTA3NTc0LCAxMDc1ODMsIDEwNzU5MywgCi0gICAgMTA3NjA0LCAxMDc2MTYsIDEwNzYyMywgMTA3NjMwLCAxMDc2MzgsIDEwNzY0MywgMTA3NjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDkzMjIsIDEwOTMyNiwgMTA5MzMxLCAxMDkzMzUsIDEwOTM0MCwgMTA5MzQ0LCAKKyAgICAxMDkzNDksIDEwOTM1NCwgMTA5MzYwLCAxMDkzNjUsIDEwOTM3MSwgMTA5Mzc1LCAxMDkzODAsIDEwOTM4NCwgMTA5Mzg5LCAKKyAgICAxMDkzOTMsIDEwOTM5OCwgMTA5NDAzLCAxMDk0MDgsIDEwOTQxMywgMTA5NDE4LCAxMDk0MjMsIDEwOTQyOCwgMTA5NDMzLCAKKyAgICAxMDk0MzgsIDEwOTQ0MywgMTA5NDQ4LCAxMDk0NTMsIDEwOTQ1OCwgMTA5NDYzLCAxMDk0NjgsIDEwOTQ3MywgMTA5NDc4LCAKKyAgICAxMDk0ODMsIDEwOTQ4NywgMTA5NDkxLCAxMDk0OTYsIDEwOTUwMSwgMTA5NTA2LCAxMDk1MTAsIDEwOTUxNCwgMTA5NTE5LCAKKyAgICAxMDk1MjMsIDEwOTUyOCwgMTA5NTMzLCAxMDk1MzgsIDEwOTU0MywgMTA5NTQ3LCAxMDk1NTIsIDEwOTU1OCwgMTA5NTYzLCAKKyAgICAxMDk1NjksIDEwOTU3NCwgMTA5NTgwLCAxMDk1ODYsIDEwOTU5MywgMTA5NTk5LCAxMDk2MDYsIDEwOTYxMSwgMTA5NjE3LCAKKyAgICAxMDk2MjIsIDEwOTYyOCwgMTA5NjMzLCAxMDk2MzgsIDEwOTY0MywgMTA5NjQ4LCAxMDk2NTIsIDEwOTY1NywgMTA5NjYyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk2NjcsIDEwOTY3MiwgMTA5Njc2LCAxMDk2ODAsIDEwOTY4NCwgCisgICAgMTA5Njg4LCAxMDk2OTIsIDEwOTY5NiwgMTA5NzAxLCAxMDk3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTcxMCwgMTA5NzE2LCAKKyAgICAxMDk3MjEsIDEwOTcyOCwgMTA5NzM2LCAxMDk3NDMsIDEwOTc1MSwgMTA5NzYwLCAxMDk3NjUsIDEwOTc3NCwgMTA5Nzc5LCAKKyAgICAxMDk3ODcsIDEwOTc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTA5ODA3LCAxMDk4MTEsIDEwOTgxNiwgMTA5ODIwLCAxMDk4MjUsIDEwOTgyOSwgMTA5ODM0LCAxMDk4MzgsIDEwOTg0MywgCisgICAgMTA5ODQ3LCAxMDk4NTIsIDEwOTg1NiwgMTA5ODYxLCAxMDk4NjYsIDEwOTg3MSwgMTA5ODc2LCAxMDk4ODEsIDEwOTg4NiwgCisgICAgMTA5ODkxLCAxMDk4OTYsIDEwOTkwMSwgMTA5OTA2LCAxMDk5MTEsIDEwOTkxNiwgMTA5OTIxLCAxMDk5MjYsIDEwOTkzMSwgCisgICAgMTA5OTM2LCAxMDk5NDEsIDEwOTk0NiwgMTA5OTUwLCAxMDk5NTQsIDEwOTk1OSwgMTA5OTY0LCAxMDk5NjksIDEwOTk3MywgCisgICAgMTA5OTc3LCAxMDk5ODIsIDEwOTk4NiwgMTA5OTkxLCAxMDk5OTYsIDExMDAwMSwgMTEwMDA1LCAxMTAwMTAsIDExMDAxNSwgCisgICAgMTEwMDIwLCAxMTAwMjYsIDExMDAzMSwgMTEwMDM3LCAxMTAwNDIsIDExMDA0OCwgMTEwMDUzLCAxMTAwNTksIDExMDA2NCwgCisgICAgMTEwMDcwLCAxMTAwNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDA4MCwgMTEwMDg1LCAxMTAwODksIDExMDA5MywgCisgICAgMTEwMDk3LCAxMTAxMDEsIDExMDEwNSwgMTEwMTA5LCAxMTAxMTQsIDExMDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA3NjU2LCAxMDc2NjAsIDEwNzY2NSwgMTA3NjY5LCAxMDc2NzQsIDEwNzY3OCwgMTA3NjgzLCAKLSAgICAxMDc2ODgsIDEwNzY5NCwgMTA3Njk5LCAxMDc3MDUsIDEwNzcwOSwgMTA3NzE0LCAxMDc3MTgsIDEwNzcyMywgMTA3NzI3LCAKLSAgICAxMDc3MzIsIDEwNzczNywgMTA3NzQyLCAxMDc3NDcsIDEwNzc1MiwgMTA3NzU3LCAxMDc3NjIsIDEwNzc2NywgMTA3NzcyLCAKLSAgICAxMDc3NzcsIDEwNzc4MiwgMTA3Nzg3LCAxMDc3OTIsIDEwNzc5NywgMTA3ODAyLCAxMDc4MDcsIDEwNzgxMiwgMTA3ODE3LCAKLSAgICAxMDc4MjIsIDEwNzgyNiwgMTA3ODMxLCAxMDc4MzYsIDEwNzg0MSwgMTA3ODQ1LCAxMDc4NDksIDEwNzg1NCwgMTA3ODU5LCAKLSAgICAxMDc4NjQsIDEwNzg2OSwgMTA3ODc0LCAxMDc4NzksIDEwNzg4MywgMTA3ODg4LCAxMDc4OTQsIDEwNzg5OSwgMTA3OTA1LCAKLSAgICAxMDc5MTAsIDEwNzkxNiwgMTA3OTIyLCAxMDc5MjksIDEwNzkzNSwgMTA3OTQyLCAxMDc5NDcsIDEwNzk1MywgMTA3OTU4LCAKLSAgICAxMDc5NjQsIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTg4LCAxMDc5OTMsIDEwNzk5OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MDAzLCAxMDgwMDgsIDEwODAxMiwgMTA4MDE2LCAxMDgwMjAsIDEwODAyNCwgCi0gICAgMTA4MDI4LCAxMDgwMzIsIDEwODAzNywgMTA4MDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTAxMjMsIAorICAgIDExMDEyNywgMTEwMTMyLCAxMTAxMzcsIDExMDE0MSwgMTEwMTQ2LCAxMTAxNTMsIDExMDE1NywgMTEwMTYyLCAxMTAxNjcsIAorICAgIDExMDE3MSwgMTEwMTc2LCAxMTAxODEsIDExMDE4NiwgMTEwMTkxLCAxMTAxOTUsIDExMDIwMCwgMTEwMjA1LCAxMTAyMDksIAorICAgIDExMDIxMywgMTEwMjE4LCAxMTAyMjMsIDExMDIyOCwgMTEwMjM1LCAxMTAyNDAsIDExMDI0NSwgMCwgMCwgMCwgMTEwMjUwLCAKKyAgICAxMTAyNTYsIDExMDI2MywgMTEwMjcyLCAxMTAyNzcsIDExMDI4MywgMTEwMjg4LCAxMTAyOTQsIDExMDI5OSwgMTEwMzA1LCAKKyAgICAxMTAzMTAsIDExMDMxNiwgMTEwMzIxLCAxMTAzMjcsIDExMDMzMywgMCwgMCwgMCwgMCwgMTEwMzM4LCAxMTAzNDMsIAorICAgIDExMDM0NywgMTEwMzUxLCAxMTAzNTUsIDExMDM1OSwgMTEwMzYzLCAxMTAzNjcsIDExMDM3MiwgMTEwMzc2LCAxMTAzODEsIAorICAgIDExMDM4NiwgMTEwMzkxLCAxMTAzOTcsIDExMDQwMiwgMTEwNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDgwNDYsIDEwODA1MCwgMTA4MDU1LCAxMDgwNTksIDEwODA2NCwgMTA4MDY4LCAxMDgwNzMsIDEwODA3NywgMTA4MDgyLCAKLSAgICAxMDgwODYsIDEwODA5MSwgMTA4MDk1LCAxMDgxMDAsIDEwODEwNSwgMTA4MTEwLCAxMDgxMTUsIDEwODEyMCwgMTA4MTI1LCAKLSAgICAxMDgxMzAsIDEwODEzNSwgMTA4MTQwLCAxMDgxNDUsIDEwODE1MCwgMTA4MTU1LCAxMDgxNjAsIDEwODE2NSwgMTA4MTcwLCAKLSAgICAxMDgxNzUsIDEwODE4MCwgMTA4MTg1LCAxMDgxOTAsIDEwODE5NCwgMTA4MTk5LCAxMDgyMDQsIDEwODIwOSwgMTA4MjEzLCAKLSAgICAxMDgyMTcsIDEwODIyMiwgMTA4MjI3LCAxMDgyMzIsIDEwODIzNywgMTA4MjQyLCAxMDgyNDYsIDEwODI1MSwgMTA4MjU2LCAKLSAgICAxMDgyNjEsIDEwODI2NywgMTA4MjcyLCAxMDgyNzgsIDEwODI4MywgMTA4Mjg5LCAxMDgyOTQsIDEwODMwMCwgMTA4MzA1LCAKLSAgICAxMDgzMTEsIDEwODMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MzIxLCAxMDgzMjYsIDEwODMzMCwgMTA4MzM0LCAKLSAgICAxMDgzMzgsIDEwODM0MiwgMTA4MzQ2LCAxMDgzNTAsIDEwODM1NSwgMTA4MzU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgzNjQsIAotICAgIDEwODM2OCwgMTA4MzczLCAxMDgzNzgsIDEwODM4MywgMTA4Mzg4LCAxMDgzOTUsIDEwODM5OSwgMTA4NDA0LCAxMDg0MDksIAotICAgIDEwODQxMywgMTA4NDE4LCAxMDg0MjMsIDEwODQyOCwgMTA4NDMzLCAxMDg0MzgsIDEwODQ0MywgMTA4NDQ4LCAxMDg0NTIsIAotICAgIDEwODQ1NiwgMTA4NDYxLCAxMDg0NjYsIDEwODQ3MSwgMTA4NDc4LCAxMDg0ODMsIDEwODQ4OCwgMCwgMCwgMCwgMTA4NDkzLCAKLSAgICAxMDg1MDAsIDEwODUwNywgMTA4NTE2LCAxMDg1MjEsIDEwODUyNywgMTA4NTMyLCAxMDg1MzgsIDEwODU0MywgMTA4NTQ5LCAKLSAgICAxMDg1NTQsIDEwODU2MCwgMTA4NTY1LCAxMDg1NzEsIDEwODU3NywgMCwgMCwgMCwgMCwgMTA4NTgyLCAxMDg1ODcsIAotICAgIDEwODU5MSwgMTA4NTk1LCAxMDg1OTksIDEwODYwMywgMTA4NjA3LCAxMDg2MTEsIDEwODYxNiwgMTA4NjIwLCAxMDg2MjUsIAotICAgIDEwODYzMCwgMTA4NjM1LCAxMDg2NDEsIDEwODY0NiwgMTA4NjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE4OTI0LDE3NSArMjAwNTksMTk1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTEwNDEyLCAxMTA0MjAsIDExMDQyNywgMTEwNDM1LCAxMTA0NDMsIDExMDQ1MCwgMTEwNDU4LCAKKyAgICAxMTA0NjYsIDExMDQ3NCwgMTEwNDgxLCAxMTA0ODgsIDExMDQ5NiwgMTEwNTA0LCAxMTA1MTIsIDExMDUyMCwgMTEwNTI4LCAKKyAgICAxMTA1MzYsIDExMDU0NCwgMTEwNTUyLCAxMTA1NjAsIDExMDU2OCwgMTEwNTc2LCAxMTA1ODQsIDExMDU5MiwgMTEwNjAwLCAKKyAgICAxMTA2MDgsIDExMDYxNiwgMTEwNjI0LCAxMTA2MzIsIDExMDY0MCwgMTEwNjQ4LCAxMTA2NTYsIDExMDY2NCwgMTEwNjcyLCAKKyAgICAxMTA2NzksIDExMDY4NywgMTEwNjk1LCAxMTA3MDIsIDExMDcxMCwgMTEwNzE4LCAxMTA3MjYsIDExMDczMywgMTEwNzQwLCAKKyAgICAxMTA3NDgsIDExMDc1NiwgMTEwNzY0LCAxMTA3NzIsIDExMDc4MCwgMTEwNzg4LCAxMTA3OTYsIDExMDgwNCwgMTEwODEyLCAKKyAgICAxMTA4MjAsIDExMDgyOCwgMTEwODM2LCAxMTA4NDQsIDExMDg1MiwgMTEwODYwLCAxMTA4NjgsIDExMDg3NiwgMTEwODg0LCAKKyAgICAxMTA4OTIsIDExMDkwMCwgMTEwOTA4LCAxMTA5MTYsIDExMDkyMywgMTEwOTI5LCAxMTA5MzUsIDExMDk0MSwgMTEwOTQ3LCAKKyAgICAxMTA5NTMsIDExMDk1OSwgMTEwOTY2LCAxMTA5NzIsIDExMDk3OSwgMTEwOTg2LCAxMTA5OTMsIDExMTAwMCwgMTExMDA3LCAKKyAgICAxMTEwMTQsIDExMTAyMSwgMTExMDI4LCAxMTEwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMTA0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA4NjU2LCAxMDg2NjQsIDEwODY3MSwgMTA4Njc5LCAxMDg2ODcsIDEwODY5NCwgMTA4NzAyLCAKLSAgICAxMDg3MTAsIDEwODcxOCwgMTA4NzI1LCAxMDg3MzIsIDEwODc0MCwgMTA4NzQ4LCAxMDg3NTYsIDEwODc2NCwgMTA4NzcyLCAKLSAgICAxMDg3ODAsIDEwODc4OCwgMTA4Nzk2LCAxMDg4MDQsIDEwODgxMiwgMTA4ODIwLCAxMDg4MjgsIDEwODgzNiwgMTA4ODQ0LCAKLSAgICAxMDg4NTIsIDEwODg2MCwgMTA4ODY4LCAxMDg4NzYsIDEwODg4NCwgMTA4ODkyLCAxMDg5MDAsIDEwODkwOCwgMTA4OTE2LCAKLSAgICAxMDg5MjMsIDEwODkzMSwgMTA4OTM5LCAxMDg5NDYsIDEwODk1NCwgMTA4OTYyLCAxMDg5NzAsIDEwODk3NywgMTA4OTg0LCAKLSAgICAxMDg5OTIsIDEwOTAwMCwgMTA5MDA4LCAxMDkwMTYsIDEwOTAyNCwgMTA5MDMyLCAxMDkwNDAsIDEwOTA0OCwgMTA5MDU2LCAKLSAgICAxMDkwNjQsIDEwOTA3MiwgMTA5MDgwLCAxMDkwODgsIDEwOTA5NiwgMTA5MTA0LCAxMDkxMTIsIDEwOTEyMCwgMTA5MTI4LCAKLSAgICAxMDkxMzYsIDEwOTE0NCwgMTA5MTUyLCAxMDkxNjAsIDEwOTE2NywgMTA5MTczLCAxMDkxNzksIDEwOTE4NSwgMTA5MTkxLCAKLSAgICAxMDkxOTcsIDEwOTIwMywgMTA5MjEwLCAxMDkyMTYsIDEwOTIyMywgMTA5MjMwLCAxMDkyMzcsIDEwOTI0NCwgMTA5MjUxLCAKLSAgICAxMDkyNTgsIDEwOTI2NSwgMTA5MjcyLCAxMDkyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwOTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTExMDQ4LCAxMTEwNTYsIDExMTA2NCwgMTExMDcyLCAxMTEwODAsIDExMTA4OSwgMTExMDk4LCAxMTExMDcsIAorICAgIDExMTExNiwgMTExMTI0LCAxMTExMzMsIDExMTE0MiwgMTExMTUxLCAxMTExNjAsIDExMTE2OSwgMTExMTc4LCAxMTExODcsIAorICAgIDExMTE5NSwgMTExMjA0LCAxMTEyMTMsIDExMTIyMiwgMTExMjMxLCAxMTEyMzksIDExMTI0NywgMTExMjU1LCAxMTEyNjMsIAorICAgIDExMTI3MSwgMTExMjgwLCAxMTEyODksIDExMTI5OSwgMTExMzA5LCAxMTEzMTksIDExMTMyOSwgMTExMzM5LCAxMTEzNDgsIAorICAgIDExMTM1OCwgMTExMzY4LCAxMTEzNzgsIDExMTM4OSwgMTExMzk5LCAxMTE0MTEsIDExMTQyMywgMTExNDM0LCAxMTE0NDgsIAorICAgIDExMTQ1OSwgMTExNDY5LCAxMTE0ODEsIDExMTQ5MiwgMTExNTAyLCAxMTE1MTQsIDExMTUyNiwgMTExNTM3LCAxMTE1NDgsIAorICAgIDExMTU1OCwgMTExNTY4LCAxMTE1ODAsIDExMTU5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTExNjAzLCAxMTE2MDYsIAorICAgIDExMTYxMCwgMTExNjEzLCAxMTE2MTcsIDExMTYyMCwgMTExNjI0LCAxMTE2MjgsIDExMTYzMywgMCwgMTExNjM3LCAKKyAgICAxMTE2NDAsIDExMTY0NCwgMTExNjQ3LCAxMTE2NTEsIDExMTY1NCwgMTExNjU4LCAxMTE2NjIsIDExMTY2NiwgMTExNjcwLCAKKyAgICAxMTE2NzQsIDExMTY3OCwgMTExNjgyLCAxMTE2ODYsIDExMTY5MCwgMTExNjk0LCAxMTE2OTgsIDExMTcwMiwgMTExNzA2LCAKKyAgICAxMTE3MTAsIDExMTcxNCwgMTExNzE4LCAxMTE3MjIsIDExMTcyNiwgMTExNzI5LCAxMTE3MzIsIDExMTczNiwgMTExNzQwLCAKKyAgICAxMTE3NDQsIDExMTc0NywgMTExNzUwLCAxMTE3NTQsIDExMTc1NywgMTExNzYxLCAxMTE3NjUsIDExMTc2OSwgMTExNzczLCAKKyAgICAxMTE3NzYsIDExMTc4MSwgMTExNzg1LCAxMTE3OTAsIDExMTc5NCwgMTExNzk5LCAxMTE4MDQsIDExMTgxMCwgMCwgCisgICAgMTExODE1LCAxMTE4MTksIDExMTgyNCwgMTExODI4LCAxMTE4MzMsIDExMTgzNywgMTExODQxLCAxMTE4NDUsIDExMTg0OSwgCisgICAgMTExODUzLCAxMTE4NTYsIDExMTg2MCwgMTExODY1LCAxMTE4NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMTg3NSwgMTExODc5LCAxMTE4ODIsIDExMTg4NSwgMTExODg4LCAxMTE4OTEsIDExMTg5NCwgMTExODk3LCAxMTE5MDEsIAorICAgIDExMTkwNCwgMTExOTA4LCAxMTE5MTEsIDExMTkxNCwgMTExOTE3LCAxMTE5MjAsIDExMTkyMywgMTExOTI2LCAxMTE5MzAsIAorICAgIDExMTkzMywgMTExOTM3LCAxMTE5NDEsIDExMTk0NSwgMTExOTQ5LCAxMTE5NTMsIDExMTk1NywgMTExOTYxLCAxMTE5NjUsIAorICAgIDExMTk2OSwgMTExOTczLCAwLCAwLCAwLCAxMTE5NzksIDExMTk4NCwgMTExOTg5LCAxMTE5OTMsIDExMTk5OCwgMTEyMDAzLCAKKyAgICAxMTIwMDgsIDExMjAxMywgMTEyMDE4LCAxMTIwMjMsIDExMjAyOCwgMTEyMDMzLCAxMTIwMzgsIDExMjA0MywgMTEyMDQ3LCAKKyAgICAxMTIwNTEsIDExMjA1NiwgMTEyMDYxLCAxMTIwNjUsIDExMjA3MCwgMTEyMDc1LCAxMTIwODAsIDExMjA4NSwgMTEyMDkwLCAKKyAgICAxMTIwOTUsIDExMjEwMCwgMTEyMTA0LCAxMTIxMDksIDExMjExMywgMTEyMTE4LCAxMTIxMjMsIDExMjEyNywgMCwgMCwgCisgICAgMTEyMTMxLCAxMTIxMzcsIDExMjE0NCwgMTEyMTUxLCAxMTIxNTgsIDExMjE2NSwgMTEyMTcyLCAxMTIxNzksIDExMjE4NiwgCisgICAgMTEyMTkzLCAxMTIyMDAsIDExMjIwNywgMTEyMjEzLCAxMTIyMTksIDExMjIyNiwgMTEyMjMzLCAxMTIyMzksIDExMjI0NiwgCisgICAgMTEyMjUzLCAxMTIyNjAsIDExMjI2NywgMTEyMjc0LCAwLCAxMTIyODEsIDExMjI4NywgMTEyMjk0LCAxMTIzMDAsIAorICAgIDExMjMwNywgMTEyMzE0LCAxMTIzMjAsIDExMjMyNiwgMTEyMzMyLCAxMTIzMzcsIDExMjM0MiwgMTEyMzQ3LCAxMTIzNTIsIAorICAgIDExMjM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTA5MjkyLCAxMDkzMDAsIDEwOTMwOCwgMTA5MzE3LCAxMDkzMjUsIDEwOTMzNCwgMTA5MzQzLCAxMDkzNTIsIAotICAgIDEwOTM2MSwgMTA5MzY5LCAxMDkzNzgsIDEwOTM4NywgMTA5Mzk2LCAxMDk0MDUsIDEwOTQxNCwgMTA5NDIzLCAxMDk0MzIsIAotICAgIDEwOTQ0MSwgMTA5NDUwLCAxMDk0NTksIDEwOTQ2OCwgMTA5NDc3LCAxMDk0ODUsIDEwOTQ5MywgMTA5NTAxLCAxMDk1MDksIAotICAgIDEwOTUxNywgMTA5NTI2LCAxMDk1MzUsIDEwOTU0NSwgMTA5NTU1LCAxMDk1NjUsIDEwOTU3NSwgMTA5NTg1LCAxMDk1OTQsIAotICAgIDEwOTYwNCwgMTA5NjE0LCAxMDk2MjQsIDEwOTYzNSwgMTA5NjQ1LCAxMDk2NTcsIDEwOTY2OSwgMTA5NjgwLCAxMDk2OTQsIAotICAgIDEwOTcwNSwgMTA5NzE1LCAxMDk3MjcsIDEwOTczOCwgMTA5NzQ4LCAxMDk3NjAsIDEwOTc3MiwgMTA5NzgzLCAxMDk3OTQsIAotICAgIDEwOTgwNCwgMTA5ODE0LCAxMDk4MjYsIDEwOTgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5ODQ5LCAxMDk4NTIsIAotICAgIDEwOTg1NywgMTA5ODYzLCAxMDk4NzEsIDEwOTg3NiwgMTA5ODgyLCAxMDk4OTAsIDEwOTg5NiwgMTA5OTAyLCAxMDk5MDYsIAotICAgIDEwOTkxMCwgMTA5OTE3LCAxMDk5MjYsIDEwOTkzMywgMTA5OTQyLCAxMDk5NDgsIDEwOTk1NywgMTA5OTY0LCAxMDk5NzEsIAotICAgIDEwOTk3OCwgMTA5OTg4LCAxMDk5OTQsIDEwOTk5OCwgMTEwMDA1LCAxMTAwMTQsIDExMDAyNCwgMTEwMDMxLCAxMTAwMzgsIAotICAgIDExMDA0MiwgMTEwMDQ2LCAxMTAwNTMsIDExMDA2MywgMTEwMDY3LCAxMTAwNzQsIDExMDA4MSwgMTEwMDg4LCAxMTAwOTQsIAotICAgIDExMDEwMSwgMTEwMTA4LCAxMTAxMTUsIDExMDEyMiwgMTEwMTI2LCAxMTAxMzAsIDExMDEzNCwgMTEwMTQxLCAxMTAxNDUsIAotICAgIDExMDE1MiwgMTEwMTU5LCAxMTAxNzMsIDExMDE4MiwgMTEwMTg2LCAxMTAxOTAsIDExMDE5NCwgMTEwMjAxLCAxMTAyMDUsIAotICAgIDExMDIwOSwgMTEwMjEzLCAxMTAyMjEsIDExMDIyOSwgMTEwMjQ4LCAxMTAyNTgsIDExMDI3OCwgMTEwMjgyLCAxMTAyODYsIAotICAgIDExMDI5MCwgMTEwMjk0LCAxMTAyOTgsIDExMDMwMiwgMTEwMzA2LCAxMTAzMTMsIDExMDMxNywgMTEwMzIwLCAxMTAzMjQsIAotICAgIDExMDMyOCwgMTEwMzM0LCAxMTAzNDEsIDExMDM1MCwgMTEwMzU0LCAxMTAzNjMsIDExMDM3MiwgMTEwMzgwLCAxMTAzODQsIAotICAgIDExMDM5MSwgMTEwMzk1LCAxMTAzOTksIDExMDQwMywgMTEwNDA3LCAxMTA0MTgsIDExMDQyNywgMTEwNDM2LCAxMTA0NDUsIAotICAgIDExMDQ1NCwgMTEwNDY2LCAxMTA0NzUsIDExMDQ4NCwgMTEwNDkzLCAxMTA1MDEsIDExMDUxMCwgMTEwNTIyLCAxMTA1MzEsIAotICAgIDExMDU0MCwgMTEwNTQ5LCAxMTA1NjEsIDExMDU3MCwgMTEwNTc5LCAxMTA1OTEsIDExMDYwMCwgMTEwNjA5LCAxMTA2MjEsIAotICAgIDExMDYzMCwgMTEwNjM0LCAxMTA2MzgsIDExMDY0MiwgMTEwNjQ2LCAxMTA2NTAsIDExMDY1NCwgMTEwNjU4LCAxMTA2NjUsIAotICAgIDExMDY2OSwgMTEwNjczLCAxMTA2ODQsIDExMDY4OCwgMTEwNjkyLCAxMTA2OTksIDExMDcwNSwgMTEwNzExLCAxMTA3MTUsIAotICAgIDExMDcyMiwgMTEwNzI2LCAxMTA3MzAsIDExMDczNCwgMTEwNzM4LCAxMTA3NDIsIDExMDc0NiwgMTEwNzUyLCAxMTA3NjAsIAotICAgIDExMDc2NCwgMTEwNzY4LCAxMTA3NzEsIDExMDc3NywgMTEwNzg3LCAxMTA3OTEsIDExMDgwMywgMTEwODEwLCAxMTA4MTcsIAotICAgIDExMDgyNCwgMTEwODMxLCAxMTA4MzcsIDExMDg0MSwgMTEwODQ1LCAxMTA4NDksIDExMDg1MywgMTEwODYwLCAxMTA4NjksIAotICAgIDExMDg3NiwgMTEwODg0LCAxMTA4OTIsIDExMDg5OCwgMTEwOTAyLCAxMTA5MDYsIDExMDkxMCwgMTEwOTE0LCAxMTA5MjAsIAotICAgIDExMDkyOSwgMTEwOTQxLCAxMTA5NDgsIDExMDk1NSwgMTEwOTY0LCAxMTA5NzUsIDExMDk4MSwgMTEwOTkwLCAxMTA5OTksIAotICAgIDExMTAwNiwgMTExMDE1LCAxMTEwMjIsIDExMTAyOSwgMTExMDM5LCAxMTEwNDYsIDExMTA1MywgMTExMDYwLCAxMTEwNjcsIAotICAgIDExMTA3MSwgMTExMDc3LCAxMTEwODEsIDExMTA5MiwgMTExMTAwLCAxMTExMDksIDExMTEyMSwgMTExMTI4LCAxMTExMzUsIAotICAgIDExMTE0NSwgMTExMTUyLCAxMTExNjIsIDExMTE2OSwgMTExMTc5LCAxMTExODYsIDExMTE5MywgMTExMjAzLCAxMTEyMTAsIAotICAgIDExMTIxNywgMTExMjI3LCAxMTEyMzQsIDExMTI0NiwgMTExMjU1LCAxMTEyNjIsIDExMTI2OSwgMTExMjc2LCAxMTEyODUsIAotICAgIDExMTI5NSwgMTExMzA4LCAxMTEzMTUsIDExMTMyNSwgMTExMzM1LCAxMTEzNDIsIDExMTM1MSwgMTExMzY0LCAxMTEzNzEsIAotICAgIDExMTM3OCwgMTExMzg1LCAxMTEzOTUsIDExMTQwNSwgMTExNDEyLCAxMTE0MjIsIDExMTQyOSwgMTExNDM2LCAxMTE0NDYsIAotICAgIDExMTQ1MiwgMTExNDU5LCAxMTE0NjYsIDExMTQ3MywgMTExNDgzLCAxMTE0OTAsIDExMTQ5NywgMTExNTA0LCAxMTE1MTAsIAotICAgIDExMTUxNywgMTExNTI3LCAxMTE1MzQsIDExMTUzOCwgMTExNTQ2LCAxMTE1NTAsIDExMTU2MiwgMTExNTY2LCAxMTE1ODAsIAotICAgIDExMTU4NCwgMTExNTg4LCAxMTE1OTIsIDExMTU5NiwgMTExNjAyLCAxMTE2MDksIDExMTYxNywgMTExNjIxLCAxMTE2MjUsIAotICAgIDExMTYyOSwgMTExNjMzLCAxMTE2NDAsIDExMTY0NCwgMTExNjUwLCAxMTE2NTYsIDExMTY2NCwgMTExNjY4LCAxMTE2NzUsIAotICAgIDExMTY4MywgMTExNjg3LCAxMTE2OTEsIDExMTY5NywgMTExNzAxLCAxMTE3MTAsIDExMTcxOSwgMTExNzI2LCAxMTE3MzYsIAotICAgIDExMTc0MiwgMTExNzQ2LCAxMTE3NTAsIDExMTc1OCwgMTExNzY1LCAxMTE3NzIsIDExMTc3OCwgMTExNzgyLCAxMTE3OTAsIAotICAgIDExMTc5NCwgMTExODAxLCAxMTE4MTMsIDExMTgyMCwgMTExODMwLCAxMTE4MzYsIDExMTg0MCwgMTExODQ5LCAxMTE4NTYsIAotICAgIDExMTg2NSwgMTExODY5LCAxMTE4NzMsIDExMTg4MCwgMTExODg0LCAxMTE4ODgsIDExMTg5MiwgMTExODk2LCAxMTE4OTksIAotICAgIDExMTkwNSwgMTExOTExLCAxMTE5MTUsIDExMTkxOSwgMTExOTI2LCAxMTE5MzMsIDExMTk0MCwgMTExOTQ3LCAxMTE5NTQsIAotICAgIDExMTk2MSwgMTExOTY4LCAxMTE5NzUsIDExMTk4MSwgMTExOTg1LCAxMTE5ODksIDExMTk5NiwgMTEyMDAzLCAxMTIwMTAsIAotICAgIDExMjAxNywgMTEyMDI0LCAxMTIwMjgsIDExMjAzMSwgMTEyMDM2LCAxMTIwNDAsIDExMjA0NCwgMTEyMDUzLCAxMTIwNjIsIAotICAgIDExMjA2NiwgMTEyMDcwLCAxMTIwNzYsIDExMjA4MiwgMTEyMDk5LCAxMTIxMDUsIDExMjEwOSwgMTEyMTE4LCAxMTIxMjIsIAotICAgIDExMjEyNiwgMTEyMTMzLCAxMTIxNDEsIDExMjE0OSwgMTEyMTU1LCAxMTIxNTksIDExMjE2MywgMTEyMTY3LCAxMTIxNzEsIAotICAgIDExMjE3NCwgMTEyMTgwLCAxMTIxODcsIDExMjE5NywgMTEyMjA0LCAxMTIyMTEsIDExMjIxOCwgMTEyMjI0LCAxMTIyMzEsIAotICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI1OSwgMTEyMjY4LCAxMTIyNzUsIDExMjI4NywgMTEyMjk0LCAxMTIzMDEsIAotICAgIDExMjMxMSwgMTEyMzIyLCAxMTIzMjksIDExMjMzNiwgMTEyMzQzLCAxMTIzNTAsIDExMjM1NywgMTEyMzY0LCAxMTIzNzEsIAotICAgIDExMjM3OCwgMTEyMzg1LCAxMTIzOTIsIDExMjQwMiwgMTEyNDEyLCAxMTI0MjIsIDExMjQyOSwgMTEyNDM5LCAxMTI0NDYsIAotICAgIDExMjQ1MywgMTEyNDYwLCAxMTI0NjcsIDExMjQ3NCwgMTEyNDgxLCAxMTI0ODgsIDExMjQ5NSwgMTEyNTAyLCAxMTI1MDksIAotICAgIDExMjUxNiwgMTEyNTIzLCAxMTI1MzAsIDExMjUzNiwgMTEyNTQzLCAxMTI1NTAsIDExMjU1OSwgMTEyNTY2LCAxMTI1NzMsIAotICAgIDExMjU3NywgMTEyNTg1LCAxMTI1ODksIDExMjU5MywgMTEyNTk3LCAxMTI2MDEsIDExMjYwNSwgMTEyNjEyLCAxMTI2MTYsIAotICAgIDExMjYyNSwgMTEyNjI5LCAxMTI2MzYsIDExMjY0NCwgMTEyNjQ4LCAxMTI2NTIsIDExMjY1NiwgMTEyNjY5LCAxMTI2ODUsIAotICAgIDExMjY4OSwgMTEyNjkzLCAxMTI3MDAsIDExMjcwNiwgMTEyNzEzLCAxMTI3MTcsIDExMjcyMSwgMTEyNzI1LCAxMTI3MjksIAotICAgIDExMjczMywgMTEyNzQwLCAxMTI3NDQsIDExMjc2MiwgMTEyNzY2LCAxMTI3NzAsIDExMjc3NywgMTEyNzgxLCAxMTI3ODUsIAotICAgIDExMjc5MSwgMTEyNzk1LCAxMTI3OTksIDExMjgwNywgMTEyODExLCAxMTI4MTUsIDExMjgxOSwgMTEyODIzLCAxMTI4MjksIAotICAgIDExMjg0MCwgMTEyODQ5LCAxMTI4NTgsIDExMjg2NSwgMTEyODcyLCAxMTI4ODMsIDExMjg5MCwgMTEyODk3LCAxMTI5MDQsIAotICAgIDExMjkxMSwgMTEyOTE4LCAxMTI5MjUsIDExMjkzMiwgMTEyOTQyLCAxMTI5NDgsIDExMjk1NSwgMTEyOTY1LCAxMTI5NzQsIAotICAgIDExMjk4MSwgMTEyOTkwLCAxMTMwMDAsIDExMzAwNywgMTEzMDE0LCAxMTMwMjEsIDExMzAyOCwgMTEzMDQwLCAxMTMwNDcsIAotICAgIDExMzA1NCwgMTEzMDYxLCAxMTMwNjgsIDExMzA3NSwgMTEzMDg1LCAxMTMwOTIsIDExMzA5OSwgMTEzMTA5LCAxMTMxMjIsIAotICAgIDExMzEzNCwgMTEzMTQxLCAxMTMxNTEsIDExMzE1OCwgMTEzMTY1LCAxMTMxNzIsIDExMzE4NywgMTEzMTkzLCAxMTMyMDEsIAotICAgIDExMzIxMSwgMTEzMjIxLCAxMTMyMjgsIDExMzIzNSwgMTEzMjQxLCAxMTMyNDUsIDExMzI1MiwgMTEzMjYyLCAxMTMyNjgsIAotICAgIDExMzI4MSwgMTEzMjg1LCAxMTMyODksIDExMzI5NiwgMTEzMzAwLCAxMTMzMDcsIDExMzMxNywgMTEzMzIxLCAxMTMzMjUsIAotICAgIDExMzMyOSwgMTEzMzMzLCAxMTMzMzcsIDExMzM0NCwgMTEzMzQ4LCAxMTMzNTUsIDExMzM2MiwgMTEzMzY5LCAxMTMzNzgsIAotICAgIDExMzM4NywgMTEzMzk3LCAxMTM0MDQsIDExMzQxMSwgMTEzNDE4LCAxMTM0MjgsIDExMzQzNSwgMTEzNDQ1LCAxMTM0NTIsIAotICAgIDExMzQ2MiwgMTEzNDY5LCAxMTM0NzYsIDExMzQ4NiwgMTEzNDk2LCAxMTM1MDMsIDExMzUwOSwgMTEzNTE3LCAxMTM1MjUsIAotICAgIDExMzUzMSwgMTEzNTM3LCAxMTM1NDEsIDExMzU0NSwgMTEzNTUyLCAxMTM1NjAsIDExMzU2NiwgMTEzNTcwLCAxMTM1NzQsIAotICAgIDExMzU3OCwgMTEzNTg1LCAxMTM1OTcsIDExMzYwMCwgMTEzNjA3LCAxMTM2MTMsIDExMzYxNywgMTEzNjIxLCAxMTM2MjUsIAotICAgIDExMzYyOSwgMTEzNjMzLCAxMTM2MzcsIDExMzY0MSwgMTEzNjQ1LCAxMTM2NDksIDExMzY1MywgMTEzNjYwLCAxMTM2NjQsIAotICAgIDExMzY3MCwgMTEzNjc0LCAxMTM2NzgsIDExMzY4MiwgMTEzNjg4LCAxMTM2OTUsIDExMzcwMiwgMTEzNzA5LCAxMTM3MjEsIAotICAgIDExMzcyOSwgMTEzNzMzLCAxMTM3MzksIDExMzc0OCwgMTEzNzU1LCAxMTM3NjEsIDExMzc2NSwgMTEzNzY5LCAxMTM3NzMsIAotICAgIDExMzc3OSwgMTEzNzg4LCAxMTM3OTYsIDExMzgwMCwgMTEzODA2LCAxMTM4MTAsIDExMzgxNCwgMTEzODE4LCAxMTM4MjQsIAotICAgIDExMzgzMSwgMTEzODM3LCAxMTM4NDEsIDExMzg0NywgMTEzODUxLCAxMTM4NTUsIDExMzg2NCwgMTEzODc2LCAxMTM4ODAsIAotICAgIDExMzg4NywgMTEzODk0LCAxMTM5MDQsIDExMzkxMSwgMTEzOTIzLCAxMTM5MzAsIDExMzkzNywgMTEzOTQ0LCAxMTM5NTUsIAotICAgIDExMzk2NSwgMTEzOTc4LCAxMTM5ODgsIDExMzk5NSwgMTEzOTk5LCAxMTQwMDMsIDExNDAwNywgMTE0MDExLCAxMTQwMjAsIAotICAgIDExNDAyOSwgMTE0MDM4LCAxMTQwNTUsIDExNDA2NCwgMTE0MDcwLCAxMTQwNzcsIDExNDA4NSwgMTE0MDk4LCAxMTQxMDIsIAotICAgIDExNDExMSwgMTE0MTIwLCAxMTQxMjksIDExNDEzOCwgMTE0MTQ5LCAxMTQxNTgsIDExNDE2NywgMTE0MTc2LCAxMTQxODUsIAotICAgIDExNDE5NCwgMTE0MjAzLCAxMTQyMTMsIDExNDIxNiwgMTE0MjIwLCAxMTQyMjQsIDExNDIyOCwgMTE0MjMyLCAxMTQyMzYsIAotICAgIDExNDI0MiwgMTE0MjQ5LCAxMTQyNTYsIDExNDI2MywgMTE0MjY5LCAxMTQyNzUsIDExNDI4MiwgMTE0Mjg4LCAxMTQyOTUsIAotICAgIDExNDMwMywgMTE0MzA3LCAxMTQzMTQsIDExNDMyMSwgMTE0MzI4LCAxMTQzMzYsIDExNDM0MCwgMTE0MzQ0LCAxMTQzNDgsIAotICAgIDExNDM1MiwgMTE0MzU2LCAxMTQzNjIsIDExNDM2NiwgMTE0MzcyLCAxMTQzNzksIDExNDM4NiwgMTE0MzkyLCAxMTQzOTksIAotICAgIDExNDQwNiwgMTE0NDEzLCAxMTQ0MjAsIDExNDQyNywgMTE0NDM0LCAxMTQ0NDEsIDExNDQ0OCwgMTE0NDU1LCAxMTQ0NjIsIAotICAgIDExNDQ2OSwgMTE0NDc2LCAxMTQ0ODMsIDExNDQ5MCwgMTE0NDk2LCAxMTQ1MDAsIDExNDUwOSwgMTE0NTEzLCAxMTQ1MTcsIAotICAgIDExNDUyMSwgMTE0NTI1LCAxMTQ1MzEsIDExNDUzOCwgMTE0NTQ1LCAxMTQ1NTIsIDExNDU1OSwgMTE0NTY2LCAxMTQ1NzIsIAotICAgIDExNDU4MCwgMTE0NTg0LCAxMTQ1ODgsIDExNDU5MiwgMTE0NTk2LCAxMTQ2MDIsIDExNDYxOSwgMTE0NjM2LCAxMTQ2NDAsIAotICAgIDExNDY0NCwgMTE0NjQ4LCAxMTQ2NTIsIDExNDY1NiwgMTE0NjYwLCAxMTQ2NjYsIDExNDY3MywgMTE0Njc3LCAxMTQ2ODMsIAotICAgIDExNDY5MCwgMTE0Njk3LCAxMTQ3MDQsIDExNDcxMSwgMTE0NzE4LCAxMTQ3MjcsIDExNDczNCwgMTE0NzQxLCAxMTQ3NDgsIAotICAgIDExNDc1NSwgMTE0NzU5LCAxMTQ3NjMsIDExNDc2OSwgMTE0NzgxLCAxMTQ3ODUsIDExNDc4OSwgMTE0Nzk4LCAxMTQ4MDIsIAotICAgIDExNDgwNiwgMTE0ODEwLCAxMTQ4MTYsIDExNDgyMCwgMTE0ODI0LCAxMTQ4MzMsIDExNDgzNywgMTE0ODQxLCAxMTQ4NDUsIAotICAgIDExNDg1MiwgMTE0ODU2LCAxMTQ4NjAsIDExNDg2NCwgMTE0ODY4LCAxMTQ4NzIsIDExNDg3NiwgMTE0ODgwLCAxMTQ4ODQsIAotICAgIDExNDg5MCwgMTE0ODk3LCAxMTQ5MDQsIDExNDkxMCwgMTE0OTE0LCAxMTQ5MzEsIDExNDkzNywgMTE0OTQxLCAxMTQ5NDcsIAotICAgIDExNDk1MywgMTE0OTU5LCAxMTQ5NjUsIDExNDk3MSwgMTE0OTc3LCAxMTQ5ODEsIDExNDk4NSwgMTE0OTg5LCAxMTQ5OTUsIAotICAgIDExNDk5OSwgMTE1MDA1LCAxMTUwMDksIDExNTAxMywgMTE1MDIwLCAxMTUwMjcsIDExNTA0NCwgMTE1MDQ4LCAxMTUwNTIsIAotICAgIDExNTA1NiwgMTE1MDYwLCAxMTUwNjQsIDExNTA3NiwgMTE1MDc5LCAxMTUwODQsIDExNTA4OSwgMTE1MTA0LCAxMTUxMTQsIAotICAgIDExNTEyNiwgMTE1MTMwLCAxMTUxMzQsIDExNTEzOCwgMTE1MTQ0LCAxMTUxNTEsIDExNTE1OCwgMTE1MTY4LCAxMTUxODAsIAotICAgIDExNTE4NiwgMTE1MTkyLCAxMTUyMDEsIDExNTIwNSwgMTE1MjA5LCAxMTUyMTYsIDExNTIyNiwgMTE1MjMzLCAxMTUyMzksIAotICAgIDExNTI0MywgMTE1MjQ3LCAxMTUyNTQsIDExNTI2MCwgMTE1MjY0LCAxMTUyNzAsIDExNTI3NCwgMTE1MjgyLCAxMTUyODgsIAotICAgIDExNTI5MiwgMTE1MzAwLCAxMTUzMDksIDExNTMxNiwgMTE1MzIyLCAxMTUzMjksIDExNTMzNiwgMTE1MzQ2LCAxMTUzNTYsIAotICAgIDExNTM2MCwgMTE1MzY0LCAxMTUzNjgsIDExNTM3MiwgMTE1Mzc4LCAxMTUzODUsIDExNTM5MSwgMTE1Mzk4LCAxMTU0MDUsIAotICAgIDExNTQxMiwgMTE1NDIxLCAxMTU0MjgsIDExNTQzNSwgMTE1NDQxLCAxMTU0NDgsIDExNTQ1NSwgMTE1NDYyLCAxMTU0NjksIAotICAgIDExNTQ3NiwgMTE1NDgzLCAxMTU0ODksIDExNTQ5NiwgMTE1NTAzLCAxMTU1MTAsIDExNTUxOSwgMTE1NTI2LCAxMTU1MzMsIAotICAgIDExNTUzNywgMTE1NTQzLCAxMTU1NDcsIDExNTU1MywgMTE1NTYwLCAxMTU1NjcsIDExNTU3NCwgMTE1NTc4LCAxMTU1ODIsIAotICAgIDExNTU4NiwgMTE1NTkwLCAxMTU1OTQsIDExNTYwMSwgMTE1NjA1LCAxMTU2MDksIDExNTYxNSwgMTE1NjIzLCAxMTU2MjcsIAotICAgIDExNTYzMSwgMTE1NjM1LCAxMTU2MzksIDExNTY0NiwgMTE1NjUwLCAxMTU2NTQsIDExNTY2MiwgMTE1NjY2LCAxMTU2NzAsIAotICAgIDExNTY3NCwgMTE1Njc4LCAxMTU2ODQsIDExNTY4OCwgMTE1NjkyLCAxMTU2OTgsIDExNTcwNSwgMTE1NzExLCAxMTU3MTgsIAotICAgIDExNTczMCwgMTE1NzM0LCAxMTU3NDEsIDExNTc0OCwgMTE1NzU1LCAxMTU3NjIsIDExNTc3NCwgMTE1NzgxLCAxMTU3ODUsIAotICAgIDExNTc4OSwgMTE1NzkzLCAxMTU4MDAsIDExNTgwNywgMTE1ODE0LCAxMTU4MjEsIDExNTgzMSwgMTE1ODM4LCAxMTU4NDQsIAotICAgIDExNTg1MSwgMTE1ODU4LCAxMTU4NjUsIDExNTg3MiwgMTE1ODgxLCAxMTU4OTEsIDExNTg5OCwgMTE1OTAyLCAxMTU5MDksIAotICAgIDExNTkxMywgMTE1OTE3LCAxMTU5MjEsIDExNTkyOCwgMTE1OTM1LCAxMTU5NDUsIDExNTk1MSwgMTE1OTU1LCAxMTU5NjQsIAotICAgIDExNTk2OCwgMTE1OTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMTIzNjIsIDExMjM2NSwgMTEyMzcwLCAxMTIzNzYsIDExMjM4NCwgMTEyMzg5LCAxMTIzOTUsIDExMjQwMywgCisgICAgMTEyNDA5LCAxMTI0MTUsIDExMjQxOSwgMTEyNDIzLCAxMTI0MzAsIDExMjQzOSwgMTEyNDQ2LCAxMTI0NTUsIDExMjQ2MSwgCisgICAgMTEyNDcwLCAxMTI0NzcsIDExMjQ4NCwgMTEyNDkxLCAxMTI1MDEsIDExMjUwNywgMTEyNTExLCAxMTI1MTgsIDExMjUyNywgCisgICAgMTEyNTM3LCAxMTI1NDQsIDExMjU1MSwgMTEyNTU1LCAxMTI1NTksIDExMjU2NiwgMTEyNTc2LCAxMTI1ODAsIDExMjU4NywgCisgICAgMTEyNTk0LCAxMTI2MDEsIDExMjYwNywgMTEyNjE0LCAxMTI2MjEsIDExMjYyOCwgMTEyNjM1LCAxMTI2MzksIDExMjY0MywgCisgICAgMTEyNjQ3LCAxMTI2NTQsIDExMjY1OCwgMTEyNjY1LCAxMTI2NzIsIDExMjY4NiwgMTEyNjk1LCAxMTI2OTksIDExMjcwMywgCisgICAgMTEyNzA3LCAxMTI3MTQsIDExMjcxOCwgMTEyNzIyLCAxMTI3MjYsIDExMjczNCwgMTEyNzQyLCAxMTI3NjEsIDExMjc3MSwgCisgICAgMTEyNzkxLCAxMTI3OTUsIDExMjc5OSwgMTEyODAzLCAxMTI4MDcsIDExMjgxMSwgMTEyODE1LCAxMTI4MTksIDExMjgyNiwgCisgICAgMTEyODMwLCAxMTI4MzMsIDExMjgzNywgMTEyODQxLCAxMTI4NDcsIDExMjg1NCwgMTEyODYzLCAxMTI4NjcsIDExMjg3NiwgCisgICAgMTEyODg1LCAxMTI4OTMsIDExMjg5NywgMTEyOTA0LCAxMTI5MDgsIDExMjkxMiwgMTEyOTE2LCAxMTI5MjAsIDExMjkzMSwgCisgICAgMTEyOTQwLCAxMTI5NDksIDExMjk1OCwgMTEyOTY3LCAxMTI5NzksIDExMjk4OCwgMTEyOTk3LCAxMTMwMDYsIDExMzAxNCwgCisgICAgMTEzMDIzLCAxMTMwMzUsIDExMzA0NCwgMTEzMDUyLCAxMTMwNjEsIDExMzA3MywgMTEzMDgyLCAxMTMwOTEsIDExMzEwMywgCisgICAgMTEzMTEyLCAxMTMxMjEsIDExMzEzMywgMTEzMTQyLCAxMTMxNDYsIDExMzE1MCwgMTEzMTU0LCAxMTMxNTgsIDExMzE2MiwgCisgICAgMTEzMTY2LCAxMTMxNzAsIDExMzE3NywgMTEzMTgxLCAxMTMxODUsIDExMzE5NiwgMTEzMjAwLCAxMTMyMDQsIDExMzIxMSwgCisgICAgMTEzMjE3LCAxMTMyMjMsIDExMzIyNywgMTEzMjM0LCAxMTMyMzgsIDExMzI0MiwgMTEzMjQ2LCAxMTMyNTAsIDExMzI1NCwgCisgICAgMTEzMjU4LCAxMTMyNjQsIDExMzI3MiwgMTEzMjc2LCAxMTMyODAsIDExMzI4MywgMTEzMjg5LCAxMTMyOTksIDExMzMwMywgCisgICAgMTEzMzE1LCAxMTMzMjIsIDExMzMyOSwgMTEzMzM2LCAxMTMzNDMsIDExMzM0OSwgMTEzMzUzLCAxMTMzNTcsIDExMzM2MSwgCisgICAgMTEzMzY1LCAxMTMzNzIsIDExMzM4MSwgMTEzMzg4LCAxMTMzOTYsIDExMzQwNCwgMTEzNDEwLCAxMTM0MTQsIDExMzQxOCwgCisgICAgMTEzNDIyLCAxMTM0MjYsIDExMzQzMiwgMTEzNDQxLCAxMTM0NTMsIDExMzQ2MCwgMTEzNDY3LCAxMTM0NzYsIDExMzQ4NywgCisgICAgMTEzNDkzLCAxMTM1MDIsIDExMzUxMSwgMTEzNTE4LCAxMTM1MjcsIDExMzUzNCwgMTEzNTQwLCAxMTM1NTAsIDExMzU1NywgCisgICAgMTEzNTY0LCAxMTM1NzEsIDExMzU3OCwgMTEzNTgyLCAxMTM1ODgsIDExMzU5MiwgMTEzNjAzLCAxMTM2MTEsIDExMzYyMCwgCisgICAgMTEzNjMyLCAxMTM2MzksIDExMzY0NiwgMTEzNjU2LCAxMTM2NjMsIDExMzY3MywgMTEzNjgwLCAxMTM2OTAsIDExMzY5NywgCisgICAgMTEzNzA0LCAxMTM3MTQsIDExMzcyMSwgMTEzNzI4LCAxMTM3MzcsIDExMzc0NCwgMTEzNzU2LCAxMTM3NjUsIDExMzc3MiwgCisgICAgMTEzNzc5LCAxMTM3ODYsIDExMzc5NSwgMTEzODA1LCAxMTM4MTgsIDExMzgyNSwgMTEzODM0LCAxMTM4NDQsIDExMzg1MSwgCisgICAgMTEzODYwLCAxMTM4NzMsIDExMzg4MCwgMTEzODg3LCAxMTM4OTQsIDExMzkwNCwgMTEzOTE0LCAxMTM5MjAsIDExMzkzMCwgCisgICAgMTEzOTM3LCAxMTM5NDQsIDExMzk1NCwgMTEzOTYwLCAxMTM5NjcsIDExMzk3NCwgMTEzOTgxLCAxMTM5OTEsIDExMzk5OCwgCisgICAgMTE0MDA1LCAxMTQwMTIsIDExNDAxOCwgMTE0MDI1LCAxMTQwMzUsIDExNDA0MiwgMTE0MDQ2LCAxMTQwNTQsIDExNDA1OCwgCisgICAgMTE0MDcwLCAxMTQwNzQsIDExNDA4OCwgMTE0MDkyLCAxMTQwOTYsIDExNDEwMCwgMTE0MTA0LCAxMTQxMTAsIDExNDExNywgCisgICAgMTE0MTI1LCAxMTQxMjksIDExNDEzMywgMTE0MTM3LCAxMTQxNDEsIDExNDE0OCwgMTE0MTUyLCAxMTQxNTgsIDExNDE2NCwgCisgICAgMTE0MTcyLCAxMTQxNzYsIDExNDE4MywgMTE0MTkxLCAxMTQxOTUsIDExNDE5OSwgMTE0MjA1LCAxMTQyMDksIDExNDIxOCwgCisgICAgMTE0MjI3LCAxMTQyMzQsIDExNDI0NCwgMTE0MjUwLCAxMTQyNTQsIDExNDI1OCwgMTE0MjY2LCAxMTQyNzMsIDExNDI4MCwgCisgICAgMTE0Mjg2LCAxMTQyOTAsIDExNDI5OCwgMTE0MzAyLCAxMTQzMDksIDExNDMyMSwgMTE0MzI4LCAxMTQzMzgsIDExNDM0NCwgCisgICAgMTE0MzQ4LCAxMTQzNTcsIDExNDM2NCwgMTE0MzczLCAxMTQzNzcsIDExNDM4MSwgMTE0Mzg4LCAxMTQzOTIsIDExNDM5NiwgCisgICAgMTE0NDAwLCAxMTQ0MDQsIDExNDQwNywgMTE0NDEzLCAxMTQ0MTksIDExNDQyMywgMTE0NDI3LCAxMTQ0MzQsIDExNDQ0MSwgCisgICAgMTE0NDQ4LCAxMTQ0NTUsIDExNDQ2MiwgMTE0NDY5LCAxMTQ0NzYsIDExNDQ4MywgMTE0NDg5LCAxMTQ0OTMsIDExNDQ5NywgCisgICAgMTE0NTA0LCAxMTQ1MTEsIDExNDUxOCwgMTE0NTI1LCAxMTQ1MzIsIDExNDUzNiwgMTE0NTM5LCAxMTQ1NDQsIDExNDU0OCwgCisgICAgMTE0NTUyLCAxMTQ1NjEsIDExNDU3MCwgMTE0NTc0LCAxMTQ1NzgsIDExNDU4NCwgMTE0NTkwLCAxMTQ2MDcsIDExNDYxMywgCisgICAgMTE0NjE3LCAxMTQ2MjYsIDExNDYzMCwgMTE0NjM0LCAxMTQ2NDEsIDExNDY0OSwgMTE0NjU3LCAxMTQ2NjMsIDExNDY2NywgCisgICAgMTE0NjcxLCAxMTQ2NzUsIDExNDY3OSwgMTE0NjgyLCAxMTQ2ODgsIDExNDY5NSwgMTE0NzA1LCAxMTQ3MTIsIDExNDcxOSwgCisgICAgMTE0NzI2LCAxMTQ3MzIsIDExNDczOSwgMTE0NzQ2LCAxMTQ3NTMsIDExNDc2MCwgMTE0NzY3LCAxMTQ3NzYsIDExNDc4MywgCisgICAgMTE0Nzk1LCAxMTQ4MDIsIDExNDgwOSwgMTE0ODE5LCAxMTQ4MzAsIDExNDgzNywgMTE0ODQ0LCAxMTQ4NTEsIDExNDg1OCwgCisgICAgMTE0ODY1LCAxMTQ4NzIsIDExNDg3OSwgMTE0ODg2LCAxMTQ4OTMsIDExNDkwMCwgMTE0OTEwLCAxMTQ5MjAsIDExNDkzMCwgCisgICAgMTE0OTM3LCAxMTQ5NDcsIDExNDk1NCwgMTE0OTYxLCAxMTQ5NjgsIDExNDk3NSwgMTE0OTgyLCAxMTQ5ODksIDExNDk5NiwgCisgICAgMTE1MDAzLCAxMTUwMTAsIDExNTAxNywgMTE1MDI0LCAxMTUwMzEsIDExNTAzOCwgMTE1MDQ0LCAxMTUwNTEsIDExNTA1OCwgCisgICAgMTE1MDY3LCAxMTUwNzQsIDExNTA4MSwgMTE1MDg1LCAxMTUwOTMsIDExNTA5NywgMTE1MTAxLCAxMTUxMDUsIDExNTEwOSwgCisgICAgMTE1MTEzLCAxMTUxMjAsIDExNTEyNCwgMTE1MTMzLCAxMTUxMzcsIDExNTE0NCwgMTE1MTUyLCAxMTUxNTYsIDExNTE2MCwgCisgICAgMTE1MTY0LCAxMTUxNzcsIDExNTE5MywgMTE1MTk3LCAxMTUyMDEsIDExNTIwOCwgMTE1MjE0LCAxMTUyMjEsIDExNTIyNSwgCisgICAgMTE1MjI5LCAxMTUyMzMsIDExNTIzNywgMTE1MjQxLCAxMTUyNDgsIDExNTI1MiwgMTE1MjcwLCAxMTUyNzQsIDExNTI3OCwgCisgICAgMTE1Mjg1LCAxMTUyODksIDExNTI5MywgMTE1Mjk5LCAxMTUzMDMsIDExNTMwNywgMTE1MzE1LCAxMTUzMTksIDExNTMyMywgCisgICAgMTE1MzI2LCAxMTUzMzAsIDExNTMzNiwgMTE1MzQ3LCAxMTUzNTYsIDExNTM2NSwgMTE1MzcyLCAxMTUzNzksIDExNTM5MCwgCisgICAgMTE1Mzk3LCAxMTU0MDQsIDExNTQxMSwgMTE1NDE4LCAxMTU0MjUsIDExNTQzMiwgMTE1NDM5LCAxMTU0NDksIDExNTQ1NSwgCisgICAgMTE1NDYyLCAxMTU0NzIsIDExNTQ4MSwgMTE1NDg4LCAxMTU0OTcsIDExNTUwNywgMTE1NTE0LCAxMTU1MjEsIDExNTUyOCwgCisgICAgMTE1NTM1LCAxMTU1NDcsIDExNTU1NCwgMTE1NTYxLCAxMTU1NjgsIDExNTU3NSwgMTE1NTgyLCAxMTU1OTIsIDExNTU5OSwgCisgICAgMTE1NjA2LCAxMTU2MTYsIDExNTYyOSwgMTE1NjQxLCAxMTU2NDgsIDExNTY1OCwgMTE1NjY1LCAxMTU2NzIsIDExNTY3OSwgCisgICAgMTE1NjkzLCAxMTU2OTksIDExNTcwNywgMTE1NzE3LCAxMTU3MjcsIDExNTczNCwgMTE1NzQxLCAxMTU3NDcsIDExNTc1MSwgCisgICAgMTE1NzU4LCAxMTU3NjgsIDExNTc3NCwgMTE1Nzg3LCAxMTU3OTEsIDExNTc5NSwgMTE1ODAyLCAxMTU4MDYsIDExNTgxMywgCisgICAgMTE1ODIzLCAxMTU4MjcsIDExNTgzMSwgMTE1ODM1LCAxMTU4MzksIDExNTg0MywgMTE1ODUwLCAxMTU4NTQsIDExNTg2MSwgCisgICAgMTE1ODY4LCAxMTU4NzUsIDExNTg4NCwgMTE1ODkzLCAxMTU5MDMsIDExNTkxMCwgMTE1OTE3LCAxMTU5MjQsIDExNTkzNCwgCisgICAgMTE1OTQxLCAxMTU5NTEsIDExNTk1OCwgMTE1OTY4LCAxMTU5NzUsIDExNTk4MiwgMTE1OTkyLCAxMTYwMDIsIDExNjAwOSwgCisgICAgMTE2MDE1LCAxMTYwMjMsIDExNjAzMSwgMTE2MDM3LCAxMTYwNDMsIDExNjA0NywgMTE2MDUxLCAxMTYwNTgsIDExNjA2NiwgCisgICAgMTE2MDcyLCAxMTYwNzYsIDExNjA4MCwgMTE2MDg0LCAxMTYwOTEsIDExNjEwMywgMTE2MTA2LCAxMTYxMTMsIDExNjExOSwgCisgICAgMTE2MTIzLCAxMTYxMjcsIDExNjEzMSwgMTE2MTM1LCAxMTYxMzksIDExNjE0MywgMTE2MTQ3LCAxMTYxNTEsIDExNjE1NSwgCisgICAgMTE2MTU5LCAxMTYxNjYsIDExNjE3MCwgMTE2MTc2LCAxMTYxODAsIDExNjE4NCwgMTE2MTg4LCAxMTYxOTQsIDExNjIwMSwgCisgICAgMTE2MjA4LCAxMTYyMTUsIDExNjIyNiwgMTE2MjM0LCAxMTYyMzgsIDExNjI0NCwgMTE2MjUzLCAxMTYyNjAsIDExNjI2NiwgCisgICAgMTE2MjY5LCAxMTYyNzMsIDExNjI3NywgMTE2MjgzLCAxMTYyOTIsIDExNjMwMCwgMTE2MzA0LCAxMTYzMTAsIDExNjMxNCwgCisgICAgMTE2MzE4LCAxMTYzMjIsIDExNjMyOCwgMTE2MzM1LCAxMTYzNDEsIDExNjM0NSwgMTE2MzUxLCAxMTYzNTUsIDExNjM1OSwgCisgICAgMTE2MzY4LCAxMTYzODAsIDExNjM4NCwgMTE2MzkxLCAxMTYzOTgsIDExNjQwOCwgMTE2NDE1LCAxMTY0MjcsIDExNjQzNCwgCisgICAgMTE2NDQxLCAxMTY0NDgsIDExNjQ1OSwgMTE2NDY5LCAxMTY0ODIsIDExNjQ5MiwgMTE2NDk5LCAxMTY1MDMsIDExNjUwNywgCisgICAgMTE2NTExLCAxMTY1MTUsIDExNjUyNCwgMTE2NTMzLCAxMTY1NDIsIDExNjU1OSwgMTE2NTY4LCAxMTY1NzQsIDExNjU4MSwgCisgICAgMTE2NTg5LCAxMTY2MDIsIDExNjYwNiwgMTE2NjE1LCAxMTY2MjQsIDExNjYzMywgMTE2NjQyLCAxMTY2NTMsIDExNjY2MiwgCisgICAgMTE2NjcwLCAxMTY2NzksIDExNjY4OCwgMTE2Njk3LCAxMTY3MDYsIDExNjcxNiwgMTE2NzE5LCAxMTY3MjMsIDExNjcyNywgCisgICAgMTE2NzMxLCAxMTY3MzUsIDExNjczOSwgMTE2NzQ1LCAxMTY3NTIsIDExNjc1OSwgMTE2NzY2LCAxMTY3NzIsIDExNjc3OCwgCisgICAgMTE2Nzg1LCAxMTY3OTEsIDExNjc5OCwgMTE2ODA2LCAxMTY4MTAsIDExNjgxNywgMTE2ODI0LCAxMTY4MzEsIDExNjgzOSwgCisgICAgMTE2ODQzLCAxMTY4NDcsIDExNjg1MSwgMTE2ODU1LCAxMTY4NTksIDExNjg2NSwgMTE2ODY5LCAxMTY4NzUsIDExNjg4MiwgCisgICAgMTE2ODg5LCAxMTY4OTUsIDExNjkwMiwgMTE2OTA5LCAxMTY5MTYsIDExNjkyMywgMTE2OTMwLCAxMTY5MzcsIDExNjk0NCwgCisgICAgMTE2OTUxLCAxMTY5NTgsIDExNjk2NSwgMTE2OTcyLCAxMTY5NzksIDExNjk4NiwgMTE2OTkzLCAxMTY5OTksIDExNzAwMywgCisgICAgMTE3MDEyLCAxMTcwMTYsIDExNzAyMCwgMTE3MDI0LCAxMTcwMjgsIDExNzAzNCwgMTE3MDQxLCAxMTcwNDgsIDExNzA1NSwgCisgICAgMTE3MDYyLCAxMTcwNjksIDExNzA3NSwgMTE3MDgzLCAxMTcwODcsIDExNzA5MSwgMTE3MDk1LCAxMTcwOTksIDExNzEwNSwgCisgICAgMTE3MTIyLCAxMTcxMzksIDExNzE0MywgMTE3MTQ3LCAxMTcxNTEsIDExNzE1NSwgMTE3MTU5LCAxMTcxNjMsIDExNzE2OSwgCisgICAgMTE3MTc2LCAxMTcxODAsIDExNzE4NiwgMTE3MTkzLCAxMTcyMDAsIDExNzIwNywgMTE3MjE0LCAxMTcyMjEsIDExNzIzMCwgCisgICAgMTE3MjM3LCAxMTcyNDQsIDExNzI1MSwgMTE3MjU4LCAxMTcyNjIsIDExNzI2NiwgMTE3MjcyLCAxMTcyODQsIDExNzI4OCwgCisgICAgMTE3MjkyLCAxMTczMDEsIDExNzMwNSwgMTE3MzA5LCAxMTczMTMsIDExNzMxOSwgMTE3MzIzLCAxMTczMjcsIDExNzMzNiwgCisgICAgMTE3MzQwLCAxMTczNDQsIDExNzM0OCwgMTE3MzU1LCAxMTczNTksIDExNzM2MywgMTE3MzY3LCAxMTczNzEsIDExNzM3NSwgCisgICAgMTE3Mzc5LCAxMTczODMsIDExNzM4NywgMTE3MzkzLCAxMTc0MDAsIDExNzQwNywgMTE3NDEzLCAxMTc0MTcsIDExNzQzNCwgCisgICAgMTE3NDQwLCAxMTc0NDQsIDExNzQ1MCwgMTE3NDU2LCAxMTc0NjIsIDExNzQ2OCwgMTE3NDc0LCAxMTc0ODAsIDExNzQ4NCwgCisgICAgMTE3NDg4LCAxMTc0OTIsIDExNzQ5OCwgMTE3NTAyLCAxMTc1MDgsIDExNzUxMiwgMTE3NTE2LCAxMTc1MjMsIDExNzUzMCwgCisgICAgMTE3NTQ3LCAxMTc1NTEsIDExNzU1NSwgMTE3NTU5LCAxMTc1NjMsIDExNzU2NywgMTE3NTc5LCAxMTc1ODIsIDExNzU4NywgCisgICAgMTE3NTkyLCAxMTc2MDcsIDExNzYxNywgMTE3NjI5LCAxMTc2MzMsIDExNzYzNywgMTE3NjQxLCAxMTc2NDcsIDExNzY1NCwgCisgICAgMTE3NjYxLCAxMTc2NzEsIDExNzY4MywgMTE3Njg5LCAxMTc2OTUsIDExNzcwNCwgMTE3NzA4LCAxMTc3MTIsIDExNzcxOSwgCisgICAgMTE3NzI5LCAxMTc3MzYsIDExNzc0MiwgMTE3NzQ2LCAxMTc3NTAsIDExNzc1NywgMTE3NzYzLCAxMTc3NjcsIDExNzc3MywgCisgICAgMTE3Nzc3LCAxMTc3ODUsIDExNzc5MSwgMTE3Nzk1LCAxMTc4MDMsIDExNzgxMSwgMTE3ODE4LCAxMTc4MjQsIDExNzgzMSwgCisgICAgMTE3ODM4LCAxMTc4NDgsIDExNzg1OCwgMTE3ODYyLCAxMTc4NjYsIDExNzg3MCwgMTE3ODc0LCAxMTc4ODAsIDExNzg4NywgCisgICAgMTE3ODkzLCAxMTc5MDAsIDExNzkwNywgMTE3OTE0LCAxMTc5MjMsIDExNzkzMCwgMTE3OTM3LCAxMTc5NDMsIDExNzk1MCwgCisgICAgMTE3OTU3LCAxMTc5NjQsIDExNzk3MSwgMTE3OTc4LCAxMTc5ODUsIDExNzk5MSwgMTE3OTk4LCAxMTgwMDUsIDExODAxMiwgCisgICAgMTE4MDIxLCAxMTgwMjgsIDExODAzNSwgMTE4MDM5LCAxMTgwNDUsIDExODA0OSwgMTE4MDU1LCAxMTgwNjIsIDExODA2OSwgCisgICAgMTE4MDc2LCAxMTgwODAsIDExODA4NCwgMTE4MDg4LCAxMTgwOTIsIDExODA5NiwgMTE4MTAzLCAxMTgxMDcsIDExODExMSwgCisgICAgMTE4MTE3LCAxMTgxMjUsIDExODEyOSwgMTE4MTMzLCAxMTgxMzcsIDExODE0MSwgMTE4MTQ4LCAxMTgxNTIsIDExODE1NiwgCisgICAgMTE4MTY0LCAxMTgxNjgsIDExODE3MiwgMTE4MTc2LCAxMTgxODAsIDExODE4NiwgMTE4MTkwLCAxMTgxOTQsIDExODIwMCwgCisgICAgMTE4MjA3LCAxMTgyMTMsIDExODIyMCwgMTE4MjMyLCAxMTgyMzYsIDExODI0MywgMTE4MjUwLCAxMTgyNTcsIDExODI2NCwgCisgICAgMTE4Mjc2LCAxMTgyODMsIDExODI4NywgMTE4MjkxLCAxMTgyOTUsIDExODMwMiwgMTE4MzA5LCAxMTgzMTYsIDExODMyMywgCisgICAgMTE4MzMzLCAxMTgzNDAsIDExODM0NiwgMTE4MzUzLCAxMTgzNjAsIDExODM2NywgMTE4Mzc0LCAxMTgzODMsIDExODM5MywgCisgICAgMTE4NDAwLCAxMTg0MDQsIDExODQxMSwgMTE4NDE1LCAxMTg0MTksIDExODQyMywgMTE4NDMwLCAxMTg0MzcsIDExODQ0NywgCisgICAgMTE4NDUzLCAxMTg0NTcsIDExODQ2NiwgMTE4NDcwLCAxMTg0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNTk3OSwgMTE1OTg1LCAxMTU5OTEsIDExNTk5OCwgMTE2MDA1LCAKLSAgICAxMTYwMTIsIDExNjAxOSwgMTE2MDI2LCAxMTYwMzMsIDExNjAzOSwgMTE2MDQ2LCAxMTYwNTMsIDExNjA2MCwgMTE2MDY3LCAKLSAgICAxMTYwNzQsIDExNjA4MSwgMTE2MDg3LCAxMTYwOTMsIDExNjA5OSwgMTE2MTA1LCAxMTYxMTEsIDExNjExNywgMTE2MTIzLCAKLSAgICAxMTYxMjksIDExNjEzNSwgMTE2MTQyLCAxMTYxNDksIDExNjE1NiwgMTE2MTYzLCAxMTYxNzAsIDExNjE3NywgMTE2MTgzLCAKLSAgICAxMTYxODksIDExNjE5NSwgMTE2MjAyLCAxMTYyMDksIDExNjIxNSwgMTE2MjIxLCAxMTYyMzAsIDExNjIzNywgMTE2MjQ0LCAKLSAgICAxMTYyNTEsIDExNjI1OCwgMTE2MjY1LCAxMTYyNzIsIDExNjI3OCwgMTE2Mjg0LCAxMTYyOTAsIDExNjI5OSwgMTE2MzA2LCAKLSAgICAxMTYzMTMsIDExNjMyNCwgMTE2MzM1LCAxMTYzNDEsIDExNjM0NywgMTE2MzUzLCAxMTYzNjIsIDExNjM2OSwgMTE2Mzc2LCAKLSAgICAxMTYzODYsIDExNjM5NiwgMTE2NDA3LCAxMTY0MTgsIDExNjQzMCwgMTE2NDQzLCAxMTY0NTQsIDExNjQ2NSwgMTE2NDc3LCAKLSAgICAxMTY0OTAsIDExNjUwMSwgMTE2NTEyLCAxMTY1MjMsIDExNjUzNCwgMTE2NTQ1LCAxMTY1NTcsIDExNjU2NSwgMTE2NTczLCAKLSAgICAxMTY1ODIsIDExNjU5MSwgMTE2NjAwLCAxMTY2MDYsIDExNjYxMiwgMTE2NjE4LCAxMTY2MjUsIDExNjYzNSwgMTE2NjQyLCAKLSAgICAxMTY2NTIsIDExNjY1NywgMTE2NjYyLCAxMTY2NjgsIDExNjY3NCwgMTE2NjgyLCAxMTY2OTAsIDExNjY5OSwgMTE2NzEwLCAKLSAgICAxMTY3MjEsIDExNjcyOSwgMTE2NzM3LCAxMTY3NDYsIDExNjc1NSwgMTE2NzYzLCAxMTY3NzAsIDExNjc3OCwgMTE2Nzg2LCAKLSAgICAxMTY3OTMsIDExNjgwMCwgMTE2ODA5LCAxMTY4MTgsIDExNjgyNywgMTE2ODM2LCAxMTY4NDUsIDAsIDExNjg1NCwgCi0gICAgMTE2ODY1LCAxMTY4NzIsIDExNjg4MCwgMTE2ODg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTY4OTYsIAotICAgIDExNjkwNSwgMTE2OTEyLCAxMTY5MTksIDExNjkyOCwgMTE2OTM1LCAxMTY5NDIsIDExNjk0OSwgMTE2OTU5LCAxMTY5NjYsIAotICAgIDExNjk3MywgMTE2OTgwLCAxMTY5ODgsIDExNjk5NSwgMTE3MDAyLCAxMTcwMDksIDExNzAyMCwgMTE3MDI3LCAxMTcwMzQsIAotICAgIDExNzA0MSwgMTE3MDQ4LCAxMTcwNTUsIDExNzA2NCwgMTE3MDcxLCAxMTcwNzcsIDExNzA4NCwgMTE3MDkzLCAxMTcxMDAsIAotICAgIDExNzEwNywgMTE3MTE0LCAxMTcxMjQsIDExNzEzMSwgMTE3MTM4LCAxMTcxNDgsIDExNzE1OCwgMTE3MTY1LCAxMTcxNzIsIAotICAgIDExNzE3OSwgMTE3MTg2LCAxMTcxOTMsIDExNzIwMCwgMTE3MjA5LCAxMTcyMTYsIDExNzIyMywgMTE3MjI5LCAxMTcyMzcsIAotICAgIDExNzI0NiwgMTE3MjU1LCAxMTcyNjYsIDExNzI3NSwgMTE3Mjg0LCAxMTcyOTMsIDExNzMwMiwgMTE3MzExLCAxMTczMTgsIAotICAgIDExNzMyNSwgMTE3MzM0LCAxMTczNDYsIDExNzM1NiwgMTE3MzYzLCAxMTczNzAsIDExNzM4MCwgMTE3MzkwLCAxMTczOTksIAotICAgIDExNzQwOSwgMTE3NDE2LCAxMTc0MjYsIDExNzQzMywgMTE3NDQwLCAxMTc0NDcsIDExNzQ1NywgMTE3NDY3LCAxMTc0NzQsIAotICAgIDExNzQ4MSwgMTE3NDkxLCAxMTc0OTcsIDExNzUwOCwgMTE3NTE3LCAxMTc1MjcsIDExNzUzNSwgMTE3NTQ4LCAxMTc1NTUsIAotICAgIDExNzU2MSwgMTE3NTY5LCAxMTc1NzYsIDExNzU4NiwgMTE3NTkwLCAxMTc1OTQsIDExNzU5OCwgMTE3NjAyLCAxMTc2MDYsIAotICAgIDExNzYxMCwgMTE3NjE0LCAxMTc2MjMsIDExNzYyNywgMTE3NjM0LCAxMTc2MzgsIDExNzY0MiwgMTE3NjQ2LCAxMTc2NTAsIAotICAgIDExNzY1NCwgMTE3NjU4LCAxMTc2NjIsIDExNzY2NiwgMTE3NjcwLCAxMTc2NzQsIDExNzY3OCwgMTE3NjgyLCAxMTc2ODYsIAotICAgIDExNzY5MCwgMTE3Njk0LCAxMTc2OTgsIDExNzcwMiwgMTE3NzA2LCAxMTc3MTAsIDExNzcxNywgMTE3NzI0LCAxMTc3MzQsIAotICAgIDExNzc0NywgMTE3NzU3LCAxMTc3NjEsIDExNzc2NSwgMTE3NzY5LCAxMTc3NzMsIDExNzc3NywgMTE3NzgxLCAxMTc3ODUsIAotICAgIDExNzc4OSwgMTE3NzkzLCAxMTc3OTcsIDExNzgwMSwgMTE3ODA4LCAxMTc4MTUsIDExNzgyNiwgMTE3ODMzLCAxMTc4NDAsIAotICAgIDExNzg0NywgMTE3ODU0LCAxMTc4NjEsIDExNzg2OCwgMTE3ODc1LCAxMTc4NzksIDExNzg4MywgMTE3ODkwLCAxMTc4OTcsIAotICAgIDExNzkwNCwgMTE3OTEzLCAxMTc5MjAsIDExNzkzMywgMTE3OTQzLCAxMTc5NTAsIDExNzk1NywgMTE3OTYxLCAxMTc5NjUsIAotICAgIDExNzk3NCwgMTE3OTgxLCAxMTc5ODgsIDExNzk5NSwgMTE4MDA4LCAxMTgwMTUsIDExODAyMiwgMTE4MDMyLCAxMTgwNDIsIAotICAgIDExODA1MSwgMTE4MDU4LCAxMTgwNjUsIDExODA3MiwgMTE4MDc5LCAxMTgwODYsIDExODA5MywgMTE4MTAzLCAxMTgxMDksIAotICAgIDExODExNywgMTE4MTI0LCAxMTgxMzIsIDExODEzOSwgMTE4MTUwLCAxMTgxNTcsIDExODE2MywgMTE4MTcwLCAxMTgxNzcsIAotICAgIDExODE4NCwgMTE4MTkxLCAxMTgyMDEsIDExODIxMSwgMTE4MjE4LCAxMTgyMjUsIDExODIzNCwgMTE4MjQyLCAxMTgyNDgsIAotICAgIDExODI1NSwgMTE4MjYyLCAxMTgyNjksIDExODI3NiwgMTE4MjgwLCAxMTgyOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODQ4MSwgMTE4NDg3LCAKKyAgICAxMTg0OTMsIDExODUwMCwgMTE4NTA3LCAxMTg1MTQsIDExODUyMSwgMTE4NTI4LCAxMTg1MzUsIDExODU0MSwgMTE4NTQ4LCAKKyAgICAxMTg1NTUsIDExODU2MiwgMTE4NTY5LCAxMTg1NzYsIDExODU4MywgMTE4NTg5LCAxMTg1OTUsIDExODYwMSwgMTE4NjA3LCAKKyAgICAxMTg2MTMsIDExODYxOSwgMTE4NjI1LCAxMTg2MzEsIDExODYzNywgMTE4NjQ0LCAxMTg2NTEsIDExODY1OCwgMTE4NjY1LCAKKyAgICAxMTg2NzIsIDExODY3OSwgMTE4Njg1LCAxMTg2OTEsIDExODY5NywgMTE4NzA0LCAxMTg3MTEsIDExODcxNywgMTE4NzIzLCAKKyAgICAxMTg3MzIsIDExODczOSwgMTE4NzQ2LCAxMTg3NTMsIDExODc2MCwgMTE4NzY3LCAxMTg3NzQsIDExODc4MCwgMTE4Nzg2LCAKKyAgICAxMTg3OTIsIDExODgwMSwgMTE4ODA4LCAxMTg4MTUsIDExODgyNiwgMTE4ODM3LCAxMTg4NDMsIDExODg0OSwgMTE4ODU1LCAKKyAgICAxMTg4NjQsIDExODg3MSwgMTE4ODc4LCAxMTg4ODgsIDExODg5OCwgMTE4OTA5LCAxMTg5MjAsIDExODkzMiwgMTE4OTQ1LCAKKyAgICAxMTg5NTYsIDExODk2NywgMTE4OTc5LCAxMTg5OTIsIDExOTAwMywgMTE5MDE0LCAxMTkwMjUsIDExOTAzNiwgMTE5MDQ3LCAKKyAgICAxMTkwNTksIDExOTA2NywgMTE5MDc1LCAxMTkwODQsIDExOTA5MywgMTE5MTAyLCAxMTkxMDgsIDExOTExNCwgMTE5MTIwLCAKKyAgICAxMTkxMjcsIDExOTEzNywgMTE5MTQ0LCAxMTkxNTQsIDExOTE1OSwgMTE5MTY0LCAxMTkxNzAsIDExOTE3NiwgMTE5MTg0LCAKKyAgICAxMTkxOTIsIDExOTIwMSwgMTE5MjEyLCAxMTkyMjMsIDExOTIzMSwgMTE5MjM5LCAxMTkyNDgsIDExOTI1NywgMTE5MjY1LCAKKyAgICAxMTkyNzIsIDExOTI4MCwgMTE5Mjg4LCAxMTkyOTUsIDExOTMwMiwgMTE5MzExLCAxMTkzMjAsIDExOTMyOSwgMTE5MzM4LCAKKyAgICAxMTkzNDcsIDAsIDExOTM1NiwgMTE5MzY3LCAxMTkzNzQsIDExOTM4MiwgMTE5MzkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMTkzOTgsIDExOTQwNywgMTE5NDE0LCAxMTk0MjEsIDExOTQzMCwgMTE5NDM3LCAxMTk0NDQsIAorICAgIDExOTQ1MSwgMTE5NDYxLCAxMTk0NjgsIDExOTQ3NSwgMTE5NDgyLCAxMTk0OTAsIDExOTQ5NywgMTE5NTA0LCAxMTk1MTEsIAorICAgIDExOTUyMiwgMTE5NTI5LCAxMTk1MzYsIDExOTU0MywgMTE5NTUwLCAxMTk1NTcsIDExOTU2NiwgMTE5NTczLCAxMTk1NzksIAorICAgIDExOTU4NiwgMTE5NTk1LCAxMTk2MDIsIDExOTYwOSwgMTE5NjE2LCAxMTk2MjYsIDExOTYzMywgMTE5NjQwLCAxMTk2NTAsIAorICAgIDExOTY2MCwgMTE5NjY3LCAxMTk2NzQsIDExOTY4MSwgMTE5Njg4LCAxMTk2OTUsIDExOTcwMiwgMTE5NzExLCAxMTk3MTgsIAorICAgIDExOTcyNSwgMTE5NzMxLCAxMTk3MzksIDExOTc0OCwgMTE5NzU3LCAxMTk3NjgsIDExOTc3NiwgMTE5Nzg1LCAxMTk3OTQsIAorICAgIDExOTgwMywgMTE5ODEyLCAxMTk4MTksIDExOTgyNiwgMTE5ODM1LCAxMTk4NDcsIDExOTg1NywgMTE5ODY0LCAxMTk4NzEsIAorICAgIDExOTg4MSwgMTE5ODkxLCAxMTk5MDAsIDExOTkxMCwgMTE5OTE3LCAxMTk5MjcsIDExOTkzNCwgMTE5OTQxLCAxMTk5NDgsIAorICAgIDExOTk1OCwgMTE5OTY4LCAxMTk5NzUsIDExOTk4MiwgMTE5OTkyLCAxMTk5OTgsIDEyMDAwOSwgMTIwMDE4LCAxMjAwMjgsIAorICAgIDEyMDAzNiwgMTIwMDQ5LCAxMjAwNTYsIDEyMDA2MiwgMTIwMDcwLCAxMjAwNzcsIDEyMDA4NywgMTIwMDkxLCAxMjAwOTUsIAorICAgIDEyMDA5OSwgMTIwMTAzLCAxMjAxMDcsIDEyMDExMSwgMTIwMTE1LCAxMjAxMjQsIDEyMDEyOCwgMTIwMTM1LCAxMjAxMzksIAorICAgIDEyMDE0MywgMTIwMTQ3LCAxMjAxNTEsIDEyMDE1NSwgMTIwMTU5LCAxMjAxNjMsIDEyMDE2NywgMTIwMTcxLCAxMjAxNzUsIAorICAgIDEyMDE3OSwgMTIwMTgzLCAxMjAxODcsIDEyMDE5MSwgMTIwMTk1LCAxMjAxOTksIDEyMDIwMywgMTIwMjA3LCAxMjAyMTEsIAorICAgIDEyMDIxOCwgMTIwMjI1LCAxMjAyMzUsIDEyMDI0OCwgMTIwMjU4LCAxMjAyNjIsIDEyMDI2NiwgMTIwMjcwLCAxMjAyNzQsIAorICAgIDEyMDI3OCwgMTIwMjgyLCAxMjAyODYsIDEyMDI5MCwgMTIwMjk0LCAxMjAyOTgsIDEyMDMwMiwgMTIwMzA5LCAxMjAzMTYsIAorICAgIDEyMDMyNywgMTIwMzM0LCAxMjAzNDAsIDEyMDM0NywgMTIwMzU0LCAxMjAzNjEsIDEyMDM2OCwgMTIwMzc1LCAxMjAzNzksIAorICAgIDEyMDM4MywgMTIwMzkwLCAxMjAzOTcsIDEyMDQwNCwgMTIwNDEzLCAxMjA0MjAsIDEyMDQzMywgMTIwNDQzLCAxMjA0NTAsIAorICAgIDEyMDQ1NywgMTIwNDYxLCAxMjA0NjUsIDEyMDQ3NCwgMTIwNDgxLCAxMjA0ODgsIDEyMDQ5NSwgMTIwNTA4LCAxMjA1MTUsIAorICAgIDEyMDUyMiwgMTIwNTMyLCAxMjA1NDIsIDEyMDU1MSwgMTIwNTU4LCAxMjA1NjUsIDEyMDU3MiwgMTIwNTc5LCAxMjA1ODYsIAorICAgIDEyMDU5MywgMTIwNjAzLCAxMjA2MDksIDEyMDYxNywgMTIwNjI0LCAxMjA2MzIsIDEyMDYzOSwgMTIwNjUwLCAxMjA2NTcsIAorICAgIDEyMDY2MywgMTIwNjcwLCAxMjA2NzcsIDEyMDY4NCwgMTIwNjkxLCAxMjA3MDEsIDEyMDcxMSwgMTIwNzE4LCAxMjA3MjUsIAorICAgIDEyMDczNCwgMTIwNzQyLCAxMjA3NDgsIDEyMDc1NSwgMTIwNzYyLCAxMjA3NjksIDEyMDc3NiwgMTIwNzgwLCAxMjA3OTAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkxMDAsMTI2ICsyMDI1NSwxMjYgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgzMDAsIDExODMwNCwgMTE4MzA4LCAxMTgzMTIsIAotICAgIDExODMxNiwgMTE4MzIwLCAxMTgzMjQsIDExODMyOCwgMTE4MzMyLCAxMTgzMzYsIDExODM0MCwgMTE4MzQ0LCAxMTgzNDgsIAotICAgIDExODM1MiwgMTE4MzU2LCAxMTgzNjAsIDExODM2NCwgMTE4MzY4LCAxMTgzNzIsIDExODM3NiwgMTE4MzgwLCAxMTgzODQsIAotICAgIDExODM4OCwgMTE4MzkyLCAxMTgzOTYsIDExODQwMCwgMTE4NDA0LCAxMTg0MDgsIDExODQxMiwgMTE4NDE2LCAxMTg0MjAsIAotICAgIDExODQyNCwgMTE4NDI4LCAxMTg0MzIsIDExODQzNiwgMTE4NDQwLCAxMTg0NDQsIDExODQ0OCwgMTE4NDUyLCAxMTg0NTYsIAotICAgIDExODQ2MCwgMTE4NDY0LCAxMTg0NjgsIDExODQ3MiwgMTE4NDc2LCAxMTg0ODAsIDExODQ4NCwgMTE4NDg4LCAxMTg0OTIsIAotICAgIDExODQ5NiwgMTE4NTAwLCAxMTg1MDQsIDExODUwOCwgMTE4NTEyLCAxMTg1MTYsIDExODUyMCwgMTE4NTI0LCAxMTg1MjgsIAotICAgIDExODUzMiwgMTE4NTM2LCAxMTg1NDAsIDExODU0NCwgMTE4NTQ4LCAxMTg1NTIsIDExODU1NiwgMTE4NTYwLCAxMTg1NjQsIAotICAgIDExODU2OCwgMTE4NTcyLCAxMTg1NzYsIDExODU4MCwgMTE4NTg0LCAxMTg1ODgsIDExODU5MiwgMTE4NTk2LCAxMTg2MDAsIAotICAgIDExODYwNCwgMTE4NjA4LCAxMTg2MTIsIDExODYxNiwgMTE4NjIwLCAxMTg2MjQsIDExODYyOCwgMTE4NjMyLCAxMTg2MzYsIAotICAgIDExODY0MCwgMTE4NjQ0LCAxMTg2NDgsIDExODY1MiwgMTE4NjU2LCAxMTg2NjAsIDExODY2NCwgMTE4NjY4LCAxMTg2NzIsIAotICAgIDExODY3NiwgMTE4NjgwLCAxMTg2ODQsIDExODY4OCwgMTE4NjkyLCAxMTg2OTYsIDExODcwMCwgMTE4NzA0LCAxMTg3MDgsIAotICAgIDExODcxMiwgMTE4NzE2LCAxMTg3MjAsIDExODcyNCwgMTE4NzI4LCAxMTg3MzIsIDExODczNiwgMTE4NzQwLCAxMTg3NDQsIAotICAgIDExODc0OCwgMTE4NzUyLCAxMTg3NTYsIDExODc2MCwgMTE4NzY0LCAxMTg3NjgsIDExODc3MiwgMTE4Nzc2LCAxMTg3ODAsIAotICAgIDExODc4NCwgMTE4Nzg4LCAxMTg3OTIsIDExODc5NiwgMTE4ODAwLCAxMTg4MDQsIDExODgwOCwgMTE4ODEyLCAxMTg4MTYsIAotICAgIDExODgyMCwgMTE4ODI0LCAxMTg4MjgsIDExODgzMiwgMTE4ODM2LCAxMTg4NDAsIDExODg0NCwgMTE4ODQ4LCAxMTg4NTIsIAotICAgIDExODg1NiwgMTE4ODYwLCAxMTg4NjQsIDExODg2OCwgMTE4ODcyLCAxMTg4NzYsIDExODg4MCwgMTE4ODg0LCAxMTg4ODgsIAotICAgIDExODg5MiwgMTE4ODk2LCAxMTg5MDAsIDExODkwNCwgMTE4OTA4LCAxMTg5MTIsIDExODkxNiwgMTE4OTIwLCAxMTg5MjQsIAotICAgIDExODkyOCwgMTE4OTMyLCAxMTg5MzYsIDExODk0MCwgMTE4OTQ0LCAxMTg5NDgsIDExODk1MiwgMTE4OTU2LCAxMTg5NjAsIAotICAgIDExODk2NCwgMTE4OTY4LCAxMTg5NzIsIDExODk3NiwgMTE4OTgwLCAxMTg5ODQsIDExODk4OCwgMTE4OTkyLCAxMTg5OTYsIAotICAgIDExOTAwMCwgMTE5MDA0LCAxMTkwMDgsIDExOTAxMiwgMTE5MDE2LCAxMTkwMjAsIDExOTAyNCwgMTE5MDI4LCAxMTkwMzIsIAotICAgIDExOTAzNiwgMTE5MDQwLCAxMTkwNDQsIDExOTA0OCwgMTE5MDUyLCAxMTkwNTYsIDExOTA2MCwgMTE5MDY0LCAxMTkwNjgsIAotICAgIDExOTA3MiwgMTE5MDc2LCAxMTkwODAsIDExOTA4NCwgMTE5MDg4LCAxMTkwOTIsIDExOTA5NiwgMTE5MTAwLCAxMTkxMDQsIAotICAgIDExOTEwOCwgMTE5MTEyLCAxMTkxMTYsIDExOTEyMCwgMTE5MTI0LCAxMTkxMjgsIDExOTEzMiwgMTE5MTM2LCAxMTkxNDAsIAotICAgIDExOTE0NCwgMTE5MTQ4LCAxMTkxNTIsIDExOTE1NiwgMTE5MTYwLCAxMTkxNjQsIDExOTE2OCwgMTE5MTcyLCAxMTkxNzYsIAotICAgIDExOTE4MCwgMTE5MTg0LCAxMTkxODgsIDExOTE5MiwgMTE5MTk2LCAxMTkyMDAsIDExOTIwNCwgMTE5MjA4LCAxMTkyMTIsIAotICAgIDExOTIxNiwgMTE5MjIwLCAxMTkyMjQsIDExOTIyOCwgMTE5MjMyLCAxMTkyMzYsIDExOTI0MCwgMTE5MjQ0LCAxMTkyNDgsIAotICAgIDExOTI1MiwgMTE5MjU2LCAxMTkyNjAsIDExOTI2NCwgMTE5MjY4LCAxMTkyNzIsIDExOTI3NiwgMTE5MjgwLCAxMTkyODQsIAotICAgIDExOTI4OCwgMTE5MjkyLCAxMTkyOTYsIDExOTMwMCwgMTE5MzA0LCAxMTkzMDgsIDExOTMxMiwgMTE5MzE2LCAxMTkzMjAsIAotICAgIDExOTMyNCwgMTE5MzI4LCAxMTkzMzIsIDExOTMzNiwgMTE5MzQwLCAxMTkzNDQsIDExOTM0OCwgMTE5MzUyLCAxMTkzNTYsIAotICAgIDExOTM2MCwgMTE5MzY0LCAxMTkzNjgsIDExOTM3MiwgMTE5Mzc2LCAxMTkzODAsIDExOTM4NCwgMTE5Mzg4LCAxMTkzOTIsIAotICAgIDExOTM5NiwgMTE5NDAwLCAxMTk0MDQsIDExOTQwOCwgMTE5NDEyLCAxMTk0MTYsIDExOTQyMCwgMTE5NDI0LCAxMTk0MjgsIAotICAgIDExOTQzMiwgMTE5NDM2LCAxMTk0NDAsIDExOTQ0NCwgMTE5NDQ4LCAxMTk0NTIsIDExOTQ1NiwgMTE5NDYwLCAxMTk0NjQsIAotICAgIDExOTQ2OCwgMTE5NDcyLCAxMTk0NzYsIDExOTQ4MCwgMTE5NDg0LCAxMTk0ODgsIDExOTQ5MiwgMTE5NDk2LCAxMTk1MDAsIAotICAgIDExOTUwNCwgMTE5NTA4LCAxMTk1MTIsIDExOTUxNiwgMTE5NTIwLCAxMTk1MjQsIDExOTUyOCwgMTE5NTMyLCAxMTk1MzYsIAotICAgIDExOTU0MCwgMTE5NTQ0LCAxMTk1NDgsIDExOTU1MiwgMTE5NTU2LCAxMTk1NjAsIDExOTU2NCwgMTE5NTY4LCAxMTk1NzIsIAotICAgIDExOTU3NiwgMTE5NTgwLCAxMTk1ODQsIDExOTU4OCwgMTE5NTkyLCAxMTk1OTYsIDExOTYwMCwgMTE5NjA0LCAxMTk2MDgsIAotICAgIDExOTYxMiwgMTE5NjE2LCAxMTk2MjAsIDExOTYyNCwgMTE5NjI4LCAxMTk2MzIsIDExOTYzNiwgMTE5NjQwLCAxMTk2NDQsIAotICAgIDExOTY0OCwgMTE5NjUyLCAxMTk2NTYsIDExOTY2MCwgMTE5NjY0LCAxMTk2NjgsIDExOTY3MiwgMTE5Njc2LCAxMTk2ODAsIAotICAgIDExOTY4NCwgMTE5Njg4LCAxMTk2OTIsIDExOTY5NiwgMTE5NzAwLCAxMTk3MDQsIDExOTcwOCwgMTE5NzEyLCAxMTk3MTYsIAotICAgIDExOTcyMCwgMTE5NzI0LCAxMTk3MjgsIDExOTczMiwgMTE5NzM2LCAxMTk3NDAsIDExOTc0NCwgMTE5NzQ4LCAxMTk3NTIsIAotICAgIDExOTc1NiwgMTE5NzYwLCAxMTk3NjQsIDExOTc2OCwgMTE5NzcyLCAxMTk3NzYsIDExOTc4MCwgMTE5Nzg0LCAxMTk3ODgsIAotICAgIDExOTc5MiwgMTE5Nzk2LCAxMTk4MDAsIDExOTgwNCwgMTE5ODA4LCAxMTk4MTIsIDExOTgxNiwgMTE5ODIwLCAxMTk4MjQsIAotICAgIDExOTgyOCwgMTE5ODMyLCAxMTk4MzYsIDExOTg0MCwgMTE5ODQ0LCAxMTk4NDgsIDExOTg1MiwgMTE5ODU2LCAxMTk4NjAsIAotICAgIDExOTg2NCwgMTE5ODY4LCAxMTk4NzIsIDExOTg3NiwgMTE5ODgwLCAxMTk4ODQsIDExOTg4OCwgMTE5ODkyLCAxMTk4OTYsIAotICAgIDExOTkwMCwgMTE5OTA0LCAxMTk5MDgsIDExOTkxMiwgMTE5OTE2LCAxMTk5MjAsIDExOTkyNCwgMTE5OTI4LCAxMTk5MzIsIAotICAgIDExOTkzNiwgMTE5OTQwLCAxMTk5NDQsIDExOTk0OCwgMTE5OTUyLCAxMTk5NTYsIDExOTk2MCwgMTE5OTY0LCAxMTk5NjgsIAotICAgIDExOTk3MiwgMTE5OTc2LCAxMTk5ODAsIDExOTk4NCwgMTE5OTg4LCAxMTk5OTIsIDExOTk5NiwgMTIwMDAwLCAxMjAwMDQsIAotICAgIDEyMDAwOCwgMTIwMDEyLCAxMjAwMTYsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjgsIDEyMDAzMiwgMTIwMDM2LCAxMjAwNDAsIAotICAgIDEyMDA0NCwgMTIwMDQ4LCAxMjAwNTIsIDEyMDA1NiwgMTIwMDYwLCAxMjAwNjQsIDEyMDA2OCwgMTIwMDcyLCAxMjAwNzYsIAotICAgIDEyMDA4MCwgMTIwMDg0LCAxMjAwODgsIDEyMDA5MiwgMTIwMDk2LCAxMjAxMDAsIDEyMDEwNCwgMTIwMTA4LCAxMjAxMTIsIAotICAgIDEyMDExNiwgMTIwMTIwLCAxMjAxMjQsIDEyMDEyOCwgMTIwMTMyLCAxMjAxMzYsIDEyMDE0MCwgMTIwMTQ0LCAxMjAxNDgsIAotICAgIDEyMDE1MiwgMTIwMTU2LCAxMjAxNjAsIDEyMDE2NCwgMTIwMTY4LCAxMjAxNzIsIDEyMDE3NiwgMTIwMTgwLCAxMjAxODQsIAotICAgIDEyMDE4OCwgMTIwMTkyLCAxMjAxOTYsIDEyMDIwMCwgMTIwMjA0LCAxMjAyMDgsIDEyMDIxMiwgMTIwMjE2LCAxMjAyMjAsIAotICAgIDEyMDIyNCwgMTIwMjI4LCAxMjAyMzIsIDEyMDIzNiwgMTIwMjQwLCAxMjAyNDQsIDEyMDI0OCwgMTIwMjUyLCAxMjAyNTYsIAotICAgIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MiwgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgMTIwMjg4LCAxMjAyOTIsIAotICAgIDEyMDI5NiwgMTIwMzAwLCAxMjAzMDQsIDEyMDMwOCwgMTIwMzEyLCAxMjAzMTYsIDEyMDMyMCwgMTIwMzI0LCAxMjAzMjgsIAotICAgIDEyMDMzMiwgMTIwMzM2LCAxMjAzNDAsIDEyMDM0NCwgMTIwMzQ4LCAxMjAzNTIsIDEyMDM1NiwgMTIwMzYwLCAxMjAzNjQsIAotICAgIDEyMDM2OCwgMTIwMzcyLCAxMjAzNzYsIDEyMDM4MCwgMTIwMzg0LCAxMjAzODgsIDEyMDM5MiwgMTIwMzk2LCAxMjA0MDAsIAotICAgIDEyMDQwNCwgMTIwNDA4LCAxMjA0MTIsIDEyMDQxNiwgMTIwNDIwLCAxMjA0MjQsIDEyMDQyOCwgMTIwNDMyLCAxMjA0MzYsIAotICAgIDEyMDQ0MCwgMTIwNDQ0LCAxMjA0NDgsIDEyMDQ1MiwgMTIwNDU2LCAxMjA0NjAsIDEyMDQ2NCwgMTIwNDY4LCAxMjA0NzIsIAotICAgIDEyMDQ3NiwgMTIwNDgwLCAxMjA0ODQsIDEyMDQ4OCwgMTIwNDkyLCAxMjA0OTYsIDEyMDUwMCwgMTIwNTA0LCAxMjA1MDgsIAotICAgIDEyMDUxMiwgMTIwNTE2LCAxMjA1MjAsIDEyMDUyNCwgMTIwNTI4LCAxMjA1MzIsIDEyMDUzNiwgMTIwNTQwLCAxMjA1NDQsIAotICAgIDEyMDU0OCwgMTIwNTUyLCAxMjA1NTYsIDEyMDU2MCwgMTIwNTY0LCAxMjA1NjgsIDEyMDU3MiwgMTIwNTc2LCAxMjA1ODAsIAotICAgIDEyMDU4NCwgMTIwNTg4LCAxMjA1OTIsIDEyMDU5NiwgMTIwNjAwLCAxMjA2MDQsIDEyMDYwOCwgMTIwNjEyLCAxMjA2MTYsIAotICAgIDEyMDYyMCwgMTIwNjI0LCAxMjA2MjgsIDEyMDYzMiwgMTIwNjM2LCAxMjA2NDAsIDEyMDY0NCwgMTIwNjQ4LCAxMjA2NTIsIAotICAgIDEyMDY1NiwgMTIwNjYwLCAxMjA2NjQsIDEyMDY2OCwgMTIwNjcyLCAxMjA2NzYsIDEyMDY4MCwgMTIwNjg0LCAxMjA2ODgsIAotICAgIDEyMDY5MiwgMTIwNjk2LCAxMjA3MDAsIDEyMDcwNCwgMTIwNzA4LCAxMjA3MTIsIDEyMDcxNiwgMTIwNzIwLCAxMjA3MjQsIAotICAgIDEyMDcyOCwgMTIwNzMyLCAxMjA3MzYsIDEyMDc0MCwgMTIwNzQ0LCAxMjA3NDgsIDEyMDc1MiwgMTIwNzU2LCAxMjA3NjAsIAotICAgIDEyMDc2NCwgMTIwNzY4LCAxMjA3NzIsIDEyMDc3NiwgMTIwNzgwLCAxMjA3ODQsIDEyMDc4OCwgMTIwNzkyLCAxMjA3OTYsIAotICAgIDEyMDgwMCwgMTIwODA0LCAxMjA4MDgsIDEyMDgxMiwgMTIwODE2LCAxMjA4MjAsIDEyMDgyNCwgMTIwODI4LCAxMjA4MzIsIAotICAgIDEyMDgzNiwgMTIwODQwLCAxMjA4NDQsIDEyMDg0OCwgMTIwODUyLCAxMjA4NTYsIDEyMDg2MCwgMTIwODY0LCAxMjA4NjgsIAotICAgIDEyMDg3MiwgMTIwODc2LCAxMjA4ODAsIDEyMDg4NCwgMTIwODg4LCAxMjA4OTIsIDEyMDg5NiwgMTIwOTAwLCAxMjA5MDQsIAotICAgIDEyMDkwOCwgMTIwOTEyLCAxMjA5MTYsIDEyMDkyMCwgMTIwOTI0LCAxMjA5MjgsIDEyMDkzMiwgMTIwOTM2LCAxMjA5NDAsIAotICAgIDEyMDk0NCwgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIDEyMDk2OCwgMTIwOTcyLCAxMjA5NzYsIAotICAgIDEyMDk4MCwgMTIwOTg0LCAxMjA5ODgsIDEyMDk5MiwgMTIwOTk2LCAxMjEwMDAsIDEyMTAwNCwgMTIxMDA4LCAxMjEwMTIsIAotICAgIDEyMTAxNiwgMTIxMDIwLCAxMjEwMjQsIDEyMTAyOCwgMTIxMDMyLCAxMjEwMzYsIDEyMTA0MCwgMTIxMDQ0LCAxMjEwNDgsIAotICAgIDEyMTA1MiwgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzIsIDEyMTA3NiwgMTIxMDgwLCAxMjEwODQsIAotICAgIDEyMTA4OCwgMTIxMDkyLCAxMjEwOTYsIDEyMTEwMCwgMTIxMTA0LCAxMjExMDgsIDEyMTExMiwgMTIxMTE2LCAxMjExMjAsIAotICAgIDEyMTEyNCwgMTIxMTI4LCAxMjExMzIsIDEyMTEzNiwgMTIxMTQwLCAxMjExNDQsIDEyMTE0OCwgMTIxMTUyLCAxMjExNTYsIAotICAgIDEyMTE2MCwgMTIxMTY0LCAxMjExNjgsIDEyMTE3MiwgMTIxMTc2LCAxMjExODAsIDEyMTE4NCwgMTIxMTg4LCAxMjExOTIsIAotICAgIDEyMTE5NiwgMTIxMjAwLCAxMjEyMDQsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTYsIDEyMTIyMCwgMTIxMjI0LCAxMjEyMjgsIAotICAgIDEyMTIzMiwgMTIxMjM2LCAxMjEyNDAsIDEyMTI0NCwgMTIxMjQ4LCAxMjEyNTIsIDEyMTI1NiwgMTIxMjYwLCAxMjEyNjQsIAotICAgIDEyMTI2OCwgMTIxMjcyLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyODgsIDEyMTI5MiwgMTIxMjk2LCAxMjEzMDAsIAotICAgIDEyMTMwNCwgMTIxMzA4LCAxMjEzMTIsIDEyMTMxNiwgMTIxMzIwLCAxMjEzMjQsIDEyMTMyOCwgMTIxMzMyLCAxMjEzMzYsIAotICAgIDEyMTM0MCwgMTIxMzQ0LCAxMjEzNDgsIDEyMTM1MiwgMTIxMzU2LCAxMjEzNjAsIDEyMTM2NCwgMTIxMzY4LCAxMjEzNzIsIAotICAgIDEyMTM3NiwgMTIxMzgwLCAxMjEzODQsIDEyMTM4OCwgMTIxMzkyLCAxMjEzOTYsIDEyMTQwMCwgMTIxNDA0LCAxMjE0MDgsIAotICAgIDEyMTQxMiwgMTIxNDE2LCAxMjE0MjAsIDEyMTQyNCwgMTIxNDI4LCAxMjE0MzIsIDEyMTQzNiwgMTIxNDQwLCAxMjE0NDQsIAotICAgIDEyMTQ0OCwgMTIxNDUyLCAxMjE0NTYsIDEyMTQ2MCwgMTIxNDY0LCAxMjE0NjgsIDEyMTQ3MiwgMTIxNDc2LCAxMjE0ODAsIAotICAgIDEyMTQ4NCwgMTIxNDg4LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIAotICAgIDEyMTUyMCwgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIAotICAgIDEyMTU1NiwgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIAotICAgIDEyMTU5MiwgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIAotICAgIDEyMTYyOCwgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIAotICAgIDEyMTY2NCwgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIAotICAgIDEyMTcwMCwgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgMTIxNzE2LCAxMjE3MjAsIDEyMTcyNCwgMTIxNzI4LCAxMjE3MzIsIAotICAgIDEyMTczNiwgMTIxNzQwLCAxMjE3NDQsIDEyMTc0OCwgMTIxNzUyLCAxMjE3NTYsIDEyMTc2MCwgMTIxNzY0LCAxMjE3NjgsIAotICAgIDEyMTc3MiwgMTIxNzc2LCAxMjE3ODAsIDEyMTc4NCwgMTIxNzg4LCAxMjE3OTIsIDEyMTc5NiwgMTIxODAwLCAxMjE4MDQsIAotICAgIDEyMTgwOCwgMTIxODEyLCAxMjE4MTYsIDEyMTgyMCwgMTIxODI0LCAxMjE4MjgsIDEyMTgzMiwgMTIxODM2LCAxMjE4NDAsIAotICAgIDEyMTg0NCwgMTIxODQ4LCAxMjE4NTIsIDEyMTg1NiwgMTIxODYwLCAxMjE4NjQsIDEyMTg2OCwgMTIxODcyLCAxMjE4NzYsIAotICAgIDEyMTg4MCwgMTIxODg0LCAxMjE4ODgsIDEyMTg5MiwgMTIxODk2LCAxMjE5MDAsIDEyMTkwNCwgMTIxOTA4LCAxMjE5MTIsIAotICAgIDEyMTkxNiwgMTIxOTIwLCAxMjE5MjQsIDEyMTkyOCwgMTIxOTMyLCAxMjE5MzYsIDEyMTk0MCwgMTIxOTQ0LCAxMjE5NDgsIAotICAgIDEyMTk1MiwgMTIxOTU2LCAxMjE5NjAsIDEyMTk2NCwgMTIxOTY4LCAxMjE5NzIsIDEyMTk3NiwgMTIxOTgwLCAxMjE5ODQsIAotICAgIDEyMTk4OCwgMTIxOTkyLCAxMjE5OTYsIDEyMjAwMCwgMTIyMDA0LCAxMjIwMDgsIDEyMjAxMiwgMTIyMDE2LCAxMjIwMjAsIAotICAgIDEyMjAyNCwgMTIyMDI4LCAxMjIwMzIsIDEyMjAzNiwgMTIyMDQwLCAxMjIwNDQsIDEyMjA0OCwgMTIyMDUyLCAxMjIwNTYsIAotICAgIDEyMjA2MCwgMTIyMDY0LCAxMjIwNjgsIDEyMjA3MiwgMTIyMDc2LCAxMjIwODAsIDEyMjA4NCwgMTIyMDg4LCAxMjIwOTIsIAotICAgIDEyMjA5NiwgMTIyMTAwLCAxMjIxMDQsIDEyMjEwOCwgMTIyMTEyLCAxMjIxMTYsIDEyMjEyMCwgMTIyMTI0LCAxMjIxMjgsIAotICAgIDEyMjEzMiwgMTIyMTM2LCAxMjIxNDAsIDEyMjE0NCwgMTIyMTQ4LCAxMjIxNTIsIDEyMjE1NiwgMTIyMTYwLCAxMjIxNjQsIAotICAgIDEyMjE2OCwgMTIyMTcyLCAxMjIxNzYsIDEyMjE4MCwgMTIyMTg0LCAxMjIxODgsIDEyMjE5MiwgMTIyMTk2LCAxMjIyMDAsIAotICAgIDEyMjIwNCwgMTIyMjA4LCAxMjIyMTIsIDEyMjIxNiwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzYsIAotICAgIDEyMjI0MCwgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NCwgMTIyMjY4LCAxMjIyNzIsIAotICAgIDEyMjI3NiwgMTIyMjgwLCAxMjIyODQsIDEyMjI4OCwgMTIyMjkyLCAxMjIyOTYsIDEyMjMwMCwgMTIyMzA0LCAxMjIzMDgsIAotICAgIDEyMjMxMiwgMTIyMzE2LCAxMjIzMjAsIDEyMjMyNCwgMTIyMzI4LCAxMjIzMzIsIDEyMjMzNiwgMTIyMzQwLCAxMjIzNDQsIAotICAgIDEyMjM0OCwgMTIyMzUyLCAxMjIzNTYsIDEyMjM2MCwgMTIyMzY0LCAxMjIzNjgsIDEyMjM3MiwgMTIyMzc2LCAxMjIzODAsIAotICAgIDEyMjM4NCwgMTIyMzg4LCAxMjIzOTIsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDQsIDEyMjQwOCwgMTIyNDEyLCAxMjI0MTYsIAotICAgIDEyMjQyMCwgMTIyNDI0LCAxMjI0MjgsIDEyMjQzMiwgMTIyNDM2LCAxMjI0NDAsIDEyMjQ0NCwgMTIyNDQ4LCAxMjI0NTIsIAotICAgIDEyMjQ1NiwgMTIyNDYwLCAxMjI0NjQsIDEyMjQ2OCwgMTIyNDcyLCAxMjI0NzYsIDEyMjQ4MCwgMTIyNDg0LCAxMjI0ODgsIAotICAgIDEyMjQ5MiwgMTIyNDk2LCAxMjI1MDAsIDEyMjUwNCwgMTIyNTA4LCAxMjI1MTIsIDEyMjUxNiwgMTIyNTIwLCAxMjI1MjQsIAotICAgIDEyMjUyOCwgMTIyNTMyLCAxMjI1MzYsIDEyMjU0MCwgMTIyNTQ0LCAxMjI1NDgsIDEyMjU1MiwgMTIyNTU2LCAxMjI1NjAsIAotICAgIDEyMjU2NCwgMTIyNTY4LCAxMjI1NzIsIDEyMjU3NiwgMTIyNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA4MDAsIAorICAgIDEyMDgwNCwgMTIwODA4LCAxMjA4MTIsIDEyMDgxNiwgMTIwODIwLCAxMjA4MjQsIDEyMDgyOCwgMTIwODMyLCAxMjA4MzYsIAorICAgIDEyMDg0MCwgMTIwODQ0LCAxMjA4NDgsIDEyMDg1MiwgMTIwODU2LCAxMjA4NjAsIDEyMDg2NCwgMTIwODY4LCAxMjA4NzIsIAorICAgIDEyMDg3NiwgMTIwODgwLCAxMjA4ODQsIDEyMDg4OCwgMTIwODkyLCAxMjA4OTYsIDEyMDkwMCwgMTIwOTA0LCAxMjA5MDgsIAorICAgIDEyMDkxMiwgMTIwOTE2LCAxMjA5MjAsIDEyMDkyNCwgMTIwOTI4LCAxMjA5MzIsIDEyMDkzNiwgMTIwOTQwLCAxMjA5NDQsIAorICAgIDEyMDk0OCwgMTIwOTUyLCAxMjA5NTYsIDEyMDk2MCwgMTIwOTY0LCAxMjA5NjgsIDEyMDk3MiwgMTIwOTc2LCAxMjA5ODAsIAorICAgIDEyMDk4NCwgMTIwOTg4LCAxMjA5OTIsIDEyMDk5NiwgMTIxMDAwLCAxMjEwMDQsIDEyMTAwOCwgMTIxMDEyLCAxMjEwMTYsIAorICAgIDEyMTAyMCwgMTIxMDI0LCAxMjEwMjgsIDEyMTAzMiwgMTIxMDM2LCAxMjEwNDAsIDEyMTA0NCwgMTIxMDQ4LCAxMjEwNTIsIAorICAgIDEyMTA1NiwgMTIxMDYwLCAxMjEwNjQsIDEyMTA2OCwgMTIxMDcyLCAxMjEwNzYsIDEyMTA4MCwgMTIxMDg0LCAxMjEwODgsIAorICAgIDEyMTA5MiwgMTIxMDk2LCAxMjExMDAsIDEyMTEwNCwgMTIxMTA4LCAxMjExMTIsIDEyMTExNiwgMTIxMTIwLCAxMjExMjQsIAorICAgIDEyMTEyOCwgMTIxMTMyLCAxMjExMzYsIDEyMTE0MCwgMTIxMTQ0LCAxMjExNDgsIDEyMTE1MiwgMTIxMTU2LCAxMjExNjAsIAorICAgIDEyMTE2NCwgMTIxMTY4LCAxMjExNzIsIDEyMTE3NiwgMTIxMTgwLCAxMjExODQsIDEyMTE4OCwgMTIxMTkyLCAxMjExOTYsIAorICAgIDEyMTIwMCwgMTIxMjA0LCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE2LCAxMjEyMjAsIDEyMTIyNCwgMTIxMjI4LCAxMjEyMzIsIAorICAgIDEyMTIzNiwgMTIxMjQwLCAxMjEyNDQsIDEyMTI0OCwgMTIxMjUyLCAxMjEyNTYsIDEyMTI2MCwgMTIxMjY0LCAxMjEyNjgsIAorICAgIDEyMTI3MiwgMTIxMjc2LCAxMjEyODAsIDEyMTI4NCwgMTIxMjg4LCAxMjEyOTIsIDEyMTI5NiwgMTIxMzAwLCAxMjEzMDQsIAorICAgIDEyMTMwOCwgMTIxMzEyLCAxMjEzMTYsIDEyMTMyMCwgMTIxMzI0LCAxMjEzMjgsIDEyMTMzMiwgMTIxMzM2LCAxMjEzNDAsIAorICAgIDEyMTM0NCwgMTIxMzQ4LCAxMjEzNTIsIDEyMTM1NiwgMTIxMzYwLCAxMjEzNjQsIDEyMTM2OCwgMTIxMzcyLCAxMjEzNzYsIAorICAgIDEyMTM4MCwgMTIxMzg0LCAxMjEzODgsIDEyMTM5MiwgMTIxMzk2LCAxMjE0MDAsIDEyMTQwNCwgMTIxNDA4LCAxMjE0MTIsIAorICAgIDEyMTQxNiwgMTIxNDIwLCAxMjE0MjQsIDEyMTQyOCwgMTIxNDMyLCAxMjE0MzYsIDEyMTQ0MCwgMTIxNDQ0LCAxMjE0NDgsIAorICAgIDEyMTQ1MiwgMTIxNDU2LCAxMjE0NjAsIDEyMTQ2NCwgMTIxNDY4LCAxMjE0NzIsIDEyMTQ3NiwgMTIxNDgwLCAxMjE0ODQsIAorICAgIDEyMTQ4OCwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAxMjE1MjAsIAorICAgIDEyMTUyNCwgMTIxNTI4LCAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIAorICAgIDEyMTU2MCwgMTIxNTY0LCAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIAorICAgIDEyMTU5NiwgMTIxNjAwLCAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIAorICAgIDEyMTYzMiwgMTIxNjM2LCAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIAorICAgIDEyMTY2OCwgMTIxNjcyLCAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDEyMTY5MiwgMTIxNjk2LCAxMjE3MDAsIAorICAgIDEyMTcwNCwgMTIxNzA4LCAxMjE3MTIsIDEyMTcxNiwgMTIxNzIwLCAxMjE3MjQsIDEyMTcyOCwgMTIxNzMyLCAxMjE3MzYsIAorICAgIDEyMTc0MCwgMTIxNzQ0LCAxMjE3NDgsIDEyMTc1MiwgMTIxNzU2LCAxMjE3NjAsIDEyMTc2NCwgMTIxNzY4LCAxMjE3NzIsIAorICAgIDEyMTc3NiwgMTIxNzgwLCAxMjE3ODQsIDEyMTc4OCwgMTIxNzkyLCAxMjE3OTYsIDEyMTgwMCwgMTIxODA0LCAxMjE4MDgsIAorICAgIDEyMTgxMiwgMTIxODE2LCAxMjE4MjAsIDEyMTgyNCwgMTIxODI4LCAxMjE4MzIsIDEyMTgzNiwgMTIxODQwLCAxMjE4NDQsIAorICAgIDEyMTg0OCwgMTIxODUyLCAxMjE4NTYsIDEyMTg2MCwgMTIxODY0LCAxMjE4NjgsIDEyMTg3MiwgMTIxODc2LCAxMjE4ODAsIAorICAgIDEyMTg4NCwgMTIxODg4LCAxMjE4OTIsIDEyMTg5NiwgMTIxOTAwLCAxMjE5MDQsIDEyMTkwOCwgMTIxOTEyLCAxMjE5MTYsIAorICAgIDEyMTkyMCwgMTIxOTI0LCAxMjE5MjgsIDEyMTkzMiwgMTIxOTM2LCAxMjE5NDAsIDEyMTk0NCwgMTIxOTQ4LCAxMjE5NTIsIAorICAgIDEyMTk1NiwgMTIxOTYwLCAxMjE5NjQsIDEyMTk2OCwgMTIxOTcyLCAxMjE5NzYsIDEyMTk4MCwgMTIxOTg0LCAxMjE5ODgsIAorICAgIDEyMTk5MiwgMTIxOTk2LCAxMjIwMDAsIDEyMjAwNCwgMTIyMDA4LCAxMjIwMTIsIDEyMjAxNiwgMTIyMDIwLCAxMjIwMjQsIAorICAgIDEyMjAyOCwgMTIyMDMyLCAxMjIwMzYsIDEyMjA0MCwgMTIyMDQ0LCAxMjIwNDgsIDEyMjA1MiwgMTIyMDU2LCAxMjIwNjAsIAorICAgIDEyMjA2NCwgMTIyMDY4LCAxMjIwNzIsIDEyMjA3NiwgMTIyMDgwLCAxMjIwODQsIDEyMjA4OCwgMTIyMDkyLCAxMjIwOTYsIAorICAgIDEyMjEwMCwgMTIyMTA0LCAxMjIxMDgsIDEyMjExMiwgMTIyMTE2LCAxMjIxMjAsIDEyMjEyNCwgMTIyMTI4LCAxMjIxMzIsIAorICAgIDEyMjEzNiwgMTIyMTQwLCAxMjIxNDQsIDEyMjE0OCwgMTIyMTUyLCAxMjIxNTYsIDEyMjE2MCwgMTIyMTY0LCAxMjIxNjgsIAorICAgIDEyMjE3MiwgMTIyMTc2LCAxMjIxODAsIDEyMjE4NCwgMTIyMTg4LCAxMjIxOTIsIDEyMjE5NiwgMTIyMjAwLCAxMjIyMDQsIAorICAgIDEyMjIwOCwgMTIyMjEyLCAxMjIyMTYsIDEyMjIyMCwgMTIyMjI0LCAxMjIyMjgsIDEyMjIzMiwgMTIyMjM2LCAxMjIyNDAsIAorICAgIDEyMjI0NCwgMTIyMjQ4LCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAxMjIyNjQsIDEyMjI2OCwgMTIyMjcyLCAxMjIyNzYsIAorICAgIDEyMjI4MCwgMTIyMjg0LCAxMjIyODgsIDEyMjI5MiwgMTIyMjk2LCAxMjIzMDAsIDEyMjMwNCwgMTIyMzA4LCAxMjIzMTIsIAorICAgIDEyMjMxNiwgMTIyMzIwLCAxMjIzMjQsIDEyMjMyOCwgMTIyMzMyLCAxMjIzMzYsIDEyMjM0MCwgMTIyMzQ0LCAxMjIzNDgsIAorICAgIDEyMjM1MiwgMTIyMzU2LCAxMjIzNjAsIDEyMjM2NCwgMTIyMzY4LCAxMjIzNzIsIDEyMjM3NiwgMTIyMzgwLCAxMjIzODQsIAorICAgIDEyMjM4OCwgMTIyMzkyLCAxMjIzOTYsIDEyMjQwMCwgMTIyNDA0LCAxMjI0MDgsIDEyMjQxMiwgMTIyNDE2LCAxMjI0MjAsIAorICAgIDEyMjQyNCwgMTIyNDI4LCAxMjI0MzIsIDEyMjQzNiwgMTIyNDQwLCAxMjI0NDQsIDEyMjQ0OCwgMTIyNDUyLCAxMjI0NTYsIAorICAgIDEyMjQ2MCwgMTIyNDY0LCAxMjI0NjgsIDEyMjQ3MiwgMTIyNDc2LCAxMjI0ODAsIDEyMjQ4NCwgMTIyNDg4LCAxMjI0OTIsIAorICAgIDEyMjQ5NiwgMTIyNTAwLCAxMjI1MDQsIDEyMjUwOCwgMTIyNTEyLCAxMjI1MTYsIDEyMjUyMCwgMTIyNTI0LCAxMjI1MjgsIAorICAgIDEyMjUzMiwgMTIyNTM2LCAxMjI1NDAsIDEyMjU0NCwgMTIyNTQ4LCAxMjI1NTIsIDEyMjU1NiwgMTIyNTYwLCAxMjI1NjQsIAorICAgIDEyMjU2OCwgMTIyNTcyLCAxMjI1NzYsIDEyMjU4MCwgMTIyNTg0LCAxMjI1ODgsIDEyMjU5MiwgMTIyNTk2LCAxMjI2MDAsIAorICAgIDEyMjYwNCwgMTIyNjA4LCAxMjI2MTIsIDEyMjYxNiwgMTIyNjIwLCAxMjI2MjQsIDEyMjYyOCwgMTIyNjMyLCAxMjI2MzYsIAorICAgIDEyMjY0MCwgMTIyNjQ0LCAxMjI2NDgsIDEyMjY1MiwgMTIyNjU2LCAxMjI2NjAsIDEyMjY2NCwgMTIyNjY4LCAxMjI2NzIsIAorICAgIDEyMjY3NiwgMTIyNjgwLCAxMjI2ODQsIDEyMjY4OCwgMTIyNjkyLCAxMjI2OTYsIDEyMjcwMCwgMTIyNzA0LCAxMjI3MDgsIAorICAgIDEyMjcxMiwgMTIyNzE2LCAxMjI3MjAsIDEyMjcyNCwgMTIyNzI4LCAxMjI3MzIsIDEyMjczNiwgMTIyNzQwLCAxMjI3NDQsIAorICAgIDEyMjc0OCwgMTIyNzUyLCAxMjI3NTYsIDEyMjc2MCwgMTIyNzY0LCAxMjI3NjgsIDEyMjc3MiwgMTIyNzc2LCAxMjI3ODAsIAorICAgIDEyMjc4NCwgMTIyNzg4LCAxMjI3OTIsIDEyMjc5NiwgMTIyODAwLCAxMjI4MDQsIDEyMjgwOCwgMTIyODEyLCAxMjI4MTYsIAorICAgIDEyMjgyMCwgMTIyODI0LCAxMjI4MjgsIDEyMjgzMiwgMTIyODM2LCAxMjI4NDAsIDEyMjg0NCwgMTIyODQ4LCAxMjI4NTIsIAorICAgIDEyMjg1NiwgMTIyODYwLCAxMjI4NjQsIDEyMjg2OCwgMTIyODcyLCAxMjI4NzYsIDEyMjg4MCwgMTIyODg0LCAxMjI4ODgsIAorICAgIDEyMjg5MiwgMTIyODk2LCAxMjI5MDAsIDEyMjkwNCwgMTIyOTA4LCAxMjI5MTIsIDEyMjkxNiwgMTIyOTIwLCAxMjI5MjQsIAorICAgIDEyMjkyOCwgMTIyOTMyLCAxMjI5MzYsIDEyMjk0MCwgMTIyOTQ0LCAxMjI5NDgsIDEyMjk1MiwgMTIyOTU2LCAxMjI5NjAsIAorICAgIDEyMjk2NCwgMTIyOTY4LCAxMjI5NzIsIDEyMjk3NiwgMTIyOTgwLCAxMjI5ODQsIDEyMjk4OCwgMTIyOTkyLCAxMjI5OTYsIAorICAgIDEyMzAwMCwgMTIzMDA0LCAxMjMwMDgsIDEyMzAxMiwgMTIzMDE2LCAxMjMwMjAsIDEyMzAyNCwgMTIzMDI4LCAxMjMwMzIsIAorICAgIDEyMzAzNiwgMTIzMDQwLCAxMjMwNDQsIDEyMzA0OCwgMTIzMDUyLCAxMjMwNTYsIDEyMzA2MCwgMTIzMDY0LCAxMjMwNjgsIAorICAgIDEyMzA3MiwgMTIzMDc2LCAxMjMwODAsIDEyMzA4NCwgMTIzMDg4LCAxMjMwOTIsIDEyMzA5NiwgMTIzMTAwLCAxMjMxMDQsIAorICAgIDEyMzEwOCwgMTIzMTEyLCAxMjMxMTYsIDEyMzEyMCwgMTIzMTI0LCAxMjMxMjgsIDEyMzEzMiwgMTIzMTM2LCAxMjMxNDAsIAorICAgIDEyMzE0NCwgMTIzMTQ4LCAxMjMxNTIsIDEyMzE1NiwgMTIzMTYwLCAxMjMxNjQsIDEyMzE2OCwgMTIzMTcyLCAxMjMxNzYsIAorICAgIDEyMzE4MCwgMTIzMTg0LCAxMjMxODgsIDEyMzE5MiwgMTIzMTk2LCAxMjMyMDAsIDEyMzIwNCwgMTIzMjA4LCAxMjMyMTIsIAorICAgIDEyMzIxNiwgMTIzMjIwLCAxMjMyMjQsIDEyMzIyOCwgMTIzMjMyLCAxMjMyMzYsIDEyMzI0MCwgMTIzMjQ0LCAxMjMyNDgsIAorICAgIDEyMzI1MiwgMTIzMjU2LCAxMjMyNjAsIDEyMzI2NCwgMTIzMjY4LCAxMjMyNzIsIDEyMzI3NiwgMTIzMjgwLCAxMjMyODQsIAorICAgIDEyMzI4OCwgMTIzMjkyLCAxMjMyOTYsIDEyMzMwMCwgMTIzMzA0LCAxMjMzMDgsIDEyMzMxMiwgMTIzMzE2LCAxMjMzMjAsIAorICAgIDEyMzMyNCwgMTIzMzI4LCAxMjMzMzIsIDEyMzMzNiwgMTIzMzQwLCAxMjMzNDQsIDEyMzM0OCwgMTIzMzUyLCAxMjMzNTYsIAorICAgIDEyMzM2MCwgMTIzMzY0LCAxMjMzNjgsIDEyMzM3MiwgMTIzMzc2LCAxMjMzODAsIDEyMzM4NCwgMTIzMzg4LCAxMjMzOTIsIAorICAgIDEyMzM5NiwgMTIzNDAwLCAxMjM0MDQsIDEyMzQwOCwgMTIzNDEyLCAxMjM0MTYsIDEyMzQyMCwgMTIzNDI0LCAxMjM0MjgsIAorICAgIDEyMzQzMiwgMTIzNDM2LCAxMjM0NDAsIDEyMzQ0NCwgMTIzNDQ4LCAxMjM0NTIsIDEyMzQ1NiwgMTIzNDYwLCAxMjM0NjQsIAorICAgIDEyMzQ2OCwgMTIzNDcyLCAxMjM0NzYsIDEyMzQ4MCwgMTIzNDg0LCAxMjM0ODgsIDEyMzQ5MiwgMTIzNDk2LCAxMjM1MDAsIAorICAgIDEyMzUwNCwgMTIzNTA4LCAxMjM1MTIsIDEyMzUxNiwgMTIzNTIwLCAxMjM1MjQsIDEyMzUyOCwgMTIzNTMyLCAxMjM1MzYsIAorICAgIDEyMzU0MCwgMTIzNTQ0LCAxMjM1NDgsIDEyMzU1MiwgMTIzNTU2LCAxMjM1NjAsIDEyMzU2NCwgMTIzNTY4LCAxMjM1NzIsIAorICAgIDEyMzU3NiwgMTIzNTgwLCAxMjM1ODQsIDEyMzU4OCwgMTIzNTkyLCAxMjM1OTYsIDEyMzYwMCwgMTIzNjA0LCAxMjM2MDgsIAorICAgIDEyMzYxMiwgMTIzNjE2LCAxMjM2MjAsIDEyMzYyNCwgMTIzNjI4LCAxMjM2MzIsIDEyMzYzNiwgMTIzNjQwLCAxMjM2NDQsIAorICAgIDEyMzY0OCwgMTIzNjUyLCAxMjM2NTYsIDEyMzY2MCwgMTIzNjY0LCAxMjM2NjgsIDEyMzY3MiwgMTIzNjc2LCAxMjM2ODAsIAorICAgIDEyMzY4NCwgMTIzNjg4LCAxMjM2OTIsIDEyMzY5NiwgMTIzNzAwLCAxMjM3MDQsIDEyMzcwOCwgMTIzNzEyLCAxMjM3MTYsIAorICAgIDEyMzcyMCwgMTIzNzI0LCAxMjM3MjgsIDEyMzczMiwgMTIzNzM2LCAxMjM3NDAsIDEyMzc0NCwgMTIzNzQ4LCAxMjM3NTIsIAorICAgIDEyMzc1NiwgMTIzNzYwLCAxMjM3NjQsIDEyMzc2OCwgMTIzNzcyLCAxMjM3NzYsIDEyMzc4MCwgMTIzNzg0LCAxMjM3ODgsIAorICAgIDEyMzc5MiwgMTIzNzk2LCAxMjM4MDAsIDEyMzgwNCwgMTIzODA4LCAxMjM4MTIsIDEyMzgxNiwgMTIzODIwLCAxMjM4MjQsIAorICAgIDEyMzgyOCwgMTIzODMyLCAxMjM4MzYsIDEyMzg0MCwgMTIzODQ0LCAxMjM4NDgsIDEyMzg1MiwgMTIzODU2LCAxMjM4NjAsIAorICAgIDEyMzg2NCwgMTIzODY4LCAxMjM4NzIsIDEyMzg3NiwgMTIzODgwLCAxMjM4ODQsIDEyMzg4OCwgMTIzODkyLCAxMjM4OTYsIAorICAgIDEyMzkwMCwgMTIzOTA0LCAxMjM5MDgsIDEyMzkxMiwgMTIzOTE2LCAxMjM5MjAsIDEyMzkyNCwgMTIzOTI4LCAxMjM5MzIsIAorICAgIDEyMzkzNiwgMTIzOTQwLCAxMjM5NDQsIDEyMzk0OCwgMTIzOTUyLCAxMjM5NTYsIDEyMzk2MCwgMTIzOTY0LCAxMjM5NjgsIAorICAgIDEyMzk3MiwgMTIzOTc2LCAxMjM5ODAsIDEyMzk4NCwgMTIzOTg4LCAxMjM5OTIsIDEyMzk5NiwgMTI0MDAwLCAxMjQwMDQsIAorICAgIDEyNDAwOCwgMTI0MDEyLCAxMjQwMTYsIDEyNDAyMCwgMTI0MDI0LCAxMjQwMjgsIDEyNDAzMiwgMTI0MDM2LCAxMjQwNDAsIAorICAgIDEyNDA0NCwgMTI0MDQ4LCAxMjQwNTIsIDEyNDA1NiwgMTI0MDYwLCAxMjQwNjQsIDEyNDA2OCwgMTI0MDcyLCAxMjQwNzYsIAorICAgIDEyNDA4MCwgMTI0MDg0LCAxMjQwODgsIDEyNDA5MiwgMTI0MDk2LCAxMjQxMDAsIDEyNDEwNCwgMTI0MTA4LCAxMjQxMTIsIAorICAgIDEyNDExNiwgMTI0MTIwLCAxMjQxMjQsIDEyNDEyOCwgMTI0MTMyLCAxMjQxMzYsIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIAorICAgIDEyNDE1MiwgMTI0MTU2LCAxMjQxNjAsIDEyNDE2NCwgMTI0MTY4LCAxMjQxNzIsIDEyNDE3NiwgMTI0MTgwLCAxMjQxODQsIAorICAgIDEyNDE4OCwgMTI0MTkyLCAxMjQxOTYsIDEyNDIwMCwgMTI0MjA0LCAxMjQyMDgsIDEyNDIxMiwgMTI0MjE2LCAxMjQyMjAsIAorICAgIDEyNDIyNCwgMTI0MjI4LCAxMjQyMzIsIDEyNDIzNiwgMTI0MjQwLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIAorICAgIDEyNDI2MCwgMTI0MjY0LCAxMjQyNjgsIDEyNDI3MiwgMTI0Mjc2LCAxMjQyODAsIDEyNDI4NCwgMTI0Mjg4LCAxMjQyOTIsIAorICAgIDEyNDI5NiwgMTI0MzAwLCAxMjQzMDQsIDEyNDMwOCwgMTI0MzEyLCAxMjQzMTYsIDEyNDMyMCwgMTI0MzI0LCAxMjQzMjgsIAorICAgIDEyNDMzMiwgMTI0MzM2LCAxMjQzNDAsIDEyNDM0NCwgMTI0MzQ4LCAxMjQzNTIsIDEyNDM1NiwgMTI0MzYwLCAxMjQzNjQsIAorICAgIDEyNDM2OCwgMTI0MzcyLCAxMjQzNzYsIDEyNDM4MCwgMTI0Mzg0LCAxMjQzODgsIDEyNDM5MiwgMTI0Mzk2LCAxMjQ0MDAsIAorICAgIDEyNDQwNCwgMTI0NDA4LCAxMjQ0MTIsIDEyNDQxNiwgMTI0NDIwLCAxMjQ0MjQsIDEyNDQyOCwgMTI0NDMyLCAxMjQ0MzYsIAorICAgIDEyNDQ0MCwgMTI0NDQ0LCAxMjQ0NDgsIDEyNDQ1MiwgMTI0NDU2LCAxMjQ0NjAsIDEyNDQ2NCwgMTI0NDY4LCAxMjQ0NzIsIAorICAgIDEyNDQ3NiwgMTI0NDgwLCAxMjQ0ODQsIDEyNDQ4OCwgMTI0NDkyLCAxMjQ0OTYsIDEyNDUwMCwgMTI0NTA0LCAxMjQ1MDgsIAorICAgIDEyNDUxMiwgMTI0NTE2LCAxMjQ1MjAsIDEyNDUyNCwgMTI0NTI4LCAxMjQ1MzIsIDEyNDUzNiwgMTI0NTQwLCAxMjQ1NDQsIAorICAgIDEyNDU0OCwgMTI0NTUyLCAxMjQ1NTYsIDEyNDU2MCwgMTI0NTY0LCAxMjQ1NjgsIDEyNDU3MiwgMTI0NTc2LCAxMjQ1ODAsIAorICAgIDEyNDU4NCwgMTI0NTg4LCAxMjQ1OTIsIDEyNDU5NiwgMTI0NjAwLCAxMjQ2MDQsIDEyNDYwOCwgMTI0NjEyLCAxMjQ2MTYsIAorICAgIDEyNDYyMCwgMTI0NjI0LCAxMjQ2MjgsIDEyNDYzMiwgMTI0NjM2LCAxMjQ2NDAsIDEyNDY0NCwgMTI0NjQ4LCAxMjQ2NTIsIAorICAgIDEyNDY1NiwgMTI0NjYwLCAxMjQ2NjQsIDEyNDY2OCwgMTI0NjcyLCAxMjQ2NzYsIDEyNDY4MCwgMTI0Njg0LCAxMjQ2ODgsIAorICAgIDEyNDY5MiwgMTI0Njk2LCAxMjQ3MDAsIDEyNDcwNCwgMTI0NzA4LCAxMjQ3MTIsIDEyNDcxNiwgMTI0NzIwLCAxMjQ3MjQsIAorICAgIDEyNDcyOCwgMTI0NzMyLCAxMjQ3MzYsIDEyNDc0MCwgMTI0NzQ0LCAxMjQ3NDgsIDEyNDc1MiwgMTI0NzU2LCAxMjQ3NjAsIAorICAgIDEyNDc2NCwgMTI0NzY4LCAxMjQ3NzIsIDEyNDc3NiwgMTI0NzgwLCAxMjQ3ODQsIDEyNDc4OCwgMTI0NzkyLCAxMjQ3OTYsIAorICAgIDEyNDgwMCwgMTI0ODA0LCAxMjQ4MDgsIDEyNDgxMiwgMTI0ODE2LCAxMjQ4MjAsIDEyNDgyNCwgMTI0ODI4LCAxMjQ4MzIsIAorICAgIDEyNDgzNiwgMTI0ODQwLCAxMjQ4NDQsIDEyNDg0OCwgMTI0ODUyLCAxMjQ4NTYsIDEyNDg2MCwgMTI0ODY0LCAxMjQ4NjgsIAorICAgIDEyNDg3MiwgMTI0ODc2LCAxMjQ4ODAsIDEyNDg4NCwgMTI0ODg4LCAxMjQ4OTIsIDEyNDg5NiwgMTI0OTAwLCAxMjQ5MDQsIAorICAgIDEyNDkwOCwgMTI0OTEyLCAxMjQ5MTYsIDEyNDkyMCwgMTI0OTI0LCAxMjQ5MjgsIDEyNDkzMiwgMTI0OTM2LCAxMjQ5NDAsIAorICAgIDEyNDk0NCwgMTI0OTQ4LCAxMjQ5NTIsIDEyNDk1NiwgMTI0OTYwLCAxMjQ5NjQsIDEyNDk2OCwgMTI0OTcyLCAxMjQ5NzYsIAorICAgIDEyNDk4MCwgMTI0OTg0LCAxMjQ5ODgsIDEyNDk5MiwgMTI0OTk2LCAxMjUwMDAsIDEyNTAwNCwgMTI1MDA4LCAxMjUwMTIsIAorICAgIDEyNTAxNiwgMTI1MDIwLCAxMjUwMjQsIDEyNTAyOCwgMTI1MDMyLCAxMjUwMzYsIDEyNTA0MCwgMTI1MDQ0LCAxMjUwNDgsIAorICAgIDEyNTA1MiwgMTI1MDU2LCAxMjUwNjAsIDEyNTA2NCwgMTI1MDY4LCAxMjUwNzIsIDEyNTA3NiwgMTI1MDgwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5MjI4LDcxICsyMDM4Myw3MiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjU4NCwgMTIyNTg4LCAxMjI1OTIsIDEyMjU5NiwgMTIyNjAwLCAxMjI2MDQsIDEyMjYwOCwgCi0gICAgMTIyNjEyLCAxMjI2MTYsIDEyMjYyMCwgMTIyNjI0LCAxMjI2MjgsIDEyMjYzMiwgMTIyNjM2LCAxMjI2NDAsIDEyMjY0NCwgCi0gICAgMTIyNjQ4LCAxMjI2NTIsIDEyMjY1NiwgMTIyNjYwLCAxMjI2NjQsIDEyMjY2OCwgMTIyNjcyLCAxMjI2NzYsIDEyMjY4MCwgCi0gICAgMTIyNjg0LCAxMjI2ODgsIDEyMjY5MiwgMTIyNjk2LCAxMjI3MDAsIDEyMjcwNCwgMTIyNzA4LCAxMjI3MTIsIDEyMjcxNiwgCi0gICAgMTIyNzIwLCAxMjI3MjQsIDEyMjcyOCwgMTIyNzMyLCAxMjI3MzYsIDEyMjc0MCwgMTIyNzQ0LCAxMjI3NDgsIDEyMjc1MiwgCi0gICAgMTIyNzU2LCAxMjI3NjAsIDEyMjc2NCwgMTIyNzY4LCAxMjI3NzIsIDEyMjc3NiwgMTIyNzgwLCAxMjI3ODQsIDEyMjc4OCwgCi0gICAgMTIyNzkyLCAxMjI3OTYsIDEyMjgwMCwgMTIyODA0LCAxMjI4MDgsIDEyMjgxMiwgMTIyODE2LCAxMjI4MjAsIDEyMjgyNCwgCi0gICAgMTIyODI4LCAxMjI4MzIsIDEyMjgzNiwgMTIyODQwLCAxMjI4NDQsIDEyMjg0OCwgMTIyODUyLCAxMjI4NTYsIDEyMjg2MCwgCi0gICAgMTIyODY0LCAxMjI4NjgsIDEyMjg3MiwgMTIyODc2LCAxMjI4ODAsIDEyMjg4NCwgMTIyODg4LCAxMjI4OTIsIDEyMjg5NiwgCi0gICAgMTIyOTAwLCAxMjI5MDQsIDEyMjkwOCwgMTIyOTEyLCAxMjI5MTYsIDEyMjkyMCwgMTIyOTI0LCAxMjI5MjgsIDEyMjkzMiwgCi0gICAgMTIyOTM2LCAxMjI5NDAsIDEyMjk0NCwgMTIyOTQ4LCAxMjI5NTIsIDEyMjk1NiwgMTIyOTYwLCAxMjI5NjQsIDEyMjk2OCwgCi0gICAgMTIyOTcyLCAxMjI5NzYsIDEyMjk4MCwgMTIyOTg0LCAxMjI5ODgsIDEyMjk5MiwgMTIyOTk2LCAxMjMwMDAsIDEyMzAwNCwgCi0gICAgMTIzMDA4LCAxMjMwMTIsIDEyMzAxNiwgMTIzMDIwLCAxMjMwMjQsIDEyMzAyOCwgMTIzMDMyLCAxMjMwMzYsIDEyMzA0MCwgCi0gICAgMTIzMDQ0LCAxMjMwNDgsIDEyMzA1MiwgMTIzMDU2LCAxMjMwNjAsIDEyMzA2NCwgMTIzMDY4LCAxMjMwNzIsIDEyMzA3NiwgCi0gICAgMTIzMDgwLCAxMjMwODQsIDEyMzA4OCwgMTIzMDkyLCAxMjMwOTYsIDEyMzEwMCwgMTIzMTA0LCAxMjMxMDgsIDEyMzExMiwgCi0gICAgMTIzMTE2LCAxMjMxMjAsIDEyMzEyNCwgMTIzMTI4LCAxMjMxMzIsIDEyMzEzNiwgMTIzMTQwLCAxMjMxNDQsIDEyMzE0OCwgCi0gICAgMTIzMTUyLCAxMjMxNTYsIDEyMzE2MCwgMTIzMTY0LCAxMjMxNjgsIDEyMzE3MiwgMTIzMTc2LCAxMjMxODAsIDEyMzE4NCwgCi0gICAgMTIzMTg4LCAxMjMxOTIsIDEyMzE5NiwgMTIzMjAwLCAxMjMyMDQsIDEyMzIwOCwgMTIzMjEyLCAxMjMyMTYsIDEyMzIyMCwgCi0gICAgMTIzMjI0LCAxMjMyMjgsIDEyMzIzMiwgMTIzMjM2LCAxMjMyNDAsIDEyMzI0NCwgMTIzMjQ4LCAxMjMyNTIsIDEyMzI1NiwgCi0gICAgMTIzMjYwLCAxMjMyNjQsIDEyMzI2OCwgMTIzMjcyLCAxMjMyNzYsIDEyMzI4MCwgMTIzMjg0LCAxMjMyODgsIDEyMzI5MiwgCi0gICAgMTIzMjk2LCAxMjMzMDAsIDEyMzMwNCwgMTIzMzA4LCAxMjMzMTIsIDEyMzMxNiwgMTIzMzIwLCAxMjMzMjQsIDEyMzMyOCwgCi0gICAgMTIzMzMyLCAxMjMzMzYsIDEyMzM0MCwgMTIzMzQ0LCAxMjMzNDgsIDEyMzM1MiwgMTIzMzU2LCAxMjMzNjAsIDEyMzM2NCwgCi0gICAgMTIzMzY4LCAxMjMzNzIsIDEyMzM3NiwgMTIzMzgwLCAxMjMzODQsIDEyMzM4OCwgMTIzMzkyLCAxMjMzOTYsIDEyMzQwMCwgCi0gICAgMTIzNDA0LCAxMjM0MDgsIDEyMzQxMiwgMTIzNDE2LCAxMjM0MjAsIDEyMzQyNCwgMTIzNDI4LCAxMjM0MzIsIDEyMzQzNiwgCi0gICAgMTIzNDQwLCAxMjM0NDQsIDEyMzQ0OCwgMTIzNDUyLCAxMjM0NTYsIDEyMzQ2MCwgMTIzNDY0LCAxMjM0NjgsIDEyMzQ3MiwgCi0gICAgMTIzNDc2LCAxMjM0ODAsIDEyMzQ4NCwgMTIzNDg4LCAxMjM0OTIsIDEyMzQ5NiwgMTIzNTAwLCAxMjM1MDQsIDEyMzUwOCwgCi0gICAgMTIzNTEyLCAxMjM1MTYsIDEyMzUyMCwgMTIzNTI0LCAxMjM1MjgsIDEyMzUzMiwgMTIzNTM2LCAxMjM1NDAsIDEyMzU0NCwgCi0gICAgMTIzNTQ4LCAxMjM1NTIsIDEyMzU1NiwgMTIzNTYwLCAxMjM1NjQsIDEyMzU2OCwgMTIzNTcyLCAxMjM1NzYsIDEyMzU4MCwgCi0gICAgMTIzNTg0LCAxMjM1ODgsIDEyMzU5MiwgMTIzNTk2LCAxMjM2MDAsIDEyMzYwNCwgMTIzNjA4LCAxMjM2MTIsIDEyMzYxNiwgCi0gICAgMTIzNjIwLCAxMjM2MjQsIDEyMzYyOCwgMTIzNjMyLCAxMjM2MzYsIDEyMzY0MCwgMTIzNjQ0LCAxMjM2NDgsIDEyMzY1MiwgCi0gICAgMTIzNjU2LCAxMjM2NjAsIDEyMzY2NCwgMTIzNjY4LCAxMjM2NzIsIDEyMzY3NiwgMTIzNjgwLCAxMjM2ODQsIDEyMzY4OCwgCi0gICAgMTIzNjkyLCAxMjM2OTYsIDEyMzcwMCwgMTIzNzA0LCAxMjM3MDgsIDEyMzcxMiwgMTIzNzE2LCAxMjM3MjAsIDEyMzcyNCwgCi0gICAgMTIzNzI4LCAxMjM3MzIsIDEyMzczNiwgMTIzNzQwLCAxMjM3NDQsIDEyMzc0OCwgMTIzNzUyLCAxMjM3NTYsIDEyMzc2MCwgCi0gICAgMTIzNzY0LCAxMjM3NjgsIDEyMzc3MiwgMTIzNzc2LCAxMjM3ODAsIDEyMzc4NCwgMTIzNzg4LCAxMjM3OTIsIDEyMzc5NiwgCi0gICAgMTIzODAwLCAxMjM4MDQsIDEyMzgwOCwgMTIzODEyLCAxMjM4MTYsIDEyMzgyMCwgMTIzODI0LCAxMjM4MjgsIDEyMzgzMiwgCi0gICAgMTIzODM2LCAxMjM4NDAsIDEyMzg0NCwgMTIzODQ4LCAxMjM4NTIsIDEyMzg1NiwgMTIzODYwLCAxMjM4NjQsIDEyMzg2OCwgCi0gICAgMTIzODcyLCAxMjM4NzYsIDEyMzg4MCwgMTIzODg0LCAxMjM4ODgsIDEyMzg5MiwgMTIzODk2LCAxMjM5MDAsIDEyMzkwNCwgCi0gICAgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNiwgMTIzOTIwLCAxMjM5MjQsIDEyMzkyOCwgMTIzOTMyLCAxMjM5MzYsIDEyMzk0MCwgCi0gICAgMTIzOTQ0LCAxMjM5NDgsIDEyMzk1MiwgMTIzOTU2LCAxMjM5NjAsIDEyMzk2NCwgMTIzOTY4LCAxMjM5NzIsIDEyMzk3NiwgCi0gICAgMTIzOTgwLCAxMjM5ODQsIDEyMzk4OCwgMTIzOTkyLCAxMjM5OTYsIDEyNDAwMCwgMTI0MDA0LCAxMjQwMDgsIDEyNDAxMiwgCi0gICAgMTI0MDE2LCAxMjQwMjAsIDEyNDAyNCwgMTI0MDI4LCAxMjQwMzIsIDEyNDAzNiwgMTI0MDQwLCAxMjQwNDQsIDEyNDA0OCwgCi0gICAgMTI0MDUyLCAxMjQwNTYsIDEyNDA2MCwgMTI0MDY0LCAxMjQwNjgsIDEyNDA3MiwgMTI0MDc2LCAxMjQwODAsIDEyNDA4NCwgCi0gICAgMTI0MDg4LCAxMjQwOTIsIDEyNDA5NiwgMTI0MTAwLCAxMjQxMDQsIDEyNDEwOCwgMTI0MTEyLCAxMjQxMTYsIDEyNDEyMCwgCi0gICAgMTI0MTI0LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM2LCAxMjQxNDAsIDEyNDE0NCwgMTI0MTQ4LCAxMjQxNTIsIDEyNDE1NiwgCi0gICAgMTI0MTYwLCAxMjQxNjQsIDEyNDE2OCwgMTI0MTcyLCAxMjQxNzYsIDEyNDE4MCwgMTI0MTg0LCAxMjQxODgsIDEyNDE5MiwgCi0gICAgMTI0MTk2LCAxMjQyMDAsIDEyNDIwNCwgMTI0MjA4LCAxMjQyMTIsIDEyNDIxNiwgMTI0MjIwLCAxMjQyMjQsIDEyNDIyOCwgCi0gICAgMTI0MjMyLCAxMjQyMzYsIDEyNDI0MCwgMTI0MjQ0LCAxMjQyNDgsIDEyNDI1MiwgMTI0MjU2LCAxMjQyNjAsIDEyNDI2NCwgCi0gICAgMTI0MjY4LCAxMjQyNzIsIDEyNDI3NiwgMTI0MjgwLCAxMjQyODQsIDEyNDI4OCwgMTI0MjkyLCAxMjQyOTYsIDEyNDMwMCwgCi0gICAgMTI0MzA0LCAxMjQzMDgsIDEyNDMxMiwgMTI0MzE2LCAxMjQzMjYsIDEyNDMzMCwgMTI0MzM0LCAxMjQzMzgsIDEyNDM0MiwgCi0gICAgMTI0MzQ2LCAxMjQzNTAsIDEyNDM1NCwgMTI0MzU4LCAxMjQzNjIsIDEyNDM2NiwgMTI0MzcwLCAxMjQzNzUsIDEyNDM3OSwgCi0gICAgMTI0MzgzLCAxMjQzODcsIDEyNDM5MSwgMTI0Mzk1LCAxMjQzOTksIDEyNDQwMywgMTI0NDA3LCAxMjQ0MTEsIDEyNDQxNSwgCi0gICAgMTI0NDE5LCAxMjQ0MjMsIDEyNDQyNywgMTI0NDMxLCAxMjQ0MzUsIDEyNDQzOSwgMTI0NDQ4LCAxMjQ0NTcsIDEyNDQ2MSwgCi0gICAgMTI0NDY1LCAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgCi0gICAgMTI0NTAxLCAxMjQ1MDUsIDEyNDUwOSwgMTI0NTEzLCAxMjQ1MTcsIDEyNDUyMSwgMTI0NTI1LCAxMjQ1MjksIDEyNDUzMywgCi0gICAgMTI0NTM3LCAxMjQ1NDEsIDEyNDU0NSwgMTI0NTQ5LCAxMjQ1NTMsIDEyNDU1NywgMTI0NTYxLCAxMjQ1NjUsIDEyNDU2OSwgCi0gICAgMTI0NTczLCAxMjQ1NzcsIDEyNDU4MSwgMTI0NTg1LCAxMjQ1ODksIDEyNDU5MywgMTI0NTk3LCAxMjQ2MDEsIDEyNDYwNSwgCi0gICAgMTI0NjA5LCAxMjQ2MTMsIDEyNDYxNywgMTI0NjIxLCAxMjQ2MjUsIDEyNDYyOSwgMTI0NjMzLCAxMjQ2MzcsIDEyNDY0MSwgCi0gICAgMTI0NjQ1LCAxMjQ2NDksIDEyNDY1MywgMTI0NjU3LCAxMjQ2NjEsIDEyNDY2NSwgMTI0NjY5LCAxMjQ2NzMsIDEyNDY3NywgCi0gICAgMTI0NjgxLCAxMjQ2ODUsIDEyNDY4OSwgMTI0NjkzLCAxMjQ2OTcsIDEyNDcwMSwgMTI0NzA1LCAxMjQ3MDksIDEyNDcxMywgCi0gICAgMTI0NzE3LCAxMjQ3MjEsIDEyNDcyNSwgMTI0NzI5LCAxMjQ3MzMsIDEyNDczNywgMTI0NzQxLCAxMjQ3NDUsIDEyNDc0OSwgCi0gICAgMTI0NzUzLCAxMjQ3NTcsIDEyNDc2MSwgMTI0NzY1LCAxMjQ3NjksIDEyNDc3MywgMTI0Nzc3LCAxMjQ3ODEsIDEyNDc4NSwgCi0gICAgMTI0Nzg5LCAxMjQ3OTMsIDEyNDc5NywgMTI0ODAxLCAxMjQ4MDUsIDEyNDgwOSwgMTI0ODEzLCAxMjQ4MTcsIDEyNDgyMSwgCi0gICAgMTI0ODI1LCAxMjQ4MjksIDEyNDgzMywgMTI0ODM3LCAxMjQ4NDEsIDEyNDg0NSwgMTI0ODQ5LCAxMjQ4NTMsIDEyNDg1NywgCi0gICAgMTI0ODYxLCAxMjQ4NjUsIDEyNDg2OSwgMTI0ODczLCAxMjQ4NzcsIDEyNDg4MSwgMTI0ODg1LCAxMjQ4ODksIDEyNDg5MywgCi0gICAgMTI0ODk3LCAxMjQ5MDEsIDEyNDkwNSwgMTI0OTA5LCAxMjQ5MTMsIDEyNDkxNywgMTI0OTIxLCAxMjQ5MjUsIDEyNDkyOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1MDg0LCAxMjUwODgsIDEyNTA5MiwgMTI1MDk2LCAKKyAgICAxMjUxMDAsIDEyNTEwNCwgMTI1MTA4LCAxMjUxMTIsIDEyNTExNiwgMTI1MTIwLCAxMjUxMjQsIDEyNTEyOCwgMTI1MTMyLCAKKyAgICAxMjUxMzYsIDEyNTE0MCwgMTI1MTQ0LCAxMjUxNDgsIDEyNTE1MiwgMTI1MTU2LCAxMjUxNjAsIDEyNTE2NCwgMTI1MTY4LCAKKyAgICAxMjUxNzIsIDEyNTE3NiwgMTI1MTgwLCAxMjUxODQsIDEyNTE4OCwgMTI1MTkyLCAxMjUxOTYsIDEyNTIwMCwgMTI1MjA0LCAKKyAgICAxMjUyMDgsIDEyNTIxMiwgMTI1MjE2LCAxMjUyMjAsIDEyNTIyNCwgMTI1MjI4LCAxMjUyMzIsIDEyNTIzNiwgMTI1MjQwLCAKKyAgICAxMjUyNDQsIDEyNTI0OCwgMTI1MjUyLCAxMjUyNTYsIDEyNTI2MCwgMTI1MjY0LCAxMjUyNjgsIDEyNTI3MiwgMTI1Mjc2LCAKKyAgICAxMjUyODAsIDEyNTI4NCwgMTI1Mjg4LCAxMjUyOTIsIDEyNTI5NiwgMTI1MzAwLCAxMjUzMDQsIDEyNTMwOCwgMTI1MzEyLCAKKyAgICAxMjUzMTYsIDEyNTMyMCwgMTI1MzI0LCAxMjUzMjgsIDEyNTMzMiwgMTI1MzM2LCAxMjUzNDAsIDEyNTM0NCwgMTI1MzQ4LCAKKyAgICAxMjUzNTIsIDEyNTM1NiwgMTI1MzYwLCAxMjUzNjQsIDEyNTM2OCwgMTI1MzcyLCAxMjUzNzYsIDEyNTM4MCwgMTI1Mzg0LCAKKyAgICAxMjUzODgsIDEyNTM5MiwgMTI1Mzk2LCAxMjU0MDAsIDEyNTQwNCwgMTI1NDA4LCAxMjU0MTIsIDEyNTQxNiwgMTI1NDIwLCAKKyAgICAxMjU0MjQsIDEyNTQyOCwgMTI1NDMyLCAxMjU0MzYsIDEyNTQ0MCwgMTI1NDQ0LCAxMjU0NDgsIDEyNTQ1MiwgMTI1NDU2LCAKKyAgICAxMjU0NjAsIDEyNTQ2NCwgMTI1NDY4LCAxMjU0NzIsIDEyNTQ3NiwgMTI1NDgwLCAxMjU0ODQsIDEyNTQ4OCwgMTI1NDkyLCAKKyAgICAxMjU0OTYsIDEyNTUwMCwgMTI1NTA0LCAxMjU1MDgsIDEyNTUxMiwgMTI1NTE2LCAxMjU1MjAsIDEyNTUyNCwgMTI1NTI4LCAKKyAgICAxMjU1MzIsIDEyNTUzNiwgMTI1NTQwLCAxMjU1NDQsIDEyNTU0OCwgMTI1NTUyLCAxMjU1NTYsIDEyNTU2MCwgMTI1NTY0LCAKKyAgICAxMjU1NjgsIDEyNTU3MiwgMTI1NTc2LCAxMjU1ODAsIDEyNTU4NCwgMTI1NTg4LCAxMjU1OTIsIDEyNTU5NiwgMTI1NjAwLCAKKyAgICAxMjU2MDQsIDEyNTYwOCwgMTI1NjEyLCAxMjU2MTYsIDEyNTYyMCwgMTI1NjI0LCAxMjU2MjgsIDEyNTYzMiwgMTI1NjM2LCAKKyAgICAxMjU2NDAsIDEyNTY0NCwgMTI1NjQ4LCAxMjU2NTIsIDEyNTY1NiwgMTI1NjYwLCAxMjU2NjQsIDEyNTY2OCwgMTI1NjcyLCAKKyAgICAxMjU2NzYsIDEyNTY4MCwgMTI1Njg0LCAxMjU2ODgsIDEyNTY5MiwgMTI1Njk2LCAxMjU3MDAsIDEyNTcwNCwgMTI1NzA4LCAKKyAgICAxMjU3MTIsIDEyNTcxNiwgMTI1NzIwLCAxMjU3MjQsIDEyNTcyOCwgMTI1NzMyLCAxMjU3MzYsIDEyNTc0MCwgMTI1NzQ0LCAKKyAgICAxMjU3NDgsIDEyNTc1MiwgMTI1NzU2LCAxMjU3NjAsIDEyNTc2NCwgMTI1NzY4LCAxMjU3NzIsIDEyNTc3NiwgMTI1NzgwLCAKKyAgICAxMjU3ODQsIDEyNTc4OCwgMTI1NzkyLCAxMjU3OTYsIDEyNTgwMCwgMTI1ODA0LCAxMjU4MDgsIDEyNTgxMiwgMTI1ODE2LCAKKyAgICAxMjU4MjAsIDEyNTgyNCwgMTI1ODI4LCAxMjU4MzIsIDEyNTgzNiwgMTI1ODQwLCAxMjU4NDQsIDEyNTg0OCwgMTI1ODUyLCAKKyAgICAxMjU4NTYsIDEyNTg2MCwgMTI1ODY0LCAxMjU4NjgsIDEyNTg3MiwgMTI1ODc2LCAxMjU4ODAsIDEyNTg4NCwgMTI1ODg4LCAKKyAgICAxMjU4OTIsIDEyNTg5NiwgMTI1OTAwLCAxMjU5MDQsIDEyNTkwOCwgMTI1OTEyLCAxMjU5MTYsIDEyNTkyMCwgMTI1OTI0LCAKKyAgICAxMjU5MjgsIDEyNTkzMiwgMTI1OTM2LCAxMjU5NDAsIDEyNTk0NCwgMTI1OTQ4LCAxMjU5NTIsIDEyNTk1NiwgMTI1OTYwLCAKKyAgICAxMjU5NjQsIDEyNTk2OCwgMTI1OTcyLCAxMjU5NzYsIDEyNTk4MCwgMTI1OTg0LCAxMjU5ODgsIDEyNTk5MiwgMTI1OTk2LCAKKyAgICAxMjYwMDAsIDEyNjAwNCwgMTI2MDA4LCAxMjYwMTIsIDEyNjAxNiwgMTI2MDIwLCAxMjYwMjQsIDEyNjAyOCwgMTI2MDMyLCAKKyAgICAxMjYwMzYsIDEyNjA0MCwgMTI2MDQ0LCAxMjYwNDgsIDEyNjA1MiwgMTI2MDU2LCAxMjYwNjAsIDEyNjA2NCwgMTI2MDY4LCAKKyAgICAxMjYwNzIsIDEyNjA3NiwgMTI2MDgwLCAxMjYwODQsIDEyNjA4OCwgMTI2MDkyLCAxMjYwOTYsIDEyNjEwMCwgMTI2MTA0LCAKKyAgICAxMjYxMDgsIDEyNjExMiwgMTI2MTE2LCAxMjYxMjAsIDEyNjEyNCwgMTI2MTI4LCAxMjYxMzIsIDEyNjEzNiwgMTI2MTQwLCAKKyAgICAxMjYxNDQsIDEyNjE0OCwgMTI2MTUyLCAxMjYxNTYsIDEyNjE2MCwgMTI2MTY0LCAxMjYxNjgsIDEyNjE3MiwgMTI2MTc2LCAKKyAgICAxMjYxODAsIDEyNjE4NCwgMTI2MTg4LCAxMjYxOTIsIDEyNjE5NiwgMTI2MjAwLCAxMjYyMDQsIDEyNjIwOCwgMTI2MjEyLCAKKyAgICAxMjYyMTYsIDEyNjIyMCwgMTI2MjI0LCAxMjYyMjgsIDEyNjIzMiwgMTI2MjM2LCAxMjYyNDAsIDEyNjI0NCwgMTI2MjQ4LCAKKyAgICAxMjYyNTIsIDEyNjI1NiwgMTI2MjYwLCAxMjYyNjQsIDEyNjI2OCwgMTI2MjcyLCAxMjYyNzYsIDEyNjI4MCwgMTI2Mjg0LCAKKyAgICAxMjYyODgsIDEyNjI5MiwgMTI2Mjk2LCAxMjYzMDAsIDEyNjMwNCwgMTI2MzA4LCAxMjYzMTIsIDEyNjMxNiwgMTI2MzIwLCAKKyAgICAxMjYzMjQsIDEyNjMyOCwgMTI2MzMyLCAxMjYzMzYsIDEyNjM0MCwgMTI2MzQ0LCAxMjYzNDgsIDEyNjM1MiwgMTI2MzU2LCAKKyAgICAxMjYzNjAsIDEyNjM2NCwgMTI2MzY4LCAxMjYzNzIsIDEyNjM3NiwgMTI2MzgwLCAxMjYzODQsIDEyNjM4OCwgMTI2MzkyLCAKKyAgICAxMjYzOTYsIDEyNjQwMCwgMTI2NDA0LCAxMjY0MDgsIDEyNjQxMiwgMTI2NDE2LCAxMjY0MjAsIDEyNjQyNCwgMTI2NDI4LCAKKyAgICAxMjY0MzIsIDEyNjQzNiwgMTI2NDQwLCAxMjY0NDQsIDEyNjQ0OCwgMTI2NDUyLCAxMjY0NTYsIDEyNjQ2MCwgMTI2NDY0LCAKKyAgICAxMjY0NjgsIDEyNjQ3MiwgMTI2NDc2LCAxMjY0ODAsIDEyNjQ4NCwgMTI2NDg4LCAxMjY0OTIsIDEyNjQ5NiwgMTI2NTAwLCAKKyAgICAxMjY1MDQsIDEyNjUwOCwgMTI2NTEyLCAxMjY1MTYsIDEyNjUyMCwgMTI2NTI0LCAxMjY1MjgsIDEyNjUzMiwgMTI2NTM2LCAKKyAgICAxMjY1NDAsIDEyNjU0NCwgMTI2NTQ4LCAxMjY1NTIsIDEyNjU1NiwgMTI2NTYwLCAxMjY1NjQsIDEyNjU2OCwgMTI2NTcyLCAKKyAgICAxMjY1NzYsIDEyNjU4MCwgMTI2NTg0LCAxMjY1ODgsIDEyNjU5MiwgMTI2NTk2LCAxMjY2MDAsIDEyNjYwNCwgMTI2NjA4LCAKKyAgICAxMjY2MTIsIDEyNjYxNiwgMTI2NjIwLCAxMjY2MjQsIDEyNjYyOCwgMTI2NjMyLCAxMjY2MzYsIDEyNjY0MCwgMTI2NjQ0LCAKKyAgICAxMjY2NDgsIDEyNjY1MiwgMTI2NjU2LCAxMjY2NjAsIDEyNjY2NCwgMTI2NjY4LCAxMjY2NzIsIDEyNjY3NiwgMTI2NjgwLCAKKyAgICAxMjY2ODQsIDEyNjY4OCwgMTI2NjkyLCAxMjY2OTYsIDEyNjcwMCwgMTI2NzA0LCAxMjY3MDgsIDEyNjcxMiwgMTI2NzE2LCAKKyAgICAxMjY3MjAsIDEyNjcyNCwgMTI2NzI4LCAxMjY3MzIsIDEyNjczNiwgMTI2NzQwLCAxMjY3NDQsIDEyNjc0OCwgMTI2NzUyLCAKKyAgICAxMjY3NTYsIDEyNjc2MCwgMTI2NzY0LCAxMjY3NjgsIDEyNjc3MiwgMTI2Nzc2LCAxMjY3ODAsIDEyNjc4NCwgMTI2Nzg4LCAKKyAgICAxMjY3OTIsIDEyNjc5NiwgMTI2ODAwLCAxMjY4MDQsIDEyNjgwOCwgMTI2ODEyLCAxMjY4MTYsIDEyNjgyNiwgMTI2ODMwLCAKKyAgICAxMjY4MzQsIDEyNjgzOCwgMTI2ODQyLCAxMjY4NDYsIDEyNjg1MCwgMTI2ODU0LCAxMjY4NTgsIDEyNjg2MiwgMTI2ODY2LCAKKyAgICAxMjY4NzAsIDEyNjg3NSwgMTI2ODc5LCAxMjY4ODMsIDEyNjg4NywgMTI2ODkxLCAxMjY4OTUsIDEyNjg5OSwgMTI2OTAzLCAKKyAgICAxMjY5MDcsIDEyNjkxMSwgMTI2OTE1LCAxMjY5MTksIDEyNjkyMywgMTI2OTI3LCAxMjY5MzEsIDEyNjkzNSwgMTI2OTM5LCAKKyAgICAxMjY5NDgsIDEyNjk1NywgMTI2OTYxLCAxMjY5NjUsIDEyNjk2OSwgMTI2OTczLCAxMjY5NzcsIDEyNjk4MSwgMTI2OTg1LCAKKyAgICAxMjY5ODksIDEyNjk5MywgMTI2OTk3LCAxMjcwMDEsIDEyNzAwNSwgMTI3MDA5LCAxMjcwMTMsIDEyNzAxNywgMTI3MDIxLCAKKyAgICAxMjcwMjUsIDEyNzAyOSwgMTI3MDMzLCAxMjcwMzcsIDEyNzA0MSwgMTI3MDQ1LCAxMjcwNDksIDEyNzA1MywgMTI3MDU3LCAKKyAgICAxMjcwNjEsIDEyNzA2NSwgMTI3MDY5LCAxMjcwNzMsIDEyNzA3NywgMTI3MDgxLCAxMjcwODUsIDEyNzA4OSwgMTI3MDkzLCAKKyAgICAxMjcwOTcsIDEyNzEwMSwgMTI3MTA1LCAxMjcxMDksIDEyNzExMywgMTI3MTE3LCAxMjcxMjEsIDEyNzEyNSwgMTI3MTI5LCAKKyAgICAxMjcxMzMsIDEyNzEzNywgMTI3MTQxLCAxMjcxNDUsIDEyNzE0OSwgMTI3MTUzLCAxMjcxNTcsIDEyNzE2MSwgMTI3MTY1LCAKKyAgICAxMjcxNjksIDEyNzE3MywgMTI3MTc3LCAxMjcxODEsIDEyNzE4NSwgMTI3MTg5LCAxMjcxOTMsIDEyNzE5NywgMTI3MjAxLCAKKyAgICAxMjcyMDUsIDEyNzIwOSwgMTI3MjEzLCAxMjcyMTcsIDEyNzIyMSwgMTI3MjI1LCAxMjcyMjksIDEyNzIzMywgMTI3MjM3LCAKKyAgICAxMjcyNDEsIDEyNzI0NSwgMTI3MjQ5LCAxMjcyNTMsIDEyNzI1NywgMTI3MjYxLCAxMjcyNjUsIDEyNzI2OSwgMTI3MjczLCAKKyAgICAxMjcyNzcsIDEyNzI4MSwgMTI3Mjg1LCAxMjcyODksIDEyNzI5MywgMTI3Mjk3LCAxMjczMDEsIDEyNzMwNSwgMTI3MzA5LCAKKyAgICAxMjczMTMsIDEyNzMxNywgMTI3MzIxLCAxMjczMjUsIDEyNzMyOSwgMTI3MzMzLCAxMjczMzcsIDEyNzM0MSwgMTI3MzQ1LCAKKyAgICAxMjczNDksIDEyNzM1MywgMTI3MzU3LCAxMjczNjEsIDEyNzM2NSwgMTI3MzY5LCAxMjczNzMsIDEyNzM3NywgMTI3MzgxLCAKKyAgICAxMjczODUsIDEyNzM4OSwgMTI3MzkzLCAxMjczOTcsIDEyNzQwMSwgMTI3NDA1LCAxMjc0MDksIDEyNzQxMywgMTI3NDE3LCAKKyAgICAxMjc0MjEsIDEyNzQyNSwgMTI3NDI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTE5MzAwLDEyNCArMjA0NTYsMjEwIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0OTMzLCAxMjQ5NDEsIAotICAgIDEyNDk0OSwgMTI0OTU5LCAxMjQ5NjksIDEyNDk3NywgMTI0OTgzLCAxMjQ5OTEsIDEyNDk5OSwgMTI1MDA5LCAxMjUwMjEsIAotICAgIDEyNTAzMywgMTI1MDM5LCAxMjUwNDcsIDEyNTA1MywgMTI1MDU5LCAxMjUwNjUsIDEyNTA3MSwgMTI1MDc3LCAxMjUwODMsIAotICAgIDEyNTA4OSwgMTI1MDk1LCAxMjUxMDEsIDEyNTEwNywgMTI1MTEzLCAxMjUxMjEsIDEyNTEyOSwgMTI1MTM1LCAxMjUxNDEsIAotICAgIDEyNTE0NywgMTI1MTUzLCAxMjUxNjEsIDEyNTE2OSwgMTI1MTc4LCAxMjUxODQsIDEyNTE5MiwgMTI1MTk4LCAxMjUyMDQsIAotICAgIDEyNTIxMCwgMTI1MjE2LCAxMjUyMjIsIDEyNTIzMCwgMTI1MjM4LCAxMjUyNDQsIDEyNTI1MCwgMTI1MjU2LCAxMjUyNjIsIAotICAgIDEyNTI2OCwgMTI1Mjc0LCAxMjUyODAsIDEyNTI4NiwgMTI1MjkyLCAxMjUyOTgsIDEyNTMwNCwgMTI1MzEwLCAxMjUzMTYsIAotICAgIDEyNTMyMiwgMTI1MzI4LCAxMjUzMzQsIDEyNTM0MCwgMTI1MzQ2LCAxMjUzNTIsIDEyNTM2MCwgMTI1MzY2LCAxMjUzNzIsIAotICAgIDEyNTM4MiwgMTI1MzkwLCAxMjUzOTYsIDEyNTQwMiwgMTI1NDA4LCAxMjU0MTQsIDEyNTQyMCwgMTI1NDI2LCAxMjU0MzIsIAotICAgIDEyNTQzOCwgMTI1NDQ0LCAxMjU0NTAsIDEyNTQ1NiwgMTI1NDYyLCAxMjU0NjgsIDEyNTQ3NCwgMTI1NDgwLCAxMjU0ODYsIAotICAgIDEyNTQ5MiwgMTI1NDk4LCAxMjU1MDQsIDEyNTUxMCwgMTI1NTE2LCAxMjU1MjIsIDEyNTUzMCwgMTI1NTM2LCAxMjU1NDQsIAotICAgIDEyNTU1MiwgMTI1NTYwLCAxMjU1NjYsIDEyNTU3MiwgMTI1NTc4LCAxMjU1ODQsIDEyNTU5MCwgMTI1NTk4LCAxMjU2MDgsIAotICAgIDEyNTYxNiwgMTI1NjI0LCAxMjU2MzAsIDEyNTYzNiwgMTI1NjQ0LCAxMjU2NTIsIDEyNTY1OCwgMTI1NjY2LCAxMjU2NzQsIAotICAgIDEyNTY4MiwgMTI1Njg4LCAxMjU2OTQsIDEyNTcwMCwgMTI1NzA2LCAxMjU3MTIsIDEyNTcxOCwgMTI1NzI2LCAxMjU3MzQsIAotICAgIDEyNTc0MCwgMTI1NzQ2LCAxMjU3NTIsIDEyNTc1OCwgMTI1NzY0LCAxMjU3NzIsIDEyNTc3OCwgMTI1Nzg0LCAxMjU3OTAsIAotICAgIDEyNTc5NiwgMTI1ODAyLCAxMjU4MDgsIDEyNTgxNiwgMTI1ODIyLCAxMjU4MjgsIDEyNTgzNCwgMTI1ODQwLCAxMjU4NDgsIAotICAgIDEyNTg1NiwgMTI1ODYyLCAxMjU4NjgsIDEyNTg3NCwgMTI1ODc5LCAxMjU4ODUsIDEyNTg5MSwgMTI1ODk4LCAxMjU5MDMsIAotICAgIDEyNTkwOCwgMTI1OTEzLCAxMjU5MTgsIDEyNTkyMywgMTI1OTI4LCAxMjU5MzMsIDEyNTkzOCwgMTI1OTQzLCAxMjU5NTIsIAotICAgIDEyNTk1OSwgMTI1OTY0LCAxMjU5NjksIDEyNTk3NCwgMTI1OTgxLCAxMjU5ODYsIDEyNTk5MSwgMTI1OTk2LCAxMjYwMDMsIAotICAgIDEyNjAwOCwgMTI2MDEzLCAxMjYwMTgsIDEyNjAyMywgMTI2MDI4LCAxMjYwMzMsIDEyNjAzOCwgMTI2MDQzLCAxMjYwNDgsIAotICAgIDEyNjA1MywgMTI2MDU4LCAxMjYwNjUsIDEyNjA3MCwgMTI2MDc3LCAxMjYwODIsIDEyNjA4NywgMTI2MDk0LCAxMjYwOTksIAotICAgIDEyNjEwNCwgMTI2MTA5LCAxMjYxMTQsIDEyNjExOSwgMTI2MTI0LCAxMjYxMjksIDEyNjEzNCwgMTI2MTM5LCAxMjYxNDQsIAotICAgIDEyNjE0OSwgMTI2MTU0LCAxMjYxNTksIDEyNjE2NCwgMTI2MTY5LCAxMjYxNzQsIDEyNjE3OSwgMTI2MTg0LCAxMjYxODksIAotICAgIDEyNjE5NiwgMTI2MjAxLCAxMjYyMDYsIDEyNjIxMSwgMTI2MjE2LCAxMjYyMjEsIDEyNjIyNiwgMTI2MjMxLCAxMjYyMzYsIAotICAgIDEyNjI0MSwgMTI2MjQ2LCAxMjYyNTEsIDEyNjI1NiwgMTI2MjYxLCAxMjYyNjgsIDEyNjI3MywgMTI2Mjc4LCAxMjYyODUsIAotICAgIDEyNjI5MCwgMTI2Mjk1LCAxMjYzMDAsIDEyNjMwNSwgMTI2MzEwLCAxMjYzMTUsIDEyNjMyMCwgMTI2MzI1LCAxMjYzMzAsIAotICAgIDEyNjMzNSwgMTI2MzQyLCAxMjYzNDcsIDEyNjM1MiwgMTI2MzU3LCAxMjYzNjIsIDEyNjM2NywgMTI2Mzc0LCAxMjYzODEsIAotICAgIDEyNjM4NiwgMTI2MzkxLCAxMjYzOTYsIDEyNjQwMSwgMTI2NDA2LCAxMjY0MTEsIDEyNjQxNiwgMTI2NDIxLCAxMjY0MjYsIAotICAgIDEyNjQzMSwgMTI2NDM2LCAxMjY0NDEsIDEyNjQ0NiwgMTI2NDUxLCAxMjY0NTYsIDEyNjQ2MSwgMTI2NDY2LCAxMjY0NzEsIAotICAgIDEyNjQ3NiwgMTI2NDgxLCAxMjY0ODYsIDEyNjQ5MSwgMTI2NDk2LCAxMjY1MDEsIDEyNjUwNiwgMTI2NTExLCAxMjY1MTYsIAotICAgIDEyNjUyMSwgMTI2NTI2LCAxMjY1MzEsIDEyNjUzNiwgMTI2NTQxLCAxMjY1NDYsIDEyNjU1MSwgMTI2NTU2LCAxMjY1NjEsIAotICAgIDEyNjU2OCwgMTI2NTczLCAxMjY1NzgsIDEyNjU4MywgMTI2NTg4LCAxMjY1OTMsIDEyNjU5OCwgMTI2NjAzLCAxMjY2MDgsIAotICAgIDEyNjYxMywgMTI2NjE4LCAxMjY2MjMsIDEyNjYyOCwgMTI2NjMzLCAxMjY2MzgsIDEyNjY0MywgMTI2NjQ4LCAxMjY2NTMsIAotICAgIDEyNjY1OCwgMTI2NjYzLCAxMjY2NjgsIDEyNjY3MywgMTI2Njc4LCAxMjY2ODMsIDEyNjY4OCwgMTI2NjkzLCAxMjY2OTgsIAotICAgIDEyNjcwMywgMTI2NzA4LCAxMjY3MTMsIDEyNjcxOCwgMTI2NzIzLCAxMjY3MjgsIDEyNjczMywgMTI2NzM4LCAxMjY3NDMsIAotICAgIDEyNjc0OCwgMTI2NzUzLCAxMjY3NTgsIDEyNjc2MywgMTI2NzY4LCAxMjY3NzMsIDEyNjc3OCwgMTI2NzgzLCAxMjY3ODgsIAotICAgIDEyNjc5MywgMTI2Nzk4LCAxMjY4MDMsIDEyNjgwOCwgMTI2ODEzLCAxMjY4MTgsIDEyNjgyMywgMTI2ODI4LCAxMjY4MzMsIAotICAgIDEyNjgzOCwgMTI2ODQzLCAxMjY4NDgsIDEyNjg1MywgMTI2ODU4LCAxMjY4NjUsIDEyNjg3MCwgMTI2ODc1LCAxMjY4ODAsIAotICAgIDEyNjg4NSwgMTI2ODkwLCAxMjY4OTUsIDEyNjkwMCwgMTI2OTA1LCAxMjY5MTAsIDEyNjkxNSwgMTI2OTIwLCAxMjY5MjUsIAotICAgIDEyNjkzMCwgMTI2OTM1LCAxMjY5NDAsIDEyNjk0NSwgMTI2OTUwLCAxMjY5NTUsIDEyNjk2MCwgMTI2OTY1LCAxMjY5NzAsIAotICAgIDEyNjk3NywgMTI2OTgyLCAxMjY5ODcsIDEyNjk5NCwgMTI2OTk5LCAxMjcwMDQsIDEyNzAwOSwgMTI3MDE0LCAxMjcwMTksIAotICAgIDEyNzAyNCwgMTI3MDI5LCAxMjcwMzQsIDEyNzAzOSwgMTI3MDQ0LCAxMjcwNDksIDEyNzA1NCwgMTI3MDU5LCAxMjcwNjQsIAotICAgIDEyNzA2OSwgMTI3MDc0LCAxMjcwNzksIDEyNzA4NCwgMTI3MDg5LCAxMjcwOTQsIDEyNzA5OSwgMTI3MTA0LCAxMjcxMDksIAotICAgIDEyNzExNCwgMTI3MTE5LCAxMjcxMjQsIDEyNzEyOSwgMTI3MTM0LCAxMjcxMzksIDEyNzE0NCwgMTI3MTQ5LCAxMjcxNTQsIAotICAgIDEyNzE1OSwgMTI3MTY0LCAxMjcxNjksIDEyNzE3NCwgMTI3MTc5LCAxMjcxODQsIDEyNzE4OSwgMTI3MTk0LCAxMjcxOTksIAotICAgIDEyNzIwNCwgMTI3MjA5LCAxMjcyMTYsIDEyNzIyMSwgMTI3MjI2LCAxMjcyMzMsIDEyNzI0MCwgMTI3MjQ1LCAxMjcyNTAsIAotICAgIDEyNzI1NSwgMTI3MjYwLCAxMjcyNjUsIDEyNzI3MCwgMTI3Mjc1LCAxMjcyODAsIDEyNzI4NSwgMTI3MjkwLCAxMjcyOTUsIAotICAgIDEyNzMwMCwgMTI3MzA1LCAxMjczMTAsIDEyNzMxNSwgMTI3MzIwLCAxMjczMjUsIDEyNzMzMCwgMTI3MzM1LCAxMjczNDAsIAotICAgIDEyNzM0NSwgMTI3MzUwLCAxMjczNTUsIDEyNzM2MCwgMTI3MzY1LCAxMjczNzIsIDEyNzM3NywgMTI3MzgyLCAxMjczODcsIAotICAgIDEyNzM5MiwgMTI3Mzk3LCAxMjc0MDIsIDEyNzQwNywgMTI3NDEyLCAxMjc0MTcsIDEyNzQyMiwgMTI3NDI3LCAxMjc0MzIsIAotICAgIDEyNzQzNywgMTI3NDQyLCAxMjc0NDcsIDEyNzQ1MiwgMTI3NDU3LCAxMjc0NjIsIDEyNzQ2OSwgMTI3NDc0LCAxMjc0NzksIAotICAgIDEyNzQ4NCwgMTI3NDg5LCAxMjc0OTQsIDEyNzQ5OSwgMTI3NTA0LCAxMjc1MTAsIDEyNzUxNSwgMTI3NTIwLCAxMjc1MjUsIAotICAgIDEyNzUzMCwgMTI3NTM1LCAxMjc1NDAsIDEyNzU0NSwgMTI3NTUwLCAxMjc1NTcsIDEyNzU2NCwgMTI3NTY5LCAxMjc1NzQsIAotICAgIDEyNzU3OCwgMTI3NTgzLCAxMjc1ODcsIDEyNzU5MSwgMTI3NTk2LCAxMjc2MDMsIDEyNzYwOCwgMTI3NjEzLCAxMjc2MjIsIAotICAgIDEyNzYyNywgMTI3NjMyLCAxMjc2MzcsIDEyNzY0MiwgMTI3NjQ5LCAxMjc2NTYsIDEyNzY2MSwgMTI3NjY2LCAxMjc2NzEsIAotICAgIDEyNzY3NiwgMTI3NjgzLCAxMjc2ODgsIDEyNzY5MywgMTI3Njk4LCAxMjc3MDMsIDEyNzcwOCwgMTI3NzEzLCAxMjc3MTgsIAotICAgIDEyNzcyMywgMTI3NzI4LCAxMjc3MzMsIDEyNzczOCwgMTI3NzQzLCAxMjc3NTAsIDEyNzc1NSwgMTI3NzYwLCAxMjc3NjUsIAotICAgIDEyNzc3MCwgMTI3Nzc1LCAxMjc3NzksIDEyNzc4NCwgMTI3Nzg5LCAxMjc3OTQsIDEyNzc5OSwgMTI3ODA0LCAxMjc4MDksIAotICAgIDEyNzgxNCwgMTI3ODE5LCAxMjc4MjQsIDEyNzgzMCwgMTI3ODM2LCAxMjc4NDIsIDEyNzg0OCwgMTI3ODU0LCAxMjc4NjAsIAotICAgIDEyNzg2NiwgMTI3ODcyLCAxMjc4NzgsIDEyNzg4NCwgMTI3ODkwLCAxMjc4OTYsIDEyNzkwMiwgMTI3OTA4LCAxMjc5MTQsIAorICAgIDAsIDEyNzQzMywgMTI3NDQxLCAxMjc0NDksIDEyNzQ1OSwgMTI3NDY5LCAxMjc0NzcsIDEyNzQ4MywgMTI3NDkxLCAKKyAgICAxMjc0OTksIDEyNzUwOSwgMTI3NTIxLCAxMjc1MzMsIDEyNzUzOSwgMTI3NTQ3LCAxMjc1NTMsIDEyNzU1OSwgMTI3NTY1LCAKKyAgICAxMjc1NzEsIDEyNzU3NywgMTI3NTgzLCAxMjc1ODksIDEyNzU5NSwgMTI3NjAxLCAxMjc2MDcsIDEyNzYxMywgMTI3NjIxLCAKKyAgICAxMjc2MjksIDEyNzYzNSwgMTI3NjQxLCAxMjc2NDcsIDEyNzY1MywgMTI3NjYxLCAxMjc2NjksIDEyNzY3OCwgMTI3Njg0LCAKKyAgICAxMjc2OTIsIDEyNzY5OCwgMTI3NzA0LCAxMjc3MTAsIDEyNzcxNiwgMTI3NzIyLCAxMjc3MzAsIDEyNzczOCwgMTI3NzQ0LCAKKyAgICAxMjc3NTAsIDEyNzc1NiwgMTI3NzYyLCAxMjc3NjgsIDEyNzc3NCwgMTI3NzgwLCAxMjc3ODYsIDEyNzc5MiwgMTI3Nzk4LCAKKyAgICAxMjc4MDQsIDEyNzgxMCwgMTI3ODE2LCAxMjc4MjIsIDEyNzgyOCwgMTI3ODM0LCAxMjc4NDAsIDEyNzg0NiwgMTI3ODUyLCAKKyAgICAxMjc4NjAsIDEyNzg2NiwgMTI3ODcyLCAxMjc4ODIsIDEyNzg5MCwgMTI3ODk2LCAxMjc5MDIsIDEyNzkwOCwgMTI3OTE0LCAKICAgICAxMjc5MjAsIDEyNzkyNiwgMTI3OTMyLCAxMjc5MzgsIDEyNzk0NCwgMTI3OTUwLCAxMjc5NTYsIDEyNzk2MiwgMTI3OTY4LCAKLSAgICAxMjc5NzMsIDEyNzk3OSwgMTI3OTg1LCAxMjc5OTEsIDEyNzk5NywgMTI4MDAzLCAxMjgwMDksIDEyODAxNSwgMTI4MDIxLCAKLSAgICAxMjgwMjcsIDEyODAzMywgMTI4MDM5LCAxMjgwNDUsIDEyODA1MSwgMTI4MDU3LCAxMjgwNjMsIDEyODA2OSwgMTI4MDc1LCAKLSAgICAxMjgwODEsIDEyODA4NywgMTI4MDkzLCAxMjgwOTgsIDEyODEwNCwgMTI4MTEwLCAxMjgxMTYsIDEyODEyMiwgMTI4MTI4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgxMzQsIDEyODEzOSwgMTI4MTQ0LCAxMjgxNDksIDEyODE1NCwgMTI4MTU5LCAKLSAgICAxMjgxNjQsIDEyODE2OCwgMTI4MTczLCAxMjgxNzgsIDEyODE4MywgMTI4MTg4LCAxMjgxOTMsIDEyODE5OCwgMTI4MjAzLCAKLSAgICAxMjgyMDgsIDEyODIxMywgMTI4MjE3LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMxLCAxMjgyMzYsIDEyODI0MSwgMTI4MjQ2LCAKLSAgICAxMjgyNTEsIDEyODI1NSwgMTI4MjYwLCAxMjgyNjUsIDEyODI3MCwgMTI4Mjc1LCAxMjgyODAsIDAsIDEyODI4NSwgCi0gICAgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTksIDEyODMyMywgCi0gICAgMCwgMCwgMCwgMCwgMTI4MzI4LCAxMjgzMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNzk3NCwgMTI3OTgwLCAxMjc5ODYsIDEyNzk5MiwgMTI3OTk4LCAxMjgwMDQsIDEyODAxMCwgMTI4MDE2LCAxMjgwMjIsIAorICAgIDEyODAzMCwgMTI4MDM2LCAxMjgwNDQsIDEyODA1MiwgMTI4MDYwLCAxMjgwNjYsIDEyODA3MiwgMTI4MDc4LCAxMjgwODQsIAorICAgIDEyODA5MCwgMTI4MDk4LCAxMjgxMDgsIDEyODExNiwgMTI4MTI0LCAxMjgxMzAsIDEyODEzNiwgMTI4MTQ0LCAxMjgxNTIsIAorICAgIDEyODE1OCwgMTI4MTY2LCAxMjgxNzQsIDEyODE4MiwgMTI4MTg4LCAxMjgxOTQsIDEyODIwMCwgMTI4MjA2LCAxMjgyMTIsIAorICAgIDEyODIxOCwgMTI4MjI2LCAxMjgyMzQsIDEyODI0MCwgMTI4MjQ2LCAxMjgyNTIsIDEyODI1OCwgMTI4MjY0LCAxMjgyNzIsIAorICAgIDEyODI3OCwgMTI4Mjg0LCAxMjgyOTAsIDEyODI5NiwgMTI4MzAyLCAxMjgzMDgsIDEyODMxNiwgMTI4MzIyLCAxMjgzMjgsIAorICAgIDEyODMzNCwgMTI4MzQwLCAxMjgzNDgsIDEyODM1NiwgMTI4MzYyLCAxMjgzNjgsIDEyODM3NCwgMTI4Mzc5LCAxMjgzODUsIAorICAgIDEyODM5MSwgMTI4Mzk4LCAxMjg0MDMsIDEyODQwOCwgMTI4NDEzLCAxMjg0MTgsIDEyODQyMywgMTI4NDI4LCAxMjg0MzMsIAorICAgIDEyODQzOCwgMTI4NDQzLCAxMjg0NTIsIDEyODQ1OSwgMTI4NDY0LCAxMjg0NjksIDEyODQ3NCwgMTI4NDgxLCAxMjg0ODYsIAorICAgIDEyODQ5MSwgMTI4NDk2LCAxMjg1MDMsIDEyODUwOCwgMTI4NTEzLCAxMjg1MTgsIDEyODUyMywgMTI4NTI4LCAxMjg1MzMsIAorICAgIDEyODUzOCwgMTI4NTQzLCAxMjg1NDgsIDEyODU1MywgMTI4NTU4LCAxMjg1NjUsIDEyODU3MCwgMTI4NTc3LCAxMjg1ODIsIAorICAgIDEyODU4NywgMTI4NTk0LCAxMjg1OTksIDEyODYwNCwgMTI4NjA5LCAxMjg2MTQsIDEyODYxOSwgMTI4NjI0LCAxMjg2MjksIAorICAgIDEyODYzNCwgMTI4NjM5LCAxMjg2NDQsIDEyODY0OSwgMTI4NjU0LCAxMjg2NTksIDEyODY2NCwgMTI4NjY5LCAxMjg2NzQsIAorICAgIDEyODY3OSwgMTI4Njg0LCAxMjg2ODksIDEyODY5NiwgMTI4NzAxLCAxMjg3MDYsIDEyODcxMSwgMTI4NzE2LCAxMjg3MjEsIAorICAgIDEyODcyNiwgMTI4NzMxLCAxMjg3MzYsIDEyODc0MSwgMTI4NzQ2LCAxMjg3NTEsIDEyODc1NiwgMTI4NzYxLCAxMjg3NjgsIAorICAgIDEyODc3MywgMTI4Nzc4LCAxMjg3ODUsIDEyODc5MCwgMTI4Nzk1LCAxMjg4MDAsIDEyODgwNSwgMTI4ODEwLCAxMjg4MTUsIAorICAgIDEyODgyMCwgMTI4ODI1LCAxMjg4MzAsIDEyODgzNSwgMTI4ODQyLCAxMjg4NDcsIDEyODg1MiwgMTI4ODU3LCAxMjg4NjIsIAorICAgIDEyODg2NywgMTI4ODc0LCAxMjg4ODEsIDEyODg4NiwgMTI4ODkxLCAxMjg4OTYsIDEyODkwMSwgMTI4OTA2LCAxMjg5MTEsIAorICAgIDEyODkxNiwgMTI4OTIxLCAxMjg5MjYsIDEyODkzMSwgMTI4OTM2LCAxMjg5NDEsIDEyODk0NiwgMTI4OTUxLCAxMjg5NTYsIAorICAgIDEyODk2MSwgMTI4OTY2LCAxMjg5NzEsIDEyODk3NiwgMTI4OTgxLCAxMjg5ODYsIDEyODk5MSwgMTI4OTk2LCAxMjkwMDEsIAorICAgIDEyOTAwNiwgMTI5MDExLCAxMjkwMTYsIDEyOTAyMSwgMTI5MDI2LCAxMjkwMzEsIDEyOTAzNiwgMTI5MDQxLCAxMjkwNDYsIAorICAgIDEyOTA1MSwgMTI5MDU2LCAxMjkwNjEsIDEyOTA2OCwgMTI5MDczLCAxMjkwNzgsIDEyOTA4MywgMTI5MDg4LCAxMjkwOTMsIAorICAgIDEyOTA5OCwgMTI5MTAzLCAxMjkxMDgsIDEyOTExMywgMTI5MTE4LCAxMjkxMjMsIDEyOTEyOCwgMTI5MTMzLCAxMjkxMzgsIAorICAgIDEyOTE0MywgMTI5MTQ4LCAxMjkxNTMsIDEyOTE1OCwgMTI5MTYzLCAxMjkxNjgsIDEyOTE3MywgMTI5MTc4LCAxMjkxODMsIAorICAgIDEyOTE4OCwgMTI5MTkzLCAxMjkxOTgsIDEyOTIwMywgMTI5MjA4LCAxMjkyMTMsIDEyOTIxOCwgMTI5MjIzLCAxMjkyMjgsIAorICAgIDEyOTIzMywgMTI5MjM4LCAxMjkyNDMsIDEyOTI0OCwgMTI5MjUzLCAxMjkyNTgsIDEyOTI2MywgMTI5MjY4LCAxMjkyNzMsIAorICAgIDEyOTI3OCwgMTI5MjgzLCAxMjkyODgsIDEyOTI5MywgMTI5Mjk4LCAxMjkzMDMsIDEyOTMwOCwgMTI5MzEzLCAxMjkzMTgsIAorICAgIDEyOTMyMywgMTI5MzI4LCAxMjkzMzMsIDEyOTMzOCwgMTI5MzQzLCAxMjkzNDgsIDEyOTM1MywgMTI5MzU4LCAxMjkzNjUsIAorICAgIDEyOTM3MCwgMTI5Mzc1LCAxMjkzODAsIDEyOTM4NSwgMTI5MzkwLCAxMjkzOTUsIDEyOTQwMCwgMTI5NDA1LCAxMjk0MTAsIAorICAgIDEyOTQxNSwgMTI5NDIwLCAxMjk0MjUsIDEyOTQzMCwgMTI5NDM1LCAxMjk0NDAsIDEyOTQ0NSwgMTI5NDUwLCAxMjk0NTUsIAorICAgIDEyOTQ2MCwgMTI5NDY1LCAxMjk0NzAsIDEyOTQ3NywgMTI5NDgyLCAxMjk0ODcsIDEyOTQ5NCwgMTI5NDk5LCAxMjk1MDQsIAorICAgIDEyOTUwOSwgMTI5NTE0LCAxMjk1MTksIDEyOTUyNCwgMTI5NTI5LCAxMjk1MzQsIDEyOTUzOSwgMTI5NTQ0LCAxMjk1NDksIAorICAgIDEyOTU1NCwgMTI5NTU5LCAxMjk1NjQsIDEyOTU2OSwgMTI5NTc0LCAxMjk1NzksIDEyOTU4NCwgMTI5NTg5LCAxMjk1OTQsIAorICAgIDEyOTU5OSwgMTI5NjA0LCAxMjk2MDksIDEyOTYxNCwgMTI5NjE5LCAxMjk2MjQsIDEyOTYyOSwgMTI5NjM0LCAxMjk2MzksIAorICAgIDEyOTY0NCwgMTI5NjQ5LCAxMjk2NTQsIDEyOTY1OSwgMTI5NjY0LCAxMjk2NjksIDEyOTY3NCwgMTI5Njc5LCAxMjk2ODQsIAorICAgIDEyOTY4OSwgMTI5Njk0LCAxMjk2OTksIDEyOTcwNCwgMTI5NzA5LCAxMjk3MTYsIDEyOTcyMSwgMTI5NzI2LCAxMjk3MzMsIAorICAgIDEyOTc0MCwgMTI5NzQ1LCAxMjk3NTAsIDEyOTc1NSwgMTI5NzYwLCAxMjk3NjUsIDEyOTc3MCwgMTI5Nzc1LCAxMjk3ODAsIAorICAgIDEyOTc4NSwgMTI5NzkwLCAxMjk3OTUsIDEyOTgwMCwgMTI5ODA1LCAxMjk4MTAsIDEyOTgxNSwgMTI5ODIwLCAxMjk4MjUsIAorICAgIDEyOTgzMCwgMTI5ODM1LCAxMjk4NDAsIDEyOTg0NSwgMTI5ODUwLCAxMjk4NTUsIDEyOTg2MCwgMTI5ODY1LCAxMjk4NzIsIAorICAgIDEyOTg3NywgMTI5ODgyLCAxMjk4ODcsIDEyOTg5MiwgMTI5ODk3LCAxMjk5MDIsIDEyOTkwNywgMTI5OTEyLCAxMjk5MTcsIAorICAgIDEyOTkyMiwgMTI5OTI3LCAxMjk5MzIsIDEyOTkzNywgMTI5OTQyLCAxMjk5NDcsIDEyOTk1MiwgMTI5OTU3LCAxMjk5NjIsIAorICAgIDEyOTk2OSwgMTI5OTc0LCAxMjk5NzksIDEyOTk4NCwgMTI5OTg5LCAxMjk5OTQsIDEyOTk5OSwgMTMwMDA0LCAxMzAwMTAsIAorICAgIDEzMDAxNSwgMTMwMDIwLCAxMzAwMjUsIDEzMDAzMCwgMTMwMDM1LCAxMzAwNDAsIDEzMDA0NSwgMTMwMDUwLCAxMzAwNTcsIAorICAgIDEzMDA2NCwgMTMwMDY5LCAxMzAwNzQsIDEzMDA3OCwgMTMwMDgzLCAxMzAwODcsIDEzMDA5MSwgMTMwMDk2LCAxMzAxMDMsIAorICAgIDEzMDEwOCwgMTMwMTEzLCAxMzAxMjIsIDEzMDEyNywgMTMwMTMyLCAxMzAxMzcsIDEzMDE0MiwgMTMwMTQ5LCAxMzAxNTYsIAorICAgIDEzMDE2MSwgMTMwMTY2LCAxMzAxNzEsIDEzMDE3NiwgMTMwMTgzLCAxMzAxODgsIDEzMDE5MywgMTMwMTk4LCAxMzAyMDMsIAorICAgIDEzMDIwOCwgMTMwMjEzLCAxMzAyMTgsIDEzMDIyMywgMTMwMjI4LCAxMzAyMzMsIDEzMDIzOCwgMTMwMjQzLCAxMzAyNTAsIAorICAgIDEzMDI1NCwgMTMwMjU5LCAxMzAyNjQsIDEzMDI2OSwgMTMwMjc0LCAxMzAyNzgsIDEzMDI4MywgMTMwMjg4LCAxMzAyOTMsIAorICAgIDEzMDI5OCwgMTMwMzAzLCAxMzAzMDgsIDEzMDMxMywgMTMwMzE4LCAxMzAzMjMsIDEzMDMyOSwgMTMwMzM1LCAxMzAzNDEsIAorICAgIDEzMDM0NywgMTMwMzUzLCAxMzAzNTgsIDEzMDM2NCwgMTMwMzcwLCAxMzAzNzYsIDEzMDM4MiwgMTMwMzg4LCAxMzAzOTQsIAorICAgIDEzMDQwMCwgMTMwNDA2LCAxMzA0MTIsIDEzMDQxOCwgMTMwNDI0LCAxMzA0MzAsIDEzMDQzNiwgMTMwNDQyLCAxMzA0NDgsIAorICAgIDEzMDQ1NCwgMTMwNDYwLCAxMzA0NjYsIDEzMDQ3MSwgMTMwNDc3LCAxMzA0ODMsIDEzMDQ4OSwgMTMwNDk1LCAxMzA1MDEsIAorICAgIDEzMDUwNywgMTMwNTEzLCAxMzA1MTksIDEzMDUyNSwgMTMwNTMxLCAxMzA1MzcsIDEzMDU0MywgMTMwNTQ5LCAxMzA1NTUsIAorICAgIDEzMDU2MSwgMTMwNTY3LCAxMzA1NzMsIDEzMDU3OSwgMTMwNTg1LCAxMzA1OTEsIDEzMDU5NiwgMTMwNjAyLCAxMzA2MDgsIAorICAgIDEzMDYxNCwgMTMwNjIwLCAxMzA2MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDYzMiwgMTMwNjM3LCAxMzA2NDIsIAorICAgIDEzMDY0NywgMTMwNjUyLCAxMzA2NTcsIDEzMDY2MiwgMTMwNjY2LCAxMzA2NzEsIDEzMDY3NiwgMTMwNjgxLCAxMzA2ODYsIAorICAgIDEzMDY5MSwgMTMwNjk2LCAxMzA3MDEsIDEzMDcwNiwgMTMwNzExLCAxMzA3MTUsIDEzMDcyMCwgMTMwNzI0LCAxMzA3MjksIAorICAgIDEzMDczNCwgMTMwNzM5LCAxMzA3NDQsIDEzMDc0OSwgMTMwNzUzLCAxMzA3NTgsIDEzMDc2MywgMTMwNzY3LCAxMzA3NzIsIAorICAgIDEzMDc3NywgMCwgMTMwNzgyLCAxMzA3ODcsIDEzMDc5MSwgMTMwNzk1LCAxMzA3OTksIDEzMDgwMywgMTMwODA3LCAKKyAgICAxMzA4MTEsIDEzMDgxNiwgMTMwODIwLCAwLCAwLCAwLCAwLCAxMzA4MjUsIDEzMDgyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MzM3LCAxMjgzNDQsIDEyODM1MCwgMTI4MzU3LCAxMjgzNjQsIAotICAgIDEyODM3MSwgMTI4Mzc4LCAxMjgzODUsIDEyODM5MiwgMTI4Mzk5LCAxMjg0MDYsIDEyODQxMywgMTI4NDIwLCAxMjg0MjcsIAotICAgIDEyODQzNCwgMTI4NDQxLCAxMjg0NDgsIDEyODQ1NSwgMTI4NDYxLCAxMjg0NjgsIDEyODQ3NSwgMTI4NDgyLCAxMjg0ODgsIAotICAgIDEyODQ5NSwgMTI4NTAxLCAxMjg1MDcsIDEyODUxNCwgMTI4NTIwLCAxMjg1MjcsIDEyODUzMywgMCwgMCwgMTI4NTM5LCAKLSAgICAxMjg1NDcsIDEyODU1NSwgMTI4NTY0LCAxMjg1NzMsIDEyODU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI4NTkwLCAxMjg1OTUsIDEyODYwMCwgMTI4NjA1LCAxMjg2MTAsIDEyODYxNSwgMTI4NjIwLCAxMjg2MjUsIDEyODYzMCwgCi0gICAgMTI4NjM1LCAxMjg2NDAsIDEyODY0NSwgMTI4NjUwLCAxMjg2NTUsIDEyODY2MCwgMTI4NjY1LCAxMjg2NzAsIDEyODY3NSwgCi0gICAgMTI4NjgwLCAxMjg2ODUsIDEyODY5MCwgMTI4Njk1LCAxMjg3MDAsIDEyODcwNSwgMTI4NzEwLCAxMjg3MTUsIDEyODcyMCwgCi0gICAgMTI4NzI1LCAxMjg3MzAsIDEyODczNSwgMTI4NzQwLCAxMjg3NDUsIDEyODc1MCwgMTI4NzU1LCAxMjg3NjAsIDEyODc2NSwgCi0gICAgMTI4NzcwLCAxMjg3NzUsIDEyODc4MCwgMTI4Nzg1LCAxMjg3OTAsIDEyODc5NSwgMTI4ODAwLCAxMjg4MDUsIDEyODgxMCwgCi0gICAgMTI4ODE1LCAxMjg4MjAsIDEyODgyNSwgMTI4ODMwLCAxMjg4MzcsIDEyODg0NCwgMTI4ODUxLCAxMjg4NTgsIDEyODg2NSwgCi0gICAgMTI4ODcyLCAxMjg4NzksIDEyODg4NiwgMTI4ODk1LCAxMjg5MDIsIDEyODkwOSwgMTI4OTE2LCAxMjg5MjMsIDEyODkzMCwgCi0gICAgMTI4OTM3LCAxMjg5NDQsIDEyODk1MSwgMTI4OTU4LCAxMjg5NjUsIDEyODk3MiwgMTI4OTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMjg5ODYsIDEyODk5MSwgMTI4OTk1LCAxMjg5OTksIDEyOTAwMywgMTI5MDA3LCAxMjkwMTEsIAotICAgIDEyOTAxNSwgMTI5MDIwLCAxMjkwMjQsIDAsIDEyOTAyOSwgMTI5MDM0LCAxMjkwMzksIDEyOTA0NiwgMTI5MDUxLCAKLSAgICAxMjkwNTgsIDEyOTA2NSwgMCwgMTI5MDcwLCAxMjkwNzcsIDEyOTA4MiwgMTI5MDg3LCAxMjkwOTQsIDEyOTEwMSwgCi0gICAgMTI5MTA2LCAxMjkxMTEsIDEyOTExNiwgMTI5MTIxLCAxMjkxMjYsIDEyOTEzMywgMTI5MTQwLCAxMjkxNDUsIDEyOTE1MCwgCi0gICAgMTI5MTU1LCAxMjkxNjgsIDEyOTE3NywgMTI5MTg0LCAxMjkxOTMsIDEyOTIwMiwgMCwgMCwgMCwgMCwgMCwgMTI5MjExLCAKLSAgICAxMjkyMTgsIDEyOTIyNSwgMTI5MjMyLCAxMjkyMzksIDEyOTI0NiwgMTI5MjUzLCAxMjkyNjAsIDEyOTI2NywgMTI5Mjc0LCAKLSAgICAxMjkyODEsIDEyOTI4OCwgMTI5Mjk1LCAxMjkzMDIsIDEyOTMwOSwgMTI5MzE2LCAxMjkzMjMsIDEyOTMzMCwgMTI5MzM3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA4MzQsIDEzMDg0MSwgCisgICAgMTMwODQ3LCAxMzA4NTQsIDEzMDg2MSwgMTMwODY4LCAxMzA4NzUsIDEzMDg4MiwgMTMwODg5LCAxMzA4OTYsIDEzMDkwMywgCisgICAgMTMwOTEwLCAxMzA5MTcsIDEzMDkyNCwgMTMwOTMxLCAxMzA5MzgsIDEzMDk0NSwgMTMwOTUyLCAxMzA5NTgsIDEzMDk2NSwgCisgICAgMTMwOTcyLCAxMzA5NzksIDEzMDk4NSwgMTMwOTkyLCAxMzA5OTgsIDEzMTAwNCwgMTMxMDExLCAxMzEwMTcsIDEzMTAyNCwgCisgICAgMTMxMDMwLCAwLCAwLCAxMzEwMzYsIDEzMTA0NCwgMTMxMDUyLCAxMzEwNjEsIDEzMTA3MCwgMTMxMDc5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMzEwODcsIDEzMTA5MiwgMTMxMDk3LCAxMzExMDIsIDEzMTEwNywgMTMxMTEyLCAxMzExMTcsIAorICAgIDEzMTEyMiwgMTMxMTI3LCAxMzExMzIsIDEzMTEzNywgMTMxMTQyLCAxMzExNDcsIDEzMTE1MiwgMTMxMTU3LCAxMzExNjIsIAorICAgIDEzMTE2NywgMTMxMTcyLCAxMzExNzcsIDEzMTE4MiwgMTMxMTg3LCAxMzExOTIsIDEzMTE5NywgMTMxMjAyLCAxMzEyMDcsIAorICAgIDEzMTIxMiwgMTMxMjE3LCAxMzEyMjIsIDEzMTIyNywgMTMxMjMyLCAxMzEyMzcsIDEzMTI0MiwgMTMxMjQ3LCAxMzEyNTIsIAorICAgIDEzMTI1NywgMTMxMjYyLCAxMzEyNjcsIDEzMTI3MiwgMTMxMjc3LCAxMzEyODIsIDEzMTI4NywgMTMxMjkyLCAxMzEyOTcsIAorICAgIDEzMTMwMiwgMTMxMzA3LCAxMzEzMTIsIDEzMTMxNywgMTMxMzIyLCAxMzEzMjcsIDEzMTMzNCwgMTMxMzQxLCAxMzEzNDgsIAorICAgIDEzMTM1NSwgMTMxMzYyLCAxMzEzNjksIDEzMTM3NiwgMTMxMzgzLCAxMzEzOTIsIDEzMTM5OSwgMTMxNDA2LCAxMzE0MTMsIAorICAgIDEzMTQyMCwgMTMxNDI3LCAxMzE0MzQsIDEzMTQ0MSwgMTMxNDQ4LCAxMzE0NTUsIDEzMTQ2MiwgMTMxNDY5LCAxMzE0NzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTQ4MywgMTMxNDg4LCAxMzE0OTIsIDEzMTQ5NiwgMTMxNTAwLCAKKyAgICAxMzE1MDQsIDEzMTUwOCwgMTMxNTEyLCAxMzE1MTcsIDEzMTUyMSwgMCwgMTMxNTI2LCAxMzE1MzEsIDEzMTUzNiwgCisgICAgMTMxNTQzLCAxMzE1NDgsIDEzMTU1NSwgMTMxNTYyLCAwLCAxMzE1NjcsIDEzMTU3NCwgMTMxNTc5LCAxMzE1ODQsIAorICAgIDEzMTU5MSwgMTMxNTk4LCAxMzE2MDMsIDEzMTYwOCwgMTMxNjEzLCAxMzE2MTgsIDEzMTYyMywgMTMxNjMwLCAxMzE2MzcsIAorICAgIDEzMTY0MiwgMTMxNjQ3LCAxMzE2NTIsIDEzMTY2NSwgMTMxNjc0LCAxMzE2ODEsIDEzMTY5MCwgMTMxNjk5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzE3MDgsIDEzMTcxNSwgMTMxNzIyLCAxMzE3MjksIDEzMTczNiwgMTMxNzQzLCAxMzE3NTAsIDEzMTc1NywgCisgICAgMTMxNzY0LCAxMzE3NzEsIDEzMTc3OCwgMTMxNzg1LCAxMzE3OTIsIDEzMTc5OSwgMTMxODA2LCAxMzE4MTMsIDEzMTgyMCwgCisgICAgMTMxODI3LCAxMzE4MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTg0MSwgCisgICAgMTMxODQ0LCAxMzE4NDgsIDEzMTg1MiwgMTMxODU2LCAxMzE4NTksIDEzMTg2MywgMTMxODY4LCAxMzE4NzIsIDEzMTg3NiwgCisgICAgMTMxODgwLCAxMzE4ODQsIDEzMTg4OCwgMTMxODkzLCAxMzE4OTgsIDEzMTkwMiwgMTMxOTA2LCAxMzE5MDksIDEzMTkxMywgCisgICAgMTMxOTE4LCAxMzE5MjMsIDEzMTkyNywgMTMxOTMxLCAxMzE5MzQsIDEzMTkzOCwgMTMxOTQyLCAxMzE5NDYsIDEzMTk1MCwgCisgICAgMTMxOTU0LCAxMzE5NTgsIDEzMTk2MiwgMTMxOTY1LCAxMzE5NjksIDEzMTk3MywgMTMxOTc3LCAxMzE5ODEsIDEzMTk4NSwgCisgICAgMTMxOTg5LCAxMzE5OTUsIDEzMTk5OCwgMTMyMDAyLCAxMzIwMDYsIDEzMjAxMCwgMTMyMDE0LCAxMzIwMTgsIDEzMjAyMiwgCisgICAgMTMyMDI2LCAxMzIwMzAsIDEzMjAzNCwgMTMyMDM5LCAxMzIwNDQsIDEzMjA1MCwgMTMyMDU0LCAxMzIwNTgsIDEzMjA2MiwgCisgICAgMTMyMDY2LCAxMzIwNzAsIDEzMjA3NCwgMTMyMDc5LCAxMzIwODMsIDEzMjA4NywgMTMyMDkxLCAxMzIwOTUsIDEzMjA5OSwgCisgICAgMTMyMTA1LCAxMzIxMDksIDEzMjExMywgMTMyMTE3LCAxMzIxMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMjEyNSwgMTMyMTI5LCAxMzIxMzMsIDEzMjEzOSwgMTMyMTQ1LCAxMzIxNDksIDEzMjE1NCwgMTMyMTU5LCAxMzIxNjQsIAorICAgIDEzMjE2OSwgMTMyMTczLCAxMzIxNzgsIDEzMjE4MywgMTMyMTg4LCAxMzIxOTIsIDEzMjE5NywgMTMyMjAyLCAxMzIyMDcsIAorICAgIDEzMjIxMSwgMTMyMjE2LCAxMzIyMjEsIDEzMjIyNiwgMTMyMjMxLCAxMzIyMzYsIDEzMjI0MSwgMTMyMjQ2LCAxMzIyNTEsIAorICAgIDEzMjI1NSwgMTMyMjYwLCAxMzIyNjUsIDEzMjI3MCwgMTMyMjc1LCAxMzIyODAsIDEzMjI4NSwgMTMyMjkwLCAxMzIyOTUsIAorICAgIDEzMjMwMCwgMTMyMzA1LCAxMzIzMTAsIDEzMjMxNywgMTMyMzIyLCAxMzIzMjksIDEzMjMzNCwgMTMyMzM5LCAxMzIzNDQsIAorICAgIDEzMjM0OSwgMTMyMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIzNTksIAorICAgIDEzMjM2MywgMTMyMzY5LCAxMzIzNzIsIDEzMjM3NSwgMTMyMzc5LCAxMzIzODMsIDEzMjM4NywgMTMyMzkxLCAxMzIzOTUsIAorICAgIDEzMjM5OSwgMTMyNDAzLCAxMzI0MDksIDEzMjQxNSwgMTMyNDIxLCAxMzI0MjcsIDEzMjQzMywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5MzQ0LCAxMjkzNDcsIDEyOTM1MSwgCi0gICAgMTI5MzU1LCAxMjkzNTksIDEyOTM2MiwgMTI5MzY2LCAxMjkzNzEsIDEyOTM3NSwgMTI5Mzc5LCAxMjkzODMsIDEyOTM4NywgCi0gICAgMTI5MzkxLCAxMjkzOTYsIDEyOTQwMSwgMTI5NDA1LCAxMjk0MDksIDEyOTQxMywgMTI5NDE3LCAxMjk0MjIsIDEyOTQyOCwgCi0gICAgMTI5NDMyLCAxMjk0MzYsIDEyOTQ0MCwgMTI5NDQ0LCAxMjk0NDgsIDEyOTQ1MiwgMTI5NDU2LCAxMjk0NjAsIDEyOTQ2NCwgCi0gICAgMTI5NDY4LCAxMjk0NzEsIDEyOTQ3NSwgMTI5NDc5LCAxMjk0ODMsIDEyOTQ4NywgMTI5NDkxLCAxMjk0OTUsIDEyOTUwMSwgCi0gICAgMTI5NTA0LCAxMjk1MDgsIDEyOTUxMiwgMTI5NTE2LCAxMjk1MjAsIDEyOTUyNCwgMTI5NTI4LCAxMjk1MzIsIDEyOTUzNiwgCi0gICAgMTI5NTQwLCAxMjk1NDUsIDEyOTU1MCwgMTI5NTU2LCAxMjk1NjAsIDEyOTU2NCwgMTI5NTY4LCAxMjk1NzIsIDEyOTU3NiwgCi0gICAgMTI5NTgwLCAxMjk1ODUsIDEyOTU4OSwgMTI5NTkzLCAxMjk1OTcsIDEyOTYwMSwgMTI5NjA1LCAxMjk2MTEsIDEyOTYxNSwgCi0gICAgMTI5NjE5LCAxMjk2MjMsIDEyOTYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5NjMxLCAxMjk2MzUsIAotICAgIDEyOTYzOSwgMTI5NjQ1LCAxMjk2NTEsIDEyOTY1NSwgMTI5NjYwLCAxMjk2NjUsIDEyOTY3MCwgMTI5Njc1LCAxMjk2NzksIAotICAgIDEyOTY4NCwgMTI5Njg5LCAxMjk2OTQsIDEyOTY5OCwgMTI5NzAzLCAxMjk3MDgsIDEyOTcxMywgMTI5NzE3LCAxMjk3MjIsIAotICAgIDEyOTcyNywgMTI5NzMyLCAxMjk3MzcsIDEyOTc0MiwgMTI5NzQ3LCAxMjk3NTIsIDEyOTc1NywgMTI5NzYxLCAxMjk3NjYsIAotICAgIDEyOTc3MSwgMTI5Nzc2LCAxMjk3ODEsIDEyOTc4NiwgMTI5NzkxLCAxMjk3OTYsIDEyOTgwMSwgMTI5ODA2LCAxMjk4MTEsIAotICAgIDEyOTgxNiwgMTI5ODIzLCAxMjk4MjgsIDEyOTgzNSwgMTI5ODQwLCAxMjk4NDUsIDEyOTg1MCwgMTI5ODU1LCAxMjk4NjAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2NSwgMTI5ODY5LCAxMjk4NzUsIAotICAgIDEyOTg3OCwgMTI5ODgxLCAxMjk4ODUsIDEyOTg4OSwgMTI5ODkzLCAxMjk4OTcsIDEyOTkwMSwgMTI5OTA1LCAxMjk5MDksIAotICAgIDEyOTkxNSwgMTI5OTIxLCAxMjk5MjcsIDEyOTkzMywgMTI5OTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjQ0MywgMTMyNDQ2LCAKKyAgICAxMzI0NDksIDEzMjQ1MiwgMTMyNDU1LCAxMzI0NTgsIDEzMjQ2MSwgMTMyNDY0LCAxMzI0NjcsIDEzMjQ3MCwgMTMyNDczLCAKKyAgICAxMzI0NzYsIDEzMjQ3OSwgMTMyNDgyLCAxMzI0ODUsIDEzMjQ4OCwgMTMyNDkxLCAxMzI0OTQsIDEzMjQ5NywgMTMyNTAwLCAKKyAgICAxMzI1MDMsIDEzMjUwNiwgMTMyNTA5LCAxMzI1MTIsIDEzMjUxNSwgMTMyNTE4LCAxMzI1MjEsIDEzMjUyNCwgMTMyNTI3LCAKKyAgICAxMzI1MzAsIDEzMjUzMywgMTMyNTM2LCAxMzI1MzksIDEzMjU0MiwgMTMyNTQ1LCAxMzI1NDgsIDEzMjU1MSwgMTMyNTU0LCAKKyAgICAxMzI1NTcsIDEzMjU2MCwgMTMyNTYzLCAxMzI1NjYsIDEzMjU2OSwgMTMyNTcyLCAxMzI1NzUsIDEzMjU3OCwgMTMyNTgxLCAKKyAgICAxMzI1ODQsIDEzMjU4NywgMTMyNTkwLCAxMzI1OTMsIDEzMjU5NiwgMTMyNTk5LCAxMzI2MDIsIDEzMjYwNSwgMTMyNjA4LCAKKyAgICAxMzI2MTEsIDEzMjYxNCwgMTMyNjE3LCAxMzI2MjAsIDEzMjYyMywgMTMyNjI2LCAxMzI2MjksIDEzMjYzMiwgMTMyNjM1LCAKKyAgICAxMzI2MzgsIDEzMjY0MSwgMTMyNjQ0LCAxMzI2NDcsIDEzMjY1MCwgMTMyNjUzLCAxMzI2NTYsIDEzMjY1OSwgMTMyNjYyLCAKKyAgICAxMzI2NjUsIDEzMjY2OCwgMTMyNjcxLCAxMzI2NzQsIDEzMjY3NywgMTMyNjgwLCAxMzI2ODMsIDEzMjY4NiwgMTMyNjg5LCAKKyAgICAxMzI2OTIsIDEzMjY5NSwgMTMyNjk4LCAxMzI3MDEsIDEzMjcwNCwgMTMyNzA3LCAxMzI3MTAsIDEzMjcxMywgMTMyNzE2LCAKKyAgICAxMzI3MTksIDEzMjcyMiwgMTMyNzI1LCAxMzI3MjgsIDEzMjczMSwgMTMyNzM0LCAxMzI3MzcsIDEzMjc0MCwgMTMyNzQzLCAKKyAgICAxMzI3NDYsIDEzMjc0OSwgMTMyNzUyLCAxMzI3NTUsIDEzMjc1OCwgMTMyNzYxLCAxMzI3NjQsIDEzMjc2NywgMTMyNzcwLCAKKyAgICAxMzI3NzMsIDEzMjc3NiwgMTMyNzc5LCAxMzI3ODIsIDEzMjc4NSwgMTMyNzg4LCAxMzI3OTEsIDEzMjc5NCwgMTMyNzk3LCAKKyAgICAxMzI4MDAsIDEzMjgwMywgMTMyODA2LCAxMzI4MDksIDEzMjgxMiwgMTMyODE1LCAxMzI4MTgsIDEzMjgyMSwgMTMyODI0LCAKKyAgICAxMzI4MjcsIDEzMjgzMCwgMTMyODMzLCAxMzI4MzYsIDEzMjgzOSwgMTMyODQyLCAxMzI4NDUsIDEzMjg0OCwgMTMyODUxLCAKKyAgICAxMzI4NTQsIDEzMjg1NywgMTMyODYwLCAxMzI4NjMsIDEzMjg2NiwgMTMyODY5LCAxMzI4NzIsIDEzMjg3NSwgMTMyODc4LCAKKyAgICAxMzI4ODEsIDEzMjg4NCwgMTMyODg3LCAxMzI4OTAsIDEzMjg5MywgMTMyODk2LCAxMzI4OTksIDEzMjkwMiwgMTMyOTA1LCAKKyAgICAxMzI5MDgsIDEzMjkxMSwgMTMyOTE0LCAxMzI5MTcsIDEzMjkyMCwgMTMyOTIzLCAxMzI5MjYsIDEzMjkyOSwgMTMyOTMyLCAKKyAgICAxMzI5MzUsIDEzMjkzOCwgMTMyOTQxLCAxMzI5NDQsIDEzMjk0NywgMTMyOTUwLCAxMzI5NTMsIDEzMjk1NiwgMTMyOTU5LCAKKyAgICAxMzI5NjIsIDEzMjk2NSwgMTMyOTY4LCAxMzI5NzEsIDEzMjk3NCwgMTMyOTc3LCAxMzI5ODAsIDEzMjk4MywgMTMyOTg2LCAKKyAgICAxMzI5ODksIDEzMjk5MiwgMTMyOTk1LCAxMzI5OTgsIDEzMzAwMSwgMTMzMDA0LCAxMzMwMDcsIDEzMzAxMCwgMTMzMDEzLCAKKyAgICAxMzMwMTYsIDEzMzAxOSwgMTMzMDIyLCAxMzMwMjUsIDEzMzAyOCwgMTMzMDMxLCAxMzMwMzQsIDEzMzAzNywgMTMzMDQwLCAKKyAgICAxMzMwNDMsIDEzMzA0NiwgMTMzMDQ5LCAxMzMwNTIsIDEzMzA1NSwgMTMzMDU4LCAxMzMwNjEsIDEzMzA2NCwgMTMzMDY3LCAKKyAgICAxMzMwNzAsIDEzMzA3MywgMTMzMDc2LCAxMzMwNzksIDEzMzA4MiwgMTMzMDg1LCAxMzMwODgsIDEzMzA5MSwgMTMzMDk0LCAKKyAgICAxMzMwOTcsIDEzMzEwMCwgMTMzMTAzLCAxMzMxMDYsIDEzMzEwOSwgMTMzMTEyLCAxMzMxMTUsIDEzMzExOCwgMTMzMTIxLCAKKyAgICAxMzMxMjQsIDEzMzEyNywgMTMzMTMwLCAxMzMxMzMsIDEzMzEzNiwgMTMzMTM5LCAxMzMxNDIsIDEzMzE0NSwgMTMzMTQ4LCAKKyAgICAxMzMxNTEsIDEzMzE1NCwgMTMzMTU3LCAxMzMxNjAsIDEzMzE2MywgMTMzMTY2LCAxMzMxNjksIDEzMzE3MiwgMTMzMTc1LCAKKyAgICAxMzMxNzgsIDEzMzE4MSwgMTMzMTg0LCAxMzMxODcsIDEzMzE5MCwgMTMzMTkzLCAxMzMxOTYsIDEzMzE5OSwgMTMzMjAyLCAKKyAgICAxMzMyMDUsIDEzMzIwOCwgMTMzMjExLCAxMzMyMTQsIDEzMzIxNywgMTMzMjIwLCAxMzMyMjMsIDEzMzIyNiwgMTMzMjI5LCAKKyAgICAxMzMyMzIsIDEzMzIzNSwgMTMzMjM4LCAxMzMyNDEsIDEzMzI0NCwgMTMzMjQ3LCAxMzMyNTAsIDEzMzI1MywgMTMzMjU2LCAKKyAgICAxMzMyNTksIDEzMzI2MiwgMTMzMjY1LCAxMzMyNjgsIDEzMzI3MSwgMTMzMjc0LCAxMzMyNzcsIDEzMzI4MCwgMTMzMjgzLCAKKyAgICAxMzMyODYsIDEzMzI4OSwgMTMzMjkyLCAxMzMyOTUsIDEzMzI5OCwgMTMzMzAxLCAxMzMzMDQsIDEzMzMwNywgMTMzMzEwLCAKKyAgICAxMzMzMTMsIDEzMzMxNiwgMTMzMzE5LCAxMzMzMjIsIDEzMzMyNSwgMTMzMzI4LCAxMzMzMzEsIDEzMzMzNCwgMTMzMzM3LCAKKyAgICAxMzMzNDAsIDEzMzM0MywgMTMzMzQ2LCAxMzMzNDksIDEzMzM1MiwgMTMzMzU1LCAxMzMzNTgsIDEzMzM2MSwgMTMzMzY0LCAKKyAgICAxMzMzNjcsIDEzMzM3MCwgMTMzMzczLCAxMzMzNzYsIDEzMzM3OSwgMTMzMzgyLCAxMzMzODUsIDEzMzM4OCwgMTMzMzkxLCAKKyAgICAxMzMzOTQsIDEzMzM5NywgMTMzNDAwLCAxMzM0MDMsIDEzMzQwNiwgMTMzNDA5LCAxMzM0MTIsIDEzMzQxNSwgMTMzNDE4LCAKKyAgICAxMzM0MjEsIDEzMzQyNCwgMTMzNDI3LCAxMzM0MzAsIDEzMzQzMywgMTMzNDM2LCAxMzM0MzksIDEzMzQ0MiwgMTMzNDQ1LCAKKyAgICAxMzM0NDgsIDEzMzQ1MSwgMTMzNDU0LCAxMzM0NTcsIDEzMzQ2MCwgMTMzNDYzLCAxMzM0NjYsIDEzMzQ2OSwgMTMzNDcyLCAKKyAgICAxMzM0NzUsIDEzMzQ3OCwgMTMzNDgxLCAxMzM0ODQsIDEzMzQ4NywgMTMzNDkwLCAxMzM0OTMsIDEzMzQ5NiwgMTMzNDk5LCAKKyAgICAxMzM1MDIsIDEzMzUwNSwgMTMzNTA4LCAxMzM1MTEsIDEzMzUxNCwgMTMzNTE3LCAxMzM1MjAsIDEzMzUyMywgMTMzNTI2LCAKKyAgICAxMzM1MjksIDEzMzUzMiwgMTMzNTM1LCAxMzM1MzgsIDEzMzU0MSwgMTMzNTQ0LCAxMzM1NDcsIDEzMzU1MCwgMTMzNTUzLCAKKyAgICAxMzM1NTYsIDEzMzU1OSwgMTMzNTYyLCAxMzM1NjUsIDEzMzU2OCwgMTMzNTcxLCAxMzM1NzQsIDEzMzU3NywgMTMzNTgwLCAKKyAgICAxMzM1ODMsIDEzMzU4NiwgMTMzNTg5LCAxMzM1OTIsIDEzMzU5NSwgMTMzNTk4LCAxMzM2MDEsIDEzMzYwNCwgMTMzNjA3LCAKKyAgICAxMzM2MTAsIDEzMzYxMywgMTMzNjE2LCAxMzM2MTksIDEzMzYyMiwgMTMzNjI1LCAxMzM2MjgsIDEzMzYzMSwgMTMzNjM0LCAKKyAgICAxMzM2MzcsIDEzMzY0MCwgMTMzNjQzLCAxMzM2NDYsIDEzMzY0OSwgMTMzNjUyLCAxMzM2NTUsIDEzMzY1OCwgMTMzNjYxLCAKKyAgICAxMzM2NjQsIDEzMzY2NywgMTMzNjcwLCAxMzM2NzMsIDEzMzY3NiwgMTMzNjc5LCAxMzM2ODIsIDEzMzY4NSwgMTMzNjg4LCAKKyAgICAxMzM2OTEsIDEzMzY5NCwgMTMzNjk3LCAxMzM3MDAsIDEzMzcwMywgMTMzNzA2LCAxMzM3MDksIDEzMzcxMiwgMTMzNzE1LCAKKyAgICAxMzM3MTgsIDEzMzcyMSwgMTMzNzI0LCAxMzM3MjcsIDEzMzczMCwgMTMzNzMzLCAxMzM3MzYsIDEzMzczOSwgMTMzNzQyLCAKKyAgICAxMzM3NDUsIDEzMzc0OCwgMTMzNzUxLCAxMzM3NTQsIDEzMzc1NywgMTMzNzYwLCAxMzM3NjMsIDEzMzc2NiwgMTMzNzY5LCAKKyAgICAxMzM3NzIsIDEzMzc3NSwgMTMzNzc4LCAxMzM3ODEsIDEzMzc4NCwgMTMzNzg3LCAxMzM3OTAsIDEzMzc5MywgMTMzNzk2LCAKKyAgICAxMzM3OTksIDEzMzgwMiwgMTMzODA1LCAxMzM4MDgsIDEzMzgxMSwgMTMzODE0LCAxMzM4MTcsIDEzMzgyMCwgMTMzODIzLCAKKyAgICAxMzM4MjYsIDEzMzgyOSwgMTMzODMyLCAxMzM4MzUsIDEzMzgzOCwgMTMzODQxLCAxMzM4NDQsIDEzMzg0NywgMTMzODUwLCAKKyAgICAxMzM4NTMsIDEzMzg1NiwgMTMzODU5LCAxMzM4NjIsIDEzMzg2NSwgMTMzODY4LCAxMzM4NzEsIDEzMzg3NCwgMTMzODc3LCAKKyAgICAxMzM4ODAsIDEzMzg4MywgMTMzODg2LCAxMzM4ODksIDEzMzg5MiwgMTMzODk1LCAxMzM4OTgsIDEzMzkwMSwgMTMzOTA0LCAKKyAgICAxMzM5MDcsIDEzMzkxMCwgMTMzOTEzLCAxMzM5MTYsIDEzMzkxOSwgMTMzOTIyLCAxMzM5MjUsIDEzMzkyOCwgMTMzOTMxLCAKKyAgICAxMzM5MzQsIDEzMzkzNywgMTMzOTQwLCAxMzM5NDMsIDEzMzk0NiwgMTMzOTQ5LCAxMzM5NTIsIDEzMzk1NSwgMTMzOTU4LCAKKyAgICAxMzM5NjEsIDEzMzk2NCwgMTMzOTY3LCAxMzM5NzAsIDEzMzk3MywgMTMzOTc2LCAxMzM5NzksIDEzMzk4MiwgMTMzOTg1LCAKKyAgICAxMzM5ODgsIDEzMzk5MSwgMTMzOTk0LCAxMzM5OTcsIDEzNDAwMCwgMTM0MDAzLCAxMzQwMDYsIDEzNDAwOSwgMTM0MDEyLCAKKyAgICAxMzQwMTUsIDEzNDAxOCwgMTM0MDIxLCAxMzQwMjQsIDEzNDAyNywgMTM0MDMwLCAxMzQwMzMsIDEzNDAzNiwgMTM0MDM5LCAKKyAgICAxMzQwNDIsIDEzNDA0NSwgMTM0MDQ4LCAxMzQwNTEsIDEzNDA1NCwgMTM0MDU3LCAxMzQwNjAsIDEzNDA2MywgMTM0MDY2LCAKKyAgICAxMzQwNjksIDEzNDA3MiwgMTM0MDc1LCAxMzQwNzgsIDEzNDA4MSwgMTM0MDg0LCAxMzQwODcsIDEzNDA5MCwgMTM0MDkzLCAKKyAgICAxMzQwOTYsIDEzNDA5OSwgMTM0MTAyLCAxMzQxMDUsIDEzNDEwOCwgMTM0MTExLCAxMzQxMTQsIDEzNDExNywgMTM0MTIwLCAKKyAgICAxMzQxMjMsIDEzNDEyNiwgMTM0MTI5LCAxMzQxMzIsIDEzNDEzNSwgMTM0MTM4LCAxMzQxNDEsIDEzNDE0NCwgMTM0MTQ3LCAKKyAgICAxMzQxNTAsIDEzNDE1MywgMTM0MTU2LCAxMzQxNTksIDEzNDE2MiwgMTM0MTY1LCAxMzQxNjgsIDEzNDE3MSwgMTM0MTc0LCAKKyAgICAxMzQxNzcsIDEzNDE4MCwgMTM0MTgzLCAxMzQxODYsIDEzNDE4OSwgMTM0MTkyLCAxMzQxOTUsIDEzNDE5OCwgMTM0MjAxLCAKKyAgICAxMzQyMDQsIDEzNDIwNywgMTM0MjEwLCAxMzQyMTMsIDEzNDIxNiwgMTM0MjE5LCAxMzQyMjIsIDEzNDIyNSwgMTM0MjI4LCAKKyAgICAxMzQyMzEsIDEzNDIzNCwgMTM0MjM3LCAxMzQyNDAsIDEzNDI0MywgMTM0MjQ2LCAxMzQyNDksIDEzNDI1MiwgMTM0MjU1LCAKKyAgICAxMzQyNTgsIDEzNDI2MSwgMTM0MjY0LCAxMzQyNjcsIDEzNDI3MCwgMTM0MjczLCAxMzQyNzYsIDEzNDI3OSwgMTM0MjgyLCAKKyAgICAxMzQyODUsIDEzNDI4OCwgMTM0MjkxLCAxMzQyOTQsIDEzNDI5NywgMTM0MzAwLCAxMzQzMDMsIDEzNDMwNiwgMTM0MzA5LCAKKyAgICAxMzQzMTIsIDEzNDMxNSwgMTM0MzE4LCAxMzQzMjEsIDEzNDMyNCwgMTM0MzI3LCAxMzQzMzAsIDEzNDMzMywgMTM0MzM2LCAKKyAgICAxMzQzMzksIDEzNDM0MiwgMTM0MzQ1LCAxMzQzNDgsIDEzNDM1MSwgMTM0MzU0LCAxMzQzNTcsIDEzNDM2MCwgMTM0MzYzLCAKKyAgICAxMzQzNjYsIDEzNDM2OSwgMTM0MzcyLCAxMzQzNzUsIDEzNDM3OCwgMTM0MzgxLCAxMzQzODQsIDEzNDM4NywgMTM0MzkwLCAKKyAgICAxMzQzOTMsIDEzNDM5NiwgMTM0Mzk5LCAxMzQ0MDIsIDEzNDQwNSwgMTM0NDA4LCAxMzQ0MTEsIDEzNDQxNCwgMTM0NDE3LCAKKyAgICAxMzQ0MjAsIDEzNDQyMywgMTM0NDI2LCAxMzQ0MjksIDEzNDQzMiwgMTM0NDM1LCAxMzQ0MzgsIDEzNDQ0MSwgMTM0NDQ0LCAKKyAgICAxMzQ0NDcsIDEzNDQ1MCwgMTM0NDUzLCAxMzQ0NTYsIDEzNDQ1OSwgMTM0NDYyLCAxMzQ0NjUsIDEzNDQ2OCwgMTM0NDcxLCAKKyAgICAxMzQ0NzQsIDEzNDQ3NywgMTM0NDgwLCAxMzQ0ODMsIDEzNDQ4NiwgMTM0NDg5LCAxMzQ0OTIsIDEzNDQ5NSwgMTM0NDk4LCAKKyAgICAxMzQ1MDEsIDEzNDUwNCwgMTM0NTA3LCAxMzQ1MTAsIDEzNDUxMywgMTM0NTE2LCAxMzQ1MTksIDEzNDUyMiwgMTM0NTI1LCAKKyAgICAxMzQ1MjgsIDEzNDUzMSwgMTM0NTM0LCAxMzQ1MzcsIDEzNDU0MCwgMTM0NTQzLCAxMzQ1NDYsIDEzNDU0OSwgMTM0NTUyLCAKKyAgICAxMzQ1NTUsIDEzNDU1OCwgMTM0NTYxLCAxMzQ1NjQsIDEzNDU2NywgMTM0NTcwLCAxMzQ1NzMsIDEzNDU3NiwgMTM0NTc5LCAKKyAgICAxMzQ1ODIsIDEzNDU4NSwgMTM0NTg4LCAxMzQ1OTEsIDEzNDU5NCwgMTM0NTk3LCAxMzQ2MDAsIDEzNDYwMywgMTM0NjA2LCAKKyAgICAxMzQ2MDksIDEzNDYxMiwgMTM0NjE1LCAxMzQ2MTgsIDEzNDYyMSwgMTM0NjI0LCAxMzQ2MjcsIDEzNDYzMCwgMTM0NjMzLCAKKyAgICAxMzQ2MzYsIDEzNDYzOSwgMTM0NjQyLCAxMzQ2NDUsIDEzNDY0OCwgMTM0NjUxLCAxMzQ2NTQsIDEzNDY1NywgMTM0NjYwLCAKKyAgICAxMzQ2NjMsIDEzNDY2NiwgMTM0NjY5LCAxMzQ2NzIsIDEzNDY3NSwgMTM0Njc4LCAxMzQ2ODEsIDEzNDY4NCwgMTM0Njg3LCAKKyAgICAxMzQ2OTAsIDEzNDY5MywgMTM0Njk2LCAxMzQ2OTksIDEzNDcwMiwgMTM0NzA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzQ3MDgsIDEzNDcxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTQ1LCAxMjk5NTAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTk0MjYsNjUwICsyMDY2OCw2ODMgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzQ3MTksIDEzNDcyMywgMTM0NzI3LCAxMzQ3MzEsIDEzNDczNSwgMTM0NzM5LCAxMzQ3NDMsIDEzNDc0NiwgMTM0NzUwLCAKKyAgICAxMzQ3NTQsIDEzNDc1OCwgMTM0NzYyLCAxMzQ3NjUsIDEzNDc3MSwgMTM0Nzc3LCAxMzQ3ODMsIDEzNDc4OSwgMTM0Nzk1LCAKKyAgICAxMzQ3OTksIDEzNDgwNSwgMTM0ODA5LCAxMzQ4MTMsIDEzNDgxOSwgMTM0ODIzLCAxMzQ4MjcsIDEzNDgzMSwgMTM0ODM1LCAKKyAgICAxMzQ4MzksIDEzNDg0MywgMTM0ODQ3LCAxMzQ4NTMsIDEzNDg1OSwgMTM0ODY1LCAxMzQ4NzEsIDEzNDg3OCwgMTM0ODg1LCAKKyAgICAxMzQ4OTIsIDEzNDkwMiwgMTM0OTA5LCAxMzQ5MTYsIDEzNDkyMiwgMTM0OTI4LCAxMzQ5MzQsIDEzNDk0MCwgMTM0OTQ4LCAKKyAgICAxMzQ5NTYsIDEzNDk2NCwgMTM0OTcyLCAxMzQ5ODEsIDEzNDk4NywgMTM0OTk1LCAxMzUwMDEsIDEzNTAwOCwgMTM1MDE0LCAKKyAgICAxMzUwMjEsIDEzNTAyNywgMTM1MDM1LCAxMzUwMzksIDEzNTA0MywgMTM1MDQ4LCAxMzUwNTQsIDEzNTA2MCwgMTM1MDY4LCAKKyAgICAxMzUwNzYsIDEzNTA4MiwgMTM1MDg5LCAxMzUwOTIsIDEzNTA5OCwgMTM1MTAyLCAxMzUxMDUsIDEzNTEwOSwgMTM1MTEyLCAKKyAgICAxMzUxMTUsIDEzNTExOSwgMTM1MTI0LCAxMzUxMjgsIDEzNTEzMiwgMTM1MTM4LCAxMzUxNDMsIDEzNTE0OSwgMTM1MTUzLCAKKyAgICAxMzUxNTcsIDEzNTE2MCwgMTM1MTY0LCAxMzUxNjgsIDEzNTE3MywgMTM1MTc3LCAxMzUxODIsIDEzNTE4NiwgMTM1MTkxLCAKKyAgICAxMzUxOTUsIDEzNTE5OSwgMTM1MjAzLCAxMzUyMDcsIDEzNTIxMSwgMTM1MjE1LCAxMzUyMTksIDEzNTIyMywgMTM1MjI4LCAKKyAgICAxMzUyMzMsIDEzNTIzOCwgMTM1MjQzLCAxMzUyNDksIDEzNTI1NSwgMTM1MjYxLCAxMzUyNjcsIDEzNTI3MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM1Mjc4LCAxMzUyODYsIDEzNTI5NSwgMTM1MzAzLCAxMzUzMTAsIDEzNTMxOCwgMTM1MzI1LCAxMzUzMzIsIAorICAgIDEzNTM0MSwgMTM1MzQ4LCAxMzUzNTUsIDEzNTM2MiwgMTM1MzcwLCAwLCAwLCAwLCAxMzUzNzgsIDEzNTM4MywgMTM1MzkwLCAKKyAgICAxMzUzOTYsIDEzNTQwMywgMTM1NDA5LCAxMzU0MTUsIDEzNTQyMSwgMTM1NDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzU0MzMsIDEzNTQzOCwgMTM1NDQ1LCAxMzU0NTEsIDEzNTQ1OCwgMTM1NDY0LCAxMzU0NzAsIDEzNTQ3NiwgMTM1NDgyLCAKKyAgICAxMzU0ODgsIDAsIDAsIDEzNTQ5MywgMTM1NDk5LCAxMzU1MDUsIDEzNTUwOCwgMTM1NTE3LCAxMzU1MjQsIDEzNTUzMiwgCisgICAgMTM1NTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NTYsIDEyOTk2MCwgMTI5OTY0LCAxMjk5NjgsIDEyOTk3MiwgMTI5OTc2LCAKLSAgICAxMjk5ODAsIDEyOTk4MywgMTI5OTg3LCAxMjk5OTEsIDEyOTk5NSwgMTI5OTk5LCAxMzAwMDIsIDEzMDAwOCwgMTMwMDEzLCAKLSAgICAxMzAwMTksIDEzMDAyNSwgMTMwMDMwLCAxMzAwMzQsIDEzMDA0MCwgMTMwMDQ0LCAxMzAwNDgsIDEzMDA1NCwgMTMwMDU4LCAKLSAgICAxMzAwNjIsIDEzMDA2NiwgMTMwMDcwLCAxMzAwNzQsIDEzMDA3OCwgMTMwMDgxLCAxMzAwODcsIDEzMDA5MywgMTMwMDk5LCAKLSAgICAxMzAxMDUsIDEzMDExMiwgMTMwMTE5LCAxMzAxMjYsIDEzMDEzNiwgMTMwMTQzLCAxMzAxNTAsIDEzMDE1NSwgMTMwMTYwLCAKLSAgICAxMzAxNjUsIDEzMDE3MCwgMTMwMTc3LCAxMzAxODQsIDEzMDE5MSwgMTMwMTk4LCAxMzAyMDcsIDEzMDIxMywgMTMwMjIwLCAKLSAgICAxMzAyMjYsIDEzMDIzMywgMTMwMjM5LCAxMzAyNDYsIDEzMDI1MSwgMTMwMjU4LCAxMzAyNjIsIDEzMDI2NiwgMTMwMjcxLCAKLSAgICAxMzAyNzcsIDEzMDI4MywgMTMwMjkwLCAxMzAyOTcsIDEzMDMwMywgMTMwMzEwLCAxMzAzMTMsIDEzMDMxOSwgMTMwMzIzLCAKLSAgICAxMzAzMjYsIDEzMDMzMCwgMTMwMzMzLCAxMzAzMzYsIDEzMDM0MCwgMTMwMzQ1LCAxMzAzNDksIDEzMDM1MywgMTMwMzU5LCAKLSAgICAxMzAzNjQsIDEzMDM3MCwgMTMwMzc0LCAxMzAzNzgsIDEzMDM4MSwgMTMwMzg1LCAxMzAzODksIDEzMDM5NCwgMTMwMzk4LCAKLSAgICAxMzA0MDMsIDEzMDQwNywgMTMwNDEyLCAxMzA0MTYsIDEzMDQyMCwgMTMwNDI0LCAxMzA0MjgsIDEzMDQzMiwgMTMwNDM2LCAKLSAgICAxMzA0NDAsIDEzMDQ0NCwgMTMwNDQ5LCAxMzA0NTQsIDEzMDQ1OSwgMTMwNDY0LCAxMzA0NzAsIDEzMDQ3NiwgMTMwNDgyLCAKLSAgICAxMzA0ODgsIDEzMDQ5NCwgMCwgMCwgMCwgMCwgMCwgMTMwNDk5LCAxMzA1MDcsIDEzMDUxNiwgMTMwNTI0LCAxMzA1MzEsIAotICAgIDEzMDUzOSwgMTMwNTQ2LCAxMzA1NTMsIDEzMDU2MiwgMTMwNTY5LCAxMzA1NzYsIDEzMDU4MywgMTMwNTkxLCAwLCAwLCAwLCAKLSAgICAxMzA1OTksIDEzMDYwNCwgMTMwNjExLCAxMzA2MTcsIDEzMDYyNCwgMTMwNjMwLCAxMzA2MzYsIDEzMDY0MiwgMTMwNjQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzA2NTQsIDEzMDY1OSwgMTMwNjY2LCAxMzA2NzIsIDEzMDY3OSwgMTMwNjg1LCAKLSAgICAxMzA2OTEsIDEzMDY5NywgMTMwNzAzLCAxMzA3MDksIDAsIDAsIDEzMDcxNCwgMTMwNzIwLCAxMzA3MjYsIDEzMDcyOSwgCi0gICAgMTMwNzM4LCAxMzA3NDUsIDEzMDc1MywgMTMwNzYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU1NDYsIAorICAgIDEzNTU1MSwgMTM1NTU2LCAxMzU1NjEsIDEzNTU2OCwgMTM1NTc1LCAxMzU1ODIsIDEzNTU4OSwgMTM1NTk0LCAxMzU1OTksIAorICAgIDEzNTYwNCwgMTM1NjA5LCAxMzU2MTYsIDEzNTYyMSwgMTM1NjI4LCAxMzU2MzUsIDEzNTY0MCwgMTM1NjQ1LCAxMzU2NTAsIAorICAgIDEzNTY1NywgMTM1NjYyLCAxMzU2NjcsIDEzNTY3NCwgMTM1NjgxLCAxMzU2ODYsIDEzNTY5MSwgMTM1Njk2LCAxMzU3MDMsIAorICAgIDEzNTcxMCwgMTM1NzE3LCAxMzU3MjIsIDEzNTcyNywgMTM1NzM0LCAxMzU3NDEsIDEzNTc0OCwgMTM1NzU1LCAxMzU3NjAsIAorICAgIDEzNTc2NSwgMTM1NzcwLCAxMzU3NzcsIDEzNTc4MiwgMTM1Nzg3LCAxMzU3OTIsIDEzNTc5OSwgMTM1ODA4LCAxMzU4MTUsIAorICAgIDEzNTgyMCwgMTM1ODI1LCAxMzU4MzAsIDEzNTgzNSwgMTM1ODQwLCAxMzU4NDUsIDEzNTg1NCwgMTM1ODYxLCAxMzU4NjYsIAorICAgIDEzNTg3MywgMTM1ODgwLCAxMzU4ODUsIDEzNTg5MCwgMTM1ODk1LCAxMzU5MDIsIDEzNTkwNywgMTM1OTE0LCAxMzU5MjEsIAorICAgIDEzNTkyNiwgMTM1OTMxLCAxMzU5MzYsIDEzNTk0MywgMTM1OTUwLCAxMzU5NTUsIDEzNTk2MCwgMTM1OTY3LCAxMzU5NzQsIAorICAgIDEzNTk4MSwgMTM1OTg2LCAxMzU5OTEsIDEzNTk5NiwgMTM2MDAxLCAxMzYwMDgsIDEzNjAxNywgMTM2MDI2LCAxMzYwMzEsIAorICAgIDEzNjAzOCwgMTM2MDQ3LCAxMzYwNTIsIDEzNjA1NywgMTM2MDYyLCAxMzYwNjcsIDEzNjA3NCwgMTM2MDgxLCAxMzYwODgsIAorICAgIDEzNjA5NSwgMTM2MTAwLCAxMzYxMDUsIDEzNjExMCwgMTM2MTE3LCAxMzYxMjQsIDEzNjEzMSwgMTM2MTM2LCAxMzYxNDEsIAorICAgIDEzNjE0OCwgMTM2MTUzLCAxMzYxNjAsIDEzNjE2NSwgMTM2MTcyLCAxMzYxNzcsIDEzNjE4NCwgMTM2MTkxLCAxMzYxOTYsIAorICAgIDEzNjIwMSwgMTM2MjA2LCAxMzYyMTEsIDEzNjIxNiwgMTM2MjIxLCAxMzYyMjYsIDEzNjIzMSwgMTM2MjM2LCAxMzYyNDMsIAorICAgIDEzNjI1MCwgMTM2MjU3LCAxMzYyNjQsIDEzNjI3MSwgMTM2MjgwLCAxMzYyODUsIDEzNjI5MCwgMTM2Mjk3LCAxMzYzMDQsIAorICAgIDEzNjMwOSwgMTM2MzE2LCAxMzYzMjMsIDEzNjMzMCwgMTM2MzM3LCAxMzYzNDQsIDEzNjM1MSwgMTM2MzU2LCAxMzYzNjEsIAorICAgIDEzNjM2NiwgMTM2MzcxLCAxMzYzNzYsIDEzNjM4NSwgMTM2Mzk0LCAxMzY0MDMsIDEzNjQxMiwgMTM2NDIxLCAxMzY0MzAsIAorICAgIDEzNjQzOSwgMTM2NDQ4LCAxMzY0NTMsIDEzNjQ2NCwgMTM2NDc1LCAxMzY0ODQsIDEzNjQ4OSwgMTM2NDk0LCAxMzY0OTksIAorICAgIDEzNjUwNCwgMTM2NTEzLCAxMzY1MjAsIDEzNjUyNywgMTM2NTM0LCAxMzY1NDEsIDEzNjU0OCwgMTM2NTU1LCAxMzY1NjQsIAorICAgIDEzNjU3MywgMTM2NTg0LCAxMzY1OTMsIDEzNjYwNCwgMTM2NjEzLCAxMzY2MjAsIDEzNjYyOSwgMTM2NjQwLCAxMzY2NDksIAorICAgIDEzNjY1OCwgMTM2NjY3LCAxMzY2NzYsIDEzNjY4MywgMTM2NjkwLCAxMzY2OTcsIDEzNjcwNiwgMTM2NzE1LCAxMzY3MjYsIAorICAgIDEzNjczNSwgMTM2NzQ0LCAxMzY3NTUsIDEzNjc2MCwgMTM2NzY1LCAxMzY3NzYsIDEzNjc4NCwgMTM2NzkzLCAxMzY4MDIsIAorICAgIDEzNjgxMSwgMTM2ODIyLCAxMzY4MzEsIDEzNjg0MCwgMTM2ODUxLCAxMzY4NjIsIDEzNjg3MywgMTM2ODg0LCAxMzY4OTUsIAorICAgIDEzNjkwNiwgMTM2OTEzLCAxMzY5MjAsIDEzNjkyNywgMTM2OTM0LCAxMzY5NDUsIDEzNjk1NCwgMTM2OTYxLCAxMzY5NjgsIAorICAgIDEzNjk3NSwgMTM2OTg2LCAxMzY5OTcsIDEzNzAwOCwgMTM3MDE5LCAxMzcwMzAsIDEzNzA0MSwgMTM3MDUyLCAxMzcwNjMsIAorICAgIDEzNzA3MCwgMTM3MDc3LCAxMzcwODYsIDEzNzA5NSwgMTM3MTAyLCAxMzcxMDksIDEzNzExNiwgMTM3MTI1LCAxMzcxMzQsIAorICAgIDEzNzE0MywgMTM3MTUwLCAxMzcxNTksIDEzNzE2OCwgMTM3MTc3LCAxMzcxODQsIDEzNzE5MSwgMTM3MTk2LCAxMzcyMDIsIAorICAgIDEzNzIwOSwgMTM3MjE2LCAxMzcyMjMsIDEzNzIzMCwgMTM3MjM3LCAxMzcyNDQsIDEzNzI1MywgMTM3MjYyLCAxMzcyNzEsIAorICAgIDEzNzI4MCwgMTM3Mjg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzcyOTYsIDEzNzMwMiwgMTM3MzA3LCAKKyAgICAxMzczMTIsIDEzNzMxOSwgMTM3MzI1LCAxMzczMzEsIDEzNzMzNywgMTM3MzQzLCAxMzczNDksIDEzNzM1NSwgMTM3MzYxLCAKKyAgICAxMzczNjUsIDEzNzM2OSwgMTM3Mzc1LCAxMzczODEsIDEzNzM4NywgMTM3MzkxLCAxMzczOTYsIDEzNzQwMSwgMTM3NDA1LCAKKyAgICAxMzc0MDksIDEzNzQxMiwgMTM3NDE4LCAxMzc0MjQsIDEzNzQzMCwgMTM3NDM2LCAxMzc0NDIsIDEzNzQ0OCwgMTM3NDU0LCAKKyAgICAxMzc0NjAsIDEzNzQ2NiwgMTM3NDc2LCAxMzc0ODYsIDEzNzQ5MiwgMTM3NDk4LCAxMzc1MDgsIDEzNzUxOCwgMTM3NTI0LCAKKyAgICAwLCAwLCAxMzc1MzAsIDEzNzUzOCwgMTM3NTQzLCAxMzc1NDgsIDEzNzU1NCwgMTM3NTYwLCAxMzc1NjYsIDEzNzU3MiwgCisgICAgMTM3NTc4LCAxMzc1ODQsIDEzNzU5MSwgMTM3NTk4LCAxMzc2MDQsIDEzNzYxMCwgMTM3NjE2LCAxMzc2MjIsIDEzNzYyOCwgCisgICAgMTM3NjM0LCAxMzc2NDAsIDEzNzY0NiwgMTM3NjUxLCAxMzc2NTcsIDEzNzY2MywgMTM3NjY5LCAxMzc2NzUsIDEzNzY4MSwgCisgICAgMTM3NjkwLCAxMzc2OTYsIDEzNzcwMSwgMTM3NzA5LCAxMzc3MTYsIDEzNzcyMywgMTM3NzMyLCAxMzc3NDEsIDEzNzc1MCwgCisgICAgMTM3NzU5LCAxMzc3NjgsIDEzNzc3NywgMTM3Nzg2LCAxMzc3OTUsIDEzNzgwNSwgMTM3ODE1LCAxMzc4MjMsIDEzNzgzMSwgCisgICAgMTM3ODQwLCAxMzc4NDksIDEzNzg1NSwgMTM3ODYxLCAxMzc4NjcsIDEzNzg3MywgMTM3ODgxLCAxMzc4ODksIDEzNzg5MywgCisgICAgMTM3ODk5LCAxMzc5MDQsIDEzNzkxMCwgMTM3OTE2LCAxMzc5MjIsIDEzNzkyOCwgMTM3OTM0LCAxMzc5NDMsIDEzNzk0OCwgCisgICAgMTM3OTU1LCAxMzc5NjAsIDEzNzk2NSwgMTM3OTcwLCAxMzc5NzYsIDEzNzk4MiwgMTM3OTg4LCAxMzc5OTUsIDEzODAwMCwgCisgICAgMTM4MDA1LCAxMzgwMTAsIDEzODAxNSwgMTM4MDIwLCAxMzgwMjYsIDEzODAzMiwgMTM4MDM4LCAxMzgwNDQsIDEzODA1MCwgCisgICAgMTM4MDU2LCAxMzgwNjIsIDEzODA2OCwgMTM4MDczLCAxMzgwNzgsIDEzODA4MywgMTM4MDg4LCAxMzgwOTMsIDEzODA5OCwgCisgICAgMTM4MTAzLCAxMzgxMDgsIDEzODExNCwgMTM4MTIwLCAxMzgxMjUsIDEzODEzMCwgMTM4MTM1LCAxMzgxNDAsIDEzODE0NSwgCisgICAgMTM4MTUxLCAxMzgxNTgsIDEzODE2MiwgMTM4MTY2LCAxMzgxNzAsIDEzODE3NCwgMTM4MTc4LCAxMzgxODIsIDEzODE4NiwgCisgICAgMTM4MTkwLCAxMzgxOTgsIDEzODIwOCwgMTM4MjEyLCAxMzgyMTYsIDEzODIyMiwgMTM4MjI4LCAxMzgyMzQsIDEzODI0MCwgCisgICAgMTM4MjQ2LCAxMzgyNTIsIDEzODI1OCwgMTM4MjY0LCAxMzgyNzAsIDEzODI3NiwgMTM4MjgyLCAxMzgyODgsIDEzODI5NCwgCisgICAgMTM4MzAwLCAxMzgzMDQsIDEzODMwOCwgMTM4MzE1LCAxMzgzMjEsIDEzODMyNywgMTM4MzMzLCAxMzgzMzgsIDEzODM0NSwgCisgICAgMTM4MzUwLCAxMzgzNTYsIDEzODM2MiwgMTM4MzY4LCAxMzgzNzQsIDEzODM3OSwgMTM4MzgzLCAxMzgzODksIDEzODM5MywgCisgICAgMTM4Mzk3LCAxMzg0MDEsIDEzODQwNywgMTM4NDEzLCAxMzg0MTcsIDEzODQyMywgMTM4NDI5LCAxMzg0MzUsIDEzODQ0MSwgCisgICAgMTM4NDQ3LCAxMzg0NTUsIDEzODQ2MywgMTM4NDY5LCAxMzg0NzUsIDEzODQ4MSwgMTM4NDg3LCAxMzg0OTksIDEzODUxMSwgCisgICAgMTM4NTI1LCAxMzg1MzcsIDEzODU0OSwgMTM4NTYzLCAxMzg1NzcsIDEzODU5MSwgMTM4NTk1LCAxMzg2MDMsIDEzODYxMSwgCisgICAgMTM4NjE2LCAxMzg2MjAsIDEzODYyNCwgMTM4NjI4LCAxMzg2MzIsIDEzODYzNiwgMTM4NjQwLCAxMzg2NDQsIDEzODY1MCwgCisgICAgMTM4NjU2LCAxMzg2NjIsIDEzODY2OCwgMTM4Njc2LCAxMzg2ODUsIDEzODY5MiwgMTM4Njk5LCAxMzg3MDcsIDEzODcxNCwgCisgICAgMTM4NzI2LCAxMzg3MzgsIDEzODc1MCwgMTM4NzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg3NjksIDEzODc3NiwgMTM4NzgzLCAxMzg3OTAsIDEzODc5NywgCisgICAgMTM4ODA0LCAxMzg4MTEsIDEzODgxOCwgMTM4ODI1LCAxMzg4MzIsIDEzODgzOSwgMTM4ODQ2LCAxMzg4NTMsIDEzODg2MCwgCisgICAgMTM4ODY3LCAxMzg4NzQsIDEzODg4MSwgMTM4ODg4LCAxMzg4OTUsIDEzODkwMiwgMTM4OTA5LCAxMzg5MTYsIDEzODkyMywgCisgICAgMTM4OTMwLCAxMzg5MzcsIDEzODk0NCwgMTM4OTUxLCAxMzg5NTgsIDEzODk2NSwgMTM4OTcyLCAxMzg5NzksIDEzODk4NiwgCisgICAgMTM4OTkzLCAxMzkwMDAsIDEzOTAwNywgMTM5MDE0LCAxMzkwMjEsIDEzOTAyOCwgMTM5MDM1LCAxMzkwNDIsIDEzOTA0OSwgCisgICAgMTM5MDU2LCAxMzkwNjMsIDEzOTA3MCwgMTM5MDc3LCAxMzkwODQsIDEzOTA5MSwgMTM5MDk4LCAxMzkxMDUsIDEzOTExMiwgCisgICAgMTM5MTE5LCAxMzkxMjYsIDEzOTEzMywgMTM5MTQwLCAxMzkxNDcsIDEzOTE1NCwgMTM5MTYxLCAxMzkxNjgsIDEzOTE3NSwgCisgICAgMTM5MTgyLCAxMzkxODksIDEzOTE5NiwgMTM5MjAzLCAxMzkyMTAsIDEzOTIxNywgMTM5MjI0LCAxMzkyMzEsIDEzOTIzNiwgCisgICAgMTM5MjQxLCAxMzkyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDc2NywgMTMwNzcyLCAxMzA3NzcsIDEzMDc4MiwgMTMwNzg5LCAxMzA3OTYsIDEzMDgwMywgCi0gICAgMTMwODEwLCAxMzA4MTUsIDEzMDgyMCwgMTMwODI1LCAxMzA4MzAsIDEzMDgzNywgMTMwODQyLCAxMzA4NDksIDEzMDg1NiwgCi0gICAgMTMwODYxLCAxMzA4NjYsIDEzMDg3MSwgMTMwODc4LCAxMzA4ODMsIDEzMDg4OCwgMTMwODk1LCAxMzA5MDIsIDEzMDkwNywgCi0gICAgMTMwOTEyLCAxMzA5MTcsIDEzMDkyNCwgMTMwOTMxLCAxMzA5MzgsIDEzMDk0MywgMTMwOTQ4LCAxMzA5NTUsIDEzMDk2MiwgCi0gICAgMTMwOTY5LCAxMzA5NzYsIDEzMDk4MSwgMTMwOTg2LCAxMzA5OTEsIDEzMDk5OCwgMTMxMDAzLCAxMzEwMDgsIDEzMTAxMywgCi0gICAgMTMxMDIwLCAxMzEwMjksIDEzMTAzNiwgMTMxMDQxLCAxMzEwNDYsIDEzMTA1MSwgMTMxMDU2LCAxMzEwNjEsIDEzMTA2NiwgCi0gICAgMTMxMDc1LCAxMzEwODIsIDEzMTA4NywgMTMxMDk0LCAxMzExMDEsIDEzMTEwNiwgMTMxMTExLCAxMzExMTYsIDEzMTEyMywgCi0gICAgMTMxMTI4LCAxMzExMzUsIDEzMTE0MiwgMTMxMTQ3LCAxMzExNTIsIDEzMTE1NywgMTMxMTY0LCAxMzExNzEsIDEzMTE3NiwgCi0gICAgMTMxMTgxLCAxMzExODgsIDEzMTE5NSwgMTMxMjAyLCAxMzEyMDcsIDEzMTIxMiwgMTMxMjE3LCAxMzEyMjIsIDEzMTIyOSwgCi0gICAgMTMxMjM4LCAxMzEyNDcsIDEzMTI1MiwgMTMxMjU5LCAxMzEyNjgsIDEzMTI3MywgMTMxMjc4LCAxMzEyODMsIDEzMTI4OCwgCi0gICAgMTMxMjk1LCAxMzEzMDIsIDEzMTMwOSwgMTMxMzE2LCAxMzEzMjEsIDEzMTMyNiwgMTMxMzMxLCAxMzEzMzgsIDEzMTM0NSwgCi0gICAgMTMxMzUyLCAxMzEzNTcsIDEzMTM2MiwgMTMxMzY5LCAxMzEzNzQsIDEzMTM4MSwgMTMxMzg2LCAxMzEzOTMsIDEzMTM5OCwgCi0gICAgMTMxNDA1LCAxMzE0MTIsIDEzMTQxNywgMTMxNDIyLCAxMzE0MjcsIDEzMTQzMiwgMTMxNDM3LCAxMzE0NDIsIDEzMTQ0NywgCi0gICAgMTMxNDUyLCAxMzE0NTcsIDEzMTQ2NCwgMTMxNDcxLCAxMzE0NzgsIDEzMTQ4NSwgMTMxNDkyLCAxMzE1MDEsIDEzMTUwNiwgCi0gICAgMTMxNTExLCAxMzE1MTgsIDEzMTUyNSwgMTMxNTMwLCAxMzE1MzcsIDEzMTU0NCwgMTMxNTUxLCAxMzE1NTgsIDEzMTU2NSwgCi0gICAgMTMxNTcyLCAxMzE1NzcsIDEzMTU4MiwgMTMxNTg3LCAxMzE1OTIsIDEzMTU5NywgMTMxNjA2LCAxMzE2MTUsIDEzMTYyNCwgCi0gICAgMTMxNjMzLCAxMzE2NDIsIDEzMTY1MSwgMTMxNjYwLCAxMzE2NjksIDEzMTY3NCwgMTMxNjg1LCAxMzE2OTYsIDEzMTcwNSwgCi0gICAgMTMxNzEwLCAxMzE3MTUsIDEzMTcyMCwgMTMxNzI1LCAxMzE3MzQsIDEzMTc0MSwgMTMxNzQ4LCAxMzE3NTUsIDEzMTc2MiwgCi0gICAgMTMxNzY5LCAxMzE3NzYsIDEzMTc4NSwgMTMxNzk0LCAxMzE4MDUsIDEzMTgxNCwgMTMxODI1LCAxMzE4MzQsIDEzMTg0MSwgCi0gICAgMTMxODUwLCAxMzE4NjEsIDEzMTg3MCwgMTMxODc5LCAxMzE4ODgsIDEzMTg5NywgMTMxOTA0LCAxMzE5MTEsIDEzMTkxOCwgCi0gICAgMTMxOTI3LCAxMzE5MzYsIDEzMTk0NywgMTMxOTU2LCAxMzE5NjUsIDEzMTk3NiwgMTMxOTgxLCAxMzE5ODYsIDEzMTk5NywgCi0gICAgMTMyMDA1LCAxMzIwMTQsIDEzMjAyMywgMTMyMDMyLCAxMzIwNDMsIDEzMjA1MiwgMTMyMDYxLCAxMzIwNzIsIDEzMjA4MywgCi0gICAgMTMyMDk0LCAxMzIxMDUsIDEzMjExNiwgMTMyMTI3LCAxMzIxMzQsIDEzMjE0MSwgMTMyMTQ4LCAxMzIxNTUsIDEzMjE2NiwgCi0gICAgMTMyMTc1LCAxMzIxODIsIDEzMjE4OSwgMTMyMTk2LCAxMzIyMDcsIDEzMjIxOCwgMTMyMjI5LCAxMzIyNDAsIDEzMjI1MSwgCi0gICAgMTMyMjYyLCAxMzIyNzMsIDEzMjI4NCwgMTMyMjkxLCAxMzIyOTgsIDEzMjMwNywgMTMyMzE2LCAxMzIzMjMsIDEzMjMzMCwgCi0gICAgMTMyMzM3LCAxMzIzNDYsIDEzMjM1NSwgMTMyMzY0LCAxMzIzNzEsIDEzMjM4MCwgMTMyMzg5LCAxMzIzOTgsIDEzMjQwNSwgCi0gICAgMTMyNDEyLCAxMzI0MTcsIDEzMjQyMywgMTMyNDMwLCAxMzI0MzcsIDEzMjQ0NCwgMTMyNDUxLCAxMzI0NTgsIDEzMjQ2NSwgCi0gICAgMTMyNDc0LCAxMzI0ODMsIDEzMjQ5MiwgMTMyNTAxLCAxMzI1MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzMjUxNywgMTMyNTIzLCAxMzI1MjgsIDEzMjUzMywgMTMyNTQwLCAxMzI1NDYsIDEzMjU1MiwgMTMyNTU4LCAxMzI1NjQsIAotICAgIDEzMjU3MCwgMTMyNTc2LCAxMzI1ODIsIDEzMjU4NiwgMTMyNTkwLCAxMzI1OTYsIDEzMjYwMiwgMTMyNjA4LCAxMzI2MTIsIAotICAgIDEzMjYxNywgMTMyNjIyLCAxMzI2MjYsIDEzMjYzMCwgMTMyNjMzLCAxMzI2MzksIDEzMjY0NSwgMTMyNjUxLCAxMzI2NTcsIAotICAgIDEzMjY2MywgMTMyNjY5LCAxMzI2NzUsIDEzMjY4MSwgMTMyNjg3LCAxMzI2OTcsIDEzMjcwNywgMTMyNzEzLCAxMzI3MTksIAotICAgIDEzMjcyOSwgMTMyNzM5LCAxMzI3NDUsIDAsIDAsIDEzMjc1MSwgMTMyNzU5LCAxMzI3NjQsIDEzMjc2OSwgMTMyNzc1LCAKLSAgICAxMzI3ODEsIDEzMjc4NywgMTMyNzkzLCAxMzI3OTksIDEzMjgwNSwgMTMyODEyLCAxMzI4MTksIDEzMjgyNSwgMTMyODMxLCAKLSAgICAxMzI4MzcsIDEzMjg0MywgMTMyODQ5LCAxMzI4NTUsIDEzMjg2MSwgMTMyODY3LCAxMzI4NzIsIDEzMjg3OCwgMTMyODg0LCAKLSAgICAxMzI4OTAsIDEzMjg5NiwgMTMyOTAyLCAxMzI5MTEsIDEzMjkxNywgMTMyOTIyLCAxMzI5MzAsIDEzMjkzNywgMTMyOTQ0LCAKLSAgICAxMzI5NTMsIDEzMjk2MiwgMTMyOTcxLCAxMzI5ODAsIDEzMjk4OSwgMTMyOTk4LCAxMzMwMDcsIDEzMzAxNiwgMTMzMDI2LCAKLSAgICAxMzMwMzYsIDEzMzA0NCwgMTMzMDUyLCAxMzMwNjEsIDEzMzA3MCwgMTMzMDc2LCAxMzMwODIsIDEzMzA4OCwgMTMzMDk0LCAKLSAgICAxMzMxMDIsIDEzMzExMCwgMTMzMTE0LCAxMzMxMjAsIDEzMzEyNSwgMTMzMTMxLCAxMzMxMzcsIDEzMzE0MywgMTMzMTQ5LCAKLSAgICAxMzMxNTUsIDEzMzE2NCwgMTMzMTY5LCAxMzMxNzYsIDEzMzE4MSwgMTMzMTg2LCAxMzMxOTEsIDEzMzE5NywgMTMzMjAzLCAKLSAgICAxMzMyMDksIDEzMzIxNiwgMTMzMjIxLCAxMzMyMjYsIDEzMzIzMSwgMTMzMjM2LCAxMzMyNDEsIDEzMzI0NywgMTMzMjUzLCAKLSAgICAxMzMyNTksIDEzMzI2NSwgMTMzMjcxLCAxMzMyNzcsIDEzMzI4MywgMTMzMjg5LCAxMzMyOTQsIDEzMzI5OSwgMTMzMzA0LCAKLSAgICAxMzMzMDksIDEzMzMxNCwgMTMzMzE5LCAxMzMzMjQsIDEzMzMyOSwgMTMzMzM1LCAxMzMzNDEsIDEzMzM0NiwgMTMzMzUxLCAKLSAgICAxMzMzNTYsIDEzMzM2MSwgMTMzMzY2LCAxMzMzNzIsIDEzMzM3OSwgMTMzMzgzLCAxMzMzODcsIDEzMzM5MSwgMTMzMzk1LCAKLSAgICAxMzMzOTksIDEzMzQwMywgMTMzNDA3LCAxMzM0MTEsIDEzMzQxOSwgMTMzNDI5LCAxMzM0MzMsIDEzMzQzNywgMTMzNDQzLCAKLSAgICAxMzM0NDksIDEzMzQ1NSwgMTMzNDYxLCAxMzM0NjcsIDEzMzQ3MywgMTMzNDc5LCAxMzM0ODUsIDEzMzQ5MSwgMTMzNDk3LCAKLSAgICAxMzM1MDMsIDEzMzUwOSwgMTMzNTE1LCAxMzM1MjEsIDEzMzUyNSwgMTMzNTI5LCAxMzM1MzYsIDEzMzU0MiwgMTMzNTQ4LCAKLSAgICAxMzM1NTQsIDEzMzU1OSwgMTMzNTY2LCAxMzM1NzEsIDEzMzU3NywgMTMzNTgzLCAxMzM1ODksIDEzMzU5NSwgMTMzNjAwLCAKLSAgICAxMzM2MDQsIDEzMzYxMCwgMTMzNjE0LCAxMzM2MTgsIDEzMzYyMiwgMTMzNjI4LCAxMzM2MzQsIDEzMzYzOCwgMTMzNjQ0LCAKLSAgICAxMzM2NTAsIDEzMzY1NiwgMTMzNjYyLCAxMzM2NjgsIDEzMzY3NiwgMTMzNjg0LCAxMzM2OTAsIDEzMzY5NiwgMTMzNzAyLCAKLSAgICAxMzM3MDgsIDEzMzcyMCwgMTMzNzMyLCAxMzM3NDYsIDEzMzc1OCwgMTMzNzcwLCAxMzM3ODQsIDEzMzc5OCwgMTMzODEyLCAKLSAgICAxMzM4MTYsIDEzMzgyNCwgMTMzODMyLCAxMzM4MzcsIDEzMzg0MSwgMTMzODQ1LCAxMzM4NDksIDEzMzg1MywgMTMzODU3LCAKLSAgICAxMzM4NjEsIDEzMzg2NSwgMTMzODcxLCAxMzM4NzcsIDEzMzg4MywgMTMzODg5LCAxMzM4OTcsIDEzMzkwNiwgMTMzOTEzLCAKLSAgICAxMzM5MjAsIDEzMzkyOCwgMTMzOTM1LCAxMzM5NDcsIDEzMzk1OSwgMTMzOTcxLCAxMzM5ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzk5MCwgMTMzOTk3LCAKLSAgICAxMzQwMDQsIDEzNDAxMSwgMTM0MDE4LCAxMzQwMjUsIDEzNDAzMiwgMTM0MDM5LCAxMzQwNDYsIDEzNDA1MywgMTM0MDYwLCAKLSAgICAxMzQwNjcsIDEzNDA3NCwgMTM0MDgxLCAxMzQwODgsIDEzNDA5NSwgMTM0MTAyLCAxMzQxMDksIDEzNDExNiwgMTM0MTIzLCAKLSAgICAxMzQxMzAsIDEzNDEzNywgMTM0MTQ0LCAxMzQxNTEsIDEzNDE1OCwgMTM0MTY1LCAxMzQxNzIsIDEzNDE3OSwgMTM0MTg2LCAKLSAgICAxMzQxOTMsIDEzNDIwMCwgMTM0MjA3LCAxMzQyMTQsIDEzNDIyMSwgMTM0MjI4LCAxMzQyMzUsIDEzNDI0MiwgMTM0MjQ5LCAKLSAgICAxMzQyNTYsIDEzNDI2MywgMTM0MjcwLCAxMzQyNzcsIDEzNDI4NCwgMTM0MjkxLCAxMzQyOTgsIDEzNDMwNSwgMTM0MzEyLCAKLSAgICAxMzQzMTksIDEzNDMyNiwgMTM0MzMzLCAxMzQzNDAsIDEzNDM0NywgMTM0MzU0LCAxMzQzNjEsIDEzNDM2OCwgMTM0Mzc1LCAKLSAgICAxMzQzODIsIDEzNDM4OSwgMTM0Mzk2LCAxMzQ0MDMsIDEzNDQxMCwgMTM0NDE3LCAxMzQ0MjQsIDEzNDQzMSwgMTM0NDM4LCAKLSAgICAxMzQ0NDUsIDEzNDQ1MiwgMTM0NDU3LCAxMzQ0NjIsIDEzNDQ2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5MjUwLCAxMzkyNTUsIDEzOTI2MiwgMTM5MjY5LCAxMzkyNzYsIDEzOTI4MywgMTM5Mjg4LCAxMzkyOTMsIDEzOTMwMCwgCisgICAgMTM5MzA1LCAxMzkzMTAsIDEzOTMxNywgMTM5MzIyLCAxMzkzMjcsIDEzOTMzMiwgMTM5MzM5LCAxMzkzNDgsIDEzOTM1MywgCisgICAgMTM5MzU4LCAxMzkzNjMsIDEzOTM2OCwgMTM5MzczLCAxMzkzNzgsIDEzOTM4NSwgMTM5MzkwLCAxMzkzOTUsIDEzOTQwMCwgCisgICAgMTM5NDA1LCAxMzk0MTAsIDEzOTQxNSwgMTM5NDIwLCAxMzk0MjUsIDEzOTQzMCwgMTM5NDM1LCAxMzk0NDAsIDEzOTQ0NSwgCisgICAgMTM5NDUxLCAxMzk0NTYsIDEzOTQ2MSwgMTM5NDY2LCAxMzk0NzEsIDEzOTQ3NiwgMTM5NDgxLCAxMzk0ODYsIDEzOTQ5MSwgCisgICAgMTM5NDk2LCAxMzk1MDUsIDEzOTUxMCwgMTM5NTE5LCAxMzk1MjQsIDEzOTUyOSwgMTM5NTM0LCAxMzk1MzksIDEzOTU0NCwgCisgICAgMTM5NTQ5LCAxMzk1NTQsIDEzOTU2MywgMTM5NTY4LCAxMzk1NzMsIDEzOTU3OCwgMTM5NTgzLCAxMzk1ODgsIDEzOTU5NSwgCisgICAgMTM5NjAwLCAxMzk2MDcsIDEzOTYxMiwgMTM5NjE3LCAxMzk2MjIsIDEzOTYyNywgMTM5NjMyLCAxMzk2MzcsIDEzOTY0MiwgCisgICAgMTM5NjQ3LCAxMzk2NTIsIDEzOTY1NywgMTM5NjYyLCAxMzk2NjcsIDEzOTY3MiwgMTM5Njc3LCAxMzk2ODIsIDEzOTY4NywgCisgICAgMTM5NjkyLCAxMzk2OTcsIDEzOTcwMiwgMTM5NzExLCAxMzk3MTYsIDEzOTcyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTM5NzI2LCAxMzk3MzQsIDEzOTc0MiwgMTM5NzUwLCAxMzk3NTgsIDEzOTc2NiwgMTM5Nzc0LCAxMzk3ODMsIAorICAgIDEzOTc5MSwgMTM5ODAwLCAxMzk4MDgsIDEzOTgxNiwgMTM5ODI0LCAxMzk4MzIsIDEzOTg0MCwgMTM5ODQ4LCAxMzk4NTcsIAorICAgIDEzOTg2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NDcxLCAxMzQ0NzYsIDEzNDQ4MywgMTM0NDkwLCAxMzQ0OTcsIDEzNDUwNCwgCi0gICAgMTM0NTA5LCAxMzQ1MTQsIDEzNDUyMSwgMTM0NTI2LCAxMzQ1MzEsIDEzNDUzOCwgMTM0NTQzLCAxMzQ1NDgsIDEzNDU1MywgCi0gICAgMTM0NTYwLCAxMzQ1NjksIDEzNDU3NCwgMTM0NTc5LCAxMzQ1ODQsIDEzNDU4OSwgMTM0NTk0LCAxMzQ1OTksIDEzNDYwNiwgCi0gICAgMTM0NjExLCAxMzQ2MTYsIDEzNDYyMSwgMTM0NjI2LCAxMzQ2MzEsIDEzNDYzNiwgMTM0NjQxLCAxMzQ2NDYsIDEzNDY1MSwgCi0gICAgMTM0NjU2LCAxMzQ2NjEsIDEzNDY2NiwgMTM0NjcyLCAxMzQ2NzcsIDEzNDY4MiwgMTM0Njg3LCAxMzQ2OTIsIDEzNDY5NywgCi0gICAgMTM0NzAyLCAxMzQ3MDcsIDEzNDcxMiwgMTM0NzE3LCAxMzQ3MjYsIDEzNDczMSwgMTM0NzQwLCAxMzQ3NDUsIDEzNDc1MCwgCi0gICAgMTM0NzU1LCAxMzQ3NjAsIDEzNDc2NSwgMTM0NzcwLCAxMzQ3NzUsIDEzNDc4NCwgMTM0Nzg5LCAxMzQ3OTQsIDEzNDc5OSwgCi0gICAgMTM0ODA0LCAxMzQ4MDksIDEzNDgxNiwgMTM0ODIxLCAxMzQ4MjgsIDEzNDgzMywgMTM0ODM4LCAxMzQ4NDMsIDEzNDg0OCwgCi0gICAgMTM0ODUzLCAxMzQ4NTgsIDEzNDg2MywgMTM0ODY4LCAxMzQ4NzMsIDEzNDg3OCwgMTM0ODgzLCAxMzQ4ODgsIDEzNDg5MywgCi0gICAgMTM0ODk4LCAxMzQ5MDMsIDEzNDkwOCwgMTM0OTEzLCAxMzQ5MTgsIDEzNDkyMywgMTM0OTMyLCAxMzQ5MzcsIDEzNDk0MiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0OTQ3LCAxMzQ5NTUsIDEzNDk2MywgMTM0OTcxLCAxMzQ5NzksIAotICAgIDEzNDk4NywgMTM0OTk1LCAxMzUwMDQsIDEzNTAxMiwgMTM1MDIxLCAxMzUwMjksIDEzNTAzNywgMTM1MDQ1LCAxMzUwNTMsIAotICAgIDEzNTA2MSwgMTM1MDY5LCAxMzUwNzgsIDEzNTA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5ODc0LCAxMzk4NzgsIDEzOTg4MywgMTM5ODg4LCAxMzk4OTMsIDEzOTg5NywgMTM5OTAyLCAxMzk5MDcsIDEzOTkxMiwgCisgICAgMTM5OTE2LCAxMzk5MjEsIDEzOTkyNiwgMTM5OTMwLCAxMzk5MzUsIDEzOTk0MCwgMTM5OTQ0LCAxMzk5NDksIDEzOTk1NCwgCisgICAgMTM5OTU4LCAxMzk5NjMsIDEzOTk2OCwgMTM5OTcyLCAxMzk5NzcsIDEzOTk4MiwgMTM5OTg3LCAxMzk5OTIsIDEzOTk5NywgCisgICAgMTQwMDAxLCAxNDAwMDYsIDE0MDAxMSwgMTQwMDE2LCAxNDAwMjAsIDE0MDAyNSwgMTQwMDMwLCAxNDAwMzUsIDE0MDAzOSwgCisgICAgMTQwMDQ0LCAxNDAwNDksIDE0MDA1MywgMTQwMDU4LCAxNDAwNjMsIDE0MDA2NywgMTQwMDcyLCAxNDAwNzcsIDE0MDA4MSwgCisgICAgMTQwMDg2LCAxNDAwOTEsIDE0MDA5NSwgMTQwMTAwLCAxNDAxMDUsIDE0MDExMCwgMTQwMTE1LCAxNDAxMjAsIDE0MDEyNCwgCisgICAgMTQwMTI5LCAxNDAxMzQsIDE0MDEzOSwgMTQwMTQzLCAxNDAxNDgsIDE0MDE1MywgMTQwMTU4LCAxNDAxNjIsIDE0MDE2NywgCisgICAgMTQwMTcyLCAxNDAxNzYsIDE0MDE4MSwgMTQwMTg2LCAxNDAxOTAsIDE0MDE5NSwgMTQwMjAwLCAxNDAyMDQsIDE0MDIwOSwgCisgICAgMTQwMjE0LCAxNDAyMTgsIDE0MDIyMywgMTQwMjI4LCAxNDAyMzMsIDE0MDIzOCwgMTQwMjQzLCAxNDAyNDcsIDE0MDI1MiwgCisgICAgMTQwMjU3LCAxNDAyNjIsIDE0MDI2NiwgMTQwMjcxLCAwLCAxNDAyNzYsIDE0MDI4MCwgMTQwMjg1LCAxNDAyOTAsIAorICAgIDE0MDI5NCwgMTQwMjk5LCAxNDAzMDQsIDE0MDMwOCwgMTQwMzEzLCAxNDAzMTgsIDE0MDMyMiwgMTQwMzI3LCAxNDAzMzIsIAorICAgIDE0MDMzNiwgMTQwMzQxLCAxNDAzNDYsIDE0MDM1MSwgMTQwMzU2LCAxNDAzNjEsIDE0MDM2NiwgMTQwMzcyLCAxNDAzNzgsIAorICAgIDE0MDM4NCwgMTQwMzg5LCAxNDAzOTUsIDE0MDQwMSwgMTQwNDA3LCAxNDA0MTIsIDE0MDQxOCwgMTQwNDI0LCAxNDA0MjksIAorICAgIDE0MDQzNSwgMTQwNDQxLCAxNDA0NDYsIDE0MDQ1MiwgMTQwNDU4LCAxNDA0NjMsIDE0MDQ2OSwgMTQwNDc1LCAxNDA0ODAsIAorICAgIDE0MDQ4NiwgMTQwNDkyLCAxNDA0OTgsIDE0MDUwNCwgMTQwNTEwLCAxNDA1MTUsIDE0MDUyMSwgMTQwNTI3LCAxNDA1MzMsIAorICAgIDE0MDUzOCwgMTQwNTQ0LCAxNDA1NTAsIDE0MDU1NiwgMTQwNTYxLCAxNDA1NjcsIDE0MDU3MywgMTQwNTc4LCAxNDA1ODQsIAorICAgIDE0MDU5MCwgMTQwNTk1LCAxNDA2MDEsIDE0MDYwNywgMTQwNjEyLCAxNDA2MTgsIDE0MDYyNCwgMTQwNjI5LCAxNDA2MzUsIAorICAgIDE0MDY0MSwgMTQwNjQ3LCAxNDA2NTMsIDE0MDY1OSwgMCwgMTQwNjYzLCAxNDA2NjgsIDAsIDAsIDE0MDY3MywgMCwgMCwgCisgICAgMTQwNjc4LCAxNDA2ODMsIDAsIDAsIDE0MDY4OCwgMTQwNjkzLCAxNDA2OTcsIDE0MDcwMiwgMCwgMTQwNzA3LCAxNDA3MTIsIAorICAgIDE0MDcxNywgMTQwNzIxLCAxNDA3MjYsIDE0MDczMSwgMTQwNzM2LCAxNDA3NDEsIDE0MDc0NiwgMTQwNzUwLCAxNDA3NTUsIAorICAgIDE0MDc2MCwgMCwgMTQwNzY1LCAwLCAxNDA3NzAsIDE0MDc3NSwgMTQwNzc5LCAxNDA3ODQsIDE0MDc4OSwgMTQwNzkzLCAKKyAgICAxNDA3OTgsIDAsIDE0MDgwMywgMTQwODA4LCAxNDA4MTMsIDE0MDgxNywgMTQwODIyLCAxNDA4MjcsIDE0MDgzMSwgCisgICAgMTQwODM2LCAxNDA4NDEsIDE0MDg0NiwgMTQwODUxLCAxNDA4NTYsIDE0MDg2MSwgMTQwODY3LCAxNDA4NzMsIDE0MDg3OSwgCisgICAgMTQwODg0LCAxNDA4OTAsIDE0MDg5NiwgMTQwOTAyLCAxNDA5MDcsIDE0MDkxMywgMTQwOTE5LCAxNDA5MjQsIDE0MDkzMCwgCisgICAgMTQwOTM2LCAxNDA5NDEsIDE0MDk0NywgMTQwOTUzLCAxNDA5NTgsIDE0MDk2NCwgMTQwOTcwLCAxNDA5NzUsIDE0MDk4MSwgCisgICAgMTQwOTg3LCAxNDA5OTMsIDE0MDk5OSwgMTQxMDA1LCAxNDEwMTAsIDE0MTAxNiwgMTQxMDIyLCAxNDEwMjgsIDE0MTAzMywgCisgICAgMTQxMDM5LCAxNDEwNDUsIDE0MTA1MSwgMTQxMDU2LCAxNDEwNjIsIDE0MTA2OCwgMTQxMDczLCAxNDEwNzksIDE0MTA4NSwgCisgICAgMTQxMDkwLCAxNDEwOTYsIDE0MTEwMiwgMTQxMTA3LCAxNDExMTMsIDE0MTExOSwgMTQxMTI0LCAxNDExMzAsIDE0MTEzNiwgCisgICAgMTQxMTQyLCAxNDExNDgsIDE0MTE1NCwgMTQxMTU4LCAwLCAxNDExNjMsIDE0MTE2OCwgMTQxMTcyLCAxNDExNzcsIDAsIDAsIAorICAgIDE0MTE4MiwgMTQxMTg3LCAxNDExOTIsIDE0MTE5NiwgMTQxMjAxLCAxNDEyMDYsIDE0MTIxMCwgMTQxMjE1LCAwLCAKKyAgICAxNDEyMjAsIDE0MTIyNSwgMTQxMjMwLCAxNDEyMzQsIDE0MTIzOSwgMTQxMjQ0LCAxNDEyNDksIDAsIDE0MTI1NCwgCisgICAgMTQxMjU4LCAxNDEyNjMsIDE0MTI2OCwgMTQxMjczLCAxNDEyNzcsIDE0MTI4MiwgMTQxMjg3LCAxNDEyOTIsIDE0MTI5NiwgCisgICAgMTQxMzAxLCAxNDEzMDYsIDE0MTMxMCwgMTQxMzE1LCAxNDEzMjAsIDE0MTMyNCwgMTQxMzI5LCAxNDEzMzQsIDE0MTMzOCwgCisgICAgMTQxMzQzLCAxNDEzNDgsIDE0MTM1MiwgMTQxMzU3LCAxNDEzNjIsIDE0MTM2NywgMTQxMzcyLCAxNDEzNzcsIDE0MTM4MSwgCisgICAgMCwgMTQxMzg2LCAxNDEzOTEsIDE0MTM5NSwgMTQxNDAwLCAwLCAxNDE0MDUsIDE0MTQwOSwgMTQxNDE0LCAxNDE0MTksIAorICAgIDE0MTQyMywgMCwgMTQxNDI4LCAwLCAwLCAwLCAxNDE0MzIsIDE0MTQzNywgMTQxNDQyLCAxNDE0NDYsIDE0MTQ1MSwgCisgICAgMTQxNDU2LCAxNDE0NjEsIDAsIDE0MTQ2NiwgMTQxNDcwLCAxNDE0NzUsIDE0MTQ4MCwgMTQxNDg1LCAxNDE0ODksIAorICAgIDE0MTQ5NCwgMTQxNDk5LCAxNDE1MDQsIDE0MTUwOCwgMTQxNTEzLCAxNDE1MTgsIDE0MTUyMiwgMTQxNTI3LCAxNDE1MzIsIAorICAgIDE0MTUzNiwgMTQxNTQxLCAxNDE1NDYsIDE0MTU1MCwgMTQxNTU1LCAxNDE1NjAsIDE0MTU2NCwgMTQxNTY5LCAxNDE1NzQsIAorICAgIDE0MTU3OSwgMTQxNTg0LCAxNDE1ODksIDE0MTU5NCwgMTQxNjAwLCAxNDE2MDYsIDE0MTYxMiwgMTQxNjE3LCAxNDE2MjMsIAorICAgIDE0MTYyOSwgMTQxNjM1LCAxNDE2NDAsIDE0MTY0NiwgMTQxNjUyLCAxNDE2NTcsIDE0MTY2MywgMTQxNjY5LCAxNDE2NzQsIAorICAgIDE0MTY4MCwgMTQxNjg2LCAxNDE2OTEsIDE0MTY5NywgMTQxNzAzLCAxNDE3MDgsIDE0MTcxNCwgMTQxNzIwLCAxNDE3MjYsIAorICAgIDE0MTczMiwgMTQxNzM4LCAxNDE3NDMsIDE0MTc0OSwgMTQxNzU1LCAxNDE3NjEsIDE0MTc2NiwgMTQxNzcyLCAxNDE3NzgsIAorICAgIDE0MTc4NCwgMTQxNzg5LCAxNDE3OTUsIDE0MTgwMSwgMTQxODA2LCAxNDE4MTIsIDE0MTgxOCwgMTQxODIzLCAxNDE4MjksIAorICAgIDE0MTgzNSwgMTQxODQwLCAxNDE4NDYsIDE0MTg1MiwgMTQxODU3LCAxNDE4NjMsIDE0MTg2OSwgMTQxODc1LCAxNDE4ODEsIAorICAgIDE0MTg4NywgMTQxODkxLCAxNDE4OTYsIDE0MTkwMSwgMTQxOTA2LCAxNDE5MTAsIDE0MTkxNSwgMTQxOTIwLCAxNDE5MjUsIAorICAgIDE0MTkyOSwgMTQxOTM0LCAxNDE5MzksIDE0MTk0MywgMTQxOTQ4LCAxNDE5NTMsIDE0MTk1NywgMTQxOTYyLCAxNDE5NjcsIAorICAgIDE0MTk3MSwgMTQxOTc2LCAxNDE5ODEsIDE0MTk4NSwgMTQxOTkwLCAxNDE5OTUsIDE0MjAwMCwgMTQyMDA1LCAxNDIwMTAsIAorICAgIDE0MjAxNCwgMTQyMDE5LCAxNDIwMjQsIDE0MjAyOSwgMTQyMDMzLCAxNDIwMzgsIDE0MjA0MywgMTQyMDQ4LCAxNDIwNTIsIAorICAgIDE0MjA1NywgMTQyMDYyLCAxNDIwNjYsIDE0MjA3MSwgMTQyMDc2LCAxNDIwODAsIDE0MjA4NSwgMTQyMDkwLCAxNDIwOTQsIAorICAgIDE0MjA5OSwgMTQyMTA0LCAxNDIxMDgsIDE0MjExMywgMTQyMTE4LCAxNDIxMjMsIDE0MjEyOCwgMTQyMTMzLCAxNDIxMzgsIAorICAgIDE0MjE0NCwgMTQyMTUwLCAxNDIxNTYsIDE0MjE2MSwgMTQyMTY3LCAxNDIxNzMsIDE0MjE3OSwgMTQyMTg0LCAxNDIxOTAsIAorICAgIDE0MjE5NiwgMTQyMjAxLCAxNDIyMDcsIDE0MjIxMywgMTQyMjE4LCAxNDIyMjQsIDE0MjIzMCwgMTQyMjM1LCAxNDIyNDEsIAorICAgIDE0MjI0NywgMTQyMjUyLCAxNDIyNTgsIDE0MjI2NCwgMTQyMjcwLCAxNDIyNzYsIDE0MjI4MiwgMTQyMjg3LCAxNDIyOTMsIAorICAgIDE0MjI5OSwgMTQyMzA1LCAxNDIzMTAsIDE0MjMxNiwgMTQyMzIyLCAxNDIzMjgsIDE0MjMzMywgMTQyMzM5LCAxNDIzNDUsIAorICAgIDE0MjM1MCwgMTQyMzU2LCAxNDIzNjIsIDE0MjM2NywgMTQyMzczLCAxNDIzNzksIDE0MjM4NCwgMTQyMzkwLCAxNDIzOTYsIAorICAgIDE0MjQwMSwgMTQyNDA3LCAxNDI0MTMsIDE0MjQxOSwgMTQyNDI1LCAxNDI0MzEsIDE0MjQzNiwgMTQyNDQyLCAxNDI0NDgsIAorICAgIDE0MjQ1NCwgMTQyNDU5LCAxNDI0NjUsIDE0MjQ3MSwgMTQyNDc3LCAxNDI0ODIsIDE0MjQ4OCwgMTQyNDk0LCAxNDI0OTksIAorICAgIDE0MjUwNSwgMTQyNTExLCAxNDI1MTYsIDE0MjUyMiwgMTQyNTI4LCAxNDI1MzMsIDE0MjUzOSwgMTQyNTQ1LCAxNDI1NTAsIAorICAgIDE0MjU1NiwgMTQyNTYyLCAxNDI1NjgsIDE0MjU3NCwgMTQyNTgwLCAxNDI1ODUsIDE0MjU5MSwgMTQyNTk3LCAxNDI2MDMsIAorICAgIDE0MjYwOCwgMTQyNjE0LCAxNDI2MjAsIDE0MjYyNiwgMTQyNjMxLCAxNDI2MzcsIDE0MjY0MywgMTQyNjQ4LCAxNDI2NTQsIAorICAgIDE0MjY2MCwgMTQyNjY1LCAxNDI2NzEsIDE0MjY3NywgMTQyNjgyLCAxNDI2ODgsIDE0MjY5NCwgMTQyNjk5LCAxNDI3MDUsIAorICAgIDE0MjcxMSwgMTQyNzE3LCAxNDI3MjMsIDE0MjcyOSwgMTQyNzM1LCAxNDI3NDIsIDE0Mjc0OSwgMTQyNzU2LCAxNDI3NjIsIAorICAgIDE0Mjc2OSwgMTQyNzc2LCAxNDI3ODMsIDE0Mjc4OSwgMTQyNzk2LCAxNDI4MDMsIDE0MjgwOSwgMTQyODE2LCAxNDI4MjMsIAorICAgIDE0MjgyOSwgMTQyODM2LCAxNDI4NDMsIDE0Mjg0OSwgMTQyODU2LCAxNDI4NjMsIDE0Mjg2OSwgMTQyODc2LCAxNDI4ODMsIAorICAgIDE0Mjg5MCwgMTQyODk3LCAxNDI5MDQsIDE0MjkxMCwgMTQyOTE3LCAxNDI5MjQsIDE0MjkzMSwgMTQyOTM3LCAxNDI5NDQsIAorICAgIDE0Mjk1MSwgMTQyOTU4LCAxNDI5NjQsIDE0Mjk3MSwgMTQyOTc4LCAxNDI5ODQsIDE0Mjk5MSwgMTQyOTk4LCAxNDMwMDQsIAorICAgIDE0MzAxMSwgMTQzMDE4LCAxNDMwMjQsIDE0MzAzMSwgMTQzMDM4LCAxNDMwNDQsIDE0MzA1MSwgMTQzMDU4LCAxNDMwNjUsIAorICAgIDE0MzA3MiwgMTQzMDc5LCAxNDMwODQsIDE0MzA5MCwgMTQzMDk2LCAxNDMxMDIsIDE0MzEwNywgMTQzMTEzLCAxNDMxMTksIAorICAgIDE0MzEyNSwgMTQzMTMwLCAxNDMxMzYsIDE0MzE0MiwgMTQzMTQ3LCAxNDMxNTMsIDE0MzE1OSwgMTQzMTY0LCAxNDMxNzAsIAorICAgIDE0MzE3NiwgMTQzMTgxLCAxNDMxODcsIDE0MzE5MywgMTQzMTk4LCAxNDMyMDQsIDE0MzIxMCwgMTQzMjE2LCAxNDMyMjIsIAorICAgIDE0MzIyOCwgMTQzMjMzLCAxNDMyMzksIDE0MzI0NSwgMTQzMjUxLCAxNDMyNTYsIDE0MzI2MiwgMTQzMjY4LCAxNDMyNzQsIAorICAgIDE0MzI3OSwgMTQzMjg1LCAxNDMyOTEsIDE0MzI5NiwgMTQzMzAyLCAxNDMzMDgsIDE0MzMxMywgMTQzMzE5LCAxNDMzMjUsIAorICAgIDE0MzMzMCwgMTQzMzM2LCAxNDMzNDIsIDE0MzM0NywgMTQzMzUzLCAxNDMzNTksIDE0MzM2NSwgMTQzMzcxLCAxNDMzNzcsIAorICAgIDE0MzM4MywgMCwgMCwgMTQzMzkwLCAxNDMzOTUsIDE0MzQwMCwgMTQzNDA1LCAxNDM0MTAsIDE0MzQxNSwgMTQzNDIwLCAKKyAgICAxNDM0MjUsIDE0MzQzMCwgMTQzNDM1LCAxNDM0NDAsIDE0MzQ0NSwgMTQzNDUwLCAxNDM0NTUsIDE0MzQ2MCwgMTQzNDY1LCAKKyAgICAxNDM0NzAsIDE0MzQ3NSwgMTQzNDgxLCAxNDM0ODYsIDE0MzQ5MSwgMTQzNDk2LCAxNDM1MDEsIDE0MzUwNiwgMTQzNTExLCAKKyAgICAxNDM1MTYsIDE0MzUyMCwgMTQzNTI1LCAxNDM1MzAsIDE0MzUzNSwgMTQzNTQwLCAxNDM1NDUsIDE0MzU1MCwgMTQzNTU1LCAKKyAgICAxNDM1NjAsIDE0MzU2NSwgMTQzNTcwLCAxNDM1NzUsIDE0MzU4MCwgMTQzNTg1LCAxNDM1OTAsIDE0MzU5NSwgMTQzNjAwLCAKKyAgICAxNDM2MDUsIDE0MzYxMSwgMTQzNjE2LCAxNDM2MjEsIDE0MzYyNiwgMTQzNjMxLCAxNDM2MzYsIDE0MzY0MSwgMTQzNjQ2LCAKKyAgICAxNDM2NTIsIDE0MzY1NywgMTQzNjYyLCAxNDM2NjcsIDE0MzY3MiwgMTQzNjc3LCAxNDM2ODIsIDE0MzY4NywgMTQzNjkyLCAKKyAgICAxNDM2OTcsIDE0MzcwMiwgMTQzNzA3LCAxNDM3MTIsIDE0MzcxNywgMTQzNzIyLCAxNDM3MjcsIDE0MzczMiwgMTQzNzM3LCAKKyAgICAxNDM3NDIsIDE0Mzc0NywgMTQzNzUyLCAxNDM3NTcsIDE0Mzc2MiwgMTQzNzY3LCAxNDM3NzMsIDE0Mzc3OCwgMTQzNzgzLCAKKyAgICAxNDM3ODgsIDE0Mzc5MywgMTQzNzk4LCAxNDM4MDMsIDE0MzgwOCwgMTQzODEyLCAxNDM4MTcsIDE0MzgyMiwgMTQzODI3LCAKKyAgICAxNDM4MzIsIDE0MzgzNywgMTQzODQyLCAxNDM4NDcsIDE0Mzg1MiwgMTQzODU3LCAxNDM4NjIsIDE0Mzg2NywgMTQzODcyLCAKKyAgICAxNDM4NzcsIDE0Mzg4MiwgMTQzODg3LCAxNDM4OTIsIDE0Mzg5NywgMTQzOTAzLCAxNDM5MDgsIDE0MzkxMywgMTQzOTE4LCAKKyAgICAxNDM5MjMsIDE0MzkyOCwgMTQzOTMzLCAxNDM5MzgsIDE0Mzk0NCwgMTQzOTQ5LCAxNDM5NTQsIDE0Mzk1OSwgMTQzOTY0LCAKKyAgICAxNDM5NjksIDE0Mzk3NCwgMTQzOTgwLCAxNDM5ODYsIDE0Mzk5MiwgMTQzOTk4LCAxNDQwMDQsIDE0NDAxMCwgMTQ0MDE2LCAKKyAgICAxNDQwMjIsIDE0NDAyOCwgMTQ0MDM0LCAxNDQwNDAsIDE0NDA0NiwgMTQ0MDUyLCAxNDQwNTgsIDE0NDA2NCwgMTQ0MDcwLCAKKyAgICAxNDQwNzYsIDE0NDA4MywgMTQ0MDg5LCAxNDQwOTUsIDE0NDEwMSwgMTQ0MTA3LCAxNDQxMTMsIDE0NDExOSwgMTQ0MTI1LCAKKyAgICAxNDQxMzAsIDE0NDEzNiwgMTQ0MTQyLCAxNDQxNDgsIDE0NDE1NCwgMTQ0MTYwLCAxNDQxNjYsIDE0NDE3MiwgMTQ0MTc4LCAKKyAgICAxNDQxODQsIDE0NDE5MCwgMTQ0MTk2LCAxNDQyMDIsIDE0NDIwOCwgMTQ0MjE0LCAxNDQyMjAsIDE0NDIyNiwgMTQ0MjMyLCAKKyAgICAxNDQyMzksIDE0NDI0NSwgMTQ0MjUxLCAxNDQyNTcsIDE0NDI2MywgMTQ0MjY5LCAxNDQyNzUsIDE0NDI4MSwgMTQ0Mjg4LCAKKyAgICAxNDQyOTQsIDE0NDMwMCwgMTQ0MzA2LCAxNDQzMTIsIDE0NDMxOCwgMTQ0MzI0LCAxNDQzMzAsIDE0NDMzNiwgMTQ0MzQyLCAKKyAgICAxNDQzNDgsIDE0NDM1NCwgMTQ0MzYwLCAxNDQzNjYsIDE0NDM3MiwgMTQ0Mzc4LCAxNDQzODQsIDE0NDM5MCwgMTQ0Mzk2LCAKKyAgICAxNDQ0MDIsIDE0NDQwOCwgMTQ0NDE0LCAxNDQ0MjAsIDE0NDQyNiwgMTQ0NDMzLCAxNDQ0MzksIDE0NDQ0NSwgMTQ0NDUxLCAKKyAgICAxNDQ0NTcsIDE0NDQ2MywgMTQ0NDY5LCAxNDQ0NzUsIDE0NDQ4MCwgMTQ0NDg2LCAxNDQ0OTIsIDE0NDQ5OCwgMTQ0NTA0LCAKKyAgICAxNDQ1MTAsIDE0NDUxNiwgMTQ0NTIyLCAxNDQ1MjgsIDE0NDUzNCwgMTQ0NTQwLCAxNDQ1NDYsIDE0NDU1MiwgMTQ0NTU4LCAKKyAgICAxNDQ1NjQsIDE0NDU3MCwgMTQ0NTc2LCAxNDQ1ODIsIDE0NDU4OSwgMTQ0NTk1LCAxNDQ2MDEsIDE0NDYwNywgMTQ0NjEzLCAKKyAgICAxNDQ2MTksIDE0NDYyNSwgMTQ0NjMxLCAxNDQ2MzgsIDE0NDY0NCwgMTQ0NjUwLCAxNDQ2NTYsIDE0NDY2MiwgMTQ0NjY4LCAKKyAgICAxNDQ2NzQsIDE0NDY4MSwgMTQ0Njg4LCAxNDQ2OTUsIDE0NDcwMiwgMTQ0NzA5LCAxNDQ3MTYsIDE0NDcyMywgMTQ0NzMwLCAKKyAgICAxNDQ3MzcsIDE0NDc0NCwgMTQ0NzUxLCAxNDQ3NTgsIDE0NDc2NSwgMTQ0NzcyLCAxNDQ3NzksIDE0NDc4NiwgMTQ0NzkzLCAKKyAgICAxNDQ4MDEsIDE0NDgwOCwgMTQ0ODE1LCAxNDQ4MjIsIDE0NDgyOSwgMTQ0ODM2LCAxNDQ4NDMsIDE0NDg1MCwgMTQ0ODU2LCAKKyAgICAxNDQ4NjMsIDE0NDg3MCwgMTQ0ODc3LCAxNDQ4ODQsIDE0NDg5MSwgMTQ0ODk4LCAxNDQ5MDUsIDE0NDkxMiwgMTQ0OTE5LCAKKyAgICAxNDQ5MjYsIDE0NDkzMywgMTQ0OTQwLCAxNDQ5NDcsIDE0NDk1NCwgMTQ0OTYxLCAxNDQ5NjgsIDE0NDk3NSwgMTQ0OTgzLCAKKyAgICAxNDQ5OTAsIDE0NDk5NywgMTQ1MDA0LCAxNDUwMTEsIDE0NTAxOCwgMTQ1MDI1LCAxNDUwMzIsIDE0NTA0MCwgMTQ1MDQ3LCAKKyAgICAxNDUwNTQsIDE0NTA2MSwgMTQ1MDY4LCAxNDUwNzUsIDE0NTA4MiwgMTQ1MDg3LCAwLCAwLCAxNDUwOTIsIDE0NTA5NywgCisgICAgMTQ1MTAxLCAxNDUxMDUsIDE0NTEwOSwgMTQ1MTEzLCAxNDUxMTcsIDE0NTEyMSwgMTQ1MTI2LCAxNDUxMzAsIDE0NTEzNSwgCisgICAgMTQ1MTQwLCAxNDUxNDQsIDE0NTE0OCwgMTQ1MTUyLCAxNDUxNTYsIDE0NTE2MCwgMTQ1MTY0LCAxNDUxNjksIDE0NTE3MywgCisgICAgMTQ1MTc4LCAxNDUxODMsIDE0NTE4NywgMTQ1MTkxLCAxNDUxOTUsIDE0NTE5OSwgMTQ1MjAzLCAxNDUyMDcsIDE0NTIxMiwgCisgICAgMTQ1MjE2LCAxNDUyMjEsIDE0NTIyNywgMTQ1MjMyLCAxNDUyMzcsIDE0NTI0MiwgMTQ1MjQ3LCAxNDUyNTIsIDE0NTI1NywgCisgICAgMTQ1MjYzLCAxNDUyNjgsIDE0NTI3NCwgMTQ1MjgwLCAxNDUyODUsIDE0NTI5MCwgMTQ1Mjk1LCAxNDUzMDAsIDE0NTMwNSwgCisgICAgMTQ1MzEwLCAxNDUzMTYsIDE0NTMyMSwgMTQ1MzI3LCAxNDUzMzEsIDE0NTMzNiwgMTQ1MzQxLCAxNDUzNDYsIDE0NTM1MSwgCisgICAgMTQ1MzU2LCAxNDUzNjEsIDE0NTM2NywgMTQ1Mzc1LCAxNDUzODIsIDE0NTM4NywgMTQ1MzkyLCAxNDUzOTksIDE0NTQwNSwgCisgICAgMTQ1NDEwLCAxNDU0MTYsIDE0NTQyMiwgMTQ1NDMwLCAxNDU0MzYsIDE0NTQ0MywgMTQ1NDUxLCAxNDU0NTcsIDE0NTQ2NiwgCisgICAgMTQ1NDc1LCAxNDU0ODMsIDE0NTQ5MSwgMTQ1NDk3LCAxNDU1MDQsIDE0NTUxMiwgMTQ1NTIwLCAxNDU1MjYsIDE0NTUzMywgCisgICAgMTQ1NTQyLCAxNDU1NTEsIDE0NTU1OCwgMTQ1NTY5LCAxNDU1NzksIDE0NTU4OSwgMTQ1NTk5LCAxNDU2MDksIDE0NTYxNiwgCisgICAgMTQ1NjIzLCAxNDU2MzAsIDE0NTYzNywgMTQ1NjQ2LCAxNDU2NTUsIDE0NTY2NiwgMTQ1Njc3LCAxNDU2ODYsIDE0NTY5NSwgCisgICAgMTQ1NzA2LCAxNDU3MTUsIDE0NTcyNCwgMTQ1NzM1LCAxNDU3NDQsIDE0NTc1MywgMTQ1NzYxLCAxNDU3NjksIDE0NTc4MCwgCisgICAgMTQ1NzkxLCAxNDU3OTksIDE0NTgwOCwgMTQ1ODE3LCAxNDU4MjQsIDE0NTgzNSwgMTQ1ODQ2LCAxNDU4NTUsIDE0NTg2NCwgCisgICAgMTQ1ODcxLCAxNDU4ODAsIDE0NTg4OSwgMTQ1ODk4LCAxNDU5MDksIDE0NTkxOCwgMTQ1OTI4LCAxNDU5MzcsIDE0NTk0NiwgCisgICAgMTQ1OTU3LCAxNDU5NzAsIDE0NTk4NSwgMTQ1OTk2LCAxNDYwMDksIDE0NjAyMSwgMTQ2MDMwLCAxNDYwNDEsIDE0NjA1MiwgCisgICAgMTQ2MDYxLCAxNDYwNzIsIDE0NjA4NiwgMTQ2MTAxLCAxNDYxMDQsIDE0NjExMywgMTQ2MTE4LCAxNDYxMjQsIDE0NjEzMiwgCisgICAgMTQ2MTM4LCAxNDYxNDQsIDE0NjE1MywgMTQ2MTYwLCAxNDYxNzAsIDE0NjE4MiwgMTQ2MTg5LCAxNDYxOTIsIDE0NjE5OCwgCisgICAgMTQ2MjA1LCAxNDYyMTEsIDE0NjIxNiwgMTQ2MjE5LCAxNDYyMjQsIDE0NjIyNywgMTQ2MjM0LCAxNDYyNDAsIDE0NjI0OCwgCisgICAgMTQ2MjU1LCAxNDYyNjIsIDE0NjI2OCwgMTQ2MjczLCAxNDYyNzYsIDE0NjI3OSwgMTQ2MjgyLCAxNDYyODgsIDE0NjI5NSwgCisgICAgMTQ2MzAxLCAxNDYzMDYsIDE0NjMxMywgMTQ2MzE2LCAxNDYzMjEsIDE0NjMyOCwgMTQ2MzM0LCAxNDYzNDIsIDE0NjM0OSwgCisgICAgMTQ2MzU5LCAxNDYzNjgsIDE0NjM3MSwgMTQ2Mzc3LCAxNDYzODQsIDE0NjM5MSwgMTQ2Mzk4LCAxNDY0MDMsIDE0NjQxMSwgCisgICAgMTQ2NDE5LCAxNDY0MjgsIDE0NjQzNCwgMTQ2NDQzLCAxNDY0NTIsIDE0NjQ2MSwgMTQ2NDY3LCAxNDY0NzYsIDE0NjQ4MywgCisgICAgMTQ2NDkwLCAxNDY0OTcsIDE0NjUwNSwgMTQ2NTExLCAxNDY1MTksIDE0NjUyNSwgMTQ2NTMyLCAxNDY1MzksIDE0NjU0NywgCisgICAgMTQ2NTU4LCAxNDY1NjgsIDE0NjU3NCwgMTQ2NTgxLCAxNDY1ODgsIDE0NjU5NSwgMTQ2NjAxLCAxNDY2MDgsIDE0NjYxNSwgCisgICAgMTQ2NjIwLCAxNDY2MjcsIDE0NjYzNSwgMTQ2NjQ0LCAxNDY2NTAsIDE0NjY2MiwgMTQ2NjczLCAxNDY2NzksIDE0NjY4NywgCisgICAgMTQ2NjkzLCAxNDY3MDAsIDE0NjcwNywgMTQ2NzE0LCAxNDY3MjAsIDE0NjcyNywgMTQ2NzM2LCAxNDY3NDIsIDE0Njc0OCwgCisgICAgMTQ2NzU1LCAxNDY3NjIsIDE0Njc3MCwgMTQ2NzgwLCAxNDY3OTAsIDE0NjgwMCwgMTQ2ODEwLCAxNDY4MTgsIDE0NjgyNiwgCisgICAgMTQ2ODM2LCAxNDY4NDQsIDE0Njg0OSwgMTQ2ODU0LCAxNDY4NTksIDE0Njg2NSwgMTQ2ODcyLCAxNDY4NzksIDE0Njg4NSwgCisgICAgMTQ2ODkxLCAxNDY4OTYsIDE0NjkwMywgMTQ2OTExLCAxNDY5MjEsIDE0NjkyOSwgMTQ2OTM3LCAxNDY5NDcsIDE0Njk1NywgCisgICAgMTQ2OTY1LCAxNDY5NzUsIDE0Njk4NSwgMTQ2OTk3LCAxNDcwMDksIDE0NzAyMSwgMTQ3MDMxLCAxNDcwMzcsIDE0NzA0MywgCisgICAgMTQ3MDUwLCAxNDcwNTksIDE0NzA2OCwgMTQ3MDc3LCAxNDcwODYsIDE0NzA5NiwgMTQ3MTA1LCAxNDcxMTQsIDE0NzEyMywgCisgICAgMTQ3MTI4LCAxNDcxMzQsIDE0NzE0MywgMTQ3MTUzLCAxNDcxNjIsIDE0NzE2OCwgMTQ3MTc0LCAxNDcxODEsIDE0NzE4OCwgCisgICAgMTQ3MTk1LCAxNDcyMDEsIDE0NzIwOCwgMTQ3MjE1LCAxNDcyMjIsIDE0NzIyOCwgMTQ3MjMyLCAxNDcyMzcsIDE0NzI0NCwgCisgICAgMTQ3MjUxLCAxNDcyNTgsIDE0NzI2MywgMTQ3MjcxLCAxNDcyNzksIDE0NzI4OCwgMTQ3Mjk2LCAxNDczMDMsIDE0NzMxMSwgCisgICAgMTQ3MzIwLCAxNDczMzAsIDE0NzMzMywgMTQ3MzM3LCAxNDczNDIsIDE0NzM0NywgMTQ3MzUyLCAxNDczNTcsIDE0NzM2MiwgCisgICAgMTQ3MzY3LCAxNDczNzIsIDE0NzM3NywgMTQ3MzgyLCAxNDczODcsIDE0NzM5MiwgMTQ3Mzk3LCAxNDc0MDIsIDE0NzQwNywgCisgICAgMTQ3NDEyLCAxNDc0MTcsIDE0NzQyMiwgMTQ3NDI5LCAxNDc0MzUsIDE0NzQ0MiwgMTQ3NDQ4LCAxNDc0NTMsIDE0NzQ2MCwgCisgICAgMTQ3NDY2LCAxNDc0NzMsIDE0NzQ3OSwgMTQ3NDg0LCAxNDc0OTEsIDE0NzQ5OCwgMTQ3NTA1LCAxNDc1MTEsIDE0NzUxNywgCisgICAgMTQ3NTI2LCAxNDc1MzUsIDE0NzU0NiwgMTQ3NTUzLCAxNDc1NjAsIDE0NzU2OSwgMTQ3NTc4LCAxNDc1ODcsIDE0NzU5NiwgCisgICAgMTQ3NjA1LCAxNDc2MTEsIDE0NzYxOSwgMTQ3NjI1LCAxNDc2MzUsIDE0NzY0MCwgMTQ3NjQ5LCAxNDc2NTgsIDE0NzY2NSwgCisgICAgMTQ3Njc2LCAxNDc2ODMsIDE0NzY5MCwgMTQ3Njk3LCAxNDc3MDQsIDE0NzcxMSwgMTQ3NzE4LCAxNDc3MjUsIDE0NzczMiwgCisgICAgMTQ3NzM5LCAxNDc3NDYsIDE0Nzc1MiwgMTQ3NzU4LCAxNDc3NjQsIDE0Nzc3MSwgMTQ3Nzc4LCAxNDc3ODUsIDE0Nzc5MiwgCisgICAgMTQ3Nzk5LCAxNDc4MDYsIDE0NzgxMywgMTQ3ODIwLCAxNDc4MjcsIDE0NzgzNCwgMTQ3ODQxLCAxNDc4NDgsIDE0Nzg1MywgCisgICAgMTQ3ODYyLCAxNDc4NzEsIDE0Nzg4MCwgMTQ3ODg3LCAxNDc4OTQsIDE0NzkwMSwgMTQ3OTA4LCAxNDc5MTUsIDE0NzkyMiwgCisgICAgMTQ3OTI5LCAxNDc5MzYsIDE0Nzk0NSwgMTQ3OTU0LCAxNDc5NjMsIDE0Nzk3MiwgMTQ3OTgxLCAxNDc5OTAsIDE0Nzk5OSwgCisgICAgMTQ4MDA4LCAxNDgwMTcsIDE0ODAyNiwgMTQ4MDM1LCAxNDgwNDQsIDE0ODA1MywgMTQ4MDU5LCAxNDgwNjcsIDE0ODA3MywgCisgICAgMTQ4MDgzLCAxNDgwODgsIDE0ODA5NywgMTQ4MTA2LCAxNDgxMTUsIDE0ODEyNiwgMTQ4MTMxLCAxNDgxMzgsIDE0ODE0NSwgCisgICAgMTQ4MTUyLCAxNDgxNTcsIDE0ODE2MywgMTQ4MTY5LCAxNDgxNzUsIDE0ODE4MiwgMTQ4MTg5LCAxNDgxOTYsIDE0ODIwMywgCisgICAgMTQ4MjEwLCAxNDgyMTcsIDE0ODIyNCwgMTQ4MjMxLCAxNDgyMzgsIDE0ODI0NSwgMTQ4MjUyLCAxNDgyNTksIDE0ODI2NCwgCisgICAgMTQ4MjczLCAxNDgyODIsIDE0ODI5MSwgMTQ4MzAwLCAxNDgzMDksIDE0ODMxOCwgMTQ4MzI3LCAxNDgzMzYsIDE0ODM0NywgCisgICAgMTQ4MzU4LCAxNDgzNjUsIDE0ODM3MiwgMTQ4Mzc5LCAxNDgzODYsIDE0ODM5MywgMTQ4NDAwLCAxNDg0MDgsIDE0ODQxOCwgCisgICAgMTQ4NDI4LCAxNDg0MzgsIDE0ODQ0OSwgMTQ4NDYwLCAxNDg0NzEsIDE0ODQ4MCwgMTQ4NDg5LCAxNDg0OTgsIDE0ODUwMywgCisgICAgMTQ4NTA4LCAxNDg1MTMsIDE0ODUxOCwgMTQ4NTI5LCAxNDg1NDAsIDE0ODU1MSwgMTQ4NTYyLCAxNDg1NzMsIDE0ODU4MywgCisgICAgMTQ4NTk0LCAxNDg2MDMsIDE0ODYxMiwgMTQ4NjIxLCAxNDg2MzAsIDE0ODYzOSwgMTQ4NjQ3LCAxNDg2NTYsIDE0ODY2NywgCisgICAgMTQ4Njc4LCAxNDg2ODksIDE0ODcwMCwgMTQ4NzExLCAxNDg3MjMsIDE0ODczNiwgMTQ4NzQ4LCAxNDg3NjEsIDE0ODc3MywgCisgICAgMTQ4Nzg2LCAxNDg3OTgsIDE0ODgxMSwgMTQ4ODIyLCAxNDg4MzMsIDE0ODg0MiwgMTQ4ODUwLCAxNDg4NTksIDE0ODg3MCwgCisgICAgMTQ4ODgxLCAxNDg4OTMsIDE0ODkwNiwgMTQ4OTIwLCAxNDg5MzUsIDE0ODk0NywgMTQ4OTYwLCAxNDg5NzIsIDE0ODk4NSwgCisgICAgMTQ4OTk2LCAxNDkwMDcsIDE0OTAxNiwgMTQ5MDI0LCAxNDkwMzMsIDE0OTA0MCwgMTQ5MDQ3LCAxNDkwNTQsIDE0OTA2MSwgCisgICAgMTQ5MDY4LCAxNDkwNzUsIDE0OTA4MiwgMTQ5MDg5LCAxNDkwOTYsIDE0OTEwMywgMTQ5MTA4LCAxNDkxMTMsIDE0OTExOCwgCisgICAgMTQ5MTI1LCAxNDkxMzUsIDE0OTE0NiwgMTQ5MTU2LCAxNDkxNjcsIDE0OTE4MSwgMTQ5MTk2LCAxNDkyMTEsIDE0OTIyNSwgCisgICAgMTQ5MjQwLCAxNDkyNTUsIDE0OTI2NiwgMTQ5Mjc3LCAxNDkyOTAsIDE0OTMwMywgMTQ5MzEyLCAxNDkzMjEsIDE0OTMzNCwgCisgICAgMTQ5MzQ3LCAxNDkzNTQsIDE0OTM2MSwgMTQ5MzY2LCAxNDkzNzEsIDE0OTM3NiwgMTQ5MzgxLCAxNDkzODYsIDE0OTM5MywgCisgICAgMTQ5NDAyLCAxNDk0MDcsIDE0OTQxMCwgMTQ5NDE1LCAxNDk0MjIsIDE0OTQyOSwgMTQ5NDM2LCAxNDk0NDMsIDE0OTQ1MCwgCisgICAgMTQ5NDU3LCAxNDk0NzAsIDE0OTQ4NCwgMTQ5NDk5LCAxNDk1MDYsIDE0OTUxMywgMTQ5NTIwLCAxNDk1MjksIDE0OTUzNywgCisgICAgMTQ5NTQ1LCAxNDk1NTQsIDE0OTU1OSwgMTQ5NTY0LCAxNDk1NjksIDE0OTU3NCwgMTQ5NTc5LCAxNDk1ODQsIDE0OTU5MSwgCisgICAgMTQ5NTk4LCAxNDk2MDQsIDE0OTYxMSwgMTQ5NjE3LCAxNDk2MjQsIDE0OTYyOSwgMTQ5NjM0LCAxNDk2MzksIDE0OTY0NCwgCisgICAgMTQ5NjQ5LCAxNDk2NTYsIDE0OTY2MywgMTQ5NjY4LCAxNDk2NzUsIDE0OTY4MiwgMTQ5Njg3LCAxNDk2OTIsIDE0OTY5NywgCisgICAgMTQ5NzAyLCAxNDk3MDcsIDE0OTcxMiwgMTQ5NzE5LCAxNDk3MjYsIDE0OTczMywgMTQ5NzM2LCAxNDk3NDEsIDE0OTc0NiwgCisgICAgMTQ5NzUxLCAxNDk3NTYsIDE0OTc2MywgMTQ5NzcwLCAxNDk3NzgsIDE0OTc4NiwgMTQ5NzkxLCAxNDk3OTYsIDE0OTgwMywgCisgICAgMTQ5ODEwLCAxNDk4MTcsIDE0OTgyMiwgMTQ5ODI5LCAxNDk4MzYsIDE0OTg0MSwgMTQ5ODQ4LCAxNDk4NTUsIDE0OTg2MSwgCisgICAgMTQ5ODY3LCAxNDk4NzMsIDE0OTg3OSwgMTQ5ODg3LCAxNDk4OTUsIDE0OTkwMSwgMTQ5OTA5LCAxNDk5MTcsIDE0OTkyMiwgCisgICAgMTQ5OTI5LCAxNDk5MzYsIDE0OTk0MSwgMTQ5OTQ4LCAxNDk5NTUsIDE0OTk2MiwgMTQ5OTcwLCAxNDk5NzgsIDE0OTk4MywgCisgICAgMTQ5OTkwLCAxNDk5OTcsIDE1MDAwNiwgMTUwMDEzLCAxNTAwMjIsIDE1MDAzMywgMTUwMDQyLCAxNTAwNTEsIDE1MDA2MCwgCisgICAgMTUwMDY5LCAxNTAwNzIsIDE1MDA3NywgMTUwMDg0LCAxNTAwOTMsIDE1MDEwMCwgMTUwMTA5LCAxNTAxMTYsIDE1MDEyMSwgCisgICAgMTUwMTI2LCAxNTAxMjksIDE1MDEzMiwgMTUwMTM1LCAxNTAxNDIsIDE1MDE0OSwgMTUwMTU4LCAxNTAxNjcsIDE1MDE3NiwgCisgICAgMTUwMTgzLCAxNTAxOTAsIDE1MDE5NSwgMTUwMjA4LCAxNTAyMTMsIDE1MDIxOCwgMTUwMjIzLCAxNTAyMjgsIDE1MDIzMywgCisgICAgMTUwMjM4LCAxNTAyNDMsIDE1MDI0OCwgMTUwMjUxLCAxNTAyNTYsIDE1MDI2MSwgMTUwMjY2LCAxNTAyNzEsIDE1MDI3NiwgCisgICAgMTUwMjgzLCAxNTAyODgsIDE1MDI5NSwgMTUwMjk4LCAxNTAzMDMsIDE1MDMwNiwgMTUwMzA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAzMTIsIDE1MDMxNywgMTUwMzIyLCAxNTAzMjcsIDE1MDMzMiwgMCwgCisgICAgMTUwMzM3LCAxNTAzNDIsIDE1MDM0NywgMTUwMzUyLCAxNTAzNTcsIDE1MDM2MiwgMTUwMzY3LCAxNTAzNzIsIDE1MDM3NywgCisgICAgMTUwMzgyLCAxNTAzODcsIDE1MDM5MiwgMTUwMzk3LCAxNTA0MDIsIDE1MDQwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUwNDEyLCAxNTA0MTcsIDE1MDQyMiwgMTUwNDI3LCAxNTA0MzIsIDE1MDQzNywgMTUwNDQyLCAwLCAxNTA0NDcsIAorICAgIDE1MDQ1MiwgMTUwNDU3LCAxNTA0NjMsIDE1MDQ2NywgMTUwNDcyLCAxNTA0NzcsIDE1MDQ4MiwgMTUwNDg3LCAxNTA0OTIsIAorICAgIDE1MDQ5NywgMTUwNTAyLCAxNTA1MDcsIDE1MDUxMiwgMTUwNTE3LCAxNTA1MjIsIDE1MDUyNywgMCwgMCwgMTUwNTMyLCAKKyAgICAxNTA1MzcsIDE1MDU0MiwgMTUwNTQ3LCAxNTA1NTIsIDE1MDU1NywgMTUwNTYyLCAwLCAxNTA1NjcsIDE1MDU3MiwgMCwgCisgICAgMTUwNTc4LCAxNTA1ODMsIDE1MDU5MSwgMTUwNTk4LCAxNTA2MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTA5NSwgMTM1MDk5LCAxMzUxMDQsIDEzNTEwOSwgMTM1MTE0LCAxMzUxMTgsIAotICAgIDEzNTEyMywgMTM1MTI4LCAxMzUxMzMsIDEzNTEzNywgMTM1MTQyLCAxMzUxNDcsIDEzNTE1MSwgMTM1MTU2LCAxMzUxNjEsIAotICAgIDEzNTE2NSwgMTM1MTcwLCAxMzUxNzUsIDEzNTE3OSwgMTM1MTgzLCAxMzUxODgsIDEzNTE5MiwgMTM1MTk3LCAxMzUyMDIsIAotICAgIDEzNTIwNywgMTM1MjEyLCAxMzUyMTcsIDEzNTIyMSwgMTM1MjI2LCAxMzUyMzEsIDEzNTIzNiwgMTM1MjQwLCAxMzUyNDUsIAotICAgIDEzNTI1MCwgMTM1MjU1LCAxMzUyNTksIDEzNTI2NCwgMTM1MjY5LCAxMzUyNzMsIDEzNTI3OCwgMTM1MjgzLCAxMzUyODcsIAotICAgIDEzNTI5MiwgMTM1Mjk3LCAxMzUzMDEsIDEzNTMwNSwgMTM1MzEwLCAxMzUzMTQsIDEzNTMxOSwgMTM1MzI0LCAxMzUzMjksIAotICAgIDEzNTMzNCwgMTM1MzM5LCAxMzUzNDMsIDEzNTM0OCwgMTM1MzUzLCAxMzUzNTgsIDEzNTM2MiwgMTM1MzY3LCAxMzUzNzIsIAotICAgIDEzNTM3NywgMTM1MzgxLCAxMzUzODYsIDEzNTM5MSwgMTM1Mzk1LCAxMzU0MDAsIDEzNTQwNSwgMTM1NDA5LCAxMzU0MTQsIAotICAgIDEzNTQxOSwgMTM1NDIzLCAxMzU0MjcsIDEzNTQzMiwgMTM1NDM2LCAxMzU0NDEsIDEzNTQ0NiwgMTM1NDUxLCAxMzU0NTYsIAotICAgIDEzNTQ2MSwgMTM1NDY1LCAxMzU0NzAsIDEzNTQ3NSwgMTM1NDgwLCAxMzU0ODQsIDEzNTQ4OSwgMCwgMTM1NDk0LCAKLSAgICAxMzU0OTgsIDEzNTUwMywgMTM1NTA4LCAxMzU1MTIsIDEzNTUxNywgMTM1NTIyLCAxMzU1MjYsIDEzNTUzMSwgMTM1NTM2LCAKLSAgICAxMzU1NDAsIDEzNTU0NCwgMTM1NTQ5LCAxMzU1NTMsIDEzNTU1OCwgMTM1NTYzLCAxMzU1NjgsIDEzNTU3MywgMTM1NTc4LCAKLSAgICAxMzU1ODMsIDEzNTU4OSwgMTM1NTk1LCAxMzU2MDEsIDEzNTYwNiwgMTM1NjEyLCAxMzU2MTgsIDEzNTYyNCwgMTM1NjI5LCAKLSAgICAxMzU2MzUsIDEzNTY0MSwgMTM1NjQ2LCAxMzU2NTIsIDEzNTY1OCwgMTM1NjYzLCAxMzU2NjksIDEzNTY3NSwgMTM1NjgwLCAKLSAgICAxMzU2ODUsIDEzNTY5MSwgMTM1Njk2LCAxMzU3MDIsIDEzNTcwOCwgMTM1NzE0LCAxMzU3MjAsIDEzNTcyNiwgMTM1NzMxLCAKLSAgICAxMzU3MzcsIDEzNTc0MywgMTM1NzQ5LCAxMzU3NTQsIDEzNTc2MCwgMTM1NzY2LCAxMzU3NzIsIDEzNTc3NywgMTM1NzgzLCAKLSAgICAxMzU3ODksIDEzNTc5NCwgMTM1ODAwLCAxMzU4MDYsIDEzNTgxMSwgMTM1ODE3LCAxMzU4MjMsIDEzNTgyOCwgMTM1ODMzLCAKLSAgICAxMzU4MzksIDEzNTg0NCwgMTM1ODUwLCAxMzU4NTYsIDEzNTg2MiwgMTM1ODY4LCAxMzU4NzQsIDAsIDEzNTg3OCwgCi0gICAgMTM1ODgzLCAwLCAwLCAxMzU4ODgsIDAsIDAsIDEzNTg5MywgMTM1ODk4LCAwLCAwLCAxMzU5MDMsIDEzNTkwOCwgMTM1OTEyLCAKLSAgICAxMzU5MTcsIDAsIDEzNTkyMiwgMTM1OTI2LCAxMzU5MzEsIDEzNTkzNSwgMTM1OTQwLCAxMzU5NDUsIDEzNTk1MCwgCi0gICAgMTM1OTU1LCAxMzU5NjAsIDEzNTk2NCwgMTM1OTY5LCAxMzU5NzQsIDAsIDEzNTk3OSwgMCwgMTM1OTg0LCAxMzU5ODksIAotICAgIDEzNTk5MywgMTM1OTk4LCAxMzYwMDMsIDEzNjAwNywgMTM2MDEyLCAwLCAxMzYwMTcsIDEzNjAyMiwgMTM2MDI3LCAKLSAgICAxMzYwMzEsIDEzNjAzNSwgMTM2MDQwLCAxMzYwNDQsIDEzNjA0OSwgMTM2MDU0LCAxMzYwNTksIDEzNjA2NCwgMTM2MDY5LCAKLSAgICAxMzYwNzQsIDEzNjA4MCwgMTM2MDg2LCAxMzYwOTIsIDEzNjA5NywgMTM2MTAzLCAxMzYxMDksIDEzNjExNSwgMTM2MTIwLCAKLSAgICAxMzYxMjYsIDEzNjEzMiwgMTM2MTM3LCAxMzYxNDMsIDEzNjE0OSwgMTM2MTU0LCAxMzYxNjAsIDEzNjE2NiwgMTM2MTcxLCAKLSAgICAxMzYxNzYsIDEzNjE4MiwgMTM2MTg3LCAxMzYxOTMsIDEzNjE5OSwgMTM2MjA1LCAxMzYyMTEsIDEzNjIxNywgMTM2MjIyLCAKLSAgICAxMzYyMjgsIDEzNjIzNCwgMTM2MjQwLCAxMzYyNDUsIDEzNjI1MSwgMTM2MjU3LCAxMzYyNjMsIDEzNjI2OCwgMTM2Mjc0LCAKLSAgICAxMzYyODAsIDEzNjI4NSwgMTM2MjkxLCAxMzYyOTcsIDEzNjMwMiwgMTM2MzA4LCAxMzYzMTQsIDEzNjMxOSwgMTM2MzI0LCAKLSAgICAxMzYzMzAsIDEzNjMzNSwgMTM2MzQxLCAxMzYzNDcsIDEzNjM1MywgMTM2MzU5LCAxMzYzNjUsIDEzNjM2OSwgMCwgCi0gICAgMTM2Mzc0LCAxMzYzNzksIDEzNjM4MywgMTM2Mzg4LCAwLCAwLCAxMzYzOTMsIDEzNjM5OCwgMTM2NDAzLCAxMzY0MDcsIAotICAgIDEzNjQxMiwgMTM2NDE3LCAxMzY0MjEsIDEzNjQyNiwgMCwgMTM2NDMxLCAxMzY0MzUsIDEzNjQ0MCwgMTM2NDQ0LCAKLSAgICAxMzY0NDksIDEzNjQ1NCwgMTM2NDU5LCAwLCAxMzY0NjQsIDEzNjQ2OCwgMTM2NDczLCAxMzY0NzgsIDEzNjQ4MywgCi0gICAgMTM2NDg3LCAxMzY0OTIsIDEzNjQ5NywgMTM2NTAyLCAxMzY1MDYsIDEzNjUxMSwgMTM2NTE2LCAxMzY1MjAsIDEzNjUyNSwgCi0gICAgMTM2NTMwLCAxMzY1MzQsIDEzNjUzOSwgMTM2NTQ0LCAxMzY1NDgsIDEzNjU1MiwgMTM2NTU3LCAxMzY1NjEsIDEzNjU2NiwgCi0gICAgMTM2NTcxLCAxMzY1NzYsIDEzNjU4MSwgMTM2NTg2LCAxMzY1OTAsIDAsIDEzNjU5NSwgMTM2NjAwLCAxMzY2MDQsIAotICAgIDEzNjYwOSwgMCwgMTM2NjE0LCAxMzY2MTgsIDEzNjYyMywgMTM2NjI4LCAxMzY2MzIsIDAsIDEzNjYzNywgMCwgMCwgMCwgCi0gICAgMTM2NjQxLCAxMzY2NDUsIDEzNjY1MCwgMTM2NjU0LCAxMzY2NTksIDEzNjY2NCwgMTM2NjY5LCAwLCAxMzY2NzQsIAotICAgIDEzNjY3OCwgMTM2NjgzLCAxMzY2ODgsIDEzNjY5MywgMTM2Njk3LCAxMzY3MDIsIDEzNjcwNywgMTM2NzEyLCAxMzY3MTYsIAotICAgIDEzNjcyMSwgMTM2NzI2LCAxMzY3MzAsIDEzNjczNSwgMTM2NzQwLCAxMzY3NDQsIDEzNjc0OSwgMTM2NzU0LCAxMzY3NTgsIAotICAgIDEzNjc2MiwgMTM2NzY3LCAxMzY3NzEsIDEzNjc3NiwgMTM2NzgxLCAxMzY3ODYsIDEzNjc5MSwgMTM2Nzk2LCAxMzY4MDEsIAotICAgIDEzNjgwNywgMTM2ODEzLCAxMzY4MTksIDEzNjgyNCwgMTM2ODMwLCAxMzY4MzYsIDEzNjg0MiwgMTM2ODQ3LCAxMzY4NTMsIAotICAgIDEzNjg1OSwgMTM2ODY0LCAxMzY4NzAsIDEzNjg3NiwgMTM2ODgxLCAxMzY4ODcsIDEzNjg5MywgMTM2ODk4LCAxMzY5MDMsIAotICAgIDEzNjkwOSwgMTM2OTE0LCAxMzY5MjAsIDEzNjkyNiwgMTM2OTMyLCAxMzY5MzgsIDEzNjk0NCwgMTM2OTQ5LCAxMzY5NTUsIAotICAgIDEzNjk2MSwgMTM2OTY3LCAxMzY5NzIsIDEzNjk3OCwgMTM2OTg0LCAxMzY5OTAsIDEzNjk5NSwgMTM3MDAxLCAxMzcwMDcsIAotICAgIDEzNzAxMiwgMTM3MDE4LCAxMzcwMjQsIDEzNzAyOSwgMTM3MDM1LCAxMzcwNDEsIDEzNzA0NiwgMTM3MDUxLCAxMzcwNTcsIAotICAgIDEzNzA2MiwgMTM3MDY4LCAxMzcwNzQsIDEzNzA4MCwgMTM3MDg2LCAxMzcwOTIsIDEzNzA5NiwgMTM3MTAxLCAxMzcxMDYsIAotICAgIDEzNzExMSwgMTM3MTE1LCAxMzcxMjAsIDEzNzEyNSwgMTM3MTMwLCAxMzcxMzQsIDEzNzEzOSwgMTM3MTQ0LCAxMzcxNDgsIAotICAgIDEzNzE1MywgMTM3MTU4LCAxMzcxNjIsIDEzNzE2NywgMTM3MTcyLCAxMzcxNzYsIDEzNzE4MCwgMTM3MTg1LCAxMzcxODksIAotICAgIDEzNzE5NCwgMTM3MTk5LCAxMzcyMDQsIDEzNzIwOSwgMTM3MjE0LCAxMzcyMTgsIDEzNzIyMywgMTM3MjI4LCAxMzcyMzMsIAotICAgIDEzNzIzNywgMTM3MjQyLCAxMzcyNDcsIDEzNzI1MiwgMTM3MjU2LCAxMzcyNjEsIDEzNzI2NiwgMTM3MjcwLCAxMzcyNzUsIAotICAgIDEzNzI4MCwgMTM3Mjg0LCAxMzcyODksIDEzNzI5NCwgMTM3Mjk4LCAxMzczMDIsIDEzNzMwNywgMTM3MzExLCAxMzczMTYsIAotICAgIDEzNzMyMSwgMTM3MzI2LCAxMzczMzEsIDEzNzMzNiwgMTM3MzQxLCAxMzczNDcsIDEzNzM1MywgMTM3MzU5LCAxMzczNjQsIAotICAgIDEzNzM3MCwgMTM3Mzc2LCAxMzczODIsIDEzNzM4NywgMTM3MzkzLCAxMzczOTksIDEzNzQwNCwgMTM3NDEwLCAxMzc0MTYsIAotICAgIDEzNzQyMSwgMTM3NDI3LCAxMzc0MzMsIDEzNzQzOCwgMTM3NDQzLCAxMzc0NDksIDEzNzQ1NCwgMTM3NDYwLCAxMzc0NjYsIAotICAgIDEzNzQ3MiwgMTM3NDc4LCAxMzc0ODQsIDEzNzQ4OSwgMTM3NDk1LCAxMzc1MDEsIDEzNzUwNywgMTM3NTEyLCAxMzc1MTgsIAotICAgIDEzNzUyNCwgMTM3NTMwLCAxMzc1MzUsIDEzNzU0MSwgMTM3NTQ3LCAxMzc1NTIsIDEzNzU1OCwgMTM3NTY0LCAxMzc1NjksIAotICAgIDEzNzU3NSwgMTM3NTgxLCAxMzc1ODYsIDEzNzU5MSwgMTM3NTk3LCAxMzc2MDIsIDEzNzYwOCwgMTM3NjE0LCAxMzc2MjAsIAotICAgIDEzNzYyNiwgMTM3NjMyLCAxMzc2MzcsIDEzNzY0MywgMTM3NjQ5LCAxMzc2NTUsIDEzNzY2MCwgMTM3NjY2LCAxMzc2NzIsIAotICAgIDEzNzY3OCwgMTM3NjgzLCAxMzc2ODksIDEzNzY5NSwgMTM3NzAwLCAxMzc3MDYsIDEzNzcxMiwgMTM3NzE3LCAxMzc3MjMsIAotICAgIDEzNzcyOSwgMTM3NzM0LCAxMzc3MzksIDEzNzc0NSwgMTM3NzUwLCAxMzc3NTYsIDEzNzc2MiwgMTM3NzY4LCAxMzc3NzQsIAotICAgIDEzNzc4MCwgMTM3Nzg1LCAxMzc3OTEsIDEzNzc5NywgMTM3ODAzLCAxMzc4MDgsIDEzNzgxNCwgMTM3ODIwLCAxMzc4MjYsIAotICAgIDEzNzgzMSwgMTM3ODM3LCAxMzc4NDMsIDEzNzg0OCwgMTM3ODU0LCAxMzc4NjAsIDEzNzg2NSwgMTM3ODcxLCAxMzc4NzcsIAotICAgIDEzNzg4MiwgMTM3ODg3LCAxMzc4OTMsIDEzNzg5OCwgMTM3OTA0LCAxMzc5MTAsIDEzNzkxNiwgMTM3OTIyLCAxMzc5MjgsIAotICAgIDEzNzkzNCwgMTM3OTQxLCAxMzc5NDgsIDEzNzk1NSwgMTM3OTYxLCAxMzc5NjgsIDEzNzk3NSwgMTM3OTgyLCAxMzc5ODgsIAotICAgIDEzNzk5NSwgMTM4MDAyLCAxMzgwMDgsIDEzODAxNSwgMTM4MDIyLCAxMzgwMjgsIDEzODAzNSwgMTM4MDQyLCAxMzgwNDgsIAotICAgIDEzODA1NCwgMTM4MDYxLCAxMzgwNjcsIDEzODA3NCwgMTM4MDgxLCAxMzgwODgsIDEzODA5NSwgMTM4MTAyLCAxMzgxMDgsIAotICAgIDEzODExNSwgMTM4MTIyLCAxMzgxMjksIDEzODEzNSwgMTM4MTQyLCAxMzgxNDksIDEzODE1NiwgMTM4MTYyLCAxMzgxNjksIAotICAgIDEzODE3NiwgMTM4MTgyLCAxMzgxODksIDEzODE5NiwgMTM4MjAyLCAxMzgyMDksIDEzODIxNiwgMTM4MjIyLCAxMzgyMjgsIAotICAgIDEzODIzNSwgMTM4MjQxLCAxMzgyNDgsIDEzODI1NSwgMTM4MjYyLCAxMzgyNjksIDEzODI3NiwgMTM4MjgxLCAxMzgyODcsIAotICAgIDEzODI5MywgMTM4Mjk5LCAxMzgzMDQsIDEzODMxMCwgMTM4MzE2LCAxMzgzMjIsIDEzODMyNywgMTM4MzMzLCAxMzgzMzksIAotICAgIDEzODM0NCwgMTM4MzUwLCAxMzgzNTYsIDEzODM2MSwgMTM4MzY3LCAxMzgzNzMsIDEzODM3OCwgMTM4MzgzLCAxMzgzODksIAotICAgIDEzODM5NCwgMTM4NDAwLCAxMzg0MDYsIDEzODQxMiwgMTM4NDE4LCAxMzg0MjQsIDEzODQyOSwgMTM4NDM1LCAxMzg0NDEsIAotICAgIDEzODQ0NywgMTM4NDUyLCAxMzg0NTgsIDEzODQ2NCwgMTM4NDcwLCAxMzg0NzUsIDEzODQ4MSwgMTM4NDg3LCAxMzg0OTIsIAotICAgIDEzODQ5OCwgMTM4NTA0LCAxMzg1MDksIDEzODUxNSwgMTM4NTIxLCAxMzg1MjYsIDEzODUzMSwgMTM4NTM3LCAxMzg1NDIsIAotICAgIDEzODU0OCwgMTM4NTU0LCAxMzg1NjAsIDEzODU2NiwgMTM4NTcyLCAxMzg1NzgsIDAsIDAsIDEzODU4NSwgMTM4NTkwLCAKLSAgICAxMzg1OTUsIDEzODYwMCwgMTM4NjA1LCAxMzg2MTAsIDEzODYxNSwgMTM4NjIwLCAxMzg2MjUsIDEzODYzMCwgMTM4NjM1LCAKLSAgICAxMzg2NDAsIDEzODY0NSwgMTM4NjUwLCAxMzg2NTUsIDEzODY2MCwgMTM4NjY1LCAxMzg2NzAsIDEzODY3NiwgMTM4NjgxLCAKLSAgICAxMzg2ODYsIDEzODY5MSwgMTM4Njk2LCAxMzg3MDEsIDEzODcwNiwgMTM4NzExLCAxMzg3MTUsIDEzODcyMCwgMTM4NzI1LCAKLSAgICAxMzg3MzAsIDEzODczNSwgMTM4NzQwLCAxMzg3NDUsIDEzODc1MCwgMTM4NzU1LCAxMzg3NjAsIDEzODc2NSwgMTM4NzcwLCAKLSAgICAxMzg3NzUsIDEzODc4MCwgMTM4Nzg1LCAxMzg3OTAsIDEzODc5NSwgMTM4ODAwLCAxMzg4MDYsIDEzODgxMSwgMTM4ODE2LCAKLSAgICAxMzg4MjEsIDEzODgyNiwgMTM4ODMxLCAxMzg4MzYsIDEzODg0MSwgMTM4ODQ3LCAxMzg4NTIsIDEzODg1NywgMTM4ODYyLCAKLSAgICAxMzg4NjcsIDEzODg3MiwgMTM4ODc3LCAxMzg4ODIsIDEzODg4NywgMTM4ODkyLCAxMzg4OTcsIDEzODkwMiwgMTM4OTA3LCAKLSAgICAxMzg5MTIsIDEzODkxNywgMTM4OTIyLCAxMzg5MjcsIDEzODkzMiwgMTM4OTM3LCAxMzg5NDIsIDEzODk0NywgMTM4OTUyLCAKLSAgICAxMzg5NTcsIDEzODk2MiwgMTM4OTY4LCAxMzg5NzMsIDEzODk3OCwgMTM4OTgzLCAxMzg5ODgsIDEzODk5MywgMTM4OTk4LCAKLSAgICAxMzkwMDMsIDEzOTAwNywgMTM5MDEyLCAxMzkwMTcsIDEzOTAyMiwgMTM5MDI3LCAxMzkwMzIsIDEzOTAzNywgMTM5MDQyLCAKLSAgICAxMzkwNDcsIDEzOTA1MiwgMTM5MDU3LCAxMzkwNjIsIDEzOTA2NywgMTM5MDcyLCAxMzkwNzcsIDEzOTA4MiwgMTM5MDg3LCAKLSAgICAxMzkwOTIsIDEzOTA5OCwgMTM5MTAzLCAxMzkxMDgsIDEzOTExMywgMTM5MTE4LCAxMzkxMjMsIDEzOTEyOCwgMTM5MTMzLCAKLSAgICAxMzkxMzksIDEzOTE0NCwgMTM5MTQ5LCAxMzkxNTQsIDEzOTE1OSwgMTM5MTY0LCAxMzkxNjksIDEzOTE3NSwgMTM5MTgxLCAKLSAgICAxMzkxODcsIDEzOTE5MywgMTM5MTk5LCAxMzkyMDUsIDEzOTIxMSwgMTM5MjE3LCAxMzkyMjMsIDEzOTIyOSwgMTM5MjM1LCAKLSAgICAxMzkyNDEsIDEzOTI0NywgMTM5MjUzLCAxMzkyNTksIDEzOTI2NSwgMTM5MjcxLCAxMzkyNzgsIDEzOTI4NCwgMTM5MjkwLCAKLSAgICAxMzkyOTYsIDEzOTMwMiwgMTM5MzA4LCAxMzkzMTQsIDEzOTMyMCwgMTM5MzI1LCAxMzkzMzEsIDEzOTMzNywgMTM5MzQzLCAKLSAgICAxMzkzNDksIDEzOTM1NSwgMTM5MzYxLCAxMzkzNjcsIDEzOTM3MywgMTM5Mzc5LCAxMzkzODUsIDEzOTM5MSwgMTM5Mzk3LCAKLSAgICAxMzk0MDMsIDEzOTQwOSwgMTM5NDE1LCAxMzk0MjEsIDEzOTQyNywgMTM5NDM0LCAxMzk0NDAsIDEzOTQ0NiwgMTM5NDUyLCAKLSAgICAxMzk0NTgsIDEzOTQ2NCwgMTM5NDcwLCAxMzk0NzYsIDEzOTQ4MywgMTM5NDg5LCAxMzk0OTUsIDEzOTUwMSwgMTM5NTA3LCAKLSAgICAxMzk1MTMsIDEzOTUxOSwgMTM5NTI1LCAxMzk1MzEsIDEzOTUzNywgMTM5NTQzLCAxMzk1NDksIDEzOTU1NSwgMTM5NTYxLCAKLSAgICAxMzk1NjcsIDEzOTU3MywgMTM5NTc5LCAxMzk1ODUsIDEzOTU5MSwgMTM5NTk3LCAxMzk2MDMsIDEzOTYwOSwgMTM5NjE1LCAKLSAgICAxMzk2MjEsIDEzOTYyOCwgMTM5NjM0LCAxMzk2NDAsIDEzOTY0NiwgMTM5NjUyLCAxMzk2NTgsIDEzOTY2NCwgMTM5NjcwLCAKLSAgICAxMzk2NzUsIDEzOTY4MSwgMTM5Njg3LCAxMzk2OTMsIDEzOTY5OSwgMTM5NzA1LCAxMzk3MTEsIDEzOTcxNywgMTM5NzIzLCAKLSAgICAxMzk3MjksIDEzOTczNSwgMTM5NzQxLCAxMzk3NDcsIDEzOTc1MywgMTM5NzU5LCAxMzk3NjUsIDEzOTc3MSwgMTM5Nzc3LCAKLSAgICAxMzk3ODQsIDEzOTc5MCwgMTM5Nzk2LCAxMzk4MDIsIDEzOTgwOCwgMTM5ODE0LCAxMzk4MjAsIDEzOTgyNiwgMTM5ODMzLCAKLSAgICAxMzk4MzksIDEzOTg0NSwgMTM5ODUxLCAxMzk4NTcsIDEzOTg2MywgMTM5ODY5LCAxMzk4NzYsIDEzOTg4MywgMTM5ODkwLCAKLSAgICAxMzk4OTcsIDEzOTkwNCwgMTM5OTExLCAxMzk5MTgsIDEzOTkyNSwgMTM5OTMyLCAxMzk5MzksIDEzOTk0NiwgMTM5OTUzLCAKLSAgICAxMzk5NjAsIDEzOTk2NywgMTM5OTc0LCAxMzk5ODEsIDEzOTk4OCwgMTM5OTk2LCAxNDAwMDMsIDE0MDAxMCwgMTQwMDE3LCAKLSAgICAxNDAwMjQsIDE0MDAzMSwgMTQwMDM4LCAxNDAwNDUsIDE0MDA1MSwgMTQwMDU4LCAxNDAwNjUsIDE0MDA3MiwgMTQwMDc5LCAKLSAgICAxNDAwODYsIDE0MDA5MywgMTQwMTAwLCAxNDAxMDcsIDE0MDExNCwgMTQwMTIxLCAxNDAxMjgsIDE0MDEzNSwgMTQwMTQyLCAKLSAgICAxNDAxNDksIDE0MDE1NiwgMTQwMTYzLCAxNDAxNzAsIDE0MDE3OCwgMTQwMTg1LCAxNDAxOTIsIDE0MDE5OSwgMTQwMjA2LCAKLSAgICAxNDAyMTMsIDE0MDIyMCwgMTQwMjI3LCAxNDAyMzUsIDE0MDI0MiwgMTQwMjQ5LCAxNDAyNTYsIDE0MDI2MywgMTQwMjcwLCAKLSAgICAxNDAyNzcsIDE0MDI4MiwgMCwgMCwgMTQwMjg3LCAxNDAyOTIsIDE0MDI5NiwgMTQwMzAwLCAxNDAzMDQsIDE0MDMwOCwgCi0gICAgMTQwMzEyLCAxNDAzMTYsIDE0MDMyMSwgMTQwMzI1LCAxNDAzMzAsIDE0MDMzNSwgMTQwMzM5LCAxNDAzNDMsIDE0MDM0NywgCi0gICAgMTQwMzUxLCAxNDAzNTUsIDE0MDM1OSwgMTQwMzY0LCAxNDAzNjgsIDE0MDM3MywgMTQwMzc4LCAxNDAzODIsIDE0MDM4NiwgCi0gICAgMTQwMzkwLCAxNDAzOTQsIDE0MDM5OCwgMTQwNDAyLCAxNDA0MDcsIDE0MDQxMSwgMTQwNDE2LCAxNDA0MjIsIDE0MDQyNywgCi0gICAgMTQwNDMyLCAxNDA0MzcsIDE0MDQ0MiwgMTQwNDQ3LCAxNDA0NTIsIDE0MDQ1OCwgMTQwNDYzLCAxNDA0NjksIDE0MDQ3NSwgCi0gICAgMTQwNDgwLCAxNDA0ODUsIDE0MDQ5MCwgMTQwNDk1LCAxNDA1MDAsIDE0MDUwNSwgMTQwNTExLCAxNDA1MTYsIDE0MDUyMiwgCi0gICAgMTQwNTI2LCAxNDA1MzEsIDE0MDUzNiwgMTQwNTQxLCAxNDA1NDYsIDE0MDU1MSwgMTQwNTU2LCAxNDA1NjIsIDE0MDU3MCwgCi0gICAgMTQwNTc3LCAxNDA1ODIsIDE0MDU4NywgMTQwNTk0LCAxNDA2MDAsIDE0MDYwNSwgMTQwNjExLCAxNDA2MTcsIDE0MDYyNSwgCi0gICAgMTQwNjMxLCAxNDA2MzgsIDE0MDY0NiwgMTQwNjUyLCAxNDA2NjEsIDE0MDY3MCwgMTQwNjc4LCAxNDA2ODYsIDE0MDY5MiwgCi0gICAgMTQwNjk5LCAxNDA3MDcsIDE0MDcxNSwgMTQwNzIxLCAxNDA3MjgsIDE0MDczNywgMTQwNzQ2LCAxNDA3NTMsIDE0MDc2NCwgCi0gICAgMTQwNzc0LCAxNDA3ODQsIDE0MDc5NCwgMTQwODA0LCAxNDA4MTEsIDE0MDgxOCwgMTQwODI1LCAxNDA4MzIsIDE0MDg0MSwgCi0gICAgMTQwODUwLCAxNDA4NjEsIDE0MDg3MiwgMTQwODgxLCAxNDA4OTAsIDE0MDkwMSwgMTQwOTEwLCAxNDA5MTksIDE0MDkzMCwgCi0gICAgMTQwOTM5LCAxNDA5NDgsIDE0MDk1NiwgMTQwOTY0LCAxNDA5NzUsIDE0MDk4NiwgMTQwOTk0LCAxNDEwMDMsIDE0MTAxMiwgCi0gICAgMTQxMDE5LCAxNDEwMzAsIDE0MTA0MSwgMTQxMDUwLCAxNDEwNTksIDE0MTA2NiwgMTQxMDc1LCAxNDEwODQsIDE0MTA5MywgCi0gICAgMTQxMTA0LCAxNDExMTMsIDE0MTEyMywgMTQxMTMyLCAxNDExNDEsIDE0MTE1MiwgMTQxMTY1LCAxNDExODAsIDE0MTE5MSwgCi0gICAgMTQxMjA0LCAxNDEyMTYsIDE0MTIyNSwgMTQxMjM2LCAxNDEyNDcsIDE0MTI1NiwgMTQxMjY3LCAxNDEyODEsIDE0MTI5NiwgCi0gICAgMTQxMjk5LCAxNDEzMDgsIDE0MTMxMywgMTQxMzE5LCAxNDEzMjcsIDE0MTMzMywgMTQxMzM5LCAxNDEzNDgsIDE0MTM1NSwgCi0gICAgMTQxMzY1LCAxNDEzNzcsIDE0MTM4NCwgMTQxMzg3LCAxNDEzOTMsIDE0MTQwMCwgMTQxNDA2LCAxNDE0MTEsIDE0MTQxNCwgCi0gICAgMTQxNDE5LCAxNDE0MjIsIDE0MTQyOSwgMTQxNDM1LCAxNDE0NDMsIDE0MTQ1MCwgMTQxNDU3LCAxNDE0NjMsIDE0MTQ2OCwgCi0gICAgMTQxNDcxLCAxNDE0NzQsIDE0MTQ3NywgMTQxNDgzLCAxNDE0OTAsIDE0MTQ5NiwgMTQxNTAxLCAxNDE1MDgsIDE0MTUxMSwgCi0gICAgMTQxNTE2LCAxNDE1MjMsIDE0MTUyOSwgMTQxNTM3LCAxNDE1NDQsIDE0MTU1NCwgMTQxNTYzLCAxNDE1NjYsIDE0MTU3MiwgCi0gICAgMTQxNTc5LCAxNDE1ODYsIDE0MTU5MywgMTQxNTk4LCAxNDE2MDYsIDE0MTYxNCwgMTQxNjIzLCAxNDE2MjksIDE0MTYzOCwgCi0gICAgMTQxNjQ3LCAxNDE2NTYsIDE0MTY2MiwgMTQxNjcxLCAxNDE2NzgsIDE0MTY4NSwgMTQxNjkyLCAxNDE3MDAsIDE0MTcwNiwgCi0gICAgMTQxNzE0LCAxNDE3MjAsIDE0MTcyNywgMTQxNzM0LCAxNDE3NDIsIDE0MTc1MywgMTQxNzYzLCAxNDE3NjksIDE0MTc3NiwgCi0gICAgMTQxNzgzLCAxNDE3OTAsIDE0MTc5NiwgMTQxODAzLCAxNDE4MTAsIDE0MTgxNSwgMTQxODIyLCAxNDE4MzAsIDE0MTgzOSwgCi0gICAgMTQxODQ1LCAxNDE4NTcsIDE0MTg2OCwgMTQxODc0LCAxNDE4ODIsIDE0MTg4OCwgMTQxODk1LCAxNDE5MDIsIDE0MTkwOSwgCi0gICAgMTQxOTE1LCAxNDE5MjIsIDE0MTkzMSwgMTQxOTM3LCAxNDE5NDMsIDE0MTk1MCwgMTQxOTU3LCAxNDE5NjUsIDE0MTk3NSwgCi0gICAgMTQxOTg1LCAxNDE5OTUsIDE0MjAwNSwgMTQyMDEzLCAxNDIwMjEsIDE0MjAzMSwgMTQyMDM5LCAxNDIwNDQsIDE0MjA0OSwgCi0gICAgMTQyMDU0LCAxNDIwNjAsIDE0MjA2NywgMTQyMDc0LCAxNDIwODAsIDE0MjA4NiwgMTQyMDkxLCAxNDIwOTgsIDE0MjEwNiwgCi0gICAgMTQyMTE2LCAxNDIxMjQsIDE0MjEzMiwgMTQyMTQyLCAxNDIxNTIsIDE0MjE2MCwgMTQyMTcwLCAxNDIxODAsIDE0MjE5MiwgCi0gICAgMTQyMjA0LCAxNDIyMTYsIDE0MjIyNiwgMTQyMjMyLCAxNDIyMzgsIDE0MjI0NSwgMTQyMjU0LCAxNDIyNjMsIDE0MjI3MiwgCi0gICAgMTQyMjgxLCAxNDIyOTEsIDE0MjMwMCwgMTQyMzA5LCAxNDIzMTgsIDE0MjMyMywgMTQyMzI5LCAxNDIzMzgsIDE0MjM0OCwgCi0gICAgMTQyMzU3LCAxNDIzNjMsIDE0MjM2OSwgMTQyMzc2LCAxNDIzODMsIDE0MjM5MCwgMTQyMzk2LCAxNDI0MDMsIDE0MjQxMCwgCi0gICAgMTQyNDE3LCAxNDI0MjMsIDE0MjQyNywgMTQyNDMyLCAxNDI0MzksIDE0MjQ0NiwgMTQyNDUzLCAxNDI0NTgsIDE0MjQ2NiwgCi0gICAgMTQyNDc0LCAxNDI0ODMsIDE0MjQ5MSwgMTQyNDk4LCAxNDI1MDYsIDE0MjUxNSwgMTQyNTI1LCAxNDI1MjgsIDE0MjUzMiwgCi0gICAgMTQyNTM3LCAxNDI1NDIsIDE0MjU0NywgMTQyNTUyLCAxNDI1NTcsIDE0MjU2MiwgMTQyNTY3LCAxNDI1NzIsIDE0MjU3NywgCi0gICAgMTQyNTgyLCAxNDI1ODcsIDE0MjU5MiwgMTQyNTk3LCAxNDI2MDIsIDE0MjYwNywgMTQyNjEyLCAxNDI2MTcsIDE0MjYyNCwgCi0gICAgMTQyNjMwLCAxNDI2MzcsIDE0MjY0MywgMTQyNjQ4LCAxNDI2NTUsIDE0MjY2MSwgMTQyNjY4LCAxNDI2NzQsIDE0MjY3OSwgCi0gICAgMTQyNjg2LCAxNDI2OTMsIDE0MjcwMCwgMTQyNzA2LCAxNDI3MTIsIDE0MjcyMSwgMTQyNzMwLCAxNDI3NDEsIDE0Mjc0OCwgCi0gICAgMTQyNzU1LCAxNDI3NjQsIDE0Mjc3MywgMTQyNzgyLCAxNDI3OTEsIDE0MjgwMCwgMTQyODA2LCAxNDI4MTQsIDE0MjgyMCwgCi0gICAgMTQyODMwLCAxNDI4MzUsIDE0Mjg0NCwgMTQyODUzLCAxNDI4NjAsIDE0Mjg3MSwgMTQyODc4LCAxNDI4ODUsIDE0Mjg5MiwgCi0gICAgMTQyODk5LCAxNDI5MDYsIDE0MjkxMywgMTQyOTIwLCAxNDI5MjcsIDE0MjkzNCwgMTQyOTQxLCAxNDI5NDcsIDE0Mjk1MywgCi0gICAgMTQyOTU5LCAxNDI5NjYsIDE0Mjk3MywgMTQyOTgwLCAxNDI5ODcsIDE0Mjk5NCwgMTQzMDAxLCAxNDMwMDgsIDE0MzAxNSwgCi0gICAgMTQzMDIyLCAxNDMwMjksIDE0MzAzNiwgMTQzMDQzLCAxNDMwNDgsIDE0MzA1NywgMTQzMDY2LCAxNDMwNzUsIDE0MzA4MiwgCi0gICAgMTQzMDg5LCAxNDMwOTYsIDE0MzEwMywgMTQzMTEwLCAxNDMxMTcsIDE0MzEyNCwgMTQzMTMxLCAxNDMxNDAsIDE0MzE0OSwgCi0gICAgMTQzMTU4LCAxNDMxNjcsIDE0MzE3NiwgMTQzMTg1LCAxNDMxOTQsIDE0MzIwMywgMTQzMjEyLCAxNDMyMjEsIDE0MzIzMCwgCi0gICAgMTQzMjM5LCAxNDMyNDgsIDE0MzI1NCwgMTQzMjYyLCAxNDMyNjgsIDE0MzI3OCwgMTQzMjgzLCAxNDMyOTIsIDE0MzMwMSwgCi0gICAgMTQzMzEwLCAxNDMzMjEsIDE0MzMyNiwgMTQzMzMzLCAxNDMzNDAsIDE0MzM0NywgMTQzMzUyLCAxNDMzNTgsIDE0MzM2NCwgCi0gICAgMTQzMzcwLCAxNDMzNzcsIDE0MzM4NCwgMTQzMzkxLCAxNDMzOTgsIDE0MzQwNSwgMTQzNDEyLCAxNDM0MTksIDE0MzQyNiwgCi0gICAgMTQzNDMzLCAxNDM0NDAsIDE0MzQ0NywgMTQzNDU0LCAxNDM0NTksIDE0MzQ2OCwgMTQzNDc3LCAxNDM0ODYsIDE0MzQ5NSwgCi0gICAgMTQzNTA0LCAxNDM1MTMsIDE0MzUyMiwgMTQzNTMxLCAxNDM1NDIsIDE0MzU1MywgMTQzNTYwLCAxNDM1NjcsIDE0MzU3NCwgCi0gICAgMTQzNTgxLCAxNDM1ODgsIDE0MzU5NSwgMTQzNjAzLCAxNDM2MTMsIDE0MzYyMywgMTQzNjMzLCAxNDM2NDQsIDE0MzY1NSwgCi0gICAgMTQzNjY2LCAxNDM2NzUsIDE0MzY4NCwgMTQzNjkzLCAxNDM2OTgsIDE0MzcwMywgMTQzNzA4LCAxNDM3MTMsIDE0MzcyNCwgCi0gICAgMTQzNzM1LCAxNDM3NDYsIDE0Mzc1NywgMTQzNzY4LCAxNDM3NzgsIDE0Mzc4OSwgMTQzNzk4LCAxNDM4MDcsIDE0MzgxNiwgCi0gICAgMTQzODI1LCAxNDM4MzQsIDE0Mzg0MiwgMTQzODUxLCAxNDM4NjIsIDE0Mzg3MywgMTQzODg0LCAxNDM4OTUsIDE0MzkwNiwgCi0gICAgMTQzOTE4LCAxNDM5MzEsIDE0Mzk0MywgMTQzOTU2LCAxNDM5NjgsIDE0Mzk4MSwgMTQzOTkzLCAxNDQwMDYsIDE0NDAxNywgCi0gICAgMTQ0MDI4LCAxNDQwMzcsIDE0NDA0NSwgMTQ0MDU0LCAxNDQwNjUsIDE0NDA3NiwgMTQ0MDg4LCAxNDQxMDEsIDE0NDExNSwgCi0gICAgMTQ0MTMwLCAxNDQxNDIsIDE0NDE1NSwgMTQ0MTY3LCAxNDQxODAsIDE0NDE5MSwgMTQ0MjAyLCAxNDQyMTEsIDE0NDIxOSwgCi0gICAgMTQ0MjI4LCAxNDQyMzUsIDE0NDI0MiwgMTQ0MjQ5LCAxNDQyNTYsIDE0NDI2MywgMTQ0MjcwLCAxNDQyNzcsIDE0NDI4NCwgCi0gICAgMTQ0MjkxLCAxNDQyOTgsIDE0NDMwMywgMTQ0MzA4LCAxNDQzMTMsIDE0NDMyMCwgMTQ0MzMwLCAxNDQzNDEsIDE0NDM1MSwgCi0gICAgMTQ0MzYyLCAxNDQzNzYsIDE0NDM5MSwgMTQ0NDA2LCAxNDQ0MjAsIDE0NDQzNSwgMTQ0NDUwLCAxNDQ0NjEsIDE0NDQ3MiwgCi0gICAgMTQ0NDg1LCAxNDQ0OTgsIDE0NDUwNywgMTQ0NTE2LCAxNDQ1MjksIDE0NDU0MiwgMTQ0NTQ5LCAxNDQ1NTYsIDE0NDU2MSwgCi0gICAgMTQ0NTY2LCAxNDQ1NzEsIDE0NDU3NiwgMTQ0NTgxLCAxNDQ1ODgsIDE0NDU5NywgMTQ0NjAyLCAxNDQ2MDUsIDE0NDYxMCwgCi0gICAgMTQ0NjE3LCAxNDQ2MjQsIDE0NDYzMSwgMTQ0NjM4LCAxNDQ2NDUsIDE0NDY1MiwgMTQ0NjY1LCAxNDQ2NzksIDE0NDY5NCwgCi0gICAgMTQ0NzAxLCAxNDQ3MDgsIDE0NDcxNSwgMTQ0NzI0LCAxNDQ3MzIsIDE0NDc0MCwgMTQ0NzQ5LCAxNDQ3NTQsIDE0NDc1OSwgCi0gICAgMTQ0NzY0LCAxNDQ3NjksIDE0NDc3NCwgMTQ0Nzc5LCAxNDQ3ODYsIDE0NDc5MywgMTQ0Nzk5LCAxNDQ4MDYsIDE0NDgxMiwgCi0gICAgMTQ0ODE5LCAxNDQ4MjQsIDE0NDgyOSwgMTQ0ODM0LCAxNDQ4MzksIDE0NDg0NCwgMTQ0ODUxLCAxNDQ4NTgsIDE0NDg2MywgCi0gICAgMTQ0ODcwLCAxNDQ4NzcsIDE0NDg4MiwgMTQ0ODg3LCAxNDQ4OTIsIDE0NDg5NywgMTQ0OTAyLCAxNDQ5MDcsIDE0NDkxNCwgCi0gICAgMTQ0OTIxLCAxNDQ5MjgsIDE0NDkzMSwgMTQ0OTM2LCAxNDQ5NDEsIDE0NDk0NiwgMTQ0OTUxLCAxNDQ5NTgsIDE0NDk2NSwgCi0gICAgMTQ0OTczLCAxNDQ5ODEsIDE0NDk4NiwgMTQ0OTkxLCAxNDQ5OTgsIDE0NTAwNSwgMTQ1MDEyLCAxNDUwMTcsIDE0NTAyNCwgCi0gICAgMTQ1MDMxLCAxNDUwMzYsIDE0NTA0MywgMTQ1MDUwLCAxNDUwNTYsIDE0NTA2MiwgMTQ1MDY4LCAxNDUwNzQsIDE0NTA4MiwgCi0gICAgMTQ1MDkwLCAxNDUwOTYsIDE0NTEwNCwgMTQ1MTEyLCAxNDUxMTcsIDE0NTEyNCwgMTQ1MTMxLCAxNDUxMzYsIDE0NTE0MywgCi0gICAgMTQ1MTUwLCAxNDUxNTcsIDE0NTE2NSwgMTQ1MTczLCAxNDUxNzgsIDE0NTE4NSwgMTQ1MTkyLCAxNDUyMDEsIDE0NTIwOCwgCi0gICAgMTQ1MjE3LCAxNDUyMjgsIDE0NTIzNywgMTQ1MjQ2LCAxNDUyNTUsIDE0NTI2NCwgMTQ1MjY3LCAxNDUyNzIsIDE0NTI3OSwgCi0gICAgMTQ1Mjg4LCAxNDUyOTUsIDE0NTMwNCwgMTQ1MzExLCAxNDUzMTYsIDE0NTMyMSwgMTQ1MzI0LCAxNDUzMjcsIDE0NTMzMCwgCi0gICAgMTQ1MzM3LCAxNDUzNDQsIDE0NTM1MywgMTQ1MzYyLCAxNDUzNzEsIDE0NTM3OCwgMTQ1Mzg1LCAxNDUzOTAsIDE0NTQwMywgCi0gICAgMTQ1NDA4LCAxNDU0MTMsIDE0NTQxOCwgMTQ1NDIzLCAxNDU0MjgsIDE0NTQzMywgMTQ1NDM4LCAxNDU0NDMsIDE0NTQ0NiwgCi0gICAgMTQ1NDUxLCAxNDU0NTYsIDE0NTQ2MSwgMTQ1NDY2LCAxNDU0NzEsIDE0NTQ3OCwgMTQ1NDgzLCAxNDU0OTAsIDE0NTQ5MywgCi0gICAgMTQ1NDk4LCAxNDU1MDEsIDE0NTUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ1NTA3LCAxNDU1MTIsIDE0NTUxNywgMTQ1NTIyLCAxNDU1MjcsIDAsIDE0NTUzMiwgMTQ1NTM3LCAxNDU1NDIsIAotICAgIDE0NTU0NywgMTQ1NTUyLCAxNDU1NTcsIDE0NTU2MiwgMTQ1NTY3LCAxNDU1NzIsIDE0NTU3NywgMTQ1NTgyLCAxNDU1ODcsIAotICAgIDE0NTU5MiwgMTQ1NTk3LCAxNDU2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NTYwNywgMTQ1NjE0LCAxNDU2MjAsIAotICAgIDE0NTYyNywgMTQ1NjM0LCAxNDU2NDEsIDE0NTY0OCwgMTQ1NjU1LCAxNDU2NjIsIDE0NTY2OSwgMTQ1Njc2LCAxNDU2ODMsIAotICAgIDE0NTY5MCwgMTQ1Njk3LCAxNDU3MDQsIDE0NTcxMSwgMTQ1NzE4LCAxNDU3MjUsIDE0NTczMiwgMTQ1NzM5LCAxNDU3NDYsIAotICAgIDE0NTc1MywgMTQ1NzYwLCAxNDU3NjcsIDE0NTc3NCwgMTQ1NzgxLCAxNDU3ODgsIDE0NTc5NSwgMTQ1ODAyLCAxNDU4MDksIAotICAgIDE0NTgxNiwgMTQ1ODIzLCAxNDU4MzAsIDE0NTgzNywgMTQ1ODQ0LCAxNDU4NTAsIDE0NTg1NiwgMTQ1ODYyLCAxNDU4NjksIAotICAgIDE0NTg3NSwgMTQ1ODgyLCAxNDU4ODgsIDE0NTg5NSwgMTQ1OTAyLCAxNDU5MDksIDE0NTkxNiwgMTQ1OTIzLCAxNDU5MzAsIAotICAgIDE0NTkzNywgMTQ1OTQ0LCAxNDU5NTEsIDE0NTk1OCwgMTQ1OTY1LCAxNDU5NzIsIDE0NTk3OSwgMTQ1OTg2LCAxNDU5OTMsIAotICAgIDE0NjAwMCwgMTQ2MDA3LCAxNDYwMTQsIDE0NjAyMSwgMTQ2MDI4LCAxNDYwMzYsIDE0NjA0MywgMTQ2MDUwLCAxNDYwNTcsIAotICAgIDE0NjA2NCwgMTQ2MDcxLCAxNDYwNzgsIDE0NjA4NSwgMTQ2MDkyLCAxNDYwOTksIDE0NjEwNiwgMTQ2MTEzLCAxNDYxMjAsIAotICAgIDE0NjEyNiwgMTQ2MTMzLCAxNDYxNDAsIDE0NjE0NywgMTQ2MTU0LCAxNDYxNjEsIDE0NjE2OCwgMTQ2MTc1LCAxNDYxODMsIAotICAgIDE0NjE5MCwgMTQ2MTk2LCAxNDYyMDMsIDE0NjIxMCwgMTQ2MjE3LCAxNDYyMjQsIDE0NjIzMSwgMTQ2MjM4LCAxNDYyNDUsIAotICAgIDE0NjI1MiwgMTQ2MjU5LCAxNDYyNjYsIDE0NjI3MywgMTQ2MjgwLCAxNDYyODcsIDE0NjI5NCwgMTQ2MzAxLCAxNDYzMDgsIAotICAgIDE0NjMxNSwgMTQ2MzIyLCAxNDYzMjksIDE0NjMzNiwgMTQ2MzQyLCAxNDYzNDksIDE0NjM1NiwgMTQ2MzYzLCAxNDYzNzAsIAotICAgIDE0NjM3NywgMTQ2Mzg0LCAxNDYzOTEsIDE0NjM5OCwgMTQ2NDA1LCAxNDY0MTIsIDE0NjQxOSwgMTQ2NDI2LCAxNDY0MzMsIAotICAgIDE0NjQ0MCwgMTQ2NDQ3LCAxNDY0NTQsIDE0NjQ2MSwgMTQ2NDY4LCAxNDY0NzUsIDE0NjQ4MiwgMTQ2NDg5LCAxNDY0OTYsIAotICAgIDE0NjUwNCwgMTQ2NTEyLCAxNDY1MjAsIDE0NjUyNywgMTQ2NTM0LCAxNDY1NDEsIDE0NjU0OCwgMTQ2NTU1LCAxNDY1NjIsIAotICAgIDE0NjU2OSwgMTQ2NTc2LCAxNDY1ODMsIDE0NjU5MCwgMTQ2NTk2LCAxNDY2MDMsIDE0NjYxMCwgMTQ2NjE3LCAxNDY2MjQsIAotICAgIDE0NjYzMSwgMTQ2NjM4LCAxNDY2NDUsIDE0NjY1MiwgMTQ2NjU5LCAxNDY2NjYsIDE0NjY3MywgMTQ2NjgwLCAxNDY2ODcsIAotICAgIDE0NjY5NCwgMTQ2NzAyLCAxNDY3MTAsIDE0NjcxOCwgMTQ2NzI1LCAxNDY3MzIsIDE0NjczOSwgMTQ2NzQ2LCAxNDY3NTMsIAotICAgIDE0Njc2MCwgMTQ2NzY3LCAxNDY3NzQsIDE0Njc4MSwgMTQ2Nzg4LCAxNDY3OTUsIDE0NjgwMiwgMTQ2ODA5LCAxNDY4MTYsIAotICAgIDE0NjgyMywgMTQ2ODMwLCAxNDY4MzcsIDE0Njg0NCwgMTQ2ODUxLCAxNDY4NTgsIDE0Njg2NSwgMTQ2ODcyLCAxNDY4NzksIAotICAgIDE0Njg4NiwgMTQ2ODkzLCAxNDY5MDAsIDE0NjkwNywgMTQ2OTE0LCAxNDY5MjEsIDE0NjkyOCwgMTQ2OTM1LCAxNDY5NDIsIAotICAgIDE0Njk0OSwgMTQ2OTU2LCAxNDY5NjMsIDE0Njk3MCwgMTQ2OTc3LCAwLCAwLCAxNDY5ODQsIDE0Njk4OCwgMTQ2OTkyLCAKLSAgICAxNDY5OTYsIDE0NzAwMCwgMTQ3MDA0LCAxNDcwMDgsIDE0NzAxMywgMTQ3MDE3LCAxNDcwMjIsIDE0NzAyOCwgMTQ3MDM0LCAKLSAgICAxNDcwNDAsIDE0NzA0NiwgMTQ3MDU0LCAxNDcwNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0NzA2OCwgMTQ3MDcyLCAxNDcwNzYsIDE0NzA4MCwgMCwgMTQ3MDg0LCAxNDcwODgsIDE0NzA5MiwgCi0gICAgMTQ3MDk2LCAxNDcxMDAsIDE0NzEwNCwgMTQ3MTA4LCAxNDcxMTIsIDE0NzExNiwgMTQ3MTIwLCAxNDcxMjQsIDE0NzEyOCwgCi0gICAgMTQ3MTMyLCAxNDcxMzYsIDE0NzE0MCwgMTQ3MTQ0LCAxNDcxNDgsIDE0NzE1MiwgMTQ3MTU2LCAxNDcxNjAsIDE0NzE2NCwgCi0gICAgMTQ3MTY4LCAxNDcxNzIsIDE0NzE3NiwgMTQ3MTgyLCAxNDcxODgsIDE0NzE5NCwgMCwgMTQ3MjAwLCAxNDcyMDUsIDAsIAotICAgIDE0NzIxMCwgMCwgMCwgMTQ3MjE1LCAwLCAxNDcyMjAsIDE0NzIyNSwgMTQ3MjMwLCAxNDcyMzUsIDE0NzI0MCwgMTQ3MjQ1LCAKLSAgICAxNDcyNTAsIDE0NzI1NSwgMTQ3MjYwLCAxNDcyNjUsIDAsIDE0NzI3MCwgMTQ3Mjc1LCAxNDcyODAsIDE0NzI4NSwgMCwgCi0gICAgMTQ3MjkwLCAwLCAxNDcyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzMwMCwgMCwgMCwgMCwgMCwgMTQ3MzA2LCAwLCAKLSAgICAxNDczMTIsIDAsIDE0NzMxOCwgMCwgMTQ3MzI0LCAxNDczMzAsIDE0NzMzNiwgMCwgMTQ3MzQyLCAxNDczNDgsIDAsIAotICAgIDE0NzM1NCwgMCwgMCwgMTQ3MzYwLCAwLCAxNDczNjYsIDAsIDE0NzM3MiwgMCwgMTQ3Mzc4LCAwLCAxNDczODYsIDAsIAotICAgIDE0NzM5NCwgMTQ3NDAwLCAwLCAxNDc0MDYsIDAsIDAsIDE0NzQxMiwgMTQ3NDE4LCAxNDc0MjQsIDE0NzQzMCwgMCwgCi0gICAgMTQ3NDM2LCAxNDc0NDIsIDE0NzQ0OCwgMTQ3NDU0LCAxNDc0NjAsIDE0NzQ2NiwgMTQ3NDcyLCAwLCAxNDc0NzgsIAotICAgIDE0NzQ4NCwgMTQ3NDkwLCAxNDc0OTYsIDAsIDE0NzUwMiwgMTQ3NTA4LCAxNDc1MTQsIDE0NzUyMCwgMCwgMTQ3NTI4LCAwLCAKLSAgICAxNDc1MzYsIDE0NzU0MiwgMTQ3NTQ4LCAxNDc1NTQsIDE0NzU2MCwgMTQ3NTY2LCAxNDc1NzIsIDE0NzU3OCwgMTQ3NTg0LCAKLSAgICAxNDc1OTAsIDAsIDE0NzU5NiwgMTQ3NjAyLCAxNDc2MDgsIDE0NzYxNCwgMTQ3NjIwLCAxNDc2MjYsIDE0NzYzMiwgCi0gICAgMTQ3NjM4LCAxNDc2NDQsIDE0NzY1MCwgMTQ3NjU2LCAxNDc2NjIsIDE0NzY2OCwgMTQ3Njc0LCAxNDc2ODAsIDE0NzY4NiwgCi0gICAgMTQ3NjkyLCAwLCAwLCAwLCAwLCAwLCAxNDc2OTgsIDE0NzcwMywgMTQ3NzA4LCAwLCAxNDc3MTMsIDE0NzcxOCwgMTQ3NzIzLCAKLSAgICAxNDc3MjgsIDE0NzczMywgMCwgMTQ3NzM4LCAxNDc3NDMsIDE0Nzc0OCwgMTQ3NzUzLCAxNDc3NTgsIDE0Nzc2MywgCi0gICAgMTQ3NzY4LCAxNDc3NzMsIDE0Nzc3OCwgMTQ3NzgzLCAxNDc3ODgsIDE0Nzc5MywgMTQ3Nzk4LCAxNDc4MDMsIDE0NzgwOCwgCi0gICAgMTQ3ODEzLCAxNDc4MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYxMiwgMTUwNjE5LCAxNTA2MjUsIDE1MDYzMiwgMTUwNjM5LCAKKyAgICAxNTA2NDYsIDE1MDY1MywgMTUwNjYwLCAxNTA2NjcsIDE1MDY3NCwgMTUwNjgxLCAxNTA2ODgsIDE1MDY5NSwgMTUwNzAyLCAKKyAgICAxNTA3MDksIDE1MDcxNiwgMTUwNzIzLCAxNTA3MzAsIDE1MDczNywgMTUwNzQ0LCAxNTA3NTEsIDE1MDc1OCwgMTUwNzY1LCAKKyAgICAxNTA3NzIsIDE1MDc3OSwgMTUwNzg2LCAxNTA3OTMsIDE1MDgwMCwgMTUwODA3LCAxNTA4MTQsIDE1MDgyMSwgMTUwODI4LCAKKyAgICAxNTA4MzUsIDE1MDg0MiwgMTUwODQ5LCAxNTA4NTUsIDE1MDg2MSwgMTUwODY3LCAxNTA4NzQsIDE1MDg4MCwgMTUwODg3LCAKKyAgICAxNTA4OTMsIDE1MDkwMCwgMTUwOTA3LCAxNTA5MTQsIDE1MDkyMSwgMTUwOTI4LCAxNTA5MzUsIDE1MDk0MiwgMTUwOTQ5LCAKKyAgICAxNTA5NTYsIDE1MDk2MywgMTUwOTcwLCAxNTA5NzcsIDE1MDk4NCwgMTUwOTkxLCAxNTA5OTcsIDE1MTAwNCwgMTUxMDExLCAKKyAgICAxNTEwMTgsIDE1MTAyNSwgMTUxMDMyLCAxNTEwNDAsIDE1MTA0NywgMTUxMDU0LCAxNTEwNjEsIDE1MTA2OCwgMTUxMDc1LCAKKyAgICAxNTEwODIsIDE1MTA4OSwgMTUxMDk2LCAxNTExMDMsIDE1MTExMCwgMTUxMTE3LCAxNTExMjQsIDE1MTEzMCwgMTUxMTM3LCAKKyAgICAxNTExNDQsIDE1MTE1MSwgMTUxMTU4LCAxNTExNjUsIDE1MTE3MiwgMTUxMTc5LCAxNTExODcsIDE1MTE5NCwgMTUxMjAwLCAKKyAgICAxNTEyMDcsIDE1MTIxNCwgMTUxMjIxLCAxNTEyMjgsIDE1MTIzNSwgMTUxMjQyLCAxNTEyNDksIDE1MTI1NiwgMTUxMjYzLCAKKyAgICAxNTEyNzAsIDE1MTI3NywgMTUxMjg0LCAxNTEyOTEsIDE1MTI5OCwgMTUxMzA1LCAxNTEzMTIsIDE1MTMxOSwgMTUxMzI2LCAKKyAgICAxNTEzMzMsIDE1MTM0MCwgMTUxMzQ2LCAxNTEzNTMsIDE1MTM2MCwgMTUxMzY3LCAxNTEzNzQsIDE1MTM4MSwgMTUxMzg4LCAKKyAgICAxNTEzOTUsIDE1MTQwMiwgMTUxNDA5LCAxNTE0MTYsIDE1MTQyMywgMTUxNDMwLCAxNTE0MzcsIDE1MTQ0NCwgMTUxNDUxLCAKKyAgICAxNTE0NTgsIDE1MTQ2NSwgMTUxNDcyLCAxNTE0NzksIDE1MTQ4NiwgMTUxNDkzLCAxNTE1MDAsIDE1MTUwOCwgMTUxNTE2LCAKKyAgICAxNTE1MjQsIDE1MTUzMSwgMTUxNTM4LCAxNTE1NDUsIDE1MTU1MiwgMTUxNTU5LCAxNTE1NjYsIDE1MTU3MywgMTUxNTgwLCAKKyAgICAxNTE1ODcsIDE1MTU5NCwgMTUxNjAwLCAxNTE2MDcsIDE1MTYxNCwgMTUxNjIxLCAxNTE2MjgsIDE1MTYzNSwgMTUxNjQyLCAKKyAgICAxNTE2NDksIDE1MTY1NiwgMTUxNjYzLCAxNTE2NzAsIDE1MTY3NywgMTUxNjg0LCAxNTE2OTEsIDE1MTY5OCwgMTUxNzA2LCAKKyAgICAxNTE3MTQsIDE1MTcyMiwgMTUxNzI5LCAxNTE3MzYsIDE1MTc0MywgMTUxNzUwLCAxNTE3NTcsIDE1MTc2NCwgMTUxNzcxLCAKKyAgICAxNTE3NzgsIDE1MTc4NSwgMTUxNzkyLCAxNTE3OTksIDE1MTgwNiwgMTUxODEzLCAxNTE4MjAsIDE1MTgyNywgMTUxODM0LCAKKyAgICAxNTE4NDEsIDE1MTg0OCwgMTUxODU1LCAxNTE4NjIsIDE1MTg2OSwgMTUxODc2LCAxNTE4ODMsIDE1MTg5MCwgMTUxODk3LCAKKyAgICAxNTE5MDQsIDE1MTkxMSwgMTUxOTE4LCAxNTE5MjUsIDE1MTkzMiwgMTUxOTM5LCAxNTE5NDYsIDE1MTk1MywgMTUxOTYwLCAKKyAgICAxNTE5NjcsIDE1MTk3NCwgMTUxOTgxLCAwLCAwLCAxNTE5ODgsIDE1MTk5MiwgMTUxOTk2LCAxNTIwMDAsIDE1MjAwNCwgCisgICAgMTUyMDA4LCAxNTIwMTIsIDE1MjAxNywgMTUyMDIxLCAxNTIwMjYsIDE1MjAzMiwgMTUyMDM4LCAxNTIwNDQsIDE1MjA1MCwgCisgICAgMTUyMDU4LCAxNTIwNjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjA3MiwgCisgICAgMTUyMDc4LCAxNTIwODQsIDE1MjA5MCwgMTUyMDk2LCAxNTIxMDIsIDE1MjEwOCwgMTUyMTE0LCAxNTIxMjAsIDE1MjEyNiwgCisgICAgMTUyMTMxLCAxNTIxMzcsIDE1MjE0MiwgMTUyMTQ3LCAxNTIxNTMsIDE1MjE1OSwgMTUyMTY1LCAxNTIxNzEsIDE1MjE3NywgCisgICAgMTUyMTgyLCAxNTIxODcsIDE1MjE5MywgMTUyMTk5LCAxNTIyMDQsIDE1MjIxMCwgMTUyMjE2LCAxNTIyMjIsIDE1MjIyOCwgCisgICAgMTUyMjM0LCAxNTIyNDAsIDE1MjI0NiwgMTUyMjUyLCAxNTIyNTgsIDE1MjI2NCwgMTUyMjcwLCAxNTIyNzYsIDE1MjI4MiwgCisgICAgMTUyMjg4LCAxNTIyOTQsIDE1MjMwMCwgMTUyMzA2LCAxNTIzMTIsIDE1MjMxOCwgMTUyMzI0LCAxNTIzMjksIDE1MjMzNSwgCisgICAgMTUyMzQwLCAxNTIzNDUsIDE1MjM1MSwgMTUyMzU3LCAxNTIzNjMsIDE1MjM2OSwgMTUyMzc1LCAxNTIzODAsIDE1MjM4NSwgCisgICAgMTUyMzkxLCAxNTIzOTcsIDE1MjQwMiwgMTUyNDA4LCAxNTI0MTQsIDE1MjQyMCwgMTUyNDI2LCAxNTI0MzIsIDE1MjQzOCwgCisgICAgMTUyNDQ0LCAxNTI0NTAsIDE1MjQ1NiwgMTUyNDYyLCAxNTI0NjgsIDE1MjQ3NCwgMTUyNDc5LCAxNTI0ODQsIDE1MjQ4OCwgCisgICAgMTUyNDkzLCAxNTI1MDAsIDAsIDAsIDAsIDAsIDAsIDE1MjUwNCwgMTUyNTA5LCAxNTI1MTMsIDE1MjUxNywgMTUyNTIxLCAKKyAgICAxNTI1MjUsIDE1MjUyOSwgMTUyNTMzLCAxNTI1MzgsIDE1MjU0MiwgMCwgMCwgMCwgMCwgMTUyNTQ3LCAxNTI1NTMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NzgyMywgMTQ3ODMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNDc4NDEsIDE0Nzg0OCwgMTQ3ODU1LCAxNDc4NjIsIDE0Nzg2OCwgMTQ3ODc1LCAxNDc4ODIsIAotICAgIDE0Nzg4OCwgMTQ3ODk1LCAxNDc5MDIsIDE0NzkwOSwgMTQ3OTE3LCAxNDc5MjUsIDE0NzkzMywgMTQ3OTQxLCAxNDc5NDksIAotICAgIDE0Nzk1NywgMTQ3OTY0LCAxNDc5NzEsIDE0Nzk3OCwgMTQ3OTg2LCAxNDc5OTQsIDE0ODAwMiwgMTQ4MDEwLCAxNDgwMTgsIAotICAgIDE0ODAyNiwgMTQ4MDMzLCAxNDgwNDAsIDE0ODA0NywgMTQ4MDU1LCAxNDgwNjMsIDE0ODA3MSwgMTQ4MDc5LCAxNDgwODcsIAotICAgIDE0ODA5NSwgMTQ4MTAwLCAxNDgxMDUsIDE0ODExMCwgMTQ4MTE1LCAxNDgxMjAsIDE0ODEyNSwgMTQ4MTMwLCAxNDgxMzUsIAotICAgIDE0ODE0MCwgMCwgMCwgMCwgMCwgMTQ4MTQ1LCAxNDgxNTEsIDE0ODE1NSwgMTQ4MTU5LCAxNDgxNjMsIDE0ODE2NywgCi0gICAgMTQ4MTcxLCAxNDgxNzUsIDE0ODE3OSwgMTQ4MTgzLCAxNDgxODcsIDE0ODE5MSwgMTQ4MTk1LCAxNDgxOTksIDE0ODIwMywgCi0gICAgMTQ4MjA3LCAxNDgyMTEsIDE0ODIxNSwgMTQ4MjE5LCAxNDgyMjMsIDE0ODIyNywgMTQ4MjMxLCAxNDgyMzUsIDE0ODIzOSwgCi0gICAgMTQ4MjQzLCAxNDgyNDcsIDE0ODI1MSwgMTQ4MjU1LCAxNDgyNTksIDE0ODI2MywgMTQ4MjY3LCAxNDgyNzEsIDE0ODI3NSwgCi0gICAgMTQ4Mjc5LCAxNDgyODMsIDE0ODI4NywgMTQ4MjkxLCAxNDgyOTUsIDE0ODI5OSwgMTQ4MzAzLCAxNDgzMDcsIDE0ODMxMSwgCi0gICAgMTQ4MzE1LCAxNDgzMTksIDE0ODMyMywgMTQ4MzI3LCAxNDgzMzEsIDE0ODMzNSwgMTQ4MzM5LCAxNDgzNDMsIDE0ODM0NywgCi0gICAgMTQ4MzUyLCAxNDgzNTYsIDE0ODM2MCwgMTQ4MzY0LCAxNDgzNjgsIDE0ODM3MiwgMTQ4Mzc2LCAxNDgzODAsIDE0ODM4NCwgCi0gICAgMTQ4Mzg4LCAxNDgzOTIsIDE0ODM5NiwgMTQ4NDAwLCAxNDg0MDQsIDE0ODQwOCwgMTQ4NDEyLCAxNDg0MTYsIDE0ODQyMCwgCi0gICAgMTQ4NDI0LCAxNDg0MjgsIDE0ODQzMiwgMTQ4NDM2LCAxNDg0NDAsIDE0ODQ0NCwgMTQ4NDQ4LCAxNDg0NTIsIDE0ODQ1NiwgCi0gICAgMTQ4NDYwLCAxNDg0NjQsIDE0ODQ2OCwgMTQ4NDcyLCAxNDg0NzYsIDE0ODQ4MCwgMTQ4NDg0LCAxNDg0ODgsIDE0ODQ5MiwgCi0gICAgMTQ4NDk2LCAxNDg1MDAsIDE0ODUwNCwgMTQ4NTA4LCAxNDg1MTIsIDE0ODUxNiwgMTQ4NTIwLCAxNDg1MjQsIDE0ODUyOCwgCi0gICAgMTQ4NTMyLCAxNDg1MzYsIDE0ODU0MCwgMTQ4NTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDg1NDgsIDE0ODU1NCwgMTQ4NTYzLCAxNDg1NzEsIDE0ODU3OSwgMTQ4NTg4LCAxNDg1OTcsIDE0ODYwNiwgMTQ4NjE1LCAKLSAgICAxNDg2MjQsIDE0ODYzMywgMTQ4NjQyLCAxNDg2NTEsIDE0ODY2MCwgMTQ4NjY5LCAwLCAwLCAxNDg2NzgsIDE0ODY4NywgCi0gICAgMTQ4Njk1LCAxNDg3MDMsIDE0ODcxMiwgMTQ4NzIxLCAxNDg3MzAsIDE0ODczOSwgMTQ4NzQ4LCAxNDg3NTcsIDE0ODc2NiwgCi0gICAgMTQ4Nzc1LCAxNDg3ODQsIDE0ODc5MywgMTQ4ODAyLCAwLCAxNDg4MTAsIDE0ODgxOSwgMTQ4ODI3LCAxNDg4MzUsIAotICAgIDE0ODg0NCwgMTQ4ODUzLCAxNDg4NjIsIDE0ODg3MSwgMTQ4ODgwLCAxNDg4ODksIDE0ODg5OCwgMTQ4OTA3LCAxNDg5MTYsIAotICAgIDE0ODkyNSwgMTQ4OTM0LCAwLCAxNDg5NDEsIDE0ODk1MCwgMTQ4OTU4LCAxNDg5NjYsIDE0ODk3NSwgMTQ4OTg0LCAKLSAgICAxNDg5OTMsIDE0OTAwMiwgMTQ5MDExLCAxNDkwMjAsIDE0OTAyOSwgMTQ5MDM4LCAxNDkwNDcsIDE0OTA1NiwgMTQ5MDY1LCAKLSAgICAxNDkwNzIsIDE0OTA3OCwgMTQ5MDg0LCAxNDkwOTAsIDE0OTA5NiwgMTQ5MTAyLCAxNDkxMDgsIDE0OTExNCwgMTQ5MTIwLCAKLSAgICAxNDkxMjYsIDE0OTEzMiwgMTQ5MTM4LCAxNDkxNDQsIDE0OTE1MCwgMTQ5MTU2LCAxNDkxNjIsIDE0OTE2OCwgMTQ5MTc0LCAKLSAgICAxNDkxODAsIDE0OTE4NiwgMTQ5MTkyLCAxNDkxOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OTIwNCwgCi0gICAgMTQ5MjExLCAxNDkyMTYsIDE0OTIyMCwgMTQ5MjI0LCAxNDkyMjgsIDE0OTIzMywgMTQ5MjM4LCAxNDkyNDMsIDE0OTI0OCwgCi0gICAgMTQ5MjUzLCAxNDkyNTgsIDE0OTI2NSwgMCwgMCwgMCwgMTQ5MjczLCAxNDkyNzgsIDE0OTI4NCwgMTQ5MjkwLCAxNDkyOTYsIAotICAgIDE0OTMwMSwgMTQ5MzA3LCAxNDkzMTMsIDE0OTMxOSwgMTQ5MzI0LCAxNDkzMzAsIDE0OTMzNiwgMTQ5MzQxLCAxNDkzNDcsIAotICAgIDE0OTM1MywgMTQ5MzU4LCAxNDkzNjQsIDE0OTM3MCwgMTQ5Mzc1LCAxNDkzODAsIDE0OTM4NiwgMTQ5MzkxLCAxNDkzOTcsIAotICAgIDE0OTQwMywgMTQ5NDA5LCAxNDk0MTUsIDE0OTQyMSwgMTQ5NDMxLCAxNDk0MzgsIDE0OTQ0NCwgMTQ5NDQ3LCAwLCAKLSAgICAxNDk0NTAsIDE0OTQ1NSwgMTQ5NDYxLCAxNDk0NjcsIDE0OTQ3MywgMTQ5NDc4LCAxNDk0ODQsIDE0OTQ5MCwgMTQ5NDk2LCAKLSAgICAxNDk1MDEsIDE0OTUwNywgMTQ5NTEzLCAxNDk1MTgsIDE0OTUyNCwgMTQ5NTMwLCAxNDk1MzUsIDE0OTU0MSwgMTQ5NTQ3LCAKLSAgICAxNDk1NTIsIDE0OTU1NywgMTQ5NTYzLCAxNDk1NjgsIDE0OTU3NCwgMTQ5NTgwLCAxNDk1ODYsIDE0OTU5MiwgMTQ5NTk4LCAKLSAgICAxNDk2MDEsIDE0OTYwNCwgMTQ5NjA3LCAxNDk2MTAsIDE0OTYxMywgMTQ5NjE2LCAxNDk2MjIsIDE0OTYyOSwgMTQ5NjM2LCAKLSAgICAxNDk2NDMsIDE0OTY0OSwgMTQ5NjU2LCAxNDk2NjMsIDE0OTY3MCwgMTQ5Njc2LCAxNDk2ODMsIDE0OTY5MCwgMTQ5Njk2LCAKLSAgICAxNDk3MDMsIDE0OTcxMCwgMTQ5NzE2LCAxNDk3MjMsIDE0OTczMCwgMTQ5NzM2LCAxNDk3NDIsIDE0OTc0OSwgMTQ5NzU1LCAKLSAgICAxNDk3NjIsIDE0OTc2OSwgMTQ5Nzc2LCAxNDk3ODMsIDE0OTc5MCwgMTQ5Nzk1LCAwLCAwLCAwLCAwLCAxNDk4MDAsIAotICAgIDE0OTgwNiwgMTQ5ODEzLCAxNDk4MjAsIDE0OTgyNywgMTQ5ODMzLCAxNDk4NDAsIDE0OTg0NywgMTQ5ODU0LCAxNDk4NjAsIAotICAgIDE0OTg2NywgMTQ5ODc0LCAxNDk4ODAsIDE0OTg4NywgMTQ5ODk0LCAxNDk5MDAsIDE0OTkwNywgMTQ5OTE0LCAxNDk5MjAsIAotICAgIDE0OTkyNiwgMTQ5OTMzLCAxNDk5MzksIDE0OTk0NiwgMTQ5OTUzLCAxNDk5NjAsIDE0OTk2NywgMTQ5OTc0LCAxNDk5ODMsIAotICAgIDE0OTk4NywgMTQ5OTkwLCAxNDk5OTQsIDE0OTk5OCwgMTUwMDAyLCAxNTAwMDUsIDE1MDAwOCwgMTUwMDExLCAxNTAwMTQsIAotICAgIDE1MDAxNywgMTUwMDIwLCAxNTAwMjMsIDE1MDAyNiwgMTUwMDI5LCAxNTAwMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDAzOCwgMTUwMDQ1LCAKLSAgICAxNTAwNTMsIDE1MDA2MSwgMTUwMDY5LCAxNTAwNzYsIDE1MDA4NCwgMTUwMDkyLCAxNTAxMDAsIDE1MDEwNywgMTUwMTE1LCAKLSAgICAxNTAxMjMsIDE1MDEzMCwgMTUwMTM4LCAxNTAxNDYsIDE1MDE1MywgMTUwMTYxLCAxNTAxNjksIDE1MDE3NiwgMTUwMTgzLCAKLSAgICAxNTAxOTEsIDE1MDE5OCwgMTUwMjA2LCAxNTAyMTQsIDE1MDIyMiwgMTUwMjMwLCAxNTAyMzgsIDE1MDI0MiwgMTUwMjQ2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTAyNTAsIDE1MDI1NiwgMTUwMjYyLCAxNTAyNjgsIAotICAgIDE1MDI3MiwgMTUwMjc4LCAxNTAyODQsIDE1MDI5MCwgMTUwMjk2LCAxNTAzMDIsIDE1MDMwOCwgMTUwMzE0LCAxNTAzMjAsIAotICAgIDE1MDMyNiwgMTUwMzMyLCAxNTAzMzgsIDE1MDM0NCwgMTUwMzUwLCAxNTAzNTYsIDE1MDM2MiwgMTUwMzY4LCAxNTAzNzQsIAotICAgIDE1MDM4MCwgMTUwMzg2LCAxNTAzOTIsIDE1MDM5OCwgMTUwNDA0LCAxNTA0MTAsIDE1MDQxNiwgMTUwNDIyLCAxNTA0MjgsIAotICAgIDE1MDQzNCwgMTUwNDQwLCAxNTA0NDYsIDE1MDQ1MiwgMTUwNDU4LCAxNTA0NjQsIDE1MDQ3MCwgMTUwNDc2LCAxNTA0ODIsIAotICAgIDE1MDQ4OCwgMTUwNDk0LCAxNTA1MDAsIDAsIDAsIDAsIDAsIDAsIDE1MDUwNiwgMTUwNTE3LCAxNTA1MjgsIDE1MDUzOSwgCi0gICAgMTUwNTUwLCAxNTA1NjEsIDE1MDU3MiwgMTUwNTgzLCAxNTA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYwNSwgCi0gICAgMTUwNjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI1NTksIDE1MjU2MywgMTUyNTY3LCAxNTI1NzEsIAorICAgIDAsIDE1MjU3NSwgMTUyNTc5LCAxNTI1ODMsIDE1MjU4NywgMTUyNTkxLCAxNTI1OTUsIDE1MjU5OSwgMTUyNjAzLCAKKyAgICAxNTI2MDcsIDE1MjYxMSwgMTUyNjE1LCAxNTI2MTksIDE1MjYyMywgMTUyNjI3LCAxNTI2MzEsIDE1MjYzNSwgMTUyNjM5LCAKKyAgICAxNTI2NDMsIDE1MjY0NywgMTUyNjUxLCAxNTI2NTUsIDE1MjY1OSwgMTUyNjYzLCAxNTI2NjcsIDE1MjY3MywgMTUyNjc5LCAKKyAgICAxNTI2ODUsIDAsIDE1MjY5MSwgMTUyNjk2LCAwLCAxNTI3MDEsIDAsIDAsIDE1MjcwNiwgMCwgMTUyNzExLCAxNTI3MTYsIAorICAgIDE1MjcyMSwgMTUyNzI2LCAxNTI3MzEsIDE1MjczNiwgMTUyNzQxLCAxNTI3NDYsIDE1Mjc1MSwgMTUyNzU2LCAwLCAKKyAgICAxNTI3NjEsIDE1Mjc2NiwgMTUyNzcxLCAxNTI3NzYsIDAsIDE1Mjc4MSwgMCwgMTUyNzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTI3OTEsIDAsIDAsIDAsIDAsIDE1Mjc5NywgMCwgMTUyODAzLCAwLCAxNTI4MDksIDAsIDE1MjgxNSwgMTUyODIxLCAKKyAgICAxNTI4MjcsIDAsIDE1MjgzMywgMTUyODM5LCAwLCAxNTI4NDUsIDAsIDAsIDE1Mjg1MSwgMCwgMTUyODU3LCAwLCAxNTI4NjMsIAorICAgIDAsIDE1Mjg2OSwgMCwgMTUyODc3LCAwLCAxNTI4ODUsIDE1Mjg5MSwgMCwgMTUyODk3LCAwLCAwLCAxNTI5MDMsIDE1MjkwOSwgCisgICAgMTUyOTE1LCAxNTI5MjEsIDAsIDE1MjkyNywgMTUyOTMzLCAxNTI5MzksIDE1Mjk0NSwgMTUyOTUxLCAxNTI5NTcsIAorICAgIDE1Mjk2MywgMCwgMTUyOTY5LCAxNTI5NzUsIDE1Mjk4MSwgMTUyOTg3LCAwLCAxNTI5OTMsIDE1Mjk5OSwgMTUzMDA1LCAKKyAgICAxNTMwMTEsIDAsIDE1MzAxOSwgMCwgMTUzMDI3LCAxNTMwMzMsIDE1MzAzOSwgMTUzMDQ1LCAxNTMwNTEsIDE1MzA1NywgCisgICAgMTUzMDYzLCAxNTMwNjksIDE1MzA3NSwgMTUzMDgxLCAwLCAxNTMwODcsIDE1MzA5MywgMTUzMDk5LCAxNTMxMDUsIAorICAgIDE1MzExMSwgMTUzMTE3LCAxNTMxMjMsIDE1MzEyOSwgMTUzMTM1LCAxNTMxNDEsIDE1MzE0NywgMTUzMTUzLCAxNTMxNTksIAorICAgIDE1MzE2NSwgMTUzMTcxLCAxNTMxNzcsIDE1MzE4MywgMCwgMCwgMCwgMCwgMCwgMTUzMTg5LCAxNTMxOTQsIDE1MzE5OSwgMCwgCisgICAgMTUzMjA0LCAxNTMyMDksIDE1MzIxNCwgMTUzMjE5LCAxNTMyMjQsIDAsIDE1MzIyOSwgMTUzMjM0LCAxNTMyMzksIAorICAgIDE1MzI0NCwgMTUzMjQ5LCAxNTMyNTQsIDE1MzI1OSwgMTUzMjY0LCAxNTMyNjksIDE1MzI3NCwgMTUzMjc5LCAxNTMyODQsIAorICAgIDE1MzI4OSwgMTUzMjk0LCAxNTMyOTksIDE1MzMwNCwgMTUzMzA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzMTQsIDE1MzMyNCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzMyLCAxNTMzMzksIDE1MzM0NiwgMTUzMzUzLCAKKyAgICAxNTMzNTksIDE1MzM2NiwgMTUzMzczLCAxNTMzNzksIDE1MzM4NiwgMTUzMzkzLCAxNTM0MDAsIDE1MzQwOCwgMTUzNDE2LCAKKyAgICAxNTM0MjQsIDE1MzQzMiwgMTUzNDQwLCAxNTM0NDgsIDE1MzQ1NSwgMTUzNDYyLCAxNTM0NjksIDE1MzQ3NywgMTUzNDg1LCAKKyAgICAxNTM0OTMsIDE1MzUwMSwgMTUzNTA5LCAxNTM1MTcsIDE1MzUyNCwgMTUzNTMxLCAxNTM1MzgsIDE1MzU0NiwgMTUzNTU0LCAKKyAgICAxNTM1NjIsIDE1MzU3MCwgMTUzNTc4LCAxNTM1ODYsIDE1MzU5MSwgMTUzNTk2LCAxNTM2MDEsIDE1MzYwNiwgMTUzNjExLCAKKyAgICAxNTM2MTYsIDE1MzYyMSwgMTUzNjI2LCAxNTM2MzEsIDAsIDAsIDAsIDAsIDE1MzYzNiwgMTUzNjQyLCAxNTM2NDYsIAorICAgIDE1MzY1MCwgMTUzNjU0LCAxNTM2NTgsIDE1MzY2MiwgMTUzNjY2LCAxNTM2NzAsIDE1MzY3NCwgMTUzNjc4LCAxNTM2ODIsIAorICAgIDE1MzY4NiwgMTUzNjkwLCAxNTM2OTQsIDE1MzY5OCwgMTUzNzAyLCAxNTM3MDYsIDE1MzcxMCwgMTUzNzE0LCAxNTM3MTgsIAorICAgIDE1MzcyMiwgMTUzNzI2LCAxNTM3MzAsIDE1MzczNCwgMTUzNzM4LCAxNTM3NDIsIDE1Mzc0NiwgMTUzNzUwLCAxNTM3NTQsIAorICAgIDE1Mzc1OCwgMTUzNzYyLCAxNTM3NjYsIDE1Mzc3MCwgMTUzNzc0LCAxNTM3NzgsIDE1Mzc4MiwgMTUzNzg2LCAxNTM3OTAsIAorICAgIDE1Mzc5NCwgMTUzNzk4LCAxNTM4MDIsIDE1MzgwNiwgMTUzODEwLCAxNTM4MTQsIDE1MzgxOCwgMTUzODIyLCAxNTM4MjYsIAorICAgIDE1MzgzMCwgMTUzODM0LCAxNTM4MzgsIDE1Mzg0MywgMTUzODQ3LCAxNTM4NTEsIDE1Mzg1NSwgMTUzODU5LCAxNTM4NjMsIAorICAgIDE1Mzg2NywgMTUzODcxLCAxNTM4NzUsIDE1Mzg3OSwgMTUzODgzLCAxNTM4ODcsIDE1Mzg5MSwgMTUzODk1LCAxNTM4OTksIAorICAgIDE1MzkwMywgMTUzOTA3LCAxNTM5MTEsIDE1MzkxNSwgMTUzOTE5LCAxNTM5MjMsIDE1MzkyNywgMTUzOTMxLCAxNTM5MzUsIAorICAgIDE1MzkzOSwgMTUzOTQzLCAxNTM5NDcsIDE1Mzk1MSwgMTUzOTU1LCAxNTM5NTksIDE1Mzk2MywgMTUzOTY3LCAxNTM5NzEsIAorICAgIDE1Mzk3NSwgMTUzOTc5LCAxNTM5ODMsIDE1Mzk4NywgMTUzOTkxLCAxNTM5OTUsIDE1Mzk5OSwgMTU0MDAzLCAxNTQwMDcsIAorICAgIDE1NDAxMSwgMTU0MDE1LCAxNTQwMTksIDE1NDAyMywgMTU0MDI3LCAxNTQwMzEsIDE1NDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU0MDM5LCAxNTQwNDUsIDE1NDA1NCwgMTU0MDYyLCAxNTQwNzAsIDE1NDA3OSwgMTU0MDg4LCAKKyAgICAxNTQwOTcsIDE1NDEwNiwgMTU0MTE1LCAxNTQxMjQsIDE1NDEzMywgMTU0MTQyLCAxNTQxNTEsIDE1NDE2MCwgMCwgMCwgCisgICAgMTU0MTY5LCAxNTQxNzgsIDE1NDE4NiwgMTU0MTk0LCAxNTQyMDMsIDE1NDIxMiwgMTU0MjIxLCAxNTQyMzAsIDE1NDIzOSwgCisgICAgMTU0MjQ4LCAxNTQyNTcsIDE1NDI2NiwgMTU0Mjc1LCAxNTQyODQsIDE1NDI5MywgMCwgMTU0MzAxLCAxNTQzMTAsIAorICAgIDE1NDMxOCwgMTU0MzI2LCAxNTQzMzUsIDE1NDM0NCwgMTU0MzUzLCAxNTQzNjIsIDE1NDM3MSwgMTU0MzgwLCAxNTQzODksIAorICAgIDE1NDM5OCwgMTU0NDA3LCAxNTQ0MTYsIDE1NDQyNSwgMCwgMTU0NDMyLCAxNTQ0NDEsIDE1NDQ0OSwgMTU0NDU3LCAKKyAgICAxNTQ0NjYsIDE1NDQ3NSwgMTU0NDg0LCAxNTQ0OTMsIDE1NDUwMiwgMTU0NTExLCAxNTQ1MjAsIDE1NDUyOSwgMTU0NTM4LCAKKyAgICAxNTQ1NDcsIDE1NDU1NiwgMTU0NTYzLCAxNTQ1NjksIDE1NDU3NSwgMTU0NTgxLCAxNTQ1ODcsIDE1NDU5MywgMTU0NTk5LCAKKyAgICAxNTQ2MDUsIDE1NDYxMSwgMTU0NjE3LCAxNTQ2MjMsIDE1NDYyOSwgMTU0NjM1LCAxNTQ2NDEsIDE1NDY0NywgMTU0NjUzLCAKKyAgICAxNTQ2NTksIDE1NDY2NSwgMTU0NjcxLCAxNTQ2NzcsIDE1NDY4MywgMTU0Njg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNTQ2OTUsIDE1NDcwMiwgMTU0NzA3LCAxNTQ3MTEsIDE1NDcxNSwgMTU0NzE5LCAxNTQ3MjQsIDE1NDcyOSwgCisgICAgMTU0NzM0LCAxNTQ3MzksIDE1NDc0NCwgMTU0NzQ5LCAxNTQ3NTYsIDAsIDAsIDAsIDE1NDc2NCwgMTU0NzY5LCAxNTQ3NzUsIAorICAgIDE1NDc4MSwgMTU0Nzg3LCAxNTQ3OTIsIDE1NDc5OCwgMTU0ODA0LCAxNTQ4MTAsIDE1NDgxNSwgMTU0ODIxLCAxNTQ4MjcsIAorICAgIDE1NDgzMiwgMTU0ODM4LCAxNTQ4NDQsIDE1NDg0OSwgMTU0ODU1LCAxNTQ4NjEsIDE1NDg2NiwgMTU0ODcyLCAxNTQ4NzgsIAorICAgIDE1NDg4MywgMTU0ODg5LCAxNTQ4OTUsIDE1NDkwMSwgMTU0OTA3LCAxNTQ5MTMsIDE1NDkyNCwgMTU0OTMxLCAxNTQ5MzcsIAorICAgIDE1NDk0MCwgMCwgMTU0OTQzLCAxNTQ5NDgsIDE1NDk1NCwgMTU0OTYwLCAxNTQ5NjYsIDE1NDk3MSwgMTU0OTc3LCAKKyAgICAxNTQ5ODMsIDE1NDk4OSwgMTU0OTk0LCAxNTUwMDAsIDE1NTAwNiwgMTU1MDExLCAxNTUwMTcsIDE1NTAyMywgMTU1MDI4LCAKKyAgICAxNTUwMzQsIDE1NTA0MCwgMTU1MDQ1LCAxNTUwNTEsIDE1NTA1NywgMTU1MDYyLCAxNTUwNjgsIDE1NTA3NCwgMTU1MDgwLCAKKyAgICAxNTUwODYsIDE1NTA5MiwgMTU1MDk1LCAxNTUwOTgsIDE1NTEwMSwgMTU1MTA0LCAxNTUxMDcsIDE1NTExMCwgMTU1MTE2LCAKKyAgICAxNTUxMjMsIDE1NTEzMCwgMTU1MTM3LCAxNTUxNDMsIDE1NTE1MCwgMTU1MTU3LCAxNTUxNjQsIDE1NTE3MCwgMTU1MTc3LCAKKyAgICAxNTUxODQsIDE1NTE5MCwgMTU1MTk3LCAxNTUyMDQsIDE1NTIxMCwgMTU1MjE3LCAxNTUyMjQsIDE1NTIzMCwgMTU1MjM3LCAKKyAgICAxNTUyNDQsIDE1NTI1MCwgMTU1MjU3LCAxNTUyNjQsIDE1NTI3MSwgMTU1Mjc4LCAxNTUyODUsIDE1NTI5MCwgMCwgMCwgMCwgCisgICAgMCwgMTU1Mjk1LCAxNTUzMDEsIDE1NTMwOCwgMTU1MzE1LCAxNTUzMjIsIDE1NTMyOCwgMTU1MzM1LCAxNTUzNDIsIAorICAgIDE1NTM0OSwgMTU1MzU1LCAxNTUzNjIsIDE1NTM2OSwgMTU1Mzc1LCAxNTUzODIsIDE1NTM4OSwgMTU1Mzk1LCAxNTU0MDIsIAorICAgIDE1NTQwOSwgMTU1NDE1LCAxNTU0MjIsIDE1NTQyOSwgMTU1NDM1LCAxNTU0NDIsIDE1NTQ0OSwgMTU1NDU2LCAxNTU0NjMsIAorICAgIDE1NTQ3MCwgMTU1NDc5LCAxNTU0ODMsIDE1NTQ4NiwgMTU1NDkwLCAxNTU0OTQsIDE1NTQ5OCwgMTU1NTAxLCAxNTU1MDQsIAorICAgIDE1NTUwNywgMTU1NTEwLCAxNTU1MTMsIDE1NTUxNiwgMTU1NTE5LCAxNTU1MjIsIDE1NTUyNSwgMTU1NTMxLCAxNTU1MzQsIAorICAgIDE1NTUzOCwgMTU1NTQzLCAxNTU1NDcsIDE1NTU1MiwgMTU1NTU3LCAxNTU1NjMsIDE1NTU2OSwgMTU1NTc1LCAxNTU1ODAsIAorICAgIDE1NTU4OCwgMTU1NTk0LCAxNTU1OTcsIDE1NTYwMCwgMTU1NjAzLCAxNTU2MDYsIDE1NTYwOSwgMTU1NjEyLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTU2MTUsIDE1NTYyMiwgMTU1NjMwLCAxNTU2MzgsIDE1NTY0NiwgMTU1NjUzLCAxNTU2NjEsIAorICAgIDE1NTY2OSwgMTU1Njc3LCAxNTU2ODQsIDE1NTY5MiwgMTU1NzAwLCAxNTU3MDcsIDE1NTcxNSwgMTU1NzIzLCAxNTU3MzAsIAorICAgIDE1NTczOCwgMTU1NzQ2LCAxNTU3NTMsIDE1NTc2MSwgMTU1NzY5LCAxNTU3NzYsIDE1NTc4NCwgMTU1NzkyLCAxNTU4MDAsIAorICAgIDE1NTgwOCwgMTU1ODE2LCAxNTU4MjAsIDE1NTgyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTU1ODI4LCAxNTU4MzQsIDE1NTg0MCwgMTU1ODQ2LCAxNTU4NTAsIDE1NTg1NiwgMTU1ODYyLCAxNTU4NjgsIDE1NTg3NCwgCisgICAgMTU1ODgwLCAxNTU4ODYsIDE1NTg5MiwgMTU1ODk4LCAxNTU5MDQsIDE1NTkxMCwgMTU1OTE2LCAxNTU5MjIsIDE1NTkyOCwgCisgICAgMTU1OTM0LCAxNTU5NDAsIDE1NTk0NiwgMTU1OTUyLCAxNTU5NTgsIDE1NTk2NCwgMTU1OTcwLCAxNTU5NzYsIDE1NTk4MiwgCisgICAgMTU1OTg4LCAxNTU5OTQsIDE1NjAwMCwgMTU2MDA2LCAxNTYwMTIsIDE1NjAxOCwgMTU2MDI0LCAxNTYwMzAsIDE1NjAzNiwgCisgICAgMTU2MDQyLCAxNTYwNDgsIDE1NjA1NCwgMTU2MDYwLCAxNTYwNjYsIDE1NjA3MiwgMTU2MDc4LCAxNTYwODQsIDAsIDAsIDAsIAorICAgIDAsIDE1NjA5MCwgMTU2MTAxLCAxNTYxMTIsIDE1NjEyMywgMTU2MTM0LCAxNTYxNDUsIDE1NjE1NiwgMTU2MTY3LCAKKyAgICAxNTYxNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjE4OSwgMTU2MTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTA2MTMsIDE1MDYxNSwgMTUwNjE3LCAxNTA2MjEsIDE1MDYyNiwgMTUwNjMxLCAKLSAgICAxNTA2MzMsIDE1MDYzOSwgMTUwNjQ0LCAxNTA2NDYsIDE1MDY1MiwgMTUwNjU2LCAxNTA2NTgsIDE1MDY2MiwgMTUwNjY4LCAKLSAgICAxNTA2NzQsIDE1MDY4MCwgMTUwNjg1LCAxNTA2OTAsIDE1MDY5NywgMTUwNzA0LCAxNTA3MTEsIDE1MDcxNiwgMTUwNzIzLCAKLSAgICAxNTA3MzAsIDE1MDczNywgMTUwNzQxLCAxNTA3NDgsIDE1MDc1NywgMTUwNzY2LCAxNTA3NzMsIDE1MDc3OCwgMTUwNzgyLCAKLSAgICAxNTA3ODYsIDE1MDc4OCwgMTUwNzkxLCAxNTA3OTQsIDE1MDgwMSwgMTUwODA4LCAxNTA4MTgsIDE1MDgyMywgMTUwODI4LCAKLSAgICAxNTA4MzMsIDE1MDgzOCwgMTUwODQwLCAxNTA4NDYsIDE1MDg1MCwgMTUwODUyLCAxNTA4NTQsIDE1MDg1NiwgMTUwODU4LCAKLSAgICAxNTA4NjIsIDE1MDg2NiwgMTUwODcwLCAxNTA4NzIsIDE1MDg3NiwgMTUwODc4LCAxNTA4ODIsIDE1MDg4NCwgMTUwODg2LCAKLSAgICAxNTA4ODgsIDE1MDg5MCwgMTUwODk1LCAxNTA5MDAsIDE1MDkwMiwgMTUwOTA4LCAxNTA5MTIsIDE1MDkxNiwgMTUwOTI0LCAKLSAgICAxNTA5MjYsIDE1MDkyOCwgMTUwOTMwLCAxNTA5MzIsIDE1MDkzNCwgMTUwOTM2LCAxNTA5MzgsIDE1MDk0MCwgMTUwOTQyLCAKLSAgICAxNTA5NDQsIDE1MDk0OCwgMTUwOTUyLCAxNTA5NTQsIDE1MDk1NiwgMTUwOTU4LCAxNTA5NjAsIDE1MDk2MiwgMTUwOTY3LCAKLSAgICAxNTA5NzMsIDE1MDk3NywgMTUwOTgxLCAxNTA5ODUsIDE1MDk4OSwgMTUwOTk0LCAxNTA5OTgsIDE1MTAwMCwgMTUxMDAyLCAKLSAgICAxNTEwMDYsIDE1MTAxMiwgMTUxMDE0LCAxNTEwMTYsIDE1MTAxOCwgMTUxMDIyLCAxNTEwMzEsIDE1MTAzNywgMTUxMDQxLCAKLSAgICAxNTEwNDUsIDE1MTA0NywgMTUxMDQ5LCAxNTEwNTIsIDE1MTA1NCwgMTUxMDU2LCAxNTEwNTgsIDE1MTA2MiwgMTUxMDY0LCAKLSAgICAxNTEwNjgsIDE1MTA3MywgMTUxMDc1LCAxNTEwODAsIDE1MTA4NiwgMTUxMDkzLCAxNTEwOTcsIDE1MTEwMSwgMTUxMTA1LCAKLSAgICAxNTExMDksIDE1MTExNSwgMTUxMTE5LCAxNTExMjcsIDE1MTEzNCwgMTUxMTM2LCAxNTExMzgsIDE1MTE0MiwgMTUxMTQ2LCAKLSAgICAxNTExNDgsIDE1MTE1MiwgMTUxMTU2LCAxNTExNTgsIDE1MTE2MiwgMTUxMTY0LCAxNTExNjgsIDE1MTE3MiwgMTUxMTc2LCAKLSAgICAxNTExODAsIDE1MTE4NCwgMTUxMTg4LCAxNTExOTIsIDE1MTE5NiwgMTUxMjAyLCAxNTEyMDYsIDE1MTIxMCwgMTUxMjIxLCAKLSAgICAxNTEyMjYsIDE1MTIzMCwgMTUxMjM0LCAxNTEyNDAsIDE1MTI0NCwgMTUxMjQ4LCAxNTEyNTIsIDE1MTI1OSwgMTUxMjY2LCAKLSAgICAxNTEyNzAsIDE1MTI3NCwgMTUxMjc4LCAxNTEyODIsIDE1MTI4NiwgMTUxMjkzLCAxNTEyOTUsIDE1MTI5OSwgMTUxMzAxLCAKLSAgICAxNTEzMDMsIDE1MTMwNywgMTUxMzExLCAxNTEzMTUsIDE1MTMxNywgMTUxMzIxLCAxNTEzMjUsIDE1MTMyOSwgMTUxMzMzLCAKLSAgICAxNTEzMzcsIDE1MTMzOSwgMTUxMzQzLCAxNTEzNDUsIDE1MTM1MSwgMTUxMzU0LCAxNTEzNTksIDE1MTM2MSwgMTUxMzYzLCAKLSAgICAxNTEzNjYsIDE1MTM2OCwgMTUxMzcwLCAxNTEzNzMsIDE1MTM4MCwgMTUxMzg3LCAxNTEzOTQsIDE1MTM5OSwgMTUxNDAzLCAKLSAgICAxNTE0MDUsIDE1MTQwNywgMTUxNDA5LCAxNTE0MTMsIDE1MTQxNSwgMTUxNDE5LCAxNTE0MjMsIDE1MTQyNywgMTUxNDI5LCAKLSAgICAxNTE0MzMsIDE1MTQzNSwgMTUxNDM5LCAxNTE0NDMsIDE1MTQ1MCwgMTUxNDUyLCAxNTE0NjEsIDE1MTQ3MCwgMTUxNDc5LCAKLSAgICAxNTE0ODUsIDE1MTQ4NywgMTUxNDkyLCAxNTE0OTYsIDE1MTUwMCwgMTUxNTAyLCAxNTE1MDgsIDE1MTUxMiwgMTUxNTE0LCAKLSAgICAxNTE1MTgsIDE1MTUyMiwgMTUxNTI0LCAxNTE1MjgsIDE1MTUzMywgMTUxNTM3LCAxNTE1NDMsIDE1MTU0OSwgMTUxNTUxLCAKLSAgICAxNTE1NTMsIDE1MTU1OSwgMTUxNTYxLCAxNTE1NjUsIDE1MTU2OSwgMTUxNTcxLCAxNTE1NzUsIDE1MTU3NywgMTUxNTgxLCAKLSAgICAxNTE1ODUsIDE1MTU4OSwgMTUxNTkyLCAxNTE1OTUsIDE1MTYwMCwgMTUxNjA1LCAxNTE2MDcsIDE1MTYxMCwgMTUxNjEyLCAKLSAgICAxNTE2MTksIDE1MTYyMywgMTUxNjI1LCAxNTE2MzIsIDE1MTYzOSwgMTUxNjQ2LCAxNTE2NTMsIDE1MTY2MCwgMTUxNjYyLCAKLSAgICAxNTE2NjQsIDE1MTY2NiwgMTUxNjcwLCAxNTE2NzIsIDE1MTY3NCwgMTUxNjc2LCAxNTE2NzgsIDE1MTY4MCwgMTUxNjgyLCAKLSAgICAxNTE2ODQsIDE1MTY4NiwgMTUxNjg4LCAxNTE2OTAsIDE1MTY5MiwgMTUxNjk0LCAxNTE2OTYsIDE1MTY5OCwgMTUxNzAwLCAKLSAgICAxNTE3MDIsIDE1MTcwNCwgMTUxNzA2LCAxNTE3MDgsIDE1MTcxMCwgMTUxNzEyLCAxNTE3MTQsIDE1MTcxOCwgMTUxNzIwLCAKLSAgICAxNTE3MjIsIDE1MTcyNCwgMTUxNzI4LCAxNTE3MzAsIDE1MTczNCwgMTUxNzM2LCAxNTE3MzgsIDE1MTc0MiwgMTUxNzQ2LCAKLSAgICAxNTE3NTIsIDE1MTc1NCwgMTUxNzU2LCAxNTE3NTgsIDE1MTc2MCwgMTUxNzY0LCAxNTE3NjgsIDE1MTc3MCwgMTUxNzc0LCAKLSAgICAxNTE3NzgsIDE1MTc4MiwgMTUxNzg2LCAxNTE3OTAsIDE1MTc5NCwgMTUxNzk4LCAxNTE4MDIsIDE1MTgwNiwgMTUxODEwLCAKLSAgICAxNTE4MTQsIDE1MTgxOCwgMTUxODIyLCAxNTE4MjYsIDE1MTgzMCwgMTUxODM0LCAxNTE4MzgsIDE1MTg0MiwgMTUxODQ0LCAKLSAgICAxNTE4NDYsIDE1MTg0OCwgMTUxODUwLCAxNTE4NTIsIDE1MTg1NCwgMTUxODU2LCAxNTE4NjQsIDE1MTg3MiwgMTUxODgwLCAKLSAgICAxNTE4ODgsIDE1MTg5MywgMTUxODk4LCAxNTE5MDMsIDE1MTkwNywgMTUxOTExLCAxNTE5MTYsIDE1MTkyMCwgMTUxOTIyLCAKLSAgICAxNTE5MjYsIDE1MTkyOCwgMTUxOTMwLCAxNTE5MzIsIDE1MTkzNCwgMTUxOTM2LCAxNTE5MzgsIDE1MTk0MCwgMTUxOTQ0LCAKLSAgICAxNTE5NDYsIDE1MTk0OCwgMTUxOTUwLCAxNTE5NTQsIDE1MTk1OCwgMTUxOTYyLCAxNTE5NjYsIDE1MTk3MCwgMTUxOTcyLCAKLSAgICAxNTE5NzgsIDE1MTk4NCwgMTUxOTg2LCAxNTE5ODgsIDE1MTk5MCwgMTUxOTkyLCAxNTE5OTQsIDE1MjAwMywgMTUyMDEwLCAKLSAgICAxNTIwMTcsIDE1MjAyMSwgMTUyMDI4LCAxNTIwMzMsIDE1MjA0MCwgMTUyMDQ5LCAxNTIwNTQsIDE1MjA1OCwgMTUyMDYyLCAKLSAgICAxNTIwNjQsIDE1MjA2OCwgMTUyMDcwLCAxNTIwNzQsIDE1MjA3OCwgMTUyMDgwLCAxNTIwODQsIDE1MjA4OCwgMTUyMDkyLCAKLSAgICAxNTIwOTQsIDE1MjA5NiwgMTUyMTAyLCAxNTIxMDQsIDE1MjEwNiwgMTUyMTA4LCAxNTIxMTIsIDE1MjExNiwgMTUyMTE4LCAKLSAgICAxNTIxMjIsIDE1MjEyNCwgMTUyMTI2LCAxNTIxMjksIDE1MjEzMywgMTUyMTM1LCAxNTIxMzksIDE1MjE0MSwgMTUyMTQzLCAKLSAgICAxNTIxNDgsIDE1MjE1MCwgMTUyMTU0LCAxNTIxNTgsIDE1MjE2MSwgMTUyMTY1LCAxNTIxNjksIDE1MjE3MywgMTUyMTc3LCAKLSAgICAxNTIxODEsIDE1MjE4NSwgMTUyMTg5LCAxNTIxOTQsIDE1MjE5OCwgMTUyMjAyLCAxNTIyMTEsIDE1MjIxNiwgMTUyMjE5LCAKLSAgICAxNTIyMjEsIDE1MjIyNCwgMTUyMjI3LCAxNTIyMzIsIDE1MjIzNCwgMTUyMjM3LCAxNTIyNDIsIDE1MjI0NiwgMTUyMjQ5LCAKLSAgICAxNTIyNTMsIDE1MjI1NywgMTUyMjYwLCAxNTIyNjUsIDE1MjI2OSwgMTUyMjczLCAxNTIyNzcsIDE1MjI4MSwgMTUyMjg3LCAKLSAgICAxNTIyOTMsIDE1MjI5OSwgMTUyMzA1LCAxNTIzMTAsIDE1MjMyMCwgMTUyMzIyLCAxNTIzMjYsIDE1MjMyOCwgMTUyMzMwLCAKLSAgICAxNTIzMzQsIDE1MjMzOCwgMTUyMzQwLCAxNTIzNDQsIDE1MjM0OSwgMTUyMzU0LCAxNTIzNjAsIDE1MjM2MiwgMTUyMzY2LCAKLSAgICAxNTIzNzAsIDE1MjM3NiwgMTUyMzgyLCAxNTIzODYsIDE1MjM4OCwgMTUyMzkwLCAxNTIzOTQsIDE1MjM5NiwgMTUyNDAwLCAKLSAgICAxNTI0MDQsIDE1MjQwOCwgMTUyNDEwLCAxNTI0MTIsIDE1MjQxOSwgMTUyNDIzLCAxNTI0MjYsIDE1MjQzMCwgMTUyNDM0LCAKLSAgICAxNTI0MzgsIDE1MjQ0MCwgMTUyNDQ0LCAxNTI0NDYsIDE1MjQ0OCwgMTUyNDUyLCAxNTI0NTQsIDE1MjQ1OCwgMTUyNDYyLCAKLSAgICAxNTI0NjgsIDE1MjQ3MiwgMTUyNDc2LCAxNTI0ODAsIDE1MjQ4MiwgMTUyNDg1LCAxNTI0ODksIDE1MjQ5NSwgMTUyNTA0LCAKLSAgICAxNTI1MTMsIDE1MjUyMSwgMTUyNTI5LCAxNTI1MzEsIDE1MjUzNSwgMTUyNTM3LCAxNTI1NDEsIDE1MjU1MiwgMTUyNTU2LCAKLSAgICAxNTI1NjIsIDE1MjU2OCwgMTUyNTczLCAxNTI1NzUsIDE1MjU4MCwgMTUyNTg0LCAxNTI1ODYsIDE1MjU4OCwgMTUyNTkwLCAKLSAgICAxNTI1OTQsIDE1MjU5OCwgMTUyNjAyLCAxNTI2MDcsIDE1MjYxNywgMTUyNjMyLCAxNTI2NDIsIDE1MjY1MiwgMTUyNjU2LCAKLSAgICAxNTI2NjAsIDE1MjY2NiwgMTUyNjY4LCAxNTI2NzYsIDE1MjY4NCwgMTUyNjg2LCAxNTI2OTAsIDE1MjY5NiwgMTUyNzAyLCAKLSAgICAxNTI3MDksIDE1MjcxNiwgMTUyNzE4LCAxNTI3MjAsIDE1MjcyMywgMTUyNzI1LCAxNTI3MzEsIDE1MjczMywgMTUyNzM2LCAKLSAgICAxNTI3NDAsIDE1Mjc0NiwgMTUyNzUyLCAxNTI3NjMsIDE1Mjc2OSwgMTUyNzc1LCAxNTI3ODMsIDE1Mjc4NywgMTUyNzk1LCAKLSAgICAxNTI4MDMsIDE1MjgwOSwgMTUyODE1LCAxNTI4MjIsIDE1MjgyNCwgMTUyODI4LCAxNTI4MzAsIDE1MjgzMiwgMTUyODM3LCAKLSAgICAxNTI4MzksIDE1Mjg0MSwgMTUyODQzLCAxNTI4NDUsIDE1Mjg0OSwgMTUyODU5LCAxNTI4NjUsIDE1Mjg2OSwgMTUyODczLCAKLSAgICAxNTI4NzcsIDE1Mjg4MywgMTUyODg5LCAxNTI4OTUsIDE1MjkwMSwgMTUyOTA2LCAxNTI5MTEsIDE1MjkxNywgMTUyOTIzLCAKLSAgICAxNTI5MzAsIDE1MjkzNywgMTUyOTQ1LCAxNTI5NTMsIDE1Mjk1OCwgMTUyOTY2LCAxNTI5NzAsIDE1Mjk3OSwgMTUyOTg4LCAKLSAgICAxNTI5OTQsIDE1Mjk5OCwgMTUzMDAyLCAxNTMwMDYsIDE1MzAwOSwgMTUzMDE0LCAxNTMwMTYsIDE1MzAxOCwgMTUzMDIwLCAKLSAgICAxNTMwMjcsIDE1MzAzMiwgMTUzMDM5LCAxNTMwNDYsIDE1MzA1MywgMTUzMDYxLCAxNTMwNjksIDE1MzA3NywgMTUzMDg1LCAKLSAgICAxNTMwOTMsIDE1MzEwMSwgMTUzMTA5LCAxNTMxMTcsIDE1MzEyNSwgMTUzMTMxLCAxNTMxMzcsIDE1MzE0MywgMTUzMTQ5LCAKLSAgICAxNTMxNTUsIDE1MzE2MSwgMTUzMTY3LCAxNTMxNzMsIDE1MzE3OSwgMTUzMTg1LCAxNTMxOTEsIDE1MzE5NywgMTUzMjAwLCAKLSAgICAxNTMyMDksIDE1MzIxOCwgMTUzMjIwLCAxNTMyMjcsIDE1MzIzMSwgMTUzMjMzLCAxNTMyMzUsIDE1MzIzOSwgMTUzMjQ1LCAKLSAgICAxNTMyNDksIDE1MzI1MSwgMTUzMjYxLCAxNTMyNjcsIDE1MzI3MSwgMTUzMjczLCAxNTMyNzcsIDAsIDE1MzI3OSwgCi0gICAgMTUzMjg2LCAxNTMyOTMsIDE1MzMwMCwgMTUzMzA1LCAxNTMzMTAsIDE1MzMxOSwgMTUzMzI1LCAxNTMzMzAsIDE1MzMzNCwgCi0gICAgMTUzMzM5LCAxNTMzNDMsIDE1MzM1MCwgMTUzMzU0LCAxNTMzNTcsIDE1MzM2MiwgMTUzMzY5LCAxNTMzNzYsIDE1MzM4MSwgCi0gICAgMTUzMzg2LCAxNTMzOTEsIDE1MzM5OCwgMTUzNDA3LCAxNTM0MTgsIDE1MzQyNCwgMTUzNDMwLCAxNTM0MzYsIDE1MzQ0NiwgCi0gICAgMTUzNDYxLCAxNTM0NzAsIDE1MzQ3OCwgMTUzNDg2LCAxNTM0OTQsIDE1MzUwMiwgMTUzNTEwLCAxNTM1MTgsIDE1MzUyNiwgCi0gICAgMTUzNTM0LCAxNTM1NDIsIDE1MzU1MCwgMTUzNTU4LCAwLCAxNTM1NjYsIDE1MzU3MCwgMTUzNTc1LCAxNTM1ODAsIAotICAgIDE1MzU4MiwgMTUzNTg2LCAxNTM1OTUsIDE1MzYwNCwgMTUzNjEyLCAxNTM2MTYsIDE1MzYyMCwgMTUzNjI1LCAxNTM2MzAsIAotICAgIDE1MzYzNSwgMTUzNjM3LCAxNTM2NDIsIDE1MzY0NiwgMTUzNjQ4LCAxNTM2NTIsIDE1MzY1NiwgMTUzNjYyLCAxNTM2NjcsIAotICAgIDE1MzY3NSwgMTUzNjgwLCAxNTM2ODUsIDE1MzY5MCwgMTUzNjk3LCAxNTM3MDAsIDE1MzcwMiwgMTUzNzA1LCAxNTM3MTAsIAotICAgIDE1MzcxNiwgMTUzNzIwLCAxNTM3MjQsIDE1MzczMCwgMTUzNzM2LCAxNTM3MzgsIDE1Mzc0MiwgMTUzNzQ2LCAxNTM3NTAsIAotICAgIDE1Mzc1NCwgMTUzNzU4LCAxNTM3NjAsIDE1Mzc2MiwgMTUzNzY0LCAxNTM3NjYsIDE1Mzc3MiwgMTUzNzc4LCAxNTM3ODIsIAotICAgIDE1Mzc4NCwgMTUzNzg2LCAxNTM3ODgsIDE1Mzc5NywgMTUzODAxLCAxNTM4MDgsIDE1MzgxNSwgMTUzODE3LCAxNTM4MjAsIAotICAgIDE1MzgyNCwgMTUzODMwLCAxNTM4MzQsIDE1MzgzOCwgMTUzODQwLCAxNTM4NDgsIDE1Mzg1MiwgMTUzODU2LCAxNTM4NjEsIAotICAgIDE1Mzg2NiwgMTUzODcxLCAxNTM4NzYsIDE1Mzg4MSwgMTUzODg2LCAxNTM4OTEsIDE1Mzg5NiwgMTUzOTAxLCAxNTM5MDYsIAotICAgIDE1MzkxMCwgMTUzOTE2LCAxNTM5MjAsIDE1MzkyNiwgMTUzOTMxLCAxNTM5MzgsIDE1Mzk0NCwgMTUzOTUyLCAxNTM5NTYsIAotICAgIDE1Mzk2MywgMTUzOTY3LCAxNTM5NzEsIDE1Mzk3NSwgMTUzOTgwLCAxNTM5ODUsIDE1Mzk4NywgMTUzOTkxLCAxNTQwMDAsIAotICAgIDE1NDAwOCwgMTU0MDE2LCAxNTQwMjksIDE1NDA0MiwgMTU0MDU1LCAxNTQwNjIsIDE1NDA2OSwgMTU0MDczLCAxNTQwODIsIAotICAgIDE1NDA5MCwgMTU0MDk0LCAxNTQxMDMsIDE1NDExMCwgMTU0MTE0LCAxNTQxMTgsIDE1NDEyMiwgMTU0MTI2LCAxNTQxMzMsIAotICAgIDE1NDEzNywgMTU0MTQxLCAxNTQxNDUsIDE1NDE0OSwgMTU0MTU2LCAxNTQxNjUsIDE1NDE3NCwgMTU0MTgxLCAxNTQxOTMsIAotICAgIDE1NDIwNSwgMTU0MjA5LCAxNTQyMTMsIDE1NDIxNywgMTU0MjIxLCAxNTQyMjUsIDE1NDIyOSwgMTU0MjM3LCAxNTQyNDUsIAotICAgIDE1NDI1MywgMTU0MjU3LCAxNTQyNjEsIDE1NDI2NSwgMTU0MjY5LCAxNTQyNzMsIDE1NDI3NywgMTU0MjgzLCAxNTQyODksIAotICAgIDE1NDI5MywgMTU0MzA0LCAxNTQzMTIsIDE1NDMxNiwgMTU0MzIwLCAxNTQzMjQsIDE1NDMyOCwgMTU0MzM0LCAxNTQzNDEsIAotICAgIDE1NDM1MiwgMTU0MzYyLCAxNTQzNzIsIDE1NDM4MywgMTU0MzkyLCAxNTQ0MDMsIDE1NDQwOSwgMTU0NDE1LCAxNTQ0MjEsIAotICAgIDE1NDQyNywgMTU0NDMzLCAxNTQ0MzcsIDE1NDQ0NCwgMTU0NDUzLCAxNTQ0NjAsIDE1NDQ2NiwgMTU0NDcwLCAxNTQ0NzQsIAotICAgIDE1NDQ3OCwgMTU0NDg3LCAxNTQ0OTksIDE1NDUwMywgMTU0NTEwLCAxNTQ1MTcsIDE1NDUyNCwgMTU0NTMyLCAxNTQ1MzksIAotICAgIDE1NDU0NywgMTU0NTU2LCAxNTQ1NjYsIDE1NDU3NSwgMTU0NTg1LCAxNTQ1OTQsIDE1NDYwNCwgMTU0NjEzLCAxNTQ2MjMsIAotICAgIDE1NDYzMywgMTU0NjQ0LCAxNTQ2NTQsIDE1NDY2NSwgMTU0NjcyLCAxNTQ2ODAsIDE1NDY4NywgMTU0Njk1LCAxNTQ3MDMsIAotICAgIDE1NDcxMiwgMTU0NzIwLCAxNTQ3MjksIDE1NDczNiwgMTU0NzQ4LCAxNTQ3NTUsIDE1NDc2NywgMTU0NzcwLCAxNTQ3NzMsIAotICAgIDE1NDc3NiwgMTU0Nzc5LCAxNTQ3ODUsIDE1NDc5MiwgMTU0Nzk4LCAxNTQ4MDUsIDE1NDgxMCwgMTU0ODE2LCAxNTQ4MjgsIAotICAgIDE1NDgzOCwgMTU0ODQ5LCAxNTQ4NTQsIDE1NDg1OSwgMTU0ODY1LCAxNTQ4NzAsIDE1NDg3NywgMTU0ODgxLCAxNTQ4ODcsIAotICAgIDE1NDg4OSwgMTU0ODkxLCAxNTQ4OTUsIDE1NDg5OSwgMTU0OTAzLCAxNTQ5MTIsIDE1NDkxNCwgMTU0OTE2LCAxNTQ5MTksIAotICAgIDE1NDkyMSwgMTU0OTIzLCAxNTQ5MjcsIDE1NDkyOSwgMTU0OTMzLCAxNTQ5MzUsIDE1NDkzOSwgMTU0OTQxLCAxNTQ5NDMsIAotICAgIDE1NDk0NywgMTU0OTUxLCAxNTQ5NTcsIDE1NDk1OSwgMTU0OTYzLCAxNTQ5NjUsIDE1NDk2OSwgMTU0OTczLCAxNTQ5NzcsIAotICAgIDE1NDk4MSwgMTU0OTgzLCAxNTQ5ODUsIDE1NDk4OSwgMTU0OTkzLCAxNTQ5OTcsIDE1NTAwMSwgMTU1MDAzLCAxNTUwMDUsIAotICAgIDE1NTAwNywgMTU1MDEzLCAxNTUwMTgsIDE1NTAyMSwgMTU1MDI5LCAxNTUwMzcsIDE1NTAzOSwgMTU1MDQ0LCAxNTUwNDcsIAotICAgIDE1NTA1MiwgMTU1MDYzLCAxNTUwNzAsIDE1NTA3NSwgMTU1MDgwLCAxNTUwODIsIDE1NTA4NiwgMTU1MDg4LCAxNTUwOTIsIAotICAgIDE1NTA5NCwgMTU1MDk4LCAxNTUxMDIsIDE1NTEwNSwgMTU1MTA4LCAxNTUxMTAsIDE1NTExMywgMTU1MTE1LCAxNTUxMTksIAotICAgIDE1NTEyMSwgMTU1MTIzLCAxNTUxMjUsIDE1NTEyOSwgMTU1MTMxLCAxNTUxMzUsIDE1NTEzOCwgMTU1MTQ1LCAxNTUxNDgsIAotICAgIDE1NTE1MywgMTU1MTU2LCAxNTUxNTksIDE1NTE2NCwgMTU1MTY4LCAxNTUxNzIsIDE1NTE3NiwgMTU1MTc4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTUxODMsIDE1NTE4OCwgMTU1MTkwLCAxNTUxOTQsIAotICAgIDE1NTE5NiwgMTU1MjAwLCAxNTUyMDQsIDE1NTIxMCwgMTU1MjE0LCAxNTUyMTksIDE1NTIyMiwgMTU1MjI2LCAxNTUyMzAsIAotICAgIDAsIDAsIDAsIDE1NTIzNCwgMTU1MjM2LCAxNTUyNDIsIDE1NTI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTU1MjUwLCAxNTUyNTUsIDE1NTI2MCwgMTU1MjY1LCAxNTUyNzAsIDE1NTI3NSwgMTU1MjgwLCAxNTUyODcsIAotICAgIDE1NTI5NCwgMTU1MzAxLCAxNTUzMDgsIDE1NTMxMywgMTU1MzE4LCAxNTUzMjMsIDE1NTMyOCwgMTU1MzM1LCAxNTUzNDEsIAotICAgIDE1NTM0OCwgMTU1MzU1LCAxNTUzNjIsIDE1NTM2NywgMTU1MzcyLCAxNTUzNzcsIDE1NTM4MiwgMTU1Mzg3LCAxNTUzOTQsIAotICAgIDE1NTQwMSwgMTU1NDA2LCAxNTU0MTEsIDE1NTQxOCwgMTU1NDI1LCAxNTU0MzMsIDE1NTQ0MSwgMTU1NDQ4LCAxNTU0NTUsIAotICAgIDE1NTQ2MywgMTU1NDcxLCAxNTU0NzksIDE1NTQ4NiwgMTU1NDk2LCAxNTU1MDcsIDE1NTUxMiwgMTU1NTE5LCAxNTU1MjYsIAotICAgIDE1NTUzMywgMTU1NTQxLCAxNTU1NDksIDE1NTU2MCwgMTU1NTY4LCAxNTU1NzYsIDE1NTU4NCwgMTU1NTg5LCAxNTU1OTQsIAotICAgIDE1NTU5OSwgMTU1NjA0LCAxNTU2MDksIDE1NTYxNCwgMTU1NjE5LCAxNTU2MjQsIDE1NTYyOSwgMTU1NjM0LCAxNTU2MzksIAotICAgIDE1NTY0NCwgMTU1NjUxLCAxNTU2NTYsIDE1NTY2MSwgMTU1NjY4LCAxNTU2NzMsIDE1NTY3OCwgMTU1NjgzLCAxNTU2ODgsIAotICAgIDE1NTY5MywgMTU1Njk4LCAxNTU3MDMsIDE1NTcwOCwgMTU1NzEzLCAxNTU3MTgsIDE1NTcyMywgMTU1NzI4LCAxNTU3MzUsIAotICAgIDE1NTc0MywgMTU1NzQ4LCAxNTU3NTMsIDE1NTc2MCwgMTU1NzY1LCAxNTU3NzAsIDE1NTc3NSwgMTU1NzgyLCAxNTU3ODcsIAotICAgIDE1NTc5NCwgMTU1Nzk5LCAxNTU4MDYsIDE1NTgxMSwgMTU1ODIwLCAxNTU4MjksIDE1NTgzNCwgMTU1ODM5LCAxNTU4NDQsIAotICAgIDE1NTg0OSwgMTU1ODU0LCAxNTU4NTksIDE1NTg2NCwgMTU1ODY5LCAxNTU4NzQsIDE1NTg3OSwgMTU1ODg0LCAxNTU4ODksIAotICAgIDE1NTg5NCwgMTU1OTAyLCAxNTU5MTAsIDE1NTkxNSwgMTU1OTIwLCAxNTU5MjUsIDE1NTkzMCwgMTU1OTM1LCAxNTU5NDEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTk0NywgMTU1OTU1LCAxNTU5NjMsIDE1NTk3MSwgCi0gICAgMTU1OTc5LCAxNTU5ODUsIDE1NTk5MSwgMTU1OTk1LCAxNTU5OTksIDE1NjAwNSwgMTU2MDExLCAxNTYwMjAsIDE1NjAyNCwgCi0gICAgMTU2MDI5LCAxNTYwMzUsIDE1NjAzOSwgMTU2MDQ0LCAxNTYwNDgsIDE1NjA1MiwgMTU2MDU4LCAxNTYwNjQsIDE1NjA3NCwgCi0gICAgMTU2MDgzLCAxNTYwODYsIDE1NjA5MSwgMTU2MDk3LCAxNTYxMDMsIDE1NjExNCwgMTU2MTI0LCAxNTYxMjgsIDE1NjEzMywgCi0gICAgMTU2MTM5LCAxNTYxNDUsIDE1NjE1NCwgMTU2MTU5LCAxNTYxNjMsIDE1NjE2OCwgMTU2MTcyLCAxNTYxNzgsIDE1NjE4NCwgCi0gICAgMTU2MTkwLCAxNTYxOTQsIDE1NjE5NywgMTU2MjAxLCAxNTYyMDQsIDE1NjIwNywgMTU2MjEyLCAxNTYyMTcsIDE1NjIyNCwgCi0gICAgMTU2MjMyLCAxNTYyMzksIDE1NjI0NiwgMTU2MjU1LCAxNTYyNjQsIDE1NjI3MSwgMTU2Mjc5LCAxNTYyODYsIDE1NjI5MywgCi0gICAgMTU2MzAyLCAxNTYzMTEsIDE1NjMxOCwgMTU2MzI2LCAxNTYzMzMsIDE1NjM0MCwgMTU2MzQ5LCAxNTYzNTYsIDE1NjM2NCwgCi0gICAgMTU2MzcwLCAxNTYzNzksIDE1NjM4NywgMTU2Mzk2LCAxNTY0MDMsIDE1NjQxMywgMTU2NDI0LCAxNTY0MzIsIDE1NjQ0MCwgCi0gICAgMTU2NDQ5LCAxNTY0NTcsIDE1NjQ2NSwgMTU2NDc0LCAxNTY0ODIsIDE1NjQ5MiwgMTU2NTAxLCAxNTY1MDksIDE1NjUxNywgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2NTI2LCAxNTY1MzQsIAotICAgIDE1NjU0MiwgMTU2NTUwLCAxNTY1NTgsIDE1NjU2NywgMTU2NTc2LCAxNTY1ODUsIDE1NjU5NCwgMTU2NjAzLCAxNTY2MTIsIAotICAgIDE1NjYyMSwgMCwgMCwgMCwgMCwgMTU2NjMwLCAxNTY2MzgsIDE1NjY0NiwgMTU2NjU0LCAxNTY2NjIsIDE1NjY2OSwgCi0gICAgMTU2Njc2LCAxNTY2ODMsIDE1NjY5MCwgMTU2Njk4LCAxNTY3MDYsIDE1NjcxNCwgMTU2NzIyLCAxNTY3MzIsIDE1Njc0MiwgCi0gICAgMTU2NzUyLCAxNTY3NjIsIDE1Njc3MSwgMTU2NzgwLCAxNTY3ODksIDE1Njc5OCwgMTU2ODA3LCAxNTY4MTYsIDE1NjgyNSwgCi0gICAgMTU2ODM0LCAxNTY4NDIsIDE1Njg1MCwgMTU2ODU4LCAxNTY4NjYsIDE1Njg3NCwgMTU2ODgyLCAxNTY4OTAsIDE1Njg5OCwgCi0gICAgMTU2OTA4LCAxNTY5MTgsIDE1NjkyOCwgMTU2OTM4LCAxNTY5NDIsIDE1Njk0NiwgMTU2OTUwLCAxNTY5NTQsIDE1Njk1NywgCi0gICAgMTU2OTYwLCAxNTY5NjMsIDE1Njk2NiwgMTU2OTcwLCAxNTY5NzQsIDE1Njk3OCwgMTU2OTgyLCAxNTY5ODcsIDE1Njk5MiwgCi0gICAgMTU2OTk3LCAxNTcwMDIsIDE1NzAwNSwgMTU3MDA4LCAxNTcwMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzAxNCwgCi0gICAgMTU3MDE3LCAxNTcwMjAsIDE1NzAyMywgMTU3MDI2LCAxNTcwMzEsIDE1NzAzNiwgMTU3MDQyLCAxNTcwNDgsIDE1NzA1MiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MDU2LCAxNTcwNjIsIDE1NzA2OCwgMTU3MDc0LCAxNTcwODAsIDE1NzA4OCwgMTU3MDk2LCAKLSAgICAxNTcxMDUsIDE1NzExNCwgMTU3MTE5LCAxNTcxMjQsIDE1NzEyOSwgMTU3MTM0LCAxNTcxNDEsIDE1NzE0OCwgMTU3MTU2LCAKLSAgICAxNTcxNjQsIDE1NzE3MSwgMTU3MTc4LCAxNTcxODUsIDE1NzE5MiwgMTU3MjAxLCAxNTcyMTAsIDE1NzIyMCwgMTU3MjMwLCAKLSAgICAxNTcyMzYsIDE1NzI0MiwgMTU3MjQ4LCAxNTcyNTQsIDE1NzI2MiwgMTU3MjcwLCAxNTcyNzksIDE1NzI4OCwgMTU3Mjk2LCAKLSAgICAxNTczMDQsIDE1NzMxMiwgMTU3MzIwLCAxNTczMzAsIDE1NzM0MCwgMTU3MzUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNTczNjIsIDE1NzM2NywgMTU3MzcyLCAxNTczNzcsIDE1NzM4MiwgMTU3MzkxLCAxNTc0MDAsIDE1NzQwOSwgMTU3NDE4LCAKLSAgICAxNTc0MjUsIDE1NzQzMiwgMTU3NDM5LCAxNTc0NDYsIDE1NzQ1MywgMTU3NDYyLCAxNTc0NzEsIDE1NzQ4MCwgMTU3NDg1LCAKLSAgICAxNTc0OTIsIDE1NzQ5OSwgMTU3NTA2LCAxNTc1MTEsIDE1NzUxNiwgMTU3NTIxLCAxNTc1MjYsIDE1NzUzMywgMTU3NTQwLCAKLSAgICAxNTc1NDcsIDE1NzU1NCwgMTU3NTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc1NzAsIDE1NzU3NCwgMTU3NTc4LCAxNTc1ODMsIDE1NzU4NywgCi0gICAgMTU3NTkxLCAxNTc1OTYsIDE1NzYwMCwgMTU3NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTYxOTksIAorICAgIDE1NjIwMSwgMTU2MjAzLCAxNTYyMDcsIDE1NjIxMiwgMTU2MjE3LCAxNTYyMTksIDE1NjIyNSwgMTU2MjMwLCAxNTYyMzIsIAorICAgIDE1NjIzOCwgMTU2MjQyLCAxNTYyNDQsIDE1NjI0OCwgMTU2MjU0LCAxNTYyNjAsIDE1NjI2NiwgMTU2MjcxLCAxNTYyNzYsIAorICAgIDE1NjI4MywgMTU2MjkwLCAxNTYyOTcsIDE1NjMwMiwgMTU2MzA5LCAxNTYzMTYsIDE1NjMyMywgMTU2MzI3LCAxNTYzMzQsIAorICAgIDE1NjM0MywgMTU2MzUyLCAxNTYzNTksIDE1NjM2NCwgMTU2MzY4LCAxNTYzNzIsIDE1NjM3NCwgMTU2Mzc3LCAxNTYzODAsIAorICAgIDE1NjM4NywgMTU2Mzk0LCAxNTY0MDQsIDE1NjQwOSwgMTU2NDE0LCAxNTY0MTksIDE1NjQyNCwgMTU2NDI2LCAxNTY0MzIsIAorICAgIDE1NjQzNiwgMTU2NDM4LCAxNTY0NDAsIDE1NjQ0MiwgMTU2NDQ0LCAxNTY0NDgsIDE1NjQ1MiwgMTU2NDU2LCAxNTY0NTgsIAorICAgIDE1NjQ2MiwgMTU2NDY0LCAxNTY0NjgsIDE1NjQ3MCwgMTU2NDcyLCAxNTY0NzQsIDE1NjQ3NiwgMTU2NDgxLCAxNTY0ODYsIAorICAgIDE1NjQ4OCwgMTU2NDk0LCAxNTY0OTgsIDE1NjUwMiwgMTU2NTEwLCAxNTY1MTIsIDE1NjUxNCwgMTU2NTE2LCAxNTY1MTgsIAorICAgIDE1NjUyMCwgMTU2NTIyLCAxNTY1MjQsIDE1NjUyNiwgMTU2NTI4LCAxNTY1MzAsIDE1NjUzNCwgMTU2NTM4LCAxNTY1NDAsIAorICAgIDE1NjU0MiwgMTU2NTQ0LCAxNTY1NDYsIDE1NjU0OCwgMTU2NTUzLCAxNTY1NTksIDE1NjU2MywgMTU2NTY3LCAxNTY1NzEsIAorICAgIDE1NjU3NSwgMTU2NTgwLCAxNTY1ODQsIDE1NjU4NiwgMTU2NTg4LCAxNTY1OTIsIDE1NjU5OCwgMTU2NjAwLCAxNTY2MDIsIAorICAgIDE1NjYwNCwgMTU2NjA4LCAxNTY2MTcsIDE1NjYyMywgMTU2NjI3LCAxNTY2MzEsIDE1NjYzMywgMTU2NjM1LCAxNTY2MzgsIAorICAgIDE1NjY0MCwgMTU2NjQyLCAxNTY2NDQsIDE1NjY0OCwgMTU2NjUwLCAxNTY2NTQsIDE1NjY1OSwgMTU2NjYxLCAxNTY2NjYsIAorICAgIDE1NjY3MiwgMTU2Njc5LCAxNTY2ODMsIDE1NjY4NywgMTU2NjkxLCAxNTY2OTUsIDE1NjcwMSwgMTU2NzA1LCAxNTY3MTMsIAorICAgIDE1NjcyMCwgMTU2NzIyLCAxNTY3MjQsIDE1NjcyOCwgMTU2NzMyLCAxNTY3MzQsIDE1NjczOCwgMTU2NzQyLCAxNTY3NDQsIAorICAgIDE1Njc0OCwgMTU2NzUwLCAxNTY3NTQsIDE1Njc1OCwgMTU2NzYyLCAxNTY3NjYsIDE1Njc3MCwgMTU2Nzc0LCAxNTY3NzgsIAorICAgIDE1Njc4MiwgMTU2Nzg4LCAxNTY3OTIsIDE1Njc5NiwgMTU2ODA3LCAxNTY4MTIsIDE1NjgxNiwgMTU2ODIwLCAxNTY4MjYsIAorICAgIDE1NjgzMCwgMTU2ODM0LCAxNTY4MzgsIDE1Njg0NSwgMTU2ODUyLCAxNTY4NTYsIDE1Njg2MCwgMTU2ODY0LCAxNTY4NjgsIAorICAgIDE1Njg3MiwgMTU2ODc5LCAxNTY4ODEsIDE1Njg4NSwgMTU2ODg3LCAxNTY4ODksIDE1Njg5MywgMTU2ODk3LCAxNTY5MDEsIAorICAgIDE1NjkwMywgMTU2OTA3LCAxNTY5MTEsIDE1NjkxNSwgMTU2OTE5LCAxNTY5MjMsIDE1NjkyNSwgMTU2OTI5LCAxNTY5MzEsIAorICAgIDE1NjkzNywgMTU2OTQwLCAxNTY5NDUsIDE1Njk0NywgMTU2OTQ5LCAxNTY5NTIsIDE1Njk1NCwgMTU2OTU2LCAxNTY5NTksIAorICAgIDE1Njk2NiwgMTU2OTczLCAxNTY5ODAsIDE1Njk4NSwgMTU2OTg5LCAxNTY5OTEsIDE1Njk5MywgMTU2OTk1LCAxNTY5OTksIAorICAgIDE1NzAwMSwgMTU3MDA1LCAxNTcwMDksIDE1NzAxMywgMTU3MDE1LCAxNTcwMTksIDE1NzAyMSwgMTU3MDI1LCAxNTcwMjksIAorICAgIDE1NzAzNiwgMTU3MDM4LCAxNTcwNDcsIDE1NzA1NiwgMTU3MDY1LCAxNTcwNzEsIDE1NzA3MywgMTU3MDc4LCAxNTcwODIsIAorICAgIDE1NzA4NiwgMTU3MDg4LCAxNTcwOTQsIDE1NzA5OCwgMTU3MTAwLCAxNTcxMDQsIDE1NzEwOCwgMTU3MTEwLCAxNTcxMTQsIAorICAgIDE1NzExOSwgMTU3MTIzLCAxNTcxMjksIDE1NzEzNSwgMTU3MTM3LCAxNTcxMzksIDE1NzE0NSwgMTU3MTQ3LCAxNTcxNTEsIAorICAgIDE1NzE1NSwgMTU3MTU3LCAxNTcxNjEsIDE1NzE2MywgMTU3MTY3LCAxNTcxNzEsIDE1NzE3NSwgMTU3MTc4LCAxNTcxODEsIAorICAgIDE1NzE4NiwgMTU3MTkxLCAxNTcxOTMsIDE1NzE5NiwgMTU3MTk4LCAxNTcyMDUsIDE1NzIwOSwgMTU3MjExLCAxNTcyMTgsIAorICAgIDE1NzIyNSwgMTU3MjMyLCAxNTcyMzksIDE1NzI0NiwgMTU3MjQ4LCAxNTcyNTAsIDE1NzI1MiwgMTU3MjU2LCAxNTcyNTgsIAorICAgIDE1NzI2MCwgMTU3MjYyLCAxNTcyNjQsIDE1NzI2NiwgMTU3MjY4LCAxNTcyNzAsIDE1NzI3MiwgMTU3Mjc0LCAxNTcyNzYsIAorICAgIDE1NzI3OCwgMTU3MjgwLCAxNTcyODIsIDE1NzI4NCwgMTU3Mjg2LCAxNTcyODgsIDE1NzI5MCwgMTU3MjkyLCAxNTcyOTQsIAorICAgIDE1NzI5NiwgMTU3Mjk4LCAxNTczMDAsIDE1NzMwNCwgMTU3MzA2LCAxNTczMDgsIDE1NzMxMCwgMTU3MzE0LCAxNTczMTYsIAorICAgIDE1NzMyMCwgMTU3MzIyLCAxNTczMjQsIDE1NzMyOCwgMTU3MzMyLCAxNTczMzgsIDE1NzM0MCwgMTU3MzQyLCAxNTczNDQsIAorICAgIDE1NzM0NiwgMTU3MzUwLCAxNTczNTQsIDE1NzM1NiwgMTU3MzYwLCAxNTczNjQsIDE1NzM2OCwgMTU3MzcyLCAxNTczNzYsIAorICAgIDE1NzM4MCwgMTU3Mzg0LCAxNTczODgsIDE1NzM5MiwgMTU3Mzk2LCAxNTc0MDAsIDE1NzQwNCwgMTU3NDA4LCAxNTc0MTIsIAorICAgIDE1NzQxNiwgMTU3NDIwLCAxNTc0MjQsIDE1NzQyOCwgMTU3NDMwLCAxNTc0MzIsIDE1NzQzNCwgMTU3NDM2LCAxNTc0MzgsIAorICAgIDE1NzQ0MCwgMTU3NDQyLCAxNTc0NTAsIDE1NzQ1OCwgMTU3NDY2LCAxNTc0NzQsIDE1NzQ3OSwgMTU3NDg0LCAxNTc0ODksIAorICAgIDE1NzQ5MywgMTU3NDk3LCAxNTc1MDIsIDE1NzUwNiwgMTU3NTA4LCAxNTc1MTIsIDE1NzUxNCwgMTU3NTE2LCAxNTc1MTgsIAorICAgIDE1NzUyMCwgMTU3NTIyLCAxNTc1MjQsIDE1NzUyNiwgMTU3NTMwLCAxNTc1MzIsIDE1NzUzNCwgMTU3NTM2LCAxNTc1NDAsIAorICAgIDE1NzU0NCwgMTU3NTQ4LCAxNTc1NTIsIDE1NzU1NiwgMTU3NTU4LCAxNTc1NjQsIDE1NzU3MCwgMTU3NTcyLCAxNTc1NzQsIAorICAgIDE1NzU3NiwgMTU3NTc4LCAxNTc1ODAsIDE1NzU4OSwgMTU3NTk2LCAxNTc2MDMsIDE1NzYwNywgMTU3NjE0LCAxNTc2MTksIAorICAgIDE1NzYyNiwgMTU3NjM1LCAxNTc2NDAsIDE1NzY0NCwgMTU3NjQ4LCAxNTc2NTAsIDE1NzY1NCwgMTU3NjU2LCAxNTc2NjAsIAorICAgIDE1NzY2NCwgMTU3NjY2LCAxNTc2NzAsIDE1NzY3NCwgMTU3Njc4LCAxNTc2ODAsIDE1NzY4MiwgMTU3Njg4LCAxNTc2OTAsIAorICAgIDE1NzY5MiwgMTU3Njk0LCAxNTc2OTgsIDE1NzcwMiwgMTU3NzA0LCAxNTc3MDgsIDE1NzcxMCwgMTU3NzEyLCAxNTc3MTUsIAorICAgIDE1NzcxOSwgMTU3NzIxLCAxNTc3MjUsIDE1NzcyNywgMTU3NzI5LCAxNTc3MzQsIDE1NzczNiwgMTU3NzQwLCAxNTc3NDQsIAorICAgIDE1Nzc0NywgMTU3NzUxLCAxNTc3NTUsIDE1Nzc1OSwgMTU3NzYzLCAxNTc3NjcsIDE1Nzc3MSwgMTU3Nzc1LCAxNTc3ODAsIAorICAgIDE1Nzc4NCwgMTU3Nzg4LCAxNTc3OTcsIDE1NzgwMiwgMTU3ODA1LCAxNTc4MDcsIDE1NzgxMCwgMTU3ODEzLCAxNTc4MTgsIAorICAgIDE1NzgyMCwgMTU3ODIzLCAxNTc4MjgsIDE1NzgzMiwgMTU3ODM1LCAxNTc4MzksIDE1Nzg0MywgMTU3ODQ2LCAxNTc4NTEsIAorICAgIDE1Nzg1NSwgMTU3ODU5LCAxNTc4NjMsIDE1Nzg2NywgMTU3ODczLCAxNTc4NzksIDE1Nzg4NSwgMTU3ODkxLCAxNTc4OTYsIAorICAgIDE1NzkwNiwgMTU3OTA4LCAxNTc5MTIsIDE1NzkxNCwgMTU3OTE2LCAxNTc5MjAsIDE1NzkyNCwgMTU3OTI2LCAxNTc5MzAsIAorICAgIDE1NzkzNSwgMTU3OTQwLCAxNTc5NDYsIDE1Nzk0OCwgMTU3OTUyLCAxNTc5NTYsIDE1Nzk2MiwgMTU3OTY4LCAxNTc5NzIsIAorICAgIDE1Nzk3NCwgMTU3OTc2LCAxNTc5ODAsIDE1Nzk4MiwgMTU3OTg2LCAxNTc5OTAsIDE1Nzk5NCwgMTU3OTk2LCAxNTc5OTgsIAorICAgIDE1ODAwNSwgMTU4MDA5LCAxNTgwMTIsIDE1ODAxNiwgMTU4MDIwLCAxNTgwMjQsIDE1ODAyNiwgMTU4MDMwLCAxNTgwMzIsIAorICAgIDE1ODAzNCwgMTU4MDM4LCAxNTgwNDAsIDE1ODA0NCwgMTU4MDQ4LCAxNTgwNTQsIDE1ODA1OCwgMTU4MDYyLCAxNTgwNjYsIAorICAgIDE1ODA2OCwgMTU4MDcxLCAxNTgwNzUsIDE1ODA4MSwgMTU4MDkwLCAxNTgwOTksIDE1ODEwNywgMTU4MTE1LCAxNTgxMTcsIAorICAgIDE1ODEyMSwgMTU4MTIzLCAxNTgxMjcsIDE1ODEzOCwgMTU4MTQyLCAxNTgxNDgsIDE1ODE1NCwgMTU4MTU5LCAxNTgxNjEsIAorICAgIDE1ODE2NiwgMTU4MTcwLCAxNTgxNzIsIDE1ODE3NCwgMTU4MTc2LCAxNTgxODAsIDE1ODE4NCwgMTU4MTg4LCAxNTgxOTMsIAorICAgIDE1ODIwMywgMTU4MjE4LCAxNTgyMjgsIDE1ODIzOCwgMTU4MjQyLCAxNTgyNDYsIDE1ODI1MiwgMTU4MjU0LCAxNTgyNjIsIAorICAgIDE1ODI3MCwgMTU4MjcyLCAxNTgyNzYsIDE1ODI4MiwgMTU4Mjg4LCAxNTgyOTUsIDE1ODMwMiwgMTU4MzA0LCAxNTgzMDYsIAorICAgIDE1ODMwOSwgMTU4MzExLCAxNTgzMTcsIDE1ODMxOSwgMTU4MzIyLCAxNTgzMjYsIDE1ODMzMiwgMTU4MzM4LCAxNTgzNDksIAorICAgIDE1ODM1NSwgMTU4MzYxLCAxNTgzNjksIDE1ODM3MywgMTU4MzgxLCAxNTgzODksIDE1ODM5NSwgMTU4NDAxLCAxNTg0MDgsIAorICAgIDE1ODQxMCwgMTU4NDE0LCAxNTg0MTYsIDE1ODQxOCwgMTU4NDIzLCAxNTg0MjUsIDE1ODQyNywgMTU4NDI5LCAxNTg0MzEsIAorICAgIDE1ODQzNSwgMTU4NDQ1LCAxNTg0NTEsIDE1ODQ1NSwgMTU4NDU5LCAxNTg0NjMsIDE1ODQ2OSwgMTU4NDc1LCAxNTg0ODEsIAorICAgIDE1ODQ4NywgMTU4NDkyLCAxNTg0OTcsIDE1ODUwMywgMTU4NTA5LCAxNTg1MTYsIDE1ODUyMywgMTU4NTMxLCAxNTg1MzksIAorICAgIDE1ODU0NCwgMTU4NTUyLCAxNTg1NTYsIDE1ODU2NSwgMTU4NTc0LCAxNTg1ODAsIDE1ODU4NCwgMTU4NTg4LCAxNTg1OTIsIAorICAgIDE1ODU5NSwgMTU4NjAwLCAxNTg2MDIsIDE1ODYwNCwgMTU4NjA2LCAxNTg2MTMsIDE1ODYxOCwgMTU4NjI1LCAxNTg2MzIsIAorICAgIDE1ODYzOSwgMTU4NjQ3LCAxNTg2NTUsIDE1ODY2MywgMTU4NjcxLCAxNTg2NzksIDE1ODY4NywgMTU4Njk1LCAxNTg3MDMsIAorICAgIDE1ODcxMSwgMTU4NzE3LCAxNTg3MjMsIDE1ODcyOSwgMTU4NzM1LCAxNTg3NDEsIDE1ODc0NywgMTU4NzUzLCAxNTg3NTksIAorICAgIDE1ODc2NSwgMTU4NzcxLCAxNTg3NzcsIDE1ODc4MywgMTU4Nzg2LCAxNTg3OTUsIDE1ODgwNCwgMTU4ODA2LCAxNTg4MTMsIAorICAgIDE1ODgxNywgMTU4ODE5LCAxNTg4MjEsIDE1ODgyNSwgMTU4ODMxLCAxNTg4MzUsIDE1ODgzNywgMTU4ODQ3LCAxNTg4NTMsIAorICAgIDE1ODg1NywgMTU4ODU5LCAxNTg4NjMsIDE1ODg2NSwgMTU4ODY5LCAxNTg4NzYsIDE1ODg4MywgMTU4ODkwLCAxNTg4OTUsIAorICAgIDE1ODkwMCwgMTU4OTA5LCAxNTg5MTUsIDE1ODkyMCwgMTU4OTI0LCAxNTg5MjksIDE1ODkzMywgMTU4OTQwLCAxNTg5NDQsIAorICAgIDE1ODk0NywgMTU4OTUyLCAxNTg5NTksIDE1ODk2NiwgMTU4OTcxLCAxNTg5NzYsIDE1ODk4MSwgMTU4OTg4LCAxNTg5OTcsIAorICAgIDE1OTAwOCwgMTU5MDE0LCAxNTkwMjAsIDE1OTAyNiwgMTU5MDM2LCAxNTkwNTEsIDE1OTA2MCwgMTU5MDY4LCAxNTkwNzYsIAorICAgIDE1OTA4NCwgMTU5MDkyLCAxNTkxMDAsIDE1OTEwOCwgMTU5MTE2LCAxNTkxMjQsIDE1OTEzMiwgMTU5MTQwLCAxNTkxNDgsIAorICAgIDE1OTE1NiwgMTU5MTU5LCAxNTkxNjMsIDE1OTE2OCwgMTU5MTczLCAxNTkxNzUsIDE1OTE3OSwgMTU5MTg4LCAxNTkxOTcsIAorICAgIDE1OTIwNSwgMTU5MjA5LCAxNTkyMTMsIDE1OTIxOCwgMTU5MjIzLCAxNTkyMjgsIDE1OTIzMCwgMTU5MjM1LCAxNTkyMzksIAorICAgIDE1OTI0MSwgMTU5MjQ1LCAxNTkyNDksIDE1OTI1NSwgMTU5MjYwLCAxNTkyNjgsIDE1OTI3MywgMTU5Mjc4LCAxNTkyODMsIAorICAgIDE1OTI5MCwgMTU5MjkzLCAxNTkyOTUsIDE1OTI5OCwgMTU5MzAzLCAxNTkzMDksIDE1OTMxMywgMTU5MzE3LCAxNTkzMjMsIAorICAgIDE1OTMyOSwgMTU5MzMxLCAxNTkzMzUsIDE1OTMzOSwgMTU5MzQzLCAxNTkzNDcsIDE1OTM1MSwgMTU5MzUzLCAxNTkzNTUsIAorICAgIDE1OTM1NywgMTU5MzU5LCAxNTkzNjUsIDE1OTM3MSwgMTU5Mzc1LCAxNTkzNzcsIDE1OTM3OSwgMTU5MzgxLCAxNTkzOTAsIAorICAgIDE1OTM5NCwgMTU5NDAxLCAxNTk0MDgsIDE1OTQxMCwgMTU5NDEzLCAxNTk0MTcsIDE1OTQyMywgMTU5NDI3LCAxNTk0MzEsIAorICAgIDE1OTQzMywgMTU5NDQxLCAxNTk0NDUsIDE1OTQ0OSwgMTU5NDU0LCAxNTk0NTksIDE1OTQ2NCwgMTU5NDY5LCAxNTk0NzQsIAorICAgIDE1OTQ3OSwgMTU5NDg0LCAxNTk0ODksIDE1OTQ5NCwgMTU5NDk5LCAxNTk1MDMsIDE1OTUwOSwgMTU5NTEzLCAxNTk1MTksIAorICAgIDE1OTUyNCwgMTU5NTMxLCAxNTk1MzcsIDE1OTU0NSwgMTU5NTQ5LCAxNTk1NTYsIDE1OTU2MCwgMTU5NTY0LCAxNTk1NjgsIAorICAgIDE1OTU3MywgMTU5NTc4LCAxNTk1ODAsIDE1OTU4NCwgMTU5NTkzLCAxNTk2MDEsIDE1OTYwOSwgMTU5NjIyLCAxNTk2MzUsIAorICAgIDE1OTY0OCwgMTU5NjU1LCAxNTk2NjIsIDE1OTY2NiwgMTU5Njc1LCAxNTk2ODMsIDE1OTY4NywgMTU5Njk2LCAxNTk3MDMsIAorICAgIDE1OTcwNywgMTU5NzExLCAxNTk3MTUsIDE1OTcxOSwgMTU5NzI2LCAxNTk3MzAsIDE1OTczNCwgMTU5NzM4LCAxNTk3NDIsIAorICAgIDE1OTc0OSwgMTU5NzU4LCAxNTk3NjcsIDE1OTc3NCwgMTU5Nzg2LCAxNTk3OTgsIDE1OTgwMiwgMTU5ODA2LCAxNTk4MTAsIAorICAgIDE1OTgxNCwgMTU5ODE4LCAxNTk4MjIsIDE1OTgzMCwgMTU5ODM4LCAxNTk4NDYsIDE1OTg1MCwgMTU5ODU0LCAxNTk4NTgsIAorICAgIDE1OTg2MiwgMTU5ODY2LCAxNTk4NzAsIDE1OTg3NiwgMTU5ODgyLCAxNTk4ODYsIDE1OTg5NywgMTU5OTA1LCAxNTk5MDksIAorICAgIDE1OTkxMywgMTU5OTE3LCAxNTk5MjEsIDE1OTkyNywgMTU5OTM0LCAxNTk5NDUsIDE1OTk1NSwgMTU5OTY1LCAxNTk5NzYsIAorICAgIDE1OTk4NSwgMTU5OTk2LCAxNjAwMDIsIDE2MDAwOCwgMTYwMDE0LCAxNjAwMjAsIDE2MDAyNiwgMTYwMDMwLCAxNjAwMzcsIAorICAgIDE2MDA0NiwgMTYwMDUzLCAxNjAwNTksIDE2MDA2MywgMTYwMDY3LCAxNjAwNzEsIDE2MDA4MCwgMTYwMDkyLCAxNjAwOTYsIAorICAgIDE2MDEwMywgMTYwMTEwLCAxNjAxMTcsIDE2MDEyNSwgMTYwMTMyLCAxNjAxNDAsIDE2MDE0OSwgMTYwMTU5LCAxNjAxNjgsIAorICAgIDE2MDE3OCwgMTYwMTg3LCAxNjAxOTcsIDE2MDIwNiwgMTYwMjE2LCAxNjAyMjYsIDE2MDIzNywgMTYwMjQ3LCAxNjAyNTgsIAorICAgIDE2MDI2NSwgMTYwMjczLCAxNjAyODAsIDE2MDI4OCwgMTYwMjk2LCAxNjAzMDUsIDE2MDMxMywgMTYwMzIyLCAxNjAzMjksIAorICAgIDE2MDM0MSwgMTYwMzQ4LCAxNjAzNjAsIDE2MDM2MywgMTYwMzY2LCAxNjAzNjksIDE2MDM3MiwgMTYwMzc4LCAxNjAzODUsIAorICAgIDE2MDM5MSwgMTYwMzk4LCAxNjA0MDMsIDE2MDQwOSwgMTYwNDIxLCAxNjA0MzEsIDE2MDQ0MiwgMTYwNDQ3LCAxNjA0NTIsIAorICAgIDE2MDQ1OCwgMTYwNDYzLCAxNjA0NzAsIDE2MDQ3NCwgMTYwNDgwLCAxNjA0ODIsIDE2MDQ4NCwgMTYwNDg4LCAxNjA0OTIsIAorICAgIDE2MDQ5NiwgMTYwNTA1LCAxNjA1MDcsIDE2MDUwOSwgMTYwNTEyLCAxNjA1MTQsIDE2MDUxNiwgMTYwNTIwLCAxNjA1MjIsIAorICAgIDE2MDUyNiwgMTYwNTI4LCAxNjA1MzIsIDE2MDUzNCwgMTYwNTM2LCAxNjA1NDAsIDE2MDU0NCwgMTYwNTUwLCAxNjA1NTIsIAorICAgIDE2MDU1NiwgMTYwNTU4LCAxNjA1NjIsIDE2MDU2NiwgMTYwNTcwLCAxNjA1NzQsIDE2MDU3NiwgMTYwNTc4LCAxNjA1ODIsIAorICAgIDE2MDU4NiwgMTYwNTkwLCAxNjA1OTQsIDE2MDU5NiwgMTYwNTk4LCAxNjA2MDAsIDE2MDYwNiwgMTYwNjExLCAxNjA2MTQsIAorICAgIDE2MDYyMiwgMTYwNjMwLCAxNjA2MzIsIDE2MDYzNywgMTYwNjQwLCAxNjA2NDUsIDE2MDY1NiwgMTYwNjYzLCAxNjA2NjgsIAorICAgIDE2MDY3MywgMTYwNjc1LCAxNjA2NzksIDE2MDY4MSwgMTYwNjg1LCAxNjA2ODcsIDE2MDY5MSwgMTYwNjk1LCAxNjA2OTgsIAorICAgIDE2MDcwMSwgMTYwNzAzLCAxNjA3MDYsIDE2MDcwOCwgMTYwNzEyLCAxNjA3MTQsIDE2MDcxNiwgMTYwNzE4LCAxNjA3MjIsIAorICAgIDE2MDcyNCwgMTYwNzI4LCAxNjA3MzEsIDE2MDczOCwgMTYwNzQxLCAxNjA3NDYsIDE2MDc0OSwgMTYwNzUyLCAxNjA3NTcsIAorICAgIDE2MDc2MSwgMTYwNzY1LCAxNjA3NjksIDE2MDc3MSwgMTYwNzc2LCAxNjA3NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE2MDc4MywgMTYwNzg4LCAxNjA3OTAsIDE2MDc5NCwgMTYwNzk2LCAxNjA4MDAsIDE2MDgwNCwgCisgICAgMTYwODEwLCAxNjA4MTQsIDE2MDgxOSwgMTYwODIyLCAxNjA4MjYsIDE2MDgzMCwgMCwgMCwgMCwgMTYwODM0LCAxNjA4MzYsIAorICAgIDE2MDg0MiwgMTYwODQ2LCAxNjA4NTAsIDE2MDg1MiwgMTYwODU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNjA4NTgsIDE2MDg2MywgMTYwODY4LCAxNjA4NzMsIDE2MDg3OCwgMTYwODgzLCAxNjA4ODgsIDE2MDg5NSwgMTYwOTAyLCAKKyAgICAxNjA5MDksIDE2MDkxNiwgMTYwOTIxLCAxNjA5MjYsIDE2MDkzMSwgMTYwOTM2LCAxNjA5NDMsIDE2MDk0OSwgMTYwOTU2LCAKKyAgICAxNjA5NjMsIDE2MDk3MCwgMTYwOTc1LCAxNjA5ODAsIDE2MDk4NSwgMTYwOTkwLCAxNjA5OTUsIDE2MTAwMiwgMTYxMDA5LCAKKyAgICAxNjEwMTQsIDE2MTAxOSwgMTYxMDI2LCAxNjEwMzMsIDE2MTA0MSwgMTYxMDQ5LCAxNjEwNTYsIDE2MTA2MywgMTYxMDcxLCAKKyAgICAxNjEwNzksIDE2MTA4NywgMTYxMDk0LCAxNjExMDQsIDE2MTExNSwgMTYxMTIwLCAxNjExMjcsIDE2MTEzNCwgMTYxMTQxLCAKKyAgICAxNjExNDksIDE2MTE1NywgMTYxMTY4LCAxNjExNzYsIDE2MTE4NCwgMTYxMTkyLCAxNjExOTcsIDE2MTIwMiwgMTYxMjA3LCAKKyAgICAxNjEyMTIsIDE2MTIxNywgMTYxMjIyLCAxNjEyMjcsIDE2MTIzMiwgMTYxMjM3LCAxNjEyNDIsIDE2MTI0NywgMTYxMjUyLCAKKyAgICAxNjEyNTksIDE2MTI2NCwgMTYxMjY5LCAxNjEyNzYsIDE2MTI4MSwgMTYxMjg2LCAxNjEyOTEsIDE2MTI5NiwgMTYxMzAxLCAKKyAgICAxNjEzMDYsIDE2MTMxMSwgMTYxMzE2LCAxNjEzMjEsIDE2MTMyNiwgMTYxMzMxLCAxNjEzMzYsIDE2MTM0MywgMTYxMzUxLCAKKyAgICAxNjEzNTYsIDE2MTM2MSwgMTYxMzY4LCAxNjEzNzMsIDE2MTM3OCwgMTYxMzgzLCAxNjEzOTAsIDE2MTM5NSwgMTYxNDAyLCAKKyAgICAxNjE0MDcsIDE2MTQxNCwgMTYxNDE5LCAxNjE0MjgsIDE2MTQzNywgMTYxNDQyLCAxNjE0NDcsIDE2MTQ1MiwgMTYxNDU3LCAKKyAgICAxNjE0NjIsIDE2MTQ2NywgMTYxNDcyLCAxNjE0NzcsIDE2MTQ4MiwgMTYxNDg3LCAxNjE0OTIsIDE2MTQ5NywgMTYxNTAyLCAKKyAgICAxNjE1MTAsIDE2MTUxOCwgMTYxNTIzLCAxNjE1MjgsIDE2MTUzMywgMTYxNTM4LCAxNjE1NDMsIDE2MTU0OSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxNTU1LCAxNjE1NjMsIDE2MTU3MSwgMTYxNTc5LCAxNjE1ODcsIAorICAgIDE2MTU5MywgMTYxNTk5LCAxNjE2MDMsIDE2MTYwNywgMTYxNjEzLCAxNjE2MTksIDE2MTYyOCwgMTYxNjMyLCAxNjE2MzcsIAorICAgIDE2MTY0MywgMTYxNjQ3LCAxNjE2NTIsIDE2MTY1NiwgMTYxNjYwLCAxNjE2NjYsIDE2MTY3MiwgMTYxNjgyLCAxNjE2OTEsIAorICAgIDE2MTY5NCwgMTYxNjk5LCAxNjE3MDUsIDE2MTcxMSwgMTYxNzIyLCAxNjE3MzIsIDE2MTczNiwgMTYxNzQxLCAxNjE3NDcsIAorICAgIDE2MTc1MywgMTYxNzYyLCAxNjE3NjcsIDE2MTc3MSwgMTYxNzc2LCAxNjE3ODAsIDE2MTc4NiwgMTYxNzkyLCAxNjE3OTgsIAorICAgIDE2MTgwMiwgMTYxODA1LCAxNjE4MDksIDE2MTgxMiwgMTYxODE1LCAxNjE4MjAsIDE2MTgyNSwgMTYxODMyLCAxNjE4NDAsIAorICAgIDE2MTg0NywgMTYxODU0LCAxNjE4NjMsIDE2MTg3MiwgMTYxODc5LCAxNjE4ODcsIDE2MTg5NCwgMTYxOTAxLCAxNjE5MTAsIAorICAgIDE2MTkxOSwgMTYxOTI2LCAxNjE5MzQsIDE2MTk0MSwgMTYxOTQ4LCAxNjE5NTcsIDE2MTk2NCwgMTYxOTcyLCAxNjE5NzgsIAorICAgIDE2MTk4NywgMTYxOTk1LCAxNjIwMDQsIDE2MjAxMSwgMTYyMDIxLCAxNjIwMzIsIDE2MjA0MCwgMTYyMDQ4LCAxNjIwNTcsIAorICAgIDE2MjA2NSwgMTYyMDczLCAxNjIwODIsIDE2MjA5MCwgMTYyMTAwLCAxNjIxMDksIDE2MjExNywgMTYyMTI1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIxMzQsIDE2MjE0MiwgMTYyMTUwLCAKKyAgICAxNjIxNTgsIDE2MjE2NiwgMTYyMTc1LCAxNjIxODQsIDE2MjE5MywgMTYyMjAyLCAxNjIyMTEsIDE2MjIyMCwgMTYyMjI5LCAKKyAgICAwLCAwLCAwLCAwLCAxNjIyMzgsIDE2MjI0NiwgMTYyMjU0LCAxNjIyNjIsIDE2MjI3MCwgMTYyMjc3LCAxNjIyODQsIAorICAgIDE2MjI5MSwgMTYyMjk4LCAxNjIzMDYsIDE2MjMxNCwgMTYyMzIyLCAxNjIzMzAsIDE2MjM0MCwgMTYyMzUwLCAxNjIzNjAsIAorICAgIDE2MjM3MCwgMTYyMzc5LCAxNjIzODgsIDE2MjM5NywgMTYyNDA2LCAxNjI0MTUsIDE2MjQyNCwgMTYyNDMzLCAxNjI0NDIsIAorICAgIDE2MjQ1MCwgMTYyNDU4LCAxNjI0NjYsIDE2MjQ3NCwgMTYyNDgyLCAxNjI0OTAsIDE2MjQ5OCwgMTYyNTA2LCAxNjI1MTYsIAorICAgIDE2MjUyNiwgMTYyNTM2LCAxNjI1NDYsIDE2MjU1MCwgMTYyNTU0LCAxNjI1NTgsIDE2MjU2MiwgMTYyNTY1LCAxNjI1NjgsIAorICAgIDE2MjU3MSwgMTYyNTc0LCAxNjI1NzgsIDE2MjU4MiwgMTYyNTg2LCAxNjI1OTAsIDE2MjU5NSwgMTYyNjAwLCAxNjI2MDUsIAorICAgIDE2MjYxMCwgMTYyNjEzLCAxNjI2MTYsIDE2MjYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyNjIyLCAxNjI2MjUsIAorICAgIDE2MjYyOCwgMTYyNjMxLCAxNjI2MzQsIDE2MjYzOSwgMTYyNjQ0LCAxNjI2NTAsIDE2MjY1NiwgMTYyNjYwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjI2NjQsIDE2MjY3MCwgMTYyNjc2LCAxNjI2ODIsIDE2MjY4OCwgMTYyNjk2LCAxNjI3MDQsIDE2MjcxMywgCisgICAgMTYyNzIyLCAxNjI3MjcsIDE2MjczMiwgMTYyNzM3LCAxNjI3NDIsIDE2Mjc0OSwgMTYyNzU2LCAxNjI3NjQsIDE2Mjc3MiwgCisgICAgMTYyNzc5LCAxNjI3ODYsIDE2Mjc5MywgMTYyODAwLCAxNjI4MDksIDE2MjgxOCwgMTYyODI4LCAxNjI4MzgsIDE2Mjg0NCwgCisgICAgMTYyODUwLCAxNjI4NTYsIDE2Mjg2MiwgMTYyODcwLCAxNjI4NzgsIDE2Mjg4NywgMTYyODk2LCAxNjI5MDQsIDE2MjkxMiwgCisgICAgMTYyOTIwLCAxNjI5MjgsIDE2MjkzOCwgMTYyOTQ4LCAxNjI5NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2Mjk3MCwgCisgICAgMTYyOTc1LCAxNjI5ODAsIDE2Mjk4NSwgMTYyOTkwLCAxNjI5OTksIDE2MzAwOCwgMTYzMDE3LCAxNjMwMjYsIDE2MzAzMywgCisgICAgMTYzMDQwLCAxNjMwNDcsIDE2MzA1NCwgMTYzMDYxLCAxNjMwNzAsIDE2MzA3OSwgMTYzMDg4LCAxNjMwOTMsIDE2MzEwMCwgCisgICAgMTYzMTA3LCAxNjMxMTQsIDE2MzExOSwgMTYzMTI0LCAxNjMxMjksIDE2MzEzNCwgMTYzMTQxLCAxNjMxNDgsIDE2MzE1NSwgCisgICAgMTYzMTYyLCAxNjMxNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYxMCwgMTU3NjEyLCAKLSAgICAxNTc2MTYsIDE1NzYxOCwgMTU3NjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MjQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzE3OCwgMTYzMTgyLCAxNjMxODYsIDE2MzE5MSwgMTYzMTk1LCAxNjMxOTksIAorICAgIDE2MzIwNCwgMTYzMjA4LCAxNjMyMTIsIDE2MzIxOCwgMTYzMjI0LCAxNjMyMzEsIDE2MzIzNSwgMTYzMjM5LCAxNjMyNDEsIAorICAgIDAsIDE2MzI1MSwgMTYzMjU4LCAxNjMyNjIsIDE2MzI2NiwgMTYzMjc2LCAxNjMyODAsIDE2MzI4NCwgMTYzMjg4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNjMyOTIsIDAsIDAsIDE2MzI5NiwgMTYzMjk4LCAxNjMzMDAsIDE2MzMwNiwgMTYzMzEwLCAKKyAgICAxNjMzMTIsIDE2MzMxOCwgMTYzMzIwLCAxNjMzMjIsIDE2MzMyNiwgMTYzMzI4LCAxNjMzMzIsIDAsIDE2MzMzNCwgCisgICAgMTYzMzM4LCAxNjMzNDMsIDE2MzM0NywgMTYzMzUxLCAxNjMzNTMsIDE2MzM1NywgMTYzMzU5LCAxNjMzNjUsIDE2MzM3MSwgCisgICAgMTYzMzc3LCAxNjMzODEsIDAsIDAsIDAsIDAsIDE2MzM4NywgMTYzMzg5LCAxNjMzOTEsIDE2MzM5MywgMTYzMzk1LCAKKyAgICAxNjMzOTcsIDE2MzM5OSwgMTYzNDAzLCAxNjM0MDcsIDE2MzQxNCwgMTYzNDE4LCAxNjM0MjAsIDE2MzQyNSwgMTYzNDI3LCAKKyAgICAxNjM0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzQzMSwgMTYzNDMzLCAxNjM0MzcsIDE2MzQzOSwgMTYzNDQxLCAKKyAgICAxNjM0NDUsIDE2MzQ0NywgMTYzNDQ5LCAxNjM0NTEsIDE2MzQ1MywgMTYzNDU1LCAxNjM0NTksIDE2MzQ2MSwgMTYzNDYzLCAKKyAgICAxNjM0NjUsIDE2MzQ2NywgMTYzNDY5LCAxNjM0NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzQ3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjI4LCAxNTc2MzIsIDE1NzYzNiwgMTU3NjQwLCAKLSAgICAxNTc2NDQsIDE1NzY0OCwgMTU3NjUyLCAxNTc2NTYsIDE1NzY2MCwgMTU3NjY0LCAxNTc2NjgsIDE1NzY3MiwgMTU3Njc2LCAKLSAgICAxNTc2ODAsIDE1NzY4NCwgMTU3Njg4LCAxNTc2OTIsIDE1NzY5NiwgMTU3NzAwLCAxNTc3MDQsIDE1NzcwOCwgMTU3NzEyLCAKLSAgICAxNTc3MTYsIDE1NzcyMCwgMTU3NzI0LCAxNTc3MjgsIDE1NzczMiwgMTU3NzM2LCAxNTc3NDAsIDE1Nzc0NCwgMTU3NzQ4LCAKLSAgICAxNTc3NTIsIDE1Nzc1NiwgMTU3NzYwLCAxNTc3NjQsIDE1Nzc2OCwgMTU3NzcyLCAxNTc3NzYsIDE1Nzc4MCwgMTU3Nzg0LCAKLSAgICAxNTc3ODgsIDE1Nzc5MiwgMTU3Nzk2LCAxNTc4MDAsIDE1NzgwNCwgMTU3ODA4LCAxNTc4MTIsIDE1NzgxNiwgMTU3ODIwLCAKLSAgICAxNTc4MjQsIDE1NzgyOCwgMTU3ODMyLCAxNTc4MzYsIDE1Nzg0MCwgMTU3ODQ0LCAxNTc4NDgsIDE1Nzg1MiwgMTU3ODU2LCAKLSAgICAxNTc4NjAsIDE1Nzg2NCwgMTU3ODY4LCAxNTc4NzIsIDE1Nzg3NiwgMTU3ODgwLCAxNTc4ODQsIDE1Nzg4OCwgMTU3ODkyLCAKLSAgICAxNTc4OTYsIDE1NzkwMCwgMTU3OTA0LCAxNTc5MDgsIDE1NzkxMiwgMTU3OTE2LCAxNTc5MjAsIDE1NzkyNCwgMTU3OTI4LCAKLSAgICAxNTc5MzIsIDE1NzkzNiwgMTU3OTQwLCAxNTc5NDQsIDE1Nzk0OCwgMTU3OTUyLCAxNTc5NTYsIDE1Nzk2MCwgMTU3OTY0LCAKLSAgICAxNTc5NjgsIDE1Nzk3MiwgMTU3OTc2LCAxNTc5ODAsIDE1Nzk4NCwgMTU3OTg4LCAxNTc5OTIsIDE1Nzk5NiwgMTU4MDAwLCAKLSAgICAxNTgwMDQsIDE1ODAwOCwgMTU4MDEyLCAxNTgwMTYsIDE1ODAyMCwgMTU4MDI0LCAxNTgwMjgsIDE1ODAzMiwgMTU4MDM2LCAKLSAgICAxNTgwNDAsIDE1ODA0NCwgMTU4MDQ4LCAxNTgwNTIsIDE1ODA1NiwgMTU4MDYwLCAxNTgwNjQsIDE1ODA2OCwgMTU4MDcyLCAKLSAgICAxNTgwNzYsIDE1ODA4MCwgMTU4MDg0LCAxNTgwODgsIDE1ODA5MiwgMTU4MDk2LCAxNTgxMDAsIDE1ODEwNCwgMTU4MTA4LCAKLSAgICAxNTgxMTIsIDE1ODExNiwgMTU4MTIwLCAxNTgxMjQsIDE1ODEyOCwgMTU4MTMyLCAxNTgxMzYsIDE1ODE0MCwgMTU4MTQ0LCAKLSAgICAxNTgxNDgsIDE1ODE1MiwgMTU4MTU2LCAxNTgxNjAsIDE1ODE2NCwgMTU4MTY4LCAxNTgxNzIsIDE1ODE3NiwgMTU4MTgwLCAKLSAgICAxNTgxODQsIDE1ODE4OCwgMTU4MTkyLCAxNTgxOTYsIDE1ODIwMCwgMTU4MjA0LCAxNTgyMDgsIDE1ODIxMiwgMTU4MjE2LCAKLSAgICAxNTgyMjAsIDE1ODIyNCwgMTU4MjI4LCAxNTgyMzIsIDE1ODIzNiwgMTU4MjQwLCAxNTgyNDQsIDE1ODI0OCwgMTU4MjUyLCAKLSAgICAxNTgyNTYsIDE1ODI2MCwgMTU4MjY0LCAxNTgyNjgsIDE1ODI3MiwgMTU4Mjc2LCAxNTgyODAsIDE1ODI4NCwgMTU4Mjg4LCAKLSAgICAxNTgyOTIsIDE1ODI5NiwgMTU4MzAwLCAxNTgzMDQsIDE1ODMwOCwgMTU4MzEyLCAxNTgzMTYsIDE1ODMyMCwgMTU4MzI0LCAKLSAgICAxNTgzMjgsIDE1ODMzMiwgMTU4MzM2LCAxNTgzNDAsIDE1ODM0NCwgMTU4MzQ4LCAxNTgzNTIsIDE1ODM1NiwgMTU4MzYwLCAKLSAgICAxNTgzNjQsIDE1ODM2OCwgMTU4MzcyLCAxNTgzNzYsIDE1ODM4MCwgMTU4Mzg0LCAxNTgzODgsIDE1ODM5MiwgMTU4Mzk2LCAKLSAgICAxNTg0MDAsIDE1ODQwNCwgMTU4NDA4LCAxNTg0MTIsIDE1ODQxNiwgMTU4NDIwLCAxNTg0MjQsIDE1ODQyOCwgMTU4NDMyLCAKLSAgICAxNTg0MzYsIDE1ODQ0MCwgMTU4NDQ0LCAxNTg0NDgsIDE1ODQ1MiwgMTU4NDU2LCAxNTg0NjAsIDE1ODQ2NCwgMTU4NDY4LCAKLSAgICAxNTg0NzIsIDE1ODQ3NiwgMTU4NDgwLCAxNTg0ODQsIDE1ODQ4OCwgMTU4NDkyLCAxNTg0OTYsIDE1ODUwMCwgMTU4NTA0LCAKLSAgICAxNTg1MDgsIDE1ODUxMiwgMTU4NTE2LCAxNTg1MjAsIDE1ODUyNCwgMTU4NTI4LCAxNTg1MzIsIDE1ODUzNiwgMTU4NTQwLCAKLSAgICAxNTg1NDQsIDE1ODU0OCwgMTU4NTUyLCAxNTg1NTYsIDE1ODU2MCwgMTU4NTY0LCAxNTg1NjgsIDE1ODU3MiwgMTU4NTc2LCAKLSAgICAxNTg1ODAsIDE1ODU4NCwgMTU4NTg4LCAxNTg1OTIsIDE1ODU5NiwgMTU4NjAwLCAxNTg2MDQsIDE1ODYwOCwgMTU4NjEyLCAKLSAgICAxNTg2MTYsIDE1ODYyMCwgMTU4NjI0LCAxNTg2MjgsIDE1ODYzMiwgMTU4NjM2LCAxNTg2NDAsIDE1ODY0NCwgMTU4NjQ4LCAKLSAgICAxNTg2NTIsIDE1ODY1NiwgMTU4NjYwLCAxNTg2NjQsIDE1ODY2OCwgMTU4NjcyLCAxNTg2NzYsIDE1ODY4MCwgMTU4Njg0LCAKLSAgICAxNTg2ODgsIDE1ODY5MiwgMTU4Njk2LCAxNTg3MDAsIDE1ODcwNCwgMTU4NzA4LCAxNTg3MTIsIDE1ODcxNiwgMTU4NzIwLCAKLSAgICAxNTg3MjQsIDE1ODcyOCwgMTU4NzMyLCAxNTg3MzYsIDE1ODc0MCwgMTU4NzQ0LCAxNTg3NDgsIDE1ODc1MiwgMTU4NzU2LCAKLSAgICAxNTg3NjAsIDE1ODc2NCwgMTU4NzY4LCAxNTg3NzIsIDE1ODc3NiwgMTU4NzgwLCAxNTg3ODQsIDE1ODc4OCwgMTU4NzkyLCAKLSAgICAxNTg3OTYsIDE1ODgwMCwgMTU4ODA0LCAxNTg4MDgsIDE1ODgxMiwgMTU4ODE2LCAxNTg4MjAsIDE1ODgyNCwgMTU4ODI4LCAKLSAgICAxNTg4MzIsIDE1ODgzNiwgMTU4ODQwLCAxNTg4NDQsIDE1ODg0OCwgMTU4ODUyLCAxNTg4NTYsIDE1ODg2MCwgMTU4ODY0LCAKLSAgICAxNTg4NjgsIDE1ODg3MiwgMTU4ODc2LCAxNTg4ODAsIDE1ODg4NCwgMTU4ODg4LCAxNTg4OTIsIDE1ODg5NiwgMTU4OTAwLCAKLSAgICAxNTg5MDQsIDE1ODkwOCwgMTU4OTEyLCAxNTg5MTYsIDE1ODkyMCwgMTU4OTI0LCAxNTg5MjgsIDE1ODkzMiwgMTU4OTM2LCAKLSAgICAxNTg5NDAsIDE1ODk0NCwgMTU4OTQ4LCAxNTg5NTIsIDE1ODk1NiwgMTU4OTYwLCAxNTg5NjQsIDE1ODk2OCwgMTU4OTcyLCAKLSAgICAxNTg5NzYsIDE1ODk4MCwgMTU4OTg0LCAxNTg5ODgsIDE1ODk5MiwgMTU4OTk2LCAxNTkwMDAsIDE1OTAwNCwgMTU5MDA4LCAKLSAgICAxNTkwMTIsIDE1OTAxNiwgMTU5MDIwLCAxNTkwMjQsIDE1OTAyOCwgMTU5MDMyLCAxNTkwMzYsIDE1OTA0MCwgMTU5MDQ0LCAKLSAgICAxNTkwNDgsIDE1OTA1MiwgMTU5MDU2LCAxNTkwNjAsIDE1OTA2NCwgMTU5MDY4LCAxNTkwNzIsIDE1OTA3NiwgMTU5MDgwLCAKLSAgICAxNTkwODQsIDE1OTA4OCwgMTU5MDkyLCAxNTkwOTYsIDE1OTEwMCwgMTU5MTA0LCAxNTkxMDgsIDE1OTExMiwgMTU5MTE2LCAKLSAgICAxNTkxMjAsIDE1OTEyNCwgMTU5MTI4LCAxNTkxMzIsIDE1OTEzNiwgMTU5MTQwLCAxNTkxNDQsIDE1OTE0OCwgMTU5MTUyLCAKLSAgICAxNTkxNTYsIDE1OTE2MCwgMTU5MTY0LCAxNTkxNjgsIDE1OTE3MiwgMTU5MTc2LCAxNTkxODAsIDE1OTE4NCwgMTU5MTg4LCAKLSAgICAxNTkxOTIsIDE1OTE5NiwgMTU5MjAwLCAxNTkyMDQsIDE1OTIwOCwgMTU5MjEyLCAxNTkyMTYsIDE1OTIyMCwgMTU5MjI0LCAKLSAgICAxNTkyMjgsIDE1OTIzMiwgMTU5MjM2LCAxNTkyNDAsIDE1OTI0NCwgMTU5MjQ4LCAxNTkyNTIsIDE1OTI1NiwgMTU5MjYwLCAKLSAgICAxNTkyNjQsIDE1OTI2OCwgMTU5MjcyLCAxNTkyNzYsIDE1OTI4MCwgMTU5Mjg0LCAxNTkyODgsIDE1OTI5MiwgMTU5Mjk2LCAKLSAgICAxNTkzMDAsIDE1OTMwNCwgMTU5MzA4LCAxNTkzMTIsIDE1OTMxNiwgMTU5MzIwLCAxNTkzMjQsIDE1OTMyOCwgMTU5MzMyLCAKLSAgICAxNTkzMzYsIDE1OTM0MCwgMTU5MzQ0LCAxNTkzNDgsIDE1OTM1MiwgMTU5MzU2LCAxNTkzNjAsIDE1OTM2NCwgMTU5MzY4LCAKLSAgICAxNTkzNzIsIDE1OTM3NiwgMTU5MzgwLCAxNTkzODQsIDE1OTM4OCwgMTU5MzkyLCAxNTkzOTYsIDE1OTQwMCwgMTU5NDA0LCAKLSAgICAxNTk0MDgsIDE1OTQxMiwgMTU5NDE2LCAxNTk0MjAsIDE1OTQyNCwgMTU5NDI4LCAxNTk0MzIsIDE1OTQzNiwgMTU5NDQwLCAKLSAgICAxNTk0NDQsIDE1OTQ0OCwgMTU5NDUyLCAxNTk0NTYsIDE1OTQ2MCwgMTU5NDY0LCAxNTk0NjgsIDE1OTQ3MiwgMTU5NDc2LCAKLSAgICAxNTk0ODAsIDE1OTQ4NCwgMTU5NDg4LCAxNTk0OTIsIDE1OTQ5NiwgMTU5NTAwLCAxNTk1MDQsIDE1OTUwOCwgMTU5NTEyLCAKLSAgICAxNTk1MTYsIDE1OTUyMCwgMTU5NTI0LCAxNTk1MjgsIDE1OTUzMiwgMTU5NTM2LCAxNTk1NDAsIDE1OTU0NCwgMTU5NTQ4LCAKLSAgICAxNTk1NTIsIDE1OTU1NiwgMTU5NTYwLCAxNTk1NjQsIDE1OTU2OCwgMTU5NTcyLCAxNTk1NzYsIDE1OTU4MCwgMTU5NTg0LCAKLSAgICAxNTk1ODgsIDE1OTU5MiwgMTU5NTk2LCAxNTk2MDAsIDE1OTYwNCwgMTU5NjA4LCAxNTk2MTIsIDE1OTYxNiwgMTU5NjIwLCAKLSAgICAxNTk2MjQsIDE1OTYyOCwgMTU5NjMyLCAxNTk2MzYsIDE1OTY0MCwgMTU5NjQ0LCAxNTk2NDgsIDE1OTY1MiwgMTU5NjU2LCAKLSAgICAxNTk2NjAsIDE1OTY2NCwgMTU5NjY4LCAxNTk2NzIsIDE1OTY3NiwgMTU5NjgwLCAxNTk2ODQsIDE1OTY4OCwgMTU5NjkyLCAKLSAgICAxNTk2OTYsIDE1OTcwMCwgMTU5NzA0LCAxNTk3MDgsIDE1OTcxMiwgMTU5NzE2LCAxNTk3MjAsIDE1OTcyNCwgMTU5NzI4LCAKLSAgICAxNTk3MzIsIDE1OTczNiwgMTU5NzQwLCAxNTk3NDQsIDE1OTc0OCwgMTU5NzUyLCAxNTk3NTYsIDE1OTc2MCwgMTU5NzY0LCAKLSAgICAxNTk3NjgsIDE1OTc3MiwgMTU5Nzc2LCAxNTk3ODAsIDE1OTc4NCwgMTU5Nzg4LCAxNTk3OTIsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE2MzQ3NywgMTYzNDgxLCAxNjM0ODUsIDE2MzQ4OSwgMTYzNDkzLCAxNjM0OTcsIDE2MzUwMSwgMTYzNTA1LCAKKyAgICAxNjM1MDksIDE2MzUxMywgMTYzNTE3LCAxNjM1MjEsIDE2MzUyNSwgMTYzNTI5LCAxNjM1MzMsIDE2MzUzNywgMTYzNTQxLCAKKyAgICAxNjM1NDUsIDE2MzU0OSwgMTYzNTUzLCAxNjM1NTcsIDE2MzU2MSwgMTYzNTY1LCAxNjM1NjksIDE2MzU3MywgMTYzNTc3LCAKKyAgICAxNjM1ODEsIDE2MzU4NSwgMTYzNTg5LCAxNjM1OTMsIDE2MzU5NywgMTYzNjAxLCAxNjM2MDUsIDE2MzYwOSwgMTYzNjEzLCAKKyAgICAxNjM2MTcsIDE2MzYyMSwgMTYzNjI1LCAxNjM2MjksIDE2MzYzMywgMTYzNjM3LCAxNjM2NDEsIDE2MzY0NSwgMTYzNjQ5LCAKKyAgICAxNjM2NTMsIDE2MzY1NywgMTYzNjYxLCAxNjM2NjUsIDE2MzY2OSwgMTYzNjczLCAxNjM2NzcsIDE2MzY4MSwgMTYzNjg1LCAKKyAgICAxNjM2ODksIDE2MzY5MywgMTYzNjk3LCAxNjM3MDEsIDE2MzcwNSwgMTYzNzA5LCAxNjM3MTMsIDE2MzcxNywgMTYzNzIxLCAKKyAgICAxNjM3MjUsIDE2MzcyOSwgMTYzNzMzLCAxNjM3MzcsIDE2Mzc0MSwgMTYzNzQ1LCAxNjM3NDksIDE2Mzc1MywgMTYzNzU3LCAKKyAgICAxNjM3NjEsIDE2Mzc2NSwgMTYzNzY5LCAxNjM3NzMsIDE2Mzc3NywgMTYzNzgxLCAxNjM3ODUsIDE2Mzc4OSwgMTYzNzkzLCAKKyAgICAxNjM3OTcsIDE2MzgwMSwgMTYzODA1LCAxNjM4MDksIDE2MzgxMywgMTYzODE3LCAxNjM4MjEsIDE2MzgyNSwgMTYzODI5LCAKKyAgICAxNjM4MzMsIDE2MzgzNywgMTYzODQxLCAxNjM4NDUsIDE2Mzg0OSwgMTYzODUzLCAxNjM4NTcsIDE2Mzg2MSwgMTYzODY1LCAKKyAgICAxNjM4NjksIDE2Mzg3MywgMTYzODc3LCAxNjM4ODEsIDE2Mzg4NSwgMTYzODg5LCAxNjM4OTMsIDE2Mzg5NywgMTYzOTAxLCAKKyAgICAxNjM5MDUsIDE2MzkwOSwgMTYzOTEzLCAxNjM5MTcsIDE2MzkyMSwgMTYzOTI1LCAxNjM5MjksIDE2MzkzMywgMTYzOTM3LCAKKyAgICAxNjM5NDEsIDE2Mzk0NSwgMTYzOTQ5LCAxNjM5NTMsIDE2Mzk1NywgMTYzOTYxLCAxNjM5NjUsIDE2Mzk2OSwgMTYzOTczLCAKKyAgICAxNjM5NzcsIDE2Mzk4MSwgMTYzOTg1LCAxNjM5ODksIDE2Mzk5MywgMTYzOTk3LCAxNjQwMDEsIDE2NDAwNSwgMTY0MDA5LCAKKyAgICAxNjQwMTMsIDE2NDAxNywgMTY0MDIxLCAxNjQwMjUsIDE2NDAyOSwgMTY0MDMzLCAxNjQwMzcsIDE2NDA0MSwgMTY0MDQ1LCAKKyAgICAxNjQwNDksIDE2NDA1MywgMTY0MDU3LCAxNjQwNjEsIDE2NDA2NSwgMTY0MDY5LCAxNjQwNzMsIDE2NDA3NywgMTY0MDgxLCAKKyAgICAxNjQwODUsIDE2NDA4OSwgMTY0MDkzLCAxNjQwOTcsIDE2NDEwMSwgMTY0MTA1LCAxNjQxMDksIDE2NDExMywgMTY0MTE3LCAKKyAgICAxNjQxMjEsIDE2NDEyNSwgMTY0MTI5LCAxNjQxMzMsIDE2NDEzNywgMTY0MTQxLCAxNjQxNDUsIDE2NDE0OSwgMTY0MTUzLCAKKyAgICAxNjQxNTcsIDE2NDE2MSwgMTY0MTY1LCAxNjQxNjksIDE2NDE3MywgMTY0MTc3LCAxNjQxODEsIDE2NDE4NSwgMTY0MTg5LCAKKyAgICAxNjQxOTMsIDE2NDE5NywgMTY0MjAxLCAxNjQyMDUsIDE2NDIwOSwgMTY0MjEzLCAxNjQyMTcsIDE2NDIyMSwgMTY0MjI1LCAKKyAgICAxNjQyMjksIDE2NDIzMywgMTY0MjM3LCAxNjQyNDEsIDE2NDI0NSwgMTY0MjQ5LCAxNjQyNTMsIDE2NDI1NywgMTY0MjYxLCAKKyAgICAxNjQyNjUsIDE2NDI2OSwgMTY0MjczLCAxNjQyNzcsIDE2NDI4MSwgMTY0Mjg1LCAxNjQyODksIDE2NDI5MywgMTY0Mjk3LCAKKyAgICAxNjQzMDEsIDE2NDMwNSwgMTY0MzA5LCAxNjQzMTMsIDE2NDMxNywgMTY0MzIxLCAxNjQzMjUsIDE2NDMyOSwgMTY0MzMzLCAKKyAgICAxNjQzMzcsIDE2NDM0MSwgMTY0MzQ1LCAxNjQzNDksIDE2NDM1MywgMTY0MzU3LCAxNjQzNjEsIDE2NDM2NSwgMTY0MzY5LCAKKyAgICAxNjQzNzMsIDE2NDM3NywgMTY0MzgxLCAxNjQzODUsIDE2NDM4OSwgMTY0MzkzLCAxNjQzOTcsIDE2NDQwMSwgMTY0NDA1LCAKKyAgICAxNjQ0MDksIDE2NDQxMywgMTY0NDE3LCAxNjQ0MjEsIDE2NDQyNSwgMTY0NDI5LCAxNjQ0MzMsIDE2NDQzNywgMTY0NDQxLCAKKyAgICAxNjQ0NDUsIDE2NDQ0OSwgMTY0NDUzLCAxNjQ0NTcsIDE2NDQ2MSwgMTY0NDY1LCAxNjQ0NjksIDE2NDQ3MywgMTY0NDc3LCAKKyAgICAxNjQ0ODEsIDE2NDQ4NSwgMTY0NDg5LCAxNjQ0OTMsIDE2NDQ5NywgMTY0NTAxLCAxNjQ1MDUsIDE2NDUwOSwgMTY0NTEzLCAKKyAgICAxNjQ1MTcsIDE2NDUyMSwgMTY0NTI1LCAxNjQ1MjksIDE2NDUzMywgMTY0NTM3LCAxNjQ1NDEsIDE2NDU0NSwgMTY0NTQ5LCAKKyAgICAxNjQ1NTMsIDE2NDU1NywgMTY0NTYxLCAxNjQ1NjUsIDE2NDU2OSwgMTY0NTczLCAxNjQ1NzcsIDE2NDU4MSwgMTY0NTg1LCAKKyAgICAxNjQ1ODksIDE2NDU5MywgMTY0NTk3LCAxNjQ2MDEsIDE2NDYwNSwgMTY0NjA5LCAxNjQ2MTMsIDE2NDYxNywgMTY0NjIxLCAKKyAgICAxNjQ2MjUsIDE2NDYyOSwgMTY0NjMzLCAxNjQ2MzcsIDE2NDY0MSwgMTY0NjQ1LCAxNjQ2NDksIDE2NDY1MywgMTY0NjU3LCAKKyAgICAxNjQ2NjEsIDE2NDY2NSwgMTY0NjY5LCAxNjQ2NzMsIDE2NDY3NywgMTY0NjgxLCAxNjQ2ODUsIDE2NDY4OSwgMTY0NjkzLCAKKyAgICAxNjQ2OTcsIDE2NDcwMSwgMTY0NzA1LCAxNjQ3MDksIDE2NDcxMywgMTY0NzE3LCAxNjQ3MjEsIDE2NDcyNSwgMTY0NzI5LCAKKyAgICAxNjQ3MzMsIDE2NDczNywgMTY0NzQxLCAxNjQ3NDUsIDE2NDc0OSwgMTY0NzUzLCAxNjQ3NTcsIDE2NDc2MSwgMTY0NzY1LCAKKyAgICAxNjQ3NjksIDE2NDc3MywgMTY0Nzc3LCAxNjQ3ODEsIDE2NDc4NSwgMTY0Nzg5LCAxNjQ3OTMsIDE2NDc5NywgMTY0ODAxLCAKKyAgICAxNjQ4MDUsIDE2NDgwOSwgMTY0ODEzLCAxNjQ4MTcsIDE2NDgyMSwgMTY0ODI1LCAxNjQ4MjksIDE2NDgzMywgMTY0ODM3LCAKKyAgICAxNjQ4NDEsIDE2NDg0NSwgMTY0ODQ5LCAxNjQ4NTMsIDE2NDg1NywgMTY0ODYxLCAxNjQ4NjUsIDE2NDg2OSwgMTY0ODczLCAKKyAgICAxNjQ4NzcsIDE2NDg4MSwgMTY0ODg1LCAxNjQ4ODksIDE2NDg5MywgMTY0ODk3LCAxNjQ5MDEsIDE2NDkwNSwgMTY0OTA5LCAKKyAgICAxNjQ5MTMsIDE2NDkxNywgMTY0OTIxLCAxNjQ5MjUsIDE2NDkyOSwgMTY0OTMzLCAxNjQ5MzcsIDE2NDk0MSwgMTY0OTQ1LCAKKyAgICAxNjQ5NDksIDE2NDk1MywgMTY0OTU3LCAxNjQ5NjEsIDE2NDk2NSwgMTY0OTY5LCAxNjQ5NzMsIDE2NDk3NywgMTY0OTgxLCAKKyAgICAxNjQ5ODUsIDE2NDk4OSwgMTY0OTkzLCAxNjQ5OTcsIDE2NTAwMSwgMTY1MDA1LCAxNjUwMDksIDE2NTAxMywgMTY1MDE3LCAKKyAgICAxNjUwMjEsIDE2NTAyNSwgMTY1MDI5LCAxNjUwMzMsIDE2NTAzNywgMTY1MDQxLCAxNjUwNDUsIDE2NTA0OSwgMTY1MDUzLCAKKyAgICAxNjUwNTcsIDE2NTA2MSwgMTY1MDY1LCAxNjUwNjksIDE2NTA3MywgMTY1MDc3LCAxNjUwODEsIDE2NTA4NSwgMTY1MDg5LCAKKyAgICAxNjUwOTMsIDE2NTA5NywgMTY1MTAxLCAxNjUxMDUsIDE2NTEwOSwgMTY1MTEzLCAxNjUxMTcsIDE2NTEyMSwgMTY1MTI1LCAKKyAgICAxNjUxMjksIDE2NTEzMywgMTY1MTM3LCAxNjUxNDEsIDE2NTE0NSwgMTY1MTQ5LCAxNjUxNTMsIDE2NTE1NywgMTY1MTYxLCAKKyAgICAxNjUxNjUsIDE2NTE2OSwgMTY1MTczLCAxNjUxNzcsIDE2NTE4MSwgMTY1MTg1LCAxNjUxODksIDE2NTE5MywgMTY1MTk3LCAKKyAgICAxNjUyMDEsIDE2NTIwNSwgMTY1MjA5LCAxNjUyMTMsIDE2NTIxNywgMTY1MjIxLCAxNjUyMjUsIDE2NTIyOSwgMTY1MjMzLCAKKyAgICAxNjUyMzcsIDE2NTI0MSwgMTY1MjQ1LCAxNjUyNDksIDE2NTI1MywgMTY1MjU3LCAxNjUyNjEsIDE2NTI2NSwgMTY1MjY5LCAKKyAgICAxNjUyNzMsIDE2NTI3NywgMTY1MjgxLCAxNjUyODUsIDE2NTI4OSwgMTY1MjkzLCAxNjUyOTcsIDE2NTMwMSwgMTY1MzA1LCAKKyAgICAxNjUzMDksIDE2NTMxMywgMTY1MzE3LCAxNjUzMjEsIDE2NTMyNSwgMTY1MzI5LCAxNjUzMzMsIDE2NTMzNywgMTY1MzQxLCAKKyAgICAxNjUzNDUsIDE2NTM0OSwgMTY1MzUzLCAxNjUzNTcsIDE2NTM2MSwgMTY1MzY1LCAxNjUzNjksIDE2NTM3MywgMTY1Mzc3LCAKKyAgICAxNjUzODEsIDE2NTM4NSwgMTY1Mzg5LCAxNjUzOTMsIDE2NTM5NywgMTY1NDAxLCAxNjU0MDUsIDE2NTQwOSwgMTY1NDEzLCAKKyAgICAxNjU0MTcsIDE2NTQyMSwgMTY1NDI1LCAxNjU0MjksIDE2NTQzMywgMTY1NDM3LCAxNjU0NDEsIDE2NTQ0NSwgMTY1NDQ5LCAKKyAgICAxNjU0NTMsIDE2NTQ1NywgMTY1NDYxLCAxNjU0NjUsIDE2NTQ2OSwgMTY1NDczLCAxNjU0NzcsIDE2NTQ4MSwgMTY1NDg1LCAKKyAgICAxNjU0ODksIDE2NTQ5MywgMTY1NDk3LCAxNjU1MDEsIDE2NTUwNSwgMTY1NTA5LCAxNjU1MTMsIDE2NTUxNywgMTY1NTIxLCAKKyAgICAxNjU1MjUsIDE2NTUyOSwgMTY1NTMzLCAxNjU1MzcsIDE2NTU0MSwgMTY1NTQ1LCAxNjU1NDksIDE2NTU1MywgMTY1NTU3LCAKKyAgICAxNjU1NjEsIDE2NTU2NSwgMTY1NTY5LCAxNjU1NzMsIDE2NTU3NywgMTY1NTgxLCAxNjU1ODUsIDE2NTU4OSwgMTY1NTkzLCAKKyAgICAxNjU1OTcsIDE2NTYwMSwgMTY1NjA1LCAxNjU2MDksIDE2NTYxMywgMTY1NjE3LCAxNjU2MjEsIDE2NTYyNSwgMTY1NjI5LCAKKyAgICAxNjU2MzMsIDE2NTYzNywgMTY1NjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTIwMDc4LDMxODYgKzIxMzUzLDMyNzkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNTk3OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1OTgwMCwgMTU5ODAzLCAxNTk4MDcsIDE1OTgxMSwgCi0gICAgMTU5ODE0LCAxNTk4MTgsIDE1OTgyMiwgMTU5ODI1LCAxNTk4MjgsIDE1OTgzMiwgMTU5ODM2LCAxNTk4MzksIDE1OTg0MiwgCi0gICAgMTU5ODQ1LCAxNTk4NDgsIDE1OTg1MywgMTU5ODU2LCAxNTk4NjAsIDE1OTg2MywgMTU5ODY2LCAxNTk4NjksIDE1OTg3MiwgCi0gICAgMTU5ODc1LCAxNTk4NzgsIDE1OTg4MiwgMTU5ODg1LCAxNTk4ODksIDE1OTg5MiwgMTU5ODk1LCAxNTk4OTksIDE1OTkwMywgCi0gICAgMTU5OTA3LCAxNTk5MTEsIDE1OTkxNiwgMTU5OTIxLCAxNTk5MjcsIDE1OTkzMywgMTU5OTM5LCAxNTk5NDQsIDE1OTk1MCwgCi0gICAgMTU5OTU2LCAxNTk5NjIsIDE1OTk2NywgMTU5OTczLCAxNTk5NzksIDE1OTk4NCwgMTU5OTkwLCAxNTk5OTYsIDE2MDAwMSwgCi0gICAgMTYwMDA3LCAxNjAwMTMsIDE2MDAxOCwgMTYwMDIzLCAxNjAwMjksIDE2MDAzNCwgMTYwMDQwLCAxNjAwNDYsIDE2MDA1MiwgCi0gICAgMTYwMDU4LCAxNjAwNjQsIDE2MDA2OCwgMTYwMDczLCAxNjAwNzcsIDE2MDA4MiwgMTYwMDg2LCAxNjAwOTEsIDE2MDA5NiwgCi0gICAgMTYwMTAyLCAxNjAxMDgsIDE2MDExNCwgMTYwMTE5LCAxNjAxMjUsIDE2MDEzMSwgMTYwMTM3LCAxNjAxNDIsIDE2MDE0OCwgCi0gICAgMTYwMTU0LCAxNjAxNTksIDE2MDE2NSwgMTYwMTcxLCAxNjAxNzYsIDE2MDE4MiwgMTYwMTg4LCAxNjAxOTMsIDE2MDE5OCwgCi0gICAgMTYwMjA0LCAxNjAyMDksIDE2MDIxNSwgMTYwMjIxLCAxNjAyMjcsIDE2MDIzMywgMTYwMjM5LCAxNjAyNDQsIDE2MDI0OCwgCi0gICAgMTYwMjUzLCAxNjAyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NTY0NSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMTY1NjQ5LCAxNjU2NTIsIDE2NTY1NiwgMTY1NjYwLCAxNjU2NjMsIDE2NTY2NywgMTY1NjcxLCAxNjU2NzQsIAorICAgIDE2NTY3NywgMTY1NjgxLCAxNjU2ODUsIDE2NTY4OCwgMTY1NjkxLCAxNjU2OTQsIDE2NTY5NywgMTY1NzAyLCAxNjU3MDUsIAorICAgIDE2NTcwOSwgMTY1NzEyLCAxNjU3MTUsIDE2NTcxOCwgMTY1NzIxLCAxNjU3MjQsIDE2NTcyNywgMTY1NzMxLCAxNjU3MzQsIAorICAgIDE2NTczOCwgMTY1NzQxLCAxNjU3NDQsIDE2NTc0OCwgMTY1NzUyLCAxNjU3NTYsIDE2NTc2MCwgMTY1NzY1LCAxNjU3NzAsIAorICAgIDE2NTc3NiwgMTY1NzgyLCAxNjU3ODgsIDE2NTc5MywgMTY1Nzk5LCAxNjU4MDUsIDE2NTgxMSwgMTY1ODE2LCAxNjU4MjIsIAorICAgIDE2NTgyOCwgMTY1ODMzLCAxNjU4MzksIDE2NTg0NSwgMTY1ODUwLCAxNjU4NTYsIDE2NTg2MiwgMTY1ODY3LCAxNjU4NzMsIAorICAgIDE2NTg3OSwgMTY1ODg0LCAxNjU4OTAsIDE2NTg5NiwgMTY1OTAyLCAxNjU5MDgsIDE2NTkxNCwgMTY1OTE4LCAxNjU5MjMsIAorICAgIDE2NTkyNywgMTY1OTMyLCAxNjU5MzYsIDE2NTk0MSwgMTY1OTQ2LCAxNjU5NTIsIDE2NTk1OCwgMTY1OTY0LCAxNjU5NjksIAorICAgIDE2NTk3NSwgMTY1OTgxLCAxNjU5ODcsIDE2NTk5MiwgMTY1OTk4LCAxNjYwMDQsIDE2NjAwOSwgMTY2MDE1LCAxNjYwMjEsIAorICAgIDE2NjAyNiwgMTY2MDMyLCAxNjYwMzgsIDE2NjA0MywgMTY2MDQ5LCAxNjYwNTUsIDE2NjA2MCwgMTY2MDY2LCAxNjYwNzIsIAorICAgIDE2NjA3OCwgMTY2MDg0LCAxNjYwOTAsIDE2NjA5NSwgMTY2MDk5LCAxNjYxMDQsIDE2NjEwNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwMjYwLCAxNjAyNjMsIDE2MDI2NiwgMTYwMjY5LCAKLSAgICAxNjAyNzIsIDE2MDI3NSwgMTYwMjc4LCAxNjAyODEsIDE2MDI4NCwgMTYwMjg3LCAxNjAyOTAsIDE2MDI5MywgMTYwMjk2LCAKLSAgICAxNjAyOTksIDE2MDMwMiwgMTYwMzA1LCAxNjAzMDgsIDE2MDMxMSwgMTYwMzE0LCAxNjAzMTcsIDE2MDMyMCwgMTYwMzIzLCAKLSAgICAxNjAzMjYsIDE2MDMyOSwgMTYwMzMyLCAxNjAzMzUsIDE2MDMzOCwgMTYwMzQxLCAxNjAzNDQsIDE2MDM0NywgMTYwMzUwLCAKLSAgICAxNjAzNTMsIDE2MDM1NiwgMTYwMzU5LCAxNjAzNjIsIDE2MDM2NSwgMTYwMzY4LCAxNjAzNzEsIDE2MDM3NCwgMTYwMzc3LCAKLSAgICAxNjAzODAsIDE2MDM4MywgMTYwMzg2LCAxNjAzODksIDE2MDM5MiwgMTYwMzk1LCAxNjAzOTgsIDE2MDQwMSwgMTYwNDA0LCAKLSAgICAxNjA0MDcsIDE2MDQxMCwgMTYwNDEzLCAxNjA0MTYsIDE2MDQxOSwgMTYwNDIyLCAxNjA0MjUsIDE2MDQyOCwgMTYwNDMxLCAKLSAgICAxNjA0MzQsIDE2MDQzNywgMTYwNDQwLCAxNjA0NDMsIDE2MDQ0NiwgMTYwNDQ5LCAxNjA0NTIsIDE2MDQ1NSwgMTYwNDU4LCAKLSAgICAxNjA0NjEsIDE2MDQ2NCwgMTYwNDY3LCAxNjA0NzAsIDE2MDQ3MywgMTYwNDc2LCAxNjA0NzksIDE2MDQ4MiwgMTYwNDg1LCAKLSAgICAxNjA0ODgsIDE2MDQ5MSwgMTYwNDk0LCAxNjA0OTcsIDE2MDUwMCwgMTYwNTAzLCAxNjA1MDYsIDE2MDUwOSwgMTYwNTEyLCAKLSAgICAxNjA1MTUsIDE2MDUxOCwgMTYwNTIxLCAxNjA1MjQsIDE2MDUyNywgMTYwNTMwLCAxNjA1MzMsIDE2MDUzNiwgMTYwNTM5LCAKLSAgICAxNjA1NDIsIDE2MDU0NSwgMTYwNTQ4LCAxNjA1NTEsIDE2MDU1NCwgMTYwNTU3LCAxNjA1NjAsIDE2MDU2MywgMTYwNTY2LCAKLSAgICAxNjA1NjksIDE2MDU3MiwgMTYwNTc1LCAxNjA1NzgsIDE2MDU4MSwgMTYwNTg0LCAxNjA1ODcsIDE2MDU5MCwgMTYwNTkzLCAKLSAgICAxNjA1OTYsIDE2MDU5OSwgMTYwNjAyLCAxNjA2MDUsIDE2MDYwOCwgMTYwNjExLCAxNjA2MTQsIDE2MDYxNywgMTYwNjIwLCAKLSAgICAxNjA2MjMsIDE2MDYyNiwgMTYwNjI5LCAxNjA2MzIsIDE2MDYzNSwgMTYwNjM4LCAxNjA2NDEsIDE2MDY0NCwgMTYwNjQ3LCAKLSAgICAxNjA2NTAsIDE2MDY1MywgMTYwNjU2LCAxNjA2NTksIDE2MDY2MiwgMTYwNjY1LCAxNjA2NjgsIDE2MDY3MSwgMTYwNjc0LCAKLSAgICAxNjA2NzcsIDE2MDY4MCwgMTYwNjgzLCAxNjA2ODYsIDE2MDY4OSwgMTYwNjkyLCAxNjA2OTUsIDE2MDY5OCwgMTYwNzAxLCAKLSAgICAxNjA3MDQsIDE2MDcwNywgMTYwNzEwLCAxNjA3MTMsIDE2MDcxNiwgMTYwNzE5LCAxNjA3MjIsIDE2MDcyNSwgMTYwNzI4LCAKLSAgICAxNjA3MzEsIDE2MDczNCwgMTYwNzM3LCAxNjA3NDAsIDE2MDc0MywgMTYwNzQ2LCAxNjA3NDksIDE2MDc1MiwgMTYwNzU1LCAKLSAgICAxNjA3NTgsIDE2MDc2MSwgMTYwNzY0LCAxNjA3NjcsIDE2MDc3MCwgMTYwNzczLCAxNjA3NzYsIDE2MDc3OSwgMTYwNzgyLCAKLSAgICAxNjA3ODUsIDE2MDc4OCwgMTYwNzkxLCAxNjA3OTQsIDE2MDc5NywgMTYwODAwLCAxNjA4MDMsIDE2MDgwNiwgMTYwODA5LCAKLSAgICAxNjA4MTIsIDE2MDgxNSwgMTYwODE4LCAxNjA4MjEsIDE2MDgyNCwgMTYwODI3LCAxNjA4MzAsIDE2MDgzMywgMTYwODM2LCAKLSAgICAxNjA4MzksIDE2MDg0MiwgMTYwODQ1LCAxNjA4NDgsIDE2MDg1MSwgMTYwODU0LCAxNjA4NTcsIDE2MDg2MCwgMTYwODYzLCAKLSAgICAxNjA4NjYsIDE2MDg2OSwgMTYwODcyLCAxNjA4NzUsIDE2MDg3OCwgMTYwODgxLCAxNjA4ODQsIDE2MDg4NywgMTYwODkwLCAKLSAgICAxNjA4OTMsIDE2MDg5NiwgMTYwODk5LCAxNjA5MDIsIDE2MDkwNSwgMTYwOTA4LCAxNjA5MTEsIDE2MDkxNCwgMTYwOTE3LCAKLSAgICAxNjA5MjAsIDE2MDkyMywgMTYwOTI2LCAxNjA5MjksIDE2MDkzMiwgMTYwOTM1LCAxNjA5MzgsIDE2MDk0MSwgMTYwOTQ0LCAKLSAgICAxNjA5NDcsIDE2MDk1MCwgMTYwOTUzLCAxNjA5NTYsIDE2MDk1OSwgMTYwOTYyLCAxNjA5NjUsIDE2MDk2OCwgMTYwOTcxLCAKLSAgICAxNjA5NzQsIDE2MDk3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwOTgwLCAKLSAgICAxNjA5ODIsIDE2MDk4NCwgMTYwOTg5LCAxNjA5OTEsIDE2MDk5NiwgMTYwOTk4LCAxNjEwMDMsIDE2MTAwNSwgMTYxMDEwLCAKLSAgICAxNjEwMTIsIDE2MTAxNCwgMTYxMDE2LCAxNjEwMTgsIDE2MTAyMCwgMTYxMDIyLCAxNjEwMjQsIDE2MTAyNiwgMTYxMDI4LCAKLSAgICAxNjEwMzEsIDE2MTAzNSwgMTYxMDM3LCAxNjEwMzksIDE2MTA0MywgMTYxMDQ3LCAxNjEwNTIsIDE2MTA1NCwgMTYxMDU2LCAKLSAgICAxNjEwNTgsIDE2MTA2MiwgMTYxMDY1LCAxNjEwNjcsIDE2MTA3MSwgMTYxMDczLCAxNjEwNzcsIDE2MTA3OSwgMTYxMDgzLCAKLSAgICAxNjEwODYsIDE2MTA4OCwgMTYxMDkyLCAxNjEwOTYsIDE2MTA5OCwgMTYxMTA0LCAxNjExMDYsIDE2MTExMSwgMTYxMTEzLCAKLSAgICAxNjExMTgsIDE2MTEyMCwgMTYxMTI1LCAxNjExMjcsIDE2MTEzMiwgMTYxMTM0LCAxNjExMzcsIDE2MTEzOSwgMTYxMTQzLCAKLSAgICAxNjExNDUsIDE2MTE1MiwgMTYxMTU0LCAxNjExNTYsIDE2MTE1OCwgMTYxMTYzLCAxNjExNjUsIDE2MTE2NywgMTYxMTY5LCAKLSAgICAxNjExNzEsIDE2MTE3MywgMTYxMTc4LCAxNjExODIsIDE2MTE4NCwgMTYxMTg5LCAxNjExOTMsIDE2MTE5NSwgMTYxMjAwLCAKLSAgICAxNjEyMDQsIDE2MTIwNiwgMTYxMjExLCAxNjEyMTUsIDE2MTIxNywgMTYxMjE5LCAxNjEyMjEsIDE2MTIyMywgMTYxMjI3LCAKLSAgICAxNjEyMjksIDE2MTIzNCwgMTYxMjM2LCAxNjEyNDIsIDE2MTI0NCwgMTYxMjUwLCAxNjEyNTIsIDE2MTI1NCwgMTYxMjU2LCAKLSAgICAxNjEyNjAsIDE2MTI2MiwgMTYxMjY5LCAxNjEyNzEsIDE2MTI3OCwgMTYxMjgwLCAxNjEyODUsIDE2MTI5MSwgMTYxMjkzLCAKLSAgICAxNjEyOTksIDE2MTMwNiwgMTYxMzA4LCAxNjEzMTQsIDE2MTMxOSwgMTYxMzIxLCAxNjEzMjcsIDE2MTMzMywgMTYxMzM1LCAKLSAgICAxNjEzNDEsIDE2MTM0NywgMTYxMzQ5LCAxNjEzNTUsIDE2MTM1OSwgMTYxMzYxLCAxNjEzNjYsIDE2MTM2OCwgMTYxMzcwLCAKLSAgICAxNjEzNzUsIDE2MTM3NywgMTYxMzc5LCAxNjEzODUsIDE2MTM4NywgMTYxMzkyLCAxNjEzOTYsIDE2MTM5OCwgMTYxNDAzLCAKLSAgICAxNjE0MDcsIDE2MTQwOSwgMTYxNDE1LCAxNjE0MTcsIDE2MTQyMSwgMTYxNDIzLCAxNjE0MjcsIDE2MTQyOSwgMTYxNDM2LCAKLSAgICAxNjE0NDMsIDE2MTQ0NSwgMTYxNDUyLCAxNjE0NTksIDE2MTQ2MSwgMTYxNDY2LCAxNjE0NjgsIDE2MTQ3NSwgMTYxNDc3LCAKLSAgICAxNjE0ODIsIDE2MTQ4NCwgMTYxNDkwLCAxNjE0OTIsIDE2MTQ5NiwgMTYxNDk4LCAxNjE1MDQsIDE2MTUwNiwgMTYxNTEwLCAKLSAgICAxNjE1MTIsIDE2MTUxOCwgMTYxNTIwLCAxNjE1MjIsIDE2MTUyNCwgMTYxNTI5LCAxNjE1MzQsIDE2MTUzNiwgMTYxNTM4LCAKLSAgICAxNjE1NDgsIDE2MTU1MiwgMTYxNTU5LCAxNjE1NjYsIDE2MTU3MSwgMTYxNTc2LCAxNjE1ODgsIDE2MTU5MCwgMTYxNTkyLCAKLSAgICAxNjE1OTQsIDE2MTU5NiwgMTYxNTk4LCAxNjE2MDAsIDE2MTYwMiwgMTYxNjA0LCAxNjE2MDYsIDE2MTYwOCwgMTYxNjEwLCAKLSAgICAxNjE2MTIsIDE2MTYxNCwgMTYxNjE2LCAxNjE2MTgsIDE2MTYyMCwgMTYxNjIyLCAxNjE2MjQsIDE2MTYyNiwgMTYxNjI4LCAKLSAgICAxNjE2MzAsIDE2MTYzNiwgMTYxNjQzLCAxNjE2NDgsIDE2MTY1NiwgMTYxNjY0LCAxNjE2NjksIDE2MTY4MCwgMTYxNjgyLCAKLSAgICAxNjE2ODQsIDE2MTY4NiwgMTYxNjg4LCAxNjE2OTAsIDE2MTY5MiwgMTYxNjk0LCAxNjE2OTYsIDE2MTY5OCwgMTYxNzAwLCAKLSAgICAxNjE3MDIsIDE2MTcwNCwgMTYxNzA2LCAxNjE3MDgsIDE2MTcxMCwgMTYxNzEyLCAxNjE3MTcsIDE2MTcxOSwgMTYxNzIxLCAKLSAgICAxNjE3MjcsIDE2MTczOSwgMTYxNzUwLCAxNjE3NTIsIDE2MTc1NCwgMTYxNzU2LCAxNjE3NTgsIDE2MTc2MCwgMTYxNzYyLCAKLSAgICAxNjE3NjQsIDE2MTc2NiwgMTYxNzY4LCAxNjE3NzAsIDE2MTc3MiwgMTYxNzc0LCAxNjE3NzYsIDE2MTc3OCwgMTYxNzgwLCAKLSAgICAxNjE3ODIsIDE2MTc4NCwgMTYxNzg2LCAxNjE3ODgsIDE2MTc5MCwgMTYxNzkyLCAxNjE3OTQsIDE2MTc5NiwgMTYxNzk4LCAKLSAgICAxNjE4MDAsIDE2MTgwMiwgMTYxODA0LCAxNjE4MDYsIDE2MTgwOCwgMTYxODEwLCAxNjE4MTIsIDE2MTgxNCwgMTYxODE2LCAKLSAgICAxNjE4MTgsIDE2MTgyMCwgMTYxODIyLCAxNjE4MjQsIDE2MTgyNiwgMTYxODI4LCAxNjE4MzAsIDE2MTgzMiwgMTYxODM0LCAKLSAgICAxNjE4MzYsIDE2MTgzOCwgMTYxODQwLCAxNjE4NDIsIDE2MTg0NCwgMTYxODQ2LCAxNjE4NDgsIDE2MTg1MCwgMTYxODUyLCAKLSAgICAxNjE4NTQsIDE2MTg1NiwgMTYxODU4LCAxNjE4NjAsIDE2MTg2MiwgMTYxODY0LCAxNjE4NjYsIDE2MTg2OCwgMTYxODcwLCAKLSAgICAxNjE4NzIsIDE2MTg3NCwgMTYxODc2LCAxNjE4NzgsIDE2MTg4MCwgMTYxODgyLCAxNjE4ODQsIDE2MTg4NiwgMTYxODg4LCAKLSAgICAxNjE4OTAsIDE2MTg5MiwgMTYxODk0LCAxNjE4OTYsIDE2MTg5OCwgMTYxOTAwLCAxNjE5MDIsIDE2MTkwNCwgMTYxOTA2LCAKLSAgICAxNjE5MDgsIDE2MTkxMCwgMTYxOTEyLCAxNjE5MTQsIDE2MTkxNiwgMTYxOTE4LCAxNjE5MjAsIDE2MTkyMiwgMTYxOTI0LCAKLSAgICAxNjE5MjYsIDE2MTkyOCwgMTYxOTMwLCAxNjE5MzIsIDE2MTkzNCwgMTYxOTM2LCAxNjE5MzgsIDE2MTk0MCwgMTYxOTQyLCAKLSAgICAxNjE5NDQsIDE2MTk0NiwgMTYxOTQ4LCAxNjE5NTAsIDE2MTk1MiwgMTYxOTU0LCAxNjE5NTYsIDE2MTk1OCwgMTYxOTYwLCAKLSAgICAxNjE5NjIsIDE2MTk2NCwgMTYxOTY2LCAxNjE5NjgsIDE2MTk3MCwgMTYxOTcyLCAxNjE5NzQsIDE2MTk3NiwgMTYxOTc4LCAKLSAgICAxNjE5ODAsIDE2MTk4MiwgMTYxOTg0LCAxNjE5ODYsIDE2MTk4OCwgMTYxOTkwLCAxNjE5OTIsIDE2MTk5NCwgMTYxOTk2LCAKLSAgICAxNjE5OTgsIDE2MjAwMCwgMTYyMDAyLCAxNjIwMDQsIDE2MjAwNiwgMTYyMDA4LCAxNjIwMTAsIDE2MjAxMiwgMTYyMDE0LCAKLSAgICAxNjIwMTYsIDE2MjAxOCwgMTYyMDIwLCAxNjIwMjIsIDE2MjAyNCwgMTYyMDI2LCAxNjIwMjgsIDE2MjAzMCwgMTYyMDMyLCAKLSAgICAxNjIwMzQsIDE2MjAzNiwgMTYyMDM4LCAxNjIwNDAsIDE2MjA0MiwgMTYyMDQ0LCAxNjIwNDYsIDE2MjA0OCwgMTYyMDUwLCAKLSAgICAxNjIwNTIsIDE2MjA1NCwgMTYyMDU2LCAxNjIwNTgsIDE2MjA2MCwgMTYyMDYyLCAxNjIwNjQsIDE2MjA2NiwgMTYyMDY4LCAKLSAgICAxNjIwNzAsIDE2MjA3MiwgMTYyMDc0LCAxNjIwNzYsIDE2MjA3OCwgMTYyMDgwLCAxNjIwODIsIDE2MjA4NCwgMTYyMDg2LCAKLSAgICAxNjIwODgsIDE2MjA5MCwgMTYyMDkyLCAxNjIwOTQsIDE2MjA5NiwgMTYyMDk4LCAxNjIxMDAsIDE2MjEwMiwgMTYyMTA0LCAKLSAgICAxNjIxMDYsIDE2MjEwOCwgMTYyMTEwLCAxNjIxMTIsIDE2MjExNCwgMTYyMTE2LCAxNjIxMTgsIDE2MjEyMCwgMTYyMTIyLCAKLSAgICAxNjIxMjQsIDE2MjEyNiwgMTYyMTI4LCAxNjIxMzAsIDE2MjEzMiwgMTYyMTM0LCAxNjIxMzYsIDE2MjEzOCwgMTYyMTQwLCAKLSAgICAxNjIxNDIsIDE2MjE0NCwgMTYyMTQ2LCAxNjIxNDgsIDE2MjE1MCwgMTYyMTUyLCAxNjIxNTQsIDE2MjE1NiwgMTYyMTU4LCAKLSAgICAxNjIxNjAsIDE2MjE2MiwgMTYyMTY0LCAxNjIxNjYsIDE2MjE2OCwgMTYyMTcwLCAxNjIxNzIsIDE2MjE3NCwgMTYyMTc2LCAKLSAgICAxNjIxNzgsIDE2MjE4MCwgMTYyMTgyLCAxNjIxODQsIDE2MjE4NiwgMTYyMTg4LCAxNjIxOTAsIDE2MjE5MiwgMTYyMTk0LCAKLSAgICAxNjIxOTYsIDE2MjE5OCwgMTYyMjAwLCAxNjIyMDIsIDE2MjIwNCwgMTYyMjA2LCAxNjIyMDgsIDE2MjIxMCwgMTYyMjEyLCAKLSAgICAxNjIyMTQsIDE2MjIxNiwgMTYyMjE4LCAxNjIyMjAsIDE2MjIyMiwgMTYyMjI0LCAxNjIyMjYsIDE2MjIyOCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTYyMjMwLCAxNjIyNDAsIDE2MjI1MCwgMTYyMjU5LCAxNjIyNjgsIDE2MjI4MSwgMTYyMjk0LCAxNjIzMDYsIAotICAgIDE2MjMxOCwgMTYyMzI4LCAxNjIzMzgsIDE2MjM0OCwgMTYyMzU4LCAxNjIzNjksIDE2MjM4MCwgMTYyMzkwLCAxNjIzOTksIAotICAgIDE2MjQwOCwgMTYyNDE3LCAxNjI0MzAsIDE2MjQ0MywgMTYyNDU1LCAxNjI0NjcsIDE2MjQ3NywgMTYyNDg3LCAxNjI0OTcsIAotICAgIDE2MjUwNywgMTYyNTE2LCAxNjI1MjUsIDE2MjUzNSwgMTYyNTQ1LCAxNjI1NTQsIDE2MjU2MywgMTYyNTczLCAxNjI1ODMsIAotICAgIDE2MjU5MiwgMTYyNjAxLCAxNjI2MTEsIDE2MjYyMSwgMTYyNjMyLCAxNjI2NDMsIDE2MjY1MywgMTYyNjY2LCAxNjI2NzcsIAotICAgIDE2MjY5MSwgMTYyNjk5LCAxNjI3MTAsIDE2MjcxOCwgMTYyNzI2LCAxNjI3MzQsIDE2Mjc0MiwgMTYyNzUwLCAxNjI3NTgsIAotICAgIDE2Mjc2NywgMTYyNzc2LCAxNjI3ODYsIDE2Mjc5NiwgMTYyODA1LCAxNjI4MTQsIDE2MjgyNCwgMTYyODM0LCAxNjI4NDIsIAotICAgIDE2Mjg1MCwgMTYyODU3LCAxNjI4NjcsIDE2Mjg3NiwgMTYyODg0LCAxNjI4OTEsIDE2MjkwMSwgMTYyOTEwLCAxNjI5MjEsIAotICAgIDE2MjkzMiwgMTYyOTQ0LCAxNjI5NTUsIDE2Mjk2NSwgMTYyOTc2LCAxNjI5ODYsIDE2Mjk5NywgMTYzMDA1LCAxNjMwMDksIAotICAgIDE2MzAxMywgMTYzMDE3LCAxNjMwMjEsIDE2MzAyNSwgMTYzMDI5LCAxNjMwMzMsIDE2MzAzNywgMTYzMDQxLCAxNjMwNDUsIAotICAgIDE2MzA0OSwgMTYzMDUzLCAxNjMwNTYsIDE2MzA1OSwgMTYzMDYzLCAxNjMwNjcsIDE2MzA3MSwgMTYzMDc1LCAxNjMwNzksIAotICAgIDE2MzA4MywgMTYzMDg3LCAxNjMwOTEsIDE2MzA5NCwgMTYzMDk4LCAxNjMxMDIsIDE2MzEwNiwgMTYzMTEwLCAxNjMxMTQsIAotICAgIDE2MzExOCwgMTYzMTIyLCAxNjMxMjYsIDE2MzEzMCwgMTYzMTM0LCAxNjMxMzgsIDE2MzE0MiwgMTYzMTQ2LCAxNjMxNTAsIAotICAgIDE2MzE1NCwgMTYzMTU4LCAxNjMxNjIsIDE2MzE2NiwgMTYzMTcwLCAxNjMxNzQsIDE2MzE3OCwgMTYzMTgyLCAxNjMxODYsIAotICAgIDE2MzE5MCwgMTYzMTk0LCAxNjMxOTgsIDE2MzIwMiwgMTYzMjA2LCAxNjMyMTAsIDE2MzIxNCwgMTYzMjE4LCAxNjMyMjIsIAotICAgIDE2MzIyNiwgMTYzMjMwLCAxNjMyMzQsIDE2MzIzOCwgMTYzMjQyLCAxNjMyNDYsIDE2MzI1MCwgMTYzMjU0LCAxNjMyNTgsIAotICAgIDE2MzI2MiwgMTYzMjY2LCAxNjMyNzAsIDE2MzI3NCwgMTYzMjc4LCAxNjMyODIsIDE2MzI4NiwgMTYzMjkwLCAxNjMyOTQsIAotICAgIDE2MzI5OCwgMTYzMzAyLCAxNjMzMDYsIDE2MzMxMCwgMTYzMzE0LCAxNjMzMTgsIDE2MzMyMiwgMTYzMzI2LCAxNjMzMzAsIAotICAgIDE2MzMzNCwgMTYzMzM4LCAxNjMzNDIsIDE2MzM0NiwgMTYzMzUwLCAxNjMzNTQsIDE2MzM1OCwgMTYzMzYyLCAxNjMzNjYsIAotICAgIDE2MzM3MCwgMTYzMzc0LCAxNjMzNzgsIDE2MzM4MiwgMTYzMzg2LCAxNjMzOTAsIDE2MzM5NCwgMTYzMzk4LCAxNjM0MDEsIAotICAgIDE2MzQwNSwgMTYzNDA5LCAxNjM0MTMsIDE2MzQxNywgMTYzNDIxLCAxNjM0MjUsIDE2MzQyOSwgMTYzNDMzLCAxNjM0MzcsIAotICAgIDE2MzQ0MSwgMTYzNDQ1LCAxNjM0NDksIDE2MzQ1MywgMTYzNDU3LCAxNjM0NjEsIDE2MzQ2NSwgMTYzNDY5LCAxNjM0NzMsIAotICAgIDE2MzQ3NywgMTYzNDgxLCAxNjM0ODUsIDE2MzQ4OSwgMTYzNDkzLCAxNjM0OTcsIDE2MzUwMSwgMTYzNTA1LCAxNjM1MDksIAotICAgIDE2MzUxMywgMTYzNTE3LCAxNjM1MjEsIDE2MzUyNSwgMTYzNTI5LCAxNjM1MzMsIDE2MzUzNywgMTYzNTQxLCAxNjM1NDUsIAotICAgIDE2MzU0OSwgMTYzNTUzLCAxNjM1NTcsIDE2MzU2MSwgMTYzNTY1LCAxNjM1NjksIDE2MzU3MywgMTYzNTc3LCAxNjM1ODEsIAotICAgIDE2MzU4NSwgMTYzNTg5LCAxNjM1OTMsIDE2MzU5NywgMTYzNjAxLCAxNjM2MDUsIDE2MzYwOSwgMTYzNjEzLCAxNjM2MTcsIAotICAgIDE2MzYyMSwgMTYzNjI1LCAxNjM2MjksIDE2MzYzMywgMTYzNjM3LCAxNjM2NDEsIDE2MzY0NSwgMTYzNjQ5LCAxNjM2NTMsIAotICAgIDE2MzY1NywgMTYzNjYxLCAxNjM2NjUsIDE2MzY2OSwgMTYzNjczLCAxNjM2NzcsIDE2MzY4MSwgMTYzNjg1LCAxNjM2ODksIAotICAgIDE2MzY5MywgMTYzNjk3LCAxNjM3MDEsIDE2MzcwNSwgMTYzNzA5LCAxNjM3MTMsIDE2MzcxNywgMTYzNzIxLCAxNjM3MjUsIAotICAgIDE2MzcyOSwgMTYzNzMzLCAxNjM3MzcsIDE2Mzc0MSwgMTYzNzQ1LCAxNjM3NDksIDE2Mzc1MywgMTYzNzU3LCAxNjM3NjEsIAotICAgIDE2Mzc2NSwgMTYzNzY5LCAxNjM3NzMsIDE2Mzc3NywgMTYzNzgxLCAxNjM3ODUsIDE2Mzc4OSwgMTYzNzkzLCAxNjM3OTcsIAotICAgIDE2MzgwMSwgMTYzODA1LCAxNjM4MDksIDE2MzgxMywgMTYzODE3LCAxNjM4MjEsIDE2MzgyNSwgMTYzODI5LCAxNjM4MzMsIAotICAgIDE2MzgzNywgMTYzODQxLCAxNjM4NDUsIDE2Mzg0OSwgMTYzODUzLCAxNjM4NTcsIDE2Mzg2MSwgMTYzODY1LCAxNjM4NjksIAotICAgIDE2Mzg3MywgMTYzODc3LCAxNjM4ODEsIDE2Mzg4NSwgMTYzODg5LCAxNjM4OTMsIDE2Mzg5NywgMTYzOTAxLCAxNjM5MDUsIAotICAgIDE2MzkwOSwgMTYzOTEzLCAxNjM5MTcsIDE2MzkyMSwgMTYzOTI1LCAxNjM5MjksIDE2MzkzMywgMTYzOTM3LCAxNjM5NDEsIAotICAgIDE2Mzk0NSwgMTYzOTQ5LCAxNjM5NTMsIDE2Mzk1NywgMTYzOTYxLCAxNjM5NjUsIDE2Mzk2OSwgMTYzOTczLCAxNjM5NzcsIAotICAgIDE2Mzk4MSwgMTYzOTg1LCAxNjM5ODksIDE2Mzk5MywgMTYzOTk3LCAxNjQwMDEsIDE2NDAwNSwgMTY0MDA5LCAxNjQwMTMsIAotICAgIDE2NDAxNywgMTY0MDIxLCAxNjQwMjUsIDE2NDAyOSwgMTY0MDMzLCAxNjQwMzcsIDE2NDA0MSwgMTY0MDQ1LCAxNjQwNDksIAotICAgIDE2NDA1MywgMTY0MDU3LCAxNjQwNjEsIDE2NDA2NSwgMTY0MDY5LCAxNjQwNzMsIDE2NDA3NywgMTY0MDgxLCAxNjQwODUsIAotICAgIDE2NDA4OSwgMTY0MDkzLCAxNjQwOTcsIDE2NDEwMSwgMTY0MTA1LCAxNjQxMDksIDE2NDExMywgMTY0MTE3LCAxNjQxMjEsIAotICAgIDE2NDEyNSwgMTY0MTI5LCAxNjQxMzMsIDE2NDEzNywgMTY0MTQxLCAxNjQxNDUsIDE2NDE0OSwgMTY0MTUzLCAxNjQxNTcsIAotICAgIDE2NDE2MSwgMTY0MTY1LCAxNjQxNzAsIDE2NDE3NSwgMTY0MTgwLCAxNjQxODQsIDE2NDE5MCwgMTY0MTk3LCAxNjQyMDQsIAotICAgIDE2NDIxMSwgMTY0MjE4LCAxNjQyMjUsIDE2NDIzMiwgMTY0MjM5LCAxNjQyNDYsIDE2NDI1MywgMTY0MjYwLCAxNjQyNjcsIAotICAgIDE2NDI3NCwgMTY0MjgxLCAxNjQyODgsIDE2NDI5NSwgMTY0MzAyLCAxNjQzMDgsIDE2NDMxNSwgMTY0MzIyLCAxNjQzMjksIAotICAgIDE2NDMzNiwgMTY0MzQzLCAxNjQzNTAsIDE2NDM1NywgMTY0MzY0LCAxNjQzNzEsIDE2NDM3OCwgMTY0Mzg1LCAxNjQzOTIsIAotICAgIDE2NDM5OSwgMTY0NDA2LCAxNjQ0MTIsIDE2NDQxOSwgMTY0NDI2LCAxNjQ0MzUsIDE2NDQ0NCwgMTY0NDUzLCAxNjQ0NjIsIAotICAgIDE2NDQ2NywgMTY0NDcyLCAxNjQ0NzgsIDE2NDQ4NCwgMTY0NDkwLCAxNjQ0OTYsIDE2NDUwMiwgMTY0NTA4LCAxNjQ1MTQsIAotICAgIDE2NDUyMCwgMTY0NTI2LCAxNjQ1MzIsIDE2NDUzOCwgMTY0NTQ0LCAxNjQ1NDksIDE2NDU1NSwgMTY0NTY1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNjYxMTEsIDE2NjExNCwgMTY2MTE3LCAxNjYxMjAsIDE2NjEyMywgMTY2MTI2LCAxNjYxMjksIDE2NjEzMiwgCisgICAgMTY2MTM1LCAxNjYxMzgsIDE2NjE0MSwgMTY2MTQ0LCAxNjYxNDcsIDE2NjE1MCwgMTY2MTUzLCAxNjYxNTYsIDE2NjE1OSwgCisgICAgMTY2MTYyLCAxNjYxNjUsIDE2NjE2OCwgMTY2MTcxLCAxNjYxNzQsIDE2NjE3NywgMTY2MTgwLCAxNjYxODMsIDE2NjE4NiwgCisgICAgMTY2MTg5LCAxNjYxOTIsIDE2NjE5NSwgMTY2MTk4LCAxNjYyMDEsIDE2NjIwNCwgMTY2MjA3LCAxNjYyMTAsIDE2NjIxMywgCisgICAgMTY2MjE2LCAxNjYyMTksIDE2NjIyMiwgMTY2MjI1LCAxNjYyMjgsIDE2NjIzMSwgMTY2MjM0LCAxNjYyMzcsIDE2NjI0MCwgCisgICAgMTY2MjQzLCAxNjYyNDYsIDE2NjI0OSwgMTY2MjUyLCAxNjYyNTUsIDE2NjI1OCwgMTY2MjYxLCAxNjYyNjQsIDE2NjI2NywgCisgICAgMTY2MjcwLCAxNjYyNzMsIDE2NjI3NiwgMTY2Mjc5LCAxNjYyODIsIDE2NjI4NSwgMTY2Mjg4LCAxNjYyOTEsIDE2NjI5NCwgCisgICAgMTY2Mjk3LCAxNjYzMDAsIDE2NjMwMywgMTY2MzA2LCAxNjYzMDksIDE2NjMxMiwgMTY2MzE1LCAxNjYzMTgsIDE2NjMyMSwgCisgICAgMTY2MzI0LCAxNjYzMjcsIDE2NjMzMCwgMTY2MzMzLCAxNjYzMzYsIDE2NjMzOSwgMTY2MzQyLCAxNjYzNDUsIDE2NjM0OCwgCisgICAgMTY2MzUxLCAxNjYzNTQsIDE2NjM1NywgMTY2MzYwLCAxNjYzNjMsIDE2NjM2NiwgMTY2MzY5LCAxNjYzNzIsIDE2NjM3NSwgCisgICAgMTY2Mzc4LCAxNjYzODEsIDE2NjM4NCwgMTY2Mzg3LCAxNjYzOTAsIDE2NjM5MywgMTY2Mzk2LCAxNjYzOTksIDE2NjQwMiwgCisgICAgMTY2NDA1LCAxNjY0MDgsIDE2NjQxMSwgMTY2NDE0LCAxNjY0MTcsIDE2NjQyMCwgMTY2NDIzLCAxNjY0MjYsIDE2NjQyOSwgCisgICAgMTY2NDMyLCAxNjY0MzUsIDE2NjQzOCwgMTY2NDQxLCAxNjY0NDQsIDE2NjQ0NywgMTY2NDUwLCAxNjY0NTMsIDE2NjQ1NiwgCisgICAgMTY2NDU5LCAxNjY0NjIsIDE2NjQ2NSwgMTY2NDY4LCAxNjY0NzEsIDE2NjQ3NCwgMTY2NDc3LCAxNjY0ODAsIDE2NjQ4MywgCisgICAgMTY2NDg2LCAxNjY0ODksIDE2NjQ5MiwgMTY2NDk1LCAxNjY0OTgsIDE2NjUwMSwgMTY2NTA0LCAxNjY1MDcsIDE2NjUxMCwgCisgICAgMTY2NTEzLCAxNjY1MTYsIDE2NjUxOSwgMTY2NTIyLCAxNjY1MjUsIDE2NjUyOCwgMTY2NTMxLCAxNjY1MzQsIDE2NjUzNywgCisgICAgMTY2NTQwLCAxNjY1NDMsIDE2NjU0NiwgMTY2NTQ5LCAxNjY1NTIsIDE2NjU1NSwgMTY2NTU4LCAxNjY1NjEsIDE2NjU2NCwgCisgICAgMTY2NTY3LCAxNjY1NzAsIDE2NjU3MywgMTY2NTc2LCAxNjY1NzksIDE2NjU4MiwgMTY2NTg1LCAxNjY1ODgsIDE2NjU5MSwgCisgICAgMTY2NTk0LCAxNjY1OTcsIDE2NjYwMCwgMTY2NjAzLCAxNjY2MDYsIDE2NjYwOSwgMTY2NjEyLCAxNjY2MTUsIDE2NjYxOCwgCisgICAgMTY2NjIxLCAxNjY2MjQsIDE2NjYyNywgMTY2NjMwLCAxNjY2MzMsIDE2NjYzNiwgMTY2NjM5LCAxNjY2NDIsIDE2NjY0NSwgCisgICAgMTY2NjQ4LCAxNjY2NTEsIDE2NjY1NCwgMTY2NjU3LCAxNjY2NjAsIDE2NjY2MywgMTY2NjY2LCAxNjY2NjksIDE2NjY3MiwgCisgICAgMTY2Njc1LCAxNjY2NzgsIDE2NjY4MSwgMTY2Njg0LCAxNjY2ODcsIDE2NjY5MCwgMTY2NjkzLCAxNjY2OTYsIDE2NjY5OSwgCisgICAgMTY2NzAyLCAxNjY3MDUsIDE2NjcwOCwgMTY2NzExLCAxNjY3MTQsIDE2NjcxNywgMTY2NzIwLCAxNjY3MjMsIDE2NjcyNiwgCisgICAgMTY2NzI5LCAxNjY3MzIsIDE2NjczNSwgMTY2NzM4LCAxNjY3NDEsIDE2Njc0NCwgMTY2NzQ3LCAxNjY3NTAsIDE2Njc1MywgCisgICAgMTY2NzU2LCAxNjY3NTksIDE2Njc2MiwgMTY2NzY1LCAxNjY3NjgsIDE2Njc3MSwgMTY2Nzc0LCAxNjY3NzcsIDE2Njc4MCwgCisgICAgMTY2NzgzLCAxNjY3ODYsIDE2Njc4OSwgMTY2NzkyLCAxNjY3OTUsIDE2Njc5OCwgMTY2ODAxLCAxNjY4MDQsIDE2NjgwNywgCisgICAgMTY2ODEwLCAxNjY4MTMsIDE2NjgxNiwgMTY2ODE5LCAxNjY4MjIsIDE2NjgyNSwgMTY2ODI4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjY4MzEsIDE2NjgzMywgMTY2ODM1LCAxNjY4NDAsIDE2Njg0MiwgCisgICAgMTY2ODQ3LCAxNjY4NDksIDE2Njg1NCwgMTY2ODU2LCAxNjY4NjEsIDE2Njg2MywgMTY2ODY1LCAxNjY4NjcsIDE2Njg2OSwgCisgICAgMTY2ODcxLCAxNjY4NzMsIDE2Njg3NSwgMTY2ODc3LCAxNjY4NzksIDE2Njg4MiwgMTY2ODg2LCAxNjY4ODgsIDE2Njg5MCwgCisgICAgMTY2ODk0LCAxNjY4OTgsIDE2NjkwMywgMTY2OTA1LCAxNjY5MDcsIDE2NjkwOSwgMTY2OTEzLCAxNjY5MTYsIDE2NjkxOCwgCisgICAgMTY2OTIyLCAxNjY5MjQsIDE2NjkyOCwgMTY2OTMwLCAxNjY5MzQsIDE2NjkzNywgMTY2OTM5LCAxNjY5NDMsIDE2Njk0NywgCisgICAgMTY2OTQ5LCAxNjY5NTUsIDE2Njk1NywgMTY2OTYyLCAxNjY5NjQsIDE2Njk2OSwgMTY2OTcxLCAxNjY5NzYsIDE2Njk3OCwgCisgICAgMTY2OTgzLCAxNjY5ODUsIDE2Njk4OCwgMTY2OTkwLCAxNjY5OTQsIDE2Njk5NiwgMTY3MDAzLCAxNjcwMDUsIDE2NzAwNywgCisgICAgMTY3MDA5LCAxNjcwMTQsIDE2NzAxNiwgMTY3MDE4LCAxNjcwMjAsIDE2NzAyMiwgMTY3MDI0LCAxNjcwMjksIDE2NzAzMywgCisgICAgMTY3MDM1LCAxNjcwNDAsIDE2NzA0NCwgMTY3MDQ2LCAxNjcwNTEsIDE2NzA1NSwgMTY3MDU3LCAxNjcwNjIsIDE2NzA2NiwgCisgICAgMTY3MDY4LCAxNjcwNzAsIDE2NzA3MiwgMTY3MDc0LCAxNjcwNzgsIDE2NzA4MCwgMTY3MDg1LCAxNjcwODcsIDE2NzA5MywgCisgICAgMTY3MDk1LCAxNjcxMDEsIDE2NzEwMywgMTY3MTA1LCAxNjcxMDcsIDE2NzExMSwgMTY3MTEzLCAxNjcxMjAsIDE2NzEyMiwgCisgICAgMTY3MTI5LCAxNjcxMzEsIDE2NzEzNiwgMTY3MTQyLCAxNjcxNDQsIDE2NzE1MCwgMTY3MTU3LCAxNjcxNTksIDE2NzE2NSwgCisgICAgMTY3MTcwLCAxNjcxNzIsIDE2NzE3OCwgMTY3MTg0LCAxNjcxODYsIDE2NzE5MiwgMTY3MTk4LCAxNjcyMDAsIDE2NzIwNiwgCisgICAgMTY3MjEwLCAxNjcyMTIsIDE2NzIxNywgMTY3MjE5LCAxNjcyMjEsIDE2NzIyNiwgMTY3MjI4LCAxNjcyMzAsIDE2NzIzNiwgCisgICAgMTY3MjM4LCAxNjcyNDMsIDE2NzI0NywgMTY3MjQ5LCAxNjcyNTQsIDE2NzI1OCwgMTY3MjYwLCAxNjcyNjYsIDE2NzI2OCwgCisgICAgMTY3MjcyLCAxNjcyNzQsIDE2NzI3OCwgMTY3MjgwLCAxNjcyODcsIDE2NzI5NCwgMTY3Mjk2LCAxNjczMDMsIDE2NzMxMCwgCisgICAgMTY3MzEyLCAxNjczMTcsIDE2NzMxOSwgMTY3MzI2LCAxNjczMjgsIDE2NzMzMywgMTY3MzM1LCAxNjczNDEsIDE2NzM0MywgCisgICAgMTY3MzQ3LCAxNjczNDksIDE2NzM1NSwgMTY3MzU3LCAxNjczNjEsIDE2NzM2MywgMTY3MzY5LCAxNjczNzEsIDE2NzM3MywgCisgICAgMTY3Mzc1LCAxNjczODAsIDE2NzM4NSwgMTY3Mzg3LCAxNjczODksIDE2NzM5OSwgMTY3NDA0LCAxNjc0MTEsIDE2NzQxOCwgCisgICAgMTY3NDIzLCAxNjc0MjgsIDE2NzQ0MCwgMTY3NDQyLCAxNjc0NDQsIDE2NzQ0NiwgMTY3NDQ4LCAxNjc0NTAsIDE2NzQ1MiwgCisgICAgMTY3NDU0LCAxNjc0NTYsIDE2NzQ1OCwgMTY3NDYwLCAxNjc0NjIsIDE2NzQ2NCwgMTY3NDY2LCAxNjc0NjgsIDE2NzQ3MCwgCisgICAgMTY3NDcyLCAxNjc0NzQsIDE2NzQ3NiwgMTY3NDc4LCAxNjc0ODAsIDE2NzQ4MiwgMTY3NDg4LCAxNjc0OTUsIDE2NzUwMCwgCisgICAgMTY3NTA4LCAxNjc1MTYsIDE2NzUyMSwgMTY3NTMyLCAxNjc1MzQsIDE2NzUzNiwgMTY3NTM4LCAxNjc1NDAsIDE2NzU0MiwgCisgICAgMTY3NTQ0LCAxNjc1NDYsIDE2NzU0OCwgMTY3NTUwLCAxNjc1NTIsIDE2NzU1NCwgMTY3NTU2LCAxNjc1NTgsIDE2NzU2MCwgCisgICAgMTY3NTYyLCAxNjc1NjQsIDE2NzU2OSwgMTY3NTcxLCAxNjc1NzMsIDE2NzU3OSwgMTY3NTkxLCAxNjc2MDIsIDE2NzYwNCwgCisgICAgMTY3NjA2LCAxNjc2MDgsIDE2NzYxMCwgMTY3NjEyLCAxNjc2MTQsIDE2NzYxNiwgMTY3NjE4LCAxNjc2MjAsIDE2NzYyMiwgCisgICAgMTY3NjI0LCAxNjc2MjYsIDE2NzYyOCwgMTY3NjMwLCAxNjc2MzIsIDE2NzYzNCwgMTY3NjM2LCAxNjc2MzgsIDE2NzY0MCwgCisgICAgMTY3NjQyLCAxNjc2NDQsIDE2NzY0NiwgMTY3NjQ4LCAxNjc2NTAsIDE2NzY1MiwgMTY3NjU0LCAxNjc2NTYsIDE2NzY1OCwgCisgICAgMTY3NjYwLCAxNjc2NjIsIDE2NzY2NCwgMTY3NjY2LCAxNjc2NjgsIDE2NzY3MCwgMTY3NjcyLCAxNjc2NzQsIDE2NzY3NiwgCisgICAgMTY3Njc4LCAxNjc2ODAsIDE2NzY4MiwgMTY3Njg0LCAxNjc2ODYsIDE2NzY4OCwgMTY3NjkwLCAxNjc2OTIsIDE2NzY5NCwgCisgICAgMTY3Njk2LCAxNjc2OTgsIDE2NzcwMCwgMTY3NzAyLCAxNjc3MDQsIDE2NzcwNiwgMTY3NzA4LCAxNjc3MTAsIDE2NzcxMiwgCisgICAgMTY3NzE0LCAxNjc3MTYsIDE2NzcxOCwgMTY3NzIwLCAxNjc3MjIsIDE2NzcyNCwgMTY3NzI2LCAxNjc3MjgsIDE2NzczMCwgCisgICAgMTY3NzMyLCAxNjc3MzQsIDE2NzczNiwgMTY3NzM4LCAxNjc3NDAsIDE2Nzc0MiwgMTY3NzQ0LCAxNjc3NDYsIDE2Nzc0OCwgCisgICAgMTY3NzUwLCAxNjc3NTIsIDE2Nzc1NCwgMTY3NzU2LCAxNjc3NTgsIDE2Nzc2MCwgMTY3NzYyLCAxNjc3NjQsIDE2Nzc2NiwgCisgICAgMTY3NzY4LCAxNjc3NzAsIDE2Nzc3MiwgMTY3Nzc0LCAxNjc3NzYsIDE2Nzc3OCwgMTY3NzgwLCAxNjc3ODIsIDE2Nzc4NCwgCisgICAgMTY3Nzg2LCAxNjc3ODgsIDE2Nzc5MCwgMTY3NzkyLCAxNjc3OTQsIDE2Nzc5NiwgMTY3Nzk4LCAxNjc4MDAsIDE2NzgwMiwgCisgICAgMTY3ODA0LCAxNjc4MDYsIDE2NzgwOCwgMTY3ODEwLCAxNjc4MTIsIDE2NzgxNCwgMTY3ODE2LCAxNjc4MTgsIDE2NzgyMCwgCisgICAgMTY3ODIyLCAxNjc4MjQsIDE2NzgyNiwgMTY3ODI4LCAxNjc4MzAsIDE2NzgzMiwgMTY3ODM0LCAxNjc4MzYsIDE2NzgzOCwgCisgICAgMTY3ODQwLCAxNjc4NDIsIDE2Nzg0NCwgMTY3ODQ2LCAxNjc4NDgsIDE2Nzg1MCwgMTY3ODUyLCAxNjc4NTQsIDE2Nzg1NiwgCisgICAgMTY3ODU4LCAxNjc4NjAsIDE2Nzg2MiwgMTY3ODY0LCAxNjc4NjYsIDE2Nzg2OCwgMTY3ODcwLCAxNjc4NzIsIDE2Nzg3NCwgCisgICAgMTY3ODc2LCAxNjc4NzgsIDE2Nzg4MCwgMTY3ODgyLCAxNjc4ODQsIDE2Nzg4NiwgMTY3ODg4LCAxNjc4OTAsIDE2Nzg5MiwgCisgICAgMTY3ODk0LCAxNjc4OTYsIDE2Nzg5OCwgMTY3OTAwLCAxNjc5MDIsIDE2NzkwNCwgMTY3OTA2LCAxNjc5MDgsIDE2NzkxMCwgCisgICAgMTY3OTEyLCAxNjc5MTQsIDE2NzkxNiwgMTY3OTE4LCAxNjc5MjAsIDE2NzkyMiwgMTY3OTI0LCAxNjc5MjYsIDE2NzkyOCwgCisgICAgMTY3OTMwLCAxNjc5MzIsIDE2NzkzNCwgMTY3OTM2LCAxNjc5MzgsIDE2Nzk0MCwgMTY3OTQyLCAxNjc5NDQsIDE2Nzk0NiwgCisgICAgMTY3OTQ4LCAxNjc5NTAsIDE2Nzk1MiwgMTY3OTU0LCAxNjc5NTYsIDE2Nzk1OCwgMTY3OTYwLCAxNjc5NjIsIDE2Nzk2NCwgCisgICAgMTY3OTY2LCAxNjc5NjgsIDE2Nzk3MCwgMTY3OTcyLCAxNjc5NzQsIDE2Nzk3NiwgMTY3OTc4LCAxNjc5ODAsIDE2Nzk4MiwgCisgICAgMTY3OTg0LCAxNjc5ODYsIDE2Nzk4OCwgMTY3OTkwLCAxNjc5OTIsIDE2Nzk5NCwgMTY3OTk2LCAxNjc5OTgsIDE2ODAwMCwgCisgICAgMTY4MDAyLCAxNjgwMDQsIDE2ODAwNiwgMTY4MDA4LCAxNjgwMTAsIDE2ODAxMiwgMTY4MDE0LCAxNjgwMTYsIDE2ODAxOCwgCisgICAgMTY4MDIwLCAxNjgwMjIsIDE2ODAyNCwgMTY4MDI2LCAxNjgwMjgsIDE2ODAzMCwgMTY4MDMyLCAxNjgwMzQsIDE2ODAzNiwgCisgICAgMTY4MDM4LCAxNjgwNDAsIDE2ODA0MiwgMTY4MDQ0LCAxNjgwNDYsIDE2ODA0OCwgMTY4MDUwLCAxNjgwNTIsIDE2ODA1NCwgCisgICAgMTY4MDU2LCAxNjgwNTgsIDE2ODA2MCwgMTY4MDYyLCAxNjgwNjQsIDE2ODA2NiwgMTY4MDY4LCAxNjgwNzAsIDE2ODA3MiwgCisgICAgMTY4MDc0LCAxNjgwNzYsIDE2ODA3OCwgMTY4MDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgwODIsIDE2ODA5MiwgMTY4MTAyLCAKKyAgICAxNjgxMTEsIDE2ODEyMCwgMTY4MTMzLCAxNjgxNDYsIDE2ODE1OCwgMTY4MTcwLCAxNjgxODAsIDE2ODE5MCwgMTY4MjAwLCAKKyAgICAxNjgyMTAsIDE2ODIyMSwgMTY4MjMyLCAxNjgyNDIsIDE2ODI1MSwgMTY4MjYwLCAxNjgyNjksIDE2ODI4MiwgMTY4Mjk1LCAKKyAgICAxNjgzMDcsIDE2ODMxOSwgMTY4MzI5LCAxNjgzMzksIDE2ODM0OSwgMTY4MzU5LCAxNjgzNjgsIDE2ODM3NywgMTY4Mzg3LCAKKyAgICAxNjgzOTcsIDE2ODQwNiwgMTY4NDE1LCAxNjg0MjUsIDE2ODQzNSwgMTY4NDQ0LCAxNjg0NTMsIDE2ODQ2MywgMTY4NDczLCAKKyAgICAxNjg0ODQsIDE2ODQ5NSwgMTY4NTA1LCAxNjg1MTgsIDE2ODUyOSwgMTY4NTQzLCAxNjg1NTEsIDE2ODU2MiwgMTY4NTcwLCAKKyAgICAxNjg1NzgsIDE2ODU4NiwgMTY4NTk0LCAxNjg2MDIsIDE2ODYxMCwgMTY4NjE5LCAxNjg2MjgsIDE2ODYzOCwgMTY4NjQ4LCAKKyAgICAxNjg2NTcsIDE2ODY2NiwgMTY4Njc2LCAxNjg2ODYsIDE2ODY5NCwgMTY4NzAyLCAxNjg3MDksIDE2ODcxOSwgMTY4NzI4LCAKKyAgICAxNjg3MzYsIDE2ODc0MywgMTY4NzUzLCAxNjg3NjIsIDE2ODc3MywgMTY4Nzg0LCAxNjg3OTYsIDE2ODgwNywgMTY4ODE3LCAKKyAgICAxNjg4MjgsIDE2ODgzOCwgMTY4ODQ5LCAxNjg4NTcsIDE2ODg2MSwgMTY4ODY1LCAxNjg4NjksIDE2ODg3MywgMTY4ODc3LCAKKyAgICAxNjg4ODEsIDE2ODg4NSwgMTY4ODg5LCAxNjg4OTMsIDE2ODg5NywgMTY4OTAxLCAxNjg5MDUsIDE2ODkwOCwgMTY4OTExLCAKKyAgICAxNjg5MTUsIDE2ODkxOSwgMTY4OTIzLCAxNjg5MjcsIDE2ODkzMSwgMTY4OTM1LCAxNjg5MzksIDE2ODk0MywgMTY4OTQ3LCAKKyAgICAxNjg5NTEsIDE2ODk1NSwgMTY4OTU5LCAxNjg5NjMsIDE2ODk2NywgMTY4OTcxLCAxNjg5NzUsIDE2ODk3OSwgMTY4OTgzLCAKKyAgICAxNjg5ODcsIDE2ODk5MSwgMTY4OTk1LCAxNjg5OTksIDE2OTAwMywgMTY5MDA3LCAxNjkwMTEsIDE2OTAxNSwgMTY5MDE5LCAKKyAgICAxNjkwMjMsIDE2OTAyNywgMTY5MDMxLCAxNjkwMzUsIDE2OTAzOSwgMTY5MDQzLCAxNjkwNDcsIDE2OTA1MSwgMTY5MDU1LCAKKyAgICAxNjkwNTksIDE2OTA2MywgMTY5MDY3LCAxNjkwNzEsIDE2OTA3NSwgMTY5MDc5LCAxNjkwODMsIDE2OTA4NywgMTY5MDkxLCAKKyAgICAxNjkwOTUsIDE2OTA5OSwgMTY5MTAzLCAxNjkxMDcsIDE2OTExMSwgMTY5MTE1LCAxNjkxMTksIDE2OTEyMywgMTY5MTI3LCAKKyAgICAxNjkxMzEsIDE2OTEzNSwgMTY5MTM5LCAxNjkxNDMsIDE2OTE0NywgMTY5MTUxLCAxNjkxNTUsIDE2OTE1OSwgMTY5MTYzLCAKKyAgICAxNjkxNjcsIDE2OTE3MSwgMTY5MTc1LCAxNjkxNzksIDE2OTE4MywgMTY5MTg3LCAxNjkxOTEsIDE2OTE5NSwgMTY5MTk5LCAKKyAgICAxNjkyMDMsIDE2OTIwNywgMTY5MjExLCAxNjkyMTUsIDE2OTIxOSwgMTY5MjIzLCAxNjkyMjcsIDE2OTIzMSwgMTY5MjM1LCAKKyAgICAxNjkyMzksIDE2OTI0MywgMTY5MjQ3LCAxNjkyNTEsIDE2OTI1NCwgMTY5MjU4LCAxNjkyNjIsIDE2OTI2NiwgMTY5MjcwLCAKKyAgICAxNjkyNzQsIDE2OTI3OCwgMTY5MjgyLCAxNjkyODYsIDE2OTI5MCwgMTY5Mjk0LCAxNjkyOTgsIDE2OTMwMiwgMTY5MzA2LCAKKyAgICAxNjkzMTAsIDE2OTMxNCwgMTY5MzE4LCAxNjkzMjIsIDE2OTMyNiwgMTY5MzMwLCAxNjkzMzQsIDE2OTMzOCwgMTY5MzQyLCAKKyAgICAxNjkzNDYsIDE2OTM1MCwgMTY5MzU0LCAxNjkzNTgsIDE2OTM2MiwgMTY5MzY2LCAxNjkzNzAsIDE2OTM3NCwgMTY5Mzc4LCAKKyAgICAxNjkzODIsIDE2OTM4NiwgMTY5MzkwLCAxNjkzOTQsIDE2OTM5OCwgMTY5NDAyLCAxNjk0MDYsIDE2OTQxMCwgMTY5NDE0LCAKKyAgICAxNjk0MTgsIDE2OTQyMiwgMTY5NDI2LCAxNjk0MzAsIDE2OTQzNCwgMTY5NDM4LCAxNjk0NDIsIDE2OTQ0NiwgMTY5NDUwLCAKKyAgICAxNjk0NTQsIDE2OTQ1OCwgMTY5NDYyLCAxNjk0NjYsIDE2OTQ3MCwgMTY5NDc0LCAxNjk0NzgsIDE2OTQ4MiwgMTY5NDg2LCAKKyAgICAxNjk0OTAsIDE2OTQ5NCwgMTY5NDk4LCAxNjk1MDIsIDE2OTUwNiwgMTY5NTEwLCAxNjk1MTQsIDE2OTUxOCwgMTY5NTIyLCAKKyAgICAxNjk1MjYsIDE2OTUzMCwgMTY5NTM0LCAxNjk1MzgsIDE2OTU0MiwgMTY5NTQ2LCAxNjk1NTAsIDE2OTU1NCwgMTY5NTU4LCAKKyAgICAxNjk1NjIsIDE2OTU2NiwgMTY5NTcwLCAxNjk1NzQsIDE2OTU3OCwgMTY5NTgyLCAxNjk1ODYsIDE2OTU5MCwgMTY5NTk0LCAKKyAgICAxNjk1OTgsIDE2OTYwMiwgMTY5NjA2LCAxNjk2MTAsIDE2OTYxNCwgMTY5NjE4LCAxNjk2MjIsIDE2OTYyNiwgMTY5NjMwLCAKKyAgICAxNjk2MzQsIDE2OTYzOCwgMTY5NjQyLCAxNjk2NDYsIDE2OTY1MCwgMTY5NjU0LCAxNjk2NTgsIDE2OTY2MiwgMTY5NjY2LCAKKyAgICAxNjk2NzAsIDE2OTY3NCwgMTY5Njc4LCAxNjk2ODIsIDE2OTY4NiwgMTY5NjkwLCAxNjk2OTQsIDE2OTY5OCwgMTY5NzAyLCAKKyAgICAxNjk3MDYsIDE2OTcxMCwgMTY5NzE0LCAxNjk3MTgsIDE2OTcyMiwgMTY5NzI2LCAxNjk3MzAsIDE2OTczNCwgMTY5NzM4LCAKKyAgICAxNjk3NDIsIDE2OTc0NiwgMTY5NzUwLCAxNjk3NTQsIDE2OTc1OCwgMTY5NzYyLCAxNjk3NjYsIDE2OTc3MCwgMTY5Nzc0LCAKKyAgICAxNjk3NzgsIDE2OTc4MiwgMTY5Nzg2LCAxNjk3OTAsIDE2OTc5NCwgMTY5Nzk4LCAxNjk4MDIsIDE2OTgwNiwgMTY5ODEwLCAKKyAgICAxNjk4MTQsIDE2OTgxOCwgMTY5ODIyLCAxNjk4MjYsIDE2OTgzMCwgMTY5ODM0LCAxNjk4MzgsIDE2OTg0MiwgMTY5ODQ2LCAKKyAgICAxNjk4NTAsIDE2OTg1NCwgMTY5ODU4LCAxNjk4NjIsIDE2OTg2NiwgMTY5ODcwLCAxNjk4NzQsIDE2OTg3OCwgMTY5ODgyLCAKKyAgICAxNjk4ODYsIDE2OTg5MCwgMTY5ODk0LCAxNjk4OTgsIDE2OTkwMiwgMTY5OTA2LCAxNjk5MTAsIDE2OTkxNCwgMTY5OTE4LCAKKyAgICAxNjk5MjIsIDE2OTkyNiwgMTY5OTMwLCAxNjk5MzQsIDE2OTkzOCwgMTY5OTQyLCAxNjk5NDYsIDE2OTk1MCwgMTY5OTU0LCAKKyAgICAxNjk5NTgsIDE2OTk2MiwgMTY5OTY2LCAxNjk5NzAsIDE2OTk3NCwgMTY5OTc4LCAxNjk5ODIsIDE2OTk4NiwgMTY5OTkwLCAKKyAgICAxNjk5OTQsIDE2OTk5OCwgMTcwMDAyLCAxNzAwMDYsIDE3MDAxMCwgMTcwMDE0LCAxNzAwMTgsIDE3MDAyMywgMTcwMDI4LCAKKyAgICAxNzAwMzMsIDE3MDAzNywgMTcwMDQzLCAxNzAwNTAsIDE3MDA1NywgMTcwMDY0LCAxNzAwNzEsIDE3MDA3OCwgMTcwMDg1LCAKKyAgICAxNzAwOTIsIDE3MDA5OSwgMTcwMTA2LCAxNzAxMTMsIDE3MDEyMCwgMTcwMTI3LCAxNzAxMzQsIDE3MDE0MCwgMTcwMTQ3LCAKKyAgICAxNzAxNTQsIDE3MDE2MCwgMTcwMTY3LCAxNzAxNzQsIDE3MDE4MSwgMTcwMTg4LCAxNzAxOTUsIDE3MDIwMiwgMTcwMjA5LCAKKyAgICAxNzAyMTYsIDE3MDIyMywgMTcwMjMwLCAxNzAyMzcsIDE3MDI0NCwgMTcwMjUxLCAxNzAyNTgsIDE3MDI2NCwgMTcwMjcwLCAKKyAgICAxNzAyNzcsIDE3MDI4NiwgMTcwMjk1LCAxNzAzMDQsIDE3MDMxMywgMTcwMzE4LCAxNzAzMjMsIDE3MDMyOSwgMTcwMzM1LCAKKyAgICAxNzAzNDEsIDE3MDM0NywgMTcwMzUzLCAxNzAzNTksIDE3MDM2NSwgMTcwMzcxLCAxNzAzNzcsIDE3MDM4MywgMTcwMzg5LCAKKyAgICAxNzAzOTUsIDE3MDQwMCwgMTcwNDA2LCAxNzA0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvZGVfaGFzaFtdID0gewotICAgIDc0MjI0LCA0ODUxLCAxMjUxMzgsIDc4MTU2LCA3ODQ5OSwgNzIzOTEsIDc5MjksIDY2OTEwLCAxOTQ2ODIsIDEyNzc2NiwgCisgICAgNzQyMjQsIDQ4NTEsIDEyNTEzOCwgNzgxNTYsIDc4NDk5LCA3MjM5MSwgNzkyOSwgODk5OSwgMTk0NjgyLCAxMjc3NjYsIAogICAgIDc4NTAwLCA2NjQ4MCwgNjQwMzgsIDQyODMzLCA3NDUyOSwgMTIwNjQsIDcyMzg1LCA1OTYsIDk4MzgyMSwgNjk4NTAsIAotICAgIDEzMTkyLCA4NjUxLCAxMjAyMTcsIDEyNjU0MiwgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDExOTg1NiwgMTEzNzUyLCAKKyAgICAxMzE5MiwgODY1MSwgMTIwMjE3LCA2Njc4OSwgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDcwNzQwLCAxMTM3NTIsIAogICAgIDU4MTYsIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCA0MjMzLCA0MjM0LCA0MjMyLCAxMjA4ODksIDc0NDE1LCAKLSAgICAxMjAyMTAsIDYzODQsIDcwMzUxLCA3ODEwOCwgODg1MSwgNjc2OTgsIDEyODU1MywgODI5NTQsIDQxNjAxLCA4ODc0LCAKLSAgICA3MjM5MiwgNzc0OCwgMTI1MDgzLCAwLCAxMjcwMjYsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIDQxNjAwLCAwLCAKLSAgICAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMTI4NjM1LCA2MzgxLCAwLCAwLCA2NTI0MCwgMTE5NTEsIDAsIDM0MDQsIAotICAgIDk4MzA3OSwgNzA0ODcsIDcyNDExLCAxNzU5LCAxMjA4NTMsIDQxMDc2LCA2ODM4MywgNjk5NzIsIDExOTIwNSwgNjY1NzcsIAotICAgIDk0MDE0LCAxMjc3NjQsIDY1ODU5LCAwLCA3NDA0LCAwLCAwLCA2OTk3MCwgMTI4Mzg3LCA2NTkwOCwgOTgzNCwgMzA1NSwgCi0gICAgOTg1MiwgMTI4MzYwLCA2NTI4OCwgMTIxMjkxLCAxMTM5OCwgMCwgOTI0MTcsIDkzMDE2LCAxMjgzODAsIDEyNzMzNywgNjAzLCAKLSAgICA3NDM5OCwgNDM1NDgsIDAsIDcxODY1LCA5MTc4MjQsIDMzNTAsIDEyMDgxNywgNjQzMTgsIDE5NDY5OCwgNzgxMjEsIDMzOTAsIAotICAgIDc0NDgzLCA0MzI2NSwgOTIzOTksIDkxNzgzMCwgNzg1NzMsIDExODgwMywgMTkxOSwgMzQwMCwgMTIwNjUxLCA4MzI5NiwgCi0gICAgMTE2NDcsIDgzMjk4LCA2NjQ0NiwgNjQxNDEsIDg1NjIsIDIxMjEsIDY0MTM4LCA0MDQzLCA4NzEyLCA2NDEzNCwgNjQxMzMsIAotICAgIDExMjk3LCA5ODM2ODgsIDk4MzE1MiwgMTE5NjYsIDY0MTI4LCA2NjI4NiwgOTMwNDIsIDEyODgzMCwgNjQxMzIsIDEwODY3LCAKLSAgICA2NDEzMCwgNjQxMjksIDEyMTI1NSwgNDMzNzQsIDk3NzksIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgODM0NTgsIAotICAgIDY2MDIxLCA3NDUwOSwgMCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIDY1MjgyLCAyODQzLCA1MzU1LCA2ODg1OCwgCi0gICAgOTgzMzQyLCA2OTk3MSwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIDExMzcyNCwgMTI4ODcyLCAwLCAwLCA3MjM5MywgCi0gICAgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIDgzMzAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgNjYxODYsIAotICAgIDAsIDAsIDY0OTMwLCAxMTYzMSwgNjQxNDYsIDY0MTQ1LCA2NDE0NCwgNzYyLCAxMzE3MiwgNzUwMDgsIDc3OTI4LCA0MzkyOSwgCi0gICAgMTA5MDYsIDEzNTMsIDY5NjAsIDgzMDMyLCAxMjg3NzksIDU4MjgsIDg3MjQsIDkxNzgwNiwgODkzMywgMTYwMSwgNDIyNDQsIAotICAgIDg1OCwgNzA4MCwgNjQxMDksIDY0MTA4LCA4MDkwLCA3MDQ1NSwgNzIzODgsIDc0NjA2LCA1ODcsIDkxNzkwNywgODI5NzEsIAotICAgIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDc4NzA3LCAxMjIxMywgODMyOTAsIAotICAgIDI3NjAsIDgzMjg0LCA4MzI4NSwgNzg3MDgsIDgzMjg3LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCA4MzI4MywgNjQxNTEsIAotICAgIDY0MTUwLCAxMjY3OSwgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAxMjUwMTYsIDAsIDQ4MzksIDY4NTI3LCAKLSAgICAwLCAxODc0LCAxMTkwMTYsIDEyMDA5MSwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCA5MjUzNCwgCi0gICAgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIDc4ODQ3LCA2NDEyMiwgNjYzODksIDY2NjA5LCAxMjEzNDcsIDY0MTE3LCAKLSAgICA2NDExNiwgNjI4NywgNjQxMTQsIDI3MjUsIDY0MTIwLCA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIAotICAgIDY1NjAxLCAxMjMyMiwgNjQxMDYsIDY5NjQwLCA5Mjg5NSwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgCi0gICAgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDk4MzE2MSwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIAotICAgIDEyODU0NSwgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAxMjA4NjQsIDczODQxLCA4MzMzOSwgODMzNDAsIAotICAgIDkwNTYsIDY0MzEzLCA2MTg4LCA3NDM2MCwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCAKLSAgICA2MywgNzIzMywgOTIyMTIsIDcyNDE0LCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc3NSwgMTI4MzQ0LCAxMjEzODgsIDExNzYsIAotICAgIDExODk1OSwgMTI3OTMwLCA4MTYyLCAxMjcwMTksIDEyODE5NywgOTI3NDcsIDEyMDUxOSwgNDI5MzEsIDY2MjQyLCAxMTQxNSwgCi0gICAgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAxMjEyNzEsIDk4MzY0OSwgNzcxNCwgNjYyMjIsIDY5OTAyLCAKKyAgICAxMDA0MTMsIDYzODQsIDcwMzUxLCA3ODEwOCwgODg1MSwgNjc2OTgsIDEyODU1MywgODI5NTQsIDQxNjAxLCA4ODc0LCAKKyAgICA3MjM5MiwgNzc0OCwgMTI1MDgzLCAwLCAxMjcwMjYsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIDQxNjAwLCAKKyAgICA5ODM5ODEsIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAxMjg2MzUsIDYzODEsIDEwMDg3MiwgNjY3OTcsIDY1MjQwLCAKKyAgICAxMTk1MSwgMCwgMzQwNCwgOTgzMDc5LCA3MDQ4NywgNzI0MTEsIDE3NTksIDEyMDg1MywgNDEwNzYsIDY4MzgzLCA2OTk3MiwgCisgICAgMTE5MjA1LCA2NjU3NywgOTQwMTQsIDEyNzc2NCwgNjU4NTksIDEyNTI1MywgNzQwNCwgMTI1MjQ4LCAxMjgzMDgsIDY5OTcwLCAKKyAgICAxMjA2NDgsIDY1OTA4LCA5ODM0LCAzMDU1LCAyMjM0LCAxMjgzNjAsIDY1Mjg4LCAxMjEyOTEsIDExMzk4LCAwLCA5MjQxNywgCisgICAgOTMwMTYsIDEyODM4MCwgMTI3MzM3LCA2MDMsIDc0Mzk4LCA0MzU0OCwgMCwgNzE4NjUsIDEyOTM2NiwgMzM1MCwgMTIwODE3LCAKKyAgICA2NDMxOCwgMTIwNjk5LCA3ODEyMSwgMzM5MCwgNzQ0ODMsIDQzMjY1LCA5MjM5OSwgOTE3ODMwLCA3ODU3MywgMTE4ODAzLCAKKyAgICAxOTE5LCAzNDAwLCAxMjA2NTEsIDgzMjk2LCAxMTY0NywgODMyOTgsIDY2NDQ2LCA2NDE0MSwgODU2MiwgMjEyMSwgNjQxMzgsIAorICAgIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgMTEyOTcsIDk4MzY4OCwgOTgzMTUyLCAxMTk2NiwgNjQxMjgsIDY2Mjg2LCAKKyAgICA5MzA0MiwgMTI4ODMwLCA2NDEzMiwgMTA4NjcsIDY0MTMwLCA2NDEyOSwgMTIxMjU1LCA0MzM3NCwgOTc3OSwgMjc2NCwgCisgICAgNjYwMDIsIDEwMTY3LCA5NDcxLCA4MzQ1OCwgNjYwMjEsIDc0NTA5LCA5ODMzMDgsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCAKKyAgICA2NTI4MiwgMjg0MywgNTM1NSwgNjg4NTgsIDEwMDUzMCwgNjk5NzEsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAKKyAgICAxMDA1MjksIDEyODg3MiwgMCwgOTgzOTA3LCA3MjM5MywgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIAorICAgIDgzMzAwLCAxMDYwMiwgODAwLCA0MjQ5OSwgNjYxODYsIDAsIDEyODE0NiwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIAorICAgIDY0MTQ0LCA3NjIsIDEzMTcyLCA3NTAwOCwgNzc5MjgsIDQzOTI5LCAxMDkwNiwgMTM1MywgNjk2MCwgODMwMzIsIDEwMDQyMywgCisgICAgNTgyOCwgODcyNCwgMTIyOTE2LCA4OTMzLCAxNjAxLCA0MjI0NCwgODU4LCA3MDgwLCA2NDEwOSwgNjQxMDgsIDgwOTAsIAorICAgIDcwNDU1LCA3MjM4OCwgNzQ2MDYsIDU4NywgMTk0NjQ5LCA4Mjk3MSwgOTgzODA4LCAxMjkzNDUsIDE5NDc5NSwgNzgyMTQsIAorICAgIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgNzg3MDcsIDEyMjEzLCA4MzI5MCwgMjc2MCwgODMyODQsIDgzMjg1LCAKKyAgICA3NzkzNCwgODMyODcsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDgzMjgzLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAxMDA1MywgCisgICAgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDEyNTAxNiwgMCwgNDgzOSwgNjg1MjcsIDEyNTA5MSwgMTg3NCwgMTE5MDE2LCAKKyAgICAxMjAwOTEsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDEyMDE4OCwgMTI3NTMxLCA5MjUzNCwgNzAwNywgNzU5MCwgCisgICAgNjU0NDMsIDkwMzYsIDc4ODQ3LCA2NDEyMiwgNjYzODksIDY2NjA5LCAxMjEzNDcsIDY0MTE3LCA2NDExNiwgNjI4NywgCisgICAgNjQxMTQsIDI3MjUsIDY0MTIwLCA2NDExOSwgNDM5ODEsIDQyMTI4LCAxMjc4NDIsIDExNzcsIDY1NjAxLCAxMjMyMiwgCisgICAgNjQxMDYsIDY5NjQwLCA5Mjg5NSwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCA5ODM0ODIsIDEwNDUzLCA2NDEwNCwgCisgICAgNzE4OCwgNzk5NywgMTI4NjAwLCA3Mzg5LCA5ODMxNjEsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg1NDUsIAorICAgIDQ0MDE3LCAxMTQyOSwgNzEzNDcsIDAsIDk4MzA3NywgMTIwODY0LCA3Mzg0MSwgODMzMzksIDgzMzQwLCA5MDU2LCA2NDMxMywgCisgICAgNjE4OCwgNzQzNjAsIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIAorICAgIDc0OTUzLCA3MjQxNCwgNDE5MDQsIDY2MzksIDY0MDY0LCA5ODM3NzUsIDEyODM0NCwgMTIxMzg4LCAxMTc2LCAxMTg5NTksIAorICAgIDEyNzkzMCwgODE2MiwgMTI3MDE5LCAxMjgxOTcsIDkyNzQ3LCAxMjA1MTksIDQyOTMxLCA2NjI0MiwgMTE0MTUsIDQzMzMsIAorICAgIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgOTgzNDA1LCAxMjEyNzEsIDkxNzkwNywgNzcxNCwgNjYyMjIsIDY5OTAyLCAKICAgICA3NzY4LCA3MjQwMywgNDE5OSwgNjQ3MDgsIDY1MDY0LCA3MDExNywgMCwgODcwOCwgOTU2MCwgNjQwNzcsIDY0MDc2LCAKLSAgICA4OTk2LCA0OTkyLCA0NDcxLCA0MjYyMiwgNjQwNzksIDY0MDc4LCA5MjE3OSwgNzE4NzgsIDEyNjU3MCwgMTIxMjU2LCAKLSAgICA2NDYxNSwgNDE5MTUsIDAsIDEyMDc1LCA0MjA0MSwgMTk0ODI1LCA1MTc0LCA5ODMyMTcsIDAsIDEyNzU1NywgMzEyMywgCi0gICAgMTI1MTAwLCAxMjY4NSwgMTE5MjE2LCA4NDA4LCA2NDcwNCwgODMzMjgsIDAsIDkyMjMsIDAsIDQxNjE2LCA2Nzk5OSwgCi0gICAgNzM3OTcsIDgzMzI3LCAxMTE2LCA3NTA2NywgNDMwNDksIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIDAsIDc1MDMxLCAKLSAgICA5MTc2MjIsIDEyODE2OCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgODMzMzgsIDgzMzMxLCA2NDA5NSwgNjQwOTQsIAotICAgIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCA2NzI0OSwgNjYzOTgsIDExNDM0LCA2NDA4MywgCi0gICAgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgODMwMzMsIDk5MjcsIDQxMzM1LCA0MTE4LCAKLSAgICAxNzk3LCA4MzMxMiwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgODMzMDksIDI5OCwgODMzMDMsIDgzMzA0LCA4MzMwNSwgNDI2MjcsIAotICAgIDEyNTAxMSwgMzIsIDYxODcsIDgzMDM3LCAxMTQ5NSwgMTE0NTksIDM2NjUsIDgzMDM2LCA0Mjg3MSwgMCwgMTk5MjMsIAotICAgIDc0MzM1LCAwLCAxMjcxOTIsIDY2MjM5LCA0MjI2NCwgNjQ0MDMsIDQ0MTIsIDcyNDAsIDgzMzE0LCA3MTQ0NCwgOTgzNDY4LCAKLSAgICA2NTc1OCwgMTI3NTAsIDQxODEsIDg1NDQsIDgzNDYxLCA2ODA1MywgODM0MDcsIDEyMDE5OCwgNjk4MDksIDYxODEsIAotICAgIDY1MDE0LCA5ODM0MjIsIDEyODQ4NCwgOTgzMTk2LCAzNjM5LCAxMTk1ODgsIDExODg1MSwgODMwMzksIDExODkwNCwgCi0gICAgMTAwNzMsIDEyMDIwNiwgODMwMzgsIDEyNzE4NiwgNjg0MDksIDQyODQ0LCA3NDk4LCAxMDk4LCA5MjU2NSwgMTIwMjA1LCAwLCAKLSAgICAxMjg5MTUsIDEwMjA3LCA4Nzg5LCA5MzA3MCwgMTIwMzM4LCA5Mjk3MywgMTI4MzI1LCA5MjM0LCA5MTc4OTUsIDYxODIsIAotICAgIDk4MzQ3NSwgNjUwNTgsIDEyMDMxOSwgOTgzNDgwLCA2ODA2NCwgOTE3ODMxLCA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIAotICAgIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgNjY4OTQsIDE2MjIsIDc3NjcsIDE5MDAsIAotICAgIDQxMzM5LCAxMTQ1OCwgMTE5MDYxLCAwLCA2NTgxLCA1NTc2LCAxMjg2MTgsIDQzODU1LCA0MTMzNywgMCwgNDE2MzEsIAotICAgIDg5NDcsIDY4MzkwLCA2OTY4MywgNDE2OTQsIDk4Mzg0OCwgNzIzOTYsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCA5MTc4NzIsIAotICAgIDY0NjE4LCAwLCAxMjAxNDcsIDIxMzgsIDY1ODMsIDc3NjEsIDcwMDA1LCAxMjA1MDQsIDE5NDgyOCwgMTI4OTYxLCA1MDU4LCAKLSAgICA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCA5MTc5NDEsIDAsIDc0NTM4LCA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIAotICAgIDAsIDE0MzcsIDQxNjE3LCA2NTgsIDM0OTcsIDEyODUwOSwgNzQ4NiwgNTA2MSwgNTA2MCwgNDIzNSwgMTI3ODc4LCAKLSAgICAxMjgzMjIsIDEyODUyOSwgMTIxMTMsIDQyMzYsIDQ3MjcsIDEyODQ4NywgMCwgNzY5MywgMTA3NDksIDEyMDMzMiwgNzQ4OCwgCi0gICAgNTc3MywgOTc4LCAxMjgxMzQsIDk4MzY5OSwgNDE2MTksIDEwMjM5LCA2ODYxMSwgNzE4NjQsIDY2MjA5LCAxMjcyMzMsIAotICAgIDc0MTM1LCA5NzQ4LCA5ODM5NTYsIDEyNzUyNCwgMCwgOTgzMzE2LCAxOTQ2NzYsIDE5NDY3NSwgMTI4MDgxLCAwLCAKLSAgICA5ODMzMTMsIDk4MzMwMiwgMCwgMTI3ODY1LCAwLCA5Mjc3NiwgOTM0MSwgNzg4MjEsIDIzNzksIDExMzI1LCA5MTc5MDIsIAotICAgIDY0NjY4LCA2Nzg1NCwgODEyNSwgMTIwNTQ1LCA2NzQzLCA4MzE2NCwgOTE3OTQwLCAyMzY5LCA4MzQwNiwgOTgzMzIzLCAKLSAgICAxMjc5NjYsIDExOTIzNSwgNzE4NjgsIDczOTM2LCA3MDA4LCA0MzY2MCwgMTIwMzQ2LCAwLCA0Mzg0MSwgMjM2NywgCi0gICAgMTI3ODI3LCA5ODM4NTcsIDI2NCwgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDEyOTA0OSwgCi0gICAgNjAxOSwgMTI4OTc1LCAwLCA2OTYxLCAwLCA3MDQzNSwgNjcxNzEsIDg4MDAsIDEyNzMzMiwgNDI4NjIsIDQ0NjMsIDY1NTgxLCAKLSAgICA2MTkyLCAxMTk2MTAsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCA2NTA0MiwgOTMwMTQsIDEyMDgwMCwgNzQ5NDIsIDEyODkyLCAKLSAgICAwLCA2NzE0OSwgNzQ4OTksIDczOTMxLCAwLCAxMjA0OTUsIDEyNzI2MSwgMTIyMjQsIDk4MzEyOCwgMTI5MDYxLCA1MDc0LCAKLSAgICA1MDczLCAxMjExNjQsIDg5ODMsIDExODk4MSwgNzQ0OTMsIDcxMjMxLCA1MDcyLCA3NDU0NywgNjE5OCwgMTE2MTQsIDAsIAotICAgIDE5NiwgOTgzMTU0LCAwLCA5ODM5MzYsIDQ5MjksIDEyMDM0MiwgMTI5MTQ1LCAwLCAxMjc5ODcsIDEyMTQ1NSwgNDI4NDcsIAotICAgIDkyOTUzLCAwLCA2Nzc1NCwgNDkzNCwgOTgzOTgxLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIDcwMTgxLCA0MjU4NCwgMCwgCi0gICAgNDMyOSwgNDEzMjEsIDQ5NzksIDMwNDgsIDc3NTIsIDQxMzIwLCA5ODMwNDIsIDY0NjY3LCAxMjgxOSwgOTgzODcwLCA1MDcxLCAKLSAgICAxMjc5MTUsIDM2NDIsIDY3MzM0LCA1MDcwLCAxMDA0MiwgMTEzODEzLCAzOTg3LCA1MDY4LCA5ODM0NjAsIDg5MDksIAotICAgIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgCi0gICAgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDEyMTM1OSwgMTI4MDI4LCAwLCA2NDcwOSwgODMyNjksIAotICAgIDEyODg1NCwgNzg4ODAsIDQ5MjIsIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDEyNzIxOCwgMCwgOTUyNiwgNDkyMCwgCi0gICAgMTI4NjE3LCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMTI3ODU3LCA5MjE3NSwgMTIwMjc1LCA0OTMzLCAxMTM3NzksIAotICAgIDEyMTA0OSwgMTE4OTg1LCA0OTI4LCA5ODMxNDksIDgzNTE0LCA3NDc3MCwgMTIwMTk0LCAxMjY1NDgsIDcyMiwgMTk0OTM0LCAKLSAgICAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgODI5OTksIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDQzNDkzLCAxMjc0NzcsIAotICAgIDE2NzIsIDYyMDUsIDEwODY0LCA3NDU4NiwgMTI3NDgwLCA3MDEwMywgOTI2OTQsIDc4NTU1LCAxMjc0NjgsIDczODYzLCAKLSAgICAxMjY1NzcsIDY4MzM2LCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgOTI3NjEsIDEyNzQ2MiwgNzAwNSwgCi0gICAgNDE2MDksIDk1ODAsIDcwNDMxLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAxMjc5MDAsIAotICAgIDgxNDMsIDEyNzExNSwgMTE5ODMsIDkyMjQ5LCA2MjQsIDc0NTA4LCA0MDU3LCA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAKLSAgICAwLCA1MDc2LCAxMjg3MDIsIDgyOTkxLCAwLCA4Mjk1LCA2ODUsIDkwMjUsIDE1MjQsIDEyNjE4LCAwLCA1NTM5LCAxMjkxODIsIAotICAgIDkyNTIzLCA3MTQzNSwgNzEzOCwgMTIwNTUyLCA0MzUwNCwgMTk0NjExLCA2NjkxNCwgNjU3OTQsIDEyNTIwLCA4MDU4LCAKLSAgICA5NzMyLCA5MjQ4MCwgNTA4MCwgNjQ3NzUsIDUwMzYsIDUwMzUsIDEyMDU5MCwgNDI2MDQsIDk4MzY1NiwgMCwgODA3NCwgCi0gICAgMjc1LCAxMzI5MSwgMTkwNywgNzg4MzgsIDQ0MzIsIDEyMTMxMywgNTAzMywgMTIwMzQxLCAxMjA4MTgsIDQ4MzYsIDM4ODgsIAotICAgIDczNzkyLCAxMDcyOSwgNjQ1NDYsIDEyNzI2MiwgNDM3MDQsIDEyNzI2NCwgOTI5NTcsIDY3NTg4LCA2ODA2MSwgMTI0OTgzLCAKLSAgICA3MDM2MCwgODg1OCwgNjQwOSwgNzY2MywgMTIwMjUyLCAxMjgxMDAsIDExOTAwNywgMCwgNjYzMjEsIDk0MDUyLCAxMjgxNCwgCi0gICAgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgNjA5NCwgNzY0MSwgNDI0NDUsIDEyODc5MiwgOTI0ODcsIDQyNDA2LCAxNjc2LCAKLSAgICA2NzM2MiwgNzQ4NjIsIDY3MzY1LCA1MDMwLCA2NzM2NCwgMTE4ODEwLCAxOTUwMDgsIDczODY5LCA5NjIyLCAxMTM3NjMsIAotICAgIDY5OTQ0LCA2Nzg3LCA2NzM2MSwgOTgzMjcwLCAwLCA2ODMxOSwgMTA1NDQsIDEyOTE5LCA3MTQ4NCwgNzIzOTcsIDAsIDAsIAotICAgIDY5OTA2LCAxMjA3ODksIDk4MzA0MSwgOTQ3LCA2NzY5NSwgNjczNjcsIDEyODUyOCwgMTA5NjksIDY3MjI4LCA3NjEzLCAKLSAgICA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDAsIAotICAgIDQzNTY3LCA3NDA1NiwgMTIwMjY2LCAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCA3MjE4LCA3ODk1LCAKLSAgICA0Mzk1LCA0MzUzOCwgMTE5OTI2LCAxMTk4MzQsIDExOTkyOCwgNzIxMywgNjg0NzYsIDcyMTQsIDcyMTUsIDU4NzksIAotICAgIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgMTIwMTczLCA2NTU0MCwgNjczNTksIDYyNSwgODE4NywgNDI4NjEsIDExMTMsIAotICAgIDcyMzYsIDc5MTUsIDM2MzAsIDEyMDE3NiwgODE3OSwgNzAxNjMsIDY3ODg2LCA5MzE2LCAxMDk4MCwgMjQ4OSwgNjU2MjQsIAotICAgIDgxNTAsIDEzNTksIDY3NjUyLCA3MDQ2NCwgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAKLSAgICAxMjczMjQsIDEyNzMyMSwgNzQ0MTAsIDEyNzMxOSwgMTI3MzIwLCAxMjczMTcsIDEyMTI4NCwgMTI3MzE1LCAxMjI4MywgCi0gICAgMTYxNiwgMzc5NSwgNjc3MzIsIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDEyODI4MCwgCi0gICAgNjc3MjQsIDMyMzksIDY2ODkzLCAxMjg4MTgsIDAsIDg0MzEsIDAsIDQyMTY0LCA3MTIyOSwgMTE3NzgsIDEyNjIwLCA2ODI2LCAKLSAgICA3Mzc3MywgNzAxNjksIDUwNDAsIDEyNzk2OSwgMCwgNjcwOTQsIDc4NDIwLCAwLCA1MDM5LCA5ODMyNDEsIDc4NDE4LCAwLCAKLSAgICA1MDM4LCAwLCA5ODM4NjIsIDEzMTg0LCA0Mzk2MCwgMTIwOTMxLCA2NDY0OCwgMCwgOTM1OSwgNzg0MTYsIDkxNzYyMywgCi0gICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgNzAxODIsIDM4NjMsIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIDEyNzgyMiwgCi0gICAgNDMwOSwgNzEyNywgMTk0NTY5LCAwLCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIDEyODgwNCwgNzM4MTMsIDcxMSwgCi0gICAgNDM4OSwgNzEzMywgMTIwNjQzLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAxOTQ1NzAsIDQxMzMxLCAxMDA2LCA3NDI0MCwgCi0gICAgNjcyMjQsIDE1NTAsIDgyMDEsIDcwNDUzLCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA0Mzk1NywgCi0gICAgNjUyNjcsIDM3NTgsIDAsIDY1NzgxLCA2NDczNCwgNjcyMjIsIDI0NDAsIDQzOTU1LCA3MDc4NywgODQ0OSwgMCwgNTAwOCwgCi0gICAgOTgzNTcyLCAyMTE4LCAxMjY1MDgsIDEyMTIxLCA4MjU1LCA1NTEyLCA3Mzg3NSwgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgCi0gICAgMjEzMywgMTExOSwgMTIxMjUwLCAyMTE0LCAyMTE2LCAyNDU1LCAxMTM3OTgsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIAotICAgIDEyNzQ4NiwgODcxNCwgOTgzODIwLCAyMTEzLCAxOTUwNDksIDIxMTUsIDEyODE3NywgMTI3OTA3LCA0MzcxMywgNTA1MiwgCi0gICAgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgNjU3NzMsIDE0MjksIDQyNjQ3LCA1MDUwLCAzMDIsIAotICAgIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIDEyNzI2LCA3NDU5NCwgOTExNywgOTgzMTgxLCAxMjAwMywgCi0gICAgNTUxMywgNTEwOSwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgNzg0MzcsIDAsIDE5MjUsIAotICAgIDcxMjUxLCA5MjIzNywgNzQ4MDcsIDk4MzA2MiwgNTA0OCwgNTA0NywgMTk0ODM3LCA5ODMzODAsIDc0MjAxLCA5MjMxMywgCi0gICAgMTk0ODAyLCA3NDQ5NywgODI5ODIsIDgwODksIDY5MjksIDYzOSwgODI5ODEsIDY4MTc5LCA2NDQ0MiwgNzAxODAsIDgyOTg0LCAKLSAgICA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgCi0gICAgNjk1MSwgOTQwMTcsIDEyOTE5NywgMzUzMCwgOTc1MCwgMTI4MzE3LCAxMjA5OTEsIDY2NTYsIDQyNjE4LCA3MDE3NSwgCi0gICAgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCA0MjAyNiwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCAKLSAgICA5MDA2LCAxMzEyOCwgNTA0MywgMTIxMzM1LCA3ODUzLCA2NzgwOCwgNzQwMDQsIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgCi0gICAgMTI4ODgzLCAxMTkwNzAsIDcwMTc0LCA0MTc1MCwgMzU4NiwgNjQ1MDgsIDQzMTQ4LCAwLCAxMjc5NzEsIDExOTYwNiwgCi0gICAgNjc5ODMsIDEzMjk2LCA1MTcsIDAsIDEyODQ2NywgMTk0OTQ2LCA0MTUyOCwgMTIzLCA2NTQ1NCwgMCwgMTIxMzI2LCAKLSAgICA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAxOTQ4NTcsIAotICAgIDE5NDU5MSwgMCwgMzkyNSwgNDI1MSwgODA2OSwgMTA1MTcsIDcxMTEyLCA0ODksIDcxMTEwLCA0MjUwLCA5MjI2NiwgCi0gICAgMTIwNDUyLCA0MzE1MSwgOTgzMTc4LCA5MjczOCwgNjYyMDAsIDAsIDAsIDEyNTAyNiwgNzQyOTgsIDEyODg3OSwgOTgzNDc2LCAKLSAgICA4NzExLCA2MTgzLCA4MzQ0OCwgOTgzOTUyLCA3MjQwMiwgMTIwNDQ4LCA3NjIzLCAxMTg5MjUsIDY2Mzc2LCA5MjM1LCAKLSAgICAxMjc2MCwgNzQxNzYsIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAKLSAgICAwLCAxMjY1OTcsIDEyMDQzNCwgMTk0ODUwLCA3NzI2LCAxOTUwOTUsIDE5OTIyLCAyNjcsIDMzOTMsIDQyMTk4LCAxMzcxLCAKLSAgICAxOTQ4NDksIDY5MjMzLCAyNDU4LCAwLCA2MjAxLCAwLCA0MTA3NCwgNDI2NiwgMTA2NTIsIDQxNjEyLCA0MTA3NywgMzQwMiwgCi0gICAgOTA1MCwgMzM5OCwgMTI4NDI0LCA5ODMzNTAsIDAsIDMzOTEsIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAKLSAgICAxMjkxMDYsIDEyNzY3LCAxMzAxNywgNzg3NDMsIDY0MjYxLCA2NDkzNCwgNzAxNTIsIDEzMDE0LCAxMzAxMywgMTIxMTk4LCAKLSAgICA2NjczLCAwLCAwLCAxMjEzMjQsIDEyNDM4LCAwLCA5ODMzNDQsIDgzMTA2LCA3MTEyOCwgMTIwMDYyLCA5MDUzLCAxMzAxNSwgCi0gICAgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDc0OTQ5LCA2NjYwLCA3ODc1OCwgOTE3NzYwLCA3NDg2MSwgNDIyMTIsIAotICAgIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCA2NzM0MywgMTIxNDM3LCAxMjkwODYsIDQzODc2LCA5Mjk0MSwgCi0gICAgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxMjg1OTUsIDQzOTQ5LCAxMjAwNDgsIDc4MDk5LCAxMjcwODUsIDAsIAotICAgIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgOTgzNjA2LCA3ODQ1OCwgNjY3MjgsIDE4MTYsIDQzOTUyLCA0MjUzMywgCi0gICAgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDQzOTUwLCA3ODEwNSwgNDkwMSwgMTgyMSwgNDM5NTEsIDU3OCwgMzY1MywgCi0gICAgMTI4OTQ2LCA3OTEsIDkxNjIsIDY5NzcsIDc0MTk2LCA3ODg4OSwgNzAxNjAsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgCi0gICAgMTE5MzAzLCA5ODM0NTEsIDc1NTcsIDExOTEwOCwgNjczNzgsIDgyMzQsIDcyNDEsIDEyODYwOCwgMTEzNzM1LCAxMTkxNjcsIAotICAgIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAzOTQ2LCA3ODA3OCwgMTA5OTgsIDc4MDgwLCA2NzMsIDE5NDg2NywgNjQzOTcsIAotICAgIDEyODI3NiwgNzQ1OTksIDc4NDQ5LCA4ODkwLCAxOTQ5NzcsIDE5NDk3NiwgMjQ0OCwgNzgwODUsIDEwMjY3LCA4NDI0LCAKLSAgICAyNDUyLCA3ODA4MywgNjcyMTcsIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCAxMjY1NjQsIDcxMzAyLCA0NDA4LCA0MTIyLCAKLSAgICA2NzcyLCAxMTAzOSwgODcyMywgNjU4OTYsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA3MTkwNCwgMjQzOCwgNjQ4NTUsIAotICAgIDExOTMwMCwgMTE5Mjk5LCAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgCi0gICAgMTI4NjM5LCAwLCAwLCA0MTk1MiwgOTMwMjMsIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIAotICAgIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIDEyOTYzLCA3MDMyMCwgNjE4OSwgNDEyNSwgMTMxNCwgMTIxMzMsIDEyMDM0MCwgCi0gICAgMTE4ODczLCAxMjcxLCA5ODM2NDAsIDEyOTExMiwgNjYwMjQsIDQxNDgyLCAzODY0LCA5MjA0LCAwLCAzODc5LCAwLCAKLSAgICAxMjk3OCwgNDE2NiwgNDU3NCwgMTI4MTExLCA3NTY3LCA3NDU5LCA3ODEyOCwgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgCi0gICAgNzAxNTQsIDU3NTksIDE5NDg2OSwgMTIxNDEzLCA0MTM4OCwgNjQ0NDYsIDQxMzkyLCA2NDI4OCwgNDEzODcsIDY3MjAxLCAKLSAgICA4NzA2LCA1NTUyLCA2ODgzNywgNzAwLCAwLCA1NTUzLCAwLCA3MDg4LCA1MzU2LCA3NDk5LCA2ODAwNywgNjY1OTYsIAotICAgIDc0MDY2LCA2NzI1MSwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDExMTE1LCAxMjEwMzUsIAotICAgIDc2MTgsIDg1MTcsIDExNDU1LCA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCAKLSAgICA0MjgwMywgNjUwMzMsIDkxNDMsIDY2NjgsIDY3Mjg4LCA2Nzk5NSwgMTk1MDY5LCA2NTYsIDE5NTA3MSwgNjUwMzcsIDQ1NzcsIAotICAgIDY0NjI0LCAwLCAwLCA3MTkxMiwgMTk0OTA4LCA0MjY5LCA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMCwgCi0gICAgOTIyNzMsIDY2NTgwLCA3Nzk5MiwgNjY2ODMsIDEwNTU0LCAxMTkwMDgsIDExOTEyMSwgNjgzMiwgNTA5OCwgOTE3NzY4LCAKLSAgICAxOTQ2NjgsIDcwNDAzLCA1MDk3LCA0OTM1LCA5ODQ4LCAxMDM4MSwgMCwgNjcyOTYsIDkyODk2LCAzNjUxLCAwLCA2NzI5NCwgCi0gICAgNzA4NDgsIDUxMDIsIDUxMDEsIDEwMjY5LCAxMjk4MywgODEzOCwgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgMTIwOTMsIAotICAgIDEyNDcsIDEwMDM0LCAxMjEzNDAsIDUwOTksIDc4MzczLCAxNDQxLCA0MjA4NywgMzA2MywgNjUwLCAxMTk5NTMsIDc4MzgsIAotICAgIDAsIDEyODY1NSwgMTk1MDQwLCAxMTkxNDIsIDkwMzEsIDcwODI5LCA3ODQyNywgOTA3OCwgODU0NSwgNjYzNTYsIDEyODc5OSwgCi0gICAgMTk0OTIzLCA5MTU0LCA5MTE4LCAxMjY1NDMsIDExOTU4NiwgMjY3NiwgMjI3NywgMTI4NDIyLCA2ODIzNywgNjE5MCwgCi0gICAgODU5OSwgMTI1MTE4LCA2OTkxOCwgMTA3OTUsIDk4NTcsIDcwMTQsIDk4NTYsIDE5NTAzMywgNzE5MDMsIDEyMTI5LCAKLSAgICAxMjY2NTEsIDg0ODEsIDgzMDY4LCA2MjAyLCA2NzcxMSwgMTA5MjAsIDExMzcyNiwgNTIwMywgMTk1MDM5LCAxOTUwMzgsIAotICAgIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgOTc2MiwgMTEyMDUsIDU1NDEsIDc0NzcyLCAwLCAxMjYxMywgNTI4NCwgNjY1NywgCi0gICAgMjA3LCAxMjEyMDYsIDQyNzUsIDc0ODE5LCA4NTQsIDY4MTQ3LCA3NDM4MSwgNjY4MTYsIDc4Nzg2LCA1MTAzLCAxMjc4NjEsIAotICAgIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMTk0NjEyLCA0MzAzNCwgMTE0MzgsIAotICAgIDY0Njc0LCAwLCA3MDE1OCwgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIDQxMzY3LCAKLSAgICA1MTA1LCA2NTI2NiwgNjk3MjAsIDY0NzYsIDUxMDQsIDk4Mzc0OSwgMzA0LCAzMTc2LCA3ODg3MSwgNzAxNDksIDkzMiwgCi0gICAgMTEzNjgzLCA2NTY3LCAyMzgsIDY5NjU2LCA3ODQzMiwgMTk0NTk1LCAxOTkwNSwgNDM4NTAsIDE5NTAxNSwgNzg4NzAsIAotICAgIDQxMDQ0LCA2NzY0MCwgNjczMDIsIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgMTI1NTIsIAotICAgIDkzMDM5LCA4ODAzLCAzMDksIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDcwMTcxLCAxMjU2OCwgMTI3OTE3LCAKLSAgICAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDEyNjUzNSwgNjUxNjUsIDkyNzI1LCAwLCAKLSAgICA2NjQ2NiwgMTI0OTg2LCAxMjc3ODQsIDAsIDY2NzI1LCA2MTkxLCAxMTM1MSwgMTA0MzcsIDExMzE2LCA2NzYzNCwgNDM3NjMsIAorICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCA3MTg3OCwgMTAwMzc3LCAxMjEyNTYsIAorICAgIDY0NjE1LCA0MTkxNSwgMTAwMzc1LCAxMjA3NSwgNDIwNDEsIDEyNTA4NCwgNTE3NCwgOTgzMjE3LCAxMDAzNzIsIDc0MTg2LCAKKyAgICAzMTIzLCAxMjUxMDAsIDEyNjg1LCAxMTkyMTYsIDg0MDgsIDY0NzA0LCA4MzMyOCwgMTIyODkxLCA5MjIzLCAwLCA0MTYxNiwgCisgICAgNjc5OTksIDczNzk3LCA4MzMyNywgMTExNiwgNzUwNjcsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgODU0OCwgMTIwNDg1LCAKKyAgICA5ODM4NzEsIDc1MDMxLCA5MTc2MjIsIDEyODE2OCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgODMzMzgsIDgzMzMxLCAKKyAgICA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCA2NzI0OSwgNjYzOTgsIAorICAgIDExNDM0LCA2NDA4MywgNjQwODIsIDExMzI5LCA3NzM3LCA2NDA4NywgNjQwODYsIDY0MDg1LCA2NDA4NCwgODMwMzMsIAorICAgIDk5MjcsIDQxMzM1LCA0MTE4LCAxNzk3LCA4MzMxMiwgNDEzMzQsIDAsIDQ2LCA0MzQ0OCwgNzg1OTEsIDI5OCwgODMzMDMsIAorICAgIDgzMzA0LCA4MzMwNSwgNDI2MjcsIDEyNTAxMSwgMzIsIDYxODcsIDgzMDM3LCAxMTQ5NSwgMTE0NTksIDM2NjUsIDgzMDM2LCAKKyAgICA0Mjg3MSwgMTE4OTAyLCAxOTkyMywgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgCisgICAgODMzMTQsIDcxNDQ0LCAxMTkzMjEsIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgODM0NjEsIDY4MDUzLCA4MzQwNywgCisgICAgMTIwMTk4LCA2OTgwOSwgNjE4MSwgNjUwMTQsIDEwMDc1MCwgMTI4NDg0LCA5ODMxOTYsIDM2MzksIDExOTU4OCwgMTE4ODUxLCAKKyAgICA4MzAzOSwgMTE4OTA0LCAxMDA3MywgMTIwMjA2LCA4MzAzOCwgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIAorICAgIDkyNTY1LCAxMjAyMDUsIDkxNzc3MywgMTI4OTE1LCAxMDIwNywgODc4OSwgOTMwNzAsIDEyMDMzOCwgOTI5NzMsIDEyODMyNSwgCisgICAgOTIzNCwgOTE3ODk1LCA2MTgyLCA5ODM0NzUsIDY1MDU4LCAxMjAzMTksIDk4MzIxMSwgNjgwNjQsIDkxNzgzMSwgNTQ3MSwgCisgICAgOTQ2MSwgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDY2ODk0LCAKKyAgICAxNjIyLCA3NzY3LCAxOTAwLCA0MTMzOSwgMTE0NTgsIDExOTA2MSwgOTgzMTgzLCA2NTgxLCA1NTc2LCAxMjg2MTgsIAorICAgIDQzODU1LCA0MTMzNywgOTgzNzcyLCA0MTYzMSwgODk0NywgNjgzOTAsIDY5NjgzLCA0MTY5NCwgOTE3Nzg3LCA3MjM5NiwgCisgICAgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDEyNzg5MCwgNjQ2MTgsIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgNzAwMDUsIAorICAgIDEyMDUwNCwgMTk0ODI4LCA2NjgwMiwgNTA1OCwgNDEwMTAsIDk5OTIsIDEyODI5OSwgNTA1NywgNjk4OTIsIDAsIDc0NTM4LCAKKyAgICA1MDU0LCAxMTg5NTEsIDE5NDk3MSwgNzg2MDYsIDAsIDE0MzcsIDQxNjE3LCA2NTgsIDM0OTcsIDcxMzY1LCA3NDg2LCAKKyAgICA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIDEyODMyMiwgMTI4NTI5LCAxMjExMywgNDIzNiwgNDcyNywgMTI4NDg3LCAwLCAKKyAgICA3NjkzLCAxMDc0OSwgMTIwMzMyLCA3NDg4LCA1NzczLCA5NzgsIDEyODEzNCwgMTI4NjkzLCA0MTYxOSwgMTAyMzksIAorICAgIDY4NjExLCA3MTg2NCwgNjYyMDksIDEyNzIzMywgNzQxMzUsIDk3NDgsIDEwMDM4MywgMTI3NTI0LCAxMjUyMTgsIDk4MzMxNiwgCisgICAgMTk0Njc2LCAxOTQ2NzUsIDEyODA4MSwgNzA2ODEsIDEwMDM4NSwgNzI4MTEsIDgzMzU0LCAxMjc4NjUsIDEyMDk5OSwgCisgICAgOTI3NzYsIDkzNDEsIDc4ODIxLCAyMzc5LCAxMTMyNSwgMTAwMzg2LCA2NDY2OCwgNjc4NTQsIDgxMjUsIDEyMDU0NSwgCisgICAgNjc0MywgODMxNjQsIDkxNzk0MCwgMjM2OSwgODM0MDYsIDk4MzMyMywgMTI3OTY2LCAxMDA1NDMsIDcxODY4LCA3MzkzNiwgCisgICAgNzAwOCwgNDM2NjAsIDEyMDM0NiwgMCwgNDM4NDEsIDIzNjcsIDEyNzgyNywgMTI4Mjc1LCAyNjQsIDIzNzUsIDgwNjAsIAorICAgIDYxOTQsIDExOTg1OCwgMTg0NCwgMTE5MDg0LCAxMjkwNDksIDYwMTksIDEyODk3NSwgOTgzNTU3LCA2OTYxLCAwLCA3MDQzNSwgCisgICAgNjcxNzEsIDg4MDAsIDEyNzMzMiwgNDI4NjIsIDQ0NjMsIDY1NTgxLCA2MTkyLCAxMDA3NDQsIDQyNzcxLCAxMjc5ODMsIAorICAgIDkyMzMzLCA3MjUsIDY1MDQyLCA5MzAxNCwgMTIwODAwLCA3NDk0MiwgMTI4OTIsIDEyNTIxMiwgNjcxNDksIDc0ODk5LCAKKyAgICA3MzkzMSwgMCwgMTIwNDk1LCAxMjcyNjEsIDEyMjI0LCA5ODMxMjgsIDEyOTA2MSwgNTA3NCwgNTA3MywgMTIxMTY0LCAKKyAgICA4OTgzLCAxMTg5ODEsIDc0NDkzLCA3MDcyMywgNTA3MiwgNzQ1NDcsIDYxOTgsIDExNjE0LCAxMjUyNTEsIDE5NiwgCisgICAgOTgzMTU0LCAxMjg4MDUsIDEyODI2MywgNDkyOSwgMTIwMzQyLCAxMjkxNDUsIDEwMDc5NCwgMTAwNzQ3LCAxMjE0NTUsIAorICAgIDQyODQ3LCA5Mjk1MywgMCwgNjc3NTQsIDQ5MzQsIDEyODMzOCwgNDEzMjMsIDk3NTgsIDEyODIxMSwgOTIyODksIDcwMTgxLCAKKyAgICA0MjU4NCwgMCwgNDMyOSwgNDEzMjEsIDQ5NzksIDMwNDgsIDc3NTIsIDQxMzIwLCA5MTc5NTIsIDY0NjY3LCAxMjgxOSwgCisgICAgOTgzNTk3LCA1MDcxLCAxMjc5MTUsIDM2NDIsIDY3MzM0LCA1MDcwLCAxMDA0MiwgMTEzODEzLCAzOTg3LCA1MDY4LCAKKyAgICA5ODM0NjAsIDg5MDksIDc4NjUwLCA3ODY0OSwgNjk5MTcsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAKKyAgICAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDEyMTM1OSwgMTIxMjY3LCAKKyAgICAxMjc5NzIsIDY0NzA5LCA4MzI2OSwgMTI4ODU0LCA3ODg4MCwgNDkyMiwgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgCisgICAgMTI3MjE4LCA5ODMwNTksIDk1MjYsIDQ5MjAsIDEyODYxNywgOTQ4LCAwLCA3MDcwNiwgNDkzMCwgMTI3ODU3LCA5MjE3NSwgCisgICAgMTE5ODg2LCA0OTMzLCAxMTM3NzksIDEyMTA0OSwgMTE4OTg1LCA0OTI4LCA5ODMxNDksIDgzNTE0LCA3NDc3MCwgMTIwMTk0LCAKKyAgICAxMjY1NDgsIDcyMiwgMTk0OTM0LCAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgODI5OTksIDg3NTMsIDE1MDksIDEyNTI2NCwgCisgICAgNTQ2OCwgOTUxMSwgNDM0OTMsIDEyNzQ3NywgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCAKKyAgICA5MjY5NCwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIDEyNjU3NywgNjgzMzYsIDQxNjA3LCA5MjYyNywgMTY3OSwgMTIwMTE2LCAKKyAgICAxMjAxODAsIDc4ODM3LCAxMjc0NjIsIDcwMDUsIDQxNjA5LCA5NTgwLCA3MDQzMSwgNDAxLCA2OTk0OSwgNDM3NzksIDY5NjgsIAorICAgIDU3NjEsIDM0MiwgODU1MywgOTIyNTYsIDgxNDMsIDEyMDk3OSwgMTE5ODMsIDc0MjA4LCA2MjQsIDc0NTA4LCA0MDU3LCAKKyAgICA0Mzc4OCwgNTA3OCwgNzQyNTgsIDEyNDc4LCAxMjAyNTAsIDUwNzYsIDEyODcwMiwgODI5OTEsIDAsIDgyOTUsIDY4NSwgCisgICAgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDEwMDkwNywgOTI1MjMsIDcxNDM1LCA3MTM4LCAxMjA1NTIsIDQzNTA0LCAKKyAgICAxMjUxOTcsIDY2OTE0LCA2NTc5NCwgMTI1MjAsIDgwNTgsIDk3MzIsIDkyNDgwLCA1MDgwLCA2NDc3NSwgNTAzNiwgNTAzNSwgCisgICAgMTAwNDI5LCA0MjYwNCwgMTAwNDI4LCAwLCA4MDc0LCAyNzUsIDEzMjkxLCAxOTA3LCA3NDM3MCwgNDQzMiwgMTIxMzEzLCAKKyAgICA1MDMzLCAxMjAzNDEsIDEyMDgxOCwgNDgzNiwgMzg4OCwgNzM3OTIsIDEwNzI5LCA2NDU0NiwgMTI3MjYyLCA0MzcwNCwgCisgICAgMTI3MjY0LCA5Mjk1NywgMjI3NCwgNjgwNjEsIDEwMDQyMiwgNzAzNjAsIDg4NTgsIDY0MDksIDc2NjMsIDc4MDY5LCAKKyAgICAxMjgxMDAsIDExOTAwNywgMTAwNDI0LCA2NjMyMSwgOTQwNTIsIDEyODE0LCAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCAKKyAgICA2MDk0LCA3NjQxLCA0MjQ0NSwgMTI4NzkyLCA5MjQ4NywgNDI0MDYsIDE2NzYsIDY3MzYyLCA3NDg2MiwgNjczNjUsIDUwMzAsIAorICAgIDY3MzY0LCAxMTg4MTAsIDE5NTAwOCwgNzM4NjksIDk2MjIsIDExMzc2MywgNjk5NDQsIDY3ODcsIDY3MzYxLCAxOTQ5MzAsIAorICAgIDAsIDY4MzE5LCAxMDU0NCwgMTI5MTksIDcxNDg0LCA3MjM5NywgOTgzNjQxLCAwLCA2OTkwNiwgMTAwODU3LCA5ODMwNDEsIAorICAgIDk0NywgNjc2OTUsIDY3MzY3LCAxMjg1MjgsIDEwOTY5LCA2NzIyOCwgNzYxMywgOTI1NjIsIDExOTkzNiwgNDc5NSwgCisgICAgMTAwNDMxLCA3MDE4LCA3Mzc2LCAxMjAxODEsIDEyMDE5MiwgMTIwMjY4LCAxMjAxODksIDQzNTY3LCA3NDA1NiwgMTIwMjY2LCAKKyAgICAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCA3MjE4LCA3ODk1LCA0Mzk1LCA0MzUzOCwgMTAwNDMzLCAKKyAgICAxMDA4NjAsIDExOTkyOCwgNzIxMywgNjg0NzYsIDcyMTQsIDcyMTUsIDU4NzksIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgCisgICAgMTIwMTczLCA2NTU0MCwgNjczNTksIDYyNSwgODE4NywgNDI4NjEsIDExMTMsIDcyMzYsIDc5MTUsIDM2MzAsIDEyMDE3NiwgCisgICAgODE3OSwgNzAxNjMsIDY3ODg2LCA5MzE2LCAxMDk4MCwgMjQ4OSwgNjU2MjQsIDgxNTAsIDEzNTksIDY3NjUyLCA3MDQ2NCwgCisgICAgMTI3MzMwLCA3Mzc1NiwgNTA0MiwgNTA0MSwgNDI3NjksIDEyMDg0LCAxMjczMjQsIDEyNzMyMSwgNzQ0MTAsIDEyNzMxOSwgCisgICAgMTI3MzIwLCAxMjczMTcsIDEyMTI4NCwgMTI3MzE1LCAxMjI4MywgMTYxNiwgMzc5NSwgNjc3MzIsIDg3OTUsIDY2MjQ1LCAKKyAgICAxMjA4MzgsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMTI4MjgwLCA2NzcyNCwgMzIzOSwgNjY4OTMsIDEyODgxOCwgCisgICAgMTk0NjI0LCA4NDMxLCAwLCA0MjE2NCwgNzEyMjksIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDcwMTY5LCA1MDQwLCAKKyAgICAxMjc5NjksIDAsIDY3MDk0LCA3ODQyMCwgMTI3MDM2LCA1MDM5LCA5ODMyNDEsIDc4NDE4LCA5ODM5MzYsIDUwMzgsIAorICAgIDkxNzk5MCwgOTgzODYyLCAxMzE4NCwgNDM5NjAsIDcwNjk1LCA2NDY0OCwgMTI2NjQxLCA5MzU5LCA3ODQxNiwgOTE3NjIzLCAKKyAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAxMDA2MDQsIDcwMTgyLCAzODYzLCA3MzkwOSwgNDgzNSwgNTUyNjYsIDQzNDMyLCAKKyAgICAxMjc4MjIsIDQzMDksIDcxMjcsIDExODg0MSwgMTI5MDc0LCAxOTQ1NjgsIDEzMDEsIDAsIDQyNTg5LCA1NjksIDEyODgwNCwgCisgICAgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgMTIwNjQzLCA3Mzg4MCwgMTE2MTAsIDExMzY4LCAwLCAxMjg0MzYsIDQxMzMxLCAKKyAgICAxMDA2LCA3NDI0MCwgNjcyMjQsIDE1NTAsIDgyMDEsIDcwNDUzLCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIAorICAgIDY1Nzg0LCA0Mzk1NywgNjUyNjcsIDM3NTgsIDk4Mzg0NCwgNjU3ODEsIDY0NzM0LCA2NzIyMiwgMjQ0MCwgNDM5NTUsIAorICAgIDcwNzg3LCA4NDQ5LCA5ODM2ODQsIDUwMDgsIDk4MzU3MiwgMjExOCwgMTIyODk2LCAxMjEyMSwgODI1NSwgNTUxMiwgCisgICAgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyMTI1MCwgMjExNCwgMjExNiwgMjQ1NSwgCisgICAgMTEzNzk4LCAyMTIyLCAyMTIzLCAyMTI0LCAyMTI1LCAxMjc0ODYsIDg3MTQsIDk4MzgyMCwgMjExMywgMTk1MDQ5LCAyMTE1LCAKKyAgICAxMjgxNzcsIDEyNzc0OCwgNDM3MTMsIDUwNTIsIDY2MjIwLCA1ODIxLCA2MTg2LCA2NTc3OCwgNjU3NzUsIDUwNTEsIAorICAgIDY1NzczLCAxNDI5LCA0MjY0NywgNTA1MCwgMzAyLCAzODgsIDQxMTE1LCA3MzUsIDY2MzcsIDU5MDcsIDY1MDg4LCAwLCAKKyAgICAxMjcyNiwgNzQ1OTQsIDkxMTcsIDk4MzE4MSwgMTIwMDMsIDU1MTMsIDUxMDksIDUwNTMsIDc0MjMwLCA1NTEwLCA3ODQ1MSwgCisgICAgMCwgNzg0NDcsIDI0NzAsIDc4NDM3LCAwLCAxOTI1LCA3MTI1MSwgOTIyMzcsIDc0ODA3LCA5ODMwNjIsIDUwNDgsIDUwNDcsIAorICAgIDE5NDgzNywgMTIxMjc1LCA3NDIwMSwgNzg3NDMsIDE5NDgwMiwgNzQ0OTcsIDY1OTMzLCA4MDg5LCA2OTI5LCA2MzksIAorICAgIDgyOTgxLCA2ODE3OSwgNjQ0NDIsIDcwMTgwLCA4Mjk4NCwgNDU5OSwgNDE0MDIsIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgCisgICAgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIDY5NTEsIDc0MzA2LCAxMjkxOTcsIDM1MzAsIDk3NTAsIDEyODMxNywgCisgICAgMTIwOTkxLCA2NjU2LCA0MjYxOCwgNzAxNzUsIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgODk2NywgMTAwNTE2LCA1MDQ1LCAKKyAgICA0MjAyNiwgMTkxNiwgNzk4NiwgNTA0NCwgMTIwNTU2LCA5MDA2LCAxMzEyOCwgNTA0MywgMTIxMzM1LCA3ODUzLCA2NzgwOCwgCisgICAgNzQwMDQsIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgMTI4ODgzLCAxMTkwNzAsIDcwMTc0LCA0MTc1MCwgMzU4NiwgCisgICAgNjQ1MDgsIDQzMTQ4LCAwLCAxMjc5NzEsIDExOTYwNiwgNjc5ODMsIDEzMjk2LCA1MTcsIDk4Mzg3OCwgMTI1MDE3LCAKKyAgICAxMDA1NjUsIDQxNTI4LCAxMjMsIDY1NDU0LCAxMjcyMTUsIDEyMTMyNiwgNzQ0NzgsIDEwNTMxLCA3Nzg0LCA0MTUyNiwgCisgICAgMTA4MjksIDczOTkxLCA4MDU3LCAxMTI2LCA3Mzg5NSwgMTAwODAzLCAxOTQ1OTEsIDk4MzM3OSwgMzkyNSwgNDI1MSwgCisgICAgODA2OSwgMTA1MTcsIDcxMTEyLCA0ODksIDcxMTEwLCA0MjUwLCA5MjI2NiwgMTIwNDUyLCA0MzE1MSwgOTgzMTc4LCAKKyAgICA5MjczOCwgNjYyMDAsIDk4MzYyNiwgMTI3OTA1LCAxMjUwMjYsIDc0Mjk4LCAxMjg4NzksIDEyNjYyNSwgODcxMSwgNjE4MywgCisgICAgODM0NDgsIDk4Mzk1MiwgNzI0MDIsIDEyMDQ0OCwgNzYyMywgMTAwODA5LCA2NjM3NiwgOTIzNSwgMTI3NjAsIDc0MTc2LCAKKyAgICA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgOTgzNzk5LCAxMjY1OTcsIAorICAgIDEyMDQzNCwgMTE5MDUyLCA3NzI2LCAxOTUwOTUsIDE5OTIyLCAyNjcsIDMzOTMsIDQyMTk4LCAxMzcxLCAxMjI5MTksIAorICAgIDY5MjMzLCAyNDU4LCAxMDA0MzUsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCAKKyAgICA5MDUwLCAzMzk4LCAxMjg0MjQsIDEyNzA4MywgMTk0ODk0LCAzMzkxLCA0MTA3NSwgMjQ3NiwgMTI5MTI5LCA3NDk5MCwgMCwgCisgICAgMTA2MjUsIDcwNzE1LCAxMjc2NywgMTMwMTcsIDc4NzQxLCA2NDI2MSwgNjQ5MzQsIDcwMTUyLCAxMzAxNCwgMTMwMTMsIAorICAgIDEyMTE5OCwgNjY3MywgMCwgMCwgMTIxMzI0LCAxMjQzOCwgMCwgOTgzMzQ0LCA4MzEwNiwgNzExMjgsIDEyMDA2MiwgOTA1MywgCisgICAgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA3NDk0OSwgNjY2MCwgNzg3NTgsIDkxNzc2MCwgNzQ4NjEsIAorICAgIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgNjY4MDksIDEyMTQzNywgMTI5MDg2LCA0Mzg3NiwgCisgICAgOTI5NDEsIDY1NDQ4LCA3ODEwMCwgMTI5NDgsIDExOTAwMSwgMTE5OTI2LCA0Mzk0OSwgMTIwMDQ4LCA3ODA5OSwgMTI3MDg1LCAKKyAgICAxMjc5NjQsIDEyODMyMCwgNDI4NywgODI3NiwgNDkwMiwgMTEzMSwgOTgzNjA2LCA3ODQ1OCwgNjY3MjgsIDE4MTYsIAorICAgIDQzOTUyLCA0MjUzMywgMTY4LCA0Mjg0NSwgNDg5OCwgNjQyOTgsIDQzOTUwLCA3ODEwNSwgNDkwMSwgMTgyMSwgNDM5NTEsIAorICAgIDU3OCwgMzY1MywgMTAwNDc2LCA3OTEsIDkxNjIsIDY5NzcsIDc0MTk2LCA3ODg4OSwgNzAxNjAsIDAsIDczNzMxLCA4MzU0LCAKKyAgICA0MzU5MCwgMTE5MzAzLCA5ODM0NTEsIDc1NTcsIDExOTEwOCwgNjczNzgsIDgyMzQsIDcyNDEsIDEyODYwOCwgMTEzNzM1LCAKKyAgICAxMTkxNjcsIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAzOTQ2LCA3ODA3OCwgMTA5OTgsIDY2ODA3LCA2NzMsIDE5NDg2NywgCisgICAgNjQzOTcsIDExOTIzNSwgNzQ1OTksIDc4NDQ5LCA4ODkwLCAxOTQ5NzcsIDExOTMyMiwgMjQ0OCwgNzgwODUsIDEwMjY3LCAKKyAgICA4NDI0LCAyNDUyLCA3ODA4MywgNjcyMTcsIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCAxMjUxMTcsIDcxMzAyLCA0NDA4LCAKKyAgICA0MTIyLCA2NzcyLCAxMTAzOSwgODcyMywgNjU4OTYsIDcxMzEwLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA3MTkwNCwgMjQzOCwgCisgICAgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAxMTc1LCAxMjkxMzYsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIAorICAgIDExNTIxLCA3NzIzLCAxMjg2MzksIDEyNTI0MiwgMCwgNDE5NTIsIDkzMDIzLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCAKKyAgICA1MjAyLCAyNDA0LCA1MjY3LCA0MjgyMywgMTEyOTEsIDE5OTE1LCA1Mjc3LCAxMjk2MywgNzAzMjAsIDYxODksIDQxMjUsIAorICAgIDEzMTQsIDEyMTMzLCAxMjAzNDAsIDExODg3MywgMTI3MSwgOTgzNTU2LCAxMjkxMTIsIDY2MDI0LCA0MTQ4MiwgMjQzNCwgCisgICAgOTIwNCwgOTE3NTU4LCAzODc5LCAxOTQ4NjgsIDEyOTc4LCA0MTY2LCA0NTc0LCAxMjgxMTEsIDc1NjcsIDc0NTksIDc4MTI4LCAKKyAgICA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA3MDE1NCwgNTc1OSwgMTk0ODY5LCAxMjE0MTMsIDQxMzg4LCA2NDQ0NiwgCisgICAgNDEzOTIsIDY0Mjg4LCA0MTM4NywgNjcyMDEsIDg3MDYsIDU1NTIsIDY4ODM3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIAorICAgIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCAKKyAgICA3ODExMywgNjY2NSwgMTExMTUsIDEyMTAzNSwgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIAorICAgIDc4MDg4LCA2NjgxMCwgNzgwOTEsIDAsIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgNjcyODgsIDY3OTk1LCAxOTQ5ODYsIAorICAgIDY1NiwgMTI4NTc0LCA2NTAzNywgNDU3NywgNjQ2MjQsIDEyOTM1NCwgMTIwMjY0LCA3MTkxMiwgMTk0OTA4LCA0MjY5LCAKKyAgICA3Mzg4NSwgOTE3Nzc1LCA0Mjg0NiwgNjk2NDQsIDk1MCwgMTk1MDg1LCA5MjI3MywgNjY1ODAsIDc3OTkyLCA2NjY4MywgCisgICAgMTA1NTQsIDM0MTcsIDEwMTA1NywgNjgzMiwgNTA5OCwgOTE3NzY4LCAxOTQ2NjgsIDcwNDAzLCA1MDk3LCA0OTM1LCA5ODQ4LCAKKyAgICAxMDM4MSwgMCwgNjcyOTYsIDcyNzk4LCAzNjUxLCAwLCA2NzI5NCwgNzA4NDgsIDUxMDIsIDUxMDEsIDEwMjY5LCAxMjk4MywgCisgICAgODEzOCwgNDUxNywgMTkzMiwgNTEwMCwgMTQzOSwgMTIwOTMsIDEyNDcsIDEwMDM0LCAxMjEzNDAsIDUwOTksIDc4MzczLCAKKyAgICAxNDQxLCA0MjA4NywgMzA2MywgNjUwLCAxMTk5NTMsIDc4MzgsIDk4MzY2OSwgMTI4NjU1LCAxOTUwNDAsIDExOTE0MiwgCisgICAgOTAzMSwgNzA4MjksIDc4NDI3LCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAxOTQ5MjMsIDkxNTQsIDkxMTgsIAorICAgIDEyNjU0MywgMTE5NTg2LCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCA4NTk5LCAxMjUxMTgsIDY5OTE4LCAKKyAgICAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIDEyNjY1MSwgODQ4MSwgODMwNjgsIDYyMDIsIAorICAgIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDEyOTMyOCwgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCAKKyAgICA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAyMDcsIDEyMTIwNiwgNDI3NSwgNzQ4MTksIAorICAgIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCAKKyAgICA2OTgxMSwgMTAwOTExLCA3MTMzOSwgMTAxNTcsIDE5NDYxMiwgNDMwMzQsIDExNDM4LCA2NDY3NCwgMCwgNzAxNTgsIAorICAgIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCA0MTM2NywgNTEwNSwgNjUyNjYsIDY5NzIwLCAKKyAgICA2NDc2LCA1MTA0LCAxOTQ3MzQsIDMwNCwgMzE3NiwgNzg4NzEsIDcwMTQ5LCA5MzIsIDExMzY4MywgNjU2NywgMjM4LCAKKyAgICA2OTY1NiwgNzg0MzIsIDE5NDU5NSwgMTk5MDUsIDQzODUwLCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDY3MzAyLCAKKyAgICA0MjA1NSwgOTkxMiwgNjU5MzksIDEwNjcwLCA3NDA5MywgMTMyNzMsIDAsIDEyNTUyLCA5MzAzOSwgODgwMywgMzA5LCAKKyAgICA2NjIyLCA4MTUxLCAxMDg1OCwgNzg3MDYsIDY3NjM2LCA3MDE3MSwgMTI1NjgsIDEyNzkxNywgMTI1NTMsIDEwODE0LCAKKyAgICA0MzI3NSwgNjk1MCwgOTcxMiwgNjg2ODAsIDQzOTcwLCAxMjY1MzUsIDY1MTY1LCA5MjcyNSwgOTgzODIyLCA2NjQ2NiwgCisgICAgMTI0OTg2LCAxMjc3ODQsIDEyODUzNCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgCiAgICAgMCwgNDE3NTQsIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ2MDAsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDEyMTA1NiwgMzIyMiwgCi0gICAgMTIxNDM5LCAxMjExMzcsIDAsIDY2NjYzLCA5ODMwNDcsIDkzMDY3LCAxMDgzNCwgOTgzMTI3LCAwLCA2NTczMiwgOTQwOTUsIAotICAgIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMjA3MzQsIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIAorICAgIDEyMTQzOSwgMTIxMTM3LCAwLCA2NjY2MywgMTI3OTI4LCA5MzA2NywgMTA4MzQsIDEyNzU0NywgMCwgNjU3MzIsIDk0MDk1LCAKKyAgICA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTAxMDIxLCA2NzMwOSwgNzc4MSwgNDEzODMsIDY0NTY4LCA2NzMxMSwgMTIwNzM4LCAKICAgICAxMjA3NywgNzQ0MzMsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgNjcyNjAsIDI0NzksIDY3MzA2LCAKICAgICAzNjMyLCAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCA2NzI2MywgNzQ4NDQsIDY3NjM5LCAzNjM2LCA2Nzg5NCwgMzY1MCwgCi0gICAgODgzNywgNjUyMjksIDE4NDMsIDQyMjgzLCA0MzI1MCwgNDE1NjIsIDkxMDAsIDc0NTQ4LCA2ODgyNiwgMzY0MCwgMTI3MTkwLCAKLSAgICA0MjMyMSwgNzI4NCwgOTI4ODAsIDExODk4NywgMTk0OTUwLCAxOTQ5NDksIDc0MTE1LCAxOTQ5NTEsIDEyNjY0OSwgCi0gICAgMTk0OTUzLCA0MjA4MCwgMjUyOSwgMCwgOTgzNzg0LCA2NjAxMCwgNDIwODMsIDc0OTUyLCA2ODM5OCwgMTk0OTU3LCAKLSAgICA2NzYxOSwgNjYzNjcsIDE5NDk1OCwgOTYzNCwgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCA0Mjk1LCA2NTI2NCwgNjgwMDYsIAotICAgIDAsIDY3ODM1LCAwLCA3ODUsIDgyMzYsIDEyODY0NywgOTAyNywgNjgxNjAsIDY3NjIzLCA2NDM4MywgMTIwMjY1LCA5MjUsIAotICAgIDEyNzE1NiwgMCwgNDE5ODUsIDQxMDcxLCA5NTg2LCAxMjA5ODgsIDQxOTg0LCA5MjE3LCAxMjgzNzIsIDkyNTEwLCA5MjIxOCwgCi0gICAgOTE4NiwgMjA2NywgNDAxNiwgOTgzODAzLCAwLCAzODEsIDEyOTM2LCAwLCA0MjA3NywgOTI5ODUsIDY5ODgwLCA1MTg0LCAKLSAgICA0MjA3OCwgMTk0NjA3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAxOTk0MywgNTg2MCwgNjc2MzMsIDEyMTMzNCwgMTI3MTA0LCAKLSAgICA4MTIsIDM2MTUsIDcyNDAxLCA1MTc4LCA0NDAwMCwgOTI0MzYsIDc4ODA3LCA1MTg4LCA3NDI4NywgNjc2MjksIDM2MDUsIAotICAgIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMTI3NzkzLCA2NzYzMSwgNDI2MTYsIDEyMDY3MCwgMjQ0MiwgCi0gICAgMTA3MDMsIDY3MzE3LCA2NzYzMiwgNjczMTYsIDEyNzcxLCAxMjczNiwgMTI3NTMsIDY2NzA4LCA3MzkzMywgNjc2MjYsIAotICAgIDQyNDAxLCAxOTQ4NjUsIDY5ODcyLCAxMjczNzMsIDQyMjg4LCAxMjc1MSwgNzQ5MDYsIDg1NDIsIDEzMTQ1LCAxOTQ5NjMsIAotICAgIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgMzg4MywgNjQzODgsIDQyNDc5LCA3MTIyMCwgNDExMTcsIDAsIDkyNTgwLCAKLSAgICAxMjg2MjQsIDc0OTM5LCA2NzYyNCwgMTI3OTc2LCAxMjkwLCAwLCA2NTU4NSwgMjcxNSwgODA2LCA2NTIwOCwgNDE4ODQsIAotICAgIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDc4MDA0LCAwLCAwLCA2NjMyNSwgMzQ2NSwgMjQwNSwgOTI0MCwgOTgzODU4LCAxMjc1NiwgCi0gICAgNjUyNTksIDAsIDk4Mzc4MSwgMTI3NTIsIDU4MzMsIDE0MzIsIDExMjQ2LCA0MTg4MywgNzM5MTIsIDk3OTksIDkxNzg5MywgCi0gICAgNDE4ODYsIDI0ODAsIDEyNzkwNiwgMjA2MiwgNjczMjYsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDEyNDk2OSwgCi0gICAgMTIxMSwgMCwgMTIwOTcxLCA2NzI2OSwgMTE4ODMyLCAxMjMxOCwgMTI5MDI0LCAxMTM3OTYsIDY4MDA1LCAxMDYyMiwgCi0gICAgOTgzNzc5LCAwLCA2ODgyMSwgNjU2NiwgNzExOTUsIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMCwgCi0gICAgODI4NCwgMTMwODEsIDExOTIwNiwgMzU4OSwgNDIwNTEsIDQwMzUsIDY0OTIsIDgzMDAzLCA0MjY1LCA2NjQyLCAzOTc3LCAKLSAgICA3NDE4NiwgNDE3NzgsIDgzNiwgOTI5NDcsIDI0ODgsIDEyNTA5NiwgNDU4MiwgMCwgNzE0MjYsIDQxNzc3LCAxMjkyNiwgCi0gICAgOTgzMzc5LCA3NTI4LCAxMDU1MCwgMTEzNzYxLCA5MjcwNiwgOTgzOTU1LCAxMDk2MSwgOTM5NzcsIDEzNzQsIDY0ODc4LCAKLSAgICAxMTkwMTQsIDY3NzIwLCA0MjM4OSwgNDEzNzQsIDIyODYsIDkxNzYwNCwgNzg0OTIsIDQxMzc3LCAxMjc5MDksIDE5NTA0NywgCi0gICAgNDAwLCAxMjU5NywgMTIwNTg2LCAxMjgwOTcsIDEyOTA3MSwgNjY2MSwgOTE3OTYxLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgCi0gICAgMCwgNzEzMDEsIDEyNzI5MiwgMzQ3MywgNzcxOCwgMTEzNzU1LCA2ODgxNCwgMCwgNTUyODUsIDczNzg0LCA2NjM5NCwgMCwgCi0gICAgMTE5NjksIDEyMDQ2MSwgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCA5MjU1MSwgODA4MCwgNzAwNiwgMCwgMTE4OTAyLCAKLSAgICA2NzU3LCA2NDM1MSwgMTU0NCwgNjcxNTYsIDY3NjYsIDY0Njc3LCAxMjA3MTYsIDY3MDg4LCA2MTQ2LCA3NDAzMSwgNzcxLCAKLSAgICAxMjA2ODIsIDAsIDEyODEyLCAxMzE2OCwgNDIyNzIsIDEyMjAwLCA2NjQyMywgNzkwNCwgMCwgOTUzLCAxMjkxNywgCi0gICAgMTE5NTYwLCAxMjMwMCwgNjcwODksIDExNDkxLCA5NzI0LCAxMDM0MSwgOTgzNzczLCA5NTI0LCA3NDkwLCAxMTM4OSwgCi0gICAgNzQ4OSwgMzM3OSwgMCwgNzQ4NywgMTk0NjI0LCA0NzEsIDc0ODQsIDc0ODIsIDY3NTMsIDc0ODAsIDU3NjQsIDc0NzgsIAotICAgIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIDc0NzIsIDI0NzQsIDc0NzAsIDc0NjgsIDEwMjMyLCAxMDYxNSwgCi0gICAgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCAxMTgzNCwgMzU0NCwgOTgzNzg1LCA2MDE3LCA2NTMxMSwgNzQ5MzUsIAotICAgIDEyMDIxNiwgMTMzMDYsIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgMTk0ODgyLCAxMjA1NDQsIDAsIDEyNzk1MCwgCi0gICAgOTI2NjAsIDk4MzM1NiwgNzc4ODksIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgOTIzNDEsIDEyMTEzMywgMjEzOSwgNDI1NiwgCi0gICAgMTIwNzc2LCA3NDM4MCwgNDM4MzYsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDY2NjYsIDcwNTA4LCA2NTEzOCwgMTE5MzU1LCAKLSAgICA2Nzg2MiwgMCwgNjU2NzEsIDcwODMsIDEyMDAwOCwgODA2NiwgNzY3OCwgNzQ4NjUsIDEyNTEzNCwgMTIwMzIxLCAxMjcyODMsIAotICAgIDk4MzM5NiwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgNjY4NDksIDEyNTE0MSwgMCwgODMzMCwgMCwgMCwgCi0gICAgNDI3OTcsIDExMzczNiwgMTIwMjE1LCA4MzAwMSwgMzkwMiwgMCwgMTc3MCwgNDM5NTksIDEyNTA2NywgMTU2MCwgNDM5NTgsIAotICAgIDkyMTY3LCA0NTg0LCA3Mzg0MywgMCwgMTE3MTIsIDEwODY2LCA2NzA5MiwgMTExOCwgNzEzMzQsIDc0ODg4LCAwLCAxMDgxLCAKLSAgICA3NDM2LCAxMTE0NywgNzI1MiwgNzAwOTMsIDU5OTYsIDY5OTIxLCA0OTAzLCA2ODE0MiwgNDEzODYsIDUxNjIsIDExOTE4OSwgCi0gICAgMTMzMCwgMTI4NjEzLCA3MTM5LCAwLCAxMjA0NywgNDEzODQsIDAsIDAsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCAKLSAgICA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMCwgOTgzNzQxLCAxMjcxNSwgNjgwMDIsIDE5NDU3NiwgODMyNTYsIAotICAgIDIwMTgsIDY2NjcyLCA0MTk3OSwgNjY2ODUsIDExOTE1NywgNjgwMDAsIDc4NDkwLCAwLCAxMjY5ODQsIDY4MDAxLCA5MzM0LCAKLSAgICA5MjcwNSwgNzA4MDAsIDcwMTAxLCA3OTc1LCAwLCA3Nzk1NywgMCwgNDM0OTQsIDQ4ODQsIDY2NTk3LCA2OTczMiwgMCwgCi0gICAgMTIxMDEwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDEyNzg5MCwgNjgxNzgsIAotICAgIDMxMTcsIDU0NjAsIDEyMTQyMywgMTI4NzE3LCA5ODMzODksIDAsIDQyMjc5LCAxMjcxNDIsIDEyNjUwMywgNzg0MTUsIAotICAgIDk4MzIyOCwgNjg1MjQsIDk4MzM4NiwgMTMyNDgsIDEyNTAyNywgOTgzODQzLCA0Mzk1NiwgMTI4NDE1LCA5ODMxNTMsIAotICAgIDEyMTAwOSwgNTY2MywgNzExMjAsIDEyODQ3MiwgMTI4OTU4LCAwLCAyNDgyLCAxNDcxLCAxOTQ1ODMsIDExMzc0NywgCi0gICAgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDcxNDI3LCAxMjM3NCwgMTIxMzU3LCAxMjcwNjcsIDAsIDExODgyOCwgCi0gICAgMjQ2MCwgNzE4ODIsIDExOTQ0LCAxMjM3NiwgOTIzNDIsIDY0Njc5LCA5Mjg5MywgMTIzODAsIDEwNTU3LCA2NDQ3MywgCi0gICAgNTg3MCwgMTExMjIsIDIwMjQsIDEyNzE4MCwgOTgzMzkxLCA3MTg3OSwgNTM5LCAwLCAxMjAzMDIsIDcwMTIwLCAzODUzLCAKLSAgICA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgOTIzMjQsIDAsIDg2NTksIDAsIDEyNDc0LCA2NzI0MSwgOTUwMywgCi0gICAgMTk0OTY5LCAyNDc4LCAxMjAyNDgsIDQxNjIsIDAsIDQyNjAsIDEyOTUzLCA2OTYzMywgODI5NjYsIDEyNDcwLCA5MjY0MCwgCi0gICAgNzQxODksIDI3NDIsIDEyNDc2LCAxMTc5OCwgMTA5NDYsIDEyNzMxMCwgNTAwMCwgMTEzNjg3LCA5ODM1NzksIDEyODE5MCwgCi0gICAgNjk2NzIsIDgyMTMsIDQzODI0LCA3NzcxLCA2MTYxLCA2ODAxOCwgNjcwOSwgMTk0OTY3LCA3ODg4NSwgMTE5MjQzLCAKLSAgICA2ODIzNSwgMTIwNTgyLCA3ODU0NywgMTEzNzA5LCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAxMTkwNDQsIDAsIDczNzkxLCAwLCAKLSAgICA4MzAzMCwgMCwgMTIxNDgyLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgCi0gICAgNzQ5MDMsIDEyMDkyNywgMTIyMTAsIDcyMjEsIDQyMTQ3LCA3NDg2OCwgNzQ1NTAsIDcxMjE1LCA2NDc0NywgMTE4ODQxLCAKLSAgICAxMjgwODYsIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIAotICAgIDQxOTczLCAzNTkxLCA0MTk2OSwgODMwMDgsIDI0NTMsIDExODg5OSwgOTI2NjYsIDY0NzA1LCA3MTA2OCwgMCwgMTAzNDksIAotICAgIDEwNDEzLCA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAxMjkxNzUsIDgzMTYsIDEyOTE3NCwgMCwgOTQwNjAsIDY4NywgCi0gICAgOTMwNTUsIDEyOTA3NCwgMCwgMTg0MCwgMTI3ODA5LCA2ODY3MSwgMTExMjEsIDQ4ODMsIDI4NSwgNDcyMywgMTExNzUsIAotICAgIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgMCwgNDIzMjMsIDc0NjQwLCAKLSAgICA5NzQzLCAxMjAyMzIsIDEzMTM0LCA5MzA2NSwgMTI4OTU2LCA2NTkzMSwgOTI1NzksIDEyODMyOSwgNDI2MzQsIDk4MzM0NSwgCi0gICAgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDE5NTAxMywgMTA0NDUsIDEyMTMyMiwgOTI5NjksIDY2NzE3LCAyNjE0LCAKLSAgICA5MTI1LCA3MTEyNSwgMTcyOSwgMTI5MDM0LCA3MjQyMCwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDEyNDkyOSwgCi0gICAgNjUxOTQsIDY2MjAxLCAwLCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCA4ODQsIDY2NzAwLCAKLSAgICA2Mzg3OSwgNDk0MywgNTE1MCwgNzM4ODksIDczNzY0LCA0MDM5LCA2NDMsIDMwODYsIDkyNTMzLCA0MjQ0OCwgNDIyOTksIAotICAgIDU4LCAxMjAwODQsIDkxNzk1MiwgMTIwMDgzLCA2Mzg3MywgODQ5MSwgMCwgMCwgOTgzNjIzLCA0NTMwLCA0MjQwOSwgNzEyNiwgCi0gICAgMTk0NTc1LCAyNzIxLCAxMjAwNzMsIDExOTA5NiwgMTk5MjksIDExODk0MSwgMTI4Nzk3LCA5Mjk3NSwgNDI0MiwgNDI2NCwgCi0gICAgMTIwMDc3LCAxMjA1MzAsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIDk4MzE5OSwgCi0gICAgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCA5ODMyNDAsIDU1MjgwLCA0MjE3NCwgMTI3OTU0LCA0MjQzMCwgCi0gICAgMCwgOTgzNDUyLCA0MjM1NSwgNjYwMjYsIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDY4MzE0LCA2NjY2NywgMTE5MzUxLCAKLSAgICAxOTQ5ODIsIDEyMTE3MiwgNDIyMDAsIDQyNTY2LCA3MDAwMCwgMTI4OTI4LCA1MDg4LCA2OTQ4LCAwLCA4NTI0LCAxMjUwNDAsIAotICAgIDAsIDEyMzg1LCAwLCA3NDkyNiwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgNjUwMzksIDY1MDM4LCAxMjM5MiwgCi0gICAgNjUwMzYsIDgwNjQsIDEyNzU1OCwgMTIxMDEsIDU4MjIsIDExOTAwNCwgMjA4MCwgNzEwLCA3Nzk5OSwgMTE2NjMsIDE2NjYsIAotICAgIDQyMDkxLCAxMTk2NTcsIDEyMzgzLCA0MzY3MSwgNDIwOTIsIDY4NDE4LCA0Mjg5LCAxMjc4OTcsIDYzODk2LCAxMjA2MSwgCi0gICAgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMTE5OTM0LCA5ODM4MzQsIDY4NDQ5LCA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCAKLSAgICA3Mzc4NiwgMTI2ODMsIDEwNjYyLCAwLCA4MTEyLCAwLCA2NTg1MiwgNzQ2MjksIDEyMzc5LCAxMjcxMDcsIDkyOTMwLCAKLSAgICA0MTk2NCwgNDIyMDgsIDYzODQzLCAyMDg0LCA0MTk2NSwgNzAwODksIDY1ODY2LCA0MzI3LCAwLCA2Mzg0MCwgNjY0MTMsIAotICAgIDQxMjIwLCAxMzAzMiwgOTI5ODAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgNjk4NTUsIDEzMDAwLCAxMzUxLCAyOTM1LCAKLSAgICA4Njk4LCAxMjY2NSwgMCwgMTkzMCwgMCwgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAwLCA2MzkwMSwgMCwgCi0gICAgMzY1NywgMTE5NjExLCA2NTIwMiwgNjAwMCwgMTEzNzg2LCAxMjQyNiwgMTIxMDU4LCAxMTk5MzUsIDQxNzQwLCAxMjQyOCwgCi0gICAgNDEyODMsIDQxOTE2LCAxMTkyMTAsIDEyODMxOCwgMCwgMTI0MjksIDY3MjcsIDk4Mzk0OCwgNzU2MiwgMTI1MTI5LCA1MTcwLCAKLSAgICA5ODM5MTUsIDQxNzU1LCA2NzYsIDAsIDY2NzA0LCA2NjY2NCwgOTk3OCwgNjY0OTEsIDM1MzYsIDAsIDk3NTIsIDkyMzk3LCAKLSAgICA2MTYyLCA3ODMyMCwgNjkyMjgsIDEwMTEzLCA0MTgyOSwgNjU4ODYsIDUxNTksIDEyNDIyLCA0MTgzMiwgNDM5LCAzMDcyLCAKLSAgICA5MTc4MjgsIDQyMjA3LCA3NDU0OSwgMTE3OTYsIDQwOTcwLCA0MTgzMCwgMTI1MDIxLCA3MDE1MSwgODMwOCwgOTE3Nzk3LCAKLSAgICA3MDgwNywgMTE5MjU4LCA2Nzg2NCwgMTEzNjk2LCA5MTc4MDAsIDEyMzM2LCA0MTM1LCA2NzIzMSwgMzQxLCAyNzI3LCAKLSAgICA0MTI5LCAzNTM5LCAwLCA2Mzg2MSwgMCwgNzkxMywgMCwgNjM4NTksIDQxMzEsIDYzODY4LCAxMjkwODUsIDYzODY3LCAKKyAgICA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDY4ODI2LCAzNjQwLCA5MjQxMSwgCisgICAgNDIzMjEsIDcyODQsIDkyODgwLCAxMTg5ODcsIDE5NDc4MywgMTAwODk3LCA3NDExNSwgMTk0OTUxLCAxMjUxOTksIAorICAgIDE5NDk1MywgNDIwODAsIDI1MjksIDk4MzkwOSwgOTgzNDcxLCA2NjAxMCwgNDIwODMsIDc0OTUyLCA2ODM5OCwgMTk0OTU3LCAKKyAgICA2NzYxOSwgNjYzNjcsIDEwMDg5OSwgOTYzNCwgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCA0Mjk1LCA2NTI2NCwgNjgwMDYsIAorICAgIDAsIDY3ODM1LCAxMDA5MDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIAorICAgIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDEyMDk4OCwgNDE5ODQsIDkyMTcsIDEyODM3MiwgOTI1MTAsIAorICAgIDkyMjE4LCA5MTg2LCAyMDY3LCA0MDE2LCAxMjg4NDgsIDEyOTE4MiwgMzgxLCAxMjkzNiwgOTgzNzM2LCA0MjA3NywgCisgICAgOTI5ODUsIDY5ODgwLCA1MTg0LCA0MjA3OCwgMTk0NjA3LCAxMDgxMCwgMTI4NTMxLCA0NTg1LCAxOTk0MywgNTg2MCwgCisgICAgNjc2MzMsIDEyMTMzNCwgMTI3MTA0LCA4MTIsIDM2MTUsIDcyNDAxLCA1MTc4LCA0NDAwMCwgOTI0MzYsIDc4ODA3LCA1MTg4LCAKKyAgICA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCA2NDQyOSwgNDI2MzksIDkyNCwgMTI3NzkzLCA2NzYzMSwgNDI2MTYsIAorICAgIDEyMDY3MCwgMjQ0MiwgMTA3MDMsIDY3MzE3LCA2NzYzMiwgNjczMTYsIDEyNzcxLCAxMjczNiwgMTI3NTMsIDY2NzA4LCAKKyAgICA3MzkzMywgNjc2MjYsIDQyNDAxLCAxOTQ4NjUsIDY5ODcyLCAxMjczNzMsIDQyMjg4LCAxMjc1MSwgNzQ5MDYsIDg1NDIsIAorICAgIDEzMTQ1LCAxOTQ5NjMsIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgMzg4MywgNjQzODgsIDQyNDc5LCA3MTIyMCwgCisgICAgNDExMTcsIDEwMDg5MywgOTI1ODAsIDEyODYyNCwgNzQ5MzksIDY3NjI0LCAxMjc5NzYsIDEyOTAsIDEwMDU5MSwgNjU1ODUsIAorICAgIDI3MTUsIDgwNiwgNjUyMDgsIDQxODg0LCA5MTc4ODMsIDEzMTgsIDY0NzMxLCA3ODAwNCwgMCwgMCwgNjYzMjUsIDM0NjUsIAorICAgIDI0MDUsIDkyNDAsIDk4Mzg1OCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3ODEsIDEyNzUyLCA1ODMzLCAxNDMyLCAxMTI0NiwgCisgICAgNDE4ODMsIDczOTEyLCA5Nzk5LCA5MTc4OTMsIDQxODg2LCAyNDgwLCAxMjc5MDYsIDIwNjIsIDY3MzI2LCA2NDk0LCA1NTM3LCAKKyAgICA3ODY1NiwgOTgzMjc1LCA3MDY2MSwgMTI0OTY5LCAxMjExLCAwLCAxMjA5NzEsIDY3MjY5LCAxMTg4MzIsIDEyMzE4LCAKKyAgICAxMjkwMjQsIDExMzc5NiwgNjgwMDUsIDEwNjIyLCA5ODM3NzksIDAsIDY4ODIxLCA2NTY2LCA3MTE5NSwgMCwgNzM3ODAsIAorICAgIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAxMjkwNTIsIDgyODQsIDEzMDgxLCAxMTkyMDYsIDM1ODksIDQyMDUxLCA0MDM1LCAKKyAgICA2NDkyLCA4MzAwMywgNDI2NSwgNjY0MiwgMzk3NywgNzI3NDMsIDQxNzc4LCA4MzYsIDkyOTQ3LCAyNDg4LCAxMjUwOTYsIAorICAgIDQ1ODIsIDAsIDcxNDI2LCA0MTc3NywgMTI5MjYsIDcyNzA4LCA3NTI4LCAxMDU1MCwgMTEzNzYxLCA5MjcwNiwgOTgzOTU1LCAKKyAgICAxMDk2MSwgOTM5NzcsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDY3NzIwLCA0MjM4OSwgMjI3MywgMjI4NiwgOTE3NjA0LCAKKyAgICA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMTk1MDQ3LCA0MDAsIDEyNTk3LCAxMDA0ODIsIDEyODA5NywgMTI5MDcxLCA2NjYxLCAKKyAgICA5MTc5NjEsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAxMTk2MTcsIDcxMzAxLCAxMjcyOTIsIDM0NzMsIDc3MTgsIDExMzc1NSwgCisgICAgNjY3NDIsIDEyNTEzOSwgNTUyODUsIDczNzg0LCA2NjM5NCwgMCwgMTE5NjksIDEyMDQ2MSwgMTI3ODQxLCA2MzY1LCAxODg3LCAKKyAgICA2NzYzLCA5MjU1MSwgODA4MCwgNzAwNiwgMCwgOTI3NjMsIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgNjQ2NzcsIAorICAgIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIDEyMDY4MiwgMTk0NjUwLCAxMjgxMiwgMTMxNjgsIDQyMjcyLCAKKyAgICAxMjIwMCwgNjY0MjMsIDc5MDQsIDEyODcxNSwgOTUzLCAxMjkxNywgNzI3MDQsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIAorICAgIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCA3NDg5LCAzMzc5LCAxMjg3NzUsIDc0ODcsIDcyNzE2LCA0NzEsIAorICAgIDc0ODQsIDc0ODIsIDY3NTMsIDc0ODAsIDU3NjQsIDc0NzgsIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIDc0NzIsIAorICAgIDI0NzQsIDc0NzAsIDc0NjgsIDEwMjMyLCAxMDYxNSwgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCAxMTgzNCwgMzU0NCwgCisgICAgOTgzMzkwLCA2MDE3LCA2NTMxMSwgNzQ5MzUsIDEyMDIxNiwgMTMzMDYsIDEwNTMzLCA3ODcwLCA3Mzk0OSwgNzYyNSwgCisgICAgMTAwOTM2LCAxMjA1NDQsIDAsIDEyNzk1MCwgOTI2NjAsIDk4MzM1NiwgNzc4ODksIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgCisgICAgOTIzNDEsIDEyMTEzMywgMjEzOSwgNDI1NiwgMTIwNzc2LCA3NDM4MCwgNDM4MzYsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIAorICAgIDY2NjYsIDcwNTA4LCA2NTEzOCwgMTE5MzU1LCA2Nzg2MiwgMCwgNjU2NzEsIDcwODMsIDEyMDAwOCwgODA2NiwgNzY3OCwgCisgICAgNzQ4NjUsIDEyNTEzNCwgMTIwMzIxLCAxMjcyODMsIDEyNzg3MiwgNzE4NiwgNzI3NTEsIDEyMDU1NSwgNzI3NjMsIDQ0NSwgCisgICAgMTE5MDI4LCA2Njg0OSwgMTI1MDMxLCA5MTc4NDAsIDgzMzAsIDAsIDEyNTAxOCwgNDI3OTcsIDExMzczNiwgMTIwMjE1LCAKKyAgICA4MzAwMSwgMzkwMiwgMCwgMTc3MCwgNDM5NTksIDEwMTAzOSwgMTU2MCwgNDM5NTgsIDkyMTY3LCA0NTg0LCA3Mzg0MywgCisgICAgMTIyOTExLCAxMTcxMiwgMTA4NjYsIDY3MDkyLCAxMTE4LCA3MTMzNCwgNzQ4ODgsIDk4MzQ3NiwgMTA4MSwgNzQzNiwgCisgICAgMTExNDcsIDcyNTIsIDcwMDkzLCA1OTk2LCA2OTkyMSwgNDkwMywgNjgxNDIsIDQxMzg2LCA1MTYyLCAxMTkxODksIDEzMzAsIAorICAgIDEyNjYwMCwgNzEzOSwgMCwgMTIwNDcsIDc2NzUsIDk4Mzg0NywgMTI4Nzk3LCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgCisgICAgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDExMzc5NSwgNzI4MDcsIDEyNzE1LCA2ODAwMiwgMTk0NTc2LCAKKyAgICA4MzI1NiwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgNzg0OTAsIDEyOTE0MCwgMTI2OTg0LCAKKyAgICA2ODAwMSwgOTMzNCwgOTI3MDUsIDcwODAwLCA3MDEwMSwgNzk3NSwgMTAwOTEwLCA3Nzk1NywgOTIxNCwgNDM0OTQsIDQ4ODQsIAorICAgIDY2NTk3LCA2OTczMiwgMCwgOTI5NTgsIDYzMTMsIDY1NTEzLCA2OTg1NywgMTAwOTA4LCAxMjc3OTksIDEyODc1NywgMjM0NSwgCisgICAgNDM2OTcsIDQ2MywgMCwgMTIxMjgxLCA2ODE3OCwgMzExNywgNTQ2MCwgMTIxNDIzLCAxMjc5NTUsIDk4MzM4OSwgMCwgCisgICAgNDIyNzksIDEyNzE0MiwgMTI2NTAzLCA3ODQxNSwgOTgzMjI4LCA4MjIxLCA5ODMzODYsIDEzMjQ4LCAxMjUwMjcsIAorICAgIDk4Mzg0MywgNDM5NTYsIDEyODQxNSwgMTI5MDkzLCAxMjEwMDksIDU2NjMsIDcxMTIwLCAxMjg0NzIsIDEyODk1OCwgCisgICAgMTI3ODU0LCAyNDgyLCAxNDcxLCAxOTQ1ODMsIDExMzc0NywgNDIyNDcsIDEyMzc4LCA3MzkyNSwgNjk2NjQsIDcxNDI3LCAKKyAgICAxMjM3NCwgMTIxMzU3LCAxMjcwNjcsIDAsIDExODgyOCwgMjQ2MCwgNzE4ODIsIDExOTQ0LCAxMjM3NiwgOTIzNDIsIAorICAgIDY0Njc5LCA5Mjg5MywgMTIzODAsIDEwNTU3LCA2NDQ3MywgNTg3MCwgMTExMjIsIDIwMjQsIDEyNzE4MCwgOTgzMzkxLCAKKyAgICA3MTg3OSwgNTM5LCAxMDA5MzMsIDEwMDkzMiwgNzAxMjAsIDM4NTMsIDY1MTgwLCA3MjczMCwgMTAwOTM5LCAxMDA5MzgsIAorICAgIDkyMzI0LCA5ODM3NDIsIDg2NTksIDAsIDEyNDc0LCA2NzI0MSwgOTUwMywgMTAwOTQxLCAyNDc4LCAxMDA5NDMsIDQxNjIsIAorICAgIDEwMDk0NSwgNDI2MCwgMTI5NTMsIDY5NjMzLCA4Mjk2NiwgMTI0NzAsIDkyNjQwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIAorICAgIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAxMTM2ODcsIDk4MzU3OSwgMTI4MTkwLCA2OTY3MiwgODIxMywgNDM4MjQsIAorICAgIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCA5MjI0OSwgNzg4ODUsIDExOTI0MywgNjgyMzUsIDgzMzg4LCA3ODU0NywgCisgICAgMTAwOTIxLCAxMDMwMSwgMTAzMzMsIDEwMzk3LCAxMDA5MjUsIDEwMDkyOCwgNzM3OTEsIDEyMDIzOCwgODMwMzAsIDAsIAorICAgIDEyMTQ4MiwgMTE5MTIzLCA0MDE0LCAxMjg0MiwgNzM5NTIsIDEyMDE1LCAxMjcyOTAsIDgyNzUsIDM4OTMsIDc0OTAzLCAKKyAgICAxMjA5MjcsIDEyMjEwLCA3MjIxLCA0MjE0NywgNzQ4NjgsIDc0NTUwLCA3MTIxNSwgNjQ3NDcsIDEwMDkxOSwgMTI4MDg2LCAKKyAgICAxMjUxNiwgNDQ0NCwgMCwgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgCisgICAgMzU5MSwgNDE5NjksIDgzMDA4LCAyNDUzLCAxMTg4OTksIDkyNjY2LCA2NDcwNSwgNzEwNjgsIDAsIDEwMzQ5LCAxMDQxMywgCisgICAgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMTI5MTc1LCA4MzE2LCAxMjkxNzQsIDAsIDk0MDYwLCA2ODcsIDkzMDU1LCAKKyAgICAxMDA3MDUsIDAsIDE4NDAsIDEyMTIyNCwgNjg2NzEsIDExMTIxLCA0ODgzLCAyODUsIDQ3MjMsIDExMTc1LCA5MjY5MiwgCisgICAgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDkxNzc3MCwgNDIzMjMsIDc0NjQwLCA5NzQzLCAKKyAgICAxMjAyMzIsIDEzMTM0LCA5MzA2NSwgMTI4OTU2LCA2NTkzMSwgOTI1NzksIDEyODMyOSwgNDI2MzQsIDk4MzM0NSwgNDM0MzcsIAorICAgIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDE5NDU2NywgMTA0NDUsIDEyMTMyMiwgOTI5NjksIDY2NzE3LCAyNjE0LCA5MTI1LCAKKyAgICA3MTEyNSwgMTcyOSwgMTI5MDM0LCA3MjQyMCwgNjUyMjEsIDYzODgzLCA0MzMzNCwgNjQ4NTIsIDEwMDkxNSwgNjUxOTQsIAorICAgIDY2MjAxLCAxMDA5MTYsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCAKKyAgICA0OTQzLCA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI1MzMsIDQyNDQ4LCA0MjI5OSwgNTgsIAorICAgIDEyMDA4NCwgMTAwMzU1LCAxMDEwMjYsIDYzODczLCA4NDkxLCAxOTQ2NDMsIDEwMDg5MSwgOTgzNjIzLCA0NTMwLCA0MjQwOSwgCisgICAgNzEyNiwgMTAwODk0LCAyNzIxLCAxMjAwNzMsIDExOTA5NiwgMTk5MjksIDExODk0MSwgMTI3MzI2LCA5Mjk3NSwgNDI0MiwgCisgICAgNDI2NCwgMTIwMDc3LCAxMDA5MDIsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIAorICAgIDEyMDIyNSwgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCAxMTkxODYsIDU1MjgwLCA0MjE3NCwgMTI3OTU0LCAKKyAgICA0MjQzMCwgMTI3ODM1LCA5ODM0NTIsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgNjgzMTQsIAorICAgIDY2NjY3LCAxMTkzNTEsIDEwMDY3NywgMTIxMTcyLCA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMDA4ODEsIDUwODgsIDY5NDgsIAorICAgIDAsIDg1MjQsIDcyNzM2LCAwLCAxMjM4NSwgOTE3ODU1LCA3NDkyNiwgNjk2NDYsIDEzODYsIDY0NTgwLCAxMTQ4MCwgNjExNiwgCisgICAgNjUwMzksIDY1MDM4LCAxMjM5MiwgNjUwMzYsIDgwNjQsIDEyNzU1OCwgMTIxMDEsIDU4MjIsIDExOTAwNCwgMjA4MCwgNzEwLCAKKyAgICA3Nzk5OSwgMTE2NjMsIDE2NjYsIDQyMDkxLCA3NDA2NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIAorICAgIDEwMDg4NSwgNjM4OTYsIDEyMDYxLCA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAxMTk5MzQsIDEyODU4NiwgNjg0NDksIAorICAgIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDEyODc3OCwgODExMiwgMCwgNjU4NTIsIAorICAgIDc0NjI5LCAxMjM3OSwgMTI3MTA3LCA5MjkzMCwgNDE5NjQsIDQyMjA4LCA2Mzg0MywgMjA4NCwgNDE5NjUsIDcwMDg5LCAKKyAgICA2NTg2NiwgNDMyNywgNjM4NDgsIDYzODQwLCA2NjQxMywgNDEyMjAsIDEzMDMyLCA5Mjk4MCwgNTg0LCAxMjkzMywgNDMxNzcsIAorICAgIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIDg2OTgsIDEyNjY1LCAxMDA4NzcsIDE5MzAsIDEwMDg3OSwgCisgICAgNzgyMjksIDEyNDI3LCA2NjUxNCwgNjk4NTksIDEzMDMxLCAxMDA1NzEsIDYzOTAxLCAxMDA1ODcsIDM2NTcsIDExOTYxMSwgCisgICAgNjUyMDIsIDYwMDAsIDExMzc4NiwgMTI0MjYsIDEyMTA1OCwgNzQwMTMsIDQxNzQwLCAxMjQyOCwgNDEyODMsIDQxOTE2LCAKKyAgICAxMTkyMTAsIDEyODMxOCwgMCwgMTI0MjksIDY3MjcsIDEwMDg3MywgNzU2MiwgMTAwODUzLCA1MTcwLCA3ODI0OSwgNDE3NTUsIAorICAgIDY3NiwgMTAwODU2LCA2NjcwNCwgNjY2NjQsIDk5NzgsIDY2NDkxLCAzNTM2LCA4MzA0NywgOTc1MiwgOTIzOTcsIDYxNjIsIAorICAgIDc4MzIwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgMTI0MjIsIDQxODMyLCA0MzksIDMwNzIsIDkxNzgyOCwgCisgICAgNDIyMDcsIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAxMjUwMjEsIDcwMTUxLCA4MzA4LCAxMDA2OTQsIDcwODA3LCAKKyAgICAxMTkyNTgsIDY3ODY0LCAxMTM2OTYsIDkxNzgwMCwgMTIzMzYsIDQxMzUsIDY3MjMxLCAzNDEsIDI3MjcsIDQxMjksIDM1MzksIAorICAgIDEwMDg2MSwgNjM4NjEsIDcwNjgzLCA3OTEzLCAxMDA3NjYsIDYzODU5LCA0MTMxLCA2Mzg2OCwgMTAwMzY2LCA2Mzg2NywgCiAgICAgNDEzMywgMTEzNzEsIDIxMCwgNDYwMCwgOTgzODk3LCA3NDU2MCwgNDEzNywgODA4MiwgNzg1MDYsIDExOTA2MiwgNzg1MDQsIAogICAgIDY3MDQsIDQ1OTEsIDEyODAyOSwgNDM4NzMsIDEyMDc1MywgOTY4MCwgMTI5MzcsIDEyMDYyMywgNTYxLCAxMjE1OSwgMTk1LCAKICAgICA2ODMyMSwgNDE1MDEsIDE5NDU4MSwgNDIwMzEsIDU3MTksIDcxNzIsIDQyNjg3LCA4MzY4LCAxMjgzMDYsIDQxNDk5LCAKLSAgICA5MzA2OCwgNzEwNDcsIDQyMjQyLCA0MTQ5OCwgOTE3Nzk0LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgNjcxODIsIAorICAgIDkzMDY4LCA3MTA0NywgNDIyNDIsIDQxNDk4LCAxMjgxNzgsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCA2NzE4MiwgCiAgICAgMjkyNCwgNjcxODMsIDEyMDUxMCwgMCwgOTgzOTcyLCA5Mjc2NiwgNzM5NDEsIDY3MTg2LCA0MjMzMCwgNjcxODcsIDM5NjksIAotICAgIDEyMTQwNSwgMCwgNzE2OSwgMTk5MiwgOTY1MiwgNzM5NzcsIDcyNDYsIDQyMDg2LCAxMjY2MTUsIDIyMTksIDEyMTM0OSwgMCwgCi0gICAgMTI4ODAxLCA2NzE4MCwgMTI3NTY5LCAzMjcsIDEyMTI3NywgOTA0MiwgOTE3Nzc3LCA5MTc3NzYsIDY1MTQ4LCAxMjQzMywgCi0gICAgOTE3NzgxLCAxMjAyMjIsIDgzMTI5LCAxMjQzMSwgODY2OCwgMTI0MzQsIDY3MTk0LCAxMTM4MTIsIDU5OTksIDc1MDEzLCAKLSAgICA3NzEyLCAxMjQzMiwgMTI4MjQzLCA0MzY1MywgMTcyNiwgMTAxNSwgNzQwNzksIDgyMTIsIDEyODA2NSwgMTEzNzU0LCAKLSAgICA0MjQyMywgMTE5MDY2LCAxOTQ2MTMsIDcyMzk4LCA2NjcwOSwgMTIxMDYxLCA4ODExLCA5MjcsIDkyNTMyLCAwLCAxMjQzNiwgCi0gICAgMTIwMDg3LCA0MjAyMSwgMCwgNjc2NDQsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIDE5NTAxNiwgMTI3OTcyLCAKLSAgICA3ODE5NywgMTEzNDgsIDAsIDc4MDM3LCA5MTk0LCA5ODMxODQsIDAsIDE5OTE0LCAxMjE3OSwgMTI4NzQwLCAyMjk2LCAKLSAgICAxMjg5MzIsIDYzODM2LCA2MzgzMiwgOTE3NzczLCAxMDk2NywgNjM4MTYsIDI1OTQsIDM0NDQsIDYzODE3LCAxMTE3OCwgCi0gICAgOTE3NTg0LCA0MTUwMywgMTI3NDc4LCAxMTI2NSwgNjgyOTUsIDEyMDc1NiwgMTk0OTIyLCA2NzI4NSwgNTY2NCwgMzk3MiwgCi0gICAgMTIwODkxLCAxMjg1ODMsIDEyOTQwOCwgNjcyODQsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgMTA4MTYsIDkxNzc2OSwgCi0gICAgMTEyMTAsIDEyNDE4LCA4NTg2LCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDY4MDgxLCAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAKLSAgICAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgMTk1MDE3LCA2ODEwOCwgMTE0MywgCi0gICAgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgOTE3NTk0LCAxMTg4ODQsIDkwMjEsIDEyMDc4MywgMTE5OTMxLCAKLSAgICAxMTcyNCwgMTI3Nzg3LCAwLCA3MTEyMiwgMTI2NjE5LCAwLCA5ODM2NjEsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgCi0gICAgMTE0MDAsIDQzOTQzLCAxOTQ3OTksIDY2ODMzLCAxMjgyMzksIDk4MzcwNywgOTI1NTcsIDkzOTc2LCAxMjc1MjMsIAotICAgIDEyMDE5MCwgMTMyNCwgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDk4Mzg3MywgNzcxNSwgMzg4MSwgNDE0ODcsIDEyMTE4LCAKLSAgICA0MjUxNCwgNjg2NTEsIDEyODIxMCwgMTI4NTk0LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAKLSAgICAzMDE4LCAxOTQ4MDksIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgNzgyNTUsIDg1MTksIDEyMTIyNiwgMzAxNCwgCi0gICAgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMTk0OTkyLCA2ODAxNCwgNjk5NTEsIDUwNzksIDY0ODAyLCA0MjIxMCwgNDU5NywgCi0gICAgNjU1MzIsIDExODI4LCAxMjAxODUsIDEyMzcxLCAxMTEwNSwgODQwNywgNjcxNjMsIDEwODA1LCA4NTE4LCAxMDc3OSwgCi0gICAgMTIwMTg4LCA3MTMwMywgMTIxMjQwLCAxMjM2NywgNDIxNzAsIDAsIDY3MjkwLCA2MjksIDE5MjQsIDEyNzA5OCwgMTIwMzcsIAotICAgIDY3MTU4LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAxMjA4MTUsIDEyMzY5LCAxMDY0OSwgCi0gICAgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCA1MDc1LCAxMjExMDksIDEyNzMwMCwgNjUwNzUsIDAsIDExMDA3LCAKLSAgICA3MDg1MSwgNjY2NTksIDkyNjA3LCA5MTc5MzMsIDY2Njg0LCAxMjgwNjMsIDM0MzQsIDQ5NTQsIDE5MDQsIDkyNjc5LCAKLSAgICA1MjY2LCAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAKLSAgICAxOTQ5MjYsIDQ2MSwgOTgwMywgNDIyODIsIDQ1MDQsIDE1MDUsIDEyNzg5MywgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgCi0gICAgMCwgNTUyMzYsIDkyNjU5LCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAxMjA4MDUsIDQxMzI3LCA5ODM3MzIsIAotICAgIDY2Njk1LCA0MTE0LCA0MDksIDQzODMsIDg5MDAsIDg5NDgsIDQxMzI1LCA3NDkzMCwgNzIxLCAxMDE4MiwgOTEwOCwgCi0gICAgNzEzMTEsIDAsIDExOTE4NSwgNDIyMjksIDc0OTYzLCAxMjEwMTQsIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIAotICAgIDk0MTA0LCA3ODU3MSwgNzQ4ODksIDcxMzI4LCAxMjg5NTUsIDQxNTc2LCA0MjIxNSwgNzg1NzAsIDc0MDM3LCAwLCA4NTc4LCAKLSAgICA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIAotICAgIDExNzIzLCAwLCA3NDEyMCwgMTI2NjQyLCA2NTA3NiwgOTM4LCA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCAwLCA2NzE3OSwgCi0gICAgNjcxNjgsIDExNzQyLCAyNDE5LCA2NzE3NywgMTE0OTMsIDEyMzM0LCA5MjQ5NCwgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAKLSAgICAxMjQwNywgMTE5NzgsIDQ0MDQsIDkxODksIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAwLCAKLSAgICA0MjAwMiwgMTI0MDQsIDY4MDkyLCA3NDkyOCwgNDk0MCwgMTI0MTAsIDc2ODMsIDExNjcsIDczNzI5LCA0OTgzLCAxMjA1MDcsIAotICAgIDg2MSwgNjc2OTksIDc0ODgwLCA2ODI5NywgOTgzODA3LCA0Mzc1NywgNDMzNzAsIDEyOTI5OCwgMCwgMTE5NTYsIDEyNDk2NywgCi0gICAgMTIxMjYzLCA3MDgxNSwgOTYxNiwgNjYzMSwgOTIzMzgsIDEyODE2LCA0Mzc1OSwgNDIyMTgsIDEyNzEwLCA2ODY3NCwgCi0gICAgMTI3MjEsIDQxMDEsIDY2MTg1LCAwLCA1OTkyLCA3NjE2LCAxOTUwNDQsIDAsIDEyNTc3LCA5MzAxNywgMTI4Mjg5LCA4NTMsIAorICAgIDEwMTA3MiwgOTgzOTYxLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgCisgICAgMTIxMzQ5LCAwLCAxMjg4MDEsIDY3MTgwLCAxMjc1NjksIDMyNywgMTIxMjc3LCA5MDQyLCAxMjA4NDMsIDkxNzc3NiwgCisgICAgNjUxNDgsIDEyNDMzLCA5MTc3ODEsIDEyMDIyMiwgNzQyMDYsIDEyNDMxLCA4NjY4LCAxMjQzNCwgNjcxOTQsIDExMzgxMiwgCisgICAgNTk5OSwgNzUwMTMsIDc3MTIsIDEyNDMyLCAxMjA4ODUsIDQzNjUzLCAxNzI2LCAxMDE1LCA3NDA3OSwgODIxMiwgMTI4MDY1LCAKKyAgICAxMTM3NTQsIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIDY2NzA5LCAxMjEwNjEsIDg4MTEsIDkyNywgOTI1MzIsIAorICAgIDk4MzYzNywgMTI0MzYsIDEwMTA1NiwgNDIwMjEsIDE5NDYxMCwgNjc2NDQsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIAorICAgIDEwMTA1OCwgMTk1MDE2LCAxMDA1NjYsIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDEwMDg3MCwgMCwgMTk5MTQsIAorICAgIDEyMTc5LCAxMDA1NjksIDIyOTYsIDEwMDU5NiwgNjM4MzYsIDYzODMyLCA3Mjc5MywgMTA5NjcsIDYzODE2LCAyNTk0LCAKKyAgICAzNDQ0LCA2MzgxNywgMTExNzgsIDkxNzU4NCwgNDE1MDMsIDEyMDA4NywgMTEyNjUsIDY4Mjk1LCAxMjA3NTYsIDEwMDYwMCwgCisgICAgNjcyODUsIDU2NjQsIDM5NzIsIDEwMDk4NSwgMTI4NTgzLCAxMjk0MDgsIDY3Mjg0LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIAorICAgIDEwODE2LCAxMjcyODksIDExMjEwLCAxMjQxOCwgODU4NiwgMzg4MiwgODUzMiwgOTE3NzcxLCAxNTczLCA2ODA4MSwgCisgICAgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgODI4NywgNjgyMTksIAorICAgIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDkxNzU5NCwgMTE4ODg0LCAKKyAgICA5MDIxLCAxMjA3ODMsIDExOTkzMSwgMTE3MjQsIDEyNzc4NywgMTIwMTkxLCA3MTEyMiwgMTI2NjE5LCAwLCA5ODM2NjEsIAorICAgIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIDQzOTQzLCAxMDA2NzQsIDY2ODMzLCAxMDA4MDUsIDEyNzc3OSwgCisgICAgOTI1NTcsIDkzOTc2LCAxMTk4NDQsIDEyMDE5MCwgMTMyNCwgNjc2MDgsIDEyODIxNCwgNDIzNjgsIDEwMTA2MiwgNzcxNSwgCisgICAgMjI3MSwgNDE0ODcsIDEyMTE4LCA0MjUxNCwgNjg2NTEsIDEyODIxMCwgMTI4NTk0LCAzMDA5LCA0MTQ3NiwgNDE0ODksIAorICAgIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDcsIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgNzgyNTUsIAorICAgIDg1MTksIDcyNzExLCAzMDE0LCA1MDgxLCA2NTg1MywgMTIwNzE1LCAxOTQ5OTIsIDY4MDE0LCA2OTk1MSwgNTA3OSwgCisgICAgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDExMTA1LCA4NDA3LCA2NzE2MywgCisgICAgMTA4MDUsIDg1MTgsIDEwNzc5LCAxMDA4MDEsIDcxMzAzLCAxMjEyNDAsIDEyMzY3LCA0MjE3MCwgMTI4MjE1LCA2NzI5MCwgCisgICAgNjI5LCAxOTI0LCAxMjcwOTgsIDEyMDM3LCA2NzE1OCwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgCisgICAgMTAwODg4LCAxMjM2OSwgMTA2NDksIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgNTA3NSwgMTIxMTA5LCAKKyAgICAxMjczMDAsIDY1MDc1LCAwLCAxMTAwNywgNzA4NTEsIDY2NjU5LCA5MjYwNywgMTAwNjA3LCA2NjY4NCwgMTI4MDYzLCAKKyAgICAzNDM0LCA0OTU0LCAxOTA0LCA5MjY3OSwgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIAorICAgIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTIwNTg5LCA0NjEsIDk4MDMsIDQyMjgyLCA0NTA0LCAxNTA1LCAxMjc4OTMsIAorICAgIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCA5MjY1OSwgNjY0NjEsIDUxNzcsIDQxMzI0LCAxMjA1NSwgCisgICAgODcyMiwgMTIwODA1LCA0MTMyNywgMTI5MzMyLCA2NjY5NSwgNDExNCwgNDA5LCA0MzgzLCA4OTAwLCA4OTQ4LCA0MTMyNSwgCisgICAgNzQ5MzAsIDcyMSwgMTAxODIsIDkxMDgsIDcxMzExLCAwLCAzNDE5LCA0MjIyOSwgNzQ5NjMsIDEwMDYyNywgNTk5OCwgMCwgCisgICAgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgOTQxMDQsIDc4NTcxLCA3NDg4OSwgNzEzMjgsIDEwMDYyOSwgNDE1NzYsIDQyMjE1LCAKKyAgICA3ODU3MCwgNzQwMzcsIDAsIDg1NzgsIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgCisgICAgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgMTE3MjMsIDk4MzQzOSwgNzQxMjAsIDExOTAwMCwgNjUwNzYsIDkzOCwgCisgICAgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgOTgzMjYyLCA2NzE3OSwgNjcxNjgsIDExNzQyLCAyNDE5LCA2NzE3NywgCisgICAgMTE0OTMsIDEyMzM0LCA5MjQ5NCwgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAxMjQwNywgMTE5NzgsIDQ0MDQsIDkxODksIAorICAgIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAxMjI5MjIsIDQyMDAyLCAxMjQwNCwgNjgwOTIsIAorICAgIDc0OTI4LCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgODYxLCA2NzY5OSwgNzQ4ODAsIAorICAgIDY4Mjk3LCA5ODM4MDcsIDQzNzU3LCA0MzM3MCwgMTI5Mjk4LCAxMjgzMDcsIDExOTU2LCAxMjQ5NjcsIDEyMTI2MywgCisgICAgNzA4MTUsIDk2MTYsIDY2MzEsIDkyMzM4LCAxMjgxNiwgNDM3NTksIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCAKKyAgICA2NjE4NSwgOTgzMjY5LCA1OTkyLCA3NjE2LCAxOTUwNDQsIDk4MzM5MiwgMTI1NzcsIDkzMDE3LCAxMDA4ODAsIDg1MywgCiAgICAgNDI2OTMsIDE5NDY0NywgMTE5MDI3LCA5ODMyODQsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIDk0OTEsIDkxNzkxMywgCi0gICAgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgNjY4NzUsIDk5MDAsIDc3NTAsIDkxNzk0NiwgCisgICAgMTAwODc1LCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCA2Njg3NSwgOTkwMCwgNzc1MCwgOTE3OTQ2LCAKICAgICAxMjc4OTYsIDc0NjE5LCAxMTkyNjUsIDk4MzU4NywgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgCi0gICAgMTE5ODQzLCA5ODMyNjAsIDAsIDc3ODI0LCAwLCA0OTAwLCAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgCisgICAgMTE5ODQzLCAxMTg4OTEsIDAsIDc3ODI0LCAwLCA0OTAwLCAxMjUyNDUsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgCiAgICAgNzQ3NjgsIDg5NzEsIDc4NTkzLCA0MzExMywgOTcwMiwgNjY4NTIsIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgCi0gICAgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAxMTkwNDAsIDEzMDU0LCAxMjM5NCwgMCwgMCwgMTk0OTU0LCAKLSAgICAxMzA1MywgMTE4OTc0LCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIDc4NTkwLCA3ODU4MywgCi0gICAgOTI0MzEsIDEyMTAzNywgMTI2NjQ0LCAxOTQ5MTUsIDcyNjcsIDEyNzQ3OSwgNzQ4MzMsIDEyODE4MSwgNTk5MywgMjgxOSwgCi0gICAgMTI4Nzg4LCAxMjcwNiwgNzEwNjMsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCAwLCAxMzYzLCA5ODM1ODAsIAotICAgIDQyOTIzLCA2MzkxMCwgNjM5OTYsIDMwNzcsIDEyMDAxOCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgMTI4MzEzLCAKLSAgICA3MTA0OCwgNDMzMzksIDczNzc2LCA5ODM2LCAxMjA3MjcsIDk4MzkwOSwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgCi0gICAgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgODMxNzcsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIDc0OTMyLCAKLSAgICA3NDA0NCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCA4MzQyOCwgMTIzODksIDEyMTA3OSwgOTIzNjYsIDQxOTk2LCAKLSAgICAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDQzODQ5LCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCAKLSAgICA0MTE2LCAxMjM5MSwgNjYxOTMsIDEyMTM4MywgNDkzOSwgMTIzODQsIDAsIDEyNzc3OCwgNDE2ODYsIDYzOTA1LCAxMTk2MDEsIAotICAgIDcwMjg1LCA2NzM5OCwgMTI4ODIwLCAxMjY0OSwgMTIwMDIyLCAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIAotICAgIDQzNjQzLCAxMjE0NDUsIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDExOTgxMywgNzc0LCAxMTk4MjksIDc3ODQwLCAxMTk4MTUsIAotICAgIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDk4MzEwNSwgNzgzNzcsIDk4MzIzNywgOTE3NjI4LCAKLSAgICA3NzE5LCA2MDI2LCAyNDg2LCAxMjgzMTIsIDExOTgwOCwgMTYyLCAwLCA2NTIxOSwgNDEwNzMsIDk2ODcsIDQxNjgxLCAKLSAgICA2MzA0LCAxMTk4MTIsIDY2MTk2LCAxOTQ4ODEsIDUyNjIsIDAsIDU1MjMzLCAxMjY4MSwgNDIzNzksIDAsIDc1MzQsIAotICAgIDEyMjE5LCAyMjI2LCA3MDQ5OSwgNDI4MTAsIDEwNDkyLCAxMjE1MTAsIDEyMTE0OCwgMTIxNTA5LCA0MzExOSwgMCwgCi0gICAgNzg1MzcsIDEyNDAzLCAyNTAwLCA3MDE0NSwgODMyNDYsIDQ4OTksIDEyNzI5LCA5ODMzOTksIDE5NDYxOSwgNzQxMTMsIAorICAgIDc0MTg1LCA5MjQ4MSwgOTI3MTAsIDEyMzk3LCA3NzgyNywgMTE5MDQwLCAxMzA1NCwgMTIzOTQsIDY2MTgyLCAwLCAKKyAgICAxOTQ5MzcsIDEzMDUzLCAxMTg5NzQsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIAorICAgIDc4NTgzLCA5MjQzMSwgMTIxMDM3LCAxMjY2NDQsIDE5NDkxNSwgNzI2NywgMTI3NDc5LCA3NDgzMywgMTI4MTgxLCA1OTkzLCAKKyAgICAyODE5LCAxMjg3ODgsIDEyNzA2LCA3MTA2MywgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDk4MzY3MywgMTM2MywgCisgICAgOTgzNTgwLCA0MjkyMywgMTMxMDksIDYzOTk2LCAzMDc3LCAxMjAwMTgsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIAorICAgIDEwMTAzMSwgNzEwNDgsIDQzMzM5LCA3Mzc3NiwgOTgzNiwgMTE5NjA3LCA5MTc4MTcsIDQxNDgxLCA0MzMzNSwgNzgzMiwgCisgICAgNDIzNDMsIDMwOTAsIDQzMzM3LCA4MTcsIDE2NjQsIDE4NTAsIDgzMTc3LCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAKKyAgICA3NDkzMiwgNzQwNDQsIDQyMzA3LCAxMjM4NiwgNDIzMDQsIDkxNzU1NSwgODM0MjgsIDEyMzg5LCAxMjEwNzksIDkyMzY2LCAKKyAgICA0MTk5NiwgMTE1MjYsIDYzOTg1LCA1ODY0LCAxMTQ3LCA0Mzg0OSwgNDI4ODcsIDE5ODcsIDkyNzE4LCA1NDgwLCA3ODU4LCAKKyAgICAxMTY1MywgNDExNiwgMTIzOTEsIDY2MTkzLCAxMjEzODMsIDQ5MzksIDEyMzg0LCAxMjAxODQsIDEyNzc3OCwgNDE2ODYsIAorICAgIDYzOTA1LCAxMTk2MDEsIDcwMjg1LCA2NzM5OCwgMTAwODg0LCAxMjY0OSwgMTIwMDIyLCAwLCA4MjQ3LCA1MDcsIDkxLCAKKyAgICAyMDQyLCAxMjA3NzUsIDQzNjQzLCAxMjE0NDUsIDY2MDI4LCAxMDAzNiwgNDE4NDQsIDcwNjgwLCA3NzQsIDExOTgyOSwgCisgICAgNzc4NDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCA3ODM3NywgCisgICAgOTE3ODIzLCA5MTc2MjgsIDc3MTksIDYwMjYsIDI0ODYsIDEwMTAxOSwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgCisgICAgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDExOTA4OSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgCisgICAgMCwgNzUzNCwgMTIyMTksIDIyMjYsIDcwNDk5LCA0MjgxMCwgMTA0OTIsIDEyMTUxMCwgMTIxMTQ4LCAxMjE1MDksIDQzMTE5LCAKKyAgICAwLCA3ODUzNywgMTI0MDMsIDI1MDAsIDcwMTQ1LCA4MzI0NiwgNDg5OSwgMTI3MjksIDk4MzM5OSwgMTk0NjE5LCA3NDExMywgCiAgICAgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDEyOTA0NiwgNzQ4MzQsIDEyODU5LCA3MDA4NywgCiAgICAgMTIwMTQ4LCA2NjM2OSwgNTg2MSwgMTI3NzU4LCAxMTk5OSwgMTI0MDAsIDQzNjQxLCAxMjgxODMsIDEyNjQ1LCA1MTQ2LCAKICAgICAxMTMyMCwgNjg0MTAsIDY3NDgsIDY1MDQwLCAxOTQ3ODYsIDY0MTg0LCAxMjk3NCwgNjQxODMsIDY3NjEzLCAxMjA2NDUsIAotICAgIDUxNDcsIDEyNTAxOSwgMCwgNzQ1MjQsIDEyODM1NiwgMTkyOCwgMCwgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCA0OTc2LCAKLSAgICA2NDE3NiwgMCwgNjc2MTAsIDgyNDEsIDAsIDc3ODY4LCA0MjA2LCAwLCA3ODY2MiwgMTI5MDI5LCAxMjgyOTgsIDY3Mjc3LCAKLSAgICAxMDEzOCwgNjcyMzgsIDEyODc4NSwgODg5NywgMTIwMjM0LCAxNDIyLCA4MzU3LCA0MTI0LCA3Nzg2MiwgNjU4MzYsIAotICAgIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMTIwOTMwLCAxMTIzLCA5NjMsIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgCi0gICAgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgMTI5MTI2LCA0NDAyLCA5OTcwLCAxMjQwMiwgCi0gICAgOTMwNjIsIDQyMzkyLCAxMzA1LCAxMjQwOCwgOTIzODQsIDQ0MDA3LCAxMjg1NjMsIDEyNzIxNiwgNDE0NjQsIDEyNDExLCAKLSAgICAxMjk2OSwgNjcyNjgsIDQxNDY1LCAxMjEwOTIsIDg1MjgsIDE1NzUsIDAsIDYzOTU1LCAxNjUsIDMwMjQsIDQxNDY3LCAKLSAgICAxMTkxNjMsIDcwMTE5LCA5MDkzLCAxMjg1MzUsIDY4MzMsIDkyNTc0LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIAotICAgIDgyOTYsIDY3NTAsIDY2ODU1LCAxMjg0MTAsIDk1OTQsIDEyMDMwOCwgMTIwOTM4LCA0MzUyNywgMTIxMTkyLCA3MjcsIAotICAgIDc0MTkyLCA5MzA2MCwgNTgwNSwgMCwgNjcyNiwgMCwgNDIxNzYsIDEyMzcwLCAxMTY1NSwgMTE5MDk1LCAxMDU5MSwgMjI4MCwgCi0gICAgOTgzMjM0LCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDcxMjA5LCA5MjM0MywgOTgzODcyLCAxMjM2NiwgMTA5NjMsIDYwNjYsIAotICAgIDEzMjksIDAsIDMwNTIsIDkyMjAsIDEyMTA0NSwgNjQ0NzgsIDE5NDcwMSwgMTA4MDMsIDQxMzIsIDEyMDMwNiwgNjg0NzQsIAotICAgIDkyNDczLCA5ODMyNDcsIDEyMDcxMiwgNzQ4MzcsIDEyMDE1NSwgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIDYzOTY1LCAKLSAgICAxMjAzMDUsIDYzOTYyLCA3NDA0MiwgODkyNCwgNDMxMjMsIDU5ODgsIDM2NjAsIDYzOTY5LCAxMTc4MSwgNDI3MTgsIDg3ODgsIAotICAgIDEzNTcsIDY0ODUxLCA2NTc0MywgOTI4OTQsIDg3NzQsIDcwMzM3LCAxMjcwODYsIDk5NDEsIDEyMDE3MiwgOTI3NDgsIAotICAgIDE5MzMsIDY5NjU1LCA5NTY0LCAxMjAwMTYsIDkyNDM1LCA3Mzg2NiwgMCwgMTIxMjQxLCAyNDg3LCA2NzYxNCwgMzEyMSwgCi0gICAgMTgwNCwgMzMxMSwgNjc2MTUsIDcwMDgxLCA3ODMwMiwgMTIyMjAsIDY3NjE2LCA5Mjc2OSwgMTIwMDIwLCAxOTQ1OTQsIAotICAgIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgCi0gICAgNTEwLCA2NDY2MywgMCwgMTIxNTAwLCA0NTYxLCAyMTAxLCAxMzk4LCA5MTc5NzIsIDkyNTU0LCA3NDAzNCwgNDE1NjksIAotICAgIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIDEyMDUwNSwgODQwLCA5ODMyODMsIDY5OTkyLCA3MTAxLCA2OTY3LCAwLCAKLSAgICAxOTQ4OTgsIDk3OTYsIDEyNzAwMCwgMzMzLCA2OTg5MSwgMCwgODE0NCwgMjExNywgMCwgMTIxMTU1LCAxMjQwNiwgCi0gICAgOTE3OTcwLCAxOTkzMSwgNjYzODgsIDY2NzgsIDc3NjksIDk4MzEyNCwgMTI2MjEsIDAsIDEyNzM2NiwgMTAyMjcsIDQ3NjQsIAotICAgIDQzMTAxLCA5OTgxLCAwLCA0MDk4NiwgNDEyNywgNjY0ODcsIDk4MzU3NiwgNDIyMDIsIDEyNzU0LCAxOTUwMjEsIDk4MzE5MSwgCi0gICAgMCwgOTQwOTcsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMTE4NCwgCi0gICAgNDUzMywgMTI3MjEyLCA3NDAwMywgNjQ5MCwgMCwgMTIwMzgsIDAsIDAsIDY4MjI1LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIAotICAgIDEyODkxMiwgMTk0OCwgNjk4NDEsIDAsIDk1MiwgMTI4MjM1LCAxMjUxMDcsIDk4MzM1NCwgNzAyOTYsIDY0NDksIDk0OTQsIAotICAgIDEyMDMxMywgMCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCA2NDE3MCwgOTgzMzQxLCAwLCAzNDM2LCAKLSAgICAxMTk5NzMsIDAsIDEyODE3LCA2NzU5NywgNjY3NiwgMzkzMCwgNDI2MTUsIDY2NDA3LCA2OTk5MSwgNjc1OTgsIDAsIDAsIDAsIAotICAgIDY1NTkxLCA0MTU4MSwgNjU5MTYsIDE0NTMsIDE5NDk5MywgMTIxNDU4LCAxMjc4NTksIDg1MDAsIDQyMjIyLCAxMjAxNDIsIAotICAgIDczNzQzLCAxMjA0MDAsIDQzMTcsIDExNTQzLCA2NzY3NiwgNjQ2NzYsIDAsIDEyNzgzMywgNjc2MDYsIDExOTA4MywgCi0gICAgMTIxMDgzLCA0MjIxNywgMTMxMDIsIDAsIDY2MDAzLCA2NjcyLCAwLCAwLCA2Njg4MCwgNzc5MTIsIDYzODQxLCA5NjEzLCAKLSAgICA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAxMDIyOCwgNjQ5NTcsIAotICAgIDExMjgxLCAwLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgOTA0LCAKLSAgICAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCA4MzQ4NSwgNjcyMjMsIDY2NTc2LCAxMjc5MTYsIDEyNzgzMSwgCi0gICAgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgMTI4NDYsIDEyNzI5MSwgNjgwNDAsIDExOTE5LCA2NDk2MiwgCi0gICAgMTI3MDgxLCA0MzczOSwgMTI3MjgxLCA4NTExLCA5NDYwLCA4MjMsIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgCi0gICAgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCAKLSAgICA3MDMzNCwgMTE2MDYsIDY0Nzg0LCAxMTcwMiwgNjY0OTgsIDk4MjEsIDY0MzA0LCAxMjczNjksIDUxNTIsIDExMDQ4LCAKLSAgICA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCA3MDI3NiwgOTI2NjksIDcxMzMyLCAxMjAxNTgsIDQyNTg3LCAKLSAgICA0MjIxNCwgNDEzOTQsIDExMTg4LCA0NzYzLCA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAKLSAgICAxMjAxMzEsIDY4NDIzLCAxMTkyMTgsIDEwNzcxLCAyODc2LCA3NDA3NCwgOTI1MzAsIDEyODQ2MCwgNDEzOTgsIDczODIsIAotICAgIDk4MDIsIDEyNzA3NywgMTI3MDc2LCA0NTMsIDQxMzk2LCAxMjA1MjQsIDEzMTU5LCAxMjE0MCwgOTU3MiwgOTgzMTMyLCAKLSAgICA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAxMjUwNjksIDEyNTAyMCwgNDMxNDQsIDQxMjMsIDg0OTQsIDQzMTQ2LCAKLSAgICA5OTc3LCAwLCAxMjEyODMsIDY1NzU5LCAxMDc2NSwgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgCi0gICAgOTUyMSwgOTU4OSwgNjQ3NTUsIDAsIDY0MDIwLCAxMjY2MDQsIDEwNDY0LCAwLCA5Mjk2OCwgMTk0NjEwLCA2NDUxNCwgCi0gICAgMTE1MjgsIDY0MDI0LCAxMjgwNzIsIDY3OSwgNjQwMTMsIDk4MzU1NSwgNTg1MCwgNzU4LCA3NTM2LCAxMjA1MzgsIDkyMjM0LCAKLSAgICA0MTQ0MSwgMTA2OTMsIDY0MDA2LCA3NTA0NCwgNjQwMDUsIDQwNTgsIDExOTAxOSwgMTI2NDg3LCA2NDY2MCwgMTI4MTc2LCAKLSAgICAxMTkwNTAsIDAsIDk4MzA2OSwgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMTI4Njg1LCAKLSAgICAxMDc3NCwgNjcxMDQsIDQyMjAxLCAxMjQyMSwgMTI4MjE2LCAxMjcwMDYsIDE4NTIsIDMwNTcsIDY0MDQ2LCA3Mzc0NCwgCi0gICAgNjQwMzQsIDY0MDM5LCA2ODA2NSwgMCwgOTgzNjkwLCA5MjkxMywgOTIzMjIsIDc2NDUsIDEyODU0LCA3NDMzOCwgMzQ5NiwgCi0gICAgMCwgMTIxMzIzLCAxMTM3MTAsIDkxMDIsIDYyNywgMTI3Nzk1LCA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAKLSAgICAxMzMwOSwgMTE1NzAsIDEyNzgxMSwgMTk5NjAsIDExNjk2LCAwLCAxMDE4LCAxMTg5NzAsIDEyOTA3NSwgMTk0ODk3LCAKLSAgICAxNjgyLCA0Mzg2MywgMTk0ODk2LCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCA2NzcxNywgNzQzNTgsIDczODE0LCAxMTQxMiwgCi0gICAgNjc2OCwgMTA3MjgsIDExOTk4MiwgNzEzMTYsIDcxMDk5LCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAxMjc4MzIsIDQzMDQwLCAKLSAgICAxODMzLCAxMTU3NiwgNzAwNTQsIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDExOTMzNCwgNzUzNSwgCi0gICAgODA4NSwgNDI1MjUsIDExOTk0NCwgOTc0OSwgNDE3MDEsIDYxMzEsIDE5NDksIDQxMTcsIDc4NDcsIDEyMDQ4OSwgMTIwOTk3LCAKLSAgICA2NDQ4MywgNjU2OTMsIDk4MzcxMSwgOTgzNDk1LCAxMjg2MTUsIDY5Njk1LCA0MjI0MCwgMTI4NTg3LCAxMjEzNTIsIAotICAgIDQyODY0LCAxMjY0OTgsIDQzMTY4LCA0MTg2OCwgMTE4NCwgMCwgODE1LCAxMTQ4NCwgMTI3NTM1LCA2Nzg0MCwgOTgzNjUxLCAKLSAgICAwLCA2NjE5NywgOTgzNDc0LCAxMDk4NiwgNjQ2ODMsIDEyODU0OSwgMTI4NDU0LCAzNDU1LCAxMjY1MzAsIDAsIDk4NzksIDAsIAotICAgIDAsIDQxNTgsIDcwMzA3LCA2ODE2NiwgMCwgMTI4MDkxLCAwLCAwLCA2OTY0NSwgMzMyLCAxMTg4MDgsIDgzMzY4LCA1MTQyLCAKLSAgICAyNDA3LCA2OTY0MywgNDIxOTksIDAsIDkyNDA0LCA3NDM3MywgODMzNzIsIDU1MjE3LCA3MTQ1NywgNjM4NzAsIDQzMTYzLCAKLSAgICAwLCAwLCAxMjk4NSwgNDI4NjcsIDE4MzQsIDEyMDM4NywgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDcwMzg1LCAKLSAgICA4NjYyLCAxMjAzMjQsIDAsIDI2NTIsIDEyMDUyNywgNzE2NCwgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDgzMzU5LCAKLSAgICA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgOTE3NTA1LCAxODI4LCA3NDQ3NCwgMTIwMDE5LCA2ODA3OCwgODUzMSwgMTI0OTksIAotICAgIDYyODAsIDEyMzI0LCA3MjQzNCwgNjUyMzgsIDY4Mzc0LCA0ODMyLCA2NTU3MywgNDM4NTEsIDYyNzksIDEyNTA4LCAxMjkwNCwgCi0gICAgMTI1MDIsIDkxNjEsIDEyODU1NSwgMTYyMCwgMTEyNDcsIDM2MDEsIDEyMTMwMSwgODMzNTMsIDY3MjQ2LCA2MDksIDExNTU1LCAKLSAgICA4MzQ1NiwgMTI0OTYsIDExOTgwLCA3NDE4MSwgNDM0MywgMTI1MDUsIDgyOTYwLCAxMjc4NjMsIDAsIDExMzc3LCAyMzksIAotICAgIDEyODExNCwgNjM3LCAwLCAxMjg2NzgsIDQyNjcxLCAwLCA5MzAzMiwgODMwOTUsIDQzNTY1LCA3MTMwNiwgMTI2NDkzLCAKLSAgICAxMjY5NiwgMTI4MjU2LCA5MTc2MDAsIDk0MDYyLCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCA5ODMyMDYsIDQyODE4LCAKLSAgICAxMjY2MzIsIDcwMzA2LCAxMjA0OTAsIDcwMzMzLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAxMTk5MTMsIDkyNDkxLCA2ODA3NiwgCi0gICAgMTI2NTEsIDEyMDkxNywgNjQ2MjgsIDc0NTE3LCAxMjA1OCwgNzQwODQsIDE5NDYzMywgNzQ5NCwgMCwgNDkyNCwgNjU1OTIsIAotICAgIDExODg0NCwgMTk0ODIzLCAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDEyMTA3NywgOTgzMjk3LCAKLSAgICAxMjAzMywgNDIxNzgsIDE5NDc1NCwgNjk3NjAsIDQyNTcxLCA5MjYzNSwgMTE0MzAsIDAsIDcwMjk5LCAxMjE1MDgsIAotICAgIDEyNDk1MSwgNjgzMjQsIDMxNzgsIDEyNjQ4OCwgMTI4NjMzLCA5MjcwNCwgOTE3NTY2LCA5MDgwLCAxMjA5NDMsIDY3Njk3LCAKLSAgICAxOTUxMDEsIDY4MjA5LCA3MjQxOCwgMTEwODIsIDcxNDg1LCA1Njk5LCA4MzM3MywgNjYwMDAsIDk0ODgsIDY1MTY2LCAKLSAgICAxMTkxMTIsIDcwNDc3LCAxMTE3MCwgNjg2NjIsIDEyODEyMCwgNzEzMTMsIDAsIDUyNjUsIDY5MjM1LCA4MzM4NCwgMTE0ODcsIAotICAgIDY3ODU4LCAxMjQ2NCwgOTgzMzY1LCA0MzA0NSwgOTgzODMxLCA3MDM0NSwgNDMzNDUsIDk4MzI3NiwgMTA3NzAsIDExODk5NCwgCi0gICAgNjgwNywgNDY1LCA5ODI5LCA2OTk5NywgNzQzNDgsIDAsIDQzMzQ2LCA4MTE2LCA3OTUsIDEyMDM1MiwgNzI0MTIsIDEyNDYyLCAKLSAgICAxMDkzMCwgMTA4MzEsIDEyMTMyMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDkzMDU2LCA4MzA0NywgOTgzOTMzLCAxMjQ2OCwgCi0gICAgODYwNywgMTAwOCwgMTE4OTQ4LCAxMDA5MiwgMTI1MTIyLCAxMjg4NTEsIDY3ODU1LCA1NTI1NywgNzM3NzEsIDE3NjYsIAotICAgIDExMjgyLCAxMTk5NiwgMTgyMCwgNDU0NywgMCwgMTEyMDIsIDEyMDI0MywgMTI4MzQ1LCAxMzIyMywgNzQ5MzQsIDY0NTk1LCAKKyAgICA1MTQ3LCAxMjUwMTksIDkxNzYyNCwgNzQ1MjQsIDEyODM1NiwgMTkyOCwgMCwgNjc2NDksIDU5OTEsIDM0NDUsIDY3NjA5LCAKKyAgICA0OTc2LCA2NDE3NiwgNzQ5NjYsIDY3NjEwLCA4MjQxLCA5ODM5MDAsIDc3ODY4LCA0MjA2LCAxMjczNTIsIDc4NjYyLCAKKyAgICAxMjkwMjksIDEyODI5OCwgNjcyNzcsIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIAorICAgIDQxMjQsIDc3ODYyLCA2NTgzNiwgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAxMDA5MTIsIDEyMDkzMCwgMTEyMywgOTYzLCAKKyAgICA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIAorICAgIDEyOTEyNiwgNDQwMiwgOTk3MCwgMTI0MDIsIDkzMDYyLCA0MjM5MiwgMTMwNSwgMTI0MDgsIDkyMzg0LCA0NDAwNywgCisgICAgMTI4NDY1LCAxMjcyMTYsIDQxNDY0LCAxMjQxMSwgMTI5NjksIDY3MjY4LCA0MTQ2NSwgMTIxMDkyLCA4NTI4LCAxNTc1LCAwLCAKKyAgICA2Mzk1NSwgMTY1LCAzMDI0LCA0MTQ2NywgMTE5MTYzLCA3MDExOSwgOTA5MywgMTAwNjIwLCA2ODMzLCA5MjU3NCwgNjM5NTgsIAorICAgIDEyMDkzMSwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDgyOTYsIDY3NTAsIDY2ODU1LCAxMjg0MTAsIDk1OTQsIDEyMDMwOCwgCisgICAgMTIwOTM4LCA0MzUyNywgMTAwNjExLCA3MjcsIDc0MTkyLCA5MzA2MCwgNTgwNSwgMCwgNjcyNiwgMTI3Mzg3LCA0MjE3NiwgCisgICAgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCA5ODMyMzQsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgNzEyMDksIAorICAgIDkyMzQzLCA5ODM4NzIsIDEyMzY2LCAxMDk2MywgNjA2NiwgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMTIxMDQ1LCA2NDQ3OCwgCisgICAgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgOTI0NzMsIDEwMDg3NiwgMTE4OTIzLCA3NDgzNywgMTIwMTU1LCAKKyAgICAxNDk5LCAxMjEyOTksIDgwNTUsIDQyNzQwLCA2Mzk2NSwgNzQzMzgsIDYzOTYyLCA3NDA0MiwgODkyNCwgNDMxMjMsIDU5ODgsIAorICAgIDM2NjAsIDYzOTY5LCAxMTc4MSwgNDI3MTgsIDg3ODgsIDEzNTcsIDY0ODUxLCA2NTc0MywgOTI4OTQsIDg3NzQsIDcwMzM3LCAKKyAgICAxMjcwODYsIDk5NDEsIDEyMDE3MiwgOTI3NDgsIDE5MzMsIDY5NjU1LCA5NTY0LCAxMjAwMTYsIDkyNDM1LCA3Mzg2NiwgCisgICAgOTgzOTMyLCAxMjEyNDEsIDI0ODcsIDY3NjE0LCAzMTIxLCAxODA0LCAzMzExLCA2NzYxNSwgNzAwODEsIDc4MzAyLCAKKyAgICAxMjIyMCwgNjc2MTYsIDkyNzY5LCAxMjAwMjAsIDE5NDU5NCwgNjgyMDAsIDY2NzUsIDEyODE0NCwgOTgzMjgyLCA2NzU5MiwgCisgICAgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgOTgzNzA5LCA2NDYxOSwgNTEwLCA2NDY2MywgOTQwMzMsIDEyMTUwMCwgCisgICAgNDU2MSwgMjEwMSwgMTM5OCwgMTk1MDUxLCA5MjU1NCwgNzQwMzQsIDQxNTY5LCA5MjY4NCwgMTE0MDYsIDgxNjcsIDEyMTI3LCAKKyAgICAxMjA1MDUsIDg0MCwgOTgzMjgzLCA2OTk5MiwgNzEwMSwgNjk2NywgMCwgMTk0ODk4LCA5Nzk2LCAxMjcwMDAsIDMzMywgCisgICAgNjk4OTEsIDEyNzE0NSwgODE0NCwgMjExNywgMCwgNzA3MTIsIDEyNDA2LCA5MTc5NzAsIDE5OTMxLCA2NjM4OCwgNjY3OCwgCisgICAgNzc2OSwgOTgzMTI0LCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgNDMxMDEsIDk5ODEsIDc0MTU3LCA0MDk4NiwgCisgICAgNDEyNywgNjY0ODcsIDk4MzU3NiwgNDIyMDIsIDEyNzU0LCAxOTUwMjEsIDk4MzE5MSwgMTAwNjI4LCA5NDA5NywgNjc1OTQsIAorICAgIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDExMTg0LCA0NTMzLCAxMjcyMTIsIAorICAgIDc0MDAzLCA2NDkwLCA5ODM4NTcsIDEyMDM4LCAwLCAwLCA2ODIyNSwgNjU0NjEsIDk3OTgsIDY5NzA0LCAxMjg5MTIsIAorICAgIDE5NDgsIDY5ODQxLCAwLCA5NTIsIDEyODIzNSwgMTI1MTA3LCA5ODMzNTQsIDcwMjk2LCA2NDQ5LCA5NDk0LCAxMjAzMTMsIAorICAgIDcwNzM4LCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCAxMjg4NzEsIDkxNzYyMSwgMzQzNiwgCisgICAgNjY3ODAsIDAsIDEyODE3LCA2NzU5NywgNjY3NiwgMzkzMCwgNDI2MTUsIDY2NDA3LCA2OTk5MSwgNjc1OTgsIDk4MzMzNiwgCisgICAgMCwgMCwgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMTIxMTg5LCAxMjE0NTgsIDEyNzg1OSwgODUwMCwgNDIyMjIsIAorICAgIDEwMTA0NywgNzM3NDMsIDEyMDE0MywgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMTAwNjk3LCAxMjc4MzMsIDY3NjA2LCAKKyAgICAxMTkwODMsIDEyMTA4MywgNDIyMTcsIDEzMTAyLCAxMjg3MzYsIDY2MDAzLCA2NjcyLCAwLCAwLCA2Njg4MCwgNzc5MTIsIAorICAgIDYzODQxLCA5NjEzLCA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAKKyAgICAxMDIyOCwgNjQ5NTcsIDExMjgxLCAxMjgzMTIsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIAorICAgIDQyMzcyLCA3Mjc4NiwgOTU5OCwgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCA4MzQ4NSwgCisgICAgNjcyMjMsIDY2NTc2LCAxMjc5MTYsIDEyNzU2OCwgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNTIzNSwgMTI4NDYsIAorICAgIDEyNzI5MSwgNjgwNDAsIDExOTE5LCA2NDk2MiwgMTAwNjk1LCA0MzczOSwgMTAxMDQxLCA4NTExLCA5NDYwLCA4MjMsIAorICAgIDExNTg3LCAxMjMwNSwgMCwgNjQ2OTUsIDEyNzMwNSwgMTIzODcsIDEyNTMsIDEzMTgzLCA2NTc2NiwgNTAwLCA0Mjc4MywgCisgICAgNjU3NjUsIDY0MjA4LCA2NDM2OSwgNjU3NjAsIDY1NzYxLCA3MDMzNCwgMTE2MDYsIDY0Nzg0LCAxMTcwMiwgNjY0OTgsIAorICAgIDk4MjEsIDY0MzA0LCAxMjczNjksIDUxNTIsIDExMDQ4LCA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAxMjc4NTIsIAorICAgIDQzMjMsIDcwMjc2LCA5MjY2OSwgNzEzMzIsIDEyMDE1OCwgNDI1ODcsIDQyMjE0LCA0MTM5NCwgMTExODgsIDQ3NjMsIAorICAgIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIDEyMDEzMSwgNjg0MjMsIDExOTIxOCwgMTA3NzEsIAorICAgIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTI4NDYwLCA0MTM5OCwgNzM4MiwgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgCisgICAgNDEzOTYsIDEyMDUyNCwgMTMxNTksIDEyMTQwLCA5NTcyLCAxMjkwODUsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIAorICAgIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIDk5NzcsIDAsIDEyMTI4MywgNjU3NTksIDEwNzY1LCAKKyAgICA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCA5NTg5LCA2NDc1NSwgMTI1MjAwLCAKKyAgICA2NDAyMCwgMTI2NjA0LCAxMDQ2NCwgMTk0OTgwLCA5Mjk2OCwgNzI4NDcsIDY0NTE0LCAxMTUyOCwgNjQwMjQsIDEyODA3MiwgCisgICAgNjc5LCA2NDAxMywgMTI5MzE0LCA1ODUwLCA3NTgsIDc1MzYsIDEyMDUzOCwgOTIyMzQsIDQxNDQxLCAxMDY5MywgNjQwMDYsIAorICAgIDc1MDQ0LCA2NDAwNSwgNDA1OCwgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAxMjgxNzYsIDExOTA1MCwgMCwgMTk1MDIzLCAKKyAgICAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAxMjg2ODUsIDEwNzc0LCA2NzEwNCwgNDIyMDEsIAorICAgIDEyNDIxLCAxMTkxMDksIDEyNTI3MCwgMTg1MiwgMzA1NywgNjQwNDYsIDczNzQ0LCA2NDAzNCwgNjQwMzksIDY4MDY1LCAKKyAgICAxMjcwNzUsIDk4MzY5MCwgNzI3NzMsIDkyMzIyLCA3NjQ1LCAxMjg1NCwgNzI3NzIsIDM0OTYsIDAsIDEyMTMyMywgCisgICAgMTEzNzEwLCA5MTAyLCA2MjcsIDEyNzc5NSwgNjE1OCwgODMyNywgNzQ1NTMsIDY2NjMyLCAxMjQxOSwgMTMzMDksIDExNTcwLCAKKyAgICAxMjc4MTEsIDE5OTYwLCAxMTY5NiwgOTI5MTMsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIDE2ODIsIDQzODYzLCAKKyAgICAxOTQ4OTYsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCA2NzY4LCAxMDcyOCwgCisgICAgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDEyNzgzMiwgNDMwNDAsIDE4MzMsIDExNTc2LCAKKyAgICA3MDA1NCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCA4MDg1LCA0MjUyNSwgCisgICAgMTE5OTQ0LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjA5OTcsIDY0NDgzLCAKKyAgICA2NTY5MywgOTgzNzExLCAxMjcxMjAsIDc0Mjg4LCA2OTY5NSwgNDIyNDAsIDEyODU4NywgMTIxMzUyLCA0Mjg2NCwgCisgICAgMTAxMDM3LCA0MzE2OCwgNDE4NjgsIDExODQsIDEyMTI4NSwgODE1LCAxMTQ4NCwgMTI3NTM1LCA2Nzg0MCwgOTgzNjUxLCAKKyAgICAxMjkzNDAsIDY2MTk3LCA5ODM0NzQsIDEwOTg2LCA2NDY4MywgMTI4NTQ5LCAxMjg0NTQsIDM0NTUsIDEyNjUzMCwgCisgICAgMTE5NjY0LCA5ODc5LCAwLCA5ODMyMTUsIDQxNTgsIDcwMzA3LCA2ODE2NiwgMCwgMTI4MDkxLCAxOTQ5ODIsIDAsIDY2Nzk5LCAKKyAgICAzMzIsIDExODgwOCwgODMzNjgsIDUxNDIsIDI0MDcsIDY5NjQzLCA0MjE5OSwgOTIzODYsIDkyNDA0LCA3NDM3MywgODMzNzIsIAorICAgIDU1MjE3LCA3MTQ1NywgNjM4NzAsIDQzMTYzLCAwLCA5MTc3NjMsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMTIwMzg3LCA5MjQ2MSwgCisgICAgNjk4MTcsIDEwOTQwLCA2NTI0OSwgNzAzODUsIDg2NjIsIDEyMDMyNCwgMCwgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgCisgICAgMTk1MDkzLCA2NzY3NCwgOTE3OTQyLCA4MzM1OSwgOTI0ODIsIDE5NDc0OSwgNzQ1NjIsIDkxNzUwNSwgMTgyOCwgNzQ0NzQsIAorICAgIDEyMDAxOSwgNjgwNzgsIDg1MzEsIDEyNDk5LCA2MjgwLCAxMjMyNCwgNzI0MzQsIDY1MjM4LCA2ODM3NCwgNDgzMiwgCisgICAgNjU1NzMsIDQzODUxLCA2Mjc5LCAxMjUwOCwgMTI5MDQsIDEyNTAyLCA5MTYxLCAxMjg1NTUsIDE2MjAsIDExMjQ3LCAzNjAxLCAKKyAgICAxMjEzMDEsIDgzMzUzLCA2NzI0NiwgNjA5LCAxMTU1NSwgODM0NTYsIDEyNDk2LCAxMTk4MCwgNzQxODEsIDQzNDMsIAorICAgIDEyNTA1LCA4Mjk2MCwgMTI3ODYzLCAxMjUyNTgsIDExMzc3LCAyMzksIDEyODExNCwgNjM3LCAwLCAxMjg2NzgsIDQyNjcxLCAKKyAgICAwLCA5MzAzMiwgODMwOTUsIDQzNTY1LCA3MTMwNiwgMTI2NDkzLCA3Mjk4LCAxMjgyNTYsIDkxNzYwMCwgOTQwNjIsIAorICAgIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgNDI4MTgsIDEyNjYzMiwgNzAzMDYsIDEyMDQ5MCwgNzAzMzMsIAorICAgIDExOTEzNywgMTUwNiwgNDM1NjIsIDExOTkxMywgOTI0OTEsIDY4MDc2LCAxMjY1MSwgMTIwOTE3LCA2NDYyOCwgNzQ1MTcsIAorICAgIDEyMDU4LCA3NDA4NCwgMTk0NjMzLCA3NDk0LCAxMjg3ODAsIDQ5MjQsIDY1NTkyLCAxMTg4NDQsIDE5NDgyMywgMTI3MDg4LCAKKyAgICAzNTUsIDk3MTksIDY2NzYyLCAxMzA2NiwgNjQ3OTYsIDc4NjYzLCA5ODMyOTcsIDEyMDMzLCA0MjE3OCwgMTk0NzU0LCAKKyAgICA2OTc2MCwgNDI1NzEsIDkyNjM1LCAxMTQzMCwgMCwgNzAyOTksIDEyMTUwOCwgMTI0OTUxLCA2ODMyNCwgMzE3OCwgCisgICAgMTI2NDg4LCAxMjg2MzMsIDkyNzA0LCA5MTc1NjYsIDkwODAsIDEyMDk0MywgNjc2OTcsIDE5NTEwMSwgNjgyMDksIDcyNDE4LCAKKyAgICAxMTA4MiwgNzE0ODUsIDU2OTksIDgzMzczLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgNzA0NzcsIDExMTcwLCAKKyAgICA2ODY2MiwgMTAwNTA1LCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDgzMzg0LCAxMTQ4NywgNjc4NTgsIDEyNDY0LCA5ODMzNjUsIAorICAgIDQzMDQ1LCA5ODMyMDEsIDcwMzQ1LCA0MzM0NSwgMTIwNjU3LCAxMDc3MCwgMTE4OTk0LCA2ODA3LCA0NjUsIDk4MjksIAorICAgIDY5OTk3LCA3NDM0OCwgMTIxNDAzLCA0MzM0NiwgODExNiwgNzk1LCAxMjAzNTIsIDcyNDEyLCAxMjQ2MiwgMTA5MzAsIAorICAgIDEwODMxLCAxMjEzMjAsIDExODk1MiwgNjQzNjIsIDc0MzM0LCA5MzA1NiwgMTAxMTIsIDk4MzkzMywgMTI0NjgsIDg2MDcsIAorICAgIDEwMDgsIDExODk0OCwgMTAwOTIsIDEyMDUzOSwgMTI4ODUxLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAxMTI4MiwgCisgICAgMTE5OTYsIDE4MjAsIDQ1NDcsIDEwMDcwOSwgMTEyMDIsIDEyMDI0MywgMTI4MzQ1LCAxMzIyMywgNzQ5MzQsIDY0NTk1LCAKICAgICAxMjcyOTQsIDgzMzc0LCA2ODQ4OSwgNDM0NSwgMTI2MTYsIDkxNzc4NCwgMTI4OTQ3LCA5ODMxNTUsIDc0NDY3LCAwLCAKLSAgICA5ODM4MTksIDEyODI5MSwgNTM4MiwgMTI3Nzc5LCAwLCA2NzIzMywgMTE5MDYwLCA2NDk1MywgNTQwNiwgMTk5MjAsIAotICAgIDY5ODk3LCA2NjUxMCwgMzU5MCwgMTk0ODM1LCAxMTMwLCA5MTc3NjYsIDEyMDk3NywgNDIwMTYsIDExODIzLCA0MzAyMywgCi0gICAgMTIxMDAyLCAxMTg4OTYsIDc3NDIsIDEyNzM3NCwgMTMyODAsIDcxMzIzLCA5MzI2LCA3MzgyNiwgNTMxMCwgNDM1MDksIAotICAgIDc4NTg0LCA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCA2NDc1NywgODU2OCwgMTk0Njg0LCAxMjA0OTYsIAotICAgIDczODE2LCA4MzA2MCwgMTI4NDE4LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAxMzI2LCAxMjA2MzEsIDgzMzkzLCA0MzA2MywgCisgICAgNzM5NTUsIDEyODI5MSwgNTM4MiwgMTIxMzkwLCAwLCA2NzIzMywgMTE5MDYwLCA2NDk1MywgNTQwNiwgMTk5MjAsIDY5ODk3LCAKKyAgICA2NjUxMCwgMzU5MCwgMTk0ODM1LCAxMTMwLCAxMjg2ODksIDEyMDk3NywgNDIwMTYsIDExODIzLCA0MzAyMywgMTIxMDAyLCAKKyAgICAxMTg4OTYsIDc3NDIsIDEyNzM3NCwgMTMyODAsIDcxMzIzLCA5MzI2LCA3MzgyNiwgNTMxMCwgNDM1MDksIDc4NTg0LCAKKyAgICA5MjIyOSwgODk1OSwgNDM1ODksIDY3NDcsIDY2NzIzLCA2NDc1NywgODU2OCwgMTk0Njg0LCAxMjA0OTYsIDczODE2LCAKKyAgICA4MzA2MCwgMTI4NDE4LCA0MjY3MCwgMTI3NTM5LCAxMTYyMSwgMTI0NjAsIDEzMjYsIDEyMDYzMSwgODMzOTMsIDQzMDYzLCAKICAgICA0MzIzOSwgNjU2NzgsIDE5NDg0MCwgNzM5MTcsIDc4NDMsIDY5NzgzLCAxMTY4OSwgNTQxMCwgNTc4MywgMTA0NjgsIDg0MDMsIAogICAgIDU0MDAsIDExNTk0LCAxMjA0MDUsIDY4MzMzLCA4MzM5MCwgMTA0OTEsIDY5ODQyLCA2NDQxMiwgMCwgMTI4MDEyLCA1NTg3LCAKICAgICA0Mjg2NSwgNjQ0MDQsIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIAotICAgIDcwMjk0LCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCA4MzM4OCwgNDI3NjYsIDgzMzg3LCAyMjEwLCA5OTgzLCAKLSAgICAxMjg2ODksIDk0MDA5LCAwLCAwLCAwLCA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAKLSAgICAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAKLSAgICAxMzE0MywgMCwgOTE5MywgMTEwOTcsIDU3MDMsIDEyODI0NywgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAKLSAgICAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCAKLSAgICA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIDAsIDAsIDgyMjUsIDEyMTE5MSwgNjU0LCAxMTM0NSwgNjUzLCAKLSAgICA2NTIsIDAsIDY0NywgODMyNjYsIDYzMywgMTIwNzQ0LCA5ODM4MDksIDEyNjQ3MiwgMTI0ODAsIDQzMjQzLCAxOTQ5MDksIAotICAgIDM5LCAxMjQ4NywgMTIxMjQ3LCAxMjA1MjksIDc0MTk5LCAxMjQ4MiwgMCwgMTI0ODksIDExOTYwNywgMzE5NSwgNTU1MCwgCi0gICAgMTI5MTIxLCA3ODk3LCAxMjcwODksIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCA5ODM2MzQsIAotICAgIDI4NzcsIDEyMTUxOCwgNzA0OTYsIDE2NzUsIDY5ODQwLCAwLCAwLCAxMTkwNzgsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAKLSAgICAxOTQ3NzcsIDEyMTE2MiwgNjcxNzAsIDEyMDc5MCwgMTE4Nzg3LCA0MzI0NCwgOTIyMzMsIDkxNzgzNSwgOTgzOTE2LCAKLSAgICAxMTk1NjEsIDk4MzA3OCwgMTk0OTE0LCAxOTQ5MjEsIDEyODE2MCwgOTkzOSwgMCwgOTgzMTUxLCA3Nzg2MCwgMTI4OTQ4LCAKLSAgICA4MzQ0MCwgMjcwLCAwLCAxMDcxNCwgMTE4OTgzLCA3MjQzNywgMCwgMTE5OTQyLCAxMTkzMzgsIDY1MzcyLCA3MzgwMywgCi0gICAgNzQwMzgsIDY4MjUxLCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCA3MTQ0MCwgMCwgMCwgNzA3LCAxOTQ4MzksIDEyODQwOSwgCi0gICAgOTI4MiwgMTExNjMsIDIyNCwgMTI4NTg4LCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDE5NDU4NiwgNjg2NDQsIAotICAgIDk4MzEzMSwgMzg0MSwgNjczNTcsIDY3MzQxLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMTI3MTgxLCAxMjg5MCwgMjkwOSwgCi0gICAgNjg2MTksIDQ0MDA4LCA2ODYyNywgMTIwNjk5LCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDkxNzk0MywgMTE5NjIsIAotICAgIDEyMTM5NywgMTI1MDcsIDExOTYsIDY3Njg0LCA2NzEwMCwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgCi0gICAgMTIxOTgsIDkxNzg4NywgNjQ4MjQsIDExOTM0MywgMTI3MjQzLCA5NDU0LCA2Mzc3OCwgODY1OCwgNDI1MjgsIDcwMDczLCAKLSAgICAyNzA1LCAxMjg2ODAsIDQxNTIwLCAxOTUwOTgsIDEyMDM3OSwgMTE5ODYsIDc3NjUsIDQyNTAyLCA4MjgwLCA3NDUyMCwgCi0gICAgMjcwMSwgMCwgMTIwMjQwLCA1NzY3LCAwLCAxOTUwMTgsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIAotICAgIDEyMTIzMywgNjM3NDUsIDE3NDgsIDYzNzcwLCAxMjE0MTksIDEyMTA3OCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgCi0gICAgNzg2MDksIDYzNzY0LCA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgMCwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAKLSAgICAxMjc3ODEsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDEyMDk5MCwgMTI1MDQxLCAKLSAgICA5MjUzNSwgMCwgMCwgNjgyNDksIDc0NTc1LCAxMjcwMTAsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAxMjE0NTIsIAorICAgIDcwMjk0LCA2NjYxMCwgMTA0NjEsIDEyMTAzLCAwLCA4NjQyLCA3MDcwMSwgNDI3NjYsIDgzMzg3LCAyMjEwLCA5OTgzLCAKKyAgICAxMTk5NjMsIDk0MDA5LCAxMjkyOTksIDAsIDEyODgxMCwgNzM5OCwgNDE1MTUsIDk4Mzg4MCwgMTE4MDIsIDgwNDEsIDE0NjEsIAorICAgIDkxMCwgMTE5MTMzLCA5ODMzMjcsIDY3NDksIDM2NTgsIDkzOTY0LCAxMjA1MjUsIDEyNzM2MywgNzYxNywgMTk0ODQxLCAKKyAgICAxMjg4OCwgMTAwNTAxLCA2NzY2OCwgMTMxNDMsIDEyNzk3NSwgOTE5MywgMTEwOTcsIDU3MDMsIDEyODI0NywgNDE1MTcsIAorICAgIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCA5ODM1OTMsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgCisgICAgNjEzLCA3NTQzLCAxMDA3ODcsIDQ3NywgNDEwODMsIDkyNTIxLCAxOTQ1OTMsIDU5MiwgMTU3OCwgMTI0NTksIDQzNDQ5LCAKKyAgICAxMjg2MjgsIDAsIDgyMjUsIDEyMTE5MSwgNjU0LCAxMTM0NSwgNjUzLCA2NTIsIDAsIDY0NywgODMyNjYsIDYzMywgCisgICAgMTIwNzQ0LCA3Mjc4OCwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDE5NDkwOSwgMzksIDEyNDg3LCAxMjEyNDcsIDEyMDUyOSwgCisgICAgNzQxOTksIDEyNDgyLCA5ODM3NzAsIDEyNDg5LCAxMDA5MTcsIDMxOTUsIDU1NTAsIDEyODE3MiwgNzg5NywgMTI3MDg5LCAKKyAgICAxMjAzLCA3NDM5NiwgMTgxMywgNjQ1NDQsIDQxMzExLCAxMjA5MCwgOTgzNjM0LCAyODc3LCAxMjE1MTgsIDcwNDk2LCAKKyAgICAxNjc1LCA2OTg0MCwgMCwgMCwgMTE5MDc4LCAxMDA3MCwgMTA1OTUsIDAsIDExOTA3NywgMTk0Nzc3LCAxMjExNjIsIAorICAgIDY3MTcwLCAxMjA3OTAsIDExODc4NywgNDMyNDQsIDkyMjMzLCA5MTc4MzUsIDEyNTE5MywgMTE5NTYxLCA5ODMwNzgsIAorICAgIDE5NDkxNCwgMTk0OTIxLCAxMjgxNjAsIDk5MzksIDEyMTUxMSwgMTI1MTk1LCA3Nzg2MCwgMTI4OTQ4LCA4MzQ0MCwgMjcwLCAKKyAgICA5ODMzMDksIDEwNzE0LCAxMTg5ODMsIDcyNDM3LCAwLCAxMTk5NDIsIDExOTMzOCwgNjUzNzIsIDczODAzLCA3NDAzOCwgCisgICAgNjgyNTEsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDcxNDQwLCAwLCAwLCA3MDcsIDExOTY0OSwgMTAwNDAwLCA5MjgyLCAKKyAgICAxMTE2MywgMjI0LCA3Mjc5OSwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCA3MDY3NCwgNjg2NDQsIDEyNzIxNCwgMzg0MSwgCisgICAgNjczNTcsIDY3MzQxLCAxMDczMiwgNjg2NDAsIDg1MCwgNDk3MiwgMTI3MTgxLCAxMjg5MCwgMjkwOSwgNjg2MTksIDQ0MDA4LCAKKyAgICA2ODYyNywgMTAxMDIzLCAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDkxNzk0MywgMTE5NjIsIDEyMTM5NywgMTI1MDcsIDExOTYsIAorICAgIDY3Njg0LCA2NzEwMCwgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMTAxMDI0LCAxMjE5OCwgOTE3ODg3LCAKKyAgICA2NDgyNCwgMTE5MzQzLCAxMjY2MDgsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgNzAwNzMsIDI3MDUsIDEyODY4MCwgCisgICAgNDE1MjAsIDE5NTA5OCwgMTIwMzc5LCAxMTk4NiwgNzc2NSwgNDI1MDIsIDgyODAsIDc0NTIwLCAyNzAxLCA5ODMzMzMsIAorICAgIDEyMDI0MCwgNTc2NywgMCwgMTk1MDE4LCA5ODA5LCA4MzUzLCA2Mzc0NywgNjY3MDEsIDYzNzcyLCAxMjEyMzMsIDYzNzQ1LCAKKyAgICAxNzQ4LCA2Mzc3MCwgMTIxNDE5LCAxMjEwNzgsIDAsIDY1NTQyLCA2Mzc2NiwgNTUyNDQsIDMwNjEsIDc4NjA5LCA2Mzc2NCwgCisgICAgNjM3ODcsIDkwNjcsIDYwOTYsIDAsIDc2OTQsIDk4Mzc3NiwgNzI1NywgNjM3NjgsIDM0ODUsIDEyOTg3LCAxMjc3ODEsIAorICAgIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMTI3MTQwLCA2Mzg2LCA2Mzc4MywgMTIwOTkwLCAxMjUwNDEsIDkyNTM1LCAKKyAgICAxMjI4ODQsIDAsIDY4MjQ5LCA3NDU3NSwgMTAwOTk3LCA2NTcxOSwgMTMwODMsIDY0NTc0LCA2NTAxMiwgMTIxNDUyLCAKICAgICAxNjQwLCAxMjQ5NSwgNjY2OTEsIDc2MjQsIDMxMzgsIDEwOTk2LCAxMTE3MSwgMTkyMiwgMTI3Mjc1LCAxMjQ5OCwgMTA5ODcsIAotICAgIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDEyOTE4MywgMTk0ODQyLCAxMjgxMTIsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIAotICAgIDQyMjgsIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgCi0gICAgOTIxNzAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgODM1MTksIDY0OTExLCA4MzUyMSwgCi0gICAgMjA5NiwgNjUxMjAsIDgzNTE2LCA3ODIxOSwgODMyNzAsIDgzNzgsIDExNjMyLCA2ODgzOCwgNjYyMTMsIDYzODY0LCAKLSAgICA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCA4NTA3LCA2NjIzNiwgNjYyMTEsIDY2MjE4LCAKLSAgICA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgOTgzNTUyLCA3OTA5LCA2NjIzNCwgMTE2MDUsIDYzNzU5LCAKLSAgICAxMjczMDgsIDY2MjA4LCA2NzMzOSwgMTMwMDIsIDYzODAzLCAyNDQsIDExNTQyLCAxMjg5OCwgMTI0OTQsIDczNzYxLCAKLSAgICAxMjQ5MiwgMTI2NjksIDk0MDcwLCAwLCA3NDE1MywgMTIwMzEwLCAxMjgyNzgsIDEyMDY4MCwgNDg4MiwgMTMwNDAsIAotICAgIDk4MzM2MiwgODYxMiwgNDg4NSwgNzQwNTMsIDEyNzgzMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIAotICAgIDEyOTA2NiwgNjM3OTcsIDkyMzk0LCA0MjM1OCwgMCwgNzI5MiwgMCwgNjM3NTYsIDQyNzg2LCA2NjY5MywgMCwgMTg3MCwgCi0gICAgNzgwNDAsIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgNzAwMjgsIDc4MDM0LCA0NTc5LCA2OTIzMiwgMCwgMTI1MTEsIAotICAgIDc0NDUzLCAxMjUxNCwgMCwgNzExMzAsIDcyMzksIDcwMDEsIDg2MjMsIDk0MDExLCAxMjUxMzcsIDEyODA0OCwgNzM3OCwgCi0gICAgMTI1MTIsIDExNjE1LCA2MTA0LCAwLCAxMjA5MDAsIDY1OSwgNjA5OCwgMCwgMTIyMzQsIDgzNTExLCA2NzM1OCwgODMxMSwgCi0gICAgMTI1MTAsIDc2NjksIDEzMDM5LCA4MzUwOSwgMTI1MTMsIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgMTIxMzg1LCA3MDE5MywgCi0gICAgMTI4MzU0LCAyMzIzLCAwLCAyMzE5LCA3NzkxNywgMTI0NzcsIDc3OTE2LCAyMzExLCA3NjY2LCA0NDE1LCAyMzcsIDYyODEsIAotICAgIDEyNzI4MCwgOTgzMzExLCA4MzAyMCwgMjMwOSwgMTMxMiwgODE3MywgODMwMTMsIDEyNDY5LCA4MzAxNSwgNzg1MDUsIAotICAgIDY0MzM1LCAxMDYwOSwgODMwMTEsIDc4MDA2LCA5Mzk3LCAxMTUyNCwgOTM5NSwgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgCi0gICAgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgOTM4NiwgOTM4MywgOTM4NCwgNjc0MCwgMTI3OTkwLCAKLSAgICA2NTQ1MSwgODE4NSwgMTI4OTMxLCAxOTQ4NDMsIDQzMDI0LCA0MzMzNiwgNjc2NTksIDIzMTMsIDEyODE2NywgNzk0OCwgCi0gICAgOTIzNiwgNzc5NDIsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDgzMDA2LCA4MzAwNywgMTE5OTgsIDEyMDgyLCAKLSAgICAxMDkyNCwgMzE0NywgODMwMDQsIDY2NDA2LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgCi0gICAgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzc4LCA5MzcyLCAxMjQ0NCwgNzQyNTYsIDAsIAotICAgIDEzMDE2LCA4MjEwLCAxMjEwNjIsIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCAKLSAgICAxMjA2MzAsIDQxNTUsIDEyMTA5MCwgMTIwNzA0LCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMTM4MjYsIAotICAgIDEyNzIxNywgOTgzMjAyLCA5OTIyLCA0MzMwOSwgMTEyMTEsIDEyNTI1LCA5ODM0NzMsIDEyMDE2LCA2NTc3MCwgOTU0OCwgCi0gICAgNjc2NjUsIDQwMywgNzgyMzAsIDEyNTAzLCAxOTQ2ODksIDEyNzE5MSwgMTEwMzAsIDQzOTE2LCA5MjU2NywgNjU2OTEsIAotICAgIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxMjkxNDMsIDEyMTA3MiwgMTI1MDYsIDk4MzgzOCwgCi0gICAgMTExNDYsIDcxNDc3LCAxMjUwMCwgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCAKLSAgICAxMTIwOCwgMTIwMjM2LCA3ODM5NSwgNzgzOTQsIDc0MDY5LCA3MTQ0NiwgNzgzOTEsIDM2MDgsIDgyODEsIDExMzczMiwgCi0gICAgMTEwNywgMTEzNzQ1LCA5MDc2LCA4ODYyLCA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIDEzMjIyLCAKLSAgICA3NDE2NSwgNzQ3ODIsIDQzNDk5LCA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAxMTM2NjQsIDQ5OCwgCi0gICAgNjQ0NzEsIDc3OTg3LCA5Mjk3NCwgMTI1MjksIDgwNDIsIDQzODk5LCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgNzQ1MDYsIAotICAgIDY5NzE5LCAzMjMxLCA5MTc4MzYsIDY0MjIsIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgCi0gICAgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgNzg3MzgsIDQxNDMzLCA0NzE5LCA0NjksIDkxNzgxMCwgNDM2MywgMzMxMywgCi0gICAgNDE0MjgsIDc4NDA3LCAyMDIzLCAxNzcyLCA3ODIyNCwgNzgyMjUsIDY1NzA2LCAxMDA1MSwgNjQ4MTIsIDc4MjIwLCAKLSAgICA3NDIzNywgOTkyMCwgMTIyMTUsIDgyOTc4LCA0OTMxLCAxOTUxLCAxMjQ5NywgMTE5MzYzLCA5NjA3LCA3MDM2OCwgOTY2MywgCi0gICAgNjY4MzgsIDExOTYzNCwgNjUwMywgNDExMTAsIDk4MzQ2NywgMTQ5MSwgNjY4NDcsIDEyOTE2OSwgMTI3MzA0LCA0MTA2MSwgCi0gICAgNzA0NTQsIDE5NDgzOCwgMTI3MTg3LCA2NTAyNiwgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDcxMTgxLCA2NjQ3NiwgCi0gICAgNDExMDgsIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAxMjUzNSwgNDE5OTIsIDQxNTA2LCAxMjcwMDIsIDQxNjg3LCAwLCAKLSAgICAxMjA3MTcsIDEyNzc3NiwgOTk0MCwgMTI3Mjk5LCA3NjkyLCA5ODM4MzMsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIAotICAgIDY1MDgzLCA2ODM5LCA5ODE2LCAxMjY1MTcsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIAotICAgIDEyMDM1MSwgMTI3Mjk4LCA2NDEzOSwgNzgyMzEsIDY0MTEsIDEyOTEwLCA2NzcxMCwgNjY2NDQsIDEzMDI4LCA2NzM3LCAKLSAgICAxMjUzNywgMCwgNDM1MDYsIDY0MTM2LCAxMjUzNiwgMjM1MCwgMTMwMjksIDc4MjMzLCAxMjA5MTQsIDQzODk3LCAxMzAzMCwgCi0gICAgNjcwMiwgNDUyNywgNzEyNTAsIDEyNTM4LCAxMjg4MTAsIDk4MzY0NSwgNjU1OTksIDY1NzE3LCA5OTY2LCA5MzA0NiwgCi0gICAgNDk0OCwgMTI0ODQsIDQwMzIsIDEyMTE3NywgMTI2MjMsIDAsIDYyMDcsIDk4MzIyNSwgNjExNywgNjU5MzAsIDg0MTIsIAotICAgIDEyNzE4MywgNzQzOCwgMTI5NiwgMjMyNSwgNDE1MTEsIDEyMTAyMCwgMTAxNDksIDc0MTE4LCAwLCAxMjAyMzMsIDEyNDgxLCAKLSAgICAxMjEyODAsIDEyNDg4LCA2NjcxMywgMCwgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCA3Mzc2NiwgCi0gICAgMTE5MjQ0LCA2Mjk1LCA5MDEsIDQxNTEwLCA3OTUzLCAwLCA2NTAzMiwgNDE1MTMsIDEyMDIwOSwgMTE5MjcsIDY2NTg0LCAKLSAgICA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3MTQ1OSwgODMwMzQsIDY3NjAzLCA4NDgsIDk4NjgsIDY3MjIwLCA2NDI0LCA3ODU2OCwgCi0gICAgNjcyMjYsIDY5OTIyLCA3MDE5MCwgNzg1NjMsIDc4NTY0LCAyMzUyLCA2NzIxOSwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIAotICAgIDY3OTczLCA5ODMxOTMsIDEzMDI2LCA2NzYyLCA3ODU3OSwgNzAxOTIsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgCi0gICAgODA5OSwgMTI3OTg0LCAwLCAxMzQzLCA5MTc5OTksIDEyMDc4NCwgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDAsIDcyNDM2LCAKLSAgICAxMTM3MTMsIDExNzQxLCA5MTc5ODYsIDc1MDQzLCA5MjE2LCA4MjYzLCAxMTI3OSwgODMwMjMsIDgzMDI0LCA4MzAyNSwgCi0gICAgMTMwMjEsIDY0NDk0LCAzMTM2LCAxOTQ3NTgsIDE5NDc1NywgMTk0NzYwLCAxMzAyMiwgNDI3MzcsIDk5NTYsIDAsIDQzOTU0LCAKLSAgICA3NDU1MiwgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgNzQzNDAsIAotICAgIDY5NjgxLCAwLCA0MzAwMSwgODAyOSwgMCwgMCwgOTgzNzgwLCAzMzM1LCAxMTkzNDEsIDkyMDksIDk3NzYsIDEyMDUyNiwgCi0gICAgMTk0NzQ4LCA1MjE1LCA0MjY0NCwgMzMzMywgMTYzMiwgMTk0NzUxLCA2NDg0OSwgMzM0MiwgNzg1ODIsIDUzNjMsIDEyOTU3LCAKLSAgICA3ODU4MSwgNDE1NiwgMCwgMTI3MzI5LCA2NDIxLCA3ODAzOSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIAotICAgIDc0NTQyLCAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCA0MjE0LCA3Mzc5MCwgMTE5NDUsIAotICAgIDQzOTI1LCAxMzA0NiwgODgzOCwgNDI1LCA0MDI1LCAxMDcwOSwgNzg1OTUsIDIxMDgsIDIzOTIsIDEzMDQ3LCA5Mjc0NSwgMCwgCi0gICAgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDY1ODI3LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAKKyAgICA2OTkzNiwgNjk5MzksIDM4OTQsIDY1NTQzLCAxMjkxODMsIDE5NDg0MiwgMTIwNzkzLCA0OTMsIDExODkyNSwgNDMxOTcsIAorICAgIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCAKKyAgICA2NDMxNSwgOTIxNzAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAxMjQ5MSwgODM1MTksIDY0OTExLCAKKyAgICA4MzUyMSwgMjA5NiwgNjUxMjAsIDgzNTE2LCA3ODIxOSwgODMyNzAsIDgzNzgsIDExNjMyLCA2ODgzOCwgNjYyMTMsIAorICAgIDYzODY0LCA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCA4NTA3LCA2NjIzNiwgNjYyMTEsIAorICAgIDY2MjE4LCA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgOTgzNTUyLCA3OTA5LCA2NjIzNCwgMTE2MDUsIAorICAgIDYzNzU5LCAxMjczMDgsIDY2MjA4LCA2NzMzOSwgMTMwMDIsIDYzODAzLCAyNDQsIDExNTQyLCAxMjg5OCwgMTI0OTQsIAorICAgIDczNzYxLCAxMjQ5MiwgMTI2NjksIDk0MDcwLCAwLCA3NDE1MywgMTIwMzEwLCAxMjY1MTMsIDEyMDQ3MiwgNDg4MiwgCisgICAgMTMwNDAsIDk4MzM2MiwgODYxMiwgNDg4NSwgNzQwNTMsIDEyNzgzMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAKKyAgICAyNDgsIDEwMTAxOCwgNjM3OTMsIDkyMzk0LCA0MjM1OCwgMCwgNzI5MiwgMTAxMDE3LCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAKKyAgICA5MTc1OTgsIDE4NzAsIDc4MDQwLCA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgNjkyMzIsIAorICAgIDAsIDEyNTExLCA3NDQ1MywgMTI1MTQsIDk4Mzk0NywgNzA2NTYsIDcyMzksIDcwMDEsIDg2MjMsIDk0MDExLCAxMjUxMzcsIAorICAgIDEyODA0OCwgNzM3OCwgMTI1MTIsIDExNjE1LCA2MTA0LCAxMDEwMTEsIDEyMDkwMCwgNjU5LCA2MDk4LCAxMDA5NDgsIAorICAgIDEyMjM0LCA4MzUxMSwgNjczNTgsIDgzMTEsIDEyNTEwLCA3NjY5LCAxMzAzOSwgODM1MDksIDEyNTEzLCAxMDIwMiwgCisgICAgMTI0NzEsIDAsIDg3NDcsIDEyMTM4NSwgNzAxOTMsIDEwMDk0NiwgMjMyMywgMTI4MTQ3LCAyMzE5LCA3NzkxNywgMTI0NzcsIAorICAgIDc3OTE2LCAyMzExLCA3NjY2LCA0NDE1LCAyMzcsIDYyODEsIDEyNzI4MCwgMTAwOTQwLCA4MzAyMCwgMjMwOSwgMTMxMiwgCisgICAgODE3MywgODMwMTMsIDEyNDY5LCA4MzAxNSwgNzg1MDUsIDY0MzM1LCAxMDYwOSwgODMwMTEsIDc4MDA2LCA5Mzk3LCAKKyAgICAxMTUyNCwgOTM5NSwgOTM5NiwgOTM5MywgOTM5NCwgOTM5MSwgOTM5MiwgOTM4OSwgNjIwOSwgOTM4NywgOTM4OCwgNDkzMiwgCisgICAgOTM4NiwgOTM4MywgOTM4NCwgNjc0MCwgMTI3OTkwLCA2NTQ1MSwgODE4NSwgMTI4OTMxLCAxOTQ4NDMsIDQzMDI0LCAKKyAgICA0MzMzNiwgNjc2NTksIDIzMTMsIDc0NDQ2LCA3OTQ4LCA5MjM2LCA3Nzk0MiwgMTI4ODk5LCAwLCAxMDU3MCwgNDM0NzMsIAorICAgIDYyODksIDEwNDg0LCA4MzAwNiwgODMwMDcsIDExOTk4LCAxMjA4MiwgMTA5MjQsIDMxNDcsIDgzMDA0LCA2NjQwNiwgCisgICAgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIDkzODIsIDkzNzksIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIAorICAgIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc3OCwgOTM3MiwgMTI0NDQsIDc0MjU2LCAwLCAxMzAxNiwgODIxMCwgMTIxMDYyLCAKKyAgICA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgMTIwNjMwLCA0MTU1LCAxMjEwOTAsIAorICAgIDEyMDcwNCwgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTEzODI2LCAxMjcyMTcsIDk4MzIwMiwgOTkyMiwgCisgICAgNDMzMDksIDExMjExLCAxMjUyNSwgMTk1MDM1LCAxMjAxNiwgNjU3NzAsIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAKKyAgICAxMTAyMSwgMTk0Njg5LCAxMjUyNTAsIDExMDMwLCA0MzkxNiwgOTI1NjcsIDY1NjkxLCA2Mzk5OCwgMTgxOSwgMTA0OTYsIDAsIAorICAgIDE5NDY1NywgMTE5OTIwLCAwLCAxMjkxNDMsIDEyMTA3MiwgMTI1MDYsIDE5NDYwNSwgMTExNDYsIDcxNDc3LCAxMjUwMCwgCisgICAgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCAxMTIwOCwgMTIwMjM2LCA3ODM5NSwgCisgICAgNzgzOTQsIDc0MDY5LCA3MTQ0NiwgNzgzOTEsIDM2MDgsIDgyODEsIDExMzczMiwgMTEwNywgMTEzNzQ1LCA5MDc2LCA4ODYyLCAKKyAgICA2OTc0MywgNDEwNTIsIDEzMDg0LCA2NDc2NiwgNDMyMTcsIDc4MDMsIDEzMjIyLCA3NDE2NSwgNzQ3ODIsIDQzNDk5LCAKKyAgICA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAxMTM2NjQsIDQ5OCwgNjQ0NzEsIDc3OTg3LCA5Mjk3NCwgCisgICAgMTI1MjksIDgwNDIsIDQzODk5LCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgNzQ1MDYsIDY5NzE5LCAzMjMxLCAxOTQ1NjksIAorICAgIDY0MjIsIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgCisgICAgNzg3MzgsIDQxNDMzLCA0NzE5LCA0NjksIDkxNzgxMCwgNDM2MywgMzMxMywgNDE0MjgsIDc4NDA3LCAyMDIzLCAxNzcyLCAKKyAgICA3ODIyNCwgNzgyMjUsIDY1NzA2LCAxMDA1MSwgNjQ4MTIsIDc4MjIwLCA3NDIzNywgOTkyMCwgMTIyMTUsIDgyOTc4LCAKKyAgICA0OTMxLCAxOTUxLCAxMjQ5NywgMTE5MzYzLCA5NjA3LCA3MDM2OCwgOTY2MywgNjY4MzgsIDExOTYzNCwgNjUwMywgNDExMTAsIAorICAgIDEyNTIzMiwgMTQ5MSwgNjY4NDcsIDEyOTE2OSwgMTI3MzA0LCA0MTA2MSwgNzA0NTQsIDE5NDgzOCwgMTIxMDE0LCA2NTAyNiwgCisgICAgNDE5OTMsIDQxNTA5LCAxMTA0NSwgNjUwMjgsIDcxMTgxLCA2NjQ3NiwgNDExMDgsIDk3MzgsIDQxOTk1LCAxMDc1LCAxOTU4LCAKKyAgICAxMjUzNSwgNDE5OTIsIDQxNTA2LCAxMjcwMDIsIDQxNjg3LCAxMjczOTgsIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMDA0MTksIAorICAgIDc2OTIsIDEyMDY4MCwgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDY4MzksIDk4MTYsIDEyNjUxNywgMTI1MzIsIAorICAgIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgMTIwMzUxLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgCisgICAgMTI5MTAsIDY3NzEwLCA2NjY0NCwgMTMwMjgsIDY3MzcsIDEyNTM3LCAxMDA0MTcsIDQzNTA2LCA2NDEzNiwgMTI1MzYsIAorICAgIDIzNTAsIDEzMDI5LCA3ODIzMywgMTIwOTE0LCA0Mzg5NywgMTMwMzAsIDY3MDIsIDQ1MjcsIDcxMjUwLCAxMjUzOCwgCisgICAgMTAwNDE2LCAxMjkzNTIsIDY1NTk5LCA2NTcxNywgOTk2NiwgOTMwNDYsIDQ5NDgsIDEyNDg0LCA0MDMyLCAxMjExNzcsIAorICAgIDEyNjIzLCAxMjAyMDcsIDYyMDcsIDE5NDcyNiwgNjExNywgNjU5MzAsIDg0MTIsIDEyNzE4MywgNzQzOCwgMTI5NiwgMjMyNSwgCisgICAgNDE1MTEsIDEyMTAyMCwgMTAxNDksIDc0MTE4LCAwLCAxMTk2MjUsIDEyNDgxLCAxMjEyODAsIDEyNDg4LCA2NjcxMywgMCwgCisgICAgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCA3Mzc2NiwgNzI3NTcsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIAorICAgIDk4MzQ2NSwgNjUwMzIsIDQxNTEzLCAxMjAyMDksIDExOTI3LCA2NjU4NCwgNzg1NTksIDc4NTYwLCA3ODU1NywgNzE0NTksIAorICAgIDgzMDM0LCA2NzYwMywgODQ4LCA5ODY4LCA2NzIyMCwgNjQyNCwgNzg1NjgsIDY3MjI2LCA2OTkyMiwgNzAxOTAsIDc4NTYzLCAKKyAgICA3ODU2NCwgMjM1MiwgNjcyMTksIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCA2Nzk3MywgOTgzMTkzLCAxMzAyNiwgNjc2MiwgCisgICAgNzg1NzksIDcwMTkyLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDEyNzk4NCwgMTI5MzY3LCAxMzQzLCAKKyAgICAxMjg0MzgsIDEyMDc4NCwgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDEyMDIxMCwgNzI0MzYsIDExMzcxMywgMTE3NDEsIAorICAgIDEyOTE5NiwgNzUwNDMsIDkyMTYsIDgyNjMsIDExMjc5LCA4MzAyMywgODMwMjQsIDgzMDI1LCAxMzAyMSwgNjQ0OTQsIAorICAgIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMTAwNzQ2LCA0Mzk1NCwgNzQ1NTIsIAorICAgIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCA2OTY4MSwgMCwgCisgICAgNDMwMDEsIDgwMjksIDAsIDk4MzYzOSwgOTgzNzgwLCAzMzM1LCAxMTkzNDEsIDkyMDksIDk3NzYsIDEyMDUyNiwgMTI4NDA0LCAKKyAgICA1MjE1LCA0MjY0NCwgMzMzMywgMTYzMiwgMTk0NzUxLCA2NDg0OSwgMzM0MiwgNzg1ODIsIDUzNjMsIDEyOTU3LCA3ODU4MSwgCisgICAgNDE1NiwgMCwgMTI3MzI5LCA2NDIxLCA3ODAzOSwgMTYxMSwgNzg1ODksIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAKKyAgICAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDk4Mzc4OSwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgNDM5MjUsIAorICAgIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDkyNzQ1LCAxMjUwNDAsIAorICAgIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA2NTgyNywgMTMwNTAsIDk5MjQsIDEyODM3OCwgNjUwNywgCiAgICAgMTI3OTE5LCA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAxOTQ3MjEsIAogICAgIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxMjEwMzYsIDM5OTcsIDEyODA2LCAKICAgICA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIDEyODAwMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCA0MTA1NywgCi0gICAgNjgzMDcsIDkxNzg0MiwgMCwgMCwgOTgzNzkxLCA5MjIxMCwgOTI0MTEsIDEyOTMwMywgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIAotICAgIDExOTExLCAxMjQ5OTAsIDExODg0MiwgMjM0NiwgMTMyNzAsIDg5NTgsIDAsIDk2NDYsIDM3NzMsIDQzMTgzLCA2NDAxLCAKLSAgICA1ODMxLCAwLCAxMjA4NjUsIDEzMDQzLCA4MDU2LCA3MDEwOCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgCi0gICAgMTIxMDQ4LCA5ODM4ODQsIDEwNjk5LCA2NDA4LCA5MjIyNywgNzgyNSwgNTY2MSwgODI5NzIsIDgyOTczLCAzNjAzLCAKLSAgICA0MTEwOSwgMjM5OCwgMzU0OCwgODI5NjksIDgyOTcwLCAxMTk5MzMsIDgyOTY0LCAzMTE1LCA5OTE4LCAxMjc4MjMsIDgyOTQsIAotICAgIDQyOTEyLCAwLCAxMjcyODcsIDE5NDcyNiwgNDg3NiwgNjU4MDQsIDAsIDAsIDQzNDY4LCAxMjEyMjEsIDQxNTU4LCA0MTQ3MSwgCi0gICAgNzM5NTAsIDgxNTgsIDk5NDQsIDQxNDcyLCAxMjAyOTgsIDEzMDUxLCA3ODY4OSwgMzE0MywgMTk0Njc0LCA2NzAxLCAKLSAgICA0MTU1OSwgMTg5NiwgNjUyMTUsIDEzMDUyLCAxOTQ2ODAsIDU2NjUsIDc4NTk0LCAxMTkwNzEsIDcwMjUsIDYzOTc0LCAwLCAKLSAgICA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgNTY2MiwgNDIzODIsIDE1NjQsIDczOTI0LCAxMTIxLCAKLSAgICA3ODMxOSwgNjM5NTksIDAsIDk5NDIsIDEzMjMxLCA5ODM1NzgsIDY0NzUyLCA0NzMyLCAxOTQ2NjYsIDExNTk2LCA3ODE0MiwgCi0gICAgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIDQyMDI0LCA2NDIwLCA0MjAyOCwgOTIyOTQsIDEwNTA5LCAyNzk1LCAKLSAgICA0OTEwLCAxMjkxOTMsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCAKLSAgICA2NDIzLCA0Mjc3NCwgMCwgMCwgNjg1MjYsIDEyODIzLCAyMzMxLCAxMjc3ODgsIDcwODUsIDYxMzcsIDAsIDc1MjQsIAotICAgIDEyMDcyMSwgOTE3ODA5LCA4MzQ2LCAxMjg0MzgsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDc3OTgyLCA4MjIsIDcwNDEyLCAKLSAgICA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCA4Mjk1NiwgNzg2NTUsIDY2ODgyLCA4Mjk1OSwgNzg0ODQsIDQxMjY1LCAKLSAgICA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIDQzOTYyLCAxMTI3OCwgNzg2MzIsIDc0MTExLCAxMjgwOTUsIAotICAgIDEyOTQ2LCAxMjEwNzYsIDcxOTIxLCAxMjAzNDksIDYyOTQsIDMxNDQsIDExMzcwNiwgMTI3OTY3LCA2NTAxOSwgNzQwNzgsIAotICAgIDczOTkwLCA2NTExMSwgOTgzOTYwLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAKLSAgICAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCA3NDA3NiwgODI5NDksIDIzNDIsIDgyOTUxLCAKLSAgICA4Mjk0NCwgNjUyMDYsIDQ4OTQsIDgyOTQ3LCA0ODkwLCAxMjEwNTksIDY0NDMzLCA1ODEsIDQ4OTMsIDQyOTI5LCA2NTcxLCAKLSAgICA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCA2NDY1MSwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgCi0gICAgNjk3MDIsIDk4MzkzNywgMCwgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNDI5MjgsIDQyODgwLCAKLSAgICA0MzU4NywgMTIxMDk4LCAwLCAwLCA3MDQ2MSwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCAKLSAgICA2NTg1NCwgNDg3NSwgNjU4MTEsIDc1MDI0LCAxMjAzODksIDcxODU0LCA5MzQ0LCA4ODI2LCA5MjkxNiwgMTIwMzk1LCAKLSAgICAxMzEwNCwgNjc4MjgsIDExOTk3LCAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCA4MzA5NiwgNjU2OTYsIDcyNDMyLCAxMjE0MTIsIAotICAgIDY2MjE3LCAxMjExOTAsIDgzMzQsIDkyNzU1LCA4MzIwNywgMzQ0OSwgMTIxMjY0LCAxMzEwMCwgNzg0MTQsIDc4NDEzLCAKLSAgICA4MzIxNiwgNjY0MDUsIDcwNDMwLCA4MzA4OSwgODMyMDMsIDEyNzI1MCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAxMDczNCwgCi0gICAgMTI3MDE0LCA4MzE5OCwgNjc4MjUsIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCAKLSAgICA4MzUxMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgODMxMDAsIDIzNjEsIAotICAgIDc5NzEsIDc4MDcyLCA3ODA3MywgNTUyNDMsIDc4MDcxLCA5ODM1NzUsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCAKLSAgICA0MDk3NywgMTA5NjAsIDQwOTYyLCA4MzA1LCAxMjU3MywgNzExMzEsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAxMjc4MTYsIAotICAgIDEyNTgyLCA3ODI4MiwgOTgzMDQ4LCA2OTg1NiwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCAKLSAgICA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIDcwNDAxLCA3MDAzOSwgMCwgNzA0NjAsIDQ5MTMsIDcxMDYwLCAxMjg1NjIsIAotICAgIDcxMzMzLCA0MjMyNiwgMTIxMTE5LCAxMjcyOCwgOTI2ODUsIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAKLSAgICAxMjA4MjksIDgzMDgxLCAxMjU4OCwgODgyMSwgNjE1MywgMjg2NywgODMwODUsIDY2MzEyLCA2OTgsIDgzMDc2LCA4MzA4NywgCi0gICAgMTAzNTYsIDcwMDE3LCAxMjg1NzAsIDY1MSwgMTI2NDEsIDgzMTM4LCAxMjUwOTgsIDEyMDcxMCwgMTI5MDY0LCA0MTU1MiwgCi0gICAgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc0OTA1LCAxMjc1MTYsIDc4NDYxLCA5Mjk2MCwgNjY5MjcsIDY0OTQ1LCAKLSAgICA0NzE2LCA0MzI3NywgMTIwOTMyLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMTIwOTI4LCAxOTQ3MDAsIDU1MjY0LCA0MTIxMSwgCi0gICAgMTIwNjc2LCA4NzAzLCA1NDYyLCA4MzE5NSwgODMxODUsIDEwMTAxLCAwLCA3MDA0OSwgODQ3OSwgNDE1MSwgNDE5MzMsIAotICAgIDgzMTg5LCAwLCA2NjI1NCwgMTIwODIxLCA2ODQ5NywgMCwgMTI4NjU0LCAxMTM3OTksIDgzMTU5LCA3NDA1MCwgNDI2NTEsIAotICAgIDEyNzM3MSwgMCwgMCwgODMyMjUsIDgzMjE4LCAxMjI3OCwgNzUwMTEsIDEyODQwNSwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIAotICAgIDEyODk5LCA4MzE1NSwgMCwgMjY5OSwgMTI5MzA0LCA3Mzg0NSwgMjk4NSwgODMxNDksIDY4NjQ4LCA4MzE0NiwgMTIxOTIsIAotICAgIDExOTMxNCwgMCwgNjY0ODksIDk4MjcsIDExOTMxMCwgODYwOSwgMTE5MzA4LCA2NzQyNiwgMTE5MzA2LCAxMTQ4MSwgCi0gICAgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDcwODM4LCA2NzQzMSwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNjc0MjgsIDQzNTk2LCAKLSAgICA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDc4MzIxLCA0MDk2NywgCi0gICAgNDA5NjQsIDkxNzgyNSwgMTI3MDQsIDc4NDg3LCA0MzMwNiwgMCwgNjQ0OTcsIDEyMTM4LCA3OTMwLCAwLCAyMjkyLCAKLSAgICA2ODIxNiwgMTk0ODcxLCAxMjEzOTAsIDUyNDQsIDQxODksIDkyNjk3LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAKLSAgICA3MDQ2MywgOTY4LCAwLCA0Mzc0MywgMCwgODg3MywgMjI3OSwgMTI3MTAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgCi0gICAgOTI3NDksIDkyNzUzLCA3NDQ5MCwgMTI3MDk5LCAxMTgzOCwgNzUwMDEsIDAsIDAsIDQyNjgyLCAxMjU3OCwgMTI3MjAsIDAsIAotICAgIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgNjk5NTAsIDkxNzk1MCwgNzI1MSwgMCwgMTIwMzgyLCAxMTg4NTAsIAorICAgIDY4MzA3LCA5MTc4NDIsIDEyNzg5NywgMCwgOTgzNzkxLCA5MjIxMCwgNzI3MzUsIDEyOTMwMywgNDE0OTYsIDE5NDU3NCwgCisgICAgOTE2NSwgMTU3MiwgMTE5MTEsIDEyNDk5MCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgOTgzNDE2LCA5NjQ2LCAzNzczLCAKKyAgICA0MzE4MywgNjQwMSwgNTgzMSwgMTk0NzIzLCAxMjA4NjUsIDEzMDQzLCA4MDU2LCA3MDEwOCwgNjU2ODEsIDIwOCwgCisgICAgMTI3MzgyLCA0MTUxNCwgMTIxMTI0LCAxMjEwNDgsIDk4Mzg4NCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCAKKyAgICA4Mjk3MiwgODI5NzMsIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCA4Mjk2OSwgODI5NzAsIDExOTkzMywgODI5NjQsIDMxMTUsIAorICAgIDk5MTgsIDcyNzIzLCA4Mjk0LCA0MjkxMiwgMTk0NzQ1LCAxMjUxODUsIDEyNjQ4MywgNDg3NiwgNjU4MDQsIDAsIDEwMDU4MywgCisgICAgNDM0NjgsIDEyMTIyMSwgNDE1NTgsIDQxNDcxLCA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIAorICAgIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIDQxNTU5LCAxODk2LCA2NTIxNSwgMTMwNTIsIDExOTkzMCwgNTY2NSwgCisgICAgNzg1OTQsIDgzMTI5LCA3MDI1LCA2Mzk3NCwgMTAwNDY0LCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAKKyAgICAxMjMxMCwgNTY2MiwgNDIzODIsIDE1NjQsIDczOTI0LCAxMTIxLCA3ODMxOSwgNjM5NTksIDk4MzE4NCwgOTk0MiwgMTMyMzEsIAorICAgIDk4MzI1MCwgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDc4MTQyLCA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCAKKyAgICA2NDc3MiwgNDIwMjQsIDY0MjAsIDQyMDI4LCA5MjI5NCwgMTA1MDksIDI3OTUsIDQ5MTAsIDEyOTE5MywgNjkyMzEsIAorICAgIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIDY0MjMsIDQyNzc0LCAxMDA0NTUsIDAsIAorICAgIDY4NTI2LCAxMjgyMywgMjMzMSwgMTI3Nzg4LCA3MDg1LCA2MTM3LCAwLCA3NTI0LCAxMjA3MjEsIDExMzcwMywgODM0NiwgCisgICAgNzg4MDIsIDgzMzgsIDEyODMxNSwgNjUwNDMsIDc3OTgyLCA4MjIsIDcwNDEyLCA5OTAzLCA2NDcyMSwgNDI3MjIsIDY5ODc3LCAKKyAgICA4Mjk1NiwgNzg2NTUsIDY2ODgyLCA4Mjk1OSwgNzg0ODQsIDQxMjY1LCA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIAorICAgIDQzOTYyLCAxMTI3OCwgNzg2MzIsIDc0MTExLCAxMjgwOTUsIDEyOTQ2LCAxMjEwNzYsIDcxOTIxLCAxMjAzNDksIDYyOTQsIAorICAgIDMxNDQsIDExMzcwNiwgMTI3OTY3LCA2NTAxOSwgNzQwNzgsIDczOTkwLCA2NTExMSwgOTE3OTU0LCA3NDgsIDQxMDY3LCAKKyAgICAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTI5MzEzLCAxMDU1NiwgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIAorICAgIDY3ODYzLCAzNTkzLCA3NDA3NiwgNzI3NTAsIDIzNDIsIDgyOTUxLCA4Mjk0NCwgNjUyMDYsIDQ4OTQsIDgyOTQ3LCA0ODkwLCAKKyAgICAxMjEwNTksIDY0NDMzLCA1ODEsIDQ4OTMsIDQyOTI5LCA2NTcxLCA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDcwNzM1LCAKKyAgICA2NDY1MSwgNzgwNDcsIDkxNzgwNiwgMTAxMTksIDY0MTUsIDQyODkzLCA5ODMwNjgsIDY5NzAyLCA5ODM5MzcsIDAsIAorICAgIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDQyOTI4LCA0Mjg4MCwgNDM1ODcsIDEyMTA5OCwgMCwgMCwgCisgICAgNzA0NjEsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAKKyAgICA3NTAyNCwgMTIwMzg5LCA3MTg1NCwgOTM0NCwgODgyNiwgOTI5MTYsIDEyMDM5NSwgMTMxMDQsIDY3ODI4LCAxMTk5NywgCisgICAgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgODMwOTYsIDY1Njk2LCA3MjQzMiwgMTAwNjMxLCA2NjIxNywgMTIxMTkwLCA4MzM0LCAKKyAgICA5Mjc1NSwgODMyMDcsIDM0NDksIDgzMjE0LCAxMzEwMCwgNzg0MTQsIDc4NDEzLCA4MzIxNiwgNjY0MDUsIDcwNDMwLCAKKyAgICA4MzA4OSwgODMyMDMsIDEyNzI1MCwgMTkwOCwgMTIwMTY3LCA0MzI4LCAxMDczNCwgMTI3MDE0LCA3MDcwOSwgNjc4MjUsIAorICAgIDc4MDQsIDc4MjcyLCAxMDgxMSwgNjI1MCwgMTEzMzksIDQ5MTQsIDExMzY3LCA4MzUxMCwgNzgwNTQsIDQ5MTcsIDcwNjg2LCAKKyAgICA3MjgxNiwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgODMxMDAsIDIzNjEsIDc5NzEsIDc4MDcyLCA3ODA3MywgNTUyNDMsIAorICAgIDc4MDcxLCAxOTQ2OTMsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCA0MDk3NywgMTA5NjAsIDQwOTYyLCA4MzA1LCAKKyAgICAxMjU3MywgNzExMzEsIDQwOTgwLCA5ODM5NjQsIDEzMjAyLCAxMjc4MTYsIDEyNTgyLCA3ODI4MiwgOTgzMDQ4LCA2OTg1NiwgCisgICAgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIDcwNDAxLCAKKyAgICA3MDAzOSwgMCwgNzA0NjAsIDQ5MTMsIDcxMDYwLCAxMjg1NjIsIDcxMzMzLCA0MjMyNiwgMTIxMTE5LCAxMjcyOCwgOTI2ODUsIAorICAgIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAxMDA0ODMsIDgzMDgxLCAxMjU4OCwgODgyMSwgNjE1MywgCisgICAgMjg2NywgODMwODUsIDY2MzEyLCA2OTgsIDgzMDc2LCA4MzA4NywgMTAzNTYsIDcwMDE3LCAxMjg1NzAsIDY1MSwgMTI2NDEsIAorICAgIDcyODA5LCAxMjUwOTgsIDEwMDYzOSwgMTI5MDY0LCA0MTU1MiwgNjUxMTUsIDc4NDY1LCA3ODQ2NywgNzg0NjMsIDc0OTA1LCAKKyAgICAxMjc1MTYsIDc4NDYxLCA5Mjk2MCwgNjY5MjcsIDY0OTQ1LCA0NzE2LCA0MzI3NywgNzI3NDUsIDc4NDc0LCAxMjM0MCwgCisgICAgMTIwNTY4LCA3MDcyMSwgNzA3MTksIDU1MjY0LCA0MTIxMSwgMTIwNjc2LCA4NzAzLCA1NDYyLCA4MzE5NSwgODMxODUsIAorICAgIDEwMTAxLCAxMjA0NDEsIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgODMxODksIDAsIDY2MjU0LCAxMjA4MjEsIDY4NDk3LCAKKyAgICAwLCAxMjg2NTQsIDExMzc5OSwgODMxNTksIDc0MDUwLCA0MjY1MSwgMTI3MzcxLCAwLCAwLCA4MzIyNSwgODMyMTgsIAorICAgIDEyMjc4LCA3MDcxNiwgMTI4NDA1LCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDgzMTU1LCAwLCAyNjk5LCAKKyAgICAxMjkzMDQsIDcyNzE4LCAyOTg1LCA4MzE0OSwgNjg2NDgsIDgzMTQ2LCAxMjE5MiwgMTE5MzE0LCAxMjkwNjIsIDY2NDg5LCAKKyAgICA5ODI3LCAxMTkzMTAsIDg2MDksIDExOTMwOCwgNjc0MjYsIDExOTMwNiwgMTE0ODEsIDQxMjEwLCAxMTkzMDUsIDEyNTIwNywgCisgICAgMzUsIDcwODM4LCA2NzQzMSwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNjc0MjgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgCisgICAgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDc4MzIxLCA0MDk2NywgNDA5NjQsIDEyNDk4MywgMTI3MDQsIAorICAgIDc4NDg3LCA0MzMwNiwgMCwgNjQ0OTcsIDEyMTM4LCA3OTMwLCAwLCAyMjkyLCA2ODIxNiwgMTk0ODcxLCA3MjczNywgNTI0NCwgCisgICAgNDE4OSwgOTI2OTcsIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIDcwNDYzLCA5NjgsIDAsIDQzNzQzLCA5ODM2ODUsIAorICAgIDg4NzMsIDIyNzksIDEyNzEwMCwgOTE3ODI3LCA2NTU1NSwgMTI1NzQsIDEyMTEwMywgOTI3NDksIDkyNzUzLCA3NDQ5MCwgCisgICAgMTI3MDk5LCAxMTgzOCwgNjY3ODcsIDAsIDEyMDY2NCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgOTgzNjk4LCA0MTIyNywgCisgICAgNzI3NjUsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCA2OTk1MCwgOTE3OTUwLCA3MjUxLCAxMTM3OTIsIDEyMDM4MiwgMTE4ODUwLCAKICAgICAxMTkxNDEsIDEyODQ2MSwgNjYwMTUsIDY3MzMyLCA5NTksIDg4ODUsIDEyNTY0LCA2NjQ1NywgNzg4MDgsIDk0NjksIDk2MzIsIAotICAgIDkyMjMxLCA3NDc2MSwgNjQzMjMsIDEyNzMzNSwgMTI4ODQyLCAwLCAxMTEzMiwgMzEwLCAxMjA5MjQsIDQxMjgxLCAxMDk3NiwgCi0gICAgMCwgNzEzMjUsIDEyODM2NCwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCA5MTc4MjMsIDkwMTIsIDE5OTU4LCA3NDQyMCwgCi0gICAgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDY0MjYwLCAzNzQsIDQzMTk1LCA4MTYsIDkyNzgzLCAwLCA4MzE5MSwgCi0gICAgNDE5MzQsIDc0NjUsIDc0NjE1LCA5Mjc1MiwgMTI3ODk1LCA0NzE1LCA2MTAxLCA3MTA4OSwgNDE5MzYsIDgyOTY3LCA0ODc5LCAKLSAgICA0Mzk2NSwgNjU0NDYsIDAsIDMwNywgMTI3MTQ3LCA5NTg1LCA1Mzc0LCAxMjc5NjIsIDEyODA1OSwgMCwgMTI5MTg5LCAKLSAgICAxMjY2MTgsIDEyMDM5MCwgNzQ5NTMsIDY1NTY3LCAxMjA2MTQsIDE5MjksIDEyMDk4NCwgMTIxNDIsIDE5NDY5NiwgMTIyMzYsIAotICAgIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDc1MDAzLCA1Mzc4LCA3NTAwNCwgMTIwOTU3LCA0MTQyMSwgNzUwMDUsIAotICAgIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDAsIDI0OTgsIDU4MDAsIDEyMDE1NywgNjc3NTgsIDE3NjAsIDI0MjEsIAotICAgIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIAotICAgIDY4ODQ5LCA3OTk5LCA0Mzk3MSwgMTEyMTcsIDEyMTIyNCwgMTA2MzQsIDEwOTQyLCA3NzEzLCAyMzQ4LCAwLCA2NDM3NCwgCi0gICAgNDM4MCwgMTI4Mjg0LCA4MzA2MSwgOTk4MiwgNjQzMjQsIDQxMjQwLCA4NjIsIDY0NDY4LCA3ODQ2MiwgMTgxMCwgMzY3MywgCi0gICAgNTEzNywgMTk0NjE3LCAwLCA3Mjc3LCA2NTYyMiwgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3NDk1NywgCi0gICAgNDM5MTIsIDEyODM4NSwgNDc0OCwgOTIyMjgsIDEyOTE4NSwgMTk0NjAxLCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAxMjEyNzgsIAotICAgIDc0NTc2LCA0NDAxOSwgMTk0NzIwLCAxMjgxODksIDM5NjcsIDcxMDk4LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCAKLSAgICA5MTc3ODUsIDg0MTAsIDQ0NTQsIDcyMywgODMwODQsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCA3NTAyMiwgNzgxOSwgCi0gICAgMjMyMCwgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgODMwNTcsIDgwNDcsIDAsIAotICAgIDc4ODI3LCAxMjYzNCwgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDEyNDkzNCwgNzQ0NTIsIAotICAgIDk4Mzc2MywgMTU4NCwgNjY2NDUsIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAxOTQ5ODMsIDc4MDYyLCAKLSAgICA3NTM3LCAxMjQ5OTEsIDExMzcwLCAxMjUwOTMsIDEwMzMwLCA3ODc5OCwgMTAzOTQsIDkyMjM2LCA3NDE5NCwgMCwgCi0gICAgMTI3OTI5LCA5NzgwLCAwLCAxMTExNywgNzQ5OTMsIDc3OTUwLCA2NzA5MSwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAKLSAgICAxMTQxNCwgNjg3ODEsIDI1MzEsIDEzMDM0LCAxMjkxNTksIDAsIDQyMTEsIDEyNTksIDc1MTcsIDcwODY2LCA3MDE5OCwgCi0gICAgODMxMjIsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA4MzEyNSwgMTk0NTY2LCAxMTA2NCwgNDExMjksIAotICAgIDEyMTI1MywgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgNzQyOTMsIDc0NTMwLCA2NDA5OCwgNjU3OTMsIAotICAgIDQ1MzUsIDEyMTI2NywgNDI3MSwgNzg0MTcsIDEyNzA1OSwgNjc2OSwgNDE0MTAsIDEyNzI1NywgNjQyNjIsIDY3NjcsIAotICAgIDQxNDA3LCA2NjI3MywgOTE3ODE2LCA2NzU1LCAxMTg4NjQsIDkwNDYsIDEyMDg4NiwgMTI2NjA4LCA3MDgzMCwgMCwgCi0gICAgODMyMzIsIDAsIDY3Njc1LCA5ODM2OTQsIDgzMjM0LCAxMjEyNTQsIDY0MzM4LCAyNTYzLCAxMzAzMywgMjQ3LCA4MzIyOSwgCi0gICAgMCwgMTIzMzgsIDQ2NTEsIDY3MzU1LCAxMTI3MCwgMCwgNzQ2MzAsIDExOTMzLCA3MDEwNywgMCwgNDE5MDMsIDQzNDQ3LCAKLSAgICAxMTAwMSwgNzM4MjcsIDQyMjU1LCA4MzI0MywgODMyMzgsIDY5ODIxLCA0MTkwNSwgNjczNTAsIDAsIDEwNzc1LCA5NzkzLCAKLSAgICA1MDA5LCAxMjg3NzQsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIAotICAgIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDY3MzQyLCAxMDIzNiwgNjU5MTgsIDQzNzgyLCAKLSAgICA3ODc2OSwgNzgwNjAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCA4MzI1MSwgNjk4NDQsIDQzMjAwLCA1ODMyLCAKLSAgICA3MTIwOCwgODMyNTAsIDUxNDEsIDQyNjAwLCA3MTg2NiwgNDMyMDMsIDEyNzIwOCwgMTIwMTI5LCA0MzI4NiwgMCwgCi0gICAgMTI4MjExLCA0Mzc3OCwgNzY1NywgNDEzMDUsIDcxMTMyLCA0Mzc4MSwgMTEzMDMsIDY1NTQ3LCAxMjg2MDksIDcwMzEsIAotICAgIDg1OSwgMTI4NDg4LCA4MzI2MiwgODMyMzcsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgMTI4NjM4LCAKLSAgICA2NTE5NiwgMTI1MDg0LCA2NjAzMiwgMTE0ODgsIDEyMDQ4MSwgMTIwNzg2LCA0MjIzMywgNjQxNDAsIDk5NDYsIDc2NjcsIAotICAgIDE5NDc5MiwgMTE4MjIsIDEyODU5MSwgMTExMzUsIDk4MzYwMCwgMCwgMTc4OCwgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgCi0gICAgOTgzNDYxLCAwLCA5MDI4LCAxMTk1NzEsIDY5MjM0LCA3MTA2MSwgOTI1NDUsIDEyODUsIDY0ODgyLCA0MTI0MiwgNzAwODYsIAotICAgIDgzMTExLCAxMjY0MCwgODMxMTIsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgNzAwODIsIDM5NDAsIDQxNTk3LCA0Mzc1NCwgCi0gICAgMzM5NiwgMTI2NDIsIDg2NjUsIDk4MzYxMCwgOTgzNjA5LCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgCi0gICAgNzA4MjUsIDExODk4OSwgMTI5NDA5LCA4ODE1LCA2NjY3MywgNjUwNDYsIDkyODUsIDkxMywgNDIyNTksIDExMTgwLCAKLSAgICAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMTIwNDc4LCAKLSAgICA5MjY0MywgMTIxMTE4LCAxOTQ2NzMsIDEyMDMyLCAwLCA5NzI1LCA5ODM0OTEsIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIAotICAgIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAyMjA4LCA2ODg0OCwgCi0gICAgNDM3MDEsIDQzMTk4LCA3MTg0LCA5MjU0MiwgMTI4NDIzLCAxMjg4NzUsIDEwMDg1LCA3NDk3OSwgMCwgNjczOTQsIDY2MzQsIAotICAgIDkyMzczLCAxMjUwODUsIDgzNDEzLCA4MDcyLCAxMTkzMjEsIDQzNzAwLCAwLCA4ODcyLCA3NzgzLCA5MTc5OTEsIDEyMzk4LCAKLSAgICA4MjM3LCAwLCAwLCAxMjM5NSwgMCwgMTI2OTc3LCA3NDg5MSwgOTkxNCwgMjIxNywgOTIzMjMsIDczOTc1LCA2MzY3LCAKLSAgICA2MzUxLCA2NjY4OCwgOTI3NDAsIDY4NzY2LCAwLCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAxMjY1NDEsIAotICAgIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgMTIwNDIyLCA5MzA0NSwgMTcxMCwgMTIwMTQwLCAwLCA2NTYwNywgCi0gICAgNjcyMzQsIDQ5LCA2NjI3LCAwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIAotICAgIDY0NDE4LCAxNjQzLCA2NTIxMywgODQwNSwgMzQ3MCwgNjcyNDQsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDc4MDEzLCA3ODQ0NSwgCi0gICAgMTI1MTI0LCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCAKLSAgICA3MDgyNCwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDcxMDgyLCAxMjYzMiwgMTA4NiwgMTg2OSwgCi0gICAgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAxMjYzOCwgNzk3NywgCi0gICAgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAxMjAxNDEsIDkyNzU4LCAxNDk0LCAxMTM3MTYsIDEyNjYxMywgMCwgMTE2OTMsIAotICAgIDcxMjU1LCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDExMzcyNywgMCwgMCwgNzg3NzEsIDY0NTgyLCAwLCAKLSAgICA3Mzc5NCwgNjczOTUsIDgwMjIsIDEyMDk4OSwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDY2ODgzLCA5MTc5OTQsIDkzMDM1LCAKLSAgICA3NTAwNywgNTU3MCwgMTg4MSwgNzIxMCwgMTIwNDI1LCAxMDEyLCA0Mzc1MiwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgCisgICAgOTIyMzEsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCA3NDEwMiwgMjI2NiwgMTExMzIsIDMxMCwgMTIwOTI0LCA0MTI4MSwgCisgICAgMTA5NzYsIDEwMTA2OSwgNzEzMjUsIDEyNTI3OSwgNzQyNjYsIDEwMDU0LCA2NDk3LCA4NTc0LCAxMDEwODcsIDkwMTIsIAorICAgIDE5OTU4LCA3NDQyMCwgNjUwODksIDEzMjE1LCAxMjczMCwgNjUxNjMsIDY0MjYwLCAzNzQsIDQzMTk1LCA4MTYsIDkyNzgzLCAKKyAgICAwLCA4MzE5MSwgNDE5MzQsIDc0NjUsIDc0NjE1LCA5Mjc1MiwgNzA2NjYsIDQ3MTUsIDYxMDEsIDcxMDg5LCA0MTkzNiwgCisgICAgODI5NjcsIDQ4NzksIDQzOTY1LCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIDk1ODUsIDUzNzQsIDEyNzk2MiwgMTI4MDU5LCAKKyAgICAxMDA0NzIsIDEyOTE4OSwgMTAwNDcxLCAxMjAzOTAsIDcwNzI3LCA2NTU2NywgMTAwOTY0LCAxOTI5LCAxMjA5ODQsIAorICAgIDEyMTQyLCAxOTQ2OTYsIDEyMjM2LCA0MTQxOSwgMTk0NjE4LCAxMjA2MTAsIDEyOTgyLCA3NTAwMywgNTM3OCwgNzUwMDQsIAorICAgIDEyMDk1NywgNDE0MjEsIDc1MDA1LCA0NDYyLCAwLCAxMjY1OTksIDEyODA5MiwgODIxLCAxMjUwMzAsIDI0OTgsIDU4MDAsIAorICAgIDEwMDgzNCwgNjc3NTgsIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgCisgICAgMTI4Mjc0LCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgNjg4NDksIDc5OTksIDQzOTcxLCAxMTIxNywgMTAwODQ5LCAKKyAgICAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCA0MzgwLCAxMjgyODQsIDgzMDYxLCA5OTgyLCA2NDMyNCwgCisgICAgNDEyNDAsIDg2MiwgNjQ0NjgsIDc4NDYyLCAxODEwLCAzNjczLCA1MTM3LCAxOTQ2MTcsIDEyMDQ4MSwgNzI3NywgNjU2MjIsIAorICAgIDY1MDY5LCA3NTY2LCA2NDY4OCwgNjcxNDMsIDE5NDU5MiwgNzQ5NTcsIDQzOTEyLCAxMDA4MjUsIDQ3NDgsIDkyMjI4LCAKKyAgICAxMDA4MjYsIDEwMDgyOSwgNDIyNjAsIDU4NzEsIDExOTA3NSwgMTIxMjc4LCA3NDU3NiwgNDQwMTksIDE5NDcyMCwgCisgICAgMTI4MTg5LCAzOTY3LCA3MTA5OCwgMTMxMzcsIDg3NzUsIDEyNzk0NSwgMCwgMjk2MywgOTE3Nzg1LCA4NDEwLCA0NDU0LCAKKyAgICA3MjMsIDgzMDg0LCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgNzUwMjIsIDc4MTksIDIzMjAsIDEyOTMxMiwgMzM5LCAKKyAgICA0OTY4LCAxOTQ1OTAsIDEyMDM5OSwgODA3NSwgNTUyNzYsIDgzMDU3LCA4MDQ3LCAxOTUwNTAsIDc4ODI3LCAxMjYzNCwgCisgICAgNDE1NDIsIDc4NzgwLCA3NDY2LCA2NzA1LCAxMjE3NCwgNDI2MTAsIDEyNDkzNCwgNzQ0NTIsIDEyMDQ4MiwgMTU4NCwgCisgICAgNjY2NDUsIDYwNDUsIDY3MjksIDc4NDE3LCA2NTIxOCwgMTE1NTksIDE5NDk4MywgNzgwNjIsIDc1MzcsIDEyNDk5MSwgCisgICAgMTEzNzAsIDEyNTA5MywgMTAzMzAsIDc4Nzk4LCAxMDM5NCwgOTIyMzYsIDc0MTk0LCAxMDA4MDgsIDEyNzkyOSwgOTc4MCwgCisgICAgMCwgMTExMTcsIDc0OTkzLCA3Nzk1MCwgNjcwOTEsIDcwNzQsIDkyNjQ4LCAxOTQ1NzksIDEwMDQ5NSwgMTE0MTQsIDY4NzgxLCAKKyAgICAyNTMxLCAxMzAzNCwgMTAwODE5LCAxMjg1MjMsIDQyMTEsIDEyNTksIDc1MTcsIDcwODY2LCA3MDE5OCwgODMxMjIsIAorICAgIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCA4MzEyNSwgMTk0NTY2LCAxMTA2NCwgNDExMjksIDEwMDQ5NiwgCisgICAgNDI4NTAsIDEzMDM1LCA5MDc1LCA5MjM4NywgNTQ2NiwgNzQyOTMsIDc0NTMwLCA2NDA5OCwgNjU3OTMsIDQ1MzUsIAorICAgIDEwMDQ5MSwgNDI3MSwgNzI4ODEsIDEwMDc5OCwgNjc2OSwgNDE0MTAsIDEwMDc5OSwgNjQyNjIsIDY3NjcsIDQxNDA3LCAKKyAgICA2NjI3MywgOTE3ODE2LCA2NzU1LCAxMTg4NjQsIDkwNDYsIDEwMTA4NiwgNzI4MDMsIDcwODMwLCAwLCA4MzIzMiwgMCwgCisgICAgNjc2NzUsIDk4MzY5NCwgODMyMzQsIDEwMDUzNCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAyNDcsIDgzMjI5LCAxMDA3OTEsIAorICAgIDEyMzM4LCA0NjUxLCA2NzM1NSwgMTEyNzAsIDAsIDc0NjMwLCAxMTkzMywgNzAxMDcsIDAsIDQxOTAzLCA0MzQ0NywgCisgICAgMTEwMDEsIDczODI3LCA0MjI1NSwgODMyNDMsIDgzMjM4LCA2OTgyMSwgNDE5MDUsIDY3MzUwLCAxMDA4MDYsIDEwNzc1LCAKKyAgICA5NzkzLCA1MDA5LCAxMjg3NzQsIDQyMjY5LCA2NDU4NywgOTgzMDYzLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgCisgICAgNDI4NTMsIDM4NzcsIDEyMDc5NSwgNDI2NzQsIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDY3MzQyLCAxMDIzNiwgNjU5MTgsIAorICAgIDQzNzgyLCA3ODc2OSwgNzgwNjAsIDY0NTA2LCA2OTY1MiwgMTAwNzgxLCA0NzQ3LCA4MzI1MSwgNjk4NDQsIDQzMjAwLCAKKyAgICA1ODMyLCA3MTIwOCwgODMyNTAsIDUxNDEsIDQyNjAwLCA3MTg2NiwgNDMyMDMsIDEyNzIwOCwgMTAwNTQxLCA0MzI4NiwgCisgICAgMTI2NDk0LCAxMjA3ODksIDQzNzc4LCA3NjU3LCA0MTMwNSwgNzExMzIsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDEyODYwOSwgCisgICAgNzAzMSwgODU5LCA5MjMxMywgODMyNjIsIDgzMjM3LCA2MDU5LCAxMjY5ODUsIDU1MjM1LCAxOTQ4MTcsIDg1MzUsIAorICAgIDEyODYzOCwgNjUxOTYsIDEyMjkxMCwgNjYwMzIsIDExNDg4LCA3MjgzOCwgMTAwNzg4LCA0MjIzMywgNjQxNDAsIDk5NDYsIAorICAgIDc2NjcsIDEwMDU0OSwgMTE4MjIsIDEyODM0OSwgMTExMzUsIDk4MzYwMCwgMCwgMTc4OCwgMTU3OSwgMTAwNTA3LCA3MTI5OCwgCisgICAgMCwgOTE3NTM3LCA5ODM4MzksIDkwMjgsIDExOTU3MSwgNjkyMzQsIDcxMDYxLCA5MjU0NSwgMTI4NSwgNjQ4ODIsIDQxMjQyLCAKKyAgICA3MDA4NiwgODMxMTEsIDEyNjQwLCA4MzExMiwgNzQwMSwgMTAwNzY3LCAxMjYyNSwgNjgxOTgsIDgzMTg0LCA3MDA4MiwgCisgICAgMzk0MCwgNDE1OTcsIDcyOTYsIDMzOTYsIDEyNjQyLCA4NjY1LCA5ODM2MTAsIDEyMDIwOCwgMTI2MzAsIDE2NTMsIAorICAgIDEwMDU2NywgMTAxNTMsIDEwMDc3NywgNjE2NiwgNzA4MjUsIDExODk4OSwgMTI5NDA5LCA4ODE1LCA2NjY3MywgNjUwNDYsIAorICAgIDkyODUsIDkxMywgNDIyNTksIDExMTgwLCAxMTkzMTgsIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIAorICAgIDQyMjkzLCA2NDM3NywgMTIwNDc4LCA5MjY0MywgMTIxMTE4LCAxOTQ2NzMsIDEyMDMyLCAxMDA3NzEsIDk3MjUsIDEwMDc3MywgCisgICAgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIDQyNzc3LCAxMDEzOSwgOTgwLCAKKyAgICA0MzY5OCwgNjUzODYsIDIyMDgsIDY4ODQ4LCA0MzcwMSwgNDMxOTgsIDcxODQsIDkyNTQyLCAxMjg0MjMsIDEwMDUyNywgCisgICAgMTAwODUsIDc0OTc5LCAwLCA2NzM5NCwgNjYzNCwgOTIzNzMsIDEyNTA4NSwgODM0MTMsIDgwNzIsIDEwMDc1MiwgNDM3MDAsIAorICAgIDEyODIwMiwgNzMwNCwgNzc4MywgOTE3OTkxLCAxMjM5OCwgODIzNywgMTk0ODkzLCAwLCAxMjM5NSwgMTIwMjc5LCAKKyAgICAxMjY5NzcsIDc0ODkxLCA5OTE0LCAyMjE3LCA5MjMyMywgNzM5NzUsIDYzNjcsIDYzNTEsIDY2Njg4LCA5Mjc0MCwgNjg3NjYsIAorICAgIDk4Mzg0OCwgNjQ3MzUsIDQxMjQzLCA5MjE5OSwgNzgwOCwgMTgyOSwgMTI2NTQxLCA0MTkzNywgNDM1OCwgNDMyNzIsIAorICAgIDYzNTMsIDAsIDAsIDEyMDQyMiwgOTMwNDUsIDE3MTAsIDEyMDE0MCwgMCwgNjU2MDcsIDY3MjM0LCA0OSwgNjYyNywgCisgICAgOTgzMTIwLCA2MjU4LCAxMDY4MywgNzg2NzIsIDk3NDEsIDc4MzI5LCA1NjQ5LCA3ODQ0MSwgNDM0NDMsIDY0NDE4LCAxNjQzLCAKKyAgICA2NTIxMywgODQwNSwgMzQ3MCwgNjcyNDQsIDEzMjEzLCA0MjQ1MiwgNzgzMzEsIDc4MDEzLCA3ODQ0NSwgMTI1MTI0LCAKKyAgICAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIDY1Njc1LCAxMDgwLCA3MDgyNCwgOTg4NiwgCisgICAgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDcxMDgyLCAxMjYzMiwgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIAorICAgIDEwMTA5MywgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgCisgICAgMCwgNjYzMDksIDEyMDE0MSwgOTI3NTgsIDE0OTQsIDExMzcxNiwgMTI2NjEzLCAwLCAxMTY5MywgNzEyNTUsIDEwNDk0LCAKKyAgICA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMTEzNzI3LCAxMjg3ODksIDAsIDc4NzcxLCA2NDU4MiwgMTAxMDk4LCAKKyAgICA3Mzc5NCwgNjczOTUsIDgwMjIsIDEwMTA5OSwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDY2ODgzLCA5MTc5OTQsIDkzMDM1LCAKKyAgICA3NTAwNywgNTU3MCwgMTg4MSwgNzIxMCwgMTIwNDI1LCAxMDEyLCA0Mzc1MiwgMCwgMTAxMDk0LCA3MjA4LCA2NjQ0MiwgCiAgICAgNTU2OSwgMTk1MDA3LCA0MjMzOSwgOTI5OTcsIDYwNjMsIDY3ODg4LCA2OTk4MSwgMTE5NTk0LCA2MDUzLCA2NTYwMiwgMCwgCi0gICAgOTIyMDEsIDY0NzI3LCA5MTYwLCA3MDMwMSwgMCwgOTI5MDUsIDkyMTgwLCAxMDUwMywgNzAzODcsIDM0MjMsIDM4NzAsIAotICAgIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCA5ODMxMTYsIDAsIAotICAgIDc0OTYxLCA3ODMzMywgMTIwMTE3LCAxMjAxMTgsIDEyMDA5OSwgOTIzODUsIDY1MDg3LCA1NTcxLCAzNjc0LCA5NzQwLCAKLSAgICA5MTIxLCA1NTY4LCA3MTQ2NCwgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgMTEzNzAwLCA1ODksIDcwNTAsIAotICAgIDk4MzgwMCwgNDMyODEsIDEwMjMzLCA0MTI2MywgNjYyNTEsIDY1NzI5LCA2NjI1MywgMTI2NDk3LCA3NDA5OSwgNDI2NDUsIAotICAgIDkyMzMxLCAxMjEzNTgsIDg1ODMsIDEyMTEyMywgNTg0NywgNjkyOCwgMTI4MDc0LCAwLCAwLCAwLCAwLCA2NjU5MiwgCi0gICAgMTIyMDQsIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAxMjkxNzAsIDY2ODU0LCA4MTIwLCA3MDMxMSwgCi0gICAgMTk0NTg1LCAwLCA3MDMwOCwgNDEwNjMsIDEyMDQxNywgMTA2NjQsIDAsIDgzNjksIDAsIDQ1NTEsIDE5NDk2NCwgMzM2OSwgCi0gICAgNzQ5NzEsIDEyMTA5NCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAKLSAgICAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgNzQ5MzcsIDc0MDk0LCA5MTc4ODgsIDEyNTA2MCwgNzc5NzAsIAotICAgIDkyMTcxLCAxMjcyMTksIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgNjkyMywgCi0gICAgOTIyODEsIDEwNDQxLCA3MzgzNiwgMCwgNDM5OTAsIDU0OTMsIDAsIDc0MzE5LCAwLCA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIAotICAgIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIDEyNjYzNiwgNTg1MywgMTMwNjMsIDEwMzYzLCA5ODM4OTgsIDEyOTU2LCAKLSAgICAxMTM2NjYsIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDEyODY0OCwgNzgzOTIsIDEyODI2LCA2MzI5LCAwLCAKLSAgICAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgNDM0MjAsIAotICAgIDc4Mzk2LCA2ODI0NywgMjY5NSwgNDIxNzEsIDcwODA5LCA2ODMzNCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgCi0gICAgMTIxMjUsIDEyNzY2LCAxMjA0MDksIDExNjQsIDExMzcyOSwgNzAyODMsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIAotICAgIDY2MDA5LCAxMjE3OCwgNzA1MywgOTI1NDAsIDc0NjksIDAsIDUyNDgsIDEyMjE4LCA2OTk4OCwgNjQyNywgNDI4ODQsIAotICAgIDQxMTIzLCAxMTE3NiwgMCwgNDI4NzMsIDQxMTI2LCA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgOTgzOTMyLCA5ODczLCAKLSAgICAwLCA0Mjg3NywgNzk5NCwgNjQ3NjIsIDIwNTMsIDQyODQzLCA2NTkxLCA5MzQwLCAxMjg4NDEsIDE1ODksIDEyODY5MSwgCi0gICAgMjk2LCA2NzcxMiwgNzg4NTIsIDEyMTQwOSwgNjc4NDEsIDc0MzcwLCAxMjg1MDQsIDg5MjIsIDEyODA2OCwgNDM4MjksIAotICAgIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAxMzI2MiwgNjU1OTAsIDUyOTksIAotICAgIDc4ODM3LCAxMTQ3MywgNTQ0OSwgMTI1MiwgMTI3MzI4LCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgNTI5NSwgCi0gICAgOTE3NTY5LCA2ODMyMCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIDQxNDEzLCAKLSAgICAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCA3NDU5OCwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCAKLSAgICA2MTUwLCA2NjM2LCA0MzcwLCAxMjg2MTksIDEyOTE1OCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMTk1MDk0LCAwLCAxMTM3NDgsIAotICAgIDQ5ODYsIDEyMTg5LCAxMjc1MTIsIDY3NjQ4LCAxMjA0OTksIDk0MDAxLCA0MjU3LCAxMjEwNCwgNzExNzYsIDYyMjAsIAotICAgIDkwMDQsIDY1NTYxLCA5ODM4ODEsIDc3OTQ5LCAwLCA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgODM0NTMsIDY5Njc5LCA2OTY4NCwgCi0gICAgOTg5MCwgNzg1NjEsIDEyOTcxLCA3ODQ1MywgOTI1NTYsIDczODk4LCAxMTk3OSwgNzAwNTEsIDcxODk3LCA4MzQ1MSwgMCwgCi0gICAgOTYzNSwgMTI2MDAsIDg4NzEsIDY3MzY2LCA2ODQ5MSwgMCwgNjQ2OSwgNzQyMjcsIDExODkwMCwgNjUzMDQsIDQ2NzksIAotICAgIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDY3Mzc2LCA2NzM3NSwgNjczNzQsIDY3MzczLCA0MjkxNiwgCi0gICAgMTI5MTU1LCAxMjgyNzksIDY3Mzc3LCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDY3MzcyLCA2NzM3MSwgMzQ5NCwgCi0gICAgNjczNjksIDY1NTUsIDEyOTE0OCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyNDYsIDY1MzEyLCAKLSAgICA1NDQ3LCAwLCAxMjg5NSwgNjU1OTMsIDQwMTAsIDgzMTU0LCA0MTEwNiwgNzQzNTcsIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIAotICAgIDc0MTE0LCA2NTgyMCwgNjIzMiwgNjgyMzMsIDEyNjYyNSwgMCwgNDM2MDgsIDExOTA5MSwgNzgxMTgsIDY1MzgsIDQzMzUsIAorICAgIDkyMjAxLCA2NDcyNywgOTE2MCwgNzAzMDEsIDE5NTA3MSwgOTI5MDUsIDkyMTgwLCAxMDUwMywgNzAzODcsIDM0MjMsIAorICAgIDM4NzAsIDQyNzksIDg0OTAsIDEyMDExNCwgNDMxOSwgNjQ3ODYsIDg2MDIsIDEyMDExMCwgMTEzMjYsIDkyMjA0LCAKKyAgICA5ODMxMTYsIDEyMTA4NCwgNzQ5NjEsIDc4MzMzLCAxMTkxMzIsIDEyMDExOCwgMTIwMDk5LCA5MjM4NSwgNjUwODcsIDU1NzEsIAorICAgIDM2NzQsIDk3NDAsIDkxMjEsIDU1NjgsIDcxNDY0LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAKKyAgICAxMTM3MDAsIDU4OSwgNzA1MCwgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAKKyAgICAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgOTIzMzEsIDEyMTM1OCwgODU4MywgMTIxMTIzLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIAorICAgIDAsIDAsIDAsIDY2NTkyLCAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDEyOTE3MCwgCisgICAgNjY4NTQsIDgxMjAsIDcwMzExLCAxMjkxNTQsIDAsIDcwMzA4LCA0MTA2MywgMTIwNDE3LCAxMDY2NCwgMCwgODM2OSwgCisgICAgMTI4Mjc4LCA0NTUxLCAxMjI5MTIsIDMzNjksIDc0OTcxLCAxMjEwOTQsIDk2NzMsIDY2MzM0LCA2NTU4MCwgMTA0NzgsIAorICAgIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDY4NDk2LCA2MzU1LCAxMjUxOSwgNDEwMDQsIDAsIDc0OTM3LCAKKyAgICA3NDA5NCwgMTI0OTQ4LCAxMDA0NzgsIDc3OTcwLCA5MjE3MSwgMTI3MjE5LCAxMjUyNTQsIDEyMTExLCAzOTI3LCAxMTk4ODAsIAorICAgIDEyNTE1LCAxNDc0LCA2Nzg5MywgNTQ5MiwgNjkyMywgOTIyODEsIDEwNDQxLCA2Njc5OCwgOTgzODMxLCA0Mzk5MCwgNTQ5MywgCisgICAgOTgzNjE4LCA3MTEzMCwgOTE3NzY2LCA2NjYzNSwgMTIwMTksIDAsIDE2MTgsIDAsIDEyMDQ3NCwgOTY0NSwgMTA0MzAsIAorICAgIDEyNjYzNiwgNTg1MywgMTMwNjMsIDEwMzYzLCA5ODM4OTgsIDEyOTU2LCAxMTM2NjYsIDEyMDcyOSwgMTEzMTQsIDEyNTI3MSwgCisgICAgMTIwNjAsIDEyODY0OCwgNzgzOTIsIDEyODI2LCA2MzI5LCAxOTUwOTcsIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIAorICAgIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgNzgzOTYsIDY4MjQ3LCAyNjk1LCA0MjE3MSwgCisgICAgNzA4MDksIDY4MzM0LCA5ODM0NDQsIDY3NjE3LCAxMTg5NzEsIDAsIDI2OTMsIDEyMTI1LCAxMjc2NiwgMTIwNDA5LCAxMTY0LCAKKyAgICAxMTM3MjksIDcwMjgzLCA0MTkxOCwgNzc4NDksIDY3MTUwLCA4Njg3LCA2NjAwOSwgMTIxNzgsIDcwNTMsIDkyNTQwLCAKKyAgICA3NDY5LCA3Mjc5NSwgNTI0OCwgMTIyMTgsIDY5OTg4LCA2NDI3LCA0Mjg4NCwgNDExMjMsIDExMTc2LCAwLCA0Mjg3MywgCisgICAgNDExMjYsIDk5OTEsIDQxMTI4LCA3MDcwMywgMTI3MDMxLCAxMjY1MDgsIDk4NzMsIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgCisgICAgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDEyODg0MSwgMTU4OSwgMTI4NjkxLCAyOTYsIDY3NzEyLCA3ODg1MiwgMTIxNDA5LCAKKyAgICA2Nzg0MSwgNzEzMTQsIDEyODUwNCwgODkyMiwgMTI4MDY4LCA0MzgyOSwgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgCisgICAgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgNzA3MzIsIDExNDczLCA1NDQ5LCAxMjUyLCAKKyAgICAxMjczMjgsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCA5MTc1NjksIDY4MzIwLCAxMjIzLCAxNjQyLCAxNzQsIAorICAgIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIAorICAgIDc0NTk4LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIDYxNTAsIDY2MzYsIDQzNzAsIDEyODYxOSwgMTI5MTU4LCAKKyAgICA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAxOTUwOTQsIDAsIDExMzc0OCwgNDk4NiwgMTIxODksIDExOTU5OSwgNjc2NDgsIAorICAgIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3MTE3NiwgNjIyMCwgOTAwNCwgNjU1NjEsIDk4Mzg4MSwgNzc5NDksIDAsIAorICAgIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCA4MzQ1MywgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCAKKyAgICA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgNzE4OTcsIDgzNDUxLCAxMjcxODcsIDk2MzUsIDEyNjAwLCA4ODcxLCAKKyAgICA2NzM2NiwgNjg0OTEsIDAsIDY0NjksIDc0MjI3LCAxMTg5MDAsIDY1MzA0LCA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAKKyAgICAzNDI3LCA0MjQwLCA2NzM3NiwgNjczNzUsIDY3Mzc0LCA2NzM3MywgNDI5MTYsIDEyOTE1NSwgMTI3NDg5LCA2NzM3NywgCisgICAgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCA2NzM3MiwgNjczNzEsIDM0OTQsIDY3MzY5LCAzNDE2LCAxMjkxNDgsIDc3OTc2LCAKKyAgICAxOTUwMTAsIDk4MzE5MiwgNzg1NjYsIDAsIDEyNzA0NywgNjU4OTgsIDk4MzI0NiwgNjUzMTIsIDU0NDcsIDEwMDg5NSwgCisgICAgMTI4OTUsIDY0MzgyLCA0MDEwLCA4MzE1NCwgNDExMDYsIDc0MzU3LCA2NDQ0OCwgOTM5OTQsIDQxMTA1LCA3MDY3NywgCisgICAgNjU4MjAsIDYyMzIsIDY4MjMzLCAxMDExMDQsIDEwMTEwMywgNDM2MDgsIDEwMTEwNSwgNzgxMTgsIDY1MzgsIDQzMzUsIAogICAgIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDk4MzY3NCwgCi0gICAgNDI4NzgsIDExNTAwLCA2NzQwNSwgMTI4MTUyLCA3NDU3OCwgMCwgNjU4MzIsIDEyODY2NywgMCwgNzA3ODksIDY3MzMzLCAKLSAgICAxMTkyMzAsIDQ1ODYsIDAsIDM1MCwgMTA5NTEsIDAsIDUwOSwgNjczMzYsIDk4Mzg3OSwgOTIzMDcsIDAsIDAsIDUxMzMsIAotICAgIDY3MzgyLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIAotICAgIDExNTE2LCA5NDQsIDY3ODE3LCAzODkwLCAxMjE2OCwgMTQzOCwgNjc4MTMsIDY4MzM1LCA3MDAwMywgNDE5NDcsIDEyMjAsIAotICAgIDEyMDgyOCwgNzQ5NDYsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIAotICAgIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMTI4Mjk1LCA3MDc5NywgODg3NywgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCAKLSAgICA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgNjA2MCwgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgCi0gICAgODI5NDgsIDAsIDE5MDYsIDEyMTE2OSwgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDc1MDcxLCAKLSAgICA2NDI4NywgMTI4NDA2LCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAwLCA2ODA4OCwgCi0gICAgNzcwMywgODg0MCwgODAzNSwgMTIwNzExLCAwLCA5MjIzMCwgOTgzMzU3LCA2MTI5LCAxMjg0MzcsIDc4NTg2LCAxMjgyNjgsIAotICAgIDAsIDc4NzQsIDg2ODEsIDExOTA5MiwgMTEyMDYsIDEzMTM2LCAwLCAwLCA3MDEwMiwgNjM4ODYsIDcwNDUwLCA5NjA1LCAKLSAgICA3MTMwOCwgMTMyMjAsIDY3MzQ4LCA2NzM1NCwgNTUxNCwgNzQ5NjAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIAotICAgIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA3NDUyNiwgNjY2NzYsIDY1ODczLCAwLCAxMjgxNzksIDAsIDk1MDEsIDEyMDgzMiwgCi0gICAgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCA2ODc1OSwgCi0gICAgNzAzMTIsIDE5NTA4NSwgNjg4MjAsIDEyMTkzLCA3MDQwMCwgMTI3MjQwLCAxMjEzNzMsIDAsIDk4MzM1NSwgMTk5MzUsIAotICAgIDEyMDczMywgOTIxNjIsIDY4ODAxLCAxMjc5NTUsIDgzMTMzLCA5MzA1NywgNTI3NSwgMTIwMTk1LCAxMjg2MzIsIDg2MzcsIAotICAgIDQzNjgyLCAwLCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgNjg3ODQsIAotICAgIDI0MjYsIDEyMDQyLCA5MjE5NCwgOTgzOTExLCA5NTM3LCAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCAKLSAgICA1NTIyNCwgNDk4MSwgNzQ2NDQsIDAsIDQxNjQ2LCAxMTY2NywgNDI2ODYsIDc0OTkxLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIAotICAgIDQxNjQ5LCA3NTg5LCAxMjg3NzYsIDAsIDMyMzcsIDAsIDY2ODk1LCA2ODI5NiwgODU0MSwgNzgyOTgsIDcwMDM0LCA0MTg2NiwgCi0gICAgMCwgOTgzODE0LCA5NDA1NiwgMTExNzQsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCA4Mjk5LCAKLSAgICA0MTk0NSwgNzEzMiwgNDE5NDEsIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDEyODY3OSwgNDE2OTksIAotICAgIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDExOTI0NSwgMTI4NDk0LCA4MTA2LCA0MTI4LCAwLCA2Mjc0LCA0NDk0LCA5ODMwODIsIAotICAgIDQwMTIsIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgNzgyNjAsIDEyMDk3MywgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIAotICAgIDc2MTEsIDEyMTA3MywgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIAotICAgIDc1MTIsIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDEyNzM1MywgCi0gICAgMTIwMTY2LCAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA3MTg3MywgCi0gICAgMTI4MDksIDY0MDYsIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAKLSAgICAxMTkyNjMsIDEyMDg1NSwgMTI3OTQ4LCA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDE5NDg1NSwgMCwgNDI2NTcsIDcxMDc1LCAKLSAgICA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCAKLSAgICA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAxMjY0NzUsIDM4OTEsIDEyNzIwNSwgMCwgMjMzNywgCisgICAgNDI4NzgsIDExNTAwLCA2NzQwNSwgMTI4MTUyLCA3NDU3OCwgMCwgNjU4MzIsIDEyNjk3OCwgMCwgNzA3ODksIDY3MzMzLCAKKyAgICAxMTkyMzAsIDQ1ODYsIDE5NDkyMiwgMzUwLCAxMDk1MSwgMTAxMDgxLCA1MDksIDY3MzM2LCAxMDA5MDQsIDkyMzA3LCAKKyAgICAxMDA5MDMsIDAsIDUxMzMsIDY3MzgyLCAxMjg4MjcsIDk1MDAsIDEwMDkwNiwgNDk1NywgNjQ3NDEsIDI0MjIsIDIyMTIsIAorICAgIDk4MzA4MCwgNjczODEsIDY3MzgwLCAyNDk2LCAxMTUxNiwgOTQ0LCA2NzgxNywgMzg5MCwgMTIxNjgsIDE0MzgsIDY3ODEzLCAKKyAgICA2ODMzNSwgNzAwMDMsIDQxOTQ3LCAxMjIwLCAxMjA4MjgsIDc0OTQ2LCA3MDg1NCwgNzQwNTgsIDE1NzEsIDQyNjMwLCAKKyAgICA0MTk0OSwgNDI4MDUsIDgyNzAsIDk0MywgNTY0LCAwLCAzMTIsIDQxOTgwLCA5ODM5NDQsIDEyODI5NSwgNzA3OTcsIDg4NzcsIAorICAgIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIDYwNjAsIAorICAgIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDgyOTQ4LCAwLCAxOTA2LCAxMjExNjksIDExNTMyLCA3NDA3MywgCisgICAgMTAxMDY4LCAxMDEwNjcsIDE5ODUsIDYyOTYsIDk1ODIsIDc1MDcxLCA2NDI4NywgMTI4NDA2LCA3MDcxNywgMTE0MjgsIAorICAgIDE3MzAsIDI0NTcsIDkxNzgwOCwgMTk5MTgsIDEwNDY5LCAxMDEwNzYsIDY4MDg4LCA3NzAzLCA4ODQwLCA4MDM1LCAKKyAgICAxMjA3MTEsIDE5NDYwMiwgOTIyMzAsIDk4MzM1NywgNjEyOSwgMTI3MDY1LCA3ODU4NiwgMTI4MjY4LCAxOTQ5NjUsIDc4NzQsIAorICAgIDg2ODEsIDcyODAwLCAxMTIwNiwgMTMxMzYsIDAsIDEyOTMwNSwgNzAxMDIsIDYzODg2LCA3MDQ1MCwgOTYwNSwgNzEzMDgsIAorICAgIDEzMjIwLCA2NzM0OCwgNjczNTQsIDU1MTQsIDc0OTYwLCA5MjI4LCA2NzM0OSwgNjczNTYsIDY3MzQ2LCA1MjQwLCA5ODExLCAKKyAgICAxMDAxMiwgMzA5NiwgOTE3ODA5LCAwLCA3NDUyNiwgNjY2NzYsIDY1ODczLCAxOTQ2MDgsIDEyODE3OSwgMTAwOTE4LCAKKyAgICA5NTAxLCAxMjAyNzUsIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIDEwMDkyMCwgMTQ2NywgMTAxNTgsIAorICAgIDEwMDQwLCA3NDA5NiwgOTUxOSwgNjg3NTksIDcwMzEyLCAxMDEwNTIsIDY4ODIwLCAxMjE5MywgNzA0MDAsIDEyNzI0MCwgCisgICAgMTIxMzczLCA3MjgxNywgOTgzMzU1LCAxOTkzNSwgMTIwNzMzLCA5MjE2MiwgNjg4MDEsIDEwMDY4MiwgODMxMzMsIDkzMDU3LCAKKyAgICA1Mjc1LCAxMDEwNjMsIDEyODYzMiwgODYzNywgNDM2ODIsIDEyODU3NiwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgCisgICAgNjU4NjIsIDExNDc0LCA2NjMzMiwgNjY2MDMsIDY4Nzg0LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDEyMTE4NywgOTUzNywgCisgICAgMzk2MSwgMTIxMTUsIDc3OTUzLCAyNjA1LCA0NTAwLCA2NDU2MSwgNTUyMjQsIDQ5ODEsIDc0NjQ0LCAwLCA0MTY0NiwgCisgICAgMTE2NjcsIDQyNjg2LCA3NDk5MSwgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMTI4Nzc2LCAxMjgyNzEsIAorICAgIDMyMzcsIDAsIDY2ODk1LCA2ODI5NiwgODU0MSwgNzgyOTgsIDcwMDM0LCA0MTg2NiwgMCwgMTI3NTA5LCA5NDA1NiwgCisgICAgMTExNzQsIDY5OTI0LCA0MzU1NSwgMjgyMywgOTU1OSwgMTAwNjAsIDQxOTQwLCA4Mjk5LCA0MTk0NSwgNzEzMiwgNDE5NDEsIAorICAgIDMzMDgsIDcxOTAsIDY0ODgwLCA4NjE0LCA2NTIyMCwgNDE0OTMsIDEyODY3OSwgNDE2OTksIDEwNzYyLCA0Mzc4MCwgCisgICAgMTI5OTksIDExOTI0NSwgNzA2ODksIDgxMDYsIDQxMjgsIDk4Mzc1MSwgNjI3NCwgNDQ5NCwgOTgzMDgyLCA0MDEyLCAKKyAgICAxMDM5NSwgOTgzNTkxLCA0MzYzMywgNjU0NDcsIDc4MjYwLCAxMjA5NzMsIDExMDA0LCA2OTUsIDczOSwgNjk2LCA3NjExLCAKKyAgICAxMjEwNzMsIDQyNzU1LCA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgNjk5MzcsIDY5MSwgNzM4LCA3NTExLCA3NTEyLCAKKyAgICA3NTE1LCAzODY4LCA2ODgsIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCAxMjczNTMsIDEyMDE2NiwgCisgICAgMTI4Njg4LCAzOTg1LCA2NjQyNSwgNjU4NjAsIDQxODUxLCA3MDUxLCA2OTc3NywgNDY4MiwgNzE4NzMsIDEyODA5LCA2NDA2LCAKKyAgICA0Njg1LCA5MjUwNSwgMTA4NzksIDEwMzQ3LCA0NjgwLCA2MzQxLCAxMjUyMTcsIDM4NTEsIDgxMzIsIDc0MzI1LCAxMTkyNjMsIAorICAgIDEyMDg1NSwgMTI3OTQ4LCA0MTk1OCwgMTE5MTc2LCA5MTc5MDgsIDE5NDg1NSwgMCwgNDI2NTcsIDcxMDc1LCA3NjQzLCAKKyAgICA0MjM3MywgMTE3MTQsIDY3NTg3LCA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCAKKyAgICA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAxMjY0NzUsIDM4OTEsIDEyNzIwNSwgOTgzODAzLCAyMzM3LCAKICAgICAxNzM1LCA3NDMyNCwgMTExMzQsIDIzNjMsIDEyMTAwOCwgOTI0NDMsIDQzNTYxLCA2NzcwNiwgMTI4MDMyLCA3NDE0NiwgCiAgICAgMTg2MCwgNzQ5NSwgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIDc4NzUzLCAxMjAzNDcsIDc3MjcsIAotICAgIDAsIDg0OTgsIDY5ODE4LCA4OTQ5LCAzMDY1LCA0MjcxOSwgNzEzNSwgMTU2OSwgOTIzNzUsIDEyNTM0LCAxMjEyNCwgNzY5MCwgCi0gICAgMCwgMTI1MzMsIDk4Mzc5NiwgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDEyODQ0NCwgNzQ4MDAsIDcxMDUxLCA2Nzk3NCwgCi0gICAgMTA4NTksIDEyODY1MCwgOTgzODAxLCA2Mzg5NCwgMTIwNzYwLCAxMjI4MiwgNjYxOTIsIDk4MzU4MywgNzQ1OTIsIDg4NTAsIAotICAgIDc0Mjc1LCA5MjM4LCAxMDYxNywgNjgwNjMsIDkxNzkwOSwgOTI2MjUsIDkxNzgwMSwgMTI3OTEsIDAsIDk0MDY5LCAKLSAgICAxMjc4NDMsIDQ0NDcsIDcxMDY1LCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgOTgzNDQ5LCA3NDYzOSwgMTI3OTAsIAotICAgIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIDExOTIzOSwgMTc0NCwgMTI3ODksIDEwMzY2LCAxMjMxNywgCi0gICAgNDEzMTAsIDEyMDczMCwgNDEzOTksIDAsIDAsIDU1MjU4LCAwLCAxMjY5MCwgMTI3NzYzLCAwLCA0MzY3MiwgMTI3ODQwLCAKLSAgICA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDk4MzgwOCwgMjc4LCAxMjEyMDQsIDQxNDA1LCA0Mzg3MSwgMCwgMTAwNzcsIAotICAgIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIDAsIDYwMDIsIDY3MzM1LCA0MzU1MywgMTExODksIDY3MzM4LCA2NzMzNywgCi0gICAgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMTIwMjYzLCAxMjA5NDAsIDk0MDQyLCA4NjQ2LCAxMjgyNTcsIDc3ODI5LCAKLSAgICA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMTEzNzU5LCAxOTQwLCAyODA5LCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIAotICAgIDEwNjc4LCAxMDA0NCwgNjg4NDEsIDEyODEyMSwgOTgzODE2LCA2ODI5MCwgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgCi0gICAgNjY2MTQsIDAsIDAsIDAsIDEwMjk3LCAwLCAzNzQyLCA2NzMzMSwgMzk1OSwgMCwgMTIwNDY2LCAwLCAyNDY3LCA2ODgwNiwgCi0gICAgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIDk4MzIyMCwgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDkyMTAsIAotICAgIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgOTIzNjEsIDExNTQwLCA0MzU0NiwgNjY5MiwgNjgzNywgNDEwNjAsIDEyODAxOCwgCi0gICAgNDY2OCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCA2NzM0MCwgNjczNDcsIDY1MjU2LCA2NzM0NSwgCi0gICAgNjczNDQsIDk4MzM1MiwgOTgzMjY2LCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgMTI4MjM2LCA2NzM1MiwgCi0gICAgNjczNTEsIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA2NzM1MywgNTQ0LCAxMjA0NSwgNjI3OCwgNzQ2MzIsIAotICAgIDU1MTUsIDEyOTE4NiwgMTIwODg0LCA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMCwgNTUxNywgNzAxMTYsIDc0MjI1LCAKLSAgICA3NDg0MSwgNjc4ODQsIDEyODQxNCwgNjc4OTAsIDY3ODg1LCA2Nzg4MCwgNjc4ODEsIDY3ODgyLCA2Nzg4MywgMTIwMTk5LCAKLSAgICAxMTg4ODMsIDY3ODc5LCAxMjcxODgsIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgMTI2NTQ2LCAxMjQ4MywgMTIzNjgsIAotICAgIDQxNzY5LCA0MjcyNiwgNDE3NjUsIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIAotICAgIDQyNjc3LCA2Nzg4OSwgOTMwNDAsIDEzMTEsIDEyODk0OSwgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIAotICAgIDEyODg4MCwgNjkxNywgNzgxNTUsIDEyMDgzNywgOTQ5LCA3Nzg4MiwgOTE3OTY4LCA2MTQ4LCA4NjA1LCA0MjI1MywgCi0gICAgNzgxNzcsIDY2OTA2LCAwLCA0MjcxNSwgNzE0MzIsIDcwMjgyLCA5ODMzNzMsIDYzODcxLCAwLCA0MTc5NiwgMTI2OSwgCi0gICAgNjUzMCwgMTIxNDE0LCA2NTA1NywgNzA0OTMsIDUxNDQsIDEyMjIxLCA0MjcxNiwgNjgyOTksIDQ0MzEsIDQzMzEsIAotICAgIDk4MzcyOSwgMTI4Njc1LCA0MTgzNCwgNTI3OSwgMTIxMzYyLCAxMDMzNiwgODMxMiwgMCwgNDI3MDEsIDkyOTU5LCAwLCAKLSAgICA3ODE2NSwgNjYwMzYsIDcwMTY2LCAxMjA5MzcsIDY0MjgsIDQyMjcwLCA5ODM3MjYsIDk4MzU5NiwgNDMwNTksIDQyNjY2LCAKLSAgICA1MjU2LCAxMDY3LCAyNTUsIDEyMTMxLCAxMjg3NDIsIDk0OTMsIDc0OTkwLCA0MTAxNCwgMTE3OTMsIDE5NDkyMCwgCi0gICAgMTIxMTk1LCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgOTgzODU0LCAxMTk2MzIsIDcwNDI3LCA2NTYwLCA3MDE2LCAKLSAgICA3NDI3NCwgNjk5ODYsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAKLSAgICAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIAorICAgIDk4MzY1OCwgODQ5OCwgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCAKKyAgICA3NjkwLCAwLCAxMjUzMywgOTgzNzk2LCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMTI4NDQ0LCA3NDgwMCwgNzEwNTEsIAorICAgIDY3OTc0LCAxMDg1OSwgMTI4NjUwLCA5ODM4MDEsIDYzODk0LCAxMjA3NjAsIDEyMjgyLCA2NjE5MiwgOTgzNTgzLCA3NDU5MiwgCisgICAgODg1MCwgNzQyNzUsIDkyMzgsIDEwNjE3LCA2ODA2MywgOTE3OTA5LCA5MjYyNSwgOTE3ODAxLCAxMjc5MSwgMTI4OTc2LCAKKyAgICA5NDA2OSwgMTI3ODQzLCA0NDQ3LCA3MTA2NSwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDEwMDg3OCwgNzQ2MzksIAorICAgIDEyNzkwLCA0MTQwMCwgMTE5MTI4LCA2NjYwNywgMTI3OTIsIDQyMjMyLCAxMTkyMzksIDE3NDQsIDEyNzg5LCAxMDM2NiwgCisgICAgMTIzMTcsIDQxMzEwLCAxMDA4NjUsIDQxMzk5LCAxMDA4MjIsIDEyNjY0OSwgNTUyNTgsIDAsIDEyNjkwLCAxMjAwODMsIDAsIAorICAgIDQzNjcyLCAxMjc4NDAsIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgMTE5NjU4LCAyNzgsIDEyMTIwNCwgNDE0MDUsIAorICAgIDQzODcxLCAxMDA4NjcsIDEwMDc3LCA2Mzg1MywgNzA2NjcsIDQyNTg2LCA5MTc4ODYsIDc0MTE0LCA2MDAyLCA2NzMzNSwgCisgICAgNDM1NTMsIDExMTg5LCA2NzMzOCwgNjczMzcsIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDEyMDI2MywgMTIwOTQwLCAKKyAgICA5NDA0MiwgODY0NiwgMTI4MjU3LCA3NzgyOSwgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDExMzc1OSwgMTk0MCwgMjgwOSwgCisgICAgNDM2MzcsIDIyMCwgNjUxOTMsIDQzNTUxLCAxMDY3OCwgMTAwNDQsIDY4ODQxLCAxMjgxMjEsIDk4MzM1MCwgNjgyOTAsIAorICAgIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAxMjI5MjEsIDEyNzkxMiwgMTAyOTcsIDE5NTA1NywgCisgICAgMzc0MiwgNjczMzEsIDM5NTksIDAsIDEyMDQ2NiwgMCwgMjQ2NywgNjg4MDYsIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCAKKyAgICA5ODMyMjAsIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCA5MjEwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIAorICAgIDkyMzYxLCAxMTU0MCwgNDM1NDYsIDY2OTIsIDY4MzcsIDQxMDYwLCAxMDEwOTcsIDQ2NjgsIDkwODMsIDk4MzI0NCwgMCwgCisgICAgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCA2NzM0MCwgNjczNDcsIDY1MjU2LCA2NzM0NSwgNjczNDQsIDk4MzM1MiwgCisgICAgOTgzMjY2LCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgMTIwMjU4LCA2NzM1MiwgNjczNTEsIDU1MTYsIAorICAgIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA2NzM1MywgNTQ0LCAxMjA0NSwgNjI3OCwgNzQ2MzIsIDU1MTUsIDEyOTE4NiwgCisgICAgMTIwODg0LCA5ODMwNTEsIDY1MzM5LCA0MzIyMSwgMjIxMSwgMTIwNTQxLCA1NTE3LCA3MDExNiwgNzQyMjUsIDc0ODQxLCAKKyAgICA2Nzg4NCwgMTI4NDE0LCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAxMjAxOTksIDExODg4MywgCisgICAgNjc4NzksIDEyMTQ0OCwgMTkwMiwgNjc4ODcsIDk2MzgsIDEyOTc2LCA3NDM5NCwgMTI0ODMsIDEyMzY4LCA0MTc2OSwgCisgICAgNDI3MjYsIDQxNzY1LCA3MzYxLCA2NjY3LCA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCA0MjY3NywgCisgICAgNjc4ODksIDkzMDQwLCAxMzExLCAxMDA4ODIsIDQzMjYsIDExMDAwLCA2MzgyNCwgMTMwNjgsIDEwOTMyLCAxMDA2NDMsIAorICAgIDY5MTcsIDc4MTU1LCAxMjA4MzcsIDk0OSwgNzc4ODIsIDkxNzk2OCwgNjE0OCwgODYwNSwgNDIyNTMsIDc4MTc3LCA2NjkwNiwgCisgICAgMTAwNjQ0LCA0MjcxNSwgNzE0MzIsIDcwMjgyLCAxMDA2NDcsIDYzODcxLCAxMjgyOTYsIDQxNzk2LCAxMjY5LCA2NTMwLCAKKyAgICAxMDEwNDksIDY1MDU3LCA3MDQ5MywgNTE0NCwgMTIyMjEsIDQyNzE2LCA2ODI5OSwgNDQzMSwgNDMzMSwgMTAxMDQ1LCAKKyAgICAxMjg2NzUsIDQxODM0LCA1Mjc5LCAxMjEzNjIsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgOTI5NTksIDAsIDc4MTY1LCAKKyAgICA2NjAzNiwgNzAxNjYsIDEwMDM4NywgNjQyOCwgNDIyNzAsIDk4MzcyNiwgOTgzMTYzLCA0MzA1OSwgNDI2NjYsIDUyNTYsIAorICAgIDEwNjcsIDI1NSwgMTIxMzEsIDEyODc0MiwgOTQ5MywgNzM4OTQsIDQxMDE0LCAxMTc5MywgMTI2NDY3LCA3ODc0MCwgCisgICAgNzA3MjgsIDQzNDYwLCAxMDY1MywgNDI3MjMsIDEyNTIxNiwgMTAwNjU4LCA3MDQyNywgNjU2MCwgNzAxNiwgNzQyNzQsIAorICAgIDY5OTg2LCA0MzU1NiwgMzkyOSwgNjc5NzcsIDY2MTQsIDI3NjgsIDkyNTA0LCA5NzQ2LCA1MTM1LCAxMTgxMSwgMTI3OTYsIAorICAgIDExOTUzLCAxMjczODAsIDY5NzYxLCA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIAogICAgIDQzODQ1LCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDkxNzkzMSwgNDM1NjMsIDkyMjMyLCAxMjg5MTQsIAotICAgIDY2NDEwLCA3MzkyLCA4MjMwLCA5MzY1LCA3MTE5NCwgMTI3MTA5LCA5ODM2MDcsIDY2OTE1LCAxMjg0MDIsIDQwNDEsIDAsIAorICAgIDY2NDEwLCA3MzkyLCA4MjMwLCA5MzY1LCA3MTE5NCwgMTI3MTA5LCAxOTQ4NzgsIDY2OTE1LCAxMjg0MDIsIDQwNDEsIDAsIAogICAgIDIzNTcsIDQzMjQwLCAxMjc4NiwgMjI5LCA0MzgzNCwgMTE5ODg0LCA0NDAwNCwgNzE0MiwgMTE5ODgxLCAxMjM1MCwgCiAgICAgNjU1NTQsIDExOTg4MiwgNzEzMDUsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgNzc3MCwgMTA3MTIsIDY0ODUzLCAKICAgICAxMjY4NiwgNDM4MzEsIDQyMzc1LCA2NTc4MCwgMTI0OTQ0LCA2NjM1MiwgMTA0NzAsIDcxMTE5LCAxMTA1OSwgMTA3OTEsIAotICAgIDkxNzk0NCwgNDUwLCAxMTkzMjgsIDEyNzI1NCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgNDQwMDksIAorICAgIDcyNzI0LCA0NTAsIDExOTMyOCwgMTI3MjU0LCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgCiAgICAgNzgyODQsIDY2MzM4LCA2NjM5NSwgOTE3ODMyLCAxODM5LCAxMTg3OTksIDk4MzIxOSwgMTA5MjcsIDE3MDEsIDk4MzY2NCwgCiAgICAgMjM4OCwgNDE3NDksIDQxNzYxLCA1NDUzLCA4MzYxLCAxMTk4NjUsIDg5NSwgNTQ0NCwgNDE3NjMsIDY0ODg5LCA3MTQzLCAKLSAgICA5MjQ5MywgNzg2NzcsIDk4MzEzNywgOTI0MjksIDY5OTgzLCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgOTgzMDQ0LCAKLSAgICAxMjgwMTMsIDY1ODEyLCAxMjA2NzUsIDcwMDAxLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgOTI2MDAsIDEyNzA1MywgNDI3MDAsIAotICAgIDE5NDgwNSwgMTI3OTgwLCAxOTQ4MDcsIDc4Njc2LCA5MjM1NiwgMTk0ODA4LCAxMjc4NDQsIDAsIDQ0OTMsIDQzMzYsIAotICAgIDEyOTE3MSwgMjMxNCwgNDM2MDIsIDc4ODI2LCAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIAorICAgIDkyNDkzLCA3ODY3NywgOTgzMTM3LCA5MjQyOSwgNjk5ODMsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCAxOTQ4NDksIAorICAgIDEyNTE4OSwgNjU4MTIsIDEwMDYzMywgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgCisgICAgMTk0ODA1LCAxMjc0MDMsIDEyODA0MCwgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgCisgICAgMTI5MTcxLCAyMzE0LCA0MzYwMiwgNDE4MDgsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgCiAgICAgNDQ4OSwgNjg3NTAsIDEyNTExNiwgMTk0NzkzLCAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAxOTQ3NjEsIDg4NjcsIAogICAgIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzEwNjQsIDE0MTAsIDc4NzYzLCA5ODMyNTIsIDExODg3OCwgOTgzNTY3LCAKLSAgICAxMjg3MTUsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjEyNzQsIDc0NjQxLCA0ODkyLCA3NDAxNiwgCisgICAgMTAwOTg4LCA5OTE5LCAxMjA1MjgsIDU1OSwgMTI4MTU3LCA0MTgyNSwgMTIxMjc0LCA3NDY0MSwgNDg5MiwgNzQwMTYsIAogICAgIDEyMTUwMiwgNjU0MiwgNDE5NTcsIDEyODg2NSwgNTc3NywgMTI3MTY3LCA3NTksIDY1NzQ5LCAyMDc5LCA2NTI0OCwgCi0gICAgMTI3ODgsIDY0NDg3LCA2NDU1MiwgOTMwNjMsIDEwMjIzLCA0MjA2MiwgMTIxMjc5LCAwLCA3NDI0NiwgMzY2OCwgNjU3NTQsIAorICAgIDEyNzg4LCA2NDQ4NywgNjQ1NTIsIDkzMDYzLCAxMDIyMywgNDIwNjIsIDEwMDY0MCwgMCwgNzQyNDYsIDM2NjgsIDY1NzU0LCAKICAgICA0MzU2MCwgMTIyMjYsIDY3OTkxLCA2NTE0OSwgMjM0MCwgNDE5NTksIDcxNDYzLCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIAotICAgIDY1NzQ3LCAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDY3MjM2LCA4OTIxLCA5OTUyLCAxMjg5NDEsIDAsIAotICAgIDQyNzE0LCA5OTUxLCA0MzQwOSwgMTk0NzcwLCAyOTQ5LCA2NjAxMiwgMTk0Nzc1LCAxOTQ3NzQsIDI5NTgsIDY4MzU5LCAKLSAgICA0MTgyMCwgMjMwMCwgMjM5NSwgMTIwMDYxLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgNzE4OTYsIDY4MjIwLCAxMjgxNDMsIAorICAgIDY1NzQ3LCAxMDkzNywgMjk2MiwgMTIxMTcxLCAyMzIxLCAzNTg3LCA2NTc0NSwgNjcyMzYsIDg5MjEsIDk5NTIsIDEyODk0MSwgCisgICAgMCwgNDI3MTQsIDk5NTEsIDQzNDA5LCAxMDA2NjgsIDI5NDksIDY2MDEyLCAxOTQ1ODIsIDE5NDc3NCwgMjk1OCwgNjgzNTksIAorICAgIDQxODIwLCAyMzAwLCAyMzk1LCAxMjAwNjEsIDk5NzYsIDEwMDk3NSwgMTIwMDUwLCA3MTg5NiwgNjgyMjAsIDEyODE0MywgCiAgICAgNDI4MDksIDQyODA3LCA3MDc5OCwgNjYyOTAsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCAKLSAgICA0MTg5OCwgMjM2MCwgNDE3OTQsIDkxNzk0MiwgNzA3OTYsIDkyMTYzLCA5MzAzMywgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAKLSAgICAxMTMzNiwgNzk5LCA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIAorICAgIDQxODk4LCAyMzYwLCA0MTc5NCwgMTAwNjYzLCA3MDc5NiwgOTIxNjMsIDkzMDMzLCA5ODM2NDgsIDI0MTgsIDk4MzA5OCwgCisgICAgMjQxMSwgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIDE5NDYwNCwgNDE3NzIsIDQyODEzLCAyMzE3LCAKICAgICAxMDI2MCwgMTE4OTgwLCA1NTI4NCwgNzg2ODYsIDEyNzE3NywgMTAzODQsIDE5NDc5NCwgMTIxMTQ3LCAxMjkxMTEsIDc3NTMsIAotICAgIDIzNTEsIDY2NTUsIDY0NDg5LCA2OTkzMSwgNzAxOTksIDc3ODcyLCA0NDQzLCA0Mjc3OSwgMjMwLCAwLCA2ODA2NywgCisgICAgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCA3MDE5OSwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDEyNzAxNSwgNjgwNjcsIAogICAgIDQzNTQ5LCA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgCiAgICAgNjUwNDUsIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDkxNzc3OSwgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCAKLSAgICA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgNzg2ODQsIDkxNzU1NCwgOTIyNjAsIDQxODg3LCAwLCA0ODYyLCA5NzM1LCAKKyAgICA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgNzg2ODQsIDkxNzU1NCwgOTIyNjAsIDQxODg3LCAxMDEwMjUsIDQ4NjIsIDk3MzUsIAogICAgIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA2ODgyMywgOTA2NSwgMTI5NjEsIDAsIDEyMDQ1NiwgOTIyNTMsIAotICAgIDEyODIwNCwgMjg5LCAxMjg3MTQsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIAotICAgIDQyNzI0LCA2OTk3NywgNDY4OCwgMTIwNDU0LCAxMjg1MDcsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDM1NjUsIAotICAgIDEyMDE2MywgNjUyOCwgNzgzODcsIDQzMDM1LCA2OTg5OCwgMjE4LCA5ODM4NTAsIDE1MjAsIDAsIDQ3ODYsIDk4MzE2OCwgCi0gICAgNDMyMjUsIDQ2MDIsIDkyNDAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDEyMTE1NywgMTIwMTU2LCA0Mzk3OCwgODk4OCwgCi0gICAgODg4OCwgOTI3MjQsIDc0ODEyLCA2OTcwOSwgOTgzOTY3LCAxMDY2NiwgMCwgNzM5MDIsIDY5NzQwLCAxMjE0MzYsIDAsIAotICAgIDk5NzUsIDExMzcwNCwgMTE5OTAyLCA0Njg5LCA4OTMyLCAwLCA2NTU2MCwgMTE5MjA5LCA3NDQ0MSwgNzg4MTAsIDAsIDAsIAotICAgIDY3OTg3LCAwLCAxMjg4MjgsIDAsIDY3OTg5LCAxMTkwMjksIDEwMDY1LCA4MjA3LCA3MTkwMCwgOTI2MTMsIDEyODAxMSwgCi0gICAgMTIxMDI4LCA2NjIsIDEyODcyMCwgOTI0NCwgMTk0ODYzLCA4MzE4MywgMTE5MjYxLCA5ODM0MzAsIDAsIDEyMDkwMSwgCi0gICAgOTE3ODM4LCA0MTkyOSwgMCwgNzEwODQsIDY2Njc0LCA0MTkyNiwgNjk5OTQsIDEyMDQ0MywgMTA1MTMsIDY0NjM3LCAKLSAgICAxOTQ4NjIsIDY4MDEzLCA1MiwgMTMxMTgsIDY0NzUsIDE5NTAwNCwgODM0NzksIDEyMDk1LCAxMDIyNSwgNDgxMiwgOTI1NzgsIAotICAgIDEyODQ4NiwgNjc5OTIsIDc0MDg1LCAwLCAzOTc4LCAxMjg0MjUsIDkxNzk0NSwgNzQwMTUsIDExNTgyLCA5Mjc2OCwgCi0gICAgMTIyODEsIDEyNzA0MywgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgMTI1MDE0LCAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgCi0gICAgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgCi0gICAgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA4MzQ0NCwgCi0gICAgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDcxOTA3LCAxMjA0MTAsIDAsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIAotICAgIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgNzQxMzEsIDEyNDIsIDY1NTE0LCAxMjExNzAsIDYzOTQwLCAxMjEzNjMsIAotICAgIDY0NTMzLCA3MTg4MywgMTIwNDQ2LCA2Nzg0MiwgMTE5OTAsIDkyNDA1LCA2MzkzOSwgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCAKLSAgICA3ODY3MSwgNjQ4MjksIDkzMDIwLCA2OTQzLCA5MTc5MzQsIDU4NTksIDAsIDI4NTgsIDk4MzM2MywgNzQyOTQsIDk4MzkxNCwgCi0gICAgNjkyMzksIDAsIDY3ODcxLCAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDY3NzAxLCAyNzUxLCAxMjY2MiwgMjc2MywgCi0gICAgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCA2NjQyNCwgNjM5OTIsIDAsIDYzOTIwLCA3NDEyOCwgCi0gICAgMjg1NiwgMTE5OTEwLCA0NywgNjk5MDgsIDcxMDUzLCA2NTg1OCwgMTk0ODA2LCAwLCA2NzgyOSwgNzg5OSwgMCwgODQxNywgCi0gICAgNDM3OTgsIDcwNzIsIDc0MTk1LCAwLCA0MDMzLCAxMjEyODksIDQzOTkyLCAxMjEwODEsIDAsIDIxMiwgNjQ2MDAsIDE5MDMsIAotICAgIDEyMzIwLCA4MzQ4NCwgMTIwODk0LCAxOTQ1NjMsIDAsIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgOTMwNjQsIDAsIDAsIAotICAgIDExODc5OCwgMTI5MSwgNzQ4MjgsIDAsIDEyMDQzNSwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMTI4MTk4LCAKLSAgICAxMjEyMTYsIDY1NDg3LCA5MjE4OSwgNDE4MzcsIDEyMDYxMSwgODI0NiwgMTI4ODc0LCA5MzA2NiwgMCwgMTIwNDMzLCAwLCAKLSAgICA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAwLCA2NDQyNiwgOTgzMDkyLCAxOTQ5NDgsIDkxNzg2NiwgCi0gICAgOTE3Nzg4LCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTE5ODg3LCAxMjg4MTIsIDkyNzE1LCA3MDc4OCwgMTMyMCwgCi0gICAgMTIxNDYxLCAxNjczLCA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIDU5ODUsIDkxNzkyOCwgMTE5NTk4LCAKLSAgICA5ODIwLCAxMTk4OTIsIDEyMTg3LCA5ODM4NDEsIDcxMDQxLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgNjc2NTAsIDk4MzIyNywgCi0gICAgMCwgNzQ4MjIsIDAsIDc0ODI2LCA2NDczMywgOTgzMjE0LCAxMjc4OTgsIDM0OTEsIDY3MTQ2LCAxMjExNDIsIDEyODIxOSwgCi0gICAgMzUxNCwgNjU0ODUsIDcyNDI4LCA3NDkyLCAxMjg4NjAsIDc0NjA1LCA5MjQ4MywgNzUxNCwgOTgzMzY5LCAxMjY1ODUsIAotICAgIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDYzOTIxLCAxMjExNzgsIDYzOTI1LCAxMjAxNjEsIDc2MTAsIDIxOSwgCi0gICAgMTI4MTU4LCA3ODcyMiwgNjkyLCA0MzU4OCwgNjg0ODUsIDQxNjM1LCA0MzI0MSwgOTY4OCwgNzE0NywgOTUzNSwgMCwgCi0gICAgOTM5OTEsIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDY2Mzk2LCA5MjMwMSwgCi0gICAgMCwgODg5NSwgNTI1MywgNzAwMjUsIDU0NTgsIDkxNzYyOSwgMjg2NiwgMTI5MDQ1LCAxMjc4NjAsIDExMDk4LCA2ODQzMywgCi0gICAgNjcwMCwgMTIwNDg0LCAwLCAxMjA1ODMsIDE5NDgyNCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NzcsIAotICAgIDYzOTk3LCA5NjA0LCA3ODcwMCwgNzQ0MSwgNjM4MjYsIDY3OTcwLCA4MzQzNSwgNjQzOTIsIDkyNjI2LCA5ODM2ODcsIAotICAgIDI4NDQsIDc0NjEwLCA0MTk3NCwgNjczOTcsIDEyMTM5LCA2Nzk3MSwgMCwgMCwgMzM1OCwgNjUyOTUsIDk4Mzg5OSwgMzEwNCwgCi0gICAgMTk0NzM0LCAwLCAxMjEzMDQsIDk4MzIzNSwgNTMwOCwgODM0MzQsIDI5MCwgMCwgMTIxMzM4LCAyODYyLCAyNzkyLCAKLSAgICAxOTUwODgsIDkyOTYzLCA3Nzk4NCwgMzI2OCwgNjY1OTEsIDAsIDY1NTIsIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDAsIDAsIAotICAgIDE4MTQsIDc4NDY0LCAxMDI0MCwgNjYyODUsIDc0MzA1LCAxMjgzODIsIDc0NTI4LCA2NTkwMywgNzE0NTQsIDQyNjQ2LCAKLSAgICA3NjA2LCAyNTkxLCAyODM3LCA0MzQxLCA0MzUxMywgNjQ0ODIsIDkyNTI0LCA4MTYzLCA2NTI3MCwgMCwgNzc5MzIsIDAsIAotICAgIDkxMTIsIDc0NDMxLCA4NjMsIDk0OTAsIDc1MDM3LCAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgOTA3MSwgCisgICAgMTI4MjA0LCAyODksIDEwMTAyOSwgNDY5NCwgMTE0MjAsIDQ2OTAsIDEyMjg5OSwgMTAwNzg5LCA5MTc5NzgsIDQ2OTMsIAorICAgIDczODkzLCA0MjcyNCwgNjk5NzcsIDQ2ODgsIDEyMDQ1NCwgMTI4NTA3LCA5ODM4MTMsIDY3OTk0LCA4MjM4LCAzMTEwLCAKKyAgICAxMjAxNjIsIDM1NjUsIDEyMDE2MywgNjUyOCwgNzgzODcsIDQzMDM1LCA2OTg5OCwgMjE4LCA5ODM4NTAsIDE1MjAsIDAsIAorICAgIDQ3ODYsIDk4MzE2OCwgNDMyMjUsIDQ2MDIsIDkyNDAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDEyMTE1NywgMTIwMTU2LCAKKyAgICA0Mzk3OCwgODk4OCwgODg4OCwgNjU3MjcsIDc0ODEyLCA2OTcwOSwgOTgzOTY3LCAxMDY2NiwgMCwgNzM5MDIsIDY5NzQwLCAKKyAgICAxMjE0MzYsIDAsIDk5NzUsIDExMzcwNCwgMTE5OTAyLCA0Njg5LCA4OTMyLCAxMjUyMzgsIDY1NTYwLCAxMTkyMDksIAorICAgIDc0NDQxLCA3ODgxMCwgMTIyODgxLCAxMjg3MDcsIDY3OTg3LCAwLCAxMjEwMjEsIDAsIDY3OTg5LCAxMTkwMjksIDEwMDY1LCAKKyAgICA4MjA3LCA3MTkwMCwgOTI2MTMsIDEyODAxMSwgMTAxMDkwLCA2NjIsIDEyNTIyMSwgOTI0NCwgMTk0ODYzLCA4MzE4MywgCisgICAgMTE5MjYxLCA5ODM0MzAsIDkxNzg4OSwgMTIwOTAxLCA5MTc4MzgsIDQxOTI5LCAwLCA3MTA4NCwgNjY2NzQsIDQxOTI2LCAKKyAgICA2OTk5NCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMTk1MDA0LCAKKyAgICA4MzQ3OSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgMTI4NDg2LCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDEyODQyNSwgCisgICAgOTE3OTQ1LCA3NDAxNSwgMTE1ODIsIDkyNzY4LCAxMjI4MSwgMTI3MDQzLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAKKyAgICAxMjUwMTQsIDEyODgwOCwgMTE3NjUsIDY1MjU4LCAxMDM2OSwgOTgzNDk4LCAxNTg1LCA3MTkyLCAxMDI0OSwgNDIyLCAKKyAgICAxNTAwLCAyMDM2LCA5ODYsIDE5NDg1OSwgNjQzOTQsIDU3ODEsIDU1OTksIDY0Mjk0LCAyNDk0LCAxMjA0NTAsIDQ4NjEsIAorICAgIDc0MDIxLCA2NDMzNCwgNzgyMDMsIDEyNzgwOCwgMCwgNzI4NzEsIDY1MTAyLCA4OTYxLCA2NTg0MiwgMTAyNDMsIDEwMjQ1LCAKKyAgICA3MTkwNywgMTIwNDEwLCAxMDA2NzEsIDEyMDQ1MywgNjQ4MjEsIDk0NzgsIDI1MDgsIDkyNjgzLCAwLCAyMDIsIDEyODI0NiwgCisgICAgNzQxMzEsIDEyNDIsIDY1NTE0LCAxMjExNzAsIDYzOTQwLCAxMjEzNjMsIDY0NTMzLCA3MTg4MywgMTIwNDQ2LCA2Nzg0MiwgCisgICAgMTE5OTAsIDkyNDA1LCA2MzkzOSwgNDMzNzUsIDY1NDQwLCAyNTA0LCAwLCA3ODY3MSwgNjQ4MjksIDkzMDIwLCA2OTQzLCAKKyAgICA5MTc5MzQsIDU4NTksIDk4Mzk4MCwgMjg1OCwgOTgzMzYzLCA2Njc4MSwgOTgzOTE0LCA2OTIzOSwgOTgzMzgwLCA2Nzg3MSwgCisgICAgMTI5OTIsIDI3NTMsIDE5MzYsIDcwMDc4LCA2NzcwMSwgMjc1MSwgMTI2NjIsIDI3NjMsIDg5NTMsIDY0NzAxLCAxMDczMSwgCisgICAgMTI5MjIsIDcwNTIsIDkxNzgzOSwgNjY0MjQsIDYzOTkyLCAwLCA2MzkyMCwgNzQxMjgsIDI4NTYsIDExOTkxMCwgNDcsIAorICAgIDY5OTA4LCA3MTA1MywgNjU4NTgsIDEwMDg2MywgMTI5MDMzLCA2NzgyOSwgNzg5OSwgOTgzNTc1LCA4NDE3LCA0Mzc5OCwgCisgICAgNzA3MiwgNzQxOTUsIDAsIDQwMzMsIDEyMTI4OSwgNDM5OTIsIDEyMTA4MSwgOTgzMzE1LCAyMTIsIDY0NjAwLCAxOTAzLCAKKyAgICAxMjMyMCwgODM0ODQsIDEyMDg5NCwgMTk0NTYzLCAxMDA5NzksIDg5MTUsIDI3NTksIDk0NSwgNjY4OSwgOTMwNjQsIDAsIAorICAgIDk4Mzc1NiwgMTE4Nzk4LCAxMjkxLCA3NDgyOCwgMCwgMTIwNDM1LCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAKKyAgICAxMjEyNTMsIDEyMTIxNiwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCA4MjQ2LCAxMjg4NzQsIDkzMDY2LCAxMDA2ODAsIAorICAgIDEyMDQzMywgMTk0NTcwLCA2MzkzNSwgNzM5NjIsIDEyMDgwNiwgNjQ3ODcsIDQzNTI0LCAxMjE0MzEsIDY0NDI2LCAKKyAgICA5ODMwOTIsIDE5NDk0OCwgMjIzMCwgOTE3Nzg4LCA2NTY2NCwgNjY5MywgOTg0MywgMCwgODY3NCwgMTAwODY5LCAxMjA4NTgsIAorICAgIDkyNzE1LCA3MDc4OCwgMTMyMCwgMTIxNDYxLCAxNjczLCA0ODExLCA5MjM4MywgNTk4NiwgOTMzOCwgMzA0NiwgNzQ0ODAsIAorICAgIDU5ODUsIDkxNzkyOCwgMTE5NTk4LCA5ODIwLCAxMTk4OTIsIDEyMTg3LCA5ODM4NDEsIDcxMDQxLCA1OTg0LCAwLCA0MzMwOCwgCisgICAgNDM5MywgNjc2NTAsIDExMzc4NywgMTI3MDEzLCA3NDgyMiwgMCwgNzQ4MjYsIDY0NzMzLCA5ODMyMTQsIDEyNzg5OCwgCisgICAgMzQ5MSwgNjcxNDYsIDEyMTE0MiwgMTI4MjE5LCAzNTE0LCA2NTQ4NSwgNzI0MjgsIDc0OTIsIDEyODg2MCwgNzQ2MDUsIAorICAgIDcyNzY4LCA3NTE0LCA5ODMzNjksIDEyNjU4NSwgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgNjM5MjEsIDEyMTE3OCwgCisgICAgNjM5MjUsIDEyMDE2MSwgNzYxMCwgMjE5LCAxMjgxNTgsIDc4NzIyLCA2OTIsIDQzNTg4LCA2ODQ4NSwgNDE2MzUsIDQzMjQxLCAKKyAgICA5Njg4LCA3MTQ3LCA5NTM1LCAxOTQ5ODksIDkzOTkxLCA5ODM5NDUsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIDkxNzkxOCwgCisgICAgNzE0OSwgNzQ1MywgMTE5NTYwLCA4MDEzLCA2NjM5NiwgOTIzMDEsIDAsIDg4OTUsIDUyNTMsIDcwMDI1LCA1NDU4LCAKKyAgICAxOTQ2NTEsIDI4NjYsIDExODgwNSwgMTI3ODYwLCAxMTA5OCwgNjg0MzMsIDY3MDAsIDEyMDQ4NCwgMTI5MzA4LCAxMjA1ODMsIAorICAgIDE5NDgyNCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NzcsIDYzOTk3LCA5NjA0LCA3ODcwMCwgNzQ0MSwgCisgICAgNjM4MjYsIDY3OTcwLCA4MzQzNSwgNjQzOTIsIDkyNjI2LCA5ODM2ODcsIDI4NDQsIDc0NjEwLCA0MTk3NCwgNjczOTcsIAorICAgIDEyMTM5LCA2Nzk3MSwgMTI3MTY2LCA5ODM4MzQsIDMzNTgsIDY1Mjk1LCA5ODMyOTIsIDMxMDQsIDEwMDc3OSwgMCwgCisgICAgMTIxMzA0LCA5ODMyMzUsIDUzMDgsIDgzNDM0LCAyOTAsIDAsIDEyMTMzOCwgMjg2MiwgMjc5MiwgOTI0ODMsIDkyOTYzLCAKKyAgICA3Nzk4NCwgMzI2OCwgNjY1OTEsIDAsIDY1NTIsIDQyMzY3LCA3MDM1LCAxMjA1NTgsIDEwMTAwOCwgOTE3OTcxLCAxODE0LCAKKyAgICA3ODQ2NCwgMTAyNDAsIDY2Mjg1LCA3NDMwNSwgMTI4MzgyLCA3NDUyOCwgNjU5MDMsIDcxNDU0LCA0MjY0NiwgNzYwNiwgCisgICAgMjU5MSwgMjgzNywgNDM0MSwgNDM1MTMsIDY0NDgyLCA5MjUyNCwgODE2MywgNjUyNzAsIDE5NDgyNSwgNzc5MzIsIDAsIAorICAgIDkxMTIsIDcyNzIxLCA4NjMsIDk0OTAsIDc1MDM3LCAxMjgwMzcsIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgOTA3MSwgCiAgICAgNjgwNTQsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDEyMTEzNiwgMjUzNSwgNjU1MDQsIDc2NTMsIDQwOTkzLCA5MjQxNSwgCiAgICAgNjY1ODcsIDEyNDk4NywgMCwgOTI0MDEsIDQzOTI3LCAxMTAwNiwgMTI5MjcsIDc4MDcsIDgwNzMsIDEyMDk4MCwgMTA2MjksIAotICAgIDEyNzg2OSwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjcyNjcsIDkyMzkxLCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCAKLSAgICA0Mzk2OSwgNDMxOTMsIDEwNzM3LCAzNDYzLCAxMjA5NzUsIDk4MzM1MSwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCAKLSAgICA1ODExLCAxMjM0NSwgNzA0OSwgMTE4ODExLCA1MTk1LCAxOTUwODEsIDAsIDY2NjM5LCA5MjkzOSwgMCwgMCwgMTI4MDQxLCAKLSAgICA2NzkwMywgNjc3MzksIDEyNjIsIDEyMDE2NSwgNjU2MSwgMTk5MzksIDEyODY3MywgMCwgMTI3MzE4LCAxMTk5MDYsIAotICAgIDcwMzAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDEyMDY1NCwgMCwgOTI5NDMsIAotICAgIDE1MDIsIDkxNzU2OCwgMTI3OTg4LCA5MTA3LCAxMjczMTYsIDU3MDIsIDM2NTUsIDY3NjYxLCA4NDMwLCAwLCA3MTIyMywgCi0gICAgMTIwNzU4LCAwLCA3NDA1NywgOTYwMywgMTI4MDc5LCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIAotICAgIDUxMjksIDAsIDcwODE2LCA1OTAsIDc1NzksIDU2MTQsIDU4OTMsIDkyMjgwLCAxMTcyMCwgOTI0OTYsIDExNzIxLCA3MDgwNCwgCi0gICAgNDc5OCwgMTIxNDY4LCAxMTkzMTYsIDY2MDM4LCA0NzkzLCA2Nzg1MSwgMTE3MjYsIDEyNzU0MSwgNzQyMDQsIDY4NjEwLCAKLSAgICA2ODgyNCwgNjg2MjYsIDg5NCwgMzAwLCAxMjA4NzUsIDEyMzA2LCA2NjIzNSwgODAwNCwgMCwgMTE5NTc0LCAyNTYyLCAKLSAgICA3MDE1NiwgMTIwODU2LCA0MjUwMywgOTI5MDAsIDExNjUyLCA5MTc4MTMsIDkxNzc5OSwgMTE5MjQxLCA2NDY5OSwgCi0gICAgMTI2NTY5LCA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCA3MDg3MywgMCwgCi0gICAgMTMxNTYsIDEyOTA1NywgMTA4MzIsIDUwOTMsIDAsIDY5ODUyLCA3MjQzMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAKLSAgICAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgCi0gICAgNzEyOTksIDY2ODE3LCA0Mjg4MSwgMCwgODk4MCwgMTE4OTg4LCA2Nzg2MSwgODg0NCwgNzIwOSwgMCwgMCwgNDI3OCwgCi0gICAgMTI4ODA5LCAwLCAxMTkxNjAsIDcwODIxLCA5MDc0LCA0MzQ4LCAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIAotICAgIDE3ODYsIDY2MSwgMTI4MTE2LCAwLCA5MTc5MjUsIDc0NDIzLCA3MTM0NSwgNTg2LCA3NDQxNCwgNjQzNTksIDEyNjcsIAotICAgIDEyODI2OSwgNjU0NjgsIDE5NDk2NiwgNjU3MzEsIDAsIDcyNDA1LCAzNjIxLCA5MjkzMiwgNjY2NjYsIDY0MjExLCAwLCAKLSAgICA2NTYyLCAxMjkyOCwgMTk0OTA0LCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDEyNzk1MywgNzAzNDMsIDE3MTQsIDc0NDA2LCAKLSAgICAxMjA3NTEsIDAsIDEyMTExMywgOTgzOTc2LCA2NjIyNSwgNzAxMTAsIDcwODY3LCA0MjY2MCwgMTE0MzYsIDIwNzAsIDY0LCAKLSAgICAxMjA2OTQsIDEyMTAyNSwgMTAyOTEsIDEwMzIzLCAyODI2LCAxMTM4MDksIDEyNjUxMCwgMCwgNDIwMDgsIDk3MDgsIAotICAgIDQyNzEwLCAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIAotICAgIDk2ODksIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCAwLCAxMjg2MjIsIDY1NTg4LCA5MjM1MCwgOTgzMjgxLCAwLCAKLSAgICA4NDAxLCA5ODM5MjQsIDQyMDE0LCAxMjczMDcsIDcwMzAsIDEyMDk2OSwgMTA0NzksIDY0OTU5LCAyODUyLCAwLCAxMjEyMjUsIAotICAgIDAsIDcwODE5LCAxMjg1ODYsIDkxNzk1MSwgNjk2MywgMTI2NzA0LCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAxMDE0NywgCi0gICAgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAxMjEyODEsIDAsIDAsIDc4NzU3LCAwLCAxMTM4MTUsIDEyMTMwMiwgMCwgOTk5NCwgCi0gICAgMTI0NjcsIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCA3ODQ2NiwgNDMzODIsIAotICAgIDAsIDEyMDcxOSwgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAxMjc3OTcsIAotICAgIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg1LCA5ODM3NDIsIDcwMzEzLCAxMjkxNDAsIAotICAgIDY5MzEsIDY5NzIyLCA0MzI2MSwgNzE3NywgNzAxMDUsIDkyNjUyLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAKLSAgICAxMjY1NzUsIDY4MDYsIDY5OTIsIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzE2LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIAotICAgIDcxMzAwLCA3MDMyLCA1OTU0LCA2NDkzMSwgNDMxNCwgMTI4NjAwLCAxOTgsIDY4NDUzLCA3MzAsIDEyMDA5NCwgNjM5MDcsIAotICAgIDc3OTkzLCA3MDgxOCwgMTMxNjUsIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI1MDA1LCA0MTM3OCwgCi0gICAgMTEwMDgsIDY5MzgsIDcwMDI2LCA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgNzA4MjMsIDE5NDk5MCwgOTgzNjA0LCAKLSAgICAzODkyLCA2ODYzMiwgNjk2NDIsIDY3MTIsIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDk4MzIxMywgMTI2NTExLCA2NDgwMSwgCi0gICAgMTI3ODE4LCA0OTcsIDEyMTAwLCA1OTUzLCA5MjY2NywgNzc5NiwgNjk2NjksIDQzMjU0LCA3MzgzMSwgMCwgMTAyOTMsIAotICAgIDU5NTIsIDEyODEsIDQzNzQ3LCAwLCAxMjEzOTksIDEwNjc3LCA2MDQsIDQxMDk3LCA5MTgyLCAxODU5LCAwLCA5MjYwMywgCi0gICAgMzQyNSwgMTI3NDg4LCAxMjY1MjMsIDI4MzYsIDk4MzczOCwgMCwgOTcwNywgMTEzNzE4LCA0MzIwMiwgMCwgMCwgNjUxOTksIAotICAgIDE3MzgsIDEyODMxMSwgNjc3MDcsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMTEwMSwgMCwgNjYzNzQsIDkxNzk1NiwgMTE5NTUyLCAKLSAgICAyODIyLCA2ODEyMiwgNDQzNiwgOTI1MTksIDk4MzA4MSwgNzM3NTIsIDcwMzA1LCA2NDg3MiwgOTIzNDAsIDEzMzEsIDAsIDAsIAotICAgIDEyMTM3NywgMTI3MDgsIDkxNzk1NCwgNTA5MCwgNTA4OSwgMTI3OTc3LCA5MTc5NTMsIDExOTEwOSwgMCwgNzA4MjYsIDMxOSwgCi0gICAgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgMCwgMCwgNTA4NywgNzQ4ODYsIDc2NDAsIDk2LCA1MDg2LCA5ODM1OTcsIDkyMzc5LCAwLCAKLSAgICA1MDg1LCA2NDI4NiwgOTI2NjUsIDExMzcxNywgNDE0MjIsIDExOTYxNywgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMTE5MDQyLCAKLSAgICAwLCA1MDExLCAwLCA5ODMzMjksIDEyNjU4NywgMCwgMTIwNjk4LCAxMTg4NzQsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIAotICAgIDExODk1MywgOTIyNjIsIDExODg5NSwgNzA3OTksIDcwMDg0LCAwLCAxMDkzOSwgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIAotICAgIDcxMzQzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCA2NzEzOCwgNjU1NzQsIDE5NDk0NywgOTIyNCwgNjcxNDAsIDM2NzEsIAotICAgIDg5NzYsIDY3MTM5LCAwLCA0MTI3NSwgNjM3MiwgODI5OTcsIDU1MjYxLCA3OTYzLCA2MzcxLCAwLCA1NjgsIDkyMzY4LCAKLSAgICA0MTI3MywgMTIxNDQ4LCA3NDUzMSwgNjcyOCwgMCwgOTcxNSwgMTI5Mjk3LCA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIAotICAgIDExODkxOSwgNDIsIDExMTkxLCA0MzY4OCwgNjgyNDMsIDAsIDc0NTgsIDAsIDAsIDY1Mzg1LCA2NzEzNSwgNjcxMzQsIAotICAgIDExOTU4LCAxMTE2NSwgOTE3ODIyLCAxMjUwODcsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDE5NTA2NCwgCi0gICAgNjcxMzIsIDY3MTMxLCA0Mjg1OCwgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgMTMxMDksIDAsIDk0NjcsIAotICAgIDU1NTgsIDg4NzgsIDQzODQ0LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgOTgzMTg1LCAKLSAgICA2NDU4NCwgNzQzNywgNzQ1NCwgMTI1OTQsIDczNzQ5LCA2ODM2MiwgNDU0NiwgNzczMSwgMCwgNzAwNDgsIDc0MjQzLCAKLSAgICAxMjUwOTIsIDM4MDUsIDAsIDY3MTI4LCA0NDAwMSwgNDEwMDgsIDEyODA1MiwgNjMwNywgMTk5NDksIDY3MTI5LCA3NTQ0LCAKLSAgICAxMjQ5ODksIDQzNDY5LCAxMjEwOTUsIDk4MzczNSwgMTAxNTIsIDY0NDIyLCA2NTA5MSwgNjcxMjQsIDc2MDIsIDY0NzI5LCAKLSAgICAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDY4NDgzLCA4NzA0LCAyMzk3LCA1NTU2LCAKLSAgICAwLCAwLCAwLCA5MDExLCA5NjMwLCAxMTE2NiwgMCwgOTM5OTgsIDU1MDYsIDkyNDk4LCAxOTExLCA2NjY1MiwgNjc2ODYsIAorICAgIDEwMTAwNCwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjcyNjcsIDkyMzkxLCA4NzYyLCAxMDUwOCwgNjk2ODksIDczNzcwLCAKKyAgICA0Mzk2OSwgNDMxOTMsIDEwNzM3LCAzNDYzLCA3Mjg1OCwgMTk0NzkwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIAorICAgIDEyMzQ1LCA3MDQ5LCAxMTg4MTEsIDUxOTUsIDE5NTA4MSwgMTk0OTU4LCA2NjYzOSwgOTI5MzksIDgzMTkzLCAxMjEwMTAsIAorICAgIDEyODA0MSwgNjc5MDMsIDY3NzM5LCAxMjYyLCAxMjAxNjUsIDY1NjEsIDE5OTM5LCAxMjg2NzMsIDAsIDEyNzMxOCwgCisgICAgMTE5OTA2LCA3MDMwMCwgMCwgOTgzMDk3LCAwLCA5ODM2NjcsIDExOTkwNywgNjQ2MTIsIDExOTkxLCAxMjA2NTQsIAorICAgIDkxNzg2NiwgOTI5NDMsIDE1MDIsIDkxNzU2OCwgMTI3OTg4LCA5MTA3LCAxMjI5MDQsIDU3MDIsIDM2NTUsIDY3NjYxLCAKKyAgICA4NDMwLCAwLCA3MTIyMywgMTIwNzU4LCAxMTg5NjMsIDc0MDU3LCA5NjAzLCAxMjgwNzksIDUyNTQsIDEyMDc0MiwgNzcyNCwgCisgICAgNzQzODgsIDY4Mzc1LCAxMDc5NiwgNTEyOSwgMCwgNzA4MTYsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCAKKyAgICA5MjQ5NiwgMTE3MjEsIDcwODA0LCA0Nzk4LCAxMjE0NjgsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgCisgICAgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIDY4ODI0LCA2ODYyNiwgODk0LCAzMDAsIDEyMDg3NSwgMTIzMDYsIDY2MjM1LCA4MDA0LCAKKyAgICAxMjcxODksIDExOTU3NCwgMjU2MiwgNzAxNTYsIDEyMDg1NiwgNDI1MDMsIDkyOTAwLCAxMTY1MiwgOTE3ODEzLCA5MTc3OTksIAorICAgIDExOTI0MSwgNjQ2OTksIDEyNjU2OSwgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgCisgICAgNzA4NzMsIDAsIDEzMTU2LCAxMjkwNTcsIDEwODMyLCA1MDkzLCAxOTQ4MzksIDY5ODUyLCA3MjQzMCwgNTA5MiwgMTA3MDgsIAorICAgIDExMzI3LCAwLCA1MDkxLCAxNzYsIDExMzgxMCwgOTE1MywgNDEwNCwgNzg1OTksIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgCisgICAgMTIyNzIsIDk4MzIsIDExNzc3LCA3MTI5OSwgNjY4MTcsIDQyODgxLCA5ODM3ODUsIDg5ODAsIDExODk4OCwgNjc4NjEsIAorICAgIDg4NDQsIDcyMDksIDk4Mzc0MSwgMCwgNDI3OCwgMTI4ODA5LCAwLCAxMTkxNjAsIDcwODIxLCA5MDc0LCA0MzQ4LCAKKyAgICA5MTc4NzIsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgMTc4NiwgNjYxLCAxMjgxMTYsIDkxNzg1NywgCisgICAgOTE3OTI1LCA3NDQyMywgNzEzNDUsIDU4NiwgNzQ0MTQsIDY0MzU5LCAxMjY3LCAxMjgyNjksIDY1NDY4LCAxMjUyMzQsIAorICAgIDY1NzMxLCA5ODM4OTksIDcyNDA1LCAzNjIxLCA5MjkzMiwgNjY2NjYsIDY0MjExLCAxMjkzNTEsIDY1NjIsIDEyOTI4LCAKKyAgICAxMjEzMDYsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMTI3OTUzLCA3MDM0MywgMTcxNCwgNzQ0MDYsIDEyMDc1MSwgMCwgCisgICAgMTIxMTEzLCAxMjczODksIDY2MjI1LCA3MDExMCwgNzA4NjcsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgCisgICAgMTIxMDI1LCAxMDI5MSwgMTAzMjMsIDI4MjYsIDEwMDUyNiwgMTI2NTEwLCAxMjc1NTcsIDQyMDA4LCA5NzA4LCA0MjcxMCwgCisgICAgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCA5Njg5LCAKKyAgICA5ODM5NjksIDY1ODMzLCA3Nzg0OCwgMCwgMTc2NSwgOTgzMzAxLCAxMjg2MjIsIDY1NTg4LCA5MjM1MCwgOTgzMjgxLCAwLCAKKyAgICA4NDAxLCA5ODM5MjQsIDQyMDE0LCAxMjUyMzAsIDcwMzAsIDEyMDk2OSwgMTA0NzksIDY0OTU5LCAyODUyLCA3MjcyOCwgCisgICAgMTIxMjI1LCAwLCA3MDgxOSwgMTE5ODg3LCAxMjUyMjcsIDY5NjMsIDEyNjcwNCwgMTI2NjcsIDY0NTQwLCA3NDc4NiwgCisgICAgMTAxNDcsIDEyOTM1LCAxMjc0MDEsIDExOTE4NSwgNzI4MTIsIDcxMjY1LCAxMjg3NzksIDc4NzU3LCAwLCAxMTM4MTUsIAorICAgIDEyMTMwMiwgMTIyODkyLCA5OTk0LCAxMjQ2NywgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIAorICAgIDcwODQsIDI3NjUsIDc4NDY2LCA0MzM4MiwgOTgzODE1LCAxMjA3MTksIDEyODE4OCwgOTI1MTYsIDY2NjYyLCAwLCA3ODEzMywgCisgICAgOTM2NCwgMTk0Njg1LCA3NDQxNiwgMTI3Nzk3LCAwLCA3Nzk4OCwgMjYzLCAxMDQ0OSwgNDEyODgsIDAsIDQxODM5LCAKKyAgICA3ODM4NSwgMTAwNjkzLCA3MDMxMywgMTI3NDc2LCA2OTMxLCA2OTcyMiwgNDMyNjEsIDcxNzcsIDcwMTA1LCA5MjY1MiwgCisgICAgMTE5ODk1LCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIDY5OTIsIDQyMDE5LCAxOTUwNTYsIAorICAgIDQxMjkwLCA5ODM3MTYsIDc1MCwgMTIxMDg4LCA3MTMwNCwgMTAxNjMsIDYzOTEzLCA3MTMwMCwgNzAzMiwgNTk1NCwgCisgICAgNjQ5MzEsIDQzMTQsIDEwMDYzNiwgMTk4LCA2ODQ1MywgNzMwLCAxMDA2MzUsIDYzOTA3LCA3Nzk5MywgNzA4MTgsIDEzMTY1LCAKKyAgICA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyNTAwNSwgNDEzNzgsIDExMDA4LCA2OTM4LCA3MDAyNiwgCisgICAgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDcwODIzLCAxOTQ5OTAsIDk4MzYwNCwgMzg5MiwgNjg2MzIsIDY5NjQyLCAKKyAgICA2NzEyLCA2NjA0NSwgNDE0NzAsIDY0ODA1LCAwLCA5ODMyMTMsIDEyNjUxMSwgNjQ4MDEsIDEyNzgxOCwgNDk3LCAxMjEwMCwgCisgICAgNTk1MywgOTI2NjcsIDc3OTYsIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDEyODI0MywgMTAyOTMsIDU5NTIsIDEyODEsIDQzNzQ3LCAKKyAgICAwLCAxMjEzOTksIDEwNjc3LCA2MDQsIDQxMDk3LCA5MTgyLCAxODU5LCAwLCA3Mjg1NiwgMzQyNSwgMTI3NDg4LCA3MjcyNSwgCisgICAgMjgzNiwgOTgzNzM4LCAwLCA5NzA3LCA3MDc0MiwgNDMyMDIsIDAsIDAsIDY1MTk5LCAxNzM4LCAxMTk4OTEsIDY3NzA3LCAKKyAgICAyODMyLCA5MjcwMiwgOTY3MCwgMTExMDEsIDk4Mzc5NSwgNjYzNzQsIDEwMDcwNCwgMTE5NTUyLCAyODIyLCA2ODEyMiwgCisgICAgNDQzNiwgOTI1MTksIDk4MzA4MSwgNzM3NTIsIDcwMzA1LCA2NDg3MiwgOTIzNDAsIDEzMzEsIDkxNzk1NSwgOTgzNzA2LCAKKyAgICAxMjEzNzcsIDEyNzA4LCAxMjkzMzMsIDUwOTAsIDUwODksIDEyNzk3NywgMzIwMCwgMTAwOTg0LCAwLCA3MDgyNiwgMzE5LCAKKyAgICAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAxOTQ4ODEsIDUwODcsIDc0ODg2LCA3NjQwLCA5NiwgNTA4NiwgMTI3NzYzLCAKKyAgICA5MjM3OSwgMCwgNTA4NSwgNjQyODYsIDkyNjY1LCAxMTM3MTcsIDQxNDIyLCAxMDA3MTAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIAorICAgIDExOTA0MiwgMTE5OTA5LCA1MDExLCAxOTQ4ODIsIDE5NDc0MiwgMTI2NTg3LCAwLCAxMjA2OTgsIDExODg3NCwgNjY3NywgCisgICAgNzYwMSwgMTk0NzI1LCA1OTEsIDY0NDE5LCAxMTg5NTMsIDkyMjYyLCAxMTg4OTUsIDcwNzk5LCA3MDA4NCwgMTI1MTExLCAKKyAgICAxMDkzOSwgNjEwNiwgNjkzMywgNDEyNzEsIDY3NjAsIDcxMzQzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCA2NzEzOCwgNjU1NzQsIAorICAgIDE5NDk0NywgOTIyNCwgNjcxNDAsIDM2NzEsIDg5NzYsIDY3MTM5LCAwLCA0MTI3NSwgNjM3MiwgODI5OTcsIDU1MjYxLCAKKyAgICA3OTYzLCA2MzcxLCAwLCA1NjgsIDkyMzY4LCA0MTI3MywgMTIwMzIyLCA3NDUzMSwgNjcyOCwgOTgzNjA5LCA5NzE1LCAKKyAgICAxMjA5NzUsIDgyNTgsIDExNzUzLCA3NDgyMCwgOTgzOTY1LCA5NjAyLCAxMTg5MTksIDQyLCAxMTE5MSwgNDM2ODgsIAorICAgIDY4MjQzLCAwLCA3NDU4LCA3Mzk3MiwgOTgzOTYwLCA2NTM4NSwgNjcxMzUsIDY3MTM0LCAxMTk1OCwgMTExNjUsIDE5NDY5OCwgCisgICAgMTI1MDg3LCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAxOTUwNjQsIDY3MTMyLCAxMjY5NiwgNDI4NTgsIAorICAgIDExNzg5LCA2NTg2OCwgNTU1NywgMTAxMzMsIDk3MzcsIDczMDAsIDAsIDk0NjcsIDU1NTgsIDg4NzgsIDQzODQ0LCAKKyAgICAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAxMDA3NjIsIDkwODYsIDY0NTY2LCA5ODMxODUsIDY0NTg0LCA3NDM3LCAKKyAgICA3NDU0LCAxMjU5NCwgNzM3NDksIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIDEyNTA5MiwgMzgwNSwgMCwgCisgICAgNjcxMjgsIDQ0MDAxLCA0MTAwOCwgMTI4MDUyLCA2MzA3LCAxOTk0OSwgNjcxMjksIDc1NDQsIDEyNDk4OSwgNDM0NjksIAorICAgIDEyMTA5NSwgOTgzNzM1LCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCA2NzEyNCwgNzYwMiwgNjQ3MjksIDAsIDQzNTIxLCAKKyAgICAxMjA3NzIsIDQyMzAyLCA0MzcxMSwgNDM1MjMsIDQxNDQ3LCA1NTU5LCA2ODQ4MywgODcwNCwgMjM5NywgNTU1NiwgMCwgMCwgCisgICAgNjY4MDEsIDkwMTEsIDk2MzAsIDExMTY2LCAwLCA5Mzk5OCwgNTUwNiwgOTI0OTgsIDE5MTEsIDY2NjUyLCA2NzY4NiwgCiAgICAgOTk2MSwgODg0NSwgNjY2OTgsIDY4MzI1LCAxMDc5MiwgODg4OSwgMTIxNDAyLCAyMDk4LCAwLCA2NDc1MSwgNzAzMDksIAotICAgIDY2NjIyLCAxMjY2MjYsIDAsIDc0MzY0LCA2ODgxNiwgMTI5MTUyLCA5ODM4MDUsIDQyOTA5LCA3NTUyLCA3MDA5MiwgCi0gICAgMTk0NTY3LCA2NTM4NCwgNzIyMywgNDU1OSwgOTMwMTUsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNDM0OTAsIDEyMTAsIAotICAgIDE5NTA3NywgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDk4MzIzMywgMTI1MDQ1LCAzOCwgODUzMywgNjY2NjksIAotICAgIDExOTEyNCwgOTgzMjk1LCA5ODM3OTIsIDAsIDQzNTcsIDAsIDcwMjg5LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCA3ODg4NCwgCi0gICAgNDI4NjAsIDExOTgzOCwgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCA4MzI3OSwgMTEzODA4LCAwLCAxMTAxNCwgMTIwMTI2LCAKLSAgICA4OTQyLCAxMjAwMCwgNjkyMjQsIDkyMjY3LCAxMjg1MzYsIDExOTc0LCA2NzM2MywgNDI3NzIsIDQyNjUwLCAxMTY1MCwgCi0gICAgNTAxMywgOTI2NjMsIDY4ODEwLCA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgMTExOTMsIDk4Mzc3MCwgMCwgCi0gICAgNjQ3MTQsIDcxNDc5LCA3MDgwMiwgMTIxNjIsIDEyMTIwLCA0MzQ3NiwgOTgzNzY2LCAxMTAyNCwgNzQ4MTEsIDY2MjI4LCAKLSAgICAxMDU2MywgOTI5NTQsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIDkyOTU1LCAxODM3LCAxMjUwODYsIDYzOTcyLCA2OTU3LCAwLCAKLSAgICAxMTM4MjAsIDQ5NTIsIDY1NzE4LCA2NDQwNSwgNTUwNCwgNjU3MjAsIDY1NzE0LCA2NTcxNSwgNjU3MTYsIDEyODAyNiwgCi0gICAgNzUwMTYsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAxMjcyMTMsIDgxMDcsIDY3MTU0LCAxMTI3LCA0NTUsIDAsIAotICAgIDYzOTY4LCAxMjc4MzUsIDM0ODMsIDExOTU5MywgMTk4OSwgOTgzMTc2LCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIAotICAgIDY4MzAwLCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAxMjE0MzQsIDc0MDY0LCAKKyAgICA2NjYyMiwgMTI2NjI2LCAwLCA3MDcyNCwgNjg4MTYsIDEyOTE1MiwgMTI0OTUzLCA0MjkwOSwgNzU1MiwgNzAwOTIsIAorICAgIDEyNzQ5MCwgNjUzODQsIDcyMjMsIDQ1NTksIDkzMDE1LCAxOTU2LCA0MzEzOCwgNzAyNCwgNjU3MjgsIDQzNDkwLCAxMjEwLCAKKyAgICAxOTUwNzcsIDY1MTc1LCAxMDE4NCwgNDMxNDAsIDQzNjU0LCA5MTc5MDIsIDEyODU1OCwgMTI1MDQ1LCAzOCwgODUzMywgCisgICAgNjY2NjksIDExOTEyNCwgOTgzMjk1LCA5ODM3OTIsIDAsIDQzNTcsIDAsIDcwMjg5LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCAKKyAgICA3ODg4NCwgNDI4NjAsIDExOTMyMywgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCA4MzI3OSwgMTEzODA4LCAwLCAxMTAxNCwgCisgICAgMTIwMTI2LCA4OTQyLCAxMjAwMCwgNjkyMjQsIDkyMjY3LCAxMjg1MzYsIDExOTc0LCA2NzM2MywgNDI3NzIsIDQyNjUwLCAKKyAgICAxMTY1MCwgNTAxMywgOTI2NjMsIDY4ODEwLCA2NjIxMCwgMTE4OTE0LCA2NjEzLCA5MjQ3NiwgMCwgMTExOTMsIDE5NDY3NywgCisgICAgNzI3NTQsIDY0NzE0LCA3MTQ3OSwgNzA4MDIsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDk4Mzc2NiwgMTEwMjQsIDc0ODExLCAKKyAgICA2NjIyOCwgMTA1NjMsIDkyOTU0LCAxMjcxOTYsIDQzNTIyLCAyNDYyLCA5Mjk1NSwgMTgzNywgMTI1MDg2LCA2Mzk3MiwgCisgICAgNjk1NywgMCwgMTEzODIwLCA0OTUyLCA2NTcxOCwgNjQ0MDUsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAKKyAgICA3Mjg3NywgNzUwMTYsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAxMjcyMTMsIDgxMDcsIDY3MTU0LCAxMTI3LCA0NTUsIAorICAgIDAsIDYzOTY4LCA3Mjg2MCwgMzQ4MywgMTE5NTkzLCAxOTg5LCA5ODMxNzYsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgCisgICAgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3MjgxMCwgNDE0NDYsIDI1NDAsIDc3MzYsIDEyMTQzNCwgNzQwNjQsIAogICAgIDEyODYwMSwgMTA1MjEsIDcwNzg2LCA0MjE3MywgOTcwNSwgNzQxMjQsIDg2MDQsIDY5NTUsIDEwOTE2LCA0MzY4NCwgNjE0OSwgCiAgICAgMzg4NywgMTk5NTYsIDE0MTEsIDI4MjQsIDAsIDEwMTA2LCAxMjc4NjIsIDE0MDMsIDEyNTA1MywgMTM0NywgOTYzMSwgCi0gICAgNzQ0NDQsIDk4Mzc1MywgMTI3OTk3LCA5Mjk1MSwgNzQ4OTcsIDg2NDAsIDAsIDI1OCwgMTY1NCwgMCwgMCwgOTgzNDc5LCAKLSAgICA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAxMjEwNTMsIAotICAgIDYzOTc2LCA3MDM3NywgNjg2MjMsIDY3MDgyLCA2NzA4MSwgNDEzOTEsIDY3MDg0LCA4MzQ2NSwgMzc2LCA2OTg3LCA5MjIxLCAKLSAgICAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAxMjgwNjcsIDEwMTU0LCA5ODMwNDMsIAotICAgIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgMTIwNjIwLCA4Mjk1MCwgNjk3OTEsIAotICAgIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDEyMTA1NywgMTIyODgsIDc4MDU3LCA2NzA4MCwgMTQ5MywgCi0gICAgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAKLSAgICAxMzEzMSwgNjcwNzQsIDY3MDczLCAxMjg1MDYsIDg3OTQsIDQxMjc4LCA0MTYyOSwgMTIxNTQsIDc1MDczLCA0MTI3NywgCi0gICAgNjQ2NTgsIDk4MzQ1NiwgNjQzODAsIDY2MjUsIDQyOTExLCAxOTkwNCwgMCwgMTIxMzA1LCA3MTE5MywgNjUzNzEsIDcwNzgsIAotICAgIDEyODY5OSwgODMzLCAxMjgyMjgsIDYzNjksIDE5NDgxNSwgMTA5NzksIDQxOTUzLCA5ODMzNzAsIDQxNDM0LCA2MDYyLCAwLCAKLSAgICAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCA5ODQyLCA2NzIwLCA2NTc0NCwgNzEyMDAsIDk4MzU5MiwgMTIxMjIzLCAKLSAgICAxMjY1NjcsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCA5Mjg5MCwgNDE2MjIsIDAsIDAsIAotICAgIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCA1OTkwLCA5MDAsIDAsIDYzOTU3LCAxMTk2MzgsIDAsIAotICAgIDM2MTIsIDAsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgOTI1OTcsIDAsIDY1OTM4LCAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAKLSAgICAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgODMyMjIsIDgzMjIzLCA2OTU2LCA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIAotICAgIDEyMTAwNSwgMTk0OTM5LCAxMTkxMjcsIDkwMDIsIDAsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgNTQ2LCA0MjQ2OSwgCi0gICAgNjU1NjksIDE5MTgsIDk1NDIsIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCA0MzA3NywgNjM5NTIsIDg0MjUsIAotICAgIDM2MDIsIDgzMjgsIDExNzY0LCA4MzE5OSwgODMyMDAsIDY1MDY1LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCAKLSAgICA0MzUyNSwgMTI3OTk2LCAyODU0LCA4MzIxNCwgNDU5MiwgNjU3NTUsIDgzMjE3LCA2NzEyMCwgMTE5NjMsIDQzNjIwLCAKLSAgICA2NzExNywgNzgyNDksIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgNjk2NzcsIAotICAgIDY3MTE2LCA4NjQ4LCAxMjgzNzcsIDY3NDEsIDQzMDQ3LCAxMTk5MDAsIDEzMTgwLCA3ODA3NywgNDE4LCAxMjA2NTMsIAotICAgIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgNjY4NDYsIDg2NDEsIDQxNDQ5LCA4MzE5NCwgNzQxMDAsIAotICAgIDgzMTg2LCAxMDkxMSwgNjk0MiwgMTIwODc5LCAxMDI0LCA0Mjg0OSwgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIAotICAgIDQ1NTQsIDY2ODkyLCA5MDIzLCAxMTY4NSwgMTIxNDc2LCA5OTI4LCA2NzEwOSwgNjY4NjUsIDExNDM3LCA0Mzc0MSwgCi0gICAgNjcxMTMsIDY3MTEyLCA2Mzk2NywgMTI5MDU2LCA0MTIwNiwgMTI2MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMTIxMjc1LCAKLSAgICA4MTU5LCA5MjYxOSwgMTE2ODYsIDcxNDc4LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAxMjkwOTAsIDkyMTgzLCAKLSAgICA2NDUyMywgMTAzNDMsIDEwNDA3LCA5Mjc2NCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgMTIwNTAsIAotICAgIDY4MjAxLCAyODYwLCAwLCAxMjc5MzQsIDcwODI4LCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMTIxNDAxLCAKLSAgICA0Mzg3NSwgNjcxMDMsIDg4NzUsIDAsIDY3MTAyLCA2NzEwNSwgNzUzMSwgMTI4NDcsIDI0MTMsIDExODkxNywgNjc0MDQsIAotICAgIDk2MiwgMCwgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMTI3OTc1LCAxNTgyLCA5ODM3MTUsIDU1MDgsIDAsIDEyMDkwNCwgCi0gICAgNzQ1ODgsIDEwODAxLCA2OTg3NiwgOTIzNTQsIDExOTIwNywgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCAKLSAgICA3ODYwLCAxMjgwNDksIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIAotICAgIDg0MDYsIDExNTMsIDgzMjYzLCA2NDc4OCwgODMyNjUsIDgwNTQsIDkxNzQsIDY3MDg3LCA2NzA4NiwgOTk2NCwgNjcwOTYsIAotICAgIDQxNjExLCA0NjQyLCA2NjU3NCwgMTE1NTYsIDQyNTEyLCAwLCA3ODg1NywgNDIwODksIDc0NjEzLCA5MDA4LCAwLCAKLSAgICAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDgzMjQ4LCA3NzkyNCwgNDI1MTMsIDc3OTI3LCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAKLSAgICA2ODMzOCwgODMyMzksIDgzMjQwLCA4MzI0MSwgODMyNDIsIDk4MzU5MCwgMTEzMzUsIDY0MDY5LCA0MjA5MywgMzkyMCwgCi0gICAgOTE3ODY5LCAwLCAxMTExMCwgODMyNTUsIDQ1ODAsIDQxOTY3LCA4MzI1OCwgNjQzODQsIDgzMjUyLCA4MzI1MywgMzAyMSwgCi0gICAgNDIwMDQsIDk4MzA5NiwgODMyNDksIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMTk0NzU1LCA5Mjk2NywgMTI4NDU1LCAKKyAgICA3NDQ0NCwgMTk0OTQ2LCAxMjc5OTcsIDkyOTUxLCA3NDg5NywgODY0MCwgMTAwOTc2LCAyNTgsIDE2NTQsIDAsIDAsIAorICAgIDk4MzQ3OSwgNDMzMTQsIDEyNzk4NywgNzA2OTksIDQwNDIsIDExNDc4LCAyODczLCA2Mzk3NywgMTE1MjIsIDQxNjY4LCAKKyAgICA4NTQ5LCAxMDg2MSwgMTIxMDUzLCA2Mzk3NiwgNzAzNzcsIDY4NjIzLCA2NzA4MiwgNjcwODEsIDQxMzkxLCA2NzA4NCwgCisgICAgNjc1ODgsIDM3NiwgNjk4NywgOTIyMSwgMCwgMCwgODgyMywgMTI4Njk3LCAxMjk0MywgNjUxODUsIDQxODY5LCAxMjYxOSwgCisgICAgMTI4MDY3LCAxMDE1NCwgOTE3OTIxLCA3NDQzOSwgMjAzOSwgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIAorICAgIDcyODMxLCA4Mjk1MCwgNjk3OTEsIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAwLCA2OTY3MSwgNDIxMTUsIDEyMTA1NywgCisgICAgMTIyODgsIDc4MDU3LCA2NzA4MCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgMTMwODAsIDAsIDY1ODA4LCAKKyAgICA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgNjcwNzQsIDY3MDczLCAxMjg1MDYsIDg3OTQsIDQxMjc4LCA0MTYyOSwgCisgICAgMTIxNTQsIDc1MDczLCA0MTI3NywgNjQ2NTgsIDEyODExMiwgNjQzODAsIDY2MjUsIDQyOTExLCAxOTkwNCwgMCwgMTIxMzA1LCAKKyAgICA3MTE5MywgNjUzNzEsIDcwNzgsIDEyODY5OSwgODMzLCAxMjgyMjgsIDYzNjksIDE5NDgxNSwgMTA5NzksIDQxOTUzLCAKKyAgICAxOTQ5MzUsIDQxNDM0LCA2MDYyLCAwLCAwLCAxOTkxNiwgNjkxMywgOTMzLCAxMzQxLCA5ODQyLCA2NzIwLCA2NTc0NCwgCisgICAgNzEyMDAsIDEyODY0NSwgMTIxMjIzLCAxMjEyNDUsIDc0MDUsIDEwMTA1LCA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCAKKyAgICA5Mjg5MCwgNDE2MjIsIDcwNzA0LCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgNTk5MCwgCisgICAgOTAwLCAxMDA3NTcsIDYzOTU3LCAxMTk2MzgsIDk4Mzk3NywgMzYxMiwgNzA2ODcsIDY0Mzc2LCA5Mzk4NywgNTM4OSwgCisgICAgOTI1OTcsIDAsIDY1OTM4LCAyODM5LCA5NjIxLCA1ODIsIDAsIDc0MzY4LCAzNzQ5LCA2OTQ5LCA3NTY5LCA3NDA2MSwgCisgICAgODMyMjIsIDgzMjIzLCA2OTU2LCA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIDY1Njg2LCAxMjg1NjEsIDExOTEyNywgCisgICAgOTAwMiwgOTgzNDIyLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCAKKyAgICA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgNDMwNzcsIDYzOTUyLCA4NDI1LCAzNjAyLCA4MzI4LCAxMTc2NCwgCisgICAgODMxOTksIDgzMjAwLCA2NTA2NSwgNDExODMsIDEyOTA3LCAxMDI3MSwgMTAyODcsIDY4NCwgNDM1MjUsIDEwMDUzMSwgCisgICAgMjg1NCwgNjY3NDcsIDQ1OTIsIDY1NzU1LCA4MzIxNywgNjcxMjAsIDExOTYzLCA0MzYyMCwgNjcxMTcsIDY2NzM2LCAKKyAgICA2NzEyMywgNjcxMjIsIDY3MTIxLCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDY5Njc3LCA2NzExNiwgODY0OCwgCisgICAgMTAwOTk1LCA2NzQxLCA0MzA0NywgMTAwNDYwLCAxMzE4MCwgNzgwNzcsIDQxOCwgNjY3NTQsIDY0NDk1LCAxMDI5NSwgCisgICAgMTAzMjcsIDEwMzkxLCA0MTc1MiwgNjY4NDYsIDg2NDEsIDQxNDQ5LCA4MzE5NCwgNzQxMDAsIDgzMTg2LCAxMDkxMSwgCisgICAgNjk0MiwgMTIwODc5LCAxMDI0LCA0Mjg0OSwgNDE3NTEsIDY5Nzc2LCA4OTQxLCAxMDEwMzIsIDQ1NTQsIDY2ODkyLCA5MDIzLCAKKyAgICAxMTY4NSwgMTIxNDc2LCA5OTI4LCA2NzEwOSwgNjY4NjUsIDExNDM3LCA0Mzc0MSwgNjcxMTMsIDY3MTEyLCA2Mzk2NywgCisgICAgMTI5MDU2LCA0MTIwNiwgMTI2MjQsIDkwNDksIDQxMTg1LCA0MzE2NiwgMTAwODQwLCA4MTU5LCA5MjYxOSwgMTE2ODYsIAorICAgIDcxNDc4LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAxMjkwOTAsIDkyMTgzLCA2NDUyMywgMTAzNDMsIDEwNDA3LCAKKyAgICA5Mjc2NCwgNjY2NzEsIDExNDY2LCAwLCAxMDA4MzcsIDQyODkwLCA3Mjg0NCwgMjI2MSwgNjgyMDEsIDI4NjAsIDAsIAorICAgIDEyNzkzNCwgNzA4MjgsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAxMjE0MDEsIDQzODc1LCA2NzEwMywgCisgICAgODg3NSwgMCwgNjcxMDIsIDY3MTA1LCA3NTMxLCAxMjg0NywgMjQxMywgMTAwNTIyLCA2NzQwNCwgOTYyLCA5MTc4MTQsIAorICAgIDEyODU1LCA0MTE5NiwgNDI1NjQsIDEwMTAwOSwgMTU4MiwgMTAwODQyLCA1NTA4LCAxMDA0OTIsIDEyMDkwNCwgNzQ1ODgsIAorICAgIDEwODAxLCA2OTg3NiwgOTIzNTQsIDExOTIwNywgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAKKyAgICAxMjgwNDksIDkwNiwgNDI3OTMsIDI4NDIsIDY0MDUsIDY0NzIyLCAxMzEzMiwgNzk4LCA2NDY5NCwgMTI4MDEsIDg0MDYsIAorICAgIDExNTMsIDgzMjYzLCA2NDc4OCwgODMyNjUsIDgwNTQsIDkxNzQsIDY3MDg3LCA2NzA4NiwgOTk2NCwgNjcwOTYsIDQxNjExLCAKKyAgICA0NjQyLCA2NjU3NCwgMTE1NTYsIDQyNTEyLCAwLCA3ODg1NywgNDIwODksIDc0NjEzLCA5MDA4LCAwLCAxMDEwMjgsIAorICAgIDEwMDQ2OCwgNDIwNzksIDgzMjQ4LCA3NzkyNCwgNDI1MTMsIDc3OTI3LCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCA2ODMzOCwgCisgICAgODMyMzksIDgzMjQwLCA4MzI0MSwgODMyNDIsIDk4MzU5MCwgMTEzMzUsIDY0MDY5LCA0MjA5MywgMzkyMCwgMTAwNTA0LCAKKyAgICAxMDA4NTAsIDExMTEwLCA4MzI1NSwgNDU4MCwgNDE5NjcsIDgzMjU4LCA2NDM4NCwgODMyNTIsIDgzMjUzLCAzMDIxLCAKKyAgICA0MjAwNCwgOTgzMDk2LCA4MzI0OSwgNDIzMTcsIDQxOTk4LCAxMjg3NTYsIDY5NDYsIDE5NDc1NSwgOTI5NjcsIDEyODQ1NSwgCiAgICAgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIAotICAgIDEyNzg4MCwgNjgwMzUsIDQzOTk4LCAxMTM2MCwgODMyMzMsIDc0MTgyLCA4MzIzNSwgODMyMjgsIDQyMTQ5LCA4MzIzMCwgCisgICAgMTI3ODgwLCA2ODAzNSwgNDM5OTgsIDExMzYwLCA4MzIzMywgNzQxODIsIDcwNjkxLCA4MzIyOCwgNDIxNDksIDgzMjMwLCAKICAgICA2ODUwOCwgOTE3OTkzLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgMTI4MDc3LCA3NDg4NSwgNTUyNDcsIDQxMTAsIDY2MDA1LCAKICAgICA2OTU5LCAxMDkyOSwgNDI5MDcsIDEyODA4MCwgNjY3MDMsIDc3OTIxLCA4NjE3LCA0MTk4MiwgNjAyNSwgNjkyNDIsIAotICAgIDEyMTA2OCwgMTk0ODU0LCAxMjUxMzksIDAsIDk1OTcsIDQyMDk5LCA0MzE3MiwgOTgzMzc4LCAxMDExNywgOTgzMTY5LCAKLSAgICA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDEyMDY4MSwgODMwMSwgMCwgMCwgMTg3LCAxMjgyMzcsIDY1NjY5LCAKLSAgICAxMjgzMzksIDQ5NjMsIDAsIDY4NzY1LCAwLCA4OTY0LCA2NTY3NiwgNzc3NSwgOTgzODQ5LCA0MTk0OCwgMTI1MDAzLCAwLCAKLSAgICA4MzIzNiwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIDEyMDYxNiwgCi0gICAgNDE3NjYsIDc0OTQ4LCA2NTg4MiwgNzg4NDksIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgCi0gICAgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCA3ODg4LCA4MzQwNSwgMzk4MCwgNzAzNzMsIDQyNjU2LCA0MTUwNywgCi0gICAgODgwNiwgNzAyMywgMCwgNzQyNzksIDk0NDcsIDc4NjUxLCA3ODY3LCA2OTIxOCwgNjIzNiwgMTI3MTYyLCAwLCAxMDUwNSwgCi0gICAgMTI2NjM4LCAxMjg1MSwgODM0ODksIDM0OCwgNTQ3NCwgMTIxMzgyLCAzMTAzLCAwLCA0MTc1MywgNzExMDksIDEyODYwNCwgCi0gICAgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIDQzMzQ3LCA0MjU2MCwgNTM5MSwgCi0gICAgNDE3NDYsIDExOTE0NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgMjY5MSwgNjg3NTIsIDY1NTUzLCA3OTMzLCA1NTYyLCAKLSAgICA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAxMjcyNDIsIDAsIDM5NzksIAotICAgIDcxMjQ4LCAxOTQ4OTksIDY4MzMxLCA5MTc5MTIsIDY4ODQ3LCA5ODM2OTcsIDgzMzgyLCA3NDYzMywgNDEyNjYsIDY4ODM2LCAKLSAgICA2NjU2NiwgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCAyMjc1LCAyNjY2LCAxMjEyMzIsIDQxNzM4LCA4MzEsIDQxOSwgCi0gICAgMTMxMjYsIDEwNzE2LCA4MzQwMCwgNDI4MjIsIDAsIDY0MzQsIDc0ODU3LCA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIAotICAgIDY5OTMyLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCAKLSAgICA0OTk0LCA0ODcsIDEyNjUzNywgNDQ5NywgMzc1NCwgODMwNzIsIDgzMTA1LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgCi0gICAgMTU5NSwgNDE2MTUsIDEyMTAwMSwgMCwgNzQyNjAsIDc0ODYwLCA0Mjg1NCwgNDMyMTksIDgzMzExLCAxMjExMDcsIDEyMTg1LCAKLSAgICAxMTM4MTAsIDcwMDcyLCA2ODM1NSwgNjgzNTcsIDY4NDIxLCA0Mjg1NiwgODYzNCwgMCwgMTE5OTg4LCA0MjA5LCA3NTA1NywgCi0gICAgNjg4MzIsIDY1ODc5LCA0MTUzOCwgNjU2MTIsIDY4ODIyLCA2NjksIDU2NzksIDY4ODEzLCA2ODgxNSwgNjg4MTEsIDY4ODEyLCAKLSAgICA2ODgwNCwgNTY3OCwgMTE4MjEsIDY4ODAyLCA2NzExLCA0NjAsIDEyMTUxMywgMCwgOTgzNDYzLCA3MDExNCwgMTIwNzQ3LCAKLSAgICAxOTQ3MTgsIDEyMTUxOSwgNzgwNTAsIDExOTAyMiwgMCwgMTIxNTE1LCAxMjE1MTQsIDc3ODIsIDkwNDQsIDQ5NzQsIAotICAgIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjcwMTcsIDU3OTIsIDEyNjY0MywgMTI4MzE5LCAKLSAgICA3ODUwMSwgMCwgMjkzMywgMTIyNDQsIDk4MzcwMiwgNTY4MywgOTE3ODk2LCAxMjA4OTUsIDc4MTE5LCAxNTQ5LCAwLCAKLSAgICA5ODMyMjMsIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgNjcyMzcsIAotICAgIDY5NzY4LCAxNDQ5LCAxMDI0MSwgNzgyOTAsIDExOTU4NywgMTk0ODkxLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCA3MDMzMCwgCi0gICAgODU4NCwgNjgwMzAsIDU1NjcsIDI3MTcsIDgzMTc5LCA3MTQ0OCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgCi0gICAgOTE3NjExLCAxMjA4ODEsIDAsIDY1NzA4LCA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCAKLSAgICA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAKLSAgICA2ODA1MiwgNjY1OTgsIDExMDU5MiwgNjQ2NjQsIDEwNjQ3LCA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCAKLSAgICA2NTcwMSwgMTkzNCwgNDMwMDYsIDgzMjgwLCA4ODAyLCA3ODcxMCwgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIAotICAgIDc4NzE2LCA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAwLCAxMTk2MSwgCi0gICAgNzg3MjUsIDY2ODUwLCA3ODcyMywgNzg3MjAsIDc4NzIxLCAxMjc4OTksIDY1NTE1LCA5NDk5LCAxMDAzNSwgMTMwNjksIAorICAgIDEyMTA2OCwgMTI4OTc5LCAxMjEzOTgsIDkxNzk3OSwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNzgsIDEwMTE3LCA3MDczMywgCisgICAgOTIyOTcsIDQxNjM2LCAxOTQ4ODksIDczNzM4LCA5MjcyNCwgODMwMSwgMCwgMCwgMTg3LCAxMjgyMzcsIDY1NjY5LCAKKyAgICAxMjgzMzksIDQ5NjMsIDEyNzk5NiwgNjg3NjUsIDEyODE5OCwgODk2NCwgNjU2NzYsIDc3NzUsIDE5NDc2MywgNDE5NDgsIAorICAgIDEyNTAwMywgMCwgODMyMzYsIDQxOTQyLCA2NTQ0OSwgMzE2MCwgMTAwODEsIDEzMjI2LCA0MjEyMSwgNDI0NzUsIDQyNjYzLCAKKyAgICAxMjA2MTYsIDQxNzY2LCA3NDk0OCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgCisgICAgNjc4NTksIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgNzg4OCwgODM0MDUsIDM5ODAsIDcwMzczLCA0MjY1NiwgCisgICAgNDE1MDcsIDg4MDYsIDcwMjMsIDcyNzM0LCA3NDI3OSwgOTQ0NywgNzA3MDIsIDc4NjcsIDY5MjE4LCA2MjM2LCAxMjcxNjIsIAorICAgIDk4MzYwOCwgMTA1MDUsIDEyNjYzOCwgMTI4NTEsIDgzNDg5LCAzNDgsIDU0NzQsIDEyMTM4MiwgMzEwMywgMCwgNDE3NTMsIAorICAgIDcxMTA5LCAxMjg2MDQsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCA0MzM0NywgCisgICAgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMDA5NjcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNjk5MzAsIDI2OTEsIDY4NzUyLCAKKyAgICA2NTU1MywgNzkzMywgNTU2MiwgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEwMDgyMywgNjQ0MjEsIDc0ODQ2LCA0MTI1MSwgCisgICAgMTI3MjQyLCAwLCAzOTc5LCA3MTI0OCwgMTI5NDE1LCA2ODMzMSwgOTE3OTEyLCA2ODg0NywgOTgzNjk3LCA4MzM4MiwgCisgICAgNzQ2MzMsIDQxMjY2LCA2ODgzNiwgNjY1NjYsIDEyODgzNiwgMTA1ODUsIDY1NzQxLCA0MTczNywgMjI3NSwgMjY2NiwgCisgICAgMTIxMjMyLCA0MTczOCwgODMxLCA0MTksIDEzMTI2LCAxMDcxNiwgODM0MDAsIDQyODIyLCAwLCA2NDM0LCA3NDg1NywgCisgICAgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCA2OTkzMiwgOTE2LCA3NjksIDQxNzQyLCAxMTk2OCwgNzQ4MDUsIDY0MzMsIAorICAgIDU1NjMsIDU0NywgMTk0MywgNjQzOSwgNTU2MCwgNDk5NCwgNDg3LCAxMjY1MzcsIDQ0OTcsIDM3NTQsIDgzMDcyLCA4MzEwNSwgCisgICAgOTAzOSwgNzA2NzgsIDQxNzc2LCAxMjczOTEsIDg3MTYsIDE1OTUsIDQxNjE1LCA3NDQzMSwgMTI4OTAyLCA3NDI2MCwgCisgICAgNzQ4NjAsIDQyODU0LCA0MzIxOSwgODMzMTEsIDEyMTEwNywgMTIxODUsIDExMzcyNCwgNzAwNzIsIDY4MzU1LCA2ODM1NywgCisgICAgNjg0MjEsIDQyODU2LCA4NjM0LCAwLCAxMTk5ODgsIDQyMDksIDc1MDU3LCA2ODgzMiwgNjU4NzksIDQxNTM4LCA2NTYxMiwgCisgICAgNjg4MjIsIDY2OSwgNTY3OSwgNjg4MTMsIDY4ODE1LCA2ODgxMSwgNjg4MTIsIDY4ODA0LCA1Njc4LCAxMTgyMSwgNjg4MDIsIAorICAgIDY3MTEsIDQ2MCwgMTIxNTEzLCAwLCA5ODM0NjMsIDcwMTE0LCAxMjA3NDcsIDE5NDcxOCwgMTIxNTE5LCA3ODA1MCwgCisgICAgMTE5MDIyLCA5ODM4MjksIDEyMTUxNSwgMTIxNTE0LCA3NzgyLCA5MDQ0LCA0OTc0LCAxMTc2MCwgNzg0OTQsIDc1NzcsIAorICAgIDY1NzExLCA0MTkxMiwgMTIxNiwgMTI1MDg4LCAxMDA0MTEsIDU3OTIsIDEyMTM2NCwgMTAwMzkzLCA3ODUwMSwgMCwgMjkzMywgCisgICAgMTIyNDQsIDk4MzcwMiwgNTY4MywgMTAwMzkyLCAxMDAzOTcsIDc4MTE5LCAxNTQ5LCA3MDY3MCwgMTAwNDE1LCAxMjAzOTgsIAorICAgIDU2ODIsIDYyMDYsIDg2NzAsIDEwMjU2LCA1NjgwLCA2OTkzNSwgMTAwMDEsIDY3MjM3LCA2OTc2OCwgMTQ0OSwgMTAyNDEsIAorICAgIDc4MjkwLCA3MDcwOCwgMTk0ODkxLCAxMDU1MiwgNjQzNDIsIDQxOTIyLCA3MDMzMCwgODU4NCwgNjgwMzAsIDU1NjcsIAorICAgIDI3MTcsIDY4ODE0LCA3MTQ0OCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgOTE3NjExLCAxMjA4ODEsIDAsIAorICAgIDY1NzA4LCA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIAorICAgIDU5NDIsIDg0NjgsIDEwMDcyOSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCA2ODA1MiwgNjY1OTgsIAorICAgIDEwMDY4NiwgNjQ2NjQsIDEwNjQ3LCA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgCisgICAgNDMwMDYsIDgzMjgwLCA4ODAyLCA3ODcxMCwgNjUxMzAsIDExNzQ3LCA3ODcwOSwgNjA4NywgNzg3MDUsIDc4NzE2LCAKKyAgICA0MTc1NywgNzg3MTEsIDgwNDMsIDg5NTAsIDY1Njk0LCA2NDQ4NSwgNDM1MzQsIDEwNDU3LCAxMjg1NTIsIDExOTYxLCAKKyAgICA3ODcyNSwgNjY4NTAsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDExOTg5OCwgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgCiAgICAgNzEzMDksIDAsIDk4ODksIDY4MTg0LCA0MjgwNiwgMTI1MDYxLCA3MjU2LCAwLCA2ODA5NCwgMTY2NywgNDIxNjEsIAotICAgIDEyMDk4MSwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIAorICAgIDEwMDk1OCwgNDI0MjgsIDAsIDY5MzQsIDEwMDcwMiwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgMzYxMCwgCiAgICAgNjg0MjAsIDQxNzQ4LCA0OTk1LCA5NTUsIDY1OTA3LCAxMTkyMDgsIDUzNTAsIDY0MzM5LCA3ODMwNiwgNjQ1NDksIDEwODc1LCAKLSAgICAxMjUwNTIsIDU0NzcsIDY1NjkyLCAwLCAxMjg1MzIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA2ODI5OCwgMCwgMzg3NCwgMCwgCi0gICAgMCwgOTgzNjE5LCAxMjAzMzEsIDEyODc3MywgMTEzNjY1LCA2NTYwMywgODMyNzIsIDY1Njg3LCAwLCA0MTAzOCwgNzQwMDksIAotICAgIDkyMDcsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCA4MzA1OCwgMTQ1NSwgNzg3NDksIAotICAgIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4NzQxLCA0MzYxNCwgNjk4MDEsIDkzOSwgNzUwMjEsIDQzNTIwLCAKLSAgICA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzAxNjgsIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgCi0gICAgMTkwLCAxMTk4OTksIDEyNTkzLCAwLCA4MTg4LCA2NDQwOCwgMCwgNDQxNywgMTIxMzAzLCA5MjI2MSwgNjM3MCwgMTI1MTI4LCAKLSAgICA3ODI3LCA2ODQ0MSwgNjk2NSwgMTI4NTgxLCAxMjg4NjgsIDEzMjAxLCAxMjgyMDUsIDY5ODk2LCA3ODg2OCwgNzQzODIsIAotICAgIDExODQxLCA3OTE4LCA3Mzk4OCwgMCwgMTEzNjY4LCA5MTc4ODQsIDE3MjgsIDk4MzcwNSwgNDM3NjQsIDE3OCwgMTI5NzIsIAotICAgIDc0NjIwLCAxMTM2NzEsIDcxMTAzLCAxMTE2OCwgOTgzMzgzLCAxMTM2NzIsIDc4MzI3LCA3NTA0MiwgNjU2OTAsIDgzODIsIAotICAgIDcxMTA3LCAxMTkwNTQsIDE5NDk2OCwgOTI1MiwgOTE3ODg5LCA0NjUyLCA2ODM3MSwgMCwgMTIxMzI3LCA3NDA3MCwgCi0gICAgMTMwNjUsIDk5MjMsIDEwODA2LCAxOTQ1OTYsIDExNzYzLCA3MDAxNiwgMTIwNjg4LCA2NzIzLCA3ODE4NywgMCwgNjk5MywgCi0gICAgNzEwNDQsIDEyMTMxMiwgODMzMywgMTIxMzI5LCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzE3LCAKLSAgICA2OTkxMSwgMTE5MTAsIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDk4MzExMywgNjUzNDQsIDEyMDUxNywgCi0gICAgNDE3NDcsIDAsIDEyODExMCwgODY3NywgMCwgMTI3MDcsIDkzNTAsIDY2MDM3LCAxMjgxODAsIDg4MzYsIDEyMzE1LCAKLSAgICAxMjc0NywgODMwMCwgMTk0NTYyLCAxMjQ5ODQsIDc0OTEsIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIAotICAgIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgODMzMDgsIDY1MzYsIAotICAgIDEyMDIzOCwgNzE4OTEsIDY1NTE2LCAxMjMyMSwgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAxMDAwNywgMTIwMjQ2LCA5NTg4LCAKLSAgICA2ODQ5NCwgMTU5NiwgMTIwMzgzLCA0MTk5NCwgNjU4MDEsIDEyODgwOCwgNjgzOCwgMzU2MSwgMTE5ODY3LCAwLCAxMDYxMywgCi0gICAgNjY5NywgMTI4MDUsIDQxOTI4LCA0MDk4MSwgMTA4MDQsIDc4NDA5LCA1MDA2LCA2NDMyOCwgMCwgOTkzMSwgMCwgODgyNSwgCisgICAgMTI1MDUyLCA1NDc3LCA2NTY5MiwgOTgzMjc2LCAxMTkwOTIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA2ODI5OCwgMTIxMTk1LCAKKyAgICAzODc0LCAwLCAxMjUyMDQsIDEwMDk5NCwgMTIwMzMxLCAxMDA5OTMsIDEwMDY3MywgNjU2MDMsIDgzMjcyLCA2NTY4NywgMCwgCisgICAgNDEwMzgsIDc0MDA5LCA5MjA3LCA0MjIzOSwgODUzNiwgNzA2NzEsIDc4MzI0LCA3ODcyNiwgNzQ0MzIsIDcyNCwgODMwNTgsIAorICAgIDE0NTUsIDc4NzQ5LCA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCA0MTc1LCA3ODMyMywgNDM2MTQsIDY5ODAxLCA5MzksIAorICAgIDc1MDIxLCA0MzUyMCwgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDE5NDY1OCwgNzAxNjgsIDc4NzY0LCA3ODc2MCwgMTA3ODgsIAorICAgIDYwODgsIDc4NzU5LCA3ODc1NSwgMTkwLCAxMTk4OTksIDEyNTkzLCAxMDA3MzUsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCAKKyAgICAxMjEzMDMsIDkyMjYxLCA2MzcwLCAxMDA0MzYsIDc4MjcsIDY4NDQxLCA2OTY1LCAxMjg1ODEsIDEyODg2OCwgMTMyMDEsIAorICAgIDEwMDQzMCwgNjk4OTYsIDc4ODY4LCA3NDM4MiwgMTE4NDEsIDc5MTgsIDcyNzQyLCAxMDEwMDYsIDExMzY2OCwgOTE3ODg0LCAKKyAgICAxNzI4LCA5ODM3MDUsIDQzNzY0LCAxNzgsIDEyOTcyLCA3NDYyMCwgMTEzNjcxLCA3MTEwMywgMTExNjgsIDk4MzM4MywgCisgICAgMTEzNjcyLCA3ODMyNywgNzUwNDIsIDY1NjkwLCA4MzgyLCA3MTEwNywgMTE5MDU0LCAxMDAzODEsIDkyNTIsIDEwMDM3OSwgCisgICAgNDY1MiwgNjgzNzEsIDEwMDM4MiwgMTIxMzI3LCA3NDA3MCwgMTMwNjUsIDk5MjMsIDEwODA2LCAxOTQ1OTYsIDExNzYzLCAKKyAgICA3MDAxNiwgMTIwNjg4LCA2NzIzLCA3ODE4NywgMTAwMzg4LCA2OTkzLCA3MTA0NCwgMTIxMzEyLCA4MzMzLCAxMjEzMjksIDAsIAorICAgIDExMzkwLCA5ODMxMzYsIDc0NDY0LCAxMjc5MTAsIDkyMzIwLCA3NDA4MCwgMTAwNDQyLCA2OTkxMSwgMTE5MTAsIDkyNTU5LCAKKyAgICA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDk4MzExMywgNjUzNDQsIDEyMDUxNywgNDE3NDcsIDEyODM0MiwgMTI4MTEwLCAKKyAgICA4Njc3LCAxMjA1NjQsIDEyNzA3LCA5MzUwLCA2NjAzNywgMTI4MTgwLCA4ODM2LCAxMjMxNSwgMTI3NDcsIDgzMDAsIAorICAgIDE5NDU2MiwgMTI0OTg0LCA3NDkxLCA4ODU2LCA3MTM2MSwgMTI3OTEzLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAKKyAgICA2Njc3OSwgNjY3NzcsIDEwODEzLCAyNTkyLCAxMjg1MywgNDMyNjksIDcyNjMsIDgzMzA4LCA2NTM2LCAxMDA5NjIsIAorICAgIDcxODkxLCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMjIzNywgMTIwMjQ2LCA5NTg4LCA2ODQ5NCwgCisgICAgMTU5NiwgMTIwMzgzLCA0MTk5NCwgNjU4MDEsIDEwMDg3NCwgNjgzOCwgMzU2MSwgNzI3NTMsIDAsIDEwNjEzLCA2Njk3LCAKKyAgICAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgNzg0MDksIDUwMDYsIDY0MzI4LCAxMDA5NjYsIDk5MzEsIDAsIDg4MjUsIAogICAgIDc0NTU1LCA2NTk0MCwgNDMyNTksIDEyNjU4NiwgNjEwNywgODM0NTUsIDExOTE3NywgNzc5NDEsIDc4NDAxLCAxMTkyNzAsIAogICAgIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgODcyMSwgMTE5NTcwLCAxMTkyMjcsIDYwOTIsIAotICAgIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgMTIwOTM1LCAwLCAwLCAxMDM4MCwgODczMywgCi0gICAgMTAzMTYsIDcwMTIxLCA0MTYwMiwgOTE3NTc1LCA5MjMwOCwgNzQ4MzEsIDkzOTg0LCAwLCA2ODQ4MiwgNjUzOTksIAotICAgIDkxNzgyMCwgNjQ1OTEsIDQyNDA1LCA4MzQ2NiwgMTIwODIwLCA4NDMsIDExNTQxLCAxMjgzMjYsIDcwMzIxLCAyMDY1LCAKLSAgICA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCA5ODMzMDYsIDIxNSwgNDEyNTgsIDc3ODc1LCA0MzE1OSwgMTk1MywgOTU3OSwgCi0gICAgNDE5MzgsIDEyNTYsIDM5MTAsIDk0MDcsIDYyNDIsIDAsIDgzNDY0LCA0MTI1NywgNDE5MDAsIDg2NzUsIDEwNzAwLCA4ODA1LCAKLSAgICAxNzQyLCAxMTM3MjIsIDkzMzMsIDgyMDIsIDcyMzk5LCAwLCA5ODMxOTcsIDEyNzI1MiwgMCwgNzM4ODIsIDQ5OSwgCi0gICAgOTgzMDQ5LCA0MzQ2NywgMCwgNDM4MTgsIDgzNDgyLCAxNzEyLCA1OTMyLCA3Nzg0NSwgNDE3NjIsIDk4MzEwMywgMCwgCi0gICAgMTE5NjcsIDE3NzUsIDEyNTAwNiwgNzUwMDksIDExMTE4LCAxMjEzOTEsIDEyODAwOSwgOTQ1OCwgOTI5MzUsIDY0NzAsIAotICAgIDkxODAsIDEyMDM4MCwgNDMxNzYsIDEyODMwNywgMCwgNDI3ODIsIDAsIDEyNDk5OSwgOTgzMTM1LCAxMjgzMDksIDczODQ5LCAKLSAgICAxMjA2NjksIDk0MTQsIDc0NjQ3LCA3Mzc4MiwgNzM5NjksIDU2NSwgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIAotICAgIDE5NDg3MCwgODI1NCwgMCwgMTA5NzUsIDQzNTE4LCAxMjA2MjUsIDc0NzYzLCAxMDIyLCA0MTA4LCAzODgwLCA3NDI0NywgCi0gICAgMTI3MTUzLCAwLCA5MjI2MywgOTE3OTgwLCA3NTA3LCA5ODMxMTgsIDQzMTQ5LCA3MTA1OSwgNjUwMzEsIDc5NjEsIDE2MzYsIAotICAgIDAsIDY1MDI5LCA2NTAyNCwgMTE5MDk5LCAxMjQ3MywgNjUzNCwgMTIwNjMzLCA5OSwgOTgsIDk3LCA2ODIyNiwgNjc1ODQsIAotICAgIDQwNDksIDc0MTYzLCAxMjcwNjUsIDcwOTAsIDgzMjc0LCA3ODkyLCAxMjcwNjQsIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCAKLSAgICA2NTU2MiwgNjY1OTksIDY2NzIyLCAxOTQ5NTUsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMTI3MDYyLCA3MTE5MSwgCi0gICAgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIDU1OTMsIDExOTE0OCwgMTIwNTM0LCA5MjQyNSwgMTAxMDAsIDYwNjEsIAotICAgIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIDEyOTk4LCAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgCi0gICAgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIDEwMSwgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIAotICAgIDQxMjEyLCA2NzcxMywgMTUzNiwgNjQwOTMsIDczOTcwLCA3NzkzMCwgMTIxMDkzLCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAKLSAgICAxMjc0NCwgNDc1LCAxMjAzOTQsIDEzMjY2LCAxMjc4MTMsIDEyNzExMSwgNzg4NDIsIDczOTI2LCA2NjI5MSwgMTA2NDUsIAotICAgIDEyMTIsIDY1NDMsIDk4MzMwOSwgODEzNCwgNDI5MzUsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgCi0gICAgNzE4OTIsIDEyMDk5NiwgODkyMywgMTY0NSwgMTIwNTksIDY2NTg1LCA3MTI5NywgMzE5NiwgNzI0MDQsIDE5NDgyNywgCi0gICAgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAKLSAgICAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDExMzc4NywgNzM4MTksIDQxMTY5LCA4OTM5LCA0MTI0NSwgCi0gICAgMTI4Nzc1LCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAxMjA4NjEsIDAsIDAsIDQxMTcyLCA3ODU1LCAwLCAKLSAgICA3MTQ3MiwgMTA0ODAsIDQzMjU4LCAxMjY1OTYsIDc3OTM2LCA4MjY0LCAxMjYxMCwgOTgzMzEwLCA2NDUsIDEyNjYxNiwgCi0gICAgNzYwOSwgNDA5NzMsIDY5OTQzLCA3MzgzMywgNjk5NDgsIDU4MjQsIDk4NCwgNzc5MTgsIDEwNjg4LCA1ODUxLCAwLCA3NzI5LCAKLSAgICA3Mzk4MiwgMTIwNTE4LCA4MzQ3MywgMTk1MDg2LCA0MzM2OSwgOTgzMTc3LCAxMjgxNDAsIDY4NDE1LCA3Nzg2MSwgNDUzOCwgCi0gICAgOTM5NzgsIDQzMTQxLCA5ODM3NjksIDgyOTc2LCA3NDIxNCwgNzM4ODYsIDY3NzA5LCA5MTc1OTksIDcxOTE4LCA0MzAwNSwgCi0gICAgNzExMTQsIDk1NTIsIDAsIDcwMTI5LCAxMjkxNzMsIDEyOTk3LCA4MzQ3NywgMCwgMTI4ODk3LCAxOTUwMzAsIDIzODEsIAotICAgIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCA3NDYxOCwgMCwgMTI0MjUsIDEwNjYxLCAxMDg1NiwgOTYxNCwgMjQyOCwgCi0gICAgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgODI5NzcsIDcwNDM3LCAxMjEyNTEsIDY0ODk2LCAxMTkxNjIsIDE5NTIsIAotICAgIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDEyODQ1MCwgMTE5NTY2LCAxMjgwOTMsIDEyODA4LCAxMjE4MywgNjE0NSwgCi0gICAgNzUwMjAsIDY0OTI5LCA3NDk4NSwgNzE5MTYsIDc0OTg0LCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIDkxODcsIDgzMjc3LCAKLSAgICA4MzI3OCwgMTAxOTEsIDgzMjcxLCAxMTc1MiwgMzM1MywgOTM1OCwgOTgzNDYyLCA3MTM2NiwgNjY2ODAsIDEyMDA5MCwgCi0gICAgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDEyMDA0NywgOTgzMDU2LCA4MzQ3MCwgMTIwMDgxLCAxMTkwNTIsIAotICAgIDQxMDI3LCAxMjAwODYsIDcxNDQ5LCAxMjAwODgsIDczNjYsIDcwMTksIDcwMzc4LCAwLCAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgCi0gICAgNjQ2NTcsIDg2NTcsIDgzNDcyLCA4NTk0LCAxMjAwNjgsIDAsIDk4Mzc4OSwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgCi0gICAgMTEzNzExLCA0MzE1NCwgNDEwMjksIDExOTk1NiwgMTEzMzIsIDY1MzgwLCA3NzI4LCA5NDA3NywgMTEyOTQsIDAsIDY2NjY1LCAKLSAgICA3ODUxLCAwLCA4Mzc1LCA4Njk5LCAxMjc5NDksIDQyNTI0LCA2ODQxOSwgOTA4NSwgOTQwNDEsIDc1MDQsIDkzMjcsIDYxNjAsIAotICAgIDczODQyLCA5ODM4NjQsIDE5NDkyOSwgODA4OCwgMTI4OTM3LCA3NDAxMiwgNjY1NjIsIDAsIDQ0MzksIDY5MjYsIDcyNDIzLCAKLSAgICAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAKLSAgICAxMjc0NzYsIDExMjk2LCA5ODMyODUsIDk4MzQwOSwgMCwgNjU4MjUsIDk1NzcsIDY4MTk5LCA5ODMzOTMsIDY0NjcwLCAKLSAgICA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgNzA0MDksIDc4MDUzLCA3Mzg3MiwgNzgwNTUsIDExOTk5MywgMTA5MDIsIDAsIAotICAgIDAsIDc4MDcwLCAxMTIwMCwgMTA0NzIsIDI5OTUsIDEyMTQzOCwgMTIwMTM4LCA2NDY4MiwgMjM3MSwgNzgwNjksIDExODg5MywgCi0gICAgMjU5LCAxMDA5LCA3MDQwNSwgMjQwMiwgMjMzMywgNjQ0MCwgMTk0NzQxLCAxMTM3NTcsIDY1MTI1LCA0MTI0NCwgNzA0MDcsIAotICAgIDEzMjcxLCA5MTAzLCAyMjc4LCA5ODMxNDYsIDE5NDcyOCwgMTI5MTIwLCAwLCAxMDIxOSwgNzQ5NjgsIDE5NDc0MCwgMCwgCi0gICAgNjc3MTgsIDQzMTc4LCAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAwLCA5NDA0OSwgNjczNiwgODM0MzksIAotICAgIDQxNDkyLCAxMjAwNSwgNjk5MjcsIDEyNzA2OCwgMTg5MCwgMTIwMDU2LCAwLCA4MzQ0MywgMCwgNzI5MywgNzk5MSwgCi0gICAgNzQwNTIsIDEwNTc4LCAxMjExNDEsIDc4MDc2LCAxMjg2MjAsIDY3MzY4LCA2OTkyOCwgNzE4NTAsIDc4ODAwLCA5MjY1MywgCi0gICAgNjQ0NDUsIDQyNjY4LCA2NjM1LCAxMjgzMDgsIDYxNjQsIDY1MTcwLCA3NDkzNiwgMTIxMTgyLCA3Njc2LCAxMTY2NCwgMCwgCi0gICAgOTMwMjUsIDY5NzA3LCA5MzAyMiwgMTE4ODEyLCAwLCA3MTA5NiwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgNzgwNDUsIDkwODgsIAotICAgIDExOTE0NSwgNjQ1NDUsIDEzOTYsIDEyMDY2NCwgNzU0NiwgMzg0NywgNzEwODgsIDkzMDM3LCA0OTg1LCAxMzI4OCwgNjcyLCAKLSAgICA4MDk4LCA0MzE5NiwgMTk0NzQ2LCAxMjA3MjMsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgMTE3NzIsIAotICAgIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAxOTQ3MTEsIDEyODM3MSwgMTI2MjIsIAotICAgIDEyNzIzNCwgMTI0OTQ4LCAwLCAxMjEyMTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIDc0OTY5LCAKLSAgICA0MjczMSwgNjc5NzIsIDc0OTcwLCA3MTA2NiwgOTgzMjAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgOTI3NDYsIAotICAgIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgOTUxMCwgNjYyMzcsIDk4MzMwNCwgMCwgNDEwNjYsIDY0NjczLCAKLSAgICA5MTc5NjMsIDkyMzgxLCAxMjg2MzYsIDM1MDUsIDg3MDcsIDc0OTI1LCA2NzI1LCAxMjA4MDIsIDEyMTI5NiwgNzUwNDEsIAotICAgIDM0NzEsIDY2MzkxLCA1NDc5LCA4ODIsIDY2ODYsIDExOTU4NCwgMTE2MTMsIDEyMDc3MiwgNDI3NTQsIDc0NjA4LCAKLSAgICAxMjUwMjksIDgzNDMzLCAxMjEyMzcsIDEyMDg0NSwgMCwgODM0MzEsIDMyMjUsIDkxNzk5NiwgNDQzMywgNDExNTYsIAotICAgIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMCwgOTgzNjQyLCAxMDkyNiwgMTE3NTYsIDExNzU3LCA2NDg3OSwgMTIxMTA2LCAKLSAgICA0MjY1NCwgMTI3ODQ4LCAxMzIyNywgMTIwMzIwLCAxMDAyMSwgNTE2MCwgMTM4NywgMCwgOTI2NDQsIDQxNDE4LCAxMjg5MzMsIAotICAgIDY1OTE0LCA2NzIxLCAyMTcsIDkxNzk1NSwgOTE3OTYwLCAxMjEwODIsIDEwNDQzLCAxMDc4OSwgNDExNTgsIDExOTI1NywgCi0gICAgNDI3NCwgMTExNDMsIDQxNDgzLCAwLCA0MTI1MCwgMTI4OTA0LCA0MjE3OSwgMTI4Mzc1LCA1OTMxLCAxMTc0NCwgMTEyMTUsIAotICAgIDc0NDQ2LCA0MTI1MiwgNjY2ODIsIDAsIDExOTYzNywgNDEyNDksIDEzNjYsIDY0NjM1LCA2NTA0NywgMTI0NjYsIDk4MzQ1OCwgCi0gICAgMTIwODEzLCA0Mzk3LCAxMjgwMzcsIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjA4OTMsIDAsIDQxNDg1LCAzNTExLCAKLSAgICA0MTI4MiwgNTkyMywgMTA0MDAsIDAsIDEyMDQ5MywgNzYwLCAwLCAxMjA4OCwgNTc4NiwgNjgyNTIsIDQyMjU2LCAxMTk4NjksIAotICAgIDY3MTQ1LCA0MTcsIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCA3NDk2NSwgNTkzNCwgNzQ1NzIsIDY2NTgzLCA3NDkwNCwgCi0gICAgNjQ4NzcsIDIyODQsIDY0NDgxLCA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgNjcyNDAsIDE5NDY1NiwgMCwgMCwgCi0gICAgNDIyNzMsIDU4MTksIDAsIDEyODA1NiwgMCwgMTE5MTI5LCA5ODMxMDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIAotICAgIDY1Nzg1LCAxMjM3LCAxMDI3NCwgNDU1MiwgMTE5NTc2LCAxMjgyODcsIDAsIDEzNzUsIDY2NzA1LCA0MzU3MywgNjUyNjAsIAotICAgIDMzMjksIDAsIDQyODExLCAxMDMxMiwgNjk4NDUsIDEyMDc5NCwgNzg0MCwgMCwgNDM2MzAsIDEwMjUyLCAxMTkyNDIsIAotICAgIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDE5NTA1MSwgMTE5ODgwLCAxMDc2OSwgOTY3NiwgMTE5MDQxLCAwLCA5NzUzLCAKLSAgICA5Mjc2MiwgODk0NCwgOTgzMTY0LCAwLCAxMDQ3MywgOTgzODIzLCAxMjA0NzIsIDYwNzIsIDQzMDI1LCAxMDI5OSwgCi0gICAgMTI4NDM2LCA2ODg0NSwgMTIwNjA4LCA2NjMyNiwgNjc0MTIsIDkyOTUyLCAwLCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKKyAgICAxMjg0MCwgNDMxMTIsIDg4NzYsIDEyMDIzMSwgODA5NiwgMTAyODQsIDEyMDkzNSwgMTAwOTcwLCA3MDcxMywgMTAzODAsIAorICAgIDg3MzMsIDEwMzE2LCA3MDEyMSwgNDE2MDIsIDkxNzU3NSwgOTIzMDgsIDc0ODMxLCA5Mzk4NCwgOTgzODMwLCA2ODQ4MiwgCisgICAgNjUzOTksIDkxNzgyMCwgNjQ1OTEsIDQyNDA1LCA4MzQ2NiwgMTIwODIwLCA4NDMsIDExNTQxLCAxMDA4MTAsIDcwMzIxLCAKKyAgICAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAxMjUwNjAsIDk4MzMwNiwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAKKyAgICAxOTUzLCA5NTc5LCA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgODM0NjQsIDQxMjU3LCA0MTkwMCwgODY3NSwgCisgICAgMTA3MDAsIDg4MDUsIDE3NDIsIDExMzcyMiwgOTMzMywgODIwMiwgNzIzOTksIDEyMTAyNywgOTgzMTk3LCAxMTM4MDksIAorICAgIDEwMDk4OSwgNzM4ODIsIDQ5OSwgOTgzMDQ5LCA0MzQ2NywgMTk0OTI3LCA0MzgxOCwgODM0ODIsIDE3MTIsIDU5MzIsIAorICAgIDc3ODQ1LCA0MTc2MiwgMTI5MzcyLCAwLCAxMTk2NywgMTc3NSwgMTI1MDA2LCA3NTAwOSwgMTExMTgsIDEyMTM5MSwgCisgICAgMTAwOTgyLCA5NDU4LCA5MjkzNSwgNjQ3MCwgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMTAwNDE0LCAxMDA5ODYsIDQyNzgyLCAKKyAgICAxMDA0NDAsIDEwMTAzNiwgMTAxMDM1LCAxMDA1ODEsIDczODQ5LCAxMDEwNDAsIDk0MTQsIDc0NjQ3LCA3Mzc4MiwgNzM5NjksIAorICAgIDU2NSwgNDI0ODQsIDU3OTQsIDIwMSwgMjY2MiwgNDIyOTIsIDEwMTA0NCwgODI1NCwgMTAxMDQ2LCAxMDk3NSwgNDM1MTgsIAorICAgIDEwMDk1NCwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIDc0MjQ3LCAxMDA5NTEsIDEwMDk5MSwgOTIyNjMsIDkxNzk4MCwgCisgICAgNzUwNywgMTAwNjM4LCA0MzE0OSwgNzEwNTksIDY1MDMxLCA3OTYxLCAxNjM2LCAwLCA2NTAyOSwgNjUwMjQsIDExOTA5OSwgCisgICAgMTI0NzMsIDY1MzQsIDEyMDYzMywgOTksIDk4LCA5NywgNjgyMjYsIDY3NTg0LCA0MDQ5LCA3NDE2MywgMTAwOTU1LCA3MDkwLCAKKyAgICA4MzI3NCwgNzg5MiwgMTAxMDMwLCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIDY2NTk5LCA2NjcyMiwgMTk0OTU1LCAKKyAgICA4MDM5LCAzMzYzLCA2NjU5NCwgNDM0MzQsIDEwMDk2MCwgNzExOTEsIDEyNTk2LCA2NjU5NSwgNDIyNTgsIDQyNTcwLCAKKyAgICA1NTkzLCAxMTkxNDgsIDEyMDUzNCwgOTI0MjUsIDEwMTAwLCA2MDYxLCA2NDg1NCwgMTE5LCAxMTgsIDExNywgMTE2LCAKKyAgICAxMjk5OCwgMTIyLCAxMjEsIDEyMCwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMTUsIDExNCwgMTEzLCAxMTIsIDEwMywgMTAyLCAKKyAgICAxMDEsIDEwMCwgMTA3LCAxMDYsIDEwNSwgMTA0LCA2NDM2LCA3Mzk3NCwgNTM0LCA0MTIxMiwgNjc3MTMsIDE1MzYsIAorICAgIDY0MDkzLCA3Mzk3MCwgNzc5MzAsIDEyMTA5MywgMCwgNjAyMCwgMTI3MTYsIDEyNzExMiwgMTI3NDQsIDQ3NSwgMTIwMzk0LCAKKyAgICAxMzI2NiwgMTI3ODEzLCAxMDEwNzMsIDc4ODQyLCA3MDUwMywgNjYyOTEsIDEwNjQ1LCAxMjEyLCA2NTQzLCAxMjUyMjAsIAorICAgIDgxMzQsIDQyOTM1LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCA5ODMyMjksIDcxODkyLCAxMjA5OTYsIDg5MjMsIAorICAgIDE2NDUsIDEyMDU5LCA2NjU4NSwgNzEyOTcsIDMxOTYsIDcyNDA0LCAxOTQ3MzMsIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgCisgICAgOTc4NywgNjczMywgOTg1OSwgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgCisgICAgMTE0NTQsIDczOTExLCAxMDEwMjAsIDczODE5LCA0MTE2OSwgODkzOSwgNDEyNDUsIDgzNDY1LCA0MTE3MCwgMTQ1NCwgCisgICAgMTEzNjksIDY0NzcsIDEyMTU3LCAxMjA4NjEsIDAsIDAsIDQxMTcyLCA3ODU1LCAxMDA5NjEsIDcxNDcyLCAxMDQ4MCwgCisgICAgNDMyNTgsIDEyNjU5NiwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMTAsIDY0NSwgMTAwOTkyLCA3NjA5LCA0MDk3MywgCisgICAgNjk5NDMsIDczODMzLCA2OTk0OCwgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDEwMDgzNiwgNzcyOSwgNzM5ODIsIAorICAgIDEwMTAwMSwgODM0NzMsIDEwMTAwMywgNDMzNjksIDEwMTAwNSwgMTAwOTczLCA2ODQxNSwgNzc4NjEsIDQ1MzgsIDkzOTc4LCAKKyAgICA0MzE0MSwgMTAwOTcyLCA4Mjk3NiwgNzQyMTQsIDczODg2LCA2NzcwOSwgOTE3NTk5LCA3MTkxOCwgNDMwMDUsIDcxMTE0LCAKKyAgICA5NTUyLCAwLCA3MDEyOSwgMTI5MTczLCAxMjk5NywgODM0NzcsIDE5NDk0MywgMTI4ODk3LCAxMDA3MzcsIDIzODEsIAorICAgIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAxMDA5ODEsIDc0NjE4LCAxMDA5ODMsIDEyNDI1LCAxMDY2MSwgMTA4NTYsIAorICAgIDk2MTQsIDI0MjgsIDQxNDc4LCA4NTgyLCAxMDA2NCwgNzM5MzAsIDgyOTc3LCA3MDQzNywgMTIxMjUxLCA2NDg5NiwgCisgICAgMTAwOTU2LCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCAxMDA5NTcsIDExOTU2NiwgMTAwODE3LCAxMjgwOCwgCisgICAgMTIxODMsIDYxNDUsIDc1MDIwLCA2NDkyOSwgNzQ5ODUsIDcxOTE2LCA3NDk4NCwgNDMxODYsIDQyNTA5LCAwLCAzOTIyLCAKKyAgICA5MTg3LCA4MzI3NywgODMyNzgsIDEwMTkxLCA4MzI3MSwgMTE3NTIsIDMzNTMsIDkzNTgsIDEyODk4MCwgNzEzNjYsIAorICAgIDY2NjgwLCAxMDA4MTMsIDgyNDgsIDc5MzEsIDg1NTgsIDk3OTUsIDY4MzgwLCAxMDA4MTIsIDEwMDk3NywgODM0NzAsIAorICAgIDEyMDA4MSwgMTAwOTcxLCA0MTAyNywgMTAwODExLCA3MTQ0OSwgMTIwMDg4LCA3MzY2LCA3MDE5LCA3MDM3OCwgMCwgCisgICAgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIDY0NjU3LCA4NjU3LCA4MzQ3MiwgODU5NCwgMTAwOTY5LCAxMDA5NjgsIDEwMDk3OCwgCisgICAgMTAwODIwLCAxMDA5MTQsIDEyMDA3MSwgMCwgMTEzNzExLCA0MzE1NCwgNDEwMjksIDExOTk1NiwgMTEzMzIsIDY1MzgwLCAKKyAgICA3NzI4LCA5NDA3NywgMTEyOTQsIDEwMDk4MCwgNjY2NjUsIDc4NTEsIDAsIDgzNzUsIDg2OTksIDEyMTA5NywgNDI1MjQsIAorICAgIDY4NDE5LCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgNzM4NDIsIDk4Mzg2NCwgMTk0OTI5LCA4MDg4LCA3MDY5OCwgCisgICAgNzQwMTIsIDY2NTYyLCAwLCA0NDM5LCA2OTI2LCA3MjQyMywgMTI5MjQsIDEwMDk3NCwgNDIzNjksIDQzNTAsIDY1NDkxLCAKKyAgICA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgMTAwOTU5LCAxMTI5NiwgOTgzMjg1LCA5ODM0MDksIDAsIAorICAgIDY1ODI1LCA5NTc3LCA2ODE5OSwgODI5ODIsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgNzA0MDksIAorICAgIDc4MDUzLCA3Mzg3MiwgNzgwNTUsIDEwMDgxNSwgMTA5MDIsIDAsIDAsIDc4MDcwLCAxMTIwMCwgMTA0NzIsIDI5OTUsIAorICAgIDEwMDk1MywgMTIwMTM4LCA2NDY4MiwgMjM3MSwgNzI3MjAsIDExODg5MywgMjU5LCAxMDA5LCA3MDQwNSwgMjQwMiwgMjMzMywgCisgICAgNjQ0MCwgMTI1MjQ3LCAxMDA5NjMsIDY1MTI1LCA0MTI0NCwgNzA0MDcsIDEzMjcxLCA5MTAzLCAyMjc4LCA5ODMxNDYsIAorICAgIDE5NDcyOCwgNzMwMSwgOTgzNjkzLCAxMDIxOSwgNzQ5NjgsIDE5NDc0MCwgMCwgNjc3MTgsIDQzMTc4LCAxMjcwNzAsIAorICAgIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAxOTQ4OTUsIDk0MDQ5LCA2NzM2LCA4MzQzOSwgNDE0OTIsIDEyMDA1LCAKKyAgICA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDk4MzMwMiwgODM0NDMsIDk4MzA0NCwgNzI5MywgNzk5MSwgNzQwNTIsIAorICAgIDEwNTc4LCAxMjExNDEsIDc4MDc2LCAxMjg2MjAsIDY3MzY4LCA2OTkyOCwgNzE4NTAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIAorICAgIDQyNjY4LCA2NjM1LCAxMDA3OTIsIDYxNjQsIDY1MTcwLCA3NDkzNiwgMTIxMTgyLCA3Njc2LCAxMTY2NCwgMTI4Njg0LCAKKyAgICA5MzAyNSwgNjk3MDcsIDkzMDIyLCAxMTg4MTIsIDk4MzIzMywgNzEwOTYsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCAKKyAgICA5MDg4LCAxMTkxNDUsIDY0NTQ1LCAxMzk2LCAxMjAyMjAsIDc1NDYsIDM4NDcsIDcxMDg4LCA5MzAzNywgNDk4NSwgMTMyODgsIAorICAgIDY3MiwgODA5OCwgNDMxOTYsIDEwMDc5NiwgMTIwNzIzLCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIAorICAgIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMTk0NzExLCAxMjgzNzEsIAorICAgIDEyNjIyLCAxMjcyMzQsIDEyMDU2NiwgMTk0Nzk4LCAxMjEyMTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIAorICAgIDk4MzM1MSwgNzQ5NjksIDQyNzMxLCA2Nzk3MiwgNzQ5NzAsIDcxMDY2LCA5ODMyMDAsIDMwNTEsIDU4NjIsIDc4MjMsIAorICAgIDkyNDc4LCA5Mjc0NiwgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgOTgzMzA0LCAKKyAgICAxOTQ3NDgsIDQxMDY2LCA2NDY3MywgOTE3OTYzLCA5MjM4MSwgMTI4NjM2LCAzNTA1LCA4NzA3LCA3NDkyNSwgNjcyNSwgCisgICAgMTIwODAyLCAxMjEyOTYsIDc1MDQxLCAzNDcxLCA2NjM5MSwgNTQ3OSwgODgyLCA2Njg2LCAxMTk1ODQsIDExNjEzLCAKKyAgICAxMDExMDYsIDQyNzU0LCA3NDYwOCwgMTI1MDI5LCA4MzQzMywgMTIxMjM3LCAxMjA4NDUsIDAsIDgzNDMxLCAzMjI1LCAKKyAgICA5MTc5OTYsIDQ0MzMsIDQxMTU2LCA0Mzk3MywgNDMxNzMsIDE0NDMsIDQzODEsIDEyNzk0OSwgOTgzNjQyLCAxMDkyNiwgCisgICAgMTE3NTYsIDExNzU3LCA2NDg3OSwgMTIxMTA2LCA0MjY1NCwgMTI3ODQ4LCAxMzIyNywgMTIwMzIwLCAxMDAyMSwgNTE2MCwgCisgICAgMTM4NywgOTgzNzMwLCA5MjY0NCwgNDE0MTgsIDY2NzQ5LCA2NTkxNCwgNjcyMSwgMjE3LCA3MjgyOSwgOTE3OTYwLCAKKyAgICAxMDA5NjUsIDEwNDQzLCAxMDc4OSwgNDExNTgsIDExOTI1NywgNDI3NCwgMTExNDMsIDQxNDgzLCAwLCA0MTI1MCwgCisgICAgMTI4NTYzLCA0MjE3OSwgMTI4Mzc1LCA1OTMxLCAxMTc0NCwgMTEyMTUsIDcwNjc2LCA0MTI1MiwgNjY2ODIsIDk4MzY4MCwgCisgICAgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgNzQzMTksIDEyMDgxMywgNDM5NywgMTAwNDQ1LCAKKyAgICAxMjgzMzYsIDQxMjk2LCA5NTQ1LCA0MTI5MSwgMTIwODkzLCAwLCA0MTQ4NSwgMzUxMSwgNDEyODIsIDU5MjMsIDEwNDAwLCAKKyAgICAwLCAxMjA0OTMsIDc2MCwgMTI3MTg4LCAxMjA4OCwgNTc4NiwgNjgyNTIsIDQyMjU2LCAxMDA0NDYsIDY3MTQ1LCA0MTcsIAorICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCA3NDk2NSwgNTkzNCwgNzQ1NzIsIDY2NTgzLCA3NDkwNCwgNjQ4NzcsIDIyODQsIAorICAgIDY0NDgxLCA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgNjcyNDAsIDE5NDY1NiwgMCwgMTI3MTUzLCA0MjI3MywgNTgxOSwgCisgICAgMCwgMTI4MDU2LCAwLCAxMTkxMjksIDk4MzEwMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgNjU3ODUsIDEyMzcsIAorICAgIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDEyODI4NywgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgMzMyOSwgMCwgCisgICAgNDI4MTEsIDEwMzEyLCA2OTg0NSwgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDExOTI0MiwgMTI4MTA0LCAKKyAgICA0MzE4NSwgMCwgNDM5NiwgMTAwNTMyLCAxMDA1MzUsIDEwNzY5LCA5Njc2LCAxMDA1MzYsIDEwMDUzOSwgOTc1MywgOTI3NjIsIAorICAgIDg5NDQsIDk4MzE2NCwgMTIxNDUwLCAxMDQ3MywgOTgzODIzLCAxMDA1NDIsIDYwNzIsIDQzMDI1LCAxMDI5OSwgMTAwNTQ2LCAKKyAgICA2ODg0NSwgMTAwNTQ4LCA2NjMyNiwgNjc0MTIsIDkyOTUyLCA3MjgwOCwgNDM4MTEsIDkzMzAsIDEyMDU5NiwgNzIyMiwgCiAgICAgMTAyODMsIDEwMzE1LCAxMDM3OSwgNDk5NiwgMTI3OTAyLCAxMzI4MSwgNjY1MTcsIDc4NjUsIDEwMDg3LCA3ODM0MywgCiAgICAgNzQ5MzgsIDQzMzI0LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIDY0ODA2LCA0MzE4MCwgNzQ5NjcsIDc0MTQsIDc3OTI5LCAKLSAgICA0Mzk4MiwgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDk4MzczMSwgODUyLCAwLCAxMjE2MCwgCi0gICAgODM0OTEsIDEwMjEyLCA2NTQzNSwgMTI5MDkyLCAxMjA3MSwgOTYwOSwgMTIxNTYsIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgCisgICAgNDM5ODIsIDcwNzQxLCA2MjIsIDc0MDIzLCA4ODUsIDQzNDA1LCAxNjAyLCAwLCA3MTI2NywgODUyLCAwLCAxMjE2MCwgCisgICAgODM0OTEsIDEwMjEyLCA2NTQzNSwgMTI2NjAzLCAxMjA3MSwgOTYwOSwgMTIxNTYsIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgCiAgICAgMTEwMzUsIDEwNDExLCA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgMTAzNzUsIDQzODUzLCAxMjg1OTksIAogICAgIDQzMTUsIDEyNjQ0LCA4MzQ5MCwgNzc5MzcsIDQzNjM5LCA0MzM0MywgNjc0MDgsIDEyODk0NSwgMTE1MDEsIDQxMTc3LCAKLSAgICAxMjExODAsIDEyODg2NiwgNDM0MzEsIDEyNzA5NywgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCA5ODMzNTgsIDQzMzEzLCAKLSAgICAxMjAyMzAsIDQxMTc2LCAxMjg3ODAsIDk5NCwgOTgzMDQ1LCA4NDUyLCA3Nzk3MywgNzM5NjYsIDY2ODkwLCA3MDgxMiwgCi0gICAgNTkyMSwgMCwgMjU5NywgOTI0MjMsIDU5MjIsIDExODkwMywgNjY4NzMsIDQxODYsIDkyNTMxLCAxMTk5NjcsIDEyNzEwNSwgCi0gICAgNjcxOCwgMTI3MDI5LCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTIxMDQwLCA0NDEzLCA5MjE5NiwgNDIyNjgsIAotICAgIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgNDMxNjksIAotICAgIDEwMTc2LCAwLCA3NDIsIDc0ODgxLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIDExNjgyLCA2NzU2LCAKLSAgICAxMjUxMDQsIDEyMTEyNiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTIwNDk0LCAxMTQxLCA0MjQwNywgCi0gICAgNzQxNywgNzE4LCA3NTcyLCA5NzMsIDExOTU5OSwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgNDIzMzMsIAotICAgIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIDEyMDg0OSwgMTIwMiwgMCwgOTgzOTEwLCAKLSAgICA2NTg2MywgMCwgNjg0ODQsIDk0MDEzLCA3ODE4MiwgNjQ1NDIsIDMyNjAsIDczODI5LCA2NTM4OCwgOTk0NSwgODQxOSwgCi0gICAgNzgwNDIsIDY3MzgsIDAsIDQzNjgxLCA2OTcyOCwgMjA1OSwgOTI0MjIsIDAsIDU1MjM3LCAxNDMxLCAxMTkxOTQsIDY2NTY1LCAKLSAgICAxMDgyMSwgMCwgMTI4MDQsIDEyODA3NiwgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgNDU0NCwgCi0gICAgNzEyMjgsIDkxNzk4MiwgMTI5MTg4LCAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAKLSAgICAxMjA2OCwgNzgxMDIsIDcxMjI2LCAxMDE0MSwgNzQ5MjIsIDYzNzYxLCA4Nzg1LCA0NDc2LCA2NTA3MSwgNjM3NjMsIAotICAgIDEyNjU1LCA4OTA3LCA5MTQ3LCA3ODEwNiwgNzgxMDMsIDc4MTA0LCAxMjA4OTgsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCAKLSAgICA0MTU3MiwgMTI3OTc5LCAxMjcxNjAsIDk4MzU1NCwgNDE1NzMsIDgzMTYwLCAzOTMxLCAxMjAyOTUsIDc0MTQzLCA4MzE1NiwgCi0gICAgODMxNTcsIDgzMTU4LCA3ODQ2MCwgMTE5ODIsIDAsIDgzMDY3LCAxMjgzODEsIDkyNzEyLCA2NDQ4NCwgMTE5MjY2LCAKLSAgICA0MTE2NywgMCwgNDE3MzUsIDk0MDE5LCA3MTcsIDEwNzU0LCA4MzE2OCwgODMxNjksIDcyNDEzLCA4MzE2MywgNjM3NjcsIAotICAgIDgzMTY1LCAxNzgwLCA2OTM2LCAwLCA4MzE2MSwgODE5LCAxMDYxMSwgOTY5NCwgMTI2OTc4LCA3MTQ3NCwgMCwgMTI3ODcxLCAKLSAgICAxMjkwNjksIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIAotICAgIDMzNDYsIDgzMzksIDEyODE2NSwgMTI4MjA4LCA1NzUsIDI2OCwgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIAotICAgIDY1NTY1LCA4MzM2LCA1OTM2LCA3MjkwLCA3ODExNywgODMzNywgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgODMxNTEsIAotICAgIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIDY5NTMsIDAsIDgzMzc1LCA3NDk3MywgNzgxMzIsIDU5MjYsIDY4MjUwLCA3ODEzMCwgCi0gICAgNzgxMjYsIDc4MTI3LCA3ODEyNCwgNzgxMjUsIDkwMzgsIDc4ODcsIDQzNDU2LCA3ODMwLCAxMTY1MSwgMTMwOTMsIDY0MDAyLCAKLSAgICA5ODM1NTksIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIDY3Mzc5LCA4NTk1LCA5ODM1LCA5MTc5NDcsIAotICAgIDQzNzAzLCAxMzA5NywgMCwgNjQ2NDMsIDEzMjgzLCAxMjY5NywgNzQ5NzUsIDEyMzgxLCAzNDg4LCA1OTMzLCAxMDAzMywgCi0gICAgNzExMDEsIDY2MjQxLCA2NTU3MCwgMTE5MTU0LCAxMjI5NywgNzEyMTIsIDE5NTUsIDEyNzk3MCwgNTM0OSwgNDI1MzgsIDAsIAotICAgIDEyNDkzMiwgNzQxMSwgOTQ2MiwgMTI4MTUwLCAwLCAxMjg0NjUsIDQzOTIwLCA0MjczNiwgMTIxMDE3LCA1NzU2LCAKLSAgICAxMjgzMjQsIDc2MzgsIDQxNjQyLCA0Mjc2NCwgOTgzNzE3LCA0MzEwOSwgNzYzNywgNTc1MiwgMTEyMTMsIDgzNDgxLCAKLSAgICA3MzgzMiwgMTI4ODI3LCA4MzQ4NiwgMTI4MjMxLCA3ODMzNCwgOTE3OTU3LCA3NjM2LCA2NTE3MSwgOTEyNCwgOTgzMjEwLCAKLSAgICA3ODg5MiwgMTIwNzk4LCAyOTEsIDAsIDk4MzIyMSwgMjAyNywgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDcwODY5LCAKLSAgICA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgMTExODMsIDEyMDQzMSwgMTIwNDMwLCAwLCAxMjgzNTEsIDEyNzQ4OSwgCi0gICAgMTI3MTM4LCAwLCA5MjQ5OSwgMCwgMTE5MDk0LCA3NDIxMywgNzgyNCwgMCwgMTk0NjQ4LCA0MTI3NCwgNTc3OCwgNjMwMiwgCi0gICAgMTIxNDMyLCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA2NzI0MiwgOTMwNDEsIDk0NTIsIDEyODE1MywgNzQzOTMsIDExNTUyLCAKLSAgICAwLCAxMjc4NTUsIDEyODIxNywgNjUzOTEsIDEyODYxNCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIDc4NjU4LCAKLSAgICA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAxMjA0MTIsIAotICAgIDQxMjY3LCA0NjQ2LCA2Nzc1OSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgNzgyNzAsIDEyNzk4MiwgCi0gICAgOTgzMTcyLCA0Mzk0OCwgMTk1MTAwLCA2ODg0MCwgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIDE2NzEsIDEyNzg5MiwgCi0gICAgNjA2OSwgOTIxOSwgMTI4NTU4LCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgMTE5MTQzLCAwLCAKLSAgICA3MTQ2MiwgOTQwNTAsIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgNjc3MDUsIAotICAgIDkyNTYxLCA0MTQ2MiwgMTIwNDcwLCAxOTUwNzksIDU0MjIsIDEyODIzNCwgOTgzNjI5LCAxMjg2MTEsIDgzNDc0LCAxMDIyOSwgCi0gICAgMTA2MzUsIDgyNiwgODM0NzUsIDE5NTA4MiwgMTI3MDAzLCAxOTUwODQsIDcxNDU1LCA2NDgzLCA5MjIxMSwgMTgwOCwgCi0gICAgNzg0OCwgMTEzNzg4LCA4MTAwLCA3ODIyNywgNzExOTgsIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCAKLSAgICA2NzcwNCwgOTgzOTIxLCAxMTAwMywgOTkwNCwgODM0MTAsIDk4MzkxOSwgMTIwNjkwLCA5MTQ0LCAxMDkyMSwgOTI5OTIsIAotICAgIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDcxMDkyLCAxMDMxMywgODM0MDgsIDgzNTAwLCA2NDMyMCwgMTAyNjUsIAotICAgIDY3MjUyLCAxMDk2MiwgNjY5MDQsIDQzMDA4LCA4OTQ1LCA3ODY4MywgMTIwOTk1LCA0MSwgMTk1MDcyLCAxNzkyLCAKLSAgICAxMjA1MTUsIDE5NTA3MywgODY1NSwgNjgyNTQsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDY3MjU4LCAzODUsIDQxNTIsIDI1ODUsIAotICAgIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCA5MTc4NTIsIDczOTgzLCAxMDk1NywgMTI3MDM3LCAxMTE2MCwgMTE5MTE2LCAKLSAgICAxMjc4NzMsIDEzMTU3LCAwLCAxMjgwMjQsIDM1NzAsIDEyOTE4NywgNzQ0MywgMTE4ODA0LCA0NDAwNiwgNjk5NywgNjgwMDQsIAotICAgIDEyNjYzMSwgNzg3OSwgODczOSwgMTEwNzUsIDkxNzk3MSwgNjUyMTYsIDcwMTk2LCA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgCi0gICAgMTI4NTQzLCA3ODM5LCA5MjYxMiwgNzg4MDYsIDc1MDY0LCA5NjkxLCA0NDExLCA3ODgwMiwgMTIxMjE5LCAxMjA4NTQsIAotICAgIDQzNDQyLCA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODksIDcyNDE5LCAwLCAwLCAxMzA2MSwgODAxNiwgNzg2ODcsIAotICAgIDE5OTMyLCA2NDgzMSwgMCwgMTEzNjg0LCAxMjM5MCwgMTE5MTcxLCAxNjM0LCA2ODExNSwgNjUwNzAsIDExMDU2LCAKLSAgICA5ODM1NzQsIDExOTkyNSwgOTgzMDk5LCA0MTE2NSwgMTEzMjgsIDEyNDUwLCA5ODM4MTEsIDQxMTY2LCAwLCAxMjQ1NiwgCi0gICAgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgCi0gICAgNzQxNjIsIDExOTMyMCwgMTIwNDgzLCA5OTY5LCAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgCi0gICAgNzg0MjQsIDMyMzAsIDY4NzczLCA5ODM0OTcsIDc1MDI1LCA1MjA5LCAyOTcsIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgCi0gICAgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgCi0gICAgNzg4OTMsIDc0ODE1LCAxMDUxMiwgMCwgNzQ4MTQsIDc4ODc1LCAxMjc1MDUsIDc4ODc2LCAyNTAzLCA3Mzc3OCwgMTc2MiwgCi0gICAgNjk3OTQsIDI0OTUsIDc0OTExLCA1ODQ0LCA2ODAzMSwgMTE4ODM4LCAxMjc5NDcsIDEyNjU0LCA0NjYzLCAxODk5LCAKLSAgICA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCA5Mjk3MiwgMCwgMTE5MDAwLCA4ODkyLCA3ODg3MiwgOTIzMzksIAotICAgIDcxMjMyLCA5ODMwNzMsIDU3ODIsIDQyMCwgMTI3MzQ4LCA5MTc4NzEsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDAsIDEyODUzMywgCi0gICAgNjQ4MTQsIDYzNzk2LCA0Mzg2MSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDEyODQ3OSwgMTIxMTQ0LCA2Mzc5MiwgCi0gICAgNDY1OSwgMTIwNzg4LCA3Nzk3MSwgNDM2NzYsIDc0OTQ0LCA2OTY3MywgMTIxMDI5LCAxMTEyOSwgOTI5MjksIDMyOSwgCi0gICAgNzc5NjgsIDkyNzA3LCA4MzQ5NiwgNzM5OSwgMCwgNDExODgsIDEzMjQ0LCA2NzY5MiwgNDIxNjcsIDc0MzUsIDc4MTkzLCAKLSAgICA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgNDMxMjYsIDc3OTcyLCAwLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIAotICAgIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgNjk2NzYsIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgCi0gICAgNTYwMywgMCwgNDQ3MywgMTIxMDg1LCA3MjQyNiwgMTI0OTQ3LCA2NTM0NywgNjUzNDYsIDY1MzQ1LCAxMjg1NDgsIAotICAgIDExOTIxMywgNTM0NywgNjk4MDIsIDkxNzk3MywgNzM4NjgsIDcwODUyLCAxMDU4OCwgMCwgMCwgNjM3NTUsIDEyODI3MSwgCi0gICAgNTM0MywgNzg0MjIsIDEyMDY2MSwgNDU1NSwgNTM0MSwgODM0NTksIDcwMDcxLCA3NDkxNiwgNTM1MSwgNzg2NzUsIDQzMTA0LCAKLSAgICA2NTI0NCwgMTIxMzY1LCA2NDU0MSwgNDI1MTksIDY4MTM0LCAxMjg5MTYsIDEyNjk4NiwgNzQ3NjUsIDEyODk3OSwgCi0gICAgMTI3NTEwLCA2NjM4LCAwLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIAotICAgIDQyMTcyLCA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCAKLSAgICA2NTM1NSwgNTM0NSwgMTExMDMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgCi0gICAgMTI2NjM1LCAyNDIzLCA3NDUxOCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMTI2NTczLCAxMjg2NzAsIDk4Mzc4NywgCi0gICAgMCwgNjQ2MDUsIDAsIDY4MDc0LCA5ODM5NzcsIDQ5MTYsIDEyODU2OCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCAKLSAgICA2OTc3MywgOTc3MywgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgODM0NTAsIDEwNjg0LCAwLCAKLSAgICAxMjUwNjMsIDkyOTA2LCA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAwLCAxMjgyMDcsIDAsIDk4MzY1NCwgCi0gICAgOTAwNSwgMTIyNSwgNjYzMCwgMCwgMCwgMTE4ODU0LCA2ODAxMSwgODg0NywgOTIzNzEsIDY1ODc2LCA1NTM1LCA4MzI5LCAKLSAgICA3NDU5MCwgMTI1MDM2LCA5MjYwOSwgMCwgNjY4NzQsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgMTIxMjExLCA1NjA3LCAKLSAgICA0MTA4OSwgMTI4NjI2LCAwLCA3MDI5MiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgODc2NCwgMTIwNDU5LCAKLSAgICA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDY3MjcxLCA2NTAxMSwgNDEwOTAsIDAsIDgzNDE3LCAxMTg4LCA3MjU0LCAKLSAgICAxMTAwLCAwLCA2NzI3MCwgNDEwODEsIDI5MTIsIDExNzQ5LCA2NzI4MiwgNjcyODEsIDY3MjgwLCAzNTcyLCAxMDAyMywgCi0gICAgNDk1OSwgMTMwNzksIDAsIDY3Mjc1LCA5NzI5LCAxMjUxMTAsIDEyMTA0MiwgNjcyNzgsIDQzMzYxLCAxMjczNTUsIDY3Mjc2LCAKLSAgICAxMTgwMywgNzk5NiwgOTkwNywgNDE0NTAsIDEzMzA0LCA4MzM5MiwgODMzNjksIDQxNDUxLCA4MzM3MCwgMTEwOTUsIDgyNzMsIAotICAgIDc0MzIyLCAzNDUxLCA3MDI5MSwgOTcyLCA0MTQ1MywgNjgxNjQsIDExOTMyNywgNzM4ODMsIDY4MDIyLCA3Mzk0NSwgCi0gICAgODMzNjMsIDIyODgsIDE5OTU1LCA5NTM4LCA4MzM2NiwgNjk4MDcsIDAsIDEyOTA5NSwgMCwgODMzODEsIDExMzk2LCAKLSAgICA4MzM4NSwgMTEwMTksIDAsIDEyODQxNiwgMTIxMjA1LCA2ODAyMCwgNDEwNzgsIDcxMzY1LCAyNjEsIDU5MjcsIDc3OTEsIAotICAgIDEyODY4MSwgNzM2MiwgMCwgMTA2OTYsIDcwMTI0LCA2MDczLCA5ODM4LCAxMTg5MjAsIDAsIDYwNzUsIDkzOTk1LCAyODIsIAotICAgIDExOTE3OCwgNjQzNywgNjg4MzAsIDEyMTQ1OSwgOTgwMSwgNjYzOTksIDc0MTc3LCAwLCA5MTc5NTksIDM0NzQsIDY3Mjg3LCAKLSAgICAwLCA2NzI4NiwgNjA4MSwgODM0NjksIDc4ODc0LCA2NzI4OSwgNjcyODMsIDgzNDcxLCA3MDAwMiwgNDI5MzAsIDAsIAotICAgIDkzMDEzLCA4NzUxLCAxMTQ5OSwgNjcyOTcsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgNjcyOTgsIDEyMDI3MiwgCi0gICAgNjgwMTcsIDk2NDIsIDEwOTEyLCA5NTgsIDY3MjkzLCAxMTM4NywgNjcyOTEsIDQ2NjYsIDcwNzkyLCA0OTE1LCA2NzcxNSwgCi0gICAgNDY2OSwgMCwgNjgwOTksIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCA3NTA1MywgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAKLSAgICAwLCA5MTc4NzUsIDg2NjQsIDk2OTcsIDM2MDYsIDgzNDQ2LCA5ODM5NzgsIDkxNzg3NCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgCi0gICAgNjczMTIsIDk3NzIsIDcyNTUsIDg4ODYsIDEzODksIDEyNzkzMiwgMTIwMjU3LCAxMjAyNTgsIDEyMDI1OSwgMTI5NDEsIAotICAgIDQyNjYxLCA4MzQzOCwgMTIwMjU1LCAxMjAyNTYsIDEyMzAxLCA2NzgzNiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCAKLSAgICA2NjYwMiwgMTIwMjY0LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCA3MDM0MCwgODM0MzcsIDg2MDgsIAotICAgIDQyNzg5LCAxMjA2MTMsIDgzNDM2LCAwLCA3MTkwNiwgMTEzMDcsIDY2NzA3LCA2NzMwMSwgNjczMDAsIDExNzQ1LCA3OTE5LCAKLSAgICA2NzMwNCwgMTY0MSwgMCwgMCwgODk2NiwgMTI4OTAwLCA3NDkxOSwgNTkwOCwgNzE4NzAsIDY3ODUzLCA2NzQ0LCA2NzMxMCwgCi0gICAgMTY5OSwgNjczMDgsIDY3MzA3LCA2NzMxNCwgNjczMTMsIDYzMDYsIDEwMTY5LCA3MTMyNCwgMTE5MjUxLCAxMDA2OCwgCi0gICAgMzc2NiwgMjM4OSwgNjczMDUsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCA5ODM4MTUsIAotICAgIDk0MzYsIDI1OTksIDAsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIDEwNTQxLCA1NjIyLCAKLSAgICAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCA5MTc4MzcsIDQxNDM1LCA0MzUyLCA2NzMyNCwgCi0gICAgMjQzNSwgNzEyMTEsIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgMTIwNDQ3LCAKLSAgICAzNzY4LCA0MTc3NCwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgNDU2NCwgCi0gICAgMTE5MDQ5LCA3NDYyMywgNzQyNzEsIDczNzUzLCA4Mzc0LCAxMjcyMDEsIDAsIDY4MjksIDUyMjUsIDY2OTAxLCAxMjczODUsIAotICAgIDAsIDAsIDExOTYxNSwgNjczMTksIDY3MzE4LCAzMTYyLCA0MzUwNywgMTE3NzEsIDY3MzIyLCA2NzMyMSwgNjczMjAsIAotICAgIDQyNjE0LCA1MzUzLCA1NjI1LCA3NDE3OSwgNjczMTUsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCAKLSAgICA2OTk0MiwgNjk1MiwgNjczMjksIDY3MzI4LCA2NzMyNywgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCA1NjMyLCAKLSAgICAxMDQ3MSwgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCA0NzcyLCAKLSAgICAyNDAwLCA1NjI3LCAxMjAwMTcsIDY3MzMwLCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDExMzY5MywgMjAzLCAKLSAgICA3NDM2NSwgMCwgMCwgNjk5ODUsIDc4MzUwLCAxMTM3MDMsIDY0Mzc4LCA0MjA1NCwgMTI4NTc1LCAwLCA1NTQsIDExOTY0OSwgCi0gICAgMTEzNTgsIDcxMTcyLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAxMjUxMTQsIDczODkxLCA4MzQyMywgODMwMTksIDU2OTQsIAotICAgIDc2ODksIDY5Nzk4LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAxMjA5NjIsIDkzMDI5LCA2OTc2NCwgMCwgMCwgCi0gICAgMTI0MywgNDIxNTQsIDU0MzEsIDY2NTIsIDkxNzU2MSwgNjc3NTMsIDQzNjUxLCAxMjkxMjksIDY4MTE4LCA2ODA5MywgCi0gICAgMTEyOSwgMTI2NTc0LCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDc1MDU4LCA2NTI1NSwgOTM5OTIsIAotICAgIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQxMzYsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCA3NzU2LCAKLSAgICAxMjM0MiwgMTIwNjk3LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDcxMzE4LCA0NTYsIDcwMjYsIDgxNDUsIDExNjgsIAotICAgIDkyNTEsIDkwODIsIDExOTk2NCwgNjQwNTUsIDQyNzgxLCAzODY2LCAxMjMyMywgNDE1MTIsIDczODA1LCA2ODEyMSwgCi0gICAgOTE3ODUwLCA0MTQ5NCwgOTIzMTYsIDQ2NjAsIDY3MTE0LCAxMDQwNSwgMTI3MTk1LCA3ODgwMywgMCwgMTI5MTc2LCAKLSAgICA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIAotICAgIDc4ODY3LCA4MjE0LCA4MzQyMSwgMTEzNzg0LCAxMjAwMzcsIDQxNDU3LCA5ODM5NzAsIDExOTU4OSwgMTk2OSwgMjM4NCwgCi0gICAgODA5NywgMTI4MDE5LCA3NDEzLCA2ODAxMiwgNzgwMjksIDg3NjYsIDQzODY0LCA3ODA3OSwgNTg1NCwgMTI1MDAwLCAKLSAgICAxMDU4MywgMCwgMTE5OTg5LCAxMjc1NTYsIDEwNDE2LCA2ODA3MCwgMzg3MiwgODM0MjQsIDk4MzgzOSwgODQyOSwgCi0gICAgMTIxMjMwLCAxMTg4MDYsIDI4MzgsIDY0MjksIDAsIDgzNDI2LCAwLCAxMjg0NzgsIDAsIDE5NDYyMCwgOTQwMDUsIDExMDk2LCAKLSAgICA4MzQyMiwgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCA2NzgxOSwgNzM3NDIsIDY2LCAKLSAgICA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCA4MiwgODEsIDg0LCAKLSAgICA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgODU1NiwgCi0gICAgOTE3OTc1LCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCA0NTAzLCAxMTM1MywgOTY0NywgMTI1MDE1LCA3ODE4NSwgMTI4OTU5LCAKLSAgICAwLCA3MTQzNywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgODMzNjQsIDkxMDksIDc4ODgyLCAxMjg5LCAKLSAgICA2NDU5OSwgMTE4OTE1LCA2ODAwOSwgMTI4MzAyLCA2NTUwNywgMjQ0NywgMTE5OTExLCAxMjg2OTQsIDEyODA0MiwgCi0gICAgMTI2NTQ1LCA2NjU4OSwgMCwgNjMzNCwgMTI4MzY5LCAwLCAxOTkzNywgOTE3NzkzLCAxMzIyLCA5MjM1OSwgNTY3NSwgMjU0LCAKLSAgICAwLCAwLCA2OTY4NiwgNDI0MjUsIDg5MTgsIDY0MDAzLCA1NzE2LCA0MjMxMiwgMCwgMTk0NjkyLCA2OTcyLCA0MjgyNiwgCi0gICAgNzQ0MDksIDQyNDY0LCAxMjA1NjcsIDY2ODk5LCA2NzE1NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMTI4ODA1LCA2NzY4NywgCi0gICAgNjU0MjksIDk1MTUsIDQ0MzUsIDAsIDQyNTIyLCAwLCA2ODAwOCwgMTE3ODUsIDc0MTIsIDQzODY3LCA0MTk3OCwgMTQxMiwgCi0gICAgNDU5NCwgMTM5MSwgMTA1MzYsIDgwNjcsIDk5MDEsIDcxMDMsIDEyODI5MywgNzEwMiwgNzE0MjgsIDEyMDc0OCwgMzE0MCwgCi0gICAgMTI3Mjc2LCA3OTYwLCA0MzI3MSwgMTIxMDk5LCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgMTI0NzIsIDY3MjU0LCAKLSAgICA2NzI1MywgNzY5OSwgMTIzOTMsIDY3MjU3LCAwLCA2NzI1NiwgNjcyNTUsIDgyMjMsIDAsIDQyNjEsIDEyMTQ2MCwgCi0gICAgMTIwOTEwLCA3NDMwOCwgOTgzODI3LCAxMTM3MTIsIDY3MTUzLCA5ODM1NzEsIDEyODA0NiwgNDM0MTksIDk4MzQ3MSwgCi0gICAgNjQ1NTQsIDEwNTc0LCAzODc4LCA2NzY5MSwgNDIzNTIsIDE3NTIsIDczNzg1LCAxMjgxNzEsIDQyNTA2LCAxMjg1NDEsIAotICAgIDEwMTk5LCA5MTc4NjUsIDEyNTE0MiwgNjgwMjEsIDY1OTE5LCAwLCA2Njk1LCA3MjAsIDMyNCwgMCwgMTI5MDM1LCA0MzQwNiwgCi0gICAgOTgzNzM2LCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDY4MDgyLCA2NDQ4OCwgMTI4OTc3LCAxMjA5NTEsIAotICAgIDY0MDQxLCA3NDc4NywgMCwgNzg4NjUsIDkyMjU4LCA2NTU5NywgMTIxNDE2LCA3ODg2MywgMCwgMTMwMiwgNjYyODgsIAotICAgIDc4ODYxLCAxMTkxMzQsIDAsIDY3MTUyLCA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAxMjA5MjMsIDM5OTUsIDY4MzYwLCAKLSAgICA2NTYwOCwgMzcxNCwgOTIxOTAsIDEyMDAyNiwgNjcyNjIsIDEwOTk5LCAxMTc1MCwgNjcyNTksIDQzMjUxLCA2NzI2NCwgCi0gICAgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIDExOTY0LCAxMjEyNjgsIDEyODAxNCwgOTIxNzMsIDAsIAotICAgIDY4NDU1LCA0Mjg2MywgNzM4MzksIDEyNzUyOSwgMCwgNjc3MDAsIDkxNzgxMiwgMTEzNzAxLCA0MzY0NSwgNDY4LCA2MTIsIAotICAgIDAsIDY0NDAxLCA2NjQ0OCwgNjgzNzYsIDAsIDE2NzQsIDAsIDU4MjMsIDEyODYyNSwgMTIyODAsIDcwMzY3LCA1NDAsIAotICAgIDc0NTY0LCAxMTkwMTcsIDY2NDIyLCA4NDMyLCA3ODg3MywgMTEwNzMsIDAsIDY0MzE2LCAwLCAxMjEwNzAsIDgyMCwgCisgICAgMTIxMTgwLCAxMjg4NjYsIDQzNDMxLCAxMjcwOTcsIDkyNDEzLCA4NzE1LCA5ODMzOTgsIDQxMTc5LCA5ODMzNTgsIDQzMzEzLCAKKyAgICAxMjAyMzAsIDQxMTc2LCAxMDEwMDcsIDk5NCwgMTAwNDQ4LCA4NDUyLCA3Nzk3MywgNzM5NjYsIDY2ODkwLCA3MDgxMiwgCisgICAgNTkyMSwgMTAwODA0LCAyNTk3LCA2Njc3NiwgNTkyMiwgMTE4OTAzLCA2Njg3MywgNDE4NiwgOTI1MzEsIDczNzQxLCAKKyAgICAxMjcxMDUsIDY3MTgsIDEyNzAyOSwgNDQwNiwgNzQ2MDEsIDg0ODAsIDkxOTIsIDk3NDcsIDEyMTA0MCwgNDQxMywgOTIxOTYsIAorICAgIDQyMjY4LCAzMTk4LCA1OTI0LCA1OTIwLCA5MjQ2OSwgNjkyMSwgNzgwODEsIDc0MDA3LCA0Mjg2OSwgODQxOCwgMTE2ODEsIAorICAgIDQzMTY5LCAxMDE3NiwgOTgzNjQwLCA3NDIsIDc0ODgxLCAyODkzLCAxMDc3MiwgNjUyNzYsIDU5MzcsIDE5MTQsIDI1NTMsIAorICAgIDExNjgyLCA2NzU2LCAxMjUxMDQsIDEyMTEyNiwgODM2MywgMCwgMjk5MywgNzc3MiwgMzkxNiwgNDMwMSwgMTAwNTE3LCAKKyAgICAxMTQxLCA0MjQwNywgNzQxNywgNzE4LCA3NTcyLCA5NzMsIDEwMDUwMCwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgCisgICAgMTI1MDk5LCA4MDE4LCA0MjMzMywgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIDY1MzkwLCAxMDA2NywgCisgICAgMTAwODY4LCAxMjAyLCAxMDA1NTcsIDEyODM2NCwgNjU4NjMsIDExOTI1MCwgNjg0ODQsIDk0MDEzLCA3ODE4MiwgNjQ1NDIsIAorICAgIDMyNjAsIDczODI5LCA2NTM4OCwgOTk0NSwgODQxOSwgNzgwNDIsIDY3MzgsIDEyMjg4MiwgNDM2ODEsIDY5NzI4LCAyMDU5LCAKKyAgICA5MjQyMiwgMTAwNTAyLCA1NTIzNywgMTQzMSwgMTAwNTAzLCA2NjU2NSwgMTA4MjEsIDEwMDUwOCwgMTI4MDQsIDEwMDUxMCwgCisgICAgODIyOSwgMTIzNSwgMzMwNywgMTE0NzIsIDc4MDg5LCA3ODE4NCwgNDU0NCwgNzEyMjgsIDE5NDYyNiwgMTI5MTg4LCAxNzQwLCAKKyAgICA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIDcxMjI2LCAxMDE0MSwgNzQ5MjIsIAorICAgIDYzNzYxLCA4Nzg1LCA0NDc2LCA2NTA3MSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA5MTQ3LCA3ODEwNiwgNzgxMDMsIDc4MTA0LCAKKyAgICAxMjA4OTgsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMTI3OTc5LCAxMjcxNjAsIDk4MzEyNywgNDE1NzMsIAorICAgIDgzMTYwLCAzOTMxLCAxMjAyOTUsIDc0MTQzLCA4MzE1NiwgODMxNTcsIDgzMTU4LCA3ODQ2MCwgMTE5ODIsIDk4MzQ4MywgCisgICAgODMwNjcsIDEyODM4MSwgOTI3MTIsIDY0NDg0LCAxMTkyNjYsIDQxMTY3LCA5ODMzNjYsIDQxNzM1LCA5NDAxOSwgNzE3LCAKKyAgICAxMDc1NCwgNzI3NDAsIDgzMTY5LCA3MjQxMywgODMxNjMsIDYzNzY3LCA4MzE2NSwgMTc4MCwgNjkzNiwgMCwgODMxNjEsIAorICAgIDgxOSwgMTA2MTEsIDk2OTQsIDEyNTIyOCwgNzE0NzQsIDAsIDEyNzg3MSwgMTI5MDY5LCA4MzQzLCA4MzQyLCA4MzQ1LCAKKyAgICA4MzQ0LCA2NTc4LCA3MDA5LCA3NTIzLCA2OTIyLCA4MzQ4LCA4MzQ3LCA3NTI1LCAzMzQ2LCA4MzM5LCAxMjgxNjUsIAorICAgIDcyNzA1LCA1NzUsIDI2OCwgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIDY1NTY1LCA4MzM2LCA1OTM2LCAKKyAgICA3MjkwLCA3ODExNywgODMzNywgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgODMxNTEsIDc4MTIzLCA2NTQ2NiwgMTEwOTAsIAorICAgIDY5NTMsIDEyNTI0MCwgODMzNzUsIDc0OTczLCA3ODEzMiwgNTkyNiwgNjgyNTAsIDc4MTMwLCA3ODEyNiwgNzgxMjcsIAorICAgIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDk4MzU1OSwgCisgICAgNjU3NDIsIDEyODc0LCAxMDA0NzMsIDExNTkwLCAxMDA0NzUsIDc0MDQ4LCA2NzM3OSwgODU5NSwgOTgzNSwgMTAwNDU2LCAKKyAgICA0MzcwMywgMTMwOTcsIDEyNzE5NywgNjQ2NDMsIDEzMjgzLCAxMjY5NywgNzQ5NzUsIDEyMzgxLCAzNDg4LCA1OTMzLCAKKyAgICAxMDAzMywgNzExMDEsIDY2MjQxLCA2NTU3MCwgNzgzMzYsIDEyMjk3LCA3MTIxMiwgMTk1NSwgMTI3OTcwLCA1MzQ5LCAKKyAgICA0MjUzOCwgMCwgMTI0OTMyLCA3NDExLCA5NDYyLCAxMjgxNTAsIDEwMDQ1MywgMTAwNDUyLCA0MzkyMCwgNDI3MzYsIAorICAgIDcwNzQ3LCA1NzU2LCAxMjgzMjQsIDc2MzgsIDQxNjQyLCA0Mjc2NCwgMTIwNDQ0LCA0MzEwOSwgNzYzNywgNTc1MiwgCisgICAgMTEyMTMsIDgzNDgxLCA3MzgzMiwgMTAwNDYzLCA4MzQ4NiwgMTAwNDY1LCA3ODMzNCwgMTIxMDM0LCA3NjM2LCA2NTE3MSwgCisgICAgOTEyNCwgOTE3OTU3LCA3ODg5MiwgMTIwNzk4LCAyOTEsIDAsIDgzNDg4LCAyMDI3LCA2NjIzMCwgMTAwODAsIDc4MTM2LCAKKyAgICAxMDQwMywgNzA4NjksIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCAxMTE4MywgMTIwNDMxLCAxMjA0MzAsIDk4MzIyMywgCisgICAgMTI4MzUxLCA3Mjg0NSwgMTI3MTM4LCAwLCA5MjQ5OSwgMCwgMTE5MDk0LCA3NDIxMywgNzgyNCwgMCwgMTk0NjQ4LCAKKyAgICA0MTI3NCwgNTc3OCwgNjMwMiwgMTAwMzY3LCAwLCAxMjY4MCwgMTE5MTMwLCAxNDE3LCA2NzI0MiwgOTMwNDEsIDk0NTIsIAorICAgIDEyODE1MywgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDEyMTM4MCwgNjUzOTEsIDEyODYxNCwgMTAxNzIsIDY1NDUzLCAKKyAgICA2Mzc4OSwgNDEyNjQsIDc4NjU4LCA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIAorICAgIDQxMjY5LCAxMjA0MTIsIDQxMjY3LCA0NjQ2LCA2Nzc1OSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgCisgICAgNzgyNzAsIDEyNzk4MiwgOTgzMTcyLCA0Mzk0OCwgMTk1MTAwLCA2ODg0MCwgNzg2NzQsIDE2NTksIDkxOSwgNDI3ODQsIAorICAgIDE2NzEsIDEyNzg5MiwgNjA2OSwgOTIxOSwgMTAwNDYxLCAxNjYxLCAxMzEyMCwgNjM3ODQsIDY5ODE5LCAxMDE0MCwgOTcxMywgCisgICAgMTE5MTQzLCA5ODMzNTksIDcxNDYyLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgCisgICAgMTE5NTY3LCA2NzcwNSwgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCA5ODM2MjksIAorICAgIDEyNzc3MCwgODM0NzQsIDEwMjI5LCAxMDYzNSwgODI2LCA4MzQ3NSwgMTk1MDgyLCA5MjYwMywgMTIxMTQ5LCA3MTQ1NSwgCisgICAgNjQ4MywgOTIyMTEsIDE4MDgsIDc4NDgsIDExMzc4OCwgODEwMCwgNzgyMjcsIDcxMTk4LCA3ODY3MCwgMTMzMDEsIDc4NjY3LCAKKyAgICA5NjY3LCA3ODY2NSwgNjc3MDQsIDk4MzkyMSwgMTEwMDMsIDk5MDQsIDgzNDEwLCA5ODM5MTksIDEyMDY5MCwgOTE0NCwgCisgICAgMTA5MjEsIDkyOTkyLCA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3MTA5MiwgMTAzMTMsIDgzNDA4LCA4MzUwMCwgCisgICAgNjQzMjAsIDEwMjY1LCA2NzI1MiwgMTA5NjIsIDY2OTA0LCA0MzAwOCwgODk0NSwgNzg2ODMsIDEyMDk5NSwgNDEsIAorICAgIDE5NDg2NiwgMTc5MiwgMTIwNTE1LCAxOTUwNzMsIDg2NTUsIDY4MjU0LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCA2NzI1OCwgCisgICAgMzg1LCA0MTUyLCAyNTg1LCAxMjc4MDQsIDExOTA2OCwgMzEyNiwgOTE3ODUyLCA3Mzk4MywgMTA5NTcsIDEyNzAzNywgCisgICAgMTExNjAsIDExOTExNiwgMTI3ODczLCAxMzE1NywgOTgzNjQ1LCAxMjgwMjQsIDM1NzAsIDEyOTE4NywgNzQ0MywgMTE4ODA0LCAKKyAgICA0NDAwNiwgNjk5NywgNjgwMDQsIDEyNjYzMSwgNzg3OSwgODczOSwgMTEwNzUsIDE5NTA0NiwgNjUyMTYsIDcwMTk2LCAKKyAgICA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgMTI4NTQzLCA3ODM5LCA5MjYxMiwgNzg4MDYsIDc1MDY0LCA5NjkxLCA0NDExLCAKKyAgICA3MTI3NiwgNzI4MzcsIDEyMDg1NCwgNDM0NDIsIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDEyMjg5NywgNzI0MTksIDEyMTQxMSwgCisgICAgMTIwODg2LCAxMzA2MSwgODAxNiwgNzg2ODcsIDE5OTMyLCA2NDgzMSwgMTk0OTc1LCAxMTM2ODQsIDEyMzkwLCAxMTkxNzEsIAorICAgIDE2MzQsIDY4MTE1LCA2NTA3MCwgMTEwNTYsIDk4MzU3NCwgMTE5OTI1LCA5ODMwOTksIDQxMTY1LCAxMTMyOCwgMTI0NTAsIAorICAgIDk4MzgxMSwgNDExNjYsIDkzOTcxLCAxMjQ1NiwgMTE5MTk0LCAxNzEsIDU5NDEsIDEyNDUyLCAxOTQ3MDksIDEyNDU4LCAKKyAgICAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDExOTMyMCwgMTIwNDgzLCA5OTY5LCAxMjA3NjcsIDEyNDU0LCAKKyAgICA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDY4NzczLCAxMjg1OTUsIDc1MDI1LCA1MjA5LCAyOTcsIAorICAgIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIAorICAgIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgNzg4OTMsIDc0ODE1LCAxMDUxMiwgMCwgNzI4NjYsIDc4ODc1LCA3ODA0OSwgCisgICAgNzI4NDEsIDI1MDMsIDczNzc4LCAxNzYyLCA2OTc5NCwgMjQ5NSwgNzQ5MTEsIDU4NDQsIDY4MDMxLCAxMTg4MzgsIAorICAgIDEyNzk0NywgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDkyOTcyLCAKKyAgICAxMjA0MjQsIDcxMjcyLCA4ODkyLCA3ODg3MiwgOTIzMzksIDcxMjMyLCA5ODMwNzMsIDU3ODIsIDQyMCwgMTI3MzQ4LCAKKyAgICA5MTc4NzEsIDQzNzk2LCAxMDc5NywgNjM3OTQsIDE5NDk2NywgMTI1MjIzLCA2NDgxNCwgNjM3OTYsIDQzODYxLCAwLCAKKyAgICA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMTI4NDc5LCAxMjExNDQsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIDc3OTcxLCA0MzY3NiwgCisgICAgNzQ5NDQsIDY5NjczLCAxMjEwMjksIDExMTI5LCA5MjkyOSwgMzI5LCA3Nzk2OCwgOTI3MDcsIDgzNDk2LCA3Mzk5LCAwLCAKKyAgICA0MTE4OCwgMTMyNDQsIDY3NjkyLCA0MjE2NywgNzQzNSwgNzgxOTMsIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIAorICAgIDExMzY1LCA0MzEyNiwgNzc5NzIsIDEyMDg2MiwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIAorICAgIDc5ODcsIDY5Njc2LCAxMTcyLCA2OTc5OSwgNjc4NiwgNDM2MDEsIDEyMDQ3NiwgNzQxMjYsIDU2MDMsIDAsIDQ0NzMsIAorICAgIDEyMTA4NSwgNzI0MjYsIDEyNDk0NywgNjUzNDcsIDY1MzQ2LCA2NTM0NSwgMTI4NTQ4LCA2Njc0MSwgNTM0NywgNjk4MDIsIAorICAgIDkxNzk3MywgNzM4NjgsIDcwODUyLCAxMDU4OCwgMCwgMTI4NDIwLCA2Mzc1NSwgMTI2NjQzLCA1MzQzLCA3ODQyMiwgCisgICAgMTIwNjYxLCA0NTU1LCA1MzQxLCA4MzQ1OSwgNzAwNzEsIDc0OTE2LCA1MzUxLCA3ODY3NSwgNDMxMDQsIDY1MjQ0LCAKKyAgICAxMjEzNjUsIDY0NTQxLCA0MjUxOSwgNjgxMzQsIDEyODkxNiwgMTI2OTg2LCA3NDc2NSwgNjY3ODUsIDEyNzUxMCwgNjYzOCwgCisgICAgMTI5MzYzLCA2NTExMywgMjcxLCA3NDE4MCwgNjUzNzAsIDg4MzUsIDY1MzY4LCAxMjY1MywgNjUzNjYsIDQyMTcyLCAKKyAgICA0MTA4NiwgNjUzNjMsIDY1MzYyLCA2NTM2MSwgMTE5MTIsIDQzNDEwLCAxMTMyMywgNjUzNTcsIDExODAwLCA2NTM1NSwgCisgICAgNTM0NSwgMTExMDMsIDY1MzUyLCA2NTM1MSwgNzYxLCA2NTM0OSwgMTk5NTksIDY5NzE4LCA2Mzg1NiwgMTI2NjM1LCAyNDIzLCAKKyAgICA3NDUxOCwgNjQ2NDcsIDc3OTU5LCAxMTk1NywgNDY5OSwgMTI2NTczLCAxMjg2NzAsIDk4Mzc4NywgMCwgNjQ2MDUsIDAsIAorICAgIDY4MDc0LCAxMjczMDcsIDQ5MTYsIDEyODU2OCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgCisgICAgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgNjY3MzcsIDEwNjg0LCAxMjI5MTMsIDEyNTA2MywgCisgICAgOTI5MDYsIDc5NDYsIDEyNTQxLCA4MTgyLCA2NzU4NiwgNjk3ODAsIDEyOTQyMiwgMTI4MjA3LCA5ODM2NDQsIDEyODYxMywgCisgICAgOTAwNSwgMTIyNSwgNjYzMCwgMCwgOTgzNDkxLCAxMTg4NTQsIDY4MDExLCA4ODQ3LCA5MjM3MSwgNjU4NzYsIDU1MzUsIAorICAgIDgzMjksIDc0NTkwLCAxMjUwMzYsIDkyNjA5LCAwLCA2Njg3NCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAxMjEyMTEsIAorICAgIDU2MDcsIDQxMDg5LCAxMjg2MjYsIDk4MzM5NiwgNzAyOTIsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIAorICAgIDg3NjQsIDEyMDQ1OSwgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCA2NzI3MSwgNjUwMTEsIDQxMDkwLCAwLCA4MzQxNywgCisgICAgMTE4OCwgNzI1NCwgMTEwMCwgMTI5MTgwLCA2NzI3MCwgNDEwODEsIDI5MTIsIDExNzQ5LCA2NzI4MiwgNjcyODEsIDY3MjgwLCAKKyAgICAzNTcyLCAxMDAyMywgNDk1OSwgMTMwNzksIDEyNDk3OCwgNjcyNzUsIDk3MjksIDEyNTExMCwgMTIxMDQyLCA2NzI3OCwgCisgICAgNDMzNjEsIDEyNzM1NSwgNjcyNzYsIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgMTMzMDQsIDgzMzkyLCA4MzM2OSwgCisgICAgNDE0NTEsIDgzMzcwLCAxMTA5NSwgODI3MywgNzQzMjIsIDM0NTEsIDcwMjkxLCA5NzIsIDQxNDUzLCA2ODE2NCwgMTE5MzI3LCAKKyAgICA3Mzg4MywgNjgwMjIsIDczOTQ1LCA4MzM2MywgMjI4OCwgMTk5NTUsIDk1MzgsIDgzMzY2LCA2OTgwNywgMTI1MjQ2LCAKKyAgICAxMjkwOTUsIDAsIDgzMzgxLCAxMTM5NiwgODMzODUsIDExMDE5LCAxMjEyMTgsIDEyODQxNiwgMTIxMjA1LCA2ODAyMCwgCisgICAgNDEwNzgsIDY2NzU4LCAyNjEsIDU5MjcsIDc3OTEsIDEyODY4MSwgNzM2MiwgMTI1MjU2LCAxMDY5NiwgNzAxMjQsIDYwNzMsIAorICAgIDk4MzgsIDExODkyMCwgOTE3ODc4LCA2MDc1LCA5Mzk5NSwgMjgyLCAxMTkxNzgsIDY0MzcsIDY4ODMwLCAxMjE0NTksIAorICAgIDk4MDEsIDY2Mzk5LCA3NDE3NywgNjY3OTEsIDkxNzk1OSwgMzQ3NCwgNjcyODcsIDAsIDY3Mjg2LCA2MDgxLCA4MzQ2OSwgCisgICAgNzg4NzQsIDY3Mjg5LCA2NzI4MywgODM0NzEsIDcwMDAyLCA0MjkzMCwgMTI5NDEzLCA5MzAxMywgODc1MSwgMTE0OTksIAorICAgIDY3Mjk3LCA3ODE2LCAxMjYzNiwgNDY2NSwgMTI2MjgsIDQ2NzAsIDY3Mjk4LCAxMjAyNzIsIDY4MDE3LCA5NjQyLCAxMDkxMiwgCisgICAgOTU4LCA2NzI5MywgMTEzODcsIDY3MjkxLCA0NjY2LCA3MDc5MiwgNDkxNSwgNjc3MTUsIDQ2NjksIDAsIDY4MDk5LCAKKyAgICAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgNzUwNTMsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgNzQxNzMsIDkxNzg3NSwgCisgICAgODY2NCwgOTY5NywgMzYwNiwgODM0NDYsIDk4Mzk3OCwgOTE3ODc0LCA2NDgxNSwgMTA2MywgMTE5MDg4LCA2NzMxMiwgCisgICAgOTc3MiwgNzI1NSwgODg4NiwgMTM4OSwgMTAwODMzLCAxMjAyNTcsIDExOTIwMiwgMTIwMjU5LCAxMjk0MSwgNDI2NjEsIAorICAgIDgzNDM4LCAxMjAyNTUsIDEwMTEwMSwgMTIzMDEsIDY3ODM2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIDY2NjAyLCAKKyAgICA2Njc4OCwgMTAxNywgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgNzAzNDAsIDY2NzkzLCA4NjA4LCA0Mjc4OSwgCisgICAgNzA4NjgsIDgzNDM2LCA5ODM0ODAsIDcxOTA2LCAxMTMwNywgNjY3MDcsIDY3MzAxLCA2NzMwMCwgMTE3NDUsIDc5MTksIAorICAgIDY3MzA0LCAxNjQxLCAxMjY1MjMsIDAsIDg5NjYsIDEyODkwMCwgNzQ5MTksIDU5MDgsIDcxODcwLCA2Nzg1MywgNjc0NCwgCisgICAgNjczMTAsIDE2OTksIDY3MzA4LCA2NzMwNywgNjczMTQsIDY3MzEzLCA2MzA2LCAxMDE2OSwgNzEzMjQsIDExOTI1MSwgCisgICAgMTAwNjgsIDM3NjYsIDIzODksIDY3MzA1LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgCisgICAgOTE3OTc0LCA5NDM2LCAyNTk5LCA5ODM3NDcsIDY0OTYsIDk0NDksIDU5MzAsIDExNDc2LCAxMTAzMywgMTE0NDcsIDEwNTQxLCAKKyAgICA1NjIyLCAxMjA0MzYsIDg0NzcsIDM3NjAsIDE3MTgsIDk0NDIsIDY2NDMzLCAzNzc2LCA5MTc4MzcsIDQxNDM1LCA0MzUyLCAKKyAgICA2NzMyNCwgMjQzNSwgNzEyMTEsIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgNDIwNCwgCisgICAgMTIwNDQ3LCAzNzY4LCA0MTc3NCwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAxMjk0NywgCisgICAgNDU2NCwgMTAwNDcwLCA3NDYyMywgNzQyNzEsIDczNzUzLCA4Mzc0LCAxMjcyMDEsIDAsIDY4MjksIDUyMjUsIDY2OTAxLCAKKyAgICAxMjczODUsIDAsIDAsIDExOTYxNSwgNjczMTksIDY3MzE4LCAzMTYyLCA0MzUwNywgMTE3NzEsIDY3MzIyLCA2NzMyMSwgCisgICAgNjczMjAsIDQyNjE0LCA1MzUzLCA1NjI1LCA3NDE3OSwgNjczMTUsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIAorICAgIDY0Mjc3LCA2OTk0MiwgNjk1MiwgNjczMjksIDY3MzI4LCA2NzMyNywgMjU5MCwgNTYyOSwgNjU1NTIsIDc1NTEsIDEwMzI1LCAKKyAgICA1NjMyLCAxMDQ3MSwgMTIwMDM4LCAxMjAwMjcsIDEyMDAyOCwgMTIwMDI1LCA1NjI4LCAxMjAwMzEsIDk3MCwgMTIwMDI5LCAKKyAgICA0NzcyLCAyNDAwLCA1NjI3LCA3NDM2NCwgNjczMzAsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMTEzNjkzLCAyMDMsIAorICAgIDc0MzY1LCAwLCAwLCA2OTk4NSwgNzgzNTAsIDEwMTA2NSwgNjQzNzgsIDQyMDU0LCAxMjg1NzUsIDE5NDk5MywgNTU0LCAKKyAgICA4MzQyMiwgMTEzNTgsIDcxMTcyLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAxMjUxMTQsIDczODkxLCA4MzQyMywgODMwMTksIAorICAgIDU2OTQsIDc2ODksIDY2Nzg0LCA5MzIzLCA0MzI1LCAzMDQ3LCAxMDMxNywgMTc1LCAxMjA5NjIsIDkzMDI5LCA2OTc2NCwgMCwgCisgICAgMTIwNjI1LCAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgOTE3NTYxLCA2Nzc1MywgNDM2NTEsIDEyNzgwMSwgNjgxMTgsIAorICAgIDY4MDkzLCAxMTI5LCA3Mjg0NiwgMTAwNzA3LCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDc1MDU4LCA2NTI1NSwgCisgICAgOTM5OTIsIDM4NDUsIDQ0OTAsIDExODk2OSwgNjY0OSwgNzQxMzYsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAKKyAgICA5ODM2MTIsIDc3NTYsIDEyMzQyLCAxMjA2OTcsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgNzEzMTgsIDQ1NiwgNzAyNiwgCisgICAgODE0NSwgMTE2OCwgOTI1MSwgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIAorICAgIDY4MTIxLCA5MTc4NTAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgNjcxMTQsIDEwNDA1LCAxMjcxOTUsIDc4ODAzLCAxMDA0MzksIAorICAgIDEyOTE3NiwgNDIwNDAsIDczOTE4LCAxMTk2MjcsIDc5NDQsIDQxNDU0LCAxMjYwNSwgMCwgNDIyMDUsIDQxNDU1LCAyMzYsIAorICAgIDY0MDUxLCA3ODg2NywgODIxNCwgODM0MjEsIDExMzc4NCwgMTIwMDM3LCA0MTQ1NywgOTgzNDgxLCAxMTk1ODksIDE5NjksIAorICAgIDIzODQsIDgwOTcsIDEyODAxOSwgNzQxMywgNjgwMTIsIDcyODIwLCA4NzY2LCA0Mzg2NCwgNzI4MjQsIDU4NTQsIDEyNTAwMCwgCisgICAgMTA1ODMsIDAsIDExOTk4OSwgNzI4MTksIDEwNDE2LCA2ODA3MCwgMzg3MiwgODM0MjQsIDEyNzM5OSwgODQyOSwgMTIxMjMwLCAKKyAgICAxMTg4MDYsIDI4MzgsIDY0MjksIDEyMTA3NywgODM0MjYsIDcyODM1LCAxMDA0MjAsIDAsIDE5NDYyMCwgOTQwMDUsIAorICAgIDExMDk2LCA4MzQyMCwgMTA1NTMsIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCA2NzgxOSwgCisgICAgNzM3NDIsIDY2LCA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCAKKyAgICA4MiwgODEsIDg0LCA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgCisgICAgODU1NiwgOTE3OTc1LCA5NjU5LCAwLCAxMDA3MzYsIDAsIDk1NTYsIDAsIDQ1MDMsIDExMzUzLCA5NjQ3LCAxMjUwMTUsIAorICAgIDY4Mjg4LCAxMjg5NTksIDkxNzk3NiwgNzE0MzcsIDc4ODg2LCA5ODMyODgsIDk4MzQ5NiwgNzQyMjksIDY2NTkzLCA2NDM4LCAKKyAgICA4MzM2NCwgOTEwOSwgNzg4ODIsIDEyODksIDY0NTk5LCAxMTg5MTUsIDY4MDA5LCAxMjgzMDIsIDY1NTA3LCAyNDQ3LCAKKyAgICAxMTk5MTEsIDEyODY5NCwgMTI4MDQyLCAxMjY1NDUsIDY2NTg5LCA5ODM4NzUsIDYzMzQsIDEyODM2OSwgOTE3OTE5LCAKKyAgICAxOTkzNywgOTE3NzkzLCAxMzIyLCA5MjM1OSwgNTY3NSwgMjU0LCAxMjQ5NjQsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgCisgICAgNjQwMDMsIDU3MTYsIDQyMzEyLCAxMjAwOTAsIDEwMDU1MiwgNjk3MiwgNDI4MjYsIDc0NDA5LCA0MjQ2NCwgMTIwNTY3LCAKKyAgICA2Njg5OSwgNjcxNTUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDEyODQzNywgNjc2ODcsIDY1NDI5LCA5NTE1LCA0NDM1LCAKKyAgICA5ODMzNjcsIDQyNTIyLCAwLCA2ODAwOCwgMTE3ODUsIDc0MTIsIDQzODY3LCA0MTk3OCwgMTQxMiwgNDU5NCwgMTM5MSwgCisgICAgMTA1MzYsIDgwNjcsIDk5MDEsIDcxMDMsIDEyODI5MywgNzEwMiwgNzE0MjgsIDEyMDc0OCwgMzE0MCwgMTI3Mjc2LCA3OTYwLCAKKyAgICA0MzI3MSwgMTIxMDk5LCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgMTI0NzIsIDY3MjU0LCA2NzI1MywgNzY5OSwgCisgICAgMTIzOTMsIDY3MjU3LCAwLCA2NzI1NiwgNjcyNTUsIDgyMjMsIDAsIDQyNjEsIDc4Nzg0LCAxMjA5MTAsIDc0MzA4LCAKKyAgICA5ODM4MjcsIDExMzcxMiwgNjcxNTMsIDEyNTI1MiwgNzI3NDQsIDQzNDE5LCA3Mjc0OCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAKKyAgICA2NzY5MSwgNDIzNTIsIDE3NTIsIDczNzg1LCAxMjgxNzEsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCA5MTc4NjUsIDEyNTE0MiwgCisgICAgNjgwMjEsIDY1OTE5LCAxMjcxMDIsIDY2OTUsIDcyMCwgMzI0LCAwLCAxMjkwMzUsIDQzNDA2LCAxMjUyNjksIDE0NjQsIAorICAgIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgNjgwODIsIDY0NDg4LCAxMjg5NzcsIDEyMDk1MSwgMzQyMCwgNzQ3ODcsIDAsIAorICAgIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDEyMTQxNiwgNzg4NjMsIDAsIDEzMDIsIDY2Mjg4LCA3ODg2MSwgMTE5MTM0LCAKKyAgICAxMjAyNzQsIDY3MTUyLCA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAxMjA5MjMsIDM5OTUsIDY4MzYwLCA2NTYwOCwgCisgICAgMzcxNCwgOTIxOTAsIDEyMDAyNiwgNjcyNjIsIDEwOTk5LCAxMTc1MCwgNjcyNTksIDQzMjUxLCA2NzI2NCwgNDMzMDEsIDAsIAorICAgIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIDExOTY0LCAxMjEyNjgsIDEyODAxNCwgOTIxNzMsIDEyMDcxMCwgNjg0NTUsIAorICAgIDQyODYzLCA3MzgzOSwgMTE5OTI5LCAwLCA2NzcwMCwgOTE3ODEyLCAxMTM3MDEsIDQzNjQ1LCA0NjgsIDYxMiwgMCwgCisgICAgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMTI4MjA4LCAxNjc0LCA5MTc1ODEsIDU4MjMsIDEyODYyNSwgMTIyODAsIDcwMzY3LCAKKyAgICA1NDAsIDc0NTY0LCAxMTkwMTcsIDY2NDIyLCA4NDMyLCA3ODg3MywgMTEwNzMsIDAsIDY0MzE2LCAwLCAxMjEwMDEsIDgyMCwgCiAgICAgNDE3NDEsIDk4MzQ3NywgMTIwNjY3LCAxMjQ5ODEsIDY0Njg0LCAxMjY5OTIsIDMzNTksIDc4MDAsIDY5OTM0LCA2NTE3NywgCiAgICAgNjIyNiwgMzUzLCAxMjM5NiwgMTIxMTc2LCAxMTk2MTIsIDY0NzQyLCAxMjg2ODIsIDc4ODc5LCA5ODM0NzgsIDEyNzkzOCwgCi0gICAgMTI0MTIsIDE5OTQxLCAwLCAxMjAyNzcsIDcwMzUyLCAxODg0LCA5NDgxLCA0MjQxOCwgNzAwNTksIDQxMTU3LCA5ODMxNDIsIAotICAgIDExOTUsIDY0ODk4LCA3OTI0LCAxMTk4NzAsIDQxMTUxLCAyMDEwLCA3MTQzMCwgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgCi0gICAgNDM2MCwgMTIxMDIzLCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgOTE3NjMxLCA0MjUyMSwgODUzOSwgMTI4NjA2LCAwLCAKLSAgICAxMTg5ODYsIDEyNzE0OCwgNDc4OCwgMTIxMzQ1LCA2ODAyMywgNjU3MzQsIDk4MzQ1NywgNDM3OTAsIDEyMDI3NCwgMTMwNzUsIAotICAgIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgMTI3MTk3LCAxMTg5MDEsIDY4NjM3LCA0MTEzNiwgCi0gICAgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTEzNzMxLCA1MTI4LCA0MDM4LCA0MTE0MywgNjU2MDQsIDY0ODU5LCAKLSAgICA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgNjcyOTUsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAxMjcwOSwgNjk4NiwgCi0gICAgOTIzNjQsIDY4MDE1LCAxMjA1MzMsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgMTAyNTQsIAotICAgIDExMzY4MSwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDEyMDg3MCwgNjA3LCAwLCA2ODE4MiwgMTI4ODQ2LCAxMjkyMywgCi0gICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDEyOTE0OSwgNzg2MzksIDQwOTc1LCAKLSAgICA1ODQwLCA0MjgzOCwgNzQ5ODcsIDQwOTc4LCAxMjEzODYsIDkyOTQ1LCAxMjgwMjAsIDExOTgwOSwgMCwgNjY0NDQsIAotICAgIDEwNTM4LCAxMjA4MTAsIDI1NTAsIDExOTgzNiwgNjc3OSwgMTI5MTMwLCAwLCAzNTI1LCA2ODI0LCAxMTg4ODYsIDk4MzU4MiwgCi0gICAgMCwgNTYxOSwgNjU4MjIsIDExMzc1MSwgMTEzNzM4LCA3NDU1LCA3MTQyNCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIAotICAgIDEwNzI3LCA1NjE1LCAxMjA4NzMsIDEyMDU1MSwgNDIzODAsIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgCi0gICAgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIAotICAgIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCA0NjAzLCAzMDg0LCA3MDQwOCwgOTI0ODQsIAotICAgIDk4NTgsIDYwMzcsIDk4MzQ2NSwgMzk3NCwgNzgyMTMsIDEwMjkwLCA5ODM3MDQsIDMwODMsIDEwMzIyLCAxMjkwNDgsIAotICAgIDEyOTAzMCwgNzUwMzgsIDQxMDM2LCA2Njg5NywgMCwgNDMzMjEsIDY1NjA2LCAxMjcwNzEsIDQxMDMyLCA0MjM4OCwgMCwgCi0gICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMTk0OTA3LCA2NzcyNywgMTI1MTA2LCAKLSAgICAyMjIzLCA2NDk1MiwgMTA0MDIsIDEyODM1OCwgMTI1MDQ5LCA5MjMwNCwgMTA2MDMsIDAsIDk4MzQwMywgNzE0MzgsIDAsIAotICAgIDY3MTQsIDEwMDgzLCAxMjcwNjksIDEyMTAxOSwgNzgzNjcsIDY5OTc2LCAwLCA0Mzg3MiwgOTA3MywgNDI1ODUsIDY0MzAyLCAKLSAgICAxMDcwNCwgNjUwMzAsIDQ3ODcsIDEyOTAzMSwgNzQ4MjksIDAsIDY1NDIzLCAxMjEzMDYsIDEyODExOCwgOTU3MCwgNTUyNjAsIAotICAgIDk1MjUsIDI2ODksIDkxNzYyNiwgNjU0MjYsIDE5NDg3MiwgOTE3NjI0LCA0Mzc0MCwgMTIxMTYzLCA0MDk2NiwgMTIwMDA5LCAKLSAgICAxMzI4NiwgMzk5OCwgNDI1OTgsIDQyNTk2LCA1MDMsIDcxNDMzLCA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgCi0gICAgNDE5NTQsIDkxNzYxNSwgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCAKLSAgICA0MzMyMCwgMTE5MTU5LCA3Mzk1NSwgOTIzMTUsIDY0NjgsIDQxOTc2LCA5NzIwLCA3NDk2NCwgMTExNzksIDQxOTcwLCAKLSAgICA2NjI1NSwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgCi0gICAgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIAotICAgIDg2MTYsIDQxNDY2LCA0MjkyNCwgMjIyNywgMTE0NTAsIDk4MzY5MSwgMzYzOCwgMTIzNTQsIDY3Mjk5LCAzMjE2LCA4MzA5OSwgCi0gICAgMjM1OCwgODMwOTIsIDg2MzMsIDcxMjAxLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDgzMDkwLCA3MDM3NSwgMTE3NTksIAotICAgIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDY3MzAzLCA0MTQyMywgODA3OCwgMTA1MDQsIDgzMTA0LCA0MTY5OCwgNDIyMzcsIAotICAgIDk4MzQ1NCwgNzAwMiwgODMxMDEsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAwLCA3MTQ2NywgNDEwNTAsIDQxNDczLCAKKyAgICAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzAzNTIsIDE4ODQsIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDE5NTA1OCwgCisgICAgMTE5NSwgNjQ4OTgsIDc5MjQsIDExOTg3MCwgNDExNTEsIDIwMTAsIDcxNDMwLCA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAKKyAgICAxMjA3MTIsIDQzNjAsIDEyMTAyMywgOTczOSwgMTI4NTUwLCA2OTkzMywgNzM5MjEsIDkxNzYzMSwgNDI1MjEsIDg1MzksIAorICAgIDEyODYwNiwgMCwgMTE4OTg2LCAxMjcxNDgsIDQ3ODgsIDEyMTM0NSwgNjgwMjMsIDY1NzM0LCA5ODM0NTcsIDQzNzkwLCAKKyAgICAxMTk4NjksIDEzMDc1LCA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDcyNzYyLCAxMTg5MDEsIAorICAgIDY4NjM3LCA0MTEzNiwgNDM3ODUsIDExODEzLCA5NjQ5LCA0MTE1NCwgMTEzNzMxLCA1MTI4LCA0MDM4LCA0MTE0MywgCisgICAgNjU2MDQsIDY0ODU5LCA0MTU5MiwgNjc3MSwgMTY0OCwgNTQzNSwgNjcyOTUsIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAKKyAgICAxMjcwOSwgNjk4NiwgNjY3NjEsIDY4MDE1LCAxMjA1MzMsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCAKKyAgICA3MzgwNiwgMTAyNTQsIDExMzY4MSwgMTAyNzgsIDEwMjYyLCA2OTg1OCwgNDEzNDYsIDEyMDg3MCwgNjA3LCA5ODM2MjEsIAorICAgIDY4MTgyLCAxMjg4NDYsIDEyOTIzLCAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgCisgICAgMTI5MTQ5LCA3ODYzOSwgNDA5NzUsIDU4NDAsIDQyODM4LCA3NDk4NywgNDA5NzgsIDc4MTc0LCA5Mjk0NSwgMTI4MDIwLCAKKyAgICAxMTk4MDksIDEyMDg5MSwgNjY0NDQsIDEwNTM4LCAxMjA4MTAsIDI1NTAsIDExOTgzNiwgNjc3OSwgMTI5MDkxLCA5MTc4MTUsIAorICAgIDM1MjUsIDY4MjQsIDExODg4NiwgOTgzNTgyLCAxMTk4MzgsIDU2MTksIDY1ODIyLCAxMTM3NTEsIDExMzczOCwgNzQ1NSwgCisgICAgNzE0MjQsIDU2MTYsIDExNDg2LCA5NjU2LCAwLCAwLCAxMDcyNywgNTYxNSwgMTIwODczLCAxMjA1NTEsIDQyMzgwLCAKKyAgICA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIDExMzQ3LCA3Mjc2MCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAKKyAgICAxMTM1MCwgNTYxNywgNzI5OSwgOTIyNSwgNjQ2MzksIDEyNzA3MywgOTE0NSwgNDEzNDQsIDEzMzgsIDEyMDU4MSwgCisgICAgOTgzMTU4LCAxMjczOSwgNDYwMywgMzA4NCwgNzA0MDgsIDkyNDg0LCA5ODU4LCA2MDM3LCAxMDAzNzYsIDM5NzQsIDc4MjEzLCAKKyAgICAxMDI5MCwgOTgzNzA0LCAzMDgzLCAxMDMyMiwgMTI5MDQ4LCAxMjkwMzAsIDc1MDM4LCA0MTAzNiwgNjY4OTcsIDEwMDM3NCwgCisgICAgNDMzMjEsIDY1NjA2LCAxMjcwNzEsIDQxMDMyLCA0MjM4OCwgMTAwNjE5LCA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAKKyAgICAxMTkxMDUsIDkxNzk2OSwgNDA5NjAsIDE5NDkwNywgNjc3MjcsIDEyNTEwNiwgMjIyMywgNjQ5NTIsIDEwNDAyLCAxMTkyMTMsIAorICAgIDEyNTA0OSwgOTIzMDQsIDEwNjAzLCAwLCA5ODM0MDMsIDcxNDM4LCAxMjg1MDAsIDY3MTQsIDEwMDgzLCAxMjcwNjksIAorICAgIDEyMTAxOSwgNzgzNjcsIDY5OTc2LCA5ODM2NTUsIDQzODcyLCA5MDczLCA0MjU4NSwgNjQzMDIsIDEwNzA0LCA2NTAzMCwgCisgICAgNDc4NywgMTIxMjc5LCA3NDgyOSwgMCwgNjU0MjMsIDc0OTg4LCAxMjgxMTgsIDk1NzAsIDU1MjYwLCA5NTI1LCAyNjg5LCAKKyAgICA5MTc2MjYsIDY1NDI2LCAxOTQ4NzIsIDY2NzQwLCA0Mzc0MCwgMTIxMTYzLCA0MDk2NiwgMTIwMDA5LCAxMzI4NiwgMzk5OCwgCisgICAgNDI1OTgsIDQyNTk2LCA1MDMsIDcxNDMzLCA4NzM1LCAyNjkwLCA2NjQ4OCwgNDI4MzYsIDEyNzE1MCwgNDE5NTQsIAorICAgIDkxNzYxNSwgMTY1MiwgNzcyLCA2Njg4LCA4MzEwLCA2NTQyOCwgMzQ4NywgNDM0MTYsIDM1ODUsIDEwMTk0LCA0MzMyMCwgCisgICAgNzI3NTYsIDY2NzU3LCA5MjMxNSwgNjQ2OCwgNDE5NzYsIDk3MjAsIDc0OTY0LCAxMTE3OSwgNDE5NzAsIDY2MjU1LCA1ODM2LCAKKyAgICAxMjM1OCwgMTI5NDIxLCA0MzU1LCA5MDQ4LCAxMjE4MCwgNjUwMjcsIDY0NjgwLCAxMzAzOCwgNDM2OTksIDAsIDQxNDg4LCAKKyAgICAxMjgwODcsIDg1MjcsIDE5NDkxNywgMTIzNjIsIDEyNDM1LCAxMjM2MCwgNDEwNTMsIDMyNjYsIDAsIDEyMzU2LCA4NjE2LCAKKyAgICA0MTQ2NiwgNDI5MjQsIDIyMjcsIDExNDUwLCAxMjA3MzQsIDM2MzgsIDEyMzU0LCA2NzI5OSwgMzIxNiwgODMwOTksIDIzNTgsIAorICAgIDgzMDkyLCA4NjMzLCA3MTIwMSwgOTgzNzQ1LCAxMTkxODIsIDY5MjQ0LCA4MzA5MCwgNzAzNzUsIDExNzU5LCAxOTQ5MDMsIAorICAgIDYzNjgsIDcyODM0LCA2NzMwMywgNDE0MjMsIDgwNzgsIDEwNTA0LCA4MzEwNCwgNDE2OTgsIDQyMjM3LCA5ODM0NTQsIAorICAgIDcwMDIsIDgzMTAxLCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMTI5MzYyLCA3MTQ2NywgNDEwNTAsIDg4NzIsIAogICAgIDEwNDY2LCAxMzA5OSwgNzE0NDUsIDcwMzcxLCAxMjA4OTcsIDY0MzUsIDc0MzMxLCAxMTM2MiwgMTI4OTczLCA4MzA4OCwgCiAgICAgNjUzODIsIDkyNzcwLCA0MTQyMCwgODMwODMsIDM2MjUsIDc0OTE1LCA0MTQwOSwgNzE0NDEsIDY5NjM5LCAyMDQxLCA5MTc4LCAKLSAgICA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCA3NDkyNCwgMCwgMTI4NTU3LCA0MTQyNCwgOTE3NTk4LCAxMjA1NDYsIDAsIAotICAgIDEyODIxMiwgMCwgNDE0MTcsIDEyNjEsIDAsIDAsIDEyMTAyLCAxMTk2NjIsIDQxNDAxLCAwLCAxMjc1MzgsIDAsIDc4MjUxLCAKLSAgICAxMjQ5NDMsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDY4ODUwLCA3NDkwMSwgMCwgMTI3OTUxLCA5MjM4OCwgNjk2NDksIAotICAgIDEwOTg5LCA3NDIzNCwgMTEzNzgxLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAxMjcyMzIsIDc0NjAzLCAKLSAgICA2NDUwNCwgMTk5MjgsIDAsIDEyODQxMSwgMzkxNywgOTgzMTE5LCAxMTczMiwgMCwgOTgzMTgwLCA0MTQ0OCwgNDE0NjEsIAotICAgIDEyODgyMywgMCwgMTEzNzIxLCAxMTM3NTgsIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIAotICAgIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDgzMjkzLCAxMjEwMDcsIDkwOTQsIDk4MzkyNiwgMTE3NTgsIDY4NDI1LCA3MTg4NiwgCi0gICAgMTA2NCwgNDI0NjcsIDEyODA0NCwgMTAxMTUsIDE5OTI0LCA5MjcxMSwgMTEzNjgyLCA3ODYyLCA2NDU1MSwgMTMyMjQsIAotICAgIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCA3MTQzNCwgMjkxMSwgODMwNzQsIAotICAgIDQxMTc4LCA1NDI3LCA2NDgyMywgODMwNjIsIDgzMDY2LCAzNzg3LCA0MTE3NCwgODMwNTUsIDQxNDU4LCA2NzE0NywgCi0gICAgNDE0NjMsIDQyNDEzLCAxMTI5MiwgMjQwNiwgNzc1LCAwLCA2NTU4NCwgNjk5MjMsIDYwNzQsIDk2MTgsIDY4MDU2LCAKLSAgICAxMjE0ODAsIDQzNDQwLCA3NDUzOSwgMTk0OTAxLCA0MTQzNiwgMzY1NiwgOTE3ODA1LCAxMjA2MDAsIDQxNDU2LCA2NzY5NCwgCi0gICAgMTU5OSwgMTEzMzMsIDgzMTM5LCA2NzAzLCA4NTEzLCA4MzEzNCwgMTYxMywgODMxMzYsIDY4NDU2LCAxMjU5OCwgODMxMzEsIAotICAgIDgzMTMyLCA3ODc0NSwgNzQ1MDAsIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCA2NzE0NCwgOTkwNSwgCi0gICAgODMxNDUsIDY1NzMwLCA4MzE0NywgMTIwMzc0LCA4NDI3LCA4MzE0MiwgNTUyNDYsIDEyMDM3NiwgNDI4OTUsIDExNDk3LCAKLSAgICA2NDY4NywgNzQwMDgsIDQyNTkyLCAzODcxLCA5ODM1ODQsIDEyODMwNSwgOTExMSwgNTc0MSwgODMzMjUsIDEyMDk4NywgCi0gICAgMTIwMzY2LCAxMTkxMTEsIDExMTUwLCAwLCAxMjAzNjgsIDEyODg1NSwgMTE2NDgsIDgzMTI2LCA4MzEyNywgODMxMjgsIAotICAgIDQxNTg3LCA3MDM5MSwgODMxMjMsIDcxMTA4LCA0MjExMywgOTgzNTg4LCAxMjcxNTUsIDEyMTcyLCA4MzEyMSwgNzE0NDMsIAotICAgIDY1Mjk4LCA2NTcyMywgNjgyODksIDczODcxLCA2NTcyNCwgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgCi0gICAgNjQ2NzEsIDQyMTE4LCA3MzgzMCwgNjYwNDIsIDEwMzU1LCA5ODMxMTAsIDc4NzUsIDk4MzY2OSwgNDE1OTgsIDM5OTMsIAotICAgIDEyMTI2OSwgMTU0NSwgNDA5NzEsIDUzNiwgMTI3MDc1LCA0MzAyOSwgMCwgMTIxMDAwLCA2NTE3MywgNjUyODYsIDAsIAotICAgIDcwMzMxLCAxOTUwMTIsIDAsIDk0MDY1LCAwLCA0MTM3NSwgNTQwMiwgODMwMzUsIDEyODE5MiwgMTY4NywgMTIwNTAzLCAKLSAgICA5MTc4MTcsIDAsIDc4MTk0LCA2NDMyNiwgNDA5NjksIDEwNTI2LCA3Mzc0NywgODMyMywgNDA5NjgsIDEzMzksIDExNzMxLCAKLSAgICA3ODc1NiwgMTI3MTA4LCA2NTQ2MCwgMTIyNDIsIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCA5MTc4NjcsIDAsIDgyNjYsIAotICAgIDQxMDA2LCA2NTcyMiwgODMwNDEsIDEwNzEwLCA3NDA0NSwgMTE4OTQyLCA2NzY2NywgNjQ1NjcsIDExOTE1NSwgODMzMTMsIAotICAgIDEyODc3OCwgNzE4ODksIDY3ODU3LCAxMjA2ODcsIDAsIDkyOTU4LCAxMTc1NSwgNjYzMDUsIDY4MzMyLCAwLCAxMDkxNywgCi0gICAgOTM5NzksIDAsIDExMjcyLCAyMDQwLCA0MTI0NywgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDgzMTE5LCAKLSAgICA4MzEyMCwgMTE0MTMsIDEyNjU4MywgODMxMTUsIDUyODMsIDE1ODYsIDQ5NzgsIDY4MDUwLCAxOTg0LCAxMTgzMCwgNDM4MTksIAotICAgIDkyMjkzLCA0MDk4NCwgNDI5MDQsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAxOTQ4ODgsIDQxNjYzLCA5ODMwOTMsIDAsIAotICAgIDY4MzEzLCA5MjM3LCA5Mzg1LCA0MTY0OCwgMCwgMTI4OTUzLCAyMjk5LCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIAotICAgIDQxMjg3LCA5MjYxMCwgMCwgNzE5MTcsIDQyMjE5LCA2ODA4NiwgMTIwMzI3LCA0MTk4NywgNDE2NzYsIDk4MzA1OSwgCi0gICAgMTIwODIzLCAxMjY1NTMsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIAotICAgIDExNDUxLCA4Mjk5NSwgNzg4NTUsIDQyNjMxLCAyMzU5LCA3MTg5MCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgCi0gICAgMTMxMzMsIDY0MzY4LCAxMjcyNzAsIDEyMDkyNSwgNjYyNzIsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAKLSAgICAxMjgyMzgsIDE2MTQsIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDEyMDg3MSwgNDI4LCA5NjIwLCAxNDY2LCAKLSAgICA3ODExMiwgMTA5ODIsIDExMzc4NSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAxMjc5OTMsIDAsIDAsIAotICAgIDU4MDQsIDExOTc2LCA4NTU0LCA5MjcyMSwgMCwgNzAxNjcsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMTI1MDk3LCAxMjEyOTAsIAotICAgIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzA0NDMsIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDEyODYxNiwgMTI4NTEyLCAKLSAgICAxMjg2MjksIDQ0MDcsIDc0NjQ4LCA2NTgwOSwgMTE4MzcsIDE5NDgyMSwgODQ0OCwgNzE0MSwgNzQxODMsIDEyMDMzNCwgCi0gICAgMTI2NzUsIDEyNjU5LCA3NDYzNCwgNDIzNjMsIDEyMDYyNCwgNjgwNzcsIDU1MjczLCAxMDc2NiwgMTIwMTIsIDIzODYsIAotICAgIDY0NzMyLCA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAxMDI5NiwgMTE5MTU4LCA3MTQwLCAxMDk3NywgMTI3Mzc4LCAKLSAgICA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAxMjY0NzcsIDEyMDYzNywgNDI0MTksIAotICAgIDY0Nzk5LCA0MjA0NywgMCwgMTk0ODIwLCA4NDcwLCAxMTgwNywgNjU4OTcsIDU3NywgMCwgOTgzNzYwLCA3NDMwMCwgMCwgCi0gICAgNjgwODcsIDc0ODQwLCAxMjY0NzQsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCA5NjgzLCA0MzQ4NiwgCi0gICAgNzQzNDQsIDAsIDI1MzYsIDk4Mzk0MSwgNjYzMzAsIDEyMTIzOCwgMCwgMCwgMCwgMCwgMCwgMTk0ODMwLCA2NjMxNywgCi0gICAgNjk5NDUsIDY2MzE1LCAyMTA2LCA2NzgwOSwgMTEyNzMsIDEyMDk4NiwgNDMwMDQsIDc1NDEsIDgyOTg4LCAwLCA5NjEsIAotICAgIDY0MzA3LCA2NjMyNCwgNjQ5MDYsIDEyNTA4MCwgMzEwNiwgNjU5MTcsIDQxMjg0LCAxNjk2LCA5ODMxMzAsIDg5MSwgCi0gICAgMTIxMDUsIDAsIDQyNjI0LCAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMTIwODc4LCAwLCAwLCAKLSAgICAxOTQ4MjYsIDkyNjg4LCAzNTY2LCAyMzIyLCAxMjAzNzEsIDcwODMxLCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIAotICAgIDM1NDcsIDAsIDAsIDExMzc0NiwgOTgzNDAwLCA0MzIxNiwgNjA4OSwgNzg2ODIsIDY4NDkwLCAxMjA1NzgsIDQxNzAsIAotICAgIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCA3NDQsIDkyODgzLCAxMTM3MzksIDAsIDY1ODIzLCAKLSAgICAxMjc4MjYsIDExMTgyLCAzNTUxLCA5MjkzOCwgOTgzODkxLCA0NjIzLCA1NTI2OCwgMTI4NzM4LCA0NTk4LCA5ODMxNjIsIAotICAgIDY1MTM2LCAxMjcxMzYsIDAsIDEyODE2OSwgMTA4NTEsIDEyMDg3NiwgNjE3OSwgOTI2MDIsIDYxODAsIDAsIDExOTUyLCAKLSAgICA3NDU3OSwgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgCi0gICAgMTIwNTgwLCA5ODM2OTYsIDEyNTEzNSwgNjE3NywgOTAyMCwgNzg2NTIsIDc4NjUzLCA2MTc4LCAxMjAyNDksIDEyMDI0MiwgCi0gICAgMTI4MDI3LCA2NzY3MywgMjIxNCwgODc1NCwgMTI3MDUxLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAxOTQ2NjMsIDExOTExNCwgCi0gICAgOTEzNiwgNjY4ODksIDQ0MDEsIDQxMjgwLCA3MDgwMSwgODk3NCwgMjMwOCwgMTk0NzUwLCA3NDE0OSwgMTI4MzI3LCAyMzE4LCAKLSAgICA5ODMxODMsIDY2MzYxLCA4MTk4LCA2NTYyNiwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNDM5MzEsIDEyMDgyNywgNDM5MzAsIAotICAgIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIDEyNjk4OSwgNjM4NSwgMTI4NDgyLCAKLSAgICAxMjg0MDMsIDExODk0OSwgMTA4NzQsIDY1NTA1LCAxMjAwMDIsIDEyOTE1MSwgNDIwNTMsIDIwNzUsIDQyMDU3LCAxMTA4MywgCi0gICAgNDIwNTIsIDAsIDY3MjY2LCA2NzY1MSwgMTIxMTA0LCA5NjY1LCA5MjMwMCwgOTgzNjY2LCAxMzE4MSwgOTE3NjE3LCAwLCAwLCAKLSAgICA3MDA4OCwgNzQxNDgsIDAsIDcwNDE5LCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDY2NDA0LCAKLSAgICA5NDA5NiwgNzQ0MjIsIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMTM2ODYsIDc1MDMzLCAxMTkwOTAsIDEwODY5LCA0MzQ1OCwgCi0gICAgNDExNDYsIDkyNDA3LCAxMTQ0MSwgMTIxNDU2LCAzNTEyLCAxMTk2MzMsIDkyOTY1LCA4MTAzLCA3ODE0MCwgMTIwODQ3LCAKLSAgICA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgMTI5MDU1LCA2OTc0MiwgNDE1NDQsIDY1MTQ2LCA3MTMxNCwgMCwgNzgxMDksIAotICAgIDEyOTE3NywgMTk5NDIsIDk4MzI0NCwgMTE4OTA4LCA3OTg4LCAxMDQzNiwgNzQyNzMsIDMyNzEsIDczODA0LCA2NDcxMSwgMCwgCi0gICAgOTQwNjQsIDk4MzA3MSwgMTI4NjUyLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAwLCAzNTk5LCAKLSAgICAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIDY2Njk3LCAwLCAxMTY4NCwgMCwgOTI0ODYsIAotICAgIDkxNzYwMywgMCwgNDIwNDMsIDQzMjMyLCA2NjY3NywgNzQ5MjcsIDQyMDQ2LCA3NDE1NywgNDAzNiwgMTI2NDgxLCAwLCAKLSAgICAxMjgyMTMsIDE5NDg2MSwgODMzNTUsIDExOTU0LCA3MDM0OCwgMTQ1MCwgMTI5ODYsIDEzNDAsIDAsIDY1NDQxLCA5MjcyMiwgCi0gICAgMCwgMCwgMTI1MTE3LCAwLCA5MTc1NDIsIDczODEyLCA4MzA1MywgNjUzOSwgOTI5NDgsIDEyNjYwNywgMTIwNzAyLCAKLSAgICA5MjM5MCwgMCwgMTIwNDkyLCA0MTE5MCwgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgNDI5LCA5MTc5NzksIAotICAgIDc4ODkxLCAwLCAxOTQ4NDgsIDY1NzkyLCAxMjg0MDgsIDgzMjgyLCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxMjg5NzAsIAotICAgIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIDAsIDkyOTQyLCA2NDU0OCwgMTIwNTA2LCAxNjIxLCAxMDIxNCwgCi0gICAgNjUxMjYsIDY4MjUzLCAxMjcwMDQsIDk4MzYxNiwgMTIxODgsIDk4MzY2OCwgMTYxNywgODA1MCwgMCwgNTAxNSwgMCwgCi0gICAgMTE5MTc0LCA0MjU5MCwgNzAzNTQsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCAKLSAgICA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDEyMTIwOCwgMCwgNjgyMjQsIDEyMDg3MiwgNDE3NjQsIDc5NTcsIAotICAgIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDM1NTksIDk4MzkxOCwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgCi0gICAgNzA4NTMsIDExOTAyOCwgMCwgMTI4MTIyLCAxMjg0NDIsIDIzNDEsIDg0NTAsIDg0ODQsIDg0NzQsIDE5NDg4NCwgNjgzMjIsIAotICAgIDcwMDc5LCA4NDYxLCA2NzcyMSwgMTIxNTMsIDEyNzk5LCAwLCA0MzcwOSwgNDM3MDgsIDk0NTEsIDc1NzEsIDEzMDczLCAKLSAgICA0Mzg0NywgMCwgNjgxLCA5ODMyNTQsIDcwMywgMTI3NTE4LCAzMjcyLCA4NzgxLCAxMjg5NCwgNzAwNzcsIDExNzA5LCAKLSAgICA5MjI4OCwgNzA1MTQsIDk4MzkwMCwgODMxNzUsIDcxNDM2LCAxMTMzOCwgMTIwNzY4LCAzMjc2LCAxMjg5NjgsIDkxNzk4OSwgCi0gICAgNjU5MjgsIDAsIDEyMTM2NywgNjUwMjEsIDY0Nzk1LCA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgCi0gICAgNDI3MTEsIDAsIDAsIDY4NDc4LCAxNjMsIDU3NiwgOTg5NSwgMTY1NSwgNzAxMzEsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIAotICAgIDY2ODg4LCAwLCAwLCA3MDUxMywgMTAwMzksIDEyMDQyNiwgNTYyNiwgNTYyMywgNTcxNywgNTc3NiwgNDM0ODgsIDgzNDk3LCAKLSAgICA2Njg4NSwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIDAsIDEyMDExMSwgNjc4NDgsIDEyODEyOCwgOTgzNTk1LCAKLSAgICA5ODM0NzIsIDg4ODcsIDEyNzUyMSwgNzI5NSwgMTEwMzEsIDk4MzMzNiwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAxMDQxMiwgCi0gICAgODc1NSwgMTE5MTUyLCAwLCA1NzE4LCAxMzIyMSwgMCwgMCwgNzgxMzUsIDcwNTE1LCA5MTc2MTYsIDg4MTAsIDc0NDk5LCAKLSAgICA2ODYsIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCi0gICAgNjUxMTgsIDY4MDI5LCAxMTkxNTEsIDc0MjA1LCA5MjY1MSwgMTI4OTAyLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjQ4LCAKLSAgICA2ODA0NCwgNjU0NTUsIDAsIDc0MzI4LCAwLCA3NDU2MSwgMTIwNzYzLCAxMjg4NiwgMTIwOTUyLCA2NjYyNCwgMTI2NTc4LCAKLSAgICA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzEyMTAsIDc4NjAyLCAxMTg5NDUsIDk5ODQsIDczODUxLCAzMDEwLCAKLSAgICA2NDQxLCA3MDM0OSwgMTQ1OCwgNDE0NzUsIDcyNDI5LCA5Mzk3NSwgMTI3OTEwLCAxMTQ3OSwgMTIxMzU1LCAxMjAzNTYsIAotICAgIDYzNTAsIDEyODY0LCA2OTY3NCwgNzE0NzMsIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIDEyNDk0NiwgNDA1MiwgCi0gICAgMTEzNjczLCA3NjI2LCAwLCAxMjA5MDcsIDEwNDUsIDAsIDU2MzEsIDQxMTEzLCAxMjc1NDQsIDAsIDQzNzA3LCA3NDEyNywgCi0gICAgMCwgOTgzNzE4LCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgOTgzMTk1LCAxMjY1NjEsIDY5MjIxLCAxMDI1LCAKLSAgICAxMjcyNzcsIDQyNjI1LCA3MDMyNSwgNzgwODQsIDQxNDQzLCAwLCAxMjgyMDYsIDAsIDE3NzQsIDE1MjMsIDEyMTMzMCwgCi0gICAgNjgwNTksIDQxNDQ1LCA3ODIzNiwgMTEyMDcsIDg1NjcsIDQxNDQyLCAzOTg4LCA3NDg0MywgNzgyMzcsIDExODkxMCwgMCwgCi0gICAgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAxMjEyNzIsIDAsIDQzNDQ2LCAwLCA2NjUxMywgNjI1NiwgCi0gICAgOTE3ODA3LCA1NzksIDU1MjE4LCAxMDIwNiwgNzgxOTUsIDYzNzUsIDI2NzMsIDk4Mzg4NiwgMTE4MTQsIDAsIDQ0ODgsIAotICAgIDEyODcxNiwgMTIwNTU0LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAKLSAgICAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMTI0OTk4LCA2MTQsIDcwMzYxLCAKLSAgICAxMjcyMTUsIDEyMDYxNSwgMTE5NjIyLCA3ODI2MiwgMTI3MjcxLCAxMjczMjMsIDAsIDQzMTIxLCAxMjcyMTEsIDEyODM2NiwgCi0gICAgOTI1MTMsIDEwNTAsIDc1NDksIDEyMTI2MCwgODI5OTQsIDkzMTQsIDcwMzY1LCA5Mjg5OCwgNjgwMzksIDEyNzA2MSwgCi0gICAgMTAwNTcsIDcwNDM0LCAxMjczMTMsIDEyODU3NywgNjY1MDQsIDEyMDk2MywgODI5OTIsIDIzMDcsIDEyODQ1NiwgNjQzMzMsIAotICAgIDEyNzMxMiwgMTI4MjMwLCA3Mzg3MywgOTgzNzEwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDcwNDQ2LCAxMDM2MCwgCi0gICAgNjc0NiwgMTIwNDczLCA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDEyNzc4NSwgOTk1NywgMTI4Mjg1LCAKLSAgICA2NjQ0NywgODA0NiwgNjQ5NjMsIDY1Nzc3LCAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMTIwNDI0LCAxNTIxLCAKLSAgICA5ODk2LCA5Mzk2NSwgMTA0ODcsIDY5ODc4LCAxMjUyNywgNjg3MzcsIDc5NzAsIDEyNTA3MywgMTI4NjYwLCAwLCA2NTc2OSwgCi0gICAgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIDEyMTQyOSwgMCwgNTIzNywgNjk3MTQsIDY4NzU2LCAxMDEwMywgNTI0NywgCi0gICAgNDc2OSwgMTI5MzAyLCAxMTg5NzcsIDEyODczLCAyMjgzLCA5MjkzMSwgMCwgMzAwOCwgNDg5NiwgMTI4MTAyLCAxMjA4NywgCi0gICAgMCwgNTUyMzEsIDQxMTAzLCA5MjI1NiwgNjQ1NjUsIDQ3NzMsIDEyMDg0NiwgNzg1NDksIDcwMDc0LCA0NzcwLCA2Njg5MSwgCi0gICAgOTE3NTY3LCA4NzMxLCA2NTM3OCwgNjY5MTEsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAxMjY2MDAsIDQ3NzQsIDMwMTksIAotICAgIDk5OTcsIDEyODM0LCAwLCA5NDU2LCAxMDIxNSwgMTIwNTQ3LCAwLCA3ODU1NiwgMCwgMTIxMzMyLCA3NDc3NiwgNDI4MSwgCi0gICAgNDc2OCwgMTIwNTcyLCA0MTUzNSwgNDA5OSwgOTAxNywgNjk5OTMsIDk4MzY5MiwgNzgwOTUsIDIyMjUsIDc4MDk2LCAKLSAgICAxMTg5NDYsIDEyMTA5NywgMCwgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDAsIDExMzc2NCwgNjY4NzAsIDIxMzQsIDAsIAotICAgIDEwMTE2LCA5ODc3LCA5MjMyOSwgMTI4OTYwLCAwLCA3MDk1LCA4Mzc5LCA3NDExNiwgNjc3OCwgMCwgNzgwOTAsIDgyNDMsIAotICAgIDI0MjcsIDEyODE0MSwgNzA5MywgMCwgMTE1ODUsIDE5NTAwMywgOTk2MiwgODI5OTAsIDEyMjIzLCAxMjg0ODUsIDkyNDMwLCAKLSAgICAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgODMzODksIDc0NDE5LCAwLCAxOTQ2ODYsIAotICAgIDU1MjgzLCAwLCA3MDM2MywgNzQ0MzcsIDExNTYsIDg3NDAsIDgzMjk1LCAzNzgyLCA2NDMzMSwgMCwgNDEzNzAsIDEwMTQsIAotICAgIDgyNjEsIDEyMDk1NiwgOTE3NTk2LCAxMDgzNSwgOTE3OTY2LCA2NTUzNiwgODMyOTQsIDEyMDQ2MywgMTI1MDUxLCA3NzAyLCAKLSAgICAxMTg4MjQsIDEyODk3NiwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIAotICAgIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDc1MDE4LCAxMjg1NzYsIDc0OTIzLCA0MjI1NywgNTY5NiwgOTI2NzcsIAotICAgIDEyMDQ2NSwgMzg2MiwgOTY0MywgMCwgNzAxODMsIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgCi0gICAgMTI4NzE5LCAxNDI2LCA2ODIxNywgOTgzNjE0LCA2ODQ0NywgNDIyMDQsIDU1MjcwLCA4NTcxLCA2NzQwMywgNzgwNjcsIAotICAgIDQzODU5LCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgMCwgNDIwMjIsIDAsIDEwMjgxLCAwLCA1NjUwLCA0MzE5NCwgCi0gICAgNjQ3MTIsIDEwNzQ0LCA3ODg4NywgOTkwLCA1NjQ3LCAwLCA3Mzg3LCA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAKLSAgICAxMjg3OSwgMTEwMTgsIDEyODM2MiwgMzk0NSwgOTI1ODksIDk4MzQ2NiwgMTk0OTg5LCA3ODg4MywgMCwgNzgyMTIsIAotICAgIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDk4MzgzNSwgNzg3MzEsIDU2NDgsIDY0NzQ4LCAxMjA5MjAsIDc4NzMzLCAxMDIwNSwgCi0gICAgMzU0NSwgOTgzNTg1LCA2OTg0LCAxMjgwMDgsIDc0MDUxLCAxMjg5MDEsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDEyODE3MywgCi0gICAgMTI1MDM3LCAwLCA5OTExLCAwLCA2NTAyMCwgMTAwOTcsIDExOTE2NiwgMTI3MTQ1LCA5ODM2NjIsIDExODgzNiwgOTgzNzQ4LCAKLSAgICA3ODIwOCwgMTE0MCwgNzg0MjYsIDAsIDEwMTU5LCAwLCAwLCA4MTI4LCAxMjg2NDQsIDY4MzI2LCAxOTQ5MTEsIDE4MTUsIAotICAgIDE5OTEwLCA4OTAsIDEyNDkzNSwgMzI2NywgOTIyOTEsIDAsIDEwMTIzLCAxMjEzOTgsIDQ0MTAsIDEwNDEsIDEwNTc2LCAKLSAgICA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgOTgzNzQ2LCAxMjgzNDcsIDAsIDAsIDEyODA5OCwgMTk5MzgsIDY1OTA2LCAKLSAgICAxMjc4MTksIDkxNzgxMSwgMCwgMzI5OCwgNTM3NSwgMTAxNDIsIDAsIDgyMTUsIDkyNjMzLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIAotICAgIDk4MzE0NywgNjk4OTksIDE5NDkzOCwgMCwgMTIxNDI2LCA0MTM4MiwgOTE3OTI3LCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCAKLSAgICA1MjcsIDEyMTE3NCwgMTEzNzgyLCA3ODQ2OSwgMTI4MjUwLCA3ODc5NywgMTE5MTUsIDAsIDAsIDEwMDcyLCAwLCA0MjY5NSwgCi0gICAgMjMyOSwgNDIyNTAsIDAsIDExMTg3LCA2OTY2NywgMTIyNDUsIDE1NjgsIDk0MDMzLCA4MzQ2MCwgMCwgMTEzNzA1LCAKLSAgICA5MTc5MTAsIDExMjAxLCA5MjcwOCwgNzQ3NjksIDEyNjQ3MCwgNjc2ODAsIDkwNjksIDYxNDQsIDAsIDExOTg0MCwgNzM4MjIsIAotICAgIDAsIDEyODAxMCwgNjQ5MTcsIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDkyMjUwLCA2NTA5OCwgNjM2NCwgOTU2LCAKLSAgICAxMTM3OTIsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIDczNzM0LCAwLCAwLCA5ODM3MzksIDY2NDQ5LCAxMzI2MywgNzQyODEsIAotICAgIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCAxMjA1NjQsIDAsIDYzODg1LCAxMjcyNTEsIDEwNDQsIDQxMjc2LCAxMjgzNjMsIDAsIAotICAgIDAsIDQyMDY4LCAxMTc5NSwgMTI0OTg1LCAwLCAxMjcyMDIsIDAsIDQyNDUwLCAzOTA3LCAwLCA2NDUyNiwgMTE4MjksIAotICAgIDY4MTk3LCAxMjI5NSwgMCwgMTE0NzUsIDcwMzI5LCAzMDIwLCAxMTUzNywgMCwgNjY0NDEsIDEyMDc2MSwgNzA5OCwgCi0gICAgMTI1MDcxLCAwLCAxMDU3LCA1NjYsIDQyNjk2LCAxMjcyMzksIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCAKLSAgICA2NjU3MSwgNzg0NzIsIDcxMjA3LCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzMzMCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgCi0gICAgNTUyNTMsIDYzNTcsIDYzNjIsIDg2MjYsIDcxMzM3LCAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAKLSAgICAwLCA2NDQ3NywgOTE3ODUzLCA0MzgxMywgMTA1MywgMCwgNzgyNjksIDAsIDkyOTc3LCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIAotICAgIDc0MzQ5LCA2NjQ3OSwgNjc2ODksIDY2ODcxLCA5MTc4NDUsIDcwMzI3LCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgCi0gICAgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDQzNTE0LCAxMjEzMCwgOTgzMzA4LCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgCi0gICAgMTI3ODUwLCA5ODMxNDQsIDEyNzgyOCwgNjM1OSwgMCwgNDM0NzEsIDk4Mzc2OCwgMCwgODMzNDUsIDc1MDY1LCAwLCA2MzU4LCAKLSAgICA2MzYxLCAxOTI2LCA2MzU2LCA5MjYyNywgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCA1ODMwLCAxMjc3NzMsIAotICAgIDQzNjg1LCA3NDMwNywgMCwgNDI5MTAsIDgzMzAxLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAxMjg2MjEsIDEyMDQxMywgCi0gICAgOTIxOTIsIDEyMTQ1NCwgNjU4OTQsIDE5NDY5NCwgMCwgNjQyOTYsIDk4MzY4MSwgOTgzNjQ0LCAxOTQ5NTksIDExOTE4NywgCi0gICAgMjEzNSwgMTE4MzYsIDAsIDAsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDcwMzg0LCAxMjkxMTMsIDQzODU0LCAKLSAgICA3MTkxMywgNTU3OCwgMTE4NDAsIDEyODExNSwgNDIwMjMsIDYyMzQsIDU2NjksIDkyMjc1LCA3ODYyMCwgMTIxMTcxLCAKLSAgICA2ODgzMywgOTIyNTQsIDY4MjAyLCA1NTgzLCAwLCAwLCA0MjQyNiwgNTU4MCwgNDIyNzYsIDI5MjMsIDg5MiwgMjIyMCwgCi0gICAgNDI0NjUsIDQxMzMwLCAxOTQ5ODcsIDU3OTUsIDY1NTEyLCA2ODc3NCwgNjU3MDIsIDY4NzcwLCAxMjA4MDEsIDY1MjUxLCAKLSAgICA2ODIyOCwgNjU3MTAsIDEyODM5OSwgMTI4NDI5LCA2NzY3MiwgNjg3ODMsIDUzNzAsIDcwNDY1LCAyOTMxLCAxNjM4LCAKLSAgICAxMDk2NiwgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgNzQ1ODUsIDgxNzIsIDQyMDE3LCA5Mjc1NiwgCi0gICAgMTA4NDQsIDEyMTAxNiwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgMTE5OTk4LCAxMjEwNzUsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIAotICAgIDExOTk5OSwgMCwgNzM5NSwgMTI3NzgzLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDE5NDY0MCwgMzAxNSwgCisgICAgOTY3MiwgNDE0MjcsIDQzNTQxLCA0MzMxNywgNzQ5MjQsIDkxNzc3NywgMTI4NTU3LCA0MTQyNCwgMTE5NTYzLCAxMjA1NDYsIAorICAgIDk4Mzg4OCwgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMTI4MjYxLCAxMjEwMiwgMTE5NjYyLCA0MTQwMSwgMTI4OTMyLCAKKyAgICAxMjc1MzgsIDExMzc2NywgNzgyNTEsIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNjg4NTAsIDc0OTAxLCAKKyAgICAxMjEwMDUsIDEyNzk1MSwgOTIzODgsIDY5NjQ5LCAxMDk4OSwgNzQyMzQsIDExMzc4MSwgMTA1OTgsIDc0MTAsIDI2NjksIAorICAgIDkwMywgMTk1MDkxLCAyOTIwLCAwLCAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDEyODQxMSwgMzkxNywgCisgICAgNzgxODUsIDExNzMyLCAxMjg1MTIsIDcyNzk3LCA0MTQ0OCwgNDE0NjEsIDEyODgyMywgMCwgMTEzNzIxLCAxMTM3NTgsIAorICAgIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDgzMjkzLCAKKyAgICAxMjEwMDcsIDkwOTQsIDkxNzc5NCwgMTE3NTgsIDY4NDI1LCA3MTg4NiwgMTA2NCwgNDI0NjcsIDEyODA0NCwgMTAxMTUsIAorICAgIDE5OTI0LCA5MjcxMSwgMTEzNjgyLCA3ODYyLCA2NDU1MSwgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgCisgICAgNzg2MTgsIDY5NzkzLCAxODc4LCAxMjg2NDEsIDcxNDM0LCAyOTExLCA3Mjc1OCwgNDExNzgsIDU0MjcsIDY0ODIzLCAKKyAgICA3ODYxNSwgODMwNjYsIDM3ODcsIDQxMTc0LCA4MzA1NSwgNDE0NTgsIDY3MTQ3LCA0MTQ2MywgNDI0MTMsIDExMjkyLCAKKyAgICAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgNjgwNTYsIDEyMTQ4MCwgNDM0NDAsIDc0NTM5LCAKKyAgICAxOTQ5MDEsIDQxNDM2LCAzNjU2LCA5MTc4MDUsIDEyMDYwMCwgNDE0NTYsIDY3Njk0LCAxNTk5LCAxMTMzMywgODMxMzksIAorICAgIDY3MDMsIDg1MTMsIDgzMTM0LCAxNjEzLCA4MzEzNiwgNjg0NTYsIDEyNTk4LCA4MzEzMSwgODMxMzIsIDc4NzQ1LCA3NDUwMCwgCisgICAgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDY3MTQ0LCA5OTA1LCA4MzE0NSwgNjU3MzAsIDgzMTQ3LCAKKyAgICAxMjAzNzQsIDg0MjcsIDgzMTQyLCA1NTI0NiwgMTIwMzc2LCA0Mjg5NSwgMTE0OTcsIDY0Njg3LCA3NDAwOCwgNDI1OTIsIAorICAgIDM4NzEsIDk4MzU4NCwgMTI4MzA1LCA5MTExLCA1NzQxLCA4MzMyNSwgMTIwOTg3LCAxMjAzNjYsIDExOTExMSwgMTExNTAsIAorICAgIDE5NDg3NiwgMTIwMzY4LCAxMjg4NTUsIDExNjQ4LCA4MzEyNiwgODMxMjcsIDgzMTI4LCA0MTU4NywgNzAzOTEsIDgzMTIzLCAKKyAgICA3MTEwOCwgNDIxMTMsIDkxNzk1NiwgMTI3MTU1LCAxMjE3MiwgODMxMjEsIDcxNDQzLCA2NTI5OCwgNjU3MjMsIDY4Mjg5LCAKKyAgICA3Mzg3MSwgNjU3MjQsIDc5MjgsIDEyMDM1NCwgOTgzMDk1LCA0MTU5NSwgNzM3MzAsIDY0NjcxLCA0MjExOCwgNzM4MzAsIAorICAgIDY2MDQyLCAxMDM1NSwgMTIxNTAxLCA3ODc1LCAxMDAzOTAsIDQxNTk4LCAzOTkzLCAxMjEyNjksIDE1NDUsIDQwOTcxLCAKKyAgICA1MzYsIDcyODc0LCA0MzAyOSwgMCwgMTIxMDAwLCA2NTE3MywgNjUyODYsIDEyMTI1NCwgNzAzMzEsIDE5NTAxMiwgMCwgCisgICAgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCA4MzAzNSwgMTI4MTkyLCAxNjg3LCAxMjA1MDMsIDEyODU1OSwgMCwgNzgxOTQsIAorICAgIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDczNzQ3LCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIDc4NzU2LCAxMjcxMDgsIAorICAgIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDkxNzg2NywgMCwgODI2NiwgNDEwMDYsIDY1NzIyLCAKKyAgICA4MzA0MSwgMTA3MTAsIDc0MDQ1LCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCA4MzMxMywgNzA3MjksIDcxODg5LCAKKyAgICA2Nzg1NywgMTAwNTgyLCAwLCA5MjQxOCwgMTE3NTUsIDY2MzA1LCA2ODMzMiwgMCwgMTA5MTcsIDkzOTc5LCAwLCAxMTI3MiwgCisgICAgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCA4MzExOSwgODMxMjAsIDExNDEzLCAKKyAgICAxMjY1ODMsIDgzMTE1LCA1MjgzLCAxNTg2LCA0OTc4LCA2ODA1MCwgMTk4NCwgMTE4MzAsIDQzODE5LCA5MjI5MywgNDA5ODQsIAorICAgIDQyOTA0LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMTk0ODg4LCA0MTY2MywgMTI3ODk1LCA5ODMwNDUsIDY4MzEzLCA5MjM3LCAKKyAgICA5Mzg1LCA0MTY0OCwgMCwgMTI4OTUzLCAyMjk5LCA0MTY2NiwgMTgzMCwgNzM3ODMsIDIwNTYsIDQxMjg3LCA5MjYxMCwgCisgICAgOTgzMjk5LCA3MTkxNywgNDIyMTksIDY4MDg2LCAxMjAzMjcsIDQxOTg3LCA0MTY3NiwgMTI1MjE5LCA3Mjg0MCwgMTI2NTUzLCAKKyAgICA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDY3OTg4LCAxMTQ1MSwgODI5OTUsIAorICAgIDc4ODU1LCA0MjYzMSwgMjM1OSwgNzE4OTAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCA2NDM2OCwgCisgICAgMTI3MjcwLCAxMjA5MjUsIDY2MjcyLCAzOTcsIDQzNjIyLCA0MjEzOSwgOTU0NywgOTU5MCwgMTI4MjM4LCAxNjE0LCAKKyAgICA0MzY2MSwgNjQzNTYsIDY2MzA3LCA2NjUxLCAxMzU4LCAxMjA4NzEsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKKyAgICAxMTM3ODUsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMTI3OTkzLCAwLCA5ODMxNTEsIDU4MDQsIAorICAgIDExOTc2LCA4NTU0LCA5MjcyMSwgMCwgNzAxNjcsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMTI1MDk3LCAxMjEyOTAsIDc4MTM3LCAKKyAgICAxODgzLCAxMDk1MiwgODA0OCwgNzA0NDMsIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDEyODYxNiwgMTI4MzE5LCAxMjg2MjksIAorICAgIDQ0MDcsIDc0NjQ4LCA2NTgwOSwgMTE4MzcsIDE5NDgyMSwgODQ0OCwgNzE0MSwgNzQxODMsIDEyMDMzNCwgMTI2NzUsIAorICAgIDEyNjU5LCA3NDYzNCwgNDIzNjMsIDEyMDYyNCwgNjgwNzcsIDU1MjczLCAxMDc2NiwgMTIwMTIsIDIzODYsIDY0NzMyLCAKKyAgICA5MTcwLCA5MTc4MjEsIDkxMjMsIDY0NTg1LCAxMDI5NiwgMTE5MTU4LCA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCAKKyAgICA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAxMjY0NzcsIDEyMDYzNywgNDI0MTksIAorICAgIDY0Nzk5LCA0MjA0NywgMTI5NDE0LCAxOTQ4MjAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCAxMjY2MTYsIDc0MzAwLCAKKyAgICAwLCA2ODA4NywgNzQ4NDAsIDEyNjQ3NCwgOTE3NTM5LCAxMjg3OTEsIDkyMjI0LCA4NzM2LCAxNDE0LCA0MjY0MywgOTY4MywgCisgICAgNDM0ODYsIDc0MzQ0LCAwLCAyNTM2LCA5ODM5NDEsIDY2MzMwLCAxMjEyMzgsIDcyODY5LCAxMjA1NjIsIDExOTU1OCwgMCwgCisgICAgMCwgMTI3ODMxLCA2NjMxNywgNjk5NDUsIDY2MzE1LCAyMTA2LCA2NzgwOSwgMTEyNzMsIDEyMDk4NiwgNDMwMDQsIDc1NDEsIAorICAgIDgyOTg4LCAxOTQ3MzgsIDk2MSwgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI1MDgwLCAzMTA2LCA2NTkxNywgNDEyODQsIAorICAgIDE2OTYsIDk4MzEzMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIAorICAgIDEwOTM2LCAxMTkyNTUsIDAsIDAsIDE5NDgyNiwgOTI2ODgsIDM1NjYsIDIzMjIsIDEyMDM3MSwgNzA4MzEsIDExNDQ5LCAKKyAgICAxMjgxODcsIDQyODY4LCA0MTI4NSwgMzU0NywgOTgzNzE3LCAwLCAxMTM3NDYsIDk4MzQwMCwgNDMyMTYsIDYwODksIAorICAgIDc4NjgyLCA2ODQ5MCwgMTIwNTc4LCA0MTcwLCAxMDI5LCAxMjc3NjEsIDEwMDM4NCwgMTE5MjI0LCA0MjM3NCwgOTgzNTcxLCAKKyAgICA3NDQsIDkyODgzLCAxMTM3MzksIDE5NDkyNCwgNjU4MjMsIDEyNzgyNiwgMTExODIsIDM1NTEsIDkyOTM4LCA5ODM4OTEsIAorICAgIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgNjUxMzYsIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgCisgICAgMTIwODc2LCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDc0NTc5LCA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgCisgICAgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDk4MzY5NiwgMTI1MTM1LCA2MTc3LCA5MDIwLCAKKyAgICA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCA4NzU0LCAxMjI4OTQsIAorICAgIDEwMDY4OSwgMjEzNywgNDMwODEsIDE5NDY2MywgMTE5MTE0LCA5MTM2LCA2Njg4OSwgNDQwMSwgNDEyODAsIDcwODAxLCAKKyAgICA4OTc0LCAyMzA4LCAxOTQ3NTAsIDc0MTQ5LCAxMDEwNTAsIDIzMTgsIDEyMDY5MywgNjYzNjEsIDgxOTgsIDY1NjI2LCAKKyAgICA2NDM2MCwgMTI2MDEsIDQyNTM2LCA0MzkzMSwgMTIwODI3LCA0MzkzMCwgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAKKyAgICAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIDEyODQwMywgNzI4NjEsIDEwODc0LCA2NTUwNSwgCisgICAgMTIwMDAyLCA3Mjc4NSwgNDIwNTMsIDIwNzUsIDQyMDU3LCAxMTA4MywgNDIwNTIsIDAsIDY3MjY2LCA2NzY1MSwgMTIxMTA0LCAKKyAgICA5NjY1LCA5MjMwMCwgOTgzNjY2LCAxMzE4MSwgOTE3NjE3LCAwLCAxMjg5MzcsIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIAorICAgIDcyODY4LCAxMjAyMjksIDEyMDIyNCwgNzQxNzIsIDQxMTQ1LCA2NjQwNCwgOTQwOTYsIDc0NDIyLCA0MTE0OCwgODY4MywgCisgICAgNzU5NCwgMTEzNjg2LCA3NTAzMywgMTE5MDkwLCAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDEyMTQ1NiwgCisgICAgMzUxMiwgMTE5NjMzLCA5Mjk2NSwgODEwMywgNzgxNDAsIDEyMDg0NywgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIAorICAgIDEyOTA1NSwgNjk3NDIsIDQxNTQ0LCA2NTE0NiwgNjY4MDMsIDAsIDc4MTA5LCAxMjkxNzcsIDE5OTQyLCAxMjY2MTgsIAorICAgIDExODkwOCwgNzk4OCwgMTA0MzYsIDc0MjczLCAzMjcxLCA3MzgwNCwgNjQ3MTEsIDEyMDgyNCwgOTQwNjQsIDk4MzA3MSwgCisgICAgMTI4NjUyLCAzODA0LCAxMzA3MCwgMTE1NTcsIDQyMDQ0LCAxMjA4NTksIDEwOTUsIDAsIDM1OTksIDEyNzc3NCwgMCwgCisgICAgMTI4ODYxLCA4NTE0LCAwLCA5MTc1NzksIDAsIDc0MzQ2LCA2NjY5NywgMTI4Mzg1LCAxMTY4NCwgOTgzMTQ4LCA5MjQ4NiwgCisgICAgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCA3NDkyNywgNDIwNDYsIDcyODYyLCA0MDM2LCAxMjY0ODEsIAorICAgIDEyOTM3MywgMTI4MjEzLCAxOTQ4NjEsIDgzMzU1LCAxMTk1NCwgNzAzNDgsIDE0NTAsIDEyOTg2LCAxMzQwLCAwLCA2NTQ0MSwgCisgICAgOTI3MjIsIDAsIDEyNzA2MiwgNzI4NjUsIDEwMDgxOCwgOTE3NTQyLCA3MzgxMiwgNzI4NzUsIDY1MzksIDczODM2LCAKKyAgICAxMjY2MDcsIDEyMDcwMiwgOTIzOTAsIDAsIDEyMDQ5MiwgNDExOTAsIDM5NzMsIDExOTM2NSwgNDU3NSwgNDExOTMsIDc5ODIsIAorICAgIDQyOSwgMTIyOTAzLCA3ODg5MSwgMTI3ODc0LCAxOTQ4NDgsIDY1NzkyLCAxMjg0MDgsIDgzMjgyLCA2NDE3LCAxMTg5MTgsIAorICAgIDc4MTc4LCAwLCAxMjg5NzAsIDY2Nzg2LCAwLCA0OTE5LCAxMDU5MCwgMTI4MDkzLCA3NzU1LCAwLCA5Mjk0MiwgNjQ1NDgsIAorICAgIDEyMDUwNiwgMTYyMSwgMTAyMTQsIDY1MTI2LCA2ODI1MywgMTIwNjg5LCA5ODM2MTYsIDEyMTg4LCA5ODM2NjgsIDE2MTcsIAorICAgIDgwNTAsIDE5NTAzMSwgNTAxNSwgMCwgMTE5MTc0LCA0MjU5MCwgNzAzNTQsIDE3NTYsIDc4MTgxLCA5ODM5MTAsIDY1NzY4LCAKKyAgICA2MzUyLCA0MTg5MiwgMTI1MTg2LCA3NTU1LCAxMzEwMywgNTQwOCwgMjgxNywgMTIxNCwgNjk5MTksIDkyMzM1LCAxMjEyMDgsIAorICAgIDAsIDQyOTI2LCAxMjA4NzIsIDQxNzY0LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAzNTU5LCAKKyAgICAxMTkxNjIsIDU1Mjg2LCA3MDczLCA2NTg1MCwgMTIzMjcsIDcwODUzLCAxMTM3MjAsIDAsIDEyODEyMiwgNzI3NjEsIDIzNDEsIAorICAgIDg0NTAsIDg0ODQsIDg0NzQsIDcyODg1LCA2ODMyMiwgNzAwNzksIDg0NjEsIDY3NzIxLCAxMjE1MywgMTI3OTksIDAsIAorICAgIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIDQzODQ3LCAwLCA2ODEsIDk4MzI1NCwgNzAzLCAxMjc1MTgsIAorICAgIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIDkyMjg4LCA3MDUxNCwgMTI3MDU5LCA4MzE3NSwgNzE0MzYsIAorICAgIDExMzM4LCA3Mjc5MCwgMzI3NiwgMTI4OTY4LCAxMjAyMzMsIDY1OTI4LCAwLCAxMjEzNjcsIDY1MDIxLCA2NDc5NSwgCisgICAgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCA5ODM0OTAsIDY4NDc4LCAxNjMsIDU3NiwgCisgICAgOTg5NSwgMTY1NSwgNzAxMzEsIDc0NTkxLCA3ODgxNSwgNzg4MTYsIDY2ODg4LCAwLCAwLCA3MDUxMywgMTAwMzksIAorICAgIDEyMDQyNiwgNTYyNiwgNTYyMywgNTcxNywgNTc3NiwgNDM0ODgsIDgzNDk3LCA2Njg4NSwgNDE1OTEsIDExMDM2LCA2NTI1MiwgCisgICAgOTIzODIsIDAsIDAsIDEyMDExMSwgNjc4NDgsIDEyNzMwOSwgOTgzNTk1LCA5ODM0NzIsIDg4ODcsIDEyNzUyMSwgNzI5NSwgCisgICAgMTEwMzEsIDEyNTI1NSwgNDMxNTcsIDEwMDQ1MSwgODk0NiwgMTAzNDgsIDEwNDEyLCA4NzU1LCAxMTkxNTIsIDY3MzQzLCAKKyAgICA1NzE4LCAxMzIyMSwgOTgzMzQxLCA5ODMyNzgsIDc4MTM1LCA3MDUxNSwgOTE3NjE2LCA4ODEwLCA3NDQ5OSwgNjg2LCAKKyAgICAxOTQ3NzYsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMTI3NTIzLCAxMjA0MCwgNjU2ODksIAorICAgIDEwMTI4LCA2NTExOCwgNjgwMjksIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjgxMzgsIDI0MDEsIDY4MTQ0LCA4NzkyLCAKKyAgICA5ODMxNzksIDY4MDQ0LCA2NTQ1NSwgMTI5MzE1LCA3NDMyOCwgMCwgNzQ1NjEsIDEyMDc2MywgMTI4ODYsIDEyMDk1MiwgCisgICAgNjY2MjQsIDEyNjU3OCwgNDM1NTcsIDEwMzAwLCAxMDE2MSwgMTAzOTYsIDcxMjEwLCA3ODYwMiwgNzg3NzQsIDk5ODQsIAorICAgIDczODUxLCAzMDEwLCA2NDQxLCA3MDM0OSwgMTQ1OCwgNDE0NzUsIDcyNDI5LCA5Mzk3NSwgMTAwODE0LCAxMTQ3OSwgCisgICAgMTIxMzU1LCAxMjAzNTYsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzE0NzMsIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgCisgICAgNTUyMzAsIDEwMDQ1NCwgNDA1MiwgMTEzNjczLCA3NjI2LCA5ODM4OTAsIDEyMDkwNywgMTA0NSwgMTk1MDg2LCA1NjMxLCAKKyAgICA0MTExMywgMTIwNDk0LCAwLCA0MzcwNywgNzQxMjcsIDAsIDk4MzcxOCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIAorICAgIDk4MzE5NSwgMTI2NTYxLCA2OTIyMSwgMTAyNSwgMTI3Mjc3LCA0MjYyNSwgNzAzMjUsIDc4MDg0LCA0MTQ0MywgMTI5MTMwLCAKKyAgICAxMjgyMDYsIDAsIDE3NzQsIDE1MjMsIDEyMTMzMCwgNjgwNTksIDQxNDQ1LCA3ODIzNiwgMTEyMDcsIDg1NjcsIDQxNDQyLCAKKyAgICAzOTg4LCA3NDg0MywgNzgyMzcsIDExODkxMCwgOTgzMDY3LCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIAorICAgIDEyMTI3MiwgMCwgNDM0NDYsIDk4MzM0NiwgNjY1MTMsIDYyNTYsIDkxNzgwNywgNTc5LCA1NTIxOCwgMTAyMDYsIDc4MTk1LCAKKyAgICA2Mzc1LCAyNjczLCA5ODM4ODYsIDExODE0LCAwLCA0NDg4LCAxMjg3MTYsIDEyMDU1NCwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIAorICAgIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgCisgICAgNzgyNTcsIDcyMDMsIDEyNDk5OCwgNjE0LCA3MDM2MSwgMTI2NjMzLCAxMjA2MTUsIDExOTYyMiwgNzgyNjIsIDEyNzI3MSwgCisgICAgMTI3MzIzLCAwLCA0MzEyMSwgMTI3MjExLCAxMjcwMDMsIDkyNTEzLCAxMDUwLCA3NTQ5LCAxMjEyNjAsIDgyOTk0LCA5MzE0LCAKKyAgICA3MDM2NSwgOTI4OTgsIDY4MDM5LCAxMjcwNjEsIDEwMDU3LCA3MDQzNCwgMTI3MzEzLCAxMjg1NzcsIDY2NTA0LCAxMjA5NjMsIAorICAgIDgyOTkyLCAyMzA3LCAxMjg0NTYsIDY0MzMzLCAxMjczMTIsIDExOTkwMCwgNzM4NzMsIDk4MzEyNiwgOTQwMzUsIDk4MzA4MywgCisgICAgMTI3OTczLCAxMjg3MDgsIDcwNDQ2LCAxMDM2MCwgNjc0NiwgMTIwNDczLCA5MjI0NSwgNDQwLCAxMjg4MjYsIDEzMDg1LCAKKyAgICA5MjMzLCA3NDIxNiwgOTgzNTY2LCAxMDEwODksIDk5NTcsIDEyNTIxMywgNjY0NDcsIDgwNDYsIDY0OTYzLCA2NTc3NywgCisgICAgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDEwMDQ2NiwgMTUyMSwgOTg5NiwgOTM5NjUsIDEwNDg3LCA2OTg3OCwgCisgICAgMTI1MjcsIDY4NzM3LCA3OTcwLCAxMjUwNzMsIDEyODY2MCwgNzMwMywgNjU3NjksIDUyNDMsIDk4NDksIDUyMzksIDY1NzcxLCAKKyAgICAxMjE0MjksIDAsIDUyMzcsIDY5NzE0LCA2ODc1NiwgMTAxMDMsIDUyNDcsIDQ3NjksIDEyOTMwMiwgMTE4OTc3LCAxMjg3MywgCisgICAgMjI4MywgOTI5MzEsIDEwMDUyNSwgMzAwOCwgNDg5NiwgMTI4MTAyLCAxMjA4NywgOTgzMjQwLCA1NTIzMSwgNDExMDMsIAorICAgIDc1MDExLCA2NDU2NSwgNDc3MywgMTIwODQ2LCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCA5MTc1NjcsIDg3MzEsIAorICAgIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDExOTA3MSwgNDc3NCwgMzAxOSwgOTk5NywgMTI4MzQsIDAsIAorICAgIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDEyMDQxMywgNzg1NTYsIDEyNjk5MCwgMTIxMzMyLCA3NDc3NiwgNDI4MSwgNDc2OCwgCisgICAgMTIwNTcyLCA0MTUzNSwgNDA5OSwgOTAxNywgNjk5OTMsIDk4MzY5MiwgNzgwOTUsIDIyMjUsIDc4MDk2LCAxMTg5NDYsIAorICAgIDEyMDI1MiwgMCwgNzgwOTgsIDAsIDQyODE0LCA4ODAsIDEyODkyNiwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMTI3Mzg4LCAKKyAgICAxMDExNiwgOTg3NywgNzA2NzksIDEyODk2MCwgMCwgNzA5NSwgODM3OSwgNzQxMTYsIDY3NzgsIDEyMTE1NSwgNzgwOTAsIAorICAgIDgyNDMsIDI0MjcsIDEyODE0MSwgNzA5MywgOTgzODc5LCAxMTU4NSwgMTk1MDAzLCA5OTYyLCA4Mjk5MCwgMTIyMjMsIAorICAgIDEyODQ4NSwgOTI0MzAsIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCA4MzM4OSwgNzQ0MTksIAorICAgIDEyODUzMCwgMTk0Njg2LCA1NTI4MywgMCwgNzAzNjMsIDc0NDM3LCAxMTU2LCA4NzQwLCA4MzI5NSwgMzc4MiwgNjQzMzEsIAorICAgIDAsIDQxMzcwLCAxMDE0LCA4MjYxLCAxMjA5NTYsIDkxNzU5NiwgMTA4MzUsIDEyNTIzOSwgNjU1MzYsIDgzMjk0LCAKKyAgICAxMjA0NjMsIDEyNTA1MSwgNzcwMiwgMTE4ODI0LCA3MzAyLCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgCisgICAgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgNzUwMTgsIDEyMDQ3MSwgNzQ5MjMsIAorICAgIDQyMjU3LCA1Njk2LCA5MjY3NywgMTIwNDY1LCAzODYyLCA5NjQzLCA5MTc5NTEsIDcwMTgzLCA3NjM0LCA2NTE2NywgOTg0NSwgCisgICAgMCwgMCwgNTcwMSwgOTcyMiwgNDE0OTAsIDEyODcxOSwgMTQyNiwgNjgyMTcsIDEyODY2OCwgNjg0NDcsIDQyMjA0LCAKKyAgICA1NTI3MCwgODU3MSwgNjc0MDMsIDc4MDY3LCA0Mzg1OSwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIDAsIDQyMDIyLCAKKyAgICAwLCAxMDI4MSwgOTE3Nzk4LCA1NjUwLCA0MzE5NCwgNjQ3MTIsIDEwNzQ0LCA3ODg4NywgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKKyAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDEyODM2MiwgMzk0NSwgOTI1ODksIDk4MzQ2NiwgCisgICAgNzA2NjQsIDc4ODgzLCAxMjgxMjgsIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCA5ODM4MzUsIDc4NzMxLCA1NjQ4LCAKKyAgICA2NDc0OCwgMTIwOTIwLCA0MjIzNiwgMTAyMDUsIDM1NDUsIDEyOTEyMSwgNjk4NCwgMTI3NzcxLCA3NDA1MSwgMTI4OTAxLCAKKyAgICA0MzI0MiwgMTIwNDU4LCAyNjY3LCAxMjgxNzMsIDEyNTAzNywgMTk0NzQ2LCA5OTExLCAxMjA1OTAsIDY1MDIwLCAxMDA5NywgCisgICAgMTE5MTY2LCA3ODY5NiwgOTgzNjYyLCAxMTg4MzYsIDk4Mzc0OCwgNzgyMDgsIDExNDAsIDc4NDI2LCAxMjgyMDUsIDEwMTU5LCAKKyAgICAwLCAwLCA4MTI4LCA3Mjg1NywgNjgzMjYsIDE5NDkxMSwgMTgxNSwgMTk5MTAsIDg5MCwgMTI0OTM1LCAzMjY3LCA5MjI5MSwgCisgICAgOTE3NjI5LCAxMDEyMywgNzI4ODIsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgOTgzNzQ2LCAKKyAgICAxMjgzNDcsIDcyODg0LCAwLCAxMjgwOTgsIDE5OTM4LCA2NTkwNiwgMTI3ODE5LCA3Mjg4MywgMTI4ODU4LCAzMjk4LCAKKyAgICA1Mzc1LCAxMDE0MiwgMTAwNDIxLCA4MjE1LCA5MjYzMywgNjEzNCwgNDEyNDYsIDY0NDAyLCA5ODMxNDcsIDY5ODk5LCAKKyAgICAxOTQ5MzgsIDk4MzYwMiwgMTIxNDI2LCA0MTM4MiwgOTE3OTI2LCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCA1MjcsIDEyMTE3NCwgCisgICAgMTEzNzgyLCA3ODQ2OSwgMTI4MjUwLCA3ODc5NywgMTE5MTUsIDEyMTM4NiwgMCwgMTAwNzIsIDAsIDQyNjk1LCAyMzI5LCAKKyAgICA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgNjY4MDYsIDgzNDYwLCA5ODMxODksIDExMzcwNSwgCisgICAgMTI4NTMyLCAxMTIwMSwgOTI3MDgsIDc0NzY5LCAxMjY0NzAsIDY3NjgwLCA5MDY5LCA2MTQ0LCAxMjEyNDYsIDExOTg0MCwgCisgICAgNzA3MDAsIDEyMTQzOCwgNjY3ODMsIDY0OTE3LCA0MTUyMSwgMTE4OTM0LCA0OTQsIDEzMjUwLCA5MjI1MCwgNjUwOTgsIAorICAgIDYzNjQsIDk1NiwgNjY3OTQsIDEyODMwLCAxMDQ2MiwgNzM3NDAsIDczNzM0LCAxMjkxMDksIDAsIDk4MzczOSwgNjY0NDksIAorICAgIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDcwNzE0LCAxMDA5NDIsIDYzODg1LCAxMjcyNTEsIDEwNDQsIAorICAgIDQxMjc2LCAxMjgzNjMsIDAsIDAsIDQyMDY4LCAxMTc5NSwgMTI0OTg1LCAwLCAxMjcyMDIsIDAsIDQyNDUwLCAzOTA3LCAKKyAgICAxMjQ5OTUsIDY0NTI2LCAxMTgyOSwgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgNzAzMjksIDMwMjAsIDExNTM3LCAwLCAKKyAgICA2NjQ0MSwgMTIwNzYxLCA3MDk4LCAxMjUwNzEsIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDEyNzIzOSwgMzAxNiwgNDIyNzQsIAorICAgIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIDY2NTcxLCA3ODQ3MiwgNzEyMDcsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzMzMwLCAKKyAgICAxMjAxMDcsIDEyOTM1MCwgNjQ2NTksIDkxNzkxNywgMTI3NzQ5LCA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgNzEzMzcsIAorICAgIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIDAsIDY0NDc3LCA5MTc4NTMsIDQzODEzLCAxMDUzLCAKKyAgICAxMDA0MzIsIDc4MjY5LCAxMDA0MzQsIDkyOTc3LCAxMDUyLCAxMDUxLCA0NTksIDEwNjAsIDc0MzQ5LCA2NjQ3OSwgNjc2ODksIAorICAgIDY2ODcxLCA5MTc4NDUsIDcwMzI3LCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIAorICAgIDEwMDQ0OSwgNDM1MTQsIDEyMTMwLCAxMDA0NTAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAxMjc4NTAsIDk4MzE0NCwgCisgICAgMTI3ODI4LCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCA4MzM0NSwgNzUwNjUsIDkxNzk1MywgNjM1OCwgNjM2MSwgCisgICAgMTkyNiwgNjM1NiwgNzI4NTUsIDc4OTgsIDgxMTAsIDEwOTM1LCAwLCAxMDA2OSwgNTgzMCwgMTAwNDI1LCA0MzY4NSwgCisgICAgNzQzMDcsIDEwMDQyNiwgNDI5MTAsIDgzMzAxLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAxMjg2MjEsIDExOTU4NywgOTIxOTIsIAorICAgIDEyMTQ1NCwgNjU4OTQsIDE5NDY5NCwgMCwgNjQyOTYsIDk4MzY4MSwgOTgzMzk0LCAxOTQ5NTksIDExOTE4NywgMjEzNSwgCisgICAgMTE4MzYsIDAsIDEyOTM2MSwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgNDM4NTQsIDcxOTEzLCAKKyAgICA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDc4NjIwLCAxMDEwMzgsIDY4ODMzLCAKKyAgICA5MjI1NCwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCA0MjQ2NSwgCisgICAgNDEzMzAsIDE5NDk0NSwgNTc5NSwgNjU1MTIsIDY4Nzc0LCA2NTcwMiwgNjg3NzAsIDEyMDgwMSwgNjUyNTEsIDY4MjI4LCAKKyAgICA2NTcxMCwgMTI4Mzk5LCA5NDE3NiwgNjc2NzIsIDY4NzgzLCA1MzcwLCA3MDQ2NSwgMjkzMSwgMTYzOCwgMTA5NjYsIAorICAgIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDc0NTg1LCA4MTcyLCA0MjAxNywgOTI3NTYsIDEwODQ0LCAKKyAgICAxMjEwMTYsIDEyODE5NSwgOTI0MjQsIDYzNzQsIDkyNjM2LCAxMDA0MzgsIDI4NiwgNzgwMjMsIDEwNjIsIDAsIDExOTk5OSwgCisgICAgMTAwNDM3LCA3Mzk1LCAxMjc3ODMsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMTI4OTI4LCAzMDE1LCAKICAgICA2ODc0MywgNjg3NDAsIDUyMTEsIDY4ODA1LCA2NDAwLCA2ODc0OSwgNjg3NDgsIDY4NzYwLCA4MTg5LCAxMTI3NiwgNjg3NTQsIAogICAgIDcwMjg0LCAzNzIsIDEyODgyOSwgNjg3NjEsIDExMzc4MywgNDIxMDIsIDQxNTg1LCAxMjc3NTEsIDAsIDQyMTAxLCAyNzYsIAogICAgIDc4NDAyLCA2NzQyNywgMzMsIDY3NDI1LCA2NzQyNCwgOTAwNywgNjc0MzAsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgCi0gICAgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCA5ODM5NDMsIDEwMzEsIDYyNTcsIDkyNDg5LCA0MjEwNCwgMCwgOTgzOTgwLCAyMzI4LCAKLSAgICA2NjgzNywgMTA3MSwgNDI4OTksIDEyNTA4OCwgNzQ4NDgsIDEyMDg1NywgMTEzNzkzLCAxOTQ5ODEsIDEwNDcsIDAsIAotICAgIDE5NDk0MywgNDI5MDgsIDEyODQ4MCwgNjk3MjMsIDEwNjUxLCA3MDM1NiwgMCwgMTI1MTEzLCA3MjQzMywgNjY4MjksIAotICAgIDcwODE3LCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAwLCA1NzEwLCAxMjg1NTEsIDY3OTAsIDY1MTY4LCAKLSAgICAxMzIxNiwgOTgzMTUwLCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCA1NzE1LCA2OTY1NCwgNzE5MTUsIAotICAgIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgMCwgODY0MywgNjg1MjUsIDAsIDExODkwNiwgMjc1NywgCi0gICAgMTEwNjcsIDk3MTgsIDY2NDE5LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMCwgMCwgNzExNzMsIDc4NjA3LCA5MTk2LCA2OTY3MCwgCi0gICAgMTI1MDcwLCAwLCAxMjgzMzgsIDEyMDMzNSwgMTE4OTExLCAwLCA5NDA0MywgMTI5MTk0LCAwLCAwLCAxMjAwMTAsIDczNzk1LCAKLSAgICA4NzAxLCA2ODEzMCwgMTE5NjE2LCAxMjA1MjIsIDAsIDQyNDc3LCAxOTQ5OTQsIDEyMTIzLCA0NDk1LCA0MzU2OSwgMCwgCi0gICAgMTI5Mjk2LCAwLCA2NDk0NiwgMTA5OTIsIDAsIDc0NTY2LCA3MDMzNiwgMTEzNjg4LCA5MzE4LCA5Mzk4NiwgMTMyNDksIAotICAgIDQyOTAyLCA3MzgwOCwgMCwgNjU0NTcsIDQyMjQ5LCA3NjM5LCA0Mzk5NSwgNjc4NDUsIDQyNjQxLCA1NDU0LCAwLCAwLCAKLSAgICA3MDM2NiwgMTIwMDA1LCAxMTk1ODUsIDEyMTIxMiwgNTA4NCwgMTIxMTg5LCAxMjExMzQsIDc1MDYyLCAwLCA3MzMsIAotICAgIDc0NjQ2LCA3ODAxNCwgNjg3NjcsIDc4NDM1LCAxMTIwNCwgMCwgOTIxOCwgMTczMSwgMCwgOTI5MzcsIDcxMDcwLCA2Nzk5MCwgCi0gICAgOTgzMTI1LCAwLCAwLCA3MDMyMywgMTIxMzcxLCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCA1MzU4LCA5ODM3NDQsIDAsIAotICAgIDkxNzc2NywgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDEyMTMxNiwgNzgzMTUsIDY4NDMwLCA2Nzk4MCwgCi0gICAgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMTI3OTYwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAxMTU4MCwgCi0gICAgNDM2NTcsIDY0NjAxLCAxMjIwNSwgOTI3ODIsIDAsIDY0NTA3LCA4ODY4LCAzOTksIDY3OTc4LCA3NDg0MiwgOTgzMjg2LCAKLSAgICAxMjEzMzYsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAxMDE1NiwgMTIxMTksIDkyNTcyLCAxMTg5MTYsIDI1NDQsIDY1MDc0LCAKLSAgICAxMTkyMTEsIDk4MzI5OCwgMCwgNzgwMTEsIDM1MSwgNjg3NjQsIDAsIDEyODcxMywgNTUyMjksIDAsIDc0MjY4LCA3ODAwOCwgCi0gICAgMTI4MDk0LCAwLCA0MjM3NywgMCwgMCwgMCwgMTEzNzY3LCA3NDMyMCwgOTAxMywgNDA1NCwgMCwgMTk0NTgwLCAxMTM3NDAsIAotICAgIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDc0NDU3LCAxMTEwNCwgNTU4NCwgODM1OCwgMTI2NDczLCAKLSAgICA2NDIxNSwgNjY4NjQsIDEwOTE5LCA3MDQ4MCwgNzk4MCwgMTI2NjAxLCAxMTM2OTgsIDIyMTgsIDQxODAwLCA1NTg5LCAKLSAgICA4Mjk4MywgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgMCwgMTEzNTYsIDEyMTEyMCwgMTk0ODMzLCA0MzQ1MiwgNjcyNDUsIAorICAgIDExODgxOSwgNzA4NzIsIDEyNzg4NCwgMTAwOTkwLCAxMDMxLCA2MjU3LCA5MjQ4OSwgNDIxMDQsIDEwMDM5NiwgMTAwMzk1LCAKKyAgICAyMzI4LCA2NjgzNywgMTA3MSwgNDI4OTksIDc0NDE4LCA3NDg0OCwgMTIwODU3LCAxMTM3OTMsIDEwMDQwMSwgMTA0NywgCisgICAgMTAwNDAzLCAxMDA0MDIsIDQyOTA4LCAxMDA0MDQsIDY5NzIzLCAxMDY1MSwgNzAzNTYsIDEwMDQwOCwgMTI1MTEzLCAKKyAgICA3MjQzMywgNjY4MjksIDcwODE3LCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAwLCA1NzEwLCAxMjg1NTEsIAorICAgIDY3OTAsIDY1MTY4LCAxMzIxNiwgMTAwOTM1LCA2OTcxNiwgNjk3MjYsIDAsIDY0NjExLCA0MTYyMywgMTk1MDAxLCA1NzE1LCAKKyAgICA2OTY1NCwgNzE5MTUsIDk4MzcyMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAxMDAzODksIDg2NDMsIAorICAgIDY4NTI1LCAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA2NjQxOSwgODkxMCwgMTA2ODksIDY0NzksIDEyNTE5NiwgCisgICAgMTI5MTc4LCA3MTE3MywgNzg2MDcsIDkxOTYsIDY5NjcwLCAxMjUwNzAsIDAsIDEyNTE4NCwgMTIwMzM1LCAxMTg5MTEsIAorICAgIDQxNjQ1LCA5NDA0MywgMTI5MTk0LCAxMjcwODcsIDEyODQ4MCwgMTEzNzcwLCA3Mzc5NSwgODcwMSwgNjgxMzAsIDExOTYxNiwgCisgICAgMTIwNTIyLCA0Mzc1NCwgNDI0NzcsIDEwMDQ1OSwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAxMjkyOTYsIDc0NTU3LCAKKyAgICA2NDk0NiwgMTA5OTIsIDAsIDc0NTY2LCA3MDMzNiwgMTEzNjg4LCA5MzE4LCA5Mzk4NiwgMTMyNDksIDQyOTAyLCA3MzgwOCwgCisgICAgOTgzMzM1LCA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDcwMzY2LCAKKyAgICAxMjAwMDUsIDEwMDM2OSwgMTAwMzY4LCA1MDg0LCAxMDAzNzAsIDEyMTEzNCwgNzUwNjIsIDk4MzQ2MiwgNzMzLCA3NDY0NiwgCisgICAgNzgwMTQsIDY4NzY3LCA3ODQzNSwgMTEyMDQsIDAsIDkyMTgsIDE3MzEsIDEwMDM4MCwgOTI5MzcsIDcxMDcwLCA2Nzk5MCwgCisgICAgOTgzMTI1LCA5ODMzNzAsIDAsIDcwMzIzLCAxMjEzNzEsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIDUzNTgsIDEyODUxNSwgCisgICAgMTI5MzE2LCAxOTQ5ODEsIDY0NDI0LCA3MTIzNiwgMzg0MCwgNjQzMTQsIDQxNDMyLCAxMjEzMTYsIDc4MzE1LCA2ODQzMCwgCisgICAgNjc5ODAsIDQzMjUzLCA2NTk0MywgMTAwMzczLCAzMzcxLCAxMDk4OCwgMTAwMzc4LCA4NzcxLCAxNDc5LCAxMDAzNTcsIAorICAgIDEwMDM2MCwgMTEwOSwgMTE1ODAsIDQzNjU3LCA2NDYwMSwgMTIyMDUsIDkyNzgyLCAwLCA2NDUwNywgODg2OCwgMzk5LCAKKyAgICA2Nzk3OCwgNzQ4NDIsIDk4MzI4NiwgMTIxMzM2LCAxMjE0OSwgMTMwODgsIDU1MSwgMTk0OTcyLCAxMDE1NiwgMTIxMTksIAorICAgIDkyNTcyLCAxMTg5MTYsIDI1NDQsIDY1MDc0LCAxMTkyMTEsIDEwMDM1NCwgMTAwMzUzLCA3ODAxMSwgMzUxLCA2ODc2NCwgCisgICAgOTE3OTgxLCAxMjg3MTMsIDU1MjI5LCAwLCA3NDI2OCwgNjY3OTAsIDEyNzMyNywgMTAwMzYxLCA0MjM3NywgMTAwMzYzLCAKKyAgICAxMDAzNjIsIDEwMDM2NSwgMTAwMzY0LCA3NDMyMCwgOTAxMywgNDA1NCwgMCwgMTk0NTgwLCAxMTM3NDAsIDM0NDcsIAorICAgIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDc0NDU3LCAxMTEwNCwgNTU4NCwgODM1OCwgMTI2NDczLCA2NDIxNSwgCisgICAgNjY4NjQsIDEwOTE5LCA3MDQ4MCwgNzk4MCwgMTAwNzIzLCAxMTM2OTgsIDIyMTgsIDQxODAwLCA1NTg5LCA4Mjk4MywgCisgICAgMjY2NCwgNDE2MTMsIDU1ODYsIDExODg5MCwgNzQ1MjIsIDExMzU2LCAxMjExMjAsIDEyODE3NSwgNDM0NTIsIDY3MjQ1LCAKICAgICA5Mjk5MywgNDI1NzMsIDY2ODc5LCA4MzMyOSwgNjc4MTAsIDY5NzY3LCA3ODc1MiwgNzQzOTIsIDgxMzUsIDY0NTAsIAotICAgIDEwMDU1LCA3Nzk5NiwgMTE5OTQ4LCA5ODMxNzMsIDExOTIyNSwgNTY1NywgMCwgOTYyNiwgMTIxNDUzLCA3Nzk5NCwgCi0gICAgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgMTIwNzk5LCA3MTg2MCwgMCwgNTY1MiwgMTA5NDUsIDE5NDU5OSwgNjY0ODYsIAotICAgIDAsIDM2NjEsIDc4NjMsIDAsIDY4MDY5LCA5ODM2NzUsIDcwMzMyLCAxMjcxOTQsIDU2NTksIDE5NDYwNiwgNzg2OTIsIAotICAgIDY2NzI5LCA1NjU1LCA5ODM2MjYsIDQyMTY4LCAxMjExMzEsIDEwNTUsIDcxMTcxLCA3MTg4OCwgNjYzMTAsIDc0MDMwLCAKLSAgICA3MDUxNiwgMTIxNDYsIDcwMzYyLCA3Mzk1NiwgMTE2MTgsIDAsIDQyNzIwLCA5Mjk0OSwgMTAyNzIsIDEwMzA0LCAxMDM2OCwgCi0gICAgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA3NDk3OCwgNjQ4NzAsIDc0MTkxLCAzNDY3LCA3MTA3MywgNzg4MSwgCi0gICAgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgNzAwMzYsIAotICAgIDY5Njk2LCA2OTc2OSwgNjQ2NTYsIDkxNzk5NSwgMCwgOTI0MDksIDcwMDU2LCA1NjY2LCA2NTIyNywgNTMxOCwgNjM5OTQsIAotICAgIDExOTU5NiwgOTA5MSwgMTA3OTgsIDc4NjY0LCA3ODUwOCwgMTAxODYsIDk4MzI2NSwgNzczMiwgOTgzNzI0LCA2NDU1NiwgMCwgCi0gICAgOTgzOTc5LCA1NjY4LCA3NDQ0NSwgNzQ5ODIsIDc0NjQ1LCA1NjcwLCAxMTM3OTUsIDEyNzI5NywgMTE4MjAsIDI5OTIsIAotICAgIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDc0OTgxLCAxMjc0OSwgNzQ1NTEsIDY3NzU3LCAwLCA2NjQ5NiwgNDM2MSwgCi0gICAgMTE5MjYwLCAxMzA2LCA5Mjg2LCAxNDk3LCAxMjgyODYsIDk0MDA0LCA3MDM1OSwgMCwgMzU3MSwgMTMyNDcsIDU4NzQsIAotICAgIDc5NzMsIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgNzQ2MjEsIDc4MjY1LCA1NTMsIDExMzc2OCwgCi0gICAgMTI3MDEyLCA5MzA1MywgNTgyOSwgMCwgNDU4NywgNzgyODUsIDY1OTEyLCAxOTQ5MTksIDEyNzQ2LCAxMjg2NzEsIDcwMzM4LCAKLSAgICAxMTk5MjQsIDU2MzMsIDExOTkyNywgNzQyNTksIDk0MTAyLCA5NDA5OSwgNjQ5MDUsIDk0MTA1LCA5NTEyLCA5NDEwMywgCi0gICAgMTI3NDIsIDY0NDMsIDk4MzgwNiwgMCwgOTEzNSwgMTI4ODYzLCA0MTU2NCwgMTIxNTE3LCA1NTIxOSwgMTI4ODMyLCAKLSAgICA5ODM4NTEsIDE5NDg3NywgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIAotICAgIDEyODkwMywgMTI0OTM2LCAxMjgzOTAsIDgzMjE1LCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIAotICAgIDMyOCwgMTIxMDMxLCA2ODczNiwgNjk4MTUsIDU2MzYsIDExOTkxNywgNTMyOSwgMTIxMjkzLCA1NjM4LCA4MzE2NiwgNzk0MCwgCi0gICAgNjQ5MzgsIDQzMjIzLCA0Mzc2MCwgNTYzNSwgMzM3MywgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA2ODc2MywgNjIwMywgCi0gICAgNDI0NywgNzExNjksIDExOTIwLCA4Mjc0LCA2ODI0MCwgOTgzNjU4LCAxNjU3LCA0MTU2MSwgNjg3NzgsIDc4Mjk1LCA1NjM5LCAKLSAgICAyOTU0LCA1NjYwLCA1NjQwLCA3ODMwMywgOTgzNjg1LCA3MTE3OSwgNDIyMjcsIDY4MzAxLCA4MzMyMiwgNDE2MzcsIAotICAgIDY3ODcyLCAxMjExMDUsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIDExNzA1LCA1NjQyLCAwLCA1NDg2LCAKLSAgICAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDY5OTM4LCAwLCA1NjQxLCA4MjU5LCAxMjY5OTQsIDEwNTgsIDAsIDY3NjMwLCAKLSAgICAwLCAxMjg5MjcsIDExNDQsIDc4NzUwLCAxMjcyOTMsIDQyMjI4LCA5ODM3MTQsIDczODkwLCAxMTg5NzIsIDEyNzM1MiwgCi0gICAgMjgwMCwgODMyMDksIDU2NDUsIDY0OTY0LCA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDEyMTM1NiwgNTYwOCwgNjU4OTAsIAotICAgIDQzODA4LCAxOTQ5NzIsIDY3NjIxLCA2NDkzMiwgOTAwMCwgNzEyMDQsIDY3MjM1LCA5MjY3MywgMTg2NSwgMTI4NzA2LCAKLSAgICA1NjEzLCA2NjQwMSwgMTIxMTQ1LCAwLCA1NjEwLCA5ODMyMjYsIDcxMTk5LCA2NTgyNiwgMjA2OSwgMCwgMTA3ODcsIAotICAgIDQzOTk5LCAyOTk3LCAxMTk5MzIsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA1ODc1LCAyNDEyLCA4MzIwNiwgCi0gICAgODE4NiwgOTgwNywgNzQyNjksIDY2Mjk0LCAxMzEzMCwgNjU4NzQsIDcxODU1LCA1ODA3LCAxMTM2NzgsIDEwMDMwLCA1MzA2LCAKLSAgICAxMjM2NCwgMTE4ODYzLCA5Mjk3MCwgMTE3MDQsIDgzMjAyLCA5MjU4MywgMTAyMTEsIDAsIDEyMDU3OSwgMCwgMTIxMDYzLCAKLSAgICAxMTcwNiwgOTcxMCwgMTI1MDIyLCA4Mjk4NSwgMTIwNjU1LCA0MTMsIDY1NjIzLCA3MTE4LCA4MzE2NywgOTEzMywgNzQyNjIsIAotICAgIDkxNzk2NCwgMTA0MiwgMTI1MDY4LCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIDQ5ODQsIDEyMTI2NiwgCisgICAgMTAwNTUsIDc3OTk2LCAxMDEwMzMsIDk4MzE3MywgMTE5MjI1LCA1NjU3LCAxMDA0NDMsIDk2MjYsIDEyMTQ1MywgNzc5OTQsIAorICAgIDEwMTc5LCA1NjU0LCAxMjkzOSwgOTI1NzMsIDEyMDc5OSwgNzE4NjAsIDkxNzkzOSwgNTY1MiwgMTA5NDUsIDE5NDU5OSwgCisgICAgNjY0ODYsIDk4MzM2MCwgMzY2MSwgNzg2MywgMCwgNjgwNjksIDEwMTA4NCwgNzAzMzIsIDEyNzE5NCwgNTY1OSwgMTk0NjA2LCAKKyAgICA3ODY5MiwgNjY3MjksIDU2NTUsIDEyMTAxMiwgNDIxNjgsIDEyMTEzMSwgMTA1NSwgNzExNzEsIDcxODg4LCA2NjMxMCwgCisgICAgNzQwMzAsIDcwNTE2LCAxMjE0NiwgNzAzNjIsIDczOTU2LCAxMTYxOCwgNzI3MDksIDQyNzIwLCA5Mjk0OSwgMTAyNzIsIAorICAgIDEwMzA0LCAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA3NDk3OCwgNjQ4NzAsIDc0MTkxLCAzNDY3LCAKKyAgICA3MTA3MywgNzg4MSwgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgCisgICAgMTk0OTc4LCA3MDAzNiwgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTE3OTk1LCAwLCA5MjQwOSwgNzAwNTYsIDU2NjYsIDY1MjI3LCAKKyAgICA1MzE4LCA2Mzk5NCwgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgOTgzMjY1LCA3NzMyLCAKKyAgICA5ODM3MjQsIDY0NTU2LCAwLCA5ODM5NzksIDU2NjgsIDc0NDQ1LCA3NDk4MiwgNzQ2NDUsIDU2NzAsIDEwMDgzMCwgCisgICAgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgNzQ5ODEsIDEyNzQ5LCA3NDU1MSwgCisgICAgNjc3NTcsIDIyNjMsIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDEyODI4NiwgOTQwMDQsIDcwMzU5LCAKKyAgICAwLCAzNTcxLCAxMzI0NywgNTg3NCwgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCA3NDYyMSwgCisgICAgNzgyNjUsIDU1MywgMTEzNzY4LCAxMjcwMTIsIDkzMDUzLCA1ODI5LCA5ODMyNDcsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgCisgICAgMTk0OTE5LCAxMjc0NiwgNzI4MDYsIDcwMzM4LCAxMTk5MjQsIDU2MzMsIDExOTkyNywgNzQyNTksIDk0MTAyLCA5NDA5OSwgCisgICAgNjQ5MDUsIDk0MTA1LCA5NTEyLCA5NDEwMywgMTI3NDIsIDY0NDMsIDk4MzgwNiwgMCwgOTEzNSwgMTI4ODYzLCA0MTU2NCwgCisgICAgMTIxNTE3LCA1NTIxOSwgMTI4ODMyLCA5ODM4NTEsIDEyODAyNiwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMTE5OTE0LCAKKyAgICAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgMTI4OTAzLCAxMjQ5MzYsIDEyODM5MCwgODMyMTUsIDI0MjUsIDY1MTgyLCAxMjg3NjksIAorICAgIDQzNjM2LCA1MjIxLCA3ODQxMCwgMzI4LCAxMjEwMzEsIDY4NzM2LCA2OTgxNSwgNTYzNiwgMTE5OTE3LCA1MzI5LCAKKyAgICAxMjEyOTMsIDU2MzgsIDgzMTY2LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgCisgICAgNzQyMjMsIDM0MzcsIDY4NzYzLCA2MjAzLCA0MjQ3LCA3MTE2OSwgMTE5MjAsIDgyNzQsIDY4MjQwLCAxOTQ3NDEsIDE2NTcsIAorICAgIDQxNTYxLCA2ODc3OCwgNzgyOTUsIDU2MzksIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCAxMjE0MjAsIDcxMTc5LCA0MjIyNywgCisgICAgNjgzMDEsIDgzMTY4LCA0MTYzNywgNjc4NzIsIDEyMTEwNSwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEwMDczMSwgCisgICAgMTE3MDUsIDU2NDIsIDEwMDczMiwgNTQ4NiwgMTAwNzM0LCA0MzU2LCAxMTcxMCwgMTAwNzM5LCAxMjA1MSwgNjk5MzgsIAorICAgIDEwMDc0MCwgNTY0MSwgODI1OSwgMTI2OTk0LCAxMDU4LCAwLCA2NzYzMCwgMTAxMDE2LCAxMjg5MjcsIDExNDQsIDc4NzUwLCAKKyAgICAxMjcyOTMsIDQyMjI4LCA5ODM3MTQsIDczODkwLCAxMTg5NzIsIDEwMDU1MCwgMjgwMCwgODMyMDksIDU2NDUsIDY0OTY0LCAKKyAgICA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDEyMTM1NiwgNTYwOCwgNjU4OTAsIDQzODA4LCAxMjgzMzUsIDY3NjIxLCAKKyAgICA2NDkzMiwgOTAwMCwgNzEyMDQsIDY3MjM1LCA5MjY3MywgMTg2NSwgMTI4NzA2LCA1NjEzLCA2NjQwMSwgMTAwNzIxLCAKKyAgICAxMDA3MjQsIDU2MTAsIDEwMDcyNiwgNzExOTksIDY1ODI2LCAyMDY5LCAxMDA3MzAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgCisgICAgMTE5OTMyLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNTg3NSwgMjQxMiwgODMyMDYsIDgxODYsIDk4MDcsIAorICAgIDc0MjY5LCA2NjI5NCwgMTMxMzAsIDY1ODc0LCA3MTg1NSwgNTgwNywgMTEzNjc4LCAxMDAzMCwgNTMwNiwgMTIzNjQsIAorICAgIDExODg2MywgOTI5NzAsIDExNzA0LCA4MzIwMiwgOTI1ODMsIDEwMjExLCAwLCAxMjA1NzksIDAsIDEyMTA2MywgMTE3MDYsIAorICAgIDk3MTAsIDEyNTAyMiwgODI5ODUsIDEyMDY1NSwgNDEzLCA2NTYyMywgNzExOCwgODMxNjcsIDkxMzMsIDc0MjYyLCAKKyAgICA5MTc5NjQsIDEwNDIsIDEyNTA2OCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIDYxODUsIDY0Nzc2LCA0OTg0LCA4MzE5OCwgCiAgICAgNzA4LCAxMTM5MSwgMCwgMTIyNDEsIDkyNzIwLCA4MzM5OSwgMTMwOCwgMTIxMjU4LCAyNTM0LCA4MTAsIDEyNTA4OSwgCi0gICAgMTIwOTMzLCAxMjgwMTYsIDcxODQ5LCA3MTg2OSwgMTkxNywgMzAwMCwgMTI1MTQwLCAxMjAxODQsIDEyMDczOSwgMjM2NCwgCisgICAgMTIwOTMzLCAxMjgwMTYsIDcxODQ5LCA3MTg2OSwgMTkxNywgMzAwMCwgMTI1MTQwLCA3MDY5NCwgMTIwNzM5LCAyMzY0LCAKICAgICA2NjM4NywgNzQ0NzAsIDY2NjE4LCA2NTY4MCwgNjY0MTEsIDEwMDI3LCA3MTg0MSwgMTI4MTU0LCAxMjMzNywgNzQyODMsIAogICAgIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODA2OCwgNjM2MywgMjc0OCwgMTIxMDIyLCAKLSAgICAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCA4NzMwLCAxOTQ5OTcsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgOTI5ODgsIAotICAgIDcyNzUsIDc4MzA0LCA5MzUsIDEyNzA1MiwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgCisgICAgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgODczMCwgMTk0OTk3LCAxMDA3MTEsIDc4MzEyLCA3Mjc0LCAxMDA3MTIsIDkyOTg4LCAKKyAgICA3Mjc1LCA3ODMwNCwgOTM1LCAxMDA3MTksIDY1ODQwLCAzNzcsIDQyMzI1LCAxMTY0OSwgMTAwNDg5LCA2NTI1MywgNjQzMDEsIAogICAgIDEyODgzNSwgNzgzMDgsIDQyMzQxLCA2NTI4NCwgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgNzgzMDAsIAotICAgIDE5NDk5OCwgMTk0OTEyLCAxMDY3MywgNjg3NzksIDcyNDgsIDY4Nzg2LCA0MzUxNSwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIAotICAgIDE2NDksIDY3ODc2LCA5NjQsIDEyMTAzNCwgNjY0MDMsIDc4MjI2LCA2NjM5MywgOTI4OTcsIDcwMzU1LCA2NjQwOSwgMCwgCi0gICAgODMzOTgsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA2OTkwOSwgNDM1NDcsIAotICAgIDgzMDI4LCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDAsIDY5NzU5LCAxMTM0MSwgNDI0OTQsIAotICAgIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgNzA4MTAsIDY0NzgsIDk4OTgsIDQzNjczLCA2NTIzNywgNjI0MSwgCi0gICAgNzEwNiwgNDg3NywgMTI5MTA4LCA2MjM4LCAwLCAxMDU0OCwgMTI3MDQ5LCA0NDA5LCAwLCAwLCA2NDc5OCwgNzA4MDUsIAotICAgIDUzNDYsIDEyODI0MCwgOTQwNDcsIDYyMzcsIDQ4NzQsIDY2ODUxLCA5MTc2LCA5Mjg4MiwgMTIxMTUzLCA2NTIzMSwgCi0gICAgNjU4ODQsIDEyNjc4LCA3ODc0OCwgMTE4OTEyLCAxMTM3OCwgNDQwMTgsIDQyNzg1LCAyNDA4LCAzMjUxLCAxMTIwMywgCi0gICAgOTgzMTU5LCA1Njg1LCAwLCAyNDYxLCAxMTA1MiwgNzA5MSwgNTM0MiwgODMxNywgMTIxNDQ2LCA2ODE2MywgNTM0MCwgCi0gICAgMTIwNTU5LCAxMjc4MjAsIDQzNjM1LCA3MzkyOCwgMTI1MDAxLCA3MTA2OSwgODMzMTgsIDAsIDgzMzE3LCA2NTQ4MiwgCi0gICAgMTIxMzk0LCA5MTQyLCAwLCA2ODUwNiwgMCwgMTA5MzgsIDAsIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMTI2NjQ4LCAKLSAgICA3MjQzOCwgNTI5LCA4NTgwLCAxMjc0OTAsIDAsIDEwNTg2LCAxMDc5MCwgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIAotICAgIDY4NzQ0LCA5ODM4MjUsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCA2NzgyMSwgMTIxMjAwLCAxMTM3NiwgNzQzNzksIDEwNzIxLCAKLSAgICA2NzY2NCwgMzQzOCwgNDIwOTcsIDY4ODYyLCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIDEyMDE4MywgNDE4NzMsIAotICAgIDEyMDU3NSwgMTEzMjQsIDEyMDUzMSwgMCwgODQyMCwgNjQ5MTgsIDEyODgzOSwgNDE4NzEsIDQxMzM4LCAzNzM0LCA3NzM0LCAKLSAgICA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIDEyNzkzNywgOTgzMjE2LCA1MTYxLCAxMDU3MiwgCi0gICAgOTE3NTU4LCA0MjkwNiwgMCwgNjQzNDksIDcyODcsIDQyMTYyLCAxMjA0MDYsIDk4MzY0MywgMTI2NjA1LCAxMTE2NywgCi0gICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAKLSAgICAxMTM3NjYsIDk4NzAsIDY3NzI2LCA4NjIwLCA2NTgyNCwgOTE3ODU1LCAxMTkzOCwgMTIxMzA4LCA3Mjg1LCA5ODM1NTcsIAotICAgIDExOTU3NywgNDI2NzgsIDY2ODQyLCA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgMCwgMTI5MTY4LCAxMjgyNjcsIAotICAgIDc4MTY5LCA2NjE5OSwgMCwgMzYwOSwgNjg2MjQsIDcwMjgwLCA4MzIsIDEyMDY5MywgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIAotICAgIDc4NDcxLCA2NTcwMywgNzEyNTYsIDEyODUxNywgNDI3MzIsIDUxODAsIDkyNjk5LCA0MTM5NSwgNDE1MzAsIDExNjkxLCAKLSAgICA2NDc3MywgOTIyMTQsIDc0MDAyLCAxMjc3OTAsIDEyMDU0OCwgMTI4NjQ1LCA2MzQ4LCAyNDMsIDEzMjAwLCAxMjAxNjAsIAotICAgIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCA0MzY4NywgMCwgOTE3ODQ0LCA0Mjg1LCAKLSAgICA2NjE5NSwgMTIxMzcwLCA0MjMwLCA5Mjg4NiwgNzM2NywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgOTgzMjcxLCAKLSAgICA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAyMTQsIDEyODU3OCwgMCwgNzQ4NTYsIDY1ODkzLCAxMjIwOCwgOTk3MywgMTI4Mzg2LCAKLSAgICA2NjMxMSwgNjU1ODksIDEyODI3NywgMjYwMywgMCwgNzAxNTUsIDc4NjIyLCA3MDA0NywgMTI3MjczLCA2MDIyLCAxOTUwMjMsIAotICAgIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgMTk1MDIwLCAxMjY4MiwgMTAxNiwgNDExMDcsIDAsIDQxMTIxLCAzODg1LCA5MiwgCi0gICAgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgNzA4NTUsIDIwNzQsIDExMzc0MiwgNzgyODMsIDAsIDEyNDUzLCA3MDg0NywgCi0gICAgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgNzgyNjgsIDAsIDY2Mjc4LCAwLCA3ODI3OSwgMCwgMCwgCi0gICAgOTIzNTgsIDY2NjM3LCA3OTk1LCA4NzU5LCA0MzQyMSwgNzgyNzcsIDEyNDQ5LCAxMjg1NTIsIDcxMjI0LCA0Mzg2OCwgCi0gICAgODc1MiwgMzE5NywgNDcyMCwgMTAxNjUsIDExMzc2NSwgMTE5MjQ5LCAxMTM3MTUsIDExNTk1LCA2NDg5MywgMTE4OTA1LCAKLSAgICA0MzQzNSwgMTI0OTY0LCAxMjUwMzAsIDQ5OTMsIDAsIDYxNjgsIDEwOTM0LCAxOTQ2LCA3NDEsIDEyMDY1MCwgNTQ5NCwgCi0gICAgNDYzOSwgMTI3NTU5LCAxOTkwLCAxMTEwNywgNDQ5OCwgNzQxNjksIDY3NzM2LCA4MzI3MywgMTI3MjcyLCA2OTczNCwgCi0gICAgMjk2MCwgNzM3NzksIDAsIDg5NjksIDEyODExNywgNDM0MjQsIDczOTU5LCAxMjY0NjQsIDI5NTAsIDExOTU3OSwgNjIxMCwgCi0gICAgNjU3NTMsIDM3MCwgMTIxMzYwLCAwLCAwLCA0OTUzLCAxOTUwMDksIDEyMTA1NCwgMTEzNzA4LCAwLCA2OTIzMCwgMCwgCi0gICAgMTk1MDEwLCA2NTY4OCwgNzQ5NTEsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCA5MTc3NjIsIDYzNDQsIDc0NzkxLCAKLSAgICAxMDU2NiwgMTAxNDQsIDY2MzMzLCA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgNzEzMTcsIDY0OTIzLCAxMjA1NzEsIAotICAgIDQzNjY5LCA5MDMyLCA3ODI2MywgNzgyNjQsIDAsIDQxMjE1LCAwLCA2NTg4MywgMCwgOTE3Nzc0LCA3NDkxNCwgMzc2MSwgMCwgCi0gICAgMCwgNzAwNjgsIDEyMDQwOCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCA5ODMyNTYsIDEyODM4OSwgMCwgMCwgOTA4LCAKLSAgICAwLCA4NjExLCAxMjEzODQsIDAsIDc0NjQyLCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIDEyMDU0MCwgMTE5MTM1LCA0MTU4NiwgCi0gICAgMTA1MjcsIDcwNDI2LCA5MTc4NDgsIDM4NDgsIDc4NzM5LCA3NDkxNywgMTI3NTM2LCA2NTI0MSwgNTMzNiwgNzQ4ODMsIAotICAgIDEyODc4NiwgNjYzLCAwLCAxMDc4MCwgMCwgMCwgNzg3NjcsIDk4MzI1OSwgMTI3MTYzLCA2ODE5MywgMzQ3LCAwLCAKLSAgICA5MTc1NDQsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA2ODA0NiwgMTIxNDMsIAotICAgIDY5NjU3LCA3ODUxMiwgMTI4NDkzLCAxMTE1MywgNDE4MDQsIDc4NTIzLCAwLCA3ODUyNSwgMCwgMTI4ODU5LCA0MTU4NCwgCi0gICAgMTA2ODEsIDAsIDEyMDk3OSwgNzM5MzgsIDczNzgxLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIAotICAgIDY2Mzg0LCA5NTE4LCA2NjA5LCAxMDQzNCwgNzA4NDUsIDExMzE5LCAxMDk3LCAxMjg5NjQsIDkxNzU2NCwgNDE3MzAsIAotICAgIDEyOTE4MSwgMTIxNTAxLCA3Mzg0NywgNzQ4NDUsIDY1MTcyLCA0MTcyOCwgNDE3MjEsIDE5NDc4MCwgMTk0NzY5LCAKLSAgICAxMjE0OTksIDQxMjAzLCAxMjcwNTYsIDEzMTEwLCA0MTcyNiwgMTk0ODU2LCA2NzA3NywgMTAwMCwgNjk2NTEsIDEyNzUwOSwgCi0gICAgNDExNDAsIDEyMDksIDczOTc4LCAxMjUwNTksIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIDk4Mzk2OCwgCi0gICAgNjgyMTMsIDc4MDAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDExOTkwNCwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgCi0gICAgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAKLSAgICA5MTc2MDEsIDEyODgzMywgNjQzOTgsIDcxMTI0LCAxMTk5NzAsIDEyMzExLCAxMTkxODEsIDc4Nzk2LCA2ODc2OCwgNzg3OTQsIAotICAgIDc4Nzk1LCA2ODQzNCwgNzg3OTMsIDY2NjcwLCAxMTM3OTcsIDEyODU3OSwgMTIyOTAsIDEyMDE2OSwgMTI5MDkzLCAKLSAgICAxMTk4NzMsIDQyMTQyLCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAxMTM2OTQsIDk2MjcsIDQzNjQ2LCA3ODU0MiwgNzg1MzUsIAotICAgIDk4MzIxMiwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgMTEzMDgsIAotICAgIDExOTk5NSwgOTgzNDkzLCAxMTM3MDIsIDY2ODM2LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIDcwNzUsIAotICAgIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIDEyMDAxNCwgCi0gICAgMTIwMDE1LCA2MDQxLCAxMjA1MjAsIDQxODk5LCA5ODMyODgsIDgwMDIsIDEyODM2NywgNDM2NCwgNzM3MzIsIDk4MzU3MCwgCi0gICAgNjQzMzIsIDEyMDk3NiwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgNjgyNDYsIDcyNzksIAotICAgIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDEyMTE1MiwgMTIxMzgxLCA5NjYwLCA5MTc5MjksIDEzMDEyLCA0NTcxLCAKLSAgICA5MTc1ODgsIDAsIDExODk0MCwgMTIwNzgsIDI5NzAsIDEyOTEyMiwgMTA5MzMsIDAsIDc3ODcwLCAxMjEyNDMsIDc3ODQxLCAKLSAgICAwLCA0MTU5OSwgNzAxNTksIDEyMTM0MiwgMTIwODg1LCAxMjk1MCwgOTIxNjAsIDM0ODYsIDk4Mzk3MywgNzgzMTEsIDQyMzksIAotICAgIDEyODA3MywgMTI3Nzk5LCA2NjUxMSwgNjgwNjYsIDI2MzcsIDY0NjI5LCA4NDYwLCA2NjgzNCwgODQ3NiwgOTgzOTc1LCAwLCAKLSAgICA2ODMxMiwgNzg0ODksIDY1NjczLCAxMDE5LCA3ODQ5NSwgNDE0OCwgMCwgMTIyODksIDAsIDQzMTYsIDAsIDEzMTE5LCAKLSAgICA4NDg4LCA1NDEyLCA2NjI0MywgOTkzNSwgOTI3NzcsIDczODY0LCA5ODMyMDMsIDQxNzM0LCA4MjA2LCA3NDA4MSwgOTE2MywgCi0gICAgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCA5MjU0NiwgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIAotICAgIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCA2Njg1MywgNzM5NjMsIDQxODU1LCA0MTg2NywgCi0gICAgNjU1NjQsIDExMjc3LCA2NTg5MiwgMTE1MzYsIDEwNjIwLCA5MjI3MiwgNzExNSwgNjYwMzAsIDczOTMyLCA1NDk4LCAKLSAgICA2Mzg3NiwgNDE1MzYsIDAsIDY4MjA0LCA5MjU4NywgMzQ1OSwgODk5NywgMTk0NzE5LCA5MjcxNCwgMCwgMTI3NzgyLCAKLSAgICA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCAxMjQ5NzIsIDc4NTExLCAzMTYxLCAyOTUsIDcxMjU3LCAwLCA5MjIyMywgCi0gICAgMTIxMzI4LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCA2MzkwMiwgNDM1MDEsIDY4MjEwLCAzOTcxLCA5ODM5NTksIAotICAgIDcwMDYzLCAyOTUyLCA3ODc2NSwgMTEwMzgsIDEwOTAxLCA2MzkwMCwgNjM4OTksIDYzODk4LCA2ODA5NSwgNjY3LCAxMjMzMiwgCi0gICAgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCA5ODMyODAsIDQxNTksIDk4MzU2MiwgMCwgOTgxNSwgNjM4ODQsIAotICAgIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgCi0gICAgNjM4NzIsIDEyMDk0MSwgNDI0MjEsIDE5NTAzNSwgNDE3MjMsIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIAotICAgIDQxOTEzLCA2Mzg1MiwgNjY4NjksIDEyODk3MSwgNDIzNDgsIDczODkyLCA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDEsIAotICAgIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDEyODYzNywgNjM4NDYsIDI5NzIsIDEyOTMyLCA3MjYyLCA2OTk2OCwgNjM4NDksIAotICAgIDYzODQ4LCA2Mzg0NywgMTEzNzQ5LCA2NTcwLCA4MzAyLCA3MjU5LCA2Mzg0MiwgNDE3OCwgMTA3NDYsIDcyNTAsIDEzMjE0LCAKLSAgICAxMDA0MSwgODEwNSwgNjM4OTIsIDEyNzc4MCwgNjk5NjksIDExMDUsIDQxODAsIDEyNzc4NiwgMTIwOTQsIDk0OTcsIDAsIAotICAgIDYzODkxLCA2Mzg5MCwgNjM4ODksIDYzODg4LCA1NTM4LCA5OTg3LCAwLCA5MjczOSwgMTY3OCwgMTMyNzQsIDU1MiwgCi0gICAgMTE4ODM0LCA0NDAxMCwgMTA3ODUsIDAsIDExMTkyLCA0NTU3LCA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCA2Mzg2MCwgCi0gICAgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgNzQxNTQsIDAsIDU1MzYsIDY1NTY4LCA5NTc0LCAxMzg4LCAKLSAgICA3MTkwMiwgMCwgMTA3NywgMTk1MDAwLCA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDAsIDkxNzc4OSwgMCwgNDI3NzMsIAotICAgIDEyMTMzMSwgMCwgMCwgMTE5MjIwLCAxMjA5MTIsIDM2NjMsIDEyNzAyNywgMTExMiwgNzAzMzUsIDg2ODYsIDEyNjYxMSwgCi0gICAgNTMzNCwgNjUwODEsIDQzMjQ5LCA3NDc3OCwgMTI3OTY4LCAxMTA3NywgMTI1MDE3LCA2NTA5LCAwLCA1MzI3LCA3ODc3NiwgCi0gICAgMTk5MDcsIDYzODY5LCAzNDc4LCA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIAotICAgIDYzODY2LCA3ODYyNiwgMTkxNSwgNDg0NiwgNjc3NTUsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgCi0gICAgNjkyMzgsIDY0NDM4LCAxMjA3MCwgODc2MCwgMTExNywgMTEzNzUwLCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIAotICAgIDYzODM1LCA2MzgzNCwgOTgzOTQ3LCA3ODI0MCwgMTIyMjUsIDYzODM4LCA2MzgzNywgOTgzODUzLCA3MDE3MywgNjM4MzMsIAotICAgIDYwNDIsIDY2MzYwLCA4MDgzLCAxMjgxNjYsIDk4MzczMywgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4MzkwNCwgCi0gICAgNTIyNywgOTA0NywgNjM4MjIsIDc0Nzk3LCA2MDkxLCAwLCAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAxMTk1NzgsIDYzODEyLCAKLSAgICA2MzgxMSwgNjM4MTAsIDYzODA5LCAyMjg5LCA2MzgxNSwgNjM4MTQsIDYzODEzLCA2MDQ3LCAxNTk3LCAxMjAxNDMsIDc4MCwgCi0gICAgMjA2LCA3MDEyNiwgNDkzNiwgNjUxNDcsIDgxNjgsIDYzOTMwLCAyMDc2LCAxMDkzLCA5ODgyLCA2MzkzNCwgMjA4MiwgCi0gICAgNjM5MzIsIDc1MDUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgNzc5MzQsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIAotICAgIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAwLCA0NjE4LCA0MjIwOSwgMTExMzcsIDEzMTY5LCA1MjkwLCAKLSAgICAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgCi0gICAgNzI4MywgMCwgNjM5NzAsIDEyMTE2NSwgMTA5MiwgNDc1NCwgNzI3MywgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIAotICAgIDEyODkyMCwgNzQwOCwgMTE4MDksIDgzMjIwLCAxMjExODEsIDAsIDI5NjUsIDcyNTgsIDg4MDgsIDY2NTcyLCAxMDg5LCAKLSAgICA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAxMTEwNiwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDAsIDc0NDk0LCAKLSAgICAxMjQ2MywgMjk5NCwgMTI1MTM2LCAxMTg4MjcsIDY4NTIyLCA5NjY0LCA3MDgzNCwgNzc5NDAsIDY3ODkyLCA3NzkzOCwgCi0gICAgNzQzNDMsIDY3MzcwLCAwLCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCAxMjU4MCwgNzg1MDcsIAotICAgIDYxMTgsIDIyMiwgOTc5LCAzODg0LCA5ODMzOTQsIDc0MTUxLCA4MzIyNywgNjUwMiwgOTgzODU1LCAxMTA4NSwgMTIxMjYxLCAKLSAgICA2Mzk1MSwgMTI0NjUsIDkxNzg2MiwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIAotICAgIDYzOTQ4LCA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgCi0gICAgOTQwNzYsIDEyMTA4NiwgOTI0NjQsIDEyMDQ0NCwgNjk3MzAsIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgCi0gICAgNjM5MTcsIDEzMjc3LCA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCAKLSAgICA2MzkxNCwgNjk3MzcsIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIDEyMDEwMiwgNDM5ODAsIDU0ODUsIDAsIAotICAgIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgNjgwNTcsIDI1MywgMCwgNjgyMDgsIDEyMDQzOSwgOTIwMywgCi0gICAgNzQyMzEsIDAsIDExNTMwLCA2ODYzNCwgNjg2NjgsIDEyMTI0MiwgMTExMjcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIAotICAgIDQyMzU0LCAxMjgwOTksIDk4MzY5OCwgNzAwNDQsIDE5NTA2NSwgMCwgODQxMywgNjY4NDEsIDAsIDU2OTMsIDcyNzIsIDAsIAotICAgIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAxOTUwNjMsIDAsIDAsIDAsIDEyNjYzOSwgMTIwMDk3LCAwLCA5NDA3OCwgCi0gICAgNjY4NDAsIDEyNzE2NSwgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgNzgzNDcsIDcyNzAsIDAsIDY2NjA2LCAKLSAgICA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCA3Mzg0NCwgNTUyMjYsIDEyODM1MywgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgCi0gICAgNjM5MDYsIDE1OTgsIDYzOTA0LCA3MTE4NywgNzAzOTMsIDQxNzI5LCA0NDIzLCAxMzA3LCAxMTM2OTIsIDEwNTE1LCAKLSAgICA0MTU4OSwgMTI4Njk4LCAxMjg5MTgsIDYyMTgsIDkyOTE3LCAxNDMwLCAwLCAxMjY1MTMsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIAotICAgIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgOTgzNjMzLCA0NTE4LCAKLSAgICAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDY3MDkzLCAyNzEwLCA5ODM1OTMsIDY2Mjc3LCA0MTcyNCwgNjc3MTYsIAotICAgIDQzMDczLCA0MTY5MCwgMTI0NzksIDk4MzYzNSwgODM4MCwgMTIxMDcxLCA3MTg1MiwgNzAwNDYsIDE2MjgsIDEyMTIyOSwgCi0gICAgMTI4ODE3LCAxMjkwNjcsIDY1MjYyLCA2MzMzLCAxMDc4MywgMTExNzIsIDEyMTQ3MywgNjM4NTUsIDcwODQwLCAxMTM2NzksIAotICAgIDAsIDUzMzksIDc0MzIzLCAxMjA5NDYsIDEzMDA0LCA2Njg0MywgNDQ1NywgMCwgMTI3NzU2LCAxOTQ4MTgsIDEyNzExNiwgCi0gICAgNTY4NCwgODY3OCwgMTA5MTQsIDQzNjMyLCA1Njg5LCA2NTgwNywgNzA4MTQsIDY4NDY0LCAxMjYzMywgMTI4NzAsIDY5NzA1LCAKLSAgICA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDExOTA3NiwgNzQyNTEsIDAsIDEyMDY0NywgMTI4OTMwLCAKLSAgICA1MCwgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgNzQ0MDMsIDk4MzgxOCwgNzQyODQsIDY2NDY4LCA2NjkwNSwgMTMyNTksIAotICAgIDQ0NDgsIDExOTE1MCwgMTIxNDA2LCA4MzM0OSwgNzAwNDMsIDEzMjEsIDAsIDEwNjQwLCAxMTUzOSwgMTE1MSwgMTIxMTg2LCAKLSAgICA5MTc2MDcsIDEyNDk1OCwgMTI3MDc5LCA3MTEwNiwgMTI3ODUyLCAwLCAwLCA5ODMwNzUsIDEyNTAxLCA2NDYwNCwgCi0gICAgMTI4NjU3LCAxMTUyNywgMTE4ODcwLCA4ODEyLCA5ODM3MDYsIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAKLSAgICAyMTA1LCA4MDg3LCA3ODE2MywgNjk2MzIsIDk4OTQsIDEyNzEzNywgMTI3ODU2LCA2OTk5NSwgNDYzNiwgNTUyNjIsIAotICAgIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDk4MzY5NSwgMTEzNzgwLCAwLCAxMTg5NjgsIDEyMjc3LCAxMjEyMzksIAotICAgIDExOTk1LCA5MjU1MywgMTIxMDA2LCAxMjE1OCwgNzAxNzAsIDg3NDEsIDEwMTk3LCA2ODc4MCwgOTI0MjYsIDEyMTI4NSwgCi0gICAgNjUzMSwgODMwNTEsIDEyNzg0NiwgNDczLCA0MzQxNSwgOTI5MzYsIDk4MzY1MCwgMTg3MywgMTA4NywgMTI0OTY2LCAwLCAKLSAgICA3NDI4MCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgOTgzMTIzLCAxOTQ3MTYsIDcyMzcsIDEyNTA0LCA3MTExMywgMTI2NTU5LCAKLSAgICAxMjg3NDgsIDEyMDg4NywgOTQ4OSwgMCwgNzA4NDMsIDQzODQsIDc0MjIwLCA2Mzg0NSwgMjA1OCwgNjk3NDEsIDEzMjk1LCAKLSAgICA0MzE5MSwgMTI4MDMwLCAxMjg1NzEsIDExNTQsIDM4NTcsIDEyMDUsIDAsIDAsIDYwNTUsIDEyOTU4LCAxMjA3MDYsIAotICAgIDc0MTY4LCAxMjgzODgsIDcwODQ2LCA0NDIxLCAxMDU5MiwgMCwgNDk1LCA2NjQwMCwgNDE3MTIsIDc5ODMsIDcwODMzLCAKLSAgICA5Mzk5NywgOTgzMzMyLCA2MzQ3LCA3ODcxNSwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIDQzNywgNDE3MDksIDczNzcyLCAKLSAgICA3MDgzMiwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgNjQzMDYsIDEyMTMwOSwgMCwgNDk5OSwgMTk0NjQyLCAKLSAgICA2NzQwMSwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDEyMDYwMiwgMjczOSwgMCwgODA0NCwgNzQzMTMsIDE5NDY0MywgNDE3ODksIAotICAgIDEyODE0MiwgMTA4MDksIDY2Mjc5LCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgCi0gICAgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDk4MzgwNCwgOTIxODYsIDEzMjI5LCA3MTg0NSwgMTA1NzUsIDQzMzk5LCAxOTQ1NzcsIAotICAgIDAsIDQxNzkxLCAxMTA0LCAwLCA5ODM3MjUsIDEwNjU1LCA5ODMzMzQsIDk4MzU2MSwgMTIwMTY0LCAwLCAxMDgyLCAKLSAgICAxMjEwMjQsIDg0MjgsIDY1NjksIDAsIDAsIDc4NTM0LCA2OTg0OSwgNjc4MywgMTk0NjcxLCAxMjk5MywgODA0OSwgNDE1NDgsIAotICAgIDQ0MDIxLCA2NDU4LCA2NDcyOCwgMTI4ODgyLCA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAKLSAgICAxMjA2NzcsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgMTI4NjI3LCA0MTU0NSwgMTI2NDY1LCAKLSAgICA5MjQ0OSwgMCwgMTEyMTYsIDEyMTMwNywgMCwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCAwLCA4NTAzLCA1MTIyLCA0MTUyNywgCi0gICAgNzE5MTAsIDY2MzIwLCA3MDE2MSwgNzQ5MDcsIDAsIDAsIDQxNTM3LCA2NjQ1MywgODMwMywgODI4MiwgMTE4MTcsIDczODU3LCAKLSAgICAxMDAwMywgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAwLCA3MDExNSwgMTE0NjcsIDM2NjQsIDY1OTIxLCA2NDI5OSwgCi0gICAgMTI0OTM5LCAxMjg0NjIsIDEyODAwMSwgNDMyNCwgMTI2LCA0MjI0NiwgNzUwMzAsIDY5OTg0LCA2NzcyNSwgNjU5MjYsIAotICAgIDc3NDQsIDY4ODU5LCA3NDI3NywgNjYyODMsIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAKLSAgICAxNjMzLCAwLCAxMjY2MTQsIDQ3NjIsIDExMDMsIDcwODI3LCA3MDE1NywgNDc2NSwgOTgzNDk0LCAxMzA3OCwgMCwgNDc2MCwgCi0gICAgNjM4MjcsIDIwNTAsIDEwODcxLCA0MzE5OSwgMTEwMiwgMTk0NjUyLCA0MjIzNiwgMTI4ODY3LCAxMjcwNzIsIDExNTQ2LCAKLSAgICA3NDc5NCwgMzM3LCAxMjExOTYsIDQyNTkxLCA4NjI3LCAxMjI3OSwgMTExMSwgMCwgNzUwNDcsIDQ3MDcsIDY4MjA2LCAKLSAgICAxMDE0MywgNzg4MywgMTIxNDQ0LCA3ODgwLCA0NTIyLCA4NjQ1LCA1NzA0LCAxMzAxMCwgNjk3OTYsIDgzMDQsIDkyOTgyLCAKLSAgICAxOTQ2ODgsIDExOTU3NSwgMjI5MywgNzAxOTUsIDY2NjU0LCAxMjkwNzcsIDkyNjc2LCAwLCAxMzAwOCwgMTIxMTk0LCAKLSAgICA0Mzg1LCAxMjg3MzYsIDEzMDExLCAxMjUwMDQsIDkyNTY5LCAxMTkxNjEsIDEzMDA5LCAxNjAsIDI2NzcsIDcwMzg4LCAKLSAgICA5ODMyODIsIDQxNzkzLCA2NTc2MywgNzQyMjEsIDcwNzkwLCA0MTc5MiwgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCAKLSAgICA0MzgyMSwgNTcwOSwgMTI4Mjk2LCA3MTA3NiwgNDM4MTYsIDk4MzA4NywgOTgzODk2LCAxMDc5LCAzODY3LCA1NzA4LCAwLCAKLSAgICAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIDEyMTA5MSwgMTAyMzcsIDEwOTkxLCAxMjg4MTYsIAotICAgIDQzNDU5LCA5MTczLCA5MTc1ODEsIDkxNzU4MCwgMTMxNzAsIDEyNTQwLCAxMjkxNzgsIDQyNjA1LCAxMjA3NjUsIDEyNjYxNywgCi0gICAgNjg2NDcsIDkxNzU3MiwgMTAwNTgsIDY4MDU4LCA3NDg2NywgNjc3MzAsIDEyNzA3OCwgMzMzOSwgMTE0NDgsIDExMDYsIAotICAgIDkxNzU5MSwgOTE3NTQwLCA5MTc1OTMsIDMzNDAsIDc0MDE3LCA5MTc1ODYsIDEyMDk5NCwgMTI5MTQxLCAxMjA1NDEsIAotICAgIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIDg2NCwgOTgzMTcxLCAxMTg5MjYsIAotICAgIDg5NzIsIDExOTkxOCwgNzg0OSwgMTIwMDkyLCA4MzEzMCwgMTMyNDAsIDE5NTA2OCwgNTE5MiwgNDMzOCwgNjc5ODIsIAotICAgIDEwOTQ4LCA2NjgyNSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgMTMyNjEsIDEzMTg5LCAxMzE4OCwgOTM5OTMsIAotICAgIDcxODQ3LCA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIDYzNzgyLCA2Mzc4MSwgCi0gICAgNjM3ODAsIDYzNzc5LCAxNTgzLCAxMTk5MjMsIDEzMjYwLCA0NTUwLCAxMjA1OTgsIDY0MjA1LCAxMjkxMDcsIDcxMDcxLCAKLSAgICA0MTUyMiwgNDE1MjMsIDY4NTIzLCA5ODM3NzIsIDExODkyMywgMTEzNTQsIDk0MDcxLCAwLCA0Mjc5NSwgMCwgMTE5MTk1LCAKLSAgICAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCA2OTkyNiwgNDQ3OSwgMTE3OCwgNjU1ODYsIAotICAgIDY4MzExLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAxMjc4ODUsIDk4Mzc2NSwgNjY4MjgsIDEyODk3MiwgMTI3ODM5LCAKLSAgICA3NDU4MCwgNjgwOSwgNjM3ODYsIDYwMzEsIDY3NDAyLCA2Mzc5MSwgNjM3OTAsIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgCi0gICAgNDMxNTMsIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDAsIDY0NzEwLCAxMDc0NywgMTI1LCAKLSAgICAxMjA4MDMsIDY0ODkwLCA5ODMwNjQsIDEyNzM3NiwgMCwgNDE3MTksIDYzNzU4LCAzNTIzLCAxMDc0LCAxMzI1OCwgOTUzNiwgCi0gICAgNzEwNTYsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgNDE1MzIsIDEzNDksIDYzNzUwLCAKLSAgICA2Mzc0OSwgMTI5MDI1LCAwLCAxMjc5MjgsIDYzNzUzLCA2MzgwMiwgNDEwODQsIDEyMDYyMiwgNjgxMzMsIDQxOTMwLCAKLSAgICA2MzgwNSwgNjM4MDQsIDExMTQwLCA2MzgwMSwgNDEwODIsIDgxNDAsIDYzNzk4LCA2MjYwLCAwLCAxMjgzOTEsIDk0MDc0LCAKLSAgICA2Mzc5MywgMTE5ODgsIDM4OTgsIDkyMjQ2LCAxMDIwMSwgMTIyMzgsIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAKLSAgICAxMDQzMSwgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIDk4MzMzMSwgNDIyMDMsIDc5NTAsIDMxMjQsIAotICAgIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTExNDgsIDY5NzMsIDI3OTMsIDEyNDc1LCAxMjkxODAsIDc1MDU2LCA2Mzc2OSwgOTUzMCwgCi0gICAgMTIxMjQ4LCAxMjIzMiwgMTMxMzUsIDg1OTYsIDU2ODEsIDYzNzYyLCA0NTk1LCA2Mzc2MCwgNzkyLCAxMTM2NzQsIDY0ODAzLCAKLSAgICAwLCA4NzQyLCAxOTUwMjksIDExMDUzLCAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDEyODk0MiwgNzU4OCwgNjM3NDgsIDE2OTMsIAotICAgIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIDQyMDYzLCAxMDkwLCA2ODgwMywgMTIwNzc4LCAxMTY2NSwgNzQxMzMsIAotICAgIDQ1NTgsIDY1Njg1LCA5NTIzLCA5ODM0NTMsIDYzODU3LCA3MTIxNiwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgCi0gICAgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgNjgwNzEsIDMxNzAsIDEyNDg1LCA0Mzg5MSwgMTA4NzIsIDQzODkyLCAKLSAgICAxMzAwNiwgNDM5MzMsIDEyMDA3NCwgMCwgOTQxLCAwLCAxMjkwNzksIDEyMDk2NywgNjU1NDEsIDExMDYzLCAwLCA4MjI4LCAKLSAgICAwLCA0MjA2NSwgMTI4MzY4LCA0Mzg4OSwgOTQwMzksIDEyOTI5OSwgOTI0NTUsIDczODYsIDAsIDY0NDQ0LCA3MDI5NSwgCi0gICAgMTE5ODYzLCA0MzYwMywgOTQwNzUsIDY1Mzk3LCAyODgsIDgzNDA5LCAwLCAwLCAxMDAyNSwgNjk5MTUsIDI5MTgsIDY2ODIwLCAKLSAgICA2NTMwMCwgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDk4MzYyMCwgMTI3ODI5LCA2NTM5MywgCi0gICAgMTIwNTkyLCA3NDEzOCwgODM1MDUsIDkyNzUxLCA3NTAxOSwgNzQxMzksIDc4Nzc3LCA2NTM5NCwgMTE1NDgsIDUyNzAsIAotICAgIDk4MzIzOCwgNjUzOTYsIDc0OTk4LCA2NTgxMywgMTMyNTYsIDEyODIsIDEyMDc3MSwgNzUwMTIsIDAsIDEwODg4LCAKLSAgICAxMjA5MzQsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCA2ODM0MCwgMCwgMCwgNzEyMDIsIDMzMDQsIDQyNzUzLCA5MjU4OCwgCi0gICAgNzAyOTgsIDc0NjQzLCAxNjI3LCAwLCAxMjc3NjUsIDE5NDczNSwgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgMCwgCi0gICAgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDY4MzE3LCA5MDM1LCAxMTE0MSwgOTE3OTc3LCAxMjgwMDUsIDAsIDkyMjA3LCAKLSAgICA2ODEyNSwgNzQ4OTgsIDE2NCwgNjgzMDksIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDY3NzE5LCA3MDAxOSwgCi0gICAgMTMyNDUsIDAsIDY4ODA4LCA2NjgxOCwgMCwgNzAwMzEsIDExMDk5LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIAotICAgIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIDY1NTA5LCAxMjkxOTIsIDc0NDksIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgCi0gICAgMTI1MTAyLCA2MzgwOCwgOTA1NCwgOTcxLCAxMzA2MiwgNzEwOTAsIDAsIDY1MTk1LCAxMDE2NCwgOTIyNTIsIDc0NDI4LCAKLSAgICA5ODMzMjEsIDc4MTQ2LCA5MjYxMSwgMCwgNzAyMDQsIDAsIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDIzMDMsIDExMDU3LCAKLSAgICA5MTc5NzYsIDEzMjc2LCAxMjUxMzMsIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDEyNjQ3OSwgMTI3OTA0LCAxMjEyMDMsIAotICAgIDEyMjI5LCAxMTY4MCwgOTI5NTYsIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDE5NTA4OSwgMCwgMTA0NzYsIDM4NTgsIAotICAgIDY0MTc1LCAzOTMyLCA2NDk1OCwgMTIwNDMyLCA5ODM2NzgsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgNzQ5MDgsIAotICAgIDQxNzg0LCAxMTkxNzUsIDY0MTYzLCA3Nzk5NywgMCwgOTI2NDUsIDY1NDc0LCA0Nzk2LCAxMjI5MiwgMTI2NTk1LCA2NTQ3OSwgCi0gICAgMTI4NjMxLCA0MTc4MSwgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgOTI2MDgsIDAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIAotICAgIDU3ODgsIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDE5NDkxMywgNzQ2LCAKLSAgICAxMTg4MjYsIDc0NzgzLCAwLCAxMjAxOCwgNjUyOTQsIDEyNzU0NSwgMTk0OTI1LCA2ODgzNSwgOTgzNDg4LCA0NDIyLCAKLSAgICA0NzA4LCAzNzk5LCA3NDI5MiwgMTE5MzU3LCAxMjExNDYsIDc0NDMwLCAwLCAxMTcwMCwgNDM3NCwgMTIwMzc3LCAxMjExNTEsIAotICAgIDEzNjQsIDAsIDgwMzgsIDEyMDg4MywgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDcwNDI1LCA2NzM1LCA3Mzk3OSwgMTMxNzQsIAorICAgIDE5NDk5OCwgMTAwOTI5LCAxMDY3MywgNjg3NzksIDcyNDgsIDY4Nzg2LCA0MzUxNSwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIAorICAgIDE2NDksIDY3ODc2LCA5NjQsIDEwMDY5NiwgNjY0MDMsIDc4MjI2LCA2NjM5MywgOTI4OTcsIDcwMzU1LCA2NjQwOSwgCisgICAgOTgzNDg0LCA4MzM5OCwgNDM2ODksIDEwMDcwMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDY5OTA5LCAKKyAgICA0MzU0NywgODMwMjgsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMTI3NTQ1LCA2OTc1OSwgCisgICAgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDcwODEwLCA2NDc4LCA5ODk4LCAKKyAgICA0MTAzOSwgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDEwMDY4MSwgNjIzOCwgMTAwNjgzLCAxMDU0OCwgMTAwNjg1LCAKKyAgICA0NDA5LCAxMDA2ODcsIDEwMDY5MCwgNjQ3OTgsIDcwODA1LCA1MzQ2LCAxMjgyNDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCAKKyAgICA2Njg1MSwgOTE3NiwgOTI4ODIsIDEyMTE1MywgNjUyMzEsIDY1ODg0LCAxMjY3OCwgNzg3NDgsIDExODkxMiwgMTEzNzgsIAorICAgIDQ0MDE4LCA0Mjc4NSwgMjQwOCwgMzI1MSwgMTEyMDMsIDk4MzE1OSwgNTY4NSwgMCwgMjQ2MSwgMTEwNTIsIDcwOTEsIAorICAgIDUzNDIsIDgzMTcsIDEyMTQ0NiwgNjgxNjMsIDUzNDAsIDEyMDU1OSwgMTI1MjA2LCA0MzYzNSwgNzM5MjgsIDEyNTAwMSwgCisgICAgNzEwNjksIDgzMzE4LCAwLCA4MzMxNywgNjU0ODIsIDEyMTM5NCwgOTE0MiwgOTgzMTc3LCA2ODUwNiwgMTk1MDg0LCAKKyAgICAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAxMjY2NDgsIDcyNDM4LCA1MjksIDg1ODAsIDY2NzY5LCAKKyAgICAxMjUwNTgsIDEwNTg2LCAxMDc5MCwgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDY4NzQ0LCAxMjA2MjAsIDQxNTk0LCAKKyAgICAyMjUsIDQyODI4LCA5ODM2MzIsIDY3ODIxLCAxMjEyMDAsIDExMzc2LCA3MjcyOSwgMTA3MjEsIDY3NjY0LCAzNDM4LCAKKyAgICA0MjA5NywgNjg4NjIsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgMTIwMTgzLCA0MTg3MywgNzEyNzEsIAorICAgIDExMzI0LCAxMjA1MzEsIDk4Mzk3NiwgODQyMCwgNjQ5MTgsIDEyODgzOSwgNDE4NzEsIDQxMzM4LCAzNzM0LCA3NzM0LCAKKyAgICA0MzY4MywgODc1MCwgNjY2MDUsIDY2MDExLCA5MjUxNCwgNDA5NjUsIDEwMDY3MiwgMTAwNjc1LCA1MTYxLCAxMDU3MiwgCisgICAgMTAwNjc2LCA0MjkwNiwgMTAwNjc4LCA2NDM0OSwgNzI4NywgNDIxNjIsIDEwMDY2MCwgOTgzNjEzLCAxMjY2MDUsIDExMTY3LCAKKyAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAxOTQ2OTUsIDY4NjM1LCAKKyAgICAxMDAzMSwgMTEzNzY2LCA5ODcwLCA2NzcyNiwgODYyMCwgNjU4MjQsIDEwMDY1MSwgMTE5MzgsIDEwMDY1MywgNzI4NSwgCisgICAgMTAwNjU1LCAxMDA2NTQsIDQyNjc4LCA2Njg0MiwgNDM2NzcsIDQxNTgzLCAwLCA2NTc5OSwgOTI2MjMsIDcwNjkzLCAKKyAgICAxMjgxMzEsIDEyODI2NywgNzgxNjksIDY2MTk5LCAxMDA2NjQsIDM2MDksIDY4NjI0LCA3MDI4MCwgODMyLCAxMDA2NjcsIAorICAgIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDcxMjU2LCAxMjg1MTcsIDQyNzMyLCA1MTgwLCA5MjY5OSwgCisgICAgNDEzOTUsIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMTI3NzkwLCAxMjA1NDgsIDEyODQ3OCwgNjM0OCwgCisgICAgMjQzLCAxMzIwMCwgMTIwMTYwLCA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIAorICAgIDEyMDg4MCwgOTE3ODQ0LCA0Mjg1LCA2NjE5NSwgMTIxMzcwLCA0MjMwLCA5Mjg4NiwgNzM2NywgNDMyNTYsIDkyMzUzLCAKKyAgICA3NTYzLCA0MjM3NiwgOTgzMjcxLCA2ODQ0MiwgMTIwNTEyLCAwLCAwLCAyMTQsIDEyODU3OCwgMCwgNzQ4NTYsIDY1ODkzLCAKKyAgICAxMjIwOCwgOTk3MywgMTI4Mzg2LCA2NjMxMSwgNjU1ODksIDEyODI3NywgMjYwMywgMTI1MjA1LCA3MDE1NSwgNzg2MjIsIAorICAgIDcwMDQ3LCAxMjcyNzMsIDYwMjIsIDEwMDQ4NSwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAxOTUwMjAsIDEyNjgyLCAxMDE2LCAKKyAgICA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCA3MDg1NSwgMjA3NCwgMTEzNzQyLCAKKyAgICA3ODI4MywgMTI4NzM3LCAxMjQ1MywgNzA4NDcsIDk4MzgyNiwgNzQyNDEsIDEyNjU2OCwgNjc5MSwgMTI0NTcsIDc4MjY4LCAKKyAgICAwLCA2NjI3OCwgOTgzNjMzLCA3ODI3OSwgMCwgMTI3OTMyLCA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCAKKyAgICA3ODI3NywgMTI0NDksIDEyMjkwOCwgNzEyMjQsIDQzODY4LCA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMTEzNzY1LCAKKyAgICAxMTkyNDksIDExMzcxNSwgMTE1OTUsIDY0ODkzLCAxMTg5MDUsIDQzNDM1LCA4MzMwOSwgMTIxNDE0LCA0OTkzLCAxMjkzNjAsIAorICAgIDYxNjgsIDEwOTM0LCAxOTQ2LCA3NDEsIDEyMDY1MCwgNTQ5NCwgNDYzOSwgNzA2NjgsIDE5OTAsIDExMTA3LCA0NDk4LCAKKyAgICA3NDE2OSwgNjc3MzYsIDcwNjU4LCAxMjcyNzIsIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMTk1MDc2LCA4OTY5LCAxMjgxMTcsIAorICAgIDQzNDI0LCA3Mzk1OSwgMTI2NDY0LCAyOTUwLCAxMTk1NzksIDYyMTAsIDY1NzUzLCAzNzAsIDEyMTM2MCwgOTgzNjU0LCAKKyAgICAxMjA5MjgsIDQ5NTMsIDE5NTAwOSwgMTIxMDU0LCAxMTM3MDgsIDEyMjg4OCwgNjkyMzAsIDAsIDEyMjkwMCwgNjU2ODgsIAorICAgIDc0OTUxLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgCisgICAgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIDcxMzE3LCA2NDkyMywgNjY3NDQsIDQzNjY5LCA5MDMyLCA3ODI2MywgCisgICAgNzgyNjQsIDAsIDQxMjE1LCAwLCA2NTg4MywgOTgzODczLCA5MTc3NzQsIDc0OTE0LCAzNzYxLCAwLCAwLCA3MDA2OCwgCisgICAgMTIwNDA4LCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDEyNzI4MiwgMTI4Mzg5LCAwLCA5ODMzNDIsIDkwOCwgMCwgCisgICAgODYxMSwgMTAxMDc0LCA5ODM2OTksIDc0NjQyLCA0MzY5MSwgNDExOTcsIDEyODgxMiwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIAorICAgIDQxNTg2LCAxMDUyNywgNzA0MjYsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDc0OTE3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCAKKyAgICA3NDg4MywgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAxMjgzOTUsIDAsIDc4NzY3LCAxMTk2MjYsIDEwMDkyMiwgNjgxOTMsIAorICAgIDM0NywgMCwgOTE3NTQ0LCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3Mjc5MiwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNjgwNDYsIAorICAgIDEyMTQzLCA2OTY1NywgNzg1MTIsIDEyODQ5MywgMTExNTMsIDQxODA0LCA3ODUyMywgMTE5MTY4LCA3ODUyNSwgMCwgCisgICAgMTI4ODU5LCA0MTU4NCwgMTA2ODEsIDAsIDEyMDA5NCwgNzM5MzgsIDczNzgxLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAKKyAgICAxMjUwMzgsIDY2MzA2LCA2NDcxNSwgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIAorICAgIDEyODk2NCwgOTE3NTY0LCA0MTczMCwgMTI5MTgxLCA5MjUxMiwgNzM4NDcsIDc0ODQ1LCA2NTE3MiwgNDE3MjgsIDQxNzIxLCAKKyAgICAxOTQ3ODAsIDE5NDc2OSwgMTIxNDk5LCA0MTIwMywgMTI3MDU2LCAxMzExMCwgNDE3MjYsIDEyOTA3MiwgNjcwNzcsIDEwMDAsIAorICAgIDY5NjUxLCA4MzUyMCwgNDExNDAsIDEyMDksIDczOTc4LCAxMjUwNTksIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgCisgICAgNDExMzgsIDk4Mzk2OCwgNjgyMTMsIDc4MDAwLCAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDExOTkwNCwgNjc2NzEsIAorICAgIDU1MjQ4LCAxMjIzNywgNzg3ODcsIDY2MzE0LCA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCAKKyAgICA3OTI2LCAwLCA5MTc2MDEsIDEyODgzMywgNjQzOTgsIDcxMTI0LCA3MTI3NCwgMTIzMTEsIDExOTE4MSwgNzg3OTYsIAorICAgIDY4NzY4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDExMzc5NywgMTI4NTc5LCAxMjI5MCwgMTIwMTY5LCAKKyAgICAxMjgyMzMsIDExOTg3MywgMzkzNywgOTk2OCwgODIwNSwgMCwgNTEzMSwgMTEzNjk0LCA5NjI3LCA0MzY0NiwgNzg1NDIsIAorICAgIDc4NTM1LCA5ODMyMTIsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIAorICAgIDExMzA4LCAxMTk5OTUsIDk4MzQ5MywgMTEzNzAyLCA2NjgzNiwgNjUzMDUsIDY1MTAwLCA0MDMxLCA0Mjc5NCwgMTIwMDAzLCAKKyAgICA3MDc1LCA4MTU0LCAxMTk5ODUsIDEyMDAwNywgNDE4MTcsIDczOTM0LCA0MjI3NSwgMTIwMDExLCAxMjAwMTIsIDc4NTI2LCAKKyAgICAxMjAwMTQsIDEyMDAxNSwgNjA0MSwgMTIwNTIwLCA0MTg5OSwgOTgzMjg3LCA4MDAyLCAxMjgzNjcsIDQzNjQsIDczNzMyLCAKKyAgICA5ODM1NzAsIDY0MzMyLCAxMjA5NzYsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIAorICAgIDY4MjQ2LCA3Mjc5LCAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAxMDEwODAsIDEyMTM4MSwgOTY2MCwgOTE3OTI5LCAKKyAgICAxMzAxMiwgNDU3MSwgMTI4MzMxLCAwLCAxMTg5NDAsIDEyMDc4LCAyOTcwLCAxMjkxMjIsIDEwOTMzLCAwLCA3Nzg3MCwgCisgICAgMTIxMjQzLCA3Nzg0MSwgMTAwMzU4LCA0MTU5OSwgNzAxNTksIDEyMTM0MiwgMTAwNzA2LCAxMjk1MCwgOTIxNjAsIDM0ODYsIAorICAgIDk4Mzk3MywgNjY3ODIsIDQyMzksIDEyODA3MywgMTI2NTkyLCA2NjUxMSwgNjgwNjYsIDI2MzcsIDY0NjI5LCA4NDYwLCAKKyAgICA2NjgzNCwgODQ3NiwgOTgzOTc1LCA5MTc5ODksIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAKKyAgICAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgCisgICAgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIAorICAgIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIAorICAgIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCAKKyAgICA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIDYzODc2LCA0MTUzNiwgOTE3NTg3LCA2NjczOCwgOTI1ODcsIDM0NTksIDg5OTcsIAorICAgIDE5NDcxOSwgOTI3MTQsIDEyNzIzOCwgMTMwNjAsIDc4MzAxLCAwLCA2NjM3NywgNjk3ODEsIDEyMDE1OSwgMTI0OTcyLCAKKyAgICA3ODUxMSwgMzE2MSwgMjk1LCA3MTI1NywgMCwgOTIyMjMsIDEyMTMyOCwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgCisgICAgNjM5MDIsIDQzNTAxLCA2ODIxMCwgMzk3MSwgOTgzOTU5LCA3MDA2MywgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgCisgICAgNjM5MDAsIDYzODk5LCA2Mzg5OCwgNjgwOTUsIDY2NywgMTIzMzIsIDYzODg3LCA2MDg2LCA0MTcyMiwgMCwgNTE3MiwgMCwgCisgICAgOTgzMjgwLCA0MTU5LCA5ODM1NjIsIDAsIDk4MTUsIDYzODg0LCAxOTkzNCwgNjM4ODIsIDQxMTk4LCA4NTU1LCA2Mzg3OCwgCisgICAgNjM4NzcsIDQyNDYwLCA2MDUwLCA0MjcwOCwgNjM4ODEsIDYzODcyLCAxMjA5NDEsIDQyNDIxLCAxMjkzMzUsIDQxNzIzLCAKKyAgICA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDY2ODY5LCAxMjg5NzEsIDQyMzQ4LCAKKyAgICA3Mzg5MiwgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTAxLCA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAxMjg2MzcsIDYzODQ2LCAKKyAgICAyOTcyLCAxMjkzMiwgNzI2MiwgNjk5NjgsIDYzODQ5LCA0MTM4NCwgNjM4NDcsIDExMzc0OSwgNjU3MCwgODMwMiwgNzI1OSwgCisgICAgNjM4NDIsIDQxNzgsIDEwNzQ2LCA3MjUwLCAxMzIxNCwgMTAwNDEsIDgxMDUsIDYzODkyLCAxMjc3ODAsIDY5OTY5LCAxMTA1LCAKKyAgICA0MTgwLCAxMjc3ODYsIDEyMDk0LCA5NDk3LCAxMjgzOTYsIDYzODkxLCA2Mzg5MCwgNjM4ODksIDYzODg4LCA1NTM4LCAKKyAgICA5OTg3LCAwLCA5MjczOSwgMTY3OCwgMTMyNzQsIDU1MiwgMTE4ODM0LCA0NDAxMCwgMTA3ODUsIDAsIDExMTkyLCA0NTU3LCAKKyAgICA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCA2Mzg2MCwgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgCisgICAgNzQxNTQsIDEyODM4NywgNTUzNiwgNjU1NjgsIDk1NzQsIDEzODgsIDcxOTAyLCA5ODM5MTUsIDEwNzcsIDE5NTAwMCwgCisgICAgNjUwOTksIDExNTMxLCA1ODM0LCAwLCA5MTc1NDksIDkxNzc4OSwgMCwgNDI3NzMsIDEyMTMzMSwgMCwgMCwgMTE5MjIwLCAKKyAgICAxMjA5MTIsIDM2NjMsIDEyNzAyNywgMTExMiwgNzAzMzUsIDg2ODYsIDEyNjYxMSwgNTMzNCwgNjUwODEsIDQzMjQ5LCAKKyAgICA3NDc3OCwgMTI3OTY4LCAxMTA3NywgOTI1MTUsIDY1MDksIDEyMDExNywgNTMyNywgNzg3NzYsIDE5OTA3LCA2Mzg2OSwgCisgICAgMzQ3OCwgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCA2Mzg2NiwgNzg2MjYsIAorICAgIDE5MTUsIDQ4NDYsIDY3NzU1LCA2NjM3MSwgMTE4OTg0LCA0MjEwNSwgMjk5MCwgMTIwMTI4LCA4MDUsIDY5MjM4LCA2NDQzOCwgCisgICAgMTIwNzAsIDg3NjAsIDExMTcsIDExMzc1MCwgMTIyMTIsIDEyMDEyMywgNjUxNzQsIDQyMzU3LCA2MzgzNSwgNjM4MzQsIAorICAgIDk4MzU5MiwgNzgyNDAsIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDEwMDQ1OCwgNzAxNzMsIDYzODMzLCA2MDQyLCA2NjM2MCwgCisgICAgODA4MywgMTI4MTY2LCA5ODM3MzMsIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODMzMzIsIDUyMjcsIDkwNDcsIAorICAgIDYzODIyLCA3NDc5NywgNjA5MSwgOTgzMzIyLCAxMDY5MSwgNTYwLCA1NjQzLCA4MjI2LCAxMTk1NzgsIDYzODEyLCA2MzgxMSwgCisgICAgNjM4MTAsIDYzODA5LCAyMjg5LCA2MzgxNSwgNjM4MTQsIDYzODEzLCA2MDQ3LCAxNTk3LCA3ODg3NiwgNzgwLCAyMDYsIAorICAgIDcwMTI2LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgCisgICAgNzUwNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA2NjgxMSwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgCisgICAgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDcyNzkxLCA0NjE4LCA0MjIwOSwgMTExMzcsIDEzMTY5LCA1MjkwLCAyMDg5LCAKKyAgICAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgCisgICAgMTIwMTA5LCA2Mzk3MCwgMTIxMTY1LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgCisgICAgMTI4OTIwLCA3NDA4LCAxMTgwOSwgODMyMjAsIDEyMTE4MSwgMTk0NzE2LCAyOTY1LCA3MjU4LCA4ODA4LCA2NjU3MiwgCisgICAgMTA4OSwgNDE4NywgNjM5MzcsIDQyMTE5LCA0MjEyMCwgMTExMDYsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCA5ODM4NDksIAorICAgIDc0NDk0LCAxMjQ2MywgMjk5NCwgMTI1MTM2LCAxMTg4MjcsIDY4NTIyLCA5NjY0LCA3MDgzNCwgNzc5NDAsIDY3ODkyLCAKKyAgICA3NzkzOCwgNzQzNDMsIDY3MzcwLCA3MjcxNCwgNjYwLCAxMDEyNywgNjY2LCA5MDIyLCA1NTMyLCA0MzY2NywgNTUzMywgCisgICAgMTI1ODAsIDc4NTA3LCA2MTE4LCAyMjIsIDk3OSwgMzg4NCwgOTgzMzE5LCA3MjcwNiwgODMyMjcsIDY1MDIsIDk4Mzc2MiwgCisgICAgMTEwODUsIDEyMTI2MSwgNjM5NTEsIDEyNDY1LCA5MTc4NjIsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAKKyAgICAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCAKKyAgICA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAxMjEwODYsIDkyNDY0LCA2Njc5MiwgNjk3MzAsIDgwMSwgNDMxNjUsIAorICAgIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgCisgICAgNjY4MDAsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIAorICAgIDEyMDEwMiwgNDM5ODAsIDU0ODUsIDE5NDg3MywgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCA2ODA1NywgMjUzLCAKKyAgICAwLCA2ODIwOCwgMTIwNDM5LCA5MjAzLCA3NDIzMSwgMTAwNzA4LCAxMTUzMCwgNjg2MzQsIDY4NjY4LCAxMjEyNDIsIAorICAgIDExMTI3LCAwLCAxMDQ3NCwgNDM0MjYsIDEzMjU3LCA0MjM1NCwgMTI4MDk5LCAxMjAxMDYsIDcwMDQ0LCAxMjcxMTAsIAorICAgIDY2ODA4LCA4NDEzLCA2Njg0MSwgMCwgNTY5MywgNzI3MiwgMTI5MzA3LCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgCisgICAgMTk1MDYzLCAwLCAwLCAwLCAxMTM2NjUsIDEyMDA5NywgMTI3OTYwLCA5NDA3OCwgNjY4NDAsIDEyNzE2NSwgNjY2MDgsIAorICAgIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgNzgzNDcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCAKKyAgICA3Mzg0NCwgNTUyMjYsIDEyODM1MywgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIDYzOTA0LCAKKyAgICA3MTE4NywgNzAzOTMsIDQxNzI5LCA0NDIzLCAxMzA3LCAxMTM2OTIsIDEwNTE1LCA0MTU4OSwgMTI4Njk4LCAxMjg5MTgsIAorICAgIDYyMTgsIDkyOTE3LCAxNDMwLCAwLCAxMDA3MDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIDc2MTksIDMyNTUsIDM0OTMsIAorICAgIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgMTAwNzQzLCA0NTE4LCAxMDk5MCwgNjUwNzMsIAorICAgIDUxNjcsIDQ0ODEsIDM3NzEsIDY3MDkzLCAyNzEwLCA5MTc4NDcsIDY2Mjc3LCA0MTcyNCwgNjc3MTYsIDQzMDczLCA0MTY5MCwgCisgICAgMTI0NzksIDk4MzYzNSwgODM4MCwgMTIxMDcxLCA3MTg1MiwgNzAwNDYsIDE2MjgsIDEyMTIyOSwgMTI4ODE3LCAxMjkwNjcsIAorICAgIDY1MjYyLCA2MzMzLCAxMDc4MywgMTExNzIsIDEyMTQ3MywgNjM4NTUsIDcwODQwLCAxMTM2NzksIDAsIDUzMzksIDc0MzIzLCAKKyAgICAxMjA5NDYsIDEzMDA0LCA2Njg0MywgNDQ1NywgMTAwOTAxLCAxMjc3NTYsIDE5NDgxOCwgMTI3MTE2LCA1Njg0LCA4Njc4LCAKKyAgICAxMDkxNCwgNDM2MzIsIDU2ODksIDY1ODA3LCA3MDgxNCwgNjg0NjQsIDEyNjMzLCAxMjg3MCwgNjk3MDUsIDY1MTgzLCAKKyAgICA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMTE5MDc2LCA3NDI1MSwgMTI4OTA4LCAxMjA2NDcsIDEyODkzMCwgNTAsIAorICAgIDEwNTU4LCA5ODcxLCA0MjYxMiwgNDM2NTUsIDc0NDAzLCA5ODM4MTgsIDc0Mjg0LCA2NjQ2OCwgNjY5MDUsIDEzMjU5LCAKKyAgICA0NDQ4LCAxMTkxNTAsIDEyMTQwNiwgODMzNDksIDcwMDQzLCAxMzIxLCAxMDA5ODcsIDEwNjQwLCAxMTUzOSwgMTE1MSwgCisgICAgMTIxMTg2LCA5MTc2MDcsIDEyNDk1OCwgMTI3MDc5LCA3MTEwNiwgMTE4OTQ5LCAwLCA5ODM5MjAsIDk4MzA3NSwgMTI1MDEsIAorICAgIDY0NjA0LCAxMjg2NTcsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDEyNTE0MSwgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgCisgICAgNjY0NjcsIDIxMDUsIDgwODcsIDcyNzEyLCA2OTYzMiwgOTg5NCwgMTI3MTM3LCAxMjc4NTYsIDY5OTk1LCA0NjM2LCAKKyAgICA1NTI2MiwgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgOTgzNjk1LCAxMTM3ODAsIDk4MzQ1NiwgMTE4OTY4LCAKKyAgICAxMjI3NywgMTIxMjM5LCAxMTk5NSwgOTI1NTMsIDEyMDY3NSwgMTIxNTgsIDcwMTcwLCA4NzQxLCAxMDE5NywgNjg3ODAsIAorICAgIDkyNDI2LCAxMTk2MTAsIDY1MzEsIDgzMDUxLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDkyOTM2LCAxMjQ5NDksIDE4NzMsIAorICAgIDEwODcsIDEyNDk2NiwgNzEyNzUsIDc0MjgwLCA3ODUyNywgNjY0MzksIDQzMjE4LCA5ODMxMjMsIDEyNzc5MiwgNzIzNywgCisgICAgMTI1MDQsIDcxMTEzLCAxMjY1NTksIDEyODc0OCwgMTIwODg3LCA5NDg5LCAxMjAwNjksIDcwODQzLCA0Mzg0LCA3NDIyMCwgCisgICAgNjM4NDUsIDIwNTgsIDY5NzQxLCAxMzI5NSwgNDMxOTEsIDEyODAzMCwgMTI4NTcxLCAxMTU0LCAzODU3LCAxMjA1LCAKKyAgICAxMjg5NTUsIDAsIDYwNTUsIDEyOTU4LCAxMjA3MDYsIDc0MTY4LCAxMjgzODgsIDcwODQ2LCA0NDIxLCAxMDU5MiwgMCwgCisgICAgNDk1LCA2NjQwMCwgNDE3MTIsIDc5ODMsIDcwODMzLCA5Mzk5NywgNzA2OTYsIDYzNDcsIDc4NzE1LCA3NjU0LCA0MTcxMCwgCisgICAgNDE5NiwgMTk0NzA0LCA0MzcsIDQxNzA5LCA3Mzc3MiwgNzA4MzIsIDAsIDk0NjUsIDEzMjkwLCAxMTkxODAsIDQ5OTcsIAorICAgIDY0MzA2LCAxMjEzMDksIDAsIDQ5OTksIDE5NDY0MiwgNjc0MDEsIDEyNjU4MiwgNDcxMSwgMTIwNzY5LCAxMDA0NjksIAorICAgIDI3MzksIDAsIDgwNDQsIDc0MzEzLCAxMjgyMzAsIDQxNzg5LCAxMjgxNDIsIDEwODA5LCA2NjI3OSwgMTI4NzQwLCAwLCAKKyAgICAxNzc5LCA2NjAwLCA2NjAxLCA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDk4MzgwNCwgCisgICAgOTIxODYsIDEzMjI5LCA3MTg0NSwgMTA1NzUsIDQzMzk5LCAxMDA0NjcsIDAsIDQxNzkxLCAxMTA0LCAxMjc5MjIsIAorICAgIDk4MzcyNSwgMTA2NTUsIDk4MzMzNCwgOTgzNTYxLCAxMjAxNjQsIDYzOTYwLCAxMDgyLCAxMjEwMjQsIDg0MjgsIDY1NjksIAorICAgIDEyODQyOSwgMCwgNzg1MzQsIDY5ODQ5LCA2NzgzLCAxOTQ2NzEsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgNDQwMjEsIDY0NTgsIAorICAgIDY0NzI4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIDEyMDY3NywgMTE4ODc2LCAKKyAgICAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCAxMjg2MjcsIDQxNTQ1LCAxMjY0NjUsIDkyNDQ5LCAxMjUyMDksIAorICAgIDExMjE2LCAxMjEzMDcsIDE5NDg1MSwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCA5ODMyMjUsIDg1MDMsIDUxMjIsIDQxNTI3LCAKKyAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA3NDkwNywgMTk0ODU2LCAwLCA0MTUzNywgNjY0NTMsIDgzMDMsIDgyODIsIDExODE3LCAKKyAgICA3Mzg1NywgMTAwMDMsIDczODU5LCA2NTkwNCwgNzM2MywgMTY4NiwgMTIyOTIwLCA3MDExNSwgMTE0NjcsIDM2NjQsIAorICAgIDY1OTIxLCA2NDI5OSwgMTI0OTM5LCAxMjg0NjIsIDEyODAwMSwgNDMyNCwgMTI2LCA0MjI0NiwgNzUwMzAsIDY5OTg0LCAKKyAgICA2NzcyNSwgNjU5MjYsIDc3NDQsIDY4ODU5LCA3NDI3NywgNjYyODMsIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIAorICAgIDAsIDY1NjAwLCAxNjMzLCAxMjgzMDEsIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTQsIAorICAgIDEzMDc4LCA5ODMyNzAsIDQ3NjAsIDYzODI3LCAyMDUwLCAxMDg3MSwgNDMxOTksIDExMDIsIDE5NDY1MiwgNjU1NSwgCisgICAgMTI4ODY3LCAxMjcwNzIsIDExNTQ2LCA3NDc5NCwgMzM3LCAxMjExOTYsIDQyNTkxLCA4NjI3LCAxMjI3OSwgMTExMSwgCisgICAgOTgzODU2LCA3NTA0NywgNDcwNywgNjgyMDYsIDEwMTQzLCA3ODgzLCAxMjE0NDQsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIAorICAgIDEzMDEwLCA2OTc5NiwgODMwNCwgOTI5ODIsIDE5NDY4OCwgMTE5NTc1LCAyMjkzLCA3MDE5NSwgNjY2NTQsIDEyOTA3NywgCisgICAgOTI2NzYsIDAsIDEzMDA4LCAxMjExOTQsIDQzODUsIDEwMDQ2MiwgMTMwMTEsIDEyNTAwNCwgOTI1NjksIDExOTE2MSwgCisgICAgMTMwMDksIDE2MCwgMjY3NywgNzAzODgsIDEyNzc4NSwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgNzA3OTAsIDQxNzkyLCAKKyAgICA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIDQzODIxLCA1NzA5LCAxMjUyMjIsIDcxMDc2LCA0MzgxNiwgOTgzMDg3LCAKKyAgICAxOTUwMDUsIDEwNzksIDM4NjcsIDU3MDgsIDAsIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgCisgICAgMTIxMDkxLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgNDM0NTksIDkxNzMsIDEyMTE1MiwgMTIxMjE5LCAxMzE3MCwgMTI1NDAsIAorICAgIDEyNTIzMywgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgNjgwNTgsIDc0ODY3LCA2NzczMCwgCisgICAgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1NDAsIDEyODMxMSwgMzM0MCwgNzQwMTcsIDkxNzU4NiwgCisgICAgMTIwOTk0LCAxMjkxNDEsIDkyOTc5LCAxMDYwNSwgMTMwOSwgNjM5NjYsIDEyMDc0MywgMTc1NCwgOTIyMjYsIDEzMjQ2LCAKKyAgICA4NjQsIDkxNzU4MiwgMTE4OTI2LCA4OTcyLCAxMDA0NDQsIDc4NDksIDEyMDA5MiwgODMxMzAsIDEzMjQwLCAxOTUwNjgsIAorICAgIDUxOTIsIDQzMzgsIDY3OTgyLCAxMDk0OCwgNjY4MjUsIDEzMTk5LCA5MjU3NSwgMTIzNiwgMTMyMDgsIDEzMjYxLCAxMzE4OSwgCisgICAgMTMxODgsIDkzOTkzLCA3MTg0NywgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCAKKyAgICA2Mzc4MiwgNjM3ODEsIDYzNzgwLCA2Mzc3OSwgMTU4MywgMTE5OTIzLCAxMzI2MCwgNDU1MCwgMTIwNTk4LCA2NDIwNSwgCisgICAgMTI5MTA3LCA3MTA3MSwgNDE1MjIsIDQxNTIzLCA2ODUyMywgMTI5MTA4LCA2Njc1OSwgMTEzNTQsIDk0MDcxLCAwLCAKKyAgICA0Mjc5NSwgMTI4MDYxLCAxMTkxOTUsIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCAKKyAgICA0NDc5LCAxMTc4LCA2NTU4NiwgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDEyNzg4NSwgMTk1MDM4LCA2NjgyOCwgCisgICAgMTI4OTcyLCAxMjc4MzksIDc0NTgwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgNjc0MDIsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgCisgICAgNjM3ODgsIDc5MTAsIDYzNzg1LCA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMTI1MTIyLCAKKyAgICA2NDcxMCwgMTA3NDcsIDEyNSwgMTIwODAzLCA2NDg5MCwgNjY4MDUsIDEyNzM3NiwgMCwgNDE3MTksIDYzNzU4LCAzNTIzLCAKKyAgICAxMDc0LCAxMzI1OCwgOTUzNiwgNzEwNTYsIDAsIDQ0MjcsIDc0MjQyLCA2Mzc1NywgNDMxNDUsIDEyMjE3LCA2Mzc1NCwgCisgICAgNDE1MzIsIDEzNDksIDYzNzUwLCA2Mzc0OSwgMTI5MDI1LCAxMjg3NzMsIDEwMTAxNCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgCisgICAgNzI3ODQsIDY4MTMzLCA0MTkzMCwgNjM4MDUsIDYzODA0LCAxMTE0MCwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgCisgICAgNjI2MCwgNzg4MjYsIDEyODM5MSwgNjY3NjUsIDExNDM5LCAxMTk4OCwgMzg5OCwgOTIyNDYsIDEwMjAxLCAxMjIzOCwgCisgICAgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgCisgICAgOTgzMzMxLCA0MjIwMywgNzk1MCwgMzEyNCwgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMTE0OCwgNjk3MywgMjc5MywgMTI0NzUsIAorICAgIDEyNTI0MSwgNzUwNTYsIDYzNzY5LCA5NTMwLCAxMjEyNDgsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIAorICAgIDQ1OTUsIDYzNzYwLCA3OTIsIDExMzY3NCwgNjQ4MDMsIDEwMDUxMiwgODc0MiwgMTk1MDI5LCAxMTA1MywgMTI4Nzk2LCAKKyAgICA2Mzc0NCwgMTI4MTA3LCAxMjg5NDIsIDc1ODgsIDYzNzQ4LCAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCAKKyAgICA0MjA2MywgMTA5MCwgNjg4MDMsIDEyMDc3OCwgMTE2NjUsIDc0MTMzLCA0NTU4LCA2NTY4NSwgOTUyMywgMTk1MDUzLCAKKyAgICA2Mzg1NywgNzEyMTYsIDExNTEzLCAwLCA2MTU3LCA2Mzc3NSwgNjM3NzQsIDYzNzczLCAxMzE5MSwgMTIxNzAsIDM1MDAsIAorICAgIDMxMzksIDY4MDcxLCAzMTcwLCAxMjQ4NSwgNDM4OTEsIDEwODcyLCA0Mzg5MiwgMTMwMDYsIDQzOTMzLCAxMjAwNzQsIAorICAgIDEwMDY1MCwgOTQxLCAwLCAxMjkwNzksIDEyMDk2NywgNjU1NDEsIDExMDYzLCA5ODMxOTgsIDgyMjgsIDczOTg4LCA0MjA2NSwgCisgICAgMTIyODkzLCA0Mzg4OSwgOTQwMzksIDEyNzA0MSwgOTI0NTUsIDczODYsIDAsIDY0NDQ0LCA3MDI5NSwgMTE5ODYzLCAKKyAgICA0MzYwMywgOTQwNzUsIDY1Mzk3LCAyODgsIDgzNDA5LCAwLCAwLCAxMDAyNSwgNjk5MTUsIDI5MTgsIDY2ODIwLCA2NTMwMCwgCisgICAgMTE5ODcxLCA5ODgzLCA2NDcyNiwgMjc5MCwgNjUzOTUsIDM3OTMsIDk4MzYyMCwgMTI3ODI5LCA2NTM5MywgMTIwNTkyLCAKKyAgICA3NDEzOCwgODM1MDUsIDkyNzUxLCA3NTAxOSwgNzQxMzksIDc4Nzc3LCA2NTM5NCwgMTE1NDgsIDUyNzAsIDEyODE0OSwgCisgICAgNjUzOTYsIDc0OTk4LCA2NTgxMywgMTMyNTYsIDEyODIsIDEyMDc3MSwgNzUwMTIsIDEyMDE1NywgMTA4ODgsIDEyMDkzNCwgCisgICAgNjUyNDIsIDAsIDMzMzAsIDEyOTQxNywgMCwgNjgzNDAsIDEyNDkzMSwgOTgzNjA1LCA3MTIwMiwgMzMwNCwgNDI3NTMsIAorICAgIDkyNTg4LCA3MDI5OCwgNzQ2NDMsIDE2MjcsIDEyOTEyMCwgMTI3NzY1LCAxOTQ3MzUsIDUzNzEsIDEzMTE2LCA5ODM3NzcsIAorICAgIDE4MjYsIDExODc5NCwgOTgzNDk3LCA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgNjgzMTcsIDkwMzUsIDExMTQxLCAKKyAgICA5MTc5NzcsIDEyODAwNSwgMCwgNzI3MzMsIDY4MTI1LCA3NDg5OCwgMTY0LCA2ODMwOSwgOTQwNjcsIDk0MDAwLCA2OTU4LCAKKyAgICAxMDA2MzQsIDQzMTE2LCA2NzcxOSwgNzAwMTksIDEzMjQ1LCAxMDA2MzcsIDY4ODA4LCA2NjgxOCwgMTI4MDA5LCA3MDAzMSwgCisgICAgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgOTgzNDczLCAKKyAgICA2NTUwOSwgMTI5MTkyLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIDEyNTEwMiwgNjM4MDgsIDkwNTQsIDk3MSwgCisgICAgMTMwNjIsIDcxMDkwLCAwLCA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgOTgzMzIxLCA3ODE0NiwgOTI2MTEsIDAsIAorICAgIDcwMjA0LCAxMjUxMjksIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDIzMDMsIDExMDU3LCAxMjQ5OTQsIDEzMjc2LCAxMjUxMzMsIAorICAgIDQxNTI1LCA3ODE1MCwgNzI3MSwgMTE0NDQsIDEyNjQ3OSwgMTI3OTA0LCAxMTkwOTEsIDEyMjI5LCAxMTY4MCwgOTI5NTYsIAorICAgIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDE5NTA4OSwgOTgzNDk1LCAxMDQ3NiwgMzg1OCwgNjQxNzUsIDM5MzIsIDY0OTU4LCAKKyAgICAxMjA0MzIsIDk4MzY3OCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCA3NDkwOCwgNDE3ODQsIDExOTE3NSwgNjQxNjMsIAorICAgIDc3OTk3LCA3MjcwNywgOTI2NDUsIDY1NDc0LCA0Nzk2LCAxMjI5MiwgMTI2NTk1LCA2NTQ3OSwgMTI4NjMxLCA0MTc4MSwgCisgICAgMTA0ODYsIDQxNDgwLCA0MzAwMiwgOTg5OSwgOTI2MDgsIDk4Mzg3MCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgNTc4OCwgCisgICAgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMTk0OTEzLCA3NDYsIDExODgyNiwgCisgICAgNzQ3ODMsIDAsIDEyMDE4LCA2NTI5NCwgMTI0OTQ2LCAxOTQ5MjUsIDY4ODM1LCA5ODM0ODgsIDQ0MjIsIDQ3MDgsIDM3OTksIAorICAgIDc0MjkyLCAxMTkzNTcsIDEyMTE0NiwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAxMjAzNzcsIDEyMTE1MSwgMTM2NCwgCisgICAgOTgzMzE3LCA4MDM4LCAxMjA4ODMsIDkxNzU5NywgMTI4NjgsIDY5ODE0LCA3MDQyNSwgNjczNSwgNzM5NzksIDEzMTc0LCAKICAgICA3Mzk2OCwgMTMyMjUsIDE5NDkwMiwgNjk4MDgsIDY1ODM1LCAwLCAyMzY1LCA3ODQxLCA3MTQ3NiwgNDI4NTUsIDExODg1NiwgCi0gICAgNDI4NjYsIDAsIDAsIDEyNzk4NiwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAxMTkzNTQsIAotICAgIDk4MzkyMCwgOTgzNTY4LCAxMjg4NzEsIDEyNzgyMSwgNjc2ODUsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIDEwNDA0LCAKLSAgICAxMDM0MCwgMTE5MzUyLCAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIDk4MzI0NSwgCi0gICAgMTIxMTQ5LCA0MTM3MywgNjg0ODYsIDEyMzAzLCAxMjg0NzYsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCA0MTM3MSwgCi0gICAgMTE2NTYsIDAsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDkyNzM3LCAxMDk2LCA0Mzg1MiwgCi0gICAgMTIxNDMzLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIDkyOTAyLCA4MDMyLCAKLSAgICAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMTIxMTU2LCA2NDg4NCwgOTI5MDksIDExOTM0NSwgODU5NywgCi0gICAgNzExMDAsIDEyOTA2MiwgOTg2NCwgMCwgMTIwNzg1LCAxMTk4NzQsIDk0MTA3LCAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAKLSAgICAwLCAxMDQ1OSwgMTE5ODc4LCAxMjQ5NDksIDExOTg3OSwgNjY1OTAsIDEyODEyMywgNDE1MzMsIDY2MzM3LCAxMjg2NjMsIAotICAgIDkyMTg0LCAwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCA2Nzg1NiwgMCwgNDM2MzgsIDc4NTM2LCAxMjExODcsIDYyNjEsIAotICAgIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgOTgyLCAyNzU2LCAxMzI5MiwgMTMyMDYsIDEyNTA2NCwgCi0gICAgOTE3Nzk1LCAyOTI1LCA3MzgwOSwgMTMwNTYsIDkyOTE0LCAxMzIxMiwgNDMyMzgsIDEyMTM5NiwgMTMxOTAsIDEzMTg3LCAKLSAgICA5MjU0MSwgMTMxOTgsIDExODc5MywgMTIxMDg5LCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCA3MTM2OSwgCi0gICAgNjc3MCwgNDMzMzEsIDAsIDY1NjIwLCA5ODM3MjgsIDQzNTQ0LCAxMjY0NjYsIDAsIDQxNDQ0LCA2NTYyMSwgNjk5NTUsIAotICAgIDkxOTcsIDUyNDYsIDExOTEwNiwgMTMxODUsIDk3MDksIDEyMDMyMywgMTIwMzIyLCAxMjMxNCwgNjU2MTYsIDUyMzgsIAotICAgIDQzODI1LCA3MTA4NSwgMTE5MzM3LCA1MjM2LCA0MDk3OSwgOTgzMTQwLCA3MTg3NCwgODI4NiwgMTI4NTM3LCAzOTM2LCAKLSAgICAxMTkzMzEsIDExNjk5LCA0MTM0NywgNjk3MzksIDEzMjM1LCA4ODQyLCA0MTI0OCwgMCwgNDM3OSwgMTMyMzksIDEyNjkyLCAKLSAgICA3OTY5LCAxMjcyNjYsIDcyMTksIDcxODc1LCAxMjgyNTEsIDEyMDUwOSwgOTI5MDcsIDY2MjI0LCA3MzQsIDI5NzksIAotICAgIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCA3MTE5MiwgCi0gICAgNzQ1MTEsIDQxNzcwLCAxNjcwLCA2NDQyLCAxMjAzMTcsIDQyNDQ2LCA1Mzc5LCAxMjAzMTgsIDQxMTYzLCA3NDgzMiwgCi0gICAgMTExMzYsIDcxODc2LCAxMTUwNiwgMTI4Mzk1LCA0Mjg0MSwgMTMyNjcsIDEyODQyMSwgMCwgNDE3NzUsIDAsIDcxMzAsIAotICAgIDQxNzczLCAwLCAxMDY2MywgNzAxMzAsIDAsIDk4Mzk3NCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIAotICAgIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAxMjc5NjQsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgNjc4MTQsIAotICAgIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgNzAwMDQsIDQzMzg2LCA2ODA5NywgNjQ1NzUsIDEyNjYzNywgMTE5NjUsIAotICAgIDE5NDkzMCwgNjgzNTgsIDcxNDgzLCA2OTc4OSwgNDI2NTMsIDgzMTgxLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzEwNDUsIAotICAgIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgMTE4ODU4LCA5NzU2LCA2OTg1LCA2NjQxOCwgNjY2MjEsIDc0MjE5LCA2NjQxMiwgCi0gICAgMTI4ODIyLCAxMTg5OTcsIDgwMTIsIDU2NzQsIDEyMzUzLCA2NjQyMSwgMTIzNjEsIDU2NzcsIDU1ODgsIDkyMzQ4LCAKLSAgICA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgNTY3MywgODMxMTMsIDU2NzYsIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAKLSAgICAxMjk0LCAwLCA3ODA1OSwgOTgzOTYyLCA0MjUxMSwgMTcyNywgMTIwNzI1LCA0MjQzNiwgMTIxNDAwLCAxMjExODMsIDAsIAotICAgIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCA1ODczLCA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIAotICAgIDEyOTAzMiwgOTI4ODksIDU4NDEsIDU4MzcsIDU1MjM0LCAxOTQ4NjQsIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCAwLCAKLSAgICAxMTk1OTIsIDU3OTMsIDAsIDU4NjYsIDU3OTcsIDQxMDExLCA1ODY1LCA5MzAwOSwgNzk1NiwgNTk4LCAwLCA2NDY0OSwgCi0gICAgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIDU2NzEsIDEyMDA0MSwgOTgzMjU3LCA4MzQ3OCwgOTgzOTI5LCA4MzE4NCwgMCwgODQ3LCAKLSAgICAxMjgyNDIsIDk1MjksIDgzMDE4LCA2NjY1NywgNjk4MCwgNzg0ODMsIDQzNTEwLCA3ODEyMiwgOTIyMTksIDAsIDY3NDExLCAKLSAgICA3ODQ4NiwgODMwMTcsIDEyNzI2MCwgMTIwMDM5LCA0MjY4MywgNzE4NDgsIDk4MzA1NSwgNzExNCwgMTI2NTIxLCAwLCAKLSAgICA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgNTY1MSwgMjkyOSwgNjc5MiwgNDMyMDEsIDc1MDU5LCAKLSAgICAxOTk2MywgNTY5OCwgMTk0NzY4LCA5ODMyNzIsIDkyOTMzLCA3MTg4NywgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgCi0gICAgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCA3MDMwNCwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAKLSAgICAxMDU2OCwgMCwgOTgzNjE4LCAyODY5LCA5MTc4NDMsIDQxMDE1LCA3NDQ3MywgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIAotICAgIDQxODAyLCA5ODM2NTIsIDQyNjA4LCA3ODQ2OCwgOTg4NCwgNDc1OSwgNzM3NjgsIDEyMDI5NiwgMTAyNjYsIDQxMzU5LCAKLSAgICAxMTcwLCA0MzM2NSwgNjk4MTAsIDczOTA4LCAxNjA5LCA5MDIsIDkyNzczLCA2MzkzNiwgODMyNDcsIDExNjYxLCA4MTIyLCAKLSAgICA1ODE4LCA4MzI0NSwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDk4Mzk2NiwgMCwgCi0gICAgODA3LCA0MzA3OSwgNzgwOTIsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAxMjA4NjMsIDQyMTU1LCA5ODMzMTksIDQxMzU2LCAKLSAgICA3NDExMCwgMTE4ODAxLCA3MTA0MywgMTIwMDgwLCA4Njc2LCA5ODMyOTMsIDk0MDAyLCA1NTgyLCA0NTEsIDYzOTQxLCAKKyAgICA0Mjg2NiwgMTAxMDc3LCAwLCAxMjc5ODYsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgCisgICAgMTE5MzU0LCAxOTQ5NDAsIDk4MzU2OCwgMTI3MjUzLCAxMjc4MjEsIDY3Njg1LCAxMjgwNjIsIDEyOTY1LCAzODQsIDY0NTEyLCAKKyAgICAxMDQwNCwgMTAzNDAsIDQxNDczLCAxNTU2LCA1Mjc0LCAxMzIxMCwgMTIwMTI1LCAxMDAxNywgOTczMywgNDE3ODcsIAorICAgIDk4MzI0NSwgNzA2ODQsIDQxMzczLCA2ODQ4NiwgMTIzMDMsIDEyODQ3NiwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIAorICAgIDQxMzcxLCAxMTY1NiwgOTgzNjkxLCAxMjA3MDMsIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCA5MjczNywgCisgICAgMTA5NiwgNDM4NTIsIDEyMTQzMywgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAKKyAgICA5MjkwMiwgODAzMiwgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMTI2NjQ2LCAxMTkxMDEsIDEyMTE1NiwgNjQ4ODQsIDkyOTA5LCAKKyAgICAxMTkzNDUsIDg1OTcsIDcxMTAwLCAxMjc1NTksIDk4NjQsIDk4Mzk0MywgMTIwNzg1LCAxMTk4NzQsIDk0MTA3LCAxMzE5NSwgCisgICAgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCA3MjgzMCwgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCAKKyAgICA0MTUzMywgNjYzMzcsIDEyODY2MywgOTIxODQsIDk4Mzg2MCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgNjc4NTYsIDAsIAorICAgIDQzNjM4LCA3ODUzNiwgNzI3MTksIDYyNjEsIDExOTM0MiwgNDMxNDcsIDY2NTcwLCAxOTU3LCAxMDQyMCwgOTgyLCAyNzU2LCAKKyAgICAxMzI5MiwgMTMyMDYsIDEyNTA2NCwgOTE3Nzk1LCAyOTI1LCA3MzgwOSwgMTMwNTYsIDkyOTE0LCAxMzIxMiwgNDMyMzgsIAorICAgIDEyMTM5NiwgMTMxOTAsIDEzMTg3LCA5MjU0MSwgMTMxOTgsIDExODc5MywgMTIxMDg5LCA1MjQyLCAxMTkxNzksIDY0NDc2LCAKKyAgICAxNjk0LCA4MjE2LCA3MTM2OSwgNjc3MCwgNDMzMzEsIDAsIDY1NjIwLCAxOTQ2MjksIDQzNTQ0LCAxMDA0NDEsIDAsIAorICAgIDQxNDQ0LCA2NTYyMSwgNjk5NTUsIDkxOTcsIDUyNDYsIDExOTEwNiwgMTMxODUsIDk3MDksIDEyMDMyMywgMTAwOTI0LCAKKyAgICAxMjMxNCwgNjU2MTYsIDUyMzgsIDQzODI1LCA3MTA4NSwgMTE5MzM3LCA1MjM2LCA0MDk3OSwgOTgzMTQwLCA3MTg3NCwgCisgICAgODI4NiwgMTIxMjkyLCAzOTM2LCAxMTkzMzEsIDExNjk5LCA0MTM0NywgNjk3MzksIDEzMjM1LCA4ODQyLCA0MTI0OCwgCisgICAgMTAwNDkwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIDc5NjksIDEyNzI2NiwgNzIxOSwgNzE4NzUsIDEyODI1MSwgMTIwNTA5LCAKKyAgICA5MjkwNywgNjYyMjQsIDczNCwgMjk3OSwgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIAorICAgIDQxNDc3LCAxMTkyNTYsIDcxMTkyLCA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIAorICAgIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAxMTEzNiwgNzE4NzYsIDExNTA2LCA2NTkzNCwgNDI4NDEsIDEzMjY3LCAxMjg0MjEsIAorICAgIDEyNDk4OCwgNDE3NzUsIDAsIDcxMzAsIDQxNzczLCA5MTc4ODgsIDEwNjYzLCA3MDEzMCwgMTI1MjI1LCA5ODM5NzQsIAorICAgIDYxNTEsIDEyMTEwLCA0MjY3MywgNjU1NzIsIDY1MjkzLCA2NTI1MCwgMTMyNjUsIDEzMjY0LCA2NDUxOCwgMCwgNjEwMCwgCisgICAgMTAwNDkzLCA5MjY0NywgNTgwOCwgNjU5MjIsIDY3ODE0LCAxMjk2NywgNjYwNDEsIDU2MTIsIDQ1ODMsIDcwMDA0LCAKKyAgICA0MzM4NiwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCA3MDcyMCwgNjgzNTgsIDcxNDgzLCA2OTc4OSwgNDI2NTMsIAorICAgIDgzMTgxLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzEwNDUsIDExOTY1MSwgMTI4NTE0LCA5MTc5MTUsIDQxOTIxLCAxMTg4NTgsIAorICAgIDk3NTYsIDY5ODUsIDY2NDE4LCA2NjYyMSwgNzQyMTksIDY2NDEyLCAxMjg4MjIsIDcwNzE4LCA4MDEyLCA1Njc0LCAxMjM1MywgCisgICAgNjY0MjEsIDEyMzYxLCA1Njc3LCA1NTg4LCA5MjM0OCwgNDE5MjUsIDEyODEyNCwgNDE5MjAsIDU2NzMsIDgzMTEzLCA1Njc2LCAKKyAgICA0MTkyMywgMTI2OTQsIDExODk3OCwgNTY3MiwgMTI5NCwgMTIwODc4LCA3ODA1OSwgOTgzOTYyLCA0MjUxMSwgMTcyNywgCisgICAgMTIwNzI1LCA0MjQzNiwgMTAwNDk3LCAxMjExODMsIDAsIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAKKyAgICA1ODczLCA3NDA5MCwgNTgyNiwgNTUyMzIsIDU4MTMsIDEyMDA4NiwgOTI4ODksIDU4NDEsIDU4MzcsIDU1MjM0LCAxOTQ4NjQsIAorICAgIDMxMDUsIDEyODI5LCA1ODM4LCA1Nzk2LCA5ODM4NDAsIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIAorICAgIDU4NjUsIDkzMDA5LCA3OTU2LCA1OTgsIDk4MzI2MCwgNjQ2NDksIDU4MDYsIDQyMzk4LCAwLCA5MDM3LCA1NjcxLCAKKyAgICAxMjAwNDEsIDk4MzI1NywgODM0NzgsIDk4MzkyOSwgNzEyNjYsIDkxNzYxOCwgODQ3LCAxMjUwNjUsIDk1MjksIDgzMDE4LCAKKyAgICA2NjY1NywgNjk4MCwgNzg0ODMsIDQzNTEwLCA3ODEyMiwgOTIyMTksIDAsIDY3NDExLCA3ODQ4NiwgODMwMTcsIDEyNzI2MCwgCisgICAgMTIwMDM5LCA0MjY4MywgNzE4NDgsIDEwMTA5NSwgNzExNCwgMTI2NTIxLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDcwNjU3LCAKKyAgICA0MjYxMSwgNDI1NjMsIDEwMTA3MSwgNTY1MSwgMjkyOSwgNjc5MiwgNDMyMDEsIDc1MDU5LCAxOTk2MywgNTY5OCwgCisgICAgMTk0NzY4LCAxMjA3MzAsIDkyOTMzLCA3MTg4NywgNTY0NCwgMTAyOTIsIDY1NTQ2LCA2OTcyNywgNjgxNDEsIDgzNzIsIAorICAgIDEwMDgwMCwgNjUxMTYsIDAsIDcwMzA0LCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIDEwNTY4LCAKKyAgICA5MTc1NjUsIDEyNzQwMCwgMjg2OSwgOTE3ODQzLCA0MTAxNSwgNzQ0NzMsIDI3ODUsIDQzNjYsIDAsIDEwOTU0LCA0MTgwMiwgCisgICAgOTgzNjUyLCA0MjYwOCwgNzg0NjgsIDk4ODQsIDQ3NTksIDczNzY4LCAxMjAyOTYsIDEwMjY2LCA0MTM1OSwgMTE3MCwgCisgICAgNDMzNjUsIDY5ODEwLCA3MzkwOCwgMTYwOSwgOTAyLCA5Mjc3MywgNjM5MzYsIDgzMjQ3LCAxMTY2MSwgODEyMiwgNTgxOCwgCisgICAgODMyNDUsIDAsIDM4NjEsIDk1NDAsIDExMDI4LCAyNTU0LCA1MTU4LCA1NzE0LCAyMjEzLCA5ODM5NjYsIDEyMTAyOCwgODA3LCAKKyAgICA0MzA3OSwgNzgwOTIsIDc4NDc1LCA5NzYsIDU1MTEsIDY0NTUzLCAxMjA4NjMsIDQyMTU1LCAxMjg5NTEsIDQxMzU2LCAKKyAgICA3NDExMCwgMTE4ODAxLCA3MTA0MywgMTIwMDgwLCA4Njc2LCAxMDA1MTksIDk0MDAyLCA1NTgyLCA0NTEsIDYzOTQxLCAKICAgICA1Nzk4LCA5MzQ5LCA0MjAxOCwgMTI3ODU4LCAxMjg1MjEsIDc4NjgxLCA0MzYwOSwgNTkwNiwgMTIwNTUzLCAxNDQwLCAwLCAKLSAgICAxMjg4NTMsIDc0OTMzLCA3MDM0MiwgMTEwMDUsIDE5NDY5OSwgNjY2NTYsIDY2MDQ0LCAxOTQ2MzYsIDEyMDA3OSwgCi0gICAgMTI4NzkzLCAwLCA0MzM5MywgMTAwOTQsIDcwMTY0LCAxMTUyOSwgMTA4NTcsIDkyOTQ0LCA2NjQzNiwgNjU0NiwgOTMsIAotICAgIDgxMDIsIDY3MzIzLCA2ODQwNSwgMCwgMTk0NzE0LCA4MTcxLCAxMTg4ODgsIDExOTA5NywgODI5OTYsIDkxNzU0MywgMzgzLCAKLSAgICA3MTU0LCA0MTY1NiwgNDM0OTUsIDk0MDQwLCA2NzE2MiwgNTE4NywgNzEyOTYsIDcxMDg2LCAxMTI4NiwgNjg2MjAsIAotICAgIDY0MjE3LCAwLCA1MjMyLCAwLCA0MTAwOSwgMTI3Mzc3LCA0MTAwNSwgOTgzODEwLCAwLCAxMjg0NzEsIDgyOTIsIDEyNTEwOCwgCi0gICAgNDk4MCwgODg2MCwgNzEwNTQsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIDE5NDcwNSwgNzQ5MTIsIDEyNzk3NCwgCi0gICAgMTA2MzEsIDExMjQ0LCA3OTcyLCA2ODA0MiwgNzg3ODUsIDAsIDc5MDAsIDEyODU5MCwgMTEzMDksIDM4MDYsIDQxOTgsIAotICAgIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgOTI1NTIsIDAsIDEyOTMxLCAxMjExMTAsIDQyNjg0LCA3NDI4NSwgMjA4OCwgCi0gICAgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAxMjc5MjAsIDE5NDcxMywgMTI4MzYsIDAsIAotICAgIDExMzgwMCwgNzQzNDIsIDg1OTMsIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMTIxMzMzLCAxMjg4NDMsIDc0NjQsIDAsIDY1ODY1LCAKLSAgICAwLCAxOTQ2NTAsIDEyNzE0NCwgOTIzOTUsIDkzNDIsIDEyMDQ2NCwgNzAzNzYsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIAotICAgIDQxMDA3LCA3NDM3NSwgOTgzNzAxLCA0MDk5NSwgMTIyMDksIDQxMDEyLCA4MzUwMSwgMCwgODMyNTcsIDY5NzI0LCA0MDk5MiwgCi0gICAgOTIyNjQsIDExOTEzNiwgNjg2NTMsIDQzNTU4LCA1NTIyLCA3NTAyNiwgNjEsIDEyMDk1OSwgNzQxMDUsIDM2MzMsIAotICAgIDEyMDA4MiwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDgzMjgxLCAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAKLSAgICAyNzg0LCA0Mjc0MywgNzEwNzgsIDgxMjYsIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCA0MTAwMiwgNDA5OTksIAotICAgIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgMTE4OTQ0LCA2NDQxNywgCi0gICAgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDc0ODUzLCA5ODM2NTksIDg5MzAsIDY2Njc4LCA2NzIxNiwgMTE5MywgMTAwNTYsIAotICAgIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMTIwOTkyLCAxMjExNzUsIDc3NDMsIDgzNTAyLCAxMjQ5OTYsIDc3OTA0LCAKLSAgICA3NzkxMywgNzc5MDUsIDkwMzQsIDYwMzksIDEyOTEzOSwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIDY2NDY5LCAKLSAgICAwLCAwLCAxOTQ2MzcsIDQyODE1LCA5Mjk4NCwgNDE5NjYsIDAsIDEyNzQ3MSwgMCwgMTE3OTIsIDQzMDY0LCA0MTAyNSwgCi0gICAgOTExLCA3NTM5LCAwLCA0MDk2MywgMTIwMzM5LCA2NTE1OSwgNjQzOTAsIDAsIDk4MzE2MCwgNTUyMCwgMTE2NjIsIAotICAgIDEyNzQ3MywgNjUzMzAsIDQyODEyLCA5ODMyMTUsIDAsIDEyMzI2LCA3MTA4MSwgMTk0NjM4LCA0MjgwOCwgMTI4MzM3LCAKLSAgICA5MzQ4LCA2NDkwMSwgOTgzODYxLCA5ODM4OTIsIDEyMTA1MCwgNjY4MzksIDAsIDAsIDEyMTAwNCwgNDM3MDIsIDk4MzE0OCwgCi0gICAgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDgzNTAzLCA4NjQ0LCAxMjEyMjcsIDgzMzMyLCAxMTE4NiwgNzQyOTYsIAotICAgIDQxOTA5LCAwLCA2NjkwMCwgMjc5MSwgNjk2NjMsIDE4OTEsIDY5ODI0LCA2NjM5NywgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIAotICAgIDg3NjEsIDEyOTQyLCA1NzQ4LCA5MjcxMywgMTA3NzMsIDcwODY4LCA4MzE3NCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIAotICAgIDg1MjAsIDEzMTQ2LCAxMjcwOTYsIDYzOTMxLCA4MzI3NSwgNjU5MDIsIDI4ODIsIDgzMzM0LCAwLCAxMjg0MywgNDUyMCwgCi0gICAgMTIwMzQ1LCA5MjQ1OSwgMCwgOTgzNjYwLCAwLCA3Mzg2MCwgODMzMzUsIDAsIDY0MzQ1LCAwLCA5MjAxLCAxMjgzMTQsIAotICAgIDcwODcxLCAwLCA5MTc4NjQsIDQzNjc5LCAxMjEwMjYsIDY1MTE3LCA5MjI3MCwgMCwgMTA0MjcsIDEyMTUwNiwgMzg0NCwgCi0gICAgNjg0MiwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDkzMDMwLCAxMjg3ODksIDk4MzYzOCwgOTI5MjgsIDc4MywgMTk0OTM1LCAKKyAgICAxMjg4NTMsIDc0OTMzLCA3MDM0MiwgMTEwMDUsIDE5NDY5OSwgNjY2NTYsIDY2MDQ0LCAxOTQ1ODYsIDEyMDA3OSwgCisgICAgMTI3MjQ5LCAxMjA3OTcsIDQzMzkzLCAxMDA5NCwgNzAxNjQsIDExNTI5LCAxMDg1NywgOTI5NDQsIDY2NDM2LCA2NTQ2LCAKKyAgICA5MywgODEwMiwgNjczMjMsIDY4NDA1LCAwLCAxOTQ3MTQsIDgxNzEsIDExODg4OCwgMTE5MDk3LCA4Mjk5NiwgOTE3NTQzLCAKKyAgICAzODMsIDcxNTQsIDQxNjU2LCA0MzQ5NSwgOTQwNDAsIDY3MTYyLCA1MTg3LCA3MTI5NiwgNzEwODYsIDExMjg2LCA2ODYyMCwgCisgICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAxMjczNzcsIDQxMDA1LCA5ODM4MTAsIDQzMjA1LCAxMjA4MjksIDgyOTIsIAorICAgIDEyNTEwOCwgNDk4MCwgODg2MCwgNzEwNTQsIDEwMDI4LCA2NTI5MSwgNzA3NiwgMTMxODIsIDE5NDcwNSwgNzQ5MTIsIAorICAgIDEyNzk3NCwgMTA2MzEsIDExMjQ0LCA3OTcyLCA2ODA0MiwgNzg3ODUsIDAsIDc5MDAsIDEyODU5MCwgMTEzMDksIDM4MDYsIAorICAgIDQxOTgsIDQyNzI1LCA5ODMzMTEsIDY3NjU2LCA5OTk1LCAxMjAwNzIsIDkyNTUyLCAwLCAxMjkzMSwgMTIxMTEwLCA0MjY4NCwgCisgICAgNzQyODUsIDIwODgsIDY0MjEzLCA2NDM2NiwgNjUxNTYsIDg4MTQsIDQyMjM4LCA3NDc3MSwgMTI3OTIwLCAxOTQ3MTMsIAorICAgIDEyODM2LCAxMjUyMTQsIDExMzgwMCwgNzQzNDIsIDg1OTMsIDEyMDY0MCwgMCwgNjg0NDUsIDEzMjU1LCAxMjEzMzMsIAorICAgIDEyODg0MywgNzQ2NCwgMTAxMDY2LCA2NTg2NSwgMCwgMTI4NTM1LCAxMjcxNDQsIDkyMzk1LCA5MzQyLCAxMjA0NjQsIAorICAgIDcwMzc2LCA2NDUxNiwgMCwgNzg3OTIsIDEwMTI5LCA0MTAwNywgNzQzNzUsIDk4MzcwMSwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgCisgICAgODM1MDEsIDAsIDgzMjU3LCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAxMTkxMzYsIDY4NjUzLCA0MzU1OCwgNTUyMiwgNzUwMjYsIAorICAgIDYxLCAxMjA5NTksIDc0MTA1LCAzNjMzLCAxMjAwODIsIDY1MTYyLCA0MTIzNCwgMTIwODksIDc4MjgxLCA5NzcxLCA4MzI4MSwgCisgICAgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDcxMDc4LCA4MTI2LCA2NjQ4MywgMCwgMTk0NjYyLCA0NDEsIAorICAgIDQyNjIxLCA3MDY2MCwgMCwgNDEwMDIsIDQwOTk5LCAxMTk2MjMsIDQzMjY2LCA3MTA4LCAxOTQ3NzksIDEwODkwLCA3NDQ4MSwgCisgICAgNjU4MzQsIDgzMjQsIDExODk0NCwgNjQ0MTcsIDc0ODE3LCAxMjc0NjUsIDY0NzM3LCA3NDg1MywgOTgzNjU5LCA4OTMwLCAKKyAgICA2NjY3OCwgNjcyMTYsIDExOTMsIDEwMDU2LCAxODAwLCAxMzI1MywgMTMyNTIsIDc4MjksIDEyMDk5MiwgMTIxMTc1LCAKKyAgICA3NzQzLCA4MzUwMiwgMTI0OTk2LCA3NzkwNCwgNzc5MTMsIDc3OTA1LCA5MDM0LCA2MDM5LCAxMjkxMzksIDEwMDc1LCAKKyAgICA5ODM3NjUsIDQxMDE4LCA2NTY4MywgMTAzMzgsIDY2NDY5LCAwLCAwLCAxOTQ2MzcsIDQyODE1LCA5Mjk4NCwgNDE5NjYsIDAsIAorICAgIDEyNzQ3MSwgMTI1MTg4LCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIDk4MzQ4NywgNDA5NjMsIDEwMDQ0NywgCisgICAgNjUxNTksIDY0MzkwLCAwLCA5ODMxNjAsIDU1MjAsIDExNjYyLCAxMjc0NzMsIDY1MzMwLCA0MjgxMiwgMTE5OTEyLCAKKyAgICAxMjY2NDcsIDEyMzI2LCA3MTA4MSwgMTk0NjM4LCA0MjgwOCwgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgOTgzODYxLCA5ODM4OTIsIAorICAgIDEyMTA1MCwgNjY4MzksIDAsIDAsIDEyMTAwNCwgNDM3MDIsIDEwMDgwNywgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIAorICAgIDgzNTAzLCA4NjQ0LCAxMjEyMjcsIDgzMzMyLCAxMTE4NiwgNzQyOTYsIDQxOTA5LCAwLCA2NjkwMCwgMjc5MSwgNjk2NjMsIAorICAgIDE4OTEsIDY5ODI0LCA2NjM5NywgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIDg3NjEsIDEyOTQyLCA1NzQ4LCA5MjcxMywgCisgICAgMTA3NzMsIDcwMjA2LCA4MzE3NCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIDEzMTQ2LCA3MjgwNSwgNjM5MzEsIAorICAgIDgzMjc1LCA2NTkwMiwgMjg4MiwgODMzMzQsIDEyODI4NSwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIDEyOTA5MiwgCisgICAgOTgzNjYwLCAxMjAwNjgsIDczODYwLCA4MzMzNSwgMTI4Mjg5LCA2NDM0NSwgOTgzNTU0LCA5MjAxLCAxMjgzMTQsIDcwODcxLCAKKyAgICA5ODM4MDksIDkxNzg2NCwgNDM2NzksIDEyMTAyNiwgNjUxMTcsIDkyMjcwLCA5ODM2MzYsIDEwNDI3LCAxMjE1MDYsIDM4NDQsIAorICAgIDY4NDIsIDk3NTUsIDExMTAsIDY2MTIsIDEyMjIyLCA5MzAzMCwgMTAxMDUxLCA5ODM2MzgsIDkyOTI4LCA3ODMsIDExOTU3NywgCiAgICAgOTIxODUsIDEyNzIyMSwgNzM4NTUsIDY4MDMyLCA2NTA1NiwgMzYyMCwgNDExODAsIDY4Mzc4LCA0NTU2LCA2NzgzOSwgCiAgICAgNjg0ODAsIDE5NDkzMywgNzQyNTAsIDAsIDY3NjU3LCAxMDUxMCwgNDM4MiwgNjY0ODIsIDY3ODIzLCAwLCAxMjc1MjcsIAotICAgIDkxNzcsIDg5MDIsIDkzOTU4LCA5ODM5LCAxMjA3MDAsIDEyODkxLCA5ODM3NTUsIDk4MzYzNiwgNjM5OTksIDIwMTYsIAorICAgIDkxNzcsIDg5MDIsIDkzOTU4LCA5ODM5LCAxMjA3MDAsIDEyODkxLCA5ODM3NTUsIDk4MzIzOSwgNjM5OTksIDIwMTYsIAogICAgIDQxOTE3LCA5Nzg4LCA2MzkyOCwgNjc2OTYsIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCAKICAgICA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMTIwODM0LCAKICAgICA2NDU5MiwgNzQyNzYsIDY3Njg4LCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDcxMjE4LCAxMTM4MjEsIDY2MzY2LCAxMjE0NywgCiAgICAgOTAyNCwgNjYzNzgsIDY2NDcyLCAxMjQ5NzYsIDY0Mjg5LCA2NTI4OSwgNzgxNTEsIDY2NjU4LCA3MTkzNSwgNjQ1MDksIAogICAgIDc4MTUyLCAxMTM2OTcsIDEyNjUwNSwgMTEwNTEsIDE5NDkyOCwgMCwgMTEzNTUsIDY1ODg1LCAxMjEzMTksIDEyNzk0MSwgCi0gICAgNDEyMTQsIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgMTI2NjA5LCA0MDQwLCAKLSAgICAxMjA1NzAsIDYxNjcsIDc0NTE5LCA2MzkyMiwgNjU5NCwgOTgzNzQwLCAwLCAwLCAzNjI0LCA0MzAzNiwgMTI5NDcyLCAKLSAgICA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMTI2OTkwLCA2Mzk5MywgMTA0NDAsIDk2MTEsIDY1NjA1LCAKLSAgICA2ODAzLCAxMjA5NjgsIDc3MzgsIDYzOTg2LCAxMTQ0NiwgNjM5ODQsIDkyNjQxLCAzNDM1LCA3ODE2NCwgNDM4MTQsIAotICAgIDQzODEwLCA3MDI5LCA2NDI1OCwgNDEyOTIsIDExODg5OCwgMTI3NDgsIDQyNzQyLCA5NTE3LCAxMTUxOCwgODMyOTIsIAotICAgIDc4NzkwLCA5ODMzODEsIDY3OTkzLCA2Mzk1NiwgNDI0NTgsIDYzOTU0LCA2Mzk1MywgNjM5NjAsIDk1OTEsIDQ1MTYsIAotICAgIDEwMjE3LCA2ODM3MCwgMTE0NjksIDY5Njk3LCA0MjMwNiwgMjcyMywgMTE4OTQ3LCAwLCA5MjMyNSwgMCwgNjgwNzksIAotICAgIDEyMTM0NCwgMTEzOTcsIDI4ODAsIDcwODA2LCA5MTc4MjksIDI4NzIsIDAsIDgzMzIxLCAzNDk4LCA0Mzc4LCA5MTc1MzksIAotICAgIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDE5NDk5MSwgMCwgOTgzMDQwLCAxOTQ5MTAsIAotICAgIDEyMTM5MiwgODE2MSwgMzkzLCAxMjAxMywgMCwgOTgzMTk4LCAxMTkxMDMsIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgCi0gICAgOTIzMTAsIDUxODMsIDE4NzcsIDQyNDk4LCAwLCAyOTI3LCA3MTA1OCwgNjM5NjEsIDQ0NzIsIDk4MzI5OSwgMCwgNzgxNTksIAotICAgIDY5Njk5LCAxMjczMDEsIDQyMzQwLCA0NzU2LCAxMjgwNzgsIDcwODEsIDEwNzMwLCA3NjkxLCAxMDMzMSwgNjM4MzAsIAotICAgIDExOTYyNSwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCA3ODY1NCwgNDI0NTMsIDE2MDQsIDk1NjUsIDEwNTM5LCA2OTcwMSwgCi0gICAgNjU3NjQsIDQxNDE1LCA2NTc2NywgMTI5MTk2LCA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgMCwgMCwgCi0gICAgNjM5ODAsIDExODAxLCAzNjIyLCAxOTUwOTIsIDY0MzM2LCAxMjAxNywgMTA0NjMsIDYzOTgxLCA0OTY3LCA2NDE4OSwgCi0gICAgMTk2NiwgNDM2MjgsIDk4MzkwOCwgOTgzMjk0LCA4MzI2NywgMTIxMDUyLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIAotICAgIDExMDA5LCAxMDY5NCwgNjM5NzMsIDQwMiwgOTIyMTMsIDEzMTQ3LCAxMjg2OTIsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIAotICAgIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDk4MzE1NywgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCA4MzMyMywgMTk0NjcwLCAKLSAgICAxMjA4MzYsIDkyMzUxLCA3NDgxMywgNzQ0MjUsIDExMjk5LCAxNTYxLCAxMTg4ODEsIDkyMzE4LCA2NDk0MiwgOTMwMjEsIAotICAgIDE5NDczMywgNzA0MTEsIDc4NzE4LCAxMjExNDAsIDc0MzAxLCA2ODgyNSwgMTEyODAsIDEyODQ4OSwgNjk3ODQsIDc0MDYwLCAKLSAgICAxMjgzOTIsIDAsIDExOTY2NCwgNTE0NSwgMTI0ODYsIDY1MDE4LCA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxMjQ5ODgsIDc0MDIsIAotICAgIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAwLCA2NjYxNiwgNjY4MzIsIDkyOTY2LCAxMjA4NTIsIDU0MDUsIAotICAgIDEyNzg3NSwgNjQ4NjYsIDEyMDk2NSwgMTE5NTgzLCAxMTkxMjIsIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgCi0gICAgNjQ2OTAsIDMyNTQsIDk4MzE2NiwgMTI4OTQ0LCA5MjY5NiwgNDIzOTAsIDQzNjc4LCAxOTQ3MjUsIDEyOTEyNywgNjUwNzcsIAotICAgIDEyOTA1OSwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDgzMDIxLCAzMzc3LCAwLCAwLCAKLSAgICA3NDM1NCwgMTk0NTc4LCA3ODIyOCwgOTgzNzIyLCA5ODM3NjIsIDQyNjkxLCAxMjc4ODYsIDEyMDk0OCwgNjgwOTEsIAotICAgIDEyODQwNCwgNzUwMjMsIDEzNzksIDI0NiwgNzQ2NDksIDk4Mzc2MSwgMzc4OCwgOTI1MjAsIDExMDQxLCA2NzIwMiwgCi0gICAgNjYzMDQsIDAsIDEyMTIxMywgODkxNywgNDI0MDMsIDMwMSwgMCwgMTI4NTAwLCAxMjcwNDYsIDAsIDAsIDExMzgyMiwgCi0gICAgMTA2NTYsIDEyNTA0MiwgNjUyMTQsIDkyOTg3LCA0MjU2NywgOTIyMTcsIDEzMTYzLCA5ODMyMDQsIDEyMDgzMSwgNzQ1OTcsIAotICAgIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCAxOTQ1NzQsIDExNDQzLCA5ODM2MDMsIAotICAgIDY2MzE5LCA2ODQxLCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMTE5MTE3LCA3NDQ4NSwgCi0gICAgNDI0NDIsIDY1NDcwLCA5ODM5MDcsIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgNjk5ODIsIDcwNTA1LCA5ODI4LCAKLSAgICAwLCA0MzUwNSwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgCi0gICAgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIDAsIDY4MzE1LCAwLCAwLCA3NDA0MSwgODMxNDQsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgCi0gICAgNDIxOTYsIDAsIDAsIDAsIDkxNTAsIDY2ODMxLCA0MjM5MywgMTMwODYsIDEzMTAsIDY2ODQ4LCA5MzM3LCAxMjA1MiwgCi0gICAgMTA2NDMsIDU1MjcxLCAxMjg5NTEsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgODMzMTYsIAotICAgIDE5NDgyMiwgMTk0NzU2LCA3NDMxMCwgNjU1NCwgOTQwNTksIDExOTE0LCA1NDUyLCAwLCAwLCA5Mjc3MiwgMCwgOTE3ODgwLCAKLSAgICAxOTQ2ODEsIDkyNTYwLCAyNzEzLCAxMTk1NjQsIDk2NTAsIDQzMzMwLCAxMjEwMzMsIDEyODUwNSwgMTQwNiwgMTI1MDA3LCAKLSAgICA0MjkyNSwgNzQ2MzgsIDE5NDU5MywgNjYyNTYsIDQxNDMsIDEyODEzNiwgMTk0NzYyLCA2NTc0OCwgNDE0MSwgOTY4MiwgCi0gICAgNjUyODcsIDE1MDgsIDEyNzAxMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCA0MTQ1LCAKLSAgICA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDQyOTMyLCA0MzQwMywgMCwgMCwgCi0gICAgMTk0NzgzLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgOTgzMjA1LCAxMjk1NSwgMTA1OTYsIDI4ODgsIDgzMTkwLCAwLCAKLSAgICAxMjEzNTQsIDk2NTcsIDkwMTksIDEyMTE1NCwgMCwgMjg3OCwgNTM5MCwgMCwgMTk0OTYxLCA2NzMyNSwgNjg2NzksIAotICAgIDQzNTUyLCA3NTAxLCA2MzI4LCAxOTQ5NjAsIDEwNDI5LCAxMDM2NSwgMCwgMCwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgCi0gICAgNjgzODEsIDAsIDAsIDg5ODYsIDQzODM4LCAxMDYzMiwgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAxOTQ5NzAsIDEyNjY0NywgCi0gICAgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCA2NDgyMiwgMjg5MiwgODMxOTIsIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAKLSAgICAxMjg5ODAsIDExOTAwMiwgMTMxNTEsIDc0NTEyLCA3Mjg5LCA3NDA1NSwgNjQxNjEsIDg4NTQsIDY0MTYyLCA1ODU4LCAKLSAgICA0MTkyNywgMTA1ODIsIDEyMDQ1NywgMTc4NCwgMTM2MSwgMTIwOTIxLCAxMjE1MTYsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIAotICAgIDEzMTU4LCA5MjE2NiwgNzIxMSwgNzE4ODQsIDkzNzEsIDczOTczLCAxMjg0NDEsIDY4MjgsIDE2MjUsIDc2NjQsIDEyODc2OCwgCi0gICAgMTM0MiwgNjg0NDAsIDY0MTcxLCA5MjY0MiwgMTA5MDMsIDk4MzQ5NiwgMCwgOTI1MjcsIDAsIDcwNDM4LCA0NDgyLCAKLSAgICA0MTYwNiwgMTI4OTM0LCAxMjUwMzMsIDEyMTQ3NSwgMCwgNjQzODEsIDk4Mzk0MCwgMTk0OTc0LCAxOTUwOTAsIDQyMjQ1LCAKLSAgICAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDk4MzQzOSwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAwLCAKLSAgICAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMCwgNzAxNzcsIDEyMDgzMCwgMCwgMTE5NywgMTI4MjgyLCAxMTQ5LCA2ODMxNiwgMCwgCi0gICAgOTgzMjU4LCA0MDk5MCwgNDM3NjUsIDEyMTI2MiwgMzQ5MiwgOTE3OTA2LCAxMTg3ODQsIDEyOTAyNiwgMCwgOTgzNTY2LCAKLSAgICAxMjgzOCwgNjcyMDgsIDE5OTQ4LCA0MTY3NywgMzA5OSwgMCwgMCwgNDEwODcsIDAsIDAsIDk4MzI2MSwgMTE5MDU5LCAKLSAgICAxMjAzNiwgNDEzMDksIDEyODE2MSwgMCwgODE1MiwgMCwgNDE1NTAsIDEyMjI3LCA5ODM2MTMsIDAsIDEyODI4LCAxMjc1MTEsIAotICAgIDc1MDE1LCAxMjA5NjQsIDEyMDcwOCwgMCwgMCwgMTAzODYsIDc1MDY4LCAxMTk5NTUsIDEyNzMwMywgOTI2ODAsIDk4MzEzNCwgCi0gICAgNjgxNTQsIDEyNzg3NiwgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDcwMDUyLCAKLSAgICA2NDQzOSwgMTI4ODY0LCA2ODA2MiwgOTI2ODYsIDk4Mzg3NSwgMCwgNDM4NjYsIDEyODg4MSwgMCwgMzM5NSwgOTM2MiwgCi0gICAgMTA4NzgsIDQzMjYwLCAwLCA3ODM2MiwgNjQ4MzAsIDAsIDEyNTA0NiwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIAotICAgIDEyMTEwMCwgNzEzNDQsIDQ3MzUsIDExMTExLCA2MTE5LCAxMjgyMiwgNDI2OTksIDAsIDk4MzgyNCwgNzQ4MTgsIDE0MjMsIAotICAgIDEyODkyMywgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDEyODYzNCwgMTE4ODkyLCAwLCA5NDcyLCA2NzczNCwgCi0gICAgMTE5MjksIDEyNjU1NywgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIDcxNDc1LCAwLCA5MjUwMSwgCi0gICAgMTI1MDgxLCA3ODA0NiwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM2LCA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCAKLSAgICA2ODQxNCwgNzQ2MTQsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAxMTc3NiwgNzU1OCwgNzAxMDksIAotICAgIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDk4MzA5NCwgMCwgMTE5MDIzLCA2NTM2NSwgNzM4NzcsIAotICAgIDY1NjI4LCA3ODAxOSwgMTE5MjcyLCA4MzExOCwgNDE3MDgsIDEyODYwLCAyNjQxLCAxMjA2OSwgMTA4MzgsIDU0MDMsIAotICAgIDEwMzUyLCA3MDA4NSwgMTAwNjEsIDQzMjM3LCAxMjUwNTcsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIAotICAgIDQzMDc4LCAxMjc3ODksIDExODgwOSwgNjcyMzIsIDEwODk5LCA2NTQ2OSwgNzAxMjUsIDAsIDAsIDI0MTAsIDk5MywgCi0gICAgODMxMTcsIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgMCwgMTE5MjUzLCAxMjQ5NjMsIDcxMTAsIDc0NDYyLCAKLSAgICAyMDY2LCAxMDQ4OSwgNDIxNjYsIDQzNDYzLCAxMDY1OSwgMzYwMCwgNjg4NjMsIDQyMjQsIDEzMzYsIDQxNTE4LCAxMjEzMTEsIAotICAgIDAsIDAsIDAsIDQxMTM5LCA2NDgyMCwgOTI1MzgsIDEyOTY2LCA0MTEzNCwgMCwgMCwgMTE5MTUzLCAxMjA0NDEsIDI3MiwgCi0gICAgNDI2MywgODc5MywgOTgzODU2LCAwLCA0MTUwMiwgMTI4MTMzLCA5ODMsIDEyNTQ5LCAxMjQ5NDAsIDAsIDExOTAsIDQxMDksIAotICAgIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMTIwOTI2LCA3MDAyNywgMjA5OSwgNTEyMCwgCi0gICAgMjQwOSwgNzc5OSwgMCwgNzQ0MjQsIDAsIDEyMTA0MSwgNDczMSwgOTIyNzksIDY2NjI5LCAxMjgxMjcsIDkyNTI1LCAxMjU1LCAKLSAgICA0MTQ5LCA5MjQ3LCA3NDk3NywgOTkxMywgOTgzODI4LCAxMjExMDEsIDY0OTE0LCA5MTc3ODcsIDY1MTAxLCAxMTM3MTQsIAotICAgIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIDEwODQyLCA0MTM1NCwgNDIxMjMsIDQzMDk3LCAKLSAgICAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDkxNzkwMCwgODE4MCwgMTI1MDU1LCAwLCA5OTcyLCA3Mzg2NSwgCi0gICAgNDUxOSwgNjExNCwgMTA4OTgsIDQzMDcyLCA5MjQ2NSwgMCwgOTM5NjAsIDk4MzMyNCwgMTI2NTgxLCAxMDY5NSwgMCwgCi0gICAgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgOTE3ODk3LCAxMjkxMzQsIDEzMzExLCA2ODQwMywgNDE4NTcsIAotICAgIDY0MzIxLCA4MzU5LCA4MzI4NiwgMTI2ODksIDk4MzMxMiwgMTEyNDUsIDEyODEwNSwgOTgzMzE0LCA3MTg1OSwgNjgxODMsIAotICAgIDk4MzQxNSwgMTk0ODI5LCAxMjg3LCA1NDM2LCAwLCA3MTA5NywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgNzAyMDUsIDYwNTEsIAotICAgIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDgyOTYyLCAxMjg5MDgsIDkzMDQzLCAxMjEwMTMsIDAsIDM2NTIsIDEwNTM3LCAKLSAgICAxMjAyODIsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgMjc5LCA3Mzc0NSwgMCwgMTI4NjY0LCA4MzI0NCwgMTQ4OSwgMCwgMCwgMCwgCi0gICAgMzg5OSwgMTAwNywgNDIxMjQsIDQzODI4LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAwLCAxMTk4NSwgMTM0NSwgNzg2MDAsIAotICAgIDExOTgzMiwgOTE3NTYzLCA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMTI5MTMxLCA2NDMwLCA3ODYwOCwgCi0gICAgNzg2MDQsIDc4NjA1LCA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAxMjg0ODEsIAotICAgIDEyMTI3MCwgMCwgNzUwMjcsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDc4NjE1LCA3ODYxNiwgMjI5NywgMCwgCi0gICAgNzM4MzcsIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgODMxNTIsIDk5MzMsIDc0MDExLCAKLSAgICA2NjUxNSwgNzY3LCA1NTI0LCA3MDI4LCAwLCA5MjE2OCwgMTE5ODI3LCAxMTk4MTcsIDkyOTUwLCA3ODYzMywgMTA4OTYsIDAsIAotICAgIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDEyODM0MiwgMCwgNjUzNDAsIDExODk3OSwgNDE1NTEsIDI0MzQsIDk0MDE4LCAKLSAgICAxMTg4MjMsIDY1MzUzLCAwLCA0NjMxLCAxMTg5OTYsIDAsIDY0MDcsIDExMzczNywgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIAotICAgIDMxOTIsIDEyMDMzMCwgODQxNCwgOTgzMzkyLCA5Mzk4MywgMTk1MDQzLCAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIAotICAgIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCAKLSAgICA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIAotICAgIDEwOTQ0LCA0MTIwOCwgOTgzNzEzLCA0MTE2OCwgODE3OCwgNzQ4NTksIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIAotICAgIDc4NjM2LCA2ODA0LCA3MDQ3NSwgMTk0NywgOTE3NTc5LCAwLCA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCAKLSAgICA3NDc5OCwgOTE4MSwgNjUzNTksIDEyNTA2NSwgODAxNywgMTE5ODMxLCA2NTA5NiwgNjY3MjAsIDY4MjIzLCA0MzQ3NSwgCi0gICAgOTE3NTQ4LCA0OTA5LCAxMjEyNiwgMTI3NTQwLCAxMjA2OTYsIDQ5MDQsIDkyOTYxLCA0MzUwMywgMTM2NSwgOTI1MywgCi0gICAgNDI3NTcsIDQzNDM2LCA3NDYyLCAxMjc3NzIsIDAsIDAsIDgzMTczLCA2Njg0NSwgNjQ0MTUsIDEyMDUwMCwgODMxNzIsIAotICAgIDUzOTgsIDEyNTAzNSwgMTI3Mzg2LCA5Mzk1MywgMTI3MzYyLCA5ODM3ODIsIDExOTAxNSwgODMxNzEsIDEyNzAwNywgOTQ3NiwgCi0gICAgOTgzODg3LCAxMjA2OTUsIDEyNzYzLCAxMjY2MDMsIDM2MjksIDEyMDg0NCwgMTMwMDUsIDExMTgxLCAzNjI4LCAwLCAwLCAKLSAgICA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIDY0ODA5LCAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIAotICAgIDEyMDM3MiwgNjQ2NjUsIDQzMDg2LCA5MTE0LCA0Mzg3MCwgNDI1ODMsIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIAotICAgIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgCi0gICAgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDc1MDQ2LCA2MDE4LCA2ODI5MywgMTI1MDEwLCAxMjI3NiwgMTE5MTEwLCAKLSAgICA2ODM3MiwgMTI4MjU1LCA5MjI1OSwgNzE4OTMsIDAsIDExOTgyOCwgMTA0NjcsIDAsIDI0NDMsIDEwOTE4LCA3ODIxNywgCi0gICAgNzc5NDcsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDEyNDk0MiwgNzM5ODcsIDEyNzg4MiwgNzE4OTUsIDkzMDEyLCA3OTkyLCAKLSAgICA3Nzk0MywgNDM5MzksIDEyODY3LCAxMjg2NDksIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIDUxOCwgCi0gICAgNjU4NTcsIDEyODM2MSwgMTI4Njc0LCAxMzIwNCwgNDM4NywgODU3LCAxMjEyNTIsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIAotICAgIDExODQyLCAwLCA3MTA3MiwgMTIxNDYyLCAwLCA1MTM2LCAxOTY4LCAxMjg5MDYsIDEyNjYyNywgMTMzNywgNjQ5NjcsIAotICAgIDE2MjksIDAsIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDQzODI2LCA0Mzk0NCwgCi0gICAgNjEyMCwgNDc4LCA2NTE1MSwgNjgxMjgsIDEyODE0NywgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCA3MTg5NCwgNDI3NiwgCi0gICAgMTIwNiwgMzYxOSwgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgCi0gICAgNjgzODQsIDkyNzU0LCA2NTM1MCwgMTA1MzAsIDEyMzQ4LCA4NjUzLCA2ODI0NSwgNDI0MzUsIDYxNTQsIDk1NTEsIDY1MzU0LCAKLSAgICA3ODUyMiwgNzg0LCA0MjM5NywgMzM0LCAxMjEwODQsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDQzOTM3LCA2OTY2NiwgNDQ0MiwgCi0gICAgMTAzNjQsIDQzOTM1LCA3NzgsIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDY5OTA3LCA0MzkzMiwgMTExMDIsIAotICAgIDI5MTUsIDExNTAyLCA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc1MDMyLCAxMjAyNzMsIDY5NzUsIDAsIDU0MTUsIAotICAgIDEyMTc2LCA5ODM3MDksIDc0MTkzLCAzNDYyLCA0Mzk0MCwgNDI2MjksIDc4NjkxLCA3MTE3NSwgNDM5NDIsIDEyNzI1NiwgCi0gICAgOTc1OSwgMTI3MjU1LCA3MDA1NywgMTIxNDQyLCA4MTE0LCA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgCi0gICAgNDI0OTUsIDExODk1NiwgNzAxODksIDQwNTEsIDEwNDYwLCA0MzM2NCwgNzEyMDYsIDEzNTYsIDEyMTYxLCA0MjcxMywgCi0gICAgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgNDIxMTIsIDY0NDM2LCAxODc1LCAxMDgwOCwgCi0gICAgNDIxMDksIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDk4MzIyNCwgCi0gICAgNTU3NSwgOTY3NSwgNzExMjksIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjc5LCA5Mjk3OSwgNDMyMzYsIDMzODIsIAotICAgIDQyNDQ5LCA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDExMzgxNCwgMTEyNjksIDEwMTUxLCA3Mzc1OSwgNDMxMDAsIAotICAgIDY5ODg4LCA2NTUwOCwgOTgzMTQzLCAwLCAxMjE0NTEsIDg5MzUsIDc4MjM0LCAwLCA5ODM3NTcsIDAsIDYxNiwgNzQ3NTMsIAotICAgIDY1MTc4LCA0Njg0LCA3ODcwMSwgMTE5NjUzLCA3NDYzMSwgMTI2NTUxLCAxMjQ5OTIsIDYwNDgsIDc0NDYwLCA0MjExMCwgCisgICAgNDEyMTQsIDEyOTMzMSwgMTIyOTksIDEwMTA3NSwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIAorICAgIDEyNjYwOSwgNDA0MCwgMTIwNTcwLCA2MTY3LCA3NDUxOSwgNjM5MjIsIDY1OTQsIDk4Mzc0MCwgMTEzNzM0LCAxMjc4OTksIAorICAgIDM2MjQsIDQzMDM2LCAxMjk0NzIsIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAxMTA1OTIsIDYzOTkzLCAKKyAgICAxMDQ0MCwgOTYxMSwgNjU2MDUsIDY4MDMsIDEyMDk2OCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIAorICAgIDc4MTY0LCA0MzgxNCwgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIAorICAgIDExNTE4LCA4MzI5MiwgNzg3OTAsIDk4MzM4MSwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCAxMjUwMywgCisgICAgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDkyMzI1LCAKKyAgICAxMjUwNjcsIDY4MDc5LCAxMjEzNDQsIDExMzk3LCAyODgwLCA3MDgwNiwgOTE3ODI5LCAyODcyLCAwLCA4MzMyMSwgMzQ5OCwgCisgICAgNDM3OCwgMTI4NzQzLCA0MjcwLCAwLCA2NTU1MSwgNjgyMDUsIDY2MzMsIDQzMzg3LCAwLCA1MjMwLCAxOTQ5OTEsIDAsIAorICAgIDgzMzIyLCAxMjY2MTIsIDEyMTM5MiwgODE2MSwgMzkzLCAxMjAxMywgOTgzMjIxLCAxMDA1MDksIDExOTEwMywgNDE1LCAKKyAgICA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDcxMDU4LCA2Mzk2MSwgCisgICAgNDQ3MiwgMTAxMDU0LCAwLCA3ODE1OSwgNjk2OTksIDEwMTA1NSwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIAorICAgIDc2OTEsIDEwMzMxLCA2MzgzMCwgODM0NTAsIDQyOTIyLCA0MjEwMywgODYyOCwgOTgxMywgNzg2NTQsIDQyNDUzLCAxNjA0LCAKKyAgICA5NTY1LCAxMDUzOSwgNjk3MDEsIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDEwMDUwNiwgODQ1NywgNDIzMDEsIDExMzcyLCAKKyAgICA2NDg3MywgMTE5OTIsIDE5NDg3NCwgMTI5MzA2LCA2Mzk4MCwgMTE4MDEsIDM2MjIsIDEyODkwNCwgNjQzMzYsIDEyMDE3LCAKKyAgICAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAxOTY2LCA0MzYyOCwgNzI3OTQsIDEwMTA2MCwgODMyNjcsIDEyMTA1MiwgCisgICAgNjM5NzEsIDQzNDcsIDQ0MTYsIDQyMDk4LCAxMTAwOSwgMTA2OTQsIDYzOTczLCA0MDIsIDkyMjEzLCAxMzE0NywgMTI4NjkyLCAKKyAgICA0MjEwMCwgNjQ2NDYsIDEzMjI4LCAwLCA0MTg3NSwgMzUxNSwgNzQyNTIsIDExODA1LCA5ODMxNTcsIDExMzAyLCA2MjU5LCAKKyAgICA0MzM5NSwgOTgzMzczLCA4MzMyMywgMTI4MzU4LCAxMjA4MzYsIDkyMzUxLCA3NDgxMywgNzQ0MjUsIDExMjk5LCAxNTYxLCAKKyAgICAxMTg4ODEsIDkyMzE4LCA2NDk0MiwgOTMwMjEsIDEyNzA0OSwgNzA0MTEsIDc4NzE4LCAxMDA5MzAsIDc0MzAxLCA2ODgyNSwgCisgICAgMTEyODAsIDEyODQ4OSwgNjk3ODQsIDc0MDYwLCAxMjgzOTIsIDE5NDk4OCwgNzI3NTIsIDUxNDUsIDEyNDg2LCA2NTAxOCwgCisgICAgNjY1MTYsIDU0MDksIDEyNzM3OSwgMTE5MDU3LCA3NDAyLCA1Mzk5LCA5Njg1LCA3NDA4OSwgNzk1MiwgNTQwMSwgMTAxMDUzLCAKKyAgICA2NjYxNiwgNjY4MzIsIDkyOTY2LCAxMjA4NTIsIDU0MDUsIDEyNzg3NSwgNjQ4NjYsIDEyMDk2NSwgMTE5NTgzLCAxMTkxMjIsIAorICAgIDIyMzUsIDc0MjQ4LCAxMTMzMCwgMTI5MTIzLCA2NDY5MCwgMzI1NCwgOTgzMTY2LCAxMjg5NDQsIDkyNjk2LCA0MjM5MCwgCisgICAgNDM2NzgsIDEwMTAwMCwgMTI5MTI3LCA2NTA3NywgMTI5MDU5LCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAKKyAgICAxMTUyMCwgNTYxMSwgODMwMjEsIDMzNzcsIDAsIDk4Mzg0NSwgNzQzNTQsIDE5NDU3OCwgNzgyMjgsIDk4MzcyMiwgCisgICAgMTI4MzY4LCA0MjY5MSwgMTI3ODg2LCAxMjA5NDgsIDY4MDkxLCAxMjExNjYsIDc1MDIzLCAxMzc5LCAyNDYsIDc0NjQ5LCAKKyAgICA5ODM3NjEsIDM3ODgsIDkyNTIwLCAxMTA0MSwgNjcyMDIsIDY2MzA0LCAwLCAxMjEyMTMsIDg5MTcsIDQyNDAzLCAzMDEsIAorICAgIDExOTkzNSwgMTE5ODI2LCAxMjcwNDYsIDAsIDAsIDExMzgyMiwgMTA2NTYsIDEyNTA0MiwgNjUyMTQsIDkyOTg3LCA0MjU2NywgCisgICAgOTIyMTcsIDEzMTYzLCA5ODMyMDQsIDEyMDgzMSwgNzQ1OTcsIDMxODIsIDk4MzYwNywgOTgzOTI2LCAwLCA2NTAzNCwgCisgICAgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgNzQ2MzEsIDExNDQzLCA5ODM2MDMsIDY2MzE5LCA2ODQxLCA2MDgsIDYwMCwgCisgICAgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMTE5MTE3LCA3NDQ4NSwgNDI0NDIsIDY1NDcwLCAxMDA1MzgsIAorICAgIDY0MjAyLCAxMzE2MCwgNzc1OSwgNDI0ODIsIDQ4NSwgNjk5ODIsIDcwNTA1LCA5ODI4LCA3ODMxMSwgNDM1MDUsIDQyMjgwLCAKKyAgICAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAKKyAgICAxMjg5MTMsIDY4MzE1LCA5ODM4MzgsIDEyMTE1OSwgNzQwNDEsIDgzMTQ0LCA3MDA0NSwgNDM1MzksIDU0MTEsIDQyMTk2LCAKKyAgICAwLCAwLCAxMjg5NDksIDkxNTAsIDY2ODMxLCA0MjM5MywgMTMwODYsIDEzMTAsIDY2ODQ4LCA5MzM3LCAxMjA1MiwgMTA2NDMsIAorICAgIDU1MjcxLCA3MjcyNywgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCA4MzMxNiwgMTk0ODIyLCAKKyAgICAxMDA3MzMsIDc0MzEwLCA2NTU0LCA4MzA1MywgMTE5MTQsIDU0NTIsIDk4MzY0OSwgMCwgOTI3NzIsIDEyNzU0NCwgCisgICAgOTE3ODgwLCAxOTQ2ODEsIDkyNTYwLCAyNzEzLCAxMTk1NjQsIDk2NTAsIDQzMzMwLCAxMjEwMzMsIDEyODUwNSwgMTQwNiwgCisgICAgMTI1MDA3LCA0MjkyNSwgNzQ2MzgsIDEyNTE5MCwgNjYyNTYsIDQxNDMsIDEyODEzNiwgMTk0NzYyLCA2NTc0OCwgNDE0MSwgCisgICAgOTY4MiwgNjUyODcsIDE1MDgsIDEwMDUzMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCAKKyAgICA0MTQ1LCA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDQyOTMyLCA0MzQwMywgCisgICAgMTAwNjIzLCAxMDA2MjIsIDEwMDYyNSwgNjU3MzYsIDQxOTUxLCA2NDgxNiwgNjU3NTYsIDcyNzMxLCAxMjk1NSwgMTA1OTYsIAorICAgIDI4ODgsIDgzMTkwLCAwLCAxMjEzNTQsIDk2NTcsIDkwMTksIDEyMTE1NCwgMCwgMjg3OCwgNTM5MCwgMTAwNjk4LCAKKyAgICAxOTQ5NjEsIDY3MzI1LCA2ODY3OSwgNDM1NTIsIDc1MDEsIDYzMjgsIDE5NDk2MCwgMTA0MjksIDEwMzY1LCA5ODM2MzEsIAorICAgIDEyODIxNiwgNDE5NDYsIDc1MDMsIDUyMzUsIDgwMywgNjgzODEsIDAsIDEwMDU3NSwgODk4NiwgNDM4MzgsIDEwNjMyLCAKKyAgICAxMTkzNCwgMTE0NTIsIDEzMzIsIDEyMDcwOSwgMTk0OTcwLCAxMjA2MDIsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgOTI4OCwgCisgICAgNjQ4MjIsIDI4OTIsIDgzMTkyLCA0MzM5NCwgNTU1LCAxMjk0MTgsIDEyODQ3NCwgNjY2NDYsIDEyODMyNywgMTE5MDAyLCAKKyAgICAxMzE1MSwgNzQ1MTIsIDcyODksIDcyNzM5LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIDQxOTI3LCAxMDU4MiwgCisgICAgMTIwNDU3LCAxNzg0LCAxMzYxLCAxMjA5MjEsIDEyMTUxNiwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgMTMxNTgsIDkyMTY2LCAKKyAgICA3MjExLCA3MTg4NCwgOTM3MSwgNzM5NzMsIDEyODQ0MSwgNjgyOCwgMTYyNSwgNzY2NCwgMTI3ODA5LCAxMzQyLCA2ODQ0MCwgCisgICAgNjQxNzEsIDkyNjQyLCAxMDkwMywgOTgzNDQ5LCA5MTc4MTgsIDkyNTI3LCAxMjkzNzQsIDcwNDM4LCA0NDgyLCA0MTYwNiwgCisgICAgMTI4OTM0LCAxMjUwMzMsIDEyMTQ3NSwgOTgzODU0LCA2NDM4MSwgMTAwNTQwLCAxOTQ5NzQsIDEwMDYxMiwgNDIyNDUsIAorICAgIDEwMDYxNCwgNDE5NzIsIDEwMDYxNiwgNDQ0LCAxMDA2MTgsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgCisgICAgMTI2NjA2LCAxMTM0OSwgNDA5OTEsIDkxNzU3MCwgMTI5MTMyLCA3MDE3NywgMTIwODMwLCA5ODM0NTAsIDExOTcsIAorICAgIDEyODI4MiwgMTE0OSwgNjgzMTYsIDEyODAxMCwgOTgzMjU4LCA0MDk5MCwgNDM3NjUsIDEyMTI2MiwgMzQ5MiwgOTE3OTA2LCAKKyAgICAxMTg3ODQsIDEyOTAyNiwgMTI5MzQ2LCAxMDA1OTIsIDEyODM4LCA2NzIwOCwgMTk5NDgsIDQxNjc3LCAzMDk5LCAxMDA1OTgsIAorICAgIDEwMDU5NywgNDEwODcsIDEwMDU5OSwgMCwgOTgzMjYxLCAxMTkwNTksIDEyMDM2LCA0MTMwOSwgMTI1MjEwLCAxMDA2MDMsIAorICAgIDgxNTIsIDEwMDYwNSwgNDE1NTAsIDEyMjI3LCAxMDA1NDUsIDEwMDYwOSwgMTI4MjgsIDEyNzUxMSwgNzUwMTUsIDEyMDk2NCwgCisgICAgMTIwNzA4LCAwLCAxOTQ2MTEsIDEwMzg2LCA3NTA2OCwgMTE5OTU1LCAxMjczMDMsIDkyNjgwLCA5ODMxMzQsIDY4MTU0LCAKKyAgICAxMjc4NzYsIDE3NDMsIDE5NDg2MCwgMCwgOTIyMzksIDY1MTg2LCA5MTc1NzEsIDAsIDk2MDYsIDAsIDcwMDUyLCA2NDQzOSwgCisgICAgMTI4ODY0LCA2ODA2MiwgOTI2ODYsIDEwMDU4NSwgMTAwNTg0LCA0Mzg2NiwgMTAwNTg2LCAxMDA1ODksIDMzOTUsIDkzNjIsIAorICAgIDEwODc4LCA0MzI2MCwgMCwgNzgzNjIsIDY0ODMwLCAxMDA4NjYsIDEyNTA0NiwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIAorICAgIDEyMTEwMCwgNzEzNDQsIDQ3MzUsIDExMTExLCA2MTE5LCAxMjgyMiwgNDI2OTksIDEyMDc0NSwgOTgzODI0LCA3NDgxOCwgCisgICAgMTQyMywgMTI4OTIzLCA0MjYzNywgNDEwODAsIDk4MzIxMCwgMTIwMzksIDEwNTU5LCAxMjg2MzQsIDExODg5MiwgMTk0OTEwLCAKKyAgICA5NDcyLCA2NzczNCwgMTE5MjksIDEyNjU1NywgNzE3MCwgOTU5NiwgNjEzMCwgMTI1MjY4LCA0MzYyOSwgMTE1NzksIAorICAgIDcxNDc1LCAwLCA5MjUwMSwgMTI1MDgxLCA3ODA0NiwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM2LCA0MzIzNCwgCisgICAgNjYwMDgsIDEyNjI3LCAwLCA2ODQxNCwgNzQ2MTQsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAKKyAgICAxMTc3NiwgNzU1OCwgNzAxMDksIDY1NjI3LCA3Mjg3NiwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCA3NDk0NywgCisgICAgOTgzMDk0LCAwLCAxMTkwMjMsIDY1MzY1LCA3Mzg3NywgNjU2MjgsIDc4MDE5LCAxMTkyNzIsIDgzMTE4LCA0MTcwOCwgCisgICAgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDEyNTA1NywgCisgICAgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgNDMwNzgsIDEyNzc4OSwgMTE4ODA5LCA2NzIzMiwgMTA4OTksIAorICAgIDY1NDY5LCA3MDEyNSwgMTAwNTc0LCAxMDA1NzMsIDI0MTAsIDk5MywgODMxMTcsIDEwMDU3NywgMTAwNTgwLCA3ODY5MywgCisgICAgMTAwNTYwLCAxMDA1NTksIDcyMzIsIDAsIDExOTI1MywgMTI0OTYzLCA3MTEwLCA3NDQ2MiwgMjA2NiwgMTA0ODksIDQyMTY2LCAKKyAgICA0MzQ2MywgMTA2NTksIDM2MDAsIDY4ODYzLCA0MjI0LCAxMzM2LCA0MTUxOCwgMTIxMzExLCAwLCA5MTc1ODksIDk4Mzc5NCwgCisgICAgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAxMDA1NTMsIDEwMDU1NiwgMTAwNTU1LCAxMDA1NTgsIDI3MiwgCisgICAgNDI2MywgODc5MywgOTgzMzg1LCAwLCA0MTUwMiwgMTI4MTMzLCA5ODMsIDEyNTQ5LCAxMDA1NjMsIDEwMDU2MiwgMTE5MCwgCisgICAgNDEwOSwgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxMjA5MjYsIDcwMDI3LCAyMDk5LCAKKyAgICA1MTIwLCAyNDA5LCA3Nzk5LCA5ODM5NTQsIDc0NDI0LCA5ODM4OTYsIDEyMTA0MSwgNDczMSwgOTIyNzksIDY2NjI5LCAKKyAgICAxMjgxMjcsIDkyNTI1LCAxMjU1LCA0MTQ5LCA5MjQ3LCA3NDk3NywgOTkxMywgOTgzODI4LCAxMDEwMjcsIDY0OTE0LCAKKyAgICAxMjUwMDIsIDY1MTAxLCAxMTM3MTQsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzA5NiwgNjY2MjUsIDEwODQyLCAKKyAgICA0MTM1NCwgNDIxMjMsIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDkxNzkwMCwgODE4MCwgCisgICAgMTI1MDU1LCA5ODM5MTIsIDk5NzIsIDczODY1LCA0NTE5LCA2MTE0LCAxMDg5OCwgNDMwNzIsIDkyNDY1LCAwLCA5Mzk2MCwgCisgICAgOTgzMzI0LCA3NDA1NSwgMTA2OTUsIDEyOTA1OCwgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgOTE3OTQ5LCAKKyAgICA5MTc4OTcsIDEyODMyNiwgMTMzMTEsIDY4NDAzLCA0MTg1NywgNjQzMjEsIDgzNTksIDgzMjg2LCAxMjY4OSwgOTgzMzEyLCAKKyAgICAxMTI0NSwgMTI4MTA1LCA5ODMzMTQsIDcxODU5LCA2ODE4MywgOTgzNDE1LCAxOTQ4MjksIDEyODcsIDU0MzYsIDk4MzA2NSwgCisgICAgNzEwOTcsIDc0MTQyLCA5MjMyOCwgNzQxNTIsIDcwMjA1LCA2MDUxLCAxMDQ5NywgNjk2NjgsIDg5ODUsIDEyMTA5LCAKKyAgICA4Mjk2MiwgMTI3Mzk3LCA5MzA0MywgMTIxMDEzLCAwLCAzNjUyLCAxMDUzNywgMTIwMjgyLCAxMjc2LCAxMjA0NDAsIDY1NDksIAorICAgIDI3OSwgNzM3NDUsIDEyNzgyMywgMTI4NjY0LCA4MzI0NCwgMTQ4OSwgMTIwNjIyLCAwLCAwLCAzODk5LCAxMDA3LCA0MjEyNCwgCisgICAgNDM4MjgsIDQyMTIyLCA5MjMzNywgOTIzNjcsIDEyNTE4NywgMTE5ODUsIDEzNDUsIDc4NjAwLCAxMTk4MzIsIDkxNzU2MywgCisgICAgODk1NiwgNDMwODMsIDk0MDU3LCA0MjEzOCwgNzg2MTAsIDEyOTEzMSwgNjQzMCwgNzg2MDgsIDc4NjA0LCA3ODYwNSwgCisgICAgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMTI4NDgxLCAxMjEyNzAsIDAsIDc1MDI3LCAKKyAgICA0MzcxMiwgMjU4MiwgMTE0NzAsIDY0NTM4LCA3NDQ0LCA3Mjg2MywgNzg2MTYsIDIyOTcsIDEyOTM0MSwgNzM4MzcsIAorICAgIDExOTgyMywgMjUyNywgMTE5ODI0LCAxOTcsIDI3OTksIDkyNTk0LCA0MTk0NCwgODMxNTIsIDk5MzMsIDc0MDExLCA2NjUxNSwgCisgICAgNzY3LCA1NTI0LCA3MDI4LCAxOTUwNjUsIDkyMTY4LCAxMTk4MjcsIDExOTgxNywgOTI5NTAsIDc4NjMzLCAxMDg5NiwgCisgICAgNjM5MTAsIDE3OTksIDEyMDQ5NywgNjk3MSwgNzQzMzYsIDcwNzMxLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjI2MiwgCisgICAgOTQwMTgsIDExODgyMywgNjUzNTMsIDEwMDQ3OSwgNDYzMSwgMTE4OTk2LCAxOTUwMjcsIDY0MDcsIDExMzczNywgNjMzOCwgCisgICAgNDMyMTQsIDEyNzE2MywgNzU3MCwgMTIxMDE3LCAzMTkyLCAxMjAzMzAsIDg0MTQsIDk4MzM4OCwgOTM5ODMsIDE5NTA0MywgCisgICAgMCwgMCwgOTE2NCwgNjY2MTIsIDkzOTU5LCAzMTcxLCA2NjIzLCA0OTYxLCA2ODM5NiwgODg2LCA1NTIxNiwgODY1NCwgCisgICAgNzg4MzIsIDk5OTMsIDc0MzkwLCA2NDYwMywgNzAwNjYsIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCAKKyAgICA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgNDEyMDgsIDk4MzcxMywgNDExNjgsIDgxNzgsIAorICAgIDc0ODU5LCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCA3ODYzNiwgNjgwNCwgNzA0NzUsIDE5NDcsIDcyNzcwLCAwLCAKKyAgICA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCA3NDc5OCwgOTE4MSwgNjUzNTksIDcyNzIyLCA4MDE3LCAKKyAgICAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgNjgyMjMsIDQzNDc1LCA5MTc1NDgsIDQ5MDksIDEyMTI2LCAxMjc1NDAsIDEwMTAxNSwgCisgICAgNDkwNCwgOTI5NjEsIDQzNTAzLCAxMzY1LCA5MjUzLCA0Mjc1NywgNDM0MzYsIDc0NjIsIDEyNzc3MiwgMCwgMCwgODMxNzMsIAorICAgIDY2ODQ1LCA2NDQxNSwgMTIwNTAwLCA4MzE3MiwgNTM5OCwgMTI1MDM1LCAxMjczODYsIDkzOTUzLCAxMjczNjIsIDk4Mzc4MiwgCisgICAgMTE5MDE1LCA4MzE3MSwgMTI3MDA3LCA5NDc2LCA5ODMwNjYsIDEyMDY5NSwgMTI3NjMsIDEwMDUyMywgMzYyOSwgMTIwODQ0LCAKKyAgICAxMzAwNSwgMTExODEsIDM2MjgsIDExOTgzNCwgMCwgOTI1MDIsIDM0NjksIDQyMTA3LCA0MjExNiwgOTE3NTc4LCA2NDgwOSwgCisgICAgMjkyOCwgNDkwNSwgOTg1MywgODUxLCA5MDQwLCAxMjAzNzIsIDY0NjY1LCA0MzA4NiwgOTExNCwgNDM4NzAsIDQyNTgzLCAKKyAgICA5MzE1LCA0ODIyLCA0OTA2LCAzODUyLCAyODQ3LCAxMTk4MjEsIDMyMzYsIDExMzE3LCAxMjUxLCA3Nzc3LCA0MTg1MiwgCisgICAgMTE0MTAsIDEwOTY0LCAwLCA0MzIyMiwgMTI2NDYsIDEyMDI2OSwgMTAyNTksIDk4NjUsIDY1ODIxLCA3NTA0NiwgNjAxOCwgCisgICAgNjgyOTMsIDEyNTAxMCwgMTIyNzYsIDExOTExMCwgNjgzNzIsIDEyODI1NSwgOTIyNTksIDcxODkzLCAxMTk4MTMsIAorICAgIDExOTgyOCwgMTA0NjcsIDk4MzgxNCwgMjQ0MywgMTA5MTgsIDc4MjE3LCA3Nzk0NywgMTAwMSwgOTI0MSwgMTkyNywgMCwgCisgICAgMTI0OTQyLCA3Mzk4NywgMTI3ODgyLCA3MTg5NSwgOTMwMTIsIDc5OTIsIDc3OTQzLCA0MzkzOSwgMTI4NjcsIDEyODY0OSwgCisgICAgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgNTE4LCA2NTg1NywgMTI4MzYxLCAxMjg2NzQsIDEzMjA0LCAKKyAgICA0Mzg3LCA4NTcsIDEyMTI1MiwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgMTE4NDIsIDAsIDcxMDcyLCAxMjE0NjIsIDAsIAorICAgIDUxMzYsIDE5NjgsIDEyODkwNiwgMTI2NjI3LCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMTI4NDQyLCAKKyAgICA3NDEyMywgMTI4NzcsIDEyMDY0OSwgNDIzMTQsIDQzMzg4LCA0MzgyNiwgNDM5NDQsIDYxMjAsIDQ3OCwgNjUxNTEsIAorICAgIDY4MTI4LCAxMTkwNDQsIDQzMDgyLCA2MDE2LCAwLCA0MjI4NCwgNzE4OTQsIDQyNzYsIDEyMDYsIDM2MTksIDQxNjM4LCAKKyAgICA2OTY5MSwgMzg0MywgMTIwMTEsIDg4NTMsIDMzNjEsIDgzMTc5LCA0OTAsIDEwNzE1LCA3NTc4LCA2ODM4NCwgOTI3NTQsIAorICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDY4MjQ1LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAorICAgIDQyMzk3LCAzMzQsIDcyNzMyLCA0MjQxNiwgNjUzNTYsIDY1MjczLCA0MzkzNywgNjk2NjYsIDQ0NDIsIDEwMzY0LCA0MzkzNSwgCisgICAgNzc4LCA0MTYyNiwgNDI0NTUsIDc5ODksIDc0MDYzLCAzMjI3LCA2OTkwNywgNDM5MzIsIDExMTAyLCAyOTE1LCAxMTUwMiwgCisgICAgNDEwMjIsIDQxNzAyLCAxMDMwOSwgMTI3MDM1LCA3NTAzMiwgMTIwMjczLCA2OTc1LCAxMjg3OTMsIDU0MTUsIDEyMTc2LCAKKyAgICAxMjA2NTMsIDc0MTkzLCAzNDYyLCA0Mzk0MCwgNDI2MjksIDc4NjkxLCA3MTE3NSwgNDM5NDIsIDEyNzI1NiwgOTc1OSwgCisgICAgMTI3MjU1LCA3MDA1NywgMTIxNDQyLCA4MTE0LCA3ODY5OCwgNzg2OTcsIDc0ODIzLCA3ODY5NSwgODcxMCwgNDI0OTUsIAorICAgIDExODk1NiwgNzAxODksIDQwNTEsIDEwNDYwLCA0MzM2NCwgNzEyMDYsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAKKyAgICAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgNDIxMTIsIDY0NDM2LCAxODc1LCAxMDgwOCwgNDIxMDksIAorICAgIDEyMDI4NCwgNDE4NjAsIDY0ODYyLCAxMzMwNSwgNjQ5MDcsIDUyODksIDEzMTQ0LCAxMjg2NTgsIDk4MzIyNCwgNTU3NSwgCisgICAgOTY3NSwgNzExMjksIDU5NDAsIDIyNiwgMjY0OSwgNjMzNiwgOTgzMjc5LCA2NTU5MywgNDMyMzYsIDMzODIsIDQyNDQ5LCAKKyAgICA2NDk4LCAxNjU4LCAxMTkzNiwgNzgyMzIsIDEwMDQwOSwgMTEyNjksIDEwMTUxLCA3Mzc1OSwgNDMxMDAsIDY5ODg4LCAKKyAgICA2NTUwOCwgMTI5NDExLCAwLCAxMjE0NTEsIDg5MzUsIDc4MjM0LCAxMjkzMzcsIDEyMDQ1MSwgMCwgNjE2LCA3NDc1MywgCisgICAgNjUxNzgsIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDIyMzYsIDEyNjU1MSwgMTI0OTkyLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIAogICAgIDczOTY1LCAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCA3NTA1MSwgOTY4MSwgNDQ3NSwgNjc0MjksIDQxMTQyLCAyMTAwLCAKLSAgICAxMjUwMjQsIDEyMDczMSwgNjAzNSwgNzM3OTYsIDc2NTEsIDY4NDYsIDY0NDQzLCA5ODM5NTcsIDk4MzI5NiwgOTE3OTg3LCAKKyAgICAxMjUwMjQsIDEyMDczMSwgNjAzNSwgNzM3OTYsIDc2NTEsIDY4NDYsIDY0NDQzLCA5ODM5NTcsIDE5NDk0MSwgOTE3OTg3LCAKICAgICAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgNjg0ODgsIDEwMzkyLCAxMDMyOCwgNDA5OTgsIDQzNDYyLCA3NDQ4OCwgNzExODIsIAotICAgIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgNTExNCwgNjQ4NywgMzM4NiwgMTI5MDk0LCAxMDM0NCwgMCwgNTExNSwgCi0gICAgNTM5NCwgNDMyNDYsIDc4MjQzLCA1MTEzLCA2NjUwNSwgNDEyMDAsIDEyODU4MiwgNDQyNSwgMTk0NjY5LCAwLCAwLCAKLSAgICA0MzA3NCwgNzM3OTksIDEyOTA3NiwgNzgxNDcsIDUxMTIsIDEyMTczLCA3ODU0NSwgMTI4NzcxLCA2NjgyNCwgNjUzMzgsIAotICAgIDk4MzY3NiwgMCwgMTE5NTgyLCA0NDc0LCAxMjg5MzYsIDQzMDkzLCA0Mzk2NCwgMTU4NywgMCwgMTI3MzcyLCA2NDQ3NSwgCi0gICAgMTE5MjE3LCAxMzY5LCA5ODM2NzIsIDk5NTksIDc5MjcsIDQzOTYzLCA0NTYwLCAxMjA3OTMsIDY3ODExLCA5MjI3NywgCi0gICAgOTgzNjIxLCA2NDk0OCwgNDQzMCwgNDM5NjEsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIDgxOTQsIDY1NDYyLCAKLSAgICAxMDYyNiwgMTA5NjUsIDEyMDkwNSwgODg5MywgOTgzMzAzLCAxMjU0MiwgMCwgNjUzNDEsIDY3NzAzLCA2NTgyOSwgNzkyNSwgCi0gICAgMTE5ODIyLCAxMDQ3NSwgMTEzODI1LCAxMjcwMTEsIDEzNTIsIDExMDY5LCA3NzA3LCAxMjc1NjAsIDEyNjQ4NiwgNjUyNzksIAotICAgIDEyNzEwMiwgNjgyMDcsIDc0OTU2LCA3MDk5LCA2MDQwLCA2NzY4MSwgMTAwNzEsIDc4NTU0LCA5MzM2LCA0Mzc1MCwgCi0gICAgMTIxMDc0LCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCA2NTE4OCwgNzgyMCwgNDMwMTgsIDEyNzA4MiwgCi0gICAgMTI4ODk4LCA3NzQ2LCAxNDkyLCA3ODU1MSwgMTA4ODQsIDc1MDc1LCA2Njg2NiwgNTEyNywgMTEyODUsIDQyNTAxLCA1NDk1LCAKLSAgICA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgNzQzMDQsIDM3MSwgNjQzNzMsIAotICAgIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDc1MDI4LCAxMjg2MDMsIDYzMjMsIDEyOTA2NSwgODIyNCwgMTI4NDE3LCA4OTM4LCAKLSAgICA2MDQzLCAxMjczOCwgMTIwNjcxLCA5ODMwNzYsIDUzMjEsIDY4NjQ1LCAxOTQ3OTgsIDEyMDI1MSwgMjU4OSwgNzQzMzIsIAotICAgIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgOTI5NDAsIDExOTA1LCA5ODM2MTUsIDAsIDEyODUxNiwgMTI4MTYzLCAKLSAgICA3NDUxMywgNjA0OSwgMCwgNDAyNywgODM0LCAxMTg5NjIsIDE4MDMsIDk4MzgyMiwgMTUwMywgNzgzMzYsIDEyNzE3MywgCi0gICAgNzEzMTIsIDU3MzEsIDEzODEsIDIzODcsIDEyNjYxMCwgNzA4MDgsIDgyODksIDY0NTI1LCA2NTgxNywgMjg4MSwgNDMxNDIsIAotICAgIDAsIDk2MDEsIDI4NzksIDk2NjgsIDk3NjYsIDAsIDU3MjksIDEyOTExMCwgNzEyMzAsIDYwMzYsIDY0ODgxLCA0MDI2LCAKLSAgICA5MzYxLCAxMjcwOTEsIDI4ODcsIDcwMzg5LCAzNTI2LCA2Mjk4LCAxMTk4NTEsIDc3ODk3LCAxMjAwOTUsIDc4NTE5LCAKLSAgICAxMTg5NjQsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDcxMTc0LCA0MzE1NSwgMCwgNzExOTcsIDMxNDYsIDEwOTU5LCAKLSAgICA5NDgzLCA4MzIxOSwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgOTE3ODQwLCAxMDYyMywgNDA4LCAxMTkwNTgsIAotICAgIDEyNzUwNywgMTMyOTgsIDEyNzI1MywgNzQyNiwgNDE2NDEsIDEyNzE3LCA5ODM3OTUsIDc2MDcsIDEwNjM5LCA0MzM5NiwgCi0gICAgMTI5MzAwLCAxMTkwODksIDQxNjQzLCA3NDEzNCwgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjI5MywgCi0gICAgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCA2ODI1NSwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDEyMDkzNiwgCi0gICAgMTIxMDY5LCAwLCAxMTg4NTksIDAsIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDY4MzM5LCAxMjg5NDMsIDQyMTM2LCAKLSAgICAxMjE0NDAsIDAsIDAsIDAsIDMyNDcsIDkyNDAyLCA2NTAxNywgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDAsIDEyMTExMiwgCi0gICAgMTA5ODMsIDAsIDEyODc4NywgMCwgNDE1NjcsIDExOTg1MiwgMCwgMCwgNzg0NDYsIDExOTg1MywgMTI3OTIyLCAwLCA4Mjg1LCAKLSAgICAxMjY1MTYsIDQ1MDksIDEyMTA0MywgNjY0NzEsIDEyMjE2LCAxMjg4MDYsIDQwOTg4LCA4MzIyMSwgNzQ4MDksIDQxNzI3LCAKLSAgICAwLCA0Mjg0OCwgMjM5NiwgMTI4MDgzLCAxOTQ4OTIsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCAwLCAKKyAgICA5ODAwLCA4OTc5LCAxMTkxNTYsIDEzMzA3LCA0MTAwMCwgMCwgNTExNCwgNjQ4NywgMzM4NiwgNzA3MzAsIDEwMzQ0LCAKKyAgICAxMjUwMzIsIDUxMTUsIDUzOTQsIDQzMjQ2LCA3ODI0MywgNTExMywgNjY1MDUsIDQxMjAwLCAxMjg1ODIsIDQ0MjUsIAorICAgIDE5NDY2OSwgMTAwNDA1LCAwLCA0MzA3NCwgNzM3OTksIDEyOTA3NiwgNzgxNDcsIDUxMTIsIDEyMTczLCAzNDQ2LCAKKyAgICAxMjg3NzEsIDY2ODI0LCA2NTMzOCwgMTI4OTY5LCAwLCAxMTk1ODIsIDQ0NzQsIDEyODkzNiwgNDMwOTMsIDYyODIsIDE1ODcsIAorICAgIDAsIDEwMDU1NCwgNjQ0NzUsIDExOTIxNywgMTM2OSwgOTgzNjcyLCA5OTU5LCA3OTI3LCA0Mzk2MywgNDU2MCwgNjY5MTAsIAorICAgIDY3ODExLCA5MjI3NywgMTIwNjE0LCA2NDk0OCwgNDQzMCwgNDM5NjEsIDQyNjAxLCA0NTE0LCA2NjQzNCwgOTM5NTUsIAorICAgIDgxOTQsIDY1NDYyLCAxMDYyNiwgMTA5NjUsIDEyMDkwNSwgODg5MywgOTgzMzAzLCAxMjU0MiwgMTk0ODU3LCA2NTM0MSwgCisgICAgNjc3MDMsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAxMTM4MjUsIDEyNzAxMSwgMTM1MiwgMTEwNjksIDc3MDcsIAorICAgIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgMTAwNDA3LCA2ODIwNywgNzQ5NTYsIDcwOTksIDYwNDAsIDY3NjgxLCAxMDA3MSwgCisgICAgNzg1NTQsIDkzMzYsIDQzNzUwLCAxMjEwNzQsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCAKKyAgICA0MzAxOCwgMTAwNDEwLCAxMjg4OTgsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgNzUwNzUsIDY2ODY2LCA1MTI3LCAKKyAgICAxMTI4NSwgNDI1MDEsIDU0OTUsIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCAKKyAgICA3NDMwNCwgMzcxLCA2NDM3MywgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgNzUwMjgsIDEyODYwMywgNjMyMywgMTI5MDY1LCAKKyAgICA4MjI0LCAxMjg0MTcsIDg5MzgsIDYwNDMsIDEyNzM4LCAxMjA2NzEsIDk4MzA3NiwgNTMyMSwgNjg2NDUsIDY1NTMsIAorICAgIDEyMDI1MSwgMjU4OSwgNzQzMzIsIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgOTI5NDAsIDExOTA1LCAKKyAgICA5ODM2MTUsIDAsIDEyODUxNiwgMTI3MDE3LCA3NDUxMywgNjA0OSwgMTI4MjM5LCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgCisgICAgMTI4MTIwLCAxNTAzLCA3Mjc2OSwgMTI3MTczLCA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgMTI2NjEwLCA3MDgwOCwgCisgICAgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgNTcyOSwgCisgICAgMTI5MTEwLCA3MTIzMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgNzAzODksIDM1MjYsIDYyOTgsIAorICAgIDExOTg1MSwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDExODk2NCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzExNzQsIAorICAgIDQzMTU1LCA5ODM4MTYsIDcxMTk3LCAzMTQ2LCAxMDk1OSwgOTQ4MywgODMyMTksIDc3ODkzLCAxMDk4MSwgMTY2LCAKKyAgICA5MTc4NDEsIDg2MzUsIDEyODcxNCwgMTA2MjMsIDQwOCwgMTAwNDgwLCAxMjc1MDcsIDEzMjk4LCAxMjY1MTgsIDc0MjYsIAorICAgIDQxNjQxLCAxMjcxNywgMTIwNjU4LCA3NjA3LCAxMDYzOSwgNDMzOTYsIDEyOTMwMCwgMTE5MDUzLCA0MTY0MywgNzQxMzQsIAorICAgIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCA5ODUyLCA2NjI5MywgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCAKKyAgICA2ODI1NSwgNzc5MDEsIDM0NzIsIDg2OTcsIDAsIDEyMDkzNiwgMTIxMDY5LCAxMjkxNjgsIDExODg1OSwgMTI1MjAzLCAKKyAgICA1ODA5LCAxOTUwLCAxMTkzNTYsIDkyNDMyLCA2ODMzOSwgMTI4OTQzLCA0MjEzNiwgMTIxNDQwLCAwLCAwLCAwLCAzMjQ3LCAKKyAgICA5MjQwMiwgNjUwMTcsIDEyODc5NCwgNjg0MjgsIDY2NjY4LCAxOTQ4ODQsIDEyMTExMiwgMTA5ODMsIDkxNzc2NywgCisgICAgMTI4NzAwLCAwLCA0MTU2NywgMTE5ODUyLCAwLCAwLCA3ODQ0NiwgMTE5ODUzLCAxMjc5MDcsIDAsIDgyODUsIDEyNjUxNiwgCisgICAgNDUwOSwgMTIxMDQzLCA2NjQ3MSwgMTIyMTYsIDEyODgwNiwgNDA5ODgsIDgzMjIxLCA3NDgwOSwgNDE3MjcsIDkxNzgyNSwgCisgICAgNDI4NDgsIDIzOTYsIDEyODA4MywgMTk0ODkyLCA3NDAxOCwgOTE3NTM4LCA2NDk0MCwgNzAyNywgMzg4NiwgOTgzMjU5LCAKICAgICA0MjQ1NywgOTI4ODgsIDgzMjk5LCA5OTYsIDY4MTIzLCA5NDA1OCwgNDI0OSwgOTI0MTAsIDY5NjUwLCAxMTcwNywgODIyMiwgCi0gICAgNzM4MjUsIDc5MzksIDcxMjEzLCA5MjQ2MCwgMTI3ODAxLCAxMjE0MDgsIDEyODM1OSwgODUzNCwgNjk4NTMsIDQwOTgzLCAwLCAKLSAgICAxMjE0MjEsIDAsIDcyMDEsIDEyNTYxLCAxMjA4NjYsIDQyMzcxLCAxMjU1OCwgMTU0MCwgOTE3NTQ5LCAxMDA1MiwgNDA5ODIsIAotICAgIDExOTg0MSwgMCwgMTQ4OCwgNzExNzcsIDAsIDE5NDgzMSwgOTE3NTU5LCAxMjg0MDEsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCi0gICAgMTIwODQwLCA5MTc5MDUsIDEyMDk1NCwgMTI3ODcyLCA3MTM2MywgMzU2MCwgNzc5NywgNjA3MCwgMTAwMDYsIDEyODkyMiwgCi0gICAgMjkyMiwgNjA4MiwgNzAxNDcsIDY1MDA5LCA5ODM5NDIsIDEyNTY3LCA2NjcxMiwgMCwgNDE0MTIsIDEyODEzMSwgMTE5NTkxLCAKLSAgICAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDAsIDIwMzIsIDc4MzU0LCA4MzQ2MiwgCi0gICAgMTE5MTMxLCAwLCAwLCA2NzgyNiwgNDMwODUsIDYwNTcsIDUwOCwgOTM5NjgsIDkyOTg5LCA2Nzk2OCwgMCwgOTIxOTgsIDAsIAotICAgIDEyODgzMSwgNjM4LCA2MDgzLCAxMTkwNzIsIDEyNDk1MCwgMCwgMjMwNSwgNzgzNDgsIDY4MDk2LCA5MTc3NzIsIDYwNTYsIAotICAgIDY2NTksIDY3OTY5LCA5ODMyOTAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAwLCA0MTYzOSwgNjM5MTIsIDExOTQxLCAKLSAgICA5ODM3ODMsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIDMyNDksIDE3NjgsIDkzOTgyLCAxMjMyOCwgNTAxLCAKLSAgICA5Mzk4NSwgMTA2MDEsIDAsIDU4MywgMCwgNDE5NzcsIDAsIDY2MDA0LCA2NjQxNiwgNjUwNSwgNzQwMTAsIDk4MzI1MCwgCi0gICAgMTMwNjQsIDU1MjY3LCAxMTkxMTMsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCAxMjk5MCwgMCwgOTIzNzYsIDEyNzQ1LCA5Njc4LCAKLSAgICAxMjExMDgsIDEyMDU4NywgOTg2OSwgODMxNTAsIDE3NzEsIDEyODk2NSwgODkzNiwgOTI5NjQsIDAsIDQyMDgsIDc4MzQxLCAKLSAgICA3ODU2NywgNzgzNDIsIDY3NzQyLCA5ODMyMDgsIDc0MTAxLCAxMjg2MDUsIDExNzYyLCAwLCA3MDA5NiwgNjgzNSwgNjgwMTAsIAotICAgIDY2NDc1LCAxMjAyNjAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDExOTgzMCwgNTA2OSwgNzM3MzYsIDUwMjgsIDk4OTcsIAotICAgIDkyNzc0LCA3MzczOSwgNTAyNiwgOTgzMjU1LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIAotICAgIDQxOTAxLCA3NDc5MCwgNzgxMzgsIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIAotICAgIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDc2NTgsIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAKLSAgICAxNzE2LCA5ODM2NzksIDEwNjAwLCA3ODU1OCwgNjIwLCA0MTAwMSwgNjAyOCwgNzA0NDUsIDQyODkyLCAwLCA3MTExNiwgCi0gICAgNTAyNCwgNzQ5NDUsIDQxMDAzLCA2ODEzNywgNTAyNSwgNjk4OTIsIDk4MzIwOSwgNzUwMzksIDExODg4NSwgMTI3OTU2LCAKKyAgICA3MzgyNSwgNzkzOSwgNzEyMTMsIDkyNDYwLCA3Mjc0NywgNjcxMzEsIDEyODM1OSwgODUzNCwgNjk4NTMsIDQwOTgzLCAwLCAKKyAgICAxMjE0MjEsIDAsIDcyMDEsIDEyNTYxLCAxMjA4NjYsIDQyMzcxLCAxMTg0NCwgMTU0MCwgMTk0ODI3LCAxMDA1MiwgNDA5ODIsIAorICAgIDExOTg0MSwgMCwgMTQ4OCwgNzExNzcsIDAsIDE5NDgzMSwgOTE3NTU5LCAxMjg0MDEsIDE5NDkyMCwgMTU2MywgMTI4MDM0LCAKKyAgICA5NjE5LCAxMjA4NDAsIDEyOTQxNiwgMTIwOTU0LCAxMjE0NjAsIDcxMzYzLCAzNTYwLCA3Nzk3LCA2MDcwLCAxMDAwNiwgCisgICAgMTI4OTIyLCAyOTIyLCA2MDgyLCA3MDE0NywgNjUwMDksIDk4Mzk0MiwgMTI1NjcsIDY2NzEyLCAwLCA0MTQxMiwgNzg2NTEsIAorICAgIDExOTU5MSwgMzYwNywgOTIwMCwgMTAwNDYsIDk2MTIsIDQyMTUzLCA4MjE4LCA5NDg1LCA2Njc2NCwgMjAzMiwgNzgzNTQsIAorICAgIDgzNDYyLCAxMTkxMzEsIDAsIDAsIDY3ODI2LCA0MzA4NSwgNjA1NywgNTA4LCA5Mzk2OCwgOTI5ODksIDY3OTY4LCAKKyAgICA5MTc5NDEsIDkyMTk4LCAwLCAxMjg4MzEsIDYzOCwgNjA4MywgMTE5MDcyLCAxMjQ5NTAsIDcwMTQ0LCAyMzA1LCA3ODM0OCwgCisgICAgNjgwOTYsIDkxNzc3MiwgNjA1NiwgNjY1OSwgNjc5NjksIDk4MzI5MCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIAorICAgIDEyODIyNywgNDE2MzksIDYzOTEyLCAxMTk0MSwgOTgzNzgzLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAKKyAgICAzMjQ5LCAxNzY4LCA5Mzk4MiwgMTIzMjgsIDUwMSwgOTM5ODUsIDEwNjAxLCA5ODMyOTQsIDU4MywgMTE5MzUyLCA0MTk3NywgCisgICAgMCwgNjYwMDQsIDY2NDE2LCA2NTA1LCA3NDAxMCwgOTE3ODMzLCAxMzA2NCwgNTUyNjcsIDExOTExMywgNjUwMCwgNTUyNiwgCisgICAgNjUwNDksIDEyODAyOCwgMTI5OTAsIDk4MzkwMSwgOTIzNzYsIDEyNzQ1LCA5Njc4LCAxMjExMDgsIDEyMDU4NywgOTg2OSwgCisgICAgODMxNTAsIDE3NzEsIDEyODk2NSwgODkzNiwgOTI5NjQsIDEyNTI3MywgNDIwOCwgNzgzNDEsIDc4NTY3LCA3ODM0MiwgCisgICAgNjc3NDIsIDk4MzIwOCwgNzQxMDEsIDEyODYwNSwgMTE3NjIsIDEyOTMxNywgNzAwOTYsIDY4MzUsIDY4MDEwLCA2NjQ3NSwgCisgICAgMTIwMjYwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAxMTk4MzAsIDUwNjksIDczNzM2LCA1MDI4LCA5ODk3LCA5Mjc3NCwgCisgICAgNzM3MzksIDUwMjYsIDk4MzI1NSwgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgCisgICAgNzQ3OTAsIDc4MTM4LCAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgCisgICAgNDEwNzAsIDc3OTAzLCA3NjU4LCAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgCisgICAgOTgzNjc5LCAxMDYwMCwgNzg1NTgsIDYyMCwgNDEwMDEsIDYwMjgsIDcwNDQ1LCA0Mjg5MiwgOTgzMzEzLCA3MTExNiwgCisgICAgNTAyNCwgNzQ5NDUsIDQxMDAzLCA2ODEzNywgNTAyNSwgNzI5NywgOTE3ODI0LCA3NTAzOSwgMTE4ODg1LCAxMjc5NTYsIAogICAgIDY1NTU3LCAwLCA3NDU0MSwgMTI4OTI0LCAxMTU5OSwgMTI4MjA5LCAxMTYwMiwgNjI0MywgMTE1NzQsIDExNTgxLCAxMTU5NywgCiAgICAgMTE1OTgsIDYyNTMsIDYxMDUsIDExNTg0LCA3MDI3MywgMTE1NjksIDY1Mjc1LCA4OTA2LCA0Mzk0NSwgNTc1NSwgMjYzNiwgCiAgICAgNzEyMDMsIDEwODE1LCAxMTYxOSwgMjMwMSwgNDE1NDAsIDc4MTUsIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgMTE2MDQsIAotICAgIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDkxNzc2MywgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDY2ODg2LCAKLSAgICA2NDEzMSwgNjYxNiwgMCwgMTE4ODc1LCAxMDk1MywgMzkxLCAwLCA2OTc4NSwgNDgyLCA0MjI5NiwgMTE1ODgsIDAsIAotICAgIDQzNjA2LCA3MTE4NSwgNjgzOTcsIDY2MzcwLCA3NDI4MiwgNDIzMzUsIDY5Nzg2LCA3MjQyMSwgODI5OTgsIDc1MzgsIAotICAgIDUzMTUsIDgzMzY3LCA0MjQ5MSwgOTI5MDEsIDQyMDYxLCAxMjgwMDIsIDQ1NzYsIDAsIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgCi0gICAgMzU2MywgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIDc4MjA5LCAxMjAyNDQsIDYzOTg5LCAKLSAgICAzOTU4LCAxMjEzMiwgMTg0OSwgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCAKLSAgICA0MTE2MCwgMTIxNDgxLCAzNjE4LCA3ODMzOCwgMTk0OTI0LCA0MzMwMCwgNTE1NiwgOTI2MjksIDcwMzUwLCA5MjksIDY4MjcsIAotICAgIDQyMDM1LCA0MjQzNywgMTU1NSwgMCwgODY5MSwgNjY0MzUsIDIyMTUsIDQxNjYyLCA5NDAxMCwgMTE5MjYyLCAwLCAKLSAgICAxMjg4MjQsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzczNCwgNDI1NzgsIDcxMDQ5LCA0MTY2MSwgNzgzNTEsIAotICAgIDQzMjY3LCA5MzU2LCAwLCAxOTQ4ODAsIDk4MzQwMSwgMTI4NiwgMTAxNjYsIDk4MzExNywgMCwgNjQ3MDcsIDEyODkyNSwgCi0gICAgNDI0NzYsIDc3MzAsIDExMTU2LCAxMjg1MjIsIDQyNDgzLCAxMjkwODMsIDc0OTQwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCAKLSAgICA0MzM1OSwgMCwgNjY0MSwgNTI1LCA0MTYyNywgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCAKLSAgICA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMTI4MzIxLCA4NTg3LCAKLSAgICAxMjEzMTgsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIDg2NzksIDQxOTI0LCAxNTc2LCA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIAotICAgIDgzMTUzLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAKLSAgICAyNzE4LCA0MTY4LCA0MzkwNCwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgNDM5MDIsIDc3OTQ4LCAzNjMsIAotICAgIDExMDE1LCA0MzkwMywgNzc5NDQsIDQzODU3LCA4MzA0OSwgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIDY0NjI1LCAKLSAgICA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIDY0NDM0LCA3NTAxMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgNjQzODIsIAotICAgIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIDYzMCwgMTIwOTYwLCA5ODM5MjMsIDEyMDc3NCwgNzAxNjUsIDEwNDMsIAotICAgIDQzNjUyLCA2NjIyMywgMTAwOTAsIDAsIDEyNDk0NSwgMzEzLCAxMjE0ODMsIDQxODgxLCAxOTQ2NTgsIDQyMzExLCA3NDQ1LCAKLSAgICA0MzkwNiwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIAotICAgIDk0MjIsIDQzODk0LCA2NjQ5NSwgNjk5OTAsIDk4Mzg4NSwgOTI5OTAsIDQxNzE4LCAxMDcwNywgMTYwMywgOTgzNzAzLCAKLSAgICAxMTkwMDMsIDAsIDYzMSwgNzc5NTIsIDY5NzAzLCAxMzE2MSwgNjUyNzIsIDcxMDY3LCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAKLSAgICAxMTYwMCwgNzc5NjEsIDI3OTcsIDQzOTI0LCA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAKLSAgICAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAxMjc1MjgsIDExMTk4LCA2NjgyMSwgNzc5NjcsIDkxNTcsIDczNzY1LCA2NjM2NCwgCi0gICAgNDI0MzMsIDc3OTY0LCA3NjAzLCAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIDgyNDQsIAotICAgIDM2MiwgOTI0MzksIDQzODkwLCA4MDM3LCA0Mzc3NywgMTE1MzUsIDEyNjUzOSwgNDM4OTMsIDUxODUsIDcxNjUsIDU1MjEsIAotICAgIDEwMzM0LCAyMDkzLCA3MTMyOSwgMTAzMDIsIDEyNTEzMSwgMTAxMDQsIDEwMjcsIDUxODEsIDEyODQzNSwgNTExNywgCi0gICAgMTA1MjMsIDE0NDYsIDQyMzIwLCA2ODQ1LCA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCAKLSAgICA0Mjg5OCwgMzQwNSwgMCwgMTk0NjQ0LCA1NTIzLCA0MzkxNSwgNDI2MjAsIDkyNDQ3LCA3NDk0MywgOTU0OSwgMCwgMTA1NDksIAotICAgIDQzOTIzLCA5NjYxLCA0MjkzMywgNzQ4ODQsIDc3OTEwLCA3ODA2OCwgNDM5MjEsIDAsIDcxMTg0LCA5ODMwNzAsIDQxOTkxLCAKLSAgICA5ODM4OTMsIDAsIDc2MzAsIDk4NDYsIDc2ODQsIDEwMzUwLCAxMjg0NTMsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIAotICAgIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDQzOTA5LCA3NDQzOCwgMTIzMzAsIDEyODI3MiwgMCwgCi0gICAgNDI0MTcsIDQyMzgzLCA2NjYzMCwgNDEzNDQsIDYyOTMsIDAsIDY2MjUyLCA0MzkwOCwgNzQ0NDMsIDEyNzg5NCwgMTAyMDksIAotICAgIDgzMTMsIDQxOTUsIDc0NDM1LCAxMzE2LCA2NjY5MCwgNzUwNzIsIDYzMzIsIDY0ODk0LCA5ODMxNTYsIDY1ODcxLCA2NzI1MCwgCi0gICAgMTczNiwgOTgzNjg0LCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4MjQxLCA2OTMsIDkxMzAsIAotICAgIDMxNCwgNjQxNDksIDQyNDIwLCAxMTk0OSwgMTI3MjAwLCAxMjAxNTIsIDExMDI2LCAxMjA1MTYsIDUzMzIsIDY5NDAsIAotICAgIDY0MTU0LCAxMjYzNSwgMTI0OTgwLCA0MjcwNiwgMTc1MSwgMjczLCA4MTY1LCAxMzE2NiwgODMzMDcsIDc4ODQwLCA3MTM2OCwgCi0gICAgMTI4MjQsIDQzOTExLCA0NTI4LCA1MzIwLCA2MzAxLCA0MzY2MiwgNjEzMywgOTMzOSwgOTQ2MywgNDIzNDYsIDEwOTIyLCAKLSAgICA2NDU2MCwgMzc1NywgMCwgMCwgNzQzMDIsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgNzQ5NzYsIDIzMjYsIDY1NzQwLCAyNTY1LCAKLSAgICA0MjQ1OSwgNzU5NiwgNzkyMSwgOTgzODY4LCA3Mzg2MiwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDkyNjIyLCAKLSAgICA0MDQ0LCA5MjY0NiwgNDM5NTMsIDEyMjMzLCA5ODM4NzEsIDEwMjMsIDQ3NCwgMTk0OTQwLCAxMTk4MTgsIDAsIDAsIAorICAgIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDEyNjQ2NiwgODI5LCAwLCA5MjQwNiwgMTk5NTAsIDY2ODg2LCAKKyAgICA2NDEzMSwgNjYxNiwgMTIwNzk2LCAxMTg4NzUsIDEwOTUzLCAzOTEsIDk4MzEwMywgNjk3ODUsIDQ4MiwgNDIyOTYsIAorICAgIDExNTg4LCAxMjg1OTEsIDQzNjA2LCA3MTE4NSwgNjgzOTcsIDY2MzcwLCA3NDI4MiwgNDIzMzUsIDY5Nzg2LCAxMjA1MCwgCisgICAgODI5OTgsIDc1MzgsIDUzMTUsIDgzMzY3LCA0MjQ5MSwgOTI5MDEsIDQyMDYxLCAxMjgwMDIsIDQ1NzYsIDAsIDY4NDE3LCAKKyAgICA0MzgwOSwgNDI3NywgMCwgMzU2MywgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIAorICAgIDc4MjA5LCAxMjAyNDQsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgMTI3MzM4LCA5OTIxLCA0MjQ1MSwgNDI1MywgCisgICAgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIDQxMTYwLCAxMjE0ODEsIDM2MTgsIDc4MzM4LCA5Mzk1NiwgNDMzMDAsIAorICAgIDUxNTYsIDkyNjI5LCA3MDM1MCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDY3ODQ3LCA4NjkxLCA2NjQzNSwgCisgICAgMjIxNSwgNDE2NjIsIDk0MDEwLCAxMTkyNjIsIDAsIDEyODgyNCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzM0LCAKKyAgICA0MjU3OCwgNzEwNDksIDQxNjYxLCA3ODM1MSwgNDMyNjcsIDkzNTYsIDAsIDE5NDg4MCwgOTgzNDAxLCAxMjg2LCAxMDE2NiwgCisgICAgOTgzMTE3LCAwLCA2NDcwNywgMTI4OTI1LCA0MjQ3NiwgNzczMCwgMTExNTYsIDEyODUyMiwgNDI0ODMsIDEyOTA4MywgCisgICAgNzQ5NDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCA3MjgyNywgNjY0MSwgNTI1LCA0MTYyNywgOTE3OTIzLCA4NzYzLCAKKyAgICAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCA2OTE1LCA0MjMxMCwgCisgICAgNDM3NywgODU1OSwgMTI4MzIxLCA4NTg3LCAxMjEzMTgsIDEzMTkzLCA2NDM1MCwgMTE2NjYsIDg2NzksIDQxOTI0LCAxNTc2LCAKKyAgICA3NzM1LCA5MjM5OCwgMCwgNzM4NDAsIDgzMTUzLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIAorICAgIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA0MzkwNCwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgCisgICAgNDM5MDIsIDc3OTQ4LCAzNjMsIDExMDE1LCA0MzkwMywgNzc5NDQsIDQzODU3LCA4MzA0OSwgNjY2OTIsIDEyMDgyNiwgMCwgCisgICAgNjY0OTIsIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMTEzNzk0LCAxMDAxMywgNjQ0MzQsIDc1MDEwLCAKKyAgICAxMjcwOTUsIDk0OTIsIDExNzgyLCA5MjEyLCAxMjgzMywgNzc4MzAsIDcwNjkyLCAxMjk3LCA0MTYzMCwgNjMwLCAxMjA5NjAsIAorICAgIDk4MzkyMywgMTIwNzc0LCA3MDE2NSwgMTA0MywgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMTI1MjQ5LCAxMjQ5NDUsIDMxMywgCisgICAgMTIxNDgzLCA0MTg4MSwgMTk0NTc1LCA0MjMxMSwgNzQ0NSwgNDM5MDYsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgCisgICAgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCA5NDIyLCA0Mzg5NCwgNjY0OTUsIDY5OTkwLCA5ODM4ODUsIAorICAgIDkyOTkwLCA0MTcxOCwgMTA3MDcsIDE2MDMsIDk4MzcwMywgMTE5MDAzLCAxMDEwNjEsIDYzMSwgNzc5NTIsIDY5NzAzLCAKKyAgICAxMzE2MSwgNjUyNzIsIDcxMDY3LCAxMDU0NiwgNzQyMTAsIDc4MTAxLCAxMTYwMCwgNzc5NjEsIDI3OTcsIDQzOTI0LCAKKyAgICA0MjQyNywgMzA2LCA3MTQsIDMwNTgsIDQyMzgxLCA3Nzk2MiwgMTI3MDgwLCAxMjM1MSwgNDIzOTUsIDAsIDExNjA3LCAKKyAgICAxMjc1MjgsIDExMTk4LCA2NjgyMSwgNzc5NjcsIDkxNTcsIDczNzY1LCA2NjM2NCwgNDI0MzMsIDc3OTY0LCA3NjAzLCAKKyAgICAxMjgwMywgMTgwLCA0MjE0MSwgMCwgMTIwNjEyLCA2NjQ5NCwgMTI2NzQsIDgyNDQsIDM2MiwgOTI0MzksIDQzODkwLCAKKyAgICA4MDM3LCA0Mzc3NywgMTE1MzUsIDEyNjUzOSwgNDM4OTMsIDUxODUsIDcxNjUsIDU1MjEsIDEwMzM0LCAyMDkzLCA3MTMyOSwgCisgICAgMTAzMDIsIDEyNTEzMSwgMTAxMDQsIDEwMjcsIDUxODEsIDEyODQzNSwgNTExNywgMTA1MjMsIDE0NDYsIDQyMzIwLCA2ODQ1LCAKKyAgICA5OTEsIDUxODksIDQyNDcyLCA0MTY0NywgMTIwMTA1LCAxNzIyLCA1NTgxLCA0Mjg5OCwgMzQwNSwgMCwgMTk0NjQ0LCAKKyAgICA1NTIzLCA0MzkxNSwgNDI2MjAsIDkyNDQ3LCA3NDk0MywgOTU0OSwgMCwgMTA1NDksIDQzOTIzLCA5NjYxLCA0MjkzMywgCisgICAgNzQ4ODQsIDc3OTEwLCA3ODA2OCwgNDM5MjEsIDAsIDcxMTg0LCA5ODMwNzAsIDQxOTkxLCAxMjkzNjksIDAsIDc2MzAsIAorICAgIDk4NDYsIDc2ODQsIDEwMzUwLCAxMjg0NTMsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIDc3OTgwLCA2NjQ4NSwgCisgICAgNzc5NzcsIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDQzOTA5LCA3NDQzOCwgMTIzMzAsIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAKKyAgICA2NjYzMCwgMzQwNywgNjI5MywgMCwgNjYyNTIsIDQzOTA4LCA3NDQ0MywgMTI3ODk0LCAxMDIwOSwgODMxMywgNDE5NSwgCisgICAgNzQ0MzUsIDEzMTYsIDY2NjkwLCA3NTA3MiwgNjMzMiwgNjQ4OTQsIDk4MzE1NiwgNjU4NzEsIDY3MjUwLCAxNzM2LCAKKyAgICAxMjEwMDYsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzgyNDEsIDY5MywgOTEzMCwgMzE0LCAKKyAgICA2NDE0OSwgNDI0MjAsIDExOTQ5LCAxMjcyMDAsIDEyMDE1MiwgMTEwMjYsIDEyMDUxNiwgNTMzMiwgNjk0MCwgNjQxNTQsIAorICAgIDEyNjM1LCAxMjQ5ODAsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCA4MzMwNywgNzg4NDAsIDcxMzY4LCAxMjgyNCwgCisgICAgNDM5MTEsIDQ1MjgsIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIDY0NTYwLCAKKyAgICAzNzU3LCAwLCA5NDA1OSwgNzQzMDIsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgNzQ5NzYsIDIzMjYsIDY1NzQwLCAyNTY1LCAKKyAgICA0MjQ1OSwgNzU5NiwgNzkyMSwgMTI2NTY3LCA3Mzg2MiwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDkyNjIyLCAKKyAgICA0MDQ0LCA5MjY0NiwgNDM5NTMsIDEyMjMzLCAxMTM4MTQsIDEwMjMsIDQ3NCwgMTI1MjcyLCAxMTk4MTgsIDk4Mzc0NCwgMCwgCiAgICAgNDI0ODcsIDY1NTU2LCAxMjExNjgsIDEyNzg2NiwgNDIyOTUsIDEyODIwMywgMTIxNDc0LCA3MTMyMiwgOTI1MTgsIDIyMjIsIAotICAgIDY2NDk5LCAwLCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgMCwgMTg1OCwgOTgzNDU1LCAwLCA1NTI1MSwgMTAxMTgsIAotICAgIDMxMzMsIDEyNzc3MSwgNzE4NTcsIDEyMTIwMSwgOTYxMCwgODA2OCwgODE5NywgOTE3NTQ1LCA2OTksIDAsIDQxNjY1LCAKLSAgICA1ODY4LCAxMjg3MTAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAwLCAxOTIzLCAKLSAgICA2NTU4MywgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDc4MTI5LCA2ODc1MSwgMCwgNjQ2NCwgNzAzNiwgMjk5NiwgCi0gICAgMTkzNywgOTgzNzUxLCA2ODQ4MSwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgNzc5NjUsIDExOTgzNywgMTEwMTcsIAotICAgIDEyMDYwMSwgMCwgMjkzLCA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgCi0gICAgNzEzNTAsIDY1NDEzLCA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIDEyODk2NywgMTcxMywgNzc5NjksIAotICAgIDEyMTI5MiwgNzM5NTcsIDExNDA3LCA0MjQ0MSwgNDE5NzEsIDYyOTcsIDEyMDA5OCwgNjQxMDUsIDEyMDU2NSwgNDI0ODEsIAotICAgIDExNzE2LCA2NjQ3MywgNzE3OSwgNDIyODksIDEyNTA5NSwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgNzE0ODEsIDYxNjUsIAotICAgIDY0MTAwLCA5MTc4MTksIDY2MzIsIDczODYxLCA0MjQwMiwgNzQzMjcsIDc4MDYsIDExMzc2MiwgODkxNCwgNjY5MDgsIAotICAgIDEyNDk1NCwgMzE4MywgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCA2Nzg0OSwgNTc0NiwgNjY0MDgsIAotICAgIDAsIDY0NDE2LCA0MjQyMiwgODM1MDYsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgMTIxMzY5LCA4MzUyNCwgCi0gICAgNDIzMjgsIDEwNzY3LCAxMjg4NjIsIDgxMTUsIDgzNDU0LCA3NDc1OCwgMCwgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCAKLSAgICA5ODMyMzAsIDY1ODQ4LCA5Mjg4NCwgODM1MTcsIDY5ODYzLCAxMjgzMjgsIDEyNjk4NywgNDQ4NiwgMTI4MDgyLCA5MTc3OTYsIAotICAgIDAsIDEwOTI1LCAwLCA4MzUxNSwgODM1MDcsIDEyNDk1MiwgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDc2NjgsIAotICAgIDEwMzA1LCA0MjQ2MSwgNzQ4ODIsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIAotICAgIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMTE5MjE0LCA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgCi0gICAgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMCwgNjU0MDIsIDExOTU4MSwgMTk0OTczLCAxMjg3NDcsIDY0OTMzLCAKLSAgICAxOTQ2MjcsIDQxOTYwLCA2Njk5LCA0MjkwMywgMTI4NzU1LCAxMjUwMTMsIDY4MjMsIDQyMzkxLCAxNTg4LCA0MzUwMiwgCi0gICAgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCA3MTMxNSwgMTI4MzM1LCAxMjc3NDQsIDYxMTUsIDIwNzgsIDQxNjU0LCAKLSAgICA0MjQ4MCwgOTE3OTQ5LCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgNzI0MjcsIDAsIDExMzgxNiwgNjQ0LCA2NTUwMCwgCi0gICAgNDE2NTcsIDEwNzc4LCAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA2NjI5NiwgCi0gICAgMCwgMCwgNDE1NTQsIDAsIDgyMjAsIDEyODQzMiwgNDE1NTcsIDAsIDEyODkzOCwgMTEwNzAsIDExOTIyMSwgNTE1NywgCi0gICAgNDAyMCwgNzM4NTgsIDQxNTU1LCA5NTE0LCA2NDgxOCwgNjUxMDMsIDY0NjQxLCA2NDMwMywgNzgxMzEsIDc1MjAsIDczODg4LCAKLSAgICA3NDM3NywgMTEwMjksIDY2NjUxLCA5ODMwNjgsIDEyODQ5MiwgMTE4OTMwLCA2NDUyNywgMTIxMzk1LCA3ODc3LCAxMjcyMywgCi0gICAgOTgzNzk4LCA2ODc3NiwgMTIwMDk2LCA3NDYwMiwgOTk1NSwgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAKLSAgICAxMjE5MCwgMTIzMTksIDc4NjMwLCAwLCA3ODYzMSwgOTUwMiwgNjU0MjcsIDEyNTA0OCwgNjU0MjQsIDEyNjA3LCAxMjA5NjYsIAotICAgIDk3MzQsIDY1NDI1LCAwLCAxMjE0MzEsIDEyNzM1NywgNzQ4OTAsIDc4ODM2LCAxMDExMiwgMTA4MjcsIDE5NDYzNSwgOTg2NiwgCi0gICAgNzQ1MjcsIDY2Njc1LCAxMTg4NjcsIDg2MjUsIDY0MzQ2LCAxMTI5MCwgMTA0NzcsIDY3NzM4LCA4NjM2LCA5ODM5MjcsIAotICAgIDgzMTUsIDY1NDQ0LCA5ODM3OTMsIDE5NTAxMSwgNzQ1OTUsIDYxNTIsIDc4ODIwLCA3Mzk0NywgNjYyOSwgMTI1MDU2LCAKLSAgICAxMjAxNzEsIDAsIDc0NTg5LCA0Mzk5MywgMTI4MzQ2LCA2OTc5MCwgNjQ0MzUsIDY0OTU1LCA0MzY5MCwgMTEwNDYsIAotICAgIDExNDkwLCA0MjczMCwgNDQ4NSwgNzExMjYsIDEyODE5NCwgNjQ5MjYsIDAsIDk4MzEzMywgNDM4MzAsIDU4NjksIDEyNDM3LCAKLSAgICA0MjcyOCwgMCwgNzA0MCwgMzU4OCwgMCwgMTI4MjUsIDEyMTE1OCwgMCwgMTI3MjUsIDc0MDkyLCAxMjcxMDYsIDc4NjM0LCAKKyAgICA2NjQ5OSwgMTI5MzM2LCA1NDE3LCAxMjI3NSwgMTA4OTUsIDAsIDI3NCwgOTgzMjI2LCAxODU4LCA5ODM0NTUsIDAsIAorICAgIDU1MjUxLCAxMDExOCwgMzEzMywgMTI2NDk4LCA3MTg1NywgMTIxMjAxLCA5NjEwLCA4MDY4LCA4MTk3LCA5MTc1NDUsIDY5OSwgCisgICAgMCwgNDE2NjUsIDU4NjgsIDEyODcxMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIAorICAgIDAsIDE5MjMsIDY1NTgzLCA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgNzgxMjksIDY4NzUxLCA5MTc4MzYsIDY0NjQsIAorICAgIDcwMzYsIDI5OTYsIDE5MzcsIDEyNzA1MCwgNjg0ODEsIDQxODM1LCA0MDQ3LCA0MTg0MiwgMCwgNjQxMDcsIDc3OTY1LCAKKyAgICAxMTk4MzcsIDExMDE3LCAxMjA2MDEsIDk4MzE2OSwgMjkzLCA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIAorICAgIDQzNDIyLCAxMDU3OSwgODU2MCwgNzEzNTAsIDY1NDEzLCA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIAorICAgIDEyODk2NywgMTcxMywgNzc5NjksIDk0MDE3LCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCAKKyAgICA2NDEwNSwgMTIwNTY1LCA0MjQ4MSwgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMTI1MDk1LCA2NDEwMywgOTY5LCAwLCAKKyAgICA5MzUyLCA3MTQ4MSwgNjE2NSwgNjQxMDAsIDkxNzgxOSwgNjYzMiwgNzI4MjgsIDQyNDAyLCA3NDMyNywgNzgwNiwgCisgICAgMTEzNzYyLCA4OTE0LCA2NjkwOCwgMTI0OTU0LCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIAorICAgIDY3ODQ5LCA1NzQ2LCA2NjQwOCwgMTI3NDAyLCA2NDQxNiwgNDI0MjIsIDgzNTA2LCA5ODMwNDYsIDcwODIsIDczNzc1LCAKKyAgICAzMzgsIDUwNTksIDEyMTM2OSwgODM1MjQsIDQyMzI4LCAxMDc2NywgMTI4ODYyLCA4MTE1LCA4MzQ1NCwgNzQ3NTgsIDAsIAorICAgIDgyMjcsIDIwNzMsIDEyMTgsIDkxNzc5MCwgOTgzMjMwLCA2NTg0OCwgOTI4ODQsIDgzNTE3LCA2OTg2MywgMTI4MzI4LCAKKyAgICAxMjY5ODcsIDQ0ODYsIDExOTk3MywgOTE3Nzk2LCAwLCAxMDkyNSwgMCwgODM1MTUsIDgzNTA3LCAxMjQ5NTIsIDQyMzA5LCAKKyAgICAxMDI1NywgNjUxOTEsIDEwMjczLCA3NjY4LCAxMDMwNSwgNDI0NjEsIDc0ODgyLCA0MjM0OSwgODgzMiwgNzgwNTEsIAorICAgIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDExOTIxNCwgCisgICAgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCA3MTMxOSwgNjk2NTgsIDEyODE3MCwgCisgICAgNjU0MDIsIDExOTU4MSwgMTk0OTczLCAxMjg3NDcsIDY0OTMzLCAxOTQ2MjcsIDQxOTYwLCA2Njk5LCA0MjkwMywgMTI4NzU1LCAKKyAgICAxMjUwMTMsIDY4MjMsIDQyMzkxLCAxNTg4LCA0MzUwMiwgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCA3MTMxNSwgCisgICAgMTIxMTQ1LCAxMjc3NDQsIDYxMTUsIDIwNzgsIDQxNjU0LCA0MjQ4MCwgMTI5MDMxLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCAKKyAgICA0Mzk3NSwgNzI0MjcsIDAsIDExMzgxNiwgNjQ0LCA2NTUwMCwgNDE2NTcsIDEwNzc4LCAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIAorICAgIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA2NjI5NiwgMCwgMCwgNDE1NTQsIDAsIDgyMjAsIDEyODQzMiwgNDE1NTcsIAorICAgIDk4Mzg4MiwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCAKKyAgICA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDEyNzM0NiwgCisgICAgMTI4NDkyLCAxMTg5MzAsIDY0NTI3LCAxMjEzOTUsIDc4NzcsIDEyNzIzLCA5ODM3OTgsIDY4Nzc2LCAxMjAwOTYsIDczOTU0LCAKKyAgICA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDcxMjcwLCAKKyAgICA3ODYzMSwgOTUwMiwgNjU0MjcsIDEyNTA0OCwgNjU0MjQsIDEyNjA3LCAxMjA5NjYsIDk3MzQsIDY1NDI1LCA5MjIwNywgCisgICAgNzg4MzQsIDEyNzM1NywgNzQ4OTAsIDcyODIyLCAzNDQ4LCAxMDgyNywgMTk0NjM1LCA5ODY2LCA3NDUyNywgNjY2NzUsIAorICAgIDExODg2NywgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgNjc3MzgsIDg2MzYsIDk4MzkyNywgODMxNSwgNjU0NDQsIAorICAgIDk4Mzc5MywgMTk1MDExLCA3NDU5NSwgNjE1MiwgNzg4MjAsIDczOTQ3LCA2NjI5LCAxMjUwNTYsIDEyMDE3MSwgMCwgCisgICAgNzQ1ODksIDQzOTkzLCAxMjgzNDYsIDY5NzkwLCA2NDQzNSwgNjQ5NTUsIDQzNjkwLCAxMTA0NiwgMTE0OTAsIDQyNzMwLCAKKyAgICA0NDg1LCA3MTEyNiwgMTI2NTg4LCA2NDkyNiwgMTIwMTY4LCA5ODMxMzMsIDQzODMwLCA1ODY5LCAxMjQzNywgNDI3MjgsIDAsIAorICAgIDcwNDAsIDM1ODgsIDYzNzk3LCAxMjgyNSwgMTIxMTU4LCA3Mjg2NCwgMTI3MjUsIDc0MDkyLCAxMjcxMDYsIDc4NjM0LCAKICAgICAyMjMsIDc4NjM1LCA2OTY3NSwgMTIwMTE5LCA0MjQ0NCwgMTI4NDQ5LCA2NDQ5OSwgNjUyNDUsIDEyOTEwNCwgMTE3MSwgCiAgICAgMTI4ODAyLCA2OTcxNywgMTIwMTEzLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIDc4NjE5LCA3NDk1NCwgCiAgICAgMjMzOCwgMTIwMDMyLCAxMTg4NTMsIDAsIDQyNjc2LCAwLCA2NDgwMCwgMTMwOTIsIDExMTg1LCA2ODEyNiwgMTIxMywgCiAgICAgMTI4NDE5LCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgODMwMDUsIDY0Mzg3LCA0MTE1LCA3MTMzMSwgNTAwNSwgCiAgICAgNjQwNzAsIDY0MDczLCAxMDY3OSwgODMwMDAsIDc3OTU0LCA5NDAyLCA2NDI3NiwgNDI2LCA4MzM1OCwgODMwMTAsIDgyNTEsIAotICAgIDEwMTM2LCA2NTQzNiwgMCwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3MDc5NSwgMTA3MDEsIDE3NjQsIDMxMDEsIAotICAgIDEyNzgxNSwgMTI4NTgsIDEyMDE1OSwgMTIwMTAxLCAxMTM3MywgNjM3OCwgNzEwOTMsIDEyMDEwMywgODY2MywgOTMxMiwgCi0gICAgNDE2NDQsIDQ1MzksIDIxMjksIDcwNzg1LCA5MjIyLCAxMjE0NzksIDExODkwNywgNDI1OSwgOTA5MiwgNzQ1NjcsIDQxOTYxLCAKLSAgICAxMjg1MTUsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCAwLCAwLCAxMjkzLCA3OTQ3LCAyMTMyLCA5ODM3NjcsIAotICAgIDcxODU4LCA3MjQ0MCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgNzExMTcsIDAsIDY1ODg4LCA4ODE2LCAxMDk3OCwgCi0gICAgMTA4NDAsIDAsIDEwNjY4LCAxMTM3MjMsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCA5ODMxMTQsIDg4MjIsIDAsIDExNTcsIAotICAgIDY0OTAzLCA4NjM4LCAxMjcyNjUsIDkxNzg4NiwgMTI3OTA1LCAwLCA2OTg0OCwgODIzNSwgMTIwMzE2LCA0NDA1LCAxMDA4NiwgCi0gICAgMTIwMjQ3LCAxMTEyOCwgNjkyMTYsIDEyMTA2NSwgNjU0MzAsIDcxMzIxLCA2MDc5LCA2ODE3LCAxMDc2NCwgMTIwMzE0LCAKLSAgICA2NDI5MSwgMTIwMzE1LCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAxOTQ1NzIsIDE5OTEsIDc4ODIsIAotICAgIDQyMjU0LCAxMjg5NTQsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCAKLSAgICA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDc0MDMzLCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgCi0gICAgNjYzNzMsIDk4MzI0OSwgMTI4NzQ2LCA2NDkwOCwgOTI2OTEsIDYzMTEsIDkzMDE5LCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgCi0gICAgNDMxMDgsIDEyMDMyNiwgNzEwODMsIDQxNzA1LCA5MjE4OCwgNjU5OCwgMTIxMjk4LCA2NTk5LCA2NjgyMiwgOTMwMzEsIAotICAgIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAxMjEwNTUsIDY1OTcsIDk0MTIsIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgCi0gICAgNjk5MDQsIDEyODQ5NSwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCA5MzA1OSwgODMxMTQsIDIzMzYsIAotICAgIDk4MzkwMywgMCwgNjcxNjksIDEyMDQ0MiwgMTI3MDkyLCAxOTIxLCAxMDk0NywgMTk5MjcsIDcwMzkwLCA2NTQwNiwgCi0gICAgOTgzNDY0LCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgCi0gICAgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMTI0OTU3LCA1Nzc0LCA4MzI1LCA2OTg2NCwgNjU0MDMsIDk4MzA4OSwgCi0gICAgMTg1NCwgMTA3OTQsIDkzMDU0LCA2NzY2MCwgNjk4NDYsIDE5NDc2NSwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCAKLSAgICA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIAotICAgIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgCi0gICAgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTIxNDAzLCAxMjEyOTQsIDg0MjEsIDEyNzQ3MiwgCi0gICAgNjk2ODIsIDQzNzA1LCA1MDIsIDc1MDI5LCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIDEzMDMsIDMxNiwgNzM2NCwgCi0gICAgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgNzAzNzIsIDEyNzg3NywgCi0gICAgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCA5ODM4NDAsIDEyNDk2MCwgMTIwODM5LCAKLSAgICA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc1MDM0LCA2Mzc1MSwgMTIxMzcsIDU1NDgsIDc3OTg1LCAwLCAKLSAgICA2NTcyNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAwLCAxMTMwMSwgMTEyMTQsIDY1OTUyLCA3ODAxMCwgCi0gICAgOTg3NCwgNzgwMDcsIDk4MzExNSwgMTMxOSwgMzA1MCwgNjU0MTAsIDY3Mzk5LCA5MjYwNiwgNzgwMTYsIDc4MDE3LCAKLSAgICA0MjgzMCwgNDM5OTYsIDY2NzE2LCA4MzA1MCwgNDY5MSwgOTIyNDIsIDkzNDUsIDYyMSwgODM1MTIsIDEyODIyMiwgMCwgCi0gICAgNjU0MTEsIDAsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIDExOTExOCwgMTA4ODcsIAotICAgIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgNzEwNDIsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCA4NTA4LCAxMjc3OTQsIAotICAgIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgOTgzMzc0LCA0MTcwNywgODQ5MywgNTQ1LCA5NTc1LCA0MTM3OSwgCi0gICAgMTAwNTAsIDEyNzE4LCA2OTg1NCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDEyODk3OCwgNTUyODIsIAotICAgIDkxMTksIDI3ODcsIDc5MjAsIDcwMDkxLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDkxNzc5MiwgMCwgNzgwMjEsIAotICAgIDc4MDIyLCA0MTAsIDc4MDIwLCAxODAyLCA3ODAxOCwgNzQxMDcsIDc0ODk1LCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIAotICAgIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIAotICAgIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgCi0gICAgMjEwNCwgNjQ4NTgsIDM2MSwgMTIwMzU3LCA4NDUsIDkyMTc0LCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDEyODQ3MywgMjkyNiwgCi0gICAgNjg0OTUsIDQ1NjksIDc0MTMwLCAxMjg2NTksIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMTg4OTEsIAotICAgIDY1NjI5LCAwLCAxOTQ4NTgsIDc0ODU0LCAwLCA3MDQ2NiwgNjczOTIsIDY2Mzg1LCA3MTQzOSwgNjI5MSwgMCwgNjg0ODcsIAotICAgIDQxNjY5LCA3MDk0LCAxMjEwNTEsIDAsIDEyMDk5OSwgNzQwNTQsIDEyNzc1NCwgMTI4OTE3LCAwLCA4MzksIDEyMTMxNSwgCi0gICAgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDY3NzU2LCA0ODU5LCA2NDQ2NywgMCwgODM1MjUsIDExODk5OCwgNzIwNiwgCi0gICAgMTE5NjM2LCA2NjQ3LCA0Mzk4NiwgODM1MTgsIDY5NzY2LCAxOTQ2NjQsIDY0NzY0LCA0MjEwLCAxMjgzMDAsIDEyNzkzNiwgCi0gICAgODA0LCA4MzUyMCwgMCwgMTIyOTgsIDcwMzQ0LCA2NjY1MywgMTI2OTgzLCA2NDkyNCwgMTAwOTEsIDY3MjAwLCA5NDY4LCAKKyAgICAxMDEzNiwgNjU0MzYsIDEwMDg2MiwgMjEyMCwgNDMzMDIsIDEyMjQsIDAsIDY1NTc2LCA3MDc5NSwgMTA3MDEsIDE3NjQsIAorICAgIDMxMDEsIDEyNTE5MiwgMTI4NTgsIDc0NzY3LCAxMjAxMDEsIDExMzczLCA2Mzc4LCA3MTA5MywgMTIwMTAzLCA4NjYzLCAKKyAgICA5MzEyLCA0MTY0NCwgNDUzOSwgMjEyOSwgNzA3ODUsIDkyMjIsIDEyMTQ3OSwgMTE4OTA3LCA0MjU5LCA5MDkyLCA3NDU2NywgCisgICAgNDE5NjEsIDEyMTM2MSwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDcyODY3LCAxMjA1ODIsIDEyOTMsIDc5NDcsIAorICAgIDIxMzIsIDk4Mzc2NywgNzE4NTgsIDcyNDQwLCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCA3MTExNywgMCwgNjU4ODgsIAorICAgIDg4MTYsIDEwOTc4LCAxMDg0MCwgMCwgMTA2NjgsIDcyODI2LCA0MzA4NywgMTI1OTUsIDEyMDMwNCwgOTgzMTE0LCA4ODIyLCAKKyAgICAwLCAxMTU3LCA2NDkwMywgODYzOCwgMTI3MjY1LCAxMjkxMDYsIDEyMDY2OSwgMTAwMzk5LCA2OTg0OCwgODIzNSwgCisgICAgMTIwMzE2LCA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAxMTEyOCwgNjkyMTYsIDEyMTA2NSwgNjU0MzAsIDcxMzIxLCA2MDc5LCAKKyAgICA2ODE3LCAxMDc2NCwgMTIwMzE0LCA2NDI5MSwgMTIwMzE1LCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAKKyAgICAxNTU4LCAxOTQ1NzIsIDE5OTEsIDc4ODIsIDQyMjU0LCAxMjg5NTQsIDQxNzAwLCA1MzAsIDAsIDEwNDI4LCAxMTkzMzUsIAorICAgIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIDUwMDQsIDc0MDMzLCA3ODk2LCAKKyAgICA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgNjYzNzMsIDEyOTA2NiwgMTI4NzQ2LCA2NDkwOCwgOTI2OTEsIDYzMTEsIAorICAgIDkzMDE5LCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgNDMxMDgsIDEyMDMyNiwgNzEwODMsIDQxNzA1LCA5MjE4OCwgNjU5OCwgCisgICAgMTIxMjk4LCA2NTk5LCA2NjgyMiwgOTMwMzEsIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAxMjEwNTUsIDY1OTcsIDk0MTIsIAorICAgIDgzNDAsIDExODI0LCA2NDc0NSwgMjI4MSwgNjk5MDQsIDEyODQ5NSwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAKKyAgICA5MzA1OSwgODMxMTQsIDIzMzYsIDk4MzkwMywgMCwgNjcxNjksIDEyMDQ0MiwgMTI3MDkyLCAxOTIxLCAxMDk0NywgMTk5MjcsIAorICAgIDcwMzkwLCA2NTQwNiwgOTgzNDY0LCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgMTA5NTYsIAorICAgIDQyMjg1LCA0MTY3NCwgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMTI0OTU3LCA1Nzc0LCA4MzI1LCA2OTg2NCwgCisgICAgNjU0MDMsIDk4MzA4OSwgMTg1NCwgMTA3OTQsIDkzMDU0LCA2NzY2MCwgNjk4NDYsIDE5NDc2NSwgNzgzNTksIDUyODAsIDAsIAorICAgIDQzNDQsIDEyOTA1LCA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgCisgICAgMTI5MzQsIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDk4MzQzNCwgNjA3MSwgNjU0MzQsIDExOTAwOCwgNDgwNCwgNDA1MywgCisgICAgMTIwMjM3LCAxMjc0NjksIDE5NDY1MywgNDE2OTYsIDQ2NywgNjk4MjMsIDEyNzQ2MywgNjk3OTcsIDEyMDA0MywgMTIxMjk0LCAKKyAgICA4NDIxLCAxMjc0NzIsIDY5NjgyLCA0MzcwNSwgNTAyLCA3NTAyOSwgNjU0MzEsIDExOTA1NiwgNjk5NTQsIDEyMDQzLCAKKyAgICAxMzAzLCAzMTYsIDczNjQsIDIwMjksIDIxMzYsIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIAorICAgIDcwMzcyLCAxMjc4NzcsIDQyNDg4LCA3MDMzOSwgOTU4MywgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgMTI4MTk0LCAKKyAgICAxMjQ5NjAsIDEyMDgzOSwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCA3NTAzNCwgNjM3NTEsIDEyMTM3LCAKKyAgICA1NTQ4LCA3Nzk4NSwgOTgzNTU1LCAxMDAwNywgNjgzODgsIDY1NzI2LCA2MDc3LCAxMjgzNTIsIDY1NDUyLCAxMDAzOTEsIAorICAgIDExMzAxLCAxMTIxNCwgNjU5NTIsIDc4MDEwLCA5ODc0LCA3ODAwNywgMTk0NzMyLCAxMzE5LCAzMDUwLCA2NTQxMCwgCisgICAgNjczOTksIDkyNjA2LCA3ODAxNiwgNzgwMTcsIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDgzMDUwLCA0NjkxLCA5MjI0MiwgCisgICAgOTM0NSwgNjIxLCA4MzUxMiwgMTI4MjIyLCAxMjI4ODksIDY1NDExLCA5MTc1NDEsIDQxMTgyLCA3Mzg4MSwgNjU0MDgsIAorICAgIDczODk5LCA3ODAyNCwgOTQ3NCwgMTA1NDUsIDExOTExOCwgMTA4ODcsIDM3ODYsIDY1NDA5LCA4ODk0LCA0MzE3OSwgCisgICAgNzEwNDIsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCA4NTA4LCAxMjc3OTQsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgCisgICAgMTE5ODY3LCAzNzIyLCA5ODMzNzQsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIDQxMzc5LCAxMDA1MCwgMTI3MTgsIDY5ODU0LCAKKyAgICA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMTI4OTc4LCA1NTI4MiwgOTExOSwgMjc4NywgNzkyMCwgNzAwOTEsIAorICAgIDQwMjEsIDIwMTIsIDc5ODUsIDc4MDkzLCAxMTk2NjMsIDkxNzc5MiwgOTgzOTUxLCA3ODAyMSwgNzgwMjIsIDQxMCwgCisgICAgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgNzQ4OTUsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgNjQzOTYsIDEwMTI2LCAKKyAgICAxMjExNiwgNDE2NzMsIDY4NTI0LCAxMTQyMiwgNzE4NDYsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgNDEzNDUsIAorICAgIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIDY0ODU4LCAKKyAgICAzNjEsIDEyMDM1NywgODQ1LCA5MjE3NCwgNDE1NjAsIDExOTcwLCA0NTYyLCAxMjg0NzMsIDI5MjYsIDY4NDk1LCA0NTY5LCAKKyAgICA3NDEzMCwgMTI4NjU5LCA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTAwOTA5LCA2NTYyOSwgMCwgCisgICAgMTk0ODU4LCA3NDg1NCwgNjY3NTAsIDcwNDY2LCA2NzM5MiwgNjYzODUsIDcxNDM5LCA2MjkxLCAwLCA2ODQ4NywgNDE2NjksIAorICAgIDcwOTQsIDEyMTA1MSwgMTIxNDA4LCAxMTkwNDEsIDc0MDU0LCAxMjc3NTQsIDEyODkxNywgMCwgODM5LCAxMjEzMTUsIAorICAgIDc2OTUsIDg3NjksIDY1MjQ2LCA0ODI5LCA2Nzc1NiwgNDg1OSwgNjQ0NjcsIDk4MzQ2MSwgODM1MjUsIDExODk5OCwgNzIwNiwgCisgICAgMTE5NjM2LCA2NjQ3LCA0Mzk4NiwgNzI3MzgsIDY5NzY2LCAxOTQ2NjQsIDY0NzY0LCA0MjEwLCAxMjgzMDAsIDEyNzkzNiwgCisgICAgODA0LCA2Njc0NiwgMCwgMTIyOTgsIDcwMzQ0LCA2NjY1MywgMTI2OTgzLCA2NDkyNCwgMTAwOTEsIDY3MjAwLCA5NDY4LCAKICAgICA2NzIwNiwgNjcyMDUsIDY3MjA0LCA2NzIwMywgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDcxODUxLCAxMjc5LCAKLSAgICAxNDI1LCA2MjI0LCAxMTkyMjksIDExMDQ5LCAxMjcxMjMsIDcxNDgwLCA0MjY0OSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIAotICAgIDY3MjA5LCAxMTk0MCwgNjcyMDcsIDY2NCwgMTIwNDM3LCA1MDM0LCA5MjQ5NSwgNzAyMDAsIDEyNzUyNSwgNDI3MDIsIAotICAgIDcwMTk0LCA5MzA2MSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgNjcyMTgsIDkxMTUsIDc0MzAsIDc3ODM3LCA3MDE5MSwgCi0gICAgMTIwODE5LCA2ODM4NywgMTIwMTY4LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIDQxMTYyLCAKLSAgICA3NzgzNiwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgNjc3NDEsIAotICAgIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgNzg4LCA3NDAyNywgMTk0NjY3LCA3MTg4MSwgMCwgMTY2MywgMTA0MTksIDQyOTAxLCAKLSAgICA0MjYzNiwgNjcyMTEsIDY3MjEwLCAxMjkxNDcsIDEyMDY1NiwgNjcyMTUsIDY3MjE0LCA2NzIxMywgNjcyMTIsIDAsIAotICAgIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAxOTQ3MzIsIDAsIDEwODU1LCAKLSAgICA1NDQ1LCA5MzU1LCA2NzIyMSwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgNjU2ODYsIDk4Mzg3NCwgMTE5MjM4LCA4MDEwLCAKLSAgICA3MTkxLCA0OTYyLCA2OTc3MiwgODg1NSwgNzQ2MTIsIDcwODIwLCA2NDQ2OSwgOTI1OTIsIDEwNTU1LCA2NzIyNywgNDMzMzMsIAotICAgIDY3MjI1LCAxMjg0ODMsIDEyMDQyNywgMTA0NTEsIDY3MjI5LCA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAKLSAgICAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCA3Nzg0MiwgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCA4MzM0MywgCi0gICAgOTgzNTgxLCAxMTAxMCwgMTExNjQsIDc0MDU5LCA3NDA2MiwgNjIxNywgNTg5NiwgNDM4NDYsIDc2ODIsIDc0MDQ5LCAxNDYyLCAKLSAgICAxMDIzNSwgMCwgMCwgOTgzMzI1LCA0MzQ0MSwgMTI3OTI0LCAxMjc3NzcsIDQyNTk1LCAxMjY2NDEsIDc0NDAyLCAxMTg4NjAsIAotICAgIDc4NjYxLCAxMjA0MTksIDkyNDk3LCA2NjI4NywgMTIwNDIwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAKLSAgICAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgODMyMTAsIDEyMDY2MiwgNjk5MjAsIDE5NDcwMiwgNjIxNiwgNjcyMzAsIAotICAgIDEwNzU1LCA5NDU1LCAxMTE1NSwgODEyNCwgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjExMjUsIDAsIDY5NjgwLCAyODI4LCAwLCAKLSAgICA1MzEsIDQyNjM4LCAxOTQ4MDQsIDkxNzg1NiwgMTIwOTYxLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgCi0gICAgMTIwMzY1LCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgNzg1NjIsIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDEyMDg1MCwgNDI1OTksIAotICAgIDQyNTk3LCA0MjcwOSwgNjg4MjksIDEyNTAxMiwgMCwgODUzNywgMTI3MzA2LCAwLCA5MzU0LCAxMjEyNDQsIDEyMTM0OCwgCi0gICAgNDExOTksIDEwMTIxLCAyMDI4LCA3NDk1MCwgMTIwMjUzLCA2OTcxNSwgMTI4NTI1LCAzMDYyLCAwLCA3NDQ0NywgMTI2MDgsIAotICAgIDk4MzY1NywgNjY0NDAsIDc1NDUsIDk3MDAsIDExOTQ4LCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCA2ODMwNiwgCi0gICAgNzQwNzEsIDAsIDk4MzQ1OSwgMTI3MTMsIDEyNzUxOSwgNzA0MDIsIDAsIDc4NzcyLCAxMTM3NzAsIDE3MzQsIDAsIDc4MTQxLCAKLSAgICAxMjcwNDAsIDY0NTk0LCAyNDU2LCAyMzEsIDY4MjI3LCA3NDE2NywgNTQyLCA5MTc5ODEsIDExODc4NiwgOTgzODU5LCAKLSAgICAxOTQ3OTcsIDEyMzAsIDEyNTAxOCwgMTIxMzQzLCAzNTk3LCA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCAKLSAgICA2NzczNywgODM1MiwgNzg0MzYsIDU2ODcsIDEyNzAxOCwgNjQ1MTUsIDEyMTM3OCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIAotICAgIDc4NDM0LCA5NzA0LCAwLCAxOTQ1NzMsIDcwMDgwLCA3MTMzOCwgMCwgODY2MCwgMTI2NDc4LCAwLCAxMjg1NjksIDc4NzczLCAKLSAgICA3NDQ4MiwgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIDYwODAsIDE5NDg1MSwgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCAKLSAgICA5ODMxMDEsIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDAsIDQ0ODAsIDExMjY2LCAxMjExMTQsIDEyMjYsIDY5MzAsIAotICAgIDY3OTc5LCAxOTUwMTksIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCA2ODMwMiwgNzQ3ODUsIDY5ODc1LCAwLCAxMjE0NzgsIAorICAgIDE0MjUsIDYyMjQsIDExOTIyOSwgMTEwNDksIDEyNzEyMywgNzE0ODAsIDQyNjQ5LCA4NDgyLCA5MjQ0MCwgOTgzNzEwLCAKKyAgICA1MDMyLCA2NzIwOSwgMTE5NDAsIDY3MjA3LCA2NjQsIDEyMDQzNywgNTAzNCwgOTI0OTUsIDcwMjAwLCAxMjI5MDEsIAorICAgIDQyNzAyLCA3MDE5NCwgOTMwNjEsIDEzMjk0LCA2Nzg3MywgNjQ4NjksIDYwMzIsIDY3MjE4LCA5MTE1LCA3NDMwLCA3NzgzNywgCisgICAgNzAxOTEsIDEyMDgxOSwgNjgzODcsIDEwMDY0NSwgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCAKKyAgICA0MTE2MiwgNzc4MzYsIDY0NTI4LCAxMTY5LCA0MzQsIDQxNDM3LCAxOTA1LCA2MDM0LCA0MTE2NCwgNjQ3NDQsIDk1MjgsIAorICAgIDY3NzQxLCAxMjg4MDAsIDUyNCwgMTI4NjY3LCA3NDAyOSwgNzg4LCA3NDAyNywgMTk0NjY3LCA3MTg4MSwgMTIwMzcwLCAKKyAgICAxNjYzLCAxMDQxOSwgNDI5MDEsIDQyNjM2LCA2NzIxMSwgNjcyMTAsIDEyOTE0NywgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIAorICAgIDY3MjEzLCA2NzIxMiwgMTI4ODI4LCA2Nzg5NywgNzQwMzksIDAsIDAsIDExMzk1LCAxOTQ5MDQsIDExOTEwNywgNDM2MTIsIAorICAgIDY0MzQ0LCAxMjkzNzAsIDAsIDEwODU1LCA1NDQ1LCA5MzU1LCA2NzIyMSwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgCisgICAgNDM2NzMsIDk4Mzg3NCwgMTE5MjM4LCA4MDEwLCA3MTkxLCA0OTYyLCA2OTc3MiwgODg1NSwgNzQ2MTIsIDcwODIwLCAKKyAgICA2NDQ2OSwgOTI1OTIsIDEwNTU1LCA2NzIyNywgNDMzMzMsIDY3MjI1LCAxMjg0ODMsIDEyMDQyNywgMTA0NTEsIDY3MjI5LCAKKyAgICA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCA3Nzg0MiwgCisgICAgMTIwMTQ2LCA0MzQzMywgNDM2NDksIDExOTg3LCA4MzM0MywgOTgzNTgxLCAxMTAxMCwgMTExNjQsIDc0MDU5LCA3NDA2MiwgCisgICAgNjIxNywgNTg5NiwgNDM4NDYsIDc2ODIsIDc0MDQ5LCAxNDYyLCAxMDIzNSwgOTgzOTE4LCAwLCA5ODMzMjUsIDQzNDQxLCAKKyAgICAxMjc5MjQsIDEyNzc3NywgNDI1OTUsIDcyODA0LCA3NDQwMiwgMTE4ODYwLCA3ODY2MSwgMTIwNDE5LCA5MjQ5NywgNjYyODcsIAorICAgIDEyMDQyMCwgOTIzNzgsIDEyMDU0OSwgMTE5MDgyLCA2NDI5NSwgMTIwNDE4LCAwLCA2NDc2NSwgNzM5MjMsIDgzMjEwLCAKKyAgICAxMjA2NjIsIDY5OTIwLCAxMjUyNzgsIDYyMTYsIDY3MjMwLCAxMDc1NSwgOTQ1NSwgMTExNTUsIDgxMjQsIDEyNzA0MiwgCisgICAgOTQ3MCwgNjk0NCwgMTIxMTI1LCA5MTc5ODIsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAxOTQ4MDQsIDkxNzg1NiwgCisgICAgMTIwOTYxLCA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMTIwMzY1LCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgCisgICAgNzg1NjIsIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDEyMDg1MCwgNDI1OTksIDQyNTk3LCA0MjcwOSwgNjg4MjksIDEyNTAxMiwgCisgICAgMCwgODUzNywgMTI3MzA2LCA5ODM3MjksIDkzNTQsIDEyMTI0NCwgMTIxMzQ4LCA0MTE5OSwgMTAxMjEsIDIwMjgsIDc0OTUwLCAKKyAgICAxMjAyNTMsIDY5NzE1LCAxMjg1MjUsIDMwNjIsIDk4MzY2MywgNzQ0NDcsIDEyNjA4LCA5ODM2NTcsIDY2NDQwLCA3NTQ1LCAKKyAgICA5NzAwLCAxMTk0OCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgNjgzMDYsIDc0MDcxLCAxMjg3MjIsIDkyMzcyLCAKKyAgICAxMjcxMywgMTI3NTE5LCA3MDQwMiwgMCwgNzg3NzIsIDExMzcwOSwgMTczNCwgMCwgNzgxNDEsIDEyNzA0MCwgNjQ1OTQsIAorICAgIDI0NTYsIDIzMSwgNjgyMjcsIDc0MTY3LCA1NDIsIDEyMDU4NiwgMTAwODUxLCA5ODM4NTksIDE5NDc5NywgMTIzMCwgCisgICAgNzM4NDUsIDEyMTM0MywgMzU5NywgNDQ0NiwgMTA1ODQsIDc0MjM1LCA5MjIxNSwgNDAzNywgNjc3MzcsIDgzNTIsIDc4NDM2LCAKKyAgICA1Njg3LCAxMjcwMTgsIDY0NTE1LCAxMjEzNzgsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgOTgzNTg1LCAKKyAgICAxOTQ1NzMsIDcwMDgwLCA3MTMzOCwgMTIwNTc1LCA4NjYwLCAxMjY0NzgsIDEyNzAxMCwgMTI4NDY3LCA3ODc3MywgNzQ0ODIsIAorICAgIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAxMjgxNjcsIDEyMDM1OCwgMTc0NiwgMTMxNSwgODY2NywgOTgzMTAxLCAKKyAgICAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAxMTg3ODYsIDQ0ODAsIDExMjY2LCAxMjExMTQsIDEyMjYsIDY5MzAsIDY3OTc5LCAKKyAgICAxOTUwMTksIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCA2ODMwMiwgNzQ3ODUsIDY5ODc1LCAxMjA4NDksIDEyMTQ3OCwgCiAgICAgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNjc2ODIsIDEwODc3LCAxMTg4NjgsIDY0ODg1LCAKLSAgICA3NDI3MiwgMCwgMTk0NjcyLCAxMjg1NTksIDEyMDczNiwgNzQzMTIsIDM0NSwgMTI0OTMzLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIAotICAgIDAsIDc0ODU1LCA1MDM3LCAxMTk5MTIsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgNDEyMDEsIDMyMywgCi0gICAgNDMzMjgsIDAsIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDc3ODU1LCA0NjMwLCAxMzExNywgODMwMDIsIDEyODc3MiwgCi0gICAgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCAKLSAgICA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIDc3NTQsIDEwODU0LCA4NzM4LCA5ODM5NDksIDY1NDE5LCAwLCAKLSAgICAxMjg0OTYsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCA5ODM3MjEsIDEyNjcwLCAxMDEzLCAwLCA2NDkxOSwgNzA1LCAwLCAKLSAgICA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCA5MTc4MjYsIDgxNTcsIDk3MzYsIDY0NTAzLCAKLSAgICA2NTQxOCwgMTI5MDUwLCA5ODM4NzgsIDc0MDM1LCAxOTQ5MTgsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMTIwOTE2LCA4OTIwLCAKLSAgICAxMTkyOTgsIDEyODQyNiwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgCi0gICAgMTAxNzcsIDczNzc3LCAxODU3LCAxOTQ2NTcsIDQ2MjYsIDg0NjQsIDg0NzIsIDY4ODQ0LCA0NjI5LCA4NDk5LCA3NDYyNywgCi0gICAgNzgzMjIsIDQ2MjQsIDc4MTgsIDExODg2MSwgMTI4MTA4LCAwLCA3ODA1LCAxMjg3NTQsIDk0MDA3LCA2OTM1LCA5MjI5MiwgCi0gICAgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIAotICAgIDg0OTYsIDgzNDk5LCA3NDU4MiwgNzUwNTIsIDc4MzM5LCA5NTQzLCA2Nzg2MCwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgCi0gICAgNzc4MzEsIDk4Mzk2MSwgMTk0NjQ5LCAxMjQ1MSwgNzQzNzYsIDg2ODQsIDEyODMwMSwgNjEwMiwgMCwgNTI5OCwgOTE3ODQ3LCAKLSAgICA1Mjk0LCAwLCA4MzAxNiwgNjgwNDMsIDE5NTA2MiwgOTk0OSwgODMwMTQsIDQzNjE3LCAxMTkyMTUsIDAsIDEyMDczLCAwLCAKLSAgICAxMjg2NDYsIDc3ODYzLCAxMzEwOCwgMTIwNjE3LCAxMTQzOSwgNDE0NjgsIDgzMDEyLCAwLCA1MjkyLCA1NTI3MiwgCi0gICAgOTgzODgzLCAxOTM5LCA1MzAyLCAzOTcwLCA5MTc4NzcsIDEyNDU1LCAxNzkzLCAxMjQ5ODIsIDAsIDc1MDM2LCA2NjQzLCAKLSAgICA5MjQ3NywgNjUyNjMsIDAsIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCA3ODgzNSwgMTMyMTksIDk1NjksIDEyOTA0MSwgCi0gICAgNzQzODMsIDAsIDc0MTk3LCAxMjkwODksIDU1MDAsIDg4MTMsIDAsIDEyODYxMiwgNjg4NjAsIDUzMjIsIDEyMDk0NCwgCi0gICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDEzMjgyLCAKLSAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAxMjgyNDgsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIAotICAgIDEyNDksIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIAotICAgIDQzMTYyLCA0MTgxNSwgNDExNTAsIDEyODkxMSwgMTA1NzEsIDEwMDk2LCA2NzE2MSwgNjcxNjAsIDY3MTU5LCA2OTQ3LCAKLSAgICA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNjcxNTcsIDkzOTY2LCA2NjcwLCAKLSAgICA2NzE3NSwgNjcxNzQsIDAsIDQzMDkyLCA0MzMyNSwgNjcxNzgsIDEwMTY4LCA2NzE3NiwgOTc4MSwgNjgyNDgsIDkxOTAsIAotICAgIDEyODQ5NywgOTY2NiwgODI2OSwgNjU5NDQsIDc0MDA1LCAxMzAxOSwgMTE2NzAsIDY5ODYwLCAzMTUsIDEyODEzLCAKLSAgICAxMjkxMzIsIDcyNDA5LCA3ODI1NiwgNzI0MDgsIDc4MzUyLCAwLCA3NTA2MywgMCwgMCwgMTM3OCwgOTUwOSwgMTk0NjM0LCAKLSAgICA5Mjk5NiwgNzI0MDcsIDMwNjYsIDkyMjIwLCA2Nzg0NywgNzI0MDYsIDkyMzU1LCA5MTc4OTAsIDc4MzY1LCA4Nzg3LCAKLSAgICA2NzE4OSwgMTk0NjE2LCA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTI3Mzg0LCAwLCA2NDY1MiwgMTIxMjIyLCAxMjEwMTIsIDAsIAotICAgIDc4MzY2LCA0MjA4OCwgNzEwNDAsIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIAotICAgIDcxMDUwLCA4MTE5LCA2NDg3NCwgNzEwNTIsIDc4MTc0LCAxMjg2OTAsIDEyODYzMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAKKyAgICA3NDI3MiwgMTI4MDc2LCAxOTQ2NzIsIDEyMTIwMiwgMTAwNjUyLCA3NDMxMiwgMzQ1LCAxMjQ5MzMsIDc0NDU2LCA2NDYwNiwgCisgICAgOTkxNywgMTI1MjQ0LCA3NDg1NSwgNTAzNywgMTAwOTk4LCAxNzc2LCA4NDIyLCAxMjg5MzUsIDExODgxNCwgNDE1MDgsIAorICAgIDQxMjAxLCAzMjMsIDQzMzI4LCA5MTc4NDksIDQyNjk4LCAxMjk1LCAxOTQ4NTMsIDQ2MjUsIDc3ODU1LCA0NjMwLCAxMzExNywgCisgICAgODMwMDIsIDEyODc3MiwgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIDY1NjY2LCAyNTE5LCA5MjM2OSwgCisgICAgNjU0MjAsIDkyNDc5LCAxMjcxOTEsIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIAorICAgIDEyOTMxOCwgNjU0MTksIDAsIDEyODQ5NiwgNjQ5LCA2NTQyMSwgMTIyODgwLCA2NjcwMiwgOTgzNzIxLCAxMjY3MCwgMTAxMywgCisgICAgNzA3MDcsIDY0OTE5LCA3MDUsIDcyODI1LCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCAKKyAgICA5MTc4MjYsIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMTI5MDUwLCAxMjgwOTAsIDc0MDM1LCA3ODgzNiwgMTE5MTMsIAorICAgIDczODc0LCA2Njk2LCAxMjA5MTYsIDg5MjAsIDExOTI5OCwgMTI4NDI2LCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgCisgICAgNjYyMjcsIDk4MzI3MiwgNDE4NCwgMTE5ODI1LCAxMjg1OTgsIDEwMTc3LCA3Mzc3NywgMTg1NywgMTI3NzczLCA0NjI2LCAKKyAgICA4NDY0LCA4NDcyLCA2ODg0NCwgNDYyOSwgODQ5OSwgNzQ2MjcsIDc4MzIyLCA0NjI0LCA3ODE4LCAxMTg4NjEsIDEyODEwOCwgCisgICAgMCwgNzgwNSwgMTI4NzU0LCA5NDAwNywgNjkzNSwgOTIyOTIsIDc4MzI1LCA3ODMyNiwgNzgwNzksIDQzMzI3LCA0Mzk4OSwgCisgICAgMTE5MDQ2LCA4NDkyLCA4MjUwLCA4NDU5LCAwLCA4NDk3LCA4NDk2LCA4MzQ5OSwgNzQ1ODIsIDcwNjkwLCA3ODMzOSwgCisgICAgOTU0MywgNjc4NjAsIDc4MzMyLCA3NzgzMiwgNjU4NDksIDc3ODMxLCAxMjg2MTUsIDEwMDQxMiwgMTI0NTEsIDc0Mzc2LCAKKyAgICA4Njg0LCAxMDA1MTUsIDYxMDIsIDEyODA0NiwgNTI5OCwgMTI4NzIxLCA1Mjk0LCA4MzIzNSwgODMwMTYsIDY4MDQzLCAKKyAgICAxOTQ4OTksIDk5NDksIDgzMDE0LCA0MzYxNywgMTE5MjE1LCAxMjcwMzAsIDEyMDczLCAxMjA3MzYsIDEyODAxNywgNzc4NjMsIAorICAgIDEzMTA4LCA3MTIzMSwgMjI2MCwgNDE0NjgsIDgzMDEyLCAwLCA1MjkyLCA1NTI3MiwgOTgzODgzLCAxOTM5LCA1MzAyLCAKKyAgICAzOTcwLCAxMjkzNDgsIDEyNDU1LCAxNzkzLCAxMjQ5ODIsIDAsIDc1MDM2LCA2NjQzLCA5MjQ3NywgNjUyNjMsIDAsIAorICAgIDc4MzMwLCA0MTI5MywgNzgzMjgsIDY1OTIzLCA3ODgzNSwgMTMyMTksIDk1NjksIDEyOTA0MSwgNzQzODMsIDAsIDc0MTk3LCAKKyAgICAxMjkwODksIDU1MDAsIDg4MTMsIDk4MzQxNCwgMTI4NjEyLCA2ODg2MCwgNTMyMiwgMTIwOTQ0LCA3ODM0MCwgNDM2MzEsIAorICAgIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgMTMyODIsIDMzNjAsIDc4MzQ0LCAKKyAgICAyMjMxLCA3MjcyNiwgOTI0ODgsIDk5MjYsIDcxOTcsIDEyODI0OCwgNjg0MjksIDQyODk0LCA0MTgyMSwgMTI0OSwgNzgzNjAsIAorICAgIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgNDMxNjIsIDQxODE1LCAKKyAgICA0MTE1MCwgMTI4OTExLCAxMDU3MSwgMTAwOTYsIDY3MTYxLCA2NzE2MCwgNjcxNTksIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIAorICAgIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA2NzE1NywgOTM5NjYsIDY2NzAsIDY3MTc1LCA2NzE3NCwgMCwgCisgICAgNDMwOTIsIDQzMzI1LCA2NzE3OCwgMTAxNjgsIDY3MTc2LCA5NzgxLCA2ODI0OCwgOTE5MCwgMTIwOTgxLCA5NjY2LCA4MjY5LCAKKyAgICA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIDEyODU1NiwgNzI0MDksIDc4MjU2LCAKKyAgICA3MjQwOCwgNzgzNTIsIDkyMjEyLCA3NTA2MywgNzI4MzksIDAsIDEzNzgsIDk1MDksIDE5NDYzNCwgOTI5OTYsIDcyNDA3LCAKKyAgICAzMDY2LCA5MjIyMCwgMjI3MCwgNzI0MDYsIDkyMzU1LCA5MTc4OTAsIDc4MzY1LCA4Nzg3LCA2NzE4OSwgNzI4MTgsIAorICAgIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxMjczODQsIDAsIDY0NjUyLCAxMjEyMjIsIDcyODMzLCAxMjUyMjYsIDc4MzY2LCAKKyAgICA0MjA4OCwgNzEwNDAsIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIDcxMDUwLCAKKyAgICA4MTE5LCA2NDg3NCwgNzEwNTIsIDQzOTY0LCAxMjg2OTAsIDEyODYzMCwgNzQ1MjUsIDcyODQzLCAxMDA3ODMsIDEyOTMwLCAKICAgICAxMzk0LCA3NDUxNCwgMTI4NDEzLCA3NDUxNSwgOTgzNzI3LCA2NzE4NCwgMjk5OCwgOTUyNywgNjcxODEsIDY1MTkwLCAKICAgICAxMjk3NywgNDIwOTAsIDY3MTg1LCA5ODM2NDcsIDExOTEwMCwgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCAKICAgICA1ODQ4LCA2NzE5MywgNjcxOTIsIDM2NzAsIDY3MTkwLCA2NzE5NywgNjcxOTYsIDY3MTk1LCA3ODkwLCAxMjgwNzAsIAotICAgIDExMjk4LCA0MzMxNSwgOTgzMzE1LCA2MjI5LCAxNTkzLCAwLCAxMjUxMjAsIDYxOSwgNDYzNSwgNjUwODAsIDEyNzE1OCwgCisgICAgMTEyOTgsIDQzMzE1LCA3Nzg3MSwgNjIyOSwgMTU5MywgMCwgMTI1MTIwLCA2MTksIDQ2MzUsIDY1MDgwLCAxMjcxNTgsIAogICAgIDEyMTk0LCA0MTIwLCA2NTMzNywgNjUzMzYsIDEyODQwNywgMTE4MDgsIDY3MTk5LCA2NzE5OCwgOTM2NiwgNDI3OTAsIAogICAgIDQyMDA2LCAxMTkxMTUsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgNjUzMjEsIDY1MzIwLCAKICAgICA0Mzk0NywgNjUzMzQsIDQzOTQ2LCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIDkyNDI3LCA5MTI4LCAKLSAgICA5NDA0NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODM4MzAsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgCi0gICAgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMTIwODYyLCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCAKLSAgICA0MzUzMywgNzg0NTksIDcxODksIDAsIDAsIDQzOTQxLCAxMjM1NywgNDI4MDIsIDc4NDUwLCA4NDg3LCA5MTMxLCA2NjI5MiwgCi0gICAgNDYxNSwgMTI2OTUsIDEyNzc1MiwgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAxMjEzNTEsIDU2MiwgMTIxNjksIAotICAgIDY1OTAsIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCAxMjEwOTYsIDEyODI4MSwgMTAzNywgMTI4Njc3LCAKLSAgICAyMDI1LCAxMjgyNjMsIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIDU0OSwgMTU3MCwgNDM4MzksIDI4MzUsIDgzMDUyLCAKLSAgICAxMDYyNCwgNDM2MjMsIDExMDcyLCA4MzA0NSwgMTI4NTIzLCA4MzA0NiwgMTI2MDYsIDc4NDMzLCAyODI1LCA4MzA0OCwgCi0gICAgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgNzM2NSwgODMwNDMsIDEyMDU5MywgMTMwNzEsIDEyMTI4OCwgNDUyLCAKLSAgICA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgOTE3OTE3LCA2NDcwMywgCi0gICAgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMCwgNDEzMzIsIDAsIDEyMzMzLCA0MTA0NywgMTY2OCwgMTE5ODQ5LCAxMjExNTAsIAotICAgIDEyODI3NSwgMTE4NywgOTgzMzg3LCA0MjYyOCwgNzg1NzUsIDgyOTUzLCA3MTg2MywgODI5NTUsIDMyNDAsIDEyODUxOCwgCi0gICAgMTIxNTEsIDAsIDExNTkxLCA0MTA2NSwgNTMyMywgODE2NiwgMCwgMTE4OTMyLCAwLCA2NjgyNywgMTYyMywgNjUyOTcsIAotICAgIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcyOTUsIDE1NDEsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCA2NjQwMiwgCi0gICAgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgNzA0NzYsIDkyMjk2LCA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDY4MDgzLCAKLSAgICAzNTY3LCA3MDEsIDY1OTM2LCAzNDg5LCAxMjA4OTksIDcwNDYyLCA3MDE3MiwgMTE0MDMsIDAsIDAsIDgyOTg2LCAzNzk2LCAKLSAgICA2ODAwLCA3MDQ3MiwgMzk5NCwgMTE0MjEsIDc0NjExLCAxOTUwNzYsIDE5NTA3OCwgNjgwMzYsIDAsIDAsIDY0ODU3LCAKLSAgICA4MzUwOCwgMjg1NSwgNzQ0MTgsIDY2MzA4LCA0MTYyMSwgNjgyMTQsIDgzNTEzLCAxMjc4MTcsIDEwNjU0LCA4Mjk0NSwgCi0gICAgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIDY1ODQ3LCA3MTgyLCAwLCAxMzAyNCwgNjYyNzYsIDc0MjcwLCAKLSAgICA4MzA2OSwgMTI1MDkwLCAxMjExMTUsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAyMzc4LCA0MzEzNiwgODMwMzEsIDg0NjYsIAotICAgIDgzMDc1LCA5MzIwLCA4MDAxLCAxMjMyLCA4MTM5LCAxMTYxNywgNzQ2MzcsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgCi0gICAgMTI2NTAwLCA2NDYzNCwgOTIzNjIsIDcwMjAyLCAxMTYxMiwgOTMwMDgsIDY3NjAwLCAyMzc0LCA5NDA2NiwgODQ3NSwgCi0gICAgMTE2MDksIDY2MzEzLCA5MjU2OCwgMCwgNTI4NiwgMTE5Mjk3LCA4MzA1OSwgOTgzMjUzLCA2NDkyNSwgMTIwMjgzLCAKLSAgICAxMjcyMDQsIDExODk4MiwgNzE5MDUsIDc3MDUsIDExOTQyLCAxMTMwNSwgMTI3MjAzLCAzMzA5LCA4Mjk3OSwgOTIwNiwgCi0gICAgODI5ODAsIDExMzgyNCwgNjgwMiwgNzAzNTMsIDQxNjUzLCAxMjgwLCAxMjQxLCA3MTY4LCAxMjA5NiwgMCwgNjY2MTUsIAotICAgIDQyNTY1LCA0MTY1MSwgMCwgOTE3NjI3LCA4MzA0MiwgNDE2NTAsIDY2NTA3LCA2NjQ3MCwgNzQ0NzIsIDEyOTE0LCA0MTQ5MSwgCi0gICAgNDM5MDEsIDk0MTA2LCA2MDc4LCA5OTU0LCA3ODgyMiwgMTQ3NSwgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCAKLSAgICA0MTA2MiwgMCwgMTEzNjgwLCAzMjU2LCAxMDE4OSwgNDIwNzYsIDQzMjUyLCA3ODgyMywgNjgwODksIDg3MjcsIDEyMDkyMiwgCi0gICAgNjU4NzUsIDAsIDAsIDEyNzc2MiwgMTA1NjIsIDc0MjE1LCA0MzA2NSwgMTIwOTA2LCAwLCAzMjQ4LCA3NDI5NywgMzI2MSwgCi0gICAgOTAxNSwgNzEzNTEsIDAsIDM2MzUsIDY0MzM3LCA5Mjc1OSwgMTI1MDU0LCAwLCA3MTk1LCA4MzM0NiwgMjAwNywgNjQ0MzEsIAotICAgIDE5NTA3NSwgMCwgOTIxOTcsIDEyNzA5MCwgNjM1LCAwLCAxMjkwODIsIDY1NjEzLCA3NzkwOSwgOTI0MjAsIDczOTk3LCAKLSAgICAxMjg1MTAsIDEyMTQ1NywgNDM5MDUsIDc5ODQsIDg2MDAsIDc0NDM0LCAxMjc3NzAsIDQxNzYsIDcwMDUwLCAyMDM0LCAKLSAgICA3ODQyMywgMTExNTQsIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4NTQ0LCA3ODU5NiwgMTk0NjAyLCAzNjQ5LCAKLSAgICAxMzE0OSwgNDIxNDUsIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDcxODg1LCA2NzY3NywgMTIwMTI0LCA3ODY2LCA3NTA0NSwgCi0gICAgMTE0MDIsIDQyMTQ2LCA5NDAzMiwgNzQyMzgsIDQyNjY0LCAyODQ5LCAxMjcwMzQsIDAsIDc5MzgsIDEyOTYwLCAxNzYxLCAKLSAgICAxMTgxMiwgNjUzNzksIDY4Mzg2LCAxMjgxODUsIDExNTksIDcxMTgzLCA2OTcyOSwgMCwgMTIwNzk3LCA3MTc4LCAxMjA4NTEsIAotICAgIDk4MzgzNiwgNDE2ODAsIDEyODQ2OSwgODMwOTgsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIAotICAgIDEyODQ5MCwgNjc4NzcsIDE5NDU2MSwgMTI5ODksIDY2NDc0LCA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDc0Mjc4LCAKLSAgICAxMDgxOCwgODMwOTEsIDk5NTMsIDE5NDg5NSwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgCi0gICAgNjE2OSwgMTI4NzEsIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCA5MTc5MjQsIDY3ODc1LCAKLSAgICAxMjAzMDEsIDM0OTUsIDY2NjQ4LCAxMjUwNzksIDgzMzU0LCA2ODM2NCwgMTIwNzc5LCA0ODkxLCAwLCAxMDY0MSwgMCwgCi0gICAgNzM3NDYsIDEyMDk0NSwgNjgzNTIsIDAsIDczNzg3LCAxMjg4NTgsIDEyNzA5NCwgNzE5OSwgMTExMzEsIDAsIDAsIDAsIAotICAgIDk4Mzg1MiwgMTI2OTc5LCA0MjY4NSwgNDI2NzksIDE5MywgNzg3ODksIDAsIDAsIDQyNjY3LCAwLCA1MjcxLCA2ODMyMywgCi0gICAgOTI1MTcsIDgzMzU2LCAxMzYyLCAxMzI5NywgMCwgNzE4ODAsIDAsIDk4MzMzMywgNzM3ODksIDAsIDY2NTgsIDQ0MjYsIDAsIAotICAgIDY2ODMwLCA5ODM4NDIsIDgzMTAzLCA3Mjc2LCA0MjE2MywgNTIyMCwgMCwgNzg2MjEsIDY3ODIyLCAyNDE2LCAzMzEwLCAKLSAgICA0MjcwMywgODMxMDcsIDM3OSwgMCwgNDM3NTUsIDcwNTA0LCA0MzY0NywgMzIyMywgNjU0OTIsIDEyODQsIDE5NDc3MSwgCi0gICAgNDU0OSwgMTk0NzM4LCAwLCA3MTI1MywgNzA3ODQsIDEwODA3LCA5NTU4LCA5MzAyNywgMCwgODUxNSwgODY4OCwgMTI4NjYsIAotICAgIDY1MzA4LCAzMjk0LCA4MzE0MywgODUyOSwgMTI4MTAxLCA0MzM4NSwgNzU2NCwgMCwgNDMzMjksIDgzMTQ4LCA5MjQ1OCwgCi0gICAgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMTI4NDM5LCAyMDMxLCA5ODM4OTAsIDcyMDIsIDEyODIzMiwgMTI2NzYsIDQyNzI5LCAKLSAgICA3NDc3NywgMzIxNSwgMTIwOTgyLCA3NzEwLCAxNjEwLCA3MzgwMSwgMTI4ODA3LCAwLCA2NTY4MiwgMCwgNDM5MTcsIAotICAgIDY1OTI0LCA5OTc0LCAyMjgsIDQzOTIyLCAxNTAxLCAxMjc5OTQsIDY0Mzk1LCA1MTc5LCA3MjAwLCA2MjI1LCAxMTg5MjcsIAotICAgIDQyOTk5LCAxNzI1LCA2NTUzMywgODE5NiwgNzQ3NiwgNzQzOTksIDAsIDY2ODY4LCA3MTUyLCA4NTAyLCA1NzYyLCAxOTY3LCAKLSAgICA3NDgzLCA0Mzg5OCwgMCwgODEwNCwgNzAxMjgsIDc0NzQsIDQzOTE0LCA4MzA4MCwgMTI2NTA3LCAxMDQxNCwgMTMwMDEsIAotICAgIDgxNDEsIDk4MzIzOSwgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIDY4MDUsIDg2MzEsIDI1NDUsIDQyOTM0LCAKLSAgICAxMjcxNjYsIDAsIDc0MTkwLCAxMjg0NzcsIDcwNDEwLCA5ODM3ODYsIDQyNzYyLCAxOTQ3MDgsIDQyOTE0LCAxNjUwLCAyNjIsIAotICAgIDE2MzcsIDEyODUwMiwgNzkwMSwgMzIzOCwgODMwMjYsIDQxODYxLCAwLCAxMjAyMTEsIDY1MTU4LCAxMDg2MCwgNzQ5NTksIAotICAgIDQzNjU4LCA3NTI3LCA4MzA4NiwgNDMzMTksIDY0MTksIDAsIDQ1LCAwLCA2NDU4OCwgOTM5ODksIDEyNzc1MywgMTE5ODEwLCAKLSAgICA3MTk0LCA1MjkxLCAwLCA0MzY2NiwgMTMxMjksIDEyODY4NCwgOTA4NCwgMTIxMDM5LCA4NzM3LCA5ODMxNjUsIDEyODgxLCAKLSAgICA3NTA2NiwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIDk4Mzg4MiwgMzU2NCwgMCwgNjk5NzgsIDE3OSwgNDM2NDQsIAotICAgIDc1MDQ5LCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgMTI5MDQyLCA3MDM0NywgMTE5MDA5LCAyODUwLCA4MDg0LCAKLSAgICA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDgzNTIyLCA0MjA3MiwgOTI3MzYsIAotICAgIDExOTg0MiwgMTAzOTgsIDgzMzg2LCA4MzUyMywgODM3NywgMTE5MzEyLCA4MjQ1LCA2ODQwMSwgMzE1OCwgOTIzOTYsIAotICAgIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgOTI0NzAsIDI5MiwgMTExMTksIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCAKLSAgICA5MjQ2MywgNDYxMiwgNjc3MjksIDExOTg1MCwgNzI1MywgNzA0NTYsIDY4MzkxLCA3NTAwMiwgMTA3ODIsIDM2MzcsIAotICAgIDEyOTk2LCA0MzU0MiwgMTEzNjc2LCA2NDU3OCwgODM0NDksIDMyMjgsIDY5NjM2LCA4NzgzLCA5ODM2MzIsIDExOTYxNCwgCisgICAgOTQwNDUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzMTM1LCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIAorICAgIDY1MzE0LCA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDEwMDM1OSwgNjU2MDksIDQxMjQxLCA3OTAzLCA0MTIzOSwgCisgICAgNDM1MzMsIDc4NDU5LCA3MTg5LCAxMDA0MTgsIDk4MzIyNywgNDM5NDEsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIAorICAgIDkxMzEsIDY2MjkyLCA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDk4Mzg4NywgCisgICAgMTIxMzUxLCA1NjIsIDEyMTY5LCA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAzMjE5LCA2ODY1NCwgMTIxMDk2LCAKKyAgICAxMjgyODEsIDEwMzcsIDEyODY3NywgMjAyNSwgMTE5MTU5LCAxMzA5OCwgNzg0NDIsIDEwNjM3LCA0NTY4LCA1NDksIDE1NzAsIAorICAgIDQzODM5LCAyODM1LCA4MzA1MiwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgODMwNDUsIDEyMDU2MSwgODMwNDYsIDEyNjA2LCAKKyAgICA3ODQzMywgMjgyNSwgODMwNDgsIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDgzMDQzLCAxMjA1OTMsIAorICAgIDEzMDcxLCAxMjEyODgsIDQ1MiwgNDEwNDksIDQyODQwLCA2MzQ2LCAyODMxLCA1NDYxLCA3NDU5NiwgMTE0NjUsIDUyMTIsIAorICAgIDExODk0NSwgNjQ3MDMsIDExOTE5MSwgNDIzMDgsIDcxODEsIDEyODI3NiwgNDEzMzIsIDAsIDEyMzMzLCA0MTA0NywgMTY2OCwgCisgICAgMTE5ODQ5LCAxMjExNTAsIDEyNzI5NSwgMTE4NywgMTI4ODc1LCA0MjYyOCwgNzg1NzUsIDgyOTUzLCA3MTg2MywgODI5NTUsIAorICAgIDMyNDAsIDEyODUxOCwgOTIxMywgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCA3MDczOSwgMTE4OTMyLCAxMjcxMTEsIAorICAgIDY2ODI3LCAxNjIzLCA2NTI5NywgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzA4MSwgMTU0MSwgNjUwNDgsIAorICAgIDE5MDksIDg4NjQsIDAsIDY2NDAyLCAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCA3MDQ3NiwgOTIyOTYsIDQyMzcsIAorICAgIDkyNTc2LCAxMDM1LCA2NTgxNSwgNjgwODMsIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDEyMDg5OSwgNzA0NjIsIDcwMTcyLCAKKyAgICAxMTQwMywgMCwgMCwgODI5ODYsIDM3OTYsIDY4MDAsIDcwNDcyLCAzOTk0LCAxMTQyMSwgNzQ2MTEsIDEyNzkxMSwgCisgICAgMTk1MDc4LCA2ODAzNiwgNzA2NTksIDAsIDY0ODU3LCA4MzUwOCwgMjg1NSwgNzA2OTcsIDY2MzA4LCA0MTYyMSwgNjgyMTQsIAorICAgIDgzNTEzLCAxMjc4MTcsIDEwNjU0LCA4Mjk0NSwgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIDY1ODQ3LCAKKyAgICA3MTgyLCAwLCAxMzAyNCwgNjYyNzYsIDc0MjcwLCA4MzA2OSwgMTI1MDkwLCAxMjExMTUsIDAsIDE0OTYsIDc0NywgCisgICAgOTE3OTk5LCA5NDIsIDIzNzgsIDQzMTM2LCA4MzAzMSwgODQ2NiwgODMwNzQsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIAorICAgIDExNjE3LCA3NDYzNywgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAxMjY1MDAsIDY0NjM0LCA5MjM2MiwgNzAyMDIsIDExNjEyLCAKKyAgICA5MzAwOCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAxMTYwOSwgNjYzMTMsIDkyNTY4LCAwLCA1Mjg2LCAxMTkyOTcsIAorICAgIDgzMDU5LCA5ODMyNTMsIDY0OTI1LCAxMjAyODMsIDEyNzIwNCwgMTE4OTgyLCA3MTkwNSwgNzcwNSwgMTE5NDIsIDExMzA1LCAKKyAgICAxMjcyMDMsIDMzMDksIDgyOTc5LCA5MjA2LCA4Mjk4MCwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIAorICAgIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCA5ODM4NjksIDkxNzYyNywgODMwNDIsIDQxNjUwLCA2NjUwNywgCisgICAgNjY0NzAsIDc0NDcyLCAxMjkxNCwgNDE0OTEsIDQzOTAxLCA5NDEwNiwgNjA3OCwgOTk1NCwgNzg4MjIsIDE0NzUsIAorICAgIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgNDEwNjIsIDAsIDExMzY4MCwgMzI1NiwgMTAxODksIDQyMDc2LCAKKyAgICA0MzI1MiwgNzg4MjMsIDY4MDg5LCA4NzI3LCAxMjA5MjIsIDY1ODc1LCA5MTc5MTYsIDEyOTM0OSwgMTI3NzYyLCAxMDU2MiwgCisgICAgNzQyMTUsIDQzMDY1LCAxMjA5MDYsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMTEzNzE4LCAzNjM1LCAKKyAgICA2NDMzNywgOTI3NTksIDEyNTA1NCwgMCwgNzE5NSwgODMzNDYsIDIwMDcsIDY0NDMxLCAxOTUwNzUsIDE5NDY3MCwgOTIxOTcsIAorICAgIDEyNzA5MCwgNjM1LCA5ODMxMTgsIDEyOTA4MiwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDEyNzk4MCwgMTIxNDU3LCAKKyAgICA0MzkwNSwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyMTA0NywgNDE3NiwgNzAwNTAsIDIwMzQsIDc4NDIzLCAxMTE1NCwgNjU4OTEsIAorICAgIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg1NDQsIDc4NTk2LCAxMjkwOTQsIDM2NDksIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIAorICAgIDM2MzQsIDEyMDI5MSwgNzE4ODUsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDc1MDQ1LCAxMTQwMiwgNDIxNDYsIDk0MDMyLCAKKyAgICA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIDExODEyLCA2NTM3OSwgNjgzODYsIAorICAgIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCA2Njc2OCwgNzE3OCwgMTIwODUxLCA5ODM4MzYsIDQxNjgwLCAKKyAgICAxMjg0NjksIDgzMDk4LCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAxMjg0OTAsIDY3ODc3LCAKKyAgICAxOTQ1NjEsIDEyOTg5LCA2NjQ3NCwgOTM2OCwgMTI4NDgsIDE2MjQsIDQzMjcwLCAwLCA3NDI3OCwgMTA4MTgsIDgzMDkxLCAKKyAgICA5OTUzLCAxMjgwMDgsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAKKyAgICAxNTUxLCAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgOTE3OTI0LCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCAKKyAgICA2NjY0OCwgMTI1MDc5LCA3ODcwOCwgNjgzNjQsIDEyMDc3OSwgNDg5MSwgOTE3OTMzLCAxMDY0MSwgMTI1MjY1LCA3Mzc0NiwgCisgICAgMTIwOTQ1LCA2ODM1MiwgMCwgNzM3ODcsIDEyMDE5NSwgMTI3MDk0LCA3MTk5LCAxMTEzMSwgMTIwNjE3LCAxOTQ3MDAsIDAsIAorICAgIDk4Mzg1MiwgMTI2OTc5LCA0MjY4NSwgNDI2NzksIDE5MywgNzg3ODksIDAsIDAsIDQyNjY3LCA5ODM4NjgsIDUyNzEsIAorICAgIDY4MzIzLCA5MjUxNywgODMzNTYsIDEzNjIsIDEzMjk3LCAxMTg4NjIsIDcxODgwLCAxOTUwOTAsIDE5NDk2OSwgNzM3ODksIAorICAgIDEyMDk4OSwgNjY1OCwgNDQyNiwgMTI3MDkzLCA2NjgzMCwgOTgzODQyLCA4MzEwMywgNzI3NiwgNDIxNjMsIDUyMjAsIAorICAgIDEwMDY3MCwgNzg2MjEsIDY3ODIyLCAyNDE2LCAzMzEwLCA0MjcwMywgODMxMDcsIDM3OSwgMTI5MTU5LCA0Mzc1NSwgCisgICAgNzA1MDQsIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCA0NTQ5LCAxMTUyMywgMCwgNzEyNTMsIDcwNzg0LCAKKyAgICAxMDgwNywgOTU1OCwgOTMwMjcsIDEyODAwMywgODUxNSwgODY4OCwgMTI4NjYsIDY1MzA4LCAzMjk0LCA4MzE0MywgODUyOSwgCisgICAgMTI4MTAxLCA0MzM4NSwgNzU2NCwgOTE3OTg2LCA0MzMyOSwgODMxNDgsIDkyNDU4LCA3Mzc1NywgNjY0NTYsIDQyMzU5LCAKKyAgICAxMjg0MzksIDIwMzEsIDEyNzM5NCwgNzIwMiwgMTI4MjMyLCAxMjY3NiwgNDI3MjksIDc0Nzc3LCAzMjE1LCAxMjA5ODIsIAorICAgIDc3MTAsIDE2MTAsIDczODAxLCAxMjg4MDcsIDAsIDY1NjgyLCAwLCA0MzkxNywgNjU5MjQsIDk5NzQsIDIyOCwgNDM5MjIsIAorICAgIDE1MDEsIDEyNzUxMiwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDExODkyNywgNDI5OTksIDE3MjUsIDY1NTMzLCA4MTk2LCAKKyAgICA3NDc2LCA3NDM5OSwgMCwgNjY4NjgsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIDc0ODMsIDQzODk4LCAwLCA4MTA0LCAKKyAgICA3MDEyOCwgNzQ3NCwgNDM5MTQsIDgzMDgwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgODE0MSwgMTk0OTQ5LCA0MjUzNywgCisgICAgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNDI5MzQsIDkyMjAzLCAxMjUyMTEsIDc0MTkwLCAKKyAgICAxMjg0NzcsIDcwNDEwLCA5ODM3ODYsIDQyNzYyLCAxOTQ3MDgsIDQyOTE0LCAxNjUwLCAyNjIsIDE2MzcsIDEyODUwMiwgCisgICAgNzkwMSwgMzIzOCwgODMwMjYsIDQxODYxLCA5ODM3NjMsIDEyMDIxMSwgNjUxNTgsIDEwODYwLCA3NDk1OSwgNDM2NTgsIAorICAgIDc1MjcsIDgzMDg2LCA0MzMxOSwgNjQxOSwgMCwgNDUsIDEyODA2MCwgNjQ1ODgsIDkzOTg5LCAxMjc3NTMsIDExOTgxMCwgCisgICAgNzE5NCwgNTI5MSwgMTAwMzk4LCA0MzY2NiwgMTMxMjksIDEyNjYzOSwgOTA4NCwgNzI3MTcsIDg3MzcsIDk4MzE2NSwgCisgICAgMTI4ODEsIDc1MDY2LCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgMTk0ODMwLCAzNTY0LCAxMjczOTMsIDY5OTc4LCAxNzksIAorICAgIDQzNjQ0LCA3NTA0OSwgNjQ3NTYsIDI4NTMsIDc4NDQzLCAxMTg4MTMsIDEyOTA0MiwgNzAzNDcsIDExOTAwOSwgMjg1MCwgCisgICAgODA4NCwgOTgzMDg1LCA3Mzg1MCwgMjgwMSwgOTIyODQsIDQyMDY5LCAxMTk4MzksIDc0NzU0LCA4MzUyMiwgNDIwNzIsIAorICAgIDkyNzM2LCAxMTk4NDIsIDEwMzk4LCA4MzM4NiwgODM1MjMsIDgzNzcsIDExOTMxMiwgODI0NSwgNjg0MDEsIDMxNTgsIAorICAgIDkyMzk2LCAzOTgzLCA0MzY1NiwgOTIzLCAxMTk4NTcsIDkyNDcwLCAyOTIsIDExMTE5LCAxMTk4NDUsIDcyNzE1LCAzMjIxLCAKKyAgICAxNzYzLCA5MjQ2MywgNDYxMiwgNjc3MjksIDExOTg1MCwgNzI1MywgNzA0NTYsIDY4MzkxLCA3NTAwMiwgMTA3ODIsIDM2MzcsIAorICAgIDEyOTk2LCA0MzU0MiwgMTEzNjc2LCA2NDU3OCwgODM0NDksIDMyMjgsIDY5NjM2LCA4NzgzLCA5ODMwOTMsIDExOTYxNCwgCiAgICAgMjczMSwgMCwgMTIwODMzLCA3ODU4NSwgNDEwMiwgNzY5NiwgNzM4NzgsIDEyMTQxNywgMTI4MTMyLCA3MDgxMywgNDMzMTYsIAogICAgIDQxNzcsIDExMjgzLCA5MDg5LCAxMjA5MTgsIDczOTk2LCAxMjExMTEsIDY0NTAwLCA0MzY3NCwgMCwgNjQ5NDcsIDE4NTYsIAotICAgIDAsIDAsIDYzNzksIDkxNzgwNCwgMTExNDIsIDEyNzE3NiwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAxMjczODAsIDk4MzkzMSwgCi0gICAgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMTI0OTYyLCA5ODM2ODMsIDIwMzMsIDc4NTc3LCA3ODU3NiwgODI5NjUsIDU1MjU0LCAKLSAgICA3NzQwLCA4Mjk3NCwgNzA0NDgsIDEyNjU1NSwgNzM5NjQsIDY4NTA1LCA5Mzk4OCwgNjc2MTIsIDY1Njc0LCAxMjgyNDQsIAotICAgIDk0MTEwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgNzQwMTksIDEyODUyMCwgMTI4MDY2LCAKLSAgICAxMjgwMzEsIDg1NjEsIDQ1NzMsIDEyMTM3NSwgNTMyNiwgOTI1NzEsIDEyMDYwNSwgNzIzMCwgODI1NywgMTIxNDE1LCAKLSAgICA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDQzNTExLCA3NjI4LCA2NTA5MiwgNzM5MDMsIAotICAgIDY0MzU1LCAxMTM0MiwgMTI4NTYxLCAwLCA5ODM0MzQsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIDEwNzIzLCAKLSAgICA5NjcsIDk4MzMzNSwgMTIwOTg1LCAxMTk0NiwgOTgzNjAyLCAzMjU3LCAxMjcyMDksIDEyMzA3LCAxODQ1LCAxMjkwNzIsIAotICAgIDQzNTI2LCAwLCAxMTk1NzMsIDE4ODYsIDQyMzQyLCAxMDA4OSwgODcwLCA3NjQ4LCAzNDk5LCA3NjYyLCA3NjUyLCA4NzYsIAotICAgIDg3MSwgODc3LCA3NjY1LCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCA0NTYzLCAwLCA5MTc4OTIsIDc1OTEsIDY1ODg3LCAKLSAgICA4NjcsIDk1MjAsIDg3MiwgNzY1NiwgODY4LCA4NzMsIDc2NDIsIDc2NTksIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgCi0gICAgNzkwLCAxMjgzMDMsIDExODkzOCwgMTk1MDUzLCA5MzAzOCwgNjYxODIsIDE5NDYyMywgNTQyOSwgMTk1MDU1LCA2NjE4MCwgCi0gICAgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDk4MzI5MSwgMTI3MjE0LCA0MjA2NywgMCwgNTQzMywgMTA2NTcsIDc5MTEsIAotICAgIDEyNTExOSwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIDUzMTcsIDU0MjMsIDQ2MTEsIAotICAgIDEyNTA5NCwgNjc2MzcsIDEyNzI4NiwgOTY3OSwgNzQxMjIsIDkyOTc4LCA5MTc1ODUsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgCi0gICAgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAxMjcyNjMsIDE4NTEsIDEyNDk5NSwgODMzMjAsIDExOTA4LCAwLCA5MzYwLCAKLSAgICAxMTg4OTcsIDEyMDg3NCwgNDI3NzYsIDY2MTg3LCAxMjgzNywgODgyOSwgNzcxMSwgMTExMTIsIDAsIDkyMzIxLCA0MzMxOCwgCi0gICAgOTIzMDIsIDg4MDksIDY5ODgxLCAwLCAxMjY1MTgsIDEyMDYwNCwgOTgzMDUyLCA5ODMyNzcsIDk4MzQzMywgMTI4NDEyLCAwLCAKLSAgICAxMjA1NzcsIDc0MjcsIDk5NTgsIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTI3MTg1LCAyNDMzLCAxMjg2MDIsIDY5OTczLCAKLSAgICAzMzUyLCA3NDM2MywgMTI4NjY4LCAxMjEzNDEsIDc5MywgNzQ0MDQsIDExMTk3LCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgCi0gICAgNjk5NzksIDgyMDgsIDY4MzA4LCA0MTY5NSwgMTY0NywgMTE4ODc3LCA3MDg0MSwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIAotICAgIDE5NDYyOCwgOTE3NjIxLCA0MTM3NiwgMTE5OTc4LCA2ODc0MiwgMTIwNTk0LCA3NDA4NiwgNjg3NzcsIDcwMTc5LCAKLSAgICA5MTc2MTMsIDEwOTczLCA2NjM1OSwgMTM3MiwgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDkxNzYwNSwgMTk0NjU0LCAKLSAgICA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIDEyNjYxMiwgNjc3MjMsIDI4NDAsIDk4MzkwNSwgNzg4MjksIDk4MzkzOSwgCi0gICAgNjY4ODcsIDMyNDUsIDkwNjgsIDY4MTk0LCA2NDcyNSwgMTIxMTYxLCAxMjgwNTEsIDEyOTkxLCAxMjQ5NzEsIDI2NTEsIAotICAgIDY4MDE2LCA5ODMyNjcsIDEyNzMyNiwgMTI1MDM4LCA3MDgzNSwgMCwgNzA4NDQsIDQzNjQ4LCAxMjA4MTIsIDkxNzgzMywgCi0gICAgNDMzMjIsIDkyNjYyLCAwLCAwLCA2NDM3MiwgOTI2OTgsIDMyMjYsIDY1NSwgNzUyLCA3NDU3LCA3NDU2LCA3NDUyLCAzMjg1LCAKLSAgICA3NDg5NCwgMTExNTIsIDkyOTAzLCA2NTYxMCwgMjM5MSwgOTI5MDgsIDkyMjQ4LCA2NzEsIDI1MCwgNzQzNCwgNjE4LCA2NjgsIAotICAgIDYxMCwgNDI4MDAsIDc0MzEsIDExNTIsIDQyODAxLCA2NDAsIDEyMDY2NiwgNzQ0OCwgNzQzOSwgNjI4LCAzOTA1LCA3MzgxMCwgCi0gICAgMTI4MzQwLCAxMjgyNjYsIDY0NzQ5LCA2Nzg1MCwgMjEwNywgMTI4MjkwLCA3NDI0OSwgNDYwNSwgMTI4MTc0LCA5ODMxOTIsIAotICAgIDQzMzcyLCA2NTk0NSwgMTI3MjQ5LCAxMTExMywgMTE5NTkwLCAwLCAwLCA3MDQ5NSwgOTg3LCA2OTI3LCAxMTU3MiwgCi0gICAgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCA5ODM5NTEsIDEyODI5NywgMCwgNzg3NjIsIDEyNzg2NywgMTIxMzY4LCAKLSAgICAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIDQ2MjcsIDExOTI2OSwgNTIwOCwgMCwgCi0gICAgNzAwOTAsIDEwMzMyLCAyNDI0LCA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgNzM4OTQsIDEyODg1MiwgCi0gICAgNTQzMiwgNjQ5NjUsIDU1MjcsIDQyMzE1LCAxMDUxNiwgNzc5MCwgNTUyOCwgMTI4ODM4LCA0MjE0MCwgMTIwMjgxLCAwLCAKLSAgICA5ODM3NzcsIDQzNTQ1LCA5ODg3LCAxMjE0NzcsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgMTIwMjc4LCAKLSAgICA3ODg0LCAwLCAxMjg1NjYsIDc0OTEwLCAxMjg2NjYsIDIxMSwgMjUwOSwgOTI5MDQsIDcwODIyLCA2ODY3MiwgMzIyMCwgCi0gICAgNDIyMzUsIDc4NDgwLCAxMDY5MCwgODk1MSwgNTIxNCwgNDI0NzQsIDgxMTgsIDAsIDcwNDgsIDQ1OTAsIDEyNzI1OCwgCi0gICAgNTg1MiwgMCwgNzg0ODIsIDEyNzI1OSwgMTcwOCwgMCwgNzg0ODEsIDI2MjMsIDExOTQzLCAxMjg3MDAsIDY5MjI2LCAKLSAgICA2OTk3NCwgNDY5OCwgNjY1MDksIDEwNjYsIDExOTkyMSwgNDcwMSwgOTgzODc2LCAxMjAyODUsIDcwNDQ3LCA5NDExMSwgCi0gICAgODI2NywgMCwgMTQyMSwgNjY0MjYsIDc1MTYsIDEyNzU1MiwgMjYyNSwgOTgzNjQxLCA4MDM0LCA3NDMwOSwgMCwgMzYzMSwgCi0gICAgMTA5NTUsIDc4NTAsIDEyMDI5MywgODQxNiwgMCwgOTgzMDY1LCAwLCA0MzM4NCwgMTI2NjAsIDEyODY5MywgMTI4MjcwLCAwLCAKLSAgICA3NDg1MCwgNDEwNjksIDcwMTg1LCAxMjgxNTYsIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCA5ODM0ODksIAotICAgIDM5OTAsIDEyNTA1MCwgOTgzMjY0LCA2NjM2OCwgNTAxNywgNjQ5NTYsIDcwNzEsIDAsIDcwNDU3LCAxMDMwLCAxMTg4MDAsIAotICAgIDkyNTYzLCA5NTEzLCA0MTA1OSwgOTM1NywgNzQ5ODgsIDE3NzMsIDc3OTM5LCAxMjAzNTAsIDEyNDk2MSwgNjMzOSwgNzc0NSwgCi0gICAgOTg0NCwgMTI3MjIwLCA2NDY1MCwgOTQsIDE4ODAsIDc0NzY2LCAxMTM3MTksIDg5MDgsIDk4MzIyMiwgMTI4NzA3LCAKLSAgICA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgNjg3NjksIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzNiwgMCwgMTc1NywgCi0gICAgNjk2NCwgNDY5NiwgMCwgMTIwMzMzLCA2NDc4NSwgNzM5NCwgMzY0MSwgNTQxOSwgMTI4MDU1LCAwLCAxMjc4ODMsIAotICAgIDE5NDcwNywgMTIwMzQ0LCA0Mzk4OCwgNzA0MjMsIDg2MTAsIDQzMDYyLCA3NTkyLCA4NTYsIDc0Mjk5LCA5MzYsIDEzMjg5LCAKLSAgICA2OTg5NCwgNDMxNzEsIDE0NTksIDEyODIyNCwgNjUyNDMsIDc4NjM4LCAxOTk1MywgMTI5MDc4LCAxNTA0LCA3MDA2NCwgMCwgCi0gICAgMTI5MTMsIDc0MjA2LCA3NTI5LCAxMjg3NDUsIDEyNzg2OCwgNzAyMDMsIDEyMDc4MiwgNDExMywgMTIwOTI5LCAyMzcyLCAKLSAgICAzMzYsIDAsIDc1MDksIDEyMTUyLCAxOTQ4ODUsIDY4MiwgNzY1NSwgNDE1MDUsIDAsIDY0NzQzLCAxMDU5MywgMTcwMywgCi0gICAgOTI0NjcsIDc3OTExLCA4MDMzLCA2OTk1MywgMCwgOTgxMCwgMTI3MjY5LCAxMjAwMTMsIDEyOTcwLCAwLCA0MjM1MSwgCi0gICAgMTAxMDksIDc0NTM1LCA3NDA2OCwgNzQ5MjEsIDAsIDkyNjkwLCAwLCA2NTA2OCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAKLSAgICAwLCA3Mzg4NywgMTExMzAsIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgMTExNDUsIDEyMTExNywgNzQyMzksIAotICAgIDQxMzE3LCA5MjYxNCwgMjA5MSwgNzQ1NDUsIDIwOTAsIDY5OTEyLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMTExNjEsIAotICAgIDEwNDk4LCAyMDgzLCA3Nzg4OCwgNzExOTYsIDAsIDExOTIzNiwgNjM0LCAxMjQ5NzAsIDkyMjkwLCAxOTQ4ODYsIDY5Nzc5LCAKLSAgICA0MTY1LCA4NzQ2LCAxOTUwNDgsIDk2NTQsIDEyODU2LCA2OTI0LCA3NjYwLCA3MDY2LCAxOTQ2OTMsIDcwNDE1LCAxMjgxMzUsIAotICAgIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDQxMDM5LCAxMjc0ODMsIDEyNDk2NSwgNjgwLCAyMzAyLCAxMjgyMDAsIAotICAgIDExODEsIDcwNTYsIDMxNzQsIDY3MjQ4LCAwLCA5MjY2OCwgNjU2NjUsIDEyNzM3NSwgMTEzNzc2LCA2OTIwLCAwLCA5MjI5NSwgCi0gICAgMTI2NjA2LCAxMTg5NjUsIDY4MzE4LCA2NDY0NCwgMTI2OTgxLCA3NDExOSwgNjgyMzgsIDQxMDI4LCA3NDAyNSwgNjIzMSwgCisgICAgMTAwNTcyLCAxMjc4MTIsIDYzNzksIDkxNzgwNCwgMTExNDIsIDEyNzE3NiwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAxMTkxMjEsIAorICAgIDk4MzkzMSwgOTIzODksIDc0MDcyLCA1NTI2OSwgMCwgMTI0OTYyLCA5ODMzMjksIDIwMzMsIDc4NTc3LCA3ODU3NiwgCisgICAgODI5NjUsIDU1MjU0LCA3NzQwLCA4Mjk3NCwgNzA0NDgsIDEyNjU1NSwgNzM5NjQsIDY4NTA1LCA5Mzk4OCwgNjc2MTIsIAorICAgIDY1Njc0LCAxMjc1NTIsIDk0MTEwLCA0MTY4OSwgOTgzNDEwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgCisgICAgMTI4NTIwLCAxMjgwNjYsIDEyODAzMSwgODU2MSwgNDU3MywgMTIxMzc1LCA1MzI2LCA5MjU3MSwgMTIwNjA1LCA3MjMwLCAKKyAgICA4MjU3LCAxMjE0MTUsIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgNDM1MTEsIDc2MjgsIAorICAgIDY1MDkyLCA3MzkwMywgNjQzNTUsIDExMzQyLCAxMDA1NzksIDk4MzczMiwgMTk0OTM5LCAxMjgyMjYsIDEyNzAwMSwgCisgICAgMTI3OTQ0LCAxMTgxMCwgMTMxNjQsIDEwNzIzLCA5NjcsIDEwMDQ4MSwgMTIwOTg1LCAxMTk0NiwgMTI5MDMyLCAzMjU3LCAKKyAgICAxMjcyMDksIDEyMzA3LCAxODQ1LCAxMDA1NzgsIDQzNTI2LCA5ODMwODQsIDExOTU3MywgMTg4NiwgNDIzNDIsIDEwMDg5LCAKKyAgICA4NzAsIDc2NDgsIDM0OTksIDc2NjIsIDc2NTIsIDg3NiwgODcxLCA4NzcsIDc2NjUsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIAorICAgIDQ1NjMsIDk4MzI0OSwgOTE3ODkyLCA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDc2NTYsIDg2OCwgODczLCA3NjQyLCAKKyAgICA3NjU5LCA4NjksIDg3NCwgNzY0NCwgMTIwNjc0LCA4NzUsIDc5MCwgMTIxMDgyLCAxMTg5MzgsIDEwMDQyNywgOTMwMzgsIAorICAgIDY2MTc3LCAxOTQ2MjMsIDU0MjksIDE5NTA1NSwgNjYxODAsIDEyNjQ4MCwgNjYxODEsIDY4NDUyLCAxOTQ5NjYsIDExOTI0NCwgCisgICAgNDIwNjcsIDExOTk5MywgNTQzMywgMTA2NTcsIDc5MTEsIDEyNTExOSwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIAorICAgIDU0MjUsIDQ5NzcsIDk5OTksIDUzMTcsIDU0MjMsIDQ2MTEsIDEyNTA5NCwgNjc2MzcsIDEyNzI4NiwgOTY3OSwgNzQxMjIsIAorICAgIDkyOTc4LCA5MTc1ODUsIDAsIDY2MTk0LCA0NDE4LCA2NjE4NCwgNDYyOCwgNDI0NSwgMTE5NjQ4LCAwLCAxMjcyNjMsIAorICAgIDE4NTEsIDEyMDgyMywgODMzMjAsIDExOTA4LCAwLCA5MzYwLCAxMTg4OTcsIDEyMDg3NCwgNDI3NzYsIDY2MTg3LCAxMjgzNywgCisgICAgODgyOSwgNzcxMSwgMTExMTIsIDEyODc4NywgOTIzMjEsIDQzMzE4LCA5MjMwMiwgODgwOSwgNjk4ODEsIDEyODU2NCwgCisgICAgMTI1MjI5LCAxMjA2MDQsIDk4MzA1MiwgOTgzMjM4LCA5ODM0MzMsIDEyODQxMiwgMCwgMTIwNTc3LCA3NDI3LCA5OTU4LCAKKyAgICA0NTg4LCA0MzY4MCwgMCwgNzQ0ODQsIDEyNzE4NSwgMjQzMywgMTI4NjAyLCA2OTk3MywgMzM1MiwgNzQzNjMsIDEyNjYwMSwgCisgICAgMTIxMzQxLCA3OTMsIDc0NDA0LCAxMTE5NywgMzA1LCA1NjcsIDY3NjYyLCA4NDIsIDY5OTc5LCA4MjA4LCA2ODMwOCwgCisgICAgNDE2OTUsIDE2NDcsIDExODg3NywgNzA4NDEsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAxMjgzNzcsIDEyNzk4OSwgCisgICAgNDEzNzYsIDExOTk3OCwgNjg3NDIsIDEyMDU5NCwgNzQwODYsIDY4Nzc3LCA3MDE3OSwgOTE3NjEzLCAxMDk3MywgNjYzNTksIAorICAgIDEzNzIsIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCAxOTUwMDYsIDE5NDY1NCwgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIAorICAgIDc4MjIxLCA3Mjc0NiwgNjc3MjMsIDI4NDAsIDEyODg0MiwgNzg4MjksIDk4MzkzOSwgNjY4ODcsIDMyNDUsIDkwNjgsIAorICAgIDY4MTk0LCA2NDcyNSwgMTIxMTYxLCAxMjgwNTEsIDEyOTkxLCAxMjQ5NzEsIDI2NTEsIDY4MDE2LCA5ODMyNjcsIDcyODczLCAKKyAgICAxMDA2MDEsIDcwODM1LCAwLCA3MDg0NCwgNDM2NDgsIDEyMDgxMiwgMTk0ODU0LCA0MzMyMiwgOTI2NjIsIDAsIDAsIAorICAgIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIDc0ODk0LCAxMTE1MiwgCisgICAgOTI5MDMsIDY1NjEwLCAyMzkxLCA5MjkwOCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgNjEwLCA0MjgwMCwgCisgICAgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAxMjgzNDAsIAorICAgIDEwMDc0MSwgNjQ3NDksIDY3ODUwLCAyMTA3LCAxMjgyOTAsIDc0MjQ5LCA0NjA1LCAxMjgxNzQsIDEwMDc0NSwgNDMzNzIsIAorICAgIDY1OTQ1LCA3MjcxMCwgMTExMTMsIDExOTU5MCwgMCwgMTAwNzQ5LCA3MDQ5NSwgOTg3LCA2OTI3LCAxMTU3MiwgNDIyNjEsIAorICAgIDExNDY0LCAzMzY1LCA5OTcxLCA3MDY3MywgMTI3OTQyLCAxMjgyOTcsIDAsIDc4NzYyLCAxMjc4NjcsIDEyMTM2OCwgCisgICAgMTEzMzQsIDQzMzI2LCAxMjYwOSwgMTE1MTksIDExNTAzLCA1NTMwLCA1MjEwLCAwLCA0NjI3LCAxMTkyNjksIDUyMDgsIAorICAgIDExMzY5MCwgNzAwOTAsIDEwMzMyLCAyNDI0LCA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgNDIxNDIsIAorICAgIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIDQyMzE1LCAxMDUxNiwgNzc5MCwgNTUyOCwgMTI4ODM4LCA0MjE0MCwgCisgICAgMTIwMjgxLCAwLCAxOTUwODgsIDQzNTQ1LCA5ODg3LCAxMjE0NzcsIDQwMDAsIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgCisgICAgMzIwNiwgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIDc0OTEwLCAxMjg2NjYsIDIxMSwgMjUwOSwgOTI5MDQsIDcwODIyLCAKKyAgICA2ODY3MiwgMzIyMCwgNDIyMzUsIDc4NDgwLCAxMDY5MCwgODk1MSwgNTIxNCwgNDI0NzQsIDgxMTgsIDk4MzgzMywgNzA0OCwgCisgICAgNDU5MCwgMTI3MjU4LCA1ODUyLCA5ODM4MTksIDc4NDgyLCAxMjcyNTksIDE3MDgsIDAsIDc4NDgxLCAyNjIzLCAxMTk0MywgCisgICAgMTIxMTQwLCA2OTIyNiwgNjk5NzQsIDQ2OTgsIDY2NTA5LCAxMDY2LCAxMTk5MjEsIDQ3MDEsIDEwMDU2NCwgMTIwMjg1LCAKKyAgICA3MDQ0NywgOTQxMTEsIDgyNjcsIDAsIDE0MjEsIDY2NDI2LCA3NTE2LCAxMjA0MDYsIDI2MjUsIDEyODI0MiwgODAzNCwgCisgICAgNzQzMDksIDE5NDcxNSwgMzYzMSwgMTA5NTUsIDc4NTAsIDEyMDI5MywgODQxNiwgMTI3MDMyLCAxMjA2MTMsIDk4MzU3OCwgCisgICAgNDMzODQsIDEyNjYwLCAxMjI4ODMsIDEyODI3MCwgMCwgNzQ4NTAsIDQxMDY5LCA3MDE4NSwgMTI4MTU2LCAxMjA5OSwgCisgICAgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgNzk5MCwgOTgzNDg5LCAzOTkwLCAxMjUwNTAsIDk4MzI2NCwgNjYzNjgsIDUwMTcsIAorICAgIDY0OTU2LCA3MDcxLCAwLCA3MDQ1NywgMTAzMCwgMTE4ODAwLCA5MjU2MywgOTUxMywgNDEwNTksIDkzNTcsIDcwNjc1LCAKKyAgICAxNzczLCA3NzkzOSwgMTIwMzUwLCAxMjQ5NjEsIDYzMzksIDc3NDUsIDk4NDQsIDEyNzIyMCwgNjQ2NTAsIDk0LCAxODgwLCAKKyAgICA3NDc2NiwgMTEzNzE5LCA4OTA4LCA5ODMyMjIsIDEyODIzNiwgNjU5MTMsIDc4NDcwLCAxMDc1MiwgMTMwMDMsIDY4NzY5LCAKKyAgICAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzYsIDEwMDY2OSwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMTIwMzMzLCA2NDc4NSwgCisgICAgNzM5NCwgMzY0MSwgNTQxOSwgMTI4MDU1LCAwLCAxMjc4ODMsIDE5NDcwNywgMTIwMzQ0LCA0Mzk4OCwgNzA0MjMsIDg2MTAsIAorICAgIDQzMDYyLCA3NTkyLCA4NTYsIDc0Mjk5LCA5MzYsIDEzMjg5LCA2OTg5NCwgNDMxNzEsIDE0NTksIDEyODIyNCwgNjUyNDMsIAorICAgIDc4NjM4LCAxOTk1MywgMTI5MDc4LCAxNTA0LCA3MDA2NCwgNzI0MjEsIDEyOTEzLCA3MDcyMiwgNzUyOSwgMTIwNjA4LCAKKyAgICAxMjc4NjgsIDcwMjAzLCAxMjA3ODIsIDQxMTMsIDEyMDkyOSwgMjM3MiwgMzM2LCAwLCA3NTA5LCAxMjE1MiwgMTk0ODg1LCAKKyAgICA2ODIsIDc2NTUsIDQxNTA1LCA5ODM3NTMsIDY0NzQzLCAxMDU5MywgMTcwMywgOTI0NjcsIDc3OTExLCA4MDMzLCA2OTk1MywgCisgICAgMCwgOTgxMCwgMTI3MjY5LCAxMjAwMTMsIDEyOTcwLCA5ODMyMDUsIDQyMzUxLCAxMDEwOSwgNzQ1MzUsIDc0MDY4LCAKKyAgICA3NDkyMSwgMCwgOTI2OTAsIDEyMjg4NiwgNjUwNjgsIDc0MjkxLCAxOTY1LCA3MDY5LCA0MzMxMiwgMCwgNzM4ODcsIAorICAgIDExMTMwLCAyMDg3LCA2NDM3MCwgNjMxNCwgNDE3MTQsIDg1MDEsIDExMTQ1LCAxMjExMTcsIDc0MjM5LCA0MTMxNywgCisgICAgOTI2MTQsIDIwOTEsIDc0NTQ1LCAyMDkwLCA2OTkxMiwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDExMTYxLCAxMDQ5OCwgCisgICAgMjA4MywgNzc4ODgsIDcxMTk2LCAwLCAxMTkyMzYsIDYzNCwgMTI0OTcwLCA5MjI5MCwgMTk0ODg2LCA2OTc3OSwgNDE2NSwgCisgICAgODc0NiwgMTk1MDQ4LCA5NjU0LCAxMjg1NiwgNjkyNCwgNzY2MCwgNzA2NiwgMTI3MDUxLCA3MDQxNSwgMTI4MTM1LCAKKyAgICA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCAyMjMzLCAxMjc0ODMsIDEyNDk2NSwgNjgwLCAyMzAyLCAxMjgyMDAsIDExODEsIAorICAgIDcwNTYsIDMxNzQsIDY3MjQ4LCA5ODMxNzEsIDkyNjY4LCA2NTY2NSwgMTAwNTk0LCAxMTM3NzYsIDY5MjAsIDAsIDkyMjk1LCAKKyAgICA3MDY3MiwgMTE4OTY1LCA2ODMxOCwgNjQ2NDQsIDEyNjk4MSwgNzQxMTksIDY4MjM4LCA0MTAyOCwgNzQwMjUsIDYyMzEsIAogICAgIDI2MTMsIDY1MzAyLCA0MDk4OSwgNjgyMzksIDY4MjMwLCA2ODIzNCwgNDI3NjAsIDAsIDQzODk2LCAwLCA0MDk4NywgNDY2NywgCi0gICAgMCwgNzE4NDMsIDg4MjgsIDc3OTk1LCA3MDUwNiwgMTI0NiwgNDc0NiwgMTI4NTAxLCAxMjg1MDgsIDExMDIxLCA0NzQ5LCAKLSAgICA5MjY3NSwgOTE3ODgyLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAyNDIsIDAsIDE1NjYsIDgyMTcsIDEyNzIxMCwgNjQ2NTMsIAotICAgIDc4Mzg2LCA3NDYxNywgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgOTUxLCA3NDU2OCwgOTI5ODMsIDk4Mzg2NywgNzYwNCwgCi0gICAgOTgzMjkyLCA0MDA5LCA3MDI3NywgNzE4NDQsIDEyMDU2MiwgMCwgOTgzNzIwLCA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIAotICAgIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCA4MzAwOSwgNzAwMjQsIDE2NDYsIDc3ODkwLCA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgCi0gICAgMTI5MDQ3LCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgCi0gICAgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkzNSwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDc4Mjk5LCAKLSAgICAzMzk5LCA5ODUxLCA5MTc2MDksIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAxMjc3NjcsIDAsIDcxODQyLCAKLSAgICA3MDE3OCwgOTIzMTQsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY2ODY3LCA3NDksIDQyMzY2LCA3MDQ0NCwgNTM4NSwgNzA3OTEsIAotICAgIDcyNDM1LCA3MDEyNywgODMzNzcsIDU5ODksIDEyODkwNSwgNzQ2MzYsIDEyMDg0OCwgMCwgNDE2ODUsIDY5MjIzLCAwLCAKLSAgICA5NzY5LCA0MTY4NCwgMTk0NzM3LCA1MTksIDExOTIzMSwgMTE3NDAsIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDcwNDE2LCAKLSAgICA0MTI5NywgMCwgMzY2NiwgNzA0MjAsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIAotICAgIDY1NTgsIDEyNzE0OSwgMTI4MDY0LCA2OTc2NSwgOTI3NzUsIDI1MiwgMCwgNDEzMDIsIDExOTM1MCwgODM1MDQsIDExODgzOSwgCi0gICAgNjk3NjMsIDY4NzYyLCAxMTcyOSwgODcxOSwgOTA2MCwgMTI5MDkxLCAxMjAxMzksIDEwNzYxLCAwLCAwLCAxMjk0MTAsIAotICAgIDExODc5MiwgMTE3MzQsIDkzMDExLCAxMTczMCwgMTEzNzQxLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIAotICAgIDExNzI4LCA0MzU3MiwgOTgzMTM5LCAwLCA3NzY0LCA2ODc0MSwgMTEwOTQsIDEyMDgyNSwgMCwgNDM0ODksIDQyODIsIAotICAgIDgyOTgsIDAsIDAsIDcwMzI4LCAxOTQ5ODYsIDcwMzI0LCA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgNjU1ODcsIAotICAgIDcwNDQyLCA2NTY3MCwgOTgzOTYzLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDk4Mzg2OSwgNzAzMjYsIDAsIAotICAgIDcxNDYwLCAxMjA3NjQsIDcwMzIyLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MTIsIDM2NDcsIAotICAgIDEyMDIwNywgMjYwMiwgMTI4MzQxLCAxMjExMDMsIDEyNTA0MywgNDExMzUsIDgzNDk4LCAwLCAxMjEzMjUsIDY0NjMxLCAKLSAgICAxNzIsIDQ5NzEsIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgMTI2NDc2LCA3NzkyNiwgNzU5NywgMTA1MjgsIAotICAgIDc1MDU0LCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCA5ODM5NzEsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAKKyAgICAxMjEyMTIsIDcxODQzLCA4ODI4LCA3Nzk5NSwgNzA1MDYsIDEyNDYsIDQ3NDYsIDEyODUwMSwgMTI4NTA4LCAyMjY5LCAKKyAgICA0NzQ5LCA5MjY3NSwgOTE3ODgyLCA5MjEsIDQ3NDQsIDAsIDEyNzAyLCAyNDIsIDEwMDU5NSwgMTU2NiwgODIxNywgCisgICAgMTI3MjEwLCA2NDY1MywgNzgzODYsIDc0NjE3LCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCA5NTEsIDc0NTY4LCAKKyAgICA5Mjk4MywgOTgzODY3LCA3NjA0LCAxMjgyNjYsIDQwMDksIDcwMjc3LCA3MTg0NCwgMTIwMTE1LCAxMjY2NDIsIDk0MDc0LCAKKyAgICA2NDg2MCwgMTAwNTUxLCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCA4MzAwOSwgNzAwMjQsIDE2NDYsIAorICAgIDc3ODkwLCA2NDUzNCwgNzM5OTUsIDEyMDcwNSwgMTI5MDQ3LCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIAorICAgIDkwOTksIDQxMDcsIDM0NDEsIDExOTg5NCwgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkzNSwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgCisgICAgMTE4ODQwLCA5ODM3MjgsIDkxNzU2MiwgNzgyOTksIDMzOTksIDk4NTEsIDkxNzYwOSwgMTE5MDksIDkwNTksIDAsIDc2ODcsIAorICAgIDEyNzA1MiwgNjc4OSwgMTI3NzY3LCAwLCA3MTg0MiwgNzAxNzgsIDkyMzE0LCAwLCAxNzc3LCA5MTUxLCAxMTM3LCA2Njg2NywgCisgICAgNzQ5LCA0MjM2NiwgNzA0NDQsIDUzODUsIDcwNzkxLCA3MjQzNSwgNzAxMjcsIDgzMzc3LCA1OTg5LCAxMjg5MDUsIDc0NjM2LCAKKyAgICAxMjA4NDgsIDAsIDQxNjg1LCA2OTIyMywgMCwgOTc2OSwgNDE2ODQsIDE5NDczNywgNTE5LCAxMTkyMzEsIDExNzQwLCAKKyAgICA1NzY2LCAwLCAwLCAyNjAwLCA4ODQ4LCA3MDQxNiwgNDEyOTcsIDAsIDM2NjYsIDcwNDIwLCA0MTMwMCwgNzQ0NjgsIAorICAgIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAxMjcxNDksIDEyODA2NCwgNjk3NjUsIDkyNzc1LCAKKyAgICAyNTIsIDk4MzE0MiwgNDEzMDIsIDEwMDM3MSwgODM1MDQsIDExODgzOSwgNjk3NjMsIDY4NzYyLCAxMTcyOSwgODcxOSwgCisgICAgOTA2MCwgMTI1MDc3LCAxMjAxMzksIDEwNzYxLCAwLCAwLCAxMjk0MTAsIDExODc5MiwgMTE3MzQsIDkzMDExLCAxMTczMCwgCisgICAgMTEzNzQxLCA5NTkzLCA1NzU3LCAyNDAzLCA2NDgwOCwgNTUyNzUsIDAsIDExNzI4LCA0MzU3MiwgOTgzMTM5LCAxMjk0MTIsIAorICAgIDc3NjQsIDY4NzQxLCAxMTA5NCwgMTIwODI1LCA5ODM3NTgsIDQzNDg5LCA0MjgyLCA4Mjk4LCAwLCAwLCA3MDMyOCwgCisgICAgMTEzNjkxLCA3MDMyNCwgNjQ0NDksIDAsIDEyNjY1MCwgNjM4NTQsIDg0NTYsIDY1NTg3LCA3MDQ0MiwgNjU2NzAsIAorICAgIDk4MzE4MCwgNzgyNTAsIDAsIDc3NzQsIDEwNjA3LCA5NzkyLCAxMDExMDIsIDcwMzI2LCAwLCA3MTQ2MCwgMTIwNzY0LCAKKyAgICA3MDMyMiwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCA3MDA1MywgOTgzNzEyLCAzNjQ3LCA4MzQzNywgMjYwMiwgCisgICAgMTI4MzQxLCAxMDA3MTcsIDEyNTA0MywgNDExMzUsIDgzNDk4LCAxMjA4MTUsIDEyMTMyNSwgNjQ2MzEsIDE3MiwgNDk3MSwgCisgICAgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDc3OTI2LCA3NTk3LCAxMDUyOCwgNzUwNTQsIAorICAgIDEyMTQwNSwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgOTgzOTcxLCA0MzM2NiwgNDMzNjMsIDkwNjIsIDExOTI1MiwgCiAgICAgMTIxNDQxLCA5MjUyOCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCA4MzMzMCwgMTEzNzA3LCAxOTQ3MTIsIDEwOTAwLCAKICAgICA0MTUzMSwgMTI2MywgMzcyMCwgMTIwNDgsIDc0MDc1LCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIAotICAgIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDgzMDIyLCA4NTI1LCAxMjczNDcsIDM1MjQsIDkxNzU2NSwgODgzMSwgMTI3MzQ5LCAKLSAgICA5MjU2NCwgMzA3NSwgNjc4NjcsIDk0MDUzLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDcwNDQwLCAwLCA1ODQ1LCAxMjEzMTAsIDAsIAotICAgIDEyMTE4NSwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA5ODM2OTMsIDQzMjgzLCA1NTUxLCAwLCAxMjA3MzUsIDk4MzIwMSwgCi0gICAgNjM0MCwgMTE4ODU1LCAxMjEwMjcsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIAotICAgIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCA3Mzc3NCwgMTA5MTMsIDgzMTE2LCA5ODMwODYsIDg2NjYsIAotICAgIDY3NSwgNDI0OTMsIDEyMTI5NywgNDM1NzEsIDAsIDYyMTksIDEyODU4NCwgOTk4MCwgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgCi0gICAgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDk4MzI0MywgMTI3MTEsIDMxODEsIDY2MjEyLCA3NDI4OSwgNjg0NzIsIAotICAgIDQyODU3LCA4MjYyLCA5MzAzNiwgMCwgNzQ0NzYsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgNzIzNCwgNzQwNDcsIDk4MzA4OCwgCi0gICAgMTI4MTM3LCA0Mzc0NCwgMCwgMCwgNzM4NDYsIDI5MzQsIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCAKLSAgICA5ODMxMjYsIDc0NDYxLCAzMjE4LCAxMjA0NzEsIDc0MjkwLCAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAKLSAgICAxMTkzMiwgNzM3MjgsIDMyMTQsIDExMjEyLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIAotICAgIDc4NzI3LCA2NTY2NywgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIAotICAgIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAxMjkwNDMsIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCAKLSAgICAwLCAwLCA4MzE3OCwgMTIwNzM3LCAxMjA5NTMsIDE5NDc3MywgOTgzMzIyLCAzNzgsIDI2MTAsIDk4MzMyOCwgNjUwNzksIAotICAgIDk4MzMyNywgNjU2OTUsIDEyMTIyMCwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgNjgyMzYsIDMyMDksIDEyMDQ3NywgMTIwODM1LCAKLSAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgNzE0ODYsIDkyMjI1LCA5ODM5NTMsIDk4MzM0MCwgMCwgNDM4NDAsIDAsIDAsIAotICAgIDUyMzMsIDk4MzMzNywgNjQ3OTIsIDcxMjMzLCAxMjgyMjMsIDEyNjYzMywgMTI4OTE5LCA3MDYwLCA5ODQ3LCAxMjAxNDQsIAotICAgIDE2ODUsIDU5NSwgODMxOTcsIDcwNDI4LCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgCi0gICAgNjU0MSwgNDM4MzcsIDcxNDY1LCAxMjEwMzAsIDMyNDMsIDkwMTQsIDU2MDYsIDEyNTAzMiwgNTM4LCA2NDYyMCwgNTYwMiwgCi0gICAgODQ2NywgNzQzOTEsIDY1NDcsIDcxNDY2LCA4MjAzLCA2NjQyMCwgNjgyNDEsIDg0NTgsIDY1MjExLCA4NDk1LCA5MjMxMSwgCi0gICAgMTI3NDgxLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIAotICAgIDEyMDkxMywgNzA2NSwgNzQxNTUsIDQzNDYsIDExMzY5MCwgNzM3OTgsIDUwNCwgMTI1MTE1LCA5MjQxNCwgODk4MiwgMCwgCi0gICAgMTIxNDcxLCAxMTkxNzAsIDc4MiwgMTI5MDI4LCAxMDg4MywgMTI4NDQ2LCAxOTQ4NTIsIDczMiwgMzczNywgMTIxMTg4LCAKLSAgICAxNTQ4LCA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDk4MzM3MiwgMTE3ODcsIAotICAgIDM3NDUsIDkxNzg2OCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEyNzkxMywgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgCi0gICAgMTc4MywgNzQxNiwgNTcyOCwgMCwgMTI4NDU3LCAxMTk1NTQsIDExOTE4LCA2NjU2NywgNTcyNCwgMTI3OTY1LCA1NzI3LCAKLSAgICA3ODUyMSwgMTIxMTIxLCAwLCA3NjQsIDAsIDEyMTAxMSwgNDM1MzEsIDExMzY3MCwgOTAzMywgMTI3MTgyLCA0MjUzMiwgCi0gICAgNjIyMywgMTEwNDIsIDEyMDc0OSwgMTE0MjMsIDc0ODUyLCAxMTk4NjEsIDY4MzAzLCA0MzQ2NSwgMCwgNzQ3NjcsIDY1NTksIAotICAgIDY0NTU3LCA3MTM0OCwgOTI2NDksIDEyMDY0OCwgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIDEyODcxMSwgNDMzNzcsIAotICAgIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIDY0NzQwLCAxMTM2ODksIDc3MzksIDc0NTQzLCAKLSAgICA5MTc3NjUsIDY3MzkzLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMTI4Mzk2LCA3MDA1OCwgNDExNDQsIDcxODk5LCA5MjQzOCwgCi0gICAgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDEyODM5NCwgMTk0Nzc2LCA4ODIwLCAzOTQ3LCAwLCA2NTI5OSwgCi0gICAgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCAxMjUwMDIsIDE5NDkzMiwgMTEzNjkxLCA3Njg4LCA5MTc3ODYsIAotICAgIDc2ODYsIDgyODgsIDExODE1LCA5ODMxODgsIDEyMTQxMSwgOTgzMzg0LCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIAotICAgIDQyMjgxLCA3ODU0NCwgNzQwMjQsIDEyMjkzLCA5ODM2ODAsIDY0MzU3LCAxMTc5NCwgNDIwODIsIDEyODEyNSwgMTczNywgCi0gICAgODk4NywgNDIwODEsIDAsIDcyMDUsIDgzMjY0LCA5MzM1LCAxMjg1MCwgMTE5MTczLCA2NTUzLCA3MDU1LCA2ODA0MSwgCi0gICAgODI3NywgMCwgNjc3NTEsIDU0NzUsIDc0Nzk1LCA2NzgwLCA2NTA2NywgMCwgMTMyNywgMTE2MCwgNDIwODQsIDkzOTYzLCAKLSAgICA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDk4Mzg2NSwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIAotICAgIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIDY4MzQxLCAxMzA3NiwgMzEzNSwgCi0gICAgOTgzMjg5LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAxMTk1ODAsIDEwMTgzLCA3NDYzNSwgCi0gICAgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAxMjEyNTcsIDgzMjY4LCA2NTIzNiwgOTE3ODc4LCA2MTYzLCAKLSAgICA5ODM1NTgsIDExMzcyOCwgMTI3MzE0LCAxMjgxMzgsIDk4MzIzNiwgODYwMywgMTI3OTU5LCAxMTk4NjYsIDMzMDYsIAotICAgIDEwODc2LCA0MzM5MiwgODMxODcsIDEyNzkzMSwgNTc1MSwgMTI3NTE3LCA2MjIyLCAwLCAxMjc0NjYsIDEyMDg2LCA3NDAzLCAKLSAgICAxNjAwLCA2NDMwOSwgNjQ5MzksIDAsIDY0NzgzLCA5MjY1OCwgMTEzMTAsIDAsIDg4ODIsIDExOTkwMywgMCwgMjU3MCwgCi0gICAgNzAyMSwgNzQ5MDIsIDE5NDc0MiwgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDkyNzUwLCAwLCA5ODMyMTEsIDUwMDIsIAotICAgIDk4MzU2MywgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIDQzNTg1LCAxMTM3MjAsIDY1NTEsIDk4MzM3NSwgMTI4MjI5LCAKLSAgICA5ODMyNzQsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAxMjc5NTgsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjgzNTAsIAotICAgIDEyODY2MSwgMTk0ODkwLCA5ODMzNzcsIDQxMjc5LCAwLCAwLCA5NDEwOCwgMTEwODEsIDQzNjE1LCAwLCAwLCAxMjc4ODgsIAotICAgIDk4MzYxMiwgMTI3MjcsIDQzODk1LCAwLCA3ODM5NywgOTQ3NSwgNzExMiwgNjUxMDUsIDAsIDk2MzMsIDEwODg2LCA0MzU5MiwgCi0gICAgNzgzMSwgOTgzODI5LCAxOTQ1NzEsIDAsIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAKLSAgICAyNTk2LCA0MzU4NCwgMTIwOTgzLCAxMzExMywgMCwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA3NDA2NywgNjg2NzMsIAotICAgIDQxNTc0LCA3ODMzNywgNzA0OTgsIDQyOTAwLCA2Mzc2LCAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCA3Mzg3OSwgCi0gICAgMTI4MjIwLCAxMjA3NTIsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIDY1MjksIDcwNjMsIDk4MzE3OSwgMzc1MSwgOTEyMCwgCi0gICAgOTgzNDg3LCA2ODAzOCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIDgxMzcsIDk0MDk4LCAKLSAgICA2Nzc1MiwgNzA4NTAsIDExOTA1NywgMjQ1LCAxMjEwNjYsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIDYxMzYsIAotICAgIDY4MzA0LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMTE4OTYzLCA0MzIsIDM1OTUsIDEyNzAxNSwgCi0gICAgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgOTgzMTM2LCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMTI4MTg0LCAwLCAwLCAKLSAgICA3Nzg5NCwgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAKLSAgICA3MTEyMywgNjQ2NDAsIDY5OTk5LCA5NDEwOSwgMTIwODc3LCA3NDEzNywgNzAwMzUsIDEwMDYzLCAxMjY1MiwgMTIxOTksIAotICAgIDc0NjIyLCA0MzQ5MiwgMjU2NiwgMTE5NzEsIDk4MzczNywgMTIwODgyLCAxMDY1LCAwLCAxMjcwMDUsIDQzNDAwLCAyNTc2LCAKLSAgICA2NjY5NiwgNjY4MTksIDgzMzMzLCA0MzYwNCwgMTI3ODkxLCAwLCAzMjAxLCA1MTQsIDc0NTAyLCA3MDAzMiwgMjkyMSwgCi0gICAgNDMyMTUsIDY0NDkzLCA1NzcyLCAxMjk2OCwgNzAwNTUsIDE5NDk0NCwgNzAzMTAsIDQzMzk4LCAyNTgwLCAxOTUwMjUsIAotICAgIDQxMzQxLCA0MTIyMywgNjU2NCwgMTQ2MywgNDEzNDIsIDAsIDUyOTMsIDcwMDIwLCAxMjc4NzAsIDM3MzMsIDExMzQ2LCAwLCAKLSAgICAxMjA1NCwgMCwgNzQwOTgsIDQyODI3LCAxOTUwNzQsIDEzMDkxLCAwLCAxMjg1ODAsIDAsIDkxNzkxNSwgMTI3OTYxLCAKLSAgICAxMjcwMjUsIDEyODMzNCwgNzQ4MjEsIDcxMTA0LCA2NjI5NSwgNjgwMzcsIDAsIDEyMTExNiwgMTMwOTAsIDY2NjQzLCAwLCAKLSAgICAxMjcwLCAxMTMyLCA0MjM2MCwgMCwgNzQwOTYsIDY2NjU1LCA0MjU2OSwgMTI3ODI0LCA2Njg5OCwgNjQ3NjEsIDAsIAotICAgIDQxMDIxLCA4NTEwLCA0MjQzMiwgMTE5ODk4LCAxMTkzMTcsIDE5NDc4MiwgMTk0NjQxLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCAKLSAgICA5OTE1LCA5ODMwODMsIDk4MzIxOCwgNzA2MSwgNDEzMzYsIDM4NTQsIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCAKLSAgICA0MjMxOSwgMTMwODIsIDc4MTE0LCA3MDY3LCA2ODIyMSwgMTI3ODgxLCAxMjczODMsIDEyNzE3MSwgMCwgMTIwNzQ1LCAKLSAgICA3NDIwOSwgOTAyOSwgNDM1NDMsIDcwODM2LCAyMzUzLCA2MzA4LCAxMjkxNTQsIDc0NzkyLCAyNjExLCAxMTkxODYsIAotICAgIDY2ODgxLCAxMjcyNDEsIDY1MDYzLCA0MzY2NCwgOTIzMTksIDY2NjI3LCA5MjkxMiwgNDQ4NCwgODUwOSwgMTE4OTc2LCAKLSAgICAxMTA2NiwgNjUyMzMsIDEyNzE0NiwgNDEyMjQsIDQxMDE3LCAxMjgxNDksIDM3NDcsIDEwNTIyLCAwLCAxOTQ4NzYsIDE2OTEsIAotICAgIDQxMjI2LCA3NDk2MiwgMTIxMDcsIDcxMDAsIDEwOTA1LCA2NTAxMCwgMTIxMjk5LCA2OTcsIDY2MDE4LCA5Mjg0LCA0MjQ0LCAKLSAgICA5ODMzNDMsIDkzMDU4LCA3NDc4MSwgMTMxMjEsIDEyMDAzNiwgMCwgMTIwMTAsIDEyODU3MywgMTI4MjIxLCAxMjA5NDksIAotICAgIDEyMTAzMiwgMCwgMTI3MTkzLCA2NTgxNiwgNjgxMTEsIDExODk1MCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIAotICAgIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgCi0gICAgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIDAsIDAsIDY4MzY1LCAxMjgyNTgsIDE5NTAyNywgMCwgMCwgCi0gICAgMTMxMjIsIDAsIDE5MSwgNzAwNjAsIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIAotICAgIDQxNTc4LCA5ODMxMDQsIDQxNTc3LCAwLCAxMDAwMiwgMTIxMzY0LCA2NTMzLCA3MzgwMiwgNDE1NzAsIDkxNzkxOSwgNjgzLCAKLSAgICAzOTYsIDQxNTgwLCA2ODE0NiwgOTgzMDY3LCAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCAKLSAgICA3ODE1NCwgOTgzMzk3LCA0NzQzLCA2OTk4NywgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIAotICAgIDEyODY2NSwgMzczOSwgNjI2MywgNzEzNDksIDEyODgxMSwgMzk2NCwgNjU5MiwgMTIxNDI0LCA2ODI4OCwgNjYwNDAsIAorICAgIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIDgzMDIyLCA4NTI1LCAxMjczNDcsIDM1MjQsIDEyODcxNywgODgzMSwgMTI3MzQ5LCAKKyAgICA5MjU2NCwgMzA3NSwgNjc4NjcsIDk0MDUzLCAwLCA2NjM2MiwgMCwgNjQzNTMsIDcwNDQwLCA5ODM5NzAsIDU4NDUsIAorICAgIDEyMTMxMCwgMTI3OTM3LCAxMjExODUsIDI1ODEsIDgyMDAsIDY1MTE0LCA2ODQ2MCwgNzQ4NTgsIDQzMjgzLCA1NTUxLCAwLCAKKyAgICAxMjA3MzUsIDEyOTQyMywgNjM0MCwgMTE4ODU1LCAxMDA2MDIsIDc4MTM0LCA4NjgwLCA3MjA0LCA3MDA2NSwgMjU4OCwgCisgICAgMjkxNCwgNzAxMSwgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTAwODUyLCA3Mzc3NCwgMTA5MTMsIAorICAgIDgzMTE2LCA5ODMwODYsIDg2NjYsIDY3NSwgNDI0OTMsIDEyMTI5NywgNDM1NzEsIDAsIDYyMTksIDEyODU4NCwgOTk4MCwgCisgICAgNDEyMzIsIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDk4MzI0MywgMTI3MTEsIAorICAgIDMxODEsIDY2MjEyLCA3NDI4OSwgNjg0NzIsIDQyODU3LCA4MjYyLCA5MzAzNiwgOTgzNjc2LCA3NDQ3NiwgMCwgNDIzNDcsIAorICAgIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgMTI4NzY4LCAxMjgxMzcsIDQzNzQ0LCAxMDA2MTAsIDAsIDczODQ2LCAyOTM0LCAKKyAgICAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgOTgzMTEwLCA3NDQ2MSwgMzIxOCwgMTAxMDAyLCA3NDI5MCwgCisgICAgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCA4NTY5LCAxMTQwNCwgMTE5MzIsIDczNzI4LCAzMjE0LCAxMTIxMiwgMTIwNDY4LCAKKyAgICAxMjEyOCwgMzIwNywgNjU0ODYsIDc4NzI5LCAxOTAxLCA3ODcyNywgNjU2NjcsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgNjgwMDMsIAorICAgIDc4NzM3LCA3ODczNiwgNzg3MzUsIDQzMzgzLCA2OTk0MCwgNjU0NTksIDI2MDYsIDc4NzMwLCA3Mzg5NywgMTI5MDQzLCAKKyAgICAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgOTgzODUzLCA5ODM4OTMsIDgzMTc4LCAxMDA3MjgsIDEyMDk1MywgCisgICAgMTk0NzczLCAxOTQ2MDEsIDM3OCwgMjYxMCwgOTgzMzI4LCA2NTA3OSwgMTk0ODc5LCA2NTY5NSwgMTIxMjIwLCAzNywgCisgICAgNzA2OCwgMCwgMTIwNDgwLCA2ODIzNiwgMzIwOSwgMTIwNDc3LCAxMjA4MzUsIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTAwNjIxLCAKKyAgICA3MTQ4NiwgOTIyMjUsIDEyODQ5NCwgOTgzMzQwLCAxMDA5MDUsIDQzODQwLCAwLCAxMDEwOTYsIDUyMzMsIDEwMDYyNCwgCisgICAgNjQ3OTIsIDcxMjMzLCAxMjgyMjMsIDEwMDYyNiwgMTI4OTE5LCA3MDYwLCA5ODQ3LCAxMjAxNDQsIDE2ODUsIDU5NSwgCisgICAgODMxOTcsIDcwNDI4LCAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgOTI5NDgsIDEwMDA0LCAxMjY5OTcsIDAsIDY1NDEsIAorICAgIDQzODM3LCA3MTQ2NSwgMTIxMDMwLCAzMjQzLCA5MDE0LCA1NjA2LCAxMTk1ODUsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIAorICAgIDc0MzkxLCA2NTQ3LCA3MTQ2NiwgODIwMywgNjY0MjAsIDY4MjQxLCA4NDU4LCA2NTIxMSwgODQ5NSwgOTIzMTEsIDEyNzQ4MSwgCisgICAgOTE3NTUyLCA3NzksIDc4MzE0LCA2NDM2NywgMjQ2NSwgNjk5MDEsIDgxOTMsIDU1Mjc5LCA5NzMwLCA5MjgwLCAxMjA5MTMsIAorICAgIDcwNjUsIDc0MTU1LCA0MzQ2LCAxMDA1NzAsIDczNzk4LCA1MDQsIDEyNTExNSwgOTI0MTQsIDg5ODIsIDAsIDEyMTQ3MSwgCisgICAgMTE5MTcwLCA3ODIsIDEyOTAyOCwgMTA4ODMsIDEyODQ0NiwgMTk0ODUyLCA3MzIsIDM3MzcsIDEyMTE4OCwgMTU0OCwgCisgICAgNjg2NTAsIDkyNTA3LCAxODMyLCA1NjA0LCA1NzM1LCA0MTE0MSwgMTE5MDIwLCA0Mzc2LCA5ODMzNzIsIDExNzg3LCAzNzQ1LCAKKyAgICA5MTc4NjgsIDExOTg4NSwgNDI4ODgsIDY1NzEyLCAxMDA2MDYsIDM4NjksIDExOTM3LCA1NzI1LCAxMDA2MDgsIDE3ODMsIAorICAgIDc0MTYsIDU3MjgsIDEyODU2OSwgMTI4NDU3LCAxMTk1NTQsIDExOTE4LCA2NjU2NywgNTcyNCwgMTI3OTY1LCA1NzI3LCAKKyAgICA3ODUyMSwgMTIxMTIxLCAxMjg0ODgsIDc2NCwgMCwgMTIxMDExLCA0MzUzMSwgMTEzNjcwLCA5MDMzLCAxMjcxODIsIAorICAgIDQyNTMyLCA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAxMTQyMywgNzQ4NTIsIDExOTg2MSwgNjgzMDMsIDQzNDY1LCAxOTQ4MTksIAorICAgIDcyODU0LCA2NTU5LCA2NDU1NywgNzEzNDgsIDkyNjQ5LCA2Njc2MywgNDMwMTksIDQzNDc3LCAxMDIzOCwgNzQ0OTEsIAorICAgIDEyODcxMSwgNDMzNzcsIDkyMjgyLCA3MTM0NiwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIDY0NzQwLCAxMTM2ODksIAorICAgIDc3MzksIDc0NTQzLCA5MTc3NjUsIDY3MzkzLCAxMDA1ODgsIDYxMzIsIDAsIDYzNzY1LCAxMDA1OTAsIDcwMDU4LCA0MTE0NCwgCisgICAgNzE4OTksIDkyNDM4LCA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgNzA2ODIsIDEwMDU2MSwgODgyMCwgCisgICAgMzk0NywgMTIyODk4LCA2NTI5OSwgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgMTk0NjAzLCAxMDA5MzEsIDE5NDkzMiwgCisgICAgNzgzOTMsIDc2ODgsIDkxNzc4NiwgNzY4NiwgODI4OCwgMTE4MTUsIDk4MzE4OCwgMTAwOTM0LCA5ODMzODQsIDE1NDMsIAorICAgIDM3MTMsIDQxMjIxLCAxMjQyMywgNDIyODEsIDc4NTQ0LCA3NDAyNCwgMTIyOTMsIDE5NDU4OSwgNjQzNTcsIDExNzk0LCAKKyAgICA0MjA4MiwgNzA3NDQsIDE3MzcsIDg5ODcsIDQyMDgxLCAwLCA3MjA1LCA4MzI2NCwgOTMzNSwgMTI4NTAsIDExOTE3MywgCisgICAgMjI3MiwgNzA1NSwgNjgwNDEsIDgyNzcsIDAsIDY3NzUxLCA1NDc1LCA3NDc5NSwgNjc4MCwgNjUwNjcsIDAsIDEzMjcsIAorICAgIDExNjAsIDQyMDg0LCA5Mzk2MywgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMTI5MDcwLCAxMDA2MTcsIDY4MTc2LCAKKyAgICA1ODYzLCAzMTM3LCAwLCA0MTQ3LCA5ODMxNzAsIDQxMjE2LCA3ODQ0LCAyNjE2LCA3MDE5NywgNjg0NjEsIDY1MjM0LCAKKyAgICA2ODM0MSwgMTMwNzYsIDMxMzUsIDk4MzI4OSwgNzgxNDMsIDExOTEzOSwgMzE0MiwgOTI0NTEsIDk0MDY4LCAxMDgxOSwgCisgICAgMTE5NTgwLCAxMDE4MywgNzQ2MzUsIDI2MDgsIDE0NzAsIDczOTY3LCA5NDAwOCwgNjIyNywgMTIxMjU3LCA4MzI2OCwgCisgICAgNjUyMzYsIDEyMDI1NiwgNjE2MywgMTI5Mjk3LCAxMTM3MjgsIDEyNzMxNCwgNzM4MjIsIDk4MzIzNiwgODYwMywgMTI3OTU5LCAKKyAgICAxMTk4NjYsIDMzMDYsIDEwODc2LCA0MzM5MiwgODMxODcsIDEyNzkzMSwgNTc1MSwgMTI3NTE3LCA2MjIyLCAxMDA3MTYsIAorICAgIDEyNzQ2NiwgMTIwODYsIDc0MDMsIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgOTgzMzA3LCAKKyAgICA4ODgyLCAxMTk5MDMsIDc4NTE4LCAyNTcwLCA3MDIxLCA3NDkwMiwgMTI4ODgwLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgCisgICAgNjk3NCwgOTI3NTAsIDEyNzM5NiwgMTAwOTIzLCA1MDAyLCA5ODM1NjMsIDQxMjg2LCA2OTk0NiwgNzQ0NjUsIDcxMDc0LCAKKyAgICA0MzU4NSwgMTAwOTI3LCA2NTUxLCA5ODMzNzUsIDEyODIyOSwgOTgzMDQ3LCA0MTI4OSwgMTI1MTMwLCA3MTA4MCwgCisgICAgMTAwNTIxLCA4OTc3LCA2MDIsIDEyMDgxNCwgMTAwNjMwLCAxMjgzNTAsIDEyODY2MSwgMTk0ODkwLCA5ODMzNzcsIDQxMjc5LCAKKyAgICAwLCAwLCA5NDEwOCwgMTEwODEsIDQzNjE1LCAwLCAxMDEwMjIsIDEyNzg4OCwgMTk0OTk0LCAxMjcyNywgNDM4OTUsIDAsIAorICAgIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMTI3NTU2LCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDY2NzUxLCAKKyAgICAxOTQ1NzEsIDEyMjg4NSwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDk4Mzg5NSwgCisgICAgMjU5NiwgNDM1ODQsIDEyMDk4MywgMTMxMTMsIDk4MzczMSwgMTI3NzU3LCAyMzkzLCA3MDU4LCA5MDg3LCA0MTM2LCAKKyAgICA2ODY3MywgNDE1NzQsIDc4MzM3LCA3MDQ5OCwgNDI5MDAsIDYzNzYsIDAsIDE5NDkxMiwgMTI3ODIwLCAwLCA5ODU0LCAKKyAgICAxMDEwODgsIDY0Njk2LCA3Mzg3OSwgMTI4MjIwLCAxMjA3NTIsIDY5OTQsIDAsIDE3MjAsIDkxNzc5NywgMCwgMCwgNjUyOSwgCisgICAgNzA2MywgMTE4OTE3LCAzNzUxLCA5MTIwLCAxOTQ2MjgsIDY4MDM4LCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCAKKyAgICA2NTU3LCAxMjQzMCwgODEzNywgOTQwOTgsIDY3NzUyLCA3MDg1MCwgMTAwODMyLCAyNDUsIDEwMDgzMSwgMTE0NTYsIAorICAgIDQxMjMzLCA3MDcwLCA3MTI2NCwgOTQwNDYsIDYxMzYsIDY4MzA0LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgCisgICAgOTgwNCwgMTAwNjQyLCA0MzIsIDM1OTUsIDEwMDc4NCwgNjU0MzcsIDAsIDc0NDU1LCA0MjM5OSwgMTAwNjQ2LCAxMDA2NDEsIAorICAgIDEwMDY0OSwgOTgzOTQ5LCAxMDA2NDgsIDEyODE4NCwgMTAwNzg2LCAxOTQ1ODcsIDc3ODk0LCA4Nzk3LCA5ODM5NTYsIAorICAgIDkwNTIsIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAxMDA4NDUsIDQyMjg2LCA3MTEyMywgNjQ2NDAsIAorICAgIDY5OTk5LCA5NDEwOSwgMTIwODc3LCA3NDEzNywgNzAwMzUsIDEwMDYzLCAxMjY1MiwgMTIxOTksIDc0NjIyLCA0MzQ5MiwgCisgICAgMjU2NiwgMTE5NzEsIDk4MzczNywgMTIwODgyLCAxMDY1LCAxMjA3NjgsIDEyNzAwNSwgNDM0MDAsIDI1NzYsIDY2Njk2LCAKKyAgICA2NjgxOSwgODMzMzMsIDQzNjA0LCAxMjc4OTEsIDAsIDMyMDEsIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCA0MzIxNSwgCisgICAgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3MDMxMCwgNDMzOTgsIDI1ODAsIDEyODQ5NywgNDEzNDEsIAorICAgIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMTk1MDkyLCA1MjkzLCA3MDAyMCwgMTI3ODcwLCAzNzMzLCAxMTM0NiwgMCwgCisgICAgMTIwNTQsIDEwMDgyNCwgNzQwOTgsIDQyODI3LCAxOTUwNzQsIDEzMDkxLCAwLCAxMjg1ODAsIDEwMDgyMSwgMTAwODI4LCAKKyAgICAxMjc5NjEsIDEyNzAyNSwgMTI4MzM0LCA3NDgyMSwgNzExMDQsIDY2Mjk1LCA2ODAzNywgOTgzOTA1LCAxMjExMTYsIAorICAgIDEzMDkwLCA2NjY0MywgMTI4ODIwLCAxMjcwLCAxMTMyLCA0MjM2MCwgMTk0OTY4LCA2Njc1MiwgNjY2NTUsIDQyNTY5LCAKKyAgICAxMjA1NzEsIDY2ODk4LCA2NDc2MSwgMTAwNzc2LCA0MTAyMSwgODUxMCwgNDI0MzIsIDEwMDc3OCwgMTE5MzE3LCAxOTQ3ODIsIAorICAgIDE5NDY0MSwgNjQ0OTYsIDc0MTA5LCA3MDAzMCwgOTkxNSwgNjk3OTgsIDk4MzIxOCwgNzA2MSwgNDEzMzYsIDM4NTQsIAorICAgIDY5NzAwLCAxMzE0MSwgNjg0MTMsIDQzNDAxLCA0MjMxOSwgMTMwODIsIDc4MTE0LCA3MDY3LCA2ODIyMSwgMTI3ODgxLCAKKyAgICAxMjczODMsIDEyNzE3MSwgMTIxMjA3LCAxMDA3NjUsIDc0MjA5LCA5MDI5LCA0MzU0MywgNzA4MzYsIDIzNTMsIDYzMDgsIAorICAgIDcwNjYyLCA3NDc5MiwgMjYxMSwgMTAwNzY4LCA2Njg4MSwgMTI3MjQxLCA2NTA2MywgNDM2NjQsIDkyMzE5LCA2NjYyNywgCisgICAgOTI5MTIsIDQ0ODQsIDg1MDksIDExODk3NiwgMTEwNjYsIDY1MjMzLCAxMjcxNDYsIDQxMjI0LCA0MTAxNywgMTIwNTE0LCAKKyAgICAzNzQ3LCAxMDUyMiwgOTE3ODExLCAxMTk5NzAsIDE2OTEsIDQxMjI2LCA3NDk2MiwgMTIxMDcsIDcxMDAsIDEwOTA1LCAKKyAgICA2NTAxMCwgNzQ2MDIsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDk4MzM0MywgOTMwNTgsIDc0NzgxLCAxMzEyMSwgCisgICAgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDEyMDk0OSwgMTIxMDMyLCA5ODMxMzIsIDEyNzE5MywgNjU4MTYsIAorICAgIDY4MTExLCAxMTg5NTAsIDEyNzkzMywgNjU2NjgsIDkyMjU3LCA2NjE4LCAzNTYyLCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCAKKyAgICA3ODExMCwgNzEyMywgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAKKyAgICAwLCA5ODMxNTAsIDY4MzY1LCAxMjgyNTgsIDE5NTAyNiwgOTgzNDAyLCAwLCAxMzEyMiwgMTI3NTQ2LCAxOTEsIDcwMDYwLCAKKyAgICA4NTg1LCA4MDAwLCA2NDQxMSwgMTIwNjUyLCA0Mjg4OSwgNjQ4NTAsIDQxMDcyLCA0MTU3OCwgOTgzMTA0LCA0MTU3NywgCisgICAgOTgzMzcxLCAxMDAwMiwgMTAwNzU0LCA2NTMzLCA3MzgwMiwgNDE1NzAsIDEwMDc1NiwgNjgzLCAzOTYsIDQxNTgwLCAKKyAgICA2ODE0NiwgMTI3ODE1LCAxMjkwMSwgNDMwNTgsIDEwMDc2MCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIDc4MTU0LCAKKyAgICAxMjcwODIsIDQ3NDMsIDY5OTg3LCAxMDA3NjEsIDc0MDQwLCA3NDEwOCwgODc0MywgMTcyNCwgMTQzMywgMTAwNzUxLCAKKyAgICAxMjg2NjUsIDM3MzksIDYyNjMsIDcxMzQ5LCAxMjg4MTEsIDM5NjQsIDY1OTIsIDEyMDcwMSwgNjUxMDgsIDY2MDQwLCAKICAgICA4Mjk0NiwgNDI1NjgsIDY5ODA2LCAxMjgxMTMsIDE3NzgsIDM5NTYsIDEyODQ0MywgNDIwNzAsIDY1NjMsIDQzMDc1LCAKLSAgICA5MDE4LCA5NDAwNiwgOTgzMzk4LCAxMjA2NywgNDEzMTIsIDkyNzYzLCA1NTQ3LCA4OTE2LCAxMjA4NjksIDEyODk1MCwgCisgICAgOTAxOCwgOTQwMDYsIDEyMTQyNCwgMTIwNjcsIDQxMzEyLCA5Mjc2MSwgNTU0NywgODkxNiwgMTIwODY5LCAxMjg5NTAsIAogICAgIDgxNzUsIDk0MDM0LCAyODQsIDgxMDgsIDkzNCwgMTI4MDM5LCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIAotICAgIDExODgyMiwgMTc1MCwgMTI4Njg2LCA0Mzk0LCA2ODM2OCwgMTgwNywgOTgzODg4LCA5MjI5OCwgMCwgNTg4OSwgMTI4Nzk1LCAKLSAgICA3MTgwLCAwLCA2NzEyNywgMCwgNjcxMjYsIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAKLSAgICAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAxMjgxMDksIDAsIDkxNzYzMCwgMzg1NSwgMTk0ODEwLCAxMTc2NywgCi0gICAgMTI3OTk4LCAwLCA3NDI5NSwgMTk0NjUxLCAwLCA5MjQxNiwgMzk3NSwgNjcxMjUsIDc0MDg3LCA3NDk4OSwgMTI2NzIsIAotICAgIDM3OTgsIDI3MDMsIDE5NDYwOCwgMCwgMjEwOSwgOTc3NCwgMTI3NSwgMCwgOTgzNzUwLCA0MTA5NSwgMzk2MiwgNjgyNDIsIAotICAgIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCA3NDUzNiwgMTI3MTg5LCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDEyMDAzMywgCi0gICAgOTgzMDU3LCA0MTgwMywgMTI3OTk5LCA0MTg0NiwgMTI3MjQ0LCA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAKLSAgICAzMjI0LCAxMTM3MzQsIDkyNzQxLCA2NjI4MSwgNDI1MzEsIDc0NTkzLCAxNTEwLCAxMjgzODQsIDgyNTYsIDAsIDExMzkzLCAKLSAgICAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCA3MjQxNiwgMTIwODExLCA3MjQxNSwgMTkxMCwgODY3MSwgNzgzNzQsIAotICAgIDQyODMsIDY4ODQyLCAxMjA4MjQsIDY4MzYxLCA3ODMxOCwgMjY1NCwgNzg5MywgMTk1MDA2LCAxMjgyNDEsIDAsIDcyMzk0LCAKLSAgICA2NTEwNiwgNDI3NjEsIDEyODU3LCA0NTgxLCA4NDExLCA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIAotICAgIDc0NDc1LCA5ODM0NDQsIDAsIDE3MzMsIDQzOTIsIDI1NjgsIDEwNzg2LCA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDAsIAotICAgIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAwLCA3MTg1LCA3OTY1LCAxMTkxNDQsIDEyODQ0NywgOTIzNDcsIDE5NTA2NiwgCi0gICAgNDEzNTAsIDkxMjksIDk4MzQ0OCwgMCwgMjI5NCwgNjQ1MDEsIDY4MDM0LCA4MzMyNiwgMTA0ODEsIDAsIDcwMDIyLCA3MTcxLCAKLSAgICAwLCAzNDAsIDcxMTA1LCA5Mzk3MiwgNjczNjAsIDAsIDkyMjAwLCAxMjgyNDksIDEyNDk3OSwgNjc2NCwgMTI3NDg3LCAKLSAgICAxMjgzOTMsIDAsIDkyNTA5LCAxMjg5NjIsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDExOTA3MywgMzIxMCwgMCwgCi0gICAgMCwgMTE4Nzk1LCA4Mjk1OCwgOTQxMDEsIDEyNzQ4NCwgOTE3NjE5LCAxMTkxNDksIDAsIDEwMDQzLCAxMjEyMTUsIDExODYsIAorICAgIDExODgyMiwgMTc1MCwgMTI4Njg2LCA0Mzk0LCA2ODM2OCwgMTgwNywgNzg1NDUsIDkyMjk4LCAxMDEwODIsIDU4ODksIAorICAgIDEyODc5NSwgNzE4MCwgMTAxMDgzLCA2NzEyNywgMTAxMDkxLCA2NzEyNiwgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCAKKyAgICA3ODkxLCA0MjI0MywgNDIxNjAsIDI1ODMsIDQ1MTIsIDExOTM2MCwgNjUyMzAsIDEyODEwOSwgOTgzNDY3LCA5MTc2MzAsIAorICAgIDM4NTUsIDE5NDgxMCwgMTE3NjcsIDEyNzk5OCwgOTgzNTg5LCA3NDI5NSwgMTk0NTc3LCAxMDA3OTcsIDkyNDE2LCAzOTc1LCAKKyAgICA2NzEyNSwgNzQwODcsIDc0OTg5LCAxMjY3MiwgMzc5OCwgMjcwMywgMTAwNzkzLCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAKKyAgICAxOTQ5NjQsIDk4Mzc1MCwgNDEwOTUsIDM5NjIsIDY4MjQyLCAyOTMyLCA0MTEwMSwgMzk1NCwgNjQ1NywgNDUxMywgNzQ1MzYsIAorICAgIDEwMDk0NywgNzM5OTQsIDczOTkyLCAxNDY4LCAxMjAwMzMsIDk4MzA1NywgNDE4MDMsIDEyNzk5OSwgNDE4NDYsIDEyNzI0NCwgCisgICAgNTUyMzgsIDc2MzMsIDQxODQ5LCA2ODM4NSwgNDMyMCwgMzIyNCwgMTAwNzU1LCA5Mjc0MSwgNjYyODEsIDQyNTMxLCAKKyAgICA3NDU5MywgMTUxMCwgMTI4Mzg0LCA4MjU2LCA5ODMwNDMsIDExMzkzLCAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCAKKyAgICA3MjQxNiwgMTIwODExLCA3MjQxNSwgMTkxMCwgODY3MSwgNzgzNzQsIDQyODMsIDY4ODQyLCA3Mjc4NywgNjgzNjEsIAorICAgIDc4MzE4LCAyNjU0LCA3ODkzLCAxMjkxNTEsIDEyODI0MSwgMTAwODAyLCA3MjM5NCwgNjUxMDYsIDQyNzYxLCAxMjg1NywgCisgICAgNDU4MSwgODQxMSwgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCA3NDQ3NSwgOTgzMTQzLCAwLCAxNzMzLCAKKyAgICA0MzkyLCAyNTY4LCAxMDc4NiwgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAxMjg2NDQsIDczOTYsIDcxMTYsIDAsIDY5Nzg4LCAKKyAgICAxMDA3OTAsIDcxODUsIDc5NjUsIDExOTE0NCwgMTI4NDQ3LCA5MjM0NywgMTk1MDY2LCA0MTM1MCwgOTEyOSwgOTgzNDQ4LCAKKyAgICA5ODM2MTksIDIyOTQsIDY0NTAxLCA2ODAzNCwgODMzMjYsIDEwNDgxLCAwLCA3MDAyMiwgNzE3MSwgMCwgMzQwLCA3MTEwNSwgCisgICAgOTM5NzIsIDY3MzYwLCAxOTQ5NDIsIDkyMjAwLCAxMjgyNDksIDEyNDk3OSwgNjc2NCwgMTIwODA0LCAxMjgzOTMsIDAsIAorICAgIDkyNTA5LCAxMjg5NjIsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDExOTA3MywgMzIxMCwgMCwgMTAwNjMyLCAKKyAgICAxMTg3OTUsIDgyOTU4LCA5NDEwMSwgMTI3NDg0LCA5MTc2MTksIDExOTE0OSwgNzM5MjYsIDEwMDQzLCAxMjEyMTUsIDExODYsIAogICAgIDQxNTcxLCA2OTk5LCA2MTcsIDk0NjQsIDEyNTEyMywgMzY3NSwgNTIwNywgNjUwNjIsIDUyMTMsIDc0NjE2LCAyNjE3LCAKLSAgICA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAxMjEyMDksIDAsIDU1OTYsIDU1NDUsIDcyODgsIAotICAgIDI1ODYsIDY0ODg3LCAxMTk4MjYsIDUyMTcsIDcxMzM2LCAxMjg2ODcsIDkxNzYxNCwgMTIxMDM4LCA2NDI5MywgNjgwOTgsIAotICAgIDI2MzUsIDkyNzYwLCA4MzEzNywgOTgzODQ2LCAwLCA5Mjc0MiwgNzgzNSwgNzAwNDAsIDEyMDcwNywgMTk0OTg4LCA5MjI4NSwgCi0gICAgNjQ1NTgsIDEyNzEyMiwgMTIxNDI1LCA2NzA4MywgNjcwODUsIDcwMDk5LCA3MTExOCwgNTc4NCwgOTgzMTAyLCAxOTUwNTAsIAotICAgIDk4MzgxMiwgNzAwMzMsIDQwMTEsIDE5NDU2NSwgNjgxMDEsIDEyNDk3OCwgNzg2NCwgNDI1NCwgNjUwOTUsIDk4MzQ5OCwgCi0gICAgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAKLSAgICAxMjkwNTQsIDEyNzEwMywgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NiwgNzUwNDAsIDk4MzQ4NCwgCi0gICAgNjc0MDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgNjg3NzUsIDY2Mjc0LCA5ODM0OTAsIDc2MzEsIAotICAgIDU0ODgsIDcxMjgsIDEyMDUzMiwgMCwgNTQ5MSwgMTE4Nzk3LCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIAotICAgIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIDYzMDAsIDEyNzEyMSwgNzEyMiwgOTgzMDkwLCA0MzkwLCA0NTQsIAotICAgIDQxMzk3LCAwLCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIDAsIDY1OTAxLCAyMzk0LCAyNTc1LCAKLSAgICAxMTkxODQsIDM3NDYsIDExMDE2LCA2NTc1MiwgOTI3NTcsIDAsIDQzNDIzLCAxMjg2ODMsIDExOTg5LCAxMTg4ODksIAotICAgIDEyNzc5MSwgMTI3OTk1LCA3ODI5NiwgMCwgODI0OSwgMTI4MTcyLCAxMTEwOSwgNzg1MzEsIDY2NDAsIDc0ODA2LCAyNTk4LCAKLSAgICA1MTMsIDEyNzExOCwgNjU4NiwgODY1NiwgMTI5MzAxLCA2OTc5MiwgNjUwMDgsIDE5NDU5NywgNzExMTEsIDc4MzgzLCAKLSAgICAxOTQ3OTUsIDEyNzQ3NCwgOTI1MTUsIDY4NDc1LCA5Mzk3MywgMTk0NTg0LCA2Mzc5OSwgNzg2MzcsIDEyNjQ3LCA5MTc2MDYsIAotICAgIDEyODA0MywgNjk4OTMsIDEwMzYsIDY4MDkwLCA5MjQxOSwgMTcyMywgNjgyMTUsIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgCi0gICAgMTIwNzIyLCAxMDcwNSwgNzM4NzYsIDE5NTA1NCwgNzQ0ODYsIDk4MzQ2OSwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAKLSAgICAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNDM5MzYsIDQzOTM4LCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIAotICAgIDQyNTc0LCAxMzI4NSwgNDM5NjcsIDExOTA3LCA0MzkyOCwgNTY5MCwgOTIyNTUsIDUxMTYsIDAsIDQzMTgxLCAxMzA5NSwgCi0gICAgNzc5MjUsIDQzOTI2LCA2NDQ5OCwgMCwgOTUwNiwgNjk3OCwgNzAxNzYsIDc0OTMxLCAwLCAxMTM3NDMsIDc4Mzc5LCAKLSAgICA0MzkzNCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDcxMDU1LCAxMjA2MjEsIDAsIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIAotICAgIDc4Mzc4LCAxMTk2MDAsIDUyMjMsIDEzMDQsIDAsIDgzNTI2LCA1MjI2LCAxMjYwMiwgOTQwNDQsIDU4ODAsIDkzMjksIAotICAgIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgNjkyMjksIDk2NzQsIDU2OTUsIAotICAgIDQxNzExLCA2NDYyNywgMTk5MDksIDcxMDc3LCA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgNjgxMzgsIDk4MzQ0MywgCi0gICAgNDI4MTYsIDk0MDM2LCA2NTE0MCwgNjgwMjgsIDgzMDkzLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIDQxMTc1LCAKLSAgICA4MzA5NCwgOTgzNDQ3LCA2ODgyNywgNTI5NiwgOTgzNDQ2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAwLCA3NDg1OCwgCi0gICAgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgNjUxMiwgMCwgNzg1NiwgODY5MCwgOTgzNjg2LCA3MDg3MCwgMTIxMjIsIAotICAgIDExOTYwMiwgNDM5NzYsIDE5NDkzNywgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgNjg4MDksIDUxMzgsIDk4MzYzNywgCi0gICAgNzE5MjIsIDExODg2OSwgMCwgNDU0MCwgNDExODEsIDkxNzkyMCwgNjIwMCwgMCwgNTEzNCwgNjk5ODAsIDMyMiwgNDY0MywgCi0gICAgNTEzMiwgMTIxMTg0LCA2Mzg5LCAxMjA5OTgsIDUxNDMsIDgzMjA1LCA4NzkwLCAxMjA5MTEsIDEyMDEyMSwgMTI4Njk1LCAKLSAgICA3MTE2OCwgODg2OSwgNjk5MTYsIDkzMDY5LCA0MjA2MCwgNzEzMjYsIDk2NDgsIDgzMTA5LCA3MTE3MCwgMTAyNzAsIAotICAgIDEwMjg2LCAxMDMxOCwgMTAzODIsIDQzNTI5LCA2NjQ3NywgMTk0ODAwLCAxMjg1MzQsIDc0MTcwLCAwLCAzMjM0LCA0MzgzNSwgCi0gICAgOTE3ODE4LCA3MDExMSwgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDY4MjMxLCA3NDQ4OSwgOTY5NSwgCi0gICAgNzI0MzksIDUyMDEsIDc1MDYxLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDc2NjEsIDAsIAorICAgIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIDEyMTIwOSwgMTk0NzcwLCA1NTk2LCA1NTQ1LCAKKyAgICA3Mjg4LCAyNTg2LCA2NDg4NywgMTAwODk2LCA1MjE3LCA3MTMzNiwgMTI4Njg3LCAxMDA4OTgsIDEyMTAzOCwgNjQyOTMsIAorICAgIDY4MDk4LCAyNjM1LCA5Mjc2MCwgODMxMzcsIDk4Mzg0NiwgMCwgOTI3NDIsIDc4MzUsIDcwMDQwLCAxMjA3MDcsIDE5NDk1MCwgCisgICAgOTIyODUsIDY0NTU4LCAxMjcxMjIsIDEyMTQyNSwgNjcwODMsIDY3MDg1LCA3MDA5OSwgNzExMTgsIDU3ODQsIDk4MzEwMiwgCisgICAgMTAwODU0LCA5ODM4MTIsIDcwMDMzLCA0MDExLCAxOTQ1NjUsIDY4MTAxLCAxMDA4NTksIDc4NjQsIDQyNTQsIDY1MDk1LCAKKyAgICAxMjAwMTcsIDU2MDAsIDM5MDMsIDEwMDg5MiwgMTA0NDcsIDU1OTgsIDEyMDcsIDEyMDUyMSwgNjY2ODksIDM1MDEsIAorICAgIDQyNTgyLCA0MzYwMCwgMTI5MDU0LCAxMDA5MTMsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCA5MzIxLCA5ODM0ODYsIAorICAgIDc1MDQwLCA5MTc5NzIsIDY3NDAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDY4Nzc1LCA2NjI3NCwgCisgICAgOTIxNjUsIDc2MzEsIDU0ODgsIDcxMjgsIDEyMDUzMiwgMTIwMzM5LCA1NDkxLCAxMTg3OTcsIDg5MzcsIDQzMDQ0LCAyNjA0LCAKKyAgICA3NDE4NywgNTQ5MCwgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMTI3MTIxLCA3MTIyLCA5ODMwOTAsIAorICAgIDQzOTAsIDQ1NCwgNDEzOTcsIDk4MzA1NSwgOTg3NSwgNzU5MywgMTk0NzkxLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAKKyAgICAxMjUwNjIsIDY1OTAxLCAyMzk0LCAyNTc1LCAxMTkxODQsIDM3NDYsIDExMDE2LCA2NTc1MiwgOTI3NTcsIDAsIDQzNDIzLCAKKyAgICAxMjg2ODMsIDExOTg5LCAxMTg4ODksIDEyNzc5MSwgMTI3OTk1LCA3ODI5NiwgNjgyMjQsIDgyNDksIDIyMzIsIDExMTA5LCAKKyAgICA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIDUxMywgMTAwNzE0LCA2NTg2LCA4NjU2LCAxMjkzMDEsIDY5NzkyLCA2NTAwOCwgCisgICAgMTk0NTk3LCA3MTExMSwgNzgzODMsIDEyNzI1MiwgMTI3NDc0LCA2Njc1NSwgNjg0NzUsIDkzOTczLCA3Mjg1OSwgNjM3OTksIAorICAgIDc4NjM3LCAxMjY0NywgOTE3NjA2LCAxMjgwNDMsIDY5ODkzLCAxMDM2LCA2ODA5MCwgOTI0MTksIDE3MjMsIDY4MjE1LCAKKyAgICA3NDIxNywgMCwgNDE1NzksIDI0NDQsIDEyMDcyMiwgMTA3MDUsIDczODc2LCAxOTUwNTQsIDc0NDg2LCA5ODM0NjksIDc0MCwgCisgICAgMTE5MjIyLCAxMjAzMDUsIDE5NDk4NCwgMCwgNDIzOCwgMTEwNzEsIDk0NTksIDQzOTM2LCA0MzkzOCwgNzgxMzksIAorICAgIDE5NDk4NSwgODEyMSwgMTA0MzgsIDc0NDg3LCA0MjU3NCwgMTMyODUsIDQzOTY3LCAxMTkwNywgNDM5MjgsIDU2OTAsIAorICAgIDkyMjU1LCA1MTE2LCAxMjgwMTMsIDQzMTgxLCAxMzA5NSwgNzc5MjUsIDQzOTI2LCA2NDQ5OCwgMCwgOTUwNiwgNjk3OCwgCisgICAgNzAxNzYsIDc0OTMxLCAwLCAxMTM3NDMsIDc4Mzc5LCA0MzkzNCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDE5NDg3MCwgNzEwNTUsIAorICAgIDEyMDYyMSwgMCwgMTkyMCwgMTI5MzM5LCAxMDE3MywgODI3LCAxMjUyMzYsIDAsIDc4Mzc4LCAxMTk2MDAsIDUyMjMsIAorICAgIDEzMDQsIDAsIDgzNTI2LCA1MjI2LCAxMjYwMiwgOTQwNDQsIDU4ODAsIDkzMjksIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCAKKyAgICA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgNjkyMjksIDk2NzQsIDU2OTUsIDQxNzExLCA2NDYyNywgMTk5MDksIDcxMDc3LCAKKyAgICA3NDYwNCwgNTY5MSwgMjg3LCA4NjYsIDIzMywgNjgxMzgsIDk4MzQ0MywgNDI4MTYsIDk0MDM2LCA2NTE0MCwgNjgwMjgsIAorICAgIDgzMDkzLCA4ODMwLCA2NTY4LCA0MjMwMCwgMTA1MjQsIDQxMTc1LCA4MzA5NCwgOTgzNDQ3LCA2ODgyNywgNTI5NiwgCisgICAgOTgzNDQ2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAwLCA3Mjg0MiwgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgCisgICAgNjUxMiwgMCwgNzg1NiwgODY5MCwgOTgzNjg2LCA3MDg3MCwgMTIxMjIsIDExOTYwMiwgNDM5NzYsIDEyNTE5NCwgMTc4NSwgCisgICAgNjk5MjUsIDY4NjIyLCA2NTE1MywgNjg4MDksIDUxMzgsIDEyOTQyMCwgNzE5MjIsIDExODg2OSwgMTAwODgzLCA0NTQwLCAKKyAgICA0MTE4MSwgOTE3OTIwLCA2MjAwLCA4Mjk0OSwgNTEzNCwgNjk5ODAsIDMyMiwgNDY0MywgNTEzMiwgMTIxMTg0LCA2Mzg5LCAKKyAgICAxMjA5OTgsIDUxNDMsIDgzMjA1LCA4NzkwLCAxMjA5MTEsIDEyMDEyMSwgMTI4Njk1LCA3MTE2OCwgODg2OSwgNjk5MTYsIAorICAgIDkzMDY5LCA0MjA2MCwgNzEzMjYsIDk2NDgsIDgzMTA5LCA3MTE3MCwgMTAyNzAsIDEwMjg2LCAxMDMxOCwgMTAzODIsIAorICAgIDQzNTI5LCA2NjQ3NywgMTk0ODAwLCAxMjUyMzEsIDc0MTcwLCAwLCAzMjM0LCA0MzgzNSwgMTAwODg2LCA3MDExMSwgCisgICAgNDMxMzksIDExODgxNSwgMTI3MDg0LCAxMjA2MjcsIDg3NjcsIDY4MjMxLCA3NDQ4OSwgOTY5NSwgNzI0MzksIDUyMDEsIAorICAgIDc1MDYxLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDEyNzg2OSwgMTk0OTk5LCA2NTI2OCwgNzY2MSwgMTIxMzA4LCAKICAgICAxMjA5MDksIDExMDI3LCAxMjg1OTYsIDEwMDU5LCAxMDUxMSwgNDIwNzUsIDk3NjcsIDc4OSwgMTc0OSwgNzg4OTAsIAotICAgIDY3MTE1LCA5ODM2NzAsIDMyMCwgMCwgODY0NywgODMwNTQsIDMwNDksIDAsIDY0NzEsIDQyMDcxLCA0MzE1NiwgOTkyNSwgCi0gICAgMTI3MzU2LCAxMTg4OTQsIDY2NDc4LCA0OTYwLCA1NTQ5LCAxMjczNTksIDEyNzM0NiwgODQ4NSwgNDY3MSwgNTQxOCwgCisgICAgNjY3NjYsIDk4MzY3MCwgMzIwLCAwLCA4NjQ3LCA4MzA1NCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAKKyAgICAxMjczNTYsIDExODg5NCwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTAwOTk2LCA4NDg1LCA0NjcxLCA1NDE4LCAKICAgICAxMjczNTAsIDMzNTEsIDEyMDg5MiwgMTI3MzUxLCAxMDYxMCwgNTQxNCwgMzA2NCwgNjIxMiwgNDI4NiwgNTQyMSwgCiAgICAgMTI3MzQ0LCA5NTU0LCA2ODA1MSwgOTQwNDgsIDY2ODk2LCA2NjUzLCA4MzA0NCwgODMxMDIsIDY0NTEwLCA2MjEzLCAKLSAgICAxMjg4NSwgMCwgMTE5MDQ1LCA2NDcyMCwgOTE3ODczLCAxMjA3NTksIDczNzQxLCAxMjYwMywgNzEzMSwgMTExMDgsIDQ1NjYsIAotICAgIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMTI0OTM4LCAxMTkyNTksIDQyNTc2LCAwLCA1MjAwLCA5Mjk0NiwgCi0gICAgMTIxNDM1LCA5ODM4OTUsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDY2MjgyLCAzOTUsIDU0ODIsIDUxOTgsIDQzNDksIDEwMzkwLCAKLSAgICA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAxMjgzODMsIDQzMzA3LCA3MDI5NywgMTE4OTczLCAKLSAgICA3MDQ2NywgMTIxMzQsIDEyMTE2NywgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCA4MDkzLCAKLSAgICA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAxMjUwNzUsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIDEyNzMwOSwgCi0gICAgNTczOCwgMTIwMDg5LCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDgzMzc4LCA2ODExMiwgNzg3MiwgODU4MSwgCi0gICAgMCwgMTI2MCwgMzE0OSwgNTM1OSwgMTIwMTM0LCA3NDk1NSwgNzkxNCwgNTM1NywgNzExOTAsIDc0MzM5LCAyNjI0LCA1MzY0LCAKLSAgICA5ODM2MDgsIDExNDMxLCAxMjAwMzAsIDkxMDEsIDExMDU4LCA3ODI4OCwgNjcxMDcsIDc4MjkzLCA0MjI3MSwgNzgyODksIAotICAgIDQyOTE3LCA2NzExMSwgMTI5MTc5LCA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODI5MSwgNzgzODQsIDExODMyLCAKLSAgICA3ODM4MiwgNzgzODEsIDc4MzgwLCA2OTg2MSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIAotICAgIDc0NTgxLCA3ODA4NywgMCwgNzEyMDUsIDQxODg5LCA5MjQ1MywgMTI5MTQ0LCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIAotICAgIDg2MjIsIDEyNTAyNSwgMCwgNjg3NzIsIDEyMDU4OCwgNTAxMiwgNzE0NTMsIDQxMzYyLCA2OTg2MiwgNjg1MDcsIDExOTIxLCAKLSAgICAwLCAxMTc2OSwgNjg3ODIsIDY4NjA5LCA0MTM2NCwgMTIwOTQ3LCA3NDIyOCwgNDEzNTIsIDQxMzYxLCA5MTc5MDMsIAotICAgIDQxMzY2LCAwLCAzMzU2LCAxMTYxMSwgOTE3LCA2ODQyMiwgMTE5OTE1LCA3MTM0LCA4MTk5LCA3ODM4OSwgMTE5NjE4LCAKLSAgICA2NzcsIDExOTkxNiwgOTE3ODc2LCA3MTQ4MiwgMTI3MTY5LCA2ODc0NywgMCwgNjg3MzgsIDMzNDksIDc0MTI1LCA3MDIyLCAKLSAgICA4OTI3LCA0NzM5LCA5MjU5OSwgNTgwMiwgMTk0ODc0LCA4NjE1LCAwLCAxMjgwNTgsIDQ5MSwgNzQ0MDEsIDEwMTkwLCAKLSAgICA2ODc1NSwgNjU4MzcsIDY4ODAwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKLSAgICAxMDg1MiwgMCwgNDI2NDgsIDQ2MDYsIDY4NDQ4LCA5MDk1LCA3NzQxLCAxMjY4NCwgNDE4ODUsIDEwNDYsIDcxMjQsIAotICAgIDEyODYxMCwgNjg3NTMsIDU4MTUsIDUxNzEsIDY1NTM5LCA2ODYxMiwgNjkzMiwgNzQyNjcsIDQyMzk0LCA0MTg3OCwgCi0gICAgNzQ4NDksIDc0OTQ3LCA3MjQyNCwgNTE2OSwgMTE5MzUsIDAsIDAsIDMxNzUsIDEyMDgyMiwgMTUzNywgMTIwODA0LCA1MTc2LCAKLSAgICA4OTA1LCA0MTM2LCA0ODcxLCA3ODI4NywgMTIwNjYzLCA5ODMzLCAwLCAxMTM3MzAsIDExMjgsIDY1OTIwLCA5MTc4NzksIAotICAgIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIAotICAgIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIDQxMzg1LCA5ODM5MzgsIDQxMzg5LCAKLSAgICAxMjc5NjMsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIAotICAgIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgNzA4MTEsIDEwNjI3LCA0MTEzMCwgCi0gICAgNzEwNzksIDM5OTYsIDAsIDcxNDQyLCAxMjg5MTMsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgNDMzMiwgNjQ4MjUsIAotICAgIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgMTI3MjA2LCAxMjA4NSwgNjY5MDIsIDU3NCwgCi0gICAgMTI2NzA1LCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2NTkzMiwgNDEzMjIsIDQyMjExLCA1NDQyLCA0MTkwLCAKLSAgICA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNjg4MTcsIDc3ODM4LCA3NzA4LCA3NDc1OSwgMjIyOCwgCi0gICAgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMTIwMzc4LCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCA3Nzg0MywgNzc4MzksIAotICAgIDIwNjAsIDEyMTE5MywgNzExMSwgMTE3ODgsIDY1Mzc2LCA2ODEyOSwgMTA0MTUsIDc0MTAyLCA5ODM2MjUsIDIwNSwgCi0gICAgODMwNDAsIDEwMzUxLCA2NzE1MSwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIAotICAgIDc0OTY2LCA1NTAzLCA4MDIxLCAxMjgwMzUsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgNTUwNywgMTIwNDQsIAotICAgIDkyNjM2LCAwLCAxMDAyNiwgNTQ3MiwgNzEwOSwgMTE5MSwgMTMxMDYsIDU0NzAsIDEwMzI5LCA1NDc2LCA4OTkxLCA2NjMyMiwgCi0gICAgNjk3NzgsIDExMTMzLCA0Mjg3NCwgODU1MCwgNDI4NzYsIDU1OTIsIDI5MTksIDEyOTA1MiwgMjY3NSwgNTU5NSwgNzg0MTEsIAotICAgIDQzNzYyLCA0MzY3LCAxMjc5MTIsIDkxNzc4MiwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgNzQxNTAsIDcyOTEsIDU1OTAsIAotICAgIDQzNzYxLCAxMzA2NywgMTE4OTA5LCA3NTA2OSwgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgCi0gICAgNzEyMTcsIDc3ODUyLCA3MTIyNywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDY2OTA5LCAxMjg4NywgCi0gICAgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAKLSAgICAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDczOTcyLCAxNDQyLCAxMjkwODAsIDU4OTQsIDcwMDY5LCAKLSAgICAxMjg2NzIsIDQxMTcxLCA5MjUxMSwgNzAzNTgsIDEzMjMsIDEzMTYyLCAxMjA1OTksIDMzMzQsIDEyODcwNCwgOTI3MDksIAotICAgIDc3ODgxLCA2NjAyMiwgMCwgNjk3NzAsIDE2NTEsIDEyMDM2NCwgODg2MSwgMCwgMCwgMTE0MiwgOTgzMTEyLCA4MjcxLCAwLCAKLSAgICA5ODMwNTgsIDEyNjY0NSwgMTI5MDMsIDc4NDA2LCA0MDAyLCA0MzYyNiwgMTA0NDIsIDEwNjc2LCAzMzQ0LCAxMjg5MTAsIAotICAgIDE5NDc4NywgMTI5MjAsIDE5NDU2MCwgNzA0OTcsIDE5NDY4NywgNjY2NDIsIDEyNzcsIDY2ODc2LCA3ODcxLCA2NzEwNiwgCi0gICAgNzE0ODcsIDc4ODUzLCAxMjkwNjgsIDc4ODU0LCAxMjAzNjAsIDk4MzQ5MiwgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCAKLSAgICA0Mzg1NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDk4MzYyNywgNzg4NTYsIDc4NDQ4LCA3Nzg3OSwgNDk3MywgODc4NCwgCi0gICAgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDc3ODcxLCA0MjQ0MCwgNzEyMjUsIDQzMTE4LCAxMTk4NzUsIDQyMzY0LCAKLSAgICA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgOTI0MywgMjQ2NCwgNzQyNjMsIDYxMDgsIAotICAgIDMzNzIsIDAsIDYyNDcsIDQzMTE3LCA3MDM2NCwgNzEyMSwgNzQxNjYsIDEyNDk3MywgMTIwMzU1LCA5MjUzNywgMTk0ODQ2LCAKLSAgICAxMTk4NzcsIDE5NTAzNCwgNzAzNTcsIDExOTkyMiwgMCwgNjcxMTksIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgCi0gICAgMTE4OTk5LCA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAwLCA5ODMwOTEsIDk4Mzk2NSwgCi0gICAgOTgzNzU4LCAxMTYwMywgOTgzOTU0LCA3NTA3NCwgNjU4OSwgMTI4NTY0LCA4Mjk3NSwgMTIwOTkzLCA2NzgxMiwgOTgzNzAwLCAKLSAgICAwLCAxMjkwODcsIDQyNTcyLCAxMjgyNjQsIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDExODg4MiwgMTE2NTQsIAotICAgIDEyMTI4NywgNzU1MCwgMTA2ODYsIDU5MDMsIDY3MDk4LCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIAotICAgIDMzNjYsIDEwMzk5LCA5MTc5MzgsIDU1NDIsIDExMDEzLCAxMjc5MjcsIDcxMDYyLCAxOTQ2NzcsIDcxNDYxLCA2NzA5MCwgCi0gICAgNjkyNSwgMCwgMCwgOTI4OTIsIDcxODU2LCAxMTU2OCwgOTgzNjczLCA0MzM2NywgNjQ1NzksIDkxNzkzMCwgNzg1MiwgCi0gICAgMTExMzgsIDAsIDY3NTQsIDYzMTIsIDc3OTU2LCA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAxMjI5NiwgCi0gICAgNjg0NTcsIDczODM0LCA2ODE3NywgMTEwNTAsIDEwOTg0LCA5MjIwOCwgMCwgMCwgOTIxODIsIDEyOTE0NiwgOTgzNjA1LCAKLSAgICA5NTMyLCA2NjM1NSwgMTE5MjY0LCA2ODA3MywgMTEzNjk1LCA2NDM0MywgMTk1MDMyLCA5Mjc0NCwgMTk1MDMxLCAwLCAKLSAgICAxOTQ4NDcsIDE5NTA1NywgMTE0NDUsIDY4Mjk0LCAyMTEyLCAxMjg3NDEsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgCi0gICAgOTUwNywgMTAyMTAsIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDc4MDAzLCA5NjI0LCAxMTU0NSwgCi0gICAgMCwgMTIwMjc2LCAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCAKLSAgICA3ODk0LCA0MzkxLCA2ODEzOSwgMTIxMDY0LCAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgCi0gICAgOTI0MzMsIDM1NTgsIDEyOTE5MCwgMzkxMywgNzA0MjksIDEyMTM3NiwgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIAotICAgIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAxMTc5MSwgOTgzMTIyLCA5MTc1ODcsIDgyMjEsIDc4MzA3LCA0MTg2NCwgMCwgMCwgCi0gICAgNjcwNzUsIDcxMjE5LCAxNjcsIDk4MzkwNiwgNzgzMDEsIDk4MzY1MywgNzQyMTEsIDQxODk3LCA2NzA3MiwgMCwgOTE3NTgzLCAKLSAgICAxMjcxNDAsIDY3MDc2LCAyNDkzLCAwLCAxMTM3NzgsIDEyMTI0NSwgNzgxMDcsIDY0MzU0LCAwLCA4Nzc3LCAxMjc5NDAsIAotICAgIDQwNiwgODg4NCwgMjM4NSwgNzgyMTAsIDkyNDUwLCA5MTc1OTAsIDkxNzU3MywgNDMwMzAsIDQyMDI3LCAxMjExNCwgMCwgCi0gICAgMTI4NTk3LCA2NDkzNiwgMTk0Njk1LCAxMTkyNjcsIDEyMDYyOSwgMTA1NjEsIDEyODk0MCwgODM2NSwgMTIwNTM5LCAKLSAgICA5ODM3NzQsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMTI4ODk2LCA4MzE3NiwgNzgzNCwgNzQxNTksIDAsIAotICAgIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU3NywgMTYzOSwgMTIwODQyLCAwLCA3MDgwMywgNjMyNywgNjcyNCwgCi0gICAgMTI0OTUzLCA2NjM1NCwgOTI1NjYsIDY5OTEwLCA0ODE3LCAxMTA4NywgMTk0NzU5LCA5MjUzNiwgNzA0MywgOTYwMCwgCi0gICAgMTEwMjIsIDAsIDAsIDAsIDk4MzU5OSwgMCwgNzM5NTQsIDc1NDgsIDY0Nzk0LCA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAKLSAgICAxMjg3ODEsIDEyMzQzLCA2NTcsIDY3MTEwLCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIAotICAgIDkyODkxLCAxOTQ5NDUsIDgzMDU2LCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIDEyNzUyMCwgMCwgOTMwNDQsIAotICAgIDEyOTQxMSwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIDEwNjg3LCAwLCA0ODIxLCA0NDY2LCAwLCA4MzE4MiwgNDgxOCwgCi0gICAgMTI5MDU4LCA0MTQwMywgMTE5OTc3LCA3MjQyMiwgMTI4NDU4LCA0MTQwNiwgNDMyNzMsIDc0MTYwLCA2OTgwNSwgNzM5MzksIAotICAgIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAKLSAgICAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIDcwMDcwLCAzMzc1LCAxMjg0NDgsIDU5MDAsIAotICAgIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgOTgzNDgxLCAwLCA2NzA3OCwgMTI4NDUxLCAyMjgyLCAxMjE0MjIsIDEyNzgxMCwgCi0gICAgMTE0MDEsIDY3MDc5LCAwLCA2ODQ1OSwgMTI1MDI4LCA5ODMxNDEsIDAsIDcwMTUwLCA2NTQzOCwgMCwgNzI4MCwgMTI3ODg3LCAKLSAgICA2ODA1NSwgNzAxNDYsIDQ4NjgsIDgyOTcsIDExOTk2NiwgNzAxNDgsIDEyNTAwOCwgMTI4NzQ0LCA0MzE2MSwgNzAxNDQsIAotICAgIDkyMzYwLCAwLCA1MTgyLCAwLCAxMjA1NDIsIDAsIDAsIDQyMjYsIDcwMTg2LCAxMjEzNSwgNTczMiwgNDQ2NCwgMTk1MDgzLCAKLSAgICA3MTMzMCwgOTc3LCA0NDU4LCA0MzgyNywgOTI5NzEsIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAwLCAxMjEyMjgsIDEzOTUsIAotICAgIDY0Mjc5LCAwLCA5MjI0MCwgMTIxMTc5LCA3ODYsIDEyNjk5NSwgNDMxNzQsIDY0MzQwLCA4MzA3NywgMTk0NzY3LCA3Mzk3MSwgCi0gICAgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCA5ODM5MTcsIDY4NDQ0LCAwLCAKLSAgICA5MjQzNywgMTI0OTI4LCA5MjU0OSwgMTAyMDQsIDkyNjU2LCA4MzA3OCwgMTE5MjcxLCAxMjg0MzEsIDEzOTksIDEyMTQ2MywgCi0gICAgNjUyMTcsIDEyMTQ2NSwgODg1MiwgMTIwODA4LCAyNDEsIDEyMTQ2OSwgNDkwNywgMTI4NDI3LCA5ODM2MzksIDc5MzIsIAotICAgIDk3MjcsIDEyODQ2MywgNzQyNTUsIDg3NDgsIDAsIDEyODQyOCwgOTgzNjMxLCAwLCA0Mjc4MCwgNTUyNjMsIDExMzY3NywgCi0gICAgOTgzNTYwLCA0MjE3LCA5MzAzNCwgODY1MCwgMTI3OTkxLCAxMjA2NzMsIDEyODIxNSwgNjk5MDAsIDExODg3MiwgNDMwOTksIAotICAgIDM5NjUsIDExOTExOSwgNjcxOSwgMTI4MDA3LCAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgCi0gICAgNjYyODksIDEyMDkwMiwgNzM4MTUsIDQ0MjAsIDk4MzEyMCwgNjQxMCwgNzc2MCwgMCwgNzA0NjgsIDEyODc1MiwgMTIwNjg0LCAKLSAgICAxMjEyNDYsIDcyOTQsIDEyODIxOCwgNDM4NjksIDEyMDg1OSwgOTA2NiwgMTIxMzIxLCAxMTk5MywgNDMxODgsIDI2MjYsIAotICAgIDc3NjIsIDk4Mzg2NiwgMTE4ODMxLCA5Mjg5OSwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgNzAyOTAsIDc4NTE2LCAKLSAgICA2OTE5LCA4NjE5LCAxMTk2NTUsIDEwMDM4LCA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyMDUzNywgMTU0MiwgOTIzMDMsIAotICAgIDEyODgxOSwgMCwgMTI3MzI3LCAxMjExOTksIDc0MzExLCA3ODQ5NywgMCwgMTAxODEsIDEyNDkzNywgNDM2MjQsIDEyOTA2MCwgCi0gICAgNzc3OSwgOTE3NTUxLCAxMDE5NSwgOTQ3OSwgNjAyOSwgMTI4Mzc0LCA5MjI2OCwgMjIyNCwgMCwgNjU1NzcsIDg5OTMsIAotICAgIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgNzAxMDYsIAotICAgIDYwMjcsIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAwLCA3MDM4NiwgMTI3OTAzLCA5ODMzMzksIDk4MzMzOCwgMjczNSwgCi0gICAgNDI4MzEsIDc3OTM1LCA3MDQzOSwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgNzA0MzMsIDczOTQ2LCAwLCAxOTQ3MDMsIDAsIAorICAgIDEyODg1LCAxMjczNzUsIDExOTA0NSwgNjQ3MjAsIDkxNzg3MywgMTIwNzU5LCA3MDczNywgMTI2MDMsIDcxMzEsIDExMTA4LCAKKyAgICA0NTY2LCA3NTE4LCA5MzE3LCAzODAxLCAxMDM0MiwgMTA0MDYsIDEyNDkzOCwgMTE5MjU5LCA0MjU3NiwgMTI1MjM3LCAKKyAgICA1MjAwLCA5Mjk0NiwgMTIxNDM1LCA5ODM2ODMsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDY2MjgyLCAzOTUsIDU0ODIsIDUxOTgsIAorICAgIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAxMjgzODMsIDQzMzA3LCA3MDI5NywgCisgICAgMTE4OTczLCA3MDQ2NywgMTIxMzQsIDEyMTE2NywgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDk4MzYyNCwgMTIwMTQsIDEwMzc3LCAKKyAgICA4MDkzLCA5MDc5LCAzMjAzLCAxOTIsIDY1MTA5LCAzMzg1LCAxMjUwNzUsIDY0NDMwLCA1MzgzLCAxMDI5NCwgMTAzMjYsIAorICAgIDEyMDkzMiwgNTczOCwgMTIwMDg5LCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDgzMzc4LCA2ODExMiwgNzg3MiwgCisgICAgODU4MSwgOTgzNzcxLCAxMjYwLCAzMTQ5LCA1MzU5LCAxMjAxMzQsIDc0OTU1LCA3OTE0LCA1MzU3LCA3MTE5MCwgNzQzMzksIAorICAgIDI2MjQsIDUzNjQsIDEyODg4MSwgMTE0MzEsIDEwMDY1OSwgOTEwMSwgMTEwNTgsIDc4Mjg4LCA2NzEwNywgNzgyOTMsIAorICAgIDQyMjcxLCA3ODI4OSwgNDI5MTcsIDY3MTExLCAxMjkxNzksIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4MjkxLCAKKyAgICA3ODM4NCwgMTE4MzIsIDc4MzgyLCA3ODM4MSwgNzgzODAsIDY5ODYxLCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAKKyAgICAzMjMyLCA3MzgyNCwgNzQ1ODEsIDc4MDg3LCA5ODM4MTcsIDcxMjA1LCA0MTg4OSwgOTI0NTMsIDEyOTE0NCwgMTE2MSwgCisgICAgNDE4OTUsIDc0MTAzLCA5NzAxLCA4NjIyLCAxMjUwMjUsIDAsIDY4NzcyLCAxMjA1ODgsIDUwMTIsIDcxNDUzLCA0MTM2MiwgCisgICAgNjk4NjIsIDY4NTA3LCAxMTkyMSwgMCwgMTE3NjksIDY4NzgyLCA2ODYwOSwgNDEzNjQsIDEyMDk0NywgNzQyMjgsIDQxMzUyLCAKKyAgICA0MTM2MSwgOTE3OTAzLCA0MTM2NiwgMTk0ODA5LCAzMzU2LCAxMTYxMSwgOTE3LCA2ODQyMiwgMTE5OTE1LCA3MTM0LCAKKyAgICA4MTk5LCA3ODM4OSwgMTE5NjE4LCA2NzcsIDExOTkxNiwgOTE3ODc2LCA3MTQ4MiwgMTI3MTY5LCA2ODc0NywgMCwgNjg3MzgsIAorICAgIDMzNDksIDc0MTI1LCA3MDIyLCA4OTI3LCA0NzM5LCA5MjU5OSwgNTgwMiwgMTIwMDQ3LCA4NjE1LCAwLCAxMjgwNTgsIDQ5MSwgCisgICAgNzQ0MDEsIDEwMTkwLCA2ODc1NSwgNjU4MzcsIDY4ODAwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIAorICAgIDc1ODYsIDQyMzA1LCAxMDg1MiwgOTE3NTgwLCA0MjY0OCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgCisgICAgMTA0NiwgNzEyNCwgMTI4NjEwLCA2ODc1MywgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIAorICAgIDQxODc4LCA3NDg0OSwgNzI3ODksIDcyNDI0LCA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAKKyAgICAxMTkwNDksIDUxNzYsIDg5MDUsIDIyNjcsIDQ4NzEsIDc4Mjg3LCAxMjA2NjMsIDk4MzMsIDE5NDg1MCwgMTEzNzMwLCAKKyAgICAxMTI4LCA2NTkyMCwgOTE3ODc5LCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAKKyAgICAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCAKKyAgICA0MTM4NSwgMTk0ODQ0LCA0MTM4OSwgMTI3OTYzLCA4OTU1LCAzMzc0LCA5NDAwLCA5NDAxLCA3MTE5LCA5NDAzLCA5NDA0LCAKKyAgICAzNTA3LCA5NDA2LCA3NjI5LCA5ODM2MTcsIDE5OTI1LCA0MjY2OSwgNjg0NjMsIDE4MywgNDM5ODUsIDI2MzEsIDcwODExLCAKKyAgICAxMDYyNywgNDExMzAsIDcxMDc5LCAzOTk2LCAwLCA3MTQ0MiwgMTAwODY0LCAxMTkzMTMsIDExOTMwNywgNzg3NjgsIDY1ODAsIAorICAgIDQzMzIsIDY0ODI1LCA2NjMyOSwgMTA3MjYsIDY2Njg2LCA0MTEyNSwgNTg5OSwgNDEzNjUsIDEyNzIwNiwgMTIwODUsIAorICAgIDY2OTAyLCA1NzQsIDEyNjcwNSwgNzc4MjUsIDczODI4LCA1NDQ4LCA0MTA1OCwgNTQ0NiwgNjU5MzIsIDQxMzIyLCA0MjIxMSwgCisgICAgNTQ0MiwgNDE5MCwgNzc4MzQsIDc3ODM1LCA1NDUxLCA3NzgzMywgMzYxNiwgNzc4MjgsIDY4ODE3LCA3NzgzOCwgNzcwOCwgCisgICAgNzQ3NTksIDIyMjgsIDY1ODY3LCAxMDM0NSwgMTA0MDksIDQxOTEsIDEyMDM3OCwgNzc4NDQsIDczODAwLCA0MjE4MSwgCisgICAgNzc4NDMsIDc3ODM5LCAyMDYwLCAxMjExOTMsIDcxMTEsIDExNzg4LCA2NTM3NiwgNjgxMjksIDEwNDE1LCA3Mjc0MSwgCisgICAgMTk1MDI1LCAyMDUsIDgzMDQwLCAxMDM1MSwgNjcxNTEsIDAsIDk4NjIsIDY1ODgsIDQzMjU3LCA2NDY5NywgNzM5OTgsIAorICAgIDQxMzU1LCA1NTA1LCA3MDczNiwgNTUwMywgODAyMSwgMTI4MDM1LCA3MTI1LCA5ODE5LCA0MTM1NywgODAxMSwgNDI4ODUsIAorICAgIDU1MDcsIDEyMDQ0LCA5MjM2NCwgMTAwNzQyLCAxMDAyNiwgNTQ3MiwgNzEwOSwgMTE5MSwgMTMxMDYsIDU0NzAsIDEwMzI5LCAKKyAgICA1NDc2LCA4OTkxLCA2NjMyMiwgNjk3NzgsIDExMTMzLCA0Mjg3NCwgODU1MCwgNDI4NzYsIDU1OTIsIDI5MTksIDc0NTE2LCAKKyAgICAyNjc1LCA1NTk1LCA3ODQxMSwgNDM3NjIsIDQzNjcsIDgzNTE4LCA5MTc3ODIsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIAorICAgIDc0MTUwLCA3MjkxLCA1NTkwLCA0Mzc2MSwgMTMwNjcsIDExODkwOSwgNzUwNjksIDk4MzEwOCwgOTczMSwgNjk3MzEsIAorICAgIDY0NjMzLCA3Nzg1NywgNzc4NTQsIDcxMjE3LCA3Nzg1MiwgNzEyMjcsIDc3ODUwLCAxMDc1MCwgNDM3MTQsIDc3ODU4LCAKKyAgICA3MTM3LCAwLCA2NjkwOSwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCAKKyAgICA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCA3MjgzMiwgMTQ0MiwgCisgICAgMTI5MDgwLCA1ODk0LCA3MDA2OSwgMTI4NjcyLCA0MTE3MSwgOTI1MTEsIDcwMzU4LCAxMzIzLCAxMzE2MiwgMTIwNTk5LCAKKyAgICAzMzM0LCAxMjg3MDQsIDkyNzA5LCA3Nzg4MSwgNjYwMjIsIDcwNzA1LCA2OTc3MCwgMTY1MSwgMTIwMzY0LCA4ODYxLCAwLCAKKyAgICA5MTc1ODgsIDExNDIsIDk4MzExMiwgODI3MSwgMCwgOTgzMDU4LCAxMjY2NDUsIDEyOTAzLCA3ODQwNiwgNDAwMiwgNDM2MjYsIAorICAgIDEwNDQyLCAxMDY3NiwgMzM0NCwgMTI4OTEwLCAxOTQ3ODcsIDEyOTIwLCAxOTQ1NjAsIDcwNDk3LCAxOTQ2ODcsIDY2NjQyLCAKKyAgICAxMjc3LCA2Njg3NiwgNzg3MSwgNjcxMDYsIDcxNDg3LCA3ODg1MywgMTI5MDY4LCA3ODg1NCwgMTIwMzYwLCA5ODM0OTIsIAorICAgIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNDM4NTYsIDc4ODU4LCAxMjAzNTksIDExMDEyLCA5ODM2MjcsIDc4ODU2LCA3ODQ0OCwgCisgICAgNzc4NzksIDQ5NzMsIDg3ODQsIDc3ODc3LCA3NDgwNCwgNzc4NzQsIDc3ODY5LCA2Njc0MywgNDI0NDAsIDcxMjI1LCAKKyAgICA0MzExOCwgMTE5ODc1LCA0MjM2NCwgNjc3NCwgNjc3MywgOTE3NTYwLCAxMjAzNjksIDEwMzQ2LCAxMDQxMCwgNzg4NTksIAorICAgIDkyNDMsIDI0NjQsIDc0MjYzLCA2MTA4LCAzMzcyLCAxMjI4OTAsIDYyNDcsIDQzMTE3LCA3MDM2NCwgNzEyMSwgNzQxNjYsIAorICAgIDEyNDk3MywgMTIwMzU1LCA5MjUzNywgMTk0ODQ2LCAxMTk4NzcsIDE5NTAzNCwgNzAzNTcsIDExOTkyMiwgMCwgNjcxMTksIAorICAgIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgMTE4OTk5LCA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIAorICAgIDQzMzgwLCA5ODM2MjUsIDk4MzA5MSwgMTI5MzQyLCAxMjg0NTAsIDExNjAzLCAxMjkzNDcsIDc1MDc0LCA2NTg5LCAKKyAgICAxMjczNjAsIDgyOTc1LCAxMjA5OTMsIDY3ODEyLCAxMjcxOTAsIDE5NDY4MCwgMTI5MDg3LCA0MjU3MiwgMTI4MjY0LCAKKyAgICAxMDYzMCwgNzQ4MjcsIDE5NjMsIDExNjIyLCAxMTg4ODIsIDExNjU0LCAxMjEyODcsIDc1NTAsIDEwNjg2LCA1OTAzLCAKKyAgICA2NzA5OCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAzMzY2LCAxMDM5OSwgOTE3OTM4LCA1NTQyLCAKKyAgICAxMTAxMywgMTI3OTI3LCA3MTA2MiwgMTI1MjI0LCA3MTQ2MSwgNjcwOTAsIDY5MjUsIDk4MzI3NCwgMCwgOTI4OTIsIAorICAgIDcxODU2LCAxMTU2OCwgOTgzMTMxLCA0MzM2NywgNjQ1NzksIDkxNzkzMCwgNzg1MiwgMTExMzgsIDAsIDY3NTQsIDYzMTIsIAorICAgIDc3OTU2LCA2NDY3MiwgNjUyOTYsIDAsIDExODk1NywgMCwgNDE2LCAxMjI5NiwgNjg0NTcsIDczODM0LCA2ODE3NywgCisgICAgMTEwNTAsIDEwOTg0LCA5MjIwOCwgOTgzMjE2LCA5MTc4MjIsIDkyMTgyLCAxMjkxNDYsIDE5NDYzNiwgOTUzMiwgNjYzNTUsIAorICAgIDExOTI2NCwgNjgwNzMsIDExMzY5NSwgNjQzNDMsIDE5NTAzMiwgOTI3NDQsIDEyNzI0MywgMCwgMTk0ODQ3LCA3ODgzOCwgCisgICAgMTE0NDUsIDY4Mjk0LCAyMTEyLCAxMjg3NDEsIDEyODgxNCwgMTAxODUsIDEwMjEsIDEyODEzMCwgOTUwNywgMTAyMTAsIAorICAgIDc0NTQ0LCA4MDIzLCAxMjAwLCAxMjI0MywgNzgwMDEsIDUyODIsIDcyODUwLCA5NjI0LCAxMTU0NSwgMCwgMTIwMjc2LCAKKyAgICAzMzQzLCA0NDI0LCAxMTA0NywgMTg4NSwgNDMyNjgsIDM4OTYsIDc4NDQ0LCA2NjQ5NywgMjk0NywgMzkyLCA3ODk0LCAKKyAgICA0MzkxLCA2ODEzOSwgMTIxMDY0LCAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgOTI0MzMsIAorICAgIDM1NTgsIDEyOTE5MCwgMzkxMywgNzA0MjksIDEyMTM3NiwgNzgyMzUsIDcwNDQsIDEyNjUsIDE5NDY2MCwgNjMwOSwgNzA0NSwgCisgICAgNzE3NSwgNzA0NywgNzgyMzksIDExNzkxLCA5ODMxMjIsIDE5NDU4NCwgMzg4MSwgNzgzMDcsIDQxODY0LCAxMjczOTUsIAorICAgIDEyNTIwOCwgNjcwNzUsIDcxMjE5LCAxNjcsIDEyMTEwMSwgNzI3NTUsIDk4MzY1MywgNzQyMTEsIDQxODk3LCA2NzA3MiwgMCwgCisgICAgOTE3NTgzLCA2Njc0NSwgNjcwNzYsIDI0OTMsIDAsIDExMzc3OCwgMTIwNTMwLCA3ODEwNywgNjQzNTQsIDkxNzU5MywgCisgICAgODc3NywgMTI3OTQwLCA0MDYsIDg4ODQsIDIzODUsIDc4MjEwLCA5MjQ1MCwgOTE3NTkwLCA5MTc1NzMsIDQzMDMwLCAKKyAgICA0MjAyNywgMTIxMTQsIDAsIDEyODU5NywgNjQ5MzYsIDEwMDc2MywgMTE5MjY3LCAzNDIxLCAxMDU2MSwgMTI4OTQwLCAKKyAgICA4MzY1LCA3NDI5NCwgOTgzNzc0LCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDEyODg5NiwgODMxNzYsIDc4MzQsIAorICAgIDc0MTU5LCAwLCA5MTc1NzQsIDEwMjk4LCA2NjI0LCA0OTA4LCA5MTc1NzcsIDE2MzksIDEyMDg0MiwgOTgzNTg2LCA3MDgwMywgCisgICAgNjMyNywgNjcyNCwgNzEyNjksIDY2MzU0LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDExMDg3LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCAKKyAgICA5NjAwLCAxMTAyMiwgMTI4NDI3LCAxMjkzNDQsIDEyODM1NCwgOTgzNTk5LCA5ODMyMDksIDY2NzcxLCA3NTQ4LCA2NDc5NCwgCisgICAgNDIwNTAsIDEyMjkxLCA1NTI4OSwgMTI4NzgxLCAxMjM0MywgNjU3LCA2NzExMCwgNDI3MDUsIDQ0NjEsIDExMzQsIDE4MzgsIAorICAgIDc4NDM4LCAyMDU3LCAwLCA0NDY4LCA5Mjg5MSwgMTI3MzcyLCA4MzA1NiwgNDQ1NiwgNTIwNiwgMTA3MjAsIDAsIDQyNTIzLCAKKyAgICAxMjc1MjAsIDAsIDkzMDQ0LCAxMjg0MzAsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAxMDY4NywgMTI5MzE5LCA0ODIxLCAKKyAgICA0NDY2LCAwLCA4MzE4MiwgNDgxOCwgMTI1MjU3LCA0MTQwMywgMTE5OTc3LCA3MjQyMiwgMTI4NDU4LCA0MTQwNiwgNDMyNzMsIAorICAgIDc0MTYwLCA2OTgwNSwgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIDExOTk4MCwgNDQ1MSwgCisgICAgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIDcwMDcwLCAzMzc1LCAKKyAgICAxMjg0NDgsIDU5MDAsIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMTI4MzEzLCAwLCA2NzA3OCwgMTI4NDUxLCAyMjgyLCAKKyAgICAxMjE0MjIsIDEyNzgxMCwgMTE0MDEsIDY3MDc5LCAwLCA2ODQ1OSwgMTI1MDI4LCA5ODMxNDEsIDAsIDcwMTUwLCA2NTQzOCwgCisgICAgOTgzNzYwLCA3MjgwLCAxMjc4ODcsIDY4MDU1LCA3MDE0NiwgNDg2OCwgODI5NywgMTE5OTY2LCA3MDE0OCwgMTI1MDA4LCAKKyAgICAxMjg3NDQsIDQzMTYxLCA2NjczOSwgOTIzNjAsIDE5NTA3MCwgNTE4MiwgMTk0NjkyLCAxMjA1NDIsIDcyNzY0LCAxMjg1ODgsIAorICAgIDQyMjYsIDcwMTg2LCAxMjEzNSwgNTczMiwgNDQ2NCwgMTk1MDgzLCA3MTMzMCwgOTc3LCA0NDU4LCA0MzgyNywgOTI5NzEsIAorICAgIDY0NzcwLCA3NDgzOCwgMCwgMzQ0LCAxMjE0NjYsIDEyMTIyOCwgMTM5NSwgNjQyNzksIDAsIDkyMjQwLCAxMjExNzksIDc4NiwgCisgICAgMTI2OTk1LCA0MzE3NCwgNjQzNDAsIDgzMDc3LCAxOTQ3NjcsIDczOTcxLCA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCAKKyAgICA2NTAyNSwgMCwgOTgzNDY4LCAxMjgzMDMsIDc0MTUxLCA5ODM5MTcsIDY4NDQ0LCAwLCA5MjQzNywgMTI0OTI4LCA5MjU0OSwgCisgICAgMTAyMDQsIDkyNjU2LCA4MzA3OCwgMTE5MjcxLCAxMjg0MzEsIDEzOTksIDEyMTQ2MywgNjUyMTcsIDEyMTQ2NSwgODg1MiwgCisgICAgMTIwODA4LCAyNDEsIDEyMTQ2OSwgNDkwNywgMTI4MTYxLCA5MTc5MjcsIDc5MzIsIDk3MjcsIDEyODQ2MywgNzQyNTUsIAorICAgIDg3NDgsIDAsIDEyODQyOCwgMTI4NjQ2LCAwLCA0Mjc4MCwgNTUyNjMsIDExMzY3NywgMTE5ODU2LCA0MjE3LCA5MzAzNCwgCisgICAgODY1MCwgMTI3OTkxLCAxMjA2NzMsIDcyODc4LCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAKKyAgICAxMjgwMDcsIDEzMzAwLCA3ODQzOSwgNzI4MzYsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCA2NjI4OSwgMTIwOTAyLCA3MzgxNSwgCisgICAgNDQyMCwgMTI4NTMzLCA2NDEwLCA3NzYwLCAxMDA5OTksIDcwNDY4LCAxMjg3NTIsIDEyMDY4NCwgMTAwNTI4LCA3Mjk0LCAKKyAgICAxMjgyMTgsIDQzODY5LCA2ODIwNCwgOTA2NiwgMTIxMzIxLCAxMTk5MywgNDMxODgsIDI2MjYsIDc3NjIsIDk4Mzg2NiwgCisgICAgMTE4ODMxLCA5Mjg5OSwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgNzAyOTAsIDc4NTE2LCA2OTE5LCA4NjE5LCAKKyAgICAxMTk2NTUsIDEwMDM4LCA2NjQ1NCwgOTU5MiwgNDI4NTEsIDEyMDUzNywgMTU0MiwgOTIzMDMsIDEyODgxOSwgMCwgCisgICAgMTI0OTQwLCAxMjExOTksIDc0MzExLCA3ODQ5NywgMTIxNDEyLCAxMDE4MSwgMTI0OTM3LCA0MzYyNCwgMTI5MDYwLCA3Nzc5LCAKKyAgICA5MTc1NTEsIDEwMTk1LCA5NDc5LCA2MDI5LCAxMjgzNzQsIDkyMjY4LCAyMjI0LCAxMDEwNzksIDY1NTc3LCA4OTkzLCAKKyAgICA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgNjY4MDQsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgNzAxMDYsIDYwMjcsIAorICAgIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAxMjA2MjksIDcwMzg2LCAxMjc5MDMsIDk4MzMzOSwgOTgzMzM4LCAyNzM1LCA0MjgzMSwgCisgICAgNzc5MzUsIDcwNDM5LCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAxMjkzNjQsIDcwNDMzLCA3Mzk0NiwgMCwgMTk0NzAzLCAwLCAKICAgICA2ODE0MCwgOTgzOTI4LCA5NTc2LCA3MDI4OCwgMzM0NywgNDE2MCwgNTE1NCwgNTUyODgsIDM3OTQsIDY2NTY0LCA4NTMwLCAKICAgICAxMjcwNjMsIDc3MDksIDQxMTEyLCAxMTk4NjgsIDY2NTYwLCA4MzgxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDEyODkyMSwgCi0gICAgNjc1OCwgNjYwMzEsIDE2MTUsIDU4NTUsIDgwOSwgMTI3MTE3LCA5MjI4MywgMTI4MzE2LCAxMjgwMDQsIDU3OTksIAotICAgIDEyODkyOSwgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIAotICAgIDY1MjU3LCA3NDkwOSwgNjg2MTYsIDEyMDYwNywgOTM0NywgODMzNjAsIDY1MzIsIDAsIDkxNzkxOCwgMTIwODYwLCAKLSAgICAxMjcwNjAsIDY1ODI4LCAxMjAwMDYsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjYzLCA3ODgxNywgMTI4MDIxLCAKLSAgICAxMjA2MDksIDAsIDMzNzAsIDkxNzg4MSwgMTEzNjEsIDU0NDMsIDcxNDMxLCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIAotICAgIDEyMTUwMywgMjI5OCwgMCwgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMyMCwgNDMzNDQsIDk4MzMxOCwgNzE0NCwgOTQ2NiwgCi0gICAgNzg4NjYsIDk4MjQsIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCAKLSAgICA2ODIzMiwgOTgzMTExLCAxMjA4ODgsIDQzMjY0LCA2NzEzNiwgNjcxMzcsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIAotICAgIDY4MTYxLCA2NDU1MCwgNTE4NiwgNzM2MCwgMTI3ODM3LCA3MDQ1MSwgMTIxMDgsIDEyMDY0NCwgNjUxMjQsIDQzMTI3LCAKLSAgICA2NjA0MywgMCwgNjMyNiwgNDMxMDcsIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAxMjgxNzgsIDEyMDkxOSwgMTE0ODUsIAotICAgIDYxMDMsIDkyNDY4LCA5ODMzMDcsIDExNzE4LCA5ODMzMDUsIDEyODg5LCA5MjY1NywgMTI1MDM0LCAxMjA2MzUsIDEyNzE1NywgCi0gICAgMTIxMTI4LCA1NTI0NSwgMTI4NzA5LCAxNjMwLCA4MzAyNywgNjU0ODMsIDEyMDYzNCwgMTI1NjUsIDAsIDY1NDc2LCAKLSAgICA3MDM2OSwgOTgzMDcyLCA4MzAyOSwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgCi0gICAgMzM3NiwgNjgwODAsIDAsIDEyODI1MywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDE5NDYwNCwgCi0gICAgNTk1NywgMTEwNTkzLCA4OTI2LCA5ODMzMDEsIDk4MzMwMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCAKLSAgICA1Mzg2LCAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDAsIDAsIDAsIDEyMDc3MywgOTQwNTUsIDk4MTIsIDAsIAotICAgIDQ0NjAsIDc4NzkxLCAxMjQ5NTYsIDcxMzA3LCAxMjgwMzgsIDAsIDEyMTEzNSwgMTI3MTc0LCA2NDI3OCwgOTIzNzAsIAotICAgIDQzNDY2LCAwLCAwLCA2NDM4OSwgMjk1MywgNzAxMjIsIDE4MDEsIDEyODM1LCA3NDg0NywgMTIwODY3LCA3MzgyMywgCi0gICAgODMxMTAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgNjYyOTksIAotICAgIDk4MzI4NywgNzE0NDcsIDEyMTA2LCAxMjA5NzIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAKLSAgICAyOTUxLCA5NTIyLCA2NzgxNiwgNzgyNjYsIDY2NjA0LCA5ODM4NjAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgCi0gICAgNzc4OTksIDc3OTAwLCA4NDUxLCA4MzMyNCwgMCwgMCwgNjY0NTgsIDEyODk1NywgMTI4ODcwLCA3NDg5NiwgMCwgMjkwOCwgCi0gICAgMCwgMTExNzcsIDY0OTAyLCA0MjQzLCA5MjQ1NCwgMTIyMzksIDEyMTAwMywgMTI0OTU5LCA0NDQxLCAwLCA4Mjk2OCwgCi0gICAgNzM5NDAsIDY0MzUyLCAxMjc1MTMsIDEyNTAzMSwgNDExLCA5ODMyNzUsIDkxOTksIDk4MzI3MywgNDA1NiwgMTE4OTkyLCAKLSAgICA0MTg5MCwgMTI4NTkyLCAyNzMwLCA0MTYwNCwgMTI4MzU1LCA1NDI4LCAxOTQ3NDMsIDMzNjQsIDQyMjY1LCA2NDQzNywgCi0gICAgMTI3OTM1LCAxMTg4MTYsIDcxNDU4LCA5Njg0LCAyMTYsIDcxMzY3LCAxNDAxLCAxMjgwNTMsIDQ0MDEyLCA5MjYyOCwgCi0gICAgNzE0NTYsIDkyNTg1LCA5MTU4LCA2Njg3OCwgMTExMjYsIDU3NjgsIDAsIDk4Mzc1OSwgMCwgNDg0LCAxOTQ3MzksIDAsIDAsIAotICAgIDY1ODk1LCAxMjUwNzYsIDEyMTM4MCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDEyNzU0MywgCi0gICAgOTM5NjIsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIAotICAgIDU0NTYsIDU1MDksIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDEyOTEwOSwgMTI5MDQwLCAwLCAzNDMwLCAwLCA0MjkwNSwgCi0gICAgNzg3MTcsIDc0OTI5LCA5ODEsIDEyOTE4NCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgMTA5MDgsIDEyNjUwNiwgCi0gICAgNzAzNCwgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIAotICAgIDk4MzI1MSwgMjk0NiwgNTM1NCwgNTI1MSwgNTMyOCwgNTMwNywgMzc1OSwgMTE0MTEsIDgzNjQsIDUxMjMsIDExOTYyOCwgCi0gICAgNTI4MSwgNTQ2OSwgNTEyMSwgNzc5ODksIDExODk5MywgMCwgNTEzMCwgODMxODAsIDEyODM1NywgNzc5OTAsIDAsIAotICAgIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAxMTkyNjgsIDAsIDEyODQ3NSwgOTIxODcsIDM0NjgsIAotICAgIDcwMzMsIDkyMzAsIDU5MzksIDEyODM5NywgMCwgNTgwMywgNzE4NjcsIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIAotICAgIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDkxNzkzOSwgMCwgMTE3MzksIDc3OTg2LCA0MTk4MSwgOTI3NDMsIDU5MzgsIAotICAgIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCA3Mzg1MiwgMTI0OTk0LCAxMzA1NywgMCwgMTI2OTc2LCAKLSAgICAxMjkwODEsIDEwMDA5LCAwLCA0MTcwMywgMTIwOTUwLCAxMjE2NSwgMTI5MTkxLCAwLCA5ODg1LCAwLCA4MDc3LCA5MjYyMCwgCi0gICAgMTI3OTA4LCAxMjEwNDQsIDE5NDk5NSwgMCwgOTI0NTcsIDEyOTEzOCwgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgCi0gICAgNDk4NywgNjQ1MTksIDEyMTI2NSwgMTI1MDc4LCAwLCAxOTQ4MTMsIDEyODU3NCwgMTA5NzAsIDExNzMzLCAwLCAxMjA3OTIsIAotICAgIDEyNjQ5MCwgMTk5NDQsIDc0MzU2LCA5MDA5LCA4NTUxLCA5MjM0NSwgMTE0NjgsIDY0NjM2LCA3NTc1LCAwLCAyNzI0LCAKLSAgICAxMjg4OTksIDAsIDEyMzEzLCAxMTE1MSwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCi0gICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDkxNzkwNCwgCi0gICAgNzg4NTAsIDI3NDEsIDY0Mzk5LCA2MTk3LCAxMzcwLCAwLCAxMjA4NDEsIDAsIDEyNTA2MiwgOTgzNDQxLCAxMjA4NDMsIAotICAgIDYxODQsIDg2MDYsIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCAKLSAgICA0NDc4LCA2NjE3OCwgMCwgMCwgMjc0NCwgMCwgNDQ3NywgNzgyNjcsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIAotICAgIDExOTk2MSwgNjYxOTgsIDQxODgwLCA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgCi0gICAgNjYxODksIDczNzg4LCA3Nzg4LCA0ODQ3LCA5ODM0MjgsIDEyNzc1OSwgMCwgMTI4NDMzLCAyMjIxLCAxNTgxLCA2NTM1LCAKKyAgICA2NzU4LCA2NjAzMSwgMTYxNSwgNTg1NSwgODA5LCAxMjcxMTcsIDkyMjgzLCA3Mjg1MywgMTI4MDA0LCA1Nzk5LCAxMjg5MjksIAorICAgIDcwMTAwLCAxMjg2MDcsIDcyNjAsIDk4MzMyNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgCisgICAgNzQ5MDksIDY4NjE2LCAxMjA2MDcsIDkzNDcsIDgzMzYwLCA2NTMyLCAwLCAxOTUwNjIsIDEyMDg2MCwgMTI3MDYwLCAKKyAgICA2NTgyOCwgMTIwMDA2LCAyODMsIDY4NjY1LCA3ODgxMywgNTMyLCA3ODY0MiwgNzg4MTcsIDEyODAyMSwgMTIwNjA5LCAwLCAKKyAgICAzMzcwLCA5MTc4ODEsIDExMzYxLCA1NDQzLCA3MTQzMSwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAxMjE1MDMsIDIyOTgsIDAsIAorICAgIDEyNTAzOSwgNjU0OTUsIDY0NzA2LCA5ODMzMjAsIDQzMzQ0LCA5ODMzMTgsIDcxNDQsIDk0NjYsIDc4ODY2LCA5ODI0LCAKKyAgICA2NzE0MiwgMTI4OTYzLCA2NzEzMywgNjcxMzAsIDkxNSwgNDM0MjUsIDY3MjkyLCA0Mzg2NSwgNjgyMzIsIDk4MzExMSwgCisgICAgMTIwODg4LCA0MzI2NCwgNjcxMzYsIDY3MTM3LCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAorICAgIDUxODYsIDczNjAsIDEyNzgzNywgNzA0NTEsIDEyMTA4LCAxMjA2NDQsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIAorICAgIDQzMTA3LCA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMTIwMzI4LCAxMjA5MTksIDExNDg1LCA2MTAzLCA5MjQ2OCwgCisgICAgMTIxMDc1LCAxMTcxOCwgOTgzMzA1LCAxMjg4OSwgOTI2NTcsIDEyNTAzNCwgMTIwNjM1LCAxMDEwNzAsIDEyMTEyOCwgCisgICAgNTUyNDUsIDEyODcwOSwgMTYzMCwgODMwMjcsIDY1NDgzLCAxMjA2MzQsIDEyNTY1LCAwLCA2NTQ3NiwgNzAzNjksIAorICAgIDk4MzA3MiwgODMwMjksIDkyODMsIDc3MDAsIDEyMTE5MiwgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIDMzNzYsIAorICAgIDY4MDgwLCAwLCAxMjgyNTMsIDc3ODkyLCA2MzIsIDEyOTQwLCA3Nzg5MSwgNDI1MjksIDc4NTg3LCAxMDEwNzgsIDU5NTcsIAorICAgIDExMDU5MywgODkyNiwgMTk1MDcyLCA5ODMzMDAsIDEyODI3MywgMTA3NDUsIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgCisgICAgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAxMDA2NzksIDEyNzgyNCwgMTIxNTEsIDEyMDc3MywgOTQwNTUsIAorICAgIDk4MTIsIDAsIDQ0NjAsIDc4NzkxLCAxMjQ5NTYsIDcxMzA3LCAxMjgwMzgsIDAsIDEyMTEzNSwgMTI3MTc0LCA2NDI3OCwgCisgICAgOTIzNzAsIDQzNDY2LCAwLCA2Njc2MCwgNjQzODksIDI5NTMsIDcwMTIyLCAxODAxLCAxMjgzNSwgNzQ4NDcsIDEyMDg2NywgCisgICAgNzM4MjMsIDgzMTEwLCA2NjM3NSwgMjA4NSwgNzAyLCA0MjU3OSwgNzc4ODQsIDc3ODg1LCAxMzA3NCwgNzc4ODMsIDY2Mjk5LCAKKyAgICAxOTQ3NzUsIDcxNDQ3LCAxMjEwNiwgMTIwOTcyLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgCisgICAgMjk1MSwgOTUyMiwgNjc4MTYsIDc4MjY2LCA2NjYwNCwgMTAxMDU5LCAzMzg0LCA2OTIyNywgMTA3MDIsIDgzMCwgNzc5MDIsIAorICAgIDc3ODk5LCA3NzkwMCwgODQ1MSwgODMzMjQsIDAsIDAsIDY2NDU4LCAxMjg5NTcsIDEyNzMwMSwgNzQ4OTYsIDAsIDI5MDgsIAorICAgIDk4MzU1OCwgMTExNzcsIDY0OTAyLCA0MjQzLCA5MjQ1NCwgMTIyMzksIDEyMTAwMywgMTI0OTU5LCA0NDQxLCAxMjQ5MjksIAorICAgIDgyOTY4LCA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMTIxMDY2LCA0MTEsIDEyNzUyNSwgOTE5OSwgOTgzMjczLCA0MDU2LCAKKyAgICAxMTg5OTIsIDQxODkwLCAxMjg1OTIsIDI3MzAsIDQxNjA0LCAxMjgzNTUsIDU0MjgsIDE5NDc0MywgMzM2NCwgNDIyNjUsIAorICAgIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgNzE0NTgsIDk2ODQsIDIxNiwgNzEzNjcsIDE0MDEsIDEyODA1MywgNDQwMTIsIAorICAgIDkyNjI4LCA3MTQ1NiwgOTI1ODUsIDkxNTgsIDY2ODc4LCAxMTEyNiwgNTc2OCwgMTAxMDY0LCA5ODM3NTksIDAsIDQ4NCwgCisgICAgMTk0NzM5LCAwLCAwLCA2NTg5NSwgMTI1MDc2LCAxMDA1MjQsIDMzMzgsIDczOTM1LCA1NzIsIDcwNDEsIDI3MzYsIDY3NjA1LCAKKyAgICAxMjc1NDMsIDkzOTYyLCAyNzk0LCA4ODA3LCA2NDQ5MSwgNzc4NDcsIDU0MzgsIDUyMjIsIDUzODEsIDQzMTE0LCAxMjg3MDUsIAorICAgIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDY2NzY3LCAxMjkwNDAsIDExOTk2NywgMzQzMCwgCisgICAgOTgzMzk3LCA0MjkwNSwgNzg3MTcsIDc0OTI5LCA5ODEsIDEyOTE4NCwgNDMzMCwgNzM5MjksIDEyMDUzNiwgMTgyNCwgCisgICAgMTA5MDgsIDEyNjUwNiwgNzAzNCwgNDE2ODMsIDY0NjE3LCAxMTkxMzgsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAorICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjUxLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCisgICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCA3Nzk4OSwgMTE4OTkzLCAwLCA1MTMwLCA4MzE4MCwgCisgICAgMTI4MzU3LCA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDExOTI2OCwgMCwgCisgICAgMTI4NDc1LCA5MjE4NywgMzQ2OCwgNzAzMywgOTIzMCwgNTkzOSwgMTI4Mzk3LCAxMjAwMTAsIDU4MDMsIDcxODY3LCAKKyAgICA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCA2NzExNSwgNjY3NTMsIAorICAgIDExNzM5LCA3Nzk4NiwgNDE5ODEsIDkyNzQzLCA1OTM4LCAwLCA0Mzc2NiwgMTI0NDgsIDc1NzYsIDEwNDAxLCAxMDMzNywgCisgICAgNzM4NTIsIDEwMDY4NCwgMTMwNTcsIDk4MzI3NywgMTI2OTc2LCAxMjkwODEsIDEwMDA5LCA5MTc5MDUsIDQxNzAzLCAKKyAgICAxMjA5NTAsIDEyMTY1LCAxMjkxOTEsIDk4Mzc1NywgOTg4NSwgMTk0ODE0LCA4MDc3LCA5MjYyMCwgMTI3OTA4LCAxMjEwNDQsIAorICAgIDE5NDk5NSwgMCwgOTI0NTcsIDEyOTEzOCwgNDIyMCwgMTA3MjUsIDEwNDMzLCAwLCA2ODM5NSwgNDk4NywgNjQ1MTksIAorICAgIDEyMTI2NSwgMTI1MDc4LCAxMjkxODUsIDE5NDgxMywgMTI0OTk5LCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgMTI2NDkwLCAKKyAgICAxOTk0NCwgNzQzNTYsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIDEwMDg4OSwgCisgICAgMTI3MzkwLCAxMjMxMywgMTExNTEsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIDc4Mjg2LCAxMTk5NDMsIDExOTk0MCwgCisgICAgMTE5OTQxLCAxMDA4OTAsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCA5MTQxLCA5MTc5MDQsIDc4ODUwLCAyNzQxLCAKKyAgICA2NDM5OSwgNjE5NywgMTM3MCwgOTgzOTQ4LCAxMjA4NDEsIDAsIDEwMDg4NywgOTgzNDQxLCA3MTI3MywgNjE4NCwgODYwNiwgCisgICAgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgMzQyMiwgOTI0NDYsIDExNTkzLCA0MzAwNywgNDQ3OCwgNjYxNzgsIAorICAgIDAsIDAsIDI3NDQsIDAsIDQ0NzcsIDc4MjY3LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIAorICAgIDY2MTk4LCA0MTg4MCwgNjYxODgsIDExNjIzLCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIDY2MTg5LCAKKyAgICA3Mzc4OCwgNzc4OCwgNDg0NywgMTI4MzY2LCAxMjc3NTksIDcwNzI1LCAxMjg0MzMsIDIyMjEsIDE1ODEsIDY1MzUsIAogICAgIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIDczOTQ0LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCAKICAgICA5ODM0NDAsIDY4NjI1LCA5ODM0MzgsIDcyNjksIDEyODQ5OSwgNTk2NCwgMTI5MDgsIDEyNDk5NywgMCwgNzQ3NjQsIAotICAgIDQzNTEyLCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDMxLCA0NDMsIDk4MzQyOSwgNDk0NCwgNTQ2NywgMTE5NjAzLCAKLSAgICA3MDg2NSwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgOTE3NTU2LCAxOTQ5MzEsIDExOTk2MiwgCi0gICAgNDEzMDYsIDczOTg0LCAyNjk4LCAxMjcxNTksIDAsIDEyMDcyLCAzMTkzLCAwLCA0MTMwNCwgODI0LCAxMjg2NzYsIDEyMDkxLCAKLSAgICA2NzExOCwgNzg4OTQsIDExOTgxNiwgNDY3MywgNjQ4MDQsIDQ2NzgsIDExOTgyMCwgMTE5ODE5LCA2NTA1OSwgNDM4NjAsIAotICAgIDY3MzksIDY2ODQ0LCA1NDgxLCAzNDkwLCAxMTk5LCAxMTk4MTEsIDgzNTYsIDY5OTQ3LCA2NzcwMiwgNDY3NywgMTI2ODgsIAotICAgIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgNzgxNjYsIDQ2NzQsIAotICAgIDQ1NDgsIDQ0MDA1LCA3MTA4NywgNjg2NTgsIDExOTk0NiwgODAyNSwgNjg2MzAsIDEyNzAyNCwgMTg1NSwgMTI3NDc1LCAKLSAgICA2ODY2OSwgMTE4OTkwLCA5MjQ0NSwgMTI3NTU0LCAxMjY2MzAsIDEyNzMzOSwgMTE5NjUyLCAyNzQ1LCAxMTc5NywgCi0gICAgOTgzNDE5LCAxMjgxNTksIDkyMDIsIDQ2NTQsIDY4NDAsIDk4MzQxNiwgNjg2MzgsIDczOTkzLCAxMDUyNSwgNDY0OSwgCi0gICAgNjUyMDksIDEyMTUxMiwgMTIxNTExLCA0NjQ4LCA0MzA4MCwgNzUwNzAsIDEyMTUwNywgOTgzNDA2LCA2MjQ2LCA2NDk1MCwgCi0gICAgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzAyODcsIDc0NjI0LCA0MzE4NywgODY2OSwgCi0gICAgMTIwNjU5LCA2ODIxLCA2NTA5MywgOTgzNTY1LCA3ODg4MSwgMjcxNiwgOTgzNDEyLCA5ODMwNjAsIDcwNTAzLCAxOTQ5NTIsIAotICAgIDY4MzY5LCAxMjAwNTQsIDExMDYwLCA4NTQ3LCAyNzExLCA0MjE2NSwgNzgwMjcsIDc4MDI2LCA2ODM2LCA5ODM0MjMsIDAsIAotICAgIDQ2NjIsIDc4MDMzLCA3ODAzMiwgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIDE5NDk2MiwgNDY1NiwgCi0gICAgMTAxMzAsIDY4NDUwLCA3ODExLCA0MDk5NCwgMTk0OTY1LCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCA1NzEzLCA1ODE0LCAKLSAgICA0NjYxLCA0MjQzNCwgOTgzNDEzLCAxMjg3MzcsIDExMTkwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCAKLSAgICA0ODY3LCAxMTEwMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCA0NjIyLCAxMTk2NTYsIAotICAgIDQzODg4LCA3MDMwMywgOTgzMzk1LCA2OTkwNSwgNjcxODgsIDkwNDUsIDc4ODg4LCA0MjI1LCAxOTkyNiwgNjg4MzEsIAotICAgIDEyODgwLCA2NTMwNywgNDYxNywgNjg3NTcsIDk4MzM4OCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIAotICAgIDk4MzM4MiwgNTk1OCwgMCwgOTgzNDM1LCA0MjE1LCA5Nzg5LCAxMTk2MTksIDQzMjEsIDQ2MjEsIDE5NTAyOCwgNDEzMTMsIAotICAgIDUyMiwgNTM2OCwgMTExMzksIDY1ODAzLCAxMjg1NDYsIDUzNjYsIDEyMjAxLCA1MzcyLCAxMjEwNjAsIDExOTk0OSwgCi0gICAgMTk0OTc1LCA3NzIwLCA3MzkwLCAyNjk2LCA5ODM0MDIsIDAsIDQ2MzgsIDk4MzQwNywgMTc5MCwgNzgyNDIsIDU5NjUsIAotICAgIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDY4NDc3LCA1Mzc2LCAxODM1LCA1MzM1LCAxMjE1MDUsIDEyODA4OSwgNDYzMywgMCwgCi0gICAgNjgxMTksIDExODAsIDQ2MzIsIDY3MTkxLCA1Mzg3LCA1MzMzLCAwLCAxMjUxMzIsIDQyMDk0LCA1MzMxLCA0NjM0LCAKLSAgICAxMTkyOCwgOTgzNTk0LCA1MzM4LCA0NjM3LCAxMjgxNzAsIDU5NzEsIDQyNDE0LCA0MzUwMCwgMTI2OCwgNjUwOTcsIAotICAgIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMTI4NDQwLCAwLCA1OTcwLCAzNDMxLCAwLCAxMDM1OCwgMTA0MjIsIDQ3NTgsIAotICAgIDk4MzM3NiwgMTYwOCwgMjczOCwgMTI1MDY2LCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCAKLSAgICA3NDM4NCwgNjY2MTEsIDY4Mzc3LCA2MjQ4LCA5ODMzNjQsIDY3ODE1LCA3ODg3OCwgNDIzMTgsIDkyNTgyLCA1MjI5LCAKLSAgICA0NzU3LCAwLCAxMjY1NzYsIDI3MjgsIDQ3NTIsIDY0NTYzLCA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAxMjg5MjYsIAotICAgIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCA4MzEyNCwgNjcxMDEsIDEyNjQ5NSwgODk1NCwgNzQ3NjAsIDY1MTg5LCAKLSAgICAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIDU1NzQsIDE4NTMsIDI3MDksIDY1MTM5LCA1NTc3LCAxMjg5NjYsIDAsIAotICAgIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgCi0gICAgMCwgNTUyNSwgNTMzMCwgNTMxOSwgNjgyOTIsIDEyNzMxMSwgNjUwNjYsIDQ0MDAzLCA2ODQzNywgOTgzNDgyLCA0Mzg0MywgCi0gICAgMTIwNDk4LCAxMjc4NTEsIDQzOTE4LCA3NDg1MSwgNzQwMjIsIDk4MzQyNCwgNjQ2MDksIDY4NjQzLCA2NzQxMCwgMTI4NTkzLCAKLSAgICA1NzIxLCA3NDg5MiwgNTUxOSwgODYzMiwgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDc4Nzc4LCAxNjkyLCAKLSAgICA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAwLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMyNDIsIDUyODcsIDUzMDksIAotICAgIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDEyMDQ3OSwgCi0gICAgOTgzMzQ4LCA5MjA4LCA0NjA4LCA0Mzk2NiwgNDExMjQsIDUxOTAsIDY3NjI4LCA2NjgyNiwgNjgxNDUsIDcwODYsIDAsIAotICAgIDY3OTk4LCA2NzYyMCwgOTMwNDcsIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCA2NzcyMiwgCi0gICAgODk5MiwgNDI1OTMsIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIAotICAgIDQyNTA4LCA3NDQyLCA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIDYyMzksIDQzOTAwLCA0MTI1NiwgNzQxMzIsIDY3NzQwLCAKLSAgICAwLCA3MTE3OCwgOTE3NTUwLCA5MzQ2LCA2OTY2MCwgNDEyNTQsIDEyODA0NywgNDMyOTEsIDM3NjcsIDU3MzcsIDAsIDQ4NjUsIAotICAgIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY3MDk3LCAxMjg4NDQsIDU3MzksIDQxMDI0LCAKLSAgICA0ODY2LCA5ODM4ODAsIDczOTA0LCAxMjE0MjAsIDQ4NjksIDEyMDU2MywgMTI5MTcyLCA0MjIzLCAxMjgyMDEsIDY2NTAsIAotICAgIDEyNjUwOSwgMCwgMTIwMjEyLCAxMTk4NzIsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIDc4MTc2LCA2ODY2NywgCi0gICAgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgODMxOTMsIDYyNDUsIDY4NjUyLCAKLSAgICAyNzMyLCA0MjczNCwgNzQ1LCA2ODA0NSwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMTI5MTM2LCA2ODYzMSwgNDI3NzUsIAorICAgIDQzNTEyLCAxMTkxNDYsIDE5NDkzNiwgNDk0OSwgOTgzNDMxLCA0NDMsIDEyMjkwMiwgNDk0NCwgNTQ2NywgMTE5NjAzLCAKKyAgICA3MDg2NSwgNjUxMzcsIDYwNDQsIDY1MzkyLCA5ODMxMTksIDQyMTMsIDAsIDQxMzAzLCA5MTc1NTYsIDE5NDkzMSwgCisgICAgMTE5OTYyLCA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCA4MjQsIAorICAgIDEyODY3NiwgMTIwOTEsIDY3MTE4LCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAxMTk4MTksIAorICAgIDY1MDU5LCA0Mzg2MCwgNjczOSwgNjY4NDQsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDY3NzAyLCAKKyAgICA0Njc3LCAxMjY4OCwgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCAKKyAgICA3ODE2NiwgNDY3NCwgNDU0OCwgNDQwMDUsIDcxMDg3LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAKKyAgICAxODU1LCAxMjc0NzUsIDY4NjY5LCAxMTg5OTAsIDkyNDQ1LCAxMjc1NTQsIDEyNjYzMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIAorICAgIDExNzk3LCA5ODM0MTksIDEyODE1OSwgOTIwMiwgNDY1NCwgNjg0MCwgMTIyOTA5LCA2ODYzOCwgNzM5OTMsIDEwNTI1LCAKKyAgICA0NjQ5LCA2NTIwOSwgMTIxNTEyLCAxMjAyNDUsIDQ2NDgsIDQzMDgwLCA3NTA3MCwgMTIxNTA3LCA5ODM0MDYsIDYyNDYsIAorICAgIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3MDI4NywgNzQ2MjQsIDQzMTg3LCAKKyAgICA4NjY5LCAxMjA2NTksIDY4MjEsIDY1MDkzLCA5ODM1NjUsIDc4ODgxLCAyNzE2LCA5ODM0MTIsIDk4MzA2MCwgNjY3NTYsIAorICAgIDE5NDk1MiwgNjgzNjksIDEyMDA1NCwgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDY4MzYsIAorICAgIDk4MzQyMywgOTgzNDIxLCA0NjYyLCA3ODAzMywgNzgwMzIsIDkxNDksIDkxNDYsIDU5OSwgMjA4MSwgNzgwMzEsIDc4MDMwLCAKKyAgICAxOTQ5NjIsIDQ2NTYsIDEwMTMwLCA2ODQ1MCwgNzgxMSwgNDA5OTQsIDE5NDcwMiwgNjQxNCwgNTk2NywgNDY1OCwgMzcyNSwgCisgICAgNTcxMywgNTgxNCwgNDY2MSwgNDI0MzQsIDk4MzQxMywgMTE4OTk3LCAxMTE5MCwgNjQ5MDQsIDkwMjYsIDEwODMzLCAKKyAgICA3NDg2NCwgNzU0NywgNDg2NywgMTExMDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgCisgICAgNDYyMiwgMTE5NjU2LCA0Mzg4OCwgNzAzMDMsIDk4MzM5NSwgNjk5MDUsIDY3MTg4LCA5MDQ1LCA3ODg4OCwgNDIyNSwgCisgICAgMTk5MjYsIDY4ODMxLCAxMjg4MCwgNjUzMDcsIDQ2MTcsIDY4NzU3LCA3ODAwOCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAKKyAgICAxMDQyMywgMTAzNTksIDk4MzM4MiwgNTk1OCwgMCwgOTgzNDM1LCA0MjE1LCA5Nzg5LCAxMTk2MTksIDQzMjEsIDQ2MjEsIAorICAgIDE5NTAyOCwgNDEzMTMsIDUyMiwgNTM2OCwgMTExMzksIDY1ODAzLCAxMjg1NDYsIDUzNjYsIDEyMjAxLCA1MzcyLCAKKyAgICAxMjEwNjAsIDExOTk0OCwgMTI3MDY0LCA3NzIwLCA3MzkwLCAyNjk2LCAxMTk2NTcsIDk4MzExNSwgNDYzOCwgOTgzNDA3LCAKKyAgICAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgNjg0NzcsIDUzNzYsIDE4MzUsIDUzMzUsIDEyMTUwNSwgCisgICAgMTI4MDg5LCA0NjMzLCA5ODM0MTgsIDY4MTE5LCAxMTgwLCA0NjMyLCA2NzE5MSwgNTM4NywgNTMzMywgMCwgMTI1MTMyLCAKKyAgICA0MjA5NCwgNTMzMSwgNDYzNCwgMTE5MjgsIDEwMDk1MiwgNTMzOCwgNDYzNywgMTIxMDcwLCA1OTcxLCA0MjQxNCwgNDM1MDAsIAorICAgIDEyNjgsIDY1MDk3LCA0MjM2MSwgMTI4NTEwLCA5MTc2MDUsIDczODUzLCAxNDI3LCAxMjg0NDAsIDAsIDU5NzAsIDM0MzEsIAorICAgIDk4MzQxNywgMTAzNTgsIDEwNDIyLCA0NzU4LCA5ODMzNzYsIDE2MDgsIDI3MzgsIDEyNTA2NiwgMTA0NTUsIDQ3NTMsIAorICAgIDc0MDI2LCAxMTM0NCwgNDIyMiwgNjI0MCwgNTIzMSwgNzQzODQsIDY2NjExLCA2ODM3NywgNjI0OCwgOTgzMzY0LCA2NzgxNSwgCisgICAgNzg4NzgsIDQyMzE4LCA5MjU4MiwgNTIyOSwgNDc1NywgMTI1MjE1LCAxMjY1NzYsIDI3MjgsIDQ3NTIsIDY0NTYzLCAKKyAgICA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAxMjc0ODcsIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCA4MzEyNCwgNjcxMDEsIAorICAgIDEyNjQ5NSwgODk1NCwgNzQ3NjAsIDY1MTg5LCAyNjMyLCA0MjYxNywgMTAxMDgsIDEwMTEsIDU1NzQsIDE4NTMsIDI3MDksIAorICAgIDY1MTM5LCA1NTc3LCAxMjg5NjYsIDk4MzA4OCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIAorICAgIDkxNzg3NywgNTMxNCwgNjQ1MSwgNTU3MiwgNjY0NjQsIDUzMTIsIDEyNzAwNiwgNTUyNSwgNTMzMCwgNTMxOSwgNjgyOTIsIAorICAgIDEyNzMxMSwgNjUwNjYsIDQ0MDAzLCA2ODQzNywgMTI3Mjk5LCA0Mzg0MywgMTIwNDk4LCAxMjc4NTEsIDQzOTE4LCA3NDg1MSwgCisgICAgNzQwMjIsIDk4MzQyNCwgNjQ2MDksIDY4NjQzLCA2NzQxMCwgMTI4NTkzLCA1NzIxLCA3NDg5MiwgNTUxOSwgODYzMiwgCisgICAgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDc4Nzc4LCAxNjkyLCA0MjE5LCA0NjEwLCA4Njk2LCA0MzA1LCAKKyAgICA3NTA1MiwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMjQyLCA1Mjg3LCA1MzA5LCA1Mjg1LCA2ODM4OSwgNTk2MSwgCisgICAgNDY0NywgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCAxMjA0NzksIDk4MzM0OCwgOTIwOCwgNDYwOCwgCisgICAgNDM5NjYsIDQxMTI0LCA1MTkwLCA2NzYyOCwgNjY4MjYsIDY4MTQ1LCA3MDg2LCAyMjY1LCA2Nzk5OCwgNjc2MjAsIDkzMDQ3LCAKKyAgICAyNzM0LCAxMTA3NCwgMCwgNjc2MjcsIDQzNTkzLCAxMjg3NTgsIDY3NjI1LCA1OTYwLCA2NzcyMiwgODk5MiwgNDI1OTMsIAorICAgIDEyODI2MCwgMTc4MiwgNjc2MjIsIDY4MTE0LCAxMTk5MzksIDAsIDY4MTgwLCA1NTAxLCAxMTk5NTIsIDQyNTA4LCA3NDQyLCAKKyAgICA0MzY2NSwgMzU5LCA0MTI1MywgNjgzOTIsIDYyMzksIDQzOTAwLCA0MTI1NiwgNzQxMzIsIDY3NzQwLCAxMjkzMDksIAorICAgIDcxMTc4LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgOTE3ODk2LCAKKyAgICA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2NzA5NywgMTI4ODQ0LCA1NzM5LCAKKyAgICA0MTAyNCwgNDg2NiwgOTgzODU1LCA3MzkwNCwgNzA3MjYsIDQ4NjksIDEyMDU2MywgMTI5MTcyLCA0MjIzLCAxMjgyMDEsIAorICAgIDY2NTAsIDEyNjUwOSwgMCwgMTIwMjEyLCAxMTk4NzIsIDQ4NzAsIDEyMDQ0NSwgNjg2NjEsIDY3MTYsIDc4MTc2LCA2ODY2NywgCisgICAgNjgzODIsIDY4Njc2LCAxMjc5MjUsIDEwMTIyLCA0ODY0LCA2NjU2OCwgNDE0NCwgNzkzNywgNzI4MjEsIDYyNDUsIDY4NjUyLCAKKyAgICAyNzMyLCA0MjczNCwgNzQ1LCA2ODA0NSwgMTI4OTMzLCA5MjE5NSwgNDc3NywgNzgyMSwgMTI4ODcwLCA2ODYzMSwgNDI3NzUsIAogICAgIDE5NDY2MSwgMTI4NDQ1LCAxMjA2NzksIDMwOTcsIDEyMDkwOCwgNTk2NiwgMTIxMTk3LCA0Nzc4LCAxMjY0NjksIDEwODYzLCAKICAgICAxMjc1MDYsIDQ3ODEsIDkyOTg2LCA2NDQwNywgMTI4NTAzLCAxMjgzMjMsIDg1NzcsIDcxMjIxLCA2ODE5NiwgNDMyODUsIAotICAgIDEwMjE2LCA0NzgyLCA5ODM0ODUsIDk4MzQxMSwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCAKLSAgICA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDEyOTEyOCwgMTMxNzYsIDY4MzYzLCAxMDQyNiwgNjcyNDcsIDcxMDkxLCAKKyAgICAxMDIxNiwgNDc4MiwgOTgzNDg1LCA5ODM0MTEsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMTI3MTE4LCAKKyAgICAwLCA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDEyOTEyOCwgMTMxNzYsIDY4MzYzLCAxMDQyNiwgNjcyNDcsIDcxMDkxLCAKICAgICAxMDM2MiwgMTk0NzA2LCAxNzE1LCA0ODQ5LCA4MjQyLCA5NTYxLCA3MzkyMiwgNDMyNzgsIDQyNjM1LCAwLCAxMjcyMDcsIAotICAgIDU5NjMsIDkxNzkyNiwgOTgzNDgzLCAwLCA0ODUwLCA3MzkwMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIAorICAgIDU5NjMsIDEyMDc4NiwgMTI1MjAxLCAwLCA0ODUwLCA3MzkwMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIAogICAgIDEyNzkxOCwgNTE2NCwgNzM4MDcsIDEzNTAsIDUxMjQsIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCA5MjQ3MSwgCi0gICAgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMTIxMjczLCA0MTI2OCwgNDg0OCwgMjUzMCwgNzQ5NDEsIDIwNjgsIDE5NjQsIDAsIAotICAgIDczNzYyLCAxMDQ1OCwgOTgzNDE3LCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMTIxMTAyLCA2ODIxMSwgODMyMiwgCi0gICAgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MjYsIDMwMywgNzQ2MjUsIAotICAgIDY4MjI5LCA5ODM0MjcsIDI0MzcsIDc4NjU5LCA0MjIxLCA0ODQ0LCA5MjIxNiwgMCwgMCwgMCwgNzAwNDIsIDc0MDk1LCAKLSAgICA0MzI5MiwgMCwgMjQ0MSwgMTA3MzksIDY1MDkwLCAxOTQ2MjIsIDcwNDM2LCAxMTg5MjksIDI0NTEsIDI3MTQsIDExOTMyNiwgCi0gICAgMCwgNDMzNzksIDQ5MzcsIDQzMzc2LCA3NTMsIDU4NDksIDEwNTk3LCA0MzA4OSwgMTE3MjIsIDkyNDgsIDkyNTU1LCAKLSAgICA0Mjg3OSwgMTE3MjUsIDkxNzk2OSwgMCwgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIAotICAgIDE0MDgsIDUyNjEsIDQ2MDcsIDE5NDcxNSwgMTgxLCA5ODM0MzIsIDQ5NDIsIDk1MzksIDQ5MzgsIDAsIDY1MjAxLCA1MjU5LCAKLSAgICA5MzY5LCA2NDE4NSwgNDE0MiwgNTI1NywgOTgzNjAxLCA2ODQ0LCA0OTY0LCA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCAKLSAgICA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIDQxMjMxLCAxODIyLCA0MjUyNiwgCi0gICAgMTI3OTg5LCAxMjc1OCwgMzg2NSwgMTk0NjYwLCAxMjExMjksIDEwNTAwLCAwLCAxMTkwMjQsIDc4MDI4LCA5MjQwOCwgCi0gICAgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgNTQ2MywgMTI4MTE5LCAzMTI1LCA5NTY3LCAwLCAKLSAgICA0ODc4LCA1NDU5LCA0NjA0LCAxMTk2NTAsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAxMTQ5NCwgMTI2NDkyLCA5NTYzLCAKLSAgICAxMDg2NSwgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgNjg1MjEsIDc4NzE0LCA2NDE5MSwgNjQxOTAsIDg4OTgsIDY0MTg4LCAKLSAgICAxMjkxNTMsIDQxMDMwLCA3NDIyNiwgNzg3MTMsIDc0NjAwLCA3NDk5NCwgOTE3ODM0LCAwLCA3ODgwNSwgNDEwMzEsIAotICAgIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgOTgzMjY5LCA3ODUzOSwgNzM5MTksIDEwNTczLCA0MTc0NCwgNzA3OSwgNTg1NiwgCi0gICAgNjc4MzgsIDUxNjMsIDc4ODA5LCAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMTE5MDEwLCAxMDU2NCwgNzc2MywgCi0gICAgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCA0MjQ4LCAKLSAgICA3Nzk3OSwgMCwgNDU0MSwgNjI5OSwgNjQyMDQsIDY0MjAzLCA2NDIwMSwgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMTI2NDcxLCAKLSAgICA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgNjUyMjMsIDk5NDMsIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAKLSAgICAxMjIzMSwgNDI2NTIsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgNzgxODYsIDk5NjUsIDc0NDk1LCA4MzQ5MiwgODM0OTMsIAotICAgIDgzNDk0LCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCAKLSAgICA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgCi0gICAgNTM0OCwgMTA5NDMsIDY2MzkwLCAwLCAxMTM1MiwgNTUwLCA5OTEwLCAxMjUxMjcsIDAsIDY2NTc5LCAxMTU1MSwgMTI4NDY0LCAKLSAgICAxOTUwODAsIDk1MDQsIDcxODcsIDgyOTU3LCAxMDM3MywgOTgzNDE4LCAxMjAzNzUsIDEwMjYxLCAxMDI1MywgNjQwNCwgCi0gICAgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIDY5OTgsIDc4MTgwLCA3MTQyOSwgMzEyOCwgNDc4OSwgNTA2NywgCi0gICAgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgCi0gICAgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIAotICAgIDEzMjU0LCAxMTY5NywgMTI2NTk4LCA5Nzg1LCA2NDcxNiwgMCwgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDAsIDEyNTAyMywgCi0gICAgNDI2MDksIDExOTg1NSwgNzQxNzUsIDY2OTEyLCAxMjcwMTYsIDAsIDEyMTMwMCwgNDIxMzAsIDEyMTA0NiwgNTE1MSwgCi0gICAgMTIxMzQ2LCA4MzQ4OCwgMCwgOTM5ODAsIDkxNzgwMiwgNzYyMCwgMzgwMCwgNjUxMjIsIDgzNDg3LCA4MzQ4MCwgODM1NSwgCisgICAgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMTIxMjczLCA0MTI2OCwgNDg0OCwgMjUzMCwgNzQ5NDEsIDIwNjgsIDE5NjQsIAorICAgIDEyODIxNywgNzM3NjIsIDEwNDU4LCAxMjgxMjUsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAxMjExMDIsIDY4MjExLCAKKyAgICA4MzIyLCA0Nzk3LCA1NzUzLCAwLCAyNjk0LCA0NzkyLCAxMjgxNjMsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDI2LCAzMDMsIAorICAgIDc0NjI1LCA2ODIyOSwgOTgzNDIwLCAyNDM3LCA3ODY1OSwgNDIyMSwgNDg0NCwgOTIyMTYsIDk4MzgwNSwgMCwgMCwgCisgICAgNzAwNDIsIDc0MDk1LCA0MzI5MiwgOTgzNjU2LCAyNDQxLCAxMDczOSwgNjUwOTAsIDE5NDYyMiwgNzA0MzYsIDExODkyOSwgCisgICAgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAKKyAgICAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMTIwNjg3LCAwLCAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgCisgICAgNjQ5MzcsIDExOTIzMywgOTE0MCwgMTQwOCwgNTI2MSwgNDYwNywgMTI5MzUzLCAxODEsIDk4MzQzMiwgNDk0MiwgOTUzOSwgCisgICAgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCA5ODM2MDEsIDY4NDQsIDQ5NjQsIDUyNjQsIAorICAgIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCA2NDE3OSwgOTQ4MiwgNDg3MywgCisgICAgNDEyMzEsIDE4MjIsIDQyNTI2LCA5MjM0NCwgMTI3NTgsIDM4NjUsIDEyMjkxOCwgMTIxMTI5LCAxMDUwMCwgMCwgMTE5MDI0LCAKKyAgICA3ODAyOCwgNzgwMDMsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIDU0NjMsIDEyODExOSwgCisgICAgMzEyNSwgOTU2NywgOTgzMjkxLCA0ODc4LCA1NDU5LCA0NjA0LCAxMTk2NTAsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAKKyAgICAxMTQ5NCwgMTI2NDkyLCA5NTYzLCAxMDg2NSwgNzQ1NzAsIDQzMjc5LCA2NDE4NiwgNjg1MjEsIDc4NzE0LCA2NDE5MSwgCisgICAgNjQxOTAsIDg4OTgsIDY0MTg4LCAxMjkxNTMsIDQxMDMwLCA3NDIyNiwgNzg3MTMsIDc0NjAwLCA3NDk5NCwgOTE3ODM0LCAwLCAKKyAgICA3ODgwNSwgNDEwMzEsIDc4ODAxLCAxMTk2MCwgNjc0NSwgMzA4MiwgMTI2NTgxLCA3ODUzOSwgNzM5MTksIDEwNTczLCAKKyAgICA0MTc0NCwgNzA3OSwgNTg1NiwgNjc4MzgsIDUxNjMsIDc4ODA5LCAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgCisgICAgMTE5MDEwLCAxMDU2NCwgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAKKyAgICAxMDM3MSwgMTAzMDcsIDQxODE0LCA0MjQ4LCA3Nzk3OSwgNzI4MDIsIDQ1NDEsIDYyOTksIDY0MjA0LCA2NDIwMywgNjQyMDEsIAorICAgIDY0MjAwLCA2NDE5OSwgNjQxOTgsIDEyNjQ3MSwgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIDY1MjIzLCA5OTQzLCAKKyAgICA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgMTIyMzEsIDQyNjUyLCA2NDE3NCwgNjQxNzMsIDc4MTg5LCA4NDYsIAorICAgIDc4MTg2LCA5OTY1LCA3NDQ5NSwgODM0OTIsIDgzNDkzLCA4MzQ5NCwgMjU0MywgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCAKKyAgICA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgNjQxNjksIDY0MTY4LCA2NDk0OSwgMTA5NzIsIDEwMjUxLCAKKyAgICAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCA2NjM5MCwgMCwgMTEzNTIsIDU1MCwgCisgICAgOTkxMCwgMTI1MTI3LCAwLCA2NjU3OSwgMTE1NTEsIDEyODQ2NCwgMTk1MDgwLCA5NTA0LCA3MTg3LCA4Mjk1NywgMTAzNzMsIAorICAgIDk4MzE1MywgMTIwMzc1LCAxMDI2MSwgMTAyNTMsIDY0MDQsIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCAKKyAgICA2OTk4LCA3ODE4MCwgNzE0MjksIDMxMjgsIDQ3ODksIDUwNjcsIDUwNjYsIDExODg0OSwgNDc4NCwgMTI4Mzk0LCA4ODI3LCAKKyAgICAxMTQ2LCA1MDY1LCA2OTg5MCwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIDUwNjQsIDI0MzEsIDE5NDkyNiwgOTQ1MCwgCisgICAgMTgwOSwgOTgzNTg4LCA3ODIwMCwgNzgyMDEsIDUwNjIsIDEyNjQsIDY0ODE3LCAxMzI1NCwgMTE2OTcsIDEyNjU5OCwgCisgICAgOTc4NSwgNjQ3MTYsIDEyODI3OSwgMzkzMywgNzQ1NTksIDQ3NDAsIDc5NTQsIDEyODczOSwgMTAxMTAwLCA0MjYwOSwgCisgICAgMTE5ODU1LCA3NDE3NSwgNjY5MTIsIDEyNzAxNiwgMCwgMTIxMzAwLCA0MjEzMCwgMTIxMDQ2LCA1MTUxLCAxMjEzNDYsIAorICAgIDcwNzQzLCA5ODM3MTUsIDkzOTgwLCA5MTc4MDIsIDc2MjAsIDM4MDAsIDY1MTIyLCA4MzQ4NywgODM0ODAsIDgzNTUsIAogICAgIDc4NTQsIDgzNDgzLCA5NTQsIDY0OTI3LCA0MTg1LCA0MTA0NSwgMTI3MTQxLCA0MTQzOCwgNDE0MzksIDY4NjY2LCAxMDcxMSwgCi0gICAgNDU5MywgODI5OTMsIDEyMDU4NCwgOTgzNDEwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCA5ODM0MTQsIDAsIDc4NjQyLCAKLSAgICA2NDc1OSwgMTMyNSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgCi0gICAgNzgyMDQsIDQzOTEzLCAzMTE5LCA5MTc4MTQsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCA3NDk5NiwgNzc4NzYsIDYzNiwgCi0gICAgMTE2OTgsIDgzNDc2LCA4Mjk2MSwgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIAotICAgIDcwMjAxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCA2ODQ5MiwgNjcxNjQsIDg2MTgsIDk4MzQwNCwgOTkwOCwgNzQ5NzIsIDAsIAotICAgIDAsIDM5MzcsIDEyMzEyLCAwLCA5ODM0MDUsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIDkzOTU0LCA3NDUzMiwgCi0gICAgMTI2NTk0LCA2MjQ0LCA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgMTI4OTY5LCAwLCAxMTk1MCwgNTM5MiwgNDIyNDgsIAotICAgIDY1MTI5LCA2ODY1NiwgNTM5NywgMTI4MzEwLCAxMjA0NiwgMTI1OTksIDY3NDA3LCAxMjgyNjEsIDUzOTUsIDAsIDUzOTMsIAotICAgIDM1NCwgNjg2MTUsIDc3ODUzLCA3NDM2NiwgMTIxNDA0LCAwLCA0MjAzOSwgMTEzODE3LCAwLCA2NDE0MiwgNjI2LCAwLCAKLSAgICA1ODk1LCAwLCA0MzkxMCwgNTc4MCwgMCwgMTAyMjAsIDEyMTMzNywgNDM5MDcsIDcxMTIxLCA0MzI5NywgNzAxODgsIDQzMTEsIAotICAgIDQ2NDQsIDg4MTgsIDc4MTU4LCAxMjgxODYsIDEyODg2OSwgNzE0NSwgMzkxOCwgNjY0NTIsIDM3OTcsIDE2NDQsIDkyMzQ2LCAKLSAgICA5NjU4LCA0MTQwLCAxMTM4NSwgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgMTE5OTQ1LCA2ODEzMSwgNDE0NiwgMTE5OTU3LCAKLSAgICA1MzYwLCAyNDY2LCAwLCA2NzY2OSwgOTQwMjAsIDYyNDksIDQyMTE3LCA2ODgyOCwgOTIyMDYsIDEyODAyMywgMTE5MjU1LCAKLSAgICA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgNzExODAsIDAsIDk4MzQ3MCwgNDMwNjEsIDcwNTQsIDY0MTQ3LCA5ODM4NDcsIAotICAgIDY0OTIwLCA2ODE5NSwgNjY5OCwgMTE4OTMzLCA5MjUwNiwgMCwgNzA4NDksIDExOTgxLCAxMjIwMiwgMTk1MDg3LCAxMTAzMiwgCi0gICAgNjc2NTQsIDYwOTMsIDExNjA4LCA5NzUsIDY2NDE1LCA2NTg0MywgMTcwLCAwLCA2NzIzOSwgNDE2OSwgMCwgNDE4NTksIAotICAgIDYwNTgsIDEyMDQwMSwgMTMyMDMsIDEyMDY1NywgNzA1MDcsIDEyNTA5MSwgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgCi0gICAgNDIxMDYsIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgMTI3MTIwLCA0NzM3LCAxMTc3OSwgNDc0MiwgODM0MjUsIAotICAgIDY4NzU4LCA2ODM0MiwgODM0MjAsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgODM0MTgsIDgzNDE5LCA2NzczMSwgCi0gICAgNTMwMCwgNDc0MSwgNDIxMDgsIDEyNzA1NywgNjQxNTksIDQ3MzYsIDY0MTQ4LCA5MjYzNCwgODQ5LCA5MjE5MSwgNzg0OTEsIAotICAgIDQzMjg4LCAwLCA2NjYyMCwgMTI3NTMzLCAxMjczMzEsIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCA5ODMzNjgsIAotICAgIDc4NzYsIDY4MTMyLCA2NjI4MCwgMzkyOCwgOTE3ODcwLCA0MzM3OCwgMTA3MDYsIDcxOTgsIDEyMDg5MCwgNDg0MiwgCi0gICAgMTIwNTMsIDEyODEyOSwgNjg3NDYsIDQ4NDEsIDAsIDQxNzEsIDEyMDA4LCA2MjUxLCAzOTIzLCAxNDkwLCA4MzQxMSwgCi0gICAgODM0MTIsIDEyNjUxMiwgNDA5NzIsIDUyNDUsIDcwNzk0LCAxMDExNCwgNDIwMDEsIDQxODg4LCA0ODQ1LCA4MzMyLCAKLSAgICA0MDk3NCwgNjQzNDcsIDQ4NDAsIDkwNzcsIDc4MzQ2LCAxNzQ3LCA5MTc4NDksIDQ4MjUsIDY5MjQwLCAxMjE0NDMsIAotICAgIDY4NjU1LCAwLCA5ODMzOTAsIDAsIDAsIDY4NjI4LCA5ODMzNDksIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIAotICAgIDY2ODcsIDEyNzQsIDE5NTAyMiwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIDExMDIzLCAKLSAgICAxMTk1NTksIDQ4MzAsIDkxMzQsIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDgzMjk3LCA3ODY2OSwgNjQxMDEsIDAsIDEyODQzNCwgCi0gICAgNDgyNCwgMTA2MTQsIDExOTY1OSwgMTI2OTkzLCAxODg4LCAxOTYwLCA3ODYxLCA4MzQxNiwgNzg1MjQsIDQxODM2LCAKLSAgICA0MzAxMiwgNjA1MiwgNjA2NCwgNTQsIDQzMDA5LCAxMjIxNCwgODMyNjAsIDYyMTEsIDEyMDM4NiwgMzU4LCA0MTk5NywgCi0gICAgNDE4MzMsIDExNDQyLCAxMDc1OCwgNjU3NzQsIDExMzgyMywgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCA5ODM2MTEsIAotICAgIDk4MzcwOCwgMTE5MDUzLCAwLCAxMjc2NSwgNjQxMTgsIDEyNjk5OCwgMTI5NjIsIDAsIDEyNjU4MCwgNDAxNywgMTI4MjcsIAotICAgIDUyNDEsIDEyMDM5MiwgMCwgNDExMTgsIDM5MjQsIDk4Mzg5NCwgMTEzNjYsIDEyOTA4NCwgMCwgMCwgODM0MDEsIDQxMTE2LCAKKyAgICA0NTkzLCA4Mjk5MywgMTIwNTg0LCAxMjg2NjksIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDEyNzUwNSwgOTgzNTk0LCAKKyAgICA2Njc5NSwgNjQ3NTksIDEzMjUsIDUxNjYsIDk4ODgsIDEyNzgwMCwgNTE0OCwgNDI4MzQsIDAsIDc4MjA1LCA3ODIwNiwgCisgICAgNDM3ODcsIDc4MjA0LCA0MzkxMywgMzExOSwgMTI3MjU3LCAwLCAzMDYwLCA2NDEzNSwgOTk4NiwgNzQ5OTYsIDc3ODc2LCAKKyAgICA2MzYsIDExNjk4LCA4MzQ3NiwgODI5NjEsIDk5MTYsIDExNzAxLCA3ODM2LCA0Mjc0MSwgNjQxMzcsIDgzMjAsIDc4NjQwLCAKKyAgICA4ODYzLCA3MDIwMSwgMTE5OTYwLCAxNDc3LCA0MzI4OSwgNjg0OTIsIDY3MTY0LCA4NjE4LCA5ODM0MDQsIDk5MDgsIAorICAgIDc0OTcyLCAwLCAxMTkxNDcsIDM0MTQsIDEyMzEyLCAxMjA4MzIsIDEyMDcyNywgMTIxMjY0LCA2NDc4MSwgOTEyLCA2MzQ5LCAKKyAgICA0NTM2LCA5Mzk1NCwgNzQ1MzIsIDEyNjU5NCwgNjI0NCwgOTIyMDksIDcxMzQxLCAzOTM1LCAxMjA2NjUsIDEyODMxNiwgMCwgCisgICAgMTE5NTAsIDUzOTIsIDQyMjQ4LCA2NTEyOSwgNjg2NTYsIDUzOTcsIDEyODMxMCwgMTIwNDYsIDEyNTk5LCA2NzQwNywgCisgICAgMTI2NTQyLCA1Mzk1LCA3Mjg3MCwgNTM5MywgMzU0LCA2ODYxNSwgNzc4NTMsIDc0MzY2LCAxMjE0MDQsIDEyMTI2NiwgCisgICAgNDIwMzksIDExMzgxNywgMTI4NjcxLCA2NDE0MiwgNjI2LCAxMjgyNDQsIDU4OTUsIDk4MzU3MywgNDM5MTAsIDU3ODAsIDAsIAorICAgIDEwMjIwLCAxMjEzMzcsIDQzOTA3LCA3MTEyMSwgNDMyOTcsIDcwMTg4LCA0MzExLCA0NjQ0LCA4ODE4LCA3ODE1OCwgCisgICAgMTI4MTg2LCAxMjg4NjksIDcxNDUsIDM5MTgsIDY2NDUyLCAzNzk3LCAxNjQ0LCA5MjM0NiwgOTY1OCwgNDE0MCwgMTEzODUsIAorICAgIDY1OTQ3LCA2NDU1LCA5MDMwLCA4MTMsIDExOTk0NSwgNjgxMzEsIDQxNDYsIDExOTk1NywgNTM2MCwgMjQ2NiwgNzA2NjksIAorICAgIDY3NjY5LCA5NDAyMCwgNjI0OSwgNDIxMTcsIDY4ODI4LCA5MjIwNiwgMTI4MDIzLCAxMDEwNDgsIDc0MDQ2LCA0Mzc0NSwgCisgICAgNDkxMSwgOTg4LCA3MTE4MCwgOTgzMzM3LCA5ODM0NzAsIDQzMDYxLCA3MDU0LCA2NDE0NywgMTAxMDQyLCA2NDkyMCwgCisgICAgNjgxOTUsIDY2OTgsIDExODkzMywgOTI1MDYsIDAsIDcwODQ5LCAxMTk4MSwgMTIyMDIsIDE5NTA4NywgMTEwMzIsIDY3NjU0LCAKKyAgICA2MDkzLCAxMTYwOCwgOTc1LCA2NjQxNSwgNjU4NDMsIDE3MCwgMCwgNjcyMzksIDQxNjksIDExOTkzOCwgNDE4NTksIDYwNTgsIAorICAgIDEyMDQwMSwgMTMyMDMsIDEyMDQwMiwgNzA1MDcsIDEyMDQwMywgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgNDIxMDYsIAorICAgIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgMTIwMTQyLCA0NzM3LCAxMTc3OSwgNDc0MiwgODM0MjUsIDY4NzU4LCAKKyAgICA2ODM0MiwgNDEzNzQsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgODM0MTgsIDgzNDE5LCA2NzczMSwgNTMwMCwgCisgICAgNDc0MSwgNDIxMDgsIDEyNzA1NywgNjQxNTksIDQ3MzYsIDY0MTQ4LCA5MjYzNCwgODQ5LCA5MjE5MSwgNzg0OTEsIDQzMjg4LCAKKyAgICAwLCA2NjYyMCwgMTI3NTMzLCAxMjczMzEsIDY1NTQ5LCA5NDk2LCA2NDU5OCwgMTE4ODY2LCA5ODMzNjgsIDc4NzYsIAorICAgIDY4MTMyLCA2NjI4MCwgMzkyOCwgOTE3ODcwLCA0MzM3OCwgMTA3MDYsIDcxOTgsIDEyMDg5MCwgNDg0MiwgMTIwNTMsIAorICAgIDEyODEyOSwgNjg3NDYsIDQ4NDEsIDEyOTMzNCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDgzNDExLCA4MzQxMiwgCisgICAgMTI2NTEyLCA0MDk3MiwgNTI0NSwgNzA3OTQsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIDQwOTc0LCAKKyAgICA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDcyODUxLCA0ODI1LCA2OTI0MCwgMTIxNDQzLCA2ODY1NSwgMCwgCisgICAgMTI4NTM3LCAwLCAwLCA2ODYyOCwgOTgzMzQ5LCA5ODUwLCAxMTg5MzcsIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAKKyAgICAxOTUwMjIsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgMTE5NTU5LCA0ODMwLCAKKyAgICA5MTM0LCA3ODY2NiwgNjQxMjYsIDQzMDExLCA4MzI5NywgNzg2NjksIDY0MTAxLCAwLCAxMjg0MzQsIDQ4MjQsIDEwNjE0LCAKKyAgICAxMTk2NTksIDEyNjk5MywgMTg4OCwgMTk2MCwgNzg2MSwgODM0MTYsIDc4NTI0LCA0MTgzNiwgNDMwMTIsIDYwNTIsIDYwNjQsIAorICAgIDU0LCA0MzAwOSwgMTIyMTQsIDgzMjYwLCA2MjExLCAxMjAzODYsIDM1OCwgNDE5OTcsIDQxODMzLCAxMTQ0MiwgMTA3NTgsIAorICAgIDY1Nzc0LCAxMTM4MjMsIDEyMDM4NCwgNjQxMTUsIDkyMjIxLCA3MDAxOCwgOTgzNjExLCA5ODM3MDgsIDkyNDA4LCAKKyAgICAxMjgwODIsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMTE5NjMyLCAxMjY1ODAsIDQwMTcsIDEyODI3LCA1MjQxLCAKKyAgICAxMjAzOTIsIDEyNzkwMCwgNDExMTgsIDM5MjQsIDk4Mzg5NCwgMTEzNjYsIDEyOTA4NCwgMCwgMCwgODM0MDEsIDQxMTE2LCAKICAgICA4MzQwMywgODM0MDQsIDgzMzk3LCAxMTM2MywgMTIwNTcsIDExOTE3LCAxNTY3LCA3NDAwMCwgNDcyMSwgODMzOTYsIAotICAgIDY2MjAyLCA4OTU3LCA0MTM5LCA3MDUxMiwgMCwgOTgzMDc0LCAwLCAwLCAxMjc0MCwgMTIxNDcwLCA0NzIyLCA2ODE2LCAKLSAgICAxMjQ5NzQsIDEyNzU5LCA0NzI1LCA2NzA5OSwgNDcyNiwgODM0NjcsIDgzNDY4LCA5ODM2MjIsIDcwMDI5LCA4MzQ2MywgCi0gICAgNzQ5MTMsIDEyNzU1LCAxMjc2MiwgNDAxNSwgNjc2OTAsIDgwNTIsIDQ3NiwgMCwgNzQ4OTMsIDEyODI5NCwgNjQyMTIsIAotICAgIDQxMDIwLCAxMzgyLCA2NDIwOSwgNjQyMTYsIDQ0MDAyLCA2NDIxNCwgMTY1NiwgNDE4MzEsIDEyNzU1MywgMTI1MTIxLCAKLSAgICA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDk4MzQyMSwgNjQwNjcsIDkyMjg3LCA4NTUyLCA2NDExMywgNDE4NDUsIAotICAgIDM4NDksIDc4NzMyLCA2NjIzMiwgOTc3OCwgMTIwMDY2LCA1ODkxLCA3MDY0LCA1NSwgOTk0OCwgMTE5MDg1LCA4MzMwMiwgCi0gICAgOTE3NjEwLCA3OTM1LCAyNDIwLCAwLCAxMTE0LCA3ODEyMCwgNjc1ODUsIDcwMTA0LCA3MDQzMiwgODM0NDcsIDc0OTIwLCAKLSAgICAzOTM4LCAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCA3MTkyMCwgNjU0MTUsIDY2ODg0LCA2MjkyLCA2NTMwMywgCi0gICAgNzk1NSwgNjQ1MiwgNDcxMywgMTI4MTk2LCA2NjI0OSwgOTE3ODg1LCAxOTQ3NjYsIDEyOTA3MywgNjUxNTIsIDcxOSwgCi0gICAgMTIwMDQ0LCA3ODYyMywgMTIwMDQyLCA2NzEzLCA0NTMyLCA2NTQxMiwgNjk4MjIsIDEwODY4LCA0NzE3LCAyMzQ5LCA1OTAyLCAKLSAgICA2NjQ1MCwgNDcxMiwgNzUwNTUsIDkxNzg5OSwgNjU0MDAsIDY1NDE2LCA4MTU1LCA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCAKLSAgICAwLCA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDE5NDc4OSwgMCwgMTEzNzU2LCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgCi0gICAgODM0NTcsIDY2NDM3LCA2NjAyNSwgNzg2OTksIDgzNDUyLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCAxMjkxMzcsIAotICAgIDc4Njk0LCAxMjExNzMsIDEyODc3NywgOTE3ODU4LCA2NTQwNSwgNjgxNTksIDEyODkzLCA3ODYxNywgNTM2NSwgNDU0NSwgCi0gICAgODkwMSwgOTI0MjEsIDExOTU1NSwgNDgxMywgMTI4MjYyLCAxOTQ3MjksIDU5MjUsIDQ4MDgsIDY0MzMwLCAxMjg0MDAsIAotICAgIDY1NDc1LCA4MzQzMiwgNjgyNDQsIDQ4MTQsIDgzNDI3LCA0ODEwLCA4MzQyOSwgODM0MzAsIDY0OTI4LCAxMDU0MywgCi0gICAgNzEyNDksIDM1MjIsIDcxMzM1LCA0MTQsIDY1NDA0LCAwLCA4MzQ0MiwgNjQ1NiwgNzM4MjAsIDgzNDQ1LCA2NjkxLCAKLSAgICA0MjE5MywgNjYyODQsIDgzNDQxLCAwLCA2ODMzNywgMCwgNDM4NTgsIDQzODMyLCAxMTg4MjAsIDk3NTEsIDY1NDA3LCAKLSAgICAxMjgwODUsIDExNzcwLCAzOTE5LCAxMjA3MjQsIDAsIDY1MDYxLCA5ODM5NDUsIDkxNzg5NCwgMTI5MTQyLCAxMjIzNSwgCi0gICAgMTI4NTcyLCA5MjcwMSwgMTIxMDg3LCA2NDA5MiwgNjg3MzksIDY0MDgwLCAxMjkwNjMsIDY0MDkwLCA5ODM1ODYsIDY5OTEzLCAKLSAgICAxMDE2MiwgMTAzMTAsIDEyMTIxMCwgODQ1NCwgMTIxMzg3LCA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIAotICAgIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIDc4MTE2LCAwLCAxMjEyOTUsIDE5NTAyNCwgOTIxOTMsIDg4OTYsIDAsIAotICAgIDM3NSwgNjk3NiwgNjY1ODIsIDExOTAwNSwgNzQ5OTcsIDEyNzMyNSwgOTgzNDM2LCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIAotICAgIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDEyODQ1MiwgNDUyOSwgMTE5MjAwLCAxMTkyMDEsIDExOTE5OCwgCi0gICAgMTE5MTk5LCA2OTY5MiwgMTI5MTI0LCA2OTY5OCwgMTMxNTAsIDY0NDkyLCAxMjg5NzQsIDc4NzYxLCAyMjkxLCAxMjkwMiwgCi0gICAgMCwgNDI4OTEsIDY2MzI3LCA3MDUwMiwgOTE3ODU3LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAxMjg2MjgsIDQxOTMsIAotICAgIDY2ODIzLCA0MjQxLCAxMjkxOTUsIDc5OTgsIDgzMjc2LCAwLCAxMjcwMDksIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCAKLSAgICA5ODM5MzQsIDAsIDY0Mjk3LCA3NDc5OSwgOTI0NDIsIDc0MTQwLCAxMjgxNDgsIDUzNzMsIDEyODc5OCwgNzAzNzAsIDM3NjIsIAotICAgIDEwMDE1LCAxMjA2NzIsIDExOTIzMiwgMTI1MTA5LCA0MTU5MCwgMCwgNzAwOTgsIDM3ODAsIDc0ODUsIDU3NzksIDkxNzg5OCwgCi0gICAgNDIwMzcsIDAsIDM5MDYsIDEyMzQ5LCA3NDc5MywgODMyNiwgMTI3MzMzLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgCi0gICAgMzc3OSwgOTgzMTk0LCA0MzYxMywgNzAxMzIsIDAsIDgzMjg4LCA3ODMzNSwgODMyODksIDAsIDI4MCwgNzQ1NTgsIAotICAgIDEyMTM1MywgNjczOTYsIDEzMDcyLCAxODk0LCA4MzI5MSwgNjc3MzUsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgMTE3NzMsIAotICAgIDAsIDExOTE2NSwgMTExNDQsIDkxNzc3OCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDk4Mzc1MiwgMTE5MjM3LCAKLSAgICA3MTg3NywgMTI4NjY5LCA0NDcwLCAxMTgyNiwgOTE3NTU3LCA3NzgwLCA1MzY5LCAxMTg5NTgsIDUyNDksIDk4MzA2NiwgCi0gICAgNTM2NywgODc1NiwgMTI3MTQzLCAxMTkxODMsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA1MjE4LCAKLSAgICA2OTY4NSwgOTgzNzU2LCAwLCAxMTM3OTQsIDQ0MDIwLCA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgCi0gICAgMjI5MCwgNzEwNTcsIDExOTYyNCwgMTQ2NSwgMTA4NTAsIDM5NDMsIDAsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAxMTkzMzMsIAotICAgIDY3MTQ4LCA1MzUyLCAxMTM3NTMsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgCi0gICAgNjk2MzcsIDkyMjQxLCA0MzYwNywgNzEyNTQsIDAsIDU0MjAsIDM4OTcsIDEwMTM0LCAxMjAzODEsIDc0NDE3LCA0MDE4LCAKLSAgICA3MTUwLCA2ODEyNywgNzE0MjUsIDAsIDEyMTQyNywgMTI3ODY0LCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKKyAgICA2NjIwMiwgODk1NywgNDEzOSwgNzA1MTIsIDEyNzExNSwgOTgzMDc0LCAwLCAxMjI5MDcsIDEyNzQwLCAxMjE0NzAsIDQ3MjIsIAorICAgIDY4MTYsIDEyNDk3NCwgMTI3NTksIDQ3MjUsIDY3MDk5LCA0NzI2LCA4MzQ2NywgODM0NjgsIDk4MzYyMiwgNzAwMjksIAorICAgIDgzNDYzLCA3NDkxMywgMTI3NTUsIDEyNzYyLCA0MDE1LCA2NzY5MCwgODA1MiwgNDc2LCAwLCA3NDg5MywgMTI4Mjk0LCAKKyAgICA2NDIxMiwgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMTI3NTUzLCAKKyAgICAxMjUxMjEsIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgMTk1MDk2LCA2NDA2NywgOTIyODcsIDg1NTIsIAorICAgIDY0MTEzLCA0MTg0NSwgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAKKyAgICAxMTkwODUsIDgzMzAyLCA5MTc2MTAsIDc5MzUsIDI0MjAsIDczODYxLCAxMTE0LCA3ODEyMCwgNjc1ODUsIDcwMTA0LCAKKyAgICA3MDQzMiwgODM0NDcsIDc0OTIwLCAzOTM4LCAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCA3MTkyMCwgNjU0MTUsIAorICAgIDY2ODg0LCA2MjkyLCA2NTMwMywgNzk1NSwgNjQ1MiwgNDcxMywgMTI4MTk2LCA2NjI0OSwgOTE3ODg1LCAxOTQ3NjYsIAorICAgIDEyOTA3MywgNjUxNTIsIDcxOSwgMTIwMDQ0LCA3ODYyMywgMTIwMDQyLCA2NzEzLCA0NTMyLCA2NTQxMiwgNjk4MjIsIAorICAgIDEwODY4LCA0NzE3LCAyMzQ5LCA1OTAyLCA2NjQ1MCwgNDcxMiwgNzUwNTUsIDkxNzg5OSwgNjU0MDAsIDY1NDE2LCA4MTU1LCAKKyAgICA0NzE4LCAzOTQyLCA0NzE0LCA5NjI1LCA5ODMyOTMsIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMTk0Nzg5LCAKKyAgICAxMjEyMjYsIDExMzc1NiwgOTgzNDU4LCA2NTQxNCwgNjQ1NCwgMTIyOSwgODM0NTcsIDY2NDM3LCA2NjAyNSwgNzg2OTksIAorICAgIDgzNDUyLCA0MjUwMCwgMTIwNTA4LCA0ODA5LCA5NjIzLCAxMjkxMzcsIDc4Njk0LCAxMjExNzMsIDEyODc3NywgOTE3ODU4LCAKKyAgICA2NTQwNSwgNjgxNTksIDEyODkzLCA3ODYxNywgNTM2NSwgNDU0NSwgODkwMSwgOTI0MjEsIDExOTU1NSwgNDgxMywgCisgICAgMTI4MjYyLCAxOTQ3MjksIDU5MjUsIDQ4MDgsIDY0MzMwLCAxMjg0MDAsIDY1NDc1LCA4MzQzMiwgNjgyNDQsIDQ4MTQsIAorICAgIDgzNDI3LCA0ODEwLCA4MzQyOSwgODM0MzAsIDY0OTI4LCAxMDU0MywgNzEyNDksIDM1MjIsIDcxMzM1LCA0MTQsIDY1NDA0LCAKKyAgICA5MjMyOSwgODM0NDIsIDY0NTYsIDczODIwLCA4MzQ0NSwgNjY5MSwgNDIxOTMsIDY2Mjg0LCA4MzQ0MSwgMCwgNjgzMzcsIDAsIAorICAgIDQzODU4LCA0MzgzMiwgMTE4ODIwLCA5NzUxLCA2NTQwNywgMTI4MDg1LCAxMTc3MCwgMzkxOSwgMTIwNzI0LCA5ODM1OTYsIAorICAgIDY1MDYxLCA3ODExNSwgOTE3ODk0LCAxMjkxNDIsIDEyMjM1LCAxMjg1NzIsIDkyNzAxLCAxMjEwODcsIDY0MDkyLCA2ODczOSwgCisgICAgNjQwODAsIDEyOTA2MywgNjQwOTAsIDEyNTI2NywgNjk5MTMsIDEwMTYyLCAxMDMxMCwgMTIxMjEwLCA4NDU0LCAxMjEzODcsIAorICAgIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgNzgxMTYsIAorICAgIDAsIDEyMTI5NSwgMTk1MDI0LCA5MjE5MywgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA3NDk5NywgCisgICAgMTI3MzI1LCA5ODM0MzYsIDExMzc1NywgMTE5MjAzLCAxMjUyNiwgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgCisgICAgMTI4NDUyLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIDY5NjkyLCAxMjkxMjQsIDY5Njk4LCAKKyAgICAxMzE1MCwgNjQ0OTIsIDEyODk3NCwgNzg3NjEsIDIyOTEsIDEyOTAyLCAxMjgxNDAsIDQyODkxLCA2NjMyNywgNzA1MDIsIAorICAgIDEyOTQyNSwgMTA3OTksIDY5NjkwLCAyNTg3LCA2NjM3MiwgMTAwNTc2LCA0MTkzLCA2NjgyMywgNDI0MSwgMTI5MTk1LCAKKyAgICA3OTk4LCA4MzI3NiwgMCwgMTI3MDA5LCAxMjY2NDAsIDIzMTYsIDExODgyMSwgMCwgOTgzOTM0LCAxMjc0NzgsIDY0Mjk3LCAKKyAgICA3NDc5OSwgOTI0NDIsIDc0MTQwLCAxMjgxNDgsIDUzNzMsIDEyODc5OCwgNzAzNzAsIDM3NjIsIDEwMDE1LCAxMjA2NzIsIAorICAgIDExOTIzMiwgMTI1MTA5LCA0MTU5MCwgOTgzODY1LCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgOTE3ODk4LCA0MjAzNywgMCwgCisgICAgMzkwNiwgMTIzNDksIDc0NzkzLCA4MzI2LCAxMjczMzMsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAzNzc5LCAKKyAgICA5ODMxOTQsIDQzNjEzLCA3MDEzMiwgMCwgODMyODgsIDc4MzM1LCA4MzI4OSwgMTI5NDE5LCAyODAsIDc0NTU4LCAxMjEzNTMsIAorICAgIDY3Mzk2LCAxMzA3MiwgMTg5NCwgODMyOTEsIDY3NzM1LCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIDExNzczLCAxMjEzMTQsIAorICAgIDExOTE2NSwgMTExNDQsIDkxNzc3OCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDk4Mzc1MiwgMTE5MjM3LCA3MTg3NywgCisgICAgNzI4ODYsIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgMTE5OTQ5LCA1MzY3LCA4NzU2LCAKKyAgICAxMjcxNDMsIDExOTE4MywgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDUyMTgsIDY5Njg1LCAxOTQ5MTgsIDAsIAorICAgIDEwMDc4MCwgNDQwMjAsIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAyMjkwLCA3MTA1NywgCisgICAgMTE5NjI0LCAxNDY1LCAxMDg1MCwgMzk0MywgMTI3NTM3LCA0MTIwNSwgNDEzMTUsIDExODk2MSwgMTE5MzMzLCA2NzE0OCwgCisgICAgNTM1MiwgMTEzNzUzLCAwLCA4ODM5LCA0MTMxNCwgNzM4NCwgNzc4NSwgNDEyMDQsIDEyNzMyMiwgNDEyMDksIDY5NjM3LCAKKyAgICA5MjI0MSwgNDM2MDcsIDcxMjU0LCA4MzQ0NCwgNTQyMCwgMzg5NywgMTAxMzQsIDEyMDM4MSwgNzQ0MTcsIDQwMTgsIDcxNTAsIAorICAgIDY4MTI3LCA3MTQyNSwgNzA2ODgsIDEyMTQyNywgMTI3ODY0LCAxMjc1MjYsIDI1NjEsIDY4NjIxLCAzNTQyLCA3MTQ4LCAKICAgICAxMjA3NiwgNzk1MSwgNjgxNTIsIDExODg1NywgNTMwMywgNjI3NiwgMTcwNiwgMTIwNzUwLCA3ODc1MSwgNzE0NiwgCi0gICAgOTgzNjgyLCA2NTE1MCwgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIAotICAgIDk4MzQzNywgNjk2NDEsIDEwNzUzLCAxMDgzMCwgMTE5MzM5LCA2MTUsIDY0NDkwLCA3NTc0LCA3NDA4MiwgNzc5MjIsIDAsIAotICAgIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgMCwgMTIxMjMxLCA2Nzk5NiwgMjAyMCwgMTI4NzkwLCA0MDIyLCAKLSAgICAxMjg3ODMsIDEyMDcwMSwgNzc5MjMsIDEyNjU5MywgNDE2OTEsIDAsIDc1MDYwLCA3NDMyOSwgMCwgNjQ2MjIsIDkwNzAsIDAsIAotICAgIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCA5ODM4MTMsIDcwMDAsIDM5MDQsIDk4MzYyOCwgCi0gICAgNzM3MzcsIDEyNTEwNSwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTI3MzYwLCA3Mzk3LCAxMTg4MDcsIAotICAgIDkxNzg5MSwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAwLCAzNzc3LCA2ODQ1OCwgMTEzNzI1LCA5NjM2LCAwLCAxMDczOCwgCi0gICAgNjk2MzQsIDkzNjcsIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIDk4MzcyMywgNjQ0MDksIDM1OTYsIAotICAgIDEyOTA0NCwgMTI4MDkwLCA5NzYzLCAxMjAyODAsIDc0NjA5LCAxMjM0NywgMTI0LCAxMjk4MSwgNDExMjcsIDIwOTIsIAotICAgIDkyNjg3LCAwLCAxMjc1NTUsIDE5NDYzMiwgMTA4MjAsIDQzOTg3LCAwLCAxMjg5MDcsIDE3NjksIDQxNzE1LCAyNDYzLCAKLSAgICA3MTIxNCwgODMwNzAsIDEyNzcwLCA3MTIyMiwgMTUzOCwgOTI2MTcsIDQzMTI0LCAxOTQ2MTQsIDE5NTA1OCwgNzc5NSwgCi0gICAgMTIwMzAwLCAxMjkwNTMsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMTIxMTMwLCA5NDk4LCAxMjcwMzIsIAotICAgIDEyNzAzMywgMTIwMjg5LCAxMjAyODgsIDM5MzksIDEyMDI5MCwgODg0NiwgODk0MywgMTIwMjg3LCAxMjAyODYsIDI2NTAsIAotICAgIDQ0OTEsIDE5NjEsIDQyNjAyLCAxMTUyNSwgMTIwMjkyLCAxOTU5LCAxMjAyOTQsIDU1MjI4LCAxMTc3NCwgNDEwMTYsIAotICAgIDk4MzI2MiwgNjg2NzUsIDEyODA1NCwgMTUxMSwgOTMyNCwgNzgyMTEsIDEwNTE5LCA2NjMzMSwgMzQ1NCwgMTk5MzAsIDAsIAotICAgIDQxMDE5LCAxMjc5NDQsIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIAotICAgIDcwODY0LCAxMTg4NzksIDU1MjIzLCAwLCAxMjgwNzEsIDQxODI2LCA4ODY1LCA2NDAyLCAxMTM4MjcsIDEzMjc5LCA3OTE3LCAKLSAgICA3NDc1NSwgOTE3OTQ4LCA3NzMzLCA5ODM0MDgsIDQ5OTgsIDY4NDkzLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDE5NDc5MCwgCi0gICAgMTk1MDU2LCA3MDA2MSwgNDAxMywgMTI4NzE4LCAxMDg4MSwgMCwgOTgzMTYzLCAwLCA3NDc4OCwgMjAxNCwgMjQzMiwgCi0gICAgNzE5MDEsIDk3NjUsIDE5NTA1MiwgMCwgOTE3ODU0LCAxOTUwNTksIDc4MzU3LCA2NTI4MSwgMTI3ODI1LCAxMDk0OSwgMCwgCi0gICAgMCwgMTE5MzE1LCAyMDE1LCAxMjEwODgsIDkyNzY1LCA3MTg0MCwgNjYzMTgsIDQzMjMzLCA5MTc5OTIsIDQyNTE3LCAKLSAgICA2ODA2MCwgMCwgMCwgMTI2OTgsIDgwOTQsIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCA0MzQ5NywgMTI2NTYsIDY2MzM1LCAKLSAgICAxMTkzNTMsIDY3Mjc5LCAxNjY1LCA3MTg1MywgNDgzMywgOTE3OTg1LCA3MTE4OCwgMTI3MzY3LCAxMjE0NjQsIDE4OSwgCi0gICAgMTI2MTEsIDAsIDk4MzQyMCwgMjg1OSwgNDgzOCwgOTgzOTMwLCA0ODM0LCA2NTA3OCwgMCwgOTI5OTEsIDQ4MzcsIDY3NDEzLCAKLSAgICA3NzAsIDkyNjcxLCA4MTEsIDcwMDYyLCA0MTA0MiwgODMwNzMsIDQxMzE4LCA2NDQyNywgNzM5OTksIDY3NjkzLCA3ODg0OCwgCi0gICAgMzg5NSwgOTI2MTUsIDc0MzQxLCAzOTc2LCAxMjg0NjYsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgNzg0ODgsIDAsIAotICAgIDQzNDk2LCAwLCAxMjEwMTUsIDQzNjg2LCA3ODg0NiwgNDE4NzcsIDk4Mzc0MywgMjg3MSwgNjQ2MTQsIDY4ODQzLCA5OTksIAotICAgIDk4Mzg0NCwgNjM0NSwgNDE4NzYsIDI2NjMsIDIwMTcsIDEyMTIzNCwgNjc4MjQsIDExMDQwLCAxMDE1MCwgMTIwNjc4LCAKLSAgICA2NDMwOCwgMTUyMiwgNTk3LCA0Nzc1LCAxMjU1NSwgMTI1NzEsIDEyNTUwLCAxMjU4MywgMTI1NjAsIDIwMTksIDEyNTU2LCAKLSAgICAxMjU4NCwgMzA5MiwgMCwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDgzMzQ0LCAxMDgxMiwgNzg4NTEsIDAsIAotICAgIDgzMzQyLCAzMDc4LCAxNDAyLCAwLCA4MzM0OCwgMCwgMTI1MDcyLCAxMTkyNDgsIDM5NCwgMzA4OCwgODMzNDcsIDkyMTcyLCAKKyAgICA5ODM2ODIsIDY1MTUwLCA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAxMjcyODcsIDEwNTA2LCAKKyAgICA5ODM0MzcsIDY5NjQxLCAxMDc1MywgMTA4MzAsIDExOTMzOSwgNjE1LCA2NDQ5MCwgNzU3NCwgNzQwODIsIDc3OTIyLCAKKyAgICA5ODMyOTgsIDEyOTA5LCA0MzAxNiwgNjQ1NTksIDEyNzAyOCwgMTI4MzA5LCAxMjEyMzEsIDY3OTk2LCAyMDIwLCAxMjg3OTAsIAorICAgIDQwMjIsIDEyODc4MywgMTAwNzQ4LCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgNzUwNjAsIDc0MzI5LCAwLCA2NDYyMiwgCisgICAgOTA3MCwgOTgzODc2LCA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgMTI1MTkxLCA3MDAwLCAzOTA0LCAKKyAgICA5ODM2MjgsIDczNzM3LCAxMjUxMDUsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyMDUxOCwgNzM5NywgCisgICAgMTE4ODA3LCA5MTc4OTEsIDQyNzc4LCAxMDAwMCwgNDEwODgsIDQ0OSwgMTI4NTA5LCAzNzc3LCA2ODQ1OCwgMTEzNzI1LCAKKyAgICA5NjM2LCAwLCAxMDczOCwgNjk2MzQsIDkzNjcsIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIAorICAgIDk4MzcyMywgNjQ0MDksIDM1OTYsIDEyOTA0NCwgMTIwODk1LCA5NzYzLCAxMjAyODAsIDc0NjA5LCAxMjM0NywgMTI0LCAKKyAgICAxMjk4MSwgNDExMjcsIDIwOTIsIDkyNjg3LCAwLCAxMjc1NTUsIDE5NDYzMiwgMTA4MjAsIDQzOTg3LCAwLCAxMjg5MDcsIAorICAgIDE3NjksIDQxNzE1LCAyNDYzLCA3MTIxNCwgODMwNzAsIDEyNzcwLCA3MTIyMiwgMTUzOCwgOTI2MTcsIDQzMTI0LCAKKyAgICAxOTQ2MTQsIDE5NDU4NSwgNzc5NSwgMTIwMzAwLCAxMjkwNTMsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMTAxMDM0LCAKKyAgICAxMjExMzAsIDk0OTgsIDEwMDQ5NCwgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAKKyAgICAxMjAyODcsIDEyMDI4NiwgMjY1MCwgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgCisgICAgNTUyMjgsIDExNzc0LCA0MTAxNiwgOTE3OTQ0LCA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIAorICAgIDY2MzMxLCAzNDU0LCAxOTkzMCwgNzgxNjMsIDQxMDE5LCAxMjY1NDYsIDk4MzY3MSwgNjUyOTIsIDY4MjIsIDEyODYyLCAKKyAgICA5ODM3MDcsIDAsIDQyMTQzLCA0MTgyOCwgNzgyMDcsIDY1NTMxLCA3MDg2NCwgMTE4ODc5LCA1NTIyMywgMCwgMTI4MDcxLCAKKyAgICA0MTgyNiwgODg2NSwgNjQwMiwgMTEzODI3LCAxMzI3OSwgNzkxNywgNzQ3NTUsIDkxNzk0OCwgNzczMywgOTgzNDA4LCAKKyAgICA0OTk4LCA2ODQ5MywgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAxMjc5MjMsIDgzMDc1LCA3MDA2MSwgNDAxMywgMTI4NzE4LCAKKyAgICAxMDg4MSwgMCwgMTI5MDQ1LCAxMjUyNjYsIDc0Nzg4LCAyMDE0LCAyNDMyLCA3MTkwMSwgOTc2NSwgMTk1MDUyLCAwLCAKKyAgICA5MTc4NTQsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAwLCAxMTkzMTUsIDIwMTUsIDEwMDg3MSwgCisgICAgOTI3NjUsIDcxODQwLCA2NjMxOCwgNDMyMzMsIDkxNzk5MiwgNDI1MTcsIDY4MDYwLCA5ODM2MTQsIDk4MzkwNCwgMTI2OTgsIAorICAgIDgwOTQsIDEwMTM1LCA2NTkwOSwgNjQ3NCwgNzk0LCA0MzQ5NywgMTI2NTYsIDY2MzM1LCAxMTkzNTMsIDY3Mjc5LCAxNjY1LCAKKyAgICA3MTg1MywgNDgzMywgOTE3OTg1LCA3MTE4OCwgMTI3MzY3LCAxMjE0NjQsIDE4OSwgMTI2MTEsIDAsIDEyODA5NCwgMjg1OSwgCisgICAgNDgzOCwgOTgzOTMwLCA0ODM0LCA2NTA3OCwgMCwgOTI5OTEsIDQ4MzcsIDY3NDEzLCA3NzAsIDkyNjcxLCA4MTEsIDcwMDYyLCAKKyAgICA0MTA0MiwgODMwNzMsIDQxMzE4LCA2NDQyNywgNzM5OTksIDY3NjkzLCA3ODg0OCwgMzg5NSwgOTI2MTUsIDc0MzQxLCAKKyAgICAzOTc2LCAxMjg0NjYsIDQyODU5LCAxMDE5MywgMzExNiwgNzc0NywgNzg0ODgsIDAsIDQzNDk2LCA5ODMwNjksIDEyMTAxNSwgCisgICAgNDM2ODYsIDc4ODQ2LCA0MTg3NywgOTgzNzQzLCAyODcxLCA2NDYxNCwgNjg4NDMsIDk5OSwgMTI1MTk4LCA2MzQ1LCAKKyAgICA0MTg3NiwgMjY2MywgMjAxNywgMTIxMjM0LCA2NzgyNCwgMTEwNDAsIDEwMTUwLCAxMjA2NzgsIDY0MzA4LCAxNTIyLCA1OTcsIAorICAgIDQ3NzUsIDEyNTU1LCAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIDEyNTg0LCAzMDkyLCAKKyAgICA5ODM4MzIsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCA4MzM0NCwgMTA4MTIsIDc4ODUxLCAxMjY1NzQsIAorICAgIDgzMzQyLCAzMDc4LCAxNDAyLCAwLCA4MzM0OCwgMCwgMTI1MDcyLCA3NDM3MSwgMzk0LCAzMDg4LCA4MzM0NywgOTIxNzIsIAogICAgIDkxNzk2NSwgMzk5MSwgNjQzOTEsIDgzMzQxLCAxMjg1MjQsIDQyNCwgNjYzMjgsIDE5OTksIDY5NjU5LCA3MzkxNCwgMCwgCi0gICAgMTI3NTM0LCA2NjkwMywgMTI4NDY4LCA0MjIzMSwgMjIwOSwgMTI1MTAzLCAwLCAwLCA0MTg0MCwgNjY5MTMsIDIzNzcsIAorICAgIDEyNTEyOCwgNjY5MDMsIDEyODQ2OCwgNDIyMzEsIDIyMDksIDEyNTEwMywgMCwgMCwgNDE4NDAsIDY2OTEzLCAyMzc3LCAKICAgICAxMjk4LCA2NDAxMSwgMTI1NzIsIDExMzE4LCAxMjU1NywgMTI1NTksIDEyNTcwLCA3NDc5LCAxMDAzLCAyMzczLCA5NDQ2LCAKLSAgICA3NDgxLCA5NDQ4LCA0OCwgOTgzMDg0LCA5NDgwLCA0ODEsIDAsIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIAotICAgIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDEyOTEzNSwgCisgICAgNzQ4MSwgOTQ0OCwgNDgsIDc4MDI5LCA5NDgwLCA0ODEsIDEwMDYxNSwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgCisgICAgOTQ0MywgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMTI5MTM1LCAKICAgICA5MjkzNCwgOTQyNCwgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDEyODA1MCwgCiAgICAgMjAwNCwgOTA5NiwgOTc4MiwgNzA4NDIsIDkxNzIsIDgzMDcxLCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIAotICAgIDc0NzczLCA3ODI3MSwgMTI4OTA5LCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgCi0gICAgOTgzODE3LCAxMjA4MzgsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDExODgwNSwgMTAzNTMsIDEwNDE3LCAxMjcyMzgsIAotICAgIDEyODczOSwgNjQ1MjQsIDkyNDE4LCA0MDE5LCAwLCAxMjUwODIsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgMTE5OTYzLCAKLSAgICAxMjEwNjcsIDEyODQzMCwgMTIwOTM5LCA0MjQxMCwgNzQ0NDgsIDExOTEzMiwgNjA1NCwgMTA2OTcsIDMxNjksIDQyMjk3LCAKLSAgICA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDEyODg0OCwgMTI4MTM5LCA5ODMyNjMsIDY4Njc4LCA3NDk4NiwgOTgzNzkwLCAKLSAgICAxMDQ5LCA0MzUxNywgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCA2NDc2MCwgCi0gICAgMTE3NjYsIDEwMzgsIDQyMzAzLCA5ODIzLCAxMjcyNzgsIDY5MjM2LCA0MDA4LCA2NDAwNCwgODc3MywgMTA3MzMsIDM2LCAwLCAKLSAgICA1MTUzLCA0MTgwNSwgMCwgNzM3MzUsIDc2MywgNDE4MDgsIDY0OTEwLCAxMjEzODksIDIwMDksIDAsIDEyNzk4NSwgNzQyNDUsIAotICAgIDk2NDAsIDExOTk1MSwgMCwgNjk4OTUsIDg2MjEsIDEyMDUyMywgMTI4NTIsIDMwMzEsIDk4MzA1MCwgNjQzNjEsIDEyOTA4OCwgCi0gICAgMTgyLCA2NjQxNCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIDExNzU0LCAKLSAgICAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIDEwMTAyLCA0MTE4OSwgNDAwMywgNDEwMjYsIAotICAgIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAxMjQ5NzcsIDQyMjUxLCAwLCA0MjUzNCwgNjUxNzksIDExMjg3LCA2MTI4LCAKLSAgICAxMTM4MTEsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDEyNTA1OCwgNjU1MDYsIDk4MzkxMiwgNjU4NjEsIDc0MDgzLCA2Njg3MiwgCi0gICAgOTkzMiwgNDM1MTYsIDgzMDYzLCA4MzA2NSwgODMwNjQsIDk4MTcsIDAsIDcxMjM0LCAwLCAxMjExNywgNjY1ODYsIDQxODMsIAotICAgIDEwNTQwLCA2NjI1MCwgOTA2MywgMTI3MDQ1LCAxMjg1NDcsIDExOTk1NCwgMTEzNjg1LCAxMjg5NywgMzc5MiwgMjAxMSwgCi0gICAgMTIxNDE4LCA2MDY1LCA0MzE2MCwgMTI4Mzc5LCAxMjA1OTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCAKLSAgICA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCA3ODAwMiwgMTIwMDM1LCA3NTEzLCAxODYzLCA0NzEwLCAKLSAgICAwLCA1OTU2LCA3NjIxLCA3ODAwNSwgOTI2MjQsIDQ3MDUsIDcxNiwgNzQ5MTgsIDAsIDQ3MDQsIDEyMDA0MCwgOTMwMjQsIAotICAgIDQyMjQxLCAxNjEsIDQzOTc3LCA3NDU0NiwgNjYyMTQsIDQ3MDYsIDc0MDc3LCA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAKLSAgICAxMTkwNjUsIDQzMjkzLCA2ODc3MSwgOTgzMTkwLCAxMTkxNjQsIDEyMDMyOCwgODMzMTksIDEwMTg3LCAxNzAwLCAxMTkyMjMsIAotICAgIDgzMzE1LCAwLCA3NDk4MCwgNDAwNCwgOTE3NTk1LCAxMDk2OCwgNDMyOTYsIDEyODMzMSwgODUwNiwgMTEzNzQ0LCAKLSAgICAxOTQ4MTIsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMTIxMzUwLCA3ODIxOCwgOTgzMTA5LCAKLSAgICA3NDYzLCA0NzI5LCAwLCAyMzUsIDEzODQsIDQ3MjgsIDc0ODg3LCA3MDQ5NCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgCi0gICAgMTI4NjIzLCA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDkyNTQ4LCAwLCA0MjUyNywgMTI5MTEsIAotICAgIDQzNDI3LCAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgCi0gICAgMTIwNDE2LCAyNjc0LCAxMzIzOCwgMTE5MjIsIDAsIDkyNTI5LCAzNTEwLCAxMzIzNCwgOTgzODMyLCAxMjA0MDcsIDU2MDUsIAorICAgIDc0NzczLCA3ODI3MSwgMTI4OTA5LCA2NDc4MiwgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAxMjkzNjUsIDgzMDYyLCAKKyAgICAxMzkyLCAxMjc3ODIsIDEyMDY5NiwgMTI3MzY0LCAxMDYwNiwgODA2NSwgNzA3MTAsIDEwMzUzLCAxMDQxNywgMTAwNjEzLCAKKyAgICAxMjUwMjMsIDY0NTI0LCA3MDcxMSwgNDAxOSwgMTAwOTUwLCAxMjUwODIsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgCisgICAgMTAwOTQ5LCAxMjEwNjcsIDEwMDk0NCwgMTIwOTM5LCA0MjQxMCwgNzQ0NDgsIDEwMTA4NSwgNjA1NCwgMTA2OTcsIDMxNjksIAorICAgIDQyMjk3LCA0MjMyMiwgMTA2NDIsIDM5MDksIDk5NTAsIDEyODIzMSwgMTI4MTM5LCA5ODMyNjMsIDY4Njc4LCA3NDk4NiwgCisgICAgOTgzNzkwLCAxMDQ5LCA0MzUxNywgNjU3MDcsIDIzMDQsIDQxODA2LCA5MjMyNiwgNDIzMzYsIDM5MjEsIDAsIDExNzc1LCAKKyAgICA2NDc2MCwgMTE3NjYsIDEwMzgsIDQyMzAzLCA5ODIzLCAxMjcyNzgsIDY5MjM2LCA0MDA4LCA2NDAwNCwgODc3MywgMTA3MzMsIAorICAgIDM2LCAwLCA1MTUzLCA0MTgwNSwgMTE5MTUzLCA3MzczNSwgNzYzLCA5MjExLCA2NDkxMCwgMTIxMzg5LCAyMDA5LCAwLCAKKyAgICAxMjc5ODUsIDc0MjQ1LCA5NjQwLCAxMTk5NTEsIDEyNzMxNiwgNjk4OTUsIDg2MjEsIDEyMDUyMywgMTI4NTIsIDMwMzEsIAorICAgIDk4MzA1MCwgNjQzNjEsIDEyOTA4OCwgMTgyLCA2NjQxNCwgOTI3MTYsIDkyNTk4LCAxMTk5NTAsIDQyNjEzLCA5MDU4LCAKKyAgICAzNjYsIDAsIDk4OTIsIDU5NjksIDExNzU0LCAxMDg0OCwgNDU3MCwgNjUzMDEsIDQ0MDEzLCA0MjU1LCAxMjc4ODksIAorICAgIDEwMTAyLCA0MTE4OSwgNDAwMywgNDEwMjYsIDY4MTA5LCAxMzI5MywgNDExOTIsIDY5NjM1LCAxMjQ5NzcsIDQyMjUxLCAKKyAgICA5ODM5NjMsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIDExMzgxMSwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMTAxMDkyLCAKKyAgICA2NTUwNiwgMTE5MjQ4LCA2NTg2MSwgNzQwODMsIDY2ODcyLCA5OTMyLCA0MzUxNiwgODMwNjMsIDgzMDY1LCA4MzA2NCwgCisgICAgOTgxNywgMTAwOTM3LCA3MTIzNCwgNzA3NDksIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCA5MDYzLCAKKyAgICAxMjcwNDUsIDEyODU0NywgMTE5OTU0LCAxMTM2ODUsIDEyODk3LCAzNzkyLCAyMDExLCAxMjE0MTgsIDYwNjUsIDQzMTYwLCAKKyAgICAxMjgzNzksIDEyMDU5NSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIDQxMTg3LCAxMTY1OSwgNzkyMiwgCisgICAgMTI2MTQsIDIwMDUsIDg1MjMsIDcyODUyLCAxMjAwMzUsIDc1MTMsIDE4NjMsIDQ3MTAsIDEyMDAzMCwgNTk1NiwgNzYyMSwgCisgICAgNzgwMDUsIDkyNjI0LCA0NzA1LCA3MTYsIDc0OTE4LCA5ODM0NTMsIDQ3MDQsIDEyMDA0MCwgOTMwMjQsIDQyMjQxLCAxNjEsIAorICAgIDQzOTc3LCA3NDU0NiwgNjYyMTQsIDQ3MDYsIDc0MDc3LCA2OTkxNCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAxMTkwNjUsIAorICAgIDQzMjkzLCA2ODc3MSwgMTk1MDMwLCAxMTkxNjQsIDEwMDc3MCwgODMzMTksIDEwMTg3LCAxNzAwLCAxMTkyMjMsIDgzMzE1LCAKKyAgICAwLCA3NDk4MCwgNDAwNCwgOTE3NTk1LCAxMDk2OCwgNDMyOTYsIDcyODIzLCA4NTA2LCAxMTM3NDQsIDE5NDgxMiwgCisgICAgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAxMjEzNTAsIDc4MjE4LCA5ODMxMDksIDc0NjMsIDQ3MjksIAorICAgIDk4MzM5MywgMjM1LCAxMzg0LCA0NzI4LCA3NDg4NywgNzA0OTQsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIDEyODYyMywgCisgICAgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCA5MjU0OCwgMCwgNDI1MjcsIDEyOTExLCA0MzQyNywgCisgICAgMTM4MywgODU2NSwgMjQ2OSwgMTIwMDI0LCA2NjkwLCA2MTU2LCA2ODExNywgNDM0MzksIDc5OTMsIDQyODgsIDEyMDQxNiwgCisgICAgMjY3NCwgMTMyMzgsIDExOTIyLCAxMjg0MDksIDkyNTI5LCAzNTEwLCAxMzIzNCwgMTI5MzY4LCAxMjA0MDcsIDU2MDUsIAogICAgIDQyMDk1LCAxMTM2NCwgOTIyODYsIDEzODAsIDY1NjE3LCAxMTE2MiwgMTIwMjYxLCAxMzE5NiwgMTMxOTcsIDEyMDMwOSwgCiAgICAgNjc3MDgsIDk0OTUsIDExOTM0NiwgMTI3MTU0LCA1OTU5LCA2Nzk4NCwgNzM5NzYsIDY2Mjc1LCA0MzM3MSwgNjk0MSwgCiAgICAgMTE5MzQ5LCAxMzIwNSwgMTMyMTEsIDU4MDEsIDEyNzY5LCA2NTkwNSwgNDE2OTcsIDEyODMsIDgyOTUyLCA0Nzc5LCAKICAgICA5ODM5MjIsIDM3MTksIDQwMDYsIDk4MzU2OSwgMTk5NTcsIDcxMTg2LCAyMDIxLCAxMTkzMzIsIDQzODc3LCA4MzE0MCwgCiAgICAgNDMwMjgsIDY1NDkzLCA0MTgzOCwgMzg3NSwgNTk2MiwgNjQzNDEsIDkyNjE2LCA5ODE0LCA0MzQ1NywgNTgyNywgMzMxNCwgCi0gICAgNzc4NywgNzExODksIDY1NDk0LCA2ODE1MywgMTI2OTkxLCAxOTQ2OTcsIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAKLSAgICAxMjg3NTMsIDk4Mzk1OCwgNjYzMTYsIDY1NDY3LCA1NzcxLCA0MTI5OCwgOTgzNzk0LCA5NzQyLCA1MjEsIDAsIDEwODAwLCAKLSAgICA5MjIyMiwgODQwNCwgMTk0NjI1LCA0ODMsIDcwOTYsIDcwODksIDY2MzIzLCA5MjgsIDAsIDAsIDExOTAxOCwgMTA1OTksIAotICAgIDExNTg2LCAzOTg5LCAxMDk3MSwgNDM3NDgsIDY1NzgyLCA5ODQxLCA4ODQzLCAxMjE0NSwgNjcyNjEsIDEwMDc0LCA3ODU0OCwgCi0gICAgOTM5OTksIDM3NjksIDAsIDAsIDEyODcwMywgOTgzMTA3LCA5NTczLCA5MTc5OTgsIDY1MjkwLCA4ODQ5LCAxMTkyNTQsIAotICAgIDY1ODU1LCA2NTExMiwgMTc5NiwgNzEwNDYsIDAsIDY5NjY1LCA4MTY0LCA0MTMwMSwgMzUwMiwgODMxMzUsIDczODgsIAotICAgIDEwNjIxLCA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgOTIyMDMsIDkyOTE1LCAxMjY2MSwgNzYwOCwgCi0gICAgMTAzNTQsIDEwNDE4LCA0MjQxMSwgMjAyMiwgMCwgMTQwOSwgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIAotICAgIDEzOTAsIDcwMTg0LCAxOTQ3MDQsIDQyMSwgNDM1MzYsIDU4NDYsIDEyMDEyMCwgNDEzMCwgMTI3Nzc1LCA3NTk1LCA0MjU4OCwgCi0gICAgNzYwMCwgNzQ0MDAsIDY2MDM1LCAxOTUwOTEsIDAsIDY1ODUxLCA0MjYwNywgMTI0OTU1LCA5MjQwMywgMzE2OCwgNjc3MzMsIAotICAgIDQyMTM0LCAxMTgzMSwgMjM3MCwgMjg0NiwgOTI2MDUsIDEyODA4NCwgMCwgMTIwMTMyLCAxMjc3NDUsIDE4MzYsIDAsIAotICAgIDEyMTIwNywgOTI1NTgsIDM3NDAsIDY5ODQzLCA2MjkwLCA2NTM3NCwgMTIwNDUxLCAyMzkwLCAzOTQ0LCA2NjYyOCwgCi0gICAgMTE5MDA2LCAwLCA2MTM1LCAzMTE4LCA3NDI2NSwgMTE5MDkzLCA4MzMxMCwgNzc5NzUsIDAsIDgxMjcsIDg5NzUsIDY0NzM5LCAKLSAgICA3OTQzLCAxMjQ5NjgsIDExOTIzNCwgMTA2MTgsIDI1ODQsIDAsIDAsIDEyODIyNSwgOTk5OCwgMTIwNTczLCA4MzMwNiwgMCwgCi0gICAgMTI3NzUwLCA0MzUwOCwgNjIwNCwgMTI3MDQ0LCAxMjEzNzQsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgCi0gICAgMTIwMTMwLCA0MjY3LCAxNjMxLCA0MjIwNiwgNzc5ODMsIDEyODAxNSwgMTk1MDQ2LCA2NTcwMCwgNjYzODYsIDAsIDY0NjQ1LCAKLSAgICAwLCA5Mjg4NywgMTI2NTg4LCAxMjU4NiwgMCwgOTI0MiwgMTIwMTAwLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgCi0gICAgOTgzNzk3LCA3NzkzLCA3ODI3NSwgOTMyOCwgMTE5MTA0LCA3ODM5MywgMTI2MDQsIDkyODg1LCA2NjE1LCAyMjg1LCAKLSAgICA5MjM0NCwgMzk4NiwgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCA5MjI0NywgOTgzMzYwLCA5NTQxLCA3ODI3NiwgCi0gICAgMTEzNjY5LCAxMTI3NSwgODU0MCwgMTE0OTgsIDEyMDg2OCwgOTgzMzU5LCA0MTA0MCwgMjQ1OSwgMTI3MzAyLCAxMzA2MCwgCi0gICAgNDEwNDEsIDc0NDEzLCA5ODMxMzgsIDAsIDc3OTMxLCA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAKLSAgICAzNzY1LCA5Mjg4MSwgOTE3NjEyLCAxNjA2LCAxMjAzNDgsIDkyMjk5LCAzMDkzLCA2ODQzNiwgMTI4MDQwLCA5ODMwNjEsIAotICAgIDExOTYxMywgMCwgMCwgNDMxMiwgNzQwOTEsIDEyMDMzNywgNzQ5ODMsIDExOTIzLCA0MDIzLCA2ODM5OSwgNTc2MywgCi0gICAgOTQwMTUsIDQ4MjcsIDEwODk0LCAxMjgxMCwgNjQ0MDYsIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCAKLSAgICA2NjY2MCwgMjQ5OSwgNjcxNjcsIDY3MTY2LCAxMTg4MzcsIDExOTczLCAxMzA4OSwgNDI5MywgMTIwMzI5LCA0MjIyNCwgCi0gICAgNDI3NTgsIDEyMTk2LCA0MjgzNywgNDIyMjYsIDExOTMxOSwgMTI3OTkyLCAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIAotICAgIDMxMjAsIDk3OTcsIDAsIDAsIDExMDg2LCAxMDM4OSwgMTI2NDg1LCAxMjg3ODQsIDQ4OTUsIDY1MzU4LCAxMjQ5NDEsIAotICAgIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAxMjExNjAsIDk4MzEwNiwgCi0gICAgNzAwNCwgMTEzNjY3LCA2NTg4MCwgMTI2NTE0LCAxMTkwNDgsIDIzODAsIDExMzgwLCA5ODM4NjMsIDkzOTk2LCAyMzc2LCAKLSAgICA3ODg0MSwgODM0MDIsIDAsIDUxOTcsIDcwODM5LCAxMjcwNDcsIDEyNzA0OCwgMjM2NiwgMTI3MDUwLCAxMTk2MDQsIAotICAgIDcwODM3LCAxMjAwNDUsIDAsIDEyODU1NCwgMCwgOTE3ODQ2LCAwLCAwLCAwLCA3NDE4OCwgNzEzNDIsIDc4NDU1LCA3NTA0OCwgCi0gICAgMTEzNjc1LCA3NDkwMCwgMTIwMDQ2LCAxMjc1NDIsIDEyMDA0OSwgOTgzMzY2LCAxODQ3LCAxMjA5NzgsIDEwMzM5LCAKLSAgICA5ODMzNjcsIDQyMzg0LCAxMjEzNzksIDQyMjcsIDc0MTU4LCAwLCA3NDQ5OCwgNDMwMzIsIDEyMTEyNCwgNDIzNjUsIDAsIAotICAgIDEyNjcxLCAxMTM4NCwgMTIwMDU5LCA3NDI2NCwgMTIwMDU4LCA2NDc5NywgOTgzMzQ3LCA1ODIwLCA5ODMzNDYsIDEyMDA1MiwgCisgICAgNzc4NywgNzExODksIDY1NDk0LCA2ODE1MywgMTI2OTkxLCAxOTQ2OTcsIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgNzI4NzksIAorICAgIDEyODc1MywgOTgzOTU4LCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA4MzEzOCwgOTc0MiwgNTIxLCA5ODM5MTEsIAorICAgIDEwODAwLCA5MjIyMiwgODQwNCwgMTk0NjI1LCA0ODMsIDcwOTYsIDcwODksIDY2MzIzLCA5MjgsIDk4MzkwOCwgNjQwNDEsIAorICAgIDExOTAxOCwgMTA1OTksIDExNTg2LCAzOTg5LCAxMDk3MSwgNDM3NDgsIDY1NzgyLCA5ODQxLCA4ODQzLCAxMjE0NSwgCisgICAgNjcyNjEsIDEwMDc0LCA3ODU0OCwgOTM5OTksIDM3NjksIDEyNzk1OCwgMCwgMTI4NzAzLCA5ODMxMDcsIDk1NzMsIAorICAgIDkxNzk5OCwgNjUyOTAsIDg4NDksIDExOTI1NCwgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgOTgzNDI4LCA2OTY2NSwgCisgICAgODE2NCwgNDEzMDEsIDM1MDIsIDgzMTM1LCA3Mzg4LCAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIAorICAgIDcyNzQ5LCA5MjkxNSwgMTI2NjEsIDc2MDgsIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDk4MzQyOSwgMTQwOSwgCisgICAgMTIxOTUsIDQwMDEsIDMxMTIsIDEwODI0LCAxMjA2MzksIDEzOTAsIDcwMTg0LCA3ODUxNSwgNDIxLCA0MzUzNiwgNTg0NiwgCisgICAgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCA3NjAwLCA3NDQwMCwgNjYwMzUsIDE5NDc5OSwgMCwgNjU4NTEsIAorICAgIDQyNjA3LCAxMjQ5NTUsIDkyNDAzLCAzMTY4LCA2NzczMywgNDIxMzQsIDExODMxLCAyMzcwLCAyODQ2LCA5MjYwNSwgCisgICAgMTI4MDg0LCAwLCAxMjAxMzIsIDEyNzc0NSwgMTgzNiwgMCwgMTAwNzgyLCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIAorICAgIDY1Mzc0LCAxMDA3ODUsIDIzOTAsIDM5NDQsIDY2NjI4LCAxMTkwMDYsIDk4MzkxNiwgNjEzNSwgMzExOCwgNzQyNjUsIAorICAgIDExOTA5MywgODMzMTAsIDc3OTc1LCA5ODM4ODksIDgxMjcsIDg5NzUsIDY0NzM5LCA3OTQzLCAxMjQ5NjgsIDExOTIzNCwgCisgICAgMTA2MTgsIDI1ODQsIDAsIDAsIDEyODIyNSwgOTk5OCwgMTIwNTczLCA4MzMwNiwgMCwgMTI3NzUwLCA0MzUwOCwgNjIwNCwgCisgICAgMTI3MDQ0LCAxMjEzNzQsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3MDA3NSwgMTIwMTMwLCA0MjY3LCAxNjMxLCAKKyAgICA0MjIwNiwgNzc5ODMsIDEyODAxNSwgMTk0NzUzLCA2NTcwMCwgNjYzODYsIDAsIDY0NjQ1LCAwLCA5Mjg4NywgMTE5MTU0LCAKKyAgICAxMjU4NiwgMCwgOTI0MiwgMTIwMTAwLCAwLCA0NTIzLCA1ODQyLCAxMDQ5NSwgMzEyMiwgOTgzNzk3LCA3NzkzLCA3ODI3NSwgCisgICAgOTMyOCwgMTE5MTA0LCA3MDY4NSwgMTI2MDQsIDkyODg1LCA2NjE1LCAyMjg1LCA2Njc5NiwgMzk4NiwgNDQwMjUsIDAsIAorICAgIDg5MTIsIDY0NTU1LCA3NDA5LCA5MjI0NywgOTgzMTkwLCA5NTQxLCA3ODI3NiwgMTEzNjY5LCAxMTI3NSwgODU0MCwgCisgICAgMTE0OTgsIDEyMDg2OCwgMTI4NTQwLCA0MTA0MCwgMjQ1OSwgMTI3MzAyLCAxMjU1OCwgNDEwNDEsIDc0NDEzLCA5ODMxMzgsIAorICAgIDAsIDc3OTMxLCA2ODQyNywgMTA0NTAsIDEyNTUxLCA0MTA0MywgNzAyMCwgMTIwMzUzLCAzNzY1LCA5Mjg4MSwgOTE3NjEyLCAKKyAgICAxNjA2LCAxMjAzNDgsIDkyMjk5LCAzMDkzLCA2ODQzNiwgMTAwNzE4LCA5ODMwNjEsIDExOTYxMywgOTgzOTM4LCAxOTQ3NTYsIAorICAgIDQzMTIsIDc0MDkxLCAxMjAzMzcsIDc0OTgzLCAxMTkyMywgNDAyMywgNjgzOTksIDU3NjMsIDk0MDE1LCA0ODI3LCAxMDg5NCwgCisgICAgMTI4MTAsIDY0NDA2LCAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDY3MTY3LCAKKyAgICA2NzE2NiwgMTE4ODM3LCAxMTk3MywgMTMwODksIDQyOTMsIDEyMDMyOSwgNDIyMjQsIDQyNzU4LCAxMjE5NiwgNDI4MzcsIAorICAgIDQyMjI2LCAxMTkzMTksIDEyNzk5MiwgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAzMTIwLCA5Nzk3LCAwLCAwLCAKKyAgICAxMTA4NiwgMTAzODksIDEyNjQ4NSwgMTI4Nzg0LCA0ODk1LCA2NTM1OCwgMTI0OTQxLCA0MzU5LCA1ODUsIDIzODMsIDM1MDksIAorICAgIDcwMDM3LCA0ODYsIDQyOTAsIDU3NTgsIDEwMDc3NSwgMTIxMTYwLCA5ODMxMDYsIDcwMDQsIDExMzY2NywgNjU4ODAsIAorICAgIDEyNjUxNCwgMTE5MDQ4LCAyMzgwLCAxMTM4MCwgOTgzODYzLCA5Mzk5NiwgMjM3NiwgNzg4NDEsIDgzNDAyLCA5ODMyNTYsIAorICAgIDUxOTcsIDcwODM5LCAxMjAyNDgsIDEyNzA0OCwgMjM2NiwgMTAwNzEzLCAxMTk2MDQsIDcwODM3LCAxMjAwNDUsIDAsIAorICAgIDEyODU1NCwgMCwgOTE3ODQ2LCAxMDA3MTUsIDAsIDAsIDc0MTg4LCA3MTM0MiwgNzg0NTUsIDc1MDQ4LCAxMTM2NzUsIAorICAgIDc0OTAwLCAxMjAwNDYsIDEyNzU0MiwgMTIwMDQ5LCAxMDA3NzQsIDE4NDcsIDEyMDk3OCwgMTAzMzksIDEwMDc3MiwgCisgICAgNDIzODQsIDEyMTM3OSwgNDIyNywgNzQxNTgsIDAsIDc0NDk4LCA0MzAzMiwgMTAwOTI2LCA0MjM2NSwgMTk0ODMzLCAKKyAgICAxMjY3MSwgMTEzODQsIDEyMDA1OSwgNzQyNjQsIDEyMDA1OCwgNjQ3OTcsIDk4MzM0NywgNTgyMCwgMTI4MDE4LCAxMjAwNTIsIAogICAgIDEyMDA2NSwgMTI4ODI1LCAxMjAwNjQsIDEyMDA1MywgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAxMjAwNjMsIDEyMTI4NiwgCiAgICAgNzM3NywgMTIwMDUxLCA0MTc5OSwgNjU1MzAsIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgMTIxMTMyLCAKLSAgICA2ODY2MCwgMCwgMTA4NTMsIDkyNiwgOTgzMzcxLCA3NDE4NCwgMTIwOTE1LCAxMjAwNTUsIDExOTMwMSwgNDMxNzUsIDAsIAotICAgIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIDExOTYwNSwgNTIwLCA0MjAwLCAKLSAgICAxMjY5OSwgODMzMSwgNzAxMTgsIDMwOTEsIDQxMDM0LCA2NjI5OCwgNzAyOTMsIDgzNjAsIDk4MzQ0NSwgNzgwNDQsIDMyMSwgCi0gICAgNDIyOSwgNjQ1NDMsIDEyODQ3MCwgNjU1NjMsIDE5NDg3MywgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDEyMTQyOCwgCi0gICAgOTE5NSwgOTIzODYsIDE4NjEsIDAsIDczNzMzLCA5MTc3ODAsIDY4ODM5LCA0MzA0MSwgMCwgNDM3OTQsIDEyODUzMCwgCi0gICAgMzg1OSwgMTIxODEsIDQxNjYwLCA4MjA5LCA3MDc5MywgNzM4NjcsIDEyOTczLCA3NTAxNCwgNzQ3NTcsIDEyNzUxNCwgCi0gICAgNDE2NTgsIDEyODM3NiwgMTIxMjM1LCA1NzYwLCAxMTM2OTksIDc0MywgNDQxNCwgMTIwNzY2LCAwLCA0MjYzMiwgMTI3MjM2LCAKLSAgICA2NTE2MSwgNzM4OTYsIDEyODU4OSwgMCwgMTQwNSwgMTE5MDYzLCA0MzIyMCwgNDMzNDEsIDAsIDE5OTE5LCA3MDI3OCwgCi0gICAgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMTExOTksIDEyNTA3NywgMzUxMywgNzExMTUsIDcwMzQxLCA0MzM0MiwgMTE5MDY0LCAKLSAgICA2NTUyOSwgNjUzNjQsIDgzMjA4LCA4MzE3MCwgNjQ4NSwgMTM5NywgMTk0NzgxLCA0MTk4NiwgOTI2NzgsIDgzMjA0LCAKLSAgICA4MzIxMiwgNzQwOTcsIDgzMjEzLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDY4NDMsIDQzMjg3LCA5MjMxNywgMCwgNjc0MDYsIAotICAgIDEyMDIzOSwgMTk0Njc4LCA3MTkxNCwgMTA5OSwgMTA0OTAsIDgzMjAxLCAxMDUwMSwgNjUxODEsIDc0NDYzLCAxMjg5NTIsIAotICAgIDQ2NCwgNDE2MjQsIDY1MjgzLCA2NzY2MywgNzgyMjIsIDEzNDYsIDE5NDYwOSwgNjU2NzksIDY0NTczLCA2NDg5NywgNDIzLCAKLSAgICAxODE4LCA2NTE0NCwgODI5NjMsIDgyNzIsIDEyNzgxMiwgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjE0NDcsIAotICAgIDQzNTY0LCAwLCA5ODMxODIsIDk1ODQsIDEwNDY1LCA5ODM5MDIsIDc0MzU5LCAxMjYyNiwgOTEwNiwgMCwgNDI2NDIsIAotICAgIDcxMjM1LCA2NDc1MCwgOTM5MCwgMCwgNDE3OTcsIDE5NDczMCwgMTI4MzMzLCAyNjUsIDQxNzk1LCA2NDY2NiwgNzQ2MjgsIAotICAgIDQzNTMwLCAyNzUyLCAxMjczNjUsIDEyODQ1OSwgMTI2NDgyLCA1OSwgOTgzNjcxLCAxMjE0MTAsIDExMTQ5LCA3ODA3NCwgCi0gICAgNzc4NzMsIDQxODEwLCA4MzE2MiwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDU4NzcsIDQyMjUyLCA0MjIxMywgCi0gICAgODAwOSwgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDQzODQ4LCAxMzEyNywgMTIwMDY3LCA5ODM5NDYsIDc0Mzk3LCAKLSAgICAxMjAyMzUsIDEyODY0MSwgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgNzUwMTcsIDIxMDMsIDEwMzg3LCA0NDUzLCAKLSAgICA0MzI3NiwgOTE3NzgzLCAxMTE2OSwgMTI4OTM5LCA2NDgxLCA0MTIxMywgMCwgMCwgMTI5MTMzLCAxMTk5MjksIDQxOTgzLCAKLSAgICA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCA5Mjk5NSwgNDYyLCA2ODExMCwgMTA0OTMsIDEyMTQ0OSwgODEyOSwgOTI5OTQsIAotICAgIDEyODM2NSwgNzQ0NzEsIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAwLCAKLSAgICAxMTkwMTMsIDQzMzQwLCAxMTEyMywgNDEwMzMsIDY0OTMsIDQyNjI2LCAwLCAxMjkwNTEsIDExNDI2LCA3Nzg4NywgMTY4MSwgCi0gICAgMTE4Nzg5LCAxMjA0LCAzNzU1LCA2NDY2MSwgNzIzNSwgMTAxNzAsIDM5NjYsIDg5MTEsIDAsIDQxODQxLCA0MzMzOCwgMCwgCi0gICAgMTE5MzIzLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDk4MzkxMywgMCwgNDE0OTcsIDY1MDQ0LCAxMjAxMDksIDI4NTEsIDQzMDE3LCAKLSAgICA5ODM1ODksIDEyMDg5NiwgNDM3MywgNzgwNTgsIDAsIDk1ODcsIDE3ODksIDY2NzEsIDEyODg0MCwgMzEwMCwgMCwgNjUzNjAsIAotICAgIDkxNzU4OSwgOTIzNjUsIDEyODIwMiwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCA4MzE0MSwgNjUwNiwgNjQzMTIsIAotICAgIDc0Mzc0LCAyMzY4LCA5ODMxODcsIDQ0MTksIDEyMTI1OSwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIAotICAgIDg4OTEsIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMTIwMTA3LCA4OTkwLCAyODQ4LCA5Mjk4MSwgMTIxMzcyLCA3Mzk0MiwgCi0gICAgMjQ5LCAwLCAwLCAwLCAxMjA2NTgsIDExOTMyNCwgMTI4NzEyLCA4ODgzLCAxMTk4NjAsIDcyOCwgMTExNzMsIDk5NSwgMCwgCi0gICAgMTIxMDQ3LCA2NDgyNiwgMTI0OTMxLCA5MTc3OTgsIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgMCwgMTIyNzMsIAotICAgIDE5NDgxNCwgNjc3MTQsIDEyMTEyLCA2NzI3MiwgNjcyNjUsIDY3MjczLCA2NzI3NCwgMTIzMzUsIDEyMDEwNCwgNjgwMTksIAotICAgIDM0NDMsIDMxMjksIDY3MjY3LCAyMTAyLCA2NTQ0NSwgNzgyNTgsIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgMTExMjAsIAotICAgIDkyMDUsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDEyODUxOSwgNDE4OTQsIDAsIDYyNzcsIDQxNjcyLCA0MTg5MywgCi0gICAgMTAwMTAsIDEyNzM4MSwgMzU0MCwgMTIxNDUwLCA4MzUsIDcxMzQwLCA2OTgxNiwgMTE5ODU0LCA3NDQwOCwgMCwgNjcxMDgsIAotICAgIDU0MjYsIDQyNTgsIDgzMTg4LCAxMjA4NTgsIDU0MjQsIDkyMzA2LCA4MjgzLCAxMjc5NzgsIDU0MzQsIDgzMTk2LCAKLSAgICAxMjkwMjcsIDE5OTE3LCAxMTQwOCwgMCwgMTE5NDcsIDEyODMzMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyMTEyMiwgMzQ2NCwgCi0gICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAxMjkxMjMsIDU3MCwgODA5NSwgMzY3MiwgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgCi0gICAgMTI4NTM5LCA0MzEsIDY3ODIwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY2MywgMTMwOTYsIDEyODY0MywgCi0gICAgMTIxMDE4LCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIAotICAgIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgMTE0MTgsIDAsIDU4NzgsIDk4Mzc5OSwgCi0gICAgMCwgMCwgMCwgNjQ4NCwgMjU0MSwgNjYwMzksIDExMzc3NywgNzgxNTcsIDkyNzIzLCAzNTQ5LCAxOTUwNjcsIDkxMTAsIAotICAgIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDEyODU4NSwgOTA5NywgMTk1MDI2LCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCAKLSAgICA0MjcwNywgODU3MywgMTIwOTAzLCAxMjY0OTQsIDAsIDcxMTAyLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgCi0gICAgMTI1MTExLCA1ODcyLCA2NDk1LCAxMjkxMjUsIDAsIDAsIDkyNTQzLCA2NzE3MywgNjcxNzIsIDEyODQ5LCAzOTUzLCAxODk3LCAKLSAgICA5MzA3MSwgNjUwOTQsIDExOTk0LCA0MzM5LCA3NDU1NiwgOTI2NTQsIDY3ODQzLCAwLCAwLCAxMTkwODcsIDY4NDczLCAKLSAgICA3NDEwNCwgNTIyOCwgMTE5ODM1LCA3ODY4LCA0MzE4NCwgMCwgMTIwOTU1LCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAKLSAgICA5MTc1NTMsIDExNjIsIDc0OTk1LCAyNjcxLCAxMjg1NjcsIDEyNzE5OCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIAotICAgIDczODExLCA5ODM1NzMsIDE5NTAwNSwgMTE4OTI4LCA2ODA4NSwgMTk5MjEsIDczODIxLCAxMTQyNCwgMTk1MDAyLCA0NTY3LCAKLSAgICA0MTg5MSwgMCwgOTgzNzg4LCA1NTI0OSwgNDgyMCwgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAKLSAgICAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIDcwMjcyLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgMTEzMzEsIDYxNDcsIAotICAgIDE5NDk0MSwgNDMyODIsIDg4MzMsIDY5OTk4LCAwLCA2NTA0LCA3ODQwOCwgMTIxMTY2LCAxMDcxOSwgNzAyNzUsIDE4OTgsIAotICAgIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAxMjExMzgsIDgzMDk3LCA2NjQ4LCAxMDY3MSwgMjUyOCwgMCwgNjQ3ODksIAotICAgIDkxNjksIDgzOCwgNjg4MTksIDY4ODA3LCA4NDQsIDUwMTQsIDY2Mjk3LCAyNTYsIDY4ODE4LCA5OTkwLCAxMjgzOTgsIAotICAgIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCA4MzIyNCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCA3ODcxOSwgCi0gICAgNjY1NzMsIDAsIDc4NzI0LCA3ODcxMiwgMTE3NjEsIDEyMTMxNCwgODMyMjYsIDQxMDk0LCAwLCA3Nzk1OCwgMTk0ODkzLCAKLSAgICA3ODQwMywgOTI2ODksIDYxOTYsIDY5NDUsIDkzOTY5LCAxMjA5NDIsIDY3MDk1LCAxMjA0OTEsIDExODE2LCA2ODg0NiwgCi0gICAgNTczMywgMjkzMCwgNzAyNzQsIDEyNzE3OSwgNDEwOTgsIDkyNzcxLCA0MTA5MywgNjg4MzQsIDY2NjI2LCA1ODgsIDk3NjAsIAotICAgIDEyNTA5OSwgMTk0NzE3LCAxMjM4LCAyMDAsIDk4MzIwNywgMTY2MCwgNzM5MTYsIDAsIDY3MTQxLCA3NDM2MiwgMCwgCi0gICAgOTI0ODUsIDEyNDkzMCwgMCwgNzQ5OTksIDMzOTQsIDE5NDg5NCwgMTIwNjY4LCAwLCA2OTk5NiwgMTI3MzU4LCA2NjIxOSwgCisgICAgNjg2NjAsIDAsIDEwODUzLCA5MjYsIDk4MzI5NiwgNzQxODQsIDEyMDkxNSwgMTIwMDU1LCAxMTkzMDEsIDQzMTc1LCAKKyAgICAxMjcxMDMsIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMDA0OTgsIDExOTYwNSwgNTIwLCAKKyAgICA0MjAwLCAxMjY5OSwgODMzMSwgNzAxMTgsIDMwOTEsIDQxMDM0LCA2NjI5OCwgNzAyOTMsIDgzNjAsIDk4MzQ0NSwgNzgwNDQsIAorICAgIDMyMSwgNDIyOSwgNjQ1NDMsIDEyODQ3MCwgNjU1NjMsIDEwMDc2NCwgMTI5MzEwLCAyODYxLCA0Mzc5MywgMTAwOTUsIAorICAgIDEyMTQyOCwgOTE5NSwgNzI3NjcsIDE4NjEsIDk4MzA1NiwgNzM3MzMsIDkxNzc4MCwgNjg4MzksIDQzMDQxLCAwLCA0Mzc5NCwgCisgICAgMTAwNzY5LCAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIDcwNzkzLCA3Mzg2NywgMTI5NzMsIDc1MDE0LCA3NDc1NywgCisgICAgMTI3NTE0LCA0MTY1OCwgMTI4Mzc2LCAxMjEyMzUsIDU3NjAsIDExMzY5OSwgNzQzLCA0NDE0LCAxMjA3NjYsIDAsIDQyNjMyLCAKKyAgICAxMjcyMzYsIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAxMDA1OTMsIDE0MDUsIDExOTA2MywgNDMyMjAsIDQzMzQxLCAxOTQ3OTIsIAorICAgIDE5OTE5LCA3MDI3OCwgNjQ1MzIsIDY1MzY3LCA0MzcxMCwgMTExOTksIDEyMTQwMCwgMzUxMywgNzExMTUsIDcwMzQxLCAKKyAgICA0MzM0MiwgMTE5MDY0LCA2NTUyOSwgNjUzNjQsIDgzMjA4LCA4MzE3MCwgNjQ4NSwgMTM5NywgMTk0NzgxLCA0MTk4NiwgCisgICAgOTI2NzgsIDgzMjA0LCA4MzIxMiwgNzQwOTcsIDgzMjEzLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDY4NDMsIDQzMjg3LCAKKyAgICA5MjMxNywgMCwgNjc0MDYsIDEyMDIzOSwgMTk0Njc4LCA3MTkxNCwgMTA5OSwgMTA0OTAsIDgzMjAxLCAxMDUwMSwgNjUxODEsIAorICAgIDc0NDYzLCAxMjg5NTIsIDQ2NCwgNDE2MjQsIDY1MjgzLCA2NzY2MywgNzgyMjIsIDEzNDYsIDE5NDYwOSwgNjU2NzksIAorICAgIDY0NTczLCA2NDg5NywgNDIzLCAxODE4LCA2NTE0NCwgODI5NjMsIDgyNzIsIDEyMTIwMywgMTk5MTEsIDQyMTgsIDMwODcsIAorICAgIDY0OTYwLCAxMjE0NDcsIDQzNTY0LCA5ODM3NDksIDk4MzE4MiwgOTU4NCwgMTA0NjUsIDk4MzkwMiwgNzQzNTksIDEyNjI2LCAKKyAgICA5MTA2LCA5ODMwNjQsIDQyNjQyLCA3MTIzNSwgNjQ3NTAsIDkzOTAsIDEyMDczNywgNDE3OTcsIDE5NDczMCwgMTI4MzMzLCAKKyAgICAyNjUsIDQxNzk1LCA2NDY2NiwgNzQ2MjgsIDQzNTMwLCAyNzUyLCAxMjczNjUsIDEyODQ1OSwgMTI2NDgyLCA1OSwgCisgICAgOTgzNDI3LCAxMjE0MTAsIDExMTQ5LCA3ODA3NCwgNzc4NzMsIDQxODEwLCA4MzE2MiwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAKKyAgICAxMTkzNjQsIDU4NzcsIDQyMjUyLCA0MjIxMywgODAwOSwgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDQzODQ4LCAxMzEyNywgCisgICAgMTIwMDY3LCA5ODM5NDYsIDc0Mzk3LCAxMjAyMzUsIDEwMDgzNSwgNjU5MTUsIDE0MDAsIDQxODEyLCAxMDY4NSwgNzUwMTcsIAorICAgIDIxMDMsIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAxMTE2OSwgMTI4OTM5LCA2NDgxLCA0MTIxMywgMCwgMTAwODM5LCAKKyAgICAxMjkxMzMsIDEwMDgzOCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDkyOTk1LCA0NjIsIDY4MTEwLCAKKyAgICAxMDQ5MywgMTIxNDQ5LCA4MTI5LCA5Mjk5NCwgMTI4MzY1LCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCisgICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDEwMDQ1NywgMTE5MDEzLCA0MzM0MCwgMTExMjMsIDQxMDMzLCA2NDkzLCAKKyAgICA0MjYyNiwgMCwgMTI5MDUxLCAxMTQyNiwgNzc4ODcsIDE2ODEsIDExODc4OSwgMTIwNCwgMzc1NSwgNjQ2NjEsIDcyMzUsIAorICAgIDEwMTcwLCAzOTY2LCA4OTExLCAxMDEwMTMsIDQxODQxLCA0MzMzOCwgMTk0OTU0LCAxMDA4NDgsIDU3MjYsIDY0OTE1LCAKKyAgICA0MjE3NSwgOTgzOTEzLCAwLCA0MTQ5NywgNjUwNDQsIDEwMDg0NCwgMjg1MSwgNDMwMTcsIDEwMDQ4NCwgMTIwODk2LCAKKyAgICA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAwLCA2NTM2MCwgMTAxMDEyLCA5MjM2NSwgCisgICAgMTIwOTM3LCA2NDkyMiwgMTAwNDg2LCA4MTkwLCAxMjA4MywgMCwgODMxNDEsIDY1MDYsIDY0MzEyLCA3NDM3NCwgMjM2OCwgCisgICAgOTgzMTg3LCA0NDE5LCAxMjEyNTksIDExOTEyNSwgMzQzOSwgMTgyNSwgMTE5MiwgMTAwNDg4LCA4ODkxLCAzMDgwLCAKKyAgICAxMjAyMjgsIDIzNDcsIDU0MzAsIDEwMDQ4NywgODk5MCwgMjg0OCwgOTI5ODEsIDEyMTM3MiwgNzM5NDIsIDI0OSwgCisgICAgOTgzMDQwLCA5MTc4NjksIDk4MzgyNSwgNzQ4MTQsIDExOTMyNCwgMTI4NzEyLCA4ODgzLCAxMTk4NjAsIDcyOCwgMTExNzMsIAorICAgIDk5NSwgMCwgMTAwNjU3LCA2NDgyNiwgMTAwNjU2LCAxMjkzNzEsIDEyODM0OCwgMCwgMTk5NDUsIDgwOTEsIDU1OCwgCisgICAgMTI5MTM0LCAxMjI3MywgMTI5MTU2LCA2NzcxNCwgMTIxMTIsIDY3MjcyLCA2NzI2NSwgNjcyNzMsIDY3Mjc0LCAxMjMzNSwgCisgICAgMTIwMTA0LCA2ODAxOSwgMzQ0MywgMzEyOSwgNjcyNjcsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgNjQ4OTEsIDE5NTA2OSwgCisgICAgNzcyNSwgMTE4NDMsIDExMTIwLCA5MjA1LCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAxMjg1MTksIDQxODk0LCAwLCAKKyAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjczODEsIDM1NDAsIDEwMDgyNywgODM1LCA3MTM0MCwgNjk4MTYsIAorICAgIDExOTg1NCwgNzQ0MDgsIDAsIDY3MTA4LCA1NDI2LCA0MjU4LCA4MzE4OCwgMTAwNzU4LCA1NDI0LCA5MjMwNiwgODI4MywgCisgICAgMTI3OTc4LCA1NDM0LCA4MzE5NiwgMTI5MDI3LCAxOTkxNywgMTE0MDgsIDEyNzM5MiwgMTE5NDcsIDEyODMzMCwgMTQwNCwgCisgICAgMzA5NSwgMTE0MzIsIDEyMTEyMiwgMzQ2NCwgNjQ4NiwgNDgxOSwgMTAwNzU5LCAxMjc0MDQsIDU3MCwgODA5NSwgMzY3MiwgCisgICAgMTE5ODY0LCAxNDk4LCA2Nzg2NiwgMCwgMTI4NTM5LCA0MzEsIDY3ODIwLCA3ODA4MCwgMTI4MTgyLCAxMjgwOTYsIDY4MTY3LCAKKyAgICA5ODM0NTksIDEzMDk2LCAxMjg2NDMsIDEyMTAxOCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAKKyAgICAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIAorICAgIDExNDE4LCAxMjA2ODEsIDU4NzgsIDkxNzg2MCwgMCwgMCwgMTk0ODc3LCA2NDg0LCAyNTQxLCA2NjAzOSwgMTEzNzc3LCAKKyAgICA3ODE1NywgOTI3MjMsIDM1NDksIDE5NTA2NywgOTExMCwgMTE5NjY1LCAyNzQzLCAxMjE0MzIsIDQzMjkwLCAxMjg1ODUsIAorICAgIDkwOTcsIDc0Mzc5LCA0MzAxNSwgODc4MiwgMCwgNzc2LCAyNTI0LCA0MjcwNywgODU3MywgMTIwOTAzLCAxMDA2NjYsIDAsIAorICAgIDcxMTAyLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIDExODgxOCwgMTAwNjYyLCA1ODcyLCA2NDk1LCAxMjkxMjUsIAorICAgIDEyNzQ2NywgMCwgOTI1NDMsIDY3MTczLCA2NzE3MiwgMTI4NDksIDM5NTMsIDE4OTcsIDkzMDcxLCA2NTA5NCwgMTE5OTQsIAorICAgIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDEyODk0NiwgMCwgMTE5MDg3LCA2ODQ3MywgNjY3NzgsIDUyMjgsIDExOTgzNSwgCisgICAgNzg2OCwgNDMxODQsIDAsIDEyMDk1NSwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgOTE3NTUzLCAxMTYyLCA3NDk5NSwgCisgICAgMjY3MSwgMTI4NTY3LCAxMjcxOTgsIDkyNjMyLCA5MjYzMSwgMTE4ODY1LCA0NTUzLCA3MzgxMSwgOTE3OTQ3LCAxMTM3MjMsIAorICAgIDExODkyOCwgNjgwODUsIDE5OTIxLCA3MzgyMSwgMTE0MjQsIDE5NTAwMiwgNDU2NywgNDE4OTEsIDEyNzAwNCwgOTgzNzg4LCAKKyAgICA1NTI0OSwgNDgyMCwgNjUyMzksIDEyOTMzOCwgMCwgMTAxMDQzLCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgCisgICAgNDI4MjEsIDkyNTAsIDcwMjcyLCA0NDM4LCA2NDM4NSwgMCwgMTc1MywgMTEzMzEsIDYxNDcsIDEyODYxMSwgNDMyODIsIAorICAgIDg4MzMsIDY5OTk4LCAwLCA2NTA0LCA3ODQwOCwgMTAwNjg4LCAxMDcxOSwgNzAyNzUsIDE4OTgsIDE0MTMsIDQyNDQzLCAKKyAgICA5ODMzODcsIDgwMiwgMTIxNDEsIDEyMTEzOCwgODMwOTcsIDY2NDgsIDEwNjcxLCAyNTI4LCA3Mjg4MCwgNjQ3ODksIDkxNjksIAorICAgIDgzOCwgNjg4MTksIDY4ODA3LCA4NDQsIDUwMTQsIDY2Mjk3LCAyNTYsIDY4ODE4LCA5OTkwLCAxMjgzOTgsIDQyNzM5LCAKKyAgICA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCA4MzIyNCwgNjQ4OSwgMTAwNDgsIDc0MzI2LCA3ODcxOSwgNjY1NzMsIDAsIAorICAgIDc4NzI0LCA3ODcxMiwgMTE3NjEsIDcwNjY1LCA4MzIyNiwgNDEwOTQsIDAsIDc3OTU4LCAxMTk5MTgsIDc4NDAzLCA5MjY4OSwgCisgICAgNjE5NiwgNjk0NSwgOTM5NjksIDEyMDk0MiwgNjcwOTUsIDEyMDQ5MSwgMTE4MTYsIDY4ODQ2LCA1NzMzLCAyOTMwLCAKKyAgICA3MDI3NCwgMTI3MTc5LCA0MTA5OCwgOTI3NzEsIDQxMDkzLCA2ODgzNCwgNjY2MjYsIDU4OCwgOTc2MCwgMTAwNTY4LCAKKyAgICAxOTQ3MTcsIDEyMzgsIDIwMCwgOTgzMjA3LCAxNjYwLCA3MzkxNiwgMCwgNjcxNDEsIDc0MzYyLCA5ODM3ODQsIDkyNDg1LCAKKyAgICAxMjQ5MzAsIDAsIDc0OTk5LCAzMzk0LCA3MDczNCwgMTIwNjY4LCAxMDA0NzcsIDY5OTk2LCAxMjczNTgsIDY2MjE5LCAKICAgICA3MjQyNSwgNDMyODQsIDY4MDcyLCA3ODE3LCAxODQxLCAxMTA1NSwgNjY4MzUsIDE5NDk3OSwgNzQ2MDcsIDE2NjksIAotICAgIDEwNzc2LCA3NDUzNCwgNzcwMSwgMTk0OTgwLCA5ODM0NTAsIDc0OTkyLCAxNzMyLCA0MDMwLCA5ODM0NDIsIDM5NjMsIAotICAgIDY1MzM1LCAxMjc1MzAsIDQxNzY4LCA2NDkxLCA2NTMzMywgNjUzMjQsIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDk4Mzg0NSwgCi0gICAgMjI4NywgNjUzMjgsIDkyNDQxLCA3NDM2NywgNzYxNCwgMCwgMTE4MTksIDcxOTA4LCAxMjAwOSwgMTIzOTksIDEyMTIxNywgCi0gICAgNjc4NTIsIDY1NTM3LCAwLCAxMDg0MSwgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCA4OTYwLCAwLCA3MDEyMywgCi0gICAgNjUzMTcsIDc3ODgwLCAwLCA1ODc2LCA3MDM3NCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCA3MTg2MiwgCi0gICAgMCwgMTI3OTU3LCAxMTk2MjEsIDExMTE0LCA3MTkwOSwgMTI0NDcsIDY0NDg2LCAxMjEyMzYsIDEyNjU2MiwgOTgzMTI5LCAwLCAKLSAgICAxMjEzOTMsIDk4MzgwMiwgNDI3NjcsIDEwOTE1LCA5ODMxNzQsIDEyMDA3LCA0MzY5NSwgNjgwMzMsIDExOTc1LCAxOTQ4NzgsIAotICAgIDAsIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQxMTMzLCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgODMxMDgsIAotICAgIDEyMDI0MSwgMTI4MTY0LCAwLCAwLCA5ODM1NTMsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgCi0gICAgNjU1OTYsIDY3ODM3LCAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCA3ODE5MSwgMTExNTcsIAotICAgIDc0Mzg2LCAxMjcyNzQsIDgyMzMsIDEyODIwLCA5ODM3MzAsIDY2ODMsIDEyNTExMiwgMzQ0MiwgMTIxNDQsIDI4NDEsIAotICAgIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgNjQzMjksIDEyMDg4MCwgNjcyNDMsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIAotICAgIDQxMTAwLCA3MjQxNywgNDExMDQsIDk0MDAzLCAzNDA2LCAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDk4MzM4NSwgNDQzNCwgCi0gICAgMTA2OSwgMTk0Nzg0LCAxMTg4NjIsIDY1NzM3LCAxMjEyMDIsIDEyODcwNSwgMCwgODMyMTEsIDk2OTMsIDQxOTQzLCAKLSAgICA2ODMwNSwgNDE5MzEsIDQxNzU5LCAxMjc1NywgNDM1MywgOTgzMzUzLCAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIAotICAgIDkxNzc3MCwgNjU5MzcsIDc4NTcyLCA0MTc1OCwgMTA2NDYsIDEyMTE1OSwgMTE4ODMzLCA5MjM3MiwgNzA0MjQsIDc0ODMwLCAKLSAgICA3ODU2OSwgMTI3NDMsIDk4MzY4OSwgNjQ4MCwgOTE3NzYxLCA0MTc3OSwgNDI1ODAsIDY2NjAxLCAxMjIwNywgNzc4OTUsIAotICAgIDYzMzUsIDQzOTE5LCAxMTMxMiwgNjQ4MDcsIDkyOTYyLCA2OTk4OSwgNDE3NjcsIDExOTYyOSwgOTgzNzY0LCA0MzAyMCwgCi0gICAgNzQ5NzQsIDM5NTUsIDc0MjU0LCAxMjA2MzIsIDk4Mzc1NCwgOTE3ODYxLCA3MDE4NywgNjk5NzUsIDk3NzAsIDkyNDYsIAotICAgIDEyMjMwLCAxMjUwNDcsIDEyOTEwNSwgNzg1ODAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIAotICAgIDY0NTcxLCA3ODU3OCwgMTk0OTI3LCA0ODU3LCA5ODM1NzcsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgMTI4MDYxLCA3ODU3NCwgMCwgCi0gICAgMTExMTYsIDQzODQyLCA1NzQ3LCA3ODgyNSwgNzA0NzEsIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIDQzODEyLCAKLSAgICA0MjE0NCwgNjUwMTUsIDAsIDU2MywgMCwgMTI5NDEyLCAxMjc5OCwgMTEyNzEsIDU3LCA5MjcxNywgODM0OTUsIDkxNzg2MCwgCi0gICAgMTE5MDQzLCA5MTc2MTgsIDk0MDUxLCA0MzEzNywgNjk0LCA5ODM3MTksIDk4NzYsIDAsIDExOTE2OCwgMCwgNzAzOTIsIAotICAgIDY0NTM3LCAxMjc5MTQsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCA5ODMxNDUsIDc0NDY2LCAxMzAyNSwgNjQ4MTEsIAotICAgIDg3NTcsIDc4ODI0LCA3ODE4OCwgMTU3NCwgNzM4MSwgMCwgMjUyNSwgNDg1MiwgNTc0OSwgNjg0NjUsIDEzMDI3LCA0MjgyNCwgCi0gICAgMTIwNTc0LCAxMDM5LCA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIDEyOTE1NiwgNjk3MjUsIDkwNTUsIAotICAgIDQxODUzLCA0ODU4LCA3NTAwMCwgOTE3OTkwLCA0MzYsIDQ3NzEsIDkxNzkzNiwgMjc4NiwgOTMwMjgsIDQ4NTYsIDgwNTEsIAotICAgIDkyNTAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCA3MTEzMywgMTI1MDA5LCAxMjg4NzMsIDE5NDkxNiwgMTIwNzMyLCA2NjcxMCwgCi0gICAgNjgwODQsIDk4MzM2MSwgNzM5MDYsIDY3NDA5LCAxMjcxMTQsIDkxNzkxNiwgMTAyMzQsIDU4NDMsIDExOTM5LCA3MDM0NiwgCi0gICAgNDIxNTcsIDAsIDMxNTcsIDE5NDY1OSwgNjgzOTMsIDc1MDM1LCAzNTA0LCA3MDQyMiwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAKLSAgICAxMDIyNiwgNjUxNDIsIDEyODAyNSwgMzU5NCwgNDI0MjQsIDEyNDk5MywgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgCi0gICAgMTIxNDY3LCA4ODM0LCAxMjA5NzQsIDEyODE1LCA0MzU3NCwgMTIxNDMwLCA3MzkwNywgMTI3NzkyLCA3MDExMywgNzIyMCwgCi0gICAgMTE4MzksIDEyMTE0MywgNzQzMTYsIDE5NDc1MiwgNjUzMjIsIDQzMDQsIDc0NTAzLCA4MTYwLCA3NDMxNCwgMTk0NzUzLCAKLSAgICAxMjEyNzYsIDAsIDEyODUyNiwgMTM0OCwgOTIzNDksIDc4NTk3LCAxMjExMzksIDEzMzAzLCA3MDQwNiwgOTIzOTIsIAotICAgIDEyODQ3NCwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAxMjc4MDUsIDEyNzExMCwgNzQzODcsIDc4MTc5LCA3ODU5OCwgCi0gICAgNzQ0OTIsIDYwOTcsIDc1NjgsIDg3ODAsIDQ5ODIsIDEyNzQ2NCwgNzQ1MDEsIDE5NDc2MywgNzg1OTIsIDY4NzQ1LCAyNjcyLCAKLSAgICAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMTI4MzcwLCA0Mzc0MiwgCi0gICAgMTI4MzczLCA5NDg3LCAxMTk5NTksIDY4Nzg1LCAzODQyLCA3MTkxMSwgNzg2NjgsIDEyNDQyLCA2MTkzLCA5NzkxLCAKLSAgICAxMTkzNDQsIDAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNjY3MjEsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCi0gICAgNzAwMDYsIDE5NDY5MCwgMTI3NTM3LCAzNjA0LCAxMjA2ODMsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIDQyNTA3LCAKLSAgICAxOTYyLCA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMTIxMDIxLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIDU0MzcsIAotICAgIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDk4Mzc3NiwgMTk5LCA2ODA3NSwgNDEwNSwgMTk0ODQ1LCAKLSAgICAxMjc5NDIsIDc1MDA2LCAxOTQ3MTAsIDY3ODE4LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDc4LCAxOTUwNzAsIAotICAgIDY0NzIsIDY1ODE0LCA3MTkxOSwgMTIxMjE4LCA0NzI0LCAxMjg0OTEsIDE5NTA0MSwgOTE5MSwgMTk0NjQ1LCA2NDQzMiwgCi0gICAgMTIwMjcwLCA4Mjk4NywgMTE5MTkwLCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCA5ODM0MjUsIAotICAgIDcxODcyLCA2Njc5LCA3NDQxMiwgOTIyNTEsIDE5NDg2NiwgNzQ0MjEsIDExMzgyLCAxMjgyNTQsIDQzODYyLCA3ODU5MSwgCi0gICAgMTEzNzMzLCAxOTQ2NzksIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIAotICAgIDEyODI1MiwgNDM4NzQsIDY1NDQyLCA2ODA0NywgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAwLCAxMTMyMSwgCi0gICAgMTI4ODQ1LCAxMjA4MDksIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDkzMDEwLCA3MzkyNywgCi0gICAgOTI0NDQsIDEyNzMzNiwgNjU3NDYsIDExODc5NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxMjEzMzksIAotICAgIDE2NzcsIDkxNzU5MiwgODI5ODksIDEyNjU5MCwgODM0MTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAKLSAgICAxMDE2MCwgMCwgMTI5MTUwLCA3NTg1LCA2NTE2OSwgMjA1MiwgNDMwOCwgODM0MTQsIDQzMDAwLCA3NTA1LCA1NDMsIAotICAgIDY0OTE2LCA2NDczNiwgMTE4ODM1LCAwLCA2NDY1NSwgOTgzMDUzLCAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAKLSAgICA5ODMyMzEsIDY1MjY1LCAxOTQ2MzksIDEyMTA4MCwgMTI3MTcwLCAxMjcwNDEsIDEyODAwNiwgOTI1NTAsIDk4MzE4NiwgCi0gICAgMTI5OTQsIDkyNzI4LCAxMDgyOCwgNzQzNzgsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgODMyMzEsIDcyMzg5LCAKLSAgICA4MzA3OSwgNTA2LCA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDEyMTQwNywgCi0gICAgODg0MSwgOTgzNzQ3LCA1MTYsIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIAotICAgIDc0MzMzLCAxMjAxODIsIDExODI3LCA2NzE2NSwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCAKLSAgICA2NTg0LCA3NzQ5LCAxMTAzNywgMTI4NzQzLCAxNzU4LCAxMTkwNzQsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgCi0gICAgMTkzNSwgMTE1MTcsIDEyMDE5MywgMTIwMTk2LCA4MzA4MiwgMTkzMSwgMTIwMTg5LCA3NDgzOSwgMTIwMTkxLCAxMjE3LCAKLSAgICA2NDcwMiwgMTI2NDMsIDgyNSwgMTI3ODM4LCAxOTQ5MDUsIDEyMjk0LCA5MjQyOCwgNzg4MzQsIDkxMzgsIDc4ODMxLCAKLSAgICA3ODgzMywgMTI2MzEsIDcxODcxLCAxMTA4MCwgNzQ1NTQsIDY0MDAwLCA1NTkxLCAxMjM5LCAxMjcxOTksIDExMzEzLCAKLSAgICAxOTQ4MDMsIDM0MDMsIDk4MzY1NSwgMTIwMjcxLCA2NDM2NCwgOTIyNjksIDEyMTI4MiwgNzI0MzEsIDg5OTgsIDEyOTg4LCAKLSAgICAxMTk5ODMsIDkxNTIsIDkyMTYxLCAwLCAxMjY0ODQsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIDkyMzkzLCAxMjYxNSwgCi0gICAgMTU5NCwgNDIxOTIsIDY5MTQsIDY2MzkyLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAKLSAgICAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgMTI2NjgsIDcyMzk1LCAKLSAgICAyNDc3LCAxMjcyODUsIDEyMTI0OSwgMTE4ODgwLCAwLCA2NzYwNCwgNjc2ODMsIDEyNzIzNSwgNTczLCAxMjcyODIsIAotICAgIDEyMDU0MywgMTE0MTcsIDkyNjYxLCAxMTk4MTQsIDExOTMwOSwgNjc1OTksIDAsIDcyNDEwLCA2NzYwNywgMTE0ODIsIDAsIAotICAgIDM5ODEsIDMzNTcsIDAsIDQyMjIzLCA0MjA3LCAxMjg4LCA3ODUwMywgNzg4MzksIDY3NzI4LCA3NzkwNywgMTE1ODksIAorICAgIDEwNzc2LCA3NDUzNCwgNzcwMSwgMTk0OTc2LCAxMDA0NzQsIDc0OTkyLCAxNzMyLCA0MDMwLCA5ODM0NDIsIDM5NjMsIAorICAgIDY1MzM1LCAxMjc1MzAsIDQxNzY4LCA2NDkxLCA2NTMzMywgNjUzMjQsIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDE5NTAxMywgCisgICAgMjI4NywgNjUzMjgsIDkyNDQxLCA3NDM2NywgNzYxNCwgOTgzOTUzLCAxMTgxOSwgNzE5MDgsIDEyMDA5LCAxMjM5OSwgCisgICAgMTIxMjE3LCA2Nzg1MiwgNjU1MzcsIDc4MDAyLCAxMDg0MSwgNDM0MzAsIDUzMDEsIDAsIDkyNjE4LCA1NzM0LCA4OTYwLCAwLCAKKyAgICA3MDEyMywgNjUzMTcsIDc3ODgwLCA5ODMxOTksIDU4NzYsIDcwMzc0LCAxMjMwNCwgMTI5MzU1LCAwLCA2NTMxNSwgOTI2NzAsIAorICAgIDEyODUxMSwgNzE4NjIsIDAsIDEyNzk1NywgMTE5NjIxLCAxMTExNCwgNzE5MDksIDEyNDQ3LCA2NDQ4NiwgMTIxMjM2LCAKKyAgICAxMjY1NjIsIDk4MzEyOSwgMCwgMTIxMzkzLCA5ODM4MDIsIDQyNzY3LCAxMDkxNSwgOTgzMTc0LCAxMjAwNywgNDM2OTUsIAorICAgIDY4MDMzLCAxMTk3NSwgMTAxMDEwLCAxMjg3NDUsIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQxMTMzLCA0MTg3MiwgCisgICAgNDM3MDYsIDQ0OTYsIDEwMDY5MiwgODMxMDgsIDEyMDI0MSwgMTI4MTY0LCAxMDA2OTEsIDAsIDk4MzU1MywgNjQ3MzAsIAorICAgIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCA2NTU5NiwgNjc4MzcsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgCisgICAgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAxMTE1NywgNzQzODYsIDEyNzI3NCwgODIzMywgMTI4MjAsIDEwMDg0NywgCisgICAgNjY4MywgMTI1MTEyLCAzNDQyLCAxMjE0NCwgMjg0MSwgMTI1NDMsIDEwMDY5OSwgMTQ3MywgNDI4MjAsIDY0MzI5LCAKKyAgICAxMDA4MTYsIDY3MjQzLCA2ODY0MiwgNjQ4OCwgMzU3LCAxMDQ4LCA0MTEwMCwgNzI0MTcsIDQxMTA0LCA5NDAwMywgMzQwNiwgCisgICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAxMTM3NjksIDQ0MzQsIDEwNjksIDE5NDc4NCwgMTAwNzAzLCA2NTczNywgCisgICAgMTIwMTI5LCAxMjAzMDIsIDAsIDgzMjExLCA5NjkzLCA0MTk0MywgNjgzMDUsIDQxOTMxLCA0MTc1OSwgMTI3NTcsIDQzNTMsIAorICAgIDk4MzM1MywgMTA1OSwgOTc5MCwgODk5NSwgMTE5OTc0LCA5MTc3NjksIDY1OTM3LCA3ODU3MiwgNDE3NTgsIDEwNjQ2LCAKKyAgICAxMDA2NjUsIDExODgzMywgMjI2OCwgNzA0MjQsIDc0ODMwLCA3ODU2OSwgMTI3NDMsIDk4MzY4OSwgNjQ4MCwgOTE3NzYxLCAKKyAgICA0MTc3OSwgNDI1ODAsIDY2NjAxLCAxMjIwNywgNzc4OTUsIDYzMzUsIDQzOTE5LCAxMTMxMiwgNjQ4MDcsIDkyOTYyLCAKKyAgICA2OTk4OSwgNDE3NjcsIDExOTYyOSwgOTgzNzY0LCA0MzAyMCwgNzQ5NzQsIDM5NTUsIDc0MjU0LCAxMjA2MzIsIDk4Mzc1NCwgCisgICAgOTE3ODYxLCA3MDE4NywgNjk5NzUsIDk3NzAsIDkyNDYsIDEyMjMwLCAxMjUwNDcsIDEyOTEwNSwgNzg1ODAsIDEwNDQ4LCAKKyAgICA0MTc4MywgNDE3ODYsIDcwNjYzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAxMjc5OTQsIDQ4NTcsIDk4MzU3NywgCisgICAgNDQyOCwgMTI3OTQsIDczNzU1LCAxMDA3MjIsIDc4NTc0LCAwLCAxMTExNiwgNDM4NDIsIDU3NDcsIDc4ODI1LCA3MDQ3MSwgCisgICAgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMTAwNzI1LCA1NjMsIDAsIAorICAgIDEwMDc5NSwgMTI3OTgsIDExMjcxLCA1NywgOTI3MTcsIDgzNDk1LCAxMDA3MjcsIDExOTA0MywgNzEyNjgsIDk0MDUxLCAKKyAgICA0MzEzNywgNjk0LCA5ODM3MTksIDk4NzYsIDEyODcyMCwgODMyNzMsIDAsIDcwMzkyLCA2NDUzNywgMTI3OTE0LCAyNzcsIAorICAgIDc0Mzg1LCA3MjI5LCAxMjc2MSwgOTgzMTQ1LCA3NDQ2NiwgMTMwMjUsIDY0ODExLCA4NzU3LCA3ODgyNCwgNzgxODgsIAorICAgIDE1NzQsIDczODEsIDE5NDYxNiwgMjUyNSwgNDg1MiwgNTc0OSwgNjg0NjUsIDEzMDI3LCA0MjgyNCwgMTIwNTc0LCAxMDM5LCAKKyAgICA3MTUxLCAxMDE1NSwgNTc0NSwgMTg4LCA0MTg1OCwgMTE1OTIsIDEwMDY2MSwgNjk3MjUsIDkwNTUsIDQxODUzLCA0ODU4LCAKKyAgICA3NTAwMCwgOTI4OTYsIDQzNiwgNDc3MSwgOTE3OTM2LCAyNzg2LCA5MzAyOCwgNDg1NiwgODA1MSwgOTI1MDAsIDExOTYwOSwgCisgICAgNzEzMjcsIDk2NDQsIDcxMTMzLCAxMjUwMDksIDEyODg3MywgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCA2ODA4NCwgOTgzMzYxLCAKKyAgICA3MzkwNiwgNjc0MDksIDEyNzExNCwgOTE3NjE0LCAxMDIzNCwgNTg0MywgMTE5MzksIDcwMzQ2LCA0MjE1NywgMCwgMzE1NywgCisgICAgMTk0NjU5LCA2ODM5MywgNzUwMzUsIDM1MDQsIDcwNDIyLCA5ODMwNDIsIDEwODIyLCA1MTQ5LCA2NjAyOSwgMTAyMjYsIAorICAgIDY1MTQyLCAxMjgwMjUsIDM1OTQsIDQyNDI0LCAxMjQ5OTMsIDQwLCAxMjY1NywgOTgzNjY1LCAwLCAzODYsIDEyMTQ2NywgCisgICAgODgzNCwgMTIwOTc0LCAxMjgxNSwgNDM1NzQsIDEyMTQzMCwgNzM5MDcsIDEwMDUxMywgNzAxMTMsIDcyMjAsIDExODM5LCAKKyAgICAxMjExNDMsIDc0MzE2LCAxOTQ3NTIsIDY1MzIyLCA0MzA0LCA3NDUwMywgODE2MCwgNzQzMTQsIDEwMDUxMSwgMTIxMjc2LCAKKyAgICA5ODM5NDAsIDEyODUyNiwgMTM0OCwgOTIzNDksIDc4NTk3LCAxMjExMzksIDEzMzAzLCA3MDQwNiwgOTIzOTIsIDEyMTM4NCwgCisgICAgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAxMjc4MDUsIDkyNDIzLCA3NDM4NywgNzgxNzksIDc4NTk4LCA3NDQ5MiwgCisgICAgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTAwNzIwLCA3ODU5MiwgNjg3NDUsIDI2NzIsIDM3MzUsIAorICAgIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAxMjgzNzMsIAorICAgIDk0ODcsIDExOTk1OSwgNjg3ODUsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIDExOTM0NCwgCisgICAgMTAwNTIwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDY2NzIxLCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAorICAgIDcwMDA2LCAxOTQ2OTAsIDEwMDUxOCwgMzYwNCwgMTIwNjgzLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgCisgICAgMTk2MiwgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDExOTU5NywgMjA3MiwgOTIzMTIsIDY5OTUsIDcyODAxLCA1NDM3LCAKKyAgICA3NDE3NCwgMTA2NjksIDg3MDIsIDc5NjQsIDkyMzUyLCAxMDA1MTQsIDE5OSwgNjgwNzUsIDQxMDUsIDE5NDg0NSwgMzg2NCwgCisgICAgNzUwMDYsIDE5NDcxMCwgNjc4MTgsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0NzgsIDEyODQ3MSwgNjQ3MiwgCisgICAgNjU4MTQsIDcxOTE5LCAxMDA4NTUsIDQ3MjQsIDEyODQ5MSwgMTk1MDQxLCA5MTkxLCAxOTQ2NDUsIDY0NDMyLCAxMjAyNzAsIAorICAgIDgyOTg3LCAxMTkxOTAsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAxOTQ2NDAsIDY2ODAsIDE5NTA0MiwgOTgzNDI1LCA3MTg3MiwgCisgICAgNjY3OSwgNzQ0MTIsIDkyMjUxLCAxMTkzNTAsIDc0NDIxLCAxMTM4MiwgMTI4MjU0LCA0Mzg2MiwgNzUwMDEsIDExMzczMywgCisgICAgMTk0Njc5LCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDQzODc0LCAKKyAgICA2NTQ0MiwgNjgwNDcsIDY5NzMzLCA5OTg5LCA0MzI0OCwgNjYyNDgsIDE5NDgxNiwgMTI3NTM0LCAxMTMyMSwgMTI4ODQ1LCAKKyAgICAxMjA4MDksIDEyMjg5NSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDkzMDEwLCA3MzkyNywgOTI0NDQsIAorICAgIDEyNzMzNiwgNjU3NDYsIDExODc5NiwgNjk4ODksIDc0Mzg5LCAxMjg2OTYsIDQzNDIsIDQyODM5LCAxMjEzMzksIDE2NzcsIAorICAgIDkxNzU5MiwgODI5ODksIDEyNjU5MCwgODM0MTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAxMDE2MCwgMCwgCisgICAgMTI5MTUwLCA3NTg1LCA2NTE2OSwgMjA1MiwgNDMwOCwgODM0MTQsIDQzMDAwLCA3NTA1LCA1NDMsIDY0OTE2LCA2NDczNiwgCisgICAgMTE4ODM1LCAxOTQ2NjUsIDY0NjU1LCA5ODMwNTMsIDExODkyMiwgMjA2NCwgOTE3OTY2LCA0MzE1OCwgNzkwMiwgOTgzMjMxLCAKKyAgICA2NTI2NSwgMTk0NjM5LCAxMjEwODAsIDEyNzE3MCwgMTIyOTE1LCAxMjgwMDYsIDkyNTUwLCA5ODMxODYsIDEyOTk0LCAKKyAgICA5MjcyOCwgMTA4MjgsIDc0Mzc4LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDgzMjMxLCA3MjM4OSwgODMwNzksIDUwNiwgCisgICAgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCAxMjE0MDcsIDg4NDEsIDY2NzcwLCAKKyAgICA1MTYsIDkzOTc0LCAyMDYzLCAxMTkwNTEsIDM0LCAxMjg4NTAsIDEyMDE4NiwgMTE1MDQsIDE2MTIsIDc0MzMzLCAxMjAxODIsIAorICAgIDExODI3LCA2NzE2NSwgMTIwMDEsIDEyMDE3OCwgMTAyNDIsIDY0NTY0LCAxMjAxNzksIDY3OTg2LCA2NTg0LCA3NzQ5LCAKKyAgICAxMTAzNywgMTI3MTU3LCAxNzU4LCAxMTkwNzQsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIAorICAgIDEyMDE5MywgMTIwMTk2LCA4MzA4MiwgMTkzMSwgMTAwNDk5LCA3NDgzOSwgNzQxMDQsIDEyMTcsIDY0NzAyLCAxMjY0MywgCisgICAgODI1LCAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA2Njc0OCwgOTEzOCwgNzg4MzEsIDc4ODMzLCAxMjYzMSwgCisgICAgNzE4NzEsIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDEyNzE5OSwgMTEzMTMsIDE5NDgwMywgMzQwMywgCisgICAgMTI2NTY0LCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTIxMjgyLCA3MjQzMSwgODk5OCwgMTI5ODgsIDExOTk4MywgOTE1MiwgCisgICAgOTIxNjEsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgCisgICAgNjkxNCwgNjYzOTIsIDEyNTIwMiwgMTE5NTY5LCA3NDU2NSwgNDEzNTMsIDY3NjAyLCA2NzYxMSwgNDMzNywgMCwgMTI3Mjk2LCAKKyAgICA5MTgsIDY1MDM1LCA0MTM1MSwgNzY4MSwgMTk0OTAwLCA0MjU3NywgNDEzOTMsIDEyNjY4LCA3MjM5NSwgMjQ3NywgCisgICAgMTI3Mjg1LCAxMjEyNDksIDExODg4MCwgMCwgNjc2MDQsIDY3NjgzLCAxMjcyMzUsIDU3MywgMTI3MjgxLCAxMjA1NDMsIAorICAgIDExNDE3LCA5MjY2MSwgMTE5ODE0LCAxMTkzMDksIDY3NTk5LCAwLCA3MjQxMCwgNjc2MDcsIDExNDgyLCAxMjg5NjEsIAorICAgIDM5ODEsIDMzNTcsIDEyNzE2NCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc3OTA3LCAxMTU4OSwgCiAgICAgNDIxOTUsIDc0NDc3LCAxMTk5OTcsIDEyNzE3OCwgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMTIxMzY2LCA0Mjc4OCwgNjg0MTYsIAotICAgIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjY5MDcsIDk3MTcsIDExOTMxMSwgMCwgOTk3LCAwLCAwLCA5MjU3NywgCi0gICAgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIDcyMzkwLCAwLCAKLSAgICAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCA3NDQxMSwgNzM3OTMsIDk4MzI3OCwgNDE3MiwgNzEyNTIsIDExOTk5MiwgCi0gICAgODM3MywgMTA4NzMsIDEyMTk3LCAxMjUwNzQsIDE5NTAxNCwgOTIyNjUsIDY5NzA2LCAxMjg1NDAsIDY4MzQsIDc0MzQ3LCAKLSAgICA3NDk1OCwgMTI5MDMzLCAxMjY5ODIsIDc0NTYzLCA2NDgyOCwgMTE0MTksIDE5NDg2OCwgNzY2LCAxMjU3LCAxOTQ1OTgsIAotICAgIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAzMjc0LCAxMjY2MjksIDgzMjU0LCA3MTg2MSwgOTgzOTUwLCA3NDUyMiwgCi0gICAgNDE5ODksIDEyMTMxNywgMCwgMTEzNzY5LCAzMjYzLCA5MTc5MjIsIDY1NjcyLCA2OTI0MywgMzI3MCwgNjQ1MzksIDExNDg5LCAKLSAgICA5MTc5MTEsIDAsIDAsIDcxMTI3LCA5NTA1LCA2NTUxOCwgMTI4NDk4LCA3NTYsIDE5NDYwNSwgMCwgMCwgMTk0NjIxLCAKLSAgICA3MjYxLCA5MjU0NywgMTg2LCAwLCAxMTkxNTYsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIDEyOTQ5LCA2NDg1NiwgCi0gICAgMTI4MDAsIDk4MzkwMSwgNzQyMDMsIDY0NzE4LCAxMTUwNywgNzg2NzMsIDkyNDM0LCA3NDYyNiwgMTEzNzYwLCAxMTU3OCwgCi0gICAgOTgzODM3LCAxMTkyOTYsIDEyMDk3MCwgMTIxMTI3LCAxMjUxMDEsIDAsIDcwMDgzLCA5MjU0LCA2Njg3NywgMTc5NCwgCi0gICAgNjgzMTAsIDY0NTIxLCA1NjI0LCAxMjAyMjAsIDEyMDIyMSwgMTE5OTU4LCAxMjAyMjMsIDM2MTcsIDY2NjM2LCA2NDg4NiwgCi0gICAgOTQwNjEsIDY4NjU5LCAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAKLSAgICAxMTkzMzAsIDQ0NTIsIDEyODA4OCwgOTgzNzcxLCA5MjUyNiwgNDUxMSwgMTIwOTU4LCA5ODM4NzcsIDY0Njc4LCAxMTQyNSwgCi0gICAgMCwgNDMyNDUsIDEyMzEsIDY4ODYxLCA2OTkwMywgMCwgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIAotICAgIDk1NDYsIDAsIDEyODMzMiwgNzA0MjEsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAKLSAgICAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgNDIxMzEsIDEyODY2MiwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgCi0gICAgODM3LCAxMDU2NywgNzIzODQsIDQzMTAzLCAwLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDQzNzQ5LCAKLSAgICAxMDc1NiwgNjQwNDcsIDQyNjA2LCA2NDA0NSwgNjQwNDQsIDQzOTc5LCAxMDA3NiwgNjQwNDAsIDQzMDYwLCAxOTQ5NDIsIAotICAgIDEwMzQsIDMzOTIsIDgzMzM2LCA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNDM0OTgsIDY0MDM3LCA2NDAzNiwgCi0gICAgNjQwMzUsIDQyOTEsIDEyOTE1NywgNjQwMTUsIDY0MDE0LCA2NDY4MSwgODMzOTQsIDgzMzk1LCA3ODE0NSwgNzE4OTgsIAotICAgIDQzMDkwLCA4MzM5MSwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCAKLSAgICA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCAKLSAgICA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI2OCwgMCwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIAotICAgIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCA4MzI2MSwgMTAwMDUsIDEyMzI5LCAKLSAgICA0MTMzMywgODMyNTksIDg0ODksIDE5NDIsIDkxNzkyMSwgMTk0ODM0LCA0MjUyMCwgNjU1MTAsIDEyNTA0NCwgNjgyOTEsIAotICAgIDEwNzYwLCA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMTI3Nzk4LCA2NDAyNSwgOTE2NywgNDIxNTEsIAotICAgIDc4MjQ0LCA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMTIxMzYxLCA3NTgyLCAKLSAgICA3ODI1MiwgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDEyMDc5MSwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgCi0gICAgNzc5MjAsIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzg1MTgsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCAKLSAgICA3NDQ1NCwgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDExODk1NSwgNjgyMTgsIDU1Mjc0LCAyMDA4LCAKLSAgICA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDgzMzgzLCA2NDc5MCwgNjU5MjksIDgzMzc2LCA4MzMzNywgODMzNzksIAotICAgIDgzMzgwLCA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxOTQ4NDQsIDAsIDQzNTEsIDYzNDMsIDQzMjQ3LCAxMTk4ODgsIAotICAgIDcwMTUzLCAxMTk4ODYsIDExOTg5MSwgNzIzODcsIDExOTg4OSwgMTE0MzMsIDExOTg5NSwgMTE5ODk2LCAxOTQ2NTUsIAotICAgIDc4MDEsIDY1NTc4LCA4MzM2MSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCA4MzM1NywgMTEzNSwgODMzNTAsIDgzMzUxLCAKLSAgICA4MzM1MiwgMTk5NSwgNjcyMiwgOTgzOTI1LCAxMjg4MTUsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCAKLSAgICA3ODQ5NiwgNzIzODYsIDgzMzcxLCA2NjgyLCA4MzM2NSwgNzg2NzksIDQzODMzLCA0MTU0NywgOTgzNjMwLCAyMDEzLCAKLSAgICA4MzM2MiwgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgCi0gICAgMTE5OTA4LCA5MTM3LCA3MTU1LCA4OTk5LCA5MTc5MDEsIDc4NTMzLCAzNDY2LCAwLCAxMjE0NjYsIDE5OTYsIDAsIDM0NTMsIAotICAgIDYyODIsIDAsIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCA5Mjk3NiwgNDE3OSwgNjUxMTksIDE5OTgsIDEyMDc0NiwgMTg0MiwgCi0gICAgMCwgOTI2NzQsIDk2MjgsIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDk4MzI0OCwgMTIwMDAxLCAKLSAgICAxMjAyMDEsIDk4MzY0NiwgMTI0OTc1LCAxMjc5NTIsIDMwNTksIDQ0MDI0LCAxMjAyMDQsIDQzNDkxLCA5MjY5MywgMCwgCi0gICAgMTIxNDcyLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCA0MzE4OSwgMCwgMzU5MiwgMTAwNzgsIDAsIDc4MTYyLCAKLSAgICAxMTk1NTgsIDg1OTIsIDY1ODcwLCA2NjQxNywgNzQ1MDQsIDEwNzQyLCA3MjQwMCwgNDI5MTgsIDE5OTQsIDkyODEsIDMyOTYsIAotICAgIDEyODY1LCAxOTk3LCAxODk1LCAKKyAgICA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY2OTA3LCA5NzE3LCAxMTkzMTEsIDEwMDczOCwgOTk3LCAxMTk5OTgsIAorICAgIDkxNzkxMCwgOTI1NzcsIDAsIDExNDQwLCAxMTM3OSwgNDIwMDAsIDEzMTM5LCA0MjIyMSwgNjUwMTMsIDEyNjk5OSwgCisgICAgMTI3NzYwLCA3MjM5MCwgMTIwNzEzLCAxMTkyMjgsIDEyMDM1LCA5ODM5MDYsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgCisgICAgMTI5NDI0LCA0MTcyLCA3MTI1MiwgMTE5OTkyLCA4MzczLCAxMDg3MywgMTIxOTcsIDEyNTA3NCwgMTk1MDE0LCA5MjI2NSwgCisgICAgNjk3MDYsIDEwMDg1OCwgNjgzNCwgNzQzNDcsIDc0OTU4LCA2OTY0NSwgMTI2OTgyLCA3NDU2MywgNjQ4MjgsIDExNDE5LCAKKyAgICAxMjY1NzAsIDc2NiwgMTI1NywgMTk0NTk4LCAxMTg4NDUsIDExMzgxLCAzMjY1LCA2NjYxNywgMzI3NCwgMTI2NjI5LCAKKyAgICA4MzI1NCwgNzE4NjEsIDk4Mzk1MCwgNzI3OTYsIDQxOTg5LCAxMjEzMTcsIDE5NDgwNiwgMzQxOCwgMzI2MywgOTE3OTIyLCAKKyAgICA2NTY3MiwgNjkyNDMsIDMyNzAsIDY0NTM5LCAxMTQ4OSwgOTE3OTExLCAwLCAwLCA3MTEyNywgOTUwNSwgNjU1MTgsIAorICAgIDEyODQ5OCwgNzU2LCAxMjA0MDAsIDEyNTI0MywgOTgzNzAwLCAxOTQ2MjEsIDcyNjEsIDkyNTQ3LCAxODYsIDk4Mzc2OSwgCisgICAgNzI3NzEsIDU3NzAsIDEzMTc5LCA2NTgzMCwgMTI2MTIsIDEyOTQ5LCA2NDg1NiwgMTI4MDAsIDEyNzUyOSwgNzQyMDMsIAorICAgIDY0NzE4LCAxMTUwNywgNzg2NzMsIDkyNDM0LCA3NDYyNiwgMTEzNzYwLCAxMTU3OCwgOTgzODM3LCAxMTkyOTYsIDEyMDk3MCwgCisgICAgMTIxMTI3LCAxMjUxMDEsIDAsIDcwMDgzLCA5MjU0LCA2Njg3NywgMTc5NCwgNjgzMTAsIDY0NTIxLCA1NjI0LCA3Mjc2NiwgCisgICAgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCA5NDA2MSwgNjg2NTksIDEyMDIxMywgMTIwMjE0LCAKKyAgICAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMTI4MDg4LCA5ODM1NjAsIAorICAgIDkyNTI2LCA0NTExLCAxMjA5NTgsIDk4Mzg3NywgNjQ2NzgsIDExNDI1LCAwLCA0MzI0NSwgMTIzMSwgNjg4NjEsIDY5OTAzLCAKKyAgICA5ODM2NDMsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCA4Njk0LCA5NTQ2LCA5ODMyMzcsIDEyODMzMiwgCisgICAgNzA0MjEsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAxMTkwNTgsIDc4MjAyLCA2NDA1OCwgCisgICAgODc5OSwgNDIxMzEsIDEyODY2MiwgNjQwNjIsIDEwMjgsIDY0MDYwLCA2NDA1OSwgODM3LCAxMDU2NywgNzIzODQsIDQzMTAzLCAKKyAgICAxMDAzNTIsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNDM3NDksIDEwNzU2LCA2NDA0NywgNDI2MDYsIAorICAgIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDEwMDM1NiwgMTAzNCwgMzM5MiwgODMzMzYsIAorICAgIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA0MzQ5OCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTI5MTU3LCAKKyAgICA2NDAxNSwgNjQwMTQsIDY0NjgxLCA4MzM5NCwgODMzOTUsIDc4MTQ1LCA3MTg5OCwgNDMwOTAsIDgzMzkxLCAzNDc2LCAKKyAgICA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIDY0NTE3LCA3ODE1MywgMjUzOCwgCisgICAgNjQwMDksIDIwNCwgMTAwODQxLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgNjQwNTcsIDc4ODUsIAorICAgIDcyNDcsIDY0MDU0LCA5ODMyNjgsIDExODkyMSwgNDc2NywgOTM0MywgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIAorICAgIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCA4MzI2MSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgCisgICAgODMyNTksIDg0ODksIDE5NDIsIDEwMDg0MywgMTk0ODM0LCA0MjUyMCwgNjU1MTAsIDEyNTA0NCwgNjgyOTEsIDEwNzYwLCAKKyAgICA2NDAyMywgNjQwMjIsIDY0MDIxLCA2NTgyLCA0MzY3MCwgMTI3Nzk4LCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKKyAgICA5ODMyMzIsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMTAwNTM3LCA3NTgyLCA3ODI1MiwgCisgICAgNzgyNDgsIDc3OTE0LCA3ODI0NiwgNzgyNDcsIDEyMDc5MSwgNzc5MTUsIDc4NzY2LCA2Nzg4LCAxMzA5NCwgNzc5MjAsIAorICAgIDc1MzIsIDQxNDE0LCA3ODUyMCwgMzE3OSwgNzA3NDUsIDY0NzY5LCA3ODUxNCwgNzg1MTcsIDExNDYxLCA3NDQ1NCwgCisgICAgMTA3NTEsIDkwNTEsIDEyMDcyMCwgNjcwOCwgMTA1MzUsIDExODk1NSwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgCisgICAgNjQwMzAsIDI5NCwgNDE4NzQsIDgzMzgzLCA2NDc5MCwgNjU5MjksIDgzMzc2LCA4MzMzNywgODMzNzksIDgzMzgwLCAKKyAgICA2NDAyOCwgODE0NiwgNjQwMjYsIDQxNzg4LCAxMDA0MDYsIDk4MzY1MCwgNDM1MSwgNjM0MywgNDMyNDcsIDExOTg4OCwgCisgICAgNzAxNTMsIDEwMDc1MywgNzg3MzMsIDcyMzg3LCAxMTk4ODksIDExNDMzLCAxMDA1NDQsIDExOTg5NiwgMTk0NjU1LCA3ODAxLCAKKyAgICA2NTU3OCwgODMzNjEsIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgODMzNTcsIDExMzUsIDgzMzUwLCA4MzM1MSwgODMzNTIsIAorICAgIDE5OTUsIDY3MjIsIDk4MzkyNSwgMTI4ODE1LCAyNTUyLCA0MTU0NiwgNjAsIDY4Mzk0LCA4NjQ5LCA0MTU0OSwgNzg0OTYsIAorICAgIDcyMzg2LCA4MzM3MSwgNjY4MiwgODMzNjUsIDc4Njc5LCA0MzgzMywgNDE1NDcsIDk4MzYzMCwgMjAxMywgODMzNjIsIAorICAgIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIDExOTkwOCwgOTEzNywgCisgICAgNzE1NSwgMjI2NCwgOTE3OTAxLCA3ODUzMywgMzQ2NiwgMTk0OTg3LCAxMjEwMzksIDE5OTYsIDk4MzY3NSwgMzQ1MywgCisgICAgMzQxMiwgMCwgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDkyOTc2LCA0MTc5LCA2NTExOSwgMTk5OCwgMTIwNzQ2LCAxODQyLCAKKyAgICAwLCA5MjY3NCwgOTYyOCwgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMzQxMywgOTgzMjQ4LCAxMjAwMDEsIAorICAgIDEyMDIwMSwgOTgzNjQ2LCAxMjQ5NzUsIDEyNzk1MiwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgNDM0OTEsIDkyNjkzLCAKKyAgICAxMDA1NDcsIDEyMTQ3MiwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgNDMxODksIDAsIDM1OTIsIDEwMDc4LCAKKyAgICAxMDAzOTQsIDc4MTYyLCAxMDA4NDYsIDg1OTIsIDY1ODcwLCA2NjQxNywgNzQ1MDQsIDEwNzQyLCA3MjQwMCwgNDI5MTgsIAorICAgIDE5OTQsIDkyODEsIDMyOTYsIDEyODY1LCAxOTk3LCAxODk1LCAKIH07CiAKICNkZWZpbmUgY29kZV9tYWdpYyA0NwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy93aW5yZXBhcnNlLmggYi9Nb2R1bGVzL3dpbnJlcGFyc2UuaAppbmRleCA2NmY3Nzc1Li4yODA0OWM5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3dpbnJlcGFyc2UuaAorKysgYi9Nb2R1bGVzL3dpbnJlcGFyc2UuaApAQCAtMiw3ICsyLDcgQEAKICNkZWZpbmUgUHlfV0lOUkVQQVJTRV9ICiAKICNpZmRlZiBNU19XSU5ET1dTCi0jaW5jbHVkZSA8V2luZG93cy5oPgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTEwLDkgKzEwLDEwIEBACiAKIC8qIFRoZSBmb2xsb3dpbmcgc3RydWN0dXJlIHdhcyBjb3BpZWQgZnJvbQogICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2ZmNTUyMDEyLmFzcHggYXMgdGhlIHJlcXVpcmVkCi0gICBpbmNsdWRlIGRvZXNuJ3Qgc2VlbSB0byBiZSBwcmVzZW50IGluIHRoZSBXaW5kb3dzIFNESyAoYXQgbGVhc3QgYXMgaW5jbHVkZWQKLSAgIHdpdGggVmlzdWFsIFN0dWRpbyBFeHByZXNzKS4gKi8KLXR5cGVkZWYgc3RydWN0IF9SRVBBUlNFX0RBVEFfQlVGRkVSIHsKKyAgIGluY2x1ZGUga21cbnRpZnMuaCBpc24ndCBwcmVzZW50IGluIHRoZSBXaW5kb3dzIFNESyAoYXQgbGVhc3QgYXMgaW5jbHVkZWQKKyAgIHdpdGggVmlzdWFsIFN0dWRpbyBFeHByZXNzKS4gVXNlIHVuaXF1ZSBuYW1lcyB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoCisgICB0aGUgc3RydWN0dXJlIGFzIGRlZmluZWQgYnkgTWluIEdXLiAqLwordHlwZWRlZiBzdHJ1Y3QgewogICAgIFVMT05HIFJlcGFyc2VUYWc7CiAgICAgVVNIT1JUIFJlcGFyc2VEYXRhTGVuZ3RoOwogICAgIFVTSE9SVCBSZXNlcnZlZDsKQEAgLTM4LDExICszOSwxMSBAQAogICAgICAgICAgICAgVUNIQVIgIERhdGFCdWZmZXJbMV07CiAgICAgICAgIH0gR2VuZXJpY1JlcGFyc2VCdWZmZXI7CiAgICAgfTsKLX0gUkVQQVJTRV9EQVRBX0JVRkZFUiwgKlBSRVBBUlNFX0RBVEFfQlVGRkVSOworfSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiwgKl9QeV9QUkVQQVJTRV9EQVRBX0JVRkZFUjsKIAotI2RlZmluZSBSRVBBUlNFX0RBVEFfQlVGRkVSX0hFQURFUl9TSVpFICBGSUVMRF9PRkZTRVQoUkVQQVJTRV9EQVRBX0JVRkZFUixcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKLSNkZWZpbmUgTUFYSU1VTV9SRVBBUlNFX0RBVEFfQlVGRkVSX1NJWkUgICggMTYgKiAxMDI0ICkKKyNkZWZpbmUgX1B5X1JFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgXAorICAgIEZJRUxEX09GRlNFVChfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiwgR2VuZXJpY1JlcGFyc2VCdWZmZXIpCisjZGVmaW5lIF9QeV9NQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRSAgKCAxNiAqIDEwMjQgKQogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IDQwYzE3NjAuLmMxYTliZTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtODksNyArODksNyBAQAogfQogCiBzdGF0aWMgaW50Ci1YeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKICAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eG1vZHVsZS5jIGIvTW9kdWxlcy94eG1vZHVsZS5jCmluZGV4IDg1MjMwZDkuLjA3NjQ0MDcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhtb2R1bGUuYworKysgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKQEAgLTc2LDcgKzc2LDcgQEAKIH0KIAogc3RhdGljIGludAotWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKK1h4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCiB7CiAgICAgaWYgKHNlbGYtPnhfYXR0ciA9PSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPnhfYXR0ciA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvemlwaW1wb3J0LmMgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCmluZGV4IDc0NzNhOGYuLjU5MDQ2YWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemlwaW1wb3J0LmMKKysrIGIvTW9kdWxlcy96aXBpbXBvcnQuYwpAQCAtOTA3LDEwICs5MDcsOCBAQAogICAgIGZwID0gX1B5X2ZvcGVuX29iaihhcmNoaXZlLCAicmIiKTsKICAgICBpZiAoZnAgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PU0Vycm9yKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IG9wZW4gWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7Ci0gICAgICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFppcEltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWJtb2R1bGUuYyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCmluZGV4IGZjY2I2MTYuLmNmZTdmODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYm1vZHVsZS5jCisrKyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCkBAIC01Nyw3ICs1Nyw3IEBACiB9IGNvbXBvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCi16bGliX2Vycm9yKHpfc3RyZWFtIHpzdCwgaW50IGVyciwgY2hhciAqbXNnKQoremxpYl9lcnJvcih6X3N0cmVhbSB6c3QsIGludCBlcnIsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgICBjb25zdCBjaGFyICp6bXNnID0gWl9OVUxMOwogICAgIC8qIEluIGNhc2Ugb2YgYSB2ZXJzaW9uIG1pc21hdGNoLCB6c3QubXNnIHdvbid0IGJlIGluaXRpYWxpemVkLgpAQCAtMTk5LDE4ICsxOTksMTggQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHpsaWIuY29tcHJlc3MKIAotICAgIGJ5dGVzOiBQeV9idWZmZXIKKyAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQmluYXJ5IGRhdGEgdG8gYmUgY29tcHJlc3NlZC4KLSAgICBsZXZlbDogaW50KGNfZGVmYXVsdD0iWl9ERUZBVUxUX0NPTVBSRVNTSU9OIikgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT04KLSAgICAgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4KICAgICAvCisgICAgbGV2ZWw6IGludChjX2RlZmF1bHQ9IlpfREVGQVVMVF9DT01QUkVTU0lPTiIpID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OCisgICAgICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkgb3IgLTEuCiAKIFJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpieXRlcywgaW50IGxldmVsKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlNjRjMmMzMDc2MzIxYTAgaW5wdXQ9YmUzYWJlOTkzNGJkYTRiM10qLworemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGxldmVsKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ4MDkwNmQ3M2Y2Mjk0YzggaW5wdXQ9NjM4ZDU0YjYzMTVkYmVkM10qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC0yMTgsOCArMjE4LDggQEAKICAgICBpbnQgZXJyLCBmbHVzaDsKICAgICB6X3N0cmVhbSB6c3Q7CiAKLSAgICBpYnVmID0gYnl0ZXMtPmJ1ZjsKLSAgICBpYnVmbGVuID0gYnl0ZXMtPmxlbjsKKyAgICBpYnVmID0gZGF0YS0+YnVmOworICAgIGlidWZsZW4gPSBkYXRhLT5sZW47CiAKICAgICB6c3Qub3BhcXVlID0gTlVMTDsKICAgICB6c3QuemFsbG9jID0gUHlabGliX01hbGxvYzsKQEAgLTMxOCwxMSArMzE4LDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgQ29tcHJlc3NlZCBkYXRhLgorICAgIC8KICAgICB3Yml0czogaW50KGNfZGVmYXVsdD0iTUFYX1dCSVRTIikgPSBNQVhfV0JJVFMKICAgICAgICAgVGhlIHdpbmRvdyBidWZmZXIgc2l6ZSBhbmQgY29udGFpbmVyIGZvcm1hdC4KICAgICBidWZzaXplOiBzc2l6ZV90KGNfZGVmYXVsdD0iREVGX0JVRl9TSVpFIikgPSBERUZfQlVGX1NJWkUKICAgICAgICAgVGhlIGluaXRpYWwgb3V0cHV0IGJ1ZmZlciBzaXplLgotICAgIC8KIAogUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTMzMCw3ICszMzAsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfZGVjb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBidWZzaXplKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9YzEzZGQyYzU2OTZjZDE3Zl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc3YzdlMzUxMTFkYzhjNDIgaW5wdXQ9MjE5NjA5MzYyMDhlOWE1Yl0qLwogewogICAgIFB5T2JqZWN0ICpSZXRWYWwgPSBOVUxMOwogICAgIEJ5dGUgKmlidWY7CkBAIC03MjEsOSArNzIxLDkgQEAKICAgICAgICAgICAgIG5ld19kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuZXdfc2l6ZSk7CiAgICAgICAgICAgICBpZiAobmV3X2RhdGEgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpLAorICAgICAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT51bnVzZWRfZGF0YSksIG9sZF9zaXplKTsKLSAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKKyAgICAgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSkgKyBvbGRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT56c3QubmV4dF9pbiwgbGVmdF9zaXplKTsKICAgICAgICAgICAgIFB5X1NFVFJFRihzZWxmLT51bnVzZWRfZGF0YSwgbmV3X2RhdGEpOwogICAgICAgICAgICAgc2VsZi0+enN0LmF2YWlsX2luID0gMDsKQEAgLTc1MCwxMSArNzUwLDExIEBACiAKICAgICBkYXRhOiBQeV9idWZmZXIKICAgICAgICAgVGhlIGJpbmFyeSBkYXRhIHRvIGRlY29tcHJlc3MuCisgICAgLwogICAgIG1heF9sZW5ndGg6IHNzaXplX3QgPSAwCiAgICAgICAgIFRoZSBtYXhpbXVtIGFsbG93YWJsZSBsZW5ndGggb2YgdGhlIGRlY29tcHJlc3NlZCBkYXRhLgogICAgICAgICBVbmNvbnN1bWVkIGlucHV0IGRhdGEgd2lsbCBiZSBzdG9yZWQgaW4KICAgICAgICAgdGhlIHVuY29uc3VtZWRfdGFpbCBhdHRyaWJ1dGUuCi0gICAgLwogCiBSZXR1cm4gYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgdGhlIGRhdGEuCiAKQEAgLTc2Niw3ICs3NjYsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1kNmRlOWI1M2M0NTY2YjhhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NmU1MTczYzc0ZTcxMDM1MiBpbnB1dD1iODVhMjEyYTAxMmI3NzBhXSovCiB7CiAgICAgaW50IGVyciA9IFpfT0s7CiAgICAgUHlfc3NpemVfdCBpYnVmbGVuLCBvYnVmbGVuID0gREVGX0JVRl9TSVpFLCBoYXJkX2xpbWl0OwpAQCAtMTMzMyw3ICsxMzMzLDcgQEAKICJ6bGliIGxpYnJhcnksIHdoaWNoIGlzIGJhc2VkIG9uIEdOVSB6aXAuXG4iCiAiXG4iCiAiYWRsZXIzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYW4gQWRsZXItMzIgY2hlY2tzdW0uXG4iCi0iY29tcHJlc3Moc3RyaW5nWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBzdHJpbmcsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgaW4gMC05LlxuIgorImNvbXByZXNzKGRhdGFbLCBsZXZlbF0pIC0tIENvbXByZXNzIGRhdGEsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgMC05IG9yIC0xLlxuIgogImNvbXByZXNzb2JqKFtsZXZlbFssIC4uLl1dKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKICJjcmMzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYSBDUkMtMzIgY2hlY2tzdW0uXG4iCiAiZGVjb21wcmVzcyhzdHJpbmcsW3diaXRzXSxbYnVmc2l6ZV0pIC0tIERlY29tcHJlc3NlcyBhIGNvbXByZXNzZWQgc3RyaW5nLlxuIgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9hYnN0cmFjdC5jIGIvT2JqZWN0cy9hYnN0cmFjdC5jCmluZGV4IDg4MjA1YmQuLmY5YWZlY2UgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYWJzdHJhY3QuYworKysgYi9PYmplY3RzL2Fic3RyYWN0LmMKQEAgLTMyLDggKzMyLDEwIEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICB2ID0gKFB5T2JqZWN0ICopby0+b2JfdHlwZTsKICAgICBQeV9JTkNSRUYodik7CiAgICAgcmV0dXJuIHY7CkBAIC0xMzcsMTIgKzEzOSwxNiBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IGtleSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwga2V5ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKLSAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpCi0gICAgICAgIHJldHVybiBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICBpZiAobSAmJiBtLT5tcF9zdWJzY3JpcHQpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBtLT5tcF9zdWJzY3JpcHQobywga2V5KTsKKyAgICAgICAgYXNzZXJ0KChpdGVtICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOworICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CiAKICAgICBpZiAoby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2UpIHsKICAgICAgICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewpAQCAtNjY5LDEzICs2NzUsMzEgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBfUHlfSURFTlRJRklFUihfX2Zvcm1hdF9fKTsKIAorICAgIGlmIChmb3JtYXRfc3BlYyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2soZm9ybWF0X3NwZWMpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGb3JtYXQgc3BlY2lmaWVyIG11c3QgYmUgYSBzdHJpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShmb3JtYXRfc3BlYyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIGNvbW1vbiB0eXBlcy4gKi8KKyAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICB9CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKG9iaik7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBJZiBubyBmb3JtYXRfc3BlYyBpcyBwcm92aWRlZCwgdXNlIGFuIGVtcHR5IHN0cmluZyAqLwogICAgIGlmIChmb3JtYXRfc3BlYyA9PSBOVUxMKSB7CiAgICAgICAgIGVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgZm9ybWF0X3NwZWMgPSBlbXB0eTsKICAgICB9CiAKLSAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kIChhIGJvcnJvd2VkIHJlZmVyZW5jZSkgKi8KKyAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kICovCiAgICAgbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19mb3JtYXRfXyk7CiAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCkBAIC0xMTIyLDggKzExNDYsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX25lZ2F0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9uZWdhdGl2ZSkobyk7CkBAIC0xMTM2LDggKzExNjIsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX3Bvc2l0aXZlKQogICAgICAgICByZXR1cm4gKCptLT5uYl9wb3NpdGl2ZSkobyk7CkBAIC0xMTUwLDggKzExNzgsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2ludmVydCkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfaW52ZXJ0KShvKTsKQEAgLTExNjQsOCArMTE5NCwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfYWJzb2x1dGUpCiAgICAgICAgIHJldHVybiBtLT5uYl9hYnNvbHV0ZShvKTsKQEAgLTExODEsOCArMTIxMywxMCBAQAogUHlOdW1iZXJfSW5kZXgoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaWYgKGl0ZW0gPT0gTlVMTCkKKyAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwpAQCAtMTI2NSw0MiArMTI5OSw1NSBAQAogUHlPYmplY3QgKgogUHlOdW1iZXJfTG9uZyhQeU9iamVjdCAqbykKIHsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKICAgICBQeU9iamVjdCAqdHJ1bmNfZnVuYzsKICAgICBQeV9idWZmZXIgdmlldzsKICAgICBfUHlfSURFTlRJRklFUihfX3RydW5jX18pOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG8pKSB7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIG87CiAgICAgfQogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfaW50KSB7IC8qIFRoaXMgc2hvdWxkIGluY2x1ZGUgc3ViY2xhc3NlcyBvZiBpbnQgKi8KLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KG8pOworICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChvKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIHRydW5jX2Z1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuY19mdW5jKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0cnVuY2F0ZWQgPSBQeUV2YWxfQ2FsbE9iamVjdCh0cnVuY19mdW5jLCBOVUxMKTsKLSAgICAgICAgUHlPYmplY3QgKmludF9pbnN0YW5jZTsKKyAgICAgICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QodHJ1bmNfZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRih0cnVuY19mdW5jKTsKLSAgICAgICAgaWYgKHRydW5jYXRlZCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVjayh0cnVuY2F0ZWQpKQotICAgICAgICAgICAgcmV0dXJuIHRydW5jYXRlZDsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IFB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogICAgICAgICAvKiBfX3RydW5jX18gaXMgc3BlY2lmaWVkIHRvIHJldHVybiBhbiBJbnRlZ3JhbCB0eXBlLAogICAgICAgICAgICBidXQgaW50KCkgbmVlZHMgdG8gcmV0dXJuIGFuIGludC4gKi8KLSAgICAgICAgbSA9IHRydW5jYXRlZC0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOworICAgICAgICBtID0gcmVzdWx0LT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgICAgIGlmIChtID09IE5VTEwgfHwgbS0+bmJfaW50ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgIl9fdHJ1bmNfXyByZXR1cm5lZCBub24tSW50ZWdyYWwgKHR5cGUgJS4yMDBzKSIsCi0gICAgICAgICAgICAgICAgdHJ1bmNhdGVkLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOworICAgICAgICAgICAgICAgIHJlc3VsdC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGludF9pbnN0YW5jZSA9IChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KHRydW5jYXRlZCk7Ci0gICAgICAgIFB5X0RFQ1JFRih0cnVuY2F0ZWQpOwotICAgICAgICByZXR1cm4gaW50X2luc3RhbmNlOworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChyZXN1bHQpKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKXJlc3VsdCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMjIsNyArMTM2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShvKSwgMTApOwogCiAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvLCAmdmlldywgUHlCVUZfU0lNUExFKSA9PSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQsICpieXRlczsKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOwogCiAgICAgICAgIC8qIENvcHkgdG8gTlVMLXRlcm1pbmF0ZWQgYnVmZmVyLiAqLwogICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKil2aWV3LmJ1Ziwgdmlldy5sZW4pOwpAQCAtMTM0NiwyMyArMTM5Myw0MyBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKworICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QobykpIHsKKyAgICAgICAgUHlfSU5DUkVGKG8pOworICAgICAgICByZXR1cm4gbzsKKyAgICB9CiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9mbG9hdCkgeyAvKiBUaGlzIHNob3VsZCBpbmNsdWRlIHN1YmNsYXNzZXMgb2YgZmxvYXQgKi8KICAgICAgICAgUHlPYmplY3QgKnJlcyA9IG0tPm5iX2Zsb2F0KG8pOwotICAgICAgICBpZiAocmVzICYmICFQeUZsb2F0X0NoZWNrKHJlcykpIHsKKyAgICAgICAgZG91YmxlIHZhbDsKKyAgICAgICAgaWYgKCFyZXMgfHwgUHlGbG9hdF9DaGVja0V4YWN0KHJlcykpIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHJlcykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICJfX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuMjAwcykiLAotICAgICAgICAgICAgICByZXMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgby0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgLyogSXNzdWUgIzI2OTgzOiB3YXJuIGlmICdyZXMnIG5vdCBvZiBleGFjdCB0eXBlIGZsb2F0LiAqLworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgIgorICAgICAgICAgICAgICAgICJUaGUgYWJpbGl0eSB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQgIgorICAgICAgICAgICAgICAgICJpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICBvLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKHJlcyk7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHZhbCk7CiAgICAgfQogICAgIGlmIChQeUZsb2F0X0NoZWNrKG8pKSB7IC8qIEEgZmxvYXQgc3ViY2xhc3Mgd2l0aCBuYl9mbG9hdCA9PSBOVUxMICovCi0gICAgICAgIFB5RmxvYXRPYmplY3QgKnBvID0gKFB5RmxvYXRPYmplY3QgKilvOwotICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHBvLT5vYl9mdmFsKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeUZsb2F0X0FTX0RPVUJMRShvKSk7CiAgICAgfQogICAgIHJldHVybiBQeUZsb2F0X0Zyb21TdHJpbmcobyk7CiB9CkBAIC0xNDMwLDggKzE0OTcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfY29uY2F0KQpAQCAtMTQ1NCw4ICsxNTIyLDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9yZXBlYXQpCkBAIC0xNDgzLDggKzE1NTIsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCB8fCBvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaW5wbGFjZV9jb25jYXQpCkBAIC0xNTA3LDggKzE1NzcsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2lucGxhY2VfcmVwZWF0KQpAQCAtMTUzNiwxNiArMTYwNywxOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2l0ZW0pIHsKICAgICAgICAgaWYgKGkgPCAwKSB7CiAgICAgICAgICAgICBpZiAobS0+c3FfbGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsID0gKCptLT5zcV9sZW5ndGgpKHMpOwotICAgICAgICAgICAgICAgIGlmIChsIDwgMCkKKyAgICAgICAgICAgICAgICBpZiAobCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaSArPSBsOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNTYwLDcgKzE2MzQsOSBAQAogewogICAgIFB5TWFwcGluZ01ldGhvZHMgKm1wOwogCi0gICAgaWYgKCFzKSByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIGlmICghcykgeworICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG1wID0gcy0+b2JfdHlwZS0+dHBfYXNfbWFwcGluZzsKICAgICBpZiAobXAgJiYgbXAtPm1wX3N1YnNjcmlwdCkgewpAQCAtMTY4Nyw4ICsxNzYzLDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGo7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsLWNhc2UgdGhlIGNvbW1vbiB0dXBsZSBhbmQgbGlzdCBjYXNlcywgZm9yIGVmZmljaWVuY3kuICovCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh2KSkgewpAQCAtMTc2OCw4ICsxODQ1LDkgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0OyAgLyogcmVzdWx0IGxpc3QgKi8KICAgICBQeU9iamVjdCAqcnY7ICAgICAgICAgIC8qIHJldHVybiB2YWx1ZSBmcm9tIFB5TGlzdF9FeHRlbmQgKi8KIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTc4OSw4ICsxODY3LDkgQEAKIHsKICAgICBQeU9iamVjdCAqaXQ7CiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QodikgfHwgUHlUdXBsZV9DaGVja0V4YWN0KHYpKSB7CiAgICAgICAgIFB5X0lOQ1JFRih2KTsKQEAgLTE5NzMsOCArMjA1Miw5IEBACiB7CiAgICAgUHlPYmplY3QgKm9rZXksICpyOwogCi0gICAgaWYgKGtleSA9PSBOVUxMKQorICAgIGlmIChrZXkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG9rZXkgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhrZXkpOwogICAgIGlmIChva2V5ID09IE5VTEwpCkBAIC0yMTE4LDIwICsyMTk4LDE4IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoZXJyX29jY3VycmVkKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotCiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKIAotICAgICAgICAgICAgaWYgKGZ1bmMpCi0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlKTsKLSAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgICAgIGlmIChmdW5jKSB7CisgICAgICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlUiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMgcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOworICAgICAgICAgICAgfQogI2lmZGVmIFB5X0RFQlVHCiAgICAgICAgICAgICAvKiBFbnN1cmUgdGhhdCB0aGUgYnVnIGlzIGNhdWdodCBpbiBkZWJ1ZyBtb2RlICovCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJhIGZ1bmN0aW9uIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0Iik7CkBAIC0yMTQzLDcgKzIyMjEsNyBAQAogfQogCiBQeU9iamVjdCAqCi1QeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeU9iamVjdF9DYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICB0ZXJuYXJ5ZnVuYyBjYWxsOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CkBAIC0yMTUyLDYgKzIyMzAsOCBAQAogICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCiAgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOwogCiAgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CiAgICAgaWYgKGNhbGwgPT0gTlVMTCkgewpAQCAtMjE2MywxMDggKzIyNDMsMzQzIEBACiAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmcsIGt3KTsKKyAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiAKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKIAogICAgIHJldHVybiBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOwogfQogCitQeU9iamVjdCoKK19QeVN0YWNrX0FzVHVwbGUoUHlPYmplY3QgKipzdGFjaywgUHlfc3NpemVfdCBuYXJncykKK3sKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcobmFyZ3MpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gc3RhY2tbaV07CisgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCBpLCBpdGVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gYXJnczsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHRlcm5hcnlmdW5jIGNhbGw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICAvKiBfUHlPYmplY3RfRmFzdENhbGxEaWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwKKyAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQorICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXN1bHQgPSBfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJlc3VsdCA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgYXJncywgbmFyZ3MsIGt3YXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqdHVwbGU7CisKKyAgICAgICAgLyogU2xvdy1wYXRoOiBidWlsZCBhIHRlbXBvcmFyeSB0dXBsZSAqLworICAgICAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKKyAgICAgICAgaWYgKGNhbGwgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgY2FsbGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgdHVwbGUgPSBfUHlTdGFja19Bc1R1cGxlKGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgdHVwbGUsIGt3YXJncyk7CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKKyAgICB9CisKK2V4aXQ6CisgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBQb3NpdGlvbmFsIGFyZ3VtZW50cyBhcmUgb2JqIGZvbGxvd2VkIGFyZ3MuICovCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbOF07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IGFyZ2NvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisKKyAgICBhcmdjb3VudCA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgaWYgKGFyZ2NvdW50ICsgMSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYygoYXJnY291bnQgKyAxKSAqIHNpemVvZihQeU9iamVjdCAqKSk7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiB1c2UgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgIHN0YWNrWzBdID0gb2JqOworICAgIG1lbWNweSgmc3RhY2tbMV0sCisgICAgICAgICAgICAgICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApLAorICAgICAgICAgICAgICBhcmdjb3VudCAqIHNpemVvZihQeU9iamVjdCAqKSk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgYXJnY291bnQgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK19QeVN0YWNrX0FzRGljdChQeU9iamVjdCAqKnZhbHVlcywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeU9iamVjdCAqa3dkaWN0OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5rd2FyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gKnZhbHVlcysrOworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSk7CisgICAgICAgIGFzc2VydChQeURpY3RfR2V0SXRlbShrd2RpY3QsIGtleSkgPT0gTlVMTCk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleSwgdmFsdWUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBrd2RpY3Q7Cit9CisKK1B5T2JqZWN0ICoqCitfUHlTdGFja19VbnBhY2tEaWN0KFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3YXJncywKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX2t3bmFtZXMsIFB5T2JqZWN0ICpmdW5jKQoreworICAgIFB5T2JqZWN0ICoqc3RhY2ssICoqa3dzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3M7CisgICAgUHlfc3NpemVfdCBwb3MsIGk7CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgIFB5T2JqZWN0ICprd25hbWVzOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKTsKKworICAgIG5rd2FyZ3MgPSAoa3dhcmdzICE9IE5VTEwpID8gUHlEaWN0X1NpemUoa3dhcmdzKSA6IDA7CisgICAgaWYgKCFua3dhcmdzKSB7CisgICAgICAgICpwX2t3bmFtZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gYXJnczsKKyAgICB9CisKKyAgICBpZiAoKHNpemVfdCluYXJncyA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHN0YWNrWzBdKSAtIChzaXplX3Qpbmt3YXJncykgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzdGFjayA9IFB5TWVtX01hbGxvYygobmFyZ3MgKyBua3dhcmdzKSAqIHNpemVvZihzdGFja1swXSkpOworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGt3bmFtZXMgPSBQeVR1cGxlX05ldyhua3dhcmdzKTsKKyAgICBpZiAoa3duYW1lcyA9PSBOVUxMKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDb3B5IHBvc2l0aW9uIGFyZ3VtZW50cyAoYm9ycm93ZWQgcmVmZXJlbmNlcykgKi8KKyAgICBtZW1jcHkoc3RhY2ssIGFyZ3MsIG5hcmdzICogc2l6ZW9mKHN0YWNrWzBdKSk7CisKKyAgICBrd3N0YWNrID0gc3RhY2sgKyBuYXJnczsKKyAgICBwb3MgPSBpID0gMDsKKyAgICAvKiBUaGlzIGxvb3AgZG9lc24ndCBzdXBwb3J0IGxvb2t1cCBmdW5jdGlvbiBtdXRhdGluZyB0aGUgZGljdGlvbmFyeQorICAgICAgIHRvIGNoYW5nZSBpdHMgc2l6ZS4gSXQncyBhIGRlbGliZXJhdGUgY2hvaWNlIGZvciBzcGVlZCwgdGhpcyBmdW5jdGlvbiBpcworICAgICAgIGNhbGxlZCBpbiB0aGUgcGVyZm9ybWFuY2UgY3JpdGljYWwgaG90IGNvZGUuICovCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KGt3YXJncywgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrd25hbWVzLCBpLCBrZXkpOworICAgICAgICAvKiBUaGUgc3RhY2sgY29udGFpbnMgYm9ycm93ZWQgcmVmZXJlbmNlcyAqLworICAgICAgICBrd3N0YWNrW2ldID0gdmFsdWU7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICAqcF9rd25hbWVzID0ga3duYW1lczsKKyAgICByZXR1cm4gc3RhY2s7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKmt3ZGljdCwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworCisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlOiB0aGVzZSBhcmUgaW1wbGVtZW50ZWQgaW4gUHl0aG9uL2NldmFsLmMgYW5kCisgICAgICAgX1B5QXJnX1BhcnNlU3RhY2soKS4gKi8KKworICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgfQorCisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJldHVybiBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgIH0KKworICAgIGlmIChua3dhcmdzID4gMCkgeworICAgICAgICBrd2RpY3QgPSBfUHlTdGFja19Bc0RpY3Qoc3RhY2sgKyBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZGljdCk7CisgICAgUHlfWERFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKIGNhbGxfZnVuY3Rpb25fdGFpbChQeU9iamVjdCAqY2FsbGFibGUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXR2YWw7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChhcmdzICE9IE5VTEwpOwogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphOwotCi0gICAgICAgIGEgPSBQeVR1cGxlX05ldygxKTsKLSAgICAgICAgaWYgKGEgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhLCAwLCBhcmdzKTsKLSAgICAgICAgYXJncyA9IGE7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMShjYWxsYWJsZSwgYXJncyk7CiAgICAgfQotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOworICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKKyAgICB9CiAKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIHZhX2VuZCh2YSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUKFB5T2JqZWN0ICpjYWxsYWJsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7Ci0gICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOwotICAgICAgICB2YV9lbmQodmEpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKIAotICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGNhbGxhYmxlKTsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB2YV9lbmQodmEpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgogY2FsbG1ldGhvZChQeU9iamVjdCogZnVuYywgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhLCBpbnQgaXNfc2l6ZV90KQogewotICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OworCisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CiAKICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKICAgICAgICAgdHlwZV9lcnJvcigiYXR0cmlidXRlIG9mIHR5cGUgJyUuMjAwcycgaXMgbm90IGNhbGxhYmxlIiwgZnVuYyk7Ci0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIGlmIChpc19zaXplX3QpCi0gICAgICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAKLSAgICByZXR2YWwgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7CisgICAgaWYgKGlzX3NpemVfdCkgeworICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgfQorICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gIGV4aXQ6Ci0gICAgLyogYXJncyBnZXRzIGNvbnN1bWVkIGluIGNhbGxfZnVuY3Rpb25fdGFpbCAqLwotICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0KLSAgICByZXR1cm4gcmV0dmFsOworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChmdW5jLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgpAQCAtMjI3NCw4ICsyNTg5LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMjg0LDYgKzI2MDAsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjI5NSw4ICsyNjEyLDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMzA1LDYgKzI2MjMsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjMxNiw4ICsyNjM1LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIzMjUsNiArMjY0NSw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMzM2LDggKzI2NTcsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC0yMzQ2LDM5ICsyNjY4LDYzIEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAxKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotb2JqYXJnc19ta3R1cGxlKHZhX2xpc3QgdmEpCitzdGF0aWMgUHlPYmplY3QgKioKK29iamFyZ3NfbWtzdGFjayhQeU9iamVjdCAqKnNtYWxsX3N0YWNrLCBQeV9zc2l6ZV90IHNtYWxsX3N0YWNrX3NpemUsCisgICAgICAgICAgICAgICAgdmFfbGlzdCB2YSwgUHlfc3NpemVfdCAqcF9uYXJncykKIHsKLSAgICBpbnQgaSwgbiA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIHZhX2xpc3QgY291bnR2YTsKLSAgICBQeU9iamVjdCAqcmVzdWx0LCAqdG1wOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKLSAgICAgICAgUHlfVkFfQ09QWShjb3VudHZhLCB2YSk7CisgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgKi8KKyAgICB2YV9jb3B5KGNvdW50dmEsIHZhKTsKIAotICAgIHdoaWxlICgoKFB5T2JqZWN0ICopdmFfYXJnKGNvdW50dmEsIFB5T2JqZWN0ICopKSAhPSBOVUxMKQotICAgICAgICArK247Ci0gICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcobik7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIG4gPiAwKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKLSAgICAgICAgICAgIHRtcCA9IChQeU9iamVjdCAqKXZhX2FyZyh2YSwgUHlPYmplY3QgKik7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgdG1wKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgIG4gPSAwOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIFB5T2JqZWN0ICphcmcgPSB2YV9hcmcoY291bnR2YSwgUHlPYmplY3QgKik7CisgICAgICAgIGlmIChhcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbisrOworICAgIH0KKyAgICAqcF9uYXJncyA9IG47CisKKyAgICAvKiBDb3B5IGFyZ3VtZW50cyAqLworICAgIGlmIChuIDw9IHNtYWxsX3N0YWNrX3NpemUpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG4gKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhX2VuZChjb3VudHZhKTsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBzdGFja1tpXSA9IHZhX2FyZyh2YSwgUHlPYmplY3QgKik7CisgICAgfQorICAgIHZhX2VuZChjb3VudHZhKTsKKyAgICByZXR1cm4gc3RhY2s7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgUHlPYmplY3QgKm5hbWUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0dldEF0dHIoY2FsbGFibGUsIG5hbWUpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQpAQCAtMjM4NiwyOCArMjczMiwzNiBAQAogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgbmFtZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBjYWxsYWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2FsbGFibGUsIG5hbWUpOwogICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQpAQCAtMjQxNSwzOCArMjc2OSw1MSBAQAogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgbmFtZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsIC4uLikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgdmFfbGlzdCB2YXJnczsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgLyogY291bnQgdGhlIGFyZ3MgKi8KICAgICB2YV9zdGFydCh2YXJncywgY2FsbGFibGUpOwotICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHN0YWNrID0gb2JqYXJnc19ta3N0YWNrKHNtYWxsX3N0YWNrLCBQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmdzLCAmbmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQogCi0gICAgcmV0dXJuIHRtcDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGFibGUsIHN0YWNrLCBuYXJncyk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKaW5kZXggNmQ0YzZhMS4uYzZkMDcwNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCkBAIC0yNzgsMzEgKzI3OCw2IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXJlc3VsdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mb3JtYXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpieXRlc19pbiwgKmJ5dGVzX291dCwgKnJlczsKLSAgICBjaGFyICpieXRlc3RyaW5nOwotCi0gICAgaWYgKHNlbGYgPT0gTlVMTCB8fCAhUHlCeXRlQXJyYXlfQ2hlY2soc2VsZikgfHwgYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgYnl0ZXN0cmluZyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBieXRlc19pbiA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhieXRlc3RyaW5nKTsKLSAgICBpZiAoYnl0ZXNfaW4gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnl0ZXNfb3V0ID0gX1B5Qnl0ZXNfRm9ybWF0KGJ5dGVzX2luLCBhcmdzKTsKLSAgICBQeV9ERUNSRUYoYnl0ZXNfaW4pOwotICAgIGlmIChieXRlc19vdXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChieXRlc19vdXQpOwotICAgIFB5X0RFQ1JFRihieXRlc19vdXQpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHJlczsKLX0KLQogLyogRnVuY3Rpb25zIHN0dWZmZWQgaW50byB0aGUgdHlwZSBvYmplY3QgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKQEAgLTgyMCwxNyArNzk1LDE1IEBACiAgICAgfQogCiAgICAgLyogSXMgaXQgYW4gaW50PyAqLwotICAgIGNvdW50ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKGNvdW50ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgaWYgKFB5SW5kZXhfQ2hlY2soYXJnKSkgeworICAgICAgICBjb3VudCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoY291bnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBlbHNlIGlmIChjb3VudCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVsc2UgeworICAgICAgICB9CisgICAgICAgIGlmIChjb3VudCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIGNvdW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xMTE5LDE2MSArMTA5MiwyNyBAQAogI2luY2x1ZGUgInN0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCIKIAogCi0vKiBUaGUgZm9sbG93aW5nIFB5X0xPQ0FMX0lOTElORSBhbmQgUHlfTE9DQUwgZnVuY3Rpb25zCi13ZXJlIGNvcGllZCBmcm9tIHRoZSBvbGQgY2hhciogc3R5bGUgc3RyaW5nIG9iamVjdC4gKi8KLQotLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KLSNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKLSAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQotewotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgY2hhciBieXRlOwotICAgIFB5X2J1ZmZlciBzdWJidWY7Ci0gICAgY29uc3QgY2hhciAqc3ViOwotICAgIFB5X3NzaXplX3QgbGVuLCBzdWJfbGVuOwotICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOwotICAgIFB5X3NzaXplX3QgcmVzOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJmaW5kL3JmaW5kL2luZGV4L3JpbmRleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICBpZiAoc3Vib2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmc3ViYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTI7Ci0KLSAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotICAgIGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQotICAgICAgICByZXMgPSAtMTsKLSAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKLSNpZm5kZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAmJiBkaXIgPiAwCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOwotICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIGlmIChyZXMgPj0gMCkKLSAgICAgICAgICAgIHJlcyArPSBzdGFydDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChkaXIgPiAwKQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgfQotCi0gICAgaWYgKHN1Ym9iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLVB5RG9jX1NUUlZBUihmaW5kX19kb2NfXywKLSJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZmluZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGNvdW50X19kb2NfXywKLSJCLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic2VjdGlvbiBzdWIgaW5cblwKLWJ5dGVzIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZFxuXAotYXMgaW4gc2xpY2Ugbm90YXRpb24uIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY291bnQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKnN1YjsKLSAgICBQeV9zc2l6ZV90IHN1Yl9sZW47Ci0gICAgY2hhciBieXRlOwotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLQotICAgIFB5X2J1ZmZlciB2c3ViOwotICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImNvdW50IiwgYXJncywgJnN1Yl9vYmosICZieXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChzdWJfb2JqKSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3ViX29iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIHN1YiA9IHZzdWIuYnVmOwotICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBzdWIgPSAmYnl0ZTsKLSAgICAgICAgc3ViX2xlbiA9IDE7Ci0gICAgfQotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwotCi0gICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOwotCi0gICAgaWYgKHN1Yl9vYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOwotCi0gICAgcmV0dXJuIGNvdW50X29iajsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvdW50KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuY2xlYXIKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgYnl0ZWFycmF5LgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2NsZWFyX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVjMmZlNmFlZGUwOTU2YyBpbnB1dD1lNTI0ZmQzMzBhYmNkYzE4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODVjMmZlNmFlZGUwOTU2YyBpbnB1dD1lZDZlZGFlOWRlNDQ3YWM0XSovCiB7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCAwKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTI4MywyNTMgKzExMjIsNzIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5jb3B5CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm4gYSBjb3B5IG9mIEIuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY29weV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NmQ1ZDI5NzVhYTBmMzNmM10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTY4Y2ZiY2ZlZDQ4NGMxMzIgaW5wdXQ9NjU5N2IwYzAxYmNjYWE5ZV0qLwogewogICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcoKFB5T2JqZWN0ICopc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKIH0KIAotUHlEb2NfU1RSVkFSKGluZGV4X19kb2NfXywKLSJCLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2luZGV4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19pbmRleChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIocmZpbmRfX2RvY19fLAotIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JmaW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIocmluZGV4X19kb2NfXywKLSJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmluZGV4KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yaW5kZXgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQogc3RhdGljIGludAogYnl0ZWFycmF5X2NvbnRhaW5zKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5X3NzaXplX3QgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgIGlmIChpdmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfYnVmZmVyIHZhcmc7Ci0gICAgICAgIFB5X3NzaXplX3QgcG9zOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcG9zID0gc3RyaW5nbGliX2ZpbmQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICAgICAgcmV0dXJuIHBvcyA+PSAwOwotICAgIH0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1lbWNocihQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIChpbnQpIGl2YWwsIFB5X1NJWkUoc2VsZikpICE9IE5VTEw7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb250YWlucyhQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmcpOwogfQogCi0KLS8qIE1hdGNoZXMgdGhlIGVuZCAoZGlyZWN0aW9uID49IDApIG9yIHN0YXJ0IChkaXJlY3Rpb24gPCAwKSBvZiBzZWxmCi0gKiBhZ2FpbnN0IHN1YnN0ciwgdXNpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBSZXR1cm5zCi0gKiAtMSBvbiBlcnJvciwgMCBpZiBub3QgZm91bmQgYW5kIDEgaWYgZm91bmQuCi0gKi8KLVB5X0xPQ0FMKGludCkKLV9ieXRlYXJyYXlfdGFpbG1hdGNoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKLXsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIGNvbnN0IGNoYXIqIHN0cjsKLSAgICBQeV9idWZmZXIgdnN1YnN0cjsKLSAgICBpbnQgcnYgPSAwOwotCi0gICAgc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZ2c3Vic3RyLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0KLSAgICBpZiAoZGlyZWN0aW9uIDwgMCkgewotICAgICAgICAvKiBzdGFydHN3aXRoICovCi0gICAgICAgIGlmIChzdGFydCt2c3Vic3RyLmxlbiA+IGxlbikgewotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogZW5kc3dpdGggKi8KLSAgICAgICAgaWYgKGVuZC1zdGFydCA8IHZzdWJzdHIubGVuIHx8IHN0YXJ0ID4gbGVuKSB7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZW5kLXZzdWJzdHIubGVuID4gc3RhcnQpCi0gICAgICAgICAgICBzdGFydCA9IGVuZCAtIHZzdWJzdHIubGVuOwotICAgIH0KLSAgICBpZiAoZW5kLXN0YXJ0ID49IHZzdWJzdHIubGVuKQotICAgICAgICBydiA9ICEgbWVtY21wKHN0citzdGFydCwgdnN1YnN0ci5idWYsIHZzdWJzdHIubGVuKTsKLQotZG9uZToKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3Vic3RyKTsKLSAgICByZXR1cm4gcnY7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKHN0YXJ0c3dpdGhfX2RvY19fLAotIkIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1wcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3RhcnRzd2l0aChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJzdGFydHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLVB5RG9jX1NUUlZBUihlbmRzd2l0aF9fZG9jX18sCi0iQi5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCi1cblwKLVJldHVybiBUcnVlIGlmIEIgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2VuZHN3aXRoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImVuZHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19lbmRzd2l0aChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkudHJhbnNsYXRlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHRhYmxlOiBvYmplY3QKICAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KLSAgICBbCi0gICAgZGVsZXRlY2hhcnM6IG9iamVjdAotICAgIF0KICAgICAvCisgICAgZGVsZXRlIGFzIGRlbGV0ZWNoYXJzOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKIAogUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiAKLUFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlY2hhcnMgYXJlIHJlbW92ZWQuCitBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC4KIFRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYmViYzg2YTlhMWZmMDgzIGlucHV0PWI3NDlhZDg1ZjQ4NjA4MjRdKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjZhOGYwMWMyYTc0ZTQ0NiBpbnB1dD1jZmZmOTU2ZDRkMTI3YTliXSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7CiAgICAgY29uc3QgY2hhciAqdGFibGVfY2hhcnM7CkBAIC0xNTcyLDcgKzEyMzAsNyBAQAogICAgIHJlc3VsdCA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgaW5sZW4pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwotICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZUFycmF5X0FzU3RyaW5nKHJlc3VsdCk7CisgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7CiAgICAgaW5wdXQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAogICAgIGlmICh2ZGVsLmxlbiA9PSAwICYmIHRhYmxlX2NoYXJzICE9IE5VTEwpIHsKQEAgLTE1OTgsOCArMTI1Niw3IEBACiAgICAgZm9yIChpID0gaW5sZW47IC0taSA+PSAwOyApIHsKICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCppbnB1dCsrKTsKICAgICAgICAgaWYgKHRyYW5zX3RhYmxlW2NdICE9IC0xKQotICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpvdXRwdXQrKyA9IChjaGFyKXRyYW5zX3RhYmxlW2NdKSA9PSBjKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKXRyYW5zX3RhYmxlW2NdOwogICAgIH0KICAgICAvKiBGaXggdGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyBzdHJpbmcgKi8KICAgICBpZiAoaW5sZW4gPiAwKQpAQCAtMTY0Miw0OTMgKzEyOTksNiBAQAogfQogCiAKLS8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KLQotI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQotCi0KLS8qIEJ5dGVzIG9wcyBtdXN0IHJldHVybiBhIHN0cmluZywgY3JlYXRlIGEgY29weSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJldHVybl9zZWxmKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotewotICAgIC8qIGFsd2F5cyByZXR1cm4gYSBuZXcgYnl0ZWFycmF5ICovCi0gICAgcmV0dXJuIChQeUJ5dGVBcnJheU9iamVjdCAqKVB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwotfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWNvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIFB5X3NzaXplX3QgY291bnQ9MDsKLSAgICBjb25zdCBjaGFyICpzdGFydD10YXJnZXQ7Ci0gICAgY29uc3QgY2hhciAqZW5kPXRhcmdldCt0YXJnZXRfbGVuOwotCi0gICAgd2hpbGUgKCAoc3RhcnQ9ZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgYykpICE9IE5VTEwgKSB7Ci0gICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGFydCArPSAxOwotICAgIH0KLSAgICByZXR1cm4gY291bnQ7Ci19Ci0KLQotLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLwotCi0vKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9pbnRlcmxlYXZlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBpOwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7Ci0gICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KLSAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pCi0gICAgICAgIGNvdW50ID0gbWF4Y291bnQ7Ci0gICAgZWxzZQotICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLwotICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKLQotICAgIGlmICghIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAvKiBUT0RPOiBzcGVjaWFsIGNhc2Ugc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggZG9lc24ndCBuZWVkIG1lbWNweSAqLwotCi0gICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICBjb3VudCAtPSAxOwotCi0gICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuLWkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KLSAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCi0KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7Ci0gICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OwotCi0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotCi0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPT0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3MsICpzdGFydCwgKmVuZCwgKm5leHQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKLQotICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCi0gICAgcmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKLQotICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgc3RhcnQgPSAgcmVzdWx0X3MgKyAobmV4dC1zZWxmX3MpOwotICAgICpzdGFydCA9IHRvX2M7Ci0gICAgc3RhcnQrKzsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICpuZXh0ID0gdG9fYzsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKmVuZDsKLSAgICBjaGFyICpzZWxmX3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IGJ5dGVzIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgaWYgKG9mZnNldCA9PSAtMSkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKLSAgICBQeV9NRU1DUFkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldD09LTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHN0YXJ0K29mZnNldCwgdG9fcywgZnJvbV9sZW4pOwotICAgICAgICBzdGFydCArPSBvZmZzZXQrZnJvbV9sZW47Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCi0gICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIGZyb21fbGVuKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCtvZmZzZXQ7Ci0gICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7Ci0gICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGlmIChtYXhjb3VudCA8IDApIHsKLSAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAobWF4Y291bnQgPT0gMCB8fAotICAgICAgICAoZnJvbV9sZW4gPT0gMCAmJiB0b19sZW4gPT0gMCkpIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHplcm8tbGVuZ3RoIHNwZWNpYWwgY2FzZXMgKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGluc2VydCB0aGUgJ3RvJyBieXRlcyBldmVyeXdoZXJlLiAgICovCi0gICAgICAgIC8qICAgID4+PiAiUHl0aG9uIi5yZXBsYWNlKCIiLCAiLiIpICAgICAqLwotICAgICAgICAvKiAgICAnLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci0KLSAgICAvKiBFeGNlcHQgZm9yICIiLnJlcGxhY2UoIiIsICJBIikgPT0gIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLwotICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIGJ5dGVzIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IGJ5dGVzICovCi0gICAgLyogU3BlY2lhbCBjYXNlIHNvIHRoZSByZW1haW5pbmcgY29kZSBhbHdheXMgZ2V0cyBhIG5vbi1lbXB0eSBieXRlcyAqLwotICAgIGlmIChQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAodG9fbGVuID09IDApIHsKLSAgICAgICAgLyogZGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiAnZnJvbScgYnl0ZXMgKi8KLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAotICAgICAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBib3RoIGJ5dGVzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7Ci0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAotICAgICAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgICAgICBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgIHRvX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE90aGVyd2lzZSB1c2UgdGhlIG1vcmUgZ2VuZXJpYyBhbGdvcml0aG1zICovCi0gICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihzZWxmLCBmcm9tX3NbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogbGVuKCdmcm9tJyk+PTIsIGxlbigndG8nKT49MSAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9zdWJzdHJpbmcoc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfQotfQotCi0KIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZXBsYWNlCiAKQEAgLTIxNTAsOSArMTMyMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqbmV3LCBQeV9zc2l6ZV90IGNvdW50KQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQzOTg4NGM0ZGM1OTQxMmEgaW5wdXQ9YWEzNzlkOTg4NjM3YzdmYl0qLwogewotICAgIHJldHVybiAoUHlPYmplY3QgKilyZXBsYWNlKChQeUJ5dGVBcnJheU9iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZC0+YnVmLCBvbGQtPmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKKyAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2UoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTIyMDAsNyArMTM3MCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHNlcDogb2JqZWN0CiAgICAgLwogCkBAIC0yMjE2LDcgKzEzODUsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3BhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTdkN2ZlMzdiMTY5NmQ1MDZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NWQyNTI1ZGRkMzVmOTU3IGlucHV0PTg2Zjg5MjIzODkyYjcwYjVdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIApAQCAtMjIzOCw3ICsxNDA3LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5ycGFydGl0aW9uCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHNlcDogb2JqZWN0CiAgICAgLwogCkBAIC0yMjU0LDcgKzE0MjIsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JwYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD05YjhjZDU0MGMxYjc1ODUzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDQwZGUzYzk0MjYxMTVlOCBpbnB1dD01ZjQwOTRmMmRlODdjOGYzXSovCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKQEAgLTIzMTIsMTQgKzE0ODAsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZXZlcnNlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgdmFsdWVzIGluIEIgaW4gcGxhY2UuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmV2ZXJzZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NzkzM2E0OTliODU5N2JkMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlmNzYxNmYyOWFiMzA5ZDMgaW5wdXQ9NTQzMzU2MzE5ZmM3ODU1N10qLwogewogICAgIGNoYXIgc3dhcCwgKmhlYWQsICp0YWlsOwogICAgIFB5X3NzaXplX3QgaSwgaiwgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yMzQ4LDcgKzE1MTQsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Lmluc2VydAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpbmRleDogUHlfc3NpemVfdAogICAgICAgICBUaGUgaW5kZXggd2hlcmUgdGhlIHZhbHVlIGlzIHRvIGJlIGluc2VydGVkLgogICAgIGl0ZW06IGJ5dGVzdmFsdWUKQEAgLTIzNjAsNyArMTUyNSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgsIGludCBpdGVtKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9ODMzNzY2ODM2YmEzMGUxZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc2Yzc3NWE3MGU3YjA3YjcgaW5wdXQ9YjJiNWQwN2U5ZGU2YzA3MF0qLwogewogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAgICAgY2hhciAqYnVmOwpAQCAtMjM5MCw3ICsxNTU1LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5hcHBlbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaXRlbTogYnl0ZXN2YWx1ZQogICAgICAgICBUaGUgaXRlbSB0byBiZSBhcHBlbmRlZC4KICAgICAvCkBAIC0yNDAwLDcgKzE1NjQsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2FwcGVuZF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgaXRlbSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTU0ZTE5ZWQxODg2Y2I2IGlucHV0PWFlNTZlYTg3MzgwNDA3Y2NdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMTU0ZTE5ZWQxODg2Y2I2IGlucHV0PTIwZDZiZWMzZDEzNDA1OTNdKi8KIHsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogCkBAIC0yNDIwLDcgKzE1ODQsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmV4dGVuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpdGVyYWJsZV9vZl9pbnRzOiBvYmplY3QKICAgICAgICAgVGhlIGl0ZXJhYmxlIG9mIGl0ZW1zIHRvIGFwcGVuZC4KICAgICAvCkBAIC0yNDMwLDcgKzE1OTMsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2V4dGVuZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2ludHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jZTgzYTVkNzViNzBkODUwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgxNTVkYmUyNDkxNzBiMSBpbnB1dD1jNjE3YjNhOTMyNDliYTI4XSovCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbSwgKmJ5dGVhcnJheV9vYmo7CiAgICAgUHlfc3NpemVfdCBidWZfc2l6ZSA9IDAsIGxlbiA9IDA7CkBAIC0yNTE1LDcgKzE2NzgsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnBvcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpbmRleDogUHlfc3NpemVfdCA9IC0xCiAgICAgICAgIFRoZSBpbmRleCBmcm9tIHdoZXJlIHRvIHJlbW92ZSB0aGUgaXRlbS4KICAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZW1vdmUgdGhlIGxhc3QgaXRlbS4KQEAgLTI1MjgsNyArMTY5MCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcG9wX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0wNzk3ZTZjMGNhOWQ1YTg1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBjY2Q0MDFmODAyMWRhOCBpbnB1dD0zNTkxZGYyZDA2YzBkMjM3XSovCiB7CiAgICAgaW50IHZhbHVlOwogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CkBAIC0yNTYwLDcgKzE3MjIsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJlbW92ZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICB2YWx1ZTogYnl0ZXN2YWx1ZQogICAgICAgICBUaGUgdmFsdWUgdG8gcmVtb3ZlLgogICAgIC8KQEAgLTI1NzAsMjAgKzE3MzEsMjAgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZW1vdmVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHZhbHVlKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9NDc1NjBiMTFmZDg1NmMyNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NTllMzc4NjY3MDljMTMgaW5wdXQ9MTIxODMxMjQwY2Q1MWRkZl0qLwogewotICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CisgICAgUHlfc3NpemVfdCB3aGVyZSwgbiA9IFB5X1NJWkUoc2VsZik7CiAgICAgY2hhciAqYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIGNoYXIgKndoZXJlID0gbWVtY2hyKGJ1ZiwgdmFsdWUsIG4pOwogCi0gICAgaWYgKCF3aGVyZSkgeworICAgIHdoZXJlID0gc3RyaW5nbGliX2ZpbmRfY2hhcihidWYsIG4sIHZhbHVlKTsKKyAgICBpZiAod2hlcmUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidmFsdWUgbm90IGZvdW5kIGluIGJ5dGVhcnJheSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKCFfY2FucmVzaXplKHNlbGYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1lbW1vdmUod2hlcmUsIHdoZXJlICsgMSwgYnVmICsgbiAtIHdoZXJlKTsKKyAgICBtZW1tb3ZlKGJ1ZiArIHdoZXJlLCBidWYgKyB3aGVyZSArIDEsIG4gLSB3aGVyZSk7CiAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBuIC0gMSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMjU5Myw4ICsxNzU0LDggQEAKIC8qIFhYWCBUaGVzZSB0d28gaGVscGVycyBjb3VsZCBiZSBvcHRpbWl6ZWQgaWYgYXJnc2l6ZSA9PSAxICovCiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1sc3RyaXBfaGVscGVyKGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKLSAgICAgICAgICAgICAgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCitsc3RyaXBfaGVscGVyKGNvbnN0IGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKKyAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCiB7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICB3aGlsZSAoaSA8IG15c2l6ZSAmJiBtZW1jaHIoYXJncHRyLCAodW5zaWduZWQgY2hhcikgbXlwdHJbaV0sIGFyZ3NpemUpKQpAQCAtMjYwMyw4ICsxNzY0LDggQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLXJzdHJpcF9oZWxwZXIoY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAotICAgICAgICAgICAgICB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKK3JzdHJpcF9oZWxwZXIoY29uc3QgY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAorICAgICAgICAgICAgICBjb25zdCB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKIHsKICAgICBQeV9zc2l6ZV90IGkgPSBteXNpemUgLSAxOwogICAgIHdoaWxlIChpID49IDAgJiYgbWVtY2hyKGFyZ3B0ciwgKHVuc2lnbmVkIGNoYXIpIG15cHRyW2ldLCBhcmdzaXplKSkKQEAgLTI4MDUsMjcgKzE5NjYsMTAgQEAKICAgICAgICAgKTsKIH0KIAotc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCi17Ci0gICAgaWYgKGMgPj0gMTI4KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlfSVNVUFBFUihjKSkKLSAgICAgICAgICAgIGMgPSBQeV9UT0xPV0VSKGMpOwotICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogYnl0ZWFycmF5LmZyb21oZXgKIAotICAgIGNsczogc2VsZih0eXBlPSJQeU9iamVjdCoiKQogICAgIHN0cmluZzogdW5pY29kZQogICAgIC8KIApAQCAtMjgzNiw1MSArMTk4MCwxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGYzZGE2MDEyOWIzNzAwYyBpbnB1dD05MDdiYmQyZDM0ZDkzNjdhXSovCitieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZjBmMGI2ZDMwZmIzYmEwIGlucHV0PWYwMzNhMTZkMWZiMjFmNDhdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3Ynl0ZXM7Ci0gICAgY2hhciAqYnVmOwotICAgIFB5X3NzaXplX3QgaGV4bGVuLCBieXRlc2xlbiwgaSwgajsKLSAgICBpbnQgdG9wLCBib3Q7Ci0gICAgdm9pZCAqZGF0YTsKLSAgICB1bnNpZ25lZCBpbnQga2luZDsKLQotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKLSAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwotCi0gICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KLSAgICBuZXdieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKLSAgICBpZiAoIW5ld2J5dGVzKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcobmV3Ynl0ZXMpOwotICAgIGZvciAoaSA9IGogPSAwOyBpIDwgaGV4bGVuOyBpICs9IDIpIHsKLSAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwotICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGkpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBidWZbaisrXSA9ICh0b3AgPDwgNCkgKyBib3Q7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0Zyb21IZXgoc3RyaW5nLCB0eXBlID09ICZQeUJ5dGVBcnJheV9UeXBlKTsKKyAgICBpZiAodHlwZSAhPSAmUHlCeXRlQXJyYXlfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBOVUxMKSk7CiAgICAgfQotICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUobmV3Ynl0ZXMsIGopIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXR1cm4gbmV3Ynl0ZXM7Ci0KLSAgZXJyb3I6Ci0gICAgUHlfREVDUkVGKG5ld2J5dGVzKTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeURvY19TVFJWQVIoaGV4X19kb2NfXywKQEAgLTI5MzUsMTQgKzIwNDMsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3JlZHVjZV9fIGFzIGJ5dGVhcnJheV9yZWR1Y2UKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVkdWNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD1mYmIwN2RlNGQxMDJhMDNhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJiZjMwNDA4NjQ2NGNhYiBpbnB1dD00NGI1NzM3YWRhNjJkZDNmXSovCiB7CiAgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIDIpOwogfQpAQCAtMjk1MCw3ICsyMDU2LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3JlZHVjZV9leF9fIGFzIGJ5dGVhcnJheV9yZWR1Y2VfZXgKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgcHJvdG86IGludCA9IDAKICAgICAvCiAKQEAgLTI5NTksNyArMjA2NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBwcm90bykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PTBlMDkxYTQyY2E2ZGJkOTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmVhYzMzMzc3MTk3NTIwIGlucHV0PWYxMjliYzFhMWFhMTUxZWVdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgcHJvdG8pOwogfQpAQCAtMjk2NywxNCArMjA3MiwxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fc2l6ZW9mX18gYXMgYnl0ZWFycmF5X3NpemVvZgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYnl0ZWFycmF5IG9iamVjdCBpbiBtZW1vcnksIGluIGJ5dGVzLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3NpemVvZl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9NmIyM2QzMDUzNjJiNDYyYl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczOGFiZGQxNzk1MWM0MjcgaW5wdXQ9ZTI3MzIwZmQ5OGE0YmM1YV0qLwogewogICAgIFB5X3NzaXplX3QgcmVzOwogCkBAIC0zMDE1LDE5ICsyMTE4LDIyIEBACiAgICAgQllURUFSUkFZX0FQUEVORF9NRVRIT0RERUYKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAotICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCisgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBfUHlfY2VudGVyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0NMRUFSX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9DT1BZX01FVEhPRERFRgotICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCiAgICAgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYKLSAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLCBlbmRzd2l0aF9fZG9jX199LAorICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2VuZHN3aXRoLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9lbmRzd2l0aF9fZG9jX199LAogICAgIHsiZXhwYW5kdGFicyIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfZXhwYW5kdGFicywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAgICAgZXhwYW5kdGFic19fZG9jX199LAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAogICAgIEJZVEVBUlJBWV9FWFRFTkRfTUVUSE9EREVGCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9maW5kLCBNRVRIX1ZBUkFSR1MsIGZpbmRfX2RvY19ffSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2ZpbmRfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfRlJPTUhFWF9NRVRIT0RERUYKICAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaGV4LCBNRVRIX05PQVJHUywgaGV4X19kb2NfX30sCi0gICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfaW5kZXhfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfSU5TRVJUX01FVEhPRERFRgogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCkBAIC0zMDQ0LDcgKzIxNTAsNyBAQAogICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0pPSU5fTUVUSE9EREVGCi0gICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKKyAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAogICAgIEJZVEVBUlJBWV9MU1RSSVBfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX01BS0VUUkFOU19NRVRIT0RERUYKQEAgLTMwNTMsMjMgKzIxNTksMjMgQEAKICAgICBCWVRFQVJSQVlfUkVNT1ZFX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SRVBMQUNFX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SRVZFUlNFX01FVEhPRERFRgotICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIHJmaW5kX19kb2NfX30sCi0gICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKLSAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAorICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JmaW5kLCBNRVRIX1ZBUkFSR1MsIF9QeV9yZmluZF9fZG9jX199LAorICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X3JpbmRleF9fZG9jX199LAorICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9yanVzdF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9SUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MgLAotICAgICBzdGFydHN3aXRoX19kb2NfX30sCisgICAgIF9QeV9zdGFydHN3aXRoX19kb2NfX30sCiAgICAgQllURUFSUkFZX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRgogICAgIHsidXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3VwcGVyLCBNRVRIX05PQVJHUywgX1B5X3VwcGVyX19kb2NfX30sCi0gICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgemZpbGxfX2RvY19ffSwKKyAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCBfUHlfemZpbGxfX2RvY19ffSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTMwNzgsNyArMjE4NCw3IEBACiB7CiAgICAgaWYgKCFQeUJ5dGVBcnJheV9DaGVjayh2KSkKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIHJldHVybiBieXRlYXJyYXlfZm9ybWF0KChQeUJ5dGVBcnJheU9iamVjdCAqKXYsIHcpOworICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXRFeChQeUJ5dGVBcnJheV9BU19TVFJJTkcodiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHYpLCB3LCAxKTsKIH0KIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlYXJyYXlfYXNfbnVtYmVyID0gewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMgYi9PYmplY3RzL2J5dGVzX21ldGhvZHMuYwppbmRleCBhMjk5OTE1Li5kNWM0ZmU2IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYworKysgYi9PYmplY3RzL2J5dGVzX21ldGhvZHMuYwpAQCAtMSwzICsxLDQgQEAKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKIApAQCAtMjc3LDcgKzI3OCw3IEBACiBjaGFyYWN0ZXJzLCBhbGwgcmVtYWluaW5nIGNhc2VkIGNoYXJhY3RlcnMgaGF2ZSBsb3dlcmNhc2UuIik7CiAKIHZvaWQKLV9QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGludCBwcmV2aW91c19pc19jYXNlZCA9IDA7CkBAIC0zMDYsNyArMzA3LDcgQEAKIGFuZCB0aGUgcmVzdCBsb3dlci1jYXNlZC4iKTsKIAogdm9pZAotX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogCkBAIC0zMzYsNyArMzM3LDcgQEAKIHRvIGxvd2VyY2FzZSBBU0NJSSBhbmQgdmljZSB2ZXJzYS4iKTsKIAogdm9pZAotX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTM4NywzICszODgsNDI3IEBACiAKICAgICByZXR1cm4gcmVzOwogfQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgc3RyaW5nbGliXyMjRgorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiBjaGFyCisjZGVmaW5lIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAxCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisKKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdoZXRoZXIgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDAsIDI1NikuCisKK0lmIHRoaXMgaXMgdGhlIGNhc2UsIHdyaXRlcyB0aGUgaW50ZWdlciB2YWx1ZSB0byB0aGUgYnl0ZSBwYXJhbWV0ZXIKK2FuZCBzZXRzIHN1Ym9iaiB0byBOVUxMLiBPdGhlcndpc2UsIHNldHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHN1Ym9iagorYW5kIGRvZXNuJ3QgdG91Y2ggYnl0ZS4gVGhlIG90aGVyIHBhcmFtZXRlcnMgYXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YKK3N0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkuCisqLworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorcGFyc2VfYXJnc19maW5kc19ieXRlKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLCBjaGFyICpieXRlLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgUHlPYmplY3QgKnRtcF9zdWJvYmo7CisgICAgUHlfc3NpemVfdCBpdmFsOworICAgIFB5T2JqZWN0ICplcnI7CisKKyAgICBpZighc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghUHlOdW1iZXJfQ2hlY2sodG1wX3N1Ym9iaikpIHsKKyAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QodG1wX3N1Ym9iaiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgaWYgKGl2YWwgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gUHlFcnJfT2NjdXJyZWQoKTsKKyAgICAgICAgaWYgKGVyciAmJiAhUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKGVyciwgUHlFeGNfT3ZlcmZsb3dFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAqc3Vib2JqID0gTlVMTDsKKyAgICAqYnl0ZSA9IChjaGFyKWl2YWw7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCisjZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCisgICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorZmluZF9pbnRlcm5hbChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKK3sKKyAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGNoYXIgYnl0ZTsKKyAgICBQeV9idWZmZXIgc3ViYnVmOworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5X3NzaXplX3QgcmVzOworCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoZnVuY3Rpb25fbmFtZSwgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIC0yOworCisgICAgaWYgKHN1Ym9iaikgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0yOworCisgICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7CisgICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKKyAgICAgICAgcmVzID0gLTE7CisgICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxKSB7CisgICAgICAgIGlmIChkaXIgPiAwKQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfY2hhcigKKyAgICAgICAgICAgICAgICBzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgKnN1Yik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9jaGFyKAorICAgICAgICAgICAgICAgIHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAqc3ViKTsKKyAgICAgICAgaWYgKHJlcyA+PSAwKQorICAgICAgICAgICAgcmVzICs9IHN0YXJ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCisgICAgICAgICAgICAgICAgc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICBpZiAoc3Vib2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOworCisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZmluZF9fZG9jX18sCisiQi5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAorc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCithcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCitcblwKK1JldHVybiAtMSBvbiBmYWlsdXJlLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJmaW5kIiwgYXJncywgKzEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfaW5kZXhfX2RvY19fLAorIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK0xpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19pbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJpbmRleCIsIGFyZ3MsICsxKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JmaW5kX19kb2NfXywKKyJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKK3N1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAorYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAorXG5cCitSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3JmaW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgInJmaW5kIiwgYXJncywgLTEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmluZGV4X19kb2NfXywKKyJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19yaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAicmluZGV4IiwgYXJncywgLTEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfY291bnRfX2RvY19fLAorIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uIHN1YiBpblxuXAorYnl0ZXMgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCithcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2NvdW50KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzdWJfb2JqOworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOworICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKworICAgIFB5X2J1ZmZlciB2c3ViOworICAgIFB5T2JqZWN0ICpjb3VudF9vYmo7CisKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJfb2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoc3ViX29iaikgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisKKyAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCisgICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCisgICAgICAgICk7CisKKyAgICBpZiAoc3ViX29iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7CisKKyAgICByZXR1cm4gY291bnRfb2JqOworfQorCitpbnQKK19QeV9ieXRlc19jb250YWlucyhjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X3NzaXplX3QgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIE5VTEwpOworICAgIGlmIChpdmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfYnVmZmVyIHZhcmc7CisgICAgICAgIFB5X3NzaXplX3QgcG9zOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgJnZhcmcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcG9zID0gc3RyaW5nbGliX2ZpbmQoc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmcuYnVmLCB2YXJnLmxlbiwgMCk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOworICAgICAgICByZXR1cm4gcG9zID49IDA7CisgICAgfQorICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID49IDI1NikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gbWVtY2hyKHN0ciwgKGludCkgaXZhbCwgbGVuKSAhPSBOVUxMOworfQorCisKKy8qIE1hdGNoZXMgdGhlIGVuZCAoZGlyZWN0aW9uID49IDApIG9yIHN0YXJ0IChkaXJlY3Rpb24gPCAwKSBvZiB0aGUgYnVmZmVyCisgKiBhZ2FpbnN0IHN1YnN0ciwgdXNpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgYXJndW1lbnRzLiBSZXR1cm5zCisgKiAtMSBvbiBlcnJvciwgMCBpZiBub3QgZm91bmQgYW5kIDEgaWYgZm91bmQuCisgKi8KK3N0YXRpYyBpbnQKK3RhaWxtYXRjaChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqc3Vic3RyLAorICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQoreworICAgIFB5X2J1ZmZlciBzdWJfdmlldyA9IHtOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzbGVuOworCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vic3RyKSkgeworICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJzdHIpOworICAgICAgICBzbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJzdHIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZzdWJfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzdWIgPSBzdWJfdmlldy5idWY7CisgICAgICAgIHNsZW4gPSBzdWJfdmlldy5sZW47CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKworICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7CisgICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KKyAgICAgICAgaWYgKHN0YXJ0ICsgc2xlbiA+IGxlbikKKyAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogZW5kc3dpdGggKi8KKyAgICAgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc2xlbiB8fCBzdGFydCA+IGxlbikKKyAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7CisKKyAgICAgICAgaWYgKGVuZCAtIHNsZW4gPiBzdGFydCkKKyAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gc2xlbjsKKyAgICB9CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgc2xlbikKKyAgICAgICAgZ290byBub3Rmb3VuZDsKKyAgICBpZiAobWVtY21wKHN0ciArIHN0YXJ0LCBzdWIsIHNsZW4pICE9IDApCisgICAgICAgIGdvdG8gbm90Zm91bmQ7CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7CisgICAgcmV0dXJuIDE7CisKK25vdGZvdW5kOgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeV9ieXRlc190YWlsbWF0Y2goY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CisgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeU9iamVjdCAqc3Vib2JqOworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIGxlbiwgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBsZW4sIHN1Ym9iaiwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciBhIHR1cGxlIG9mIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9zdGFydHN3aXRoX19kb2NfXywKKyJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAorXG5cCitSZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCitXaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCitXaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAorcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfc3RhcnRzd2l0aChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX3RhaWxtYXRjaChzdHIsIGxlbiwgInN0YXJ0c3dpdGgiLCBhcmdzLCAtMSk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2VuZHN3aXRoX19kb2NfXywKKyJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKK1xuXAorUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKK1dpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKK1dpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCitzdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19lbmRzd2l0aChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX3RhaWxtYXRjaChzdHIsIGxlbiwgImVuZHN3aXRoIiwgYXJncywgKzEpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9leHBhbmR0YWJzX19kb2NfXywKKyJCLmV4cGFuZHRhYnModGFic2l6ZT04KSAtPiBjb3B5IG9mIEJcblwKK1xuXAorUmV0dXJuIGEgY29weSBvZiBCIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgZXhwYW5kZWQgdXNpbmcgc3BhY2VzLlxuXAorSWYgdGFic2l6ZSBpcyBub3QgZ2l2ZW4sIGEgdGFiIHNpemUgb2YgOCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2xqdXN0X19kb2NfXywKKyJCLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JqdXN0X19kb2NfXywKKyJCLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCisiZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2NlbnRlcl9fZG9jX18sCisiQi5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3pmaWxsX19kb2NfXywKKyJCLnpmaWxsKHdpZHRoKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJQYWQgYSBudW1lcmljIHN0cmluZyBCIHdpdGggemVyb3Mgb24gdGhlIGxlZnQsIHRvIGZpbGwgYSBmaWVsZFxuIgorIm9mIHRoZSBzcGVjaWZpZWQgd2lkdGguICBCIGlzIG5ldmVyIHRydW5jYXRlZC4iKTsKKwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9ieXRlc29iamVjdC5jIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCmluZGV4IDM5MzQzMjguLjc3OWZlMjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNvYmplY3QuYworKysgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKQEAgLTksOSArOSw5IEBACiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKIC8qW2NsaW5pYyBpbnB1dF0KLWNsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0KiIgIiZQeUJ5dGVzX1R5cGUiCitjbGFzcyBieXRlcyAiUHlCeXRlc09iamVjdCAqIiAiJlB5Qnl0ZXNfVHlwZSIKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTFhMWQ5MTAyYWZjMWIwMGNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTdhMjM4Zjk2NWQ2NDg5MmJdKi8KIAogI2luY2x1ZGUgImNsaW5pYy9ieXRlc29iamVjdC5jLmgiCiAKQEAgLTMwLDYgKzMwLDEwIEBACiAqLwogI2RlZmluZSBQeUJ5dGVzT2JqZWN0X1NJWkUgKG9mZnNldG9mKFB5Qnl0ZXNPYmplY3QsIG9iX3N2YWwpICsgMSkKIAorLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIF9QeUJ5dGVzV3JpdGVyX0dldFNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnN0cik7CisKIC8qCiAgICBGb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCksIHRoZSBwYXJhbWV0ZXIgYHN0cicgcG9pbnRzIHRvIGEgbnVsbC10ZXJtaW5hdGVkCiAgICBzdHJpbmcgY29udGFpbmluZyBleGFjdGx5IGBzaXplJyBieXRlcy4KQEAgLTExNiw3ICsxMjAsNyBAQAogICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKIAotICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKKyAgICBtZW1jcHkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSk7CiAgICAgLyogc2hhcmUgc2hvcnQgc3RyaW5ncyAqLwogICAgIGlmIChzaXplID09IDEpIHsKICAgICAgICAgY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSA9IG9wOwpAQCAtMTU5LDcgKzE2Myw3IEBACiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKICAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKLSAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSsxKTsKKyAgICBtZW1jcHkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSsxKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBudWxsc3RyaW5nID0gb3A7CkBAIC0xNzQsMTkwICsxNzgsMTg0IEBACiBQeU9iamVjdCAqCiBQeUJ5dGVzX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIHsKLSAgICB2YV9saXN0IGNvdW50OwotICAgIFB5X3NzaXplX3QgbiA9IDA7Ci0gICAgY29uc3QgY2hhciogZjsKICAgICBjaGFyICpzOwotICAgIFB5T2JqZWN0KiBzdHJpbmc7CisgICAgY29uc3QgY2hhciAqZjsKKyAgICBjb25zdCBjaGFyICpwOworICAgIFB5X3NzaXplX3QgcHJlYzsKKyAgICBpbnQgbG9uZ2ZsYWc7CisgICAgaW50IHNpemVfdGZsYWc7CisgICAgLyogTG9uZ2VzdCA2NC1iaXQgZm9ybWF0dGVkIG51bWJlcnM6CisgICAgICAgLSAiMTg0NDY3NDQwNzM3MDk1NTE2MTVcMCIgKDIxIGJ5dGVzKQorICAgICAgIC0gIi05MjIzMzcyMDM2ODU0Nzc1ODA4XDAiICgyMSBieXRlcykKKyAgICAgICBEZWNpbWFsIHRha2VzIHRoZSBtb3N0IHNwYWNlIChpdCBpc24ndCBlbm91Z2ggZm9yIG9jdGFsLikKIAotICAgIFB5X1ZBX0NPUFkoY291bnQsIHZhcmdzKTsKLSAgICAvKiBzdGVwIDE6IGZpZ3VyZSBvdXQgaG93IGxhcmdlIGEgYnVmZmVyIHdlIG5lZWQgKi8KLSAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKLSAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGY7Ci0gICAgICAgICAgICB3aGlsZSAoKisrZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQotICAgICAgICAgICAgICAgIDsKKyAgICAgICBMb25nZXN0IDY0LWJpdCBwb2ludGVyIHJlcHJlc2VudGF0aW9uOgorICAgICAgICIweGZmZmZmZmZmZmZmZmZmZmZcMCIgKDE5IGJ5dGVzKS4gKi8KKyAgICBjaGFyIGJ1ZmZlclsyMV07CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCi0gICAgICAgICAgICAvKiBza2lwIHRoZSAnbCcgb3IgJ3onIGluIHslbGQsICV6ZCwgJWx1LCAlenV9IHNpbmNlCi0gICAgICAgICAgICAgKiB0aGV5IGRvbid0IGFmZmVjdCB0aGUgYW1vdW50IG9mIHNwYWNlIHdlIHJlc2VydmUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICgoKmYgPT0gJ2wnIHx8ICpmID09ICd6JykgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKQotICAgICAgICAgICAgICAgICsrZjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICBpZiAoYyA8IDAgfHwgYyA+IDI1NSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUJ5dGVzX0Zyb21Gb3JtYXRWKCk6ICVjIGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0cyBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAyNTVdIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdkJzogY2FzZSAndSc6IGNhc2UgJ2knOiBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIDIwIGJ5dGVzIGlzIGVub3VnaCB0byBob2xkIGEgNjQtYml0Ci0gICAgICAgICAgICAgICAgICAgaW50ZWdlci4gIERlY2ltYWwgdGFrZXMgdGhlIG1vc3Qgc3BhY2UuCi0gICAgICAgICAgICAgICAgICAgVGhpcyBpc24ndCBlbm91Z2ggZm9yIG9jdGFsLiAqLwotICAgICAgICAgICAgICAgIG4gKz0gMjA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBzID0gdmFfYXJnKGNvdW50LCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgbiArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIG1heGltdW0gNjQtYml0IHBvaW50ZXIgcmVwcmVzZW50YXRpb246Ci0gICAgICAgICAgICAgICAgICogMHhmZmZmZmZmZmZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICogc28gMTkgY2hhcmFjdGVycyBpcyBlbm91Z2guCi0gICAgICAgICAgICAgICAgICogWFhYIEkgY291bnQgMTggLS0gd2hhdCdzIHRoZSBleHRyYSBmb3I/Ci0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgbiArPSAxOTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgLyogaWYgd2Ugc3R1bWJsZSB1cG9uIGFuIHVua25vd24KLSAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nIGNvZGUsIGNvcHkgdGhlIHJlc3Qgb2YKLSAgICAgICAgICAgICAgICAgICB0aGUgZm9ybWF0IHN0cmluZyB0byB0aGUgb3V0cHV0Ci0gICAgICAgICAgICAgICAgICAgc3RyaW5nLiAod2UgY2Fubm90IGp1c3Qgc2tpcCB0aGUKLSAgICAgICAgICAgICAgICAgICBjb2RlLCBzaW5jZSB0aGVyZSdzIG5vIHdheSB0byBrbm93Ci0gICAgICAgICAgICAgICAgICAgd2hhdCdzIGluIHRoZSBhcmd1bWVudCBsaXN0KSAqLwotICAgICAgICAgICAgICAgIG4gKz0gc3RybGVuKHApOwotICAgICAgICAgICAgICAgIGdvdG8gZXhwYW5kOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG4rKzsKLSAgICB9Ci0gZXhwYW5kOgotICAgIC8qIHN0ZXAgMjogZmlsbCB0aGUgYnVmZmVyICovCi0gICAgLyogU2luY2Ugd2UndmUgYW5hbHl6ZWQgaG93IG11Y2ggc3BhY2Ugd2UgbmVlZCBmb3IgdGhlIHdvcnN0IGNhc2UsCi0gICAgICAgdXNlIHNwcmludGYgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgc2xvd2VyIFB5T1Nfc25wcmludGYuICovCi0gICAgc3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuKTsKLSAgICBpZiAoIXN0cmluZykKKyAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc3RybGVuKGZvcm1hdCkpOworICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoc3RyaW5nKTsKKyNkZWZpbmUgV1JJVEVfQllURVMoc3RyKSBcCisgICAgZG8geyBcCisgICAgICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHMsIChzdHIpLCBzdHJsZW4oc3RyKSk7IFwKKyAgICAgICAgaWYgKHMgPT0gTlVMTCkgXAorICAgICAgICAgICAgZ290byBlcnJvcjsgXAorICAgIH0gd2hpbGUgKDApCiAKICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKLSAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGYrKzsKKyAgICAgICAgaWYgKCpmICE9ICclJykgeworICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBwID0gZisrOworCisgICAgICAgIC8qIGlnbm9yZSB0aGUgd2lkdGggKGV4OiAxMCBpbiAiJTEwcyIpICovCisgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKKyAgICAgICAgICAgIGYrKzsKKworICAgICAgICAvKiBwYXJzZSB0aGUgcHJlY2lzaW9uIChleDogMTAgaW4gIiUuMTBzIikgKi8KKyAgICAgICAgcHJlYyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAnLicpIHsKKyAgICAgICAgICAgIGYrKzsKKyAgICAgICAgICAgIGZvciAoOyBQeV9JU0RJR0lUKCpmKTsgZisrKSB7CisgICAgICAgICAgICAgICAgcHJlYyA9IChwcmVjICogMTApICsgKCpmIC0gJzAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlICgqZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQorICAgICAgICAgICAgZisrOworCisgICAgICAgIC8qIGhhbmRsZSB0aGUgbG9uZyBmbGFnICgnbCcpLCBidXQgb25seSBmb3IgJWxkIGFuZCAlbHUuCisgICAgICAgICAgIG90aGVycyBjYW4gYmUgYWRkZWQgd2hlbiBuZWNlc3NhcnkuICovCisgICAgICAgIGxvbmdmbGFnID0gMDsKKyAgICAgICAgaWYgKCpmID09ICdsJyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7CisgICAgICAgICAgICBsb25nZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKworICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnICgneicpLiAqLworICAgICAgICBzaXplX3RmbGFnID0gMDsKKyAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7CisgICAgICAgICAgICBzaXplX3RmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHN1YnRyYWN0IGJ5dGVzIHByZWFsbG9jYXRlZCBmb3IgdGhlIGZvcm1hdCBzdHJpbmcKKyAgICAgICAgICAgKGV4OiAyIGZvciAiJXMiKSAqLworICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGYgLSBwICsgMSk7CisKKyAgICAgICAgc3dpdGNoICgqZikgeworICAgICAgICBjYXNlICdjJzoKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcodmFyZ3MsIGludCk7CisgICAgICAgICAgICBpZiAoYyA8IDAgfHwgYyA+IDI1NSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlCeXRlc19Gcm9tRm9ybWF0VigpOiAlYyBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0cyBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAyNTVdIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOworICAgICAgICAgICAgKnMrKyA9ICh1bnNpZ25lZCBjaGFyKWM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxkIiwgdmFfYXJnKHZhcmdzLCBsb25nKSk7CisgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgUHlfc3NpemVfdCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWQiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWx1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7CisgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIldSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVpIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXgiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3MnOgorICAgICAgICB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICBpbnQgbG9uZ2ZsYWcgPSAwOwotICAgICAgICAgICAgaW50IHNpemVfdGZsYWcgPSAwOwotICAgICAgICAgICAgLyogcGFyc2UgdGhlIHdpZHRoLnByZWNpc2lvbiBwYXJ0ICh3ZSdyZSBvbmx5Ci0gICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIHRoZSBwcmVjaXNpb24gdmFsdWUsIGlmIGFueSkgKi8KLSAgICAgICAgICAgIG4gPSAwOwotICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQotICAgICAgICAgICAgICAgIG4gPSAobioxMCkgKyAqZisrIC0gJzAnOwotICAgICAgICAgICAgaWYgKCpmID09ICcuJykgewotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgICAgICBuID0gMDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCi0gICAgICAgICAgICAgICAgICAgIG4gPSAobioxMCkgKyAqZisrIC0gJzAnOworCisgICAgICAgICAgICBwID0gdmFfYXJnKHZhcmdzLCBjb25zdCBjaGFyKik7CisgICAgICAgICAgICBpID0gc3RybGVuKHApOworICAgICAgICAgICAgaWYgKHByZWMgPiAwICYmIGkgPiBwcmVjKQorICAgICAgICAgICAgICAgIGkgPSBwcmVjOworICAgICAgICAgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcywgcCwgaSk7CisgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCisgICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdYJykKKyAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7CisgICAgICAgICAgICBlbHNlIGlmIChidWZmZXJbMV0gIT0gJ3gnKSB7CisgICAgICAgICAgICAgICAgbWVtbW92ZShidWZmZXIrMiwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSsxKTsKKyAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUgKCpmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCi0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgLyogaGFuZGxlIHRoZSBsb25nIGZsYWcsIGJ1dCBvbmx5IGZvciAlbGQgYW5kICVsdS4KLSAgICAgICAgICAgICAgIG90aGVycyBjYW4gYmUgYWRkZWQgd2hlbiBuZWNlc3NhcnkuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ2wnICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICBsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgIHNpemVfdGZsYWcgPSAxOwotICAgICAgICAgICAgICAgICsrZjsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOworICAgICAgICAgICAgKnMrKyA9ICclJzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoKmYgPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIGZpeCBtaW5fc2l6ZSBpZiB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGZvcm1hdCBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcodmFyZ3MsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogYyBoYXMgYmVlbiBjaGVja2VkIGZvciBvdmVyZmxvdyBpbiB0aGUgZmlyc3Qgc3RlcCAqLwotICAgICAgICAgICAgICAgICpzKysgPSAodW5zaWduZWQgY2hhciljOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnZCc6Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlbGQiLCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgUHlfc3NpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWQiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlbHUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVpIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiV4IiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHAgPSB2YV9hcmcodmFyZ3MsIGNoYXIqKTsKLSAgICAgICAgICAgICAgICBpID0gc3RybGVuKHApOwotICAgICAgICAgICAgICAgIGlmIChuID4gMCAmJiBpID4gbikKLSAgICAgICAgICAgICAgICAgICAgaSA9IG47Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHMsIHAsIGkpOwotICAgICAgICAgICAgICAgIHMgKz0gaTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOwotICAgICAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCi0gICAgICAgICAgICAgICAgaWYgKHNbMV0gPT0gJ1gnKQotICAgICAgICAgICAgICAgICAgICBzWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMV0gIT0gJ3gnKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbW1vdmUocysyLCBzLCBzdHJsZW4ocykrMSk7Ci0gICAgICAgICAgICAgICAgICAgIHNbMF0gPSAnMCc7Ci0gICAgICAgICAgICAgICAgICAgIHNbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgKnMrKyA9ICclJzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgc3RyY3B5KHMsIHApOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGdvdG8gZW5kOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgICAgIC8qIGludmFsaWQgZm9ybWF0IHN0cmluZzogY29weSB1bmZvcm1hdHRlZCBzdHJpbmcgYW5kIGV4aXQgKi8KKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKHApOworICAgICAgICAgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzKTsKKyAgICAgICAgfQogICAgIH0KIAotIGVuZDoKLSAgICBfUHlCeXRlc19SZXNpemUoJnN0cmluZywgcyAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHN0cmluZykpOwotICAgIHJldHVybiBzdHJpbmc7CisjdW5kZWYgV1JJVEVfQllURVMKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcyk7CisKKyBlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeU9iamVjdCAqCkBAIC00MDksMTIgKzQwNywxNCBAQAogCiAvKiBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZSB0byBhIFB5Qnl0ZXMgb2JqZWN0LCBvciBOVUxMIG9uIGZhaWx1cmUuICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCitzdGF0aWMgY2hhcioKK2Zvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSwKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9yZXN1bHQsIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKIHsKICAgICBjaGFyICpwOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgZG91YmxlIHg7CisgICAgc2l6ZV90IGxlbjsKIAogICAgIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwogICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtNDMxLDkgKzQzMSwyMiBAQAogCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBzdHJsZW4ocCkpOworCisgICAgbGVuID0gc3RybGVuKHApOworICAgIGlmICh3cml0ZXIgIT0gTlVMTCkgeworICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBsZW4pOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbWVtY3B5KHN0ciwgcCwgbGVuKTsKKyAgICAgICAgUHlNZW1fRnJlZShwKTsKKyAgICAgICAgc3RyICs9IGxlbjsKKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHAsIGxlbik7CiAgICAgUHlNZW1fRnJlZShwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgICpwX3Jlc3VsdCA9IHJlc3VsdDsKKyAgICByZXR1cm4gc3RyOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDczLDExICs0ODYsMTEgQEAKIHN0YXRpYyBpbnQKIGJ5dGVfY29udmVydGVyKFB5T2JqZWN0ICphcmcsIGNoYXIgKnApCiB7Ci0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX1NpemUoYXJnKSA9PSAxKSB7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSAmJiBQeUJ5dGVzX0dFVF9TSVpFKGFyZykgPT0gMSkgewogICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZylbMF07CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X1NpemUoYXJnKSA9PSAxKSB7CisgICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9HRVRfU0laRShhcmcpID09IDEpIHsKICAgICAgICAgKnAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtNTU3LDM2ICs1NzAsMzYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pCi0KLSAgIEZPUk1BVEJVRkxFTiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgaW4gd2hpY2ggdGhlIGludHMgJgotICAgY2hhcnMgYXJlIGZvcm1hdHRlZC4gWFhYIFRoaXMgaXMgYSBtYWdpYyBudW1iZXIuIEVhY2ggZm9ybWF0dGluZwotICAgcm91dGluZSBkb2VzIGJvdW5kcyBjaGVja2luZyB0byBlbnN1cmUgbm8gb3ZlcmZsb3csIGJ1dCBhIGJldHRlcgotICAgc29sdXRpb24gbWF5IGJlIHRvIG1hbGxvYyBhIGJ1ZmZlciBvZiBhcHByb3ByaWF0ZSBzaXplIGZvciBlYWNoCi0gICBmb3JtYXQuIEZvciBub3csIHRoZSBjdXJyZW50IHNvbHV0aW9uIGlzIHN1ZmZpY2llbnQuCi0qLwotI2RlZmluZSBGT1JNQVRCVUZMRU4gKHNpemVfdCkxMjAKKy8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKSAqLwogCiBQeU9iamVjdCAqCi1fUHlCeXRlc19Gb3JtYXQoUHlPYmplY3QgKmZvcm1hdCwgUHlPYmplY3QgKmFyZ3MpCitfUHlCeXRlc19Gb3JtYXRFeChjb25zdCBjaGFyICpmb3JtYXQsIFB5X3NzaXplX3QgZm9ybWF0X2xlbiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBpbnQgdXNlX2J5dGVhcnJheSkKIHsKLSAgICBjaGFyICpmbXQsICpyZXM7CisgICAgY29uc3QgY2hhciAqZm10OworICAgIGNoYXIgKnJlczsKICAgICBQeV9zc2l6ZV90IGFyZ2xlbiwgYXJnaWR4OwotICAgIFB5X3NzaXplX3QgcmVzbGVuLCByZXNjbnQsIGZtdGNudDsKKyAgICBQeV9zc2l6ZV90IGZtdGNudDsKICAgICBpbnQgYXJnc19vd25lZCA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7Ci0gICAgaWYgKGZvcm1hdCA9PSBOVUxMIHx8ICFQeUJ5dGVzX0NoZWNrKGZvcm1hdCkgfHwgYXJncyA9PSBOVUxMKSB7CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOworCisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGZvcm1hdCk7Ci0gICAgZm10Y250ID0gUHlCeXRlc19HRVRfU0laRShmb3JtYXQpOwotICAgIHJlc2xlbiA9IHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgcmVzbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgZm10ID0gZm9ybWF0OworICAgIGZtdGNudCA9IGZvcm1hdF9sZW47CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKKworICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGZtdGNudCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgaWYgKCF1c2VfYnl0ZWFycmF5KQorICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKwogICAgIGlmIChQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIGFyZ2xlbiA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAgICAgICAgIGFyZ2lkeCA9IDA7CkBAIC02MDAsMTggKzYxMywyMyBAQAogICAgICAgICAhUHlCeXRlQXJyYXlfQ2hlY2soYXJncykpIHsKICAgICAgICAgICAgIGRpY3QgPSBhcmdzOwogICAgIH0KKwogICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CiAgICAgICAgIGlmICgqZm10ICE9ICclJykgewotICAgICAgICAgICAgaWYgKC0tcmVzY250IDwgMCkgewotICAgICAgICAgICAgICAgIHJlc2NudCA9IGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICArIHJlc2xlbiAtIHJlc2NudDsKLSAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpyZXMrKyA9ICpmbXQrKzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgY2hhciAqcG9zOworCisgICAgICAgICAgICBwb3MgPSBzdHJjaHIoZm10ICsgMSwgJyUnKTsKKyAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBsZW4gPSBwb3MgLSBmbXQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGVuID0gZm9ybWF0X2xlbiAtIChmbXQgLSBmb3JtYXQpOworICAgICAgICAgICAgYXNzZXJ0KGxlbiAhPSAwKTsKKworICAgICAgICAgICAgbWVtY3B5KHJlcywgZm10LCBsZW4pOworICAgICAgICAgICAgcmVzICs9IGxlbjsKKyAgICAgICAgICAgIGZtdCArPSBsZW47CisgICAgICAgICAgICBmbXRjbnQgLT0gKGxlbiAtIDEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogR290IGEgZm9ybWF0IHNwZWNpZmllciAqLwpAQCAtNjI2LDEwICs2NDQsMTQgQEAKICAgICAgICAgICAgIGludCBzaWduOwogICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgICAgICAgICAgY2hhciBvbmVjaGFyOyAvKiBGb3IgYnl0ZV9jb252ZXJ0ZXIoKSAqLworICAgICAgICAgICAgUHlfc3NpemVfdCBhbGxvYzsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgY2hhciAqYmVmb3JlOworI2VuZGlmCiAKICAgICAgICAgICAgIGZtdCsrOwogICAgICAgICAgICAgaWYgKCpmbXQgPT0gJygnKSB7Ci0gICAgICAgICAgICAgICAgY2hhciAqa2V5c3RhcnQ7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2V5c3RhcnQ7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlsZW47CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgICAgICBpbnQgcGNvdW50ID0gMTsKQEAgLTY3Myw2ICs2OTUsOCBAQAogICAgICAgICAgICAgICAgIGFyZ2xlbiA9IC0xOwogICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSBmbGFncy4gRXhhbXBsZTogIiUraSIgPT4gZmxhZ3M9Rl9TSUdOLiAqLwogICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGMgPSAqZm10KyspIHsKICAgICAgICAgICAgICAgICBjYXNlICctJzogZmxhZ3MgfD0gRl9MSlVTVDsgY29udGludWU7CkBAIC02ODMsNiArNzA3LDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIHdpZHRoLiBFeGFtcGxlOiAiJTEwcyIgPT4gd2lkdGg9MTAgKi8KICAgICAgICAgICAgIGlmIChjID09ICcqJykgewogICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKQEAgLTcxNyw2ICs3NDMsOCBAQAogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoKjEwICsgKGMgLSAnMCcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2UgcHJlY2lzaW9uLiBFeGFtcGxlOiAiJS4zZiIgPT4gcHJlYz0zICovCiAgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKICAgICAgICAgICAgICAgICBwcmVjID0gMDsKICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKQEAgLTc3MSwxMyArNzk5LDE5IEBACiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApIHsKKyAgICAgICAgICAgICAgICAvKiBsYXN0IHdyaXRlcjogZGlzYWJsZSB3cml0ZXIgb3ZlcmFsbG9jYXRpb24gKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMDsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgc2lnbiA9IDA7CiAgICAgICAgICAgICBmaWxsID0gJyAnOwogICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBwYnVmID0gIiUiOwotICAgICAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgKnJlcysrID0gJyUnOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgICAgICAvLyAlciBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYQogICAgICAgICAgICAgY2FzZSAnYSc6CkBAIC03OTAsNiArODI0LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCiAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgIC8vICVzIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICViCiAgICAgICAgICAgICBjYXNlICdiJzoKQEAgLTc5OSwxMiArODM0LDQ5IEBACiAgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQogICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdpJzoKICAgICAgICAgICAgIGNhc2UgJ2QnOgogICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpCisgICAgICAgICAgICAgICAgICAgICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgYyAhPSAnWCcpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaW50IGFsdGVybmF0ZSA9IGZsYWdzICYgRl9BTFQ7CisgICAgICAgICAgICAgICAgICAgIGludCBiYXNlOworCisgICAgICAgICAgICAgICAgICAgIHN3aXRjaChjKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICIndHlwZScgbm90IGluIFtkaXVveFhdIik7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDEwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMjsgLyogc2l6ZSBwcmVhbGxvY2F0ZWQgZm9yICIlZCIgKi8KKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcigmd3JpdGVyLCByZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwgYmFzZSwgYWx0ZXJuYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGxvbmcodiwgZmxhZ3MsIHByZWMsIGMpOwogICAgICAgICAgICAgICAgIGlmICghdGVtcCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTgxNSwxNCArODg3LDI1IEBACiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICBjYXNlICdGJzoKICAgICAgICAgICAgIGNhc2UgJ2cnOgogICAgICAgICAgICAgY2FzZSAnRyc6Ci0gICAgICAgICAgICAgICAgdGVtcCA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjKTsKLSAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAyOyAvKiBzaXplIHByZWFsbG9jYXRlZCBmb3IgIiVmIiAqLworICAgICAgICAgICAgICAgICAgICByZXMgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgTlVMTCwgJndyaXRlciwgcmVzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYywgJnRlbXAsIE5VTEwsIHJlcykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRlbXApOwogICAgICAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodGVtcCk7CkBAIC04MzAsMjEgKzkxMywyOCBAQAogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICAgICAgcGJ1ZiA9ICZvbmVjaGFyOwogICAgICAgICAgICAgICAgIGxlbiA9IGJ5dGVfY29udmVydGVyKHYsICZvbmVjaGFyKTsKICAgICAgICAgICAgICAgICBpZiAoIWxlbikKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IG9uZWNoYXI7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBmb3JtYXQgY2hhcmFjdGVyICclYycgKDB4JXgpICIKICAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAogICAgICAgICAgICAgICAgICAgYywgYywKLSAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKGZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KShmbXQgLSAxIC0gZm9ybWF0KSk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKICAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgewogICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKQEAgLTg1OSwyOSArOTQ5LDMxIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPCBsZW4pCiAgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0gICAgICAgICAgICBpZiAocmVzY250IC0gKHNpZ24gIT0gMCkgPCB3aWR0aCkgewotICAgICAgICAgICAgICAgIHJlc2xlbiAtPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gd2lkdGggKyBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAocmVzbGVuIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSkgewotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KQotICAgICAgICAgICAgICAgICAgICArIHJlc2xlbiAtIHJlc2NudDsKKworICAgICAgICAgICAgYWxsb2MgPSB3aWR0aDsKKyAgICAgICAgICAgIGlmIChzaWduICE9IDAgJiYgbGVuID09IHdpZHRoKQorICAgICAgICAgICAgICAgIGFsbG9jKys7CisgICAgICAgICAgICAvKiAyOiBzaXplIHByZWFsbG9jYXRlZCBmb3IgJXMgKi8KKyAgICAgICAgICAgIGlmIChhbGxvYyA+IDIpIHsKKyAgICAgICAgICAgICAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHJlcywgYWxsb2MgLSAyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIGJlZm9yZSA9IHJlczsKKyNlbmRpZgorCisgICAgICAgICAgICAvKiBXcml0ZSB0aGUgc2lnbiBpZiBuZWVkZWQgKi8KICAgICAgICAgICAgIGlmIChzaWduKSB7CiAgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKQogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwotICAgICAgICAgICAgICAgIHJlc2NudC0tOwogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgd2lkdGgtLTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogV3JpdGUgdGhlIG51bWVyaWMgcHJlZml4IGZvciAieCIsICJYIiBhbmQgIm8iIGZvcm1hdHMKKyAgICAgICAgICAgICAgIGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkLgorICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdyaXRlICIweCIgZm9yIHRoZSAiJSN4IiBmb3JtYXQuICovCiAgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICd4JyB8fCBjID09ICdYJykpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOwogICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOwpAQCAtODg5LDE4ICs5ODEsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzY250IC09IDI7CiAgICAgICAgICAgICAgICAgd2lkdGggLT0gMjsKICAgICAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQogICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDA7CiAgICAgICAgICAgICAgICAgbGVuIC09IDI7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhZCBsZWZ0IHdpdGggdGhlIGZpbGwgY2hhcmFjdGVyIGlmIG5lZWRlZCAqLwogICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuICYmICEoZmxhZ3MgJiBGX0xKVVNUKSkgewotICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IGZpbGw7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS13aWR0aCA+IGxlbik7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgZmlsbCwgd2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHJlcyArPSAod2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiBwYWRkaW5nIHdpdGggc3BhY2VzOiB3cml0ZSBzaWduIGlmIG5lZWRlZCBhbmQvb3IgbnVtZXJpYworICAgICAgICAgICAgICAgcHJlZml4IGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkICovCiAgICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBpZiAoc2lnbikKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKQEAgLTkxMiwxMyArMTAwNywxNyBAQAogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXMsIHBidWYsIGxlbik7CisKKyAgICAgICAgICAgIC8qIENvcHkgYnl0ZXMgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXMsIHBidWYsIGxlbik7CiAgICAgICAgICAgICByZXMgKz0gbGVuOwotICAgICAgICAgICAgcmVzY250IC09IGxlbjsKLSAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgewotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKworICAgICAgICAgICAgLyogUGFkIHJpZ2h0IHdpdGggdGhlIGZpbGwgY2hhcmFjdGVyIGlmIG5lZWRlZCAqLworICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgJyAnLCB3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgcmVzICs9ICh3aWR0aCAtIGxlbik7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKQEAgLTkyNiwyMiArMTAyNSwzMSBAQAogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworCisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgd2UgY29tcHV0ZWQgdGhlIGV4YWN0IHNpemUgZm9yIHRoaXMgd3JpdGUgKi8KKyAgICAgICAgICAgIGFzc2VydCgocmVzIC0gYmVmb3JlKSA9PSBhbGxvYyk7CisjZW5kaWYKICAgICAgICAgfSAvKiAnJScgKi8KKworICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IGZtdGNudCA8IDAgfHwgdXNlX2J5dGVhcnJheSk7CiAgICAgfSAvKiB1bnRpbCBlbmQgKi8KKwogICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHJlcyk7CiAKICBlcnJvcjoKLSAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CkBAIC05NjEsNjEgKzEwNjksODggQEAKICAgIHRoZSBzdHJpbmcgaXMgVVRGLTggZW5jb2RlZCBhbmQgc2hvdWxkIGJlIHJlLWVuY29kZWQgaW4gdGhlCiAgICBzcGVjaWZpZWQgZW5jb2RpbmcuICAqLwogCi1QeU9iamVjdCAqUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKK3N0YXRpYyBjaGFyICoKK19QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZShjb25zdCBjaGFyICoqcywgY29uc3QgY2hhciAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnApCit7CisgICAgUHlPYmplY3QgKnUsICp3OworICAgIGNvbnN0IGNoYXIqIHQ7CisKKyAgICB0ID0gKnM7CisgICAgLyogRGVjb2RlIG5vbi1BU0NJSSBieXRlcyBhcyBVVEYtOC4gKi8KKyAgICB3aGlsZSAodCA8IGVuZCAmJiAoKnQgJiAweDgwKSkKKyAgICAgICAgdCsrOworICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCgqcywgdCAtICpzLCBlcnJvcnMpOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUmVjb2RlIHRoZW0gaW4gdGFyZ2V0IGVuY29kaW5nLiAqLworICAgIHcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIHJlY29kZV9lbmNvZGluZywgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodSk7CisgICAgaWYgICh3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHcpKTsKKworICAgIC8qIEFwcGVuZCBieXRlcyB0byBvdXRwdXQgYnVmZmVyLiAqLworICAgIHdyaXRlci0+bWluX3NpemUtLTsgICAvKiBzdWJ0cmFjdCAxIHByZWFsbG9jYXRlZCBieXRlICovCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMod3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUodykpOworICAgIFB5X0RFQ1JFRih3KTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICpzID0gdDsKKyAgICByZXR1cm4gcDsKK30KKworUHlPYmplY3QgKl9QeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZmlyc3RfaW52YWxpZF9lc2NhcGUpCiB7CiAgICAgaW50IGM7Ci0gICAgY2hhciAqcCwgKmJ1ZjsKKyAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBQeV9zc2l6ZV90IG5ld2xlbiA9IHJlY29kZV9lbmNvZGluZyA/IDQqbGVuOmxlbjsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIG5ld2xlbik7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodik7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisKKyAgICAqZmlyc3RfaW52YWxpZF9lc2NhcGUgPSBOVUxMOworCiAgICAgZW5kID0gcyArIGxlbjsKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewogICAgICAgICAgIG5vbl9lc2M6Ci0gICAgICAgICAgICBpZiAocmVjb2RlX2VuY29kaW5nICYmICgqcyAmIDB4ODApKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnUsICp3OwotICAgICAgICAgICAgICAgIGNoYXIgKnI7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciogdDsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJuOwotICAgICAgICAgICAgICAgIHQgPSBzOwotICAgICAgICAgICAgICAgIC8qIERlY29kZSBub24tQVNDSUkgYnl0ZXMgYXMgVVRGLTguICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKHQgPCBlbmQgJiYgKCp0ICYgMHg4MCkpIHQrKzsKLSAgICAgICAgICAgICAgICB1ID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgdCAtIHMsIGVycm9ycyk7Ci0gICAgICAgICAgICAgICAgaWYoIXUpIGdvdG8gZmFpbGVkOwotCi0gICAgICAgICAgICAgICAgLyogUmVjb2RlIHRoZW0gaW4gdGFyZ2V0IGVuY29kaW5nLiAqLwotICAgICAgICAgICAgICAgIHcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICB1LCByZWNvZGVfZW5jb2RpbmcsIGVycm9ycyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgICAgIGlmICghdykgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotCi0gICAgICAgICAgICAgICAgLyogQXBwZW5kIGJ5dGVzIHRvIG91dHB1dCBidWZmZXIuICovCi0gICAgICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sodykpOwotICAgICAgICAgICAgICAgIHIgPSBQeUJ5dGVzX0FTX1NUUklORyh3KTsKLSAgICAgICAgICAgICAgICBybiA9IFB5Qnl0ZXNfR0VUX1NJWkUodyk7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHIsIHJuKTsKLSAgICAgICAgICAgICAgICBwICs9IHJuOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKLSAgICAgICAgICAgICAgICBzID0gdDsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIShyZWNvZGVfZW5jb2RpbmcgJiYgKCpzICYgMHg4MCkpKSB7CiAgICAgICAgICAgICAgICAgKnArKyA9ICpzKys7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBub24tQVNDSUkgY2hhcmFjdGVyIGFuZCBuZWVkIHRvIHJlY29kZSAqLworICAgICAgICAgICAgICAgIHAgPSBfUHlCeXRlc19EZWNvZGVFc2NhcGVSZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlciwgcCk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorCiAgICAgICAgIHMrKzsKLSAgICAgICAgaWYgKHM9PWVuZCkgeworICAgICAgICBpZiAocyA9PSBlbmQpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFpbGluZyBcXCBpbiBzdHJpbmciKTsKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICB9CisKICAgICAgICAgc3dpdGNoICgqcysrKSB7CiAgICAgICAgIC8qIFhYWCBUaGlzIGFzc3VtZXMgQVNDSUkhICovCiAgICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7CkBAIC0xMDQwLDI4ICsxMTc1LDE4IEBACiAgICAgICAgICAgICAqcCsrID0gYzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGlmIChzKzEgPCBlbmQgJiYgUHlfSVNYRElHSVQoc1swXSkgJiYgUHlfSVNYRElHSVQoc1sxXSkpIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeCA9IDA7Ci0gICAgICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgIHggPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICAgICAgICAgIHggPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB4ID0gMTAgKyBjIC0gJ0EnOwotICAgICAgICAgICAgICAgIHggPSB4IDw8IDQ7Ci0gICAgICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgIHggKz0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChQeV9JU0xPV0VSKGMpKQotICAgICAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwotICAgICAgICAgICAgICAgICpwKysgPSB4OwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHMrMSA8IGVuZCkgeworICAgICAgICAgICAgICAgIGludCBkaWdpdDEsIGRpZ2l0MjsKKyAgICAgICAgICAgICAgICBkaWdpdDEgPSBfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soc1swXSldOworICAgICAgICAgICAgICAgIGRpZ2l0MiA9IF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSyhzWzFdKV07CisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0MSA8IDE2ICYmIGRpZ2l0MiA8IDE2KSB7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcikoKGRpZ2l0MSA8PCA0KSArIGRpZ2l0Mik7CisgICAgICAgICAgICAgICAgICAgIHMgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogaW52YWxpZCBoZXhhZGVjaW1hbCBkaWdpdHMgKi8KKwogICAgICAgICAgICAgaWYgKCFlcnJvcnMgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgXFx4IGVzY2FwZSBhdCBwb3NpdGlvbiAlZCIsCkBAIC0xMDgzLDIxICsxMjA4LDQ5IEBACiAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiBQeV9JU1hESUdJVChzWzBdKSkKICAgICAgICAgICAgICAgICBzKys7IC8qIGFuZCBhIGhleGRpZ2l0ICovCiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmZpcnN0X2ludmFsaWRfZXNjYXBlID0gcy0xOyAvKiBCYWNrIHVwIG9uZSBjaGFyLCBzaW5jZSB3ZSd2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBpbmNyZW1lbnRlZCBzLiAqLworICAgICAgICAgICAgfQogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICBzLS07CiAgICAgICAgICAgICBnb3RvIG5vbl9lc2M7IC8qIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdW5lc2NhcGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5dGVzIG1heSBmb2xsb3cuICovCiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAtYnVmIDwgbmV3bGVuKQotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnYsIHAgLSBidWYpOwotICAgIHJldHVybiB2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKKwogICBmYWlsZWQ6Ci0gICAgUHlfREVDUkVGKHYpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICpQeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZykKK3sKKyAgICBjb25zdCBjaGFyKiBmaXJzdF9pbnZhbGlkX2VzY2FwZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlKHMsIGxlbiwgZXJyb3JzLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0X2ludmFsaWRfZXNjYXBlKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChmaXJzdF9pbnZhbGlkX2VzY2FwZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlICdcXCVjJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpmaXJzdF9pbnZhbGlkX2VzY2FwZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CisKK30KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBvYmplY3QgYXBpICovCiAKQEAgLTEzNDksMTIgKzE1MDIsMTIgQEAKICAgICB9CiAgICAgaSA9IDA7CiAgICAgaWYgKGkgPCBzaXplKSB7Ci0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CiAgICAgICAgIGkgPSBQeV9TSVpFKGEpOwogICAgIH0KICAgICB3aGlsZSAoaSA8IHNpemUpIHsKICAgICAgICAgaiA9IChpIDw9IHNpemUtaSkgID8gIGkgIDogIHNpemUtaTsKLSAgICAgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsK2ksIG9wLT5vYl9zdmFsLCBqKTsKKyAgICAgICAgbWVtY3B5KG9wLT5vYl9zdmFsK2ksIG9wLT5vYl9zdmFsLCBqKTsKICAgICAgICAgaSArPSBqOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwpAQCAtMTM2MywyNCArMTUxNiw3IEBACiBzdGF0aWMgaW50CiBieXRlc19jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICBpZiAoaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X2J1ZmZlciB2YXJnOwotICAgICAgICBQeV9zc2l6ZV90IHBvczsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHBvcyA9IHN0cmluZ2xpYl9maW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICAgICAgcmV0dXJuIHBvcyA+PSAwOwotICAgIH0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1lbWNocihQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKGludCkgaXZhbCwgUHlfU0laRShzZWxmKSkgIT0gTlVMTDsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvbnRhaW5zKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM5Myw3ICsxNTI5LDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKCh1bnNpZ25lZCBjaGFyKWEtPm9iX3N2YWxbaV0pOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBieXRlc19jb21wYXJlX2VxKFB5Qnl0ZXNPYmplY3QgKmEsIFB5Qnl0ZXNPYmplY3QgKmIpCiB7CiAgICAgaW50IGNtcDsKQEAgLTE2MjcsOCArMTc2Myw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YmRlNDRkYWNiMzZlZjJlIGlucHV0PThiODA5YjM5MDc0YWJiZmFdKi8KK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjEyNmI1ODQ0YzFkOGVmIGlucHV0PThiODA5YjM5MDc0YWJiZmFdKi8KIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwpAQCAtMTY1Miw3ICsxNzg4LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIHNlcDogUHlfYnVmZmVyCiAgICAgLwogCkBAIC0xNjY4LDcgKzE4MDMsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD1iYzg1NWRjNjNjYTk0OWRlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD02MWNjYTk1NTE5NDA2MDk5XSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9wYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCkBAIC0xNjgwLDcgKzE4MTUsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIHNlcDogUHlfYnVmZmVyCiAgICAgLwogCkBAIC0xNjk2LDcgKzE4MzAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MWIxMTRjYmIwMjhlNTAgaW5wdXQ9NjU4OGZmZjI2MmE5MTcwZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MWIxMTRjYmIwMjhlNTAgaW5wdXQ9NjdmNjg5ZTYzYTYyZDQ3OF0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfcnBhcnRpdGlvbigKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwKQEAgLTE3MTQsOCArMTg0OCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2NTcwYjk3NzkxMWQ4OCBpbnB1dD0wZjg2YzlmMjhmN2Q3YjdiXSovCitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNjk4ZDllYTAxZTFjOGYgaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLwogewogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CkBAIC0xNzUzLDggKzE4ODcsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfam9pbihQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzRhZmYxNDc2NGZmOTk3IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KK2J5dGVzX2pvaW4oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2J5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEwNDZmMzc5ZjYyNmY2ZjggaW5wdXQ9N2ZlMzc3Yjk1YmQ1NDlkMl0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfYnl0ZXNfam9pbigoUHlPYmplY3QqKXNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzKTsKIH0KQEAgLTE3NjcsMTU4ICsxOTAxLDMwIEBACiAgICAgcmV0dXJuIGJ5dGVzX2pvaW4oKFB5Qnl0ZXNPYmplY3QqKXNlcCwgeCk7CiB9CiAKLS8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCi0jZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCi0gICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotYnl0ZXNfZmluZF9pbnRlcm5hbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKLXsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9idWZmZXIgc3ViYnVmOwotICAgIGNvbnN0IGNoYXIgKnN1YjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgc3ViX2xlbjsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgaWYgKHN1Ym9iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQotICAgICAgICByZXMgPSAtMTsKLSAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKLSNpZm5kZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAmJiBkaXIgPiAwCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOwotICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCi0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgIG5lZWRsZSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgaWYgKHJlcyA+PSAwKQotICAgICAgICAgICAgcmVzICs9IHN0YXJ0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGRpciA+IDApCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgfQotCi0gICAgaWYgKHN1Ym9iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKGZpbmRfX2RvY19fLAotIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfZmluZChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2ZpbmQoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihpbmRleF9fZG9jX18sCi0iQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfaW5kZXgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0cmluZyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2luZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmZpbmRfX2RvY19fLAotIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnN0cmluZyBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydDplbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yZmluZChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JmaW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmluZGV4X19kb2NfXywKLSJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JpbmRleChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic3RyaW5nIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmluZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCkBAIC0yMDA1LDcgKzIwMTEsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMuc3RyaXAKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBieXRlczogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMjAxNiw3ICsyMDIxLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3N0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzIyOGQzYmQxMDRhMWIgaW5wdXQ9MzdkYWE1ZmFkMTM5NWQ5NV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzIyOGQzYmQxMDRhMWIgaW5wdXQ9OGEzNTQ2NDBlNGUwYjNlZl0qLwogewogICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGJ5dGVzKTsKIH0KQEAgLTIwMjQsNyArMjAyOSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5sc3RyaXAKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBieXRlczogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMjAzNSw3ICsyMDM5LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2xzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yODYwMmU1ODZmNTI0ZTgyIGlucHV0PTg4ODExYjA5ZGZiYzI5ODhdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yODYwMmU1ODZmNTI0ZTgyIGlucHV0PTliYWZmNDM5OGMzZjY4NTddKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgTEVGVFNUUklQLCBieXRlcyk7CiB9CkBAIC0yMDQzLDcgKzIwNDcsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucnN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwNTQsODEgKzIwNTcsMzcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PThmOTNjOWNkMzYxZjAxNDBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PWI3OGFmNDQ1YzcyN2UzMmJdKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYnl0ZXMpOwogfQogCiAKLVB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCi0iQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBzdWIgaW5cblwKLXN0cmluZyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKLWFzIGluIHNsaWNlIG5vdGF0aW9uLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfY291bnQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0KLSAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqY291bnRfb2JqOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmYnl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc3ViX29iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwotCi0gICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOwotCi0gICAgaWYgKHN1Yl9vYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOwotCi0gICAgcmV0dXJuIGNvdW50X29iajsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvdW50KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy50cmFuc2xhdGUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICB0YWJsZTogb2JqZWN0CiAgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCi0gICAgWwotICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKLSAgICBdCiAgICAgLworICAgIGRlbGV0ZSBhcyBkZWxldGVjaGFyczogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCiAKIFJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogCi1BbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGUgYXJlIHJlbW92ZWQuCiBUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjMzZGY4NTBlYjUwYmY4ZCBpbnB1dD1kOGZhNTUxOWQ3Y2M0YmU3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDNiZTM0MzdmMTk1NjIxMSBpbnB1dD0wZWNkZjE1OWY2NTQyMzNjXSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7CiAgICAgUHlfYnVmZmVyIHRhYmxlX3ZpZXcgPSB7TlVMTCwgTlVMTH07CkBAIC0yMTg5LDcgKzIxNDgsNyBAQAogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0YWJsZV92aWV3KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAogICAgIGlmIChkZWxsZW4gPT0gMCAmJiB0YWJsZV9jaGFycyAhPSBOVUxMKSB7CkBAIC0yMjY1LDQ5OCArMjIyNCw2IEBACiAgICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoZnJtLCB0byk7CiB9CiAKLS8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KLQotI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQotCi0vKiBTdHJpbmcgb3BzIG11c3QgcmV0dXJuIGEgc3RyaW5nLiAgKi8KLS8qIElmIHRoZSBvYmplY3QgaXMgc3ViY2xhc3Mgb2Ygc3RyaW5nLCBjcmVhdGUgYSBjb3B5ICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXR1cm5fc2VsZihQeUJ5dGVzT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICB9Ci0gICAgcmV0dXJuIChQeUJ5dGVzT2JqZWN0ICopUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCi0gICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwotfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWNvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIFB5X3NzaXplX3QgY291bnQ9MDsKLSAgICBjb25zdCBjaGFyICpzdGFydD10YXJnZXQ7Ci0gICAgY29uc3QgY2hhciAqZW5kPXRhcmdldCt0YXJnZXRfbGVuOwotCi0gICAgd2hpbGUgKCAoc3RhcnQ9ZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgYykpICE9IE5VTEwgKSB7Ci0gICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGFydCArPSAxOwotICAgIH0KLSAgICByZXR1cm4gY291bnQ7Ci19Ci0KLQotLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLwotCi0vKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2ludGVybGVhdmUoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgaTsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKLSAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLwotICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikKLSAgICAgICAgY291bnQgPSBtYXhjb3VudDsKLSAgICBlbHNlCi0gICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCi0gICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOwotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKLQotICAgIGlmICghIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIC8qIFRPRE86IHNwZWNpYWwgY2FzZSBzaW5nbGUgY2hhcmFjdGVyLCB3aGljaCBkb2Vzbid0IG5lZWQgbWVtY3B5ICovCi0KLSAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIGNvdW50IC09IDE7Ci0KLSAgICBmb3IgKGk9MDsgaTxjb3VudDsgaSsrKSB7Ci0gICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICB9Ci0KLSAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4taSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLwotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KLSAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCi0KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KSB7Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7Ci0gICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKLQotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLQotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT09MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kLCAqbmV4dDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOwotCi0gICAgaWYgKG5leHQgPT0gTlVMTCkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgKG5leHQtc2VsZl9zKTsKLSAgICAqc3RhcnQgPSB0b19jOwotICAgIHN0YXJ0Kys7Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqbmV4dCA9IHRvX2M7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kOwotICAgIGNoYXIgKnNlbGZfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgaWYgKG9mZnNldCA9PSAtMSkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OwotICAgIFB5X01FTUNQWShzdGFydCwgdG9fcywgZnJvbV9sZW4pOwotICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0PT0tMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkoc3RhcnQrb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgICAgIHN0YXJ0ICs9IG9mZnNldCtmcm9tX2xlbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCi0gICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCBieXRlcyBhcmUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpIHsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCBieXRlcyBhcmUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbik7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQrb2Zmc2V0OwotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGlmIChtYXhjb3VudCA8IDApIHsKLSAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgUHlCeXRlc19HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAobWF4Y291bnQgPT0gMCB8fAotICAgICAgICAoZnJvbV9sZW4gPT0gMCAmJiB0b19sZW4gPT0gMCkpIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gMCkgewotICAgICAgICAvKiBpbnNlcnQgdGhlICd0bycgc3RyaW5nIGV2ZXJ5d2hlcmUuICAgKi8KLSAgICAgICAgLyogICAgPj4+ICJQeXRob24iLnJlcGxhY2UoIiIsICIuIikgICAgICovCi0gICAgICAgIC8qICAgICcuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLQotICAgIC8qIEV4Y2VwdCBmb3IgIiIucmVwbGFjZSgiIiwgIkEiKSA9PSAiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCi0gICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgc3RyaW5nIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IHN0cmluZyAqLwotICAgIC8qIFNwZWNpYWwgY2FzZSBzbyB0aGUgcmVtYWluaW5nIGNvZGUgYWx3YXlzIGdldHMgYSBub24tZW1wdHkgc3RyaW5nICovCi0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKHRvX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIHN0cmluZyAqLwotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYm90aCBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7Ci0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgIHRvX3NbMF0sCi0gICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwKLSAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBtb3JlIGdlbmVyaWMgYWxnb3JpdGhtcyAqLwotICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoc2VsZiwgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICB9Ci19Ci0KIAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucmVwbGFjZQpAQCAtMjc3NSwxNTYgKzIyNDIsMjggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKK2J5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCiAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDNkYzlkN2E4M2M1YTFkIGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTRmYTU4OGI2YjljMTA0IGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KIHsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlc09iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CisgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCiAvKiogRW5kIERBTEtFICoqLwogCi0vKiBNYXRjaGVzIHRoZSBlbmQgKGRpcmVjdGlvbiA+PSAwKSBvciBzdGFydCAoZGlyZWN0aW9uIDwgMCkgb2Ygc2VsZgotICogYWdhaW5zdCBzdWJzdHIsIHVzaW5nIHRoZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gUmV0dXJucwotICogLTEgb24gZXJyb3IsIDAgaWYgbm90IGZvdW5kIGFuZCAxIGlmIGZvdW5kLgotICovCi1QeV9MT0NBTChpbnQpCi1fYnl0ZXNfdGFpbG1hdGNoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKLXsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgUHlfc3NpemVfdCBzbGVuOwotICAgIFB5X2J1ZmZlciBzdWJfdmlldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBjb25zdCBjaGFyKiBzdWI7Ci0gICAgY29uc3QgY2hhciogc3RyOwotCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vic3RyKSkgewotICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJzdHIpOwotICAgICAgICBzbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJzdHIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZzdWJfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBzdWIgPSBzdWJfdmlldy5idWY7Ci0gICAgICAgIHNsZW4gPSBzdWJfdmlldy5sZW47Ci0gICAgfQotICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLQotICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7Ci0gICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KLSAgICAgICAgaWYgKHN0YXJ0K3NsZW4gPiBsZW4pCi0gICAgICAgICAgICBnb3RvIG5vdGZvdW5kOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGVuZHN3aXRoICovCi0gICAgICAgIGlmIChlbmQtc3RhcnQgPCBzbGVuIHx8IHN0YXJ0ID4gbGVuKQotICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKLQotICAgICAgICBpZiAoZW5kLXNsZW4gPiBzdGFydCkKLSAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gc2xlbjsKLSAgICB9Ci0gICAgaWYgKGVuZC1zdGFydCA8IHNsZW4pCi0gICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0gICAgaWYgKG1lbWNtcChzdHIrc3RhcnQsIHN1Yiwgc2xlbikgIT0gMCkKLSAgICAgICAgZ290byBub3Rmb3VuZDsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKLSAgICByZXR1cm4gMTsKLQotbm90Zm91bmQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOwotICAgIHJldHVybiAwOwotfQotCi0KLVB5RG9jX1NUUlZBUihzdGFydHN3aXRoX19kb2NfXywKLSJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoInN0YXJ0c3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19zdGFydHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIoZW5kc3dpdGhfX2RvY19fLAotIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZW5kc3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZW5kc3dpdGgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKQEAgLTI5NDQsOSArMjI4Myw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQyMDE2ZmY4ZTBiYjE3NiBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTY0OWE1M2RkZTI3YjMxNCBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgoUHlPYmplY3QqKXNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogfQpAQCAtMjk2NCw4ICsyMzAzLDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTVjMzU5OGY3ODMzY2FkIGlucHV0PTdmNGFhYzY3MTQ0Zjk5NDRdKi8KK2J5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQ4NDE0OWE1ZDg4MGZmYiBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdGxpbmVzKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwKQEAgLTI5NzMsMjIgKzIzMTIsNiBAQAogICAgICAgICApOwogfQogCi1zdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKLXsKLSAgICBpZiAoYyA+PSAxMjgpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKGMpKQotICAgICAgICAgICAgYyA9IFB5X1RPTE9XRVIoYyk7Ci0gICAgICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBieXRlcy5mcm9taGV4CkBAIC0zMDA2LDQ3ICsyMzI5LDg4IEBACiBieXRlc19mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5NzNhY2M2MzY2MWJiMmUgaW5wdXQ9YmY0ZDFjMzYxNjcwYWNkM10qLwogewotICAgIFB5T2JqZWN0ICpuZXdzdHJpbmc7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0Zyb21IZXgoc3RyaW5nLCAwKTsKKyAgICBpZiAodHlwZSAhPSAmUHlCeXRlc19UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIE5VTEwpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QqCitfUHlCeXRlc19Gcm9tSGV4KFB5T2JqZWN0ICpzdHJpbmcsIGludCB1c2VfYnl0ZWFycmF5KQorewogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7Ci0gICAgaW50IHRvcCwgYm90OwotICAgIHZvaWQgKmRhdGE7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBoZXhsZW4sIGludmFsaWRfY2hhcjsKKyAgICB1bnNpZ25lZCBpbnQgdG9wLCBib3Q7CisgICAgUHlfVUNTMSAqc3RyLCAqZW5kOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLnVzZV9ieXRlYXJyYXkgPSB1c2VfYnl0ZWFycmF5OwogCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwogICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CiAKLSAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwotICAgIG5ld3N0cmluZyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwotICAgIGlmICghbmV3c3RyaW5nKQorICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHN0cmluZykpIHsKKyAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgICAgIHVuc2lnbmVkIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgIC8qIHNlYXJjaCBmb3IgdGhlIGZpcnN0IG5vbi1BU0NJSSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGhleGxlbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPj0gMTI4KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGludmFsaWRfY2hhciA9IGk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHN0cmluZykgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgIHN0ciA9IFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CisKKyAgICAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLworICAgIGJ1ZiA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGhleGxlbiAvIDIpOworICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyaW5nKTsKLSAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CisKKyAgICBlbmQgPSBzdHIgKyBoZXhsZW47CisgICAgd2hpbGUgKHN0ciA8IGVuZCkgewogICAgICAgICAvKiBza2lwIG92ZXIgc3BhY2VzIGluIHRoZSBpbnB1dCAqLwotICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQotICAgICAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7Ci0gICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaSk7CisgICAgICAgIGlmICgqc3RyID09ICcgJykgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHN0cisrOworICAgICAgICAgICAgfSB3aGlsZSAoKnN0ciA9PSAnICcpOworICAgICAgICAgICAgaWYgKHN0ciA+PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0b3AgPSBfUHlMb25nX0RpZ2l0VmFsdWVbKnN0cl07CisgICAgICAgIGlmICh0b3AgPj0gMTYpIHsKKyAgICAgICAgICAgIGludmFsaWRfY2hhciA9IHN0ciAtIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZltqKytdID0gKHRvcCA8PCA0KSArIGJvdDsKKyAgICAgICAgc3RyKys7CisKKyAgICAgICAgYm90ID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAoYm90ID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzdHIrKzsKKworICAgICAgICAqYnVmKysgPSAodW5zaWduZWQgY2hhcikoKHRvcCA8PCA0KSArIGJvdCk7CiAgICAgfQotICAgIGlmIChqICE9IGJ5dGVzbGVuICYmIF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3c3RyaW5nLCBqKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmV0dXJuIG5ld3N0cmluZzsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYnVmKTsKIAogICBlcnJvcjoKLSAgICBQeV9YREVDUkVGKG5ld3N0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKKyAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaW52YWxpZF9jaGFyKTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zMDc2LDE3ICsyNDQwLDIwIEBACiAgICAgeyJfX2dldG5ld2FyZ3NfXyIsICAgICAgICAgIChQeUNGdW5jdGlvbilieXRlc19nZXRuZXdhcmdzLCAgTUVUSF9OT0FSR1N9LAogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCi0gICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKLSAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCisgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY2VudGVyX19kb2NfX30sCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY291bnRfX2RvY19ffSwKICAgICBCWVRFU19ERUNPREVfTUVUSE9EREVGCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLAotICAgICBlbmRzd2l0aF9fZG9jX199LAorICAgICBfUHlfZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZmluZCwgTUVUSF9WQVJBUkdTLCBmaW5kX19kb2NfX30sCisgICAgIF9QeV9leHBhbmR0YWJzX19kb2NfX30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2ZpbmQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2ZpbmRfX2RvY19ffSwKICAgICBCWVRFU19GUk9NSEVYX01FVEhPRERFRgogICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAotICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9pbmRleF9fZG9jX199LAogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCiAgICAgeyJpc2FscGhhIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FscGhhLCBNRVRIX05PQVJHUywKQEAgLTMxMDIsMzggKzI0NjksNDAgQEAKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAogICAgIEJZVEVTX0pPSU5fTUVUSE9EREVGCi0gICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKKyAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAogICAgIEJZVEVTX0xTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFU19NQUtFVFJBTlNfTUVUSE9EREVGCiAgICAgQllURVNfUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVTX1JFUExBQ0VfTUVUSE9EREVGCi0gICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19yZmluZCwgTUVUSF9WQVJBUkdTLCByZmluZF9fZG9jX199LAotICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKLSAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAorICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmZpbmQsIE1FVEhfVkFSQVJHUywgX1B5X3JmaW5kX19kb2NfX30sCisgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9yaW5kZXhfX2RvY19ffSwKKyAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfcmp1c3RfX2RvY19ffSwKICAgICBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVTX1JTUExJVF9NRVRIT0RERUYKICAgICBCWVRFU19SU1RSSVBfTUVUSE9EREVGCiAgICAgQllURVNfU1BMSVRfTUVUSE9EREVGCiAgICAgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTLAotICAgICBzdGFydHN3aXRoX19kb2NfX30sCisgICAgIF9QeV9zdGFydHN3aXRoX19kb2NfX30sCiAgICAgQllURVNfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAogICAgIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAotICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCisgICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgX1B5X3pmaWxsX19kb2NfX30sCiAgICAge05VTEwsICAgICBOVUxMfSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCitieXRlc19tb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHYpKQorICAgIGlmICghUHlCeXRlc19DaGVjayhzZWxmKSkgewogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdCh2LCB3KTsKKyAgICB9CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdEV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIDApOwogfQogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVzX2FzX251bWJlciA9IHsKQEAgLTMyMjIsMTcgKzI1OTEsMTUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIElzIGl0IGFuIGludGVnZXI/ICovCi0gICAgc2l6ZSA9IFB5TnVtYmVyX0FzU3NpemVfdCh4LCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKLSAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgIGlmIChQeUluZGV4X0NoZWNrKHgpKSB7CisgICAgICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBlbHNlIGlmIChzaXplIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIG5ldyA9IF9QeUJ5dGVzX0Zyb21TaXplKHNpemUsIDEpOwogICAgICAgICBpZiAobmV3ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyNDIsMTA4ICsyNjA5LDkzIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbU9iamVjdCh4KTsKIH0KIAotUHlPYmplY3QgKgotUHlCeXRlc19Gcm9tT2JqZWN0KFB5T2JqZWN0ICp4KQorc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUJ1ZmZlcihQeU9iamVjdCAqeCkKIHsKLSAgICBQeU9iamVjdCAqbmV3LCAqaXQ7CisgICAgUHlPYmplY3QgKm5ldzsKKyAgICBQeV9idWZmZXIgdmlldzsKKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoeCwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXcubGVuKTsKKyAgICBpZiAoIW5ldykKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbCwKKyAgICAgICAgICAgICAgICAmdmlldywgdmlldy5sZW4sICdDJykgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIG5ldzsKKworZmFpbDoKKyAgICBQeV9YREVDUkVGKG5ldyk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNkZWZpbmUgX1B5Qnl0ZXNfRlJPTV9MSVNUX0JPRFkoeCwgR0VUX0lURU0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeU9iamVjdCAqYnl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjaGFyICpzdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKml0ZW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgUHlfU0laRSh4KSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdHIgPSAoKFB5Qnl0ZXNPYmplY3QgKilieXRlcyktPm9iX3N2YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaXRlbSA9IEdFVF9JVEVNKCh4KSwgaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOyAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gYnl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUxpc3QoUHlPYmplY3QgKngpCit7CisgICAgX1B5Qnl0ZXNfRlJPTV9MSVNUX0JPRFkoeCwgUHlMaXN0X0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbVR1cGxlKFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5VHVwbGVfR0VUX0lURU0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKFB5T2JqZWN0ICppdCwgUHlPYmplY3QgKngpCit7CisgICAgY2hhciAqc3RyOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKLQotICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICByZXR1cm4geDsKLSAgICB9Ci0KLSAgICAvKiBVc2UgdGhlIG1vZGVybiBidWZmZXIgaW50ZXJmYWNlICovCi0gICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHgpKSB7Ci0gICAgICAgIFB5X2J1ZmZlciB2aWV3OwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHgsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7Ci0gICAgICAgIGlmICghbmV3KQotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgICBmYWlsOgotICAgICAgICBQeV9YREVDUkVGKG5ldyk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IHVuaWNvZGUgb2JqZWN0IHRvIGJ5dGVzIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChQeUxpc3RfQ2hlY2tFeGFjdCh4KSkgewotICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOwotICAgICAgICBpZiAobmV3ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoeCk7IGkrKykgewotICAgICAgICAgICAgUHlfc3NpemVfdCB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdCgKLSAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0oeCwgaSksIFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPj0gMjU2KSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWxbaV0gPSAoY2hhcikgdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldzsKLSAgICB9Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh4KSkgewotICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOwotICAgICAgICBpZiAobmV3ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoeCk7IGkrKykgewotICAgICAgICAgICAgUHlfc3NpemVfdCB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdCgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHgsIGkpLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgfQorICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIC8qIEZvciBpdGVyYXRvciB2ZXJzaW9uLCBjcmVhdGUgYSBzdHJpbmcgb2JqZWN0IGFuZCByZXNpemUgYXMgbmVlZGVkICovCiAgICAgc2l6ZSA9IFB5T2JqZWN0X0xlbmd0aEhpbnQoeCwgNjQpOwogICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIEFsbG9jYXRlIGFuIGV4dHJhIGJ5dGUgdG8gcHJldmVudCBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCkgZnJvbQotICAgICAgIHJldHVybmluZyBhIHNoYXJlZCBlbXB0eSBieXRlcyBzdHJpbmcuIFRoaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZQotICAgICAgIHdhbnQgdG8gY2FsbCBfUHlCeXRlc19SZXNpemUoKSB0aGUgcmV0dXJuZWQgb2JqZWN0LCB3aGljaCB3ZSBjYW4KLSAgICAgICBvbmx5IGRvIG9uIGJ5dGVzIG9iamVjdHMgd2l0aCByZWZjb3VudCA9PSAxLiAqLwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHNpemUgPSAxOwotICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc3NlcnQoUHlfUkVGQ05UKG5ldykgPT0gMSk7CiAKLSAgICAvKiBHZXQgdGhlIGl0ZXJhdG9yICovCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHgpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKyAgICBzaXplID0gd3JpdGVyLmFsbG9jYXRlZDsKIAogICAgIC8qIFJ1biB0aGUgaXRlcmF0b3IgdG8gZXhoYXVzdGlvbiAqLwogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CkBAIC0zMzU5LDcgKzI3MTEsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgLyogSW50ZXJwcmV0IGl0IGFzIGFuIGludCAoX19pbmRleF9fKSAqLwotICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMzM3MywyMSArMjcyNSw1OCBAQAogCiAgICAgICAgIC8qIEFwcGVuZCB0aGUgYnl0ZSAqLwogICAgICAgICBpZiAoaSA+PSBzaXplKSB7Ci0gICAgICAgICAgICBzaXplID0gMiAqIHNpemUgKyAxOwotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3LCBzaXplKSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1Jlc2l6ZSgmd3JpdGVyLCBzdHIsIHNpemUrMSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBzaXplID0gd3JpdGVyLmFsbG9jYXRlZDsKICAgICAgICAgfQotICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOworICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7CiAgICAgfQotICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3LCBpKTsKIAotICAgIC8qIENsZWFuIHVwIGFuZCByZXR1cm4gc3VjY2VzcyAqLwotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgcmV0dXJuIG5ldzsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHN0cik7CiAKICAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihpdCk7Ci0gICAgUHlfWERFQ1JFRihuZXcpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3sKKyAgICBQeU9iamVjdCAqaXQsICpyZXN1bHQ7CisKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7CisgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLworICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkKKyAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX0Zyb21CdWZmZXIoeCk7CisKKyAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tTGlzdCh4KTsKKworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tVHVwbGUoeCk7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh4KSkgeworICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoeCk7CisgICAgICAgIGlmIChpdCAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlCeXRlc19Gcm9tSXRlcmF0b3IoaXQsIHgpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgJyUuMjAwcycgb2JqZWN0IHRvIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgeC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTM0MDUsNyArMjc5NCw3IEBACiAgICAgbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodG1wKTsKICAgICBwbmV3ID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgbik7CiAgICAgaWYgKHBuZXcgIT0gTlVMTCkgewotICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCisgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhwbmV3KSwKICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHRtcCksIG4rMSk7CiAgICAgICAgICgoUHlCeXRlc09iamVjdCAqKXBuZXcpLT5vYl9zaGFzaCA9CiAgICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKil0bXApLT5vYl9zaGFzaDsKQEAgLTM3NDcsMyArMzEzNiwyODIgQEAKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soaXQpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKIH0KKworCisvKiBfUHlCeXRlc1dyaXRlciBBUEkgKi8KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgIC8qIE9uIFdpbmRvd3MsIG92ZXJhbGxvY2F0ZSBieSA1MCUgaXMgdGhlIGJlc3QgZmFjdG9yICovCisjICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiAyCisjZWxzZQorICAgLyogT24gTGludXgsIG92ZXJhbGxvY2F0ZSBieSAyNSUgaXMgdGhlIGJlc3QgZmFjdG9yICovCisjICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiA0CisjZW5kaWYKKwordm9pZAorX1B5Qnl0ZXNXcml0ZXJfSW5pdChfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIC8qIFNldCBhbGwgYXR0cmlidXRlcyBiZWZvcmUgc21hbGxfYnVmZmVyIHRvIDAgKi8KKyAgICBtZW1zZXQod3JpdGVyLCAwLCBvZmZzZXRvZihfUHlCeXRlc1dyaXRlciwgc21hbGxfYnVmZmVyKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICBtZW1zZXQod3JpdGVyLT5zbWFsbF9idWZmZXIsIDB4Q0IsIHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikpOworI2VuZGlmCit9CisKK3ZvaWQKK19QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7Cit9CisKK1B5X0xPQ0FMX0lOTElORShjaGFyKikKK19QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgICAgIHJldHVybiB3cml0ZXItPnNtYWxsX2J1ZmZlcjsKKyAgICB9CisgICAgZWxzZSBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciAhPSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgfQorfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK19QeUJ5dGVzV3JpdGVyX0dldFNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQoreworICAgIGNoYXIgKnN0YXJ0ID0gX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcod3JpdGVyKTsKKyAgICBhc3NlcnQoc3RyICE9IE5VTEwpOworICAgIGFzc2VydChzdHIgPj0gc3RhcnQpOworICAgIGFzc2VydChzdHIgLSBzdGFydCA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgcmV0dXJuIHN0ciAtIHN0YXJ0OworfQorCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK19QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3koX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQoreworI2lmZGVmIFB5X0RFQlVHCisgICAgY2hhciAqc3RhcnQsICplbmQ7CisKKyAgICBpZiAod3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciAhPSBOVUxMKTsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkKKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVBcnJheV9DaGVja0V4YWN0KHdyaXRlci0+YnVmZmVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrRXhhY3Qod3JpdGVyLT5idWZmZXIpKTsKKyAgICAgICAgYXNzZXJ0KFB5X1JFRkNOVCh3cml0ZXItPmJ1ZmZlcikgPT0gMSk7CisgICAgfQorCisgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAvKiBieXRlYXJyYXkgaGFzIGl0cyBvd24gb3ZlcmFsbG9jYXRpb24gYWxnb3JpdGhtLAorICAgICAgICAgICB3cml0ZXIgb3ZlcmFsbG9jYXRpb24gbXVzdCBiZSBkaXNhYmxlZCAqLworICAgICAgICBhc3NlcnQoIXdyaXRlci0+b3ZlcmFsbG9jYXRlKTsKKyAgICB9CisKKyAgICBhc3NlcnQoMCA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgYXNzZXJ0KDAgPD0gd3JpdGVyLT5taW5fc2l6ZSAmJiB3cml0ZXItPm1pbl9zaXplIDw9IHdyaXRlci0+YWxsb2NhdGVkKTsKKyAgICAvKiB0aGUgbGFzdCBieXRlIG11c3QgYWx3YXlzIGJlIG51bGwgKi8KKyAgICBzdGFydCA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcik7CisgICAgYXNzZXJ0KHN0YXJ0W3dyaXRlci0+YWxsb2NhdGVkXSA9PSAwKTsKKworICAgIGVuZCA9IHN0YXJ0ICsgd3JpdGVyLT5hbGxvY2F0ZWQ7CisgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RhcnQgPD0gc3RyICYmIHN0ciA8PSBlbmQpOworI2VuZGlmCit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9SZXNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQsIHBvczsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIGFzc2VydCh3cml0ZXItPmFsbG9jYXRlZCA8IHNpemUpOworCisgICAgYWxsb2NhdGVkID0gc2l6ZTsKKyAgICBpZiAod3JpdGVyLT5vdmVyYWxsb2NhdGUKKyAgICAgICAgJiYgYWxsb2NhdGVkIDw9IChQWV9TU0laRV9UX01BWCAtIGFsbG9jYXRlZCAvIE9WRVJBTExPQ0FURV9GQUNUT1IpKSB7CisgICAgICAgIC8qIG92ZXJhbGxvY2F0ZSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJlYWxsb2MoKSAqLworICAgICAgICBhbGxvY2F0ZWQgKz0gYWxsb2NhdGVkIC8gT1ZFUkFMTE9DQVRFX0ZBQ1RPUjsKKyAgICB9CisKKyAgICBwb3MgPSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKHdyaXRlciwgc3RyKTsKKyAgICBpZiAoIXdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKHdyaXRlci0+YnVmZmVyLCBhbGxvY2F0ZWQpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAvKiB3cml0ZXItPmFsbG9jYXRlZCBjYW4gYmUgc21hbGxlciB0aGFuIHdyaXRlci0+YnVmZmVyLT5vYl9hbGxvYywKKyAgICAgICAgICAgICAgIGJ1dCB3ZSBjYW5ub3QgdXNlIG9iX2FsbG9jIGJlY2F1c2UgYnl0ZXMgbWF5IG5lZWQgdG8gYmUgbW92ZWQKKyAgICAgICAgICAgICAgIHRvIHVzZSB0aGUgd2hvbGUgYnVmZmVyLiBieXRlYXJyYXkgdXNlcyBhbiBpbnRlcm5hbCBvcHRpbWl6YXRpb24KKyAgICAgICAgICAgICAgIHRvIGF2b2lkIG1vdmluZyBvciBjb3B5aW5nIGJ5dGVzIHdoZW4gYnl0ZXMgYXJlIHJlbW92ZWQgYXQgdGhlCisgICAgICAgICAgICAgICBiZWdpbm5pbmcgKGV4OiBkZWwgYnl0ZWFycmF5WzoxXSkuICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ3cml0ZXItPmJ1ZmZlciwgYWxsb2NhdGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBjb252ZXJ0IGZyb20gc3RhY2sgYnVmZmVyIHRvIGJ5dGVzIG9iamVjdCBidWZmZXIgKi8KKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworCisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGFsbG9jYXRlZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOworICAgICAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKHBvcyAhPSAwKSB7CisgICAgICAgICAgICBjaGFyICpkZXN0OworICAgICAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkKKyAgICAgICAgICAgICAgICBkZXN0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXN0ID0gUHlCeXRlc19BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgICAgICAgICAgbWVtY3B5KGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5zbWFsbF9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgcG9zKTsKKyAgICAgICAgfQorCisgICAgICAgIHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlciA9IDA7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgbWVtc2V0KHdyaXRlci0+c21hbGxfYnVmZmVyLCAweERCLCBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpKTsKKyNlbmRpZgorICAgIH0KKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IGFsbG9jYXRlZDsKKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcikgKyBwb3M7CisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisgICAgcmV0dXJuIHN0cjsKKworZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYyh3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeV9zc2l6ZV90IG5ld19taW5fc2l6ZTsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorCisgICAgaWYgKHdyaXRlci0+bWluX3NpemUgPiBQWV9TU0laRV9UX01BWCAtIHNpemUpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYyh3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmV3X21pbl9zaXplID0gd3JpdGVyLT5taW5fc2l6ZSArIHNpemU7CisKKyAgICBpZiAobmV3X21pbl9zaXplID4gd3JpdGVyLT5hbGxvY2F0ZWQpCisgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1Jlc2l6ZSh3cml0ZXIsIHN0ciwgbmV3X21pbl9zaXplKTsKKworICAgIHdyaXRlci0+bWluX3NpemUgPSBuZXdfbWluX3NpemU7CisgICAgcmV0dXJuIHN0cjsKK30KKworLyogQWxsb2NhdGUgdGhlIGJ1ZmZlciB0byB3cml0ZSBzaXplIGJ5dGVzLgorICAgUmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgYnVmZmVyIGRhdGEuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX0FsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICAvKiBlbnN1cmUgdGhhdCBfUHlCeXRlc1dyaXRlcl9BbGxvYygpIGlzIG9ubHkgY2FsbGVkIG9uY2UgKi8KKyAgICBhc3NlcnQod3JpdGVyLT5taW5fc2l6ZSA9PSAwICYmIHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgd3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyID0gMTsKKyNpZmRlZiBQeV9ERUJVRworICAgIHdyaXRlci0+YWxsb2NhdGVkID0gc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSAtIDE7CisgICAgLyogSW4gZGVidWcgbW9kZSwgZG9uJ3QgdXNlIHRoZSBmdWxsIHNtYWxsIGJ1ZmZlciBiZWNhdXNlIGl0IGlzIGxlc3MKKyAgICAgICBlZmZpY2llbnQgdGhhbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgdG8gZGV0ZWN0IGJ1ZmZlciB1bmRlcmZsb3cKKyAgICAgICBhbmQgYnVmZmVyIG92ZXJmbG93LiBVc2UgMTAgYnl0ZXMgb2YgdGhlIHNtYWxsIGJ1ZmZlciB0byB0ZXN0IGFsc28KKyAgICAgICBjb2RlIHVzaW5nIHRoZSBzbWFsbGVyIGJ1ZmZlciBpbiBkZWJ1ZyBtb2RlLgorCisgICAgICAgRG9uJ3QgbW9kaWZ5IHRoZSBfUHlCeXRlc1dyaXRlciBzdHJ1Y3R1cmUgKHVzZSBhIHNob3J0ZXIgc21hbGwgYnVmZmVyKQorICAgICAgIGluIGRlYnVnIG1vZGUgdG8gYWxzbyBiZSBhYmxlIHRvIGRldGVjdCBzdGFjayBvdmVyZmxvdyB3aGVuIHJ1bm5pbmcKKyAgICAgICB0ZXN0cyBpbiBkZWJ1ZyBtb2RlLiBUaGUgX1B5Qnl0ZXNXcml0ZXIgaXMgbGFyZ2UgKG1vcmUgdGhhbiA1MTIgYnl0ZXMpLAorICAgICAgIGlmIFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgpIGlzIG5vdCB1c2VkIGluIGRlZXAgQyBjYWxsYmFjaywgd2UgbWF5IGhpdCBhCisgICAgICAgc3RhY2sgb3ZlcmZsb3cuICovCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBQeV9NSU4od3JpdGVyLT5hbGxvY2F0ZWQsIDEwKTsKKyAgICAvKiBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KCkgcmVxdWlyZXMgdGhlIGxhc3QgYnl0ZSB0byBiZSAwLAorICAgICAgIHRvIGRldGVjdCBidWZmZXIgb3ZlcmZsb3cgKi8KKyAgICB3cml0ZXItPnNtYWxsX2J1ZmZlclt3cml0ZXItPmFsbG9jYXRlZF0gPSAwOworI2Vsc2UKKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcik7CisjZW5kaWYKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHdyaXRlci0+c21hbGxfYnVmZmVyLCBzaXplKTsKK30KKworUHlPYmplY3QgKgorX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0cikKK3sKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworCisgICAgc2l6ZSA9IF9QeUJ5dGVzV3JpdGVyX0dldFNpemUod3JpdGVyLCBzdHIpOworICAgIGlmIChzaXplID09IDAgJiYgIXdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgIC8qIEdldCB0aGUgZW1wdHkgYnl0ZSBzdHJpbmcgc2luZ2xldG9uICovCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZSh3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHdyaXRlci0+c21hbGxfYnVmZmVyLCBzaXplKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gd3JpdGVyLT5idWZmZXI7CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKworICAgICAgICBpZiAoc2l6ZSAhPSB3cml0ZXItPmFsbG9jYXRlZCkgeworICAgICAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUocmVzdWx0LCBzaXplKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBzaXplKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQocmVzdWx0ID09IE5VTEwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpieXRlcywgUHlfc3NpemVfdCBzaXplKQoreworICAgIGNoYXIgKnN0ciA9IChjaGFyICopcHRyOworCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG1lbWNweShzdHIsIGJ5dGVzLCBzaXplKTsKKyAgICBzdHIgKz0gc2l6ZTsKKworICAgIHJldHVybiBzdHI7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKaW5kZXggNWU4YWM1OS4uYjBlZDAyMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGFzc29iamVjdC5jCisrKyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwpAQCAtMzAyLDM0ICszMDIsMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1ldGhvZF9jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCittZXRob2RfY2FsbChQeU9iamVjdCAqbWV0aG9kLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jOwogCi0gICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKKyAgICBzZWxmID0gUHlNZXRob2RfR0VUX1NFTEYobWV0aG9kKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X3NzaXplX3QgYXJnY291bnQgPSBQeVR1cGxlX1NpemUoYXJnKTsKLSAgICAgICAgUHlPYmplY3QgKm5ld2FyZyA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50ICsgMSk7Ci0gICAgICAgIGludCBpOwotICAgICAgICBpZiAobmV3YXJnID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZywgMCwgc2VsZik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJnLCBpKTsKLSAgICAgICAgICAgIFB5X1hJTkNSRUYodik7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZywgaSsxLCB2KTsKLSAgICAgICAgfQotICAgICAgICBhcmcgPSBuZXdhcmc7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoKFB5T2JqZWN0ICopZnVuYywgYXJnLCBrdyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04obWV0aG9kKTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKGZ1bmMsIHNlbGYsIGFyZ3MsIGt3YXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaAppbmRleCBlODdhMjIxLi5jNzVhY2I3IDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCisrKyBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKQEAgLTM5LDQ1ICszOSwzOCBAQAogfQogCiBQeURvY19TVFJWQVIoYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX18sCi0idHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorInRyYW5zbGF0ZSgkc2VsZiwgdGFibGUsIC8sIGRlbGV0ZT1iXCdcJylcbiIKKyItLVxuIgorIlxuIgogIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgogIlxuIgogIiAgdGFibGVcbiIKICIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKICJcbiIKLSJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLlxuIgogIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19ffSwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfcmlnaHRfMSwgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfdHJhbnNsYXRlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJkZWxldGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86dHJhbnNsYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdGFibGU7Ci0gICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOwogICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyA9IE5VTEw7CiAKLSAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnRyYW5zbGF0ZSIsICZ0YWJsZSkpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086dHJhbnNsYXRlIiwgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZWFycmF5LnRyYW5zbGF0ZSByZXF1aXJlcyAxIHRvIDIgYXJndW1lbnRzIik7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZGVsZXRlY2hhcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CkBAIC0xMDgsMTcgKzEwMSwyMCBAQAogICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAotICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICAmZnJtLCAmdG8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X21ha2V0cmFuc19pbXBsKCZmcm0sICZ0byk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJtICovCi0gICAgaWYgKGZybS5vYmopCisgICAgaWYgKGZybS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciB0byAqLwotICAgIGlmICh0by5vYmopCisgICAgaWYgKHRvLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRvKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTUyLDE3ICsxNDgsMjAgQEAKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKLSAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLwotICAgIGlmIChvbGQub2JqKQorICAgIGlmIChvbGQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCi0gICAgaWYgKG5ldy5vYmopCisgICAgaWYgKG5ldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xODIsMjMgKzE4MSwyNSBAQAogIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9zcGxpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3NwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMjU0LDIzICsyNTUsMjUgQEAKICJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3JzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9yc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3JzcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbjpyc3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpyc3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcnNwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC0zMjAsOCArMzIzLDkgQEAKICAgICBpbnQgaXRlbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8mOmluc2VydCIsCi0gICAgICAgICZpbmRleCwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKQorICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9pbnNlcnRfaW1wbChzZWxmLCBpbmRleCwgaXRlbSk7CiAKIGV4aXQ6CkBAIC0zNDksOCArMzUzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaXRlbTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YXBwZW5kIiwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YXBwZW5kIiwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2FwcGVuZF9pbXBsKHNlbGYsIGl0ZW0pOwogCiBleGl0OgpAQCAtMzk0LDggKzM5OSw5IEBACiAgICAgUHlfc3NpemVfdCBpbmRleCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwb3AiLAotICAgICAgICAmaW5kZXgpKQorICAgICAgICAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3BvcF9pbXBsKHNlbGYsIGluZGV4KTsKIAogZXhpdDoKQEAgLTQyMyw4ICs0MjksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB2YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6cmVtb3ZlIiwgX2dldGJ5dGV2YWx1ZSwgJnZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVtb3ZlX2ltcGwoc2VsZiwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDUzLDggKzQ2MCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC00ODMsOCArNDkxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImxzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNTEzLDggKzUyMiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTUzNywyMyArNTQ3LDI1IEBACiAiICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZGVjb2RlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZGVjb2RlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9kZWNvZGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01ODMsMjEgKzU5NSwyMyBAQAogInRydWUuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX1NQTElUTElORVNfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc3BsaXRsaW5lcyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfc3BsaXRsaW5lcyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmtlZXBlbmRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmtlZXBlbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOwogCiBleGl0OgpAQCAtNjE3LDE3ICs2MzEsMTggQEAKICAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2Zyb21oZXgsIE1FVEhfT3xNRVRIX0NMQVNTLCBieXRlYXJyYXlfZnJvbWhleF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpOworYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCitieXRlYXJyYXlfZnJvbWhleChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2Zyb21oZXhfaW1wbCgoUHlPYmplY3QqKWNscywgc3RyaW5nKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2Zyb21oZXhfaW1wbCh0eXBlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CkBAIC02NzAsOCArNjg1LDkgQEAKICAgICBpbnQgcHJvdG8gPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwKLSAgICAgICAgJnByb3RvKSkKKyAgICAgICAgJnByb3RvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChzZWxmLCBwcm90byk7CiAKIGV4aXQ6CkBAIC02OTUsNCArNzExLDQgQEAKIHsKICAgICByZXR1cm4gYnl0ZWFycmF5X3NpemVvZl9pbXBsKHNlbGYpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2NmMxNWZmMjJjNWUyNDMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIyNTM0MmE2ODAzOTFiOWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCmluZGV4IDVhMWE1ZTkuLmExMWViZDIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKQEAgLTE3LDIyICsxNywyNCBAQAogIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOwogCiAjZGVmaW5lIEJZVEVTX1NQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbjpzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTY0LDE0ICs2NiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cGFydGl0aW9uIiwgJnNlcCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19wYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KLSAgICBpZiAoc2VwLm9iaikKKyAgICBpZiAoc2VwLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEwMSwxNCArMTA1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHNlcCA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cnBhcnRpdGlvbiIsICZzZXApKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cnBhcnRpdGlvbiIsICZzZXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKHNlbGYsICZzZXApOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHNlcCAqLwotICAgIGlmIChzZXAub2JqKQorICAgIGlmIChzZXAub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTMwLDIyICsxMzYsMjQgQEAKICJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlcyBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuIik7CiAKICNkZWZpbmUgQllURVNfUlNQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlc19yc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246cnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnNwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC0xODksOCArMTk3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtMjE5LDggKzIyOCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtMjQ5LDggKzI1OSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtMjU4LDQ1ICsyNjksMzggQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJ5dGVzX3RyYW5zbGF0ZV9fZG9jX18sCi0idHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorInRyYW5zbGF0ZSgkc2VsZiwgdGFibGUsIC8sIGRlbGV0ZT1iXCdcJylcbiIKKyItLVxuIgorIlxuIgogIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgogIlxuIgogIiAgdGFibGVcbiIKICIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKICJcbiIKLSJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLlxuIgogIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOwogCiAjZGVmaW5lIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYgICAgXAotICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3RyYW5zbGF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLCBpbnQgZ3JvdXBfcmlnaHRfMSwKK2J5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGUoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc190cmFuc2xhdGUoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAiZGVsZXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOnRyYW5zbGF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhYmxlOwotICAgIGludCBncm91cF9yaWdodF8xID0gMDsKICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOwogCi0gICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVzLnRyYW5zbGF0ZSByZXF1aXJlcyAxIHRvIDIgYXJndW1lbnRzIik7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBncm91cF9yaWdodF8xLCBkZWxldGVjaGFycyk7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGRlbGV0ZWNoYXJzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtMzI3LDE3ICszMzEsMjAgQEAKICAgICBQeV9idWZmZXIgdG8gPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwKLSAgICAgICAgJmZybSwgJnRvKSkKKyAgICAgICAgJmZybSwgJnRvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX21ha2V0cmFuc19pbXBsKCZmcm0sICZ0byk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJtICovCi0gICAgaWYgKGZybS5vYmopCisgICAgaWYgKGZybS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciB0byAqLwotICAgIGlmICh0by5vYmopCisgICAgaWYgKHRvLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRvKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzU5LDExICszNjYsMTEgQEAKICAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmVwbGFjZSwgTUVUSF9WQVJBUkdTLCBieXRlc19yZXBsYWNlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAogICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgb2xkID0ge05VTEwsIE5VTEx9OwpAQCAtMzcxLDE3ICszNzgsMjAgQEAKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKLSAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JlcGxhY2VfaW1wbChzZWxmLCAmb2xkLCAmbmV3LCBjb3VudCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igb2xkICovCi0gICAgaWYgKG9sZC5vYmopCisgICAgaWYgKG9sZC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvbGQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciBuZXcgKi8KLSAgICBpZiAobmV3Lm9iaikKKyAgICBpZiAobmV3Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm5ldyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQwMiwyMyArNDEyLDI1IEBACiAiICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKIAogI2RlZmluZSBCWVRFU19ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlc19kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlc19kZWNvZGUsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfZGVjb2RlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19kZWNvZGVfaW1wbChzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTQzNSwyMSArNDQ3LDIzIEBACiAidHJ1ZS4iKTsKIAogI2RlZmluZSBCWVRFU19TUExJVExJTkVTX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19zcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3NwbGl0bGluZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcyk7CitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0bGluZXMoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3NwbGl0bGluZXMoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmtlZXBlbmRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmtlZXBlbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3NwbGl0bGluZXNfaW1wbChzZWxmLCBrZWVwZW5kcyk7CiAKIGV4aXQ6CkBAIC00NzcsMTEgKzQ5MSwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19mcm9taGV4X2ltcGwodHlwZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJkMGNlOGYyNWQ3ZTE4ZjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkYzNjOTNjZmQyZGM0NDAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaAppbmRleCA1Mjg4YjlhLi5kMGNkZmMzIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaApAQCAtMjMsOCArMjMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZnJvbWtleXMiLAogICAgICAgICAxLCAyLAotICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpCisgICAgICAgICZpdGVyYWJsZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRpY3RfZnJvbWtleXNfaW1wbCh0eXBlLCBpdGVyYWJsZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtMzksNCArNDAsNCBAQAogCiAjZGVmaW5lIERJQ1RfX19DT05UQUlOU19fX01FVEhPRERFRiAgICBcCiAgICAgeyJfX2NvbnRhaW5zX18iLCAoUHlDRnVuY3Rpb24pZGljdF9fX2NvbnRhaW5zX18sIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGRpY3RfX19jb250YWluc19fX19kb2NfX30sCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmU3NGQ2NzYzMzJmZGJhNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTI2MzI2MTA5ZTNkOTgzOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oCmluZGV4IGQ0MmE3MDAuLjg5MWU5MGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oCisrKyBiL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oCkBAIC0zMSwxMSArMzEsMTIgQEAKICAgICBQeU9iamVjdCAqeiA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VVU6bWFrZXRyYW5zIiwKLSAgICAgICAgJngsICZ5LCAmeikpCisgICAgICAgICZ4LCAmeSwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZV9tYWtldHJhbnNfaW1wbCh4LCB5LCB6KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk0YWZmZGZmNWIyZGFmZjUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRhODZkZDEwOGQ5MmQxMDQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMgYi9PYmplY3RzL2NvZGVvYmplY3QuYwppbmRleCBjMzM0NjI2Li5mN2Y5MWE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2NvZGVvYmplY3QuYworKysgYi9PYmplY3RzL2NvZGVvYmplY3QuYwpAQCAtMSwzICsxLDUgQEAKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCkBAIC01LDYgKzcsMTIgQEAKICNkZWZpbmUgTkFNRV9DSEFSUyBcCiAgICAgIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKIAorLyogSG9sZGVyIGZvciBjb19leHRyYSBpbmZvcm1hdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5X3NzaXplX3QgY2Vfc2l6ZTsKKyAgICB2b2lkICoqY2VfZXh0cmFzOworfSBfUHlDb2RlT2JqZWN0RXh0cmE7CisKIC8qIGFsbF9uYW1lX2NoYXJzKHMpOiB0cnVlIGlmZiBhbGwgY2hhcnMgaW4gcyBhcmUgdmFsaWQgTkFNRV9DSEFSUyAqLwogCiBzdGF0aWMgaW50CkBAIC0xMzYsNyArMTQ0LDcgQEAKICAgICAgICAgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gYXJnY291bnQgKyBrd29ubHlhcmdjb3VudCArCiAgICAgICAgICAgICAoKGZsYWdzICYgQ09fVkFSQVJHUykgIT0gMCkgKyAoKGZsYWdzICYgQ09fVkFSS0VZV09SRFMpICE9IDApOwogICAgICAgICBQeV9zc2l6ZV90IGFsbG9jX3NpemUgPSBzaXplb2YodW5zaWduZWQgY2hhcikgKiBuX2NlbGx2YXJzOwotICAgICAgICBpbnQgdXNlZF9jZWxsMmFyZyA9IDA7CisgICAgICAgIGJvb2wgdXNlZF9jZWxsMmFyZyA9IGZhbHNlOwogICAgICAgICBjZWxsMmFyZyA9IFB5TWVtX01BTExPQyhhbGxvY19zaXplKTsKICAgICAgICAgaWYgKGNlbGwyYXJnID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0OSw3ICsxNTcsNyBAQAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKHZhcm5hbWVzLCBqKTsKICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNlbGwsIGFyZykpIHsKICAgICAgICAgICAgICAgICAgICAgY2VsbDJhcmdbaV0gPSBqOwotICAgICAgICAgICAgICAgICAgICB1c2VkX2NlbGwyYXJnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE5Miw2ICsyMDAsNyBAQAogICAgIGNvLT5jb19sbm90YWIgPSBsbm90YWI7CiAgICAgY28tPmNvX3pvbWJpZWZyYW1lID0gTlVMTDsKICAgICBjby0+Y29fd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIGNvLT5jb19leHRyYSA9IE5VTEw7CiAgICAgcmV0dXJuIGNvOwogfQogCkBAIC00MDEsNiArNDEwLDIxIEBACiBzdGF0aWMgdm9pZAogY29kZV9kZWFsbG9jKFB5Q29kZU9iamVjdCAqY28pCiB7CisgICAgaWYgKGNvLT5jb19leHRyYSAhPSBOVUxMKSB7CisgICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSBjby0+Y29fZXh0cmE7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSAwOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgZnJlZWZ1bmMgZnJlZV9leHRyYSA9IHRzdGF0ZS0+Y29fZXh0cmFfZnJlZWZ1bmNzW2ldOworCisgICAgICAgICAgICBpZiAoZnJlZV9leHRyYSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZnJlZV9leHRyYShjb19leHRyYS0+Y2VfZXh0cmFzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5TWVtX0ZSRUUoY28tPmNvX2V4dHJhKTsKKyAgICB9CisKICAgICBQeV9YREVDUkVGKGNvLT5jb19jb2RlKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19jb25zdHMpOwogICAgIFB5X1hERUNSRUYoY28tPmNvX25hbWVzKTsKQEAgLTczNCw3ICs3NTgsOCBAQAogICAgICAgICBhZGRyICs9ICpwKys7CiAgICAgICAgIGlmIChhZGRyID4gYWRkcnEpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgbGluZSArPSAqcCsrOworICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcikqcDsKKyAgICAgICAgcCsrOwogICAgIH0KICAgICByZXR1cm4gbGluZTsKIH0KQEAgLTc2OSwxNyArNzk0LDE5IEBACiAgICAgICAgIGlmIChhZGRyICsgKnAgPiBsYXN0aSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBhZGRyICs9ICpwKys7Ci0gICAgICAgIGlmICgqcCkKKyAgICAgICAgaWYgKChzaWduZWQgY2hhcikqcCkKICAgICAgICAgICAgIGJvdW5kcy0+YXBfbG93ZXIgPSBhZGRyOwotICAgICAgICBsaW5lICs9ICpwKys7CisgICAgICAgIGxpbmUgKz0gKHNpZ25lZCBjaGFyKSpwOworICAgICAgICBwKys7CiAgICAgICAgIC0tc2l6ZTsKICAgICB9CiAKICAgICBpZiAoc2l6ZSA+IDApIHsKICAgICAgICAgd2hpbGUgKC0tc2l6ZSA+PSAwKSB7CiAgICAgICAgICAgICBhZGRyICs9ICpwKys7Ci0gICAgICAgICAgICBpZiAoKnArKykKKyAgICAgICAgICAgIGlmICgoc2lnbmVkIGNoYXIpKnApCiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBwKys7CiAgICAgICAgIH0KICAgICAgICAgYm91bmRzLT5hcF91cHBlciA9IGFkZHI7CiAgICAgfQpAQCAtNzg5LDMgKzgxNiw4MCBAQAogCiAgICAgcmV0dXJuIGxpbmU7CiB9CisKKworaW50CitfUHlDb2RlX0dldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LCB2b2lkICoqZXh0cmEpCit7CisgICAgYXNzZXJ0KCpleHRyYSA9PSBOVUxMKTsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlDb2RlT2JqZWN0ICpvID0gKFB5Q29kZU9iamVjdCopIGNvZGU7CisgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEqKSBvLT5jb19leHRyYTsKKworCisgICAgaWYgKGNvX2V4dHJhID09IE5VTEwgfHwgY29fZXh0cmEtPmNlX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKmV4dHJhID0gY29fZXh0cmEtPmNlX2V4dHJhc1tpbmRleF07CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CitfUHlDb2RlX1NldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LCB2b2lkICpleHRyYSkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworCisgICAgaWYgKCFQeUNvZGVfQ2hlY2soY29kZSkgfHwgaW5kZXggPCAwIHx8CisgICAgICAgICAgICBpbmRleCA+PSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeUNvZGVPYmplY3QgKm8gPSAoUHlDb2RlT2JqZWN0KikgY29kZTsKKyAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSAqKSBvLT5jb19leHRyYTsKKworICAgIGlmIChjb19leHRyYSA9PSBOVUxMKSB7CisgICAgICAgIG8tPmNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSopIFB5TWVtX01hbGxvYygKKyAgICAgICAgICAgIHNpemVvZihfUHlDb2RlT2JqZWN0RXh0cmEpKTsKKyAgICAgICAgaWYgKG8tPmNvX2V4dHJhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEgKikgby0+Y29fZXh0cmE7CisKKyAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcyA9IFB5TWVtX01hbGxvYygKKyAgICAgICAgICAgIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCAqIHNpemVvZih2b2lkKikpOworICAgICAgICBpZiAoY29fZXh0cmEtPmNlX2V4dHJhcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb19leHRyYS0+Y2Vfc2l6ZSA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudDsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IDA7IGkgPCBjb19leHRyYS0+Y2Vfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2ldID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChjb19leHRyYS0+Y2Vfc2l6ZSA8PSBpbmRleCkgeworICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzID0gUHlNZW1fUmVhbGxvYygKKyAgICAgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMsIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCAqIHNpemVvZih2b2lkKikpOworCisgICAgICAgIGlmIChjb19leHRyYS0+Y2VfZXh0cmFzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGNvX2V4dHJhLT5jZV9zaXplID0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50OworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gY29fZXh0cmEtPmNlX3NpemU7IGkgPCBjb19leHRyYS0+Y2Vfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2ldID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvX2V4dHJhLT5jZV9leHRyYXNbaW5kZXhdID0gZXh0cmE7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCmluZGV4IGQ4MmM1ZWIuLjMxZTEyNzggMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29tcGxleG9iamVjdC5jCisrKyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCkBAIC03NTksMjkgKzc1OSwxMiBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWNvbXBsZXhfc3VidHlwZV9mcm9tX3N0cmluZyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2KQorY29tcGxleF9mcm9tX3N0cmluZ19pbm5lcihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbiwgdm9pZCAqdHlwZSkKIHsKLSAgICBjb25zdCBjaGFyICpzLCAqc3RhcnQ7Ci0gICAgY2hhciAqZW5kOwogICAgIGRvdWJsZSB4PTAuMCwgeT0wLjAsIHo7CiAgICAgaW50IGdvdF9icmFja2V0PTA7Ci0gICAgUHlPYmplY3QgKnNfYnVmZmVyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7Ci0gICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjb21wbGV4KCkgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIG51bWJlciwgbm90ICclLjIwMHMnIiwKLSAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgY29uc3QgY2hhciAqc3RhcnQ7CisgICAgY2hhciAqZW5kOwogCiAgICAgLyogcG9zaXRpb24gb24gZmlyc3Qgbm9uYmxhbmsgKi8KICAgICBzdGFydCA9IHM7CkBAIC04MjIsNyArODA1LDcgQEAKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChlbmQgIT0gcykgewogICAgICAgICAvKiBhbGwgNCBmb3JtcyBzdGFydGluZyB3aXRoIDxmbG9hdD4gbGFuZCBoZXJlICovCkBAIC04MzUsNyArODE4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19WYWx1ZUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuZCAhPSBzKQogICAgICAgICAgICAgICAgIC8qIDxmbG9hdD48c2lnbmVkLWZsb2F0PmogKi8KQEAgLTg5MCwxOCArODczLDQ2IEBACiAgICAgaWYgKHMtc3RhcnQgIT0gbGVuKQogICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwogCi0gICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7Ci0gICAgcmV0dXJuIGNvbXBsZXhfc3VidHlwZV9mcm9tX2RvdWJsZXModHlwZSwgeCwgeSk7CisgICAgcmV0dXJuIGNvbXBsZXhfc3VidHlwZV9mcm9tX2RvdWJsZXMoKFB5VHlwZU9iamVjdCAqKXR5cGUsIHgsIHkpOwogCiAgIHBhcnNlX2Vycm9yOgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiY29tcGxleCgpIGFyZyBpcyBhIG1hbGZvcm1lZCBzdHJpbmciKTsKLSAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitjb21wbGV4X3N1YnR5cGVfZnJvbV9zdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdikKK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgeworICAgICAgICBzX2J1ZmZlciA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh2KTsKKyAgICAgICAgaWYgKHNfYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjb21wbGV4KCkgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIG51bWJlciwgbm90ICclLjIwMHMnIiwKKyAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKHMsIGxlbiwgImNvbXBsZXgiLCB2LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxleF9mcm9tX3N0cmluZ19pbm5lcik7CisgIGV4aXQ6CisgICAgUHlfREVDUkVGKHNfYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29tcGxleF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKnIsICppLCAqdG1wOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCmluZGV4IGRhNjhlM2IuLjA3NmU3NDEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGVzY3JvYmplY3QuYworKysgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKQEAgLTIyLDcgKzIyLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlc2NyX3JlcHIoUHlEZXNjck9iamVjdCAqZGVzY3IsIGNoYXIgKmZvcm1hdCkKK2Rlc2NyX3JlcHIoUHlEZXNjck9iamVjdCAqZGVzY3IsIGNvbnN0IGNoYXIgKmZvcm1hdCkKIHsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAgICAgaWYgKGRlc2NyLT5kX25hbWUgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soZGVzY3ItPmRfbmFtZSkpCkBAIC0yMTMsNyArMjEzLDcgQEAKIG1ldGhvZGRlc2NyX2NhbGwoUHlNZXRob2REZXNjck9iamVjdCAqZGVzY3IsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTI0MiwxMyArMjQyLDggQEAKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1OCw3ICsyNTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0LCAqKnN0YWNrOwogCiAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFjY2VwdGFibGUgYXMgJ3NlbGYnICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtMjk1LDE0ICsyOTAsOSBAQAogICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeChkZXNjci0+ZF9tZXRob2QsIHNlbGYsIE5VTEwpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIGFyZ2MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoZnVuYywgYXJncywga3dkcyk7CisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzAwLDcgQEAKIHdyYXBwZXJkZXNjcl9jYWxsKFB5V3JhcHBlckRlc2NyT2JqZWN0ICpkZXNjciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0LCAqKnN0YWNrOwogCiAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFjY2VwdGFibGUgYXMgJ3NlbGYnICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtMzM5LDEzICszMjksOSBAQAogICAgIGZ1bmMgPSBQeVdyYXBwZXJfTmV3KChQeU9iamVjdCAqKWRlc2NyLCBzZWxmKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTAzMyw3ICsxMDE5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3cmFwcGVyX3JpY2hjb21wYXJlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG9wKQogewotICAgIFB5X2ludHB0cl90IHJlc3VsdDsKKyAgICBpbnRwdHJfdCByZXN1bHQ7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlXcmFwcGVyRGVzY3JPYmplY3QgKmFfZGVzY3IsICpiX2Rlc2NyOwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3QtY29tbW9uLmggYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKaW5kZXggMjkxMmViOS4uY2U5ZWRhYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCisrKyBiL09iamVjdHMvZGljdC1jb21tb24uaApAQCAtOCwxNSArOCw2OSBAQAogICAgIFB5T2JqZWN0ICptZV92YWx1ZTsgLyogVGhpcyBmaWVsZCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIGNvbWJpbmVkIHRhYmxlcyAqLwogfSBQeURpY3RLZXlFbnRyeTsKIAotdHlwZWRlZiBQeURpY3RLZXlFbnRyeSAqKCpkaWN0X2xvb2t1cF9mdW5jKQotKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKKy8qIGRpY3RfbG9va3VwX2Z1bmMoKSByZXR1cm5zIGluZGV4IG9mIGVudHJ5IHdoaWNoIGNhbiBiZSB1c2VkIGxpa2UgREtfRU5UUklFUyhkaylbaW5kZXhdLgorICogLTEgd2hlbiBubyBlbnRyeSBmb3VuZCwgLTMgd2hlbiBjb21wYXJlIHJhaXNlcyBlcnJvci4KKyAqLwordHlwZWRlZiBQeV9zc2l6ZV90ICgqZGljdF9sb29rdXBfZnVuYykKKyhQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyBQeV9zc2l6ZV90ICpoYXNocG9zKTsKIAorI2RlZmluZSBES0lYX0VNUFRZICgtMSkKKyNkZWZpbmUgREtJWF9EVU1NWSAoLTIpICAvKiBVc2VkIGludGVybmFsbHkgKi8KKyNkZWZpbmUgREtJWF9FUlJPUiAoLTMpCisKKy8qIFNlZSBkaWN0b2JqZWN0LmMgZm9yIGFjdHVhbCBsYXlvdXQgb2YgRGljdEtleXNPYmplY3QgKi8KIHN0cnVjdCBfZGljdGtleXNvYmplY3QgewogICAgIFB5X3NzaXplX3QgZGtfcmVmY250OworCisgICAgLyogU2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSAoZGtfaW5kaWNlcykuIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLiAqLwogICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKKworICAgIC8qIEZ1bmN0aW9uIHRvIGxvb2t1cCBpbiB0aGUgaGFzaCB0YWJsZSAoZGtfaW5kaWNlcyk6CisKKyAgICAgICAtIGxvb2tkaWN0KCk6IGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gREtJWF9FUlJPUiBpZiAoYW5kCisgICAgICAgICBvbmx5IGlmKSBhIGNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworICAgICAgIC0gbG9va2RpY3RfdW5pY29kZSgpOiBzcGVjaWFsaXplZCB0byBVbmljb2RlIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mCisgICAgICAgICB3aGljaCBjYW4gbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4KKyAgICAgICAgIERLSVhfRVJST1IuCisKKyAgICAgICAtIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSgpOiBzaW1pbGFyIHRvIGxvb2tkaWN0X3VuaWNvZGUoKSBidXQgZnVydGhlcgorICAgICAgICAgc3BlY2lhbGl6ZWQgZm9yIFVuaWNvZGUgc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUgdGhlIDxkdW1teT4gdmFsdWUuCisKKyAgICAgICAtIGxvb2tkaWN0X3NwbGl0KCk6IFZlcnNpb24gb2YgbG9va2RpY3QoKSBmb3Igc3BsaXQgdGFibGVzLiAqLwogICAgIGRpY3RfbG9va3VwX2Z1bmMgZGtfbG9va3VwOworCisgICAgLyogTnVtYmVyIG9mIHVzYWJsZSBlbnRyaWVzIGluIGRrX2VudHJpZXMuICovCiAgICAgUHlfc3NpemVfdCBka191c2FibGU7Ci0gICAgUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1sxXTsKKworICAgIC8qIE51bWJlciBvZiB1c2VkIGVudHJpZXMgaW4gZGtfZW50cmllcy4gKi8KKyAgICBQeV9zc2l6ZV90IGRrX25lbnRyaWVzOworCisgICAgLyogQWN0dWFsIGhhc2ggdGFibGUgb2YgZGtfc2l6ZSBlbnRyaWVzLiBJdCBob2xkcyBpbmRpY2VzIGluIGRrX2VudHJpZXMsCisgICAgICAgb3IgREtJWF9FTVBUWSgtMSkgb3IgREtJWF9EVU1NWSgtMikuCisKKyAgICAgICBJbmRpY2VzIG11c3QgYmU6IDAgPD0gaW5kaWNlIDwgVVNBQkxFX0ZSQUNUSU9OKGRrX3NpemUpLgorCisgICAgICAgVGhlIHNpemUgaW4gYnl0ZXMgb2YgYW4gaW5kaWNlIGRlcGVuZHMgb24gZGtfc2l6ZToKKworICAgICAgIC0gMSBieXRlIGlmIGRrX3NpemUgPD0gMHhmZiAoY2hhciopCisgICAgICAgLSAyIGJ5dGVzIGlmIGRrX3NpemUgPD0gMHhmZmZmIChpbnQxNl90KikKKyAgICAgICAtIDQgYnl0ZXMgaWYgZGtfc2l6ZSA8PSAweGZmZmZmZmZmIChpbnQzMl90KikKKyAgICAgICAtIDggYnl0ZXMgb3RoZXJ3aXNlIChpbnQ2NF90KikKKworICAgICAgIER5bmFtaWNhbGx5IHNpemVkLCA4IGlzIG1pbmltdW0uICovCisgICAgdW5pb24geworICAgICAgICBpbnQ4X3QgYXNfMVs4XTsKKyAgICAgICAgaW50MTZfdCBhc18yWzRdOworICAgICAgICBpbnQzMl90IGFzXzRbMl07CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICAgICAgaW50NjRfdCBhc184WzFdOworI2VuZGlmCisgICAgfSBka19pbmRpY2VzOworCisgICAgLyogIlB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbZGtfdXNhYmxlXTsiIGFycmF5IGZvbGxvd3M6CisgICAgICAgc2VlIHRoZSBES19FTlRSSUVTKCkgbWFjcm8gKi8KIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMgYi9PYmplY3RzL2RpY3RvYmplY3QuYwppbmRleCBlNzlhYjM2Li5kOGFiOTFmIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL2RpY3RvYmplY3QuYwpAQCAtMSw0ICsxLDMgQEAKLQogLyogRGljdGlvbmFyeSBvYmplY3QgaW1wbGVtZW50YXRpb24gdXNpbmcgYSBoYXNoIHRhYmxlICovCiAKIC8qIFRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgYSBzZXBhcmF0ZSBmaWxlLCBPYmplY3RzL2RpY3Rub3Rlcy50eHQsCkBAIC03LDY4ICs2LDExMiBAQAogICAgdHVuaW5nIGRpY3Rpb25hcmllcywgYW5kIHNldmVyYWwgaWRlYXMgZm9yIHBvc3NpYmxlIG9wdGltaXphdGlvbnMuCiAqLwogCisvKiBQeURpY3RLZXlzT2JqZWN0CisKK1RoaXMgaW1wbGVtZW50cyB0aGUgZGljdGlvbmFyeSdzIGhhc2h0YWJsZS4KKworQXMgb2YgUHl0aG9uIDMuNiwgdGhpcyBpcyBjb21wYWN0IGFuZCBvcmRlcmVkLiBCYXNpYyBpZGVhIGlzIGRlc2NyaWJlZCBoZXJlLgoraHR0cHM6Ly9tb3JlcHlweS5ibG9nc3BvdC5jb20vMjAxNS8wMS9mYXN0ZXItbW9yZS1tZW1vcnktZWZmaWNpZW50LWFuZC1tb3JlLmh0bWwKKworbGF5b3V0OgorCisrLS0tLS0tLS0tLS0tLS0tKworfCBka19yZWZjbnQgICAgIHwKK3wgZGtfc2l6ZSAgICAgICB8Cit8IGRrX2xvb2t1cCAgICAgfAorfCBka191c2FibGUgICAgIHwKK3wgZGtfbmVudHJpZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tKworfCBka19pbmRpY2VzICAgIHwKK3wgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tKworfCBka19lbnRyaWVzICAgIHwKK3wgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tKworCitka19pbmRpY2VzIGlzIGFjdHVhbCBoYXNodGFibGUuICBJdCBob2xkcyBpbmRleCBpbiBlbnRyaWVzLCBvciBES0lYX0VNUFRZKC0xKQorb3IgREtJWF9EVU1NWSgtMikuCitTaXplIG9mIGluZGljZXMgaXMgZGtfc2l6ZS4gIFR5cGUgb2YgZWFjaCBpbmRleCBpbiBpbmRpY2VzIGlzIHZhcnkgb24gZGtfc2l6ZToKKworKiBpbnQ4ICBmb3IgICAgICAgICAgZGtfc2l6ZSA8PSAxMjgKKyogaW50MTYgZm9yIDI1NiAgIDw9IGRrX3NpemUgPD0gMioqMTUKKyogaW50MzIgZm9yIDIqKjE2IDw9IGRrX3NpemUgPD0gMioqMzEKKyogaW50NjQgZm9yIDIqKjMyIDw9IGRrX3NpemUKKworZGtfZW50cmllcyBpcyBhcnJheSBvZiBQeURpY3RLZXlFbnRyeS4gIEl0J3Mgc2l6ZSBpcyBVU0FCTEVfRlJBQ1RJT04oZGtfc2l6ZSkuCitES19FTlRSSUVTKGRrKSBjYW4gYmUgdXNlZCB0byBnZXQgcG9pbnRlciB0byBlbnRyaWVzLgorCitOT1RFOiBTaW5jZSBuZWdhdGl2ZSB2YWx1ZSBpcyB1c2VkIGZvciBES0lYX0VNUFRZIGFuZCBES0lYX0RVTU1ZLCB0eXBlIG9mCitka19pbmRpY2VzIGVudHJ5IGlzIHNpZ25lZCBpbnRlZ2VyIGFuZCBpbnQxNiBpcyB1c2VkIGZvciB0YWJsZSB3aGljaAorZGtfc2l6ZSA9PSAyNTYuCisqLworCiAKIC8qCi1UaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGU6Ci0KLTEuIFVudXNlZC4gIG1lX2tleSA9PSBtZV92YWx1ZSA9PSBOVUxMCi0gICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KLSAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaAotICAgbWVfa2V5IGlzIE5VTEwsIGFuZCBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgotCi0yLiBBY3RpdmUuICBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfa2V5ICE9IGR1bW15IGFuZCBtZV92YWx1ZSAhPSBOVUxMCi0gICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgb3IKLSAgIFBlbmRpbmcgdXBvbiBrZXkgZGVsZXRpb24gKGZvciBjb21iaW5lZCBhbmQgc3BsaXQgdGFibGVzIHJlc3BlY3RpdmVseSkuCi0gICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggbWVfdmFsdWUgIT0gTlVMTC4KLQotMy4gRHVtbXkuICBtZV9rZXkgPT0gZHVtbXkgYW5kIG1lX3ZhbHVlID09IE5VTEwKLSAgIFByZXZpb3VzbHkgaGVsZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIsIGJ1dCB0aGF0IHdhcyBkZWxldGVkIGFuZCBhbgotICAgYWN0aXZlIHBhaXIgaGFzIG5vdCB5ZXQgb3ZlcndyaXR0ZW4gdGhlIHNsb3QuICBEdW1teSBjYW4gdHJhbnNpdGlvbiB0bwotICAgQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIER1bW15IHNsb3RzIGNhbm5vdCBiZSBtYWRlIFVudXNlZCBhZ2FpbgotICAgKGNhbm5vdCBoYXZlIG1lX2tleSBzZXQgdG8gTlVMTCksIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YKLSAgIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93IHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KLQotNC4gUGVuZGluZy4gTm90IHlldCBpbnNlcnRlZCBvciBkZWxldGVkIGZyb20gYSBzcGxpdC10YWJsZS4KLSAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwKLQogVGhlIERpY3RPYmplY3QgY2FuIGJlIGluIG9uZSBvZiB0d28gZm9ybXMuCisKIEVpdGhlcjoKICAgQSBjb21iaW5lZCB0YWJsZToKICAgICBtYV92YWx1ZXMgPT0gTlVMTCwgZGtfcmVmY250ID09IDEuCiAgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1lX3ZhbHVlIGZpZWxkIG9mIHRoZSBQeURpY3RLZXlzT2JqZWN0LgotICAgIFNsb3Qga2luZCA0IGlzIG5vdCBhbGxvd2VkIGkuZS4KLSAgICAgICAga2V5ICE9IE5VTEwsIGtleSAhPSBkdW1teSBhbmQgdmFsdWUgPT0gTlVMTCBpcyBpbGxlZ2FsLgogT3I6CiAgIEEgc3BsaXQgdGFibGU6CiAgICAgbWFfdmFsdWVzICE9IE5VTEwsIGRrX3JlZmNudCA+PSAxCiAgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1hX3ZhbHVlcyBhcnJheS4KLSAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZCwgbm8gPGR1bW15PiBrZXlzIGFyZSBwcmVzZW50LgorICAgIE9ubHkgc3RyaW5nICh1bmljb2RlKSBrZXlzIGFyZSBhbGxvd2VkLgorICAgIEFsbCBkaWN0cyBzaGFyaW5nIHNhbWUga2V5IG11c3QgaGF2ZSBzYW1lIGluc2VydGlvbiBvcmRlci4KIAotTm90ZTogLnBvcGl0ZW0oKSBhYnVzZXMgdGhlIG1lX2hhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KLWhvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIG1lX2hhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcyBubwotbWVhbmluZyBvdGhlcndpc2UuIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcyBwb3BpdGVtIGFsd2F5cyBjb252ZXJ0cyB0aGUgZGljdAotdG8gdGhlIGNvbWJpbmVkLXRhYmxlIGZvcm0uCitUaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGUgKHNsb3QgaXMgaW5kZXgsIGFuZAorREtfRU5UUklFUyhrZXlzKVtpbmRleF0gaWYgaW5kZXggPj0gMCk6CisKKzEuIFVudXNlZC4gIGluZGV4ID09IERLSVhfRU1QVFkKKyAgIERvZXMgbm90IGhvbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyIG5vdyBhbmQgbmV2ZXIgZGlkLiAgVW51c2VkIGNhbgorICAgdHJhbnNpdGlvbiB0byBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgVGhpcyBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgorCisyLiBBY3RpdmUuICBpbmRleCA+PSAwLCBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfdmFsdWUgIT0gTlVMTAorICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCisgICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgorICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCisKKzMuIER1bW15LiAgaW5kZXggPT0gREtJWF9EVU1NWSAgKGNvbWJpbmVkIG9ubHkpCisgICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KKyAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KKyAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KKyAgIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgIHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KKworNC4gUGVuZGluZy4gaW5kZXggPj0gMCwga2V5ICE9IE5VTEwsIGFuZCB2YWx1ZSA9PSBOVUxMICAoc3BsaXQgb25seSkKKyAgIE5vdCB5ZXQgaW5zZXJ0ZWQgaW4gc3BsaXQtdGFibGUuCiAqLwogCi0vKiBQeURpY3RfTUlOU0laRV9TUExJVCBpcyB0aGUgbWluaW11bSBzaXplIG9mIGEgc3BsaXQgZGljdGlvbmFyeS4KLSAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4KLSAqIFJlc2l6aW5nIG9mIHNwbGl0IGRpY3Rpb25hcmllcyBpcyB2ZXJ5IHJhcmUsIHNvIHRoZSBzYXZpbmcgbWVtb3J5IGlzIG1vcmUKLSAqIGltcG9ydGFudCB0aGFuIHRoZSBjb3N0IG9mIHJlc2l6aW5nLgotICovCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFX1NQTElUIDQKKy8qCitQcmVzZXJ2aW5nIGluc2VydGlvbiBvcmRlcgogCi0vKiBQeURpY3RfTUlOU0laRV9DT01CSU5FRCBpcyB0aGUgc3RhcnRpbmcgc2l6ZSBmb3IgYW55IG5ldywgbm9uLXNwbGl0IGRpY3QuCitJdCdzIHNpbXBsZSBmb3IgY29tYmluZWQgdGFibGUuICBTaW5jZSBka19lbnRyaWVzIGlzIG1vc3RseSBhcHBlbmQgb25seSwgd2UgY2FuCitnZXQgaW5zZXJ0aW9uIG9yZGVyIGJ5IGp1c3QgaXRlcmF0aW5nIGRrX2VudHJpZXMuCisKK09uZSBleGNlcHRpb24gaXMgLnBvcGl0ZW0oKS4gIEl0IHJlbW92ZXMgbGFzdCBpdGVtIGluIGRrX2VudHJpZXMgYW5kIGRlY3JlbWVudAorZGtfbmVudHJpZXMgdG8gYWNoaWV2ZSBhbW9ydGl6ZWQgTygxKS4gIFNpbmNlIHRoZXJlIGFyZSBES0lYX0RVTU1ZIHJlbWFpbnMgaW4KK2RrX2luZGljZXMsIHdlIGNhbid0IGluY3JlbWVudCBka191c2FibGUgZXZlbiB0aG91Z2ggZGtfbmVudHJpZXMgaXMKK2RlY3JlbWVudGVkLgorCitJbiBzcGxpdCB0YWJsZSwgaW5zZXJ0aW5nIGludG8gcGVuZGluZyBlbnRyeSBpcyBhbGxvd2VkIG9ubHkgZm9yIGRrX2VudHJpZXNbaXhdCit3aGVyZSBpeCA9PSBtcC0+bWFfdXNlZC4gSW5zZXJ0aW5nIGludG8gb3RoZXIgaW5kZXggYW5kIGRlbGV0aW5nIGl0ZW0gY2F1c2UKK2NvbnZlcnRpbmcgdGhlIGRpY3QgdG8gdGhlIGNvbWJpbmVkIHRhYmxlLgorKi8KKworLyogUHlEaWN0X01JTlNJWkUgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcgZGljdC4KICAqIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZSB0aGFuIDUgYWN0aXZlIGVudHJpZXM7IGV4cGVyaW1lbnRzIHN1Z2dlc3RlZAogICogdGhpcyBzdWZmaWNlcyBmb3IgdGhlIG1ham9yaXR5IG9mIGRpY3RzIChjb25zaXN0aW5nIG1vc3RseSBvZiB1c3VhbGx5LXNtYWxsCiAgKiBkaWN0cyBjcmVhdGVkIHRvIHBhc3Mga2V5d29yZCBhcmd1bWVudHMpLgogICogTWFraW5nIHRoaXMgOCwgcmF0aGVyIHRoYW4gNCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcmVzaXplcyBmb3IgbW9zdAogICogZGljdGlvbmFyaWVzLCB3aXRob3V0IGFueSBzaWduaWZpY2FudCBleHRyYSBtZW1vcnkgdXNlLgogICovCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIDgKKyNkZWZpbmUgUHlEaWN0X01JTlNJWkUgOAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZGljdC1jb21tb24uaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIgICAgLyogdG8gZ2V0IHVuaWNvZGVfZXEoKSAqLwogCiAvKltjbGluaWMgaW5wdXRdCiBjbGFzcyBkaWN0ICJQeURpY3RPYmplY3QgKiIgIiZQeURpY3RfVHlwZSIKQEAgLTE0MSw4ICsxODQsOCBAQAogaW50byBwbGF5LiAgVGhpcyBpcyBkb25lIGJ5IGluaXRpYWxpemluZyBhICh1bnNpZ25lZCkgdnJibCAicGVydHVyYiIgdG8gdGhlCiBmdWxsIGhhc2ggY29kZSwgYW5kIGNoYW5naW5nIHRoZSByZWN1cnJlbmNlIHRvOgogCi0gICAgaiA9ICg1KmopICsgMSArIHBlcnR1cmI7CiAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICBqID0gKDUqaikgKyAxICsgcGVydHVyYjsKICAgICB1c2UgaiAlIDIqKmkgYXMgdGhlIG5leHQgdGFibGUgaW5kZXg7CiAKIE5vdyB0aGUgcHJvYmUgc2VxdWVuY2UgZGVwZW5kcyAoZXZlbnR1YWxseSkgb24gZXZlcnkgYml0IGluIHRoZSBoYXNoIGNvZGUsCkBAIC0xNzcsNDEgKzIyMCwzOCBAQAogCiAqLwogCi0vKiBPYmplY3QgdXNlZCBhcyBkdW1teSBrZXkgdG8gZmlsbCBkZWxldGVkIGVudHJpZXMKLSAqIFRoaXMgY291bGQgYmUgYW55IHVuaXF1ZSBvYmplY3QsCi0gKiB1c2UgYSBjdXN0b20gdHlwZSBpbiBvcmRlciB0byBtaW5pbWlzZSBjb3VwbGluZy4KLSovCi1zdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdDsKLQotI2RlZmluZSBkdW1teSAoJl9kdW1teV9zdHJ1Y3QpCi0KLSNpZmRlZiBQeV9SRUZfREVCVUcKLVB5T2JqZWN0ICoKLV9QeURpY3RfRHVtbXkodm9pZCkKLXsKLSAgICByZXR1cm4gZHVtbXk7Ci19Ci0jZW5kaWYKLQogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOwotc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOwotc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKIAogc3RhdGljIGludCBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCk7CiAKLS8qIERpY3Rpb25hcnkgcmV1c2Ugc2NoZW1lIHRvIHNhdmUgY2FsbHMgdG8gbWFsbG9jLCBmcmVlLCBhbmQgbWVtc2V0ICovCisvKkdsb2JhbCBjb3VudGVyIHVzZWQgdG8gc2V0IG1hX3ZlcnNpb25fdGFnIGZpZWxkIG9mIGRpY3Rpb25hcnkuCisgKiBJdCBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhhdCBhIGRpY3Rpb25hcnkgaXMgY3JlYXRlZCBhbmQgZWFjaAorICogdGltZSB0aGF0IGEgZGljdGlvbmFyeSBpcyBtb2RpZmllZC4gKi8KK3N0YXRpYyB1aW50NjRfdCBweWRpY3RfZ2xvYmFsX3ZlcnNpb24gPSAwOworCisjZGVmaW5lIERJQ1RfTkVYVF9WRVJTSU9OKCkgKCsrcHlkaWN0X2dsb2JhbF92ZXJzaW9uKQorCisvKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYyBhbmQgZnJlZSAqLwogI2lmbmRlZiBQeURpY3RfTUFYRlJFRUxJU1QKICNkZWZpbmUgUHlEaWN0X01BWEZSRUVMSVNUIDgwCiAjZW5kaWYKIHN0YXRpYyBQeURpY3RPYmplY3QgKmZyZWVfbGlzdFtQeURpY3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKK3N0YXRpYyBQeURpY3RLZXlzT2JqZWN0ICprZXlzX2ZyZWVfbGlzdFtQeURpY3RfTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBudW1mcmVla2V5cyA9IDA7CiAKICNpbmNsdWRlICJjbGluaWMvZGljdG9iamVjdC5jLmgiCiAKQEAgLTIxOSwxMiArMjU5LDE1IEBACiBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKQogewogICAgIFB5RGljdE9iamVjdCAqb3A7Ci0gICAgaW50IHJldCA9IG51bWZyZWU7CisgICAgaW50IHJldCA9IG51bWZyZWUgKyBudW1mcmVla2V5czsKICAgICB3aGlsZSAobnVtZnJlZSkgewogICAgICAgICBvcCA9IGZyZWVfbGlzdFstLW51bWZyZWVdOwogICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3Qob3ApKTsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKG9wKTsKICAgICB9CisgICAgd2hpbGUgKG51bWZyZWVrZXlzKSB7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoa2V5c19mcmVlX2xpc3RbLS1udW1mcmVla2V5c10pOworICAgIH0KICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0yNDMsNDAgKzI4NiwxMTYgQEAKICAgICBQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOwogfQogCisjZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisjZGVmaW5lIERLX0lYU0laRShkaykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoREtfU0laRShkaykgPD0gMHhmZiA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAxIDogREtfU0laRShkaykgPD0gMHhmZmZmID8gICAgICAgICAgICBcCisgICAgICAgICAgICAyIDogREtfU0laRShkaykgPD0gMHhmZmZmZmZmZiA/ICAgIFwKKyAgICAgICAgICAgICAgICA0IDogc2l6ZW9mKGludDY0X3QpKQorI2Vsc2UKKyNkZWZpbmUgREtfSVhTSVpFKGRrKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChES19TSVpFKGRrKSA8PSAweGZmID8gICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIDEgOiBES19TSVpFKGRrKSA8PSAweGZmZmYgPyAgICAgICAgICAgIFwKKyAgICAgICAgICAgIDIgOiBzaXplb2YoaW50MzJfdCkpCisjZW5kaWYKKyNkZWZpbmUgREtfRU5UUklFUyhkaykgXAorICAgICgoUHlEaWN0S2V5RW50cnkqKSgmKGRrKS0+ZGtfaW5kaWNlcy5hc18xW0RLX1NJWkUoZGspICogREtfSVhTSVpFKGRrKV0pKQorCiAjZGVmaW5lIERLX0RFQlVHX0lOQ1JFRiBfUHlfSU5DX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKICNkZWZpbmUgREtfREVCVUdfREVDUkVGIF9QeV9ERUNfUkVGVE9UQUwgX1B5X1JFRl9ERUJVR19DT01NQQogCiAjZGVmaW5lIERLX0lOQ1JFRihkaykgKERLX0RFQlVHX0lOQ1JFRiArKyhkayktPmRrX3JlZmNudCkKICNkZWZpbmUgREtfREVDUkVGKGRrKSBpZiAoREtfREVCVUdfREVDUkVGICgtLShkayktPmRrX3JlZmNudCkgPT0gMCkgZnJlZV9rZXlzX29iamVjdChkaykKLSNkZWZpbmUgREtfU0laRShkaykgKChkayktPmRrX3NpemUpCiAjZGVmaW5lIERLX01BU0soZGspICgoKGRrKS0+ZGtfc2l6ZSktMSkKICNkZWZpbmUgSVNfUE9XRVJfT0ZfMih4KSAoKCh4KSAmICh4LTEpKSA9PSAwKQogCisvKiBsb29rdXAgaW5kaWNlcy4gIHJldHVybnMgREtJWF9FTVBUWSwgREtJWF9EVU1NWSwgb3IgaXggPj0wICovCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKK2RrX2dldF9pbmRleChQeURpY3RLZXlzT2JqZWN0ICprZXlzLCBQeV9zc2l6ZV90IGkpCit7CisgICAgUHlfc3NpemVfdCBzID0gREtfU0laRShrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGl4OworCisgICAgaWYgKHMgPD0gMHhmZikgeworICAgICAgICBpbnQ4X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzE7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisgICAgZWxzZSBpZiAocyA8PSAweGZmZmYpIHsKKyAgICAgICAgaW50MTZfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfMjsKKyAgICAgICAgaXggPSBpbmRpY2VzW2ldOworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHMgPiAweGZmZmZmZmZmKSB7CisgICAgICAgIGludDY0X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzg7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgaW50MzJfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfNDsKKyAgICAgICAgaXggPSBpbmRpY2VzW2ldOworICAgIH0KKyAgICBhc3NlcnQoaXggPj0gREtJWF9EVU1NWSk7CisgICAgcmV0dXJuIGl4OworfQorCisvKiB3cml0ZSB0byBpbmRpY2VzLiAqLworc3RhdGljIGlubGluZSB2b2lkCitka19zZXRfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlfc3NpemVfdCBpLCBQeV9zc2l6ZV90IGl4KQoreworICAgIFB5X3NzaXplX3QgcyA9IERLX1NJWkUoa2V5cyk7CisKKyAgICBhc3NlcnQoaXggPj0gREtJWF9EVU1NWSk7CisKKyAgICBpZiAocyA8PSAweGZmKSB7CisgICAgICAgIGludDhfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfMTsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2YpOworICAgICAgICBpbmRpY2VzW2ldID0gKGNoYXIpaXg7CisgICAgfQorICAgIGVsc2UgaWYgKHMgPD0gMHhmZmZmKSB7CisgICAgICAgIGludDE2X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzI7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmZmYpOworICAgICAgICBpbmRpY2VzW2ldID0gKGludDE2X3QpaXg7CisgICAgfQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgZWxzZSBpZiAocyA+IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgaW50NjRfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfODsKKyAgICAgICAgaW5kaWNlc1tpXSA9IGl4OworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBpbnQzMl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc180OworICAgICAgICBhc3NlcnQoaXggPD0gMHg3ZmZmZmZmZik7CisgICAgICAgIGluZGljZXNbaV0gPSAoaW50MzJfdClpeDsKKyAgICB9Cit9CisKKwogLyogVVNBQkxFX0ZSQUNUSU9OIGlzIHRoZSBtYXhpbXVtIGRpY3Rpb25hcnkgbG9hZC4KLSAqIEN1cnJlbnRseSBzZXQgdG8gKDJuKzEpLzMuIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZQotICogZGVuc2UgcmVzdWx0aW5nIGluIG1vcmUgY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcwotICogYXQgdGhlIGV4cGVuc2Ugb2Ygc3ByZWFkaW5nIGVudHJpZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUKLSAqIGNvc3Qgb2YgdG90YWwgbWVtb3J5IGNvbnN1bWVkLgorICogSW5jcmVhc2luZyB0aGlzIHJhdGlvIG1ha2VzIGRpY3Rpb25hcmllcyBtb3JlIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlCisgKiBjb2xsaXNpb25zLiAgRGVjcmVhc2luZyBpdCBpbXByb3ZlcyBzcGFyc2VuZXNzIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZworICogaW5kaWNlcyBvdmVyIG1vcmUgY2FjaGUgbGluZXMgYW5kIGF0IHRoZSBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KICAqCiAgKiBVU0FCTEVfRlJBQ1RJT04gbXVzdCBvYmV5IHRoZSBmb2xsb3dpbmc6CiAgKiAgICAgKDAgPCBVU0FCTEVfRlJBQ1RJT04obikgPCBuKSBmb3IgYWxsIG4gPj0gMgogICoKLSAqIFVTQUJMRV9GUkFDVElPTiBzaG91bGQgYmUgdmVyeSBxdWljayB0byBjYWxjdWxhdGUuCi0gKiBGcmFjdGlvbnMgYXJvdW5kIDUvOCB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCisgKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHF1aWNrIHRvIGNhbGN1bGF0ZS4KKyAqIEZyYWN0aW9ucyBhcm91bmQgMS8yIHRvIDIvMyBzZWVtIHRvIHdvcmsgd2VsbCBpbiBwcmFjdGljZS4KICAqLworI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgobikgPDwgMSkvMykKIAotLyogVXNlICgybisxKS8zIHJhdGhlciB0aGFuIDJuKzMgYmVjYXVzZTogaXQgbWFrZXMgbm8gZGlmZmVyZW5jZSBmb3IKLSAqIGNvbWJpbmVkIHRhYmxlcyAodGhlIHR3byBmcmFjdGlvbnMgcm91bmQgdG8gdGhlIHNhbWUgbnVtYmVyIG4gPCApLAotICogYnV0IDIqNC8zIGlzIDIgd2hlcmVhcyAoMio0KzEpLzMgaXMgMyB3aGljaCBwb3RlbnRpYWxseSBzYXZlcyBxdWl0ZQotICogYSBsb3Qgb2Ygc3BhY2UgZm9yIHNtYWxsLCBzcGxpdCB0YWJsZXMgKi8KLSNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKChuKSA8PCAxKSsxKS8zKQorLyogRVNUSU1BVEVfU0laRSBpcyByZXZlcnNlIGZ1bmN0aW9uIG9mIFVTQUJMRV9GUkFDVElPTi4KKyAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmVzZXJ2ZSBlbm91Z2ggc2l6ZSB0byBpbnNlcnQgbiBlbnRyaWVzIHdpdGhvdXQKKyAqIHJlc2l6aW5nLgorICovCisjZGVmaW5lIEVTVElNQVRFX1NJWkUobikgICgoKG4pKjMpID4+IDEpCiAKLS8qIEFsdGVybmF0aXZlIGZyYWN0aW9uIHRoYXQgaXMgb3RoZXJ3aXNlIGNsb3NlIGVub3VnaCB0byAoMm4rMSkvMyB0byBtYWtlCisvKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gMm4vMyB0byBtYWtlCiAgKiBsaXR0bGUgZGlmZmVyZW5jZS4gOCAqIDIvMyA9PSA4ICogNS84ID09IDUuIDE2ICogMi8zID09IDE2ICogNS84ID09IDEwLgogICogMzIgKiAyLzMgPSAyMSwgMzIgKiA1LzggPSAyMC4KICAqIEl0cyBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBpcyBmYXN0ZXIgdG8gY29tcHV0ZSBvbiBtYWNoaW5lcyB3aXRoIHNsb3cgZGl2aXNpb24uCiAgKiAjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKChuKSA+PiAxKSArICgobikgPj4gMikgLSAoKG4pID4+IDMpKQotKi8KKyAqLwogCiAvKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4KICAqIEN1cnJlbnRseSBzZXQgdG8gdXNlZCoyICsgY2FwYWNpdHkvMi4KQEAgLTMwMCw2MSArNDE5LDE1NSBAQAogICogKHdoaWNoIGNhbm5vdCBmYWlsIGFuZCB0aHVzIGNhbiBkbyBubyBhbGxvY2F0aW9uKS4KICAqLwogc3RhdGljIFB5RGljdEtleXNPYmplY3QgZW1wdHlfa2V5c19zdHJ1Y3QgPSB7Ci0gICAgICAgIDIsIC8qIGRrX3JlZmNudCAxIGZvciB0aGlzIHN0cnVjdCwgMSBmb3IgZHVtbXlfc3RydWN0ICovCisgICAgICAgIDEsIC8qIGRrX3JlZmNudCAqLwogICAgICAgICAxLCAvKiBka19zaXplICovCiAgICAgICAgIGxvb2tkaWN0X3NwbGl0LCAvKiBka19sb29rdXAgKi8KICAgICAgICAgMCwgLyogZGtfdXNhYmxlIChpbW11dGFibGUpICovCi0gICAgICAgIHsKLSAgICAgICAgICAgIHsgMCwgMCwgMCB9IC8qIGRrX2VudHJpZXMgKGVtcHR5KSAqLwotICAgICAgICB9CisgICAgICAgIDAsIC8qIGRrX25lbnRyaWVzICovCisgICAgICAgIC5ka19pbmRpY2VzID0geyAuYXNfMSA9IHtES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWX19LAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICplbXB0eV92YWx1ZXNbMV0gPSB7IE5VTEwgfTsKIAogI2RlZmluZSBQeV9FTVBUWV9LRVlTICZlbXB0eV9rZXlzX3N0cnVjdAogCisvKiBVbmNvbW1lbnQgdG8gY2hlY2sgdGhlIGRpY3QgY29udGVudCBpbiBfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKSAqLworLyogI2RlZmluZSBERUJVR19QWURJQ1QgKi8KKworCisjaWZkZWYgUHlfREVCVUcKK3N0YXRpYyBpbnQKK19QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShQeURpY3RPYmplY3QgKm1wKQoreworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBpbnQgc3BsaXR0ZWQgPSBfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApOworICAgIFB5X3NzaXplX3QgdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKGtleXMtPmRrX3NpemUpOworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGk7CisjZW5kaWYKKworICAgIGFzc2VydCgwIDw9IG1wLT5tYV91c2VkICYmIG1wLT5tYV91c2VkIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIoa2V5cy0+ZGtfc2l6ZSkpOworICAgIGFzc2VydCgwIDw9IGtleXMtPmRrX3VzYWJsZQorICAgICAgICAgICAmJiBrZXlzLT5ka191c2FibGUgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoMCA8PSBrZXlzLT5ka19uZW50cmllcworICAgICAgICAgICAmJiBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworICAgIGFzc2VydChrZXlzLT5ka191c2FibGUgKyBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworCisgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAvKiBjb21iaW5lZCB0YWJsZSAqLworICAgICAgICBhc3NlcnQoa2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgIH0KKworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIGZvciAoaT0wOyBpIDwga2V5cy0+ZGtfc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X3NzaXplX3QgaXggPSBka19nZXRfaW5kZXgoa2V5cywgaSk7CisgICAgICAgIGFzc2VydChES0lYX0RVTU1ZIDw9IGl4ICYmIGl4IDw9IHVzYWJsZSk7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCB1c2FibGU7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZW50cnkgPSAmZW50cmllc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKmtleSA9IGVudHJ5LT5tZV9rZXk7CisKKyAgICAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKKyAgICAgICAgICAgICAgICBhc3NlcnQoaGFzaCAhPSAtMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV9oYXNoID09IGhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogdGVzdF9kaWN0IGZhaWxzIGlmIFB5T2JqZWN0X0hhc2goKSBpcyBjYWxsZWQgYWdhaW4gKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX2hhc2ggIT0gLTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgLyogc3BsaXR0ZWQgdGFibGUgKi8KKyAgICAgICAgZm9yIChpPTA7IGkgPCBtcC0+bWFfdXNlZDsgaSsrKSB7CisgICAgICAgICAgICBhc3NlcnQobXAtPm1hX3ZhbHVlc1tpXSAhPSBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworCiBzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXNfb2JqZWN0KFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpkazsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKyAgICBQeV9zc2l6ZV90IGVzLCB1c2FibGU7CiAKLSAgICBhc3NlcnQoc2l6ZSA+PSBQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkUpOwogICAgIGFzc2VydChJU19QT1dFUl9PRl8yKHNpemUpKTsKLSAgICBkayA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKwotICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiAoc2l6ZS0xKSk7Ci0gICAgaWYgKGRrID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisgICAgaWYgKHNpemUgPD0gMHhmZikgeworICAgICAgICBlcyA9IDE7CisgICAgfQorICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmKSB7CisgICAgICAgIGVzID0gMjsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgZXMgPSA0OworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBlcyA9IHNpemVvZihQeV9zc2l6ZV90KTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSBQeURpY3RfTUlOU0laRSAmJiBudW1mcmVla2V5cyA+IDApIHsKKyAgICAgICAgZGsgPSBrZXlzX2ZyZWVfbGlzdFstLW51bWZyZWVrZXlzXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRrID0gUHlPYmplY3RfTUFMTE9DKHNpemVvZihQeURpY3RLZXlzT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXMgKiBzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CisgICAgICAgIGlmIChkayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAgICAgREtfREVCVUdfSU5DUkVGIGRrLT5ka19yZWZjbnQgPSAxOwogICAgIGRrLT5ka19zaXplID0gc2l6ZTsKLSAgICBkay0+ZGtfdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOwotICAgIGVwMCA9ICZkay0+ZGtfZW50cmllc1swXTsKLSAgICAvKiBIYXNoIHZhbHVlIG9mIHNsb3QgMCBpcyB1c2VkIGJ5IHBvcGl0ZW0sIHNvIGl0IG11c3QgYmUgaW5pdGlhbGl6ZWQgKi8KLSAgICBlcDAtPm1lX2hhc2ggPSAwOwotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgZXAwW2ldLm1lX2tleSA9IE5VTEw7Ci0gICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7Ci0gICAgfQorICAgIGRrLT5ka191c2FibGUgPSB1c2FibGU7CiAgICAgZGstPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teTsKKyAgICBkay0+ZGtfbmVudHJpZXMgPSAwOworICAgIG1lbXNldCgmZGstPmRrX2luZGljZXMuYXNfMVswXSwgMHhmZiwgZXMgKiBzaXplKTsKKyAgICBtZW1zZXQoREtfRU5UUklFUyhkayksIDAsIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiBkazsKIH0KIAogc3RhdGljIHZvaWQKIGZyZWVfa2V5c19vYmplY3QoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9ICZrZXlzLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKICAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUoa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICBmb3IgKGkgPSAwLCBuID0ga2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX2tleSk7CiAgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV92YWx1ZSk7CiAgICAgfQotICAgIFB5TWVtX0ZSRUUoa2V5cyk7CisgICAgaWYgKGtleXMtPmRrX3NpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYgbnVtZnJlZWtleXMgPCBQeURpY3RfTUFYRlJFRUxJU1QpIHsKKyAgICAgICAga2V5c19mcmVlX2xpc3RbbnVtZnJlZWtleXMrK10gPSBrZXlzOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoa2V5cyk7CiB9CiAKICNkZWZpbmUgbmV3X3ZhbHVlcyhzaXplKSBQeU1lbV9ORVcoUHlPYmplY3QgKiwgc2l6ZSkKLQogI2RlZmluZSBmcmVlX3ZhbHVlcyh2YWx1ZXMpIFB5TWVtX0ZSRUUodmFsdWVzKQogCiAvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KQEAgLTM4MCw2ICs1OTMsOCBAQAogICAgIG1wLT5tYV9rZXlzID0ga2V5czsKICAgICBtcC0+bWFfdmFsdWVzID0gdmFsdWVzOwogICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbXA7CiB9CiAKQEAgLTM5MCw3ICs2MDUsNyBAQAogICAgIFB5T2JqZWN0ICoqdmFsdWVzOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKIAotICAgIHNpemUgPSBES19TSVpFKGtleXMpOworICAgIHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSk7CiAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKICAgICAgICAgREtfREVDUkVGKGtleXMpOwpAQCAtNDA1LDEyICs2MjAsNDQgQEAKIFB5T2JqZWN0ICoKIFB5RGljdF9OZXcodm9pZCkKIHsKLSAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbmV3X2RpY3Qoa2V5cywgTlVMTCk7CiB9CiAKKy8qIFNlYXJjaCBpbmRleCBvZiBoYXNoIHRhYmxlIGZyb20gb2Zmc2V0IG9mIGVudHJ5IHRhYmxlICovCitzdGF0aWMgUHlfc3NpemVfdAorbG9va2RpY3RfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqaywgUHlfaGFzaF90IGhhc2gsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgc2l6ZV90IGk7CisgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKGspOworICAgIFB5X3NzaXplX3QgaXg7CisKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKyAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICBpZiAoaXggPT0gaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiBES0lYX0VSUk9SOworfQorCiAvKgogVGhlIGJhc2ljIGxvb2t1cCBmdW5jdGlvbiB1c2VkIGJ5IGFsbCBvcGVyYXRpb25zLgogVGhpcyBpcyBiYXNlZCBvbiBBbGdvcml0aG0gRCBmcm9tIEtudXRoIFZvbC4gMywgU2VjLiA2LjQuCkBAIC00MjYsOTMgKzY3Myw2NiBAQAogY29udHJpYnV0aW9ucyBieSBSZWltZXIgQmVocmVuZHMsIEp5cmtpIEFsYWt1aWphbGEsIFZsYWRpbWlyIE1hcmFuZ296b3YgYW5kCiBDaHJpc3RpYW4gVGlzbWVyLgogCi1sb29rZGljdCgpIGlzIGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gTlVMTCBpZiAoYW5kIG9ubHkgaWYpIGEKLWNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiAodGhpcyB3YXMgbmV3IGluIFB5dGhvbiAyLjUpLgorbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZCBvbmx5IGlmKSBhCitjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCiBsb29rZGljdF91bmljb2RlKCkgYmVsb3cgaXMgc3BlY2lhbGl6ZWQgdG8gc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2Ygd2hpY2ggY2FuCi1uZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLgorbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gREtJWF9FUlJPUi4KIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSBpcyBmdXJ0aGVyIHNwZWNpYWxpemVkIGZvciBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZQogdGhlIDxkdW1teT4gdmFsdWUuCi1Gb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkCi13aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgKnZhbHVlX2FkZHIgcG9pbnRzIHRvIHRoZSBtYXRjaGluZyB2YWx1ZQotc2xvdC4KK0ZvciBib3RoLCB3aGVuIHRoZSBrZXkgaXNuJ3QgZm91bmQgYSBES0lYX0VNUFRZIGlzIHJldHVybmVkLiBoYXNocG9zIHJldHVybnMKK3doZXJlIHRoZSBrZXkgaW5kZXggc2hvdWxkIGJlIGluc2VydGVkLgogKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OwotICAgIHNpemVfdCBtYXNrOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIHNpemVfdCBpLCBtYXNrOworICAgIFB5X3NzaXplX3QgaXgsIGZyZWVzbG90OwogICAgIGludCBjbXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAogdG9wOgotICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgZGsgPSBtcC0+bWFfa2V5czsKKyAgICBtYXNrID0gREtfTUFTSyhkayk7CisgICAgZXAwID0gREtfRU5UUklFUyhkayk7CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7Ci0gICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOwotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgewotICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKLSAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwotICAgICAgICAgICAgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKLSAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgewotICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLwotICAgICAgICAgICAgICAgIGdvdG8gdG9wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZyZWVzbG90ID0gTlVMTDsKLSAgICB9CiAKLSAgICAvKiBJbiB0aGUgbG9vcCwgbWVfa2V5ID09IGR1bW15IGlzIGJ5IGZhciAoZmFjdG9yIG9mIDEwMHMpIHRoZQotICAgICAgIGxlYXN0IGxpa2VseSBvdXRjb21lLCBzbyB0ZXN0IGZvciB0aGF0IGxhc3QuICovCi0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgfQorICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpIHsKKyAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7CiAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiBES0lYX0VSUk9SOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewogICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC01MjAsNzIgKzc0MCwxMzEgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgICAgICBmcmVlc2xvdCA9IC0xOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9ICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSkgJiBtYXNrOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChkaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSAoZnJlZXNsb3QgPT0gLTEpID8gKFB5X3NzaXplX3QpaSA6IGZyZWVzbG90OworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGl4OworICAgICAgICB9CisgICAgICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gLTEpCisgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OworICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIERLSVhfRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpeDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgZGljdCB3YXMgbXV0YXRlZCwgcmVzdGFydCAqLworICAgICAgICAgICAgICAgIGdvdG8gdG9wOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KICAgICByZXR1cm4gMDsKIH0KIAogLyogU3BlY2lhbGl6ZWQgdmVyc2lvbiBmb3Igc3RyaW5nLW9ubHkga2V5cyAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZnJlZXNsb3Q7CiAgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydChtcC0+bWFfdmFsdWVzID09IE5VTEwpOwogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CiAgICAgfQogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgIH0KLSAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgZnJlZXNsb3QgPSBlcDsKKyAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICBmcmVlc2xvdCA9IGk7CisgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpIHsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQorICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZXNsb3QgPSBOVUxMOworICAgICAgICBmcmVlc2xvdCA9IC0xOwogICAgIH0KIAotICAgIC8qIEluIHRoZSBsb29wLCBtZV9rZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCi0gICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgZm9yIChzaXplX3QgcGVydHVyYiA9IGhhc2g7OykgeworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOworICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IChmcmVlc2xvdCA9PSAtMSkgPyAoUHlfc3NpemVfdClpIDogZnJlZXNsb3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKLSAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAmJiBlcC0+bWVfa2V5ICE9IGR1bW15Ci0gICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCiAgICAgcmV0dXJuIDA7CkBAIC01OTMsNDAgKzg3Miw2MyBAQAogCiAvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKICAqIHdpbGwgYmUgcHJlc2VudC4gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyA9PSBOVUxMKTsKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOwogICAgIH0KICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC02MzgsMzkgKzk0MCw2MiBAQAogICogU3BsaXQgdGFibGVzIG9ubHkgY29udGFpbiB1bmljb2RlIGtleXMgYW5kIG5vIGR1bW15IGtleXMsCiAgKiBzbyBhbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgbG9va2RpY3RfdW5pY29kZV9ub2R1bW15LgogICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIC8qIG1wIG11c3Qgc3BsaXQgdGFibGUgKi8KKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgZXAgPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKLSAgICAgICAgLyogbG9va2RpY3QgZXhwZWN0cyBhIGNvbWJpbmVkLXRhYmxlLCBzbyBmaXggdmFsdWVfYWRkciAqLwotICAgICAgICBpID0gZXAgLSBlcDA7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgaXggPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKKyAgICAgICAgaWYgKGl4ID49IDApIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpeDsKICAgICB9CisKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC03MDcsMjcgKzEwMzIsMjcgQEAKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBudW1lbnRyaWVzOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSB8fCAhX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob3ApKQogICAgICAgICByZXR1cm47CiAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKikgb3A7Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIG51bWVudHJpZXMgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKHZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoCi0gICAgICAgICAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSkpOworICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwMFtpXS5tZV9rZXkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IGVwMFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8CkBAIC03MzksMzMgKzEwNjQsMzUgQEAKIH0KIAogLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZmluZCBzbG90IGZvciBhbiBpdGVtIGZyb20gaXRzIGhhc2gKLSAqIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkaWN0LgotICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorICAgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCisKKyAgIFRoZSBkaWN0IG11c3QgYmUgY29tYmluZWQuICovCitzdGF0aWMgdm9pZAogZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChoYXNocG9zICE9IE5VTEwpOwogICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKICAgICBpID0gaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgaXggIT0gREtJWF9FTVBUWTspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSAmIG1hc2spOwogICAgIH0KKyAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAqaGFzaHBvcyA9IGkgJiBtYXNrOwogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgIGVsc2UKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgIHJldHVybiBlcDsKKyAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTc4NCw1OCArMTExMSw4OCBAQAogewogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDA7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKIAogICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgaXggPSBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOwotICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOwotICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAoc2VlIGlzc3VlICMyMjY1MykgKi8KKworICAgIC8qIFdoZW4gaW5zZXJ0aW9uIG9yZGVyIGlzIGRpZmZlcmVudCBmcm9tIHNoYXJlZCBrZXksIHdlIGNhbid0IHNoYXJlCisgICAgICogdGhlIGtleSBhbnltb3JlLiAgQ29udmVydCB0aGlzIGluc3RhbmNlIHRvIGNvbWJpbmUgdGFibGUuCisgICAgICovCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkgJiYKKyAgICAgICAgKChpeCA+PSAwICYmICp2YWx1ZV9hZGRyID09IE5VTEwgJiYgbXAtPm1hX3VzZWQgIT0gaXgpIHx8CisgICAgICAgICAoaXggPT0gREtJWF9FTVBUWSAmJiBtcC0+bWFfdXNlZCAhPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpKSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBpeCA9IERLSVhfRU1QVFk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKLSAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KLSAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIC8qIEluc2VydCBpbnRvIG5ldyBzbG90LiAqLworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKLSAgICAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOwotICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICB9CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMpOworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICAgICAgYXNzZXJ0IChtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPT0gTlVMTCk7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW21wLT5tYV9rZXlzLT5ka19uZW50cmllc10gPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKLSAgICAgICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgbXAtPm1hX3VzZWQrKzsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMrKzsKKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7CisgICAgICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCisgICAgYXNzZXJ0KHZhbHVlX2FkZHIgIT0gTlVMTCk7CisKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICAgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOworCisgICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyIChzZWUgaXNzdWUgIzIyNjUzKSAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBwZW5kaW5nIHN0YXRlICovCisgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChpeCA9PSBtcC0+bWFfdXNlZCk7CisgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKKyAgICBtcC0+bWFfdXNlZCsrOworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04NTQsMjQgKzEyMTEsMjQgQEAKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIFB5RGljdEtleXNPYmplY3QgKmsgPSBtcC0+bWFfa2V5czsKICAgICBzaXplX3QgbWFzayA9IChzaXplX3QpREtfU0laRShrKS0xOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmay0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCiAgICAgYXNzZXJ0KGstPmRrX2xvb2t1cCAhPSBOVUxMKTsKICAgICBhc3NlcnQodmFsdWUgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoa2V5ICE9IGR1bW15KTsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBrLT5ka19sb29rdXAgPT0gbG9va2RpY3QpOwogICAgIGkgPSBoYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgZGtfZ2V0X2luZGV4KGssIGkpICE9IERLSVhfRU1QVFk7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKICAgICB9CisgICAgZXAgPSAmZXAwW2stPmRrX25lbnRyaWVzXTsKICAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOworICAgIGRrX3NldF9pbmRleChrLCBpLCBrLT5ka19uZW50cmllcyk7CisgICAgay0+ZGtfbmVudHJpZXMrKzsKICAgICBlcC0+bWVfa2V5ID0ga2V5OwogICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKQEAgLTg5MCwxMyArMTI0NywxMyBAQAogc3RhdGljIGludAogZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpCiB7Ci0gICAgUHlfc3NpemVfdCBuZXdzaXplOworICAgIFB5X3NzaXplX3QgaSwgbmV3c2l6ZTsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpvbGRrZXlzOwogICAgIFB5T2JqZWN0ICoqb2xkdmFsdWVzOwotICAgIFB5X3NzaXplX3QgaSwgb2xkc2l6ZTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwOwogCi0vKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KLSAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKKyAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKQEAgLTkxNCw1NCArMTI3MSw0MSBAQAogICAgIH0KICAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KQogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgb2xkc2l6ZSA9IERLX1NJWkUob2xka2V5cyk7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IE5VTEw7Ci0gICAgLyogSWYgZW1wdHkgdGhlbiBub3RoaW5nIHRvIGNvcHkgc28ganVzdCByZXR1cm4gKi8KLSAgICBpZiAob2xkc2l6ZSA9PSAxKSB7Ci0gICAgICAgIGFzc2VydChvbGRrZXlzID09IFB5X0VNUFRZX0tFWVMpOwotICAgICAgICBES19ERUNSRUYob2xka2V5cyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBlcDAgPSBES19FTlRSSUVTKG9sZGtleXMpOwogICAgIC8qIE1haW4gbG9vcCBiZWxvdyBhc3N1bWVzIHdlIGNhbiB0cmFuc2ZlciByZWZjb3VudCB0byBuZXcga2V5cwogICAgICAqIGFuZCB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiBtZV92YWx1ZS4KICAgICAgKiBJbmNyZW1lbnQgcmVmLWNvdW50cyBhbmQgY29weSB2YWx1ZXMgaGVyZSB0byBjb21wZW5zYXRlCiAgICAgICogVGhpcyAocmVzaXppbmcgYSBzcGxpdCB0YWJsZSkgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcmFyZSAqLwogICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRrZXlzLT5ka19uZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAob2xkdmFsdWVzW2ldICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYob2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXkpOwotICAgICAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBvbGR2YWx1ZXNbaV07CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVwMFtpXS5tZV9rZXkpOworICAgICAgICAgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IG9sZHZhbHVlc1tpXTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAvKiBNYWluIGxvb3AgKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzW2ldOworICAgIGZvciAoaSA9IDA7IGkgPCBvbGRrZXlzLT5ka19uZW50cmllczsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZlcDBbaV07CiAgICAgICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gZHVtbXkpOwogICAgICAgICAgICAgaW5zZXJ0ZGljdF9jbGVhbihtcCwgZXAtPm1lX2tleSwgZXAtPm1lX2hhc2gsIGVwLT5tZV92YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZSAtPSBtcC0+bWFfdXNlZDsKICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKICAgICAgICAgLyogTlVMTCBvdXQgbWVfdmFsdWUgc2xvdCBpbiBvbGRrZXlzLCBpbiBjYXNlIGl0IHdhcyBzaGFyZWQgKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykKLSAgICAgICAgICAgIG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUgPSBOVUxMOwotICAgICAgICBhc3NlcnQob2xkdmFsdWVzICE9IGVtcHR5X3ZhbHVlcyk7Ci0gICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRrZXlzLT5ka19uZW50cmllczsgaSsrKQorICAgICAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gTlVMTDsKICAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOworICAgICAgICBpZiAob2xkdmFsdWVzICE9IGVtcHR5X3ZhbHVlcykgeworICAgICAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF9zcGxpdCk7Ci0gICAgICAgIGlmIChvbGRrZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KSB7Ci0gICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm9sZGtleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGVwMFtpXS5tZV9rZXkgPT0gZHVtbXkpCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKLSAgICAgICAgREtfREVCVUdfREVDUkVGIFB5TWVtX0ZSRUUob2xka2V5cyk7CisgICAgICAgIERLX0RFQlVHX0RFQ1JFRiBQeU9iamVjdF9GUkVFKG9sZGtleXMpOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTk5MSw4ICsxMzM1LDggQEAKICAgICAgICAgfQogICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpOwogICAgICAgICAvKiBDb3B5IHZhbHVlcyBpbnRvIGEgbmV3IGFycmF5ICovCi0gICAgICAgIGVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICAgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgICAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgc2l6ZSA9IFVTQUJMRV9GUkFDVElPTihES19TSVpFKG1wLT5tYV9rZXlzKSk7CiAgICAgICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLApAQCAtMTAxNSw3ICsxMzU5LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXM7Ci0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CiAgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CiAgICAgICAgICBuZXdzaXplIDw8PSAxKQogICAgICAgICA7CkBAIC0xMDM5LDggKzEzODMsOCBAQAogUHlEaWN0X0dldEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIApAQCAtMTA2NiwxNSArMTQxMCwxNSBAQAogICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCiAgICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CiAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKGl4IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgICAgIGlmIChpeCA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTA4MiwzOSArMTQyNiwyNSBAQAogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAorLyogU2FtZSBhcyBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigpIGJ1dCB3aXRoIGhhc2ggc3VwcGxpZWQgYnkgY2FsbGVyLgorICAgVGhpcyByZXR1cm5zIE5VTEwgKndpdGgqIGFuIGV4Y2VwdGlvbiBzZXQgaWYgYW4gZXhjZXB0aW9uIG9jY3VycmVkLgorICAgSXQgcmV0dXJucyBOVUxMICp3aXRob3V0KiBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBrZXkgd2Fzbid0IHByZXNlbnQuCisqLwogUHlPYmplY3QgKgogX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogeworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAotICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKKyAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogV2UgY2FuIGFycml2ZSBoZXJlIHdpdGggYSBOVUxMIHRzdGF0ZSBkdXJpbmcgaW5pdGlhbGl6YXRpb246IHRyeQotICAgICAgIHJ1bm5pbmcgInB5dGhvbiAtV2kiIGZvciBhbiBleGFtcGxlIHJlbGF0ZWQgdG8gc3RyaW5nIGludGVybmluZy4KLSAgICAgICBMZXQncyBqdXN0IGhvcGUgdGhhdCBubyBleGNlcHRpb24gb2NjdXJzIHRoZW4uLi4gIFRoaXMgbXVzdCBiZQotICAgICAgIF9QeVRocmVhZFN0YXRlX0N1cnJlbnQgYW5kIG5vdCBQeVRocmVhZFN0YXRlX0dFVCgpIGJlY2F1c2UgaW4gZGVidWcKLSAgICAgICBtb2RlLCB0aGUgbGF0dGVyIGNvbXBsYWlucyBpZiB0c3RhdGUgaXMgTlVMTC4gKi8KLSAgICB0c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKLSAgICBpZiAodHN0YXRlICE9IE5VTEwgJiYgdHN0YXRlLT5jdXJleGNfdHlwZSAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KLSAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOwotICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOwotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KLSAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4IDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuICp2YWx1ZV9hZGRyOwogfQpAQCAtMTEyNiw5ICsxNDU2LDkgQEAKIFB5T2JqZWN0ICoKIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5RGljdE9iamVjdCptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CkBAIC0xMTQ0LDggKzE0NzQsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CkBAIC0xMTYwLDM5ICsxNDkwLDQwIEBACiAgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKGRwLCBrdik7CiB9CiAKLS8qIEZhc3QgdmVyc2lvbiBvZiBnbG9iYWwgdmFsdWUgbG9va3VwLgorLyogRmFzdCB2ZXJzaW9uIG9mIGdsb2JhbCB2YWx1ZSBsb29rdXAgKExPQURfR0xPQkFMKS4KICAqIExvb2t1cCBpbiBnbG9iYWxzLCB0aGVuIGJ1aWx0aW5zLgorICoKKyAqIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQgKGV4OiBjb21wdXRpbmcgdGhlCisgKiBrZXkgaGFzaCBmYWlsZWQsIGtleSBjb21wYXJpc29uIGZhaWxlZCwgLi4uKS4gUmV0dXJuIE5VTEwgaWYgdGhlIGtleSBkb2Vzbid0CisgKiBleGlzdC4gUmV0dXJuIHRoZSB2YWx1ZSBpZiB0aGUga2V5IGV4aXN0cy4KICAqLwogUHlPYmplY3QgKgogX1B5RGljdF9Mb2FkR2xvYmFsKFB5RGljdE9iamVjdCAqZ2xvYmFscywgUHlEaWN0T2JqZWN0ICpidWlsdGlucywgUHlPYmplY3QgKmtleSkKIHsKLSAgICBQeU9iamVjdCAqeDsKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7Ci0gICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKLSAgICAgICAgaWYgKGhhc2ggIT0gLTEpIHsKLSAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplOwotICAgICAgICAgICAgZSA9IGdsb2JhbHMtPm1hX2tleXMtPmRrX2xvb2t1cChnbG9iYWxzLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKLSAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICBlID0gYnVpbHRpbnMtPm1hX2tleXMtPmRrX2xvb2t1cChidWlsdGlucywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQorICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgeCA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWdsb2JhbHMsIGtleSk7Ci0gICAgaWYgKHggIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisKKyAgICAvKiBuYW1lc3BhY2UgMTogZ2xvYmFscyAqLworICAgIGl4ID0gZ2xvYmFscy0+bWFfa2V5cy0+ZGtfbG9va3VwKGdsb2JhbHMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopYnVpbHRpbnMsIGtleSk7CisgICAgaWYgKGl4ICE9IERLSVhfRU1QVFkgJiYgKnZhbHVlX2FkZHIgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICp2YWx1ZV9hZGRyOworCisgICAgLyogbmFtZXNwYWNlIDI6IGJ1aWx0aW5zICovCisgICAgaXggPSBidWlsdGlucy0+bWFfa2V5cy0+ZGtfbG9va3VwKGJ1aWx0aW5zLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gKnZhbHVlX2FkZHI7CiB9CiAKIC8qIENBVVRJT046IFB5RGljdF9TZXRJdGVtKCkgbXVzdCBndWFyYW50ZWUgdGhhdCBpdCB3b24ndCByZXNpemUgdGhlCkBAIC0xMjQ3LDE2ICsxNTc4LDggQEAKIGludAogUHlEaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewotICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwotICAgIFB5T2JqZWN0ICpvbGRfa2V5LCAqb2xkX3ZhbHVlOwotICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAotICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBhc3NlcnQoa2V5KTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKQEAgLTEyNjQsMzEgKzE1ODcsMTQgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7Ci0gICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKLSAgICBtcC0+bWFfdXNlZC0tOwotICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7Ci0gICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7Ci0gICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gX1B5RGljdF9EZWxJdGVtX0tub3duSGFzaChvcCwga2V5LCBoYXNoKTsKIH0KIAogaW50CiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqb2xkX2tleSwgKm9sZF92YWx1ZTsKQEAgLTEzMDEsMjQgKzE2MDcsMzggQEAKICAgICBhc3NlcnQoa2V5KTsKICAgICBhc3NlcnQoaGFzaCAhPSAtMSk7CiAgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoKnZhbHVlX2FkZHIgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcykgPT0gaXgpOworCisgICAgLy8gU3BsaXQgdGFibGUgZG9lc24ndCBhbGxvdyBkZWxldGlvbi4gIENvbWJpbmUgaXQuCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICB9CisKICAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICBhc3NlcnQob2xkX3ZhbHVlICE9IE5VTEwpOwogICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7Ci0gICAgICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgICAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKLSAgICB9CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBlcCA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpeF07CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBES0lYX0RVTU1ZKTsKKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CisgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CisgICAgUHlfREVDUkVGKG9sZF9rZXkpOwogICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOworCisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMzQyLDkgKzE2NjIsMTAgQEAKICAgICBtcC0+bWFfa2V5cyA9IFB5X0VNUFRZX0tFWVM7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IGVtcHR5X3ZhbHVlczsKICAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKICAgICAvKiAuLi50aGVuIGNsZWFyIHRoZSBrZXlzIGFuZCB2YWx1ZXMgKi8KICAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgbiA9IERLX1NJWkUob2xka2V5cyk7CisgICAgICAgIG4gPSBvbGRrZXlzLT5ka19uZW50cmllczsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgIFB5X0NMRUFSKG9sZHZhbHVlc1tpXSk7CiAgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CkBAIC0xMzU0LDQyICsxNjc1LDU5IEBACiAgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CiAgICAgfQorICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKIH0KIAotLyogUmV0dXJucyAtMSBpZiBubyBtb3JlIGl0ZW1zIChvciBvcCBpcyBub3QgYSBkaWN0KSwKLSAqIGluZGV4IG9mIGl0ZW0gb3RoZXJ3aXNlLiBTdG9yZXMgdmFsdWUgaW4gcHZhbHVlCisvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24KKyAqIHRvIHRoZSBrZXkgYW5kIHZhbHVlLgorICogUmV0dXJuIDEgb24gc3VjY2VzcywgcmV0dXJuIDAgd2hlbiB0aGUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5CisgKiAob3IgaWYgb3AgaXMgbm90IGEgZGljdGlvbmFyeSkKICAqLwotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1kaWN0X25leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICoqcHZhbHVlKQoraW50CitfUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksCisgICAgICAgICAgICAgUHlPYmplY3QgKipwdmFsdWUsIFB5X2hhc2hfdCAqcGhhc2gpCiB7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7Ci0KKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnlfcHRyOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBpID0gKnBwb3M7CisgICAgbiA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKKyAgICBpZiAoKHNpemVfdClpID49IChzaXplX3QpbikKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFsdWVfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbnRyeV9wdHIgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaV07CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICAgICAgZW50cnlfcHRyID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHZhbHVlID0gZW50cnlfcHRyLT5tZV92YWx1ZTsKICAgICB9Ci0gICAgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKLSAgICB9Ci0gICAgaWYgKGkgPiBtYXNrKQotICAgICAgICByZXR1cm4gLTE7CisgICAgKnBwb3MgPSBpKzE7CisgICAgaWYgKHBrZXkpCisgICAgICAgICpwa2V5ID0gZW50cnlfcHRyLT5tZV9rZXk7CisgICAgaWYgKHBoYXNoKQorICAgICAgICAqcGhhc2ggPSBlbnRyeV9wdHItPm1lX2hhc2g7CiAgICAgaWYgKHB2YWx1ZSkKLSAgICAgICAgKnB2YWx1ZSA9ICp2YWx1ZV9wdHI7Ci0gICAgcmV0dXJuIGk7CisgICAgICAgICpwdmFsdWUgPSB2YWx1ZTsKKyAgICByZXR1cm4gMTsKIH0KIAogLyoKQEAgLTEzOTksOSArMTczNywxMiBAQAogICogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKICAqICAgICBpID0gMDsgICAjIGltcG9ydGFudCEgIGkgc2hvdWxkIG5vdCBvdGhlcndpc2UgYmUgY2hhbmdlZCBieSB5b3UKICAqICAgICB3aGlsZSAoUHlEaWN0X05leHQoeW91cmRpY3QsICZpLCAma2V5LCAmdmFsdWUpKSB7Ci0gKiAgICAgICAgICAgICAgUmVmZXIgdG8gYm9ycm93ZWQgcmVmZXJlbmNlcyBpbiBrZXkgYW5kIHZhbHVlLgorICogICAgICAgICBSZWZlciB0byBib3Jyb3dlZCByZWZlcmVuY2VzIGluIGtleSBhbmQgdmFsdWUuCiAgKiAgICAgfQogICoKKyAqIFJldHVybiAxIG9uIHN1Y2Nlc3MsIHJldHVybiAwIHdoZW4gdGhlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeQorICogKG9yIGlmIG9wIGlzIG5vdCBhIGRpY3Rpb25hcnkpCisgKgogICogQ0FVVElPTjogIEluIGdlbmVyYWwsIGl0IGlzbid0IHNhZmUgdG8gdXNlIFB5RGljdF9OZXh0IGluIGEgbG9vcCB0aGF0CiAgKiBtdXRhdGVzIHRoZSBkaWN0LiAgT25lIGV4Y2VwdGlvbjogIGl0IGlzIHNhZmUgaWYgdGhlIGxvb3AgbWVyZWx5IGNoYW5nZXMKICAqIHRoZSB2YWx1ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBrZXlzIChidXQgZG9lc24ndCBpbnNlcnQgbmV3IGtleXMgb3IKQEAgLTE0MTAsNDQgKzE3NTEsMjIgQEAKIGludAogUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksIFB5T2JqZWN0ICoqcHZhbHVlKQogewotICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgICpwcG9zID0gaSsxOwotICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKLSAgICByZXR1cm4gMTsKLX0KLQotLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfTmV4dCB0aGF0IHJldHVybnMgYSBoYXNoIHZhbHVlIGluIGFkZGl0aW9uCi0gKiB0byB0aGUga2V5IGFuZCB2YWx1ZS4KLSAqLwotaW50Ci1fUHlEaWN0X05leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90ICpwcG9zLCBQeU9iamVjdCAqKnBrZXksCi0gICAgICAgICAgICAgUHlPYmplY3QgKipwdmFsdWUsIFB5X2hhc2hfdCAqcGhhc2gpCi17Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgKnBwb3MgPSBpKzE7Ci0gICAgKnBoYXNoID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfaGFzaDsKLSAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIF9QeURpY3RfTmV4dChvcCwgcHBvcywgcGtleSwgcHZhbHVlLCBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBkaWN0LnBvcCgpLiAqLwogUHlPYmplY3QgKgotX1B5RGljdF9Qb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmx0KQorX1B5RGljdF9Qb3AoUHlPYmplY3QgKmRpY3QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICpkZWZsdCkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4LCBoYXNocG9zOwogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OwogICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKKworICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOworICAgIG1wID0gKFB5RGljdE9iamVjdCAqKWRpY3Q7CiAKICAgICBpZiAobXAtPm1hX3VzZWQgPT0gMCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKQEAgLTE0NjMsMTEgKzE3ODIsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOwotICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgaWYgKGRlZmx0KSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZGVmbHQpOwogICAgICAgICAgICAgcmV0dXJuIGRlZmx0OwpAQCAtMTQ3NSwxNSArMTc5MywyOSBAQAogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCisgICAgLy8gU3BsaXQgdGFibGUgZG9lc24ndCBhbGxvdyBkZWxldGlvbi4gIENvbWJpbmUgaXQuCisgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgIH0KKworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGFzc2VydChvbGRfdmFsdWUgIT0gTlVMTCk7CiAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgREtJWF9EVU1NWSk7CisgICAgZXAgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaXhdOworICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKKyAgICBQeV9ERUNSRUYob2xkX2tleSk7CisKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIG9sZF92YWx1ZTsKIH0KIApAQCAtMTUwOCw3ICsxODQwLDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5X1NJWkUoaXRlcmFibGUpKSkgeworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIEVTVElNQVRFX1NJWkUoUHlfU0laRShpdGVyYWJsZSkpKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE1MjcsNyArMTg1OSw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7CiAKLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgRVNUSU1BVEVfU0laRShQeVNldF9HRVRfU0laRShpdGVyYWJsZSkpKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE1ODcsNyArMTkxOSw3IEBACiAgICAgUHlfVFJBU0hDQU5fU0FGRV9CRUdJTihtcCkKICAgICBpZiAodmFsdWVzICE9IE5VTEwpIHsKICAgICAgICAgaWYgKHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsdWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyZWVfdmFsdWVzKHZhbHVlcyk7CkBAIC0xNjk5LDggKzIwMzEsOCBAQAogZGljdF9zdWJzY3JpcHQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeU9iamVjdCAqdjsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKQEAgLTE3MDksMTEgKzIwNDEsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9ICp2YWx1ZV9hZGRyOwotICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3QobXApKSB7CiAgICAgICAgICAgICAvKiBMb29rIHVwIF9fbWlzc2luZ19fIG1ldGhvZCBpZiB3ZSdyZSBhIHN1YmNsYXNzLiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1pc3NpbmcsICpyZXM7CkBAIC0xNzMxLDggKzIwNjIsOCBAQAogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKHYpOworICAgIHYgPSAqdmFsdWVfYWRkcjsKKyAgICBQeV9JTkNSRUYodik7CiAgICAgcmV0dXJuIHY7CiB9CiAKQEAgLTE3NzIsOCArMjEwMyw4IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9Ci0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgc2l6ZSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewogICAgICAgICB2YWx1ZV9wdHIgPSBtcC0+bWFfdmFsdWVzOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CkBAIC0xODAwLDYgKzIxMzEsNyBAQAogewogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlfc3NpemVfdCBzaXplLCBuLCBvZmZzZXQ7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKQEAgLTE4MTUsMTMgKzIxNDcsMTQgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXS5tZV92YWx1ZTsKKyAgICAgICAgdmFsdWVfcHRyID0gJmVwWzBdLm1lX3ZhbHVlOwogICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwogICAgIH0KICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgewpAQCAtMTg3Miw4ICsyMjA1LDggQEAKICAgICAgICAgZ290byBhZ2FpbjsKICAgICB9CiAgICAgLyogTm90aGluZyB3ZSBkbyBiZWxvdyBtYWtlcyBhbnkgZnVuY3Rpb24gY2FsbHMuICovCi0gICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllczsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKQEAgLTE5MTcsNyArMjI1MCw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpY3RfdXBkYXRlX2NvbW1vbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLCBjaGFyICptZXRobmFtZSkKK2RpY3RfdXBkYXRlX2NvbW1vbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1ldGhuYW1lKQogewogICAgIFB5T2JqZWN0ICphcmcgPSBOVUxMOwogICAgIGludCByZXN1bHQgPSAwOwpAQCAtMjAxOSw2ICsyMzUzLDcgQEAKICAgICB9CiAKICAgICBpID0gMDsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KChQeURpY3RPYmplY3QgKilkKSk7CiAgICAgZ290byBSZXR1cm47CiBGYWlsOgogICAgIFB5X1hERUNSRUYoaXRlbSk7CkBAIC0yMDI5LDE4ICsyMzY0LDE0IEBACiAgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QoaSwgUHlfc3NpemVfdCwgaW50KTsKIH0KIAotaW50Ci1QeURpY3RfVXBkYXRlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYikKLXsKLSAgICByZXR1cm4gUHlEaWN0X01lcmdlKGEsIGIsIDEpOwotfQotCi1pbnQKLVB5RGljdF9NZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKK3N0YXRpYyBpbnQKK2RpY3RfbWVyZ2UoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcCwgKm90aGVyOwogICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cnk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5LCAqZXAwOworCisgICAgYXNzZXJ0KDAgPD0gb3ZlcnJpZGUgJiYgb3ZlcnJpZGUgPD0gMik7CiAKICAgICAvKiBXZSBhY2NlcHQgZm9yIHRoZSBhcmd1bWVudCBlaXRoZXIgYSBjb25jcmV0ZSBkaWN0aW9uYXJ5IG9iamVjdCwKICAgICAgKiBvciBhbiBhYnN0cmFjdCAibWFwcGluZyIgb2JqZWN0LiAgRm9yIHRoZSBmb3JtZXIsIHdlIGNhbiBkbwpAQCAtMjA2NywxMyArMjM5OCwxNiBAQAogICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcgaXRlbXMuICBFeHBlY3QKICAgICAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICAgICAqLwotICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSAqIDMgPCBvdGhlci0+bWFfdXNlZCAqIDIpCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKjIpICE9IDApCisgICAgICAgIGlmIChVU0FCTEVfRlJBQ1RJT04obXAtPm1hX2tleXMtPmRrX3NpemUpIDwgb3RoZXItPm1hX3VzZWQpIHsKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBFU1RJTUFURV9TSVpFKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShvdGhlci0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlcDAgPSBES19FTlRSSUVTKG90aGVyLT5tYV9rZXlzKTsKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IG90aGVyLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICAgICAgICAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgICAgIGVudHJ5ID0gJmVwMFtpXTsKICAgICAgICAgICAgIGtleSA9IGVudHJ5LT5tZV9rZXk7CiAgICAgICAgICAgICBoYXNoID0gZW50cnktPm1lX2hhc2g7CiAgICAgICAgICAgICBpZiAob3RoZXItPm1hX3ZhbHVlcykKQEAgLTIwODUsMTQgKzI0MTksMjggQEAKICAgICAgICAgICAgICAgICBpbnQgZXJyID0gMDsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZSB8fCBQeURpY3RfR2V0SXRlbShhLCBrZXkpID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlID09IDEpCiAgICAgICAgICAgICAgICAgICAgIGVyciA9IGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeURpY3RfR2V0SXRlbV9Lbm93bkhhc2goYSwga2V5LCBoYXNoKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG92ZXJyaWRlICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAgICAgICAgICAgICBpZiAobiAhPSBES19TSVpFKG90aGVyLT5tYV9rZXlzKSkgeworICAgICAgICAgICAgICAgIGlmIChuICE9IG90aGVyLT5tYV9rZXlzLT5ka19uZW50cmllcykgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpY3QgbXV0YXRlZCBkdXJpbmcgdXBkYXRlIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTIxMjEsNyArMjQ2OSwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIGZvciAoa2V5ID0gUHlJdGVyX05leHQoaXRlcik7IGtleTsga2V5ID0gUHlJdGVyX05leHQoaXRlcikpIHsKLSAgICAgICAgICAgIGlmICghb3ZlcnJpZGUgJiYgUHlEaWN0X0dldEl0ZW0oYSwga2V5KSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAob3ZlcnJpZGUgIT0gMSAmJiBQeURpY3RfR2V0SXRlbShhLCBrZXkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTIxNDQsOSArMjQ5OCwyOSBAQAogICAgICAgICAgICAgLyogSXRlcmF0b3IgY29tcGxldGVkLCB2aWEgZXJyb3IgKi8KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeSgoUHlEaWN0T2JqZWN0ICopYSkpOwogICAgIHJldHVybiAwOwogfQogCitpbnQKK1B5RGljdF9VcGRhdGUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQoreworICAgIHJldHVybiBkaWN0X21lcmdlKGEsIGIsIDEpOworfQorCitpbnQKK1B5RGljdF9NZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKK3sKKyAgICAvKiBYWFggRGVwcmVjYXRlIG92ZXJyaWRlIG5vdCBpbiAoMCwgMSkuICovCisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgb3ZlcnJpZGUgIT0gMCk7Cit9CisKK2ludAorX1B5RGljdF9NZXJnZUV4KFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQoreworICAgIHJldHVybiBkaWN0X21lcmdlKGEsIGIsIG92ZXJyaWRlKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfY29weShQeURpY3RPYmplY3QgKm1wKQogewpAQCAtMjE2Nyw3ICsyNTQxLDkgQEAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvOwogICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CiAgICAgICAgIFB5RGljdE9iamVjdCAqc3BsaXRfY29weTsKLSAgICAgICAgUHlPYmplY3QgKipuZXd2YWx1ZXMgPSBuZXdfdmFsdWVzKERLX1NJWkUobXAtPm1hX2tleXMpKTsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKKyAgICAgICAgUHlPYmplY3QgKipuZXd2YWx1ZXM7CisgICAgICAgIG5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgICAgIGlmIChuZXd2YWx1ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBzcGxpdF9jb3B5ID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKQEAgLTIxNzksNyArMjU1NSw3IEBACiAgICAgICAgIHNwbGl0X2NvcHktPm1hX2tleXMgPSBtcC0+bWFfa2V5czsKICAgICAgICAgc3BsaXRfY29weS0+bWFfdXNlZCA9IG1wLT5tYV91c2VkOwogICAgICAgICBES19JTkNSRUYobXAtPm1hX2tleXMpOwotICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IHNpemU7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IG1wLT5tYV92YWx1ZXNbaV07CiAgICAgICAgICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIHNwbGl0X2NvcHktPm1hX3ZhbHVlc1tpXSA9IHZhbHVlOwpAQCAtMjI1MCw4ICsyNjI2LDggQEAKICAgICAgICAgLyogY2FuJ3QgYmUgZXF1YWwgaWYgIyBvZiBlbnRyaWVzIGRpZmZlciAqLwogICAgICAgICByZXR1cm4gMDsKICAgICAvKiBTYW1lICMgb2YgZW50cmllcyAtLSBjaGVjayBhbGwgb2YgJ2VtLiAgRXhpdCBlYXJseSBvbiBhbnkgZGlmZi4gKi8KLSAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShhLT5tYV9rZXlzKTsgaSsrKSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZhLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgIGZvciAoaSA9IDA7IGkgPCBhLT5tYV9rZXlzLT5ka19uZW50cmllczsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZES19FTlRSSUVTKGEtPm1hX2tleXMpW2ldOwogICAgICAgICBQeU9iamVjdCAqYXZhbDsKICAgICAgICAgaWYgKGEtPm1hX3ZhbHVlcykKICAgICAgICAgICAgIGF2YWwgPSBhLT5tYV92YWx1ZXNbaV07CkBAIC0yMjY4LDcgKzI2NDQsNyBAQAogICAgICAgICAgICAgLyogZGl0dG8gZm9yIGtleSAqLwogICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgICAgICAgICAvKiByZXVzZSB0aGUga25vd24gaGFzaCB2YWx1ZSAqLwotICAgICAgICAgICAgaWYgKChiLT5tYV9rZXlzLT5ka19sb29rdXApKGIsIGtleSwgZXAtPm1lX2hhc2gsICZ2YWRkcikgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmICgoYi0+bWFfa2V5cy0+ZGtfbG9va3VwKShiLCBrZXksIGVwLT5tZV9oYXNoLCAmdmFkZHIsIE5VTEwpIDwgMCkKICAgICAgICAgICAgICAgICBidmFsID0gTlVMTDsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBidmFsID0gKnZhZGRyOwpAQCAtMjMyNiw3ICsyNzAyLDcgQEAKIHsKICAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wID0gc2VsZjsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKQEAgLTIzMzUsMTAgKzI3MTEsMTIgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygqdmFsdWVfYWRkciAhPSBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgUHlfUkVUVVJOX1RSVUU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMzQ4LDcgKzI3MjYsNyBAQAogICAgIFB5T2JqZWN0ICpmYWlsb2JqID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZmFpbG9iaikpCkBAIC0yMzYwLDEyICsyNzM4LDEzIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwotICAgIGlmICh2YWwgPT0gTlVMTCkKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKQogICAgICAgICB2YWwgPSBmYWlsb2JqOworICAgIGVsc2UKKyAgICAgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgUHlfSU5DUkVGKHZhbCk7CiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTIzNzQsNDMgKzI3NTMsODggQEAKIFB5RGljdF9TZXREZWZhdWx0KFB5T2JqZWN0ICpkLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmYXVsdG9iaikKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7Ci0gICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnZhbHVlOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrKGQpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorCisgICAgaWYgKG1wLT5tYV92YWx1ZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKLSAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKworICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApICYmCisgICAgICAgICgoaXggPj0gMCAmJiAqdmFsdWVfYWRkciA9PSBOVUxMICYmIG1wLT5tYV91c2VkICE9IGl4KSB8fAorICAgICAgICAgKGl4ID09IERLSVhfRU1QVFkgJiYgbXAtPm1hX3VzZWQgIT0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKSkpIHsKKyAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKGRlZmF1bHRvYmopOworICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgaXggPSBES0lYX0VNUFRZOworICAgIH0KKworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMDsKKyAgICAgICAgdmFsdWUgPSBkZWZhdWx0b2JqOworICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgfQorICAgICAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgZXAgPSAmZXAwW21wLT5tYV9rZXlzLT5ka19uZW50cmllc107CisgICAgICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKTsKICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIGRlZmF1bHRvYmopOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CiAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSBkZWZhdWx0b2JqOwotICAgICAgICB2YWwgPSBkZWZhdWx0b2JqOwotICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBhc3NlcnQobXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID09IE5VTEwpOworICAgICAgICAgICAgbXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgfQogICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOworICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSAwKTsKICAgICB9Ci0gICAgcmV0dXJuIHZhbDsKKyAgICBlbHNlIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlID0gZGVmYXVsdG9iajsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgICAgICBhc3NlcnQoaXggPT0gbXAtPm1hX3VzZWQpOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgICAgIG1wLT5tYV91c2VkKys7CisgICAgICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIH0KKworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDQyLDE3ICsyODY2LDE2IEBACiAgICAgaWYoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3AiLCAxLCAyLCAma2V5LCAmZGVmbHQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBfUHlEaWN0X1BvcChtcCwga2V5LCBkZWZsdCk7CisgICAgcmV0dXJuIF9QeURpY3RfUG9wKChQeU9iamVjdCopbXAsIGtleSwgZGVmbHQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9wb3BpdGVtKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfaGFzaF90IGkgPSAwOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKLQogICAgIC8qIEFsbG9jYXRlIHRoZSByZXN1bHQgdHVwbGUgYmVmb3JlIGNoZWNraW5nIHRoZSBzaXplLiAgQmVsaWV2ZSBpdAogICAgICAqIG9yIG5vdCwgdGhpcyBhbGxvY2F0aW9uIGNvdWxkIHRyaWdnZXIgYSBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpY2gKICAgICAgKiBjb3VsZCBlbXB0eSB0aGUgZGljdCwgc28gaWYgd2UgY2hlY2tlZCB0aGUgc2l6ZSBmaXJzdCBhbmQgdGhhdApAQCAtMjQ3OSw2MSArMjkwMiw1OCBAQAogICAgICAgICB9CiAgICAgfQogICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAvKiBTZXQgZXAgdG8gInRoZSBmaXJzdCIgZGljdCBlbnRyeSB3aXRoIGEgdmFsdWUuICBXZSBhYnVzZSB0aGUgaGFzaAotICAgICAqIGZpZWxkIG9mIHNsb3QgMCB0byBob2xkIGEgc2VhcmNoIGZpbmdlcjoKLSAgICAgKiBJZiBzbG90IDAgaGFzIGEgdmFsdWUsIHVzZSBzbG90IDAuCi0gICAgICogRWxzZSBzbG90IDAgaXMgYmVpbmcgdXNlZCB0byBob2xkIGEgc2VhcmNoIGZpbmdlciwKLSAgICAgKiBhbmQgd2UgdXNlIGl0cyBoYXNoIHZhbHVlIGFzIHRoZSBmaXJzdCBpbmRleCB0byBsb29rLgotICAgICAqLwotICAgIGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeV9zc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICAgICAgaSA9IGVwLT5tZV9oYXNoOwotICAgICAgICAvKiBUaGUgaGFzaCBmaWVsZCBtYXkgYmUgYSByZWFsIGhhc2ggdmFsdWUsIG9yIGl0IG1heSBiZSBhCi0gICAgICAgICAqIGxlZ2l0IHNlYXJjaCBmaW5nZXIsIG9yIGl0IG1heSBiZSBhIG9uY2UtbGVnaXQgc2VhcmNoCi0gICAgICAgICAqIGZpbmdlciB0aGF0J3Mgb3V0IG9mIGJvdW5kcyBub3cgYmVjYXVzZSBpdCB3cmFwcGVkIGFyb3VuZAotICAgICAgICAgKiBvciB0aGUgdGFibGUgc2hydW5rIC0tIHNpbXBseSBtYWtlIHN1cmUgaXQncyBpbiBib3VuZHMgbm93LgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKGkgPiBtYXNrIHx8IGkgPCAxKQotICAgICAgICAgICAgaSA9IDE7ICAgICAgICAgICAgICAvKiBza2lwIHNsb3QgMCAqLwotICAgICAgICB3aGlsZSAoKGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgaWYgKGkgPiBtYXNrKQotICAgICAgICAgICAgICAgIGkgPSAxOwotICAgICAgICB9CisKKyAgICAvKiBQb3AgbGFzdCBpdGVtICovCisgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgaSA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyAtIDE7CisgICAgd2hpbGUgKGkgPj0gMCAmJiBlcDBbaV0ubWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICBpLS07CiAgICAgfQorICAgIGFzc2VydChpID49IDApOworCisgICAgZXAgPSAmZXAwW2ldOworICAgIGogPSBsb29rZGljdF9pbmRleChtcC0+bWFfa2V5cywgZXAtPm1lX2hhc2gsIGkpOworICAgIGFzc2VydChqID49IDApOworICAgIGFzc2VydChka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGopID09IGkpOworICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaiwgREtJWF9EVU1NWSk7CisKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMCwgZXAtPm1lX2tleSk7CiAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXMsIDEsIGVwLT5tZV92YWx1ZSk7Ci0gICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CisgICAgZXAtPm1lX2tleSA9IE5VTEw7CiAgICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKKyAgICAvKiBXZSBjYW4ndCBka191c2FibGUrKyBzaW5jZSB0aGVyZSBpcyBES0lYX0RVTU1ZIGluIGluZGljZXMgKi8KKyAgICBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXMgPSBpOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlID09IE5VTEwpOwotICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX2hhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgaW50CiBkaWN0X3RyYXZlcnNlKFB5T2JqZWN0ICpvcCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUobXAtPm1hX2tleXMpOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOwotICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG1wLT5tYV9rZXlzOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBrZXlzLT5ka19uZW50cmllczsKKworICAgIGlmIChrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgaWYgKGVudHJpZXNbaV0ubWVfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfa2V5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfdmFsdWVzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChlbnRyaWVzW2ldLm1lX3ZhbHVlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI1NTIsMjMgKzI5NzIsMzEgQEAKIFB5X3NzaXplX3QKIF9QeURpY3RfU2l6ZU9mKFB5RGljdE9iamVjdCAqbXApCiB7Ci0gICAgUHlfc3NpemVfdCBzaXplLCByZXM7CisgICAgUHlfc3NpemVfdCBzaXplLCB1c2FibGUsIHJlczsKIAogICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisKICAgICByZXMgPSBfUHlPYmplY3RfU0laRShQeV9UWVBFKG1wKSk7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgIHJlcyArPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0Kik7CisgICAgICAgIHJlcyArPSB1c2FibGUgKiBzaXplb2YoUHlPYmplY3QqKTsKICAgICAvKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBzcGxpdCwgdGhlIGtleXMgcG9ydGlvbiBpcyBhY2NvdW50ZWQtZm9yCiAgICAgICAgaW4gdGhlIHR5cGUgb2JqZWN0LiAqLwogICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpCi0gICAgICAgIHJlcyArPSBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoc2l6ZS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgICAgIHJlcyArPSAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAgICAgLSBQeV9NRU1CRVJfU0laRShQeURpY3RLZXlzT2JqZWN0LCBka19pbmRpY2VzKQorICAgICAgICAgICAgICAgICsgREtfSVhTSVpFKG1wLT5tYV9rZXlzKSAqIHNpemUKKyAgICAgICAgICAgICAgICArIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiByZXM7CiB9CiAKIFB5X3NzaXplX3QKIF9QeURpY3RfS2V5c1NpemUoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICByZXR1cm4gc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsgKERLX1NJWkUoa2V5cyktMSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIHJldHVybiAoc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpCisgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICArIERLX0lYU0laRShrZXlzKSAqIERLX1NJWkUoa2V5cykKKyAgICAgICAgICAgICsgVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUoa2V5cykpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNjU1LDggKzMwODMsOCBAQAogUHlEaWN0X0NvbnRhaW5zKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjY2NSw4ICszMDkzLDEwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgcmV0dXJuIChlcCA9PSBOVUxMKSA/IC0xIDogKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAoaXggIT0gREtJWF9FTVBUWSAmJiAqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfQ29udGFpbnMgdXNlZCB3aGVuIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkga25vd24gKi8KQEAgLTI2NzQsMTEgKzMxMDQsMTMgQEAKIF9QeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlfc3NpemVfdCBpeDsKIAotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBIYWNrIHRvIGltcGxlbWVudCAia2V5IGluIGRpY3QiICovCkBAIC0yNzEyLDExICszMTQ0LDEzIEBACiAgICAgICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKGQpOwogCiAgICAgZC0+bWFfdXNlZCA9IDA7Ci0gICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgZC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkUpOwogICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShkKSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTI5MzcsMTMgKzMzNzEsMTMgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAotc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGtleShkaWN0aXRlcm9iamVjdCAqZGkpCitzdGF0aWMgUHlPYmplY3QqCitkaWN0aXRlcl9pdGVybmV4dGtleShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleTsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0S2V5c09iamVjdCAqazsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjk1NywyNyArMzM5MSwzMCBAQAogICAgIH0KIAogICAgIGkgPSBkaS0+ZGlfcG9zOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgZ290byBmYWlsOwogICAgIGsgPSBkLT5tYV9rZXlzOworICAgIG4gPSBrLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBES19FTlRSSUVTKGspW2ldLm1lX2tleTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZrLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICBtYXNrID0gREtfU0laRShrKS0xOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGspW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIGdvdG8gZmFpbDsKICAgICBkaS0+bGVuLS07Ci0gICAga2V5ID0gay0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgcmV0dXJuIGtleTsKIApAQCAtMzAyMCwxMiArMzQ1NywxMiBAQAogICAgIDAsCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoZGljdGl0ZXJvYmplY3QgKmRpKQorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX2l0ZXJuZXh0dmFsdWUoZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMwMzksMjYgKzM0NzYsMjkgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOwotICAgIGlmIChpIDwgMCB8fCBpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOworICAgIG4gPSBkLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKLSAgICB9Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+IG1hc2spCisgICAgICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHIgPSAmREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmIGVudHJ5X3B0ci0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZW50cnlfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGRpLT5sZW4tLTsKLSAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTMwODksNyArMzUyOSw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpZGljdGl0ZXJfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC0zMTAxLDEyICszNTQxLDEyIEBACiAgICAgMCwKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRpdGVtKGRpY3RpdGVyb2JqZWN0ICpkaSkKK3N0YXRpYyBQeU9iamVjdCAqCitkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQogewogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKnJlc3VsdCA9IGRpLT5kaV9yZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBpLCBuOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwotICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMTIwLDM3ICszNTYwLDQxIEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKKyAgICBuID0gZC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKGQtPm1hX3ZhbHVlcykgewotICAgICAgICB2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFsdWVfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAga2V5ID0gREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXS5tZV9rZXk7CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHIgPSAmREtfRU5UUklFUyhkLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgd2hpbGUgKGkgPCBuICYmIGVudHJ5X3B0ci0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgZW50cnlfcHRyKys7CisgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPj0gbikKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAga2V5ID0gZW50cnlfcHRyLT5tZV9rZXk7CisgICAgICAgIHZhbHVlID0gZW50cnlfcHRyLT5tZV92YWx1ZTsKICAgICB9CiAgICAgZGktPmRpX3BvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIGdvdG8gZmFpbDsKLQorICAgIGRpLT5sZW4tLTsKICAgICBpZiAocmVzdWx0LT5vYl9yZWZjbnQgPT0gMSkgewogICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAwKSk7CiAgICAgICAgIFB5X0RFQ1JFRihQeVR1cGxlX0dFVF9JVEVNKHJlc3VsdCwgMSkpOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXN1bHQgPSBQeVR1cGxlX05ldygyKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKLSAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KQEAgLTM3ODksNyArNDIzMyw3IEBACiBQeURpY3RLZXlzT2JqZWN0ICoKIF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKHZvaWQpCiB7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0zODI1LDcgKzQyNjksNyBAQAogCiBpbnQKIF9QeU9iamVjdERpY3RfU2V0SXRlbShQeVR5cGVPYmplY3QgKnRwLCBQeU9iamVjdCAqKmRpY3RwdHIsCi0gICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIGludCByZXM7CkBAIC0zODU0LDcgKzQyOTgsOCBAQAogICAgICAgICAgICAgICAgIC8qIEVpdGhlciB1cGRhdGUgdHAtPmh0X2NhY2hlZF9rZXlzIG9yIGRlbGV0ZSBpdCAqLwogICAgICAgICAgICAgICAgIGlmIChjYWNoZWQtPmRrX3JlZmNudCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IG1ha2Vfa2V5c19zaGFyZWQoZGljdCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIERLX0RFQ1JFRihjYWNoZWQpOwpAQCAtMzg4NCw1MCArNDMyOSwzIEBACiB7CiAgICAgREtfREVDUkVGKGtleXMpOwogfQotCi0KLS8qIEFSR1NVU0VEICovCi1zdGF0aWMgUHlPYmplY3QgKgotZHVtbXlfcmVwcihQeU9iamVjdCAqb3ApCi17Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZHVtbXkga2V5PiIpOwotfQotCi0vKiBBUkdVU0VEICovCi1zdGF0aWMgdm9pZAotZHVtbXlfZGVhbGxvYyhQeU9iamVjdCogaWdub3JlKQotewotICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gU0VHViBpZgotICAgICAqIHdlIGFjY2lkZW50YWxseSBkZWNyZWYgZHVtbXkta2V5IG91dCBvZiBleGlzdGVuY2UuCi0gICAgICovCi0gICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIDxkdW1teSBrZXk+Iik7Ci19Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgUHlEaWN0RHVtbXlfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQotICAgICI8ZHVtbXkga2V5PiB0eXBlIiwKLSAgICAwLAotICAgIDAsCi0gICAgZHVtbXlfZGVhbGxvYywgICAgICAvKnRwX2RlYWxsb2MqLyAvKm5ldmVyIGNhbGxlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgZHVtbXlfcmVwciwgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLwotfTsKLQotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3QgPSB7Ci0gIF9QeU9iamVjdF9FWFRSQV9JTklUCi0gIDIsICZQeURpY3REdW1teV9UeXBlCi19OwotCmRpZmYgLS1naXQgYS9PYmplY3RzL2VudW1vYmplY3QuYyBiL09iamVjdHMvZW51bW9iamVjdC5jCmluZGV4IGM0NThjZmUuLmRhZTE2NmQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZW51bW9iamVjdC5jCisrKyBiL09iamVjdHMvZW51bW9iamVjdC5jCkBAIC0yNTAsNiArMjUwLDEzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgJlB5SWRfX19yZXZlcnNlZF9fKTsKKyAgICBpZiAocmV2ZXJzZWRfbWV0aCA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXZlcnNlZF9tZXRoKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IHJldmVyc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZXEpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChyZXZlcnNlZF9tZXRoICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocmV2ZXJzZWRfbWV0aCwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXZlcnNlZF9tZXRoKTsKQEAgLTI1OSw4ICsyNjYsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgdG8gcmV2ZXJzZWQoKSBtdXN0IGJlIGEgc2VxdWVuY2UiKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IHJldmVyc2libGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZXEpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDk4MWVhZDIuLmY2M2YwNmEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC01OSwxNSArNTksMTEgQEAKIHN0YXRpYyBpbnQKIEJhc2VFeGNlcHRpb25faW5pdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgdG1wID0gc2VsZi0+YXJnczsKLSAgICBzZWxmLT5hcmdzID0gYXJnczsKLSAgICBQeV9JTkNSRUYoc2VsZi0+YXJncyk7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X0lOQ1JFRihhcmdzKTsKKyAgICBQeV9YU0VUUkVGKHNlbGYtPmFyZ3MsIGFyZ3MpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMzQsNyArMjMwLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIFB5X1hJTkNSRUYodGIpOworICAgIFB5X0lOQ1JFRih0Yik7CiAgICAgUHlfWFNFVFJFRihzZWxmLT50cmFjZWJhY2ssIHRiKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTMyOCwxMSArMzI0LDEwIEBACiAKIC8qIFN0ZWFscyBhIHJlZmVyZW5jZSB0byBjYXVzZSAqLwogdm9pZAotUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkgewotICAgIFB5T2JqZWN0ICpvbGRfY2F1c2UgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZTsKLSAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSA9IGNhdXNlOworUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkKK3sKICAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5zdXBwcmVzc19jb250ZXh0ID0gMTsKLSAgICBQeV9YREVDUkVGKG9sZF9jYXVzZSk7CisgICAgUHlfWFNFVFJFRigoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSwgY2F1c2UpOwogfQogCiBQeU9iamVjdCAqCkBAIC0zNDQsMTAgKzMzOSw5IEBACiAKIC8qIFN0ZWFscyBhIHJlZmVyZW5jZSB0byBjb250ZXh0ICovCiB2b2lkCi1QeUV4Y2VwdGlvbl9TZXRDb250ZXh0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY29udGV4dCkgewotICAgIFB5T2JqZWN0ICpvbGRfY29udGV4dCA9ICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQ7Ci0gICAgKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dCA9IGNvbnRleHQ7Ci0gICAgUHlfWERFQ1JFRihvbGRfY29udGV4dCk7CitQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeV9YU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNvbnRleHQsIGNvbnRleHQpOwogfQogCiAKQEAgLTcxNCw2ICs3MDgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUuIik7CiAKIC8qCisgKiAgICBNb2R1bGVOb3RGb3VuZEVycm9yIGV4dGVuZHMgSW1wb3J0RXJyb3IKKyAqLworCitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfSW1wb3J0RXJyb3IsIE1vZHVsZU5vdEZvdW5kRXJyb3IsIEltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbm90IGZvdW5kLiIpOworCisvKgogICogICAgT1NFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKQEAgLTk5Myw3ICs5OTQsNyBAQAogICAgIHJldHVybiAwOwogCiBlcnJvcjoKLSAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTEwNzMsOCArMTA3NCw3IEBACiAgICAgfQogICAgIGlmIChzZWxmLT5teWVycm5vICYmIHNlbGYtPnN0cmVycm9yKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIltFcnJubyAlU10gJVMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubyA/IHNlbGYtPm15ZXJybm86IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm15ZXJybm8sIHNlbGYtPnN0cmVycm9yKTsKICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwogfQogCkBAIC0yNDc4LDYgKzI0NzgsNyBAQAogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCiAgICAgUFJFX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUFJFX0lOSVQoSW1wb3J0RXJyb3IpCisgICAgUFJFX0lOSVQoTW9kdWxlTm90Rm91bmRFcnJvcikKICAgICBQUkVfSU5JVChPU0Vycm9yKQogICAgIFBSRV9JTklUKEVPRkVycm9yKQogICAgIFBSRV9JTklUKFJ1bnRpbWVFcnJvcikKQEAgLTI1NTAsNiArMjU1MSw3IEBACiAgICAgUE9TVF9JTklUKFN5c3RlbUV4aXQpCiAgICAgUE9TVF9JTklUKEtleWJvYXJkSW50ZXJydXB0KQogICAgIFBPU1RfSU5JVChJbXBvcnRFcnJvcikKKyAgICBQT1NUX0lOSVQoTW9kdWxlTm90Rm91bmRFcnJvcikKICAgICBQT1NUX0lOSVQoT1NFcnJvcikKICAgICBJTklUX0FMSUFTKEVudmlyb25tZW50RXJyb3IsIE9TRXJyb3IpCiAgICAgSU5JVF9BTElBUyhJT0Vycm9yLCBPU0Vycm9yKQpAQCAtMjYxMiw3ICsyNjE0LDkgQEAKICAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFV09VTERCTE9DSyk7CiAgICAgUE9TVF9JTklUKEJyb2tlblBpcGVFcnJvcik7CiAgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVBJUEUpOworI2lmZGVmIEVTSFVURE9XTgogICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVTSFVURE9XTik7CisjZW5kaWYKICAgICBQT1NUX0lOSVQoQ2hpbGRQcm9jZXNzRXJyb3IpOwogICAgIEFERF9FUlJOTyhDaGlsZFByb2Nlc3NFcnJvciwgRUNISUxEKTsKICAgICBQT1NUX0lOSVQoQ29ubmVjdGlvbkFib3J0ZWRFcnJvcik7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZpbGVvYmplY3QuYyBiL09iamVjdHMvZmlsZW9iamVjdC5jCmluZGV4IDIzNGQwN2UuLmY0NDI0MTggMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmlsZW9iamVjdC5jCisrKyBiL09iamVjdHMvZmlsZW9iamVjdC5jCkBAIC0xMjcsNyArMTI3LDcgQEAKIGludAogUHlGaWxlX1dyaXRlT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZiwgaW50IGZsYWdzKQogewotICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKmFyZ3MsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKndyaXRlciwgKnZhbHVlLCAqcmVzdWx0OwogICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIGlmIChmID09IE5VTEwpIHsKQEAgLTE0NiwxNCArMTQ2LDcgQEAKICAgICAgICAgUHlfREVDUkVGKHdyaXRlcik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICBQeV9ERUNSRUYod3JpdGVyKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdCh3cml0ZXIsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEod3JpdGVyLCB2YWx1ZSk7CiAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICBQeV9ERUNSRUYod3JpdGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCmRpZmYgLS1naXQgYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKaW5kZXggZDkyYmVjMy4uMGYzNzYxOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jCisrKyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwpAQCAtMTI0LDExICsxMjQsNDMgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZmxvYXRfZnJvbV9zdHJpbmdfaW5uZXIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4sIHZvaWQgKm9iaikKK3sKKyAgICBkb3VibGUgeDsKKyAgICBjb25zdCBjaGFyICplbmQ7CisgICAgY29uc3QgY2hhciAqbGFzdCA9IHMgKyBsZW47CisgICAgLyogc3RyaXAgc3BhY2UgKi8KKyAgICB3aGlsZSAocyA8IGxhc3QgJiYgUHlfSVNTUEFDRSgqcykpIHsKKyAgICAgICAgcysrOworICAgIH0KKworICAgIHdoaWxlIChzIDwgbGFzdCAtIDEgJiYgUHlfSVNTUEFDRShsYXN0Wy0xXSkpIHsKKyAgICAgICAgbGFzdC0tOworICAgIH0KKworICAgIC8qIFdlIGRvbid0IGNhcmUgYWJvdXQgb3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgSWYgdGhlIHBsYXRmb3JtCisgICAgICogc3VwcG9ydHMgdGhlbSwgaW5maW5pdGllcyBhbmQgc2lnbmVkIHplcm9lcyAob24gdW5kZXJmbG93KSBhcmUKKyAgICAgKiBmaW5lLiAqLworICAgIHggPSBQeU9TX3N0cmluZ190b19kb3VibGUocywgKGNoYXIgKiopJmVuZCwgTlVMTCk7CisgICAgaWYgKGVuZCAhPSBsYXN0KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBmbG9hdDogIgorICAgICAgICAgICAgICAgICAgICAgIiVSIiwgb2JqKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh4KTsKKyAgICB9Cit9CisKIFB5T2JqZWN0ICoKIFB5RmxvYXRfRnJvbVN0cmluZyhQeU9iamVjdCAqdikKIHsKLSAgICBjb25zdCBjaGFyICpzLCAqbGFzdCwgKmVuZDsKLSAgICBkb3VibGUgeDsKKyAgICBjb25zdCBjaGFyICpzOwogICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CkBAIC0xNjksMjcgKzIwMSw4IEBACiAgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGxhc3QgPSBzICsgbGVuOwotICAgIC8qIHN0cmlwIHNwYWNlICovCi0gICAgd2hpbGUgKHMgPCBsYXN0ICYmIFB5X0lTU1BBQ0UoKnMpKQotICAgICAgICBzKys7Ci0gICAgd2hpbGUgKHMgPCBsYXN0IC0gMSAmJiBQeV9JU1NQQUNFKGxhc3RbLTFdKSkKLSAgICAgICAgbGFzdC0tOwotICAgIC8qIFdlIGRvbid0IGNhcmUgYWJvdXQgb3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgSWYgdGhlIHBsYXRmb3JtCi0gICAgICogc3VwcG9ydHMgdGhlbSwgaW5maW5pdGllcyBhbmQgc2lnbmVkIHplcm9lcyAob24gdW5kZXJmbG93KSBhcmUKLSAgICAgKiBmaW5lLiAqLwotICAgIHggPSBQeU9TX3N0cmluZ190b19kb3VibGUocywgKGNoYXIgKiopJmVuZCwgTlVMTCk7Ci0gICAgaWYgKGVuZCAhPSBsYXN0KSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byBmbG9hdDogIgotICAgICAgICAgICAgICAgICAgICAgIiVSIiwgdik7Ci0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgfQotICAgIGVsc2UgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOwotCisgICAgcmVzdWx0ID0gX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcyhzLCBsZW4sICJmbG9hdCIsIHYsIHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9mcm9tX3N0cmluZ19pbm5lcik7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIxNSwzNSArMjI4LDQ5IEBACiBQeUZsb2F0X0FzRG91YmxlKFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm5iOwotICAgIFB5RmxvYXRPYmplY3QgKmZvOworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgZG91YmxlIHZhbDsKIAotICAgIGlmIChvcCAmJiBQeUZsb2F0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfQVNfRE9VQkxFKChQeUZsb2F0T2JqZWN0Kikgb3ApOwotCiAgICAgaWYgKG9wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmICgobmIgPSBQeV9UWVBFKG9wKS0+dHBfYXNfbnVtYmVyKSA9PSBOVUxMIHx8IG5iLT5uYl9mbG9hdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhIGZsb2F0IGlzIHJlcXVpcmVkIik7CisgICAgaWYgKFB5RmxvYXRfQ2hlY2sob3ApKSB7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0FTX0RPVUJMRShvcCk7CisgICAgfQorCisgICAgbmIgPSBQeV9UWVBFKG9wKS0+dHBfYXNfbnVtYmVyOworICAgIGlmIChuYiA9PSBOVUxMIHx8IG5iLT5uYl9mbG9hdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJtdXN0IGJlIHJlYWwgbnVtYmVyLCBub3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgZm8gPSAoUHlGbG9hdE9iamVjdCopICgqbmItPm5iX2Zsb2F0KSAob3ApOwotICAgIGlmIChmbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCFQeUZsb2F0X0NoZWNrKGZvKSkgewotICAgICAgICBQeV9ERUNSRUYoZm8pOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm5iX2Zsb2F0IHNob3VsZCByZXR1cm4gZmxvYXQgb2JqZWN0Iik7CisgICAgcmVzID0gKCpuYi0+bmJfZmxvYXQpIChvcCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgaWYgKCFQeUZsb2F0X0NoZWNrRXhhY3QocmVzKSkgeworICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2socmVzKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKS4gICIKKyAgICAgICAgICAgICAgICAiVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGZsb2F0ICIKKyAgICAgICAgICAgICAgICAiaXMgZGVwcmVjYXRlZCwgYW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLiIsCisgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQogCi0gICAgdmFsID0gUHlGbG9hdF9BU19ET1VCTEUoZm8pOwotICAgIFB5X0RFQ1JFRihmbyk7Ci0KKyAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShyZXMpOworICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTExOTUsNyArMTIyMiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmxvYXRfZnJvbWhleChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHRfYXNfZmxvYXQsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKICAgICBsb25nIGV4cCwgdG9wX2V4cCwgbHNiLCBrZXlfZGlnaXQ7CiAgICAgY2hhciAqcywgKmNvZWZmX3N0YXJ0LCAqc19zdG9yZSwgKmNvZWZmX2VuZCwgKmV4cF9zdGFydCwgKnNfZW5kOwpAQCAtMTQxMCwxMSArMTQzNywxMCBAQAogICAgICAgICBzKys7CiAgICAgaWYgKHMgIT0gc19lbmQpCiAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgcmVzdWx0X2FzX2Zsb2F0ID0gUHlfQnVpbGRWYWx1ZSgiKGQpIiwgbmVnYXRlID8gLXggOiB4KTsKLSAgICBpZiAocmVzdWx0X2FzX2Zsb2F0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCByZXN1bHRfYXNfZmxvYXQpOwotICAgIFB5X0RFQ1JFRihyZXN1bHRfYXNfZmxvYXQpOworICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShuZWdhdGUgPyAteCA6IHgpOworICAgIGlmIChjbHMgIT0gKFB5T2JqZWN0ICopJlB5RmxvYXRfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGNscywgcmVzdWx0LCBOVUxMKSk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiAKICAgb3ZlcmZsb3dfZXJyb3I6CkBAIC0xNDUxLDI5ICsxNDc3LDIzIEBACiAgICAgaW50IGV4cG9uZW50OwogICAgIGludCBpOwogCi0gICAgUHlPYmplY3QgKnByZXY7CiAgICAgUHlPYmplY3QgKnB5X2V4cG9uZW50ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbnVtZXJhdG9yID0gTlVMTDsKICAgICBQeU9iamVjdCAqZGVub21pbmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHRfcGFpciA9IE5VTEw7CiAgICAgUHlOdW1iZXJNZXRob2RzICpsb25nX21ldGhvZHMgPSBQeUxvbmdfVHlwZS50cF9hc19udW1iZXI7CiAKLSNkZWZpbmUgSU5QTEFDRV9VUERBVEUob2JqLCBjYWxsKSBcCi0gICAgcHJldiA9IG9iajsgXAotICAgIG9iaiA9IGNhbGw7IFwKLSAgICBQeV9ERUNSRUYocHJldik7IFwKLQogICAgIENPTlZFUlRfVE9fRE9VQkxFKHYsIHNlbGYpOwogCiAgICAgaWYgKFB5X0lTX0lORklOSVRZKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgaW5maW5pdHkgdG8gZmxvYXQuYXNfaW50ZWdlcl9yYXRpby4iKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlfSVNfTkFOKHNlbGYpKSB7Ci0gICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBhc3MgTmFOIHRvIGZsb2F0LmFzX2ludGVnZXJfcmF0aW8uIik7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgUHlGUEVfU1RBUlRfUFJPVEVDVCgiYXNfaW50ZWdlcl9yYXRpbyIsIGdvdG8gZXJyb3IpOwpAQCAtMTQ4OSwyOSArMTUwOSwzMSBAQAogICAgICAgIHRvIGJlIHRydW5jYXRlZCBieSBQeUxvbmdfRnJvbURvdWJsZSgpLiAqLwogCiAgICAgbnVtZXJhdG9yID0gUHlMb25nX0Zyb21Eb3VibGUoZmxvYXRfcGFydCk7Ci0gICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSBnb3RvIGVycm9yOworICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhQeV9BQlMoZXhwb25lbnQpKTsKKyAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIGZvbGQgaW4gMioqZXhwb25lbnQgKi8KLSAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKLSAgICBweV9leHBvbmVudCA9IFB5TG9uZ19Gcm9tTG9uZyhsYWJzKChsb25nKWV4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7Ci0gICAgSU5QTEFDRV9VUERBVEUocHlfZXhwb25lbnQsCi0gICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQoZGVub21pbmF0b3IsIHB5X2V4cG9uZW50KSk7Ci0gICAgaWYgKHB5X2V4cG9uZW50ID09IE5VTEwpIGdvdG8gZXJyb3I7CiAgICAgaWYgKGV4cG9uZW50ID4gMCkgewotICAgICAgICBJTlBMQUNFX1VQREFURShudW1lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbXVsdGlwbHkobnVtZXJhdG9yLCBweV9leHBvbmVudCkpOwotICAgICAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIGdvdG8gZXJyb3I7CisgICAgICAgIFB5X1NFVFJFRihudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChudW1lcmF0b3IsIHB5X2V4cG9uZW50KSk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYoZGVub21pbmF0b3IpOwotICAgICAgICBkZW5vbWluYXRvciA9IHB5X2V4cG9uZW50OwotICAgICAgICBweV9leHBvbmVudCA9IE5VTEw7CisgICAgICAgIFB5X1NFVFJFRihkZW5vbWluYXRvciwKKyAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KGRlbm9taW5hdG9yLCBweV9leHBvbmVudCkpOworICAgICAgICBpZiAoZGVub21pbmF0b3IgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgcmVzdWx0X3BhaXIgPSBQeVR1cGxlX1BhY2soMiwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CiAKLSN1bmRlZiBJTlBMQUNFX1VQREFURQogZXJyb3I6CiAgICAgUHlfWERFQ1JFRihweV9leHBvbmVudCk7CiAgICAgUHlfWERFQ1JFRihkZW5vbWluYXRvcik7CkBAIC0xOTY2LDggKzE5ODgsMTIwIEBACiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBfUHlGbG9hdF97UGFjayxVbnBhY2t9ezQsOH0uICBTZWUgZmxvYXRvYmplY3QuaC4KKyAqIF9QeUZsb2F0X3tQYWNrLFVucGFja317Miw0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCisgKiBUbyBtYXRjaCB0aGUgTlBZX0hBTEZfUk9VTkRfVElFU19UT19FVkVOIGJlaGF2aW9yIGluOgorICogaHR0cHM6Ly9naXRodWIuY29tL251bXB5L251bXB5L2Jsb2IvbWFzdGVyL251bXB5L2NvcmUvc3JjL25weW1hdGgvaGFsZmZsb2F0LmMKKyAqIFdlIHVzZToKKyAqICAgICAgIGJpdHMgPSAodW5zaWduZWQgc2hvcnQpZjsgICAgTm90ZSB0aGUgdHJ1bmNhdGlvbgorICogICAgICAgaWYgKChmIC0gYml0cyA+IDAuNSkgfHwgKGYgLSBiaXRzID09IDAuNSAmJiBiaXRzICUgMikpIHsKKyAqICAgICAgICAgICBiaXRzKys7CisgKiAgICAgICB9CiAgKi8KKworaW50CitfUHlGbG9hdF9QYWNrMihkb3VibGUgeCwgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc2lnbjsKKyAgICBpbnQgZTsKKyAgICBkb3VibGUgZjsKKyAgICB1bnNpZ25lZCBzaG9ydCBiaXRzOworICAgIGludCBpbmNyID0gMTsKKworICAgIGlmICh4ID09IDAuMCkgeworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAwOworICAgICAgICBiaXRzID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfSVNfSU5GSU5JVFkoeCkpIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgZSA9IDB4MWY7CisgICAgICAgIGJpdHMgPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9JU19OQU4oeCkpIHsKKyAgICAgICAgLyogVGhlcmUgYXJlIDIwNDYgZGlzdGluY3QgaGFsZi1wcmVjaXNpb24gTmFOcyAoMTAyMiBzaWduYWxpbmcgYW5kCisgICAgICAgICAgIDEwMjQgcXVpZXQpLCBidXQgdGhlcmUgYXJlIG9ubHkgdHdvIHF1aWV0IE5hTnMgdGhhdCBkb24ndCBhcmlzZSBieQorICAgICAgICAgICBxdWlldGluZyBhIHNpZ25hbGluZyBOYU47IHdlIGdldCB0aG9zZSBieSBzZXR0aW5nIHRoZSB0b3Btb3N0IGJpdAorICAgICAgICAgICBvZiB0aGUgZnJhY3Rpb24gZmllbGQgYW5kIGNsZWFyaW5nIGFsbCBvdGhlciBmcmFjdGlvbiBiaXRzLiBXZQorICAgICAgICAgICBjaG9vc2UgdGhlIG9uZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzaWduLiAqLworICAgICAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gLTEuMCk7CisgICAgICAgIGUgPSAweDFmOworICAgICAgICBiaXRzID0gNTEyOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2lnbiA9ICh4IDwgMC4wKTsKKyAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgIHggPSAteDsKKyAgICAgICAgfQorCisgICAgICAgIGYgPSBmcmV4cCh4LCAmZSk7CisgICAgICAgIGlmIChmIDwgMC41IHx8IGYgPj0gMS4wKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZXhwKCkgcmVzdWx0IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgLyogTm9ybWFsaXplIGYgdG8gYmUgaW4gdGhlIHJhbmdlIFsxLjAsIDIuMCkgKi8KKyAgICAgICAgZiAqPSAyLjA7CisgICAgICAgIGUtLTsKKworICAgICAgICBpZiAoZSA+PSAxNikgeworICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlIDwgLTI1KSB7CisgICAgICAgICAgICAvKiB8eHwgPCAyKiotMjUuIFVuZGVyZmxvdyB0byB6ZXJvLiAqLworICAgICAgICAgICAgZiA9IDAuMDsKKyAgICAgICAgICAgIGUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGUgPCAtMTQpIHsKKyAgICAgICAgICAgIC8qIHx4fCA8IDIqKi0xNC4gR3JhZHVhbCB1bmRlcmZsb3cgKi8KKyAgICAgICAgICAgIGYgPSBsZGV4cChmLCAxNCArIGUpOworICAgICAgICAgICAgZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSAvKiBpZiAoIShlID09IDAgJiYgZiA9PSAwLjApKSAqLyB7CisgICAgICAgICAgICBlICs9IDE1OworICAgICAgICAgICAgZiAtPSAxLjA7IC8qIEdldCByaWQgb2YgbGVhZGluZyAxICovCisgICAgICAgIH0KKworICAgICAgICBmICo9IDEwMjQuMDsgLyogMioqMTAgKi8KKyAgICAgICAgLyogUm91bmQgdG8gZXZlbiAqLworICAgICAgICBiaXRzID0gKHVuc2lnbmVkIHNob3J0KWY7IC8qIE5vdGUgdGhlIHRydW5jYXRpb24gKi8KKyAgICAgICAgYXNzZXJ0KGJpdHMgPCAxMDI0KTsKKyAgICAgICAgYXNzZXJ0KGUgPCAzMSk7CisgICAgICAgIGlmICgoZiAtIGJpdHMgPiAwLjUpIHx8ICgoZiAtIGJpdHMgPT0gMC41KSAmJiAoYml0cyAlIDIgPT0gMSkpKSB7CisgICAgICAgICAgICArK2JpdHM7CisgICAgICAgICAgICBpZiAoYml0cyA9PSAxMDI0KSB7CisgICAgICAgICAgICAgICAgLyogVGhlIGNhcnJ5IHByb3BhZ2F0ZWQgb3V0IG9mIGEgc3RyaW5nIG9mIDEwIDEgYml0cy4gKi8KKyAgICAgICAgICAgICAgICBiaXRzID0gMDsKKyAgICAgICAgICAgICAgICArK2U7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gMzEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBiaXRzIHw9IChlIDw8IDEwKSB8IChzaWduIDw8IDE1KTsKKworICAgIC8qIFdyaXRlIG91dCByZXN1bHQuICovCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICAqcCA9ICh1bnNpZ25lZCBjaGFyKSgoYml0cyA+PiA4KSAmIDB4RkYpOworICAgIHAgKz0gaW5jcjsKKworICAgIC8qIFNlY29uZCBieXRlICovCisgICAgKnAgPSAodW5zaWduZWQgY2hhcikoYml0cyAmIDB4RkYpOworCisgICAgcmV0dXJuIDA7CisKKyAgT3ZlcmZsb3c6CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJmbG9hdCB0b28gbGFyZ2UgdG8gcGFjayB3aXRoIGUgZm9ybWF0Iik7CisgICAgcmV0dXJuIC0xOworfQorCiBpbnQKIF9QeUZsb2F0X1BhY2s0KGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCiB7CkBAIC0yMjAzLDYgKzIzMzcsNzYgQEAKIH0KIAogZG91YmxlCitfUHlGbG9hdF9VbnBhY2syKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIHNpZ247CisgICAgaW50IGU7CisgICAgdW5zaWduZWQgaW50IGY7CisgICAgZG91YmxlIHg7CisgICAgaW50IGluY3IgPSAxOworCisgICAgaWYgKGxlKSB7CisgICAgICAgIHAgKz0gMTsKKyAgICAgICAgaW5jciA9IC0xOworICAgIH0KKworICAgIC8qIEZpcnN0IGJ5dGUgKi8KKyAgICBzaWduID0gKCpwID4+IDcpICYgMTsKKyAgICBlID0gKCpwICYgMHg3QykgPj4gMjsKKyAgICBmID0gKCpwICYgMHgwMykgPDwgODsKKyAgICBwICs9IGluY3I7CisKKyAgICAvKiBTZWNvbmQgYnl0ZSAqLworICAgIGYgfD0gKnA7CisKKyAgICBpZiAoZSA9PSAweDFmKSB7CisjaWZkZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfSFVHRV9WQUwgOiBQeV9IVUdFX1ZBTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworI2lmZGVmIFB5X05BTgorICAgICAgICAgICAgcmV0dXJuIHNpZ24gPyAtUHlfTkFOIDogUHlfTkFOOworI2Vsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICBQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW4ndCB1bnBhY2sgSUVFRSA3NTQgTmFOICIKKyAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IE5hTnMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyNlbmRpZiAgLyogI2lmZGVmIFB5X05BTiAqLworICAgICAgICB9CisjZWxzZQorICAgICAgICBpZiAoZiA9PSAwKSB7CisgICAgICAgICAgICAvKiBJbmZpbml0eSAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19pbmZpbml0eShzaWduKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIE5hTiAqLworICAgICAgICAgICAgcmV0dXJuIF9QeV9kZ19zdGRuYW4oc2lnbik7CisgICAgICAgIH0KKyNlbmRpZiAgLyogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIgKi8KKyAgICB9CisKKyAgICB4ID0gKGRvdWJsZSlmIC8gMTAyNC4wOworCisgICAgaWYgKGUgPT0gMCkgeworICAgICAgICBlID0gLTE0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgeCArPSAxLjA7CisgICAgICAgIGUgLT0gMTU7CisgICAgfQorICAgIHggPSBsZGV4cCh4LCBlKTsKKworICAgIGlmIChzaWduKQorICAgICAgICB4ID0gLXg7CisKKyAgICByZXR1cm4geDsKK30KKworZG91YmxlCiBfUHlGbG9hdF9VbnBhY2s0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKIHsKICAgICBpZiAoZmxvYXRfZm9ybWF0ID09IHVua25vd25fZm9ybWF0KSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKaW5kZXggOWFhZGQ2MS4uNjJmOWYzNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jCisrKyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAgICAgICAgIG5ld19sYXN0aSA9IC0xOwogICAgICAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IGxub3RhYl9sZW47IG9mZnNldCArPSAyKSB7CiAgICAgICAgICAgICBhZGRyICs9IGxub3RhYltvZmZzZXRdOwotICAgICAgICAgICAgbGluZSArPSBsbm90YWJbb2Zmc2V0KzFdOworICAgICAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpbG5vdGFiW29mZnNldCsxXTsKICAgICAgICAgICAgIGlmIChsaW5lID49IG5ld19saW5lbm8pIHsKICAgICAgICAgICAgICAgICBuZXdfbGFzdGkgPSBhZGRyOwogICAgICAgICAgICAgICAgIG5ld19saW5lbm8gPSBsaW5lOwpAQCAtMTg5LDcgKzE4OSw3IEBACiAgICAgbWVtc2V0KGJsb2Nrc3RhY2ssICdcMCcsIHNpemVvZihibG9ja3N0YWNrKSk7CiAgICAgbWVtc2V0KGluX2ZpbmFsbHksICdcMCcsIHNpemVvZihpbl9maW5hbGx5KSk7CiAgICAgYmxvY2tzdGFja190b3AgPSAwOwotICAgIGZvciAoYWRkciA9IDA7IGFkZHIgPCBjb2RlX2xlbjsgYWRkcisrKSB7CisgICAgZm9yIChhZGRyID0gMDsgYWRkciA8IGNvZGVfbGVuOyBhZGRyICs9IHNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgb3AgPSBjb2RlW2FkZHJdOwogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAgIGNhc2UgU0VUVVBfTE9PUDoKQEAgLTI1MSwxMCArMjUxLDYgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBpZiAob3AgPj0gSEFWRV9BUkdVTUVOVCkgewotICAgICAgICAgICAgYWRkciArPSAyOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogVmVyaWZ5IHRoYXQgdGhlIGJsb2Nrc3RhY2sgdHJhY2tpbmcgY29kZSBkaWRuJ3QgZ2V0IGxvc3QuICovCkBAIC0yNzcsNyArMjczLDcgQEAKICAgICAgKiBjYW4gdGVsbCB3aGV0aGVyIHRoZSBqdW1wIGdvZXMgaW50byBhbnkgYmxvY2tzIHdpdGhvdXQgY29taW5nIG91dAogICAgICAqIGFnYWluIC0gaW4gdGhhdCBjYXNlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBiZWxvdy4gKi8KICAgICBkZWx0YV9pYmxvY2sgPSAwOwotICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIrKykgeworICAgIGZvciAoYWRkciA9IG1pbl9hZGRyOyBhZGRyIDwgbWF4X2FkZHI7IGFkZHIgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBvcCA9IGNvZGVbYWRkcl07CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTRVRVUF9MT09QOgpAQCAtMjk0LDEwICsyOTAsNiBAQAogICAgICAgICB9CiAKICAgICAgICAgbWluX2RlbHRhX2libG9jayA9IFB5X01JTihtaW5fZGVsdGFfaWJsb2NrLCBkZWx0YV9pYmxvY2spOwotCi0gICAgICAgIGlmIChvcCA+PSBIQVZFX0FSR1VNRU5UKSB7Ci0gICAgICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBEZXJpdmUgdGhlIGFic29sdXRlIGlibG9jayB2YWx1ZXMgZnJvbSB0aGUgZGVsdGFzLiAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mdW5jb2JqZWN0LmMgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwppbmRleCA0Y2Q2NTkwLi42OWNkOTczIDEwMDY0NAotLS0gYS9PYmplY3RzL2Z1bmNvYmplY3QuYworKysgYi9PYmplY3RzL2Z1bmNvYmplY3QuYwpAQCAtMjQ5LDcgKzI0OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9jb2RlKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKICAgICBQeV9zc2l6ZV90IG5mcmVlLCBuY2xvc3VyZTsKIAogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5mdW5jX2NvZGUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCkBAIC0yNzAsMTAgKzI2OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICBuY2xvc3VyZSwgbmZyZWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2NvZGU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19jb2RlID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19jb2RlLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI4Nyw4ICsyODQsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuZnVuY19uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0yOTYsMTAgKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX25hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzEzLDggKzMwNiw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGYuX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC0zMjIsMTAgKzMxMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfcXVhbG5hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX3F1YWxuYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM0Myw4ICszMzIsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19kZWZhdWx0cy4KICAgICAgKiBDYW4gb25seSBzZXQgZnVuY19kZWZhdWx0cyB0byBOVUxMIG9yIGEgdHVwbGUuICovCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCkBAIC0zNTQsMTAgKzM0MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19kZWZhdWx0c19fIG11c3QgYmUgc2V0IHRvIGEgdHVwbGUgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfZGVmYXVsdHMgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+ZnVuY19kZWZhdWx0cywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzUsOCArMzYwLDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2t3ZGVmYXVsdHMoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCiAgICAgICAgIHZhbHVlID0gTlVMTDsKICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2t3ZGVmYXVsdHMuCkBAIC0zODYsMTAgKzM2OSw4IEBACiAgICAgICAgICAgICAiX19rd2RlZmF1bHRzX18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0IG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2t3ZGVmYXVsdHM7CiAgICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfa3dkZWZhdWx0cyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2t3ZGVmYXVsdHMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDA4LDggKzM4OSw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9hbm5vdGF0aW9ucyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgdmFsdWUgPSBOVUxMOwogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfYW5ub3RhdGlvbnMuCkBAIC00MjAsMTAgKzM5OSw4IEBACiAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG11c3QgYmUgc2V0IHRvIGEgZGljdCBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19hbm5vdGF0aW9uczsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19hbm5vdGF0aW9ucyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IGQ0MDM1OTguLmRkZjcyY2MgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw3ICs1LDE1IEBACiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCiAKLXN0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKTsKK3N0YXRpYyBQeU9iamVjdCAqZ2VuX2Nsb3NlKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICphc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jX2dlbl9hdGhyb3dfbmV3KFB5QXN5bmNHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CisKK3N0YXRpYyBjaGFyICpOT05fSU5JVF9DT1JPX01TRyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworCitzdGF0aWMgY2hhciAqQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0cgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzeW5jIGdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOwogCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCkBAIC0yOCw2ICszNiwyNiBAQAogICAgICAgICAvKiBHZW5lcmF0b3IgaXNuJ3QgcGF1c2VkLCBzbyBubyBuZWVkIHRvIGNsb3NlICovCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgUHlBc3luY0dlbk9iamVjdCAqYWdlbiA9IChQeUFzeW5jR2VuT2JqZWN0KilzZWxmOworICAgICAgICBQeU9iamVjdCAqZmluYWxpemVyID0gYWdlbi0+YWdfZmluYWxpemVyOworICAgICAgICBpZiAoZmluYWxpemVyICYmICFhZ2VuLT5hZ19jbG9zZWQpIHsKKyAgICAgICAgICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKKworICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmaW5hbGl6ZXIsIHNlbGYsIE5VTEwpOworCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoc2VsZik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKQEAgLTc0LDYgKzEwMiwxMiBAQAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgLyogcmVzdXJyZWN0ZWQuICA6KCAqLwogCiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgIC8qIFdlIGhhdmUgdG8gaGFuZGxlIHRoaXMgY2FzZSBmb3IgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMKKyAgICAgICAgICAgcmlnaHQgaGVyZSwgYmVjYXVzZSB0aGlzIGNvZGUgaGFzIHRvIGJlIGJldHdlZW4gVU5UUkFDSworICAgICAgICAgICBhbmQgR0NfRGVsLiAqLworICAgICAgICBQeV9DTEVBUigoKFB5QXN5bmNHZW5PYmplY3QqKWdlbiktPmFnX2ZpbmFsaXplcik7CisgICAgfQogICAgIGlmIChnZW4tPmdpX2ZyYW1lICE9IE5VTEwpIHsKICAgICAgICAgZ2VuLT5naV9mcmFtZS0+Zl9nZW4gPSBOVUxMOwogICAgICAgICBQeV9DTEVBUihnZW4tPmdpX2ZyYW1lKTsKQEAgLTkzLDggKzEyNywxMiBAQAogCiAgICAgaWYgKGdlbi0+Z2lfcnVubmluZykgewogICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIjsKLSAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgbXNnID0gImFzeW5jIGdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIG1zZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNiwxMCArMTQ0LDE2IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCiAgICAgICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICJjYW5ub3QgcmV1c2UgYWxyZWFkeSBhd2FpdGVkIGNvcm91dGluZSIpOwotICAgICAgICB9IGVsc2UgaWYgKGFyZyAmJiAhZXhjKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYXJnICYmICFleGMpIHsKICAgICAgICAgICAgIC8qIGBnZW5gIGlzIGFuIGV4aGF1c3RlZCBnZW5lcmF0b3I6CiAgICAgICAgICAgICAgICBvbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpLiAqLwotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTE4LDkgKzE2MiwxMyBAQAogICAgICAgICBpZiAoYXJnICYmIGFyZyAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICBjaGFyICptc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKICAgICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgZ2VuZXJhdG9yIjsKLSAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgICAgICBtc2cgPSBOT05fSU5JVF9DT1JPX01TRzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICAgICAgbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBjb3JvdXRpbmUiOworICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgYXN5bmMgZ2VuZXJhdG9yIjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMTUyLDggKzIwMCwxNiBAQAogICAgIGlmIChyZXN1bHQgJiYgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogRGVsYXkgZXhjZXB0aW9uIGluc3RhbnRpYXRpb24gaWYgd2UgY2FuICovCi0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIEFzeW5jIGdlbmVyYXRvcnMgY2Fubm90IHJldHVybiBhbnl0aGluZyBidXQgTm9uZSAqLworICAgICAgICAgICAgYXNzZXJ0KCFQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSk7CiAgICAgICAgICAgICBfUHlHZW5fU2V0U3RvcEl0ZXJhdGlvblZhbHVlKHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgUHlfQ0xFQVIocmVzdWx0KTsKQEAgLTE2MiwzNCArMjE4LDQzIEBACiAgICAgICAgIC8qIENoZWNrIGZvciBfX2Z1dHVyZV9fIGdlbmVyYXRvcl9zdG9wIGFuZCBjb25kaXRpb25hbGx5IHR1cm4KICAgICAgICAgICogYSBsZWFraW5nIFN0b3BJdGVyYXRpb24gaW50byBSdW50aW1lRXJyb3IgKHdpdGggaXRzIGNhdXNlCiAgICAgICAgICAqIHNldCBhcHByb3ByaWF0ZWx5KS4gKi8KLSAgICAgICAgaWYgKCgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgotICAgICAgICAgICAgICAoQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwgQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkKKworICAgICAgICBjb25zdCBpbnQgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzID0gQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0NPUk9VVElORSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19JVEVSQUJMRV9DT1JPVVRJTkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fQVNZTkNfR0VORVJBVE9SOworCisgICAgICAgIGlmIChnZW4tPmdpX2NvZGUgIT0gTlVMTCAmJgorICAgICAgICAgICAgKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmCisgICAgICAgICAgICAgICAgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOwotICAgICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7Ci0gICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIC8qIGBnZW5gIGlzIGVpdGhlcjoKKyAgICAgICAgICAgICAgICAgICogYSBnZW5lcmF0b3Igd2l0aCBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgZmxhZzsKKyAgICAgICAgICAgICAgICAgICogYSBjb3JvdXRpbmU7CisgICAgICAgICAgICAgICAgICAqIGEgZ2VuZXJhdG9yIHdpdGggQ09fSVRFUkFCTEVfQ09ST1VUSU5FIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgKGRlY29yYXRlZCB3aXRoIHR5cGVzLmNvcm91dGluZSBkZWNvcmF0b3IpOworICAgICAgICAgICAgICAgICAgKiBhbiBhc3luYyBnZW5lcmF0b3IuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgcmFpc2VkIFN0b3BJdGVyYXRpb24iOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgaWYgKHRiICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOwotICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pIHsKKyAgICAgICAgICAgICAgICBtc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLCAiJXMiLCBtc2cpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogYGdlbmAgaXMgYW4gb3JkaW5hcnkgZ2VuZXJhdG9yIHdpdGhvdXQKKyAgICAgICAgICAgICAgIENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCBmbGFnLgorICAgICAgICAgICAgKi8KKwogICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwogCiAgICAgICAgICAgICAvKiBQb3AgdGhlIGV4Y2VwdGlvbiBiZWZvcmUgaXNzdWluZyBhIHdhcm5pbmcuICovCiAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwogCi0gICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAnJS41MFMnIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgLyogV2FybmluZyB3YXMgY29udmVydGVkIHRvIGFuIGVycm9yLiAqLwpAQCAtMjAyLDYgKzI2NywxNSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pICYmICFyZXN1bHQgJiYKKyAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbikpCisgICAgeworICAgICAgICAvKiBjb2RlIGluIGBnZW5gIHJhaXNlZCBhIFN0b3BBc3luY0l0ZXJhdGlvbiBlcnJvcjoKKyAgICAgICAgICAgcmFpc2UgYSBSdW50aW1lRXJyb3IuCisgICAgICAgICovCisgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJhc3luYyBnZW5lcmF0b3IgcmFpc2VkIFN0b3BBc3luY0l0ZXJhdGlvbiI7CisgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLCAiJXMiLCBtc2cpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBnZW5lcmF0b3IgY2FuJ3QgYmUgcmVydW4sIHNvIHJlbGVhc2UgdGhlIGZyYW1lICovCkBAIC0yNDgsMTggKzMyMiwyMCBAQAogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIAotICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSkgeworICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdCh5ZikpIHsKICAgICAgICAgcmV0dmFsID0gZ2VuX2Nsb3NlKChQeUdlbk9iamVjdCAqKXlmLCBOVUxMKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOwogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKG1ldGgpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTI3OSw3ICszNTUsNyBAQAogICAgICAgICBQeU9iamVjdCAqYnl0ZWNvZGUgPSBmLT5mX2NvZGUtPmNvX2NvZGU7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvZGUgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVjb2RlKTsKIAotICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgMV0gIT0gWUlFTERfRlJPTSkKKyAgICAgICAgaWYgKGNvZGVbZi0+Zl9sYXN0aSArIHNpemVvZihfUHlfQ09ERVVOSVQpXSAhPSBZSUVMRF9GUk9NKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHlmID0gZi0+Zl9zdGFja3RvcFstMV07CiAgICAgICAgIFB5X0lOQ1JFRih5Zik7CkBAIC0zMDYsOCArMzgyLDExIEBACiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CiAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKLSAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7CisgICAgICAgIH0gZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgIG1zZyA9IEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHOworICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyNywyMSArNDA2LDIyIEBACiByZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCitfZ2VuX3Rocm93KFB5R2VuT2JqZWN0ICpnZW4sIGludCBjbG9zZV9vbl9nZW5leGl0LAorICAgICAgICAgICBQeU9iamVjdCAqdHlwLCBQeU9iamVjdCAqdmFsLCBQeU9iamVjdCAqdGIpCiB7Ci0gICAgUHlPYmplY3QgKnR5cDsKLSAgICBQeU9iamVjdCAqdGIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp5ZiA9IF9QeUdlbl95ZihnZW4pOwogICAgIF9QeV9JREVOVElGSUVSKHRocm93KTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRocm93IiwgMSwgMywgJnR5cCwgJnZhbCwgJnRiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoeWYpIHsKICAgICAgICAgUHlPYmplY3QgKnJldDsKICAgICAgICAgaW50IGVycjsKLSAgICAgICAgaWYgKFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh0eXAsIFB5RXhjX0dlbmVyYXRvckV4aXQpKSB7CisgICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSAmJgorICAgICAgICAgICAgY2xvc2Vfb25fZ2VuZXhpdAorICAgICAgICApIHsKKyAgICAgICAgICAgIC8qIEFzeW5jaHJvbm91cyBnZW5lcmF0b3JzICpzaG91bGQgbm90KiBiZSBjbG9zZWQgcmlnaHQgYXdheS4KKyAgICAgICAgICAgICAgIFdlIGhhdmUgdG8gYWxsb3cgc29tZSBhd2FpdHMgdG8gd29yayBpdCB0aHJvdWdoLCBoZW5jZSB0aGUKKyAgICAgICAgICAgICAgIGBjbG9zZV9vbl9nZW5leGl0YCBwYXJhbWV0ZXIgaGVyZS4KKyAgICAgICAgICAgICovCiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwogICAgICAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKQEAgLTM1MCwxMSArNDMwLDE2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSwgMCk7CiAgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICAgICAgICAgIC8qIGB5ZmAgaXMgYSBnZW5lcmF0b3Igb3IgYSBjb3JvdXRpbmUuICovCiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwotICAgICAgICAgICAgcmV0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBhcmdzKTsKKyAgICAgICAgICAgIC8qIENsb3NlIHRoZSBnZW5lcmF0b3IgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyB3aXRoCisgICAgICAgICAgICAgICAneWllbGQgZnJvbScgb3IgYXdhaXRpbmcgb24gd2l0aCAnYXdhaXQnLiAqLworICAgICAgICAgICAgcmV0ID0gX2dlbl90aHJvdygoUHlHZW5PYmplY3QgKil5ZiwgY2xvc2Vfb25fZ2VuZXhpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwLCB2YWwsIHRiKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBgeWZgIGlzIGFuIGl0ZXJhdG9yIG9yIGEgY29yb3V0aW5lLWxpa2Ugb2JqZWN0LiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1ldGggPSBfUHlPYmplY3RfR2V0QXR0cklkKHlmLCAmUHlJZF90aHJvdyk7CiAgICAgICAgICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewpAQCAtMzY2LDcgKzQ1MSw3IEBACiAgICAgICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKLSAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aCwgYXJncyk7CisgICAgICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKG1ldGgsIHR5cCwgdmFsLCB0YiwgTlVMTCk7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwogICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwogICAgICAgICB9CkBAIC0zNzgsNyArNDYzLDcgQEAKICAgICAgICAgICAgIGFzc2VydChyZXQgPT0geWYpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7CiAgICAgICAgICAgICAvKiBUZXJtaW5hdGlvbiByZXBldGl0aW9uIG9mIFlJRUxEX0ZST00gKi8KLSAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkrKzsKKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICBpZiAoX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpID09IDApIHsKICAgICAgICAgICAgICAgICByZXQgPSBnZW5fc2VuZF9leChnZW4sIHZhbCwgMCwgMCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbCk7CkBAIC00NDksNiArNTM0LDIxIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKK2dlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdHlwOworICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIF9nZW5fdGhyb3coZ2VuLCAxLCB0eXAsIHZhbCwgdGIpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwLCAwKTsKQEAgLTU2Niw4ICs2NjYsNiBAQAogc3RhdGljIGludAogZ2VuX3NldF9uYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5naV9uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC01NzUsMTAgKzY3Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX25hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+Z2lfbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmdpX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTkyLDggKzY4OCw2IEBACiBzdGF0aWMgaW50CiBnZW5fc2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTYwMSwxMCArNjk1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmdpX3F1YWxuYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+Z2lfcXVhbG5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTA0NSwyMSArMTEzNywyMSBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICphd19haXRlcjsKKyAgICBQeU9iamVjdCAqYWdzX2FpdGVyOwogfSBQeUFJdGVyV3JhcHBlcjsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgogYWl0ZXJfd3JhcHBlcl9pdGVybmV4dChQeUFJdGVyV3JhcHBlciAqYXcpCiB7Ci0gICAgX1B5R2VuX1NldFN0b3BJdGVyYXRpb25WYWx1ZShhdy0+YXdfYWl0ZXIpOworICAgIF9QeUdlbl9TZXRTdG9wSXRlcmF0aW9uVmFsdWUoYXctPmFnc19haXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBpbnQKIGFpdGVyX3dyYXBwZXJfdHJhdmVyc2UoUHlBSXRlcldyYXBwZXIgKmF3LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9WSVNJVCgoUHlPYmplY3QgKilhdy0+YXdfYWl0ZXIpOworICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWF3LT5hZ3NfYWl0ZXIpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDY3LDcgKzExNTksNyBAQAogYWl0ZXJfd3JhcHBlcl9kZWFsbG9jKFB5QUl0ZXJXcmFwcGVyICphdykKIHsKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKilhdyk7Ci0gICAgUHlfQ0xFQVIoYXctPmF3X2FpdGVyKTsKKyAgICBQeV9DTEVBUihhdy0+YWdzX2FpdGVyKTsKICAgICBQeU9iamVjdF9HQ19EZWwoYXcpOwogfQogCkBAIC0xMTI5LDcgKzEyMjEsODQzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoYWl0ZXIpOwotICAgIGF3LT5hd19haXRlciA9IGFpdGVyOworICAgIGF3LT5hZ3NfYWl0ZXIgPSBhaXRlcjsKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soYXcpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilhdzsKIH0KKworCisvKiA9PT09PT09PT0gQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMgPT09PT09PT09ICovCisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBBV0FJVEFCTEVfU1RBVEVfSU5JVCwgICAvKiBuZXcgYXdhaXRhYmxlLCBoYXMgbm90IHlldCBiZWVuIGl0ZXJhdGVkICovCisgICAgQVdBSVRBQkxFX1NUQVRFX0lURVIsICAgLyogYmVpbmcgaXRlcmF0ZWQgKi8KKyAgICBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VELCAvKiBjbG9zZWQgKi8KK30gQXdhaXRhYmxlU3RhdGU7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICphZ3NfZ2VuOworCisgICAgLyogQ2FuIGJlIE5VTEwsIHdoZW4gaW4gdGhlIF9fYW5leHRfXygpIG1vZGUKKyAgICAgICAoZXF1aXZhbGVudCBvZiAiYXNlbmQoTm9uZSkiKSAqLworICAgIFB5T2JqZWN0ICphZ3Nfc2VuZHZhbDsKKworICAgIEF3YWl0YWJsZVN0YXRlIGFnc19zdGF0ZTsKK30gUHlBc3luY0dlbkFTZW5kOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlBc3luY0dlbk9iamVjdCAqYWd0X2dlbjsKKworICAgIC8qIENhbiBiZSBOVUxMLCB3aGVuIGluIHRoZSAiYWNsb3NlKCkiIG1vZGUKKyAgICAgICAoZXF1aXZhbGVudCBvZiAiYXRocm93KEdlbmVyYXRvckV4aXQpIikgKi8KKyAgICBQeU9iamVjdCAqYWd0X2FyZ3M7CisKKyAgICBBd2FpdGFibGVTdGF0ZSBhZ3Rfc3RhdGU7Cit9IFB5QXN5bmNHZW5BVGhyb3c7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqYWd3X3ZhbDsKK30gX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWU7CisKKworI2lmbmRlZiBfUHlBc3luY0dlbl9NQVhGUkVFTElTVAorI2RlZmluZSBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCA4MAorI2VuZGlmCisKKy8qIEZyZWVsaXN0cyBib29zdCBwZXJmb3JtYW5jZSA2LTEwJTsgdGhleSBhbHNvIHJlZHVjZSBtZW1vcnkKKyAgIGZyYWdtZW50YXRpb24sIGFzIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlIGFuZCBQeUFzeW5jR2VuQVNlbmQKKyAgIGFyZSBzaG9ydC1saXZpbmcgb2JqZWN0cyB0aGF0IGFyZSBpbnN0YW50aWF0ZWQgZm9yIGV2ZXJ5CisgICBfX2FuZXh0X18gY2FsbC4KKyovCisKK3N0YXRpYyBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqYWdfdmFsdWVfZnJlZWxpc3RbX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBhZ192YWx1ZV9mcmVlbGlzdF9mcmVlID0gMDsKKworc3RhdGljIFB5QXN5bmNHZW5BU2VuZCAqYWdfYXNlbmRfZnJlZWxpc3RbX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlID0gMDsKKworI2RlZmluZSBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pIFwKKyAgICAgICAgICAgICAgICAgICAgKFB5X1RZUEUobykgPT0gJl9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGUpCisKKyNkZWZpbmUgUHlBc3luY0dlbkFTZW5kX0NoZWNrRXhhY3QobykgXAorICAgICAgICAgICAgICAgICAgICAoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKQorCisKK3N0YXRpYyBpbnQKK2FzeW5jX2dlbl90cmF2ZXJzZShQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGdlbi0+YWdfZmluYWxpemVyKTsKKyAgICByZXR1cm4gZ2VuX3RyYXZlcnNlKChQeUdlbk9iamVjdCopZ2VuLCB2aXNpdCwgYXJnKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX3JlcHIoUHlBc3luY0dlbk9iamVjdCAqbykKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxhc3luY19nZW5lcmF0b3Igb2JqZWN0ICVTIGF0ICVwPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tPmFnX3F1YWxuYW1lLCBvKTsKK30KKworCitzdGF0aWMgaW50Cithc3luY19nZW5faW5pdF9ob29rcyhQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyOworICAgIFB5T2JqZWN0ICpmaXJzdGl0ZXI7CisKKyAgICBpZiAoby0+YWdfaG9va3NfaW5pdGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG8tPmFnX2hvb2tzX2luaXRlZCA9IDE7CisKKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgZmluYWxpemVyID0gdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyOworICAgIGlmIChmaW5hbGl6ZXIpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZpbmFsaXplcik7CisgICAgICAgIG8tPmFnX2ZpbmFsaXplciA9IGZpbmFsaXplcjsKKyAgICB9CisKKyAgICBmaXJzdGl0ZXIgPSB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXI7CisgICAgaWYgKGZpcnN0aXRlcikgeworICAgICAgICBQeU9iamVjdCAqcmVzOworCisgICAgICAgIFB5X0lOQ1JFRihmaXJzdGl0ZXIpOworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oZmlyc3RpdGVyLCAiTyIsIG8pOworICAgICAgICBQeV9ERUNSRUYoZmlyc3RpdGVyKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FuZXh0KFB5QXN5bmNHZW5PYmplY3QgKm8pCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX25ldyhvLCBOVUxMKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kKFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX25ldyhvLCBhcmcpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYWNsb3NlKFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGFzeW5jX2dlbl9pbml0X2hvb2tzKG8pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYXN5bmNfZ2VuX2F0aHJvd19uZXcobywgTlVMTCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93KFB5QXN5bmNHZW5PYmplY3QgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfbmV3KG8sIGFyZ3MpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBhc3luY19nZW5fZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWdlbl9nZXRfbmFtZSwgKHNldHRlcilnZW5fc2V0X25hbWUsCisgICAgIFB5RG9jX1NUUigibmFtZSBvZiB0aGUgYXN5bmMgZ2VuZXJhdG9yIil9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWdlbl9zZXRfcXVhbG5hbWUsCisgICAgIFB5RG9jX1NUUigicXVhbGlmaWVkIG5hbWUgb2YgdGhlIGFzeW5jIGdlbmVyYXRvciIpfSwKKyAgICB7ImFnX2F3YWl0IiwgKGdldHRlciljb3JvX2dldF9jcl9hd2FpdCwgTlVMTCwKKyAgICAgUHlEb2NfU1RSKCJvYmplY3QgYmVpbmcgYXdhaXRlZCBvbiwgb3IgTm9uZSIpfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU1lbWJlckRlZiBhc3luY19nZW5fbWVtYmVybGlzdFtdID0geworICAgIHsiYWdfZnJhbWUiLCAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19mcmFtZSksICAgUkVBRE9OTFl9LAorICAgIHsiYWdfcnVubmluZyIsIFRfQk9PTCwgICBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19ydW5uaW5nKSwgUkVBRE9OTFl9LAorICAgIHsiYWdfY29kZSIsICAgIFRfT0JKRUNULCBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ19jb2RlKSwgICAgUkVBRE9OTFl9LAorICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitQeURvY19TVFJWQVIoYXN5bmNfYWNsb3NlX2RvYywKKyJhY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuIik7CisKK1B5RG9jX1NUUlZBUihhc3luY19hc2VuZF9kb2MsCisiYXNlbmQodikgLT4gc2VuZCAndicgaW4gZ2VuZXJhdG9yLiIpOworCitQeURvY19TVFJWQVIoYXN5bmNfYXRocm93X2RvYywKKyJhdGhyb3codHlwWyx2YWxbLHRiXV0pIC0+IHJhaXNlIGV4Y2VwdGlvbiBpbiBnZW5lcmF0b3IuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBhc3luY19nZW5fbWV0aG9kc1tdID0geworICAgIHsiYXNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kLCBNRVRIX08sIGFzeW5jX2FzZW5kX2RvY30sCisgICAgeyJhdGhyb3ciLChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93LCBNRVRIX1ZBUkFSR1MsIGFzeW5jX2F0aHJvd19kb2N9LAorICAgIHsiYWNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hY2xvc2UsIE1FVEhfTk9BUkdTLCBhc3luY19hY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXNfYXN5bmMgPSB7CisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAodW5hcnlmdW5jKWFzeW5jX2dlbl9hbmV4dCAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBQeUFzeW5jR2VuX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYXN5bmNfZ2VuZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlBc3luY0dlbk9iamVjdCksICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZ2VuX2RlYWxsb2MsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICZhc3luY19nZW5fYXNfYXN5bmMsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYXN5bmMgKi8KKyAgICAocmVwcmZ1bmMpYXN5bmNfZ2VuX3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAorICAgICAgICBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX3RyYXZlcnNlLCAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKFB5QXN5bmNHZW5PYmplY3QsIGFnX3dlYWtyZWZsaXN0KSwgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYXN5bmNfZ2VuX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgYXN5bmNfZ2VuX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgX1B5R2VuX0ZpbmFsaXplLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworCitQeU9iamVjdCAqCitQeUFzeW5jR2VuX05ldyhQeUZyYW1lT2JqZWN0ICpmLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQoreworICAgIFB5QXN5bmNHZW5PYmplY3QgKm87CisgICAgbyA9IChQeUFzeW5jR2VuT2JqZWN0ICopZ2VuX25ld193aXRoX3F1YWxuYW1lKAorICAgICAgICAmUHlBc3luY0dlbl9UeXBlLCBmLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgby0+YWdfZmluYWxpemVyID0gTlVMTDsKKyAgICBvLT5hZ19jbG9zZWQgPSAwOworICAgIG8tPmFnX2hvb2tzX2luaXRlZCA9IDA7CisgICAgcmV0dXJuIChQeU9iamVjdCopbzsKK30KKworCitpbnQKK1B5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHModm9pZCkKK3sKKyAgICBpbnQgcmV0ID0gYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSArIGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWU7CisKKyAgICB3aGlsZSAoYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbzsKKyAgICAgICAgbyA9IGFnX3ZhbHVlX2ZyZWVsaXN0Wy0tYWdfdmFsdWVfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgUHlPYmplY3RfR0NfRGVsKG8pOworICAgIH0KKworICAgIHdoaWxlIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIFB5QXN5bmNHZW5BU2VuZCAqbzsKKyAgICAgICAgbyA9IGFnX2FzZW5kX2ZyZWVsaXN0Wy0tYWdfYXNlbmRfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbkFTZW5kX1R5cGUpOworICAgICAgICBQeU9iamVjdF9HQ19EZWwobyk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKwordm9pZAorUHlBc3luY0dlbl9GaW5pKHZvaWQpCit7CisgICAgUHlBc3luY0dlbl9DbGVhckZyZWVMaXN0cygpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fdW53cmFwX3ZhbHVlKFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKnJlc3VsdCkKK3sKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pCisgICAgICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpCisgICAgICAgICkgeworICAgICAgICAgICAgZ2VuLT5hZ19jbG9zZWQgPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAvKiBhc3luYyB5aWVsZCAqLworICAgICAgICBfUHlHZW5fU2V0U3RvcEl0ZXJhdGlvblZhbHVlKCgoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUqKXJlc3VsdCktPmFnd192YWwpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiAtLS0tLS0tLS0tIEFzeW5jIEdlbmVyYXRvciBBU2VuZCBBd2FpdGFibGUgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl9hc2VuZF9kZWFsbG9jKFB5QXN5bmNHZW5BU2VuZCAqbykKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSygoUHlPYmplY3QgKilvKTsKKyAgICBQeV9DTEVBUihvLT5hZ3NfZ2VuKTsKKyAgICBQeV9DTEVBUihvLT5hZ3Nfc2VuZHZhbCk7CisgICAgaWYgKGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUgPCBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCkgeworICAgICAgICBhc3NlcnQoUHlBc3luY0dlbkFTZW5kX0NoZWNrRXhhY3QobykpOworICAgICAgICBhZ19hc2VuZF9mcmVlbGlzdFthZ19hc2VuZF9mcmVlbGlzdF9mcmVlKytdID0gbzsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdF9HQ19EZWwobyk7CisgICAgfQorfQorCitzdGF0aWMgaW50Cithc3luY19nZW5fYXNlbmRfdHJhdmVyc2UoUHlBc3luY0dlbkFTZW5kICpvLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChvLT5hZ3NfZ2VuKTsKKyAgICBQeV9WSVNJVChvLT5hZ3Nfc2VuZHZhbCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9zZW5kKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKG8tPmFnc19zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Nfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBhcmcgPSBvLT5hZ3Nfc2VuZHZhbDsKKyAgICAgICAgfQorICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSVRFUjsKKyAgICB9CisKKyAgICByZXN1bHQgPSBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QqKW8tPmFnc19nZW4sIGFyZywgMCwgMCk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2l0ZXJuZXh0KFB5QXN5bmNHZW5BU2VuZCAqbykKK3sKKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX3NlbmQobywgTlVMTCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF90aHJvdyhQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoby0+YWdzX3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCopby0+YWdzX2dlbiwgYXJncyk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2Nsb3NlKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAorICAgIHsidGhyb3ciLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3Rocm93LCBNRVRIX1ZBUkFSR1MsIHRocm93X2RvY30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXNlbmRfY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hc2VuZF9hc19hc3luYyA9IHsKKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworUHlUeXBlT2JqZWN0IF9QeUFzeW5jR2VuQVNlbmRfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3JfYXNlbmQiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuQVNlbmQpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fYXNlbmRfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hc2VuZF9hc19hc3luYywgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX2FzZW5kX3RyYXZlcnNlLCAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWFzeW5jX2dlbl9hc2VuZF9pdGVybmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKnNlbmR2YWwpCit7CisgICAgUHlBc3luY0dlbkFTZW5kICpvOworICAgIGlmIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUtLTsKKyAgICAgICAgbyA9IGFnX2FzZW5kX2ZyZWVsaXN0W2FnX2FzZW5kX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW8pOworICAgIH0gZWxzZSB7CisgICAgICAgIG8gPSBQeU9iamVjdF9HQ19OZXcoUHlBc3luY0dlbkFTZW5kLCAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICBvLT5hZ3NfZ2VuID0gZ2VuOworCisgICAgUHlfWElOQ1JFRihzZW5kdmFsKTsKKyAgICBvLT5hZ3Nfc2VuZHZhbCA9IHNlbmR2YWw7CisKKyAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSU5JVDsKKworICAgIF9QeU9iamVjdF9HQ19UUkFDSygoUHlPYmplY3QqKW8pOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgVmFsdWUgV3JhcHBlciAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX3dyYXBwZWRfdmFsX2RlYWxsb2MoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKm8pCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopbyk7CisgICAgUHlfQ0xFQVIoby0+YWd3X3ZhbCk7CisgICAgaWYgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgPCBfUHlBc3luY0dlbl9NQVhGUkVFTElTVCkgeworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIGFnX3ZhbHVlX2ZyZWVsaXN0W2FnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUrK10gPSBvOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvKTsKKyAgICB9Cit9CisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX3dyYXBwZWRfdmFsX3RyYXZlcnNlKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG8tPmFnd192YWwpOworICAgIHJldHVybiAwOworfQorCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl93cmFwcGVkX3ZhbHVlIiwgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlKSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl93cmFwcGVkX3ZhbF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylhc3luY19nZW5fd3JhcHBlZF92YWxfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitQeU9iamVjdCAqCitfUHlBc3luY0dlblZhbHVlV3JhcHBlck5ldyhQeU9iamVjdCAqdmFsKQoreworICAgIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvOworICAgIGFzc2VydCh2YWwpOworCisgICAgaWYgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgYWdfdmFsdWVfZnJlZWxpc3RfZnJlZS0tOworICAgICAgICBvID0gYWdfdmFsdWVfZnJlZWxpc3RbYWdfdmFsdWVfZnJlZWxpc3RfZnJlZV07CisgICAgICAgIGFzc2VydChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KG8pKTsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QqKW8pOworICAgIH0gZWxzZSB7CisgICAgICAgIG8gPSBQeU9iamVjdF9HQ19OZXcoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJl9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX1R5cGUpOworICAgICAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBvLT5hZ3dfdmFsID0gdmFsOworICAgIFB5X0lOQ1JFRih2YWwpOworICAgIF9QeU9iamVjdF9HQ19UUkFDSygoUHlPYmplY3QqKW8pOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworLyogLS0tLS0tLS0tLSBBc3luYyBHZW5lcmF0b3IgQVRocm93IGF3YWl0YWJsZSAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX2F0aHJvd19kZWFsbG9jKFB5QXN5bmNHZW5BVGhyb3cgKm8pCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopbyk7CisgICAgUHlfQ0xFQVIoby0+YWd0X2dlbik7CisgICAgUHlfQ0xFQVIoby0+YWd0X2FyZ3MpOworICAgIFB5T2JqZWN0X0dDX0RlbChvKTsKK30KKworCitzdGF0aWMgaW50Cithc3luY19nZW5fYXRocm93X3RyYXZlcnNlKFB5QXN5bmNHZW5BVGhyb3cgKm8sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG8tPmFndF9nZW4pOworICAgIFB5X1ZJU0lUKG8tPmFndF9hcmdzKTsKKyAgICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19zZW5kKFB5QXN5bmNHZW5BVGhyb3cgKm8sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlHZW5PYmplY3QgKmdlbiA9IChQeUdlbk9iamVjdCopby0+YWd0X2dlbjsKKyAgICBQeUZyYW1lT2JqZWN0ICpmID0gZ2VuLT5naV9mcmFtZTsKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwgfHwKKyAgICAgICAgICAgIG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgaWYgKG8tPmFndF9nZW4tPmFnX2Nsb3NlZCkgeworICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFyZyAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBOT05fSU5JVF9DT1JPX01TRyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9JVEVSOworCisgICAgICAgIGlmIChvLT5hZ3RfYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgICAgICBvLT5hZ3RfZ2VuLT5hZ19jbG9zZWQgPSAxOworCisgICAgICAgICAgICByZXR2YWwgPSBfZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKWdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgIC8qIERvIG5vdCBjbG9zZSBnZW5lcmF0b3Igd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCBpcyBwYXNzZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfR2VuZXJhdG9yRXhpdCwgTlVMTCwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmIChyZXR2YWwgJiYgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgZ290byB5aWVsZF9jbG9zZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0eXA7CisgICAgICAgICAgICBQeU9iamVjdCAqdGIgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisKKyAgICAgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoby0+YWd0X2FyZ3MsICJhdGhyb3ciLCAxLCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwLCAmdmFsLCAmdGIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHZhbCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgLyogRG8gbm90IGNsb3NlIGdlbmVyYXRvciB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19HZW5lcmF0b3JFeGl0IGlzIHBhc3NlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXAsIHZhbCwgdGIpOworICAgICAgICAgICAgcmV0dmFsID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3RfZ2VuLCByZXR2YWwpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBjaGVja19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KKworICAgIGFzc2VydChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lURVIpOworCisgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoKFB5R2VuT2JqZWN0ICopZ2VuLCBhcmcsIDAsIDApOworICAgIGlmIChvLT5hZ3RfYXJncykgeworICAgICAgICByZXR1cm4gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3RfZ2VuLCByZXR2YWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGFjbG9zZSgpIG1vZGUgKi8KKyAgICAgICAgaWYgKHJldHZhbCkgeworICAgICAgICAgICAgaWYgKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgICAgIGdvdG8geWllbGRfY2xvc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZ290byBjaGVja19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworeWllbGRfY2xvc2U6CisgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsIEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHKTsKKyAgICByZXR1cm4gTlVMTDsKKworY2hlY2tfZXJyb3I6CisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKQorICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpCisgICAgKSB7CisgICAgICAgIG8tPmFndF9zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7ICAgICAgICAgIC8qIGlnbm9yZSB0aGVzZSBlcnJvcnMgKi8KKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfdGhyb3coUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHZhbDsKKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgTk9OX0lOSVRfQ09ST19NU0cpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dmFsID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCopby0+YWd0X2dlbiwgYXJncyk7CisgICAgaWYgKG8tPmFndF9hcmdzKSB7CisgICAgICAgIHJldHVybiBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFndF9nZW4sIHJldHZhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogYWNsb3NlKCkgbW9kZSAqLworICAgICAgICBpZiAocmV0dmFsICYmIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QocmV0dmFsKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19pdGVybmV4dChQeUFzeW5jR2VuQVRocm93ICpvKQoreworICAgIHJldHVybiBhc3luY19nZW5fYXRocm93X3NlbmQobywgUHlfTm9uZSk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfY2xvc2UoUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX2F0aHJvd19tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93X3Rocm93LCBNRVRIX1ZBUkFSR1MsIHRocm93X2RvY30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXRocm93X2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBhc3luY19nZW5fYXRocm93X2FzX2FzeW5jID0geworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitQeVR5cGVPYmplY3QgX1B5QXN5bmNHZW5BVGhyb3dfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3JfYXRocm93IiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuQVRocm93KSwgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fYXRocm93X2RlYWxsb2MsICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hdGhyb3dfYXNfYXN5bmMsICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpYXN5bmNfZ2VuX2F0aHJvd190cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWFzeW5jX2dlbl9hdGhyb3dfaXRlcm5leHQsICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX2F0aHJvd19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X25ldyhQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5QXN5bmNHZW5BVGhyb3cgKm87CisgICAgbyA9IFB5T2JqZWN0X0dDX05ldyhQeUFzeW5jR2VuQVRocm93LCAmX1B5QXN5bmNHZW5BVGhyb3dfVHlwZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgby0+YWd0X2dlbiA9IGdlbjsKKyAgICBvLT5hZ3RfYXJncyA9IGFyZ3M7CisgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lOSVQ7CisgICAgUHlfSU5DUkVGKGdlbik7CisgICAgUHlfWElOQ1JFRihhcmdzKTsKKyAgICBfUHlPYmplY3RfR0NfVFJBQ0soKFB5T2JqZWN0KilvKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwppbmRleCBhYjI5ZmY4Li43NWIyZmNiIDEwMDY0NAotLS0gYS9PYmplY3RzL2l0ZXJvYmplY3QuYworKysgYi9PYmplY3RzL2l0ZXJvYmplY3QuYwpAQCAtMjA4LDMwICsyMDgsMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjYWxsaXRlcl9pdGVybmV4dChjYWxsaXRlcm9iamVjdCAqaXQpCiB7Ci0gICAgaWYgKGl0LT5pdF9jYWxsYWJsZSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChpdC0+aXRfY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IG9rOwotICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKLSAgICAgICAgICAgIGlmIChvayA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgaWYgKG9rID4gMCkgewotICAgICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9jYWxsYWJsZSk7Ci0gICAgICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X3NlbnRpbmVsKTsKLSAgICAgICAgICAgIH0KKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKGl0LT5pdF9jYWxsYWJsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoaXQtPml0X2NhbGxhYmxlKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IG9rOworCisgICAgICAgIG9rID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0LT5pdF9zZW50aW5lbCwgcmVzdWx0LCBQeV9FUSk7CisgICAgICAgIGlmIChvayA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OyAvKiBDb21tb24gY2FzZSwgZmFzdCBwYXRoICovCiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgaWYgKG9rID4gMCkgewogICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X2NhbGxhYmxlKTsKICAgICAgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9zZW50aW5lbCk7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBQeV9DTEVBUihpdC0+aXRfY2FsbGFibGUpOworICAgICAgICBQeV9DTEVBUihpdC0+aXRfc2VudGluZWwpOworICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9saXN0b2JqZWN0LmMgYi9PYmplY3RzL2xpc3RvYmplY3QuYwppbmRleCA4MTVhMWI5Li5kY2Q3YjVlIDEwMDY0NAotLS0gYS9PYmplY3RzL2xpc3RvYmplY3QuYworKysgYi9PYmplY3RzL2xpc3RvYmplY3QuYwpAQCAtNDksNyArNDksNyBAQAogICAgIG5ld19hbGxvY2F0ZWQgPSAobmV3c2l6ZSA+PiAzKSArIChuZXdzaXplIDwgOSA/IDMgOiA2KTsKIAogICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCi0gICAgaWYgKG5ld19hbGxvY2F0ZWQgPiBQWV9TSVpFX01BWCAtIG5ld3NpemUpIHsKKyAgICBpZiAobmV3X2FsbG9jYXRlZCA+IFNJWkVfTUFYIC0gbmV3c2l6ZSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlIHsKQEAgLTU5LDcgKzU5LDcgQEAKICAgICBpZiAobmV3c2l6ZSA9PSAwKQogICAgICAgICBuZXdfYWxsb2NhdGVkID0gMDsKICAgICBpdGVtcyA9IHNlbGYtPm9iX2l0ZW07Ci0gICAgaWYgKG5ld19hbGxvY2F0ZWQgPD0gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSkKKyAgICBpZiAobmV3X2FsbG9jYXRlZCA8PSAoU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpKQogICAgICAgICBQeU1lbV9SRVNJWkUoaXRlbXMsIFB5T2JqZWN0ICosIG5ld19hbGxvY2F0ZWQpOwogICAgIGVsc2UKICAgICAgICAgaXRlbXMgPSBOVUxMOwpAQCAtODIsNiArODIsMTYgQEAKIHN0YXRpYyB2b2lkCiBzaG93X2FsbG9jKHZvaWQpCiB7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CisKICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpc3QgYWxsb2NhdGlvbnM6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCiAgICAgICAgIGNvdW50X2FsbG9jKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIkxpc3QgcmV1c2UgdGhyb3VnaCBmcmVlbGlzdDogJSIgUFlfRk9STUFUX1NJWkVfVApAQCAtMTMwLDcgKzE0MCw2IEBACiBQeUxpc3RfTmV3KFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBQeUxpc3RPYmplY3QgKm9wOwotICAgIHNpemVfdCBuYnl0ZXM7CiAjaWZkZWYgU0hPV19BTExPQ19DT1VOVAogICAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKQEAgLTE0MywxMSArMTUyLDYgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgd2l0aG91dCBhbiBhY3R1YWwgb3ZlcmZsb3csCi0gICAgICogIHdoaWNoIGNhbiBjYXVzZSBjb21waWxlciB0byBvcHRpbWlzZSBvdXQgKi8KLSAgICBpZiAoKHNpemVfdClzaXplID4gUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIG5ieXRlcyA9IHNpemUgKiBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgaWYgKG51bWZyZWUpIHsKICAgICAgICAgbnVtZnJlZS0tOwogICAgICAgICBvcCA9IGZyZWVfbGlzdFtudW1mcmVlXTsKQEAgLTE2NiwxMiArMTcwLDExIEBACiAgICAgaWYgKHNpemUgPD0gMCkKICAgICAgICAgb3AtPm9iX2l0ZW0gPSBOVUxMOwogICAgIGVsc2UgewotICAgICAgICBvcC0+b2JfaXRlbSA9IChQeU9iamVjdCAqKikgUHlNZW1fTUFMTE9DKG5ieXRlcyk7CisgICAgICAgIG9wLT5vYl9pdGVtID0gKFB5T2JqZWN0ICoqKSBQeU1lbV9DYWxsb2Moc2l6ZSwgc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgaWYgKG9wLT5vYl9pdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvcCk7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQotICAgICAgICBtZW1zZXQob3AtPm9iX2l0ZW0sIDAsIG5ieXRlcyk7CiAgICAgfQogICAgIFB5X1NJWkUob3ApID0gc2l6ZTsKICAgICBvcC0+YWxsb2NhdGVkID0gc2l6ZTsKQEAgLTIxNiw3ICsyMTksNiBAQAogUHlMaXN0X1NldEl0ZW0oUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksCiAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmV3aXRlbSkKIHsKLSAgICBQeU9iamVjdCAqb2xkaXRlbTsKICAgICBQeU9iamVjdCAqKnA7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5X1hERUNSRUYobmV3aXRlbSk7CkBAIC0yMzAsOSArMjMyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBwID0gKChQeUxpc3RPYmplY3QgKilvcCkgLT4gb2JfaXRlbSArIGk7Ci0gICAgb2xkaXRlbSA9ICpwOwotICAgICpwID0gbmV3aXRlbTsKLSAgICBQeV9YREVDUkVGKG9sZGl0ZW0pOworICAgIFB5X1hTRVRSRUYoKnAsIG5ld2l0ZW0pOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpID09IC0xKQorICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHdoZXJlIDwgMCkgewpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA9PSAtMSkKKyAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbisxKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIFB5X0lOQ1JFRih2KTsKQEAgLTQ4MSw5ICs0ODEsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZGVmaW5lIGIgKChQeUxpc3RPYmplY3QgKiliYikKLSAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7Ci0gICAgaWYgKHNpemUgPCAwKQorICAgIGlmIChQeV9TSVpFKGEpID4gUFlfU1NJWkVfVF9NQVggLSBQeV9TSVpFKGIpKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBzaXplID0gUHlfU0laRShhKSArIFB5X1NJWkUoYik7CiAgICAgbnAgPSAoUHlMaXN0T2JqZWN0ICopIFB5TGlzdF9OZXcoc2l6ZSk7CiAgICAgaWYgKG5wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03MTQsNyArNzE0LDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQogCi0gICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIHNpemUqbikgPT0gLTEpCisgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIHNpemUqbikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHAgPSBzaXplOwpAQCAtNzMzLDcgKzczMyw2IEBACiBzdGF0aWMgaW50CiBsaXN0X2Fzc19pdGVtKFB5TGlzdE9iamVjdCAqYSwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqdikKIHsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOwogICAgIGlmIChpIDwgMCB8fCBpID49IFB5X1NJWkUoYSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBhc3NpZ25tZW50IGluZGV4IG91dCBvZiByYW5nZSIpOwpAQCAtNzQyLDkgKzc0MSw3IEBACiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIGxpc3RfYXNzX3NsaWNlKGEsIGksIGkrMSwgdik7CiAgICAgUHlfSU5DUkVGKHYpOwotICAgIG9sZF92YWx1ZSA9IGEtPm9iX2l0ZW1baV07Ci0gICAgYS0+b2JfaXRlbVtpXSA9IHY7Ci0gICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7CisgICAgUHlfU0VUUkVGKGEtPm9iX2l0ZW1baV0sIHYpOwogICAgIHJldHVybiAwOwogfQogCkBAIC04MDcsNyArODA0LDcgQEAKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgICAgICB9CiAgICAgICAgIG0gPSBQeV9TSVpFKHNlbGYpOwotICAgICAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgbSArIG4pID09IC0xKSB7CisgICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtICsgbikgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODM1LDIzICs4MzIsMjUgQEAKIAogICAgIC8qIEd1ZXNzIGEgcmVzdWx0IGxpc3Qgc2l6ZS4gKi8KICAgICBuID0gUHlPYmplY3RfTGVuZ3RoSGludChiLCA4KTsKLSAgICBpZiAobiA9PSAtMSkgeworICAgIGlmIChuIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgbW4gPSBtICsgbjsKLSAgICBpZiAobW4gPj0gbSkgeworICAgIGlmIChtID4gUFlfU1NJWkVfVF9NQVggLSBuKSB7CisgICAgICAgIC8qIG0gKyBuIG92ZXJmbG93ZWQ7IG9uIHRoZSBjaGFuY2UgdGhhdCBuIGxpZWQsIGFuZCB0aGVyZSByZWFsbHkKKyAgICAgICAgICogaXMgZW5vdWdoIHJvb20sIGlnbm9yZSBpdC4gIElmIG4gd2FzIHRlbGxpbmcgdGhlIHRydXRoLCB3ZSdsbAorICAgICAgICAgKiBldmVudHVhbGx5IHJ1biBvdXQgb2YgbWVtb3J5IGR1cmluZyB0aGUgbG9vcC4KKyAgICAgICAgICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtbiA9IG0gKyBuOwogICAgICAgICAvKiBNYWtlIHJvb20uICovCi0gICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtbikgPT0gLTEpCisgICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtbikgPCAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgLyogTWFrZSB0aGUgbGlzdCBzYW5lIGFnYWluLiAqLwogICAgICAgICBQeV9TSVpFKHNlbGYpID0gbTsKICAgICB9Ci0gICAgLyogRWxzZSBtICsgbiBvdmVyZmxvd2VkOyBvbiB0aGUgY2hhbmNlIHRoYXQgbiBsaWVkLCBhbmQgdGhlcmUgcmVhbGx5Ci0gICAgICogaXMgZW5vdWdoIHJvb20sIGlnbm9yZSBpdC4gIElmIG4gd2FzIHRlbGxpbmcgdGhlIHRydXRoLCB3ZSdsbAotICAgICAqIGV2ZW50dWFsbHkgcnVuIG91dCBvZiBtZW1vcnkgZHVyaW5nIHRoZSBsb29wLgotICAgICAqLwogCiAgICAgLyogUnVuIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24uICovCiAgICAgZm9yICg7OykgewpAQCAtMjUwMCw5ICsyNDk5LDYgQEAKICAgICAgICAgICAgICAgICBzdGVwID0gLXN0ZXA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuZ3RoIDw9Ci0gICAgICAgICAgICAgICAgICAgUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QqKSk7Ci0KICAgICAgICAgICAgIGdhcmJhZ2UgPSAoUHlPYmplY3QqKikKICAgICAgICAgICAgICAgICBQeU1lbV9NQUxMT0Moc2xpY2VsZW5ndGgqc2l6ZW9mKFB5T2JqZWN0KikpOwogICAgICAgICAgICAgaWYgKCFnYXJiYWdlKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3Rzb3J0LnR4dCBiL09iamVjdHMvbGlzdHNvcnQudHh0CmluZGV4IDE1MmEyNzAuLjE3ZDI3OTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdHNvcnQudHh0CisrKyBiL09iamVjdHMvbGlzdHNvcnQudHh0CkBAIC00ODYsNyArNDg2LDcgQEAKIEkgZmlyc3QgbGVhcm5lZCBhYm91dCB0aGUgZ2FsbG9waW5nIHN0cmF0ZWd5IGluIGEgcmVsYXRlZCBjb250ZXh0OyBzZWU6CiAKICAgICAiQWRhcHRpdmUgU2V0IEludGVyc2VjdGlvbnMsIFVuaW9ucywgYW5kIERpZmZlcmVuY2VzIiAoMjAwMCkKLSAgICBFcmlrIEQuIERlbWFpbmUsIEFsZWphbmRybyBM83Blei1PcnRpeiwgSi4gSWFuIE11bnJvCisgICAgRXJpayBELiBEZW1haW5lLCBBbGVqYW5kcm8gTMOzcGV6LU9ydGl6LCBKLiBJYW4gTXVucm8KIAogYW5kIGl0cyBmb2xsb3d1cChzKS4gIEFuIGVhcmxpZXIgcGFwZXIgY2FsbGVkIHRoZSBzYW1lIHN0cmF0ZWd5CiAiZXhwb25lbnRpYWwgc2VhcmNoIjoKZGlmZiAtLWdpdCBhL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dCBiL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dAppbmRleCBkMjQ3ZWRkLi41MTUzNzU3IDEwMDY0NAotLS0gYS9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQKKysrIGIvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0CkBAIC0xMiw0MiArMTIsNDcgQEAKICAgICAgICAgMAkJICAgIDEKICAgICAgICAgNgkJICAgIDIKICAgICAgICA1MAkJICAgIDcKLSAgICAgIDM1MCAgICAgICAgICAgICAgICAgMzA3Ci0gICAgICAzNjEgICAgICAgICAgICAgICAgIDMwOAorICAgICAgMzUwICAgICAgICAgICAgICAgICAyMDcKKyAgICAgIDM2MSAgICAgICAgICAgICAgICAgMjA4CiAKIEluc3RlYWQgb2Ygc3RvcmluZyB0aGVzZSBudW1iZXJzIGxpdGVyYWxseSwgd2UgY29tcHJlc3MgdGhlIGxpc3QgYnkgc3RvcmluZyBvbmx5Ci10aGUgaW5jcmVtZW50cyBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQuICBDb25jZXB0dWFsbHksIHRoZSBzdG9yZWQgbGlzdCBtaWdodAordGhlIGRpZmZlcmVuY2UgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LiAgQ29uY2VwdHVhbGx5LCB0aGUgc3RvcmVkIGxpc3QgbWlnaHQKIGxvb2sgbGlrZToKIAotICAgIDAsIDEsICA2LCAxLCAgNDQsIDUsICAzMDAsIDMwMCwgIDExLCAxCisgICAgMCwgMSwgIDYsIDEsICA0NCwgNSwgIDMwMCwgMjAwLCAgMTEsIDEKIAotVGhlIGFib3ZlIGRvZXNuJ3QgcmVhbGx5IHdvcmssIGJ1dCBpdCdzIGEgc3RhcnQuIE5vdGUgdGhhdCBhbiB1bnNpZ25lZCBieXRlCi1jYW4ndCBob2xkIG5lZ2F0aXZlIHZhbHVlcywgb3IgdmFsdWVzIGxhcmdlciB0aGFuIDI1NSwgYW5kIHRoZSBhYm92ZSBleGFtcGxlCi1jb250YWlucyB0d28gc3VjaCB2YWx1ZXMuIFNvIHdlIG1ha2UgdHdvIHR3ZWFrczoKK1RoZSBhYm92ZSBkb2Vzbid0IHJlYWxseSB3b3JrLCBidXQgaXQncyBhIHN0YXJ0LiBBbiB1bnNpZ25lZCBieXRlIChieXRlIGNvZGUKK29mZnNldCkgY2FuJ3QgaG9sZCBuZWdhdGl2ZSB2YWx1ZXMsIG9yIHZhbHVlcyBsYXJnZXIgdGhhbiAyNTUsIGEgc2lnbmVkIGJ5dGUKKyhsaW5lIG51bWJlcikgY2FuJ3QgaG9sZCB2YWx1ZXMgbGFyZ2VyIHRoYW4gMTI3IG9yIGxlc3MgdGhhbiAtMTI4LCBhbmQgdGhlCithYm92ZSBleGFtcGxlIGNvbnRhaW5zIHR3byBzdWNoIHZhbHVlcy4gU28gd2UgbWFrZSB0d28gdHdlYWtzOgogCi0gKGEpIHRoZXJlJ3MgYSBkZWVwIGFzc3VtcHRpb24gdGhhdCBieXRlIGNvZGUgb2Zmc2V0cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZwotIGxpbmUgI3MgYm90aCBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LCBhbmQKLSAoYikgaWYgYXQgbGVhc3Qgb25lIGNvbHVtbiBqdW1wcyBieSBtb3JlIHRoYW4gMjU1IGZyb20gb25lIHJvdyB0byB0aGUgbmV4dCwKLSBtb3JlIHRoYW4gb25lIHBhaXIgaXMgd3JpdHRlbiB0byB0aGUgdGFibGUuIEluIGNhc2UgI2IsIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cKLSBmcm9tIGxvb2tpbmcgYXQgdGhlIHRhYmxlIGxhdGVyIGhvdyBtYW55IHdlcmUgd3JpdHRlbi4gIFRoYXQncyB0aGUgZGVsaWNhdGUKLSBwYXJ0LiAgQSB1c2VyIG9mIGNvX2xub3RhYiBkZXNpcmluZyB0byBmaW5kIHRoZSBzb3VyY2UgbGluZSBudW1iZXIKLSBjb3JyZXNwb25kaW5nIHRvIGEgYnl0ZWNvZGUgYWRkcmVzcyBBIHNob3VsZCBkbyBzb21ldGhpbmcgbGlrZSB0aGlzCisgKGEpIHRoZXJlJ3MgYSBkZWVwIGFzc3VtcHRpb24gdGhhdCBieXRlIGNvZGUgb2Zmc2V0cyBpbmNyZWFzZSBtb25vdG9uaWNhbGx5LAorIGFuZAorIChiKSBpZiBieXRlIGNvZGUgb2Zmc2V0IGp1bXBzIGJ5IG1vcmUgdGhhbiAyNTUgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LCBvciBpZgorIHNvdXJjZSBjb2RlIGxpbmUgbnVtYmVyIGp1bXBzIGJ5IG1vcmUgdGhhbiAxMjcgb3IgbGVzcyB0aGFuIC0xMjggZnJvbSBvbmUgcm93CisgdG8gdGhlIG5leHQsIG1vcmUgdGhhbiBvbmUgcGFpciBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZS4gSW4gY2FzZSAjYiwKKyB0aGVyZSdzIG5vIHdheSB0byBrbm93IGZyb20gbG9va2luZyBhdCB0aGUgdGFibGUgbGF0ZXIgaG93IG1hbnkgd2VyZSB3cml0dGVuLgorIFRoYXQncyB0aGUgZGVsaWNhdGUgcGFydC4gIEEgdXNlciBvZiBjb19sbm90YWIgZGVzaXJpbmcgdG8gZmluZCB0aGUgc291cmNlCisgbGluZSBudW1iZXIgY29ycmVzcG9uZGluZyB0byBhIGJ5dGVjb2RlIGFkZHJlc3MgQSBzaG91bGQgZG8gc29tZXRoaW5nIGxpa2UKKyB0aGlzOgogCiAgICAgbGluZW5vID0gYWRkciA9IDAKICAgICBmb3IgYWRkcl9pbmNyLCBsaW5lX2luY3IgaW4gY29fbG5vdGFiOgogICAgICAgICBhZGRyICs9IGFkZHJfaW5jcgogICAgICAgICBpZiBhZGRyID4gQToKICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KKyAgICAgICAgaWYgbGluZV9pbmNyID49IDB4ODA6CisgICAgICAgICAgICBsaW5lX2luY3IgLT0gMHgxMDAKICAgICAgICAgbGluZW5vICs9IGxpbmVfaW5jcgogCiAoSW4gQywgdGhpcyBpcyBpbXBsZW1lbnRlZCBieSBQeUNvZGVfQWRkcjJMaW5lKCkuKSAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yaywKIHdoZW4gdGhlIGFkZHIgZmllbGQgaW5jcmVtZW50cyBieSBtb3JlIHRoYW4gMjU1LCB0aGUgbGluZSAjIGluY3JlbWVudCBpbiBlYWNoCiBwYWlyIGdlbmVyYXRlZCBtdXN0IGJlIDAgdW50aWwgdGhlIHJlbWFpbmluZyBhZGRyIGluY3JlbWVudCBpcyA8IDI1Ni4gIFNvLCBpbgogdGhlIGV4YW1wbGUgYWJvdmUsIGFzc2VtYmxlX2xub3RhYiBpbiBjb21waWxlLmMgc2hvdWxkIG5vdCAoYXMgd2FzIGFjdHVhbGx5IGRvbmUKLXVudGlsIDIuMikgZXhwYW5kIDMwMCwgMzAwIHRvCit1bnRpbCAyLjIpIGV4cGFuZCAzMDAsIDIwMCB0bwogICAgIDI1NSwgMjU1LCA0NSwgNDUsCiBidXQgdG8KLSAgICAyNTUsIDAsIDQ1LCAyNTUsIDAsIDQ1LgorICAgIDI1NSwgMCwgNDUsIDEyOCwgMCwgNzIuCiAKIFRoZSBhYm92ZSBpcyBzdWZmaWNpZW50IHRvIHJlY29uc3RydWN0IGxpbmUgbnVtYmVycyBmb3IgdHJhY2ViYWNrcywgYnV0IG5vdCBmb3IKIGxpbmUgdHJhY2luZy4gIFRyYWNpbmcgaXMgaGFuZGxlZCBieSBQeUNvZGVfQ2hlY2tMaW5lTnVtYmVyKCkgaW4gY29kZW9iamVjdC5jCkBAIC05MCwxNiArOTUsMTYgQEAKICAgICAgICAgICAgICAgNiBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICAxNwogCiAgIDMgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgMTIgUFJJTlRfSVRFTSAgICAgICAgICAKKyAgICAgICAgICAgICAxMiBQUklOVF9JVEVNCiAKLSAgNCAgICAgICAgICAxMyBCUkVBS19MT09QICAgICAgICAgIAorICA0ICAgICAgICAgIDEzIEJSRUFLX0xPT1AKICAgICAgICAgICAgICAxNCBKVU1QX0FCU09MVVRFICAgICAgICAgICAgMwotICAgICAgICA+PiAgIDE3IFBPUF9CTE9DSyAgICAgICAgICAgCisgICAgICAgID4+ICAgMTcgUE9QX0JMT0NLCiAKICAgNiAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMikKLSAgICAgICAgICAgICAyMSBQUklOVF9JVEVNICAgICAgICAgIAorICAgICAgICAgICAgIDIxIFBSSU5UX0lURU0KICAgICAgICAgPj4gICAyMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAyNSBSRVRVUk5fVkFMVUUgICAgICAgIAorICAgICAgICAgICAgIDI1IFJFVFVSTl9WQUxVRQogCiBJZiAnYScgaXMgZmFsc2UsIGV4ZWN1dGlvbiB3aWxsIGp1bXAgdG8gdGhlIFBPUF9CTE9DSyBpbnN0cnVjdGlvbiBhdCBvZmZzZXQgMTcKIGFuZCB0aGUgY29fbG5vdGFiIHdpbGwgY2xhaW0gdGhhdCBleGVjdXRpb24gaGFzIG1vdmVkIHRvIGxpbmUgNCwgd2hpY2ggaXMgd3JvbmcuCmRpZmYgLS1naXQgYS9PYmplY3RzL2xvbmdvYmplY3QuYyBiL09iamVjdHMvbG9uZ29iamVjdC5jCmluZGV4IDg1MTBlOTAuLmFkMjM5Y2UgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG9uZ29iamVjdC5jCisrKyBiL09iamVjdHMvbG9uZ29iamVjdC5jCkBAIC03MjIsNyArNzIyLDcgQEAKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwotICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gUFlfU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKKyAgICAgICAgaWYgKChzaXplX3QpKG5kaWdpdHMgLSAxKSA+IFNJWkVfTUFYIC8gKHNpemVfdClQeUxvbmdfU0hJRlQpCiAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OwogICAgICAgICByZXN1bHQgPSAoc2l6ZV90KShuZGlnaXRzIC0gMSkgKiAoc2l6ZV90KVB5TG9uZ19TSElGVDsKICAgICAgICAgZG8gewpAQCAtOTkwLDE2ICs5OTAsMTMgQEAKIFB5TG9uZ19Gcm9tVm9pZFB0cih2b2lkICpwKQogewogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpKFB5X3VpbnRwdHJfdClwKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKHVuc2lnbmVkIGxvbmcpKHVpbnRwdHJfdClwKTsKICNlbHNlCiAKLSNpZm5kZWYgSEFWRV9MT05HX0xPTkcKLSMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VuZGlmCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjICAgZXJyb3IgIlB5TG9uZ19Gcm9tVm9pZFB0cjogc2l6ZW9mKGxvbmcgbG9uZykgPCBzaXplb2Yodm9pZCopIgogI2VuZGlmCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgUFlfTE9OR19MT05HKShQeV91aW50cHRyX3QpcCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgbG9uZyBsb25nKSh1aW50cHRyX3QpcCk7CiAjZW5kaWYgLyogU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORyAqLwogCiB9CkBAIC0xMDE4LDEzICsxMDE1LDEwIEBACiAgICAgICAgIHggPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcodnYpOwogI2Vsc2UKIAotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2Yodm9pZCopID4gc2l6ZW9mKGxvbmcpLCBidXQgbm8gbG9uZyBsb25nIgotI2VuZGlmCiAjaWYgU0laRU9GX0xPTkdfTE9ORyA8IFNJWkVPRl9WT0lEX1AKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKFBZX0xPTkdfTE9ORykgPCBzaXplb2Yodm9pZCopIgorIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2sodnYpICYmIF9QeUxvbmdfU2lnbih2dikgPCAwKQogICAgICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcodnYpOwpAQCAtMTAzOCwyMiArMTAzMiwyMCBAQAogICAgIHJldHVybiAodm9pZCAqKXg7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCi0vKiBJbml0aWFsIFBZX0xPTkdfTE9ORyBzdXBwb3J0IGJ5IENocmlzIEhlcmJvcnRoIChjaHJpc2hAcW54LmNvbSksIGxhdGVyCisvKiBJbml0aWFsIGxvbmcgbG9uZyBzdXBwb3J0IGJ5IENocmlzIEhlcmJvcnRoIChjaHJpc2hAcW54LmNvbSksIGxhdGVyCiAgKiByZXdyaXR0ZW4gdG8gdXNlIHRoZSBuZXdlciBQeUxvbmdfe0FzLEZyb219Qnl0ZUFycmF5IEFQSS4KICAqLwogCi0jZGVmaW5lIFBZX0FCU19MTE9OR19NSU4gKDAtKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylQWV9MTE9OR19NSU4pCisjZGVmaW5lIFBZX0FCU19MTE9OR19NSU4gKDAtKHVuc2lnbmVkIGxvbmcgbG9uZylQWV9MTE9OR19NSU4pCiAKLS8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIFBZX0xPTkdfTE9ORyBpbnQuICovCisvKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyBsb25nIGxvbmcgaW50LiAqLwogCiBQeU9iamVjdCAqCi1QeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyBpdmFsKQorUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgaXZhbCkKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGFic19pdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB0OyAgLyogdW5zaWduZWQgc28gPj4gZG9lc24ndCBwcm9wYWdhdGUgc2lnbiBiaXQgKi8KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWJzX2l2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHQ7ICAvKiB1bnNpZ25lZCBzbyA+PiBkb2Vzbid0IHByb3BhZ2F0ZSBzaWduIGJpdCAqLwogICAgIGludCBuZGlnaXRzID0gMDsKICAgICBpbnQgbmVnYXRpdmUgPSAwOwogCkBAIC0xMDYxLDExICsxMDUzLDExIEBACiAgICAgaWYgKGl2YWwgPCAwKSB7CiAgICAgICAgIC8qIGF2b2lkIHNpZ25lZCBvdmVyZmxvdyBvbiBuZWdhdGlvbjsgIHNlZSBjb21tZW50cwogICAgICAgICAgICBpbiBQeUxvbmdfRnJvbUxvbmcgYWJvdmUuICovCi0gICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoLTEtaXZhbCkgKyAxOworICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKC0xLWl2YWwpICsgMTsKICAgICAgICAgbmVnYXRpdmUgPSAxOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKWl2YWw7CisgICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZylpdmFsOwogICAgIH0KIAogICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgUHl0aG9uIGRpZ2l0cy4KQEAgLTEwOTAsMTkgKzEwODIsMTkgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKIH0KIAotLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgdW5zaWduZWQgUFlfTE9OR19MT05HIGludC4gKi8KKy8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQuICovCiAKIFB5T2JqZWN0ICoKLVB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBQWV9MT05HX0xPTkcgaXZhbCkKK1B5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBsb25nIGxvbmcgaXZhbCkKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHQ7CiAgICAgaW50IG5kaWdpdHMgPSAwOwogCiAgICAgaWYgKGl2YWwgPCBQeUxvbmdfQkFTRSkKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpdmFsKTsKICAgICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIFB5dGhvbiBkaWdpdHMuICovCi0gICAgdCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpaXZhbDsKKyAgICB0ID0gKHVuc2lnbmVkIGxvbmcgbG9uZylpdmFsOwogICAgIHdoaWxlICh0KSB7CiAgICAgICAgICsrbmRpZ2l0czsKICAgICAgICAgdCA+Pj0gUHlMb25nX1NISUZUOwpAQCAtMTE5MSwxMSArMTE4MywxMSBAQAogLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdCBvciBhbnkgb2JqZWN0IHRoYXQgaGFzIGFuCiAgICBfX2ludF9fIG1ldGhvZC4gIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KIAotUFlfTE9OR19MT05HCitsb25nIGxvbmcKIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICp2dikKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgUFlfTE9OR19MT05HIGJ5dGVzOworICAgIGxvbmcgbG9uZyBieXRlczsKICAgICBpbnQgcmVzOwogICAgIGludCBkb19kZWNyZWYgPSAwOyAvKiBpZiBuYl9pbnQgd2FzIGNhbGxlZCAqLwogCkBAIC0xMjMzLDMwICsxMjI1LDMwIEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9CiAKLSAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIFBZX0xPTkdfTE9ORyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KKyAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIGxvbmcgbG9uZyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIChQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAobG9uZyBsb25nKS0xOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGJ5dGVzOwogfQogCi0vKiBHZXQgYSBDIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LgorLyogR2V0IGEgQyB1bnNpZ25lZCBsb25nIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdC4KICAgIFJldHVybiAtMSBhbmQgc2V0IGFuIGVycm9yIGlmIG92ZXJmbG93IG9jY3Vycy4gKi8KIAotdW5zaWduZWQgUFlfTE9OR19MT05HCit1bnNpZ25lZCBsb25nIGxvbmcKIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYnl0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzOwogICAgIGludCByZXM7CiAKICAgICBpZiAodnYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogICAgIH0KICAgICBpZiAoIVB5TG9uZ19DaGVjayh2dikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKQEAgLTEyNjgsOSArMTI2MCw5IEBACiAgICAgcmVzID0gX1B5TG9uZ19Bc0J5dGVBcnJheSgoUHlMb25nT2JqZWN0ICopdnYsICh1bnNpZ25lZCBjaGFyICopJmJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRU9GX0xPTkdfTE9ORywgUFlfTElUVExFX0VORElBTiwgMCk7CiAKLSAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIFBZX0xPTkdfTE9ORyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KKyAgICAvKiBQbGFuIDkgY2FuJ3QgaGFuZGxlIGxvbmcgbG9uZyBpbiA/IDogZXhwcmVzc2lvbnMgKi8KICAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpcmVzOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZylyZXM7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gYnl0ZXM7CiB9CkBAIC0xMjc4LDExICsxMjcwLDExIEBACiAvKiBHZXQgYSBDIHVuc2lnbmVkIGxvbmcgaW50IGZyb20gYW4gaW50IG9iamVjdCwgaWdub3JpbmcgdGhlIGhpZ2ggYml0cy4KICAgIFJldHVybnMgLTEgYW5kIHNldHMgYW4gZXJyb3IgY29uZGl0aW9uIGlmIGFuIGVycm9yIG9jY3Vycy4gKi8KIAotc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZwogX1B5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICp2dikKIHsKICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgUHlfc3NpemVfdCBpOwogICAgIGludCBzaWduOwogCkBAIC0xMzA4LDExICsxMzAwLDExIEBACiAgICAgcmV0dXJuIHggKiBzaWduOwogfQogCi11bnNpZ25lZCBQWV9MT05HX0xPTkcKK3Vuc2lnbmVkIGxvbmcgbG9uZwogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKm9wKQogewogICAgIFB5TG9uZ09iamVjdCAqbG87Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogCiAgICAgaWYgKG9wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC0xMzI1LDcgKzEzMTcsNyBAQAogCiAgICAgbG8gPSBfUHlMb25nX0Zyb21OYkludChvcCk7CiAgICAgaWYgKGxvID09IE5VTEwpCi0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKIAogICAgIHZhbCA9IF9QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaygoUHlPYmplY3QgKilsbyk7CiAgICAgUHlfREVDUkVGKGxvKTsKQEAgLTEzNDIsMTMgKzEzMzQsMTMgQEAKICAgIEluIHRoaXMgY2FzZSAqb3ZlcmZsb3cgd2lsbCBiZSAwLgogKi8KIAotUFlfTE9OR19MT05HCitsb25nIGxvbmcKIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKnZ2LCBpbnQgKm92ZXJmbG93KQogewogICAgIC8qIFRoaXMgdmVyc2lvbiBieSBUaW0gUGV0ZXJzICovCiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4LCBwcmV2OwotICAgIFBZX0xPTkdfTE9ORyByZXM7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHgsIHByZXY7CisgICAgbG9uZyBsb25nIHJlczsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ247CiAgICAgaW50IGRvX2RlY3JlZiA9IDA7IC8qIGlmIG5iX2ludCB3YXMgY2FsbGVkICovCkBAIC0xNDAwLDggKzEzOTIsOCBAQAogICAgICAgICAvKiBIYXZlbid0IGxvc3QgYW55IGJpdHMsIGJ1dCBjYXN0aW5nIHRvIGxvbmcgcmVxdWlyZXMgZXh0cmEKICAgICAgICAgICogY2FyZSAoc2VlIGNvbW1lbnQgYWJvdmUpLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKHggPD0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylQWV9MTE9OR19NQVgpIHsKLSAgICAgICAgICAgIHJlcyA9IChQWV9MT05HX0xPTkcpeCAqIHNpZ247CisgICAgICAgIGlmICh4IDw9ICh1bnNpZ25lZCBsb25nIGxvbmcpUFlfTExPTkdfTUFYKSB7CisgICAgICAgICAgICByZXMgPSAobG9uZyBsb25nKXggKiBzaWduOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHNpZ24gPCAwICYmIHggPT0gUFlfQUJTX0xMT05HX01JTikgewogICAgICAgICAgICAgcmVzID0gUFlfTExPTkdfTUlOOwpAQCAtMTQxOCw4ICsxNDEwLDYgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KLQogI2RlZmluZSBDSEVDS19CSU5PUCh2LHcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikgfHwgIVB5TG9uZ19DaGVjayh3KSkgICAgICAgXApAQCAtMTU4MywxMyArMTU3MywxNiBAQAogc3RhdGljIGludAogbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqYWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqYnl0ZXNfd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqYnl0ZXNfc3RyKQogewogICAgIFB5TG9uZ09iamVjdCAqc2NyYXRjaCwgKmE7Ci0gICAgUHlPYmplY3QgKnN0cjsKKyAgICBQeU9iamVjdCAqc3RyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemUsIHN0cmxlbiwgc2l6ZV9hLCBpLCBqOwogICAgIGRpZ2l0ICpwb3V0LCAqcGluLCByZW0sIHRlbnBvdzsKICAgICBpbnQgbmVnYXRpdmU7CisgICAgaW50IGQ7CiAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwogCiAgICAgYSA9IChQeUxvbmdPYmplY3QgKilhYTsKQEAgLTE2MDcsMTUgKzE2MDAsMTcgQEAKIAogICAgICAgIEJ1dCBsb2cyKGEpIDwgc2l6ZV9hICogUHlMb25nX1NISUZULCBhbmQKICAgICAgICBsb2cyKF9QeUxvbmdfREVDSU1BTF9CQVNFKSA9IGxvZzIoMTApICogX1B5TG9uZ19ERUNJTUFMX1NISUZUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiAzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKKworICAgICAgICAgc2l6ZV9hICogUHlMb25nX1NISUZUIC8gKDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkgPQorICAgICAgICAgICAgIHNpemVfYSArIHNpemVfYSAvIGQgPCBzaXplX2EgKyBzaXplX2EgLyBmbG9vcihkKSwKKyAgICAgICB3aGVyZSBkID0gKDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCkgLworICAgICAgICAgICAgICAgICAoUHlMb25nX1NISUZUIC0gMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKQogICAgICovCi0gICAgaWYgKHNpemVfYSA+IFBZX1NTSVpFX1RfTUFYIC8gUHlMb25nX1NISUZUKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludCB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgLyogdGhlIGV4cHJlc3Npb24gc2l6ZV9hICogUHlMb25nX1NISUZUIGlzIG5vdyBzYWZlIGZyb20gb3ZlcmZsb3cgKi8KLSAgICBzaXplID0gMSArIHNpemVfYSAqIFB5TG9uZ19TSElGVCAvICgzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKTsKKyAgICBkID0gKDMzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSAvCisgICAgICAgICgxMCAqIFB5TG9uZ19TSElGVCAtIDMzICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKTsKKyAgICBhc3NlcnQoc2l6ZV9hIDwgUFlfU1NJWkVfVF9NQVgvMik7CisgICAgc2l6ZSA9IDEgKyBzaXplX2EgKyBzaXplX2EgLyBkOwogICAgIHNjcmF0Y2ggPSBfUHlMb25nX05ldyhzaXplKTsKICAgICBpZiAoc2NyYXRjaCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNjYzLDcgKzE2NTgsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOwotICAgICAgICBzdHIgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKmJ5dGVzX3N0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoYnl0ZXNfd3JpdGVyLCAqYnl0ZXNfc3RyLCBzdHJsZW4pOworICAgICAgICBpZiAoKmJ5dGVzX3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9OZXcoc3RybGVuLCAnOScpOwpAQCAtMTY3NCwxMyArMTY3NSw4IEBACiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOwogICAgIH0KIAotI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgV1JJVEVfRElHSVRTKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzdHJsZW47IFwKLSAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHN0cikgKyBzdHJsZW47ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgLyogcG91dFswXSB0aHJvdWdoIHBvdXRbc2l6ZS0yXSBjb250cmlidXRlIGV4YWN0bHkgICAgICAgICAgICBcCiAgICAgICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemUgLSAxOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3MDAsNiArMTY5NiwxNiBAQAogICAgICAgICAvKiBhbmQgc2lnbiAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJy0nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgV1JJVEVfVU5JQ09ERV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzdHJsZW47IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHN0cikgKyBzdHJsZW47ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgV1JJVEVfRElHSVRTKHApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNzA5LDI1ICsxNzE1LDM0IEBACiAgICAgfSB3aGlsZSAoMCkKIAogICAgIC8qIGZpbGwgdGhlIHN0cmluZyByaWdodC10by1sZWZ0ICovCi0gICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgIGNoYXIgKnAgPSAqYnl0ZXNfc3RyICsgc3RybGVuOworICAgICAgICBXUklURV9ESUdJVFMocCk7CisgICAgICAgIGFzc2VydChwID09ICpieXRlc19zdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzEgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMiAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MyKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X1VDUzQgKnA7CiAgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTNCk7CiAgICAgfQogI3VuZGVmIFdSSVRFX0RJR0lUUworI3VuZGVmIFdSSVRFX1VOSUNPREVfRElHSVRTCiAKICAgICBQeV9ERUNSRUYoc2NyYXRjaCk7CiAgICAgaWYgKHdyaXRlcikgewogICAgICAgICB3cml0ZXItPnBvcyArPSBzdHJsZW47CiAgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAoKmJ5dGVzX3N0cikgKz0gc3RybGVuOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKICAgICAgICAgKnBfb3V0cHV0ID0gKFB5T2JqZWN0ICopc3RyOwpAQCAtMTczOSw3ICsxNzU0LDcgQEAKIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQogewogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCkgPT0gLTEpCisgICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMLCBOVUxMLCBOVUxMKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC0xNzUxLDEwICsxNzY2LDExIEBACiAKIHN0YXRpYyBpbnQKIGxvbmdfZm9ybWF0X2JpbmFyeShQeU9iamVjdCAqYWEsIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlLAotICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXIgKmJ5dGVzX3dyaXRlciwgY2hhciAqKmJ5dGVzX3N0cikKIHsKICAgICBQeUxvbmdPYmplY3QgKmEgPSAoUHlMb25nT2JqZWN0ICopYWE7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgUHlPYmplY3QgKnYgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3o7CiAgICAgUHlfc3NpemVfdCBzaXplX2E7CiAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOwpAQCAtMTgxMSw3ICsxODI3LDExIEBACiAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzeiwgJ3gnKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKLSAgICAgICAgdiA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAqYnl0ZXNfc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShieXRlc193cml0ZXIsICpieXRlc19zdHIsIHN6KTsKKyAgICAgICAgaWYgKCpieXRlc19zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHN6LCAneCcpOwpAQCAtMTgyMCwxMyArMTg0MCw4IEBACiAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh2KTsKICAgICB9CiAKLSNkZWZpbmUgV1JJVEVfRElHSVRTKFRZUEUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgV1JJVEVfRElHSVRTKHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoc2l6ZV9hID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKi0tcCA9ICcwJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTg2MSwzMCArMTg3Niw1MCBAQAogICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgKi0tcCA9ICctJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgV1JJVEVfVU5JQ09ERV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MgKyBzejsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSArIHN6OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUklURV9ESUdJVFMocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcykpOyBcCiAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikpOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKIAotICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICBjaGFyICpwID0gKmJ5dGVzX3N0ciArIHN6OworICAgICAgICBXUklURV9ESUdJVFMocCk7CisgICAgICAgIGFzc2VydChwID09ICpieXRlc19zdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIFB5X1VDUzEgKnA7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTMSk7CiAgICAgfQogICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMiAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MyKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X1VDUzQgKnA7CiAgICAgICAgIGFzc2VydCAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1M0KTsKKyAgICAgICAgV1JJVEVfVU5JQ09ERV9ESUdJVFMoUHlfVUNTNCk7CiAgICAgfQogI3VuZGVmIFdSSVRFX0RJR0lUUworI3VuZGVmIFdSSVRFX1VOSUNPREVfRElHSVRTCiAKICAgICBpZiAod3JpdGVyKSB7CiAgICAgICAgIHdyaXRlci0+cG9zICs9IHN6OwogICAgIH0KKyAgICBlbHNlIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgKCpieXRlc19zdHIpICs9IHN6OworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CiAgICAgICAgICpwX291dHB1dCA9IHY7CkBAIC0xODk4LDkgKzE5MzMsOSBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgaW50IGVycjsKICAgICBpZiAoYmFzZSA9PSAxMCkKLSAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwpOworICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMKTsKKyAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKGVyciA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHN0cjsKQEAgLTE5MTIsOSArMTk0NywzMSBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCiB7CiAgICAgaWYgKGJhc2UgPT0gMTApCi0gICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworfQorCitjaGFyKgorX1B5TG9uZ19Gb3JtYXRCeXRlc1dyaXRlcihfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlLCBpbnQgYWx0ZXJuYXRlKQoreworICAgIGNoYXIgKnN0cjI7CisgICAgaW50IHJlczsKKyAgICBzdHIyID0gc3RyOworICAgIGlmIChiYXNlID09IDEwKQorICAgICAgICByZXMgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIsICZzdHIyKTsKKyAgICBlbHNlCisgICAgICAgIHJlcyA9IGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIGFsdGVybmF0ZSwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwgJnN0cjIpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoc3RyMiAhPSBOVUxMKTsKKyAgICByZXR1cm4gc3RyMjsKIH0KIAogLyogVGFibGUgb2YgZGlnaXQgdmFsdWVzIGZvciA4LWJpdCBzdHJpbmcgLT4gaW50ZWdlciBjb252ZXJzaW9uLgpAQCAtMTk0OCwxMiArMjAwNSwxOCBAQAogICogbm9uLWRpZ2l0ICh3aGljaCBtYXkgYmUgKnN0ciEpLiAgQSBub3JtYWxpemVkIGludCBpcyByZXR1cm5lZC4KICAqIFRoZSBwb2ludCB0byB0aGlzIHJvdXRpbmUgaXMgdGhhdCBpdCB0YWtlcyB0aW1lIGxpbmVhciBpbiB0aGUgbnVtYmVyIG9mCiAgKiBzdHJpbmcgY2hhcmFjdGVycy4KKyAqCisgKiBSZXR1cm4gdmFsdWVzOgorICogICAtMSBvbiBzeW50YXggZXJyb3IgKGV4Y2VwdGlvbiBuZWVkcyB0byBiZSBzZXQsICpyZXMgaXMgdW50b3VjaGVkKQorICogICAwIGVsc2UgKGV4Y2VwdGlvbiBtYXkgYmUgc2V0LCBpbiB0aGF0IGNhc2UgKnJlcyBpcyBzZXQgdG8gTlVMTCkKICAqLwotc3RhdGljIFB5TG9uZ09iamVjdCAqCi1sb25nX2Zyb21fYmluYXJ5X2Jhc2UoY29uc3QgY2hhciAqKnN0ciwgaW50IGJhc2UpCitzdGF0aWMgaW50Citsb25nX2Zyb21fYmluYXJ5X2Jhc2UoY29uc3QgY2hhciAqKnN0ciwgaW50IGJhc2UsIFB5TG9uZ09iamVjdCAqKnJlcykKIHsKICAgICBjb25zdCBjaGFyICpwID0gKnN0cjsKICAgICBjb25zdCBjaGFyICpzdGFydCA9IHA7CisgICAgY2hhciBwcmV2ID0gMDsKKyAgICBpbnQgZGlnaXRzID0gMDsKICAgICBpbnQgYml0c19wZXJfY2hhcjsKICAgICBQeV9zc2l6ZV90IG47CiAgICAgUHlMb25nT2JqZWN0ICp6OwpAQCAtMTk2MywyMyArMjAyNiw0MyBAQAogCiAgICAgYXNzZXJ0KGJhc2UgPj0gMiAmJiBiYXNlIDw9IDMyICYmIChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCk7CiAgICAgbiA9IGJhc2U7Ci0gICAgZm9yIChiaXRzX3Blcl9jaGFyID0gLTE7IG47ICsrYml0c19wZXJfY2hhcikKKyAgICBmb3IgKGJpdHNfcGVyX2NoYXIgPSAtMTsgbjsgKytiaXRzX3Blcl9jaGFyKSB7CiAgICAgICAgIG4gPj49IDE7Ci0gICAgLyogbiA8LSB0b3RhbCAjIG9mIGJpdHMgbmVlZGVkLCB3aGlsZSBzZXR0aW5nIHAgdG8gZW5kLW9mLXN0cmluZyAqLwotICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXSA8IGJhc2UpCisgICAgfQorICAgIC8qIGNvdW50IGRpZ2l0cyBhbmQgc2V0IHAgdG8gZW5kLW9mLXN0cmluZyAqLworICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXSA8IGJhc2UgfHwgKnAgPT0gJ18nKSB7CisgICAgICAgIGlmICgqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICAgICAgICAgICpzdHIgPSBwIC0gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICArK2RpZ2l0czsKKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gKnA7CiAgICAgICAgICsrcDsKKyAgICB9CisgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgIC8qIFRyYWlsaW5nIHVuZGVyc2NvcmUgbm90IGFsbG93ZWQuICovCisgICAgICAgICpzdHIgPSBwIC0gMTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgICpzdHIgPSBwOwogICAgIC8qIG4gPC0gIyBvZiBQeXRob24gZGlnaXRzIG5lZWRlZCwgPSBjZWlsaW5nKG4vUHlMb25nX1NISUZUKS4gKi8KLSAgICBuID0gKHAgLSBzdGFydCkgKiBiaXRzX3Blcl9jaGFyICsgUHlMb25nX1NISUZUIC0gMTsKKyAgICBuID0gZGlnaXRzICogYml0c19wZXJfY2hhciArIFB5TG9uZ19TSElGVCAtIDE7CiAgICAgaWYgKG4gLyBiaXRzX3Blcl9jaGFyIDwgcCAtIHN0YXJ0KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludCBzdHJpbmcgdG9vIGxhcmdlIHRvIGNvbnZlcnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICpyZXMgPSBOVUxMOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgbiA9IG4gLyBQeUxvbmdfU0hJRlQ7CiAgICAgeiA9IF9QeUxvbmdfTmV3KG4pOwotICAgIGlmICh6ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh6ID09IE5VTEwpIHsKKyAgICAgICAgKnJlcyA9IE5VTEw7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICAvKiBSZWFkIHN0cmluZyBmcm9tIHJpZ2h0LCBhbmQgZmlsbCBpbiBpbnQgZnJvbSBsZWZ0OyBpLmUuLAogICAgICAqIGZyb20gbGVhc3QgdG8gbW9zdCBzaWduaWZpY2FudCBpbiBib3RoLgogICAgICAqLwpAQCAtMTk4Nyw3ICsyMDcwLDExIEBACiAgICAgYml0c19pbl9hY2N1bSA9IDA7CiAgICAgcGRpZ2l0ID0gei0+b2JfZGlnaXQ7CiAgICAgd2hpbGUgKC0tcCA+PSBzdGFydCkgewotICAgICAgICBpbnQgayA9IChpbnQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpwKV07CisgICAgICAgIGludCBrOworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBrID0gKGludClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXTsKICAgICAgICAgYXNzZXJ0KGsgPj0gMCAmJiBrIDwgYmFzZSk7CiAgICAgICAgIGFjY3VtIHw9ICh0d29kaWdpdHMpayA8PCBiaXRzX2luX2FjY3VtOwogICAgICAgICBiaXRzX2luX2FjY3VtICs9IGJpdHNfcGVyX2NoYXI7CkBAIC0yMDA2LDcgKzIwOTMsOCBAQAogICAgIH0KICAgICB3aGlsZSAocGRpZ2l0IC0gei0+b2JfZGlnaXQgPCBuKQogICAgICAgICAqcGRpZ2l0KysgPSAwOwotICAgIHJldHVybiBsb25nX25vcm1hbGl6ZSh6KTsKKyAgICAqcmVzID0gbG9uZ19ub3JtYWxpemUoeik7CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIFBhcnNlcyBhbiBpbnQgZnJvbSBhIGJ5dGVzdHJpbmcuIExlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2lsbCBiZQpAQCAtMjAzMSwyMyArMjExOSwyOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImludCgpIGFyZyAyIG11c3QgYmUgPj0gMiBhbmQgPD0gMzYiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHdoaWxlICgqc3RyICE9ICdcMCcgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpCisgICAgd2hpbGUgKCpzdHIgIT0gJ1wwJyAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkgewogICAgICAgICBzdHIrKzsKLSAgICBpZiAoKnN0ciA9PSAnKycpCisgICAgfQorICAgIGlmICgqc3RyID09ICcrJykgewogICAgICAgICArK3N0cjsKKyAgICB9CiAgICAgZWxzZSBpZiAoKnN0ciA9PSAnLScpIHsKICAgICAgICAgKytzdHI7CiAgICAgICAgIHNpZ24gPSAtMTsKICAgICB9CiAgICAgaWYgKGJhc2UgPT0gMCkgewotICAgICAgICBpZiAoc3RyWzBdICE9ICcwJykKKyAgICAgICAgaWYgKHN0clswXSAhPSAnMCcpIHsKICAgICAgICAgICAgIGJhc2UgPSAxMDsKLSAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAneCcgfHwgc3RyWzFdID09ICdYJykgewogICAgICAgICAgICAgYmFzZSA9IDE2OwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdvJyB8fCBzdHJbMV0gPT0gJ08nKSB7CiAgICAgICAgICAgICBiYXNlID0gODsKLSAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykgewogICAgICAgICAgICAgYmFzZSA9IDI7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiAib2xkIiAoQy1zdHlsZSkgb2N0YWwgbGl0ZXJhbCwgbm93IGludmFsaWQuCiAgICAgICAgICAgICAgICBpdCBtaWdodCBzdGlsbCBiZSB6ZXJvIHRob3VnaCAqLwpAQCAtMjA1OCwxMiArMjE1MiwyNiBAQAogICAgIGlmIChzdHJbMF0gPT0gJzAnICYmCiAgICAgICAgICgoYmFzZSA9PSAxNiAmJiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKSkgfHwKICAgICAgICAgIChiYXNlID09IDggICYmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpKSB8fAotICAgICAgICAgKGJhc2UgPT0gMiAgJiYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykpKSkKKyAgICAgICAgIChiYXNlID09IDIgICYmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpKSkpIHsKICAgICAgICAgc3RyICs9IDI7CisgICAgICAgIC8qIE9uZSB1bmRlcnNjb3JlIGFsbG93ZWQgaGVyZS4gKi8KKyAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICArK3N0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RyWzBdID09ICdfJykgeworCSAgICAvKiBNYXkgbm90IHN0YXJ0IHdpdGggdW5kZXJzY29yZXMuICovCisJICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKICAgICBzdGFydCA9IHN0cjsKLSAgICBpZiAoKGJhc2UgJiAoYmFzZSAtIDEpKSA9PSAwKQotICAgICAgICB6ID0gbG9uZ19mcm9tX2JpbmFyeV9iYXNlKCZzdHIsIGJhc2UpOworICAgIGlmICgoYmFzZSAmIChiYXNlIC0gMSkpID09IDApIHsKKyAgICAgICAgaW50IHJlcyA9IGxvbmdfZnJvbV9iaW5hcnlfYmFzZSgmc3RyLCBiYXNlLCAmeik7CisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICAvKiBTeW50YXggZXJyb3IuICovCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICB9CiAgICAgZWxzZSB7CiAvKioqCiBCaW5hcnkgYmFzZXMgY2FuIGJlIGNvbnZlcnRlZCBpbiB0aW1lIGxpbmVhciBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cywgYmVjYXVzZQpAQCAtMjE1MiwxMSArMjI2MCwxMyBAQAogKioqLwogICAgICAgICB0d29kaWdpdHMgYzsgICAgICAgICAgIC8qIGN1cnJlbnQgaW5wdXQgY2hhcmFjdGVyICovCiAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZV96OworICAgICAgICBpbnQgZGlnaXRzID0gMDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGludCBjb252d2lkdGg7CiAgICAgICAgIHR3b2RpZ2l0cyBjb252bXVsdG1heCwgY29udm11bHQ7CiAgICAgICAgIGRpZ2l0ICpweiwgKnB6c3RvcDsKLSAgICAgICAgY29uc3QgY2hhciogc2NhbjsKKyAgICAgICAgY29uc3QgY2hhciAqc2NhbiwgKmxhc3RkaWdpdDsKKyAgICAgICAgY2hhciBwcmV2ID0gMDsKIAogICAgICAgICBzdGF0aWMgZG91YmxlIGxvZ19iYXNlX0JBU0VbMzddID0gezAuMGUwLH07CiAgICAgICAgIHN0YXRpYyBpbnQgY29udndpZHRoX2Jhc2VbMzddID0gezAsfTsKQEAgLTIxNzAsOCArMjI4MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZygoZG91YmxlKVB5TG9uZ19CQVNFKSk7CiAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgdHdvZGlnaXRzIG5leHQgPSBjb252bWF4ICogYmFzZTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dCA+IFB5TG9uZ19CQVNFKQorICAgICAgICAgICAgICAgIGlmIChuZXh0ID4gUHlMb25nX0JBU0UpIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnZtYXggPSBuZXh0OwogICAgICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIH0KQEAgLTIxODIsMjEgKzIyOTMsNDMgQEAKIAogICAgICAgICAvKiBGaW5kIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG9mIG51bWVyaWMgY2hhcmFjdGVycy4gKi8KICAgICAgICAgc2NhbiA9IHN0cjsKLSAgICAgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc2NhbildIDwgYmFzZSkKKyAgICAgICAgbGFzdGRpZ2l0ID0gc3RyOworCisgICAgICAgIHdoaWxlIChfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnNjYW4pXSA8IGJhc2UgfHwgKnNjYW4gPT0gJ18nKSB7CisgICAgICAgICAgICBpZiAoKnNjYW4gPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9ubHkgb25lIHVuZGVyc2NvcmUgYWxsb3dlZC4gKi8KKyAgICAgICAgICAgICAgICAgICAgc3RyID0gbGFzdGRpZ2l0ICsgMTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICsrZGlnaXRzOworICAgICAgICAgICAgICAgIGxhc3RkaWdpdCA9IHNjYW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmV2ID0gKnNjYW47CiAgICAgICAgICAgICArK3NjYW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAvKiBUcmFpbGluZyB1bmRlcnNjb3JlIG5vdCBhbGxvd2VkLiAqLworICAgICAgICAgICAgLyogU2V0IGVycm9yIHBvaW50ZXIgdG8gZmlyc3QgdW5kZXJzY29yZS4gKi8KKyAgICAgICAgICAgIHN0ciA9IGxhc3RkaWdpdCArIDE7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KIAogICAgICAgICAvKiBDcmVhdGUgYW4gaW50IG9iamVjdCB0aGF0IGNhbiBjb250YWluIHRoZSBsYXJnZXN0IHBvc3NpYmxlCiAgICAgICAgICAqIGludGVnZXIgd2l0aCB0aGlzIGJhc2UgYW5kIGxlbmd0aC4gIE5vdGUgdGhhdCB0aGVyZSdzIG5vCiAgICAgICAgICAqIG5lZWQgdG8gaW5pdGlhbGl6ZSB6LT5vYl9kaWdpdCAtLSBubyBzbG90IGlzIHJlYWQgdXAgYmVmb3JlCiAgICAgICAgICAqIGJlaW5nIHN0b3JlZCBpbnRvLgogICAgICAgICAgKi8KLSAgICAgICAgc2l6ZV96ID0gKFB5X3NzaXplX3QpKChzY2FuIC0gc3RyKSAqIGxvZ19iYXNlX0JBU0VbYmFzZV0pICsgMTsKKyAgICAgICAgc2l6ZV96ID0gKFB5X3NzaXplX3QpKGRpZ2l0cyAqIGxvZ19iYXNlX0JBU0VbYmFzZV0pICsgMTsKICAgICAgICAgLyogVW5jb21tZW50IG5leHQgbGluZSB0byB0ZXN0IGV4Y2VlZGluZ2x5IHJhcmUgY29weSBjb2RlICovCiAgICAgICAgIC8qIHNpemVfeiA9IDE7ICovCiAgICAgICAgIGFzc2VydChzaXplX3ogPiAwKTsKICAgICAgICAgeiA9IF9QeUxvbmdfTmV3KHNpemVfeik7Ci0gICAgICAgIGlmICh6ID09IE5VTEwpCisgICAgICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIFB5X1NJWkUoeikgPSAwOwogCiAgICAgICAgIC8qIGBjb252d2lkdGhgIGNvbnNlY3V0aXZlIGlucHV0IGRpZ2l0cyBhcmUgdHJlYXRlZCBhcyBhIHNpbmdsZQpAQCAtMjIwNyw5ICsyMzQwLDE3IEBACiAKICAgICAgICAgLyogV29yayA7LSkgKi8KICAgICAgICAgd2hpbGUgKHN0ciA8IHNjYW4pIHsKKyAgICAgICAgICAgIGlmICgqc3RyID09ICdfJykgeworICAgICAgICAgICAgICAgIHN0cisrOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogZ3JhYiB1cCB0byBjb252d2lkdGggZGlnaXRzIGZyb20gdGhlIGlucHV0IHN0cmluZyAqLwogICAgICAgICAgICAgYyA9IChkaWdpdClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnN0cisrKV07Ci0gICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgY29udndpZHRoICYmIHN0ciAhPSBzY2FuOyArK2ksICsrc3RyKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgY29udndpZHRoICYmIHN0ciAhPSBzY2FuOyArK3N0cikgeworICAgICAgICAgICAgICAgIGlmICgqc3RyID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIGMgPSAodHdvZGlnaXRzKShjICogIGJhc2UgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc3RyKV0pOwogICAgICAgICAgICAgICAgIGFzc2VydChjIDwgUHlMb25nX0JBU0UpOwpAQCAtMjIyMSw4ICsyMzYyLDkgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKGkgIT0gY29udndpZHRoKSB7CiAgICAgICAgICAgICAgICAgY29udm11bHQgPSBiYXNlOwotICAgICAgICAgICAgICAgIGZvciAoIDsgaSA+IDE7IC0taSkKKyAgICAgICAgICAgICAgICBmb3IgKCA7IGkgPiAxOyAtLWkpIHsKICAgICAgICAgICAgICAgICAgICAgY29udm11bHQgKj0gYmFzZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIE11bHRpcGx5IHogYnkgY29udm11bHQsIGFuZCBhZGQgYy4gKi8KQEAgLTIyNjAsNDEgKzI0MDIsNTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoeiA9PSBOVUxMKQorICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChlcnJvcl9pZl9ub256ZXJvKSB7CiAgICAgICAgIC8qIHJlc2V0IHRoZSBiYXNlIHRvIDAsIGVsc2UgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlCiAgICAgICAgICAgIGRvZXNuJ3QgbWFrZSB0b28gbXVjaCBzZW5zZSAqLwogICAgICAgICBiYXNlID0gMDsKLSAgICAgICAgaWYgKFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgaWYgKFB5X1NJWkUoeikgIT0gMCkgewogICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CiAgICAgICAgIC8qIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIG90aGVyIHByb2JsZW1zLCB0aGVyZWZvcmUgYmFzZQogICAgICAgICAgICByZW1haW5zIHplcm8gaGVyZSBmb3IgdGhlIHNhbWUgcmVhc29uICovCiAgICAgfQotICAgIGlmIChzdHIgPT0gc3RhcnQpCisgICAgaWYgKHN0ciA9PSBzdGFydCkgewogICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgaWYgKHNpZ24gPCAwKQorICAgIH0KKyAgICBpZiAoc2lnbiA8IDApIHsKICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7Ci0gICAgd2hpbGUgKCpzdHIgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpCisgICAgfQorICAgIHdoaWxlICgqc3RyICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKSB7CiAgICAgICAgIHN0cisrOwotICAgIGlmICgqc3RyICE9ICdcMCcpCisgICAgfQorICAgIGlmICgqc3RyICE9ICdcMCcpIHsKICAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KICAgICBsb25nX25vcm1hbGl6ZSh6KTsKICAgICB6ID0gbWF5YmVfc21hbGxfbG9uZyh6KTsKLSAgICBpZiAoeiA9PSBOVUxMKQorICAgIGlmICh6ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHBlbmQgIT0gTlVMTCkKKyAgICB9CisgICAgaWYgKHBlbmQgIT0gTlVMTCkgewogICAgICAgICAqcGVuZCA9IChjaGFyICopc3RyOworICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHo7CiAKICAgb25FcnJvcjoKLSAgICBpZiAocGVuZCAhPSBOVUxMKQorICAgIGlmIChwZW5kICE9IE5VTEwpIHsKICAgICAgICAgKnBlbmQgPSAoY2hhciAqKXN0cjsKKyAgICB9CiAgICAgUHlfWERFQ1JFRih6KTsKICAgICBzbGVuID0gc3RybGVuKG9yaWdfc3RyKSA8IDIwMCA/IHN0cmxlbihvcmlnX3N0cikgOiAyMDA7CiAgICAgc3Ryb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKG9yaWdfc3RyLCBzbGVuKTsKLSAgICBpZiAoc3Ryb2JqID09IE5VTEwpCisgICAgaWYgKHN0cm9iaiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgImludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlICVkOiAlLjIwMFIiLAogICAgICAgICAgICAgICAgICBiYXNlLCBzdHJvYmopOwpAQCAtMjM5NSw4ICsyNTQ3LDExIEBACiAgICAgICAgICpwZGl2ID0gKFB5TG9uZ09iamVjdCopUHlMb25nX0Zyb21Mb25nKDApOwogICAgICAgICBpZiAoKnBkaXYgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlfSU5DUkVGKGEpOwotICAgICAgICAqcHJlbSA9IChQeUxvbmdPYmplY3QgKikgYTsKKyAgICAgICAgKnByZW0gPSAoUHlMb25nT2JqZWN0ICopbG9uZ19sb25nKChQeU9iamVjdCAqKWEpOworICAgICAgICBpZiAoKnByZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfQ0xFQVIoKnBkaXYpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoc2l6ZV9iID09IDEpIHsKQEAgLTI3MDYsNiArMjg2MSwxMyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYW4gaW50ZWdlciBpcyByZXF1aXJlZCIpOwogICAgICAgICByZXR1cm4gLTEuMDsKICAgICB9CisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA8PSAxKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aDsgc2luZ2xlIGRpZ2l0IGxvbmcgKDMxIGJpdHMpIHdpbGwgY2FzdCBzYWZlbHkKKyAgICAgICAgICAgdG8gZG91YmxlLiAgVGhpcyBpbXByb3ZlcyBwZXJmb3JtYW5jZSBvZiBGUC9sb25nIG9wZXJhdGlvbnMKKyAgICAgICAgICAgYnkgMjAlLgorICAgICAgICAqLworICAgICAgICByZXR1cm4gKGRvdWJsZSlNRURJVU1fVkFMVUUoKFB5TG9uZ09iamVjdCAqKXYpOworICAgIH0KICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMjkzMCw5ICszMDkyLDcgQEAKICAgICB9CiAgICAgYXNzZXJ0KGJvcnJvdyA9PSAwKTsKICAgICBpZiAoc2lnbiA8IDApIHsKLSAgICAgICAgX1B5TG9uZ19OZWdhdGUoJnopOwotICAgICAgICBpZiAoeiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X1NJWkUoeikgPSAtUHlfU0laRSh6KTsKICAgICB9CiAgICAgcmV0dXJuIGxvbmdfbm9ybWFsaXplKHopOwogfQpAQCAtMjk1Miw4ICszMTEyLDE0IEBACiAgICAgaWYgKFB5X1NJWkUoYSkgPCAwKSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgewogICAgICAgICAgICAgeiA9IHhfYWRkKGEsIGIpOwotICAgICAgICAgICAgaWYgKHogIT0gTlVMTCAmJiBQeV9TSVpFKHopICE9IDApCisgICAgICAgICAgICBpZiAoeiAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogeF9hZGQgcmVjZWl2ZWQgYXQgbGVhc3Qgb25lIG11bHRpcGxlLWRpZ2l0IGludCwKKyAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyB6IG11c3QgYmUgYSBtdWx0aXBsZS1kaWdpdCBpbnQuCisgICAgICAgICAgICAgICAgICAgVGhhdCBhbHNvIG1lYW5zIHogaXMgbm90IGFuIGVsZW1lbnQgb2YKKyAgICAgICAgICAgICAgICAgICBzbWFsbF9pbnRzLCBzbyBuZWdhdGluZyBpdCBpbi1wbGFjZSBpcyBzYWZlLiAqLworICAgICAgICAgICAgICAgIGFzc2VydChQeV9SRUZDTlQoeikgPT0gMSk7CiAgICAgICAgICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfc3ViKGIsIGEpOwpAQCAtMjk4NCw4ICszMTUwLDEwIEBACiAgICAgICAgICAgICB6ID0geF9zdWIoYSwgYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHogPSB4X2FkZChhLCBiKTsKLSAgICAgICAgaWYgKHogIT0gTlVMTCAmJiBQeV9TSVpFKHopICE9IDApCisgICAgICAgIGlmICh6ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChQeV9TSVpFKHopID09IDAgfHwgUHlfUkVGQ05UKHopID09IDEpOwogICAgICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGIpIDwgMCkKQEAgLTM0MDksMTcgKzM1NzcsNyBAQAogICAgIC8qIGZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IG11bHRpcGxpY2F0aW9uICovCiAgICAgaWYgKFB5X0FCUyhQeV9TSVpFKGEpKSA8PSAxICYmIFB5X0FCUyhQeV9TSVpFKGIpKSA8PSAxKSB7CiAgICAgICAgIHN0d29kaWdpdHMgdiA9IChzdHdvZGlnaXRzKShNRURJVU1fVkFMVUUoYSkpICogTUVESVVNX1ZBTFVFKGIpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdik7Ci0jZWxzZQotICAgICAgICAvKiBpZiB3ZSBkb24ndCBoYXZlIGxvbmcgbG9uZyB0aGVuIHdlJ3JlIGFsbW9zdCBjZXJ0YWlubHkKLSAgICAgICAgICAgdXNpbmcgMTUtYml0IGRpZ2l0cywgc28gdiB3aWxsIGZpdCBpbiBhIGxvbmcuICBJbiB0aGUKLSAgICAgICAgICAgdW5saWtlbHkgZXZlbnQgdGhhdCB3ZSdyZSB1c2luZyAzMC1iaXQgZGlnaXRzIG9uIGEgcGxhdGZvcm0KLSAgICAgICAgICAgd2l0aG91dCBsb25nIGxvbmcsIGEgbGFyZ2UgdiB3aWxsIGp1c3QgY2F1c2UgdXMgdG8gZmFsbAotICAgICAgICAgICB0aHJvdWdoIHRvIHRoZSBnZW5lcmFsIG11bHRpcGxpY2F0aW9uIGNvZGUgYmVsb3cuICovCi0gICAgICAgIGlmICh2ID49IExPTkdfTUlOICYmIHYgPD0gTE9OR19NQVgpCi0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXYpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpdik7CiAgICAgfQogCiAgICAgeiA9IGtfbXVsKGEsIGIpOwpAQCAtMzQzMiw2ICszNTkwLDUyIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXo7CiB9CiAKKy8qIEZhc3QgbW9kdWxvIGRpdmlzaW9uIGZvciBzaW5nbGUtZGlnaXQgbG9uZ3MuICovCitzdGF0aWMgUHlPYmplY3QgKgorZmFzdF9tb2QoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCit7CisgICAgc2RpZ2l0IGxlZnQgPSBhLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgcmlnaHQgPSBiLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgbW9kOworCisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxKTsKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYikpID09IDEpOworCisgICAgaWYgKFB5X1NJWkUoYSkgPT0gUHlfU0laRShiKSkgeworICAgICAgICAvKiAnYScgYW5kICdiJyBoYXZlIHRoZSBzYW1lIHNpZ24uICovCisgICAgICAgIG1vZCA9IGxlZnQgJSByaWdodDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEVpdGhlciAnYScgb3IgJ2InIGlzIG5lZ2F0aXZlLiAqLworICAgICAgICBtb2QgPSByaWdodCAtIDEgLSAobGVmdCAtIDEpICUgcmlnaHQ7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhtb2QgKiAoc2RpZ2l0KVB5X1NJWkUoYikpOworfQorCisvKiBGYXN0IGZsb29yIGRpdmlzaW9uIGZvciBzaW5nbGUtZGlnaXQgbG9uZ3MuICovCitzdGF0aWMgUHlPYmplY3QgKgorZmFzdF9mbG9vcl9kaXYoUHlMb25nT2JqZWN0ICphLCBQeUxvbmdPYmplY3QgKmIpCit7CisgICAgc2RpZ2l0IGxlZnQgPSBhLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgcmlnaHQgPSBiLT5vYl9kaWdpdFswXTsKKyAgICBzZGlnaXQgZGl2OworCisgICAgYXNzZXJ0KFB5X0FCUyhQeV9TSVpFKGEpKSA9PSAxKTsKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYikpID09IDEpOworCisgICAgaWYgKFB5X1NJWkUoYSkgPT0gUHlfU0laRShiKSkgeworICAgICAgICAvKiAnYScgYW5kICdiJyBoYXZlIHRoZSBzYW1lIHNpZ24uICovCisgICAgICAgIGRpdiA9IGxlZnQgLyByaWdodDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEVpdGhlciAnYScgb3IgJ2InIGlzIG5lZ2F0aXZlLiAqLworICAgICAgICBkaXYgPSAtMSAtIChsZWZ0IC0gMSkgLyByaWdodDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKGRpdik7Cit9CisKIC8qIFRoZSAvIGFuZCAlIG9wZXJhdG9ycyBhcmUgbm93IGRlZmluZWQgaW4gdGVybXMgb2YgZGl2bW9kKCkuCiAgICBUaGUgZXhwcmVzc2lvbiBhIG1vZCBiIGhhcyB0aGUgdmFsdWUgYSAtIGIqZmxvb3IoYS9iKS4KICAgIFRoZSBsb25nX2RpdnJlbSBmdW5jdGlvbiBnaXZlcyB0aGUgcmVtYWluZGVyIGFmdGVyIGRpdmlzaW9uIG9mCkBAIC0zNDU5LDYgKzM2NjMsMzAgQEAKIHsKICAgICBQeUxvbmdPYmplY3QgKmRpdiwgKm1vZDsKIAorICAgIGlmIChQeV9BQlMoUHlfU0laRSh2KSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRSh3KSkgPT0gMSkgeworICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHNpbmdsZS1kaWdpdCBsb25ncyAqLworICAgICAgICBkaXYgPSBOVUxMOworICAgICAgICBpZiAocGRpdiAhPSBOVUxMKSB7CisgICAgICAgICAgICBkaXYgPSAoUHlMb25nT2JqZWN0ICopZmFzdF9mbG9vcl9kaXYodiwgdyk7CisgICAgICAgICAgICBpZiAoZGl2ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBtb2QgIT0gTlVMTCkgeworICAgICAgICAgICAgbW9kID0gKFB5TG9uZ09iamVjdCAqKWZhc3RfbW9kKHYsIHcpOworICAgICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihkaXYpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpwbW9kID0gbW9kOworICAgICAgICB9CisgICAgICAgIGlmIChwZGl2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFdlIG9ubHkgd2FudCB0byBzZXQgYCpwZGl2YCB3aGVuIGAqcG1vZGAgaXMKKyAgICAgICAgICAgICAgIHNldCBzdWNjZXNzZnVsbHkuICovCisgICAgICAgICAgICAqcGRpdiA9IGRpdjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaWYgKGxvbmdfZGl2cmVtKHYsIHcsICZkaXYsICZtb2QpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICgoUHlfU0laRShtb2QpIDwgMCAmJiBQeV9TSVpFKHcpID4gMCkgfHwKQEAgLTM1MDMsNiArMzczMSwxMSBAQAogICAgIFB5TG9uZ09iamVjdCAqZGl2OwogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CisKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpID09IDEpIHsKKyAgICAgICAgcmV0dXJuIGZhc3RfZmxvb3JfZGl2KChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIpOworICAgIH0KKwogICAgIGlmIChsX2Rpdm1vZCgoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliLCAmZGl2LCBOVUxMKSA8IDApCiAgICAgICAgIGRpdiA9IE5VTEw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRpdjsKQEAgLTM3NDIsOSArMzk3NSw5IEBACiAgICAgLyogUm91bmQgYnkgZGlyZWN0bHkgbW9kaWZ5aW5nIHRoZSBsb3cgZGlnaXQgb2YgeC4gKi8KICAgICBtYXNrID0gKGRpZ2l0KTEgPDwgKGV4dHJhX2JpdHMgLSAxKTsKICAgICBsb3cgPSB4LT5vYl9kaWdpdFswXSB8IGluZXhhY3Q7Ci0gICAgaWYgKGxvdyAmIG1hc2sgJiYgbG93ICYgKDMqbWFzay0xKSkKKyAgICBpZiAoKGxvdyAmIG1hc2spICYmIChsb3cgJiAoM1UqbWFzay0xVSkpKQogICAgICAgICBsb3cgKz0gbWFzazsKLSAgICB4LT5vYl9kaWdpdFswXSA9IGxvdyAmIH4obWFzay0xVSk7CisgICAgeC0+b2JfZGlnaXRbMF0gPSBsb3cgJiB+KDJVKm1hc2stMVUpOwogCiAgICAgLyogQ29udmVydCB4IHRvIGEgZG91YmxlIGR4OyB0aGUgY29udmVyc2lvbiBpcyBleGFjdC4gKi8KICAgICBkeCA9IHgtPm9iX2RpZ2l0Wy0teF9zaXplXTsKQEAgLTM3NzgsNiArNDAxMSwxMCBAQAogCiAgICAgQ0hFQ0tfQklOT1AoYSwgYik7CiAKKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpID09IDEpIHsKKyAgICAgICAgcmV0dXJuIGZhc3RfbW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIpOworICAgIH0KKwogICAgIGlmIChsX2Rpdm1vZCgoUHlMb25nT2JqZWN0KilhLCAoUHlMb25nT2JqZWN0KiliLCBOVUxMLCAmbW9kKSA8IDApCiAgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1vZDsKQEAgLTQwMTIsOCArNDI0OSwxMCBAQAogICAgIFB5X0RFQ1JFRih3KTsKICAgICBpZiAoeCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9TSVpFKHgpID0gLShQeV9TSVpFKHgpKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbWF5YmVfc21hbGxfbG9uZyh4KTsKKyAgICBfUHlMb25nX05lZ2F0ZSgmeCk7CisgICAgLyogTm8gbmVlZCBmb3IgbWF5YmVfc21hbGxfbG9uZyBoZXJlLCBzaW5jZSBhbnkgc21hbGwKKyAgICAgICBsb25ncyB3aWxsIGhhdmUgYmVlbiBjYXVnaHQgaW4gdGhlIFB5X1NJWkUgPD0gMSBmYXN0IHBhdGguICovCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXg7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00MTE4LDYgKzQzNTcsMTEgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBzaGlmdCBjb3VudCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgfQorCiAgICAgLyogd29yZHNoaWZ0LCByZW1zaGlmdCA9IGRpdm1vZChzaGlmdGJ5LCBQeUxvbmdfU0hJRlQpICovCiAgICAgd29yZHNoaWZ0ID0gc2hpZnRieSAvIFB5TG9uZ19TSElGVDsKICAgICByZW1zaGlmdCAgPSBzaGlmdGJ5IC0gd29yZHNoaWZ0ICogUHlMb25nX1NISUZUOwpAQCAtNDUwMiw3ICs0NzQ2LDcgQEAKICAgICAvKiBhIGZpdHMgaW50byBhIGxvbmcsIHNvIGIgbXVzdCB0b28gKi8KICAgICB4ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKilhKTsKICAgICB5ID0gUHlMb25nX0FzTG9uZygoUHlPYmplY3QgKiliKTsKLSNlbGlmIGRlZmluZWQoUFlfTE9OR19MT05HKSAmJiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAorI2VsaWYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYSk7CiAgICAgeSA9IFB5TG9uZ19Bc0xvbmdMb25nKChQeU9iamVjdCAqKWIpOwogI2Vsc2UKQEAgLTQ1MjEsNyArNDc2NSw3IEBACiAgICAgfQogI2lmIExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHgpOwotI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisjZWxpZiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHgpOwogI2Vsc2UKICMgZXJyb3IgIl9QeUxvbmdfR0NEIgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggMTAxNjJjYi4uNDI4ZDgzYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgfQogCiAKLVB5X0xPQ0FMX0lOTElORShfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopCitzdGF0aWMgaW5saW5lIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKgogbWJ1Zl9hbGxvYyh2b2lkKQogewogICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CkBAIC0yNDMsNyArMjQzLDcgQEAKICNkZWZpbmUgSEFWRV9TVUJPRkZTRVRTX0lOX0xBU1RfRElNKHZpZXcpIFwKICAgICAodmlldy0+c3Vib2Zmc2V0cyAmJiB2aWV3LT5zdWJvZmZzZXRzW2Rlc3QtPm5kaW0tMV0gPj0gMCkKIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBsYXN0X2RpbV9pc19jb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPiAwICYmIHNyYy0+bmRpbSA+IDApOwpAQCAtMjU5LDcgKzI1OSw3IEBACiAgICBhc3NpZ25tZW50cywgd2hlcmUgdGhlIGx2YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGhhdmUgYSBzaW5nbGUgY2hhcmFjdGVyCiAgICBmb3JtYXQuIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRoYXQgY291bGQgYmUgcmV3cml0dGVuIChpZiBwcm9wZXJseQogICAgYmVuY2htYXJrZWQpLiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBlcXVpdl9mb3JtYXQoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBjb25zdCBjaGFyICpkZm10LCAqc2ZtdDsKQEAgLTI3OSw3ICsyNzksNyBAQAogLyogVHdvIHNoYXBlcyBhcmUgZXF1aXZhbGVudCBpZiB0aGV5IGFyZSBlaXRoZXIgZXF1YWwgb3IgaWRlbnRpY2FsIHVwCiAgICB0byBhIHplcm8gZWxlbWVudCBhdCB0aGUgc2FtZSBwb3NpdGlvbi4gRm9yIGV4YW1wbGUsIGluIE51bVB5IGFycmF5cwogICAgdGhlIHNoYXBlcyBbMSwgMCwgNV0gYW5kIFsxLCAwLCA3XSBhcmUgZXF1aXZhbGVudC4gKi8KLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogZXF1aXZfc2hhcGUoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBpbnQgaTsKQEAgLTQzOCw3ICs0MzgsNyBAQAogfQogCiAvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgQy1jb250aWd1b3VzIGFycmF5LiAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC00NTEsNyArNDUxLDcgQEAKIH0KIAogLyogSW5pdGlhbGl6ZSBzdHJpZGVzIGZvciBhIEZvcnRyYW4tY29udGlndW91cyBhcnJheS4gKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC01MTMsNyArNTEzLDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBJbml0aWFsaXplIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgd2l0aCB0aGUgbWFuYWdlZCBidWZmZXIuICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9zaGFyZWRfdmFsdWVzKFB5X2J1ZmZlciAqZGVzdCwgY29uc3QgUHlfYnVmZmVyICpzcmMpCiB7CiAgICAgZGVzdC0+b2JqID0gc3JjLT5vYmo7CkBAIC01NTMsNyArNTUzLDcgQEAKICAgICB9CiB9CiAKLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X3N1Ym9mZnNldHMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBQeV9zc2l6ZV90IGk7CkBAIC01NjcsNyArNTY3LDcgQEAKIH0KIAogLyogbGVuID0gcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfbGVuKFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKQEAgLTYxNCw3ICs2MTQsNyBAQAogCiAvKiBBbGxvY2F0ZSBhIG5ldyBtZW1vcnl2aWV3IGFuZCBwZXJmb3JtIGJhc2ljIGluaXRpYWxpemF0aW9uLiBOZXcgbWVtb3J5dmlld3MKICAgIGFyZSBleGNsdXNpdmVseSBjcmVhdGVkIHRocm91Z2ggdGhlIG1idWZfYWRkIGZ1bmN0aW9ucy4gKi8KLVB5X0xPQ0FMX0lOTElORShQeU1lbW9yeVZpZXdPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlNZW1vcnlWaWV3T2JqZWN0ICoKIG1lbW9yeV9hbGxvYyhpbnQgbmRpbSkKIHsKICAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAKIAogI2RlZmluZSBJU19CWVRFX0ZPUk1BVChmKSAoZiA9PSAnYicgfHwgZiA9PSAnQicgfHwgZiA9PSAnYycpCiAKLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorc3RhdGljIGlubGluZSBQeV9zc2l6ZV90CiBnZXRfbmF0aXZlX2ZtdGNoYXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpmbXQpCiB7CiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CkBAIC0xMTExLDE3ICsxMTExLDExIEBACiAgICAgY2FzZSAnaCc6IGNhc2UgJ0gnOiBzaXplID0gc2l6ZW9mKHNob3J0KTsgYnJlYWs7CiAgICAgY2FzZSAnaSc6IGNhc2UgJ0knOiBzaXplID0gc2l6ZW9mKGludCk7IGJyZWFrOwogICAgIGNhc2UgJ2wnOiBjYXNlICdMJzogc2l6ZSA9IHNpemVvZihsb25nKTsgYnJlYWs7Ci0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7IGJyZWFrOwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogc2l6ZSA9IHNpemVvZihsb25nIGxvbmcpOyBicmVhazsKICAgICBjYXNlICduJzogY2FzZSAnTic6IHNpemUgPSBzaXplb2YoUHlfc3NpemVfdCk7IGJyZWFrOwogICAgIGNhc2UgJ2YnOiBzaXplID0gc2l6ZW9mKGZsb2F0KTsgYnJlYWs7CiAgICAgY2FzZSAnZCc6IHNpemUgPSBzaXplb2YoZG91YmxlKTsgYnJlYWs7Ci0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihfQm9vbCk7IGJyZWFrOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IHNpemUgPSBzaXplb2YoY2hhcik7IGJyZWFrOwotICAgICNlbmRpZgogICAgIGNhc2UgJ1AnOiBzaXplID0gc2l6ZW9mKHZvaWQgKik7IGJyZWFrOwogICAgIH0KIApAQCAtMTEzMyw3ICsxMTI3LDcgQEAKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShjaGFyICopCitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKgogZ2V0X25hdGl2ZV9mbXRzdHIoY29uc3QgY2hhciAqZm10KQogewogICAgIGludCBhdCA9IDA7CkBAIC0xMTU4LDE5ICsxMTUyLDEzIEBACiAgICAgY2FzZSAnSSc6IFJFVFVSTigiSSIpOwogICAgIGNhc2UgJ2wnOiBSRVRVUk4oImwiKTsKICAgICBjYXNlICdMJzogUkVUVVJOKCJMIik7Ci0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6IFJFVFVSTigicSIpOwogICAgIGNhc2UgJ1EnOiBSRVRVUk4oIlEiKTsKLSAgICAjZW5kaWYKICAgICBjYXNlICduJzogUkVUVVJOKCJuIik7CiAgICAgY2FzZSAnTic6IFJFVFVSTigiTiIpOwogICAgIGNhc2UgJ2YnOiBSRVRVUk4oImYiKTsKICAgICBjYXNlICdkJzogUkVUVVJOKCJkIik7Ci0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogUkVUVVJOKCI/Iik7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/JzogUkVUVVJOKCI/Iik7Ci0gICAgI2VuZGlmCiAgICAgY2FzZSAnUCc6IFJFVFVSTigiUCIpOwogICAgIH0KIApAQCAtMTIyMSw3ICsxMjA5LDcgQEAKICAgICAgICAgZ290byBvdXQ7CiAgICAgfQogCi0gICAgdmlldy0+Zm9ybWF0ID0gZ2V0X25hdGl2ZV9mbXRzdHIoUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpKTsKKyAgICB2aWV3LT5mb3JtYXQgPSAoY2hhciAqKWdldF9uYXRpdmVfZm10c3RyKFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpZm10KSk7CiAgICAgaWYgKHZpZXctPmZvcm1hdCA9PSBOVUxMKSB7CiAgICAgICAgIC8qIE5PVF9SRUFDSEVEOiBnZXRfbmF0aXZlX2ZtdGNoYXIoKSBhbHJlYWR5IHZhbGlkYXRlcyB0aGUgZm9ybWF0LiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtMTU4MSwxMiArMTU2OSwxMSBAQAogICAgIHJldHVybiBsdTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1zdGF0aWMgUFlfTE9OR19MT05HCitzdGF0aWMgbG9uZyBsb25nCiBweWxvbmdfYXNfbGxkKFB5T2JqZWN0ICppdGVtKQogewogICAgIFB5T2JqZWN0ICp0bXA7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogCiAgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQpAQCAtMTU5NywyMSArMTU4NCwyMCBAQAogICAgIHJldHVybiBsbGQ7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBQWV9MT05HX0xPTkcKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcKIHB5bG9uZ19hc19sbHUoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAKICAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZyktMTsKIAogICAgIGxsdSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodG1wKTsKICAgICBQeV9ERUNSRUYodG1wKTsKICAgICByZXR1cm4gbGx1OwogfQotI2VuZGlmCiAKIHN0YXRpYyBQeV9zc2l6ZV90CiBweWxvbmdfYXNfemQoUHlPYmplY3QgKml0ZW0pCkBAIC0xNjU2LDEzICsxNjQyLDEzIEBACiAvKiBVbnBhY2sgYSBzaW5nbGUgaXRlbS4gJ2ZtdCcgY2FuIGJlIGFueSBuYXRpdmUgZm9ybWF0IGNoYXJhY3RlciBpbiBzdHJ1Y3QKICAgIG1vZHVsZSBzeW50YXguIFRoaXMgZnVuY3Rpb24gaXMgdmVyeSBzZW5zaXRpdmUgdG8gc21hbGwgY2hhbmdlcy4gV2l0aCB0aGlzCiAgICBsYXlvdXQgZ2NjIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVzIGEgZmFzdCBqdW1wIHRhYmxlLiAqLwotUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKIHVucGFja19zaW5nbGUoY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICpmbXQpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIGxsdTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbGx1OwogICAgIHVuc2lnbmVkIGxvbmcgbHU7CiAgICAgc2l6ZV90IHp1OwotICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsb25nIGxsZDsKICAgICBsb25nIGxkOwogICAgIFB5X3NzaXplX3QgemQ7CiAgICAgZG91YmxlIGQ7CkBAIC0xNjc5LDExICsxNjY1LDcgQEAKICAgICBjYXNlICdsJzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBsb25nKTsgZ290byBjb252ZXJ0X2xkOwogCiAgICAgLyogYm9vbGVhbiAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgX0Jvb2wpOyBnb3RvIGNvbnZlcnRfYm9vbDsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGNoYXIpOyBnb3RvIGNvbnZlcnRfYm9vbDsKLSAgICAjZW5kaWYKIAogICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCiAgICAgY2FzZSAnSCc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgc2hvcnQpOyBnb3RvIGNvbnZlcnRfbHU7CkBAIC0xNjkxLDEwICsxNjczLDggQEAKICAgICBjYXNlICdMJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBsb25nKTsgZ290byBjb252ZXJ0X2x1OwogCiAgICAgLyogbmF0aXZlIDY0LWJpdCAqLwotICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGNhc2UgJ3EnOiBVTlBBQ0tfU0lOR0xFKGxsZCwgcHRyLCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGxkOwotICAgIGNhc2UgJ1EnOiBVTlBBQ0tfU0lOR0xFKGxsdSwgcHRyLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOyBnb3RvIGNvbnZlcnRfbGx1OwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBVTlBBQ0tfU0lOR0xFKGxsZCwgcHRyLCBsb25nIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGxkOworICAgIGNhc2UgJ1EnOiBVTlBBQ0tfU0lOR0xFKGxsdSwgcHRyLCB1bnNpZ25lZCBsb25nIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGx1OwogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6IFVOUEFDS19TSU5HTEUoemQsIHB0ciwgUHlfc3NpemVfdCk7IGdvdG8gY29udmVydF96ZDsKQEAgLTE3NTUsMTAgKzE3MzUsMTAgQEAKIHN0YXRpYyBpbnQKIHBhY2tfc2luZ2xlKGNoYXIgKnB0ciwgUHlPYmplY3QgKml0ZW0sIGNvbnN0IGNoYXIgKmZtdCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAgICAgdW5zaWduZWQgbG9uZyBsdTsKICAgICBzaXplX3QgenU7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogICAgIGxvbmcgbGQ7CiAgICAgUHlfc3NpemVfdCB6ZDsKICAgICBkb3VibGUgZDsKQEAgLTE4MDYsMjAgKzE3ODYsMTggQEAKICAgICAgICAgYnJlYWs7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSAncSc6CiAgICAgICAgIGxsZCA9IHB5bG9uZ19hc19sbGQoaXRlbSk7CiAgICAgICAgIGlmIChsbGQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOwotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsZCwgUFlfTE9OR19MT05HKTsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbGQsIGxvbmcgbG9uZyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgJ1EnOgogICAgICAgICBsbHUgPSBweWxvbmdfYXNfbGx1KGl0ZW0pOwotICAgICAgICBpZiAobGx1ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgaWYgKGxsdSA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKLSAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGx1LCB1bnNpZ25lZCBsb25nIGxvbmcpOwogICAgICAgICBicmVhazsKLSAgICAjZW5kaWYKIAogICAgIC8qIHNzaXplX3QgYW5kIHNpemVfdCAqLwogICAgIGNhc2UgJ24nOgpAQCAtMTg1MywxMSArMTgzMSw3IEBACiAgICAgICAgIGxkID0gUHlPYmplY3RfSXNUcnVlKGl0ZW0pOwogICAgICAgICBpZiAobGQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBwcmVzZXJ2ZSBvcmlnaW5hbCBlcnJvciAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIF9Cb29sKTsKLSAgICAjZWxzZQotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxkLCBjaGFyKTsKLSAgICAjZW5kaWYKICAgICAgICAgIGJyZWFrOwogCiAgICAgLyogYnl0ZXMgb2JqZWN0ICovCkBAIC0yMDI0LDcgKzE5OTgsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIGFsbG93IGV4cGxpY2l0IGZvcm0gb2YgbmF0aXZlIGZvcm1hdCAqLwotUHlfTE9DQUxfSU5MSU5FKGNvbnN0IGNoYXIgKikKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBhZGp1c3RfZm10KGNvbnN0IFB5X2J1ZmZlciAqdmlldykKIHsKICAgICBjb25zdCBjaGFyICpmbXQ7CkBAIC0yMzA2LDcgKzIyODAsNyBAQAogICAgIHJldHVybiB1bnBhY2tfc2luZ2xlKHB0ciwgZm10KTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBpbml0X3NsaWNlKFB5X2J1ZmZlciAqYmFzZSwgUHlPYmplY3QgKmtleSwgaW50IGRpbSkKIHsKICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKQEAgLTI2MjgsNyArMjYwMiw3IEBACiAgICAgICAgIGVxdWFsID0gKHggPT0geSk7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIHVucGFja19jbXAoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwgY2hhciBmbXQsCiAgICAgICAgICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCiB7CkBAIC0yNjQ0LDExICsyNjE4LDcgQEAKICAgICBjYXNlICdsJzogQ01QX1NJTkdMRShwLCBxLCBsb25nKTsgcmV0dXJuIGVxdWFsOwogCiAgICAgLyogYm9vbGVhbiAqLwotICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCiAgICAgY2FzZSAnPyc6IENNUF9TSU5HTEUocCwgcSwgX0Jvb2wpOyByZXR1cm4gZXF1YWw7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBjaGFyKTsgcmV0dXJuIGVxdWFsOwotICAgICNlbmRpZgogCiAgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KICAgICBjYXNlICdIJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBzaG9ydCk7IHJldHVybiBlcXVhbDsKQEAgLTI2NTYsMTAgKzI2MjYsOCBAQAogICAgIGNhc2UgJ0wnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IENNUF9TSU5HTEUocCwgcSwgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOwotICAgIGNhc2UgJ1EnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IHJldHVybiBlcXVhbDsKLSAgICAjZW5kaWYKKyAgICBjYXNlICdxJzogQ01QX1NJTkdMRShwLCBxLCBsb25nIGxvbmcpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnUSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgbG9uZyBsb25nKTsgcmV0dXJuIGVxdWFsOwogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6IENNUF9TSU5HTEUocCwgcSwgUHlfc3NpemVfdCk7IHJldHVybiBlcXVhbDsKZGlmZiAtLWdpdCBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCmluZGV4IDk0NjM1N2YuLmMyMDAxZjAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tZXRob2RvYmplY3QuYwpAQCAtOTcsNiArOTcsMTEgQEAKICAgICBpZiAoZmxhZ3MgPT0gKE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMpKSB7CiAgICAgICAgIHJlcyA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpKHNlbGYsIGFyZ3MsIGt3ZHMpOwogICAgIH0KKyAgICBlbHNlIGlmIChmbGFncyA9PSBNRVRIX0ZBU1RDQUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICoqc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgICAgIHJlcyA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RzKTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKQEAgLTE0NSw2ICsxNTAsMTUzIEBACiAgICAgcmV0dXJuIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlcywgTlVMTCk7CiB9CiAKK1B5T2JqZWN0ICoKK19QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmNfb2JqLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlDRnVuY3Rpb25PYmplY3QgKmZ1bmMgPSAoUHlDRnVuY3Rpb25PYmplY3QqKWZ1bmNfb2JqOworICAgIFB5Q0Z1bmN0aW9uIG1ldGggPSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgUHlPYmplY3QgKnNlbGYgPSBQeUNGdW5jdGlvbl9HRVRfU0VMRihmdW5jKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCBmbGFnczsKKworICAgIGFzc2VydChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChuYXJncyA9PSAwIHx8IGFyZ3MgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKKworICAgIC8qIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LAorICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCisgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgJiB+KE1FVEhfQ0xBU1MgfCBNRVRIX1NUQVRJQyB8IE1FVEhfQ09FWElTVCk7CisKKyAgICBzd2l0Y2ggKGZsYWdzKQorICAgIHsKKyAgICBjYXNlIE1FVEhfTk9BUkdTOgorICAgICAgICBpZiAoa3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmFyZ3MgIT0gMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lLCBuYXJncyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqbWV0aCkgKHNlbGYsIE5VTEwpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgTUVUSF9POgorICAgICAgICBpZiAoa3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmFyZ3MgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUsIG5hcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgYXJnc1swXSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNRVRIX1ZBUkFSR1M6CisgICAgY2FzZSBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTOgorICAgIHsKKyAgICAgICAgLyogU2xvdy1wYXRoOiBjcmVhdGUgYSB0ZW1wb3JhcnkgdHVwbGUgKi8KKyAgICAgICAgUHlPYmplY3QgKnR1cGxlOworCisgICAgICAgIGlmICghKGZsYWdzICYgTUVUSF9LRVlXT1JEUykgJiYga3dhcmdzICE9IE5VTEwgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHR1cGxlID0gX1B5U3RhY2tfQXNUdXBsZShhcmdzLCBuYXJncyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmbGFncyAmIE1FVEhfS0VZV09SRFMpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICgqKFB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKW1ldGgpIChzZWxmLCB0dXBsZSwga3dhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9ICgqbWV0aCkgKHNlbGYsIHR1cGxlKTsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIE1FVEhfRkFTVENBTEw6CisgICAgeworICAgICAgICBQeU9iamVjdCAqKnN0YWNrOworICAgICAgICBQeU9iamVjdCAqa3duYW1lczsKKyAgICAgICAgX1B5Q0Z1bmN0aW9uRmFzdCBmYXN0bWV0aCA9IChfUHlDRnVuY3Rpb25GYXN0KW1ldGg7CisKKyAgICAgICAgc3RhY2sgPSBfUHlTdGFja19VbnBhY2tEaWN0KGFyZ3MsIG5hcmdzLCBrd2FyZ3MsICZrd25hbWVzLCBmdW5jX29iaik7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9ICgqZmFzdG1ldGgpIChzZWxmLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoc3RhY2sgIT0gYXJncykgeworICAgICAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihrd25hbWVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBjYWxsIGZsYWdzIGluIFB5Q0Z1bmN0aW9uX0NhbGwuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJNRVRIX09MREFSR1MgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCEiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuY19vYmosIHJlc3VsdCwgTlVMTCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICprd2RpY3QsICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKworICAgIGFzc2VydChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlICovCisKKyAgICBpZiAobmt3YXJncyA+IDApIHsKKyAgICAgICAga3dkaWN0ID0gX1B5U3RhY2tfQXNEaWN0KHN0YWNrICsgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeUNGdW5jdGlvbl9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RpY3QpOworICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAvKiBNZXRob2RzICh0aGUgc3RhbmRhcmQgYnVpbHQtaW4gbWV0aG9kcywgdGhhdCBpcykgKi8KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCmluZGV4IGFlNzJkYTYuLmI2YTJkNmYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwpAQCAtMzgwLDcgKzM4MCw3IEBACiAgICAgZm9yIChjdXJfc2xvdCA9IGRlZi0+bV9zbG90czsgY3VyX3Nsb3QgJiYgY3VyX3Nsb3QtPnNsb3Q7IGN1cl9zbG90KyspIHsKICAgICAgICAgc3dpdGNoIChjdXJfc2xvdC0+c2xvdCkgewogICAgICAgICAgICAgY2FzZSBQeV9tb2RfY3JlYXRlOgotICAgICAgICAgICAgICAgIC8qIGhhbmRsZWQgaW4gUHlNb2R1bGVfQ3JlYXRlRnJvbVNsb3RzICovCisgICAgICAgICAgICAgICAgLyogaGFuZGxlZCBpbiBQeU1vZHVsZV9Gcm9tRGVmQW5kU3BlYzIgKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUHlfbW9kX2V4ZWM6CiAgICAgICAgICAgICAgICAgcmV0ID0gKChpbnQgKCopKFB5T2JqZWN0ICopKWN1cl9zbG90LT52YWx1ZSkobW9kdWxlKTsKQEAgLTQ1MCw4ICs0NTAsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKSAtPiBtZF9kaWN0OwotICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgICgoUHlNb2R1bGVPYmplY3QgKiltKSAtPiBtZF9kaWN0ID0gZCA9IFB5RGljdF9OZXcoKTsKKyAgICBhc3NlcnQoZCAhPSBOVUxMKTsKICAgICByZXR1cm4gZDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKaW5kZXggM2QyN2E5NS4uMGJiMzA2MyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYworKysgYi9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCkBAIC0xLDQgKzEsNCBAQAotLyogbmFtZXNwYWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLworLy8gbmFtZXNwYWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbgogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCkBAIC0xNiw3ICsxNiw3IEBACiB9OwogCiAKLS8qIE1ldGhvZHMgKi8KKy8vIE1ldGhvZHMKIAogc3RhdGljIFB5T2JqZWN0ICoKIG5hbWVzcGFjZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCkBAIC00MCw3ICs0MCw3IEBACiBzdGF0aWMgaW50CiBuYW1lc3BhY2VfaW5pdChfUHlOYW1lc3BhY2VPYmplY3QgKm5zLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgLyogaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5ICovCisgICAgLy8gaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5CiAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewogICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlPYmplY3RfU2l6ZShhcmdzKTsKICAgICAgICAgaWYgKGFyZ2NvdW50IDwgMCkKQEAgLTE5MSw3ICsxOTEsNyBAQAogc3RhdGljIFB5TWV0aG9kRGVmIG5hbWVzcGFjZV9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKW5hbWVzcGFjZV9yZWR1Y2UsIE1FVEhfTk9BUkdTLAogICAgICBuYW1lc3BhY2VfcmVkdWNlX19kb2NfX30sCi0gICAge05VTEwsICAgICAgICAgTlVMTH0gIC8qIHNlbnRpbmVsICovCisgICAge05VTEwsICAgICAgICAgTlVMTH0gIC8vIHNlbnRpbmVsCiB9OwogCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvb2JqZWN0LmMgYi9PYmplY3RzL29iamVjdC5jCmluZGV4IGQyMWZkOTAuLjVjNjM5YjIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9vYmplY3QuYwpAQCAtMjIsMTIgKzIyLDYgQEAKIHsKICAgICBQeU9iamVjdCAqbzsKICAgICBQeV9zc2l6ZV90IHRvdGFsID0gX1B5X1JlZlRvdGFsOwotICAgIC8qIGlnbm9yZSB0aGUgcmVmZXJlbmNlcyB0byB0aGUgZHVtbXkgb2JqZWN0IG9mIHRoZSBkaWN0cyBhbmQgc2V0cwotICAgICAgIGJlY2F1c2UgdGhleSBhcmUgbm90IHJlbGlhYmxlIGFuZCBub3QgdXNlZnVsIChub3cgdGhhdCB0aGUKLSAgICAgICBoYXNoIHRhYmxlIGNvZGUgaXMgd2VsbC10ZXN0ZWQpICovCi0gICAgbyA9IF9QeURpY3RfRHVtbXkoKTsKLSAgICBpZiAobyAhPSBOVUxMKQotICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CiAgICAgbyA9IF9QeVNldF9EdW1teTsKICAgICBpZiAobyAhPSBOVUxMKQogICAgICAgICB0b3RhbCAtPSBvLT5vYl9yZWZjbnQ7CkBAIC0xMDksNiArMTAzLDE1IEBACiBkdW1wX2NvdW50cyhGSUxFKiBmKQogewogICAgIFB5VHlwZU9iamVjdCAqdHA7CisgICAgUHlPYmplY3QgKnhvcHRpb25zLCAqdmFsdWU7CisgICAgX1B5X0lERU5USUZJRVIoc2hvd2FsbG9jY291bnQpOworCisgICAgeG9wdGlvbnMgPSBQeVN5c19HZXRYT3B0aW9ucygpOworICAgIGlmICh4b3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgdmFsdWUgPSBfUHlEaWN0X0dldEl0ZW1JZCh4b3B0aW9ucywgJlB5SWRfc2hvd2FsbG9jY291bnQpOworICAgIGlmICh2YWx1ZSAhPSBQeV9UcnVlKQorICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHRwID0gdHlwZV9saXN0OyB0cDsgdHAgPSB0cC0+dHBfbmV4dCkKICAgICAgICAgZnByaW50ZihmLCAiJXMgYWxsb2MnZDogJSIgUFlfRk9STUFUX1NJWkVfVCAiZCwgIgpAQCAtNjQ0LDcgKzY0Nyw3IEBACiAvKiBNYXAgcmljaCBjb21wYXJpc29uIG9wZXJhdG9ycyB0byB0aGVpciBzd2FwcGVkIHZlcnNpb24sIGUuZy4gTFQgPC0tPiBHVCAqLwogaW50IF9QeV9Td2FwcGVkT3BbXSA9IHtQeV9HVCwgUHlfR0UsIFB5X0VRLCBQeV9ORSwgUHlfTFQsIFB5X0xFfTsKIAotc3RhdGljIGNoYXIgKm9wc3RyaW5nc1tdID0geyI8IiwgIjw9IiwgIj09IiwgIiE9IiwgIj4iLCAiPj0ifTsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgb3BzdHJpbmdzW10gPSB7IjwiLCAiPD0iLCAiPT0iLCAiIT0iLCAiPiIsICI+PSJ9OwogCiAvKiBQZXJmb3JtIGEgcmljaCBjb21wYXJpc29uLCByYWlzaW5nIFR5cGVFcnJvciB3aGVuIHRoZSByZXF1ZXN0ZWQgY29tcGFyaXNvbgogICAgb3BlcmF0b3IgaXMgbm90IHN1cHBvcnRlZC4gKi8KQEAgLTY4NiwxMSArNjg5LDEwIEBACiAgICAgICAgIHJlcyA9ICh2ICE9IHcpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICAvKiBYWFggU3BlY2lhbC1jYXNlIE5vbmUgc28gaXQgZG9lc24ndCBzaG93IGFzIE5vbmVUeXBlKCkgKi8KICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ1bm9yZGVyYWJsZSB0eXBlczogJS4xMDBzKCkgJXMgJS4xMDBzKCkiLAotICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICInJXMnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJyUuMTAwcycgYW5kICclLjEwMHMnIiwKICAgICAgICAgICAgICAgICAgICAgIG9wc3RyaW5nc1tvcF0sCisgICAgICAgICAgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgdy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEwNDEsOCArMTA0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICBuYW1lLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIFB5X0lOQ1JFRihuYW1lKTsKIAogICAgIGlmICh0cC0+dHBfZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHApIDwgMCkKQEAgLTEwNTAsMTAgKzEwNTEsMTAgQEAKICAgICB9CiAKICAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHRwLCBuYW1lKTsKLSAgICBQeV9YSU5DUkVGKGRlc2NyKTsKIAogICAgIGYgPSBOVUxMOwogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihkZXNjcik7CiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3JfZ2V0OwogICAgICAgICBpZiAoZiAhPSBOVUxMICYmIFB5RGVzY3JfSXNEYXRhKGRlc2NyKSkgewogICAgICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCAoUHlPYmplY3QgKilvYmotPm9iX3R5cGUpOwpAQCAtMTA3Myw4ICsxMDc0LDkgQEAKICAgICAgICAgICAgICAgICBpZiAodHNpemUgPCAwKQogICAgICAgICAgICAgICAgICAgICB0c2l6ZSA9IC10c2l6ZTsKICAgICAgICAgICAgICAgICBzaXplID0gX1B5T2JqZWN0X1ZBUl9TSVpFKHRwLCB0c2l6ZSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHNpemUgPD0gUFlfU1NJWkVfVF9NQVgpOwogCi0gICAgICAgICAgICAgICAgZGljdG9mZnNldCArPSAobG9uZylzaXplOworICAgICAgICAgICAgICAgIGRpY3RvZmZzZXQgKz0gKFB5X3NzaXplX3Qpc2l6ZTsKICAgICAgICAgICAgICAgICBhc3NlcnQoZGljdG9mZnNldCA+IDApOwogICAgICAgICAgICAgICAgIGFzc2VydChkaWN0b2Zmc2V0ICUgU0laRU9GX1ZPSURfUCA9PSAwKTsKICAgICAgICAgICAgIH0KQEAgLTExNDIsMTIgKzExNDQsMTEgQEAKICAgICBQeV9JTkNSRUYobmFtZSk7CiAKICAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHRwLCBuYW1lKTsKLSAgICBQeV9YSU5DUkVGKGRlc2NyKTsKIAotICAgIGYgPSBOVUxMOwogICAgIGlmIChkZXNjciAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihkZXNjcik7CiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3Jfc2V0OwotICAgICAgICBpZiAoZiAhPSBOVUxMICYmIFB5RGVzY3JfSXNEYXRhKGRlc2NyKSkgeworICAgICAgICBpZiAoZiAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIHZhbHVlKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQpAQCAtMTE1NSw0MCArMTE1NiwzMiBAQAogCiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKLSAgICAgICAgaWYgKGRpY3RwdHIgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzID0gX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5X1RZUEUob2JqKSwgZGljdHB0ciwgbmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKKyAgICAgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGRlc2NyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgYXR0cmlidXRlICclVScgaXMgcmVhZC1vbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdERpY3RfU2V0SXRlbSh0cCwgZGljdHB0ciwgbmFtZSwgdmFsdWUpOwogICAgIH0KLSAgICBpZiAoZGljdCAhPSBOVUxMKSB7CisgICAgZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihkaWN0KTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCiAgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBuYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwgbmFtZSwgdmFsdWUpOwogICAgICAgICBQeV9ERUNSRUYoZGljdCk7Ci0gICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKLSAgICAgICAgZ290byBkb25lOwogICAgIH0KKyAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKIAotICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCB2YWx1ZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICBpZiAoZGVzY3IgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJyUuMTAwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsCi0gICAgICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkiLAotICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CiAgIGRvbmU6CiAgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgUHlfREVDUkVGKG5hbWUpOwpAQCAtMTIwNCw3ICsxMTk3LDcgQEAKIGludAogUHlPYmplY3RfR2VuZXJpY1NldERpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQogewotICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOworICAgIFB5T2JqZWN0ICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CiAgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fIik7CkBAIC0xMjIwLDEwICsxMjEzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICJub3QgYSAnJS4yMDBzJyIsIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBkaWN0ID0gKmRpY3RwdHI7Ci0gICAgUHlfWElOQ1JFRih2YWx1ZSk7Ci0gICAgKmRpY3RwdHIgPSB2YWx1ZTsKLSAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgUHlfWFNFVFJFRigqZGljdHB0ciwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL29ibWFsbG9jLmMgYi9PYmplY3RzL29ibWFsbG9jLmMKaW5kZXggN2NjODg5Zi4uYTExNDJmMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYm1hbGxvYy5jCisrKyBiL09iamVjdHMvb2JtYWxsb2MuYwpAQCAtMSwzMSArMSw0MiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCisKKy8qIERlZmluZWQgaW4gdHJhY2VtYWxsb2MuYyAqLworZXh0ZXJuIHZvaWQgX1B5TWVtX0R1bXBUcmFjZWJhY2soaW50IGZkLCBjb25zdCB2b2lkICpwdHIpOworCisKIC8qIFB5dGhvbidzIG1hbGxvYyB3cmFwcGVycyAoc2VlIHB5bWVtLmgpICovCiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRyAgIC8qIFdJVEhfUFlNQUxMT0MgJiYgUFlNQUxMT0NfREVCVUcgKi8KKyN1bmRlZiAgdWludAorI2RlZmluZSB1aW50ICAgIHVuc2lnbmVkIGludCAgICAvKiBhc3N1bWluZyA+PSAxNiBiaXRzICovCisKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK3N0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSYXdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnUmF3Q2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKK3N0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdSYXdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CisKIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSk7CiBzdGF0aWMgdm9pZCogX1B5TWVtX0RlYnVnQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKLXN0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CitzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCk7CiAKIHN0YXRpYyB2b2lkIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzKGNvbnN0IHZvaWQgKnApOwogc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnQ2hlY2tBZGRyZXNzKGNoYXIgYXBpX2lkLCBjb25zdCB2b2lkICpwKTsKLSNlbmRpZgogCiAjaWYgZGVmaW5lZChfX2hhc19mZWF0dXJlKSAgLyogQ2xhbmcgKi8KICAjaWYgX19oYXNfZmVhdHVyZShhZGRyZXNzX3Nhbml0aXplcikgIC8qIGlzIEFTQU4gZW5hYmxlZD8gKi8KICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKKyAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKQogICNlbHNlCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiAgI2VuZGlmCiAjZWxzZQogICNpZiBkZWZpbmVkKF9fU0FOSVRJWkVfQUREUkVTU19fKSAgLyogR0NDIDQuOC54LCBpcyBBU0FOIGVuYWJsZWQ/ICovCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKSBcCi0gICAgICAgIF9fYXR0cmlidXRlX18gKChub2lubGluZSkpCisgICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkKICAjZWxzZQogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogICNlbmRpZgpAQCAtMTQ1LDkgKzE1Niw4IEBACiAjZWxzZQogIyAgZGVmaW5lIFBZT0JKX0ZVTkNTIFBZUkFXX0ZVTkNTCiAjZW5kaWYKLSNkZWZpbmUgUFlNRU1fRlVOQ1MgUFlSQVdfRlVOQ1MKKyNkZWZpbmUgUFlNRU1fRlVOQ1MgUFlPQkpfRlVOQ1MKIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLyogV2UgdGFnIGVhY2ggYmxvY2sgd2l0aCBhbiBBUEkgSUQgaW4gb3JkZXIgdG8gdGFnIEFQSSB2aW9sYXRpb25zICovCiAgICAgY2hhciBhcGlfaWQ7CkBAIC0xNjMsMTkgKzE3MywyMSBAQAogICAgIHsnbycsIHtOVUxMLCBQWU9CSl9GVU5DU319CiAgICAgfTsKIAotI2RlZmluZSBQWURCR19GVU5DUyBfUHlNZW1fRGVidWdNYWxsb2MsIF9QeU1lbV9EZWJ1Z0NhbGxvYywgX1B5TWVtX0RlYnVnUmVhbGxvYywgX1B5TWVtX0RlYnVnRnJlZQotI2VuZGlmCisjZGVmaW5lIFBZUkFXREJHX0ZVTkNTIFwKKyAgICBfUHlNZW1fRGVidWdSYXdNYWxsb2MsIF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYywgX1B5TWVtX0RlYnVnUmF3UmVhbGxvYywgX1B5TWVtX0RlYnVnUmF3RnJlZQorI2RlZmluZSBQWURCR19GVU5DUyBcCisgICAgX1B5TWVtX0RlYnVnTWFsbG9jLCBfUHlNZW1fRGVidWdDYWxsb2MsIF9QeU1lbV9EZWJ1Z1JlYWxsb2MsIF9QeU1lbV9EZWJ1Z0ZyZWUKIAogc3RhdGljIFB5TWVtQWxsb2NhdG9yRXggX1B5TWVtX1JhdyA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgICZfUHlNZW1fRGVidWcucmF3LCBQWURCR19GVU5DUworI2lmZGVmIFB5X0RFQlVHCisgICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZUkFXREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZUkFXX0ZVTkNTCiAjZW5kaWYKICAgICB9OwogCiBzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW0gPSB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKKyNpZmRlZiBQeV9ERUJVRwogICAgICZfUHlNZW1fRGVidWcubWVtLCBQWURCR19GVU5DUwogI2Vsc2UKICAgICBOVUxMLCBQWU1FTV9GVU5DUwpAQCAtMTgzLDE2ICsxOTUsNzYgQEAKICAgICB9OwogCiBzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlPYmplY3QgPSB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKKyNpZmRlZiBQeV9ERUJVRwogICAgICZfUHlNZW1fRGVidWcub2JqLCBQWURCR19GVU5DUwogI2Vsc2UKICAgICBOVUxMLCBQWU9CSl9GVU5DUwogI2VuZGlmCiAgICAgfTsKIAoraW50CitfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKGNvbnN0IGNoYXIgKm9wdCkKK3sKKyAgICBpZiAob3B0ID09IE5VTEwgfHwgKm9wdCA9PSAnXDAnKSB7CisgICAgICAgIC8qIFBZVEhPTk1BTExPQyBpcyBlbXB0eSBvciBpcyBub3Qgc2V0IG9yIGlnbm9yZWQgKC1FLy1JIGNvbW1hbmQgbGluZQorICAgICAgICAgICBvcHRpb25zKTogdXNlIGRlZmF1bHQgYWxsb2NhdG9ycyAqLworI2lmZGVmIFB5X0RFQlVHCisjICBpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgICAgIG9wdCA9ICJweW1hbGxvY19kZWJ1ZyI7CisjICBlbHNlCisgICAgICAgIG9wdCA9ICJtYWxsb2NfZGVidWciOworIyAgZW5kaWYKKyNlbHNlCisgICAvKiAhUHlfREVCVUcgKi8KKyMgIGlmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICAgICAgb3B0ID0gInB5bWFsbG9jIjsKKyMgIGVsc2UKKyAgICAgICAgb3B0ID0gIm1hbGxvYyI7CisjICBlbmRpZgorI2VuZGlmCisgICAgfQorCisgICAgaWYgKHN0cmNtcChvcHQsICJkZWJ1ZyIpID09IDApIHsKKyAgICAgICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCk7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChvcHQsICJtYWxsb2MiKSA9PSAwIHx8IHN0cmNtcChvcHQsICJtYWxsb2NfZGVidWciKSA9PSAwKQorICAgIHsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCBhbGxvYyA9IHtOVUxMLCBQWVJBV19GVU5DU307CisKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fTUVNLCAmYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jKTsKKworICAgICAgICBpZiAoc3RyY21wKG9wdCwgIm1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisjaWZkZWYgV0lUSF9QWU1BTExPQworICAgIGVsc2UgaWYgKHN0cmNtcChvcHQsICJweW1hbGxvYyIpID09IDAKKyAgICAgICAgICAgICB8fCBzdHJjbXAob3B0LCAicHltYWxsb2NfZGVidWciKSA9PSAwKQorICAgIHsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCByYXdfYWxsb2MgPSB7TlVMTCwgUFlSQVdfRlVOQ1N9OworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IG1lbV9hbGxvYyA9IHtOVUxMLCBQWU1FTV9GVU5DU307CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggb2JqX2FsbG9jID0ge05VTEwsIFBZT0JKX0ZVTkNTfTsKKworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJnJhd19hbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fTUVNLCAmbWVtX2FsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZvYmpfYWxsb2MpOworCisgICAgICAgIGlmIChzdHJjbXAob3B0LCAicHltYWxsb2NfZGVidWciKSA9PSAwKQorICAgICAgICAgICAgUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKCk7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIC8qIHVua25vd24gYWxsb2NhdG9yICovCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKICN1bmRlZiBQWVJBV19GVU5DUwogI3VuZGVmIFBZTUVNX0ZVTkNTCiAjdW5kZWYgUFlPQkpfRlVOQ1MKKyN1bmRlZiBQWVJBV0RCR19GVU5DUwogI3VuZGVmIFBZREJHX0ZVTkNTCiAKIHN0YXRpYyBQeU9iamVjdEFyZW5hQWxsb2NhdG9yIF9QeU9iamVjdF9BcmVuYSA9IHtOVUxMLApAQCAtMjA1LDIzICsyNzcsNDYgQEAKICNlbmRpZgogICAgIH07CiAKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCitzdGF0aWMgaW50CitfUHlNZW1fRGVidWdFbmFibGVkKHZvaWQpCit7CisgICAgcmV0dXJuIChfUHlPYmplY3QubWFsbG9jID09IF9QeU1lbV9EZWJ1Z01hbGxvYyk7Cit9CisKK2ludAorX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCh2b2lkKQoreworICAgIGlmIChfUHlNZW1fRGVidWdFbmFibGVkKCkpIHsKKyAgICAgICAgcmV0dXJuIChfUHlNZW1fRGVidWcub2JqLmFsbG9jLm1hbGxvYyA9PSBfUHlPYmplY3RfTWFsbG9jKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAoX1B5T2JqZWN0Lm1hbGxvYyA9PSBfUHlPYmplY3RfTWFsbG9jKTsKKyAgICB9Cit9CisjZW5kaWYKKwogdm9pZAogUHlNZW1fU2V0dXBEZWJ1Z0hvb2tzKHZvaWQpCiB7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jOwogCisgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnUmF3TWFsbG9jOworICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYzsKKyAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmF3UmVhbGxvYzsKKyAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnUmF3RnJlZTsKKworICAgIGlmIChfUHlNZW1fUmF3Lm1hbGxvYyAhPSBfUHlNZW1fRGVidWdSYXdNYWxsb2MpIHsKKyAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5yYXc7CisgICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmX1B5TWVtX0RlYnVnLnJhdy5hbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmYWxsb2MpOworICAgIH0KKwogICAgIGFsbG9jLm1hbGxvYyA9IF9QeU1lbV9EZWJ1Z01hbGxvYzsKICAgICBhbGxvYy5jYWxsb2MgPSBfUHlNZW1fRGVidWdDYWxsb2M7CiAgICAgYWxsb2MucmVhbGxvYyA9IF9QeU1lbV9EZWJ1Z1JlYWxsb2M7CiAgICAgYWxsb2MuZnJlZSA9IF9QeU1lbV9EZWJ1Z0ZyZWU7CiAKLSAgICBpZiAoX1B5TWVtX1Jhdy5tYWxsb2MgIT0gX1B5TWVtX0RlYnVnTWFsbG9jKSB7Ci0gICAgICAgIGFsbG9jLmN0eCA9ICZfUHlNZW1fRGVidWcucmF3OwotICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJl9QeU1lbV9EZWJ1Zy5yYXcuYWxsb2MpOwotICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJmFsbG9jKTsKLSAgICB9Ci0KICAgICBpZiAoX1B5TWVtLm1hbGxvYyAhPSBfUHlNZW1fRGVidWdNYWxsb2MpIHsKICAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5tZW07CiAgICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fTUVNLCAmX1B5TWVtX0RlYnVnLm1lbS5hbGxvYyk7CkBAIC0yMzMsNyArMzI4LDYgQEAKICAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZfUHlNZW1fRGVidWcub2JqLmFsbG9jKTsKICAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9PQkosICZhbGxvYyk7CiAgICAgfQotI2VuZGlmCiB9CiAKIHZvaWQKQEAgLTI2NCw3ICszNTgsNiBAQAogICAgIGNhc2UgUFlNRU1fRE9NQUlOX09CSjogX1B5T2JqZWN0ID0gKmFsbG9jYXRvcjsgYnJlYWs7CiAgICAgLyogaWdub3JlIHVua25vd24gZG9tYWluICovCiAgICAgfQotCiB9CiAKIHZvaWQKQEAgLTY0MiwyNCArNzM1LDggQEAKICNkZWZpbmUgU0lNUExFTE9DS19MT0NLKGxvY2spICAgLyogYWNxdWlyZSByZWxlYXNlZCBsb2NrICovCiAjZGVmaW5lIFNJTVBMRUxPQ0tfVU5MT0NLKGxvY2spIC8qIHJlbGVhc2UgYWNxdWlyZWQgbG9jayAqLwogCi0vKgotICogQmFzaWMgdHlwZXMKLSAqIEkgZG9uJ3QgY2FyZSBpZiB0aGVzZSBhcmUgZGVmaW5lZCBpbiA8c3lzL3R5cGVzLmg+IG9yIGVsc2V3aGVyZS4gQXhpb20uCi0gKi8KLSN1bmRlZiAgdWNoYXIKLSNkZWZpbmUgdWNoYXIgICB1bnNpZ25lZCBjaGFyICAgLyogYXNzdW1pbmcgPT0gOCBiaXRzICAqLwotCi0jdW5kZWYgIHVpbnQKLSNkZWZpbmUgdWludCAgICB1bnNpZ25lZCBpbnQgICAgLyogYXNzdW1pbmcgPj0gMTYgYml0cyAqLwotCi0jdW5kZWYgIHVsb25nCi0jZGVmaW5lIHVsb25nICAgdW5zaWduZWQgbG9uZyAgIC8qIGFzc3VtaW5nID49IDMyIGJpdHMgKi8KLQotI3VuZGVmIHVwdHIKLSNkZWZpbmUgdXB0ciAgICBQeV91aW50cHRyX3QKLQogLyogV2hlbiB5b3Ugc2F5IG1lbW9yeSwgbXkgbWluZCByZWFzb25zIGluIHRlcm1zIG9mIChwb2ludGVycyB0bykgYmxvY2tzICovCi10eXBlZGVmIHVjaGFyIGJsb2NrOwordHlwZWRlZiB1aW50OF90IGJsb2NrOwogCiAvKiBQb29sIGZvciBzbWFsbCBibG9ja3MuICovCiBzdHJ1Y3QgcG9vbF9oZWFkZXIgewpAQCAtNjgzLDcgKzc2MCw3IEBACiAgICAgICogaGVyZSB0byBtYXJrIGFuIGFyZW5hX29iamVjdCB0aGF0IGRvZXNuJ3QgY29ycmVzcG9uZCB0byBhbgogICAgICAqIGFsbG9jYXRlZCBhcmVuYS4KICAgICAgKi8KLSAgICB1cHRyIGFkZHJlc3M7CisgICAgdWludHB0cl90IGFkZHJlc3M7CiAKICAgICAvKiBQb29sLWFsaWduZWQgcG9pbnRlciB0byB0aGUgbmV4dCBwb29sIHRvIGJlIGNhcnZlZCBvZmYuICovCiAgICAgYmxvY2sqIHBvb2xfYWRkcmVzczsKQEAgLTgzNCw3ICs5MTEsNyBAQAogdGhlIHByZXZwb29sIG1lbWJlci4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KIAotI2RlZmluZSBQVEEoeCkgICgocG9vbHAgKSgodWNoYXIgKikmKHVzZWRwb29sc1syKih4KV0pIC0gMipzaXplb2YoYmxvY2sgKikpKQorI2RlZmluZSBQVEEoeCkgICgocG9vbHAgKSgodWludDhfdCAqKSYodXNlZHBvb2xzWzIqKHgpXSkgLSAyKnNpemVvZihibG9jayAqKSkpCiAjZGVmaW5lIFBUKHgpICAgUFRBKHgpLCBQVEEoeCkKIAogc3RhdGljIHBvb2xwIHVzZWRwb29sc1syICogKChOQl9TTUFMTF9TSVpFX0NMQVNTRVMgKyA3KSAvIDgpICogOF0gPSB7CkBAIC05NDksMTEgKzEwMjYsMTUgQEAKICAgICBzdHJ1Y3QgYXJlbmFfb2JqZWN0KiBhcmVuYW9iajsKICAgICB1aW50IGV4Y2VzczsgICAgICAgIC8qIG51bWJlciBvZiBieXRlcyBhYm92ZSBwb29sIGFsaWdubWVudCAqLwogICAgIHZvaWQgKmFkZHJlc3M7CisgICAgc3RhdGljIGludCBkZWJ1Z19zdGF0cyA9IC0xOwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQorICAgIGlmIChkZWJ1Z19zdGF0cyA9PSAtMSkgeworICAgICAgICBjaGFyICpvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIik7CisgICAgICAgIGRlYnVnX3N0YXRzID0gKG9wdCAhPSBOVUxMICYmICpvcHQgIT0gJ1wwJyk7CisgICAgfQorICAgIGlmIChkZWJ1Z19zdGF0cykKICAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKLSNlbmRpZgorCiAgICAgaWYgKHVudXNlZF9hcmVuYV9vYmplY3RzID09IE5VTEwpIHsKICAgICAgICAgdWludCBpOwogICAgICAgICB1aW50IG51bWFyZW5hczsKQEAgLTk2Niw3ICsxMDQ3LDcgQEAKICAgICAgICAgaWYgKG51bWFyZW5hcyA8PSBtYXhhcmVuYXMpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogb3ZlcmZsb3cgKi8KICNpZiBTSVpFT0ZfU0laRV9UIDw9IFNJWkVPRl9JTlQKLSAgICAgICAgaWYgKG51bWFyZW5hcyA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKCphcmVuYXMpKQorICAgICAgICBpZiAobnVtYXJlbmFzID4gU0laRV9NQVggLyBzaXplb2YoKmFyZW5hcykpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogb3ZlcmZsb3cgKi8KICNlbmRpZgogICAgICAgICBuYnl0ZXMgPSBudW1hcmVuYXMgKiBzaXplb2YoKmFyZW5hcyk7CkBAIC0xMDEwLDcgKzEwOTEsNyBAQAogICAgICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFyZW5hb2JqOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodXB0cilhZGRyZXNzOworICAgIGFyZW5hb2JqLT5hZGRyZXNzID0gKHVpbnRwdHJfdClhZGRyZXNzOwogCiAgICAgKytuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7CiAgICAgKytudGltZXNfYXJlbmFfYWxsb2NhdGVkOwpAQCAtMTAzMywxMyArMTExNCwxMyBAQAogfQogCiAvKgotUHlfQUREUkVTU19JTl9SQU5HRShQLCBQT09MKQorYWRkcmVzc19pbl9yYW5nZShQLCBQT09MKQogCiBSZXR1cm4gdHJ1ZSBpZiBhbmQgb25seSBpZiBQIGlzIGFuIGFkZHJlc3MgdGhhdCB3YXMgYWxsb2NhdGVkIGJ5IHB5bWFsbG9jLgogUE9PTCBtdXN0IGJlIHRoZSBwb29sIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIFAsIGkuZS4sIFBPT0wgPSBQT09MX0FERFIoUCkKICh0aGUgY2FsbGVyIGlzIGFza2VkIHRvIGNvbXB1dGUgdGhpcyBiZWNhdXNlIHRoZSBtYWNybyBleHBhbmRzIFBPT0wgbW9yZSB0aGFuCiBvbmNlLCBhbmQgZm9yIGVmZmljaWVuY3kgaXQncyBiZXN0IGZvciB0aGUgY2FsbGVyIHRvIGFzc2lnbiBQT09MX0FERFIoUCkgdG8gYQotdmFyaWFibGUgYW5kIHBhc3MgdGhlIGxhdHRlciB0byB0aGUgbWFjcm87IGJlY2F1c2UgUHlfQUREUkVTU19JTl9SQU5HRSBpcwordmFyaWFibGUgYW5kIHBhc3MgdGhlIGxhdHRlciB0byB0aGUgbWFjcm87IGJlY2F1c2UgYWRkcmVzc19pbl9yYW5nZSBpcwogY2FsbGVkIG9uIGV2ZXJ5IGFsbG9jL3JlYWxsb2MvZnJlZSwgbWljcm8tZWZmaWNpZW5jeSBpcyBpbXBvcnRhbnQgaGVyZSkuCiAKIFRyaWNreTogIExldCBCIGJlIHRoZSBhcmVuYSBiYXNlIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sLCBCID0KQEAgLTEwNjQsNyArMTE0NSw3IEBACiBzdG9yZXMsIGV0YyksIFBPT0wgaXMgdGhlIGNvcnJlY3QgYWRkcmVzcyBvZiBQJ3MgcG9vbCwgQU8uYWRkcmVzcyBpcyB0aGUKIGNvcnJlY3QgYmFzZSBhZGRyZXNzIG9mIHRoZSBwb29sJ3MgYXJlbmEsIGFuZCBQIG11c3QgYmUgd2l0aGluIEFSRU5BX1NJWkUgb2YKIEFPLmFkZHJlc3MuICBJbiBhZGRpdGlvbiwgQU8uYWRkcmVzcyBpcyBub3QgMCAobm8gYXJlbmEgY2FuIHN0YXJ0IGF0IGFkZHJlc3MgMAotKE5VTEwpKS4gIFRoZXJlZm9yZSBQeV9BRERSRVNTX0lOX1JBTkdFIGNvcnJlY3RseSByZXBvcnRzIHRoYXQgb2JtYWxsb2MKKyhOVUxMKSkuICBUaGVyZWZvcmUgYWRkcmVzc19pbl9yYW5nZSBjb3JyZWN0bHkgcmVwb3J0cyB0aGF0IG9ibWFsbG9jCiBjb250cm9scyBQLgogCiBOb3cgc3VwcG9zZSBvYm1hbGxvYyBkb2VzIG5vdCBjb250cm9sIFAgKGUuZy4sIFAgd2FzIG9idGFpbmVkIHZpYSBhIGRpcmVjdApAQCAtMTEwNSw1MSArMTE4NiwyMSBAQAogb2JtYWxsb2MgaW4gYSBzbWFsbCBjb25zdGFudCB0aW1lLCBpbmRlcGVuZGVudCBvZiB0aGUgbnVtYmVyIG9mIGFyZW5hcwogb2JtYWxsb2MgY29udHJvbHMuICBTaW5jZSB0aGlzIHRlc3QgaXMgbmVlZGVkIGF0IGV2ZXJ5IGVudHJ5IHBvaW50LCBpdCdzCiBleHRyZW1lbHkgZGVzaXJhYmxlIHRoYXQgaXQgYmUgdGhpcyBmYXN0LgotCi1TaW5jZSBQeV9BRERSRVNTX0lOX1JBTkdFIG1heSBiZSByZWFkaW5nIGZyb20gbWVtb3J5IHdoaWNoIHdhcyBub3QgYWxsb2NhdGVkCi1ieSBQeXRob24sIGl0IGlzIGltcG9ydGFudCB0aGF0IChQT09MKS0+YXJlbmFpbmRleCBpcyByZWFkIG9ubHkgb25jZSwgYXMKLWFub3RoZXIgdGhyZWFkIG1heSBiZSBjb25jdXJyZW50bHkgbW9kaWZ5aW5nIHRoZSB2YWx1ZSB3aXRob3V0IGhvbGRpbmcgdGhlCi1HSUwuICBUbyBhY2NvbXBsaXNoIHRoaXMsIHRoZSBhcmVuYWluZGV4X3RlbXAgdmFyaWFibGUgaXMgdXNlZCB0byBzdG9yZQotKFBPT0wpLT5hcmVuYWluZGV4IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIFB5X0FERFJFU1NfSU5fUkFOR0UgbWFjcm8ncwotZXhlY3V0aW9uLiAgVGhlIGNhbGxlciBvZiB0aGUgbWFjcm8gaXMgcmVzcG9uc2libGUgZm9yIGRlY2xhcmluZyB0aGlzCi12YXJpYWJsZS4KICovCi0jZGVmaW5lIFB5X0FERFJFU1NfSU5fUkFOR0UoUCwgUE9PTCkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKGFyZW5haW5kZXhfdGVtcCA9IChQT09MKS0+YXJlbmFpbmRleCkgPCBtYXhhcmVuYXMgJiYgICAgICAgICAgICAgIFwKLSAgICAgKHVwdHIpKFApIC0gYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyA8ICh1cHRyKUFSRU5BX1NJWkUgJiYgXAotICAgICBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzICE9IDApCiAKLQotLyogVGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHJ1bm5pbmcgbWVtb3J5IGRlYnVnZ2VycyBzdWNoIGFzCi0gKiBQdXJpZnkgb3IgVmFsZ3JpbmQuICBVbmNvbW1lbnQgdG8gdXNlLgotICoKLSNkZWZpbmUgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0gKi8KLQotI2lmZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotCi0vKiBQeV9BRERSRVNTX0lOX1JBTkdFIG1heSBhY2Nlc3MgdW5pbml0aWFsaXplZCBtZW1vcnkgYnkgZGVzaWduCi0gKiBUaGlzIGxlYWRzIHRvIHRob3VzYW5kcyBvZiBzcHVyaW91cyB3YXJuaW5ncyB3aGVuIHVzaW5nCi0gKiBQdXJpZnkgb3IgVmFsZ3JpbmQuICBCeSBtYWtpbmcgYSBmdW5jdGlvbiwgd2UgY2FuIGVhc2lseQotICogc3VwcHJlc3MgdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIGluIHRoaXMgb25lIGZ1bmN0aW9uLgotICogU28gd2Ugd29uJ3QgaWdub3JlIHJlYWwgZXJyb3JzIGVsc2V3aGVyZS4KLSAqCi0gKiBEaXNhYmxlIHRoZSBtYWNybyBhbmQgdXNlIGEgZnVuY3Rpb24uCi0gKi8KLQotI3VuZGVmIFB5X0FERFJFU1NfSU5fUkFOR0UKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDEpIHx8IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fR05VQ19fID49IDQpKQotI2RlZmluZSBQeV9OT19JTkxJTkUgX19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9fKSkKLSNlbHNlCi0jZGVmaW5lIFB5X05PX0lOTElORQotI2VuZGlmCi0KLS8qIERvbid0IG1ha2Ugc3RhdGljLCB0byB0cnkgdG8gZW5zdXJlIHRoaXMgaXNuJ3QgaW5saW5lZC4gKi8KLWludCBQeV9BRERSRVNTX0lOX1JBTkdFKHZvaWQgKlAsIHBvb2xwIHBvb2wpIFB5X05PX0lOTElORTsKLSN1bmRlZiBQeV9OT19JTkxJTkUKLSNlbmRpZgorc3RhdGljIGJvb2wgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCithZGRyZXNzX2luX3JhbmdlKHZvaWQgKnAsIHBvb2xwIHBvb2wpCit7CisgICAgLy8gU2luY2UgYWRkcmVzc19pbl9yYW5nZSBtYXkgYmUgcmVhZGluZyBmcm9tIG1lbW9yeSB3aGljaCB3YXMgbm90IGFsbG9jYXRlZAorICAgIC8vIGJ5IFB5dGhvbiwgaXQgaXMgaW1wb3J0YW50IHRoYXQgcG9vbC0+YXJlbmFpbmRleCBpcyByZWFkIG9ubHkgb25jZSwgYXMKKyAgICAvLyBhbm90aGVyIHRocmVhZCBtYXkgYmUgY29uY3VycmVudGx5IG1vZGlmeWluZyB0aGUgdmFsdWUgd2l0aG91dCBob2xkaW5nCisgICAgLy8gdGhlIEdJTC4gVGhlIGZvbGxvd2luZyBkYW5jZSBmb3JjZXMgdGhlIGNvbXBpbGVyIHRvIHJlYWQgcG9vbC0+YXJlbmFpbmRleAorICAgIC8vIG9ubHkgb25jZS4KKyAgICB1aW50IGFyZW5haW5kZXggPSAqKCh2b2xhdGlsZSB1aW50ICopJnBvb2wtPmFyZW5haW5kZXgpOworICAgIHJldHVybiBhcmVuYWluZGV4IDwgbWF4YXJlbmFzICYmCisgICAgICAgICh1aW50cHRyX3QpcCAtIGFyZW5hc1thcmVuYWluZGV4XS5hZGRyZXNzIDwgQVJFTkFfU0laRSAmJgorICAgICAgICBhcmVuYXNbYXJlbmFpbmRleF0uYWRkcmVzcyAhPSAwOworfQogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIApAQCAtMTM5NCw3ICsxNDQ1LDYgQEAKIAogLyogZnJlZSAqLwogCi1BVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKIHN0YXRpYyB2b2lkCiBfUHlPYmplY3RfRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApCiB7CkBAIC0xNDAyLDkgKzE0NTIsNiBAQAogICAgIGJsb2NrICpsYXN0ZnJlZTsKICAgICBwb29scCBuZXh0LCBwcmV2OwogICAgIHVpbnQgc2l6ZTsKLSNpZm5kZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0gICAgdWludCBhcmVuYWluZGV4X3RlbXA7Ci0jZW5kaWYKIAogICAgIGlmIChwID09IE5VTEwpICAgICAgLyogZnJlZShOVUxMKSBoYXMgbm8gZWZmZWN0ICovCiAgICAgICAgIHJldHVybjsKQEAgLTE0MTcsNyArMTQ2NCw3IEBACiAjZW5kaWYKIAogICAgIHBvb2wgPSBQT09MX0FERFIocCk7Ci0gICAgaWYgKFB5X0FERFJFU1NfSU5fUkFOR0UocCwgcG9vbCkpIHsKKyAgICBpZiAoYWRkcmVzc19pbl9yYW5nZShwLCBwb29sKSkgewogICAgICAgICAvKiBXZSBhbGxvY2F0ZWQgdGhpcyBhZGRyZXNzLiAqLwogICAgICAgICBMT0NLKCk7CiAgICAgICAgIC8qIExpbmsgcCB0byB0aGUgc3RhcnQgb2YgdGhlIHBvb2wncyBmcmVlYmxvY2sgbGlzdC4gIFNpbmNlCkBAIC0xNjIzLDE2ICsxNjcwLDEyIEBACiAgKiByZXR1cm4gYSBub24tTlVMTCByZXN1bHQuCiAgKi8KIAotQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiBzdGF0aWMgdm9pZCAqCiBfUHlPYmplY3RfUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgdm9pZCAqYnA7CiAgICAgcG9vbHAgcG9vbDsKICAgICBzaXplX3Qgc2l6ZTsKLSNpZm5kZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0gICAgdWludCBhcmVuYWluZGV4X3RlbXA7Ci0jZW5kaWYKIAogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQWxsb2MoMCwgY3R4LCAxLCBuYnl0ZXMpOwpAQCAtMTY0NCw3ICsxNjg3LDcgQEAKICNlbmRpZgogCiAgICAgcG9vbCA9IFBPT0xfQUREUihwKTsKLSAgICBpZiAoUHlfQUREUkVTU19JTl9SQU5HRShwLCBwb29sKSkgeworICAgIGlmIChhZGRyZXNzX2luX3JhbmdlKHAsIHBvb2wpKSB7CiAgICAgICAgIC8qIFdlJ3JlIGluIGNoYXJnZSBvZiB0aGlzIGJsb2NrICovCiAgICAgICAgIHNpemUgPSBJTkRFWDJTSVpFKHBvb2wtPnN6aWR4KTsKICAgICAgICAgaWYgKG5ieXRlcyA8PSBzaXplKSB7CkBAIC0xNzA5LDcgKzE3NTIsNyBAQAogCiAjZW5kaWYgLyogV0lUSF9QWU1BTExPQyAqLwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKKwogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAvKiBBIHgtcGxhdGZvcm0gZGVidWdnaW5nIGFsbG9jYXRvci4gIFRoaXMgZG9lc24ndCBtYW5hZ2UgbWVtb3J5IGRpcmVjdGx5LAogICogaXQgd3JhcHMgYSByZWFsIGFsbG9jYXRvciwgYWRkaW5nIGV4dHJhIGRlYnVnZ2luZyBpbmZvIHRvIHRoZSBtZW1vcnkgYmxvY2tzLgpAQCAtMTc0Myw3ICsxNzg2LDcgQEAKIHN0YXRpYyBzaXplX3QKIHJlYWRfc2l6ZV90KGNvbnN0IHZvaWQgKnApCiB7Ci0gICAgY29uc3QgdWNoYXIgKnEgPSAoY29uc3QgdWNoYXIgKilwOworICAgIGNvbnN0IHVpbnQ4X3QgKnEgPSAoY29uc3QgdWludDhfdCAqKXA7CiAgICAgc2l6ZV90IHJlc3VsdCA9ICpxKys7CiAgICAgaW50IGk7CiAKQEAgLTE3NTgsNDAgKzE4MDEsMTUgQEAKIHN0YXRpYyB2b2lkCiB3cml0ZV9zaXplX3Qodm9pZCAqcCwgc2l6ZV90IG4pCiB7Ci0gICAgdWNoYXIgKnEgPSAodWNoYXIgKilwICsgU1NUIC0gMTsKKyAgICB1aW50OF90ICpxID0gKHVpbnQ4X3QgKilwICsgU1NUIC0gMTsKICAgICBpbnQgaTsKIAogICAgIGZvciAoaSA9IFNTVDsgLS1pID49IDA7IC0tcSkgewotICAgICAgICAqcSA9ICh1Y2hhcikobiAmIDB4ZmYpOworICAgICAgICAqcSA9ICh1aW50OF90KShuICYgMHhmZik7CiAgICAgICAgIG4gPj49IDg7CiAgICAgfQogfQogCi0jaWZkZWYgUHlfREVCVUcKLS8qIElzIHRhcmdldCBpbiB0aGUgbGlzdD8gIFRoZSBsaXN0IGlzIHRyYXZlcnNlZCB2aWEgdGhlIG5leHRwb29sIHBvaW50ZXJzLgotICogVGhlIGxpc3QgbWF5IGJlIE5VTEwtdGVybWluYXRlZCwgb3IgY2lyY3VsYXIuICBSZXR1cm4gMSBpZiB0YXJnZXQgaXMgaW4KLSAqIGxpc3QsIGVsc2UgMC4KLSAqLwotc3RhdGljIGludAotcG9vbF9pc19pbl9saXN0KGNvbnN0IHBvb2xwIHRhcmdldCwgcG9vbHAgbGlzdCkKLXsKLSAgICBwb29scCBvcmlnbGlzdCA9IGxpc3Q7Ci0gICAgYXNzZXJ0KHRhcmdldCAhPSBOVUxMKTsKLSAgICBpZiAobGlzdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBkbyB7Ci0gICAgICAgIGlmICh0YXJnZXQgPT0gbGlzdCkKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBsaXN0ID0gbGlzdC0+bmV4dHBvb2w7Ci0gICAgfSB3aGlsZSAobGlzdCAhPSBOVUxMICYmIGxpc3QgIT0gb3JpZ2xpc3QpOwotICAgIHJldHVybiAwOwotfQotCi0jZWxzZQotI2RlZmluZSBwb29sX2lzX2luX2xpc3QoWCwgWSkgMQotCi0jZW5kaWYgIC8qIFB5X0RFQlVHICovCi0KIC8qIExldCBTID0gc2l6ZW9mKHNpemVfdCkuICBUaGUgZGVidWcgbWFsbG9jIGFza3MgZm9yIDQqUyBleHRyYSBieXRlcyBhbmQKICAgIGZpbGxzIHRoZW0gd2l0aCB1c2VmdWwgc3R1ZmYsIGhlcmUgY2FsbGluZyB0aGUgdW5kZXJseWluZyBtYWxsb2MncyByZXN1bHQgcDoKIApAQCAtMTgxOSwxMSArMTgzNywxMSBAQAogKi8KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnQWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK19QeU1lbV9EZWJ1Z1Jhd0FsbG9jKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKLSAgICB1Y2hhciAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KLSAgICB1Y2hhciAqdGFpbDsgICAgICAgIC8qIHAgKyAyKlNTVCArIG5ieXRlcyA9PSBwb2ludGVyIHRvIHRhaWwgcGFkIGJ5dGVzICovCisgICAgdWludDhfdCAqcDsgICAgICAgICAgIC8qIGJhc2UgYWRkcmVzcyBvZiBtYWxsb2MnZWQgYmxvY2sgKi8KKyAgICB1aW50OF90ICp0YWlsOyAgICAgICAgLyogcCArIDIqU1NUICsgbmJ5dGVzID09IHBvaW50ZXIgdG8gdGFpbCBwYWQgYnl0ZXMgKi8KICAgICBzaXplX3QgdG90YWw7ICAgICAgIC8qIG5ieXRlcyArIDQqU1NUICovCiAKICAgICBidW1wc2VyaWFsbm8oKTsKQEAgLTE4MzMsMTUgKzE4NTEsMTUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlX2NhbGxvYykKLSAgICAgICAgcCA9ICh1Y2hhciAqKWFwaS0+YWxsb2MuY2FsbG9jKGFwaS0+YWxsb2MuY3R4LCAxLCB0b3RhbCk7CisgICAgICAgIHAgPSAodWludDhfdCAqKWFwaS0+YWxsb2MuY2FsbG9jKGFwaS0+YWxsb2MuY3R4LCAxLCB0b3RhbCk7CiAgICAgZWxzZQotICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKKyAgICAgICAgcCA9ICh1aW50OF90ICopYXBpLT5hbGxvYy5tYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHRvdGFsKTsKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGF0IHAsIHdyaXRlIHNpemUgKFNTVCBieXRlcyksIGlkICgxIGJ5dGUpLCBwYWQgKFNTVC0xIGJ5dGVzKSAqLwogICAgIHdyaXRlX3NpemVfdChwLCBuYnl0ZXMpOwotICAgIHBbU1NUXSA9ICh1Y2hhcilhcGktPmFwaV9pZDsKKyAgICBwW1NTVF0gPSAodWludDhfdClhcGktPmFwaV9pZDsKICAgICBtZW1zZXQocCArIFNTVCArIDEsIEZPUkJJRERFTkJZVEUsIFNTVC0xKTsKIAogICAgIGlmIChuYnl0ZXMgPiAwICYmICF1c2VfY2FsbG9jKQpAQCAtMTg1NiwxOCArMTg3NCwxOCBAQAogfQogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQorX1B5TWVtX0RlYnVnUmF3TWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKIHsKLSAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMCwgY3R4LCBuYnl0ZXMpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CiB9CiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKK19QeU1lbV9EZWJ1Z1Jhd0NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICBzaXplX3QgbmJ5dGVzOwogICAgIGFzc2VydChlbHNpemUgPT0gMCB8fCBuZWxlbSA8PSBQWV9TU0laRV9UX01BWCAvIGVsc2l6ZSk7CiAgICAgbmJ5dGVzID0gbmVsZW0gKiBlbHNpemU7Ci0gICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z0FsbG9jKDEsIGN0eCwgbmJ5dGVzKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3QWxsb2MoMSwgY3R4LCBuYnl0ZXMpOwogfQogCiAvKiBUaGUgZGVidWcgZnJlZSBmaXJzdCBjaGVja3MgdGhlIDIqU1NUIGJ5dGVzIG9uIGVhY2ggZW5kIGZvciBzYW5pdHkgKGluCkBAIC0xODc2LDEwICsxODk0LDEwIEBACiAgICBUaGVuIGNhbGxzIHRoZSB1bmRlcmx5aW5nIGZyZWUuCiAqLwogc3RhdGljIHZvaWQKLV9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKQorX1B5TWVtX0RlYnVnUmF3RnJlZSh2b2lkICpjdHgsIHZvaWQgKnApCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKLSAgICB1Y2hhciAqcSA9ICh1Y2hhciAqKXAgLSAyKlNTVDsgIC8qIGFkZHJlc3MgcmV0dXJuZWQgZnJvbSBtYWxsb2MgKi8KKyAgICB1aW50OF90ICpxID0gKHVpbnQ4X3QgKilwIC0gMipTU1Q7ICAvKiBhZGRyZXNzIHJldHVybmVkIGZyb20gbWFsbG9jICovCiAgICAgc2l6ZV90IG5ieXRlczsKIAogICAgIGlmIChwID09IE5VTEwpCkBAIC0xODkzLDE3ICsxOTExLDE3IEBACiB9CiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwLCBzaXplX3QgbmJ5dGVzKQorX1B5TWVtX0RlYnVnUmF3UmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCiB7CiAgICAgZGVidWdfYWxsb2NfYXBpX3QgKmFwaSA9IChkZWJ1Z19hbGxvY19hcGlfdCAqKWN0eDsKLSAgICB1Y2hhciAqcSA9ICh1Y2hhciAqKXAsICpvbGRxOwotICAgIHVjaGFyICp0YWlsOworICAgIHVpbnQ4X3QgKnEgPSAodWludDhfdCAqKXAsICpvbGRxOworICAgIHVpbnQ4X3QgKnRhaWw7CiAgICAgc2l6ZV90IHRvdGFsOyAgICAgICAvKiBuYnl0ZXMgKyA0KlNTVCAqLwogICAgIHNpemVfdCBvcmlnaW5hbF9uYnl0ZXM7CiAgICAgaW50IGk7CiAKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMCwgY3R4LCBuYnl0ZXMpOworICAgICAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3QWxsb2MoMCwgY3R4LCBuYnl0ZXMpOwogCiAgICAgX1B5TWVtX0RlYnVnQ2hlY2tBZGRyZXNzKGFwaS0+YXBpX2lkLCBwKTsKICAgICBidW1wc2VyaWFsbm8oKTsKQEAgLTE5MTgsNyArMTkzNiw3IEBACiAgICAgICogYnV0IHdlIGxpdmUgd2l0aCB0aGF0LgogICAgICAqLwogICAgIG9sZHEgPSBxOwotICAgIHEgPSAodWNoYXIgKilhcGktPmFsbG9jLnJlYWxsb2MoYXBpLT5hbGxvYy5jdHgsIHEgLSAyKlNTVCwgdG90YWwpOworICAgIHEgPSAodWludDhfdCAqKWFwaS0+YWxsb2MucmVhbGxvYyhhcGktPmFsbG9jLmN0eCwgcSAtIDIqU1NULCB0b3RhbCk7CiAgICAgaWYgKHEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE5MjgsNyArMTk0Niw3IEBACiAgICAgfQogCiAgICAgd3JpdGVfc2l6ZV90KHEsIG5ieXRlcyk7Ci0gICAgYXNzZXJ0KHFbU1NUXSA9PSAodWNoYXIpYXBpLT5hcGlfaWQpOworICAgIGFzc2VydChxW1NTVF0gPT0gKHVpbnQ4X3QpYXBpLT5hcGlfaWQpOwogICAgIGZvciAoaSA9IDE7IGkgPCBTU1Q7ICsraSkKICAgICAgICAgYXNzZXJ0KHFbU1NUICsgaV0gPT0gRk9SQklEREVOQllURSk7CiAgICAgcSArPSAyKlNTVDsKQEAgLTE5NDYsNiArMTk2NCw0NCBAQAogICAgIHJldHVybiBxOwogfQogCitzdGF0aWMgdm9pZAorX1B5TWVtX0RlYnVnQ2hlY2tHSUwodm9pZCkKK3sKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmICghUHlHSUxTdGF0ZV9DaGVjaygpKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeXRob24gbWVtb3J5IGFsbG9jYXRvciBjYWxsZWQgIgorICAgICAgICAgICAgICAgICAgICAgICJ3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCIpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3TWFsbG9jKGN0eCwgbmJ5dGVzKTsKK30KKworc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0NhbGxvYyhjdHgsIG5lbGVtLCBlbHNpemUpOworfQorCitzdGF0aWMgdm9pZAorX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnB0cikKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIF9QeU1lbV9EZWJ1Z1Jhd0ZyZWUoY3R4LCBwdHIpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmJ5dGVzKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2MoY3R4LCBwdHIsIG5ieXRlcyk7Cit9CisKIC8qIENoZWNrIHRoZSBmb3JiaWRkZW4gYnl0ZXMgb24gYm90aCBlbmRzIG9mIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciBwLgogICogSWYgYW55dGhpbmcgaXMgd3JvbmcsIHByaW50IGluZm8gdG8gc3RkZXJyIHZpYSBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcywKICAqIGFuZCBjYWxsIFB5X0ZhdGFsRXJyb3IgdG8ga2lsbCB0aGUgcHJvZ3JhbS4KQEAgLTE5NTQsMTEgKzIwMTAsMTEgQEAKIHN0YXRpYyB2b2lkCiBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoY2hhciBhcGksIGNvbnN0IHZvaWQgKnApCiB7Ci0gICAgY29uc3QgdWNoYXIgKnEgPSAoY29uc3QgdWNoYXIgKilwOworICAgIGNvbnN0IHVpbnQ4X3QgKnEgPSAoY29uc3QgdWludDhfdCAqKXA7CiAgICAgY2hhciBtc2didWZbNjRdOwogICAgIGNoYXIgKm1zZzsKICAgICBzaXplX3QgbmJ5dGVzOwotICAgIGNvbnN0IHVjaGFyICp0YWlsOworICAgIGNvbnN0IHVpbnQ4X3QgKnRhaWw7CiAgICAgaW50IGk7CiAgICAgY2hhciBpZDsKIApAQCAtMjAwNyw4ICsyMDYzLDggQEAKIHN0YXRpYyB2b2lkCiBfUHlPYmplY3RfRGVidWdEdW1wQWRkcmVzcyhjb25zdCB2b2lkICpwKQogewotICAgIGNvbnN0IHVjaGFyICpxID0gKGNvbnN0IHVjaGFyICopcDsKLSAgICBjb25zdCB1Y2hhciAqdGFpbDsKKyAgICBjb25zdCB1aW50OF90ICpxID0gKGNvbnN0IHVpbnQ4X3QgKilwOworICAgIGNvbnN0IHVpbnQ4X3QgKnRhaWw7CiAgICAgc2l6ZV90IG5ieXRlcywgc2VyaWFsOwogICAgIGludCBpOwogICAgIGludCBvazsKQEAgLTIwNDEsNyArMjA5Nyw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAibm90IGFsbCBGT1JCSURERU5CWVRFICgweCUwMngpOlxuIiwKICAgICAgICAgICAgIEZPUkJJRERFTkJZVEUpOwogICAgICAgICBmb3IgKGkgPSBTU1QtMTsgaSA+PSAxOyAtLWkpIHsKLSAgICAgICAgICAgIGNvbnN0IHVjaGFyIGJ5dGUgPSAqKHEtaSk7CisgICAgICAgICAgICBjb25zdCB1aW50OF90IGJ5dGUgPSAqKHEtaSk7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAgYXQgcC0lZDogMHglMDJ4IiwgaSwgYnl0ZSk7CiAgICAgICAgICAgICBpZiAoYnl0ZSAhPSBGT1JCSURERU5CWVRFKQogICAgICAgICAgICAgICAgIGZwdXRzKCIgKioqIE9VQ0giLCBzdGRlcnIpOwpAQCAtMjA2OSw3ICsyMTI1LDcgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJub3QgYWxsIEZPUkJJRERFTkJZVEUgKDB4JTAyeCk6XG4iLAogICAgICAgICAgICAgICAgIEZPUkJJRERFTkJZVEUpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgU1NUOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IHVjaGFyIGJ5dGUgPSB0YWlsW2ldOworICAgICAgICAgICAgY29uc3QgdWludDhfdCBieXRlID0gdGFpbFtpXTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgICBhdCB0YWlsKyVkOiAweCUwMngiLAogICAgICAgICAgICAgICAgICAgICBpLCBieXRlKTsKICAgICAgICAgICAgIGlmIChieXRlICE9IEZPUkJJRERFTkJZVEUpCkBAIC0yMTA0LDkgKzIxNjAsMTIgQEAKICAgICAgICAgfQogICAgICAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwogICAgIH0KKyAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworCisgICAgZmZsdXNoKHN0ZGVycik7CisgICAgX1B5TWVtX0R1bXBUcmFjZWJhY2soZmlsZW5vKHN0ZGVyciksIHApOwogfQogCi0jZW5kaWYgIC8qIFBZTUFMTE9DX0RFQlVHICovCiAKIHN0YXRpYyBzaXplX3QKIHByaW50b25lKEZJTEUgKm91dCwgY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCkBAIC0yMTU4LDggKzIyMTcsMzAgQEAKICAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZjIsIG51bV9ibG9ja3MgKiBzaXplb2ZfYmxvY2spOwogfQogCisKICNpZmRlZiBXSVRIX1BZTUFMTE9DCiAKKyNpZmRlZiBQeV9ERUJVRworLyogSXMgdGFyZ2V0IGluIHRoZSBsaXN0PyAgVGhlIGxpc3QgaXMgdHJhdmVyc2VkIHZpYSB0aGUgbmV4dHBvb2wgcG9pbnRlcnMuCisgKiBUaGUgbGlzdCBtYXkgYmUgTlVMTC10ZXJtaW5hdGVkLCBvciBjaXJjdWxhci4gIFJldHVybiAxIGlmIHRhcmdldCBpcyBpbgorICogbGlzdCwgZWxzZSAwLgorICovCitzdGF0aWMgaW50Citwb29sX2lzX2luX2xpc3QoY29uc3QgcG9vbHAgdGFyZ2V0LCBwb29scCBsaXN0KQoreworICAgIHBvb2xwIG9yaWdsaXN0ID0gbGlzdDsKKyAgICBhc3NlcnQodGFyZ2V0ICE9IE5VTEwpOworICAgIGlmIChsaXN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIGRvIHsKKyAgICAgICAgaWYgKHRhcmdldCA9PSBsaXN0KQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGxpc3QgPSBsaXN0LT5uZXh0cG9vbDsKKyAgICB9IHdoaWxlIChsaXN0ICE9IE5VTEwgJiYgbGlzdCAhPSBvcmlnbGlzdCk7CisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogLyogUHJpbnQgc3VtbWFyeSBpbmZvIHRvICJvdXQiIGFib3V0IHRoZSBzdGF0ZSBvZiBweW1hbGxvYydzIHN0cnVjdHVyZXMuCiAgKiBJbiBQeV9ERUJVRyBtb2RlLCBhbHNvIHBlcmZvcm0gc29tZSBleHBlbnNpdmUgaW50ZXJuYWwgY29uc2lzdGVuY3kKICAqIGNoZWNrcy4KQEAgLTIyMDYsMzQgKzIyODcsMzUgQEAKICAgICAgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4YXJlbmFzOyArK2kpIHsKICAgICAgICAgdWludCBqOwotICAgICAgICB1cHRyIGJhc2UgPSBhcmVuYXNbaV0uYWRkcmVzczsKKyAgICAgICAgdWludHB0cl90IGJhc2UgPSBhcmVuYXNbaV0uYWRkcmVzczsKIAogICAgICAgICAvKiBTa2lwIGFyZW5hcyB3aGljaCBhcmUgbm90IGFsbG9jYXRlZC4gKi8KLSAgICAgICAgaWYgKGFyZW5hc1tpXS5hZGRyZXNzID09ICh1cHRyKU5VTEwpCisgICAgICAgIGlmIChhcmVuYXNbaV0uYWRkcmVzcyA9PSAodWludHB0cl90KU5VTEwpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbmFyZW5hcyArPSAxOwogCiAgICAgICAgIG51bWZyZWVwb29scyArPSBhcmVuYXNbaV0ubmZyZWVwb29sczsKIAogICAgICAgICAvKiByb3VuZCB1cCB0byBwb29sIGFsaWdubWVudCAqLwotICAgICAgICBpZiAoYmFzZSAmICh1cHRyKVBPT0xfU0laRV9NQVNLKSB7CisgICAgICAgIGlmIChiYXNlICYgKHVpbnRwdHJfdClQT09MX1NJWkVfTUFTSykgewogICAgICAgICAgICAgYXJlbmFfYWxpZ25tZW50ICs9IFBPT0xfU0laRTsKLSAgICAgICAgICAgIGJhc2UgJj0gfih1cHRyKVBPT0xfU0laRV9NQVNLOworICAgICAgICAgICAgYmFzZSAmPSB+KHVpbnRwdHJfdClQT09MX1NJWkVfTUFTSzsKICAgICAgICAgICAgIGJhc2UgKz0gUE9PTF9TSVpFOwogICAgICAgICB9CiAKICAgICAgICAgLyogdmlzaXQgZXZlcnkgcG9vbCBpbiB0aGUgYXJlbmEgKi8KLSAgICAgICAgYXNzZXJ0KGJhc2UgPD0gKHVwdHIpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3MpOwotICAgICAgICBmb3IgKGogPSAwOwotICAgICAgICAgICAgICAgICAgICBiYXNlIDwgKHVwdHIpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3M7Ci0gICAgICAgICAgICAgICAgICAgICsraiwgYmFzZSArPSBQT09MX1NJWkUpIHsKKyAgICAgICAgYXNzZXJ0KGJhc2UgPD0gKHVpbnRwdHJfdCkgYXJlbmFzW2ldLnBvb2xfYWRkcmVzcyk7CisgICAgICAgIGZvciAoaiA9IDA7IGJhc2UgPCAodWludHB0cl90KSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzOworICAgICAgICAgICAgICsraiwgYmFzZSArPSBQT09MX1NJWkUpIHsKICAgICAgICAgICAgIHBvb2xwIHAgPSAocG9vbHApYmFzZTsKICAgICAgICAgICAgIGNvbnN0IHVpbnQgc3ogPSBwLT5zemlkeDsKICAgICAgICAgICAgIHVpbnQgZnJlZWJsb2NrczsKIAogICAgICAgICAgICAgaWYgKHAtPnJlZi5jb3VudCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgLyogY3VycmVudGx5IHVudXNlZCAqLworI2lmZGVmIFB5X0RFQlVHCiAgICAgICAgICAgICAgICAgYXNzZXJ0KHBvb2xfaXNfaW5fbGlzdChwLCBhcmVuYXNbaV0uZnJlZXBvb2xzKSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICsrbnVtcG9vbHNbc3pdOwpAQCAtMjI3Myw5ICsyMzU1LDggQEAKICAgICAgICAgcXVhbnRpemF0aW9uICs9IHAgKiAoKFBPT0xfU0laRSAtIFBPT0xfT1ZFUkhFQUQpICUgc2l6ZSk7CiAgICAgfQogICAgIGZwdXRjKCdcbicsIG91dCk7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICAodm9pZClwcmludG9uZShvdXQsICIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOwotI2VuZGlmCisgICAgaWYgKF9QeU1lbV9EZWJ1Z0VuYWJsZWQoKSkKKyAgICAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyB0aW1lcyBvYmplY3QgbWFsbG9jIGNhbGxlZCIsIHNlcmlhbG5vKTsKICAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBhbGxvY2F0ZWQgdG90YWwiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkKTsKICAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyByZWNsYWltZWQiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkIC0gbmFyZW5hcyk7CiAgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgaGlnaHdhdGVyIG1hcmsiLCBuYXJlbmFzX2hpZ2h3YXRlcik7CkBAIC0yMzAyLDE4ICsyMzgzLDMgQEAKIH0KIAogI2VuZGlmIC8qICNpZmRlZiBXSVRIX1BZTUFMTE9DICovCi0KLSNpZmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLS8qIE1ha2UgdGhpcyBmdW5jdGlvbiBsYXN0IHNvIGdjYyB3b24ndCBpbmxpbmUgaXQgc2luY2UgdGhlIGRlZmluaXRpb24gaXMKLSAqIGFmdGVyIHRoZSByZWZlcmVuY2UuCi0gKi8KLWludAotUHlfQUREUkVTU19JTl9SQU5HRSh2b2lkICpQLCBwb29scCBwb29sKQotewotICAgIHVpbnQgYXJlbmFpbmRleF90ZW1wID0gcG9vbC0+YXJlbmFpbmRleDsKLQotICAgIHJldHVybiBhcmVuYWluZGV4X3RlbXAgPCBtYXhhcmVuYXMgJiYKLSAgICAgICAgICAgKHVwdHIpUCAtIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgPCAodXB0cilBUkVOQV9TSVpFICYmCi0gICAgICAgICAgIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgIT0gMDsKLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vZGljdG9iamVjdC5jIGIvT2JqZWN0cy9vZGljdG9iamVjdC5jCmluZGV4IGE2OTYzZDcuLjIyYjFmMWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKQEAgLTM5LDcgKzM5LDcgQEAKICAgIF9fZ2V0aXRlbV9fKCksIGdldCgpLCBldGMuIGFjY29yZGluZ2x5LgogCiBUaGUgYXBwcm9hY2ggd2l0aCB0aGUgbGVhc3QgcGVyZm9ybWFuY2UgaW1wYWN0ICh0aW1lIGFuZCBzcGFjZSkgaXMgIzIsCi1taXJyb3JpbmcgdGhlIGtleSBvcmRlciBvZiBkaWN0J3MgZGtfZW50aWVzIHdpdGggYW4gYXJyYXkgb2Ygbm9kZSBwb2ludGVycy4KK21pcnJvcmluZyB0aGUga2V5IG9yZGVyIG9mIGRpY3QncyBka19lbnRyaWVzIHdpdGggYW4gYXJyYXkgb2Ygbm9kZSBwb2ludGVycy4KIFdoaWxlIGxvb2tkaWN0KCkgYW5kIGZyaWVuZHMgKGRrX2xvb2t1cCkgZG9uJ3QgZ2l2ZSB1cyB0aGUgaW5kZXggaW50byB0aGUKIGFycmF5LCB3ZSBtYWtlIHVzZSBvZiBwb2ludGVyIGFyaXRobWV0aWMgdG8gZ2V0IHRoYXQgaW5kZXguICBBbiBhbHRlcm5hdGl2ZQogd291bGQgYmUgdG8gcmVmYWN0b3IgbG9va2RpY3QoKSB0byBwcm92aWRlIHRoZSBpbmRleCwgZXhwbGljaXRseSBleHBvc2luZwpAQCAtNTM2LDE0ICs1MzYsMTcgQEAKIF9vZGljdF9nZXRfaW5kZXhfcmF3KFB5T0RpY3RPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gKChQeURpY3RPYmplY3QgKilvZCktPm1hX2tleXM7CisgICAgUHlfc3NpemVfdCBpeDsKIAotICAgIGVwID0gKGtleXMtPmRrX2xvb2t1cCkoKFB5RGljdE9iamVjdCAqKW9kLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChrZXlzLT5ka19sb29rdXApKChQeURpY3RPYmplY3QgKilvZCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgcmV0dXJuIGtleXMtPmRrX25lbnRyaWVzOyAgLyogaW5kZXggb2YgbmV3IGVudHJ5ICovCisgICAgfQorICAgIGlmIChpeCA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICAvKiBXZSB1c2UgcG9pbnRlciBhcml0aG1ldGljIHRvIGdldCB0aGUgZW50cnkncyBpbmRleCBpbnRvIHRoZSB0YWJsZS4gKi8KLSAgICByZXR1cm4gZXAgLSBrZXlzLT5ka19lbnRyaWVzOworICAgIHJldHVybiBpeDsKIH0KIAogLyogUmVwbGFjZSBvZC0+b2RfZmFzdF9ub2RlcyB3aXRoIGEgbmV3IHRhYmxlIG1hdGNoaW5nIHRoZSBzaXplIG9mIGRpY3Qncy4gKi8KQEAgLTU2NSw3ICs1NjgsNyBAQAogICAgIC8qIENvcHkgdGhlIGN1cnJlbnQgbm9kZXMgaW50byB0aGUgdGFibGUuICovCiAgICAgX29kaWN0X0ZPUkVBQ0gob2QsIG5vZGUpIHsKICAgICAgICAgaSA9IF9vZGljdF9nZXRfaW5kZXhfcmF3KG9kLCBfb2RpY3Rub2RlX0tFWShub2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2RpY3Rub2RlX0hBU0gobm9kZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29kaWN0bm9kZV9IQVNIKG5vZGUpKTsKICAgICAgICAgaWYgKGkgPCAwKSB7CiAgICAgICAgICAgICBQeU1lbV9GUkVFKGZhc3Rfbm9kZXMpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQyNCwxNCArMTQyNywxMyBAQAogICogT3JkZXJlZERpY3QgbWVtYmVycwogICovCiAKLS8qIHRwX21lbWJlcnMgKi8KKy8qIHRwX2dldHNldCAqLwogCi1zdGF0aWMgUHlNZW1iZXJEZWYgb2RpY3RfbWVtYmVyc1tdID0gewotICAgIHsiX19kaWN0X18iLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPRGljdE9iamVjdCwgb2RfaW5zdF9kaWN0KSwgUkVBRE9OTFl9LAotICAgIHswfQorc3RhdGljIFB5R2V0U2V0RGVmIG9kaWN0X2dldHNldFtdID0geworICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAorICAgIHtOVUxMfQogfTsKIAotCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBPcmRlcmVkRGljdCB0eXBlIHNsb3QgbWV0aG9kcwogICovCkBAIC0xNDYzLDcgKzE0NjUsNyBAQAogICAgICsrdHN0YXRlLT50cmFzaF9kZWxldGVfbmVzdGluZzsKIAogICAgIFB5X1RSQVNIQ0FOX1NBRkVfRU5EKHNlbGYpCi19OworfQogCiAvKiB0cF9yZXByICovCiAKQEAgLTE1NDAsNyArMTU0Miw3IEBACiAgICAgUHlfWERFQ1JFRihwaWVjZXMpOwogICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QgKilzZWxmKTsKICAgICByZXR1cm4gcmVzdWx0OwotfTsKK30KIAogLyogdHBfZG9jICovCiAKQEAgLTE2MTIsNyArMTYxNCw3IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KLX07Cit9CiAKIC8qIHRwX2l0ZXIgKi8KIApAQCAtMTYyMCw3ICsxNjIyLDcgQEAKIG9kaWN0X2l0ZXIoUHlPRGljdE9iamVjdCAqb2QpCiB7CiAgICAgcmV0dXJuIG9kaWN0aXRlcl9uZXcob2QsIF9vZGljdF9JVEVSX0tFWVMpOwotfTsKK30KIAogLyogdHBfaW5pdCAqLwogCkBAIC0xNjQ2LDI3ICsxNjQ4LDE5IEBACiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci19OworfQogCiAvKiB0cF9uZXcgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9kaWN0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9EaWN0T2JqZWN0ICpvZDsKIAotICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBvZCA9IChQeU9EaWN0T2JqZWN0ICopUHlEaWN0X1R5cGUudHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOwotICAgIGlmIChvZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKKyAgICBpZiAob2QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgb2QtPm9kX2luc3RfZGljdCA9IGRpY3Q7CiAgICAgLyogdHlwZSBjb25zdHJ1Y3RvciBmaWxscyB0aGUgbWVtb3J5IHdpdGggemVyb3MgKHNlZQogICAgICAgIFB5VHlwZV9HZW5lcmljQWxsb2MoKSksIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IHRoZW0gdG8gemVybyBhZ2FpbiAqLwogICAgIGlmIChfb2RpY3RfcmVzaXplKG9kKSA8IDApIHsKQEAgLTE3MDgsOCArMTcwMiw4IEBACiAgICAgKGdldGl0ZXJmdW5jKW9kaWN0X2l0ZXIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIG9kaWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIG9kaWN0X21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgb2RpY3RfZ2V0c2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAmUHlEaWN0X1R5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwpAQCAtMTcyOSw3ICsxNzIzLDcgQEAKIFB5T2JqZWN0ICoKIFB5T0RpY3RfTmV3KHZvaWQpIHsKICAgICByZXR1cm4gb2RpY3RfbmV3KCZQeU9EaWN0X1R5cGUsIE5VTEwsIE5VTEwpOwotfTsKK30KIAogc3RhdGljIGludAogX1B5T0RpY3RfU2V0SXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUsCkBAIC0xNzQ3LDcgKzE3NDEsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXM7Ci19OworfQogCiBpbnQKIFB5T0RpY3RfU2V0SXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKQEAgLTE3NTYsNyArMTc1MCw3IEBACiAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gX1B5T0RpY3RfU2V0SXRlbV9Lbm93bkhhc2gob2QsIGtleSwgdmFsdWUsIGhhc2gpOwotfTsKK30KIAogaW50CiBQeU9EaWN0X0RlbEl0ZW0oUHlPYmplY3QgKm9kLCBQeU9iamVjdCAqa2V5KQpAQCAtMTc2OSw3ICsxNzYzLDcgQEAKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKG9kLCBrZXksIGhhc2gpOwotfTsKK30KIAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMzYyLDggKzIzNTYsNyBAQAogICAgICAgICBQeU9iamVjdCAqb3RoZXIgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOyAgLyogYm9ycm93ZWQgcmVmZXJlbmNlICovCiAgICAgICAgIGFzc2VydChvdGhlciAhPSBOVUxMKTsKICAgICAgICAgUHlfSU5DUkVGKG90aGVyKTsKLSAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSB8fAotICAgICAgICAgICAgX1B5T2JqZWN0X0hhc0F0dHJJZChvdGhlciwgJlB5SWRfaXRlbXMpKSB7ICAvKiBuZXZlciBmYWlscyAqLworICAgICAgICBpZiBQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikgewogICAgICAgICAgICAgUHlPYmplY3QgKml0ZW1zOwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkKICAgICAgICAgICAgICAgICBpdGVtcyA9IFB5RGljdF9JdGVtcyhvdGhlcik7CkBAIC0yNDA2LDYgKzIzOTksMjAgQEAKICAgICAgICAgICAgIGlmIChyZXMgIT0gMCB8fCBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob3RoZXIsICZQeUlkX2l0ZW1zKSkgeyAgLyogbmV2ZXIgZmFpbHMgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtczsKKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpCisgICAgICAgICAgICAgICAgaXRlbXMgPSBQeURpY3RfSXRlbXMob3RoZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvdGhlciwgJlB5SWRfaXRlbXMsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyKTsKKyAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmVzID0gbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKHNlbGYsIGl0ZW1zKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgICAgICBpZiAocmVzID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcmVzID0gbXV0YWJsZW1hcHBpbmdfYWRkX3BhaXJzKHNlbGYsIG90aGVyKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcik7CmRpZmYgLS1naXQgYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKaW5kZXggODk5Njk3YS4uODQ0OWZjNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jCisrKyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwpAQCAtNiw3ICs2LDcgQEAKIC8qIFN1cHBvcnQgb2JqZWN0cyB3aG9zZSBsZW5ndGggaXMgPiBQWV9TU0laRV9UX01BWC4KIAogICAgVGhpcyBjb3VsZCBiZSBzcGVkIHVwIGZvciBzbWFsbCBQeUxvbmdzIGlmIHRoZXkgZml0IGluIGEgUHlfc3NpemVfdC4KLSAgIFRoaXMgb25seSBtYXR0ZXJzIG9uIFdpbjY0LiAgVGhvdWdoIHdlIGNvdWxkIHVzZSBQWV9MT05HX0xPTkcgd2hpY2gKKyAgIFRoaXMgb25seSBtYXR0ZXJzIG9uIFdpbjY0LiAgVGhvdWdoIHdlIGNvdWxkIHVzZSBsb25nIGxvbmcgd2hpY2gKICAgIHdvdWxkIHByZXN1bWFibHkgaGVscCBwZXJmLgogKi8KIApAQCAtMjksMTcgKzI5LDEwIEBACiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMSk7CiAKICAgICBzdGVwID0gUHlOdW1iZXJfSW5kZXgoc3RlcCk7Ci0gICAgaWYgKHN0ZXApIHsKLSAgICAgICAgUHlfc3NpemVfdCBpc3RlcCA9IFB5TnVtYmVyX0FzU3NpemVfdChzdGVwLCBOVUxMKTsKLSAgICAgICAgaWYgKGlzdGVwID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIC8qIElnbm9yZSBPdmVyZmxvd0Vycm9yLCB3ZSBrbm93IHRoZSB2YWx1ZSBpc24ndCAwLiAqLwotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChpc3RlcCA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmFuZ2UoKSBhcmcgMyBtdXN0IG5vdCBiZSB6ZXJvIik7Ci0gICAgICAgICAgICBQeV9DTEVBUihzdGVwKTsKLSAgICAgICAgfQorICAgIGlmIChzdGVwICYmIF9QeUxvbmdfU2lnbihzdGVwKSA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJhbmdlKCkgYXJnIDMgbXVzdCBub3QgYmUgemVybyIpOworICAgICAgICBQeV9DTEVBUihzdGVwKTsKICAgICB9CiAKICAgICByZXR1cm4gc3RlcDsKQEAgLTEyOSw5ICsxMjIsOSBAQAogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9iajsKIAogICAgIC8qIEZhaWxlZCB0byBjcmVhdGUgb2JqZWN0LCByZWxlYXNlIGF0dHJpYnV0ZXMgKi8KLSAgICBQeV9YREVDUkVGKHN0YXJ0KTsKLSAgICBQeV9YREVDUkVGKHN0b3ApOwotICAgIFB5X1hERUNSRUYoc3RlcCk7CisgICAgUHlfREVDUkVGKHN0YXJ0KTsKKyAgICBQeV9ERUNSRUYoc3RvcCk7CisgICAgUHlfREVDUkVGKHN0ZXApOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xOTYsNyArMTg5LDcgQEAKICAgICAvKiBpZiAobG8gPj0gaGkpLCByZXR1cm4gbGVuZ3RoIG9mIDAuICovCiAgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChsbywgaGksIFB5X0dFKTsKICAgICBpZiAoY21wX3Jlc3VsdCAhPSAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RlcCk7CisgICAgICAgIFB5X0RFQ1JFRihzdGVwKTsKICAgICAgICAgaWYgKGNtcF9yZXN1bHQgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CkBAIC0yMjUsOSArMjE4LDkgQEAKICAgICByZXR1cm4gcmVzdWx0OwogCiAgIEZhaWw6CisgICAgUHlfREVDUkVGKHN0ZXApOwogICAgIFB5X1hERUNSRUYodG1wMik7CiAgICAgUHlfWERFQ1JFRihkaWZmKTsKLSAgICBQeV9YREVDUkVGKHN0ZXApOwogICAgIFB5X1hERUNSRUYodG1wMSk7CiAgICAgUHlfWERFQ1JFRihvbmUpOwogICAgIHJldHVybiBOVUxMOwpAQCAtOTM3LDYgKzkzMCwxMyBAQAogewogICAgIGxvbmcgc3RhcnQsIHN0b3AsIHN0ZXA7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJyYW5nZV9pdGVyYXRvcigpOiBjcmVhdGluZyBpbnN0YW5jZXMgb2YgcmFuZ2VfaXRlcmF0b3IgIgorICAgICAgICAgICAgICAgICAgICAgImJ5IGNhbGxpbmcgcmFuZ2VfaXRlcmF0b3IgdHlwZSBpcyBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoInJhbmdlX2l0ZXJhdG9yKCkiLCBrdykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zZXRvYmplY3QuYyBiL09iamVjdHMvc2V0b2JqZWN0LmMKaW5kZXggNGVmNjkyZC4uNTg0NjA0NSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zZXRvYmplY3QuYworKysgYi9PYmplY3RzL3NldG9iamVjdC5jCkBAIC0yNiw3ICsyNiw2IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKIAogLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzICovCiBzdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdDsKQEAgLTQ4LDE5ICs0NywyMCBAQAogc3RhdGljIHNldGVudHJ5ICoKIHNldF9sb29ra2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgc2V0ZW50cnkgKnRhYmxlID0gc28tPnRhYmxlOwotICAgIHNldGVudHJ5ICpmcmVlc2xvdCA9IE5VTEw7CisgICAgc2V0ZW50cnkgKnRhYmxlOwogICAgIHNldGVudHJ5ICplbnRyeTsKLSAgICBzaXplX3QgcGVydHVyYiA9IGhhc2g7CisgICAgc2l6ZV90IHBlcnR1cmI7CiAgICAgc2l6ZV90IG1hc2sgPSBzby0+bWFzazsKICAgICBzaXplX3QgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7IC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yICovCiAgICAgc2l6ZV90IGo7CiAgICAgaW50IGNtcDsKIAotICAgIGVudHJ5ID0gJnRhYmxlW2ldOworICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gZW50cnk7CiAKKyAgICBwZXJ0dXJiID0gaGFzaDsKKwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OwpAQCAtNzAsOCArNzAsOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKICAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCi0gICAgICAgICAgICAgICAgJiYgdW5pY29kZV9lcShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQogICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwpAQCAtODMsMTQgKzg0LDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOyAgICAgICAgICAgICAgICAgLyogaGVscCBhdm9pZCBhIHJlZ2lzdGVyIHNwaWxsICovCiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OwogCiAgICAgICAgIGlmIChpICsgTElORUFSX1BST0JFUyA8PSBtYXNrKSB7CiAgICAgICAgICAgICBmb3IgKGogPSAwIDsgaiA8IExJTkVBUl9QUk9CRVMgOyBqKyspIHsKICAgICAgICAgICAgICAgICBlbnRyeSsrOwotICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gMCAmJiBlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OwogICAgICAgICAgICAgICAgICAgICBhc3NlcnQoc3RhcnRrZXkgIT0gZHVtbXkpOwpAQCAtOTgsOCArOTcsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiB1bmljb2RlX2VxKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeTsKKyAgICAgICAgICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CiAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CkBAIC0xMTEsNyArMTExLDEwNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IChpICogNSArIDEgKyBwZXJ0dXJiKSAmIG1hc2s7CisKKyAgICAgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOworICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgIH0KK30KKworc3RhdGljIGludCBzZXRfdGFibGVfcmVzaXplKFB5U2V0T2JqZWN0ICosIFB5X3NzaXplX3QpOworCitzdGF0aWMgaW50CitzZXRfYWRkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCit7CisgICAgc2V0ZW50cnkgKnRhYmxlOworICAgIHNldGVudHJ5ICpmcmVlc2xvdDsKKyAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgc2l6ZV90IHBlcnR1cmI7CisgICAgc2l6ZV90IG1hc2s7CisgICAgc2l6ZV90IGk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBVbnNpZ25lZCBmb3IgZGVmaW5lZCBvdmVyZmxvdyBiZWhhdmlvciAqLworICAgIHNpemVfdCBqOworICAgIGludCBjbXA7CisKKyAgICAvKiBQcmUtaW5jcmVtZW50IGlzIG5lY2Vzc2FyeSB0byBwcmV2ZW50IGFyYml0cmFyeSBjb2RlIGluIHRoZSByaWNoCisgICAgICAgY29tcGFyaXNvbiBmcm9tIGRlYWxsb2NhdGluZyB0aGUga2V5IGp1c3QgYmVmb3JlIHRoZSBpbnNlcnRpb24uICovCisgICAgUHlfSU5DUkVGKGtleSk7CisKKyAgcmVzdGFydDoKKworICAgIG1hc2sgPSBzby0+bWFzazsKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKworICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKKyAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICBnb3RvIGZvdW5kX3VudXNlZDsKKworICAgIGZyZWVzbG90ID0gTlVMTDsKKyAgICBwZXJ0dXJiID0gaGFzaDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgLyogc3RhcnRrZXkgY2Fubm90IGJlIGEgZHVtbXkgYmVjYXVzZSB0aGUgZHVtbXkgaGFzaCBmaWVsZCBpcyAtMSAqLworICAgICAgICAgICAgYXNzZXJ0KHN0YXJ0a2V5ICE9IGR1bW15KTsKKyAgICAgICAgICAgIGlmIChzdGFydGtleSA9PSBrZXkpCisgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQorICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOworICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpa2VseSAqLworICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgZ290byBjb21wYXJpc29uX2Vycm9yOworICAgICAgICAgICAgLyogQ29udGludWluZyB0aGUgc2VhcmNoIGZyb20gdGhlIGN1cnJlbnQgZW50cnkgb25seSBtYWtlcworICAgICAgICAgICAgICAgc2Vuc2UgaWYgdGhlIHRhYmxlIGFuZCBlbnRyeSBhcmUgdW5jaGFuZ2VkOyBvdGhlcndpc2UsCisgICAgICAgICAgICAgICB3ZSBoYXZlIHRvIHJlc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nICovCisgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgZ290byByZXN0YXJ0OworICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOyAgICAgICAgICAgICAgICAgLyogaGVscCBhdm9pZCBhIHJlZ2lzdGVyIHNwaWxsICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKKyAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7CisKKyAgICAgICAgaWYgKGkgKyBMSU5FQVJfUFJPQkVTIDw9IG1hc2spIHsKKyAgICAgICAgICAgIGZvciAoaiA9IDAgOyBqIDwgTElORUFSX1BST0JFUyA7IGorKykgeworICAgICAgICAgICAgICAgIGVudHJ5Kys7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IDAgJiYgZW50cnktPmtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX3VudXNlZF9vcl9kdW1teTsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gaGFzaCkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhcnRrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoc3RhcnRrZXkgIT0gZHVtbXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRrZXkgPT0ga2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjb21wYXJpc29uX2Vycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAodGFibGUgIT0gc28tPnRhYmxlIHx8IGVudHJ5LT5rZXkgIT0gc3RhcnRrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE5LDI5ICsyMTYsNTEgQEAKICAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKICAgICAgICAgaSA9IChpICogNSArIDEgKyBwZXJ0dXJiKSAmIG1hc2s7CiAKLSAgICAgICAgZW50cnkgPSAmdGFibGVbaV07CisgICAgICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZm91bmRfbnVsbDsKKyAgICAgICAgICAgIGdvdG8gZm91bmRfdW51c2VkX29yX2R1bW15OwogICAgIH0KLSAgZm91bmRfbnVsbDoKLSAgICByZXR1cm4gZnJlZXNsb3QgPT0gTlVMTCA/IGVudHJ5IDogZnJlZXNsb3Q7CisKKyAgZm91bmRfdW51c2VkX29yX2R1bW15OgorICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKQorICAgICAgICBnb3RvIGZvdW5kX3VudXNlZDsKKyAgICBzby0+dXNlZCsrOworICAgIGZyZWVzbG90LT5rZXkgPSBrZXk7CisgICAgZnJlZXNsb3QtPmhhc2ggPSBoYXNoOworICAgIHJldHVybiAwOworCisgIGZvdW5kX3VudXNlZDoKKyAgICBzby0+ZmlsbCsrOworICAgIHNvLT51c2VkKys7CisgICAgZW50cnktPmtleSA9IGtleTsKKyAgICBlbnRyeS0+aGFzaCA9IGhhc2g7CisgICAgaWYgKChzaXplX3Qpc28tPmZpbGwqMyA8IG1hc2sqMikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkKTsKKworICBmb3VuZF9hY3RpdmU6CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgcmV0dXJuIDA7CisKKyAgY29tcGFyaXNvbl9lcnJvcjoKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICByZXR1cm4gLTE7CiB9CiAKIC8qCiBJbnRlcm5hbCByb3V0aW5lIHVzZWQgYnkgc2V0X3RhYmxlX3Jlc2l6ZSgpIHRvIGluc2VydCBhbiBpdGVtIHdoaWNoIGlzCiBrbm93biB0byBiZSBhYnNlbnQgZnJvbSB0aGUgc2V0LiAgVGhpcyByb3V0aW5lIGFsc28gYXNzdW1lcyB0aGF0CiB0aGUgc2V0IGNvbnRhaW5zIG5vIGRlbGV0ZWQgZW50cmllcy4gIEJlc2lkZXMgdGhlIHBlcmZvcm1hbmNlIGJlbmVmaXQsCi11c2luZyBzZXRfaW5zZXJ0X2NsZWFuKCkgaW4gc2V0X3RhYmxlX3Jlc2l6ZSgpIGlzIGRhbmdlcm91cyAoU0YgYnVnICMxNDU2MjA5KS4KLU5vdGUgdGhhdCBubyByZWZjb3VudHMgYXJlIGNoYW5nZWQgYnkgdGhpcyByb3V0aW5lOyBpZiBuZWVkZWQsIHRoZSBjYWxsZXIKLWlzIHJlc3BvbnNpYmxlIGZvciBpbmNyZWYnaW5nIGBrZXlgLgordGhlcmUgaXMgYWxzbyBzYWZldHkgYmVuZWZpdCBzaW5jZSB1c2luZyBzZXRfYWRkX2VudHJ5KCkgcmlza3MgbWFraW5nCithIGNhbGxiYWNrIGluIHRoZSBtaWRkbGUgb2YgYSBzZXRfdGFibGVfcmVzaXplKCksIHNlZSBpc3N1ZSAxNDU2MjA5LgorVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgdXBkYXRpbmcgdGhlIGtleSdzIHJlZmVyZW5jZSBjb3VudCBhbmQKK3RoZSBzZXRvYmplY3QncyBmaWxsIGFuZCB1c2VkIGZpZWxkcy4KICovCiBzdGF0aWMgdm9pZAotc2V0X2luc2VydF9jbGVhbihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQorc2V0X2luc2VydF9jbGVhbihzZXRlbnRyeSAqdGFibGUsIHNpemVfdCBtYXNrLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICBzZXRlbnRyeSAqdGFibGUgPSBzby0+dGFibGU7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKLSAgICBzaXplX3QgbWFzayA9IChzaXplX3Qpc28tPm1hc2s7CiAgICAgc2l6ZV90IGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIHNpemVfdCBqOwogCkBAIC0xNjIsNDUgKzI4MSwxMSBAQAogICBmb3VuZF9udWxsOgogICAgIGVudHJ5LT5rZXkgPSBrZXk7CiAgICAgZW50cnktPmhhc2ggPSBoYXNoOwotICAgIHNvLT5maWxsKys7Ci0gICAgc28tPnVzZWQrKzsKIH0KIAogLyogPT09PT09PT0gRW5kIGxvZ2ljIGZvciBwcm9iaW5nIHRoZSBoYXNoIHRhYmxlID09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAotCi0vKgotSW50ZXJuYWwgcm91dGluZSB0byBpbnNlcnQgYSBuZXcga2V5IGludG8gdGhlIHRhYmxlLgotVXNlZCBieSB0aGUgcHVibGljIGluc2VydCByb3V0aW5lLgotRWF0cyBhIHJlZmVyZW5jZSB0byBrZXkuCi0qLwotc3RhdGljIGludAotc2V0X2luc2VydF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKLXsKLSAgICBzZXRlbnRyeSAqZW50cnk7Ci0KLSAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOwotICAgIGlmIChlbnRyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkgewotICAgICAgICAvKiBVTlVTRUQgKi8KLSAgICAgICAgZW50cnktPmtleSA9IGtleTsKLSAgICAgICAgZW50cnktPmhhc2ggPSBoYXNoOwotICAgICAgICBzby0+ZmlsbCsrOwotICAgICAgICBzby0+dXNlZCsrOwotICAgIH0gZWxzZSBpZiAoZW50cnktPmtleSA9PSBkdW1teSkgewotICAgICAgICAvKiBEVU1NWSAqLwotICAgICAgICBlbnRyeS0+a2V5ID0ga2V5OwotICAgICAgICBlbnRyeS0+aGFzaCA9IGhhc2g7Ci0gICAgICAgIHNvLT51c2VkKys7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogQUNUSVZFICovCi0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogLyoKIFJlc3RydWN0dXJlIHRoZSB0YWJsZSBieSBhbGxvY2F0aW5nIGEgbmV3IHRhYmxlIGFuZCByZWluc2VydGluZyBhbGwKIGtleXMgYWdhaW4uICBXaGVuIGVudHJpZXMgaGF2ZSBiZWVuIGRlbGV0ZWQsIHRoZSBuZXcgdGFibGUgbWF5CkBAIC0yMTMsMTAgKzI5OCwxMyBAQAogICAgIHNldGVudHJ5ICpvbGR0YWJsZSwgKm5ld3RhYmxlLCAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBvbGRmaWxsID0gc28tPmZpbGw7CiAgICAgUHlfc3NpemVfdCBvbGR1c2VkID0gc28tPnVzZWQ7CisgICAgUHlfc3NpemVfdCBvbGRtYXNrID0gc28tPm1hc2s7CisgICAgc2l6ZV90IG5ld21hc2s7CiAgICAgaW50IGlzX29sZHRhYmxlX21hbGxvY2VkOwogICAgIHNldGVudHJ5IHNtYWxsX2NvcHlbUHlTZXRfTUlOU0laRV07CiAKICAgICBhc3NlcnQobWludXNlZCA+PSAwKTsKKyAgICBtaW51c2VkID0gKG1pbnVzZWQgPiA1MDAwMCkgPyBtaW51c2VkICogMiA6IG1pbnVzZWQgKiA0OwogCiAgICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCiAgICAgLyogWFhYIHNwZWVkLXVwIHdpdGggaW50cmluc2ljcyAqLwpAQCAtMjY0LDI1ICszNTIsMjQgQEAKICAgICAvKiBNYWtlIHRoZSBzZXQgZW1wdHksIHVzaW5nIHRoZSBuZXcgdGFibGUuICovCiAgICAgYXNzZXJ0KG5ld3RhYmxlICE9IG9sZHRhYmxlKTsKICAgICBtZW1zZXQobmV3dGFibGUsIDAsIHNpemVvZihzZXRlbnRyeSkgKiBuZXdzaXplKTsKLSAgICBzby0+ZmlsbCA9IDA7Ci0gICAgc28tPnVzZWQgPSAwOworICAgIHNvLT5maWxsID0gb2xkdXNlZDsKKyAgICBzby0+dXNlZCA9IG9sZHVzZWQ7CiAgICAgc28tPm1hc2sgPSBuZXdzaXplIC0gMTsKICAgICBzby0+dGFibGUgPSBuZXd0YWJsZTsKIAogICAgIC8qIENvcHkgdGhlIGRhdGEgb3ZlcjsgdGhpcyBpcyByZWZjb3VudC1uZXV0cmFsIGZvciBhY3RpdmUgZW50cmllczsKICAgICAgICBkdW1teSBlbnRyaWVzIGFyZW4ndCBjb3BpZWQgb3Zlciwgb2YgY291cnNlICovCisgICAgbmV3bWFzayA9IChzaXplX3Qpc28tPm1hc2s7CiAgICAgaWYgKG9sZGZpbGwgPT0gb2xkdXNlZCkgewotICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IG9sZHVzZWQgPiAwOyBlbnRyeSsrKSB7CisgICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgZW50cnkgPD0gb2xkdGFibGUgKyBvbGRtYXNrOyBlbnRyeSsrKSB7CiAgICAgICAgICAgICBpZiAoZW50cnktPmtleSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgb2xkdXNlZC0tOwotICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4oc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKG5ld3RhYmxlLCBuZXdtYXNrLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBmb3IgKGVudHJ5ID0gb2xkdGFibGU7IG9sZHVzZWQgPiAwOyBlbnRyeSsrKSB7CisgICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgZW50cnkgPD0gb2xkdGFibGUgKyBvbGRtYXNrOyBlbnRyeSsrKSB7CiAgICAgICAgICAgICBpZiAoZW50cnktPmtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgICAgICBvbGR1c2VkLS07Ci0gICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4obmV3dGFibGUsIG5ld21hc2ssIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI5Miw1NyArMzc5LDMwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENBVVRJT046IHNldF9hZGRfa2V5L2VudHJ5KCkgbXVzdCBndWFyYW50ZWUgaXQgd29uJ3QgcmVzaXplIHRoZSB0YWJsZSAqLwotCiBzdGF0aWMgaW50Ci1zZXRfYWRkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKmVudHJ5KQorc2V0X2NvbnRhaW5zX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7Ci0gICAgUHlfc3NpemVfdCBuX3VzZWQ7Ci0gICAgUHlPYmplY3QgKmtleSA9IGVudHJ5LT5rZXk7Ci0gICAgUHlfaGFzaF90IGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBhc3NlcnQoc28tPmZpbGwgPD0gc28tPm1hc2spOyAgLyogYXQgbGVhc3Qgb25lIGVtcHR5IHNsb3QgKi8KLSAgICBuX3VzZWQgPSBzby0+dXNlZDsKLSAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICBpZiAoc2V0X2luc2VydF9rZXkoc28sIGtleSwgaGFzaCkpIHsKLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCEoc28tPnVzZWQgPiBuX3VzZWQgJiYgc28tPmZpbGwqMyA+PSAoc28tPm1hc2srMSkqMikpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZD41MDAwMCA/IHNvLT51c2VkKjIgOiBzby0+dXNlZCo0KTsKLX0KLQotc3RhdGljIGludAotc2V0X2FkZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQotewotICAgIHNldGVudHJ5IGVudHJ5OwotICAgIFB5X2hhc2hfdCBoYXNoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7Ci0gICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7Ci0gICAgICAgIGlmIChoYXNoID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgcmV0dXJuIHNldF9hZGRfZW50cnkoc28sICZlbnRyeSk7CisgICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKKyAgICBpZiAoZW50cnkgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGVudHJ5LT5rZXkgIT0gTlVMTDsKKyAgICByZXR1cm4gLTE7CiB9CiAKICNkZWZpbmUgRElTQ0FSRF9OT1RGT1VORCAwCiAjZGVmaW5lIERJU0NBUkRfRk9VTkQgMQogCiBzdGF0aWMgaW50Ci1zZXRfZGlzY2FyZF9lbnRyeShQeVNldE9iamVjdCAqc28sIHNldGVudHJ5ICpvbGRlbnRyeSkKK3NldF9kaXNjYXJkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCiB7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5T2JqZWN0ICpvbGRfa2V5OwogCi0gICAgZW50cnkgPSBzZXRfbG9va2tleShzbywgb2xkZW50cnktPmtleSwgb2xkZW50cnktPmhhc2gpOworICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7CiAgICAgaWYgKGVudHJ5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMICB8fCAgZW50cnktPmtleSA9PSBkdW1teSkKKyAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gRElTQ0FSRF9OT1RGT1VORDsKICAgICBvbGRfa2V5ID0gZW50cnktPmtleTsKICAgICBlbnRyeS0+a2V5ID0gZHVtbXk7CkBAIC0zNTMsMjIgKzQxMyw0NSBAQAogfQogCiBzdGF0aWMgaW50Ci1zZXRfZGlzY2FyZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQorc2V0X2FkZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQogewotICAgIHNldGVudHJ5IGVudHJ5OwogICAgIFB5X2hhc2hfdCBoYXNoOwogCi0gICAgYXNzZXJ0IChQeUFueVNldF9DaGVjayhzbykpOwotCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CiAgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgcmV0dXJuIHNldF9kaXNjYXJkX2VudHJ5KHNvLCAmZW50cnkpOworICAgIHJldHVybiBzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpOworfQorCitzdGF0aWMgaW50CitzZXRfY29udGFpbnNfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKK30KKworc3RhdGljIGludAorc2V0X2Rpc2NhcmRfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIHNldF9kaXNjYXJkX2VudHJ5KHNvLCBrZXksIGhhc2gpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDQ5LDIwICs1MzIsMjIgQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBtYXNrOwotICAgIHNldGVudHJ5ICp0YWJsZTsKKyAgICBzZXRlbnRyeSAqZW50cnk7CiAKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKHNvKSk7CiAgICAgaSA9ICpwb3NfcHRyOwogICAgIGFzc2VydChpID49IDApOwotICAgIHRhYmxlID0gc28tPnRhYmxlOwogICAgIG1hc2sgPSBzby0+bWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICh0YWJsZVtpXS5rZXkgPT0gTlVMTCB8fCB0YWJsZVtpXS5rZXkgPT0gZHVtbXkpKQorICAgIGVudHJ5ID0gJnNvLT50YWJsZVtpXTsKKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBkdW1teSkpIHsKICAgICAgICAgaSsrOworICAgICAgICBlbnRyeSsrOworICAgIH0KICAgICAqcG9zX3B0ciA9IGkrMTsKICAgICBpZiAoaSA+IG1hc2spCiAgICAgICAgIHJldHVybiAwOwotICAgIGFzc2VydCh0YWJsZVtpXS5rZXkgIT0gTlVMTCk7Ci0gICAgKmVudHJ5X3B0ciA9ICZ0YWJsZVtpXTsKKyAgICBhc3NlcnQoZW50cnkgIT0gTlVMTCk7CisgICAgKmVudHJ5X3B0ciA9IGVudHJ5OwogICAgIHJldHVybiAxOwogfQogCkBAIC01NjAsOCArNjQ1LDggQEAKICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcga2V5cy4gIEV4cGVjdAogICAgICAqIHRoYXQgdGhlcmUgd2lsbCBiZSBubyAob3IgZmV3KSBvdmVybGFwcGluZyBrZXlzLgogICAgICAqLwotICAgIGlmICgoc28tPmZpbGwgKyBvdGhlci0+dXNlZCkqMyA+PSAoc28tPm1hc2srMSkqMikgewotICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBvdGhlci0+dXNlZCkqMikgIT0gMCkKKyAgICBpZiAoKHNvLT5maWxsICsgb3RoZXItPnVzZWQpKjMgPj0gc28tPm1hc2sqMikgeworICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCArIG90aGVyLT51c2VkKSAhPSAwKQogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNvX2VudHJ5ID0gc28tPnRhYmxlOwpAQCAtNTg2LDExICs2NzEsMTUgQEAKIAogICAgIC8qIElmIG91ciB0YWJsZSBpcyBlbXB0eSwgd2UgY2FuIHVzZSBzZXRfaW5zZXJ0X2NsZWFuKCkgKi8KICAgICBpZiAoc28tPmZpbGwgPT0gMCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG90aGVyLT5tYXNrOyBpKyssIG90aGVyX2VudHJ5KyspIHsKKyAgICAgICAgc2V0ZW50cnkgKm5ld3RhYmxlID0gc28tPnRhYmxlOworICAgICAgICBzaXplX3QgbmV3bWFzayA9IChzaXplX3Qpc28tPm1hc2s7CisgICAgICAgIHNvLT5maWxsID0gb3RoZXItPnVzZWQ7CisgICAgICAgIHNvLT51c2VkID0gb3RoZXItPnVzZWQ7CisgICAgICAgIGZvciAoaSA9IG90aGVyLT5tYXNrICsgMTsgaSA+IDAgOyBpLS0sIG90aGVyX2VudHJ5KyspIHsKICAgICAgICAgICAgIGtleSA9IG90aGVyX2VudHJ5LT5rZXk7CiAgICAgICAgICAgICBpZiAoa2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15KSB7CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihuZXd0YWJsZSwgbmV3bWFzaywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC02MDEsNDYgKzY5MCwxMyBAQAogICAgICAgICBvdGhlcl9lbnRyeSA9ICZvdGhlci0+dGFibGVbaV07CiAgICAgICAgIGtleSA9IG90aGVyX2VudHJ5LT5rZXk7CiAgICAgICAgIGlmIChrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgaWYgKHNldF9pbnNlcnRfa2V5KHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludAotc2V0X2NvbnRhaW5zX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKmVudHJ5KQotewotICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgc2V0ZW50cnkgKmx1X2VudHJ5OwotCi0gICAgbHVfZW50cnkgPSBzZXRfbG9va2tleShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwotICAgIGlmIChsdV9lbnRyeSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAga2V5ID0gbHVfZW50cnktPmtleTsKLSAgICByZXR1cm4ga2V5ICE9IE5VTEwgJiYga2V5ICE9IGR1bW15OwotfQotCi1zdGF0aWMgaW50Ci1zZXRfY29udGFpbnNfa2V5KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSkKLXsKLSAgICBzZXRlbnRyeSBlbnRyeTsKLSAgICBQeV9oYXNoX3QgaGFzaDsKLQotICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewotICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwotICAgICAgICBpZiAoaGFzaCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZW50cnkua2V5ID0ga2V5OwotICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgIHJldHVybiBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcG9wKFB5U2V0T2JqZWN0ICpzbykKIHsKQEAgLTY4Miw0MyArNzM4LDY0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKy8qIFdvcmsgdG8gaW5jcmVhc2UgdGhlIGJpdCBkaXNwZXJzaW9uIGZvciBjbG9zZWx5IHNwYWNlZCBoYXNoIHZhbHVlcy4KKyAgIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55IGNvbWJpbmF0aW9ucyBvZiBhCisgICBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMgd2l0aCBuZWFyYnkgaGFzaGVzIHNvIHRoYXQgbWFueSBkaXN0aW5jdAorICAgY29tYmluYXRpb25zIGNvbGxhcHNlIHRvIG9ubHkgYSBoYW5kZnVsIG9mIGRpc3RpbmN0IGhhc2ggdmFsdWVzLiAqLworCitzdGF0aWMgUHlfdWhhc2hfdAorX3NodWZmbGVfYml0cyhQeV91aGFzaF90IGgpCit7CisgICAgcmV0dXJuICgoaCBeIDg5ODY5NzQ3VUwpIF4gKGggPDwgMTYpKSAqIDM2NDQ3OTgxNjdVTDsKK30KKworLyogTW9zdCBvZiB0aGUgY29uc3RhbnRzIGluIHRoaXMgaGFzaCBhbGdvcml0aG0gYXJlIHJhbmRvbWx5IGNob3NlbgorICAgbGFyZ2UgcHJpbWVzIHdpdGggImludGVyZXN0aW5nIGJpdCBwYXR0ZXJucyIgYW5kIHRoYXQgcGFzc2VkIHRlc3RzCisgICBmb3IgZ29vZCBjb2xsaXNpb24gc3RhdGlzdGljcyBvbiBhIHZhcmlldHkgb2YgcHJvYmxlbWF0aWMgZGF0YXNldHMKKyAgIGluY2x1ZGluZyBwb3dlcnNldHMgYW5kIGdyYXBoIHN0cnVjdHVyZXMgKHN1Y2ggYXMgRGF2aWQgRXBwc3RlaW4ncworICAgZ3JhcGggcmVjaXBlcyBpbiBMaWIvdGVzdC90ZXN0X3NldC5weSkgKi8KKwogc3RhdGljIFB5X2hhc2hfdAogZnJvemVuc2V0X2hhc2goUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgLyogTW9zdCBvZiB0aGUgY29uc3RhbnRzIGluIHRoaXMgaGFzaCBhbGdvcml0aG0gYXJlIHJhbmRvbWx5IGNob29zZW4KLSAgICAgICBsYXJnZSBwcmltZXMgd2l0aCAiaW50ZXJlc3RpbmcgYml0IHBhdHRlcm5zIiBhbmQgdGhhdCBwYXNzZWQKLSAgICAgICB0ZXN0cyBmb3IgZ29vZCBjb2xsaXNpb24gc3RhdGlzdGljcyBvbiBhIHZhcmlldHkgb2YgcHJvYmxlbWF0aWMKLSAgICAgICBkYXRhc2V0cyBzdWNoIGFzOgotCi0gICAgICAgICAgcHMgPSBbXQotICAgICAgICAgIGZvciByIGluIHJhbmdlKDIxKToKLSAgICAgICAgICAgICAgcHMgKz0gaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhyYW5nZSgyMCksIHIpCi0gICAgICAgICAgbnVtX2Rpc3RpbmN0X2hhc2hlcyA9IGxlbih7aGFzaChmcm96ZW5zZXQocykpIGZvciBzIGluIHBzfSkKLQotICAgICovCiAgICAgUHlTZXRPYmplY3QgKnNvID0gKFB5U2V0T2JqZWN0ICopc2VsZjsKLSAgICBQeV91aGFzaF90IGgsIGhhc2ggPSAxOTI3ODY4MjM3VUw7CisgICAgUHlfdWhhc2hfdCBoYXNoID0gMDsKICAgICBzZXRlbnRyeSAqZW50cnk7Ci0gICAgUHlfc3NpemVfdCBwb3MgPSAwOwogCiAgICAgaWYgKHNvLT5oYXNoICE9IC0xKQogICAgICAgICByZXR1cm4gc28tPmhhc2g7CiAKLSAgICBoYXNoICo9IChQeV91aGFzaF90KVB5U2V0X0dFVF9TSVpFKHNlbGYpICsgMTsKLSAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgLyogV29yayB0byBpbmNyZWFzZSB0aGUgYml0IGRpc3BlcnNpb24gZm9yIGNsb3NlbHkgc3BhY2VkIGhhc2gKLSAgICAgICAgICAgdmFsdWVzLiAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHVzZSBjYXNlcyBoYXZlIG1hbnkKLSAgICAgICAgICAgY29tYmluYXRpb25zIG9mIGEgc21hbGwgbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggbmVhcmJ5Ci0gICAgICAgICAgIGhhc2hlcyBzbyB0aGF0IG1hbnkgZGlzdGluY3QgY29tYmluYXRpb25zIGNvbGxhcHNlIHRvIG9ubHkKLSAgICAgICAgICAgYSBoYW5kZnVsIG9mIGRpc3RpbmN0IGhhc2ggdmFsdWVzLiAqLwotICAgICAgICBoID0gZW50cnktPmhhc2g7Ci0gICAgICAgIGhhc2ggXj0gKChoIF4gODk4Njk3NDdVTCkgXiAoaCA8PCAxNikpICogMzY0NDc5ODE2N1VMOwotICAgIH0KLSAgICAvKiBNYWtlIHRoZSBmaW5hbCByZXN1bHQgc3ByZWFkLW91dCBpbiBhIGRpZmZlcmVudCBwYXR0ZXJuCi0gICAgICAgdGhhbiB0aGUgYWxnb3JpdGhtIGZvciB0dXBsZXMgb3Igb3RoZXIgcHl0aG9uIG9iamVjdHMuICovCisgICAgLyogWG9yLWluIHNodWZmbGVkIGJpdHMgZnJvbSBldmVyeSBlbnRyeSdzIGhhc2ggZmllbGQgYmVjYXVzZSB4b3IgaXMKKyAgICAgICBjb21tdXRhdGl2ZSBhbmQgYSBmcm96ZW5zZXQgaGFzaCBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygb3JkZXIuCisKKyAgICAgICBGb3Igc3BlZWQsIGluY2x1ZGUgbnVsbCBlbnRyaWVzIGFuZCBkdW1teSBlbnRyaWVzIGFuZCB0aGVuCisgICAgICAgc3VidHJhY3Qgb3V0IHRoZWlyIGVmZmVjdCBhZnRlcndhcmRzIHNvIHRoYXQgdGhlIGZpbmFsIGhhc2gKKyAgICAgICBkZXBlbmRzIG9ubHkgb24gYWN0aXZlIGVudHJpZXMuICBUaGlzIGFsbG93cyB0aGUgY29kZSB0byBiZQorICAgICAgIHZlY3Rvcml6ZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBpdCBzYXZlcyB0aGUgdW5wcmVkaWN0YWJsZQorICAgICAgIGJyYW5jaGVzIHRoYXQgd291bGQgYXJpc2Ugd2hlbiB0cnlpbmcgdG8gZXhjbHVkZSBudWxsIGFuZCBkdW1teQorICAgICAgIGVudHJpZXMgb24gZXZlcnkgaXRlcmF0aW9uLiAqLworCisgICAgZm9yIChlbnRyeSA9IHNvLT50YWJsZTsgZW50cnkgPD0gJnNvLT50YWJsZVtzby0+bWFza107IGVudHJ5KyspCisgICAgICAgIGhhc2ggXj0gX3NodWZmbGVfYml0cyhlbnRyeS0+aGFzaCk7CisKKyAgICAvKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiBhbiBvZGQgbnVtYmVyIG9mIE5VTEwgZW50cmllcyAqLworICAgIGlmICgoc28tPm1hc2sgKyAxIC0gc28tPmZpbGwpICYgMSkKKyAgICAgICAgaGFzaCBePSBfc2h1ZmZsZV9iaXRzKDApOworCisgICAgLyogUmVtb3ZlIHRoZSBlZmZlY3Qgb2YgYW4gb2RkIG51bWJlciBvZiBkdW1teSBlbnRyaWVzICovCisgICAgaWYgKChzby0+ZmlsbCAtIHNvLT51c2VkKSAmIDEpCisgICAgICAgIGhhc2ggXj0gX3NodWZmbGVfYml0cygtMSk7CisKKyAgICAvKiBGYWN0b3IgaW4gdGhlIG51bWJlciBvZiBhY3RpdmUgZW50cmllcyAqLworICAgIGhhc2ggXj0gKChQeV91aGFzaF90KVB5U2V0X0dFVF9TSVpFKHNlbGYpICsgMSkgKiAxOTI3ODY4MjM3VUw7CisKKyAgICAvKiBEaXNwZXJzZSBwYXR0ZXJucyBhcmlzaW5nIGluIG5lc3RlZCBmcm96ZW5zZXRzICovCiAgICAgaGFzaCA9IGhhc2ggKiA2OTA2OVUgKyA5MDcxMzM5MjNVTDsKKworICAgIC8qIC0xIGlzIHJlc2VydmVkIGFzIGFuIGVycm9yIGNvZGUgKi8KICAgICBpZiAoaGFzaCA9PSAoUHlfdWhhc2hfdCktMSkKICAgICAgICAgaGFzaCA9IDU5MDkyMzcxM1VMOworCiAgICAgc28tPmhhc2ggPSBoYXNoOwogICAgIHJldHVybiBoYXNoOwogfQpAQCAtODY1LDcgKzk0Miw3IEBACiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2Mpc2V0aXRlcl90cmF2ZXJzZSwgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCkBAIC05MTAsMTggKzk4NywxNCBAQAogICAgICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CiAgICAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICAgICovCi0gICAgICAgIGlmIChkaWN0c2l6ZSA9PSAtMSkKKyAgICAgICAgaWYgKGRpY3RzaXplIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKChzby0+ZmlsbCArIGRpY3RzaXplKSozID49IChzby0+bWFzaysxKSoyKSB7Ci0gICAgICAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgKHNvLT51c2VkICsgZGljdHNpemUpKjIpICE9IDApCisgICAgICAgIGlmICgoc28tPmZpbGwgKyBkaWN0c2l6ZSkqMyA+PSBzby0+bWFzayoyKSB7CisgICAgICAgICAgICBpZiAoc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQgKyBkaWN0c2l6ZSkgIT0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChvdGhlciwgJnBvcywgJmtleSwgJnZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgIHNldGVudHJ5IGFuX2VudHJ5OwotCi0gICAgICAgICAgICBhbl9lbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgICAgIGFuX2VudHJ5LmtleSA9IGtleTsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpKQorICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtOTcwLDkgKzEwNDMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1ha2VfbmV3X3NldChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppdGVyYWJsZSkKIHsKLSAgICBQeVNldE9iamVjdCAqc28gPSBOVUxMOworICAgIFB5U2V0T2JqZWN0ICpzbzsKIAotICAgIC8qIGNyZWF0ZSBQeVNldE9iamVjdCBzdHJ1Y3R1cmUgKi8KICAgICBzbyA9IChQeVNldE9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwMTUsNyArMTA4Nyw4IEBACiB7CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gTlVMTCwgKnJlc3VsdDsKIAotICAgIGlmICh0eXBlID09ICZQeUZyb3plblNldF9UeXBlICYmICFfUHlBcmdfTm9LZXl3b3JkcygiZnJvemVuc2V0KCkiLCBrd2RzKSkKKyAgICBpZiAoa3dkcyAhPSBOVUxMICYmIHR5cGUgPT0gJlB5RnJvemVuU2V0X1R5cGUKKyAgICAgICAgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJmcm96ZW5zZXQoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgdHlwZS0+dHBfbmFtZSwgMCwgMSwgJml0ZXJhYmxlKSkKQEAgLTEwNDIsMjQgKzExMTUsOSBAQAogICAgIHJldHVybiBlbXB0eWZyb3plbnNldDsKIH0KIAotaW50Ci1QeVNldF9DbGVhckZyZWVMaXN0KHZvaWQpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQKLVB5U2V0X0Zpbmkodm9pZCkKLXsKLSAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGlmICh0eXBlID09ICZQeVNldF9UeXBlICYmICFfUHlBcmdfTm9LZXl3b3Jkcygic2V0KCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICByZXR1cm4gbWFrZV9uZXdfc2V0KHR5cGUsIE5VTEwpOwogfQogCkBAIC0xMjAxLDYgKzEyNTksOCBAQAogewogICAgIFB5U2V0T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKmtleSwgKml0LCAqdG1wOworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIGludCBydjsKIAogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIHNldF9jb3B5KHNvKTsKQEAgLTEyMjAsMTMgKzEyODAsMTUgQEAKICAgICAgICAgfQogCiAgICAgICAgIHdoaWxlIChzZXRfbmV4dCgoUHlTZXRPYmplY3QgKilvdGhlciwgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBlbnRyeSk7Ci0gICAgICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChydikgewotICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwgZW50cnkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xMjQyLDMyICsxMzA0LDE1IEBACiAgICAgfQogCiAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgaW50IHJ2OwotICAgICAgICBzZXRlbnRyeSBlbnRyeTsKLSAgICAgICAgUHlfaGFzaF90IGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7Ci0KLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sICZlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocnYgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgaWYgKHJ2KSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsICZlbnRyeSkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBrZXksIGhhc2gpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgfQpAQCAtMTI3Nyw2ICsxMzIyLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYoaXQpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM2Myw2ICsxNDEzLDcgQEAKIHNldF9pc2Rpc2pvaW50KFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewogICAgIFB5T2JqZWN0ICprZXksICppdCwgKnRtcDsKKyAgICBpbnQgcnY7CiAKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpIHsKICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHNvKSA9PSAwKQpAQCAtMTM4MSw4ICsxNDMyLDggQEAKICAgICAgICAgICAgIG90aGVyID0gdG1wOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChzZXRfbmV4dCgoUHlTZXRPYmplY3QgKilvdGhlciwgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBlbnRyeSk7Ci0gICAgICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChydikKICAgICAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CkBAIC0xMzk1LDggKzE0NDYsNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGludCBydjsKLSAgICAgICAgc2V0ZW50cnkgZW50cnk7CiAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogCiAgICAgICAgIGlmIChoYXNoID09IC0xKSB7CkBAIC0xNDA0LDExICsxNDUzLDkgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgZW50cnkua2V5ID0ga2V5OwotICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgJmVudHJ5KTsKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7CiAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNDI5LDYgKzE0NzYsMTAgQEAKIHN0YXRpYyBpbnQKIHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKKyAgICBpZiAoUHlTZXRfR0VUX1NJWkUoc28pID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gc2V0X2NsZWFyX2ludGVybmFsKHNvKTsKIApAQCAtMTQzNyw3ICsxNDg4LDcgQEAKICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogCiAgICAgICAgIHdoaWxlIChzZXRfbmV4dCgoUHlTZXRPYmplY3QgKilvdGhlciwgJnBvcywgJmVudHJ5KSkKLSAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9lbnRyeShzbywgZW50cnkpID09IC0xKQorICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2VudHJ5KHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9IGVsc2UgewogICAgICAgICBQeU9iamVjdCAqa2V5LCAqaXQ7CkBAIC0xNDQ2LDcgKzE0OTcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIHdoaWxlICgoa2V5ID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpID09IC0xKSB7CisgICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQ1NywxMCArMTUwOCwxMCBAQAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgLyogSWYgbW9yZSB0aGFuIDEvNSBhcmUgZHVtbWllcywgdGhlbiByZXNpemUgdGhlbSBhd2F5LiAqLwotICAgIGlmICgoc28tPmZpbGwgLSBzby0+dXNlZCkgKiA1IDwgc28tPm1hc2spCisgICAgLyogSWYgbW9yZSB0aGFuIDEvNHRoIGFyZSBkdW1taWVzLCB0aGVuIHJlc2l6ZSB0aGVtIGF3YXkuICovCisgICAgaWYgKChzaXplX3QpKHNvLT5maWxsIC0gc28tPnVzZWQpIDw9IChzaXplX3Qpc28tPm1hc2sgLyA0KQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQ+NTAwMDAgPyBzby0+dXNlZCoyIDogc28tPnVzZWQqNCk7CisgICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0ODcsNyArMTUzOCw3IEBACiAgICAgcmVzdWx0ID0gc2V0X2NvcHkoc28pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKikgcmVzdWx0LCBvdGhlcikgIT0gLTEpCisgICAgaWYgKHNldF9kaWZmZXJlbmNlX3VwZGF0ZV9pbnRlcm5hbCgoUHlTZXRPYmplY3QgKikgcmVzdWx0LCBvdGhlcikgPT0gMCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTE0OTcsOCArMTU0OCwxNSBAQAogc2V0X2RpZmZlcmVuY2UoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqa2V5OworICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgaW50IHJ2OworCisgICAgaWYgKFB5U2V0X0dFVF9TSVpFKHNvKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBzZXRfY29weShzbyk7CisgICAgfQogCiAgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikgICYmICFQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpIHsKICAgICAgICAgcmV0dXJuIHNldF9jb3B5X2FuZF9kaWZmZXJlbmNlKHNvLCBvdGhlcik7CkBAIC0xNTE2LDE3ICsxNTc0LDE1IEBACiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKSB7CiAgICAgICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAgICAgc2V0ZW50cnkgZW50cnljb3B5OwotICAgICAgICAgICAgaW50IHJ2OwotICAgICAgICAgICAgZW50cnljb3B5Lmhhc2ggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgICAgIGVudHJ5Y29weS5rZXkgPSBlbnRyeS0+a2V5OwotICAgICAgICAgICAgcnYgPSBfUHlEaWN0X0NvbnRhaW5zKG90aGVyLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICAgICAgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgICAgICAgICAgcnYgPSBfUHlEaWN0X0NvbnRhaW5zKG90aGVyLCBrZXksIGhhc2gpOwogICAgICAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFydikgewotICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgJmVudHJ5Y29weSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1MzcsMTMgKzE1OTMsMTUgQEAKIAogICAgIC8qIEl0ZXJhdGUgb3ZlciBzbywgY2hlY2tpbmcgZm9yIGNvbW1vbiBlbGVtZW50cyBpbiBvdGhlci4gKi8KICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBrZXksIGhhc2gpOworICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmICghcnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwgZW50cnkpKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeSgoUHlTZXRPYmplY3QgKilyZXN1bHQsIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KQEAgLTE2MDUsMjkgKzE2NjMsMjQgQEAKICAgICBQeVNldE9iamVjdCAqb3RoZXJzZXQ7CiAgICAgUHlPYmplY3QgKmtleTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgc2V0ZW50cnkgKmVudHJ5OworICAgIGludCBydjsKIAogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikKICAgICAgICAgcmV0dXJuIHNldF9jbGVhcihzbyk7CiAKICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICAgICAgaW50IHJ2OwotICAgICAgICBQeV9oYXNoX3QgaGFzaDsKICAgICAgICAgd2hpbGUgKF9QeURpY3RfTmV4dChvdGhlciwgJnBvcywgJmtleSwgJnZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgIHNldGVudHJ5IGFuX2VudHJ5OwotCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgIGFuX2VudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICAgICAgYW5fZW50cnkua2V5ID0ga2V5OwotCi0gICAgICAgICAgICBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCAmYW5fZW50cnkpOwotICAgICAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgICAgICBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2ID09IERJU0NBUkRfTk9URk9VTkQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgJmFuX2VudHJ5KSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCBrZXksIGhhc2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CkBAIC0xNjQ3LDEzICsxNzAwLDE1IEBACiAgICAgfQogCiAgICAgd2hpbGUgKHNldF9uZXh0KG90aGVyc2V0LCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgIGludCBydiA9IHNldF9kaXNjYXJkX2VudHJ5KHNvLCBlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICBrZXkgPSBlbnRyeS0+a2V5OworICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcnNldCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAocnYgPT0gRElTQ0FSRF9OT1RGT1VORCkgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGVudHJ5KSkgeworICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXJzZXQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTcxNSw2ICsxNzcwLDcgQEAKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgIGludCBydjsKIAogICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp0bXAsICpyZXN1bHQ7CkBAIC0xNzI5LDggKzE3ODUsOCBAQAogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAKICAgICB3aGlsZSAoc2V0X25leHQoc28sICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgaW50IHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KChQeVNldE9iamVjdCAqKW90aGVyLCBlbnRyeSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIXJ2KQogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMTgyMSw3ICsxODc3LDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBydiA9IHNldF9jb250YWluc19rZXkoc28sIGtleSk7Ci0gICAgaWYgKHJ2ID09IC0xKSB7CisgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICBpZiAoIVB5U2V0X0NoZWNrKGtleSkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE4NDAsNyArMTg5Niw3IEBACiAgICAgbG9uZyByZXN1bHQ7CiAKICAgICByZXN1bHQgPSBzZXRfY29udGFpbnMoc28sIGtleSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwogfQpAQCAtMTg1NCw3ICsxOTEwLDcgQEAKICAgICBpbnQgcnY7CiAKICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywga2V5KTsKLSAgICBpZiAocnYgPT0gLTEpIHsKKyAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgIGlmICghUHlTZXRfQ2hlY2soa2V5KSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xODYzLDcgKzE5MTksNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCB0bXBrZXkpOwogICAgICAgICBQeV9ERUNSRUYodG1wa2V5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xODg2LDcgKzE5NDIsNyBAQAogICAgIGludCBydjsKIAogICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpOwotICAgIGlmIChydiA9PSAtMSkgeworICAgIGlmIChydiA8IDApIHsKICAgICAgICAgaWYgKCFQeVNldF9DaGVjayhrZXkpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE4OTUsNyArMTk1MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIHRtcGtleSk7CiAgICAgICAgIFB5X0RFQ1JFRih0bXBrZXkpOwotICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC0xOTQ5LDEzICsyMDA1LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gTlVMTDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc2VsZikpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlTZXRfQ2hlY2soc2VsZikgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJzZXQoKSIsIGt3ZHMpKQorICAgIGlmIChrd2RzICE9IE5VTEwgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJzZXQoKSIsIGt3ZHMpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCAwLCAxLCAmaXRlcmFibGUpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc2V0X2NsZWFyX2ludGVybmFsKHNlbGYpOworICAgIGlmIChzZWxmLT5maWxsKQorICAgICAgICBzZXRfY2xlYXJfaW50ZXJuYWwoc2VsZik7CiAgICAgc2VsZi0+aGFzaCA9IC0xOwogICAgIGlmIChpdGVyYWJsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKQEAgLTIxMjIsNyArMjE3Nyw3IEBACiAgICAgIGNvcHlfZG9jfSwKICAgICB7ImRpZmZlcmVuY2UiLCAgICAgIChQeUNGdW5jdGlvbilzZXRfZGlmZmVyZW5jZV9tdWx0aSwgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIGRpZmZlcmVuY2VfZG9jfSwKLSAgICB7ImludGVyc2VjdGlvbiIsKFB5Q0Z1bmN0aW9uKXNldF9pbnRlcnNlY3Rpb25fbXVsdGksICAgICAgICBNRVRIX1ZBUkFSR1MsCisgICAgeyJpbnRlcnNlY3Rpb24iLCAgICAoUHlDRnVuY3Rpb24pc2V0X2ludGVyc2VjdGlvbl9tdWx0aSwgICAgTUVUSF9WQVJBUkdTLAogICAgICBpbnRlcnNlY3Rpb25fZG9jfSwKICAgICB7ImlzZGlzam9pbnQiLCAgICAgIChQeUNGdW5jdGlvbilzZXRfaXNkaXNqb2ludCwgICAgTUVUSF9PLAogICAgICBpc2Rpc2pvaW50X2RvY30sCkBAIC0yMTkzLDcgKzIyNDgsNyBAQAogICAgICh0cmF2ZXJzZXByb2Mpc2V0X3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpc2V0X2NsZWFyX2ludGVybmFsLCAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAocmljaGNtcGZ1bmMpc2V0X3JpY2hjb21wYXJlLCAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIG9mZnNldG9mKFB5U2V0T2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihQeVNldE9iamVjdCwgd2Vha3JlZmxpc3QpLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIChnZXRpdGVyZnVuYylzZXRfaXRlciwgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGZyb3plbnNldF9tZXRob2RzLCAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KQEAgLTIyNzcsNiArMjMzMiwxOCBAQAogfQogCiBpbnQKK1B5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorUHlTZXRfRmluaSh2b2lkKQoreworICAgIFB5X0NMRUFSKGVtcHR5ZnJvemVuc2V0KTsKK30KKworaW50CiBfUHlTZXRfTmV4dEVudHJ5KFB5T2JqZWN0ICpzZXQsIFB5X3NzaXplX3QgKnBvcywgUHlPYmplY3QgKiprZXksIFB5X2hhc2hfdCAqaGFzaCkKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCmluZGV4IDBmYzZiNTguLjQzZjJmMzIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCkBAIC0xLDYgKzEsOCBAQAogLyogc3RyaW5nbGliOiBjb2RlYyBpbXBsZW1lbnRhdGlvbnMgKi8KIAotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjaWYgIVNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJjb2RlY3MuaCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgorI2VuZGlmCiAKIC8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQogICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KQEAgLTI2MCw1MiArMjYyLDM0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0jZGVmaW5lIE1BWF9TSE9SVF9VTklDSEFSUyAzMDAgIC8qIGxhcmdlc3Qgc2l6ZSB3ZSdsbCBkbyBvbiB0aGUgc3RhY2sgKi8KLQotICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBzIG9mIG5leHQgaW5wdXQgYnl0ZSAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgLyogcmVzdWx0IHN0cmluZyBvYmplY3QgKi8KKyAgICBQeV9zc2l6ZV90IGk7ICAgICAgICAgICAgICAgIC8qIGluZGV4IGludG8gZGF0YSBvZiBuZXh0IGlucHV0IGNoYXJhY3RlciAqLwogICAgIGNoYXIgKnA7ICAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBmcmVlIGJ5dGUgaW4gb3V0cHV0IGJ1ZmZlciAqLwotICAgIFB5X3NzaXplX3QgbmFsbG9jYXRlZDsgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIGFsbG9jYXRlZCAqLwotICAgIFB5X3NzaXplX3Qgbm5lZWRlZDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgcmVzdWx0IGJ5dGVzIG5lZWRlZCAqLwogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXAgPSBOVUxMOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKICNlbmRpZgogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCiAgICAgY29uc3QgUHlfc3NpemVfdCBtYXhfY2hhcl9zaXplID0gMjsKLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDJdOwogI2VsaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDIKICAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAzOwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogM107CiAjZWxzZSAvKiAgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDQgKi8KICAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSA0OwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogNF07CiAjZW5kaWYKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCi0gICAgaWYgKHNpemUgPD0gTUFYX1NIT1JUX1VOSUNIQVJTKSB7Ci0gICAgICAgIC8qIFdyaXRlIGludG8gdGhlIHN0YWNrIGJ1ZmZlcjsgbmFsbG9jYXRlZCBjYW4ndCBvdmVyZmxvdy4KLSAgICAgICAgICogQXQgdGhlIGVuZCwgd2UnbGwgYWxsb2NhdGUgZXhhY3RseSBhcyBtdWNoIGhlYXAgc3BhY2UgYXMgaXQKLSAgICAgICAgICogdHVybnMgb3V0IHdlIG5lZWQuCi0gICAgICAgICAqLwotICAgICAgICBuYWxsb2NhdGVkID0gUHlfU0FGRV9ET1dOQ0FTVChzaXplb2Yoc3RhY2tidWYpLCBzaXplX3QsIGludCk7Ci0gICAgICAgIHJlc3VsdCA9IE5VTEw7ICAgLyogd2lsbCBhbGxvY2F0ZSBhZnRlciB3ZSdyZSBkb25lICovCi0gICAgICAgIHAgPSBzdGFja2J1ZjsKKyAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gbWF4X2NoYXJfc2l6ZSkgeworICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICB9Ci0gICAgICAgIC8qIE92ZXJhbGxvY2F0ZSBvbiB0aGUgaGVhcCwgYW5kIGdpdmUgdGhlIGV4Y2VzcyBiYWNrIGF0IHRoZSBlbmQuICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBzaXplICogbWF4X2NoYXJfc2l6ZTsKLSAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIH0KKworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplICogbWF4X2NoYXJfc2l6ZSk7CisgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IGRhdGFbaSsrXTsKQEAgLTMyNiw3MiArMzEwLDExNyBAQAogICAgICAgICB9CiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQogICAgICAgICBlbHNlIGlmIChQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBrLCBzdGFydHBvczsKLSAgICAgICAgICAgIHN0YXJ0cG9zID0gaS0xOwotICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCi0gICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsICJ1dGYtOCIsICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIiwKLSAgICAgICAgICAgICAgICAgIHVuaWNvZGUsICZleGMsIHN0YXJ0cG9zLCBzdGFydHBvcysxLCAmbmV3cG9zKTsKLSAgICAgICAgICAgIGlmICghcmVwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKTsKLQotICAgICAgICAgICAgaWYgKHJlcHNpemUgPiBtYXhfY2hhcl9zaXplKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBzdGFja2J1ZjsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgICAgICAgICAgICAgaWYgKG5hbGxvY2F0ZWQgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUgKyBtYXhfY2hhcl9zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFsbG9jYXRlZCArPSByZXBzaXplIC0gbWF4X2NoYXJfc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBuYWxsb2NhdGVkKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLCBzdGFja2J1Ziwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkgKyBvZmZzZXQ7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBlbmRwb3MsIG5ld3BvczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgazsKKyAgICAgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKSB7CisgICAgICAgICAgICAgICAgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgICAgICBjaGFyICpwcmVwID0gUHlCeXRlc19BU19TVFJJTkcocmVwKTsKLSAgICAgICAgICAgICAgICBmb3IoayA9IHJlcHNpemU7IGsgPiAwOyBrLS0pCi0gICAgICAgICAgICAgICAgICAgICpwKysgPSAqcHJlcCsrOwotICAgICAgICAgICAgfSBlbHNlIC8qIHJlcCBpcyB1bmljb2RlICovIHsKLSAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIHJlcGtpbmQ7Ci0gICAgICAgICAgICAgICAgdm9pZCAqcmVwZGF0YTsKKyAgICAgICAgICAgIHN0YXJ0cG9zID0gaS0xOworICAgICAgICAgICAgZW5kcG9zID0gc3RhcnRwb3MrMTsKIAotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCisgICAgICAgICAgICB3aGlsZSAoKGVuZHBvcyA8IHNpemUpICYmIFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGRhdGFbZW5kcG9zXSkpCisgICAgICAgICAgICAgICAgZW5kcG9zKys7CisKKyAgICAgICAgICAgIC8qIE9ubHkgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgaWYgaXQncyBub3QgdGhlIGxhc3Qgd3JpdGUgKi8KKyAgICAgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAoZW5kcG9zIDwgc2l6ZSk7CisKKyAgICAgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgICAgICAgICAgbWVtc2V0KHAsICc/JywgZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zKTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggdGhlIGlnbm9yZSBoYW5kbGVyICovCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CisgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFUEFTUzoKKyAgICAgICAgICAgICAgICBmb3IgKGs9c3RhcnRwb3M7IGs8ZW5kcG9zOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBkYXRhW2tdOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZTAgfCAoY2ggPj4gMTIpKTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSBtYXhfY2hhcl9zaXplICogKGVuZHBvcyAtIHN0YXJ0cG9zKTsKKyAgICAgICAgICAgICAgICBwID0gYmFja3NsYXNocmVwbGFjZSgmd3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MpOworICAgICAgICAgICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgcmVwa2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcCk7Ci0gICAgICAgICAgICAgICAgcmVwZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcCk7CisgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgICAgIGZvcihrPTA7IGs8cmVwc2l6ZTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKHJlcGtpbmQsIHJlcGRhdGEsIGspOwotICAgICAgICAgICAgICAgICAgICBpZiAoMHg4MCA8PSBjKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJ1dGYtOCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktMSwgaSwKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSBtYXhfY2hhcl9zaXplICogKGVuZHBvcyAtIHN0YXJ0cG9zKTsKKyAgICAgICAgICAgICAgICBwID0geG1sY2hhcnJlZnJlcGxhY2UoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAgICAgZm9yIChrPXN0YXJ0cG9zOyBrPGVuZHBvczsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gZGF0YVtrXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEoMHhEQzgwIDw9IGNoICYmIGNoIDw9IDB4RENGRikpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKShjaCAmIDB4ZmYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoayA+PSBlbmRwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgaSArPSAoZW5kcG9zIC0gc3RhcnRwb3MgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXJ0cG9zID0gazsKKyAgICAgICAgICAgICAgICBhc3NlcnQoc3RhcnRwb3MgPCBlbmRwb3MpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCB0aGUgZGVmYXVsdCBoYW5kbGVyICovCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIGVuZHBvcywgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gbWF4X2NoYXJfc2l6ZSAqIChuZXdwb3MgLSBzdGFydHBvcyk7CisKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7CisgICAgICAgICAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVwKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiByZXAgaXMgdW5pY29kZSAqLworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShyZXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJ1dGYtOCIsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0cG9zLCBlbmRwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhciljOworCisgICAgICAgICAgICAgICAgICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCkpOwogICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKKworICAgICAgICAgICAgICAgIGkgPSBuZXdwb3M7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9DTEVBUihyZXApOworCisgICAgICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICAgICAgd3JpdGUuIE90aGVyd2lzZSwgd2UgbWlzc2VkIGFuIG9wdGltaXphdGlvbiAqLworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgaSA9PSBzaXplKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMgpAQCAtNDE2LDM1ICs0NDUsMjAgQEAKICNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxICovCiAgICAgfQogCi0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFRoaXMgd2FzIHN0YWNrIGFsbG9jYXRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBzdGFja2J1ZjsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3RhY2tidWYsIG5uZWVkZWQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogQ3V0IGJhY2sgdG8gc2l6ZSBhY3R1YWxseSBuZWVkZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICAgICAgYXNzZXJ0KG5uZWVkZWQgPD0gbmFsbG9jYXRlZCk7Ci0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBubmVlZGVkKTsKLSAgICB9Ci0KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKIAogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKICBlcnJvcjoKICAgICBQeV9YREVDUkVGKHJlcCk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKICNlbmRpZgotCi0jdW5kZWYgTUFYX1NIT1JUX1VOSUNIQVJTCiB9CiAKIC8qIFRoZSBwYXR0ZXJuIGZvciBjb25zdHJ1Y3RpbmcgVUNTMi1yZXBlYXRlZCBtYXNrcy4gKi8KQEAgLTgwNiw1ICs4MjAsMyBAQAogI3VuZGVmIFNXQUI0CiAKICNlbmRpZgotCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmggYi9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oCmluZGV4IDczOWNmM2QuLmYwNTQ2MjUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaApAQCAtMSw1ICsxLDYgQEAKLS8qIE5PVEU6IHRoaXMgQVBJIGlzIC1PTkxZLSBmb3IgdXNlIHdpdGggc2luZ2xlIGJ5dGUgY2hhcmFjdGVyIHN0cmluZ3MuICovCi0vKiBEbyBub3QgdXNlIGl0IHdpdGggVW5pY29kZS4gKi8KKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAiY3R5cGUuaCBvbmx5IGNvbXBhdGlibGUgd2l0aCBieXRlLXdpc2Ugc3RyaW5ncyIKKyNlbmRpZgogCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgogCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmggYi9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKaW5kZXggY2RhNjhlNy4uOTgxNjVhZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaApAQCAtMzIsNTIgKzMyLDk4IEBACiAjZGVmaW5lIFNUUklOR0xJQl9CTE9PTShtYXNrLCBjaCkgICAgIFwKICAgICAoKG1hc2sgJiAgKDFVTCA8PCAoKGNoKSAmIChTVFJJTkdMSUJfQkxPT01fV0lEVEggLTEpKSkpKQogCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK1NUUklOR0xJQihmaW5kX2NoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sIFNUUklOR0xJQl9DSEFSIGNoKQoreworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwLCAqZTsKKworICAgIHAgPSBzOworICAgIGUgPSBzICsgbjsKKyAgICBpZiAobiA+IDEwKSB7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyAgICAgICAgcCA9IG1lbWNocihzLCBjaCwgbik7CisgICAgICAgIGlmIChwICE9IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKHAgLSBzKTsKKyAgICAgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICAgICAgLyogdXNlIG1lbWNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5CisgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9IGNoICYgMHhmZjsKKyAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KKyAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCisgICAgICAgICAgIGFuZCBVQ1M0IHJlcHJlc2VudGF0aW9ucy4gKi8KKyAgICAgICAgaWYgKG5lZWRsZSAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAocCA8IGUpIHsKKyAgICAgICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1jaHIocCwgbmVlZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSAtIHApICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgcCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgd2hpbGUgKHAgPCBlKSB7CisgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICBwKys7CisgICAgfQorICAgIHJldHVybiAtMTsKK30KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1TVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIGNoLCB1bnNpZ25lZCBjaGFyIG5lZWRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUpCitTVFJJTkdMSUIocmZpbmRfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwgU1RSSU5HTElCX0NIQVIgY2gpCiB7Ci0gICAgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpIHsKLSAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnB0ciA9IHM7Ci0gICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICplID0gcyArIG47Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlKSB7Ci0gICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1jaHIoKGNvbnN0IHZvaWQgKikgcHRyLCBuZWVkbGUsIChlIC0gcHRyKSAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIHB0ciA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgaWYgKHNpemVvZihTVFJJTkdMSUJfQ0hBUikgPT0gMSB8fCAqcHRyID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiAocHRyIC0gcyk7Ci0gICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLwotICAgICAgICAgICAgcHRyKys7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcDsKICNpZmRlZiBIQVZFX01FTVJDSFIKICAgICAvKiBtZW1yY2hyKCkgaXMgYSBHTlUgZXh0ZW5zaW9uLCBhdmFpbGFibGUgc2luY2UgZ2xpYmMgMi4xLjkxLgogICAgICAgIGl0IGRvZXNuJ3Qgc2VlbSBhcyBvcHRpbWl6ZWQgYXMgbWVtY2hyKCksIGJ1dCBpcyBzdGlsbCBxdWl0ZQotICAgICAgIGZhc3RlciB0aGFuIG91ciBoYW5kLXdyaXR0ZW4gbG9vcCBpbiBGQVNUU0VBUkNIIGJlbG93ICovCi0gICAgZWxzZSBpZiAobW9kZSA9PSBGQVNUX1JTRUFSQ0gpIHsKLSAgICAgICAgd2hpbGUgKG4gPiAwKSB7Ci0gICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZm91bmQ7Ci0gICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1yY2hyKChjb25zdCB2b2lkICopIHMsIG5lZWRsZSwgbiAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOwotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIGZvdW5kID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBuID0gZm91bmQgLSBzOwotICAgICAgICAgICAgaWYgKHNpemVvZihTVFJJTkdMSUJfQ0hBUikgPT0gMSB8fCAqZm91bmQgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICAvKiBGYWxzZSBwb3NpdGl2ZSAqLwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKLSAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KDApOyAvKiBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgICAgIGZhc3RlciB0aGFuIG91ciBoYW5kLXdyaXR0ZW4gbG9vcCBiZWxvdyAqLwogCi0jdW5kZWYgRE9fTUVNQ0hSCisgICAgaWYgKG4gPiAxMCkgeworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSAxCisgICAgICAgIHAgPSBtZW1yY2hyKHMsIGNoLCBuKTsKKyAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICByZXR1cm4gLTE7CisjZWxzZQorICAgICAgICAvKiB1c2UgbWVtcmNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5CisgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLworICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9IGNoICYgMHhmZjsKKyAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KKyAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCisgICAgICAgICAgIGFuZCBVQ1M0IHJlcHJlc2VudGF0aW9ucy4gKi8KKyAgICAgICAgaWYgKG5lZWRsZSAhPSAwKSB7CisgICAgICAgICAgICB3aGlsZSAobiA+IDApIHsKKyAgICAgICAgICAgICAgICB2b2lkICpjYW5kaWRhdGUgPSBtZW1yY2hyKHMsIG5lZWRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICBwID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIG4gPSBwIC0gczsKKyAgICAgICAgICAgICAgICBpZiAoKnAgPT0gY2gpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyNlbmRpZiAgLyogSEFWRV9NRU1SQ0hSICovCisgICAgcCA9IHMgKyBuOworICAgIHdoaWxlIChwID4gcykgeworICAgICAgICBwLS07CisgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgIH0KKyAgICByZXR1cm4gLTE7CiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQpAQCAtOTksMjUgKzE0NSwxMSBAQAogICAgICAgICBpZiAobSA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAvKiB1c2Ugc3BlY2lhbCBjYXNlIGZvciAxLWNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgICAgIGlmIChuID4gMTAgJiYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gKLSNpZmRlZiBIQVZFX01FTVJDSFIKLSAgICAgICAgICAgICAgICAgICAgfHwgbW9kZSA9PSBGQVNUX1JTRUFSQ0gKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICApKSB7Ci0gICAgICAgICAgICAvKiB1c2UgbWVtY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKLSAgICAgICAgICAgICAgIGZhbHNlIHBvc2l0aXZlcyAqLwotICAgICAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGU7Ci0gICAgICAgICAgICBuZWVkbGUgPSBwWzBdICYgMHhmZjsKLSNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCi0gICAgICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbwotICAgICAgICAgICAgICAgbWFueSBmYWxzZSBwb3NpdGl2ZXMgbG9va2luZyBmb3IgdGhlICdcMCcgYnl0ZSBpbiBVQ1MyCi0gICAgICAgICAgICAgICBhbmQgVUNTNCByZXByZXNlbnRhdGlvbnMuICovCi0gICAgICAgICAgICBpZiAobmVlZGxlICE9IDApCi0jZW5kaWYKLSAgICAgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKGZhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKQotICAgICAgICAgICAgICAgICAgICAgICAocywgbiwgcFswXSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobW9kZSA9PSBGQVNUX0NPVU5UKSB7CisgICAgICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKQorICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmaW5kX2NoYXIpKHMsIG4sIHBbMF0pOworICAgICAgICBlbHNlIGlmIChtb2RlID09IEZBU1RfUlNFQVJDSCkKKyAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIocmZpbmRfY2hhcikocywgbiwgcFswXSk7CisgICAgICAgIGVsc2UgeyAgLyogRkFTVF9DT1VOVCAqLwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CkBAIC0xMjUsMTQgKzE1Nyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF4Y291bnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCi0gICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgIH0gZWxzZSB7ICAgIC8qIEZBU1RfUlNFQVJDSCAqLwotICAgICAgICAgICAgZm9yIChpID0gbiAtIDE7IGkgPiAtMTsgaS0tKQotICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKaW5kZXggMTQ4MTVmNi4uNTA5YjkyOSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaApAQCAtMTE3LDg1ICsxMTcsMyBAQAogfQogCiAjdW5kZWYgRk9STUFUX0JVRkZFUl9TSVpFCi0KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotCi0vKgotV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGVuc3VyZXMgdGhhdCB0aGUKLWZpcnN0IGFyZ3VtZW50IGlzIGEgdW5pY29kZSBvYmplY3QuCi0KLU5vdGUgdGhhdCB3ZSByZWNlaXZlIGEgcG9pbnRlciB0byB0aGUgcG9pbnRlciBvZiB0aGUgc3Vic3RyaW5nIG9iamVjdCwKLXNvIHdoZW4gd2UgY3JlYXRlIHRoYXQgb2JqZWN0IGluIHRoaXMgZnVuY3Rpb24gd2UgZG9uJ3QgREVDUkVGIGl0LAotYmVjYXVzZSBpdCBjb250aW51ZXMgbGl2aW5nIGluIHRoZSBjYWxsZXIgZnVuY3Rpb25zICh0aG9zZSBmdW5jdGlvbnMsCi1hZnRlciBmaW5pc2hpbmcgdXNpbmcgdGhlIHN1YnN0cmluZywgbXVzdCBERUNSRUYgaXQpLgotKi8KLQotUHlfTE9DQUxfSU5MSU5FKGludCkKLVNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUpKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCi17Ci0gICAgUHlPYmplY3QgKnRtcF9zdWJzdHJpbmc7Ci0KLSAgICBpZihTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpIHsKLSAgICAgICAgdG1wX3N1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHRtcF9zdWJzdHJpbmcpOwotICAgICAgICBpZiAoIXRtcF9zdWJzdHJpbmcpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgKnN1YnN0cmluZyA9IHRtcF9zdWJzdHJpbmc7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotI2Vsc2UgLyogIVNUUklOR0xJQl9JU19VTklDT0RFICovCi0KLS8qCi1XcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdoZXRoZXIgdGhlCi1maXJzdCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDAsIDI1NikuCi0KLUlmIHRoaXMgaXMgdGhlIGNhc2UsIHdyaXRlcyB0aGUgaW50ZWdlciB2YWx1ZSB0byB0aGUgYnl0ZSBwYXJhbWV0ZXIKLWFuZCBzZXRzIHN1Ym9iaiB0byBOVUxMLiBPdGhlcndpc2UsIHNldHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHN1Ym9iagotYW5kIGRvZXNuJ3QgdG91Y2ggYnl0ZS4gVGhlIG90aGVyIHBhcmFtZXRlcnMgYXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YKLXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkuCi0qLwotCi1QeV9MT0NBTF9JTkxJTkUoaW50KQotU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHNfYnl0ZSkoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1Ym9iaiwgY2hhciAqYnl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCi17Ci0gICAgUHlPYmplY3QgKnRtcF9zdWJvYmo7Ci0gICAgUHlfc3NpemVfdCBpdmFsOwotICAgIFB5T2JqZWN0ICplcnI7Ci0KLSAgICBpZighU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vib2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKCFQeU51bWJlcl9DaGVjayh0bXBfc3Vib2JqKSkgewotICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCi0gICAgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdCh0bXBfc3Vib2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKLSAgICBpZiAoaXZhbCA9PSAtMSkgewotICAgICAgICBlcnIgPSBQeUVycl9PY2N1cnJlZCgpOwotICAgICAgICBpZiAoZXJyICYmICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXJyLCBQeUV4Y19PdmVyZmxvd0Vycm9yKSkgewotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+IDI1NSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgICpzdWJvYmogPSBOVUxMOwotICAgICpieXRlID0gKGNoYXIpaXZhbDsKLSAgICByZXR1cm4gMTsKLX0KLQotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKaW5kZXggZWIzZmU4OC4uOGNjYmMzMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaApAQCAtMSw2ICsxLDggQEAKIC8qIEZpbmRpbmcgdGhlIG9wdGltYWwgd2lkdGggb2YgdW5pY29kZSBjaGFyYWN0ZXJzIGluIGEgYnVmZmVyICovCiAKLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorI2lmICFTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAiZmluZF9tYXhfY2hhci5oIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjZW5kaWYKIAogLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCiAgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLwpAQCAtMTI5LDUgKzEzMSw0IEBACiAjdW5kZWYgTUFYX0NIQVJfVUNTNAogCiAjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEgKi8KLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwogCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmggYi9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmgKaW5kZXggY2JmODFiZS4uNmYzMTRlMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaApAQCAtMSw2ICsxLDYgQEAKIC8qIHN0cmluZ2xpYjogYnl0ZXMgam9pbmluZyBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSICE9IDEKKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQogI2Vycm9yIGpvaW4uaCBvbmx5IGNvbXBhdGlibGUgd2l0aCBieXRlLXdpc2Ugc3RyaW5ncwogI2VuZGlmCiAKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmJ1ZnM7IGkrKykgewogICAgICAgICAgICAgUHlfc3NpemVfdCBuID0gYnVmZmVyc1tpXS5sZW47CiAgICAgICAgICAgICBjaGFyICpxID0gYnVmZmVyc1tpXS5idWY7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocCwgcSwgbik7CisgICAgICAgICAgICBtZW1jcHkocCwgcSwgbik7CiAgICAgICAgICAgICBwICs9IG47CiAgICAgICAgIH0KICAgICAgICAgZ290byBkb25lOwpAQCAtMTE2LDEyICsxMTYsMTIgQEAKICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICBjaGFyICpxOwogICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAsIHNlcHN0ciwgc2VwbGVuKTsKKyAgICAgICAgICAgIG1lbWNweShwLCBzZXBzdHIsIHNlcGxlbik7CiAgICAgICAgICAgICBwICs9IHNlcGxlbjsKICAgICAgICAgfQogICAgICAgICBuID0gYnVmZmVyc1tpXS5sZW47CiAgICAgICAgIHEgPSBidWZmZXJzW2ldLmJ1ZjsKLSAgICAgICAgUHlfTUVNQ1BZKHAsIHEsIG4pOworICAgICAgICBtZW1jcHkocCwgcSwgbik7CiAgICAgICAgIHAgKz0gbjsKICAgICB9CiAgICAgZ290byBkb25lOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCmluZGV4IDZlMmYwNzMuLmRmNTAxZWQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKQEAgLTIsOCArMiw4IEBACiAKICNpbmNsdWRlIDxsb2NhbGUuaD4KIAotI2lmbmRlZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotIyAgIGVycm9yICJsb2NhbGV1dGlsIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjaWYgIVNUUklOR0xJQl9JU19VTklDT0RFCisjICAgZXJyb3IgImxvY2FsZXV0aWwuaCBpcyBzcGVjaWZpYyB0byBVbmljb2RlIgogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKaW5kZXggYjU1OWI1My4uYTMxNDU3MiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgKQEAgLTEsMTQgKzEsMjEgQEAKLS8qIE5PVEU6IHRoaXMgQVBJIGlzIC1PTkxZLSBmb3IgdXNlIHdpdGggc2luZ2xlIGJ5dGUgY2hhcmFjdGVyIHN0cmluZ3MuICovCi0vKiBEbyBub3QgdXNlIGl0IHdpdGggVW5pY29kZS4gKi8KKyNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyBlcnJvciAidHJhbnNtb2dyaWZ5Lmggb25seSBjb21wYXRpYmxlIHdpdGggYnl0ZS13aXNlIHN0cmluZ3MiCisjZW5kaWYKIAogLyogdGhlIG1vcmUgY29tcGxpY2F0ZWQgbWV0aG9kcy4gIHBhcnRzIG9mIHRoZXNlIHNob3VsZCBiZSBwdWxsZWQgb3V0IGludG8gdGhlCiAgICBzaGFyZWQgY29kZSBpbiBieXRlc19tZXRob2RzLmMgdG8gY3V0IGRvd24gb24gZHVwbGljYXRlIGNvZGUgYmxvYXQuICAqLwogCi1QeURvY19TVFJWQVIoZXhwYW5kdGFic19fZG9jX18sCi0iQi5leHBhbmR0YWJzKHRhYnNpemU9OCkgLT4gY29weSBvZiBCXG5cCi1cblwKLVJldHVybiBhIGNvcHkgb2YgQiB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIGV4cGFuZGVkIHVzaW5nIHNwYWNlcy5cblwKLUlmIHRhYnNpemUgaXMgbm90IGdpdmVuLCBhIHRhYiBzaXplIG9mIDggY2hhcmFjdGVycyBpcyBhc3N1bWVkLiIpOworc3RhdGljIGlubGluZSBQeU9iamVjdCAqCityZXR1cm5fc2VsZihQeU9iamVjdCAqc2VsZikKK3sKKyNpZiAhU1RSSU5HTElCX01VVEFCTEUKKyAgICBpZiAoU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7CisgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIHNlbGY7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCoKIHN0cmluZ2xpYl9leHBhbmR0YWJzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCkBAIC04Myw3ICs5MCw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorc3RhdGljIGlubGluZSBQeU9iamVjdCAqCiBwYWQoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgbGVmdCwgUHlfc3NpemVfdCByaWdodCwgY2hhciBmaWxsKQogewogICAgIFB5T2JqZWN0ICp1OwpAQCAtOTMsMzkgKzEwMCwyNSBAQAogICAgIGlmIChyaWdodCA8IDApCiAgICAgICAgIHJpZ2h0ID0gMDsKIAotICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKLSNlbmRpZiAvKiBTVFJJTkdMSUJfTVVUQUJMRSAqLworICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCi0gICAgdSA9IFNUUklOR0xJQl9ORVcoTlVMTCwKLQkJCQkgICBsZWZ0ICsgU1RSSU5HTElCX0xFTihzZWxmKSArIHJpZ2h0KTsKKyAgICB1ID0gU1RSSU5HTElCX05FVyhOVUxMLCBsZWZ0ICsgU1RSSU5HTElCX0xFTihzZWxmKSArIHJpZ2h0KTsKICAgICBpZiAodSkgewogICAgICAgICBpZiAobGVmdCkKICAgICAgICAgICAgIG1lbXNldChTVFJJTkdMSUJfU1RSKHUpLCBmaWxsLCBsZWZ0KTsKLSAgICAgICAgUHlfTUVNQ1BZKFNUUklOR0xJQl9TVFIodSkgKyBsZWZ0LAotCSAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotCSAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKKyAgICAgICAgbWVtY3B5KFNUUklOR0xJQl9TVFIodSkgKyBsZWZ0LAorICAgICAgICAgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKKyAgICAgICAgICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikpOwogICAgICAgICBpZiAocmlnaHQpCiAgICAgICAgICAgICBtZW1zZXQoU1RSSU5HTElCX1NUUih1KSArIGxlZnQgKyBTVFJJTkdMSUJfTEVOKHNlbGYpLAotCQkgICBmaWxsLCByaWdodCk7CisgICAgICAgICAgICAgICAgICAgZmlsbCwgcmlnaHQpOwogICAgIH0KIAogICAgIHJldHVybiB1OwogfQogCi1QeURvY19TVFJWQVIobGp1c3RfX2RvY19fLAotIkIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlJldHVybiBCIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgotImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl9sanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xMzUsMjcgKzEyOCwxNCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxjOmxqdXN0IiwgJndpZHRoLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIHJldHVybiBwYWQoc2VsZiwgMCwgd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpLCBmaWxsY2hhcik7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJqdXN0X19kb2NfXywKLSJCLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJSZXR1cm4gQiByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCi0iZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfcmp1c3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMTY1LDI3ICsxNDUsMTQgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58YzpyanVzdCIsICZ3aWR0aCwgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCAmJiBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAvKiBXZSdyZSBkZWZpbmVkIGFzIHJldHVybmluZyBhIGNvcHk7ICBJZiB0aGUgb2JqZWN0IGlzIG11dGFibGUKLSAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgorICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKICAgICByZXR1cm4gcGFkKHNlbGYsIHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKSwgMCwgZmlsbGNoYXIpOwogfQogCiAKLVB5RG9jX1NUUlZBUihjZW50ZXJfX2RvY19fLAotIkIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKLSJcbiIKLSJSZXR1cm4gQiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguICBQYWRkaW5nIGlzXG4iCi0iZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX2NlbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTYsMTUgKzE2Myw4IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGM6Y2VudGVyIiwgJndpZHRoLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIG1hcmcgPSB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZik7CkBAIC0yMTMsMTIgKzE3Myw2IEBACiAgICAgcmV0dXJuIHBhZChzZWxmLCBsZWZ0LCBtYXJnIC0gbGVmdCwgZmlsbGNoYXIpOwogfQogCi1QeURvY19TVFJWQVIoemZpbGxfX2RvY19fLAotIkIuemZpbGwod2lkdGgpIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlBhZCBhIG51bWVyaWMgc3RyaW5nIEIgd2l0aCB6ZXJvcyBvbiB0aGUgbGVmdCwgdG8gZmlsbCBhIGZpZWxkXG4iCi0ib2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gIEIgaXMgbmV2ZXIgdHJ1bmNhdGVkLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX3pmaWxsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTIzMSwyMSArMTg1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgewotICAgICAgICBpZiAoU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgICAgICogdGhhdCBtZWFucyB3ZSBtdXN0IG1ha2UgYW4gaWRlbnRpY2FsIGNvcHkuICovCi0gICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSNlbmRpZgotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKAotICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCi0gICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKQotICAgICAgICAgICAgKTsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIGZpbGwgPSB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZik7CkBAIC0yNjIsNSArMjAyLDUwMCBAQAogICAgICAgICBwW2ZpbGxdID0gJzAnOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBzOworICAgIHJldHVybiBzOwogfQorCisKKy8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KKworI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQorCisKK3N0YXRpYyBQeV9zc2l6ZV90Citjb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywKKyAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIFB5X3NzaXplX3QgY291bnQgPSAwOworICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gdGFyZ2V0OworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHRhcmdldCArIHRhcmdldF9sZW47CisKKyAgICB3aGlsZSAoKHN0YXJ0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBjKSkgIT0gTlVMTCkgeworICAgICAgICBjb3VudCsrOworICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RhcnQgKz0gMTsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCisKKy8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KKworLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX2ludGVybGVhdmUoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfczsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQsIGk7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIC8qIDEgYXQgdGhlIGVuZCBwbHVzIDEgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyOworICAgICAgIGNvdW50ID0gbWluKG1heGNvdW50LCBzZWxmX2xlbiArIDEpICovCisgICAgaWYgKG1heGNvdW50IDw9IHNlbGZfbGVuKSB7CisgICAgICAgIGNvdW50ID0gbWF4Y291bnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLworICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgICAvKiAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOyAqLworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIGJ5dGVzIGFyZSB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47CisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIGlmICh0b19sZW4gPiAxKSB7CisgICAgICAgIC8qIExheSB0aGUgZmlyc3Qgb25lIGRvd24gKGd1YXJhbnRlZWQgdGhpcyB3aWxsIG9jY3VyKSAqLworICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgY291bnQgLT0gMTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgKnJlc3VsdF9zKysgPSAqc2VsZl9zKys7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdF9zWzBdID0gdG9fc1swXTsKKyAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICBjb3VudCAtPSAxOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgKnJlc3VsdF9zKysgPSAqc2VsZl9zKys7CisgICAgICAgICAgICByZXN1bHRfc1swXSA9IHRvX3NbMF07CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KKyAgICBtZW1jcHkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4gLSBpKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFNwZWNpYWwgY2FzZSBmb3IgZGVsZXRpbmcgYSBzaW5nbGUgY2hhcmFjdGVyICovCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgdG89IiIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKworICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KKyAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgZnJvbV9jKTsKKyAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgc3RhcnQgPSBuZXh0ICsgMTsKKyAgICB9CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisKKyAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgLyogbm8gbWF0Y2hlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOworICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7CisKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisKKyAgICBzdGFydCA9IHNlbGZfczsKKyAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKKyAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7CisKKyAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKworICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgc3RhcnQgPSBuZXh0ICsgZnJvbV9sZW47CisgICAgfQorICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT09MSwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqbmV4dDsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOworCisgICAgaWYgKG5leHQgPT0gTlVMTCkgeworICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNlbGZfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworICAgIG1lbWNweShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7CisKKyAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLworICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgKG5leHQgLSBzZWxmX3MpOworICAgICpzdGFydCA9IHRvX2M7CisgICAgc3RhcnQrKzsKKyAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOworCisgICAgd2hpbGUgKC0tbWF4Y291bnQgPiAwKSB7CisgICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGZyb21fYyk7CisgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgKm5leHQgPSB0b19jOworICAgICAgICBzdGFydCA9IG5leHQgKyAxOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3MsICpzdGFydDsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIC8qIFRoZSByZXN1bHQgYnl0ZXMgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKworICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHNlbGZfcywgc2VsZl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICBpZiAob2Zmc2V0ID09IC0xKSB7CisgICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgc2VsZl9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKKworICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCisgICAgc3RhcnQgPSAgcmVzdWx0X3MgKyBvZmZzZXQ7CisgICAgbWVtY3B5KHN0YXJ0LCB0b19zLCBmcm9tX2xlbik7CisgICAgc3RhcnQgKz0gZnJvbV9sZW47CisgICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKKworICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKKyAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtZW1jcHkoc3RhcnQgKyBvZmZzZXQsIHRvX3MsIGZyb21fbGVuKTsKKyAgICAgICAgc3RhcnQgKz0gb2Zmc2V0ICsgZnJvbV9sZW47CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7CisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLworICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBmcm9tX2MpOworICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKKyAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgKz0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgPSBuZXh0ICsgMTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBieXRlcyAqLworICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3N1YnN0cmluZyhQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBjb25zdCBjaGFyICpzZWxmX3MsICpzdGFydCwgKm5leHQsICplbmQ7CisgICAgY2hhciAqcmVzdWx0X3M7CisgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKKworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLworICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KKyAgICBhc3NlcnQoY291bnQgPiAwKTsKKyAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIGZyb21fbGVuKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKKyAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKKyAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCArIGZyb21fbGVuOworICAgICAgICB9CisgICAgfQorICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2UoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgaWYgKG1heGNvdW50IDwgMCkgeworICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOworICAgIH0gZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBTVFJJTkdMSUJfTEVOKHNlbGYpID09IDApIHsKKyAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogSGFuZGxlIHplcm8tbGVuZ3RoIHNwZWNpYWwgY2FzZXMgKi8KKyAgICBpZiAoZnJvbV9sZW4gPT0gMCkgeworICAgICAgICBpZiAodG9fbGVuID09IDApIHsKKyAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICAgICAgfQorICAgICAgICAvKiBpbnNlcnQgdGhlICd0bycgYnl0ZXMgZXZlcnl3aGVyZS4gICAgKi8KKyAgICAgICAgLyogICAgPj4+IGIiUHl0aG9uIi5yZXBsYWNlKGIiIiwgYiIuIikgICovCisgICAgICAgIC8qICAgIGInLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAqLworICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICB9CisKKyAgICAvKiBFeGNlcHQgZm9yIGIiIi5yZXBsYWNlKGIiIiwgYiJBIikgPT0gYiJBIiB0aGVyZSBpcyBubyB3YXkgYmV5b25kIHRoaXMgKi8KKyAgICAvKiBwb2ludCBmb3IgYW4gZW1wdHkgc2VsZiBieXRlcyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBieXRlcyAqLworICAgIC8qIFNwZWNpYWwgY2FzZSBzbyB0aGUgcmVtYWluaW5nIGNvZGUgYWx3YXlzIGdldHMgYSBub24tZW1wdHkgYnl0ZXMgKi8KKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA9PSAwKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICBpZiAodG9fbGVuID09IDApIHsKKyAgICAgICAgLyogZGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiAnZnJvbScgYnl0ZXMgKi8KKyAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcigKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIG1heGNvdW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIG1heGNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYm90aCBieXRlcyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLworCisgICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgeworICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCB0b19zWzBdLCBtYXhjb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KKyAgICBpZiAoZnJvbV9sZW4gPT0gMSkgeworICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcigKKyAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbGVuKCdmcm9tJyk+PTIsIGxlbigndG8nKT49MSAqLworICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nKAorICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgfQorfQorCisjdW5kZWYgZmluZGNoYXIKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCmluZGV4IGJlMDliNWYuLjE0ZmEyOGUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaApAQCAtNjcsNyArNjcsNyBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKHN0ci0+c3RyLCBzdHItPnN0YXJ0LCBzdHItPmVuZCk7CiB9CiAKLS8qIHJldHVybiBhIG5ldyBzdHJpbmcuICBpZiBzdHItPnN0ciBpcyBOVUxMLCByZXR1cm4gTm9uZSAqLworLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+c3RyIGlzIE5VTEwsIHJldHVybiBhIG5ldyBlbXB0eSBzdHJpbmcgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3Rfb3JfZW1wdHkoU3ViU3RyaW5nICpzdHIpCiB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cnVjdHNlcS5jIGIvT2JqZWN0cy9zdHJ1Y3RzZXEuYwppbmRleCA2NjQzNDRiLi5lMzE1Y2JhIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cnVjdHNlcS5jCisrKyBiL09iamVjdHMvc3RydWN0c2VxLmMKQEAgLTQsOSArNCw5IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKLXN0YXRpYyBjaGFyIHZpc2libGVfbGVuZ3RoX2tleVtdID0gIm5fc2VxdWVuY2VfZmllbGRzIjsKLXN0YXRpYyBjaGFyIHJlYWxfbGVuZ3RoX2tleVtdID0gIm5fZmllbGRzIjsKLXN0YXRpYyBjaGFyIHVubmFtZWRfZmllbGRzX2tleVtdID0gIm5fdW5uYW1lZF9maWVsZHMiOworc3RhdGljIGNvbnN0IGNoYXIgdmlzaWJsZV9sZW5ndGhfa2V5W10gPSAibl9zZXF1ZW5jZV9maWVsZHMiOworc3RhdGljIGNvbnN0IGNoYXIgcmVhbF9sZW5ndGhfa2V5W10gPSAibl9maWVsZHMiOworc3RhdGljIGNvbnN0IGNoYXIgdW5uYW1lZF9maWVsZHNfa2V5W10gPSAibl91bm5hbWVkX2ZpZWxkcyI7CiAKIC8qIEZpZWxkcyB3aXRoIHRoaXMgbmFtZSBoYXZlIG9ubHkgYSBmaWVsZCBpbmRleCwgbm90IGEgZmllbGQgbmFtZS4KICAgIFRoZXkgYXJlIG9ubHkgYWxsb3dlZCBmb3IgaW5kaWNlcyA8IG5fdmlzaWJsZV9maWVsZHMuICovCkBAIC0xNiwxNCArMTYsMTQgQEAKIF9QeV9JREVOVElGSUVSKG5fdW5uYW1lZF9maWVsZHMpOwogCiAjZGVmaW5lIFZJU0lCTEVfU0laRShvcCkgUHlfU0laRShvcCkKLSNkZWZpbmUgVklTSUJMRV9TSVpFX1RQKHRwKSBQeUxvbmdfQXNMb25nKCBcCisjZGVmaW5lIFZJU0lCTEVfU0laRV9UUCh0cCkgUHlMb25nX0FzU3NpemVfdCggXAogICAgICAgICAgICAgICAgICAgICAgIF9QeURpY3RfR2V0SXRlbUlkKCh0cCktPnRwX2RpY3QsICZQeUlkX25fc2VxdWVuY2VfZmllbGRzKSkKIAotI2RlZmluZSBSRUFMX1NJWkVfVFAodHApIFB5TG9uZ19Bc0xvbmcoIFwKKyNkZWZpbmUgUkVBTF9TSVpFX1RQKHRwKSBQeUxvbmdfQXNTc2l6ZV90KCBcCiAgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl9maWVsZHMpKQogI2RlZmluZSBSRUFMX1NJWkUob3ApIFJFQUxfU0laRV9UUChQeV9UWVBFKG9wKSkKIAotI2RlZmluZSBVTk5BTUVEX0ZJRUxEU19UUCh0cCkgUHlMb25nX0FzTG9uZyggXAorI2RlZmluZSBVTk5BTUVEX0ZJRUxEU19UUCh0cCkgUHlMb25nX0FzU3NpemVfdCggXAogICAgICAgICAgICAgICAgICAgICAgIF9QeURpY3RfR2V0SXRlbUlkKCh0cCktPnRwX2RpY3QsICZQeUlkX25fdW5uYW1lZF9maWVsZHMpKQogI2RlZmluZSBVTk5BTUVEX0ZJRUxEUyhvcCkgVU5OQU1FRF9GSUVMRFNfVFAoUHlfVFlQRShvcCkpCiAKQEAgLTE2NCw3ICsxNjQsOCBAQAogI2RlZmluZSBUWVBFX01BWFNJWkUgMTAwCiAKICAgICBQeVR5cGVPYmplY3QgKnR5cCA9IFB5X1RZUEUob2JqKTsKLSAgICBpbnQgaSwgcmVtb3ZlbGFzdCA9IDA7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCByZW1vdmVsYXN0ID0gMDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBjaGFyIGJ1ZltSRVBSX0JVRkZFUl9TSVpFXTsKICAgICBjaGFyICplbmRvZmJ1ZiwgKnBidWYgPSBidWY7CkBAIC0yMzYsOCArMjM3LDcgQEAKICAgICBQeU9iamVjdCogdHVwID0gTlVMTDsKICAgICBQeU9iamVjdCogZGljdCA9IE5VTEw7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG5fZmllbGRzLCBuX3Zpc2libGVfZmllbGRzLCBuX3VubmFtZWRfZmllbGRzOwotICAgIGludCBpOworICAgIFB5X3NzaXplX3Qgbl9maWVsZHMsIG5fdmlzaWJsZV9maWVsZHMsIG5fdW5uYW1lZF9maWVsZHMsIGk7CiAKICAgICBuX2ZpZWxkcyA9IFJFQUxfU0laRShzZWxmKTsKICAgICBuX3Zpc2libGVfZmllbGRzID0gVklTSUJMRV9TSVpFKHNlbGYpOwpAQCAtMzI1LDcgKzMyNSw3IEBACiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgUHlNZW1iZXJEZWYqIG1lbWJlcnM7Ci0gICAgaW50IG5fbWVtYmVycywgbl91bm5hbWVkX21lbWJlcnMsIGksIGs7CisgICAgUHlfc3NpemVfdCBuX21lbWJlcnMsIG5fdW5uYW1lZF9tZW1iZXJzLCBpLCBrOwogICAgIFB5T2JqZWN0ICp2OwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwpAQCAtMzczLDkgKzM3Myw5IEBACiAgICAgUHlfSU5DUkVGKHR5cGUpOwogCiAgICAgZGljdCA9IHR5cGUtPnRwX2RpY3Q7Ci0jZGVmaW5lIFNFVF9ESUNUX0ZST01fSU5UKGtleSwgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBTRVRfRElDVF9GUk9NX1NJWkUoa2V5LCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgaWYgKHYgPT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwga2V5LCB2KSA8IDApIHsgICAgICAgICAgIFwKQEAgLTM4NSw5ICszODUsOSBAQAogICAgICAgICBQeV9ERUNSRUYodik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi0gICAgU0VUX0RJQ1RfRlJPTV9JTlQodmlzaWJsZV9sZW5ndGhfa2V5LCBkZXNjLT5uX2luX3NlcXVlbmNlKTsKLSAgICBTRVRfRElDVF9GUk9NX0lOVChyZWFsX2xlbmd0aF9rZXksIG5fbWVtYmVycyk7Ci0gICAgU0VUX0RJQ1RfRlJPTV9JTlQodW5uYW1lZF9maWVsZHNfa2V5LCBuX3VubmFtZWRfbWVtYmVycyk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHZpc2libGVfbGVuZ3RoX2tleSwgZGVzYy0+bl9pbl9zZXF1ZW5jZSk7CisgICAgU0VUX0RJQ1RfRlJPTV9TSVpFKHJlYWxfbGVuZ3RoX2tleSwgbl9tZW1iZXJzKTsKKyAgICBTRVRfRElDVF9GUk9NX1NJWkUodW5uYW1lZF9maWVsZHNfa2V5LCBuX3VubmFtZWRfbWVtYmVycyk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvdHVwbGVvYmplY3QuYyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwppbmRleCA3OTIwZmVjLi5jMGZmNDk5IDEwMDY0NAotLS0gYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCkBAIC0zNiw2ICszNiwxNiBAQAogc3RhdGljIHZvaWQKIHNob3dfdHJhY2sodm9pZCkKIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93YWxsb2Njb3VudCk7CisKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93YWxsb2Njb3VudCk7CisgICAgaWYgKHZhbHVlICE9IFB5X1RydWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZwcmludGYoc3RkZXJyLCAiVHVwbGVzIGNyZWF0ZWQ6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCiAgICAgICAgIGNvdW50X3RyYWNrZWQgKyBjb3VudF91bnRyYWNrZWQpOwogICAgIGZwcmludGYoc3RkZXJyLCAiVHVwbGVzIHRyYWNrZWQgYnkgdGhlIEdDOiAlIiBQWV9GT1JNQVRfU0laRV9UCkBAIC0xNDksNyArMTU5LDYgQEAKIGludAogUHlUdXBsZV9TZXRJdGVtKFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCBpLCBQeU9iamVjdCAqbmV3aXRlbSkKIHsKLSAgICBQeU9iamVjdCAqb2xkaXRlbTsKICAgICBQeU9iamVjdCAqKnA7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKG9wKSB8fCBvcC0+b2JfcmVmY250ICE9IDEpIHsKICAgICAgICAgUHlfWERFQ1JFRihuZXdpdGVtKTsKQEAgLTE2Myw5ICsxNzIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHAgPSAoKFB5VHVwbGVPYmplY3QgKilvcCkgLT4gb2JfaXRlbSArIGk7Ci0gICAgb2xkaXRlbSA9ICpwOwotICAgICpwID0gbmV3aXRlbTsKLSAgICBQeV9YREVDUkVGKG9sZGl0ZW0pOworICAgIFB5X1hTRVRSRUYoKnAsIG5ld2l0ZW0pOwogICAgIHJldHVybiAwOwogfQogCkBAIC00NDYsOSArNDUzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2RlZmluZSBiICgoUHlUdXBsZU9iamVjdCAqKWJiKQotICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKLSAgICBpZiAoc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPiBQWV9TU0laRV9UX01BWCAtIFB5X1NJWkUoYikpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKICAgICBucCA9IChQeVR1cGxlT2JqZWN0ICopIFB5VHVwbGVfTmV3KHNpemUpOwogICAgIGlmIChucCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCA3Yjc2ZTVjLi5kYzlhODBhIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtNTMsMTAgKzUzLDEyIEBACiBfUHlfSURFTlRJRklFUihfX2dldGF0dHJpYnV0ZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fZ2V0aXRlbV9fKTsKIF9QeV9JREVOVElGSUVSKF9faGFzaF9fKTsKK19QeV9JREVOVElGSUVSKF9faW5pdF9zdWJjbGFzc19fKTsKIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOwogX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX25ld19fKTsKK19QeV9JREVOVElGSUVSKF9fc2V0X25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiBfUHlfSURFTlRJRklFUihidWlsdGlucyk7CiAKQEAgLTQ1MiwyNyArNDU0LDMwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewotICAgIGNoYXIgKnM7CisgICAgUHlPYmplY3QgKm1vZDsKIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKLSAgICAgICAgUHlPYmplY3QgKm1vZCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18pOwotICAgICAgICBpZiAoIW1vZCkgeworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJfX21vZHVsZV9fIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5X1hJTkNSRUYobW9kKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKKyAgICAgICAgUHlfSU5DUkVGKG1vZCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqbmFtZTsKLSAgICAgICAgcyA9IHN0cnJjaHIodHlwZS0+dHBfbmFtZSwgJy4nKTsKLSAgICAgICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdHJyY2hyKHR5cGUtPnRwX25hbWUsICcuJyk7CisgICAgICAgIGlmIChzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1vZCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCAoUHlfc3NpemVfdCkocyAtIHR5cGUtPnRwX25hbWUpKTsKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2J1aWx0aW5zKTsKLSAgICAgICAgUHlfWElOQ1JFRihuYW1lKTsKLSAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICBpZiAobW9kICE9IE5VTEwpCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJm1vZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb2QgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9idWlsdGlucyk7CisgICAgICAgICAgICBQeV9YSU5DUkVGKG1vZCk7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIG1vZDsKIH0KIAogc3RhdGljIGludApAQCAtNTAwLDcgKzUwNSw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWElOQ1JFRihtb2QpOworICAgIFB5X0lOQ1JFRihtb2QpOwogICAgIHJldHVybiBtb2Q7CiB9CiAKQEAgLTU0Nyw4ICs1NTIsOCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpiZXN0X2Jhc2UoUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IG1yb19pbnRlcm5hbChQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKiopOwotUHlfTE9DQUxfSU5MSU5FKGludCkgdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKLXN0YXRpYyBpbnQgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICosIGNoYXIgKik7CitzdGF0aWMgaW50IHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBhZGRfc3ViY2xhc3MoUHlUeXBlT2JqZWN0KiwgUHlUeXBlT2JqZWN0Kik7CiBzdGF0aWMgaW50IGFkZF9hbGxfc3ViY2xhc3NlcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpiYXNlcyk7CiBzdGF0aWMgdm9pZCByZW1vdmVfc3ViY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKQEAgLTg4OCwyNSArODkzLDMzIEBACiAjZW5kaWYKIAogICAgIG9iaiA9IHR5cGUtPnRwX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAob2JqICE9IE5VTEwpIHsKLSAgICAgICAgLyogVWdseSBleGNlcHRpb246IHdoZW4gdGhlIGNhbGwgd2FzIHR5cGUoc29tZXRoaW5nKSwKLSAgICAgICAgICAgZG9uJ3QgY2FsbCB0cF9pbml0IG9uIHRoZSByZXN1bHQuICovCi0gICAgICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgotICAgICAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKLSAgICAgICAgICAgIChrd2RzID09IE5VTEwgfHwKLSAgICAgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCi0gICAgICAgICAgIGl0IHdvbid0IGJlIGluaXRpYWxpemVkLiAqLwotICAgICAgICBpZiAoIVB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYmopLCB0eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7Ci0gICAgICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGludCByZXMgPSB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcyk7Ci0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICAgICAgICAgIG9iaiA9IE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgb2JqID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKFB5T2JqZWN0Kil0eXBlLCBvYmosIE5VTEwpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBVZ2x5IGV4Y2VwdGlvbjogd2hlbiB0aGUgY2FsbCB3YXMgdHlwZShzb21ldGhpbmcpLAorICAgICAgIGRvbid0IGNhbGwgdHBfaW5pdCBvbiB0aGUgcmVzdWx0LiAqLworICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgorICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgorICAgICAgICAoa3dkcyA9PSBOVUxMIHx8CisgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKKyAgICAgICAgcmV0dXJuIG9iajsKKworICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCisgICAgICAgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuICovCisgICAgaWYgKCFQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2JqKSwgdHlwZSkpCisgICAgICAgIHJldHVybiBvYmo7CisKKyAgICB0eXBlID0gUHlfVFlQRShvYmopOworICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IHJlcyA9IHR5cGUtPnRwX2luaXQob2JqLCBhcmdzLCBrd2RzKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgb2JqID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG9iajsKQEAgLTEzMjQsNyArMTMzNyw3IEBACiAKIC8qIHR5cGUgdGVzdCB3aXRoIHN1YmNsYXNzaW5nIHN1cHBvcnQgKi8KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbnQKIHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqYSwgUHlUeXBlT2JqZWN0ICpiKQogewogICAgIGRvIHsKQEAgLTE0MTIsMzYgKzE0MjUsMzggQEAKICAgIGFzIGxvb2t1cF9tZXRob2QgdG8gY2FjaGUgdGhlIGludGVybmVkIG5hbWUgc3RyaW5nIG9iamVjdC4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7Ci0gICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMLCAqcmV0dmFsOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1laWQtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkKKyAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZ3M7CisKKyAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIHZhX2VuZCh2YSk7CiAKLSAgICB2YV9lbmQodmEpOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQogCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogCiAgICAgcmV0dXJuIHJldHZhbDsKQEAgLTE0NTAsMzYgKzE0NjUsMzggQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tYXliZShQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwotICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTCwgKnJldHZhbDsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KQorICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgeworICAgICAgICBQeU9iamVjdCAqYXJnczsKKworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgdmFfZW5kKHZhKTsKIAotICAgIHZhX2VuZCh2YSk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKIAotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9CiAKLSAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTUzMSw3ICsxNTQ4LDYgQEAKICAgICBQeU9iamVjdCAqbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2xzLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgICAgICBuYW1lID0gUHlPYmplY3RfUmVwcihjbHMpOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMKQpAQCAtMjAyNSw2ICsyMDQxLDggQEAKIHN0YXRpYyBpbnQgb2JqZWN0X2luaXQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IHVwZGF0ZV9zbG90KFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGZpeHVwX3Nsb3RfZGlzcGF0Y2hlcnMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBzZXRfbmFtZXMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogLyoKICAqIEhlbHBlcnMgZm9yICBfX2RpY3RfXyBkZXNjcmlwdG9yLiAgV2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgdGhlIGRpY3RzCkBAIC0yMDg5LDcgKzIxMDcsNyBAQAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyOworICAgIFB5T2JqZWN0ICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTIxMjAsMTAgKzIxMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICAqZGljdHB0ciA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfWFNFVFJFRigqZGljdHB0ciwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yMjAyLDcgKzIyMTgsOCBAQAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGt3ZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dkcykpOwogCi0gICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgeworICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKKyAgICAgICAgUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlLl9faW5pdF9fKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjI2OSw4ICsyMjg2LDcgQEAKIHR5cGVfbmV3KFB5VHlwZU9iamVjdCAqbWV0YXR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqbmFtZSwgKmJhc2VzID0gTlVMTCwgKm9yaWdfZGljdCwgKmRpY3QgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibmFtZSIsICJiYXNlcyIsICJkaWN0IiwgMH07Ci0gICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHM7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHMsICpjZWxsOwogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CkBAIC0yMjc4LDE2ICsyMjk0LDE5IEBACiAgICAgaW50IGosIG1heV9hZGRfZGljdCwgbWF5X2FkZF93ZWFrLCBhZGRfZGljdCwgYWRkX3dlYWs7CiAgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX3Nsb3RzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NjZWxsX18pOwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa3dkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2RzKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2U6IHR5cGUoeCkgc2hvdWxkIHJldHVybiB4LT5vYl90eXBlICovCi0gICAgeworICAgIC8qIFdlIG9ubHkgd2FudCB0eXBlIGl0c2VsZiB0byBhY2NlcHQgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgTm90ZTogV2UgZG9uJ3QgY2FsbCBQeVR5cGVfQ2hlY2tFeGFjdCBhcyB0aGF0IGFsc28gYWxsb3dzIHN1YmNsYXNzZXMgKi8KKyAgICBpZiAobWV0YXR5cGUgPT0gJlB5VHlwZV9UeXBlKSB7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG5rd2RzID0ga3dkcyA9PSBOVUxMID8gMCA6IFB5RGljdF9TaXplKGt3ZHMpOwogCi0gICAgICAgIGlmIChQeVR5cGVfQ2hlY2tFeGFjdChtZXRhdHlwZSkgJiYgbmFyZ3MgPT0gMSAmJiBua3dkcyA9PSAwKSB7CisgICAgICAgIGlmIChuYXJncyA9PSAxICYmIG5rd2RzID09IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKHgpKTsKICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgUHlfVFlQRSh4KTsKQEAgLTIyOTYsNyArMjMxNSw3IEBACiAgICAgICAgIC8qIFNGIGJ1ZyA0NzUzMjcgLS0gaWYgdGhhdCBkaWRuJ3QgdHJpZ2dlciwgd2UgbmVlZCAzCiAgICAgICAgICAgIGFyZ3VtZW50cy4gYnV0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBiZWxvdyBtYXkgZ2l2ZQogICAgICAgICAgICBhIG1zZyBzYXlpbmcgdHlwZSgpIG5lZWRzIGV4YWN0bHkgMy4gKi8KLSAgICAgICAgaWYgKG5hcmdzICsgbmt3ZHMgIT0gMykgeworICAgICAgICBpZiAobmFyZ3MgIT0gMykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSgpIHRha2VzIDEgb3IgMyBhcmd1bWVudHMiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMwNCwxMCArMjMyMyw4IEBACiAgICAgfQogCiAgICAgLyogQ2hlY2sgYXJndW1lbnRzOiAobmFtZSwgYmFzZXMsIGRpY3QpICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyFPITp0eXBlLl9fbmV3X18iLCAmbmFtZSwgJlB5VHVwbGVfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJhc2VzLCAmUHlEaWN0X1R5cGUsICZvcmlnX2RpY3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIERldGVybWluZSB0aGUgcHJvcGVyIG1ldGF0eXBlIHRvIGRlYWwgd2l0aCB0aGlzOiAqLwpAQCAtMjU0NCw3ICsyNTYxLDcgQEAKICAgICB9CiAgICAgZXQtPmh0X3F1YWxuYW1lID0gcXVhbG5hbWUgPyBxdWFsbmFtZSA6IGV0LT5odF9uYW1lOwogICAgIFB5X0lOQ1JFRihldC0+aHRfcXVhbG5hbWUpOwotICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIFB5RGljdF9EZWxJdGVtKGRpY3QsIFB5SWRfX19xdWFsbmFtZV9fLm9iamVjdCkgPCAwKQorICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIF9QeURpY3RfRGVsSXRlbUlkKGRpY3QsICZQeUlkX19fcXVhbG5hbWVfXykgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2RvYyB0byBhIGNvcHkgb2YgZGljdFsnX19kb2NfXyddLCBpZiB0aGUgbGF0dGVyIGlzIHRoZXJlCkBAIC0yNTg3LDYgKzI2MDQsMjAgQEAKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCisgICAgLyogU3BlY2lhbC1jYXNlIF9faW5pdF9zdWJjbGFzc19fOiBpZiBpdCdzIGEgcGxhaW4gZnVuY3Rpb24sCisgICAgICAgbWFrZSBpdCBhIGNsYXNzbWV0aG9kICovCisgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIGlmICh0bXAgIT0gTlVMTCAmJiBQeUZ1bmN0aW9uX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgdG1wID0gUHlDbGFzc01ldGhvZF9OZXcodG1wKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19faW5pdF9zdWJjbGFzc19fLCB0bXApIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKwogICAgIC8qIEFkZCBkZXNjcmlwdG9ycyBmb3IgY3VzdG9tIHNsb3RzIGZyb20gX19zbG90c19fLCBvciBmb3IgX19kaWN0X18gKi8KICAgICBtcCA9IFB5SGVhcFR5cGVfR0VUX01FTUJFUlMoZXQpOwogICAgIHNsb3RvZmZzZXQgPSBiYXNlLT50cF9iYXNpY3NpemU7CkBAIC0yNjU2LDYgKzI2ODcsMTQgQEAKICAgICBlbHNlCiAgICAgICAgIHR5cGUtPnRwX2ZyZWUgPSBQeU9iamVjdF9EZWw7CiAKKyAgICAvKiBzdG9yZSB0eXBlIGluIGNsYXNzJyBjZWxsICovCisgICAgY2VsbCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fY2xhc3NjZWxsX18pOworICAgIGlmIChjZWxsICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKSB7CisgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgKFB5T2JqZWN0ICopIHR5cGUpOworICAgICAgICBfUHlEaWN0X0RlbEl0ZW1JZChkaWN0LCAmUHlJZF9fX2NsYXNzY2VsbF9fKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisKICAgICAvKiBJbml0aWFsaXplIHRoZSByZXN0ICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjY3LDYgKzI3MDYsMTIgQEAKICAgICAgICAgZXQtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKICAgICB9CiAKKyAgICBpZiAoc2V0X25hbWVzKHR5cGUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChpbml0X3N1YmNsYXNzKHR5cGUsIGt3ZHMpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdHlwZTsKIApAQCAtMjY3OCw3ICsyNzIzLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CitzdGF0aWMgY29uc3Qgc2hvcnQgc2xvdG9mZnNldHNbXSA9IHsKICAgICAtMSwgLyogaW52YWxpZCBzbG90ICovCiAjaW5jbHVkZSAidHlwZXNsb3RzLmluYyIKIH07CkBAIC0yODAzLDEzICsyODQ4LDE2IEBACiAgICAgLyogU2V0IHR5cGUuX19tb2R1bGVfXyAqLwogICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CiAgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICBpbnQgZXJyOwogICAgICAgICBtb2RuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpOwogICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgbW9kbmFtZSk7CisgICAgICAgIGVyciA9IF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIG1vZG5hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CisgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCiAgICAgICAgICAgICAgICAgImJ1aWx0aW4gdHlwZSAlLjIwMHMgaGFzIG5vIF9fbW9kdWxlX18gYXR0cmlidXRlIiwKQEAgLTM2MTEsNyArMzY1OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY2hhciogYXR0cikKK2NvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY29uc3QgY2hhciogYXR0cikKIHsKICAgICBQeVR5cGVPYmplY3QgKm5ld2Jhc2UsICpvbGRiYXNlOwogCkBAIC0zNzg3LDcgKzM4MzUsNyBAQAogICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeVR5cGVfR2V0U2xvdE5hbWVzKFB5VHlwZU9iamVjdCAqY2xzKQogewogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtMzg0MCw3ICszODg4LDcgQEAKICAgICByZXR1cm4gc2xvdG5hbWVzOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9HZXRTdGF0ZShQeU9iamVjdCAqb2JqLCBpbnQgcmVxdWlyZWQpCiB7CiAgICAgUHlPYmplY3QgKnN0YXRlOwpAQCAtMzg4Nyw2ICszOTM1LDI0IEBACiAgICAgICAgIH0KIAogICAgICAgICBhc3NlcnQoc2xvdG5hbWVzID09IFB5X05vbmUgfHwgUHlMaXN0X0NoZWNrKHNsb3RuYW1lcykpOworICAgICAgICBpZiAocmVxdWlyZWQpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgYmFzaWNzaXplID0gUHlCYXNlT2JqZWN0X1R5cGUudHBfYmFzaWNzaXplOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfZGljdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfd2Vha2xpc3RvZmZzZXQpCisgICAgICAgICAgICAgICAgYmFzaWNzaXplICs9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopICogUHlfU0laRShzbG90bmFtZXMpOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfYmFzaWNzaXplID4gYmFzaWNzaXplKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RuYW1lcyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcGlja2xlICUuMjAwcyBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSAmJiBQeV9TSVpFKHNsb3RuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2xvdHM7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHNsb3RuYW1lc19zaXplLCBpOwpAQCAtMzk0MSw3ICs0MDA3LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogSWYgd2UgZm91bmQgc29tZSBzbG90IGF0dHJpYnV0ZXMsIHBhY2sgdGhlbSBpbiBhIHR1cGxlIGFsb25nCi0gICAgICAgICAgICAgICB0aGUgb3JnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KKyAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KICAgICAgICAgICAgIGlmIChQeURpY3RfU2l6ZShzbG90cykgPiAwKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlMjsKIApAQCAtMzk2OCw3ICs0MDM0LDcgQEAKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIF9QeU9iamVjdF9HZXROZXdBcmd1bWVudHMoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKiphcmdzLCBQeU9iamVjdCAqKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqZ2V0bmV3YXJncywgKmdldG5ld2FyZ3NfZXg7CkBAIC00MDY0LDcgKzQxMzAsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBfUHlPYmplY3RfR2V0SXRlbXNJdGVyKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICoqbGlzdGl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmRpY3RpdGVtcykKIHsKQEAgLTQxMTAsNyArNDE3Niw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1yZWR1Y2VfbmV3b2JqKFB5T2JqZWN0ICpvYmosIGludCBwcm90bykKK3JlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtNDE2Myw3ICs0MjI5LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0KLSAgICBlbHNlIGlmIChwcm90byA+PSA0KSB7CisgICAgZWxzZSBpZiAoYXJncyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwogCiAgICAgICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfZXhfXyk7CkBAIC00MTgyLDEzICs0MjQ4LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVzdCB1c2UgcHJvdG9jb2wgNCBvciBncmVhdGVyIHRvIGNvcHkgdGhpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0OyBzaW5jZSBfX2dldG5ld2FyZ3NfZXhfXyByZXR1cm5lZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudHMuIik7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgLyogYXJncyA9PSBOVUxMICovCiAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwotICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQyMzYsNyArNDI5OCw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcsICpyZXM7CiAKICAgICBpZiAocHJvdG8gPj0gMikKLSAgICAgICAgcmV0dXJuIHJlZHVjZV9uZXdvYmooc2VsZiwgcHJvdG8pOworICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmKTsKIAogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmICghY29weXJlZykKQEAgLTQzMTksNiArNDM4MSwxOCBAQAogIm92ZXJyaWRlcyB0aGUgbm9ybWFsIGFsZ29yaXRobSAoYW5kIHRoZSBvdXRjb21lIGlzIGNhY2hlZCkuXG4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK29iamVjdF9pbml0X3N1YmNsYXNzKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihvYmplY3RfaW5pdF9zdWJjbGFzc19kb2MsCisiVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBjbGFzcyBpcyBzdWJjbGFzc2VkLlxuIgorIlxuIgorIlRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy4gSXQgbWF5IGJlXG4iCisib3ZlcnJpZGRlbiB0byBleHRlbmQgc3ViY2xhc3Nlcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X2Zvcm1hdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOwpAQCAtNDQxMiw2ICs0NDg2LDggQEAKICAgICAgUHlEb2NfU1RSKCJoZWxwZXIgZm9yIHBpY2tsZSIpfSwKICAgICB7Il9fc3ViY2xhc3Nob29rX18iLCBvYmplY3Rfc3ViY2xhc3Nob29rLCBNRVRIX0NMQVNTIHwgTUVUSF9WQVJBUkdTLAogICAgICBvYmplY3Rfc3ViY2xhc3Nob29rX2RvY30sCisgICAgeyJfX2luaXRfc3ViY2xhc3NfXyIsIG9iamVjdF9pbml0X3N1YmNsYXNzLCBNRVRIX0NMQVNTIHwgTUVUSF9OT0FSR1MsCisgICAgIG9iamVjdF9pbml0X3N1YmNsYXNzX2RvY30sCiAgICAgeyJfX2Zvcm1hdF9fIiwgb2JqZWN0X2Zvcm1hdCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImRlZmF1bHQgb2JqZWN0IGZvcm1hdHRlciIpfSwKICAgICB7Il9fc2l6ZW9mX18iLCBvYmplY3Rfc2l6ZW9mLCBNRVRIX05PQVJHUywKQEAgLTUzNjMsNyArNTQzOSw3IEBACiAvKiBIZWxwZXIgdG8gY2hlY2sgZm9yIG9iamVjdC5fX3NldGF0dHJfXyBvciBfX2RlbGF0dHJfXyBhcHBsaWVkIHRvIGEgdHlwZS4KICAgIFRoaXMgaXMgY2FsbGVkIHRoZSBDYXJsbyBWZXJyZSBoYWNrIGFmdGVyIGl0cyBkaXNjb3ZlcmVyLiAqLwogc3RhdGljIGludAotaGFja2NoZWNrKFB5T2JqZWN0ICpzZWxmLCBzZXRhdHRyb2Z1bmMgZnVuYywgY2hhciAqd2hhdCkKK2hhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNvbnN0IGNoYXIgKndoYXQpCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKICAgICB3aGlsZSAodHlwZSAmJiB0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCkBAIC01NjUwLDcgKzU3MjYsNyBAQAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYpIFwKIHsgXAogICAgIF9QeV9zdGF0aWNfc3RyaW5nKGlkLCBPUFNUUik7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCkiKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsIE5VTEwpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKQEAgLTU3NDMsNyArNTgxOSw3IEBACiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbGVuX18sICIoKSIpOworICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCBOVUxMKTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTU3NjQsMzggKzU4NDAsMzkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3NxX2l0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCiAgICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgJlB5SWRfX19nZXRpdGVtX18pOwotICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKChmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZ1bmMgPSBmKGZ1bmMsIHNlbGYsIChQeU9iamVjdCAqKShQeV9UWVBFKHNlbGYpKSk7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKLSAgICAgICAgaWYgKGl2YWwgIT0gTlVMTCkgewotICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgICAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgaXZhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpnZXRpdGVtX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBnZXRpdGVtX3N0cik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgIFB5X1hERUNSRUYoaXZhbCk7Ci0gICAgUHlfWERFQ1JFRihmdW5jKTsKKworICAgIGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQ7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7CisgICAgaWYgKGl2YWwgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBpdmFsKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgUHlfREVDUkVGKGl2YWwpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNTgxNywxOSArNTg5NCwyMCBAQAogc3RhdGljIGludAogc2xvdF9zcV9jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzLCAqYXJnczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKICAgICBpbnQgcmVzdWx0ID0gLTE7CiAgICAgX1B5X0lERU5USUZJRVIoX19jb250YWluc19fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19jb250YWluc19fKTsKKyAgICBpZiAoZnVuYyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgY29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXMgPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtNTkwMCw0NCArNTk3OCw1NCBAQAogc3RhdGljIGludAogc2xvdF9uYl9ib29sKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJnczsKLSAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlPYmplY3QgKmZ1bmMsICp2YWx1ZTsKKyAgICBpbnQgcmVzdWx0OwogICAgIGludCB1c2luZ19sZW4gPSAwOwogICAgIF9QeV9JREVOVElGSUVSKF9fYm9vbF9fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19ib29sX18pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fbGVuX18pOwotICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDE7CisgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICAgICAgdXNpbmdfbGVuID0gMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmICh0ZW1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICh1c2luZ19sZW4pIHsKLSAgICAgICAgICAgICAgICAvKiBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh0ZW1wKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Jvb2xfXyBzaG91bGQgcmV0dXJuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh0ZW1wKS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7Ci0gICAgICAgIH0KKworICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKworICAgIGlmICh1c2luZ19sZW4pIHsKKyAgICAgICAgLyogYm9vbCB0eXBlIGVuZm9yY2VkIGJ5IHNsb3RfbmJfbGVuICovCisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCisgICAgICAgICAgICAgICAgICAgICAiYm9vbCwgcmV0dXJuZWQgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgcmV0dXJuIC0xOwogfQogCiAKQEAgLTU5NDUsNyArNjAzMyw3IEBACiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewogICAgIF9QeV9JREVOVElGSUVSKF9faW5kZXhfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgTlVMTCk7CiB9CiAKIApAQCAtNjE4MiwyMCArNjI3MCwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncywgKnJlczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgb3RoZXIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJlcyA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICB9CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG90aGVyKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTYyMDcsMTYgKzYyODksMjAgQEAKICAgICBfUHlfSURFTlRJRklFUihfX2l0ZXJfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2l0ZXJfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYXJnczsKLSAgICAgICAgYXJncyA9IHJlcyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CisKICAgICBQeUVycl9DbGVhcigpOwogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC02MjMzLDcgKzYzMTksNyBAQAogc2xvdF90cF9pdGVybmV4dChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX25leHRfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCAiKCkiKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19uZXh0X18sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjMwMiwyOSArNjM4OCwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jOwotICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKLSAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXN1bHQ7CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9fX25ld19fKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwotICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuKzEpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih0eXBlKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKXR5cGUpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgeCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpKzEsIHgpOwogICAgIH0KLSAgICB4ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKGZ1bmMsIChQeU9iamVjdCAqKXR5cGUsIGFyZ3MsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICByZXR1cm4geDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjkyNyw2ICs3MDAwLDY0IEBACiAgICAgfQogfQogCisvKiBDYWxsIF9fc2V0X25hbWVfXyBvbiBhbGwgZGVzY3JpcHRvcnMgaW4gYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAorc2V0X25hbWVzKFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpzZXRfbmFtZSwgKnRtcDsKKyAgICBQeV9zc2l6ZV90IGkgPSAwOworCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KHR5cGUtPnRwX2RpY3QsICZpLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgIHNldF9uYW1lID0gbG9va3VwX21heWJlKHZhbHVlLCAmUHlJZF9fX3NldF9uYW1lX18pOworICAgICAgICBpZiAoc2V0X25hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZXRfbmFtZSwgdHlwZSwga2V5LCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXRfbmFtZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIkVycm9yIGNhbGxpbmcgX19zZXRfbmFtZV9fIG9uICclLjEwMHMnIGluc3RhbmNlICVSICIKKyAgICAgICAgICAgICAgICAgICAgImluICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUtPm9iX3R5cGUtPnRwX25hbWUsIGtleSwgdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENhbGwgX19pbml0X3N1YmNsYXNzX18gb24gdGhlIHBhcmVudCBvZiBhIG5ld2x5IGdlbmVyYXRlZCB0eXBlICovCitzdGF0aWMgaW50Citpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnN1cGVyLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqYXJnc1syXSA9IHsoUHlPYmplY3QgKil0eXBlLCAoUHlPYmplY3QgKil0eXBlfTsKKworICAgIHN1cGVyID0gX1B5T2JqZWN0X0Zhc3RDYWxsKChQeU9iamVjdCAqKSZQeVN1cGVyX1R5cGUsIGFyZ3MsIDIpOworICAgIGlmIChzdXBlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdXBlciwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIFB5X0RFQ1JFRihzdXBlcik7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIE5VTEwsIDAsIGt3ZHMpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiAwOworfQorCiAvKiByZWN1cnNlX2Rvd25fc3ViY2xhc3NlcygpIGFuZCB1cGRhdGVfc3ViY2xhc3NlcygpIGFyZSBtdXR1YWxseQogICAgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0byBjYWxsIGEgY2FsbGJhY2sgZm9yIGFsbCBzdWJjbGFzc2VzLAogICAgYnV0IHJlZnJhaW5pbmcgZnJvbSByZWN1cnNpbmcgaW50byBzdWJjbGFzc2VzIHRoYXQgZGVmaW5lICduYW1lJy4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKaW5kZXggMTU3MDVlMS4uZDVjY2ZiOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJ1Y25oYXNoLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTE2Miw2ICsxNjMsMTQgQEAKICAgICAgICAgICAgICpfdG8rKyA9ICh0b190eXBlKSAqX2l0ZXIrKzsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKIC8qIFRoaXMgZGljdGlvbmFyeSBob2xkcyBhbGwgaW50ZXJuZWQgdW5pY29kZSBzdHJpbmdzLiAgTm90ZSB0aGF0IHJlZmVyZW5jZXMKICAgIHRvIHN0cmluZ3MgaW4gdGhpcyBkaWN0aW9uYXJ5IGFyZSAqbm90KiBjb3VudGVkIGluIHRoZSBzdHJpbmcncyBvYl9yZWZjbnQuCiAgICBXaGVuIHRoZSBpbnRlcm5lZCBzdHJpbmcgcmVhY2hlcyBhIHJlZmNudCBvZiAwIHRoZSBzdHJpbmcgZGVhbGxvY2F0aW9uCkBAIC0xOTUsNyArMjA0LDcgQEAKICAgICB9IHdoaWxlICgwKQogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjaCk7CiAKIC8qIExpc3Qgb2Ygc3RhdGljIHN0cmluZ3MuICovCkBAIC0yNjMsNyArMjcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKIAogLyogU2FtZSBmb3IgbGluZWJyZWFrcyAqLwotc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaV9saW5lYnJlYWtbXSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogLyogICAgICAgICAweDAwMEEsICogTElORSBGRUVEICovCiAvKiAgICAgICAgIDB4MDAwQiwgKiBMSU5FIFRBQlVMQVRJT04gKi8KQEAgLTI5Miw2ICszMDEsNDUgQEAKIAogI2luY2x1ZGUgImNsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCIKIAordHlwZWRlZiBlbnVtIHsKKyAgICBfUHlfRVJST1JfVU5LTk9XTj0wLAorICAgIF9QeV9FUlJPUl9TVFJJQ1QsCisgICAgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRSwKKyAgICBfUHlfRVJST1JfUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfSUdOT1JFLAorICAgIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFLAorICAgIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTLAorICAgIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfT1RIRVIKK30gX1B5X2Vycm9yX2hhbmRsZXI7CisKK3N0YXRpYyBfUHlfZXJyb3JfaGFuZGxlcgorZ2V0X2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NUUklDVDsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfSUdOT1JFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgImJhY2tzbGFzaHJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVwYXNzIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NVUlJPR0FURVBBU1M7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U7CisgICAgfQorICAgIHJldHVybiBfUHlfRVJST1JfT1RIRVI7Cit9CisKIC8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgogICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCkBAIC01MjEsNiArNTY5LDEyOSBAQAogICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KHVuaWNvZGUpOwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yIGhhbmRsZXIgZm9yIDgtYml0IGVuY29kaW5nczoKKyAgIEFTQ0lJLCBMYXRpbjEsIFVURi04LCBldGMuICovCitzdGF0aWMgY2hhcioKK2JhY2tzbGFzaHJlcGxhY2UoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMHgxMDApCisgICAgICAgICAgICBpbmNyID0gMisyOworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICBpbmNyID0gMis4OworICAgICAgICB9CisgICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSArPSBpbmNyOworICAgIH0KKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAqc3RyKysgPSAnXFwnOworICAgICAgICBpZiAoY2ggPj0gMHgwMDAxMDAwMCkgeworICAgICAgICAgICAgKnN0cisrID0gJ1UnOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjgpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yNCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjIwKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTYpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDApIHsKKyAgICAgICAgICAgICpzdHIrKyA9ICd1JzsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjEyKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAqc3RyKysgPSAneCc7CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjQpJjB4Zl07CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1tjaCYweGZdOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgInhtbGNoYXJyZWZyZXBsYWNlIiBlcnJvciBoYW5kbGVyIGZvciA4LWJpdCBlbmNvZGluZ3M6CisgICBBU0NJSSwgTGF0aW4xLCBVVEYtOCwgZXRjLiAqLworc3RhdGljIGNoYXIqCit4bWxjaGFycmVmcmVwbGFjZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMTApCisgICAgICAgICAgICBpbmNyID0gMisxKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQorICAgICAgICAgICAgaW5jciA9IDIrMisxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCisgICAgICAgICAgICBpbmNyID0gMiszKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0KzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNSsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCisgICAgICAgICAgICBpbmNyID0gMis2KzE7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgIGluY3IgPSAyKzcrMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNpemUgKz0gaW5jcjsKKyAgICB9CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgfQorICAgIHJldHVybiBzdHI7Cit9CisKIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC01NDksNyArNzIwLDcgQEAKICAgICAoKGNoKSA8IDEyOFUgPyBhc2NpaV9saW5lYnJlYWtbKGNoKV0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKEJMT09NKGJsb29tX2xpbmVicmVhaywgKGNoKSkgJiYgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkpKQogCi1QeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykKK3N0YXRpYyBpbmxpbmUgQkxPT01fTUFTSwogbWFrZV9ibG9vbV9tYXNrKGludCBraW5kLCB2b2lkKiBwdHIsIFB5X3NzaXplX3QgbGVuKQogewogI2RlZmluZSBCTE9PTV9VUERBVEUoVFlQRSwgTUFTSywgUFRSLCBMRU4pICAgICAgICAgICAgIFwKQEAgLTU4Nyw2ICs3NTgsMTggQEAKICN1bmRlZiBCTE9PTV9VUERBVEUKIH0KIAorc3RhdGljIGludAorZW5zdXJlX3VuaWNvZGUoUHlPYmplY3QgKm9iaikKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX1JFQURZKG9iaik7Cit9CisKIC8qIENvbXBpbGF0aW9uIG9mIHRlbXBsYXRlZCByb3V0aW5lcyAqLwogCiAjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCkBAIC02NDMsMzEgKzgyNiwzMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpeHVwKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0ICgqZml4ZmN0KShQeU9iamVjdCAqcykpOwogCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIoY29uc3Qgdm9pZCAqcywgaW50IGtpbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKK2ZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAorICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAorICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBpbnQgbW9kZSA9IChkaXJlY3Rpb24gPT0gMSkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLQogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFB5X1VDUzEgY2gxID0gKFB5X1VDUzEpIGNoOwotICAgICAgICAgICAgaWYgKGNoMSA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9mYXN0c2VhcmNoKChQeV9VQ1MxICopIHMsIHNpemUsICZjaDEsIDEsIDAsIG1vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKFB5X1VDUzEpIGNoICE9IGNoKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmRfY2hhcigoUHlfVUNTMSAqKSBzLCBzaXplLCAoUHlfVUNTMSkgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9yZmluZF9jaGFyKChQeV9VQ1MxICopIHMsIHNpemUsIChQeV9VQ1MxKSBjaCk7CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKLSAgICAgICAgewotICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSAoUHlfVUNTMikgY2g7Ci0gICAgICAgICAgICBpZiAoY2gyID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2Zhc3RzZWFyY2goKFB5X1VDUzIgKikgcywgc2l6ZSwgJmNoMiwgMSwgMCwgbW9kZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CisgICAgICAgIGlmICgoUHlfVUNTMikgY2ggIT0gY2gpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZF9jaGFyKChQeV9VQ1MyICopIHMsIHNpemUsIChQeV9VQ1MyKSBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX3JmaW5kX2NoYXIoKFB5X1VDUzIgKikgcywgc2l6ZSwgKFB5X1VDUzIpIGNoKTsKICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgotICAgICAgICByZXR1cm4gdWNzNGxpYl9mYXN0c2VhcmNoKChQeV9VQ1M0ICopIHMsIHNpemUsICZjaCwgMSwgMCwgbW9kZSk7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfZmluZF9jaGFyKChQeV9VQ1M0ICopIHMsIHNpemUsIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfcmZpbmRfY2hhcigoUHlfVUNTNCAqKSBzLCBzaXplLCBjaCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICByZXR1cm4gLTE7CkBAIC04NjUsNyArMTA0OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgY29weV9sZW5ndGggPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOwogICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihjb3B5X2xlbmd0aCwgbGVuZ3RoKTsKLSAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAorICAgICAgICBtZW1jcHkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICBjb3B5X2xlbmd0aCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiB3OwogICAgIH0KQEAgLTEyNTIsNyArMTQzNSw3IEBACiAgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBQeV9NRU1DUFkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCisgICAgICAgIG1lbWNweSgoY2hhciopdG9fZGF0YSArIHRvX2tpbmQgKiB0b19zdGFydCwKICAgICAgICAgICAgICAgICAgIChjaGFyKilmcm9tX2RhdGEgKyBmcm9tX2tpbmQgKiBmcm9tX3N0YXJ0LAogICAgICAgICAgICAgICAgICAgdG9fa2luZCAqIGhvd19tYW55KTsKICAgICB9CkBAIC0xODQ1LDcgKzIwMjgsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgogI2lmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0gICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDIpOworICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKICNlbHNlCiAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VTklDT0RFLCBQeV9VQ1MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSkpOwpAQCAtMTg1OCw3ICsyMDQxLDcgQEAKICAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQodSwgdSArIHNpemUsIHVuaWNvZGUpOwogI2Vsc2UKICAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOwotICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE5NjAsNyArMjE0Myw3IEBACiAgICAgfQogfQogCi1QeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK3N0YXRpYyBpbmxpbmUgUHlfVUNTNAogYWxpZ25fbWF4Y2hhcihQeV9VQ1M0IG1heGNoYXIpCiB7CiAgICAgaWYgKG1heGNoYXIgPD0gMTI3KQpAQCAtMjE2OSw3ICsyMzUyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGNvcHkpID09IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKIAotICAgIFB5X01FTUNQWShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgbWVtY3B5KFB5VW5pY29kZV9EQVRBKGNvcHkpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAgbGVuZ3RoICogUHlVbmljb2RlX0tJTkQodW5pY29kZSkpOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koY29weSwgMSkpOwogICAgIHJldHVybiBjb3B5OwpAQCAtMjI3NSw3ICsyNDU4LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgUHlfTUVNQ1BZKHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgbWVtY3B5KHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICB9CiAgICAgaWYgKGNvcHlfbnVsbCkKICAgICAgICAgdGFyZ2V0W2xlbl0gPSAwOwpAQCAtMjQ1OCwxMyArMjY0MSwxMSBAQAogICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwogICAgICAgICAgICAgKytmOwogICAgICAgICB9Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnIHx8IGZbMl0gPT0gJ2knKSkgewogICAgICAgICAgICAgbG9uZ2xvbmdmbGFnID0gMTsKICAgICAgICAgICAgIGYgKz0gMjsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCiAgICAgZWxzZSBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JyB8fCBmWzFdID09ICdpJykpIHsKQEAgLTI1MDIsMTEgKzI2ODMsOSBAQAogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWx1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAidSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxsdSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nIGxvbmcpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHNpemVfdCkpOwpAQCAtMjUyMSwxMSArMjcwMCw5IEBACiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfTE9OR19MT05HICJpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGxpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcgbG9uZykpOwogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUHlfc3NpemVfdCkpOwpAQCAtMjcwMSw5ICsyODc4LDggQEAKICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHN0cmxlbihmb3JtYXQpICsgMTAwOwogICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgLyogdmFfbGlzdCBtYXkgYmUgYW4gYXJyYXkgKG9mIDEgaXRlbSkgb24gc29tZSBwbGF0Zm9ybXMgKGV4OiBBTUQ2NCkuCi0gICAgICAgQ29weSBpdCB0byBiZSBhYmxlIHRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYSBzdWJmdW5jdGlvbi4gKi8KLSAgICBQeV9WQV9DT1BZKHZhcmdzMiwgdmFyZ3MpOworICAgIC8vIENvcHkgdmFyYWdzIHRvIGJlIGFibGUgdG8gcGFzcyBhIHJlZmVyZW5jZSB0byBhIHN1YmZ1bmN0aW9uLgorICAgIHZhX2NvcHkodmFyZ3MyLCB2YXJncyk7CiAKICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyApIHsKICAgICAgICAgaWYgKCpmID09ICclJykgewpAQCAtMjczOSw5ICsyOTE1LDExIEBACiAgICAgICAgICAgICBmID0gcDsKICAgICAgICAgfQogICAgIH0KKyAgICB2YV9lbmQodmFyZ3MyKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgZmFpbDoKKyAgICB2YV9lbmQodmFyZ3MyKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC0yNzkwLDcgKzI5NjgsNyBAQAogICAgICAgICAgICAgc2l6ZSA9IHJlcyArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IHNpemU7Ci0gICAgICAgIFB5X01FTUNQWSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgbWVtY3B5KHcsIHdzdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlCkBAIC0yOTA3LDcgKzMwODUsNyBAQAogICAgIC8qIFJldHJpZXZlIGEgYnl0ZXMgYnVmZmVyIHZpZXcgdGhyb3VnaCB0aGUgUEVQIDMxMTggYnVmZmVyIGludGVyZmFjZSAqLwogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmYnVmZmVyLCBQeUJVRl9TSU1QTEUpIDwgMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNvZXJjaW5nIHRvIHN0cjogbmVlZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAlLjgwcyBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAiZGVjb2RpbmcgdG8gc3RyOiBuZWVkIGEgYnl0ZXMtbGlrZSBvYmplY3QsICUuODBzIGZvdW5kIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI5MjIsOSArMzEwMCw5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLS8qIENvbnZlcnQgZW5jb2RpbmcgdG8gbG93ZXIgY2FzZSBhbmQgcmVwbGFjZSAnXycgd2l0aCAnLScgaW4gb3JkZXIgdG8KLSAgIGNhdGNoIGUuZy4gVVRGXzguIFJldHVybiAwIG9uIGVycm9yIChlbmNvZGluZyBpcyBsb25nZXIgdGhhbiBsb3dlcl9sZW4tMSksCi0gICAxIG9uIHN1Y2Nlc3MuICovCisvKiBOb3JtYWxpemUgYW4gZW5jb2RpbmcgbmFtZTogc2ltaWxhciB0byBlbmNvZGluZ3Mubm9ybWFsaXplX2VuY29kaW5nKCksIGJ1dAorICAgYWxzbyBjb252ZXJ0IHRvIGxvd2VyY2FzZS4gUmV0dXJuIDEgb24gc3VjY2Vzcywgb3IgMCBvbiBlcnJvciAoZW5jb2RpbmcgaXMKKyAgIGxvbmdlciB0aGFuIGxvd2VyX2xlbi0xKS4gKi8KIGludAogX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbG93ZXIsCkBAIC0yOTMzLDMwICszMTExLDM5IEBACiAgICAgY29uc3QgY2hhciAqZTsKICAgICBjaGFyICpsOwogICAgIGNoYXIgKmxfZW5kOworICAgIGludCBwdW5jdDsKIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIDYgPT0gc3RybGVuKCJ1dGYtOCIpICsgMSAqLwotICAgICAgICBpZiAobG93ZXJfbGVuIDwgNikKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBzdHJjcHkobG93ZXIsICJ1dGYtOCIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9CisgICAgYXNzZXJ0KGVuY29kaW5nICE9IE5VTEwpOworCiAgICAgZSA9IGVuY29kaW5nOwogICAgIGwgPSBsb3dlcjsKICAgICBsX2VuZCA9ICZsb3dlcltsb3dlcl9sZW4gLSAxXTsKLSAgICB3aGlsZSAoKmUpIHsKLSAgICAgICAgaWYgKGwgPT0gbF9lbmQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoKmUpKSB7Ci0gICAgICAgICAgICAqbCsrID0gUHlfVE9MT1dFUigqZSsrKTsKKyAgICBwdW5jdCA9IDA7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgY2hhciBjID0gKmU7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCplID09ICdfJykgewotICAgICAgICAgICAgKmwrKyA9ICctJzsKLSAgICAgICAgICAgIGUrKzsKKworICAgICAgICBpZiAoUHlfSVNBTE5VTShjKSB8fCBjID09ICcuJykgeworICAgICAgICAgICAgaWYgKHB1bmN0ICYmIGwgIT0gbG93ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobCA9PSBsX2VuZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKmwrKyA9ICdfJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1bmN0ID0gMDsKKworICAgICAgICAgICAgaWYgKGwgPT0gbF9lbmQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpsKysgPSBQeV9UT0xPV0VSKGMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgKmwrKyA9ICplKys7CisgICAgICAgICAgICBwdW5jdCA9IDE7CiAgICAgICAgIH0KKworICAgICAgICBlKys7CiAgICAgfQogICAgICpsID0gJ1wwJzsKICAgICByZXR1cm4gMTsKQEAgLTI5NzAsMjggKzMxNTcsNTEgQEAKIHsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTCwgKnVuaWNvZGU7CiAgICAgUHlfYnVmZmVyIGluZm87Ci0gICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLworICAgIGNoYXIgYnVmbG93ZXJbMTFdOyAgIC8qIHN0cmxlbigiaXNvLTg4NTktMVwwIikgPT0gMTEsIGxvbmdlc3Qgc2hvcnRjdXQgKi8KKworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CisgICAgfQogCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KLSAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAotICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7Ci0gICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzbzg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKLSNlbmRpZgotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHMsIHNpemUsIGVycm9ycyk7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgInV0Zi0xNiIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjE2KHMsIHNpemUsIGVycm9ycywgMCk7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgInV0Zi0zMiIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjMyKHMsIHNpemUsIGVycm9ycywgMCk7CisgICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGJ1Zmxvd2VyLCBzaXplb2YoYnVmbG93ZXIpKSkgeworICAgICAgICBjaGFyICpsb3dlciA9IGJ1Zmxvd2VyOworCisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGxvd2VyWzBdID09ICd1JyAmJiBsb3dlclsxXSA9PSAndCcgJiYgbG93ZXJbMl0gPT0gJ2YnKSB7CisgICAgICAgICAgICBsb3dlciArPSAzOworICAgICAgICAgICAgaWYgKCpsb3dlciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAvKiBNYXRjaCAidXRmOCIgYW5kICJ1dGZfOCIgKi8KKyAgICAgICAgICAgICAgICBsb3dlcisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobG93ZXJbMF0gPT0gJzgnICYmIGxvd2VyWzFdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzEnICYmIGxvd2VyWzFdID09ICc2JyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNihzLCBzaXplLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzMnICYmIGxvd2VyWzFdID09ICcyJyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYzMihzLCBzaXplLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMAorICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgInVzX2FzY2lpIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlQVNDSUkocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAjZW5kaWYKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImxhdGluXzEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJpc29fODg1OV8xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAiaXNvODg1OV8xIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBEZWNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwpAQCAtMzAzMSw2ICszMjQxLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoKSBpcyBkZXByZWNhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAidXNlIFB5Q29kZWNfRGVjb2RlKCkgdG8gZGVjb2RlIGZyb20gc3RyIiwgMSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIApAQCAtMzA1MCw2ICszMjY1LDExIEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSgpIGlzIGRlcHJlY2F0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICJ1c2UgUHlDb2RlY19EZWNvZGUoKSB0byBkZWNvZGUgZnJvbSBzdHIgdG8gc3RyIiwgMSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIApAQCAtMzEwMCw2ICszMzIwLDEyIEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KCkgaXMgZGVwcmVjYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgInVzZSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgdG8gZW5jb2RlIGZyb20gc3RyIHRvIGJ5dGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJvciBQeUNvZGVjX0VuY29kZSgpIGZvciBnZW5lcmljIGVuY29kaW5nIiwgMSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIApAQCAtMzE2MywyNCArMzM4OSwyMiBAQAogc3RhdGljIGludAogbG9jYWxlX2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKnN1cnJvZ2F0ZWVzY2FwZSkKIHsKLSAgICBpZiAoZXJyb3JzID09IE5VTEwpIHsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKyAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgeworICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7CiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgewotICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlZXNjYXBlIikgPT0gMCkgeworICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKICAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDE7CiAgICAgICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKKyAgICAgICAgICAgICAgICAgICAgICJhcmUgc3VwcG9ydGVkLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAib25seSAnc3RyaWN0JyBhbmQgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcnMgIgotICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCwgbm90ICclcyciLAotICAgICAgICAgICAgICAgICBlcnJvcnMpOwotICAgIHJldHVybiAtMTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMzI5NiwxMCArMzUyMCw4IEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogewotI2lmZGVmIEhBVkVfTUJDUwotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0zMzE0LDEwICszNTM2LDEwIEBACiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0zMzI4LDM0ICszNTUwLDU2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKLSAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCisgICAgY2hhciBidWZsb3dlclsxMV07ICAgLyogc3RybGVuKCJpc29fODg1OV8xXDAiKSA9PSAxMSwgbG9uZ2VzdCBzaG9ydGN1dCAqLwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgfQorCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KLSAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAotICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgYnVmbG93ZXIsIHNpemVvZihidWZsb3dlcikpKSB7CisgICAgICAgIGNoYXIgKmxvd2VyID0gYnVmbG93ZXI7CisKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAobG93ZXJbMF0gPT0gJ3UnICYmIGxvd2VyWzFdID09ICd0JyAmJiBsb3dlclsyXSA9PSAnZicpIHsKKyAgICAgICAgICAgIGxvd2VyICs9IDM7CisgICAgICAgICAgICBpZiAoKmxvd2VyID09ICdfJykgeworICAgICAgICAgICAgICAgIC8qIE1hdGNoICJ1dGY4IiBhbmQgInV0Zl84IiAqLworICAgICAgICAgICAgICAgIGxvd2VyKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsb3dlclswXSA9PSAnOCcgJiYgbG93ZXJbMV0gPT0gMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzEnICYmIGxvd2VyWzFdID09ICc2JyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodW5pY29kZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICczJyAmJiBsb3dlclsxXSA9PSAnMicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHVuaWNvZGUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvODg1OS0xIikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOwotI2lmZGVmIEhBVkVfTUJDUwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBlcnJvcnMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDAKKyAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJ1c19hc2NpaSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJsYXRpbl8xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAiaXNvXzg4NTlfMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImlzbzg4NTlfMSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRW5jb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KQEAgLTM0MDcsNiArMzY1MSwxMSBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoKSBpcyBkZXByZWNhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAidXNlIFB5Q29kZWNfRW5jb2RlKCkgdG8gZW5jb2RlIGZyb20gc3RyIHRvIHN0ciIsIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKQEAgLTM1ODAsMTAgKzM4MjksOCBAQAogUHlPYmplY3QqCiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIE5VTEwpOwotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIsIE5VTEwpOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzLCBOVUxMKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0zNTk4LDEwICszODQ1LDEwIEBACiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlKHMsIHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTM2MTAsNiArMzg1Nyw3IEBACiBpbnQKIFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogeworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTM2MTgsMjQgKzM4NjYsMjIgQEAKICAgICAgICAgKihQeU9iamVjdCoqKWFkZHIgPSBOVUxMOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewotICAgICAgICBvdXRwdXQgPSBhcmc7Ci0gICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOworICAgIHBhdGggPSBQeU9TX0ZTUGF0aChhcmcpOworICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBhcmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChhcmcpOwotICAgICAgICBpZiAoIWFyZykKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZyk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmcpOwotICAgICAgICBpZiAoIW91dHB1dCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sob3V0cHV0KSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2RlciBmYWlsZWQgdG8gcmV0dXJuIGJ5dGVzIik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgb3V0cHV0ID0gcGF0aDsKKyAgICB9CisgICAgZWxzZSB7ICAvLyBQeU9TX0ZTUGF0aCgpIGd1YXJhbnRlZXMgaXRzIHJldHVybmVkIHZhbHVlIGlzIGJ5dGVzIG9yIHN0ci4KKyAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBpZiAoIW91dHB1dCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sob3V0cHV0KSk7CiAgICAgfQorCiAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUob3V0cHV0KTsKICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcob3V0cHV0KTsKICAgICBpZiAoKHNpemVfdClzaXplICE9IHN0cmxlbihkYXRhKSkgewpAQCAtMzY1MSwzNiArMzg5Nyw2MCBAQAogaW50CiBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CisgICAgaW50IGlzX2J1ZmZlciA9IDA7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwogICAgIGlmIChhcmcgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoKihQeU9iamVjdCoqKWFkZHIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA9PSAtMSkKKworICAgIGlzX2J1ZmZlciA9IFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZyk7CisgICAgaWYgKCFpc19idWZmZXIpIHsKKyAgICAgICAgcGF0aCA9IFB5T1NfRlNQYXRoKGFyZyk7CisgICAgICAgIGlmIChwYXRoID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBhcmc7Ci0gICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZykpIHsKLSAgICAgICAgYXJnID0gUHlCeXRlc19Gcm9tT2JqZWN0KGFyZyk7Ci0gICAgICAgIGlmICghYXJnKQorICAgIGVsc2UgeworICAgICAgICBwYXRoID0gYXJnOworICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShQeUJ5dGVzX0FTX1NUUklORyhhcmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGFyZykpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICAgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0ID0gcGF0aDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhwYXRoKSB8fCBpc19idWZmZXIpIHsKKyAgICAgICAgUHlPYmplY3QgKnBhdGhfYnl0ZXMgPSBOVUxMOworCisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhwYXRoKSAmJgorICAgICAgICAgICAgUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgUHlfVFlQRShhcmcpLT50cF9uYW1lKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvdXRwdXQpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJkZWNvZGVyIGZhaWxlZCB0byByZXR1cm4gdW5pY29kZSIpOworICAgICAgICB9CisgICAgICAgIHBhdGhfYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3QocGF0aCk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgaWYgKCFwYXRoX2J5dGVzKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShQeUJ5dGVzX0FTX1NUUklORyhwYXRoX2J5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShwYXRoX2J5dGVzKSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoX2J5dGVzKTsKKyAgICAgICAgaWYgKCFvdXRwdXQpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZyBvciBieXRlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmcpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKSB7CkBAIC0zNzEyLDcgKzM5ODIsNyBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpIHsKICAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSk7Ci0gICAgICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN0cmljdCIpOworICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoUHlCeXRlc19HRVRfU0laRShieXRlcykgKyAxKTsKQEAgLTM3MjIsNyArMzk5Miw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgIG1lbWNweShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCiAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpICsgMSk7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CkBAIC0zOTYyLDcgKzQyMzIsNyBAQAogICAgIFB5X0NMRUFSKCpleGNlcHRpb25PYmplY3QpOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogLyogZXJyb3IgaGFuZGxpbmcgY2FsbGJhY2sgaGVscGVyOgogICAgYnVpbGQgYXJndW1lbnRzLCBjYWxsIHRoZSBjYWxsYmFjayBhbmQgY2hlY2sgdGhlIGFyZ3VtZW50cywKICAgIGlmIG5vIGV4Y2VwdGlvbiBvY2N1cnJlZCwgY29weSB0aGUgcmVwbGFjZW1lbnQgdG8gdGhlIG91dHB1dApAQCAtMzk3OCw3ICs0MjQ4LDcgQEAKICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKICAgICBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKQEAgLTQwNzYsNyArNDM0Niw3IEBACiAgICAgUHlfWERFQ1JFRihyZXN0dXBsZSk7CiAgICAgcmV0dXJuIC0xOwogfQotI2VuZGlmICAgLyogSEFWRV9NQkNTICovCisjZW5kaWYgICAvKiBNU19XSU5ET1dTICovCiAKIHN0YXRpYyBpbnQKIHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKQEAgLTQwODYsNyArNDM1Niw3IEBACiAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCiAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyIC8qIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MgKi8pCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOwpAQCAtNDY5Miw4ICs0OTYyLDkgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKIAogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgaWYgKGNvbnN1bWVkKQpAQCAtNDcxOCw2ICs0OTg5LDcgQEAKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQga2luZCA9IHdyaXRlci5raW5kOworCiAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHdyaXRlci5idWZmZXIpKQogICAgICAgICAgICAgICAgIGNoID0gYXNjaWlsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwgd3JpdGVyLmRhdGEsICZ3cml0ZXIucG9zKTsKQEAgLTQ3NTYsMjQgKzUwMjgsNTYgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgInV0Zi04IiwgZXJybXNnLAotICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikgeworICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAweGZmZmQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCZ3cml0ZXIsIFB5VW5pY29kZV8yQllURV9LSU5EKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgZm9yIChpPXN0YXJ0aW5wb3M7IGk8ZW5kaW5wb3M7IGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gKFB5X1VDUzQpKHVuc2lnbmVkIGNoYXIpKHN0YXJ0c1tpXSk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggKyAweGRjMDApOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMgKz0gKGVuZGlucG9zIC0gc3RhcnRpbnBvcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKKyAgICAgICAgICAgICAgICAgICAgInV0Zi04IiwgZXJybXNnLAorICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CiAgICAgfQogCiBFbmQ6CiAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAqY29uc3VtZWQgPSBzIC0gc3RhcnRzOwogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDY1LDcgKzUzNjksNyBAQAogICAgIGNvbnN0IHZvaWQgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUFlfVUlOVDMyX1QgKm91dDsKKyAgICB1aW50MzJfdCAqb3V0OwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CiAjZWxzZQpAQCAtNTA5Niw3ICs1NDAwLDcgQEAKIAogICAgIC8qIG91dHB1dCBidWZmZXIgaXMgNC1ieXRlcyBhbGlnbmVkICovCiAgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCA0KSk7Ci0gICAgb3V0ID0gKFBZX1VJTlQzMl9UICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgb3V0ID0gKHVpbnQzMl90ICopUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQogICAgICAgICAqb3V0KysgPSAweEZFRkY7CiAgICAgaWYgKGxlbiA9PSAwKQpAQCAtNTE2Miw3ICs1NDY2LDcgQEAKIAogICAgICAgICAvKiBmb3VyIGJ5dGVzIGFyZSByZXNlcnZlZCBmb3IgZWFjaCBzdXJyb2dhdGUgKi8KICAgICAgICAgaWYgKG1vcmV1bml0cyA+IDEpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IG91dCAtICh1aW50MzJfdCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgICAgICAgICAgUHlfc3NpemVfdCBtb3JlYnl0ZXMgPSA0ICogKG1vcmV1bml0cyAtIDEpOwogICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodikgPiBQWV9TU0laRV9UX01BWCAtIG1vcmVieXRlcykgewogICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTUxNzEsMTEgKzU0NzUsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIFB5Qnl0ZXNfR0VUX1NJWkUodikgKyBtb3JlYnl0ZXMpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgb3V0ID0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CisgICAgICAgICAgICBvdXQgPSAodWludDMyX3QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTQyNiwzNiArNTczMCw0NSBAQAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKSB7CiAgICAgICAgIGNvbnN0IFB5X1VDUzQgKmluID0gKGNvbnN0IFB5X1VDUzQgKilkYXRhOwogICAgICAgICBjb25zdCBQeV9VQ1M0ICplbmQgPSBpbiArIGxlbjsKLSAgICAgICAgd2hpbGUgKGluIDwgZW5kKQotICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApCisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICBwYWlycysrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMiAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CiAgICAgbnNpemUgPSBsZW4gKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCk7CiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiAyKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyAyLWJ5dGVzIGFsaWduZWQgKi8KICAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDIpKTsKICAgICBvdXQgPSAodW5zaWduZWQgc2hvcnQgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBpZiAoYnl0ZW9yZGVyID09IDApCisgICAgaWYgKGJ5dGVvcmRlciA9PSAwKSB7CiAgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKLSAgICBpZiAobGVuID09IDApCisgICAgfQorICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBnb3RvIGRvbmU7CisgICAgfQogCiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgdWNzMWxpYl91dGYxNl9lbmNvZGUoKGNvbnN0IFB5X1VDUzEgKilkYXRhLCBsZW4sICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBpZiAoYnl0ZW9yZGVyIDwgMCkKKyAgICBpZiAoYnl0ZW9yZGVyIDwgMCkgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYtbGUiOwotICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApCisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWJlIjsKLSAgICBlbHNlCisgICAgfQorICAgIGVsc2UgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYiOworICAgIH0KIAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKHBvcyA8IGxlbikgewpAQCAtNTUxOCw3ICs1ODMxLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTU3MSwyODEgKzU4ODQsMjI4IEBACiAKIC8qIC0tLSBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlLCBkZXRlcm1pbmVzCi0gICBpZiBhbGwgdGhlIGVzY2FwZXMgaW4gdGhlIHN0cmluZyBtYWtlIGl0IHN0aWxsIGEgdmFsaWQgQVNDSUkgc3RyaW5nLgotICAgUmV0dXJucyAtMSBpZiBhbnkgZXNjYXBlcyB3ZXJlIGZvdW5kIHdoaWNoIGNhdXNlIHRoZSBzdHJpbmcgdG8KLSAgIHBvcCBvdXQgb2YgQVNDSUkgcmFuZ2UuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZQotICAgcmVxdWlyZWQgYnVmZmVyIHRvIGhvbGQgdGhlIHN0cmluZy4KLSAgICovCi1zdGF0aWMgUHlfc3NpemVfdAotbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBzaXplOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKLQotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgZm9yICg7IHAgPCBlbmQ7ICsrcCkgewotICAgICAgICBpZiAoKnAgPiAxMjcpIHsKLSAgICAgICAgICAgIC8qIE5vbi1BU0NJSSAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCpwICE9ICdcXCcpIHsKLSAgICAgICAgICAgIC8qIE5vcm1hbCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICsrbGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogQmFja3NsYXNoLWVzY2FwZSwgY2hlY2sgbmV4dCBjaGFyICovCi0gICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAvKiBFc2NhcGUgc2VxdWVuY2UgcmVhY2hlcyB0aWxsIGVuZCBvZiBzdHJpbmcgb3IKLSAgICAgICAgICAgICAgIG5vbi1BU0NJSSBmb2xsb3ctdXAuICovCi0gICAgICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgPiAxMjcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgc3dpdGNoICgqcCkgewotICAgICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIC8qIGJhY2tzbGFzaCArIFxuIHJlc3VsdCBpbiB6ZXJvIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXCcnOiBjYXNlICdcIic6Ci0gICAgICAgICAgICBjYXNlICdiJzogY2FzZSAnZic6IGNhc2UgJ3QnOgotICAgICAgICAgICAgY2FzZSAnbic6IGNhc2UgJ3InOiBjYXNlICd2JzogY2FzZSAnYSc6Ci0gICAgICAgICAgICAgICAgKytsZW5ndGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKLSAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgY2FzZSAneCc6IGNhc2UgJ3UnOiBjYXNlICdVJzogY2FzZSAnTic6Ci0gICAgICAgICAgICAgICAgLyogdGhlc2UgZG8gbm90IGd1YXJhbnRlZSBBU0NJSSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBjb3VudCB0aGUgYmFja3NsYXNoICsgdGhlIG90aGVyIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgICAgIGxlbmd0aCArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KIHN0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKIAogUHlPYmplY3QgKgotUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK19QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmZpcnN0X2ludmFsaWRfZXNjYXBlKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7Ci0gICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwotICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CiAgICAgY29uc3QgY2hhciAqZW5kOwotICAgIGNoYXIqIG1lc3NhZ2U7Ci0gICAgUHlfVUNTNCBjaHIgPSAweGZmZmZmZmZmOyAvKiBpbiBjYXNlICdnZXRjb2RlJyBtZXNzZXMgdXAgKi8KICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKIAotICAgIGxlbiA9IGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhzLCBzaXplKTsKLSAgICBpZiAobGVuID09IDApCisgICAgLy8gc28gd2UgY2FuIHJlbWVtYmVyIGlmIHdlJ3ZlIHNlZW4gYW4gaW52YWxpZCBlc2NhcGUgY2hhciBvciBub3QKKyAgICAqZmlyc3RfaW52YWxpZF9lc2NhcGUgPSBOVUxMOworCisgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKLQotICAgIC8qIEFmdGVyIGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZygpIHRoZXJlIGFyZSB0d28gYWx0ZXJuYXRpdmVzLAotICAgICAgIGVpdGhlciB0aGUgc3RyaW5nIGlzIHB1cmUgQVNDSUkgd2l0aCBuYW1lZCBlc2NhcGVzIGxpa2UgXG4sIGV0Yy4KLSAgICAgICBhbmQgd2UgZGV0ZXJtaW5lZCBpdCdzIGV4YWN0IHNpemUgKGNvbW1vbiBjYXNlKQotICAgICAgIG9yIGl0IGNvbnRhaW5zIFx4LCBcdSwgLi4uIGVzY2FwZSBzZXF1ZW5jZXMuICB0aGVuIHdlIGNyZWF0ZSBhCi0gICAgICAgbGVnYWN5IHdjaGFyIHN0cmluZyBhbmQgcmVzaXplIGl0IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4gKi8KKyAgICB9CisgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKKyAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQorICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgorICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZworICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KICAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlcik7Ci0gICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBsZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwotICAgICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQotICAgICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KLSAgICAgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCi0gICAgICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KLSAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPCAwKSB7CisgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAgICAgZW5kID0gcyArIHNpemU7Ci0KICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VDUzQgeDsKLSAgICAgICAgaW50IGRpZ2l0czsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIFB5X1VDUzQgY2g7CisgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOworICAgICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOworICAgICAgICBjb25zdCBjaGFyICptZXNzYWdlOworCisjZGVmaW5lIFdSSVRFX0FTQ0lJX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IDEyNyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7ICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgV1JJVEVfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBpZiAoY2ggPD0gd3JpdGVyLm1heGNoYXIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcysrLCBjaCk7IFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCBjaCkgPCAwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KLSAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgIHggPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoYyAhPSAnXFwnKSB7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzIC0gMTsKICAgICAgICAgLyogXCAtIEVzY2FwZXMgKi8KLSAgICAgICAgcysrOwotICAgICAgICBjID0gKnMrKzsKLSAgICAgICAgaWYgKHMgPiBlbmQpCi0gICAgICAgICAgICBjID0gJ1wwJzsgLyogSW52YWxpZCBhZnRlciBcICovCisgICAgICAgIGlmIChzID49IGVuZCkgeworICAgICAgICAgICAgbWVzc2FnZSA9ICJcXCBhdCBlbmQgb2Ygc3RyaW5nIjsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOwogCisgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOwogICAgICAgICBzd2l0Y2ggKGMpIHsKIAogICAgICAgICAgICAgLyogXHggZXNjYXBlcyAqLwotI2RlZmluZSBXUklURUNIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAoY2gpKSA8IDApICAgIFwKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gd2hpbGUoMCkKLQotICAgICAgICBjYXNlICdcbic6IGJyZWFrOwotICAgICAgICBjYXNlICdcXCc6IFdSSVRFQ0hBUignXFwnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1wnJzogV1JJVEVDSEFSKCdcJycpOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCInOiBXUklURUNIQVIoJ1wiJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdiJzogV1JJVEVDSEFSKCdcYicpOyBicmVhazsKKyAgICAgICAgY2FzZSAnXG4nOiBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXFwnOiBXUklURV9BU0NJSV9DSEFSKCdcXCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCcnOiBXUklURV9BU0NJSV9DSEFSKCdcJycpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnXCInOiBXUklURV9BU0NJSV9DSEFSKCdcIicpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAnYic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xiJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBGRiAqLwotICAgICAgICBjYXNlICdmJzogV1JJVEVDSEFSKCdcMDE0Jyk7IGJyZWFrOwotICAgICAgICBjYXNlICd0JzogV1JJVEVDSEFSKCdcdCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAnbic6IFdSSVRFQ0hBUignXG4nKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3InOiBXUklURUNIQVIoJ1xyJyk7IGJyZWFrOworICAgICAgICBjYXNlICdmJzogV1JJVEVfQVNDSUlfQ0hBUignXDAxNCcpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAndCc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1x0Jyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICduJzogV1JJVEVfQVNDSUlfQ0hBUignXG4nKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ3InOiBXUklURV9BU0NJSV9DSEFSKCdccicpOyBjb250aW51ZTsKICAgICAgICAgLyogVlQgKi8KLSAgICAgICAgY2FzZSAndic6IFdSSVRFQ0hBUignXDAxMycpOyBicmVhazsKKyAgICAgICAgY2FzZSAndic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wwMTMnKTsgY29udGludWU7CiAgICAgICAgIC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLwotICAgICAgICBjYXNlICdhJzogV1JJVEVDSEFSKCdcMDA3Jyk7IGJyZWFrOworICAgICAgICBjYXNlICdhJzogV1JJVEVfQVNDSUlfQ0hBUignXDAwNycpOyBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogXE9PTyAob2N0YWwpIGVzY2FwZXMgKi8KICAgICAgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6CiAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgeCA9IHNbLTFdIC0gJzAnOworICAgICAgICAgICAgY2ggPSBjIC0gJzAnOwogICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgewotICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOwotICAgICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmICcwJyA8PSAqcyAmJiAqcyA8PSAnNycpCi0gICAgICAgICAgICAgICAgICAgIHggPSAoeDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIGNoID0gKGNoPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IChjaDw8MykgKyAqcysrIC0gJzAnOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFdSSVRFQ0hBUih4KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLyogaGV4IGVzY2FwZXMgKi8KICAgICAgICAgICAgIC8qIFx4WFggKi8KICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBkaWdpdHMgPSAyOworICAgICAgICAgICAgY291bnQgPSAyOwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx4WFggZXNjYXBlIjsKICAgICAgICAgICAgIGdvdG8gaGV4ZXNjYXBlOwogCiAgICAgICAgICAgICAvKiBcdVhYWFggKi8KICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA0OworICAgICAgICAgICAgY291bnQgPSA0OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx1WFhYWCBlc2NhcGUiOwogICAgICAgICAgICAgZ290byBoZXhlc2NhcGU7CiAKICAgICAgICAgICAgIC8qIFxVWFhYWFhYWFggKi8KICAgICAgICAgY2FzZSAnVSc6Ci0gICAgICAgICAgICBkaWdpdHMgPSA4OworICAgICAgICAgICAgY291bnQgPSA4OwogICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgaGV4ZXNjYXBlOgotICAgICAgICAgICAgY2hyID0gMDsKLSAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgZGlnaXRzKSB7Ci0gICAgICAgICAgICAgICAgLyogY291bnQgb25seSBoZXggZGlnaXRzICovCi0gICAgICAgICAgICAgICAgZm9yICg7IHMgPCBlbmQ7ICsrcykgewotICAgICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yICg7IGRpZ2l0cy0tOyArK3MpIHsKKyAgICAgICAgICAgIGZvciAoY2ggPSAwOyBjb3VudCAmJiBzIDwgZW5kOyArK3MsIC0tY291bnQpIHsKICAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICBjaHIgPSAoY2hyPDw0KSAmIH4weEY7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNociArPSAxMCArIGMgLSAnQSc7CisgICAgICAgICAgICAgICAgY2ggPDw9IDQ7CisgICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAnMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ2EnIC0gMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdBJyAtIDEwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaHIgPT0gMHhmZmZmZmZmZiAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIC8qIF9kZWNvZGluZ19lcnJvciB3aWxsIGhhdmUgYWxyZWFkeSB3cml0dGVuIGludG8gdGhlCi0gICAgICAgICAgICAgICAgICAgdGFyZ2V0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RvcmU6Ci0gICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaHIgaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgIG1lc3NhZ2UgPSAiaWxsZWdhbCBVbmljb2RlIGNoYXJhY3RlciI7Ci0gICAgICAgICAgICBpZiAoY2hyID4gTUFYX1VOSUNPREUpCisgICAgICAgICAgICBpZiAoY291bnQpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgV1JJVEVDSEFSKGNocik7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogd2hlbiB3ZSBnZXQgaGVyZSwgY2ggaXMgYSAzMi1iaXQgdW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIGlmIChjaCA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIjsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBcTntuYW1lfSAqLwogICAgICAgICBjYXNlICdOJzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOwotICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byB1Y25oYXNoRXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1VuaWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkiCisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtZXNzYWdlID0gIm1hbGZvcm1lZCBcXE4gY2hhcmFjdGVyIGVzY2FwZSI7CiAgICAgICAgICAgICBpZiAoKnMgPT0gJ3snKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSBzKzE7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSArK3M7CisgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVsZW47CiAgICAgICAgICAgICAgICAgLyogbG9vayBmb3IgdGhlIGNsb3NpbmcgYnJhY2UgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKnMgIT0gJ30nICYmIHMgPCBlbmQpCisgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlbmQgJiYgKnMgIT0gJ30nKQogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPiBzdGFydCAmJiBzIDwgZW5kICYmICpzID09ICd9JykgeworICAgICAgICAgICAgICAgIG5hbWVsZW4gPSBzIC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKG5hbWVsZW4gJiYgcyA8IGVuZCkgewogICAgICAgICAgICAgICAgICAgICAvKiBmb3VuZCBhIG5hbWUuICBsb29rIGl0IHVwIGluIHRoZSB1bmljb2RlIGRhdGFiYXNlICovCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgICAgICBpZiAocyAtIHN0YXJ0IC0gMSA8PSBJTlRfTUFYICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpKHMtc3RhcnQtMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNociwgMCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHN0b3JlOworICAgICAgICAgICAgICAgICAgICBjaCA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLworICAgICAgICAgICAgICAgICAgICBpZiAobmFtZWxlbiA8PSBJTlRfTUFYICYmCisgICAgICAgICAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpbmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2gsIDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gInVua25vd24gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZSI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKHMgPiBlbmQpIHsKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKCpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmZpcnN0X2ludmFsaWRfZXNjYXBlID0gcy0xOyAvKiBCYWNrIHVwIG9uZSBjaGFyLCBzaW5jZSB3ZSd2ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBpbmNyZW1lbnRlZCBzLiAqLwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgV1JJVEVDSEFSKCdcXCcpOwotICAgICAgICAgICAgICAgIFdSSVRFQ0hBUigodW5zaWduZWQgY2hhcilzWy0xXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIFdSSVRFX0FTQ0lJX0NIQVIoJ1xcJyk7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgY29udGludWU7CiAKICAgICAgIGVycm9yOgogICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOworICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGVuZCAtIHMgKyB3cml0ZXIucG9zOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgJndyaXRlcikpCisgICAgICAgICAgICAgICAgJndyaXRlcikpIHsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCB3cml0ZXIubWluX2xlbmd0aCwgMTI3KSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorCisjdW5kZWYgV1JJVEVfQVNDSUlfQ0hBUgorI3VuZGVmIFdSSVRFX0NIQVIKICAgICB9Ci0jdW5kZWYgV1JJVEVDSEFSCiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAotICB1Y25oYXNoRXJyb3I6Ci0gICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICBQeUV4Y19Vbmljb2RlRXJyb3IsCi0gICAgICAgICJcXE4gZXNjYXBlcyBub3Qgc3VwcG9ydGVkIChjYW4ndCBsb2FkIHVuaWNvZGVkYXRhIG1vZHVsZSkiCi0gICAgICAgICk7Ci0gICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0KICAgb25FcnJvcjoKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwpAQCAtNTg1Myw2ICs2MTEzLDI3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgY29uc3QgY2hhciAqZmlyc3RfaW52YWxpZF9lc2NhcGU7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShzLCBzaXplLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3RfaW52YWxpZF9lc2NhcGUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGZpcnN0X2ludmFsaWRfZXNjYXBlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgJ1xcJWMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmZpcnN0X2ludmFsaWRfZXNjYXBlKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogLyogUmV0dXJuIGEgVW5pY29kZS1Fc2NhcGUgc3RyaW5nIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgb2JqZWN0LgogCiAgICBJZiBxdW90ZXMgaXMgdHJ1ZSwgdGhlIHN0cmluZyBpcyBlbmNsb3NlZCBpbiB1IiIgb3IgdScnIHF1b3RlcyBhcwpAQCAtNTg2Niw5ICs2MTQ3LDkgQEAKICAgICBQeV9zc2l6ZV90IGksIGxlbjsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIGludCBraW5kOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKICAgICB2b2lkICpkYXRhOwotICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDA7CisgICAgUHlfc3NpemVfdCBleHBhbmRzaXplOwogCiAgICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIGNoYXJhY3RlcgogICAgICAgIGVzY2FwZS4KQEAgLTU4ODIsNjAgKzYxNjMsNzEgQEAKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA0OyBicmVhazsKLSAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBleHBhbmRzaXplID0gNjsgYnJlYWs7Ci0gICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDEwOyBicmVhazsKICAgICB9CiAKLSAgICBpZiAobGVuID09IDApCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KIAotICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKKyAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCisgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKKyAgICBpZiAobGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gMiAtIDEpIC8gZXhwYW5kc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwYW5kc2l6ZSpsZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIDEpOwotICAgIGlmIChyZXByID09IE5VTEwpCisgICAgfQorICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDIgKyBleHBhbmRzaXplICogbGVuICsgMSk7CisgICAgaWYgKHJlcHIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7Ci0KICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCi0gICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLwotICAgICAgICBpZiAoY2ggPT0gJ1xcJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgLyogVSswMDAwLVUrMDBmZiByYW5nZSAqLworICAgICAgICBpZiAoY2ggPCAweDEwMCkgeworICAgICAgICAgICAgaWYgKGNoID49ICcgJyAmJiBjaCA8IDEyNykgeworICAgICAgICAgICAgICAgIGlmIChjaCAhPSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIENvcHkgcHJpbnRhYmxlIFVTIEFTQ0lJIGFzLWlzICovCisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICduJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdccicpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3InOworICAgICAgICAgICAgfQogCi0gICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMjU2KSB7CisgICAgICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSBhbmQgOC1iaXQgY2hhcmFjdGVycyB0byAnXHhISCcgKi8KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAneCc7CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHVISEhIJyAqLworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApIHsKKyAgICAgICAgICAgIC8qIFUrMDEwMC1VK2ZmZmYgKi8KICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwRl07CkBAIC01OTQzLDM3ICs2MjM1LDI4IEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQorICAgICAgICAvKiBVKzAxMDAwMC1VKzEwZmZmZiByYW5nZTogTWFwIDIxLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAwSEhISEhIJyAqLworICAgICAgICBlbHNlIHsKIAotICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHQnKSB7CisgICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgdHdvIGRpZ2l0cyBhcmUgemVybyAqLworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFICYmIE1BWF9VTklDT0RFIDw9IDB4MTBmZmZmKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd0JzsKKyAgICAgICAgICAgICpwKysgPSAnVSc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwMDAwMEZdOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNoID09ICdcbicpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICduJzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAncic7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBNYXAgbm9uLXByaW50YWJsZSBVUyBBU0NJSSB0byAnXHhoaCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPj0gMHg3RikgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgZWxzZSBhcy1pcyAqLwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwogICAgIH0KIAogICAgIGFzc2VydChwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikgPiAwKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTU5ODMsOCArNjI2NiwxMCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKLSAgICBpZiAodG1wID09IE5VTEwpCisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcodG1wKTsKICAgICBQeV9ERUNSRUYodG1wKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTk5OCw5NSArNjI4MywxMDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKLSAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBjb25zdCBjaGFyICpiczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKKyAgICB9CiAKICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZwogICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCiAgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuIChCdXQgZGVjb2RpbmcgZXJyb3IKICAgICAgICBoYW5kbGVyIG1pZ2h0IGhhdmUgdG8gcmVzaXplIHRoZSBzdHJpbmcpICovCiAgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIpOwotICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc2l6ZSwgMTI3KSA8IDApIHsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KIAogICAgIGVuZCA9IHMgKyBzaXplOwogICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVUNTNCB4OwotICAgICAgICBpbnQgaTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgIGludCBjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOworICAgICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOworICAgICAgICBjb25zdCBjaGFyICptZXNzYWdlOworCisjZGVmaW5lIFdSSVRFX0NIQVIoY2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgaWYgKGNoIDw9IHdyaXRlci5tYXhjaGFyKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCh3cml0ZXIucG9zIDwgd3JpdGVyLnNpemUpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgY2gpOyBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgY2gpIDwgMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHdoaWxlKDApCiAKICAgICAgICAgLyogTm9uLWVzY2FwZSBjaGFyYWN0ZXJzIGFyZSBpbnRlcnByZXRlZCBhcyBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgIGlmICgqcyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICB4ID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoYyAhPSAnXFwnIHx8IHMgPj0gZW5kKSB7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogCi0gICAgICAgIC8qIFx1LWVzY2FwZXMgYXJlIG9ubHkgaW50ZXJwcmV0ZWQgaWZmIHRoZSBudW1iZXIgb2YgbGVhZGluZwotICAgICAgICAgICBiYWNrc2xhc2hlcyBpZiBvZGQgKi8KLSAgICAgICAgYnMgPSBzOwotICAgICAgICBmb3IgKDtzIDwgZW5kOykgewotICAgICAgICAgICAgaWYgKCpzICE9ICdcXCcpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB4ID0gKHVuc2lnbmVkIGNoYXIpKnMrKzsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgIGlmIChjID09ICd1JykgeworICAgICAgICAgICAgY291bnQgPSA0OworICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFx1WFhYWCBlc2NhcGUiOwogICAgICAgICB9Ci0gICAgICAgIGlmICgoKHMgLSBicykgJiAxKSA9PSAwIHx8Ci0gICAgICAgICAgICBzID49IGVuZCB8fAotICAgICAgICAgICAgKCpzICE9ICd1JyAmJiAqcyAhPSAnVScpKSB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICB3cml0ZXIucG9zLS07Ci0gICAgICAgIGNvdW50ID0gKnM9PSd1JyA/IDQgOiA4OwotICAgICAgICBzKys7Ci0KLSAgICAgICAgLyogXHVYWFhYIHdpdGggNCBoZXggZGlnaXRzLCBcVXh4eHh4eHh4IHdpdGggOCAqLwotICAgICAgICBmb3IgKHggPSAwLCBpID0gMDsgaSA8IGNvdW50OyArK2ksICsrcykgewotICAgICAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgInRydW5jYXRlZCBcXHVYWFhYIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICh4PDw0KSAmIH4weEY7Ci0gICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgeCArPSBjIC0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHggPD0gTUFYX1VOSUNPREUpIHsKLSAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCB4KSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBlbHNlIGlmIChjID09ICdVJykgeworICAgICAgICAgICAgY291bnQgPSA4OworICAgICAgICAgICAgbWVzc2FnZSA9ICJ0cnVuY2F0ZWQgXFxVWFhYWFhYWFggZXNjYXBlIjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAotICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICJyYXd1bmljb2RlZXNjYXBlIiwgIlxcVXh4eHh4eHh4IG91dCBvZiByYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrKywgJ1xcJyk7CisgICAgICAgICAgICBXUklURV9DSEFSKGMpOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgIG5leHRCeXRlOgotICAgICAgICA7CisgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzIC0gMjsKKworICAgICAgICAvKiBcdUhISEggd2l0aCA0IGhleCBkaWdpdHMsIFxVMDBISEhISEggd2l0aCA4ICovCisgICAgICAgIGZvciAoY2ggPSAwOyBjb3VudCAmJiBzIDwgZW5kOyArK3MsIC0tY291bnQpIHsKKyAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKKyAgICAgICAgICAgIGNoIDw8PSA0OworICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICcwJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKSB7CisgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnYScgLSAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ0EnIC0gMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFjb3VudCkgeworICAgICAgICAgICAgaWYgKGNoIDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgV1JJVEVfQ0hBUihjaCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZXNzYWdlID0gIlxcVXh4eHh4eHh4IG91dCBvZiByYW5nZSI7CisgICAgICAgIH0KKworICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOworICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGVuZCAtIHMgKyB3cml0ZXIucG9zOworICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAorICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgJndyaXRlcikpIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHdyaXRlci5taW5fbGVuZ3RoLCAxMjcpIDwgMCkgeworICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CisKKyN1bmRlZiBXUklURV9DSEFSCiAgICAgfQogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CkBAIC02MDk3LDYgKzYzOTQsNyBAQAogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CisKIH0KIAogCkBAIC02MTA1LDcgKzY0MDMsNiBAQAogewogICAgIFB5T2JqZWN0ICpyZXByOwogICAgIGNoYXIgKnA7Ci0gICAgY2hhciAqcTsKICAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUsIHBvczsKICAgICBpbnQga2luZDsKICAgICB2b2lkICpkYXRhOwpAQCAtNjExNSw0MyArNjQxMiw0MSBAQAogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CiAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGRhdGEsIGxlbik7CisgICAgfQorCiAgICAgLyogNCBieXRlIGNoYXJhY3RlcnMgY2FuIHRha2UgdXAgMTAgYnl0ZXMsIDIgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDYKICAgICAgICBieXRlcywgYW5kIDEgYnl0ZSBjaGFyYWN0ZXJzIDQuICovCiAgICAgZXhwYW5kc2l6ZSA9IGtpbmQgKiAyICsgMjsKIAotICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQorICAgIH0KICAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogbGVuKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQorICAgIGlmIChyZXByID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGxlbiA9PSAwKQorICAgIH0KKyAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgfQogCi0gICAgcCA9IHEgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKKyAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBsZW47IHBvcysrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwotICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTYpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOworCisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IENvcHkgOC1iaXQgY2hhcmFjdGVycyBhcy1pcyAqLworICAgICAgICBpZiAoY2ggPCAweDEwMCkgeworICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICAgICAgfQotICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2KSB7CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2U6IE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHVISEhIJyAqLworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApIHsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICd1JzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CkBAIC02MTU5LDE0ICs2NDU0LDI2IEBACiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9Ci0gICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CisgICAgICAgIC8qIFUrMDEwMDAwLVUrMTBmZmZmIHJhbmdlOiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDBISEhISEgnICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFICYmIE1BWF9VTklDT0RFIDw9IDB4MTBmZmZmKTsKKyAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgKnArKyA9ICdVJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIGFzc2VydChwID4gcSk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIHEpIDwgMCkKKyAgICBhc3NlcnQocCA+IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKTsKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVwcikpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKQEAgLTYzNDQsNyArNjY1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5ld3BvcykKIHsKLSAgICBzdGF0aWMgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiT247ZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyL2J5dGVzLCBpbnQpIHR1cGxlIjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKnJlc3VuaWNvZGU7CkBAIC02Mzk4LDI1ICs2NzA1LDIyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdW5pY29kZV9lbmNvZGVfdWNzMShQeU9iamVjdCAqdW5pY29kZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGltaXQpCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VDUzQgbGltaXQpCiB7CiAgICAgLyogaW5wdXQgc3RhdGUgKi8KICAgICBQeV9zc2l6ZV90IHBvcz0wLCBzaXplOwogICAgIGludCBraW5kOwogICAgIHZvaWQgKmRhdGE7Ci0gICAgLyogb3V0cHV0IG9iamVjdCAqLwotICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgLyogcG9pbnRlciBpbnRvIHRoZSBvdXRwdXQgKi8KICAgICBjaGFyICpzdHI7Ci0gICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KLSAgICBQeV9zc2l6ZV90IHJlc3NpemU7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAobGltaXQgPT0gMjU2KSA/ICJsYXRpbi0xIiA6ICJhc2NpaSI7CiAgICAgY29uc3QgY2hhciAqcmVhc29uID0gKGxpbWl0ID09IDI1NikgPyAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMjU2KSIgOiAib3JkaW5hbCBub3QgaW4gcmFuZ2UoMTI4KSI7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAvKiB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIGlzIHVzZWQgZm9yIGNhY2hpbmcgc3RyaW5nIGNvbXBhcmlzb25zCi0gICAgICogLTE9bm90IGluaXRpYWxpemVkLCAwPXVua25vd24sIDE9c3RyaWN0LCAyPXJlcGxhY2UsIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKKyAgICBQeU9iamVjdCAqcmVwID0gTlVMTDsKKyAgICAvKiBvdXRwdXQgb2JqZWN0ICovCisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02NDI3LDE4NiArNjczMSwxNTcgQEAKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCiAgICAgaWYgKHNpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7Ci0gICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKLSAgICBpZiAocmVzID09IE5VTEwpCisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICByZXNzaXplID0gc2l6ZTsKIAogICAgIHdoaWxlIChwb3MgPCBzaXplKSB7Ci0gICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOwogCiAgICAgICAgIC8qIGNhbiB3ZSBlbmNvZGUgdGhpcz8gKi8KLSAgICAgICAgaWYgKGM8bGltaXQpIHsKKyAgICAgICAgaWYgKGNoIDwgbGltaXQpIHsKICAgICAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICAgICAqc3RyKysgPSAoY2hhciljOworICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpY2g7CiAgICAgICAgICAgICArK3BvczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplOwotICAgICAgICAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGU7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIG5ld3BvcywgcmVzcG9zLCBpOworICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3MsIGk7CiAgICAgICAgICAgICAvKiBzdGFydHBvcyBmb3IgY29sbGVjdGluZyB1bmVuY29kYWJsZSBjaGFycyAqLwogICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsc3RhcnQgPSBwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBwb3M7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxlbmQgPSBjb2xsc3RhcnQgKyAxOwogICAgICAgICAgICAgLyogZmluZCBhbGwgdW5lY29kYWJsZSBjaGFyYWN0ZXJzICovCisKICAgICAgICAgICAgIHdoaWxlICgoY29sbGVuZCA8IHNpemUpICYmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjb2xsZW5kKSA+PSBsaW1pdCkpCiAgICAgICAgICAgICAgICAgKytjb2xsZW5kOworCisgICAgICAgICAgICAvKiBPbmx5IG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGlmIGl0J3Mgbm90IHRoZSBsYXN0IHdyaXRlICovCisgICAgICAgICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gKGNvbGxlbmQgPCBzaXplKTsKKwogICAgICAgICAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAgKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KLSAgICAgICAgICAgIGlmIChrbm93bl9lcnJvckhhbmRsZXI9PS0xKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgImlnbm9yZSIpKQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAzOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gNDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzd2l0Y2ggKGtub3duX2Vycm9ySGFuZGxlcikgewotICAgICAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KKyAgICAgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9VTktOT1dOKQorICAgICAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpIHsKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKGNvbGxzdGFydCsrIDwgY29sbGVuZCkKLSAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOyAvKiBmYWxsIHRocm91Z2ggKi8KLSAgICAgICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CisgICAgICAgICAgICAgICAgbWVtc2V0KHN0ciwgJz8nLCBjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdHIgKz0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCBpZ25vcmUgZXJyb3IgaGFuZGxlciAqLworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgogICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3M7Ci0gICAgICAgICAgICAgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwotICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGluY3I7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaCA8IDEwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzIrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrMysxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNCsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzUrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDAwKQotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis3KzE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBpbmNyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSAoc2l6ZSAtIGNvbGxlbmQpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBzaXplIC0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA8PSBQWV9TU0laRV9UX01BWC8yICYmIHJlcXVpcmVkc2l6ZSA8IDIqcmVzc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXF1aXJlZHNpemUpKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLwotICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gc3ByaW50ZihzdHIsICImIyVkOyIsIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMIHx8IChQeVVuaWNvZGVfQ2hlY2socmVwdW5pY29kZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpKQorCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyID0gYmFja3NsYXNocmVwbGFjZSgmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQpOworICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcHVuaWNvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIERpcmVjdGx5IGNvcHkgYnl0ZXMgcmVzdWx0IHRvIG91dHB1dC4gKi8KLSAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5Qnl0ZXNfU2l6ZShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcHNpemUgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBNYWtlIHJvb20gZm9yIGFsbCBhZGRpdGlvbmFsIGJ5dGVzLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNzaXplID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplIC0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXNzaXplK3JlcHNpemUtMSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gcmVwc2l6ZS0xOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgorICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyID0geG1sY2hhcnJlZnJlcGxhY2UoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIGNvbGxzdGFydCwgY29sbGVuZCk7CisgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgcG9zID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAweGRjODAgfHwgMHhkY2ZmIDwgY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vdCBhIFVURi04YiBzdXJyb2dhdGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1lbWNweShzdHIsIFB5Qnl0ZXNfQXNTdHJpbmcocmVwdW5pY29kZSksIHJlcHNpemUpOwotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKShjaCAtIDB4ZGMwMCk7CisgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBjb2xsZW5kKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCi0gICAgICAgICAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZywgc28KLSAgICAgICAgICAgICAgICAgICB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlIGZvciBlbmNvZGFibGUgY2hhcmFjdGVycykgKi8KLSAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3M7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gUFlfU1NJWkVfVF9NQVggLSAoc2l6ZSAtIGNvbGxlbmQpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSArPSBzaXplIC0gY29sbGVuZDsKLSAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA8PSBQWV9TU0laRV9UX01BWC8yICYmIHJlcXVpcmVkc2l6ZSA8IDIqcmVzc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCByZXF1aXJlZHNpemUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgY29sbHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgICAgIGFzc2VydChjb2xsc3RhcnQgIT0gY29sbGVuZCk7CisgICAgICAgICAgICAgICAgLyogZmFsbGJhY2sgdG8gZ2VuZXJhbCBlcnJvciBoYW5kbGluZyAqLworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9yX2hhbmRsZXJfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocmVwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAxOworCisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCisgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXApKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgPSByZXF1aXJlZHNpemU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZSByZXBsYWNlbWVudAotICAgICAgICAgICAgICAgICAgIGFuZCBjb3B5IGl0IHRvIHRoZSBvdXRwdXQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyByZXBzaXplLS0+MDsgKytpLCArK3N0cikgewotICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXB1bmljb2RlLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj0gbGltaXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVwKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aDogYWxsIGNoYXJhY3RlcnMgYXJlIHNtYWxsZXIgdGhhbiBsaW1pdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGxpbWl0ID49IDEyOCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVwKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWM7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBzdHIsIHJlcHNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgdGhlcmUgaXMgYW55dGhpbmcgdW5lbmNvZGFibGUgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyByZXBzaXplLS0+MDsgKytpLCArK3N0cikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUihyZXAsIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA+PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcywgcG9zKzEsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnN0ciA9IChjaGFyKWNoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIocmVwKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgb3ZlcmFsbG9jYXRpb24gd2FzIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBpdCB3YXMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgIHdyaXRlLiBPdGhlcndpc2UsIHdlIG1pc3NlZCBhbiBvcHRpbWl6YXRpb24gKi8KKyAgICAgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IHBvcyA9PSBzaXplKTsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBSZXNpemUgaWYgd2UgYWxsb2NhdGVkIHRvIG11Y2ggKi8KLSAgICBzaXplID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICBpZiAoc2l6ZSA8IHJlc3NpemUpIHsgLyogSWYgdGhpcyBmYWxscyByZXMgd2lsbCBiZSBOVUxMICovCi0gICAgICAgIGFzc2VydChzaXplID49IDApOwotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXMsIHNpemUpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB9CiAKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiByZXM7Ci0KLSAgb3ZlcmZsb3c6Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihyZXMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKHJlcCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02NjY2LDggKzY5NDEsOSBAQAogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKIAogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwpAQCAtNjY5NiwxMiArNjk3Miw0MiBAQAogICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci5wb3MsIGMpOwogICAgICAgICAgICAgd3JpdGVyLnBvcysrOwogICAgICAgICAgICAgKytzOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7CisKKyAgICAgICAgLyogYnl0ZSBvdXRzaXplIHJhbmdlIDB4MDAuLjB4N2Y6IGNhbGwgdGhlIGVycm9yIGhhbmRsZXIgKi8KKworICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikKKyAgICAgICAgeworICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CisgICAgICAgICAgICAvKiBGYXN0LXBhdGg6IHRoZSBlcnJvciBoYW5kbGVyIG9ubHkgd3JpdGVzIG9uZSBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICBidXQgd2UgbWF5IHN3aXRjaCB0byBVQ1MyIGF0IHRoZSBmaXJzdCB3cml0ZSAqLworICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoJndyaXRlciwgUHlVbmljb2RlXzJCWVRFX0tJTkQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBraW5kID0gd3JpdGVyLmtpbmQ7CisgICAgICAgICAgICBkYXRhID0gd3JpdGVyLmRhdGE7CisKKyAgICAgICAgICAgIGlmIChlcnJvcl9oYW5kbGVyID09IF9QeV9FUlJPUl9SRVBMQUNFKQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCAweGZmZmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCBjICsgMHhkYzAwKTsKKyAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKKyAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiwgIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiLAogICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCiAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQpAQCAtNjcxMCwxMyArNzAxNiwxMyBAQAogICAgICAgICAgICAgZGF0YSA9IHdyaXRlci5kYXRhOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIG9uRXJyb3I6CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02NzU5LDcgKzcwNjUsNyBAQAogICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgTlVMTCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC02NzcxLDcgKzcwNzcsNyBAQAogIyAgZGVmaW5lIFdDX0VSUl9JTlZBTElEX0NIQVJTIDB4MDA4MAogI2VuZGlmCiAKLXN0YXRpYyBjaGFyKgorc3RhdGljIGNvbnN0IGNoYXIqCiBjb2RlX3BhZ2VfbmFtZShVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvYmopCiB7CiAgICAgKm9iaiA9IE5VTEw7CkBAIC02ODc5LDcgKzcxODUsNyBAQAogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogICAgIERXT1JEIGVycjsKICAgICBpbnQgcmV0ID0gLTE7CiAKQEAgLTcxMTUsNyArNzQyMSw2IEBACiAgICAgQk9PTCB1c2VkRGVmYXVsdENoYXIgPSBGQUxTRTsKICAgICBCT09MICpwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKICAgICBpbnQgb3V0c2l6ZTsKLSAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICB3Y2hhcl90ICpwOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBOVUxMKTsKQEAgLTcyMjQsNyArNzUyOSw3IEBACiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7Ci0gICAgY2hhciAqZW5jb2Rpbmc7CisgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAgICAgUHlfc3NpemVfdCBuZXdwb3MsIG5ld291dHNpemU7CiAgICAgUHlPYmplY3QgKnJlcDsKICAgICBpbnQgcmV0ID0gLTE7CkBAIC03NDc5LDcgKzc3ODQsNyBAQAogCiAjdW5kZWYgTkVFRF9SRVRSWQogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtODA4Miw3ICs4Mzg3LDcgQEAKIGNoYXJtYXBfZW5jb2RpbmdfZXJyb3IoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKmlucG9zLCBQeU9iamVjdCAqbWFwcGluZywKICAgICBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICBpbnQgKmtub3duX2Vycm9ySGFuZGxlciwgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICBfUHlfZXJyb3JfaGFuZGxlciAqZXJyb3JfaGFuZGxlciwgUHlPYmplY3QgKiplcnJvcl9oYW5kbGVyX29iaiwgY29uc3QgY2hhciAqZXJyb3JzLAogICAgIFB5T2JqZWN0ICoqcmVzLCBQeV9zc2l6ZV90ICpyZXNwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOyAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KQEAgLTgxMjksMjMgKzg0MzQsMTUgQEAKICAgICB9CiAgICAgLyogY2FjaGUgY2FsbGJhY2sgbmFtZSBsb29rdXAKICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgIGlmICgqa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICBpZiAoKGVycm9ycz09TlVMTCkgfHwgKCFzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDI7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJ4bWxjaGFycmVmcmVwbGFjZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAwOwotICAgIH0KLSAgICBzd2l0Y2ggKCprbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICBjYXNlIDE6IC8qIHN0cmljdCAqLworICAgIGlmICgqZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgKmVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgc3dpdGNoICgqZXJyb3JfaGFuZGxlcikgeworICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsIHJlYXNvbik7CiAgICAgICAgIHJldHVybiAtMTsKLSAgICBjYXNlIDI6IC8qIHJlcGxhY2UgKi8KKworICAgIGNhc2UgX1B5X0VSUk9SX1JFUExBQ0U6CiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvczxjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgnPycsIG1hcHBpbmcsIHJlcywgcmVzcG9zKTsKICAgICAgICAgICAgIGlmICh4PT1lbmNfRVhDRVBUSU9OKSB7CkBAIC04MTU3LDEwICs4NDU0LDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KKyAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CiAgICAgICAgICppbnBvcyA9IGNvbGxlbmRwb3M7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KKworICAgIGNhc2UgX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOgogICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCiAgICAgICAgIGZvciAoY29sbHBvcyA9IGNvbGxzdGFydHBvczsgY29sbHBvcyA8IGNvbGxlbmRwb3M7ICsrY29sbHBvcykgewogICAgICAgICAgICAgY2hhciBidWZmZXJbMisyOSsxKzFdOwpAQCAtODE3OCw4ICs4NDc2LDkgQEAKICAgICAgICAgfQogICAgICAgICAqaW5wb3MgPSBjb2xsZW5kcG9zOwogICAgICAgICBicmVhazsKKwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9ySGFuZGxlciwKKyAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgZXJyb3JfaGFuZGxlcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCBleGNlcHRpb25PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnRwb3MsIGNvbGxlbmRwb3MsICZuZXdwb3MpOwogICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQpAQCAtODI0MiwxMiArODU0MSw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCiAgICAgUHlfc3NpemVfdCByZXNwb3MgPSAwOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLAotICAgICAqIDM9aWdub3JlLCA0PXhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgaW50IGtub3duX2Vycm9ySGFuZGxlciA9IC0xOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKICAgICB2b2lkICpkYXRhOwogICAgIGludCBraW5kOwogCkBAIC04Mjc4LDcgKzg1NzQsNyBAQAogICAgICAgICBpZiAoeD09ZW5jX0ZBSUxFRCkgeyAvKiB1bmVuY29kYWJsZSBjaGFyYWN0ZXIgKi8KICAgICAgICAgICAgIGlmIChjaGFybWFwX2VuY29kaW5nX2Vycm9yKHVuaWNvZGUsICZpbnBvcywgbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma25vd25fZXJyb3JIYW5kbGVyLCAmZXJyb3JIYW5kbGVyLCBlcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3JfaGFuZGxlciwgJmVycm9yX2hhbmRsZXJfb2JqLCBlcnJvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzLCAmcmVzcG9zKSkgewogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KQEAgLTgyOTQsMTMgKzg1OTAsMTMgQEAKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC04MzY3LDcgKzg2NjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjt0cmFuc2xhdGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5X3NzaXplX3QgaV9uZXdwb3M7CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwpAQCAtODYyNCw3ICs4OTIwLDcgQEAKICAgICByZXR1cm4gcmVzOwogfQogCi1QeU9iamVjdCAqCitzdGF0aWMgUHlPYmplY3QgKgogX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKFB5T2JqZWN0ICppbnB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCkBAIC04NjUzLDEwICs4OTQ5LDggQEAKICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7Ci0gICAgICAgIHJldHVybiBpbnB1dDsKLSAgICB9CisgICAgaWYgKHNpemUgPT0gMCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT2JqZWN0KGlucHV0KTsKIAogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgMToxIHRyYW5zbGF0aW9uIHdpdGhvdXQKICAgICAgICByZXBsYWNlbWVudHMsIGlmIHdlIG5lZWQgbW9yZSwgd2UnbGwgcmVzaXplICovCkBAIC04NzY3LDE0ICs5MDYxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7CiB9CiAKIHN0YXRpYyBQeV9VQ1M0CkBAIC04OTU2LDkgKzkyNDUsMTAgQEAKICAgICB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1hbnlfZmluZF9zbGljZShpbnQgZGlyZWN0aW9uLCBQeU9iamVjdCogczEsIFB5T2JqZWN0KiBzMiwKK2FueV9maW5kX3NsaWNlKFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CkBAIC05MTI3LDU0ICs5NDE3LDM1IEBACiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQpCiB7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHN1Yl9vYmo7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKLSAgICBpZiAoIXN1Yl9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViX29iaikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogCi0gICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKLSAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1Yl9vYmopOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cik7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KIAotICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKLSAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViX29iaik7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cik7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7Ci0gICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1Yl9vYmopOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHIpOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZDEpOworICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyLCBraW5kMSk7CiAgICAgICAgIGlmICghYnVmMikKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKLSAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3ViX29iaikpCisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3Vic3RyKSkKICAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2NvdW50KAogICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCiAgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKQEAgLTkyMDEsMTYgKzk0NzIsMTEgQEAKICAgICAgICAgYXNzZXJ0KDApOyByZXN1bHQgPSAwOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gcmVzdWx0OwogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihzdWJfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxICYmIGJ1ZjIpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAgICAgcmV0dXJuIC0xOwpAQCAtOTIxOCwzNSArOTQ4NCwxNSBAQAogCiBQeV9zc2l6ZV90CiBQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLAotICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YiwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCiAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoIXN0cikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDApCiAgICAgICAgIHJldHVybiAtMjsKLSAgICBzdWIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWIpOwotICAgIGlmICghc3ViKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTI7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMjsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShkaXJlY3Rpb24sCi0gICAgICAgIHN0ciwgc3ViLCBzdGFydCwgZW5kCi0gICAgICAgICk7Ci0KLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICBQeV9ERUNSRUYoc3ViKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGFueV9maW5kX3NsaWNlKHN0ciwgc3Vic3RyLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogfQogCiBQeV9zc2l6ZV90CkBAIC05MzQ5LDIyICs5NTk1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc3Vic3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vic3RyKTsKLSAgICBpZiAoc3Vic3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBzdWJzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1YnN0cik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogfQogCiAvKiBBcHBseSBmaXhmY3QgZmlsdGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCBzZWxmIGFuZCByZXR1cm4gYQpAQCAtOTY2NiwyMCArOTkwMCwxMCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0pvaW4oUHlPYmplY3QgKnNlcGFyYXRvciwgUHlPYmplY3QgKnNlcSkKIHsKLSAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbjsKLSAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLwotICAgIFB5T2JqZWN0ICpmc2VxOyAgICAgICAgICAvKiBQeVNlcXVlbmNlX0Zhc3Qoc2VxKSAqLwotICAgIFB5X3NzaXplX3Qgc2VxbGVuOyAgICAgICAvKiBsZW4oZnNlcSkgLS0gbnVtYmVyIG9mIGl0ZW1zIGluIHNlcXVlbmNlICovCisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZnNlcTsKKyAgICBQeV9zc2l6ZV90IHNlcWxlbjsKICAgICBQeU9iamVjdCAqKml0ZW1zOwotICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3Qgc3osIGksIHJlc19vZmZzZXQ7Ci0gICAgUHlfVUNTNCBtYXhjaGFyOwotICAgIFB5X1VDUzQgaXRlbV9tYXhjaGFyOwotICAgIGludCB1c2VfbWVtY3B5OwotICAgIHVuc2lnbmVkIGNoYXIgKnJlc19kYXRhID0gTlVMTCwgKnNlcF9kYXRhID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbGFzdF9vYmo7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQgPSAwOwogCiAgICAgZnNlcSA9IFB5U2VxdWVuY2VfRmFzdChzZXEsICJjYW4gb25seSBqb2luIGFuIGl0ZXJhYmxlIik7CiAgICAgaWYgKGZzZXEgPT0gTlVMTCkgewpAQCAtOTY5MCwyMSArOTkxNCwzOSBAQAogICAgICAqIHNvIHdlIGFyZSBzdXJlIHRoYXQgZnNlcSB3b24ndCBiZSBtdXRhdGVkLgogICAgICAqLwogCisgICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgc2VxbGVuID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGZzZXEpOworICAgIHJlcyA9IF9QeVVuaWNvZGVfSm9pbkFycmF5KHNlcGFyYXRvciwgaXRlbXMsIHNlcWxlbik7CisgICAgUHlfREVDUkVGKGZzZXEpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfSm9pbkFycmF5KFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICoqaXRlbXMsIFB5X3NzaXplX3Qgc2VxbGVuKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBzZXBsZW47CisgICAgUHlPYmplY3QgKml0ZW07CisgICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfVUNTNCBpdGVtX21heGNoYXI7CisgICAgaW50IHVzZV9tZW1jcHk7CisgICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsYXN0X29iajsKKyAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CisKICAgICAvKiBJZiBlbXB0eSBzZXF1ZW5jZSwgcmV0dXJuIHUiIi4gKi8KICAgICBpZiAoc2VxbGVuID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKGZzZXEpOwogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKICAgICB9CiAKICAgICAvKiBJZiBzaW5nbGV0b24gc2VxdWVuY2Ugd2l0aCBhbiBleGFjdCBVbmljb2RlLCByZXR1cm4gdGhhdC4gKi8KICAgICBsYXN0X29iaiA9IE5VTEw7Ci0gICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgaWYgKHNlcWxlbiA9PSAxKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChpdGVtc1swXSkpIHsKICAgICAgICAgICAgIHJlcyA9IGl0ZW1zWzBdOwogICAgICAgICAgICAgUHlfSU5DUkVGKHJlcyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICB9CiAgICAgICAgIHNlcGxlbiA9IDA7CkBAIC05ODAyLDcgKzEwMDQ0LDcgQEAKIAogICAgICAgICAgICAgLyogQ29weSBpdGVtLCBhbmQgbWF5YmUgdGhlIHNlcGFyYXRvci4gKi8KICAgICAgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc19kYXRhLAorICAgICAgICAgICAgICAgIG1lbWNweShyZXNfZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBzZXBsZW4pOwogICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBzZXBsZW47CkBAIC05ODEwLDcgKzEwMDUyLDcgQEAKIAogICAgICAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOwogICAgICAgICAgICAgaWYgKGl0ZW1sZW4gIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKGl0ZW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogaXRlbWxlbik7CiAgICAgICAgICAgICAgICAgcmVzX2RhdGEgKz0ga2luZCAqIGl0ZW1sZW47CkBAIC05ODM5LDEzICsxMDA4MSwxMSBAQAogICAgICAgICBhc3NlcnQocmVzX29mZnNldCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgUHlfWERFQ1JFRihzZXApOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CiAgICAgcmV0dXJuIHJlczsKIAogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CiAgICAgUHlfWERFQ1JFRihyZXMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtOTk3MCwxMyArMTAyMTAsOCBAQAogewogICAgIFB5T2JqZWN0ICpsaXN0OwogCi0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyaW5nKTsKLSAgICBpZiAoc3RyaW5nID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cmluZykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CkBAIC0xMDAwMyw3ICsxMDIzOCw2IEBACiAgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgbGlzdCA9IDA7CiAgICAgfQotICAgIFB5X0RFQ1JFRihzdHJpbmcpOwogICAgIHJldHVybiBsaXN0OwogfQogCkBAIC0xMDU2NCwyOCArMTA3OTgsMjcgQEAKIH0KIAogCi0vKiBBcmd1bWVudCBjb252ZXJ0ZXIuICBDb2VyY2VzIHRvIGEgc2luZ2xlIHVuaWNvZGUgY2hhcmFjdGVyICovCisvKiBBcmd1bWVudCBjb252ZXJ0ZXIuIEFjY2VwdHMgYSBzaW5nbGUgVW5pY29kZSBjaGFyYWN0ZXIuICovCiAKIHN0YXRpYyBpbnQKIGNvbnZlcnRfdWMoUHlPYmplY3QgKm9iaiwgdm9pZCAqYWRkcikKIHsKICAgICBQeV9VQ1M0ICpmaWxsY2hhcmxvYyA9IChQeV9VQ1M0ICopYWRkcjsKLSAgICBQeU9iamVjdCAqdW5pb2JqOwogCi0gICAgdW5pb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKLSAgICBpZiAodW5pb2JqID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBVbmljb2RlIik7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGEgdW5pY29kZSBjaGFyYWN0ZXIsICIKKyAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmlvYmopICE9IDEpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSAhPSAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgZXhhY3RseSBvbmUgY2hhcmFjdGVyIGxvbmciKTsKLSAgICAgICAgUHlfREVDUkVGKHVuaW9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICAqZmlsbGNoYXJsb2MgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaW9iaiwgMCk7Ci0gICAgUHlfREVDUkVGKHVuaW9iaik7CisgICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOwogICAgIHJldHVybiAxOwogfQogCkBAIC0xMDczNSw3ICsxMDk2OCw3IEBACiAjdW5kZWYgQ09NUEFSRQogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiB1bmljb2RlX2NvbXBhcmVfZXEoUHlPYmplY3QgKnN0cjEsIFB5T2JqZWN0ICpzdHIyKQogewogICAgIGludCBraW5kOwpAQCAtMTA5NzQsNTkgKzExMjA3LDQ5IEBACiB9CiAKIGludAotUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpjb250YWluZXIsIFB5T2JqZWN0ICplbGVtZW50KQorX1B5VW5pY29kZV9FUShQeU9iamVjdCAqYWEsIFB5T2JqZWN0ICpiYikKIHsKLSAgICBQeU9iamVjdCAqc3RyLCAqc3ViOworICAgIHJldHVybiB1bmljb2RlX2VxKGFhLCBiYik7Cit9CisKK2ludAorUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIpCit7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAgICAgaW50IHJlc3VsdDsKIAotICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwotICAgIHN1YiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGVsZW1lbnQpOwotICAgIGlmICghc3ViKSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vic3RyKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIidpbiA8c3RyaW5nPicgcmVxdWlyZXMgc3RyaW5nIGFzIGxlZnQgb3BlcmFuZCwgbm90ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgIidpbiA8c3RyaW5nPicgcmVxdWlyZXMgc3RyaW5nIGFzIGxlZnQgb3BlcmFuZCwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0ciktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3QoY29udGFpbmVyKTsKLSAgICBpZiAoIXN0cikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cikgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwKQorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cik7Ci0gICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWIpOwotICAgIGlmIChraW5kMSA8IGtpbmQyKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cik7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKLSAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViKTsKLSAgICBpZiAobGVuMSA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHIpOworICAgIGlmIChsZW4xIDwgbGVuMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHIpOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWIpOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJzdHIpOwogICAgIGlmIChsZW4yID09IDEpIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQyLCBidWYyLCAwKTsKICAgICAgICAgcmVzdWx0ID0gZmluZGNoYXIoKGNvbnN0IGNoYXIgKilidWYxLCBraW5kMSwgbGVuMSwgY2gsIDEpICE9IC0xOwotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewotICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViLCBraW5kMSk7Ci0gICAgICAgIGlmICghYnVmMikgewotICAgICAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0ciwga2luZDEpOworICAgICAgICBpZiAoIWJ1ZjIpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMTA0NCw5ICsxMTI2Nyw2IEBACiAgICAgICAgIGFzc2VydCgwKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICBQeV9ERUNSRUYoc3ViKTsKLQogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIApAQCAtMTEwNTgsNTYgKzExMjc4LDQwIEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfQ29uY2F0KFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgUHlPYmplY3QgKnUgPSBOVUxMLCAqdiA9IE5VTEwsICp3OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyMjsKLSAgICBQeV9zc2l6ZV90IHVfbGVuLCB2X2xlbiwgbmV3X2xlbjsKKyAgICBQeV9zc2l6ZV90IGxlZnRfbGVuLCByaWdodF9sZW4sIG5ld19sZW47CiAKLSAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KLSAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7Ci0gICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIHYgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOworICAgIGlmIChlbnN1cmVfdW5pY29kZShsZWZ0KSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUocmlnaHQpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBTaG9ydGN1dHMgKi8KLSAgICBpZiAodiA9PSB1bmljb2RlX2VtcHR5KSB7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIHU7Ci0gICAgfQotICAgIGlmICh1ID09IHVuaWNvZGVfZW1wdHkpIHsKLSAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICByZXR1cm4gdjsKLSAgICB9CisgICAgaWYgKGxlZnQgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKKyAgICBpZiAocmlnaHQgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOwogCi0gICAgdV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KTsKLSAgICB2X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpOwotICAgIGlmICh1X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gdl9sZW4pIHsKKyAgICBsZWZ0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxlZnQpOworICAgIHJpZ2h0X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJpZ2h0KTsKKyAgICBpZiAobGVmdF9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHJpZ2h0X2xlbikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmdzIGFyZSB0b28gbGFyZ2UgdG8gY29uY2F0Iik7Ci0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5ld19sZW4gPSB1X2xlbiArIHZfbGVuOworICAgIG5ld19sZW4gPSBsZWZ0X2xlbiArIHJpZ2h0X2xlbjsKIAotICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSk7Ci0gICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodik7CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShsZWZ0KTsKKyAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyaWdodCk7CiAgICAgbWF4Y2hhciA9IFB5X01BWChtYXhjaGFyLCBtYXhjaGFyMik7CiAKICAgICAvKiBDb25jYXQgdGhlIHR3byBVbmljb2RlIHN0cmluZ3MgKi8KLSAgICB3ID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKLSAgICBpZiAodyA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgMCwgdSwgMCwgdV9sZW4pOwotICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIHVfbGVuLCB2LCAwLCB2X2xlbik7Ci0gICAgUHlfREVDUkVGKHUpOwotICAgIFB5X0RFQ1JFRih2KTsKLSAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHcsIDEpKTsKLSAgICByZXR1cm4gdzsKLQotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYodSk7Ci0gICAgUHlfWERFQ1JFRih2KTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfTmV3KG5ld19sZW4sIG1heGNoYXIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzdWx0LCAwLCBsZWZ0LCAwLCBsZWZ0X2xlbik7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMocmVzdWx0LCBsZWZ0X2xlbiwgcmlnaHQsIDAsIHJpZ2h0X2xlbik7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXN1bHQsIDEpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkCkBAIC0xMTE5OCw2ICsxMTQwMiwyNSBAQAogICAgIFB5X1hERUNSRUYocmlnaHQpOwogfQogCisvKgorV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGVuc3VyZXMgdGhhdCB0aGUKK2ZpcnN0IGFyZ3VtZW50IGlzIGEgdW5pY29kZSBvYmplY3QuCisqLworCitzdGF0aWMgaW5saW5lIGludAorcGFyc2VfYXJnc19maW5kc191bmljb2RlKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1YnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQoreworICAgIGlmKHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsIHN1YnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkgeworICAgICAgICBpZiAoZW5zdXJlX3VuaWNvZGUoKnN1YnN0cmluZykgPCAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogUHlEb2NfU1RSVkFSKGNvdW50X19kb2NfXywKICAgICAgICAgICAgICAiUy5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKIFxuXApAQCAtMTEyMTYsMzEgKzExNDM5LDI2IEBACiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCBpcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImNvdW50IiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOwogICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDEgPCBraW5kMikKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKLSAgICB9CisKICAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CiAgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBsZW4yKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKDApOwotICAgIH0KKwogICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKICAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKICAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZDEpOwotICAgICAgICBpZiAoIWJ1ZjIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICBpZiAoIWJ1ZjIpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgIH0KICAgICBzd2l0Y2ggKGtpbmQxKSB7CiAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKQEAgLTExMjcwLDggKzExNDg4LDYgQEAKICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTExNDA1LDIyICsxMTYyMSwxMyBAQAogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNDkzLDIyICsxMTcwMCwxMyBAQAogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgxLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAxKTsKIAogICAgIGlmIChyZXN1bHQgPT0gLTIpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTIwMjIsNyArMTIyMjAsNyBAQAogI2RlZmluZSBCT1RIU1RSSVAgMgogCiAvKiBBcnJheXMgaW5kZXhlZCBieSBhYm92ZSAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnN0cmlwZm9ybWF0W10gPSB7InxPOmxzdHJpcCIsICJ8Tzpyc3RyaXAiLCAifE86c3RyaXAifTsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3RyaXBmb3JtYXRbXSA9IHsifE86bHN0cmlwIiwgInxPOnJzdHJpcCIsICJ8TzpzdHJpcCJ9OwogCiAjZGVmaW5lIFNUUklQTkFNRShpKSAoc3RyaXBmb3JtYXRbaV0rMykKIApAQCAtMTIzMDMsMTEgKzEyNTAxLDExIEBACiAgICAgICAgIFB5X3NzaXplX3QgZG9uZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKICAgICAgICAgY2hhciAqdG8gPSAoY2hhciAqKSBQeVVuaWNvZGVfREFUQSh1KTsKLSAgICAgICAgUHlfTUVNQ1BZKHRvLCBQeVVuaWNvZGVfREFUQShzdHIpLAorICAgICAgICBtZW1jcHkodG8sIFB5VW5pY29kZV9EQVRBKHN0ciksCiAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICogY2hhcl9zaXplKTsKICAgICAgICAgd2hpbGUgKGRvbmUgPCBuY2hhcnMpIHsKICAgICAgICAgICAgIG4gPSAoZG9uZSA8PSBuY2hhcnMtZG9uZSkgPyBkb25lIDogbmNoYXJzLWRvbmU7Ci0gICAgICAgICAgICBQeV9NRU1DUFkodG8gKyAoZG9uZSAqIGNoYXJfc2l6ZSksIHRvLCBuICogY2hhcl9zaXplKTsKKyAgICAgICAgICAgIG1lbWNweSh0byArIChkb25lICogY2hhcl9zaXplKSwgdG8sIG4gKiBjaGFyX3NpemUpOwogICAgICAgICAgICAgZG9uZSArPSBuOwogICAgICAgICB9CiAgICAgfQpAQCAtMTIzMTcsNDAgKzEyNTE1LDE1IEBACiB9CiAKIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vib2JqLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcGxvYmosCitQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsc3RyLAogICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKLSAgICBQeU9iamVjdCAqc2VsZjsKLSAgICBQeU9iamVjdCAqc3RyMTsKLSAgICBQeU9iamVjdCAqc3RyMjsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc3Vic3RyKSA8IDAgfHwKKyAgICAgICAgICAgIGVuc3VyZV91bmljb2RlKHJlcGxzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7Ci0gICAgaWYgKHN0cjEgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzdHIyID0gUHlVbmljb2RlX0Zyb21PYmplY3QocmVwbG9iaik7Ci0gICAgaWYgKHN0cjIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEgfHwKLSAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8Ci0gICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwotICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgUHlfREVDUkVGKHN0cjIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlcGxhY2Uoc3RyLCBzdWJzdHIsIHJlcGxzdHIsIG1heGNvdW50KTsKIH0KIAogUHlEb2NfU1RSVkFSKHJlcGxhY2VfX2RvY19fLApAQCAtMTIzNjYsMjggKzEyNTM5LDEyIEBACiAgICAgUHlPYmplY3QgKnN0cjE7CiAgICAgUHlPYmplY3QgKnN0cjI7CiAgICAgUHlfc3NpemVfdCBtYXhjb3VudCA9IC0xOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46cmVwbGFjZSIsICZzdHIxLCAmc3RyMiwgJm1heGNvdW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVfG46cmVwbGFjZSIsICZzdHIxLCAmc3RyMiwgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cjEpOwotICAgIGlmIChzdHIxID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIyKTsKLSAgICBpZiAoc3RyMiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIxKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQotICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7Ci0KLSAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgUHlfREVDUkVGKHN0cjIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI1NzIsMjIgKzEyNzI5LDEzIEBACiAgICAgUHlfc3NpemVfdCBlbmQgPSAwOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJmaW5kIiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKC0xLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyNjA5LDIyICsxMjc1NywxMyBAQAogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmluZGV4IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmluZGV4IiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKC0xLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwotCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2Uoc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyNjY0LDI0ICsxMjgwMywxMCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX1NwbGl0KFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzID0gUHlVbmljb2RlX0Zyb21PYmplY3Qocyk7Ci0gICAgaWYgKHMgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUocykgPCAwIHx8IChzZXAgIT0gTlVMTCAmJiBlbnN1cmVfdW5pY29kZShzZXApIDwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzZXAgIT0gTlVMTCkgewotICAgICAgICBzZXAgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXApOwotICAgICAgICBpZiAoc2VwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7Ci0KLSAgICBQeV9ERUNSRUYocyk7Ci0gICAgUHlfWERFQ1JFRihzZXApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwogfQogCiBQeURvY19TVFJWQVIoc3BsaXRfX2RvY19fLApAQCAtMTI3MDYsMzUgKzEyODMxLDI2IEBACiAKICAgICBpZiAoc3Vic3RyaW5nID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCiAgICAgICAgIHJldHVybiBzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9QYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9pbiwgUHlPYmplY3QgKnNlcF9pbikKK1B5VW5pY29kZV9QYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9vYmosIFB5T2JqZWN0ICpzZXBfb2JqKQogewotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cl9vYmopIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzZXBfb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlcF9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXBfaW4pOwotICAgIGlmICghc2VwX29iaikgewotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlcF9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOwpAQCAtMTI3NDgsOCArMTI4NjQsNiBAQAogICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHN0cl9vYmosIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHkpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOwogICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0KICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CkBAIC0xMjc1Nyw3ICsxMjg3MSw3IEBACiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CiAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kMSk7CiAgICAgICAgIGlmICghYnVmMikKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKQEAgLTEyNzc4LDM5ICsxMjg5MiwyMyBAQAogICAgICAgICBvdXQgPSAwOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKLSAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiAKIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9SUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfaW4sIFB5T2JqZWN0ICpzZXBfaW4pCitQeVVuaWNvZGVfUlBhcnRpdGlvbihQeU9iamVjdCAqc3RyX29iaiwgUHlPYmplY3QgKnNlcF9vYmopCiB7Ci0gICAgUHlPYmplY3QqIHN0cl9vYmo7Ci0gICAgUHlPYmplY3QqIHNlcF9vYmo7CiAgICAgUHlPYmplY3QqIG91dDsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwotICAgIGlmICghc3RyX29iaikKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoc3RyX29iaikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHNlcF9vYmopIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc2VwX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcF9pbik7Ci0gICAgaWYgKCFzZXBfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfb2JqKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHNlcF9vYmopOwpAQCAtMTI4MjQsOCArMTI5MjIsNiBAQAogICAgICAgICAgICAgb3V0ID0gUHlUdXBsZV9QYWNrKDMsIHVuaWNvZGVfZW1wdHksIHVuaWNvZGVfZW1wdHksIHN0cl9vYmopOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGVfZW1wdHkpOwogICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgICAgICByZXR1cm4gb3V0OwogICAgIH0KICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyX29iaik7CkBAIC0xMjgzMyw3ICsxMjkyOSw3IEBACiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CiAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kMSk7CiAgICAgICAgIGlmICghYnVmMikKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIHN3aXRjaCAoa2luZDEpIHsKQEAgLTEyODU0LDE4ICsxMjk1MCwxMCBAQAogICAgICAgICBvdXQgPSAwOwogICAgIH0KIAotICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKLSAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIG91dDsKLSAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQotICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIocGFydGl0aW9uX19kb2NfXywKQEAgLTEyODk3LDI0ICsxMjk4NSwxMCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX1JTcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgcyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHMpOwotICAgIGlmIChzID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHMpIDwgMCB8fCAoc2VwICE9IE5VTEwgJiYgZW5zdXJlX3VuaWNvZGUoc2VwKSA8IDApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2VwICE9IE5VTEwpIHsKLSAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwKTsKLSAgICAgICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KIAotICAgIHJlc3VsdCA9IHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKLQotICAgIFB5X0RFQ1JFRihzKTsKLSAgICBQeV9YREVDUkVGKHNlcCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gcnNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwogfQogCiBQeURvY19TVFJWQVIocnNwbGl0X19kb2NfXywKQEAgLTEyOTM5LDEwICsxMzAxMywxNCBAQAogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIE5VTEwsIG1heGNvdW50KTsKLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkKICAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfUlNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeURvY19TVFJWQVIoc3BsaXRsaW5lc19fZG9jX18sCkBAIC0xMzIyMywxMSArMTMzMDEsMTUgQEAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwotICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQorICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpOworICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vic3RyaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0dXBsZSBmb3Igc3RhcnRzd2l0aCBtdXN0IG9ubHkgY29udGFpbiBzdHIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewpAQCAtMTMyMzcsMTUgKzEzMzE5LDEzIEBACiAgICAgICAgIC8qIG5vdGhpbmcgbWF0Y2hlZCAqLwogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7Ci0gICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAic3RhcnRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgorICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJS4xMDBzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCAtMSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwpAQCAtMTMyNzUsMTIgKzEzMzU1LDE1IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKLSAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVwbGUgZm9yIGVuZHN3aXRoIG11c3Qgb25seSBjb250YWluIHN0ciwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc3Vic3RyaW5nKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CkBAIC0xMzI4OSw2MSArMTMzNzIsNjcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CiAgICAgfQotICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7Ci0gICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZW5kc3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCisgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlLjEwMHMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgKzEpOwotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJvYmosIHN0YXJ0LCBlbmQsICsxKTsKICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CiAKLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBfUHlVbmljb2RlV3JpdGVyX1VwZGF0ZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7Ci0gICAgaWYgKCF3cml0ZXItPnJlYWRvbmx5KQorICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7CisgICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOworCisgICAgaWYgKCF3cml0ZXItPnJlYWRvbmx5KSB7CisgICAgICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKICAgICAgICAgd3JpdGVyLT5zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpOworICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgLyogdXNlIGEgdmFsdWUgc21hbGxlciB0aGFuIFB5VW5pY29kZV8xQllURV9LSU5EKCkgc28KKyAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpIHdpbGwgY29weSB0aGUgYnVmZmVyLiAqLworICAgICAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfV0NIQVJfS0lORDsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+a2luZCA8PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisKICAgICAgICAgLyogQ29weS1vbi13cml0ZSBtb2RlOiBzZXQgYnVmZmVyIHNpemUgdG8gMCBzbwogICAgICAgICAgKiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKSB3aWxsIGNvcHkgKGFuZCBlbmxhcmdlKSB0aGUgYnVmZmVyIG9uCiAgICAgICAgICAqIG5leHQgd3JpdGUuICovCiAgICAgICAgIHdyaXRlci0+c2l6ZSA9IDA7CiAgICAgfQotICAgIHdyaXRlci0+bWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh3cml0ZXItPmJ1ZmZlcik7Ci0gICAgd3JpdGVyLT5kYXRhID0gUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpOwotICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9LSU5EKHdyaXRlci0+YnVmZmVyKTsKIH0KIAogdm9pZAogX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBtZW1zZXQod3JpdGVyLCAwLCBzaXplb2YoKndyaXRlcikpOwotI2lmZGVmIFB5X0RFQlVHCi0gICAgd3JpdGVyLT5raW5kID0gNTsgICAgLyogaW52YWxpZCBraW5kICovCi0jZW5kaWYKKworICAgIC8qIEFTQ0lJIGlzIHRoZSBiYXJlIG1pbmltdW0gKi8KICAgICB3cml0ZXItPm1pbl9jaGFyID0gMTI3OworCisgICAgLyogdXNlIGEgdmFsdWUgc21hbGxlciB0aGFuIFB5VW5pY29kZV8xQllURV9LSU5EKCkgc28KKyAgICAgICBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCkgd2lsbCBjb3B5IHRoZSBidWZmZXIuICovCisgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX1dDSEFSX0tJTkQ7CisgICAgYXNzZXJ0KHdyaXRlci0+a2luZCA8PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiB9CiAKIGludAogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcikKIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLwotIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgotI2Vsc2UKLSAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLwotIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAotI2VuZGlmCiAgICAgUHlfc3NpemVfdCBuZXdsZW47CiAgICAgUHlPYmplY3QgKm5ld2J1ZmZlcjsKIAotICAgIGFzc2VydChsZW5ndGggPiAwKTsKKyAgICBhc3NlcnQobWF4Y2hhciA8PSBNQVhfVU5JQ09ERSk7CisKKyAgICAvKiBlbnN1cmUgdGhhdCB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlIG1hY3JvIHdhcyB1c2VkICovCisgICAgYXNzZXJ0KChtYXhjaGFyID4gd3JpdGVyLT5tYXhjaGFyICYmIGxlbmd0aCA+PSAwKQorICAgICAgICAgICB8fCBsZW5ndGggPiAwKTsKIAogICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAtIHdyaXRlci0+cG9zKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0xMzQwOSw5ICsxMzQ5OCwzMiBAQAogI3VuZGVmIE9WRVJBTExPQ0FURV9GQUNUT1IKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK2ludAorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQpCit7CisgICAgUHlfVUNTNCBtYXhjaGFyOworCisgICAgLyogZW5zdXJlIHRoYXQgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQgbWFjcm8gd2FzIHVzZWQgKi8KKyAgICBhc3NlcnQod3JpdGVyLT5raW5kIDwga2luZCk7CisKKyAgICBzd2l0Y2ggKGtpbmQpCisgICAgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IG1heGNoYXIgPSAweGZmOyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBtYXhjaGFyID0gMHhmZmZmOyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiBtYXhjaGFyID0gMHgxMGZmZmY7IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwICYmICJpbnZhbGlkIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbCh3cml0ZXIsIDAsIG1heGNoYXIpOworfQorCitzdGF0aWMgaW5saW5lIGludAogX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeV9VQ1M0IGNoKQogeworICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CiAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIDEsIGNoKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLT5raW5kLCB3cml0ZXItPmRhdGEsIHdyaXRlci0+cG9zLCBjaCk7CkBAIC0xMzUyNCw3ICsxMzYzNiw3IEBACiAgICAgICAgIGNvbnN0IFB5X1VDUzEgKnN0ciA9IChjb25zdCBQeV9VQ1MxICopYXNjaWk7CiAgICAgICAgIFB5X1VDUzEgKmRhdGEgPSB3cml0ZXItPmRhdGE7CiAKLSAgICAgICAgUHlfTUVNQ1BZKGRhdGEgKyB3cml0ZXItPnBvcywgc3RyLCBsZW4pOworICAgICAgICBtZW1jcHkoZGF0YSArIHdyaXRlci0+cG9zLCBzdHIsIGxlbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgpAQCAtMTM1NjksMjcgKzEzNjgxLDMwIEBACiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgUHlPYmplY3QgKnN0cjsKKwogICAgIGlmICh3cml0ZXItPnBvcyA9PSAwKSB7CiAgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQorCisgICAgc3RyID0gd3JpdGVyLT5idWZmZXI7CisgICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOworCiAgICAgaWYgKHdyaXRlci0+cmVhZG9ubHkpIHsKLSAgICAgICAgc3RyID0gd3JpdGVyLT5idWZmZXI7Ci0gICAgICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gd3JpdGVyLT5wb3MpOwogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgod3JpdGVyLT5idWZmZXIpICE9IHdyaXRlci0+cG9zKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7Ci0gICAgICAgIG5ld2J1ZmZlciA9IHJlc2l6ZV9jb21wYWN0KHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcyk7Ci0gICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgIT0gd3JpdGVyLT5wb3MpIHsKKyAgICAgICAgUHlPYmplY3QgKnN0cjI7CisgICAgICAgIHN0cjIgPSByZXNpemVfY29tcGFjdChzdHIsIHdyaXRlci0+cG9zKTsKKyAgICAgICAgaWYgKHN0cjIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICAgICAgc3RyID0gc3RyMjsKICAgICB9Ci0gICAgc3RyID0gd3JpdGVyLT5idWZmZXI7Ci0gICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOworCiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfcmVhZHkoc3RyKTsKIH0KQEAgLTE0NzMwLDEzICsxNDg0NSwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBjdHguZm10c3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZm9ybWF0KTsKLSAgICBpZiAoY3R4LmZtdHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShmb3JtYXQpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShjdHguZm10c3RyKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKworICAgIGN0eC5mbXRzdHIgPSBmb3JtYXQ7CiAgICAgY3R4LmZtdGRhdGEgPSBQeVVuaWNvZGVfREFUQShjdHguZm10c3RyKTsKICAgICBjdHguZm10a2luZCA9IFB5VW5pY29kZV9LSU5EKGN0eC5mbXRzdHIpOwogICAgIGN0eC5mbXRjbnQgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChjdHguZm10c3RyKTsKQEAgLTE0Nzk2LDExICsxNDkwOCw5IEBACiAgICAgaWYgKGN0eC5hcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjdHguYXJncyk7CiAgICAgfQotICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJmN0eC53cml0ZXIpOwogCiAgIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmY3R4LndyaXRlcik7CiAgICAgaWYgKGN0eC5hcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjdHguYXJncyk7CkBAIC0xNDkxNyw3ICsxNTAyNyw3IEBACiAgICAgICAgIF9QeVVuaWNvZGVfV1NUUihzZWxmKSA9ICh3Y2hhcl90ICopZGF0YTsKICAgICB9CiAKLSAgICBQeV9NRU1DUFkoZGF0YSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgbWVtY3B5KGRhdGEsIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAogICAgICAgICAgICAgICBraW5kICogKGxlbmd0aCArIDEpKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHNlbGYsIDEpKTsKICNpZmRlZiBQeV9ERUJVRwpAQCAtMTUwNzgsMjYgKzE1MTg4LDE4IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogSXQgbWlnaHQgYmUgdGhhdCB0aGUgR2V0SXRlbSBjYWxsIGZhaWxzIGV2ZW4KLSAgICAgICB0aG91Z2ggdGhlIGtleSBpcyBwcmVzZW50IGluIHRoZSBkaWN0aW9uYXJ5LAotICAgICAgIG5hbWVseSB3aGVuIHRoaXMgaGFwcGVucyBkdXJpbmcgYSBzdGFjayBvdmVyZmxvdy4gKi8KICAgICBQeV9BTExPV19SRUNVUlNJT04KLSAgICB0ID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJuZWQsIHMpOworICAgIHQgPSBQeURpY3RfU2V0RGVmYXVsdChpbnRlcm5lZCwgcywgcyk7CiAgICAgUHlfRU5EX0FMTE9XX1JFQ1VSU0lPTgotCi0gICAgaWYgKHQpIHsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHQgIT0gcykgewogICAgICAgICBQeV9JTkNSRUYodCk7CiAgICAgICAgIFB5X1NFVFJFRigqcCwgdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAxOwotICAgIGlmIChQeURpY3RfU2V0SXRlbShpbnRlcm5lZCwgcywgcykgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDA7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMDsKICAgICAvKiBUaGUgdHdvIHJlZmVyZW5jZXMgaW4gaW50ZXJuZWQgYXJlIG5vdCBjb3VudGVkIGJ5IHJlZmNudC4KICAgICAgICBUaGUgZGVhbGxvY2F0b3Igd2lsbCB0YWtlIGNhcmUgb2YgdGhpcyAqLwogICAgIFB5X1JFRkNOVChzKSAtPSAyOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCmluZGV4IDdjNzgwYjYuLjM5YWY5MjAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAorKysgYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKQEAgLTI0NCwxMDkgKzI0NCwxMTkgQEAKICAgICB7MTY3Nzc1NjIsIDE3ODI2MTM2LCAxNjc3NzU2MiwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3NzU2NSwgMTc4MjYxMzksIDE2Nzc3NTY1LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDM4NDB9LAorICAgIHswLCAwLCAwLCAwLCAwLCA1ODg4fSwKKyAgICB7MTY3Nzc1NjgsIDE3ODI2MTQyLCAxNjc3NzU2OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3MSwgMTc4MjYxNDUsIDE2Nzc3NTcxLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTc0LCAxNzgyNjE0OCwgMTY3Nzc1NzQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzcsIDE3ODI2MTUxLCAxNjc3NzU3NywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4MCwgMTc4MjYxNTQsIDE2Nzc3NTgwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTgzLCAxNzgyNjE1NywgMTY3Nzc1ODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODYsIDE3ODI2MTYwLCAxNjc3NzU4NiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4OSwgMTc4MjYxNjMsIDE2Nzc3NTg5LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTkyLCAxNzgyNjE2NiwgMTY3Nzc1OTIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MzUzMzIsIDAsIDM1MzMyLCAwLCAwLCA5OTkzfSwKICAgICB7MzgxNCwgMCwgMzgxNCwgMCwgMCwgOTk5M30sCi0gICAgezMzNTU0Nzg1LCAxODg3NDcxOCwgMzM1NTQ3ODUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3OTAsIDE4ODc0NzIzLCAzMzU1NDc5MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDc5NSwgMTg4NzQ3MjgsIDMzNTU0Nzk1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODAwLCAxODg3NDczMywgMzM1NTQ4MDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4MDUsIDE4ODc0NzM4LCAzMzU1NDgwNSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3NzU5MywgMTc4MjYxNjcsIDE2Nzc3NTkzLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc3NTk3LCAxODg3NDc0NiwgMTY3Nzc1OTcsIDAsIDAsIDI2NDk3fSwKKyAgICB7MzM1NTQ4MTIsIDE4ODc0NzQ1LCAzMzU1NDgxMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgxNywgMTg4NzQ3NTAsIDMzNTU0ODE3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODIyLCAxODg3NDc1NSwgMzM1NTQ4MjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MjcsIDE4ODc0NzYwLCAzMzU1NDgyNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgzMiwgMTg4NzQ3NjUsIDMzNTU0ODMyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NjIwLCAxNzgyNjE5NCwgMTY3Nzc2MjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc2MjQsIDE4ODc0NzczLCAxNjc3NzYyNCwgMCwgMCwgMjY0OTd9LAogICAgIHs4LCAwLCA4LCAwLCAwLCA5OTkzfSwKICAgICB7MCwgLTgsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTQ4MTcsIDE4ODc0NzUwLCAzMzU1NDgxNywgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjAzOSwgMTk5MjMzMzEsIDUwMzMyMDM5LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDQ2LCAxOTkyMzMzOCwgNTAzMzIwNDYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwNTMsIDE5OTIzMzQ1LCA1MDMzMjA1MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg0NCwgMTg4NzQ3NzcsIDMzNTU0ODQ0LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDY2LCAxOTkyMzM1OCwgNTAzMzIwNjYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwNzMsIDE5OTIzMzY1LCA1MDMzMjA3MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA4MCwgMTk5MjMzNzIsIDUwMzMyMDgwLCAwLCAwLCAyNjM3N30sCiAgICAgezc0LCAwLCA3NCwgMCwgMCwgOTk5M30sCiAgICAgezg2LCAwLCA4NiwgMCwgMCwgOTk5M30sCiAgICAgezEwMCwgMCwgMTAwLCAwLCAwLCA5OTkzfSwKICAgICB7MTI4LCAwLCAxMjgsIDAsIDAsIDk5OTN9LAogICAgIHsxMTIsIDAsIDExMiwgMCwgMCwgOTk5M30sCiAgICAgezEyNiwgMCwgMTI2LCAwLCAwLCA5OTkzfSwKLSAgICB7MzM1NTQ4NDMsIDE4ODc0Nzc2LCAxNjc3NzYyOSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg0OSwgMTg4NzQ3ODIsIDE2Nzc3NjM1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODU1LCAxODg3NDc4OCwgMTY3Nzc2NDEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NjEsIDE4ODc0Nzk0LCAxNjc3NzY0NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg2NywgMTg4NzQ4MDAsIDE2Nzc3NjUzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODczLCAxODg3NDgwNiwgMTY3Nzc2NTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NzksIDE4ODc0ODEyLCAxNjc3NzY2NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg4NSwgMTg4NzQ4MTgsIDE2Nzc3NjcxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODkxLCAxODg3NDgyNCwgMTY3Nzc2NzcsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ4OTcsIDE4ODc0ODMwLCAxNjc3NzY4MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkwMywgMTg4NzQ4MzYsIDE2Nzc3Njg5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTA5LCAxODg3NDg0MiwgMTY3Nzc2OTUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MTUsIDE4ODc0ODQ4LCAxNjc3NzcwMSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkyMSwgMTg4NzQ4NTQsIDE2Nzc3NzA3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTI3LCAxODg3NDg2MCwgMTY3Nzc3MTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MzMsIDE4ODc0ODY2LCAxNjc3NzcxOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkzOSwgMTg4NzQ4NzIsIDE2Nzc3NzI1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTQ1LCAxODg3NDg3OCwgMTY3Nzc3MzEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NTEsIDE4ODc0ODg0LCAxNjc3NzczNywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk1NywgMTg4NzQ4OTAsIDE2Nzc3NzQzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTYzLCAxODg3NDg5NiwgMTY3Nzc3NDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NjksIDE4ODc0OTAyLCAxNjc3Nzc1NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk3NSwgMTg4NzQ5MDgsIDE2Nzc3NzYxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTgxLCAxODg3NDkxNCwgMTY3Nzc3NjcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5ODcsIDE4ODc0OTIwLCAxNjc3Nzc3MywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDk5MywgMTg4NzQ5MjYsIDE2Nzc3Nzc5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTk5LCAxODg3NDkzMiwgMTY3Nzc3ODUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMDUsIDE4ODc0OTM4LCAxNjc3Nzc5MSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAxMSwgMTg4NzQ5NDQsIDE2Nzc3Nzk3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDE3LCAxODg3NDk1MCwgMTY3Nzc4MDMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMjMsIDE4ODc0OTU2LCAxNjc3NzgwOSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAyOSwgMTg4NzQ5NjIsIDE2Nzc3ODE1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDM1LCAxODg3NDk2OCwgMTY3Nzc4MjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNDEsIDE4ODc0OTc0LCAxNjc3NzgyNywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA0NywgMTg4NzQ5ODAsIDE2Nzc3ODMzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDUzLCAxODg3NDk4NiwgMTY3Nzc4MzksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNTksIDE4ODc0OTkyLCAxNjc3Nzg0NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA2NSwgMTg4NzQ5OTgsIDE2Nzc3ODUxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDcxLCAxODg3NTAwNCwgMTY3Nzc4NTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNzcsIDE4ODc1MDEwLCAxNjc3Nzg2MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA4MywgMTg4NzUwMTYsIDE2Nzc3ODY5LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDg5LCAxODg3NTAyMiwgMTY3Nzc4NzUsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwOTUsIDE4ODc1MDI4LCAxNjc3Nzg4MSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEwMSwgMTg4NzUwMzQsIDE2Nzc3ODg3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTA3LCAxODg3NTA0MCwgMTY3Nzc4OTMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMTMsIDE4ODc1MDQ2LCAxNjc3Nzg5OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTExOSwgMTg4NzUwNTIsIDE2Nzc3OTA1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTI1LCAxODg3NTA1OCwgMTY3Nzc5MTEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMzEsIDE4ODc1MDY0LCAzMzU1NTEzMywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTEzOCwgMTg4NzUwNzEsIDE2Nzc3OTI0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTQ0LCAxODg3NTA3NywgMzM1NTUxNDYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxNTEsIDE4ODc1MDg0LCAzMzU1NTE1MSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjM3MywgMTk5MjM2NjUsIDUwMzMyMzc2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODcwLCAxODg3NDgwMywgMTY3Nzc2NTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NzYsIDE4ODc0ODA5LCAxNjc3NzY2MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg4MiwgMTg4NzQ4MTUsIDE2Nzc3NjY4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODg4LCAxODg3NDgyMSwgMTY3Nzc2NzQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4OTQsIDE4ODc0ODI3LCAxNjc3NzY4MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkwMCwgMTg4NzQ4MzMsIDE2Nzc3Njg2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTA2LCAxODg3NDgzOSwgMTY3Nzc2OTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTIsIDE4ODc0ODQ1LCAxNjc3NzY5OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxOCwgMTg4NzQ4NTEsIDE2Nzc3NzA0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTI0LCAxODg3NDg1NywgMTY3Nzc3MTAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzAsIDE4ODc0ODYzLCAxNjc3NzcxNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkzNiwgMTg4NzQ4NjksIDE2Nzc3NzIyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTQyLCAxODg3NDg3NSwgMTY3Nzc3MjgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NDgsIDE4ODc0ODgxLCAxNjc3NzczNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk1NCwgMTg4NzQ4ODcsIDE2Nzc3NzQwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTYwLCAxODg3NDg5MywgMTY3Nzc3NDYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NjYsIDE4ODc0ODk5LCAxNjc3Nzc1MiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk3MiwgMTg4NzQ5MDUsIDE2Nzc3NzU4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTc4LCAxODg3NDkxMSwgMTY3Nzc3NjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5ODQsIDE4ODc0OTE3LCAxNjc3Nzc3MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk5MCwgMTg4NzQ5MjMsIDE2Nzc3Nzc2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTk2LCAxODg3NDkyOSwgMTY3Nzc3ODIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMDIsIDE4ODc0OTM1LCAxNjc3Nzc4OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAwOCwgMTg4NzQ5NDEsIDE2Nzc3Nzk0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDE0LCAxODg3NDk0NywgMTY3Nzc4MDAsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjAsIDE4ODc0OTUzLCAxNjc3NzgwNiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAyNiwgMTg4NzQ5NTksIDE2Nzc3ODEyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDMyLCAxODg3NDk2NSwgMTY3Nzc4MTgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMzgsIDE4ODc0OTcxLCAxNjc3NzgyNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA0NCwgMTg4NzQ5NzcsIDE2Nzc3ODMwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDUwLCAxODg3NDk4MywgMTY3Nzc4MzYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNTYsIDE4ODc0OTg5LCAxNjc3Nzg0MiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA2MiwgMTg4NzQ5OTUsIDE2Nzc3ODQ4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDY4LCAxODg3NTAwMSwgMTY3Nzc4NTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNzQsIDE4ODc1MDA3LCAxNjc3Nzg2MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4MCwgMTg4NzUwMTMsIDE2Nzc3ODY2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDg2LCAxODg3NTAxOSwgMTY3Nzc4NzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwOTIsIDE4ODc1MDI1LCAxNjc3Nzg3OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA5OCwgMTg4NzUwMzEsIDE2Nzc3ODg0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTA0LCAxODg3NTAzNywgMTY3Nzc4OTAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMTAsIDE4ODc1MDQzLCAxNjc3Nzg5NiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTExNiwgMTg4NzUwNDksIDE2Nzc3OTAyLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTIyLCAxODg3NTA1NSwgMTY3Nzc5MDgsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMjgsIDE4ODc1MDYxLCAxNjc3NzkxNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEzNCwgMTg4NzUwNjcsIDE2Nzc3OTIwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTQwLCAxODg3NTA3MywgMTY3Nzc5MjYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNDYsIDE4ODc1MDc5LCAxNjc3NzkzMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE1MiwgMTg4NzUwODUsIDE2Nzc3OTM4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTU4LCAxODg3NTA5MSwgMzM1NTUxNjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNjUsIDE4ODc1MDk4LCAxNjc3Nzk1MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE3MSwgMTg4NzUxMDQsIDMzNTU1MTczLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTc4LCAxODg3NTExMSwgMzM1NTUxNzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0MDAsIDE5OTIzNjkyLCA1MDMzMjQwMywgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtNzQsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUxNjYsIDE4ODc1MDk5LCAxNjc3Nzk1MiwgMCwgMCwgMjY0MzN9LAotICAgIHsxNjc3Nzk1NSwgMTc4MjY1MjksIDE2Nzc3OTU1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTc1LCAxODg3NTEwOCwgMzM1NTUxNzcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxODIsIDE4ODc1MTE1LCAxNjc3Nzk2OCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE4OCwgMTg4NzUxMjEsIDMzNTU1MTkwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTk1LCAxODg3NTEyOCwgMzM1NTUxOTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0MTcsIDE5OTIzNzA5LCA1MDMzMjQyMCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE5MywgMTg4NzUxMjYsIDE2Nzc3OTc5LCAwLCAwLCAyNjQzM30sCisgICAgezE2Nzc3OTgyLCAxNzgyNjU1NiwgMTY3Nzc5ODIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMDIsIDE4ODc1MTM1LCAzMzU1NTIwNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIwOSwgMTg4NzUxNDIsIDE2Nzc3OTk1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjE1LCAxODg3NTE0OCwgMzM1NTUyMTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMjIsIDE4ODc1MTU1LCAzMzU1NTIyMiwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ0NCwgMTk5MjM3MzYsIDUwMzMyNDQ3LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC04NiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTIxMCwgMTg4NzUxNDMsIDE2Nzc3OTk2LCAwLCAwLCAyNjQzM30sCi0gICAgezUwMzMyNDMzLCAxOTkyMzcyNSwgNTAzMzI0MzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NDAsIDE5OTIzNzMyLCA1MDMzMjQ0MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTIzMCwgMTg4NzUxNjMsIDMzNTU1MjMwLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDUyLCAxOTkyMzc0NCwgNTAzMzI0NTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMzcsIDE4ODc1MTcwLCAxNjc3ODAyMywgMCwgMCwgMjY0MzN9LAorICAgIHs1MDMzMjQ2MCwgMTk5MjM3NTIsIDUwMzMyNDYwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDY3LCAxOTkyMzc1OSwgNTAzMzI0NjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyNTcsIDE4ODc1MTkwLCAzMzU1NTI1NywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ3OSwgMTk5MjM3NzEsIDUwMzMyNDc5LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMDAsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7NTAzMzI0NTksIDE5OTIzNzUxLCA1MDMzMjQ1OSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ2NiwgMTk5MjM3NTgsIDUwMzMyNDY2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjU2LCAxODg3NTE4OSwgMzM1NTUyNTYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyNjEsIDE4ODc1MTk0LCAzMzU1NTI2MSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ4MywgMTk5MjM3NzUsIDUwMzMyNDgzLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDg2LCAxOTkyMzc3OCwgNTAzMzI0ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0OTMsIDE5OTIzNzg1LCA1MDMzMjQ5MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI4MywgMTg4NzUyMTYsIDMzNTU1MjgzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1Mjg4LCAxODg3NTIyMSwgMzM1NTUyODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI1MTAsIDE5OTIzODAyLCA1MDMzMjUxMCwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTEyLCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MjczLCAxODg3NTIwNiwgMzM1NTUyNzUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyODAsIDE4ODc1MjEzLCAxNjc3ODA2NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI4NiwgMTg4NzUyMTksIDMzNTU1Mjg4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjkzLCAxODg3NTIyNiwgMzM1NTUyOTMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI1MTUsIDE5OTIzODA3LCA1MDMzMjUxOCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMwMCwgMTg4NzUyMzMsIDMzNTU1MzAyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzA3LCAxODg3NTI0MCwgMTY3NzgwOTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMTMsIDE4ODc1MjQ2LCAzMzU1NTMxNSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMyMCwgMTg4NzUyNTMsIDMzNTU1MzIwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNTQyLCAxOTkyMzgzNCwgNTAzMzI1NDUsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTEyOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHswLCAtMTI2LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MzA4LCAxODg3NTI0MSwgMTY3NzgwOTQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUzMzUsIDE4ODc1MjY4LCAxNjc3ODEyMSwgMCwgMCwgMjY0MzN9LAogICAgIHswLCAwLCAwLCAwLCAwLCAzMDc2fSwKICAgICB7MCwgMCwgMCwgMCwgNCwgMzA3Nn0sCiAgICAgezAsIDAsIDAsIDAsIDUsIDMwNzZ9LApAQCAtMzg4LDE1ICszOTgsNiBAQAogICAgIHswLCAtNDIyNjEsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgOTI4LCAwLCAwLCAwLCAxMDExM30sCiAgICAgey05MjgsIDAsIC05MjgsIDAsIDAsIDk5OTN9LAotICAgIHsxNjc3ODA5NywgMTc4MjY2NzEsIDE2Nzc4MDk3LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTAwLCAxNzgyNjY3NCwgMTY3NzgxMDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDMsIDE3ODI2Njc3LCAxNjc3ODEwMywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwNiwgMTc4MjY2ODAsIDE2Nzc4MTA2LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTA5LCAxNzgyNjY4MywgMTY3NzgxMDksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTIsIDE3ODI2Njg2LCAxNjc3ODExMiwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExNSwgMTc4MjY2ODksIDE2Nzc4MTE1LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTE4LCAxNzgyNjY5MiwgMTY3NzgxMTgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMjEsIDE3ODI2Njk1LCAxNjc3ODEyMSwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEyNCwgMTc4MjY2OTgsIDE2Nzc4MTI0LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTI3LCAxNzgyNjcwMSwgMTY3NzgxMjcsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMzAsIDE3ODI2NzA0LCAxNjc3ODEzMCwgMCwgMCwgMjYzNzd9LApAQCAtNDY4LDIyICs0NjksMzMgQEAKICAgICB7MTY3NzgzMjgsIDE3ODI2OTAyLCAxNjc3ODMyOCwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODMzMSwgMTc4MjY5MDUsIDE2Nzc4MzMxLCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MzM0LCAxNzgyNjkwOCwgMTY3NzgzMzQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NTQsIDE4ODc1NDg3LCAzMzU1NTU1NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU2MSwgMTg4NzU0OTQsIDMzNTU1NTYzLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTY4LCAxODg3NTUwMSwgMzM1NTU1NzAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI3OTIsIDE5OTI0MDg0LCA1MDMzMjc5NSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjgwMiwgMTk5MjQwOTQsIDUwMzMyODA1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzM3LCAxNzgyNjkxMSwgMTY3NzgzMzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDAsIDE3ODI2OTE0LCAxNjc3ODM0MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0MywgMTc4MjY5MTcsIDE2Nzc4MzQzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQ2LCAxNzgyNjkyMCwgMTY3NzgzNDYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDksIDE3ODI2OTIzLCAxNjc3ODM0OSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1MiwgMTc4MjY5MjYsIDE2Nzc4MzUyLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzU1LCAxNzgyNjkyOSwgMTY3NzgzNTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTgsIDE3ODI2OTMyLCAxNjc3ODM1OCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM2MSwgMTc4MjY5MzUsIDE2Nzc4MzYxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTgxLCAxODg3NTUxNCwgMzM1NTU1ODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU1ODgsIDE4ODc1NTIxLCAzMzU1NTU5MCwgMCwgMCwgMjYzNzd9LAogICAgIHszMzU1NTU5NSwgMTg4NzU1MjgsIDMzNTU1NTk3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjAyLCAxODg3NTUzNSwgMzM1NTU2MDQsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MDksIDE4ODc1NTQyLCAzMzU1NTYxMSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYxNiwgMTg4NzU1NDksIDMzNTU1NjE4LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjIzLCAxODg3NTU1NiwgMzM1NTU2MjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MzAsIDE4ODc1NTYzLCAzMzU1NTYzMiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYzNywgMTg4NzU1NzAsIDMzNTU1NjM5LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyODE5LCAxOTkyNDExMSwgNTAzMzI4MjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI4MjksIDE5OTI0MTIxLCA1MDMzMjgzMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYyMiwgMTg4NzU1NTUsIDMzNTU1NjI0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjI5LCAxODg3NTU2MiwgMzM1NTU2MzEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MzYsIDE4ODc1NTY5LCAzMzU1NTYzOCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY0MywgMTg4NzU1NzYsIDMzNTU1NjQ1LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjUwLCAxODg3NTU4MywgMzM1NTU2NTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NTcsIDE4ODc1NTkwLCAzMzU1NTY1OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY2NCwgMTg4NzU1OTcsIDMzNTU1NjY2LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEwMjV9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1NjMzfSwKICAgICB7MCwgNDAsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7LTQwLCAwLCAtNDAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAzNCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMzQsIDAsIC0zNCwgMCwgMCwgOTk5M30sCiAgICAgezAsIDAsIDAsIDAsIDAsIDkzNDR9LAogfTsKIApAQCAtODQwLDYgKzg1MiwzMyBAQAogICAgIDUxMTcsCiAgICAgNTEwOSwKICAgICA1MTA5LAorICAgIDcyOTYsCisgICAgMTA3NCwKKyAgICAxMDQyLAorICAgIDcyOTcsCisgICAgMTA3NiwKKyAgICAxMDQ0LAorICAgIDcyOTgsCisgICAgMTA4NiwKKyAgICAxMDU0LAorICAgIDcyOTksCisgICAgMTA4OSwKKyAgICAxMDU3LAorICAgIDczMDAsCisgICAgMTA5MCwKKyAgICAxMDU4LAorICAgIDczMDEsCisgICAgMTA5MCwKKyAgICAxMDU4LAorICAgIDczMDIsCisgICAgMTA5OCwKKyAgICAxMDY2LAorICAgIDczMDMsCisgICAgMTEyMywKKyAgICAxMTIyLAorICAgIDczMDQsCisgICAgNDI1NzEsCisgICAgNDI1NzAsCiAgICAgNzgzMCwKICAgICAxMDQsCiAgICAgODE3LApAQCAtMTczNiw2OSArMTc3NSw2OCBAQAogICAgIDEzMSwgMTMyLCAxMzMsIDEzNCwgMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgCiAgICAgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMTUxLCAxNDUsIDM0LCAzNCwgMTUyLCAxNDUsIDE1MywgMTU0LCAxNTUsIAogICAgIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTQ1LCAxNDUsIDE2MywgMTQ1LCAxNDUsIDE0NSwgMTY0LCAKLSAgICAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNDUsIDE0NSwgMTcxLCAxNDUsIDE3MiwgMTczLCAxNzQsIDE3NSwgCi0gICAgMTQ1LCAxNDUsIDE3NiwgMTQ1LCAxNDUsIDE0NSwgMTc3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNzgsIDE3OSwgMzQsIDE4MCwgMTQ1LCAxNDUsIAorICAgIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE0NSwgMTcxLCAxNzIsIDE0NSwgMTczLCAxNzQsIDE3NSwgMTc2LCAKKyAgICAxNDUsIDE0NSwgMTc3LCAxNDUsIDE0NSwgMTQ1LCAxNzgsIDE0NSwgMTQ1LCAxNzksIDE4MCwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE4MSwgMTgyLCAzNCwgMTgzLCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE4MSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE4NCwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTgyLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4MywgMTg0LCAxODUsIDE4NiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTg3LCAxODgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTkwLCAxOTEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTkyLCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDE5MywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE5NCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE5NSwgMTk2LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE4OSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE5MCwgMTkxLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgNjQsIDE5MiwgCi0gICAgMTkzLCAxOTQsIDE5NSwgMTQ1LCAxOTYsIDE0NSwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDY0LCAKLSAgICA2NCwgNjQsIDY0LCAyMDUsIDIwNiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDM0LCAyMDcsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjA4LCAKLSAgICAyMDksIDE0NSwgMTQ1LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMTQ1LCA2NCwgMjE1LCA2NCwgNjQsIDIxNiwgMjE3LCAKLSAgICA2NCwgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMjUsIDIyNiwgMjI3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjI4LCAzNCwgMjI5LCAyMzAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMTQ1LCA2NCwgMTk3LCAxOTgsIDE5OSwgMjAwLCAxNDUsIDIwMSwgMTQ1LCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LCAKKyAgICAyMDgsIDIwOSwgNjQsIDY0LCA2NCwgNjQsIDIxMCwgMjExLCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDIxMiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIxMywgMjE0LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAyMTUsIDIxNiwgMTQ1LCAxNDUsIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAxNDUsIDY0LCAyMjIsIDY0LCAKKyAgICA2NCwgNjQsIDY0LCA2NCwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyMzAsIDIzMSwgMjMyLCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4NywgMjMzLCAzNCwgMjM0LCAyMzUsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjMxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDIzMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMjMzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAyMzgsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzOSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM1LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNiwgMzQsIDIzNywgMzQsIAorICAgIDM0LCAzNCwgMzQsIDI0MCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAyNDEsIDM0LCAyNDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzgsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDI0MywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjMxLCAzNCwgMzQsIDIzOSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAzNCwgMjM2LCAzNCwgMzQsIDI0NCwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCkBAIC0yMjAxLDggKzIyMzksOCBAQAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDI0MCwgMTQ1LCAyNDEsIDI0MiwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjQ1LCAxNDUsIAorICAgIDI0NiwgMjQ3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKQEAgLTIyMzgsNyArMjI3Niw3IEBACiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKQEAgLTIyNzQsNyArMjMxMiw3IEBACiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDMsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQ4LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKQEAgLTIzMTEsNyArMjM0OSw3IEBACiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCi0gICAgMTI3LCAxMjcsIDEyNywgMTI3LCAyNDMsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQ4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKQEAgLTIzNDcsNyArMjM4NSw3IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2NSwgCiAgICAgMzAsIDMxLCA2NiwgNjcsIDY4LCA2OCwgMzAsIDMxLCA2OSwgNzAsIDcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgNzIsIDczLCA3NCwgNzUsIDc2LCAyMCwgNzcsIDc3LCAyMCwgNzgsIDIwLCA3OSwgODAsIDIwLCAyMCwgCi0gICAgMjAsIDc3LCA4MSwgMjAsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDg2LCAyMCwgODcsIDg4LCAyMCwgMjAsIDg2LCAyMCwgCisgICAgMjAsIDc3LCA4MSwgMjAsIDgyLCAyMCwgODMsIDg0LCAyMCwgODUsIDg2LCA4NCwgODcsIDg4LCAyMCwgMjAsIDg2LCAyMCwgCiAgICAgODksIDkwLCAyMCwgMjAsIDkxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTIsIDIwLCAyMCwgOTMsIDIwLCAyMCwgCiAgICAgOTMsIDIwLCAyMCwgMjAsIDk0LCA5MywgOTUsIDk2LCA5NiwgOTcsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTgsIDIwLCA1NSwgCiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5OSwgMTAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIApAQCAtMjQzNSwxNTIgKzI0NzMsMTUyIEBACiAgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDEwMiwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIAotICAgIDI1LCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgCi0gICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKLSAgICAyNSwgMjUsIDE4LCAwLCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKKyAgICAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjUsIDI1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgMjUsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgMTgsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCAKLSAgICAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDAsIAotICAgIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDAsIDI1LCAxOCwgMTgsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDE4LCAwLCAxOCwgMTgsIDI1LCAwLCAwLCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAyNSwgNTUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIAotICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgCisgICAgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAKKyAgICAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCA1LCA1NSwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDI1LCAxOCwgCisgICAgMTgsIDAsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAKLSAgICAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDE4LCAxOCwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMTgsIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDU1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCAxOCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMCwgMjUsIDAsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDE4LCAxOCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAxMDIsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCi0gICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgNTUsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMTAyLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgMjUsIDUsIDI1LCA1LCAyNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDEwMiwgMCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIAorICAgIDI1LCA1LCAyNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIDE4LCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzksIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAKLSAgICAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIDE4LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAKLSAgICAxMzksIDAsIDAsIDAsIDAsIDAsIDEzOSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDEwMiwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDAsIDE0MSwgMTQyLCAKLSAgICAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgCi0gICAgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIAotICAgIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAKLSAgICAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgCi0gICAgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIAotICAgIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAKLSAgICAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAyMzAsIDIzMSwgMjMyLCAyMzMsIDIzNCwgMCwgMCwgMjM1LCAyMzYsIAotICAgIDIzNywgMjM4LCAyMzksIDI0MCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAKKyAgICAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgCisgICAgMTc1LCAxNzYsIDE3NywgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIAorICAgIDE4OSwgMTkwLCAxOTEsIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAKKyAgICAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgCisgICAgMjE3LCAyMTgsIDIxOSwgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAyMzAsIAorICAgIDIzMSwgMjMyLCAyMzMsIDIzNCwgMCwgMCwgMjM1LCAyMzYsIDIzNywgMjM4LCAyMzksIDI0MCwgMCwgMCwgNSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI1OTMsMTA5ICsyNjMxLDExMCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1LCA1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAyNDEsIDI0MSwgMjQxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMjUsIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgCisgICAgMjQxLCAyNDEsIDI0MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1NSwgMjUsIDAsIAotICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMjUsIDI1LCAyNSwgMjEsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDIxLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNDIsIDI0MiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAKKyAgICAxOCwgMTgsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDAsIAorICAgIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgMTQwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI1LCAyNSwgMTgsIDE4LCAyNSwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTQwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMCwgMCwgNSwgNSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCisgICAgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAyNSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAwLCAwLCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAxMDIsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDI0MywgMjQ0LCAKKyAgICAyNDUsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAKLSAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAotICAgIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgCiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMjQyLCAyMCwgCi0gICAgMjAsIDIwLCAyNDMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMjUyLCAyMCwgMjAsIDIwLCAyNTMsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDEwMSwgMTAxLCAxMDEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIApAQCAtMjcwNCw0OSArMjc0Myw0OSBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDI0NCwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDIwLCAyMCwgMjUwLCAyMCwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDI1NCwgMjU1LCAyNTYsIDI1NywgMjU4LCAyNTksIDIwLCAyMCwgMjYwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDAsIDAsIDI1MiwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDAsIDAsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAwLCAKLSAgICAwLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAwLCAwLCAyNTMsIDI1MSwgMjU0LCAyNTEsIDI1NSwgMjUxLCAyNTYsIAotICAgIDI1MSwgMCwgMjUyLCAwLCAyNTIsIDAsIDI1MiwgMCwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIAotICAgIDI1MSwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1NywgMjU3LCAyNTgsIDI1OCwgMjU4LCAKLSAgICAyNTgsIDI1OSwgMjU5LCAyNjAsIDI2MCwgMjYxLCAyNjEsIDI2MiwgMjYyLCAwLCAwLCAyNjMsIDI2NCwgMjY1LCAyNjYsIAotICAgIDI2NywgMjY4LCAyNjksIDI3MCwgMjcxLCAyNzIsIDI3MywgMjc0LCAyNzUsIDI3NiwgMjc3LCAyNzgsIDI3OSwgMjgwLCAKLSAgICAyODEsIDI4MiwgMjgzLCAyODQsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAyOTAsIDI5MSwgMjkyLCAyOTMsIDI5NCwgCi0gICAgMjk1LCAyOTYsIDI5NywgMjk4LCAyOTksIDMwMCwgMzAxLCAzMDIsIDMwMywgMzA0LCAzMDUsIDMwNiwgMzA3LCAzMDgsIAotICAgIDMwOSwgMzEwLCAyNTEsIDI1MSwgMzExLCAzMTIsIDMxMywgMCwgMzE0LCAzMTUsIDI1MiwgMjUyLCAzMTYsIDMxNiwgMzE3LCAKLSAgICA2LCAzMTgsIDYsIDYsIDYsIDMxOSwgMzIwLCAzMjEsIDAsIDMyMiwgMzIzLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNSwgNiwgCi0gICAgNiwgNiwgMjUxLCAyNTEsIDMyNiwgMzI3LCAwLCAwLCAzMjgsIDMyOSwgMjUyLCAyNTIsIDMzMCwgMzMwLCAwLCA2LCA2LCA2LCAKLSAgICAyNTEsIDI1MSwgMzMxLCAzMzIsIDMzMywgMTI2LCAzMzQsIDMzNSwgMjUyLCAyNTIsIDMzNiwgMzM2LCAxMzAsIDYsIDYsIDYsIAotICAgIDAsIDAsIDMzNywgMzM4LCAzMzksIDAsIDM0MCwgMzQxLCAzNDIsIDM0MiwgMzQzLCAzNDMsIDM0NCwgNiwgNiwgMCwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCAKLSAgICA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIAotICAgIDIxLCAyMSwgMjEsIDIxLCAyMSwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDM0NSwgMTAxLCAKLSAgICAwLCAwLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCA1LCA1LCA1LCA1LCA1LCAxMDEsIDM0NSwgMjYsIDIyLCAyMywgCi0gICAgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgNSwgNSwgNSwgNSwgNSwgMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDMxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDAsIDAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAwLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAwLCAwLCAyNjMsIDI2MSwgMjY0LCAyNjEsIDI2NSwgMjYxLCAyNjYsIDI2MSwgMCwgCisgICAgMjYyLCAwLCAyNjIsIDAsIDI2MiwgMCwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgCisgICAgMjY5LCAyNzAsIDI3MCwgMjcxLCAyNzEsIDI3MiwgMjcyLCAwLCAwLCAyNzMsIDI3NCwgMjc1LCAyNzYsIDI3NywgMjc4LCAKKyAgICAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgCisgICAgMjkzLCAyOTQsIDI5NSwgMjk2LCAyOTcsIDI5OCwgMjk5LCAzMDAsIDMwMSwgMzAyLCAzMDMsIDMwNCwgMzA1LCAzMDYsIAorICAgIDMwNywgMzA4LCAzMDksIDMxMCwgMzExLCAzMTIsIDMxMywgMzE0LCAzMTUsIDMxNiwgMzE3LCAzMTgsIDMxOSwgMzIwLCAKKyAgICAyNjEsIDI2MSwgMzIxLCAzMjIsIDMyMywgMCwgMzI0LCAzMjUsIDI2MiwgMjYyLCAzMjYsIDMyNiwgMzI3LCA2LCAzMjgsIDYsIAorICAgIDYsIDYsIDMyOSwgMzMwLCAzMzEsIDAsIDMzMiwgMzMzLCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNSwgNiwgNiwgNiwgMjYxLCAKKyAgICAyNjEsIDMzNiwgMzM3LCAwLCAwLCAzMzgsIDMzOSwgMjYyLCAyNjIsIDM0MCwgMzQwLCAwLCA2LCA2LCA2LCAyNjEsIDI2MSwgCisgICAgMzQxLCAzNDIsIDM0MywgMTI2LCAzNDQsIDM0NSwgMjYyLCAyNjIsIDM0NiwgMzQ2LCAxMzAsIDYsIDYsIDYsIDAsIDAsIAorICAgIDM0NywgMzQ4LCAzNDksIDAsIDM1MCwgMzUxLCAzNTIsIDM1MiwgMzUzLCAzNTMsIDM1NCwgNiwgNiwgMCwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjEsIDIxLCAyMSwgMjEsIDIxLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA1LCA1LCA2LCAzLCAzLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIDIxLCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDM1NSwgMTAxLCAwLCAKKyAgICAwLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCA1LCA1LCA1LCA1LCA1LCAxMDEsIDM1NSwgMjYsIDIyLCAyMywgCisgICAgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgNSwgNSwgNSwgNSwgNSwgMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNiwgNiwgNiwgNiwgMjUsIDYsIDYsIDYsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDUsIDUsIDEyMCwgNSwgNSwgNSwgNSwgMTIwLCA1LCA1LCAyMCwgMTIwLCAxMjAsIDEyMCwgMjAsIDIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAyMCwgNSwgMTIwLCA1LCA1LCAzNTIsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAxMjAsIDUsIDM1MywgNSwgMTIwLCA1LCAzNTQsIDM1NSwgMTIwLCAxMjAsIDM1MiwgMjAsIDEyMCwgMTIwLCAzNTYsIDEyMCwgCisgICAgMTIwLCAyMCwgNSwgMTIwLCA1LCA1LCAzNjIsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAxMjAsIDUsIDM2MywgNSwgMTIwLCA1LCAzNjQsIDM2NSwgMTIwLCAxMjAsIDM2MiwgMjAsIDEyMCwgMTIwLCAzNjYsIDEyMCwgCiAgICAgMjAsIDU1LCA1NSwgNTUsIDU1LCAyMCwgNSwgNSwgMjAsIDIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgMTIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgNSwgNSwgNSwgNSwgMzU3LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAKLSAgICAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgCi0gICAgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDI0MSwgMjQxLCAyNDEsIDMwLCAzMSwgMjQxLCAyNDEsIAorICAgIDIwLCAyMCwgMjAsIDUsIDUsIDUsIDUsIDM2NywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgCisgICAgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIAorICAgIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAyNDEsIDI0MSwgMjQxLCAzMCwgMzEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMjc2MiwyOCArMjgwMSwyOCBAQAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgCi0gICAgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIAotICAgIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNTYsIAorICAgIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAKKyAgICAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCiAgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIAotICAgIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAKLSAgICAzNjAsIDM2MCwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgCi0gICAgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIAotICAgIDM0NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIAotICAgIDM0OSwgMzUwLCAzNTEsIDI3LCAzNDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgCisgICAgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIAorICAgIDM3MCwgMzcwLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAKKyAgICAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgCisgICAgMzU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgCisgICAgMzU5LCAzNjAsIDM2MSwgMjcsIDM1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI2LCAyMiwgCi0gICAgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIAotICAgIDM1MCwgMzUxLCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI2LCAyMiwgCisgICAgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNiwgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIAorICAgIDM2MCwgMzYxLCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0yODA1LDE4ICsyODQ0LDE4IEBACiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMCwgCi0gICAgMzAsIDMxLCAzNjIsIDM2MywgMzY0LCAzNjUsIDM2NiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzY3LCAzNjgsIDM2OSwgCi0gICAgMzcwLCAyMCwgMzAsIDMxLCAyMCwgMzAsIDMxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAzNzEsIDM3MSwgMzAsIAorICAgIDMwLCAzMSwgMzcyLCAzNzMsIDM3NCwgMzc1LCAzNzYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM3NywgMzc4LCAzNzksIAorICAgIDM4MCwgMjAsIDMwLCAzMSwgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMzgxLCAzODEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAyMCwgNSwgNSwgNSwgNSwgNSwgNSwgMzAsIDMxLCAzMCwgMzEsIAotICAgIDI1LCAyNSwgMjUsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgNTUsIAorICAgIDI1LCAyNSwgMjUsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMjcsIDUsIDUsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAwLCAzODIsIDAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgMCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjgyOSw4ICsyODY4LDggQEAKICAgICA1NSwgNTUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzczLCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzODMsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMjg4MiwxNCArMjkyMSwxNCBAQAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjg5OCw3ICsyOTM3LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjkwOCw3ICsyOTQ3LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjkxNiw0NyArMjk1NSw0NyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3NCwgCi0gICAgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzODQsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDM4NCwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDM4NCwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTY0LDcgKzMwMDMsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTczLDE0ICszMDEyLDE0IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yOTg4LDggKzMwMjcsOCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAzNzQsIDM3NCwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMzg0LCAzODQsIDM4NCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDAyLDExICszMDQxLDExIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAxNCwxMCArMzA1MywxMCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMjUsNyArMzA2NCw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMzMsNDAgKzMwNzIsNDAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMxMDYsMjYgKzMxNDUsMjYgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDM3NSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgNiwgMzAsIDMxLCAzNzYsIDIwLCA1NSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDEwMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzg1LCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTAyLCA2LCA2LCAzMCwgMzEsIDM4NiwgMjAsIDU1LCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM3NywgMzc4LCAzNzksIDM4MCwgMCwgMCwgMzgxLCAzODIsIDM4MywgMzg0LCAKLSAgICAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM4NywgMzg4LCAzODksIDM5MCwgMzg3LCAwLCAzOTEsIDM5MiwgMzkzLCAKKyAgICAzOTQsIDMwLCAzMSwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTAxLCAxMDEsIAotICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDE4LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDEwMSwgMTAxLCAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNTUsIDUsIDU1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIAogICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIApAQCAtMzE1OCwxNCArMzE5NywxNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAzODUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgCi0gICAgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NiwgMzg3LCAzODgsIDM4OSwgMzkwLCAKLSAgICAzOTEsIDM5MiwgMzkzLCAzOTQsIDM5NSwgMzk2LCAzOTcsIDM5OCwgMzk5LCA0MDAsIDQwMSwgNDAyLCA0MDMsIDQwNCwgCi0gICAgNDA1LCA0MDYsIDQwNywgNDA4LCA0MDksIDQxMCwgNDExLCA0MTIsIDQxMywgNDE0LCA0MTUsIDQxNiwgNDE3LCA0MTgsIAotICAgIDQxOSwgNDIwLCA0MjEsIDQyMiwgNDIzLCA0MjQsIDQyNSwgNDI2LCA0MjcsIDQyOCwgNDI5LCA0MzAsIDQzMSwgNDMyLCAKLSAgICA0MzMsIDQzNCwgNDM1LCA0MzYsIDQzNywgNDM4LCA0MzksIDQ0MCwgNDQxLCA0NDIsIDQ0MywgNDQ0LCA0NDUsIDQ0NiwgCi0gICAgNDQ3LCA0NDgsIDQ0OSwgNDUwLCA0NTEsIDQ1MiwgNDUzLCA0NTQsIDQ1NSwgNDU2LCA0NTcsIDQ1OCwgNDU5LCA0NjAsIAotICAgIDQ2MSwgNDYyLCA0NjMsIDQ2NCwgNDY1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyMCwgMjAsIDM5NSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDYsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk2LCAzOTcsIDM5OCwgMzk5LCA0MDAsIAorICAgIDQwMSwgNDAyLCA0MDMsIDQwNCwgNDA1LCA0MDYsIDQwNywgNDA4LCA0MDksIDQxMCwgNDExLCA0MTIsIDQxMywgNDE0LCAKKyAgICA0MTUsIDQxNiwgNDE3LCA0MTgsIDQxOSwgNDIwLCA0MjEsIDQyMiwgNDIzLCA0MjQsIDQyNSwgNDI2LCA0MjcsIDQyOCwgCisgICAgNDI5LCA0MzAsIDQzMSwgNDMyLCA0MzMsIDQzNCwgNDM1LCA0MzYsIDQzNywgNDM4LCA0MzksIDQ0MCwgNDQxLCA0NDIsIAorICAgIDQ0MywgNDQ0LCA0NDUsIDQ0NiwgNDQ3LCA0NDgsIDQ0OSwgNDUwLCA0NTEsIDQ1MiwgNDUzLCA0NTQsIDQ1NSwgNDU2LCAKKyAgICA0NTcsIDQ1OCwgNDU5LCA0NjAsIDQ2MSwgNDYyLCA0NjMsIDQ2NCwgNDY1LCA0NjYsIDQ2NywgNDY4LCA0NjksIDQ3MCwgCisgICAgNDcxLCA0NzIsIDQ3MywgNDc0LCA0NzUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1LCAxOCwgMjUsIDAsIDAsIDcsIAogICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzE4NiwxNSArMzIyNSwxNSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjA4LDkgKzMyNDcsOSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NiwgNDY3LCA0NjgsIDQ2OSwgCi0gICAgNDcwLCA0NzEsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCA0NzQsIDQ3NSwgNDc2LCAKLSAgICA0NzcsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgNDc3LCA0NzgsIDQ3OSwgCisgICAgNDgwLCA0ODEsIDQ4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgzLCA0ODQsIDQ4NSwgNDg2LCAKKyAgICA0ODcsIDAsIDAsIDAsIDAsIDAsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjI3LDcgKzMyNjYsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDc4LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgNDg4LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyNDIsMTMgKzMyODEsMTMgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDc4LCA0NzgsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA0ODgsIDQ4OCwgNSwgNSwgMCwgMCwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMTgsIDUsIDUsIDYsIDAsIDUsIDYsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAotICAgIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgMCwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgNDc4LCA1NSwgCisgICAgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCAwLCA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDU1LCA0ODgsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMyNjQsNyArMzMwMyw3IEBACiAgICAgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNDc5LCA0NzksIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA0ODksIDQ4OSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDAsIDUsIApAQCAtMzI5MCw3ICszMzI5LDcgQEAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCkBAIC0zMzIwLDI5NyArMzM1OSwzMzIgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMjQxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgMCwgMCwgMCwgMCwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNiwgMjIsIDIzLCAzNDYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIAotICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMCwgMTgsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAKLSAgICAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAotICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDE4LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAKLSAgICAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAotICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDUsIAotICAgIDU1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAyNSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKLSAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAKLSAgICAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDAsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1NSwgNTUsIAotICAgIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAKLSAgICAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjYsIDIyLCAyMywgMzU2LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgCisgICAgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNSwgNSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAorICAgIDE2LCA1NSwgNSwgNTUsIDUsIDUsIDUsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMTgsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICAyNSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMTgsIDAsIDAsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDAsIAorICAgIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCA1LCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDU1LCA1NSwgNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIAorICAgIDI3LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDU1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCAxMDIsIAorICAgIDEwMiwgMTAyLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKICAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAorICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDUsIDI1LCAyNSwgNSwgMjEsIAotICAgIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNSwgMjUsIDI1LCA1LCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTM3MDAsMjE4ICszNzc0LDIyMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNDUsIDM0NSwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAwLCAwLCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTUsIDM1NSwgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIAorICAgIDM2MSwgMjcsIDI3LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgNSwgNSwgNSwgNSwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDAsIDAsIDAsIDAsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDUsIDUsIDAsIDAsIDAsIDAsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA2LCA2LCA2LCA2LCA2LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAzNzQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCisgICAgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKICAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAKLSAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKQEAgLTM5MjQsMTMgKzQwMDEsMTMgQEAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKIH07CiAKIC8qIFJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXMgZG91YmxlIGZvciBVbmljb2RlIGNoYXJhY3RlcnMKQEAgLTM5OTYsMTEgKzQwNzMsMTMgQEAKICAgICBjYXNlIDB4MTExMzY6CiAgICAgY2FzZSAweDExMUQwOgogICAgIGNhc2UgMHgxMTJGMDoKKyAgICBjYXNlIDB4MTE0NTA6CiAgICAgY2FzZSAweDExNEQwOgogICAgIGNhc2UgMHgxMTY1MDoKICAgICBjYXNlIDB4MTE2QzA6CiAgICAgY2FzZSAweDExNzMwOgogICAgIGNhc2UgMHgxMThFMDoKKyAgICBjYXNlIDB4MTFDNTA6CiAgICAgY2FzZSAweDE2QTYwOgogICAgIGNhc2UgMHgxNkI1MDoKICAgICBjYXNlIDB4MUQ3Q0U6CkBAIC00MDA4LDYgKzQwODcsNyBAQAogICAgIGNhc2UgMHgxRDdFMjoKICAgICBjYXNlIDB4MUQ3RUM6CiAgICAgY2FzZSAweDFEN0Y2OgorICAgIGNhc2UgMHgxRTk1MDoKICAgICBjYXNlIDB4MUYxMDA6CiAgICAgY2FzZSAweDFGMTAxOgogICAgIGNhc2UgMHgxRjEwQjoKQEAgLTQxMDgsMTEgKzQxODgsMTQgQEAKICAgICBjYXNlIDB4MTExRDE6CiAgICAgY2FzZSAweDExMUUxOgogICAgIGNhc2UgMHgxMTJGMToKKyAgICBjYXNlIDB4MTE0NTE6CiAgICAgY2FzZSAweDExNEQxOgogICAgIGNhc2UgMHgxMTY1MToKICAgICBjYXNlIDB4MTE2QzE6CiAgICAgY2FzZSAweDExNzMxOgogICAgIGNhc2UgMHgxMThFMToKKyAgICBjYXNlIDB4MTFDNTE6CisgICAgY2FzZSAweDExQzVBOgogICAgIGNhc2UgMHgxMjQxNToKICAgICBjYXNlIDB4MTI0MUU6CiAgICAgY2FzZSAweDEyNDJDOgpAQCAtNDEyOCwxNyArNDIxMSwyMiBAQAogICAgIGNhc2UgMHgxRDdFRDoKICAgICBjYXNlIDB4MUQ3Rjc6CiAgICAgY2FzZSAweDFFOEM3OgorICAgIGNhc2UgMHgxRTk1MToKICAgICBjYXNlIDB4MUYxMDI6CiAgICAgY2FzZSAweDIwOTJBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wOworICAgIGNhc2UgMHgwRDVDOgogICAgIGNhc2UgMHgyMTUyOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzEwLjA7CiAgICAgY2FzZSAweDEwOUY2OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjQ6CiAgICAgY2FzZSAweDBCNzU6CisgICAgY2FzZSAweDBENzY6CiAgICAgY2FzZSAweEE4MzM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTYuMDsKKyAgICBjYXNlIDB4MEQ1ODoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xNjAuMDsKICAgICBjYXNlIDB4MDBCRDoKICAgICBjYXNlIDB4MEI3MzoKICAgICBjYXNlIDB4MEQ3NDoKQEAgLTQxNTIsNiArNDI0MCw4IEBACiAgICAgY2FzZSAweDEwRTdCOgogICAgIGNhc2UgMHgxMjQ2NDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8yLjA7CisgICAgY2FzZSAweDBENUI6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMjAuMDsKICAgICBjYXNlIDB4MjE1MzoKICAgICBjYXNlIDB4MTBFN0Q6CiAgICAgY2FzZSAweDEyNDVBOgpAQCAtNDE3MCw2ICs0MjYwLDkgQEAKICAgICBjYXNlIDB4MTI0NjI6CiAgICAgY2FzZSAweDEyNDYzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzQuMDsKKyAgICBjYXNlIDB4MEQ1OToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC80MC4wOworICAgIGNhc2UgMHgwRDVFOgogICAgIGNhc2UgMHgyMTU1OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzUuMDsKICAgICBjYXNlIDB4MjE1OToKQEAgLTQxNzksNiArNDI3Miw3IEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNy4wOwogICAgIGNhc2UgMHgwOUY1OgogICAgIGNhc2UgMHgwQjc2OgorICAgIGNhc2UgMHgwRDc3OgogICAgIGNhc2UgMHgyMTVCOgogICAgIGNhc2UgMHhBODM0OgogICAgIGNhc2UgMHgxMjQ1RjoKQEAgLTQyMzYsNiArNDMzMCw3IEBACiAgICAgY2FzZSAweDExMUVBOgogICAgIGNhc2UgMHgxMTczQToKICAgICBjYXNlIDB4MTE4RUE6CisgICAgY2FzZSAweDExQzYzOgogICAgIGNhc2UgMHgxNkI1QjoKICAgICBjYXNlIDB4MUQzNjk6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxMC4wOwpAQCAtNDI2OSw2ICs0MzY0LDcgQEAKICAgICBjYXNlIDB4MTBFNzI6CiAgICAgY2FzZSAweDExMDY0OgogICAgIGNhc2UgMHgxMTFGMzoKKyAgICBjYXNlIDB4MTFDNkM6CiAgICAgY2FzZSAweDE2QjVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAwLjA7CiAgICAgY2FzZSAweDBCRjI6CkBAIC00NDcwLDExICs0NTY2LDE0IEBACiAgICAgY2FzZSAweDExMUQyOgogICAgIGNhc2UgMHgxMTFFMjoKICAgICBjYXNlIDB4MTEyRjI6CisgICAgY2FzZSAweDExNDUyOgogICAgIGNhc2UgMHgxMTREMjoKICAgICBjYXNlIDB4MTE2NTI6CiAgICAgY2FzZSAweDExNkMyOgogICAgIGNhc2UgMHgxMTczMjoKICAgICBjYXNlIDB4MTE4RTI6CisgICAgY2FzZSAweDExQzUyOgorICAgIGNhc2UgMHgxMUM1QjoKICAgICBjYXNlIDB4MTI0MDA6CiAgICAgY2FzZSAweDEyNDE2OgogICAgIGNhc2UgMHgxMjQxRjoKQEAgLTQ0OTQsNiArNDU5Myw3IEBACiAgICAgY2FzZSAweDFEN0VFOgogICAgIGNhc2UgMHgxRDdGODoKICAgICBjYXNlIDB4MUU4Qzg6CisgICAgY2FzZSAweDFFOTUyOgogICAgIGNhc2UgMHgxRjEwMzoKICAgICBjYXNlIDB4MjIzOTA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyLjA7CkBAIC00NTM3LDYgKzQ2MzcsNyBAQAogICAgIGNhc2UgMHgxMTFFQjoKICAgICBjYXNlIDB4MTE3M0I6CiAgICAgY2FzZSAweDExOEVCOgorICAgIGNhc2UgMHgxMUM2NDoKICAgICBjYXNlIDB4MUQzNkE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAyMC4wOwogICAgIGNhc2UgMHgxMDExQToKQEAgLTQ2NTcsMTEgKzQ3NTgsMTQgQEAKICAgICBjYXNlIDB4MTExRDM6CiAgICAgY2FzZSAweDExMUUzOgogICAgIGNhc2UgMHgxMTJGMzoKKyAgICBjYXNlIDB4MTE0NTM6CiAgICAgY2FzZSAweDExNEQzOgogICAgIGNhc2UgMHgxMTY1MzoKICAgICBjYXNlIDB4MTE2QzM6CiAgICAgY2FzZSAweDExNzMzOgogICAgIGNhc2UgMHgxMThFMzoKKyAgICBjYXNlIDB4MTFDNTM6CisgICAgY2FzZSAweDExQzVDOgogICAgIGNhc2UgMHgxMjQwMToKICAgICBjYXNlIDB4MTI0MDg6CiAgICAgY2FzZSAweDEyNDE3OgpAQCAtNDY4Niw2ICs0NzkwLDcgQEAKICAgICBjYXNlIDB4MUQ3RUY6CiAgICAgY2FzZSAweDFEN0Y5OgogICAgIGNhc2UgMHgxRThDOToKKyAgICBjYXNlIDB4MUU5NTM6CiAgICAgY2FzZSAweDFGMTA0OgogICAgIGNhc2UgMHgyMEFGRDoKICAgICBjYXNlIDB4MjBCMTk6CkBAIC00Njk2LDEwICs0ODAxLDEzIEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMTIuMDsKICAgICBjYXNlIDB4MDlGNjoKICAgICBjYXNlIDB4MEI3NzoKKyAgICBjYXNlIDB4MEQ3ODoKICAgICBjYXNlIDB4QTgzNToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8xNi4wOwogICAgIGNhc2UgMHgwRjJCOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzIuMDsKKyAgICBjYXNlIDB4MEQ1RDoKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8yMC4wOwogICAgIGNhc2UgMHgwMEJFOgogICAgIGNhc2UgMHgwOUY4OgogICAgIGNhc2UgMHgwQjc0OgpAQCAtNDcxMSw2ICs0ODE5LDggQEAKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC81LjA7CiAgICAgY2FzZSAweDIxNUM6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvOC4wOworICAgIGNhc2UgMHgwRDVBOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzgwLjA7CiAgICAgY2FzZSAweDEzNzQ6CiAgICAgY2FzZSAweDMwM0E6CiAgICAgY2FzZSAweDMyNEE6CkBAIC00NzI0LDYgKzQ4MzQsNyBAQAogICAgIGNhc2UgMHgxMTA1RDoKICAgICBjYXNlIDB4MTExRUM6CiAgICAgY2FzZSAweDExOEVDOgorICAgIGNhc2UgMHgxMUM2NToKICAgICBjYXNlIDB4MUQzNkI6CiAgICAgY2FzZSAweDIwOTgzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMzAuMDsKQEAgLTQ4MzYsMTEgKzQ5NDcsMTQgQEAKICAgICBjYXNlIDB4MTExRDQ6CiAgICAgY2FzZSAweDExMUU0OgogICAgIGNhc2UgMHgxMTJGNDoKKyAgICBjYXNlIDB4MTE0NTQ6CiAgICAgY2FzZSAweDExNEQ0OgogICAgIGNhc2UgMHgxMTY1NDoKICAgICBjYXNlIDB4MTE2QzQ6CiAgICAgY2FzZSAweDExNzM0OgogICAgIGNhc2UgMHgxMThFNDoKKyAgICBjYXNlIDB4MTFDNTQ6CisgICAgY2FzZSAweDExQzVEOgogICAgIGNhc2UgMHgxMjQwMjoKICAgICBjYXNlIDB4MTI0MDk6CiAgICAgY2FzZSAweDEyNDBGOgpAQCAtNDg2Niw2ICs0OTgwLDcgQEAKICAgICBjYXNlIDB4MUQ3RjA6CiAgICAgY2FzZSAweDFEN0ZBOgogICAgIGNhc2UgMHgxRThDQToKKyAgICBjYXNlIDB4MUU5NTQ6CiAgICAgY2FzZSAweDFGMTA1OgogICAgIGNhc2UgMHgyMDA2NDoKICAgICBjYXNlIDB4MjAwRTI6CkBAIC00ODg2LDYgKzUwMDEsNyBAQAogICAgIGNhc2UgMHgxMTA1RToKICAgICBjYXNlIDB4MTExRUQ6CiAgICAgY2FzZSAweDExOEVEOgorICAgIGNhc2UgMHgxMUM2NjoKICAgICBjYXNlIDB4MTI0Njc6CiAgICAgY2FzZSAweDFEMzZDOgogICAgIGNhc2UgMHgyMDk4QzoKQEAgLTUwMDUsMTEgKzUxMjEsMTQgQEAKICAgICBjYXNlIDB4MTExRDU6CiAgICAgY2FzZSAweDExMUU1OgogICAgIGNhc2UgMHgxMTJGNToKKyAgICBjYXNlIDB4MTE0NTU6CiAgICAgY2FzZSAweDExNEQ1OgogICAgIGNhc2UgMHgxMTY1NToKICAgICBjYXNlIDB4MTE2QzU6CiAgICAgY2FzZSAweDExNzM1OgogICAgIGNhc2UgMHgxMThFNToKKyAgICBjYXNlIDB4MTFDNTU6CisgICAgY2FzZSAweDExQzVFOgogICAgIGNhc2UgMHgxMjQwMzoKICAgICBjYXNlIDB4MTI0MEE6CiAgICAgY2FzZSAweDEyNDEwOgpAQCAtNTAzMSw2ICs1MTUwLDcgQEAKICAgICBjYXNlIDB4MUQ3RjE6CiAgICAgY2FzZSAweDFEN0ZCOgogICAgIGNhc2UgMHgxRThDQjoKKyAgICBjYXNlIDB4MUU5NTU6CiAgICAgY2FzZSAweDFGMTA2OgogICAgIGNhc2UgMHgyMDEyMToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDUuMDsKQEAgLTUwNjcsNiArNTE4Nyw3IEBACiAgICAgY2FzZSAweDExMDVGOgogICAgIGNhc2UgMHgxMTFFRToKICAgICBjYXNlIDB4MTE4RUU6CisgICAgY2FzZSAweDExQzY3OgogICAgIGNhc2UgMHgxMjQ2ODoKICAgICBjYXNlIDB4MUQzNkQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1MC4wOwpAQCAtNTE3MiwxMSArNTI5MywxNCBAQAogICAgIGNhc2UgMHgxMTFENjoKICAgICBjYXNlIDB4MTExRTY6CiAgICAgY2FzZSAweDExMkY2OgorICAgIGNhc2UgMHgxMTQ1NjoKICAgICBjYXNlIDB4MTE0RDY6CiAgICAgY2FzZSAweDExNjU2OgogICAgIGNhc2UgMHgxMTZDNjoKICAgICBjYXNlIDB4MTE3MzY6CiAgICAgY2FzZSAweDExOEU2OgorICAgIGNhc2UgMHgxMUM1NjoKKyAgICBjYXNlIDB4MTFDNUY6CiAgICAgY2FzZSAweDEyNDA0OgogICAgIGNhc2UgMHgxMjQwQjoKICAgICBjYXNlIDB4MTI0MTE6CkBAIC01MTk0LDYgKzUzMTgsNyBAQAogICAgIGNhc2UgMHgxRDdGMjoKICAgICBjYXNlIDB4MUQ3RkM6CiAgICAgY2FzZSAweDFFOENDOgorICAgIGNhc2UgMHgxRTk1NjoKICAgICBjYXNlIDB4MUYxMDc6CiAgICAgY2FzZSAweDIwQUVBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNi4wOwpAQCAtNTIwOCw2ICs1MzMzLDcgQEAKICAgICBjYXNlIDB4MTEwNjA6CiAgICAgY2FzZSAweDExMUVGOgogICAgIGNhc2UgMHgxMThFRjoKKyAgICBjYXNlIDB4MTFDNjg6CiAgICAgY2FzZSAweDFEMzZFOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNjAuMDsKICAgICBjYXNlIDB4MTAxMUU6CkBAIC01MjkzLDExICs1NDE5LDE0IEBACiAgICAgY2FzZSAweDExMUQ3OgogICAgIGNhc2UgMHgxMTFFNzoKICAgICBjYXNlIDB4MTEyRjc6CisgICAgY2FzZSAweDExNDU3OgogICAgIGNhc2UgMHgxMTRENzoKICAgICBjYXNlIDB4MTE2NTc6CiAgICAgY2FzZSAweDExNkM3OgogICAgIGNhc2UgMHgxMTczNzoKICAgICBjYXNlIDB4MTE4RTc6CisgICAgY2FzZSAweDExQzU3OgorICAgIGNhc2UgMHgxMUM2MDoKICAgICBjYXNlIDB4MTI0MDU6CiAgICAgY2FzZSAweDEyNDBDOgogICAgIGNhc2UgMHgxMjQxMjoKQEAgLTUzMTYsNiArNTQ0NSw3IEBACiAgICAgY2FzZSAweDFEN0YzOgogICAgIGNhc2UgMHgxRDdGRDoKICAgICBjYXNlIDB4MUU4Q0Q6CisgICAgY2FzZSAweDFFOTU3OgogICAgIGNhc2UgMHgxRjEwODoKICAgICBjYXNlIDB4MjAwMDE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3LjA7CkBAIC01MzM0LDYgKzU0NjQsNyBAQAogICAgIGNhc2UgMHgxMTA2MToKICAgICBjYXNlIDB4MTExRjA6CiAgICAgY2FzZSAweDExOEYwOgorICAgIGNhc2UgMHgxMUM2OToKICAgICBjYXNlIDB4MUQzNkY6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA3MC4wOwogICAgIGNhc2UgMHgxMDExRjoKQEAgLTU0MTcsMTEgKzU1NDgsMTQgQEAKICAgICBjYXNlIDB4MTExRDg6CiAgICAgY2FzZSAweDExMUU4OgogICAgIGNhc2UgMHgxMTJGODoKKyAgICBjYXNlIDB4MTE0NTg6CiAgICAgY2FzZSAweDExNEQ4OgogICAgIGNhc2UgMHgxMTY1ODoKICAgICBjYXNlIDB4MTE2Qzg6CiAgICAgY2FzZSAweDExNzM4OgogICAgIGNhc2UgMHgxMThFODoKKyAgICBjYXNlIDB4MTFDNTg6CisgICAgY2FzZSAweDExQzYxOgogICAgIGNhc2UgMHgxMjQwNjoKICAgICBjYXNlIDB4MTI0MEQ6CiAgICAgY2FzZSAweDEyNDEzOgpAQCAtNTQzOSw2ICs1NTczLDcgQEAKICAgICBjYXNlIDB4MUQ3RjQ6CiAgICAgY2FzZSAweDFEN0ZFOgogICAgIGNhc2UgMHgxRThDRToKKyAgICBjYXNlIDB4MUU5NTg6CiAgICAgY2FzZSAweDFGMTA5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOC4wOwogICAgIGNhc2UgMHgxMDlGRDoKQEAgLTU0NTEsNiArNTU4Niw3IEBACiAgICAgY2FzZSAweDExMDYyOgogICAgIGNhc2UgMHgxMTFGMToKICAgICBjYXNlIDB4MTE4RjE6CisgICAgY2FzZSAweDExQzZBOgogICAgIGNhc2UgMHgxRDM3MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDgwLjA7CiAgICAgY2FzZSAweDEwMTIwOgpAQCAtNTUzNSwxMSArNTY3MSwxNCBAQAogICAgIGNhc2UgMHgxMTFEOToKICAgICBjYXNlIDB4MTExRTk6CiAgICAgY2FzZSAweDExMkY5OgorICAgIGNhc2UgMHgxMTQ1OToKICAgICBjYXNlIDB4MTE0RDk6CiAgICAgY2FzZSAweDExNjU5OgogICAgIGNhc2UgMHgxMTZDOToKICAgICBjYXNlIDB4MTE3Mzk6CiAgICAgY2FzZSAweDExOEU5OgorICAgIGNhc2UgMHgxMUM1OToKKyAgICBjYXNlIDB4MTFDNjI6CiAgICAgY2FzZSAweDEyNDA3OgogICAgIGNhc2UgMHgxMjQwRToKICAgICBjYXNlIDB4MTI0MTQ6CkBAIC01NTU5LDYgKzU2OTgsNyBAQAogICAgIGNhc2UgMHgxRDdGNToKICAgICBjYXNlIDB4MUQ3RkY6CiAgICAgY2FzZSAweDFFOENGOgorICAgIGNhc2UgMHgxRTk1OToKICAgICBjYXNlIDB4MUYxMEE6CiAgICAgY2FzZSAweDJGODkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOS4wOwpAQCAtNTU3NCw2ICs1NzE0LDcgQEAKICAgICBjYXNlIDB4MTEwNjM6CiAgICAgY2FzZSAweDExMUYyOgogICAgIGNhc2UgMHgxMThGMjoKKyAgICBjYXNlIDB4MTFDNkI6CiAgICAgY2FzZSAweDFEMzcxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgOTAuMDsKICAgICBjYXNlIDB4MTAxMjE6CmRpZmYgLS1naXQgYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCmluZGV4IDdlNmYzNjQuLmFiNmIyMzUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCisrKyBiL09iamVjdHMvd2Vha3JlZm9iamVjdC5jCkBAIC0yNjUsNyArMjY1LDcgQEAKIH0KIAogc3RhdGljIGludAotcGFyc2Vfd2Vha3JlZl9pbml0X2FyZ3MoY2hhciAqZnVuY25hbWUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAorcGFyc2Vfd2Vha3JlZl9pbml0X2FyZ3MoY29uc3QgY2hhciAqZnVuY25hbWUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvYnAsIFB5T2JqZWN0ICoqY2FsbGJhY2twKQogewogICAgIHJldHVybiBQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCBmdW5jbmFtZSwgMSwgMiwgb2JwLCBjYWxsYmFja3ApOwpAQCAtNDUzLDcgKzQ1Myw3IEBACiAgICAgbWV0aG9kKFB5T2JqZWN0ICpwcm94eSkgeyBcCiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzcGVjaWFsKTsgXAogICAgICAgICAgICAgVU5XUkFQKHByb3h5KTsgXAotICAgICAgICAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHByb3h5LCAmUHlJZF8jI3NwZWNpYWwsICIiKTsgXAorICAgICAgICAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHByb3h5LCAmUHlJZF8jI3NwZWNpYWwsIE5VTEwpOyBcCiAgICAgICAgIH0KIAogCmRpZmYgLS1naXQgYS9QQy9fbXNpLmMgYi9QQy9fbXNpLmMKaW5kZXggOWU3ZTM2ZC4uNzg5YjA0ZiAxMDA2NDQKLS0tIGEvUEMvX21zaS5jCisrKyBiL1BDL19tc2kuYwpAQCAtMTA0NiwxMiArMTA0NiwxMiBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEVESVJFQ1QiLCAoaW50KU1TSURCT1BFTl9DUkVBVEVESVJFQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFIiwgKGludClNU0lEQk9QRU5fQ1JFQVRFKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0RJUkVDVCIsIChpbnQpTVNJREJPUEVOX0RJUkVDVCk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9SRUFET05MWSIsIChpbnQpTVNJREJPUEVOX1JFQURPTkxZKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1RSQU5TQUNUIiwgKGludClNU0lEQk9QRU5fVFJBTlNBQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUEFUQ0hGSUxFIiwgKGludClNU0lEQk9QRU5fUEFUQ0hGSUxFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURURJUkVDVCIsIChsb25nKU1TSURCT1BFTl9DUkVBVEVESVJFQ1QpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFIiwgKGxvbmcpTVNJREJPUEVOX0NSRUFURSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9ESVJFQ1QiLCAobG9uZylNU0lEQk9QRU5fRElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1JFQURPTkxZIiwgKGxvbmcpTVNJREJPUEVOX1JFQURPTkxZKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1RSQU5TQUNUIiwgKGxvbmcpTVNJREJPUEVOX1RSQU5TQUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1BBVENIRklMRSIsIChsb25nKU1TSURCT1BFTl9QQVRDSEZJTEUpOwogCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJQ09MSU5GT19OQU1FUyk7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTVNJQ09MSU5GT19UWVBFUyk7CmRpZmYgLS1naXQgYS9QQy9fdGVzdGNvbnNvbGUuYyBiL1BDL190ZXN0Y29uc29sZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOTM2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9fdGVzdGNvbnNvbGUuYwpAQCAtMCwwICsxLDEzMSBAQAorCisvKiBUZXN0aW5nIG1vZHVsZSBmb3IgbXVsdGktcGhhc2UgaW5pdGlhbGl6YXRpb24gb2YgZXh0ZW5zaW9uIG1vZHVsZXMgKFBFUCA0ODkpCisgKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisjaWZkZWYgTVNfV0lORE9XUworCisjaW5jbHVkZSAiLi5cbW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiCisKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisgLyogVGhlIGZ1bGwgZGVmaW5pdGlvbiBpcyBpbiBpb21vZHVsZS4gV2UgcmVwcm9kdWNlCisgZW5vdWdoIGhlcmUgdG8gZ2V0IHRoZSBoYW5kbGUsIHdoaWNoIGlzIGFsbCB3ZSB3YW50LiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBIQU5ETEUgaGFuZGxlOworfSB3aW5jb25zb2xlaW87CisKKworc3RhdGljIGludCBleGVjZnVuYyhQeU9iamVjdCAqbSkKK3sKKyAgICByZXR1cm4gMDsKK30KKworUHlNb2R1bGVEZWZfU2xvdCB0ZXN0Y29uc29sZV9zbG90c1tdID0geworICAgIHtQeV9tb2RfZXhlYywgZXhlY2Z1bmN9LAorICAgIHswLCBOVUxMfSwKK307CisKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfdGVzdGNvbnNvbGUKKworX3Rlc3Rjb25zb2xlLndyaXRlX2lucHV0CisgICAgZmlsZTogb2JqZWN0CisgICAgczogUHlCeXRlc09iamVjdAorCitXcml0ZXMgVVRGLTE2LUxFIGVuY29kZWQgYnl0ZXMgdG8gdGhlIGNvbnNvbGUgYXMgaWYgdHlwZWQgYnkgYSB1c2VyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzT2JqZWN0ICpzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ4Zjk1NjNkYjM0YWVkYjMgaW5wdXQ9NGM3NzRmMmQwNTc3MGJjNl0qLworeworICAgIElOUFVUX1JFQ09SRCAqcmVjID0gTlVMTDsKKyAgICAKKyAgICBpZiAoIVB5V2luZG93c0NvbnNvbGVJT19DaGVjayhmaWxlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgcmF3IGNvbnNvbGUgb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGNvbnN0IHdjaGFyX3QgKnAgPSAoY29uc3Qgd2NoYXJfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHMpOworICAgIERXT1JEIHNpemUgPSAoRFdPUkQpUHlCeXRlc19HRVRfU0laRShzKSAvIHNpemVvZih3Y2hhcl90KTsKKworICAgIHJlYyA9IChJTlBVVF9SRUNPUkQqKVB5TWVtX01hbGxvYyhzaXplb2YoSU5QVVRfUkVDT1JEKSAqIHNpemUpOworICAgIGlmICghcmVjKQorICAgICAgICBnb3RvIGVycm9yOworICAgIG1lbXNldChyZWMsIDAsIHNpemVvZihJTlBVVF9SRUNPUkQpICogc2l6ZSk7CisgICAgCisgICAgSU5QVVRfUkVDT1JEICpwcmVjID0gcmVjOworICAgIGZvciAoRFdPUkQgaSA9IDA7IGkgPCBzaXplOyArK2ksICsrcCwgKytwcmVjKSB7CisgICAgICAgIHByZWMtPkV2ZW50VHlwZSA9IEtFWV9FVkVOVDsKKyAgICAgICAgcHJlYy0+RXZlbnQuS2V5RXZlbnQuYktleURvd24gPSBUUlVFOworICAgICAgICBwcmVjLT5FdmVudC5LZXlFdmVudC53UmVwZWF0Q291bnQgPSAxMDsKKyAgICAgICAgcHJlYy0+RXZlbnQuS2V5RXZlbnQudUNoYXIuVW5pY29kZUNoYXIgPSAqcDsKKyAgICB9CisKKyAgICBIQU5ETEUgaElucHV0ID0gKCh3aW5jb25zb2xlaW8qKWZpbGUpLT5oYW5kbGU7CisgICAgRFdPUkQgdG90YWwgPSAwOworICAgIHdoaWxlICh0b3RhbCA8IHNpemUpIHsKKyAgICAgICAgRFdPUkQgd3JvdGU7CisgICAgICAgIGlmICghV3JpdGVDb25zb2xlSW5wdXRXKGhJbnB1dCwgJnJlY1t0b3RhbF0sIChzaXplIC0gdG90YWwpLCAmd3JvdGUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgdG90YWwgKz0gd3JvdGU7CisgICAgfQorCisgICAgUHlNZW1fRnJlZSgodm9pZCopcmVjKTsKKyAgICAKKyAgICBQeV9SRVRVUk5fTk9ORTsKK2Vycm9yOgorICAgIGlmIChyZWMpCisgICAgICAgIFB5TWVtX0ZyZWUoKHZvaWQqKXJlYyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK190ZXN0Y29uc29sZS5yZWFkX291dHB1dAorICAgIGZpbGU6IG9iamVjdAorCitSZWFkcyBhIHN0ciBmcm9tIHRoZSBjb25zb2xlIGFzIHdyaXR0ZW4gdG8gc3Rkb3V0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODc2MzEwZDgxYTczZTZkMiBpbnB1dD1iMzUyMWY2NGIxYjU1OGUzXSovCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNpbmNsdWRlICJjbGluaWNcX3Rlc3Rjb25zb2xlLmMuaCIKKworUHlNZXRob2REZWYgdGVzdGNvbnNvbGVfbWV0aG9kc1tdID0geworICAgIF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYKKyAgICBfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGCisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgdGVzdGNvbnNvbGVfZGVmID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAgICAgICAgICAgICAgICAgLyogbV9iYXNlICovCisgICAgIl90ZXN0Y29uc29sZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBQeURvY19TVFIoIlRlc3QgbW9kdWxlIGZvciB0aGUgV2luZG93cyBjb25zb2xlIiksIC8qIG1fZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3NpemUgKi8KKyAgICB0ZXN0Y29uc29sZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIHRlc3Rjb25zb2xlX3Nsb3RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV90cmF2ZXJzZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0Y29uc29sZShQeU9iamVjdCAqc3BlYykKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVEZWZfSW5pdCgmdGVzdGNvbnNvbGVfZGVmKTsKK30KKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKaW5kZXggNjBiZWUzMC4uZmQ5NzdmNSAxMDA2NDQKLS0tIGEvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC9pbnN0YWxsLmMKQEAgLTcxOCw3ICs3MTgsNyBAQAogICogMSBpZiB0aGUgUHl0aG9uLWRsbCBkb2VzIG5vdCBleHBvcnQgdGhlIGZ1bmN0aW9ucyB3ZSBuZWVkCiAgKiAyIGlmIG5vIGluc3RhbGwtc2NyaXB0IGlzIHNwZWNpZmllZCBpbiBwYXRobmFtZQogICogMyBpZiB0aGUgaW5zdGFsbC1zY3JpcHQgZmlsZSBjb3VsZCBub3QgYmUgb3BlbmVkCi0gKiB0aGUgcmV0dXJuIHZhbHVlIG9mIFB5UnVuX1NpbXBsZVN0cmluZygpIG90aGVyd2lzZSwKKyAqIHRoZSByZXR1cm4gdmFsdWUgb2YgUHlSdW5fU2ltcGxlU3RyaW5nKCkgb3IgUHlfRmluYWxpemVFeCgpIG90aGVyd2lzZSwKICAqIHdoaWNoIGlzIDAgaWYgZXZlcnl0aGluZyBpcyBvaywgLTEgaWYgYW4gZXhjZXB0aW9uIGhhZCBvY2N1cnJlZAogICogaW4gdGhlIGluc3RhbGwtc2NyaXB0LgogICovCkBAIC03MzEsNyArNzMxLDcgQEAKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9Jbml0aWFsaXplLCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlTeXNfU2V0QXJndiwgKGludCwgd2NoYXJfdCAqKikpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlSdW5fU2ltcGxlU3RyaW5nLCAoY2hhciAqKSk7Ci0gICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfRmluYWxpemUsICh2b2lkKSk7CisgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeV9GaW5hbGl6ZUV4LCAodm9pZCkpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIFB5T2JqZWN0ICosIFB5X0J1aWxkVmFsdWUsIChjaGFyICosIC4uLikpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIFB5T2JqZWN0ICosIFB5Q0Z1bmN0aW9uX05ldywKICAgICAgICAgICAgICAoUHlNZXRob2REZWYgKiwgUHlPYmplY3QgKikpOwpAQCAtNzM5LDcgKzczOSw3IEBACiAgICAgREVDTFBST0MoaFB5dGhvbiwgUHlPYmplY3QgKiwgUHlFcnJfRm9ybWF0LCAoUHlPYmplY3QgKiwgY2hhciAqKSk7CiAKICAgICBpZiAoIVB5X0luaXRpYWxpemUgfHwgIVB5U3lzX1NldEFyZ3YKLSAgICAgICAgfHwgIVB5UnVuX1NpbXBsZVN0cmluZyB8fCAhUHlfRmluYWxpemUpCisgICAgICAgIHx8ICFQeVJ1bl9TaW1wbGVTdHJpbmcgfHwgIVB5X0ZpbmFsaXplRXgpCiAgICAgICAgIHJldHVybiAxOwogCiAgICAgaWYgKCFQeV9CdWlsZFZhbHVlIHx8ICFQeUFyZ19QYXJzZVR1cGxlIHx8ICFQeUVycl9Gb3JtYXQpCkBAIC03ODYsNyArNzg2LDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHJlc3VsdCA9IC0xOworICAgIH0KIAogICAgIGNsb3NlKGZoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtODQ4LDExICs4NTAsMTEgQEAKICAgICBpbnQgcmM7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfSW5pdGlhbGl6ZSwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9TZXRQcm9ncmFtTmFtZSwgKHdjaGFyX3QgKikpOwotICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0ZpbmFsaXplLCAodm9pZCkpOworICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlfRmluYWxpemVFeCwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5UnVuX1NpbXBsZVN0cmluZywgKGNoYXIgKikpOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5RXJyX1ByaW50LCAodm9pZCkpOwogCi0gICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeV9TZXRQcm9ncmFtTmFtZSB8fCAhUHlfRmluYWxpemUgfHwKKyAgICBpZiAoIVB5X0luaXRpYWxpemUgfHwgIVB5X1NldFByb2dyYW1OYW1lIHx8ICFQeV9GaW5hbGl6ZUV4IHx8CiAgICAgICAgICFQeVJ1bl9TaW1wbGVTdHJpbmcgfHwgIVB5RXJyX1ByaW50KQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTg2Miw3ICs4NjQsOSBAQAogICAgIHJjID0gUHlSdW5fU2ltcGxlU3RyaW5nKHNjcmlwdCk7CiAgICAgaWYgKHJjKQogICAgICAgICBQeUVycl9QcmludCgpOwotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgcmMgPSAtMTsKKyAgICB9CiAgICAgcmV0dXJuIHJjOwogfQogCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvX3Rlc3Rjb25zb2xlLmMuaCBiL1BDL2NsaW5pYy9fdGVzdGNvbnNvbGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzODYwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9jbGluaWMvX3Rlc3Rjb25zb2xlLmMuaApAQCAtMCwwICsxLDgyIEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X19kb2NfXywKKyJ3cml0ZV9pbnB1dCgkbW9kdWxlLCAvLCBmaWxlLCBzKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGVzIFVURi0xNi1MRSBlbmNvZGVkIGJ5dGVzIHRvIHRoZSBjb25zb2xlIGFzIGlmIHR5cGVkIGJ5IGEgdXNlci4iKTsKKworI2RlZmluZSBfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlX2lucHV0IiwgKFB5Q0Z1bmN0aW9uKV90ZXN0Y29uc29sZV93cml0ZV9pbnB1dCwgTUVUSF9GQVNUQ0FMTCwgX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNPYmplY3QgKnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT1M6d3JpdGVfaW5wdXQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIFB5Qnl0ZXNPYmplY3QgKnM7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZpbGUsICZzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF90ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9pbXBsKG1vZHVsZSwgZmlsZSwgcyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF90ZXN0Y29uc29sZV9yZWFkX291dHB1dF9fZG9jX18sCisicmVhZF9vdXRwdXQoJG1vZHVsZSwgLywgZmlsZSlcbiIKKyItLVxuIgorIlxuIgorIlJlYWRzIGEgc3RyIGZyb20gdGhlIGNvbnNvbGUgYXMgd3JpdHRlbiB0byBzdGRvdXQuIik7CisKKyNkZWZpbmUgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkX291dHB1dCIsIChQeUNGdW5jdGlvbilfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXQsIE1FVEhfRkFTVENBTEwsIF90ZXN0Y29uc29sZV9yZWFkX291dHB1dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86cmVhZF9vdXRwdXQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpmaWxlOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF90ZXN0Y29uc29sZV9yZWFkX291dHB1dF9pbXBsKG1vZHVsZSwgZmlsZSk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmbmRlZiBfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGCisgICAgI2RlZmluZSBfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRikgKi8KKworI2lmbmRlZiBfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGCisgICAgI2RlZmluZSBfVEVTVENPTlNPTEVfUkVBRF9PVVRQVVRfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zYThkYzBjNDIxODA3YzQxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oIGIvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmgKaW5kZXggZTdhNzJjNC4uNjkzNWNhZCAxMDA2NDQKLS0tIGEvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmgKKysrIGIvUEMvY2xpbmljL21zdmNydG1vZHVsZS5jLmgKQEAgLTUxLDggKzUxLDkgQEAKICAgICBsb25nIG5ieXRlczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlsOmxvY2tpbmciLAotICAgICAgICAmZmQsICZtb2RlLCAmbmJ5dGVzKSkKKyAgICAgICAgJmZkLCAmbW9kZSwgJm5ieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBtc3ZjcnRfbG9ja2luZ19pbXBsKG1vZHVsZSwgZmQsIG1vZGUsIG5ieXRlcyk7CiAKIGV4aXQ6CkBAIC04NSwxMSArODYsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldG1vZGUiLAotICAgICAgICAmZmQsICZmbGFncykpCisgICAgICAgICZmZCwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0bW9kZV9pbXBsKG1vZHVsZSwgZmQsIGZsYWdzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTEwLDIyICsxMTMsMjQgQEAKICAgICB7Im9wZW5fb3NmaGFuZGxlIiwgKFB5Q0Z1bmN0aW9uKW1zdmNydF9vcGVuX29zZmhhbmRsZSwgTUVUSF9WQVJBUkdTLCBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfX2RvY19ffSwKIAogc3RhdGljIGxvbmcKLW1zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwgaW50IGZsYWdzKTsKK21zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludHB0cl90IGhhbmRsZSwgaW50IGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG1zdmNydF9vcGVuX29zZmhhbmRsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50cHRyX3QgaGFuZGxlOwogICAgIGludCBmbGFnczsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJfUHlfUEFSU0VfSU5UUFRSImk6b3Blbl9vc2ZoYW5kbGUiLAotICAgICAgICAmaGFuZGxlLCAmZmxhZ3MpKQorICAgICAgICAmaGFuZGxlLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCBmbGFncyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE0Myw3ICsxNDgsNyBAQAogI2RlZmluZSBNU1ZDUlRfR0VUX09TRkhBTkRMRV9NRVRIT0RERUYgICAgXAogICAgIHsiZ2V0X29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfZ2V0X29zZmhhbmRsZSwgTUVUSF9PLCBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9fZG9jX199LAogCi1zdGF0aWMgUHlfaW50cHRyX3QKK3N0YXRpYyBpbnRwdHJfdAogbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTUxLDEzICsxNTYsMTUgQEAKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmQ7Ci0gICAgUHlfaW50cHRyX3QgX3JldHVybl92YWx1ZTsKKyAgICBpbnRwdHJfdCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldF9vc2ZoYW5kbGUiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfb3NmaGFuZGxlIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKG1vZHVsZSwgZmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVZvaWRQdHIoKHZvaWQgKilfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE4Myw4ICsxOTAsOSBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfa2JoaXRfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMTEsOCArMzE5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjaGFyIGNoYXJfdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6cHV0Y2giLCAmY2hhcl92YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnB1dGNoIiwgJmNoYXJfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3B1dGNoX2ltcGwobW9kdWxlLCBjaGFyX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMzNyw4ICszNDYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB1bmljb2RlX2NoYXI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6cHV0d2NoIiwgJnVuaWNvZGVfY2hhcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnB1dHdjaCIsICZ1bmljb2RlX2NoYXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3B1dHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKIAogZXhpdDoKQEAgLTM2Nyw4ICszNzcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNoYXIgY2hhcl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzp1bmdldGNoIiwgJmNoYXJfdmFsdWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzp1bmdldGNoIiwgJmNoYXJfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3VuZ2V0Y2hfaW1wbChtb2R1bGUsIGNoYXJfdmFsdWUpOwogCiBleGl0OgpAQCAtMzkzLDggKzQwNCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHVuaWNvZGVfY2hhcjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzp1bmdldHdjaCIsICZ1bmljb2RlX2NoYXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzp1bmdldHdjaCIsICZ1bmljb2RlX2NoYXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3VuZ2V0d2NoX2ltcGwobW9kdWxlLCB1bmljb2RlX2NoYXIpOwogCiBleGl0OgpAQCAtNDI2LDExICs0MzgsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkNydFNldFJlcG9ydEZpbGUiLAotICAgICAgICAmdHlwZSwgJmZpbGUpKQorICAgICAgICAmdHlwZSwgJmZpbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9DcnRTZXRSZXBvcnRGaWxlX2ltcGwobW9kdWxlLCB0eXBlLCBmaWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDY0LDExICs0NzgsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkNydFNldFJlcG9ydE1vZGUiLAotICAgICAgICAmdHlwZSwgJm1vZGUpKQorICAgICAgICAmdHlwZSwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9DcnRTZXRSZXBvcnRNb2RlX2ltcGwobW9kdWxlLCB0eXBlLCBtb2RlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTAwLDExICs1MTYsMTMgQEAKICAgICBpbnQgbW9kZTsKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6c2V0X2Vycm9yX21vZGUiLCAmbW9kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldF9lcnJvcl9tb2RlIiwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG1zdmNydF9zZXRfZXJyb3JfbW9kZV9pbXBsKG1vZHVsZSwgbW9kZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUzMSw4ICs1NDksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHVuc2lnbmVkIGludCBtb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOlNldEVycm9yTW9kZSIsICZtb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6U2V0RXJyb3JNb2RlIiwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X1NldEVycm9yTW9kZV9pbXBsKG1vZHVsZSwgbW9kZSk7CiAKIGV4aXQ6CkBAIC01NTAsNCArNTY5LDQgQEAKICNpZm5kZWYgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgogICAgICNkZWZpbmUgTVNWQ1JUX1NFVF9FUlJPUl9NT0RFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmE3OTRjNTIwZDZhZTg4NyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWUwNGUyYjUwZWVmOGI2MyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2lucmVnLmMuaCBiL1BDL2NsaW5pYy93aW5yZWcuYy5oCmluZGV4IGY2YWUyYzAuLmM3ZDViOWUgMTAwNjQ0Ci0tLSBhL1BDL2NsaW5pYy93aW5yZWcuYy5oCisrKyBiL1BDL2NsaW5pYy93aW5yZWcuYy5oCkBAIC03NywyNCArNzcsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIFdJTlJFR19IS0VZVFlQRV9fX0VYSVRfX19NRVRIT0RERUYgICAgXAotICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX19kb2NfX30sCisgICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbil3aW5yZWdfSEtFWVR5cGVfX19leGl0X18sIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX2ltcGwoUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZXhjX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjX3ZhbHVlLCBQeU9iamVjdCAqdHJhY2ViYWNrKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXyhQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX0hLRVlUeXBlX19fZXhpdF9fKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImV4Y190eXBlIiwgImV4Y192YWx1ZSIsICJ0cmFjZWJhY2siLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJleGNfdHlwZSIsICJleGNfdmFsdWUiLCAidHJhY2ViYWNrIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT09POl9fZXhpdF9fIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZXhjX3R5cGU7CiAgICAgUHlPYmplY3QgKmV4Y192YWx1ZTsKICAgICBQeU9iamVjdCAqdHJhY2ViYWNrOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT09POl9fZXhpdF9fIiwgX2tleXdvcmRzLAotICAgICAgICAmZXhjX3R5cGUsICZleGNfdmFsdWUsICZ0cmFjZWJhY2spKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZXhjX3R5cGUsICZleGNfdmFsdWUsICZ0cmFjZWJhY2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fX2ltcGwoc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKTsKIAogZXhpdDoKQEAgLTE0NywxMSArMTQ5LDEzIEBACiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJaTyY6Q29ubmVjdFJlZ2lzdHJ5IiwKLSAgICAgICAgJmNvbXB1dGVyX25hbWUsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgICAgICZjb21wdXRlcl9uYW1lLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19Db25uZWN0UmVnaXN0cnlfaW1wbChtb2R1bGUsIGNvbXB1dGVyX25hbWUsIGtleSk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTkyLDExICsxOTYsMTMgQEAKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpDcmVhdGVLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0NyZWF0ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMjksMjkgKzIzNSwzMiBAQAogIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiAjZGVmaW5lIFdJTlJFR19DUkVBVEVLRVlFWF9NRVRIT0RERUYgICAgXAotICAgIHsiQ3JlYXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0NyZWF0ZUtleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX0NyZWF0ZUtleUV4X19kb2NfX30sCisgICAgeyJDcmVhdGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfQ3JlYXRlS2V5RXgsIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX199LAogCiBzdGF0aWMgSEtFWQogd2lucmVnX0NyZWF0ZUtleUV4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX0NyZWF0ZUtleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX0NyZWF0ZUtleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJlp8aWk6Q3JlYXRlS2V5RXgiLCBfa2V5d29yZHMsIDB9OwogICAgIEhLRVkga2V5OwogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1dSSVRFOwogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpDcmVhdGVLZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnJlc2VydmVkLCAmYWNjZXNzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ3JlYXRlS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjkwLDggKzI5OSw5IEBACiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OkRlbGV0ZUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7CiAKIGV4aXQ6CkBAIC0zMjQsMjUgKzMzNCwyNyBAQAogIk9uIHVuc3VwcG9ydGVkIFdpbmRvd3MgdmVyc2lvbnMsIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLiIpOwogCiAjZGVmaW5lIFdJTlJFR19ERUxFVEVLRVlFWF9NRVRIT0RERUYgICAgXAotICAgIHsiRGVsZXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleUV4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX0RlbGV0ZUtleUV4X19kb2NfX30sCisgICAgeyJEZWxldGVLZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfRGVsZXRlS2V5RXgsIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19EZWxldGVLZXlFeF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogd2lucmVnX0RlbGV0ZUtleUV4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICBSRUdTQU0gYWNjZXNzLCBpbnQgcmVzZXJ2ZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX0RlbGV0ZUtleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX0RlbGV0ZUtleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJhY2Nlc3MiLCAicmVzZXJ2ZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJhY2Nlc3MiLCAicmVzZXJ2ZWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnV8aWk6RGVsZXRlS2V5RXgiLCBfa2V5d29yZHMsIDB9OwogICAgIEhLRVkga2V5OwogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XT1c2NF82NEtFWTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ1fGlpOkRlbGV0ZUtleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmYWNjZXNzLCAmcmVzZXJ2ZWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmYWNjZXNzLCAmcmVzZXJ2ZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZUtleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIGFjY2VzcywgcmVzZXJ2ZWQpOwogCiBleGl0OgpAQCAtMzc0LDggKzM4Niw5IEBACiAgICAgUHlfVU5JQ09ERSAqdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpEZWxldGVWYWx1ZSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0RlbGV0ZVZhbHVlX2ltcGwobW9kdWxlLCBrZXksIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQxMSw4ICs0MjQsOSBAQAogICAgIGludCBpbmRleDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOkVudW1LZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtS2V5X2ltcGwobW9kdWxlLCBrZXksIGluZGV4KTsKIAogZXhpdDoKQEAgLTQ1Nyw4ICs0NzEsOSBAQAogICAgIGludCBpbmRleDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOkVudW1WYWx1ZSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0VudW1WYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00ODMsOCArNDk4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9VTklDT0RFICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInU6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzIiwgJnN0cmluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1OkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0V4cGFuZEVudmlyb25tZW50U3RyaW5nc19pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKQEAgLTUyMiw4ICs1MzgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpGbHVzaEtleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpGbHVzaEtleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRmx1c2hLZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CkBAIC01NzQsOCArNTkxLDkgQEAKICAgICBQeV9VTklDT0RFICpmaWxlX25hbWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdXU6TG9hZEtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZmaWxlX25hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmZmlsZV9uYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19Mb2FkS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIGZpbGVfbmFtZSk7CiAKIGV4aXQ6CkBAIC02MDIsMjkgKzYyMCwzMiBAQAogIklmIHRoZSBmdW5jdGlvbiBmYWlscywgYW4gT1NFcnJvciBleGNlcHRpb24gaXMgcmFpc2VkLiIpOwogCiAjZGVmaW5lIFdJTlJFR19PUEVOS0VZX01FVEhPRERFRiAgICBcCi0gICAgeyJPcGVuS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgd2lucmVnX09wZW5LZXlfX2RvY19ffSwKKyAgICB7Ik9wZW5LZXkiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXksIE1FVEhfRkFTVENBTEwsIHdpbnJlZ19PcGVuS2V5X19kb2NfX30sCiAKIHN0YXRpYyBIS0VZCiB3aW5yZWdfT3BlbktleV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICBpbnQgcmVzZXJ2ZWQsIFJFR1NBTSBhY2Nlc3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2lucmVnX09wZW5LZXkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfT3BlbktleShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZafGlpOk9wZW5LZXkiLCBfa2V5d29yZHMsIDB9OwogICAgIEhLRVkga2V5OwogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKICAgICBSRUdTQU0gYWNjZXNzID0gS0VZX1JFQUQ7CiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZafGlpOk9wZW5LZXkiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX09wZW5LZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjUxLDI5ICs2NzIsMzIgQEAKICJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfT1BFTktFWUVYX01FVEhPRERFRiAgICBcCi0gICAgeyJPcGVuS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5RXhfX2RvY19ffSwKKyAgICB7Ik9wZW5LZXlFeCIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleUV4LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfT3BlbktleUV4X19kb2NfX30sCiAKIHN0YXRpYyBIS0VZCiB3aW5yZWdfT3BlbktleUV4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEtFWSBrZXksIFB5X1VOSUNPREUgKnN1Yl9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19PcGVuS2V5RXgoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit3aW5yZWdfT3BlbktleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJrZXkiLCAic3ViX2tleSIsICJyZXNlcnZlZCIsICJhY2Nlc3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJlp8aWk6T3BlbktleUV4IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOwogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX09wZW5LZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCByZXNlcnZlZCwgYWNjZXNzKTsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUhLRVlfRnJvbUhLRVkoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC03MDcsOCArNzMxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlJbmZvS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5SW5mb0tleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlJbmZvS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgpAQCAtNzQ5LDggKzc3NCw5IEBACiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaOlF1ZXJ5VmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5KTsKIAogZXhpdDoKQEAgLTc4Nyw4ICs4MTMsOSBAQAogICAgIFB5X1VOSUNPREUgKm5hbWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpRdWVyeVZhbHVlRXgiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZuYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlWYWx1ZUV4X2ltcGwobW9kdWxlLCBrZXksIG5hbWUpOwogCiBleGl0OgpAQCAtODMwLDggKzg1Nyw5IEBACiAgICAgUHlfVU5JQ09ERSAqZmlsZV9uYW1lOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnU6U2F2ZUtleSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmZpbGVfbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmZpbGVfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2F2ZUtleV9pbXBsKG1vZHVsZSwga2V5LCBmaWxlX25hbWUpOwogCiBleGl0OgpAQCAtODgzLDggKzkxMSw5IEBACiAgICAgUHlfc3NpemVfY2xlYW5fdCB2YWx1ZV9sZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWmt1IzpTZXRWYWx1ZSIsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZ0eXBlLCAmdmFsdWUsICZ2YWx1ZV9sZW5ndGgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmdHlwZSwgJnZhbHVlLCAmdmFsdWVfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TZXRWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCB0eXBlLCB2YWx1ZSwgdmFsdWVfbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTkwNyw3ICs5MzYsNyBAQAogIiAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBkYXRhLCBvbmUgb2Y6XG4iCiAiICAgIFJFR19CSU5BUlkgLS0gQmluYXJ5IGRhdGEgaW4gYW55IGZvcm0uXG4iCiAiICAgIFJFR19EV09SRCAtLSBBIDMyLWJpdCBudW1iZXIuXG4iCi0iICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC5cbiIKKyIgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19EV09SRFxuIgogIiAgICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuXG4iCiAiICAgIFJFR19FWFBBTkRfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdW5leHBhbmRlZFxuIgogIiAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb3IgZXhhbXBsZSxcbiIKQEAgLTkxNyw2ICs5NDYsOCBAQAogIiAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlc1xuIgogIiAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LlxuIgogIiAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuXG4iCisiICAgIFJFR19RV09SRCAtLSBBIDY0LWJpdCBudW1iZXIuXG4iCisiICAgIFJFR19RV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfUVdPUkQuXG4iCiAiICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LlxuIgogIiAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLlxuIgogIiAgdmFsdWVcbiIKQEAgLTk1MCw4ICs5ODEsOSBAQAogICAgIFB5T2JqZWN0ICp2YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZaT2tPOlNldFZhbHVlRXgiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZV9uYW1lLCAmcmVzZXJ2ZWQsICZ0eXBlLCAmdmFsdWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZV9uYW1lLCAmcmVzZXJ2ZWQsICZ0eXBlLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NldFZhbHVlRXhfaW1wbChtb2R1bGUsIGtleSwgdmFsdWVfbmFtZSwgcmVzZXJ2ZWQsIHR5cGUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTk4NSw4ICsxMDE3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RGlzYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RGlzYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0Rpc2FibGVSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgpAQCAtMTAxOCw4ICsxMDUxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RW5hYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpFbmFibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbmFibGVSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgpAQCAtMTA0OSwxMSArMTA4MywxMiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIEhLRVkga2V5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19RdWVyeVJlZmxlY3Rpb25LZXlfaW1wbChtb2R1bGUsIGtleSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Yjg5NDBhMjNmNjA1ZGRjIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNmRkMDZiZTZlMTRiODZlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NsaW5pYy93aW5zb3VuZC5jLmggYi9QQy9jbGluaWMvd2luc291bmQuYy5oCmluZGV4IGIwMGI0NDIuLjUyZDI1YjIgMTAwNjQ0Ci0tLSBhL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKKysrIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaApAQCAtMyw3ICszLDcgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogUHlEb2NfU1RSVkFSKHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX18sCi0iUGxheVNvdW5kKCRtb2R1bGUsIHNvdW5kLCBmbGFncywgLylcbiIKKyJQbGF5U291bmQoJG1vZHVsZSwgLywgc291bmQsIGZsYWdzKVxuIgogIi0tXG4iCiAiXG4iCiAiQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLlxuIgpAQCAtMTQsMjEgKzE0LDI0IEBACiAiICAgIEZsYWcgdmFsdWVzLCBvcmVkIHRvZ2V0aGVyLiAgU2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLiIpOwogCiAjZGVmaW5lIFdJTlNPVU5EX1BMQVlTT1VORF9NRVRIT0RERUYgICAgXAotICAgIHsiUGxheVNvdW5kIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX1BsYXlTb3VuZCwgTUVUSF9WQVJBUkdTLCB3aW5zb3VuZF9QbGF5U291bmRfX2RvY19ffSwKKyAgICB7IlBsYXlTb3VuZCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9QbGF5U291bmQsIE1FVEhfRkFTVENBTEwsIHdpbnNvdW5kX1BsYXlTb3VuZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncyk7Cit3aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc291bmQsIGludCBmbGFncyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9QbGF5U291bmQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9QbGF5U291bmQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9VTklDT0RFICpzb3VuZDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzb3VuZCIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9pOlBsYXlTb3VuZCIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKnNvdW5kOwogICAgIGludCBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWmk6UGxheVNvdW5kIiwKLSAgICAgICAgJnNvdW5kLCAmZmxhZ3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc291bmQsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9QbGF5U291bmRfaW1wbChtb2R1bGUsIHNvdW5kLCBmbGFncyk7CiAKIGV4aXQ6CkBAIC0zNiw3ICszOSw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUih3aW5zb3VuZF9CZWVwX19kb2NfXywKLSJCZWVwKCRtb2R1bGUsIGZyZXF1ZW5jeSwgZHVyYXRpb24sIC8pXG4iCisiQmVlcCgkbW9kdWxlLCAvLCBmcmVxdWVuY3ksIGR1cmF0aW9uKVxuIgogIi0tXG4iCiAiXG4iCiAiQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBCZWVwIEFQSS5cbiIKQEAgLTQ4LDIxICs1MSwyNCBAQAogIiAgICBIb3cgbG9uZyB0aGUgc291bmQgc2hvdWxkIHBsYXksIGluIG1pbGxpc2Vjb25kcy4iKTsKIAogI2RlZmluZSBXSU5TT1VORF9CRUVQX01FVEhPRERFRiAgICBcCi0gICAgeyJCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX0JlZXAsIE1FVEhfVkFSQVJHUywgd2luc291bmRfQmVlcF9fZG9jX199LAorICAgIHsiQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9CZWVwLCBNRVRIX0ZBU1RDQUxMLCB3aW5zb3VuZF9CZWVwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5zb3VuZF9CZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZyZXF1ZW5jeSwgaW50IGR1cmF0aW9uKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX0JlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit3aW5zb3VuZF9CZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZnJlcXVlbmN5IiwgImR1cmF0aW9uIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaWk6QmVlcCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZyZXF1ZW5jeTsKICAgICBpbnQgZHVyYXRpb247CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOkJlZXAiLAotICAgICAgICAmZnJlcXVlbmN5LCAmZHVyYXRpb24pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZnJlcXVlbmN5LCAmZHVyYXRpb24pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfQmVlcF9pbXBsKG1vZHVsZSwgZnJlcXVlbmN5LCBkdXJhdGlvbik7CiAKIGV4aXQ6CkBAIC03MCw3ICs3Niw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUih3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX18sCi0iTWVzc2FnZUJlZXAoJG1vZHVsZSwgeD1NQl9PSywgLylcbiIKKyJNZXNzYWdlQmVlcCgkbW9kdWxlLCAvLCB0eXBlPU1CX09LKVxuIgogIi0tXG4iCiAiXG4iCiAiQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwKHgpLlxuIgpAQCAtNzgsMjMgKzg0LDI2IEBACiAieCBkZWZhdWx0cyB0byBNQl9PSy4iKTsKIAogI2RlZmluZSBXSU5TT1VORF9NRVNTQUdFQkVFUF9NRVRIT0RERUYgICAgXAotICAgIHsiTWVzc2FnZUJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfTWVzc2FnZUJlZXAsIE1FVEhfVkFSQVJHUywgd2luc291bmRfTWVzc2FnZUJlZXBfX2RvY19ffSwKKyAgICB7Ik1lc3NhZ2VCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX01lc3NhZ2VCZWVwLCBNRVRIX0ZBU1RDQUxMLCB3aW5zb3VuZF9NZXNzYWdlQmVlcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgeCk7Cit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB0eXBlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfTWVzc2FnZUJlZXAoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBpbnQgeCA9IE1CX09LOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InR5cGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aTpNZXNzYWdlQmVlcCIsIF9rZXl3b3JkcywgMH07CisgICAgaW50IHR5cGUgPSBNQl9PSzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6TWVzc2FnZUJlZXAiLAotICAgICAgICAmeCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0eXBlKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChtb2R1bGUsIHgpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSB3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKG1vZHVsZSwgdHlwZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jMGIyOTBkYWYyMzMwZGM5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZmUxNmIyYjhiNDkwY2IxIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL1BDL2NvbmZpZy5jIGIvUEMvY29uZmlnLmMKaW5kZXggNjZiZjQ1OC4uNDNkOWUyMCAxMDA2NDQKLS0tIGEvUEMvY29uZmlnLmMKKysrIGIvUEMvY29uZmlnLmMKQEAgLTIzLDYgKzIzLDggQEAKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGExKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTI1Nih2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGE1MTIodm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMyh2b2lkKTsKK2V4dGVybiBQeU9iamVjdCogUHlJbml0X19ibGFrZTIodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF90aW1lKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3RocmVhZCh2b2lkKTsKICNpZmRlZiBXSU4zMgpAQCAtOTYsNiArOTgsOCBAQAogICAgIHsiX3NoYTEiLCBQeUluaXRfX3NoYTF9LAogICAgIHsiX3NoYTI1NiIsIFB5SW5pdF9fc2hhMjU2fSwKICAgICB7Il9zaGE1MTIiLCBQeUluaXRfX3NoYTUxMn0sCisgICAgeyJfc2hhMyIsIFB5SW5pdF9fc2hhM30sCisgICAgeyJfYmxha2UyIiwgUHlJbml0X19ibGFrZTJ9LAogICAgIHsidGltZSIsIFB5SW5pdF90aW1lfSwKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIHsiX3RocmVhZCIsIFB5SW5pdF9fdGhyZWFkfSwKZGlmZiAtLWdpdCBhL1BDL2dldHBhdGhwLmMgYi9QQy9nZXRwYXRocC5jCmluZGV4IGM3ZGRmMWUuLjBiMGFlNDkgMTAwNjQ0Ci0tLSBhL1BDL2dldHBhdGhwLmMKKysrIGIvUEMvZ2V0cGF0aHAuYwpAQCAtNiw3ICs2LDkgQEAKICAgIFBBVEggUlVMRVMgRk9SIFdJTkRPV1M6CiAgICBUaGlzIGRlc2NyaWJlcyBob3cgc3lzLnBhdGggaXMgZm9ybWVkIG9uIFdpbmRvd3MuICBJdCBkZXNjcmliZXMgdGhlCiAgICBmdW5jdGlvbmFsaXR5LCBub3QgdGhlIGltcGxlbWVudGF0aW9uIChpZSwgdGhlIG9yZGVyIGluIHdoaWNoIHRoZXNlCi0gICBhcmUgYWN0dWFsbHkgZmV0Y2hlZCBpcyBkaWZmZXJlbnQpCisgICBhcmUgYWN0dWFsbHkgZmV0Y2hlZCBpcyBkaWZmZXJlbnQpLiBUaGUgcHJlc2VuY2Ugb2YgYSBweXRob24uX3B0aCBvcgorICAgcHl0aG9uWFkuX3B0aCBmaWxlIGFsb25nc2lkZSB0aGUgcHJvZ3JhbSBvdmVycmlkZXMgdGhlc2UgcnVsZXMgLSBzZWUKKyAgIGJlbG93LgogCiAgICAqIFB5dGhvbiBhbHdheXMgYWRkcyBhbiBlbXB0eSBlbnRyeSBhdCB0aGUgc3RhcnQsIHdoaWNoIGNvcnJlc3BvbmRzCiAgICAgIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KQEAgLTIzLDkgKzI1LDkgQEAKIAogICAgKiBXZSBhdHRlbXB0IHRvIGxvY2F0ZSB0aGUgIlB5dGhvbiBIb21lIiAtIGlmIHRoZSBQWVRIT05IT01FIGVudiB2YXIKICAgICAgaXMgc2V0LCB3ZSBiZWxpZXZlIGl0LiAgT3RoZXJ3aXNlLCB3ZSB1c2UgdGhlIHBhdGggb2Ygb3VyIGhvc3QgLkVYRSdzCi0gICAgIHRvIHRyeSBhbmQgbG9jYXRlIG91ciAibGFuZG1hcmsiIChsaWJcXG9zLnB5KSBhbmQgZGVkdWNlIG91ciBob21lLgorICAgICB0byB0cnkgYW5kIGxvY2F0ZSBvbmUgb2Ygb3VyICJsYW5kbWFya3MiIGFuZCBkZWR1Y2Ugb3VyIGhvbWUuCiAgICAgIC0gSWYgd2UgRE8gaGF2ZSBhIFB5dGhvbiBIb21lOiBUaGUgcmVsZXZhbnQgc3ViLWRpcmVjdG9yaWVzIChMaWIsCi0gICAgICAgcGxhdC13aW4sIGV0YykgYXJlIGJhc2VkIG9uIHRoZSBQeXRob24gSG9tZQorICAgICAgIERMTHMsIGV0YykgYXJlIGJhc2VkIG9uIHRoZSBQeXRob24gSG9tZQogICAgICAtIElmIHdlIERPIE5PVCBoYXZlIGEgUHl0aG9uIEhvbWUsIHRoZSBjb3JlIFB5dGhvbiBQYXRoIGlzCiAgICAgICAgbG9hZGVkIGZyb20gdGhlIHJlZ2lzdHJ5LiAgVGhpcyBpcyB0aGUgbWFpbiBQeXRob25QYXRoIGtleSwKICAgICAgICBhbmQgYm90aCBIS0xNIGFuZCBIS0NVIGFyZSBjb21iaW5lZCB0byBmb3JtIHRoZSBwYXRoKQpAQCAtMzMsNyArMzUsMjMgQEAKICAgICogSWZmIC0gd2UgY2FuIG5vdCBsb2NhdGUgdGhlIFB5dGhvbiBIb21lLCBoYXZlIG5vdCBoYWQgYSBQWVRIT05QQVRICiAgICAgIHNwZWNpZmllZCwgYW5kIGNhbid0IGxvY2F0ZSBhbnkgUmVnaXN0cnkgZW50cmllcyAoaWUsIHdlIGhhdmUgX25vdGhpbmdfCiAgICAgIHdlIGNhbiBhc3N1bWUgaXMgYSBnb29kIHBhdGgpLCBhIGRlZmF1bHQgcGF0aCB3aXRoIHJlbGF0aXZlIGVudHJpZXMgaXMKLSAgICAgdXNlZCAoZWcuIC5cTGliOy5ccGxhdC13aW4sIGV0YykKKyAgICAgdXNlZCAoZWcuIC5cTGliOy5cRExMcywgZXRjKQorCisKKyAgIElmIGEgJy5fcHRoJyBmaWxlIGV4aXN0cyBhZGphY2VudCB0byB0aGUgZXhlY3V0YWJsZSB3aXRoIHRoZSBzYW1lIGJhc2UgbmFtZQorICAgKGUuZy4gcHl0aG9uLl9wdGggYWRqYWNlbnQgdG8gcHl0aG9uLmV4ZSkgb3IgYWRqYWNlbnQgdG8gdGhlIHNoYXJlZCBsaWJyYXJ5CisgICAoZS5nLiBweXRob24zNi5fcHRoIGFkamFjZW50IHRvIHB5dGhvbjM2LmRsbCksIGl0IGlzIHVzZWQgaW4gcHJlZmVyZW5jZSB0bworICAgdGhlIGFib3ZlIHByb2Nlc3MuIFRoZSBzaGFyZWQgbGlicmFyeSBmaWxlIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUKKyAgIGV4ZWN1dGFibGUuIFRoZSBwYXRoIGZpbGUgbXVzdCBjb250YWluIGEgbGlzdCBvZiBwYXRocyB0byBhZGQgdG8gc3lzLnBhdGgsCisgICBvbmUgcGVyIGxpbmUuIEVhY2ggcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICBCbGFuayBsaW5lcyBhbmQgY29tbWVudHMgYmVnaW5uaW5nIHdpdGggJyMnIGFyZSBwZXJtaXR0ZWQuCisKKyAgIEluIHRoZSBwcmVzZW5jZSBvZiB0aGlzIC5fcHRoIGZpbGUsIG5vIG90aGVyIHBhdGhzIGFyZSBhZGRlZCB0byB0aGUgc2VhcmNoCisgICBwYXRoLCB0aGUgcmVnaXN0cnkgZmluZGVyIGlzIG5vdCBlbmFibGVkLCBzaXRlLnB5IGlzIG5vdCBpbXBvcnRlZCBhbmQKKyAgIGlzb2xhdGVkIG1vZGUgaXMgZW5hYmxlZC4gVGhlIHNpdGUgcGFja2FnZSBjYW4gYmUgZW5hYmxlZCBieSBpbmNsdWRpbmcgYQorICAgbGluZSByZWFkaW5nICJpbXBvcnQgc2l0ZSI7IG5vIG90aGVyIGltcG9ydHMgYXJlIHJlY29nbml6ZWQuIEFueSBpbnZhbGlkCisgICBlbnRyeSAob3RoZXIgdGhhbiBkaXJlY3RvcmllcyB0aGF0IGRvIG5vdCBleGlzdCkgd2lsbCByZXN1bHQgaW4gaW1tZWRpYXRlCisgICB0ZXJtaW5hdGlvbiBvZiB0aGUgcHJvZ3JhbS4KIAogCiAgIFRoZSBlbmQgcmVzdWx0IG9mIGFsbCB0aGlzIGlzOgpAQCAtNTIsNyArNzAsMTEgQEAKICAgICBzb21lIGRlZmF1bHQsIGJ1dCByZWxhdGl2ZSwgcGF0aHMuCiAKICAgKiBBbiBlbWJlZGRpbmcgYXBwbGljYXRpb24gY2FuIHVzZSBQeV9TZXRQYXRoKCkgdG8gb3ZlcnJpZGUgYWxsIG9mCi0gICAgdGhlc2UgYXV0aG9tYXRpYyBwYXRoIGNvbXB1dGF0aW9ucy4KKyAgICB0aGVzZSBhdXRvbWF0aWMgcGF0aCBjb21wdXRhdGlvbnMuCisKKyAgKiBBbiBpbnN0YWxsIG9mIFB5dGhvbiBjYW4gZnVsbHkgc3BlY2lmeSB0aGUgY29udGVudHMgb2Ygc3lzLnBhdGggdXNpbmcKKyAgICBlaXRoZXIgYSAnRVhFTkFNRS5fcHRoJyBvciAnRExMTkFNRS5fcHRoJyBmaWxlLCBvcHRpb25hbGx5IGluY2x1ZGluZworICAgICJpbXBvcnQgc2l0ZSIgdG8gZW5hYmxlIHRoZSBzaXRlIG1vZHVsZS4KIAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC02MSwxMCArODMsMTMgQEAKICNpbmNsdWRlICJvc2RlZnMuaCIKICNpbmNsdWRlIDx3Y2hhci5oPgogCi0jaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpZm5kZWYgTVNfV0lORE9XUworI2Vycm9yIGdldHBhdGhwLmMgc2hvdWxkIG9ubHkgYmUgYnVpbHQgb24gV2luZG93cwogI2VuZGlmCiAKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8U2hsd2FwaS5oPgorCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmIC8qIEhBVkVfU1lTX1RZUEVTX0ggKi8KQEAgLTEyMiw2ICsxNDcsMzMgQEAKICAgICBkaXJbaV0gPSAnXDAnOwogfQogCitzdGF0aWMgaW50CitjaGFuZ2VfZXh0KHdjaGFyX3QgKmRlc3QsIGNvbnN0IHdjaGFyX3QgKnNyYywgY29uc3Qgd2NoYXJfdCAqZXh0KQoreworICAgIHNpemVfdCBzcmNfbGVuID0gd2Nzbmxlbl9zKHNyYywgTUFYUEFUSExFTisxKTsKKyAgICBzaXplX3QgaSA9IHNyY19sZW47CisgICAgaWYgKGkgPj0gTUFYUEFUSExFTisxKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIHJlZHVjZSgpIik7CisKKyAgICB3aGlsZSAoaSA+IDAgJiYgc3JjW2ldICE9ICcuJyAmJiAhaXNfc2VwKHNyY1tpXSkpCisgICAgICAgIC0taTsKKworICAgIGlmIChpID09IDApIHsKKyAgICAgICAgZGVzdFswXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoaXNfc2VwKHNyY1tpXSkpCisgICAgICAgIGkgPSBzcmNfbGVuOworCisgICAgaWYgKHdjc25jcHlfcyhkZXN0LCBNQVhQQVRITEVOKzEsIHNyYywgaSkgfHwKKyAgICAgICAgd2NzY2F0X3MoZGVzdCwgTUFYUEFUSExFTisxLCBleHQpKSB7CisgICAgICAgIGRlc3RbMF0gPSAnXDAnOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBpbnQKIGV4aXN0cyh3Y2hhcl90ICpmaWxlbmFtZSkKQEAgLTEzNSw3ICsxODcsNyBAQAogc3RhdGljIGludAogaXNtb2R1bGUod2NoYXJfdCAqZmlsZW5hbWUsIGludCB1cGRhdGVfZmlsZW5hbWUpIC8qIElzIG1vZHVsZSAtLSBjaGVjayBmb3IgLnB5Yy8ucHlvIHRvbyAqLwogewotICAgIGludCBuOworICAgIHNpemVfdCBuOwogCiAgICAgaWYgKGV4aXN0cyhmaWxlbmFtZSkpCiAgICAgICAgIHJldHVybiAxOwpAQCAtMTYzLDI0ICsyMTUsMzAgQEAKICAgIHRoYW4gTUFYUEFUSExFTiBjaGFyYWN0ZXJzIGF0IGV4aXQuICBJZiBzdHVmZiBpcyB0b28gbG9uZywgb25seSBhcyBtdWNoIG9mCiAgICBzdHVmZiBhcyBmaXRzIHdpbGwgYmUgYXBwZW5kZWQuCiAqLworCitzdGF0aWMgaW50IF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID0gMDsKK3R5cGVkZWYgSFJFU1VMVChfX3N0ZGNhbGwgKlBQYXRoQ2NoQ29tYmluZUV4KShQV1NUUiBwc3pQYXRoT3V0LCBzaXplX3QgY2NoUGF0aE91dCwgUENXU1RSIHBzelBhdGhJbiwgUENXU1RSIHBzek1vcmUsIHVuc2lnbmVkIGxvbmcgZHdGbGFncyk7CitzdGF0aWMgUFBhdGhDY2hDb21iaW5lRXggX1BhdGhDY2hDb21iaW5lRXg7CisKIHN0YXRpYyB2b2lkCiBqb2luKHdjaGFyX3QgKmJ1ZmZlciwgY29uc3Qgd2NoYXJfdCAqc3R1ZmYpCiB7Ci0gICAgc2l6ZV90IG47Ci0gICAgaWYgKGlzX3NlcChzdHVmZlswXSkgfHwKLSAgICAgICAgKHdjc25sZW5fcyhzdHVmZiwgNCkgPj0gMyAmJiBzdHVmZlsxXSA9PSAnOicgJiYgaXNfc2VwKHN0dWZmWzJdKSkpIHsKLSAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZmZlciwgTUFYUEFUSExFTisxLCBzdHVmZikgIT0gMCkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPT0gMCkgeworICAgICAgICBITU9EVUxFIHBhdGhhcGkgPSBMb2FkTGlicmFyeVcoTCJhcGktbXMtd2luLWNvcmUtcGF0aC1sMS0xLTAuZGxsIik7CisgICAgICAgIGlmIChwYXRoYXBpKQorICAgICAgICAgICAgX1BhdGhDY2hDb21iaW5lRXggPSAoUFBhdGhDY2hDb21iaW5lRXgpR2V0UHJvY0FkZHJlc3MocGF0aGFwaSwgIlBhdGhDY2hDb21iaW5lRXgiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgX1BhdGhDY2hDb21iaW5lRXggPSBOVUxMOworICAgICAgICBfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9IDE7CiAgICAgfQogCi0gICAgbiA9IHdjc25sZW5fcyhidWZmZXIsIE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKG4gPiAwICYmICFpc19zZXAoYnVmZmVyW24gLSAxXSkgJiYgbiA8IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgYnVmZmVyW25dID0gU0VQOwotICAgICAgICBidWZmZXJbbiArIDFdID0gJ1wwJzsKKyAgICBpZiAoX1BhdGhDY2hDb21iaW5lRXgpIHsKKyAgICAgICAgaWYgKEZBSUxFRChfUGF0aENjaENvbWJpbmVFeChidWZmZXIsIE1BWFBBVEhMRU4rMSwgYnVmZmVyLCBzdHVmZiwgMCkpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVBhdGhDb21iaW5lVyhidWZmZXIsIGJ1ZmZlciwgc3R1ZmYpKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKICAgICB9Ci0gICAgaWYgKHdjc2NhdF9zKGJ1ZmZlciwgTUFYUEFUSExFTisxLCBzdHVmZikgIT0gMCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBqb2luKCkiKTsKIH0KIAogLyogZ290bGFuZG1hcmsgb25seSBjYWxsZWQgYnkgc2VhcmNoX2Zvcl9wcmVmaXgsIHdoaWNoIGVuc3VyZXMKQEAgLTE4OCw3ICsyNDYsNyBAQAogICAgJ2xhbmRtYXJrJyBjYW4gbm90IG92ZXJmbG93IHByZWZpeCBpZiB0b28gbG9uZy4KICovCiBzdGF0aWMgaW50Ci1nb3RsYW5kbWFyayh3Y2hhcl90ICpsYW5kbWFyaykKK2dvdGxhbmRtYXJrKGNvbnN0IHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIGludCBvazsKICAgICBQeV9zc2l6ZV90IG4gPSB3Y3NubGVuX3MocHJlZml4LCBNQVhQQVRITEVOKTsKQEAgLTIwMiw3ICsyNjAsNyBAQAogLyogYXNzdW1lcyBhcmd2MF9wYXRoIGlzIE1BWFBBVEhMRU4rMSBieXRlcyBsb25nLCBhbHJlYWR5IFwwIHRlcm0nZC4KICAgIGFzc3VtcHRpb24gcHJvdmlkZWQgYnkgb25seSBjYWxsZXIsIGNhbGN1bGF0ZV9wYXRoKCkgKi8KIHN0YXRpYyBpbnQKLXNlYXJjaF9mb3JfcHJlZml4KHdjaGFyX3QgKmFyZ3YwX3BhdGgsIHdjaGFyX3QgKmxhbmRtYXJrKQorc2VhcmNoX2Zvcl9wcmVmaXgod2NoYXJfdCAqYXJndjBfcGF0aCwgY29uc3Qgd2NoYXJfdCAqbGFuZG1hcmspCiB7CiAgICAgLyogU2VhcmNoIGZyb20gYXJndjBfcGF0aCwgdW50aWwgbGFuZG1hcmsgaXMgZm91bmQgKi8KICAgICB3Y3NjcHlfcyhwcmVmaXgsIE1BWFBBVEhMRU4gKyAxLCBhcmd2MF9wYXRoKTsKQEAgLTIxNCw3ICsyNzIsNiBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgTVNfV0lORE9XUwogI2lmZGVmIFB5X0VOQUJMRV9TSEFSRUQKIAogLyogYSBzdHJpbmcgbG9hZGVkIGZyb20gdGhlIERMTCBhdCBzdGFydHVwLiovCkBAIC0zNjksNyArNDI2LDYgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogI2VuZGlmIC8qIFB5X0VOQUJMRV9TSEFSRUQgKi8KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIHN0YXRpYyB2b2lkCiBnZXRfcHJvZ3BhdGgodm9pZCkKQEAgLTM3OCw3ICs0MzQsNiBAQAogICAgIHdjaGFyX3QgKnBhdGggPSBfd2dldGVudihMIlBBVEgiKTsKICAgICB3Y2hhcl90ICpwcm9nID0gUHlfR2V0UHJvZ3JhbU5hbWUoKTsKIAotI2lmZGVmIE1TX1dJTkRPV1MKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECiAgICAgZXh0ZXJuIEhBTkRMRSBQeVdpbl9ETExoTW9kdWxlOwogICAgIC8qIHN0YXRpYyBpbml0IG9mIHByb2dwYXRoIGVuc3VyZXMgZmluYWwgY2hhciByZW1haW5zIFwwICovCkBAIC0zOTAsNyArNDQ1LDYgQEAKICNlbmRpZgogICAgIGlmIChHZXRNb2R1bGVGaWxlTmFtZVcoTlVMTCwgcHJvZ3BhdGgsIE1BWFBBVEhMRU4pKQogICAgICAgICByZXR1cm47Ci0jZW5kaWYKICAgICBpZiAocHJvZyA9PSBOVUxMIHx8ICpwcm9nID09ICdcMCcpCiAgICAgICAgIHByb2cgPSBMInB5dGhvbiI7CiAKQEAgLTQ4Myw2ICs1MzcsOTIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW50CityZWFkX3B0aF9maWxlKGNvbnN0IHdjaGFyX3QgKnBhdGgsIHdjaGFyX3QgKnByZWZpeCwgaW50ICppc29sYXRlZCwgaW50ICpub3NpdGUpCit7CisgICAgRklMRSAqc3BfZmlsZSA9IF9QeV93Zm9wZW4ocGF0aCwgTCJyIik7CisgICAgaWYgKHNwX2ZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOKzEsIHBhdGgpOworICAgIHJlZHVjZShwcmVmaXgpOworICAgICppc29sYXRlZCA9IDE7CisgICAgKm5vc2l0ZSA9IDE7CisKKyAgICBzaXplX3QgYnVmc2l6ID0gTUFYUEFUSExFTjsKKyAgICBzaXplX3QgcHJlZml4bGVuID0gd2NzbGVuKHByZWZpeCk7CisKKyAgICB3Y2hhcl90ICpidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKGJ1ZnNpeiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgYnVmWzBdID0gJ1wwJzsKKworICAgIHdoaWxlICghZmVvZihzcF9maWxlKSkgeworICAgICAgICBjaGFyIGxpbmVbTUFYUEFUSExFTiArIDFdOworICAgICAgICBjaGFyICpwID0gZmdldHMobGluZSwgTUFYUEFUSExFTiArIDEsIHNwX2ZpbGUpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKCpwID09ICdcMCcgfHwgKnAgPT0gJyMnKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHdoaWxlICgqKytwKSB7CisgICAgICAgICAgICBpZiAoKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgKnAgPSAnXDAnOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0cmNtcChsaW5lLCAiaW1wb3J0IHNpdGUiKSA9PSAwKSB7CisgICAgICAgICAgICAqbm9zaXRlID0gMDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9IGVsc2UgaWYgKHN0cm5jbXAobGluZSwgImltcG9ydCAiLCA3KSA9PSAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJvbmx5ICdpbXBvcnQgc2l0ZScgaXMgc3VwcG9ydGVkIGluIC5fcHRoIGZpbGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIERXT1JEIHduID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBsaW5lLCAtMSwgTlVMTCwgMCk7CisgICAgICAgIHdjaGFyX3QgKndsaW5lID0gKHdjaGFyX3QqKVB5TWVtX1Jhd01hbGxvYygod24gKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIHduID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBsaW5lLCAtMSwgd2xpbmUsIHduICsgMSk7CisgICAgICAgIHdsaW5lW3duXSA9ICdcMCc7CisKKyAgICAgICAgc2l6ZV90IHVzZWRzaXogPSB3Y3NsZW4oYnVmKTsKKyAgICAgICAgd2hpbGUgKHVzZWRzaXogKyB3biArIHByZWZpeGxlbiArIDQgPiBidWZzaXopIHsKKyAgICAgICAgICAgIGJ1ZnNpeiArPSBNQVhQQVRITEVOOworICAgICAgICAgICAgYnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd1JlYWxsb2MoYnVmLCAoYnVmc2l6ICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKCFidWYpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdsaW5lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHVzZWRzaXopIHsKKyAgICAgICAgICAgIHdjc2NhdF9zKGJ1ZiwgYnVmc2l6LCBMIjsiKTsKKyAgICAgICAgICAgIHVzZWRzaXogKz0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGVycm5vX3QgcmVzdWx0OworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIHJlc3VsdCA9IHdjc2NhdF9zKGJ1ZiwgYnVmc2l6LCBwcmVmaXgpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBpZiAocmVzdWx0ID09IEVJTlZBTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiaW52YWxpZCBhcmd1bWVudCBkdXJpbmcgLl9wdGggcHJvY2Vzc2luZyIpOworICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBFUkFOR0UpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBkdXJpbmcgLl9wdGggcHJvY2Vzc2luZyIpOworICAgICAgICB9CisgICAgICAgIHdjaGFyX3QgKmIgPSAmYnVmW3VzZWRzaXpdOworICAgICAgICBqb2luKGIsIHdsaW5lKTsKKworICAgICAgICBQeU1lbV9SYXdGcmVlKHdsaW5lKTsKKyAgICB9CisKKyAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBidWY7CisKKyAgICBmY2xvc2Uoc3BfZmlsZSk7CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5TWVtX1Jhd0ZyZWUoYnVmKTsKKyAgICBmY2xvc2Uoc3BfZmlsZSk7CisgICAgcmV0dXJuIC0xOworfQorCisKIHN0YXRpYyB2b2lkCiBjYWxjdWxhdGVfcGF0aCh2b2lkKQogewpAQCAtNDkyLDMyICs2MzIsMzMgQEAKICAgICB3Y2hhcl90ICpweXRob25ob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwogICAgIHdjaGFyX3QgKmVudnBhdGggPSBOVUxMOwogCi0jaWZkZWYgTVNfV0lORE9XUwogICAgIGludCBza2lwaG9tZSwgc2tpcGRlZmF1bHQ7CiAgICAgd2NoYXJfdCAqbWFjaGluZXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKnVzZXJwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90IHppcF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgaW50IGFwcGxvY2FsID0gMDsKIAogICAgIGlmICghUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7CiAgICAgICAgIGVudnBhdGggPSBfd2dldGVudihMIlBZVEhPTlBBVEgiKTsKICAgICB9Ci0jZWxzZQotICAgIGNoYXIgKl9lbnZwYXRoID0gUHlfR0VURU5WKCJQWVRIT05QQVRIIik7Ci0gICAgd2NoYXJfdCB3ZW52cGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGlmIChfZW52cGF0aCkgewotICAgICAgICBzaXplX3QgciA9IG1ic3Rvd2NzKHdlbnZwYXRoLCBfZW52cGF0aCwgTUFYUEFUSExFTisxKTsKLSAgICAgICAgZW52cGF0aCA9IHdlbnZwYXRoOwotICAgICAgICBpZiAociA9PSAoc2l6ZV90KS0xIHx8IHIgPj0gTUFYUEFUSExFTikKLSAgICAgICAgICAgIGVudnBhdGggPSBOVUxMOwotICAgIH0KLSNlbmRpZgogCiAgICAgZ2V0X3Byb2dwYXRoKCk7CiAgICAgLyogcHJvZ3BhdGggZ3VhcmFudGVlZCBcMCB0ZXJtaW5hdGVkIGluIE1BWFBBVEgrMSBieXRlcy4gKi8KICAgICB3Y3NjcHlfcyhhcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEsIHByb2dwYXRoKTsKICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CiAKKyAgICAvKiBTZWFyY2ggZm9yIGEgc3lzLnBhdGggZmlsZSAqLworICAgIHsKKyAgICAgICAgd2NoYXJfdCBzcGJ1ZmZlcltNQVhQQVRITEVOKzFdOworCisgICAgICAgIGlmICgoZGxscGF0aFswXSAmJiAhY2hhbmdlX2V4dChzcGJ1ZmZlciwgZGxscGF0aCwgTCIuX3B0aCIpICYmIGV4aXN0cyhzcGJ1ZmZlcikpIHx8CisgICAgICAgICAgICAocHJvZ3BhdGhbMF0gJiYgIWNoYW5nZV9leHQoc3BidWZmZXIsIHByb2dwYXRoLCBMIi5fcHRoIikgJiYgZXhpc3RzKHNwYnVmZmVyKSkpIHsKKworICAgICAgICAgICAgaWYgKCFyZWFkX3B0aF9maWxlKHNwYnVmZmVyLCBwcmVmaXgsICZQeV9Jc29sYXRlZEZsYWcsICZQeV9Ob1NpdGVGbGFnKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIFNlYXJjaCBmb3IgYW4gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBmaWxlLCBmaXJzdCBpbiB0aGUKICAgICAgICBleGVjdXRhYmxlJ3MgZGlyZWN0b3J5IGFuZCB0aGVuIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgogICAgICAgIElmIGZvdW5kLCBvcGVuIGl0IGZvciB1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHByZWZpeGVzLgpAQCAtNTQzLDE3ICs2ODQsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBMb29rIGZvciBhbiAnYXBwbG9jYWwnIHZhcmlhYmxlIGFuZCwgaWYgdHJ1ZSwgaWdub3JlIGFsbCByZWdpc3RyeQotICAgICAgICAgICAgICoga2V5cyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBidXQgcmV0YWluIHRoZSBkZWZhdWx0IHBhdGhzCi0gICAgICAgICAgICAgKiAoRExMcywgTGliKSBhbmQgdGhlIHppcCBmaWxlLiBTZXR0aW5nIHB5dGhvbmhvbWUgaGVyZSBzdXBwcmVzc2VzCi0gICAgICAgICAgICAgKiB0aGUgc2VhcmNoIGZvciBMQU5ETUFSSyBiZWxvdyBhbmQgb3ZlcnJpZGVzICVQWVRIT05IT01FJS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJhcHBsb2NhbCIsIHRtcGJ1ZmZlcikgJiYKLSAgICAgICAgICAgICAgICAoYXBwbG9jYWwgPSAod2NzaWNtcCh0bXBidWZmZXIsIEwidHJ1ZSIpID09IDApKSkgewotICAgICAgICAgICAgICAgIGVudnBhdGggPSBOVUxMOwotICAgICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBhcmd2MF9wYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCiAgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCB0bXBidWZmZXIpOwpAQCAtNTYzLDggKzY5MywxNSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgLyogQ2FsY3VsYXRlIHppcCBhcmNoaXZlIHBhdGggZnJvbSBETEwgb3IgZXhlIHBhdGggKi8KKyAgICBjaGFuZ2VfZXh0KHppcF9wYXRoLCBkbGxwYXRoWzBdID8gZGxscGF0aCA6IHByb2dwYXRoLCBMIi56aXAiKTsKKwogICAgIGlmIChweXRob25ob21lID09IE5VTEwgfHwgKnB5dGhvbmhvbWUgPT0gJ1wwJykgewotICAgICAgICBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQorICAgICAgICBpZiAoemlwX3BhdGhbMF0gJiYgZXhpc3RzKHppcF9wYXRoKSkgeworICAgICAgICAgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOKzEsIHppcF9wYXRoKTsKKyAgICAgICAgICAgIHJlZHVjZShwcmVmaXgpOworICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKKyAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBMQU5ETUFSSykpCiAgICAgICAgICAgICBweXRob25ob21lID0gcHJlZml4OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBweXRob25ob21lID0gTlVMTDsKQEAgLTU3NiwzMCArNzEzLDE1IEBACiAgICAgICAgIGVudnBhdGggPSBOVUxMOwogCiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogQ2FsY3VsYXRlIHppcCBhcmNoaXZlIHBhdGggZnJvbSBETEwgb3IgZXhlIHBhdGggKi8KLSAgICBpZiAod2NzY3B5X3MoemlwX3BhdGgsIE1BWFBBVEhMRU4rMSwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCkpCi0gICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KLSAgICAgICAgemlwX3BhdGhbMF0gPSAnXDAnOwotICAgIGVsc2UgewotICAgICAgICB3Y2hhcl90ICpkb3QgPSB3Y3NyY2hyKHppcF9wYXRoLCAnLicpOwotICAgICAgICBpZiAoIWRvdCB8fCB3Y3NjcHlfcyhkb3QsIE1BWFBBVEhMRU4rMSAtIChkb3QgLSB6aXBfcGF0aCksIEwiLnppcCIpKQotICAgICAgICAgICAgLyogZXhjZWVkZWQgYnVmZmVyIGxlbmd0aCAtIGlnbm9yZSB6aXBfcGF0aCAqLwotICAgICAgICAgICAgemlwX3BhdGhbMF0gPSBMJ1wwJzsKLSAgICB9Ci0KICAgICBza2lwaG9tZSA9IHB5dGhvbmhvbWU9PU5VTEwgPyAwIDogMTsKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECi0gICAgaWYgKCFhcHBsb2NhbCkgewotICAgICAgICBtYWNoaW5lcGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9MT0NBTF9NQUNISU5FLCBza2lwaG9tZSk7Ci0gICAgICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOwotICAgIH0KKyAgICBtYWNoaW5lcGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9MT0NBTF9NQUNISU5FLCBza2lwaG9tZSk7CisgICAgdXNlcnBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfQ1VSUkVOVF9VU0VSLCBza2lwaG9tZSk7CiAjZW5kaWYKICAgICAvKiBXZSBvbmx5IHVzZSB0aGUgZGVmYXVsdCByZWxhdGl2ZSBQWVRIT05QQVRIIGlmIHdlIGhhdmVudAogICAgICAgIGFueXRoaW5nIGJldHRlciB0byB1c2UhICovCiAgICAgc2tpcGRlZmF1bHQgPSBlbnZwYXRoIT1OVUxMIHx8IHB5dGhvbmhvbWUhPU5VTEwgfHwgXAogICAgICAgICAgICAgICAgICAgbWFjaGluZXBhdGghPU5VTEwgfHwgdXNlcnBhdGghPU5VTEw7Ci0jZW5kaWYKIAogICAgIC8qIFdlIG5lZWQgdG8gY29uc3RydWN0IGEgcGF0aCBmcm9tIHRoZSBmb2xsb3dpbmcgcGFydHMuCiAgICAgICAgKDEpIHRoZSBQWVRIT05QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLCBpZiBzZXQ7CkBAIC02MTIsNyArNzM0LDYgQEAKICAgICAgICBFeHRyYSBydWxlczoKICAgICAgICAtIElmIFBZVEhPTkhPTUUgaXMgc2V0IChpbiBhbnkgd2F5KSBpdGVtICgzKSBpcyBpZ25vcmVkLgogICAgICAgIC0gSWYgcmVnaXN0cnkgdmFsdWVzIGFyZSB1c2VkLCAoNCkgYW5kICg1KSBhcmUgaWdub3JlZC4KLSAgICAgICAtIElmIGFwcGxvY2FsIGlzIHNldCwgKDEpLCAoMyksIGFuZCByZWdpc3RyeSB2YWx1ZXMgYXJlIGlnbm9yZWQKICAgICAqLwogCiAgICAgLyogQ2FsY3VsYXRlIHNpemUgb2YgcmV0dXJuIGJ1ZmZlciAqLwpAQCAtNjI5LDEzICs3NTAsMTEgQEAKICAgICAgICAgYnVmc3ogPSAwOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihQWVRIT05QQVRIKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKGFyZ3YwX3BhdGgpICsgMTsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKCFhcHBsb2NhbCAmJiB1c2VycGF0aCkKKyAgICBpZiAodXNlcnBhdGgpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbih1c2VycGF0aCkgKyAxOwotICAgIGlmICghYXBwbG9jYWwgJiYgbWFjaGluZXBhdGgpCisgICAgaWYgKG1hY2hpbmVwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4obWFjaGluZXBhdGgpICsgMTsKICAgICBidWZzeiArPSB3Y3NsZW4oemlwX3BhdGgpICsgMTsKLSNlbmRpZgogICAgIGlmIChlbnZwYXRoICE9IE5VTEwpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbihlbnZwYXRoKSArIDE7CiAKQEAgLTY1MSwxMCArNzcwLDggQEAKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVXNpbmcgZGVmYXVsdCBzdGF0aWMgcGF0aC5cbiIpOwogICAgICAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gUFlUSE9OUEFUSDsKICAgICAgICAgfQotI2lmZGVmIE1TX1dJTkRPV1MKICAgICAgICAgUHlNZW1fUmF3RnJlZShtYWNoaW5lcGF0aCk7CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUodXNlcnBhdGgpOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjY0LDcgKzc4MSw2IEBACiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgfQotI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoemlwX3BhdGhbMF0pIHsKICAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgemlwX3BhdGgpKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CkBAIC02OTIsMTUgKzgwOCw3IEBACiAgICAgICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCkgewotICAgICAgICB3Y3NjcHkoYnVmLCBQWVRIT05QQVRIKTsKLSAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwotICAgICAgICAqYnVmKysgPSBERUxJTTsKLSAgICB9Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIHdjaGFyX3QgKnAgPSBQWVRIT05QQVRIOwogICAgICAgICB3Y2hhcl90ICpxOwogICAgICAgICBzaXplX3QgbjsKZGlmZiAtLWdpdCBhL1BDL2ljb25zL2xhdW5jaGVyLmljbnMgYi9QQy9pY29ucy9sYXVuY2hlci5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YTkxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9sYXVuY2hlci5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL2xhdW5jaGVyLmljbyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGUzYzY5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL2xhdW5jaGVyLnN2ZyBiL1BDL2ljb25zL2xhdW5jaGVyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTkwYjBkCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12cy1vdXR7ZmlsbDojZjZmNmY2fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5ncmFwaC1saWdodGdyZXl7ZmlsbDojZGZkZmRmfS5zdDB7ZmlsbDojMDA3OGQ3fS5zdDF7ZmlsbDojZmZmfS5zdDJ7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qze2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTMwIDVINVYzaDI1djJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjkuOTcyIDI2Ljk3Mkg1LjAyOVY1aC45NDJ2MjEuMDI4aDIzLjA1N1Y1aC45NDN2MjEuOTcyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTI5IDV2MjFINlY1aDIzeiIvPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDRsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMy40aC0xLjJ2MS4yaDEuMlYzLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJncmFwaC1saWdodGdyZXkiIGQ9Ik02IDVoMjN2Mkg2eiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNC41IDIzdjYiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTEuNDI5IDEzLjAxOWExOS44OCAxOS44OCAwIDAgMCAuMDcxLTEuNjQ1YzAtNC4yMjMtMS4zMjktOC4xNjUtMy41NTYtMTAuNTQ1TDcuMTcgMEg1LjgzbC0uNzc0LjgyOUMyLjgyOSAzLjIwOSAxLjUgNy4xNTEgMS41IDExLjM3NGMwIC40NTMuMDIzLjkuMDUzIDEuMzQ1Qy44ODcgMTMuNDcyLjM1NyAxNC40MzggMCAxNS41MzN2Ni42MDNMLjIyOSAyM0gzdjdoMnYyaDN2LTFoMnYtOGgyLjc3MmwuMzk0LTEuNDg4Yy4yMjItLjg0Mi4zMzUtMS43MTQuMzM1LTIuNTkyLS4wMDEtMi40MTktLjgwMy00LjUzNC0yLjA3Mi01LjkwMXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNi41IDIydjlNOC41IDIzdjciLz48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNNSAyOUg0di02aDF2NnptMi02SDZ2OGgxdi04em0yIDBIOHY3aDF2LTd6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMTAuMzgxIDEzLjM4Yy4wNy0uNjU4LjExOS0xLjMyNS4xMTktMi4wMDYgMC0zLjk3NS0xLjIyOS03LjY2Mi0zLjI4Ni05Ljg2Mkw2LjUuNzQ4bC0uNzE0Ljc2M0MzLjcyOSAzLjcxMiAyLjUgNy4zOTkgMi41IDExLjM3NGMwIC42ODEuMDQ5IDEuMzQ4LjExOSAyLjAwNkMxLjMzOSAxNC41MjEuNSAxNi41NTIuNSAxOC45MmMwIC43OTMuMTAyIDEuNTc4LjMwMiAyLjMzNkwuOTk5IDIyaDEuOTY2bC4wNzItLjkyMmMuMDgxLTEuMDQ2LjQ3MS0xLjk2Ni45OTMtMi41MDMuNDg3IDEuMDE5IDEuMDcgMS45MjkgMS43NTYgMi42NjJMNi41IDIybC43MTQtLjc2M2MuNjg2LS43MzMgMS4yNjktMS42NDMgMS43NTYtMi42NjIuNTIyLjUzNy45MTIgMS40NTcuOTkzIDIuNTAzbC4wNzIuOTIyaDEuOTY2bC4xOTctLjc0NGMuMi0uNzU4LjMwMi0xLjU0My4zMDItMi4zMzYgMC0yLjM2OC0uODM5LTQuMzk5LTIuMTE5LTUuNTR6Ii8+PHBhdGggY2xhc3M9Imljb24tdnMtb3V0IiBkPSJNMy42MTkgMTcuNjE1Yy0uODU0LjY3Mi0xLjQ2NCAxLjkxMy0xLjU3OSAzLjM4NWgtLjI3MmE4LjE4NCA4LjE4NCAwIDAgMS0uMjY4LTIuMDhjMC0xLjcyMi41MDUtMy4yNTkgMS4yOTctNC4yNzIuMTg3IDEuMDUuNDY1IDIuMDQ1LjgyMiAyLjk2N3ptNi41ODUtMi45NjdhMTYuMTQ1IDE2LjE0NSAwIDAgMS0uODIyIDIuOTY3Yy44NTQuNjcxIDEuNDY0IDEuOTEzIDEuNTc5IDMuMzg1aC4yNzJhOC4xODQgOC4xODQgMCAwIDAgLjI2OC0yLjA4Yy0uMDAxLTEuNzIyLS41MDYtMy4yNTktMS4yOTctNC4yNzJ6TTMuNSAxMS4zNzRjMCAzLjgzNyAxLjE5OCA3LjIgMyA5LjEyOCAxLjgwMi0xLjkyNyAzLTUuMjkxIDMtOS4xMjhzLTEuMTk4LTcuMi0zLTkuMTI4Yy0xLjgwMiAxLjkyOC0zIDUuMjkxLTMgOS4xMjh6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTcuNSA3YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHoiLz48L2c+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS41OTYgMjMuOTYxYy0uMzUgMS4wNTMtMS4wMDEgMy4wMTUtMy4yNDcgMy4wMTVoLTEuM3YxLjMzN2MwIC45MDUtLjM5MiAyLjUzNy0zLjAyMSAzLjI5OGE5LjIxMyA5LjIxMyAwIDAgMS0yLjU5LjM5Yy0uODMgMC0xLjY2OC0uMTI4LTIuNTY0LS4zOTItMS45MTgtLjU2My0zLjAxNy0xLjc2NS0zLjAxNy0zLjI5NnYtMS4zMzdoLTEuMTU1Yy0xLjY5OCAwLTIuOTQzLTEuMTI5LTMuNDE2LTMuMDk4LS40NjktMS45NDYtLjQ2OS0zLjE5NSAwLTUuMTQxLjQ1MS0xLjg4MSAxLjk2LTMuMDk4IDMuODQ1LTMuMDk4aC43MjZ2LTEuMzM3YzAtMi4wMDUuOTA1LTIuOTgyIDMuMTI2LTMuMzc0LjcyOS0uMTMgMS41NDktLjIgMi4zNjctLjIwM2guMDA0Yy45MjUgMCAxLjc2MS4wNjcgMi41Ni4yMDEgMS44MTYuMzAzIDMuMTM0IDEuNzIzIDMuMTM0IDMuMzc2djEuMzM3aDEuM2MxLjE0MiAwIDIuNjM2LjUzNiAzLjI3IDMuMDkyLjUxNiAyLjA3My41MSAzLjYzNy0uMDIyIDUuMjN6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF83XyIgY2xhc3M9InN0MiIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfN18iIGNsYXNzPSJzdDMiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NEgyOC4zNDhjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTg0IDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OS44Ny44NyAwIDAgMSAuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5LmljbnMgYi9QQy9pY29ucy9weS5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYzRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weS5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5LmljbyBiL1BDL2ljb25zL3B5LmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDhhNzliCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5LnN2ZyBiL1BDL2ljb25zL3B5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTI0ZTgzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12cy1vdXR7ZmlsbDojZjZmNmY2fS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdnNvLWxpZ2h0Z3JleXtmaWxsOiNiZmJmYmZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdnMtb3V0IiBkPSJNMjYgOC4wMDlWMjlIN1YzaDE0LjA1M0wyNiA4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxwYXRoIGNsYXNzPSJpY29uLXZzby1saWdodGdyZXkiIGQ9Ik0xNyA3SDlWNmg4djF6bTAgMkg5djFoOFY5em03IDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xeiIgaWQ9Imljb25GZyIvPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNjYgMjQuMDYzQzMxLjMxMiAyNS4xMTYgMzAuNjYxIDI3IDI4LjQxMyAyN0gyN3YxLjMxM2MwIC45MDUtLjMzNSAyLjUzNy0yLjk2NSAzLjI5OC0uOTA0LjI2MS0xLjY5NC4zODktMi41MzEuMzg5LS44MyAwLTEuNjMtLjEyOC0yLjUyNi0uMzkyQzE3LjA2MSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yMzJjLTEuNjk5IDAtMi45NDQtMS4xNDEtMy40MTYtMy4xMS0uNDY5LTEuOTQ2LS40NjktMy4wMjEgMC00Ljk2Ny40NTEtMS44ODEgMS45Ni0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44NjYtMi44NDUgMy4wODctMy4yMzguNzI3LS4xMjggMS41MDYtLjA2NSAyLjMyNy0uMDY1aC4wMDNjLjkyMSAwIDEuNzAzLS4wNyAyLjUwNC4wNjQgMS44MTguMzAyIDMuMDc5IDEuNTg1IDMuMDc5IDMuMjM5VjE2aDEuNDEzYzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OS0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjMyIiB5MT0iLTI4OC42NjgiIHgyPSI1NDEuMDE3IiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF8yXyIgY2xhc3M9InN0MCIgZD0iTTIxLjQxOSAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwOCAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg3IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODctLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4yNDUiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS41NjkiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzJfIiBjbGFzcz0ic3QxIiBkPSJNMjYuNjg3IDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NkgyMS41MnYtLjU4NEgyOC40MTJjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTgzIDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OWMwLS40ODQuMzg4LS44NzQuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5Yy5pY25zIGIvUEMvaWNvbnMvcHljLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBkYTlhMQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5Yy5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5Yy5pY28gYi9QQy9pY29ucy9weWMuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZGRlODEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5Yy5zdmcgYi9QQy9pY29ucy9weWMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjM2U5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZzLWJne2ZpbGw6IzQyNDI0Mn0uaWNvbi12cy1ncmVlbntmaWxsOiMzOTN9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdnMtYmciIGQ9Ik0yMS4wNTMgM0g3djI2aDE5VjguMDA5eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTIxLjQ3MSAySDZ2MjhoMjFWNy41OTlMMjEuNDcxIDJ6TTIxIDNoLjA1M2w0LjkzOSA1SDIxVjN6bTUgMjZIN1YzaDEzdjZoNnYyMHoiLz48L2c+PHBhdGggY2xhc3M9Imljb24tdnMtZ3JlZW4iIGQ9Ik0xMCAxNkg5di0xaDF2MXptMS4wMTEgNUg5djFoMi4wMzJhOC4zNjggOC4zNjggMCAwIDEtLjAyMS0xek0xNCAxMGgyVjloLTJ2MXptLTMtNEg5djFoMlY2em0wIDZIOXYxaDJ2LTF6bTItM0g5djFoNFY5em00LTN2MWgxVjZoLTF6bS0zIDZoLTJ2MWgydi0xem0xLTZoLTJ2MWgyVjZ6bS00IDEwaDF2LTFoLTF2MXptNC00djFoMnYtMWgtMnptLTIgNGgzdi0xaC0zdjF6bS00IDJ2MWgzdi0xSDl6bTAgNnYxaDN2LTFIOXoiIGlkPSJpY29uRmciLz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfNF8iIGNsYXNzPSJzdDAiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF80XyIgY2xhc3M9InN0MSIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWQuaWNucyBiL1BDL2ljb25zL3B5ZC5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkM2QyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWQuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWQuaWNvIGIvUEMvaWNvbnMvcHlkLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjZjYjYwCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWQuc3ZnIGIvUEMvaWNvbnMvcHlkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2VmZjZhCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12cy1vdXR7ZmlsbDojZjZmNmY2fS5pY29uLWYxMi1ob3Zlci1iZ3tmaWxsOiNkOWViZjd9Lmljb24tZjEyLWx0Z3JleS1kaXNhYmxlZHtmaWxsOiNhYmFiYWN9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDojOWNhMmE3fS5zdDF7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdnMtb3V0IiBkPSJNMjEuMDUzIDNIN3YyNmgxOVY4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxnIGlkPSJpY29uRmciPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMy43ODQgMTcuNzA1Yy0xLjI5NiAwLTIuMzUtMS4wNTQtMi4zNS0yLjM1czEuMDU0LTIuMzUgMi4zNS0yLjM1IDIuMzUgMS4wNTQgMi4zNSAyLjM1LTEuMDU0IDIuMzUtMi4zNSAyLjM1em0wLTQuNWMtMS4xODYgMC0yLjE1Ljk2NC0yLjE1IDIuMTVzLjk2NCAyLjE1MSAyLjE1IDIuMTUxIDIuMTUtLjk2NSAyLjE1LTIuMTUxLS45NjQtMi4xNS0yLjE1LTIuMTV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWhvdmVyLWJnIiBkPSJNMTguMDUgMTYuMTIyYy4wMTYtLjA2OS4wMzEtLjEzOS4wNDMtLjIwOWwxLjM3Ni0uNjE4LS4xMDMtMS4wMTUtMS40Ny0uMzNjLS4wMjUtLjA2OC0uMDU2LS4xMzQtLjA4Ni0uMTk5bC0uMDI2LS4wNTYuODkyLTEuMjM2LS41OTUtLjgyNy0xLjQ1LjQ1M2MtLjA2OS0uMDYxLS4xNDEtLjExOC0uMjEzLS4xNzVsLjE1MS0xLjUxMS0uOTI5LS40MTgtMS4wMzIgMS4xMjEtLjA1Ni0uMDEzYTMuMDg5IDMuMDg5IDAgMCAwLS4yMTctLjA0NWwtLjYxOC0xLjM3NC0xLjAxNS4xMDQtLjMyOSAxLjQ3MmMtLjA0OS4wMTktLjA5Ni4wNC0uMTQzLjA2M2wtLjA1Ni4wMjUtMS4yMjUtLjkwNy0uODM1LjU4Ni40MzUgMS40NTdjLS4wNi4wNjctLjEyMy4xMzgtLjE4Mi4yMTJsLTEuNTA2LS4xNzItLjQyOS45MjVMOS41NCAxNC40OGwtLjAwNS4wMjRhNC4xMjcgNC4xMjcgMCAwIDAtLjA1MS4yNDZsLTEuMzg3LjYwNi4wOTIgMS4wMTUgMS40NjMuMzQ2Yy4wMjQuMDY3LjA1NS4xMzIuMDg0LjE5NGwuMDMuMDY3LS44NiAxLjE3LS4wNDIuMDU5LjU4OC44MzIgMS40NTYtLjQ0Yy4wNy4wNjMuMTM4LjEyMi4yMDkuMTc4bC0uMTY3IDEuNTA4LjkyNi40MjdMMTIuOTIgMTkuNmwuMDQ4LjAxYy4wNzQuMDE3LjE0OS4wMzQuMjI2LjA0NmwuNjA5IDEuMzg1IDEuMDE1LS4wOTUuMzQyLTEuNDY2Yy4wNzUtLjAyNy4xNDctLjA2MS4yMTYtLjA5M2wuMDY3LS4wMzEgMS4yMzUuODkyLjgyNy0uNTk1LS40NTItMS40NWMuMDYyLS4wNzEuMTItLjE0Mi4xNzYtLjIxNWwxLjUxMi4xNTEuNDE4LS45MjktMS4xMjItMS4wMzMuMDEzLS4wNTV6bS00LjI2NiAxLjU4M2MtMS4yOTYgMC0yLjM1LTEuMDU0LTIuMzUtMi4zNXMxLjA1NC0yLjM1IDIuMzUtMi4zNSAyLjM1IDEuMDU0IDIuMzUgMi4zNS0xLjA1NCAyLjM1LTIuMzUgMi4zNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItbHRncmV5LWRpc2FibGVkIiBkPSJNMTMuODAzIDIxLjA0bC0uNjA5LTEuMzg0YTMuMDggMy4wOCAwIDAgMS0uMjM2LS4wNDhsLS4wMzgtLjAwOC0xLjA0MyAxLjExMS0uOTI1LS40MjcuMTY3LTEuNTA3YTQuMDEzIDQuMDEzIDAgMCAxLS4yMDktLjE3OWwtMS40NTYuNDM5LS41ODgtLjgzMi45MDItMS4yMjgtLjAzMy0uMDcyYy0uMDI4LS4wNjEtLjA1OC0uMTI0LS4wODItLjE5bC0xLjQ2My0uMzQ0LS4wOTEtMS4wMTUgMS4zODctLjYwNWMuMDEyLS4wNzguMDMtLjE1NC4wNDctLjIzMWwuMDA5LS4wMzktMS4xMDktMS4wNDUuNDI4LS45MjUgMS41MDcuMTdjLjA1OC0uMDcyLjExOC0uMTQuMTgzLS4yMTFsLS40MzUtMS40NTguODM0LS41ODUgMS4yMjUuOTA3LjA1Mi0uMDI0Yy4wNDgtLjAyMi4wOTctLjA0NC4xNDctLjA2M2wuMzI5LTEuNDczIDEuMDE0LS4xMDQuNjIgMS4zNzVhMi4zODkgMi4zODkgMCAwIDEgLjI3MS4wNThsMS4wMzItMS4xMjIuOTMuNDE4LS4xNTMgMS41MTFjLjA3My4wNTUuMTQzLjExMy4yMTQuMTc0bDEuNDUtLjQ1My41OTUuODI3LS44OTIgMS4yMzZhLjguOCAwIDAgMSAuMDI0LjA1M2MuMDMuMDY0LjA2Mi4xMzEuMDg3LjIwMWwxLjQ3MS4zMzIuMTAzIDEuMDE0LTEuMzc2LjYxOGMtLjAxMi4wNzEtLjAyNy4xNC0uMDQzLjIwOGwtLjAxNC4wNTggMS4xMjIgMS4wMzMtLjQxOS45MjktMS41MTEtLjE1MmEzLjg1MSAzLjg1MSAwIDAgMS0uMTc2LjIxNWwuNDUyIDEuNDUtLjgyNy41OTUtMS4yMzYtLjg5Mi0uMDcuMDMyYTIuOTQgMi45NCAwIDAgMS0uMjEyLjA5MmwtLjM0MSAxLjQ2NS0xLjAxNS4wOTV6bS0uOTUxLTEuNjZsLjE1MS4wMzNjLjA4OS4wMjEuMTc5LjA0Mi4yNzIuMDUzbC4wNTYuMDA3LjU5NyAxLjM1NC43MjgtLjA2Ny4zMzMtMS40MzUuMDU0LS4wMThjLjA4My0uMDI1LjE2MS0uMDYyLjI0NC0uMTAxLjA0Mi0uMDIuMDg0LS4wMzkuMTI3LS4wNTdsLjA1Mi0uMDIyIDEuMjExLjg3NC41OTMtLjQyNy0uNDQyLTEuNDIxLjAzOC0uMDQzYy4wODUtLjA5NC4xNjMtLjE4OC4yMzYtLjI4OGwuMDMzLS4wNDYgMS40OC4xNS4zLS42NjctMS4wOTktMS4wMTIuMDEyLS4wNTUuMDI1LS4xMTdjLjAxOS0uMDguMDM3LS4xNi4wNDctLjI0NGwuMDA3LS4wNTYgMS4zNDgtLjYwNS0uMDczLS43MjgtMS40NDEtLjMyNC0uMDE4LS4wNTVjLS4wMjUtLjA4MS0uMDYxLS4xNTctLjA5Ni0uMjMzYTIuMTQ1IDIuMTQ1IDAgMCAxLS4wNS0uMTA5bC0uMDIyLS4wNTIuODc0LTEuMjEyLS40MjctLjU5My0xLjQyLjQ0My0uMDQyLS4wMzhhMy44OTYgMy44OTYgMCAwIDAtLjI4OC0uMjM1TDE2LjIwNyAxMmwuMTQ5LTEuNDgtLjY2Ny0uMy0xLjAxMiAxLjEtLjA1Ni0uMDExYy0uMDQtLjAwOC0uMDgtLjAxOC0uMTE5LS4wMjctLjA4Mi0uMDE5LS4xNjItLjAzOC0uMjQ2LS4wNDhsLS4wNTYtLjAwNS0uNjA3LTEuMzQ2LS43MjcuMDc0LS4zMjMgMS40NDEtLjA1NC4wMThjLS4wNjMuMDItLjEyMS4wNDctLjE4LjA3NC0uMDM3LjAxNy0uMDczLjAzNC0uMTExLjA0OWwtLjA1Mi4wMjItMS4yLS44OS0uNTk5LjQyLjQyNiAxLjQyOS0uMDM4LjA0MmE0LjA3IDQuMDcgMCAwIDAtLjI0NC4yODRsLS4wMzQuMDQ1LTEuNDc2LS4xNjctLjMwNy42NjMgMS4wODYgMS4wMjQtLjAzNC4xNTFjLS4wMi4wODktLjA0MS4xNzctLjA1Mi4yNjlsLS4wMDcuMDU2LTEuMzU4LjU5My4wNjYuNzI4IDEuNDMxLjMzNy4wMTcuMDU1Yy4wMjQuMDc3LjA1OC4xNDguMDkxLjIyLjAyMS4wNDMuMDQxLjA4Ni4wNTkuMTMxbC4wMjIuMDUyLS44ODUgMS4yMDMuNDIyLjU5OCAxLjQyNi0uNDMyLjA0Mi4wMzhjLjA4My4wNzUuMTc5LjE2My4yODIuMjRsLjA0NS4wMzUtLjE2MyAxLjQ3Ni42NjQuMzA2IDEuMDI0LTEuMDg3ek0yMC45MTggMjIuOTcyYTEuMzUgMS4zNSAwIDEgMSAuMDAxLTIuNjk5IDEuMzUgMS4zNSAwIDAgMS0uMDAxIDIuNjk5em0wLTIuNWMtLjYzNCAwLTEuMTUuNTE3LTEuMTUgMS4xNXMuNTE3IDEuMTUgMS4xNSAxLjE1IDEuMTUtLjUxNyAxLjE1LTEuMTUtLjUxNi0xLjE1LTEuMTUtMS4xNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItaG92ZXItYmciIGQ9Ik0yNC45MDEgMjIuMDI4di0uODEybC0xLjI2OS0uNDIzYTIuNzQ3IDIuNzQ3IDAgMCAwLS4yMS0uNTA1bC41OTktMS4xOTYtLjU3NC0uNTc0LTEuMTk2LjU5OWEyLjgxIDIuODEgMCAwIDAtLjUwNS0uMjA5bC0uNDIzLTEuMjY4aC0uODExbC0uNDIzIDEuMjY4YTIuODEgMi44MSAwIDAgMC0uNTA1LjIwOWwtMS4xOTctLjU5OS0uNTczLjU3NC41OTkgMS4xOTZhMi43NDcgMi43NDcgMCAwIDAtLjIxLjUwNWwtMS4yNjguNDIzdi44MTJsMS4yNjguNDIyYy4wNTQuMTc1LjEyNC4zNDUuMjEuNTA2bC0uNTk5IDEuMTk2LjU3My41NzQgMS4xOTctLjZjLjE2MS4wODcuMzMxLjE1Ny41MDUuMjFsLjQyMyAxLjI2OWguODExbC40MjMtMS4yNjljLjE3NC0uMDUzLjM0My0uMTIzLjUwNS0uMjFsMS4xOTYuNi41NzQtLjU3NC0uNTk5LTEuMTk2Yy4wODYtLjE2MS4xNTYtLjMzMS4yMS0uNTA2bDEuMjY5LS40MjJ6bS0zLjk4My45NDNjLS43NDQgMC0xLjM1LS42MDYtMS4zNS0xLjM1IDAtLjc0NC42MDUtMS4zNSAxLjM1LTEuMzUuNzQ0IDAgMS4zNS42MDUgMS4zNSAxLjM1IDAgLjc0NS0uNjA2IDEuMzUtMS4zNSAxLjM1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1sdGdyZXktZGlzYWJsZWQiIGQ9Ik0yMS4zMjMgMjUuNjA0aC0uODExbC0uNDIzLTEuMjY5YTIuODE0IDIuODE0IDAgMCAxLS41MDUtLjIwOWwtMS4xOTcuNTk5LS41NzMtLjU3NC41OTktMS4xOTZhMi43NDcgMi43NDcgMCAwIDEtLjIxLS41MDVsLTEuMjY5LS40MjN2LS44MTJsMS4yNjktLjQyMmMuMDU0LS4xNzUuMTI0LS4zNDUuMjEtLjUwNmwtLjU5OS0xLjE5Ni41NzMtLjU3MyAxLjE5Ny41OTljLjE2MS0uMDg3LjMzMS0uMTU3LjUwNS0uMjFsLjQyMy0xLjI2OWguODExbC40MjMgMS4yNjljLjE3NC4wNTMuMzQ0LjEyMy41MDUuMjFsMS4xOTYtLjU5OS41NzQuNTczLS41OTkgMS4xOTZjLjA4Ni4xNjEuMTU2LjMzMS4yMS41MDZsMS4yNjkuNDIydi44MTJsLTEuMjY5LjQyM2EyLjc0NyAyLjc0NyAwIDAgMS0uMjEuNTA1bC41OTkgMS4xOTYtLjU3NC41NzQtMS4xOTYtLjU5OWEyLjgxNCAyLjgxNCAwIDAgMS0uNTA1LjIwOWwtLjQyMyAxLjI2OXptLS42NjYtLjE5OWguNTIxbC40MTEtMS4yMzIuMDUxLS4wMTVjLjE5My0uMDU0LjM4Mi0uMTMyLjU2LS4yMzFsLjA0Ni0uMDI2IDEuMTYyLjU4MS4zNjktLjM2OS0uNTgtMS4xNjIuMDI2LS4wNDZjLjA5OS0uMTc4LjE3Ny0uMzY2LjIzMi0uNTZsLjAxNC0uMDUxIDEuMjMyLS40MTF2LS41MjNsLTEuMjMyLS40MS0uMDE0LS4wNTFhMi44MSAyLjgxIDAgMCAwLS4yMzItLjU2MWwtLjAyNi0uMDQ2LjU4LTEuMTYyLS4zNjktLjM2OC0xLjE2Mi41OC0uMDQ2LS4wMjZhMi42MjcgMi42MjcgMCAwIDAtLjU2LS4yMzJsLS4wNS0uMDE0LS40MTEtMS4yMzJoLS41MjFsLS40MTEgMS4yMzItLjA1MS4wMTRhMi43NTggMi43NTggMCAwIDAtLjU2LjIzMmwtLjA0Ni4wMjYtMS4xNjMtLjU4LS4zNjguMzY4LjU4IDEuMTYyLS4wMjYuMDQ2YTIuNjc1IDIuNjc1IDAgMCAwLS4yMzIuNTYxbC0uMDE0LjA1MS0xLjIzMi40MXYuNTIybDEuMjMyLjQxMS4wMTQuMDUxYy4wNTYuMTkzLjEzNC4zODIuMjMyLjU2bC4wMjYuMDQ2LS41OCAxLjE2Mi4zNjguMzY5IDEuMTYzLS41ODEuMDQ2LjAyNmMuMTc4LjEuMzY2LjE3OC41Ni4yMzFsLjA1MS4wMTUuNDEgMS4yMzN6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNjYgMjQuMDYzQzMxLjMxMiAyNS4xMTYgMzAuNjYxIDI3IDI4LjQxMyAyN0gyN3YxLjMxM2MwIC45MDUtLjMzNSAyLjUzNy0yLjk2NSAzLjI5OC0uOTA0LjI2MS0xLjY5NC4zODktMi41MzEuMzg5LS44MyAwLTEuNjMtLjEyOC0yLjUyNi0uMzkyQzE3LjA2MSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yMzJjLTEuNjk5IDAtMi45NDQtMS4xNDEtMy40MTYtMy4xMS0uNDY5LTEuOTQ2LS40NjktMy4wMjEgMC00Ljk2Ny40NTEtMS44ODEgMS45Ni0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44NjYtMi44NDUgMy4wODctMy4yMzguNzI3LS4xMjggMS41MDYtLjA2NSAyLjMyNy0uMDY1aC4wMDNjLjkyMSAwIDEuNzAzLS4wNyAyLjUwNC4wNjQgMS44MTguMzAyIDMuMDc5IDEuNTg1IDMuMDc5IDMuMjM5VjE2aDEuNDEzYzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OC0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjMyIiB5MT0iLTI4OC42NjgiIHgyPSI1NDEuMDE3IiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF81XyIgY2xhc3M9InN0MSIgZD0iTTIxLjQxOSAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwOCAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg3IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODctLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4yNDUiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS41NjkiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzVfIiBjbGFzcz0ic3QyIiBkPSJNMjYuNjg3IDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NkgyMS41MnYtLjU4NEgyOC40MTJjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTgzIDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OWMwLS40ODQuMzg4LS44NzQuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbi5pY25zIGIvUEMvaWNvbnMvcHl0aG9uLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM1M2UwMgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbi5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbi5pY28gYi9QQy9pY29ucy9weXRob24uaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YTM4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbi5zdmcgYi9QQy9pY29ucy9weXRob24uc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyM2U1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uaWNvbi12cy1iZ3tmaWxsOiM0MjQyNDJ9Lmljb24tdnMtZ3JlZW57ZmlsbDojMzkzfS5zdDB7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTMwIDRIMlYyaDI4djJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjkgNHYyMUgzVjRIMnYyMmgyOFY0eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLWJnIiBkPSJNMTAgNEgzdjIxaDI2VjR6Ii8+PC9nPjxnIGlkPSJpY29uRmciPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDNsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMi40aC0xLjJ2MS4yaDEuMlYyLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLWdyZWVuIiBkPSJNMTYgMTRINXYtMWgxMS4wMzFjLS4wMTQuMDQ0LS4wMzEgMS0uMDMxIDF6bS00LTVINXYxaDdWOXptLTcgOHYxaDh2LTFINXoiLz48L2c+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS41OTYgMjQuMDYzQzMxLjI0NiAyNS4xMTYgMzAuNTk1IDI3IDI4LjM0OSAyN0gyN3YxLjMxM2MwIC45MDUtLjM2OCAyLjUzNy0yLjk5NiAzLjI5OC0uOTA0LjI2MS0xLjcyOC4zODktMi41NjYuMzg5LS44MyAwLTEuNTk3LS4xMjgtMi40OTItLjM5MkMxNy4wMjkgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjk3Yy0xLjY5OCAwLTIuOTQzLTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODM0LTIuODQ1IDMuMDU0LTMuMjM4LjcyOC0uMTI4IDEuNDc0LS4wNjUgMi4yOTYtLjA2NWguMDAzYy45MjEgMCAxLjczNS0uMDcgMi41MzcuMDY0IDEuODE2LjMwMyAzLjExIDEuNTg1IDMuMTEgMy4yNFYxNmgxLjM0OWMxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4yMDUiIHkxPSItMjg4LjY2OCIgeDI9IjU0MC45MDIiIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzNfIiBjbGFzcz0ic3QwIiBkPSJNMjEuMzU0IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA3IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc5IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODYgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ni0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjEzIiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNDU0IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF8zXyIgY2xhc3M9InN0MSIgZD0iTTI2LjYyMyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZoLTQuNTkzdi0uNTg0aDYuODkyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob253LmljbnMgYi9QQy9pY29ucy9weXRob253LmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM1NGNmOAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbncuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob253LmljbyBiL1BDL2ljb25zL3B5dGhvbncuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxOTVkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob253LnN2ZyBiL1BDL2ljb25zL3B5dGhvbncuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYjI2MDcKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5ncmFwaC1saWdodGdyZXl7ZmlsbDojZGZkZmRmfS5zdDB7ZmlsbDojZjZmNmY2fS5zdDF7ZmlsbDojNjU2NTY1fS5zdDJ7ZmlsbDojYmZiZmJmfS5zdDN7ZmlsbDojZmZmfS5zdDR7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Q1e2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9ImdyYXBoLWxpZ2h0Z3JleSIgZD0iTTI5IDdIM1Y1aDI2djJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTMwIDVIMlYzaDI4djJ6Ii8+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0yOS4xNDEgNGwuNDI5LjQyOS0uMTQuMTQyLS40My0uNDMtLjQzLjQzLS4xNC0uMTQyLjQyOS0uNDI5LS40MjktLjQyOS4xNDEtLjE0Mi40MjkuNDMuNDMtLjQzLjE0MS4xNDItLjQzLjQyOXpNMjcuNiAzLjRoLTEuMnYxLjJoMS4yVjMuNHptLTEgLjJoLjh2LjhoLS44di0uOHptLTEuMTM5LjhoLTF2LjJoMXYtLjJ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTMgN2gyNnYxOUgzeiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yOSA1djIxSDNWNUgydjIyaDI4VjV6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTQgNS43NWgydi41SDR6Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMiAxMUg1di0xaDd2MXptLTcgN3YxaDExdi0xSDV6bTAtNHYxaDExdi0xSDV6IiBpZD0iaWNvbkZnIi8+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9InN0MyIgZD0iTTMxLjYxOCAxOC45MTJDMzAuOTg0IDE2LjM1NiAyOS40OSAxNiAyOC4zNDkgMTZIMjd2LTEuNjk3YzAtMS42NTQtMS4yOTQtMi45MzctMy4xMS0zLjI0LS44MDItLjEzMy0xLjYxNy0uMDYzLTIuNTM3LS4wNjNoLS4wMDNjLS44MjEgMC0xLjU2OC0uMDYzLTIuMjk1LjA2NS0yLjIyMS4zOTMtMy4wNTUgMS4yMzMtMy4wNTUgMy4yMzhWMTZoLS44NjhjLTEuODg1IDAtMy4zOTQgMS4wNDItMy44NDUgMi45MjQtLjQ2OSAxLjk0Ni0uNDY5IDMuMDIyIDAgNC45NjdDMTEuNzYgMjUuODU5IDEzLjAwNSAyNyAxNC43MDMgMjdIMTZ2MS4zMTNjMCAxLjUzMSAxLjAyOSAyLjczMiAyLjk0NiAzLjI5Ni44OTYuMjYzIDEuNjYyLjM5MSAyLjQ5Mi4zOTEuODM4IDAgMS42NjEtLjEyOCAyLjU2NS0uMzlDMjYuNjMyIDMwLjg1IDI3IDI5LjIxOCAyNyAyOC4zMTNWMjdoMS4zNDljMi4yNDYgMCAyLjg5Ny0xLjg4NCAzLjI0Ny0yLjkzNy41MzItMS41OTIuNTM4LTMuMDc5LjAyMi01LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4yMDUiIHkxPSItMjg4LjY2OCIgeDI9IjU0MC45MDIiIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzZfIiBjbGFzcz0ic3Q0IiBkPSJNMjEuMzU0IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA3IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODYgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ni0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjEzIiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNDU0IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF82XyIgY2xhc3M9InN0NSIgZD0iTTI2LjYyMyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZoLTQuNTkzdi0uNTg0aDYuODkyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9zZXR1cC5pY25zIGIvUEMvaWNvbnMvc2V0dXAuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjBlNmIwCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvc2V0dXAuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9zZXR1cC5pY28gYi9QQy9pY29ucy9zZXR1cC5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU0MzY0YgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9zZXR1cC5zdmcgYi9QQy9pY29ucy9zZXR1cC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYxMzg1NgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9Lmljb24tZGlzYWJsZWQtZ3JleXtmaWxsOiM4NDg0ODR9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDojZjBlZmYxfS5zdDF7ZmlsbDojNDI0MjQyfS5zdDJ7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qze2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE4IDh2MTBIMVY4aDE3em0tMS4xOTEgMTUuNTcyYTEuMDA0IDEuMDA0IDAgMCAwLS45MDMtLjU3MkgyLjkwN2MtLjM4NSAwLS43NC4yMjUtLjkwMy41NzJMLjg4NiAyNS45MjhBLjc0OC43NDggMCAwIDAgMS41NjMgMjdIMTcuMjVhLjc0OC43NDggMCAwIDAgLjY3Ny0xLjA3MmwtMS4xMTgtMi4zNTZ6Ii8+PHBhdGggY2xhc3M9Imljb24tZGlzYWJsZWQtZ3JleSIgZD0iTTE3LjkyNyAyNS45MjlsLTEuMTE4LTIuMzU2YTEuMDAzIDEuMDAzIDAgMCAwLS45MDMtLjU3M0gyLjkwN2MtLjM4NSAwLS43NC4yMjUtLjkwMy41NzJMLjg4NiAyNS45MjhBLjc0OC43NDggMCAwIDAgMS41NjMgMjdIMTcuMjVhLjc0Ny43NDcgMCAwIDAgLjYzMy0uMzQ5Ljc0Ni43NDYgMCAwIDAgLjA0NC0uNzIyek0xLjk1OSAyNmwuOTQ5LTJoMTIuOTk4bC45NDkgMkgxLjk1OXpNNiAyMnYtMWgzdi0yaDF2MmgzdjFINnoiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMCA3djEyaDE5VjdIMHptMTggMTFIMVY4aDE3djEweiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTEyIDZWMEg3djZIMi43NTVMOS41IDEzLjQ5NSAxNi4yNDUgNnoiLz48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNOCA0aDN2M2gzbC00LjUgNUw1IDdoM1Y0em0zLTJIOHYxaDNWMnptMC0ySDh2MWgzVjB6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDI0LjA2M0MzMS4yNDYgMjUuMTE2IDMwLjU5NSAyNyAyOC4zNDkgMjdIMjd2MS4zMTNjMCAuOTA1LS4zNjggMi41MzctMi45OTcgMy4yOTgtLjkwMy4yNjEtMS43MjcuMzg5LTIuNTY1LjM4OS0uODMgMC0xLjU5Ny0uMTI4LTIuNDkzLS4zOTJDMTcuMDI5IDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjI5NmMtMS42OTggMC0yLjk0NC0xLjE0MS0zLjQxNy0zLjExLS40NjktMS45NDQtLjQ2OS0zLjAyIDAtNC45NjcuNDUxLTEuODgxIDEuOTYxLTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1LjgzNC0yLjg0NSAzLjA1NC0zLjIzOC43MjgtLjEyOCAxLjQ3NC0uMDY1IDIuMjk2LS4wNjVoLjAwM2MuOTIxIDAgMS43MzUtLjA3IDIuNTM3LjA2NCAxLjgxNi4zMDMgMy4xMSAxLjU4NSAzLjExIDMuMjRWMTZoMS4zNDljMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU5LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF85XyIgY2xhc3M9InN0MiIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwOCAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfOV8iIGNsYXNzPSJzdDMiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NEgyOC4zNDhjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTg0IDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OS44Ny44NyAwIDAgMSAuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmMgYi9QQy9sYXVuY2hlci5jCmluZGV4IDQwZDRjYjUuLmQxMWRmNDMgMTAwNjQ0Ci0tLSBhL1BDL2xhdW5jaGVyLmMKKysrIGIvUEMvbGF1bmNoZXIuYwpAQCAtOTgsNyArOTgsNyBAQAogICAgIE1lc3NhZ2VCb3goTlVMTCwgbWVzc2FnZSwgVEVYVCgiUHl0aG9uIExhdW5jaGVyIGlzIHNvcnJ5IHRvIHNheSAuLi4iKSwKICAgICAgICAgICAgICAgIE1CX09LKTsKICNlbmRpZgotICAgIEV4aXRQcm9jZXNzKHJjKTsKKyAgICBleGl0KHJjKTsKIH0KIAogLyoKQEAgLTQ2NSw3ICs0NjUsNyBAQAogfQogCiBzdGF0aWMgSU5TVEFMTEVEX1BZVEhPTiAqCi1sb2NhdGVfcHl0aG9uKHdjaGFyX3QgKiB3YW50ZWRfdmVyKQorbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlciwgQk9PTCBmcm9tX3NoZWJhbmcpCiB7CiAgICAgc3RhdGljIHdjaGFyX3QgY29uZmlnX2tleSBbXSA9IHsgTCJweXRob25YIiB9OwogICAgIHN0YXRpYyB3Y2hhcl90ICogbGFzdF9jaGFyID0gJmNvbmZpZ19rZXlbc2l6ZW9mKGNvbmZpZ19rZXkpIC8KQEAgLTQ5NywxMCArNDk3LDE3IEBACiAgICAgICAgIGNvbmZpZ3VyZWRfdmFsdWUgPSBnZXRfY29uZmlndXJlZF92YWx1ZShjb25maWdfa2V5KTsKICAgICAgICAgaWYgKGNvbmZpZ3VyZWRfdmFsdWUpCiAgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGNvbmZpZ3VyZWRfdmFsdWUpOworICAgICAgICAvKiBOb3QgZm91bmQgYSB2YWx1ZSB5ZXQgLSB0cnkgYnkgbWFqb3IgdmVyc2lvbi4KKyAgICAgICAgICogSWYgd2UncmUgbG9va2luZyBmb3IgYW4gaW50ZXJwcmV0ZXIgc3BlY2lmaWVkIGluIGEgc2hlYmFuZyBsaW5lLAorICAgICAgICAgKiB3ZSB3YW50IHRvIHRyeSBQeXRob24gMiBmaXJzdCwgdGhlbiBQeXRob24gMyAoZm9yIFVuaXggYW5kIGJhY2t3YXJkCisgICAgICAgICAqIGNvbXBhdGliaWxpdHkpLiBJZiB3ZSdyZSBiZWluZyBjYWxsZWQgaW50ZXJhY3RpdmVseSwgYXNzdW1lIHRoZSB1c2VyCisgICAgICAgICAqIHdhbnRzIHRoZSBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUsIHNvIHRyeSBQeXRob24gMyBmaXJzdCwgdGhlbgorICAgICAgICAgKiBQeXRob24gMi4KKyAgICAgICAgICovCiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIyIik7CisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGZyb21fc2hlYmFuZyA/IEwiMiIgOiBMIjMiKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihMIjMiKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oZnJvbV9zaGViYW5nID8gTCIzIiA6IEwiMiIpOwogICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgZGVmYXVsdCBQeXRob24gZm91bmQgIik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgIGRlYnVnKEwidmVyc2lvbiAlbHMgYXQgJyVscydcbiIsCkBAIC02NTUsNyArNjYyLDcgQEAKICAgICBpZiAoIW9rKQogICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJGYWlsZWQgdG8gZ2V0IGV4aXQgY29kZSBvZiBwcm9jZXNzIik7CiAgICAgZGVidWcoTCJjaGlsZCBwcm9jZXNzIGV4aXQgY29kZTogJWRcbiIsIHJjKTsKLSAgICBFeGl0UHJvY2VzcyhyYyk7CisgICAgZXhpdChyYyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMDgyLDcgKzEwODksNyBAQAogICAgIHsgMzE5MCwgMzIzMCwgTCIzLjMiIH0sCiAgICAgeyAzMjUwLCAzMzEwLCBMIjMuNCIgfSwKICAgICB7IDMzMjAsIDMzNTEsIEwiMy41IiB9LAotICAgIHsgMzM2MCwgMzM2MSwgTCIzLjYiIH0sCisgICAgeyAzMzYwLCAzMzc5LCBMIjMuNiIgfSwKICAgICB7IDAgfQogfTsKIApAQCAtMTA5NCw3ICsxMTAxLDcgQEAKIAogICAgIGZvciAobXAgPSBtYWdpY192YWx1ZXM7IG1wLT5taW47IG1wKyspIHsKICAgICAgICAgaWYgKChtYWdpYyA+PSBtcC0+bWluKSAmJiAobWFnaWMgPD0gbXAtPm1heCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24pOworICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRlX3B5dGhvbihtcC0+dmVyc2lvbiwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTE0LDcgKzExMjEsNyBAQAogICovCiAgICAgRklMRSAqIGZwOwogICAgIGVycm5vX3QgcmMgPSBfd2ZvcGVuX3MoJmZwLCAqYXJndiwgTCJyYiIpOwotICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyW0JVRlNJWkVdOworICAgIGNoYXIgYnVmZmVyW0JVRlNJWkVdOwogICAgIHdjaGFyX3Qgc2hlYmFuZ19saW5lW0JVRlNJWkUgKyAxXTsKICAgICBzaXplX3QgcmVhZDsKICAgICBjaGFyICpwOwpAQCAtMTEzNiw3ICsxMTQzLDggQEAKICAgICAgICAgZmNsb3NlKGZwKTsKIAogICAgICAgICBpZiAoKHJlYWQgPj0gNCkgJiYgKGJ1ZmZlclszXSA9PSAnXG4nKSAmJiAoYnVmZmVyWzJdID09ICdccicpKSB7Ci0gICAgICAgICAgICBpcCA9IGZpbmRfYnlfbWFnaWMoKGJ1ZmZlclsxXSA8PCA4IHwgYnVmZmVyWzBdKSAmIDB4RkZGRik7CisgICAgICAgICAgICBpcCA9IGZpbmRfYnlfbWFnaWMoKCgodW5zaWduZWQgY2hhcilidWZmZXJbMV0pIDw8IDggfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilidWZmZXJbMF0pICYgMHhGRkZGKTsKICAgICAgICAgICAgIGlmIChpcCAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZGVidWcoTCJzY3JpcHQgZmlsZSBpcyBjb21waWxlZCBhZ2FpbnN0IFB5dGhvbiAlbHNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgaXAtPnZlcnNpb24pOwpAQCAtMTI3OCw3ICsxMjg2LDcgQEAKIGZvbGxvd2VkIGJ5IGEgdmFsaWQgdmVyc2lvbiBzcGVjaWZpZXIuXG5QbGVhc2UgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE8gY291bGQgY2FsbCB2YWxpZGF0ZV92ZXJzaW9uKGNvbW1hbmQpICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oY29tbWFuZCwgVFJVRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gXAogKCVscykgaXMgbm90IGluc3RhbGxlZCIsIGNvbW1hbmQpOwpAQCAtMTM2Miw2ICsxMzcwLDcgQEAKICAgICB3Y2hhcl90ICogYXZbMl07CiAjZW5kaWYKIAorICAgIHNldHZidWYoc3RkZXJyLCAoY2hhciAqKU5VTEwsIF9JT05CRiwgMCk7CiAgICAgd3AgPSBnZXRfZW52KEwiUFlMQVVOQ0hfREVCVUciKTsKICAgICBpZiAoKHdwICE9IE5VTEwpICYmICgqd3AgIT0gTCdcMCcpKQogICAgICAgICBsb2dfZnAgPSBzdGRlcnI7CkBAIC0xNDgzLDcgKzE0OTIsNyBAQAogICAgICAgICBwbGVuID0gd2NzbGVuKHApOwogICAgICAgICB2YWxpZCA9ICgqcCA9PSBMJy0nKSAmJiB2YWxpZGF0ZV92ZXJzaW9uKCZwWzFdKTsKICAgICAgICAgaWYgKHZhbGlkKSB7Ci0gICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oJnBbMV0pOworICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdLCBGQUxTRSk7CiAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uICglbHMpIG5vdCBcCiBpbnN0YWxsZWQiLCAmcFsxXSk7CkBAIC0xNTEwLDcgKzE1MTksNyBAQAogCiAgICAgICAgIC8qIElmIHdlIGRpZG4ndCBmaW5kIG9uZSwgbG9vayBmb3IgdGhlIGRlZmF1bHQgUHl0aG9uICovCiAgICAgICAgIGlmIChleGVjdXRhYmxlID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIpOworICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKEwiIiwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIkNhbid0IGZpbmQgYSBkZWZhdWx0IFB5dGhvbi4iKTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBpcC0+ZXhlY3V0YWJsZTsKZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmljbyBiL1BDL2xhdW5jaGVyLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFkN2Q1Ny4uMDAwMDAwMAotLS0gYS9QQy9sYXVuY2hlci5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9tc3ZjcnRtb2R1bGUuYyBiL1BDL21zdmNydG1vZHVsZS5jCmluZGV4IGIwNzM5ZDAuLmM5ZDFlNmMgMTAwNjQ0Ci0tLSBhL1BDL21zdmNydG1vZHVsZS5jCisrKyBiL1BDL21zdmNydG1vZHVsZS5jCkBAIC0zMywxMiArMzMsMTIgQEAKICNlbmRpZgogCiAvKltweXRob24gaW5wdXRdCi1jbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKK2NsYXNzIGludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGZvcm1hdF91bml0ID0gJyJfUHlfUEFSU0VfSU5UUFRSIicKIAogY2xhc3MgaGFuZGxlX3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKLSAgICB0eXBlID0gJ1B5X2ludHB0cl90JworICAgIHR5cGUgPSAnaW50cHRyX3QnCiAgICAgY2FzdCA9ICcodm9pZCAqKScKICAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tVm9pZFB0cicKIApAQCAtNTksNyArNTksNyBAQAogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKICAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoX3JldHVybl92YWx1ZSk7XG4nKQogW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmE1NGZjNGU3M2QwYjM2N10qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjU5ZjE2NjNkYmExMTk5N10qLwogCiAvKltjbGluaWMgaW5wdXRdCiBtb2R1bGUgbXN2Y3J0CkBAIC0xNDgsNyArMTQ4LDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIG1zdmNydC5vcGVuX29zZmhhbmRsZSAtPiBsb25nCiAKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIGZsYWdzOiBpbnQKICAgICAvCiAKQEAgLTE2MCw4ICsxNjAsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgbG9uZwotbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY2NWU0MjIyNDNhMzlmOSBpbnB1dD00ZDg1MTZlZDMyZGI4ZjY1XSovCittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZWRlODcxYmY5MzlkNmUzIGlucHV0PWNiMjEwOGJiZWE4NDUxNGVdKi8KIHsKICAgICBpbnQgZmQ7CiAKQEAgLTE4MywyMiArMTgzLDE3IEBACiBSYWlzZXMgSU9FcnJvciBpZiBmZCBpcyBub3QgcmVjb2duaXplZC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotc3RhdGljIFB5X2ludHB0cl90CitzdGF0aWMgaW50cHRyX3QKIG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVhYzQ3NjQzMzM4YzBiYWEgaW5wdXQ9YzdkMThkMDJjODAxN2VjMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdjZTc2MWRkMGRlMmI1MDMgaW5wdXQ9YzdkMThkMDJjODAxN2VjMV0qLwogewotICAgIFB5X2ludHB0cl90IGhhbmRsZSA9IC0xOworICAgIGludHB0cl90IGhhbmRsZSA9IC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICB9Ci0gICAgZWxzZSB7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICBoYW5kbGUgPSBfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgfQorICAgIGlmIChoYW5kbGUgPT0gLTEpCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAogICAgIHJldHVybiBoYW5kbGU7CiB9CkBAIC01NDAsNyArNTM1LDYgQEAKICNlbmRpZgogCiAgICAgLyogY29uc3RhbnRzIGZvciB0aGUgY3J0IHZlcnNpb25zICovCi0gICAgKHZvaWQpc3Q7CiAjaWZkZWYgX1ZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOCiAgICAgc3QgPSBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOKTsKQEAgLTU2Niw2ICs1NjAsOCBAQAogICAgIHN0ID0gUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDUlRfQVNTRU1CTFlfVkVSU0lPTiIsIHZlcnNpb24pOwogICAgIGlmIChzdCA8IDApIHJldHVybiBOVUxMOwogI2VuZGlmCisgICAgLyogbWFrZSBjb21waWxlciB3YXJuaW5nIHF1aWV0IGlmIHN0IGlzIHVudXNlZCAqLworICAgICh2b2lkKXN0OwogCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9QQy9weS5pY28gYi9QQy9weS5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNTdhZWYuLjAwMDAwMDAKLS0tIGEvUEMvcHkuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvcHljLmljbyBiL1BDL3B5Yy5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YmQyYjEuLjAwMDAwMDAKLS0tIGEvUEMvcHljLmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL3B5Y29uLmljbyBiL1BDL3B5Y29uLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiNjI5ZS4uMDAwMDAwMAotLS0gYS9QQy9weWNvbi5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9weWNvbmZpZy5oIGIvUEMvcHljb25maWcuaAppbmRleCBhYzRmOGYyLi42NGU3YWVjIDEwMDY0NAotLS0gYS9QQy9weWNvbmZpZy5oCisrKyBiL1BDL3B5Y29uZmlnLmgKQEAgLTE0LDcgKzE0LDYgQEAKIE1TX1dJTjY0IC0gQ29kZSBzcGVjaWZpYyB0byB0aGUgTVMgV2luNjQgQVBJCiBNU19XSU4zMiAtIENvZGUgc3BlY2lmaWMgdG8gdGhlIE1TIFdpbjMyIChhbmQgV2luNjQpIEFQSSAob2Jzb2xldGUsIHRoaXMgY292ZXJzIGFsbCBzdXBwb3J0ZWQgQVBJcykKIE1TX1dJTkRPV1MgLSBDb2RlIHNwZWNpZmljIHRvIFdpbmRvd3MsIGJ1dCBhbGwgdmVyc2lvbnMuCi1NU19XSU5DRSAtIENvZGUgc3BlY2lmaWMgdG8gV2luZG93cyBDRQogUHlfRU5BQkxFX1NIQVJFRCAtIENvZGUgaWYgdGhlIFB5dGhvbiBjb3JlIGlzIGJ1aWx0IGFzIGEgRExMLgogCiBBbHNvIG5vdGUgdGhhdCBuZWl0aGVyICJfTV9JWDg2IiBvciAiX01TQ19WRVIiIHNob3VsZCBiZSB1c2VkIGZvcgpAQCAtMzAsMTAgKzI5LDYgQEAKIAogKi8KIAotI2lmZGVmIF9XSU4zMl9XQ0UKLSNkZWZpbmUgTVNfV0lOQ0UKLSNlbmRpZgotCiAvKiBEZXByZWNhdGVkIFVTRV9ETF9FWFBPUlQgbWFjcm8gLSBwbGVhc2UgdXNlIFB5X0JVSUxEX0NPUkUgKi8KICNpZmRlZiBVU0VfRExfRVhQT1JUCiAjCWRlZmluZSBQeV9CVUlMRF9DT1JFCkBAIC01Myw4ICs0OCw2IEBACiAjZGVmaW5lIF9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUgMQogI2VuZGlmCiAKLS8qIFdpbmRvd3MgQ0UgZG9lcyBub3QgaGF2ZSB0aGVzZSAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0lPX0gKICNkZWZpbmUgSEFWRV9TWVNfVVRJTUVfSAogI2RlZmluZSBIQVZFX1RFTVBOQU0KQEAgLTYyLDExICs1NSw4IEBACiAjZGVmaW5lIEhBVkVfVE1QTkFNCiAjZGVmaW5lIEhBVkVfQ0xPQ0sKICNkZWZpbmUgSEFWRV9TVFJFUlJPUgotI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0lPX0gKICNpbmNsdWRlIDxpby5oPgotI2VuZGlmCiAKICNkZWZpbmUgSEFWRV9IWVBPVAogI2RlZmluZSBIQVZFX1NUUkZUSU1FCkBAIC04NiwxNyArNzYsNiBAQAogI2RlZmluZSBVU0VfU09DS0VUCiAjZW5kaWYKIAotLyogQ0U2IGRvZXNuJ3QgaGF2ZSBzdHJkdXAoKSBidXQgX3N0cmR1cCgpLiBBc3N1bWUgdGhlIHNhbWUgZm9yIGVhcmxpZXIgdmVyc2lvbnMuICovCi0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgotIyAgZGVmaW5lIHN0cmR1cCBfc3RyZHVwCi0jZW5kaWYKLQotI2lmZGVmIE1TX1dJTkNFCi0vKiBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzICovCi0jZGVmaW5lIGdldGVudih2KSAoTlVMTCkKLSNkZWZpbmUgZW52aXJvbiAoTlVMTCkKLSNlbmRpZgogCiAvKiBDb21waWxlciBzcGVjaWZpYyBkZWZpbmVzICovCiAKQEAgLTI4Niw3ICsyNjUsNiBAQAogI2VuZGlmCiAKIC8qIDY0IGJpdCBpbnRzIGFyZSB1c3VhbGx5IHNwZWx0IF9faW50NjQgdW5sZXNzIGNvbXBpbGVyIGhhcyBvdmVycmlkZGVuICovCi0jZGVmaW5lIEhBVkVfTE9OR19MT05HIDEKICNpZm5kZWYgUFlfTE9OR19MT05HCiAjCWRlZmluZSBQWV9MT05HX0xPTkcgX19pbnQ2NAogIwlkZWZpbmUgUFlfTExPTkdfTUFYIF9JNjRfTUFYCkBAIC0zMTIsMTEgKzI5MCwxMSBAQAogCQkJdGhlaXIgTWFrZWZpbGUgKG90aGVyIGNvbXBpbGVycyBhcmUgZ2VuZXJhbGx5CiAJCQl0YWtlbiBjYXJlIG9mIGJ5IGRpc3R1dGlscy4pICovCiAjCQkJaWYgZGVmaW5lZChfREVCVUcpCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzVfZC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM2X2QubGliIikKICMJCQllbGlmIGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMy5saWIiKQogIwkJCWVsc2UKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNS5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM2LmxpYiIpCiAjCQkJZW5kaWYgLyogX0RFQlVHICovCiAjCQllbmRpZiAvKiBfTVNDX1ZFUiAqLwogIwllbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCkBAIC0zODcsMzkgKzM2NSwxMCBAQAogCiAvKiBkZWZpbmUgc2lnbmVkIGFuZCB1bnNpZ25lZCBleGFjdC13aWR0aCAzMi1iaXQgYW5kIDY0LWJpdCB0eXBlcywgdXNlZCBpbiB0aGUKICAgIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBpbnRlZ2Vycy4gKi8KLSNpZm5kZWYgUFlfVUlOVDMyX1QKLSNpZiBTSVpFT0ZfSU5UID09IDQKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCi0jZGVmaW5lIFBZX1VJTlQzMl9UIHVuc2lnbmVkIGludAotI2VsaWYgU0laRU9GX0xPTkcgPT0gNAotI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEKLSNkZWZpbmUgUFlfVUlOVDMyX1QgdW5zaWduZWQgbG9uZwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9VSU5UNjRfVAotI2lmIFNJWkVPRl9MT05HX0xPTkcgPT0gOAotI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEKLSNkZWZpbmUgUFlfVUlOVDY0X1QgdW5zaWduZWQgUFlfTE9OR19MT05HCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIFBZX0lOVDMyX1QKLSNpZiBTSVpFT0ZfSU5UID09IDQKLSNkZWZpbmUgSEFWRV9JTlQzMl9UIDEKLSNkZWZpbmUgUFlfSU5UMzJfVCBpbnQKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLSNkZWZpbmUgSEFWRV9JTlQzMl9UIDEKLSNkZWZpbmUgUFlfSU5UMzJfVCBsb25nCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIFBZX0lOVDY0X1QKLSNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEKLSNkZWZpbmUgUFlfSU5UNjRfVCBQWV9MT05HX0xPTkcKLSNlbmRpZgotI2VuZGlmCisjZGVmaW5lIFBZX1VJTlQzMl9UIHVpbnQzMl90CisjZGVmaW5lIFBZX1VJTlQ2NF9UIHVpbnQ2NF90CisjZGVmaW5lIFBZX0lOVDMyX1QgaW50MzJfdAorI2RlZmluZSBQWV9JTlQ2NF9UIGludDY0X3QKIAogLyogRmFpcmx5IHN0YW5kYXJkIGZyb20gaGVyZSEgKi8KIApAQCAtNDQ4LDE0ICszOTcsMTAgQEAKIC8qICNkZWZpbmUgY29uc3QgICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y29uaW8uaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfQ09OSU9fSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlY3QuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRElSRUNUX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBkaXJlbnQuaC4gICovCiAvKiAjZGVmaW5lIERJUkVOVCAxICovCkBAIC01MjgsOSArNDczLDcgQEAKIC8qICNkZWZpbmUgSEFWRV9BTFRaT05FICovCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcHV0ZW52IGZ1bmN0aW9uLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9QVVRFTlYKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBzdXBwb3J0cyBmdW5jdGlvbiBwcm90b3R5cGVzICovCiAjZGVmaW5lIEhBVkVfUFJPVE9UWVBFUwpAQCAtNTU4LDkgKzUwMSw3IEBACiAjZGVmaW5lIEhBVkVfRFlOQU1JQ19MT0FESU5HCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBmdGltZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRlRJTUUKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZ2V0cGVlcm5hbWUuICAqLwogI2RlZmluZSBIQVZFX0dFVFBFRVJOQU1FCkBAIC01NjksOSArNTEwLDcgQEAKIC8qICN1bmRlZiBIQVZFX0dFVFBHUlAgKi8KIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHBpZC4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfR0VUUElECi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHRpbWVvZmRheS4gICovCiAvKiAjdW5kZWYgSEFWRV9HRVRUSU1FT0ZEQVkgKi8KQEAgLTYzMywxNCArNTcyLDEwIEBACiAjZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3Y3Njb2xsJyBmdW5jdGlvbi4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9XQ1NDT0xMIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdjc3hmcm0nIGZ1bmN0aW9uLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1dDU1hGUk0gMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB0aGUgemxpYiBsaWJyYXJ5IGhhcyBpbmZsYXRlQ29weSAqLwogI2RlZmluZSBIQVZFX1pMSUJfQ09QWSAxCkBAIC02NDksMjQgKzU4NCwxNiBAQAogLyogI3VuZGVmIEhBVkVfRExGQ05fSCAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVycm5vLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0VSUk5PX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nlc3MuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfUFJPQ0VTU19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9TSUdOQUxfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RkYXJnLmg+IHByb3RvdHlwZXMuICAqLwogI2RlZmluZSBIQVZFX1NUREFSR19QUk9UT1RZUEVTCkBAIC02ODQsOSArNjExLDcgQEAKIC8qICNkZWZpbmUgSEFWRV9TWVNfU0VMRUNUX0ggMSAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdGltZS5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAxICovCkBAIC02OTUsOSArNjIwLDcgQEAKIC8qICNkZWZpbmUgSEFWRV9TWVNfVElNRVNfSCAxICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VuLmg+IGhlYWRlciBmaWxlLiAgKi8KIC8qICNkZWZpbmUgSEFWRV9TWVNfVU5fSCAxICovCkBAIC03MjAsNiArNjQzLDkgQEAKIC8qIFRoZSBzaXplIG9mIGB3Y2hhcl90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI2RlZmluZSBTSVpFT0ZfV0NIQVJfVCAyCiAKKy8qIFRoZSBzaXplIG9mIGBfQm9vbCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX19CT09MIDEKKwogLyogVGhlIHNpemUgb2YgYHBpZF90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI2RlZmluZSBTSVpFT0ZfUElEX1QgU0laRU9GX0lOVAogCmRpZmYgLS1naXQgYS9QQy9weWxhdW5jaGVyLnJjIGIvUEMvcHlsYXVuY2hlci5yYwppbmRleCBhOGRiMGE4Li4zZGEzNDQ1IDEwMDY0NAotLS0gYS9QQy9weWxhdW5jaGVyLnJjCisrKyBiL1BDL3B5bGF1bmNoZXIucmMKQEAgLTcsOSArNywxMyBAQAogI2luY2x1ZGUgPHdpbnVzZXIuaD4KIDEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKIAotMSBJQ09OIERJU0NBUkRBQkxFICJsYXVuY2hlci5pY28iIAotMiBJQ09OIERJU0NBUkRBQkxFICJweS5pY28iIAotMyBJQ09OIERJU0NBUkRBQkxFICJweWMuaWNvIiAKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNcbGF1bmNoZXIuaWNvIiAKKzIgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHkuaWNvIiAKKzMgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHljLmljbyIgCis0IElDT04gRElTQ0FSREFCTEUgImljb25zXHB5ZC5pY28iIAorNSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob24uaWNvIgorNiBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob253LmljbyIKKzcgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNcc2V0dXAuaWNvIiAKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vCmRpZmYgLS1naXQgYS9QQy9weXRob24ubWFuaWZlc3QgYi9QQy9weXRob24ubWFuaWZlc3QKaW5kZXggZDZlNGJiYS4uNGU3M2Q2MCAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uLm1hbmlmZXN0CisrKyBiL1BDL3B5dGhvbi5tYW5pZmVzdApAQCAtMTYsMTAgKzE2LDE1IEBACiAgICAgICA8c3VwcG9ydGVkT1MgSWQ9Ins4ZTBmN2ExMi1iZmIzLTRmZTgtYjlhNS00OGZkNTBhMTVhOWF9Ii8+CiAgICAgPC9hcHBsaWNhdGlvbj4gCiAgIDwvY29tcGF0aWJpbGl0eT4KKyAgPGFwcGxpY2F0aW9uIHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmFzbS52MyI+CisgICAgPHdpbmRvd3NTZXR0aW5ncz4KKyAgICAgIDxsb25nUGF0aEF3YXJlIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NNSS8yMDE2L1dpbmRvd3NTZXR0aW5ncyI+dHJ1ZTwvbG9uZ1BhdGhBd2FyZT4KKyAgICA8L3dpbmRvd3NTZXR0aW5ncz4KKyAgPC9hcHBsaWNhdGlvbj4KICAgPGRlcGVuZGVuY3k+CiAgICAgPGRlcGVuZGVudEFzc2VtYmx5PgogICAgICAgPGFzc2VtYmx5SWRlbnRpdHkgdHlwZT0id2luMzIiIG5hbWU9Ik1pY3Jvc29mdC5XaW5kb3dzLkNvbW1vbi1Db250cm9scyIKICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249IjYuMC4wLjAiIHByb2Nlc3NvckFyY2hpdGVjdHVyZT0iKiIgcHVibGljS2V5VG9rZW49IjY1OTViNjQxNDRjY2YxZGYiIGxhbmd1YWdlPSIqIiAvPgogICAgIDwvZGVwZW5kZW50QXNzZW1ibHk+CiAgIDwvZGVwZW5kZW5jeT4KLTwvYXNzZW1ibHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9hc3NlbWJseT4KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMuZGVmIGIvUEMvcHl0aG9uMy5kZWYKaW5kZXggODhjMDc0Mi4uZThkMmQ4YyAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMy5kZWYKKysrIGIvUEMvcHl0aG9uMy5kZWYKQEAgLTIsNzEyICsyLDcxMyBAQAogOyBJdCBpcyB1c2VkIHdoZW4gYnVpbGRpbmcgcHl0aG9uM2RsbC52Y3hwcm9qCiBMSUJSQVJZCSJweXRob24zIgogRVhQT1JUUwotICBQeUFyZ19QYXJzZT1weXRob24zNS5QeUFyZ19QYXJzZQotICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjM1LlB5QXJnX1BhcnNlVHVwbGUKLSAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zNS5QeUFyZ19VbnBhY2tUdXBsZQotICBQeUFyZ19WYVBhcnNlPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2UKLSAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzUuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjM1LlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cwotICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zNS5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCi0gIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zNS5QeUJvb2xfRnJvbUxvbmcKLSAgUHlCb29sX1R5cGU9cHl0aG9uMzUuUHlCb29sX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zNS5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0FzU3RyaW5nCi0gIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zNS5QeUJ5dGVBcnJheV9Db25jYXQKLSAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9SZXNpemUKLSAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9TaXplCi0gIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZwotICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX0NvbmNhdD1weXRob24zNS5QeUJ5dGVzX0NvbmNhdAotICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zNS5QeUJ5dGVzX0NvbmNhdEFuZERlbAotICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zNS5QeUJ5dGVzX0RlY29kZUVzY2FwZQotICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzUuUHlCeXRlc19Gcm9tRm9ybWF0Ci0gIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlCeXRlc19Gcm9tRm9ybWF0VgotICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlc19Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zNS5QeUJ5dGVzX0Zyb21TdHJpbmcKLSAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfUmVwcj1weXRob24zNS5QeUJ5dGVzX1JlcHIKLSAgUHlCeXRlc19TaXplPXB5dGhvbjM1LlB5Qnl0ZXNfU2l6ZQotICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzUuUHlCeXRlc19UeXBlIERBVEEKLSAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zNS5QeUNGdW5jdGlvbl9DYWxsCi0gIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAotICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRGbGFncwotICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgotICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0dldFNlbGYKLSAgUHlDRnVuY3Rpb25fTmV3PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX05ldwotICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zNS5QeUNGdW5jdGlvbl9OZXdFeAotICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQotICBQeUNhbGxJdGVyX05ldz1weXRob24zNS5QeUNhbGxJdGVyX05ldwotICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzUuUHlDYWxsSXRlcl9UeXBlIERBVEEKLSAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zNS5QeUNhbGxhYmxlX0NoZWNrCi0gIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXROYW1lCi0gIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzUuUHlDYXBzdWxlX0ltcG9ydAotICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zNS5QeUNhcHN1bGVfSXNWYWxpZAotICBQeUNhcHN1bGVfTmV3PXB5dGhvbjM1LlB5Q2Fwc3VsZV9OZXcKLSAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzUuUHlDYXBzdWxlX1NldENvbnRleHQKLSAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzUuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzUuUHlDYXBzdWxlX1NldE5hbWUKLSAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzUuUHlDYXBzdWxlX1NldFBvaW50ZXIKLSAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzUuUHlDYXBzdWxlX1R5cGUgREFUQQotICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzUuUHlDb2RlY19EZWNvZGUKLSAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlcgotICBQeUNvZGVjX0VuY29kZT1weXRob24zNS5QeUNvZGVjX0VuY29kZQotICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGVyCi0gIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfSWdub3JlRXJyb3JzCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCi0gIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zNS5QeUNvZGVjX0tub3duRW5jb2RpbmcKLSAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zNS5QeUNvZGVjX0xvb2t1cEVycm9yCi0gIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzUuUHlDb2RlY19SZWdpc3RlcgotICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19SZWdpc3RlckVycm9yCi0gIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzUuUHlDb2RlY19TdHJlYW1SZWFkZXIKLSAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzUuUHlDb2RlY19TdHJlYW1Xcml0ZXIKLSAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19TdHJpY3RFcnJvcnMKLSAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCi0gIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zNS5QeUNvbXBsZXhfRnJvbURvdWJsZXMKLSAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zNS5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCi0gIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQotICBQeUNvbXBsZXhfVHlwZT1weXRob24zNS5QeUNvbXBsZXhfVHlwZSBEQVRBCi0gIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAotICBQeURlc2NyX05ld0dldFNldD1weXRob24zNS5QeURlc2NyX05ld0dldFNldAotICBQeURlc2NyX05ld01lbWJlcj1weXRob24zNS5QeURlc2NyX05ld01lbWJlcgotICBQeURlc2NyX05ld01ldGhvZD1weXRob24zNS5QeURlc2NyX05ld01ldGhvZAotICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZW1zX1R5cGUgREFUQQotICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQotICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQotICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzUuUHlEaWN0S2V5c19UeXBlIERBVEEKLSAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjM1LlB5RGljdFByb3h5X05ldwotICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjM1LlB5RGljdFByb3h5X1R5cGUgREFUQQotICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zNS5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5RGljdF9DbGVhcj1weXRob24zNS5QeURpY3RfQ2xlYXIKLSAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjM1LlB5RGljdF9Db250YWlucwotICBQeURpY3RfQ29weT1weXRob24zNS5QeURpY3RfQ29weQotICBQeURpY3RfRGVsSXRlbT1weXRob24zNS5QeURpY3RfRGVsSXRlbQotICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfRGVsSXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbT1weXRob24zNS5QeURpY3RfR2V0SXRlbQotICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfR2V0SXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zNS5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgotICBQeURpY3RfSXRlbXM9cHl0aG9uMzUuUHlEaWN0X0l0ZW1zCi0gIFB5RGljdF9LZXlzPXB5dGhvbjM1LlB5RGljdF9LZXlzCi0gIFB5RGljdF9NZXJnZT1weXRob24zNS5QeURpY3RfTWVyZ2UKLSAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzUuUHlEaWN0X01lcmdlRnJvbVNlcTIKLSAgUHlEaWN0X05ldz1weXRob24zNS5QeURpY3RfTmV3Ci0gIFB5RGljdF9OZXh0PXB5dGhvbjM1LlB5RGljdF9OZXh0Ci0gIFB5RGljdF9TZXRJdGVtPXB5dGhvbjM1LlB5RGljdF9TZXRJdGVtCi0gIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9TZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9TaXplPXB5dGhvbjM1LlB5RGljdF9TaXplCi0gIFB5RGljdF9UeXBlPXB5dGhvbjM1LlB5RGljdF9UeXBlIERBVEEKLSAgUHlEaWN0X1VwZGF0ZT1weXRob24zNS5QeURpY3RfVXBkYXRlCi0gIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzUuUHlEaWN0X1ZhbHVlcwotICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzUuUHlFbGxpcHNpc19UeXBlIERBVEEKLSAgUHlFbnVtX1R5cGU9cHl0aG9uMzUuUHlFbnVtX1R5cGUgREFUQQotICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zNS5QeUVycl9CYWRBcmd1bWVudAotICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzUuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zNS5QeUVycl9DaGVja1NpZ25hbHMKLSAgUHlFcnJfQ2xlYXI9cHl0aG9uMzUuUHlFcnJfQ2xlYXIKLSAgUHlFcnJfRGlzcGxheT1weXRob24zNS5QeUVycl9EaXNwbGF5Ci0gIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzUuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9GZXRjaD1weXRob24zNS5QeUVycl9GZXRjaAotICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzUuUHlFcnJfRm9ybWF0Ci0gIFB5RXJyX0Zvcm1hdFY9cHl0aG9uMzUuUHlFcnJfRm9ybWF0VgotICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzUuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb24KLSAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCi0gIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM1LlB5RXJyX05vTWVtb3J5Ci0gIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNS5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KLSAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzUuUHlFcnJfT2NjdXJyZWQKLSAgUHlFcnJfUHJpbnQ9cHl0aG9uMzUuUHlFcnJfUHJpbnQKLSAgUHlFcnJfUHJpbnRFeD1weXRob24zNS5QeUVycl9QcmludEV4Ci0gIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM1LlB5RXJyX1Byb2dyYW1UZXh0Ci0gIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzUuUHlFcnJfUmVzdG9yZQotICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFcnJfU2V0SW50ZXJydXB0Ci0gIFB5RXJyX1NldE5vbmU9cHl0aG9uMzUuUHlFcnJfU2V0Tm9uZQotICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzUuUHlFcnJfU2V0T2JqZWN0Ci0gIFB5RXJyX1NldFN0cmluZz1weXRob24zNS5QeUVycl9TZXRTdHJpbmcKLSAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzUuUHlFcnJfU3ludGF4TG9jYXRpb24KLSAgUHlFcnJfV2FybkV4PXB5dGhvbjM1LlB5RXJyX1dhcm5FeAotICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzUuUHlFcnJfV2FybkV4cGxpY2l0Ci0gIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzUuUHlFcnJfV2FybkZvcm1hdAotICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzUuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCi0gIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zNS5QeUV2YWxfQWNxdWlyZUxvY2sKLSAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVUaHJlYWQKLSAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zNS5QeUV2YWxfQ2FsbEZ1bmN0aW9uCi0gIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjM1LlB5RXZhbF9DYWxsTWV0aG9kCi0gIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjM1LlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCi0gIFB5RXZhbF9FdmFsQ29kZT1weXRob24zNS5QeUV2YWxfRXZhbENvZGUKLSAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlRXgKLSAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zNS5QeUV2YWxfRXZhbEZyYW1lCi0gIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zNS5QeUV2YWxfRXZhbEZyYW1lRXgKLSAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjM1LlB5RXZhbF9HZXRCdWlsdGlucwotICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjM1LlB5RXZhbF9HZXRDYWxsU3RhdHMKLSAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjM1LlB5RXZhbF9HZXRGcmFtZQotICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNEZXNjCi0gIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnVuY05hbWUKLSAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzUuUHlFdmFsX0dldEdsb2JhbHMKLSAgUHlFdmFsX0dldExvY2Fscz1weXRob24zNS5QeUV2YWxfR2V0TG9jYWxzCi0gIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zNS5QeUV2YWxfSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX1JlSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjM1LlB5RXZhbF9SZWxlYXNlTG9jawotICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zNS5QeUV2YWxfUmVsZWFzZVRocmVhZAotICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zNS5QeUV2YWxfUmVzdG9yZVRocmVhZAotICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zNS5QeUV2YWxfU2F2ZVRocmVhZAotICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKLSAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjM1LlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCi0gIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjM1LlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKLSAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQotICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQotICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zNS5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCi0gIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zNS5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQotICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzUuUHlFeGNfRU9GRXJyb3IgREFUQQotICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM1LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQotICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzUuUHlFeGNfRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM1LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCi0gIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCi0gIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzUuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCi0gIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzUuUHlFeGNfSU9FcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM1LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNS5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKLSAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNS5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKLSAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNS5QeUV4Y19JbmRleEVycm9yIERBVEEKLSAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzUuUHlFeGNfS2V5RXJyb3IgREFUQQotICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zNS5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCi0gIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjM1LlB5RXhjX0xvb2t1cEVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzUuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjM1LlB5RXhjX05hbWVFcnJvciBEQVRBCi0gIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzUuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCi0gIFB5RXhjX09TRXJyb3I9cHl0aG9uMzUuUHlFeGNfT1NFcnJvciBEQVRBCi0gIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzUuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCi0gIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNS5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQotICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNS5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zNS5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zNS5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCi0gIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzUuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCi0gIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjM1LlB5RXhjX1N5bnRheEVycm9yIERBVEEKLSAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zNS5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzUuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQotICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjM1LlB5RXhjX1N5c3RlbUV4aXQgREFUQQotICBQeUV4Y19UYWJFcnJvcj1weXRob24zNS5QeUV4Y19UYWJFcnJvciBEQVRBCi0gIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNS5QeUV4Y19UeXBlRXJyb3IgREFUQQotICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNS5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNS5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCi0gIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKLSAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNS5QeUV4Y19WYWx1ZUVycm9yIERBVEEKLSAgUHlFeGNfV2FybmluZz1weXRob24zNS5QeUV4Y19XYXJuaW5nIERBVEEKLSAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQotICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldENvbnRleHQKLSAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjawotICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldENvbnRleHQKLSAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjawotICBQeUZpbGVfRnJvbUZkPXB5dGhvbjM1LlB5RmlsZV9Gcm9tRmQKLSAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzUuUHlGaWxlX0dldExpbmUKLSAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjM1LlB5RmlsZV9Xcml0ZU9iamVjdAotICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzUuUHlGaWxlX1dyaXRlU3RyaW5nCi0gIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzUuUHlGaWx0ZXJfVHlwZSBEQVRBCi0gIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzUuUHlGbG9hdF9Bc0RvdWJsZQotICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tRG91YmxlCi0gIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zNS5QeUZsb2F0X0Zyb21TdHJpbmcKLSAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjM1LlB5RmxvYXRfR2V0SW5mbwotICBQeUZsb2F0X0dldE1heD1weXRob24zNS5QeUZsb2F0X0dldE1heAotICBQeUZsb2F0X0dldE1pbj1weXRob24zNS5QeUZsb2F0X0dldE1pbgotICBQeUZsb2F0X1R5cGU9cHl0aG9uMzUuUHlGbG9hdF9UeXBlIERBVEEKLSAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjM1LlB5RnJvemVuU2V0X05ldwotICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjM1LlB5RnJvemVuU2V0X1R5cGUgREFUQQotICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzUuUHlHQ19Db2xsZWN0Ci0gIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjM1LlB5R0lMU3RhdGVfRW5zdXJlCi0gIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjM1LlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCi0gIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zNS5QeUdJTFN0YXRlX1JlbGVhc2UKLSAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjM1LlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCi0gIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9BZGRNb2R1bGUKLSAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNS5QeUltcG9ydF9BcHBlbmRJbml0dGFiCi0gIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzUuUHlJbXBvcnRfQ2xlYW51cAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcwotICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNS5QeUltcG9ydF9HZXRJbXBvcnRlcgotICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY051bWJlcgotICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY1RhZwotICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM1LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKLSAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydAotICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCi0gIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9SZWxvYWRNb2R1bGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgotICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfTmV3Ci0gIFB5SXRlcl9OZXh0PXB5dGhvbjM1LlB5SXRlcl9OZXh0Ci0gIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zNS5QeUxpc3RJdGVyX1R5cGUgREFUQQotICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0X0FwcGVuZD1weXRob24zNS5QeUxpc3RfQXBwZW5kCi0gIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjM1LlB5TGlzdF9Bc1R1cGxlCi0gIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjM1LlB5TGlzdF9HZXRJdGVtCi0gIFB5TGlzdF9HZXRTbGljZT1weXRob24zNS5QeUxpc3RfR2V0U2xpY2UKLSAgUHlMaXN0X0luc2VydD1weXRob24zNS5QeUxpc3RfSW5zZXJ0Ci0gIFB5TGlzdF9OZXc9cHl0aG9uMzUuUHlMaXN0X05ldwotICBQeUxpc3RfUmV2ZXJzZT1weXRob24zNS5QeUxpc3RfUmV2ZXJzZQotICBQeUxpc3RfU2V0SXRlbT1weXRob24zNS5QeUxpc3RfU2V0SXRlbQotICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X1NldFNsaWNlCi0gIFB5TGlzdF9TaXplPXB5dGhvbjM1LlB5TGlzdF9TaXplCi0gIFB5TGlzdF9Tb3J0PXB5dGhvbjM1LlB5TGlzdF9Tb3J0Ci0gIFB5TGlzdF9UeXBlPXB5dGhvbjM1LlB5TGlzdF9UeXBlIERBVEEKLSAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzUuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzUuUHlMb25nX0FzRG91YmxlCi0gIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzTG9uZwotICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nCi0gIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzUuUHlMb25nX0FzU2l6ZV90Ci0gIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0FzU3NpemVfdAotICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzawotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKLSAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zNS5QeUxvbmdfQXNWb2lkUHRyCi0gIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Gcm9tRG91YmxlCi0gIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbUxvbmcKLSAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbUxvbmdMb25nCi0gIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Gcm9tU2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNzaXplX3QKLSAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21TdHJpbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0Zyb21Wb2lkUHRyCi0gIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjM1LlB5TG9uZ19HZXRJbmZvCi0gIFB5TG9uZ19UeXBlPXB5dGhvbjM1LlB5TG9uZ19UeXBlIERBVEEKLSAgUHlNYXBfVHlwZT1weXRob24zNS5QeU1hcF9UeXBlIERBVEEKLSAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjM1LlB5TWFwcGluZ19DaGVjawotICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjM1LlB5TWFwcGluZ19IYXNLZXkKLSAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCi0gIFB5TWFwcGluZ19JdGVtcz1weXRob24zNS5QeU1hcHBpbmdfSXRlbXMKLSAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzUuUHlNYXBwaW5nX0tleXMKLSAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zNS5QeU1hcHBpbmdfTGVuZ3RoCi0gIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19TaXplPXB5dGhvbjM1LlB5TWFwcGluZ19TaXplCi0gIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzUuUHlNYXBwaW5nX1ZhbHVlcwotICBQeU1lbV9GcmVlPXB5dGhvbjM1LlB5TWVtX0ZyZWUKLSAgUHlNZW1fTWFsbG9jPXB5dGhvbjM1LlB5TWVtX01hbGxvYwotICBQeU1lbV9SZWFsbG9jPXB5dGhvbjM1LlB5TWVtX1JlYWxsb2MKLSAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjM1LlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0Ci0gIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjM1LlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCi0gIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjM1LlB5TWVtb3J5Vmlld19UeXBlIERBVEEKLSAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM1LlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZEludENvbnN0YW50Ci0gIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zNS5QeU1vZHVsZV9BZGRPYmplY3QKLSAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzUuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKLSAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zNS5QeU1vZHVsZV9DcmVhdGUyCi0gIFB5TW9kdWxlX0dldERlZj1weXRob24zNS5QeU1vZHVsZV9HZXREZWYKLSAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zNS5QeU1vZHVsZV9HZXREaWN0Ci0gIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldEZpbGVuYW1lCi0gIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM1LlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0Ci0gIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0TmFtZQotICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zNS5QeU1vZHVsZV9HZXRTdGF0ZQotICBQeU1vZHVsZV9OZXc9cHl0aG9uMzUuUHlNb2R1bGVfTmV3Ci0gIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzUuUHlNb2R1bGVfVHlwZSBEQVRBCi0gIFB5TW9kdWxlRGVmX0luaXQ9cHl0aG9uMzUuUHlNb2R1bGVEZWZfSW5pdAotICBQeU1vZHVsZURlZl9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlRGVmX1R5cGUgREFUQQotICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjM1LlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQotICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zNS5QeU51bWJlcl9BYnNvbHV0ZQotICBQeU51bWJlcl9BZGQ9cHl0aG9uMzUuUHlOdW1iZXJfQWRkCi0gIFB5TnVtYmVyX0FuZD1weXRob24zNS5QeU51bWJlcl9BbmQKLSAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TnVtYmVyX0FzU3NpemVfdAotICBQeU51bWJlcl9DaGVjaz1weXRob24zNS5QeU51bWJlcl9DaGVjawotICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzUuUHlOdW1iZXJfRGl2bW9kCi0gIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjM1LlB5TnVtYmVyX0Zsb2F0Ci0gIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0Zsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUFkZAotICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBbmQKLSAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQotICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZU9yCi0gIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUG93ZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCi0gIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAotICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0Ci0gIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVhvcgotICBQeU51bWJlcl9JbmRleD1weXRob24zNS5QeU51bWJlcl9JbmRleAotICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW52ZXJ0Ci0gIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzUuUHlOdW1iZXJfTG9uZwotICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfTHNoaWZ0Ci0gIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjM1LlB5TnVtYmVyX011bHRpcGx5Ci0gIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjM1LlB5TnVtYmVyX05lZ2F0aXZlCi0gIFB5TnVtYmVyX09yPXB5dGhvbjM1LlB5TnVtYmVyX09yCi0gIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjM1LlB5TnVtYmVyX1Bvc2l0aXZlCi0gIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjM1LlB5TnVtYmVyX1Bvd2VyCi0gIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zNS5QeU51bWJlcl9SZW1haW5kZXIKLSAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX1JzaGlmdAotICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zNS5QeU51bWJlcl9TdWJ0cmFjdAotICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzUuUHlOdW1iZXJfVG9CYXNlCi0gIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfVHJ1ZURpdmlkZQotICBQeU51bWJlcl9Yb3I9cHl0aG9uMzUuUHlOdW1iZXJfWG9yCi0gIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM1LlB5T1NfQWZ0ZXJGb3JrCi0gIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzUuUHlPU19Jbml0SW50ZXJydXB0cwotICBQeU9TX0lucHV0SG9vaz1weXRob24zNS5QeU9TX0lucHV0SG9vayBEQVRBCi0gIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzUuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAotICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjM1LlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQotICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzUuUHlPU19kb3VibGVfdG9fc3RyaW5nCi0gIFB5T1NfZ2V0c2lnPXB5dGhvbjM1LlB5T1NfZ2V0c2lnCi0gIFB5T1NfbXlzdHJpY21wPXB5dGhvbjM1LlB5T1NfbXlzdHJpY21wCi0gIFB5T1NfbXlzdHJuaWNtcD1weXRob24zNS5QeU9TX215c3RybmljbXAKLSAgUHlPU19zZXRzaWc9cHl0aG9uMzUuUHlPU19zZXRzaWcKLSAgUHlPU19zbnByaW50Zj1weXRob24zNS5QeU9TX3NucHJpbnRmCi0gIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zNS5QeU9TX3N0cmluZ190b19kb3VibGUKLSAgUHlPU19zdHJ0b2w9cHl0aG9uMzUuUHlPU19zdHJ0b2wKLSAgUHlPU19zdHJ0b3VsPXB5dGhvbjM1LlB5T1Nfc3RydG91bAotICBQeU9TX3ZzbnByaW50Zj1weXRob24zNS5QeU9TX3ZzbnByaW50ZgotICBQeU9iamVjdF9BU0NJST1weXRob24zNS5QeU9iamVjdF9BU0NJSQotICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNDaGFyQnVmZmVyCi0gIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzUuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgotICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgotICBQeU9iamVjdF9CeXRlcz1weXRob24zNS5QeU9iamVjdF9CeXRlcwotICBQeU9iamVjdF9DYWxsPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGwKLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxGdW5jdGlvbgotICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kCi0gIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE9iamVjdAotICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzUuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcwotICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X0RlbEl0ZW0KLSAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCi0gIFB5T2JqZWN0X0Rpcj1weXRob24zNS5QeU9iamVjdF9EaXIKLSAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjM1LlB5T2JqZWN0X0Zvcm1hdAotICBQeU9iamVjdF9GcmVlPXB5dGhvbjM1LlB5T2JqZWN0X0ZyZWUKLSAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjM1LlB5T2JqZWN0X0dDX0RlbAotICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19UcmFjawotICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjM1LlB5T2JqZWN0X0dDX1VuVHJhY2sKLSAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKLSAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9HZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0clN0cmluZwotICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X0dldEl0ZW0KLSAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zNS5QeU9iamVjdF9HZXRJdGVyCi0gIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzUuUHlPYmplY3RfSGFzQXR0cgotICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKLSAgUHlPYmplY3RfSGFzaD1weXRob24zNS5QeU9iamVjdF9IYXNoCi0gIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zNS5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKLSAgUHlPYmplY3RfSW5pdD1weXRob24zNS5QeU9iamVjdF9Jbml0Ci0gIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzUuUHlPYmplY3RfSW5pdFZhcgotICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjM1LlB5T2JqZWN0X0lzSW5zdGFuY2UKLSAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zNS5QeU9iamVjdF9Jc1N1YmNsYXNzCi0gIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zNS5QeU9iamVjdF9Jc1RydWUKLSAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjM1LlB5T2JqZWN0X0xlbmd0aAotICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfTWFsbG9jCi0gIFB5T2JqZWN0X05vdD1weXRob24zNS5QeU9iamVjdF9Ob3QKLSAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zNS5QeU9iamVjdF9SZWFsbG9jCi0gIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzUuUHlPYmplY3RfUmVwcgotICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zNS5QeU9iamVjdF9SaWNoQ29tcGFyZQotICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCi0gIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjM1LlB5T2JqZWN0X1NlbGZJdGVyCi0gIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfU2V0QXR0cgotICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9TZXRJdGVtCi0gIFB5T2JqZWN0X1NpemU9cHl0aG9uMzUuUHlPYmplY3RfU2l6ZQotICBQeU9iamVjdF9TdHI9cHl0aG9uMzUuUHlPYmplY3RfU3RyCi0gIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlPYmplY3RfVHlwZSBEQVRBCi0gIFB5T0RpY3RfRGVsSXRlbT1weXRob24zNS5QeU9EaWN0X0RlbEl0ZW0KLSAgUHlPRGljdF9OZXc9cHl0aG9uMzUuUHlPRGljdF9OZXcKLSAgUHlPRGljdF9TZXRJdGVtPXB5dGhvbjM1LlB5T0RpY3RfU2V0SXRlbQotICBQeU9EaWN0X1R5cGU9cHl0aG9uMzUuUHlPRGljdF9UeXBlIERBVEEKLSAgUHlPRGljdEl0ZW1zX1R5cGU9cHl0aG9uMzUuUHlPRGljdEl0ZW1zX1R5cGUgREFUQQotICBQeU9EaWN0SXRlcl9UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVyX1R5cGUgREFUQQotICBQeU9EaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5T0RpY3RLZXlzX1R5cGUgREFUQQotICBQeU9EaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlPRGljdFZhbHVlc19UeXBlIERBVEEKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNS5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi0gIFB5UHJvcGVydHlfVHlwZT1weXRob24zNS5QeVByb3BlcnR5X1R5cGUgREFUQQotICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeVJhbmdlX1R5cGU9cHl0aG9uMzUuUHlSYW5nZV9UeXBlIERBVEEKLSAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjM1LlB5UmV2ZXJzZWRfVHlwZSBEQVRBCi0gIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzUuUHlTZXFJdGVyX05ldwotICBQeVNlcUl0ZXJfVHlwZT1weXRob24zNS5QeVNlcUl0ZXJfVHlwZSBEQVRBCi0gIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzUuUHlTZXF1ZW5jZV9DaGVjawotICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zNS5QeVNlcXVlbmNlX0NvbmNhdAotICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ29udGFpbnMKLSAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zNS5QeVNlcXVlbmNlX0NvdW50Ci0gIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0RlbEl0ZW0KLSAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0RlbFNsaWNlCi0gIFB5U2VxdWVuY2VfRmFzdD1weXRob24zNS5QeVNlcXVlbmNlX0Zhc3QKLSAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfR2V0SXRlbQotICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfR2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9Jbj1weXRob24zNS5QeVNlcXVlbmNlX0luCi0gIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKLSAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAotICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5kZXgKLSAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzUuUHlTZXF1ZW5jZV9MZW5ndGgKLSAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjM1LlB5U2VxdWVuY2VfTGlzdAotICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX1JlcGVhdAotICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9TZXRTbGljZQotICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzUuUHlTZXF1ZW5jZV9TaXplCi0gIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzUuUHlTZXF1ZW5jZV9UdXBsZQotICBQeVNldEl0ZXJfVHlwZT1weXRob24zNS5QeVNldEl0ZXJfVHlwZSBEQVRBCi0gIFB5U2V0X0FkZD1weXRob24zNS5QeVNldF9BZGQKLSAgUHlTZXRfQ2xlYXI9cHl0aG9uMzUuUHlTZXRfQ2xlYXIKLSAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzUuUHlTZXRfQ29udGFpbnMKLSAgUHlTZXRfRGlzY2FyZD1weXRob24zNS5QeVNldF9EaXNjYXJkCi0gIFB5U2V0X05ldz1weXRob24zNS5QeVNldF9OZXcKLSAgUHlTZXRfUG9wPXB5dGhvbjM1LlB5U2V0X1BvcAotICBQeVNldF9TaXplPXB5dGhvbjM1LlB5U2V0X1NpemUKLSAgUHlTZXRfVHlwZT1weXRob24zNS5QeVNldF9UeXBlIERBVEEKLSAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjM1LlB5U2xpY2VfR2V0SW5kaWNlcwotICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXNFeAotICBQeVNsaWNlX05ldz1weXRob24zNS5QeVNsaWNlX05ldwotICBQeVNsaWNlX1R5cGU9cHl0aG9uMzUuUHlTbGljZV9UeXBlIERBVEEKLSAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjM1LlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCi0gIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zNS5QeVN0YXRlX0ZpbmRNb2R1bGUKLSAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9BZGRNb2R1bGUKLSAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQotICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX05ldwotICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCi0gIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTdXBlcl9UeXBlPXB5dGhvbjM1LlB5U3VwZXJfVHlwZSBEQVRBCi0gIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvbgotICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zNS5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQotICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3RkZXJyCi0gIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNS5QeVN5c19Gb3JtYXRTdGRvdXQKLSAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX0dldE9iamVjdAotICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19IYXNXYXJuT3B0aW9ucwotICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM1LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKLSAgUHlTeXNfU2V0QXJndj1weXRob24zNS5QeVN5c19TZXRBcmd2Ci0gIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNS5QeVN5c19TZXRBcmd2RXgKLSAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX1NldE9iamVjdAotICBQeVN5c19TZXRQYXRoPXB5dGhvbjM1LlB5U3lzX1NldFBhdGgKLSAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRlcnIKLSAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRvdXQKLSAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNS5QeVRocmVhZFN0YXRlX0NsZWFyCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfRGVsZXRlCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKLSAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9HZXQKLSAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0RGljdAotICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNS5QeVRocmVhZFN0YXRlX05ldwotICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLSAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU3dhcAotICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM1LlB5VHJhY2VCYWNrX0hlcmUKLSAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzUuUHlUcmFjZUJhY2tfUHJpbnQKLSAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNS5QeVRyYWNlQmFja19UeXBlIERBVEEKLSAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNS5QeVR1cGxlSXRlcl9UeXBlIERBVEEKLSAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9HZXRJdGVtCi0gIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzUuUHlUdXBsZV9HZXRTbGljZQotICBQeVR1cGxlX05ldz1weXRob24zNS5QeVR1cGxlX05ldwotICBQeVR1cGxlX1BhY2s9cHl0aG9uMzUuUHlUdXBsZV9QYWNrCi0gIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNS5QeVR1cGxlX1NldEl0ZW0KLSAgUHlUdXBsZV9TaXplPXB5dGhvbjM1LlB5VHVwbGVfU2l6ZQotICBQeVR1cGxlX1R5cGU9cHl0aG9uMzUuUHlUdXBsZV9UeXBlIERBVEEKLSAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzUuUHlUeXBlX0NsZWFyQ2FjaGUKLSAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlYwotICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzUuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCi0gIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNBbGxvYwotICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNS5QeVR5cGVfR2VuZXJpY05ldwotICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzUuUHlUeXBlX0dldEZsYWdzCi0gIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM1LlB5VHlwZV9HZXRTbG90Ci0gIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzUuUHlUeXBlX0lzU3VidHlwZQotICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzUuUHlUeXBlX01vZGlmaWVkCi0gIFB5VHlwZV9SZWFkeT1weXRob24zNS5QeVR5cGVfUmVhZHkKLSAgUHlUeXBlX1R5cGU9cHl0aG9uMzUuUHlUeXBlX1R5cGUgREFUQQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM1LlB5VW5pY29kZV9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCi0gIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwotICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEYxNlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEYzMlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjhTdHJpbmcKLSAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1dpZGVDaGFyCi0gIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjM1LlB5VW5pY29kZV9DbGVhckZyZWVsaXN0Ci0gIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjM1LlB5VW5pY29kZV9Db21wYXJlCi0gIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvbmNhdAotICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzUuUHlVbmljb2RlX0NvbnRhaW5zCi0gIFB5VW5pY29kZV9Db3VudD1weXRob24zNS5QeVVuaWNvZGVfQ291bnQKLSAgUHlVbmljb2RlX0RlY29kZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlCi0gIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlQVNDSUkKLSAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUNoYXJtYXAKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0gIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUxhdGluMQotICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjE2Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMzIKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjgKLSAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNS5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKLSAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNS5QeVVuaWNvZGVfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM1LlB5VW5pY29kZV9GaW5kCi0gIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0Zvcm1hdAotICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdFYKLSAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21PYmplY3QKLSAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT3JkaW5hbAotICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfRnJvbVN0cmluZwotICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgotICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0dldFNpemUKLSAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zNS5QeVVuaWNvZGVfSXNJZGVudGlmaWVyCi0gIFB5VW5pY29kZV9Kb2luPXB5dGhvbjM1LlB5VW5pY29kZV9Kb2luCi0gIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1BhcnRpdGlvbgotICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zNS5QeVVuaWNvZGVfUlBhcnRpdGlvbgotICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjM1LlB5VW5pY29kZV9SU3BsaXQKLSAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzUuUHlVbmljb2RlX1JlcGxhY2UKLSAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zNS5QeVVuaWNvZGVfUmVzaXplCi0gIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfUmljaENvbXBhcmUKLSAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zNS5QeVVuaWNvZGVfU3BsaXQKLSAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0bGluZXMKLSAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zNS5QeVVuaWNvZGVfVGFpbG1hdGNoCi0gIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzUuUHlVbmljb2RlX1RyYW5zbGF0ZQotICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zNS5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAotICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGNwotICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKLSAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zNS5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKLSAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkluUGxhY2UKLSAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzUuUHlVbmljb2RlX1R5cGUgREFUQQotICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjM1LlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQotICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzUuUHlXZWFrcmVmX05ld1Byb3h5Ci0gIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzUuUHlXZWFrcmVmX05ld1JlZgotICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjM1LlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQotICBQeVdyYXBwZXJfTmV3PXB5dGhvbjM1LlB5V3JhcHBlcl9OZXcKLSAgUHlaaXBfVHlwZT1weXRob24zNS5QeVppcF9UeXBlIERBVEEKLSAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzUuUHlfQWRkUGVuZGluZ0NhbGwKLSAgUHlfQXRFeGl0PXB5dGhvbjM1LlB5X0F0RXhpdAotICBQeV9CdWlsZFZhbHVlPXB5dGhvbjM1LlB5X0J1aWxkVmFsdWUKLSAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zNS5QeV9Db21waWxlU3RyaW5nCi0gIFB5X0RlY1JlZj1weXRob24zNS5QeV9EZWNSZWYKLSAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzUuUHlfRW5kSW50ZXJwcmV0ZXIKLSAgUHlfRXhpdD1weXRob24zNS5QeV9FeGl0Ci0gIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzUuUHlfRmF0YWxFcnJvcgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9GaW5hbGl6ZT1weXRob24zNS5QeV9GaW5hbGl6ZQotICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzUuUHlfR2V0QnVpbGRJbmZvCi0gIFB5X0dldENvbXBpbGVyPXB5dGhvbjM1LlB5X0dldENvbXBpbGVyCi0gIFB5X0dldENvcHlyaWdodD1weXRob24zNS5QeV9HZXRDb3B5cmlnaHQKLSAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNS5QeV9HZXRFeGVjUHJlZml4Ci0gIFB5X0dldFBhdGg9cHl0aG9uMzUuUHlfR2V0UGF0aAotICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNS5QeV9HZXRQbGF0Zm9ybQotICBQeV9HZXRQcmVmaXg9cHl0aG9uMzUuUHlfR2V0UHJlZml4Ci0gIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNS5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKLSAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbU5hbWUKLSAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9HZXRQeXRob25Ib21lCi0gIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X0dldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X0dldFZlcnNpb249cHl0aG9uMzUuUHlfR2V0VmVyc2lvbgotICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9JbmNSZWY9cHl0aG9uMzUuUHlfSW5jUmVmCi0gIFB5X0luaXRpYWxpemU9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZQotICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZUV4Ci0gIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzUuUHlfSXNJbml0aWFsaXplZAotICBQeV9NYWluPXB5dGhvbjM1LlB5X01haW4KLSAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNS5QeV9NYWtlUGVuZGluZ0NhbGxzCi0gIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM1LlB5X05ld0ludGVycHJldGVyCi0gIFB5X1JlcHJFbnRlcj1weXRob24zNS5QeV9SZXByRW50ZXIKLSAgUHlfUmVwckxlYXZlPXB5dGhvbjM1LlB5X1JlcHJMZWF2ZQotICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNS5QeV9TZXRQcm9ncmFtTmFtZQotICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM1LlB5X1NldFB5dGhvbkhvbWUKLSAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuUHlfU2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzUuUHlfU3ltdGFibGVTdHJpbmcKLSAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM1LlB5X1ZhQnVpbGRWYWx1ZQotICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCi0gIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM1Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi0gIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX01hbGxvYwotICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19OZXcKLSAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3VmFyCi0gIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX1Jlc2l6ZQotICBfUHlPYmplY3RfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9OZXcKLSAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfTmV3VmFyCi0gIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNS5fUHlTdGF0ZV9BZGRNb2R1bGUKLSAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9Jbml0Ci0gIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM1Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi0gIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQotICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCi0gIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM1Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0Ci0gIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzUuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNS5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQotICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfQnVpbGRWYWx1ZV9TaXplVAotICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNS5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCi0gIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAotICBfUHlfRGVhbGxvYz1weXRob24zNS5fUHlfRGVhbGxvYwotICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzUuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKLSAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM1Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM1Ll9QeV9Ob25lU3RydWN0IERBVEEKLSAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM1Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCi0gIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzUuX1B5X1N3YXBwZWRPcCBEQVRBCi0gIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM1Ll9QeV9UcnVlU3RydWN0IERBVEEKLSAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCi0gIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19WYVBhcnNlX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgUHlBcmdfUGFyc2U9cHl0aG9uMzYuUHlBcmdfUGFyc2UKKyAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNi5QeUFyZ19QYXJzZVR1cGxlCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNi5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzYuUHlBcmdfVW5wYWNrVHVwbGUKKyAgUHlBcmdfVmFQYXJzZT1weXRob24zNi5QeUFyZ19WYVBhcnNlCisgIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM2LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNi5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKKyAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzYuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQorICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzYuUHlCb29sX0Zyb21Mb25nCisgIFB5Qm9vbF9UeXBlPXB5dGhvbjM2LlB5Qm9vbF9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzYuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNi5QeUJ5dGVBcnJheV9Bc1N0cmluZworICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzYuUHlCeXRlQXJyYXlfQ29uY2F0CisgIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAorICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfUmVzaXplCisgIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfU2l6ZQorICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQorICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM2LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZXNfQXNTdHJpbmcKKyAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzYuUHlCeXRlc19Db25jYXQKKyAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzYuUHlCeXRlc19Db25jYXRBbmREZWwKKyAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlCeXRlc19EZWNvZGVFc2NhcGUKKyAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbUZvcm1hdAorICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKKyAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbU9iamVjdAorICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlCeXRlc19Gcm9tU3RyaW5nCisgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzYuUHlCeXRlc19SZXByCisgIFB5Qnl0ZXNfU2l6ZT1weXRob24zNi5QeUJ5dGVzX1NpemUKKyAgUHlCeXRlc19UeXBlPXB5dGhvbjM2LlB5Qnl0ZXNfVHlwZSBEQVRBCisgIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzYuUHlDRnVuY3Rpb25fQ2FsbAorICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKKyAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKKyAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KKyAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNi5QeUNGdW5jdGlvbl9HZXRTZWxmCisgIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNi5QeUNGdW5jdGlvbl9OZXcKKyAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzYuUHlDRnVuY3Rpb25fTmV3RXgKKyAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNi5QeUNGdW5jdGlvbl9UeXBlIERBVEEKKyAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzYuUHlDYWxsSXRlcl9OZXcKKyAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM2LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCisgIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzYuUHlDYWxsYWJsZV9DaGVjaworICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNi5QeUNhcHN1bGVfR2V0Q29udGV4dAorICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNi5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNi5QeUNhcHN1bGVfR2V0TmFtZQorICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNi5QeUNhcHN1bGVfR2V0UG9pbnRlcgorICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM2LlB5Q2Fwc3VsZV9JbXBvcnQKKyAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzYuUHlDYXBzdWxlX0lzVmFsaWQKKyAgUHlDYXBzdWxlX05ldz1weXRob24zNi5QeUNhcHN1bGVfTmV3CisgIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXROYW1lCisgIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM2LlB5Q2Fwc3VsZV9UeXBlIERBVEEKKyAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzYuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM2LlB5Q29kZWNfRGVjb2RlCisgIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNi5QeUNvZGVjX0RlY29kZXIKKyAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzYuUHlDb2RlY19FbmNvZGUKKyAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM2LlB5Q29kZWNfRW5jb2RlcgorICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNi5QeUNvZGVjX0lnbm9yZUVycm9ycworICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNi5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgorICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNi5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgorICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzYuUHlDb2RlY19Lbm93bkVuY29kaW5nCisgIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlDb2RlY19Mb29rdXBFcnJvcgorICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM2LlB5Q29kZWNfUmVnaXN0ZXIKKyAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM2LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgorICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19SZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM2LlB5Q29kZWNfU3RyZWFtUmVhZGVyCisgIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM2LlB5Q29kZWNfU3RyZWFtV3JpdGVyCisgIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfU3RyaWN0RXJyb3JzCisgIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycworICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzYuUHlDb21wbGV4X0Zyb21Eb3VibGVzCisgIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzYuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQorICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM2LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKKyAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzYuUHlDb21wbGV4X1R5cGUgREFUQQorICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM2LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKKyAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzYuUHlEZXNjcl9OZXdHZXRTZXQKKyAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzYuUHlEZXNjcl9OZXdNZW1iZXIKKyAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzYuUHlEZXNjcl9OZXdNZXRob2QKKyAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNi5QeURpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNi5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM2LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM2LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKKyAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM2LlB5RGljdEtleXNfVHlwZSBEQVRBCisgIFB5RGljdFByb3h5X05ldz1weXRob24zNi5QeURpY3RQcm94eV9OZXcKKyAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNi5QeURpY3RQcm94eV9UeXBlIERBVEEKKyAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzYuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeURpY3RfQ2xlYXI9cHl0aG9uMzYuUHlEaWN0X0NsZWFyCisgIFB5RGljdF9Db250YWlucz1weXRob24zNi5QeURpY3RfQ29udGFpbnMKKyAgUHlEaWN0X0NvcHk9cHl0aG9uMzYuUHlEaWN0X0NvcHkKKyAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlEaWN0X0RlbEl0ZW0KKyAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzYuUHlEaWN0X0dldEl0ZW0KKyAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X0dldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzYuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKKyAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM2LlB5RGljdF9JdGVtcworICBQeURpY3RfS2V5cz1weXRob24zNi5QeURpY3RfS2V5cworICBQeURpY3RfTWVyZ2U9cHl0aG9uMzYuUHlEaWN0X01lcmdlCisgIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM2LlB5RGljdF9NZXJnZUZyb21TZXEyCisgIFB5RGljdF9OZXc9cHl0aG9uMzYuUHlEaWN0X05ldworICBQeURpY3RfTmV4dD1weXRob24zNi5QeURpY3RfTmV4dAorICBQeURpY3RfU2V0SXRlbT1weXRob24zNi5QeURpY3RfU2V0SXRlbQorICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNi5QeURpY3RfU2V0SXRlbVN0cmluZworICBQeURpY3RfU2l6ZT1weXRob24zNi5QeURpY3RfU2l6ZQorICBQeURpY3RfVHlwZT1weXRob24zNi5QeURpY3RfVHlwZSBEQVRBCisgIFB5RGljdF9VcGRhdGU9cHl0aG9uMzYuUHlEaWN0X1VwZGF0ZQorICBQeURpY3RfVmFsdWVzPXB5dGhvbjM2LlB5RGljdF9WYWx1ZXMKKyAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM2LlB5RWxsaXBzaXNfVHlwZSBEQVRBCisgIFB5RW51bV9UeXBlPXB5dGhvbjM2LlB5RW51bV9UeXBlIERBVEEKKyAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzYuUHlFcnJfQmFkQXJndW1lbnQKKyAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM2LlB5RXJyX0JhZEludGVybmFsQ2FsbAorICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzYuUHlFcnJfQ2hlY2tTaWduYWxzCisgIFB5RXJyX0NsZWFyPXB5dGhvbjM2LlB5RXJyX0NsZWFyCisgIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzYuUHlFcnJfRGlzcGxheQorICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM2LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfRmV0Y2g9cHl0aG9uMzYuUHlFcnJfRmV0Y2gKKyAgUHlFcnJfRm9ybWF0PXB5dGhvbjM2LlB5RXJyX0Zvcm1hdAorICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM2LlB5RXJyX0Zvcm1hdFYKKyAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM2LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzYuUHlFcnJfTmV3RXhjZXB0aW9uCisgIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzYuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYworICBQeUVycl9Ob01lbW9yeT1weXRob24zNi5QeUVycl9Ob01lbW9yeQorICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzYuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCisgIFB5RXJyX09jY3VycmVkPXB5dGhvbjM2LlB5RXJyX09jY3VycmVkCisgIFB5RXJyX1ByaW50PXB5dGhvbjM2LlB5RXJyX1ByaW50CisgIFB5RXJyX1ByaW50RXg9cHl0aG9uMzYuUHlFcnJfUHJpbnRFeAorICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNi5QeUVycl9Qcm9ncmFtVGV4dAorICBQeUVycl9SZXN0b3JlPXB5dGhvbjM2LlB5RXJyX1Jlc3RvcmUKKyAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJubworICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKKyAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM2LlB5RXJyX1NldEludGVycnVwdAorICBQeUVycl9TZXROb25lPXB5dGhvbjM2LlB5RXJyX1NldE5vbmUKKyAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM2LlB5RXJyX1NldE9iamVjdAorICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzYuUHlFcnJfU2V0U3RyaW5nCisgIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM2LlB5RXJyX1N5bnRheExvY2F0aW9uCisgIFB5RXJyX1dhcm5FeD1weXRob24zNi5QeUVycl9XYXJuRXgKKyAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM2LlB5RXJyX1dhcm5FeHBsaWNpdAorICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM2LlB5RXJyX1dhcm5Gb3JtYXQKKyAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM2LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQorICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzYuUHlFdmFsX0FjcXVpcmVMb2NrCisgIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9BY3F1aXJlVGhyZWFkCisgIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzYuUHlFdmFsX0NhbGxGdW5jdGlvbgorICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNi5QeUV2YWxfQ2FsbE1ldGhvZAorICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNi5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcworICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzYuUHlFdmFsX0V2YWxDb2RlCisgIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM2LlB5RXZhbF9FdmFsQ29kZUV4CisgIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzYuUHlFdmFsX0V2YWxGcmFtZQorICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzYuUHlFdmFsX0V2YWxGcmFtZUV4CisgIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNi5QeUV2YWxfR2V0QnVpbHRpbnMKKyAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNi5QeUV2YWxfR2V0Q2FsbFN0YXRzCisgIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNi5QeUV2YWxfR2V0RnJhbWUKKyAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM2LlB5RXZhbF9HZXRGdW5jRGVzYworICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzYuUHlFdmFsX0dldEZ1bmNOYW1lCisgIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM2LlB5RXZhbF9HZXRHbG9iYWxzCisgIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzYuUHlFdmFsX0dldExvY2FscworICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzYuUHlFdmFsX0luaXRUaHJlYWRzCisgIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM2LlB5RXZhbF9SZUluaXRUaHJlYWRzCisgIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNi5QeUV2YWxfUmVsZWFzZUxvY2sKKyAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzYuUHlFdmFsX1JlbGVhc2VUaHJlYWQKKyAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzYuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKKyAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzYuUHlFdmFsX1NhdmVUaHJlYWQKKyAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNi5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCisgIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNi5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQorICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNi5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCisgIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM2LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKKyAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNi5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzYuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQorICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzYuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKKyAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM2LlB5RXhjX0VPRkVycm9yIERBVEEKKyAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNi5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKKyAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM2LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNi5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQorICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQorICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM2LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQorICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM2LlB5RXhjX0lPRXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNi5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCisgIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCisgIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzYuUHlFeGNfSW5kZXhFcnJvciBEQVRBCisgIFB5RXhjX0tleUVycm9yPXB5dGhvbjM2LlB5RXhjX0tleUVycm9yIERBVEEKKyAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzYuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQorICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNi5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM2LlB5RXhjX01lbW9yeUVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM2LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCisgIFB5RXhjX05hbWVFcnJvcj1weXRob24zNi5QeUV4Y19OYW1lRXJyb3IgREFUQQorICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM2LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQorICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM2LlB5RXhjX09TRXJyb3IgREFUQQorICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM2LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQorICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzYuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzYuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzYuUHlFeGNfUnVudGltZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQorICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM2LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQorICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNi5QeUV4Y19TeW50YXhFcnJvciBEQVRBCisgIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCisgIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM2LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKKyAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNi5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKKyAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzYuUHlFeGNfVGFiRXJyb3IgREFUQQorICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVHlwZUVycm9yIERBVEEKKyAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQorICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNi5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCisgIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVmFsdWVFcnJvciBEQVRBCisgIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzYuUHlFeGNfV2FybmluZyBEQVRBCisgIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM2LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKKyAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNi5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNi5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKKyAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNi5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNi5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKKyAgUHlGaWxlX0Zyb21GZD1weXRob24zNi5QeUZpbGVfRnJvbUZkCisgIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM2LlB5RmlsZV9HZXRMaW5lCisgIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNi5QeUZpbGVfV3JpdGVPYmplY3QKKyAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM2LlB5RmlsZV9Xcml0ZVN0cmluZworICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM2LlB5RmlsdGVyX1R5cGUgREFUQQorICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM2LlB5RmxvYXRfQXNEb3VibGUKKyAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM2LlB5RmxvYXRfRnJvbURvdWJsZQorICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlGbG9hdF9Gcm9tU3RyaW5nCisgIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNi5QeUZsb2F0X0dldEluZm8KKyAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzYuUHlGbG9hdF9HZXRNYXgKKyAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzYuUHlGbG9hdF9HZXRNaW4KKyAgUHlGbG9hdF9UeXBlPXB5dGhvbjM2LlB5RmxvYXRfVHlwZSBEQVRBCisgIFB5RnJvemVuU2V0X05ldz1weXRob24zNi5QeUZyb3plblNldF9OZXcKKyAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNi5QeUZyb3plblNldF9UeXBlIERBVEEKKyAgUHlHQ19Db2xsZWN0PXB5dGhvbjM2LlB5R0NfQ29sbGVjdAorICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNi5QeUdJTFN0YXRlX0Vuc3VyZQorICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNi5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQorICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzYuUHlHSUxTdGF0ZV9SZWxlYXNlCisgIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNi5QeUdldFNldERlc2NyX1R5cGUgREFUQQorICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfQWRkTW9kdWxlCisgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzYuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgorICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM2LlB5SW1wb3J0X0NsZWFudXAKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4CisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKKyAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzYuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TWFnaWNUYWcKKyAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNi5QeUltcG9ydF9HZXRNb2R1bGVEaWN0CisgIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNi5QeUltcG9ydF9JbXBvcnQKKyAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaworICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNi5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKKyAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNi5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX05ldworICBQeUl0ZXJfTmV4dD1weXRob24zNi5QeUl0ZXJfTmV4dAorICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzYuUHlMaXN0SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM2LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzYuUHlMaXN0X0FwcGVuZAorICBQeUxpc3RfQXNUdXBsZT1weXRob24zNi5QeUxpc3RfQXNUdXBsZQorICBQeUxpc3RfR2V0SXRlbT1weXRob24zNi5QeUxpc3RfR2V0SXRlbQorICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzYuUHlMaXN0X0dldFNsaWNlCisgIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzYuUHlMaXN0X0luc2VydAorICBQeUxpc3RfTmV3PXB5dGhvbjM2LlB5TGlzdF9OZXcKKyAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzYuUHlMaXN0X1JldmVyc2UKKyAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzYuUHlMaXN0X1NldEl0ZW0KKyAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM2LlB5TGlzdF9TZXRTbGljZQorICBQeUxpc3RfU2l6ZT1weXRob24zNi5QeUxpc3RfU2l6ZQorICBQeUxpc3RfU29ydD1weXRob24zNi5QeUxpc3RfU29ydAorICBQeUxpc3RfVHlwZT1weXRob24zNi5QeUxpc3RfVHlwZSBEQVRBCisgIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM2LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM2LlB5TG9uZ19Bc0RvdWJsZQorICBQeUxvbmdfQXNMb25nPXB5dGhvbjM2LlB5TG9uZ19Bc0xvbmcKKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM2LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNi5QeUxvbmdfQXNMb25nTG9uZworICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM2LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Bc1NpemVfdAorICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Bc1NzaXplX3QKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCisgIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzYuUHlMb25nX0FzVm9pZFB0cgorICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNi5QeUxvbmdfRnJvbURvdWJsZQorICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21Mb25nCisgIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21Mb25nTG9uZworICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNi5QeUxvbmdfRnJvbVNpemVfdAorICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzYuUHlMb25nX0Zyb21Tc2l6ZV90CisgIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tU3RyaW5nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM2LlB5TG9uZ19Gcm9tVm9pZFB0cgorICBQeUxvbmdfR2V0SW5mbz1weXRob24zNi5QeUxvbmdfR2V0SW5mbworICBQeUxvbmdfVHlwZT1weXRob24zNi5QeUxvbmdfVHlwZSBEQVRBCisgIFB5TWFwX1R5cGU9cHl0aG9uMzYuUHlNYXBfVHlwZSBEQVRBCisgIFB5TWFwcGluZ19DaGVjaz1weXRob24zNi5QeU1hcHBpbmdfQ2hlY2sKKyAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNi5QeU1hcHBpbmdfSGFzS2V5CisgIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX0hhc0tleVN0cmluZworICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzYuUHlNYXBwaW5nX0l0ZW1zCisgIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM2LlB5TWFwcGluZ19LZXlzCisgIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzYuUHlNYXBwaW5nX0xlbmd0aAorICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNi5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNi5QeU1hcHBpbmdfU2l6ZQorICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM2LlB5TWFwcGluZ19WYWx1ZXMKKyAgUHlNZW1fRnJlZT1weXRob24zNi5QeU1lbV9GcmVlCisgIFB5TWVtX01hbGxvYz1weXRob24zNi5QeU1lbV9NYWxsb2MKKyAgUHlNZW1fUmVhbGxvYz1weXRob24zNi5QeU1lbV9SZWFsbG9jCisgIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNi5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQorICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNi5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAorICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNi5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cworICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNi5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCisgIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNi5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNi5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzYuUHlNb2R1bGVfQWRkT2JqZWN0CisgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM2LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50CisgIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzYuUHlNb2R1bGVfQ3JlYXRlMgorICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RGVmCisgIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RGljdAorICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNi5QeU1vZHVsZV9HZXRGaWxlbmFtZQorICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNi5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAorICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM2LlB5TW9kdWxlX0dldE5hbWUKKyAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzYuUHlNb2R1bGVfR2V0U3RhdGUKKyAgUHlNb2R1bGVfTmV3PXB5dGhvbjM2LlB5TW9kdWxlX05ldworICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM2LlB5TW9kdWxlX1R5cGUgREFUQQorICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM2LlB5TW9kdWxlRGVmX0luaXQKKyAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNi5QeU1vZHVsZURlZl9UeXBlIERBVEEKKyAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNi5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKKyAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzYuUHlOdW1iZXJfQWJzb2x1dGUKKyAgUHlOdW1iZXJfQWRkPXB5dGhvbjM2LlB5TnVtYmVyX0FkZAorICBQeU51bWJlcl9BbmQ9cHl0aG9uMzYuUHlOdW1iZXJfQW5kCisgIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNi5QeU51bWJlcl9Bc1NzaXplX3QKKyAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzYuUHlOdW1iZXJfQ2hlY2sKKyAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM2LlB5TnVtYmVyX0Rpdm1vZAorICBQeU51bWJlcl9GbG9hdD1weXRob24zNi5QeU51bWJlcl9GbG9hdAorICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNi5QeU51bWJlcl9GbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VBZGQKKyAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlQW5kCisgIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlTHNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKKyAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VPcgorICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCisgIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgorICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAorICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQorICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VYb3IKKyAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzYuUHlOdW1iZXJfSW5kZXgKKyAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM2LlB5TnVtYmVyX0ludmVydAorICBQeU51bWJlcl9Mb25nPXB5dGhvbjM2LlB5TnVtYmVyX0xvbmcKKyAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX0xzaGlmdAorICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNi5QeU51bWJlcl9NdWx0aXBseQorICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNi5QeU51bWJlcl9OZWdhdGl2ZQorICBQeU51bWJlcl9Pcj1weXRob24zNi5QeU51bWJlcl9PcgorICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNi5QeU51bWJlcl9Qb3NpdGl2ZQorICBQeU51bWJlcl9Qb3dlcj1weXRob24zNi5QeU51bWJlcl9Qb3dlcgorICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzYuUHlOdW1iZXJfUmVtYWluZGVyCisgIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNi5QeU51bWJlcl9Sc2hpZnQKKyAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzYuUHlOdW1iZXJfU3VidHJhY3QKKyAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM2LlB5TnVtYmVyX1RvQmFzZQorICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM2LlB5TnVtYmVyX1RydWVEaXZpZGUKKyAgUHlOdW1iZXJfWG9yPXB5dGhvbjM2LlB5TnVtYmVyX1hvcgorICBQeU9TX0FmdGVyRm9yaz1weXRob24zNi5QeU9TX0FmdGVyRm9yaworICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM2LlB5T1NfSW5pdEludGVycnVwdHMKKyAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzYuUHlPU19JbnB1dEhvb2sgREFUQQorICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM2LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKKyAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNi5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKKyAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM2LlB5T1NfZG91YmxlX3RvX3N0cmluZworICBQeU9TX2dldHNpZz1weXRob24zNi5QeU9TX2dldHNpZworICBQeU9TX215c3RyaWNtcD1weXRob24zNi5QeU9TX215c3RyaWNtcAorICBQeU9TX215c3RybmljbXA9cHl0aG9uMzYuUHlPU19teXN0cm5pY21wCisgIFB5T1Nfc2V0c2lnPXB5dGhvbjM2LlB5T1Nfc2V0c2lnCisgIFB5T1Nfc25wcmludGY9cHl0aG9uMzYuUHlPU19zbnByaW50ZgorICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzYuUHlPU19zdHJpbmdfdG9fZG91YmxlCisgIFB5T1Nfc3RydG9sPXB5dGhvbjM2LlB5T1Nfc3RydG9sCisgIFB5T1Nfc3RydG91bD1weXRob24zNi5QeU9TX3N0cnRvdWwKKyAgUHlPU192c25wcmludGY9cHl0aG9uMzYuUHlPU192c25wcmludGYKKyAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzYuUHlPYmplY3RfQVNDSUkKKyAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgorICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM2LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKKyAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKKyAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzYuUHlPYmplY3RfQnl0ZXMKKyAgUHlPYmplY3RfQ2FsbD1weXRob24zNi5QeU9iamVjdF9DYWxsCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNi5QeU9iamVjdF9DYWxsRnVuY3Rpb24KKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNi5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE1ldGhvZAorICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNi5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncworICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxPYmplY3QKKyAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM2LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKKyAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNi5QeU9iamVjdF9EZWxJdGVtCisgIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfRGVsSXRlbVN0cmluZworICBQeU9iamVjdF9EaXI9cHl0aG9uMzYuUHlPYmplY3RfRGlyCisgIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNi5QeU9iamVjdF9Gb3JtYXQKKyAgUHlPYmplY3RfRnJlZT1weXRob24zNi5QeU9iamVjdF9GcmVlCisgIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNi5QeU9iamVjdF9HQ19EZWwKKyAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzYuUHlPYmplY3RfR0NfVHJhY2sKKyAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNi5QeU9iamVjdF9HQ19VblRyYWNrCisgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCisgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzYuUHlPYmplY3RfR2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNi5QeU9iamVjdF9HZXRJdGVtCisgIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzYuUHlPYmplY3RfR2V0SXRlcgorICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0hhc0F0dHIKKyAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzYuUHlPYmplY3RfSGFzaAorICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzYuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCisgIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzYuUHlPYmplY3RfSW5pdAorICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM2LlB5T2JqZWN0X0luaXRWYXIKKyAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNi5QeU9iamVjdF9Jc0luc3RhbmNlCisgIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzYuUHlPYmplY3RfSXNTdWJjbGFzcworICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzYuUHlPYmplY3RfSXNUcnVlCisgIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNi5QeU9iamVjdF9MZW5ndGgKKyAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM2LlB5T2JqZWN0X01hbGxvYworICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzYuUHlPYmplY3RfTm90CisgIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzYuUHlPYmplY3RfUmVhbGxvYworICBQeU9iamVjdF9SZXByPXB5dGhvbjM2LlB5T2JqZWN0X1JlcHIKKyAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzYuUHlPYmplY3RfUmljaENvbXBhcmUKKyAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM2LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAorICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNi5QeU9iamVjdF9TZWxmSXRlcgorICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X1NldEF0dHIKKyAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfU2V0SXRlbQorICBQeU9iamVjdF9TaXplPXB5dGhvbjM2LlB5T2JqZWN0X1NpemUKKyAgUHlPYmplY3RfU3RyPXB5dGhvbjM2LlB5T2JqZWN0X1N0cgorICBQeU9iamVjdF9UeXBlPXB5dGhvbjM2LlB5T2JqZWN0X1R5cGUgREFUQQorICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlPRGljdF9EZWxJdGVtCisgIFB5T0RpY3RfTmV3PXB5dGhvbjM2LlB5T0RpY3RfTmV3CisgIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNi5QeU9EaWN0X1NldEl0ZW0KKyAgUHlPRGljdF9UeXBlPXB5dGhvbjM2LlB5T0RpY3RfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM2LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNi5QeU9EaWN0SXRlcl9UeXBlIERBVEEKKyAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNi5QeU9EaWN0S2V5c19UeXBlIERBVEEKKyAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM2LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM2LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzYuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncworICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzYuUHlQcm9wZXJ0eV9UeXBlIERBVEEKKyAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNi5QeVJhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlSYW5nZV9UeXBlPXB5dGhvbjM2LlB5UmFuZ2VfVHlwZSBEQVRBCisgIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNi5QeVJldmVyc2VkX1R5cGUgREFUQQorICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM2LlB5U2VxSXRlcl9OZXcKKyAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzYuUHlTZXFJdGVyX1R5cGUgREFUQQorICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM2LlB5U2VxdWVuY2VfQ2hlY2sKKyAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db25jYXQKKyAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNi5QeVNlcXVlbmNlX0NvbnRhaW5zCisgIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db3VudAorICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9EZWxJdGVtCisgIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9EZWxTbGljZQorICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzYuUHlTZXF1ZW5jZV9GYXN0CisgIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNi5QeVNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX0dldFNsaWNlCisgIFB5U2VxdWVuY2VfSW49cHl0aG9uMzYuUHlTZXF1ZW5jZV9JbgorICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0CisgIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNi5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKKyAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNi5QeVNlcXVlbmNlX0luZGV4CisgIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM2LlB5U2VxdWVuY2VfTGVuZ3RoCisgIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNi5QeVNlcXVlbmNlX0xpc3QKKyAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9SZXBlYXQKKyAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfU2V0SXRlbQorICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfU2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM2LlB5U2VxdWVuY2VfU2l6ZQorICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM2LlB5U2VxdWVuY2VfVHVwbGUKKyAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzYuUHlTZXRJdGVyX1R5cGUgREFUQQorICBQeVNldF9BZGQ9cHl0aG9uMzYuUHlTZXRfQWRkCisgIFB5U2V0X0NsZWFyPXB5dGhvbjM2LlB5U2V0X0NsZWFyCisgIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM2LlB5U2V0X0NvbnRhaW5zCisgIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzYuUHlTZXRfRGlzY2FyZAorICBQeVNldF9OZXc9cHl0aG9uMzYuUHlTZXRfTmV3CisgIFB5U2V0X1BvcD1weXRob24zNi5QeVNldF9Qb3AKKyAgUHlTZXRfU2l6ZT1weXRob24zNi5QeVNldF9TaXplCisgIFB5U2V0X1R5cGU9cHl0aG9uMzYuUHlTZXRfVHlwZSBEQVRBCisgIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNi5QeVNsaWNlX0dldEluZGljZXMKKyAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzYuUHlTbGljZV9HZXRJbmRpY2VzRXgKKyAgUHlTbGljZV9OZXc9cHl0aG9uMzYuUHlTbGljZV9OZXcKKyAgUHlTbGljZV9UeXBlPXB5dGhvbjM2LlB5U2xpY2VfVHlwZSBEQVRBCisgIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNi5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQorICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzYuUHlTdGF0ZV9GaW5kTW9kdWxlCisgIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfQWRkTW9kdWxlCisgIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCisgIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQorICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U3VwZXJfVHlwZT1weXRob24zNi5QeVN1cGVyX1R5cGUgREFUQQorICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM2LlB5U3lzX0FkZFdhcm5PcHRpb24KKyAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzYuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKKyAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM2LlB5U3lzX0Zvcm1hdFN0ZGVycgorICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzYuUHlTeXNfRm9ybWF0U3Rkb3V0CisgIFB5U3lzX0dldE9iamVjdD1weXRob24zNi5QeVN5c19HZXRPYmplY3QKKyAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzYuUHlTeXNfSGFzV2Fybk9wdGlvbnMKKyAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNi5QeVN5c19SZXNldFdhcm5PcHRpb25zCisgIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzYuUHlTeXNfU2V0QXJndgorICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzYuUHlTeXNfU2V0QXJndkV4CisgIFB5U3lzX1NldE9iamVjdD1weXRob24zNi5QeVN5c19TZXRPYmplY3QKKyAgUHlTeXNfU2V0UGF0aD1weXRob24zNi5QeVN5c19TZXRQYXRoCisgIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM2LlB5U3lzX1dyaXRlU3RkZXJyCisgIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM2LlB5U3lzX1dyaXRlU3Rkb3V0CisgIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9DbGVhcgorICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNi5QeVRocmVhZFN0YXRlX0RlbGV0ZQorICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50CisgIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfR2V0CisgIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNi5QeVRocmVhZFN0YXRlX0dldERpY3QKKyAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9OZXcKKyAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNi5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCisgIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNi5QeVRocmVhZFN0YXRlX1N3YXAKKyAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNi5QeVRyYWNlQmFja19IZXJlCisgIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM2LlB5VHJhY2VCYWNrX1ByaW50CisgIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzYuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCisgIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzYuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCisgIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNi5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKKyAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM2LlB5VHVwbGVfR2V0SXRlbQorICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM2LlB5VHVwbGVfR2V0U2xpY2UKKyAgUHlUdXBsZV9OZXc9cHl0aG9uMzYuUHlUdXBsZV9OZXcKKyAgUHlUdXBsZV9QYWNrPXB5dGhvbjM2LlB5VHVwbGVfUGFjaworICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzYuUHlUdXBsZV9TZXRJdGVtCisgIFB5VHVwbGVfU2l6ZT1weXRob24zNi5QeVR1cGxlX1NpemUKKyAgUHlUdXBsZV9UeXBlPXB5dGhvbjM2LlB5VHVwbGVfVHlwZSBEQVRBCisgIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM2LlB5VHlwZV9DbGVhckNhY2hlCisgIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNi5QeVR5cGVfRnJvbVNwZWMKKyAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM2LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcworICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM2LlB5VHlwZV9HZW5lcmljQWxsb2MKKyAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzYuUHlUeXBlX0dlbmVyaWNOZXcKKyAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM2LlB5VHlwZV9HZXRGbGFncworICBQeVR5cGVfR2V0U2xvdD1weXRob24zNi5QeVR5cGVfR2V0U2xvdAorICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM2LlB5VHlwZV9Jc1N1YnR5cGUKKyAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM2LlB5VHlwZV9Nb2RpZmllZAorICBQeVR5cGVfUmVhZHk9cHl0aG9uMzYuUHlUeXBlX1JlYWR5CisgIFB5VHlwZV9UeXBlPXB5dGhvbjM2LlB5VHlwZV9UeXBlIERBVEEKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNi5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNi5QeVVuaWNvZGVfQXBwZW5kCisgIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzYuUHlVbmljb2RlX0FwcGVuZEFuZERlbAorICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZworICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKKyAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzYuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZworICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfQXNXaWRlQ2hhcgorICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNi5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAorICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNi5QeVVuaWNvZGVfQ29tcGFyZQorICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM2LlB5VW5pY29kZV9Db25jYXQKKyAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM2LlB5VW5pY29kZV9Db250YWlucworICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzYuUHlVbmljb2RlX0NvdW50CisgIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZQorICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUFTQ0lJCisgIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQorICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKKyAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYxNgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjMyCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY4CisgIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzYuUHlVbmljb2RlX0ZTQ29udmVydGVyCisgIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzYuUHlVbmljb2RlX0ZTRGVjb2RlcgorICBQeVVuaWNvZGVfRmluZD1weXRob24zNi5QeVVuaWNvZGVfRmluZAorICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM2LlB5VW5pY29kZV9Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbUZvcm1hdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCisgIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNi5QeVVuaWNvZGVfRnJvbU9yZGluYWwKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21TdHJpbmcKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKKyAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNi5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM2LlB5VW5pY29kZV9HZXRTaXplCisgIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzYuUHlVbmljb2RlX0lzSWRlbnRpZmllcgorICBQeVVuaWNvZGVfSm9pbj1weXRob24zNi5QeVVuaWNvZGVfSm9pbgorICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM2LlB5VW5pY29kZV9QYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzYuUHlVbmljb2RlX1JQYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNi5QeVVuaWNvZGVfUlNwbGl0CisgIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM2LlB5VW5pY29kZV9SZXBsYWNlCisgIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzYuUHlVbmljb2RlX1Jlc2l6ZQorICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX1JpY2hDb21wYXJlCisgIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzYuUHlVbmljb2RlX1NwbGl0CisgIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM2LlB5VW5pY29kZV9TcGxpdGxpbmVzCisgIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzYuUHlVbmljb2RlX1RhaWxtYXRjaAorICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM2LlB5VW5pY29kZV9UcmFuc2xhdGUKKyAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzYuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKKyAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjcKKyAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCisgIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzYuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZworICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCisgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCisgIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM2LlB5VW5pY29kZV9UeXBlIERBVEEKKyAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNi5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKKyAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM2LlB5V2Vha3JlZl9OZXdQcm94eQorICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM2LlB5V2Vha3JlZl9OZXdSZWYKKyAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNi5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlXcmFwcGVyX05ldz1weXRob24zNi5QeVdyYXBwZXJfTmV3CisgIFB5WmlwX1R5cGU9cHl0aG9uMzYuUHlaaXBfVHlwZSBEQVRBCisgIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM2LlB5X0FkZFBlbmRpbmdDYWxsCisgIFB5X0F0RXhpdD1weXRob24zNi5QeV9BdEV4aXQKKyAgUHlfQnVpbGRWYWx1ZT1weXRob24zNi5QeV9CdWlsZFZhbHVlCisgIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzYuUHlfQ29tcGlsZVN0cmluZworICBQeV9EZWNSZWY9cHl0aG9uMzYuUHlfRGVjUmVmCisgIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM2LlB5X0VuZEludGVycHJldGVyCisgIFB5X0V4aXQ9cHl0aG9uMzYuUHlfRXhpdAorICBQeV9GYXRhbEVycm9yPXB5dGhvbjM2LlB5X0ZhdGFsRXJyb3IKKyAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNi5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfRmluYWxpemU9cHl0aG9uMzYuUHlfRmluYWxpemUKKyAgUHlfRmluYWxpemVFeD1weXRob24zNi5QeV9GaW5hbGl6ZUV4CisgIFB5X0dldEJ1aWxkSW5mbz1weXRob24zNi5QeV9HZXRCdWlsZEluZm8KKyAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzYuUHlfR2V0Q29tcGlsZXIKKyAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjM2LlB5X0dldENvcHlyaWdodAorICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjM2LlB5X0dldEV4ZWNQcmVmaXgKKyAgUHlfR2V0UGF0aD1weXRob24zNi5QeV9HZXRQYXRoCisgIFB5X0dldFBsYXRmb3JtPXB5dGhvbjM2LlB5X0dldFBsYXRmb3JtCisgIFB5X0dldFByZWZpeD1weXRob24zNi5QeV9HZXRQcmVmaXgKKyAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjM2LlB5X0dldFByb2dyYW1GdWxsUGF0aAorICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zNi5QeV9HZXRQcm9ncmFtTmFtZQorICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjM2LlB5X0dldFB5dGhvbkhvbWUKKyAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzYuUHlfR2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfR2V0VmVyc2lvbj1weXRob24zNi5QeV9HZXRWZXJzaW9uCisgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0luY1JlZj1weXRob24zNi5QeV9JbmNSZWYKKyAgUHlfSW5pdGlhbGl6ZT1weXRob24zNi5QeV9Jbml0aWFsaXplCisgIFB5X0luaXRpYWxpemVFeD1weXRob24zNi5QeV9Jbml0aWFsaXplRXgKKyAgUHlfSXNJbml0aWFsaXplZD1weXRob24zNi5QeV9Jc0luaXRpYWxpemVkCisgIFB5X01haW49cHl0aG9uMzYuUHlfTWFpbgorICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjM2LlB5X01ha2VQZW5kaW5nQ2FsbHMKKyAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzYuUHlfTmV3SW50ZXJwcmV0ZXIKKyAgUHlfUmVwckVudGVyPXB5dGhvbjM2LlB5X1JlcHJFbnRlcgorICBQeV9SZXByTGVhdmU9cHl0aG9uMzYuUHlfUmVwckxlYXZlCisgIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjM2LlB5X1NldFByb2dyYW1OYW1lCisgIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzYuUHlfU2V0UHl0aG9uSG9tZQorICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zNi5QeV9TZXRSZWN1cnNpb25MaW1pdAorICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zNi5QeV9TeW10YWJsZVN0cmluZworICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzYuUHlfVmFCdWlsZFZhbHVlCisgIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzYuX1B5RXJyX0JhZEludGVybmFsQ2FsbAorICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjM2Ll9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKKyAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzYuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKKyAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zNi5fUHlPYmplY3RfR0NfTWFsbG9jCisgIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX05ldworICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19OZXdWYXIKKyAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zNi5fUHlPYmplY3RfR0NfUmVzaXplCisgIF9QeU9iamVjdF9OZXc9cHl0aG9uMzYuX1B5T2JqZWN0X05ldworICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjM2Ll9QeU9iamVjdF9OZXdWYXIKKyAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM2Ll9QeVN0YXRlX0FkZE1vZHVsZQorICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjM2Ll9QeVRocmVhZFN0YXRlX0luaXQKKyAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzYuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKKyAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjM2Ll9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCisgIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjM2Ll9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKKyAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzYuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKKyAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zNi5fUHlUcmFzaF9kZXN0cm95X2NoYWluCisgIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzYuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM2Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2Ll9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKKyAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zNi5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCisgIF9QeV9EZWFsbG9jPXB5dGhvbjM2Ll9QeV9EZWFsbG9jCisgIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zNi5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQorICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzYuX1B5X0ZhbHNlU3RydWN0IERBVEEKKyAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzYuX1B5X05vbmVTdHJ1Y3QgREFUQQorICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzYuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKKyAgX1B5X1N3YXBwZWRPcD1weXRob24zNi5fUHlfU3dhcHBlZE9wIERBVEEKKyAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzYuX1B5X1RydWVTdHJ1Y3QgREFUQQorICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM2Ll9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19QYXJzZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX2V4ZS5yYyBiL1BDL3B5dGhvbl9leGUucmMKaW5kZXggOTE3ODVhMS4uYWUwYjAyOSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uX2V4ZS5yYworKysgYi9QQy9weXRob25fZXhlLnJjCkBAIC03LDcgKzcsNyBAQAogI2luY2x1ZGUgPHdpbnVzZXIuaD4KIDEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKIAotMSBJQ09OIERJU0NBUkRBQkxFICJweWNvbi5pY28iIAorMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob24uaWNvIiAKIAogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9ud19leGUucmMgYi9QQy9weXRob253X2V4ZS5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGJmMzU5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvcHl0aG9ud19leGUucmMKQEAgLTAsMCArMSw0OSBAQAorLy8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29uc29sZSBFWEVzLgorCisjaW5jbHVkZSAicHl0aG9uX3Zlcl9yYy5oIgorCisvLyBJbmNsdWRlIHRoZSBtYW5pZmVzdCBmaWxlIHRoYXQgaW5kaWNhdGVzIHdlIHN1cHBvcnQgYWxsCisvLyBjdXJyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisjaW5jbHVkZSA8d2ludXNlci5oPgorMSBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgorCisxIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5dGhvbncuaWNvIiAKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFZlcnNpb24KKy8vCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTworIEZJTEVWRVJTSU9OIFBZVkVSU0lPTjY0CisgUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKKyBGSUxFRkxBR1NNQVNLIDB4M2ZMCisjaWZkZWYgX0RFQlVHCisgRklMRUZMQUdTIFZTX0ZGX0RFQlVHCisjZWxzZQorIEZJTEVGTEFHUyAweDBMCisjZW5kaWYKKyBGSUxFT1MgVk9TX19XSU5ET1dTMzIKKyBGSUxFVFlQRSBWRlRfQVBQCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjAwMDAwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgUFlUSE9OX0NPTVBBTlkgIlwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQeXRob25cMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgIlB5dGhvbiBBcHBsaWNhdGlvblwwIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgUFlUSE9OX0NPUFlSSUdIVCAiXDAiCisgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJweXRob253IiBQWVRIT05fREVCVUdfRVhUICIuZXhlXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICBFTkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHgwLCAxMjAwCisgICAgRU5ECitFTkQKZGlmZiAtLWdpdCBhL1BDL3Rlc3RweS5weSBiL1BDL3Rlc3RweS5weQppbmRleCA0ZWYzZDRmLi43MDlmMzVjIDEwMDY0NAotLS0gYS9QQy90ZXN0cHkucHkKKysrIGIvUEMvdGVzdHB5LnB5CkBAIC0yNiw1ICsyNiw1IEBACiAgICAgICAgICAgICAjIEFkZCB0aGUgInRlc3QiIGRpcmVjdG9yeSB0byBQWVRIT05QQVRILgogICAgICAgICAgICAgc3lzLnBhdGggPSBzeXMucGF0aCArIFt0ZXN0XQogCi1pbXBvcnQgcmVncnRlc3QgIyBTdGFuZGFyZCBQeXRob24gdGVzdGVyLgotcmVncnRlc3QubWFpbigpCitpbXBvcnQgbGlicmVncnRlc3QgIyBTdGFuZGFyZCBQeXRob24gdGVzdGVyLgorbGlicmVncnRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9QQy93aW5yZWcuYyBiL1BDL3dpbnJlZy5jCmluZGV4IGYwOGQ5YTQuLjk1MjQ4MzggMTAwNjQ0Ci0tLSBhL1BDL3dpbnJlZy5jCisrKyBiL1BDL3dpbnJlZy5jCkBAIC01NDksNyArNTQ5LDcgQEAKICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lICYmICFQeUxvbmdfQ2hlY2sodmFsdWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcoRFdPUkQsIDEpOwotICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmPT1OVUxMKXsKKyAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgIH0KQEAgLTU2Myw2ICs1NjMsMjQgQEAKICAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZkLCBzaXplb2YoRFdPUkQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJFR19RV09SRDoKKyAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JENjQsIDEpOworICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnJldERhdGFTaXplID0gc2l6ZW9mKERXT1JENjQpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgICAgICBEV09SRDY0IHplcm8gPSAwOworICAgICAgICAgICAgICAgIG1lbWNweSgqcmV0RGF0YUJ1ZiwgJnplcm8sIHNpemVvZihEV09SRDY0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBEV09SRDY0IGQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZkLCBzaXplb2YoRFdPUkQ2NCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUkVHX1NaOgogICAgICAgICBjYXNlIFJFR19FWFBBTkRfU1o6CiAgICAgICAgICAgICB7CkBAIC02MTksNyArNjM3LDcgQEAKICAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUgPSBzaXplICsgMjsKICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUpOwotICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpewogICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjY1LDcgKzY4Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcoY2hhciwgdmlldy5sZW4pOwotICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpewogICAgICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtNjkwLDcgKzcwOCwxMyBAQAogICAgICAgICAgICAgaWYgKHJldERhdGFTaXplID09IDApCiAgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoMCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKihpbnQgKilyZXREYXRhQnVmKTsKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygqKERXT1JEICopcmV0RGF0YUJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgICBpZiAocmV0RGF0YVNpemUgPT0gMCkKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoMCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCooRFdPUkQ2NCAqKXJldERhdGFCdWYpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUkVHX1NaOgogICAgICAgICBjYXNlIFJFR19FWFBBTkRfU1o6CkBAIC0xNTk5LDcgKzE2MjMsNyBAQAogICAgICAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBkYXRhLCBvbmUgb2Y6CiAgICAgICAgIFJFR19CSU5BUlkgLS0gQmluYXJ5IGRhdGEgaW4gYW55IGZvcm0uCiAgICAgICAgIFJFR19EV09SRCAtLSBBIDMyLWJpdCBudW1iZXIuCi0gICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4KKyAgICAgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19EV09SRAogICAgICAgICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuCiAgICAgICAgIFJFR19FWFBBTkRfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdW5leHBhbmRlZAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb3IgZXhhbXBsZSwKQEAgLTE2MDksNiArMTYzMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuCiAgICAgICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS4KKyAgICAgICAgUkVHX1FXT1JEIC0tIEEgNjQtYml0IG51bWJlci4KKyAgICAgICAgUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19RV09SRC4KICAgICAgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuCiAgICAgICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuCiAgICAgdmFsdWU6IG9iamVjdApAQCAtMTYzMSw3ICsxNjU3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICp2YWx1ZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzZXJ2ZWQsIERXT1JEIHR5cGUsIFB5T2JqZWN0ICp2YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODhjODQyNmI2YzAwZWM3IGlucHV0PWYxYjE2Y2JjYzNlZDQxMDFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODhjODQyNmI2YzAwZWM3IGlucHV0PTkwMGE5ZTM5OTBiZmIxOTZdKi8KIHsKICAgICBCWVRFICpkYXRhOwogICAgIERXT1JEIGxlbjsKQEAgLTE5MTgsNiArMTk0NCw4IEBACiAgICAgQUREX0lOVChSRUdfRFdPUkQpOwogICAgIEFERF9JTlQoUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4pOwogICAgIEFERF9JTlQoUkVHX0RXT1JEX0JJR19FTkRJQU4pOworICAgIEFERF9JTlQoUkVHX1FXT1JEKTsKKyAgICBBRERfSU5UKFJFR19RV09SRF9MSVRUTEVfRU5ESUFOKTsKICAgICBBRERfSU5UKFJFR19MSU5LKTsKICAgICBBRERfSU5UKFJFR19NVUxUSV9TWik7CiAgICAgQUREX0lOVChSRUdfUkVTT1VSQ0VfTElTVCk7CmRpZmYgLS1naXQgYS9QQy93aW5zb3VuZC5jIGIvUEMvd2luc291bmQuYwppbmRleCA2Yjc5ZDIzLi43ZmVlYmNiIDEwMDY0NAotLS0gYS9QQy93aW5zb3VuZC5jCisrKyBiL1BDL3dpbnNvdW5kLmMKQEAgLTUyLDcgKzUyLDcgQEAKICJTTkRfTk9XQUlUIC0gUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZSBzb3VuZCBkcml2ZXIgaXMgYnVzeVxuIiAvLyBXaXRob3V0IGFueSBlcnJvcnMKICJcbiIKICJCZWVwKGZyZXF1ZW5jeSwgZHVyYXRpb24pIC0gTWFrZSBhIGJlZXAgdGhyb3VnaCB0aGUgUEMgc3BlYWtlci5cbiIKLSJNZXNzYWdlQmVlcCh4KSAtIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcC4iKTsKKyJNZXNzYWdlQmVlcCh0eXBlKSAtIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcC4iKTsKIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIHdpbnNvdW5kCkBAIC02NCwzMiArNjQsNTggQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHdpbnNvdW5kLlBsYXlTb3VuZAogCi0gICAgc291bmQ6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICBzb3VuZDogb2JqZWN0CiAgICAgICAgIFRoZSBzb3VuZCB0byBwbGF5OyBhIGZpbGVuYW1lLCBkYXRhLCBvciBOb25lLgogICAgIGZsYWdzOiBpbnQKICAgICAgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uCi0gICAgLwogCiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIFBsYXlTb3VuZCBBUEkuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjMjRiM2EyYjQzNjgzNzggaW5wdXQ9MzQxMWIxYjdjMWYzNmQ5M10qLword2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnNvdW5kLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDlhMGZkMTZhMzcyZWJlYiBpbnB1dD1jNjNlMWYyZDg0OGRhMmYyXSovCiB7CiAgICAgaW50IG9rOworICAgIHdjaGFyX3QgKndzb3VuZDsKKyAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmIChmbGFncyAmIFNORF9BU1lOQyAmJiBmbGFncyAmIFNORF9NRU1PUlkpIHsKLSAgICAgICAgLyogU2lkZXN0ZXAgcmVmZXJlbmNlIGNvdW50aW5nIGhlYWRhY2hlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgYWxzbwotICAgICAgICAgICAgcHJldmVudCBTTkRfTE9PUCBmcm9tIG1lbW9yeS4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGxheSBhc3luY2hyb25vdXNseSBmcm9tIG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc291bmQgPT0gUHlfTm9uZSkgeworICAgICAgICB3c291bmQgPSBOVUxMOworICAgIH0gZWxzZSBpZiAoZmxhZ3MgJiBTTkRfTUVNT1JZKSB7CisgICAgICAgIGlmIChmbGFncyAmIFNORF9BU1lOQykgeworICAgICAgICAgICAgLyogU2lkZXN0ZXAgcmVmZXJlbmNlIGNvdW50aW5nIGhlYWRhY2hlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgYWxzbworICAgICAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGxheSBhc3luY2hyb25vdXNseSBmcm9tIG1lbW9yeSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzb3VuZCwgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB3c291bmQgPSAod2NoYXJfdCAqKXZpZXcuYnVmOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNvdW5kKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3NvdW5kJyBtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzb3VuZCktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3NvdW5kID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoc291bmQsIE5VTEwpOworICAgICAgICBpZiAod3NvdW5kID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgb2sgPSBQbGF5U291bmRXKHNvdW5kLCBOVUxMLCBmbGFncyk7CisgICAgb2sgPSBQbGF5U291bmRXKHdzb3VuZCwgTlVMTCwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHZpZXcub2JqKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIH0gZWxzZSBpZiAoc291bmQgIT0gUHlfTm9uZSkgeworICAgICAgICBQeU1lbV9GcmVlKHdzb3VuZCk7CisgICAgfQogICAgIGlmICghb2spIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkZhaWxlZCB0byBwbGF5IHNvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTA1LDE0ICsxMzEsMTMgQEAKICAgICAgICAgTXVzdCBiZSBpbiB0aGUgcmFuZ2UgMzcgdGhyb3VnaCAzMiw3NjcuCiAgICAgZHVyYXRpb246IGludAogICAgICAgICBIb3cgbG9uZyB0aGUgc291bmQgc2hvdWxkIHBsYXksIGluIG1pbGxpc2Vjb25kcy4KLSAgICAvCiAKIEEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUEkuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5zb3VuZF9CZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZyZXF1ZW5jeSwgaW50IGR1cmF0aW9uKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYzMjM4MmU1MmVlOWIyZmIgaW5wdXQ9NjI4YTk5ZDJkZGY3Mzc5OF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYzMjM4MmU1MmVlOWIyZmIgaW5wdXQ9NDBlMzYwY2ZhMDBhNWNmMF0qLwogewogICAgIEJPT0wgb2s7CiAKQEAgLTEzNiw4ICsxNjEsNyBAQAogLypbY2xpbmljIGlucHV0XQogd2luc291bmQuTWVzc2FnZUJlZXAKIAotICAgIHg6IGludChjX2RlZmF1bHQ9Ik1CX09LIikgPSBNQl9PSwotICAgIC8KKyAgICB0eXBlOiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKIAogQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwKHgpLgogCkBAIC0xNDUsMTAgKzE2OSwyMCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgeCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYWQ4OWU0ZDhkMzBhOTU3IGlucHV0PWE3NzZjOGE4NWM5ODUzZjZdKi8KK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHR5cGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTIwODc1NDU1MTIxMTIxZiBpbnB1dD1kYjE4NWY3NDFhZTIxNDAxXSovCiB7Ci0gICAgTWVzc2FnZUJlZXAoeCk7CisgICAgQk9PTCBvazsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBvayA9IE1lc3NhZ2VCZWVwKHR5cGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX1J1bnRpbWVFcnJvciwgMCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2ogYi9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NjYTAwMAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2FzeW5jaW8udmN4cHJvagpAQCAtMCwwICsxLDc3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57Mzg0QzIyNEEtNzQ3NC00NzZFLUEwMUItNzUwRUE3REU5MThDfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2FzeW5jaW88L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9hc3luY2lvbW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2FzeW5jaW8udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYTE4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MjQyMjI3OGUtZWVlYi00MjQxLTgxODItNDMzZTJiYzVhN2ZjfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9hc3luY2lvbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbHptYS52Y3hwcm9qIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCmluZGV4IDFmMDY5NmRhLi43ZWMyNjkyIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19sem1hLnZjeHByb2oKKysrIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCkBAIC02MSwxMyArNjEsMTEgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKWluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilzcmMvbGlibHptYS9hcGk7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICdXaW4zMiciPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ3g2NCciPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxJbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz5mYWxzZTwvSW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKE91dERpcikvbGlibHptYSQoUHlEZWJ1Z0V4dCkubGliPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgpAQCAtODEsOCArNzksMTIgQEAKICAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgogICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KICAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibGlibHptYS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PnsxMjcyODI1MC0xNmVDLTRkYzYtOTRkNy1lMjFkZDg4OTQ3Zjh9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CiAgIDwvSXRlbUdyb3VwPgogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNTFjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qCkBAIC0wLDAgKzEsODMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3Rjb25zb2xlPC9Sb290TmFtZXNwYWNlPgorICAgIDxTdXBwb3J0UEdPPmZhbHNlPC9TdXBwb3J0UEdPPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXF90ZXN0Y29uc29sZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzI1MTAxCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdG11bHRpcGhhc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkLmJhdCBiL1BDYnVpbGQvYnVpbGQuYmF0CmluZGV4IDg4YjFmMDYuLmZmY2MxOTcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGQuYmF0CisrKyBiL1BDYnVpbGQvYnVpbGQuYmF0CkBAIC0xMjAsOSArMTIwLDkgQEAKICAgICBAZWNobyBvZmYNCiAgICAgY2FsbCA6S2lsbA0KICAgICBzZXQgY29uZj1QR1VwZGF0ZQ0KKyAgICBzZXQgdGFyZ2V0PUJ1aWxkDQogKQ0KIGdvdG8gQnVpbGQNCi0NCiA6S2lsbA0KIGVjaG8gb24NCiBtc2J1aWxkICIlZGlyJVxweXRob25jb3JlLnZjeHByb2oiIC90OktpbGxQeXRob24gJXZlcmJvc2UlXg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdCBiL1BDYnVpbGQvYnVpbGRfcGdvLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyYzM4Mi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUBlY2hvIG9mZg0KLWVjaG8uRGVwcmVjYXRpb25XYXJuaW5nOg0KLWVjaG8uICAgIFRoaXMgc2NyaXB0IGlzIGRlcHJlY2F0ZWQsIHVzZSBgYnVpbGQuYmF0IC0tcGdvYCBpbnN0ZWFkLg0KLWVjaG8uDQotDQotY2FsbCAiJX5kcDBidWlsZC5iYXQiIC0tcGdvICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdCBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKaW5kZXggMWMzY2RlZS4uYTUxODViZSAxMDA2NDQKLS0tIGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAorKysgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CkBAIC01NSwxMSArNTUsMTEgQEAKIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiemlwMi0xLjAuNg0KIGlmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBuYXNtLTIuMTEuMDYNCiBpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgb3BlbnNzbC0xLjAuMmoNCi1zZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQotaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi40LjINCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjQuMg0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGUtMy4xNC4yLjANCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGNsLWNvcmUtOC42LjYuMA0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0ay04LjYuNi4wDQogaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRpeC04LjQuMy42DQotc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMC41DQorc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMi4yDQogDQogZm9yICUlZSBpbiAoJWxpYnJhcmllcyUpIGRvICgNCiAgICAgaWYgZXhpc3QgJSVlICgNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvaiBiL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMWY5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvagpAQCAtMCwwICsxLDIxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezEyNzI4MjUwLTE2RUMtNERDNi05NEQ3LUUyMUREODg5NDdGOH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmxpYmx6bWE8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+dHJ1ZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtIQVZFX0NPTkZJR19IO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpd2luZG93czskKGx6bWFEaXIpc3JjL2xpYmx6bWEvY29tbW9uOyQobHptYURpcilzcmMvY29tbW9uOyQobHptYURpcilzcmMvbGlibHptYS9hcGk7JChsem1hRGlyKXNyYy9saWJsem1hL2NoZWNrOyQobHptYURpcilzcmMvbGlibHptYS9kZWx0YTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvbHo7JChsem1hRGlyKXNyYy9saWJsem1hL2x6bWE7JChsem1hRGlyKXNyYy9saWJsem1hL3JhbmdlY29kZXI7JChsem1hRGlyKXNyYy9saWJsem1hL3NpbXBsZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NwdWNvcmVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcc2hhMjU2LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhdXRvX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX3V0aWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9kZWNvZGVyX21lbXVzYWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2VuY29kZXJfbWVtdXNhZ2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9wcmVzZXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGhhcmR3YXJlX2NwdXRocmVhZHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caGFyZHdhcmVfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfaGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxvdXRxdWV1ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyX210LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX3NpemUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcZmFzdHBvc190YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX25vcm1hbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByZXNldHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfbWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHByaWNlX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGFybS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxhcm10aHVtYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxpYTY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHBvd2VycGMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2NvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNwYXJjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHg4Ni5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXG15dGhyZWFkLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblxzeXNkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY3B1Y29yZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9pbnRlZ2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJjai5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJsb2NrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcY2hlY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxjb250YWluZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxkZWx0YS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGZpbHRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGhhcmR3YXJlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaW5kZXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxpbmRleF9oYXNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcbHptYTEyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcc3RyZWFtX2ZsYWdzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcdmVyc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHZsaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGVfYmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZV9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlX2JlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGVfbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmNfbWFjcm9zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGNvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X3ByZXNldC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cbWVtY21wbGVuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG91dHF1ZXVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGZhc3Rwb3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaF90YWJsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccHJpY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcil3aW5kb3dzXGNvbmZpZy5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvb3BlbnNzbC5wcm9wcyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwppbmRleCBlMzVjMGQ5Li4wZGU0ZTQzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMKKysrIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCkBAIC0xOSw2ICsxOSw3IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfVEhSRUFEUyIgLz4KICAgICA8IS0tIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1NZU05BTUVfV0lOMzIiIC8+IC0tPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0lBMzJfU1NFMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fR0YybSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMV9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTI1Nl9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTUxMl9BU00iIC8+CkBAIC0zOCw3ICszOSw2IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+Ci0gICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX01PTlQiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlJNRDE2MF9BU00iIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BjYnVpbGQucHJvaiBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCmluZGV4IGMzMjA0MzQuLmUwZTZlOTMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcGNidWlsZC5wcm9qCisrKyBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCkBAIC01MSw3ICs1MSw3IEBACiAgICAgPCEtLSBfZnJlZXplX2ltcG9ydGxpYiAtLT4KICAgICA8UHJvamVjdHMgSW5jbHVkZT0iX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvaiIgLz4KICAgICA8IS0tIEV4dGVuc2lvbiBtb2R1bGVzIC0tPgotICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9Il9jdHlwZXM7X2RlY2ltYWw7X2VsZW1lbnR0cmVlO19tc2k7X211bHRpcHJvY2Vzc2luZztfb3ZlcmxhcHBlZDtweWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZCIgLz4KKyAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJfYXN5bmNpbztfY3R5cGVzO19kZWNpbWFsO19lbGVtZW50dHJlZTtfbXNpO19tdWx0aXByb2Nlc3Npbmc7X292ZXJsYXBwZWQ7cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQiIC8+CiAgICAgPCEtLSBFeHRlbnNpb24gbW9kdWxlcyB0aGF0IHJlcXVpcmUgZXh0ZXJuYWwgc291cmNlcyAtLT4KICAgICA8RXh0ZXJuYWxNb2R1bGVzIEluY2x1ZGU9Il9iejI7X2x6bWE7X3NxbGl0ZTMiIC8+CiAgICAgPCEtLSBfc3NsIHdpbGwgYnVpbGQgX3NvY2tldCBhcyB3ZWxsLCB3aGljaCBtYXkgY2F1c2UgY29uZmxpY3RzIGluIHBhcmFsbGVsIGJ1aWxkcyAtLT4KQEAgLTYxLDcgKzYxLDcgQEAKICAgICA8RXh0ZW5zaW9uTW9kdWxlcyBJbmNsdWRlPSJAKEV4dGVybmFsTW9kdWxlcy0+JyUoSWRlbnRpdHkpJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZXJuYWxzKSIgLz4KICAgICA8UHJvamVjdHMgSW5jbHVkZT0iQChFeHRlbnNpb25Nb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZUV4dGVuc2lvbnMpIiAvPgogICAgIDwhLS0gVGVzdCBtb2R1bGVzIC0tPgotICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzX3Rlc3Q7X3Rlc3RidWZmZXI7X3Rlc3RjYXBpO190ZXN0ZW1iZWQ7X3Rlc3RpbXBvcnRtdWx0aXBsZTtfdGVzdG11bHRpcGhhc2UiIC8+CisgICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Il9jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGNhcGk7X3Rlc3RlbWJlZDtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZTtfdGVzdGNvbnNvbGUiIC8+CiAgICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Inh4bGltaXRlZCIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJ1JlbGVhc2UnIiAvPgogICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKFRlc3RNb2R1bGVzLT4nJShJZGVudGl0eSkudmN4cHJvaicpIiBDb25kaXRpb249IiQoSW5jbHVkZVRlc3RzKSI+CiAgICAgICA8IS0tIERpc2FibGUgcGFyYWxsZWwgYnVpbGQgZm9yIHRlc3QgbW9kdWxlcyAtLT4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5zbG4gYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCmluZGV4IDQyYTRkMmIuLjBlNjU4MTEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcGNidWlsZC5zbG4KKysrIGIvUENidWlsZC9wY2J1aWxkLnNsbgpAQCAtOTIsNiArOTIsMTAgQEAKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5c2hlbGxleHQiLCAicHlzaGVsbGV4dC52Y3hwcm9qIiwgInswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9Ig0KIEVuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y29uc29sZSIsICJfdGVzdGNvbnNvbGUudmN4cHJvaiIsICJ7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYXN5bmNpbyIsICJfYXN5bmNpby52Y3hwcm9qIiwgInszODRDMjI0QS03NDc0LTQ3NkUtQTAxQi03NTBFQTdERTkxOEN9Ig0KK0VuZFByb2plY3QNCiBHbG9iYWwNCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCiAJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCkBAIC03MDgsNiArNzEyLDIyIEBACiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7MEY2RUU0QTQtQzc1Ri00NTc4LUI0QjMtMkQ2NEY0QjlCNzgyfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCUVuZEdsb2JhbFNlY3Rpb24NCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCiAJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0IGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKaW5kZXggMWJlNzNlNi4uMmY0MWFlOCAxMDA2NDQKLS0tIGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKKysrIGIvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQKQEAgLTMsMTAgKzMsMTAgQEAKICAgaWYgIiUxIiBFUVUgIkRlYnVnIiAoDQogICAgIHNoaWZ0DQogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1X2QuZGxsIGV4aXQgMQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzZfZC5kbGwgZXhpdCAxDQogICApIEVMU0UgKA0KICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzUuZGxsIGV4aXQgMQ0KKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzYuZGxsIGV4aXQgMQ0KICAgKQ0KICkNCiAlSE9TVF9QWVRIT04lICIlfmRwMHByZXBhcmVfc3NsLnB5IiAlMQ0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKaW5kZXggZDFhYzk5OC4uNzAxMjE3MCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXByb2plY3QucHJvcHMKKysrIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKQEAgLTcsNyArNyw2IEBACiAgICAgPE91dERpciBDb25kaXRpb249IiFIYXNUcmFpbGluZ1NsYXNoKCQoT3V0RGlyKSkiPiQoT3V0RGlyKVw8L091dERpcj4KICAgICA8UHlfSW50RGlyIENvbmRpdGlvbj0iJyQoUHlfSW50RGlyKScgPT0gJyciPiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KW9ialw8L1B5X0ludERpcj4KICAgICA8SW50RGlyPiQoUHlfSW50RGlyKVwkKEFyY2hOYW1lKV8kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgotICAgIDxJbnREaXIgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChQeV9JbnREaXIpXCQoQXJjaE5hbWUpX1BHT1wkKFByb2plY3ROYW1lKVw8L0ludERpcj4KICAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKFRhcmdldE5hbWUpJyA9PSAnJyI+JChQcm9qZWN0TmFtZSk8L1RhcmdldE5hbWU+CiAgICAgPFRhcmdldE5hbWU+JChUYXJnZXROYW1lKSQoUHlEZWJ1Z0V4dCk8L1RhcmdldE5hbWU+CiAgICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+CkBAIC0xNDgsMTEgKzE0NywxMyBAQAogICAgICAgICAgICAgIFRhcmdldHM9IkNsZWFuQWxsIiAvPgogICA8L1RhcmdldD4KIAotICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+Ci0gICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IickKFNpZ25Ub29sUGF0aCknID09ICcnIG9yICFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3Q4MSlcYmluXHg4NlxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KLSAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdClcYmluXHg4NlxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KLSAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcTWljcm9zb2Z0IFNES3NcV2luZG93c1x2Ny4xQUBJbnN0YWxsYXRpb25Gb2xkZXIpXEJpblxzaWdudG9vbC5leGU8L1NpZ25Ub29sUGF0aD4KLSAgICA8X1NpZ25Db21tYW5kIENvbmRpdGlvbj0iRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiIkKFNpZ25Ub29sUGF0aCkiIHNpZ24gL3EgL24gIiQoU2lnbmluZ0NlcnRpZmljYXRlKSIgL2ZkIHNoYTI1NiAvdCBodHRwOi8vdGltZXN0YW1wLnZlcmlzaWduLmNvbS9zY3JpcHRzL3RpbWVzdGFtcC5kbGwgL2QgIlB5dGhvbiAkKFB5dGhvblZlcnNpb24pIjwvX1NpZ25Db21tYW5kPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8U2RrQmluUGF0aCBDb25kaXRpb249IickKFNka0JpblBhdGgpJyA9PSAnJyBvciAhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDEwKVxiaW5ceDg2PC9TZGtCaW5QYXRoPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3Q4MSlcYmluXHg4NjwvU2RrQmluUGF0aD4KKyAgICA8U2RrQmluUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290KVxiaW5ceDg2PC9TZGtCaW5QYXRoPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcTWljcm9zb2Z0XE1pY3Jvc29mdCBTREtzXFdpbmRvd3NcdjcuMUFASW5zdGFsbGF0aW9uRm9sZGVyKVxCaW5cPC9TZGtCaW5QYXRoPgorICAgIDxfU2lnbkNvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTZGtCaW5QYXRoKSkgYW5kICckKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+IiQoU2RrQmluUGF0aClcc2lnbnRvb2wuZXhlIiBzaWduIC9xIC9uICIkKFNpZ25pbmdDZXJ0aWZpY2F0ZSkiIC9mZCBzaGEyNTYgL3QgaHR0cDovL3RpbWVzdGFtcC52ZXJpc2lnbi5jb20vc2NyaXB0cy90aW1lc3RhbXAuZGxsIC9kICJQeXRob24gJChQeXRob25WZXJzaW9uKSI8L19TaWduQ29tbWFuZD4KKyAgICA8X01ha2VDYXRDb21tYW5kIENvbmRpdGlvbj0iRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4iJChTZGtCaW5QYXRoKVxtYWtlY2F0LmV4ZSI8L19NYWtlQ2F0Q29tbWFuZD4KICAgPC9Qcm9wZXJ0eUdyb3VwPgogICAKICAgPFRhcmdldCBOYW1lPSJfU2lnbkJ1aWxkIiBBZnRlclRhcmdldHM9IkFmdGVyQnVpbGQiIENvbmRpdGlvbj0iJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnByb3BzIGIvUENidWlsZC9weXRob24ucHJvcHMKaW5kZXggMTU1MzczMS4uZGRlOTRmNyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24ucHJvcHMKKysrIGIvUENidWlsZC9weXRob24ucHJvcHMKQEAgLTI1LDcgKzI1LDYgQEAKICAgICAtLT4KICAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICcnIGFuZCAkKFBsYXRmb3JtKSA9PSAneDY0JyI+YW1kNjQ8L0FyY2hOYW1lPgogICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJyciPndpbjMyPC9BcmNoTmFtZT4KLSAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIG9yICQoQ29uZmlndXJhdGlvbikgPT0gJ1BHVXBkYXRlJyI+JChBcmNoTmFtZSktcGdvPC9BcmNoTmFtZT4KICAgICAKICAgICA8IS0tIFJvb3QgZGlyZWN0b3J5IG9mIHRoZSByZXBvc2l0b3J5IC0tPgogICAgIDxQeVNvdXJjZVBhdGggQ29uZGl0aW9uPSInJChQeVNvdXJjZVBhdGgpJyA9PSAnJyI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aCgkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcLi5cKSk8L1B5U291cmNlUGF0aD4KQEAgLTQzLDkgKzQyLDkgQEAKICAgICAKICAgICA8IS0tIERpcmVjdG9yaWVzIG9mIGV4dGVybmFsIHByb2plY3RzLiB0Y2x0ayBpcyBoYW5kbGVkIGluIHRjbHRrLnByb3BzIC0tPgogICAgIDxFeHRlcm5hbHNEaXI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aChgJChQeVNvdXJjZVBhdGgpZXh0ZXJuYWxzXGApKTwvRXh0ZXJuYWxzRGlyPgotICAgIDxzcWxpdGUzRGlyPiQoRXh0ZXJuYWxzRGlyKXNxbGl0ZS0zLjguMTEuMFw8L3NxbGl0ZTNEaXI+CisgICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuMTQuMi4wXDwvc3FsaXRlM0Rpcj4KICAgICA8YnoyRGlyPiQoRXh0ZXJuYWxzRGlyKWJ6aXAyLTEuMC42XDwvYnoyRGlyPgotICAgIDxsem1hRGlyPiQoRXh0ZXJuYWxzRGlyKXh6LTUuMC41XDwvbHptYURpcj4KKyAgICA8bHptYURpcj4kKEV4dGVybmFsc0Rpcil4ei01LjIuMlw8L2x6bWFEaXI+CiAgICAgPG9wZW5zc2xEaXI+JChFeHRlcm5hbHNEaXIpb3BlbnNzbC0xLjAuMmpcPC9vcGVuc3NsRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpcj4kKG9wZW5zc2xEaXIpaW5jbHVkZTMyPC9vcGVuc3NsSW5jbHVkZURpcj4KICAgICA8b3BlbnNzbEluY2x1ZGVEaXIgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICdhbWQ2NCciPiQob3BlbnNzbERpcilpbmNsdWRlNjQ8L29wZW5zc2xJbmNsdWRlRGlyPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagppbmRleCBlNWU5NmFkLi45NjNkYTg5IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagpAQCAtMSw0ICsxLDQgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CiAgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KQEAgLTY5LDcgKzY5LDcgQEAKICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtNU19ETExfSUQ9IiQoU3lzV2luVmVyKSI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7c2hsd2FwaS5saWI7d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgogICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgpAQCAtMTI0LDYgKzEyNCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9kaWN0b2JqZWN0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9wY29kZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Ntb2R1bGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuLmgiIC8+CkBAIC0yMDksOSArMjEwLDEzIEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGltcG9ydGRsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cdGhyZWFkX250LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cd29yZGNvZGVfaGVscGVycy5oIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMmJfaW1wbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMnNfaW1wbC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3N2LmMiIC8+CkBAIC0yMjMsNiArMjI4LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zaGEzXHNoYTNtb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RhdC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3RydWN0LmMiIC8+CkBAIC0yNjQsNiArMjcwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x3aW5jb25zb2xlaW8uYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIiAvPgpAQCAtNDE2LDQgKzQyMyw0IEBACiAgIDxUYXJnZXQgTmFtZT0iX1dhcm5BYm91dFRvb2xzZXQiIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgIT0gJ3YxNDAnIj4KICAgICA8V2FybmluZyBUZXh0PSJUb29sc2V0ICQoUGxhdGZvcm1Ub29sc2V0KSBpcyBub3QgdXNlZCBmb3Igb2ZmaWNpYWwgYnVpbGRzLiBZb3VyIGJ1aWxkIG1heSBoYXZlIGVycm9ycyBvciBpbmNvbXBhdGliaWxpdGllcy4iIC8+CiAgIDwvVGFyZ2V0PgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDgzN2I3MzYuLjc2MjIxMGQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMSw0ICsxLDQgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iSW5jbHVkZSI+CkBAIC0xNzcsNiArMTc3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zbW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00MjAsNiArNDIzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHdvcmRjb2RlX2hlbHBlcnMuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbmR2YXIuaCI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDQwLDkgKzQ0NiwyMSBAQAogICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2FzeW5jaW9tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMmJfaW1wbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMnNfaW1wbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00NzYsNiArNDk0LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc2hhM1xzaGEzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTU4Nyw2ICs2MDgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cd2luY29uc29sZWlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtOTgwLDQgKzEwMDQsNCBAQAogICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvUmVzb3VyY2VDb21waWxlPgogICA8L0l0ZW1Hcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qCmluZGV4IGNhZWQxZTguLmU0MGY2NmMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qCkBAIC02Miw3ICs2Miw3IEBACiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+Ci0gICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fZXhlLnJjIiAvPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9ud19leGUucmMiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcV2luTWFpbi5jIiAvPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IDI0NjIwMTIuLmMwNGJhNGUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICBVc2VkIHRvIGJ1aWxkIFB5dGhvbiB3aXRoIGV4dHJhIGRlYnVnZ2luZyBjYXBhYmlsaXRpZXMsIGVxdWl2YWxlbnQNCiAgICAgdG8gdXNpbmcgLi9jb25maWd1cmUgLS13aXRoLXB5ZGVidWcgb24gVU5JWC4gIEFsbCBiaW5hcmllcyBidWlsdA0KICAgICB1c2luZyB0aGlzIGNvbmZpZ3VyYXRpb24gaGF2ZSAiX2QiIGFkZGVkIHRvIHRoZWlyIG5hbWU6DQotICAgIHB5dGhvbjM1X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiAgQm90aCB0aGUNCisgICAgcHl0aG9uMzZfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uICBCb3RoIHRoZQ0KICAgICBidWlsZCBhbmQgcnQgKHJ1biB0ZXN0KSBiYXRjaCBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSBhY2NlcHQgYSAtZA0KICAgICBvcHRpb24gZm9yIGRlYnVnIGJ1aWxkcy4gIElmIHlvdSBhcmUgYnVpbGRpbmcgUHl0aG9uIHRvIGhlbHAgd2l0aA0KICAgICBkZXZlbG9wbWVudCBvZiBDUHl0aG9uLCB5b3Ugd2lsbCBtb3N0IGxpa2VseSB1c2UgdGhpcyBjb25maWd1cmF0aW9uLg0KQEAgLTIwNCwxMSArMjA0LDExIEBACiAgICAgZnVuY3Rpb25hbGl0eSB0byBfc3NsIG9yIF9oYXNobGliLiBUaGV5IHdpbGwgbm90IGNsZWFuIHVwIHRoZWlyIG91dHB1dA0KICAgICB3aXRoIHRoZSBub3JtYWwgQ2xlYW4gdGFyZ2V0OyBDbGVhbkFsbCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLg0KIF9zcWxpdGUzDQotICAgIFdyYXBzIFNRTGl0ZSAzLjguMTEuMCwgd2hpY2ggaXMgaXRzZWxmIGJ1aWx0IGJ5IHNxbGl0ZTMudmN4cHJvag0KKyAgICBXcmFwcyBTUUxpdGUgMy4xNC4yLjAsIHdoaWNoIGlzIGl0c2VsZiBidWlsdCBieSBzcWxpdGUzLnZjeHByb2oNCiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvDQogX3RraW50ZXINCi0gICAgV3JhcHMgdmVyc2lvbiA4LjYuNCBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4NCisgICAgV3JhcHMgdmVyc2lvbiA4LjYuNiBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4NCiAgICAgSG9tZXBhZ2U6DQogICAgICAgICBodHRwOi8vd3d3LnRjbC50ay8NCiANCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3J0LmJhdCBiL1BDYnVpbGQvcnQuYmF0CmluZGV4IDJkOTNiODAuLjM1ODI2NzIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcnQuYmF0CisrKyBiL1BDYnVpbGQvcnQuYmF0CkBAIC00MiwxMiArNDIsMTUgQEAKIGlmIE5PVCAiJTEiPT0iIiAoc2V0IHJlZ3J0ZXN0YXJncz0lcmVncnRlc3RhcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQogc2V0IGV4ZT0lcHJlZml4JXB5dGhvbiVzdWZmaXglLmV4ZQ0KLXNldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtRSAtYmIgIiVwY2J1aWxkJS4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5IiAlcmVncnRlc3RhcmdzJQ0KK3NldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtRSAtYmIgLW0gdGVzdCAlcmVncnRlc3RhcmdzJQ0KIGlmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQ0KIA0KIGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLg0KICIlZXhlJSIgIiVwY2J1aWxkJXJtcHljLnB5Ig0KIA0KK2VjaG8gQ2xlYW5pbmcgX3B0aCBmaWxlcyAuLi4NCitpZiBleGlzdCAlcHJlZml4JSouX3B0aCBkZWwgJXByZWZpeCUqLl9wdGggDQorDQogZWNobyBvbg0KICVjbWQlDQogQGVjaG8gb2ZmDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagppbmRleCBjODQxYzVhLi40ZjViMTk2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpAQCAtNjYsNyArNjYsNyBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfRU5BQkxFX0ZUUzQ7U1FMSVRFX0VOQUJMRV9GVFM1O1NRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTg2LDQgKzg2LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RjbHRrLnByb3BzIGIvUENidWlsZC90Y2x0ay5wcm9wcwppbmRleCAxMWRiZmZiLi41N2JiOThhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3RjbHRrLnByb3BzCisrKyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKQEAgLTQsOCArNCw4IEBACiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxUY2xNYWpvclZlcnNpb24+ODwvVGNsTWFqb3JWZXJzaW9uPgogICAgIDxUY2xNaW5vclZlcnNpb24+NjwvVGNsTWlub3JWZXJzaW9uPgotICAgIDxUY2xQYXRjaExldmVsPjQ8L1RjbFBhdGNoTGV2ZWw+Ci0gICAgPFRjbFJldmlzaW9uPjI8L1RjbFJldmlzaW9uPgorICAgIDxUY2xQYXRjaExldmVsPjY8L1RjbFBhdGNoTGV2ZWw+CisgICAgPFRjbFJldmlzaW9uPjA8L1RjbFJldmlzaW9uPgogICAgIDxUa01ham9yVmVyc2lvbj4kKFRjbE1ham9yVmVyc2lvbik8L1RrTWFqb3JWZXJzaW9uPgogICAgIDxUa01pbm9yVmVyc2lvbj4kKFRjbE1pbm9yVmVyc2lvbik8L1RrTWlub3JWZXJzaW9uPgogICAgIDxUa1BhdGNoTGV2ZWw+JChUY2xQYXRjaExldmVsKTwvVGtQYXRjaExldmVsPgpAQCAtNDIsNCArNDIsNCBAQAogICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSA9PSAndjExMCciPiQoQnVpbGREaXJUb3ApX1ZDMTE8L0J1aWxkRGlyVG9wPgogICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSA9PSAndjEwMCciPiQoQnVpbGREaXJUb3ApX1ZDMTA8L0J1aWxkRGlyVG9wPgogICA8L1Byb3BlcnR5R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvaiBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKaW5kZXggMDE0NGZhOS4uOWRiZGM3NyAxMDA2NDQKLS0tIGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCkBAIC02Miw3ICs2Miw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtQeV9MSU1JVEVEX0FQST0weDAzMDUwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtQeV9MSU1JVEVEX0FQST0weDAzMDYwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CmRpZmYgLS1naXQgYS9QYXJzZXIvUHl0aG9uLmFzZGwgYi9QYXJzZXIvUHl0aG9uLmFzZGwKaW5kZXggY2QwODMyZC4uZjQ3MGFkMSAxMDA2NDQKLS0tIGEvUGFyc2VyL1B5dGhvbi5hc2RsCisrKyBiL1BhcnNlci9QeXRob24uYXNkbApAQCAtMSw0ICsxLDggQEAKLS0tIEFTREwncyBzaXggYnVpbHRpbiB0eXBlcyBhcmUgaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QsIHNpbmdsZXRvbgorLS0gQVNETCdzIDcgYnVpbHRpbiB0eXBlcyBhcmU6CistLSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgYnl0ZXMsIG9iamVjdCwgc2luZ2xldG9uLCBjb25zdGFudAorLS0KKy0tIHNpbmdsZXRvbjogTm9uZSwgVHJ1ZSBvciBGYWxzZQorLS0gY29uc3RhbnQgY2FuIGJlIE5vbmUsIHdoZXJlYXMgTm9uZSBtZWFucyAibm8gdmFsdWUiIGZvciBvYmplY3QuCiAKIG1vZHVsZSBQeXRob24KIHsKQEAgLTI0LDYgKzI4LDggQEAKICAgICAgICAgICB8IERlbGV0ZShleHByKiB0YXJnZXRzKQogICAgICAgICAgIHwgQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUpCiAgICAgICAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQorICAgICAgICAgIC0tICdzaW1wbGUnIGluZGljYXRlcyB0aGF0IHdlIGFubm90YXRlIHNpbXBsZSBuYW1lIHdpdGhvdXQgcGFyZW5zCisgICAgICAgICAgfCBBbm5Bc3NpZ24oZXhwciB0YXJnZXQsIGV4cHIgYW5ub3RhdGlvbiwgZXhwcj8gdmFsdWUsIGludCBzaW1wbGUpCiAKICAgICAgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCiAgICAgICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQpAQCAtNzEsOSArNzcsMTIgQEAKICAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzKQogICAgICAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCiAgICAgICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPworICAgICAgICAgfCBGb3JtYXR0ZWRWYWx1ZShleHByIHZhbHVlLCBpbnQ/IGNvbnZlcnNpb24sIGV4cHI/IGZvcm1hdF9zcGVjKQorICAgICAgICAgfCBKb2luZWRTdHIoZXhwciogdmFsdWVzKQogICAgICAgICAgfCBCeXRlcyhieXRlcyBzKQogICAgICAgICAgfCBOYW1lQ29uc3RhbnQoc2luZ2xldG9uIHZhbHVlKQogICAgICAgICAgfCBFbGxpcHNpcworICAgICAgICAgfCBDb25zdGFudChjb25zdGFudCB2YWx1ZSkKIAogICAgICAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0CiAgICAgICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCkBAIC0xMDEsNyArMTEwLDcgQEAKIAogICAgIGNtcG9wID0gRXEgfCBOb3RFcSB8IEx0IHwgTHRFIHwgR3QgfCBHdEUgfCBJcyB8IElzTm90IHwgSW4gfCBOb3RJbgogCi0gICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMpCisgICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMsIGludCBpc19hc3luYykKIAogICAgIGV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCAxMjFjZGFiLi42MmY1YzE5IDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMzMsNyArMzMsOCBAQAogIyBTZWUgdGhlIEVCTkYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb24KICMgYmV0d2VlbiB0aGUgdmFyaW91cyBub2RlIHR5cGVzLgogCi1idWlsdGluX3R5cGVzID0geydpZGVudGlmaWVyJywgJ3N0cmluZycsICdieXRlcycsICdpbnQnLCAnb2JqZWN0JywgJ3NpbmdsZXRvbid9CitidWlsdGluX3R5cGVzID0geydpZGVudGlmaWVyJywgJ3N0cmluZycsICdieXRlcycsICdpbnQnLCAnb2JqZWN0JywgJ3NpbmdsZXRvbicsCisgICAgICAgICAgICAgICAgICdjb25zdGFudCd9CiAKIGNsYXNzIEFTVDoKICAgICBkZWYgX19yZXByX18oc2VsZik6CmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IGFjOWQyYjYuLjcyNWQ3M2IKLS0tIGEvUGFyc2VyL2FzZGxfYy5weQorKysgYi9QYXJzZXIvYXNkbF9jLnB5CkBAIC04NDEsNiArODQxLDcgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KilvOwogfQogI2RlZmluZSBhc3Qyb2JqX3NpbmdsZXRvbiBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2NvbnN0YW50IGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CkBAIC04NzgsNiArODc5LDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9jb25zdGFudChQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKG9iaikgeworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChhcmVuYSwgb2JqKSA8IDApIHsKKyAgICAgICAgICAgICpvdXQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgIH0KKyAgICAqb3V0ID0gb2JqOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaWRlbnRpZmllcihQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopICYmIG9iaiAhPSBQeV9Ob25lKSB7CkBAIC05MTMsNyArOTI3LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgaSA9IChpbnQpUHlMb25nX0FzTG9uZyhvYmopOworICAgIGkgPSBfUHlMb25nX0FzSW50KG9iaik7CiAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgKm91dCA9IGk7CmRpZmYgLS1naXQgYS9QYXJzZXIvZ3JhbW1hci5jIGIvUGFyc2VyL2dyYW1tYXIuYwppbmRleCBiNTk4Mjk0Li43NWZkNWI5IDEwMDY0NAotLS0gYS9QYXJzZXIvZ3JhbW1hci5jCisrKyBiL1BhcnNlci9ncmFtbWFyLmMKQEAgLTI4LDYgKzI4LDIzIEBACiAgICAgcmV0dXJuIGc7CiB9CiAKK3ZvaWQKK2ZyZWVncmFtbWFyKGdyYW1tYXIgKmcpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGctPmdfbmRmYXM7IGkrKykgeworICAgICAgICBmcmVlKGctPmdfZGZhW2ldLmRfbmFtZSk7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZy0+Z19kZmFbaV0uZF9uc3RhdGVzOyBqKyspCisgICAgICAgICAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhW2ldLmRfc3RhdGVbal0uc19hcmMpOworICAgICAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhW2ldLmRfc3RhdGUpOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZy0+Z19sbC5sbF9ubGFiZWxzOyBpKyspCisgICAgICAgIGZyZWUoZy0+Z19sbC5sbF9sYWJlbFtpXS5sYl9zdHIpOworICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19sbC5sbF9sYWJlbCk7CisgICAgUHlPYmplY3RfRlJFRShnKTsKK30KKwogZGZhICoKIGFkZGRmYShncmFtbWFyICpnLCBpbnQgdHlwZSwgY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTYzLDcgKzgwLDcgQEAKICAgICBzLT5zX3VwcGVyID0gMDsKICAgICBzLT5zX2FjY2VsID0gTlVMTDsKICAgICBzLT5zX2FjY2VwdCA9IDA7Ci0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QocyAtIGQtPmRfc3RhdGUsIFB5X2ludHB0cl90LCBpbnQpOworICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKHMgLSBkLT5kX3N0YXRlLCBpbnRwdHJfdCwgaW50KTsKIH0KIAogdm9pZApAQCAtMTA1LDcgKzEyMiw3IEBACiAgICAgaWYgKFB5X0RlYnVnRmxhZykKICAgICAgICAgcHJpbnRmKCJMYWJlbCBAICU4cCwgJWQ6ICVzXG4iLCBsbCwgbGwtPmxsX25sYWJlbHMsCiAgICAgICAgICAgICAgICBQeUdyYW1tYXJfTGFiZWxSZXByKGxiKSk7Ci0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobGIgLSBsbC0+bGxfbGFiZWwsIFB5X2ludHB0cl90LCBpbnQpOworICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxiIC0gbGwtPmxsX2xhYmVsLCBpbnRwdHJfdCwgaW50KTsKIH0KIAogLyogU2FtZSwgYnV0IHJhdGhlciBkaWVzIHRoYW4gYWRkcyAqLwpAQCAtMTIyLDcgKzEzOSwxMyBAQAogICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgIkxhYmVsICVkLyclcycgbm90IGZvdW5kXG4iLCB0eXBlLCBzdHIpOwogICAgIFB5X0ZhdGFsRXJyb3IoImdyYW1tYXIuYzpmaW5kbGFiZWwoKSIpOworCisgICAgLyogUHlfRmF0YWxFcnJvcigpIGlzIGRlY2xhcmVkIHdpdGggX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkuCisgICAgICAgR0NDIGVtaXRzIGEgd2FybmluZyB3aXRob3V0ICJyZXR1cm4gMDsiIChjb21waWxlciBidWchKSwgYnV0IENsYW5nIGlzCisgICAgICAgc21hcnRlciBhbmQgZW1pdHMgYSB3YXJuaW5nIG9uIHRoZSByZXR1cm4uLi4gKi8KKyNpZm5kZWYgX19jbGFuZ19fCiAgICAgcmV0dXJuIDA7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCisjZW5kaWYKIH0KIAogLyogRm9yd2FyZCAqLwpkaWZmIC0tZ2l0IGEvUGFyc2VyL215cmVhZGxpbmUuYyBiL1BhcnNlci9teXJlYWRsaW5lLmMKaW5kZXggMjhjN2I2ZC4uOWYzYzJlMyAxMDA2NDQKLS0tIGEvUGFyc2VyL215cmVhZGxpbmUuYworKysgYi9QYXJzZXIvbXlyZWFkbGluZS5jCkBAIC00MSwxMCArNDEsNyBAQAogICAgICAgICAgICAgKHZvaWQpKFB5T1NfSW5wdXRIb29rKSgpOwogICAgICAgICBlcnJubyA9IDA7CiAgICAgICAgIGNsZWFyZXJyKGZwKTsKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmaWxlbm8oZnApKSkKLSAgICAgICAgICAgIHAgPSBmZ2V0cyhidWYsIGxlbiwgZnApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwID0gTlVMTDsKKyAgICAgICAgcCA9IGZnZXRzKGJ1ZiwgbGVuLCBmcCk7CiAgICAgICAgIGlmIChwICE9IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gMDsgLyogTm8gZXJyb3IgKi8KICAgICAgICAgZXJyID0gZXJybm87CkBAIC0xMDEsNiArOTgsMTAwIEBACiAgICAgLyogTk9UUkVBQ0hFRCAqLwogfQogCisjaWZkZWYgTVNfV0lORE9XUworLyogUmVhZGxpbmUgaW1wbGVtZW50YXRpb24gdXNpbmcgUmVhZENvbnNvbGVXICovCisKK2V4dGVybiBjaGFyIF9nZXRfY29uc29sZV90eXBlKEhBTkRMRSBoYW5kbGUpOworCitjaGFyICoKK19QeU9TX1dpbmRvd3NDb25zb2xlUmVhZGxpbmUoSEFORExFIGhTdGRJbikKK3sKKyAgICBzdGF0aWMgd2NoYXJfdCB3YnVmX2xvY2FsWzEwMjQgKiAxNl07CisgICAgY29uc3QgRFdPUkQgY2h1bmtfc2l6ZSA9IDEwMjQ7CisKKyAgICBEV09SRCBuX3JlYWQsIHRvdGFsX3JlYWQsIHdidWZsZW4sIHU4bGVuOworICAgIHdjaGFyX3QgKndidWY7CisgICAgY2hhciAqYnVmID0gTlVMTDsKKyAgICBpbnQgZXJyID0gMDsKKworICAgIG5fcmVhZCA9IDA7CisgICAgdG90YWxfcmVhZCA9IDA7CisgICAgd2J1ZiA9IHdidWZfbG9jYWw7CisgICAgd2J1ZmxlbiA9IHNpemVvZih3YnVmX2xvY2FsKSAvIHNpemVvZih3YnVmX2xvY2FsWzBdKSAtIDE7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKCFSZWFkQ29uc29sZVcoaFN0ZEluLCAmd2J1Zlt0b3RhbF9yZWFkXSwgd2J1ZmxlbiAtIHRvdGFsX3JlYWQsICZuX3JlYWQsIE5VTEwpKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBpZiAobl9yZWFkID09IDApIHsKKyAgICAgICAgICAgIGludCBzOworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGVyciA9IDA7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCAxMDAsIEZBTFNFKQorICAgICAgICAgICAgICAgICAgICA9PSBXQUlUX09CSkVDVF8wKSB7CisgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICAgICAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQoX1B5T1NfUmVhZGxpbmVUU3RhdGUpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcyA9IFB5RXJyX0NoZWNrU2lnbmFscygpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICAgICAgUHlFdmFsX1NhdmVUaHJlYWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGlmIChzIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0b3RhbF9yZWFkICs9IG5fcmVhZDsKKyAgICAgICAgaWYgKHRvdGFsX3JlYWQgPT0gMCB8fCB3YnVmW3RvdGFsX3JlYWQgLSAxXSA9PSBMJ1xuJykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgd2J1ZmxlbiArPSBjaHVua19zaXplOworICAgICAgICBpZiAod2J1ZiA9PSB3YnVmX2xvY2FsKSB7CisgICAgICAgICAgICB3YnVmW3RvdGFsX3JlYWRdID0gJ1wwJzsKKyAgICAgICAgICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKHdidWZsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKHdidWYpCisgICAgICAgICAgICAgICAgd2NzY3B5X3Mod2J1Ziwgd2J1Zmxlbiwgd2J1Zl9sb2NhbCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKHdidWYsIHdidWZsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgIH0KKworICAgIGlmICh3YnVmWzBdID09ICdceDFhJykgeworICAgICAgICBidWYgPSBQeU1lbV9SYXdNYWxsb2MoMSk7CisgICAgICAgIGlmIChidWYpCisgICAgICAgICAgICBidWZbMF0gPSAnXDAnOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgdThsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIHRvdGFsX3JlYWQsIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGJ1ZiA9IFB5TWVtX1Jhd01hbGxvYyh1OGxlbiArIDEpOworICAgIHU4bGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB0b3RhbF9yZWFkLCBidWYsIHU4bGVuLCBOVUxMLCBOVUxMKTsKKyAgICBidWZbdThsZW5dID0gJ1wwJzsKKworZXhpdDoKKyAgICBpZiAod2J1ZiAhPSB3YnVmX2xvY2FsKQorICAgICAgICBQeU1lbV9SYXdGcmVlKHdidWYpOworCisgICAgaWYgKGVycikgeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgIFB5RXZhbF9SZXN0b3JlVGhyZWFkKF9QeU9TX1JlYWRsaW5lVFN0YXRlKTsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgIFB5RXZhbF9TYXZlVGhyZWFkKCk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gYnVmOworfQorCisjZW5kaWYKKwogCiAvKiBSZWFkbGluZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBmZ2V0cygpICovCiAKQEAgLTExMCw2ICsyMDEsNDYgQEAKICAgICBzaXplX3QgbjsKICAgICBjaGFyICpwLCAqcHI7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKCFQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnICYmIHN5c19zdGRpbiA9PSBzdGRpbikgeworICAgICAgICBIQU5ETEUgaFN0ZEluLCBoU3RkRXJyOworCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaFN0ZEluID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8oc3lzX3N0ZGluKSk7CisgICAgICAgIGhTdGRFcnIgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyhzdGRlcnIpKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKworICAgICAgICBpZiAoX2dldF9jb25zb2xlX3R5cGUoaFN0ZEluKSA9PSAncicpIHsKKyAgICAgICAgICAgIGZmbHVzaChzeXNfc3Rkb3V0KTsKKyAgICAgICAgICAgIGlmIChwcm9tcHQpIHsKKyAgICAgICAgICAgICAgICBpZiAoX2dldF9jb25zb2xlX3R5cGUoaFN0ZEVycikgPT0gJ3cnKSB7CisgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndidWY7CisgICAgICAgICAgICAgICAgICAgIGludCB3bGVuOworICAgICAgICAgICAgICAgICAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBwcm9tcHQsIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICBpZiAod2xlbiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHdidWYgPSBQeU1lbV9SYXdNYWxsb2Mod2xlbiAqIHNpemVvZih3Y2hhcl90KSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBwcm9tcHQsIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YnVmLCB3bGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3bGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB3bGVuIGluY2x1ZGVzIG51bGwgdGVybWluYXRvciwgc28gc3VidHJhY3QgMSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlQ29uc29sZVcoaFN0ZEVyciwgd2J1Ziwgd2xlbiAtIDEsICZuLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvbXB0KTsKKyAgICAgICAgICAgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2xlYXJlcnIoc3lzX3N0ZGluKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlPU19XaW5kb3dzQ29uc29sZVJlYWRsaW5lKGhTdGRJbik7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIG4gPSAxMDA7CiAgICAgcCA9IChjaGFyICopUHlNZW1fUmF3TWFsbG9jKG4pOwogICAgIGlmIChwID09IE5VTEwpCmRpZmYgLS1naXQgYS9QYXJzZXIvbm9kZS5jIGIvUGFyc2VyL25vZGUuYwppbmRleCAwMDEwMzI0Li4yNDBkMjkwIDEwMDY0NAotLS0gYS9QYXJzZXIvbm9kZS5jCisrKyBiL1BhcnNlci9ub2RlLmMKQEAgLTkxLDcgKzkxLDcgQEAKICAgICBpZiAoY3VycmVudF9jYXBhY2l0eSA8IDAgfHwgcmVxdWlyZWRfY2FwYWNpdHkgPCAwKQogICAgICAgICByZXR1cm4gRV9PVkVSRkxPVzsKICAgICBpZiAoY3VycmVudF9jYXBhY2l0eSA8IHJlcXVpcmVkX2NhcGFjaXR5KSB7Ci0gICAgICAgIGlmICgoc2l6ZV90KXJlcXVpcmVkX2NhcGFjaXR5ID4gUFlfU0laRV9NQVggLyBzaXplb2Yobm9kZSkpIHsKKyAgICAgICAgaWYgKChzaXplX3QpcmVxdWlyZWRfY2FwYWNpdHkgPiBTSVpFX01BWCAvIHNpemVvZihub2RlKSkgewogICAgICAgICAgICAgcmV0dXJuIEVfTk9NRU07CiAgICAgICAgIH0KICAgICAgICAgbiA9IG4xLT5uX2NoaWxkOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNlci5jIGIvUGFyc2VyL3BhcnNlci5jCmluZGV4IDU2ZWM1MTQuLjQxMDcyYzQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXIuYworKysgYi9QYXJzZXIvcGFyc2VyLmMKQEAgLTE0MCwyMSArMTQwLDIwIEBACiAgICAgaW50IG4gPSBnLT5nX2xsLmxsX25sYWJlbHM7CiAKICAgICBpZiAodHlwZSA9PSBOQU1FKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdHI7CiAgICAgICAgIGxhYmVsICpsID0gZy0+Z19sbC5sbF9sYWJlbDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvciAoaSA9IG47IGkgPiAwOyBpLS0sIGwrKykgewogICAgICAgICAgICAgaWYgKGwtPmxiX3R5cGUgIT0gTkFNRSB8fCBsLT5sYl9zdHIgPT0gTlVMTCB8fAotICAgICAgICAgICAgICAgIGwtPmxiX3N0clswXSAhPSBzWzBdIHx8Ci0gICAgICAgICAgICAgICAgc3RyY21wKGwtPmxiX3N0ciwgcykgIT0gMCkKKyAgICAgICAgICAgICAgICBsLT5sYl9zdHJbMF0gIT0gc3RyWzBdIHx8CisgICAgICAgICAgICAgICAgc3RyY21wKGwtPmxiX3N0ciwgc3RyKSAhPSAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmZGVmIFBZX1BBUlNFUl9SRVFVSVJFU19GVVRVUkVfS0VZV09SRAogI2lmIDAKICAgICAgICAgICAgIC8qIExlYXZpbmcgdGhpcyBpbiBhcyBhbiBleGFtcGxlICovCiAgICAgICAgICAgICBpZiAoIShwcy0+cF9mbGFncyAmIENPX0ZVVFVSRV9XSVRIX1NUQVRFTUVOVCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc1swXSA9PSAndycgJiYgc3RyY21wKHMsICJ3aXRoIikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAoc3RyWzBdID09ICd3JyAmJiBzdHJjbXAoc3RyLCAid2l0aCIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBub3QgYSBrZXl3b3JkIHlldCAqLwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMF0gPT0gJ2EnICYmIHN0cmNtcChzLCAiYXMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0clswXSA9PSAnYScgJiYgc3RyY21wKHN0ciwgImFzIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vdCBhIGtleXdvcmQgeWV0ICovCiAgICAgICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRvay5jIGIvUGFyc2VyL3BhcnNldG9rLmMKaW5kZXggNjI5ZGVlNS4uMWY0NjdkNiAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNldG9rLmMKKysrIGIvUGFyc2VyL3BhcnNldG9rLmMKQEAgLTE2MSwxMCArMTYxLDEwIEBACiAKICNpZmRlZiBQWV9QQVJTRVJfUkVRVUlSRVNfRlVUVVJFX0tFWVdPUkQKICNpZiAwCi1zdGF0aWMgY2hhciB3aXRoX21zZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHdpdGhfbXNnW10gPQogIiVzOiVkOiBXYXJuaW5nOiAnd2l0aCcgd2lsbCBiZWNvbWUgYSByZXNlcnZlZCBrZXl3b3JkIGluIFB5dGhvbiAyLjZcbiI7CiAKLXN0YXRpYyBjaGFyIGFzX21zZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFzX21zZ1tdID0KICIlczolZDogV2FybmluZzogJ2FzJyB3aWxsIGJlY29tZSBhIHJlc2VydmVkIGtleXdvcmQgaW4gUHl0aG9uIDIuNlxuIjsKIAogc3RhdGljIHZvaWQKQEAgLTI1NSw3ICsyNTUsNyBAQAogI2VuZGlmCiAgICAgICAgIGlmIChhID49IHRvay0+bGluZV9zdGFydCkKICAgICAgICAgICAgIGNvbF9vZmZzZXQgPSBQeV9TQUZFX0RPV05DQVNUKGEgLSB0b2stPmxpbmVfc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90LCBpbnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xfb2Zmc2V0ID0gLTE7CiAKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VuLmMgYi9QYXJzZXIvcGdlbi5jCmluZGV4IGYzMDMxYWUuLjY0NTFhMWQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VuLmMKKysrIGIvUGFyc2VyL3BnZW4uYwpAQCAtMTE3LDYgKzExNywxNiBAQAogICAgIHJldHVybiBncjsKIH0KIAorc3RhdGljIHZvaWQKK2ZyZWVuZmFncmFtbWFyKG5mYWdyYW1tYXIgKmdyKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3ItPmdyX25uZmFzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3RfRlJFRShnci0+Z3JfbmZhW2ldLT5uZl9zdGF0ZSk7CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoZ3ItPmdyX25mYSk7CisgICAgUHlPYmplY3RfRlJFRShncik7Cit9CisKIHN0YXRpYyBuZmEgKgogYWRkbmZhKG5mYWdyYW1tYXIgKmdyLCBjaGFyICpuYW1lKQogewpAQCAtMTM0LDcgKzE0NCw3IEBACiAKICNpZmRlZiBQeV9ERUJVRwogCi1zdGF0aWMgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKK3N0YXRpYyBjb25zdCBjaGFyIFJFUU5GTVRbXSA9ICJtZXRhY29tcGlsZTogbGVzcyB0aGFuICVkIGNoaWxkcmVuXG4iOwogCiAjZGVmaW5lIFJFUU4oaSwgY291bnQpIGRvIHsgXAogICAgIGlmIChpIDwgY291bnQpIHsgXApAQCAtMzc5LDcgKzM4OSw3IEBACiAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyB2b2lkIHByaW50c3NkZmEoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSwgaW50IG5iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjaGFyICptc2cpOworICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjb25zdCBjaGFyICptc2cpOwogc3RhdGljIHZvaWQgc2ltcGxpZnkoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSk7CiBzdGF0aWMgdm9pZCBjb252ZXJ0KGRmYSAqZCwgaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSk7CiAKQEAgLTQ4OCwxMyArNDk4LDE3IEBACiAKICAgICBjb252ZXJ0KGQsIHh4X25zdGF0ZXMsIHh4X3N0YXRlKTsKIAotICAgIC8qIFhYWCBjbGVhbnVwICovCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4eF9uc3RhdGVzOyBpKyspIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB4eF9zdGF0ZVtpXS5zc19uYXJjczsgaisrKQorICAgICAgICAgICAgZGVsYml0c2V0KHh4X3N0YXRlW2ldLnNzX2FyY1tqXS5zYV9iaXRzZXQpOworICAgICAgICBQeU9iamVjdF9GUkVFKHh4X3N0YXRlW2ldLnNzX2FyYyk7CisgICAgfQogICAgIFB5T2JqZWN0X0ZSRUUoeHhfc3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZAogcHJpbnRzc2RmYShpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlLCBpbnQgbmJpdHMsCi0gICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNoYXIgKm1zZykKKyAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY29uc3QgY2hhciAqbXNnKQogewogICAgIGludCBpLCBpYml0LCBpYXJjOwogICAgIHNzX3N0YXRlICp5eTsKQEAgLTY2OSw3ICs2ODMsNyBAQAogICAgIGcgPSBtYWtldGFibGVzKGdyKTsKICAgICB0cmFuc2xhdGVsYWJlbHMoZyk7CiAgICAgYWRkZmlyc3RzZXRzKGcpOwotICAgIFB5T2JqZWN0X0ZSRUUoZ3IpOworICAgIGZyZWVuZmFncmFtbWFyKGdyKTsKICAgICByZXR1cm4gZzsKIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW5tYWluLmMgYi9QYXJzZXIvcGdlbm1haW4uYwppbmRleCAwZjA1NWQ2Li5lMzg2MjQ4IDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbm1haW4uYworKysgYi9QYXJzZXIvcGdlbm1haW4uYwpAQCAtMjcsNyArMjcsNyBAQAogaW50IFB5X0lnbm9yZUVudmlyb25tZW50RmxhZzsKIAogLyogRm9yd2FyZCAqLwotZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSk7CitncmFtbWFyICpnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIAogdm9pZCBQeV9FeGl0KGludCkgX1B5X05PX1JFVFVSTjsKIApAQCAtMzcsNiArMzcsMTUgQEAKICAgICBleGl0KHN0cyk7CiB9CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorLyogTmVlZGVkIGJ5IG9ibWFsbG9jLmMgKi8KK2ludCBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpCit7IHJldHVybiAxOyB9CisjZW5kaWYKKwordm9pZCBfUHlNZW1fRHVtcFRyYWNlYmFjayhpbnQgZmQsIGNvbnN0IHZvaWQgKnB0cikKK3t9CisKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CkBAIC03MSwxMiArODAsMTMgQEAKICAgICAgICAgcHJpbnRmKCJXcml0aW5nICVzIC4uLlxuIiwgZ3JhbWluaXRfaCk7CiAgICAgcHJpbnRub250ZXJtaW5hbHMoZywgZnApOwogICAgIGZjbG9zZShmcCk7CisgICAgZnJlZWdyYW1tYXIoZyk7CiAgICAgUHlfRXhpdCgwKTsKICAgICByZXR1cm4gMDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KIH0KIAogZ3JhbW1hciAqCi1nZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKQorZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBGSUxFICpmcDsKICAgICBub2RlICpuOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IDYxMmNiMjMuLjgzMTcyOTMgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTIwMiw4ICsyMDIsOCBAQAogfQogCiAKLXN0YXRpYyBjaGFyICoKLWdldF9ub3JtYWxfbmFtZShjaGFyICpzKSAgICAgICAgLyogZm9yIHV0Zi04IGFuZCBsYXRpbi0xICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfbm9ybWFsX25hbWUoY29uc3QgY2hhciAqcykgIC8qIGZvciB1dGYtOCBhbmQgbGF0aW4tMSAqLwogewogICAgIGNoYXIgYnVmWzEzXTsKICAgICBpbnQgaTsKQEAgLTI2NCw3ICsyNjQsNyBAQAogCiAgICAgICAgICAgICBpZiAoYmVnaW4gPCB0KSB7CiAgICAgICAgICAgICAgICAgY2hhciogciA9IG5ld19zdHJpbmcoYmVnaW4sIHQgLSBiZWdpbiwgdG9rKTsKLSAgICAgICAgICAgICAgICBjaGFyKiBxOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHE7CiAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBxID0gZ2V0X25vcm1hbF9uYW1lKHIpOwpAQCAtMTMzNSw2ICsxMzM1LDI4IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIGludAordG9rX2RlY2ltYWxfdGFpbChzdHJ1Y3QgdG9rX3N0YXRlICp0b2spCit7CisgICAgaW50IGM7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICBpZiAoYyAhPSAnXycpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGM7Cit9CisKIC8qIEdldCBuZXh0IHRva2VuLCBhZnRlciBzcGFjZSBzdHJpcHBpbmcgZXRjLiAqLwogCiBzdGF0aWMgaW50CkBAIC0xMzU1LDE3ICsxMzc3LDIwIEBACiAgICAgICAgIHRvay0+YXRib2wgPSAwOwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnICcpCisgICAgICAgICAgICBpZiAoYyA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBjb2wrKywgYWx0Y29sKys7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpIHsKICAgICAgICAgICAgICAgICBjb2wgPSAoY29sL3Rvay0+dGFic2l6ZSArIDEpICogdG9rLT50YWJzaXplOwogICAgICAgICAgICAgICAgIGFsdGNvbCA9IChhbHRjb2wvdG9rLT5hbHR0YWJzaXplICsgMSkKICAgICAgICAgICAgICAgICAgICAgKiB0b2stPmFsdHRhYnNpemU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMDE0JykgLyogQ29udHJvbC1MIChmb3JtZmVlZCkgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwMTQnKSAgey8qIENvbnRyb2wtTCAoZm9ybWZlZWQpICovCiAgICAgICAgICAgICAgICAgY29sID0gYWx0Y29sID0gMDsgLyogRm9yIEVtYWNzIHVzZXJzICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgIGlmIChjID09ICcjJyB8fCBjID09ICdcbicpIHsKQEAgLTEzNzQsMTAgKzEzOTksMTIgQEAKICAgICAgICAgICAgICAgIG5vdCBwYXNzZWQgdG8gdGhlIHBhcnNlciBhcyBORVdMSU5FIHRva2VucywKICAgICAgICAgICAgICAgIGV4Y2VwdCAqdG90YWxseSogZW1wdHkgbGluZXMgaW4gaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgIG1vZGUsIHdoaWNoIHNpZ25hbCB0aGUgZW5kIG9mIGEgY29tbWFuZCBncm91cC4gKi8KLSAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGJsYW5rbGluZSA9IDA7IC8qIExldCBpdCB0aHJvdWdoICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBibGFua2xpbmUgPSAxOyAvKiBJZ25vcmUgY29tcGxldGVseSAqLworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogV2UgY2FuJ3QganVtcCBiYWNrIHJpZ2h0IGhlcmUgc2luY2Ugd2Ugc3RpbGwKICAgICAgICAgICAgICAgIG1heSBuZWVkIHRvIHNraXAgdG8gdGhlIGVuZCBvZiBhIGNvbW1lbnQgKi8KICAgICAgICAgfQpAQCAtMTM4NSw4ICsxNDEyLDkgQEAKICAgICAgICAgICAgIGlmIChjb2wgPT0gdG9rLT5pbmRzdGFja1t0b2stPmluZGVudF0pIHsKICAgICAgICAgICAgICAgICAvKiBObyBjaGFuZ2UgKi8KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sICE9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjb2wgPiB0b2stPmluZHN0YWNrW3Rvay0+aW5kZW50XSkgewpAQCAtMTM5Nyw4ICsxNDI1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgPD0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b2stPnBlbmRpbisrOwogICAgICAgICAgICAgICAgIHRvay0+aW5kc3RhY2tbKyt0b2stPmluZGVudF0gPSBjb2w7CkBAIC0xNDE3LDggKzE0NDYsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCAhPSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDY0LDkgKzE0OTQsMTEgQEAKICAgICB0b2stPnN0YXJ0ID0gdG9rLT5jdXIgLSAxOwogCiAgICAgLyogU2tpcCBjb21tZW50ICovCi0gICAgaWYgKGMgPT0gJyMnKQotICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKQorICAgIGlmIChjID09ICcjJykgeworICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvKiBDaGVjayBmb3IgRU9GIGFuZCBlcnJvcnMgbm93ICovCiAgICAgaWYgKGMgPT0gRU9GKSB7CkBAIC0xNDc3LDMxICsxNTA5LDQxIEBACiAgICAgbm9uYXNjaWkgPSAwOwogICAgIGlmIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9zdGFydChjKSkgewogICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiLCB1IiIsIGJyIiIgYW5kIHJiIiIgKi8KLSAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDA7CisgICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwLCBzYXdfZiA9IDA7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKKyAgICAgICAgICAgIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19mKSAmJiAoYyA9PSAnYicgfHwgYyA9PSAnQicpKQogICAgICAgICAgICAgICAgIHNhd19iID0gMTsKICAgICAgICAgICAgIC8qIFNpbmNlIHRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGxpdGVyYWwgd2UgZG9uJ3QKICAgICAgICAgICAgICAgIHdhbnQgdG8gc3VwcG9ydCBpdCBpbiBhcmJpdHJhcnkgb3JkZXIgbGlrZSBieXRlIGxpdGVyYWxzLiAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfcikgJiYgKGMgPT0gJ3UnIHx8IGMgPT0gJ1UnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IgfHwgc2F3X2YpCisgICAgICAgICAgICAgICAgICAgICAmJiAoYyA9PSAndSd8fCBjID09ICdVJykpIHsKICAgICAgICAgICAgICAgICBzYXdfdSA9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiB1ciIiIGFuZCBydSIiIGFyZSBub3Qgc3VwcG9ydGVkICovCi0gICAgICAgICAgICBlbHNlIGlmICghKHNhd19yIHx8IHNhd191KSAmJiAoYyA9PSAncicgfHwgYyA9PSAnUicpKQorICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkgewogICAgICAgICAgICAgICAgIHNhd19yID0gMTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2YgfHwgc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdmJyB8fCBjID09ICdGJykpIHsKKyAgICAgICAgICAgICAgICBzYXdfZiA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpCisgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgZ290byBsZXR0ZXJfcXVvdGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX2NoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID49IDEyOCkKKyAgICAgICAgICAgIGlmIChjID49IDEyOCkgewogICAgICAgICAgICAgICAgIG5vbmFzY2lpID0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgIGlmIChub25hc2NpaSAmJiAhdmVyaWZ5X2lkZW50aWZpZXIodG9rKSkKKyAgICAgICAgaWYgKG5vbmFzY2lpICYmICF2ZXJpZnlfaWRlbnRpZmllcih0b2spKSB7CiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogCkBAIC0xNTEwLDEwICsxNTUyLDEyIEBACiAgICAgICAgICAgICAvKiBDdXJyZW50IHRva2VuIGxlbmd0aCBpcyA1LiAqLwogICAgICAgICAgICAgaWYgKHRvay0+YXN5bmNfZGVmKSB7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgaW5zaWRlIGFuICdhc3luYyBkZWYnIGZ1bmN0aW9uLiAqLwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImF3YWl0IiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBV0FJVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIFRoZSBjdXJyZW50IHRva2VuIGlzICdhc3luYycuCkBAIC0xNTQ2LDggKzE1OTAsOSBAQAogICAgIC8qIE5ld2xpbmUgKi8KICAgICBpZiAoYyA9PSAnXG4nKSB7CiAgICAgICAgIHRvay0+YXRib2wgPSAxOwotICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKQorICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKSB7CiAgICAgICAgICAgICBnb3RvIG5leHRsaW5lOworICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXIgLSAxOyAvKiBMZWF2ZSAnXG4nIG91dCBvZiB0aGUgc3RyaW5nICovCiAgICAgICAgIHRvay0+Y29udF9saW5lID0gMDsKQEAgLTE1NzAsMTEgKzE2MTUsMTMgQEAKICAgICAgICAgICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVMTElQU0lTOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCAnLicpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKQEAgLTE1ODcsNjQgKzE2MzQsOTQgQEAKICAgICAgICAgaWYgKGMgPT0gJzAnKSB7CiAgICAgICAgICAgICAvKiBIZXgsIG9jdGFsIG9yIGJpbmFyeSAtLSBtYXliZS4gKi8KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICcuJykKLSAgICAgICAgICAgICAgICBnb3RvIGZyYWN0aW9uOwotICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQotICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OwogICAgICAgICAgICAgaWYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSB7Ci0KICAgICAgICAgICAgICAgICAvKiBIZXggKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChpc3hkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzeGRpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICdfJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdvJyB8fCBjID09ICdPJykgewogICAgICAgICAgICAgICAgIC8qIE9jdGFsICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPj0gJzgnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKCcwJyA8PSBjICYmIGMgPCAnOCcpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID49ICc4JykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJzAnIDw9IGMgJiYgYyA8ICc4Jyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnYicgfHwgYyA9PSAnQicpIHsKICAgICAgICAgICAgICAgICAvKiBCaW5hcnkgKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJzAnIHx8IGMgPT0gJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICcwJyB8fCBjID09ICcxJyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IG5vbnplcm8gPSAwOwogICAgICAgICAgICAgICAgIC8qIG1heWJlIG9sZC1zdHlsZSBvY3RhbDsgYyBpcyBmaXJzdCBjaGFyIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgLyogaW4gYW55IGNhc2UsIGFsbG93ICcwJyBhcyBhIGxpdGVyYWwgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoYyA9PSAnMCcpCi0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXNkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICBub256ZXJvID0gMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpCisgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9uemVybyA9IDE7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZnJhY3Rpb247Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhwb25lbnQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChub256ZXJvKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9sZC1zdHlsZSBvY3RhbDogbm93IGRpc2FsbG93ZWQuICovCiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CiAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CkBAIC0xNjUzLDE3ICsxNzMwLDIyIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBEZWNpbWFsICovCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgfQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIEFjY2VwdCBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqLwogICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGZyYWN0aW9uOgogICAgICAgICAgICAgICAgICAgICAvKiBGcmFjdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGU7CkBAIC0xNjg1LDE0ICsxNzY3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQorICAgICAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykgewogICAgICAgICAgICAgICAgICAgICAvKiBJbWFnaW5hcnkgcGFydCAqLwogICAgICAgICBpbWFnaW5hcnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwpAQCAtMTcxMiwyMiArMTc5NiwyNyBAQAogICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkKKyAgICAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICAgICAgcXVvdGVfc2l6ZSA9IDM7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSA9IDE7ICAgICAvKiBlbXB0eSBzdHJpbmcgZm91bmQgKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoYyAhPSBxdW90ZSkKKyAgICAgICAgaWYgKGMgIT0gcXVvdGUpIHsKICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIEdldCByZXN0IG9mIHN0cmluZyAqLwogICAgICAgICB3aGlsZSAoZW5kX3F1b3RlX3NpemUgIT0gcXVvdGVfc2l6ZSkgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgaWYgKGMgPT0gRU9GKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHF1b3RlX3NpemUgPT0gMykKKyAgICAgICAgICAgICAgICBpZiAocXVvdGVfc2l6ZSA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfRU9GUzsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0VPTFM7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRvay0+Y3VyID0gdG9rLT5pbnA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICB9CkBAIC0xNzM2LDEyICsxODI1LDE0IEBACiAgICAgICAgICAgICAgICAgdG9rLT5jdXIgPSB0b2stPmlucDsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjID09IHF1b3RlKQorICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSArPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgPSAwOwotICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTc3MSw3ICsxODYyLDggQEAKICAgICAgICAgICAgIGludCB0b2tlbjMgPSBQeVRva2VuX1RocmVlQ2hhcnMoYywgYzIsIGMzKTsKICAgICAgICAgICAgIGlmICh0b2tlbjMgIT0gT1ApIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuMzsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYzMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKaW5kZXggMDc5Mzk4NC4uMTA2OTk2NiAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIHRleHRfc2l6ZSA9IHN0YXR1cy5zdF9zaXplOworICAgIHRleHRfc2l6ZSA9IChzaXplX3Qpc3RhdHVzLnN0X3NpemU7CiAgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKICAgICBpZiAodGV4dCA9PSBOVUxMKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMgYi9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKaW5kZXggYWI2YThjNy4uMzk2ODM5OSAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCisrKyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpAQCAtNDEsNyArNDEsNyBAQAogI2VuZGlmCiAgICAgaW50IGksIGo7CiAKLSAgICBmb3IgKGk9MDsgaTwzOyBpKyspIHsKKyAgICBmb3IgKGk9MDsgaTwxNTsgaSsrKSB7CiAgICAgICAgIHByaW50ZigiLS0tIFBhc3MgJWQgLS0tXG4iLCBpKTsKICAgICAgICAgX3Rlc3RlbWJlZF9QeV9Jbml0aWFsaXplKCk7CiAgICAgICAgIG1haW5zdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9weXRob24uYyBiL1Byb2dyYW1zL3B5dGhvbi5jCmluZGV4IDM3YjEwYjguLmE3YWZiYzcgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL3B5dGhvbi5jCisrKyBiL1Byb2dyYW1zL3B5dGhvbi5jCkBAIC0yNCw2ICsyNCw5IEBACiAgICAgaW50IGksIHJlczsKICAgICBjaGFyICpvbGRsb2M7CiAKKyAgICAvKiBGb3JjZSBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gYm9vdHN0cmFwIFB5dGhvbiAqLworICAgICh2b2lkKV9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoIm1hbGxvYyIpOworCiAgICAgYXJndl9jb3B5ID0gKHdjaGFyX3QgKiopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiAoYXJnYysxKSk7CiAgICAgYXJndl9jb3B5MiA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGlmICghYXJndl9jb3B5IHx8ICFhcmd2X2NvcHkyKSB7CkBAIC02Miw3ICs2NSwxMyBAQAogCiAgICAgc2V0bG9jYWxlKExDX0FMTCwgb2xkbG9jKTsKICAgICBQeU1lbV9SYXdGcmVlKG9sZGxvYyk7CisKICAgICByZXMgPSBQeV9NYWluKGFyZ2MsIGFyZ3ZfY29weSk7CisKKyAgICAvKiBGb3JjZSBhZ2FpbiBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gcmVsZWFzZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgIGJlZm9yZSBQeV9NYWluKCkgKi8KKyAgICAodm9pZClfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKCJtYWxsb2MiKTsKKwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkyW2ldKTsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCBhZDUzYmEzNS4uZTA2MDdiYSAxMDA2NDQKLS0tIGEvUHl0aG9uL1B5dGhvbi1hc3QuYworKysgYi9QeXRob24vUHl0aG9uLWFzdC5jCkBAIC04Niw2ICs4NiwxNSBAQAogICAgICJvcCIsCiAgICAgInZhbHVlIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpBbm5Bc3NpZ25fdHlwZTsKK19QeV9JREVOVElGSUVSKGFubm90YXRpb24pOworX1B5X0lERU5USUZJRVIoc2ltcGxlKTsKK3N0YXRpYyBjaGFyICpBbm5Bc3NpZ25fZmllbGRzW109eworICAgICJ0YXJnZXQiLAorICAgICJhbm5vdGF0aW9uIiwKKyAgICAidmFsdWUiLAorICAgICJzaW1wbGUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkZvcl90eXBlOwogX1B5X0lERU5USUZJRVIoaXRlcik7CiBfUHlfSURFTlRJRklFUihvcmVsc2UpOwpAQCAtMjg1LDYgKzI5NCwxOCBAQAogc3RhdGljIGNoYXIgKlN0cl9maWVsZHNbXT17CiAgICAgInMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkZvcm1hdHRlZFZhbHVlX3R5cGU7CitfUHlfSURFTlRJRklFUihjb252ZXJzaW9uKTsKK19QeV9JREVOVElGSUVSKGZvcm1hdF9zcGVjKTsKK3N0YXRpYyBjaGFyICpGb3JtYXR0ZWRWYWx1ZV9maWVsZHNbXT17CisgICAgInZhbHVlIiwKKyAgICAiY29udmVyc2lvbiIsCisgICAgImZvcm1hdF9zcGVjIiwKK307CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpKb2luZWRTdHJfdHlwZTsKK3N0YXRpYyBjaGFyICpKb2luZWRTdHJfZmllbGRzW109eworICAgICJ2YWx1ZXMiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkJ5dGVzX3R5cGU7CiBzdGF0aWMgY2hhciAqQnl0ZXNfZmllbGRzW109ewogICAgICJzIiwKQEAgLTI5NCw2ICszMTUsMTAgQEAKICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkVsbGlwc2lzX3R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpDb25zdGFudF90eXBlOworc3RhdGljIGNoYXIgKkNvbnN0YW50X2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkF0dHJpYnV0ZV90eXBlOwogX1B5X0lERU5USUZJRVIoYXR0cik7CiBfUHlfSURFTlRJRklFUihjdHgpOwpAQCAtNDEwLDEwICs0MzUsMTIgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmNvbXByZWhlbnNpb25fdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9jb21wcmVoZW5zaW9uKHZvaWQqKTsKIF9QeV9JREVOVElGSUVSKGlmcyk7CitfUHlfSURFTlRJRklFUihpc19hc3luYyk7CiBzdGF0aWMgY2hhciAqY29tcHJlaGVuc2lvbl9maWVsZHNbXT17CiAgICAgInRhcmdldCIsCiAgICAgIml0ZXIiLAogICAgICJpZnMiLAorICAgICJpc19hc3luYyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqZXhjZXB0aGFuZGxlcl90eXBlOwogc3RhdGljIGNoYXIgKmV4Y2VwdGhhbmRsZXJfYXR0cmlidXRlc1tdID0gewpAQCAtNDUwLDcgKzQ3Nyw2IEBACiAgICAgImNvbF9vZmZzZXQiLAogfTsKIF9QeV9JREVOVElGSUVSKGFyZyk7Ci1fUHlfSURFTlRJRklFUihhbm5vdGF0aW9uKTsKIHN0YXRpYyBjaGFyICphcmdfZmllbGRzW109ewogICAgICJhcmciLAogICAgICJhbm5vdGF0aW9uIiwKQEAgLTY5Nyw2ICs3MjMsNyBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKW87CiB9CiAjZGVmaW5lIGFzdDJvYmpfc2luZ2xldG9uIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfY29uc3RhbnQgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKQEAgLTczNCw2ICs3NjEsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2NvbnN0YW50KFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAob2JqKSB7CisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGFyZW5hLCBvYmopIDwgMCkgeworICAgICAgICAgICAgKm91dCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgfQorICAgICpvdXQgPSBvYmo7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pZGVudGlmaWVyKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikgJiYgb2JqICE9IFB5X05vbmUpIHsKQEAgLTc2OSw3ICs4MDksNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBpID0gKGludClQeUxvbmdfQXNMb25nKG9iaik7CisgICAgaSA9IF9QeUxvbmdfQXNJbnQob2JqKTsKICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMTsKICAgICAqb3V0ID0gaTsKQEAgLTg0Myw2ICs4ODMsOCBAQAogICAgIGlmICghQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEF1Z0Fzc2lnbl90eXBlID0gbWFrZV90eXBlKCJBdWdBc3NpZ24iLCBzdG10X3R5cGUsIEF1Z0Fzc2lnbl9maWVsZHMsIDMpOwogICAgIGlmICghQXVnQXNzaWduX3R5cGUpIHJldHVybiAwOworICAgIEFubkFzc2lnbl90eXBlID0gbWFrZV90eXBlKCJBbm5Bc3NpZ24iLCBzdG10X3R5cGUsIEFubkFzc2lnbl9maWVsZHMsIDQpOworICAgIGlmICghQW5uQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEZvcl90eXBlID0gbWFrZV90eXBlKCJGb3IiLCBzdG10X3R5cGUsIEZvcl9maWVsZHMsIDQpOwogICAgIGlmICghRm9yX3R5cGUpIHJldHVybiAwOwogICAgIEFzeW5jRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkFzeW5jRm9yIiwgc3RtdF90eXBlLCBBc3luY0Zvcl9maWVsZHMsIDQpOwpAQCAtOTE3LDYgKzk1OSwxMSBAQAogICAgIGlmICghTnVtX3R5cGUpIHJldHVybiAwOwogICAgIFN0cl90eXBlID0gbWFrZV90eXBlKCJTdHIiLCBleHByX3R5cGUsIFN0cl9maWVsZHMsIDEpOwogICAgIGlmICghU3RyX3R5cGUpIHJldHVybiAwOworICAgIEZvcm1hdHRlZFZhbHVlX3R5cGUgPSBtYWtlX3R5cGUoIkZvcm1hdHRlZFZhbHVlIiwgZXhwcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVkVmFsdWVfZmllbGRzLCAzKTsKKyAgICBpZiAoIUZvcm1hdHRlZFZhbHVlX3R5cGUpIHJldHVybiAwOworICAgIEpvaW5lZFN0cl90eXBlID0gbWFrZV90eXBlKCJKb2luZWRTdHIiLCBleHByX3R5cGUsIEpvaW5lZFN0cl9maWVsZHMsIDEpOworICAgIGlmICghSm9pbmVkU3RyX3R5cGUpIHJldHVybiAwOwogICAgIEJ5dGVzX3R5cGUgPSBtYWtlX3R5cGUoIkJ5dGVzIiwgZXhwcl90eXBlLCBCeXRlc19maWVsZHMsIDEpOwogICAgIGlmICghQnl0ZXNfdHlwZSkgcmV0dXJuIDA7CiAgICAgTmFtZUNvbnN0YW50X3R5cGUgPSBtYWtlX3R5cGUoIk5hbWVDb25zdGFudCIsIGV4cHJfdHlwZSwKQEAgLTkyNCw2ICs5NzEsOCBAQAogICAgIGlmICghTmFtZUNvbnN0YW50X3R5cGUpIHJldHVybiAwOwogICAgIEVsbGlwc2lzX3R5cGUgPSBtYWtlX3R5cGUoIkVsbGlwc2lzIiwgZXhwcl90eXBlLCBOVUxMLCAwKTsKICAgICBpZiAoIUVsbGlwc2lzX3R5cGUpIHJldHVybiAwOworICAgIENvbnN0YW50X3R5cGUgPSBtYWtlX3R5cGUoIkNvbnN0YW50IiwgZXhwcl90eXBlLCBDb25zdGFudF9maWVsZHMsIDEpOworICAgIGlmICghQ29uc3RhbnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgQXR0cmlidXRlX3R5cGUgPSBtYWtlX3R5cGUoIkF0dHJpYnV0ZSIsIGV4cHJfdHlwZSwgQXR0cmlidXRlX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFBdHRyaWJ1dGVfdHlwZSkgcmV0dXJuIDA7CiAgICAgU3Vic2NyaXB0X3R5cGUgPSBtYWtlX3R5cGUoIlN1YnNjcmlwdCIsIGV4cHJfdHlwZSwgU3Vic2NyaXB0X2ZpZWxkcywgMyk7CkBAIC0xMTAxLDcgKzExNTAsNyBAQAogICAgIE5vdEluX3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KE5vdEluX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgIGlmICghTm90SW5fc2luZ2xldG9uKSByZXR1cm4gMDsKICAgICBjb21wcmVoZW5zaW9uX3R5cGUgPSBtYWtlX3R5cGUoImNvbXByZWhlbnNpb24iLCAmQVNUX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25fZmllbGRzLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl9maWVsZHMsIDQpOwogICAgIGlmICghY29tcHJlaGVuc2lvbl90eXBlKSByZXR1cm4gMDsKICAgICBpZiAoIWFkZF9hdHRyaWJ1dGVzKGNvbXByZWhlbnNpb25fdHlwZSwgTlVMTCwgMCkpIHJldHVybiAwOwogICAgIGV4Y2VwdGhhbmRsZXJfdHlwZSA9IG1ha2VfdHlwZSgiZXhjZXB0aGFuZGxlciIsICZBU1RfdHlwZSwgTlVMTCwgMCk7CkBAIC0xMzcwLDYgKzE0MTksMzQgQEAKIH0KIAogc3RtdF90eQorQW5uQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGFubm90YXRpb24sIGV4cHJfdHkgdmFsdWUsIGludCBzaW1wbGUsIGludAorICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIHN0bXRfdHkgcDsKKyAgICBpZiAoIXRhcmdldCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB0YXJnZXQgaXMgcmVxdWlyZWQgZm9yIEFubkFzc2lnbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFhbm5vdGF0aW9uKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGFubm90YXRpb24gaXMgcmVxdWlyZWQgZm9yIEFubkFzc2lnbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBbm5Bc3NpZ25fa2luZDsKKyAgICBwLT52LkFubkFzc2lnbi50YXJnZXQgPSB0YXJnZXQ7CisgICAgcC0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbiA9IGFubm90YXRpb247CisgICAgcC0+di5Bbm5Bc3NpZ24udmFsdWUgPSB2YWx1ZTsKKyAgICBwLT52LkFubkFzc2lnbi5zaW1wbGUgPSBzaW1wbGU7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitzdG10X3R5CiBGb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50CiAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0yMDYzLDYgKzIxNDAsNDIgQEAKIH0KIAogZXhwcl90eQorRm9ybWF0dGVkVmFsdWUoZXhwcl90eSB2YWx1ZSwgaW50IGNvbnZlcnNpb24sIGV4cHJfdHkgZm9ybWF0X3NwZWMsIGludCBsaW5lbm8sCisgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIEZvcm1hdHRlZFZhbHVlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEZvcm1hdHRlZFZhbHVlX2tpbmQ7CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSA9IHZhbHVlOworICAgIHAtPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyA9IGZvcm1hdF9zcGVjOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQorSm9pbmVkU3RyKGFzZGxfc2VxICogdmFsdWVzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gSm9pbmVkU3RyX2tpbmQ7CisgICAgcC0+di5Kb2luZWRTdHIudmFsdWVzID0gdmFsdWVzOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQnl0ZXMoYnl0ZXMgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGV4cHJfdHkgcDsKQEAgLTIxMTQsNiArMjIyNywyNSBAQAogfQogCiBleHByX3R5CitDb25zdGFudChjb25zdGFudCB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBDb25zdGFudCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBDb25zdGFudF9raW5kOworICAgIHAtPnYuQ29uc3RhbnQudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIEF0dHJpYnV0ZShleHByX3R5IHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dF90eSBjdHgsIGludCBsaW5lbm8sIGludAogICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewpAQCAtMjMxNSw3ICsyNDQ3LDggQEAKIH0KIAogY29tcHJlaGVuc2lvbl90eQotY29tcHJlaGVuc2lvbihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGlmcywgUHlBcmVuYSAqYXJlbmEpCitjb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogaWZzLCBpbnQgaXNfYXN5bmMsCisgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGNvbXByZWhlbnNpb25fdHkgcDsKICAgICBpZiAoIXRhcmdldCkgewpAQCAtMjMzNCw2ICsyNDY3LDcgQEAKICAgICBwLT50YXJnZXQgPSB0YXJnZXQ7CiAgICAgcC0+aXRlciA9IGl0ZXI7CiAgICAgcC0+aWZzID0gaWZzOworICAgIHAtPmlzX2FzeW5jID0gaXNfYXN5bmM7CiAgICAgcmV0dXJuIHA7CiB9CiAKQEAgLTI2NDgsNiArMjc4MiwzMCBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFubkFzc2lnbl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi50YXJnZXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPnYuQW5uQXNzaWduLnNpbXBsZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3NpbXBsZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEZvcl90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMzE2NCw2ICszMzIyLDM0IEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhGb3JtYXR0ZWRWYWx1ZV90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbnZlcnNpb24sIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZm9ybWF0X3NwZWMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhKb2luZWRTdHJfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Kb2luZWRTdHIudmFsdWVzLCBhc3Qyb2JqX2V4cHIpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZXMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEJ5dGVzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zMTg2LDYgKzMzNzIsMTUgQEAKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRWxsaXBzaXNfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhDb25zdGFudF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfY29uc3RhbnQoby0+di5Db25zdGFudC52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQXR0cmlidXRlX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zNTMxLDYgKzM3MjYsMTEgQEAKICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2lmcywgdmFsdWUpID09IC0xKQogICAgICAgICBnb3RvIGZhaWxlZDsKICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+aXNfYXN5bmMpOworICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXNfYXN5bmMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgZ290byBmYWlsZWQ7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogZmFpbGVkOgogICAgIFB5X1hERUNSRUYodmFsdWUpOwpAQCAtNDQ1OCw2ICs0NjU4LDY0IEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUFubkFzc2lnbl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgaW50IHNpbXBsZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbikpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmFubm90YXRpb24sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYW5ub3RhdGlvblwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zaW1wbGUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3NpbXBsZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmc2ltcGxlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInNpbXBsZVwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBbm5Bc3NpZ24odGFyZ2V0LCBhbm5vdGF0aW9uLCB2YWx1ZSwgc2ltcGxlLCBsaW5lbm8sIGNvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilGb3JfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MjA1LDYgKzY0NjMsOTAgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopRm9ybWF0dGVkVmFsdWVfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIGludCBjb252ZXJzaW9uOworICAgICAgICBleHByX3R5IGZvcm1hdF9zcGVjOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gRm9ybWF0dGVkVmFsdWUiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9jb252ZXJzaW9uKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb252ZXJzaW9uKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb252ZXJzaW9uLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnZlcnNpb24gPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9mb3JtYXRfc3BlYykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZm9ybWF0X3NwZWMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZmb3JtYXRfc3BlYywgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3JtYXRfc3BlYyA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEZvcm1hdHRlZFZhbHVlKHZhbHVlLCBjb252ZXJzaW9uLCBmb3JtYXRfc3BlYywgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilKb2luZWRTdHJfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGFzZGxfc2VxKiB2YWx1ZXM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkpvaW5lZFN0ciBmaWVsZCBcInZhbHVlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICB2YWx1ZXMgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkpvaW5lZFN0ciBmaWVsZCBcInZhbHVlc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVzXCIgbWlzc2luZyBmcm9tIEpvaW5lZFN0ciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEpvaW5lZFN0cih2YWx1ZXMsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilCeXRlc190eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTYyNTksNiArNjYwMSwyOCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilDb25zdGFudF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgY29uc3RhbnQgdmFsdWU7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfY29uc3RhbnQodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gQ29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBDb25zdGFudCh2YWx1ZSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUF0dHJpYnV0ZV90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTY5ODcsNiArNzM1MSw3IEBACiAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgZXhwcl90eSBpdGVyOwogICAgIGFzZGxfc2VxKiBpZnM7CisgICAgaW50IGlzX2FzeW5jOwogCiAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgIGludCByZXM7CkBAIC03MDM4LDcgKzc0MDMsMTggQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaWZzXCIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgICpvdXQgPSBjb21wcmVoZW5zaW9uKHRhcmdldCwgaXRlciwgaWZzLCBhcmVuYSk7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pc19hc3luYykpIHsKKyAgICAgICAgaW50IHJlczsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2lzX2FzeW5jKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmaXNfYXN5bmMsIGFyZW5hKTsKKyAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpc19hc3luY1wiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAqb3V0ID0gY29tcHJlaGVuc2lvbih0YXJnZXQsIGl0ZXIsIGlmcywgaXNfYXN5bmMsIGFyZW5hKTsKICAgICByZXR1cm4gMDsKIGZhaWxlZDoKICAgICBQeV9YREVDUkVGKHRtcCk7CkBAIC03NTAyLDYgKzc4NzgsOCBAQAogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXVnQXNzaWduIiwgKFB5T2JqZWN0KilBdWdBc3NpZ25fdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFubkFzc2lnbiIsIChQeU9iamVjdCopQW5uQXNzaWduX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3IiLCAoUHlPYmplY3QqKUZvcl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNGb3IiLCAoUHlPYmplY3QqKUFzeW5jRm9yX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NTYyLDEyICs3OTQwLDE4IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDYWxsIiwgKFB5T2JqZWN0KilDYWxsX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJOdW0iLCAoUHlPYmplY3QqKU51bV90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU3RyIiwgKFB5T2JqZWN0KilTdHJfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkZvcm1hdHRlZFZhbHVlIiwKKyAgICAgICAgKFB5T2JqZWN0KilGb3JtYXR0ZWRWYWx1ZV90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSm9pbmVkU3RyIiwgKFB5T2JqZWN0KilKb2luZWRTdHJfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkJ5dGVzIiwgKFB5T2JqZWN0KilCeXRlc190eXBlKSA8IDApIHJldHVybgogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTmFtZUNvbnN0YW50IiwgKFB5T2JqZWN0KilOYW1lQ29uc3RhbnRfdHlwZSkgPAogICAgICAgICAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkVsbGlwc2lzIiwgKFB5T2JqZWN0KilFbGxpcHNpc190eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ29uc3RhbnQiLCAoUHlPYmplY3QqKUNvbnN0YW50X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBdHRyaWJ1dGUiLCAoUHlPYmplY3QqKUF0dHJpYnV0ZV90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU3Vic2NyaXB0IiwgKFB5T2JqZWN0KilTdWJzY3JpcHRfdHlwZSkgPCAwKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL193YXJuaW5ncy5jIGIvUHl0aG9uL193YXJuaW5ncy5jCmluZGV4IDM5MjgxNTMuLjZjZmFlNzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9fd2FybmluZ3MuYworKysgYi9QeXRob24vX3dhcm5pbmdzLmMKQEAgLTQwLDEyICs0MCwxMSBAQAogICAgQSBOVUxMIHJldHVybiB2YWx1ZSBjYW4gbWVhbiBmYWxzZSBvciBhbiBlcnJvci4KICovCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X3dhcm5pbmdzX2F0dHIoY29uc3QgY2hhciAqYXR0cikKK2dldF93YXJuaW5nc19hdHRyKGNvbnN0IGNoYXIgKmF0dHIsIGludCB0cnlfaW1wb3J0KQogewogICAgIHN0YXRpYyBQeU9iamVjdCAqd2FybmluZ3Nfc3RyID0gTlVMTDsKICAgICBQeU9iamVjdCAqYWxsX21vZHVsZXM7Ci0gICAgUHlPYmplY3QgKndhcm5pbmdzX21vZHVsZTsKLSAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGUsICpvYmo7CiAKICAgICBpZiAod2FybmluZ3Nfc3RyID09IE5VTEwpIHsKICAgICAgICAgd2FybmluZ3Nfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIndhcm5pbmdzIik7CkBAIC01MywxNSArNTIsMzQgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFsbF9tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIHJlc3VsdCA9IFB5RGljdF9Db250YWlucyhhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKLSAgICBpZiAocmVzdWx0ID09IC0xIHx8IHJlc3VsdCA9PSAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGFsbF9tb2R1bGVzLCB3YXJuaW5nc19zdHIpOwotICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpKQorICAgIC8qIGRvbid0IHRyeSB0byBpbXBvcnQgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBQeXRob24gZmluYWxsaXphdGlvbiAqLworICAgIGlmICh0cnlfaW1wb3J0ICYmIF9QeV9GaW5hbGl6aW5nID09IE5VTEwpIHsKKyAgICAgICAgd2FybmluZ3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0KHdhcm5pbmdzX3N0cik7CisgICAgICAgIGlmICh3YXJuaW5nc19tb2R1bGUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogRmFsbGJhY2sgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24gaWYgd2UgY2Fubm90IGdldAorICAgICAgICAgICAgICAgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFsbF9tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworCisgICAgICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGFsbF9tb2R1bGVzLCB3YXJuaW5nc19zdHIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBQeV9JTkNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICB9CisKKyAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKSkgeworICAgICAgICBQeV9ERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpOworICAgIFB5X0RFQ1JFRih3YXJuaW5nc19tb2R1bGUpOworICAgIHJldHVybiBvYmo7CiB9CiAKIApAQCAtNzAsNyArODgsNyBAQAogewogICAgIFB5T2JqZWN0ICpyZWdpc3RyeTsKIAotICAgIHJlZ2lzdHJ5ID0gZ2V0X3dhcm5pbmdzX2F0dHIoIm9uY2VyZWdpc3RyeSIpOworICAgIHJlZ2lzdHJ5ID0gZ2V0X3dhcm5pbmdzX2F0dHIoIm9uY2VyZWdpc3RyeSIsIDApOwogICAgIGlmIChyZWdpc3RyeSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04Nyw3ICsxMDUsNyBAQAogewogICAgIFB5T2JqZWN0ICpkZWZhdWx0X2FjdGlvbjsKIAotICAgIGRlZmF1bHRfYWN0aW9uID0gZ2V0X3dhcm5pbmdzX2F0dHIoImRlZmF1bHRhY3Rpb24iKTsKKyAgICBkZWZhdWx0X2FjdGlvbiA9IGdldF93YXJuaW5nc19hdHRyKCJkZWZhdWx0YWN0aW9uIiwgMCk7CiAgICAgaWYgKGRlZmF1bHRfYWN0aW9uID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTEwLDcgKzEyOCw3IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nc19maWx0ZXJzOwogCi0gICAgd2FybmluZ3NfZmlsdGVycyA9IGdldF93YXJuaW5nc19hdHRyKCJmaWx0ZXJzIik7CisgICAgd2FybmluZ3NfZmlsdGVycyA9IGdldF93YXJuaW5nc19hdHRyKCJmaWx0ZXJzIiwgMCk7CiAgICAgaWYgKHdhcm5pbmdzX2ZpbHRlcnMgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg3LDggKzMwNSw4IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1zaG93X3dhcm5pbmcoUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqdGV4dCwgUHlPYmplY3QKLSAgICAgICAgICAgICAgICAqY2F0ZWdvcnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQorc2hvd193YXJuaW5nKFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKnRleHQsCisgICAgICAgICAgICAgUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqc291cmNlbGluZSkKIHsKICAgICBQeU9iamVjdCAqZl9zdGRlcnI7CiAgICAgUHlPYmplY3QgKm5hbWU7CkBAIC0zNTksMTAgKzM3Nyw2NCBAQAogICAgIFB5RXJyX0NsZWFyKCk7CiB9CiAKK3N0YXRpYyBpbnQKK2NhbGxfc2hvd193YXJuaW5nKFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKnRleHQsIFB5T2JqZWN0ICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqbGluZW5vX29iaiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2VsaW5lLCBQeU9iamVjdCAqc291cmNlKQoreworICAgIFB5T2JqZWN0ICpzaG93X2ZuLCAqbXNnLCAqcmVzLCAqd2Fybm1zZ19jbHMgPSBOVUxMOworCisgICAgLyogSWYgdGhlIHNvdXJjZSBwYXJhbWV0ZXIgaXMgc2V0LCB0cnkgdG8gZ2V0IHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uCisgICAgICAgVGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBhYmxlIHRvIGxvZyB0aGUgdHJhY2ViYWNrIHdoZXJlIHRoZSBzb3VyY2UKKyAgICAgICB3YXMgYWxsb2NhdGVkLCB3aGVyZWFzIHRoZSBDIGltcGxlbWVudGF0aW9uIGRvZXNudC4gKi8KKyAgICBzaG93X2ZuID0gZ2V0X3dhcm5pbmdzX2F0dHIoIl9zaG93d2Fybm1zZyIsIHNvdXJjZSAhPSBOVUxMKTsKKyAgICBpZiAoc2hvd19mbiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzaG93X3dhcm5pbmcoZmlsZW5hbWUsIGxpbmVubywgdGV4dCwgY2F0ZWdvcnksIHNvdXJjZWxpbmUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soc2hvd19mbikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAid2FybmluZ3MuX3Nob3d3YXJubXNnKCkgbXVzdCBiZSBzZXQgdG8gYSBjYWxsYWJsZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHdhcm5tc2dfY2xzID0gZ2V0X3dhcm5pbmdzX2F0dHIoIldhcm5pbmdNZXNzYWdlIiwgMCk7CisgICAgaWYgKHdhcm5tc2dfY2xzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG1zZyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mod2Fybm1zZ19jbHMsIG1lc3NhZ2UsIGNhdGVnb3J5LAorICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVub19vYmosIFB5X05vbmUsIFB5X05vbmUsIHNvdXJjZSwKKyAgICAgICAgICAgIE5VTEwpOworICAgIFB5X0RFQ1JFRih3YXJubXNnX2Nscyk7CisgICAgaWYgKG1zZyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzaG93X2ZuLCBtc2csIE5VTEwpOworICAgIFB5X0RFQ1JFRihzaG93X2ZuKTsKKyAgICBQeV9ERUNSRUYobXNnKTsKKworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoc2hvd19mbik7CisgICAgcmV0dXJuIC0xOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogd2Fybl9leHBsaWNpdChQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICptZXNzYWdlLAogICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCisgICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUsCisgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKmtleSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJlc3VsdCA9IE5VTEwsICpsaW5lbm9fb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqaXRlbSA9IE5VTEw7CkBAIC00NzAsMzEgKzU0Miw5IEBACiAgICAgaWYgKHJjID09IDEpICAvKiBBbHJlYWR5IHdhcm5lZCBmb3IgdGhpcyBtb2R1bGUuICovCiAgICAgICAgIGdvdG8gcmV0dXJuX25vbmU7CiAgICAgaWYgKHJjID09IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnNob3dfZnhuID0gZ2V0X3dhcm5pbmdzX2F0dHIoInNob3d3YXJuaW5nIik7Ci0gICAgICAgIGlmIChzaG93X2Z4biA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICBzaG93X3dhcm5pbmcoZmlsZW5hbWUsIGxpbmVubywgdGV4dCwgY2F0ZWdvcnksIHNvdXJjZWxpbmUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKLQotICAgICAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZnhuKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2hvd19meG4pOwotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzaG93X2Z4biwgbWVzc2FnZSwgY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxfc2hvd193YXJuaW5nKGNhdGVnb3J5LCB0ZXh0LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vX29iaiwgc291cmNlbGluZSwgc291cmNlKSA8IDApCisgICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQogICAgIGVsc2UgLyogaWYgKHJjID09IC0xKSAqLwogICAgICAgICBnb3RvIGNsZWFudXA7CkBAIC03MzgsNyArNzg4LDggQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX3dhcm4oUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKK2RvX3dhcm4oUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICAgICAgUHlPYmplY3QgKnNvdXJjZSkKIHsKICAgICBQeU9iamVjdCAqZmlsZW5hbWUsICptb2R1bGUsICpyZWdpc3RyeSwgKnJlczsKICAgICBpbnQgbGluZW5vOwpAQCAtNzQ3LDcgKzc5OCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLCByZWdpc3RyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgc291cmNlKTsKICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogICAgIFB5X0RFQ1JFRihyZWdpc3RyeSk7CiAgICAgUHlfREVDUkVGKG1vZHVsZSk7CkBAIC03NTcsMjUgKzgwOCwyNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5pbmdzX3dhcm4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dfbGlzdFtdID0geyAibWVzc2FnZSIsICJjYXRlZ29yeSIsICJzdGFja2xldmVsIiwgMCB9OwotICAgIFB5T2JqZWN0ICptZXNzYWdlLCAqY2F0ZWdvcnkgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd19saXN0W10gPSB7Im1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAic3RhY2tsZXZlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1lc3NhZ2UsICpjYXRlZ29yeSA9IE5VTEwsICpzb3VyY2UgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T246d2FybiIsIGt3X2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJnN0YWNrX2xldmVsKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPbk86d2FybiIsIGt3X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJnN0YWNrX2xldmVsLCAmc291cmNlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjYXRlZ29yeSA9IGdldF9jYXRlZ29yeShtZXNzYWdlLCBjYXRlZ29yeSk7CiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCk7CisgICAgcmV0dXJuIGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBzb3VyY2UpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogd2FybmluZ3Nfd2Fybl9leHBsaWNpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIHN0YXRpYyBjaGFyICprd2RfbGlzdFtdID0geyJtZXNzYWdlIiwgImNhdGVnb3J5IiwgImZpbGVuYW1lIiwgImxpbmVubyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCAicmVnaXN0cnkiLCAibW9kdWxlX2dsb2JhbHMiLCAwfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSIsICJyZWdpc3RyeSIsICJtb2R1bGVfZ2xvYmFscyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiLCAwfTsKICAgICBQeU9iamVjdCAqbWVzc2FnZTsKICAgICBQeU9iamVjdCAqY2F0ZWdvcnk7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwpAQCAtNzgzLDEwICs4MzYsMTEgQEAKICAgICBQeU9iamVjdCAqbW9kdWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVnaXN0cnkgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGVfZ2xvYmFscyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNvdXJjZW9iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT09VaXxPT086d2Fybl9leHBsaWNpdCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PVWl8T09PTzp3YXJuX2V4cGxpY2l0IiwKICAgICAgICAgICAgICAgICBrd2RfbGlzdCwgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJmZpbGVuYW1lLCAmbGluZW5vLCAmbW9kdWxlLAotICAgICAgICAgICAgICAgICZyZWdpc3RyeSwgJm1vZHVsZV9nbG9iYWxzKSkKKyAgICAgICAgICAgICAgICAmcmVnaXN0cnksICZtb2R1bGVfZ2xvYmFscywgJnNvdXJjZW9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG1vZHVsZV9nbG9iYWxzKSB7CkBAIC04NDIsMTQgKzg5NiwxNCBAQAogCiAgICAgICAgIC8qIEhhbmRsZSB0aGUgd2FybmluZy4gKi8KICAgICAgICAgcmV0dXJuZWQgPSB3YXJuX2V4cGxpY2l0KGNhdGVnb3J5LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgc291cmNlX2xpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIHNvdXJjZV9saW5lLCBzb3VyY2VvYmopOwogICAgICAgICBQeV9ERUNSRUYoc291cmNlX2xpc3QpOwogICAgICAgICByZXR1cm4gcmV0dXJuZWQ7CiAgICAgfQogCiAgc3RhbmRhcmRfY2FsbDoKICAgICByZXR1cm4gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgTlVMTCwgc291cmNlb2JqKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg2NCwxNCArOTE4LDE0IEBACiAKIHN0YXRpYyBpbnQKIHdhcm5fdW5pY29kZShQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICptZXNzYWdlLAotICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCisgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwgUHlPYmplY3QgKnNvdXJjZSkKIHsKICAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIGNhdGVnb3J5ID0gUHlFeGNfUnVudGltZVdhcm5pbmc7CiAKLSAgICByZXMgPSBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCk7CisgICAgcmVzID0gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIHNvdXJjZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC04NzksMTIgKzkzMywyOCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitfUHlFcnJfV2FybkZvcm1hdFYoUHlPYmplY3QgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIGludCByZXM7CisKKyAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGZvcm1hdCwgdmFyZ3MpOworICAgIGlmIChtZXNzYWdlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJlcyA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwsIHNvdXJjZSk7CisgICAgUHlfREVDUkVGKG1lc3NhZ2UpOworICAgIHJldHVybiByZXM7Cit9CisKIGludAogUHlFcnJfV2FybkZvcm1hdChQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewotICAgIGludCByZXQ7Ci0gICAgUHlPYmplY3QgKm1lc3NhZ2U7CisgICAgaW50IHJlczsKICAgICB2YV9saXN0IHZhcmdzOwogCiAjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwpAQCAtODkyLDI1ICs5NjIsMzggQEAKICNlbHNlCiAgICAgdmFfc3RhcnQodmFyZ3MpOwogI2VuZGlmCi0gICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKLSAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwpOwotICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0ID0gLTE7CisgICAgcmVzID0gX1B5RXJyX1dhcm5Gb3JtYXRWKE5VTEwsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgZm9ybWF0LCB2YXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXM7CiB9CiAKIGludAorUHlFcnJfUmVzb3VyY2VXYXJuaW5nKFB5T2JqZWN0ICpzb3VyY2UsIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgaW50IHJlczsKKyAgICB2YV9saXN0IHZhcmdzOworCisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBmb3JtYXQpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKKyAgICByZXMgPSBfUHlFcnJfV2FybkZvcm1hdFYoc291cmNlLCBQeUV4Y19SZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrX2xldmVsLCBmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworICAgIHJldHVybiByZXM7Cit9CisKKworaW50CiBQeUVycl9XYXJuRXgoUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICp0ZXh0LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQogewogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0ZXh0KTsKICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0ID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCk7CisgICAgcmV0ID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCwgTlVMTCk7CiAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC05MjEsNyArMTAwNCw3IEBACiAjdW5kZWYgUHlFcnJfV2FybgogCiBQeUFQSV9GVU5DKGludCkKLVB5RXJyX1dhcm4oUHlPYmplY3QgKmNhdGVnb3J5LCBjaGFyICp0ZXh0KQorUHlFcnJfV2FybihQeU9iamVjdCAqY2F0ZWdvcnksIGNvbnN0IGNoYXIgKnRleHQpCiB7CiAgICAgcmV0dXJuIFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgdGV4dCwgMSk7CiB9CkBAIC05MzYsNyArMTAxOSw3IEBACiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIGNhdGVnb3J5ID0gUHlFeGNfUnVudGltZVdhcm5pbmc7CiAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0xMDAwLDcgKzEwODMsNyBAQAogICAgIGlmIChtZXNzYWdlICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlczsKICAgICAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzZGwuYyBiL1B5dGhvbi9hc2RsLmMKaW5kZXggZGYzODdiMi4uYzIxMTA3OCAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzZGwuYworKysgYi9QeXRob24vYXNkbC5jCkBAIC05LDE0ICs5LDE0IEBACiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KICAgICBpZiAoc2l6ZSA8IDAgfHwKLSAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwotICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CisgICAgaWYgKG4gPiBTSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDAsMTQgKzQwLDE0IEBACiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KICAgICBpZiAoc2l6ZSA8IDAgfHwKLSAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwogCiAgICAgLyogY2hlY2sgaWYgc2l6ZSBjYW4gYmUgYWRkZWQgc2FmZWx5ICovCi0gICAgaWYgKG4gPiBQWV9TSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKKyAgICBpZiAobiA+IFNJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vYXN0LmMgYi9QeXRob24vYXN0LmMKaW5kZXggNWI3ZWQ3Yy4uMzNiN2RmNiAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzdC5jCisrKyBiL1B5dGhvbi9hc3QuYwpAQCAtMTMyLDYgKzEzMiw1MiBAQAogfQogCiBzdGF0aWMgaW50Cit2YWxpZGF0ZV9jb25zdGFudChQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IFB5X05vbmUgfHwgdmFsdWUgPT0gUHlfRWxsaXBzaXMpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlGbG9hdF9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlDb21wbGV4X0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUJvb2xfQ2hlY2sodmFsdWUpCisgICAgICAgICAgICB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Qnl0ZXNfQ2hlY2tFeGFjdCh2YWx1ZSkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh2YWx1ZSkgfHwgUHlGcm96ZW5TZXRfQ2hlY2tFeGFjdCh2YWx1ZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKml0OworCisgICAgICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2YWx1ZSk7CisgICAgICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlJdGVyX05leHQoaXQpOworICAgICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9jb25zdGFudChpdGVtKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKIHZhbGlkYXRlX2V4cHIoZXhwcl90eSBleHAsIGV4cHJfY29udGV4dF90eSBjdHgpCiB7CiAgICAgaW50IGNoZWNrX2N0eCA9IDE7CkBAIC0yNDAsNiArMjg2LDE0IEBACiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmZ1bmMsIExvYWQpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ2FsbC5hcmdzLCBMb2FkLCAwKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9jb25zdGFudChleHAtPnYuQ29uc3RhbnQudmFsdWUpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYW4gaW52YWxpZCB0eXBlIGluIENvbnN0YW50OiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShleHAtPnYuQ29uc3RhbnQudmFsdWUpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOwogICAgIGNhc2UgTnVtX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKm4gPSBleHAtPnYuTnVtLm47CiAgICAgICAgIGlmICghUHlMb25nX0NoZWNrRXhhY3QobikgJiYgIVB5RmxvYXRfQ2hlY2tFeGFjdChuKSAmJgpAQCAtMjU3LDYgKzMxMSwxNCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkpvaW5lZFN0ci52YWx1ZXMsIExvYWQsIDApOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgaWYgKHZhbGlkYXRlX2V4cHIoZXhwLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlLCBMb2FkKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChleHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMsIExvYWQpOworICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKmIgPSBleHAtPnYuQnl0ZXMuczsKICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYikpIHsKQEAgLTMzNSw2ICszOTcsMTcgQEAKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi50YXJnZXQsIFN0b3JlKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgaWYgKHN0bXQtPnYuQW5uQXNzaWduLnRhcmdldC0+a2luZCAhPSBOYW1lX2tpbmQgJiYKKyAgICAgICAgICAgIHN0bXQtPnYuQW5uQXNzaWduLnNpbXBsZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW5uQXNzaWduIHdpdGggc2ltcGxlIG5vbi1OYW1lIHRhcmdldCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bbm5Bc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKKyAgICAgICAgICAgICAgICghc3RtdC0+di5Bbm5Bc3NpZ24udmFsdWUgfHwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLnZhbHVlLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbiwgTG9hZCk7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IudGFyZ2V0LCBTdG9yZSkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IuaXRlciwgTG9hZCkgJiYKQEAgLTQxMyw4ICs0ODYsOCBAQAogICAgIGNhc2UgSW1wb3J0X2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnQubmFtZXMsICJuYW1lcyIsICJJbXBvcnQiKTsKICAgICBjYXNlIEltcG9ydEZyb21fa2luZDoKLSAgICAgICAgaWYgKHN0bXQtPnYuSW1wb3J0RnJvbS5sZXZlbCA8IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkltcG9ydEZyb20gbGV2ZWwgbGVzcyB0aGFuIC0xIik7CisgICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIk5lZ2F0aXZlIEltcG9ydEZyb20gbGV2ZWwiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnRGcm9tLm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0RnJvbSIpOwpAQCAtNTEyLDggKzU4NSw3IEBACiAKIC8qIERhdGEgc3RydWN0dXJlIHVzZWQgaW50ZXJuYWxseSAqLwogc3RydWN0IGNvbXBpbGluZyB7Ci0gICAgY2hhciAqY19lbmNvZGluZzsgLyogc291cmNlIGVuY29kaW5nICovCi0gICAgUHlBcmVuYSAqY19hcmVuYTsgLyogYXJlbmEgZm9yIGFsbG9jYXRpbmcgbWVtZW9yeSAqLworICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIEFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbW9yeS4gKi8KICAgICBQeU9iamVjdCAqY19maWxlbmFtZTsgLyogZmlsZW5hbWUgKi8KICAgICBQeU9iamVjdCAqY19ub3JtYWxpemU7IC8qIE5vcm1hbGl6YXRpb24gZnVuY3Rpb24gZnJvbSB1bmljb2RlZGF0YS4gKi8KICAgICBQeU9iamVjdCAqY19ub3JtYWxpemVfYXJnczsgLyogTm9ybWFsaXphdGlvbiBhcmd1bWVudCB0dXBsZS4gKi8KQEAgLTUzNSw5ICs2MDcsNyBAQAogc3RhdGljIGV4cHJfdHkgYXN0X2Zvcl9jYWxsKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBleHByX3R5KTsKIAogc3RhdGljIFB5T2JqZWN0ICpwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IGNoYXIgKik7Ci1zdGF0aWMgUHlPYmplY3QgKnBhcnNlc3RyKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpOwotc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICpuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpieXRlc21vZGUpOworc3RhdGljIGV4cHJfdHkgcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbik7CiAKICNkZWZpbmUgQ09NUF9HRU5FWFAgICAwCiAjZGVmaW5lIENPTVBfTElTVENPTVAgMQpAQCAtNzAxLDIzICs3NzEsMTEgQEAKICAgICBjLmNfYXJlbmEgPSBhcmVuYTsKICAgICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KICAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICBjLmNfbm9ybWFsaXplID0gYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKLSAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmNmX2ZsYWdzICYgUHlDRl9TT1VSQ0VfSVNfVVRGOCkgewotICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwotICAgICAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7Ci0jaWYgMAotICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJlbmNvZGluZyBkZWNsYXJhdGlvbiBpbiBVbmljb2RlIHN0cmluZyIpOwotICAgICAgICAgICAgZ290byBvdXQ7Ci0jZW5kaWYKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7Ci0gICAgICAgIGMuY19lbmNvZGluZyA9IFNUUihuKTsKKyAgICBjLmNfbm9ybWFsaXplID0gTlVMTDsKKyAgICBjLmNfbm9ybWFsaXplX2FyZ3MgPSBOVUxMOworCisgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkKICAgICAgICAgbiA9IENISUxEKG4sIDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFBFUCAzMTIwICovCi0gICAgICAgIGMuY19lbmNvZGluZyA9ICJ1dGYtOCI7Ci0gICAgfQogCiAgICAgayA9IDA7CiAgICAgc3dpdGNoIChUWVBFKG4pKSB7CkBAIC04NjQsNyArOTIyLDcgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBGT1JCSURERU5bXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgRk9SQklEREVOW10gPSB7CiAgICAgIk5vbmUiLAogICAgICJUcnVlIiwKICAgICAiRmFsc2UiLApAQCAtODgwLDggKzkzOCwzMCBAQAogICAgICAgICBhc3RfZXJyb3IoYywgbiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CisgICAgaWYgKF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKG5hbWUsICJhc3luYyIpIHx8CisgICAgICAgIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKG5hbWUsICJhd2FpdCIpKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICInYXN5bmMnIGFuZCAnYXdhaXQnIHdpbGwgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzIgorICAgICAgICAgICAgIiBpbiBQeXRob24gMy43Iik7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIHJldCA9IFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICBjLT5jX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAoZnVsbF9jaGVja3MpIHsKLSAgICAgICAgY29uc3QgY2hhciAqKnA7CisgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcDsKICAgICAgICAgZm9yIChwID0gRk9SQklEREVOOyAqcDsgcCsrKSB7CiAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9FcXVhbFRvQVNDSUlTdHJpbmcobmFtZSwgKnApKSB7CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKQEAgLTk0MywxMyArMTAyMyw4IEBACiAgICAgICAgICAgICBzID0gZS0+di5MaXN0LmVsdHM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUdXBsZV9raW5kOgotICAgICAgICAgICAgaWYgKGFzZGxfc2VxX0xFTihlLT52LlR1cGxlLmVsdHMpKSAgewotICAgICAgICAgICAgICAgIGUtPnYuVHVwbGUuY3R4ID0gY3R4OwotICAgICAgICAgICAgICAgIHMgPSBlLT52LlR1cGxlLmVsdHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBleHByX25hbWUgPSAiKCkiOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgZS0+di5UdXBsZS5jdHggPSBjdHg7CisgICAgICAgICAgICBzID0gZS0+di5UdXBsZS5lbHRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGFtYmRhX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGFtYmRhIjsKQEAgLTk4Niw2ICsxMDYxLDggQEAKICAgICAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgY2FzZSBTdHJfa2luZDoKICAgICAgICAgY2FzZSBCeXRlc19raW5kOgorICAgICAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAibGl0ZXJhbCI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKQEAgLTEyNTksMTYgKzEzMzYsMjAgQEAKICAgICAgICBhbmQgdmFyYXJnc2xpc3QgKGxhbWJkYSBkZWZpbml0aW9uKS4KIAogICAgICAgIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi0gICAgICAgdHlwZWRhcmdzbGlzdDogKCh0ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICAgICAgICAgICAoJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXQotICAgICAgICAgICB8ICcqKicgdGZwZGVmKQotICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB0eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKionIHRmcGRlZiBbJywnXSkKICAgICAgICB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICAgICAgIHZhcmFyZ3NsaXN0OiAoKHZmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gICAgICAgICAgICgnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqICBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgICB8ICcqKicgdmZwZGVmKQotICAgICAgICAgICB8IHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKKyAgICAgICB2YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgICAgICAgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ10KKyAgICAgICApCiAgICAgICAgdmZwZGVmOiBOQU1FCisKICAgICAqLwogICAgIGludCBpLCBqLCBrLCBucG9zYXJncyA9IDAsIG5rd29ubHlhcmdzID0gMDsKICAgICBpbnQgbnBvc2RlZmF1bHRzID0gMCwgZm91bmRfZGVmYXVsdCA9IDA7CkBAIC0xMzcwLDcgKzE0NTEsOCBAQAogICAgICAgICAgICAgICAgIGkgKz0gMjsgLyogdGhlIG5hbWUgYW5kIHRoZSBjb21tYSAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVEFSOgotICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pKSB7CisgICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikgfHwKKyAgICAgICAgICAgICAgICAgICAgKGkrMiA9PSBOQ0gobikgJiYgVFlQRShDSElMRChuLCBpKzEpKSA9PSBDT01NQSkpIHsKICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNjg3LDE0ICsxNzY5LDIxIEBACiBjb3VudF9jb21wX2ZvcnMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBpbnQgbl9mb3JzID0gMDsKKyAgICBpbnQgaXNfYXN5bmM7CiAKICAgY291bnRfY29tcF9mb3I6CisgICAgaXNfYXN5bmMgPSAwOwogICAgIG5fZm9ycysrOwogICAgIFJFUShuLCBjb21wX2Zvcik7Ci0gICAgaWYgKE5DSChuKSA9PSA1KQotICAgICAgICBuID0gQ0hJTEQobiwgNCk7Ci0gICAgZWxzZQorICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBBU1lOQykgeworICAgICAgICBpc19hc3luYyA9IDE7CisgICAgfQorICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKKyAgICAgICAgbiA9IENISUxEKG4sIDQgKyBpc19hc3luYyk7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXR1cm4gbl9mb3JzOworICAgIH0KICAgY291bnRfY29tcF9pdGVyOgogICAgIFJFUShuLCBjb21wX2l0ZXIpOwogICAgIG4gPSBDSElMRChuLCAwKTsKQEAgLTE3NTcsMTQgKzE4NDYsMTkgQEAKICAgICAgICAgYXNkbF9zZXEgKnQ7CiAgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbiwgZmlyc3Q7CiAgICAgICAgIG5vZGUgKmZvcl9jaDsKKyAgICAgICAgaW50IGlzX2FzeW5jID0gMDsKIAogICAgICAgICBSRVEobiwgY29tcF9mb3IpOwogCi0gICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEpOworICAgICAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVNZTkMpIHsKKyAgICAgICAgICAgIGlzX2FzeW5jID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcl9jaCA9IENISUxEKG4sIDEgKyBpc19hc3luYyk7CiAgICAgICAgIHQgPSBhc3RfZm9yX2V4cHJsaXN0KGMsIGZvcl9jaCwgU3RvcmUpOwogICAgICAgICBpZiAoIXQpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAzKSk7CisgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMyArIGlzX2FzeW5jKSk7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzcyLDE5ICsxODY2LDIwIEBACiAgICAgICAgICAgICh4IGZvciB4LCBpbiAuLi4pIGhhcyAxIGVsZW1lbnQgaW4gdCwgYnV0IHN0aWxsIHJlcXVpcmVzIGEgVHVwbGUuICovCiAgICAgICAgIGZpcnN0ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHQsIDApOwogICAgICAgICBpZiAoTkNIKGZvcl9jaCkgPT0gMSkKLSAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKGZpcnN0LCBleHByZXNzaW9uLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYXN5bmMsIGMtPmNfYXJlbmEpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywgZmlyc3QtPmNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiwgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihUdXBsZSh0LCBTdG9yZSwgZmlyc3QtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0LT5jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIE5VTEwsIGlzX2FzeW5jLCBjLT5jX2FyZW5hKTsKICAgICAgICAgaWYgKCFjb21wKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKE5DSChuKSA9PSA1KSB7CisgICAgICAgIGlmIChOQ0gobikgPT0gKDUgKyBpc19hc3luYykpIHsKICAgICAgICAgICAgIGludCBqLCBuX2lmczsKICAgICAgICAgICAgIGFzZGxfc2VxICppZnM7CiAKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCA0KTsKKyAgICAgICAgICAgIG4gPSBDSElMRChuLCA0ICsgaXNfYXN5bmMpOwogICAgICAgICAgICAgbl9pZnMgPSBjb3VudF9jb21wX2lmcyhjLCBuKTsKICAgICAgICAgICAgIGlmIChuX2lmcyA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE5OTMsNyArMjA4OCw2IEBACiAgICAgICAgfCAnLi4uJyB8ICdOb25lJyB8ICdUcnVlJyB8ICdGYWxzZScKICAgICAqLwogICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7Ci0gICAgaW50IGJ5dGVzbW9kZSA9IDA7CiAKICAgICBzd2l0Y2ggKFRZUEUoY2gpKSB7CiAgICAgY2FzZSBOQU1FOiB7CkBAIC0yMDE1LDcgKzIxMDksNyBAQAogICAgICAgICByZXR1cm4gTmFtZShuYW1lLCBMb2FkLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7Ci0gICAgICAgIFB5T2JqZWN0ICpzdHIgPSBwYXJzZXN0cnBsdXMoYywgbiwgJmJ5dGVzbW9kZSk7CisgICAgICAgIGV4cHJfdHkgc3RyID0gcGFyc2VzdHJwbHVzKGMsIG4pOwogICAgICAgICBpZiAoIXN0cikgewogICAgICAgICAgICAgY29uc3QgY2hhciAqZXJydHlwZSA9IE5VTEw7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRXJyb3IpKQpAQCAtMjAzMiw2ICsyMTI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKCVzKSAlcyIsIGVycnR5cGUsIHMpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIoJXMpIHVua25vd24gZXJyb3IiLCBlcnJ0eXBlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CkBAIC0yMDQxLDE0ICsyMTM2LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHN0cikgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChieXRlc21vZGUpCi0gICAgICAgICAgICByZXR1cm4gQnl0ZXMoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBTdHIoc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIFB5T2JqZWN0ICpweW51bSA9IHBhcnNlbnVtYmVyKGMsIFNUUihjaCkpOwpAQCAtMjgwNSw4ICsyODkzLDkgQEAKIGFzdF9mb3JfZXhwcl9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgUkVRKG4sIGV4cHJfc3RtdCk7Ci0gICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkKLSAgICAgICAgICAgICAgICB8ICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3QpKSopCisgICAgLyogZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorICAgICAgIGFubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogICAgICAgIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnIHRlc3R8c3Rhcl9leHByKSogWycsJ10KICAgICAgICBhdWdhc3NpZ246ICcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JwogICAgICAgICAgICAgICAgIHwgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScKQEAgLTI4NTgsNiArMjk0Nyw3NiBAQAogCiAgICAgICAgIHJldHVybiBBdWdBc3NpZ24oZXhwcjEsIG5ld29wZXJhdG9yLCBleHByMiwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KKyAgICBlbHNlIGlmIChUWVBFKENISUxEKG4sIDEpKSA9PSBhbm5hc3NpZ24pIHsKKyAgICAgICAgZXhwcl90eSBleHByMSwgZXhwcjIsIGV4cHIzOworICAgICAgICBub2RlICpjaCA9IENISUxEKG4sIDApOworICAgICAgICBub2RlICpkZWVwLCAqYW5uID0gQ0hJTEQobiwgMSk7CisgICAgICAgIGludCBzaW1wbGUgPSAxOworCisgICAgICAgIC8qIHdlIGtlZXAgdHJhY2sgb2YgcGFyZW5zIHRvIHF1YWxpZnkgKHgpIGFzIGV4cHJlc3Npb24gbm90IG5hbWUgKi8KKyAgICAgICAgZGVlcCA9IGNoOworICAgICAgICB3aGlsZSAoTkNIKGRlZXApID09IDEpIHsKKyAgICAgICAgICAgIGRlZXAgPSBDSElMRChkZWVwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoTkNIKGRlZXApID4gMCAmJiBUWVBFKENISUxEKGRlZXAsIDApKSA9PSBMUEFSKSB7CisgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICB9CisgICAgICAgIGV4cHIxID0gYXN0X2Zvcl90ZXN0bGlzdChjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjEpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoZXhwcjEtPmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBleHByMS0+di5OYW1lLmlkLCBuLCAwKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuTmFtZS5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQXR0cmlidXRlX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGV4cHIxLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuQXR0cmlidXRlLmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgICAgICAgICBleHByMS0+di5TdWJzY3JpcHQuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHNpbmdsZSB0YXJnZXQgKG5vdCBsaXN0KSBjYW4gYmUgYW5ub3RhdGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBzaW5nbGUgdGFyZ2V0IChub3QgdHVwbGUpIGNhbiBiZSBhbm5vdGF0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB0YXJnZXQgZm9yIGFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChleHByMS0+a2luZCAhPSBOYW1lX2tpbmQpIHsKKyAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgY2ggPSBDSElMRChhbm4sIDEpOworICAgICAgICBleHByMiA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgIGlmICghZXhwcjIpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChOQ0goYW5uKSA9PSAyKSB7CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgTlVMTCwgc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCA9IENISUxEKGFubiwgMyk7CisgICAgICAgICAgICBleHByMyA9IGFzdF9mb3JfZXhwcihjLCBjaCk7CisgICAgICAgICAgICBpZiAoIWV4cHIzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gQW5uQXNzaWduKGV4cHIxLCBleHByMiwgZXhwcjMsIHNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICB9CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBpbnQgaTsKICAgICAgICAgYXNkbF9zZXEgKnRhcmdldHM7CkBAIC0yOTkyLDkgKzMxNTEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGZsb3dfc3RtdDogJWQiLCBUWVBFKGNoKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmhhbmRsZWQgZmxvdyBzdGF0ZW1lbnQiKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGFsaWFzX3R5CkBAIC0zMjA4LDE0ICszMzY0LDE0IEBACiAgICAgICAgICAgICBhbGlhc190eSBpbXBvcnRfYWxpYXMgPSBhbGlhc19mb3JfaW1wb3J0X25hbWUoYywgbiwgMSk7CiAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgMCwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCAwLCBpbXBvcnRfYWxpYXMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICAgYWxpYXNfdHkgaW1wb3J0X2FsaWFzID0gYWxpYXNfZm9yX2ltcG9ydF9uYW1lKGMsIENISUxEKG4sIGkpLCAxKTsKICAgICAgICAgICAgICAgICBpZiAoIWltcG9ydF9hbGlhcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCBpIC8gMiwgaW1wb3J0X2FsaWFzKTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgaSAvIDIsIGltcG9ydF9hbGlhcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1vZCAhPSBOVUxMKQpAQCAtMzg4MSw3ICs0MDM3LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCitwYXJzZW51bWJlcl9yYXcoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKIHsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgbG9uZyB4OwpAQCAtMzkyNCw2ICs0MDgwLDMxIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQoreworICAgIGNoYXIgKmR1cCwgKmVuZDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGFzc2VydChzICE9IE5VTEwpOworCisgICAgaWYgKHN0cmNocihzLCAnXycpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIHBhcnNlbnVtYmVyX3JhdyhjLCBzKTsKKyAgICB9CisgICAgLyogQ3JlYXRlIGEgZHVwbGljYXRlIHdpdGhvdXQgdW5kZXJzY29yZXMuICovCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKHN0cmxlbihzKSArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBmb3IgKDsgKnM7IHMrKykgeworICAgICAgICBpZiAoKnMgIT0gJ18nKSB7CisgICAgICAgICAgICAqZW5kKysgPSAqczsKKyAgICAgICAgfQorICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXMgPSBwYXJzZW51bWJlcl9yYXcoYywgZHVwKTsKKyAgICBQeU1lbV9GcmVlKGR1cCk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQpCiB7CiAgICAgY29uc3QgY2hhciAqcywgKnQ7CkBAIC0zOTM0LDg1ICs0MTE1LDkyNSBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOCh0LCBzIC0gdCwgTlVMTCk7CiB9CiAKK3N0YXRpYyBpbnQKK3dhcm5faW52YWxpZF9lc2NhcGVfc2VxdWVuY2Uoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmaXJzdF9pbnZhbGlkX2VzY2FwZV9jaGFyKQoreworICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgXFwlYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2ludmFsaWRfZXNjYXBlX2NoYXIpOworICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCBtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmNfZmlsZW5hbWUsIExJTkVOTyhuKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCkgPCAwICYmCisgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nKSkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKnM7CisKKyAgICAgICAgLyogUmVwbGFjZSB0aGUgRGVwcmVjYXRpb25XYXJuaW5nIGV4Y2VwdGlvbiB3aXRoIGEgU3ludGF4RXJyb3IKKyAgICAgICAgICAgdG8gZ2V0IGEgbW9yZSBhY2N1cmF0ZSBlcnJvciByZXBvcnQgKi8KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOChtc2cpOworICAgICAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgcyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG1zZyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlfREVDUkVGKG1zZyk7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCi1kZWNvZGVfdW5pY29kZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCBpbnQgcmF3bW9kZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpCitkZWNvZGVfdW5pY29kZV93aXRoX2VzY2FwZXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuKQogewogICAgIFB5T2JqZWN0ICp2LCAqdTsKICAgICBjaGFyICpidWY7CiAgICAgY2hhciAqcDsKICAgICBjb25zdCBjaGFyICplbmQ7CiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICB1ID0gTlVMTDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICBpZiAobGVuID4gUFlfU0laRV9NQVggLyA2KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qICLDpCIgKDIgYnl0ZXMpIG1heSBiZWNvbWUgIlxVMDAwMDAwRTQiICgxMCBieXRlcyksIG9yIDE6NQotICAgICAgICAgICAiXMOkIiAoMyBieXRlcykgbWF5IGJlY29tZSAiXHUwMDVjXFUwMDAwMDBFNCIgKDE2IGJ5dGVzKSwgb3IgfjE6NiAqLwotICAgICAgICB1ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbiAqIDYpOwotICAgICAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHUpOwotICAgICAgICBlbmQgPSBzICsgbGVuOwotICAgICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICAgICAgaWYgKCpzID09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKLSAgICAgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmNweShwLCAidTAwNWMiKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSA1OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsgLyogWFhYIGluZWZmaWNpZW50ICovCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnc7Ci0gICAgICAgICAgICAgICAgaW50IGtpbmQ7Ci0gICAgICAgICAgICAgICAgdm9pZCAqZGF0YTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKLSAgICAgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOwotICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHcpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDh4IiwgY2hyKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSAxMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogU2hvdWxkIGJlIGltcG9zc2libGUgdG8gb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgICAgICBhc3NlcnQocCAtIGJ1ZiA8PSBQeV9TSVpFKHUpKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICpwKysgPSAqcysrOworICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgaWYgKGxlbiA+IFNJWkVfTUFYIC8gNikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogIsOkIiAoMiBieXRlcykgbWF5IGJlY29tZSAiXFUwMDAwMDBFNCIgKDEwIGJ5dGVzKSwgb3IgMTo1CisgICAgICAgIlzDpCIgKDMgYnl0ZXMpIG1heSBiZWNvbWUgIlx1MDA1Y1xVMDAwMDAwRTQiICgxNiBieXRlcyksIG9yIH4xOjYgKi8KKyAgICB1ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbiAqIDYpOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHUpOworICAgIGVuZCA9IHMgKyBsZW47CisgICAgd2hpbGUgKHMgPCBlbmQpIHsKKyAgICAgICAgaWYgKCpzID09ICdcXCcpIHsKKyAgICAgICAgICAgICpwKysgPSAqcysrOworICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeworICAgICAgICAgICAgICAgIHN0cmNweShwLCAidTAwNWMiKTsKKyAgICAgICAgICAgICAgICBwICs9IDU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbGVuID0gcCAtIGJ1ZjsKLSAgICAgICAgcyA9IGJ1ZjsKKyAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICp3OworICAgICAgICAgICAgaW50IGtpbmQ7CisgICAgICAgICAgICB2b2lkICpkYXRhOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGk7CisgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7CisgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHcpOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOworICAgICAgICAgICAgICAgIHAgKz0gMTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLworICAgICAgICAgICAgYXNzZXJ0KHAgLSBidWYgPD0gUHlfU0laRSh1KSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gKnMrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAocmF3bW9kZSkKLSAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKKyAgICBsZW4gPSBwIC0gYnVmOworICAgIHMgPSBidWY7CisKKyAgICBjb25zdCBjaGFyICpmaXJzdF9pbnZhbGlkX2VzY2FwZTsKKyAgICB2ID0gX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCwgJmZpcnN0X2ludmFsaWRfZXNjYXBlKTsKKworICAgIGlmICh2ICE9IE5VTEwgJiYgZmlyc3RfaW52YWxpZF9lc2NhcGUgIT0gTlVMTCkgeworICAgICAgICBpZiAod2Fybl9pbnZhbGlkX2VzY2FwZV9zZXF1ZW5jZShjLCBuLCAqZmlyc3RfaW52YWxpZF9lc2NhcGUpIDwgMCkgeworICAgICAgICAgICAgLyogV2UgaGF2ZSBub3QgZGVjcmVmIHUgYmVmb3JlIGJlY2F1c2UgZmlyc3RfaW52YWxpZF9lc2NhcGUgcG9pbnRzCisgICAgICAgICAgICAgICBpbnNpZGUgdS4gKi8KKyAgICAgICAgICAgIFB5X1hERUNSRUYodSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KICAgICBQeV9YREVDUkVGKHUpOwogICAgIHJldHVybiB2OwogfQogCi0vKiBzIGlzIGEgUHl0aG9uIHN0cmluZyBsaXRlcmFsLCBpbmNsdWRpbmcgdGhlIGJyYWNrZXRpbmcgcXVvdGUgY2hhcmFjdGVycywKLSAqIGFuZCByICYvb3IgYiBwcmVmaXhlcyAoaWYgYW55KSwgYW5kIGVtYmVkZGVkIGVzY2FwZSBzZXF1ZW5jZXMgKGlmIGFueSkuCi0gKiBwYXJzZXN0ciBwYXJzZXMgaXQsIGFuZCByZXR1cm5zIHRoZSBkZWNvZGVkIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgotICovCiBzdGF0aWMgUHlPYmplY3QgKgotcGFyc2VzdHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpCitkZWNvZGVfYnl0ZXNfd2l0aF9lc2NhcGVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pCit7CisgICAgY29uc3QgY2hhciAqZmlyc3RfaW52YWxpZF9lc2NhcGU7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIE5VTEwsIDAsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3RfaW52YWxpZF9lc2NhcGUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmlyc3RfaW52YWxpZF9lc2NhcGUgIT0gTlVMTCkgeworICAgICAgICBpZiAod2Fybl9pbnZhbGlkX2VzY2FwZV9zZXF1ZW5jZShjLCBuLCAqZmlyc3RfaW52YWxpZF9lc2NhcGUpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBDb21waWxlIHRoaXMgZXhwcmVzc2lvbiBpbiB0byBhbiBleHByX3R5LiAgQWRkIHBhcmVucyBhcm91bmQgdGhlCisgICBleHByZXNzaW9uLCBpbiBvcmRlciB0byBhbGxvdyBsZWFkaW5nIHNwYWNlcyBpbiB0aGUgZXhwcmVzc2lvbi4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX2NvbXBpbGVfZXhwcihjb25zdCBjaGFyICpleHByX3N0YXJ0LCBjb25zdCBjaGFyICpleHByX2VuZCwKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCisKK3sKKyAgICBpbnQgYWxsX3doaXRlc3BhY2UgPSAxOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlDb21waWxlckZsYWdzIGNmOworICAgIG1vZF90eSBtb2Q7CisgICAgY2hhciAqc3RyOworICAgIFB5T2JqZWN0ICpvOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChleHByX2VuZCA+PSBleHByX3N0YXJ0KTsKKyAgICBhc3NlcnQoKihleHByX3N0YXJ0LTEpID09ICd7Jyk7CisgICAgYXNzZXJ0KCpleHByX2VuZCA9PSAnfScgfHwgKmV4cHJfZW5kID09ICchJyB8fCAqZXhwcl9lbmQgPT0gJzonKTsKKworICAgIC8qIFdlIGtub3cgdGhlcmUgYXJlIG5vIGVzY2FwZXMgaGVyZSwgYmVjYXVzZSBiYWNrc2xhc2hlcyBhcmUgbm90IGFsbG93ZWQsCisgICAgICAgYW5kIHdlIGtub3cgaXQncyB1dGYtOCBlbmNvZGVkIChwZXIgUEVQIDI2MykuICBCdXQsIGluIG9yZGVyIHRvIGNoZWNrCisgICAgICAgdGhhdCBlYWNoIGNoYXIgaXMgbm90IHdoaXRlc3BhY2UsIHdlIG5lZWQgdG8gZGVjb2RlIGl0IHRvIHVuaWNvZGUuCisgICAgICAgV2hpY2ggaXMgdW5mb3J0dW5hdGUsIGJ1dCBzdWNoIGlzIGxpZmUuICovCisKKyAgICAvKiBJZiB0aGUgc3Vic3RyaW5nIGlzIGFsbCB3aGl0ZXNwYWNlLCBpdCdzIGFuIGVycm9yLiAgV2UgbmVlZCB0byBjYXRjaAorICAgICAgIHRoaXMgaGVyZSwgYW5kIG5vdCB3aGVuIHdlIGNhbGwgUHlQYXJzZXJfQVNURnJvbVN0cmluZywgYmVjYXVzZSB0dXJuaW5nCisgICAgICAgdGhlIGV4cHJlc3Npb24gJycgaW4gdG8gJygpJyB3b3VsZCBnbyBmcm9tIGJlaW5nIGludmFsaWQgdG8gdmFsaWQuICovCisgICAgLyogTm90ZSB0aGF0IHRoaXMgY29kZSBzYXlzIGFuIGVtcHR5IHN0cmluZyBpcyBhbGwgd2hpdGVzcGFjZS4gIFRoYXQncworICAgICAgIGltcG9ydGFudC4gIFRoZXJlJ3MgYSB0ZXN0IGZvciBpdDogZid7fScuICovCisgICAgbyA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGV4cHJfc3RhcnQsIGV4cHJfZW5kLWV4cHJfc3RhcnQsIE5VTEwpOworICAgIGlmIChvID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG8pOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobyk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkgeworICAgICAgICAgICAgYWxsX3doaXRlc3BhY2UgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKG8pOworICAgIGlmIChhbGxfd2hpdGVzcGFjZSkgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBlbXB0eSBleHByZXNzaW9uIG5vdCBhbGxvd2VkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIFJldXNlIGxlbiB0byBiZSB0aGUgbGVuZ3RoIG9mIHRoZSB1dGYtOCBpbnB1dCBzdHJpbmcuICovCisgICAgbGVuID0gZXhwcl9lbmQgLSBleHByX3N0YXJ0OworICAgIC8qIEFsbG9jYXRlIDMgZXh0cmEgYnl0ZXM6IG9wZW4gcGFyZW4sIGNsb3NlIHBhcmVuLCBudWxsIGJ5dGUuICovCisgICAgc3RyID0gUHlNZW1fUmF3TWFsbG9jKGxlbiArIDMpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHJbMF0gPSAnKCc7CisgICAgbWVtY3B5KHN0cisxLCBleHByX3N0YXJ0LCBsZW4pOworICAgIHN0cltsZW4rMV0gPSAnKSc7CisgICAgc3RyW2xlbisyXSA9IDA7CisKKyAgICBjZi5jZl9mbGFncyA9IFB5Q0ZfT05MWV9BU1Q7CisgICAgbW9kID0gUHlQYXJzZXJfQVNURnJvbVN0cmluZyhzdHIsICI8ZnN0cmluZz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZXZhbF9pbnB1dCwgJmNmLCBjLT5jX2FyZW5hKTsKKyAgICBQeU1lbV9SYXdGcmVlKHN0cik7CisgICAgaWYgKCFtb2QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBtb2QtPnYuRXhwcmVzc2lvbi5ib2R5OworfQorCisvKiBSZXR1cm4gLTEgb24gZXJyb3IuCisKKyAgIFJldHVybiAwIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGl0ZXJhbC4KKworICAgUmV0dXJuIDEgaWYgd2UgaGF2ZW4ndCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxpdGVyYWwsIGJ1dCB3ZSB3YW50CisgICB0aGUgY2FsbGVyIHRvIHByb2Nlc3MgdGhlIGxpdGVyYWwgdXAgdG8gdGhpcyBwb2ludC4gVXNlZCBmb3IKKyAgIGRvdWJsZWQgYnJhY2VzLgorKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9saXRlcmFsKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqbGl0ZXJhbCwgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBHZXQgYW55IGxpdGVyYWwgc3RyaW5nLiBJdCBlbmRzIHdoZW4gd2UgaGl0IGFuIHVuLWRvdWJsZWQgbGVmdAorICAgICAgIGJyYWNlICh3aGljaCBpc24ndCBwYXJ0IG9mIGEgdW5pY29kZSBuYW1lIGVzY2FwZSBzdWNoIGFzCisgICAgICAgIlxOe0VVTEVSIENPTlNUQU5UfSIpLCBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisKKyAgICBjb25zdCBjaGFyICpsaXRlcmFsX3N0YXJ0ID0gKnN0cjsKKyAgICBjb25zdCBjaGFyICpsaXRlcmFsX2VuZDsKKyAgICBpbnQgaW5fbmFtZWRfZXNjYXBlID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKworICAgIGFzc2VydCgqbGl0ZXJhbCA9PSBOVUxMKTsKKyAgICBmb3IgKDsgKnN0ciA8IGVuZDsgKCpzdHIpKyspIHsKKyAgICAgICAgY2hhciBjaCA9ICoqc3RyOworICAgICAgICBpZiAoIWluX25hbWVkX2VzY2FwZSAmJiBjaCA9PSAneycgJiYgKCpzdHIpLWxpdGVyYWxfc3RhcnQgPj0gMiAmJgorICAgICAgICAgICAgKigqc3RyLTIpID09ICdcXCcgJiYgKigqc3RyLTEpID09ICdOJykgeworICAgICAgICAgICAgaW5fbmFtZWRfZXNjYXBlID0gMTsKKyAgICAgICAgfSBlbHNlIGlmIChpbl9uYW1lZF9lc2NhcGUgJiYgY2ggPT0gJ30nKSB7CisgICAgICAgICAgICBpbl9uYW1lZF9lc2NhcGUgPSAwOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICd7JyB8fCBjaCA9PSAnfScpIHsKKyAgICAgICAgICAgIC8qIENoZWNrIGZvciBkb3VibGVkIGJyYWNlcywgYnV0IG9ubHkgYXQgdGhlIHRvcCBsZXZlbC4gSWYKKyAgICAgICAgICAgICAgIHdlIGNoZWNrZWQgYXQgZXZlcnkgbGV2ZWwsIHRoZW4gZid7MDp7M319JyB3b3VsZCBmYWlsCisgICAgICAgICAgICAgICB3aXRoIHRoZSB0d28gY2xvc2luZyBicmFjZXMuICovCisgICAgICAgICAgICBpZiAocmVjdXJzZV9sdmwgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmICgqc3RyKzEgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHRlbGwgdGhlIGNhbGxlciB0aGF0IHRoZSBsaXRlcmFsIGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgaGVyZSwgYnV0IHRoYXQgdGhleSBzaG91bGQgY29udGludWUgc2Nhbm5pbmcuIEJ1dCBhbHNvCisgICAgICAgICAgICAgICAgICAgICAgIHNraXAgb3ZlciB0aGUgc2Vjb25kIGJyYWNlIHdoZW4gd2UgcmVzdW1lIHNjYW5uaW5nLiAqLworICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZCA9ICpzdHIrMTsKKyAgICAgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogV2hlcmUgYSBzaW5nbGUgJ3snIGlzIHRoZSBzdGFydCBvZiBhIG5ldyBleHByZXNzaW9uLCBhCisgICAgICAgICAgICAgICAgICAgc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ30nKSB7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHNpbmdsZSAnfScgaXMgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFdlJ3JlIGVpdGhlciBhdCBhICd7Jywgd2hpY2ggbWVhbnMgd2UncmUgc3RhcnRpbmcgYW5vdGhlcgorICAgICAgICAgICAgICAgZXhwcmVzc2lvbjsgb3IgYSAnfScsIHdoaWNoIG1lYW5zIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhpcworICAgICAgICAgICAgICAgZi1zdHJpbmcgKGZvciBhIG5lc3RlZCBmb3JtYXRfc3BlYykuICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBsaXRlcmFsX2VuZCA9ICpzdHI7CisgICAgYXNzZXJ0KCpzdHIgPD0gZW5kKTsKKyAgICBhc3NlcnQoKnN0ciA9PSBlbmQgfHwgKipzdHIgPT0gJ3snIHx8ICoqc3RyID09ICd9Jyk7Citkb25lOgorICAgIGlmIChsaXRlcmFsX3N0YXJ0ICE9IGxpdGVyYWxfZW5kKSB7CisgICAgICAgIGlmIChyYXcpCisgICAgICAgICAgICAqbGl0ZXJhbCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwobGl0ZXJhbF9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZC1saXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbGl0ZXJhbCA9IGRlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhjLCBuLCBsaXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF9lbmQtbGl0ZXJhbF9zdGFydCk7CisgICAgICAgIGlmICghKmxpdGVyYWwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gYmVjYXVzZSBwYXJzaW5nIGlzIHJlY3Vyc2l2ZS4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX3BhcnNlKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKTsKKworLyogUGFyc2UgdGhlIGYtc3RyaW5nIGF0ICpzdHIsIGVuZGluZyBhdCBlbmQuICBXZSBrbm93ICpzdHIgc3RhcnRzIGFuCisgICBleHByZXNzaW9uIChzbyBpdCBtdXN0IGJlIGEgJ3snKS4gUmV0dXJucyB0aGUgRm9ybWF0dGVkVmFsdWUgbm9kZSwKKyAgIHdoaWNoIGluY2x1ZGVzIHRoZSBleHByZXNzaW9uLCBjb252ZXJzaW9uIGNoYXJhY3RlciwgYW5kCisgICBmb3JtYXRfc3BlYyBleHByZXNzaW9uLgorCisgICBOb3RlIHRoYXQgSSBkb24ndCBkbyBhIHBlcmZlY3Qgam9iIGhlcmU6IEkgZG9uJ3QgbWFrZSBzdXJlIHRoYXQgYQorICAgY2xvc2luZyBicmFjZSBkb2Vzbid0IG1hdGNoIGFuIG9wZW5pbmcgcGFyZW4sIGZvciBleGFtcGxlLiBJdAorICAgZG9lc24ndCBuZWVkIHRvIGVycm9yIG9uIGFsbCBpbnZhbGlkIGV4cHJlc3Npb25zLCBqdXN0IGNvcnJlY3RseQorICAgZmluZCB0aGUgZW5kIG9mIGFsbCB2YWxpZCBvbmVzLiBBbnkgZXJyb3JzIGluc2lkZSB0aGUgZXhwcmVzc2lvbgorICAgd2lsbCBiZSBjYXVnaHQgd2hlbiB3ZSBwYXJzZSBpdCBsYXRlci4gKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9leHByKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgZXhwcl90eSAqZXhwcmVzc2lvbiwgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBSZXR1cm4gLTEgb24gZXJyb3IsIGVsc2UgMC4gKi8KKworICAgIGNvbnN0IGNoYXIgKmV4cHJfc3RhcnQ7CisgICAgY29uc3QgY2hhciAqZXhwcl9lbmQ7CisgICAgZXhwcl90eSBzaW1wbGVfZXhwcmVzc2lvbjsKKyAgICBleHByX3R5IGZvcm1hdF9zcGVjID0gTlVMTDsgLyogT3B0aW9uYWwgZm9ybWF0IHNwZWNpZmllci4gKi8KKyAgICBpbnQgY29udmVyc2lvbiA9IC0xOyAvKiBUaGUgY29udmVyc2lvbiBjaGFyLiAtMSBpZiBub3Qgc3BlY2lmaWVkLiAqLworCisgICAgLyogMCBpZiB3ZSdyZSBub3QgaW4gYSBzdHJpbmcsIGVsc2UgdGhlIHF1b3RlIGNoYXIgd2UncmUgdHJ5aW5nIHRvCisgICAgICAgbWF0Y2ggKHNpbmdsZSBvciBkb3VibGUgcXVvdGUpLiAqLworICAgIGNoYXIgcXVvdGVfY2hhciA9IDA7CisKKyAgICAvKiBJZiB3ZSdyZSBpbnNpZGUgYSBzdHJpbmcsIDE9bm9ybWFsLCAzPXRyaXBsZS1xdW90ZWQuICovCisgICAgaW50IHN0cmluZ190eXBlID0gMDsKKworICAgIC8qIEtlZXAgdHJhY2sgb2YgbmVzdGluZyBsZXZlbCBmb3IgYnJhY2VzL3BhcmVucy9icmFja2V0cyBpbgorICAgICAgIGV4cHJlc3Npb25zLiAqLworICAgIFB5X3NzaXplX3QgbmVzdGVkX2RlcHRoID0gMDsKKworICAgIC8qIENhbiBvbmx5IG5lc3Qgb25lIGxldmVsIGRlZXAuICovCisgICAgaWYgKHJlY3Vyc2VfbHZsID49IDIpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogZXhwcmVzc2lvbnMgbmVzdGVkIHRvbyBkZWVwbHkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIFRoZSBmaXJzdCBjaGFyIG11c3QgYmUgYSBsZWZ0IGJyYWNlLCBvciB3ZSB3b3VsZG4ndCBoYXZlIGdvdHRlbgorICAgICAgIGhlcmUuIFNraXAgb3ZlciBpdC4gKi8KKyAgICBhc3NlcnQoKipzdHIgPT0gJ3snKTsKKyAgICAqc3RyICs9IDE7CisKKyAgICBleHByX3N0YXJ0ID0gKnN0cjsKKyAgICBmb3IgKDsgKnN0ciA8IGVuZDsgKCpzdHIpKyspIHsKKyAgICAgICAgY2hhciBjaDsKKworICAgICAgICAvKiBMb29wIGludmFyaWFudHMuICovCisgICAgICAgIGFzc2VydChuZXN0ZWRfZGVwdGggPj0gMCk7CisgICAgICAgIGFzc2VydCgqc3RyID49IGV4cHJfc3RhcnQgJiYgKnN0ciA8IGVuZCk7CisgICAgICAgIGlmIChxdW90ZV9jaGFyKQorICAgICAgICAgICAgYXNzZXJ0KHN0cmluZ190eXBlID09IDEgfHwgc3RyaW5nX3R5cGUgPT0gMyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChzdHJpbmdfdHlwZSA9PSAwKTsKKworICAgICAgICBjaCA9ICoqc3RyOworICAgICAgICAvKiBOb3doZXJlIGluc2lkZSBhbiBleHByZXNzaW9uIGlzIGEgYmFja3NsYXNoIGFsbG93ZWQuICovCisgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CisgICAgICAgICAgICAvKiBFcnJvcjogY2FuJ3QgaW5jbHVkZSBhIGJhY2tzbGFzaCBjaGFyYWN0ZXIsIGluc2lkZQorICAgICAgICAgICAgICAgcGFyZW5zIG9yIHN0cmluZ3Mgb3Igbm90LiAqLworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgaW5jbHVkZSBhIGJhY2tzbGFzaCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChxdW90ZV9jaGFyKSB7CisgICAgICAgICAgICAvKiBXZSdyZSBpbnNpZGUgYSBzdHJpbmcuIFNlZSBpZiB3ZSdyZSBhdCB0aGUgZW5kLiAqLworICAgICAgICAgICAgLyogVGhpcyBjb2RlIG5lZWRzIHRvIGltcGxlbWVudCB0aGUgc2FtZSBub24tZXJyb3IgbG9naWMKKyAgICAgICAgICAgICAgIGFzIHRva19nZXQgZnJvbSB0b2tlbml6ZXIuYywgYXQgdGhlIGxldHRlcl9xdW90ZQorICAgICAgICAgICAgICAgbGFiZWwuIFRvIGFjdHVhbGx5IHNoYXJlIHRoYXQgY29kZSB3b3VsZCBiZSBhCisgICAgICAgICAgICAgICBuaWdodG1hcmUuIEJ1dCwgaXQncyB1bmxpa2VseSB0byBjaGFuZ2UgYW5kIGlzIHNtYWxsLAorICAgICAgICAgICAgICAgc28gZHVwbGljYXRlIGl0IGhlcmUuIE5vdGUgd2UgZG9uJ3QgbmVlZCB0byBjYXRjaCBhbGwKKyAgICAgICAgICAgICAgIG9mIHRoZSBlcnJvcnMsIHNpbmNlIHRoZXknbGwgYmUgY2F1Z2h0IHdoZW4gcGFyc2luZyB0aGUKKyAgICAgICAgICAgICAgIGV4cHJlc3Npb24uIFdlIGp1c3QgbmVlZCB0byBtYXRjaCB0aGUgbm9uLWVycm9yCisgICAgICAgICAgICAgICBjYXNlcy4gVGh1cyB3ZSBjYW4gaWdub3JlIFxuIGluIHNpbmdsZS1xdW90ZWQgc3RyaW5ncywKKyAgICAgICAgICAgICAgIGZvciBleGFtcGxlLiBPciBub24tdGVybWluYXRlZCBzdHJpbmdzLiAqLworICAgICAgICAgICAgaWYgKGNoID09IHF1b3RlX2NoYXIpIHsKKyAgICAgICAgICAgICAgICAvKiBEb2VzIHRoaXMgbWF0Y2ggdGhlIHN0cmluZ190eXBlIChzaW5nbGUgb3IgdHJpcGxlCisgICAgICAgICAgICAgICAgICAgcXVvdGVkKT8gKi8KKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nX3R5cGUgPT0gMykgeworICAgICAgICAgICAgICAgICAgICBpZiAoKnN0cisyIDwgZW5kICYmICooKnN0cisxKSA9PSBjaCAmJiAqKCpzdHIrMikgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgYSB0cmlwbGUgcXVvdGVkIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX2NoYXIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIGEgbm9ybWFsIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgcXVvdGVfY2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdcJycgfHwgY2ggPT0gJyInKSB7CisgICAgICAgICAgICAvKiBJcyB0aGlzIGEgdHJpcGxlIHF1b3RlZCBzdHJpbmc/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+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKworZXJyb3I6CisgICAgRnN0cmluZ1BhcnNlcl9EZWFsbG9jKHN0YXRlKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogR2l2ZW4gYW4gZi1zdHJpbmcgKHdpdGggbm8gJ2YnIG9yIHF1b3RlcykgdGhhdCdzIGluICpzdHIgYW5kIGVuZHMKKyAgIGF0IGVuZCwgcGFyc2UgaXQgaW50byBhbiBleHByX3R5LiAgUmV0dXJuIE5VTEwgb24gZXJyb3IuICBBZGp1c3QKKyAgIHN0ciB0byBwb2ludCBwYXN0IHRoZSBwYXJzZWQgcG9ydGlvbi4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX3BhcnNlKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIEZzdHJpbmdQYXJzZXIgc3RhdGU7CisKKyAgICBGc3RyaW5nUGFyc2VyX0luaXQoJnN0YXRlKTsKKyAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKCZzdGF0ZSwgc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBuKSA8IDApIHsKKyAgICAgICAgRnN0cmluZ1BhcnNlcl9EZWFsbG9jKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBGc3RyaW5nUGFyc2VyX0ZpbmlzaCgmc3RhdGUsIGMsIG4pOworfQorCisvKiBuIGlzIGEgUHl0aG9uIHN0cmluZyBsaXRlcmFsLCBpbmNsdWRpbmcgdGhlIGJyYWNrZXRpbmcgcXVvdGUKKyAgIGNoYXJhY3RlcnMsIGFuZCByLCBiLCB1LCAmL29yIGYgcHJlZml4ZXMgKGlmIGFueSksIGFuZCBlbWJlZGRlZAorICAgZXNjYXBlIHNlcXVlbmNlcyAoaWYgYW55KS4gcGFyc2VzdHIgcGFyc2VzIGl0LCBhbmQgc2V0cyAqcmVzdWx0IHRvCisgICBkZWNvZGVkIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgSWYgdGhlIHN0cmluZyBpcyBhbiBmLXN0cmluZywgc2V0CisgICAqZnN0ciBhbmQgKmZzdHJsZW4gdG8gdGhlIHVucGFyc2VkIHN0cmluZyBvYmplY3QuICBSZXR1cm4gMCBpZiBubworICAgZXJyb3JzIG9jY3VycmVkLgorKi8KK3N0YXRpYyBpbnQKK3BhcnNlc3RyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlLCBpbnQgKnJhd21vZGUsCisgICAgICAgICBQeU9iamVjdCAqKnJlc3VsdCwgY29uc3QgY2hhciAqKmZzdHIsIFB5X3NzaXplX3QgKmZzdHJsZW4pCiB7CiAgICAgc2l6ZV90IGxlbjsKICAgICBjb25zdCBjaGFyICpzID0gU1RSKG4pOwogICAgIGludCBxdW90ZSA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICBpbnQgcmF3bW9kZSA9IDA7Ci0gICAgaW50IG5lZWRfZW5jb2Rpbmc7CisgICAgaW50IGZtb2RlID0gMDsKKyAgICAqYnl0ZXNtb2RlID0gMDsKKyAgICAqcmF3bW9kZSA9IDA7CisgICAgKnJlc3VsdCA9IE5VTEw7CisgICAgKmZzdHIgPSBOVUxMOwogICAgIGlmIChQeV9JU0FMUEhBKHF1b3RlKSkgewotICAgICAgICB3aGlsZSAoISpieXRlc21vZGUgfHwgIXJhd21vZGUpIHsKKyAgICAgICAgd2hpbGUgKCEqYnl0ZXNtb2RlIHx8ICEqcmF3bW9kZSkgewogICAgICAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKICAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CiAgICAgICAgICAgICAgICAgKmJ5dGVzbW9kZSA9IDE7CkBAIC00MDIyLDExNCArNTA0MywxNzAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICdyJyB8fCBxdW90ZSA9PSAnUicpIHsKICAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICAgICAgcmF3bW9kZSA9IDE7CisgICAgICAgICAgICAgICAgKnJhd21vZGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ2YnIHx8IHF1b3RlID09ICdGJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICBmbW9kZSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoZm1vZGUgJiYgKmJ5dGVzbW9kZSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAocXVvdGUgIT0gJ1wnJyAmJiBxdW90ZSAhPSAnXCInKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICAvKiBTa2lwIHRoZSBsZWFkaW5nIHF1b3RlIGNoYXIuICovCiAgICAgcysrOwogICAgIGxlbiA9IHN0cmxlbihzKTsKICAgICBpZiAobGVuID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG8gcGFyc2UgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHNbLS1sZW5dICE9IHF1b3RlKSB7CisgICAgICAgIC8qIExhc3QgcXVvdGUgY2hhciBtdXN0IG1hdGNoIHRoZSBmaXJzdC4gKi8KICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChsZW4gPj0gNCAmJiBzWzBdID09IHF1b3RlICYmIHNbMV0gPT0gcXVvdGUpIHsKKyAgICAgICAgLyogQSB0cmlwbGUgcXVvdGVkIHN0cmluZy4gV2UndmUgYWxyZWFkeSBza2lwcGVkIG9uZSBxdW90ZSBhdAorICAgICAgICAgICB0aGUgc3RhcnQgYW5kIG9uZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIE5vdyBza2lwIHRoZQorICAgICAgICAgICB0d28gYXQgdGhlIHN0YXJ0LiAqLwogICAgICAgICBzICs9IDI7CiAgICAgICAgIGxlbiAtPSAyOworICAgICAgICAvKiBBbmQgY2hlY2sgdGhhdCB0aGUgbGFzdCB0d28gbWF0Y2guICovCiAgICAgICAgIGlmIChzWy0tbGVuXSAhPSBxdW90ZSB8fCBzWy0tbGVuXSAhPSBxdW90ZSkgewogICAgICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoISpieXRlc21vZGUgJiYgIXJhd21vZGUpIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZV91bmljb2RlKGMsIHMsIGxlbiwgcmF3bW9kZSwgYy0+Y19lbmNvZGluZyk7CisKKyAgICBpZiAoZm1vZGUpIHsKKyAgICAgICAgLyogSnVzdCByZXR1cm4gdGhlIGJ5dGVzLiBUaGUgY2FsbGVyIHdpbGwgcGFyc2UgdGhlIHJlc3VsdGluZworICAgICAgICAgICBzdHJpbmcuICovCisgICAgICAgICpmc3RyID0gczsKKyAgICAgICAgKmZzdHJsZW4gPSBsZW47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIC8qIE5vdCBhbiBmLXN0cmluZy4gKi8KKyAgICAvKiBBdm9pZCBpbnZva2luZyBlc2NhcGUgZGVjb2Rpbmcgcm91dGluZXMgaWYgcG9zc2libGUuICovCisgICAgKnJhd21vZGUgPSAqcmF3bW9kZSB8fCBzdHJjaHIocywgJ1xcJykgPT0gTlVMTDsKICAgICBpZiAoKmJ5dGVzbW9kZSkgewotICAgICAgICAvKiBEaXNhbGxvdyBub24tYXNjaWkgY2hhcmFjdGVycyAoYnV0IG5vdCBlc2NhcGVzKSAqLworICAgICAgICAvKiBEaXNhbGxvdyBub24tQVNDSUkgY2hhcmFjdGVycy4gKi8KICAgICAgICAgY29uc3QgY2hhciAqY2g7CiAgICAgICAgIGZvciAoY2ggPSBzOyAqY2g7IGNoKyspIHsKICAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqY2gpID49IDB4ODApIHsKICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImJ5dGVzIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAibGl0ZXJhbCBjaGFyYWN0ZXJzLiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoKnJhd21vZGUpCisgICAgICAgICAgICAqcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2RlX2J5dGVzX3dpdGhfZXNjYXBlcyhjLCBuLCBzLCBsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgqcmF3bW9kZSkKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIGxlbiwgTlVMTCwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVfdW5pY29kZV93aXRoX2VzY2FwZXMoYywgbiwgcywgbGVuKTsKICAgICB9Ci0gICAgbmVlZF9lbmNvZGluZyA9ICghKmJ5dGVzbW9kZSAmJiBjLT5jX2VuY29kaW5nICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChjLT5jX2VuY29kaW5nLCAidXRmLTgiKSAhPSAwKTsKLSAgICBpZiAocmF3bW9kZSB8fCBzdHJjaHIocywgJ1xcJykgPT0gTlVMTCkgewotICAgICAgICBpZiAobmVlZF9lbmNvZGluZykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYsICp1ID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgbGVuLCBOVUxMKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwgfHwgISpieXRlc21vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHU7Ci0gICAgICAgICAgICB2ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCBjLT5jX2VuY29kaW5nLCBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9IGVsc2UgaWYgKCpieXRlc21vZGUpIHsKLSAgICAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGMtPmNfZW5jb2RpbmcsICJ1dGYtOCIpID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIGxlbiwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRfZW5jb2RpbmcgPyBjLT5jX2VuY29kaW5nIDogTlVMTCk7CisgICAgcmV0dXJuICpyZXN1bHQgPT0gTlVMTCA/IC0xIDogMDsKIH0KIAotLyogQnVpbGQgYSBQeXRob24gc3RyaW5nIG9iamVjdCBvdXQgb2YgYSBTVFJJTkcrIGF0b20uICBUaGlzIHRha2VzIGNhcmUgb2YKLSAqIGNvbXBpbGUtdGltZSBsaXRlcmFsIGNhdGVuYXRpb24sIGNhbGxpbmcgcGFyc2VzdHIoKSBvbiBlYWNoIHBpZWNlLCBhbmQKLSAqIHBhc3RpbmcgdGhlIGludGVybWVkaWF0ZSByZXN1bHRzIHRvZ2V0aGVyLgotICovCi1zdGF0aWMgUHlPYmplY3QgKgotcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKQorLyogQWNjZXB0cyBhIFNUUklORysgYXRvbSwgYW5kIHByb2R1Y2VzIGFuIGV4cHJfdHkgbm9kZS4gUnVuIHRocm91Z2gKKyAgIGVhY2ggU1RSSU5HIGF0b20sIGFuZCBwcm9jZXNzIGl0IGFzIG5lZWRlZC4gRm9yIGJ5dGVzLCBqdXN0CisgICBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGJlIGEgQnl0ZXMgbm9kZS4gRm9yCisgICBub3JtYWwgc3RyaW5ncyBhbmQgZi1zdHJpbmdzLCBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyLiBUaGUgcmVzdWx0CisgICB3aWxsIGJlIGEgU3RyIG5vZGUgaWYgdGhlcmUgd2VyZSBubyBmLXN0cmluZ3M7IGEgRm9ybWF0dGVkVmFsdWUKKyAgIG5vZGUgaWYgdGhlcmUncyBqdXN0IGFuIGYtc3RyaW5nICh3aXRoIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcKKyAgIGxpdGVyYWxzKSwgb3IgYSBKb2luZWRTdHIgbm9kZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZi1zdHJpbmdzIG9yCisgICBhbnkgbGl0ZXJhbHMgaW52b2x2ZWQuICovCitzdGF0aWMgZXhwcl90eQorcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgaW50IGJ5dGVzbW9kZSA9IDA7CisgICAgUHlPYmplY3QgKmJ5dGVzX3N0ciA9IE5VTEw7CiAgICAgaW50IGk7Ci0gICAgUkVRKENISUxEKG4sIDApLCBTVFJJTkcpOwotICAgIHYgPSBwYXJzZXN0cihjLCBDSElMRChuLCAwKSwgYnl0ZXNtb2RlKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIFN0cmluZyBsaXRlcmFsIGNvbmNhdGVuYXRpb24gKi8KLSAgICAgICAgZm9yIChpID0gMTsgaSA8IE5DSChuKTsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqczsKLSAgICAgICAgICAgIGludCBzdWJibSA9IDA7Ci0gICAgICAgICAgICBzID0gcGFyc2VzdHIoYywgQ0hJTEQobiwgaSksICZzdWJibSk7Ci0gICAgICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGlmICgqYnl0ZXNtb2RlICE9IHN1YmJtKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayh2KSAmJiBQeUJ5dGVzX0NoZWNrKHMpKSB7Ci0gICAgICAgICAgICAgICAgUHlCeXRlc19Db25jYXRBbmREZWwoJnYsIHMpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlVbmljb2RlX0NvbmNhdCh2LCBzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIHYgPSB0ZW1wOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgIEZzdHJpbmdQYXJzZXIgc3RhdGU7CisgICAgRnN0cmluZ1BhcnNlcl9Jbml0KCZzdGF0ZSk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpKyspIHsKKyAgICAgICAgaW50IHRoaXNfYnl0ZXNtb2RlOworICAgICAgICBpbnQgdGhpc19yYXdtb2RlOworICAgICAgICBQeU9iamVjdCAqczsKKyAgICAgICAgY29uc3QgY2hhciAqZnN0cjsKKyAgICAgICAgUHlfc3NpemVfdCBmc3RybGVuID0gLTE7ICAvKiBTaWxlbmNlIGEgY29tcGlsZXIgd2FybmluZy4gKi8KKworICAgICAgICBSRVEoQ0hJTEQobiwgaSksIFNUUklORyk7CisgICAgICAgIGlmIChwYXJzZXN0cihjLCBDSElMRChuLCBpKSwgJnRoaXNfYnl0ZXNtb2RlLCAmdGhpc19yYXdtb2RlLCAmcywKKyAgICAgICAgICAgICAgICAgICAgICZmc3RyLCAmZnN0cmxlbikgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgLyogQ2hlY2sgdGhhdCB3ZSdyZSBub3QgbWl4aW5nIGJ5dGVzIHdpdGggdW5pY29kZS4gKi8KKyAgICAgICAgaWYgKGkgIT0gMCAmJiBieXRlc21vZGUgIT0gdGhpc19ieXRlc21vZGUpIHsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKKyAgICAgICAgICAgIC8qIHMgaXMgTlVMTCBpZiB0aGUgY3VycmVudCBzdHJpbmcgcGFydCBpcyBhbiBmLXN0cmluZy4gKi8KKyAgICAgICAgICAgIFB5X1hERUNSRUYocyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGJ5dGVzbW9kZSA9IHRoaXNfYnl0ZXNtb2RlOworCisgICAgICAgIGlmIChmc3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnQocyA9PSBOVUxMICYmICFieXRlc21vZGUpOworICAgICAgICAgICAgLyogVGhpcyBpcyBhbiBmLXN0cmluZy4gUGFyc2UgYW5kIGNvbmNhdGVuYXRlIGl0LiAqLworICAgICAgICAgICAgcmVzdWx0ID0gRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKCZzdGF0ZSwgJmZzdHIsIGZzdHIrZnN0cmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX3Jhd21vZGUsIDAsIGMsIG4pOworICAgICAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIEEgc3RyaW5nIG9yIGJ5dGUgc3RyaW5nLiAqLworICAgICAgICAgICAgYXNzZXJ0KHMgIT0gTlVMTCAmJiBmc3RyID09IE5VTEwpOworCisgICAgICAgICAgICBhc3NlcnQoYnl0ZXNtb2RlID8gUHlCeXRlc19DaGVja0V4YWN0KHMpIDoKKyAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzKSk7CisKKyAgICAgICAgICAgIGlmIChieXRlc21vZGUpIHsKKyAgICAgICAgICAgICAgICAvKiBGb3IgYnl0ZXMsIGNvbmNhdCBhcyB3ZSBnby4gKi8KKyAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZpcnN0IHRpbWUsIGp1c3QgcmVtZW1iZXIgdGhpcyB2YWx1ZS4gKi8KKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfc3RyID0gczsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdEFuZERlbCgmYnl0ZXNfc3RyLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFieXRlc19zdHIpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogVGhpcyBpcyBhIHJlZ3VsYXIgc3RyaW5nLiBDb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoJnN0YXRlLCBzKSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHY7CisgICAgaWYgKGJ5dGVzbW9kZSkgeworICAgICAgICAvKiBKdXN0IHJldHVybiB0aGUgYnl0ZXMgb2JqZWN0IGFuZCB3ZSdyZSBkb25lLiAqLworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBieXRlc19zdHIpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIHJldHVybiBCeXRlcyhieXRlc19zdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICB9CiAKLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIC8qIFdlJ3JlIG5vdCBhIGJ5dGVzIHN0cmluZywgYnl0ZXNfc3RyIHNob3VsZCBuZXZlciBoYXZlIGJlZW4gc2V0LiAqLworICAgIGFzc2VydChieXRlc19zdHIgPT0gTlVMTCk7CisKKyAgICByZXR1cm4gRnN0cmluZ1BhcnNlcl9GaW5pc2goJnN0YXRlLCBjLCBuKTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihieXRlc19zdHIpOworICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYygmc3RhdGUpOwogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2JsdGlubW9kdWxlLmMgYi9QeXRob24vYmx0aW5tb2R1bGUuYwppbmRleCA5ZjVkYjJhLi5jZWUwMTNmIDEwMDY0NAotLS0gYS9QeXRob24vYmx0aW5tb2R1bGUuYworKysgYi9QeXRob24vYmx0aW5tb2R1bGUuYwpAQCAtMjEsMTYgKzIxLDE4IEBACiAgICBEb24ndCBmb3JnZXQgdG8gbW9kaWZ5IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpZiB5b3UgdG91Y2ggYW55IG9mIHRoZQogICAgdmFsdWVzIGZvciBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIQogKi8KLSNpZmRlZiBIQVZFX01CQ1MKLWNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCitjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQorI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKQorLyogbWF5IGJlIGNoYW5nZWQgYnkgaW5pdGZzZW5jb2RpbmcoKSwgYnV0IHNob3VsZCBuZXZlciBiZSBmcmVlKClkICovCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gInV0Zi04IjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbHNlCiBjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gTlVMTDsgLyogc2V0IGJ5IGluaXRmc2VuY29kaW5nKCkgKi8KIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMDsKICNlbmRpZgorY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAic3Vycm9nYXRlZXNjYXBlIjsKIAogX1B5X0lERU5USUZJRVIoX19idWlsdGluc19fKTsKIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKQEAgLTUyLDcgKzU0LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX19fYnVpbGRfY2xhc3NfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqbmFtZSwgKmJhc2VzLCAqbWt3LCAqbWV0YSwgKndpbm5lciwgKnByZXAsICpucywgKmNlbGw7CisgICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqbm9uZTsKICAgICBQeU9iamVjdCAqY2xzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IG5hcmdzOwogICAgIGludCBpc2NsYXNzID0gMDsgICAvKiBpbml0aWFsaXplIHRvIHByZXZlbnQgZ2NjIHdhcm5pbmcgKi8KQEAgLTE1NSwxNiArMTU3LDggQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG5hbWUsIGJhc2VzKTsKLSAgICAgICAgaWYgKHBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobWt3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBucyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKHByZXAsIHBhcmdzLCBta3cpOwotICAgICAgICBQeV9ERUNSRUYocGFyZ3MpOworICAgICAgICBQeU9iamVjdCAqcGFyZ3NbMl0gPSB7bmFtZSwgYmFzZXN9OworICAgICAgICBucyA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QocHJlcCwgcGFyZ3MsIDIsIG1rdyk7CiAgICAgICAgIFB5X0RFQ1JFRihwcmVwKTsKICAgICB9CiAgICAgaWYgKG5zID09IE5VTEwpIHsKQEAgLTE3MywxOSArMTY3LDEzIEBACiAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjZWxsID0gUHlFdmFsX0V2YWxDb2RlRXgoUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSwgUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKSwgbnMsCisgICAgbm9uZSA9IFB5RXZhbF9FdmFsQ29kZUV4KFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyksIFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyksIG5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpKTsKLSAgICBpZiAoY2VsbCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICptYXJnczsKLSAgICAgICAgbWFyZ3MgPSBQeVR1cGxlX1BhY2soMywgbmFtZSwgYmFzZXMsIG5zKTsKLSAgICAgICAgaWYgKG1hcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGNscyA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKG1ldGEsIG1hcmdzLCBta3cpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1hcmdzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2xzICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKQotICAgICAgICAgICAgUHlDZWxsX1NldChjZWxsLCBjbHMpOwotICAgICAgICBQeV9ERUNSRUYoY2VsbCk7CisgICAgaWYgKG5vbmUgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbWFyZ3NbM10gPSB7bmFtZSwgYmFzZXMsIG5zfTsKKyAgICAgICAgY2xzID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChtZXRhLCBtYXJncywgMywgbWt3KTsKKyAgICAgICAgUHlfREVDUkVGKG5vbmUpOwogICAgIH0KICAgICBQeV9ERUNSRUYobnMpOwogICAgIFB5X0RFQ1JFRihtZXRhKTsKQEAgLTMzMSw3ICszMTksNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjbXAgPT0gMSkgeworICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICB9CkBAIC00NjksNiArNDU3LDcgQEAKICAgICBQeU9iamVjdCAqaXQgPSBsei0+aXQ7CiAgICAgbG9uZyBvazsKICAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgaW50IGNoZWNrdHJ1ZSA9IGx6LT5mdW5jID09IFB5X05vbmUgfHwgbHotPmZ1bmMgPT0gKFB5T2JqZWN0ICopJlB5Qm9vbF9UeXBlOwogCiAgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OwogICAgIGZvciAoOzspIHsKQEAgLTQ3NiwxMiArNDY1LDExIEBACiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAobHotPmZ1bmMgPT0gUHlfTm9uZSB8fCBsei0+ZnVuYyA9PSAoUHlPYmplY3QgKikmUHlCb29sX1R5cGUpIHsKKyAgICAgICAgaWYgKGNoZWNrdHJ1ZSkgewogICAgICAgICAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqZ29vZDsKLSAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSwgTlVMTCk7CisgICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywgaXRlbSwgTlVMTCk7CiAgICAgICAgICAgICBpZiAoZ29vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTE2OCwyNiArMTE1Niw0MyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1hcF9uZXh0KG1hcG9iamVjdCAqbHopCiB7Ci0gICAgUHlPYmplY3QgKnZhbDsKLSAgICBQeU9iamVjdCAqYXJndHVwbGU7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9zc2l6ZV90IG51bWFyZ3MsIGk7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuaXRlcnMsIG5hcmdzLCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgbnVtYXJncyA9IFB5VHVwbGVfU2l6ZShsei0+aXRlcnMpOwotICAgIGFyZ3R1cGxlID0gUHlUdXBsZV9OZXcobnVtYXJncyk7Ci0gICAgaWYgKGFyZ3R1cGxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yIChpPTAgOyBpPG51bWFyZ3MgOyBpKyspIHsKLSAgICAgICAgdmFsID0gUHlJdGVyX05leHQoUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpKTsKLSAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworICAgIG5pdGVycyA9IFB5VHVwbGVfR0VUX1NJWkUobHotPml0ZXJzKTsKKyAgICBpZiAobml0ZXJzIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjaykpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKG5pdGVycyAqIHNpemVvZihzdGFja1swXSkpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJndHVwbGUsIGksIHZhbCk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwobHotPmZ1bmMsIGFyZ3R1cGxlLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJndHVwbGUpOworCisgICAgbmFyZ3MgPSAwOworICAgIGZvciAoaT0wOyBpIDwgbml0ZXJzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ID0gUHlUdXBsZV9HRVRfSVRFTShsei0+aXRlcnMsIGkpOworICAgICAgICBQeU9iamVjdCAqdmFsID0gUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0KGl0KTsKKyAgICAgICAgaWYgKHZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgc3RhY2tbaV0gPSB2YWw7CisgICAgICAgIG5hcmdzKys7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGx6LT5mdW5jLCBzdGFjaywgbmFyZ3MpOworCitleGl0OgorICAgIGZvciAoaT0wOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9ERUNSRUYoc3RhY2tbaV0pOworICAgIH0KKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE3NzksNyArMTc4NCw3IEBACiAgICAgICAgIGlmIChkb19mbHVzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBlbHNlIGlmIChkb19mbHVzaCkgewotICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBlbHNlCkBAIC0xODQ1LDcgKzE4NTAsNyBAQAogICAgIH0KIAogICAgIC8qIEZpcnN0IG9mIGFsbCwgZmx1c2ggc3RkZXJyICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xODU0LDcgKzE4NTksNyBAQAogICAgIC8qIFdlIHNob3VsZCBvbmx5IHVzZSAoR05VKSByZWFkbGluZSBpZiBQeXRob24ncyBzeXMuc3RkaW4gYW5kCiAgICAgICAgc3lzLnN0ZG91dCBhcmUgdGhlIHNhbWUgYXMgQydzIHN0ZGluIGFuZCBzdGRvdXQsIGJlY2F1c2Ugd2UKICAgICAgICBuZWVkIHRvIHBhc3MgaXQgdGhvc2UuICovCi0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaW4sICZQeUlkX2ZpbGVubywgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB0dHkgPSAwOwpAQCAtMTg2Nyw3ICsxODcyLDcgQEAKICAgICAgICAgdHR5ID0gZmQgPT0gZmlsZW5vKHN0ZGluKSAmJiBpc2F0dHkoZmQpOwogICAgIH0KICAgICBpZiAodHR5KSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgdHR5ID0gMDsKQEAgLTE5MDIsNyArMTkwNyw3IEBACiAgICAgICAgIHN0ZGluX2Vycm9yc19zdHIgPSBfUHlVbmljb2RlX0FzU3RyaW5nKHN0ZGluX2Vycm9ycyk7CiAgICAgICAgIGlmICghc3RkaW5fZW5jb2Rpbmdfc3RyIHx8ICFzdGRpbl9lcnJvcnNfc3RyKQogICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCkBAIC0xOTI5LDkgKzE5MzQsOCBAQAogICAgICAgICAgICAgUHlfQ0xFQVIoc3RyaW5ncG8pOwogICAgICAgICAgICAgaWYgKHBvID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwotICAgICAgICAgICAgcHJvbXB0c3RyID0gUHlCeXRlc19Bc1N0cmluZyhwbyk7Ci0gICAgICAgICAgICBpZiAocHJvbXB0c3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOworICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socG8pKTsKKyAgICAgICAgICAgIHByb21wdHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBvKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBvID0gTlVMTDsKQEAgLTE5ODMsNyArMTk4Nyw3IEBACiAgICAgICAgIGlmIChQeUZpbGVfV3JpdGVPYmplY3QocHJvbXB0LCBmb3V0LCBQeV9QUklOVF9SQVcpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0yMDg3LDEwICsyMDkxLDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9zb3J0ZWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqbmV3bGlzdCwgKnYsICpzZXEsICprZXlmdW5jPU5VTEwsICpuZXdhcmdzOworICAgIFB5T2JqZWN0ICpuZXdsaXN0LCAqdiwgKnNlcSwgKmtleWZ1bmM9TlVMTCwgKipuZXdhcmdzOwogICAgIFB5T2JqZWN0ICpjYWxsYWJsZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgImtleSIsICJyZXZlcnNlIiwgMH07CiAgICAgaW50IHJldmVyc2U7CisgICAgUHlfc3NpemVfdCBuYXJnczsKIAogICAgIC8qIGFyZ3MgMS0zIHNob3VsZCBtYXRjaCBsaXN0c29ydCBpbiBPYmplY3RzL2xpc3RvYmplY3QuYyAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9pOnNvcnRlZCIsCkBAIC0yMTA3LDE1ICsyMTEyLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbmV3YXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgNCk7Ci0gICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYobmV3bGlzdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHYgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgbmV3YXJncyA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKSAtIDE7CisgICAgdiA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoY2FsbGFibGUsIG5ld2FyZ3MsIG5hcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwpAQCAtMjcxMCwxMCArMjcwOSwxMCBAQAogICAgIFNFVEJVSUxUSU4oInppcCIsICAgICAgICAgICAgICAgICAgICZQeVppcF9UeXBlKTsKICAgICBkZWJ1ZyA9IFB5Qm9vbF9Gcm9tTG9uZyhQeV9PcHRpbWl6ZUZsYWcgPT0gMCk7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX2RlYnVnX18iLCBkZWJ1ZykgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoZGVidWcpOworICAgICAgICBQeV9ERUNSRUYoZGVidWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihkZWJ1Zyk7CisgICAgUHlfREVDUkVGKGRlYnVnKTsKIAogICAgIHJldHVybiBtb2Q7CiAjdW5kZWYgQUREX1RPX0FMTApkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCA3YjQwNTE4Li42YmRjOTk4IDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTUsODcgKzE1LDEyIEBACiAjaW5jbHVkZSAiZGljdG9iamVjdC5oIgogI2luY2x1ZGUgImZyYW1lb2JqZWN0LmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAicHlkdHJhY2UuaCIKICNpbmNsdWRlICJzZXRvYmplY3QuaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKLSNpZm5kZWYgV0lUSF9UU0MKLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YXIpCi0KLSNlbHNlCi0KLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVpbnQ2NDsKLQotLyogUG93ZXJQQyBzdXBwb3J0LgotICAgIl9fcHBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIHByZXByb2Nlc3NvciBkZWZpbml0aW9uIHRvIGRldGVjdCBvbiBPUyBYLCB3aGVyZWFzCi0gICAiX19wb3dlcnBjX18iIGFwcGVhcnMgdG8gYmUgdGhlIGNvcnJlY3Qgb25lIGZvciBMaW51eCB3aXRoIEdDQwotKi8KLSNpZiBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQgKF9fcG93ZXJwY19fKQotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhcikgcHBjX2dldGNvdW50ZXIoJnZhcikKLQotc3RhdGljIHZvaWQKLXBwY19nZXRjb3VudGVyKHVpbnQ2NCAqdikKLXsKLSAgICB1bnNpZ25lZCBsb25nIHRidSwgdGIsIHRidTI7Ci0KLSAgbG9vcDoKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRidSAlMCIgOiAiPXIiICh0YnUpICk7Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YiAgJTAiIDogIj1yIiAodGIpICApOwotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGJ1ICUwIiA6ICI9ciIgKHRidTIpKTsKLSAgICBpZiAoX19idWlsdGluX2V4cGVjdCh0YnUgIT0gdGJ1MiwgMCkpIGdvdG8gbG9vcDsKLQotICAgIC8qIFRoZSBzbGlnaHRseSBwZWN1bGlhciB3YXkgb2Ygd3JpdGluZyB0aGUgbmV4dCBsaW5lcyBpcwotICAgICAgIGNvbXBpbGVkIGJldHRlciBieSBHQ0MgdGhhbiBhbnkgb3RoZXIgd2F5IEkgdHJpZWQuICovCi0gICAgKChsb25nKikodikpWzBdID0gdGJ1OwotICAgICgobG9uZyopKHYpKVsxXSA9IHRiOwotfQotCi0jZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQotCi0vKiB0aGlzIGlzIGZvciBsaW51eC94ODYgKGFuZCBwcm9iYWJseSBhbnkgb3RoZXIgR0NDL3g4NiBjb21ibykgKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIFwKLSAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9QSIgKHZhbCkpCi0KLSNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKLQotLyogZm9yIGdjYy94ODZfNjQsIHRoZSAiQSIgY29uc3RyYWludCBpbiBESSBtb2RlIG1lYW5zICplaXRoZXIqIHJheCAqb3IqIHJkeDsKLSAgIG5vdCBlZHg6ZWF4IGFzIGl0IGRvZXMgZm9yIGkzODYuICBTaW5jZSByZHRzYyBwdXRzIGl0cyByZXN1bHQgaW4gZWR4OmVheAotICAgZXZlbiBpbiA2NC1iaXQgbW9kZSwgd2UgbmVlZCB0byB1c2UgImEiIGFuZCAiZCIgZm9yIHRoZSBsb3dlciBhbmQgdXBwZXIKLSAgIDMyLWJpdCBwaWVjZXMgb2YgdGhlIHJlc3VsdC4gKi8KLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YWwpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdW5zaWduZWQgaW50IGgsIGw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1hIiAobCksICI9ZCIgKGgpKTsgXAotICAgICh2YWwpID0gKCh1aW50NjQpbCkgfCAoKCh1aW50NjQpaCkgPDwgMzIpOyAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0KLSNlbHNlCi0KLSNlcnJvciAiRG9uJ3Qga25vdyBob3cgdG8gaW1wbGVtZW50IHRpbWVzdGFtcCBjb3VudGVyIGZvciB0aGlzIGFyY2hpdGVjdHVyZSIKLQotI2VuZGlmCi0KLXZvaWQgZHVtcF90c2MoaW50IG9wY29kZSwgaW50IHRpY2tlZCwgdWludDY0IGluc3QwLCB1aW50NjQgaW5zdDEsCi0gICAgICAgICAgICAgIHVpbnQ2NCBsb29wMCwgdWludDY0IGxvb3AxLCB1aW50NjQgaW50cjAsIHVpbnQ2NCBpbnRyMSkKLXsKLSAgICB1aW50NjQgaW50ciwgaW5zdCwgbG9vcDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotICAgIGlmICghdHN0YXRlLT5pbnRlcnAtPnRzY2R1bXApCi0gICAgICAgIHJldHVybjsKLSAgICBpbnRyID0gaW50cjEgLSBpbnRyMDsKLSAgICBpbnN0ID0gaW5zdDEgLSBpbnN0MCAtIGludHI7Ci0gICAgbG9vcCA9IGxvb3AxIC0gbG9vcDAgLSBpbnRyOwotICAgIGZwcmludGYoc3RkZXJyLCAib3Bjb2RlPSUwM2QgdD0lZCBpbnN0PSUwNmxsZCBsb29wPSUwNmxsZFxuIiwKLSAgICAgICAgICAgIG9wY29kZSwgdGlja2VkLCBpbnN0LCBsb29wKTsKLX0KLQotI2VuZGlmCi0KIC8qIFR1cm4gdGhpcyBvbiBpZiB5b3VyIGNvbXBpbGVyIGNob2tlcyBvbiB0aGUgYmlnIHN3aXRjaDogKi8KIC8qICNkZWZpbmUgQ0FTRV9UT09fQklHIDEgKi8KIApAQCAtMTA4LDI0ICszMywxMyBAQAogdHlwZWRlZiBQeU9iamVjdCAqKCpjYWxscHJvYykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCi0jaWZkZWYgV0lUSF9UU0MKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQsIHVpbnQ2NCosIHVpbnQ2NCopOwotI2Vsc2UKLXN0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBpbnQpOwotI2VuZGlmCi1zdGF0aWMgUHlPYmplY3QgKiBmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogZXh0X2RvX2NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKioqLCBpbnQsIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIHVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKiwgaW50LCBQeU9iamVjdCAqKiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwotc3RhdGljIFB5T2JqZWN0ICogdXBkYXRlX3N0YXJfYXJncyhpbnQsIGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKioqKTsKLXN0YXRpYyBQeU9iamVjdCAqIGxvYWRfYXJncyhQeU9iamVjdCAqKiosIGludCk7Ci0jZGVmaW5lIENBTExfRkxBR19WQVIgMQotI2RlZmluZSBDQUxMX0ZMQUdfS1cgMgorc3RhdGljIFB5T2JqZWN0ICogY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKiosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqLCBQeU9iamVjdCAqKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiBkb19jYWxsX2NvcmUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50IGxsdHJhY2U7Ci1zdGF0aWMgaW50IHBydHJhY2UoUHlPYmplY3QgKiwgY2hhciAqKTsKK3N0YXRpYyBpbnQgcHJ0cmFjZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogI2VuZGlmCiBzdGF0aWMgaW50IGNhbGxfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqLApAQCAtMTM3LDE0ICs1MSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOwogc3RhdGljIGludCBtYXliZV9jYWxsX2xpbmVfdHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICosIGludCAqLCBpbnQgKiwgaW50ICopOworc3RhdGljIHZvaWQgbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqLCBpbnQgKiwgaW50ICosIGludCAqKTsKK3N0YXRpYyB2b2lkIGR0cmFjZV9mdW5jdGlvbl9lbnRyeShQeUZyYW1lT2JqZWN0ICopOworc3RhdGljIHZvaWQgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihQeUZyYW1lT2JqZWN0ICopOwogCiBzdGF0aWMgUHlPYmplY3QgKiBjbXBfb3V0Y29tZShpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBQeU9iamVjdCAqIGltcG9ydF9mcm9tKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBpbXBvcnRfYWxsX2Zyb20oUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y191bmJvdW5kKFB5Q29kZU9iamVjdCAqY28sIGludCBvcGFyZyk7CiBzdGF0aWMgUHlPYmplY3QgKiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgdW5zaWduZWQgY2hhciAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqLCBjb25zdCBfUHlfQ09ERVVOSVQgKik7CiBzdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBfUHlfSWRlbnRpZmllciAqKTsKIAogI2RlZmluZSBOQU1FX0VSUk9SX01TRyBcCkBAIC03OTYsMTEgKzcxNCwxOCBAQAogUHlPYmplY3QgKgogUHlFdmFsX0V2YWxGcmFtZUV4KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCiB7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5pbnRlcnAtPmV2YWxfZnJhbWUoZiwgdGhyb3dmbGFnKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCit7CiAjaWZkZWYgRFhQQUlSUwogICAgIGludCBsYXN0b3Bjb2RlID0gMDsKICNlbmRpZgogICAgIFB5T2JqZWN0ICoqc3RhY2tfcG9pbnRlcjsgIC8qIE5leHQgZnJlZSBzbG90IGluIHZhbHVlIHN0YWNrICovCi0gICAgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cjsKKyAgICBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHI7CiAgICAgaW50IG9wY29kZTsgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlICovCiAgICAgaW50IG9wYXJnOyAgICAgICAgIC8qIEN1cnJlbnQgb3Bjb2RlIGFyZ3VtZW50LCBpZiBhbnkgKi8KICAgICBlbnVtIHdoeV9jb2RlIHdoeTsgLyogUmVhc29uIGZvciBibG9jayBzdGFjayB1bndpbmQgKi8KQEAgLTgxOCw3ICs3NDMsNyBAQAogICAgICAgIHRpbWUgaXQgaXMgdGVzdGVkLiAqLwogICAgIGludCBpbnN0cl91YiA9IC0xLCBpbnN0cl9sYiA9IDAsIGluc3RyX3ByZXYgPSAtMTsKIAotICAgIHVuc2lnbmVkIGNoYXIgKmZpcnN0X2luc3RyOworICAgIGNvbnN0IF9QeV9DT0RFVU5JVCAqZmlyc3RfaW5zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwogICAgIFB5T2JqZWN0ICpjb25zdHM7CiAKQEAgLTg4NiwyNCArODExLDEwIEBACiAvKiBJbXBvcnQgdGhlIHN0YXRpYyBqdW1wIHRhYmxlICovCiAjaW5jbHVkZSAib3Bjb2RlX3RhcmdldHMuaCIKIAotLyogVGhpcyBtYWNybyBpcyB1c2VkIHdoZW4gc2V2ZXJhbCBvcGNvZGVzIGRlZmVyIHRvIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uCi0gICAoZS5nLiBTRVRVUF9MT09QLCBTRVRVUF9GSU5BTExZKSAqLwotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAotICAgIGNhc2Ugb3A6IFwKLSAgICAgICAgZ290byBpbXBsOyBcCi0KICNkZWZpbmUgVEFSR0VUKG9wKSBcCiAgICAgVEFSR0VUXyMjb3A6IFwKLSAgICAgICAgb3Bjb2RlID0gb3A7IFwKLSAgICAgICAgaWYgKEhBU19BUkcob3ApKSBcCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsgXAogICAgIGNhc2Ugb3A6CiAKLQogI2RlZmluZSBESVNQQVRDSCgpIFwKICAgICB7IFwKICAgICAgICAgaWYgKCFfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZXZhbF9icmVha2VyKSkgeyAgICAgIFwKQEAgLTkxNSwxOCArODI2LDIwIEBACiAjaWZkZWYgTExUUkFDRQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIWxsdHJhY2UgJiYgIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CiAjZWxzZQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgXAogICAgIHsgXAotICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUpIHsgXAorICAgICAgICBpZiAoIV9QeV9UcmFjaW5nUG9zc2libGUgJiYgIVB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKSB7IFwKICAgICAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsgXAotICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbKm5leHRfaW5zdHIrK107IFwKKyAgICAgICAgICAgIE5FWFRPUEFSRygpOyBcCisgICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1tvcGNvZGVdOyBcCiAgICAgICAgIH0gXAogICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7IFwKICAgICB9CkBAIC05MzUsMTAgKzg0OCw3IEBACiAjZWxzZQogI2RlZmluZSBUQVJHRVQob3ApIFwKICAgICBjYXNlIG9wOgotI2RlZmluZSBUQVJHRVRfV0lUSF9JTVBMKG9wLCBpbXBsKSBcCi0gICAgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyBhYm91dCBgaW1wbGAgdW51c2VkICovIFwKLSAgICBpZiAoMCkgZ290byBpbXBsOyBcCi0gICAgY2FzZSBvcDoKKwogI2RlZmluZSBESVNQQVRDSCgpIGNvbnRpbnVlCiAjZGVmaW5lIEZBU1RfRElTUEFUQ0goKSBnb3RvIGZhc3RfbmV4dF9vcGNvZGUKICNlbmRpZgpAQCAtOTUyLDcwICs4NjIsMzMgQEAKICNkZWZpbmUgR0VUSVRFTSh2LCBpKSBQeVR1cGxlX0dldEl0ZW0oKHYpLCAoaSkpCiAjZW5kaWYKIAotI2lmZGVmIFdJVEhfVFNDCi0vKiBVc2UgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciB0byBtYXJrIGNlcnRhaW4gZXZlbnRzOgotICAgaW5zdDAgLS0gYmVnaW5uaW5nIG9mIHN3aXRjaCBzdGF0ZW1lbnQgZm9yIG9wY29kZSBkaXNwYXRjaAotICAgaW5zdDEgLS0gZW5kIG9mIHN3aXRjaCBzdGF0ZW1lbnQgKG1heSBiZSBza2lwcGVkKQotICAgbG9vcDAgLS0gdGhlIHRvcCBvZiB0aGUgbWFpbmxvb3AKLSAgIGxvb3AxIC0tIHBsYWNlIHdoZXJlIGNvbnRyb2wgcmV0dXJucyBhZ2FpbiB0byB0b3Agb2YgbWFpbmxvb3AKLSAgICAgICAgICAgIChtYXkgYmUgc2tpcHBlZCkKLSAgIGludHIxIC0tIGJlZ2lubmluZyBvZiBsb25nIGludGVycnVwdGlvbgotICAgaW50cjIgLS0gZW5kIG9mIGxvbmcgaW50ZXJydXB0aW9uCi0KLSAgIE1hbnkgb3Bjb2RlcyBjYWxsIG91dCB0byBoZWxwZXIgQyBmdW5jdGlvbnMuICBJbiBzb21lIGNhc2VzLCB0aGUKLSAgIHRpbWUgaW4gdGhvc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBjb3VudGVkIHRvd2FyZHMgdGhlIHRpbWUgZm9yIHRoZQotICAgb3Bjb2RlLCBidXQgbm90IGluIGFsbCBjYXNlcy4gIEZvciBleGFtcGxlLCBhIENBTExfRlVOQ1RJT04gb3Bjb2RlCi0gICBjYWxscyBhbm90aGVyIFB5dGhvbiBmdW5jdGlvbjsgdGhlcmUncyBubyBwb2ludCBpbiBjaGFyZ2UgYWxsIHRoZQotICAgYnl0ZWNvZGUgZXhlY3V0ZWQgYnkgdGhlIGNhbGxlZCBmdW5jdGlvbiB0byB0aGUgY2FsbGVyLgotCi0gICBJdCdzIGhhcmQgdG8gbWFrZSBhIHVzZWZ1bCBqdWRnZW1lbnQgc3RhdGljYWxseS4gIEluIHRoZSBwcmVzZW5jZQotICAgb2Ygb3BlcmF0b3Igb3ZlcmxvYWRpbmcsIGl0J3MgaW1wb3NzaWJsZSB0byB0ZWxsIGlmIGEgY2FsbCB3aWxsCi0gICBleGVjdXRlIG5ldyBQeXRob24gY29kZSBvciBub3QuCi0KLSAgIEl0J3MgYSBjYXNlLWJ5LWNhc2UganVkZ2VtZW50LiAgSSdsbCB1c2UgaW50cjEgZm9yIHRoZSBmb2xsb3dpbmcKLSAgIGNhc2VzOgotCi0gICBJTVBPUlRfU1RBUgotICAgSU1QT1JUX0ZST00KLSAgIENBTExfRlVOQ1RJT04gKGFuZCBmcmllbmRzKQotCi0gKi8KLSAgICB1aW50NjQgaW5zdDAsIGluc3QxLCBsb29wMCwgbG9vcDEsIGludHIwID0gMCwgaW50cjEgPSAwOwotICAgIGludCB0aWNrZWQgPSAwOwotCi0gICAgUkVBRF9USU1FU1RBTVAoaW5zdDApOwotICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0gICAgUkVBRF9USU1FU1RBTVAobG9vcDEpOwotCi0gICAgLyogc2h1dCB1cCB0aGUgY29tcGlsZXIgKi8KLSAgICBvcGNvZGUgPSAwOwotI2VuZGlmCi0KIC8qIENvZGUgYWNjZXNzIG1hY3JvcyAqLwogCi0jZGVmaW5lIElOU1RSX09GRlNFVCgpICAoKGludCkobmV4dF9pbnN0ciAtIGZpcnN0X2luc3RyKSkKLSNkZWZpbmUgTkVYVE9QKCkgICAgICAgICgqbmV4dF9pbnN0cisrKQotI2RlZmluZSBORVhUQVJHKCkgICAgICAgKG5leHRfaW5zdHIgKz0gMiwgKG5leHRfaW5zdHJbLTFdPDw4KSArIG5leHRfaW5zdHJbLTJdKQotI2RlZmluZSBQRUVLQVJHKCkgICAgICAgKChuZXh0X2luc3RyWzJdPDw4KSArIG5leHRfaW5zdHJbMV0pCi0jZGVmaW5lIEpVTVBUTyh4KSAgICAgICAobmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgKHgpKQotI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpKQorLyogVGhlIGludGVnZXIgb3ZlcmZsb3cgaXMgY2hlY2tlZCBieSBhbiBhc3NlcnRpb24gYmVsb3cuICovCisjZGVmaW5lIElOU1RSX09GRlNFVCgpICAoc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKiAoaW50KShuZXh0X2luc3RyIC0gZmlyc3RfaW5zdHIpKQorI2RlZmluZSBORVhUT1BBUkcoKSAgZG8geyBcCisgICAgICAgIF9QeV9DT0RFVU5JVCB3b3JkID0gKm5leHRfaW5zdHI7IFwKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERSh3b3JkKTsgXAorICAgICAgICBvcGFyZyA9IF9QeV9PUEFSRyh3b3JkKTsgXAorICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBKVU1QVE8oeCkgICAgICAgKG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArICh4KSAvIHNpemVvZihfUHlfQ09ERVVOSVQpKQorI2RlZmluZSBKVU1QQlkoeCkgICAgICAgKG5leHRfaW5zdHIgKz0gKHgpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpCiAKIC8qIE9wQ29kZSBwcmVkaWN0aW9uIG1hY3JvcwogICAgIFNvbWUgb3Bjb2RlcyB0ZW5kIHRvIGNvbWUgaW4gcGFpcnMgdGh1cyBtYWtpbmcgaXQgcG9zc2libGUgdG8KICAgICBwcmVkaWN0IHRoZSBzZWNvbmQgY29kZSB3aGVuIHRoZSBmaXJzdCBpcyBydW4uICBGb3IgZXhhbXBsZSwKLSAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IEpVTVBfSUZfRkFMU0Ugb3IgSlVNUF9JRl9UUlVFLiAgQW5kLAotICAgIHRob3NlIG9wY29kZXMgYXJlIG9mdGVuIGZvbGxvd2VkIGJ5IGEgUE9QX1RPUC4KKyAgICBDT01QQVJFX09QIGlzIG9mdGVuIGZvbGxvd2VkIGJ5IFBPUF9KVU1QX0lGX0ZBTFNFIG9yIFBPUF9KVU1QX0lGX1RSVUUuCiAKICAgICBWZXJpZnlpbmcgdGhlIHByZWRpY3Rpb24gY29zdHMgYSBzaW5nbGUgaGlnaC1zcGVlZCB0ZXN0IG9mIGEgcmVnaXN0ZXIKICAgICB2YXJpYWJsZSBhZ2FpbnN0IGEgY29uc3RhbnQuICBJZiB0aGUgcGFpcmluZyB3YXMgZ29vZCwgdGhlbiB0aGUKICAgICBwcm9jZXNzb3IncyBvd24gaW50ZXJuYWwgYnJhbmNoIHByZWRpY2F0aW9uIGhhcyBhIGhpZ2ggbGlrZWxpaG9vZCBvZgogICAgIHN1Y2Nlc3MsIHJlc3VsdGluZyBpbiBhIG5lYXJseSB6ZXJvLW92ZXJoZWFkIHRyYW5zaXRpb24gdG8gdGhlCiAgICAgbmV4dCBvcGNvZGUuICBBIHN1Y2Nlc3NmdWwgcHJlZGljdGlvbiBzYXZlcyBhIHRyaXAgdGhyb3VnaCB0aGUgZXZhbC1sb29wCi0gICAgaW5jbHVkaW5nIGl0cyB0d28gdW5wcmVkaWN0YWJsZSBicmFuY2hlcywgdGhlIEhBU19BUkcgdGVzdCBhbmQgdGhlCi0gICAgc3dpdGNoLWNhc2UuICBDb21iaW5lZCB3aXRoIHRoZSBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwKLSAgICBhIHN1Y2Nlc3NmdWwgUFJFRElDVCBoYXMgdGhlIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZgotICAgIHRoZXkgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KKyAgICBpbmNsdWRpbmcgaXRzIHVucHJlZGljdGFibGUgc3dpdGNoLWNhc2UgYnJhbmNoLiAgQ29tYmluZWQgd2l0aCB0aGUKKyAgICBwcm9jZXNzb3IncyBpbnRlcm5hbCBicmFuY2ggcHJlZGljdGlvbiwgYSBzdWNjZXNzZnVsIFBSRURJQ1QgaGFzIHRoZQorICAgIGVmZmVjdCBvZiBtYWtpbmcgdGhlIHR3byBvcGNvZGVzIHJ1biBhcyBpZiB0aGV5IHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZQorICAgIHdpdGggdGhlIGJvZGllcyBjb21iaW5lZC4KIAogICAgIElmIGNvbGxlY3Rpbmcgb3Bjb2RlIHN0YXRpc3RpY3MsIHlvdXIgY2hvaWNlcyBhcmUgdG8gZWl0aGVyIGtlZXAgdGhlCiAgICAgcHJlZGljdGlvbnMgdHVybmVkLW9uIGFuZCBpbnRlcnByZXQgdGhlIHJlc3VsdHMgYXMgaWYgc29tZSBvcGNvZGVzCkBAIC0xMDMwLDEzICs5MDMsMTkgQEAKIAogI2lmIGRlZmluZWQoRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRSkgfHwgVVNFX0NPTVBVVEVEX0dPVE9TCiAjZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgwKSBnb3RvIFBSRURfIyNvcAotI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6Ci0jZGVmaW5lIFBSRURJQ1RFRF9XSVRIX0FSRyhvcCkgIFBSRURfIyNvcDoKICNlbHNlCi0jZGVmaW5lIFBSRURJQ1Qob3ApICAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBvcCkgZ290byBQUkVEXyMjb3AKLSNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOiBuZXh0X2luc3RyKysKLSNkZWZpbmUgUFJFRElDVEVEX1dJVEhfQVJHKG9wKSAgUFJFRF8jI29wOiBvcGFyZyA9IFBFRUtBUkcoKTsgbmV4dF9pbnN0ciArPSAzCisjZGVmaW5lIFBSRURJQ1Qob3ApIFwKKyAgICBkb3sgXAorICAgICAgICBfUHlfQ09ERVVOSVQgd29yZCA9ICpuZXh0X2luc3RyOyBcCisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUod29yZCk7IFwKKyAgICAgICAgaWYgKG9wY29kZSA9PSBvcCl7IFwKKyAgICAgICAgICAgIG9wYXJnID0gX1B5X09QQVJHKHdvcmQpOyBcCisgICAgICAgICAgICBuZXh0X2luc3RyKys7IFwKKyAgICAgICAgICAgIGdvdG8gUFJFRF8jI29wOyBcCisgICAgICAgIH0gXAorICAgIH0gd2hpbGUoMCkKICNlbmRpZgorI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6CiAKIAogLyogU3RhY2sgbWFuaXB1bGF0aW9uIG1hY3JvcyAqLwpAQCAtMTEwMCw3ICs5NzksNyBAQAogICAgIH0KIAogI2RlZmluZSBVTldJTkRfRVhDRVBUX0hBTkRMRVIoYikgXAotICAgIHsgXAorICAgIGRvIHsgXAogICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdHJhY2ViYWNrOyBcCiAgICAgICAgIGFzc2VydChTVEFDS19MRVZFTCgpID49IChiKS0+Yl9sZXZlbCArIDMpOyBcCiAgICAgICAgIHdoaWxlIChTVEFDS19MRVZFTCgpID4gKGIpLT5iX2xldmVsICsgMykgeyBcCkBAIC0xMTE2LDcgKzk5NSw3IEBACiAgICAgICAgIFB5X1hERUNSRUYodHlwZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7IFwKICAgICAgICAgUHlfWERFQ1JFRih0cmFjZWJhY2spOyBcCi0gICAgfQorICAgIH0gd2hpbGUoMCkKIAogLyogU3RhcnQgb2YgY29kZSAqLwogCkBAIC0xMTYwLDIxICsxMDM5LDI0IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fZW50cnkoZik7CisKICAgICBjbyA9IGYtPmZfY29kZTsKICAgICBuYW1lcyA9IGNvLT5jb19uYW1lczsKICAgICBjb25zdHMgPSBjby0+Y29fY29uc3RzOwogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKLSAgICBmaXJzdF9pbnN0ciA9ICh1bnNpZ25lZCBjaGFyKikgUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpOwotICAgIC8qIEFuIGV4cGxhbmF0aW9uIGlzIGluIG9yZGVyIGZvciB0aGUgbmV4dCBsaW5lLgorICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvLT5jb19jb2RlKSk7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfR0VUX1NJWkUoY28tPmNvX2NvZGUpIDw9IElOVF9NQVgpOworICAgIGFzc2VydChQeUJ5dGVzX0dFVF9TSVpFKGNvLT5jb19jb2RlKSAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOworICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSksIHNpemVvZihfUHlfQ09ERVVOSVQpKSk7CisgICAgZmlyc3RfaW5zdHIgPSAoX1B5X0NPREVVTklUICopIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKTsKKyAgICAvKgorICAgICAgIGYtPmZfbGFzdGkgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiwKKyAgICAgICB1bmxlc3MgaXQncyAtMSBpbiB3aGljaCBjYXNlIG5leHRfaW5zdHIgc2hvdWxkIGJlIGZpcnN0X2luc3RyLgogCi0gICAgICAgZi0+Zl9sYXN0aSBub3cgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBpbnN0cnVjdGlvbgotICAgICAgIGV4ZWN1dGVkLiAgWW91IG1pZ2h0IHRoaW5rIHRoaXMgd2FzIG9idmlvdXMgZnJvbSB0aGUgbmFtZSwgYnV0Ci0gICAgICAgdGhpcyB3YXNuJ3QgYWx3YXlzIHRydWUgYmVmb3JlIDIuMyEgIFB5RnJhbWVfTmV3IG5vdyBzZXRzCi0gICAgICAgZi0+Zl9sYXN0aSB0byAtMSAoaS5lLiB0aGUgaW5kZXggKmJlZm9yZSogdGhlIGZpcnN0IGluc3RydWN0aW9uKQotICAgICAgIGFuZCBZSUVMRF9WQUxVRSBkb2Vzbid0IGZpZGRsZSB3aXRoIGZfbGFzdGkgYW55IG1vcmUuICBTbyB0aGlzCi0gICAgICAgZG9lcyB3b3JrLiAgUHJvbWlzZS4KLSAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkIHlpZWxkCisgICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZGx5IHlpZWxkCiAgICAgICAgbXVsdGlwbGUgdmFsdWVzLgogCiAgICAgICAgV2hlbiB0aGUgUFJFRElDVCgpIG1hY3JvcyBhcmUgZW5hYmxlZCwgc29tZSBvcGNvZGUgcGFpcnMgZm9sbG93IGluCkBAIC0xMTgzLDE1ICsxMDY1LDIwIEBACiAgICAgICAgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlOyBhY2NvcmRpbmdseSxmLT5mX2xhc3RpIHdpbGwgcG9pbnQgdG8KICAgICAgICB0aGUgZmlyc3QgY29kZSBpbiB0aGUgcGFpciAoZm9yIGluc3RhbmNlLCBHRVRfSVRFUiBmb2xsb3dlZCBieQogICAgICAgIEZPUl9JVEVSIGlzIGVmZmVjdGl2ZWx5IGEgc2luZ2xlIG9wY29kZSBhbmQgZi0+Zl9sYXN0aSB3aWxsIHBvaW50Ci0gICAgICAgYXQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCisgICAgICAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tYmluZWQgcGFpci4pCiAgICAgKi8KLSAgICBuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyBmLT5mX2xhc3RpICsgMTsKKyAgICBhc3NlcnQoZi0+Zl9sYXN0aSA+PSAtMSk7CisgICAgbmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyOworICAgIGlmIChmLT5mX2xhc3RpID49IDApIHsKKyAgICAgICAgYXNzZXJ0KGYtPmZfbGFzdGkgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV4dF9pbnN0ciArPSBmLT5mX2xhc3RpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyAxOworICAgIH0KICAgICBzdGFja19wb2ludGVyID0gZi0+Zl9zdGFja3RvcDsKICAgICBhc3NlcnQoc3RhY2tfcG9pbnRlciAhPSBOVUxMKTsKICAgICBmLT5mX3N0YWNrdG9wID0gTlVMTDsgICAgICAgLyogcmVtYWlucyBOVUxMIHVubGVzcyB5aWVsZCBzdXNwZW5kcyBmcmFtZSAqLwogICAgIGYtPmZfZXhlY3V0aW5nID0gMTsKIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBpZiAoIXRocm93ZmxhZyAmJiBmLT5mX2V4Y190eXBlICE9IE5VTEwgJiYgZi0+Zl9leGNfdHlwZSAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBXZSB3ZXJlIGluIGFuIGV4Y2VwdCBoYW5kbGVyIHdoZW4gd2UgbGVmdCwKICAgICAgICAgICAgICAgIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbiBzdGF0ZSB3aGljaCB3YXMgcHV0IGFzaWRlCkBAIC0xMjE5LDIzICsxMTA2LDYgQEAKICNlbmRpZgogCiAgICAgZm9yICg7OykgewotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGlmIChpbnN0MSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBBbG1vc3Qgc3VyZWx5LCB0aGUgb3Bjb2RlIGV4ZWN1dGVkIGEgYnJlYWsKLSAgICAgICAgICAgICAgIG9yIGEgY29udGludWUsIHByZXZlbnRpbmcgaW5zdDEgZnJvbSBiZWluZyBzZXQKLSAgICAgICAgICAgICAgIG9uIHRoZSB3YXkgb3V0IG9mIHRoZSBsb29wLgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGluc3QxKTsKLSAgICAgICAgICAgIGxvb3AxID0gaW5zdDE7Ci0gICAgICAgIH0KLSAgICAgICAgZHVtcF90c2Mob3Bjb2RlLCB0aWNrZWQsIGluc3QwLCBpbnN0MSwgbG9vcDAsIGxvb3AxLAotICAgICAgICAgICAgICAgICBpbnRyMCwgaW50cjEpOwotICAgICAgICB0aWNrZWQgPSAwOwotICAgICAgICBpbnN0MSA9IDA7Ci0gICAgICAgIGludHIwID0gMDsKLSAgICAgICAgaW50cjEgPSAwOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMCk7Ci0jZW5kaWYKICAgICAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgPj0gZi0+Zl92YWx1ZXN0YWNrKTsgLyogZWxzZSB1bmRlcmZsb3cgKi8KICAgICAgICAgYXNzZXJ0KFNUQUNLX0xFVkVMKCkgPD0gY28tPmNvX3N0YWNrc2l6ZSk7ICAvKiBlbHNlIG92ZXJmbG93ICovCiAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CkBAIC0xMjQ5LDE0ICsxMTE5LDExIEBACiAgICAgICAgICAgIFB5X01ha2VQZW5kaW5nQ2FsbHMoKSBhYm92ZS4gKi8KIAogICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmV2YWxfYnJlYWtlcikpIHsKLSAgICAgICAgICAgIGlmICgqbmV4dF9pbnN0ciA9PSBTRVRVUF9GSU5BTExZKSB7CisgICAgICAgICAgICBpZiAoX1B5X09QQ09ERSgqbmV4dF9pbnN0cikgPT0gU0VUVVBfRklOQUxMWSkgewogICAgICAgICAgICAgICAgIC8qIE1ha2UgdGhlIGxhc3Qgb3Bjb2RlIGJlZm9yZQogICAgICAgICAgICAgICAgICAgIGEgdHJ5OiBmaW5hbGx5OiBibG9jayB1bmludGVycnVwdGlibGUuICovCiAgICAgICAgICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOwogICAgICAgICAgICAgfQotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICB0aWNrZWQgPSAxOwotI2VuZGlmCiAgICAgICAgICAgICBpZiAoX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJnBlbmRpbmdjYWxsc190b19kbykpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfTWFrZVBlbmRpbmdDYWxscygpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTEyOTYsNiArMTE2Myw5IEBACiAgICAgZmFzdF9uZXh0X29wY29kZToKICAgICAgICAgZi0+Zl9sYXN0aSA9IElOU1RSX09GRlNFVCgpOwogCisgICAgICAgIGlmIChQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkKKyAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lKGYsICZpbnN0cl9sYiwgJmluc3RyX3ViLCAmaW5zdHJfcHJldik7CisKICAgICAgICAgLyogbGluZS1ieS1saW5lIHRyYWNpbmcgc3VwcG9ydCAqLwogCiAgICAgICAgIGlmIChfUHlfVHJhY2luZ1Bvc3NpYmxlICYmCkBAIC0xMzIyLDExICsxMTkyLDcgQEAKIAogICAgICAgICAvKiBFeHRyYWN0IG9wY29kZSBhbmQgYXJndW1lbnQgKi8KIAotICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgb3BhcmcgPSAwOyAgIC8qIGFsbG93cyBvcGFyZyB0byBiZSBzdG9yZWQgaW4gYSByZWdpc3RlciBiZWNhdXNlCi0gICAgICAgICAgICBpdCBkb2Vzbid0IGhhdmUgdG8gYmUgcmVtZW1iZXJlZCBhY3Jvc3MgYSBmdWxsIGxvb3AgKi8KLSAgICAgICAgaWYgKEhBU19BUkcob3Bjb2RlKSkKLSAgICAgICAgICAgIG9wYXJnID0gTkVYVEFSRygpOworICAgICAgICBORVhUT1BBUkcoKTsKICAgICBkaXNwYXRjaF9vcGNvZGU6CiAjaWZkZWYgRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRQogI2lmZGVmIERYUEFJUlMKQEAgLTEzNTEsOSArMTIxNyw2IEBACiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIC8qIE1haW4gc3dpdGNoIG9uIG9wY29kZSAqLwotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MCk7Ci0KICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKIAogICAgICAgICAvKiBCRVdBUkUhCkBAIC0xMzc3LDYgKzEyNDAsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKExPQURfQ09OU1QpOwogICAgICAgICBUQVJHRVQoTE9BRF9DT05TVCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gR0VUSVRFTShjb25zdHMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CkBAIC0xMzg0LDcgKzEyNDgsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFNUT1JFX0ZBU1QpOworICAgICAgICBQUkVESUNURUQoU1RPUkVfRkFTVCk7CiAgICAgICAgIFRBUkdFVChTVE9SRV9GQVNUKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQT1AoKTsKICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCB2YWx1ZSk7CkBAIC0xODYzLDYgKzE3MjcsNjEgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBUQVJHRVQoU1RPUkVfQU5OT1RBVElPTikgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fZGljdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICphbm4gPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOworICAgICAgICAgICAgaW50IGVycjsKKyAgICAgICAgICAgIGlmIChmLT5mX2xvY2FscyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIHdoZW4gc3RvcmluZyBhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGZpcnN0IHRyeSB0byBnZXQgX19hbm5vdGF0aW9uc19fIGZyb20gbG9jYWxzLi4uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9sb2NhbHMpKSB7CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogLi4uaWYgc3VjY2VlZGVkLCBfX2Fubm90YXRpb25zX19bbmFtZV0gPSBhbm4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChhbm5fZGljdCkpIHsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShhbm5fZGljdCwgbmFtZSwgYW5uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVyciA9IFB5T2JqZWN0X1NldEl0ZW0oYW5uX2RpY3QsIG5hbWUsIGFubik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChERUxFVEVfU1VCU0NSKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3ViID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29udGFpbmVyID0gU0VDT05EKCk7CkBAIC0xOTkyLDcgKzE5MTEsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKIAogICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBpbXBsZW1lbnRzIGxlZ2FjeSBfX2FpdGVyX18gcHJvdG9jb2w7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJfX2FpdGVyX18gc2hvdWxkIHJldHVybiBhbiBhc3luY2hyb25vdXMgIgogICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdG9yLCBub3QgYXdhaXRhYmxlIiwKQEAgLTIwMDYsNiArMTkyNSw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNFVF9UT1AoYXdhaXRhYmxlKTsKKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTIwMTYsNDEgKzE5MzYsNTIgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICphaXRlciA9IFRPUCgpOwogICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShhaXRlcik7CiAKLSAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQotICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKLQotICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoYWl0ZXIpKSB7CisgICAgICAgICAgICAgICAgYXdhaXRhYmxlID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0KGFpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlcXVpcmVzIGFuIGl0ZXJhdG9yIHdpdGggIgotICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCi0gICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKXsKKyAgICAgICAgICAgICAgICAgICAgZ2V0dGVyID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0OworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKG5leHRfaXRlcik7Ci0gICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0ICIKLSAgICAgICAgICAgICAgICAgICAgImZyb20gX19hbmV4dF9fOiAlLjEwMHMiLAotICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaXRlciktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0X2l0ZXIgPSAoKmdldHRlcikoYWl0ZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX2FuZXh0X18gbWV0aG9kLCBnb3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICBhd2FpdGFibGUgPSBfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobmV4dF9pdGVyKS0+dHBfbmFtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBQVVNIKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChHRVRfQVdBSVRBQkxFKTsKICAgICAgICAgVEFSR0VUKEdFVF9BV0FJVEFCTEUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIoaXRlcmFibGUpOwpAQCAtMjA3OCwyMSArMjAwOSwyMiBAQAogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKFlJRUxEX0ZST00pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVjaWV2ZXIgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNlaXZlciA9IFRPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdChyZWNpZXZlcikpIHsKLSAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlHZW5fU2VuZCgoUHlHZW5PYmplY3QgKilyZWNpZXZlciwgdik7CisgICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChyZWNlaXZlcikgfHwgUHlDb3JvX0NoZWNrRXhhY3QocmVjZWl2ZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopcmVjZWl2ZXIsIHYpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzZW5kKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHJlY2lldmVyKS0+dHBfaXRlcm5leHQocmVjaWV2ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHJlY2VpdmVyKS0+dHBfaXRlcm5leHQocmVjZWl2ZXIpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVjaWV2ZXIsICZQeUlkX3NlbmQsIHYsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhyZWNlaXZlciwgJlB5SWRfc2VuZCwgdiwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpIHsKQEAgLTIxMDMsNyArMjAzNSw3IEBACiAgICAgICAgICAgICAgICAgZXJyID0gX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWNpZXZlcik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlY2VpdmVyKTsKICAgICAgICAgICAgICAgICBTRVRfVE9QKHZhbCk7CiAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KQEAgLTIxMTEsMTIgKzIwNDMsMjMgQEAKICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwogICAgICAgICAgICAgd2h5ID0gV0hZX1lJRUxEOwogICAgICAgICAgICAgLyogYW5kIHJlcGVhdC4uLiAqLwotICAgICAgICAgICAgZi0+Zl9sYXN0aS0tOworICAgICAgICAgICAgZi0+Zl9sYXN0aSAtPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChZSUVMRF9WQUxVRSkgewogICAgICAgICAgICAgcmV0dmFsID0gUE9QKCk7CisKKyAgICAgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19BU1lOQ19HRU5FUkFUT1IpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdyA9IF9QeUFzeW5jR2VuVmFsdWVXcmFwcGVyTmV3KHJldHZhbCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR2YWwgPSB3OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKICAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKQEAgLTIxMzMsNiArMjA3Niw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKFBPUF9CTE9DSyk7CiAgICAgICAgIFRBUkdFVChQT1BfQkxPQ0spIHsKICAgICAgICAgICAgIFB5VHJ5QmxvY2sgKmIgPSBQeUZyYW1lX0Jsb2NrUG9wKGYpOwogICAgICAgICAgICAgVU5XSU5EX0JMT0NLKGIpOwpAQCAtMjI0OSw3ICsyMTkzLDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoVU5QQUNLX1NFUVVFTkNFKTsKKyAgICAgICAgUFJFRElDVEVEKFVOUEFDS19TRVFVRU5DRSk7CiAgICAgICAgIFRBUkdFVChVTlBBQ0tfU0VRVUVOQ0UpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXEgPSBQT1AoKSwgKml0ZW0sICoqaXRlbXM7CiAgICAgICAgICAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHNlcSkgJiYKQEAgLTIzNTgsNyArMjMwMiw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwgJiYgX1B5RXJyX09DQ1VSUkVEKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjM5OCwyNiArMjM0MiwzMyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqdjsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2dsb2JhbHMpCi0gICAgICAgICAgICAgICAgJiYgUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpIHsKKyAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB2ID0gX1B5RGljdF9Mb2FkR2xvYmFsKChQeURpY3RPYmplY3QgKilmLT5mX2dsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEaWN0T2JqZWN0ICopZi0+Zl9idWlsdGlucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFfUHlFcnJfT0NDVVJSRUQoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfUHlFcnJfT0NDVVJSRUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogX1B5RGljdF9Mb2FkR2xvYmFsKCkgcmV0dXJucyBOVUxMIHdpdGhvdXQgcmFpc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfTmFtZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8qIFNsb3ctcGF0aCBpZiBnbG9iYWxzIG9yIGJ1aWx0aW5zIGlzIG5vdCBhIGRpY3QgKi8KKworICAgICAgICAgICAgICAgIC8qIG5hbWVzcGFjZSAxOiBnbG9iYWxzICovCiAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCBuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCisgICAgICAgICAgICAgICAgICAgIC8qIG5hbWVzcGFjZSAyOiBidWlsdGlucyAqLwogICAgICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQpAQCAtMjQ3Nyw3ICsyNDI4LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MTEsOCArMjQ2MiwyNyBAQAogICAgICAgICBUQVJHRVQoU1RPUkVfREVSRUYpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqY2VsbCA9IGZyZWV2YXJzW29wYXJnXTsKLSAgICAgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgdik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICBQeU9iamVjdCAqb2xkb2JqID0gUHlDZWxsX0dFVChjZWxsKTsKKyAgICAgICAgICAgIFB5Q2VsbF9TRVQoY2VsbCwgdik7CisgICAgICAgICAgICBQeV9YREVDUkVGKG9sZG9iaik7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX1NUUklORykgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0cjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICplbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CisgICAgICAgICAgICBpZiAoZW1wdHkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHIgPSBfUHlVbmljb2RlX0pvaW5BcnJheShlbXB0eSwgc3RhY2tfcG9pbnRlciAtIG9wYXJnLCBvcGFyZyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZW1wdHkpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB3aGlsZSAoLS1vcGFyZyA+PSAwKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQT1AoKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKHN0cik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTI1NDAsMTMgKzI1MTAsMTQgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX1RVUExFX1VOUEFDSywgX2J1aWxkX2xpc3RfdW5wYWNrKQotICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spCi0gICAgICAgIF9idWlsZF9saXN0X3VucGFjazogewotICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLOwotICAgICAgICAgICAgaW50IGk7CisgICAgICAgIFRBUkdFVChCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMKQorICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEVfVU5QQUNLKQorICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spIHsKKyAgICAgICAgICAgIGludCBjb252ZXJ0X3RvX3R1cGxlID0gb3Bjb2RlICE9IEJVSUxEX0xJU1RfVU5QQUNLOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5TGlzdF9OZXcoMCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjU1NSw2ICsyNTI2LDE2IEBACiAKICAgICAgICAgICAgICAgICBub25lX3ZhbCA9IF9QeUxpc3RfRXh0ZW5kKChQeUxpc3RPYmplY3QgKilzdW0sIFBFRUsoaSkpOwogICAgICAgICAgICAgICAgIGlmIChub25lX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoMSArIG9wYXJnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoaSktPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1OTksNyArMjU4MCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoQlVJTERfU0VUX1VOUEFDSykgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlTZXRfTmV3KE5VTEwpOwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjE4LDcgKzI1OTksNyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKEJVSUxEX01BUCkgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWFwID0gX1B5RGljdF9OZXdQcmVzaXplZCgoUHlfc3NpemVfdClvcGFyZyk7CiAgICAgICAgICAgICBpZiAobWFwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NDEsODcgKzI2MjIsMTYyIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCi0gICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQotICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogewotICAgICAgICAgICAgaW50IHdpdGhfY2FsbCA9IG9wY29kZSA9PSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDsKLSAgICAgICAgICAgIGludCBudW1fbWFwczsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICBUQVJHRVQoU0VUVVBfQU5OT1RBVElPTlMpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgUHlPYmplY3QgKmFubl9kaWN0OworICAgICAgICAgICAgaWYgKGYtPmZfbG9jYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgd2hlbiBzZXR0aW5nIHVwIGFubm90YXRpb25zIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGNoZWNrIGlmIF9fYW5ub3RhdGlvbnNfXyBpbiBsb2NhbHMoKS4uLiAqLworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfbG9jYWxzKSkgeworICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIC4uLmlmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSAqLworICAgICAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gX1B5RGljdF9TZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXywgYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBkbyB0aGUgc2FtZSBpZiBsb2NhbHMoKSBpcyBub3QgYSBkaWN0ICovCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfbG9jYWxzLCBhbm5fc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9TZXRJdGVtKGYtPmZfbG9jYWxzLCBhbm5fc3RyLCBhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX0NPTlNUX0tFWV9NQVApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICptYXA7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5cyA9IFRPUCgpOworICAgICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3Qoa2V5cykgfHwKKyAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGtleXMpICE9IChQeV9zc2l6ZV90KW9wYXJnKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIEJVSUxEX0NPTlNUX0tFWV9NQVAga2V5cyBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKKyAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0oa2V5cywgb3BhcmcgLSBpKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQRUVLKGkgKyAxKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKG1hcCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX01BUF9VTlBBQ0spIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeURpY3RfTmV3KCk7CiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3Bhcmc7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZvciAoaSA9IG51bV9tYXBzOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOwotICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmludGVyc2VjdGlvbiA9IF9QeURpY3RWaWV3X0ludGVyc2VjdChzdW0sIGFyZyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAhUHlNYXBwaW5nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcykpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKGludGVyc2VjdGlvbikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwotICAgICAgICAgICAgICAgICAgICAgICAgX1B5U2V0X05leHRFbnRyeShpbnRlcnNlY3Rpb24sICZpZHgsICZrZXksICZoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgZ290IG11bHRpcGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJyVVJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoc3VtLCBhcmcpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUEVFSyhpKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9NZXJnZUV4KHN1bSwgYXJnLCAyKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKDIgKyBvcGFyZyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmJiBQeVR1cGxlX0NoZWNrKHZhbCkgJiYgUHlUdXBsZV9HRVRfU0laRSh2YWwpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTSh2YWwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgYSBtYXBwaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbCwgdGIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwpAQCAtMjcyOSw3ICsyNzg1LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHdoaWxlIChudW1fbWFwcy0tKQorICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKICAgICAgICAgICAgIFBVU0goc3VtKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CkBAIC0yNzc4LDQ1ICsyODM0LDEzIEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoSU1QT1JUX05BTUUpIHsKLSAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwotICAgICAgICAgICAgUHlPYmplY3QgKmZyb20sICpsZXZlbCwgKmFyZ3MsICpyZXM7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICAgICAgZnJvbSA9IFBPUCgpOwotICAgICAgICAgICAgbGV2ZWwgPSBUT1AoKTsKLSAgICAgICAgICAgIGlmIChQeUxvbmdfQXNMb25nKGxldmVsKSAhPSAtMSB8fCBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjayg0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUgOiBmLT5mX2xvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxldmVsID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgcmVzID0gaW1wb3J0X25hbWUoZiwgbmFtZSwgZnJvbWxpc3QsIGxldmVsKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsZXZlbCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnJvbSk7Ci0gICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwotICAgICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgYXJncyk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbWxpc3QpOwogICAgICAgICAgICAgU0VUX1RPUChyZXMpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yODM1LDkgKzI4NTksNyBAQAogICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIGR1cmluZyAnaW1wb3J0IConIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKICAgICAgICAgICAgIGVyciA9IGltcG9ydF9hbGxfZnJvbShsb2NhbHMsIGZyb20pOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwogICAgICAgICAgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZiwgMCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbSk7CiAgICAgICAgICAgICBpZiAoZXJyICE9IDApCkBAIC0yODQ5LDkgKzI4NzEsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKICAgICAgICAgICAgIHJlcyA9IGltcG9ydF9mcm9tKGZyb20sIG5hbWUpOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwogICAgICAgICAgICAgUFVTSChyZXMpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yODYzLDcgKzI4ODMsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFBPUF9KVU1QX0lGX0ZBTFNFKTsKKyAgICAgICAgUFJFRElDVEVEKFBPUF9KVU1QX0lGX0ZBTFNFKTsKICAgICAgICAgVEFSR0VUKFBPUF9KVU1QX0lGX0ZBTFNFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29uZCA9IFBPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKQEAgLTI4ODcsNyArMjkwNyw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFBPUF9KVU1QX0lGX1RSVUUpOworICAgICAgICBQUkVESUNURUQoUE9QX0pVTVBfSUZfVFJVRSk7CiAgICAgICAgIFRBUkdFVChQT1BfSlVNUF9JRl9UUlVFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29uZCA9IFBPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKQEAgLTI5NjQsNyArMjk4NCw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKEpVTVBfQUJTT0xVVEUpOworICAgICAgICBQUkVESUNURUQoSlVNUF9BQlNPTFVURSk7CiAgICAgICAgIFRBUkdFVChKVU1QX0FCU09MVVRFKSB7CiAgICAgICAgICAgICBKVU1QVE8ob3BhcmcpOwogI2lmIEZBU1RfTE9PUFMKQEAgLTI5OTAsNiArMzAxMCw3IEBACiAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBQUkVESUNUKEZPUl9JVEVSKTsKKyAgICAgICAgICAgIFBSRURJQ1QoQ0FMTF9GVU5DVElPTik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMwMTgsMTAgKzMwMzksMTEgQEAKICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoRk9SX0lURVIpOworICAgICAgICBQUkVESUNURUQoRk9SX0lURVIpOwogICAgICAgICBUQVJHRVQoRk9SX0lURVIpIHsKICAgICAgICAgICAgIC8qIGJlZm9yZTogW2l0ZXJdOyBhZnRlcjogW2l0ZXIsIGl0ZXIoKV0gKm9yKiBbXSAqLwogICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBUT1AoKTsKQEAgLTMwNDMsNiArMzA2NSw3IEBACiAgICAgICAgICAgICBTVEFDS0FESigtMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICBKVU1QQlkob3BhcmcpOworICAgICAgICAgICAgUFJFRElDVChQT1BfQkxPQ0spOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMDU5LDEwICszMDgyLDkgQEAKICAgICAgICAgICAgIGdvdG8gZmFzdF9ibG9ja19lbmQ7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0xPT1AsIF9zZXR1cF9maW5hbGx5KQotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0VYQ0VQVCwgX3NldHVwX2ZpbmFsbHkpCi0gICAgICAgIFRBUkdFVChTRVRVUF9GSU5BTExZKQotICAgICAgICBfc2V0dXBfZmluYWxseTogeworICAgICAgICBUQVJHRVQoU0VUVVBfTE9PUCkKKyAgICAgICAgVEFSR0VUKFNFVFVQX0VYQ0VQVCkKKyAgICAgICAgVEFSR0VUKFNFVFVQX0ZJTkFMTFkpIHsKICAgICAgICAgICAgIC8qIE5PVEU6IElmIHlvdSBhZGQgYW55IG5ldyBibG9jay1zZXR1cCBvcGNvZGVzIHRoYXQKICAgICAgICAgICAgICAgIGFyZSBub3QgdHJ5L2V4Y2VwdC9maW5hbGx5IGhhbmRsZXJzLCB5b3UgbWF5IG5lZWQKICAgICAgICAgICAgICAgIHRvIHVwZGF0ZSB0aGUgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKCkgZnVuY3Rpb24uCkBAIC0zMDkzLDYgKzMxMTUsNyBAQAogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBQVVNIKHJlcyk7CisgICAgICAgICAgICBQUkVESUNUKEdFVF9BV0FJVEFCTEUpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMjQxLDE3OCArMzI2NCwxMzUgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoQ0FMTF9GVU5DVElPTik7CiAgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqKnNwLCAqcmVzOwogICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKICAgICAgICAgICAgIHNwID0gc3RhY2tfcG9pbnRlcjsKLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCAmaW50cjAsICZpbnRyMSk7Ci0jZWxzZQotICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnKTsKLSNlbmRpZgorICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCBOVUxMKTsKICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBzcDsKICAgICAgICAgICAgIFBVU0gocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChDQUxMX0ZVTkNUSU9OX1ZBUiwgX2NhbGxfZnVuY3Rpb25fdmFyX2t3KQotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKENBTExfRlVOQ1RJT05fS1csIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdykKLSAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fVkFSX0tXKQotICAgICAgICBfY2FsbF9mdW5jdGlvbl92YXJfa3c6IHsKLSAgICAgICAgICAgIGludCBuYSA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIGludCBuayA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgaW50IGZsYWdzID0gKG9wY29kZSAtIENBTExfRlVOQ1RJT04pICYgMzsKLSAgICAgICAgICAgIGludCBuID0gbmEgKyAyICogbms7Ci0gICAgICAgICAgICBQeU9iamVjdCAqKnBmdW5jLCAqZnVuYywgKipzcCwgKnJlczsKKyAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fS1cpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqc3AsICpyZXMsICpuYW1lczsKKworICAgICAgICAgICAgbmFtZXMgPSBQT1AoKTsKKyAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QobmFtZXMpICYmIFB5VHVwbGVfR0VUX1NJWkUobmFtZXMpIDw9IG9wYXJnKTsKICAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIENBTExfRkxBR19LVykKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICBwZnVuYyA9IHN0YWNrX3BvaW50ZXIgLSBuIC0gMTsKLSAgICAgICAgICAgIGZ1bmMgPSAqcGZ1bmM7Ci0KLSAgICAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKQotICAgICAgICAgICAgICAgICYmIFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgICAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9TRVRSRUYoKnBmdW5jLCBzZWxmKTsKLSAgICAgICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgICAgIC8qIG4rKzsgKi8KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIHNwID0gc3RhY2tfcG9pbnRlcjsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIHJlcyA9IGV4dF9kb19jYWxsKGZ1bmMsICZzcCwgZmxhZ3MsIG5hLCBuayk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CisgICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsIG5hbWVzKTsKICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBzcDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLQotICAgICAgICAgICAgd2hpbGUgKHN0YWNrX3BvaW50ZXIgPiBwZnVuYykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG8pOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSChyZXMpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKE1BS0VfQ0xPU1VSRSwgX21ha2VfZnVuY3Rpb24pCi0gICAgICAgIFRBUkdFVChNQUtFX0ZVTkNUSU9OKQotICAgICAgICBfbWFrZV9mdW5jdGlvbjogewotICAgICAgICAgICAgaW50IHBvc2RlZmF1bHRzID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgaW50IGt3ZGVmYXVsdHMgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgIGludCBudW1fYW5ub3RhdGlvbnMgPSAob3BhcmcgPj4gMTYpICYgMHg3ZmZmOworICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTl9FWCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMsICpjYWxsYXJncywgKmt3YXJncyA9IE5VTEwsICpyZXN1bHQ7CisgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOworICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMSkgeworICAgICAgICAgICAgICAgIGt3YXJncyA9IFBPUCgpOworICAgICAgICAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qoa3dhcmdzKSkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGQsIGt3YXJncykgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgICAgICAgICAgLyogUHlEaWN0X1VwZGF0ZSByYWlzZXMgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBlcnJvciAocGVyY29sYXRlZCBmcm9tIGFuIGF0dGVtcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRvIGdldCAna2V5cycgYXR0cmlidXRlKSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhIHR5cGUgZXJyb3IgaWYgaXRzIHNlY29uZCBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICogaXMgbm90IGEgbWFwcGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyA9IFNFQ09ORCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzID0gZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGFyZ3MgPSBQT1AoKTsKKyAgICAgICAgICAgIGZ1bmMgPSBUT1AoKTsKKyAgICAgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KGNhbGxhcmdzKSkgeworICAgICAgICAgICAgICAgIGlmIChQeV9UWVBFKGNhbGxhcmdzKS0+dHBfaXRlciA9PSBOVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhUHlTZXF1ZW5jZV9DaGVjayhjYWxsYXJncykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYXJncy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihjYWxsYXJncywgUHlTZXF1ZW5jZV9UdXBsZShjYWxsYXJncykpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChjYWxsYXJncykpOwogCi0gICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsgLyogcXVhbG5hbWUgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlID0gUE9QKCk7IC8qIGNvZGUgb2JqZWN0ICovCi0gICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKGNvZGUsIGYtPmZfZ2xvYmFscywgcXVhbG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGNvZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvX2NhbGxfY29yZShmdW5jLCBjYWxsYXJncywga3dhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGt3YXJncyk7CiAKLSAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpCisgICAgICAgICAgICBTRVRfVE9QKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAob3Bjb2RlID09IE1BS0VfQ0xPU1VSRSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbG9zdXJlID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0Q2xvc3VyZShmdW5jLCBjbG9zdXJlKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MgYnl0ZWNvZGUgaXMgY29ycnVwdC4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjbG9zdXJlKTsKKyAgICAgICAgVEFSR0VUKE1BS0VfRlVOQ1RJT04pIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVvYmogPSBQT1AoKTsKKyAgICAgICAgICAgIFB5RnVuY3Rpb25PYmplY3QgKmZ1bmMgPSAoUHlGdW5jdGlvbk9iamVjdCAqKQorICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKGNvZGVvYmosIGYtPmZfZ2xvYmFscywgcXVhbG5hbWUpOworCisgICAgICAgICAgICBQeV9ERUNSRUYoY29kZW9iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOworICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChudW1fYW5ub3RhdGlvbnMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYW1lX2l4OwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcyA9IFBPUCgpOyAvKiBuYW1lcyBvZiBhcmdzIHdpdGggYW5ub3RhdGlvbnMgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYW5ucyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoYW5ucyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFtZV9peCA9IFB5VHVwbGVfU2l6ZShuYW1lcyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bV9hbm5vdGF0aW9ucyA9PSBuYW1lX2l4KzEpOwotICAgICAgICAgICAgICAgIHdoaWxlIChuYW1lX2l4ID4gMCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgKnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgICAgICAgICAtLW5hbWVfaXg7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKG5hbWVzLCBuYW1lX2l4KTsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQT1AoKTsKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oYW5ucywgbmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyhmdW5jLCBhbm5zKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOworICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwOCkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jIC0+ZnVuY19jbG9zdXJlID0gUE9QKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDA0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19hbm5vdGF0aW9ucyA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMikgeworICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfa3dkZWZhdWx0cyA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMSkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2RlZmF1bHRzID0gUE9QKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8qIFhYWCBNYXliZSB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIG9wY29kZT8gKi8KLSAgICAgICAgICAgIGlmIChrd2RlZmF1bHRzID4gMCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZzID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmIChkZWZzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3aGlsZSAoLS1rd2RlZmF1bHRzID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsgLyogZGVmYXVsdCB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUE9QKCk7IC8qIGt3IG9ubHkgYXJnIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgaW50IGVyciA9IFB5RGljdF9TZXRJdGVtKGRlZnMsIGtleSwgdik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzKGZ1bmMsIGRlZnMpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldEt3RGVmYXVsdHMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwb3NkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5VHVwbGVfTmV3KHBvc2RlZmF1bHRzKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0tcG9zZGVmYXVsdHMgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShkZWZzLCBwb3NkZWZhdWx0cywgUE9QKCkpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldERlZmF1bHRzKGZ1bmMsIGRlZnMpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldERlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQVVNIKGZ1bmMpOworICAgICAgICAgICAgUFVTSCgoUHlPYmplY3QgKilmdW5jKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzQzNCw5ICszNDE0LDY4IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEZPUk1BVF9WQUxVRSkgeworICAgICAgICAgICAgLyogSGFuZGxlcyBmLXN0cmluZyB2YWx1ZSBmb3JtYXR0aW5nLiAqLworICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmbXRfc3BlYzsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICooKmNvbnZfZm4pKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaW50IHdoaWNoX2NvbnZlcnNpb24gPSBvcGFyZyAmIEZWQ19NQVNLOworICAgICAgICAgICAgaW50IGhhdmVfZm10X3NwZWMgPSAob3BhcmcgJiBGVlNfTUFTSykgPT0gRlZTX0hBVkVfU1BFQzsKKworICAgICAgICAgICAgZm10X3NwZWMgPSBoYXZlX2ZtdF9zcGVjID8gUE9QKCkgOiBOVUxMOworICAgICAgICAgICAgdmFsdWUgPSBQT1AoKTsKKworICAgICAgICAgICAgLyogU2VlIGlmIGFueSBjb252ZXJzaW9uIGlzIHNwZWNpZmllZC4gKi8KKyAgICAgICAgICAgIHN3aXRjaCAod2hpY2hfY29udmVyc2lvbikgeworICAgICAgICAgICAgY2FzZSBGVkNfU1RSOiAgIGNvbnZfZm4gPSBQeU9iamVjdF9TdHI7ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZWQ19SRVBSOiAgY29udl9mbiA9IFB5T2JqZWN0X1JlcHI7ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRlZDX0FTQ0lJOiBjb252X2ZuID0gUHlPYmplY3RfQVNDSUk7IGJyZWFrOworCisgICAgICAgICAgICAvKiBNdXN0IGJlIDAgKG1lYW5pbmcgbm8gY29udmVyc2lvbiksIHNpbmNlIG9ubHkgZm91cgorICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBhbGxvd2VkIGJ5IChvcGFyZyAmIEZWQ19NQVNLKS4gKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICBjb252X2ZuID0gTlVMTDsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIGEgY29udmVyc2lvbiBmdW5jdGlvbiwgY2FsbCBpdCBhbmQgcmVwbGFjZQorICAgICAgICAgICAgICAgdmFsdWUgd2l0aCB0aGF0IHJlc3VsdC4gT3RoZXJ3aXNlLCBqdXN0IHVzZSB2YWx1ZSwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgY29udmVyc2lvbi4gKi8KKyAgICAgICAgICAgIGlmIChjb252X2ZuICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb252X2ZuKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZtdF9zcGVjKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFsdWUgPSByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHZhbHVlIGlzIGEgdW5pY29kZSBvYmplY3QsIGFuZCB0aGVyZSdzIG5vIGZtdF9zcGVjLAorICAgICAgICAgICAgICAgdGhlbiB3ZSBrbm93IHRoZSByZXN1bHQgb2YgZm9ybWF0KHZhbHVlKSBpcyB2YWx1ZQorICAgICAgICAgICAgICAgaXRzZWxmLiBJbiB0aGF0IGNhc2UsIHNraXAgY2FsbGluZyBmb3JtYXQoKS4gSSBwbGFuIHRvCisgICAgICAgICAgICAgICBtb3ZlIHRoaXMgb3B0aW1pemF0aW9uIGluIHRvIFB5T2JqZWN0X0Zvcm1hdCgpCisgICAgICAgICAgICAgICBpdHNlbGYuICovCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpICYmIGZtdF9zcGVjID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBEbyBub3RoaW5nLCBqdXN0IHRyYW5zZmVyIG93bmVyc2hpcCB0byByZXN1bHQuICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEFjdHVhbGx5IGNhbGwgZm9ybWF0KCkuICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfRm9ybWF0KHZhbHVlLCBmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZtdF9zcGVjKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFBVU0gocmVzdWx0KTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoRVhURU5ERURfQVJHKSB7Ci0gICAgICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgICAgIG9wYXJnID0gb3Bhcmc8PDE2IHwgTkVYVEFSRygpOworICAgICAgICAgICAgaW50IG9sZG9wYXJnID0gb3Bhcmc7CisgICAgICAgICAgICBORVhUT1BBUkcoKTsKKyAgICAgICAgICAgIG9wYXJnIHw9IG9sZG9wYXJnIDw8IDg7CiAgICAgICAgICAgICBnb3RvIGRpc3BhdGNoX29wY29kZTsKICAgICAgICAgfQogCkBAIC0zNDYzLDcgKzM1MDIsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAKIGVycm9yOgotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7CiAKICAgICAgICAgYXNzZXJ0KHdoeSA9PSBXSFlfTk9UKTsKICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKQEAgLTM1NjcsNyArMzYwNSw2IEBACiAKICAgICAgICAgaWYgKHdoeSAhPSBXSFlfTk9UKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKGxvb3AxKTsKIAogICAgICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogCkBAIC0zNTg2LDcgKzM2MjMsNyBAQAogICAgIGFzc2VydCgocmV0dmFsICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOwogCiBmYXN0X3lpZWxkOgotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogCiAgICAgICAgIC8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmxvY2sgaXMgdG8gcHV0IGFzaWRlIHRoZSBnZW5lcmF0b3IncyBleGNlcHRpb24KICAgICAgICAgICAgc3RhdGUgYW5kIHJlc3RvcmUgdGhhdCBvZiB0aGUgY2FsbGluZyBmcmFtZS4gSWYgdGhlIGN1cnJlbnQKQEAgLTM1OTcsOSArMzYzNCwxMSBAQAogICAgICAgICAgICBzdGF0ZSBjYW1lIGludG8gZXhpc3RlbmNlIGluIHRoaXMgZnJhbWUuIChBbiB1bmNhdWdodCBleGNlcHRpb24KICAgICAgICAgICAgd291bGQgaGF2ZSB3aHkgPT0gV0hZX0VYQ0VQVElPTiwgYW5kIHdlIHdvdWxkbid0IGJlIGhlcmUpLiAqLwogICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGYtPmZfaWJsb2NrOyBpKyspCi0gICAgICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSA9PSBFWENFUFRfSEFORExFUikKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGYtPmZfaWJsb2NrOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmLT5mX2Jsb2Nrc3RhY2tbaV0uYl90eXBlID09IEVYQ0VQVF9IQU5ETEVSKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGkgPT0gZi0+Zl9pYmxvY2spCiAgICAgICAgICAgICAvKiBXZSBkaWQgbm90IGNyZWF0ZSB0aGlzIGV4Y2VwdGlvbi4gKi8KICAgICAgICAgICAgIHJlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwpAQCAtMzY0MCw2ICszNjc5LDggQEAKIAogICAgIC8qIHBvcCBmcmFtZSAqLwogZXhpdF9ldmFsX2ZyYW1lOgorICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9SRVRVUk5fRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuKGYpOwogICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogICAgIGYtPmZfZXhlY3V0aW5nID0gMDsKICAgICB0c3RhdGUtPmZyYW1lID0gZi0+Zl9iYWNrOwpAQCAtMzcxMCwxMiArMzc1MSwxMiBAQAogfQogCiBzdGF0aWMgdm9pZAotbWlzc2luZ19hcmd1bWVudHMoUHlDb2RlT2JqZWN0ICpjbywgaW50IG1pc3NpbmcsIGludCBkZWZjb3VudCwKK21pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgbWlzc2luZywgUHlfc3NpemVfdCBkZWZjb3VudCwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKIHsKLSAgICBpbnQgaSwgaiA9IDA7Ci0gICAgaW50IHN0YXJ0LCBlbmQ7Ci0gICAgaW50IHBvc2l0aW9uYWwgPSBkZWZjb3VudCAhPSAtMTsKKyAgICBQeV9zc2l6ZV90IGksIGogPSAwOworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZDsKKyAgICBpbnQgcG9zaXRpb25hbCA9IChkZWZjb3VudCAhPSAtMSk7CiAgICAgY29uc3QgY2hhciAqa2luZCA9IHBvc2l0aW9uYWwgPyAicG9zaXRpb25hbCIgOiAia2V5d29yZC1vbmx5IjsKICAgICBQeU9iamVjdCAqbWlzc2luZ19uYW1lczsKIApAQCAtMzc0OCwzMyArMzc4OSwzOSBAQAogfQogCiBzdGF0aWMgdm9pZAotdG9vX21hbnlfcG9zaXRpb25hbChQeUNvZGVPYmplY3QgKmNvLCBpbnQgZ2l2ZW4sIGludCBkZWZjb3VudCwgUHlPYmplY3QgKipmYXN0bG9jYWxzKQordG9vX21hbnlfcG9zaXRpb25hbChQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IGdpdmVuLCBQeV9zc2l6ZV90IGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCiB7CiAgICAgaW50IHBsdXJhbDsKLSAgICBpbnQga3dvbmx5X2dpdmVuID0gMDsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IGt3b25seV9naXZlbiA9IDA7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICpzaWcsICprd29ubHlfc2lnOworICAgIFB5X3NzaXplX3QgY29fYXJnY291bnQgPSBjby0+Y29fYXJnY291bnQ7CiAKICAgICBhc3NlcnQoKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpID09IDApOwogICAgIC8qIENvdW50IG1pc3Npbmcga2V5d29yZC1vbmx5IGFyZ3MuICovCi0gICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspCi0gICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQorICAgIGZvciAoaSA9IGNvX2FyZ2NvdW50OyBpIDwgY29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7IGkrKykgeworICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkgewogICAgICAgICAgICAga3dvbmx5X2dpdmVuKys7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGRlZmNvdW50KSB7Ci0gICAgICAgIGludCBhdGxlYXN0ID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIFB5X3NzaXplX3QgYXRsZWFzdCA9IGNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CiAgICAgICAgIHBsdXJhbCA9IDE7Ci0gICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICVkIHRvICVkIiwgYXRsZWFzdCwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImZyb20gJXpkIHRvICV6ZCIsIGF0bGVhc3QsIGNvX2FyZ2NvdW50KTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHBsdXJhbCA9IGNvLT5jb19hcmdjb3VudCAhPSAxOwotICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJWQiLCBjby0+Y29fYXJnY291bnQpOworICAgICAgICBwbHVyYWwgPSAoY29fYXJnY291bnQgIT0gMSk7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlemQiLCBjb19hcmdjb3VudCk7CiAgICAgfQogICAgIGlmIChzaWcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChrd29ubHlfZ2l2ZW4pIHsKLSAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiOwotICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LCBnaXZlbiAhPSAxID8gInMiIDogIiIsIGt3b25seV9naXZlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKKyAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlemQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKKyAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuICE9IDEgPyAicyIgOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiAhPSAxID8gInMiIDogIiIpOwogICAgICAgICBpZiAoa3dvbmx5X3NpZyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2lnKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3ODYsNyArMzgzMyw3IEBACiAgICAgICAgIGFzc2VydChrd29ubHlfc2lnICE9IE5VTEwpOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlVSBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICVkJVUgJXMgZ2l2ZW4iLAorICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlVSBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICV6ZCVVICVzIGdpdmVuIiwKICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCiAgICAgICAgICAgICAgICAgIHNpZywKICAgICAgICAgICAgICAgICAgcGx1cmFsID8gInMiIDogIiIsCkBAIC0zODAzLDIwICszODUwLDIyIEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoUHlPYmplY3QgKl9jbywgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCi0gICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgaW50IGFyZ2NvdW50LCBQeU9iamVjdCAqKmt3cywgaW50IGt3Y291bnQsCi0gICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSwKKyAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IGFyZ2NvdW50LAorICAgICAgICAgICBQeU9iamVjdCAqKmt3bmFtZXMsIFB5T2JqZWN0ICoqa3dhcmdzLAorICAgICAgICAgICBQeV9zc2l6ZV90IGt3Y291bnQsIGludCBrd3N0ZXAsCisgICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgUHlfc3NpemVfdCBkZWZjb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCiAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlDb2RlT2JqZWN0KiBjbyA9IChQeUNvZGVPYmplY3QqKV9jbzsKICAgICBQeUZyYW1lT2JqZWN0ICpmOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipmcmVldmFyczsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqeCwgKnU7Ci0gICAgaW50IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7Ci0gICAgaW50IGk7Ci0gICAgaW50IG4gPSBhcmdjb3VudDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5T2JqZWN0ICprd2RpY3Q7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKQEAgLTM4MjQsMzYgKzM4NzMsNTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgLyogQ3JlYXRlIHRoZSBmcmFtZSAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgYXNzZXJ0KHRzdGF0ZSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKICAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgbG9jYWxzKTsKLSAgICBpZiAoZiA9PSBOVUxMKQorICAgIGlmIChmID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICB9CiAgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICBmcmVldmFycyA9IGYtPmZfbG9jYWxzcGx1cyArIGNvLT5jb19ubG9jYWxzOwogCi0gICAgLyogUGFyc2UgYXJndW1lbnRzLiAqLworICAgIC8qIENyZWF0ZSBhIGRpY3Rpb25hcnkgZm9yIGtleXdvcmQgcGFyYW1ldGVycyAoKiprd2FncykgKi8KICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpIHsKICAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOwogICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGkgPSB0b3RhbF9hcmdzOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKKyAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQogICAgICAgICBTRVRMT0NBTChpLCBrd2RpY3QpOwogICAgIH0KLSAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpCisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgLyogQ29weSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGxvY2FsIHZhcmlhYmxlcyAqLworICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCkgewogICAgICAgICBuID0gY28tPmNvX2FyZ2NvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbiA9IGFyZ2NvdW50OworICAgIH0KICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIHggPSBhcmdzW2ldOwogICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgIFNFVExPQ0FMKGksIHgpOwogICAgIH0KKworICAgIC8qIFBhY2sgb3RoZXIgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byB0aGUgKmFyZ3MgYXJndW1lbnQgKi8KICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgewogICAgICAgICB1ID0gUHlUdXBsZV9OZXcoYXJnY291bnQgLSBuKTsKLSAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CiAgICAgICAgIFNFVExPQ0FMKHRvdGFsX2FyZ3MsIHUpOwogICAgICAgICBmb3IgKGkgPSBuOyBpIDwgYXJnY291bnQ7IGkrKykgewogICAgICAgICAgICAgeCA9IGFyZ3NbaV07CkBAIC0zODYxLDY5ICszOTI0LDgyIEBACiAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHUsIGktbiwgeCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkrKykgeworCisgICAgLyogSGFuZGxlIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBhcyB0d28gc3RyaWRlZCBhcnJheXMgKi8KKyAgICBrd2NvdW50ICo9IGt3c3RlcDsKKyAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSArPSBrd3N0ZXApIHsKICAgICAgICAgUHlPYmplY3QgKipjb192YXJuYW1lczsKLSAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd3NbMippXTsKLSAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dzWzIqaSArIDFdOwotICAgICAgICBpbnQgajsKKyAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd25hbWVzW2ldOworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd2FyZ3NbaV07CisgICAgICAgIFB5X3NzaXplX3QgajsKKwogICAgICAgICBpZiAoa2V5d29yZCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soa2V5d29yZCkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKwogICAgICAgICAvKiBTcGVlZCBoYWNrOiBkbyByYXcgcG9pbnRlciBjb21wYXJlcy4gQXMgbmFtZXMgYXJlCiAgICAgICAgICAgIG5vcm1hbGx5IGludGVybmVkIHRoaXMgc2hvdWxkIGFsbW9zdCBhbHdheXMgaGl0LiAqLwogICAgICAgICBjb192YXJuYW1lcyA9ICgoUHlUdXBsZU9iamVjdCAqKShjby0+Y29fdmFybmFtZXMpKS0+b2JfaXRlbTsKICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICBpZiAobm0gPT0ga2V5d29yZCkKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpZiAobmFtZSA9PSBrZXl3b3JkKSB7CiAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIC8qIFNsb3cgZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqLwogICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKLSAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCi0gICAgICAgICAgICAgICAga2V5d29yZCwgbm0sIFB5X0VRKTsKLSAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBjb192YXJuYW1lc1tqXTsKKyAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woIGtleXdvcmQsIG5hbWUsIFB5X0VRKTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKSB7CiAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgaWYgKGogPj0gdG90YWxfYXJncyAmJiBrd2RpY3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJyVTJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwga2V5d29yZCk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXl3b3JkLCB2YWx1ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBjb250aW51ZTsKKwogICAgICAga3dfZm91bmQ6CiAgICAgICAgIGlmIChHRVRMT0NBTChqKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIGtleXdvcmQpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgICAgIFNFVExPQ0FMKGosIHZhbHVlKTsKICAgICB9CisKKyAgICAvKiBDaGVjayB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICovCiAgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50ICYmICEoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykpIHsKICAgICAgICAgdG9vX21hbnlfcG9zaXRpb25hbChjbywgYXJnY291bnQsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KKworICAgIC8qIEFkZCBtaXNzaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzIChjb3B5IGRlZmF1bHQgdmFsdWVzIGZyb20gZGVmcykgKi8KICAgICBpZiAoYXJnY291bnQgPCBjby0+Y29fYXJnY291bnQpIHsKLSAgICAgICAgaW50IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKLSAgICAgICAgaW50IG1pc3NpbmcgPSAwOwotICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykKLSAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKQorICAgICAgICBQeV9zc2l6ZV90IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBtaXNzaW5nID0gMDsKKyAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgbWlzc2luZysrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChtaXNzaW5nKSB7CiAgICAgICAgICAgICBtaXNzaW5nX2FyZ3VtZW50cyhjbywgbWlzc2luZywgZGVmY291bnQsIGZhc3Rsb2NhbHMpOwogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMzk0MCw4ICs0MDE2LDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvKiBBZGQgbWlzc2luZyBrZXl3b3JkIGFyZ3VtZW50cyAoY29weSBkZWZhdWx0IHZhbHVlcyBmcm9tIGt3ZGVmcykgKi8KICAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID4gMCkgewotICAgICAgICBpbnQgbWlzc2luZyA9IDA7CisgICAgICAgIFB5X3NzaXplX3QgbWlzc2luZyA9IDA7CiAgICAgICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IHRvdGFsX2FyZ3M7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKQEAgLTM5ODIsMTMgKzQwNjAsMTYgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgU0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpLCBjKTsKICAgICB9CisKKyAgICAvKiBDb3B5IGNsb3N1cmUgdmFyaWFibGVzIHRvIGZyZWUgdmFyaWFibGVzICovCiAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKTsgKytpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShjbG9zdXJlLCBpKTsKICAgICAgICAgUHlfSU5DUkVGKG8pOwogICAgICAgICBmcmVldmFyc1tQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKyBpXSA9IG87CiAgICAgfQogCi0gICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgLyogSGFuZGxlIGdlbmVyYXRvci9jb3JvdXRpbmUvYXN5bmNocm9ub3VzIGdlbmVyYXRvciAqLworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBQeU9iamVjdCAqZ2VuOwogICAgICAgICBQeU9iamVjdCAqY29yb193cmFwcGVyID0gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKICAgICAgICAgaW50IGlzX2Nvcm8gPSBjby0+Y29fZmxhZ3MgJiBDT19DT1JPVVRJTkU7CkBAIC00MDEzLDYgKzQwOTQsOCBAQAogICAgICAgICAgKiBhbmQgcmV0dXJuIHRoYXQgYXMgdGhlIHZhbHVlLiAqLwogICAgICAgICBpZiAoaXNfY29ybykgewogICAgICAgICAgICAgZ2VuID0gUHlDb3JvX05ldyhmLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY28tPmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKSB7CisgICAgICAgICAgICBnZW4gPSBQeUFzeW5jR2VuX05ldyhmLCBuYW1lLCBxdWFsbmFtZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBnZW4gPSBQeUdlbl9OZXdXaXRoUXVhbE5hbWUoZiwgbmFtZSwgcXVhbG5hbWUpOwogICAgICAgICB9CkBAIC00MDUyLDggKzQxMzUsMTAgQEAKICAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQogewogICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoX2NvLCBnbG9iYWxzLCBsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwga3dzLCBrd2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcywgZGVmY291bnQsIGt3ZGVmcywgY2xvc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFyZ2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dzLCBrd3MgKyAxLCBrd2NvdW50LCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcywgZGVmY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RlZnMsIGNsb3N1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKIH0KIApAQCAtNDMxMiw3ICs0Mzk3LDcgQEAKIAogI2lmZGVmIExMVFJBQ0UKIHN0YXRpYyBpbnQKLXBydHJhY2UoUHlPYmplY3QgKnYsIGNoYXIgKnN0cikKK3BydHJhY2UoUHlPYmplY3QgKnYsIGNvbnN0IGNoYXIgKnN0cikKIHsKICAgICBwcmludGYoIiVzICIsIHN0cik7CiAgICAgaWYgKFB5T2JqZWN0X1ByaW50KHYsIHN0ZG91dCwgMCkgIT0gMCkKQEAgLTQ0ODksNiArNDU3NCwzOCBAQAogICAgIHJldHVybiB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOwogfQogCit2b2lkCitfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKFB5T2JqZWN0ICpmaXJzdGl0ZXIpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIFB5X1hJTkNSRUYoZmlyc3RpdGVyKTsKKyAgICBQeV9YU0VUUkVGKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlciwgZmlyc3RpdGVyKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcih2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlcjsKK30KKwordm9pZAorX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihQeU9iamVjdCAqZmluYWxpemVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKGZpbmFsaXplcik7CisgICAgUHlfWFNFVFJFRih0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXIsIGZpbmFsaXplcik7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXI7Cit9CisKIFB5T2JqZWN0ICoKIFB5RXZhbF9HZXRCdWlsdGlucyh2b2lkKQogewpAQCAtNDU2MSwxMCArNDY3OCw4IEBACiAgICBUaGUgYXJnIG11c3QgYmUgYSB0dXBsZSBvciBOVUxMLiAgVGhlIGt3IG11c3QgYmUgYSBkaWN0IG9yIE5VTEwuICovCiAKIFB5T2JqZWN0ICoKLVB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQogI2lmZGVmIFB5X0RFQlVHCiAgICAgLyogUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24KICAgICAgICBzZXQuIEl0IHJhaXNlcyBhIG5ldyBleGNlcHRpb24gaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZCBvciBpZgpAQCAtNDU3MiwzMCArNDY4NywyMyBAQAogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAjZW5kaWYKIAotICAgIGlmIChhcmcgPT0gTlVMTCkgewotICAgICAgICBhcmcgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBOVUxMLCAwLCBrd2FyZ3MpOwogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpKSB7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBsaXN0IG11c3QgYmUgYSB0dXBsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYoYXJnKTsKIAotICAgIGlmIChrdyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa3cpKSB7CisgICAgaWYgKGt3YXJncyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa3dhcmdzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgbGlzdCBtdXN0IGJlIGEgZGljdGlvbmFyeSIpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmcsIGt3KTsKLSAgICBQeV9ERUNSRUYoYXJnKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywga3dhcmdzKTsKIH0KIAogY29uc3QgY2hhciAqCkBAIC00NjI0LDIxICs0NzMyLDYgQEAKICAgICAgICAgcmV0dXJuICIgb2JqZWN0IjsKIH0KIAotc3RhdGljIHZvaWQKLWVycl9hcmdzKFB5T2JqZWN0ICpmdW5jLCBpbnQgZmxhZ3MsIGludCBuYXJncykKLXsKLSAgICBpZiAoZmxhZ3MgJiBNRVRIX05PQVJHUykKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYyktPm1fbWwtPm1sX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICBuYXJncyk7Ci0gICAgZWxzZQotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50ICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpLT5tX21sLT5tbF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpOwotfQotCiAjZGVmaW5lIENfVFJBQ0UoeCwgY2FsbCkgXAogaWYgKHRzdGF0ZS0+dXNlX3RyYWNpbmcgJiYgdHN0YXRlLT5jX3Byb2ZpbGVmdW5jKSB7IFwKICAgICBpZiAoY2FsbF90cmFjZSh0c3RhdGUtPmNfcHJvZmlsZWZ1bmMsIHRzdGF0ZS0+Y19wcm9maWxlb2JqLCBcCkBAIC00NjcxLDYwICs0NzY0LDI1IEBACiAgICAgfQogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG9wYXJnCi0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgICAgICAgICAsIHVpbnQ2NCogcGludHIwLCB1aW50NjQqIHBpbnRyMQotI2VuZGlmCi0gICAgICAgICAgICAgICAgKQorY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKipwcF9zdGFjaywgUHlfc3NpemVfdCBvcGFyZywgUHlPYmplY3QgKmt3bmFtZXMpCiB7Ci0gICAgaW50IG5hID0gb3BhcmcgJiAweGZmOwotICAgIGludCBuayA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgIGludCBuID0gbmEgKyAyICogbms7Ci0gICAgUHlPYmplY3QgKipwZnVuYyA9ICgqcHBfc3RhY2spIC0gbiAtIDE7CisgICAgUHlPYmplY3QgKipwZnVuYyA9ICgqcHBfc3RhY2spIC0gb3BhcmcgLSAxOwogICAgIFB5T2JqZWN0ICpmdW5jID0gKnBmdW5jOwogICAgIFB5T2JqZWN0ICp4LCAqdzsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5X3NzaXplX3QgbmFyZ3MgPSBvcGFyZyAtIG5rd2FyZ3M7CisgICAgUHlPYmplY3QgKipzdGFjazsKIAogICAgIC8qIEFsd2F5cyBkaXNwYXRjaCBQeUNGdW5jdGlvbiBmaXJzdCwgYmVjYXVzZSB0aGVzZSBhcmUKICAgICAgICBwcmVzdW1lZCB0byBiZSB0aGUgbW9zdCBmcmVxdWVudCBjYWxsYWJsZSBvYmplY3QuCiAgICAgKi8KLSAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykgJiYgbmsgPT0gMCkgewotICAgICAgICBpbnQgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYyk7CisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAKICAgICAgICAgUENBTEwoUENBTExfQ0ZVTkNUSU9OKTsKLSAgICAgICAgaWYgKGZsYWdzICYgKE1FVEhfTk9BUkdTIHwgTUVUSF9PKSkgewotICAgICAgICAgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzZWxmID0gUHlDRnVuY3Rpb25fR0VUX1NFTEYoZnVuYyk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBNRVRIX05PQVJHUyAmJiBuYSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCAoKm1ldGgpKHNlbGYsTlVMTCkpOwogCi0gICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBNRVRIX08gJiYgbmEgPT0gMSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCAoKm1ldGgpKHNlbGYsYXJnKSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0KLSAgICAgICAgICAgICAgICB4ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgeCwgTlVMTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJfYXJncyhmdW5jLCBmbGFncywgbmEpOwotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKmNhbGxhcmdzOwotICAgICAgICAgICAgY2FsbGFyZ3MgPSBsb2FkX2FyZ3MocHBfc3RhY2ssIG5hKTsKLSAgICAgICAgICAgIGlmIChjYWxsYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMCk7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCBQeUNGdW5jdGlvbl9DYWxsKGZ1bmMsY2FsbGFyZ3MsTlVMTCkpOwotICAgICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjEpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgc3RhY2sgPSAoKnBwX3N0YWNrKSAtIG5hcmdzIC0gbmt3YXJnczsKKyAgICAgICAgQ19UUkFDRSh4LCBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7CkBAIC00NzM2LDIxICs0Nzk0LDI2IEBACiAgICAgICAgICAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOwogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwogICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7Ci0gICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgbisrOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5hcmdzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjApOwotICAgICAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgICAgIHggPSBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHBwX3N0YWNrLCBuLCBuYSwgbmspOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB4ID0gZG9fY2FsbChmdW5jLCBwcF9zdGFjaywgbmEsIG5rKTsKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMSk7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgfQogCi0gICAgICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKyAgICAgICAgc3RhY2sgPSAoKnBwX3N0YWNrKSAtIG5hcmdzIC0gbmt3YXJnczsKKworICAgICAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICAgICAgeCA9IGZhc3RfZnVuY3Rpb24oZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHggPSBfUHlPYmplY3RfRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIH0KIAorICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKwogICAgIC8qIENsZWFyIHRoZSBzdGFjayBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgQWxzbyByZW1vdmVzCiAgICAgICAgdGhlIGFyZ3VtZW50cyBpbiBjYXNlIHRoZXkgd2VyZW4ndCBjb25zdW1lZCBhbHJlYWR5CiAgICAgICAgKGZhc3RfZnVuY3Rpb24oKSBhbmQgZXJyX2FyZ3MoKSBsZWF2ZSB0aGVtIG9uIHRoZSBzdGFjaykuCkBAIC00NzYxLDcgKzQ4MjQsNiBAQAogICAgICAgICBQQ0FMTChQQ0FMTF9QT1ApOwogICAgIH0KIAotICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKICAgICByZXR1cm4geDsKIH0KIApAQCAtNDc3NCwxNTkgKzQ4MzYsMTk3IEBACiAgICBkb25lIGJlZm9yZSBldmFsdWF0aW5nIHRoZSBmcmFtZS4KICovCiAKK3N0YXRpYyBQeU9iamVjdCoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpnbG9iYWxzKQoreworICAgIFB5RnJhbWVPYmplY3QgKmY7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHM7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBQQ0FMTChQQ0FMTF9GQVNURVJfRlVOQ1RJT04pOworICAgIGFzc2VydChnbG9iYWxzICE9IE5VTEwpOworICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBjcmVhdGUgYSBzcGVjaWFsaXplZAorICAgICAgIFB5RnJhbWVfTmV3KCkgdGhhdCBkb2Vzbid0IHRha2UgbG9jYWxzLCBidXQgZG9lcworICAgICAgIHRha2UgYnVpbHRpbnMgd2l0aG91dCBzYW5pdHkgY2hlY2tpbmcgdGhlbS4KKyAgICAgICAqLworICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7CisgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIE5VTEwpOworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKKworICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5X0lOQ1JFRigqYXJncyk7CisgICAgICAgIGZhc3Rsb2NhbHNbaV0gPSAqYXJncysrOworICAgIH0KKyAgICByZXN1bHQgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKKworICAgICsrdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7CisgICAgUHlfREVDUkVGKGYpOworICAgIC0tdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlPYmplY3QgKgotZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBuLCBpbnQgbmEsIGludCBuaykKK2Zhc3RfZnVuY3Rpb24oUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSAoUHlDb2RlT2JqZWN0ICopUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKTsKICAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyk7CiAgICAgUHlPYmplY3QgKmFyZ2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9ERUZBVUxUUyhmdW5jKTsKLSAgICBQeU9iamVjdCAqa3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7Ci0gICAgUHlPYmplY3QgKnF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKLSAgICBQeU9iamVjdCAqKmQgPSBOVUxMOwotICAgIGludCBuZCA9IDA7CisgICAgUHlPYmplY3QgKmt3ZGVmcywgKmNsb3N1cmUsICpuYW1lLCAqcXVhbG5hbWU7CisgICAgUHlPYmplY3QgKipkOworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IChrd25hbWVzID09IE5VTEwpID8gMCA6IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgUHlfc3NpemVfdCBuZDsKKworICAgIGFzc2VydChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUgKi8KIAogICAgIFBDQUxMKFBDQUxMX0ZVTkNUSU9OKTsKICAgICBQQ0FMTChQQ0FMTF9GQVNUX0ZVTkNUSU9OKTsKLSAgICBpZiAoYXJnZGVmcyA9PSBOVUxMICYmIGNvLT5jb19hcmdjb3VudCA9PSBuICYmCi0gICAgICAgIGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmIG5rPT0wICYmCi0gICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkgewotICAgICAgICBQeUZyYW1lT2JqZWN0ICpmOwotICAgICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKLSAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKLSAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzLCAqKnN0YWNrOwotICAgICAgICBpbnQgaTsKIAotICAgICAgICBQQ0FMTChQQ0FMTF9GQVNURVJfRlVOQ1RJT04pOwotICAgICAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKLSAgICAgICAgLyogWFhYIFBlcmhhcHMgd2Ugc2hvdWxkIGNyZWF0ZSBhIHNwZWNpYWxpemVkCi0gICAgICAgICAgIFB5RnJhbWVfTmV3KCkgdGhhdCBkb2Vzbid0IHRha2UgbG9jYWxzLCBidXQgZG9lcwotICAgICAgICAgICB0YWtlIGJ1aWx0aW5zIHdpdGhvdXQgc2FuaXR5IGNoZWNraW5nIHRoZW0uCi0gICAgICAgICovCi0gICAgICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7Ci0gICAgICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBOVUxMKTsKLSAgICAgICAgaWYgKGYgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7Ci0gICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRigqc3RhY2spOwotICAgICAgICAgICAgZmFzdGxvY2Fsc1tpXSA9ICpzdGFjaysrOworICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJiBua3dhcmdzID09IDAgJiYKKyAgICAgICAgY28tPmNvX2ZsYWdzID09IChDT19PUFRJTUlaRUQgfCBDT19ORVdMT0NBTFMgfCBDT19OT0ZSRUUpKQorICAgIHsKKyAgICAgICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbmFyZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgc3RhY2ssIG5hcmdzLCBnbG9iYWxzKTsKICAgICAgICAgfQotICAgICAgICByZXR2YWwgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKLSAgICAgICAgKyt0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKLSAgICAgICAgUHlfREVDUkVGKGYpOwotICAgICAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOwotICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICBlbHNlIGlmIChuYXJncyA9PSAwICYmIGFyZ2RlZnMgIT0gTlVMTAorICAgICAgICAgICAgICAgICAmJiBjby0+Y29fYXJnY291bnQgPT0gUHlfU0laRShhcmdkZWZzKSkgeworICAgICAgICAgICAgLyogZnVuY3Rpb24gY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLCBidXQgYWxsIHBhcmFtZXRlcnMgaGF2ZQorICAgICAgICAgICAgICAgYSBkZWZhdWx0IHZhbHVlOiB1c2UgZGVmYXVsdCB2YWx1ZXMgYXMgYXJndW1lbnRzIC4qLworICAgICAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgc3RhY2ssIFB5X1NJWkUoYXJnZGVmcyksIGdsb2JhbHMpOworICAgICAgICB9CiAgICAgfQorCisgICAga3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgY2xvc3VyZSA9IFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyk7CisgICAgbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKKyAgICBxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CisKICAgICBpZiAoYXJnZGVmcyAhPSBOVUxMKSB7CiAgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKICAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOwogICAgIH0KLSAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMLCAoKnBwX3N0YWNrKS1uLCBuYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcHBfc3RhY2spLTIqbmssIG5rLCBkLCBuZCwga3dkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHF1YWxuYW1lKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKm9yaWdfa3dkaWN0LCBpbnQgbmssIFB5T2JqZWN0ICoqKnBwX3N0YWNrLAotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYykKLXsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBpZiAob3JpZ19rd2RpY3QgPT0gTlVMTCkKLSAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOwogICAgIGVsc2UgewotICAgICAgICBrd2RpY3QgPSBQeURpY3RfQ29weShvcmlnX2t3ZGljdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcmlnX2t3ZGljdCk7CisgICAgICAgIGQgPSBOVUxMOworICAgICAgICBuZCA9IDA7CiAgICAgfQotICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2hpbGUgKC0tbmsgPj0gMCkgewotICAgICAgICBpbnQgZXJyOwotICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5T2JqZWN0ICprZXkgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShrd2RpY3QsIGtleSkgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgZ290IG11bHRpcGxlIHZhbHVlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywgKFB5T2JqZWN0ICopTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5rd2FyZ3MgPyAmUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCAwKSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayArIG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmt3YXJncywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQsIChpbnQpbmQsIGt3ZGVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUsIG5hbWUsIHF1YWxuYW1lKTsKK30KKworUHlPYmplY3QgKgorX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgcmV0dXJuIGZhc3RfZnVuY3Rpb24oZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKK30KKworUHlPYmplY3QgKgorX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKVB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyk7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOworICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7CisgICAgUHlPYmplY3QgKmt3ZGVmcywgKmNsb3N1cmUsICpuYW1lLCAqcXVhbG5hbWU7CisgICAgUHlPYmplY3QgKmt3dHVwbGUsICoqazsKKyAgICBQeU9iamVjdCAqKmQ7CisgICAgUHlfc3NpemVfdCBuZCwgbms7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7CisgICAgUENBTEwoUENBTExfRkFTVF9GVU5DVElPTik7CisKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYKKyAgICAgICAgKGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3YXJncykgPT0gMCkgJiYKKyAgICAgICAgY28tPmNvX2ZsYWdzID09IChDT19PUFRJTUlaRUQgfCBDT19ORVdMT0NBTFMgfCBDT19OT0ZSRUUpKQorICAgIHsKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAoYXJnZGVmcyA9PSBOVUxMICYmIGNvLT5jb19hcmdjb3VudCA9PSBuYXJncykgeworICAgICAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsKGNvLCBhcmdzLCBuYXJncywgZ2xvYmFscyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMCAmJiBhcmdkZWZzICE9IE5VTEwKKyAgICAgICAgICAgICAgICAgJiYgY28tPmNvX2FyZ2NvdW50ID09IFB5X1NJWkUoYXJnZGVmcykpIHsKKyAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgYnV0IGFsbCBwYXJhbWV0ZXJzIGhhdmUKKyAgICAgICAgICAgICAgIGEgZGVmYXVsdCB2YWx1ZTogdXNlIGRlZmF1bHQgdmFsdWVzIGFzIGFyZ3VtZW50cyAuKi8KKyAgICAgICAgICAgIGFyZ3MgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgYXJncywgUHlfU0laRShhcmdkZWZzKSwgZ2xvYmFscyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoa3dhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgUHlfc3NpemVfdCBwb3MsIGk7CisgICAgICAgIG5rID0gUHlEaWN0X1NpemUoa3dhcmdzKTsKKworICAgICAgICBrd3R1cGxlID0gUHlUdXBsZV9OZXcoMiAqIG5rKTsKKyAgICAgICAgaWYgKGt3dHVwbGUgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXksIHZhbHVlKTsKLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgayA9ICZQeVR1cGxlX0dFVF9JVEVNKGt3dHVwbGUsIDApOworICAgICAgICBwb3MgPSBpID0gMDsKKyAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGt3YXJncywgJnBvcywgJmtbaV0sICZrW2krMV0pKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoa1tpXSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa1tpKzFdKTsKKyAgICAgICAgICAgIGkgKz0gMjsKICAgICAgICAgfQorICAgICAgICBuayA9IGkgLyAyOwogICAgIH0KLSAgICByZXR1cm4ga3dkaWN0OworICAgIGVsc2UgeworICAgICAgICBrd3R1cGxlID0gTlVMTDsKKyAgICAgICAgayA9IE5VTEw7CisgICAgICAgIG5rID0gMDsKKyAgICB9CisKKyAgICBrd2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9LV19ERUZBVUxUUyhmdW5jKTsKKyAgICBjbG9zdXJlID0gUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKTsKKyAgICBuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOworICAgIHF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKKworICAgIGlmIChhcmdkZWZzICE9IE5VTEwpIHsKKyAgICAgICAgZCA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOworICAgICAgICBuZCA9IFB5X1NJWkUoYXJnZGVmcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgbmQgPSAwOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLCAoUHlPYmplY3QgKilOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaywgayArIDEsIG5rLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCBuZCwga3dkZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgUHlfWERFQ1JFRihrd3R1cGxlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdXBkYXRlX3N0YXJfYXJncyhpbnQgbnN0YWNrLCBpbnQgbnN0YXIsIFB5T2JqZWN0ICpzdGFyYXJnLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKipwcF9zdGFjaykKK2RvX2NhbGxfY29yZShQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmNhbGxhcmdzLCBQeU9iamVjdCAqa3dkaWN0KQogewotICAgIFB5T2JqZWN0ICpjYWxsYXJncywgKnc7Ci0KLSAgICBjYWxsYXJncyA9IFB5VHVwbGVfTmV3KG5zdGFjayArIG5zdGFyKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKG5zdGFyKSB7Ci0gICAgICAgIGludCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnN0YXI7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKmEgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXJhcmcsIGkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKGEpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjYWxsYXJncywgbnN0YWNrICsgaSwgYSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKC0tbnN0YWNrID49IDApIHsKLSAgICAgICAgdyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjYWxsYXJncywgbnN0YWNrLCB3KTsKLSAgICB9Ci0gICAgcmV0dXJuIGNhbGxhcmdzOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9hcmdzKFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbmEpCi17Ci0gICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhuYSk7Ci0gICAgUHlPYmplY3QgKnc7Ci0KLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3aGlsZSAoLS1uYSA+PSAwKSB7Ci0gICAgICAgIHcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgbmEsIHcpOwotICAgIH0KLSAgICByZXR1cm4gYXJnczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWRvX2NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbmEsIGludCBuaykKLXsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgaWYgKG5rID4gMCkgewotICAgICAgICBrd2RpY3QgPSB1cGRhdGVfa2V5d29yZF9hcmdzKE5VTEwsIG5rLCBwcF9zdGFjaywgZnVuYyk7Ci0gICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gY2FsbF9mYWlsOwotICAgIH0KLSAgICBjYWxsYXJncyA9IGxvYWRfYXJncyhwcF9zdGFjaywgbmEpOwotICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGNhbGxfZmFpbDsKICNpZmRlZiBDQUxMX1BST0ZJTEUKICAgICAvKiBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIHRvIGxvb2sgYXQgdGhlIHR5cGUgb2YgZnVuYyB0bwogICAgICAgIHVwZGF0ZSB0aGUgY2FsbCBzdGF0cyBwcm9wZXJseS4gIERvIGl0IGhlcmUgc28gYXMgdG8gYXZvaWQKQEAgLTQ5NDMsMTE1ICs1MDQzLDE2IEBACiAgICAgZWxzZQogICAgICAgICBQQ0FMTChQQ0FMTF9PVEhFUik7CiAjZW5kaWYKKwogICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgICAgICBDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKLWNhbGxfZmFpbDoKLSAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICBQeV9YREVDUkVGKGt3ZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWV4dF9kb19jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IGZsYWdzLCBpbnQgbmEsIGludCBuaykKLXsKLSAgICBpbnQgbnN0YXIgPSAwOwotICAgIFB5T2JqZWN0ICpjYWxsYXJncyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnN0YXJhcmcgPSBOVUxMOwotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX0tXKSB7Ci0gICAgICAgIGt3ZGljdCA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soa3dkaWN0KSkgewotICAgICAgICAgICAgUHlPYmplY3QgKmQ7Ci0gICAgICAgICAgICBkID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShkLCBrd2RpY3QpICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgLyogUHlEaWN0X1VwZGF0ZSByYWlzZXMgYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgICogZXJyb3IgKHBlcmNvbGF0ZWQgZnJvbSBhbiBhdHRlbXB0Ci0gICAgICAgICAgICAgICAgICogdG8gZ2V0ICdrZXlzJyBhdHRyaWJ1dGUpIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAgKiBhIHR5cGUgZXJyb3IgaWYgaXRzIHNlY29uZCBhcmd1bWVudAotICAgICAgICAgICAgICAgICAqIGlzIG5vdCBhIG1hcHBpbmcuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RpY3QtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKLSAgICAgICAgICAgIGt3ZGljdCA9IGQ7Ci0gICAgICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7CiAgICAgfQotICAgIGlmIChuayA+IDApIHsKLSAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhrd2RpY3QsIG5rLCBwcF9zdGFjaywgZnVuYyk7Ci0gICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKSB7Ci0gICAgICAgIHN0YXJhcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGFyYXJnKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnQgPSBOVUxMOwotICAgICAgICAgICAgaWYgKFB5X1RZUEUoc3RhcmFyZyktPnRwX2l0ZXIgPT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICAgICAhUHlTZXF1ZW5jZV9DaGVjayhzdGFyYXJnKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJhcmctPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHQgPSBQeVNlcXVlbmNlX1R1cGxlKHN0YXJhcmcpOwotICAgICAgICAgICAgaWYgKHQgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFyYXJnKTsKLSAgICAgICAgICAgIHN0YXJhcmcgPSB0OwotICAgICAgICB9Ci0gICAgICAgIG5zdGFyID0gUHlUdXBsZV9HRVRfU0laRShzdGFyYXJnKTsKLSAgICB9Ci0gICAgY2FsbGFyZ3MgPSB1cGRhdGVfc3Rhcl9hcmdzKG5hLCBuc3Rhciwgc3RhcmFyZywgcHBfc3RhY2spOwotICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0jaWZkZWYgQ0FMTF9QUk9GSUxFCi0gICAgLyogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSB0eXBlIG9mIGZ1bmMgdG8KLSAgICAgICB1cGRhdGUgdGhlIGNhbGwgc3RhdHMgcHJvcGVybHkuICBEbyBpdCBoZXJlIHNvIGFzIHRvIGF2b2lkCi0gICAgICAgZXhwb3NpbmcgdGhlIGNhbGwgc3RhdHMgbWFjaGluZXJ5IG91dHNpZGUgY2V2YWwuYwotICAgICovCi0gICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX0ZVTkNUSU9OKTsKLSAgICBlbHNlIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfTUVUSE9EKTsKLSAgICBlbHNlIGlmIChQeVR5cGVfQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX1RZUEUpOwotICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9DRlVOQ1RJT04pOwotICAgIGVsc2UKLSAgICAgICAgUENBTEwoUENBTExfT1RIRVIpOwotI2VuZGlmCi0gICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgICAgIENfVFJBQ0UocmVzdWx0LCBQeUNGdW5jdGlvbl9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwotZXh0X2NhbGxfZmFpbDoKLSAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICBQeV9YREVDUkVGKGt3ZGljdCk7Ci0gICAgUHlfWERFQ1JFRihzdGFyYXJnKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBFeHRyYWN0IGEgc2xpY2UgaW5kZXggZnJvbSBhIFB5TG9uZyBvciBhbiBvYmplY3Qgd2l0aCB0aGUKQEAgLTUxNDEsNiArNTE0Miw0NiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgoraW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpmcm9tbGlzdCwgUHlPYmplY3QgKmxldmVsKQoreworICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOworICAgIFB5T2JqZWN0ICppbXBvcnRfZnVuYywgKnJlczsKKyAgICBQeU9iamVjdCogc3RhY2tbNV07CisKKyAgICBpbXBvcnRfZnVuYyA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOworICAgIGlmIChpbXBvcnRfZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgIl9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEZhc3QgcGF0aCBmb3Igbm90IG92ZXJsb2FkZWQgX19pbXBvcnRfXy4gKi8KKyAgICBpZiAoaW1wb3J0X2Z1bmMgPT0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5pbXBvcnRfZnVuYykgeworICAgICAgICBpbnQgaWxldmVsID0gX1B5TG9uZ19Bc0ludChsZXZlbCk7CisgICAgICAgIGlmIChpbGV2ZWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/IFB5X05vbmUgOiBmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgaWxldmVsKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoaW1wb3J0X2Z1bmMpOworCisgICAgc3RhY2tbMF0gPSBuYW1lOworICAgIHN0YWNrWzFdID0gZi0+Zl9nbG9iYWxzOworICAgIHN0YWNrWzJdID0gZi0+Zl9sb2NhbHMgPT0gTlVMTCA/IFB5X05vbmUgOiBmLT5mX2xvY2FsczsKKyAgICBzdGFja1szXSA9IGZyb21saXN0OworICAgIHN0YWNrWzRdID0gbGV2ZWw7CisgICAgcmVzID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGltcG9ydF9mdW5jLCBzdGFjaywgNSk7CisgICAgUHlfREVDUkVGKGltcG9ydF9mdW5jKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogaW1wb3J0X2Zyb20oUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5T2JqZWN0ICp4OwpAQCAtNTI3Niw3ICs1MzE3LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfY29uY2F0ZW5hdGUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LAotICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCB1bnNpZ25lZCBjaGFyICpuZXh0X2luc3RyKQorICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHIpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDIpIHsKQEAgLTUyODYsMTAgKzUzMjcsMTEgQEAKICAgICAgICAgICogJ3ZhcmlhYmxlJy4gIFdlIHRyeSB0byBkZWxldGUgdGhlIHZhcmlhYmxlIG5vdyB0byByZWR1Y2UKICAgICAgICAgICogdGhlIHJlZmNudCB0byAxLgogICAgICAgICAgKi8KLSAgICAgICAgc3dpdGNoICgqbmV4dF9pbnN0cikgeworICAgICAgICBpbnQgb3Bjb2RlLCBvcGFyZzsKKyAgICAgICAgTkVYVE9QQVJHKCk7CisgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgU1RPUkVfRkFTVDoKICAgICAgICAgewotICAgICAgICAgICAgaW50IG9wYXJnID0gUEVFS0FSRygpOwogICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwogICAgICAgICAgICAgaWYgKEdFVExPQ0FMKG9wYXJnKSA9PSB2KQogICAgICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCBOVUxMKTsKQEAgLTUyOTksNyArNTM0MSw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqZnJlZXZhcnMgPSAoZi0+Zl9sb2NhbHNwbHVzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9jb2RlLT5jb19ubG9jYWxzKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gZnJlZXZhcnNbUEVFS0FSRygpXTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gZnJlZXZhcnNbb3BhcmddOwogICAgICAgICAgICAgaWYgKFB5Q2VsbF9HRVQoYykgPT0gdikKICAgICAgICAgICAgICAgICBQeUNlbGxfU2V0KGMsIE5VTEwpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MzA3LDcgKzUzNDksNyBAQAogICAgICAgICBjYXNlIFNUT1JFX05BTUU6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcyA9IGYtPmZfY29kZS0+Y29fbmFtZXM7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIFBFRUtBUkcoKSk7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBmLT5mX2xvY2FsczsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChsb2NhbHMpICYmCiAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKSA9PSB2KSB7CkBAIC01MzY3LDMgKzU0MDksNzkgQEAKIH0KIAogI2VuZGlmCisKK1B5X3NzaXplX3QKK19QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4KGZyZWVmdW5jIGZyZWUpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICBQeV9zc2l6ZV90IG5ld19pbmRleDsKKworICAgIGlmICh0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgPT0gTUFYX0NPX0VYVFJBX1VTRVJTIC0gMSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG5ld19pbmRleCA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCsrOworICAgIHRzdGF0ZS0+Y29fZXh0cmFfZnJlZWZ1bmNzW25ld19pbmRleF0gPSBmcmVlOworICAgIHJldHVybiBuZXdfaW5kZXg7Cit9CisKK3N0YXRpYyB2b2lkCitkdHJhY2VfZnVuY3Rpb25fZW50cnkoUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBjaGFyKiBmaWxlbmFtZTsKKyAgICBjaGFyKiBmdW5jbmFtZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgIGZ1bmNuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX25hbWUpOworICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoZi0+Zl9jb2RlLCBmLT5mX2xhc3RpKTsKKworICAgIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vKTsKK30KKworc3RhdGljIHZvaWQKK2R0cmFjZV9mdW5jdGlvbl9yZXR1cm4oUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBjaGFyKiBmaWxlbmFtZTsKKyAgICBjaGFyKiBmdW5jbmFtZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgIGZ1bmNuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX25hbWUpOworICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoZi0+Zl9jb2RlLCBmLT5mX2xhc3RpKTsKKworICAgIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVubyk7Cit9CisKKy8qIERUcmFjZSBlcXVpdmFsZW50IG9mIG1heWJlX2NhbGxfbGluZV90cmFjZS4gKi8KK3N0YXRpYyB2b2lkCittYXliZV9kdHJhY2VfbGluZShQeUZyYW1lT2JqZWN0ICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgIGludCAqaW5zdHJfbGIsIGludCAqaW5zdHJfdWIsIGludCAqaW5zdHJfcHJldikKK3sKKyAgICBpbnQgbGluZSA9IGZyYW1lLT5mX2xpbmVubzsKKyAgICBjaGFyICpjb19maWxlbmFtZSwgKmNvX25hbWU7CisKKyAgICAvKiBJZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiBleGVjdXRlZCBpc24ndCBpbiB0aGUgY3VycmVudAorICAgICAgIGluc3RydWN0aW9uIHdpbmRvdywgcmVzZXQgdGhlIHdpbmRvdy4KKyAgICAqLworICAgIGlmIChmcmFtZS0+Zl9sYXN0aSA8ICppbnN0cl9sYiB8fCBmcmFtZS0+Zl9sYXN0aSA+PSAqaW5zdHJfdWIpIHsKKyAgICAgICAgUHlBZGRyUGFpciBib3VuZHM7CisgICAgICAgIGxpbmUgPSBfUHlDb2RlX0NoZWNrTGluZU51bWJlcihmcmFtZS0+Zl9jb2RlLCBmcmFtZS0+Zl9sYXN0aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib3VuZHMpOworICAgICAgICAqaW5zdHJfbGIgPSBib3VuZHMuYXBfbG93ZXI7CisgICAgICAgICppbnN0cl91YiA9IGJvdW5kcy5hcF91cHBlcjsKKyAgICB9CisgICAgLyogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gZmFsbHMgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSBvciBpZgorICAgICAgIGl0IHJlcHJlc2VudHMgYSBqdW1wIGJhY2t3YXJkcywgdXBkYXRlIHRoZSBmcmFtZSdzIGxpbmUKKyAgICAgICBudW1iZXIgYW5kIGNhbGwgdGhlIHRyYWNlIGZ1bmN0aW9uLiAqLworICAgIGlmIChmcmFtZS0+Zl9sYXN0aSA9PSAqaW5zdHJfbGIgfHwgZnJhbWUtPmZfbGFzdGkgPCAqaW5zdHJfcHJldikgeworICAgICAgICBmcmFtZS0+Zl9saW5lbm8gPSBsaW5lOworICAgICAgICBjb19maWxlbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICBpZiAoIWNvX2ZpbGVuYW1lKQorICAgICAgICAgICAgY29fZmlsZW5hbWUgPSAiPyI7CisgICAgICAgIGNvX25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOworICAgICAgICBpZiAoIWNvX25hbWUpCisgICAgICAgICAgICBjb19uYW1lID0gIj8iOworICAgICAgICBQeURUcmFjZV9MSU5FKGNvX2ZpbGVuYW1lLCBjb19uYW1lLCBsaW5lKTsKKyAgICB9CisgICAgKmluc3RyX3ByZXYgPSBmcmFtZS0+Zl9sYXN0aTsKK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbF9naWwuaCBiL1B5dGhvbi9jZXZhbF9naWwuaAppbmRleCA4ZDM4ZWU5Li5hM2I0NTBiIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWxfZ2lsLmgKKysrIGIvUHl0aG9uL2NldmFsX2dpbC5oCkBAIC0xNzgsNyArMTc4LDcgQEAKICAgICAgICAgLyogU3ViLWludGVycHJldGVyIHN1cHBvcnQ6IHRocmVhZHMgbWlnaHQgaGF2ZSBiZWVuIHN3aXRjaGVkCiAgICAgICAgICAgIHVuZGVyIG91ciBmZWV0IHVzaW5nIFB5VGhyZWFkU3RhdGVfU3dhcCgpLiBGaXggdGhlIEdJTCBsYXN0CiAgICAgICAgICAgIGhvbGRlciB2YXJpYWJsZSBzbyB0aGF0IG91ciBoZXVyaXN0aWNzIHdvcmsuICovCi0gICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAoUHlfdWludHB0cl90KXRzdGF0ZSk7CisgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAodWludHB0cl90KXRzdGF0ZSk7CiAgICAgfQogCiAgICAgTVVURVhfTE9DSyhnaWxfbXV0ZXgpOwpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgX1B5X0FOTk9UQVRFX1JXTE9DS19BQ1FVSVJFRCgmZ2lsX2xvY2tlZCwgLyppc193cml0ZT0qLzEpOwogCiAgICAgaWYgKHRzdGF0ZSAhPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikpIHsKLSAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsIChQeV91aW50cHRyX3QpdHN0YXRlKTsKKyAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsICh1aW50cHRyX3QpdHN0YXRlKTsKICAgICAgICAgKytnaWxfc3dpdGNoX251bWJlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKaW5kZXggNGUyYjFmMS4uYzg4ZGVlZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKKysrIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKQEAgLTkzLDggKzkzLDkgQEAKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFU6Zm9ybWF0IiwKLSAgICAgICAgJnZhbHVlLCAmZm9ybWF0X3NwZWMpKQorICAgICAgICAmdmFsdWUsICZmb3JtYXRfc3BlYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Zvcm1hdF9pbXBsKG1vZHVsZSwgdmFsdWUsIGZvcm1hdF9zcGVjKTsKIAogZXhpdDoKQEAgLTExOSw4ICsxMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Y2hyIiwgJmkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jaHJfaW1wbChtb2R1bGUsIGkpOwogCiBleGl0OgpAQCAtMTQ2LDcgKzE0OCw3IEBACiAiaW4gYWRkaXRpb24gdG8gYW55IGZlYXR1cmVzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiIpOwogCiAjZGVmaW5lIEJVSUxUSU5fQ09NUElMRV9NRVRIT0RERUYgICAgXAotICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NvbXBpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBidWlsdGluX2NvbXBpbGVfX2RvY19ffSwKKyAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX0ZBU1RDQUxMLCBidWlsdGluX2NvbXBpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fY29tcGlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwKQEAgLTE1NCwxMCArMTU2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW1pemUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnVpbHRpbl9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzb3VyY2UiLCAiZmlsZW5hbWUiLCAibW9kZSIsICJmbGFncyIsICJkb250X2luaGVyaXQiLCAib3B0aW1pemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzb3VyY2UiLCAiZmlsZW5hbWUiLCAibW9kZSIsICJmbGFncyIsICJkb250X2luaGVyaXQiLCAib3B0aW1pemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPTyZzfGlpaTpjb21waWxlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc291cmNlOwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBjb25zdCBjaGFyICptb2RlOwpAQCAtMTY1LDkgKzE2OCwxMCBAQAogICAgIGludCBkb250X2luaGVyaXQgPSAwOwogICAgIGludCBvcHRpbWl6ZSA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc291cmNlLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmZmlsZW5hbWUsICZtb2RlLCAmZmxhZ3MsICZkb250X2luaGVyaXQsICZvcHRpbWl6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2NvbXBpbGVfaW1wbChtb2R1bGUsIHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWdzLCBkb250X2luaGVyaXQsIG9wdGltaXplKTsKIAogZXhpdDoKQEAgLTE5NSw4ICsxOTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJngsICZ5KSkKKyAgICAgICAgJngsICZ5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGl2bW9kX2ltcGwobW9kdWxlLCB4LCB5KTsKIAogZXhpdDoKQEAgLTIzMiw4ICsyMzcsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsCiAgICAgICAgIDEsIDMsCi0gICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9ldmFsX2ltcGwobW9kdWxlLCBzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CiAKIGV4aXQ6CkBAIC0yNjksOCArMjc1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV4ZWMiLAogICAgICAgICAxLCAzLAotICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXhlY19pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogCiBleGl0OgpAQCAtMzIxLDggKzMyOCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICAmb2JqLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2hhc2F0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0zNjYsOCArMzc0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLAogICAgICAgICAzLCAzLAotICAgICAgICAmb2JqLCAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgJm9iaiwgJm5hbWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3NldGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtMzk3LDggKzQwNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICAmb2JqLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2RlbGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC01MDYsOCArNTE2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvdyIsCiAgICAgICAgIDIsIDMsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fcG93X2ltcGwobW9kdWxlLCB4LCB5LCB6KTsKIAogZXhpdDoKQEAgLTU0MCw4ICs1NTEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaW5wdXQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmcHJvbXB0KSkKKyAgICAgICAgJnByb21wdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lucHV0X2ltcGwobW9kdWxlLCBwcm9tcHQpOwogCiBleGl0OgpAQCAtNTg0LDggKzU5Niw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLAogICAgICAgICAxLCAyLAotICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpCisgICAgICAgICZpdGVyYWJsZSwgJnN0YXJ0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fc3VtX2ltcGwobW9kdWxlLCBpdGVyYWJsZSwgc3RhcnQpOwogCiBleGl0OgpAQCAtNjE4LDggKzYzMSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc2luc3RhbmNlIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNpbnN0YW5jZV9pbXBsKG1vZHVsZSwgb2JqLCBjbGFzc19vcl90dXBsZSk7CiAKIGV4aXQ6CkBAIC02NTIsMTEgKzY2NiwxMiBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNzdWJjbGFzcyIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzc3ViY2xhc3NfaW1wbChtb2R1bGUsIGNscywgY2xhc3Nfb3JfdHVwbGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTAzMTI3MGI2NGM3OTRiOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0ODNkZWI3NTgwNWY3YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2ltcG9ydC5jLmggYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKaW5kZXggMDVkNzlhYy4uYjM0NjBiMCAxMDA2NDQKLS0tIGEvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCisrKyBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaApAQCAtODksOCArODksOSBAQAogICAgIFB5T2JqZWN0ICpwYXRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIVU6X2ZpeF9jb19maWxlbmFtZSIsCi0gICAgICAgICZQeUNvZGVfVHlwZSwgJmNvZGUsICZwYXRoKSkKKyAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwobW9kdWxlLCBjb2RlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTE0Miw4ICsxNDMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaW5pdF9mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTY4LDggKzE3MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9nZXRfZnJvemVuX29iamVjdF9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0xOTQsOCArMTk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTIyMCw4ICsyMjQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjQ2LDggKzI1MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yNzcsOCArMjgzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImNyZWF0ZV9keW5hbWljIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJnNwZWMsICZmaWxlKSkKKyAgICAgICAgJnNwZWMsICZmaWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChtb2R1bGUsIHNwZWMsIGZpbGUpOwogCiBleGl0OgpAQCAtMzA4LDggKzMxNSw5IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2R5bmFtaWNfaW1wbChtb2R1bGUsIG1vZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMzNyw4ICszNDUsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19idWlsdGluX2ltcGwobW9kdWxlLCBtb2QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNTIsNCArMzYxLDQgQEAKICNpZm5kZWYgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTBhZDZlNTgzM2U2MTcwZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDI0ZDdmNzM3MDJhOTA3ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY29tcGlsZS5jIGIvUHl0aG9uL2NvbXBpbGUuYwppbmRleCBhZGMzM2FjLi5hOGQ3ZmNkIDEwMDY0NAotLS0gYS9QeXRob24vY29tcGlsZS5jCisrKyBiL1B5dGhvbi9jb21waWxlLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJ3b3JkY29kZV9oZWxwZXJzLmgiCiAKICNkZWZpbmUgREVGQVVMVF9CTE9DS19TSVpFIDE2CiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tTIDgKQEAgLTQzLDcgKzQ0LDYgQEAKIHN0cnVjdCBpbnN0ciB7CiAgICAgdW5zaWduZWQgaV9qYWJzIDogMTsKICAgICB1bnNpZ25lZCBpX2pyZWwgOiAxOwotICAgIHVuc2lnbmVkIGlfaGFzYXJnIDogMTsKICAgICB1bnNpZ25lZCBjaGFyIGlfb3Bjb2RlOwogICAgIGludCBpX29wYXJnOwogICAgIHN0cnVjdCBiYXNpY2Jsb2NrXyAqaV90YXJnZXQ7IC8qIHRhcmdldCBibG9jayAoaWYganVtcCBpbnN0cnVjdGlvbikgKi8KQEAgLTE3MSw3ICsxNzEsNiBAQAogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9vKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9pKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIFB5X3NzaXplX3QpOwogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9qKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIGJhc2ljYmxvY2sgKiwgaW50KTsKLXN0YXRpYyBiYXNpY2Jsb2NrICpjb21waWxlcl91c2VfbmV3X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfZXJyb3Ioc3RydWN0IGNvbXBpbGVyICosIGNvbnN0IGNoYXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX25hbWVvcChzdHJ1Y3QgY29tcGlsZXIgKiwgaWRlbnRpZmllciwgZXhwcl9jb250ZXh0X3R5KTsKIApAQCAtMTgwLDYgKzE3OSw3IEBACiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X2tleXdvcmQoc3RydWN0IGNvbXBpbGVyICosIGtleXdvcmRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9leHByKHN0cnVjdCBjb21waWxlciAqLCBleHByX3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXVnYXNzaWduKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfYW5uYXNzaWduKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfc2xpY2Uoc3RydWN0IGNvbXBpbGVyICosIHNsaWNlX3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkpOwogCkBAIC0xOTYsMTIgKzE5NiwyMiBAQAogc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9hc3luY193aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9hc3luY19mb3Ioc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwotc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5X3NzaXplX3QgbiwKK3N0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3Jkcyk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3RyeV9leGNlcHQoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9zZXRfcXVhbG5hbWUoc3RydWN0IGNvbXBpbGVyICopOwogCitzdGF0aWMgaW50IGNvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpOworCitzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKTsKKwogc3RhdGljIFB5Q29kZU9iamVjdCAqYXNzZW1ibGUoc3RydWN0IGNvbXBpbGVyICosIGludCBhZGROb25lKTsKIHN0YXRpYyBQeU9iamVjdCAqX19kb2NfXzsKIApAQCAtNDc3LDkgKzQ4Nyw5IEBACiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2s7CiAgICAgZm9yIChibG9jayA9IHUtPnVfYmxvY2tzOyBibG9jayAhPSBOVUxMOyBibG9jayA9IGJsb2NrLT5iX2xpc3QpIHsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGNiY2JjYmNiKTsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGZiZmJmYmZiKTsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGRiZGJkYmRiKTsKKyAgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpYmxvY2sgIT0gMHhjYmNiY2JjYlUpOworICAgICAgICBhc3NlcnQoKHVpbnRwdHJfdClibG9jayAhPSAweGZiZmJmYmZiVSk7CisgICAgICAgIGFzc2VydCgodWludHB0cl90KWJsb2NrICE9IDB4ZGJkYmRiZGJVKTsKICAgICAgICAgaWYgKGJsb2NrLT5iX2luc3RyICE9IE5VTEwpIHsKICAgICAgICAgICAgIGFzc2VydChibG9jay0+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+eDsKQEAgLTIzMTUsNyArMjIwMiw3IEBACiB9CiAKIHN0YXRpYyBjaGFyICoKLW5ydl9hbGxvYyhjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKK25ydl9hbGxvYyhjb25zdCBjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKIHsKICAgICBjaGFyICpydiwgKnQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3dpbi5jIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKaW5kZXggZjJjNzk2ZS4uMDUwNTBjZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfd2luLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKQEAgLTI0LDEyICsyNCwxMCBAQAogI2RlZmluZSBQWURfREVCVUdfU1VGRklYICIiCiAjZW5kaWYKIAotI2RlZmluZSBTVFJJTkdJWkUyKHgpICN4Ci0jZGVmaW5lIFNUUklOR0laRSh4KSBTVFJJTkdJWkUyKHgpCiAjaWZkZWYgUFlEX1BMQVRGT1JNX1RBRwotI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi0iIFBZRF9QTEFURk9STV9UQUcgIi5weWQiCisjZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKSAiLSIgUFlEX1BMQVRGT1JNX1RBRyAiLnB5ZCIKICNlbHNlCi0jZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgU1RSSU5HSVpFKFBZX01BSk9SX1ZFUlNJT04pIFNUUklOR0laRShQWV9NSU5PUl9WRVJTSU9OKSAiLnB5ZCIKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgogI2VuZGlmCiAKICNkZWZpbmUgUFlEX1VOVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIucHlkIgpAQCAtNDMsNyArNDEsNyBAQAogLyogQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyZSwgdG8gYXZvaWQgYW55IGRlcGVuZGVuY2llcyBvbiBwYXJ0aWN1bGFyCiAgICBDIFJUTCBpbXBsZW1lbnRhdGlvbnMgKi8KIAotc3RhdGljIGludCBzdHJjYXNlY21wIChjaGFyICpzdHJpbmcxLCBjaGFyICpzdHJpbmcyKQorc3RhdGljIGludCBzdHJjYXNlY21wIChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpzdHJpbmcyKQogewogICAgIGludCBmaXJzdCwgc2Vjb25kOwogCmRpZmYgLS1naXQgYS9QeXRob24vZXJyb3JzLmMgYi9QeXRob24vZXJyb3JzLmMKaW5kZXggZGQwMTQ0OC4uN2IyNWEyMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Vycm9ycy5jCisrKyBiL1B5dGhvbi9lcnJvcnMuYwpAQCAtNTIsNiArNTIsMjAgQEAKICAgICBQeV9YREVDUkVGKG9sZHRyYWNlYmFjayk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK19QeUVycl9DcmVhdGVFeGNlcHRpb24oUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoZXhjZXB0aW9uKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZXhjZXB0aW9uLCB2YWx1ZSwgTlVMTCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxBcmcxKGV4Y2VwdGlvbiwgdmFsdWUpOworICAgIH0KK30KKwogdm9pZAogUHlFcnJfU2V0T2JqZWN0KFB5T2JqZWN0ICpleGNlcHRpb24sIFB5T2JqZWN0ICp2YWx1ZSkKIHsKQEAgLTY2LDYgKzgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICBleGNfdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKICAgICBpZiAoZXhjX3ZhbHVlICE9IE5VTEwgJiYgZXhjX3ZhbHVlICE9IFB5X05vbmUpIHsKQEAgLTczLDI4ICs4OCwyMSBAQAogICAgICAgICBQeV9JTkNSRUYoZXhjX3ZhbHVlKTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgICAgICAvKiBXZSBtdXN0IG5vcm1hbGl6ZSB0aGUgdmFsdWUgcmlnaHQgbm93ICovCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKmZpeGVkX3ZhbHVlOworICAgICAgICAgICAgUHlPYmplY3QgKmZpeGVkX3ZhbHVlOwogCi0gICAgICAgICAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5RXZhbF9DYWxsT2JqZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KKyAgICAgICAgICAgIC8qIElzc3VlICMyMzU3MTogZnVuY3Rpb25zIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCiAgICAgICAgICAgICAgICBleGNlcHRpb24gc2V0ICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCB2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgICAgICBmaXhlZF92YWx1ZSA9IGFyZ3MgPwotICAgICAgICAgICAgICAgIFB5RXZhbF9DYWxsT2JqZWN0KGV4Y2VwdGlvbiwgYXJncykgOiBOVUxMOwotICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbihleGNlcHRpb24sIHZhbHVlKTsKICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdmFsdWUgPSBmaXhlZF92YWx1ZTsKICAgICAgICAgfQorCiAgICAgICAgIC8qIEF2b2lkIHJlZmVyZW5jZSBjeWNsZXMgdGhyb3VnaCB0aGUgY29udGV4dCBjaGFpbi4KICAgICAgICAgICAgVGhpcyBpcyBPKGNoYWluIGxlbmd0aCkgYnV0IGNvbnRleHQgY2hhaW5zIGFyZQogICAgICAgICAgICB1c3VhbGx5IHZlcnkgc2hvcnQuIFNlbnNpdGl2ZSByZWFkZXJzIG1heSB0cnkKQEAgLTExMCw3ICsxMTgsOCBAQAogICAgICAgICAgICAgICAgIG8gPSBjb250ZXh0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWx1ZSwgZXhjX3ZhbHVlKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihleGNfdmFsdWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjU4LDI1ICsyNjcsMTUgQEAKICAgICAgICAgICAgY2xhc3MuCiAgICAgICAgICovCiAgICAgICAgIGlmICghaW5jbGFzcyB8fCAhaXNfc3ViY2xhc3MpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzOworICAgICAgICAgICAgUHlPYmplY3QgKmZpeGVkX3ZhbHVlOwogCi0gICAgICAgICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlOworICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKHR5cGUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KHR5cGUsIGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICB2YWx1ZSA9IHJlczsKKyAgICAgICAgICAgIHZhbHVlID0gZml4ZWRfdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgLyogaWYgdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZSBkb2Vzbid0IGV4YWN0bHkgbWF0Y2ggdGhlCiAgICAgICAgICAgIGNsYXNzIG9mIHRoZSB0eXBlLCBiZWxpZXZlIHRoZSBpbnN0YW5jZQpAQCAtNDAyLDYgKzQwMSw0NyBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK19QeUVycl9Gb3JtYXRWRnJvbUNhdXNlKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOworCisgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOworICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwsICZ0Yik7CisgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICBQeV9ERUNSRUYodGIpOworICAgIH0KKyAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgUHlFcnJfRm9ybWF0VihleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOworCisgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwyLCAmdGIpOworICAgIFB5X0lOQ1JFRih2YWwpOworICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7CisgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QgKgorX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeU9iamVjdCAqZXhjZXB0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhcmdzOworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgX1B5RXJyX0Zvcm1hdFZGcm9tQ2F1c2UoZXhjZXB0aW9uLCBmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworICAgIHJldHVybiBOVUxMOworfQorCiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gc2V0IGEgdHlwZSBlcnJvciBleGNlcHRpb24gYW5kIHJldHVybiAwICovCiAKIGludApAQCAtNzAxLDUxICs3NDEsNjEgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5T2JqZWN0ICoKLVB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK1B5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKm1zZywKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICprd2FyZ3MsICplcnJvcjsKKyAgICBpbnQgaXNzdWJjbGFzczsKKyAgICBQeU9iamVjdCAqa3dhcmdzLCAqZXJyb3I7CiAKLSAgICBpZiAobXNnID09IE5VTEwpCisgICAgaXNzdWJjbGFzcyA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoZXhjZXB0aW9uLCBQeUV4Y19JbXBvcnRFcnJvcik7CisgICAgaWYgKGlzc3ViY2xhc3MgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgfQorICAgIGVsc2UgaWYgKCFpc3N1YmNsYXNzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBhIHN1YmNsYXNzIG9mIEltcG9ydEVycm9yIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgYSBtZXNzYWdlIGFyZ3VtZW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgbmFtZSA9IFB5X05vbmU7CiAgICAgfQotCiAgICAgaWYgKHBhdGggPT0gTlVMTCkgewogICAgICAgICBwYXRoID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYobXNnKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIG1zZyk7Ci0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAibmFtZSIsIG5hbWUpIDwgMCkKKyAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGt3YXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAibmFtZSIsIG5hbWUpIDwgMCkgewogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKSA8IDApCisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJwYXRoIiwgcGF0aCkgPCAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAKLSAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGwoUHlFeGNfSW1wb3J0RXJyb3IsIGFyZ3MsIGt3YXJncyk7CisgICAgZXJyb3IgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGV4Y2VwdGlvbiwgJm1zZywgMSwga3dhcmdzKTsKICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRPYmplY3QoKFB5T2JqZWN0ICopUHlfVFlQRShlcnJvciksIGVycm9yKTsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKICAgICB9CiAKIGRvbmU6Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwogICAgIHJldHVybiBOVUxMOwogfQogCitQeU9iamVjdCAqCitQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgcmV0dXJuIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlFeGNfSW1wb3J0RXJyb3IsIG1zZywgbmFtZSwgcGF0aCk7Cit9CisKIHZvaWQKIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7CmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggMjNlZWQ3MS4uZTNiZmIwYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtNDQsNyArNDQsNyBAQAogI2VuZGlmCiAgICAgaW50IHZhbGlkOwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICB2YWxpZCA9IF9QeVZlcmlmeV9mZChmZCkgJiYgaXNhdHR5KGZkKTsKKyAgICB2YWxpZCA9IGlzYXR0eShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBpZiAoIXZhbGlkKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTEwNCwyMyArMTA0LDI0IEBACiAgICAgY2hhciAqbG9jOwogI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCiAgICAgY2hhciAqY29kZXNldCwgKiphbGlhczsKLSAgICBjaGFyIGVuY29kaW5nWzEwMF07CisgICAgY2hhciBlbmNvZGluZ1syMF07ICAgLyogbG9uZ2VzdCBuYW1lOiAiaXNvXzY0Ni5pcnZfMTk5MVwwIiAqLwogICAgIGludCBpc19hc2NpaTsKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBjaGFyKiBhc2NpaV9hbGlhc2VzW10gPSB7CiAgICAgICAgICJhc2NpaSIsCisgICAgICAgIC8qIEFsaWFzZXMgZnJvbSBMaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkgKi8KICAgICAgICAgIjY0NiIsCi0gICAgICAgICJhbnNpLXgzLjQtMTk2OCIsCi0gICAgICAgICJhbnNpLXgzLTQtMTk2OCIsCi0gICAgICAgICJhbnNpLXgzLjQtMTk4NiIsCisgICAgICAgICJhbnNpX3gzLjRfMTk2OCIsCisgICAgICAgICJhbnNpX3gzLjRfMTk4NiIsCisgICAgICAgICJhbnNpX3gzXzRfMTk2OCIsCiAgICAgICAgICJjcDM2NyIsCiAgICAgICAgICJjc2FzY2lpIiwKICAgICAgICAgImlibTM2NyIsCi0gICAgICAgICJpc282NDYtdXMiLAotICAgICAgICAiaXNvLTY0Ni5pcnYtMTk5MSIsCi0gICAgICAgICJpc28taXItNiIsCisgICAgICAgICJpc282NDZfdXMiLAorICAgICAgICAiaXNvXzY0Ni5pcnZfMTk5MSIsCisgICAgICAgICJpc29faXJfNiIsCiAgICAgICAgICJ1cyIsCi0gICAgICAgICJ1cy1hc2NpaSIsCisgICAgICAgICJ1c19hc2NpaSIsCiAgICAgICAgIE5VTEwKICAgICB9OwogI2VuZGlmCkBAIC02MTMsMTMgKzYxNCw5IEBACiAgICAgSEFORExFIGg7CiAgICAgaW50IHR5cGU7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIGggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICBlbHNlIHsKLSAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7Ci0gICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgfQorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKIAogICAgIGlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIC8qIGVycm5vIGlzIGFscmVhZHkgc2V0IGJ5IF9nZXRfb3NmaGFuZGxlLCBidXQgd2UgYWxzbyBzZXQKQEAgLTY4Myw2ICs2ODAsMTAgQEAKIHsKICAgICBpbnQgcmVzOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IF9QeV9mc3RhdF9ub3JhaXNlKGZkLCBzdGF0dXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC03MzgsMTIgKzczOSw2IEBACiAgICAgSEFORExFIGhhbmRsZTsKICAgICBEV09SRCBmbGFnczsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAocmFpc2UpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTc5NCw3ICs3ODksNyBAQAogICAgIGludCByZXF1ZXN0OwogICAgIGludCBlcnI7CiAjZW5kaWYKLSAgICBpbnQgZmxhZ3M7CisgICAgaW50IGZsYWdzLCBuZXdfZmxhZ3M7CiAgICAgaW50IHJlczsKICNlbmRpZgogCkBAIC04MTUsMTIgKzgxMCw2IEBACiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAocmFpc2UpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg4NSwxMCArODc0LDE4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoaW5oZXJpdGFibGUpCi0gICAgICAgIGZsYWdzICY9IH5GRF9DTE9FWEVDOwotICAgIGVsc2UKLSAgICAgICAgZmxhZ3MgfD0gRkRfQ0xPRVhFQzsKKyAgICBpZiAoaW5oZXJpdGFibGUpIHsKKyAgICAgICAgbmV3X2ZsYWdzID0gZmxhZ3MgJiB+RkRfQ0xPRVhFQzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5ld19mbGFncyA9IGZsYWdzIHwgRkRfQ0xPRVhFQzsKKyAgICB9CisKKyAgICBpZiAobmV3X2ZsYWdzID09IGZsYWdzKSB7CisgICAgICAgIC8qIEZEX0NMT0VYRUMgZmxhZyBhbHJlYWR5IHNldC9jbGVhcmVkOiBub3RoaW5nIHRvIGRvICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJlcyA9IGZjbnRsKGZkLCBGX1NFVEZELCBmbGFncyk7CiAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgaWYgKHJhaXNlKQpAQCAtMTE2OSwxOSArMTE2NiwxNSBAQAogICAgIGludCBlcnI7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICAvKiBfUHlfcmVhZCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKICAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgcmVhZCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAogICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KLSAgICAgICAgZXJyID0gZXJybm87Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGNvdW50ID4gSU5UX01BWCkgewogICAgICAgICAvKiBPbiBXaW5kb3dzLCB0aGUgY291bnQgcGFyYW1ldGVyIG9mIHJlYWQoKSBpcyBhbiBpbnQgKi8KQEAgLTEyMzUsMTYgKzEyMjgsNiBAQAogICAgIGludCBlcnI7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgaWYgKGdpbF9oZWxkKSB7Ci0gICAgICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCi0gICAgICAgICAgICBlcnIgPSBlcnJubzsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChjb3VudCA+IDMyNzY3ICYmIGlzYXR0eShmZCkpIHsKQEAgLTEzMjQsNiArMTMwNywxMCBAQAogUHlfc3NpemVfdAogX1B5X3dyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCiB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgLyogX1B5X3dyaXRlKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwgb3RoZXJ3aXNlIHRoZQogICAgICAqIGNhbGxlciBtYXkgdGhpbmsgdGhhdCB3cml0ZSgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAogICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KQEAgLTE0NzMsMTAgKzE0NjAsOSBAQAogICAgIERXT1JEIGZ0eXBlOwogI2VuZGlmCiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC0xNjAwLDg0ICsxNTg2LDMgQEAKICAgICByZXR1cm4gLTE7CiB9CiAjZW5kaWYKLQotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIExlZ2FjeSBpbXBsZW1lbnRhdGlvbiBvZiBfUHlWZXJpZnlfZmQgd2hpbGUgdHJhbnNpdGlvbmluZyB0bwotICogTVNWQyAxNC4wLiBUaGlzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQuIChpc3N1ZTIzNTI0KQotICovCi0KLS8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKLSAqIHZhbGlkIGFuZCByYWlzZSBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCi0gKiBOb3JtYWxseSwgYW4gaW52YWxpZCBmZCBpcyBsaWtlbHkgdG8gYmUgYSBDIHByb2dyYW0gZXJyb3IgYW5kIHRoZXJlZm9yZQotICogYW4gYXNzZXJ0aW9uIGNhbiBiZSB1c2VmdWwsIGJ1dCBpdCBkb2VzIGNvbnRyYWRpY3QgdGhlIFBPU0lYIHN0YW5kYXJkCi0gKiB3aGljaCBmb3Igd3JpdGUoMikgc3RhdGVzOgotICogICAgIk90aGVyd2lzZSwgLTEgc2hhbGwgYmUgcmV0dXJuZWQgYW5kIGVycm5vIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuIgotICogICAgIltFQkFERl0gVGhlIGZpbGRlcyBhcmd1bWVudCBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3Igb3BlbiBmb3IKLSAqICAgICB3cml0aW5nLiIKLSAqIEZ1cnRoZXJtb3JlLCBweXRob24gYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFueSBvbGQgaW50ZWdlcgotICogYXMgYSBmZCBhbmQgc2hvdWxkIG1lcmVseSByYWlzZSBhIHB5dGhvbiBleGNlcHRpb24gb24gZXJyb3IuCi0gKiBUaGUgTWljcm9zb2Z0IENSVCBkb2Vzbid0IHByb3ZpZGUgYW4gb2ZmaWNpYWwgd2F5IHRvIGNoZWNrIGZvciB0aGUKLSAqIHZhbGlkaXR5IG9mIGEgZmlsZSBkZXNjcmlwdG9yLCBidXQgd2UgY2FuIGVtdWxhdGUgaXRzIGludGVybmFsIGJlaGF2aW91cgotICogYnkgdXNpbmcgdGhlIGV4cG9ydGVkIF9fcGluZm8gZGF0YSBtZW1iZXIgYW5kIGtub3dsZWRnZSBvZiB0aGUKLSAqIGludGVybmFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuCi0gKiBUaGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIHVwZGF0ZWQgZm9yIGVhY2ggdmVyc2lvbiBvZiB2aXN1YWwgc3R1ZGlvCi0gKiBhY2NvcmRpbmcgdG8gdGhlIGZpbGUgaW50ZXJuYWwuaCBpbiB0aGUgQ1JUIHNvdXJjZSwgdW50aWwgTVMgY29tZXMKLSAqIHVwIHdpdGggYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0aGlzLgotICogKGFsbCBvZiB0aGlzIGlzIHRvIGF2b2lkIGdsb2JhbGx5IG1vZGlmeWluZyB0aGUgQ1JUIGJlaGF2aW91ciB1c2luZwotICogX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCkgYW5kIF9DcnRTZXRSZXBvcnRNb2RlKCkpCi0gKi8KLS8qIFRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIGRldGVybWluZWQgYXQgcnVudGltZS4KLSAqIE9ubHkgdGhlIGZpcnN0IGl0ZW1zIG11c3QgYmUgcHJlc2VudC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludHB0cl90IG9zZmhuZDsKLSAgICBjaGFyIG9zZmlsZTsKLX0gbXlfaW9pbmZvOwotCi1leHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIgKiBfX3Bpb2luZm9bXTsKLSNkZWZpbmUgSU9JTkZPX0wyRSA1Ci0jZGVmaW5lIElPSU5GT19BUlJBWVMgNjQKLSNkZWZpbmUgSU9JTkZPX0FSUkFZX0VMVFMgICAoMSA8PCBJT0lORk9fTDJFKQotI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCi0jZGVmaW5lIEZPUEVOIDB4MDEKLSNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgotCi0vKiBUaGlzIGZ1bmN0aW9uIGVtdWxhdGVzIHdoYXQgdGhlIHdpbmRvd3MgQ1JUIGRvZXMgdG8gdmFsaWRhdGUgZmlsZSBoYW5kbGVzICovCi1pbnQKLV9QeVZlcmlmeV9mZChpbnQgZmQpCi17Ci0gICAgY29uc3QgaW50IGkxID0gZmQgPj4gSU9JTkZPX0wyRTsKLSAgICBjb25zdCBpbnQgaTIgPSBmZCAmICgoMSA8PCBJT0lORk9fTDJFKSAtIDEpOwotCi0gICAgc3RhdGljIHNpemVfdCBzaXplb2ZfaW9pbmZvID0gMDsKLQotICAgIC8qIERldGVybWluZSB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGlvaW5mbyBzdHJ1Y3R1cmUsCi0gICAgICogYXMgdXNlZCBieSB0aGUgQ1JUIGxvYWRlZCBpbiBtZW1vcnkKLSAgICAgKi8KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwICYmIF9fcGlvaW5mb1swXSAhPSBOVUxMKSB7Ci0gICAgICAgIHNpemVvZl9pb2luZm8gPSBfbXNpemUoX19waW9pbmZvWzBdKSAvIElPSU5GT19BUlJBWV9FTFRTOwotICAgIH0KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwKSB7Ci0gICAgICAgIC8qIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uLi4gKi8KLSAgICAgICAgZ290byBmYWlsOwotICAgIH0KLQotICAgIC8qIFNlZSB0aGF0IGl0IGlzbid0IGEgc3BlY2lhbCBDTEVBUiBmaWxlbm8gKi8KLSAgICBpZiAoZmQgIT0gX05PX0NPTlNPTEVfRklMRU5PKSB7Ci0gICAgICAgIC8qIE1pY3Jvc29mdCBDUlQgd291bGQgY2hlY2sgdGhhdCAwPD1mZDxfbmhhbmRsZSBidXQgd2UgY2FuJ3QgZG8gdGhhdC4gIEluc3RlYWQKLSAgICAgICAgICogd2UgY2hlY2sgcG9pbnRlciB2YWxpZGl0eSBhbmQgb3RoZXIgaW5mbwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKDAgPD0gaTEgJiYgaTEgPCBJT0lORk9fQVJSQVlTICYmIF9fcGlvaW5mb1tpMV0gIT0gTlVMTCkgewotICAgICAgICAgICAgLyogZmluYWxseSwgY2hlY2sgdGhhdCB0aGUgZmlsZSBpcyBvcGVuICovCi0gICAgICAgICAgICBteV9pb2luZm8qIGluZm8gPSAobXlfaW9pbmZvKikoX19waW9pbmZvW2kxXSArIGkyICogc2l6ZW9mX2lvaW5mbyk7Ci0gICAgICAgICAgICBpZiAoaW5mby0+b3NmaWxlICYgRk9QRU4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgZmFpbDoKLSAgICBlcnJubyA9IEVCQURGOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLyogZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMCAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwppbmRleCA2MTdkNThiLi5hMmMyYjM2IDEwMDY0NAotLS0gYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYworKysgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwpAQCAtMzIsMTQgKzMyLDIwIEBACiB7CiAgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICclYycuIiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgb3IgJ18nIHdpdGggJyVjJy4iLAogICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUpOwogICAgIGVsc2UKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJ1xceCV4Jy4iLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyBvciAnXycgd2l0aCAnXFx4JXgnLiIsCiAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlKTsKIH0KIAorc3RhdGljIHZvaWQKK2ludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUodm9pZCkKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5vdCBzcGVjaWZ5IGJvdGggJywnIGFuZCAnXycuIik7Cit9CisKIC8qCiAgICAgZ2V0X2ludGVnZXIgY29uc3VtZXMgMCBvciBtb3JlIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBmcm9tIGFuCiAgICAgaW5wdXQgc3RyaW5nLCB1cGRhdGVzICpyZXN1bHQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGl2ZQpAQCAtNDgsMTYgKzU0LDE3IEBACiAgICAgcmV0dXJucyAtMSBvbiBlcnJvci4KICovCiBzdGF0aWMgaW50Ci1nZXRfaW50ZWdlcihQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90ICpwb3MsIFB5X3NzaXplX3QgZW5kLAorZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcHBvcywgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpyZXN1bHQpCiB7Ci0gICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWw7CisgICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWwsIHBvcyA9ICpwcG9zOwogICAgIGludCBudW1kaWdpdHM7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworCiAgICAgYWNjdW11bGF0b3IgPSBudW1kaWdpdHMgPSAwOwotICAgIGZvciAoOzsoKnBvcykrKywgbnVtZGlnaXRzKyspIHsKLSAgICAgICAgaWYgKCpwb3MgPj0gZW5kKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQURfQ0hBUihzdHIsICpwb3MpKTsKKyAgICBmb3IgKDsgcG9zIDwgZW5kOyBwb3MrKywgbnVtZGlnaXRzKyspIHsKKyAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpKTsKICAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAvKgpAQCAtNjksMTAgKzc2LDEyIEBACiAgICAgICAgIGlmIChhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZGVjaW1hbCBkaWdpdHMgaW4gZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgKnBwb3MgPSBwb3M7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWw7CiAgICAgfQorICAgICpwcG9zID0gcG9zOwogICAgICpyZXN1bHQgPSBhY2N1bXVsYXRvcjsKICAgICByZXR1cm4gbnVtZGlnaXRzOwogfQpAQCAtMTA1LDYgKzExNCwxNCBAQAogICAgIH0KIH0KIAorLyogTG9jYWxlIHR5cGUgY29kZXMuIExUX05PX0xPQ0FMRSBtdXN0IGJlIHplcm8uICovCitlbnVtIExvY2FsZVR5cGUgeworICAgIExUX05PX0xPQ0FMRSA9IDAsCisgICAgTFRfREVGQVVMVF9MT0NBTEUsCisgICAgTFRfVU5ERVJTQ09SRV9MT0NBTEUsCisgICAgTFRfVU5ERVJfRk9VUl9MT0NBTEUsCisgICAgTFRfQ1VSUkVOVF9MT0NBTEUKK307CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV9VQ1M0IGZpbGxfY2hhcjsKQEAgLTExMiw3ICsxMjksNyBAQAogICAgIGludCBhbHRlcm5hdGU7CiAgICAgUHlfVUNTNCBzaWduOwogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgaW50IHRob3VzYW5kc19zZXBhcmF0b3JzOworICAgIGVudW0gTG9jYWxlVHlwZSB0aG91c2FuZHNfc2VwYXJhdG9yczsKICAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKICAgICBQeV9VQ1M0IHR5cGU7CiB9IEludGVybmFsRm9ybWF0U3BlYzsKQEAgLTE1MCw5ICsxNjcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfYWxpZ24pCiB7CiAgICAgUHlfc3NpemVfdCBwb3MgPSBzdGFydDsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKGZvcm1hdF9zcGVjKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoZm9ybWF0X3NwZWMpOwogICAgIC8qIGVuZC1wb3MgaXMgdXNlZCB0aHJvdWdob3V0IHRoaXMgY29kZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YKICAgICAgICB0aGUgaW5wdXQgc3RyaW5nICovCi0jZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYywgaW5kZXgpCisjZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpCiAKICAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwogICAgIGludCBhbGlnbl9zcGVjaWZpZWQgPSAwOwpAQCAtMTYzLDcgKzE4Miw3IEBACiAgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAwOwogICAgIGZvcm1hdC0+c2lnbiA9ICdcMCc7CiAgICAgZm9ybWF0LT53aWR0aCA9IC0xOwotICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAwOworICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9OT19MT0NBTEU7CiAgICAgZm9ybWF0LT5wcmVjaXNpb24gPSAtMTsKICAgICBmb3JtYXQtPnR5cGUgPSBkZWZhdWx0X3R5cGU7CiAKQEAgLTIxOCw5ICsyMzcsMjIgQEAKIAogICAgIC8qIENvbW1hIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KICAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLCcpIHsKLSAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDE7CisgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9ERUZBVUxUX0xPQ0FMRTsKICAgICAgICAgKytwb3M7CiAgICAgfQorICAgIC8qIFVuZGVyc2NvcmUgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLworICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICdfJykgeworICAgICAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyAhPSBMVF9OT19MT0NBTEUpIHsKKyAgICAgICAgICAgIGludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9VTkRFUlNDT1JFX0xPQ0FMRTsKKyAgICAgICAgKytwb3M7CisgICAgfQorICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcsJykgeworICAgICAgICBpbnZhbGlkX2NvbW1hX2FuZF91bmRlcnNjb3JlKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIC8qIFBhcnNlIGZpZWxkIHByZWNpc2lvbiAqLwogICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcuJykgewpAQCAtMjcwLDYgKzMwMiwxNiBAQAogICAgICAgICBjYXNlICdcMCc6CiAgICAgICAgICAgICAvKiBUaGVzZSBhcmUgYWxsb3dlZC4gU2VlIFBFUCAzNzguKi8KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgY2FzZSAnbyc6CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGluIGJpbi9vY3QvaGV4LiBTZWUgUEVQIDUxNS4gKi8KKyAgICAgICAgICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID09IExUX1VOREVSU0NPUkVfTE9DQUxFKSB7CisgICAgICAgICAgICAgICAgLyogRXZlcnkgZm91ciBkaWdpdHMsIG5vdCBldmVyeSB0aHJlZSwgaW4gYmluL29jdC9oZXguICovCisgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX1VOREVSX0ZPVVJfTE9DQUxFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaW52YWxpZF9jb21tYV90eXBlKGZvcm1hdC0+dHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTM0NiwxMyArMzg4LDYgQEAKIC8qKioqKioqKioqKiBjb21tb24gcm91dGluZXMgZm9yIG51bWVyaWMgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiBMb2NhbGUgdHlwZSBjb2Rlcy4gKi8KLWVudW0gTG9jYWxlVHlwZSB7Ci0gICAgTFRfQ1VSUkVOVF9MT0NBTEUsCi0gICAgTFRfREVGQVVMVF9MT0NBTEUsCi0gICAgTFRfTk9fTE9DQUxFCi19OwotCiAvKiBMb2NhbGUgaW5mbyBuZWVkZWQgZm9yIGZvcm1hdHRpbmcgaW50ZWdlcnMgYW5kIHRoZSBwYXJ0IG9mIGZsb2F0cwogICAgYmVmb3JlIGFuZCBpbmNsdWRpbmcgdGhlIGRlY2ltYWwuIE5vdGUgdGhhdCBsb2NhbGVzIG9ubHkgc3VwcG9ydAogICAgOC1iaXQgY2hhcnMsIG5vdCB1bmljb2RlLiAqLwpAQCAtNDA0LDEzICs0MzksMTUgQEAKICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3JlbWFpbmRlciwgaW50ICpoYXNfZGVjaW1hbCkKIHsKICAgICBQeV9zc2l6ZV90IHJlbWFpbmRlcjsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHMpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzKTsKIAotICAgIHdoaWxlIChwb3M8ZW5kICYmIFB5X0lTRElHSVQoUHlVbmljb2RlX1JFQURfQ0hBUihzLCBwb3MpKSkKKyAgICB3aGlsZSAocG9zPGVuZCAmJiBQeV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcykpKQogICAgICAgICArK3BvczsKICAgICByZW1haW5kZXIgPSBwb3M7CiAKICAgICAvKiBEb2VzIHJlbWFpbmRlciBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludD8gKi8KLSAgICAqaGFzX2RlY2ltYWwgPSBwb3M8ZW5kICYmIFB5VW5pY29kZV9SRUFEX0NIQVIocywgcmVtYWluZGVyKSA9PSAnLic7CisgICAgKmhhc19kZWNpbWFsID0gcG9zPGVuZCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCByZW1haW5kZXIpID09ICcuJzsKIAogICAgIC8qIFNraXAgdGhlIGRlY2ltYWwgcG9pbnQuICovCiAgICAgaWYgKCpoYXNfZGVjaW1hbCkKQEAgLTY1OCwxMiArNjk1LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKK3N0YXRpYyBjb25zdCBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKIAogLyogRmluZCB0aGUgZGVjaW1hbCBwb2ludCBjaGFyYWN0ZXIocz8pLCB0aG91c2FuZHNfc2VwYXJhdG9yKHM/KSwgYW5kCiAgICBncm91cGluZyBkZXNjcmlwdGlvbiwgZWl0aGVyIGZvciB0aGUgY3VycmVudCBsb2NhbGUgaWYgdHlwZSBpcwotICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUsIG9yCi0gICBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KKyAgIExUX0NVUlJFTlRfTE9DQUxFLCBhIGhhcmQtY29kZWQgbG9jYWxlIGlmIExUX0RFRkFVTFRfTE9DQUxFIG9yCisgICBMVF9VTkRFUlNDT1JFX0xPQ0FMRS9MVF9VTkRFUl9GT1VSX0xPQ0FMRSwgb3Igbm9uZSBpZiBMVF9OT19MT0NBTEUuICovCiBzdGF0aWMgaW50CiBnZXRfbG9jYWxlX2luZm8oZW51bSBMb2NhbGVUeXBlIHR5cGUsIExvY2FsZUluZm8gKmxvY2FsZV9pbmZvKQogewpAQCAtNjg0LDEzICs3MjEsMTkgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTFRfREVGQVVMVF9MT0NBTEU6CisgICAgY2FzZSBMVF9VTkRFUlNDT1JFX0xPQ0FMRToKKyAgICBjYXNlIExUX1VOREVSX0ZPVVJfTE9DQUxFOgogICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOwotICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLCcpOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgKKyAgICAgICAgICAgIHR5cGUgPT0gTFRfREVGQVVMVF9MT0NBTEUgPyAnLCcgOiAnXycpOwogICAgICAgICBpZiAoIWxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50IHx8ICFsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCisgICAgICAgIGlmICh0eXBlICE9IExUX1VOREVSX0ZPVVJfTE9DQUxFKQorICAgICAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbXBsaWNpdCkgdHJhaWxpbmcgMCBtZWFucyByZXBlYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVseS4gKi8KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlw0IjsgLyogQmluL29jdC9oZXggZ3JvdXAgZXZlcnkgZm91ci4gKi8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMVF9OT19MT0NBTEU6CiAgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7CkBAIC05MzcsOSArOTgwLDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTA4NCw5ICsxMTI1LDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTI2Miw5ICsxMzAxLDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbi5jIGIvUHl0aG9uL2Zyb3plbi5jCmluZGV4IDY3NmYzOTUuLjdlMDRmM2MgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW4uYworKysgYi9QeXRob24vZnJvemVuLmMKQEAgLTE0LDE3ICsxNCwxNSBAQAogICAgdGhlIGFwcHJvcHJpYXRlIGJ5dGVzIGZyb20gTV9fX21haW5fXy5jLiAqLwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBNX19faGVsbG9fX1tdID0gewotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDIwLDAsMCwwLDEwMCwyLDAsOTAsMSwwLAotICAgIDEwMSwyLDAsMTAwLDAsMCwxMzEsMSwwLDEsMTAwLDEsMCw4Myw0MCwzLAotICAgIDAsMCwwLDExNywxMiwwLDAsMCw3MiwxMDEsMTA4LDEwOCwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA4LDEwMCwzMyw3OCw4NCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLAotICAgIDg0LDExNCwxMTcsMTAxLDExNywxMSwwLDAsMCwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKLSAgICAxMDUsMTIyLDEwMSwxMDAsMTE3LDUsMCwwLDAsMTEyLDExNCwxMDUsMTEwLDExNiw0MCwwLAotICAgIDAsMCwwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsNywwLAotICAgIDAsMCwxMDIsMTA4LDk3LDEwMyw0NiwxMTIsMTIxLDExNyw4LDAsMCwwLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDEsMCwwLDAsMTE1LDIsMCwwLDAsNiwKLSAgICAxLAorICAgIDIyNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMCw5MCwwLDEwMSwxLAorICAgIDEwMCwxLDEzMSwxLDEsMCwxMDAsMiw4MywwLDQxLDMsODQsMTIyLDEyLDcyLAorICAgIDEwMSwxMDgsMTA4LDExMSwzMiwxMTksMTExLDExNCwxMDgsMTAwLDMzLDc4LDQxLDIsMjE4LDExLAorICAgIDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwyMTgsNSwxMTIsMTE0LDEwNSwKKyAgICAxMTAsMTE2LDE2OSwwLDExNCwzLDAsMCwwLDExNCwzLDAsMCwwLDI1MCwyMiwKKyAgICA0Niw0Nyw4NCwxMTEsMTExLDEwOCwxMTUsNDcsMTAyLDExNCwxMDEsMTAxLDEyMiwxMDEsNDcsMTAyLAorICAgIDEwOCw5NywxMDMsNDYsMTEyLDEyMSwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwKKyAgICAxLDAsMCwwLDExNSwyLDAsMCwwLDQsMSwKIH07CiAKICNkZWZpbmUgU0laRSAoaW50KXNpemVvZihNX19faGVsbG9fXykKZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW5tYWluLmMgYi9QeXRob24vZnJvemVubWFpbi5jCmluZGV4IGRlOGJkMzUuLjc2OWIzM2QgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW5tYWluLmMKKysrIGIvUHl0aG9uL2Zyb3plbm1haW4uYwpAQCAtOTksNyArOTksOSBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeVdpbkZyZWV6ZV9FeGVUZXJtKCk7CiAjZW5kaWYKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHN0cyA9IDEyMDsKKyAgICB9CiAKIGVycm9yOgogICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5KTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9mdXR1cmUuYyBiL1B5dGhvbi9mdXR1cmUuYwppbmRleCA0ZGU4MDFiLi5kOTRiMjNkIDEwMDY0NAotLS0gYS9QeXRob24vZnV0dXJlLmMKKysrIGIvUHl0aG9uL2Z1dHVyZS5jCkBAIC03OSw3ICs3OSwxMCBAQAogCiAgICAgaSA9IDA7CiAgICAgZmlyc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQobW9kLT52Lk1vZHVsZS5ib2R5LCBpKTsKLSAgICBpZiAoZmlyc3QtPmtpbmQgPT0gRXhwcl9raW5kICYmIGZpcnN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQpCisgICAgaWYgKGZpcnN0LT5raW5kID09IEV4cHJfa2luZAorICAgICAgICAmJiAoZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZAorICAgICAgICAgICAgfHwgKGZpcnN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZAorICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGZpcnN0LT52LkV4cHIudmFsdWUtPnYuQ29uc3RhbnQudmFsdWUpKSkpCiAgICAgICAgIGkrKzsKIAogCmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCBiMTBlNzc2Li42MTZjNmViIDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTE4LDE2ICsxOCwyOCBAQAogaW50IFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCk7CiAKK2ludCBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworaW50IF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7CisKICNpZmRlZiBIQVZFX0RFQ0xTUEVDX0RMTAogLyogRXhwb3J0IGZ1bmN0aW9ucyAqLwotUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqLCBjaGFyICosIC4uLik7Ci1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKiwgY2hhciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0J1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCAuLi4pOwotUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNoYXIgKiwgdmFfbGlzdCk7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIHZhX2xpc3QpOworCitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QpOwogI2VuZGlmCiAKICNkZWZpbmUgRkxBR19DT01QQVQgMQpAQCAtNTYsMTggKzY4LDI0IEBACiAvKiBGb3J3YXJkICovCiBzdGF0aWMgaW50IHZnZXRhcmdzMShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHNldGVycm9yKFB5X3NzaXplX3QsIGNvbnN0IGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0aXRlbShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgaW50ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIGZyZWVsaXN0X3QgKik7Ci1zdGF0aWMgY2hhciAqY29udmVydHR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgY2hhciAqLCBzaXplX3QsIGludCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIGZyZWVsaXN0X3QgKik7Ci1zdGF0aWMgUHlfc3NpemVfdCBjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICosIHZvaWQgKipwLCBjaGFyICoqKTsKLXN0YXRpYyBpbnQgZ2V0YnVmZmVyKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBjaGFyKiopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKK3N0YXRpYyBjb25zdCBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGNvbnZlcnRidWZmZXIoUHlPYmplY3QgKiwgdm9pZCAqKnAsIGNvbnN0IGNoYXIgKiopOworc3RhdGljIGludCBnZXRidWZmZXIoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGNvbnN0IGNoYXIqKik7CiAKIHN0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOwotc3RhdGljIGNoYXIgKnNraXBpdGVtKGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50KTsKK3N0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0ICosIGludCk7CitzdGF0aWMgaW50IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5d29yZHMsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpOworc3RhdGljIGNvbnN0IGNoYXIgKnNraXBpdGVtKGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50KTsKIAogaW50CiBQeUFyZ19QYXJzZShQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCkBAIC04Miw3ICsxMDAsNyBAQAogfQogCiBpbnQKLV9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCAuLi4pCitfUHlBcmdfUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIGludCByZXR2YWw7CiAgICAgdmFfbGlzdCB2YTsKQEAgLTEwNyw3ICsxMjUsNyBAQAogfQogCiBpbnQKLV9QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIC4uLikKK19QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICBpbnQgcmV0dmFsOwogICAgIHZhX2xpc3QgdmE7CkBAIC0xMjMsMjAgKzE0MSwyNiBAQAogUHlBcmdfVmFQYXJzZShQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhKQogewogICAgIHZhX2xpc3QgbHZhOworICAgIGludCByZXR2YWw7CiAKLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICB2YV9jb3B5KGx2YSwgdmEpOwogCi0gICAgcmV0dXJuIHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIDApOworICAgIHJldHZhbCA9IHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIDApOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIGludAotX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKK19QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEpCiB7CiAgICAgdmFfbGlzdCBsdmE7CisgICAgaW50IHJldHZhbDsKIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKLSAgICByZXR1cm4gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHJldHZhbCA9IHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQobHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKQEAgLTIwOCw3ICsyMzIsNyBAQAogICAgIGludCBlbmRmbXQgPSAwOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdHNhdmUgPSBmb3JtYXQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBpbnQgY29tcGF0ID0gZmxhZ3MgJiBGTEFHX0NPTVBBVDsKICAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOwogICAgIGZyZWVsaXN0X3QgZnJlZWxpc3Q7CkBAIC0zOTQsNyArNDE4LDEyIEBACiAgICAgICAgIFB5T1Nfc25wcmludGYocCwgc2l6ZW9mKGJ1ZikgLSAocCAtIGJ1ZiksICIgJS4yNTZzIiwgbXNnKTsKICAgICAgICAgbWVzc2FnZSA9IGJ1ZjsKICAgICB9Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgaWYgKG1zZ1swXSA9PSAnKCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCBtZXNzYWdlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc3NhZ2UpOworICAgIH0KIH0KIAogCkBAIC00MTYsNyArNDQ1LDcgQEAKICAgICAgIGFuZCBtc2didWYgaXMgcmV0dXJuZWQuCiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0dHVwbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCB0b3BsZXZlbCwKICAgICAgICAgICAgICBmcmVlbGlzdF90ICpmcmVlbGlzdCkKQEAgLTQ3NCw3ICs1MDMsNyBAQAogCiAgICAgZm9ybWF0ID0gKnBfZm9ybWF0OwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgY2hhciAqbXNnOworICAgICAgICBjb25zdCBjaGFyICptc2c7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtOwogICAgICAgICBpdGVtID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGFyZywgaSk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKQEAgLTUwMSwxMSArNTMwLDExIEBACiAKIC8qIENvbnZlcnQgYSBzaW5nbGUgaXRlbS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGl0ZW0oUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CiAKICAgICBpZiAoKmZvcm1hdCA9PSAnKCcgLyogJyknICovKSB7CkBAIC01MzAsNyArNTU5LDcgQEAKIAogLyogRm9ybWF0IGFuIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGNvbnZlcnRzaW1wbGUoKS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGVycihjb25zdCBjaGFyICpleHBlY3RlZCwgUHlPYmplY3QgKmFyZywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSkKIHsKICAgICBhc3NlcnQoZXhwZWN0ZWQgIT0gTlVMTCk7CkBAIC01NzIsNyArNjAxLDcgQEAKICAgIFdoZW4geW91IGFkZCBuZXcgZm9ybWF0IGNvZGVzLCBwbGVhc2UgZG9uJ3QgZm9yZ2V0IHBvb3Igc2tpcGl0ZW0oKSBiZWxvdy4KICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIGNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewpAQCAtNzUyLDE0ICs3ODEsMTMgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdMJzogey8qIFBZX0xPTkdfTE9ORyAqLwotICAgICAgICBQWV9MT05HX0xPTkcgKnAgPSB2YV9hcmcoICpwX3ZhLCBQWV9MT05HX0xPTkcgKiApOwotICAgICAgICBQWV9MT05HX0xPTkcgaXZhbDsKKyAgICBjYXNlICdMJzogey8qIGxvbmcgbG9uZyAqLworICAgICAgICBsb25nIGxvbmcgKnAgPSB2YV9hcmcoICpwX3ZhLCBsb25nIGxvbmcgKiApOworICAgICAgICBsb25nIGxvbmcgaXZhbDsKICAgICAgICAgaWYgKGZsb2F0X2FyZ3VtZW50X2Vycm9yKGFyZykpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBpdmFsID0gUHlMb25nX0FzTG9uZ0xvbmcoYXJnKTsKLSAgICAgICAgaWYgKGl2YWwgPT0gKFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoaXZhbCA9PSAobG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqcCA9IGl2YWw7CkBAIC03NjcsOCArNzk1LDggQEAKICAgICB9CiAKICAgICBjYXNlICdLJzogeyAvKiBsb25nIGxvbmcgc2l6ZWQgYml0ZmllbGQgKi8KLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HICpwID0gdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKik7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpdmFsOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKnAgPSB2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGl2YWw7CiAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkKICAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhhcmcpOwogICAgICAgICBlbHNlCkBAIC03NzYsNyArODA0LDYgQEAKICAgICAgICAgKnAgPSBpdmFsOwogICAgICAgICBicmVhazsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNhc2UgJ2YnOiB7LyogZmxvYXQgKi8KICAgICAgICAgZmxvYXQgKnAgPSB2YV9hcmcoKnBfdmEsIGZsb2F0ICopOwpAQCAtODU3LDcgKzg4NCw3IEBACiAKICAgICBjYXNlICd5Jzogey8qIGFueSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICB2b2lkICoqcCA9ICh2b2lkICoqKXZhX2FyZygqcF92YSwgY2hhciAqKik7Ci0gICAgICAgIGNoYXIgKmJ1ZjsKKyAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICBQeV9zc2l6ZV90IGNvdW50OwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnKicpIHsKICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCAmYnVmKSA8IDApCkBAIC05MDQsNyArOTMxLDcgQEAKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsIHNhcmcsIGxlbiwgMSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYW55IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBpZiAoZ2V0YnVmZmVyKGFyZywgcCwgJmJ1ZikgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihidWYsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIH0KQEAgLTkzNCw3ICs5NjEsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIHJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgICAgIC8qIFhYWCBSZWFsbHk/ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50ID0gY29udmVydGJ1ZmZlcihhcmcsIHAsICZidWYpOwogICAgICAgICAgICAgICAgIGlmIChjb3VudCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTA1MSwzNSArMTA3OCwyNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoQXNDaGFyQnVmZmVyIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp1OwotCi0gICAgICAgICAgICAvKiBDb252ZXJ0IG9iamVjdCB0byBVbmljb2RlICovCi0gICAgICAgICAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICJzdHJpbmcgb3IgdW5pY29kZSBvciB0ZXh0IGJ1ZmZlciIsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewogICAgICAgICAgICAgLyogRW5jb2RlIG9iamVjdDsgdXNlIGRlZmF1bHQgZXJyb3IgaGFuZGxpbmcgKi8KLSAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsCisgICAgICAgICAgICBzID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKGVuY29kaW5nIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhzKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgIihlbmNvZGVyIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMpIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socykpOwogICAgICAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocyk7CiAgICAgICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBwdHIgPSAiIjsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAorICAgICAgICAgICAgICAgIHJlY29kZV9zdHJpbmdzID8gInN0ciIgOiAic3RyLCBieXRlcyBvciBieXRlYXJyYXkiLAorICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIFdyaXRlIG91dHB1dDsgb3V0cHV0IGlzIGd1YXJhbnRlZWQgdG8gYmUgMC10ZXJtaW5hdGVkICovCiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcjJykgewpAQCAtMTEyOSw3ICsxMTQ2LDcgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKHNpemUgKyAxID4gQlVGRkVSX0xFTikgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgc3RyaW5nIHRvbyBsb25nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoJXpkLCBtYXhpbXVtIGxlbmd0aCAlemQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KXNpemUsIChQeV9zc2l6ZV90KShCVUZGRVJfTEVOLTEpKTsKQEAgLTEyODMsNyArMTMwMCw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1jb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKipwLCBjaGFyICoqZXJybXNnKQorY29udmVydGJ1ZmZlcihQeU9iamVjdCAqYXJnLCB2b2lkICoqcCwgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBQeUJ1ZmZlclByb2NzICpwYiA9IFB5X1RZUEUoYXJnKS0+dHBfYXNfYnVmZmVyOwogICAgIFB5X3NzaXplX3QgY291bnQ7CkBAIC0xMzA1LDcgKzEzMjIsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1nZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjaGFyICoqZXJybXNnKQorZ2V0YnVmZmVyKFB5T2JqZWN0ICphcmcsIFB5X2J1ZmZlciAqdmlldywgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgICplcnJtc2cgPSAiYnl0ZXMtbGlrZSBvYmplY3QiOwpAQCAtMTM5MSw5ICsxNDA4LDEwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKICAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzKGFyZ3MsIGtleXdvcmRzLCBmb3JtYXQsIGt3bGlzdCwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMTQxNSwxMCArMTQzMywxMzggQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAogICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHMoYXJncywga2V5d29yZHMsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdChhcmdzLCBrZXl3b3JkcywgcGFyc2VyLCAmdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZ2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VTdGFjayhQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoa3duYW1lcyAhPSBOVUxMICYmICFQeVR1cGxlX0NoZWNrKGt3bmFtZXMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKGFyZ3MsIG5hcmdzLCBOVUxMLCBrd25hbWVzLCBwYXJzZXIsICZ2YSwgMCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVN0YWNrX1NpemVUKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChrd25hbWVzICE9IE5VTEwgJiYgIVB5VHVwbGVfQ2hlY2soa3duYW1lcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsIHBhcnNlciwgJnZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisKK2ludAorX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgdmEpCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IGx2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfY29weShsdmEsIHZhKTsKKworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZsdmEsIDApOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgdmEpCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IGx2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfY29weShsdmEsIHZhKTsKKworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZsdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQobHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xNDQ4LDcgKzE1OTQsOCBAQAogICAgIGNvbnN0IGNoYXIgKmZuYW1lLCAqbXNnLCAqY3VzdG9tX21zZywgKmtleXdvcmQ7CiAgICAgaW50IG1pbiA9IElOVF9NQVg7CiAgICAgaW50IG1heCA9IElOVF9NQVg7Ci0gICAgaW50IGksIGxlbjsKKyAgICBpbnQgaSwgcG9zLCBsZW47CisgICAgaW50IHNraXAgPSAwOwogICAgIFB5X3NzaXplX3QgbmFyZ3MsIG5rZXl3b3JkczsKICAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CiAgICAgZnJlZWxpc3RlbnRyeV90IHN0YXRpY19lbnRyaWVzW1NUQVRJQ19GUkVFTElTVF9FTlRSSUVTXTsKQEAgLTE0NzYsOSArMTYyMywxNyBAQAogICAgICAgICAgICAgY3VzdG9tX21zZysrOwogICAgIH0KIAorICAgIC8qIHNjYW4ga3dsaXN0IGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzICovCisgICAgZm9yIChwb3MgPSAwOyBrd2xpc3RbcG9zXSAmJiAhKmt3bGlzdFtwb3NdOyBwb3MrKykgeworICAgIH0KICAgICAvKiBzY2FuIGt3bGlzdCBhbmQgZ2V0IGdyZWF0ZXN0IHBvc3NpYmxlIG5iciBvZiBhcmdzICovCi0gICAgZm9yIChsZW49MDsga3dsaXN0W2xlbl07IGxlbisrKQotICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGxlbiA9IHBvczsga3dsaXN0W2xlbl07IGxlbisrKSB7CisgICAgICAgIGlmICghKmt3bGlzdFtsZW5dKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IGtleXdvcmQgcGFyYW1ldGVyIG5hbWUiKTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGxlbiA+IFNUQVRJQ19GUkVFTElTVF9FTlRSSUVTKSB7CiAgICAgICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOwpAQCAtMTUwNyw3ICsxNjYyLDcgQEAKICAgICAgICAga2V5d29yZCA9IGt3bGlzdFtpXTsKICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CiAgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTE2LDE0ICsxNjcxLDE0IEBACiAgICAgICAgICAgICBmb3JtYXQrKzsKIAogICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CiAgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTMxLDYgKzE2ODYsMTcgQEAKICAgICAgICAgICAgIG1heCA9IGk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKIAorICAgICAgICAgICAgaWYgKG1heCA8IHBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyICQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChza2lwKSB7CisgICAgICAgICAgICAgICAgLyogTm93IHdlIGtub3cgdGhlIG1pbmltYWwgYW5kIHRoZSBtYXhpbWFsIG51bWJlcnMgb2YKKyAgICAgICAgICAgICAgICAgKiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhbmQgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICogaW5mb3JtYXRpdmUgbWVzc2FnZSAoc2VlIGJlbG93KS4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtYXggPCBuYXJncykgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKQEAgLTE1NDEsNjYgKzE3MDcsOTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKLSAgICAgICAgaWYgKG5rZXl3b3JkcykgewotICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrZXl3b3Jkcywga2V5d29yZCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICAtLW5rZXl3b3JkczsKLSAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKLSAgICAgICAgICAgICAgICAvKiBhcmcgcHJlc2VudCBpbiB0dXBsZSBhbmQgaW4gZGljdCAqLwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIGlmICghc2tpcCkgeworICAgICAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOworICAgICAgICAgICAgaWYgKG5rZXl3b3JkcyAmJiBpID49IHBvcykgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoa2V5d29yZHMsIGtleXdvcmQpOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9hcmcgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgICAgICAtLW5rZXl3b3JkczsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVzJykgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpIDwgbWluKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChtaW4gPT0gSU5UX01BWCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAobWF4ID09IElOVF9NQVgpOworICAgICAgICAgICAgICAgICAgICBza2lwID0gMTsKKyAgICAgICAgICAgICAgICAgICAgLyogQXQgdGhhdCBtb21lbnQgd2Ugc3RpbGwgZG9uJ3Qga25vdyB0aGUgbWluaW1hbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICogdGhlIG1heGltYWwgbnVtYmVycyBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIFJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIGlzIGRlZmVycmVkIHVudGlsIHdlIGVuY291bnRlciB8IGFuZCAkCisgICAgICAgICAgICAgICAgICAgICAqIG9yIHRoZSBlbmQgb2YgdGhlIGZvcm1hdC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIChwb3MgJWQpIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGN1cnJlbnQgY29kZSByZXBvcnRzIHN1Y2Nlc3Mgd2hlbiBhbGwgcmVxdWlyZWQgYXJncworICAgICAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCisgICAgICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCFua2V5d29yZHMgJiYgIXNraXApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChua2V5d29yZHMgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwotICAgICAgICBlbHNlIGlmIChpIDwgbmFyZ3MpCi0gICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShjdXJyZW50X2FyZywgJmZvcm1hdCwgcF92YSwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwotICAgICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBjdXN0b21fbXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGkgPCBtaW4pIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCi0gICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgotICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KLSAgICAgICAgICovCi0gICAgICAgIGlmICghbmtleXdvcmRzKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAKICAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKICAgICAgICAgICoga2V5d29yZCBhcmdzICovCiAgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIHBfdmEsIGZsYWdzKTsKICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzOiAnJXMnIiwgbXNnLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAiJXM6ICclcyciLCBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHNraXApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAoUHlfTUlOKHBvcywgbWluKSA8IGkpID8gImF0IGxlYXN0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X01JTihwb3MsIG1pbiksIG5hcmdzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorCiAgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgogICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CkBAIC0xNjE4LDcgKzE4MDgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKGtleSwga3dsaXN0W2ldKSkgeworICAgICAgICAgICAgICAgIGlmICgqa3dsaXN0W2ldICYmIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKGtleSwga3dsaXN0W2ldKSkgewogICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2MzcsNyArMTgyNywzODggQEAKIH0KIAogCi1zdGF0aWMgY2hhciAqCisvKiBMaXN0IG9mIHN0YXRpYyBwYXJzZXJzLiAqLworc3RhdGljIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpzdGF0aWNfYXJnX3BhcnNlcnMgPSBOVUxMOworCitzdGF0aWMgaW50CitwYXJzZXJfaW5pdChzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyKQoreworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqa2V5d29yZHM7CisgICAgY29uc3QgY2hhciAqZm9ybWF0LCAqbXNnOworICAgIGludCBpLCBsZW4sIG1pbiwgbWF4LCBua3c7CisgICAgUHlPYmplY3QgKmt3dHVwbGU7CisKKyAgICBhc3NlcnQocGFyc2VyLT5mb3JtYXQgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHBhcnNlci0+a2V5d29yZHMgIT0gTlVMTCk7CisgICAgaWYgKHBhcnNlci0+a3d0dXBsZSAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGdyYWIgdGhlIGZ1bmN0aW9uIG5hbWUgb3IgY3VzdG9tIGVycm9yIG1zZyBmaXJzdCAobXV0dWFsbHkgZXhjbHVzaXZlKSAqLworICAgIHBhcnNlci0+Zm5hbWUgPSBzdHJjaHIocGFyc2VyLT5mb3JtYXQsICc6Jyk7CisgICAgaWYgKHBhcnNlci0+Zm5hbWUpIHsKKyAgICAgICAgcGFyc2VyLT5mbmFtZSsrOworICAgICAgICBwYXJzZXItPmN1c3RvbV9tc2cgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcGFyc2VyLT5jdXN0b21fbXNnID0gc3RyY2hyKHBhcnNlci0+Zm9ybWF0LCc7Jyk7CisgICAgICAgIGlmIChwYXJzZXItPmN1c3RvbV9tc2cpCisgICAgICAgICAgICBwYXJzZXItPmN1c3RvbV9tc2crKzsKKyAgICB9CisKKyAgICBrZXl3b3JkcyA9IHBhcnNlci0+a2V5d29yZHM7CisgICAgLyogc2NhbiBrZXl3b3JkcyBhbmQgY291bnQgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyAqLworICAgIGZvciAoaSA9IDA7IGtleXdvcmRzW2ldICYmICEqa2V5d29yZHNbaV07IGkrKykgeworICAgIH0KKyAgICBwYXJzZXItPnBvcyA9IGk7CisgICAgLyogc2NhbiBrZXl3b3JkcyBhbmQgZ2V0IGdyZWF0ZXN0IHBvc3NpYmxlIG5iciBvZiBhcmdzICovCisgICAgZm9yICg7IGtleXdvcmRzW2ldOyBpKyspIHsKKyAgICAgICAgaWYgKCEqa2V5d29yZHNbaV0pIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkga2V5d29yZCBwYXJhbWV0ZXIgbmFtZSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgbGVuID0gaTsKKworICAgIG1pbiA9IG1heCA9IElOVF9NQVg7CisgICAgZm9ybWF0ID0gcGFyc2VyLT5mb3JtYXQ7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgaWYgKG1pbiAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICh8IHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBiZWZvcmUgfCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1pbiA9IGk7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoKmZvcm1hdCA9PSAnJCcpIHsKKyAgICAgICAgICAgIGlmIChtYXggIT0gSU5UX01BWCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaSA8IHBhcnNlci0+cG9zKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgJCIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF4ID0gaTsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGlmIChJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk1vcmUga2V5d29yZCBsaXN0IGVudHJpZXMgKCVkKSB0aGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0IHNwZWNpZmllcnMgKCVkKSIsIGxlbiwgaSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIE5VTEwsIDApOworICAgICAgICBpZiAobXNnKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsICIlczogJyVzJyIsIG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcGFyc2VyLT5taW4gPSBQeV9NSU4obWluLCBsZW4pOworICAgIHBhcnNlci0+bWF4ID0gUHlfTUlOKG1heCwgbGVuKTsKKworICAgIGlmICghSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSAmJiAoKmZvcm1hdCAhPSAnfCcpICYmICgqZm9ybWF0ICE9ICckJykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIm1vcmUgYXJndW1lbnQgc3BlY2lmaWVycyB0aGFuIGtleXdvcmQgbGlzdCBlbnRyaWVzICIKKyAgICAgICAgICAgICIocmVtYWluaW5nIGZvcm1hdDonJXMnKSIsIGZvcm1hdCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG5rdyA9IGxlbiAtIHBhcnNlci0+cG9zOworICAgIGt3dHVwbGUgPSBQeVR1cGxlX05ldyhua3cpOworICAgIGlmIChrd3R1cGxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGtleXdvcmRzID0gcGFyc2VyLT5rZXl3b3JkcyArIHBhcnNlci0+cG9zOworICAgIGZvciAoaSA9IDA7IGkgPCBua3c7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoa2V5d29yZHNbaV0pOworICAgICAgICBpZiAoc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrd3R1cGxlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZzdHIpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGt3dHVwbGUsIGksIHN0cik7CisgICAgfQorICAgIHBhcnNlci0+a3d0dXBsZSA9IGt3dHVwbGU7CisKKyAgICBhc3NlcnQocGFyc2VyLT5uZXh0ID09IE5VTEwpOworICAgIHBhcnNlci0+bmV4dCA9IHN0YXRpY19hcmdfcGFyc2VyczsKKyAgICBzdGF0aWNfYXJnX3BhcnNlcnMgPSBwYXJzZXI7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkCitwYXJzZXJfY2xlYXIoc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlcikKK3sKKyAgICBQeV9DTEVBUihwYXJzZXItPmt3dHVwbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmaW5kX2tleXdvcmQoUHlPYmplY3QgKmt3bmFtZXMsIFB5T2JqZWN0ICoqa3dzdGFjaywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG5rd2FyZ3M7CisKKyAgICBua3dhcmdzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBmb3IgKGk9MDsgaSA8IG5rd2FyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqa3duYW1lID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBpKTsKKworICAgICAgICAvKiBwdHI9PXB0ciBzaG91bGQgbWF0Y2ggaW4gbW9zdCBjYXNlcyBzaW5jZSBrZXl3b3JkIGtleXMKKyAgICAgICAgICAgc2hvdWxkIGJlIGludGVybmVkIHN0cmluZ3MgKi8KKyAgICAgICAgaWYgKGt3bmFtZSA9PSBrZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrd3N0YWNrW2ldOworICAgICAgICB9CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGt3bmFtZSkpIHsKKyAgICAgICAgICAgIC8qIGlnbm9yZSBub24tc3RyaW5nIGtleXdvcmQga2V5czoKKyAgICAgICAgICAgICAgIGFuIGVycm9yIHdpbGwgYmUgcmFpc2VkIGFib3ZlICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5VW5pY29kZV9FUShrd25hbWUsIGtleSkpIHsKKyAgICAgICAgICAgIHJldHVybiBrd3N0YWNrW2ldOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50Cit2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleXdvcmRzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzKQoreworICAgIFB5T2JqZWN0ICprd3R1cGxlOworICAgIGNoYXIgbXNnYnVmWzUxMl07CisgICAgaW50IGxldmVsc1szMl07CisgICAgY29uc3QgY2hhciAqZm9ybWF0OworICAgIGNvbnN0IGNoYXIgKm1zZzsKKyAgICBQeU9iamVjdCAqa2V5d29yZDsKKyAgICBpbnQgaSwgcG9zLCBsZW47CisgICAgUHlfc3NpemVfdCBua2V5d29yZHM7CisgICAgUHlPYmplY3QgKmN1cnJlbnRfYXJnOworICAgIGZyZWVsaXN0ZW50cnlfdCBzdGF0aWNfZW50cmllc1tTVEFUSUNfRlJFRUxJU1RfRU5UUklFU107CisgICAgZnJlZWxpc3RfdCBmcmVlbGlzdDsKKyAgICBQeU9iamVjdCAqKmt3c3RhY2sgPSBOVUxMOworCisgICAgZnJlZWxpc3QuZW50cmllcyA9IHN0YXRpY19lbnRyaWVzOworICAgIGZyZWVsaXN0LmZpcnN0X2F2YWlsYWJsZSA9IDA7CisgICAgZnJlZWxpc3QuZW50cmllc19tYWxsb2NlZCA9IDA7CisKKyAgICBhc3NlcnQoa2V5d29yZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa2V5d29yZHMpKTsKKyAgICBhc3NlcnQoa3duYW1lcyA9PSBOVUxMIHx8IFB5VHVwbGVfQ2hlY2soa3duYW1lcykpOworICAgIGFzc2VydCgoa2V5d29yZHMgIT0gTlVMTCB8fCBrd25hbWVzICE9IE5VTEwpCisgICAgICAgICAgIHx8IChrZXl3b3JkcyA9PSBOVUxMICYmIGt3bmFtZXMgPT0gTlVMTCkpOworICAgIGFzc2VydChwYXJzZXIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHBfdmEgIT0gTlVMTCk7CisKKyAgICBpZiAoIXBhcnNlcl9pbml0KHBhcnNlcikpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAga3d0dXBsZSA9IHBhcnNlci0+a3d0dXBsZTsKKyAgICBwb3MgPSBwYXJzZXItPnBvczsKKyAgICBsZW4gPSBwb3MgKyBQeVR1cGxlX0dFVF9TSVpFKGt3dHVwbGUpOworCisgICAgaWYgKGxlbiA+IFNUQVRJQ19GUkVFTElTVF9FTlRSSUVTKSB7CisgICAgICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOworICAgICAgICBpZiAoZnJlZWxpc3QuZW50cmllcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZnJlZWxpc3QuZW50cmllc19tYWxsb2NlZCA9IDE7CisgICAgfQorCisgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgbmtleXdvcmRzID0gUHlEaWN0X1NpemUoa2V5d29yZHMpOworICAgIH0KKyAgICBlbHNlIGlmIChrd25hbWVzICE9IE5VTEwpIHsKKyAgICAgICAgbmtleXdvcmRzID0gUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICAgICAga3dzdGFjayA9IGFyZ3MgKyBuYXJnczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5rZXl3b3JkcyA9IDA7CisgICAgfQorICAgIGlmIChuYXJncyArIG5rZXl3b3JkcyA+IGxlbikgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiVzJXMgdGFrZXMgYXQgbW9zdCAlZCBhcmd1bWVudCVzICglemQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPmZuYW1lID09IE5VTEwpID8gImZ1bmN0aW9uIiA6IHBhcnNlci0+Zm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAocGFyc2VyLT5mbmFtZSA9PSBOVUxMKSA/ICIiIDogIigpIiwKKyAgICAgICAgICAgICAgICAgICAgIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgIChsZW4gPT0gMSkgPyAiIiA6ICJzIiwKKyAgICAgICAgICAgICAgICAgICAgIG5hcmdzICsgbmtleXdvcmRzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorICAgIGlmIChwYXJzZXItPm1heCA8IG5hcmdzKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgJXMgJWQgcG9zaXRpb25hbCBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAocGFyc2VyLT5taW4gIT0gSU5UX01BWCkgPyAiYXQgbW9zdCIgOiAiZXhhY3RseSIsCisgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1heCwgbmFyZ3MpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisKKyAgICBmb3JtYXQgPSBwYXJzZXItPmZvcm1hdDsKKyAgICAvKiBjb252ZXJ0IHR1cGxlIGFyZ3MgYW5kIGtleXdvcmQgYXJncyBpbiBzYW1lIGxvb3AsIHVzaW5nIGt3dHVwbGUgdG8gZHJpdmUgcHJvY2VzcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBrZXl3b3JkID0gKGkgPj0gcG9zKSA/IFB5VHVwbGVfR0VUX0lURU0oa3d0dXBsZSwgaSAtIHBvcykgOiBOVUxMOworICAgICAgICBpZiAoKmZvcm1hdCA9PSAnfCcpIHsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGlmICgqZm9ybWF0ID09ICckJykgeworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpKTsKKworICAgICAgICBjdXJyZW50X2FyZyA9IE5VTEw7CisgICAgICAgIGlmIChua2V5d29yZHMgJiYgaSA+PSBwb3MpIHsKKyAgICAgICAgICAgIGlmIChrZXl3b3JkcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbShrZXl3b3Jkcywga2V5d29yZCk7CisgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X2FyZyAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gZmluZF9rZXl3b3JkKGt3bmFtZXMsIGt3c3RhY2ssIGtleXdvcmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgLS1ua2V5d29yZHM7CisgICAgICAgICAgICBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICAgICAgLyogYXJnIHByZXNlbnQgaW4gdHVwbGUgYW5kIGluIGRpY3QgKi8KKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVVJykgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHBvc2l0aW9uICglZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykgeworICAgICAgICAgICAgY3VycmVudF9hcmcgPSBhcmdzW2ldOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShjdXJyZW50X2FyZywgJmZvcm1hdCwgcF92YSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgaWYgKG1zZykgeworICAgICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIHBhcnNlci0+Zm5hbWUsIHBhcnNlci0+Y3VzdG9tX21zZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpIDwgcGFyc2VyLT5taW4pIHsKKyAgICAgICAgICAgIC8qIExlc3MgYXJndW1lbnRzIHRoYW4gcmVxdWlyZWQgKi8KKyAgICAgICAgICAgIGlmIChpIDwgcG9zKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICglZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfTUlOKHBvcywgcGFyc2VyLT5taW4pIDwgcGFyc2VyLT5tYXgpID8gImF0IGxlYXN0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTUlOKHBvcywgcGFyc2VyLT5taW4pLCBuYXJncyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiUmVxdWlyZWQgYXJndW1lbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyAocG9zICVkKSBub3QgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIH0KKyAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCisgICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgorICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KKyAgICAgICAgICovCisgICAgICAgIGlmICghbmtleXdvcmRzKSB7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFdlIGFyZSBpbnRvIG9wdGlvbmFsIGFyZ3MsIHNraXAgdGhydSB0byBhbnkgcmVtYWluaW5nCisgICAgICAgICAqIGtleXdvcmQgYXJncyAqLworICAgICAgICBtc2cgPSBza2lwaXRlbSgmZm9ybWF0LCBwX3ZhLCBmbGFncyk7CisgICAgICAgIGFzc2VydChtc2cgPT0gTlVMTCk7CisgICAgfQorCisgICAgYXNzZXJ0KElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgfHwgKCpmb3JtYXQgPT0gJ3wnKSB8fCAoKmZvcm1hdCA9PSAnJCcpKTsKKworICAgIC8qIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZXh0cmFuZW91cyBrZXl3b3JkIGFyZ3VtZW50cyAqLworICAgIGlmIChua2V5d29yZHMgPiAwKSB7CisgICAgICAgIGlmIChrZXl3b3JkcyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQoa2V5d29yZHMsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbWF0Y2g7CisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWF0Y2ggPSBQeVNlcXVlbmNlX0NvbnRhaW5zKGt3dHVwbGUsIGtleSk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGosIG5rd2FyZ3M7CisKKyAgICAgICAgICAgIG5rd2FyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgICAgICAgICAgZm9yIChqPTA7IGogPCBua3dhcmdzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCBqKTsKKyAgICAgICAgICAgICAgICBpbnQgbWF0Y2g7CisKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1hdGNoID0gUHlTZXF1ZW5jZV9Db250YWlucyhrd3R1cGxlLCBrZXkpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaCA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclVScgaXMgYW4gaW52YWxpZCBrZXl3b3JkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7Cit9CisKK3N0YXRpYyBpbnQKK3ZnZXRhcmdza2V5d29yZHNmYXN0KFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOworCisgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7CisgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIHJldHVybiB2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKHN0YWNrLCBuYXJncywga2V5d29yZHMsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLCBwX3ZhLCBmbGFncyk7Cit9CisKKworc3RhdGljIGNvbnN0IGNoYXIgKgogc2tpcGl0ZW0oY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpCiB7CiAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gKnBfZm9ybWF0OwpAQCAtMTY1OCwxMCArMjIyOSw4IEBACiAgICAgY2FzZSAnSSc6IC8qIGludCBzaXplZCBiaXRmaWVsZCAqLwogICAgIGNhc2UgJ2wnOiAvKiBsb25nIGludCAqLwogICAgIGNhc2UgJ2snOiAvKiBsb25nIGludCBzaXplZCBiaXRmaWVsZCAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAnTCc6IC8qIFBZX0xPTkdfTE9ORyAqLwotICAgIGNhc2UgJ0snOiAvKiBQWV9MT05HX0xPTkcgc2l6ZWQgYml0ZmllbGQgKi8KLSNlbmRpZgorICAgIGNhc2UgJ0wnOiAvKiBsb25nIGxvbmcgKi8KKyAgICBjYXNlICdLJzogLyogbG9uZyBsb25nIHNpemVkIGJpdGZpZWxkICovCiAgICAgY2FzZSAnbic6IC8qIFB5X3NzaXplX3QgKi8KICAgICBjYXNlICdmJzogLyogZmxvYXQgKi8KICAgICBjYXNlICdkJzogLyogZG91YmxlICovCkBAIC0xNjczLDcgKzIyNDIsOSBAQAogICAgIGNhc2UgJ1knOiAvKiBzdHJpbmcgb2JqZWN0ICovCiAgICAgY2FzZSAnVSc6IC8qIHVuaWNvZGUgc3RyaW5nIG9iamVjdCAqLwogICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xNjgxLDcgKzIyNTIsOSBAQAogCiAgICAgY2FzZSAnZSc6IC8qIHN0cmluZyB3aXRoIGVuY29kaW5nICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CisgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29uc3QgY2hhciAqKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghKCpmb3JtYXQgPT0gJ3MnIHx8ICpmb3JtYXQgPT0gJ3QnKSkKICAgICAgICAgICAgICAgICAvKiBhZnRlciAnZScsIG9ubHkgJ3MnIGFuZCAndCcgaXMgYWxsb3dlZCAqLwogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwpAQCAtMTY5NiwxMiArMjI2OSwxNiBAQAogICAgIGNhc2UgJ1onOiAvKiB1bmljb2RlIHN0cmluZyBvciBOb25lICovCiAgICAgY2FzZSAndyc6IC8qIGJ1ZmZlciwgcmVhZC13cml0ZSAqLwogICAgICAgICB7Ci0gICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKKyAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgqZm9ybWF0ID09ICcjJykgewotICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZMQUdfU0laRV9UKQotICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeV9zc2l6ZV90ICopOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgaW50ICopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRkxBR19TSVpFX1QpCisgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeV9zc2l6ZV90ICopOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBpbnQgKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICAgICAgfSBlbHNlIGlmICgoYyA9PSAncycgfHwgYyA9PSAneicgfHwgYyA9PSAneScpICYmICpmb3JtYXQgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CkBAIC0xNzEzLDI0ICsyMjkwLDMwIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgqZm9ybWF0ID09ICchJykgewogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5VHlwZU9iamVjdCopOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5VHlwZU9iamVjdCopOworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoKmZvcm1hdCA9PSAnJicpIHsKICAgICAgICAgICAgICAgICB0eXBlZGVmIGludCAoKmNvbnZlcnRlcikoUHlPYmplY3QgKiwgdm9pZCAqKTsKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb252ZXJ0ZXIpOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb252ZXJ0ZXIpOworICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgY2FzZSAnKCc6ICAgICAgICAgICAvKiBieXBhc3MgdHVwbGUsIG5vdCBoYW5kbGVkIGF0IGFsbCBwcmV2aW91c2x5ICovCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgKm1zZzsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICBpZiAoKmZvcm1hdD09JyknKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE3NjYsMTYgKzIzNDksOSBAQAogICAgIFB5T2JqZWN0ICoqbzsKICAgICB2YV9saXN0IHZhcmdzOwogCi0jaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwotICAgIHZhX3N0YXJ0KHZhcmdzLCBtYXgpOwotI2Vsc2UKLSAgICB2YV9zdGFydCh2YXJncyk7Ci0jZW5kaWYKLQogICAgIGFzc2VydChtaW4gPj0gMCk7CiAgICAgYXNzZXJ0KG1pbiA8PSBtYXgpOwogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewotICAgICAgICB2YV9lbmQodmFyZ3MpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAiUHlBcmdfVW5wYWNrVHVwbGUoKSBhcmd1bWVudCBsaXN0IGlzIG5vdCBhIHR1cGxlIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTc5Myw5ICsyMzY5LDEwIEBACiAgICAgICAgICAgICAgICAgInVucGFja2VkIHR1cGxlIHNob3VsZCBoYXZlICVzJXpkIGVsZW1lbnRzLCIKICAgICAgICAgICAgICAgICAiIGJ1dCBoYXMgJXpkIiwKICAgICAgICAgICAgICAgICAobWluID09IG1heCA/ICIiIDogImF0IGxlYXN0ICIpLCBtaW4sIGwpOwotICAgICAgICB2YV9lbmQodmFyZ3MpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaWYgKGwgPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgaWYgKGwgPiBtYXgpIHsKICAgICAgICAgaWYgKG5hbWUgIT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTE4MDgsOSArMjM4NSwxNCBAQAogICAgICAgICAgICAgICAgICJ1bnBhY2tlZCB0dXBsZSBzaG91bGQgaGF2ZSAlcyV6ZCBlbGVtZW50cywiCiAgICAgICAgICAgICAgICAgIiBidXQgaGFzICV6ZCIsCiAgICAgICAgICAgICAgICAgKG1pbiA9PSBtYXggPyAiIiA6ICJhdCBtb3N0ICIpLCBtYXgsIGwpOwotICAgICAgICB2YV9lbmQodmFyZ3MpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCisgICAgdmFfc3RhcnQodmFyZ3MsIG1heCk7CisjZWxzZQorICAgIHZhX3N0YXJ0KHZhcmdzKTsKKyNlbmRpZgogICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHsKICAgICAgICAgbyA9IHZhX2FyZyh2YXJncywgUHlPYmplY3QgKiopOwogICAgICAgICAqbyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CkBAIC0xODYwLDYgKzI0NDIsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZAorX1B5QXJnX0Zpbmkodm9pZCkKK3sKKyAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqdG1wLCAqcyA9IHN0YXRpY19hcmdfcGFyc2VyczsKKyAgICB3aGlsZSAocykgeworICAgICAgICB0bXAgPSBzLT5uZXh0OworICAgICAgICBzLT5uZXh0ID0gTlVMTDsKKyAgICAgICAgcGFyc2VyX2NsZWFyKHMpOworICAgICAgICBzID0gdG1wOworICAgIH0KKyAgICBzdGF0aWNfYXJnX3BhcnNlcnMgPSBOVUxMOworfQorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1B5dGhvbi9ncmFtaW5pdC5jIGIvUHl0aG9uL2dyYW1pbml0LmMKaW5kZXggODIxMmIyYS4uZjI1ODRlMCAxMDA2NDQKLS0tIGEvUHl0aG9uL2dyYW1pbml0LmMKKysrIGIvUHl0aG9uL2dyYW1pbml0LmMKQEAgLTIwNCwxMSArMjA0LDEzIEBACiAgICAgezMyLCA3fSwKICAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfN1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc185XzdbM10gPSB7CiAgICAgezMwLCAxMn0sCiAgICAgezM0LCAzfSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfOFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc185XzhbMl0gPSB7CisgICAgezMyLCAxM30sCiAgICAgezAsIDh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzlbMl0gPSB7CkBAIC0yMjEsMzUgKzIyMywzOSBAQAogICAgIHswLCAxMH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfMTFbM10gPSB7Ci0gICAgezMwLCAxM30sCi0gICAgezMyLCAxNH0sCisgICAgezMwLCAxNH0sCisgICAgezMyLCAxNX0sCiAgICAgezAsIDExfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV8xMlszXSA9IHsKICAgICB7MzIsIDd9LAotICAgIHszMSwgMTV9LAorICAgIHszMSwgMTZ9LAogICAgIHswLCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTNbMl0gPSB7Ci0gICAgezMyLCAxNH0sCitzdGF0aWMgYXJjIGFyY3NfOV8xM1sxXSA9IHsKICAgICB7MCwgMTN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzE0WzJdID0gewotICAgIHszMCwgMTZ9LAotICAgIHszNCwgM30sCisgICAgezMyLCAxNX0sCisgICAgezAsIDE0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc185XzE1WzNdID0geworICAgIHszMCwgMTd9LAorICAgIHszNCwgM30sCisgICAgezAsIDE1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfOV8xNlsxXSA9IHsKICAgICB7MjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzE2WzNdID0gewotICAgIHszMiwgMTR9LAotICAgIHszMSwgMTd9LAotICAgIHswLCAxNn0sCitzdGF0aWMgYXJjIGFyY3NfOV8xN1szXSA9IHsKKyAgICB7MzIsIDE1fSwKKyAgICB7MzEsIDE4fSwKKyAgICB7MCwgMTd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzE3WzFdID0gewotICAgIHsyNiwgMTN9LAorc3RhdGljIGFyYyBhcmNzXzlfMThbMV0gPSB7CisgICAgezI2LCAxNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc185WzE4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfOVsxOV0gPSB7CiAgICAgezMsIGFyY3NfOV8wfSwKICAgICB7MywgYXJjc185XzF9LAogICAgIHszLCBhcmNzXzlfMn0sCkBAIC0yNTcsMTcgKzI2MywxOCBAQAogICAgIHsxLCBhcmNzXzlfNH0sCiAgICAgezQsIGFyY3NfOV81fSwKICAgICB7MiwgYXJjc185XzZ9LAotICAgIHsyLCBhcmNzXzlfN30sCi0gICAgezEsIGFyY3NfOV84fSwKKyAgICB7MywgYXJjc185Xzd9LAorICAgIHsyLCBhcmNzXzlfOH0sCiAgICAgezIsIGFyY3NfOV85fSwKICAgICB7MywgYXJjc185XzEwfSwKICAgICB7MywgYXJjc185XzExfSwKICAgICB7MywgYXJjc185XzEyfSwKLSAgICB7MiwgYXJjc185XzEzfSwKKyAgICB7MSwgYXJjc185XzEzfSwKICAgICB7MiwgYXJjc185XzE0fSwKLSAgICB7MSwgYXJjc185XzE1fSwKLSAgICB7MywgYXJjc185XzE2fSwKLSAgICB7MSwgYXJjc185XzE3fSwKKyAgICB7MywgYXJjc185XzE1fSwKKyAgICB7MSwgYXJjc185XzE2fSwKKyAgICB7MywgYXJjc185XzE3fSwKKyAgICB7MSwgYXJjc185XzE4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTBfMFsxXSA9IHsKICAgICB7MjMsIDF9LApAQCAtMzE5LDExICszMjYsMTMgQEAKICAgICB7MzIsIDd9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfN1syXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMV83WzNdID0gewogICAgIHszNiwgMTJ9LAogICAgIHszNCwgM30sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV84WzFdID0geworc3RhdGljIGFyYyBhcmNzXzExXzhbMl0gPSB7CisgICAgezMyLCAxM30sCiAgICAgezAsIDh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV85WzJdID0gewpAQCAtMzM2LDM1ICszNDUsMzkgQEAKICAgICB7MCwgMTB9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV8xMVszXSA9IHsKLSAgICB7MzYsIDEzfSwKLSAgICB7MzIsIDE0fSwKKyAgICB7MzYsIDE0fSwKKyAgICB7MzIsIDE1fSwKICAgICB7MCwgMTF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMV8xMlszXSA9IHsKICAgICB7MzIsIDd9LAotICAgIHszMSwgMTV9LAorICAgIHszMSwgMTZ9LAogICAgIHswLCAxMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzEzWzJdID0gewotICAgIHszMiwgMTR9LAorc3RhdGljIGFyYyBhcmNzXzExXzEzWzFdID0gewogICAgIHswLCAxM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzE0WzJdID0gewotICAgIHszNiwgMTZ9LAotICAgIHszNCwgM30sCisgICAgezMyLCAxNX0sCisgICAgezAsIDE0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTFfMTVbM10gPSB7CisgICAgezM2LCAxN30sCisgICAgezM0LCAzfSwKKyAgICB7MCwgMTV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNlsxXSA9IHsKICAgICB7MjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xNlszXSA9IHsKLSAgICB7MzIsIDE0fSwKLSAgICB7MzEsIDE3fSwKLSAgICB7MCwgMTZ9LAorc3RhdGljIGFyYyBhcmNzXzExXzE3WzNdID0geworICAgIHszMiwgMTV9LAorICAgIHszMSwgMTh9LAorICAgIHswLCAxN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzE3WzFdID0gewotICAgIHsyNiwgMTN9LAorc3RhdGljIGFyYyBhcmNzXzExXzE4WzFdID0geworICAgIHsyNiwgMTR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTFbMThdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18xMVsxOV0gPSB7CiAgICAgezMsIGFyY3NfMTFfMH0sCiAgICAgezMsIGFyY3NfMTFfMX0sCiAgICAgezMsIGFyY3NfMTFfMn0sCkBAIC0zNzIsMTcgKzM4NSwxOCBAQAogICAgIHsxLCBhcmNzXzExXzR9LAogICAgIHs0LCBhcmNzXzExXzV9LAogICAgIHsyLCBhcmNzXzExXzZ9LAotICAgIHsyLCBhcmNzXzExXzd9LAotICAgIHsxLCBhcmNzXzExXzh9LAorICAgIHszLCBhcmNzXzExXzd9LAorICAgIHsyLCBhcmNzXzExXzh9LAogICAgIHsyLCBhcmNzXzExXzl9LAogICAgIHszLCBhcmNzXzExXzEwfSwKICAgICB7MywgYXJjc18xMV8xMX0sCiAgICAgezMsIGFyY3NfMTFfMTJ9LAotICAgIHsyLCBhcmNzXzExXzEzfSwKKyAgICB7MSwgYXJjc18xMV8xM30sCiAgICAgezIsIGFyY3NfMTFfMTR9LAotICAgIHsxLCBhcmNzXzExXzE1fSwKLSAgICB7MywgYXJjc18xMV8xNn0sCi0gICAgezEsIGFyY3NfMTFfMTd9LAorICAgIHszLCBhcmNzXzExXzE1fSwKKyAgICB7MSwgYXJjc18xMV8xNn0sCisgICAgezMsIGFyY3NfMTFfMTd9LAorICAgIHsxLCBhcmNzXzExXzE4fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTJfMFsxXSA9IHsKICAgICB7MjMsIDF9LApAQCAtNDQ1LDU0ICs0NTksNzcgQEAKIHN0YXRpYyBhcmMgYXJjc18xNl8wWzFdID0gewogICAgIHs0NywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE2XzFbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTZfMVs0XSA9IHsKICAgICB7NDgsIDJ9LAotICAgIHszMSwgM30sCisgICAgezQ5LCAzfSwKKyAgICB7MzEsIDR9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMlsyXSA9IHsKLSAgICB7NDksIDR9LAotICAgIHs5LCA0fSwKK3N0YXRpYyBhcmMgYXJjc18xNl8yWzFdID0geworICAgIHswLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTZfM1syXSA9IHsKLSAgICB7NDksIDV9LAorICAgIHs1MCwgMn0sCisgICAgezksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xNl80WzJdID0geworICAgIHs1MCwgNX0sCiAgICAgezQ3LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owogc3RhdGljIGFyYyBhcmNzXzE2XzVbMl0gPSB7Ci0gICAgezMxLCAzfSwKKyAgICB7MzEsIDR9LAogICAgIHswLCA1fSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzE2WzZdID0gewogICAgIHsxLCBhcmNzXzE2XzB9LAotICAgIHszLCBhcmNzXzE2XzF9LAotICAgIHsyLCBhcmNzXzE2XzJ9LAorICAgIHs0LCBhcmNzXzE2XzF9LAorICAgIHsxLCBhcmNzXzE2XzJ9LAogICAgIHsyLCBhcmNzXzE2XzN9LAotICAgIHsxLCBhcmNzXzE2XzR9LAorICAgIHsyLCBhcmNzXzE2XzR9LAogICAgIHsyLCBhcmNzXzE2XzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18wWzJdID0gewotICAgIHsyNiwgMX0sCi0gICAgezUwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc18xN18wWzFdID0geworICAgIHsyNywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTdfMVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xN18yWzJdID0geworICAgIHszMSwgM30sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xN18zWzFdID0geworICAgIHsyNiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTdbNV0gPSB7CisgICAgezEsIGFyY3NfMTdfMH0sCisgICAgezEsIGFyY3NfMTdfMX0sCisgICAgezIsIGFyY3NfMTdfMn0sCisgICAgezEsIGFyY3NfMTdfM30sCisgICAgezEsIGFyY3NfMTdfNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE4XzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTEsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18xOF8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xN18yWzNdID0geworc3RhdGljIGFyYyBhcmNzXzE4XzJbM10gPSB7CiAgICAgezI2LCAxfSwKLSAgICB7NTAsIDF9LAorICAgIHs1MSwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTdbM10gPSB7Ci0gICAgezIsIGFyY3NfMTdfMH0sCi0gICAgezIsIGFyY3NfMTdfMX0sCi0gICAgezMsIGFyY3NfMTdfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzNdID0geworICAgIHsyLCBhcmNzXzE4XzB9LAorICAgIHsyLCBhcmNzXzE4XzF9LAorICAgIHszLCBhcmNzXzE4XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8wWzEzXSA9IHsKLSAgICB7NTEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE5XzBbMTNdID0gewogICAgIHs1MiwgMX0sCiAgICAgezUzLCAxfSwKICAgICB7NTQsIDF9LApAQCAtNTA1LDYwICs1NDIsNTEgQEAKICAgICB7NjEsIDF9LAogICAgIHs2MiwgMX0sCiAgICAgezYzLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMThfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18xOFsyXSA9IHsKLSAgICB7MTMsIGFyY3NfMThfMH0sCi0gICAgezEsIGFyY3NfMThfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE5XzBbMV0gPSB7CiAgICAgezY0LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTlfMVsxXSA9IHsKLSAgICB7NjUsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOV8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzNdID0gewotICAgIHsxLCBhcmNzXzE5XzB9LAotICAgIHsxLCBhcmNzXzE5XzF9LAotICAgIHsxLCBhcmNzXzE5XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yMF8wWzFdID0gewotICAgIHs2NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzIwXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjBbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzE5WzJdID0geworICAgIHsxMywgYXJjc18xOV8wfSwKKyAgICB7MSwgYXJjc18xOV8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjBfMFsxXSA9IHsKKyAgICB7NjUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yMF8xWzFdID0geworICAgIHs2NiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzIwXzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjBbM10gPSB7CiAgICAgezEsIGFyY3NfMjBfMH0sCiAgICAgezEsIGFyY3NfMjBfMX0sCisgICAgezEsIGFyY3NfMjBfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIxXzBbNV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjFfMFsxXSA9IHsKICAgICB7NjcsIDF9LAotICAgIHs2OCwgMX0sCi0gICAgezY5LCAxfSwKLSAgICB7NzAsIDF9LAotICAgIHs3MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIxXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjFbMl0gPSB7Ci0gICAgezUsIGFyY3NfMjFfMH0sCisgICAgezEsIGFyY3NfMjFfMH0sCiAgICAgezEsIGFyY3NfMjFfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzIyXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjJfMFs1XSA9IHsKKyAgICB7NjgsIDF9LAorICAgIHs2OSwgMX0sCisgICAgezcwLCAxfSwKKyAgICB7NzEsIDF9LAogICAgIHs3MiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIyXzFbMV0gPSB7CiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjJbMl0gPSB7Ci0gICAgezEsIGFyY3NfMjJfMH0sCisgICAgezUsIGFyY3NfMjJfMH0sCiAgICAgezEsIGFyY3NfMjJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzIzXzBbMV0gPSB7CkBAIC01NzQsMTQyICs2MDIsMTMzIEBACiBzdGF0aWMgYXJjIGFyY3NfMjRfMFsxXSA9IHsKICAgICB7NzQsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNF8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzI0XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjRbMl0gPSB7CisgICAgezEsIGFyY3NfMjRfMH0sCisgICAgezEsIGFyY3NfMjRfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI1XzBbMV0gPSB7CisgICAgezc1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjVfMVsyXSA9IHsKICAgICB7OSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzI1XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjRbM10gPSB7Ci0gICAgezEsIGFyY3NfMjRfMH0sCi0gICAgezIsIGFyY3NfMjRfMX0sCi0gICAgezEsIGFyY3NfMjRfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI1XzBbMV0gPSB7Ci0gICAgezQ5LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNVsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjVbM10gPSB7CiAgICAgezEsIGFyY3NfMjVfMH0sCi0gICAgezEsIGFyY3NfMjVfMX0sCisgICAgezIsIGFyY3NfMjVfMX0sCisgICAgezEsIGFyY3NfMjVfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI2XzBbMV0gPSB7Ci0gICAgezc1LCAxfSwKKyAgICB7NTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzI2XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbMl0gPSB7CisgICAgezEsIGFyY3NfMjZfMH0sCisgICAgezEsIGFyY3NfMjZfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI3XzBbMV0gPSB7CisgICAgezc2LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjdfMVsyXSA9IHsKICAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfMlsyXSA9IHsKLSAgICB7NzYsIDN9LAorc3RhdGljIGFyYyBhcmNzXzI3XzJbMl0gPSB7CisgICAgezc3LCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjdfM1sxXSA9IHsKICAgICB7MjYsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzI3XzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjZbNV0gPSB7Ci0gICAgezEsIGFyY3NfMjZfMH0sCi0gICAgezIsIGFyY3NfMjZfMX0sCi0gICAgezIsIGFyY3NfMjZfMn0sCi0gICAgezEsIGFyY3NfMjZfM30sCi0gICAgezEsIGFyY3NfMjZfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI3WzVdID0geworICAgIHsxLCBhcmNzXzI3XzB9LAorICAgIHsyLCBhcmNzXzI3XzF9LAorICAgIHsyLCBhcmNzXzI3XzJ9LAorICAgIHsxLCBhcmNzXzI3XzN9LAorICAgIHsxLCBhcmNzXzI3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yN18wWzJdID0gewotICAgIHs3NywgMX0sCitzdGF0aWMgYXJjIGFyY3NfMjhfMFsyXSA9IHsKICAgICB7NzgsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yN18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI3WzJdID0gewotICAgIHsyLCBhcmNzXzI3XzB9LAotICAgIHsxLCBhcmNzXzI3XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8wWzFdID0gewogICAgIHs3OSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzI4XzFbMV0gPSB7Ci0gICAgezgwLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjhfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOFszXSA9IHsKLSAgICB7MSwgYXJjc18yOF8wfSwKLSAgICB7MSwgYXJjc18yOF8xfSwKLSAgICB7MSwgYXJjc18yOF8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKLSAgICB7NzYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8xWzNdID0gewotICAgIHs4MSwgMn0sCi0gICAgezgyLCAyfSwKLSAgICB7MTIsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8yWzRdID0gewotICAgIHs4MSwgMn0sCi0gICAgezgyLCAyfSwKLSAgICB7MTIsIDN9LAotICAgIHs3OSwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzNbMV0gPSB7Ci0gICAgezc5LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfNFszXSA9IHsKLSAgICB7MzMsIDV9LAotICAgIHsxMywgNn0sCi0gICAgezgzLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzZbMV0gPSB7Ci0gICAgezgzLCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfN1sxXSA9IHsKLSAgICB7MTUsIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjlbOF0gPSB7Ci0gICAgezEsIGFyY3NfMjlfMH0sCi0gICAgezMsIGFyY3NfMjlfMX0sCi0gICAgezQsIGFyY3NfMjlfMn0sCi0gICAgezEsIGFyY3NfMjlfM30sCi0gICAgezMsIGFyY3NfMjlfNH0sCi0gICAgezEsIGFyY3NfMjlfNX0sCi0gICAgezEsIGFyY3NfMjlfNn0sCi0gICAgezEsIGFyY3NfMjlfN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzMwXzBbMV0gPSB7Ci0gICAgezIzLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzBfMVsyXSA9IHsKLSAgICB7ODUsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzBfMlsxXSA9IHsKLSAgICB7MjMsIDN9LAorc3RhdGljIHN0YXRlIHN0YXRlc18yOFsyXSA9IHsKKyAgICB7MiwgYXJjc18yOF8wfSwKKyAgICB7MSwgYXJjc18yOF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMFsxXSA9IHsKKyAgICB7ODAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8xWzFdID0geworICAgIHs4MSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjlbM10gPSB7CisgICAgezEsIGFyY3NfMjlfMH0sCisgICAgezEsIGFyY3NfMjlfMX0sCisgICAgezEsIGFyY3NfMjlfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzBbMV0gPSB7CisgICAgezc3LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfMVszXSA9IHsKKyAgICB7ODIsIDJ9LAorICAgIHs4MywgMn0sCisgICAgezEyLCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfMls0XSA9IHsKKyAgICB7ODIsIDJ9LAorICAgIHs4MywgMn0sCisgICAgezEyLCAzfSwKKyAgICB7ODAsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMF8zWzFdID0gewotICAgIHswLCAzfSwKKyAgICB7ODAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzBbNF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMzBfNFszXSA9IHsKKyAgICB7MzMsIDV9LAorICAgIHsxMywgNn0sCisgICAgezg0LCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfNVsxXSA9IHsKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMwXzZbMV0gPSB7CisgICAgezg0LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfN1sxXSA9IHsKKyAgICB7MTUsIDV9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzBbOF0gPSB7CiAgICAgezEsIGFyY3NfMzBfMH0sCi0gICAgezIsIGFyY3NfMzBfMX0sCi0gICAgezEsIGFyY3NfMzBfMn0sCisgICAgezMsIGFyY3NfMzBfMX0sCisgICAgezQsIGFyY3NfMzBfMn0sCiAgICAgezEsIGFyY3NfMzBfM30sCisgICAgezMsIGFyY3NfMzBfNH0sCisgICAgezEsIGFyY3NfMzBfNX0sCisgICAgezEsIGFyY3NfMzBfNn0sCisgICAgezEsIGFyY3NfMzBfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzBbMV0gPSB7Ci0gICAgezEyLCAxfSwKKyAgICB7MjMsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMV8xWzJdID0gewotICAgIHs4NSwgMn0sCisgICAgezg2LCAyfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzJbMV0gPSB7CkBAIC03MjUsMzcgKzc0NCw0NSBAQAogICAgIHsxLCBhcmNzXzMxXzN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8wWzFdID0gewotICAgIHs4NCwgMX0sCisgICAgezEyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzJfMVsyXSA9IHsKKyAgICB7ODYsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzJfMlsxXSA9IHsKKyAgICB7MjMsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMl8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMyWzRdID0geworICAgIHsxLCBhcmNzXzMyXzB9LAorICAgIHsyLCBhcmNzXzMyXzF9LAorICAgIHsxLCBhcmNzXzMyXzJ9LAorICAgIHsxLCBhcmNzXzMyXzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zM18wWzFdID0geworICAgIHs4NSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzMzXzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzMyXzJbMl0gPSB7Ci0gICAgezg0LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18zM18yWzJdID0geworICAgIHs4NSwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbM10gPSB7Ci0gICAgezEsIGFyY3NfMzJfMH0sCi0gICAgezIsIGFyY3NfMzJfMX0sCi0gICAgezIsIGFyY3NfMzJfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzMzXzBbMV0gPSB7Ci0gICAgezg2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzNfMVsyXSA9IHsKLSAgICB7MzIsIDB9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzMzWzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zM1szXSA9IHsKICAgICB7MSwgYXJjc18zM18wfSwKICAgICB7MiwgYXJjc18zM18xfSwKKyAgICB7MiwgYXJjc18zM18yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzRfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAorICAgIHs4NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM0XzFbMl0gPSB7Ci0gICAgezgxLCAwfSwKKyAgICB7MzIsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzM0WzJdID0gewpAQCAtNzYzLDE5ICs3OTAsMTUgQEAKICAgICB7MiwgYXJjc18zNF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzVfMFsxXSA9IHsKLSAgICB7ODcsIDF9LAorICAgIHsyMywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM1XzFbMV0gPSB7Ci0gICAgezIzLCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zNV8xWzJdID0geworICAgIHs4MiwgMH0sCisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zNV8yWzJdID0gewotICAgIHszMiwgMX0sCi0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzVbM10gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM1WzJdID0gewogICAgIHsxLCBhcmNzXzM1XzB9LAotICAgIHsxLCBhcmNzXzM1XzF9LAotICAgIHsyLCBhcmNzXzM1XzJ9LAorICAgIHsyLCBhcmNzXzM1XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNl8wWzFdID0gewogICAgIHs4OCwgMX0sCkBAIC03OTYsOTcgKzgxOSw3NiBAQAogICAgIHs4OSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM3XzFbMV0gPSB7Ci0gICAgezI2LCAyfSwKKyAgICB7MjMsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zN18yWzJdID0gewotICAgIHszMiwgM30sCisgICAgezMyLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM3XzNbMV0gPSB7Ci0gICAgezI2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzdfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zN1s1XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzdbM10gPSB7CiAgICAgezEsIGFyY3NfMzdfMH0sCiAgICAgezEsIGFyY3NfMzdfMX0sCiAgICAgezIsIGFyY3NfMzdfMn0sCi0gICAgezEsIGFyY3NfMzdfM30sCi0gICAgezEsIGFyY3NfMzdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM4XzBbOV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMzhfMFsxXSA9IHsKICAgICB7OTAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzJbMl0gPSB7CisgICAgezMyLCAzfSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzNbMV0gPSB7CisgICAgezI2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zOFs1XSA9IHsKKyAgICB7MSwgYXJjc18zOF8wfSwKKyAgICB7MSwgYXJjc18zOF8xfSwKKyAgICB7MiwgYXJjc18zOF8yfSwKKyAgICB7MSwgYXJjc18zOF8zfSwKKyAgICB7MSwgYXJjc18zOF80fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzlfMFs5XSA9IHsKICAgICB7OTEsIDF9LAogICAgIHs5MiwgMX0sCiAgICAgezkzLCAxfSwKICAgICB7OTQsIDF9LAorICAgIHs5NSwgMX0sCiAgICAgezE5LCAxfSwKICAgICB7MTgsIDF9LAogICAgIHsxNywgMX0sCi0gICAgezk1LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zOFsyXSA9IHsKLSAgICB7OSwgYXJjc18zOF8wfSwKLSAgICB7MSwgYXJjc18zOF8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzlfMFsxXSA9IHsKLSAgICB7MjEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8xWzNdID0gewotICAgIHsxOSwgMn0sCi0gICAgezk0LCAyfSwKLSAgICB7OTIsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM5WzNdID0gewotICAgIHsxLCBhcmNzXzM5XzB9LAotICAgIHszLCBhcmNzXzM5XzF9LAotICAgIHsxLCBhcmNzXzM5XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF8wWzFdID0gewogICAgIHs5NiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzFbMV0gPSB7Ci0gICAgezI2LCAyfSwKK3N0YXRpYyBhcmMgYXJjc18zOV8xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM5WzJdID0geworICAgIHs5LCBhcmNzXzM5XzB9LAorICAgIHsxLCBhcmNzXzM5XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180MF8wWzFdID0geworICAgIHsyMSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQwXzFbM10gPSB7CisgICAgezE5LCAyfSwKKyAgICB7OTUsIDJ9LAorICAgIHs5MywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQwXzJbMV0gPSB7Ci0gICAgezI3LCAzfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQwXzNbMV0gPSB7Ci0gICAgezI4LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNFszXSA9IHsKLSAgICB7OTcsIDF9LAotICAgIHs5OCwgNX0sCi0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF81WzFdID0gewotICAgIHsyNywgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzZbMV0gPSB7Ci0gICAgezI4LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfN1sxXSA9IHsKLSAgICB7MCwgN30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180MFs4XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDBbM10gPSB7CiAgICAgezEsIGFyY3NfNDBfMH0sCi0gICAgezEsIGFyY3NfNDBfMX0sCisgICAgezMsIGFyY3NfNDBfMX0sCiAgICAgezEsIGFyY3NfNDBfMn0sCi0gICAgezEsIGFyY3NfNDBfM30sCi0gICAgezMsIGFyY3NfNDBfNH0sCi0gICAgezEsIGFyY3NfNDBfNX0sCi0gICAgezEsIGFyY3NfNDBfNn0sCi0gICAgezEsIGFyY3NfNDBfN30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzBbMV0gPSB7Ci0gICAgezk5LCAxfSwKKyAgICB7OTcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180MV8xWzFdID0gewogICAgIHsyNiwgMn0sCkBAIC04OTcsOCArODk5LDkgQEAKIHN0YXRpYyBhcmMgYXJjc180MV8zWzFdID0gewogICAgIHsyOCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQxXzRbMl0gPSB7Ci0gICAgezk4LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180MV80WzNdID0geworICAgIHs5OCwgMX0sCisgICAgezk5LCA1fSwKICAgICB7MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzVbMV0gPSB7CkBAIC05MTUsNyArOTE4LDcgQEAKICAgICB7MSwgYXJjc180MV8xfSwKICAgICB7MSwgYXJjc180MV8yfSwKICAgICB7MSwgYXJjc180MV8zfSwKLSAgICB7MiwgYXJjc180MV80fSwKKyAgICB7MywgYXJjc180MV80fSwKICAgICB7MSwgYXJjc180MV81fSwKICAgICB7MSwgYXJjc180MV82fSwKICAgICB7MSwgYXJjc180MV83fSwKQEAgLTkyNCwyNTggKzkyNywyNzAgQEAKICAgICB7MTAwLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMVsxXSA9IHsKLSAgICB7NjUsIDJ9LAorICAgIHsyNiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzJbMV0gPSB7Ci0gICAgezEwMSwgM30sCisgICAgezI3LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfM1sxXSA9IHsKLSAgICB7OSwgNH0sCisgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfNFsxXSA9IHsKLSAgICB7MjcsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQyXzRbMl0gPSB7CisgICAgezk5LCA1fSwKKyAgICB7MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQyXzVbMV0gPSB7Ci0gICAgezI4LCA2fSwKKyAgICB7MjcsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml82WzJdID0gewotICAgIHs5OCwgN30sCi0gICAgezAsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzQyXzZbMV0gPSB7CisgICAgezI4LCA3fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfN1sxXSA9IHsKLSAgICB7MjcsIDh9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDJfOFsxXSA9IHsKLSAgICB7MjgsIDl9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180Ml85WzFdID0gewotICAgIHswLCA5fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQyWzEwXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbOF0gPSB7CiAgICAgezEsIGFyY3NfNDJfMH0sCiAgICAgezEsIGFyY3NfNDJfMX0sCiAgICAgezEsIGFyY3NfNDJfMn0sCiAgICAgezEsIGFyY3NfNDJfM30sCi0gICAgezEsIGFyY3NfNDJfNH0sCisgICAgezIsIGFyY3NfNDJfNH0sCiAgICAgezEsIGFyY3NfNDJfNX0sCi0gICAgezIsIGFyY3NfNDJfNn0sCisgICAgezEsIGFyY3NfNDJfNn0sCiAgICAgezEsIGFyY3NfNDJfN30sCi0gICAgezEsIGFyY3NfNDJfOH0sCi0gICAgezEsIGFyY3NfNDJfOX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzBbMV0gPSB7Ci0gICAgezEwMiwgMX0sCisgICAgezEwMSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzFbMV0gPSB7Ci0gICAgezI3LCAyfSwKKyAgICB7NjYsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M18yWzFdID0gewotICAgIHsyOCwgM30sCisgICAgezEwMiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzNbMl0gPSB7Ci0gICAgezEwMywgNH0sCi0gICAgezEwNCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDNfM1sxXSA9IHsKKyAgICB7OSwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzRbMV0gPSB7Ci0gICAgezI3LCA2fSwKKyAgICB7MjcsIDV9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180M181WzFdID0gewotICAgIHsyNywgN30sCisgICAgezI4LCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfNlsxXSA9IHsKLSAgICB7MjgsIDh9LAorc3RhdGljIGFyYyBhcmNzXzQzXzZbMl0gPSB7CisgICAgezk5LCA3fSwKKyAgICB7MCwgNn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzdbMV0gPSB7Ci0gICAgezI4LCA5fSwKKyAgICB7MjcsIDh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M184WzRdID0gewotICAgIHsxMDMsIDR9LAotICAgIHs5OCwgMTB9LAotICAgIHsxMDQsIDV9LAotICAgIHswLCA4fSwKK3N0YXRpYyBhcmMgYXJjc180M184WzFdID0geworICAgIHsyOCwgOX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzlbMV0gPSB7CiAgICAgezAsIDl9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M18xMFsxXSA9IHsKLSAgICB7MjcsIDExfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMTFbMV0gPSB7Ci0gICAgezI4LCAxMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQzXzEyWzJdID0gewotICAgIHsxMDQsIDV9LAotICAgIHswLCAxMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180M1sxM10gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQzWzEwXSA9IHsKICAgICB7MSwgYXJjc180M18wfSwKICAgICB7MSwgYXJjc180M18xfSwKICAgICB7MSwgYXJjc180M18yfSwKLSAgICB7MiwgYXJjc180M18zfSwKKyAgICB7MSwgYXJjc180M18zfSwKICAgICB7MSwgYXJjc180M180fSwKICAgICB7MSwgYXJjc180M181fSwKLSAgICB7MSwgYXJjc180M182fSwKKyAgICB7MiwgYXJjc180M182fSwKICAgICB7MSwgYXJjc180M183fSwKLSAgICB7NCwgYXJjc180M184fSwKKyAgICB7MSwgYXJjc180M184fSwKICAgICB7MSwgYXJjc180M185fSwKLSAgICB7MSwgYXJjc180M18xMH0sCi0gICAgezEsIGFyY3NfNDNfMTF9LAotICAgIHsyLCBhcmNzXzQzXzEyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfMFsxXSA9IHsKLSAgICB7MTA1LCAxfSwKKyAgICB7MTAzLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDRfMVsxXSA9IHsKLSAgICB7MTA2LCAyfSwKKyAgICB7MjcsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF8yWzJdID0geworc3RhdGljIGFyYyBhcmNzXzQ0XzJbMV0gPSB7CisgICAgezI4LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfM1syXSA9IHsKKyAgICB7MTA0LCA0fSwKKyAgICB7MTA1LCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfNFsxXSA9IHsKKyAgICB7MjcsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF81WzFdID0geworICAgIHsyNywgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzZbMV0gPSB7CisgICAgezI4LCA4fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfN1sxXSA9IHsKKyAgICB7MjgsIDl9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF84WzRdID0geworICAgIHsxMDQsIDR9LAorICAgIHs5OSwgMTB9LAorICAgIHsxMDUsIDV9LAorICAgIHswLCA4fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfOVsxXSA9IHsKKyAgICB7MCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzEwWzFdID0geworICAgIHsyNywgMTF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8xMVsxXSA9IHsKKyAgICB7MjgsIDEyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfMTJbMl0gPSB7CisgICAgezEwNSwgNX0sCisgICAgezAsIDEyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ0WzEzXSA9IHsKKyAgICB7MSwgYXJjc180NF8wfSwKKyAgICB7MSwgYXJjc180NF8xfSwKKyAgICB7MSwgYXJjc180NF8yfSwKKyAgICB7MiwgYXJjc180NF8zfSwKKyAgICB7MSwgYXJjc180NF80fSwKKyAgICB7MSwgYXJjc180NF81fSwKKyAgICB7MSwgYXJjc180NF82fSwKKyAgICB7MSwgYXJjc180NF83fSwKKyAgICB7NCwgYXJjc180NF84fSwKKyAgICB7MSwgYXJjc180NF85fSwKKyAgICB7MSwgYXJjc180NF8xMH0sCisgICAgezEsIGFyY3NfNDRfMTF9LAorICAgIHsyLCBhcmNzXzQ0XzEyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDVfMFsxXSA9IHsKKyAgICB7MTA2LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDVfMVsxXSA9IHsKKyAgICB7MTA3LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDVfMlsyXSA9IHsKICAgICB7MzIsIDF9LAogICAgIHsyNywgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDVfM1sxXSA9IHsKICAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180NF80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ1XzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDRbNV0gPSB7Ci0gICAgezEsIGFyY3NfNDRfMH0sCi0gICAgezEsIGFyY3NfNDRfMX0sCi0gICAgezIsIGFyY3NfNDRfMn0sCi0gICAgezEsIGFyY3NfNDRfM30sCi0gICAgezEsIGFyY3NfNDRfNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ1XzBbMV0gPSB7Ci0gICAgezI2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMVsyXSA9IHsKLSAgICB7ODUsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMlsxXSA9IHsKLSAgICB7MTA3LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfM1sxXSA9IHsKLSAgICB7MCwgM30sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180NVs0XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDVbNV0gPSB7CiAgICAgezEsIGFyY3NfNDVfMH0sCi0gICAgezIsIGFyY3NfNDVfMX0sCi0gICAgezEsIGFyY3NfNDVfMn0sCisgICAgezEsIGFyY3NfNDVfMX0sCisgICAgezIsIGFyY3NfNDVfMn0sCiAgICAgezEsIGFyY3NfNDVfM30sCisgICAgezEsIGFyY3NfNDVfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ2XzBbMV0gPSB7Ci0gICAgezEwOCwgMX0sCisgICAgezI2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfMVsyXSA9IHsKKyAgICB7ODYsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDZfMlsxXSA9IHsKKyAgICB7MTA4LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDZfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180Nls0XSA9IHsKKyAgICB7MSwgYXJjc180Nl8wfSwKKyAgICB7MiwgYXJjc180Nl8xfSwKKyAgICB7MSwgYXJjc180Nl8yfSwKKyAgICB7MSwgYXJjc180Nl8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDdfMFsxXSA9IHsKKyAgICB7MTA5LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDdfMVsyXSA9IHsKICAgICB7MjYsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfMlsyXSA9IHsKLSAgICB7ODUsIDN9LAorc3RhdGljIGFyYyBhcmNzXzQ3XzJbMl0gPSB7CisgICAgezg2LCAzfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDdfM1sxXSA9IHsKICAgICB7MjMsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ3XzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDZbNV0gPSB7Ci0gICAgezEsIGFyY3NfNDZfMH0sCi0gICAgezIsIGFyY3NfNDZfMX0sCi0gICAgezIsIGFyY3NfNDZfMn0sCi0gICAgezEsIGFyY3NfNDZfM30sCi0gICAgezEsIGFyY3NfNDZfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzVdID0geworICAgIHsxLCBhcmNzXzQ3XzB9LAorICAgIHsyLCBhcmNzXzQ3XzF9LAorICAgIHsyLCBhcmNzXzQ3XzJ9LAorICAgIHsxLCBhcmNzXzQ3XzN9LAorICAgIHsxLCBhcmNzXzQ3XzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180N18wWzJdID0geworc3RhdGljIGFyYyBhcmNzXzQ4XzBbMl0gPSB7CiAgICAgezMsIDF9LAogICAgIHsyLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ3XzJbMV0gPSB7Ci0gICAgezEwOSwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ3XzNbMV0gPSB7Ci0gICAgezYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180N180WzJdID0gewotICAgIHs2LCA0fSwKLSAgICB7MTEwLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ3WzVdID0gewotICAgIHsyLCBhcmNzXzQ3XzB9LAotICAgIHsxLCBhcmNzXzQ3XzF9LAotICAgIHsxLCBhcmNzXzQ3XzJ9LAotICAgIHsxLCBhcmNzXzQ3XzN9LAotICAgIHsyLCBhcmNzXzQ3XzR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OF8wWzJdID0gewotICAgIHsxMTEsIDF9LAotICAgIHsxMTIsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180OF8xWzJdID0gewotICAgIHs5NiwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDhfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAorICAgIHsxMTAsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180OF8zWzFdID0gewotICAgIHsxMTEsIDR9LAorICAgIHs2LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDhfNFsxXSA9IHsKLSAgICB7OTgsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQ4XzRbMl0gPSB7CisgICAgezYsIDR9LAorICAgIHsxMTEsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OF81WzFdID0gewotICAgIHsyNiwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc180OFs2XSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDhbNV0gPSB7CiAgICAgezIsIGFyY3NfNDhfMH0sCi0gICAgezIsIGFyY3NfNDhfMX0sCisgICAgezEsIGFyY3NfNDhfMX0sCiAgICAgezEsIGFyY3NfNDhfMn0sCiAgICAgezEsIGFyY3NfNDhfM30sCi0gICAgezEsIGFyY3NfNDhfNH0sCi0gICAgezEsIGFyY3NfNDhfNX0sCisgICAgezIsIGFyY3NfNDhfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ5XzBbMl0gPSB7Ci0gICAgezExMSwgMX0sCi0gICAgezExNCwgMX0sCisgICAgezExMiwgMX0sCisgICAgezExMywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ5XzFbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDlfMVsyXSA9IHsKKyAgICB7OTcsIDN9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ5WzJdID0gewotICAgIHsyLCBhcmNzXzQ5XzB9LAotICAgIHsxLCBhcmNzXzQ5XzF9LAorc3RhdGljIGFyYyBhcmNzXzQ5XzJbMV0gPSB7CisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MF8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzQ5XzNbMV0gPSB7CisgICAgezExMiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ5XzRbMV0gPSB7CisgICAgezk5LCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDlfNVsxXSA9IHsKKyAgICB7MjYsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbNl0gPSB7CisgICAgezIsIGFyY3NfNDlfMH0sCisgICAgezIsIGFyY3NfNDlfMX0sCisgICAgezEsIGFyY3NfNDlfMn0sCisgICAgezEsIGFyY3NfNDlfM30sCisgICAgezEsIGFyY3NfNDlfNH0sCisgICAgezEsIGFyY3NfNDlfNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUwXzBbMl0gPSB7CisgICAgezExMiwgMX0sCiAgICAgezExNSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzFbMl0gPSB7Ci0gICAgezM1LCAyfSwKLSAgICB7MjcsIDN9LAorc3RhdGljIGFyYyBhcmNzXzUwXzFbMV0gPSB7CisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181MF8yWzFdID0gewotICAgIHsyNywgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzUwXzNbMV0gPSB7Ci0gICAgezI2LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfNFsxXSA9IHsKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181MFs1XSA9IHsKLSAgICB7MSwgYXJjc181MF8wfSwKLSAgICB7MiwgYXJjc181MF8xfSwKLSAgICB7MSwgYXJjc181MF8yfSwKLSAgICB7MSwgYXJjc181MF8zfSwKLSAgICB7MSwgYXJjc181MF80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTBbMl0gPSB7CisgICAgezIsIGFyY3NfNTBfMH0sCisgICAgezEsIGFyY3NfNTBfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzBbMV0gPSB7Ci0gICAgezExNSwgMX0sCisgICAgezExNiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzFbMl0gPSB7CiAgICAgezM1LCAyfSwKQEAgLTExODUsNyArMTIwMCw3IEBACiAgICAgezI3LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfM1sxXSA9IHsKLSAgICB7MTEzLCA0fSwKKyAgICB7MjYsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV80WzFdID0gewogICAgIHswLCA0fSwKQEAgLTEyMDEsMTA4ICsxMjE2LDEyMCBAQAogICAgIHsxMTYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181Ml8xWzJdID0gewotICAgIHsxMTcsIDB9LAotICAgIHswLCAxfSwKKyAgICB7MzUsIDJ9LAorICAgIHsyNywgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc181MlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc181Ml8yWzFdID0geworICAgIHsyNywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzUyXzNbMV0gPSB7CisgICAgezExNCwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzUyXzRbMV0gPSB7CisgICAgezAsIDR9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTJbNV0gPSB7CiAgICAgezEsIGFyY3NfNTJfMH0sCiAgICAgezIsIGFyY3NfNTJfMX0sCisgICAgezEsIGFyY3NfNTJfMn0sCisgICAgezEsIGFyY3NfNTJfM30sCisgICAgezEsIGFyY3NfNTJfNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzBbMV0gPSB7Ci0gICAgezExOCwgMX0sCisgICAgezExNywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUzXzFbMl0gPSB7Ci0gICAgezExOSwgMH0sCisgICAgezExOCwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTNbMl0gPSB7CiAgICAgezEsIGFyY3NfNTNfMH0sCiAgICAgezIsIGFyY3NfNTNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzU0XzBbMl0gPSB7Ci0gICAgezEyMCwgMX0sCi0gICAgezEyMSwgMn0sCitzdGF0aWMgYXJjIGFyY3NfNTRfMFsxXSA9IHsKKyAgICB7MTE5LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMVsxXSA9IHsKLSAgICB7MTE4LCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMlsxXSA9IHsKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc181NFszXSA9IHsKLSAgICB7MiwgYXJjc181NF8wfSwKLSAgICB7MSwgYXJjc181NF8xfSwKLSAgICB7MSwgYXJjc181NF8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMFsxXSA9IHsKLSAgICB7MTA3LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTVfMVsyXSA9IHsKLSAgICB7MTIyLCAwfSwKK3N0YXRpYyBhcmMgYXJjc181NF8xWzJdID0geworICAgIHsxMjAsIDB9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU1WzJdID0gewotICAgIHsxLCBhcmNzXzU1XzB9LAotICAgIHsyLCBhcmNzXzU1XzF9LAorc3RhdGljIHN0YXRlIHN0YXRlc181NFsyXSA9IHsKKyAgICB7MSwgYXJjc181NF8wfSwKKyAgICB7MiwgYXJjc181NF8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMFsxMF0gPSB7Ci0gICAgezEyMywgMX0sCitzdGF0aWMgYXJjIGFyY3NfNTVfMFsyXSA9IHsKKyAgICB7MTIxLCAxfSwKKyAgICB7MTIyLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMVsxXSA9IHsKKyAgICB7MTE5LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTVfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NVszXSA9IHsKKyAgICB7MiwgYXJjc181NV8wfSwKKyAgICB7MSwgYXJjc181NV8xfSwKKyAgICB7MSwgYXJjc181NV8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTZfMFsxXSA9IHsKKyAgICB7MTA4LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTZfMVsyXSA9IHsKKyAgICB7MTIzLCAwfSwKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181NlsyXSA9IHsKKyAgICB7MSwgYXJjc181Nl8wfSwKKyAgICB7MiwgYXJjc181Nl8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTdfMFsxMF0gPSB7CiAgICAgezEyNCwgMX0sCiAgICAgezEyNSwgMX0sCiAgICAgezEyNiwgMX0sCiAgICAgezEyNywgMX0sCiAgICAgezEyOCwgMX0sCiAgICAgezEyOSwgMX0sCi0gICAgezEwMSwgMX0sCi0gICAgezEyMCwgMn0sCi0gICAgezEzMCwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8yWzFdID0gewotICAgIHsxMDEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8zWzJdID0gewotICAgIHsxMjAsIDF9LAotICAgIHswLCAzfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU2WzRdID0gewotICAgIHsxMCwgYXJjc181Nl8wfSwKLSAgICB7MSwgYXJjc181Nl8xfSwKLSAgICB7MSwgYXJjc181Nl8yfSwKLSAgICB7MiwgYXJjc181Nl8zfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTdfMFsxXSA9IHsKLSAgICB7MzMsIDF9LAorICAgIHsxMzAsIDF9LAorICAgIHsxMDIsIDF9LAorICAgIHsxMjEsIDJ9LAorICAgIHsxMzEsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181N18xWzFdID0gewotICAgIHsxMDcsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181N18yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU3WzNdID0gewotICAgIHsxLCBhcmNzXzU3XzB9LAotICAgIHsxLCBhcmNzXzU3XzF9LAotICAgIHsxLCBhcmNzXzU3XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181OF8wWzFdID0gewotICAgIHsxMzEsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181OF8xWzJdID0gewotICAgIHsxMzIsIDB9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU4WzJdID0geworc3RhdGljIGFyYyBhcmNzXzU3XzJbMV0gPSB7CisgICAgezEwMiwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU3XzNbMl0gPSB7CisgICAgezEyMSwgMX0sCisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNTdbNF0gPSB7CisgICAgezEwLCBhcmNzXzU3XzB9LAorICAgIHsxLCBhcmNzXzU3XzF9LAorICAgIHsxLCBhcmNzXzU3XzJ9LAorICAgIHsyLCBhcmNzXzU3XzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181OF8wWzFdID0geworICAgIHszMywgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU4XzFbMV0gPSB7CisgICAgezEwOCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzU4XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNThbM10gPSB7CiAgICAgezEsIGFyY3NfNThfMH0sCi0gICAgezIsIGFyY3NfNThfMX0sCisgICAgezEsIGFyY3NfNThfMX0sCisgICAgezEsIGFyY3NfNThfMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzU5XzBbMV0gPSB7Ci0gICAgezEzMywgMX0sCisgICAgezEzMiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzU5XzFbMl0gPSB7Ci0gICAgezEzNCwgMH0sCisgICAgezEzMywgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTlbMl0gPSB7CkBAIC0xMzEwLDEwICsxMzM3LDEwIEBACiAgICAgezIsIGFyY3NfNTlfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYwXzBbMV0gPSB7Ci0gICAgezEzNSwgMX0sCisgICAgezEzNCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYwXzFbMl0gPSB7Ci0gICAgezEzNiwgMH0sCisgICAgezEzNSwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjBbMl0gPSB7CkBAIC0xMzIxLDIzICsxMzQ4LDIyIEBACiAgICAgezIsIGFyY3NfNjBfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYxXzBbMV0gPSB7Ci0gICAgezEzNywgMX0sCisgICAgezEzNiwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYxXzFbM10gPSB7Ci0gICAgezEzOCwgMH0sCi0gICAgezEzOSwgMH0sCitzdGF0aWMgYXJjIGFyY3NfNjFfMVsyXSA9IHsKKyAgICB7MTM3LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MVsyXSA9IHsKICAgICB7MSwgYXJjc182MV8wfSwKLSAgICB7MywgYXJjc182MV8xfSwKKyAgICB7MiwgYXJjc182MV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjJfMFsxXSA9IHsKLSAgICB7MTQwLCAxfSwKKyAgICB7MTM4LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjJfMVszXSA9IHsKLSAgICB7MTQxLCAwfSwKLSAgICB7MTQyLCAwfSwKKyAgICB7MTM5LCAwfSwKKyAgICB7MTQwLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MlsyXSA9IHsKQEAgLTEzNDUsNTI4ICsxMzcxLDU0NSBAQAogICAgIHszLCBhcmNzXzYyXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182M18wWzFdID0gewotICAgIHsxNDMsIDF9LAorICAgIHsxNDEsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182M18xWzZdID0gewotICAgIHszMywgMH0sCi0gICAgezExLCAwfSwKLSAgICB7MTQ0LCAwfSwKLSAgICB7MTQ1LCAwfSwKLSAgICB7MTQ2LCAwfSwKK3N0YXRpYyBhcmMgYXJjc182M18xWzNdID0geworICAgIHsxNDIsIDB9LAorICAgIHsxNDMsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYzWzJdID0gewogICAgIHsxLCBhcmNzXzYzXzB9LAotICAgIHs2LCBhcmNzXzYzXzF9LAorICAgIHszLCBhcmNzXzYzXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF8wWzRdID0gewotICAgIHsxNDEsIDF9LAorc3RhdGljIGFyYyBhcmNzXzY0XzBbMV0gPSB7CisgICAgezE0NCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY0XzFbNl0gPSB7CisgICAgezMzLCAwfSwKKyAgICB7MTEsIDB9LAorICAgIHsxNDUsIDB9LAorICAgIHsxNDYsIDB9LAorICAgIHsxNDcsIDB9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY0WzJdID0geworICAgIHsxLCBhcmNzXzY0XzB9LAorICAgIHs2LCBhcmNzXzY0XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182NV8wWzRdID0gewogICAgIHsxNDIsIDF9LAotICAgIHsxNDcsIDF9LAotICAgIHsxNDgsIDJ9LAorICAgIHsxNDMsIDF9LAorICAgIHsxNDgsIDF9LAorICAgIHsxNDksIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NF8xWzFdID0gewotICAgIHsxNDMsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzY1XzFbMV0gPSB7CisgICAgezE0NCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjVfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182NFszXSA9IHsKLSAgICB7NCwgYXJjc182NF8wfSwKLSAgICB7MSwgYXJjc182NF8xfSwKLSAgICB7MSwgYXJjc182NF8yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjVbM10gPSB7CisgICAgezQsIGFyY3NfNjVfMH0sCisgICAgezEsIGFyY3NfNjVfMX0sCisgICAgezEsIGFyY3NfNjVfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzBbMV0gPSB7Ci0gICAgezE0OSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjZfMFsxXSA9IHsKKyAgICB7MTUwLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182Nl8xWzJdID0gewogICAgIHszNCwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8yWzFdID0gewotICAgIHsxNDMsIDN9LAorc3RhdGljIGFyYyBhcmNzXzY2XzJbMV0gPSB7CisgICAgezE0NCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjZfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182NVs0XSA9IHsKLSAgICB7MSwgYXJjc182NV8wfSwKLSAgICB7MiwgYXJjc182NV8xfSwKLSAgICB7MSwgYXJjc182NV8yfSwKLSAgICB7MSwgYXJjc182NV8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjZbNF0gPSB7CisgICAgezEsIGFyY3NfNjZfMH0sCisgICAgezIsIGFyY3NfNjZfMX0sCisgICAgezEsIGFyY3NfNjZfMn0sCisgICAgezEsIGFyY3NfNjZfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY2XzBbMl0gPSB7Ci0gICAgezE1MCwgMX0sCi0gICAgezE1MSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzFbMV0gPSB7Ci0gICAgezE1MSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY2XzJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjdfMFsyXSA9IHsKKyAgICB7MTUxLCAxfSwKICAgICB7MTUyLCAyfSwKLSAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182NlszXSA9IHsKLSAgICB7MiwgYXJjc182Nl8wfSwKLSAgICB7MSwgYXJjc182Nl8xfSwKLSAgICB7MiwgYXJjc182Nl8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMFsxMF0gPSB7Ci0gICAgezEzLCAxfSwKLSAgICB7MTU0LCAyfSwKLSAgICB7MTU2LCAzfSwKLSAgICB7MjMsIDR9LAotICAgIHsxNTksIDR9LAotICAgIHsxNjAsIDV9LAotICAgIHs4MiwgNH0sCi0gICAgezE2MSwgNH0sCi0gICAgezE2MiwgNH0sCi0gICAgezE2MywgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzFbM10gPSB7Ci0gICAgezQ5LCA2fSwKLSAgICB7MTUzLCA2fSwKLSAgICB7MTUsIDR9LAorc3RhdGljIGFyYyBhcmNzXzY3XzFbMV0gPSB7CisgICAgezE1MiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY3XzJbMl0gPSB7Ci0gICAgezE1MywgN30sCi0gICAgezE1NSwgNH0sCisgICAgezE1MywgMn0sCisgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182N18zWzJdID0gewotICAgIHsxNTcsIDh9LAotICAgIHsxNTgsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N180WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfNVsyXSA9IHsKLSAgICB7MTYwLCA1fSwKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzZbMV0gPSB7Ci0gICAgezE1LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfN1sxXSA9IHsKLSAgICB7MTU1LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfOFsxXSA9IHsKLSAgICB7MTU4LCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY3WzldID0gewotICAgIHsxMCwgYXJjc182N18wfSwKLSAgICB7MywgYXJjc182N18xfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjdbM10gPSB7CisgICAgezIsIGFyY3NfNjdfMH0sCisgICAgezEsIGFyY3NfNjdfMX0sCiAgICAgezIsIGFyY3NfNjdfMn0sCi0gICAgezIsIGFyY3NfNjdfM30sCi0gICAgezEsIGFyY3NfNjdfNH0sCi0gICAgezIsIGFyY3NfNjdfNX0sCi0gICAgezEsIGFyY3NfNjdfNn0sCi0gICAgezEsIGFyY3NfNjdfN30sCi0gICAgezEsIGFyY3NfNjdfOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzBbMl0gPSB7Ci0gICAgezI2LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzY4XzBbMTBdID0geworICAgIHsxMywgMX0sCisgICAgezE1NSwgMn0sCisgICAgezE1NywgM30sCisgICAgezIzLCA0fSwKKyAgICB7MTYwLCA0fSwKKyAgICB7MTYxLCA1fSwKKyAgICB7ODMsIDR9LAorICAgIHsxNjIsIDR9LAorICAgIHsxNjMsIDR9LAorICAgIHsxNjQsIDR9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182OF8xWzNdID0gewotICAgIHsxNjQsIDJ9LAorICAgIHs1MCwgNn0sCisgICAgezE1NCwgNn0sCisgICAgezE1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfMlsyXSA9IHsKKyAgICB7MTU0LCA3fSwKKyAgICB7MTU2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfM1syXSA9IHsKKyAgICB7MTU4LCA4fSwKKyAgICB7MTU5LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzVbMl0gPSB7CisgICAgezE2MSwgNX0sCisgICAgezAsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF82WzFdID0geworICAgIHsxNSwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzdbMV0gPSB7CisgICAgezE1NiwgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzhbMV0gPSB7CisgICAgezE1OSwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc182OFs5XSA9IHsKKyAgICB7MTAsIGFyY3NfNjhfMH0sCisgICAgezMsIGFyY3NfNjhfMX0sCisgICAgezIsIGFyY3NfNjhfMn0sCisgICAgezIsIGFyY3NfNjhfM30sCisgICAgezEsIGFyY3NfNjhfNH0sCisgICAgezIsIGFyY3NfNjhfNX0sCisgICAgezEsIGFyY3NfNjhfNn0sCisgICAgezEsIGFyY3NfNjhfN30sCisgICAgezEsIGFyY3NfNjhfOH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY5XzBbMl0gPSB7CisgICAgezI2LCAxfSwKKyAgICB7NTEsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OV8xWzNdID0geworICAgIHsxNjUsIDJ9LAogICAgIHszMiwgM30sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzY5XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF8zWzNdID0geworc3RhdGljIGFyYyBhcmNzXzY5XzNbM10gPSB7CiAgICAgezI2LCA0fSwKLSAgICB7NTAsIDR9LAorICAgIHs1MSwgNH0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OF80WzJdID0geworc3RhdGljIGFyYyBhcmNzXzY5XzRbMl0gPSB7CiAgICAgezMyLCAzfSwKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc182OFs1XSA9IHsKLSAgICB7MiwgYXJjc182OF8wfSwKLSAgICB7MywgYXJjc182OF8xfSwKLSAgICB7MSwgYXJjc182OF8yfSwKLSAgICB7MywgYXJjc182OF8zfSwKLSAgICB7MiwgYXJjc182OF80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbNV0gPSB7CisgICAgezIsIGFyY3NfNjlfMH0sCisgICAgezMsIGFyY3NfNjlfMX0sCisgICAgezEsIGFyY3NfNjlfMn0sCisgICAgezMsIGFyY3NfNjlfM30sCisgICAgezIsIGFyY3NfNjlfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfMFszXSA9IHsKICAgICB7MTMsIDF9LAotICAgIHsxNTQsIDJ9LAotICAgIHs4MSwgM30sCisgICAgezE1NSwgMn0sCisgICAgezgyLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF8xWzJdID0gewogICAgIHsxNCwgNH0sCiAgICAgezE1LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfMlsxXSA9IHsKLSAgICB7MTY1LCA2fSwKK3N0YXRpYyBhcmMgYXJjc183MF8yWzFdID0geworICAgIHsxNjYsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8zWzFdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzNbMV0gPSB7CiAgICAgezIzLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF80WzFdID0gewogICAgIHsxNSwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfNVsxXSA9IHsKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzZbMV0gPSB7Ci0gICAgezE1NSwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzBfNlsxXSA9IHsKKyAgICB7MTU2LCA1fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY5WzddID0gewotICAgIHszLCBhcmNzXzY5XzB9LAotICAgIHsyLCBhcmNzXzY5XzF9LAotICAgIHsxLCBhcmNzXzY5XzJ9LAotICAgIHsxLCBhcmNzXzY5XzN9LAotICAgIHsxLCBhcmNzXzY5XzR9LAotICAgIHsxLCBhcmNzXzY5XzV9LAotICAgIHsxLCBhcmNzXzY5XzZ9LAorc3RhdGljIHN0YXRlIHN0YXRlc183MFs3XSA9IHsKKyAgICB7MywgYXJjc183MF8wfSwKKyAgICB7MiwgYXJjc183MF8xfSwKKyAgICB7MSwgYXJjc183MF8yfSwKKyAgICB7MSwgYXJjc183MF8zfSwKKyAgICB7MSwgYXJjc183MF80fSwKKyAgICB7MSwgYXJjc183MF81fSwKKyAgICB7MSwgYXJjc183MF82fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzBfMFsxXSA9IHsKLSAgICB7MTY2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MV8wWzFdID0geworICAgIHsxNjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcxXzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzJbMl0gPSB7Ci0gICAgezE2NiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzFfMlsyXSA9IHsKKyAgICB7MTY3LCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183MFszXSA9IHsKLSAgICB7MSwgYXJjc183MF8wfSwKLSAgICB7MiwgYXJjc183MF8xfSwKLSAgICB7MiwgYXJjc183MF8yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbM10gPSB7CisgICAgezEsIGFyY3NfNzFfMH0sCisgICAgezIsIGFyY3NfNzFfMX0sCisgICAgezIsIGFyY3NfNzFfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzBbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfMFsyXSA9IHsKICAgICB7MjYsIDF9LAogICAgIHsyNywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfMVsyXSA9IHsKICAgICB7MjcsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMlszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8yWzNdID0gewogICAgIHsyNiwgM30sCi0gICAgezE2NywgNH0sCisgICAgezE2OCwgNH0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8zWzJdID0gewotICAgIHsxNjcsIDR9LAorc3RhdGljIGFyYyBhcmNzXzcyXzNbMl0gPSB7CisgICAgezE2OCwgNH0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzRbMV0gPSB7CiAgICAgezAsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzFbNV0gPSB7Ci0gICAgezIsIGFyY3NfNzFfMH0sCi0gICAgezIsIGFyY3NfNzFfMX0sCi0gICAgezMsIGFyY3NfNzFfMn0sCi0gICAgezIsIGFyY3NfNzFfM30sCi0gICAgezEsIGFyY3NfNzFfNH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzVdID0geworICAgIHsyLCBhcmNzXzcyXzB9LAorICAgIHsyLCBhcmNzXzcyXzF9LAorICAgIHszLCBhcmNzXzcyXzJ9LAorICAgIHsyLCBhcmNzXzcyXzN9LAorICAgIHsxLCBhcmNzXzcyXzR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8wWzFdID0geworc3RhdGljIGFyYyBhcmNzXzczXzBbMV0gPSB7CiAgICAgezI3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzJfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183M18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcyWzNdID0gewotICAgIHsxLCBhcmNzXzcyXzB9LAotICAgIHsyLCBhcmNzXzcyXzF9LAotICAgIHsxLCBhcmNzXzcyXzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183M18wWzJdID0gewotICAgIHsxMDcsIDF9LAotICAgIHs1MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzFbMl0gPSB7Ci0gICAgezMyLCAyfSwKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzJbM10gPSB7Ci0gICAgezEwNywgMX0sCi0gICAgezUwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc183M18yWzFdID0gewogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzczWzNdID0gewotICAgIHsyLCBhcmNzXzczXzB9LAorICAgIHsxLCBhcmNzXzczXzB9LAogICAgIHsyLCBhcmNzXzczXzF9LAotICAgIHszLCBhcmNzXzczXzJ9LAorICAgIHsxLCBhcmNzXzczXzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF8wWzFdID0gewotICAgIHsyNiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMFsyXSA9IHsKKyAgICB7MTA4LCAxfSwKKyAgICB7NTEsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183NF8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NF8yWzJdID0gewotICAgIHsyNiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzRfMlszXSA9IHsKKyAgICB7MTA4LCAxfSwKKyAgICB7NTEsIDF9LAogICAgIHswLCAyfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzc0WzNdID0gewotICAgIHsxLCBhcmNzXzc0XzB9LAorICAgIHsyLCBhcmNzXzc0XzB9LAogICAgIHsyLCBhcmNzXzc0XzF9LAotICAgIHsyLCBhcmNzXzc0XzJ9LAorICAgIHszLCBhcmNzXzc0XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzc1XzBbMV0gPSB7CisgICAgezI2LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMVsyXSA9IHsKKyAgICB7MzIsIDJ9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzVfMlsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzc1WzNdID0geworICAgIHsxLCBhcmNzXzc1XzB9LAorICAgIHsyLCBhcmNzXzc1XzF9LAorICAgIHsyLCBhcmNzXzc1XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183Nl8wWzNdID0gewogICAgIHsyNiwgMX0sCiAgICAgezM0LCAyfSwKLSAgICB7NTAsIDN9LAorICAgIHs1MSwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzFbNF0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMVs0XSA9IHsKICAgICB7MjcsIDR9LAotICAgIHsxNjQsIDV9LAorICAgIHsxNjUsIDV9LAogICAgIHszMiwgNn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8yWzFdID0gewotICAgIHsxMDcsIDd9LAorc3RhdGljIGFyYyBhcmNzXzc2XzJbMV0gPSB7CisgICAgezEwOCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzNbM10gPSB7Ci0gICAgezE2NCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzZfM1szXSA9IHsKKyAgICB7MTY1LCA1fSwKICAgICB7MzIsIDZ9LAogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl80WzFdID0gewogICAgIHsyNiwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzVbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfNVsxXSA9IHsKICAgICB7MCwgNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzZbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfNlszXSA9IHsKICAgICB7MjYsIDh9LAotICAgIHs1MCwgOH0sCisgICAgezUxLCA4fSwKICAgICB7MCwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzdbM10gPSB7Ci0gICAgezE2NCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNzZfN1szXSA9IHsKKyAgICB7MTY1LCA1fSwKICAgICB7MzIsIDl9LAogICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfOFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl84WzJdID0gewogICAgIHszMiwgNn0sCiAgICAgezAsIDh9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV85WzNdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzlbM10gPSB7CiAgICAgezI2LCAxMH0sCiAgICAgezM0LCAxMX0sCiAgICAgezAsIDl9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xMFsxXSA9IHsKICAgICB7MjcsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTFbMV0gPSB7Ci0gICAgezEwNywgMTN9LAorc3RhdGljIGFyYyBhcmNzXzc2XzExWzFdID0geworICAgIHsxMDgsIDEzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMTJbMV0gPSB7CiAgICAgezI2LCAxM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzEzWzJdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzEzWzJdID0gewogICAgIHszMiwgOX0sCiAgICAgezAsIDEzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc1WzE0XSA9IHsKLSAgICB7MywgYXJjc183NV8wfSwKLSAgICB7NCwgYXJjc183NV8xfSwKLSAgICB7MSwgYXJjc183NV8yfSwKLSAgICB7MywgYXJjc183NV8zfSwKLSAgICB7MSwgYXJjc183NV80fSwKLSAgICB7MSwgYXJjc183NV81fSwKLSAgICB7MywgYXJjc183NV82fSwKLSAgICB7MywgYXJjc183NV83fSwKLSAgICB7MiwgYXJjc183NV84fSwKLSAgICB7MywgYXJjc183NV85fSwKLSAgICB7MSwgYXJjc183NV8xMH0sCi0gICAgezEsIGFyY3NfNzVfMTF9LAotICAgIHsxLCBhcmNzXzc1XzEyfSwKLSAgICB7MiwgYXJjc183NV8xM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzBbMV0gPSB7Ci0gICAgezE2OCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzFbMV0gPSB7Ci0gICAgezIzLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMlsyXSA9IHsKLSAgICB7MTMsIDN9LAotICAgIHsyNywgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzNbMl0gPSB7Ci0gICAgezE0LCA1fSwKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl80WzFdID0gewotICAgIHsyOCwgN30sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzVbMV0gPSB7Ci0gICAgezE1LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfNlsxXSA9IHsKLSAgICB7MjcsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl83WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc2WzhdID0gewotICAgIHsxLCBhcmNzXzc2XzB9LAotICAgIHsxLCBhcmNzXzc2XzF9LAotICAgIHsyLCBhcmNzXzc2XzJ9LAotICAgIHsyLCBhcmNzXzc2XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc183NlsxNF0gPSB7CisgICAgezMsIGFyY3NfNzZfMH0sCisgICAgezQsIGFyY3NfNzZfMX0sCisgICAgezEsIGFyY3NfNzZfMn0sCisgICAgezMsIGFyY3NfNzZfM30sCiAgICAgezEsIGFyY3NfNzZfNH0sCiAgICAgezEsIGFyY3NfNzZfNX0sCi0gICAgezEsIGFyY3NfNzZfNn0sCi0gICAgezEsIGFyY3NfNzZfN30sCisgICAgezMsIGFyY3NfNzZfNn0sCisgICAgezMsIGFyY3NfNzZfN30sCisgICAgezIsIGFyY3NfNzZfOH0sCisgICAgezMsIGFyY3NfNzZfOX0sCisgICAgezEsIGFyY3NfNzZfMTB9LAorICAgIHsxLCBhcmNzXzc2XzExfSwKKyAgICB7MSwgYXJjc183Nl8xMn0sCisgICAgezIsIGFyY3NfNzZfMTN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc183N18wWzFdID0gewogICAgIHsxNjksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183N18xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzc3XzFbMV0gPSB7CisgICAgezIzLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfMlsyXSA9IHsKKyAgICB7MTMsIDN9LAorICAgIHsyNywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzNbMl0gPSB7CisgICAgezE0LCA1fSwKKyAgICB7MTUsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N180WzFdID0geworICAgIHsyOCwgN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzVbMV0gPSB7CisgICAgezE1LCA2fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfNlsxXSA9IHsKKyAgICB7MjcsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N183WzFdID0geworICAgIHswLCA3fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzc3WzhdID0geworICAgIHsxLCBhcmNzXzc3XzB9LAorICAgIHsxLCBhcmNzXzc3XzF9LAorICAgIHsyLCBhcmNzXzc3XzJ9LAorICAgIHsyLCBhcmNzXzc3XzN9LAorICAgIHsxLCBhcmNzXzc3XzR9LAorICAgIHsxLCBhcmNzXzc3XzV9LAorICAgIHsxLCBhcmNzXzc3XzZ9LAorICAgIHsxLCBhcmNzXzc3Xzd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183OF8wWzFdID0geworICAgIHsxNzAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183OF8xWzJdID0gewogICAgIHszMiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183N18yWzJdID0gewotICAgIHsxNjksIDF9LAorc3RhdGljIGFyYyBhcmNzXzc4XzJbMl0gPSB7CisgICAgezE3MCwgMX0sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbM10gPSB7Ci0gICAgezEsIGFyY3NfNzdfMH0sCi0gICAgezIsIGFyY3NfNzdfMX0sCi0gICAgezIsIGFyY3NfNzdfMn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc4WzNdID0geworICAgIHsxLCBhcmNzXzc4XzB9LAorICAgIHsyLCBhcmNzXzc4XzF9LAorICAgIHsyLCBhcmNzXzc4XzJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8wWzNdID0geworc3RhdGljIGFyYyBhcmNzXzc5XzBbM10gPSB7CiAgICAgezI2LCAxfSwKICAgICB7MzQsIDJ9LAogICAgIHszMywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzFbM10gPSB7Ci0gICAgezE2NCwgM30sCitzdGF0aWMgYXJjIGFyY3NfNzlfMVszXSA9IHsKKyAgICB7MTY1LCAzfSwKICAgICB7MzEsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183OV8yWzFdID0gewogICAgIHsyNiwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzlfM1sxXSA9IHsKICAgICB7MCwgM30sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183OFs0XSA9IHsKLSAgICB7MywgYXJjc183OF8wfSwKLSAgICB7MywgYXJjc183OF8xfSwKLSAgICB7MSwgYXJjc183OF8yfSwKLSAgICB7MSwgYXJjc183OF8zfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzlbNF0gPSB7CisgICAgezMsIGFyY3NfNzlfMH0sCisgICAgezMsIGFyY3NfNzlfMX0sCisgICAgezEsIGFyY3NfNzlfMn0sCisgICAgezEsIGFyY3NfNzlfM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc5XzBbMl0gPSB7Ci0gICAgezE2NCwgMX0sCi0gICAgezE3MSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc5XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzlbMl0gPSB7Ci0gICAgezIsIGFyY3NfNzlfMH0sCi0gICAgezEsIGFyY3NfNzlfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzBbMV0gPSB7Ci0gICAgezEwMCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfODBfMFsyXSA9IHsKKyAgICB7MTY1LCAxfSwKKyAgICB7MTcyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMVsxXSA9IHsKLSAgICB7NjUsIDJ9LAorICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODBfMlsxXSA9IHsKLSAgICB7MTAxLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfM1sxXSA9IHsKLSAgICB7MTExLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfNFsyXSA9IHsKLSAgICB7MTcwLCA1fSwKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgwXzVbMV0gPSB7Ci0gICAgezAsIDV9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODBbNl0gPSB7Ci0gICAgezEsIGFyY3NfODBfMH0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzgwWzJdID0geworICAgIHsyLCBhcmNzXzgwXzB9LAogICAgIHsxLCBhcmNzXzgwXzF9LAotICAgIHsxLCBhcmNzXzgwXzJ9LAotICAgIHsxLCBhcmNzXzgwXzN9LAotICAgIHsyLCBhcmNzXzgwXzR9LAotICAgIHsxLCBhcmNzXzgwXzV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8wWzFdID0gewotICAgIHs5NiwgMX0sCitzdGF0aWMgYXJjIGFyY3NfODFfMFsyXSA9IHsKKyAgICB7MjEsIDF9LAorICAgIHsxMDEsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MV8xWzFdID0gewotICAgIHsxMTMsIDJ9LAorICAgIHsxMDEsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MV8yWzJdID0gewotICAgIHsxNzAsIDN9LAotICAgIHswLCAyfSwKK3N0YXRpYyBhcmMgYXJjc184MV8yWzFdID0geworICAgIHs2NiwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgxXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorICAgIHsxMDIsIDR9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbNF0gPSB7Ci0gICAgezEsIGFyY3NfODFfMH0sCitzdGF0aWMgYXJjIGFyY3NfODFfNFsxXSA9IHsKKyAgICB7MTEyLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfODFfNVsyXSA9IHsKKyAgICB7MTcxLCA2fSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgxXzZbMV0gPSB7CisgICAgezAsIDZ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbN10gPSB7CisgICAgezIsIGFyY3NfODFfMH0sCiAgICAgezEsIGFyY3NfODFfMX0sCi0gICAgezIsIGFyY3NfODFfMn0sCisgICAgezEsIGFyY3NfODFfMn0sCiAgICAgezEsIGFyY3NfODFfM30sCisgICAgezEsIGFyY3NfODFfNH0sCisgICAgezIsIGFyY3NfODFfNX0sCisgICAgezEsIGFyY3NfODFfNn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgyXzBbMV0gPSB7Ci0gICAgezIzLCAxfSwKKyAgICB7OTcsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184Ml8xWzFdID0gewotICAgIHswLCAxfSwKKyAgICB7MTE0LCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgyWzJdID0gewotICAgIHsxLCBhcmNzXzgyXzB9LAotICAgIHsxLCBhcmNzXzgyXzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184M18wWzFdID0gewotICAgIHsxNzMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184M18xWzJdID0gewotICAgIHsxNzQsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODNfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc184Ml8yWzJdID0geworICAgIHsxNzEsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzgzWzNdID0geworc3RhdGljIGFyYyBhcmNzXzgyXzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODJbNF0gPSB7CisgICAgezEsIGFyY3NfODJfMH0sCisgICAgezEsIGFyY3NfODJfMX0sCisgICAgezIsIGFyY3NfODJfMn0sCisgICAgezEsIGFyY3NfODJfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzgzXzBbMV0gPSB7CisgICAgezIzLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184M1syXSA9IHsKICAgICB7MSwgYXJjc184M18wfSwKLSAgICB7MiwgYXJjc184M18xfSwKLSAgICB7MSwgYXJjc184M18yfSwKKyAgICB7MSwgYXJjc184M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfODRfMFsyXSA9IHsKLSAgICB7NzYsIDF9LAotICAgIHs5LCAyfSwKK3N0YXRpYyBhcmMgYXJjc184NF8wWzFdID0geworICAgIHsxNzQsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184NF8xWzFdID0gewotICAgIHsyNiwgMn0sCitzdGF0aWMgYXJjIGFyY3NfODRfMVsyXSA9IHsKKyAgICB7MTc1LCAyfSwKKyAgICB7MCwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzg0XzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfODRbM10gPSB7Ci0gICAgezIsIGFyY3NfODRfMH0sCi0gICAgezEsIGFyY3NfODRfMX0sCisgICAgezEsIGFyY3NfODRfMH0sCisgICAgezIsIGFyY3NfODRfMX0sCiAgICAgezEsIGFyY3NfODRfMn0sCiB9Owotc3RhdGljIGRmYSBkZmFzWzg1XSA9IHsKK3N0YXRpYyBhcmMgYXJjc184NV8wWzJdID0geworICAgIHs3NywgMX0sCisgICAgezksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184NV8xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg1XzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODVbM10gPSB7CisgICAgezIsIGFyY3NfODVfMH0sCisgICAgezEsIGFyY3NfODVfMX0sCisgICAgezEsIGFyY3NfODVfMn0sCit9Oworc3RhdGljIGRmYSBkZmFzWzg2XSA9IHsKICAgICB7MjU2LCAic2luZ2xlX2lucHV0IiwgMCwgMywgc3RhdGVzXzAsCi0gICAgICJcMDA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgICJcMDA0XDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMjYyXDAwNFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAyIn0sCiAgICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKLSAgICAgIlwyMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICAgIlwyMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wyNjJcMDA0XDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDIifSwKICAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAogICAgIHsyNTksICJkZWNvcmF0b3IiLCAwLCA3LCBzdGF0ZXNfMywKICAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LApAQCAtMTg3OSwxNzkgKzE5MjIsMTgxIEBACiAgICAgICJcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2NCwgInBhcmFtZXRlcnMiLCAwLCA0LCBzdGF0ZXNfOCwKICAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY1LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOSwKKyAgICB7MjY1LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE5LCBzdGF0ZXNfOSwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY2LCAidGZwZGVmIiwgMCwgNCwgc3RhdGVzXzEwLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjcsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTEsCisgICAgezI2NywgInZhcmFyZ3NsaXN0IiwgMCwgMTksIHN0YXRlc18xMSwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY4LCAidmZwZGVmIiwgMCwgMiwgc3RhdGVzXzEyLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjksICJzdG10IiwgMCwgMiwgc3RhdGVzXzEzLAotICAgICAiXDAwMFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAorICAgICAiXDAwMFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDI2MlwwMDRcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMiJ9LAogICAgIHsyNzAsICJzaW1wbGVfc3RtdCIsIDAsIDQsIHN0YXRlc18xNCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDAifSwKICAgICB7MjcxLCAic21hbGxfc3RtdCIsIDAsIDIsIHN0YXRlc18xNSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDAifSwKICAgICB7MjcyLCAiZXhwcl9zdG10IiwgMCwgNiwgc3RhdGVzXzE2LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHsyNzMsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTcsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezI3NCwgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNzBcMzc3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc1LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMTksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3NiwgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc3LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAotICAgIHsyNzgsICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzksICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzIzLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODAsICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgxLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKLSAgICB7MjgyLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgzLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NCwgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODUsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18yOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg2LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NywgImRvdHRlZF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzMxLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODgsICJpbXBvcnRfYXNfbmFtZXMiLCAwLCAzLCBzdGF0ZXNfMzIsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OSwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zMywKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkwLCAiZG90dGVkX25hbWUiLCAwLCAyLCBzdGF0ZXNfMzQsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MSwgImdsb2JhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTIsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTMsICJhc3NlcnRfc3RtdCIsIDAsIDUsIHN0YXRlc18zNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk0LCAiY29tcG91bmRfc3RtdCIsIDAsIDIsIHN0YXRlc18zOCwKLSAgICAgIlwwMDBcMDEwXDE0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMzFcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDEifSwKLSAgICB7Mjk1LCAiYXN5bmNfc3RtdCIsIDAsIDMsIHN0YXRlc18zOSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk2LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc180MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk3LCAid2hpbGVfc3RtdCIsIDAsIDgsIHN0YXRlc180MSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk4LCAiZm9yX3N0bXQiLCAwLCAxMCwgc3RhdGVzXzQyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTksICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMCwgIndpdGhfc3RtdCIsIDAsIDUsIHN0YXRlc180NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAxLCAid2l0aF9pdGVtIiwgMCwgNCwgc3RhdGVzXzQ1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDIsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDMsICJzdWl0ZSIsIDAsIDUsIHN0YXRlc180NywKLSAgICAgIlwwMDRcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDAifSwKLSAgICB7MzA0LCAidGVzdCIsIDAsIDYsIHN0YXRlc180OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzA1LCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNDksCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwNiwgImxhbWJkZWYiLCAwLCA1LCBzdGF0ZXNfNTAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwNywgImxhbWJkZWZfbm9jb25kIiwgMCwgNSwgc3RhdGVzXzUxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDgsICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUyLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDksICJhbmRfdGVzdCIsIDAsIDIsIHN0YXRlc181MywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzEwLCAibm90X3Rlc3QiLCAwLCAzLCBzdGF0ZXNfNTQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxMSwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxMiwgImNvbXBfb3AiLCAwLCA0LCBzdGF0ZXNfNTYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMzcxXDAwN1wwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMxMywgInN0YXJfZXhwciIsIDAsIDMsIHN0YXRlc181NywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzE0LCAiZXhwciIsIDAsIDIsIHN0YXRlc181OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE1LCAieG9yX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxNiwgImFuZF9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTcsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzYxLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTgsICJhcml0aF9leHByIiwgMCwgMiwgc3RhdGVzXzYyLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTksICJ0ZXJtIiwgMCwgMiwgc3RhdGVzXzYzLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjAsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMSwgInBvd2VyIiwgMCwgNCwgc3RhdGVzXzY1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjIsICJhdG9tX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNjYsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMywgImF0b20iLCAwLCA5LCBzdGF0ZXNfNjcsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyNCwgInRlc3RsaXN0X2NvbXAiLCAwLCA1LCBzdGF0ZXNfNjgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyNSwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjksCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwIn0sCi0gICAgezMyNiwgInN1YnNjcmlwdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzAsCi0gICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyNywgInN1YnNjcmlwdCIsIDAsIDUsIHN0YXRlc183MSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI4LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MjczLCAiYW5uYXNzaWduIiwgMCwgNSwgc3RhdGVzXzE3LAogICAgICAiXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMjksICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzMwLCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzQsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzMSwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTQsIHN0YXRlc183NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzMyLCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxIn0sCi0gICAgezMzMywgImFyZ2xpc3QiLCAwLCAzLCBzdGF0ZXNfNzcsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzNCwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzUsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNiwgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzgwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzcsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzgxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzgsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzgyLAorICAgIHsyNzQsICJ0ZXN0bGlzdF9zdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfMTgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezI3NSwgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xOSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNjBcMzc3XDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc2LCAiZGVsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjAsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NywgInBhc3Nfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc4LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAzNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMCJ9LAorICAgIHsyNzksICJicmVha19zdG10IiwgMCwgMiwgc3RhdGVzXzIzLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODAsICJjb250aW51ZV9zdG10IiwgMCwgMiwgc3RhdGVzXzI0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODEsICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yNSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjgyLCAieWllbGRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDAifSwKKyAgICB7MjgzLCAicmFpc2Vfc3RtdCIsIDAsIDUsIHN0YXRlc18yNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg0LCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NSwgImltcG9ydF9uYW1lIiwgMCwgMywgc3RhdGVzXzI5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODYsICJpbXBvcnRfZnJvbSIsIDAsIDgsIHN0YXRlc18zMCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzEsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzOSwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCi0gICAgezM0MCwgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKKyAgICB7Mjg4LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzIsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OSwgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMywKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkwLCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzM0LAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTEsICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zNSwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkyLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MywgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NCwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTUsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM5LAorICAgICAiXDAwMFwwMTBcMTQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDI2MlwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMiJ9LAorICAgIHsyOTYsICJhc3luY19zdG10IiwgMCwgMywgc3RhdGVzXzQwLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTcsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzQxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTgsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzQyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTksICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMCwgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAxLCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQ1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDIsICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMwMywgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwNCwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ4LAorICAgICAiXDAwNFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAorICAgIHszMDUsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMDYsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc181MCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzA3LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc181MSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA4LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNTIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwOSwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMCwgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzU0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTEsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzEyLCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzEzLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwzNjJcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzE0LCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTUsICJleHByIiwgMCwgMiwgc3RhdGVzXzU5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTYsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE3LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjEsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxOCwgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjIsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxOSwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjMsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMCwgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMSwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIyLCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjYsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyMywgImF0b21fZXhwciIsIDAsIDMsIHN0YXRlc182NywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI0LCAiYXRvbSIsIDAsIDksIHN0YXRlc182OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI1LCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182OSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI2LCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc183MCwKKyAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDAifSwKKyAgICB7MzI3LCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc183MSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzI4LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjksICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzczLAorICAgICAiXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzAsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzMxLCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzMiwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTQsIHN0YXRlc183NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzMzLCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyIn0sCisgICAgezMzNCwgImFyZ2xpc3QiLCAwLCAzLCBzdGF0ZXNfNzgsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzNSwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzYsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfODAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzNywgImNvbXBfZm9yIiwgMCwgNywgc3RhdGVzXzgxLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzgsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzgyLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzksICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzgzLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszNDAsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzg0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMCJ9LAorICAgIHszNDEsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODUsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCiB9Owotc3RhdGljIGxhYmVsIGxhYmVsc1sxNzVdID0geworc3RhdGljIGxhYmVsIGxhYmVsc1sxNzZdID0gewogICAgIHswLCAiRU1QVFkifSwKICAgICB7MjU2LCAwfSwKICAgICB7NCwgMH0sCiAgICAgezI3MCwgMH0sCi0gICAgezI5NCwgMH0sCisgICAgezI5NSwgMH0sCiAgICAgezI1NywgMH0sCiAgICAgezI2OSwgMH0sCiAgICAgezAsIDB9LAogICAgIHsyNTgsIDB9LAotICAgIHszMzAsIDB9LAorICAgIHszMzEsIDB9LAogICAgIHsyNTksIDB9LAogICAgIHs0OSwgMH0sCi0gICAgezI5MCwgMH0sCisgICAgezI5MSwgMH0sCiAgICAgezcsIDB9LAotICAgIHszMzMsIDB9LAorICAgIHszMzQsIDB9LAogICAgIHs4LCAwfSwKICAgICB7MjYwLCAwfSwKICAgICB7MjYxLCAwfSwKLSAgICB7MzMyLCAwfSwKKyAgICB7MzMzLCAwfSwKICAgICB7MjYzLCAwfSwKICAgICB7MjYyLCAwfSwKICAgICB7NTUsIDB9LApAQCAtMjA1OSw5ICsyMTA0LDkgQEAKICAgICB7MSwgMH0sCiAgICAgezI2NCwgMH0sCiAgICAgezUxLCAwfSwKLSAgICB7MzA0LCAwfSwKKyAgICB7MzA1LCAwfSwKICAgICB7MTEsIDB9LAotICAgIHszMDMsIDB9LAorICAgIHszMDQsIDB9LAogICAgIHsyNjUsIDB9LAogICAgIHsyNjYsIDB9LAogICAgIHsyMiwgMH0sCkBAIC0yMDczLDE3ICsyMTE4LDE4IEBACiAgICAgezI3MSwgMH0sCiAgICAgezEzLCAwfSwKICAgICB7MjcyLCAwfSwKLSAgICB7Mjc1LCAwfSwKICAgICB7Mjc2LCAwfSwKICAgICB7Mjc3LCAwfSwKLSAgICB7MjgzLCAwfSwKLSAgICB7MjkxLCAwfSwKKyAgICB7Mjc4LCAwfSwKKyAgICB7Mjg0LCAwfSwKICAgICB7MjkyLCAwfSwKICAgICB7MjkzLCAwfSwKLSAgICB7MjczLCAwfSwKKyAgICB7Mjk0LCAwfSwKICAgICB7Mjc0LCAwfSwKLSAgICB7MzM5LCAwfSwKLSAgICB7MzEzLCAwfSwKKyAgICB7MjczLCAwfSwKKyAgICB7Mjc1LCAwfSwKKyAgICB7MzQwLCAwfSwKKyAgICB7MzE0LCAwfSwKICAgICB7MzYsIDB9LAogICAgIHszNywgMH0sCiAgICAgezM4LCAwfSwKQEAgLTIwOTgsMzcgKzIxNDQsMzcgQEAKICAgICB7NDYsIDB9LAogICAgIHs0OCwgMH0sCiAgICAgezEsICJkZWwifSwKLSAgICB7MzI5LCAwfSwKKyAgICB7MzMwLCAwfSwKICAgICB7MSwgInBhc3MifSwKLSAgICB7Mjc4LCAwfSwKICAgICB7Mjc5LCAwfSwKICAgICB7MjgwLCAwfSwKLSAgICB7MjgyLCAwfSwKICAgICB7MjgxLCAwfSwKKyAgICB7MjgzLCAwfSwKKyAgICB7MjgyLCAwfSwKICAgICB7MSwgImJyZWFrIn0sCiAgICAgezEsICJjb250aW51ZSJ9LAogICAgIHsxLCAicmV0dXJuIn0sCiAgICAgezEsICJyYWlzZSJ9LAogICAgIHsxLCAiZnJvbSJ9LAotICAgIHsyODQsIDB9LAogICAgIHsyODUsIDB9LAorICAgIHsyODYsIDB9LAogICAgIHsxLCAiaW1wb3J0In0sCi0gICAgezI4OSwgMH0sCisgICAgezI5MCwgMH0sCiAgICAgezIzLCAwfSwKICAgICB7NTIsIDB9LAotICAgIHsyODgsIDB9LAotICAgIHsyODYsIDB9LAotICAgIHsxLCAiYXMifSwKKyAgICB7Mjg5LCAwfSwKICAgICB7Mjg3LCAwfSwKKyAgICB7MSwgImFzIn0sCisgICAgezI4OCwgMH0sCiAgICAgezEsICJnbG9iYWwifSwKICAgICB7MSwgIm5vbmxvY2FsIn0sCiAgICAgezEsICJhc3NlcnQifSwKLSAgICB7Mjk2LCAwfSwKICAgICB7Mjk3LCAwfSwKICAgICB7Mjk4LCAwfSwKICAgICB7Mjk5LCAwfSwKICAgICB7MzAwLCAwfSwKLSAgICB7Mjk1LCAwfSwKKyAgICB7MzAxLCAwfSwKKyAgICB7Mjk2LCAwfSwKICAgICB7MSwgImlmIn0sCiAgICAgezEsICJlbGlmIn0sCiAgICAgezEsICJlbHNlIn0sCkBAIC0yMTM2LDI2ICsyMTgyLDI2IEBACiAgICAgezEsICJmb3IifSwKICAgICB7MSwgImluIn0sCiAgICAgezEsICJ0cnkifSwKLSAgICB7MzAyLCAwfSwKKyAgICB7MzAzLCAwfSwKICAgICB7MSwgImZpbmFsbHkifSwKICAgICB7MSwgIndpdGgifSwKLSAgICB7MzAxLCAwfSwKLSAgICB7MzE0LCAwfSwKKyAgICB7MzAyLCAwfSwKKyAgICB7MzE1LCAwfSwKICAgICB7MSwgImV4Y2VwdCJ9LAogICAgIHs1LCAwfSwKICAgICB7NiwgMH0sCi0gICAgezMwOCwgMH0sCi0gICAgezMwNiwgMH0sCi0gICAgezMwNSwgMH0sCi0gICAgezMwNywgMH0sCi0gICAgezEsICJsYW1iZGEifSwKICAgICB7MzA5LCAwfSwKLSAgICB7MSwgIm9yIn0sCisgICAgezMwNywgMH0sCisgICAgezMwNiwgMH0sCisgICAgezMwOCwgMH0sCisgICAgezEsICJsYW1iZGEifSwKICAgICB7MzEwLCAwfSwKKyAgICB7MSwgIm9yIn0sCisgICAgezMxMSwgMH0sCiAgICAgezEsICJhbmQifSwKICAgICB7MSwgIm5vdCJ9LAotICAgIHszMTEsIDB9LAogICAgIHszMTIsIDB9LAorICAgIHszMTMsIDB9LAogICAgIHsyMCwgMH0sCiAgICAgezIxLCAwfSwKICAgICB7MjcsIDB9LApAQCAtMjE2NCw1NCArMjIxMCw1NCBAQAogICAgIHsyOCwgMH0sCiAgICAgezI4LCAwfSwKICAgICB7MSwgImlzIn0sCi0gICAgezMxNSwgMH0sCi0gICAgezE4LCAwfSwKICAgICB7MzE2LCAwfSwKLSAgICB7MzIsIDB9LAorICAgIHsxOCwgMH0sCiAgICAgezMxNywgMH0sCi0gICAgezE5LCAwfSwKKyAgICB7MzIsIDB9LAogICAgIHszMTgsIDB9LAorICAgIHsxOSwgMH0sCisgICAgezMxOSwgMH0sCiAgICAgezMzLCAwfSwKICAgICB7MzQsIDB9LAotICAgIHszMTksIDB9LAorICAgIHszMjAsIDB9LAogICAgIHsxNCwgMH0sCiAgICAgezE1LCAwfSwKLSAgICB7MzIwLCAwfSwKKyAgICB7MzIxLCAwfSwKICAgICB7MTcsIDB9LAogICAgIHsyNCwgMH0sCiAgICAgezQ3LCAwfSwKICAgICB7MzEsIDB9LAotICAgIHszMjEsIDB9LAogICAgIHszMjIsIDB9LAotICAgIHs1NCwgMH0sCiAgICAgezMyMywgMH0sCi0gICAgezMyNSwgMH0sCisgICAgezU0LCAwfSwKICAgICB7MzI0LCAwfSwKKyAgICB7MzI2LCAwfSwKKyAgICB7MzI1LCAwfSwKICAgICB7OSwgMH0sCiAgICAgezEwLCAwfSwKICAgICB7MjUsIDB9LAotICAgIHszMzEsIDB9LAorICAgIHszMzIsIDB9LAogICAgIHsyNiwgMH0sCiAgICAgezIsIDB9LAogICAgIHszLCAwfSwKICAgICB7MSwgIk5vbmUifSwKICAgICB7MSwgIlRydWUifSwKICAgICB7MSwgIkZhbHNlIn0sCi0gICAgezMzNiwgMH0sCi0gICAgezMyNiwgMH0sCisgICAgezMzNywgMH0sCiAgICAgezMyNywgMH0sCiAgICAgezMyOCwgMH0sCisgICAgezMyOSwgMH0sCiAgICAgezEsICJjbGFzcyJ9LAotICAgIHszMzQsIDB9LAogICAgIHszMzUsIDB9LAotICAgIHszMzcsIDB9LAorICAgIHszMzYsIDB9LAogICAgIHszMzgsIDB9LAorICAgIHszMzksIDB9LAogICAgIHsxLCAieWllbGQifSwKLSAgICB7MzQwLCAwfSwKKyAgICB7MzQxLCAwfSwKIH07CiBncmFtbWFyIF9QeVBhcnNlcl9HcmFtbWFyID0gewotICAgIDg1LAorICAgIDg2LAogICAgIGRmYXMsCi0gICAgezE3NSwgbGFiZWxzfSwKKyAgICB7MTc2LCBsYWJlbHN9LAogICAgIDI1NgogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnQuYyBiL1B5dGhvbi9pbXBvcnQuYwppbmRleCAzNTc5MjczLi5jZDg2NWE1IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0LmMKKysrIGIvUHl0aG9uL2ltcG9ydC5jCkBAIC0zOCwxNCArMzgsNiBAQAogCiAjaW5jbHVkZSAiY2xpbmljL2ltcG9ydC5jLmgiCiAKLS8qW3B5dGhvbiBpbnB1dF0KLWNsYXNzIGZzX3VuaWNvZGVfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlPYmplY3QgKicKLSAgICBjb252ZXJ0ZXIgPSAnUHlVbmljb2RlX0ZTRGVjb2RlcicKLQotW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9OWQ2Nzg2MjMwMTY2MDA2ZV0qLwotCiAvKiBJbml0aWFsaXplIHRoaW5ncyAqLwogCiB2b2lkCkBAIC0zMjAsNyArMzEyLDcgQEAKIAogCiAvKiBMaXN0IG9mIG5hbWVzIHRvIGNsZWFyIGluIHN5cyAqLwotc3RhdGljIGNoYXIqIHN5c19kZWxldGVzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN5c19kZWxldGVzW10gPSB7CiAgICAgInBhdGgiLCAiYXJndiIsICJwczEiLCAicHMyIiwKICAgICAibGFzdF90eXBlIiwgImxhc3RfdmFsdWUiLCAibGFzdF90cmFjZWJhY2siLAogICAgICJwYXRoX2hvb2tzIiwgInBhdGhfaW1wb3J0ZXJfY2FjaGUiLCAibWV0YV9wYXRoIiwKQEAgLTMzMCw3ICszMjIsNyBAQAogICAgIE5VTEwKIH07CiAKLXN0YXRpYyBjaGFyKiBzeXNfZmlsZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3lzX2ZpbGVzW10gPSB7CiAgICAgInN0ZGluIiwgIl9fc3RkaW5fXyIsCiAgICAgInN0ZG91dCIsICJfX3N0ZG91dF9fIiwKICAgICAic3RkZXJyIiwgIl9fc3RkZXJyX18iLApAQCAtMzQ3LDcgKzMzOSw3IEBACiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBpbnRlcnAtPm1vZHVsZXM7CiAgICAgUHlPYmplY3QgKndlYWtsaXN0ID0gTlVMTDsKLSAgICBjaGFyICoqcDsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKnA7CiAKICAgICBpZiAobW9kdWxlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm47IC8qIEFscmVhZHkgZG9uZSAqLwpAQCAtODgzLDEwICs4NzUsOCBAQAogICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZShjby0+Y29fZmlsZW5hbWUsIG9sZG5hbWUpKQogICAgICAgICByZXR1cm47CiAKLSAgICB0bXAgPSBjby0+Y29fZmlsZW5hbWU7Ci0gICAgY28tPmNvX2ZpbGVuYW1lID0gbmV3bmFtZTsKLSAgICBQeV9JTkNSRUYoY28tPmNvX2ZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9JTkNSRUYobmV3bmFtZSk7CisgICAgUHlfWFNFVFJFRihjby0+Y29fZmlsZW5hbWUsIG5ld25hbWUpOwogCiAgICAgY29uc3RhbnRzID0gY28tPmNvX2NvbnN0czsKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShjb25zdGFudHMpOwpAQCAtMTA4Niw2ICsxMDc2LDEwIEBACiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8qIFJlbWVtYmVyIHBvaW50ZXIgdG8gbW9kdWxlIGluaXQgZnVuY3Rpb24uICovCiAgICAgICAgICAgICAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CisgICAgICAgICAgICAgICAgaWYgKGRlZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5pdCA9IHAtPmluaXRmdW5jOwogICAgICAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QobW9kLCBuYW1lLCBuYW1lKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwpAQCAtMTMyNiwxMCArMTMyMCw4IEBACiAgICAgICAgIGlmIChpbl9pbXBvcnRsaWIgJiYKICAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAogICAgICAgICAgICAgIF9QeVVuaWNvZGVfRXF1YWxUb0FTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsIHJlbW92ZV9mcmFtZXMpKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpvdXRlcl9saW5rOwotICAgICAgICAgICAgKm91dGVyX2xpbmsgPSBuZXh0OwogICAgICAgICAgICAgUHlfWElOQ1JFRihuZXh0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICAgICAgUHlfWFNFVFJFRigqb3V0ZXJfbGluaywgbmV4dCk7CiAgICAgICAgICAgICBwcmV2X2xpbmsgPSBvdXRlcl9saW5rOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTM0Miw2MSArMTMzNCwxNzAgQEAKIH0KIAogCi1QeU9iamVjdCAqCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdpdmVuX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZ2l2ZW5fZnJvbWxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCitzdGF0aWMgUHlPYmplY3QgKgorcmVzb2x2ZV9uYW1lKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgaW50IGxldmVsKQogewotICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKLSAgICBfUHlfSURFTlRJRklFUihfaW5pdGlhbGl6aW5nKTsKICAgICBfUHlfSURFTlRJRklFUihfX3BhY2thZ2VfXyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19wYXRoX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihwYXJlbnQpOworICAgIFB5T2JqZWN0ICphYnNfbmFtZTsKKyAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNwZWM7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgUHlfc3NpemVfdCBsYXN0X2RvdDsKKyAgICBQeU9iamVjdCAqYmFzZTsKKyAgICBpbnQgbGV2ZWxfdXA7CisKKyAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2soZ2xvYmFscykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fcGFja2FnZV9fKTsKKyAgICBpZiAocGFja2FnZSA9PSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBOVUxMOworICAgIH0KKyAgICBzcGVjID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19zcGVjX18pOworCisgICAgaWYgKHBhY2thZ2UgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicGFja2FnZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNwZWMgIT0gTlVMTCAmJiBzcGVjICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGludCBlcXVhbDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJlbnQgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgICAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlcXVhbCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChwYWNrYWdlLCBwYXJlbnQsIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnQpOworICAgICAgICAgICAgaWYgKGVxdWFsIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19JbXBvcnRXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCIsIDEpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChzcGVjICE9IE5VTEwgJiYgc3BlYyAhPSBQeV9Ob25lKSB7CisgICAgICAgIHBhY2thZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNwZWMsICZQeUlkX3BhcmVudCk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIl9fc3BlY19fLnBhcmVudCBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0ltcG9ydFdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICJjYW4ndCByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvciBfX3BhY2thZ2VfXywgIgorICAgICAgICAgICAgICAgICAgICAiZmFsbGluZyBiYWNrIG9uIF9fbmFtZV9fIGFuZCBfX3BhdGhfXyIsIDEpIDwgMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX25hbWVfXyk7CisgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgIidfX25hbWVfXycgbm90IGluIGdsb2JhbHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBkb3Q7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGFja2FnZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKSwgLTEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkb3QgPj0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGRvdCk7CisgICAgICAgICAgICAgICAgaWYgKHN1YnN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihwYWNrYWdlLCBzdWJzdHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKKyAgICBpZiAobGFzdF9kb3QgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgcGFja2FnZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKKyAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZm9yIChsZXZlbF91cCA9IDE7IGxldmVsX3VwIDwgbGV2ZWw7IGxldmVsX3VwICs9IDEpIHsKKyAgICAgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfRmluZENoYXIocGFja2FnZSwgJy4nLCAwLCBsYXN0X2RvdCwgLTEpOworICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgYmFzZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGFja2FnZSwgMCwgbGFzdF9kb3QpOworICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKKyAgICBpZiAoYmFzZSA9PSBOVUxMIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKKyAgICAgICAgcmV0dXJuIGJhc2U7CisgICAgfQorCisgICAgYWJzX25hbWUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUuJVUiLCBiYXNlLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgcmV0dXJuIGFic19uYW1lOworCisgIGVycm9yOgorICAgIFB5X1hERUNSRUYocGFja2FnZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbCkKK3sKICAgICBfUHlfSURFTlRJRklFUihfZmluZF9hbmRfbG9hZCk7CiAgICAgX1B5X0lERU5USUZJRVIoX2hhbmRsZV9mcm9tbGlzdCk7Ci0gICAgX1B5X0lERU5USUZJRVIoX2xvY2tfdW5sb2NrX21vZHVsZSk7Ci0gICAgX1B5X3N0YXRpY19zdHJpbmcoc2luZ2xlX2RvdCwgIi4iKTsKICAgICBQeU9iamVjdCAqYWJzX25hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpidWlsdGluc19pbXBvcnQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpmaW5hbF9tb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2QgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYWNrYWdlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZ2xvYmFscyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmZyb21saXN0ID0gTlVMTDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBpbnQgaGFzX2Zyb207CiAKLSAgICAvKiBNYWtlIHN1cmUgdG8gdXNlIGRlZmF1bHQgdmFsdWVzIHNvIGFzIHRvIG5vdCBoYXZlCi0gICAgICAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoKSB0cnVuY2F0ZSB0aGUgcGFyYW1ldGVyIGxpc3QgYmVjYXVzZSBvZiBhCi0gICAgICAgTlVMTCBhcmd1bWVudC4gKi8KLSAgICBpZiAoZ2l2ZW5fZ2xvYmFscyA9PSBOVUxMKSB7Ci0gICAgICAgIGdsb2JhbHMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmIChnbG9iYWxzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIE9ubHkgaGF2ZSB0byBjYXJlIHdoYXQgZ2l2ZW5fZ2xvYmFscyBpcyBpZiBpdCB3aWxsIGJlIHVzZWQKLSAgICAgICAgICAgZm9yIHNvbWV0aGluZy4gKi8KLSAgICAgICAgaWYgKGxldmVsID4gMCAmJiAhUHlEaWN0X0NoZWNrKGdpdmVuX2dsb2JhbHMpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZ2xvYmFscyBtdXN0IGJlIGEgZGljdCIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBnbG9iYWxzID0gZ2l2ZW5fZ2xvYmFsczsKLSAgICAgICAgUHlfSU5DUkVGKGdsb2JhbHMpOwotICAgIH0KLQotICAgIGlmIChnaXZlbl9mcm9tbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZyb21saXN0ID0gUHlMaXN0X05ldygwKTsKLSAgICAgICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZyb21saXN0ID0gZ2l2ZW5fZnJvbWxpc3Q7Ci0gICAgICAgIFB5X0lOQ1JFRihmcm9tbGlzdCk7Ci0gICAgfQogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBtb2R1bGUgbmFtZSIpOwogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTQwOSwxNDAgKzE1MTAsNDQgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1vZHVsZSBuYW1lIG11c3QgYmUgYSBzdHJpbmciKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWUpIDwgMCkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlmIChsZXZlbCA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZXZlbCBtdXN0IGJlID49IDAiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgZWxzZSBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7Ci0gICAgICAgIGlmIChwYWNrYWdlICE9IE5VTEwgJiYgcGFja2FnZSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fbmFtZV9fKTsKLSAgICAgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CiAKLSAgICAgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhdGhfXykgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9SUGFydGl0aW9uKHBhY2thZ2UsIGJvcnJvd2VkX2RvdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhY2thZ2UpOwotICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYWNrYWdlID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHBhY2thZ2UpID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIlBhcmVudCBtb2R1bGUgJVIgbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgotICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IiwgcGFja2FnZSk7CisgICAgaWYgKGxldmVsID4gMCkgeworICAgICAgICBhYnNfbmFtZSA9IHJlc29sdmVfbmFtZShuYW1lLCBnbG9iYWxzLCBsZXZlbCk7CisgICAgICAgIGlmIChhYnNfbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsgIC8qIGxldmVsID09IDAgKi8KICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLSAgICAgICAgcGFja2FnZSA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKLSAgICB9Ci0KLSAgICBpZiAobGV2ZWwgPiAwKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKLSAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBOVUxMOwotICAgICAgICBpbnQgbGV2ZWxfdXAgPSAxOwotCi0gICAgICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7Ci0gICAgICAgICAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsIDAsIGxhc3RfZG90LCAtMSk7Ci0gICAgICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKLSAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCwgKnNlcSA9IE5VTEw7Ci0KLSAgICAgICAgICAgIGJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKLSAgICAgICAgICAgIHNlcSA9IFB5VHVwbGVfUGFjaygyLCBiYXNlLCBuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKLSAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCB8fCBzZXEgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGFic19uYW1lID0gUHlVbmljb2RlX0pvaW4oYm9ycm93ZWRfZG90LCBzZXEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhYnNfbmFtZSA9IGJhc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CiAgICAgICAgIGFic19uYW1lID0gbmFtZTsKICAgICAgICAgUHlfSU5DUkVGKGFic19uYW1lKTsKICAgICB9CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwotI2VuZGlmCi0gICAvKiBGcm9tIHRoaXMgcG9pbnQgZm9yd2FyZCwgZ290byBlcnJvcl93aXRoX3VubG9jayEgKi8KLSAgICAvKiBYWFggaW50ZXJwLT5idWlsdGluc19jb3B5IGlzIE5VTEwgaW4gc3ViaW50ZXJwcmV0ZXIhICovCi0gICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoaW50ZXJwLT5idWlsdGluc19jb3B5ID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zX2NvcHkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+YnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwotICAgIGlmIChidWlsdGluc19pbXBvcnQgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOwotICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOwotICAgIH0KLSAgICBQeV9JTkNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKLQogICAgIG1vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgYWJzX25hbWUpOwogICAgIGlmIChtb2QgPT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImltcG9ydCBvZiAlUiBoYWx0ZWQ7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIiwgYWJzX25hbWUpOwogICAgICAgICBpZiAobXNnICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgYWJzX25hbWUsIE5VTEwpOworICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19Nb2R1bGVOb3RGb3VuZEVycm9yLCBtc2csCisgICAgICAgICAgICAgICAgICAgIGFic19uYW1lLCBOVUxMKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtc2cpOwogICAgICAgICB9CiAgICAgICAgIG1vZCA9IE5VTEw7Ci0gICAgICAgIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2s7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fc3BlY19fKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX2luaXRpYWxpemluZyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOwogICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqc3BlYzsKICAgICAgICAgaW50IGluaXRpYWxpemluZyA9IDA7CkBAIC0xNTY1LDkxICsxNTcwLDgzIEBACiAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA9PSAtMSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7Ci0gICAgICAgICAgICAvKiBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KLSAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA+IDApIHsKICNpZmRlZiBXSVRIX1RIUkVBRAotICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF9QeUltcG9ydF9BY3F1aXJlTG9jaygpOwogI2VuZGlmCisgICAgICAgICAgICAgICAgLyogX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCisgICAgICAgICAgICAgICAgdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKKyNlbmRpZgogICAgICAgICAvKiBfYm9vdHN0cmFwLl9maW5kX2FuZF9sb2FkKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCiAgICAgICAgIG1vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZmluZF9hbmRfbG9hZCwgYWJzX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycC0+aW1wb3J0X2Z1bmMsIE5VTEwpOwogICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogRnJvbSBub3cgb24gd2UgZG9uJ3QgaG9sZCB0aGUgaW1wb3J0IGxvY2sgYW55bW9yZS4gKi8KIAotICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKLSAgICBpZiAoaGFzX2Zyb20gPCAwKQotICAgICAgICBnb3RvIGVycm9yOworICAgIGhhc19mcm9tID0gMDsKKyAgICBpZiAoZnJvbWxpc3QgIT0gTlVMTCAmJiBmcm9tbGlzdCAhPSBQeV9Ob25lKSB7CisgICAgICAgIGhhc19mcm9tID0gUHlPYmplY3RfSXNUcnVlKGZyb21saXN0KTsKKyAgICAgICAgaWYgKGhhc19mcm9tIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogICAgIGlmICghaGFzX2Zyb20pIHsKLSAgICAgICAgaWYgKGxldmVsID09IDAgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgPiAwKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnJvbnQgPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKnBhcnRpdGlvbiA9IE5VTEw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpOworICAgICAgICBpZiAobGV2ZWwgPT0gMCB8fCBsZW4gPiAwKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGRvdDsKIAotICAgICAgICAgICAgaWYgKGJvcnJvd2VkX2RvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCAwLCBsZW4sIDEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHBhcnRpdGlvbiA9IFB5VW5pY29kZV9QYXJ0aXRpb24obmFtZSwgYm9ycm93ZWRfZG90KTsKLSAgICAgICAgICAgIGlmIChwYXJ0aXRpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChQeVR1cGxlX0dFVF9JVEVNKHBhcnRpdGlvbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAvKiBObyBkb3QgaW4gbW9kdWxlIG5hbWUsIHNpbXBsZSBleGl0ICovCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CiAgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2QpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZyb250ID0gUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDApOwotICAgICAgICAgICAgUHlfSU5DUkVGKGZyb250KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOwotCiAgICAgICAgICAgICBpZiAobGV2ZWwgPT0gMCkgewotICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoYnVpbHRpbnNfaW1wb3J0LCBmcm9udCwgTlVMTCk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCAwLCBkb3QpOworICAgICAgICAgICAgICAgIGlmIChmcm9udCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoZnJvbnQsIE5VTEwsIE5VTEwsIE5VTEwsIDApOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbnQpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY3V0X29mZiA9IGxlbiAtIGRvdDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGFic19uYW1lX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGFic19uYW1lKTsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdG9fcmV0dXJuID0gUHlVbmljb2RlX1N1YnN0cmluZyhhYnNfbmFtZSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzX25hbWVfbGVuIC0gY3V0X29mZik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGZyb250KTsKICAgICAgICAgICAgICAgICBpZiAodG9fcmV0dXJuID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CiAgICAgICAgICAgICAgICAgaWYgKGZpbmFsX21vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19LZXlFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiBub3QgaW4gc3lzLm1vZHVsZXMgYXMgZXhwZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmaW5hbF9tb2QpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTE2NjAsMjQgKzE2NTcsMTQgQEAKICAgICBlbHNlIHsKICAgICAgICAgZmluYWxfbW9kID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19oYW5kbGVfZnJvbWxpc3QsIG1vZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGJ1aWx0aW5zX2ltcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGludGVycC0+aW1wb3J0X2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0KLSAgICBnb3RvIGVycm9yOwogCi0gIGVycm9yX3dpdGhfdW5sb2NrOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7Ci0gICAgfQotI2VuZGlmCiAgIGVycm9yOgogICAgIFB5X1hERUNSRUYoYWJzX25hbWUpOwotICAgIFB5X1hERUNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKLSAgICBQeV9YREVDUkVGKGdsb2JhbHMpOwotICAgIFB5X1hERUNSRUYoZnJvbWxpc3QpOwogICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkKICAgICAgICAgcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMoKTsKICAgICByZXR1cm4gZmluYWxfbW9kOwpAQCAtMTk1MywxOSArMTk0MCwxNSBAQAogCiAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CiAgICAgaWYgKGRlZiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgc3RhdGUgPSBQeU1vZHVsZV9HZXRTdGF0ZShtb2QpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgIC8qIEFscmVhZHkgaW5pdGlhbGl6ZWQ7IHNraXAgcmVsb2FkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIHJldHVybiBQeU1vZHVsZV9FeGVjRGVmKG1vZCwgZGVmKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmMgYi9QeXRob24vaW1wb3J0ZGwuYwppbmRleCAxYWE1ODVkLi5hYzAzMjg5IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuYworKysgYi9QeXRob24vaW1wb3J0ZGwuYwpAQCAtMjMsOCArMjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IGNoYXIgKmFzY2lpX29ubHlfcHJlZml4ID0gIlB5SW5pdCI7Ci1zdGF0aWMgY29uc3QgY2hhciAqbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBub25hc2NpaV9wcmVmaXggPSAiUHlJbml0VSI7CiAKIC8qIEdldCB0aGUgdmFyaWFibGUgcGFydCBvZiBhIG1vZHVsZSdzIGV4cG9ydCBzeW1ib2wgbmFtZS4KICAqIFJldHVybnMgYSBieXRlcyBpbnN0YW5jZS4gRm9yIG5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzLCB0aGUgbmFtZSBpcwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCmluZGV4IGE1ZmM5MzYuLjE5NWZiZmQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWIuaAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTEsMTIyNiArMSwxMjE5IEBACiAvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKLSAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAotICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAotICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCi0gICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAotICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKLSAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKLSAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAotICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCi0gICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAotICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAotICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAotICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCi0gICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCi0gICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCi0gICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKLSAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKLSAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCi0gICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCi0gICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKLSAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAotICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCi0gICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAotICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAotICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAotICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKLSAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAotICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKLSAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKLSAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCi0gICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAotICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCi0gICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCi0gICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAotICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCi0gICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAotICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCi0gICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAotICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAotICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCi0gICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKLSAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAotICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCi0gICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAotICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCi0gICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKLSAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAotICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKLSAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCi0gICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCi0gICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxNjksMCwxMTQsMTAsMCwwLDAsCi0gICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKLSAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKLSAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCi0gICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCi0gICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCi0gICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAotICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKLSAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAotICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAotICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCi0gICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAotICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAotICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCi0gICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKLSAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKLSAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCi0gICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKLSAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAotICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKLSAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKLSAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAotICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKLSAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCi0gICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAotICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCi0gICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAotICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKLSAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKLSAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKLSAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCi0gICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKLSAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAotICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKLSAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKLSAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAotICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAotICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKLSAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAotICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCi0gICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAotICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKLSAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCi0gICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKLSAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAotICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAotICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAotICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAotICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAotICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCi0gICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAotICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAotICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKLSAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKLSAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsNDYsMCwwLDAsOTQsMCwwLDAsMTE1LDMyLDAsMCwwLDAsCi0gICAgNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LAotICAgIDEsNCwxLDEyLDEsMTYsMSwxOCwxLDIyLDIsMTMsMSwyMSwyLDEyMiwKLSAgICAxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTU3LDAsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLAotICAgIDE0MywxMjksMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsCi0gICAgMTE0LDQ5LDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCi0gICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MCwwLDExNiw2LAotICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAotICAgIDE0NiwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsNywKLSAgICAwLDExNCwxNDYsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwKLSAgICA4NywxMDAsMCwwLDgxLDgyLDg4LDEwMCwwLDAsODMsNDEsNCw3OCwxMjIsMzEsCi0gICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywKLSAgICAxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LAotICAgIDMzLDAsMCwwLDExNCw0NSwwLDAsMCw0MSwxMCwxMTQsMzQsMCwwLDAsCi0gICAgMTE0LDQwLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LAotICAgIDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwKLSAgICAwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDExNCwzOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsMTE5LDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLAotICAgIDE1LDEsMTIsMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsCi0gICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsCi0gICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LAotICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsCi0gICAgMCwwLDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSwKLSAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTMyLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLAotICAgIDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwKLSAgICAyMCwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywKLSAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMiwwLDAsCi0gICAgMCw2OCwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsNCw2LDIsMTIsOCwKLSAgICAxMiwxMiwxMiwyNSwxMiwxMywxMTQsMzIsMCwwLDAsOTksMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKLSAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwKLSAgICA4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksCi0gICAgMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAotICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLAotICAgIDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDMzLDAsMCwwLDQxLAotICAgIDIsMTE0LDE1LDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE0MCwwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjAyLDEsMCwwLDEwMCwwLDkwLDAsMTAwLDEsCisgICAgOTcsMSwxMDAsMiwxMDAsMywxMzIsMCw5MCwyLDEwMCw0LDEwMCw1LDEzMiwwLAorICAgIDkwLDMsMTA1LDAsOTAsNCwxMDUsMCw5MCw1LDcxLDAsMTAwLDYsMTAwLDcsCisgICAgMTMyLDAsMTAwLDcsMTAxLDYsMTMxLDMsOTAsNyw3MSwwLDEwMCw4LDEwMCw5LAorICAgIDEzMiwwLDEwMCw5LDEzMSwyLDkwLDgsNzEsMCwxMDAsMTAsMTAwLDExLDEzMiwwLAorICAgIDEwMCwxMSwxMzEsMiw5MCw5LDcxLDAsMTAwLDEyLDEwMCwxMywxMzIsMCwxMDAsMTMsCisgICAgMTMxLDIsOTAsMTAsMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMSwxMDAsMTYsMTAwLDE3LAorICAgIDEzMiwwLDkwLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTMsMTAwLDIwLDEwMCwyMSwKKyAgICAxNTYsMSwxMDAsMjIsMTAwLDIzLDEzMiwyLDkwLDE0LDEwMCwyNCwxMDAsMjUsMTMyLDAsCisgICAgOTAsMTUsMTAwLDI2LDEwMCwyNywxMzIsMCw5MCwxNiwxMDAsMjgsMTAwLDI5LDEzMiwwLAorICAgIDkwLDE3LDEwMCwzMCwxMDAsMzEsMTMyLDAsOTAsMTgsNzEsMCwxMDAsMzIsMTAwLDMzLAorICAgIDEzMiwwLDEwMCwzMywxMzEsMiw5MCwxOSw3MSwwLDEwMCwzNCwxMDAsMzUsMTMyLDAsCisgICAgMTAwLDM1LDEzMSwyLDkwLDIwLDEwMCwxLDEwMCwxLDEwMCwzNiwxNTYsMiwxMDAsMzcsCisgICAgMTAwLDM4LDEzMiwyLDkwLDIxLDEwMSwyMiwxMzEsMCw5MCwyMywxMDAsOTIsMTAwLDM5LAorICAgIDEwMCw0MCwxMzIsMSw5MCwyNCwxMDAsNDEsMTAwLDQyLDE1NiwxLDEwMCw0MywxMDAsNDQsCisgICAgMTMyLDIsOTAsMjUsMTAwLDQ1LDEwMCw0NiwxMzIsMCw5MCwyNiwxMDAsNDcsMTAwLDQ4LAorICAgIDEzMiwwLDkwLDI3LDEwMCw0OSwxMDAsNTAsMTMyLDAsOTAsMjgsMTAwLDUxLDEwMCw1MiwKKyAgICAxMzIsMCw5MCwyOSwxMDAsNTMsMTAwLDU0LDEzMiwwLDkwLDMwLDEwMCw1NSwxMDAsNTYsCisgICAgMTMyLDAsOTAsMzEsNzEsMCwxMDAsNTcsMTAwLDU4LDEzMiwwLDEwMCw1OCwxMzEsMiwKKyAgICA5MCwzMiw3MSwwLDEwMCw1OSwxMDAsNjAsMTMyLDAsMTAwLDYwLDEzMSwyLDkwLDMzLAorICAgIDcxLDAsMTAwLDYxLDEwMCw2MiwxMzIsMCwxMDAsNjIsMTMxLDIsOTAsMzQsMTAwLDYzLAorICAgIDEwMCw2NCwxMzIsMCw5MCwzNSwxMDAsNjUsMTAwLDY2LDEzMiwwLDkwLDM2LDEwMCw5MywKKyAgICAxMDAsNjcsMTAwLDY4LDEzMiwxLDkwLDM3LDEwMCw2OSwxMDAsNzAsMTMyLDAsOTAsMzgsCisgICAgMTAwLDcxLDkwLDM5LDEwMSwzOSwxMDAsNzIsMjMsMCw5MCw0MCwxMDAsNzMsMTAwLDc0LAorICAgIDEzMiwwLDkwLDQxLDEwMCw3NSwxMDAsNzYsMTMyLDAsOTAsNDIsMTAwLDk0LDEwMCw3OCwKKyAgICAxMDAsNzksMTMyLDEsOTAsNDMsMTAwLDgwLDEwMCw4MSwxMzIsMCw5MCw0NCwxMDAsODIsCisgICAgMTAwLDgzLDEzMiwwLDkwLDQ1LDEwMCwxLDEwMCwxLDEwMiwwLDEwMCw3NywxMDIsNCwKKyAgICAxMDAsODQsMTAwLDg1LDEzMiwxLDkwLDQ2LDEwMCw4NiwxMDAsODcsMTMyLDAsOTAsNDcsCisgICAgMTAwLDg4LDEwMCw4OSwxMzIsMCw5MCw0OCwxMDAsOTAsMTAwLDkxLDEzMiwwLDkwLDQ5LAorICAgIDEwMCwxLDgzLDAsNDEsOTUsOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLAorICAgIDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLAorICAgIDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLAorICAgIDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LAorICAgIDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwKKyAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLAorICAgIDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsCisgICAgMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsCisgICAgOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDc4LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCw0MCwxMDAsNiw2OCwwLDkzLAorICAgIDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwyLDExNCw2LDExNiwxLDEyNCwKKyAgICAwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwyLDEzMSwzLDEsMCwxMTMsCisgICAgNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwxLDEwNiwzLDEzMSwxLDEsCisgICAgMCwxMDAsNSw4MywwLDQxLDcsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsCisgICAgMTE1LDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSw3OCw0MSw0LDExNCwwLDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDQxLDUsMjE4LDcsCisgICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKKyAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAorICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCisgICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsCisgICAgMTY5LDAsMTE0LDEwLDAsMCwwLDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwyNywwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDIsMTAsMSwxMCwxLDIyLDEsMTE0LDEyLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDExNiwKKyAgICAxLDEzMSwxLDEyNCwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LAorICAgIDExNiwxMjEsMTEyLDEwMSwyMTgsMywxMTUsMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksCisgICAgMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsCisgICAgMSw4MywwLDQxLDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwKKyAgICA0NywwLDAsMCwxMTUsMiwwLDAsMCw4LDEsMTE0LDE3LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDU2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwxMiwKKyAgICA4MywwLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKKyAgICAxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLAorICAgIDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywKKyAgICAxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQ4LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNCwwLDk1LDIsCisgICAgMTE2LDAsMTA2LDEsMTMxLDAsMTI0LDAsOTUsMywxMjQsMSwxMjQsMCw5NSw0LAorICAgIDEwMCwwLDEyNCwwLDk1LDUsMTAwLDEsMTI0LDAsOTUsNiwxMDAsMSwxMjQsMCwKKyAgICA5NSw3LDEwMCwwLDgzLDAsNDEsMiw3OCwyMzMsMCwwLDAsMCw0MSw4LAorICAgIDIxOCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwKKyAgICAxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNCwxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwKKyAgICAxMDEsMTE0LDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsCisgICAgMTE0LDExNSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDU3LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDEsMTAsMSwxMCwxLDYsMSw2LDEsNiwxLDEyMiwyMCw5NSwKICAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsCi0gICAgNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4MywKLSAgICA0MSwzLDc4LDExNCw0NSwwLDAsMCw4NCw0MSwxLDExNCwzOCwwLDAsMCwKLSAgICA0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsNDYsMCwwLDAsMTQ0LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LAotICAgIDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMSwwLDEwMCwyLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwzLAotICAgIDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4Myw0MSw0LDc4LDExNCwzMywwLAotICAgIDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywKLSAgICAxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMTE0LDQ1LDAsMCwwLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwKLSAgICA0OCwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLDAsMTQ4LAotICAgIDAsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDEyLDEsMTIyLDI0LAorICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMDYsMiwxMjUsMiwxMjAsNDQsMTE2LDMsMTA2LAorICAgIDQsMTI0LDIsMTMxLDEsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDM4LDEwMCwKKyAgICAxLDgzLDAsMTI0LDMsMTA2LDIsMTI1LDIsMTI0LDIsMTI0LDEsMTA3LDIsMTE0LAorICAgIDE2LDEwMCwyLDgzLDAsMTEzLDE2LDg3LDAsMTAwLDAsODMsMCw0MSwzLDc4LAorICAgIDcwLDg0LDQxLDUsMTE0LDIwLDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwKKyAgICAxMDAsMTAxLDExMCwxMTYsMTE0LDIzLDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LAorICAgIDEwNywxMDUsMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMjEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDEyLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjUsMCwKKyAgICAwLDAsMTE1LDE4LDAsMCwwLDAsMiw4LDEsNiwxLDIsMSwxMCwKKyAgICAxLDgsMSw0LDEsNiwxLDgsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDE2OCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMTYsMiwxMjQsMSw2MCwwLDEyMiwxMzgsMTIwLAorICAgIDEzMiwxMjQsMCwxMDYsMywxNDMsOTYsMSwwLDEyNCwwLDEwNiw0LDEwMCwxLDEwNywKKyAgICAyLDExNSw0OCwxMjQsMCwxMDYsNSwxMjQsMSwxMDcsMiwxMTQsNzIsMTI0LDEsMTI0LAorICAgIDAsOTUsNSwxMjQsMCw0LDAsMTA2LDQsMTAwLDIsNTUsMCwyLDAsOTUsCisgICAgNCwxMDAsMyw4MywwLDEyNCwwLDEwNiw2LDEzMSwwLDExNCw5MiwxMTYsNywxMDAsCisgICAgNCwxMjQsMCwyMiwwLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw4LDEwNiw5LDEwMCwKKyAgICA1LDEzMSwxLDExNCwxMTgsMTI0LDAsNCwwLDEwNiwxMCwxMDAsMiw1NSwwLDIsCisgICAgMCw5NSwxMCw4NywwLDEwMCw2LDgxLDAsODIsMCw4OCwwLDEyNCwwLDEwNiwKKyAgICA4LDEwNiw5LDEzMSwwLDEsMCwxMjQsMCwxMDYsOCwxMDYsMTEsMTMxLDAsMSwKKyAgICAwLDExMywyMCw4NywwLDg3LDAsMTAwLDYsMTE2LDIsMTI0LDEsNjEsMCw4OCwKKyAgICAwLDEwMCw2LDgzLDAsNDEsNywxMjIsMTg1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LAorICAgIDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwKKyAgICAxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LAorICAgIDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsCisgICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDE5LDAsMCwwLDIzMywxLDAsMCwwLDg0LDEyMiwyMywxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCw0MSwxMiwxMTQsMjAsMCwwLDAsMTE0LAorICAgIDI4LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDI0LAorICAgIDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwwLDAsMTE0LDE3LDAsCisgICAgMCwwLDExNCwyMiwwLDAsMCwyMTgsNyw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNCwyNSwwLDAsMCwyMTgsNywxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLAorICAgIDExNCwyNiwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDM0LDAsMCwwLDc3LDAsCisgICAgMCwwLDExNSwzMiwwLDAsMCwwLDYsOCwxLDgsMSwyLDEsMiwKKyAgICAxLDgsMSwyMCwxLDYsMSwxNCwxLDQsMSw4LDEsMTIsMSwxMiwKKyAgICAxLDI0LDIsMTAsMSwxOCwyLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIyLDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLDEyNCwwLAorICAgIDEwNiwyLDE0Myw5OCwxLDAsMTI0LDAsMTA2LDMsMTI0LDEsMTA3LDMsMTE0LDM0LAorICAgIDExNiw0LDEwMCwxLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw1LDEwMCwyLDEwNyw0LAorICAgIDExNSw0OCwxMTYsNiwxMzAsMSwxMjQsMCw0LDAsMTA2LDUsMTAwLDMsNTYsMCwKKyAgICAyLDAsOTUsNSwxMjQsMCwxMDYsNSwxMDAsMiwxMDcsMiwxMTQsMTA4LDEwMCwwLAorICAgIDEyNCwwLDk1LDMsMTI0LDAsMTA2LDcsMTE0LDEwOCwxMjQsMCw0LDAsMTA2LDcsCisgICAgMTAwLDMsNTYsMCwyLDAsOTUsNywxMjQsMCwxMDYsOCwxMDYsOSwxMzEsMCwKKyAgICAxLDAsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMDAsMCw4MywwLAorICAgIDQxLDQsNzgsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDExNCwxOSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsMTAsCisgICAgMTE0LDIwLDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LAorICAgIDIzLDAsMCwwLDIxOCwxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDI0LDAsMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjUsMCwwLDAsMTE0LDIyLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsMzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEwMiwwLDAsMCwxMTUsMjIsMCwwLDAsMCwKKyAgICAxLDgsMSw4LDEsMTAsMSw4LDEsMTQsMSwxNCwxLDEwLDEsNiwKKyAgICAxLDYsMSwxNCwxLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LDEsMTE2LDIsMTI0LDAsCisgICAgMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyMyw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLAorICAgIDEyMywxMjUsNDEsMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNCwxNSwwLDAsCisgICAgMCwyMTgsMiwxMDUsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSwxMTUsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksMTE0LDEsMCwwLDAsMTE0LDAsCisgICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDI3LDAsCisgICAgMCwwLDExNCwzMiwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDM1LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4LDAsMCwwLDUxLAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCw4LDQsNCwyLDgsOCw4LDEyLAorICAgIDgsMjUsOCwxMywxMTQsMTgsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDgsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLAorICAgIDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCwKKyAgICA2LDEwMCw3LDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsCisgICAgMTAsODMsMCw0MSwxMSwyMTgsMTYsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLAorICAgIDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwKKyAgICAxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwyLDc4LDExNCwxOSwwLDAsCisgICAgMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjQsMCwwLDAsNDEsMiwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxMjMsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LAorICAgIDAsNCwwLDEwNiwwLDEwMCwxLDU1LDAsMiwwLDk1LDAsMTAwLDIsODMsCisgICAgMCw0MSwzLDc4LDExNCwzMywwLDAsMCw4NCw0MSwxLDExNCwyNCwwLDAsCisgICAgMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMzQsMCwwLDAsMTI3LDAsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSwxNCwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwKKyAgICAxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwxLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwKKyAgICAwLDQsMCwxMDYsMCwxMDAsMyw1NiwwLDIsMCw5NSwwLDEwMCwwLDgzLAorICAgIDAsNDEsNCw3OCwxMTQsMTksMCwwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLAorICAgIDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwzMywwLDAsMCw0MSwKKyAgICAyLDExNCwyNCwwLDAsMCwxMTQsMzYsMCwwLDAsNDEsMSwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEzMSwwLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDEsMTAsMSw4LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LAorICAgIDEsMTE2LDIsMTI0LDAsMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyOCwKICAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCi0gICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKLSAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCi0gICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsMzgsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwzOSwwLDAsMCw0MSwxLDExNCwKKyAgICAyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsNDAsMCwwLDAsMTM2LDAsMCwwLDExNSwyLDAsMCwKICAgICAwLDAsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKICAgICAxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsCiAgICAgOCwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKLSAgICA0NywwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MywwLAotICAgIDAsMCwxMzYsMCwwLDAsMTE1LDEwLDAsMCwwLDEyLDIsNiwyLDEyLAotICAgIDQsMTIsNCwxMiw1LDExNCw1MywwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE5LDAsMCwwLDExNSwxMCwwLDAsMCw4LDIsNCwyLDgsCisgICAgNCw4LDQsOCw1LDExNCw0MSwwLDAsMCw5OSwwLDAsMCwwLDAsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsCi0gICAgNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsCisgICAgMzYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwyLAorICAgIDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsNiwKKyAgICAxMzIsMCw5MCw1LDEwMCw3LDgzLDAsNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLAogICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKLSAgICAwLDEwMCwwLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLAotICAgIDc4LDQxLDIsMTE0LDE4LDAsMCwwLDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTU5LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI3LDk1LDc3LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsCi0gICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKLSAgICAwLDAsMCwxMjIsMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsMiwwLDg3LDEwMCwwLDAsMTE2LDMsMCwxMDYsCi0gICAgNCwwLDEzMSwwLDAsMSw4OCwxMjQsMCwwLDEwNiwyLDAsMTA2LDUsMCwKLSAgICAxMzEsMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDE2LDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCwKLSAgICAxOCwwLDAsMCwxMTQsNTUsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsMjE4LAotICAgIDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0NiwwLAotICAgIDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsMTYzLDAsMCwKLSAgICAwLDExNSw4LDAsMCwwLDAsMSwzLDEsMjIsMiwxMSwxLDEyMiwyOCwKLSAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw3OSwwLDAsCi0gICAgMCwxMTUsMTcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNDcsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsMTE0LDI5LDAsCi0gICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTcwLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwKLSAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsCi0gICAgMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDU0LDAsMCwwLAotICAgIDE1NywwLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsCi0gICAgNTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTM5LDAsMCwwLDEwMCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsMCwwLDEzNiwwLDAsMjUsMTMxLDAsCi0gICAgMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsCi0gICAgNDMsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxMzUsMCwxMTYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCi0gICAgODMsMCwxMTYsMywwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwKLSAgICAwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwKLSAgICAxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwwLAotICAgIDAsMTM2LDAsMCw2MCwxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LAotICAgIDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICAxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsCi0gICAgMTE1LDExLDAsMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxOTAsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LAotICAgIDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTksMCwwLDAsMTE0LDI4LAotICAgIDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDIxOCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwKLSAgICAxMDIsNDEsMywxMTQsMTUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw2MSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxNzYsMCwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwKLSAgICAxLDE1LDIsMTIsMSwxOCwyLDIyLDEsMTE0LDU2LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsCi0gICAgODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLAotICAgIDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAorICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwwLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsMiwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxNDIsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDYsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDEyMiwKKyAgICAxNiwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMjQsMCw5NSwyLDg3LDAsMTAwLAorICAgIDAsMTE2LDMsMTA2LDQsMTMxLDAsMSwwLDg4LDAsMTI0LDAsMTA2LDIsMTA2LAorICAgIDUsMTMxLDAsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCwxNiwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywKKyAgICAxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDIxOCwxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsMzQsCisgICAgMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSwxNDYsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDIsCisgICAgMSwxNiwyLDEwLDEsMTIyLDI4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLAorICAgIDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICAxLDAsMCwwLDc5LDAsMCwwLDExNSwxNCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMDYsMSwxMzEsMCwxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsCisgICAgMTE0LDQ0LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCwyNiwwLDAsCisgICAgMCwyMTgsNCw5NywxMTQsMTAzLDExNSw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAorICAgIDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDI3LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw0MiwwLDAsMCwxNDAsMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDQyLDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDAsMSwxMjUsMSwxMjEsMTQsMTE2LDAsCisgICAgMTM2LDAsMjUsMCwxMzEsMCwxMjUsMSw4NywwLDExMCwyMCw0LDAsMTE2LDEsCisgICAgMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDEsMTAwLDEsMTA3LDgsMTE0LDEwMiwxMTYsMiwxMDAsMSwxMDcsOCwxMTQsNjYsCisgICAgMTE2LDMsMTM2LDAsMTMxLDEsMTI1LDEsMTEwLDgsMTE2LDQsMTM2LDAsMTMxLDEsCisgICAgMTI1LDEsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDgsMTI1LDIsMTE2LDUsCisgICAgMTA2LDYsMTI0LDEsMTI0LDIsMTMxLDIsMTE2LDAsMTM2LDAsNjAsMCwxMjQsMSwKKyAgICA4MywwLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwKICAgICAxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwKLSAgICAxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCw1NiwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCwxMTQsMzEsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDE1LAotICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTUsMCwwLDAsCi0gICAgMTE1LDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsCi0gICAgMyw1LDIsMTE0LDYzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsCi0gICAgMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsCi0gICAgMSw5Nyw0NiwxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsCi0gICAgMTA4LDExOSw5NywxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLAotICAgIDExNywxMDEsMTEwLDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksCi0gICAgMTE2LDEwNSwxMTEsMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwKLSAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsCi0gICAgMTE0LDEwOSw5NywxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsCi0gICAgOTksMTAxLDExNSwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCwxMCwzMiwzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LAotICAgIDExNCwxMTEsMTAwLDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwKLSAgICAzMiwxMTAsMTExLDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKLSAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTQsMTAsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LDI5LAotICAgIDAsMCwwLDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LDk1LAotICAgIDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwKLSAgICAxMTgsMTAxLDEwMCwyMTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCw2NSwKLSAgICAwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDExNCw0NSwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LDcxLDAsMTI0LAotICAgIDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsMCwxMDAsMywKLSAgICAwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsCi0gICAgMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsCi0gICAgMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsCi0gICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksCi0gICAgODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAotICAgIDQxLDIsMTE0LDY3LDAsMCwwLDExNCw2OCwwLDAsMCw0MSw3LDExNCwxNCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsCisgICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LAorICAgIDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMTM2LDAsNjEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsCisgICAgOTUsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMiw5OSw5OCwxNzMsMCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsCisgICAgNywxMTQsNTEsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDIwLDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsMTgsMCwwLDAsMjE4LAorICAgIDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLDEwMiw0MSwzLAorICAgIDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDQ1LDAsMCwwLDE1OSwwLDAsMCwxMTUsMjQsMCwwLDAsMCw0LAorICAgIDQsMSwyLDEsMTQsMSwxNCwxLDYsMSw4LDEsOCwxLDEwLDIsCisgICAgOCwxLDEyLDIsMTYsMSwxMTQsNDUsMCwwLDAsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEyNSwxLDExNiwxLDEwNiwKKyAgICAyLDEzMSwwLDEsMCwxMjEsMTIsMTI0LDEsMTA2LDMsMTMxLDAsMSwwLDg3LAorICAgIDAsMTEwLDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDQ4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDEwLDg4LDAsMTI0LDEsMTA2LDUsMTMxLDAsMSwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LAorICAgIDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsCisgICAgMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsCisgICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsCisgICAgNDEsNiwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywwLDAsCisgICAgMCwxMTQsMzQsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTc4LDAsMCwwLDExNSwxNCwwLDAsMCwwLDcsOCwxLDgsMSwyLAorICAgIDEsMTIsMSwxNCwzLDYsMiwxMTQsNTYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMTI0LDAsMTI0LDEsMTI0LDIsMTQyLDEsODMsMCwKKyAgICA0MSwxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwKKyAgICA5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwKKyAgICAxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsCisgICAgOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsCisgICAgMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLAorICAgIDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LAorICAgIDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKKyAgICAxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsCisgICAgMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsCisgICAgNDksMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDE5NywwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LAorICAgIDU4LDAsMCwwLDExNCwzMywwLDAsMCw0MSwxLDIxOCw5LDExOCwxMDEsMTE0LAorICAgIDk4LDExMSwxMTUsMTA1LDExNiwxMjEsOTksMSwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNSwwLDAsMCw3MSwwLDAsMCwxMTUsNTQsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTA2LDIsMTI0LDEsMTA3LDUsMTE0LDUwLDEyNCwwLDEwNiwzLAorICAgIDEwMCw2LDEzMSwxLDExNSwzMCwxMDAsMywxMjQsMCwyMywwLDEyNSwwLDExNiw0LAorICAgIDEyNCwwLDEwNiw1LDEyNCwyLDE0MiwwLDExNiwwLDEwNiw2LDEwMCw0LDE0MSwyLAorICAgIDEsMCwxMDAsNSw4MywwLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLDExNSwKKyAgICAxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LDcyLAorICAgIDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywxMTQsCisgICAgMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw0MSwxLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAorICAgIDQxLDIsMTE0LDYwLDAsMCwwLDExNCw2MSwwLDAsMCw0MSw3LDExNCwxNCwKICAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCiAgICAgMTExLDExNSwxMDEsMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKLSAgICA1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDUwLDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLAotICAgIDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDY2LAotICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwzOCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKKyAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw1OSwKKyAgICAwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAogICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCi0gICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIyNSwwLDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDc1LDAsMCwwLDk5LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMDgsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDEyLDEsMTAsMSw4LDEsMTE0LDY4LDAsMCwwLDk5LAogICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKLSAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsMywxMjIsNDksCi0gICAgNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwKLSAgICAxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKLSAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCi0gICAgMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsMCwxMjQsMSwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMDcsNywwLDExNCw0MiwwLDExNiwyLDAsMTAwLDEsMCwKLSAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsODMsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsMTQsMCwwLDAsCi0gICAgMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCwKLSAgICA4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjM1LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwKLSAgICAxNSwxLDE4LDEsOSwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCi0gICAgMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLAotICAgIDAsMCwwLDQxLDIsMTE0LDc5LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDIzMywwLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwKLSAgICAxMywxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKLSAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKLSAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCi0gICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsCi0gICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDIsMCwKLSAgICAxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LAotICAgIDU3LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LAotICAgIDc3LDAsMCwwLDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsNzgsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwyNiwwLDAsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsCisgICAgMiwxMzIsOCwxMjUsMSwxMTYsMCwxMjQsMSwxMzYsMCwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSwzLDEyMiw0OSw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM4LDAsCisgICAgMCwwLDEyNCwxLDExNiwwLDEwNiwxLDEwNyw3LDExNCwyOCwxMTYsMiwxMDAsMSwKKyAgICAxMDYsMywxMjQsMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsCisgICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsMTUsMCwwLAorICAgIDAsNDEsNCwxMTQsMTQsMCwwLDAsMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLAorICAgIDQxLDIsMTE0LDI2LDAsMCwwLDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjE4LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwxMCwxLDEwLDEsOCwxLDEyMiw1MiwKKyAgICA5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsCisgICAgMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDcyLDAsCisgICAgMCwwLDExNCw3MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsNzIsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDIxNiwwLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTIsNSwxMCwxLDExNCw3NCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDMsMCwwLDAsMTE1LDI2LDAsMCwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNSwxLDExNiwwLDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAorICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzgsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTE1LDI4LDExNiwyLDEwMCwxLDEwNiwzLAorICAgIDEyNCwxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLAorICAgIDEyNCwxLDEzMSwyLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKKyAgICA0NiwwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKKyAgICA3MCwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDQxLDEsMTE0LDcyLDAsMCwwLDExNCwxMCwwLDAsCiAgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKICAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCi0gICAgMjQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsOSwKKyAgICAyMjksMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSw4LAogICAgIDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsCiAgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzksCi0gICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKLSAgICA3OSwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExNCwxMDEsMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMjQ0LDAsMCwwLDExNSwKLSAgICA2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDg0LDAsMCwwLDk5LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3MiwKKyAgICAwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAorICAgIDcyLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyMjcsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDEyLDUsMTAsMSwxMTQsNzcsMCwwLDAsOTksCiAgICAgMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwxLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEwNyw2LDAsMTE0LDY3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMjUsMTI1LDMsMCwxMTYsMywwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMjUsODMsMTE2LDQsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLAotICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCi0gICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAotICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsCi0gICAgNSwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwyMTgsNSw5NSwKLSAgICAxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwxOSwwLAotICAgIDAsMCwxMTQsNzgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwwLDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDYsMTUsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCw5MCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNiwxLDAsMCwxMTYsMCwwLDEyNCwwLAotICAgIDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLAotICAgIDEyNCwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3MSwwLDEyMSwxNywwLDEyNCwKLSAgICAxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEwLDE4LDAsCi0gICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMCwxLAotICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwKLSAgICAxMTAsMjMsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTI3LDAsCi0gICAgMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsODMsMTIxLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsNywwLDEyNSwzLDAsODcsMTEwLDI0LDAsNCwxMTYsNSwwLDEwNywxMCwKLSAgICAwLDExNCwxNjYsMCwxLDEsMSwxMDAsMywwLDEyNSwzLDAsODksMTEwLDEsCi0gICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsCi0gICAgNTksMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDI0MSwwLDEsMSwxLDEyNCwKLSAgICAxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMDAsNCwwLDEwNiw5LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDEwMCw1LDAsMTA2LDksMCwxMjQsMywKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLAotICAgIDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwwLDEzMSwyLDAsODMsMTAwLDAsMCwKLSAgICA4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAotICAgIDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLAotICAgIDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw5MiwwLDAsMCwyMTgsCi0gICAgOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwKLSAgICAxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LDEsMCwwLAotICAgIDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCw1MCwwLDAsMCwKLSAgICA0MSw1LDExNCw4OSwwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgMTYsMSwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywKLSAgICAxLDE3LDEsMTMsMSw1LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSwxMCw0LDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywKLSAgICAxLDEyLDEsMTMsMiwyMSwyLDExNCwxMDEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAotICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKLSAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKLSAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKLSAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAotICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKLSAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCi0gICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKLSAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCi0gICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCi0gICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKLSAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKLSAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKLSAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAotICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMTA0LDAsMCwKLSAgICAwLDExNCwyNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAotICAgIDExNCwxNSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwKLSAgICA5OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLAotICAgIDExNCwyOSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDY1LDEsCi0gICAgMCwwLDExNSwxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsCi0gICAgMSwxNywxLDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLAotICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKLSAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw1MiwKLSAgICAxLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAyLAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDgsMCwwLDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsCi0gICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKLSAgICAwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsCi0gICAgMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwKLSAgICAxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LAotICAgIDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAxLDExLDAsMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsCi0gICAgMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LAotICAgIDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsCi0gICAgMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsCi0gICAgMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLAotICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwKLSAgICAxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLAotICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsCi0gICAgMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwKLSAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsCi0gICAgOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKLSAgICAxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwKLSAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwKLSAgICAxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCi0gICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsCi0gICAgMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywKLSAgICAxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwKLSAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LAotICAgIDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKLSAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiwKLSAgICA5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAotICAgIDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsCi0gICAgMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LAotICAgIDEwNSwxMDMsMTA1LDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDMsMCwwLDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICAwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLAotICAgIDAsOTUsMiwwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwKLSAgICAxMTQsNDgsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LAotICAgIDQsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsCi0gICAgMCw5NSw2LDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LAotICAgIDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwKLSAgICAwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSwKLSAgICA5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsCi0gICAgOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDYsMTE0LDE5LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwxMDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDExNiwxLDAsMCwxMTUsMTQsCi0gICAgMCwwLDAsMCwyLDksMSw5LDEsOSwxLDksMSwyMSwzLDksCi0gICAgMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDcsMCwwLDAsCi0gICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxMDMsMiwKLSAgICAwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCwwLDAsMTA3LDksMCwKLSAgICAxMTQsNzYsMCwxMjQsMSwwLDEwNiw0LDAsMTAwLDMsMCwxMDYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMTYsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTAwLDQsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwKLSAgICAxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAotICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywKLSAgICAxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNTAsMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDIxOCw2LDk3LDExMiwKLSAgICAxMTIsMTAxLDExMCwxMDAsMTE0LDExMCwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSw5NSw5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MiwwLDAsMCwxMjgsCi0gICAgMSwwLDAsMTE1LDE2LDAsMCwwLDAsMSwxNSwxLDIxLDEsMTUsMSwKLSAgICAyNSwxLDE1LDEsMTIsMSwxMywxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsCi0gICAgMTIxLDEwNywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LAotICAgIDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDIsCi0gICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwNywyLDAsMTExLDExNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiw0LDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEyNCwxLDAsMTA2LDUsMCwxMDcsMiwwLDgzLDg3LDExMCwyMiwwLDQsMTE2LAotICAgIDYsMCwxMDcsMTAsMCwxMTQsMTQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwKLSAgICAxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5NiwwLDAsMCw0MSwzLDExNCwKLSAgICAxOSwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsOTAsNCwxMTUsMTA5LDExNSwKLSAgICAxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMzgsMSwwLDAsMTE1LDIwLDAsMCwKLSAgICAwLDAsMSw5LDEsMywxLDE4LDEsMTgsMSwxOCwxLDE1LDEsMTgsCi0gICAgMSwyMCwxLDEzLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKLSAgICA5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDc4LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNzgsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTE0LDc4LDAsMTE2LDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDU3LDAsMTE2LDQsMCwxMzAsMSwwLDExNiwzLDAsMTA2LDUsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSw3OCw0MSw2LDExNCwxMTIsMCwwLAotICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTExLDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LAotICAgIDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExNiwwLDAsMCwxNTAsMSwwLAotICAgIDAsMTE1LDEyLDAsMCwwLDAsMiwxNSwxLDI0LDEsMTIsMSw2LDEsCi0gICAgMjEsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAotICAgIDEsMTE0LDExMiwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsMTE2LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTU5LDEsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNSwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDgzLDEyNCwwLAotICAgIDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0Niw3OCwyMTgsMSwKLSAgICA0NiwxMTQsMzMsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDEsMSwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwxNjMsMSwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCwzLDE1LDEsMjAsMiwxMjIsMTcsNzcsMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSwxLDExNCwxMTEsMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwxLDEyNCwwLDEzMSwKKyAgICAyLDEyNSwyLDEyNCwxLDExNiwxLDEwNiwyLDEwNyw2LDExNCw1MCwxMTYsMSwxMDYsCisgICAgMiwxMjQsMSwyNSwwLDEyNSwzLDExNiwzLDEyNCwyLDEyNCwzLDEzMSwyLDEsCisgICAgMCwxMTYsMSwxMDYsMiwxMjQsMSwyNSwwLDgzLDAsMTE2LDQsMTI0LDIsMTMxLAorICAgIDEsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDEyOCw3NiwxMTEsOTcsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDMyLDEwNSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAorICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LDIxOCwxNiwKKyAgICAxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTQsMTQsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCw1LAorICAgIDk1LDEwMSwxMjAsMTAxLDk5LDIxOCw1LDk1LDEwOCwxMTEsOTcsMTAwLDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsNiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTUsMTE1LDEwNCwxMDUsMTA5LDIzOSwwLDAsMCwxMTUsMTIsMCwwLAorICAgIDAsMCw2LDEwLDEsMTAsMSwxMCwxLDEwLDEsMTAsMiwxMTQsODQsMCwKKyAgICAwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMzUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIxNiwwLDAsMCwxMTYsMCwxMjQsMCwKKyAgICAxMDAsMSwxMDAsMCwxMzEsMywxMjUsMSwxMTYsMSwxMjQsMSwxMDAsMiwxMzEsMiwKKyAgICAxMTQsNTQsMTIxLDEwLDEyNCwxLDEwNiwyLDEyNCwwLDEzMSwxLDgzLDAsNCwwLAorICAgIDExNiwzLDEwNywxMCwxMTQsNTIsMSwwLDEsMCwxLDAsODksMCwxMTAsMiwKKyAgICA4OCwwLDEyMSwxMCwxMjQsMCwxMDYsNCwxMjUsMiw4NywwLDExMCwyMCw0LDAsCisgICAgMTE2LDUsMTA3LDEwLDExNCw4NCwxLDAsMSwwLDEsMCw4OSwwLDExMCwxOCwKKyAgICA4OCwwLDEyNCwyLDEwMCwwLDEwNyw5LDExNCwxMDIsMTE2LDYsMTI0LDIsMTMxLDEsCisgICAgODMsMCwxMjEsMTAsMTI0LDAsMTA2LDcsMTI1LDMsODcsMCwxMTAsMjQsNCwwLAorICAgIDExNiw1LDEwNywxMCwxMTQsMTM2LDEsMCwxLDAsMSwwLDEwMCwzLDEyNSwzLAorICAgIDg5LDAsMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDgsMTI1LDQsODcsMCwKKyAgICAxMTAsNTAsNCwwLDExNiw1LDEwNywxMCwxMTQsMTk4LDEsMCwxLDAsMSwwLAorICAgIDEyNCwxLDEwMCwwLDEwNyw4LDExNCwxODIsMTAwLDQsMTA2LDksMTI0LDMsMTMxLDEsCisgICAgODMsMCwxMDAsNSwxMDYsOSwxMjQsMywxMjQsMSwxMzEsMiw4MywwLDg5LDAsCisgICAgMTEwLDE0LDg4LDAsMTAwLDYsMTA2LDksMTI0LDMsMTI0LDQsMTMxLDIsODMsMCwKKyAgICAxMDAsMCw4MywwLDQxLDcsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsOTUsOTUsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKKyAgICAyNTAsMSw2MywxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNjIsNDEsMTAsMTE0LDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDg2LDAsCisgICAgMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwyMTgsOCw5NSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSwyMTgsMTQsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKKyAgICAxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwyMTgsMjIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSwxMTQsCisgICAgMSwwLDAsMCwyMTgsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsMTE0LDM4LAorICAgIDAsMCwwLDQxLDUsMTE0LDgzLDAsMCwwLDIxOCw2LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE0LDgyLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsOCwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCwyNTUsMCwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxMiwxLAorICAgIDEwLDQsMiwxLDEwLDEsMTQsMSw2LDEsMiwxLDEwLDEsMTQsMSwKKyAgICA2LDIsOCwxLDgsNCwyLDEsMTAsMSwxNCwxLDEwLDEsMiwxLAorICAgIDEwLDEsMTQsMSw4LDEsMTAsMiwxOCwyLDExNCw5NSwwLDAsMCw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDY0LDAsMCwwLDExNSwzNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLAorICAgIDIsMTAwLDEsMTAwLDIsMTMyLDAsOTAsMywxMDAsMywxMDAsNCwxMzIsMCw5MCwKKyAgICA0LDEwMCw1LDEwMCw2LDEzMiwwLDkwLDUsMTAwLDcsODMsMCw0MSw4LDIxOCwKKyAgICAxNyw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLAorICAgIDEwOCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgOTUsMCwxMjQsMSwxMDYsMSwxMjQsMCw5NSwyLDEwMCwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwzLDIxOCw3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCw4OSwwLDAsCisgICAgMCwyMTgsNSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDExNCwyNiwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDI3LDAsMCwwLDM3LDEsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMSw2LDEsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwKKyAgICAxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCisgICAgOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjgsMCwwLDAsMTAwLDEsMTI0LDAsMTA2LAorICAgIDAsOTUsMSwxMjQsMCwxMDYsMiwxMTYsMywxMDYsNCwxMjQsMCwxMDYsMCwxMDYsCisgICAgNSw2MCwwLDEwMCwwLDgzLDAsNDEsMiw3OCw4NCw0MSw2LDExNCw5OCwwLAorICAgIDAsMCwyMTgsMTMsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDUsMTEwLAorICAgIDEwMywxMTQsOTcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwKKyAgICAxMTQsMTUsMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ4LDAsMCwwLAorICAgIDQxLDEsMCwwLDExNSw0LDAsMCwwLDAsNCw4LDEsMTIyLDI3LDk1LAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSwKKyAgICA0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDE3LDAsMCwwLDcxLDAsMCwwLDExNSwKKyAgICA5OCwwLDAsMCwxMjIsODIsMTI0LDAsMTA2LDAsMTI1LDIsMTE2LDEsMTAwLDEsCisgICAgMTAwLDIsMTMyLDAsMTI0LDEsNjgsMCwxMzEsMSwxMzEsMSwxMTQsNjQsMTIxLDE0LAorICAgIDExNiwyLDEwNiwzLDEyNCwyLDEwNiw0LDYxLDAsODcsMCwxMTMsODAsNCwwLAorICAgIDExNiw1LDEwNywxMCwxMTQsNjAsMSwwLDEsMCwxLDAsODksMCwxMTMsODAsCisgICAgODgsMCwxMTAsMTYsMTE2LDYsMTAwLDMsMTI0LDIsMTA2LDQsMTI0LDIsMTA2LDcsCisgICAgMTMxLDMsMSwwLDg3LDAsMTAwLDAsMTAwLDQsMTI0LDAsMTA2LDAsOTUsOCwKKyAgICA4OCwwLDEwMCwwLDgzLDAsNDEsNSw3OCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMjIsCisgICAgMCwwLDAsMTI0LDAsOTMsMTQsMTI1LDEsMTI0LDEsMTAwLDAsMTA3LDksODYsCisgICAgMCwxLDAsMTEzLDIsMTAwLDAsODMsMCw0MSwxLDc4LDExNCwxMCwwLDAsCisgICAgMCw0MSwyLDkwLDIsNDYsNDgsOTAsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsCisgICAgMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw1MSwxLDAsMCwxMTUsMiwwLDAsMCw0LAorICAgIDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LAorICAgIDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LAorICAgIDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwKKyAgICAxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLDExNCwxMjUsMzIsMzUsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsOTgsMCwwLDAsMjE4LDMsOTcsMTEwLAorICAgIDEyMSwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxNSwwLDAsMCwKKyAgICAxMTQsNTQsMCwwLDAsMTE0LDY4LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgOTksMCwwLDAsNDEsMywxMTQsMjYsMCwwLDAsMTE0LDQ5LDAsMCwwLAorICAgIDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsNTAsMCwwLDAsNDgsMSwwLDAsMTE1LDE4LDAsCisgICAgMCwwLDAsMSwyLDEsNiwxLDE4LDEsMiwxLDE0LDEsMTQsMSwKKyAgICA4LDIsMjAsMiwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCwKKyAgICA5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKKyAgICA3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCisgICAgMCwwLDExNCwyNywwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwxMTQsOTYsMCwwLDAsMzUsMSwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDk2LDAsMCwwLDk5LDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsCisgICAgMCwwLDAsMTE1LDExNCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsCisgICAgMTAwLDEsOTAsMywxMDAsMiwxMDAsMiwxMDAsMiwxMDAsMywxNTYsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMiw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDEsNywxMDAsMTAsMTAwLDExLDEzMiwwLDEzMSwxLAorICAgIDkwLDgsMTAxLDgsMTA2LDksMTAwLDEyLDEwMCwxMSwxMzIsMCwxMzEsMSw5MCw4LAorICAgIDEwMSw3LDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDcsMTAwLDE1LAorICAgIDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwxMSwxMDEsMTEsMTA2LDksMTAwLDE3LDEwMCwxNiwKKyAgICAxMzIsMCwxMzEsMSw5MCwxMSwxMDAsMiw4MywwLDQxLDE4LDIxOCwxMCw3NywxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLAorICAgIDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCwzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LAorICAgIDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLAorICAgIDk5LDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsCisgICAgMTE3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTYsMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwKKyAgICAxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwKKyAgICAxMDEsMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsCisgICAgMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLAorICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsCisgICAgNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsCisgICAgMzIsMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwKKyAgICAxMDUsMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLAorICAgIDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLAorICAgIDMyLDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSwKKyAgICA5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLAorICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsCisgICAgMTAyLDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLAorICAgIDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLAorICAgIDEwNSwxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsCisgICAgMTE2LDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsCisgICAgMTA1LDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsCisgICAgOTYsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSwKKyAgICA5OCwxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgOTYsOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsCisgICAgMTE2LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLAorICAgIDExNSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTUsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCwKKyAgICA5OSwxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LAorICAgIDEwMSwxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCisgICAgMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwKKyAgICAxMTUsMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LAorICAgIDExNywxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LAorICAgIDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEyMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsCisgICAgMTA5LDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksCisgICAgMTAsMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwKKyAgICAxMTEsMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LAorICAgIDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksCisgICAgMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLAorICAgIDEwOCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLAorICAgIDExNiw5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LAorICAgIDk4LDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwKKyAgICAxMjEsMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiw5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCw0MSwzLAorICAgIDIxOCw2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDEwMSwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTksMywwLDAsMCwzLDAsMCwwLDYsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNTQsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgOTUsMCwxMjQsMiwxMjQsMCw5NSwxLDEyNCwzLDEyNCwwLDk1LDIsMTI0LDQsCisgICAgMTI0LDAsOTUsMywxMjQsNSwxMTQsMzIsMTAzLDAsMTEwLDIsMTAwLDAsMTI0LDAsCisgICAgOTUsNCwxMDAsMSwxMjQsMCw5NSw1LDEwMCwwLDEyNCwwLDk1LDYsMTAwLDAsCisgICAgODMsMCw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LDAsMCwwLDExNCw5MywwLAorICAgIDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMDQsMCwwLDAsMjE4LDI2LDExNSwxMTcsCisgICAgOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDQxLDYsMTE0LDI2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTMsMCwwLAorICAgIDAsMTE0LDEwMywwLDAsMCwxMTQsMTA0LDAsMCwwLDExNCwxMDUsMCwwLDAsCiAgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAotICAgIDExNywwLDAsMCwxNzEsMSwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKLSAgICAyMyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSw5NSwKLSAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDEsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCw5OCwxMTEsMTExLDEwOCwKLSAgICAxMTQsMTExLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCw1LDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwxMTQsMTE3LDAsMCwwLDE3NSwxLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDIsNDEsMTIsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw1MiwwLAotICAgIDAsMCwxMTQsMTE4LDAsMCwwLDIxOCw4LDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDExNiwKLSAgICAxMjEsMTE0LDExNiwwLDAsMCwyMTgsNiwxMTUsMTAxLDExNiwxMTYsMTAxLDExNCwxMTQsMTIzLAotICAgIDAsMCwwLDExNCwxMTcsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMDYsMCwwLAotICAgIDAsNzksMSwwLDAsMTE1LDIwLDAsMCwwLDEyLDM1LDYsMiwxNSwxLAotICAgIDE1LDExLDEyLDEwLDEyLDEyLDE4LDksMjEsNCwxOCw4LDE4LDQsMTE0LDEwNiwKLSAgICAwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsOTksMiwwLAotICAgIDAsMCwyLDAsMCwwLDYsMCwwLDAsMTUsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIxNywwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMzEsMiwwLDExNCwxMTAsMCwxMTYsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsCi0gICAgMzMsMCwxMTYsMiwwLDEzMCwxLDAsMTE2LDEsMCwxMDYsMywwLDEyNSw0LAotICAgIDAsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDcwLDAsMTI0LDQsMCwKLSAgICAxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMzEsMSwxLDgzLDEyNCwzLDAsCi0gICAgMTE0LDgyLDAsMTAzLDAsMCwxMTAsMywwLDEwMCwyLDAsMTI1LDUsMCwxMjQsCi0gICAgNCwwLDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEwMCw0LDAsMTI0LDUsCi0gICAgMCwxMzEsMSwyLDgzLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwxOTIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMzEsMiwwLDExNCwxODYsMCwKLSAgICAxMjEsMTksMCwxMjQsMSwwLDEwNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwKLSAgICAzLDAsODcsMTEzLDE5MiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTgyLDAsCi0gICAgMSwxLDEsMTAwLDIsMCwxMjUsMywwLDg5LDExMywxOTIsMCw4OCwxMTAsNiwKLSAgICAwLDEwMCw2LDAsMTI1LDMsMCwxMTYsNiwwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICAxMDAsNywwLDEyNCwyLDAsMTAwLDUsMCwxMjQsMywwLDEzMSwyLDIsODMsCi0gICAgNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsCi0gICAgMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LDkwLDEyLDEwMywxMDEsMTE2LDk1LDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCwxMTQsOTksMCwwLDAsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTA5LDAsMCwwLDcwLDExNCwxMDcsMCwwLDAsNDEsNywxMTQsCi0gICAgNCwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMjAsMCwwLDAsMjE4LDIzLAotICAgIDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwOSwwLDAsMCwxMTQsNzcsMCwwLAotICAgIDAsMTE0LDEwNiwwLDAsMCw0MSw2LDExNCwxNSwwLDAsMCwxMTQsOTksMCwKLSAgICAwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjgsMCwwLAotICAgIDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg1LDAsMCwwLDE4MCwxLDAsCi0gICAgMCwxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTIsMSw2LDEsOSwyLAotICAgIDEyLDEsMTYsMSwxOCwxLDE1LDEsNywyLDEyLDEsMTUsMSwzLDEsCi0gICAgMTksMSwxMywxLDE0LDMsNiwyLDExNCw4NSwwLDAsMCw5OSwzLDAsCi0gICAgMCwwLDAsMCwwLDAsOCwwLDAsMCw1MywwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTE4LDEsMCwwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMjUsMywwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMzMsCi0gICAgMCwxLDEsMSw4OSwxMTAsMTcsMCw4OCwxMjQsMywwLDEwMCwwLDAsMTA3LAotICAgIDksMCwxMTQsNTAsMCwxMjQsMywwLDgzLDEyNCwwLDAsMTA2LDIsMCwxMjUsCi0gICAgNCwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDUsMCwxMjEsMTMsCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwKLSAgICAxLDAsMTA3LDEwLDAsMTE0LDEwNCwwLDEsMSwxLDg5LDExMCwxLDAsODgsCi0gICAgMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSw1LDAsODcsMTEwLDI0LDAsCi0gICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxNDQsMCwxLDEsMSwxMDAsMCwwLAotICAgIDEyNSw1LDAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDgsCi0gICAgMCwxMTQsMjE4LDAsMTI0LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDIxMiwwLAotICAgIDEyMSwxMywwLDEyNCwxLDAsMTA2LDUsMCwxMjUsMiwwLDg3LDExMywyMTgsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDIwOCwwLDEsMSwxLDEwMCwwLDAsCi0gICAgMTI1LDIsMCw4OSwxMTMsMjE4LDAsODgsMTEwLDYsMCwxMjQsNSwwLDEyNSwyLAotICAgIDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNiwwLDEyNSw2LDAsODcsMTEwLDI0LAotICAgIDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwxLDEsMSwxLDEsMTAwLDAsCi0gICAgMCwxMjUsNiwwLDg5LDExMCwxLDAsODgsMTIxLDE5LDAsMTE2LDcsMCwxMjQsCi0gICAgMCwwLDEwNiw4LDAsMTMxLDEsMCwxMjUsNywwLDg3LDExMCwyNCwwLDQsCi0gICAgMTE2LDEsMCwxMDcsMTAsMCwxMTQsNDcsMSwxLDEsMSwxMDAsMCwwLDEyNSwKLSAgICA3LDAsODksMTEwLDEsMCw4OCwxMTYsOSwwLDEyNCw0LDAsMTI0LDEsMCwKLSAgICAxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMSwxMjUsMywwLDEyNCw1LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCw4NywxLDEwMCwyLDAsMTEwLDMsMCwxMDAsMywKLSAgICAwLDEyNCwzLDAsOTUsMTAsMCwxMjQsNiwwLDEyNCwzLDAsOTUsMTEsMCwKLSAgICAxMjQsNywwLDEyNCwzLDAsOTUsMTIsMCwxMjQsMywwLDgzLDQxLDQsNzgsCi0gICAgMTE0LDEwNywwLDAsMCw3MCw4NCw0MSwxMywxMTQsOTUsMCwwLDAsMTE0LDk2LAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTgsMCwKLSAgICAwLDAsOTAsNyw5NSw3OSw4Miw3Myw3MSw3Myw3OCwyMTgsMTAsOTUsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMjE4LDQsMTA4LDEwNSwxMTUsMTE2LDIxOCw4LDk1LAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxMDYsMCwwLDAsMTE0LDExMSwwLDAsCi0gICAgMCwxMTQsMTE2LDAsMCwwLDExNCwxMTAsMCwwLDAsNDEsOCwxMTQsODksMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDg4LDAsMCwKLSAgICAwLDExNCwxNSwwLDAsMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAotICAgIDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIwOSwxLDAsMCwKLSAgICAxMTUsNzIsMCwwLDAsMCwyLDMsMSwxMywxLDEzLDEsNSwyLDEyLAotICAgIDEsNCwyLDksMSwxMiwxLDMsMSwxMywxLDEzLDIsNSwxLDMsCi0gICAgMSwxMywxLDEzLDEsMTEsMSwxMiwxLDEyLDEsMywxLDEzLDEsMTMsCi0gICAgMSwxNCwyLDYsMSwzLDEsMTMsMSwxMywxLDExLDEsMywxLDE5LAotICAgIDEsMTMsMSwxMSwyLDIxLDEsMjcsMSw5LDEsOSwxLDExNCwxMzIsMCwKLSAgICAwLDAsMjE4LDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw3MCw5OSwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsNTQsMiwwLDAsMTI0LDIsMCwxMTUsMzAsMCwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw2NywwLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwKLSAgICAwLDk1LDIsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LAotICAgIDY2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSw5NywwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDIyMSwwLDEyNCwwLDAsMTA2LDQsMCwxMjUsMywKLSAgICAwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxODcsMCwxMjQsMCwwLAotICAgIDEwNiw1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxODcsMCwxMTYsNiwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMTUxLDAsMTE2LDcsMCwxMzAsMSwwLDExNiw2LAotICAgIDAsMTA2LDgsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDksMCwxMjQsNCwwLAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LDMsMCw5NSwKLSAgICAxMCwwLDEyMSwxMywwLDEyNCwzLDAsMTI0LDEsMCw5NSwxMSwwLDg3LDExMCwKLSAgICAxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIwLDAsMSwxLDEsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTEsMCwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTAwLDMsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAzMiwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDEyLDAsMTI0LDEsMCw5NSwxMywKLSAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMzEsMSwxLAotICAgIDEsMSw4OSwxMTAsMSwwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICA5NSwxNCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjUsCi0gICAgMSwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk2LDEsMTE2LAotICAgIDAsMCwxMjQsMSwwLDEwMCw0LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMTQ4LDEsMTI0LDAsMCwxMDYsNSwwLDEwMCwwLDAsCi0gICAgMTA3LDksMCwxMTQsMTQ4LDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwKLSAgICAxLDAsOTUsMTUsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsCi0gICAgMTE0LDE0NywxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDAsMCwxMDYsMTYsCi0gICAgMCwxMTQsNTAsMiwxMjQsMiwwLDExNSwxODcsMSwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTAwLDUsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAyMjQsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxNywwLDEyNCwxLDAsOTUsMTgsCi0gICAgMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDIyMywxLDEsCi0gICAgMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsMjU0LDEsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsNTAsMiwxMjQsMCwwLDEwNiwxOSwwLDEwMCwwLDAsMTA3LDksCi0gICAgMCwxMTQsNTAsMiwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxOSwwLDEyNCwxLDAsCi0gICAgOTUsMjAsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDQ5LAotICAgIDIsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCi0gICAgMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwxMSw5NSw5NSwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE0LDEzMSwwLDAsMCwxMTQsOTgsMCwwLAotICAgIDAsMTE0LDEyOSwwLDAsMCw0MSwyMSwxMTQsNiwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMTE0LDEsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCw5OSwwLDAsCi0gICAgMCwxMTQsMTEwLDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwKLSAgICAyMTgsMTYsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMjE4LDcsOTUsOTUsMTEwLDEwMSwxMTksOTUsOTUsOTAsNSw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwxMTQsOTEsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTM0LDAsMCwKLSAgICAwLDExNCw5NSwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwxMTcsMCwwLDAsCi0gICAgMTE0LDEwNywwLDAsMCwxMTQsOTgsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDQxLDUsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICAxMTQsMTMzLDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCwKLSAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTcsMTE2LDExNiwKLSAgICAxMTQsMTE1LDI1NCwxLDAsMCwxMTUsOTIsMCwwLDAsMCw0LDMwLDEsMywKLSAgICAxLDE2LDEsMTMsMSw1LDIsMzAsMSw5LDEsMTIsMiwxNSwxLDEyLAotICAgIDEsNiwxLDksMiwxNSwxLDEyLDEsMywxLDEzLDEsMTMsMSw1LAotICAgIDIsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzLDEsMTMsMSwxMywKLSAgICAxLDUsMiwzMCwxLDE1LDEsMywxLDE2LDEsMTMsMSw1LDIsOSwKLSAgICAxLDMwLDEsMywxLDE2LDEsMTMsMSw1LDIsMzAsMSwxNSwxLDMsCi0gICAgMSwxNiwxLDEzLDEsNSwxLDExNCwxMzcsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDIsMCwwLDAsNSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTI5LDAsMCwwLDEwMCwxLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDEsMCwxMDAsMiwwLDEzMSwyLDAsMTE0LDQ1LDAsMTI0LDAsCi0gICAgMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsCi0gICAgMTEwLDQwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDMsMCwxMzEsCi0gICAgMiwwLDExNCw4NSwwLDExNiwzLDAsMTA2LDQsMCwxMDAsNCwwLDExNiw1LAotICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwyLDEsMSwxMjQsMSwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMTEyLDAsMTE2LDYsMCwxMjQsMCwwLDEwNiw3LDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDExNiw4LDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsMSwxMjQsMSwwLDgzLDQxLDcsMTIyLDQzLDY3LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTExLDExOCwxMDUsMTAwLDEwMSwxMDAsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksNDYsNzgsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTIyLDg3LDExNSwxMTYsOTcsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDUsMTEwLAotICAgIDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsNTEsNDYsNTQsNDQsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwxMTUsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMDEsMTIwLAotICAgIDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsCi0gICAgMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSwKLSAgICA5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDkwLDEwLDExNSwxMTYsCi0gICAgOTcsOTksMTA3LDEwOCwxMDEsMTE4LDEwMSwxMDgsMjMzLDIsMCwwLDAsNDEsOSwxMTQsCi0gICAgNCwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEzOCwwLDAsMCwyMTgsOSwKLSAgICA5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LDk3LDExNCwxMTAsMjE4LAotICAgIDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsODcsOTcsMTE0LDExMCwKLSAgICAxMDUsMTEwLDEwMywxMTQsMTYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzcsMCwKLSAgICAwLDAsNDEsMiwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksNTgsCi0gICAgMiwwLDAsMTE1LDIwLDAsMCwwLDAsMyw2LDEsMTgsMywyMSwxLAotICAgIDE4LDEsOSwyLDEzLDEsMTIsMSwxNSwxLDEzLDEsMTE0LDE0NCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNDksMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMjEsMCwxMDAsMiwwLDExMCw2LDAsCi0gICAgMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTA3LDgsMCwxMTQsOTUsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCw3MywwLDEwMCwzLDAsMTA2LDMsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsODMsMTAwLDQsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICAxMDYsMiwwLDEzMSwyLDAsODMsMTEwLDUwLDAsMTI0LDAsMCwxMDYsNCwwLAotICAgIDExNCwxMjMsMCwxMDAsNSwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTMxLDIsMCw4MywxMDAsNiwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDgzLDEwMCwxLDAsODMsCi0gICAgNDEsNywxMjIsMzgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsCi0gICAgMTAxLDExMiwxMTQsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMTQsOTMsMCwwLDAsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwxOCwKLSAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMTI1LAotICAgIDQxLDYyLDQxLDUsMTE0LDE1LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDk5LAotICAgIDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTE3LDAsMCwwLDQxLDIsMTE0LAotICAgIDg4LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsOTcsMCwwLDAsNzYsMiwwLAotICAgIDAsMTE1LDE2LDAsMCwwLDAsMywzMCwxLDE1LDEsMTUsMSwxMywyLAotICAgIDIyLDIsOSwxLDE5LDIsMTE0LDk3LDAsMCwwLDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw0LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwyNTMsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsMTE2LDEsCi0gICAgMCwxMDYsMiwwLDEzMSwwLDAsMSwxMTYsMywwLDEyNCwyLDAsMTMxLDEsCi0gICAgMCwxNDMsMjA4LDAsMSwxMTYsNCwwLDEwNiw1LDAsMTA2LDYsMCwxMjQsMiwKLSAgICAwLDEzMSwxLDAsMTI0LDEsMCwxMDcsOSwwLDExNCw4OSwwLDEwMCwxLDAsCi0gICAgMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsOCwwLDEyNCwKLSAgICAzLDAsMTAwLDIsMCwxMjQsMiwwLDEzMSwxLDEsMTMwLDEsMCwxMjQsMCwKLSAgICAwLDEwNiw5LDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNjMsMCwxMjQsMCwwLAotICAgIDEwNiwxMCwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTQwLDAsMTE2LDgsMCwxMDAsCi0gICAgNCwwLDEwMCwyLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwxLDEsMTMwLDEsCi0gICAgMCwxMTYsMTEsMCwxMjQsMCwwLDEyNCwxLDAsMTAwLDUsMCwxMDAsNiwwLAotICAgIDEzMSwyLDEsMSwxMjQsMSwwLDgzLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsCi0gICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDExNiwxMiwwLDEyNCwwLAotICAgIDAsMTA2LDksMCwxMDAsNywwLDEzMSwyLDAsMTE1LDIxOSwwLDEyNCwwLDAsCi0gICAgMTA2LDksMCwxMDYsMTMsMCwxMjQsMiwwLDEzMSwxLDAsMSwxMTAsMTYsMCwKLSAgICAxMjQsMCwwLDEwNiw5LDAsMTA2LDE0LDAsMTI0LDEsMCwxMzEsMSwwLDEsCi0gICAgODcsMTAwLDMsMCw4MSw4Miw4OCwxMTYsNCwwLDEwNiw1LDAsMTI0LDIsMCwKLSAgICAyNSw4Myw0MSw4LDEyMiw1MSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTA1LAotICAgIDExNSwxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEyMiwzMCwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTQsMTUsMCwwLDAsNzgsMTIyLAotICAgIDE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICAxMzMsMCwwLDAsODQsMTE0LDEzOSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLAotICAgIDAsMTE0LDU3LDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LAotICAgIDEwOCwxMTEsOTksMTA3LDExNCw1NCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDc3LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMzcsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzksMCwwLDAsNDEsNCwxMTQsODgsMCwwLDAsMTE0LAotICAgIDg5LDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwKLSAgICAwLDAsOTMsMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw5LDEsMTAsCi0gICAgMSwxMywxLDI0LDEsMTUsMSwxOCwxLDE1LDEsMTUsMSwyMSwyLDE5LAotICAgIDEsNCwxLDE5LDEsMTgsNCwxOSwyLDIzLDEsMTE0LDg2LDAsMCwwLAotICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDI3LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwzLDEsMCwwLDEyNCwwLDAsMTA2LDAsMCwKLSAgICAxMDYsMSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDEsMTE2LDMsMCwKLSAgICAxMDYsNCwwLDEyNCwwLDAsMTA2LDIsMCwyNSwxMjUsMSwwLDExNiw1LDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDk2LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLAotICAgIDAsOTUsNiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsCi0gICAgOTUsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiw1LDAsMTI0LDEsMCwKLSAgICAxMDAsMiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDE5NywwLDEyMSw1NiwwLDEyNCwxLDAsMTA2LDgsMCwxMjQsMSwwLDk1LDksCi0gICAgMCwxMTYsMTAsMCwxMjQsMSwwLDEwMCwzLDAsMTMxLDIsMCwxMTUsMTc1LDAsCi0gICAgMTI0LDAsMCwxMDYsMiwwLDEwNiwxMSwwLDEwMCw0LDAsMTMxLDEsMCwxMDAsCi0gICAgNSwwLDI1LDEyNCwxLDAsOTUsOSwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTk2LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsCi0gICAgNSwwLDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyNTUsMCwxMjEsMTMsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgOTUsMTIsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDI1NCwKLSAgICAwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCw4Myw0MSw3LDc4LAotICAgIDExNCw5MSwwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LAotICAgIDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDEzLAotICAgIDExNCw5OSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsCi0gICAgMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCw2LDAsMCwwLDExNCw5MSwKLSAgICAwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDEzNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCw5NSwwLDAsCi0gICAgMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LAotICAgIDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTE4LDIsMCwwLDExNSw0MCwwLDAsMCwKLSAgICAwLDQsMTksMiwxNiwxLDI0LDEsMywxLDE2LDEsMTMsMSw1LDEsCi0gICAgMjQsMSwzLDQsMTIsMSwxNSwxLDI5LDEsMTMsMSw1LDEsMjQsMSwKLSAgICAzLDEsMTMsMSwxMywxLDUsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNTksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwwLDAsCi0gICAgMTA3LDksMCwxMTQsNDMsMCwxMTYsMSwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsCi0gICAgMSwwLDEzMSwyLDAsMTE1LDQzLDAsMTE2LDIsMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMTYsNCwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxNDMsNzUsMCwxLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEyMiwwLDEyNCwwLDAsMTA2LDUsMCwKLSAgICAxMDAsMCwwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiw2LDAsMTAwLDIsMCwxMDAsCi0gICAgMywwLDEyNCwwLDAsMTA2LDcsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLDE2LAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw4LDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDEsODcsMTAwLDAsMCw4MSw4Miw4OCwxMTYsOSwwLDEwNiwxMCwwLDEyNCwwLAotICAgIDAsMTA2LDcsMCwyNSw4Myw0MSw0LDc4LDExNCwxMzksMCwwLDAsMTIyLDE0LAotICAgIDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwxNSwKLSAgICAwLDAsMCw0MSwxMSwxMTQsOTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDE0OCwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzksMCwKLSAgICAwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCw0MSwyLDExNCw4OCwKLSAgICAwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywKLSAgICAxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNDcsMiwwLDAsMTE1LDIwLDAsMCwwLAotICAgIDAsMiwxNSwyLDE4LDEsMTAsMiwxMiwxLDEzLDEsMTUsMSwxNSwxLAotICAgIDI0LDMsMjMsNSwxMTQsMTQ5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTE2LDIsMCwKLSAgICAxMjQsMCwwLDEwNiwzLDAsMTMxLDEsMCwxNDMsMTUsMCwxLDExNiw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDgzLDg3LDEwMCwxLDAsODEsODIsODgsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiwxOTEsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMTAsCi0gICAgMTAxLDExOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgNDQsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsCi0gICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCi0gICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwMCwxMDAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwKLSAgICAxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgNzMsMTAyLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsCi0gICAgMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTIwLDEwNSwxMTUsCi0gICAgMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMywxMDEsMTE2LDExNSwKLSAgICAxMCwzMiwzMiwzMiwzMiw5OSwxMDgsMTExLDk4LDk4LDEwMSwxMTQsMTAxLDEwMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw3OCw0MSw1LDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsCi0gICAgMCwwLDExNCw1NCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE0OSwwLDAsCi0gICAgMCw0MSwxLDExNCw4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsODcsMCwwLDAsMTcwLDIsMCwwLAotICAgIDExNSw2LDAsMCwwLDAsOSwxMCwxLDE2LDEsMTE0LDg3LDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDIwNSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LAotICAgIDAsMTAwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLAotICAgIDEzMSwxLDAsOTAsNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCwKLSAgICA4LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LAotICAgIDAsMTAwLDEwLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNiwwLAotICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSwKLSAgICA2LDAsMTAxLDExLDAsMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNiwwLDEwMSwxMSwwLDEwMCwxNSwwLAotICAgIDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsMSwwLDkwLDEzLDAsMTAxLAotICAgIDYsMCwxMDEsMTEsMCwxMDAsMTcsMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsMTAxLDE1LDAsMTMxLDEsMCwKLSAgICA5MCwxNiwwLDEwMCw0LDAsODMsNDEsMTksMjE4LDE1LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LDEwMSwxMTYsOTcsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMjcsMCwwLDAsOTksMSwwLDAsMTE1LDE0LDAsMCwwLDAsMiw2LAorICAgIDEsNiwxLDYsMSw2LDEsMTQsMyw2LDEsMTIyLDE5LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLAorICAgIDEwNiwxLDEzMSwxLDEwMCwyLDEwNiwwLDEyNCwwLDEwNiwyLDEzMSwxLDEwMywyLAorICAgIDEyNSwxLDEyNCwwLDEwNiwzLDEwMCwwLDEwNyw5LDExNCw1MiwxMjQsMSwxMDYsNCwKKyAgICAxMDAsMywxMDYsMCwxMjQsMCwxMDYsMywxMzEsMSwxMzEsMSwxLDAsMTI0LDAsCisgICAgMTA2LDUsMTAwLDAsMTA3LDksMTE0LDgwLDEyNCwxLDEwNiw0LDEwMCw0LDEwNiwwLAorICAgIDEyNCwwLDEwNiw1LDEzMSwxLDEzMSwxLDEsMCwxMDAsNSwxMDYsMCwxMjQsMCwKKyAgICAxMDYsNiwxMDYsNywxMDAsNiwxMDYsOCwxMjQsMSwxMzEsMSwxMzEsMiw4MywwLAorICAgIDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLDExMSwxMTQsMTA1LAorICAgIDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywxMjUsNDEsMTIyLAorICAgIDIsNDQsMzIsNDEsOSwxMTQsMzgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKKyAgICA5MywwLDAsMCwxMTQsMTAzLDAsMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsMTE0LDEwNiwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwKKyAgICA5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsMiwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw0MCwwLDAsMCwxMTEsMSwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDAsMSwxMCwxLDE0LDEsMTAsMSwxOCwxLDEwLAorICAgIDEsOCwxLDEwLDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKKyAgICA5OSw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDMsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDEwMiwwLDAsMCwxMjQsMCwxMDYsMCwxMjUsMiwxMjEsNzAsMTI0LDAsMTA2LDEsCisgICAgMTI0LDEsMTA2LDEsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiwyLDEyNCwxLDEwNiwyLAorICAgIDEwNywyLDExMSw3NiwxMjQsMCwxMDYsMywxMjQsMSwxMDYsMywxMDcsMiwxMTEsNzYsCisgICAgMTI0LDIsMTI0LDEsMTA2LDAsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiw0LDEyNCwxLAorICAgIDEwNiw0LDEwNywyLDExMSw3NiwxMjQsMCwxMDYsNSwxMjQsMSwxMDYsNSwxMDcsMiwKKyAgICA4MywwLDQsMCwxMTYsNiwxMDcsMTAsMTE0LDk2LDEsMCwxLDAsMSwwLAorICAgIDEwMCwxLDgzLDAsODgsMCwxMDAsMCw4MywwLDQxLDIsNzgsNzAsNDEsNywKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDEwMywwLDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LAorICAgIDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTAsMCwwLDAsNDEsCisgICAgMywxMTQsMjYsMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LAorICAgIDEwOSwxMTUsMTA4LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTIxLDEsMCwwLDExNSwyMCwKKyAgICAwLDAsMCwwLDEsNiwxLDIsMSwxMiwxLDEyLDEsMTIsMSwxMCwKKyAgICAxLDEyLDEsMTIsMSwxNCwxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLAorICAgIDExMiwxMDEsOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA1OCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsNTIsMTI0LDAsCisgICAgMTA2LDEsMTAwLDAsMTA3LDksMTE0LDUyLDEyNCwwLDEwNiwyLDExNCw1MiwxMTYsMywKKyAgICAxMDAsMCwxMDcsOCwxMTQsMzgsMTE2LDQsMTMwLDEsMTE2LDMsMTA2LDUsMTI0LDAsCisgICAgMTA2LDEsMTMxLDEsMTI0LDAsOTUsMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsCisgICAgNzgsNDEsNiwxMTQsMTA4LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNywwLAorICAgIDAsMCwyMTgsMTksOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwKKyAgICAxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwKKyAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMTIsMCwwLDAsMTMzLDEsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTAsCisgICAgMSwxNiwxLDgsMSw0LDEsMTQsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEwLDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTAwLDAsODMsMCwKKyAgICA0MSwxLDc4LDQxLDEsMTE0LDEwOCwwLDAsMCw0MSwyLDExNCwyNiwwLDAsCisgICAgMCwxMTQsMTEyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCwxMTIsMCwwLDAsMTQyLDEsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMjYsMTI0LDAsMTA2LDEsMTA2LDIsMTAwLAorICAgIDIsMTMxLDEsMTAwLDMsMjUsMCw4MywwLDEyNCwwLDEwNiwxLDgzLDAsMTAwLAorICAgIDEsODMsMCw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLAorICAgIDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsNDYsMTE0LDE5LDAsMCwwLAorICAgIDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDEwLDExNCwxMTIsCisgICAgOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw2LAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTQ2LDEsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgMywxMCwxLDE2LDIsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKKyAgICA5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsODMsMCw0MSwxLDc4LDQxLDEsMTE0LDEwNywwLAorICAgIDAsMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTEzLDAsMCwwLDE1NCwxLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDExNiwwLDEyNCwxLDEzMSwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDQsCisgICAgOTgsMTExLDExMSwxMDgsMTE0LDEwNywwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwKKyAgICAyMTgsNSwxMTgsOTcsMTA4LDExNywxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxNTgsMSwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwyLDQxLDEyLDExNCwxLDAsMCwwLDExNCwwLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwyNywwLDAsCisgICAgMCwxMTQsNDAsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwKKyAgICAxMTIsMTAxLDExNCwxMTYsMTIxLDExNCwxMTIsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LAorICAgIDEwMSwxMTQsMTE0LDExOSwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAxMTQsMTAyLDAsMCwwLDYyLDEsMCwwLDExNSwyMCwwLDAsMCw4LDM1LAorICAgIDQsMiw0LDEsMTQsMTEsOCwxMCw4LDEyLDEyLDksMTQsNCwxMiw4LAorICAgIDEyLDQsMTE0LDEwMiwwLDAsMCw0MSwyLDExNCwxMDMsMCwwLDAsMTE0LDEwNSwKKyAgICAwLDAsMCw5OSwyLDAsMCwwLDIsMCwwLDAsNiwwLDAsMCwKKyAgICAxNCwwLDAsMCw2NywwLDAsMCwxMTUsMTU0LDAsMCwwLDExNiwwLDEyNCwKKyAgICAxLDEwMCwxLDEzMSwyLDExNCw3NCwxMTYsMSwxMDAsMiwxMDcsOCwxMTQsMjIsMTE2LAorICAgIDIsMTMwLDEsMTE2LDEsMTA2LDMsMTI1LDQsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LAorICAgIDQ4LDEyNCw0LDEyNCwwLDEyNCwxLDEwMCwzLDE0MSwyLDgzLDAsMTI0LDMsMTE0LAorICAgIDU2LDEwMywwLDExMCwyLDEwMCwyLDEyNSw1LDEyNCw0LDEyNCwwLDEyNCwxLDEyNCwKKyAgICA1LDEwMCw0LDE0MSwzLDgzLDAsMTI0LDMsMTAwLDIsMTA3LDgsMTE0LDEzOCwxMTYsCisgICAgMCwxMjQsMSwxMDAsNSwxMzEsMiwxMTQsMTM0LDEyMSwxNCwxMjQsMSwxMDYsNCwxMjQsCisgICAgMCwxMzEsMSwxMjUsMyw4NywwLDExMywxMzgsNCwwLDExNiw1LDEwNywxMCwxMTQsCisgICAgMTMwLDEsMCwxLDAsMSwwLDEwMCwyLDEyNSwzLDg5LDAsMTEzLDEzOCw4OCwKKyAgICAwLDExMCw0LDEwMCw2LDEyNSwzLDExNiw2LDEyNCwwLDEyNCwxLDEyNCwyLDEyNCwKKyAgICAzLDEwMCw3LDE0MSw0LDgzLDAsNDEsOCwxMjIsNTMsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiwKKyAgICA5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExOCw5NywxMTQsMTA1LDExMSwxMTcsMTE1LAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDQ2LAorICAgIDkwLDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwKKyAgICAxLDExNCw5MywwLDAsMCw0MSwyLDExNCw5MywwLDAsMCwxMTQsMTA2LDAsCisgICAgMCwwLDExNCwxMDUsMCwwLDAsNzAsNDEsMiwxMTQsMTAzLDAsMCwwLDExNCwKKyAgICAxMDUsMCwwLDAsNDEsNywxMTQsNCwwLDAsMCwxMTQsMTE1LDAsMCwwLAorICAgIDExNCwxMTYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEwNSwKKyAgICAwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDEwMiwwLDAsMCw0MSw2LDExNCwKKyAgICAxNSwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA1LAorICAgIDAsMCwwLDExNCwxMjQsMCwwLDAsOTAsNiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDc4LDAsMCwwLDE2MywxLDAsMCwxMTUsMzQsMCwwLDAsMCwyLDEwLAorICAgIDEsOCwxLDQsMSw2LDIsOCwxLDEyLDEsMTIsMSw2LDEsOCwKKyAgICAyLDgsMSwxMCwxLDIsMSwxNCwxLDE0LDEsMTIsMyw0LDIsMTE0LAorICAgIDc4LDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw4LDAsMCwKKyAgICAwLDUzLDAsMCwwLDY3LDAsMCwwLDExNSw1NiwxLDAsMCwxMjEsMTAsCisgICAgMTI0LDAsMTA2LDAsMTI1LDMsODcsMCwxMTAsMjAsNCwwLDExNiwxLDEwNywxMCwKKyAgICAxMTQsMzAsMSwwLDEsMCwxLDAsODksMCwxMTAsMTQsODgsMCwxMjQsMywKKyAgICAxMDAsMCwxMDcsOSwxMTQsNDQsMTI0LDMsODMsMCwxMjQsMCwxMDYsMiwxMjUsNCwKKyAgICAxMjQsMSwxMDAsMCwxMDcsOCwxMTQsOTAsMTIxLDEwLDEyNCwwLDEwNiwzLDEyNSwxLAorICAgIDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwxMDcsMTAsMTE0LDg4LDEsMCwxLDAsCisgICAgMSwwLDg5LDAsMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDQsMTI1LDUsCisgICAgODcsMCwxMTAsMjQsNCwwLDExNiwxLDEwNywxMCwxMTQsMTI0LDEsMCwxLDAsCisgICAgMSwwLDEwMCwwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMDAsMCwKKyAgICAxMDcsOCwxMTQsMTg0LDEyNCw1LDEwMCwwLDEwNyw4LDExNCwxODAsMTIxLDEwLDEyNCwxLAorICAgIDEwNiw1LDEyNSwyLDg3LDAsMTEzLDE4NCw0LDAsMTE2LDEsMTA3LDEwLDExNCwxNzYsCisgICAgMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDIsODksMCwxMTMsMTg0LDg4LDAsCisgICAgMTEwLDQsMTI0LDUsMTI1LDIsMTIxLDEwLDEyNCwwLDEwNiw2LDEyNSw2LDg3LDAsCisgICAgMTEwLDI0LDQsMCwxMTYsMSwxMDcsMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCwKKyAgICAxMDAsMCwxMjUsNiw4OSwwLDExMCwyLDg4LDAsMTIxLDE0LDExNiw3LDEyNCwwLAorICAgIDEwNiw4LDEzMSwxLDEyNSw3LDg3LDAsMTEwLDI2LDQsMCwxMTYsMSwxMDcsMTAsCisgICAgMTQ0LDEsMTE0LDQsMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDcsODksMCwKKyAgICAxMTAsMiw4OCwwLDExNiw5LDEyNCw0LDEyNCwxLDEyNCwyLDEwMCwxLDE0MSwzLAorICAgIDEyNSwzLDEyNCw1LDEwMCwwLDEwNyw4LDE0NCwxLDExNCwzNCwxMDAsMiwxMTAsMiwKKyAgICAxMDAsMywxMjQsMyw5NSwxMCwxMjQsNiwxMjQsMyw5NSwxMSwxMjQsNywxMjQsMywKKyAgICA5NSwxMiwxMjQsMyw4MywwLDQxLDQsNzgsNDEsMSwxMTQsMTAzLDAsMCwwLAorICAgIDcwLDg0LDQxLDEzLDExNCw4OSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEsCisgICAgMCwwLDAsMTE0LDg1LDAsMCwwLDExNCw5MiwwLDAsMCw5MCw3LDk1LAorICAgIDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwKKyAgICA5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsOTUsMTE0LDEwMiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMTIsMCwwLAorICAgIDAsMTE0LDEwNiwwLDAsMCw0MSw4LDExNCw4MywwLDAsMCwxMTQsOTMsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwKKyAgICAwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDExMiwwLDAsMCwKKyAgICAxMTQsMTA2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTkyLDEsMCwwLDExNSw3MiwwLDAsMCwKKyAgICAwLDIsMiwxLDEwLDEsMTQsMSw2LDIsOCwxLDQsMiw2LDEsCisgICAgOCwxLDIsMSwxMCwxLDE0LDIsNiwxLDIsMSwxMCwxLDE0LDEsCisgICAgMTAsMSw4LDEsOCwxLDIsMSwxMCwxLDE0LDEsMTIsMiw0LDEsCisgICAgMiwxLDEwLDEsMTQsMSwxMCwxLDIsMSwxNCwxLDE2LDEsMTAsMiwKKyAgICAxNCwxLDIwLDEsNiwxLDYsMSwxMTQsMTI4LDAsMCwwLDcwLDQxLDEsCisgICAgMjE4LDgsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSw5OSwyLDAsMCwwLDEsCisgICAgMCwwLDAsNSwwLDAsMCw1OSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjEyLDEsMCwwLDEyNCwyLDExNSwyMCwxMTYsMCwxMjQsMSwxMDAsMSwxMDAsMCwKKyAgICAxMzEsMywxMDAsMCwxMDcsOCwxMTQsNTQsMTIxLDEyLDEyNCwwLDEwNiwxLDEyNCwxLAorICAgIDk1LDIsODcsMCwxMTAsMjAsNCwwLDExNiwzLDEwNywxMCwxMTQsNTIsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSw3NCwxMTYsMCwKKyAgICAxMjQsMSwxMDAsMiwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsMTY2LDEyNCwwLAorICAgIDEwNiw0LDEyNSwzLDEyNCwzLDEwMCwwLDEwNyw4LDExNCwxMzQsMTI0LDAsMTA2LDUsCisgICAgMTAwLDAsMTA3LDksMTE0LDEzNCwxMTYsNiwxMDAsMCwxMDcsOCwxMTQsMTEwLDExNiw3LAorICAgIDEzMCwxLDExNiw2LDEwNiw4LDEyNSw0LDEyNCw0LDEwNiw5LDEyNCw0LDEzMSwxLAorICAgIDEyNSwzLDEyNCwwLDEwNiw1LDEyNCwzLDk1LDEwLDEyMSwxMCwxMjQsMywxMjQsMSwKKyAgICA5NSwxMSw4NywwLDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwxNjQsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDExNSwxODYsMTE2LDAsCisgICAgMTI0LDEsMTAwLDMsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDIyMCwxMjEsMTIsCisgICAgMTI0LDAsMTA2LDEyLDEyNCwxLDk1LDEzLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDIxOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTIxLDEwLDEyNCwwLDEyNCwxLDk1LDE0LDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDI1MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDIsMTQ0LDEsMTE1LDIwLDExNiwwLDEyNCwxLDEwMCw0LDEwMCwwLDEzMSwzLAorICAgIDEwMCwwLDEwNyw4LDE0NCwxLDExNCw2OCwxMjQsMCwxMDYsNSwxMDAsMCwxMDcsOSwKKyAgICAxNDQsMSwxMTQsNjgsMTIxLDEyLDEyNCwwLDEwNiw1LDEyNCwxLDk1LDE1LDg3LDAsCisgICAgMTEwLDIyLDQsMCwxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDY2LDEsMCwxLDAsCisgICAgMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsMCwxMDYsMTYsMTQ0LDEsMTE0LDIwOCwKKyAgICAxMjQsMiwxNDQsMSwxMTUsMTAwLDExNiwwLDEyNCwxLDEwMCw1LDEwMCwwLDEzMSwzLAorICAgIDEwMCwwLDEwNyw4LDE0NCwxLDExNCwxMzYsMTIxLDEyLDEyNCwwLDEwNiwxNywxMjQsMSwKKyAgICA5NSwxOCw4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLDExNCwxMzQsCisgICAgMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwyLDE0NCwxLAorICAgIDExNSwxNjAsMTE2LDAsMTI0LDEsMTAwLDYsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsCisgICAgMTQ0LDEsMTE0LDIwOCwxMjQsMCwxMDYsMTksMTAwLDAsMTA3LDksMTQ0LDEsMTE0LDIwOCwKKyAgICAxMjEsMTIsMTI0LDAsMTA2LDE5LDEyNCwxLDk1LDIwLDg3LDAsMTEwLDIyLDQsMCwKKyAgICAxMTYsMywxMDcsMTAsMTQ0LDEsMTE0LDIwNiwxLDAsMSwwLDEsMCw4OSwwLAorICAgIDExMCwyLDg4LDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCwxLDAsMCwwLAorICAgIDExNCw4NSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk1LDk1LDExNCwxMjcsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwxMjUsMCwwLAorICAgIDAsNDEsMjEsMTE0LDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCw5MCwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDEwNiwwLDAsCisgICAgMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMjE4LDE2LDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDIxOCw3LDk1LAorICAgIDk1LDExMCwxMDEsMTE5LDk1LDk1LDkwLDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDg1LDAsCisgICAgMCwwLDExNCwxMTksMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsODksMCwwLAorICAgIDAsMTE0LDEyNywwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMDMsMCwwLDAsCisgICAgMTE0LDkyLDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEyNSwwLDAsMCw0MSwKKyAgICA1LDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEyOSwwLDAsMCwKKyAgICAxMTQsOTMsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsMTE0LDExNSwyMzcsMSwwLAorICAgIDAsMTE1LDkyLDAsMCwwLDAsNCwyMCwxLDIsMSwxMiwxLDE0LDEsCisgICAgNiwyLDIwLDEsNiwxLDgsMiwxMCwxLDgsMSw0LDEsNiwyLAorICAgIDEwLDEsOCwxLDIsMSwxMCwxLDE0LDEsNiwyLDIwLDEsMiwxLAorICAgIDEyLDEsMTQsMSw2LDIsMiwxLDEwLDEsMTQsMSw2LDIsMjQsMSwKKyAgICAxMiwxLDIsMSwxMiwxLDE2LDEsNiwyLDgsMSwyNCwxLDIsMSwKKyAgICAxMiwxLDE2LDEsNiwyLDI0LDEsMTIsMSwyLDEsMTIsMSwxNiwxLAorICAgIDYsMSwxMTQsMTMzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwKKyAgICAwLDEwMCwxLDEyNSwxLDExNiwwLDEyNCwwLDEwNiwxLDEwMCwyLDEzMSwyLDExNCwKKyAgICAzMCwxMjQsMCwxMDYsMSwxMDYsMiwxMjQsMCwxMzEsMSwxMjUsMSwxMTAsMjAsMTE2LAorICAgIDAsMTI0LDAsMTA2LDEsMTAwLDMsMTMxLDIsMTE0LDUwLDExNiwzLDEwMCw0LDEzMSwKKyAgICAxLDEzMCwxLDEyNCwxLDEwMCwxLDEwNyw4LDExNCw2OCwxMTYsNCwxMjQsMCwxMDYsCisgICAgNSwxMzEsMSwxMjUsMSwxMTYsNiwxMjQsMCwxMjQsMSwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSw1LDEyMiw0Myw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMTAwLDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKKyAgICA2NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDAsMTAxLAorICAgIDEwMiwxMDUsMTEwLDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsCisgICAgMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQwLDQxLDQxLDcsMTE0LDQsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMzQsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMTUsCisgICAgMCwwLDAsMTE0LDEzMywwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsCisgICAgODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMjE4LDE2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDAsMCwxMTUsMTgsMCwwLDAsMCwzLAorICAgIDQsMSwxMiwzLDE0LDEsMTIsMSw4LDIsOCwxLDEwLDEsMTAsMSwKKyAgICAxMTQsMTM2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMTQsMTAwLDIsMTEwLDQsMTI0LDAsMTA2LAorICAgIDAsMTI1LDEsMTI0LDAsMTA2LDEsMTAwLDEsMTA3LDgsMTE0LDY2LDEyNCwwLDEwNiwKKyAgICAyLDEwMCwxLDEwNyw4LDExNCw1MCwxMDAsMywxMDYsMywxMjQsMSwxMzEsMSw4MywKKyAgICAwLDEwMCw0LDEwNiwzLDEyNCwxLDEyNCwwLDEwNiwyLDEzMSwyLDgzLDAsMTEwLAorICAgIDM2LDEyNCwwLDEwNiw0LDExNCw4NiwxMDAsNSwxMDYsMywxMjQsMSwxMjQsMCwxMDYsCisgICAgMSwxMzEsMiw4MywwLDEwMCw2LDEwNiwzLDEyNCwwLDEwNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwyLDgzLDAsMTAwLDEsODMsMCw0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLAorICAgIDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQ2LDc4LDExNCw4NywwLDAsMCwxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMywKKyAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsNDEsNjIsNDEsNSwxMTQsMTUsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDM4LDAsMCwKKyAgICAwLDExNCwxMTMsMCwwLDAsNDEsMiwxMTQsODIsMCwwLDAsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCw5MSwwLDAsMCw1OCwyLDAsMCwxMTUsMTYsMCwwLDAsMCwKKyAgICAzLDIwLDEsMTAsMSwxMCwxLDEwLDIsMTYsMiw2LDEsMTQsMiwxMTQsCisgICAgOTEsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDE4NiwwLDAsMCwxMjQsMCwKKyAgICAxMDYsMCwxMjUsMiwxMTYsMSwxMDYsMiwxMzEsMCwxLDAsMTE2LDMsMTI0LDIsCisgICAgMTMxLDEsMTQzLDE0OCwxLDAsMTE2LDQsMTA2LDUsMTA2LDYsMTI0LDIsMTMxLDEsCisgICAgMTI0LDEsMTA3LDksMTE0LDYyLDEwMCwxLDEwNiw3LDEyNCwyLDEzMSwxLDEyNSwzLAorICAgIDExNiw4LDEyNCwzLDEyNCwyLDEwMCwyLDE0MSwyLDEzMCwxLDEyNCwwLDEwNiw5LAorICAgIDEwMCwzLDEwNyw4LDExNCwxMTQsMTI0LDAsMTA2LDEwLDEwMCwzLDEwNyw4LDExNCw5NiwKKyAgICAxMTYsOCwxMDAsNCwxMjQsMCwxMDYsMCwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsMTEsCisgICAgMTI0LDAsMTI0LDEsMTAwLDUsMTAwLDYsMTQxLDMsMSwwLDEyNCwxLDgzLDAsCisgICAgMTE2LDExLDEyNCwwLDEyNCwxLDEwMCw1LDEwMCw2LDE0MSwzLDEsMCwxMTYsMTIsCisgICAgMTI0LDAsMTA2LDksMTAwLDcsMTMxLDIsMTE1LDE1NCwxMjQsMCwxMDYsOSwxMDYsMTMsCisgICAgMTI0LDIsMTMxLDEsMSwwLDExMCwxMiwxMjQsMCwxMDYsOSwxMDYsMTQsMTI0LDEsCisgICAgMTMxLDEsMSwwLDg3LDAsMTAwLDMsODEsMCw4MiwwLDg4LDAsMTE2LDQsCisgICAgMTA2LDUsMTI0LDIsMjUsMCw4MywwLDQxLDgsMTIyLDcwLDY5LDEyMCwxMDEsOTksCisgICAgMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDExNSwKKyAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDQxLDEsMTE0LDE1LDAsMCwwLDc4LDEyMiwxNCwxMDksMTA1LDExNSwxMTUsCisgICAgMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw4NCw0MSwxLDExNCwxMjksMCwKKyAgICAwLDAsMTE0LDEzNSwwLDAsMCw0MSwxNSwxMTQsMTUsMCwwLDAsMTE0LDQ2LAorICAgIDAsMCwwLDIxOCwxMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksCisgICAgMTA3LDExNCw0MiwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLAorICAgIDExNCwzMCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwKKyAgICA5MywwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNCwxMzUsMCwwLDAsNDEsNCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwKKyAgICAwLDExNCwxNSwwLDAsMCwyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODAsMCwwLDAsNzUsCisgICAgMiwwLDAsMTE1LDMyLDAsMCwwLDAsMiw2LDEsOCwxLDEwLDEsCisgICAgMTYsMSwxMCwxLDEyLDEsMTAsMSwxMCwxLDE0LDIsMTQsMSw0LDEsCisgICAgMTQsMSwxMiw0LDE0LDIsMjIsMSwxMTQsODAsMCwwLDAsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDIwNiwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjQsMCwxMDYsCisgICAgMiwxMzEsMSwxLDAsMTE2LDMsMTA2LDQsMTI0LDAsMTA2LDIsMjUsMCwxMjUsCisgICAgMSwxMTYsNSwxMjQsMSwxMDAsMSwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsCisgICAgNzYsMTIxLDEyLDEyNCwwLDEwNiwwLDEyNCwxLDk1LDYsODcsMCwxMTAsMjAsNCwKKyAgICAwLDExNiw3LDEwNywxMCwxMTQsNzQsMSwwLDEsMCwxLDAsODksMCwxMTAsCisgICAgMiw4OCwwLDExNiw1LDEyNCwxLDEwMCwyLDEwMCwwLDEzMSwzLDEwMCwwLDEwNywKKyAgICA4LDExNCwxNTQsMTIxLDQwLDEyNCwxLDEwNiw4LDEyNCwxLDk1LDksMTE2LDEwLDEyNCwKKyAgICAxLDEwMCwzLDEzMSwyLDExNSwxMzAsMTI0LDAsMTA2LDIsMTA2LDExLDEwMCw0LDEzMSwKKyAgICAxLDEwMCw1LDI1LDAsMTI0LDEsOTUsOSw4NywwLDExMCwyMCw0LDAsMTE2LAorICAgIDcsMTA3LDEwLDExNCwxNTIsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwKKyAgICAwLDExNiw1LDEyNCwxLDEwMCw2LDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwKKyAgICAyMDIsMTIxLDEwLDEyNCwwLDEyNCwxLDk1LDEyLDg3LDAsMTEwLDIwLDQsMCwxMTYsCisgICAgNywxMDcsMTAsMTE0LDIwMCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LAorICAgIDAsMTI0LDEsODMsMCw0MSw3LDc4LDExNCw4NSwwLDAsMCwxMTQsMTMwLDAsCisgICAgMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLAorICAgIDAsMTE0LDg5LDAsMCwwLDQxLDEzLDExNCw5MywwLDAsMCwxMTQsMTM4LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTAsMCwwLDAsCisgICAgMTE0LDEsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgMTE4LDAsMCwwLDExNCw4OSwwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwKKyAgICAxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMjE4LDI1LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywKKyAgICAxMTksOTcsMTE0LDEwMCw5NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTAwLAorICAgIDIsMCwwLDExNSw0MCwwLDAsMCwwLDQsMTQsMiwxMiwxLDE2LDEsCisgICAgMiwxLDEyLDEsMTQsMSw2LDEsMTYsMSwyLDQsOCwxLDEwLDEsCisgICAgMjIsMSwxNCwxLDYsMSwxNiwxLDIsMSwxMCwxLDE0LDEsNiwxLAorICAgIDExNCwxNDAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMCwxMDcsOSwxMTQsMzAsMTE2LDEsMTI0LDAsMTA2LDAsMTAwLAorICAgIDEsMTMxLDIsMTE1LDMwLDExNiwyLDEyNCwwLDEzMSwxLDgzLDAsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsMTI1LDEsMTE2LDQsMTI0LDEsMTMxLDEsMTQzLDU0LDEsMCwxMjQsCisgICAgMCwxMDYsMCwxMDAsMCwxMDcsOCwxMTQsODQsMTI0LDAsMTA2LDUsMTAwLDAsMTA3LAorICAgIDgsMTE0LDk2LDExNiw2LDEwMCwyLDEyNCwwLDEwNiw3LDEwMCwzLDE0MSwyLDEzMCwKKyAgICAxLDExMCwxMiwxMjQsMCwxMDYsMCwxMDYsOCwxMjQsMSwxMzEsMSwxLDAsODcsCisgICAgMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMTYsOSwxMDYsMTAsMTI0LDAsMTA2LAorICAgIDcsMjUsMCw4MywwLDQxLDQsNzgsMTE0LDEzNSwwLDAsMCwxMjIsMTQsMTA5LAorICAgIDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDEsMSwxMTQsCisgICAgMTUsMCwwLDAsNDEsMTEsMTE0LDkzLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCwxNDAsMCwwLDAsMTE0LDEzNiwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LAorICAgIDEwNiwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzUsCisgICAgMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCw0MSwyLDExNCwKKyAgICA4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LAorICAgIDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxMjksMiwwLDAsMTE1LDIwLDAsMCwKKyAgICAwLDAsMiwxMCwyLDEyLDEsOCwyLDgsMSwxMCwxLDEwLDEsMTAsCisgICAgMSwxNiwzLDIyLDUsMTE0LDE0MSwwLDAsMCw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAzOCwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxLDAsMTE2LDIsMTI0LDAsCisgICAgMTA2LDMsMTMxLDEsMTQzLDEwLDEsMCwxMTYsNCwxMjQsMCwxMzEsMSw4MywwLAorICAgIDgxLDAsODIsMCw4OCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTkxLDgyLDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsCisgICAgMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LAorICAgIDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LAorICAgIDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSwKKyAgICA5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwKKyAgICAxMTQsNDYsMCwwLDAsMTE0LDEzNywwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LAorICAgIDE1LDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsMSwxMTQsODIsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDgxLDAsMCwwLDE1MiwyLDAsMCwxMTUsNiwwLDAsMCwwLDksOCwKKyAgICAxLDEyLDEsMTE0LDgxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEzNiwwLAorICAgIDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwKKyAgICAxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSw5MCw1LDEwMSw2LDEwMCwxOSwxMDAsNSwKKyAgICAxMDAsNiwxMzIsMSwxMzEsMSw5MCw3LDEwMSw2LDEwMCwyMCwxMDAsNywxMDAsOCwKKyAgICAxMzIsMSwxMzEsMSw5MCw4LDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSwKKyAgICA5MCw5LDEwMSw2LDEwMCwxMSwxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxMywxMDAsMTQsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTIsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTMsMTAxLDYsCisgICAgMTAxLDExLDEwMCwxNywxMDAsMTgsMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTQsMTAxLDYsCisgICAgMTAxLDE1LDEzMSwxLDkwLDE2LDEwMCw0LDgzLDAsNDEsMjEsMjE4LDE1LDY2LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LAorICAgIDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsCisgICAgOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwKKyAgICAxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLAorICAgIDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwxLDgzLDAsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCisgICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCw0MSw2Miw0MSwyLDExNCwzOCwwLDAsMCwxMTQsMSwwLAorICAgIDAsMCw0MSwxLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwwLDAsMTc3LDIsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwKKyAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw0NCwwLDAsMCwKKyAgICAxMjQsMiwxMDAsMCwxMDcsOSwxMTQsMTIsMTAwLDAsODMsMCwxMTYsMCwxMDYsMSwKKyAgICAxMjQsMSwxMzEsMSwxMTQsMzYsMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsCisgICAgMTQxLDMsODMsMCwxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsCisgICAgOCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSwxLDExNCwxMDMsMCwwLDAsCisgICAgNDEsMywxMTQsNDYsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCwKKyAgICA3MSwwLDAsMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywKKyAgICAxMDEsMTE2LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxODYsMiwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDAsMiw4LDEsNCwxLDEwLDEsMTQsMiwxMjIsCisgICAgMjUsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAzMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywKKyAgICAxMjQsMywxMDAsMSwxMDcsOSwxMTQsMjYsMTI0LDMsMTA2LDEsODMsMCwxMDAsMSwKKyAgICA4MywwLDQxLDIsMTIyLDE3NSw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwKKyAgICAxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LAorICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LAorICAgIDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLAorICAgIDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LAorICAgIDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE0NiwwLDAsMCwxMTQsOTMsMCwKKyAgICAwLDAsNDEsNCwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTQ0LAorICAgIDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDE5NSwyLDAsMCwxMTUsNCwwLDAsMCwwLDksMTIsCisgICAgMSwxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMSwxMDYsMCwxMTYsMSwxMDYsMiwKKyAgICAxMDcsNywxMTQsMzQsMTE2LDMsMTAwLDEsMTA2LDQsMTI0LDEsMTA2LDAsMTMxLDEsCisgICAgMTI0LDEsMTA2LDAsMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDUsMTE2LDYsMTA2LDcsCisgICAgMTI0LDEsMTMxLDIsODMsMCw0MSwzLDEyMiwyNCw2NywxMTQsMTAxLDk3LDExNiwxMDEsCisgICAgMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTIyLDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDEsMSwxMTQsMTUsMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCw2OSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LAorICAgIDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTQsOTksCisgICAgMTE0LDEwMSw5NywxMTYsMTAxLDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LAorICAgIDI2LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM0LDAsMCwwLDIwNywyLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDMsMTIsMSwxMiwxLDEwLDEsMTIyLDI5LAorICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTI0LDEsMTMxLAorICAgIDIsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMjIsNjksMTIwLDEwMSw5OSwzMiwKKyAgICA5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3OCw0MSwzLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTIsCisgICAgMTAxLDEyMCwxMDEsOTksOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMjYsCisgICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxMzUsMCwwLDAsMjE1LDIsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCisgICAgODMsMCw0MSwyLDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsCisgICAgMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LAorICAgIDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LAorICAgIDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCw4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDIyMCwyLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDQsMTIyLDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsCisgICAgNTYsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsCisgICAgMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMjYsMiwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNTIsODIsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDExNCwxMDUsMCwwLDAsMjMyLDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxNywxMTQsMSwwLDAsMCwxMTQsMCwKKyAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwyMTgsMTIsMTE1LAorICAgIDExNiw5NywxMTYsMTA1LDk5LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw4NiwwLDAsMCwKKyAgICAyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE0NiwwLAorICAgIDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzNSwwLDAsCisgICAgMCwxMTQsNzQsMCwwLDAsMTE0LDE0OCwwLDAsMCwxMTQsMTQ5LDAsMCwwLAorICAgIDExNCwxMDUsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxNDIsMCwwLDAsMTY4LDIsMCwwLDExNSwzMCwwLDAsCisgICAgMCw4LDcsNCwyLDEyLDksMiwxLDEyLDgsMiwxLDEyLDExLDEyLAorICAgIDgsMTIsNSwyLDEsMTQsNSwyLDEsMTQsNSwyLDEsMTQsNSwxMTQsCisgICAgMTQyLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMDEsMCwKKyAgICA5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywKKyAgICAxMzIsMCwxMzEsMSw5MCw1LDEwMSw2LDEwMCwyMSwxMDAsNSwxMDAsNiwxMzIsMSwKKyAgICAxMzEsMSw5MCw3LDEwMSw2LDEwMCwyMiwxMDAsNywxMDAsOCwxMzIsMSwxMzEsMSwKKyAgICA5MCw4LDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSw5MCw5LDEwMSw0LAorICAgIDEwMCwxMSwxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsMTAwLDEzLDEwMCwxNCwKKyAgICAxMzIsMCwxMzEsMSw5MCwxMSwxMDEsNiwxMDEsMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxMywxMDEsNiwxMDEsMTIsMTAwLDE3LDEwMCwxOCwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxNCwxMDEsNiwxMDEsMTIsMTAwLDE5LDEwMCwyMCwxMzIsMCwKKyAgICAxMzEsMSwxMzEsMSw5MCwxNSwxMDAsNCw4MywwLDQxLDIzLDIxOCwxNCw3MCwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwKKyAgICAxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCiAgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAogICAgIDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksCiAgICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LApAQCAtMTIyOSw3NjAgKzEyMjIsNjAxIEBACiAgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCiAgICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCi0gICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsCi0gICAgMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsCi0gICAgMCwwLDAsNDEsMSwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDE5NSwyLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLAotICAgIDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE2LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCw1MCwwLAotICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsCi0gICAgMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsCi0gICAgMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMywxMTQsCi0gICAgNTcsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICAxMTQsODUsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3OCwwLDAsCi0gICAgMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyMDQsMiwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsMTIyLDI1LDY2LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LAotICAgIDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc1LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsCi0gICAgMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiwKLSAgICA5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LAotICAgIDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKLSAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw5OSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLAotICAgIDAsMTE0LDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDg4LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICAxMSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjEzLDIsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsOSwxOCwxLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLAotICAgIDEyNCwxLDAsMTA2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsCi0gICAgNTEsMCwxMTYsMywwLDEwMCwxLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwwLAotICAgIDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTA2LDAsMCwxMzEsMSwxLAotICAgIDEzMCwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDMsMTIyLDI0LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywzMiwKLSAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsCi0gICAgMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsCi0gICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsMTAxLAotICAgIDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKLSAgICAwLDAsMCwxMTQsMTM4LDAsMCwwLDIyNSwyLDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDMsMTgsMSwyMSwxLDEyLDEsMTIyLDI5LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwKLSAgICAwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDEsMTAwLDEsMCw4Myw0MSwyLDEyMiwyMiw2OSwxMjAsMTAxLDk5LDMyLDk3LAotICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDc4LDQxLDMsMTE0LDY1LDAsMCwwLDExNCw1NywwLDAsMCw5MCwxMiwxMDEsCi0gICAgMTIwLDEwMSw5OSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEzOSwwLDAsMCwyMzMsMiwwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwzLDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLAotICAgIDgzLDQxLDIsMTIyLDU3LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsCi0gICAgMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLAotICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LAotICAgIDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMjM4LDIsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1NiwKLSAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwKLSAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsCi0gICAgMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDI0NCwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsCi0gICAgMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw1Miw4MiwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsCi0gICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCi0gICAgMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICAxMTUsNDYsNzAsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDEwOSwwLDAsMCwyNTAsMiwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCw0LDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCi0gICAgMTcsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMjE4LDEyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwxMTQsOTIsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCi0gICAgMTM4LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCwxNTYsCi0gICAgMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCw5MCwwLAotICAgIDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUwLDAsMCwwLAotICAgIDE4NiwyLDAsMCwxMTUsMzAsMCwwLDAsMTIsNyw2LDIsMTgsOSwzLAotICAgIDEsMjEsOCwzLDEsMTgsMTEsMTgsOCwxOCw1LDMsMSwyMSw1LDMsCi0gICAgMSwyMSw1LDMsMSwyMSw1LDExNCwxNTAsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsMjExLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsMywKLSAgICAwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsMCwxMDAsNCwwLAotICAgIDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsMTMxLDEsMCw5MCwKLSAgICA3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMSwKLSAgICAwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw0LDAsMTAwLDExLDAsMTAwLAotICAgIDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDYsMCwxMDAsMTMsCi0gICAgMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNiwwLAotICAgIDEwMSwxMiwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDEzLDAsMTAxLDYsMCwxMDEsMTIsMCwxMDAsMTcsMCwxMDAsMTgsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMSw2LDAsCi0gICAgMTAxLDEyLDAsMTAwLDE5LDAsMTAwLDIwLDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwKLSAgICAxLDAsOTAsMTUsMCwxMDAsNCwwLDgzLDQxLDIxLDIxOCwxNCw3MCwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsCi0gICAgOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LAotICAgIDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwKLSAgICAxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwKLSAgICAxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLAotICAgIDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAotICAgIDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKLSAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwKLSAgICAxMDEsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLDAsMCwwLAotICAgIDQxLDEsMjE4LDEsMTA5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCw5MiwwLDAsMCwxMiwzLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwKLSAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDExNCwzNCwwLDExNiwyLDAsMTI0LDEsMCwKLSAgICAxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMiwxLDgzLDEwMCwwLDAsCi0gICAgODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsMCwwLDAsOTAsNiwxMDIsCi0gICAgMTE0LDExMSwxMjIsMTAxLDExMCw0MSwzLDExNCw1NywwLDAsMCwxMTQsODIsMCwwLAotICAgIDAsMTE0LDg1LDAsMCwwLDQxLDQsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwKLSAgICAwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTQsMCwwLDAsCi0gICAgMjEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE1LDEsMTksMiwxMjIsCi0gICAgMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIzLAotICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE0LAotICAgIDE5LDAsMTI0LDAsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDkzLDcwLDEwNSwKKyAgICAwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsMSwxMzEsMSwKKyAgICA4MywwLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLAorICAgIDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKKyAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjIsNjAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsCisgICAgNjIsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LDEsMCwwLDAsNDEsMSwyMTgsCisgICAgMSwxMDksMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDg2LDAsMCwwLDI1MCwyLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCw5OSw0LAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwKKyAgICAxMTQsMjQsMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsMTQxLDMsODMsMCwKKyAgICAxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCw5MCw2LDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDQxLDEsMTE0LDEwMywwLDAsMCw0MSwzLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNzUsMCwwLDAsMTE0LDc4LDAsMCwwLDQxLDQsMTE0LDE0MywwLAorICAgIDAsMCwxMTQsNzEsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsMTQ1LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCwxNDYsMCwwLDAsMywzLDAsMCwxMTUsNiwwLDAsMCwwLDIsCisgICAgMTAsMSwxNCwyLDEyMiwyNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsCisgICAgMTE0LDE0LDEyNCwwLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw5Myw3MCwxMDUsCiAgICAgMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCiAgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAogICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKICAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKICAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDgyLDAsMCwwLDQxLDMsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU1LDAsMCwwLDI4LDMsMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCw0NiwKKyAgICAwLDAsMCwxMTQsNzUsMCwwLDAsNDEsMywxMTQsMTQzLDAsMCwwLDExNCwKKyAgICA3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDcsMCwwLDAsMTAsMywwLAogICAgIDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLAogICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKICAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAogICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKKyAgICA4MywwLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwKICAgICAxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLAogICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAotICAgIDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDg4LDAsCisgICAgNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsODIsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwzNywzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCisgICAgMCwxMTQsMTM0LDAsMCwwLDE5LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKICAgICAyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKICAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLAogICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsCi0gICAgMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSwKLSAgICA1NCwwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExNiw2LDAsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDExNiwKLSAgICA4LDAsMTI0LDIsMCwxMjQsMCwwLDEwNiw5LDAsMTMxLDIsMCwxLDEwMCwKLSAgICAwLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDk1LDAsMCwwLDExNCwKLSAgICAxNSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw3NywKLSAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LDAsMCwwLDIxOCwxNywxMDMsCi0gICAgMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODksMCwKLSAgICAwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLAotICAgIDAsNDEsMywwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMiwxLDE1LDEsCi0gICAgMTgsMSw5LDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiw5NSw3NiwxMTEsOTcsCi0gICAgMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAotICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKLSAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAotICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgODMsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAwLDAsMTE1LDY0LDAsMCwwLDEyNCwwLDEwNiwwLDEwNiwxLDEyNSwxLDExNiwKKyAgICAyLDEwNiwzLDEyNCwxLDEzMSwxLDExNSwzNiwxMTYsNCwxMDAsMSwxMDYsNSwxMjQsCisgICAgMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsNiwxMTYsMiwxMDYsCisgICAgNywxMjQsMSwxMzEsMiwxMjUsMiwxMTYsOCwxMjQsMiwxMjQsMCwxMDYsOSwxMzEsCisgICAgMiwxLDAsMTAwLDAsODMsMCw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LDEyNSwKKyAgICAzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDQxLDEwLAorICAgIDExNCw4OSwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA3NSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCw1OCwKKyAgICAwLDAsMCwyMTgsMTcsMTAzLDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCw3LDAsMCwKKyAgICAwLDQxLDMsMTE0LDgzLDAsMCwwLDExNCwxNSwwLDAsMCwyMTgsNCw5OSwKKyAgICAxMTEsMTAwLDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwxMTQsMTM1LDAsMCwwLDIzLDMsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAwLDIsOCwxLDEwLDEsMTAsMSw4LDEsMTIsMSwxMjIsMjYsNzAsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsCisgICAgOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMTE2LDAsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw0MSwxLDEyMiw5NSwKKyAgICA3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwKKyAgICAxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLAorICAgIDEsMTE0LDg0LDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDEzOCwwLDAsMCwzMiwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDcsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCisgICAgMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKICAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCiAgICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKKyAgICAxMDEsNDYsNDEsMiwxMTQsNDYsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwyLAorICAgIDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDgsMCwwLDAsNDEsMywKICAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCiAgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCiAgICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCwKICAgICA0MSwyLDEyMiw1NCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAogICAgIDk3LDExNSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLAogICAgIDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCwKLSAgICA0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTcsMCwwLDAsCi0gICAgNjUsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAorICAgIDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0OSwwLDAsMCwKKyAgICA0NywzLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LAogICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwxLDEyMiwKLSAgICA0Niw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsCi0gICAgMiwxMTQsNTcsMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLAotICAgIDExMCw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTUxLDAsMCwwLAotICAgIDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwxMTQsMTA5LDAsMCwwLDcxLDMsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsCi0gICAgMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LAotICAgIDE1OSwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDEzOCwKLSAgICAwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDg0LDAsCi0gICAgMCwwLDExNCwxNTYsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTA5LDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMSwwLDAsMCwxMTQsMTYwLDAsMCwwLDMsMywwLDAsMTE1LDMwLAotICAgIDAsMCwwLDEyLDcsNiwyLDE4LDksMywxLDIxLDYsMywxLDE4LAotICAgIDgsMTgsNCwxOCw5LDE4LDksMywxLDIxLDUsMywxLDIxLDUsMywKLSAgICAxLDExNCwxNjAsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDYsMCwwLDAsCi0gICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKLSAgICAzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LAotICAgIDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwwLDgzLDQxLDcsCi0gICAgMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAotICAgIDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMzIsMTA5LDk3LAotICAgIDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsMjQsNjUsOTksMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwKLSAgICAyLDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsMCwwLDQxLDEsMTE0LDE5LDAsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsODMsMCw0MSwxLDEyMiw0Niw4MiwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNDEsMiwxMTQsNDYsCisgICAgMCwwLDAsOTAsMTcsMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLAogICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMjMsMCwwLDAsODQsMywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDEyMiwyOCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLAotICAgIDExMCwxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwKLSAgICA0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwxMDEsOTcsCi0gICAgMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAotICAgIDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLAotICAgIDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwKLSAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw1NywwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsNDEsNCwxMTQsMTksMCwwLDAsOTAsOCwxMDEsMTIwLDk5LAotICAgIDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwxMTcsMTAxLAotICAgIDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwKLSAgICAwLDAsMCw4OCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI3LAotICAgIDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsCi0gICAgMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwKLSAgICAwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLAotICAgIDAsMCwxMTQsMjMsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAxMTQsMTY1LDAsMCwwLDgwLDMsMCwwLDExNSw2LDAsMCwwLDEyLDIsCi0gICAgNiwyLDEyLDQsMTE0LDE2NSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDEsMCwxMjQsMiwwLDEwMCwKLSAgICAyLDAsMjQsMTMxLDIsMCwxMjUsMywwLDExNiwxLDAsMTI0LDMsMCwxMzEsCi0gICAgMSwwLDEyNCwyLDAsMTA3LDAsMCwxMTQsNTIsMCwxMTYsMiwwLDEwMCwzLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwzLDAsMTAwLDQsMCwyNSwxMjUsNCwKLSAgICAwLDEyNCwwLDAsMTE0LDg0LDAsMTAwLDUsMCwxMDYsMywwLDEyNCw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMiwwLDgzLDEyNCw0LDAsODMsNDEsNiwxMjIsNTAsODIsCi0gICAgMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLAotICAgIDQ2LDExNCwxMjEsMCwwLDAsMTE0LDQ1LDAsMCwwLDEyMiw1MCw5NywxMTYsMTE2LAotICAgIDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCwKLSAgICAzMywwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNDEsNCwyMTgsNiwxMTQsCi0gICAgMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMywxMDgsMTAxLDExMCwyMTgsMTAsODYsOTcsMTA4LDExNywKLSAgICAxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSw1LDExNCwxNSwwLAotICAgIDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDkwLDQsOTgsOTcsMTE1LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsCi0gICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkzLDMsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDIsMjIsMSwxOCwxLDEyLDEsMTAsMSwxMTQsCi0gICAgMTcxLDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLAotICAgIDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwwLDAsODMsCi0gICAgMTE2LDEsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDc4LAotICAgIDQxLDIsMTE0LDE1NSwwLDAsMCwxMTQsODUsMCwwLDAsNDEsNCwyMTgsNiwKLSAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwKLSAgICAxMTQsOTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsMTAyLDMsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsMywxOCwxLDEyLDEsNCwxLDExNCwxNzMsMCwwLDAsOTksMywwLAotICAgIDAsMCwwLDAsMCwwLDksMCwwLDAsMjcsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDQyLDEsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwwLDEwNyw2LDAsMTI1LDMsMCwxMjAsCi0gICAgMjM1LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDIyMCwwLDEyNSw0LDAsMTE2LAotICAgIDYsMCwxMzEsMCwwLDE0Myw5MCwwLDEsMTIxLDEzLDAsMTI0LDQsMCwxMDYsCi0gICAgNywwLDEyNSw1LDAsODcsMTEwLDUxLDAsNCwxMTYsOCwwLDEwNywxMCwwLAotICAgIDExNCwxNDgsMCwxLDEsMSwxMTYsOSwwLDEyNCw0LDAsMTI0LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwxLDAsMTA3LDgsCi0gICAgMCwxMTQsMTQ0LDAsMTE5LDY2LDAsODksMTEwLDE5LDAsODgsMTI0LDUsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSw2LDAsODcsMTAwLAotICAgIDEsMCw4MSw4Miw4OCwxMjQsNiwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjYsCi0gICAgMCwxMjQsMywwLDEyLDExNCwyNiwxLDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwKLSAgICAwLDEwNyw2LDAsMTE0LDI2LDEsMTE2LDAsMCwxMDYsNSwwLDEyNCwwLDAsCi0gICAgMjUsMTI1LDcsMCwxMjEsMTMsMCwxMjQsNywwLDEwNiwxMCwwLDEyNSw4LDAsCi0gICAgODcsMTEwLDIyLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyLDEsMSwxLAotICAgIDEsMTI0LDYsMCw4Myw4OSwxMTMsMzAsMSw4OCwxMjQsOCwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsMTksMSwxMjQsNiwwLDgzLDEyNCw4LDAsODMsMTEzLDY2LAotICAgIDAsMTI0LDYsMCw4MywxMTMsNjYsMCw4NywxMDAsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMjMsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsNzgsMTIyLDIyLDExNSwKLSAgICAxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwxMSwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwKLSAgICAxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE0MSwwLDAsMCwxMTQsMTQyLDAsMCwKLSAgICAwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCi0gICAgMTE0LDIxLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCi0gICAgOTYsMCwwLDAsMTE0LDE3MywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsOSwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDkwLAotICAgIDksMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwKKyAgICAwLDExNCwxMDUsMCwwLDAsNTMsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDc4LDc4LAorICAgIDQxLDEsNzgsNDEsMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LAorICAgIDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODYsCisgICAgMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNDcsMCwKKyAgICAwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxMzgsMCwwLAorICAgIDAsMTE0LDc3LDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwKKyAgICAxMTQsMTA1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUyLDAsMCwwLDI0MSwyLAorICAgIDAsMCwxMTUsMzAsMCwwLDAsOCw3LDQsMiwxMiw5LDIsMSwxMiwKKyAgICA2LDIsMSwxMiw4LDEyLDQsMTIsOSwxMiw5LDIsMSwxNCw1LDIsCisgICAgMSwxNCw1LDIsMSwxMTQsMTUyLDAsMCwwLDk5LDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LAorICAgIDMyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLAorICAgIDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwKKyAgICAxMDAsNiw4MywwLDQxLDcsMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsCisgICAgMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsCisgICAgMTAxLDEyMCwxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NiwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwKKyAgICAxLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDQ2LDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwxMzcsMCwwLDAsNDEsCisgICAgMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDQ4LDAsMCwwLDY2LDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsCisgICAgOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTUsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LAorICAgIDEsMTMxLDAsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwKKyAgICAxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwKKyAgICAxMTEsMTAyLDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLAorICAgIDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNDcsMCwwLDAsNDEsNCwxMTQsMjYsMCwwLDAsOTAsOCwxMDEsCisgICAgMTIwLDk5LDk1LDExNiwxMjEsMTEyLDEwMSw5MCw5LDEwMSwxMjAsOTksOTUsMTE4LDk3LDEwOCwKKyAgICAxMTcsMTAxLDkwLDEzLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksCisgICAgMTA3LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCw1MCwwLDAsMCw3MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTIyLDI3LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLAorICAgIDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwKKyAgICAxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMCwKICAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwyMTgsMTAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMSwzLAotICAgIDAsMCwxMTUsNDgsMCwwLDAsMCwyLDI1LDEsMTYsNCwxNSwxLDE2LAotICAgIDEsMTAsMSwzLDEsMTMsMSwxMywxLDE4LDEsMTIsMSw4LDIsMjUsCi0gICAgMSwxMiwyLDIyLDEsMTMsMSwzLDEsMTMsMSwxMyw0LDksMiwxMiwKLSAgICAxLDQsMiw3LDIsOCwyLDExNCwxNzYsMCwwLDAsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTg1LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwKLSAgICAyLDAsMTE1LDQyLDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDY2LDAsMTE2LDUsMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDQsCi0gICAgMCwxMTQsMTUwLDAsMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwKLSAgICAxMTUsMTA4LDAsMTE2LDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCi0gICAgNDIsMCwxMjQsMSwwLDExNiw2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNTAsCi0gICAgMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEyLAotICAgIDExNCwxODEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTgxLDAsMTE2LAotICAgIDUsMCwxMDAsNiwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsNywwLDgzLDQxLAotICAgIDgsMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwKLSAgICAzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsCi0gICAgMTE0LDMzLDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LAotICAgIDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCi0gICAgMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw2MSw4MCw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwKLSAgICAxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCi0gICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDksMjE4LAotICAgIDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsCi0gICAgMjE4LDksODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLAotICAgIDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSwKLSAgICA5OSwxMDQsMTAxLDk5LDEwNywxNTEsMywwLDAsMTE1LDI0LDAsMCwwLDAsMiwKLSAgICAxNSwxLDI3LDEsMTIsMSwxMiwxLDEyLDEsMTUsMSwxNSwxLDE1LDEsCi0gICAgNiwyLDIxLDEsMTksMSwxMTQsMTgxLDAsMCwwLDEyMiwxNiw3OCwxMTEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEyMiw0LDEyMywKLSAgICAzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLAotICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw0MCwxLDAsMCwxMDAsMCwwLAotICAgIDEyNSwyLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMTQsMTc1LDAsMTI0LDMsMCwxMTYsCi0gICAgMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsNTksMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTA3LDYsMCwxMTQsODUsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsMCwKLSAgICAyNSw4MywxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDEyMSwKLSAgICAxMywwLDEyNCw0LDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMCw2MSwwLDQsCi0gICAgMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc0LDAsMSwxLDEsMTE2LDYsMCwxMDAsCi0gICAgMywwLDIzLDEwNiw3LDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTI1LAotICAgIDUsMCwxMTYsOCwwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLAotICAgIDEsMTAwLDAsMCwxMzAsMiwwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsCi0gICAgMCwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyMzIsMCwxMTYsOCwwLDExNiw2LDAsMTA2LDcsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLAotICAgIDEsMCwxMTAsMTIsMCwxMTYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsCi0gICAgMCwxMjQsMywwLDExNCwzNiwxLDExNiwxLDAsMTA2LDIsMCwxMjQsMywwLAotICAgIDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTAwLDEsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI0LDcsMCwxMzEsMywwLAotICAgIDEsMTI0LDcsMCw4Myw0MSw2LDc4LDExNCwxMjEsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDEyMiwyMyw1OSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDE0MCwwLDAsMCw0MSwxMiwxMTQsMTIyLDAsMCwwLDExNCwxNCwwLDAsCi0gICAgMCwxMTQsMjEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgMTE0LDk2LDAsMCwwLDIxOCw4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCwKLSAgICA1MCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTQ5LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCwKLSAgICA3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNCwxNTIsMCwwLDAsMTE0LDEyMywwLAotICAgIDAsMCw5MCwxMywxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNCwxNDcsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCi0gICAgMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsCi0gICAgMTE3LDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE3MSwzLDAsMCwxMTUsNDIsMCwwLAotICAgIDAsMCwxLDYsMSwxOSwxLDYsMSwxNSwxLDEzLDIsMTUsMSwxMSwKLSAgICAxLDEzLDEsMywxLDEzLDEsMTMsMSwyMiwxLDI2LDEsMTUsMSwxMiwKLSAgICAxLDMwLDIsMTIsMSw2LDIsMTMsMSwyOSwxLDExNCwxODQsMCwwLDAsCi0gICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDM3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDE0MywxOCwwLDEsMTE2LDEsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgMTMxLDIsMCw4Myw4NywxMDAsMSwwLDgxLDgyLDg4LDEwMCwxLDAsODMsNDEsCi0gICAgMiwxMjIsNTQsNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLAotICAgIDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsMTE0LDU0LDAsMCwKLSAgICAwLDExNCwxODQsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDE4MywwLAorICAgIDAsMCwxMTQsMTU3LDAsMCwwLDYyLDMsMCwwLDExNSw2LDAsMCwwLAorICAgIDgsMiw0LDIsOCw0LDExNCwxNTcsMCwwLDAsOTksMywwLDAsMCwKKyAgICAwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNjQsMCwwLDAsMTI0LDEsMTA2LDAsMTAwLDEsMTI0LDIsMTAwLDIsMjQsCisgICAgMCwxMzEsMiwxMjUsMywxMTYsMSwxMjQsMywxMzEsMSwxMjQsMiwxMDcsMCwxMTQsCisgICAgMzYsMTE2LDIsMTAwLDMsMTMxLDEsMTMwLDEsMTI0LDMsMTAwLDQsMjUsMCwxMjUsCisgICAgNCwxMjQsMCwxMTQsNjAsMTAwLDUsMTA2LDMsMTI0LDQsMTI0LDAsMTMxLDIsODMsCisgICAgMCwxMjQsNCw4MywwLDQxLDYsMTIyLDUwLDgyLDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLAorICAgIDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiw5Nyw5OCwKKyAgICAxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTQsMTE3LDAsMCwwLAorICAgIDExNCwzMywwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsCisgICAgMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTksMCwwLDAsMTIyLDUsCisgICAgMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LAorICAgIDMsMTA4LDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsMzgsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMjE4LDcsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsNCw5OCwxMDUsCisgICAgMTE2LDExNSw5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LAorICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw3NSwzLDAsMCwxMTUsMTAsMCwwLDAsMCwKKyAgICAyLDE2LDEsMTIsMSw4LDEsOCwxLDExNCwxNjMsMCwwLDAsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsCisgICAgMTMxLDIsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDI0LDEwMCwwLDgzLDAsCisgICAgMTE2LDEsMTI0LDEsMTI0LDMsMTMxLDIsODMsMCw0MSwxLDc4LDQxLDIsMTE0LAorICAgIDE0NywwLDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsNiwxMDIsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsOTMsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDE5OCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsMTMsMSwxMTQsMTg1LAotICAgIDAsMCwwLDExNCwzMywwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNjYsMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywKLSAgICAwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw0LDAsMTE0LDQ2LDAsMTE2LDEsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSwwLDAsCi0gICAgMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsCi0gICAgMTA2LDUsMCwxMDcsNywwLDExNCw4NCwwLDExNiw2LDAsMTI0LDAsMCwxMTYsCi0gICAgNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTUyLDAsMTE2LAotICAgIDIsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExNiwxMSwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxLDEyNCwzLDAsODMsNDEsNSw5Nyw1MCwxLDAsMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwKLSAgICAxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LAotICAgIDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLDk3LAotICAgIDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk3LAotICAgIDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywKLSAgICAxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLDg0LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLDExNiwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAotICAgIDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzMsMCwwLDAsNzgsMTIyLDQwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwKLSAgICAxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDExNCwxNSwwLDAsMCw0MSwxMiwxMTQsMTgxLDAsMCwwLDExNCwxNzEsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCwyMSwwLDAsMCwxMTQsMTg1LDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksCi0gICAgMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNCw1OCwwLDAsMCwxMTQsNTAsMCwKLSAgICAwLDAsMTE0LDc3LDAsMCwwLDExNCw2MywwLDAsMCw0MSw1LDExNCwxNSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDg5LDAsCi0gICAgMCwwLDExNCw3NCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTg2LDAsMCwwLDIwNCwzLDAsMCwxMTUsCi0gICAgMjgsMCwwLDAsMCw5LDE2LDEsMTIsMSwxOCwxLDEwLDEsMTUsMSwKLSAgICAxMywxLDEzLDEsMTIsMSwxMCwxLDYsMSw5LDEsMTgsMSwxMCwxLAotICAgIDExNCwxODYsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDIzOSwwLDAsMCwxMTYsCi0gICAgMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyMzUsMCwxMDAsMiwKLSAgICAwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODMsMCwxMTYsMSwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCwKLSAgICA4MywwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsCi0gICAgMCwxLDEyMCwxNDksMCwxMjQsMSwwLDY4LDkzLDE0MSwwLDEyNSwzLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTAsMCwxMDAsNCwKLSAgICAwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDAsMSw4NywxMTMsOTAsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIzMCwKLSAgICAwLDEsMTI1LDUsMCwxLDEyMiw0NywwLDExNiw5LDAsMTI0LDUsMCwxMzEsCi0gICAgMSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLDAsMTE0LDIwOSwwLDEyNCw1LAotICAgIDAsMTA2LDEyLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwyMDksMCwxMTksOTAsMCwKLSAgICAxMzAsMCwwLDg3LDg5LDEwMCw1LDAsMTAwLDUsMCwxMjUsNSwwLDEyNiw1LAotICAgIDAsODgsMTEzLDkwLDAsODgsMTEzLDkwLDAsODcsMTI0LDAsMCw4Myw0MSw2LAotICAgIDEyMiwyMzgsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LAotICAgIDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwKLSAgICAxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsCi0gICAgOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCi0gICAgOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTQsMTMxLDAsMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsCi0gICAgOTUsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEzLDExNCw0LDAsMCwwLAotICAgIDExNCwxMzAsMCwwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE4OCwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LAotICAgIDEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTc4LAotICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsMTUsOTUsNjksODIsODIsOTUsNzcsCi0gICAgODMsNzEsOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDE1LDAsMCwwLDQxLDYsCi0gICAgMTE0LDg5LDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE0LAotICAgIDE4MywwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LAotICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjI4LDMsMCwwLDExNSwzNCwwLDAsCi0gICAgMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsMSwxNiwxLDEzLAotICAgIDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDQsMjEsMSwxNSwxLDMsCi0gICAgMSwyNiwxLDExNCwxOTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzIsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw2OCwwLDEyNCwwLDAsCi0gICAgMTAwLDMsMCwyNSwxMjUsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMDcsNywwLAotICAgIDExNCw2OCwwLDEyNCwxLDAsMTA2LDEsMCwxMDAsNSwwLDEzMSwxLDAsMTAwLAotICAgIDYsMCwyNSwxMjUsMSwwLDEyNCwxLDAsODMsNDEsNywxMjIsMTY3LDY3LDk3LAotICAgIDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCwKLSAgICA5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCi0gICAgMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsCi0gICAgOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTM0LDAsMCwwLDc4LDExNCwxLDAsMCwwLAotICAgIDExNCwxMzEsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsCi0gICAgMiwxMTQsNDIsMCwwLDAsMTE0LDEyMiwwLDAsMCw0MSwyLDIxOCw3LDEwMywKLSAgICAxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE0LDE2OSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsOTksOTcsMTA4LAotICAgIDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0LDQsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsMTIsMSwKLSAgICAxOSwxLDExNCwxOTYsMCwwLDAsOTksNSwwLDAsMCwwLDAsMCwwLAotICAgIDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwKLSAgICAwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw1LDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEwNyw5LDAsMTE0LDQ1LDAsMTI0LDEsMCwxMTAsMywwLDEwNSwwLAotICAgIDAsMTI1LDYsMCwxMTYsMSwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLAotICAgIDExNiwwLDAsMTI0LDAsMCwxMjQsNywwLDEyNCw0LDAsMTMxLDMsMCwxMjUsCi0gICAgNSwwLDEyNCwzLDAsMTE1LDIwNywwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwKLSAgICAwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMywwLAotICAgIDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwKLSAgICAwLDEyNCw1LDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTE2LDMsCi0gICAgMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsCi0gICAgMjUsMTMxLDEsMCwyNCwxMjUsOCwwLDExNiw0LDAsMTA2LDUsMCwxMjQsNSwKLSAgICAwLDEwNiw2LDAsMTAwLDIsMCwxMTYsMywwLDEyNCw1LDAsMTA2LDYsMCwKLSAgICAxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsMCwKLSAgICAxMTYsNywwLDEyNCw1LDAsMTI0LDMsMCwxMTYsMCwwLDEzMSwzLDAsODMsCi0gICAgMTAwLDIsMCw4Myw0MSw0LDk3LDIxNSwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwzOSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTEsOTksOTksCi0gICAgMTE3LDExNCwxMTQsMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsCi0gICAgMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAotICAgIDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksCi0gICAgMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKLSAgICAxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsCi0gICAgMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLAotICAgIDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsCi0gICAgOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LAotICAgIDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LAotICAgIDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDExNCwzMywwLDAsMCw3OCwxMTQsMTIxLDAsMCwwLDQxLDgsMTE0LAotICAgIDE4NiwwLDAsMCwxMTQsMTk2LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwKLSAgICAxMTYsMTA1LDExMSwxMTAsMTE0LDE2NywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsOSwxMTQsCi0gICAgMTUsMCwwLDAsMTE0LDE5NSwwLDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsMTE0LDE5MiwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICA5MCw4LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsOTUsMTE0LDE2OSwwLDAsMCw5MCwKLSAgICA3LDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDk1LDk1LDE5LDQsMCwwLDExNSwyNiwwLDAsMCwwLDExLDEyLDEsCi0gICAgMTUsMiwyNCwxLDEyLDEsMTgsMSw2LDMsMTIsMSwyMywxLDYsMSwKLSAgICA0LDQsMzUsMyw0MCwyLDExNCwxOTksMCwwLDAsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw0MywwLAotICAgIDExNiwyLDAsMTAwLDEsMCwxMjQsMCwwLDIzLDEzMSwxLDAsMTMwLDEsMCwKLSAgICAxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwyNSwxMTAsCi0gICAgMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiw0MSw0LDExNCwxNTAsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE0OSwwLDAsMCw0MSwyLAotICAgIDExNCwxNSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1NCw0LDAsCi0gICAgMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxMiwxLDE2LDEsMTE0LDIwMCwKLSAgICAwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsCi0gICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDc0LDEsMCwwLDEyNCwxLDAsCi0gICAgOTcsMCwwLDEyNCwwLDAsOTcsMSwwLDExNiwyLDAsMTE2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTIwLDEyMywwLDExNiwxLDAsMTA2LDMsMCwxMDYsNCwKLSAgICAwLDEzMSwwLDAsNjgsOTMsMTA2LDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsCi0gICAgMCwxMTYsNSwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMiwwLDExNCw0MCwwLAotICAgIDEyNCwzLDAsMTE2LDEsMCwxMDYsNiwwLDEwNyw2LDAsMTE0LDkxLDAsMTE2LAotICAgIDcsMCwxMjUsNSwwLDExMCwyNywwLDExNiwwLDAsMTA2LDgsMCwxMjQsMywKLSAgICAwLDEzMSwxLDAsMTE0LDQwLDAsMTE2LDksMCwxMjUsNSwwLDExMCwzLDAsCi0gICAgMTEzLDQwLDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LAotICAgIDYsMCwxMTYsMTEsMCwxMjQsNiwwLDEyNCw0LDAsMTMxLDIsMCwxLDExMywKLSAgICA0MCwwLDg3LDExNiwxLDAsMTA2LDMsMCwxMTYsMTIsMCwyNSwxMjUsNywwLAotICAgIDEyMCw3MywwLDEwMCw1LDAsNjgsOTMsNjUsMCwxMjUsOCwwLDEyNCw4LDAsCi0gICAgMTE2LDEsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDIwNiwwLDExNiwxMywwLDEyNCwKLSAgICA4LDAsMTMxLDEsMCwxMjUsOSwwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsCi0gICAgMCwxMjQsOCwwLDI1LDEyNSw5LDAsMTE2LDE0LDAsMTI0LDcsMCwxMjQsOCwKLSAgICAwLDEyNCw5LDAsMTMxLDMsMCwxLDExMywxNzAsMCw4NywxMjEsMTYsMCwxMTYsCi0gICAgMTMsMCwxMDAsMiwwLDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMTUsMCwxMDcsMTAsMCwxMTQsMjUsMSwxLDEsMSwxMDAsMywwLDEyNSwKLSAgICAxMCwwLDg5LDExMCwxLDAsODgsMTE2LDE0LDAsMTI0LDcsMCwxMDAsMiwwLAotICAgIDEyNCwxMCwwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMDAsNCwwLDEzMSwxLDAsCi0gICAgMTI1LDExLDAsMTE2LDE0LDAsMTI0LDcsMCwxMDAsNCwwLDEyNCwxMSwwLDEzMSwKLSAgICAzLDAsMSwxMDAsMywwLDgzLDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAotICAgIDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwKLSAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLAotICAgIDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwKLSAgICAxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxNDEsMCwwLDAsMTE0LDM0LDAsMCwwLDc4LAotICAgIDExNCw2MiwwLDAsMCw0MSwxLDExNCwxNDEsMCwwLDAsNDEsMTYsMTE0LDU3LAotICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDIxLDAsCi0gICAgMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3NywwLDAsMCwxMTQsNzYsCi0gICAgMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE2MCwwLAotICAgIDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDEsMCwwLAotICAgIDAsMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsCi0gICAgNDEsMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwKLSAgICA5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsMCwwLDkwLDExLDExNSwxMDEsCi0gICAgMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsNCwwLAotICAgIDAsMTE1LDUwLDAsMCwwLDAsOSw2LDEsNiwzLDEyLDEsMjgsMSwKLSAgICAxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwxLDE3LDMsCi0gICAgMTMsMSwxMywxLDE1LDEsMTUsMiwxMywxLDIwLDMsMywxLDE2LDEsCi0gICAgMTMsMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDg3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNCwwLAotICAgIDEzMSwxLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNSwwLAotICAgIDEzMSwxLDAsMSwxMDAsMSwwLDEwMCwyLDAsMTA4LDYsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsOTcsNywwLDEyNCwyLDAsMTA2LDgsMCwxMTYsMSwwLDEwNiwKLSAgICA5LDAsMTE2LDEwLDAsMjUsMTMxLDEsMCwxLDEwMCwyLDAsODMsNDEsMywKLSAgICAxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw0NiwxMTQsMzMsMCwwLDAsNzgsNDEsMTEsMTE0LDIwNCwwLDAsCi0gICAgMCwxMTQsMTQsMCwwLDAsMTE0LDE3NCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxNTAsMCwwLDAsMTE0LDE2MCwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLAotICAgIDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExOSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsMjEsMCwwLDAsMTE0LDEsMCwwLDAsNDEsCi0gICAgMywxMTQsMjAyLDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDIwNSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMjA2LDAsMCwwLDEwOCw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEzLAotICAgIDIsMTYsMSwxNiwzLDEyLDEsNiwxLDExNCwyMDYsMCwwLDAsNDEsNTEsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LAotICAgIDE2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDExNCw1MywwLDAsMCwxMTQsNTQsMCwwLDAsMTE0LDU2LDAsMCwKLSAgICAwLDExNCw2MywwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDc1LDAsMCwwLAotICAgIDExNCw4MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwKLSAgICAxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCw4NSwKLSAgICAwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsOTAsOSw5NSw4MCw3OSwKLSAgICA4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsCi0gICAgMTE0LDE0NCwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwKLSAgICAxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsODcsMCwwLDAsMTE0LDE1MCwKLSAgICAwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MSwwLAotICAgIDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE4MSwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4NCwwLDAsMCwKLSAgICAxMTQsMTg1LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsCi0gICAgMTk2LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMjA0LAotICAgIDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDk2LDAsMCwwLDYsCi0gICAgMTcsNiwyLDEyLDgsMTIsNCwxOSwyMCw2LDIsNiwzLDIyLDQsMTksCi0gICAgNjgsMTksMjEsMTksMTksMTIsMTksMTIsMTksMTIsMTEsMTgsOCwxMiwxMSwxMiwKLSAgICAxMiwxMiwxNiwxMiwzNiwxOSwyNywxOSwxMDEsMjQsMjYsOSwzLDE4LDQ1LDE4LAotICAgIDYwLDEyLDE4LDEyLDE3LDEyLDI1LDEyLDI5LDEyLDIzLDEyLDE2LDE5LDczLDE5LAotICAgIDc3LDE5LDEzLDEyLDksMTIsOSwxNSw0MCwxMiwxNyw2LDEsMTAsMiwxMiwKLSAgICAyNywxMiw2LDE4LDI0LDEyLDMyLDEyLDE1LDI0LDM1LDEyLDcsMTIsNDcsCisgICAgMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwOCwxMDEsCisgICAgMTAzLDk3LDk5LDEyMSw4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTIsCisgICAgMSw4LDEsNCwxLDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDEwLDAsMCwwLDI3LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyNDIsMCwwLDAsMTE2LDAsMTA2LDEsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDgsCisgICAgMTE0LDIyLDExNiwyLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwzLDExNSwzOCwxMTYsMywKKyAgICAxMDYsNCwxMDAsMywxMTYsNSwxMzEsMiwxLDAsMTI0LDAsMTE2LDAsMTA2LDYsCisgICAgMTA3LDYsMTI1LDQsMTIwLDE4OCwxMjQsMyw2OCwwLDkzLDE3NiwxMjUsNSwxMTYsNywKKyAgICAxMzEsMCwxNDMsNzIsMSwwLDEyMSwxMCwxMjQsNSwxMDYsOCwxMjUsNiw4NywwLAorICAgIDExMCw0Miw0LDAsMTE2LDksMTA3LDEwLDExNCwxMTgsMSwwLDEsMCwxLDAsCisgICAgMTE2LDEwLDEyNCw1LDEyNCwwLDEyNCwxLDEzMSwzLDEyNSw3LDEyNCw3LDEwMCwxLAorICAgIDEwNyw4LDExNCwxMTQsMTE5LDU0LDg5LDAsMTEwLDE0LDg4LDAsMTI0LDYsMTI0LDAsCisgICAgMTI0LDEsMTI0LDIsMTMxLDMsMTI1LDcsODcsMCwxMDAsMSw4MSwwLDgyLDAsCisgICAgODgsMCwxMjQsNywxMDAsMSwxMDcsOSwxMTQsNTQsMTI0LDQsMTIsMCwxMTQsMjI2LAorICAgIDEyNCwwLDExNiwwLDEwNiw2LDEwNyw2LDExNCwyMjYsMTE2LDAsMTA2LDYsMTI0LDAsCisgICAgMjUsMCwxMjUsOCwxMjEsMTAsMTI0LDgsMTA2LDExLDEyNSw5LDg3LDAsMTEwLDIwLAorICAgIDQsMCwxMTYsOSwxMDcsMTAsMTE0LDIwNiwxLDAsMSwwLDEsMCwxMjQsNywKKyAgICA4MywwLDg4LDAsMTI0LDksMTAwLDEsMTA3LDgsMTE0LDIyMCwxMjQsNyw4MywwLAorICAgIDEyNCw5LDgzLDAsMTEzLDU0LDEyNCw3LDgzLDAsMTEzLDU0LDg3LDAsMTAwLDEsCisgICAgODMsMCwxMDAsMSw4MywwLDQxLDQsMTIyLDIxLDcwLDEwNSwxMTAsMTAwLDMyLDk3LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwKKyAgICAxMjIsNTMsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLAorICAgIDEwNSwxMTUsMzIsMTA4LDEwNSwxMDcsMTAxLDEwOCwxMjEsMzIsMTE1LDEwNCwxMTcsMTE2LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMDAsMTExLDExOSwxMTAsMTIyLDIyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LAorICAgIDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwKKyAgICAxMiwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDcwLDAsMCwwLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAorICAgIDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4NywKKyAgICA5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNCw3OSwwLDAsMCwxMTQsMTU3LDAsMCwwLAorICAgIDExNCwxNDYsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LAorICAgIDg5LDAsMCwwLDQxLDEwLDExNCwxNSwwLDAsMCwxMTQsMTQ0LDAsMCwwLAorICAgIDExNCwxNDUsMCwwLDAsMTE0LDE2NiwwLDAsMCw5MCw5LDEwNSwxMTUsOTUsMTE0LAorICAgIDEwMSwxMDgsMTExLDk3LDEwMCwxMTQsMTY0LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LAorICAgIDgyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5MywzLDAsMCwxMTUsNTQsMCwKKyAgICAwLDAsMCwyLDYsMSw4LDIsOCwzLDQsMSwxMiw1LDEwLDEsCisgICAgMTAsMSw4LDEsMiwxLDEwLDEsMTQsMSwxMiwxLDgsMSw4LDIsCisgICAgMjIsMSw4LDIsMTYsMSwxMCwxLDIsMSwxMCwxLDE0LDQsNiwyLAorICAgIDgsMSw0LDIsNiwyLDgsMiwxMTQsMTcwLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE0MCwwLDAsMCwxMTYsMCwxMjQsMCwxMTYsMSwxMzEsMiwxMTUsCisgICAgMjgsMTE2LDIsMTAwLDEsMTA2LDMsMTE2LDQsMTI0LDAsMTMxLDEsMTMxLDEsMTMxLAorICAgIDEsMTMwLDEsMTI0LDIsMTAwLDIsMTA3LDAsMTE0LDQ0LDExNiw1LDEwMCwzLDEzMSwKKyAgICAxLDEzMCwxLDEyNCwyLDEwMCwyLDEwNyw0LDExNCwxMTQsMTE2LDAsMTI0LDEsMTE2LAorICAgIDEsMTMxLDIsMTE1LDcyLDExNiwyLDEwMCw0LDEzMSwxLDEzMCwxLDExMCw0MiwxMjQsCisgICAgMSwxMTUsODYsMTE2LDYsMTAwLDUsMTMxLDEsMTMwLDEsMTEwLDI4LDEyNCwxLDExNiwKKyAgICA3LDEwNiw4LDEwNyw3LDExNCwxMTQsMTAwLDYsMTI1LDMsMTE2LDksMTI0LDMsMTA2LAorICAgIDMsMTI0LDEsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDAsMTIsMCwxMTQsMTM2LDEyNCwKKyAgICAyLDEwMCwyLDEwNywyLDExNCwxMzYsMTE2LDUsMTAwLDcsMTMxLDEsMTMwLDEsMTAwLAorICAgIDgsODMsMCw0MSw5LDEyMiwyOCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LDExNCwKKyAgICAxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsMTEwLAorICAgIDEwMSwzNCw0NiwxMjIsMzEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsMTExLAorICAgIDExNiwzMiwxMjMsMTI1LDExNCwxOSwwLDAsMCwxMjIsMTgsMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDEyMiwzMSw5NSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LAorICAgIDEwMSwxMTYsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMjIsNTQsCisgICAgOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAorICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMCwKKyAgICAxMTEsMzIsMTA3LDExMCwxMTEsMTE5LDExMCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMjIsNjEsODAsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMiwxMDEsCisgICAgMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTIyLDE3LDY5LDEwOSwxMTIsMTE2LDEyMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxMCwyMTgsMTAsMTA1LDExNSwxMDUsCisgICAgMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsOSw4NCwxMjEsCisgICAgMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLDExNCwxMywwLDAsCisgICAgMCwxMTQsMTYwLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTQsMCwwLDAsCisgICAgMTE0LDc5LDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsCisgICAgMTExLDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwxNjIsCisgICAgMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNywxNDAsMywwLDAsMTE1LDI4LDAsMCwwLDAsCisgICAgMiwxMCwxLDE4LDEsOCwxLDgsMSw4LDEsMTAsMSwxMCwxLDQsCisgICAgMSwxMCwyLDEwLDEsNCwyLDE0LDEsMTQsMSwxMTQsMTc1LDAsMCwwLAorICAgIDEyMiwxNiw3OCwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMTAwLDMyLDEyMiw0LDEyMywzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCw4LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwyMjAsMCwKKyAgICAwLDAsMTAwLDAsMTI1LDIsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTAwLDIsCisgICAgMjUsMCwxMjUsMywxMjQsMywxMTQsMTM0LDEyNCwzLDExNiwxLDEwNiwyLDEwNyw3LAorICAgIDExNCw0MiwxMTYsMywxMjQsMSwxMjQsMywxMzEsMiwxLDAsMTI0LDAsMTE2LDEsCisgICAgMTA2LDIsMTA3LDYsMTE0LDYyLDExNiwxLDEwNiwyLDEyNCwwLDI1LDAsODMsMCwKKyAgICAxMTYsMSwxMDYsMiwxMjQsMywyNSwwLDEyNSw0LDEyMSwxMCwxMjQsNCwxMDYsNCwKKyAgICAxMjUsMiw4NywwLDExMCw1MCw0LDAsMTE2LDUsMTA3LDEwLDExNCwxMzIsMSwwLAorICAgIDEsMCwxLDAsMTE2LDYsMTAwLDMsMjMsMCwxMDYsNywxMjQsMCwxMjQsMywKKyAgICAxMzEsMiwxMjUsNSwxMTYsOCwxMjQsNSwxMjQsMCwxMDAsNCwxNDEsMiwxMDAsMCwKKyAgICAxMzAsMiw4OSwwLDExMCwyLDg4LDAsMTE2LDksMTI0LDAsMTI0LDIsMTMxLDIsCisgICAgMTI1LDYsMTI0LDYsMTAwLDAsMTA3LDgsMTE0LDE3MiwxMTYsOCwxMTYsNiwxMDYsNywKKyAgICAxMjQsMCwxMzEsMSwxMjQsMCwxMDAsNCwxNDEsMiwxMzAsMSwxMTAsOCwxMTYsMTAsCisgICAgMTI0LDYsMTMxLDEsMTI1LDcsMTI0LDMsMTE0LDIxNiwxMTYsMSwxMDYsMiwxMjQsMywKKyAgICAyNSwwLDEyNSw0LDExNiwxMSwxMjQsNCwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwKKyAgICAxMDAsNSwyNSwwLDEyNCw3LDEzMSwzLDEsMCwxMjQsNyw4MywwLDQxLDYsCisgICAgNzgsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLDAsMTIyLDIzLDU5LDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDIzMywyLDAsMCwwLAorICAgIDQxLDEyLDExNCwxMTgsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCisgICAgMCwxMTQsNTgsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsOTAsMCwwLDAsCisgICAgMjE4LDgsOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE0LDM4LDAsMCwwLDIxOCwKKyAgICAxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTQsMTcwLDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LDUsCisgICAgMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMjE4LDcsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsOTUsMTE0LDE0NCwwLDAsMCwxMTQsMTE5LDAsMCwwLDkwLDEzLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEzOSwwLDAsCisgICAgMCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLDEwOCwxMTEsOTksCisgICAgMTA3LDEwMSwxMDAsMTYzLDMsMCwwLDExNSw0MiwwLDAsMCwwLDEsNCwxLAorICAgIDE0LDEsNCwxLDEwLDEsMTAsMiwxMCwxLDEwLDEsMTAsMSwyLDEsCisgICAgMTAsMSwxNCwxLDE2LDEsMjAsMSwxMCwxLDgsMSwyMCwyLDgsMSwKKyAgICA0LDIsMTAsMSwyMiwxLDExNCwxODAsMCwwLDAsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDMwLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDE0MywxMiwxLDAsMTE2LAorICAgIDEsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw4MSwwLDgyLDAsODgsMCwxMDAsCisgICAgMSw4MywwLDQxLDIsMTIyLDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLAorICAgIDExNCw0MiwwLDAsMCwxMTQsMTgwLDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwKKyAgICAwLDExNCwxNzksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDE5MCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsCisgICAgMTAsMSwxMTQsMTgxLDAsMCwwLDExNCwxOSwwLDAsMCw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTI0LDEsMTI0LDIsMTMxLDMsCisgICAgMSwwLDEyNCwyLDEwMCwxLDEwNyw0LDExNCwzMiwxMTYsMSwxMjQsMCwxMjQsMSwKKyAgICAxMjQsMiwxMzEsMywxMjUsMCwxMTYsMiwxMDYsMywxMzEsMCwxLDAsMTI0LDAsCisgICAgMTE2LDQsMTA2LDUsMTA3LDcsMTE0LDYwLDExNiw2LDEyNCwwLDExNiw3LDEzMSwyLAorICAgIDgzLDAsMTE2LDQsMTA2LDUsMTI0LDAsMjUsMCwxMjUsMywxMjQsMywxMDAsMiwKKyAgICAxMDcsOCwxMTQsMTA4LDExNiwyLDEwNiw4LDEzMSwwLDEsMCwxMDAsMywxMDYsOSwKKyAgICAxMjQsMCwxMzEsMSwxMjUsNCwxMTYsMTAsMTI0LDQsMTI0LDAsMTAwLDQsMTQxLDIsCisgICAgMTMwLDEsMTE2LDExLDEyNCwwLDEzMSwxLDEsMCwxMjQsMyw4MywwLDQxLDUsCisgICAgOTcsNTAsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwKKyAgICAzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LAorICAgIDQ0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwKKyAgICA5NywxMDAsMTA2LDExNywxMTUsMTE2LDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsCisgICAgMTAxLDk3LDExNiwxMDEsMTE1LDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsCisgICAgMTEwLDExMSwxMDksMTA1LDExMCw5NywxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMDUsMTExLDExMCw5NywxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsCisgICAgMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiw5NSw5NSw0NiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAorICAgIDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE5LDAsMCwwLDc4LDEyMiw0MCwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsCisgICAgMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwxLDExNCwxNSwwLDAsMCw0MSwxMiwKKyAgICAxMTQsMTc1LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICAxMzcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMTgxLAorICAgIDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDExNCw0NywwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCisgICAgNTYsMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDE2MSwwLDAsMCwKKyAgICAxMTQsMTYyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4MiwKKyAgICAwLDAsMCwxOTYsMywwLDAsMTE1LDI4LDAsMCwwLDAsOSwxMiwxLAorICAgIDgsMSwxMiwxLDgsMSwxMCwxLDEwLDEsMTAsMSw4LDEsOCwxLAorICAgIDQsMSw2LDEsMTIsMSw4LDEsMTE0LDE4MiwwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwxNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTY0LDAsMCwwLDExNiwwLDEyNCwwLDEwMCwxLDEzMSwyLDExNCwKKyAgICAxNjAsMTAwLDIsMTI0LDEsMTA3LDYsMTE0LDU4LDExNiwxLDEyNCwxLDEzMSwxLDEyNSwKKyAgICAxLDEyNCwxLDEwNiwyLDEwMCwyLDEzMSwxLDEsMCwxMTYsMCwxMjQsMCwxMDAsCisgICAgMywxMzEsMiwxMTQsNTgsMTI0LDEsMTA2LDMsMTI0LDAsMTA2LDQsMTMxLDEsMSwKKyAgICAwLDEyMCwxMDAsMTI0LDEsNjgsMCw5Myw5MiwxMjUsMywxMTYsMCwxMjQsMCwxMjQsCisgICAgMywxMzEsMiwxMTUsNjQsMTAwLDQsMTA2LDUsMTI0LDAsMTA2LDYsMTI0LDMsMTMxLAorICAgIDIsMTI1LDQsMTIxLDE0LDExNiw3LDEyNCwyLDEyNCw0LDEzMSwyLDEsMCw4NywKKyAgICAwLDExMyw2NCw0LDAsMTE2LDgsMTA3LDEwLDExNCwxNTQsMSwwLDEyNSw1LDEsCisgICAgMCwxMjIsMjAsMTI0LDUsMTA2LDksMTI0LDQsMTA3LDIsMTE0LDEzNiwxMTksNjQsMTMwLAorICAgIDAsODcsMCw4OSwwLDEwMCw1LDEwMCw1LDEyNSw1LDEyNiw1LDg4LDAsMTEzLAorICAgIDY0LDg4LDAsMTEzLDY0LDg3LDAsMTI0LDAsODMsMCw0MSw2LDEyMiwyMzgsNzAsCisgICAgMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwKKyAgICAxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsOTcsOTgsMTA4LAorICAgIDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMTE1LDExNSwKKyAgICAxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzksCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDEwMCwKKyAgICAxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTI3LDAsCisgICAgMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsOTUsMTIyLDUsCisgICAgMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEwLDExNCw0LDAsMCwwLDExNCwxMjYsMCwKKyAgICAwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMDAsMTE0LDE4NCwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDEsMCwwLAorICAgIDAsMTE0LDU4LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDE1LDAsMCwwLAorICAgIDQxLDYsMTE0LDgzLDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwKKyAgICAxMTYsMTE0LDE3OSwwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjIxLDMsMCwwLDExNSwzMiwKKyAgICAwLDAsMCwwLDEwLDEwLDEsOCwxLDgsMSwxMCwxLDEwLDEsMTIsCisgICAgMSwxMCwxLDEwLDEsMTQsMSwyLDEsMTQsMSwxNiw0LDEwLDEsMiwKKyAgICAxLDI0LDEsMTE0LDE4OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMywwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxNDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTI1LDEsMTI0LDAsMTA2LDAsCisgICAgMTAwLDIsMTMxLDEsMTI1LDIsMTI0LDEsMTAwLDMsMTA3LDksMTE0LDgyLDEyNCwyLAorICAgIDEwMCwzLDEwNyw5LDExNCw3OCwxMjQsMSwxMjQsMiwxMDYsMSwxMDcsMywxMTQsNzgsCisgICAgMTE2LDIsMTA2LDMsMTAwLDQsMTI0LDEsMTU1LDIsMTAwLDUsMTI0LDIsMTA2LDEsCisgICAgMTU1LDIsMTAwLDYsMTU3LDUsMTE2LDQsMTAwLDcsMTAwLDgsMTQxLDMsMSwwLAorICAgIDEyNCwxLDgzLDAsMTI0LDIsMTAwLDMsMTA3LDksMTE0LDk2LDEyNCwyLDEwNiwxLAorICAgIDgzLDAsMTE2LDIsMTA2LDMsMTAwLDksMTE2LDQsMTAwLDcsMTAwLDgsMTQxLDMsCisgICAgMSwwLDEyNCwwLDEwMCwxMCwyNSwwLDEyNSwxLDEwMCwxMSwxMjQsMCwxMDcsNywKKyAgICAxMTQsMTQyLDEyNCwxLDEwNiw1LDEwMCwxMiwxMzEsMSwxMDAsMTMsMjUsMCwxMjUsMSwKKyAgICAxMjQsMSw4MywwLDQxLDE0LDEyMiwxNjcsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LAorICAgIDEwMSwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwMywxMTcsOTcsMTE0LDk3LDExMCwxMTYsMTAxLDEwMSwxMDAsCisgICAgMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTQsMzIsOTksMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCisgICAgMTExLDMyLDc4LDExMSwxMTAsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICAxMzAsMCwwLDAsMTE0LDg5LDAsMCwwLDc4LDEyMiwzMiw5NSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMzMsNjEsMzIsOTUsOTUsMTE1LDExMiwxMDEsCisgICAgOTksOTUsOTUsNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiw0MCwxMjIsNCwzMiwzMywKKyAgICA2MSwzMiwyNTAsMSw0MSwyMzMsMywwLDAsMCw0MSwxLDkwLDEwLDExNSwxMTYsCisgICAgOTcsOTksMTA3LDEwOCwxMDEsMTE4LDEwMSwxMDgsMTIyLDg5LDk5LDk3LDExMCwzOSwxMTYsMzIsCisgICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsOTUsOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsMzIsMTExLDExNCwKKyAgICAzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsNDQsMzIsMTAyLDk3LAorICAgIDEwOCwxMDgsMTA1LDExMCwxMDMsMzIsOTgsOTcsOTksMTA3LDMyLDExMSwxMTAsMzIsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMzIsOTcsMTEwLDEwMCwzMiw5NSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSw5NSwxMTQsMSwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxMTcsMCwKKyAgICAwLDAsMTE0LDE5LDAsMCwwLDQxLDYsMTE0LDMwLDAsMCwwLDExNCwxMTksCisgICAgMCwwLDAsMTE0LDE2NywwLDAsMCwxMTQsMTY4LDAsMCwwLDExNCwxNjksMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCw0MSwzLDIxOCw3LDEwMywxMDgsMTExLDk4LDk3LAorICAgIDEwOCwxMTUsMTE0LDE2MSwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDk5LDk3LAorICAgIDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMjUyLDMsCisgICAgMCwwLDExNSwzMCwwLDAsMCwwLDcsMTAsMSwxMCwxLDgsMSwxOCwKKyAgICAxLDIyLDIsMTAsMSw0LDEsOCwxLDYsMiw2LDIsMTAsMSw4LAorICAgIDEsOCwxLDE0LDEsMTE0LDE5MywwLDAsMCw5OSw1LDAsMCwwLDAsCisgICAgMCwwLDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNjYsMCwwLDAsMTI0LDQsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwwLDEyNCwwLAorICAgIDEzMSwxLDEyNSw1LDExMCwzNiwxMjQsMSwxMDAsMiwxMDcsOSwxMTQsMzAsMTI0LDEsCisgICAgMTEwLDIsMTA1LDAsMTI1LDYsMTE2LDEsMTI0LDYsMTMxLDEsMTI1LDcsMTE2LDAsCisgICAgMTI0LDAsMTI0LDcsMTI0LDQsMTMxLDMsMTI1LDUsMTI0LDMsMTE1LDE1MCwxMjQsNCwKKyAgICAxMDAsMSwxMDcsMiwxMTQsODQsMTE2LDAsMTI0LDAsMTA2LDIsMTAwLDMsMTMxLDEsCisgICAgMTAwLDEsMjUsMCwxMzEsMSw4MywwLDEyNCwwLDExNSw5MiwxMjQsNSw4MywwLAorICAgIDExNiwzLDEyNCwwLDEzMSwxLDExNiwzLDEyNCwwLDEwNiwyLDEwMCwzLDEzMSwxLAorICAgIDEwMCwxLDI1LDAsMTMxLDEsMjQsMCwxMjUsOCwxMTYsNCwxMDYsNSwxMjQsNSwKKyAgICAxMDYsNiwxMDAsMiwxMTYsMywxMjQsNSwxMDYsNiwxMzEsMSwxMjQsOCwyNCwwLAorICAgIDEzMywyLDI1LDAsMjUsMCw4MywwLDExMCwxMiwxMTYsNywxMjQsNSwxMjQsMywKKyAgICAxMTYsMCwxMzEsMyw4MywwLDEwMCwyLDgzLDAsNDEsNCw5NywyMTUsMSwwLAorICAgIDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LAorICAgIDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsCisgICAgMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksCisgICAgMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsCisgICAgMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSwKKyAgICA0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywKKyAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LAorICAgIDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwKKyAgICAxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwKKyAgICAxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LAorICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwKKyAgICAxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLAorICAgIDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwKKyAgICAzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LAorICAgIDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsCisgICAgMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLAorICAgIDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwKKyAgICAxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsCisgICAgMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCwKKyAgICA0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsNzgsMTE0LDExNywKKyAgICAwLDAsMCw0MSw4LDExNCwxODIsMCwwLDAsMTE0LDE5MywwLDAsMCwyMTgsCisgICAgOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNCwxNTksMCwwLDAsMTE0LAorICAgIDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTg5LAorICAgIDAsMCwwLDQxLDksMTE0LDE1LDAsMCwwLDExNCwxOTIsMCwwLDAsMjE4LAorICAgIDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwxODcsMCwwLDAsMTE0LDE2MiwwLDAsCisgICAgMCwxMTQsODMsMCwwLDAsOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LAorICAgIDExNCwxNjEsMCwwLDAsOTAsNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCw5NSwKKyAgICA5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwyMyw0LDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMCwxMSw4LDEsMTAsMiwxNiwxLDgsMSwxMiwxLDQsMywKKyAgICA4LDEsMTgsMSw0LDEsNCw0LDI2LDMsMzIsMiwxMTQsMTk2LDAsMCwKKyAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDEwNiwxLDEyNCwKKyAgICAwLDEzMSwxLDEyNSwxLDEyNCwxLDEwMCwwLDEwNyw4LDExNCwzMCwxMTYsMiwxMDAsCisgICAgMSwxMjQsMCwyMywwLDEzMSwxLDEzMCwxLDExNiwzLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsCisgICAgNCwxMTQsMTQyLDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDcwLDAsMCwwLAorICAgIDExNCwxNDEsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDgyLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsNTgsNCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLAorICAgIDEsOCwxLDEyLDEsMTE0LDE5NywwLDAsMCw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDI0NCwwLDAsMCwxMjQsMSw5NywwLDEyNCwwLDk3LDEsMTE2LDIsMTE2LDEsCisgICAgMTMxLDEsMTI1LDIsMTIwLDg2LDExNiwxLDEwNiwzLDEwNiw0LDEzMSwwLDY4LDAsCisgICAgOTMsNzIsOTIsMiwxMjUsMywxMjUsNCwxMTYsNSwxMjQsNCwxMjQsMiwxMzEsMiwKKyAgICAxMTQsMjgsMTI0LDMsMTE2LDEsMTA2LDYsMTA3LDYsMTE0LDYyLDExNiw3LDEyNSw1LAorICAgIDExMCwxOCwxMTYsMCwxMDYsOCwxMjQsMywxMzEsMSwxMTQsMjgsMTE2LDksMTI1LDUsCisgICAgMTEwLDIsMTEzLDI4LDExNiwxMCwxMjQsNCwxMjQsNSwxMzEsMiwxMjUsNiwxMTYsMTEsCisgICAgMTI0LDYsMTI0LDQsMTMxLDIsMSwwLDExMywyOCw4NywwLDExNiwxLDEwNiwzLAorICAgIDExNiwxMiwyNSwwLDEyNSw3LDEyMCw1NCwxMDAsNSw2OCwwLDkzLDQ2LDEyNSw4LAorICAgIDEyNCw4LDExNiwxLDEwNiwzLDEwNyw3LDExNCwxNDQsMTE2LDEzLDEyNCw4LDEzMSwxLAorICAgIDEyNSw5LDExMCwxMCwxMTYsMSwxMDYsMywxMjQsOCwyNSwwLDEyNSw5LDExNiwxNCwKKyAgICAxMjQsNywxMjQsOCwxMjQsOSwxMzEsMywxLDAsMTEzLDEyMCw4NywwLDEyMSwxMiwKKyAgICAxMTYsMTMsMTAwLDIsMTMxLDEsMTI1LDEwLDg3LDAsMTEwLDI0LDQsMCwxMTYsMTUsCisgICAgMTA3LDEwLDExNCwyMDYsMSwwLDEsMCwxLDAsMTAwLDMsMTI1LDEwLDg5LDAsCisgICAgMTEwLDIsODgsMCwxMTYsMTQsMTI0LDcsMTAwLDIsMTI0LDEwLDEzMSwzLDEsMCwKKyAgICAxMTYsMTMsMTAwLDQsMTMxLDEsMTI1LDExLDExNiwxNCwxMjQsNywxMDAsNCwxMjQsMTEsCisgICAgMTMxLDMsMSwwLDEwMCwzLDgzLDAsNDEsNiwxMjIsMjUwLDgzLDEwMSwxMTYsMTE3LAorICAgIDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LAorICAgIDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLAorICAgIDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsCisgICAgMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsMTA1LAorICAgIDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE2NywwLDAsMCwxMTQsMjAsMCwwLDAsCisgICAgNzgsMTE0LDU1LDAsMCwwLDQxLDEsMTE0LDE2NywwLDAsMCw0MSwxNiwxMTQsCisgICAgNDYsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwxMywwLDAsMCwxMTQsNzksCisgICAgMCwwLDAsMjE4LDUsMTA1LDExNiwxMDEsMTA5LDExNSwxMTQsMTcxLDAsMCwwLDExNCwKKyAgICA2OSwwLDAsMCwxMTQsMTQyLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsMTUyLAorICAgIDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMSwwLAorICAgIDAsMCwxMTQsMTk3LDAsMCwwLDExNCw1LDAsMCwwLDExNCw3MCwwLDAsCisgICAgMCw0MSwxMiwyMTgsMTAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LAorICAgIDExLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTUsMCwwLDAsMTE0LDgzLAorICAgIDAsMCwwLDExNCw5MywwLDAsMCwxMTQsODIsMCwwLDAsOTAsMTEsMTE1LAorICAgIDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2NSw0LAorICAgIDAsMCwxMTUsNTAsMCwwLDAsMCw5LDQsMSw0LDMsOCwxLDIwLAorICAgIDEsMTAsMSwxMCwxLDYsMSwxMCwxLDYsMiwyLDEsMTAsMSwxNCwKKyAgICAzLDEwLDEsMTAsMSwxMCwxLDEwLDIsMTAsMSwxNiwzLDIsMSwxMiwKKyAgICAxLDE0LDIsMTAsMSwxMiwzLDgsMSwxMTQsMjAxLDAsMCwwLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDY2LDAsMCwwLDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLAorICAgIDEsMCwxMTYsMSwxMDYsMiwxMDYsMywxMTYsNCwxMzEsMSwxLDAsMTE2LDEsCisgICAgMTA2LDIsMTA2LDMsMTE2LDUsMTMxLDEsMSwwLDEwMCwxLDEwMCwyLDEwOCw2LAorICAgIDEyNSwyLDEyNCwyLDk3LDcsMTI0LDIsMTA2LDgsMTE2LDEsMTA2LDksMTE2LDEwLAorICAgIDI1LDAsMTMxLDEsMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsNTAsNzMsMTEwLAorICAgIDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICAxMTQsMTksMCwwLDAsNzgsNDEsMTEsMTE0LDIwMSwwLDAsMCwxMTQsMTQsMCwKKyAgICAwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNDIsMCwwLAorICAgIDAsMTE0LDE1MiwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCwKKyAgICA5NywxMDgsMTE0LDExNSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LAorICAgIDEwOCwxMTQsNzksMCwwLDAsMTE0LDEsMCwwLDAsNDEsMywxMTQsMTk5LDAsCisgICAgMCwwLDExNCwyMDAsMCwwLDAsMTE0LDIwMiwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAzLDAsMCwwLAorICAgIDExMiw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEwLDIsMTIsMSwxMiwKKyAgICAzLDgsMSw0LDEsMTE0LDIwMywwLDAsMCw0MSwyLDc4LDc4LDQxLDEsCisgICAgNzgsNDEsMiw3OCwxMTQsMTksMCwwLDAsNDEsNTAsMTE0LDMsMCwwLDAsCisgICAgMTE0LDExNSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwKKyAgICA1MSwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDM2LDAsMCwwLDExNCwxNywKKyAgICAwLDAsMCwxMTQsMTgsMCwwLDAsMTE0LDQxLDAsMCwwLDExNCw0MiwwLAorICAgIDAsMCwxMTQsNDUsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw1OCwwLDAsCisgICAgMCwxMTQsNjgsMCwwLDAsMTE0LDc0LDAsMCwwLDExNCw3NywwLDAsMCwKKyAgICAxMTQsODQsMCwwLDAsMTE0LDk1LDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsCisgICAgMTAyLDAsMCwwLDExNCw3OCwwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwKKyAgICAxMTYsOTAsOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTI4LDAsMCwKKyAgICAwLDExNCwxMzMsMCwwLDAsMTE0LDEzNiwwLDAsMCwxMTQsOTEsMCwwLDAsCisgICAgMTE0LDgwLDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsCisgICAgODEsMCwwLDAsMTE0LDE0MiwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxNTcsCisgICAgMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwKKyAgICAwLDAsMTE0LDE3NSwwLDAsMCw5MCwxNSw5NSw2OSw4Miw4Miw5NSw3Nyw4MywKKyAgICA3MSw5NSw4MCw4Miw2OSw3MCw3Myw4OCwxMTQsMTc3LDAsMCwwLDExNCwxODAsMCwKKyAgICAwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODksMCwwLAorICAgIDAsMTE0LDE5MywwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxOTcsMCwwLDAsCisgICAgMTE0LDIwMSwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCwKKyAgICA2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSw5NCwwLDAsCisgICAgMCw0LDE3LDQsMiw4LDgsOCw3LDQsMiw0LDMsMTYsNCwxNCwKKyAgICA2OCwxNCwyMSwxNCwxOSw4LDE5LDgsMTksOCwxMSwxNCw4LDgsMTEsOCwKKyAgICAxMiw4LDE2LDgsMzYsMTQsMjcsMTQsMTAxLDE2LDI2LDYsMywxMCw0NSwxNCwKKyAgICA2MCw4LDE3LDgsMTcsOCwyNSw4LDI5LDgsMjMsOCwxNiwxNCw3MywxNCwKKyAgICA3NywxNCwxMyw4LDksOCw5LDEwLDQ3LDgsMjAsNCwxLDgsMiw4LAorICAgIDI3LDgsNiwxMCwyNSw4LDMxLDgsMjcsMTgsMzUsOCw3LDgsNDcsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCmluZGV4IDVlZTg0M2EuLmM1ZWJjNjAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAorKysgYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKQEAgLTEsNzkxICsxLDcxNyBAQAogLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjQ0LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCw5NiwwLDkwLDEsMCwxMDAsOTcsMCw5MCwyLDAsMTAxLDIsMCwxMDEsCi0gICAgMSwwLDIzLDkwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNSwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDYsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsCi0gICAgMTIsMCwxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMSwwLDkwLDEzLAotICAgIDAsMTAxLDE0LDAsMTAxLDEzLDAsMTA2LDE1LDAsMTMxLDEsMCw5MCwxNiwwLAotICAgIDEwMCwyNSwwLDEwNiwxNywwLDEwMCwyNiwwLDEwMCwyNywwLDEzMSwyLDAsMTAwLAotICAgIDI4LDAsMjMsOTAsMTgsMCwxMDEsMTksMCwxMDYsMjAsMCwxMDEsMTgsMCwxMDAsCi0gICAgMjcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDI5LDAsOTAsMjIsMCwxMDAsMzAsCi0gICAgMCw5MCwyMywwLDEwMCwzMSwwLDEwMywxLDAsOTAsMjQsMCwxMDAsMzIsMCwKLSAgICAxMDMsMSwwLDkwLDI1LDAsMTAxLDI1LDAsNCw5MCwyNiwwLDkwLDI3LDAsCi0gICAgMTAwLDMzLDAsMTAwLDM0LDAsMTAwLDMzLDAsMTAwLDM1LDAsMTAwLDM2LDAsMTMyLAotICAgIDEsMSw5MCwyOCwwLDEwMCwzNywwLDEwMCwzOCwwLDEzMiwwLDAsOTAsMjksCi0gICAgMCwxMDAsMzksMCwxMDAsNDAsMCwxMzIsMCwwLDkwLDMwLDAsMTAwLDQxLDAsCi0gICAgMTAwLDQyLDAsMTMyLDAsMCw5MCwzMSwwLDEwMCw0MywwLDEwMCw0NCwwLDEzMiwKLSAgICAwLDAsOTAsMzIsMCwxMDAsNDUsMCwxMDAsNDYsMCwxMDAsNDcsMCwxMDAsNDgsCi0gICAgMCwxMzIsMCwxLDkwLDMzLDAsMTAwLDQ5LDAsMTAwLDUwLDAsMTMyLDAsMCwKLSAgICA5MCwzNCwwLDEwMCw1MSwwLDEwMCw1MiwwLDEzMiwwLDAsOTAsMzUsMCwxMDAsCi0gICAgMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMywKLSAgICAwLDkwLDM2LDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDU1LDAsCi0gICAgMTAwLDU2LDAsMTMyLDMsMCw5MCwzNywwLDEwMCw1NywwLDEwMCw1NywwLDEwMCwKLSAgICA1OCwwLDEwMCw1OSwwLDEzMiwyLDAsOTAsMzgsMCwxMDAsNjAsMCwxMDAsNjEsCi0gICAgMCwxMzIsMCwwLDkwLDM5LDAsMTAxLDQwLDAsMTMxLDAsMCw5MCw0MSwwLAotICAgIDEwMCwzMywwLDEwMCw2MiwwLDEwMCwzMywwLDEwMCw2MywwLDEwMSw0MSwwLDEwMCwKLSAgICA2NCwwLDEwMCw2NSwwLDEzMiwxLDIsOTAsNDIsMCw3MSwxMDAsNjYsMCwxMDAsCi0gICAgNjcsMCwxMzIsMCwwLDEwMCw2NywwLDEzMSwyLDAsOTAsNDMsMCw3MSwxMDAsCi0gICAgNjgsMCwxMDAsNjksMCwxMzIsMCwwLDEwMCw2OSwwLDEzMSwyLDAsOTAsNDQsCi0gICAgMCw3MSwxMDAsNzAsMCwxMDAsNzEsMCwxMzIsMCwwLDEwMCw3MSwwLDEwMSw0NCwKLSAgICAwLDEzMSwzLDAsOTAsNDUsMCw3MSwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwKLSAgICAwLDEwMCw3MywwLDEzMSwyLDAsOTAsNDYsMCw3MSwxMDAsNzQsMCwxMDAsNzUsCi0gICAgMCwxMzIsMCwwLDEwMCw3NSwwLDEwMSw0NiwwLDEwMSw0NSwwLDEzMSw0LDAsCi0gICAgOTAsNDcsMCw3MSwxMDAsNzYsMCwxMDAsNzcsMCwxMzIsMCwwLDEwMCw3NywwLAotICAgIDEwMSw0NiwwLDEwMSw0NCwwLDEzMSw0LDAsOTAsNDgsMCwxMDMsMCwwLDkwLAotICAgIDQ5LDAsNzEsMTAwLDc4LDAsMTAwLDc5LDAsMTMyLDAsMCwxMDAsNzksMCwxMDEsCi0gICAgNDYsMCwxMDEsNDQsMCwxMzEsNCwwLDkwLDUwLDAsNzEsMTAwLDgwLDAsMTAwLAotICAgIDgxLDAsMTMyLDAsMCwxMDAsODEsMCwxMzEsMiwwLDkwLDUxLDAsNzEsMTAwLAotICAgIDgyLDAsMTAwLDgzLDAsMTMyLDAsMCwxMDAsODMsMCwxMzEsMiwwLDkwLDUyLAotICAgIDAsNzEsMTAwLDg0LDAsMTAwLDg1LDAsMTMyLDAsMCwxMDAsODUsMCwxMzEsMiwKLSAgICAwLDkwLDUzLDAsNzEsMTAwLDg2LDAsMTAwLDg3LDAsMTMyLDAsMCwxMDAsODcsCi0gICAgMCwxMzEsMiwwLDkwLDU0LDAsMTAwLDMzLDAsMTAwLDg4LDAsMTAwLDg5LDAsCi0gICAgMTMyLDEsMCw5MCw1NSwwLDEwMCw5MCwwLDEwMCw5MSwwLDEzMiwwLDAsOTAsCi0gICAgNTYsMCwxMDAsOTIsMCwxMDAsOTMsMCwxMzIsMCwwLDkwLDU3LDAsMTAwLDk0LAotICAgIDAsMTAwLDk1LDAsMTMyLDAsMCw5MCw1OCwwLDEwMCwzMywwLDgzLDQxLDk4LAotICAgIDk3LDk0LDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLAotICAgIDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsCi0gICAgNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwKLSAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAotICAgIDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsCi0gICAgMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwKLSAgICAxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwKLSAgICAxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsCi0gICAgMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLAotICAgIDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwKLSAgICAxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwxMjEsMTAzLDExOSwxMDUsMTEwLAotICAgIDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSw4OCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLAotICAgIDAsMTE0LDcyLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTE2LDQsMCwKLSAgICAxMzEsMSwwLDExNCw0NSwwLDEwMCwxLDAsMTM3LDAsMCwxMTAsNiwwLDEwMCwKLSAgICAyLDAsMTM3LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDMsMCwxMDAsNCwKLSAgICAwLDEzNCwwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsNSwwLDEwMCw0LDAsCi0gICAgMTMyLDAsMCwxMjUsMCwwLDEyNCwwLDAsODMsNDEsNiw3OCw5MCwxMiw4MCwKLSAgICA4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSwxMTUsMTIsMCwwLDAsCi0gICAgODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxOSwwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTM2LDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAotICAgIDYsMCw4Myw0MSwxLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwKLSAgICAxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDQxLDIsMjE4LDMsCi0gICAgOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCw0MSwxLAotICAgIDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDI1MCwzOCw2MCwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAotICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywKLSAgICAxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDM3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzcsOTUsMTA5LDk3LDEwNywKLSAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSwKLSAgICA5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCi0gICAgMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLAotICAgIDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCw3LDAsMCwwLDQxLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSw1LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LDExMiwxMDgsOTcsMTE2LDEwMiwKLSAgICAxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAotICAgIDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLAotICAgIDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDIxOCwzNSw5NSw2NywKLSAgICA2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSwKLSAgICA4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw5NSw4Myw4NCw4Miw5NSw3NSw2OSwKLSAgICA4OSw0MSwxLDExNCw3LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDUsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywxMDcsMTAxLAotICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwwLDEsMTgsMSwxOCwxLDksMiw2LDIsMjEsNCwKLSAgICAxMiwzLDExNCwxMywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsMSwwLDY0LDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsODMsNDEsNCwxMjIsNDIsNjcsCi0gICAgMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwKLSAgICAxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LAotICAgIDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsCi0gICAgMjU1LDEyNywzLDAsMjMzLDQsMCwwLDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwKLSAgICAxMDEsNDEsMiwyMTgsMywxMDUsMTEwLDExNiwyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsCi0gICAgMTAxLDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwyMTgsNyw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsMTksMCwwLDAsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwKLSAgICAwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsCi0gICAgMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDExNCwxNSwwLDAsCi0gICAgMCw0MSwyLDExNCwxNiwwLDAsMCwyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwxLDkwLDksMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsCi0gICAgMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw3LDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNTIsMCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwyLDExNCwyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwyNiwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKLSAgICAwLDAsMTI0LDAsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsMywxMjIsCi0gICAgMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0NiwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKLSAgICAwLDgzLDAsMCwwLDExNSwzNywwLDAsMCwxMDMsMCwwLDEyNCwwLDAsCi0gICAgOTMsMjcsMCwxMjUsMSwwLDEyNCwxLDAsMTE0LDYsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTE2LDEsMCwxMzEsMSwwLDE0NSwyLDAsMTEzLDYsMCw4MywxMTQsCi0gICAgNCwwLDAsMCw0MSwyLDIxOCw2LDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLAotICAgIDIsMjE4LDIsNDYsNDgsMjE4LDQsMTEyLDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LAotICAgIDExNiw5OSwxMTEsMTA5LDExMiw2Miw1OSwwLDAsMCwxMTUsMiwwLDAsMCw5LAotICAgIDEsMTIyLDMwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsCi0gICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLAotICAgIDYyLDQxLDIsMjE4LDgsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LAotICAgIDExMSwxMDUsMTEwLDQxLDEsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LAotICAgIDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDU3LDAsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsMiwxNSwxLDExNCwzMCwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxMzQsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MiwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxMTYsMywwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsCi0gICAgMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLDEyMCw2OSwwLDExNiwKLSAgICA0LDAsMTI0LDAsMCwxMzEsMSwwLDY4LDkzLDU1LDAsMTI1LDQsMCwxMjQsCi0gICAgNCwwLDExNiwxLDAsMTA3LDYsMCwxMTQsNjUsMCwxMjQsMCwwLDEwNiw1LAotICAgIDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDEsMSw5MiwyLDAsCi0gICAgMTI1LDEsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLAotICAgIDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LDAsMCwxMDIsMiwwLDgzLDQxLDQsCi0gICAgMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAotICAgIDQxLDQ2LDIzMywxLDAsMCwwLDkwLDgsMTA5LDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsCi0gICAgMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LDEwMSwxMTAsMTE0LDIzLDAsMCwwLDIxOCwKLSAgICAxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjcsMCwwLDAsCi0gICAgMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDEwMCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsCi0gICAgMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywxMTYsMTA0LDkwLDUsMTAyLDExNCwxMTEsMTEwLAotICAgIDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsMTA1LDEwOCwxMTQsMTgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsNjMsMCwwLDAsMTE1LAotICAgIDE2LDAsMCwwLDAsMiwxOCwxLDI0LDEsMTAsMSwxOSwxLDEyLDEsCi0gICAgMjcsMSwxNCwxLDExNCw0MCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDgzLAotICAgIDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc3LDk3LDEwMCwxMDEsMzIsOTcsMzIsMTE1LAotICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsMzIsMTA1LDExNiwzMiwxMDEsOTcsMTE1LDEwNSwKLSAgICAxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsCi0gICAgMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LDEwOSwxMDEsMTEwLDExNiwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDExNSwxMTYsCi0gICAgOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDExNSw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw0MSwyLDExNCwzLDAsMCwwLDkwLDQsMTE1LDExNiw5NywxMTYsNDEsCi0gICAgMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCi0gICAgMTE2LDc1LDAsMCwwLDExNSwyLDAsMCwwLDAsNywxMTQsNDEsMCwwLAotICAgIDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMSwxNiwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsCi0gICAgMSwwLDEwNywxMCwwLDExNCw0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCw2NCwxMjQsMSwKLSAgICAwLDEwNywyLDAsODMsNDEsMywxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsCi0gICAgNDEsMywxMTQsNDEsMCwwLDAsMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLAotICAgIDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCw5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAotICAgIDExMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywKLSAgICAxLDE2LDEsMTMsMSw5LDEsMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDI0OCwxLDAsMCwxMDAsMCw5MCwwLDEwMCw5MSwKKyAgICA5MCwxLDEwMCw5Miw5MCwyLDEwMSwyLDEwMSwxLDIzLDAsOTAsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDAsMTAsMTAwLDExLDEzMiwwLDkwLDcsMTAwLDEyLAorICAgIDEwMCwxMywxMzIsMCw5MCw4LDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsOSwxMDAsMTYsCisgICAgMTAwLDE3LDEzMiwwLDkwLDEwLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTEsMTAwLDIwLAorICAgIDEwMCwyMSwxMzIsMCw5MCwxMiwxMDAsOTMsMTAwLDIzLDEwMCwyNCwxMzIsMSw5MCwxMywKKyAgICAxMDEsMTQsMTAxLDEzLDEwNiwxNSwxMzEsMSw5MCwxNiwxMDAsMjUsMTA2LDE3LDEwMCwyNiwKKyAgICAxMDAsMjcsMTMxLDIsMTAwLDI4LDIzLDAsOTAsMTgsMTAxLDE5LDEwNiwyMCwxMDEsMTgsCisgICAgMTAwLDI3LDEzMSwyLDkwLDIxLDEwMCwyOSw5MCwyMiwxMDAsMzAsOTAsMjMsMTAwLDMxLAorICAgIDEwMywxLDkwLDI0LDEwMCwzMiwxMDMsMSw5MCwyNSwxMDEsMjUsNCwwLDkwLDI2LAorICAgIDkwLDI3LDEwMCw5NCwxMDAsMzMsMTAwLDM0LDE1NiwxLDEwMCwzNSwxMDAsMzYsMTMyLDMsCisgICAgOTAsMjgsMTAwLDM3LDEwMCwzOCwxMzIsMCw5MCwyOSwxMDAsMzksMTAwLDQwLDEzMiwwLAorICAgIDkwLDMwLDEwMCw0MSwxMDAsNDIsMTMyLDAsOTAsMzEsMTAwLDQzLDEwMCw0NCwxMzIsMCwKKyAgICA5MCwzMiwxMDAsNDUsMTAwLDQ2LDEzMiwwLDkwLDMzLDEwMCw0NywxMDAsNDgsMTMyLDAsCisgICAgOTAsMzQsMTAwLDk1LDEwMCw0OSwxMDAsNTAsMTMyLDEsOTAsMzUsMTAwLDk2LDEwMCw1MSwKKyAgICAxMDAsNTIsMTMyLDEsOTAsMzYsMTAwLDk3LDEwMCw1NCwxMDAsNTUsMTMyLDEsOTAsMzcsCisgICAgMTAwLDU2LDEwMCw1NywxMzIsMCw5MCwzOCwxMDEsMzksMTMxLDAsOTAsNDAsMTAwLDk4LAorICAgIDEwMCwzMywxMDEsNDAsMTAwLDU4LDE1NiwyLDEwMCw1OSwxMDAsNjAsMTMyLDMsOTAsNDEsCisgICAgNzEsMCwxMDAsNjEsMTAwLDYyLDEzMiwwLDEwMCw2MiwxMzEsMiw5MCw0Miw3MSwwLAorICAgIDEwMCw2MywxMDAsNjQsMTMyLDAsMTAwLDY0LDEzMSwyLDkwLDQzLDcxLDAsMTAwLDY1LAorICAgIDEwMCw2NiwxMzIsMCwxMDAsNjYsMTAxLDQzLDEzMSwzLDkwLDQ0LDcxLDAsMTAwLDY3LAorICAgIDEwMCw2OCwxMzIsMCwxMDAsNjgsMTMxLDIsOTAsNDUsNzEsMCwxMDAsNjksMTAwLDcwLAorICAgIDEzMiwwLDEwMCw3MCwxMDEsNDUsMTAxLDQ0LDEzMSw0LDkwLDQ2LDcxLDAsMTAwLDcxLAorICAgIDEwMCw3MiwxMzIsMCwxMDAsNzIsMTAxLDQ1LDEwMSw0MywxMzEsNCw5MCw0NywxMDMsMCwKKyAgICA5MCw0OCw3MSwwLDEwMCw3MywxMDAsNzQsMTMyLDAsMTAwLDc0LDEwMSw0NSwxMDEsNDMsCisgICAgMTMxLDQsOTAsNDksNzEsMCwxMDAsNzUsMTAwLDc2LDEzMiwwLDEwMCw3NiwxMzEsMiwKKyAgICA5MCw1MCw3MSwwLDEwMCw3NywxMDAsNzgsMTMyLDAsMTAwLDc4LDEzMSwyLDkwLDUxLAorICAgIDcxLDAsMTAwLDc5LDEwMCw4MCwxMzIsMCwxMDAsODAsMTMxLDIsOTAsNTIsNzEsMCwKKyAgICAxMDAsODEsMTAwLDgyLDEzMiwwLDEwMCw4MiwxMzEsMiw5MCw1MywxMDAsOTksMTAwLDgzLAorICAgIDEwMCw4NCwxMzIsMSw5MCw1NCwxMDAsODUsMTAwLDg2LDEzMiwwLDkwLDU1LDEwMCw4NywKKyAgICAxMDAsODgsMTMyLDAsOTAsNTYsMTAwLDg5LDEwMCw5MCwxMzIsMCw5MCw1NywxMDAsMzMsCisgICAgODMsMCw0MSwxMDAsOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwKKyAgICAxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwKKyAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsCisgICAgMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiwKKyAgICA3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwKKyAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwKKyAgICAxMDMsMTE5LDEwNSwxMTAsMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDYwLDAsMCwwLDExNiwwLDEwNiwxLDEwNiwyLDExNiwzLDEzMSwxLAorICAgIDExNCw0OCwxMTYsMCwxMDYsMSwxMDYsMiwxMTYsNCwxMzEsMSwxMTQsMzAsMTAwLDEsCisgICAgMTM3LDAsMTEwLDQsMTAwLDIsMTM3LDAsMTM1LDAsMTAyLDEsMTAwLDMsMTAwLDQsCisgICAgMTMyLDgsMTI1LDAsMTEwLDgsMTAwLDUsMTAwLDQsMTMyLDAsMTI1LDAsMTI0LDAsCisgICAgODMsMCw0MSw2LDc4LDkwLDEyLDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLAorICAgIDY5LDc5LDc1LDExNSwxMiwwLDAsMCw4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSwKKyAgICA4Myw2OSw3OSw3NSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMCwwLDAsMCwxMzYsMCwKKyAgICAxMTYsMCwxMDYsMSwxMDcsNiw4MywwLDQxLDEsMTIyLDUzLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LAorICAgIDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsCisgICAgMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsCisgICAgNDYsNDEsMiwyMTgsMyw5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsCisgICAgMTEwLDE2OSwwLDQxLDEsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMjUwLAorICAgIDM4LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAorICAgIDk5LDk3LDExNSwxMDEsMzcsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKKyAgICAzNyw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAorICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsCisgICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsCisgICAgMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDcsMCwwLDAsNDEsMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwyLDQxLDUsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsCisgICAgMTEyLDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LAorICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCisgICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCisgICAgODMsMjE4LDM1LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLAorICAgIDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDgzLAorICAgIDg0LDgyLDk1LDc1LDY5LDg5LDQxLDEsMTE0LDcsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsCisgICAgOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsCisgICAgMzAsMCwwLDAsMTE1LDE0LDAsMCwwLDAsMSwxMiwxLDEyLDEsNiwKKyAgICAyLDQsMiwxNCw0LDgsMywxMTQsMTMsMCwwLDAsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSwyLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LAotICAgIDExNSwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MSwxLDExNCw0NSwwLAotICAgIDAsMCw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTQsMCwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDExNCw0NiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMSwwLDAsMCwKLSAgICAxMjQsMCwwLDExNSwxOCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwKLSAgICAwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwKLSAgICAyLDEyMiwzMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCwKLSAgICA0NiwxMDUsMCw2NCwwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsCi0gICAgMTAxLDExNiw5OSwxMTksMTAwLDExNCw0NSwwLDAsMCw0MSwxLDExNCwzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5OSwwLDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDIsNiwxLDEyLDEsMTE0LDQ4LDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwKLSAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMzEsMiwwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLAotICAgIDAsMTE2LDIsMCwxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwKLSAgICAwLDEwNiw2LDAsNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LAotICAgIDQsMCwxMjEsNjEsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywKLSAgICAwLDEzMSwyLDAsMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEsODcsMTAwLDQsMCw4MSw4Miw4OCwxMTYsMiwKLSAgICAwLDEwNiwxMCwwLDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLAotICAgIDU5LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTg4LDAsMSwxLDEsMTIxLAotICAgIDE3LDAsMTE2LDIsMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywKLSAgICAxMTAsMTgsMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODAsMCwxLDEsMSwKLSAgICA4OSwxMTAsMSwwLDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLAotICAgIDgzLDQxLDUsMTIyLDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwKLSAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwKLSAgICAxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLAotICAgIDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLAotICAgIDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwKLSAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsCi0gICAgMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwKLSAgICAxLDAsMCw5MCwyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksCi0gICAgOTcsMTE2LDIxOCwyLDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwKLSAgICAxMTAsOTAsNiw3OSw5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LAotICAgIDY1LDg0LDkwLDgsNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LAotICAgIDExMSwyMTgsNiw3MCwxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLAotICAgIDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQyLDAsMCwwLDkwLDYsCi0gICAgMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsNDEsNiwxMTQsMzcsMCwwLDAsMjE4LDQsMTAwLAotICAgIDk3LDExNiw5NywxMTQsNDQsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCi0gICAgMTA5LDExMiw5MCwyLDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LAotICAgIDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwxMDYsMCwwLDAsMTE1LDI2LAotICAgIDAsMCwwLDAsNSwyNCwxLDksMSwzMywxLDMsMywyMSwxLDIwLAotICAgIDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLDEsNSwxLDExNCw1NywwLAotICAgIDAsMCwxMDUsMjMsMTMsMCwwLDIzMywyLDAsMCwwLDExNCwxNSwwLDAsCi0gICAgMCwxMTUsMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsOTUsMTIyLDQsMTExLDExMiwxMTYsNDUsMTIyLDMsNDYsMTEyLDEyMSwKLSAgICAxMjIsNCw0NiwxMTIsMTIxLDk5LDc4LDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCisgICAgMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTAwLDEsNjQsMCwKKyAgICAxMDYsMSwxMDAsMiwxMDAsMywxMzEsMiw4MywwLDQxLDQsMTIyLDQyLDY3LDExMSwKKyAgICAxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LAorICAgIDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwKKyAgICAxMjcsMywwLDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0NywwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEwMCwxLAorICAgIDEzMSwyLDgzLDAsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsCisgICAgNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwKKyAgICAxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsCisgICAgMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDE1LDAsMCwwLDQxLDIsMTE0LDE2LAorICAgIDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLAorICAgIDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE0LDk1LAorICAgIDEwOCwxMTEsMTEwLDEwMyw1MiwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LAorICAgIDIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDIwLDAsMCwwLDExNiwwLAorICAgIDEwNiwxLDEwMCwxLDEwMCwyLDEzMiwwLDEyNCwwLDY4LDAsMTMxLDEsMTMxLDEsCisgICAgODMsMCw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwKKyAgICAxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsODMsMCwwLDAsMTE1LDI2LDAsMCwwLDEwMywKKyAgICAwLDEyNCwwLDkzLDE4LDEyNSwxLDEyNCwxLDExNCw0LDEyNCwxLDEwNiwwLDExNiwKKyAgICAxLDEzMSwxLDE0NSwyLDExMyw0LDgzLDAsMTE0LDQsMCwwLDAsNDEsMiwKKyAgICAyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LDQ4LDIxOCwKKyAgICA0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsCisgICAgNTksMCwwLDAsMTE1LDIsMCwwLDAsNiwxLDEyMiwzMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCw4LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwxLDIxOCwKKyAgICAxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1NywwLDAsMCwxMTUsNCwwLDAsMCwwLAorICAgIDIsMTAsMSwxMTQsMzAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsOTYsMCwKKyAgICAwLDAsMTE2LDAsMTE2LDEsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDM2LDEyNCwwLAorICAgIDEwNiwyLDExNiwzLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LDEsCisgICAgMTI0LDMsMTAyLDIsODMsMCwxMjAsNTAsMTE2LDQsMTI0LDAsMTMxLDEsNjgsMCwKKyAgICA5MywzOCwxMjUsNCwxMjQsNCwxMTYsMSwxMDcsNiwxMTQsNDYsMTI0LDAsMTA2LDUsCisgICAgMTI0LDQsMTAwLDEsMTAwLDIsMTQxLDIsOTIsMiwxMjUsMSwxMjUsMywxMjQsMSwKKyAgICAxMjQsMywxMDIsMiw4MywwLDExMyw0Niw4NywwLDEwMCwzLDEyNCwwLDEwMiwyLAorICAgIDgzLDAsNDEsNCwxMjIsMzIsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsCisgICAgMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsMCwwLDAsNDEsMSw5MCw4LDEwOSwKKyAgICA5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwxMDEsMTEwLAorICAgIDExNCwyMywwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE0LDI3LDAsMCwwLDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsCisgICAgMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LDEwNSwxMDgsCisgICAgMTE0LDE4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsCisgICAgMTE2LDYzLDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTIsMSwxNiwxLAorICAgIDgsMSwxNCwxLDgsMSwxOCwxLDEyLDEsMTE0LDQwLDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDgzLDAsNDEsMSwxMjIsMTI2LDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiwKKyAgICA5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSwKKyAgICA5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCisgICAgMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDQxLDIsMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LAorICAgIDk3LDExNiw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExNiw5NywxMTYsNzUsMCwwLDAsMTE1LDIsMCwwLDAsMCw3LDExNCwKKyAgICA0MSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNDgsMCwwLDAsMTIxLDEyLAorICAgIDExNiwwLDEyNCwwLDEzMSwxLDEyNSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwKKyAgICAxMDcsMTAsMTE0LDMyLDEsMCwxLDAsMSwwLDEwMCwxLDgzLDAsODgsMCwKKyAgICAxMjQsMiwxMDYsMiwxMDAsMiw2NCwwLDEyNCwxLDEwNywyLDgzLDAsNDEsMywKKyAgICAxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsCisgICAgMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCwKKyAgICA5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwwLDIsMiwxLDEyLDEsMTQsMSw2LDEsCisgICAgMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzEsODIsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLAorICAgIDAsNDEsMSwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk0LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiwxMTQsNDYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMTI0LDAsMTE1LDEyLDExNiwwLDEwNiwxLDEzMSwwLAorICAgIDEyNSwwLDExNiwyLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzAsCisgICAgODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsCisgICAgNjQsMCwwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLDEwMSwxMTYsOTksCisgICAgMTE5LDEwMCwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTksMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwyLDQsMSw4LDEsMTE0LDQ4LDAsMCwwLDIzMywxODIsCisgICAgMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsCisgICAgMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE2MiwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMTYsMSwxMjQsMCwxMzEsMSwxMzEsMiwxMjUsMywxMTYsMiwxMDYsCisgICAgMywxMjQsMywxMTYsMiwxMDYsNCwxMTYsMiwxMDYsNSw2NiwwLDExNiwyLDEwNiwKKyAgICA2LDY2LDAsMTI0LDIsMTAwLDIsNjQsMCwxMzEsMywxMjUsNCwxMjEsNTAsMTE2LAorICAgIDcsMTA2LDgsMTI0LDQsMTAwLDMsMTMxLDIsMTQzLDE2LDEyNSw1LDEyNCw1LDEwNiwKKyAgICA5LDEyNCwxLDEzMSwxLDEsMCw4NywwLDEwMCw0LDgxLDAsODIsMCw4OCwKKyAgICAwLDExNiwyLDEwNiwxMCwxMjQsMywxMjQsMCwxMzEsMiwxLDAsODcsMCwxMTAsCisgICAgNTgsNCwwLDExNiwxMSwxMDcsMTAsMTE0LDE1NiwxLDAsMSwwLDEsMCwxMjEsCisgICAgMTQsMTE2LDIsMTA2LDEyLDEyNCwzLDEzMSwxLDEsMCw4NywwLDExMCwyMCw0LAorICAgIDAsMTE2LDExLDEwNywxMCwxMTQsMTQ4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDIsODgsMCwxMzAsMCw4OSwwLDExMCwyLDg4LDAsMTAwLDQsODMsMCw0MSwKKyAgICA1LDEyMiwxNjIsNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLAorICAgIDY2LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsCisgICAgOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LAorICAgIDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsCisgICAgMTE0LDExNCwxMDEsMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywKKyAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwKKyAgICAxMTIsMTE2LDEwMSwxMDAsNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsOTAsMiwxMTksOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwKKyAgICAyMTgsMiwxMDUsMTAwLDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsMTEwLDkwLAorICAgIDYsNzksOTUsNjksODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwKKyAgICA5MCw4LDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwxMTEsMjE4LAorICAgIDYsNzAsMTA1LDEwOCwxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwyMTgsNywKKyAgICAxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDExNCw0MiwwLDAsMCw5MCw2LDExNywxMTAsCisgICAgMTA4LDEwNSwxMTAsMTA3LDQxLDYsMTE0LDM3LDAsMCwwLDIxOCw0LDEwMCw5NywxMTYsCisgICAgOTcsMTE0LDQ0LDAsMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LDEwOSwxMTIsCisgICAgOTAsMiwxMDIsMTAwLDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTA2LDAsMCwwLDExNSwyNiwwLDAsCisgICAgMCwwLDUsMTYsMSw2LDEsMjYsMSwyLDMsMTQsMSwyMCwxLDE2LAorICAgIDEsMTQsMSwyLDEsMTQsMSwxNCwxLDYsMSwxMTQsNTgsMCwwLDAsCisgICAgMTA1LDUwLDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsCisgICAgNDYsMTEyLDEyMSw5OSw3OCw0MSwxLDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCiAgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMSwwLDAsMCwxMSwwLAotICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSw4NywxLDAsMCwxMjQsCi0gICAgMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNzYsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMTYsMiwwLDEzMSwyLDAsMSwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsNTgsMCwxMDAsMywwLDEyNSwzLDAsMTE2LDMsMCwKLSAgICAxMjQsMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDExNCw3MCwwLDEwMCwKLSAgICA0LDAsMTEwLDMsMCwxMDAsNSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMjQsNSwwLAotICAgIDEwNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNiwwLDEyNSwKLSAgICA3LDAsMTI1LDgsMCwxMTYsNiwwLDEwNiw3LDAsMTA2LDgsMCwxMjUsOSwKLSAgICAwLDEyNCw5LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxNTQsMCwxMTYsOSwwLAotICAgIDEwMCw3LDAsMTMxLDEsMCwxMzAsMSwwLDEwMCw0LDAsMTA2LDEwLDAsMTI0LAotICAgIDYsMCwxMTQsMTcyLDAsMTI0LDYsMCwxMTAsMywwLDEyNCw4LDAsMTI0LDcsCi0gICAgMCwxMjQsOSwwLDEwMywzLDAsMTMxLDEsMCwxMjUsMTAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTA3LDgsMCwxMTQsMjQxLDAsMTE2LDYsMCwxMDYsMTEsMCwxMDYsCi0gICAgMTIsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDIyOSwwLDEwMCw0LDAsMTI1LDIsCi0gICAgMCwxMTAsMTIsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwxMiwwLDEyNSwyLDAsCi0gICAgMTE2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEwNywzLDAsMTE0LDYzLDEsMTI0LDIsMCwxMDYsMTQsMCwxMzEsMCwKLSAgICAwLDExNSw0MiwxLDExNiwxNSwwLDEwMCw5LDAsMTA2LDE2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsMTAsMCwxMDYsMTYsMCwxMjQsCi0gICAgMTAsMCwxMTYsMTcsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDEwLDAsMTE2LDE4LAotICAgIDAsMTI0LDQsMCwxMTYsMTksMCwxMjQsMTAsMCwxMTYsMjAsMCwxMDAsOCwwLAotICAgIDI1LDIzLDEzMSwzLDAsODMsNDEsMTEsOTcsMjU0LDIsMCwwLDcxLDEwNSwxMTgsCi0gICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwKLSAgICAxMTUsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLAotICAgIDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCi0gICAgMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLAotICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExMiw5NywKLSAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTEwLDExNiwxMTQsMTExLDEwOCwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMDEsMTE1LDExNywxMDksMTAxLDEwMCwzMiwxMTEsMTEyLAotICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsCi0gICAgMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LAotICAgIDExNCwxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTYsOTcsMTA3LDEwMSwxMTAsCi0gICAgMzIsOTcsMTEwLDEwMCwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LAotICAgIDMyLDQwLDEwMSwxMDgsMTE1LDEwMSwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLAotICAgIDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAotICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSwKLSAgICA0NCwxMCwzMiwzMiwzMiwzMiw5NywzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMTgsOTcsMTA4LAotICAgIDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsOTcsMTA5LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCi0gICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLAotICAgIDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsOTcsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLAotICAgIDExMCwxMTYsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLAotICAgIDM5LDQ5LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwKLSAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDcwLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAotICAgIDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNTksMzIsMTE3LDExNSwxMDEsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTEwLDExNSwKLSAgICAxMTYsMTAxLDk3LDEwMCwxMjIsNTAsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTExLDExNCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsCi0gICAgMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMTQsMzIsMCwwLDAsMTE0LDMxLDAsCi0gICAgMCwwLDIxOCwxLDQ2LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMjMzLDAsMCwwLDAsCi0gICAgMTIyLDI0LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LAotICAgIDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMTIyLDcsMTIzLDEyNSw0NiwxMjMsCi0gICAgMTI1LDEyMywxMjUsNDEsMjEsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAotICAgIDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMjE4LDksODQsMTIxLDExMiwxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MCwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LAotICAgIDgsMCwwLDAsMjE4LDE0LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwyMTgsOSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMjE4LAotICAgIDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsMjgsMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LAotICAgIDIxOCw4LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LAotICAgIDcsMTA1LDExNSw5NywxMDgsMTEwLDExNywxMDksMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsNDksMCwwLDAsMjE4LDQsOTUsNzksODAsODQsMTE0LAotICAgIDMwLDAsMCwwLDIxOCw4LDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDIxOCwxNywKLSAgICA2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKLSAgICA4Myw0MSwxMSwxMTQsMzcsMCwwLDAsOTAsMTQsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LAotICAgIDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMTE0LDU5LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIxOCw0LDEwNCwxMDEsOTcsMTAwLDExNCwzOSwwLDAsCi0gICAgMCw5MCw0LDk4LDk3LDExNSwxMDEsMjE4LDMsMTE1LDEwMSwxMTIsMjE4LDQsMTE0LDEwMSwKLSAgICAxMTUsMTE2LDkwLDMsMTE2LDk3LDEwMyw5MCwxNSw5NywxMDgsMTA5LDExMSwxMTUsMTE2LDk1LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsCi0gICAgMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNTQsMCwwLDAsMTE1LDQ2LAotICAgIDAsMCwwLDAsMTgsMTIsMSw5LDEsNywxLDEyLDEsNiwxLDEyLAotICAgIDEsMTgsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDEyLDEsMzYsMSwxMiwKLSAgICAxLDE4LDEsOSwyLDEyLDEsMTIsMSwxMiwxLDEyLDEsMjEsMSwyMSwKLSAgICAxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsOCwKLSAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw2MiwxLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAotICAgIDMwLDAsMTE2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLAotICAgIDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwKLSAgICAzLDAsMTI0LDMsMCwxMTYsNSwwLDEwNywzLDAsMTE0LDEwMiwwLDExNiw2LAotICAgIDAsMTAwLDMsMCwxMDYsNywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMiwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiw4LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMTEsMCwxMDcsNywwLDExNCwxNTMsCi0gICAgMCwxMTYsNiwwLDEwMCw3LDAsMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExMCwxMjUsMCwxMjQsNCwwLDEwMCw2LDAsMTA3LAotICAgIDIsMCwxMTQsMjIsMSwxMjQsMiwwLDEwNiw5LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMSwyLDAsMTAwLDEyLDAsMjUsMTI1LDUsMCwxMjQsNSwwLDEwNiwxMCwKLSAgICAwLDExNiwxMSwwLDEzMSwxLDAsMTE1LDIyMywwLDExNiw2LDAsMTAwLDgsMCwKLSAgICAxMDYsNywwLDExNiwxMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwKLSAgICA1LDAsMTE2LDEyLDAsMTE2LDExLDAsMTMxLDEsMCwxMDAsMSwwLDEzMywyLAotICAgIDAsMjUsMTI1LDYsMCwxMjQsNiwwLDEwNiwxMywwLDEzMSwwLDAsMTE1LDIyLAotICAgIDEsMTE2LDYsMCwxMDAsOSwwLDEwNiw3LDAsMTI0LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiwxNCwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMDAsMTAsMCwyNSwxMjUsNywwLDExNiwxNSwwLDEyNCwxLDAsMTI0LAotICAgIDcsMCwxMTYsMTYsMCwxMDAsMTAsMCwyNSwyMywxMzEsMiwwLDgzLDQxLDEzLAotICAgIDk3LDExMCwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsNTksCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTAyLDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksCi0gICAgODAsMzIsNTEsNDksNTIsNTUsNDcsNTIsNTYsNTYsMzIsMTAyLDExMSwxMTQsMTA5LDk3LAotICAgIDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNSwKLSAgICAxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDMyLDczLDEwMiwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCi0gICAgMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LAotICAgIDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiwKLSAgICA5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwxMjIsMzcsMTIzLDEyNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMTEsMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsCi0gICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMjMzLDMsMCwwLDAsCi0gICAgMTIyLDMzLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsCi0gICAgNTAsMzIsMTExLDExNCwzMiw1MSwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMjIsNTcsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwKLSAgICAxMTYsOTcsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDUyLAotICAgIDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDExMCwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTgsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDYxLDAsMCwwLDYyLDIsMCwwLDAsMTE0LDU4LAotICAgIDAsMCwwLDExNCw4MiwwLDAsMCwyMzMsMjU0LDI1NSwyNTUsMjU1LDQxLDE3LDExNCwKLSAgICA4LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDY4LAotICAgIDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDExNCw0OSwwLDAsMCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDM2LAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDExNCw3MiwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNCwzMCwwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsCi0gICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsOCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsCi0gICAgOSwxMDAsMTExLDExNiw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDU5LDAsMCwwLDkwLAotICAgIDksMTExLDExMiwxMTYsOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLAotICAgIDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw0MiwxLDAsMCwxMTUsCi0gICAgNDQsMCwwLDAsMCw5LDE4LDEsMTIsMSwxOCwxLDE4LDEsMTIsMSwKLSAgICA5LDEsMTUsMSwxNSwxLDEyLDEsOSwxLDE1LDEsMTIsMSwyMiwxLAotICAgIDE1LDEsOSwxLDEyLDEsMjIsMSwxMiwxLDksMSwxMiwxLDE5LDEsCi0gICAgMTE0LDg3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwKLSAgICAwLDEwMCwyLDAsODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsCi0gICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsCi0gICAgMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwKLSAgICAxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwKLSAgICAxMDAsOSwwLDEzMywyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA2LDAsMTI0LDQsMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwKLSAgICAwLDAsODMsNDEsMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsCi0gICAgMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LAotICAgIDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwKLSAgICAxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwKLSAgICAzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLAotICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE0LDYxLDAsMCwwLDc4LDExNCw2MCwwLDAsMCwxMTQsODIsCi0gICAgMCwwLDAsMTE0LDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsCi0gICAgMjU1LDIzMywyNTUsMjU1LDI1NSwyNTUsMTE0LDg5LDAsMCwwLDQxLDcsMTE0LDMzLDAsCi0gICAgMCwwLDExNCwzNCwwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4NywKLSAgICAwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCw0MSw1LDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCwxMTQsODAsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsMTAyLDEwNSwxMDgsMTAxLDc1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsCi0gICAgMTgsMSw0LDEsMjQsMSwzNSwxLDQsMSwzLDEsMTYsMSwxOSwxLAotICAgIDIxLDEsMTE0LDkzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw5MiwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMTYsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMTQsNTksMCwxMjEsMTQsMCwxMTYsMywwLDEyNCwwLDAsMTMxLAotICAgIDEsMCw4Myw4NywxMTMsODgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU1LAotICAgIDAsMSwxLDEsODksMTEzLDg4LDAsODgsMTEwLDI5LDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTE2LDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDg0LAotICAgIDAsMTI0LDAsMCw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywKLSAgICAxMTIsMTA4LDEwMSwxMTQsODYsMCwwLDAsMTE0LDgxLDAsMCwwLDExNCw2OCwwLAotICAgIDAsMCwxMTQsNzYsMCwwLDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk0LAotICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMjEsMSwzLDEsMTQsMSwKLSAgICAxMywxLDgsMSwyMSwxLDQsMiwxMTQsOTcsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDYwLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEwNiwxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwxMjUsMSwwLAotICAgIDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwxLDAsMTI0LAotICAgIDEsMCw4Myw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAorICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwwLDAsMTI0LAorICAgIDEsMTAwLDEsMTA3LDksMTE0LDUyLDExNiwwLDEwNiwxLDEwMCwyLDExNiwyLDEzMSwKKyAgICAyLDEsMCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsNDAsMTAwLDMsMTI1LDMsMTE2LAorICAgIDMsMTI0LDMsMTMxLDEsMTMwLDEsMTI0LDEsMTE0LDQ4LDEwMCw0LDExMCwyLDEwMCwKKyAgICA1LDEyNSwyLDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEyNSwwLDExNiw2LDEyNCwKKyAgICAwLDEzMSwxLDkyLDIsMTI1LDQsMTI1LDUsMTI0LDUsMTA2LDcsMTAwLDYsMTMxLAorICAgIDEsOTIsMywxMjUsNiwxMjUsNywxMjUsOCwxMTYsOCwxMDYsOSwxMDYsMTAsMTI1LAorICAgIDksMTI0LDksMTAwLDEsMTA3LDgsMTE0LDExNCwxMTYsMTEsMTAwLDcsMTMxLDEsMTMwLAorICAgIDEsMTAwLDQsMTA2LDEyLDEyNCw2LDExNCwxMjYsMTI0LDYsMTEwLDIsMTI0LDgsMTI0LAorICAgIDcsMTI0LDksMTAzLDMsMTMxLDEsMTI1LDEwLDEyNCwyLDEwMCwxLDEwNyw4LDExNCwKKyAgICAxNzIsMTE2LDgsMTA2LDEzLDEwNiwxNCwxMDAsOCwxMDcsMiwxMTQsMTY0LDEwMCw0LDEyNSwKKyAgICAyLDExMCw4LDExNiw4LDEwNiwxMywxMDYsMTQsMTI1LDIsMTE2LDE1LDEyNCwyLDEzMSwKKyAgICAxLDEyNSwyLDEyNCwyLDEwMCw0LDEwNywzLDExNCwyMjQsMTI0LDIsMTA2LDE2LDEzMSwKKyAgICAwLDExNSwyMTAsMTE2LDE3LDEwMCw5LDEwNiwxOCwxMjQsMiwxMzEsMSwxMzEsMSwxMzAsCisgICAgMSwxMDAsMTAsMTA2LDE4LDEyNCwxMCwxMTYsMTksMTI0LDIsMTMxLDMsMTI1LDEwLDExNiwKKyAgICAyMCwxMjQsNCwxMTYsMjEsMTI0LDEwLDExNiwyMiwxMDAsOCwyNSwwLDIzLDAsMTMxLAorICAgIDMsODMsMCw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLAorICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwKKyAgICAxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwKKyAgICAxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLDk5LAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDExMSwxMTIsMTE2LAorICAgIDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LDExNCw5NywxMDksCisgICAgMTAxLDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTEsMTAyLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExNCwxMDMsMTE3LAorICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywxMTAsCisgICAgMTAwLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsCisgICAgMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsNDAsMTAxLAorICAgIDEwOCwxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwKKyAgICAxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsCisgICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDEwLDMyLAorICAgIDMyLDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LDExNSwzMiwxMTUsCisgICAgMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LAorICAgIDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMDksMTEyLAorICAgIDExNiwxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNCwKKyAgICAxMDUsMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTYsMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMzksNDksMzksCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LAorICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCisgICAgMTAwLDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDExNCwzMiwwLDAsMCwxMTQsMzEsMCwwLDAsMjE4LAorICAgIDEsNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwxMjIsMjQsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTEyLDEwNCw5NywKKyAgICAxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywxMjUsMTIzLDEyNSwKKyAgICA0MSwyMywyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LAorICAgIDk3LDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDMsMCwwLDAsMjE4LDYsMTAyLDExNSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNDAsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxNCwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMjE4LDksCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDI4LAorICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw3LDEwNSwxMTUsOTcsMTA4LDExMCwKKyAgICAxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLAorICAgIDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwzMCwwLDAsMCwyMTgsOCwKKyAgICA5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsNjYsODksODQsNjksNjcsNzksCisgICAgNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMTEsMTE0LDM3LDAsCisgICAgMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwKKyAgICAxMDAsMTAxLDExNCw2MCwwLDAsMCwyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKKyAgICAyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzksMCwwLDAsOTAsNCw5OCw5NywxMTUsCisgICAgMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLDExNiw5NywKKyAgICAxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNiwxLDAsMCwxMTUsNDgsMCwwLDAsMCwxOCw4LAorICAgIDEsNiwxLDYsMSw4LDEsNCwxLDgsMSwxMiwxLDEwLDEsMTIsCisgICAgMSwxNiwxLDgsMSw4LDEsOCwxLDI0LDEsOCwxLDEyLDEsNiwKKyAgICAyLDgsMSw4LDEsOCwxLDgsMSwxNCwxLDE0LDEsMTE0LDgzLDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIzMCwwLDAsMCwxMTYsMCwxMDYsMSwKKyAgICAxMDYsMiwxMDAsMSwxMDcsOCwxMTQsMjAsMTE2LDMsMTAwLDIsMTMxLDEsMTMwLDEsCisgICAgMTE2LDQsMTA2LDUsMTI0LDAsMTMxLDEsMTI1LDAsMTE2LDYsMTI0LDAsMTMxLDEsCisgICAgOTIsMiwxMjUsMSwxMjUsMiwxMTYsNiwxMjQsMSwxMzEsMSw5MiwyLDEyNSwxLAorICAgIDEyNSwzLDEyNCwzLDExNiw3LDEwNywzLDExNCw3OCwxMTYsOCwxMDAsMywxMDYsOSwKKyAgICAxMTYsNywxMjQsMCwxMzEsMiwxMzEsMSwxMzAsMSwxMjQsMiwxMDYsMTAsMTAwLDQsCisgICAgMTMxLDEsMTI1LDQsMTI0LDQsMTAwLDExLDEwNyw3LDExNCwxMTIsMTE2LDgsMTAwLDcsCisgICAgMTA2LDksMTI0LDIsMTMxLDEsMTMxLDEsMTMwLDEsMTEwLDg2LDEyNCw0LDEwMCw2LAorICAgIDEwNywyLDExNCwxOTgsMTI0LDIsMTA2LDExLDEwMCw0LDEwMCw1LDEzMSwyLDEwMCwxMiwKKyAgICAyNSwwLDEyNSw1LDEyNCw1LDEwNiwxMiwxMTYsMTMsMTMxLDEsMTE1LDE2MCwxMTYsOCwKKyAgICAxMDAsOCwxMDYsOSwxMTYsMTMsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDUsMTE2LDE0LAorICAgIDExNiwxMywxMzEsMSwxMDAsMSwxMzMsMiwyNSwwLDEyNSw2LDEyNCw2LDEwNiwxNSwKKyAgICAxMzEsMCwxMTUsMTk4LDExNiw4LDEwMCw5LDEwNiw5LDEyNCw1LDEzMSwxLDEzMSwxLAorICAgIDEzMCwxLDEyNCwyLDEwNiwxNiwxMDAsNCwxMzEsMSwxMDAsMTAsMjUsMCwxMjUsNywKKyAgICAxMTYsMTcsMTI0LDEsMTI0LDcsMTE2LDE4LDEwMCwxMCwyNSwwLDIzLDAsMTMxLDIsCisgICAgODMsMCw0MSwxMyw5NywxMTAsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0NiwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLAorICAgIDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsCisgICAgMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNjEsMCwwLDAsMTE0LDU5LDAsMCwwLDIzMywKKyAgICAzLDAsMCwwLDEyMiwzMywxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwxMDgsMTIxLDMyLDUwLDMyLDExMSwxMTQsMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLAorICAgIDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiwxMTUsMTE2LDk3LDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDEyMiw1MiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywxMTAsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwKKyAgICAxMDUsOTksMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCw2MiwwLDAsMCw2MiwyLDAsCisgICAgMCwwLDExNCw1OSwwLDAsMCwxMTQsODQsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LAorICAgIDI1NSw0MSwxOSwxMTQsOCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDY5LDAsCisgICAgMCwwLDExNCw3MCwwLDAsMCwxMTQsMywwLDAsMCwxMTQsNjcsMCwwLAorICAgIDAsMTE0LDQwLDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDUwLDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzYsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCw3NiwwLDAsMCwxMTQsMzMsMCwwLDAsCisgICAgMTE0LDc0LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE0LDMwLDAsMCwwLDIxOCwxNSw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSwKKyAgICA3MCw3MCw3Myw4OCw2OSw4Myw0MSw4LDExNCwzNywwLDAsMCwxMTQsODAsMCwKKyAgICAwLDAsOTAsMTYsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCw3LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCw5LDEwMCwKKyAgICAxMTEsMTE2LDk1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsNjAsMCwwLDAsOTAsOSwxMTEsCisgICAgMTEyLDExNiw5NSwxMDgsMTAxLDExOCwxMDEsMTA4LDkwLDEzLDk4LDk3LDExNSwxMDEsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxNywxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwKKyAgICAxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDUxLDEsMCwwLDExNSw0NiwwLAorICAgIDAsMCwwLDksMTIsMSw4LDEsMTAsMSwxMiwxLDEyLDEsOCwxLAorICAgIDYsMSwxMCwxLDEwLDEsOCwxLDYsMSwxMCwxLDgsMSwxNiwxLAorICAgIDEwLDEsNiwxLDgsMSwxNiwxLDgsMSw2LDEsOCwxLDE0LDEsCisgICAgMTE0LDg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCisgICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxMjgsMCwwLDAsMTE2LAorICAgIDAsMTI0LDAsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDE2LDEwMCwyLDgzLDAsMTI0LAorICAgIDAsMTA2LDEsMTAwLDMsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsCisgICAgMSwxMiwwLDExNSw1OCwxMjQsMywxMDYsMiwxMzEsMCwxMDAsNywxMDAsOCwxMzMsCisgICAgMiwyNSwwLDEwMCw2LDEwNywzLDExNCw2MiwxMjQsMCw4MywwLDEyMSwxMiwxMTYsCisgICAgMywxMjQsMCwxMzEsMSwxMjUsNCw4NywwLDExMCwzNiw0LDAsMTE2LDQsMTE2LAorICAgIDUsMTAyLDIsMTA3LDEwLDExNCwxMTAsMSwwLDEsMCwxLDAsMTI0LDAsMTAwLAorICAgIDIsMTAwLDksMTMzLDIsMjUsMCwxMjUsNCw4OSwwLDExMCwyLDg4LDAsMTE2LAorICAgIDYsMTI0LDQsMTMxLDEsMTE0LDEyNCwxMjQsNCw4MywwLDEyNCwwLDgzLDAsNDEsCisgICAgMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDYyLDAsMCwwLDc4LDExNCw2MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LAorICAgIDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LAorICAgIDI1NSwyNTUsMTE0LDkxLDAsMCwwLDQxLDcsMTE0LDMzLDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4OSwwLDAsMCwxMTQsCisgICAgNzAsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0NiwwLDAsMCw0MSw1LAorICAgIDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDg1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsMTIsMSw0LDEsCisgICAgMTYsMSwyNiwxLDQsMSwyLDEsMTIsMSwxOCwxLDE4LDEsMTE0LDk1LAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDExLDAsMCwwLDY3LDAsMCwwLDExNSw3MiwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMTYsMSwxMTYsMiwxMzEsMSwxMzEsMSwxMTQsNDYsMTIxLDgsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsODMsMCw0LDAsMTE2LDQsMTA3LDEwLDExNCw0MiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMyw2OCw4OCwwLDExMCwyMiwxMjQsMCwxMDYsMCwxMTYsCisgICAgMSwxMTYsNSwxMzEsMSwxMzEsMSwxMTQsNjQsMTI0LDAsODMsMCwxMDAsMCw4MywKKyAgICAwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwKKyAgICAxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsODgsMCwwLDAsCisgICAgMTE0LDgzLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsNzgsMCwwLDAsNDEsCisgICAgMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDEwNCwxLDAsMCwxMTUsMTYsMCwwLDAsCisgICAgMCwxLDE0LDEsMiwxLDgsMSwxNCwxLDgsMSwxNCwxLDQsMiwKKyAgICAxMTQsOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwwLDEyMSwKKyAgICAxNCwxMTYsMCwxMjQsMCwxMzEsMSwxMDYsMSwxMjUsMSw4NywwLDExMCwyNCw0LAorICAgIDAsMTE2LDIsMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCwxMDAsMSwxMjUsCisgICAgMSw4OSwwLDExMCwyLDg4LDAsMTI0LDEsMTAwLDIsNzksMCwxMjUsMSwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDUxLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsCiAgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LAogICAgIDExNSwxMDUsMTExLDExMCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsCiAgICAgOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwxODIsMSwwLDAsMjMzLAogICAgIDEyOCwwLDAsMCw0MSwzLDExNCw0MSwwLDAsMCwxMTQsNDMsMCwwLDAsCiAgICAgMTE0LDQyLDAsMCwwLDQxLDIsMTE0LDM3LDAsMCwwLDExNCw0NCwwLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsOTksOTcsMTA4LDk5LDk1LDEwOSwxMTEsMTAwLDEwMSwxMDYsMSwwLDAsCi0gICAgMTE1LDEyLDAsMCwwLDAsMiwzLDEsMTksMSwxMywxLDExLDMsMTAsCi0gICAgMSwxMTQsOTksMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LAotICAgIDEyMSwxMTQsMzEsMCwwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsCi0gICAgMCwwLDAsNCwwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCwKLSAgICA3MSwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLAotICAgIDAsMTAwLDMsMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEwNiw1LDAsMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwKLSAgICAxMDYsNiwwLDEzMSwxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLAotICAgIDExNCwxMDUsMTEwLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKLSAgICAzMiwxMTYsMTExLDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LAotICAgIDQ3LDgwLDg5LDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsCi0gICAgNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiwxMTQsNTYsMCwwLAotICAgIDAsNzgsNDEsMiwxMTQsMTAxLDAsMCwwLDExNCwxMDIsMCwwLDAsNDEsNywKLSAgICAxMTQsOCwwLDAsMCwxMTQsNjksMCwwLDAsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCi0gICAgMTExLDExNSwxMDEsMTE0LDEwLDAsMCwwLDIxOCw1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LAotICAgIDQ5LDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDQxLDMsMTE0LDc3LAotICAgIDAsMCwwLDExNCwxMDAsMCwwLDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LAotICAgIDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExOCwKLSAgICAxLDAsMCwxMTUsOCwwLDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsCi0gICAgMTE0LDEwNywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLAotICAgIDAsMCwxMSwwLDAsMCwzLDAsMCwwLDExNSw4NCwwLDAsMCwxMDAsCi0gICAgMSwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDEsCi0gICAgMCwxMjUsMSwwLDEyMSwxMywwLDExNiwwLDAsMTA2LDEsMCwxMjUsMiwwLAotICAgIDg3LDExMCwzMCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsNjYsMCwxLDEsCi0gICAgMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjUsMiwwLDg5LDExMCwxLAotICAgIDAsODgsMTI0LDIsMCwxMjQsMSwwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwKLSAgICAxLDAsODMsNDEsNiwxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAotICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLAotICAgIDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LDk3LAotICAgIDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLDExNSwKLSAgICAxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsCi0gICAgMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LAotICAgIDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwxMDAsCi0gICAgMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LDEwOCwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLDAsCi0gICAgMCw1LDAsMCwwLDMxLDAsMCwwLDExNSw4OSwwLDAsMCwxMjQsMSwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTI1LDEsMCwxMTAsNDYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDcsCi0gICAgMywwLDExNCw3MCwwLDExNiwxLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTI0LDEsMCwxMDIsMiwwLDIyLDEwMCwyLDAsMTI0LDEsMCwxMzEsMSwKLSAgICAxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMjQsMywwLDE0MiwyLDAsODMsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMzcsMTE1LDIxOCw0LDExMCw5NywxMDksMTAxLAotICAgIDQxLDIsMTE0LDEwOCwwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsNDEsNCwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLAotICAgIDIxOCw2LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxOSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKLSAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwxMzQsMSwwLDAsMTE1LDEyLDAsMCwwLAotICAgIDAsMSwxMiwxLDEyLDEsMTUsMSw2LDEsMjUsMSwxMjIsNDAsOTUsOTksCi0gICAgMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDYyLDQ2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwKLSAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDcsMCwwLDAsODMsMCwwLDAsMTE1LDkyLDAsMCwwLAotICAgIDEyMCw2NiwwLDEwMCwxLDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTAzLAotICAgIDQsMCw2OCw5Myw0NiwwLDEyNSwyLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMTQsMTksMCwxMTYsMSwwLDEyNCwwLDAsMTI0LDIsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEzMSwzLDAsCi0gICAgMSwxMTMsMTksMCw4NywxMjQsMCwwLDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiwzLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsNSw3OCwyMTgsCi0gICAgMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksCi0gICAgMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsNDEsNSwyMTgsNywKLSAgICAxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksCi0gICAgMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwKLSAgICAxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsMTE0LDU0LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw1LDk1LDExOSwxMTQsCi0gICAgOTcsMTEyLDE0NSwxLDAsMCwxMTUsOCwwLDAsMCwwLDEsMjUsMSwxNSwKLSAgICAxLDI5LDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLAotICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LDk3LDExMiw0MSwKLSAgICAzLDIxOCwxMCw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTE0LDEyMiwwLAotICAgIDAsMCwyMTgsOSw3OCw5NywxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCw0MSwzLDExNCwKLSAgICAxMTEsMCwwLDAsMTE0LDExMiwwLDAsMCwxMTQsMTIyLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDExMSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCi0gICAgMTEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTI2LDEsMCwwLAotICAgIDExNSwxNCwwLDAsMCwwLDgsMjEsNywzLDEsMTMsMSwxMywyLDE3LAotICAgIDUsMTMsMSwxMTQsMTI1LDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwKLSAgICAwLDEyNSwyLDAsMTI1LDMsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwKLSAgICAxMTQsODAsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLDEsMCwxMTQsODAsMCwxMDAsCi0gICAgMiwwLDEyNSw0LDAsMTE2LDIsMCwxMDYsMywwLDEyNCw0LDAsMTA2LDQsCi0gICAgMCwxMjQsMywwLDEwMCwzLDAsMjUsMTMxLDEsMCwxMTYsNSwwLDEzMSwyLAotICAgIDAsMSwxMjQsMiwwLDgzLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsCi0gICAgMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMywKLSAgICA5NywxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwKLSAgICAxMDIsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKLSAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLAotICAgIDEwNSwxMTAsMzIsMTAyLDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsCi0gICAgMTIzLDEyNSw1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwKLSAgICAxMDUsMTE2LDk1LDk1LDExNCw2MSwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMzMsMCwwLDAsMTE0LDYyLDAsCi0gICAgMCwwLDExNCw2MywwLDAsMCwxMTQsNDksMCwwLDAsMjE4LDEzLDczLDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMyw0MSw1LDExNCwxMTAsMCwKLSAgICAwLDAsMjE4LDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDIxOCw2LDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMjE4LDgsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMywKLSAgICAxMDksMTE1LDEwMywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExNSwxMDQsMTA1LDEwOSwxNTQsMSwwLDAsMTE1LDEwLDAsMCwwLDAsMTAsCi0gICAgMjEsMSwyNCwxLDYsMSwyOSwxLDExNCwxMzIsMCwwLDAsOTksNCwwLAotICAgIDAsMCwwLDAsMCwwLDExLDAsMCwwLDE5LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwyNDAsMSwwLDAsMTA1LDAsMCwxMjUsNCwwLDEyNCwyLDAsCi0gICAgMTAwLDEsMCwxMDcsOSwwLDExNCwzMSwwLDEyNCwyLDAsMTI0LDQsMCwxMDAsCi0gICAgMiwwLDYwLDExMCw2LDAsMTAwLDMsMCwxMjUsMiwwLDEyNCwzLDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCw1OSwwLDEyNCwzLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDYwLDEyNCwwLDAsMTAwLDEsMCwxMDAsNSwwLDEzMywyLDAsMjUsMTI1LAotICAgIDUsMCwxMjQsMCwwLDEwMCw1LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA2LDAsMTI0LDAsMCwxMDAsNiwwLDEwMCw3LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNywwLDEyNCw1LDAsMTE2LDAsMCwxMDcsMywwLDExNCwxNjgsMCwxMDAsOCwKLSAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LDgsMCwKLSAgICAxMTYsMiwwLDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDMsMCwKLSAgICAxMjQsOCwwLDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDExMCwxMTksMCwxMTYsCi0gICAgNCwwLDEyNCw2LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDIyOSwKLSAgICAwLDEwMCwxMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsCi0gICAgMTE2LDIsMCwxMDAsOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiw1LDAsCi0gICAgMTI0LDgsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDU4LDAsMTE2LDQsMCwxMjQsCi0gICAgNywwLDEzMSwxLDAsMTAwLDUsMCwxMDcsMywwLDExNCwzMSwxLDEwMCwxMSwKLSAgICAwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwKLSAgICAxMDAsOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiw1LDAsMTI0LDgsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LAotICAgIDIyNiwxLDEyMSwyMCwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTIsMCwyNSwxMzEsCi0gICAgMSwwLDEyNSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLAotICAgIDExNCw4MywxLDEsMSwxLDg5LDExMCw2MiwwLDg4LDExNiw4LDAsMTI0LDYsCi0gICAgMCwxMzEsMSwwLDEyNCw5LDAsMTA3LDMsMCwxMTQsMTQ1LDEsMTAwLDEzLDAsCi0gICAgMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLDEwMCwKLSAgICA5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDMsMCwxMjQsOCwwLDEyNCwKLSAgICA0LDAsMTQxLDEsMCwxMzAsMSwwLDEyMSwxOCwwLDEyNCwxLDAsMTAwLDE0LAotICAgIDAsMjUsMTAwLDE1LDAsNjQsMTI1LDEwLDAsODcsMTEwLDE4LDAsNCwxMTYsNywKLSAgICAwLDEwNywxMCwwLDExNCwxODMsMSwxLDEsMSw4OSwxMTAsNDMsMCw4OCwxMTYsCi0gICAgOCwwLDEyNCw3LDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLDExNCwyMjYsCi0gICAgMSwxMTYsMywwLDEwMCwxMywwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEyNCw0LDAsMTQxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTAwLDcsMCwxMDAsCi0gICAgMSwwLDEzMywyLDAsMjUsODMsNDEsMTYsOTcsMTIyLDEsMCwwLDg2LDk3LAotICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsCi0gICAgMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LAotICAgIDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LAotICAgIDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLAotICAgIDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLAotICAgIDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywKLSAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwKLSAgICAxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCw5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwKLSAgICAzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwKLSAgICAxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLAotICAgIDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywKLSAgICAxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMTQsMTA4LDAsMCwwLDEyMiwxMCwKLSAgICA2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw2MiwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDE0LDAsMCwwLDIzMyw4LDAsMCwwLDIzMywxMiwwLDAsMCwxMjIsMzAsCi0gICAgOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsCi0gICAgMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsMiwKLSAgICAxMjMsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLAotICAgIDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwKLSAgICAxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiwKLSAgICA0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LAotICAgIDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLAotICAgIDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTIyLDI2LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiw5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsMTIyLDEwMSwxMDgsMywwLDAsMCwyNTUsCi0gICAgMTI3LDI1NSwxMjcsMywwLDQxLDksMjE4LDEyLDc3LDY1LDcxLDczLDY3LDk1LDc4LAotICAgIDg1LDc3LDY2LDY5LDgyLDExNCw0OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwKLSAgICAxMDksMCwwLDAsMTE0LDMzLDAsMCwwLDIxOCw4LDY5LDc5LDcwLDY5LDExNCwKLSAgICAxMTQsMTExLDExNCwxMTQsMTYsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMTE0LDIxLDAsMCwwLDQxLDExLDExNCw1NSwwLDAsMCwyMTgsMTIsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMzcsMCwwLDAsOTAsMTEsMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywKLSAgICAxMDUsMTA4LDExNSw5MCw1LDEwOSw5NywxMDMsMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsCi0gICAgMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LAotICAgIDEwNSwxMjIsMTAxLDExNCw3NywwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwKLSAgICAxMDUsMTIyLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMjUsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLAotICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwxNzEsMSwwLAotICAgIDAsMTE1LDc2LDAsMCwwLDAsMTEsNiwxLDEyLDEsMTMsMyw2LDEsCi0gICAgMTIsMSwxMCwxLDE2LDEsMTYsMSwxNiwxLDEyLDEsMTgsMSwxMywxLAotICAgIDE4LDEsMTgsMSwxNSwxLDEzLDEsMTUsMSwxOCwxLDE1LDEsMTMsMSwKLSAgICAxMiwxLDEyLDEsMywxLDIwLDEsMTMsMSw1LDIsMTgsMSwxNSwxLAotICAgIDEzLDEsMTUsMSwzLDEsMTgsMSwxMywxLDUsMiwxOCwxLDE1LDEsCi0gICAgOSwxLDExNCwxNDMsMCwwLDAsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTEyLDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCwKLSAgICAxMTYsMiwwLDEyNCw0LDAsMTE2LDMsMCwxMzEsMiwwLDExNCw3NSwwLDExNiwKLSAgICA0LDAsMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMjQsMywwLDEwMCwKLSAgICAyLDAsMTA3LDksMCwxMTQsNzEsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsMSwxMjQsNCwwLDgzLDExNiw3LDAsMTAwLAotICAgIDMsMCwxMDYsOCwwLDEyNCwyLDAsMTMxLDEsMCwxMDAsNCwwLDEyNCwxLAotICAgIDAsMTAwLDUsMCwxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsMiwwLAotICAgIDgzLDQxLDYsMTIyLDYwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk4LDEyMSwxMTYsCi0gICAgMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDExNSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwKLSAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDQwLDQxLAotICAgIDQ2LDEyMiwyMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLAotICAgIDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwyMyw3OCwxMTEsMTEwLDQ1LDk5LAotICAgIDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDMyLDEyMywzMywKLSAgICAxMTQsMTI1LDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDksMjE4LDcsCi0gICAgMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCw5MCw1LDEwOCwxMTEsOTcsMTAwLDExNSwyMTgsMTAsCi0gICAgMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwyMTgsMTAsOTUsOTksMTExLDEwMCwKLSAgICAxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNCwxMDcsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwKLSAgICAxMTIsOTAsMTYsOTUsMTAyLDEwNSwxMjAsOTUsOTksMTExLDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCw0MSw1LDExNCwKLSAgICA1NSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsOTIsCi0gICAgMCwwLDAsMjE4LDQsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDksMTEyLDEwNSwKLSAgICAxMDgsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIyNiwxLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMCwyLDE1LDEsMTUsMSwxMywxLDEyLDEsMTYsMSwKLSAgICA0LDIsMTgsMSwxMTQsMTQ5LDAsMCwwLDExNCw2MSwwLDAsMCw5OSwzLAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3NiwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMywwLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsCi0gICAgMTI0LDIsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsCi0gICAgMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMTMxLDEsMCwxMzEsMSwwLDEsCi0gICAgMTI0LDMsMCw4Myw0MSwxLDEyMiw4MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiwKLSAgICA5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwKLSAgICAxMTYsMTExLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTE3LDExNiwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDQ1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsNDEsNiwyMTgsOSw5OCwxMjEsMTE2LDEwMSwKLSAgICA5NywxMTQsMTE0LDk3LDEyMSwxMTQsMTM3LDAsMCwwLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTAwLDExNCwxOSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDkwLDUsMTAwLDExNywKLSAgICAxMDksMTEyLDExNSw0MSw0LDExNCwxNDgsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsCi0gICAgMTQyLDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMzgsMSwwLDAsMTE1LAotICAgIDEwLDAsMCwwLDAsMywxMiwxLDE5LDEsMTksMSwyMiwxLDExNCwxNTIsCi0gICAgMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCi0gICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsODksMCwwLDAsMTAwLDEsMCwKLSAgICAxMDAsMiwwLDEwOCwwLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEwNiwzLDAsMTI1LDIsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDEsMCwxMDYsNSwwLAotICAgIDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsCi0gICAgNiwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEwMCwxLDAsMjUsMTMxLAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDEyMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMTE2LDEsMCwwLAorICAgIDExNSwxMiwwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMCwzLDgsCisgICAgMSwxMTQsMTAxLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDY4LDAsMCwwLAorICAgIDEwMCw2LDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw5LDEyNSwxLDEyMSwxMCwKKyAgICAxMTYsMCwxMDYsMSwxMjUsMiw4NywwLDExMCwyOCw0LDAsMTE2LDIsMTA3LDEwLAorICAgIDExNCw1MiwxLDAsMSwwLDEsMCwxMDAsNCwxMDAsNSwxMzIsMCwxMjUsMiwKKyAgICA4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTI0LDEsMTM2LDAsMTMxLDIsMSwwLAorICAgIDEyNCwxLDgzLDAsNDEsNywxMjIsMjUyLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTAxLDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksCisgICAgMTA0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsCisgICAgMzIsMzIsMzIsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSw5NywxMTAsMzIsMTA0LAorICAgIDk3LDExMCwxMDAsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLAorICAgIDEwMiwxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDQwLAorICAgIDExNSwxMDEsMTA4LDEwMiw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwKKyAgICAxMDEsMzIsOTUsMTEwLDk3LDEwOSwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMDEsOTksMTExLDExMCwxMDAsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMDAsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiw0NiwzMiw3MywxMDIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTksMTExLDEwOSwxMTIsOTcsMTE0LDEwNSwxMTUsMTExLDExMCwzMiwxMDIsOTcsMTA1LAorICAgIDEwOCwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw3OCw5OSwyLDAsMCwwLDAsMCwwLDAsNCwwLAorICAgIDAsMCw0LDAsMCwwLDMxLDAsMCwwLDExNSw2NiwwLDAsMCwxMjQsCisgICAgMSwxMDAsMCwxMDcsOCwxMTQsMTYsMTI0LDAsMTA2LDAsMTI1LDEsMTEwLDMyLDEyNCwKKyAgICAwLDEwNiwwLDEyNCwxLDEwNywzLDExNCw0OCwxMTYsMSwxMDAsMSwxMjQsMCwxMDYsCisgICAgMCwxMjQsMSwxMDIsMiwyMiwwLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwKKyAgICAwLDEyNCwwLDEyNCwxLDEwMiwyLDEyNCwyLDE1OCwyLDEyNCwzLDE0MiwxLDgzLAorICAgIDAsNDEsMyw3OCwxMjIsMzAsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwzNywxMTUsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKKyAgICAxMDEsMzIsMzcsMTE1LDQxLDEsMjE4LDQsMTEwLDk3LDEwOSwxMDEsNDEsMiwxMTQsMTAyLAorICAgIDAsMCwwLDIxOCwxMSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwKKyAgICA0MSw0LDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTAyLDAsMCwwLDIxOCw0LDk3LAorICAgIDExNCwxMDMsMTE1LDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSw0MSwxLDIxOCw2LDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKKyAgICAxOSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCwxMzYsMSwwLDAsMTE1LDEyLDAsMCwwLDAsMSw4LAorICAgIDEsOCwxLDEwLDEsNCwxLDE4LDEsMTIyLDQwLDk1LDk5LDEwNCwxMDEsOTksCisgICAgMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKKyAgICA5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICA3LDAsMCwwLDgzLDAsMCwwLDExNSw2MCwwLDAsMCwxMjAsNDAsMTAwLAorICAgIDUsNjgsMCw5MywzMiwxMjUsMiwxMTYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMTQsCisgICAgNiwxMTYsMSwxMjQsMCwxMjQsMiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMzEsCisgICAgMywxLDAsMTEzLDYsODcsMCwxMjQsMCwxMDYsMywxMDYsNCwxMjQsMSwxMDYsCisgICAgMywxMzEsMSwxLDAsMTAwLDAsODMsMCw0MSw2LDc4LDIxOCwxMCw5NSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSwKKyAgICA5NSw5NSwyMTgsMTIsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMjE4LDcsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSw0MSw0LDExNCwxMDgsMCwwLDAsCisgICAgMTE0LDEwOSwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsNDEsCisgICAgNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDIxOCw3LDExNSwxMDEsMTE2LDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw4LDk1LDk1LAorICAgIDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsNDEsMywKKyAgICA5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsMTE0LDU1LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw1LAorICAgIDk1LDExOSwxMTQsOTcsMTEyLDE0NywxLDAsMCwxMTUsOCwwLDAsMCwwLDEsCisgICAgMTAsMSwxMCwxLDIyLDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCwKKyAgICA5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTksMTE0LAorICAgIDk3LDExMiw0MSwxLDc4LDQxLDMsMjE4LDEwLDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiwxMTQsMTE3LDAsMCwwLDIxOCw5LDc4LDk3LDEwOSwxMDEsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwKKyAgICAxMTcsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMTA2LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSwxMjgsMSwwLDAsMTE1LDE0LDAsMCwwLDAsOCwxNCw3LDIsCisgICAgMSwxMCwxLDE0LDIsMTQsNSwxMCwxLDExNCwxMjAsMCwwLDAsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNjAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLDEsCisgICAgOTIsMiwxMjUsMiwxMjUsMywxMjQsMiwxMDAsMSwxMDcsOCwxMTQsNTYsMTE2LDEsCisgICAgMTI0LDMsMTMxLDEsMTE0LDU2LDEwMCwyLDEyNSw0LDExNiwyLDEwNiwzLDEyNCw0LAorICAgIDEwNiw0LDEyNCwzLDEwMCwzLDI1LDAsMTMxLDEsMTE2LDUsMTMxLDIsMSwwLAorICAgIDEyNCwyLDgzLDAsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLDk3LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsMzIsMTA1LDExMCwKKyAgICAzMiwxMDIsOTcsMTE4LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMjMsMTI1LAorICAgIDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsOTUsMTE0LDYyLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjMsMCwwLDAsCisgICAgMTE0LDY0LDAsMCwwLDExNCw1MCwwLDAsMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDEwNCwwLDAsMCwKKyAgICAyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLDEwOSwxMTUsCisgICAgMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LAorICAgIDEwNCwxMDUsMTA5LDE1NiwxLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwxNCwxLAorICAgIDE2LDEsNCwxLDIyLDEsMTE0LDEyNywwLDAsMCw5OSw0LDAsMCwwLAorICAgIDAsMCwwLDAsMTEsMCwwLDAsMjIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzNiwxLDAsMCwxMDUsMCwxMjUsNCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsCisgICAgMjIsMTI0LDIsMTI0LDQsMTAwLDIsNjAsMCwxMTAsNCwxMDAsMywxMjUsMiwxMjQsCisgICAgMywxMDAsMSwxMDcsOSwxMTQsNDIsMTI0LDMsMTI0LDQsMTAwLDQsNjAsMCwxMjQsCisgICAgMCwxMDAsMSwxMDAsNSwxMzMsMiwyNSwwLDEyNSw1LDEyNCwwLDEwMCw1LDEwMCwKKyAgICA2LDEzMywyLDI1LDAsMTI1LDYsMTI0LDAsMTAwLDYsMTAwLDcsMTMzLDIsMjUsCisgICAgMCwxMjUsNywxMjQsNSwxMTYsMCwxMDcsMywxMTQsMTI0LDEwMCw4LDEwNiwxLDEyNCwKKyAgICAyLDEyNCw1LDEzMSwyLDEyNSw4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwKKyAgICAyLDEsMCwxMTYsNCwxMjQsOCwxMDIsMSwxMjQsNCwxNDIsMSwxMzAsMSwxMTAsCisgICAgODYsMTE2LDUsMTI0LDYsMTMxLDEsMTAwLDUsMTA3LDMsMTE0LDE2OCwxMDAsMTAsMTA2LAorICAgIDEsMTI0LDIsMTMxLDEsMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLAorICAgIDIsMSwwLDExNiw2LDEyNCw4LDEzMSwxLDEzMCwxLDExMCw0MiwxMTYsNSwxMjQsCisgICAgNywxMzEsMSwxMDAsNSwxMDcsMywxMTQsMjEwLDEwMCwxMSwxMDYsMSwxMjQsMiwxMzEsCisgICAgMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LAorICAgIDYsMTI0LDgsMTMxLDEsMTMwLDEsMTI0LDEsMTAwLDEsMTA3LDksMTQ0LDEsMTE0LAorICAgIDEyNCwxMjEsMTYsMTE2LDcsMTI0LDEsMTAwLDEyLDI1LDAsMTMxLDEsMTI1LDksODcsCisgICAgMCwxMTAsMjIsNCwwLDExNiw4LDEwNywxMCwxNDQsMSwxMTQsMiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMCw1MCw4OCwwLDExNiw5LDEyNCw2LDEzMSwxLDEyNCwKKyAgICA5LDEwNywzLDE0NCwxLDExNCw1MiwxMDAsMTMsMTA2LDEsMTI0LDIsMTMxLDEsMTI1LAorICAgIDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLDIsMSwwLDExNiw0LDEyNCwKKyAgICA4LDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwxLDEyMSwxNiwxMjQsMSwxMDAsMTQsMjUsCisgICAgMCwxMDAsMTUsNjQsMCwxMjUsMTAsODcsMCwxMTAsMjIsNCwwLDExNiw4LDEwNywKKyAgICAxMCwxNDQsMSwxMTQsOTAsMSwwLDEsMCwxLDAsODksMCwxMTAsMzQsODgsCisgICAgMCwxMTYsOSwxMjQsNywxMzEsMSwxMjQsMTAsMTA3LDMsMTQ0LDEsMTE0LDEyNCwxMTYsCisgICAgNCwxMDAsMTMsMTA2LDEsMTI0LDIsMTMxLDEsMTAyLDEsMTI0LDQsMTQyLDEsMTMwLAorICAgIDEsMTI0LDAsMTAwLDcsMTAwLDEsMTMzLDIsMjUsMCw4MywwLDQxLDE2LDk3LAorICAgIDEyMiwxLDAsMCw4Niw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE1LDExNSwxMDEsMTAwLDQ1LDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsOTcsMTAzLDk3LDEwNSwxMTAsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiw0MCwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDEwMywKKyAgICAxMDUsMTE4LDEwMSwxMTAsNDEsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk5LDExMSwxMDksCisgICAgMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsCisgICAgNDAsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMTEsMTE2LDEwNCwKKyAgICAxMDEsMTE0LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwKKyAgICAzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTEwLDEwNCw5NywxMTAsOTksMTAxLAorICAgIDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsMTE0LDEwMSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwKKyAgICAxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDMyLAorICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsCisgICAgOTgsMTAxLDMyLDExNSwxMTYsOTcsMTA4LDEwMSw0NiwzMiw2OSw3OSw3MCw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDEwNSwxMTUsMzIsMTAyLDExMSwKKyAgICAxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTE0LAorICAgIDExNywxMTAsOTksOTcsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTE0LAorICAgIDEwMiwwLDAsMCwxMjIsMTAsNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNjIsCisgICAgMTE0LDM3LDAsMCwwLDExNCwxNCwwLDAsMCwyMzMsOCwwLDAsMCwyMzMsCisgICAgMTIsMCwwLDAsMTIyLDMwLDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwKKyAgICAxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsMTIyLDIsMTIzLDEyNSwxMjIsNDMsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLAorICAgIDEwMCwzMiw2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLAorICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMjIsNDgsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSwKKyAgICA3OSw3MCwzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLAorICAgIDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMTEsMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCisgICAgMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNSwxMDksMTE2LDEwNSwxMDksMTAxLDEyMiwyNiwKKyAgICA5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LAorICAgIDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMjMsMzMsMTE0LDEyNSwyMTgsNCwxMTUsMTA1LDEyMiwxMDEsCisgICAgMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsMTI3LDMsMCw0MSwxMCwyMTgsMTIsNzcsCisgICAgNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsNjYsNjksODIsMTE0LDUwLDAsMCwwLAorICAgIDExNCwxMTgsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LAorICAgIDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCwxMDMsMCwwLDAsMTE0LDMzLDAsMCwKKyAgICAwLDIxOCw4LDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTYsMCwwLDAsCisgICAgMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDIxLDAsMCwwLDQxLAorICAgIDExLDExNCw1NiwwLDAsMCwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsCisgICAgMTE2LDk3LDExNiwxMTUsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsMTEsCisgICAgMTAxLDEyMCw5OSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCw1LDEwOSw5NywxMDMsCisgICAgMTA1LDk5LDkwLDEzLDExNCw5NywxMTksOTUsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LAorICAgIDExMiw5MCw4LDExNCw5NywxMTksOTUsMTE1LDEwNSwxMjIsMTAxLDExNCw3OSwwLDAsMCwKKyAgICAyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwxMSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMDUsMTIyLDEwMSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMjUsOTUsMTE4LDk3LDEwOCwKKyAgICAxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LAorICAgIDEwMSw5NywxMDAsMTAxLDExNCwxNzMsMSwwLDAsMTE1LDc2LDAsMCwwLDAsMTEsCisgICAgNCwxLDgsMSwxMCwzLDQsMSw4LDEsOCwxLDEyLDEsMTIsMSwKKyAgICAxMiwxLDgsMSwxMiwxLDEyLDEsMTQsMSwxMiwxLDEwLDEsMTIsMSwKKyAgICAxMCwxLDEyLDEsMTAsMSwxMiwxLDgsMSwxMCwxLDIsMSwxNiwxLAorICAgIDE2LDEsNiwyLDE0LDEsMTAsMSwxMiwxLDEyLDEsMiwxLDE2LDEsCisgICAgMTYsMSw2LDIsMTQsMSwxMiwxLDYsMSwxMTQsMTM5LDAsMCwwLDk5LAorICAgIDQsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDgwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDEyNSw0LDExNiwyLDEyNCw0LDExNiwzLDEzMSwyLDExNCw1NiwxMTYsNCwxMDYsCisgICAgNSwxMDAsMSwxMjQsMiwxMzEsMiwxLDAsMTI0LDMsMTAwLDIsMTA3LDksMTE0LAorICAgIDUyLDExNiw2LDEwNiw3LDEyNCw0LDEyNCwzLDEzMSwyLDEsMCwxMjQsNCw4MywKKyAgICAwLDExNiw4LDEwMCwzLDEwNiw5LDEyNCwyLDEzMSwxLDEyNCwxLDEyNCwyLDEwMCwKKyAgICA0LDE0MSwzLDEzMCwxLDEwMCwyLDgzLDAsNDEsNSwxMjIsNjAsNjcsMTExLDEwOSwKKyAgICAxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywKKyAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LAorICAgIDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCisgICAgOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMiwxMTQsMTAyLDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCw0MSwxMCwyMTgsNywxMDksOTcsMTE0LDExNSwxMDQsOTcsCisgICAgMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsCisgICAgMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDkwLDE2LDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsNTYsCisgICAgMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk0LDAsCisgICAgMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LAorICAgIDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjgsMSwwLDAsMTE1LDE2LAorICAgIDAsMCwwLDAsMiwxMCwxLDEwLDEsMTIsMSw4LDEsMTIsMSw0LAorICAgIDIsMTAsMSwxMTQsMTQ1LDAsMCwwLDExNCw2MiwwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw1NiwwLDAsMCwxMTYsMCwxMTYsMSwxMzEsMSwxMjUsMywxMjQsCisgICAgMywxMDYsMiwxMTYsMywxMjQsMSwxMzEsMSwxMzEsMSwxLDAsMTI0LDMsMTA2LAorICAgIDIsMTE2LDMsMTI0LDIsMTMxLDEsMTMxLDEsMSwwLDEyNCwzLDEwNiwyLDExNiwKKyAgICA0LDEwNiw1LDEyNCwwLDEzMSwxLDEzMSwxLDEsMCwxMjQsMyw4MywwLDQxLAorICAgIDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwxMTEsMzIsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsOTgsMTIxLDExNiwxMDEsCisgICAgNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LDExNCwxMTQsOTcsMTIxLAorICAgIDExNCwxMzIsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE5LDAsCisgICAgMCwwLDExNCwxNDAsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwxMTIsMTE1LDQxLDQsCisgICAgMTE0LDE0NCwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsMTExLDk1LDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDI0MCwxLDAsMCwxMTUsMTAsMCwwLDAsMCwKKyAgICAzLDgsMSwxNCwxLDE0LDEsMTYsMSwxMTQsMTQ4LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDYyLDAsMCwwLDEwMCwxLDEwMCwyLDEwOCwwLDEyNSwxLAorICAgIDExNiwxLDEwNiwyLDEyNCwwLDEzMSwxLDEwNiwzLDEyNSwyLDEyNCwxLDEwNiw0LAorICAgIDEyNCwyLDEzMSwxLDEyNSwzLDExNiwxLDEwNiw1LDEwMCwyLDEwMCwzLDEzMSwyLAorICAgIDEyNSw0LDEyNCw0LDEwNiw2LDEyNCwwLDEwNiw2LDEyNCwzLDEwMCwxLDI1LDAsCisgICAgMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiwxMjEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLAogICAgIDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwKICAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLAogICAgIDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LApAQCAtNzkzLDk4ICs3MTksOTIgQEAKICAgICAxMDEsMTE0LDExNSw5NywxMDgsMzIsMTEwLDEwMSwxMTksMTA4LDEwNSwxMTAsMTAxLDMyLDExNSwxMTcsCiAgICAgMTEyLDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLAogICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwxMTQsNjEsMCwwLDAsNzgsODQsNDEsNywyMTgsOCwxMTYsMTExLAotICAgIDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCw1MSwwLDAsMCw5MCw3LDY2LDEyMSwxMTYsCisgICAgMzIsMzIsMzIsMTE0LDYyLDAsMCwwLDc4LDg0LDQxLDcsMjE4LDgsMTE2LDExMSwKKyAgICAxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTIsMCwwLDAsOTAsNyw2NiwxMjEsMTE2LAogICAgIDEwMSwxMTUsNzMsNzksOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsOTAsMTUsCiAgICAgMTAwLDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsOTAsCiAgICAgMjUsNzMsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw3OCwxMDEsMTE5LDEwOCwKICAgICAxMDUsMTEwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LDEwMCwxMDEsOTksMTExLAogICAgIDEwMCwxMDEsNDEsNSwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSw5OCwxMjEsMTE2LAotICAgIDEwMSwxMTUsMTE0LDE1MywwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAorICAgIDEwMSwxMTUsMTE0LDE0OSwwLDAsMCw5MCwyMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAogICAgIDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMjE4LDgsCiAgICAgMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLAogICAgIDEwMSw5NSwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwKICAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI0OCwxLDAsMCwxMTUsMTAsMCwwLDAsCi0gICAgMCw1LDEyLDEsMTgsMSwxNSwxLDE4LDEsMTE0LDE1NywwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTksMiwwLDAsMCwyLDAsMCwwLDksMCwwLDAsMTksMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDg5LDEsMCwwLDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCw3MywwLDEwMCwyLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAyLDAsMTAwLDMsMCwxMzEsMiwwLDExNCw3MywwLDEyMSwxOSwwLDEyNCwyLAotICAgIDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCw4NywxMTAsMTgsCi0gICAgMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDcyLDAsMSwxLDEsODksMTEwLAotICAgIDEsMCw4OCwxMTYsMywwLDEwNiw0LDAsMTI0LDAsMCwxMjQsMiwwLDEwMCwKLSAgICA0LDAsMTI0LDEsMCwxMzEsMiwxLDEyNSw0LDAsMTAwLDUsMCwxMjQsNCwKLSAgICAwLDk1LDUsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTk0LDAsCi0gICAgMTIwLDczLDAsMTE2LDYsMCwxMzEsMCwwLDY4LDkzLDU4LDAsOTIsMiwwLAotICAgIDEyNSw1LDAsMTI1LDYsMCwxMjQsMSwwLDEwNiw3LDAsMTE2LDgsMCwxMjQsCi0gICAgNiwwLDEzMSwxLDAsMTMxLDEsMCwxMTQsMTI4LDAsMTI0LDUsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDQsMCwKLSAgICA5NSw5LDAsODAsMTEzLDEyOCwwLDg3LDEwMCwxLDAsODMsMTI0LDMsMCwxMTYsCi0gICAgMTAsMCwxMDcsOCwwLDExNCwyMywxLDExNiwwLDAsMTI0LDIsMCwxMDAsNiwKLSAgICAwLDEzMSwyLDAsMTE0LDMyLDEsMTIxLDE5LDAsMTI0LDIsMCwxMDYsMTEsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMTgsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQsMSwxLDEsMSw4OSwxMTMsMzIsMSw4OCwxMjQsCi0gICAgNywwLDExNCwzMiwxLDEwMywwLDAsMTI0LDQsMCw5NSwxMiwwLDExMCw5LAotICAgIDAsMTI0LDMsMCwxMjQsNCwwLDk1LDEyLDAsMTI0LDQsMCwxMDYsMTIsMCwKLSAgICAxMDMsMCwwLDEwNywyLDAsMTE0LDg1LDEsMTI0LDEsMCwxMTQsODUsMSwxMTYsCi0gICAgMTMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDcsMCwyNSwxMjUsOCwwLDEyNCwKLSAgICA0LDAsMTA2LDEyLDAsMTA2LDE0LDAsMTI0LDgsMCwxMzEsMSwwLDEsMTI0LAotICAgIDQsMCw4Myw0MSw4LDk3LDYxLDEsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTExLAotICAgIDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTYsMTExLDMyLDk3LDMyLAotICAgIDEwOCwxMDUsMTE1LDExNiwzMiwxMTEsMTAyLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKLSAgICAxMjEsMzIsMTEyLDk3LDExNiwxMDQsMTE1LDQ2LDMyLDMyLDY1LDExMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDExNSwKLSAgICAxMTcsMTAyLDEwMiwxMDUsOTksMTA1LDEwMSwxMTAsMTE2LDQ0LDMyLDExNiwxMDQsMTExLDExNywxMDMsCi0gICAgMTA0LDMyLDEwNSwxMTYsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LAotICAgIDEwNSwxMTUsMTAxLDMyLDExNywxMTUsMTAxLDEwMiwxMTcsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE1LDEyMSwxMTUsCi0gICAgMTE2LDEwMSwxMDksNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMTYsOTcsMTA3LDEwMSwzMiw5NywKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSwzMiw5NywxMTUsMzIsMTA1LDExNiwxMTUsMzIsMTExLDExMCwxMDgsCi0gICAgMTIxLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MCw0MSwzMiw5NywxMTQsMTAzLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw5LDYwLDExNywxMTAsMTA3LDExMCwxMTEsCi0gICAgMTE5LDExMCw2MiwyMTgsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDg0LDIxOCwxMCwxMDUsMTE1LDk1LDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsNjEsMCwwLDAsNDEsMTUsMTE0LDExNywwLAotICAgIDAsMCwxMTQsMTU5LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyMywwLDAsCi0gICAgMCwyMTgsMTAsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDkwLDEzLDk1LAotICAgIDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsMjcsOTUsMTAzLAotICAgIDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw5NCwwLDAsMCwxMTQsOTUsCi0gICAgMCwwLDAsMTE0LDEyOSwwLDAsMCwyMTgsOSw5NSw4MCw3OSw4MCw4NSw3NiwKLSAgICA2NSw4NCw2OSwxMTQsMTYxLDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDQwLDAsCi0gICAgMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwxMDAsNDEsOSwxMTQsMTA4LDAsMCwKLSAgICAwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDEyOSwwLDAsMCwKLSAgICAxMTQsMTU4LDAsMCwwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCwxMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDk1LDk5LDEwOCw5NywxMTUsMTE1LDIxOCw4LDExNSwxMTcsMTAyLDEwMiwxMDUsCi0gICAgMTIwLDEwMSwxMTUsMTE0LDE2MSwwLDAsMCw5MCw3LDEwMCwxMDUsMTE0LDExMCw5NywxMDksCi0gICAgMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCwyMywxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLAotICAgIDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDksMiwwLDAsMTE1LDYwLDAsCi0gICAgMCwwLDAsMTIsMTIsNCw2LDEsMTUsMiwzLDEsMTksMSwxMywxLAotICAgIDUsOCwyNCwxLDksMywxMiwxLDIyLDEsMjEsMSwxNSwxLDksMSwKLSAgICA1LDIsNCwzLDEyLDIsMTUsMSwzLDEsMTksMSwxMywxLDUsMiwKLSAgICA2LDEsMTIsMiw5LDEsMTUsMSw2LDEsMTYsMSwxNiwyLDExNCwxNjksCi0gICAgMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw2NCwwLDAsMCwxMTUsMTIxLDAsMCwwLDEwMSwwLDAsCi0gICAgOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwKLSAgICAyLDAsOTAsNCwwLDEwMCwzLDAsOTAsNSwwLDEwMCw0LDAsOTAsNiwKLSAgICAwLDEwMSw3LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwwLDAsMTMxLDEsMCwKLSAgICA5MCw4LDAsMTAxLDcsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDkwLDksMCwxMDEsNywwLDEwMCw5LDAsMTAwLDksMCwxMDAsMTAsCi0gICAgMCwxMDAsMTEsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywwLAotICAgIDEwMCw5LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDEsMCwxMzEsMSwwLDkwLAotICAgIDExLDAsMTAwLDksMCw4Myw0MSwxNCwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwKKyAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI1MCwxLDAsMCwxMTUsMTAsMCwwLDAsCisgICAgMCw1LDgsMSwxMiwxLDEwLDEsMTIsMSwxMTQsMTUzLDAsMCwwLDQxLAorICAgIDIsMTE0LDEyNCwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE1LDk5LDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxOCwxLDAsMCwxMjQsMSwxMDAsMSwKKyAgICAxMDcsOCwxMTQsNjAsMTAwLDIsMTI1LDEsMTE2LDAsMTI0LDIsMTAwLDMsMTMxLDIsCisgICAgMTE0LDcwLDEyMSwxNCwxMjQsMiwxMDYsMSwxMjQsMCwxMzEsMSwxMjUsMSw4NywwLAorICAgIDExMyw3MCw0LDAsMTE2LDIsMTA3LDEwLDExNCw1NiwxLDAsMSwwLDEsMCwKKyAgICA4OSwwLDExMyw3MCw4OCwwLDExMCwxMCwxMTYsMywxMDYsNCwxMjQsMSwxMzEsMSwKKyAgICAxMjUsMSwxMTYsNSwxMDYsNiwxMjQsMCwxMjQsMiwxMjQsMSwxMDAsNCwxNDEsMywKKyAgICAxMjUsNCwxMDAsNSwxMjQsNCw5NSw3LDEyNCwyLDEwMCwxLDEwNyw4LDExNCwxNTYsCisgICAgMTIwLDU0LDExNiw4LDEzMSwwLDY4LDAsOTMsNDAsOTIsMiwxMjUsNSwxMjUsNiwKKyAgICAxMjQsMSwxMDYsOSwxMTYsMTAsMTI0LDYsMTMxLDEsMTMxLDEsMTE0LDEwOCwxMjQsNSwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiwxMjUsMiwxMjQsMiwxMjQsNCw5NSwxMSw4MCwwLAorICAgIDExMywxMDgsODcsMCwxMDAsMSw4MywwLDEyNCwzLDExNiwxMiwxMDcsOCwxMTQsMjIyLAorICAgIDExNiwwLDEyNCwyLDEwMCw2LDEzMSwyLDExNCwyMjgsMTIxLDE0LDEyNCwyLDEwNiwxMywKKyAgICAxMjQsMCwxMzEsMSwxMjUsNyw4NywwLDExMCwyMCw0LDAsMTE2LDIsMTA3LDEwLAorICAgIDExNCwyMDgsMSwwLDEsMCwxLDAsODksMCwxMTMsMjI4LDg4LDAsMTI0LDcsCisgICAgMTE0LDIyOCwxMDMsMCwxMjQsNCw5NSwxNCwxMTAsNiwxMjQsMywxMjQsNCw5NSwxNCwKKyAgICAxMjQsNCwxMDYsMTQsMTAzLDAsMTA3LDIsMTQ0LDEsMTE0LDE0LDEyNCwxLDE0NCwxLAorICAgIDExNCwxNCwxMTYsMTUsMTI0LDEsMTMxLDEsMTAwLDcsMjUsMCwxMjUsOCwxMjQsNCwKKyAgICAxMDYsMTQsMTA2LDE2LDEyNCw4LDEzMSwxLDEsMCwxMjQsNCw4MywwLDQxLDgsCisgICAgOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsMzIsMTA1LDExMCwxMDAsMTA1LAorICAgIDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywKKyAgICAxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDExNyw5OCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLAorICAgIDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwMSwxMDksMTEyLDExNiwKKyAgICAxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LDExNywxMDIsMTAyLDEwNSw5OSwKKyAgICAxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywxMDQsMzIsMTA1LDExNiwxMTUsCisgICAgMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsMzIsMTE3LAorICAgIDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCisgICAgMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTUsOTUsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDYyLDIxOCwxMiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsNiwKKyAgICAxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMTE0LDYyLDAsMCwwLDQxLDE3LDExNCwxMTIsMCwwLDAsMTE0LAorICAgIDE1NSwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwzLDAsMCwwLDExNCw2NywKKyAgICAwLDAsMCwxMTQsMTE4LDAsMCwwLDIxOCwxMCw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDgzLDExMiwxMDEsOTksOTAsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LAorICAgIDExNiwxMTYsMTE0LDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsCisgICAgMTE0LDk2LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsMTI0LDAsMCwwLDIxOCwKKyAgICA5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxNTcsMCwwLDAsMTE0LAorICAgIDE1NCwwLDAsMCwxMTQsNDAsMCwwLDAsMjE4LDYsOTcsMTEyLDExMiwxMDEsMTEwLAorICAgIDEwMCw0MSw5LDExNCwxMDIsMCwwLDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsMjE4LDQsMTE1LDExMiwKKyAgICAxMDEsOTksMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksMTA4LDk3LDExNSwxMTUsCisgICAgMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTQsMTU3LDAsMCwwLDkwLAorICAgIDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsCisgICAgMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMTEsMiwwLDAsMTE1LDYyLDAsMCwwLDAsMTIsOCw0LDQsMSwxMCwKKyAgICAyLDIsMSwxNCwxLDE0LDEsOCwyLDEwLDgsMTYsMSw2LDMsOCwKKyAgICAxLDE2LDEsMTQsMSwxMCwxLDYsMSw2LDIsNCwzLDgsMiwxMCwKKyAgICAxLDIsMSwxNCwxLDE0LDEsNiwyLDQsMSw4LDIsNiwxLDEyLAorICAgIDEsNiwxLDEyLDEsMTIsMiwxMTQsMTY1LDAsMCwwLDk5LDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLAorICAgIDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSwKKyAgICA5MCwzLDEwMCwyLDkwLDQsMTAwLDMsOTAsNSwxMDAsNCw5MCw2LDEwMSw3LAorICAgIDEwMCw1LDEwMCw2LDEzMiwwLDEzMSwxLDkwLDgsMTAxLDcsMTAwLDcsMTAwLDgsCisgICAgMTMyLDAsMTMxLDEsOTAsOSwxMDEsNywxMDAsMTQsMTAwLDEwLDEwMCwxMSwxMzIsMSwKKyAgICAxMzEsMSw5MCwxMCwxMDEsNywxMDAsMTUsMTAwLDEyLDEwMCwxMywxMzIsMSwxMzEsMSwKKyAgICA5MCwxMSwxMDAsOSw4MywwLDQxLDE2LDIxOCwyMSw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAogICAgIDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsCiAgICAgNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAogICAgIDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDEwMSwKQEAgLTg5OSwxMDYgKzgxOSwxMDAgQEAKICAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSw5MiwxMjMsCiAgICAgMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSw5Miw2OCwxMDEsOTgsMTE3LDEwMyw3MCwKICAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsMTIxLDIzLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDExNiwwLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLDAsODMsCi0gICAgODcsMTEwLDM3LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2MiwwLDEsMSwKLSAgICAxLDExNiwwLDAsMTA2LDEsMCwxMTYsMCwwLDEwNiw0LDAsMTI0LDEsMCwKLSAgICAxMzEsMiwwLDgzLDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDQxLDUsMjE4LDcsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTAsNyw3OSwxMTIsMTAxLAotICAgIDExMCw3NSwxMDEsMTIxLDkwLDE3LDcyLDc1LDY5LDg5LDk1LDY3LDg1LDgyLDgyLDY5LAotICAgIDc4LDg0LDk1LDg1LDgzLDY5LDgyLDExNCw0MiwwLDAsMCw5MCwxOCw3Miw3NSwKLSAgICA2OSw4OSw5NSw3Niw3OSw2Nyw2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSwKLSAgICA0MSwyLDIxOCwzLDk5LDEwOCwxMTUsMTE0LDUsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LDExMSwxMTIsCi0gICAgMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDg3LDIsMCwwLDExNSwKLSAgICA4LDAsMCwwLDAsMiwzLDEsMjMsMSwxMywxLDEyMiwzNiw4NywxMDUsCisgICAgMCw2NywwLDAsMCwxMTUsNTAsMCwwLDAsMTIxLDE0LDExNiwwLDEwNiwxLAorICAgIDExNiwwLDEwNiwyLDEyNCwxLDEzMSwyLDgzLDAsNCwwLDExNiwzLDEwNywxMCwKKyAgICAxMTQsNDQsMSwwLDEsMCwxLDAsMTE2LDAsMTA2LDEsMTE2LDAsMTA2LDQsCisgICAgMTI0LDEsMTMxLDIsODMsMCw4OCwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwKKyAgICA1LDIxOCw3LDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwxMTAsCisgICAgNzUsMTAxLDEyMSw5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSw3OCwKKyAgICA4NCw5NSw4NSw4Myw2OSw4MiwxMTQsNDIsMCwwLDAsOTAsMTgsNzIsNzUsNjksCisgICAgODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksNDEsCisgICAgMiwyMTgsMyw5OSwxMDgsMTE1LDExNCw1LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLDEwMSwKKyAgICAxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5MSwyLDAsMCwxMTUsOCwKKyAgICAwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMjIsMzYsODcsMTA1LDExMCwKKyAgICAxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDExMiwwLDAsMCwxMjQsMCwxMDYsMCwxMTQsCisgICAgMTQsMTI0LDAsMTA2LDEsMTI1LDIsMTEwLDYsMTI0LDAsMTA2LDIsMTI1LDIsMTI0LAorICAgIDIsMTA2LDMsMTI0LDEsMTAwLDEsMTE2LDQsMTA2LDUsMTAwLDAsMTAwLDIsMTMzLAorICAgIDIsMjUsMCwyMiwwLDEwMCwzLDE0MSwyLDEyNSwzLDEyMSwzOCwxMjQsMCwxMDYsCisgICAgNiwxMjQsMywxMzEsMSwxNDMsMTgsMTI1LDQsMTE2LDcsMTA2LDgsMTI0LDQsMTAwLAorICAgIDQsMTMxLDIsMTI1LDUsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCw4NywKKyAgICAwLDExMCwyMCw0LDAsMTE2LDksMTA3LDEwLDExNCwxMDYsMSwwLDEsMCwxLAorICAgIDAsMTAwLDAsODMsMCw4OCwwLDEyNCw1LDgzLDAsNDEsNSw3OCwxMjIsNSwKKyAgICAzNywxMDAsNDYsMzcsMTAwLDExNCw1OSwwLDAsMCw0MSwyLDExNCwxMjMsMCwwLAorICAgIDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDExNCwzMiwKKyAgICAwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsOTUsNjYsODUsNzMsCisgICAgNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LAorICAgIDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSwKKyAgICA5NSw3NSw2OSw4OSwxMTQsNTAsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDEyLAorICAgIDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDE2OSwwLDAsCisgICAgMCwxMTQsMTY3LDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsCisgICAgMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwxMDcsMTAxLAorICAgIDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk4LDIsMCwwLDExNSwyMiwwLDAsMCwKKyAgICAwLDIsNiwxLDgsMiw2LDEsNiwxLDIyLDEsMiwxLDEyLDEsCisgICAgMjYsMSwxNCwxLDYsMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTE1LAorICAgIDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzgsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMTQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEyMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsCisgICAgMSwxMjUsNCwxMjQsNCwxMDAsMCwxMDcsOCwxMTQsMjIsMTAwLDAsODMsMCwxMjEsCisgICAgMTIsMTE2LDEsMTI0LDQsMTMxLDEsMSwwLDg3LDAsMTEwLDIwLDQsMCwxMTYsCisgICAgMiwxMDcsMTAsMTE0LDU0LDEsMCwxLDAsMSwwLDEwMCwwLDgzLDAsODgsCisgICAgMCwxMjAsNTgsMTE2LDMsMTMxLDAsNjgsMCw5Myw0OCw5MiwyLDEyNSw1LDEyNSwKKyAgICA2LDEyNCw0LDEwNiw0LDExNiw1LDEyNCw2LDEzMSwxLDEzMSwxLDExNCw2NCwxMTYsCisgICAgNiwxMDYsNywxMjQsMSwxMjQsNSwxMjQsMSwxMjQsNCwxMzEsMiwxMjQsNCwxMDAsCisgICAgMSwxNDEsMywxMjUsNywxMjQsNyw4MywwLDExMyw2NCw4NywwLDEwMCwwLDgzLAorICAgIDAsNDEsMiw3OCw0MSwxLDExNCwxNTYsMCwwLDAsNDEsOCwxMTQsMTc1LDAsCisgICAgMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDE1OSwwLDAsCisgICAgMCwxMTQsOTYsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwxMTgsMCwwLDAsCisgICAgMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQxLDgsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywKKyAgICAwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwxNzQsMCwwLDAsCisgICAgMTE0LDEyNCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDksCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMywyLDAsMCwxMTUsMjYsMCwKKyAgICAwLDAsMCwyLDEwLDEsOCwxLDQsMSwyLDEsMTIsMSwxNCwxLAorICAgIDYsMSwxNiwxLDE0LDEsNiwxLDgsMSw4LDEsMTIyLDMxLDg3LDEwNSwKICAgICAxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLAotICAgIDEwMCwxMDEsMTE0LDQ2LDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwKLSAgICAxMTQsMTIxLDk5LDIsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNDMsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNCwyMSwwLDEyNCwwLDAsMTA2LDEsMCwxMjUsMiwwLDExMCw5LAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEyNSwyLDAsMTI0LDIsMCwxMDYsMywwLAotICAgIDEwMCwxLDAsMTI0LDEsMCwxMDAsMiwwLDExNiw0LDAsMTA2LDUsMCwxMDAsCi0gICAgMCwwLDEwMCwzLDAsMTMzLDIsMCwyNSwxMzEsMCwyLDEyNSwzLDAsMTIxLAotICAgIDQ3LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDEsMCwxNDMsMjUsCi0gICAgMCwxMjUsNCwwLDExNiw3LDAsMTA2LDgsMCwxMjQsNCwwLDEwMCw0LDAsCi0gICAgMTMxLDIsMCwxMjUsNSwwLDg3LDEwMCwwLDAsODEsODIsODgsODcsMTEwLDIyLAotICAgIDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwxMzgsMCwxLDEsMSwxMDAsMCwKLSAgICAwLDgzLDg5LDExMCwxLDAsODgsMTI0LDUsMCw4Myw0MSw1LDc4LDExNCwxMjgsCi0gICAgMCwwLDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLAotICAgIDExNCw4MiwwLDAsMCwxMTQsMzIsMCwwLDAsNDEsMTAsMjE4LDExLDY4LDY5LAotICAgIDY2LDg1LDcxLDk1LDY2LDg1LDczLDc2LDY4LDIxOCwxOCw4Miw2OSw3MSw3Myw4MywKLSAgICA4NCw4Miw4OSw5NSw3NSw2OSw4OSw5NSw2OCw2OSw2Niw4NSw3MSwyMTgsMTIsODIsCi0gICAgNjksNzEsNzMsODMsODQsODIsODksOTUsNzUsNjksODksMTE0LDQ5LDAsMCwwLAotICAgIDExNCw4LDAsMCwwLDIxOCw3LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsMTczLAotICAgIDAsMCwwLDExNCwxNzEsMCwwLDAsOTAsMTAsODEsMTE3LDEwMSwxMTQsMTIxLDg2LAotICAgIDk3LDEwOCwxMTcsMTAxLDExNCw0MiwwLDAsMCw0MSw2LDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEyOCwwLDAsMCw5MCwxMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk1LAotICAgIDEwNywxMDEsMTIxLDExNCw1LDAsMCwwLDkwLDQsMTA0LDEwNywxMDEsMTIxLDIxOCw4LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LAotICAgIDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTQsMiwwLDAsMTE1LDIyLDAsCi0gICAgMCwwLDAsMiw5LDEsMTIsMiw5LDEsMTUsMSwyMiwxLDMsMSwKLSAgICAxOCwxLDI5LDEsMTMsMSw5LDEsMTIyLDM4LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAotICAgIDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAotICAgIDc4LDk5LDQsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwxNTgsMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDAsMCwKLSAgICAxMDcsOCwwLDExNCwzMSwwLDEwMCwwLDAsODMsMTIxLDE0LDAsMTE2LDEsMCwKLSAgICAxMjQsNCwwLDEzMSwxLDAsMSw4NywxMTAsMjIsMCw0LDExNiwyLDAsMTA3LAotICAgIDEwLDAsMTE0LDY5LDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLAotICAgIDg4LDEyMCw4MSwwLDExNiwzLDAsMTMxLDAsMCw2OCw5Myw3MCwwLDkyLDIsCi0gICAgMCwxMjUsNSwwLDEyNSw2LDAsMTI0LDQsMCwxMDYsNCwwLDExNiw1LDAsCi0gICAgMTI0LDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDgwLDAsMTE2LDYsMCwxMDYsCi0gICAgNywwLDEyNCwxLDAsMTI0LDUsMCwxMjQsMSwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMCwxMDAsMSwwLDEyNCw0LDAsMTMxLDIsMSwxMjUsNywwLDEyNCw3LDAsCi0gICAgODMsMTEzLDgwLDAsODcsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwxNjAsMCwwLAotICAgIDAsNDEsOCwxMTQsMTc5LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwKLSAgICAwLDAsMTE0LDE2MywwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDExNCwxMjMsMCwwLDAsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLAotICAgIDEwOSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDgsMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTI4LDAsMCwwLDExNCwzNywwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsCi0gICAgMTE2LDExNCwxNzgsMCwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsMTY4LDAsMCwwLAotICAgIDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDksMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDEwOSwKLSAgICAyLDAsMCwxMTUsMjYsMCwwLDAsMCwyLDE1LDEsMTIsMSw0LDEsCi0gICAgMywxLDE0LDEsMTMsMSw5LDEsMjIsMSwyMSwxLDksMSwxNSwxLAotICAgIDksMSwxMjIsMzEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LAotICAgIDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKLSAgICAxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ1LDAsMCwwLDEyNCwwLDAsCi0gICAgMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwzNywwLDEyNCwzLDAsMTA2LDEsCi0gICAgMCw4MywxMDAsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTA4LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwKLSAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAotICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTgyLDAsCi0gICAgMCwwLDExNCwxMjksMCwwLDAsNDEsNCwxMTQsMTcyLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwMiwxMDUsCi0gICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjUsMiwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCw3LDE4LDEsMTIsMSw3LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLAotICAgIDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxMiwxMTQsCi0gICAgMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LAotICAgIDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsMTc0LDAsCi0gICAgMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsCi0gICAgMTczLDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxNzAsMCwwLDAsNzUsMiwwLDAsCi0gICAgMTE1LDIwLDAsMCwwLDEyLDIsNiwzLDYsMyw2LDIsNiwyLDE4LAotICAgIDcsMTgsMTUsMywxLDIxLDE1LDMsMSwxMTQsMTcwLDAsMCwwLDk5LDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsCi0gICAgMCwwLDAsMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwKKyAgICAxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLAorICAgIDIsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDksMTE0LDI2LDEyNCwzLDEwNiwxLDgzLAorICAgIDAsMTAwLDEsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDEwOCw3MCwxMDUsMTEwLAorICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LAorICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsCisgICAgMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE3OCwwLDAsCisgICAgMCwxMTQsMTI0LDAsMCwwLDQxLDQsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTI5LDIsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsNywxMiwxLDgsMSw2LDIsMTIyLDMzLDg3LDEwNSwxMTAsMTAwLDExMSwKKyAgICAxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwyLDc4LDc4LAorICAgIDQxLDEsNzgsNDEsMTIsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwKKyAgICAxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTcyLDAsMCwwLDExNCwxNzEsCisgICAgMCwwLDAsMTE0LDE3MCwwLDAsMCwyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE2OSwwLDAsMCwxMTQsMTc1LDAsMCwwLDExNCwKKyAgICAxNzgsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTY2LDAsCisgICAgMCwwLDc5LDIsMCwwLDExNSwyMCwwLDAsMCw4LDIsNCwzLDQsCisgICAgMyw0LDIsNCwyLDEyLDcsMTIsMTUsMiwxLDEyLDE1LDIsMSwxMTQsCisgICAgMTY2LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ4LDAsMCwwLDEwMSwwLAorICAgIDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLAorICAgIDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCwKKyAgICA5MCw2LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDgzLDAsNDEsMTEsCiAgICAgMjE4LDEzLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSwxMjIsCiAgICAgODMsNjYsOTcsMTE1LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTAyLDMyLDk5LAogICAgIDExMSwxMDksMTA5LDExMSwxMTAsMzIsOTksMTExLDEwMCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwKQEAgLTEwMDYsMTEwICs5MjAsMTA2IEBACiAgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCiAgICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCiAgICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCi0gICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCi0gICAgNSwwLDEwNywzLDAsODMsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDExNCwzMSwwLDAsMCwxMTQsNjAsMCwwLAotICAgIDAsMTE0LDYxLDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsMzYsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDUsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTI4LDAsMCwwLDExNCw5NiwwLDAsMCw5MCwxMywxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsCi0gICAgMTA4LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsMTQ0LDIsMCwwLDExNSw4LAotICAgIDAsMCwwLDAsMywyNSwxLDIyLDEsMTksMSwxMjIsMjQsOTUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAotICAgIDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywKLSAgICAxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCwKLSAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE2NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDE1MiwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjcsOTUsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4MCwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsCi0gICAgMTI1LDIsMCwxMjQsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsNTQsMCwxMTYsCi0gICAgMiwwLDEwMCwyLDAsMTA2LDMsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDQsMCwxMDYsNSwwLDExNiw2LDAsCi0gICAgMTI0LDIsMCwxMjQsMSwwLDEwNiw3LDAsMTMxLDMsMCwxLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDY0LDAsMCwwLDExNiwwLAorICAgIDEyNCwwLDEwNiwxLDEyNCwxLDEzMSwxLDEzMSwxLDEwMCwxLDI1LDAsMTI1LDIsCisgICAgMTI0LDIsMTA2LDIsMTAwLDIsMTAwLDEsMTMxLDIsMTAwLDMsMjUsMCwxMjUsMywKKyAgICAxMjQsMSwxMDYsMywxMDAsMiwxMzEsMSwxMDAsNCwyNSwwLDEyNSw0LDEyNCwzLAorICAgIDEwMCw1LDEwNywyLDExMSw2MiwxMjQsNCwxMDAsNSwxMDcsMyw4MywwLDQxLDYsCisgICAgMTIyLDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LAorICAgIDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwKKyAgICAxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LAorICAgIDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LAorICAgIDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwKKyAgICAzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMTQsCisgICAgMzEsMCwwLDAsMTE0LDYxLDAsMCwwLDExNCw2MiwwLDAsMCwxMTQsNTksCisgICAgMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQxLDQsMTE0LAorICAgIDQwLDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDM2LDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCw0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCisgICAgOTgsMCwwLDAsOTAsMTMsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LAorICAgIDk3LDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU3LDAsCisgICAgMCwwLDE0OCwyLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTgsMSwxNiwKKyAgICAxLDE0LDEsMTIyLDI0LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LAorICAgIDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNDIsODUsCisgICAgMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsCisgICAgMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsNDYsNzgsMTE0LDQsMCwwLDAsNDEsCisgICAgMiwxMTQsMTA0LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsCisgICAgMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxNTYsMiwwLDAsMTE1LDAsMCwKKyAgICAwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LAorICAgIDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNTYsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTA2LAorICAgIDEsMTMxLDEsMTI1LDIsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDM2LDExNiwyLDEwMCwKKyAgICAyLDEwNiwzLDEyNCwxLDEwNiwxLDEzMSwxLDEzMSwxLDEzMCwxLDExNiw0LDEwNiwKKyAgICA1LDExNiw2LDEyNCwyLDEyNCwxLDEwNiw3LDEzMSwzLDEsMCwxMDAsMSw4MywKKyAgICAwLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCiAgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLAogICAgIDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCiAgICAgMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCiAgICAgNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLAotICAgIDgsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDIxOCwKKyAgICA4LDIxOCw4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNCwxMDksMCwwLDAsCisgICAgMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDExOCwwLDAsMCwyMTgsCiAgICAgMjUsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksCiAgICAgMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMjE4LDQsMTAxLDEyMCwxMDEsOTksCi0gICAgMTE0LDEyMCwwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMjE4LDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDE0OCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAxMTQsMTE1LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAogICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNTUsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwKLSAgICAxOCwxLDEyLDEsOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTU5LDIsMCwwLDExNSwxMCwwLDAsMCwwLDIsCisgICAgMTIsMSw4LDEsNiwxLDEwLDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAogICAgIDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxMjMsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTYzLDIsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTYxLDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTk0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODUsMCwwLDAsMTM5LDIsMCwwLAotICAgIDExNSwxMCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsCi0gICAgMTg1LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwKLSAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwKLSAgICAwLDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLAotICAgIDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsCi0gICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwKLSAgICAzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxNjksMiwwLDAsMTE1LDIsMCwwLDAsMCw2LAotICAgIDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksCi0gICAgMCwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEwNSwxLDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwKKyAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDEsMTIyLDI2LDg0LDEwNCwxMDUsCisgICAgMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0Niw0MSwyLDExNCwxMTgsMCwwLDAsMjE4LDE3LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LAorICAgIDEwOSw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTY3LDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsMiwxMjIsMjUsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwKKyAgICAxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LAorICAgIDQxLDgsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLAorICAgIDAsMTE0LDExMSwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxODMsMCwwLDAsCisgICAgMTE0LDE4OCwwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMTQzLDIsMCwwLDExNSwxMCwwLDAsMCw4LDMsNCwyLAorICAgIDgsOCw4LDMsOCw4LDExNCwxODEsMCwwLDAsOTksMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwKKyAgICAxMTUsNzQsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwKKyAgICAyLDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsCisgICAgNiwxMzIsMCw5MCw1LDEwMCw3LDEwMCw4LDEzMiwwLDkwLDYsMTAwLDksMTAwLAorICAgIDEwLDEzMiwwLDkwLDcsMTAwLDE4LDEwMCwxMiwxNTYsMSwxMDAsMTMsMTAwLDE0LDEzMiwKKyAgICAyLDkwLDgsMTAwLDE1LDEwMCwxNiwxMzIsMCw5MCw5LDEwMCwxNyw4MywwLDQxLAorICAgIDE5LDIxOCwxMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDgsMCwwLDAsMTE2LDAsMTMwLDEsMTAwLDEsODMsCisgICAgMCw0MSwyLDEyMiwxNzgsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsCisgICAgMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LAorICAgIDMyLDExNSwxMTYsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLAorICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKKyAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCisgICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwxNzQsMiwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCw2LDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQsMCwwLDAsMTAwLDEsMTI0LDAsMTA2LDAsMTI0LDEsCisgICAgMTMxLDEsMTA1LDEsODMsMCw0MSwyLDk3LDE3MCwxLDAsMCw3OSwxMTIsMTE2LAogICAgIDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwKICAgICAxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiw5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LAogICAgIDk3LDMyLDEwMCwxMDUsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKQEAgLTExMzYsMTQ3MCArMTA0NiwxMzkxIEBACiAgICAgOTcsMTA1LDExNSwxMDEsMTE1LDMyLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA0LAogICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTEwLDExMCwKICAgICAxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDEwMCw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTM1LDAsMCwwLDQxLDEsMTE0LDE5NywKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTMwLDAsMCwwLDQxLDEsMTE0LDE5MywKKyAgICAwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKICAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTc3LDIsMCwwLDExNSwyLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxODIsMiwwLDAsMTE1LDIsCiAgICAgMCwwLDAsMCwxMSwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKICAgICAxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwKICAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQxLDEsMTIyLDIyOCw3OSwxMTIsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwKLSAgICAxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksCi0gICAgMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsCi0gICAgMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsCi0gICAgMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsCi0gICAgMTA4LDEyMSwzMiwxMTYsMTE0LDk3LDExMCwxMTUsMTAyLDEwMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTA5LAotICAgIDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA0MSwxLDIxOCw4LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsNCwxMTQsMTEwLAotICAgIDAsMCwwLDExNCw5MiwwLDAsMCw5MCwxMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LAotICAgIDExMiw5NywxMTYsMTA0LDExNCw1NSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTUsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxOTAsMiwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw4LDEyMiwyOCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLAotICAgIDQxLDIsMTIyLDE1MCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwKLSAgICAxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsCi0gICAgMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwKLSAgICAzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsCi0gICAgMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLAotICAgIDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LAotICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCw0LDAsMCwwLAotICAgIDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxOTksMCwwLDAsMjAwLDIsMCwwLDExNSwwLDAsMCwwLDEyMiwyMSwKLSAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LAotICAgIDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwKLSAgICAwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDEwNSwwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLAotICAgIDg3LDExMCw1OCwwLDQsMTE2LDIsMCwxMDcsMTAsMCwxMTQsOTQsMCwxLDEyNSwKLSAgICA0LDAsMSwxMjIsMjYsMCwxMTYsMywwLDEwMCwxLDAsMTAwLDIsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDEsMTI0LDQsMCwxMzAsMiwwLDg3LDg5LDEwMCwzLDAsCi0gICAgMTAwLDMsMCwxMjUsNCwwLDEyNiw0LDAsODgsMTEwLDEsMCw4OCwxMTYsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiw1Miw2NywxMTEsMTEwLDk5LAotICAgIDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ2LAotICAgIDEyMiwzOSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LDExOCw5NywKLSAgICAxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLDExNywxMDMsMTA0LDMyLDEwMywKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNDEsMTE0LDEwOCwwLDAsMCw3OCw0MSwKLSAgICA1LDExNCwxNTksMCwwLDAsMjE4LDgsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKLSAgICAxMTQsNDIsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTU3LDAsMCwwLDQxLAotICAgIDUsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICAxMTQsMTU1LDAsMCwwLDIxOCwzLDEwMSwxMjAsOTksMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwKLSAgICAxMTEsMTE3LDExNCw5OSwxMDEsMjA3LDIsMCwwLDExNSwxNCwwLDAsMCwwLDIsCi0gICAgMTUsMSwzLDEsMTksMSwxOCwxLDksMSwzMSwxLDEyMiwyMyw4MywxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwKLSAgICAxMTEsMTE3LDExNCw5OSwxMDEsMjE4LDksOTUsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwKLSAgICAxMTQsMzEsMCwwLDAsOTksMywwLDAsMCwxLDAsMCwwLDQsMCwKLSAgICAwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTE2LAotICAgIDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEwMCw0LDAsMTI0LDMsMCwxMzEsNCwyLAotICAgIDgzLDQxLDUsMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiw5OSwxMTEsMTA5LDExMiwKLSAgICAxMDUsMTA4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMDAsOTcsMTE2LDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw5OSwKLSAgICA5NywxMTAsMzIsOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsCi0gICAgMTA4LDEwMSw0MCw0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxOTAsMCwwLDAsMjE4LDEyLDEwMCwxMTEsCi0gICAgMTEwLDExNiw5NSwxMDUsMTEwLDEwNCwxMDEsMTE0LDEwNSwxMTYsODQsMTE0LDcwLDAsMCwwLAotICAgIDQxLDMsMTE0LDEyMywwLDAsMCwxMTQsMTg5LDAsMCwwLDIxOCw3LDk5LDExMSwKLSAgICAxMDksMTEyLDEwNSwxMDgsMTAxLDQxLDQsMTE0LDExMCwwLDAsMCwxMTQsNTUsMCwwLAotICAgIDAsMTE0LDM3LDAsMCwwLDExNCwyMDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDExNSwxMTEsMTE3LDExNCwKLSAgICA5OSwxMDEsOTUsMTE2LDExMSw5NSw5OSwxMTEsMTAwLDEwMSwyMTcsMiwwLDAsMTE1LDQsCi0gICAgMCwwLDAsMCw1LDIxLDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LAotICAgIDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwxMCwwLDAsCi0gICAgMCw0MywwLDAsMCw2NywwLDAsMCwxMTUsMTc0LDEsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwwLAotICAgIDEyNSwzLDAsMTIxLDE2LDAsMTE2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LAotICAgIDQsMCw4NywxMTAsMjQsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDYzLDAsCi0gICAgMSwxLDEsMTAwLDEsMCwxMjUsNCwwLDg5LDExMCwyMDIsMCw4OCwxMjEsMTksCi0gICAgMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw1LDAsCi0gICAgODcsMTEwLDE4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCwxMDMsMCwxLDEsCi0gICAgMSw4OSwxMTAsMTYyLDAsODgsMTE2LDUsMCwxMjQsNSwwLDEwMCwyLDAsMjUsCi0gICAgMTMxLDEsMCwxMjUsMywwLDEyMSwxOSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsCi0gICAgNCwwLDEzMSwxLDAsMTI1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsCi0gICAgMTA3LDEwLDAsMTE0LDE1OSwwLDEsMSwxLDg5LDExMCwxMDYsMCw4OCwxMjEsMzQsCi0gICAgMCwxMTYsOCwwLDEyNCw2LDAsMTAwLDMsMCwxMjQsNSwwLDEwMCw0LDAsCi0gICAgMTI0LDEsMCwxMDAsNSwwLDEyNCw0LDAsMTMxLDEsMywxMjUsNywwLDg3LAotICAgIDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwwLDEwNywxMCwwLAotICAgIDExNCwyMjAsMCwxLDEsMSw4OSwxMTAsNDUsMCw4OCwxMTYsMTEsMCwxMDAsNiwKLSAgICAwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTI0LDcsCi0gICAgMCwxMDAsNCwwLDEyNCwxLDAsMTAwLDcsMCwxMjQsNCwwLDEwMCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsMSwzLDgzLDEyNCwwLDAsMTA2LDYsMCwxMjQsMiwwLAotICAgIDEzMSwxLDAsMTI1LDgsMCwxMjQsMCwwLDEwNiwxMywwLDEyNCw4LDAsMTI0LAotICAgIDIsMCwxMzEsMiwwLDEyNSw5LDAsMTE2LDExLDAsMTAwLDksMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMSwxMTYsMTQsMCwxMDYsMTUsMCwxMiwxMTQsMTcwLDEsMTI0LAotICAgIDQsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDE3MCwxLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMDcsOSwwLDExNCwxNzAsMSwxMTYsMTYsMCwxMjQsOSwwLDEyNCwzLDAsCi0gICAgMTE2LDE3LDAsMTI0LDgsMCwxMzEsMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjEsCi0gICAgMzYsMCwxMjQsMCwwLDEwNiwxOCwwLDEyNCwyLDAsMTI0LDQsMCwxMjQsNiwKLSAgICAwLDEzMSwzLDAsMSwxMTYsMTEsMCwxMDAsMTAsMCwxMjQsNCwwLDEzMSwyLAotICAgIDAsMSw4NywxMTAsMTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDE2OSwxLAotICAgIDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDksMCw4Myw0MSwxMSwxMjIsMTkwLAotICAgIDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSwKLSAgICA5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICAxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsCi0gICAgOTcsMTE2LDExNSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LDMyLDg0LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAotICAgIDQ0LDMyLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLAotICAgIDk3LDEwOCwxMTUsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCwKLSAgICAxMzUsMCwwLDAsMTE0LDE0MCwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLAotICAgIDEyMywxMjUsMTE0LDkxLDAsMCwwLDExNCw5MiwwLDAsMCwxMjIsMTksOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsCi0gICAgMTI1LDEyMiwxMCwxMTksMTE0LDExMSwxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDQxLDE5LDExNCwKLSAgICAxNTksMCwwLDAsMTE0LDgxLDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwxOTYsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwyMDEsMCwKLSAgICAwLDAsMTE0LDQyLDAsMCwwLDExNCwxNDMsMCwwLDAsMTE0LDEwOSwwLDAsCi0gICAgMCwxMTQsMTM4LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDE0OSwwLDAsMCwKLSAgICAxMTQsMjA3LDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxOSwxMDAsMTExLDExMCwxMTYsCi0gICAgOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsCi0gICAgMTUyLDAsMCwwLDExNCwzMywwLDAsMCwxMTQsMjAwLDAsMCwwLDQxLDEwLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LAotICAgIDE0MSwwLDAsMCwxMTQsOTEsMCwwLDAsMjE4LDIsMTE1LDExNiwxMTQsNTUsMCwKLSAgICAwLDAsMjE4LDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LDk3LDExNCwxNTUsCi0gICAgMCwwLDAsOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKLSAgICAxODgsMCwwLDAsMjI1LDIsMCwwLDExNSw3OCwwLDAsMCwwLDcsMTUsCi0gICAgMSw2LDEsMywxLDE2LDEsMTMsMSwxMSwyLDMsMSwxOSwxLDEzLAotICAgIDEsNSwyLDE2LDEsMywxLDE5LDEsMTMsMSw1LDIsMywxLDksCi0gICAgMSwxMiwxLDEzLDEsMTksMSw1LDIsOSwxLDcsMSwxNSwxLDYsCi0gICAgMSw3LDEsMTUsMSwxOCwxLDEzLDEsMjIsMSwxMiwxLDksMSwxNSwKLSAgICAxLDMsMSwxOSwxLDE3LDEsMTMsMSw1LDEsMTIyLDIxLDgzLDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAotICAgIDEwMCwxMDEsNzgsMTE0LDg5LDAsMCwwLDQxLDEwLDExNCwxMTQsMCwwLDAsMTE0LAotICAgIDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDIwMywwLAotICAgIDAsMCwxMTQsMjA3LDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDE5NSwwLDAsMCwxNjcsMiwwLDAsMTE1LDE0LDAsMCwwLDEyLDIsCi0gICAgMTIsOCwxMiwxMywxMiwxMCwxMiw3LDEyLDEwLDE4LDgsMTE0LDE5NSwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsCi0gICAgMCwwLDAsMCwwLDAsMTE1LDExMiwwLDAsMCwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKLSAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCi0gICAgMCwxMDEsNywwLDEzNSwwLDAsMTAyLDEsMCwxMDAsOCwwLDEwMCw5LDAsCi0gICAgMTM0LDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwxMCwwLDEwMCwKLSAgICAxMSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAwLDEyLDAsMTAwLDEzLAotICAgIDAsMTMyLDAsMCw5MCwxMCwwLDEzNSwwLDAsODMsNDEsMTQsMjE4LDEwLDcwLAotICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsMTAzLDY2LDk3LDExNSwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwKLSAgICAxMTUsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCi0gICAgMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMiwxMTQsCi0gICAgMTExLDExNiwxMTEsOTksMTExLDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwxMTcsMTE1LDk3LDEwMywKLSAgICAxMDEsNDYsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsCi0gICAgMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsOTUsMSwwLDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsNzUsNjcsOTcsOTksMTA0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiw5NywxMTAsMTAwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDc4LDQxLDIsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMywKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODYsCi0gICAgMCwwLDAsMjYsMywwLDAsMTE1LDQsMCwwLDAsMCwzLDksMSwKLSAgICAxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwKLSAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLDAsMCwxMjQsCi0gICAgMCwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwNywyLDAsMTExLDMzLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTA2LDEsMCwxMDcsMiwwLAotICAgIDgzLDQxLDEsNzgsNDEsMiwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5NSwKLSAgICA5NSwxMTQsMTIwLDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwyMTgsNSwxMTEsCi0gICAgMTE2LDEwNCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMzIsMywwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxLDE4LDEsMTIyLDE3LDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDI2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLAotICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCw2NSw4Myw0MSwKLSAgICAxLDc4LDQxLDMsMjE4LDQsMTA0LDk3LDExNSwxMDQsMTE0LDEwOCwwLDAsMCwxMTQsCi0gICAgMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LDk1LDEwNCw5NywKLSAgICAxMTUsMTA0LDk1LDk1LDM2LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCi0gICAgMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNCw5NywKLSAgICAxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDMsMCwwLDAsMywwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsCi0gICAgMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDIsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCw4Myw0MSwxLDEyMiwxMDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDMsMjE4LDUsCi0gICAgMTE1LDExNywxMTIsMTAxLDExNCwxMTQsMjExLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsNDEsMSwxMTQsMjEyLDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLAotICAgIDAsMzksMywwLDAsMTE1LDIsMCwwLDAsMCwxMCwxMjIsMjIsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsCi0gICAgMCwxMDYsMCwwLDgzLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwyLDEyNCwzLAorICAgIDEzMSwyLDgzLDAsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LAorICAgIDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSwKKyAgICA0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLAorICAgIDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwKKyAgICAxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsCisgICAgMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDExNiwKKyAgICAxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LAorICAgIDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMjE4LDgsCisgICAgMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMDQsMCwwLDAsMTE0LAorICAgIDk0LDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE0LDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDE5NSwyLDAsMCwxMTUsMiwwLDAsMCwwLDgsCisgICAgMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTUwLAorICAgIDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAorICAgIDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LAorICAgIDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTA0LAorICAgIDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NSwwLDAsCisgICAgMCwyMDUsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDIxLDgzLDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiwKKyAgICA5Nyw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwxNiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODIsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LAorICAgIDEsMTMxLDEsMTI1LDIsMTIxLDE0LDEyNCwwLDEwNiwxLDEyNCwyLDEzMSwxLDEyNSwKKyAgICAzLDg3LDAsMTEwLDQ4LDQsMCwxMTYsMiwxMDcsMTAsMTE0LDcyLDEsMCwxMjUsCisgICAgNCwxLDAsMTIyLDIwLDExNiwzLDEwMCwxLDEyNCwxLDEwMCwyLDE0MSwyLDEyNCwKKyAgICA0LDEzMCwyLDg3LDAsODksMCwxMDAsMywxMDAsMywxMjUsNCwxMjYsNCw4OCwKKyAgICAwLDExMCwyLDg4LDAsMTE2LDQsMTI0LDMsMTMxLDEsODMsMCw0MSw0LDEyMiwKKyAgICA1Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwKKyAgICAxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDQ2LDEyMiwzOSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMzIsMTE2LDEwNCwxMTQsMTExLAorICAgIDExNywxMDMsMTA0LDMyLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNDEsNDEsMSwKKyAgICAxMTQsMTAyLDAsMCwwLDc4LDQxLDUsMTE0LDE1NSwwLDAsMCwyMTgsOCwxMDMsCisgICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDExNCw0MiwwLDAsMCwxMTQsMTAzLDAsMCwKKyAgICAwLDExNCwxNTMsMCwwLDAsNDEsNSwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDExNCwxNTEsMCwwLDAsMjE4LDMsMTAxLDEyMCwKKyAgICA5OSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyMTIsMiwwLDAsCisgICAgMTE1LDE0LDAsMCwwLDAsMiwxMCwxLDIsMSwxNCwxLDE2LDEsNCwKKyAgICAxLDI4LDEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTQsMzEsMCwwLAorICAgIDAsNDEsMSwyMTgsOSw5NSwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDk5LDMsCisgICAgMCwwLDAsMSwwLDAsMCw0LDAsMCwwLDgsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDEwNiwxLDExNiwyLDEyNCwxLAorICAgIDEyNCwyLDEwMCwxLDEwMCwyLDEyNCwzLDEwMCwzLDE0MSw2LDgzLDAsNDEsNCwKKyAgICAxMjIsMTMwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLAorICAgIDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMCw5NywxMTYsCisgICAgOTcsMzksMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDk5LDk3LDExMCwzMiwKKyAgICA5OCwxMDEsMzIsOTcsMTEwLDEyMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLAorICAgIDQxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMTUsNDYsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMTE0LDE4NiwwLDAsMCw4NCw0MSwyLDIxOCwxMiwxMDAsMTExLAorICAgIDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LDExNCw3MiwwLDAsMCw0MSwKKyAgICAzLDExNCwxMTgsMCwwLDAsMTE0LDE4NSwwLDAsMCwyMTgsNyw5OSwxMTEsMTA5LAorICAgIDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCwxMDQsMCwwLDAsMTE0LDU2LDAsMCwwLAorICAgIDExNCwzNywwLDAsMCwxMTQsMjAwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsMjIyLDIsMCwwLDExNSw0LDAsCisgICAgMCwwLDAsNSwxMiwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMTAsMCwwLDAsCisgICAgNDMsMCwwLDAsNjcsMCwwLDAsMTE1LDk0LDEsMCwwLDEyNCwwLDEwNiwKKyAgICAwLDEyNCwxLDEzMSwxLDEyNSwyLDEwMCwxLDEyNSwzLDEyMSwxMiwxMTYsMSwxMjQsCisgICAgMiwxMzEsMSwxMjUsNCw4NywwLDExMCwyNCw0LDAsMTE2LDIsMTA3LDEwLDExNCwKKyAgICA1MCwxLDAsMSwwLDEsMCwxMDAsMSwxMjUsNCw4OSwwLDExMCwxNjIsODgsCisgICAgMCwxMjEsMTQsMTI0LDAsMTA2LDMsMTI0LDIsMTMxLDEsMTI1LDUsODcsMCwxMTAsCisgICAgMjAsNCwwLDExNiw0LDEwNywxMCwxMTQsODYsMSwwLDEsMCwxLDAsODksCisgICAgMCwxMTAsMTI2LDg4LDAsMTE2LDUsMTI0LDUsMTAwLDIsMjUsMCwxMzEsMSwxMjUsCisgICAgMywxMjEsMTQsMTI0LDAsMTA2LDYsMTI0LDQsMTMxLDEsMTI1LDYsODcsMCwxMTAsCisgICAgMjAsNCwwLDExNiw3LDEwNywxMCwxMTQsMTM0LDEsMCwxLDAsMSwwLDg5LAorICAgIDAsMTEwLDc4LDg4LDAsMTIxLDIwLDExNiw4LDEyNCw2LDEyNCw1LDEyNCwxLDEyNCwKKyAgICA0LDEwMCwzLDE0MSw0LDEyNSw3LDg3LDAsMTEwLDI0LDQsMCwxMTYsOSwxMTYsCisgICAgMTAsMTAyLDIsMTA3LDEwLDExNCwxODAsMSwwLDEsMCwxLDAsODksMCwxMTAsCisgICAgMzIsODgsMCwxMTYsMTEsMTA2LDEyLDEwMCw0LDEyNCw0LDEyNCwyLDEzMSwzLDEsCisgICAgMCwxMTYsMTMsMTI0LDcsMTI0LDEsMTI0LDQsMTI0LDIsMTAwLDUsMTQxLDQsODMsCisgICAgMCwxMjQsMCwxMDYsNiwxMjQsMiwxMzEsMSwxMjUsOCwxMjQsMCwxMDYsMTQsMTI0LAorICAgIDgsMTI0LDIsMTMxLDIsMTI1LDksMTE2LDExLDEwNiwxMiwxMDAsNiwxMjQsMiwxMzEsCisgICAgMiwxLDAsMTE2LDE1LDEwNiwxNiwxMiwwLDE0NCwxLDExNCw5MCwxMjQsNCwxMDAsCisgICAgMSwxMDcsOSwxNDQsMSwxMTQsOTAsMTI0LDMsMTAwLDEsMTA3LDksMTQ0LDEsMTE0LAorICAgIDkwLDExNiwxNywxMjQsOSwxMjQsMywxMTYsMTgsMTI0LDgsMTMxLDEsMTMxLDMsMTI1LAorICAgIDYsMTIxLDMwLDEyNCwwLDEwNiwxOSwxMjQsMiwxMjQsNCwxMjQsNiwxMzEsMywxLAorICAgIDAsMTE2LDExLDEwNiwxMiwxMDAsNywxMjQsNCwxMzEsMiwxLDAsODcsMCwxMTAsCisgICAgMjIsNCwwLDExNiwyLDEwNywxMCwxNDQsMSwxMTQsODgsMSwwLDEsMCwxLAorICAgIDAsODksMCwxMTAsMiw4OCwwLDEyNCw5LDgzLDAsNDEsOCwxMjIsMTkwLDY3LAorICAgIDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwKKyAgICAxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsMTA1LAorICAgIDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTQsCisgICAgMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCisgICAgMTE2LDExNSwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiwxMDEsMTAwLDQ2LDMyLDg0LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQ0LAorICAgIDMyLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk3LAorICAgIDEwOCwxMTUsMTExLDMyLDk4LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICAxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCwxMzAsCisgICAgMCwwLDAsNDEsMywxMTQsMTM2LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LAorICAgIDM3LDAsMCwwLDEyMiwxMywxMjMsMTI1LDMyLDEwOSw5NywxMTYsOTksMTA0LDEwMSwxMTUsCisgICAgMzIsMTIzLDEyNSw0MSwzLDExNCwxMDIsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICA5NCwwLDAsMCwxMjIsMTksOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksCisgICAgMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMTI1LDEyMiwxMCwxMTksMTE0LDExMSwxMTYsMTAxLAorICAgIDMyLDEyMywzMywxMTQsMTI1LDQxLDIwLDExNCwxNTUsMCwwLDAsMTE0LDgzLDAsMCwKKyAgICAwLDExNCw3MCwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwxOTIsMCwwLDAsCisgICAgMTE0LDE2LDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwKKyAgICAxMzksMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMTgsCisgICAgMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwyMDMsMCwKKyAgICAwLDAsMTE0LDgsMCwwLDAsMjE4LDE5LDEwMCwxMTEsMTEwLDExNiw5NSwxMTksMTE0LAorICAgIDEwNSwxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxNDgsMCwwLAorICAgIDAsMTE0LDMzLDAsMCwwLDExNCwxOTYsMCwwLDAsNDEsMTAsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMTIzLDAsMCwwLDExNCw5NCwwLDAsMCwxMTQsMTM3LDAsMCwKKyAgICAwLDExNCw5MywwLDAsMCwyMTgsMiwxMTUsMTE2LDExNCw1NiwwLDAsMCwyMTgsCisgICAgMTAsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMCw5NywxMTYsOTcsMTE0LDE1MSwwLDAsMCwKKyAgICA5MCwxMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NCwwLDAsCisgICAgMCwyMzAsMiwwLDAsMTE1LDc4LDAsMCwwLDAsNywxMCwxLDQsMSwKKyAgICAyLDEsMTIsMSwxNCwxLDEwLDIsMiwxLDE0LDEsMTQsMSw2LDIsCisgICAgMTIsMSwyLDEsMTQsMSwxNCwxLDYsMiwyLDEsNCwxLDQsMSwKKyAgICAxMiwxLDE4LDEsNiwyLDgsMSw2LDEsNiwxLDIsMSw4LDEsCisgICAgMTAsMSwxMiwxLDEyLDEsMjAsMSwxMCwxLDYsMSwxMCwxLDIsMSwKKyAgICAxNCwxLDE2LDEsMTYsMSw2LDEsMTIyLDIxLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsNzgsCisgICAgMTE0LDkxLDAsMCwwLDQxLDEwLDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsCisgICAgMCwxMTQsMTEwLDAsMCwwLDExNCwxOTMsMCwwLDAsMTE0LDE5NCwwLDAsMCwKKyAgICAxMTQsMTk2LDAsMCwwLDExNCwxOTUsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsCisgICAgMjAzLDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5MSwwLAorICAgIDAsMCwxNzIsMiwwLDAsMTE1LDE0LDAsMCwwLDgsMiw4LDgsOCwKKyAgICAxMyw4LDEwLDgsNyw4LDEwLDE0LDgsMTE0LDE5MSwwLDAsMCw5OSwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDAsCisgICAgMCwwLDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwKKyAgICAxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsCisgICAgMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMSw3LDEzNSwwLAorICAgIDEwMiwxLDEwMCw4LDEwMCw5LDEzMiw4LDEzMSwxLDkwLDgsMTAxLDcsMTAwLDEwLAorICAgIDEwMCwxMSwxMzIsMCwxMzEsMSw5MCw5LDEwMCwxMiwxMDAsMTMsMTMyLDAsOTAsMTAsCisgICAgMTM1LDAsOTAsMTEsMTAwLDE0LDgzLDAsNDEsMTUsMjE4LDEwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsMTAzLDY2LDk3LDExNSwxMDEsMzIsMTAyLDEwNSwxMDgsCisgICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTE5LAorICAgIDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMiwxMTQsMTExLDExNiwxMTEsCisgICAgOTksMTExLDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDEwNCw5NywxMTYsCisgICAgMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiwxMTcsMTE1LDk3LDEwMywxMDEsNDYsOTksCisgICAgMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwxMjQsCisgICAgMiwxMjQsMCw5NSwxLDEwMCwxLDgzLDAsNDEsMiwxMjIsNzUsNjcsOTcsOTksCisgICAgMTA0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMiwxMTEsMTE3LDExMCwKKyAgICAxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDc4LDQxLDIsMTE0LDEwMiwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLAorICAgIDAsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxODIsMCwwLDAsMzEsMywwLDAsMTE1LDQsCisgICAgMCwwLDAsMCwzLDYsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwyNCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMDYsMCwxMDcsMiwKKyAgICAxMTEsMjIsMTI0LDAsMTA2LDEsMTI0LDEsMTA2LDEsMTA3LDIsODMsMCw0MSwxLAorICAgIDc4LDQxLDIsMjE4LDksOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsOTUsMTE0LDExNSwKKyAgICAwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMjE4LDUsMTExLDExNiwxMDQsMTAxLAorICAgIDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDM3LDMsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMSwxMiwxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAorICAgIDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMTYsMCwxMjQsMCwxMDYsMiwKKyAgICAxMzEsMSw2NSwwLDgzLDAsNDEsMSw3OCw0MSwzLDIxOCw0LDEwNCw5NywxMTUsCisgICAgMTA0LDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwyMTgsOCw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw0MSwzLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsCisgICAgMTE1LDE2LDAsMCwwLDExNiwwLDExNiwxLDEyNCwwLDEzMSwyLDEwNiwyLDEyNCwKKyAgICAxLDEzMSwxLDgzLDAsNDEsMSwxMjIsMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsCisgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSwKKyAgICA5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLAorICAgIDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwzLDIxOCwKKyAgICA1LDExNSwxMTcsMTEyLDEwMSwxMTQsMTE0LDIwNywwLDAsMCwxMTQsMTkwLDAsMCwwLAorICAgIDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDQxLDEsMTE0LDIwOCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkwLDAsCisgICAgMCwwLDQ0LDMsMCwwLDExNSwyLDAsMCwwLDAsMTAsMTIyLDIyLDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw2LDAsMCwwLDEyNCwKKyAgICAwLDEwNiwwLDgzLDAsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKICAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAogICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsCiAgICAgMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDUxLDMsMCwwLDExNSwyLAorICAgIDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE1NSwwLDAsMCw1NiwzLDAsMCwxMTUsMiwKICAgICAwLDAsMCwwLDMsMTIyLDIzLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAogICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTksMiwKICAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsOSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLAotICAgIDAsMTAwLDEsMCwxMzEsMiwwLDE0MywxNywwLDEyNSwyLDAsMTI0LDIsMCwKLSAgICAxMDYsMiwwLDEzMSwwLDAsODMsODcsMTAwLDIsMCw4MSw4Miw4OCwxMDAsMiwKLSAgICAwLDgzLDQxLDMsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTAwLDk3LDExNiw5NywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTEyLDk3LDExNiwxMDQsMzIsCi0gICAgOTcsMTE1LDMyLDExNCw5NywxMTksMzIsOTgsMTIxLDExNiwxMDEsMTE1LDQ2LDIxOCwxLDExNCwKLSAgICA3OCw0MSwzLDExNCw1MSwwLDAsMCwxMTQsNTIsMCwwLDAsOTAsNCwxMTQsCi0gICAgMTAxLDk3LDEwMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKLSAgICA1NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMjAxLDAsMCwwLDU2LDMsMCwwLDExNSw0LDAsMCwKLSAgICAwLDAsMiwyMSwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSwxMSwxMTQsMTE0LDAsMCwKLSAgICAwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLAotICAgIDExNCwxODYsMCwwLDAsMTE0LDIxNCwwLDAsMCwxMTQsMjE2LDAsMCwwLDExNCwKLSAgICAxMjUsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsMTU5LDAsMCwwLDExNCwyMDEsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsCi0gICAgMjEyLDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTEsMCwwLDAsMjEsMywKLSAgICAwLDAsMTE1LDE0LDAsMCwwLDEyLDMsNiwyLDEyLDYsMTIsNCwxMiwKLSAgICAzLDI0LDEyLDE4LDUsMTE0LDIxMSwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA2NCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMSw5MCw2LDAsCi0gICAgMTAwLDEwLDAsODMsNDEsMTEsMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDYyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsCi0gICAgMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMSwKLSAgICAwLDEyNCwyLDAsMTA2LDEsMCwxMDAsMiwwLDEyNCwyLDAsMTA2LDIsMCwKLSAgICAxMDUsMiwwLDgzLDQxLDMsMTIyLDMzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwxMTQsMTM1LDAsMCwwLDExNCwxMzYsCi0gICAgMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksCi0gICAgMTE2LDEwNSwxMDksMTAxLDkwLDcsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsCi0gICAgMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMjA5LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTgsMCwKLSAgICAwLDAsNjYsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLAotICAgIDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDM0LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMSwKLSAgICAwLDEyNCw0LDAsMTMxLDIsMSw4Myw0MSwyLDc4LDIxOCw1LDk1LDEwOSwxMTEsCi0gICAgMTAwLDEwMSw0MSwyLDExNCw5OSwwLDAsMCwxMTQsMTk5LDAsMCwwLDQxLDUsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCwKLSAgICA1NSwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIwMCwwLDAsMCw3MSwzLDAsCi0gICAgMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsMzIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMjEsMCwwLAotICAgIDAsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsOSwKLSAgICAwLDAsMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LAotICAgIDUsMCwxMDMsMCwwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsODAsCi0gICAgMCwxMTYsMSwwLDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsMCwKLSAgICAwLDEyNCw0LDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywwLAotICAgIDEyNCw2LDAsMTA2LDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsMCwKLSAgICA4NywxMjAsMTMyLDAsMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsMTE4LAotICAgIDAsMTI1LDcsMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLAotICAgIDEyNSw0LDAsMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLAotICAgIDEsMCwxLDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LAotICAgIDAsMSwxLDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywKLSAgICAxMCwwLDExNCwyMTEsMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwwLAotICAgIDEwMCwxLDAsMTI0LDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwwLAotICAgIDgzLDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsCi0gICAgMTEzLDk0LDAsODgsMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LDEsCi0gICAgMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLDMsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LDAsCi0gICAgMTA3LDEwLDAsMTE0LDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LDksCi0gICAgMCwxMDAsMSwwLDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsODksCi0gICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwwLAotICAgIDg4LDEwMCwyLDAsODMsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsCi0gICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDc4LDEyMiwxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LAotICAgIDQxLDExLDExNCw0MCwwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDE2NSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDkwLDUsMTA5LDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwKLSAgICAxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQyLDAsMCwwLDExNCwxMDcsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDQxLDksMTE0LDExMCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDU1LDAsMCwwLDExNCwyMjEsMCwwLDAsMjE4LDYsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwxMTQsOTYsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwKLSAgICAyNSwwLDAsMCwxMTQsMjAyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsNzYsMywwLAotICAgIDAsMTE1LDM4LDAsMCwwLDAsMiwxOCwxLDYsMiwyMiwxLDE4LDEsCi0gICAgMTcsMiwxOSwxLDE1LDEsMywxLDE3LDEsMTMsMiw3LDEsMTgsMywKLSAgICAxNiwxLDI3LDEsMywxLDE2LDEsMTcsMSwxOCwyLDEyMiwyNSw4MywxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsNDEsNywxMTQsMTE0LDAsMCwwLDExNCwKLSAgICAxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwyMTksMCwwLDAsNjIsMywwLDAsMTE1LDgsMCwwLDAsMTIsCi0gICAgMiw2LDIsMTIsNSwxMiw1LDExNCwyMTksMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNDYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLAotICAgIDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwKLSAgICAxMDAsNiwwLDgzLDQxLDcsMjE4LDIwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLAotICAgIDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw0NSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKLSAgICAxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNzYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI1LDMsMCwxMTYsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwKLSAgICAyLDAsMTI0LDIsMCwxMzEsMSwyLDEyNSw0LDAsMTE2LDMsMCwxMjQsNCwKLSAgICAwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDEsMiwKLSAgICA4Myw0MSw0LDc4LDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw5MSwKLSAgICAwLDAsMCw0MSw0LDExNCwxNTksMCwwLDAsMTE0LDIwMSwwLDAsMCwxMTQsCi0gICAgMTQzLDAsMCwwLDExNCwxNDksMCwwLDAsNDEsNSwxMTQsMTEwLDAsMCwwLAotICAgIDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsCi0gICAgMjEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxODgsMCwwLDAsMTA5LDMsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsMSwxNSwxLDE1LDEsMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLAotICAgIDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDExNSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsCi0gICAgNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDIwMywwLDAsMCwxMTUsMywwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwyLDEyMiwzMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDc4LDQxLDYsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwKLSAgICAyMDMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMDUsMywwLAotICAgIDAsMTE1LDYsMCwwLDAsMTIsMiw2LDIsMTIsNiwxMTQsMjI0LDAsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsNjQsMCwwLDAsMTE1LDEzNiwwLDAsMCwxMDEsMCwwLDkwLDEsCi0gICAgMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwKLSAgICAwLDAsOTAsNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsCi0gICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsCi0gICAgMTAwLDExLDAsMTMyLDAsMCw5MCw4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLAotICAgIDAsMCw5MCw5LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwKLSAgICAwLDEwMCwxNiwwLDEwMCwxNywwLDEzMiwwLDAsOTAsMTEsMCwxMDEsMTIsMCwKLSAgICAxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTMsMCwxMDAsCi0gICAgMjAsMCw4Myw0MSwyMSwyMTgsMTksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICA3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDkzLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsCi0gICAgMTA0LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTksMTExLAotICAgIDExNCwxMDcsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMywwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIsCi0gICAgMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwKLSAgICAwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwxMDgsCi0gICAgMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsCi0gICAgMTA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDEzMiwzLDAsCi0gICAgMCwxMTUsNCwwLDAsMCwwLDEsOSwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsMiwKLSAgICAwLDExMSwzMywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsCi0gICAgMTA3LDIsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIxMiwwLDAsMCwxMTQsMTIwLAotICAgIDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMjEzLDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTQsCi0gICAgMCwwLDAsMTM2LDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxOCwxLAotICAgIDEyMiwyNiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAxLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCw2NSw4MywKLSAgICA0MSwxLDc4LDQxLDMsMTE0LDIxNSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwKLSAgICAzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxNiwwLDAsMCwxNDAsCi0gICAgMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwKLSAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICA5NSw5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLAotICAgIDAsMTMxLDIsMCwxMjUsMiwwLDExNiw0LDAsMTAwLDEsMCwxMjQsMSwwLAotICAgIDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEzMSwzLDAsMSwxMjQsMiwwLAotICAgIDgzLDQxLDIsMTIyLDM4LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw5NywxMTAsMzIsMTE3LAotICAgIDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsCi0gICAgMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwzOCwxMDEsMTIwLDExNiwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCi0gICAgMTE0LDEyNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw3LDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsCi0gICAgMTQ3LDAsMCwwLDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDAsMTIxLDExMCwKLSAgICA5NywxMDksMTA1LDk5LDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LAotICAgIDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTg3LDAsMCwwLDE0MywzLDAsMCwxMTUsMTAsMCwwLAotICAgIDAsMCwyLDYsMSwxNSwxLDYsMSwxNiwxLDEyMiwzMyw2OSwxMjAsMTE2LAotICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsNCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLAotICAgIDEsMTAwLDIsMCw4Myw0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAotICAgIDEwNSwxMjIsMTAxLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLAotICAgIDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCw0MSw3LDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTQ3LAotICAgIDAsMCwwLDkwLDEyLDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsCi0gICAgOTksMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICA0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkyLDAsMCwwLAotICAgIDE1MSwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSw2LDEsMTIyLAotICAgIDMxLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAotICAgIDAsMywwLDAsMCwxMTUsNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwNiwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwKLSAgICAxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LAotICAgIDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsNDksODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDExNCwKLSAgICAzMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw0LDAsMCwwLDUxLDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwKLSAgICAwLDkzLDIxLDAsMTI1LDEsMCwxMzYsMCwwLDEwMCwwLDAsMTI0LDEsMCwKLSAgICAyMywxMDcsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQxLDIsMTE0LAotICAgIDE4NiwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsCi0gICAgMCwyMTgsNiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTYwLDMsMCwwLDExNSwKLSAgICAyLDAsMCwwLDYsMSwxMjIsNDksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAotICAgIDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw0LDExNCw0MCwwLDAsMCwKLSAgICAxMTQsMzcsMCwwLDAsMjE4LDMsOTcsMTEwLDEyMSwyMTgsMTgsNjksODgsODQsNjksCi0gICAgNzgsODMsNzMsNzksNzgsOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsNDEsCi0gICAgMSwxMTQsMjI3LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsCi0gICAgMTU3LDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxOSwxLDE4LDEsMTIyLAotICAgIDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwKLSAgICA2Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKLSAgICA5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsCi0gICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDE4OCwwLDAsMCwxNjMsMywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCi0gICAgNTMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCi0gICAgMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICAzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjAzLDAsMCwwLDE2NywzLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDIsMTIyLDMwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNywwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsCi0gICAgMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LAotICAgIDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwKLSAgICAxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDE3MSwzLDAsCi0gICAgMCwxMTUsMiwwLDAsMCwwLDMsMTIyLDMyLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsCi0gICAgMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw3OCw0MSwxNCwxMTQsMTE0LDAsCi0gICAgMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwKLSAgICAwLDExNCwxODYsMCwwLDAsMTE0LDIxNCwwLDAsMCwxMTQsMjE2LDAsMCwwLAotICAgIDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTYxLDAsMCwwLDExNCwKLSAgICAxODgsMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMTI1LDAsMCwwLDExNCwxNTksCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNSwwLDAsMCwxMjQsMywwLDAsCi0gICAgMTE1LDIwLDAsMCwwLDEyLDYsNiwyLDEyLDQsMTIsNCwxMiwzLDEyLAotICAgIDgsMTIsNiwxMiw2LDEyLDQsMTIsNCwxMTQsMjI1LDAsMCwwLDk5LDAsCisgICAgMCwwLDAsMTE1LDMyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEwMCwxLAorICAgIDEzMSwyLDE0MywxMCwxMjUsMiwxMjQsMiwxMDYsMiwxMzEsMCw4MywwLDgxLDAsCisgICAgODIsMCw4OCwwLDEwMCwyLDgzLDAsNDEsMywxMjIsMzksODIsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTUsMzIsMTE0LDk3LDExOSwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsNDYsMjE4LDEsMTE0LDc4LDQxLDMsMTE0LDUyLDAsMCwwLDExNCw1MywKKyAgICAwLDAsMCw5MCw0LDExNCwxMDEsOTcsMTAwLDQxLDMsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTcsMCwwLDAsNjEsMywKKyAgICAwLDAsMTE1LDQsMCwwLDAsMCwyLDE0LDEsMTIyLDE5LDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LAorICAgIDc4LDQxLDEyLDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsCisgICAgMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjEwLDAsMCwKKyAgICAwLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTkwLDAsMCwwLAorICAgIDExNCwxNTUsMCwwLDAsMTE0LDE5NywwLDAsMCw5MCwxMyw5NSw5NSw5OSwxMDgsCisgICAgOTcsMTE1LDExNSw5OSwxMDEsMTA4LDEwOCw5NSw5NSwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCw0MSwxLDExNCwyMDgsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAorICAgIDIwNywwLDAsMCwyNiwzLDAsMCwxMTUsMTQsMCwwLDAsOCwzLDQsCisgICAgMiw4LDYsOCw0LDgsMywxNiwxMiwxMiw1LDExNCwyMDcsMCwwLDAsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsNDYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCwKKyAgICA5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LDE1NiwxLDEwMCw4LDEwMCw5LAorICAgIDEzMiwyLDkwLDYsMTAwLDEwLDgzLDAsNDEsMTEsMjE4LDE2LDgzLDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDYyLDY3LDExMSwKKyAgICAxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMTE2LDAsMTI0LDEsMTMxLDEsMTI1LDIsMTI0LDIsCisgICAgMTA2LDEsMTI0LDIsMTA2LDIsMTAwLDEsMTU2LDIsODMsMCw0MSwyLDEyMiwzMywKKyAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCwKKyAgICA5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgNDYsNDEsMiwxMTQsMTMwLDAsMCwwLDExNCwxMzEsMCwwLDAsNDEsMywxMTQsCisgICAgNDEsMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDkwLDcsCisgICAgMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwzNywKKyAgICAwLDAsMCwxMTQsMjA1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLDAsNzEsMywwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwyLDgsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksCisgICAgMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsMCwwLDUsCisgICAgMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjQsMCwwLDAsCisgICAgMTE2LDAsMTI0LDEsMTMxLDEsMTI1LDQsMTI0LDAsMTA2LDEsMTI0LDIsMTI0LDMsCisgICAgMTI0LDQsMTAwLDEsMTQxLDMsODMsMCw0MSwyLDc4LDQxLDEsMjE4LDUsOTUsCisgICAgMTA5LDExMSwxMDAsMTAxLDQxLDIsMTE0LDEwMSwwLDAsMCwxMTQsMTk1LDAsMCwwLAorICAgIDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDkzLDAsMCwKKyAgICAwLDExNCw1NiwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NiwwLDAsMCw3NiwKKyAgICAzLDAsMCwxMTUsNCwwLDAsMCwwLDIsOCwxLDEyMiwzMiw4MywxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTA1LDE4MiwKKyAgICAxLDAsMCw0MSwxLDExNCwyMTcsMCwwLDAsOTksMywwLDAsMCwxLAorICAgIDAsMCwwLDksMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDI1MCwwLDAsMCwxMTYsMCwxMjQsMSwxMzEsMSw5MiwyLDEyNSw0LDEyNSw1LAorICAgIDEwMywwLDEyNSw2LDEyMCw0MCwxMjQsNCwxMTQsNTYsMTE2LDEsMTI0LDQsMTMxLDEsCisgICAgMTIsMCwxMTQsNTYsMTE2LDAsMTI0LDQsMTMxLDEsOTIsMiwxMjUsNCwxMjUsNywKKyAgICAxMjQsNiwxMDYsMiwxMjQsNywxMzEsMSwxLDAsMTEzLDE4LDg3LDAsMTIwLDEwOCwKKyAgICAxMTYsMywxMjQsNiwxMzEsMSw2OCwwLDkzLDk2LDEyNSw3LDExNiw0LDEyNCw0LAorICAgIDEyNCw3LDEzMSwyLDEyNSw0LDEyMSwxNCwxMTYsNSwxMDYsNiwxMjQsNCwxMzEsMSwKKyAgICAxLDAsODcsMCwxMTMsNjgsNCwwLDExNiw3LDEwNywxMCwxMTQsMTE4LDEsMCwKKyAgICAxLDAsMSwwLDExOSw2OCw4OSwwLDExMyw2OCw0LDAsMTE2LDgsMTA3LDEwLAorICAgIDExNCwxNjIsMSwwLDEyNSw4LDEsMCwxMjIsMTgsMTE2LDksMTA2LDEwLDEwMCwxLAorICAgIDEyNCw0LDEyNCw4LDEzMSwzLDEsMCwxMDAsMiw4MywwLDEwMCwyLDEyNSw4LAorICAgIDEyNiw4LDg4LDAsMTEzLDY4LDg4LDAsMTEzLDY4LDg3LDAsMTIxLDI4LDExNiwxMSwKKyAgICAxMjQsMSwxMjQsMiwxMjQsMywxMzEsMywxLDAsMTE2LDksMTA2LDEwLDEwMCwzLAorICAgIDEyNCwxLDEzMSwyLDEsMCw4NywwLDExMCw0OCw0LDAsMTE2LDgsMTA3LDEwLAorICAgIDExNCwyNDQsMSwwLDEyNSw4LDEsMCwxMjIsMjAsMTE2LDksMTA2LDEwLDEwMCwxLAorICAgIDEyNCwxLDEyNCw4LDEzMSwzLDEsMCw4NywwLDg5LDAsMTAwLDIsMTAwLDIsCisgICAgMTI1LDgsMTI2LDgsODgsMCwxMTAsMiw4OCwwLDEwMCwyLDgzLDAsNDEsNCwKKyAgICAxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsCisgICAgMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEyMiwyNyw5OSwKKyAgICAxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLAorICAgIDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDc4LDEyMiwxMiw5OSwxMTQsMTAxLAorICAgIDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQxLDEyLDExNCw0MCwwLDAsMCwKKyAgICAxMTQsNDgsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LAorICAgIDMwLDAsMCwwLDExNCwzLDAsMCwwLDkwLDUsMTA5LDEwNywxMDAsMTA1LDExNCwKKyAgICAyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE0LDQyLDAsMCwwLDExNCwxMTgsMCwwLDAsMTE0LDEzMywwLDAsMCwKKyAgICAxMTQsNTgsMCwwLDAsNDEsOSwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsCisgICAgMCwxMTQsNTYsMCwwLDAsMTE0LDIxNywwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDExNCw5OCwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDI1LDAsCisgICAgMCwwLDExNCwxOTgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE5NSwwLDAsMCw4MSwzLDAsMCwxMTUsCisgICAgNDIsMCwwLDAsMCwyLDEyLDEsNCwyLDE2LDEsMTIsMSwxNCwyLAorICAgIDE0LDEsMTAsMSwyLDEsMTQsMSwxNCwyLDYsMSwxNiwzLDYsMSwKKyAgICA4LDEsMjAsMSwyLDEsMTIsMSwxNiwxLDE2LDIsOCwxLDEyMiwyNSwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsNDEsNywxMTQsMTA5LDAsMCwKKyAgICAwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLAorICAgIDExNCwxOTQsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwyMTUsMCwwLDAsNjcsMywwLDAsMTE1LDgsMCwwLAorICAgIDAsOCwyLDQsMiw4LDUsOCw1LDExNCwyMTUsMCwwLDAsOTksMCwKICAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwKLSAgICAwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwKLSAgICAzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksCi0gICAgMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLAotICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsCi0gICAgOTUsMSwwLDExNiwyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCw5NSwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsCi0gICAgMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDIxOCwxMSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsCi0gICAgMCwwLDE4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDEsOSwxLDksCi0gICAgMSwyMSwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAotICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLAotICAgIDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCwKLSAgICA4MywxMjQsMSwwLDEwMCw1LDAsMTAyLDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywKLSAgICAxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw2MCwwLAotICAgIDAsMCwxMTQsMzIsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDkwLDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMTQsOCwwLAotICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMjMyLDAsMCwwLDExNCwzNCwKLSAgICAwLDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDIyMywwLDAsMCwyMTgsCi0gICAgMywxMDAsMTExLDExNiw5MCwyLDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxOTAsMywwLDAsMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LAotICAgIDMsMTIyLDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwKLSAgICAxLDAsMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDI1LDEyNCwyLDAsMTMxLDIsMCw4Myw0MSwxLDc4LDQxLDQsMTE0LDIzOSwKLSAgICAwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCw4LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTgsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw5MCwxNCwxMTIsOTcsMTE2LDEwNCw5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMjM0LDAsMCwwLDIwMCwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsCi0gICAgMTgsMSwxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKLSAgICAxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTE4LDAsMCwwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDExMSwwLDEyNCwwLAotICAgIDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwMiwwLDEyNCwKLSAgICAyLDAsMTA2LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwMiwwLDEyNCwyLAotICAgIDAsMTA2LDYsMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLDAsCi0gICAgOTUsNywwLDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsMTI0LDAsMCwxMDYsCi0gICAgNywwLDgzLDQxLDEsNzgsNDEsOCwxMTQsOTUsMCwwLDAsMTE0LDIzNCwwLAotICAgIDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzYsMCwwLDAsMTE0LDIzMiwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDIzMywwLDAsMCwKLSAgICA0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCwKLSAgICA5OSwxMTcsMTA4LDk3LDExNiwxMDEsMjA0LDMsMCwwLDExNSwxNiwwLDAsMCwwLAotICAgIDIsMTgsMSwxNSwxLDIxLDMsMjcsMSw5LDEsMTIsMSw5LDEsMTIyLAotICAgIDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwKLSAgICAxMTQsMTE0LDI0MSwwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsCi0gICAgMTA1LDExNiwxMDEsMTE0LDk1LDk1LDIxNywzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMzMsMCwwLDAsMTE0LDI0MSwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsCi0gICAgOTUsOTUsMjIwLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjIsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LAotICAgIDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwKLSAgICAxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwKLSAgICAyLDc4LDEyMiwyMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNDksMCwwLDAsMTE0LAotICAgIDIzMywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDk1LDIyMywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwKLSAgICAwLDgzLDQxLDEsNzgsNDEsMSwxMTQsMjQxLDAsMCwwLDQxLDIsMTE0LDExMCwKKyAgICAwLDAsMCwxMTUsMzIsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLAorICAgIDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwKKyAgICAxMzIsMCw5MCw1LDEwMCw2LDgzLDAsNDEsNywyMTgsMjAsODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMTIyLDQ1LDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA0LAorICAgIDk3LDExMCwxMDAsMTA4LDEwMSwxMTUsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwKKyAgICAxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0Niw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0OCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsCisgICAgMSwxMjUsMiwxMjQsMCwxMDYsMSwxMjQsMiwxMzEsMSwxMjUsMywxMTYsMiwxMjQsCisgICAgMywxMjQsMSwxMjQsMiwxMDAsMSwxNDEsMywxMjUsNCwxMTYsMywxMjQsNCwxMjQsCisgICAgMSwxMjQsMiwxMDAsMiwxNDEsMyw4MywwLDQxLDMsNzgsNDEsMiwxMTQsMTAyLAorICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMDIsMCwwLDAsMTE0LAorICAgIDkzLDAsMCwwLDQxLDQsMTE0LDE1NSwwLDAsMCwxMTQsMTk3LDAsMCwwLAorICAgIDExNCwxMzksMCwwLDAsMTE0LDE0NSwwLDAsMCw0MSw1LDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU2LDAsMCwwLAorICAgIDExNCwyMDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTYsMywwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwxLDEwLDEsMTAsMSwxNCwxLDEyMiwyOSw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LAorICAgIDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLAorICAgIDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LAorICAgIDEyMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwxMTQsMTk5LDAsMCwwLDEyMiwzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDIsMTIyLDMxLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsCisgICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNzgsNDEsNiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODQsMCwwLDAsCisgICAgMTE0LDE5OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjIwLDAsMCwwLDExMiwzLAorICAgIDAsMCwxMTUsNiwwLDAsMCw4LDIsNCwyLDgsNiwxMTQsMjIwLDAsCisgICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsNjQsMCwwLDAsMTE1LDkyLDAsMCwwLDEwMSwwLDkwLDEsCisgICAgMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsCisgICAgMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LAorICAgIDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LAorICAgIDEwMCwxMiwxMDAsMTMsMTMyLDAsOTAsOSwxMDAsMTQsMTAwLDE1LDEzMiwwLDkwLDEwLAorICAgIDEwMCwxNiwxMDAsMTcsMTMyLDAsOTAsMTEsMTAxLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsCisgICAgMTMxLDEsOTAsMTMsMTAwLDIwLDgzLDAsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwKKyAgICA5Myw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksCisgICAgMTE2LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLAorICAgIDExNiwxMTEsMzIsMTE5LDExMSwxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LAorICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsCisgICAgMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMTAyLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsMTE0LDEwMiwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMzksMywwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsCisgICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDI0LDAsMCwKKyAgICAwLDEyNCwwLDEwNiwwLDEyNCwxLDEwNiwwLDEwNywyLDExMSwyMiwxMjQsMCwxMDYsCisgICAgMSwxMjQsMSwxMDYsMSwxMDcsMiw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjA4LAorICAgIDAsMCwwLDExNCwxMTUsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICAyMDksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDIxMCwwLDAsMCwxNDMsMywwLDAsMTE1LDQsMCwwLAorICAgIDAsMCwxLDEyLDEsMTIyLDI2LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsCisgICAgOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LAorICAgIDEsMTMxLDEsMTE2LDAsMTI0LDAsMTA2LDIsMTMxLDEsNjUsMCw4MywwLDQxLAorICAgIDEsNzgsNDEsMywxMTQsMjExLDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDM3LAorICAgIDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjEyLDAsMCwwLDE0NywzLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk1LDEwNCw5NywxMTUsMTA0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwKKyAgICAwLDExNiwwLDEwNiwxLDExNiwyLDEwNiwzLDEyNCwxLDEzMSwyLDEyNSwyLDExNiwKKyAgICAwLDEwNiw0LDEwMCwxLDEyNCwxLDEwNiw1LDEyNCwwLDEwNiw2LDEzMSwzLDEsCisgICAgMCwxMjQsMiw4MywwLDQxLDIsMTIyLDM4LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwKKyAgICA5NywxMTAsMzIsMTE3LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDMyLDEwMSwKKyAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKKyAgICAzOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDEwMiwxMTQsCisgICAgMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw0MSw3LDExNCwxMTgsMCwwLDAsMTE0LDE4NSwKKyAgICAwLDAsMCwxMTQsMTQzLDAsMCwwLDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICA5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNCwxMzMsMCwwLDAsMTE0LDEwMiwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxNjIsCisgICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDE1MCwzLDAsMCwKKyAgICAxMTUsMTAsMCwwLDAsMCwyLDQsMSwxMCwxLDYsMSwxMiwxLDEyMiwKKyAgICAzMyw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMTA2LDEsCisgICAgMTE2LDIsMTA2LDMsMTI0LDEsMTMxLDIsMSwwLDExNiwwLDEwNiw0LDEwMCwxLAorICAgIDEyNCwwLDEwNiw1LDEyNCwwLDEwNiw2LDEzMSwzLDEsMCwxMDAsMiw4MywwLAorICAgIDQxLDMsMTIyLDMwLDczLDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsOTcsCisgICAgMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDEyMiw0MCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LAorICAgIDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDc4LDQxLDcsMTE0LAorICAgIDExOCwwLDAsMCwxMTQsMTg1LDAsMCwwLDExNCwxNDMsMCwwLDAsOTAsMTIsCisgICAgMTAxLDEyMCwxMDEsOTksOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMTMzLDAsMCwKKyAgICAwLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwxODgsMCwwLDAsMTU4LDMsMCwwLDExNSwKKyAgICA2LDAsMCwwLDAsMiwxNCwxLDYsMSwxMjIsMzEsNjksMTIwLDExNiwxMDEsCisgICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAorICAgIDExNSwzNiwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMDAsMSwyNSwKKyAgICAwLDEzNywwLDExNiwyLDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw4LDExNiwKKyAgICAzLDY4LDAsMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiw0OSw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsMTE0LDMxLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDQsMCwwLDAsNTEsMCwwLDAsMTE1LDI2LDAsMCwwLDEyNCwwLDkzLAorICAgIDE4LDEyNSwxLDEzNiwwLDEwMCwwLDEyNCwxLDIzLDAsMTA3LDIsODYsMCwxLAorICAgIDAsMTEzLDIsMTAwLDEsODMsMCw0MSwyLDExNCwxODIsMCwwLDAsNzgsMTE0LAorICAgIDQsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsMjE4LDYsMTE1LDExNywxMDIsCisgICAgMTAyLDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDksNjAsMTAzLDEwMSwxMTAsCisgICAgMTAxLDEyMCwxMTIsMTE0LDYyLDE2NywzLDAsMCwxMTUsMiwwLDAsMCw0LDEsCisgICAgMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLAorICAgIDExMiwxMTQsNjIsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwKKyAgICAzLDk3LDExMCwxMjEsMjE4LDE4LDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDk1LAorICAgIDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMTIzLDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDIyMywwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTU3LDAsMCwwLDE2NCwzLDAsMCwxMTUsNiwKKyAgICAwLDAsMCwwLDIsMTQsMSwxMiwxLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsCisgICAgMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LAorICAgIDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjMsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LAorICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDk3LAorICAgIDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsOTksMTExLAorICAgIDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LDc4LDExNCw0LDAsMCwwLAorICAgIDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLDAsCisgICAgMTcwLDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjgsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwKKyAgICAwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDQsOTcsMTE4LDEwMSwKKyAgICAzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsCisgICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMTE0LDE5OSwwLDAsMCwxNzQsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAyLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDYsMCwwLDAsMTI0LDAsMTA2LDAsODMsCisgICAgMCw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLAorICAgIDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwxNTUsMCwwLDAsMTc4LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMywxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCwKKyAgICA5NywxMDksMTAxLDc4LDQxLDE0LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwKKyAgICAxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsCisgICAgMjEwLDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTg4LAorICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMTk5LDAsCisgICAgMCwwLDExNCwxMjAsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAxMTQsMjIxLDAsMCwwLDEzMSwzLDAsMCwxMTUsMjAsMCwwLDAsOCw2LAorICAgIDQsMiw4LDQsOCw0LDgsMyw4LDgsOCw2LDgsNiw4LDQsCisgICAgOCw0LDExNCwyMjEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsOTYsMCwwLAorICAgIDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLAorICAgIDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCwKKyAgICA3LDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsMTAsMTAwLAorICAgIDExLDEzMiwwLDkwLDgsMTAwLDEyLDEwMCwxMywxMzIsMCw5MCw5LDEwMCwxNCwxMDAsCisgICAgMTUsMTMyLDAsOTAsMTAsMTAwLDE2LDEwMCwxNywxMzIsMCw5MCwxMSwxMDAsMTgsMTAwLAorICAgIDE5LDEzMiwwLDkwLDEyLDEwMCwyMCwxMDAsMjEsMTMyLDAsOTAsMTMsMTAwLDIyLDgzLAorICAgIDAsNDEsMjMsMjE4LDE0LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCisgICAgOTcsMTE2LDEwNCw5NywzOCwxLDAsMCw4MiwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsCisgICAgMTE2LDExNSwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMzksMTE1LDMyLDExMiw5NywxMTYsMTA0LDQ2LDMyLDMyLAorICAgIDczLDExNiwzMiwxMTcsMTE1LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiw5NywxMTAsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTYsMzIsMTA4LDExMSwxMTEsMTA3LDExNSwzMiwxMTcsCisgICAgMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzksMTE1LDEwLDMyLAorICAgIDMyLDMyLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQ2LDMyLDMyLDg3LDEwNCwKKyAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTE1LDQ0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTEsMTE5LAorICAgIDExMCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNCwxMDEsOTksMTExLDEwOSwxMTIsCisgICAgMTE3LDExNiwxMDEsMTAwLDQ0LDEwLDMyLDMyLDMyLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMzIsMzIsNzAsMTExLAorICAgIDExNCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMDUsMTE1LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDk5LDQsCisgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDM2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsCisgICAgMTI0LDAsOTUsMSwxMTYsMiwxMjQsMCwxMDYsMywxMzEsMCwxMzEsMSwxMjQsMCwKKyAgICA5NSw0LDEyNCwzLDEyNCwwLDk1LDUsMTAwLDAsODMsMCw0MSwxLDc4LDQxLAorICAgIDYsMjE4LDUsOTUsMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDk3LDAsMCwwLDIxOCwxNiw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwxNyw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDIxOCwxMiw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MSw0LDExNCwxMDQsMCwwLDAsMTE0LDEwMiwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDExLDExMiw5NywxMTYsMTA0LDk1LDEwMiwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxODIsMCwwLDAsMTkxLDMsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMSw2LDEsNiwxLDE0LDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTA2LDEsMTAwLDEsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsCisgICAgMiwxMDAsMiwxMDcsMiwxMTQsMzAsMTAwLDYsODMsMCwxMjQsMSwxMDAsNSwxMDIsCisgICAgMiw4MywwLDQxLDcsMTIyLDYyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LAorICAgIDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsMTExLDEwMiwzMiw0MCwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDQ1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ1LDExMCw5NywxMDksMTAxLDQ0LDMyLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsNDUsMTEyLDk3LDExNiwxMDQsNDUsOTcsMTE2LDExNiwxMTQsNDUsCisgICAgMTEwLDk3LDEwOSwxMDEsNDEsMTE0LDYxLDAsMCwwLDExNCwzMiwwLDAsMCwxMTQsCisgICAgOCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5NSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSw5NSw0MSwyLDExNCw4LDAsMCwwLDExNCwzNywwLDAsMCw0MSwKKyAgICAyLDExNCwyMjgsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDQsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMjE5LDAsMCwwLDIxOCwzLDEwMCwxMTEsMTE2LDkwLDIsMTA5LDEwMSwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMjMsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDE5NywzLDAsMCwxMTUsOCwwLDAsCisgICAgMCwwLDIsMTgsMSw4LDIsNCwzLDEyMiwzOCw5NSw3OCw5NywxMDksMTAxLAorICAgIDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE1LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDI4LDAsMCwwLDEyNCwwLDEwNiwwLDEzMSwKKyAgICAwLDkyLDIsMTI1LDEsMTI1LDIsMTE2LDEsMTE2LDIsMTA2LDMsMTI0LDEsMjUsCisgICAgMCwxMjQsMiwxMzEsMiw4MywwLDQxLDEsNzgsNDEsNCwxMTQsMjM1LDAsMCwKKyAgICAwLDExNCwxMTQsMCwwLDAsMTE0LDgsMCwwLDAsMjE4LDcsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE1LDQxLDMsMTE0LDEwNCwwLDAsMCw5MCwxOCwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkwLAorICAgIDE0LDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMzAsCisgICAgMCwwLDAsMjA3LDMsMCwwLDExNSw0LDAsMCwwLDAsMSwxMiwxLAorICAgIDEyMiwzMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsCisgICAgNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw4MCwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsCisgICAgMSwxMzEsMCwxMzEsMSwxMjUsMSwxMjQsMSwxMjQsMCwxMDYsMiwxMDcsMywxMTQsCisgICAgNzQsMTI0LDAsMTA2LDMsMTI0LDAsMTA2LDQsMTI0LDEsMTMxLDIsMTI1LDIsMTI0LAorICAgIDIsMTAwLDAsMTA3LDksMTE0LDY4LDEyNCwyLDEwNiw1LDEwMCwwLDEwNyw4LDExNCwKKyAgICA2OCwxMjQsMiwxMDYsNiwxMTQsNjgsMTI0LDIsMTA2LDYsMTI0LDAsOTUsNywxMjQsCisgICAgMSwxMjQsMCw5NSwyLDEyNCwwLDEwNiw3LDgzLDAsNDEsMSw3OCw0MSw4LAorICAgIDExNCw5NywwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMzEsMCwwLDAsMTE0LAorICAgIDIzMiwwLDAsMCwxMTQsMjI4LDAsMCwwLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwKKyAgICAwLDAsMCwxMTQsMjI5LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCw5MCwKKyAgICAxMSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjIsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDEyLDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwyMTEsMywKKyAgICAwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMiwxLDEwLDEsMTQsMywxOCwKKyAgICAxLDYsMSw4LDEsNiwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LAorICAgIDEwOCw5NywxMTYsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLAorICAgIDEyNCwwLDEwNiwxLDEzMSwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCwKKyAgICA0LDEwNSwxMTYsMTAxLDExNCwxMTQsMjM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsOCw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsMjI0LDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNCwwLDAsMCwxMjQsMiwxMjQsMCwxMDYsMCwxMjQsMSwKKyAgICA2MCwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwxLDExNCwyMjksMCwwLDAsCisgICAgNDEsMywxMTQsMTA0LDAsMCwwLDIxOCw1LDEwNSwxMTAsMTAwLDEwMSwxMjAsMTE0LDM3LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDIxOCwxMSw5NSw5NSwxMTUsMTAxLDExNiwxMDUsMTE2LDEwMSwxMDksOTUsOTUsMjI3LAorICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjYsOTUsNzgsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNSwxMDEsMTE2LAorICAgIDEwNSwxMTYsMTAxLDEwOSw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwKKyAgICAxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMCwxMzEsMSw4MywwLDQxLDEsNzgsNDEsCisgICAgMiwxMTQsMzMsMCwwLDAsMTE0LDIzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsOTUsOTUsMjMwLDMsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjIsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwKKyAgICAxLDgzLDAsNDEsMiw3OCwxMjIsMjAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw4MCw5NywxMTYsMTA0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LDUwLAorICAgIDAsMCwwLDExNCwyMjksMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LAorICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwyMzMsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyLDAsMCwwLDEyNCwxLDEyNCwwLDEwNiwwLDEzMSwwLDEwNyw2LAorICAgIDgzLDAsNDEsMSw3OCw0MSwxLDExNCwyMzcsMCwwLDAsNDEsMiwxMTQsMTA0LAogICAgIDAsMCwwLDIxOCw0LDEwNSwxMTYsMTAxLDEwOSwxMTQsNCwwLDAsMCwxMTQsNCwKICAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsOTUsOTksMTExLDExMCwxMTYsCi0gICAgOTcsMTA1LDExMCwxMTUsOTUsOTUsMjI2LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgOTcsMTA1LDExMCwxMTUsOTUsOTUsMjM2LDMsMCwwLDExNSwyLDAsMCwwLDAsCiAgICAgMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsCiAgICAgMTA0LDQ2LDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTE1LDk1LDk1LDk5LDIsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDIwLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKLSAgICAyLDExNCwyMzMsMCwwLDAsMTE0LDE2NSwwLDAsMCw0MSwyLDExNCwxMTAsMCwKLSAgICAwLDAsMTE0LDI0NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwxMTQsMTY1LDAsMCwwLDIyOSwzLDAsMCwxMTUsCi0gICAgMiwwLDAsMCwwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKLSAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDEzLAotICAgIDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwKLSAgICAxMTYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwyMzQsCi0gICAgMCwwLDAsMTE0LDI0MSwwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDQsMCwKLSAgICAwLDAsMTE0LDI0NSwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwxNjUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDIzMSwwLDAsMCwxNzcsMywwLDAsMTE1LDIwLAotICAgIDAsMCwwLDEyLDUsNiwyLDEyLDYsMTIsMTAsMTIsNCwxMiwxMywxMiwKLSAgICAzLDEyLDMsMTIsMywxMiwzLDExNCwyMzEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsMTE4LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDEsNCwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLAotICAgIDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDYsMCwxMDAsNywwLDEwMCwKLSAgICA4LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwKLSAgICAwLDkwLDgsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDkwLDksMCwKLSAgICAxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE1LDAsMTAwLAotICAgIDE2LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxNywwLDgzLDQxLDE4LDIxOCwxNiwKLSAgICA5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMTI0LDAsMCw5NSwxLDAsMTAwLAotICAgIDAsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDIzMSwwLDAsMCwxMTQsMjMzLDAsCi0gICAgMCwwLDQxLDQsMTE0LDExMCwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMTQsMjM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODYsMCwwLDAsMjM1LDMsMCwwLAotICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAotICAgIDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsCi0gICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICAxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwKLSAgICAxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsCi0gICAgOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMTIyLDI1LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsCi0gICAgMTE0LDQ5LDAsMCwwLDExNCwxMTQsMCwwLDAsNDEsMiwxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCwyMzgsMywwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyOCw5NSwKKyAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsMTA2LDAsMTA2LDEsMTI0LDEsCisgICAgMTMxLDEsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLDExNCwyMjksMCwKKyAgICAwLDAsMTE0LDE2MSwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDI0NCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTYxLDAsMCwwLDIzOSwzLDAsMCwxMTUsMiwwLDAsMCwKKyAgICAwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCisgICAgMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LDQxLDE0LDExNCwxMDksMCwwLAorICAgIDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsCisgICAgMTE0LDE4MiwwLDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LAorICAgIDIzNywwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDI0MiwKKyAgICAwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDUsMCwwLDAsMTE0LDE2MSwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMjI3LDAsMCwwLDE4NCwzLDAsMCwxMTUsCisgICAgMjIsMCwwLDAsOCw1LDQsMiw4LDYsOCwxMCw4LDQsOCwxMywKKyAgICA4LDMsOCwzLDgsMyw4LDMsOCwzLDExNCwyMjcsMCwwLDAsOTksCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICA2NCwwLDAsMCwxMTUsODAsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwKKyAgICAyLDEwMCwxLDEwMCwyLDEzMiwwLDkwLDMsMTAxLDQsMTAwLDMsMTAwLDQsMTMyLAorICAgIDAsMTMxLDEsOTAsNSwxMDAsNSwxMDAsNiwxMzIsMCw5MCw2LDEwMCw3LDEwMCwKKyAgICA4LDEzMiwwLDkwLDcsMTAwLDksMTAwLDEwLDEzMiwwLDkwLDgsMTAwLDExLDEwMCwKKyAgICAxMiwxMzIsMCw5MCw5LDEwMCwxMywxMDAsMTQsMTMyLDAsOTAsMTAsMTAwLDE1LDEwMCwKKyAgICAxNiwxMzIsMCw5MCwxMSwxMDAsMTcsODMsMCw0MSwxOCwyMTgsMTYsOTUsNzgsOTcsCisgICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTI0LDEsMTI0LDIsMTI0LDMsMTMxLAorICAgIDMsMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjI3LAorICAgIDAsMCwwLDExNCwyMjksMCwwLDAsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICAxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwyMzMsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLAorICAgIDAsMCwyNDUsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSwKICAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsODQsMTE0LDQsMCwKLSAgICAwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE2MSwwLAotICAgIDAsMCwyNDcsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSwKLSAgICA3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwKLSAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiw3OCwxMTQsMzIsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwyNTAsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsODMsNDEsNiw3OCwKLSAgICAxMTQsMzIsMCwwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LAotICAgIDE5MCwwLDAsMCwxMTQsMjA1LDAsMCwwLDg0LDQxLDEsMTE0LDIwNiwwLDAsCi0gICAgMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwKLSAgICAwLDI1MywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywKLSAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLAotICAgIDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDk3LDExNywxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwxMTQsMTg3LDAsMCwwLDAsNCwwLDAsMTE1LDAsMCwKLSAgICAwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTkyLDAsMCwwLDMsNCwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsMSwxMTYsMiwwLDEwNiwzLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsOTgsNzYsCi0gICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLAotICAgIDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwKLSAgICAzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTA3LDAsMCwwLAotICAgIDExNCwyMzMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTkzLDAsMCwwLDQxLAotICAgIDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLDAsNiwKLSAgICA0LDAsMCwxMTUsNCwwLDAsMCwwLDcsMTYsMSwxMjIsMjgsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LAotICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDEsMTIsMTE0LDExNCwwLAotICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE4NiwwLDAsCi0gICAgMCwxMTQsMTg0LDAsMCwwLDExNCwyNDksMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxMTQsMjAzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsCi0gICAgMTkyLDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI0OCwwLAotICAgIDAsMCwyMzQsMywwLDAsMTE1LDE2LDAsMCwwLDEyLDEsMTIsMywxOCwKLSAgICA5LDEyLDMsMTIsMywxMiwzLDEyLDMsMTIsMywxMTQsMjQ4LDAsMCwwLAotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDE2MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwKLSAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwKLSAgICAyLDAsMTAwLDMsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw0LAotICAgIDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw2LDAsCi0gICAgMTAxLDQsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLAotICAgIDcsMCwxMDEsNCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsOTAsOCwwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDExLDAsMTAwLDEyLDAsCi0gICAgMTMyLDEsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwKLSAgICAxMCwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwyLDAsMTMxLDEsMCw5MCwxMCwKLSAgICAwLDEwMSw0LDAsMTAwLDEwLDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDEsMCwKLSAgICAxMzEsMSwwLDkwLDExLDAsMTAwLDEwLDAsODMsNDEsMTcsMjE4LDEwLDgwLDk3LAotICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsCi0gICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsCi0gICAgOTcsMTAzLDEwMSwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LAotICAgIDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDU1LDAsCi0gICAgMCwwLDEyMCw0OCwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEzMSwwLAotICAgIDAsNjgsOTMsMzEsMCwxMjUsMSwwLDExNiwzLDAsMTI0LDEsMCwxMDAsMSwKLSAgICAwLDEzMSwyLDAsMTE0LDE2LDAsMTI0LDEsMCwxMDYsNCwwLDEzMSwwLDAsCi0gICAgMSwxMTMsMTYsMCw4NywxMDAsMiwwLDgzLDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsCi0gICAgMTA4LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCi0gICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNDAsNDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCi0gICAgMzIsMTExLDExMCwzMiw5NywxMDgsMTA4LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LAotICAgIDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExNSwxMTYsMTExLDExNCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDExNSwzMiw0MCwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLAotICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LAotICAgIDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwKLSAgICAxMTQsOCwwLDAsMCwyMTgsMTksMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LAotICAgIDEwMSwxMTUsMTE0LDExNywwLDAsMCwxMTQsMjUxLDAsMCwwLDQxLDIsMTE0LDE3MiwKLSAgICAwLDAsMCwyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjUxLDAsMCwwLDIzLAotICAgIDQsMCwwLDExNSw2LDAsMCwwLDAsNCwyMiwxLDE1LDEsMTIyLDI4LAotICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsCi0gICAgMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDk5LDIsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMDcsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTA3LAotICAgIDksMCwxMTQsNDEsMCwxMTYsMCwwLDEwNiwxLDAsMTIsMTE0LDQxLDAsMTE2LAotICAgIDIsMCwxMDYsMywwLDEwMCwyLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTIwLAotICAgIDU5LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDQ0LDAsMTI1LDIsMCwxMjEsCi0gICAgMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTMxLDEsMCw4Myw4NywxMTMsNTEsMCwKLSAgICA0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxLDEsMTE5LDUxLDAsCi0gICAgODksMTEzLDUxLDAsODgsMTEzLDUxLDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDExMyw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTAxLDExMywxMTcsCi0gICAgMTAxLDExMCw5OSwxMDEsMzIsMTExLDEwMiwzMiwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LAotICAgIDExMiw5NywxMTYsMTA0LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDczLDEwMiwzMiwzOSwxMDQsMTExLDExMSwxMDcsMTE1LDM5LDMyLDEwNSwxMTUsMzIsMTAyLDk3LAotICAgIDEwOCwxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTcsMTE1LDEwMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDc4LDEyMiwyMywxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwKLSAgICA0MSw2LDExNCw4LDAsMCwwLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAotICAgIDExMSwxMDcsMTE1LDExNCw2MiwwLDAsMCwxMTQsNjMsMCwwLDAsMTE0LDEyNywwLAotICAgIDAsMCwxMTQsMTA5LDAsMCwwLDQxLDMsMTE0LDE3MiwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNCwxMTEsMTExLDEwNywxMTUsMzEsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNywKLSAgICAyNSwxLDE2LDEsMTYsMSwzLDEsMTQsMSwxMywxLDEyLDIsMTIyLDIyLAotICAgIDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLAotICAgIDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMjMsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDUzLDAsMTIxLDE2LDAsMTE2LAotICAgIDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCw4NywxMTAsMjIsMCw0LAotICAgIDExNiwyLDAsMTA3LDEwLDAsMTE0LDUyLDAsMSwxLDEsMTAwLDIsMCw4MywKLSAgICA4OSwxMTAsMSwwLDg4LDEyMSwxNywwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDI1LDEyNSwyLDAsODcsMTEwLDQ2LDAsNCwxMTYsNSwwLDEwNywxMCwwLAotICAgIDExNCwxMTgsMCwxLDEsMSwxMjQsMCwwLDEwNiw2LDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCw2MCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsODMsNDEsMywxMjIsMjEwLDcxLAotICAgIDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwKLSAgICAzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LAotICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsCi0gICAgMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsCi0gICAgOTcsMTE2LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw5NywxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwKLSAgICAzMiw3MywxMDIsMzIsMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LAotICAgIDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LAotICAgIDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzIsMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsCi0gICAgMCwwLDAsMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsCi0gICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsMjUyLDAsMCwwLAotICAgIDExNCwxMzksMCwwLDAsMTE0LDAsMSwwLDAsNDEsMywxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LAotICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDgsNCwwLDAsMTE1LDIyLDAsMCwwLDAsOCwxMiwxLDMsMSwxNiwKLSAgICAxLDEzLDMsOSwxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwKLSAgICAzMSw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDMsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDExOSwwLDAsMCwxMTYsMCwwLDEyNCwyLDAsCi0gICAgMTAwLDEsMCwxMzEsMiwwLDExNCwzOSwwLDEyNCwyLDAsMTA2LDEsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsMCwxMTAsMjEsCi0gICAgMCwxMjQsMiwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwzLDAsCi0gICAgMTAzLDAsMCwxMjUsNCwwLDEyNCwzLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwKLSAgICA4OCwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsCi0gICAgMCw4MywxMTYsMywwLDEwNiw1LDAsMTI0LDEsMCwxMDAsMCwwLDEzMSwyLAotICAgIDAsMTI1LDUsMCwxMjQsNCwwLDEyNCw1LDAsOTUsNiwwLDEyNCw1LDAsCi0gICAgODMsNDEsMiw3OCwxMTQsMTI2LDAsMCwwLDQxLDcsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTI2LDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsCi0gICAgMTgwLDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDE1OCwwLDAsMCw0MSw2LAotICAgIDExNCwxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzAsCi0gICAgNCwwLDAsMTE1LDE4LDAsMCwwLDAsNCwxNSwxLDI0LDIsMTUsMSwKLSAgICA2LDEsMTIsMSwxNiwxLDE4LDEsOSwxLDEyMiwyNyw4MCw5NywxMTYsMTA0LAotICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDQsMCwwLDAsMCwwLDAsCi0gICAgMCw5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDI0MywwLAotICAgIDAsMCwxMDMsMCwwLDEyNSw0LDAsMTIwLDIzMCwwLDEyNCwyLDAsNjgsOTMsCi0gICAgMTkxLDAsMTI1LDUsMCwxMTYsMCwwLDEyNCw1LDAsMTE2LDEsMCwxMTYsMiwKLSAgICAwLDEwMiwyLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTMsMTMsMCwxMjQsMCwwLAotICAgIDEwNiwzLDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw2LDAsMTI0LDYsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDEzLDAsMTE2LDQsMCwxMjQsNiwwLDEwMCwyLAotICAgIDAsMTMxLDIsMCwxMTQsMTA2LDAsMTI0LDYsMCwxMDYsNSwwLDEyNCwxLDAsCi0gICAgMTI0LDMsMCwxMzEsMiwwLDEyNSw3LDAsMTEwLDE4LDAsMTI0LDAsMCwxMDYsCi0gICAgNiwwLDEyNCwxLDAsMTI0LDYsMCwxMzEsMiwwLDEyNSw3LDAsMTI0LDcsCi0gICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDEzOSwwLDExMywxMywwLDEyNCw3LDAsCi0gICAgMTA2LDcsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDE1OCwwLDEyNCw3LDAsODMsCi0gICAgMTI0LDcsMCwxMDYsOCwwLDEyNSw4LDAsMTI0LDgsMCwxMDAsMSwwLDEwNywKLSAgICA4LDAsMTE0LDE5MSwwLDExNiw5LDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLAotICAgIDAsMTI0LDQsMCwxMDYsMTAsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTMsCi0gICAgMCw4NywxMTYsMTEsMCwxMDYsMTIsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsCi0gICAgMCwxMjUsNywwLDEyNCw0LDAsMTI0LDcsMCw5NSw4LDAsMTI0LDcsMCwKLSAgICA4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDYzLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTExLDExNCwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDcsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDc4LDExNCwxODIsMCwwLDAsMTIyLDE5LAotICAgIDExNSwxMTIsMTAxLDk5LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQxLDEzLDExNCwxNDUsMCwwLDAsMTE0LDcxLDAsMCwwLDIxOCwKLSAgICA1LDk4LDEyMSwxMTYsMTAxLDExNSwxMTQsMiwxLDAsMCwxMTQsMTE3LDAsMCwwLAotICAgIDExNCwxODIsMCwwLDAsMTE0LDMsMSwwLDAsMTE0LDEyOSwwLDAsMCwxMTQsCi0gICAgMTU4LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsMTIzLAotICAgIDAsMCwwLDExNCwxNjIsMCwwLDAsNDEsOSwxMTQsMTcyLDAsMCwwLDExNCwKLSAgICAxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxODEsMCwwLDAsMjE4LDE0LAotICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDk1LDExMiw5NywxMTYsMTA0LDkwLDUsCi0gICAgMTAxLDExMCwxMTYsMTE0LDEyMSwxMTQsMjU0LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LAotICAgIDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwyMTgsOSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw4NSw0LAotICAgIDAsMCwxMTUsNDAsMCwwLDAsMCw1LDYsMSwxMywxLDIxLDEsMywKLSAgICAxLDE1LDEsMTIsMSwxNSwxLDIxLDIsMTgsMSwxMiwxLDMsMSwxNSwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMiw1LDE3LDIsMTgsMSw5LDEsMTIyLAotICAgIDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTUsMTEyLDEwMSw5OSw5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDAsMCwwLDAsMTI0LAotICAgIDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIxLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTI0LDIsMCwKLSAgICAxMjQsMywwLDEzMSwzLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LAotICAgIDgsMCwxMTQsNTgsMCwxMDAsMSwwLDgzLDEyNCw0LDAsMTA2LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw4LDAsMTE0LDEzMiwwLDEyNCw0LDAsMTA2LDQsMCwxMjUsNSwKLSAgICAwLDEyNCw1LDAsMTE0LDEyNSwwLDEwMCwyLDAsMTI0LDQsMCw5NSw1LDAsCi0gICAgMTE2LDYsMCwxMjQsMSwwLDEyNCw1LDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwKLSAgICAzLDAsMTI0LDQsMCw5NSw0LDAsMTI0LDQsMCw4MywxMDAsMSwwLDgzLAotICAgIDExMCw0LDAsMTI0LDQsMCw4MywxMDAsMSwwLDgzLDQxLDMsMTIyLDk4LDEwMiwKLSAgICAxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTEsCi0gICAgMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsMzksMTEyLAotICAgIDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTUsMTIxLAotICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LDExMCwxMDAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDQ2LDc4LDkwLDksMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsCi0gICAgOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDEyOSwKLSAgICAwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwxNjAsMCwwLDAsMTE0LDIzMSwwLAotICAgIDAsMCw0MSw2LDExNCwxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw1LDEsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsCisgICAgMCwwLDEwMCwxLDEwNiwwLDEyNCwxLDEwNiwxLDEzMSwxLDgzLDAsNDEsMiwKKyAgICAxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LAorICAgIDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2MiwKKyAgICA0MSwyLDExNCw1MCwwLDAsMCwxMTQsMTA5LDAsMCwwLDQxLDIsMTE0LDE2OCwKKyAgICAwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTQsMTAxLDExMiwxMTQsMjQ4LDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsCisgICAgMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDc4LDg0LDExNCwKKyAgICA0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAxNTcsMCwwLDAsMSw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAorICAgIDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDc4LDExNCwzMiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTk5LDAsMCwwLDQsNCwwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDEwMCwxLDEwMCwyLDEwMCwKKyAgICAzLDEwMCw0LDEwMCw1LDE0MSw0LDgzLDAsNDEsNiw3OCwxMTQsMzIsMCwwLAorICAgIDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LDE4NiwwLDAsMCwKKyAgICA4NCw0MSwxLDExNCwyMDEsMCwwLDAsNDEsMSwxMTQsMjAyLDAsMCwwLDQxLAorICAgIDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLDAsNywKKyAgICA0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAorICAgIDEsODMsMCw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywKKyAgICAxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCwKKyAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDE2MiwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTgzLDAsMCwwLDEwLDQsMCwwLDExNSwwLDAsMCwwLAorICAgIDEyMiwzMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMCw4MywwLDQxLDEsCisgICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxODcsMCwKICAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDE4MiwwLDAsMCwxMTcsNCwwLDAsMTE1LDI2LDAsMCwwLDAsCi0gICAgNCwxMiwxLDksMSwyMSwxLDEyLDEsNCwxLDE1LDEsOSwxLDYsCi0gICAgMyw5LDEsMjQsMSw0LDIsNywyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LAotICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCi0gICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDAsMTE0LDE4OCwwLDAsMCwxMyw0LDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDEsMTIyLDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDExNiwwLDEwNiwxLDEwMCwxLDEyNCwKKyAgICAwLDEwNiwyLDEzMSwyLDEsMCwxMTYsMCwxMDYsMywxMjQsMCwxMjQsMSwxMzEsCisgICAgMiw4MywwLDQxLDIsMTIyLDk4LDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwKKyAgICAxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwKKyAgICAxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDM4LDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExMiw5NywxMTYsMTA0LDMyLDEyMywzMywxMTQsCisgICAgMTI1LDQxLDQsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCwyMjksMCwKKyAgICAwLDAsMTE0LDE4OSwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwxMTQsMTkwLDAsMCwwLDE2LDQsMCwwLDExNSw2LDAsMCwwLAorICAgIDAsNyw2LDEsOCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODAsMCwwLDAsCisgICAgMTE0LDI0NywwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LAorICAgIDE4NCwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE5MCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ2LDAsMCwwLDI0NCwzLDAsMCwKKyAgICAxMTUsMTYsMCwwLDAsOCwxLDgsMywxMiw5LDgsMyw4LDMsOCwKKyAgICAzLDgsMyw4LDMsMTE0LDI0NiwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICAxMDYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsCisgICAgMTAxLDQsMTAwLDIsMTAwLDMsMTMyLDAsMTMxLDEsOTAsNSwxMDEsNCwxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCwxMzEsMSw5MCw2LDEwMSw0LDEwMCw2LDEwMCw3LDEzMiwwLAorICAgIDEzMSwxLDkwLDcsMTAxLDQsMTAwLDgsMTAwLDksMTMyLDAsMTMxLDEsOTAsOCwKKyAgICAxMDEsNCwxMDAsMTcsMTAwLDExLDEwMCwxMiwxMzIsMSwxMzEsMSw5MCw5LDEwMSw0LAorICAgIDEwMCwxOCwxMDAsMTMsMTAwLDE0LDEzMiwxLDEzMSwxLDkwLDEwLDEwMSw0LDEwMCwxOSwKKyAgICAxMDAsMTUsMTAwLDE2LDEzMiwxLDEzMSwxLDkwLDExLDEwMCwxMCw4MywwLDQxLDIwLAorICAgIDIxOCwxMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwKKyAgICAxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsCisgICAgMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0MiwwLDAsMCwxMjAsMzYsMTE2LDAsMTA2LDEsMTA2LDIsMTMxLDAsCisgICAgNjgsMCw5MywyMiwxMjUsMSwxMTYsMywxMjQsMSwxMDAsMSwxMzEsMiwxMTQsMTIsCisgICAgMTI0LDEsMTA2LDQsMTMxLDAsMSwwLDExMywxMiw4NywwLDEwMCwyLDgzLDAsCisgICAgNDEsMywxMjIsMTI1LDY3LDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMTgsCisgICAgOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCw0MSwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDEwOCwxMDgsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwxMDAsCisgICAgMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDMyLDQwLDExOSwxMDQsCisgICAgMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0MSwKKyAgICA0NiwyMTgsMTcsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDExNSw3OCw0MSw1LDExNCw4LDAsMCwwLDIxOCwxOSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMjE4LDYsMTE4LDk3LDEwOCwxMTcsMTAxLDExNSwxMTQsMTEyLDAsMCwwLDExNCwyNDksCisgICAgMCwwLDAsNDEsMiwxMTQsMTY4LDAsMCwwLDIxOCw2LDEwMiwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwyNDksMCwwLDAsMzQsNCwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICA0LDE2LDEsMTAsMSwxMjIsMjgsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDg2LDAsMCwwLDExNiwwLDEwNiwKKyAgICAxLDEwMCwxLDEwNyw5LDExNCwzMCwxMTYsMCwxMDYsMSwxMiwwLDExNCwzMCwxMTYsCisgICAgMiwxMDYsMywxMDAsMiwxMTYsNCwxMzEsMiwxLDAsMTIwLDUwLDExNiwwLDEwNiwKKyAgICAxLDY4LDAsOTMsMzYsMTI1LDIsMTIxLDgsMTI0LDIsMTI0LDEsMTMxLDEsODMsCisgICAgMCw0LDAsMTE2LDUsMTA3LDEwLDExNCw3MiwxLDAsMSwwLDEsMCwxMTksCisgICAgMzgsODksMCwxMTMsMzgsODgsMCwxMTMsMzgsODcsMCwxMDAsMSw4MywwLDEwMCwKKyAgICAxLDgzLDAsNDEsMywxMjIsNDYsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEyMSwKKyAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLDExNCwKKyAgICAzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwxMTIsCisgICAgOTcsMTE2LDEwNCwzOSw0Niw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNDEsCisgICAgNiwxMTQsOCwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCisgICAgMTA3LDExNSwxMTQsNjMsMCwwLDAsMTE0LDY0LDAsMCwwLDExNCwxMjIsMCwwLAorICAgIDAsMTE0LDEwMywwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsMTE1LDQyLDQsMCwwLDExNSwxNiwwLDAsMCwwLDMsMTgsCisgICAgMSwxMiwxLDEyLDEsMiwxLDgsMSwxNCwxLDEyLDIsMTIyLDIyLDgwLAorICAgIDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDQsMTExLDExMSwxMDcsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxMDIsMCwwLDAsMTI0LAorICAgIDEsMTAwLDEsMTA3LDIsMTE0LDQyLDEyMSwxMiwxMTYsMCwxMDYsMSwxMzEsMCwxMjUsCisgICAgMSw4NywwLDExMCwyMCw0LDAsMTE2LDIsMTA3LDEwLDExNCw0MCwxLDAsMSwKKyAgICAwLDEsMCwxMDAsMiw4MywwLDg4LDAsMTIxLDE0LDExNiwzLDEwNiw0LDEyNCwKKyAgICAxLDI1LDAsMTI1LDIsODcsMCwxMTAsNDAsNCwwLDExNiw1LDEwNywxMCwxMTQsCisgICAgOTYsMSwwLDEsMCwxLDAsMTI0LDAsMTA2LDYsMTI0LDEsMTMxLDEsMTI1LAorICAgIDIsMTI0LDIsMTE2LDMsMTA2LDQsMTI0LDEsNjAsMCw4OSwwLDExMCwyLDg4LAorICAgIDAsMTI0LDIsODMsMCw0MSwzLDEyMiwyMTAsNzEsMTAxLDExNiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKICAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCiAgICAgMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDQxLDIsMTE0LDE4MiwwLDAsMCwxMTQsMTI5LDAsMCwwLDQxLDQsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTY2LAorICAgIDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLAorICAgIDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywxMTAsMTAwLAorICAgIDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsMzIsMTEwLDExMSwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LAorICAgIDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwxMTEsMTEwLDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzIsMCwwLDAsCisgICAgNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsMCwwLDAsMjE4LDE3LDcwLAorICAgIDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwxMTQsMTExLDExNCwKKyAgICAxMTQsOCwwLDAsMCwxMTQsMjUwLDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAorICAgIDI1NCwwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDM3LDAsMCwwLAorICAgIDExNCwyNTIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjE4LDIwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw1NSw0LDAsMCwxMTUsMjIsCisgICAgMCwwLDAsMCw4LDgsMSwyLDEsMTIsMSwxNCwzLDYsMSwyLAorICAgIDEsMTQsMSwxNCwxLDEwLDEsMTYsMSwxMjIsMzEsODAsOTcsMTE2LDEwNCw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsNiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA4MiwwLDAsMCwxMTYsMCwxMjQsMiwxMDAsMSwxMzEsMiwxMTQsMjYsMTI0LDIsCisgICAgMTA2LDEsMTI0LDEsMTMxLDEsOTIsMiwxMjUsMywxMjUsNCwxMTAsMTQsMTI0LDIsCisgICAgMTA2LDIsMTI0LDEsMTMxLDEsMTI1LDMsMTAzLDAsMTI1LDQsMTI0LDMsMTAwLDAsCisgICAgMTA3LDksMTE0LDYwLDExNiwzLDEwNiw0LDEyNCwxLDEyNCwzLDEzMSwyLDgzLDAsCisgICAgMTE2LDMsMTA2LDUsMTI0LDEsMTAwLDAsMTMxLDIsMTI1LDUsMTI0LDQsMTI0LDUsCisgICAgOTUsNiwxMjQsNSw4MywwLDQxLDIsNzgsMTE0LDEyMSwwLDAsMCw0MSw3LAorICAgIDExNCwxMTIsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMTc5LDAsMCwwLDExNCwKKyAgICAxMTgsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwxNTQsCisgICAgMCwwLDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAorICAgIDI1MiwwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxMjUsMCwwLDAsMTE0LDE2MiwKICAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMTgzLDAsMCwwLDEzOSw0LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDgsMTgsMSwxMiwxLDQsMSwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0MSwxMiwxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsCi0gICAgMCwxMTQsMTE2LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDI1MSwwLDAsMCwKLSAgICAxMTQsMCwxLDAsMCwxMTQsMiwxLDAsMCwxMTQsMywxLDAsMCwxMTQsCi0gICAgNiwxLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDI1MCwwLDAsMCwxOSw0LDAsMCwxMTUsMjIsMCwwLDAsCi0gICAgMTIsMiw2LDIsMTgsOCwxOCwxNywxOCwyMiwxOCwxNSwzLDEsMTgsMzEsCi0gICAgMywxLDIxLDIxLDMsMSwxMTQsMjUwLDAsMCwwLDk5LDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsCi0gICAgMTE1LDEzMywwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsCi0gICAgMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwKLSAgICA5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMSwKLSAgICA2LDAsOTAsNywwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDgsCi0gICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDEwLDAsCi0gICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDEsMCw5MCwxMCwwLDEwMCwxMywwLDEwMCwKLSAgICAxNCwwLDEzMiwwLDAsOTAsMTEsMCwxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTMsMCwxMDAsMTcsMCwxMDAsMTgsMCwKLSAgICAxMzIsMCwwLDkwLDE0LDAsMTAwLDEwLDAsODMsNDEsMTksMjE4LDEwLDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDE3Miw3MCwxMDUsMTA4LDEwMSw0NSw5OCwKLSAgICA5NywxMTUsMTAxLDEwMCwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw3MywxMTAsMTE2LDEwMSwxMTQsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LAotICAgIDExNiwxMDEsMTA5LDMyLDk3LDExNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDk3LDExMCw5OSwxMDEsNDQsMzIsCi0gICAgOTgsMTAxLDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTAyLDExNCwxMDEsMTE1LAotICAgIDEwNCwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwKLSAgICAxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwNSwxMTUsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwNSwxMTAsMTAzLDMyLDEwNCw5NywKLSAgICAxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwwLDAsMCwwLDAsNSwKLSAgICAwLDAsMCw1LDAsMCwwLDcsMCwwLDAsMTE1LDEyMiwwLDAsMCwKLSAgICAxMDMsMCwwLDEyNSwzLDAsMTIwLDUyLDAsMTI0LDIsMCw2OCw5Myw0NCwwLAotICAgIDkyLDIsMCwxMzcsMCwwLDEyNSw0LDAsMTI0LDMsMCwxMDYsMCwwLDEzNSwKLSAgICAwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjQsNCwKLSAgICAwLDY4LDEzMSwxLDAsMTMxLDEsMCwxLDExMywxMywwLDg3LDEyNCwzLDAsCi0gICAgMTI0LDAsMCw5NSwxLDAsMTI0LDEsMCwxMTIsNzksMCwxMDAsMywwLDEyNCwKLSAgICAwLDAsOTUsMiwwLDEwMCw2LDAsMTI0LDAsMCw5NSwzLDAsMTE2LDQsCi0gICAgMCwxMzEsMCwwLDEyNCwwLDAsOTUsNSwwLDExNiw0LDAsMTMxLDAsMCwKLSAgICAxMjQsMCwwLDk1LDYsMCwxMDAsNSwwLDgzLDQxLDcsMTIyLDE1NCw3MywxMTAsCi0gICAgMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICAzMiwxMTEsMTEwLDMyLDk3LDExMCwxMDAsMzIsOTcsMzIsMTE4LDk3LDExNCwxMDUsOTcsOTgsCi0gICAgMTA4LDEwMSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDExMSwxMDIsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNTAsNDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTUsMzIsOTksMTExLAotICAgIDExMCwxMTYsOTcsMTA1LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTAxLDk5LAotICAgIDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDUxLDAsMCwwLDExNSwyNywwLAotICAgIDAsMCwxMjQsMCwwLDkzLDE3LDAsMTI1LDEsMCwxMjQsMSwwLDEzNiwwLAotICAgIDAsMTAyLDIsMCw4NiwxLDExMywzLDAsMTAwLDAsMCw4Myw0MSwxLDc4LAotICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCwyMjYsMCwwLAotICAgIDAsNDEsMSwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyMjgsMCwwLDAsMTY4LDQsMCwwLDExNSwyLDAsMCwwLAotICAgIDYsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwKLSAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjAsMCwwLDAsMTE0LAotICAgIDMxLDAsMCwwLDc4LDExNCw4OSwwLDAsMCw0MSw3LDExNCwxNTEsMCwwLAotICAgIDAsMjE4LDgsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM3LDAsMCwwLAotICAgIDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwzLDExNSwKLSAgICAxMDEsMTE2LDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCwKLSAgICAxOSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDQxLDUsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsCi0gICAgOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMTg2LDAsMCwwLDE2Miw0LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDYsCi0gICAgMSwxOSwxLDM2LDEsOSwyLDE1LDEsOSwxLDEyLDEsMTIyLDE5LDcwLAotICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAotICAgIDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEwMCwzLDAsMTI0LAotICAgIDAsMCw5NSwwLDAsMTAwLDIsMCw4Myw0MSw0LDEyMiwzMSw3MywxMTAsMTE4LAotICAgIDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLAotICAgIDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksMTE2LDEwNSwxMDksMTAxLDQ2LDExNCwzMSwwLDAsCi0gICAgMCw3OCwxMTQsODksMCwwLDAsNDEsMSwxMTQsOSwxLDAsMCw0MSwxLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMTE0LDI1MSwwLDAsMCwxNzYsNCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwyLDEyMiwyOCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTUsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNTksMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwzNywwLDEwMCwxLDAsMTAzLDAsMCwxMDIsMiwwLAotICAgIDgzLDEyNCwyLDAsMTA2LDEsMCwxMjQsMiwwLDEwNiwyLDAsMTEyLDU1LDAsCi0gICAgMTAzLDAsMCwxMDIsMiwwLDgzLDQxLDIsMTIyLDE5Nyw4NCwxMTQsMTIxLDMyLDExNiwKLSAgICAxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsCi0gICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLAotICAgIDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLDExNCwxMTYsMTA1LAotICAgIDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDQwLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsNDUsMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LAotICAgIDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LAotICAgIDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwKLSAgICAxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzgsNDEsMywxMTQsMTgyLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDE1OCwwLAotICAgIDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMTY2LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwxMjYsMCwwLDAsMTgyLDQsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsNywxNSwxLDEyLDEsMTAsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA5OSw2LDAsMCwwLDAsMCwwLDAsNywwLDAsMCw3LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw0MCwwLDAsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxMzEsMiwwLDEyNSw2LDAsMTE2LDAsMCwxMjQsMiwwLDEyNCwKLSAgICAzLDAsMTAwLDEsMCwxMjQsNiwwLDEwMCwyLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAyLDgzLDQxLDMsNzgsMTE0LDEyOSwwLDAsMCwxMTQsMTU4LDAsMCwwLDQxLAotICAgIDEsMTE0LDE2OSwwLDAsMCw0MSw3LDExNCwxMTAsMCwwLDAsMTE0LDE2NywwLAotICAgIDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCw5MCw0LDExNSwxMDksCi0gICAgMTE1LDEwOCwxMTQsMTgxLDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDYsMSwwLDAsCi0gICAgMTk0LDQsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDE4LDEsMTIyLAotICAgIDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMiwxMDEsOTksNzgsOTksMywwLDAsMCwwLDAsMCwwLDE0LAotICAgIDAsMCwwLDE1LDAsMCwwLDY3LDAsMCwwLDExNSwyMzQsMSwwLDAsCi0gICAgMTAwLDEsMCwxMjUsMywwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMTAwLDMsMCwyNSwxMjUsNCwwLDEyMSwzNCwwLDExNiwxLDAsMTI0LAotICAgIDAsMCwxMDYsMiwwLDExMiw0OSwwLDExNiwzLDAsMTA2LDQsMCwxMzEsMCwKLSAgICAwLDEzMSwxLDAsMTA2LDUsMCwxMjUsNSwwLDg3LDExMCwyNCwwLDQsMTE2LAotICAgIDYsMCwxMDcsMTAsMCwxMTQsODUsMCwxLDEsMSwxMDAsMTAsMCwxMjUsNSwKLSAgICAwLDg5LDExMCwxLDAsODgsMTI0LDUsMCwxMjQsMCwwLDEwNiw3LDAsMTA3LAotICAgIDMsMCwxMTQsMTIwLDAsMTI0LDAsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMjQsCi0gICAgNSwwLDEyNCwwLDAsOTUsNywwLDExNiw5LDAsMTMxLDAsMCwxMTQsMTUzLAotICAgIDAsMTI0LDAsMCwxMDYsMTAsMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDExLDAsCi0gICAgMTMxLDAsMCwxMjUsNywwLDExMCwxNSwwLDEyNCwwLDAsMTA2LDEyLDAsMTI1LAotICAgIDYsMCwxMjQsNCwwLDEyNSw3LDAsMTI0LDcsMCwxMjQsNiwwLDEwNyw2LAotICAgIDAsMTE0LDQ1LDEsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsCi0gICAgMTMxLDIsMCwxMjUsOCwwLDEyMCwxMDAsMCwxMjQsMCwwLDEwNiwxNCwwLDY4LAotICAgIDkzLDc3LDAsOTIsMiwwLDEyNSw5LDAsMTI1LDEwLDAsMTAwLDUsMCwxMjQsCi0gICAgOSwwLDIzLDEyNSwxMSwwLDExNiwxMywwLDEyNCw4LDAsMTI0LDExLDAsMTMxLAotICAgIDIsMCwxMjUsMTIsMCwxMTYsMTUsMCwxMjQsMTIsMCwxMzEsMSwwLDExNCwyMDgsCi0gICAgMCwxMjQsMCwwLDEwNiwxNiwwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsCi0gICAgMTI0LDgsMCwxMDMsMSwwLDEyNCwyLDAsMTMxLDUsMCw4MywxMTMsMjA4LDAsCi0gICAgODcsMTE2LDE3LDAsMTI0LDgsMCwxMzEsMSwwLDEyNSwzLDAsMTIwLDEyMywwLAotICAgIDEyNCwwLDAsMTA2LDE0LDAsNjgsOTMsMTEyLDAsOTIsMiwwLDEyNSw5LDAsCi0gICAgMTI1LDEwLDAsMTE2LDEzLDAsMTI0LDAsMCwxMDYsMiwwLDEyNCw0LDAsMTI0LAotICAgIDksMCwyMywxMzEsMiwwLDEyNSwxMiwwLDExNiwxOCwwLDEwMCw2LDAsMTA2LAotICAgIDE5LDAsMTI0LDEyLDAsMTMxLDEsMCwxMDAsNywwLDEwMCwzLDAsMTMxLDEsCi0gICAgMSwxLDEyNCw3LDAsMTI0LDksMCwyMywxMjQsNiwwLDEwNyw2LDAsMTE0LAotICAgIDU1LDEsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsNTUsMSwxMjQsMCwKLSAgICAwLDEwNiwxNiwwLDEyNCwxMCwwLDEyNCwxLDAsMTI0LDEyLDAsMTAwLDgsMCwKLSAgICAxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDU1LDEsODcsMTI0LDMsMCwxMTQsMjMwLAotICAgIDEsMTE2LDE4LDAsMTAwLDksMCwxMDYsMTksMCwxMjQsOCwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxLDExNiwyMCwwLDEwNiwyMSwwLDEyNCwxLDAsMTAwLDgsMCwKLSAgICAxMzEsMiwwLDEyNSwxMywwLDEyNCw4LDAsMTAzLDEsMCwxMjQsMTMsMCw5NSwKLSAgICAyMiwwLDEyNCwxMywwLDgzLDEwMCw4LDAsODMsNDEsMTEsMTIyLDEwMiw4NCwxMTQsCi0gICAgMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LAotICAgIDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsODIsMTAxLDExNiwxMTcsCi0gICAgMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMTA5LDk3LDExNiw5OSwxMDQsMTA1LDExMCwxMDMsMzIsMTE1LDExMiwxMDEsOTksNDQsMzIsMTExLAotICAgIDExNCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTAyLDMyLDExMCwxMTEsMTE2LDMyLDEwMiwxMTEsCi0gICAgMTE3LDExMCwxMDAsNDYsNzAsMTE0LDYwLDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsCi0gICAgMzEsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMjIsOSwxMTYsMTE0LDEyMSwxMDUsMTEwLAotICAgIDEwMywzMiwxMjMsMTI1LDExNCwxMDAsMCwwLDAsNzgsMTIyLDI1LDExMiwxMTEsMTE1LDExNSwKLSAgICAxMDUsOTgsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMjMsMTI1LDExNCw4OSwwLDAsMCw0MSwyMywxMTQsMzQsMCwwLAotICAgIDAsMTE0LDQxLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMywwLDAsMCwKLSAgICAxMTQsNDcsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LAotICAgIDksMSwwLDAsMjE4LDExLDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDExNCw3LDAsMCwwLDExNCwxMiwxLDAsMCwxMTQsOTAsMCwwLDAsCi0gICAgMTE0LDExLDEsMCwwLDExNCwzMCwwLDAsMCwxMTQsOCwxLDAsMCwxMTQsCi0gICAgNDYsMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDQ4LDAsMCwwLDExNCwxMDcsCi0gICAgMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE2MiwwLAotICAgIDAsMCwxMTQsMTU4LDAsMCwwLDQxLDE0LDExNCwxMTAsMCwwLDAsMTE0LDEyOCwKLSAgICAwLDAsMCwxMTQsMTgxLDAsMCwwLDkwLDEyLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDEzNSwwLDAsMCw5MCw1LDk5LDk3LDk5LDEwNCwxMDEsOTAsCi0gICAgMTIsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCw5LDk4LAotICAgIDk3LDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIyNiwwLDAsMCwxMTQsMTY3LDAsCi0gICAgMCwwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2NiwwLDAsCisgICAgMCwwLDIxOCwxNiw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMiwxMDEsOTksNzcsNCwwLDAsMTE1LDE4LDAsMCwwLDAsNCwxMCwKKyAgICAxLDE2LDIsMTAsMSw0LDEsOCwxLDEyLDEsMTIsMSw2LDEsMTIyLAorICAgIDI3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDgsMTAxLDEwMywKKyAgICA5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksNCwwLAorICAgIDAsMCwwLDAsMCwwLDksMCwwLDAsNSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTcwLDAsMCwwLDEwMywwLDEyNSw0LDEyMCwxNjAsMTI0LDIsNjgsCisgICAgMCw5MywxMzAsMTI1LDUsMTE2LDAsMTI0LDUsMTE2LDEsMTE2LDIsMTAyLDIsMTMxLAorICAgIDIsMTE1LDMwLDExMywxMCwxMjQsMCwxMDYsMywxMjQsNSwxMzEsMSwxMjUsNiwxMjQsCisgICAgNiwxMDAsMSwxMDcsOSwxMTQsMTAsMTE2LDQsMTI0LDYsMTAwLDIsMTMxLDIsMTE0LAorICAgIDcyLDEyNCw2LDEwNiw1LDEyNCwxLDEyNCwzLDEzMSwyLDEyNSw3LDExMCwxMiwxMjQsCisgICAgMCwxMDYsNiwxMjQsMSwxMjQsNiwxMzEsMiwxMjUsNywxMjQsNywxMDAsMSwxMDcsCisgICAgOCwxMTQsOTQsMTEzLDEwLDEyNCw3LDEwNiw3LDEwMCwxLDEwNyw5LDExNCwxMDgsMTI0LAorICAgIDcsODMsMCwxMjQsNywxMDYsOCwxMjUsOCwxMjQsOCwxMDAsMSwxMDcsOCwxMTQsCisgICAgMTMwLDExNiw5LDEwMCwzLDEzMSwxLDEzMCwxLDEyNCw0LDEwNiwxMCwxMjQsOCwxMzEsCisgICAgMSwxLDAsMTEzLDEwLDg3LDAsMTE2LDExLDEwNiwxMiwxMjQsMSwxMDAsMSwxMzEsCisgICAgMiwxMjUsNywxMjQsNCwxMjQsNyw5NSw4LDEyNCw3LDgzLDAsMTAwLDEsODMsCisgICAgMCw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTc4LDAsMCwwLDEyMiwxOSwxMTUsMTEyLDEwMSw5OSwKKyAgICAzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSwKKyAgICAxMywxMTQsMTQxLDAsMCwwLDExNCw3MywwLDAsMCwyMTgsNSw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsMTE0LDAsMSwwLDAsMTE0LDExMiwwLDAsMCwxMTQsMTc4LDAsMCwKKyAgICAwLDExNCwxLDEsMCwwLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwwLDAsMCwKKyAgICAxMTQsMTAzLDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsCisgICAgMTU4LDAsMCwwLDQxLDksMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLAorICAgIDExNCwzNywwLDAsMCwxMTQsMTc3LDAsMCwwLDIxOCwxNCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMSwxMTAsMTE2LDExNCwKKyAgICAxMjEsMTE0LDI1MiwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxMjUsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAorICAgIDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksOTIsNCwwLDAsMTE1LDQwLAorICAgIDAsMCwwLDAsNSw0LDEsMTAsMSwxNCwxLDIsMSwxMCwxLDgsCisgICAgMSwxMCwxLDE0LDIsMTIsMSw4LDEsMiwxLDEwLDEsNCwxLDYsCisgICAgMSw4LDEsOCw1LDE0LDIsMTIsMSw2LDEsMTIyLDIwLDgwLDk3LDExNiwKKyAgICAxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTEyLDEwMSwKKyAgICA5OSw5OSw0LDAsMCwwLDAsMCwwLDAsNiwwLDAsMCw0LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMDAsMCwwLDAsMTI0LDIsMTAwLDEsMTA3LAorICAgIDgsMTE0LDE0LDExNiwwLDEwNiwxLDEyNSwyLDEyNCwwLDEwNiwyLDEyNCwxLDEyNCwKKyAgICAyLDEyNCwzLDEzMSwzLDEyNSw0LDEyNCw0LDEwMCwxLDEwNyw4LDExNCw0MCwxMDAsCisgICAgMSw4MywwLDEyNCw0LDEwNiwzLDEwMCwxLDEwNyw4LDExNCw5MiwxMjQsNCwxMDYsCisgICAgNCwxMjUsNSwxMjQsNSwxMTQsODYsMTAwLDIsMTI0LDQsOTUsNSwxMTYsNiwxMjQsCisgICAgMSwxMjQsNSwxMjQsMCwxMDYsMiwxMzEsMywxMjQsNCw5NSw0LDEyNCw0LDgzLAorICAgIDAsMTAwLDEsODMsMCwxMTAsNCwxMjQsNCw4MywwLDEwMCwxLDgzLDAsNDEsCisgICAgMywxMjIsMTQxLDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMzIsMTAyLDExMSwxMTQsMzIsMzksMTAyLDExNywxMDgsMTA4LDExMCwKKyAgICA5NywxMDksMTAxLDM5LDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwKKyAgICAxMDUsMTE1LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDMyLDExNSwKKyAgICAxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3OCw5MCw5LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDcsMTE0LDgsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LDEsMCwwLDExNCwxMjQsMCwKKyAgICAwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMTU2LDAsMCwwLDExNCwyMjcsMCwwLAorICAgIDAsNDEsNiwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDExNCwxNzcsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMywxLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTgyLDAsMCwwLDE5OSw0LDAsMCwxMTUsNjgsMCwwLDAsMCwzLAotICAgIDYsMSwxOSwxLDMsMSwzNCwxLDEzLDEsMTEsMSwxNSwxLDEwLDEsCi0gICAgOSwyLDksMSw5LDEsMTUsMiw5LDEsNiwyLDEyLDEsMTgsMSwKLSAgICAyMiwxLDEwLDEsMTUsMSwxMiwxLDMyLDQsMTIsMiwyMiwxLDIyLDEsCi0gICAgMjUsMSwxNiwxLDEyLDEsMjksMSw2LDEsMTksMSwxOCwxLDEyLDEsCi0gICAgNCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwKLSAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTEsMSwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwxLDAsMTIxLDMxLDAsMTE2LDEsCi0gICAgMCwxMDYsMiwwLDEyNCwxLDAsMTEyLDMzLDAsMTE2LDEsMCwxMDYsMywwLAotICAgIDEzMSwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwzMywwLDQsMTE2LDQsCi0gICAgMCwxMTYsNSwwLDExNiw2LDAsMTAyLDMsMCwxMDcsMTAsMCwxMTQsNzUsMCwKLSAgICAxLDEsMSwxMDMsMCwwLDEyNSwyLDAsODksMTEwLDEsMCw4OCwxMTYsNywKLSAgICAwLDEwNiw4LDAsMTA2LDksMCwxMDAsMSwwLDEzMSwxLDAsMTE1LDExMiwwLAotICAgIDExNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDExLDAsMTEwLAotICAgIDExMSwwLDExNiwxMCwwLDEzMSwwLDAsMTI1LDMsMCwxMjAsOTAsMCwxMjQsMiwKLSAgICAwLDY4LDkzLDgyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwxMiwwLDEwMCwyLAotICAgIDAsMTMxLDEsMCw5MiwzLDAsMTI1LDUsMCwxMjUsNiwwLDEyNSw3LDAsCi0gICAgMTI0LDYsMCwxMTQsMTkxLDAsMTAwLDMsMCwxMDYsMTMsMCwxMjQsNSwwLDEyNCwKLSAgICA3LDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMiwwLDEyNSw4LDAsMTEwLDYsCi0gICAgMCwxMjQsNSwwLDEyNSw4LDAsMTI0LDMsMCwxMDYsMTUsMCwxMjQsOCwwLAotICAgIDEzMSwxLDAsMSwxMTMsMTI4LDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LDExLAotICAgIDAsMTE2LDcsMCwxMDYsOCwwLDEwNiw5LDAsMTE2LDE2LDAsMTMxLDEsMCwKLSAgICAxMTQsNywxLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsNjgsCi0gICAgMTMxLDEsMCwxMjQsMCwwLDk1LDE3LDAsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICA2OCw3MCwxMDUsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLAotICAgIDExMSwxMDIsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LDk3LDEwOCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCi0gICAgMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDAsMTA1LDExNCwxMDEsOTksCi0gICAgMTE2LDExMSwxMTQsMTIxLDQ2LDExNCwwLDAsMCwwLDExNCw2MCwwLDAsMCwxMjIsCi0gICAgNSwxMjMsMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsMywwLDAsMCw4MywwLDAsMCwxMTUsMjgsMCwwLDAsCi0gICAgMTA0LDAsMCwxMjQsMCwwLDkzLDE4LDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTMxLDAsMCwxNDYsMiwwLDExMyw2LDAsODMsMTE0LDQsMCwwLAotICAgIDAsNDEsMSwxMTQsOTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsOTAsCi0gICAgMiwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDE3LDUsMCwKLSAgICAwLDExNSwyLDAsMCwwLDksMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksMTExLAotICAgIDEwOSwxMTIsNjIsNzgsNDEsMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDkwLDcsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsMSwKLSAgICAxLDAsMCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LDExNiwKLSAgICAxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDksMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwxLDAsMCwxMTQsMTEsMSwwLAotICAgIDAsMTE0LDg1LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsOTAsMCwwLDAsCi0gICAgMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTEsMCwwLDAsMTE0LDEyLDEsMCwwLDQxLAotICAgIDksMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLAotICAgIDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwKLSAgICAxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NiwwLDAsCi0gICAgMCwxMTQsMTA4LDAsMCwwLDExNCwyMzgsMCwwLDAsMTE0LDIyNiwwLDAsMCwKLSAgICA5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNCwxLDAsMCwyNDQsNCwKLSAgICAwLDAsMTE1LDM0LDAsMCwwLDAsMiw5LDEsMywxLDMxLDEsMjIsCi0gICAgMywxMSwzLDE4LDEsMTgsNyw5LDEsMTMsMSwyNCwxLDYsMSwyNywKLSAgICAyLDYsMSwxNywxLDksMSwxOCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsCi0gICAgMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwKLSAgICAwLDAsNywwLDAsMCwxMTUsMjUsMCwwLDAsMTM1LDAsMCwxMzUsMSwKLSAgICAwLDEwMiwyLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI1LDIsMCwKLSAgICAxMjQsMiwwLDgzLDQxLDMsOTcsMjAsMSwwLDAsNjUsMzIsOTksMTA4LDk3LAotICAgIDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLAotICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LAotICAgIDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDMyLAotICAgIDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsMTAxLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiw5NywxMTAsMTAwLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMDgsCi0gICAgMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsCi0gICAgMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsOTcsCi0gICAgMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCi0gICAgMTksMCwwLDAsMTE1LDQzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDExNSwzMCwwLDExNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwwLAotICAgIDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMzYsMSwwLAotICAgIDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLDExMSwKLSAgICAxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKLSAgICAxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNywwLDAsMCw0MSwyLDExNCw0OCwwLDAsCi0gICAgMCwxMTQsMTA5LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTMsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsCi0gICAgMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDI5LDUsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDE4LDEsMTIyLDU0LDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEzLDEsMCwwLDExNCwxOSwxLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAyLDExNCwxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxOSw1LDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEwLDIxLDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsCisgICAgMTE0LDE3OCwwLDAsMCwxMjQsNCwwLDAsMTE1LDI2LDAsMCwwLDAsNiwKKyAgICA4LDEsNiwxLDE0LDEsOCwxLDQsMSwxMCwxLDYsMSw0LDMsCisgICAgNiwxLDE2LDEsNCwyLDYsMiwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzMCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwKKyAgICAxMzEsMiwxMjUsMywxMjQsMywxMDAsMSwxMDcsOCwxMTQsMjQsMTAwLDEsODMsMCwKKyAgICAxMjQsMywxMDYsMSw4MywwLDQxLDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLAorICAgIDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLAorICAgIDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsCisgICAgMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsCisgICAgNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsMTc4LDAsMCwwLDExNCwxMjQsMCwwLAorICAgIDAsNDEsNCwxMTQsMTY4LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsCisgICAgMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE3OSwwLDAsMCwxNDgsNCwwLDAsMTE1LAorICAgIDgsMCwwLDAsMCw4LDEyLDEsOCwxLDQsMSwxMjIsMjIsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0MSwxLDc4LDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxMiwKKyAgICAxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsCisgICAgMTExLDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMjU0LAorICAgIDAsMCwwLDExNCwwLDEsMCwwLDExNCwxLDEsMCwwLDExNCw0LDEsCisgICAgMCwwLDExNCwxNzgsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAxMTQsMjQ4LDAsMCwwLDMwLDQsMCwwLDExNSwyMiwwLDAsMCw4LDIsCisgICAgNCwyLDEyLDgsMTIsMTMsMTIsMjIsMTIsMTUsMiwxLDEyLDMxLDIsMSwKKyAgICAxMiwyMywyLDEsMTE0LDI0OCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLDExNSw5MCwKKyAgICAwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsCisgICAgMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAxLAorICAgIDYsOTAsNywxMDAsNiwxMDAsNywxMzIsMCw5MCw4LDEwMCw4LDEwMCw5LDEzMiwKKyAgICAwLDkwLDksMTAwLDE5LDEwMCwxMSwxMDAsMTIsMTMyLDEsOTAsMTAsMTAwLDEzLDEwMCwKKyAgICAxNCwxMzIsMCw5MCwxMSwxMDEsMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwKKyAgICAxMywxMDAsMTcsMTAwLDE4LDEzMiwwLDkwLDE0LDEwMCwxMCw4MywwLDQxLDIwLDIxOCwKKyAgICAxMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwKKyAgICAxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKKyAgICAxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksCisgICAgMTAxLDQ0LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwKKyAgICAxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywKKyAgICAzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LAorICAgIDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSw4OCwKKyAgICAwLDAsMCwxMDMsMCwxMjUsMywxMjAsNDAsMTI0LDIsNjgsMCw5MywzMiw5MiwKKyAgICAyLDEzNywwLDEyNSw0LDEyNCwzLDEwNiwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNCw0LDY4LDAsMTMxLDEsMTMxLDEsMSwwLDExMywxMCw4NywKKyAgICAwLDEyNCwzLDEyNCwwLDk1LDEsMTI0LDEsMTEyLDU4LDEwMCwzLDEyNCwwLDk1LAorICAgIDIsMTAwLDYsMTI0LDAsOTUsMywxMTYsNCwxMzEsMCwxMjQsMCw5NSw1LDExNiwKKyAgICA0LDEzMSwwLDEyNCwwLDk1LDYsMTAwLDUsODMsMCw0MSw3LDEyMiwxNTQsNzMsCisgICAgMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwKKyAgICAxMDQsMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LAorICAgIDk4LDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LAorICAgIDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSwKKyAgICA5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjIsCisgICAgMCwwLDAsMTI0LDAsOTMsMTQsMTI1LDEsMTI0LDEsMTM2LDAsMTAyLDIsODYsCisgICAgMCwxLDAsMTEzLDIsMTAwLDAsODMsMCw0MSwxLDc4LDExNCw0LDAsMCwKKyAgICAwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCwyMjIsMCwwLDAsNDEsMSwxMTQsCisgICAgMTI0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsCisgICAgMCwwLDAsMTc3LDQsMCwwLDExNSwyLDAsMCwwLDQsMCwxMjIsMzgsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsCisgICAgMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjEsMCwwLDAsMTE0LDMxLDAsMCwwLAorICAgIDc4LDExNCw5MSwwLDAsMCw0MSw3LDExNCwxNDcsMCwwLDAsMjE4LDgsOTUsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDM3LDAsMCwwLDIxOCwxMSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDIxOCwzLDExNSwxMDEsMTE2LDIxOCwxMSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDIxOCwxOSw5NSwxMTQsMTAxLAorICAgIDEwOCw5NywxMjAsMTAxLDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDE0LDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNywxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsMTY0LDAsMCwwLDExNCw0LDAsMCwwLDQxLAorICAgIDEsMTE0LDEyNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLAorICAgIDE3MSw0LDAsMCwxMTUsMTYsMCwwLDAsMCw0LDQsMSwxNCwxLDI4LAorICAgIDEsNiwyLDEwLDEsNiwxLDgsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwKICAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLAotICAgIDAsMTA2LDEsMCwxMzEsMSwwLDgzLDQxLDIsNzgsMTIyLDE2LDcwLDEwNSwxMDgsCi0gICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsCi0gICAgNDksMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwKKyAgICAwLDAsMCwxMTUsMTAsMCwwLDAsMTAwLDMsMTI0LDAsOTUsMCwxMDAsMiwKKyAgICA4MywwLDQxLDQsMTIyLDMxLDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwKKyAgICAxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LDMxLDAsMCwwLDc4LDExNCw5MSwwLDAsMCwKKyAgICA0MSwxLDExNCw3LDEsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ5LDAsCisgICAgMCwwLDE4NSw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwKKyAgICAxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw0MiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsCisgICAgMiwxMDAsMSwxMDcsOCwxMTQsMjYsMTAwLDEsMTAzLDAsMTAyLDIsODMsMCwxMjQsCisgICAgMiwxMDYsMSwxMjQsMiwxMDYsMiwxMTIsMzgsMTAzLDAsMTAyLDIsODMsMCw0MSwKKyAgICAyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsCisgICAgMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LAorICAgIDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwKKyAgICAxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDMsMTE0LDE3OCwwLDAsMCwKKyAgICAxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTIxLDAsMCwwLDE5MSwKKyAgICA0LDAsMCwxMTUsOCwwLDAsMCwwLDcsMTAsMSw4LDEsOCwxLAorICAgIDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDYsMCwwLDAsMCwwLDAsCisgICAgMCw3LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwyLDEyNSw2LDExNiwwLDEyNCwyLAorICAgIDEyNCwzLDEyNCw2LDEyNCw0LDEwMCwxLDE0MSw0LDgzLDAsNDEsMiw3OCw0MSwKKyAgICAyLDExNCwxMjQsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwxLDExNCwxNjUsMCwKKyAgICAwLDAsNDEsNywxMTQsMTA0LDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMTUsMTA5LDExNSwxMDgsMTE0LDE3NywKKyAgICAwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCw0LDEsMCwwLDIwMyw0LDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDEsMTAsMSw4LDEsMTIyLDIwLDcwLDEwNSwxMDgsCisgICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsCisgICAgOTksNzgsOTksMywwLDAsMCwwLDAsMCwwLDE0LDAsMCwwLDE1LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw5OCwxLDAsMCwxMDAsMSwxMjUsMywKKyAgICAxMjQsMSwxMDYsMCwxMDAsMiwxMzEsMSwxMDAsMywyNSwwLDEyNSw0LDEyMSwyNCwKKyAgICAxMTYsMSwxMjQsMCwxMDYsMiwxMTIsMzQsMTE2LDMsMTA2LDQsMTMxLDAsMTMxLDEsCisgICAgMTA2LDUsMTI1LDUsODcsMCwxMTAsMjQsNCwwLDExNiw2LDEwNywxMCwxMTQsNjYsCisgICAgMSwwLDEsMCwxLDAsMTAwLDEwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsNSwxMjQsMCwxMDYsNywxMDcsMywxMTQsOTIsMTI0LDAsMTA2LDgsMTMxLDAsCisgICAgMSwwLDEyNCw1LDEyNCwwLDk1LDcsMTE2LDksMTMxLDAsMTE0LDExNCwxMjQsMCwKKyAgICAxMDYsMTAsMTI1LDYsMTI0LDQsMTA2LDExLDEzMSwwLDEyNSw3LDExMCwxMCwxMjQsMCwKKyAgICAxMDYsMTIsMTI1LDYsMTI0LDQsMTI1LDcsMTI0LDcsMTI0LDYsMTA3LDYsMTE0LDIxOCwKKyAgICAxMTYsMTMsMTI0LDAsMTA2LDIsMTI0LDQsMTMxLDIsMTI1LDgsMTIwLDcyLDEyNCwwLAorICAgIDEwNiwxNCw2OCwwLDkzLDU0LDkyLDIsMTI1LDksMTI1LDEwLDEwMCw1LDEyNCw5LAorICAgIDIzLDAsMTI1LDExLDExNiwxMywxMjQsOCwxMjQsMTEsMTMxLDIsMTI1LDEyLDExNiwxNSwKKyAgICAxMjQsMTIsMTMxLDEsMTE0LDE1MiwxMjQsMCwxMDYsMTYsMTI0LDEwLDEyNCwxLDEyNCwxMiwKKyAgICAxMjQsOCwxMDMsMSwxMjQsMiwxMzEsNSw4MywwLDExMywxNTIsODcsMCwxMTYsMTcsCisgICAgMTI0LDgsMTMxLDEsMTI1LDMsMTIwLDg4LDEyNCwwLDEwNiwxNCw2OCwwLDkzLDc4LAorICAgIDkyLDIsMTI1LDksMTI1LDEwLDExNiwxMywxMjQsMCwxMDYsMiwxMjQsNCwxMjQsOSwKKyAgICAyMywwLDEzMSwyLDEyNSwxMiwxMTYsMTgsMTA2LDE5LDEwMCw2LDEyNCwxMiwxMDAsMywKKyAgICAxMDAsNywxNDEsMywxLDAsMTI0LDcsMTI0LDksMjMsMCwxMjQsNiwxMDcsNiwKKyAgICAxMTQsMjI2LDExNiwxNSwxMjQsMTIsMTMxLDEsMTE0LDIyNiwxMjQsMCwxMDYsMTYsMTI0LDEwLAorICAgIDEyNCwxLDEyNCwxMiwxMDAsOCwxMjQsMiwxMzEsNSw4MywwLDExMywyMjYsODcsMCwKKyAgICAxMjQsMywxNDQsMSwxMTQsOTQsMTE2LDE4LDEwNiwxOSwxMDAsOSwxMjQsOCwxMzEsMiwKKyAgICAxLDAsMTE2LDE4LDEwNiwyMCwxMjQsMSwxMDAsOCwxMzEsMiwxMjUsMTMsMTI0LDgsCisgICAgMTAzLDEsMTI0LDEzLDk1LDIxLDEyNCwxMyw4MywwLDEwMCw4LDgzLDAsNDEsMTEsCisgICAgMTIyLDExMSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTA1LDExMCwxMDMsMzIsMTE1LDExMiwxMDEsCisgICAgOTksNDQsMzIsMTExLDExNCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTAyLDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzAsMTE0LDYxLDAsMCwwLDExNCw1OSwwLDAsMCwxMTQsMzEsMCwwLAorICAgIDAsMTE0LDE4MiwwLDAsMCwxMjIsOSwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMjMsCisgICAgMTI1LDQxLDEsOTAsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDc4LDEyMiwKKyAgICAyNSwxMTIsMTExLDExNSwxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsOTEsMCwwLDAsNDEsCisgICAgMjIsMTE0LDM0LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDQ3LDAsMCwwLDExNCwyMTYsMCwwLDAsMTE0LAorICAgIDQyLDAsMCwwLDExNCw3LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsCisgICAgOTUsOTksOTcsOTksMTA0LDEwMSwxMTQsNywwLDAsMCwxMTQsMTAsMSwwLDAsCisgICAgMTE0LDkyLDAsMCwwLDExNCw5LDEsMCwwLDExNCwzMCwwLDAsMCwxMTQsCisgICAgNiwxLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDQ4LAorICAgIDAsMCwwLDExNCwxMTgsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTU4LDAsCisgICAgMCwwLDExNCwxNTQsMCwwLDAsNDEsMTQsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLAorICAgIDAsMCwwLDExNCwxNzcsMCwwLDAsOTAsMTIsMTA1LDExNSw5NSwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5MCwxMSwxMTYsOTcsMTA1LDEwOCw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTQsMTMwLDAsMCwwLDkwLDUsOTksOTcsOTksMTA0LDEwMSw5MCwKKyAgICAxMiw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDksOTgsCisgICAgOTcsMTE1LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMjIyLDAsMCwwLDExNCwxNjMsMCwKKyAgICAwLDAsOTAsMTMsMTA1LDExMCwxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSw5MCw5LDEwMiwxMTcsMTA4LDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYyLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDExNCwxNzgsMCwwLDAsMjA4LDQsMCwwLDExNSw3MCwwLDAsMCwwLDUsCisgICAgNCwxLDE0LDEsMiwxLDI0LDEsMTQsMSwxMCwxLDEwLDEsOCwxLAorICAgIDYsMiw2LDEsNiwxLDEwLDIsNiwxLDQsMiw4LDEsMTIsMSwKKyAgICAxNiwxLDgsMSwxMCwxLDgsMSwyNCw0LDgsMiwxNiwxLDE2LDEsCisgICAgMTYsMSwxMiwxLDgsMSwxMCwxLDEyLDEsNiwxLDEyLDEsMTIsMSwKKyAgICA4LDEsNCwxLDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsOSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTk0LDAsMCwwLDEyNCwwLDEwNiwwLDEyNSwxLDEyMSwyMiwxMTYsMSwxMDYsMiwKKyAgICAxMjQsMSwxMTIsMjIsMTE2LDEsMTA2LDMsMTMxLDAsMTMxLDEsMTI1LDIsODcsMCwKKyAgICAxMTAsMzAsNCwwLDExNiw0LDExNiw1LDExNiw2LDEwMiwzLDEwNywxMCwxMTQsNTgsCisgICAgMSwwLDEsMCwxLDAsMTAzLDAsMTI1LDIsODksMCwxMTAsMiw4OCwwLAorICAgIDExNiw3LDEwNiw4LDEwNiw5LDEwMCwxLDEzMSwxLDExNSw4NCwxMTYsMTAsMTI0LDIsCisgICAgMTMxLDEsMTI0LDAsOTUsMTEsMTEwLDc4LDExNiwxMCwxMzEsMCwxMjUsMywxMjAsNjQsCisgICAgMTI0LDIsNjgsMCw5Myw1NiwxMjUsNCwxMjQsNCwxMDYsMTIsMTAwLDIsMTMxLDEsCisgICAgOTIsMywxMjUsNSwxMjUsNiwxMjUsNywxMjQsNiwxMTQsMTM4LDEwMCwzLDEwNiwxMywKKyAgICAxMjQsNSwxMjQsNywxMDYsMTQsMTMxLDAsMTMxLDIsMTI1LDgsMTEwLDQsMTI0LDUsCisgICAgMTI1LDgsMTI0LDMsMTA2LDE1LDEyNCw4LDEzMSwxLDEsMCwxMTMsOTYsODcsMCwKKyAgICAxMjQsMywxMjQsMCw5NSwxMSwxMTYsNywxMDYsOCwxMDYsOSwxMTYsMTYsMTMxLDEsCisgICAgMTE0LDE5MCwxMDAsNCwxMDAsNSwxMzIsMCwxMjQsMiw2OCwwLDEzMSwxLDEyNCwwLAorICAgIDk1LDE3LDEwMCw2LDgzLDAsNDEsNywxMjIsNjgsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwKKyAgICAxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwKKyAgICAxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwNSwxMTUsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NiwxMTQsMCwKKyAgICAwLDAsMCwxMTQsNjEsMCwwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgODMsMCwwLDAsMTE1LDIwLDAsMCwwLDEwNCwwLDEyNCwwLDkzLDEyLDEyNSwKKyAgICAxLDEyNCwxLDEwNiwwLDEzMSwwLDE0NiwyLDExMyw0LDgzLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsOTIsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsCisgICAgOTAsMiwxMDIsMTEwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDI1MCw5LDYwLDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDI5LDUsCisgICAgMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksCisgICAgMTExLDEwOSwxMTIsNjIsNzgsNDEsMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwKKyAgICAwLDkwLDcsMTA4LDEwNSwxMTUsMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsCisgICAgMjU1LDAsMCwwLDIxOCwxNSw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LDExNCwxMDEsOTksCisgICAgMTE2LDExMSwxMTQsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsOSwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDgsMSwwLDAsMTE0LDksMSwKKyAgICAwLDAsMTE0LDg3LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsOTIsMCwwLAorICAgIDAsMjE4LDMsOTcsMTAwLDEwMCwxMTQsMTEsMCwwLDAsMTE0LDEwLDEsMCwwLAorICAgIDQxLDksMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsCisgICAgMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LAorICAgIDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NCwwLAorICAgIDAsMCwxMTQsMTAyLDAsMCwwLDExNCwyMzQsMCwwLDAsMTE0LDIyMiwwLDAsCisgICAgMCw5MCw4LDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxMiwxLDAsMCwwLAorICAgIDUsMCwwLDExNSwzNCwwLDAsMCwwLDIsNiwxLDIsMSwyMiwxLAorICAgIDIwLDMsMTAsMywxMiwxLDEyLDcsNiwxLDEwLDEsMTYsMSw0LDEsCisgICAgMTgsMiw0LDEsMTQsMSw2LDEsMTIsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLAorICAgIDAsMCwwLDcsMCwwLDAsMTE1LDE4LDAsMCwwLDEzNSwwLDEzNSwxLAorICAgIDEwMiwyLDEwMCwxLDEwMCwyLDEzMiw4LDEyNSwyLDEyNCwyLDgzLDAsNDEsMywKKyAgICA5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LAorICAgIDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsCisgICAgMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksCisgICAgMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsCisgICAgMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsCisgICAgMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDMyLDEwNSwxMTUsMzIsCisgICAgMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NCwKKyAgICAzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDEsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzQsCisgICAgMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTE1LDIwLDExNiwxLDEwMCwxLDEyNCwKKyAgICAwLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLDEwMiwxLDEzNiwxLDE1OCwKKyAgICAyLDE0MiwwLDgzLDAsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLAorICAgIDExMSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0NiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LAorICAgIDEwMSw5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLAorICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAorICAgIDQ4LDAsMCwwLDExNCwxMDMsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsCisgICAgNDEsMiwxMTQsMTY4LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsMjQsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsCisgICAgMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDEsNSwwLDAsMTE1LDYsMCwwLDAsMCwyLDgsMSwxMiwxLDEyMiwKKyAgICA1NCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNCwxMTEsMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsCisgICAgMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTY4LAorICAgIDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsMTcsMSwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMiwxMTQsMTY4LDAsMCwwLDExNCwxMSwxLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMzEsNSwKKyAgICAwLDAsMTE1LDQsMCwwLDAsMCwxMCwxNCw2LDEyMiwyMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsCisgICAgMCwxMDYsMSwxMzEsMSw4MywwLDQxLDIsNzgsMTIyLDE2LDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNTAsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQzLAorICAgIDAsMCwwLDQ5LDUsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMTksCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwKKyAgICAxMTQsOTUsOTUsNDEsMSw3OCw0MSwxNSwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwKKyAgICAwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODIsMCwwLAorICAgIDAsMTE0LDI0OSwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxNzksMCwwLDAsCisgICAgMTE0LDEyMSwwLDAsMCwxMTQsNCwxLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwKKyAgICAxMiwxLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwxOCwxLDAsMCwxMTQsMjQzLAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCw1LDEsMCwwLDE2Miw0LDAsMCwKKyAgICAxMTUsMjAsMCwwLDAsOCw3LDQsMiw4LDE0LDgsNCw0LDIsOCwKKyAgICAxMiw4LDUsMTAsNDgsOCwzMSwxMiwxOCwxMTQsNSwxLDAsMCw5OSw0LAorICAgIDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQ2LDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLAorICAgIDEyNSw0LDEyNCwwLDEwNiwwLDEwMCwyLDEzMSwxLDEyNSw1LDEyNCw0LDExNSw2NiwKKyAgICAxMjQsNSwxMTQsMzYsMTI0LDUsMTA2LDEsMTI1LDQsMTEwLDMwLDEyNCwyLDEyNCwzLAorICAgIDEwNywyLDExNCw1NiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsNCwxMTAsMTAsCisgICAgMTE2LDMsMTI0LDEsMTI0LDIsMTMxLDIsMTI1LDQsMTI0LDUsMTE1LDg0LDExNiw0LAorICAgIDEyNCwxLDEyNCwyLDEyNCw0LDEwMCwzLDE0MSwzLDEyNSw1LDEyMSwzNiwxMjQsNSwKKyAgICAxMjQsMCwxMDAsMiw2MCwwLDEyNCw0LDEyNCwwLDEwMCwxLDYwLDAsMTI0LDIsCisgICAgMTI0LDAsMTAwLDQsNjAsMCwxMjQsMywxMjQsMCwxMDAsNSw2MCwwLDg3LDAsCisgICAgMTEwLDIwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDE0MCwxLDAsMSwwLDEsMCwKKyAgICA4OSwwLDExMCwyLDg4LDAsMTAwLDAsODMsMCw0MSw2LDc4LDIxOCwxMCw5NSwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLAorICAgIDk5LDk1LDk1LDQxLDEsMTE0LDEyNCwwLDAsMCw5MCw4LDk1LDk1LDEwMiwxMDUsCisgICAgMTA4LDEwMSw5NSw5NSw5MCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwKKyAgICA0MSw2LDIxOCwzLDEwMywxMDEsMTE2LDExNCwxMjQsMCwwLDAsMTE0LDIyMCwwLDAsCisgICAgMCwxMTQsMjE1LDAsMCwwLDExNCwxNjUsMCwwLDAsMjE4LDksNjksMTIwLDk5LAorICAgIDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCwxMDIsMCwwLAorICAgIDAsOTAsOCwxMTIsOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSw5MCw5LDk5LDExMiw5NywKKyAgICAxMTYsMTA0LDExMCw5NywxMDksMTAxLDExNCwxMjQsMCwwLDAsMTE0LDE2MiwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMTQsOTUsMTAyLDEwNSwxMjAsOTUsMTE3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw1NSwKKyAgICA1LDAsMCwxMTUsMzQsMCwwLDAsMCwyLDEwLDEsMTAsMSw0LDEsCisgICAgNCwxLDgsMSw4LDEsMTIsMiwxMCwxLDQsMSwxNCwxLDIsMSwKKyAgICA4LDEsOCwxLDgsMSwxMiwxLDE0LDIsMTE0LDIzLDEsMCwwLDk5LAorICAgIDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDExNiwwLDExNiwxLDEwNiwyLDEzMSwKKyAgICAwLDEwMiwyLDEyNSwwLDExNiwzLDExNiw0LDEwMiwyLDEyNSwxLDExNiw1LDExNiwKKyAgICA2LDEwMiwyLDEyNSwyLDEyNCwwLDEyNCwxLDEyNCwyLDEwMywzLDgzLDAsNDEsCisgICAgMSwxMjIsOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsCisgICAgMTE2LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LAorICAgIDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwKKyAgICAzMiwzMiw0MSw3LDExNCwyMjEsMCwwLDAsMTE0LDE0MywwLDAsMCwyMTgsMTgsCisgICAgMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsCisgICAgMTAxLDExNSwxMTQsMjE1LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsMjIwLDAsMCwKKyAgICAwLDExNCw3OCwwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDc4LDUsMCwwLDExNSw4LAorICAgIDAsMCwwLDAsNSwxMiwxLDgsMSw4LDEsMTE0LDE1OSwwLDAsMCwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE4OCwxLDAsMCwxMjQsMCw5NywwLDExNiwwLAorICAgIDEwNiwxLDk3LDEsMTE2LDAsMTA2LDIsOTcsMiwxMTYsMSwxMDYsMywxMTYsNCwKKyAgICAyNSwwLDEyNSwxLDEyMCw1NiwxMDAsMjYsNjgsMCw5Myw0OCwxMjUsMiwxMjQsMiwKKyAgICAxMTYsMSwxMDYsMywxMDcsNywxMTQsNTgsMTE2LDAsMTA2LDUsMTI0LDIsMTMxLDEsCisgICAgMTI1LDMsMTEwLDEwLDExNiwxLDEwNiwzLDEyNCwyLDI1LDAsMTI1LDMsMTE2LDYsCisgICAgMTI0LDEsMTI0LDIsMTI0LDMsMTMxLDMsMSwwLDExMywzMiw4NywwLDEwMCw1LAorICAgIDEwMCw2LDEwMywxLDEwMiwyLDEwMCw3LDEwMCw4LDEwMCw2LDEwMywyLDEwMiwyLAorICAgIDEwMiwyLDEyNSw0LDEyMCwxMTgsMTI0LDQsNjgsMCw5MywxMDIsOTIsMiwxMjUsNSwKKyAgICAxMjUsNiwxMTYsNywxMDAsOSwxMDAsMTAsMTMyLDAsMTI0LDYsNjgsMCwxMzEsMSwKKyAgICAxMzEsMSwxMTUsMTQyLDExNiw4LDEzMCwxLDEyNCw2LDEwMCwxMSwyNSwwLDEyNSw3LAorICAgIDEyNCw1LDExNiwxLDEwNiwzLDEwNyw2LDExNCwxNzQsMTE2LDEsMTA2LDMsMTI0LDUsCisgICAgMjUsMCwxMjUsOCw4MCwwLDExMywxMTIsMTIxLDE2LDExNiwwLDEwNiw1LDEyNCw1LAorICAgIDEzMSwxLDEyNSw4LDgwLDAsODcsMCwxMTMsMTEyLDQsMCwxMTYsOSwxMDcsMTAsCisgICAgMTE0LDIxMiwxLDAsMSwwLDEsMCwxMTksMTEyLDg5LDAsMTEzLDExMiw4OCwwLAorICAgIDExMywxMTIsODcsMCwxMTYsOSwxMDAsMTIsMTMxLDEsMTMwLDEsMTE2LDYsMTI0LDEsCisgICAgMTAwLDEzLDEyNCw4LDEzMSwzLDEsMCwxMTYsNiwxMjQsMSwxMDAsMTQsMTI0LDcsCisgICAgMTMxLDMsMSwwLDExNiw2LDEyNCwxLDEwMCwxNSwxMDAsMTYsMTA2LDEwLDEyNCw2LAorICAgIDEzMSwxLDEzMSwzLDEsMCwxMjEsMTQsMTE2LDAsMTA2LDUsMTAwLDE3LDEzMSwxLAorICAgIDEyNSw5LDg3LDAsMTEwLDI2LDQsMCwxMTYsOSwxMDcsMTAsMTQ0LDEsMTE0LDUyLAorICAgIDEsMCwxLDAsMSwwLDEwMCwxOCwxMjUsOSw4OSwwLDExMCwyLDg4LDAsCisgICAgMTE2LDYsMTI0LDEsMTAwLDE3LDEyNCw5LDEzMSwzLDEsMCwxMTYsMCwxMDYsNSwKKyAgICAxMDAsMTksMTMxLDEsMTI1LDEwLDExNiw2LDEyNCwxLDEwMCwxOSwxMjQsMTAsMTMxLDMsCisgICAgMSwwLDEyNCw1LDEwMCw3LDEwNywyLDE0NCwxLDExNCwxMjAsMTE2LDAsMTA2LDUsCisgICAgMTAwLDIwLDEzMSwxLDEyNSwxMSwxMTYsNiwxMjQsMSwxMDAsMjEsMTI0LDExLDEzMSwzLAorICAgIDEsMCwxMTYsNiwxMjQsMSwxMDAsMjIsMTE2LDExLDEzMSwwLDEzMSwzLDEsMCwKKyAgICAxMTYsMTIsMTA2LDEzLDExNiwyLDEwNiwxNCwxMzEsMCwxMzEsMSwxLDAsMTI0LDUsCisgICAgMTAwLDcsMTA3LDIsMTQ0LDEsMTE0LDE4NCwxMTYsMTUsMTA2LDE2LDEwMCwyMywxMzEsMSwKKyAgICAxLDAsMTAwLDI0LDExNiwxMiwxMDcsNiwxNDQsMSwxMTQsMTg0LDEwMCwyNSwxMTYsMTcsCisgICAgOTUsMTgsMTAwLDE4LDgzLDAsNDEsMjcsMTIyLDIwNSw4MywxMDEsMTE2LDExNywxMTIsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwMSwxMDksMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LAorICAgIDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwxMDEsCisgICAgMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTIwLDExNiwxMTQsOTcsOTksMTE2LDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMTQsMTAxLDMyLAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsNTIsMCwwLDAsMTE0LDYzLDAsMCwKKyAgICAwLDIxOCw4LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMTQsMTQwLDAsMCwwLAorICAgIDkwLDUsMTEyLDExMSwxMTUsMTA1LDEyMCwyNTAsMSw0NywyMTgsMiwxMTAsMTE2LDI1MCwxLAorICAgIDkyLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKKyAgICAwLDAsMTE1LDAsMCwwLDExNSwyNiwwLDAsMCwxMjQsMCw5MywxOCwxMjUsCisgICAgMSwxMTYsMCwxMjQsMSwxMzEsMSwxMDAsMCwxMDcsMiw4NiwwLDEsMCwxMTMsCisgICAgMiwxMDAsMSw4MywwLDQxLDIsMTE0LDMxLDAsMCwwLDc4LDQxLDEsMTE0LAorICAgIDMzLDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCw4MSwwLDAsMCwKICAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMjQ1LDAsMCwwLDM3LDUsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCi0gICAgMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsOTUsOTUsNDEsMTUsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDExNCwKLSAgICAyNTEsMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMjYsCi0gICAgMCwwLDAsMTE0LDYsMSwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTQsMSwKLSAgICAwLDAsMTE0LDE4NCwwLDAsMCwxMTQsMjAsMSwwLDAsMTE0LDI0NSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsNywxLDAsMCwxNTMsNCwwLDAsMTE1LDIwLAotICAgIDAsMCwwLDEyLDcsNiwyLDEyLDE0LDEyLDQsNiwyLDEyLDEyLDEyLAotICAgIDUsMTUsNDUsMTIsMzEsMTgsMTgsMTE0LDcsMSwwLDAsOTksNCwwLDAsCi0gICAgMCwwLDAsMCwwLDYsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE5NSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDEsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwyLDAsMTMxLDEsCi0gICAgMCwxMjUsNSwwLDEyNCw0LDAsMTE1LDk5LDAsMTI0LDUsMCwxMTQsNTQsMCwKLSAgICAxMjQsNSwwLDEwNiwxLDAsMTI1LDQsMCwxMTAsNDUsMCwxMjQsMiwwLDEyNCwKLSAgICAzLDAsMTA3LDIsMCwxMTQsODQsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEyNSw0LDAsMTEwLDE1LDAsMTE2LDMsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTMxLDIsMCwxMjUsNCwwLDEyNCw1LDAsMTE1LDEyNiwwLDExNiwKLSAgICA0LDAsMTI0LDEsMCwxMjQsMiwwLDEwMCwzLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAxLDEyNSw1LDAsMTIxLDQ0LDAsMTI0LDUsMCwxMjQsMCwwLDEwMCwyLDAsCi0gICAgNjAsMTI0LDQsMCwxMjQsMCwwLDEwMCwxLDAsNjAsMTI0LDIsMCwxMjQsMCwKLSAgICAwLDEwMCw0LDAsNjAsMTI0LDMsMCwxMjQsMCwwLDEwMCw1LDAsNjAsODcsCi0gICAgMTEwLDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxOTAsMCwxLDEsMSwKLSAgICA4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsNiw3OCwyMTgsMTAsOTUsOTUsCi0gICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsOCw5NSw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSw5NSwxMTQsMTI5LDAsMCwwLDkwLDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LAotICAgIDk1LDkwLDEwLDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDQxLDYsMjE4LAotICAgIDMsMTAzLDEwMSwxMTYsMTE0LDEyOSwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwyMTksCi0gICAgMCwwLDAsMTE0LDE2OSwwLDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsCi0gICAgMTA1LDExMSwxMTAsNDEsNiw5MCwyLDExMCwxMTUsMTE0LDEwOCwwLDAsMCw5MCw4LAotICAgIDExMiw5NywxMTYsMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwxMDQsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDEyOSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMDIsCi0gICAgMTA1LDEyMCw5NSwxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQzLDUsMCwwLAotICAgIDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxNSwxLDYsMSw2LDEsMTIsCi0gICAgMSwxMiwxLDE4LDIsMTUsMSw2LDEsMjEsMSwzLDEsMTAsMSwxMCwKLSAgICAxLDEwLDEsMTQsMSwxMywyLDExNCwyNSwxLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMzEsCi0gICAgMCwwLDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiw0LDAsMTAyLDIsCi0gICAgMCwxMjUsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwwLDEyNSwyLDAsCi0gICAgMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCw4Myw0MSwxLDEyMiwKLSAgICA5NSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsCi0gICAgMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNjksOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LDMyLAotICAgIDk3LDMyLDExNiwxMTcsMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwKLSAgICAzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDQxLDcsMTE0LDIyNSwwLDAsMCwxMTQsMTQ3LDAsMCwwLDIxOCwxOCwxMDEsMTIwLAotICAgIDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LAotICAgIDExNCwyMTksMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LAotICAgIDc2LDAsMCwwLDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMTE1LDkwLDYsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsMTAxLAotICAgIDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxNjMsMCwwLDAsNjYsNSwwLDAsMTE1LDgsMCwwLAotICAgIDAsMCw1LDE4LDEsMTIsMSwxMiwxLDExNCwxNjMsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MCwyLDAsMCwxMjQsMCwwLDk3LDAsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsOTcsMSwwLDExNiwwLDAsMTA2LDIsMCw5NywyLDAsCi0gICAgMTE2LDEsMCwxMDYsMywwLDExNiw0LDAsMjUsMTI1LDEsMCwxMjAsNzYsMCwKLSAgICAxMDAsMjYsMCw2OCw5Myw2OCwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMSwwLAotICAgIDEwNiwzLDAsMTA3LDcsMCwxMTQsODMsMCwxMTYsMCwwLDEwNiw1LDAsMTI0LAotICAgIDIsMCwxMzEsMSwwLDEyNSwzLDAsMTEwLDEzLDAsMTE2LDEsMCwxMDYsMywKLSAgICAwLDEyNCwyLDAsMjUsMTI1LDMsMCwxMTYsNiwwLDEyNCwxLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwzLDAsMSwxMTMsNDQsMCw4NywxMDAsNSwwLDEwMCwKLSAgICA2LDAsMTAzLDEsMCwxMDIsMiwwLDEwMCw3LDAsMTAwLDgsMCwxMDAsNiwKLSAgICAwLDEwMywyLDAsMTAyLDIsMCwxMDIsMiwwLDEyNSw0LDAsMTIwLDE0OSwwLAotICAgIDEyNCw0LDAsNjgsOTMsMTI5LDAsOTIsMiwwLDEyNSw1LDAsMTI1LDYsMCwKLSAgICAxMTYsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsMCwxMjQsNiwwLDY4LAotICAgIDEzMSwxLDAsMTMxLDEsMCwxMTUsMTk5LDAsMTE2LDgsMCwxMzAsMSwwLDEyNCwKLSAgICA2LDAsMTAwLDExLDAsMjUsMTI1LDcsMCwxMjQsNSwwLDExNiwxLDAsMTA2LAotICAgIDMsMCwxMDcsNiwwLDExNCwyNDEsMCwxMTYsMSwwLDEwNiwzLDAsMTI0LDUsCi0gICAgMCwyNSwxMjUsOCwwLDgwLDExMywxNTYsMCwxMjEsMjAsMCwxMTYsMCwwLDEwNiwKLSAgICA1LDAsMTI0LDUsMCwxMzEsMSwwLDEyNSw4LDAsODAsODcsMTEzLDE1NiwwLAotICAgIDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMjgsMSwxLDEsMSwxMTksMTU2LDAsCi0gICAgODksMTEzLDE1NiwwLDg4LDExMywxNTYsMCw4NywxMTYsOSwwLDEwMCwxMiwwLDEzMSwKLSAgICAxLDAsMTMwLDEsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLDEzLDAsMTI0LDgsCi0gICAgMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwxNCwwLDEyNCw3LAotICAgIDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsMTUsMCwxMDAsMTYsCi0gICAgMCwxMDYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTMxLDMsMCwxLDEyMSwxOSwKLSAgICAwLDExNiwwLDAsMTA2LDUsMCwxMDAsMTcsMCwxMzEsMSwwLDEyNSw5LDAsCi0gICAgODcsMTEwLDI0LDAsNCwxMTYsOSwwLDEwNywxMCwwLDExNCwxNDcsMSwxLDEsCi0gICAgMSwxMDAsMTgsMCwxMjUsOSwwLDg5LDExMCwxLDAsODgsMTE2LDYsMCwxMjQsCi0gICAgMSwwLDEwMCwxNywwLDEyNCw5LDAsMTMxLDMsMCwxLDExNiwwLDAsMTA2LAotICAgIDUsMCwxMDAsMTksMCwxMzEsMSwwLDEyNSwxMCwwLDExNiw2LDAsMTI0LDEsCi0gICAgMCwxMDAsMTksMCwxMjQsMTAsMCwxMzEsMywwLDEsMTI0LDUsMCwxMDAsNywKLSAgICAwLDEwNywyLDAsMTE0LDIzOCwxLDExNiwwLDAsMTA2LDUsMCwxMDAsMjAsMCwKLSAgICAxMzEsMSwwLDEyNSwxMSwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMjEsMCwxMjQsCi0gICAgMTEsMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwyMiwwLDExNiwKLSAgICAxMSwwLDEzMSwwLDAsMTMxLDMsMCwxLDExNiwxMiwwLDEwNiwxMywwLDExNiwKLSAgICAyLDAsMTA2LDE0LDAsMTMxLDAsMCwxMzEsMSwwLDEsMTI0LDUsMCwxMDAsCi0gICAgNywwLDEwNywyLDAsMTE0LDY2LDIsMTE2LDE1LDAsMTA2LDE2LDAsMTAwLDIzLAotICAgIDAsMTMxLDEsMCwxLDEwMCwyNCwwLDExNiwxMiwwLDEwNyw2LDAsMTE0LDY2LAotICAgIDIsMTAwLDI1LDAsMTE2LDE3LDAsOTUsMTgsMCwxMDAsMTgsMCw4Myw0MSwyNywKLSAgICAxMjIsMjA1LDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKLSAgICA0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk4LAotICAgIDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTAsMTAxLDEwMSwxMDAsCi0gICAgMTAxLDEwMCwxMCwzMiwzMiwzMiwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwxMDEsCi0gICAgOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwKLSAgICAzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLAotICAgIDEwMSwxMjAsMTE2LDExNCw5Nyw5OSwxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsOTksMTExLDExNCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCi0gICAgMTEyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKLSAgICA1MSwwLDAsMCwxMTQsNjIsMCwwLDAsMjE4LDgsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsMTE1LDExNCwxNDQsMCwwLDAsOTAsNSwxMTIsMTExLDExNSwxMDUsMTIwLDI1MCwKLSAgICAxLDQ3LDIxOCwyLDExMCwxMTYsMjUwLDEsOTIsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsMTE1LDMzLAotICAgIDAsMCwwLDEyNCwwLDAsOTMsMjMsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDEwMCwwLDAsMTA3LDIsMCw4NiwxLDExMywzLDAsCi0gICAgMTAwLDEsMCw4Myw0MSwyLDExNCwzMSwwLDAsMCw3OCw0MSwxLDExNCwzMywKLSAgICAwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsNzksMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyOCwKLSAgICAwLDAsMCwxMDIsNSwwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwyNSwKLSAgICA5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKLSAgICA2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYxLDAsMCwwLDEyMiwzMCwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LDMsCi0gICAgMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwKLSAgICAwLDAsOTAsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LDkwLDgsOTUsMTE5LAotICAgIDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsMTcxLAotICAgIDAsMCwwLDExNCw3LDAsMCwwLDEyMiw0LDQ2LDExMiwxMjEsMTE5LDEyMiw2LAotICAgIDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LDExNCw1MSwwLDAsMCwxMTQsNjIsCi0gICAgMCwwLDAsMTE0LDI3LDEsMCwwLDExNCwxNDQsMCwwLDAsNDEsMTksMTE0LAotICAgIDEyMywwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyNDAsCi0gICAgMCwwLDAsMTE0LDExNCwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExOCwwLDAsCi0gICAgMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTA5LDAsMCwwLDExNCwyOCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMTUxLDAsMCwwLDExNCwKLSAgICAyNiwxLDAsMCwxMTQsODYsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcwLAotICAgIDAsMCwwLDExNCwxNzQsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwxMTEsCi0gICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMTUsCi0gICAgMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKLSAgICAxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwxMDAsMTAxLDExNiwKLSAgICA5NywxMDUsMTA4LDExNSw5MCwxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LAotICAgIDExNCwyMywwLDAsMCwxMTQsMjcsMCwwLDAsOTAsOSwxMTEsMTE1LDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw3Nyw1LDAsMCwxMTUsODIsCi0gICAgMCwwLDAsMCw4LDYsMSw5LDEsOSwzLDEzLDEsMTMsMSwxNSwKLSAgICAxLDE4LDIsMTMsMSwyMCwzLDMzLDEsMTksMiwzMSwxLDEwLDEsMTUsCi0gICAgMSwxMywxLDQsMiwzLDEsMTUsMSw1LDEsMTMsMSwxMiwyLDEyLAotICAgIDEsMTYsMSwxNiwxLDI1LDMsMywxLDE5LDEsMTMsMiwxMSwxLDE2LAotICAgIDMsMTUsMSwxNiwzLDEyLDEsMTUsMSwxNiwzLDE5LDEsMTksMSwxMiwKLSAgICAxLDEzLDEsMTIsMSwxMTQsMzQsMSwwLDAsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEsMTE2LDEsCi0gICAgMCwxMzEsMCwwLDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLDEwNiw0LDAsCi0gICAgMTE2LDUsMCwxMDYsNiwwLDEyNCwxLDAsMTQwLDAsMCwxMDMsMSwwLDEzMSwKLSAgICAxLDAsMSwxMTYsNywwLDEwNiw4LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwKLSAgICA3OCwwLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTEsMCwxMzEsMSwKLSAgICAwLDEsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMiwwLDEzMSwxLAotICAgIDAsMSwxMTYsNSwwLDEyNCwwLDAsOTUsNSwwLDExNiwxMywwLDEyNCwwLAotICAgIDAsOTUsMTMsMCwxMDAsMiwwLDgzLDQxLDMsMTIyLDQxLDczLDExMCwxMTUsMTE2LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LAotICAgIDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwKLSAgICAxMDEsMTEwLDExNiwxMTUsNDYsMTE0LDI5LDEsMCwwLDc4LDQxLDE0LDExNCwzNCwxLAotICAgIDAsMCwxMTQsMTYzLDAsMCwwLDExNCw4LDAsMCwwLDExNCwyNTUsMCwwLAotICAgIDAsMTE0LDE1MSwwLDAsMCwxMTQsNywxLDAsMCwxMTQsMjAsMSwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExNCwwLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5NywKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LAotICAgIDI1MCwwLDAsMCwxMTQsMjE5LDAsMCwwLDQxLDIsMTE0LDMzLDEsMCwwLAorICAgIDIyNCwwLDAsMCwxMTQsNSwwLDAsMTE1LDIsMCwwLDAsNCwwLDEyMiwKKyAgICAyNSw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKKyAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYyLDAsMCwwLDEyMiwKKyAgICAzMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMTUsMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LAorICAgIDMsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsCisgICAgMCwwLDAsOTAsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LDkwLDgsOTUsCisgICAgMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsCisgICAgMTY3LDAsMCwwLDExNCw3LDAsMCwwLDEyMiw0LDQ2LDExMiwxMjEsMTE5LDEyMiwKKyAgICA2LDk1LDEwMCw0NiwxMTIsMTIxLDEwMCw4NCw0MSw0LDExNCw1MiwwLDAsMCwxMTQsCisgICAgNjMsMCwwLDAsMTE0LDI1LDEsMCwwLDExNCwxNDAsMCwwLDAsNDEsMTksCisgICAgMTE0LDExOCwwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwKKyAgICAyMzYsMCwwLDAsMTE0LDEwOSwwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExMywwLAorICAgIDAsMCwyMTgsMyw5NywxMDgsMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMTAzLDAsMCwwLDExNCwyOCwwLDAsCisgICAgMCwxMTQsMTMsMCwwLDAsMTE0LDIyNiwwLDAsMCwxMTQsMTQ3LDAsMCwwLAorICAgIDExNCwyNCwxLDAsMCwxMTQsODgsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsCisgICAgMTY2LDAsMCwwLDExNCwxNzAsMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwKKyAgICAxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwxMDAsMTAxLAorICAgIDExNiw5NywxMDUsMTA4LDExNSw5MCwxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsCisgICAgMTE1LDExNCwyMywwLDAsMCwxMTQsMjcsMCwwLDAsOTAsOSwxMTEsMTE1LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMjE4LDYsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw4OSw1LDAsMCwxMTUsCisgICAgODIsMCwwLDAsMCw4LDQsMSw2LDEsNiwzLDEwLDEsMTAsMSwKKyAgICAxMCwxLDEyLDIsMTAsMSwxNiwzLDIyLDEsMTQsMiwyMiwxLDgsMSwKKyAgICAxMCwxLDEwLDEsNCwyLDIsMSwxMCwxLDYsMSwxNCwxLDEyLDIsCisgICAgOCwxLDEyLDEsMTIsMSwxOCwzLDIsMSwxNCwxLDE2LDIsMTAsMSwKKyAgICAxMiwzLDEwLDEsMTIsMywxMCwxLDEwLDEsMTIsMywxNCwxLDE0LDEsCisgICAgMTAsMSwxMCwxLDEwLDEsMTE0LDMyLDEsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDcyLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEsMCwxMTYsMSwxMzEsCisgICAgMCwxMjUsMSwxMTYsMiwxMDYsMywxMDYsNCwxMTYsNSwxMDYsNiwxMjQsMSwxNDIsCisgICAgMCwxMDMsMSwxMzEsMSwxLDAsMTE2LDcsMTA2LDgsMTAwLDEsMTA3LDIsMTE0LAorICAgIDU2LDExNiwyLDEwNiw5LDEwNiwxMCwxMTYsMTEsMTMxLDEsMSwwLDExNiwyLDEwNiwKKyAgICA5LDEwNiwxMCwxMTYsMTIsMTMxLDEsMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsCisgICAgNDEsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwKKyAgICAxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwxMTAsMTE2LDExNSw0NiwxMTQsMjcsMSwwLDAsNzgsCisgICAgNDEsMTMsMTE0LDMyLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDgsMCwwLAorICAgIDAsMTE0LDI1MywwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCw1LDEsMCwwLAorICAgIDExNCwxOCwxLDAsMCwxMTQsMywwLDAsMCwxMTQsMTA5LDAsMCwwLDIxOCwKKyAgICA5LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjEsMCwwLDAsMTE0LAorICAgIDE2NiwwLDAsMCwxMTQsMjQ4LDAsMCwwLDQxLDIsMTE0LDMxLDEsMCwwLAogICAgIDkwLDE3LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLAogICAgIDEwMSwxMTQsMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE0NSw1LDAsMCwKLSAgICAxMTUsMTYsMCwwLDAsMCwyLDEwLDEsOSwxLDI4LDEsMTUsMSwxNiwKLSAgICAxLDE2LDQsOSwxLDExNCwzNiwxLDAsMCw0MSwxLDExNCwwLDAsMCwKLSAgICAwLDQxLDIsMTE0LDEsMCwwLDAsMTE0LDIsMCwwLDAsNDEsNTksMTE0LAotICAgIDExNiwwLDAsMCwxMTQsMTIsMCwwLDAsOTAsMzcsOTUsNjcsNjUsODMsNjksCi0gICAgOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsCi0gICAgODQsNzAsNzksODIsNzcsODMsOTUsNjYsODksODQsNjksODMsOTUsNzUsNjksODksCi0gICAgMTE0LDExLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LDQ4LDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCwyMTgsNCwxMTYsMTIxLDExMiwxMDEsMjE4LDgsOTUsCi0gICAgOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0NiwwLDAsMCwxMTQsMTcsMCwwLAotICAgIDAsMTE0LDEzNywwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwLDAsMCwwLAotICAgIDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LAotICAgIDY2LDY5LDgyLDExNCw3NSwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDg2LDAsCi0gICAgMCwwLDExNCw3NiwwLDAsMCw5MCwyMyw2OCw2OSw2Niw4NSw3MSw5NSw2NiwKLSAgICA4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywKLSAgICA5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSw4NCw2OSwKLSAgICA2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsODEsMCwKLSAgICAwLDAsMTE0LDg3LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsOTcsMCwwLAotICAgIDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEyNSwwLDAsMCwKLSAgICAxMTQsMTMyLDAsMCwwLDExNCwxNDMsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsCi0gICAgMTUyLDAsMCwwLDExNCwxNTcsMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksCi0gICAgMTE2LDExNCwxNjQsMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsMCwwLAotICAgIDExNCwxODUsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsMjExLDAsMCwwLDExNCwKLSAgICAyMTksMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwyMjUsCi0gICAgMCwwLDAsMTE0LDIzMSwwLDAsMCwxMTQsMjQ4LDAsMCwwLDExNCwyNTAsMCwKLSAgICAwLDAsMTE0LDcsMSwwLDAsMTE0LDI1LDEsMCwwLDExNCwxNjMsMCwwLAotICAgIDAsMTE0LDM0LDEsMCwwLDExNCwzNiwxLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCi0gICAgOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxMDYsMCwKLSAgICAwLDAsNiwxNiw2LDEsNiwxLDMsMSw3LDMsMTIsMTcsMTIsNSwKLSAgICAxMiw1LDEyLDYsMTIsMTIsMTIsMTAsMTIsOSwxMiw1LDEyLDcsMTUsMjIsCi0gICAgMTUsMTE0LDIyLDEsMTgsMiw2LDEsNiwyLDksMiw5LDIsMTAsMiwKLSAgICAyMSw0NCwxMiwzMywxMiwxOSwxMiwxMiwxMiwxMiwxOCw4LDEyLDI4LDEyLDE3LAotICAgIDIxLDU1LDIxLDEyLDE4LDEwLDEyLDE0LDksMywxMiwxLDE1LDY1LDE5LDY0LAotICAgIDE5LDI4LDIyLDExMCwxOSw0MSwyNSw0MywyNSwxNiw2LDMsMjUsNTMsMTksNTcsCi0gICAgMTksNDEsMTksMTM0LDE5LDE0NiwxNSwyMywxMiwxMSwxMiw2OCwKKyAgICAwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTU3LDUsMCwwLAorICAgIDExNSwxMiwwLDAsMCwwLDIsOCwxLDYsMSwyMCwxLDEwLDEsMTIsCisgICAgMSwxMTQsMzQsMSwwLDAsNDEsMSwxMTQsMCwwLDAsMCw0MSwyLDExNCwKKyAgICAxLDAsMCwwLDExNCwyLDAsMCwwLDQxLDEsMTE0LDQ5LDAsMCwwLAorICAgIDQxLDEsNzgsNDEsMyw3OCw3OCw3OCw0MSwzLDc4LDc4LDc4LDQxLDIsMTE0LAorICAgIDYyLDAsMCwwLDExNCw2MiwwLDAsMCw0MSwxLDc4LDQxLDEsNzgsNDEsCisgICAgNTgsMTE0LDExMSwwLDAsMCwxMTQsMTIsMCwwLDAsOTAsMzcsOTUsNjcsNjUsCisgICAgODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsCisgICAgNzYsNjUsODQsNzAsNzksODIsNzcsODMsOTUsNjYsODksODQsNjksODMsOTUsNzUsCisgICAgNjksODksMTE0LDExLDAsMCwwLDExNCwxMywwLDAsMCwxMTQsMTksMCwwLAorICAgIDAsMTE0LDIxLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsNDAsMCwwLDAsCisgICAgMTE0LDQxLDAsMCwwLDExNCw0NSwwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDQ4LDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsNCwxMTYsMTIxLDExMiwxMDEsMjE4LAorICAgIDgsOTUsOTUsOTksMTExLDEwMCwxMDEsOTUsOTUsMTE0LDE0MiwwLDAsMCwxMTQsMTcsCisgICAgMCwwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDIwLDAsCisgICAgMCwwLDkwLDE3LDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LDc4LAorICAgIDg1LDc3LDY2LDY5LDgyLDExNCw3NywwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LAorICAgIDg4LDAsMCwwLDExNCw3OCwwLDAsMCw5MCwyMyw2OCw2OSw2Niw4NSw3MSwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4Myw5MCwyNyw3OSw4MCw4NCw3Myw3Nyw3Myw5MCw2OSw2OCw5NSw2Niw4OSwKKyAgICA4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTQsCisgICAgODMsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwwLDAsMCwxMTQsOTksCisgICAgMCwwLDAsMTE0LDEwMSwwLDAsMCwxMTQsMTIwLDAsMCwwLDExNCwxMjcsMCwKKyAgICAwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxNDgsMCwwLAorICAgIDAsMTE0LDE1MywwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE0LDE2MCwKKyAgICAwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDE4MSwwLAorICAgIDAsMCwxMTQsMTkxLDAsMCwwLDExNCwyMDcsMCwwLDAsMTE0LDIxNSwwLDAsCisgICAgMCwxMTQsMjIwLDAsMCwwLDExNCwyMjYsMCwwLDAsMTE0LDIyMSwwLDAsMCwKKyAgICAxMTQsMjI3LDAsMCwwLDExNCwyNDYsMCwwLDAsMTE0LDI0OCwwLDAsMCwxMTQsCisgICAgNSwxLDAsMCwxMTQsMjMsMSwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMzIsCisgICAgMSwwLDAsMTE0LDM0LDEsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDYwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDEwOCwwLDAsMCw0LAorICAgIDE2LDQsMSw0LDEsMiwxLDYsMyw4LDE3LDgsNSw4LDUsOCwKKyAgICA2LDgsMTIsOCwxMCw4LDksOCw1LDgsNywxMCwyMiwxMCwxMjIsMTYsCisgICAgMSwxMiwyLDQsMSw0LDIsNiwyLDYsMiw4LDIsMTYsNDUsOCwKKyAgICAzNCw4LDE5LDgsMTIsOCwxMiw4LDI4LDgsMTcsMTAsNTUsMTAsMTIsMTAsCisgICAgMTAsOCwxNCw2LDMsNCwxLDE0LDY3LDE0LDY0LDE0LDI5LDE2LDExMCwxNCwKKyAgICA0MSwxOCw0NSwxOCwxNiw0LDMsMTgsNTMsMTQsNjAsMTQsNDIsMTQsMTI3LDAsCisgICAgNSwxNCwxMjcsMCwyMiwxMCwyMyw4LDExLDgsNjgsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5IGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CmluZGV4IGQ5YTA4NTUuLjAyM2M5ZTYgMTAwNzU1Ci0tLSBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQorKysgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKQEAgLTMsMjQgKzMsMzQgQEAKIChmb3IgY29tcGlsZXJzIHN1cHBvcnRpbmcgY29tcHV0ZWQgZ290b3Mgb3IgImxhYmVscy1hcy12YWx1ZXMiLCBzdWNoIGFzIGdjYykuCiAiIiIKIAotIyBUaGlzIGNvZGUgc2hvdWxkIHN0YXkgY29tcGF0aWJsZSB3aXRoIFB5dGhvbiAyLjMsIGF0IGxlYXN0IHdoaWxlCi0jIHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBoYXZlIFB5dGhvbiAyLjMgYXMgdGhlaXIgc3lzdGVtIFB5dGhvbi4KLQotaW1wb3J0IGltcAogaW1wb3J0IG9zCitpbXBvcnQgc3lzCiAKIAotZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgotICAgICIiIkZpbmRzIGFuZCByZXR1cm5zIGEgbW9kdWxlIGluIHRoZSBsb2NhbCBkaXN0L2NoZWNrb3V0LgotICAgICIiIgotICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwgIkxpYiIpCi0gICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCit0cnk6CisgICAgZnJvbSBpbXBvcnRsaWIubWFjaGluZXJ5IGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaW1wb3J0IGltcAorCisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQorICAgICAgICByZXR1cm4gaW1wLmxvYWRfbW9kdWxlKG1vZG5hbWUsICppbXAuZmluZF9tb2R1bGUobW9kbmFtZSwgW21vZHBhdGhdKSkKK2Vsc2U6CisgICAgZGVmIGZpbmRfbW9kdWxlKG1vZG5hbWUpOgorICAgICAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KKyAgICAgICAgIiIiCisgICAgICAgIG1vZHBhdGggPSBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiLCBtb2RuYW1lICsgIi5weSIpCisgICAgICAgIHJldHVybiBTb3VyY2VGaWxlTG9hZGVyKG1vZG5hbWUsIG1vZHBhdGgpLmxvYWRfbW9kdWxlKCkKKwogCiBkZWYgd3JpdGVfY29udGVudHMoZik6CiAgICAgIiIiV3JpdGUgQyBjb2RlIGNvbnRlbnRzIHRvIHRoZSB0YXJnZXQgZmlsZSBvYmplY3QuCiAgICAgIiIiCi0gICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoIm9wY29kZSIpCisgICAgb3Bjb2RlID0gZmluZF9tb2R1bGUoJ29wY29kZScpCiAgICAgdGFyZ2V0cyA9IFsnX3Vua25vd25fb3Bjb2RlJ10gKiAyNTYKICAgICBmb3Igb3BuYW1lLCBvcCBpbiBvcGNvZGUub3BtYXAuaXRlbXMoKToKICAgICAgICAgdGFyZ2V0c1tvcF0gPSAiVEFSR0VUXyVzIiAlIG9wbmFtZQpAQCAtMjksMTUgKzM5LDE3IEBACiAgICAgZi53cml0ZSgiXG59O1xuIikKIAogCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGltcG9ydCBzeXMKLSAgICBhc3NlcnQgbGVuKHN5cy5hcmd2KSA8IDMsICJUb28gbWFueSBhcmd1bWVudHMiCitkZWYgbWFpbigpOgorICAgIGlmIGxlbihzeXMuYXJndikgPj0gMzoKKyAgICAgICAgc3lzLmV4aXQoIlRvbyBtYW55IGFyZ3VtZW50cyIpCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA9PSAyOgogICAgICAgICB0YXJnZXQgPSBzeXMuYXJndlsxXQogICAgIGVsc2U6CiAgICAgICAgIHRhcmdldCA9ICJQeXRob24vb3Bjb2RlX3RhcmdldHMuaCIKLSAgICBmID0gb3Blbih0YXJnZXQsICJ3IikKLSAgICB0cnk6CisgICAgd2l0aCBvcGVuKHRhcmdldCwgInciKSBhcyBmOgogICAgICAgICB3cml0ZV9jb250ZW50cyhmKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGYuY2xvc2UoKQorICAgIHByaW50KCJKdW1wIHRhYmxlIHdyaXR0ZW4gaW50byAlcyIgJSB0YXJnZXQpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYXJzaGFsLmMgYi9QeXRob24vbWFyc2hhbC5jCmluZGV4IDViOGRlOTkuLjg3YTRiMjQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tYXJzaGFsLmMKKysrIGIvUHl0aG9uL21hcnNoYWwuYwpAQCAtMTMwLDcgKzEzMCw3IEBACiAgICAgbSA9IHAtPmVuZCAtIHAtPnB0cjsKICAgICBpZiAocC0+ZnAgIT0gTlVMTCkgewogICAgICAgICBpZiAobiA8PSBtKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocC0+cHRyLCBzLCBuKTsKKyAgICAgICAgICAgIG1lbWNweShwLT5wdHIsIHMsIG4pOwogICAgICAgICAgICAgcC0+cHRyICs9IG47CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xNDAsNyArMTQwLDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChuIDw9IG0gfHwgd19yZXNlcnZlKHAsIG4gLSBtKSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBtZW1jcHkocC0+cHRyLCBzLCBuKTsKICAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgfQpAQCAtMjYzLDEwICsyNjMsMTAgQEAKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDEpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShwLT5oYXNodGFibGUsIHYpOworICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkocC0+aGFzaHRhYmxlLCB2KTsKICAgICBpZiAoZW50cnkgIT0gTlVMTCkgewogICAgICAgICAvKiB3cml0ZSB0aGUgcmVmZXJlbmNlIGluZGV4IHRvIHRoZSBzdHJlYW0gKi8KLSAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEocC0+aGFzaHRhYmxlLCAmdywgc2l6ZW9mKHcpLCBlbnRyeSk7CisgICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgZW50cnksIHcpOwogICAgICAgICAvKiB3ZSBkb24ndCBzdG9yZSAibG9uZyIgaW5kaWNlcyBpbiB0aGUgZGljdCAqLwogICAgICAgICBhc3NlcnQoMCA8PSB3ICYmIHcgPD0gMHg3ZmZmZmZmZik7CiAgICAgICAgIHdfYnl0ZShUWVBFX1JFRiwgcCk7CkBAIC01NzEsNyArNTcxLDggQEAKIHdfaW5pdF9yZWZzKFdGSUxFICp3ZiwgaW50IHZlcnNpb24pCiB7CiAgICAgaWYgKHZlcnNpb24gPj0gMykgewotICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKGludCksIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCisgICAgICAgIHdmLT5oYXNodGFibGUgPSBfUHlfaGFzaHRhYmxlX25ldyhzaXplb2YoUHlPYmplY3QgKiksIHNpemVvZihpbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOwogICAgICAgICBpZiAod2YtPmhhc2h0YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtNTgyLDkgKzU4MywxMyBAQAogfQogCiBzdGF0aWMgaW50Ci13X2RlY3JlZl9lbnRyeShfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICpQeV9VTlVTRUQoZGF0YSkpCit3X2RlY3JlZl9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQogewotICAgIFB5X1hERUNSRUYoZW50cnktPmtleSk7CisgICAgUHlPYmplY3QgKmVudHJ5X2tleTsKKworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBlbnRyeV9rZXkpOworICAgIFB5X1hERUNSRUYoZW50cnlfa2V5KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNjQzLDcgKzY0OCw3IEBACiAgICAgUHlPYmplY3QgKnJlZnM7ICAvKiBhIGxpc3QgKi8KIH0gUkZJTEU7CiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIHJfc3RyaW5nKFB5X3NzaXplX3QgbiwgUkZJTEUgKnApCiB7CiAgICAgUHlfc3NpemVfdCByZWFkID0gLTE7CkBAIC03MjksNyArNzM0LDcgQEAKICAgICAgICAgYyA9IGdldGMocC0+ZnApOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgY2hhciAqcHRyID0gcl9zdHJpbmcoMSwgcCk7CisgICAgICAgIGNvbnN0IGNoYXIgKnB0ciA9IHJfc3RyaW5nKDEsIHApOwogICAgICAgICBpZiAocHRyICE9IE5VTEwpCiAgICAgICAgICAgICBjID0gKih1bnNpZ25lZCBjaGFyICopIHB0cjsKICAgICB9CkBAIC03NDAsOSArNzQ1LDkgQEAKIHJfc2hvcnQoUkZJTEUgKnApCiB7CiAgICAgc2hvcnQgeCA9IC0xOwotICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXI7CiAKLSAgICBidWZmZXIgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZygyLCBwKTsKKyAgICBidWZmZXIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZygyLCBwKTsKICAgICBpZiAoYnVmZmVyICE9IE5VTEwpIHsKICAgICAgICAgeCA9IGJ1ZmZlclswXTsKICAgICAgICAgeCB8PSBidWZmZXJbMV0gPDwgODsKQEAgLTc1Niw5ICs3NjEsOSBAQAogcl9sb25nKFJGSUxFICpwKQogewogICAgIGxvbmcgeCA9IC0xOwotICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXI7CiAKLSAgICBidWZmZXIgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg0LCBwKTsKKyAgICBidWZmZXIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg0LCBwKTsKICAgICBpZiAoYnVmZmVyICE9IE5VTEwpIHsKICAgICAgICAgeCA9IGJ1ZmZlclswXTsKICAgICAgICAgeCB8PSAobG9uZylidWZmZXJbMV0gPDwgODsKQEAgLTk3OCw3ICs5ODMsOCBAQAogCiAgICAgY2FzZSBUWVBFX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdLCAqcHRyOworICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIGRvdWJsZSBkeDsKICAgICAgICAgICAgIG4gPSByX2J5dGUocCk7CiAgICAgICAgICAgICBpZiAobiA9PSBFT0YpIHsKQEAgLTEwMDEsOSArMTAwNyw5IEBACiAKICAgICBjYXNlIFRZUEVfQklOQVJZX0ZMT0FUOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpidWY7CisgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpidWY7CiAgICAgICAgICAgICBkb3VibGUgeDsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB4ID0gX1B5RmxvYXRfVW5wYWNrOChidWYsIDEpOwpAQCAtMTAxNiw3ICsxMDIyLDggQEAKIAogICAgIGNhc2UgVFlQRV9DT01QTEVYOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdLCAqcHRyOworICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIFB5X2NvbXBsZXggYzsKICAgICAgICAgICAgIG4gPSByX2J5dGUocCk7CiAgICAgICAgICAgICBpZiAobiA9PSBFT0YpIHsKQEAgLTEwNTMsMTUgKzEwNjAsMTUgQEAKIAogICAgIGNhc2UgVFlQRV9CSU5BUllfQ09NUExFWDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgICAgICAgUHlfY29tcGxleCBjOwotICAgICAgICAgICAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CisgICAgICAgICAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKICAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGMucmVhbCA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKICAgICAgICAgICAgIGlmIChjLnJlYWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgYnVmID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CisgICAgICAgICAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKICAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGMuaW1hZyA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKQEAgLTEwNzQsNyArMTA4MSw3IEBACiAKICAgICBjYXNlIFRZUEVfU1RSSU5HOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpwdHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTE5LDcgKzExMjYsNyBAQAogICAgICAgICB9CiAgICAgX3JlYWRfYXNjaWk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgKnB0cjsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0cjsKICAgICAgICAgICAgIHB0ciA9IHJfc3RyaW5nKG4sIHApOwogICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzNyw3ICsxMTQ0LDcgQEAKICAgICAgICAgaXNfaW50ZXJuZWQgPSAxOwogICAgIGNhc2UgVFlQRV9VTklDT0RFOgogICAgICAgICB7Ci0gICAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgICAgY29uc3QgY2hhciAqYnVmZmVyOwogCiAgICAgICAgIG4gPSByX2xvbmcocCk7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTI2NCw0MSArMTI3MSw1MiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJiYWQgbWFyc2hhbCBkYXRhIChzZXQgc2l6ZSBvdXQgb2YgcmFuZ2UpIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOwotICAgICAgICBpZiAodHlwZSA9PSBUWVBFX1NFVCkgewotICAgICAgICAgICAgUl9SRUYodik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBtdXN0IHVzZSBkZWxheWVkIHJlZ2lzdHJhdGlvbiBvZiBmcm96ZW5zZXRzIGJlY2F1c2UgdGhleSBtdXN0Ci0gICAgICAgICAgICAgKiBiZSBpbml0IHdpdGggYSByZWZjb3VudCBvZiAxCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlkeCA9IHJfcmVmX3Jlc2VydmUoZmxhZywgcCk7Ci0gICAgICAgICAgICBpZiAoaWR4IDwgMCkKLSAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCi0gICAgICAgIH0KLSAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIHYyID0gcl9vYmplY3QocCk7Ci0gICAgICAgICAgICBpZiAoIHYyID09IE5VTEwgKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3Igc2V0Iik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIHYgPSBOVUxMOworICAgICAgICBpZiAobiA9PSAwICYmIHR5cGUgPT0gVFlQRV9GUk9aRU5TRVQpIHsKKyAgICAgICAgICAgIC8qIGNhbGwgZnJvemVuc2V0KCkgdG8gZ2V0IHRoZSBlbXB0eSBmcm96ZW5zZXQgc2luZ2xldG9uICovCisgICAgICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopJlB5RnJvemVuU2V0X1R5cGUsIE5VTEwpOworICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChQeVNldF9BZGQodiwgdjIpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7Ci0gICAgICAgICAgICAgICAgdiA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodjIpOworICAgICAgICAgICAgUl9SRUYodik7CisgICAgICAgICAgICByZXR2YWwgPSB2OwogICAgICAgICB9Ci0gICAgICAgIGlmICh0eXBlICE9IFRZUEVfU0VUKQotICAgICAgICAgICAgdiA9IHJfcmVmX2luc2VydCh2LCBpZHgsIGZsYWcsIHApOwotICAgICAgICByZXR2YWwgPSB2OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHYgPSAodHlwZSA9PSBUWVBFX1NFVCkgPyBQeVNldF9OZXcoTlVMTCkgOiBQeUZyb3plblNldF9OZXcoTlVMTCk7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBUWVBFX1NFVCkgeworICAgICAgICAgICAgICAgIFJfUkVGKHYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBtdXN0IHVzZSBkZWxheWVkIHJlZ2lzdHJhdGlvbiBvZiBmcm96ZW5zZXRzIGJlY2F1c2UgdGhleSBtdXN0CisgICAgICAgICAgICAgICAgICogYmUgaW5pdCB3aXRoIGEgcmVmY291bnQgb2YgMQorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlkeCA9IHJfcmVmX3Jlc2VydmUoZmxhZywgcCk7CisgICAgICAgICAgICAgICAgaWYgKGlkeCA8IDApCisgICAgICAgICAgICAgICAgICAgIFB5X0NMRUFSKHYpOyAvKiBzaWduYWwgZXJyb3IgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICB2MiA9IHJfb2JqZWN0KHApOworICAgICAgICAgICAgICAgIGlmICggdjIgPT0gTlVMTCApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTlVMTCBvYmplY3QgaW4gbWFyc2hhbCBkYXRhIGZvciBzZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICAgICAgICAgICAgICB2ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQeVNldF9BZGQodiwgdjIpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodjIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHR5cGUgIT0gVFlQRV9TRVQpCisgICAgICAgICAgICAgICAgdiA9IHJfcmVmX2luc2VydCh2LCBpZHgsIGZsYWcsIHApOworICAgICAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVFlQRV9DT0RFOgpkaWZmIC0tZ2l0IGEvUHl0aG9uL21vZHN1cHBvcnQuYyBiL1B5dGhvbi9tb2RzdXBwb3J0LmMKaW5kZXggMGQwOTM3MS4uYWFiZWU4ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL21vZHN1cHBvcnQuYworKysgYi9QeXRob24vbW9kc3VwcG9ydC5jCkBAIC0yNjAsMTMgKzI2MCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKG4pOwogICAgICAgICB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICBjYXNlICdMJzoKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdmFfYXJnKCpwX3ZhLCBQWV9MT05HX0xPTkcpKTsKKyAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpdmFfYXJnKCpwX3ZhLCBsb25nIGxvbmcpKTsKIAogICAgICAgICBjYXNlICdLJzoKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKChsb25nIGxvbmcpdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBsb25nIGxvbmcpKTsKKwogICAgICAgICBjYXNlICd1JzoKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7CkBAIC0zMTgsNyArMzE3LDcgQEAKICAgICAgICAgY2FzZSAnVSc6ICAgLyogWFhYIGRlcHJlY2F0ZWQgYWxpYXMgKi8KICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgICAgICBpZiAoKipwX2Zvcm1hdCA9PSAnIycpIHsKICAgICAgICAgICAgICAgICArKypwX2Zvcm1hdDsKQEAgLTM1MSw3ICszNTAsNyBAQAogICAgICAgICBjYXNlICd5JzoKICAgICAgICAgewogICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNoYXIgKik7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoKnBfdmEsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgICAgICBpZiAoKipwX2Zvcm1hdCA9PSAnIycpIHsKICAgICAgICAgICAgICAgICArKypwX2Zvcm1hdDsKQEAgLTQ2OCw4ICs0NjcsNyBAQAogICAgIGNvbnN0IGNoYXIgKmYgPSBmb3JtYXQ7CiAgICAgaW50IG4gPSBjb3VudGZvcm1hdChmLCAnXDAnKTsKICAgICB2YV9saXN0IGx2YTsKLQotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKICAgICBpZiAobiA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDc3LDkgKzQ3NSwxNCBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAobiA9PSAxKQotICAgICAgICByZXR1cm4gZG9fbWt2YWx1ZSgmZiwgJmx2YSwgZmxhZ3MpOwotICAgIHJldHVybiBkb19ta3R1cGxlKCZmLCAmbHZhLCAnXDAnLCBuLCBmbGFncyk7CisgICAgdmFfY29weShsdmEsIHZhKTsKKyAgICBpZiAobiA9PSAxKSB7CisgICAgICAgIHJldHZhbCA9IGRvX21rdmFsdWUoJmYsICZsdmEsIGZsYWdzKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR2YWwgPSBkb19ta3R1cGxlKCZmLCAmbHZhLCAnXDAnLCBuLCBmbGFncyk7CisgICAgfQorICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL215c3RydG91bC5jIGIvUHl0aG9uL215c3RydG91bC5jCmluZGV4IDk4NDI5ZDQuLmE4NTc5MGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9teXN0cnRvdWwuYworKysgYi9QeXRob24vbXlzdHJ0b3VsLmMKQEAgLTE3LDcgKzE3LDcgQEAKICAqIHNtYWxsbWF4W2Jhc2VdIGlzIHRoZSBsYXJnZXN0IHVuc2lnbmVkIGxvbmcgaSBzdWNoIHRoYXQKICAqIGkgKiBiYXNlIGRvZXNuJ3Qgb3ZlcmZsb3cgdW5zaWduZWQgbG9uZy4KICAqLwotc3RhdGljIHVuc2lnbmVkIGxvbmcgc21hbGxtYXhbXSA9IHsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIHNtYWxsbWF4W10gPSB7CiAgICAgMCwgLyogYmFzZXMgMCBhbmQgMSBhcmUgaW52YWxpZCAqLwogICAgIDAsCiAgICAgVUxPTkdfTUFYIC8gMiwKQEAgLTYyLDE0ICs2MiwxNCBAQAogICogTm90ZSB0aGF0IHRoaXMgaXMgcGVzc2ltaXN0aWMgaWYgc2l6ZW9mKGxvbmcpID4gNC4KICAqLwogI2lmIFNJWkVPRl9MT05HID09IDQKLXN0YXRpYyBpbnQgZGlnaXRsaW1pdFtdID0geworc3RhdGljIGNvbnN0IGludCBkaWdpdGxpbWl0W10gPSB7CiAgICAgMCwgIDAsIDMyLCAyMCwgMTYsIDEzLCAxMiwgMTEsIDEwLCAxMCwgIC8qICAwIC0gIDkgKi8KICAgICA5LCAgOSwgIDgsICA4LCAgOCwgIDgsICA4LCAgNywgIDcsICA3LCAgLyogMTAgLSAxOSAqLwogICAgIDcsICA3LCAgNywgIDcsICA2LCAgNiwgIDYsICA2LCAgNiwgIDYsICAvKiAyMCAtIDI5ICovCiAgICAgNiwgIDYsICA2LCAgNiwgIDYsICA2LCAgNn07ICAgICAgICAgICAgIC8qIDMwIC0gMzYgKi8KICNlbGlmIFNJWkVPRl9MT05HID09IDgKIC8qIFtpbnQobWF0aC5mbG9vcihtYXRoLmxvZygyKio2NCwgaSkpKSBmb3IgaSBpbiByYW5nZSgyLCAzNyldICovCi1zdGF0aWMgaW50IGRpZ2l0bGltaXRbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgZGlnaXRsaW1pdFtdID0gewogICAgICAgICAgMCwgICAwLCA2NCwgNDAsIDMyLCAyNywgMjQsIDIyLCAyMSwgMjAsICAvKiAgMCAtICA5ICovCiAgICAgMTksICAxOCwgMTcsIDE3LCAxNiwgMTYsIDE2LCAxNSwgMTUsIDE1LCAgLyogMTAgLSAxOSAqLwogICAgIDE0LCAgMTQsIDE0LCAxNCwgMTMsIDEzLCAxMywgMTMsIDEzLCAxMywgIC8qIDIwIC0gMjkgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKaW5kZXggMTkyNTllMS4uNzJkMjQwOCAxMDA2NDQKLS0tIGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKKysrIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKQEAgLTg0LDcgKzg0LDcgQEAKICAgICAmJlRBUkdFVF9XSVRIX0NMRUFOVVBfRklOSVNILAogICAgICYmVEFSR0VUX1JFVFVSTl9WQUxVRSwKICAgICAmJlRBUkdFVF9JTVBPUlRfU1RBUiwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9TRVRVUF9BTk5PVEFUSU9OUywKICAgICAmJlRBUkdFVF9ZSUVMRF9WQUxVRSwKICAgICAmJlRBUkdFVF9QT1BfQkxPQ0ssCiAgICAgJiZUQVJHRVRfRU5EX0ZJTkFMTFksCkBAIC0xMjYsMjIgKzEyNiwyMiBAQAogICAgICYmVEFSR0VUX0xPQURfRkFTVCwKICAgICAmJlRBUkdFVF9TVE9SRV9GQVNULAogICAgICYmVEFSR0VUX0RFTEVURV9GQVNULAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX1NUT1JFX0FOTk9UQVRJT04sCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfUkFJU0VfVkFSQVJHUywKICAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OLAogICAgICYmVEFSR0VUX01BS0VfRlVOQ1RJT04sCiAgICAgJiZUQVJHRVRfQlVJTERfU0xJQ0UsCi0gICAgJiZUQVJHRVRfTUFLRV9DTE9TVVJFLAorICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX0xPQURfQ0xPU1VSRSwKICAgICAmJlRBUkdFVF9MT0FEX0RFUkVGLAogICAgICYmVEFSR0VUX1NUT1JFX0RFUkVGLAogICAgICYmVEFSR0VUX0RFTEVURV9ERVJFRiwKICAgICAmJl91bmtub3duX29wY29kZSwKLSAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX1ZBUiwKKyAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX0tXLAotICAgICYmVEFSR0VUX0NBTExfRlVOQ1RJT05fVkFSX0tXLAorICAgICYmVEFSR0VUX0NBTExfRlVOQ1RJT05fRVgsCiAgICAgJiZUQVJHRVRfU0VUVVBfV0lUSCwKICAgICAmJlRBUkdFVF9FWFRFTkRFRF9BUkcsCiAgICAgJiZUQVJHRVRfTElTVF9BUFBFTkQsCkBAIC0xNTQsMTAgKzE1NCwxMCBAQAogICAgICYmVEFSR0VUX0JVSUxEX1RVUExFX1VOUEFDSywKICAgICAmJlRBUkdFVF9CVUlMRF9TRVRfVU5QQUNLLAogICAgICYmVEFSR0VUX1NFVFVQX0FTWU5DX1dJVEgsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfRk9STUFUX1ZBTFVFLAorICAgICYmVEFSR0VUX0JVSUxEX0NPTlNUX0tFWV9NQVAsCisgICAgJiZUQVJHRVRfQlVJTERfU1RSSU5HLAorICAgICYmVEFSR0VUX0JVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCmRpZmYgLS1naXQgYS9QeXRob24vcGVlcGhvbGUuYyBiL1B5dGhvbi9wZWVwaG9sZS5jCmluZGV4IDRlNjU3ZmEuLmRkOGYzZTQgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9wZWVwaG9sZS5jCisrKyBiL1B5dGhvbi9wZWVwaG9sZS5jCkBAIC04LDggKzgsOCBAQAogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJzeW10YWJsZS5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgorI2luY2x1ZGUgIndvcmRjb2RlX2hlbHBlcnMuaCIKIAotI2RlZmluZSBHRVRBUkcoYXJyLCBpKSAoKGludCkoKGFycltpKzJdPDw4KSArIGFycltpKzFdKSkKICNkZWZpbmUgVU5DT05ESVRJT05BTF9KVU1QKG9wKSAgKG9wPT1KVU1QX0FCU09MVVRFIHx8IG9wPT1KVU1QX0ZPUldBUkQpCiAjZGVmaW5lIENPTkRJVElPTkFMX0pVTVAob3ApIChvcD09UE9QX0pVTVBfSUZfRkFMU0UgfHwgb3A9PVBPUF9KVU1QX0lGX1RSVUUgXAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKQEAgLTE3LDIyICsxNywxNiBAQAogICAgIHx8IG9wPT1QT1BfSlVNUF9JRl9GQUxTRSB8fCBvcD09UE9QX0pVTVBfSUZfVFJVRSBcCiAgICAgfHwgb3A9PUpVTVBfSUZfRkFMU0VfT1JfUE9QIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQogI2RlZmluZSBKVU1QU19PTl9UUlVFKG9wKSAob3A9PVBPUF9KVU1QX0lGX1RSVUUgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCi0jZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoR0VUQVJHKGFycixpKSArIChBQlNPTFVURV9KVU1QKGFycltpXSkgPyAwIDogaSszKSkKLSNkZWZpbmUgU0VUQVJHKGFyciwgaSwgdmFsKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhc3NlcnQoMCA8PSB2YWwgJiYgdmFsIDw9IDB4ZmZmZik7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBhcnJbaSsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpPj44KTsgICAgIFwKLSAgICBhcnJbaSsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHVuc2lnbmVkIGludCl2YWwpICYgMjU1KTsgIFwKLX0gd2hpbGUoMCkKLSNkZWZpbmUgQ09ERVNJWkUob3ApICAoSEFTX0FSRyhvcCkgPyAzIDogMSkKLSNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGJ5dGVzKSBcCi0gICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tzdGFydCtieXRlcy0xXSkKKyNkZWZpbmUgR0VUSlVNUFRHVChhcnIsIGkpIChnZXRfYXJnKGFyciwgaSkgLyBzaXplb2YoX1B5X0NPREVVTklUKSArIFwKKyAgICAgICAgKEFCU09MVVRFX0pVTVAoX1B5X09QQ09ERShhcnJbaV0pKSA/IDAgOiBpKzEpKQorI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgZW5kKSBcCisgICAgKGJsb2Nrc1tzdGFydF09PWJsb2Nrc1tlbmRdKQogCiAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfQ1JFQVRFKCkgeyBcCiAgICAgY29uc3Rfc3RhY2tfc2l6ZSA9IDI1NjsgXAogICAgIGNvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgbG9hZF9jb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAotICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgIGlmICghY29uc3Rfc3RhY2spIHsgXAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCiAgICAgfSBcCkBAIC00MSwyNyArMzUsMjMgQEAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfREVMRVRFKCkgZG8geyBcCiAgICAgaWYgKGNvbnN0X3N0YWNrKSBcCiAgICAgICAgIFB5TWVtX0ZyZWUoY29uc3Rfc3RhY2spOyBcCi0gICAgaWYgKGxvYWRfY29uc3Rfc3RhY2spIFwKLSAgICAgICAgUHlNZW1fRnJlZShsb2FkX2NvbnN0X3N0YWNrKTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19MRU4oKSAoY29uc3Rfc3RhY2tfdG9wICsgMSkKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKCh1bnNpZ25lZCkoY29uc3Rfc3RhY2tfdG9wICsgMSkpCiAKICNkZWZpbmUgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKSBkbyB7IFwKICAgICBQeU9iamVjdCAqX3g7IFwKLSAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsgXAotICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKLSAgICBfeCA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBhc3NlcnQoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBMT0FEX0NPTlNUKTsgXAorICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IChQeV9zc2l6ZV90KWdldF9hcmcoY29kZXN0ciwgaSkpOyBcCisgICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBnZXRfYXJnKGNvZGVzdHIsIGkpKTsgXAogICAgIGlmICgrK2NvbnN0X3N0YWNrX3RvcCA+PSBjb25zdF9zdGFja19zaXplKSB7IFwKICAgICAgICAgY29uc3Rfc3RhY2tfc2l6ZSAqPSAyOyBcCiAgICAgICAgIFB5TWVtX1Jlc2l6ZShjb25zdF9zdGFjaywgUHlPYmplY3QgKiwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKLSAgICAgICAgUHlNZW1fUmVzaXplKGxvYWRfY29uc3Rfc3RhY2ssIFB5X3NzaXplX3QsIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICBpZiAoIWNvbnN0X3N0YWNrKSB7IFwKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKICAgICAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCiAgICAgICAgIH0gXAogICAgIH0gXAotICAgIGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IGk7IFwKICAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gX3g7IFwKICAgICBpbl9jb25zdHMgPSAxOyBcCiAgICAgfSB3aGlsZSgwKQpAQCAtNzAsMjIgKzYwLDExNCBAQAogICAgIGNvbnN0X3N0YWNrX3RvcCA9IC0xOyBcCiAgICAgfSB3aGlsZSgwKQogCi0jZGVmaW5lIENPTlNUX1NUQUNLX1RPUCgpIFwKLSAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdCi0KICNkZWZpbmUgQ09OU1RfU1RBQ0tfTEFTVE4oaSkgXAotICAgICZjb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0KKyAgICAmY29uc3Rfc3RhY2tbQ09OU1RfU1RBQ0tfTEVOKCkgLSBpXQogCiAjZGVmaW5lIENPTlNUX1NUQUNLX1BPUChpKSBkbyB7IFwKLSAgICBhc3NlcnQoY29uc3Rfc3RhY2tfdG9wICsgMSA+PSBpKTsgXAorICAgIGFzc2VydChDT05TVF9TVEFDS19MRU4oKSA+PSBpKTsgXAogICAgIGNvbnN0X3N0YWNrX3RvcCAtPSBpOyBcCiAgICAgfSB3aGlsZSgwKQogCi0jZGVmaW5lIENPTlNUX1NUQUNLX09QX0xBU1ROKGkpIFwKLSAgICAoKGNvbnN0X3N0YWNrX3RvcCA+PSBpIC0gMSkgPyBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXSA6IC0xKQorLyogU2NhbnMgYmFjayBOIGNvbnNlY3V0aXZlIExPQURfQ09OU1QgaW5zdHJ1Y3Rpb25zLCBza2lwcGluZyBOT1BzLAorICAgcmV0dXJucyBpbmRleCBvZiB0aGUgTnRoIGxhc3QncyBMT0FEX0NPTlNUJ3MgRVhURU5ERURfQVJHIHByZWZpeC4KKyAgIENhbGxlcnMgYXJlIHJlc3BvbnNpYmxlIHRvIGNoZWNrIENPTlNUX1NUQUNLX0xFTiBiZWZvcmVoYW5kLgorKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitsYXN0bl9jb25zdF9zdGFydChjb25zdCBfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBuKQoreworICAgIGFzc2VydChuID4gMCk7CisgICAgZm9yICg7OykgeworICAgICAgICBpLS07CisgICAgICAgIGFzc2VydChpID49IDApOworICAgICAgICBpZiAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBMT0FEX0NPTlNUKSB7CisgICAgICAgICAgICBpZiAoIS0tbikgeworICAgICAgICAgICAgICAgIHdoaWxlIChpID4gMCAmJiBfUHlfT1BDT0RFKGNvZGVzdHJbaS0xXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBOT1AgfHwKKyAgICAgICAgICAgICAgICAgICBfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRyk7CisgICAgICAgIH0KKyAgICB9Cit9CiAKKy8qIFNjYW5zIHRocm91Z2ggRVhURU5ERUQgQVJHcywgc2Vla2luZyB0aGUgaW5kZXggb2YgdGhlIGVmZmVjdGl2ZSBvcGNvZGUgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitmaW5kX29wKGNvbnN0IF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpKQoreworICAgIHdoaWxlIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICBpKys7CisgICAgfQorICAgIHJldHVybiBpOworfQogCi0vKiBSZXBsYWNlIExPQURfQ09OU1QgYzEuIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24gQlVJTERfVFVQTEUgbgorLyogR2l2ZW4gdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlLAorICAgc2NhbiBiYWNrIHRvIGNvbnN0cnVjdCB0aGUgb3Bhcmcgd2l0aCBFWFRFTkRFRF9BUkcgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2dldF9hcmcoY29uc3QgX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGkpCit7CisgICAgX1B5X0NPREVVTklUIHdvcmQ7CisgICAgdW5zaWduZWQgaW50IG9wYXJnID0gX1B5X09QQVJHKGNvZGVzdHJbaV0pOworICAgIGlmIChpID49IDEgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTFdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgb3BhcmcgfD0gX1B5X09QQVJHKHdvcmQpIDw8IDg7CisgICAgICAgIGlmIChpID49IDIgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTJdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgIG9wYXJnIHw9IF9QeV9PUEFSRyh3b3JkKSA8PCAxNjsKKyAgICAgICAgICAgIGlmIChpID49IDMgJiYgX1B5X09QQ09ERSh3b3JkID0gY29kZXN0cltpLTNdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgICAgICBvcGFyZyB8PSBfUHlfT1BBUkcod29yZCkgPDwgMjQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG9wYXJnOworfQorCisvKiBGaWxsIHRoZSByZWdpb24gd2l0aCBOT1BzLiAqLworc3RhdGljIHZvaWQKK2ZpbGxfbm9wcyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIG1lbXNldChjb2Rlc3RyICsgc3RhcnQsIE5PUCwgKGVuZCAtIHN0YXJ0KSAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKK30KKworLyogR2l2ZW4gdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlLAorICAgYXR0ZW1wdCB0byByZXBsYWNlIHRoZSBhcmd1bWVudCwgdGFraW5nIGludG8gYWNjb3VudCBFWFRFTkRFRF9BUkcuCisgICBSZXR1cm5zIC0xIG9uIGZhaWx1cmUsIG9yIHRoZSBuZXcgb3AgaW5kZXggb24gc3VjY2VzcyAqLworc3RhdGljIFB5X3NzaXplX3QKK3NldF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIHVuc2lnbmVkIGludCBvcGFyZykKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3VyYXJnID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICBpbnQgY3VyaWxlbiwgbmV3aWxlbjsKKyAgICBpZiAoY3VyYXJnID09IG9wYXJnKQorICAgICAgICByZXR1cm4gaTsKKyAgICBjdXJpbGVuID0gaW5zdHJzaXplKGN1cmFyZyk7CisgICAgbmV3aWxlbiA9IGluc3Ryc2l6ZShvcGFyZyk7CisgICAgaWYgKGN1cmlsZW4gPCBuZXdpbGVuKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIGkgKyAxIC0gY3VyaWxlbiwgX1B5X09QQ09ERShjb2Rlc3RyW2ldKSwgb3BhcmcsIG5ld2lsZW4pOworICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSAtIGN1cmlsZW4gKyBuZXdpbGVuLCBpICsgMSk7CisgICAgcmV0dXJuIGktY3VyaWxlbituZXdpbGVuOworfQorCisvKiBBdHRlbXB0IHRvIHdyaXRlIG9wL2FyZyBhdCBlbmQgb2Ygc3BlY2lmaWVkIHJlZ2lvbiBvZiBtZW1vcnkuCisgICBQcmVjZWRpbmcgbWVtb3J5IGluIHRoZSByZWdpb24gaXMgb3ZlcndyaXR0ZW4gd2l0aCBOT1BzLgorICAgUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBvcCBpbmRleCBvbiBzdWNjZXNzICovCitzdGF0aWMgUHlfc3NpemVfdAorY29weV9vcF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIHVuc2lnbmVkIGNoYXIgb3AsCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb3BhcmcsIFB5X3NzaXplX3QgbWF4aSkKK3sKKyAgICBpbnQgaWxlbiA9IGluc3Ryc2l6ZShvcGFyZyk7CisgICAgaWYgKGkgKyBpbGVuID4gbWF4aSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHdyaXRlX29wX2FyZyhjb2Rlc3RyICsgbWF4aSAtIGlsZW4sIG9wLCBvcGFyZywgaWxlbik7CisgICAgZmlsbF9ub3BzKGNvZGVzdHIsIGksIG1heGkgLSBpbGVuKTsKKyAgICByZXR1cm4gbWF4aSAtIDE7Cit9CisKKy8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMSwgTE9BRF9DT05TVCBjMiAuLi4gTE9BRF9DT05TVCBjbiwgQlVJTERfVFVQTEUgbgogICAgd2l0aCAgICBMT0FEX0NPTlNUIChjMSwgYzIsIC4uLiBjbikuCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgKGMxLCBjMiwgLi4uIGNuKSBjYW4gYmUgYXBwZW5kZWQuCkBAIC05NCw5ICsxNzYsMTAgQEAKICAgIEFsc28gd29ya3MgZm9yIEJVSUxEX0xJU1QgYW5kIEJVSUxUX1NFVCB3aGVuIGZvbGxvd2VkIGJ5IGFuICJpbiIgb3IgIm5vdCBpbiIKICAgIHRlc3Q7IGZvciBCVUlMRF9TRVQgaXQgYXNzZW1ibGVzIGEgZnJvemVuc2V0IHJhdGhlciB0aGFuIGEgdHVwbGUuCiAqLwotc3RhdGljIGludAotdHVwbGVfb2ZfY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5X3NzaXplX3QgbiwKLSAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCitzdGF0aWMgUHlfc3NpemVfdAorZm9sZF90dXBsZV9vbl9jb25zdGFudHMoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGNfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9wY29kZV9lbmQsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzLCBpbnQgbikKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICpjb25zdGFudDsKICAgICBQeV9zc2l6ZV90IGksIGxlbl9jb25zdHM7CkBAIC0xMDYsOSArMTg5LDkgQEAKIAogICAgIC8qIEJ1aWxkdXAgbmV3IHR1cGxlIG9mIGNvbnN0YW50cyAqLwogICAgIG5ld2NvbnN0ID0gUHlUdXBsZV9OZXcobik7Ci0gICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKKyAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CiAgICAgICAgIGNvbnN0YW50ID0gb2Jqc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKGNvbnN0YW50KTsKQEAgLTExNiwzMCArMTk5LDI2IEBACiAgICAgfQogCiAgICAgLyogSWYgaXQncyBhIEJVSUxEX1NFVCwgdXNlIHRoZSBQeVR1cGxlIHdlIGp1c3QgYnVpbHQgdG8gY3JlYXRlIGEKLSAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCi0gICAgaWYgKGNvZGVzdHJbMF0gPT0gQlVJTERfU0VUKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0dXBsZSA9IG5ld2NvbnN0OwotICAgICAgICBuZXdjb25zdCA9IFB5RnJvemVuU2V0X05ldyh0dXBsZSk7Ci0gICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7Ci0gICAgICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgUHlGcm96ZW5TZXQsIGFuZCB1c2UgdGhhdCBhcyB0aGUgY29uc3RhbnQgaW5zdGVhZDogKi8KKyAgICBpZiAob3Bjb2RlID09IEJVSUxEX1NFVCkgeworICAgICAgICBQeV9TRVRSRUYobmV3Y29uc3QsIFB5RnJvemVuU2V0X05ldyhuZXdjb25zdCkpOworICAgICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGZvbGRlZCBjb25zdGFudCBvbnRvIGNvbnN0cyAqLworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBpZiAoUHlMaXN0X0FwcGVuZChjb25zdHMsIG5ld2NvbnN0KSkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwogCi0gICAgLyogV3JpdGUgTk9QcyBvdmVyIG9sZCBMT0FEX0NPTlNUUyBhbmQKLSAgICAgICBhZGQgYSBuZXcgTE9BRF9DT05TVCBuZXdjb25zdCBvbiB0b3Agb2YgdGhlIEJVSUxEX1RVUExFIG4gKi8KLSAgICBjb2Rlc3RyWzBdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgMCwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCi0vKiBSZXBsYWNlIExPQURfQ09OU1QgYzEuIExPQURfQ09OU1QgYzIgQklOT1AKKy8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMSwgTE9BRF9DT05TVCBjMiwgQklOT1AKICAgIHdpdGggICAgTE9BRF9DT05TVCBiaW5vcChjMSxjMikKICAgIFRoZSBjb25zdHMgdGFibGUgbXVzdCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gc28gdGhhdCB0aGUKICAgIG5ldyBjb25zdGFudCBjYW4gYmUgYXBwZW5kZWQuCkBAIC0xNDksMjAgKzIyOCwyMSBAQAogICAgaXMgYmVsb3cgYSB0aHJlc2hvbGQgdmFsdWUuICBUaGF0IGtlZXBzIHB5YyBmaWxlcyBmcm9tCiAgICBiZWNvbWluZyBsYXJnZSBpbiB0aGUgcHJlc2VuY2Ugb2YgY29kZSBsaWtlOiAgKE5vbmUsKSoxMDAwLgogKi8KLXN0YXRpYyBpbnQKLWZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCitzdGF0aWMgUHlfc3NpemVfdAorZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb3Bjb2RlX2VuZCwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdCwgKnYsICp3OwogICAgIFB5X3NzaXplX3QgbGVuX2NvbnN0cywgc2l6ZTsKLSAgICBpbnQgb3Bjb2RlOwogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7CisgICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogCiAgICAgLyogQ3JlYXRlIG5ldyBjb25zdGFudCAqLwogICAgIHYgPSBvYmpzWzBdOwogICAgIHcgPSBvYmpzWzFdOwotICAgIG9wY29kZSA9IGNvZGVzdHJbMF07CiAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX1Bvd2VyKHYsIHcsIFB5X05vbmUpOwpAQCAtMjA4LDUwICsyODgsNDggQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgYmluYXJ5IG9wZXJhdGlvbiAlZCBvbiBhIGNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKQorICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2l6ZSA9IFB5T2JqZWN0X1NpemUobmV3Y29uc3QpOwogICAgIGlmIChzaXplID09IC0xKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0gZWxzZSBpZiAoc2l6ZSA+IDIwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogQXBwZW5kIGZvbGRlZCBjb25zdGFudCBpbnRvIGNvbnN0cyB0YWJsZSAqLwotICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBpZiAoUHlMaXN0X0FwcGVuZChjb25zdHMsIG5ld2NvbnN0KSkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwogCi0gICAgLyogV3JpdGUgTk9QIE5PUCBOT1AgTk9QIExPQURfQ09OU1QgbmV3Y29uc3QgKi8KLSAgICBjb2Rlc3RyWy0yXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIC0yLCBsZW5fY29uc3RzKTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gY29weV9vcF9hcmcoY29kZXN0ciwgY19zdGFydCwgTE9BRF9DT05TVCwgbGVuX2NvbnN0cywgb3Bjb2RlX2VuZCk7CiB9CiAKLXN0YXRpYyBpbnQKLWZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvcGNvZGVfZW5kLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICp2KQogewogICAgIFB5T2JqZWN0ICpuZXdjb25zdDsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHM7Ci0gICAgaW50IG9wY29kZTsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOwotICAgIGFzc2VydChjb2Rlc3RyWzBdID09IExPQURfQ09OU1QpOworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzNdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6CiAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX05lZ2F0aXZlKHYpOwpAQCAtMjY3LDM1ICszNDUsMzEgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgdW5hcnkgb3BlcmF0aW9uICVkIG9uIGEgY29uc3RhbnQiLAogICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkgewotICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpCisgICAgICAgIGlmKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgaW50byBjb25zdHMgdGFibGUgKi8KLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgY29kZXN0clswXSA9IE5PUDsKLSAgICBjb2Rlc3RyWzFdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgMSwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50ICoKLW1hcmtibG9ja3ModW5zaWduZWQgY2hhciAqY29kZSwgUHlfc3NpemVfdCBsZW4pCittYXJrYmxvY2tzKF9QeV9DT0RFVU5JVCAqY29kZSwgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgdW5zaWduZWQgaW50ICpibG9ja3MgPSBQeU1lbV9OZXcodW5zaWduZWQgaW50LCBsZW4pOwotICAgIGludCBpLGosIG9wY29kZSwgYmxvY2tjbnQgPSAwOworICAgIGludCBpLCBqLCBvcGNvZGUsIGJsb2NrY250ID0gMDsKIAogICAgIGlmIChibG9ja3MgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMzA0LDggKzM3OCw4IEBACiAgICAgbWVtc2V0KGJsb2NrcywgMCwgbGVuKnNpemVvZihpbnQpKTsKIAogICAgIC8qIE1hcmsgbGFiZWxzIGluIHRoZSBmaXJzdCBwYXNzICovCi0gICAgZm9yIChpPTAgOyBpPGxlbiA7IGkrPUNPREVTSVpFKG9wY29kZSkpIHsKLSAgICAgICAgb3Bjb2RlID0gY29kZVtpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2RlW2ldKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgICAgIGNhc2UgRk9SX0lURVI6CiAgICAgICAgICAgICBjYXNlIEpVTVBfRk9SV0FSRDoKQEAgLTMyMSwxMiArMzk1LDEzIEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6CiAgICAgICAgICAgICAgICAgaiA9IEdFVEpVTVBUR1QoY29kZSwgaSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGogPCBsZW4pOwogICAgICAgICAgICAgICAgIGJsb2Nrc1tqXSA9IDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAgICAgLyogQnVpbGQgYmxvY2sgbnVtYmVycyBpbiB0aGUgc2Vjb25kIHBhc3MgKi8KLSAgICBmb3IgKGk9MCA7IGk8bGVuIDsgaSsrKSB7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIGJsb2NrY250ICs9IGJsb2Nrc1tpXTsgICAgICAgICAgLyogaW5jcmVtZW50IGJsb2NrY250IG92ZXIgbGFiZWxzICovCiAgICAgICAgIGJsb2Nrc1tpXSA9IGJsb2NrY250OwogICAgIH0KQEAgLTMzNywzMyArNDEyLDI3IEBACiAgICBUaGUgY29uc3RzIG9iamVjdCBzaG91bGQgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHRvIGFsbG93IG5ldyBjb25zdGFudHMKICAgIHRvIGJlIGFwcGVuZGVkLgogCi0gICBUbyBrZWVwIHRoZSBvcHRpbWl6ZXIgc2ltcGxlLCBpdCBiYWlscyBvdXQgKGRvZXMgbm90aGluZykgZm9yIGNvZGUgdGhhdAotICAgaGFzIGEgbGVuZ3RoIG92ZXIgMzIsNzAwLCBhbmQgZG9lcyBub3QgY2FsY3VsYXRlIGV4dGVuZGVkIGFyZ3VtZW50cy4KLSAgIFRoYXQgYWxsb3dzIHVzIHRvIGF2b2lkIG92ZXJmbG93IGFuZCBzaWduIGlzc3Vlcy4gTGlrZXdpc2UsIGl0IGJhaWxzIHdoZW4KLSAgIHRoZSBsaW5lbm8gdGFibGUgaGFzIGNvbXBsZXggZW5jb2RpbmcgZm9yIGdhcHMgPj0gMjU1LiBFWFRFTkRFRF9BUkcgY2FuCi0gICBhcHBlYXIgYmVmb3JlIE1BS0VfRlVOQ1RJT047IGluIHRoaXMgY2FzZSBib3RoIG9wY29kZXMgYXJlIHNraXBwZWQuCi0gICBFWFRFTkRFRF9BUkcgcHJlY2VkaW5nIGFueSBvdGhlciBvcGNvZGUgY2F1c2VzIHRoZSBvcHRpbWl6ZXIgdG8gYmFpbC4KKyAgIFRvIGtlZXAgdGhlIG9wdGltaXplciBzaW1wbGUsIGl0IGJhaWxzIHdoZW4gdGhlIGxpbmVubyB0YWJsZSBoYXMgY29tcGxleAorICAgZW5jb2RpbmcgZm9yIGdhcHMgPj0gMjU1LgogCiAgICBPcHRpbWl6YXRpb25zIGFyZSByZXN0cmljdGVkIHRvIHNpbXBsZSB0cmFuc2Zvcm1hdGlvbnMgb2NjdXJyaW5nIHdpdGhpbiBhCiAgICBzaW5nbGUgYmFzaWMgYmxvY2suICBBbGwgdHJhbnNmb3JtYXRpb25zIGtlZXAgdGhlIGNvZGUgc2l6ZSB0aGUgc2FtZSBvcgogICAgc21hbGxlci4gIEZvciB0aG9zZSB0aGF0IHJlZHVjZSBzaXplLCB0aGUgZ2FwcyBhcmUgaW5pdGlhbGx5IGZpbGxlZCB3aXRoCiAgICBOT1BzLiAgTGF0ZXIgdGhvc2UgTk9QcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIGp1bXAgYWRkcmVzc2VzIHJldGFyZ2V0ZWQgaW4KLSAgIGEgc2luZ2xlIHBhc3MuICBMaW5lIG51bWJlcmluZyBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseS4gKi8KKyAgIGEgc2luZ2xlIHBhc3MuICovCiAKIFB5T2JqZWN0ICoKIFB5Q29kZV9PcHRpbWl6ZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QqIGNvbnN0cywgUHlPYmplY3QgKm5hbWVzLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsaW5lbm9fb2JqKQorICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpsbm90YWJfb2JqKQogewotICAgIFB5X3NzaXplX3QgaSwgaiwgY29kZWxlbjsKLSAgICBpbnQgbm9wcywgaCwgYWRqOwotICAgIGludCB0Z3QsIHRndHRndCwgb3Bjb2RlOwotICAgIHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIgPSBOVUxMOwotICAgIHVuc2lnbmVkIGNoYXIgKmxpbmVubzsKLSAgICBpbnQgKmFkZHJtYXAgPSBOVUxMOwotICAgIGludCBuZXdfbGluZSwgY3VtX29yaWdfbGluZSwgbGFzdF9saW5lOworICAgIFB5X3NzaXplX3QgaCwgaSwgbmV4dGksIG9wX3N0YXJ0LCBjb2RlbGVuLCB0Z3Q7CisgICAgdW5zaWduZWQgaW50IGosIG5vcHM7CisgICAgdW5zaWduZWQgY2hhciBvcGNvZGUsIG5leHRvcDsKKyAgICBfUHlfQ09ERVVOSVQgKmNvZGVzdHIgPSBOVUxMOworICAgIHVuc2lnbmVkIGNoYXIgKmxub3RhYjsKKyAgICB1bnNpZ25lZCBpbnQgY3VtX29yaWdfb2Zmc2V0LCBsYXN0X29mZnNldDsKICAgICBQeV9zc2l6ZV90IHRhYnNpejsKICAgICBQeU9iamVjdCAqKmNvbnN0X3N0YWNrID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90ICpsb2FkX2NvbnN0X3N0YWNrID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3RvcCA9IC0xOwogICAgIFB5X3NzaXplX3QgY29uc3Rfc3RhY2tfc2l6ZSA9IDA7CiAgICAgaW50IGluX2NvbnN0cyA9IDA7ICAvKiB3aGV0aGVyIHdlIGFyZSBpbiBhIExPQURfQ09OU1Qgc2VxdWVuY2UgKi8KQEAgLTM3Myw0MiArNDQyLDMwIEBACiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZXhpdEVycm9yOwogCi0gICAgLyogQnlwYXNzIG9wdGltaXphdGlvbiB3aGVuIHRoZSBsaW5lbm8gdGFibGUgaXMgdG9vIGNvbXBsZXggKi8KLSAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhsaW5lbm9fb2JqKSk7Ci0gICAgbGluZW5vID0gKHVuc2lnbmVkIGNoYXIqKVB5Qnl0ZXNfQVNfU1RSSU5HKGxpbmVub19vYmopOwotICAgIHRhYnNpeiA9IFB5Qnl0ZXNfR0VUX1NJWkUobGluZW5vX29iaik7Ci0gICAgaWYgKG1lbWNocihsaW5lbm8sIDI1NSwgdGFic2l6KSAhPSBOVUxMKQorICAgIC8qIEJ5cGFzcyBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbG5vdGFiIHRhYmxlIGlzIHRvbyBjb21wbGV4ICovCisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobG5vdGFiX29iaikpOworICAgIGxub3RhYiA9ICh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhsbm90YWJfb2JqKTsKKyAgICB0YWJzaXogPSBQeUJ5dGVzX0dFVF9TSVpFKGxub3RhYl9vYmopOworICAgIGFzc2VydCh0YWJzaXogPT0gMCB8fCBQeV9SRUZDTlQobG5vdGFiX29iaikgPT0gMSk7CisgICAgaWYgKG1lbWNocihsbm90YWIsIDI1NSwgdGFic2l6KSAhPSBOVUxMKSB7CisgICAgICAgIC8qIDI1NSB2YWx1ZSBhcmUgdXNlZCBmb3IgbXVsdGlieXRlIGJ5dGVjb2RlIGluc3RydWN0aW9ucyAqLwogICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgfQorICAgIC8qIE5vdGU6IC0xMjggYW5kIDEyNyBzcGVjaWFsIHZhbHVlcyBmb3IgbGluZSBudW1iZXIgZGVsdGEgYXJlIG9rLAorICAgICAgIHRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgZG9lc24ndCBtb2RpZnkgbGluZSBudW1iZXJzLiAqLwogCi0gICAgLyogQXZvaWQgc2l0dWF0aW9ucyB3aGVyZSBqdW1wIHJldGFyZ2V0aW5nIGNvdWxkIG92ZXJmbG93ICovCiAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soY29kZSkpOwogICAgIGNvZGVsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGNvZGUpOwotICAgIGlmIChjb2RlbGVuID4gMzI3MDApCi0gICAgICAgIGdvdG8gZXhpdFVuY2hhbmdlZDsKKyAgICBhc3NlcnQoY29kZWxlbiAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOwogCiAgICAgLyogTWFrZSBhIG1vZGlmaWFibGUgY29weSBvZiB0aGUgY29kZSBzdHJpbmcgKi8KLSAgICBjb2Rlc3RyID0gKHVuc2lnbmVkIGNoYXIgKilQeU1lbV9NYWxsb2MoY29kZWxlbik7CisgICAgY29kZXN0ciA9IChfUHlfQ09ERVVOSVQgKilQeU1lbV9NYWxsb2MoY29kZWxlbik7CiAgICAgaWYgKGNvZGVzdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKICAgICB9Ci0gICAgY29kZXN0ciA9ICh1bnNpZ25lZCBjaGFyICopbWVtY3B5KGNvZGVzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvZGUpLCBjb2RlbGVuKTsKLQotICAgIC8qIFZlcmlmeSB0aGF0IFJFVFVSTl9WQUxVRSB0ZXJtaW5hdGVzIHRoZSBjb2Rlc3RyaW5nLiAgICAgIFRoaXMgYWxsb3dzCi0gICAgICAgdGhlIHZhcmlvdXMgdHJhbnNmb3JtYXRpb24gcGF0dGVybnMgdG8gbG9vayBhaGVhZCBzZXZlcmFsCi0gICAgICAgaW5zdHJ1Y3Rpb25zIHdpdGhvdXQgYWRkaXRpb25hbCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdAotICAgICAgIGxvb2tpbmcgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGNvZGUgc3RyaW5nLgotICAgICovCi0gICAgaWYgKGNvZGVzdHJbY29kZWxlbi0xXSAhPSBSRVRVUk5fVkFMVUUpCi0gICAgICAgIGdvdG8gZXhpdFVuY2hhbmdlZDsKLQotICAgIC8qIE1hcHBpbmcgdG8gbmV3IGp1bXAgdGFyZ2V0cyBhZnRlciBOT1BzIGFyZSByZW1vdmVkICovCi0gICAgYWRkcm1hcCA9IFB5TWVtX05ldyhpbnQsIGNvZGVsZW4pOwotICAgIGlmIChhZGRybWFwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBleGl0RXJyb3I7Ci0gICAgfQorICAgIG1lbWNweShjb2Rlc3RyLCBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7CisgICAgY29kZWxlbiAvPSBzaXplb2YoX1B5X0NPREVVTklUKTsKIAogICAgIGJsb2NrcyA9IG1hcmtibG9ja3MoY29kZXN0ciwgY29kZWxlbik7CiAgICAgaWYgKGJsb2NrcyA9PSBOVUxMKQpAQCAtNDE3LDkgKzQ3NCwxNyBAQAogCiAgICAgQ09OU1RfU1RBQ0tfQ1JFQVRFKCk7CiAKLSAgICBmb3IgKGk9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKLSAgICAgIHJlb3B0aW1pemVfY3VycmVudDoKLSAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKKyAgICBmb3IgKGk9ZmluZF9vcChjb2Rlc3RyLCAwKSA7IGk8Y29kZWxlbiA7IGk9bmV4dGkpIHsKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2Rlc3RyW2ldKTsKKyAgICAgICAgb3Bfc3RhcnQgPSBpOworICAgICAgICB3aGlsZSAob3Bfc3RhcnQgPj0gMSAmJiBfUHlfT1BDT0RFKGNvZGVzdHJbb3Bfc3RhcnQtMV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgb3Bfc3RhcnQtLTsKKyAgICAgICAgfQorCisgICAgICAgIG5leHRpID0gaSArIDE7CisgICAgICAgIHdoaWxlIChuZXh0aSA8IGNvZGVsZW4gJiYgX1B5X09QQ09ERShjb2Rlc3RyW25leHRpXSkgPT0gRVhURU5ERURfQVJHKQorICAgICAgICAgICAgbmV4dGkrKzsKKyAgICAgICAgbmV4dG9wID0gbmV4dGkgPCBjb2RlbGVuID8gX1B5X09QQ09ERShjb2Rlc3RyW25leHRpXSkgOiAwOwogCiAgICAgICAgIGlmICghaW5fY29uc3RzKSB7CiAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwpAQCAtNDMwLDE0ICs0OTUsMTIgQEAKICAgICAgICAgICAgIC8qIFJlcGxhY2UgVU5BUllfTk9UIFBPUF9KVU1QX0lGX0ZBTFNFCiAgICAgICAgICAgICAgICB3aXRoICAgIFBPUF9KVU1QX0lGX1RSVUUgKi8KICAgICAgICAgICAgIGNhc2UgVU5BUllfTk9UOgotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krMV0gIT0gUE9QX0pVTVBfSUZfRkFMU0UKLSAgICAgICAgICAgICAgICAgICAgfHwgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKzEpOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9UUlVFOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gPSBOT1A7Ci0gICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgaWYgKG5leHRvcCAhPSBQT1BfSlVNUF9JRl9GQUxTRQorICAgICAgICAgICAgICAgICAgICB8fCAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0LCBpICsgMSk7CisgICAgICAgICAgICAgICAgY29kZXN0cltuZXh0aV0gPSBQQUNLT1BBUkcoUE9QX0pVTVBfSUZfVFJVRSwgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBub3QgYSBpcyBiIC0tPiAgYSBpcyBub3QgYgogICAgICAgICAgICAgICAgICAgIG5vdCBhIGluIGIgLS0+ICBhIG5vdCBpbiBiCkBAIC00NDUsNzggKzUwOCw3NiBAQAogICAgICAgICAgICAgICAgICAgIG5vdCBhIG5vdCBpbiBiIC0tPiAgYSBpbiBiCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNhc2UgQ09NUEFSRV9PUDoKLSAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGlmIChqIDwgNiAgfHwgIGogPiA5ICB8fAotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gIT0gVU5BUllfTk9UICB8fAotICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDQpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgKGpeMSkpOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXSA9IE5PUDsKKyAgICAgICAgICAgICAgICBqID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoaiA8IDYgfHwgaiA+IDkgfHwKKyAgICAgICAgICAgICAgICAgICAgbmV4dG9wICE9IFVOQVJZX05PVCB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBBQ0tPUEFSRyhvcGNvZGUsIGpeMSk7CisgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIGkgKyAxLCBuZXh0aSArIDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIExPQURfQ09OU1QgdHJ1ZWNvbnN0Ci0gICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguIFRoaXMgaW1wcm92ZXMKLSAgICAgICAgICAgICAgICAgICAid2hpbGUgMSIgcGVyZm9ybWFuY2UuICovCisgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfRkFMU0UgeHguICBUaGlzIGltcHJvdmVzCisgICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAgKi8KICAgICAgICAgICAgIGNhc2UgTE9BRF9DT05TVDoKICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKLSAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw2KSAgfHwKLSAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBqKSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7Ci0gICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKKyAgICAgICAgICAgICAgICBpZiAobmV4dG9wICE9IFBPUF9KVU1QX0lGX0ZBTFNFICB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIVB5T2JqZWN0X0lzVHJ1ZShQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBnZXRfYXJnKGNvZGVzdHIsIGkpKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgbmV4dGkgKyAxKTsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzIGFuZCBzZXRzCi0gICAgICAgICAgICAgICAgICAgd2hpY2ggYXJlIG9ubHkgdXNlZCBmb3IgImluIiBhbmQgIm5vdCBpbiIgdGVzdHMpLgorICAgICAgICAgICAgICAgIC8qIFRyeSB0byBmb2xkIHR1cGxlcyBvZiBjb25zdGFudHMgKGluY2x1ZGVzIGEgY2FzZSBmb3IgbGlzdHMKKyAgICAgICAgICAgICAgICAgICBhbmQgc2V0cyB3aGljaCBhcmUgb25seSB1c2VkIGZvciAiaW4iIGFuZCAibm90IGluIiB0ZXN0cykuCiAgICAgICAgICAgICAgICAgICAgU2tpcCBvdmVyIEJVSUxEX1NFUU4gMSBVTlBBQ0tfU0VRTiAxLgogICAgICAgICAgICAgICAgICAgIFJlcGxhY2UgQlVJTERfU0VRTiAyIFVOUEFDS19TRVFOIDIgd2l0aCBST1QyLgogICAgICAgICAgICAgICAgICAgIFJlcGxhY2UgQlVJTERfU0VRTiAzIFVOUEFDS19TRVFOIDMgd2l0aCBST1QzIFJPVDIuICovCiAgICAgICAgICAgICBjYXNlIEJVSUxEX1RVUExFOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICAgICAgY2FzZSBCVUlMRF9TRVQ6Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoaiA9PSAwKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oaik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCBqKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJiBqID4gMCAmJiBqIDw9IENPTlNUX1NUQUNLX0xFTigpICYmCi0gICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX1RVUExFICYmCi0gICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzMpKSB8fAotICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgotICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaSszXT09Q09NUEFSRV9PUCAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCs2KSAmJgotICAgICAgICAgICAgICAgICAgICAgIChHRVRBUkcoY29kZXN0cixpKzMpPT02IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgIEdFVEFSRyhjb2Rlc3RyLGkrMyk9PTcpKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgdHVwbGVfb2ZfY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBqLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopKSkgewotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZjb2Rlc3RyW2hdLCBOT1AsIGkgLSBoKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKGopOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBqID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKTsKKyAgICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgQ09OU1RfU1RBQ0tfTEVOKCkgPj0gaikgeworICAgICAgICAgICAgICAgICAgICBoID0gbGFzdG5fY29uc3Rfc3RhcnQoY29kZXN0ciwgb3Bfc3RhcnQsIGopOworICAgICAgICAgICAgICAgICAgICBpZiAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBvcF9zdGFydCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgKChvcGNvZGUgPT0gQlVJTERfTElTVCB8fCBvcGNvZGUgPT0gQlVJTERfU0VUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAoKG5leHRvcD09Q09NUEFSRV9PUCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSA9PSBQeUNtcF9JTiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSA9PSBQeUNtcF9OT1RfSU4pKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0b3AgPT0gR0VUX0lURVIpICYmIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGkgKyAxKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX3R1cGxlX29uX2NvbnN0YW50cyhjb2Rlc3RyLCBoLCBpICsgMSwgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cywgQ09OU1RfU1RBQ0tfTEFTVE4oaiksIGopOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBVTlBBQ0tfU0VRVUVOQ0UgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgfHwKLSAgICAgICAgICAgICAgICAgICAgaiAhPSBHRVRBUkcoY29kZXN0ciwgaSszKSB8fAorICAgICAgICAgICAgICAgIGlmIChuZXh0b3AgIT0gVU5QQUNLX1NFUVVFTkNFICB8fAorICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2Nrcywgb3Bfc3RhcnQsIGkgKyAxKSB8fAorICAgICAgICAgICAgICAgICAgICBqICE9IGdldF9hcmcoY29kZXN0ciwgbmV4dGkpIHx8CiAgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9PSBCVUlMRF9TRVQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChqID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSwgTk9QLCA2KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGogPCAyKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMikgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RXTzsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDUpOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhST1RfVFdPLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0ICsgMSwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGogPT0gMykgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUk9UX1RIUkVFOwotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krMV0gPSBST1RfVFdPOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzIsIE5PUCwgNCk7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnRdID0gUEFDS09QQVJHKFJPVF9USFJFRSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnQgKyAxXSA9IFBBQ0tPUEFSRyhST1RfVFdPLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgZmlsbF9ub3BzKGNvZGVzdHIsIG9wX3N0YXJ0ICsgMiwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBGb2xkIGJpbmFyeSBvcHMgb24gY29uc3RhbnRzLgotICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgTE9BRF9DT05TVCBjMiBCSU5PUCAtLT4gIExPQURfQ09OU1QgYmlub3AoYzEsYzIpICovCisgICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSBMT0FEX0NPTlNUIGMyIEJJTk9QIC0tPiBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKSAqLwogICAgICAgICAgICAgY2FzZSBCSU5BUllfUE9XRVI6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9NVUxUSVBMWToKICAgICAgICAgICAgIGNhc2UgQklOQVJZX1RSVUVfRElWSURFOgpAQCAtNTMwLDM1ICs1OTEsMzQgQEAKICAgICAgICAgICAgIGNhc2UgQklOQVJZX0FORDoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX1hPUjoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX09SOgotICAgICAgICAgICAgICAgIC8qIE5PVEU6IExPQURfQ09OU1QgaXMgc2F2ZWQgYXQgYGktMmAgc2luY2UgaXQgaGFzIGFuIGFyZwotICAgICAgICAgICAgICAgICAgIHdoaWxlIEJJTk9QIGhhc24ndCAqLwotICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDIpKTsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKCZjb2Rlc3RyW2ldLCBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKSkgewotICAgICAgICAgICAgICAgICAgICBpIC09IDI7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMik7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CisgICAgICAgICAgICAgICAgaWYgKENPTlNUX1NUQUNLX0xFTigpIDwgMikKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCAyKTsKKyAgICAgICAgICAgICAgICBpZiAoSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX2Jpbm9wc19vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKDIpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIEZvbGQgdW5hcnkgb3BzIG9uIGNvbnN0YW50cy4KLSAgICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIGMxICBVTkFSWV9PUCAtLT4gICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIHVuYXJ5X29wKGMpICovCisgICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSAgVU5BUllfT1AgLS0+IExPQURfQ09OU1QgdW5hcnlfb3AoYykgKi8KICAgICAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX0lOVkVSVDoKICAgICAgICAgICAgIGNhc2UgVU5BUllfUE9TSVRJVkU6Ci0gICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKDEpOwotICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgMSkpOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzEpICAmJgotICAgICAgICAgICAgICAgICAgICBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpLTNdLCBjb25zdHMsIENPTlNUX1NUQUNLX1RPUCgpKSkgewotICAgICAgICAgICAgICAgICAgICBpIC09IDI7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CisgICAgICAgICAgICAgICAgaWYgKENPTlNUX1NUQUNLX0xFTigpIDwgMSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCAxKTsKKyAgICAgICAgICAgICAgICBpZiAoSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGggPSBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhjb2Rlc3RyLCBoLCBpICsgMSwgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzLCAqQ09OU1RfU1RBQ0tfTEFTVE4oMSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1AoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGgpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01NzMsMzkgKzYzMywzNiBAQAogICAgICAgICAgICAgICAgICAgIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgeSAgIHk6SlVNUF9JRl9GQUxTRV9PUl9QT1AgegogICAgICAgICAgICAgICAgICAgICAgIC0tPiAgeDpKVU1QX0lGX0ZBTFNFX09SX1BPUCB6CiAgICAgICAgICAgICAgICAgICAgeDpKVU1QX0lGX0ZBTFNFX09SX1BPUCB5ICAgeTpKVU1QX0lGX1RSVUVfT1JfUE9QIHoKLSAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6UE9QX0pVTVBfSUZfRkFMU0UgeSszCi0gICAgICAgICAgICAgICAgICAgd2hlcmUgeSszIGlzIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIHNlY29uZCB0ZXN0LgorICAgICAgICAgICAgICAgICAgICAgIC0tPiAgeDpQT1BfSlVNUF9JRl9GQUxTRSB5KzEKKyAgICAgICAgICAgICAgICAgICB3aGVyZSB5KzEgaXMgdGhlIGluc3RydWN0aW9uIGZvbGxvd2luZyB0aGUgc2Vjb25kIHRlc3QuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9GQUxTRV9PUl9QT1A6CiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfVFJVRV9PUl9QT1A6Ci0gICAgICAgICAgICAgICAgdGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBqID0gY29kZXN0clt0Z3RdOworICAgICAgICAgICAgICAgIGggPSBnZXRfYXJnKGNvZGVzdHIsIGkpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CisgICAgICAgICAgICAgICAgdGd0ID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKKworICAgICAgICAgICAgICAgIGogPSBfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSk7CiAgICAgICAgICAgICAgICAgaWYgKENPTkRJVElPTkFMX0pVTVAoaikpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogTk9URTogYWxsIHBvc3NpYmxlIGp1bXBzIGhlcmUgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgIGFic29sdXRlISAqLworICAgICAgICAgICAgICAgICAgICAvKiBOT1RFOiBhbGwgcG9zc2libGUganVtcHMgaGVyZSBhcmUgYWJzb2x1dGUuICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChKVU1QU19PTl9UUlVFKGopID09IEpVTVBTX09OX1RSVUUob3Bjb2RlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlY29uZCBqdW1wIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2VuIGlmZiB0aGUgZmlyc3QgaXMuICovCi0gICAgICAgICAgICAgICAgICAgICAgICB0Z3R0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgY3VycmVudCBvcGNvZGUgaW5oZXJpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0cyB0YXJnZXQncyBzdGFjayBiZWhhdmlvdXIgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBqOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIHRndHRndCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlb3B0aW1pemVfY3VycmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCB3aWxsIGJlIHRha2VuIGlmZiB0aGUgZmlyc3QgaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgY3VycmVudCBvcGNvZGUgaW5oZXJpdHMgaXRzIHRhcmdldCdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayBlZmZlY3QgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzZXRfYXJnKGNvZGVzdHIsIGksIGdldF9hcmcoY29kZXN0ciwgdGd0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgaXMgbm90IHRha2VuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgZmlyc3QgaXMgKHNvIGp1bXAgcGFzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQpLCBhbmQgYWxsIGNvbmRpdGlvbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wcyBwb3AgdGhlaXIgYXJndW1lbnQgd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhleSdyZSBub3QgdGFrZW4gKHNvIGNoYW5nZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpcnN0IGp1bXAgdG8gcG9wIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnQgd2hlbiBpdCdzIHRha2VuKS4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChKVU1QU19PTl9UUlVFKG9wY29kZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBPUF9KVU1QX0lGX1RSVUU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFBPUF9KVU1QX0lGX0ZBTFNFOwotICAgICAgICAgICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksICh0Z3QgKyAzKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlb3B0aW1pemVfY3VycmVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCBpcyBub3QgdGFrZW4gaWYgdGhlIGZpcnN0IGlzIChzbworICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCBwYXN0IGl0KSwgYW5kIGFsbCBjb25kaXRpb25hbCBqdW1wcyBwb3AgdGhlaXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHdoZW4gdGhleSdyZSBub3QgdGFrZW4gKHNvIGNoYW5nZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0IGp1bXAgdG8gcG9wIGl0cyBhcmd1bWVudCB3aGVuIGl0J3MgdGFrZW4pLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHNldF9hcmcoY29kZXN0ciwgaSwgKHRndCArIDEpICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG9wY29kZSA9PSBKVU1QX0lGX1RSVUVfT1JfUE9QID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQT1BfSlVNUF9JRl9UUlVFIDogUE9QX0pVTVBfSUZfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoaCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0aSA9IGg7CisgICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW25leHRpXSA9IFBBQ0tPUEFSRyhqLCBfUHlfT1BBUkcoY29kZXN0cltuZXh0aV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8qIEludGVudGlvbmFsIGZhbGx0aHJvdWdoICovCkBAIC02MjIsNzMgKzY3OSw3NCBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgotICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgdGd0ID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKICAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIEpVTVBfKiB0byBhIFJFVFVSTiBpbnRvIGp1c3QgYSBSRVRVUk4gKi8KICAgICAgICAgICAgICAgICBpZiAoVU5DT05ESVRJT05BTF9KVU1QKG9wY29kZSkgJiYKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0clt0Z3RdID09IFJFVFVSTl9WQUxVRSkgewotICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUkVUVVJOX1ZBTFVFOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgMik7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSkgPT0gUkVUVVJOX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbb3Bfc3RhcnRdID0gUEFDS09QQVJHKFJFVFVSTl9WQUxVRSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDEsIGkgKyAxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChfUHlfT1BDT0RFKGNvZGVzdHJbdGd0XSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gSlVNUF9GT1JXQVJEKSB7IC8qIEpNUF9BQlMgY2FuIGdvIGJhY2t3YXJkcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlID0gSlVNUF9BQlNPTFVURTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghQUJTT0xVVEVfSlVNUChvcGNvZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKFB5X3NzaXplX3QpaiA8IGkgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAvKiBObyBiYWNrd2FyZCByZWxhdGl2ZSBqdW1wcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaiAtPSBpICsgMTsgICAgICAgICAgLyogQ2FsYyByZWxhdGl2ZSBqdW1wIGFkZHIgKi8KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBqICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgICAgICBjb3B5X29wX2FyZyhjb2Rlc3RyLCBvcF9zdGFydCwgb3Bjb2RlLCBqLCBpICsgMSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghVU5DT05ESVRJT05BTF9KVU1QKGNvZGVzdHJbdGd0XSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHRndHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgdGd0KTsKLSAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEpVTVBfRk9SV0FSRCkgLyogSk1QX0FCUyBjYW4gZ28gYmFja3dhcmRzICovCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IEpVTVBfQUJTT0xVVEU7Ci0gICAgICAgICAgICAgICAgaWYgKCFBQlNPTFVURV9KVU1QKG9wY29kZSkpCi0gICAgICAgICAgICAgICAgICAgIHRndHRndCAtPSBpICsgMzsgICAgIC8qIENhbGMgcmVsYXRpdmUganVtcCBhZGRyICovCi0gICAgICAgICAgICAgICAgaWYgKHRndHRndCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm8gYmFja3dhcmQgcmVsYXRpdmUganVtcHMgKi8KLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IG9wY29kZTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgdGd0dGd0KTsKICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBFWFRFTkRFRF9BUkc6Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBNQUtFX0ZVTkNUSU9OKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7Ci0gICAgICAgICAgICAgICAgLyogZG9uJ3QgdmlzaXQgTUFLRV9GVU5DVElPTiBhcyBHRVRBUkcgd2lsbCBiZSB3cm9uZyAqLwotICAgICAgICAgICAgICAgIGkgKz0gMzsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgIC8qIFJlcGxhY2UgUkVUVVJOIExPQURfQ09OU1QgTm9uZSBSRVRVUk4gd2l0aCBqdXN0IFJFVFVSTiAqLwotICAgICAgICAgICAgICAgIC8qIFJlbW92ZSB1bnJlYWNoYWJsZSBKVU1QcyBhZnRlciBSRVRVUk4gKi8KKyAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdW5yZWFjaGFibGUgb3BzIGFmdGVyIFJFVFVSTiAqLwogICAgICAgICAgICAgY2FzZSBSRVRVUk5fVkFMVUU6Ci0gICAgICAgICAgICAgICAgaWYgKGkrNCA+PSBjb2RlbGVuKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzRdID09IFJFVFVSTl9WQUxVRSAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLGksNSkpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA0KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChVTkNPTkRJVElPTkFMX0pVTVAoY29kZXN0cltpKzFdKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDMpOworICAgICAgICAgICAgICAgIGggPSBpICsgMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaCA8IGNvZGVsZW4gJiYgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaSwgaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaCA+IGkgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgaCk7CisgICAgICAgICAgICAgICAgICAgIG5leHRpID0gZmluZF9vcChjb2Rlc3RyLCBoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBGaXh1cCBsaW5lbm90YWIgKi8KLSAgICBmb3IgKGk9MCwgbm9wcz0wIDsgaTxjb2RlbGVuIDsgaSArPSBDT0RFU0laRShjb2Rlc3RyW2ldKSkgeworICAgIC8qIEZpeHVwIGxub3RhYiAqLworICAgIGZvciAoaSA9IDAsIG5vcHMgPSAwOyBpIDwgY29kZWxlbjsgaSsrKSB7CiAgICAgICAgIGFzc2VydChpIC0gbm9wcyA8PSBJTlRfTUFYKTsKLSAgICAgICAgYWRkcm1hcFtpXSA9IChpbnQpKGkgLSBub3BzKTsKLSAgICAgICAgaWYgKGNvZGVzdHJbaV0gPT0gTk9QKQorICAgICAgICAvKiBvcmlnaW5hbCBjb2RlIG9mZnNldCA9PiBuZXcgY29kZSBvZmZzZXQgKi8KKyAgICAgICAgYmxvY2tzW2ldID0gaSAtIG5vcHM7CisgICAgICAgIGlmIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IE5PUCkKICAgICAgICAgICAgIG5vcHMrKzsKICAgICB9Ci0gICAgY3VtX29yaWdfbGluZSA9IDA7Ci0gICAgbGFzdF9saW5lID0gMDsKKyAgICBjdW1fb3JpZ19vZmZzZXQgPSAwOworICAgIGxhc3Rfb2Zmc2V0ID0gMDsKICAgICBmb3IgKGk9MCA7IGkgPCB0YWJzaXogOyBpKz0yKSB7Ci0gICAgICAgIGN1bV9vcmlnX2xpbmUgKz0gbGluZW5vW2ldOwotICAgICAgICBuZXdfbGluZSA9IGFkZHJtYXBbY3VtX29yaWdfbGluZV07Ci0gICAgICAgIGFzc2VydCAobmV3X2xpbmUgLSBsYXN0X2xpbmUgPCAyNTUpOwotICAgICAgICBsaW5lbm9baV0gPSgodW5zaWduZWQgY2hhcikobmV3X2xpbmUgLSBsYXN0X2xpbmUpKTsKLSAgICAgICAgbGFzdF9saW5lID0gbmV3X2xpbmU7CisgICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXRfZGVsdGEsIG5ld19vZmZzZXQ7CisgICAgICAgIGN1bV9vcmlnX29mZnNldCArPSBsbm90YWJbaV07CisgICAgICAgIGFzc2VydChjdW1fb3JpZ19vZmZzZXQgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICAgICAgbmV3X29mZnNldCA9IGJsb2Nrc1tjdW1fb3JpZ19vZmZzZXQgLyBzaXplb2YoX1B5X0NPREVVTklUKV0gKgorICAgICAgICAgICAgICAgIHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICBvZmZzZXRfZGVsdGEgPSBuZXdfb2Zmc2V0IC0gbGFzdF9vZmZzZXQ7CisgICAgICAgIGFzc2VydChvZmZzZXRfZGVsdGEgPD0gMjU1KTsKKyAgICAgICAgbG5vdGFiW2ldID0gKHVuc2lnbmVkIGNoYXIpb2Zmc2V0X2RlbHRhOworICAgICAgICBsYXN0X29mZnNldCA9IG5ld19vZmZzZXQ7CiAgICAgfQogCiAgICAgLyogUmVtb3ZlIE5PUHMgYW5kIGZpeHVwIGp1bXAgdGFyZ2V0cyAqLwotICAgIGZvciAoaT0wLCBoPTAgOyBpPGNvZGVsZW4gOyApIHsKLSAgICAgICAgb3Bjb2RlID0gY29kZXN0cltpXTsKKyAgICBmb3IgKG9wX3N0YXJ0ID0gaSA9IGggPSAwOyBpIDwgY29kZWxlbjsgaSsrLCBvcF9zdGFydCA9IGkpIHsKKyAgICAgICAgaiA9IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICAgICAgd2hpbGUgKF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICBpKys7CisgICAgICAgICAgICBqID0gajw8OCB8IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICAgICAgfQorICAgICAgICBvcGNvZGUgPSBfUHlfT1BDT0RFKGNvZGVzdHJbaV0pOwogICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewotICAgICAgICAgICAgY2FzZSBOT1A6Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY2FzZSBOT1A6Y29udGludWU7CiAKICAgICAgICAgICAgIGNhc2UgSlVNUF9BQlNPTFVURToKICAgICAgICAgICAgIGNhc2UgQ09OVElOVUVfTE9PUDoKQEAgLTY5Niw4ICs3NTQsNyBAQAogICAgICAgICAgICAgY2FzZSBQT1BfSlVNUF9JRl9UUlVFOgogICAgICAgICAgICAgY2FzZSBKVU1QX0lGX0ZBTFNFX09SX1BPUDoKICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9UUlVFX09SX1BPUDoKLSAgICAgICAgICAgICAgICBqID0gYWRkcm1hcFtHRVRBUkcoY29kZXN0ciwgaSldOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKKyAgICAgICAgICAgICAgICBqID0gYmxvY2tzW2ogLyBzaXplb2YoX1B5X0NPREVVTklUKV0gKiBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBGT1JfSVRFUjoKQEAgLTcwNywzNCArNzY0LDMyIEBACiAgICAgICAgICAgICBjYXNlIFNFVFVQX0ZJTkFMTFk6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX1dJVEg6CiAgICAgICAgICAgICBjYXNlIFNFVFVQX0FTWU5DX1dJVEg6Ci0gICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpICsgaSArIDNdIC0gYWRkcm1hcFtpXSAtIDM7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIGopOworICAgICAgICAgICAgICAgIGogPSBibG9ja3NbaiAvIHNpemVvZihfUHlfQ09ERVVOSVQpICsgaSArIDFdIC0gYmxvY2tzW2ldIC0gMTsKKyAgICAgICAgICAgICAgICBqICo9IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGFkaiA9IENPREVTSVpFKG9wY29kZSk7Ci0gICAgICAgIHdoaWxlIChhZGotLSkKLSAgICAgICAgICAgIGNvZGVzdHJbaCsrXSA9IGNvZGVzdHJbaSsrXTsKKyAgICAgICAgbmV4dGkgPSBpIC0gb3Bfc3RhcnQgKyAxOworICAgICAgICBpZiAoaW5zdHJzaXplKGopID4gbmV4dGkpCisgICAgICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgICAgIC8qIElmIGluc3Ryc2l6ZShqKSA8IG5leHRpLCB3ZSdsbCBlbWl0IEVYVEVOREVEX0FSRyAwICovCisgICAgICAgIHdyaXRlX29wX2FyZyhjb2Rlc3RyICsgaCwgb3Bjb2RlLCBqLCBuZXh0aSk7CisgICAgICAgIGggKz0gbmV4dGk7CiAgICAgfQotICAgIGFzc2VydChoICsgbm9wcyA9PSBjb2RlbGVuKTsKKyAgICBhc3NlcnQoaCArIChQeV9zc2l6ZV90KW5vcHMgPT0gY29kZWxlbik7CiAKLSAgICBjb2RlID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKWNvZGVzdHIsIGgpOwogICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwotICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7Ci0gICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CisgICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoICogc2l6ZW9mKF9QeV9DT0RFVU5JVCkpOworICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgcmV0dXJuIGNvZGU7CiAKICBleGl0RXJyb3I6CiAgICAgY29kZSA9IE5VTEw7CiAKICBleGl0VW5jaGFuZ2VkOgotICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOwotICAgIGlmIChibG9ja3MgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRnJlZShibG9ja3MpOwotICAgIGlmIChhZGRybWFwICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoYWRkcm1hcCk7Ci0gICAgaWYgKGNvZGVzdHIgIT0gTlVMTCkKLSAgICAgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICBQeV9YSU5DUkVGKGNvZGUpOworICAgIENPTlNUX1NUQUNLX0RFTEVURSgpOworICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKKyAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIHJldHVybiBjb2RlOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5aGFzaC5jIGIvUHl0aG9uL3B5aGFzaC5jCmluZGV4IDk3Y2I1NDcuLjU3YTJkYTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWhhc2guYworKysgYi9QeXRob24vcHloYXNoLmMKQEAgLTMxOCw0MCArMzE4LDM3IEBACiAKICBNb2RpZmllZCBmb3IgUHl0aG9uIGJ5IENocmlzdGlhbiBIZWltZXM6CiAgICAgLSBDODkgLyBNU1ZDIGNvbXBhdGliaWxpdHkKLSAgICAtIFBZX1VJTlQ2NF9ULCBQWV9VSU5UMzJfVCBhbmQgUFlfVUlOVDhfVAogICAgIC0gX3JvdGw2NCgpIG9uIFdpbmRvd3MKICAgICAtIGxldG9oNjQoKSBmYWxsYmFjawogKi8KIAotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFBZX1VJTlQ4X1Q7Ci0KIC8qIGJ5dGUgc3dhcCBsaXR0bGUgZW5kaWFuIHRvIGhvc3QgZW5kaWFuCiAgKiBFbmRpYW4gY29udmVyc2lvbiBub3Qgb25seSBlbnN1cmVzIHRoYXQgdGhlIGhhc2ggZnVuY3Rpb24gcmV0dXJucyB0aGUgc2FtZQogICogdmFsdWUgb24gYWxsIHBsYXRmb3Jtcy4gSXQgaXMgYWxzbyByZXF1aXJlZCB0byBmb3IgYSBnb29kIGRpc3BlcnNpb24gb2YKICAqIHRoZSBoYXNoIHZhbHVlcycgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cy4KICAqLwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KLSMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKFBZX1VJTlQ2NF9UKSh4KSkKKyMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKHVpbnQ2NF90KSh4KSkKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogIyAgZGVmaW5lIF9sZTY0dG9oKHgpIE9TU3dhcExpdHRsZVRvSG9zdEludDY0KHgpCiAjZWxpZiBkZWZpbmVkKEhBVkVfTEVUT0g2NCkKICMgIGRlZmluZSBfbGU2NHRvaCh4KSBsZTY0dG9oKHgpCiAjZWxzZQotIyAgZGVmaW5lIF9sZTY0dG9oKHgpICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA1NikgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpIDw8IDQwKSAmIDB4ZmYwMDAwMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCAyNCkgJiAweGZmMDAwMDAwMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpIDw8IDgpICAmIDB4ZmYwMDAwMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpID4+IDgpICAmIDB4ZmYwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiAyNCkgJiAweGZmMDAwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKCgoUFlfVUlOVDY0X1QpKHgpID4+IDQwKSAmIDB4ZmYwMFVMTCkgfCBcCi0gICAgICAgICAgICAgICAgICAgICAgKChQWV9VSU5UNjRfVCkoeCkgID4+IDU2KSkKKyMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKCh1aW50NjRfdCkoeCkgPDwgNTYpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA8PCA0MCkgJiAweGZmMDAwMDAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgMjQpICYgMHhmZjAwMDAwMDAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA8PCA4KSAgJiAweGZmMDAwMDAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA+PiA4KSAgJiAweGZmMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gMjQpICYgMHhmZjAwMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgoKHVpbnQ2NF90KSh4KSA+PiA0MCkgJiAweGZmMDBVTEwpIHwgXAorICAgICAgICAgICAgICAgICAgICAgICgodWludDY0X3QpKHgpICA+PiA1NikpCiAjZW5kaWYKIAogCiAjaWZkZWYgX01TQ19WRVIKICMgIGRlZmluZSBST1RBVEUoeCwgYikgIF9yb3RsNjQoeCwgYikKICNlbHNlCi0jICBkZWZpbmUgUk9UQVRFKHgsIGIpIChQWV9VSU5UNjRfVCkoICgoeCkgPDwgKGIpKSB8ICggKHgpID4+ICg2NCAtIChiKSkpICkKKyMgIGRlZmluZSBST1RBVEUoeCwgYikgKHVpbnQ2NF90KSggKCh4KSA8PCAoYikpIHwgKCAoeCkgPj4gKDY0IC0gKGIpKSkgKQogI2VuZGlmCiAKICNkZWZpbmUgSEFMRl9ST1VORChhLGIsYyxkLHMsdCkgICAgICAgICBcCkBAIC0zNjksMjIgKzM2NiwyMiBAQAogCiBzdGF0aWMgUHlfaGFzaF90CiBzaXBoYXNoMjQoY29uc3Qgdm9pZCAqc3JjLCBQeV9zc2l6ZV90IHNyY19zeikgewotICAgIFBZX1VJTlQ2NF9UIGswID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMCk7Ci0gICAgUFlfVUlOVDY0X1QgazEgPSBfbGU2NHRvaChfUHlfSGFzaFNlY3JldC5zaXBoYXNoLmsxKTsKLSAgICBQWV9VSU5UNjRfVCBiID0gKFBZX1VJTlQ2NF9UKXNyY19zeiA8PCA1NjsKLSAgICBjb25zdCBQWV9VSU5UNjRfVCAqaW4gPSAoUFlfVUlOVDY0X1QqKXNyYzsKKyAgICB1aW50NjRfdCBrMCA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazApOworICAgIHVpbnQ2NF90IGsxID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMSk7CisgICAgdWludDY0X3QgYiA9ICh1aW50NjRfdClzcmNfc3ogPDwgNTY7CisgICAgY29uc3QgdWludDY0X3QgKmluID0gKHVpbnQ2NF90KilzcmM7CiAKLSAgICBQWV9VSU5UNjRfVCB2MCA9IGswIF4gMHg3MzZmNmQ2NTcwNzM2NTc1VUxMOwotICAgIFBZX1VJTlQ2NF9UIHYxID0gazEgXiAweDY0NmY3MjYxNmU2NDZmNmRVTEw7Ci0gICAgUFlfVUlOVDY0X1QgdjIgPSBrMCBeIDB4NmM3OTY3NjU2ZTY1NzI2MVVMTDsKLSAgICBQWV9VSU5UNjRfVCB2MyA9IGsxIF4gMHg3NDY1NjQ2Mjc5NzQ2NTczVUxMOworICAgIHVpbnQ2NF90IHYwID0gazAgXiAweDczNmY2ZDY1NzA3MzY1NzVVTEw7CisgICAgdWludDY0X3QgdjEgPSBrMSBeIDB4NjQ2ZjcyNjE2ZTY0NmY2ZFVMTDsKKyAgICB1aW50NjRfdCB2MiA9IGswIF4gMHg2Yzc5Njc2NTZlNjU3MjYxVUxMOworICAgIHVpbnQ2NF90IHYzID0gazEgXiAweDc0NjU2NDYyNzk3NDY1NzNVTEw7CiAKLSAgICBQWV9VSU5UNjRfVCB0OwotICAgIFBZX1VJTlQ4X1QgKnB0OwotICAgIFBZX1VJTlQ4X1QgKm07CisgICAgdWludDY0X3QgdDsKKyAgICB1aW50OF90ICpwdDsKKyAgICB1aW50OF90ICptOwogCiAgICAgd2hpbGUgKHNyY19zeiA+PSA4KSB7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIG1pID0gX2xlNjR0b2goKmluKTsKKyAgICAgICAgdWludDY0X3QgbWkgPSBfbGU2NHRvaCgqaW4pOwogICAgICAgICBpbiArPSAxOwogICAgICAgICBzcmNfc3ogLT0gODsKICAgICAgICAgdjMgXj0gbWk7CkBAIC0zOTMsMTMgKzM5MCwxMyBAQAogICAgIH0KIAogICAgIHQgPSAwOwotICAgIHB0ID0gKFBZX1VJTlQ4X1QgKikmdDsKLSAgICBtID0gKFBZX1VJTlQ4X1QgKilpbjsKKyAgICBwdCA9ICh1aW50OF90ICopJnQ7CisgICAgbSA9ICh1aW50OF90ICopaW47CiAgICAgc3dpdGNoIChzcmNfc3opIHsKICAgICAgICAgY2FzZSA3OiBwdFs2XSA9IG1bNl07CiAgICAgICAgIGNhc2UgNjogcHRbNV0gPSBtWzVdOwogICAgICAgICBjYXNlIDU6IHB0WzRdID0gbVs0XTsKLSAgICAgICAgY2FzZSA0OiBQeV9NRU1DUFkocHQsIG0sIHNpemVvZihQWV9VSU5UMzJfVCkpOyBicmVhazsKKyAgICAgICAgY2FzZSA0OiBtZW1jcHkocHQsIG0sIHNpemVvZih1aW50MzJfdCkpOyBicmVhazsKICAgICAgICAgY2FzZSAzOiBwdFsyXSA9IG1bMl07CiAgICAgICAgIGNhc2UgMjogcHRbMV0gPSBtWzFdOwogICAgICAgICBjYXNlIDE6IHB0WzBdID0gbVswXTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weWxpZmVjeWNsZS5jIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKaW5kZXggY2U1Mjk5MC4uNzFmMjNkZCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKKysrIGIvUHl0aG9uL3B5bGlmZWN5Y2xlLmMKQEAgLTMxLDYgKzMxLDkgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjdW5kZWYgQllURQogI2luY2x1ZGUgIndpbmRvd3MuaCIKKworZXh0ZXJuIFB5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyNkZWZpbmUgUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKG9wKSAoUHlPYmplY3RfVHlwZUNoZWNrKChvcCksICZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSkpCiAjZW5kaWYKIAogX1B5X0lERU5USUZJRVIoZmx1c2gpOwpAQCAtOTAsNiArOTMsMTAgQEAKIGludCBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnID0gMDsgLyogVW5idWZmZXJlZCBiaW5hcnkgc3Rke2luLG91dCxlcnJ9ICovCiBpbnQgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMDsgLyogZm9yIC1SIGFuZCBQWVRIT05IQVNIU0VFRCAqLwogaW50IFB5X0lzb2xhdGVkRmxhZyA9IDA7IC8qIGZvciAtSSwgaXNvbGF0ZSBmcm9tIHVzZXIncyBlbnYgKi8KKyNpZmRlZiBNU19XSU5ET1dTCitpbnQgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gMDsgLyogVXNlcyBtYmNzIGluc3RlYWQgb2YgdXRmLTggKi8KK2ludCBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gMDsgLyogVXNlcyBGaWxlSU8gaW5zdGVhZCBvZiBXaW5kb3dzQ29uc29sZUlPICovCisjZW5kaWYKIAogUHlUaHJlYWRTdGF0ZSAqX1B5X0ZpbmFsaXppbmcgPSBOVUxMOwogCkBAIC0xNTEsMTEgKzE1OCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0zOwogICAgICAgICB9CiAgICAgfQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoX1B5X1N0YW5kYXJkU3RyZWFtRW5jb2RpbmcpIHsKKyAgICAgICAgLyogT3ZlcnJpZGluZyB0aGUgc3RyZWFtIGVuY29kaW5nIGltcGxpZXMgbGVnYWN5IHN0cmVhbXMgKi8KKyAgICAgICAgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDE7CisgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplKCkuICBEb24ndAotICAgY2FsbCB0aGlzIHR3aWNlIHdpdGhvdXQgYW4gaW50ZXJ2ZW5pbmcgUHlfRmluYWxpemUoKSBjYWxsLiAgV2hlbgorLyogR2xvYmFsIGluaXRpYWxpemF0aW9ucy4gIENhbiBiZSB1bmRvbmUgYnkgUHlfRmluYWxpemVFeCgpLiAgRG9uJ3QKKyAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplRXgoKSBjYWxsLiAgV2hlbgogICAgaW5pdGlhbGl6YXRpb25zIGZhaWwsIGEgZmF0YWwgZXJyb3IgaXMgaXNzdWVkIGFuZCB0aGUgZnVuY3Rpb24gZG9lcwogICAgbm90IHJldHVybi4gIE9uIHJldHVybiwgdGhlIGZpcnN0IHRocmVhZCBhbmQgaW50ZXJwcmV0ZXIgc3RhdGUgaGF2ZQogICAgYmVlbiBjcmVhdGVkLgpAQCAtMjIzLDYgKzIzNiw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXNldCk7CisjZWxpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorICAgIHJldHVybiBnZXRfY29kZWNfbmFtZSgiVVRGLTgiKTsKICNlbHNlCiAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTI1Miw2ICsyNjcsMTEgQEAKICAgICBpbnRlcnAtPmltcG9ydGxpYiA9IGltcG9ydGxpYjsKICAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRsaWIpOwogCisgICAgaW50ZXJwLT5pbXBvcnRfZnVuYyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGludGVycC0+YnVpbHRpbnMsICJfX2ltcG9ydF9fIik7CisgICAgaWYgKGludGVycC0+aW1wb3J0X2Z1bmMgPT0gTlVMTCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogX19pbXBvcnRfXyBub3QgZm91bmQiKTsKKyAgICBQeV9JTkNSRUYoaW50ZXJwLT5pbXBvcnRfZnVuYyk7CisKICAgICAvKiBJbXBvcnQgdGhlIF9pbXAgbW9kdWxlICovCiAgICAgaW1wbW9kID0gUHlJbml0X2ltcCgpOwogICAgIGlmIChpbXBtb2QgPT0gTlVMTCkgewpAQCAtMjk1LDcgKzMxNSw3IEBACiAgICAgaW5pdGlhbGl6ZWQgPSAxOwogICAgIF9QeV9GaW5hbGl6aW5nID0gTlVMTDsKIAotI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKEhBVkVfU0VUTE9DQUxFKQorI2lmZGVmIEhBVkVfU0VUTE9DQUxFCiAgICAgLyogU2V0IHVwIHRoZSBMQ19DVFlQRSBsb2NhbGUsIHNvIHdlIGNhbiBvYnRhaW4KICAgICAgICB0aGUgbG9jYWxlJ3MgY2hhcnNldCB3aXRob3V0IGhhdmluZyB0byBzd2l0Y2gKICAgICAgICBsb2NhbGVzLiAqLwpAQCAtMzE0LDYgKzMzNCwxMiBAQAogICAgICAgIGNoZWNrIGl0cyB2YWx1ZSBmdXJ0aGVyLiAqLwogICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OSEFTSFNFRUQiKSkgJiYgKnAgIT0gJ1wwJykKICAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gYWRkX2ZsYWcoUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnLCBwKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKChwID0gUHlfR0VURU5WKCJQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcgPSBhZGRfZmxhZyhQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcsIHApOworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OTEVHQUNZV0lORE9XU1NURElPIikpICYmICpwICE9ICdcMCcpCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgPSBhZGRfZmxhZyhQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnLCBwKTsKKyNlbmRpZgogCiAgICAgX1B5UmFuZG9tX0luaXQoKTsKIApAQCAtMzI3LDExICszNTMsMTEgQEAKICAgICAodm9pZCkgUHlUaHJlYWRTdGF0ZV9Td2FwKHRzdGF0ZSk7CiAKICNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFdlIGNhbid0IGNhbGwgX1B5RXZhbF9GaW5pVGhyZWFkcygpIGluIFB5X0ZpbmFsaXplIGJlY2F1c2UKKyAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZUV4IGJlY2F1c2UKICAgICAgICBkZXN0cm95aW5nIHRoZSBHSUwgbWlnaHQgZmFpbCB3aGVuIGl0IGlzIGJlaW5nIHJlZmVyZW5jZWQgZnJvbQogICAgICAgIGFub3RoZXIgcnVubmluZyB0aHJlYWQgKHNlZSBpc3N1ZSAjOTkwMSkuCiAgICAgICAgSW5zdGVhZCB3ZSBkZXN0cm95IHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgR0lMIGhlcmUsIHdoaWNoIGVuc3VyZXMKLSAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZSBtdWx0aXBsZSB0aW1lcy4gKi8KKyAgICAgICB0aGF0IHdlIGNhbiBjYWxsIFB5X0luaXRpYWxpemUgLyBQeV9GaW5hbGl6ZUV4IG11bHRpcGxlIHRpbWVzLiAqLwogICAgIF9QeUV2YWxfRmluaVRocmVhZHMoKTsKIAogICAgIC8qIEF1dG8tdGhyZWFkLXN0YXRlIEFQSSAqLwpAQCAtNDc3LDI4ICs1MDMsMzUgQEAKICAgICByZXR1cm4gciA+IDA7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiBmbHVzaF9zdGRfZmlsZXModm9pZCkKIHsKICAgICBQeU9iamVjdCAqZm91dCA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIFB5T2JqZWN0ICpmZXJyID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBpbnQgc3RhdHVzID0gMDsKIAogICAgIGlmIChmb3V0ICE9IE5VTEwgJiYgZm91dCAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmb3V0KSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZvdXQpOworICAgICAgICAgICAgc3RhdHVzID0gLTE7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCiAgICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgc3RhdHVzID0gLTE7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKIH0KIAogLyogVW5kbyB0aGUgZWZmZWN0IG9mIFB5X0luaXRpYWxpemUoKS4KQEAgLTUxNSwxNCArNTQ4LDE1IEBACiAKICovCiAKLXZvaWQKLVB5X0ZpbmFsaXplKHZvaWQpCitpbnQKK1B5X0ZpbmFsaXplRXgodm9pZCkKIHsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBzdGF0dXM7CiAKICAgICB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24oKTsKIApAQCAtNTQ3LDcgKzU4MSw5IEBACiAgICAgaW5pdGlhbGl6ZWQgPSAwOwogCiAgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOworICAgIGlmIChmbHVzaF9zdGRfZmlsZXMoKSA8IDApIHsKKyAgICAgICAgc3RhdHVzID0gLTE7CisgICAgfQogCiAgICAgLyogRGlzYWJsZSBzaWduYWwgaGFuZGxpbmcgKi8KICAgICBQeU9TX0ZpbmlJbnRlcnJ1cHRzKCk7CkBAIC01NjQsMTkgKzYwMCwyMSBAQAogICAgICAqIFhYWCBidXQgSSdtIHVuY2xlYXIgb24gZXhhY3RseSBob3cgdGhhdCBvbmUgaGFwcGVucy4gIEluIGFueSBjYXNlLAogICAgICAqIFhYWCBJIGhhdmVuJ3Qgc2VlbiBhIHJlYWwtbGlmZSByZXBvcnQgb2YgZWl0aGVyIG9mIHRoZXNlLgogICAgICAqLwotICAgIFB5R0NfQ29sbGVjdCgpOworICAgIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKTsKICNpZmRlZiBDT1VOVF9BTExPQ1MKICAgICAvKiBXaXRoIENPVU5UX0FMTE9DUywgaXQgaGVscHMgdG8gcnVuIEdDIG11bHRpcGxlIHRpbWVzOgogICAgICAgIGVhY2ggY29sbGVjdGlvbiBtaWdodCByZWxlYXNlIHNvbWUgdHlwZXMgZnJvbSB0aGUgdHlwZQogICAgICAgIGxpc3QsIHNvIHRoZXkgYmVjb21lIGdhcmJhZ2UuICovCi0gICAgd2hpbGUgKFB5R0NfQ29sbGVjdCgpID4gMCkKKyAgICB3aGlsZSAoX1B5R0NfQ29sbGVjdElmRW5hYmxlZCgpID4gMCkKICAgICAgICAgLyogbm90aGluZyAqLzsKICNlbmRpZgogICAgIC8qIERlc3Ryb3kgYWxsIG1vZHVsZXMgKi8KICAgICBQeUltcG9ydF9DbGVhbnVwKCk7CiAKICAgICAvKiBGbHVzaCBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIChhZ2FpbiwgaW4gY2FzZSBtb3JlIHdhcyBwcmludGVkKSAqLwotICAgIGZsdXNoX3N0ZF9maWxlcygpOworICAgIGlmIChmbHVzaF9zdGRfZmlsZXMoKSA8IDApIHsKKyAgICAgICAgc3RhdHVzID0gLTE7CisgICAgfQogCiAgICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQogICAgICAqIGNsYXNzIGRlZmluaXRpb25zLCBmb3IgZXhhbXBsZS4KQEAgLTU5NCw3ICs2MzIsNyBAQAogICAgICAqIFhYWCBQeXRob24gY29kZSBnZXR0aW5nIGNhbGxlZC4KICAgICAgKi8KICNpZiAwCi0gICAgUHlHQ19Db2xsZWN0KCk7CisgICAgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCgpOwogI2VuZGlmCiAKICAgICAvKiBEaXNhYmxlIHRyYWNlbWFsbG9jIGFmdGVyIGFsbCBQeXRob24gb2JqZWN0cyBoYXZlIGJlZW4gZGVzdHJveWVkLApAQCAtNjEyLDcgKzY1MCw3IEBACiAKICAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KICNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICBkdW1wX2NvdW50cyhzdGRvdXQpOworICAgIGR1bXBfY291bnRzKHN0ZGVycik7CiAjZW5kaWYKICAgICAvKiBkdW1wIGhhc2ggc3RhdHMgKi8KICAgICBfUHlIYXNoX0ZpbmkoKTsKQEAgLTY1NSw2ICs2OTMsOCBAQAogICAgIFB5U2xpY2VfRmluaSgpOwogICAgIF9QeUdDX0ZpbmkoKTsKICAgICBfUHlSYW5kb21fRmluaSgpOworICAgIF9QeUFyZ19GaW5pKCk7CisgICAgUHlBc3luY0dlbl9GaW5pKCk7CiAKICAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KICAgICBfUHlVbmljb2RlX0ZpbmkoKTsKQEAgLTY4MCw2ICs3MjAsNyBAQAogCiAgICAgLyogRGVsZXRlIGN1cnJlbnQgdGhyZWFkLiBBZnRlciB0aGlzLCBtYW55IEMgQVBJIGNhbGxzIGJlY29tZSBjcmFzaHkuICovCiAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKE5VTEwpOworCiAgICAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShpbnRlcnApOwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwpAQCAtNjkwLDEyICs3MzEsMjIgQEAKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05EVU1QUkVGUyIpKQogICAgICAgICBfUHlfUHJpbnRSZWZlcmVuY2VBZGRyZXNzZXMoc3RkZXJyKTsKICNlbmRpZiAvKiBQeV9UUkFDRV9SRUZTICovCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICBpZiAoX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCgpKSB7CisgICAgICAgIGNoYXIgKm9wdCA9IFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKTsKKyAgICAgICAgaWYgKG9wdCAhPSBOVUxMICYmICpvcHQgIT0gJ1wwJykKKyAgICAgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgfQogI2VuZGlmCiAKICAgICBjYWxsX2xsX2V4aXRmdW5jcygpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQKK1B5X0ZpbmFsaXplKHZvaWQpCit7CisgICAgUHlfRmluYWxpemVFeCgpOwogfQogCiAvKiBDcmVhdGUgYW5kIGluaXRpYWxpemUgYSBuZXcgaW50ZXJwcmV0ZXIgYW5kIHRocmVhZCwgYW5kIHJldHVybiB0aGUKQEAgLTcyMSw2ICs3NzIsMTIgQEAKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9OZXdJbnRlcnByZXRlcjogY2FsbCBQeV9Jbml0aWFsaXplIGZpcnN0Iik7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIC8qIElzc3VlICMxMDkxNSwgIzE1NzUxOiBUaGUgR0lMIEFQSSBkb2Vzbid0IHdvcmsgd2l0aCBtdWx0aXBsZQorICAgICAgIGludGVycHJldGVyczogZGlzYWJsZSBQeUdJTFN0YXRlX0NoZWNrKCkuICovCisgICAgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCA9IDA7CisjZW5kaWYKKwogICAgIGludGVycCA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcoKTsKICAgICBpZiAoaW50ZXJwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzc3LDcgKzgzNCw3IEBACiAKICAgICAgICAgaWYgKGluaXRzdGRpbygpIDwgMCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOworICAgICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7CiAgICAgICAgIGluaXRtYWluKGludGVycCk7CiAgICAgICAgIGlmICghUHlfTm9TaXRlRmxhZykKICAgICAgICAgICAgIGluaXRzaXRlKCk7CkBAIC04MDMsNyArODYwLDcgQEAKICAgIGZyYW1lcywgYW5kIHRoYXQgaXQgaXMgaXRzIGludGVycHJldGVyJ3Mgb25seSByZW1haW5pbmcgdGhyZWFkLgogICAgSXQgaXMgYSBmYXRhbCBlcnJvciB0byB2aW9sYXRlIHRoZXNlIGNvbnN0cmFpbnRzLgogCi0gICAoUHlfRmluYWxpemUoKSBkb2Vzbid0IGhhdmUgdGhlc2UgY29uc3RyYWludHMgLS0gaXQgemFwcworICAgKFB5X0ZpbmFsaXplRXgoKSBkb2Vzbid0IGhhdmUgdGhlc2UgY29uc3RyYWludHMgLS0gaXQgemFwcwogICAgZXZlcnl0aGluZywgcmVnYXJkbGVzcy4pCiAKICAgIExvY2tpbmc6IGFzIGFib3ZlLgpAQCAtODgxLDExICs5MzgsMTcgQEAKIHN0YXRpYyB2b2lkCiBpbml0bWFpbihQeUludGVycHJldGVyU3RhdGUgKmludGVycCkKIHsKLSAgICBQeU9iamVjdCAqbSwgKmQsICpsb2FkZXI7CisgICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyLCAqYW5uX2RpY3Q7CiAgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZSgiX19tYWluX18iKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBjcmVhdGUgX19tYWluX18gbW9kdWxlIik7CiAgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisgICAgYW5uX2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKChhbm5fZGljdCA9PSBOVUxMKSB8fAorICAgICAgICAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fYW5ub3RhdGlvbnNfXyIsIGFubl9kaWN0KSA8IDApKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIF9fbWFpbl9fLl9fYW5ub3RhdGlvbnNfXyIpOworICAgIH0KKyAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOwogICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7CiAgICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7CkBAIC05MjEsNiArOTg0LDE4IEBACiB7CiAgICAgUHlPYmplY3QgKmNvZGVjOwogCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChQeV9MZWdhY3lXaW5kb3dzRlNFbmNvZGluZ0ZsYWcpCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJyZXBsYWNlIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInN1cnJvZ2F0ZXBhc3MiOworICAgIH0KKyNlbHNlCiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPT0gTlVMTCkKICAgICB7CiAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBnZXRfbG9jYWxlX2VuY29kaW5nKCk7CkBAIC05MzEsNiArMTAwNiw3IEBACiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDE7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyNlbmRpZgogCiAgICAgLyogdGhlIGVuY29kaW5nIGlzIG1iY3MsIHV0Zi04IG9yIGFzY2lpICovCiAgICAgY29kZWMgPSBfUHlDb2RlY19Mb29rdXAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CkBAIC05NjksOSArMTA0NSwxMiBAQAogaXNfdmFsaWRfZmQoaW50IGZkKQogewogICAgIGludCBmZDI7Ci0gICAgaWYgKGZkIDwgMCB8fCAhX1B5VmVyaWZ5X2ZkKGZkKSkKKyAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXR1cm4gMDsKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgLyogUHJlZmVyIGR1cCgpIG92ZXIgZnN0YXQoKS4gZnN0YXQoKSBjYW4gcmVxdWlyZSBpbnB1dC9vdXRwdXQgd2hlcmVhcworICAgICAgIGR1cCgpIGRvZXNuJ3QsIHRoZXJlIGlzIGEgbG93IHJpc2sgb2YgRU1GSUxFL0VORklMRSBhdCBQeXRob24KKyAgICAgICBzdGFydHVwLiAqLwogICAgIGZkMiA9IGR1cChmZCk7CiAgICAgaWYgKGZkMiA+PSAwKQogICAgICAgICBjbG9zZShmZDIpOwpAQCAtOTgyLDggKzEwNjEsOCBAQAogLyogcmV0dXJucyBQeV9Ob25lIGlmIHRoZSBmZCBpcyBub3QgdmFsaWQgKi8KIHN0YXRpYyBQeU9iamVjdCoKIGNyZWF0ZV9zdGRpbyhQeU9iamVjdCogaW8sCi0gICAgaW50IGZkLCBpbnQgd3JpdGVfbW9kZSwgY2hhciogbmFtZSwKLSAgICBjaGFyKiBlbmNvZGluZywgY2hhciogZXJyb3JzKQorICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNvbnN0IGNoYXIqIG5hbWUsCisgICAgY29uc3QgY2hhciogZW5jb2RpbmcsIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKICAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnN0cmVhbSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJhdyA9IE5VTEwsICpyZXM7CiAgICAgY29uc3QgY2hhciogbW9kZTsKQEAgLTEwMTMsNyArMTA5Miw4IEBACiAgICAgICAgIG1vZGUgPSAicmIiOwogICAgIGJ1ZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJpc2lPT09pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLCBtb2RlLCBidWZmZXJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCBQeV9Ob25lLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIC8qIGVuY29kaW5nLCBlcnJvcnMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIDApOyAvKiBuZXdsaW5lLCBjbG9zZWZkICovCiAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0xMDI4LDEwICsxMTA4LDE2IEBACiAgICAgICAgIFB5X0lOQ1JFRihyYXcpOwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBXaW5kb3dzIGNvbnNvbGUgSU8gaXMgYWx3YXlzIFVURi04IGVuY29kZWQgKi8KKyAgICBpZiAoUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKHJhdykpCisgICAgICAgIGVuY29kaW5nID0gInV0Zi04IjsKKyNlbmRpZgorCiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChyYXcsICZQeUlkX25hbWUsIHRleHQpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlzYXR0eSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTI0MywyNSArMTMyOSwxMSBAQAogc3RhdGljIHZvaWQKIF9QeV9GYXRhbEVycm9yX0R1bXBUcmFjZWJhY2tzKGludCBmZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7Ci0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIC8qIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkgd29ya3MgZXZlbiBpZiB0aGUgR0lMIHdhcyByZWxlYXNlZCAqLwotICAgIHRzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7Ci0jZWxzZQotICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0jZW5kaWYKLSAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKLSAgICAgICAgLyogX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKCkgcmVxdWlyZXMgdGhlIHRocmVhZCBzdGF0ZSB0byBkaXNwbGF5Ci0gICAgICAgICAqIGZyYW1lcyAqLwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKICAgICBmZmx1c2goc3RkZXJyKTsKIAogICAgIC8qIGRpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHN0YWNrICovCi0gICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIE5VTEwsIE5VTEwpOwogfQogCiAvKiBQcmludCB0aGUgY3VycmVudCBleGNlcHRpb24gKGlmIGFuIGV4Y2VwdGlvbiBpcyBzZXQpIHdpdGggaXRzIHRyYWNlYmFjaywKQEAgLTEzMTYsNyArMTM4OCw3IEBACiAgICAgUHlfWERFQ1JFRih0Yik7CiAKICAgICAvKiBzeXMuc3RkZXJyIG1heSBiZSBidWZmZXJlZDogY2FsbCBzeXMuc3RkZXJyLmZsdXNoKCkgKi8KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTEzODgsNyArMTQ2MCw3IEBACiAvKiBDbGVhbiB1cCBhbmQgZXhpdCAqLwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSNpbmNsdWRlICJweXRocmVhZC5oIgorIyAgaW5jbHVkZSAicHl0aHJlYWQuaCIKICNlbmRpZgogCiBzdGF0aWMgdm9pZCAoKnB5ZXhpdGZ1bmMpKHZvaWQpID0gTlVMTDsKQEAgLTE0MjYsNyArMTQ5OCw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0aHJlYWRpbmcsICZQeUlkX19zaHV0ZG93biwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKICAgICB9CkBAIC0xNDYyLDcgKzE1MzQsOSBAQAogdm9pZAogUHlfRXhpdChpbnQgc3RzKQogewotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgc3RzID0gMTIwOworICAgIH0KIAogICAgIGV4aXQoc3RzKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weXN0YXRlLmMgYi9QeXRob24vcHlzdGF0ZS5jCmluZGV4IDI0ZTIwYzMuLjY1YzI0NGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0YXRlLmMKKysrIGIvUHl0aG9uL3B5c3RhdGUuYwpAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgR0VUX1RTVEFURSgpIFwKICAgICAoKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZfUHlUaHJlYWRTdGF0ZV9DdXJyZW50KSkKICNkZWZpbmUgU0VUX1RTVEFURSh2YWx1ZSkgXAotICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKFB5X3VpbnRwdHJfdCkodmFsdWUpKQorICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCwgKHVpbnRwdHJfdCkodmFsdWUpKQogI2RlZmluZSBHRVRfSU5URVJQX1NUQVRFKCkgXAogICAgIChHRVRfVFNUQVRFKCktPmludGVycCkKIApAQCAtMjUsNyArMjUsNyBAQAogI2lmZGVmIEhBVkVfRExGQ05fSAogI2luY2x1ZGUgPGRsZmNuLmg+CiAjZW5kaWYKLSNpZm5kZWYgUlRMRF9MQVpZCisjaWYgIUhBVkVfREVDTF9SVExEX0xBWlkKICNkZWZpbmUgUlRMRF9MQVpZIDEKICNlbmRpZgogI2VuZGlmCkBAIC0zNCw2ICszNCw4IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitpbnQgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCA9IDE7CisKICNpZmRlZiBXSVRIX1RIUkVBRAogI2luY2x1ZGUgInB5dGhyZWFkLmgiCiBzdGF0aWMgUHlUaHJlYWRfdHlwZV9sb2NrIGhlYWRfbXV0ZXggPSBOVUxMOyAvKiBQcm90ZWN0cyBpbnRlcnAtPnRzdGF0ZV9oZWFkICovCkBAIC00NSw3ICs0Nyw3IEBACiAgICBHSUxTdGF0ZSBpbXBsZW1lbnRhdGlvbgogKi8KIHN0YXRpYyBQeUludGVycHJldGVyU3RhdGUgKmF1dG9JbnRlcnByZXRlclN0YXRlID0gTlVMTDsKLXN0YXRpYyBpbnQgYXV0b1RMU2tleSA9IDA7CitzdGF0aWMgaW50IGF1dG9UTFNrZXkgPSAtMTsKICNlbHNlCiAjZGVmaW5lIEhFQURfSU5JVCgpIC8qIE5vdGhpbmcgKi8KICNkZWZpbmUgSEVBRF9MT0NLKCkgLyogTm90aGluZyAqLwpAQCAtODgsMTYgKzkwLDE1IEBACiAgICAgICAgIGludGVycC0+Y29kZWNzX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkID0gMDsKICAgICAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBOVUxMOworICAgICAgICBpbnRlcnAtPmltcG9ydF9mdW5jID0gTlVMTDsKKyAgICAgICAgaW50ZXJwLT5ldmFsX2ZyYW1lID0gX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0OwogI2lmZGVmIEhBVkVfRExPUEVOCi0jaWZkZWYgUlRMRF9OT1cKKyNpZiBIQVZFX0RFQ0xfUlRMRF9OT1cKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTk9XOwogI2Vsc2UKICAgICAgICAgaW50ZXJwLT5kbG9wZW5mbGFncyA9IFJUTERfTEFaWTsKICNlbmRpZgogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgaW50ZXJwLT50c2NkdW1wID0gMDsKLSNlbmRpZgogCiAgICAgICAgIEhFQURfTE9DSygpOwogICAgICAgICBpbnRlcnAtPm5leHQgPSBpbnRlcnBfaGVhZDsKQEAgLTEyNiw2ICsxMjcsNyBAQAogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnMpOwogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnNfY29weSk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5pbXBvcnRsaWIpOworICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0X2Z1bmMpOwogfQogCiAKQEAgLTIyMiw2ICsyMjQsMTAgQEAKIAogICAgICAgICB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyID0gTlVMTDsKICAgICAgICAgdHN0YXRlLT5pbl9jb3JvdXRpbmVfd3JhcHBlciA9IDA7CisgICAgICAgIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCA9IDA7CisKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyID0gTlVMTDsKKyAgICAgICAgdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyID0gTlVMTDsKIAogICAgICAgICBpZiAoaW5pdCkKICAgICAgICAgICAgIF9QeVRocmVhZFN0YXRlX0luaXQodHN0YXRlKTsKQEAgLTQwMiw2ICs0MDgsOCBAQAogICAgIFB5X0NMRUFSKHRzdGF0ZS0+Y190cmFjZW9iaik7CiAKICAgICBQeV9DTEVBUih0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyKTsKKyAgICBQeV9DTEVBUih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIpOworICAgIFB5X0NMRUFSKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcik7CiB9CiAKIApAQCAtNDUxLDEwICs0NTksMTAgQEAKICAgICBpZiAodHN0YXRlID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAiUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50OiBubyBjdXJyZW50IHRzdGF0ZSIpOwotICAgIFNFVF9UU1RBVEUoTlVMTCk7CisgICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKICAgICBpZiAoYXV0b0ludGVycHJldGVyU3RhdGUgJiYgUHlUaHJlYWRfZ2V0X2tleV92YWx1ZShhdXRvVExTa2V5KSA9PSB0c3RhdGUpCiAgICAgICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXlfdmFsdWUoYXV0b1RMU2tleSk7Ci0gICAgdHN0YXRlX2RlbGV0ZV9jb21tb24odHN0YXRlKTsKKyAgICBTRVRfVFNUQVRFKE5VTEwpOwogICAgIFB5RXZhbF9SZWxlYXNlTG9jaygpOwogfQogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCkBAIC02OTgsNyArNzA2LDcgQEAKIH0KIAogLyogSW50ZXJuYWwgaW5pdGlhbGl6YXRpb24vZmluYWxpemF0aW9uIGZ1bmN0aW9ucyBjYWxsZWQgYnkKLSAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemUKKyAgIFB5X0luaXRpYWxpemUvUHlfRmluYWxpemVFeAogKi8KIHZvaWQKIF9QeUdJTFN0YXRlX0luaXQoUHlJbnRlcnByZXRlclN0YXRlICppLCBQeVRocmVhZFN0YXRlICp0KQpAQCAtNzE0LDEwICs3MjIsMTcgQEAKICAgICBfUHlHSUxTdGF0ZV9Ob3RlVGhyZWFkU3RhdGUodCk7CiB9CiAKK1B5SW50ZXJwcmV0ZXJTdGF0ZSAqCitfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKHZvaWQpCit7CisgICAgcmV0dXJuIGF1dG9JbnRlcnByZXRlclN0YXRlOworfQorCiB2b2lkCiBfUHlHSUxTdGF0ZV9GaW5pKHZvaWQpCiB7CiAgICAgUHlUaHJlYWRfZGVsZXRlX2tleShhdXRvVExTa2V5KTsKKyAgICBhdXRvVExTa2V5ID0gLTE7CiAgICAgYXV0b0ludGVycHJldGVyU3RhdGUgPSBOVUxMOwogfQogCkBAIC03ODYsOCArODAxLDE5IEBACiBpbnQKIFB5R0lMU3RhdGVfQ2hlY2sodm9pZCkKIHsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBHRVRfVFNUQVRFKCk7Ci0gICAgcmV0dXJuIHRzdGF0ZSAmJiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmICghX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoYXV0b1RMU2tleSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICB0c3RhdGUgPSBHRVRfVFNUQVRFKCk7CisgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAodHN0YXRlID09IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkpOwogfQogCiBQeUdJTFN0YXRlX1NUQVRFCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJ0b2QuYyBiL1B5dGhvbi9weXN0cnRvZC5jCmluZGV4IDIwOWM5MDguLjY0ZDBjNTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0cnRvZC5jCisrKyBiL1B5dGhvbi9weXN0cnRvZC5jCkBAIC0zNzAsNiArMzcwLDcyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogUmVtb3ZlIHVuZGVyc2NvcmVzIHRoYXQgZm9sbG93IHRoZSB1bmRlcnNjb3JlIHBsYWNlbWVudCBydWxlIGZyb20KKyAgIHRoZSBzdHJpbmcgYW5kIHRoZW4gY2FsbCB0aGUgYGlubmVyZnVuY2AgZnVuY3Rpb24gb24gdGhlIHJlc3VsdC4KKyAgIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgb2JqZWN0IG9yIE5VTEwgb24gZXhjZXB0aW9uLgorCisgICBgd2hhdGAgaXMgdXNlZCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UgZW1pdHRlZCB3aGVuIHVuZGVyc2NvcmVzIGFyZSBkZXRlY3RlZAorICAgdGhhdCBkb24ndCBmb2xsb3cgdGhlIHJ1bGUuIGBhcmdgIGlzIGFuIG9wYXF1ZSBwb2ludGVyIHBhc3NlZCB0byB0aGUgaW5uZXIKKyAgIGZ1bmN0aW9uLgorCisgICBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHVuZGVyc2NvcmUtYWdub3N0aWMgY29udmVyc2lvbiBmb3IgZmxvYXRzCisgICBhbmQgY29tcGxleCBudW1iZXJzLgorKi8KK1B5T2JqZWN0ICoKK19QeV9zdHJpbmdfdG9fbnVtYmVyX3dpdGhfdW5kZXJzY29yZXMoCisgICAgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBvcmlnX2xlbiwgY29uc3QgY2hhciAqd2hhdCwgUHlPYmplY3QgKm9iaiwgdm9pZCAqYXJnLAorICAgIFB5T2JqZWN0ICooKmlubmVyZnVuYykoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LCB2b2lkICopKQoreworICAgIGNoYXIgcHJldjsKKyAgICBjb25zdCBjaGFyICpwLCAqbGFzdDsKKyAgICBjaGFyICpkdXAsICplbmQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGlmIChzdHJjaHIocywgJ18nKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBpbm5lcmZ1bmMocywgb3JpZ19sZW4sIGFyZyk7CisgICAgfQorCisgICAgZHVwID0gUHlNZW1fTWFsbG9jKG9yaWdfbGVuICsgMSk7CisgICAgZW5kID0gZHVwOworICAgIHByZXYgPSAnXDAnOworICAgIGxhc3QgPSBzICsgb3JpZ19sZW47CisgICAgZm9yIChwID0gczsgKnA7IHArKykgeworICAgICAgICBpZiAoKnAgPT0gJ18nKSB7CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgb25seSBhbGxvd2VkIGFmdGVyIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmICghKHByZXYgPj0gJzAnICYmIHByZXYgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqZW5kKysgPSAqcDsKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBvbmx5IGFsbG93ZWQgYmVmb3JlIGRpZ2l0cy4gKi8KKyAgICAgICAgICAgIGlmIChwcmV2ID09ICdfJyAmJiAhKCpwID49ICcwJyAmJiAqcCA8PSAnOScpKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcmV2ID0gKnA7CisgICAgfQorICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBub3QgYWxsb3dlZCBhdCB0aGUgZW5kLiAqLworICAgIGlmIChwcmV2ID09ICdfJykgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBObyBlbWJlZGRlZCBOVUxzIGFsbG93ZWQuICovCisgICAgaWYgKHAgIT0gbGFzdCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAqZW5kID0gJ1wwJzsKKyAgICByZXN1bHQgPSBpbm5lcmZ1bmMoZHVwLCBlbmQgLSBkdXAsIGFyZyk7CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIHJldHVybiByZXN1bHQ7CisKKyAgZXJyb3I6CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorCQkgImNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB0byAlczogIgorCQkgIiVSIiwgd2hhdCwgb2JqKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwogI2lmZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKIAogLyogR2l2ZW4gYSBzdHJpbmcgdGhhdCBtYXkgaGF2ZSBhIGRlY2ltYWwgcG9pbnQgaW4gdGhlIGN1cnJlbnQKQEAgLTg4MSwxMiArOTQ3LDEyIEBACiAjZGVmaW5lIE9GU19FIDIKIAogLyogVGhlIGxlbmd0aHMgb2YgdGhlc2UgYXJlIGtub3duIHRvIHRoZSBjb2RlIGJlbG93LCBzbyBkb24ndCBjaGFuZ2UgdGhlbSAqLwotc3RhdGljIGNoYXIgKmxjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbGNfZmxvYXRfc3RyaW5nc1tdID0gewogICAgICJpbmYiLAogICAgICJuYW4iLAogICAgICJlIiwKIH07Ci1zdGF0aWMgY2hhciAqdWNfZmxvYXRfc3RyaW5nc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB1Y19mbG9hdF9zdHJpbmdzW10gPSB7CiAgICAgIklORiIsCiAgICAgIk5BTiIsCiAgICAgIkUiLApAQCAtOTI1LDcgKzk5MSw4IEBACiBmb3JtYXRfZmxvYXRfc2hvcnQoZG91YmxlIGQsIGNoYXIgZm9ybWF0X2NvZGUsCiAgICAgICAgICAgICAgICAgICAgaW50IG1vZGUsIGludCBwcmVjaXNpb24sCiAgICAgICAgICAgICAgICAgICAgaW50IGFsd2F5c19hZGRfc2lnbiwgaW50IGFkZF9kb3RfMF9pZl9pbnRlZ2VyLAotICAgICAgICAgICAgICAgICAgIGludCB1c2VfYWx0X2Zvcm1hdHRpbmcsIGNoYXIgKipmbG9hdF9zdHJpbmdzLCBpbnQgKnR5cGUpCisgICAgICAgICAgICAgICAgICAgaW50IHVzZV9hbHRfZm9ybWF0dGluZywgY29uc3QgY2hhciAqIGNvbnN0ICpmbG9hdF9zdHJpbmdzLAorICAgICAgICAgICAgICAgICAgIGludCAqdHlwZSkKIHsKICAgICBjaGFyICpidWYgPSBOVUxMOwogICAgIGNoYXIgKnAgPSBOVUxMOwpAQCAtMTE3Niw3ICsxMjQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpCiB7Ci0gICAgY2hhciAqKmZsb2F0X3N0cmluZ3MgPSBsY19mbG9hdF9zdHJpbmdzOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqZmxvYXRfc3RyaW5ncyA9IGxjX2Zsb2F0X3N0cmluZ3M7CiAgICAgaW50IG1vZGU7CiAKICAgICAvKiBWYWxpZGF0ZSBmb3JtYXRfY29kZSwgYW5kIG1hcCB1cHBlciBhbmQgbG93ZXIgY2FzZS4gQ29tcHV0ZSB0aGUKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRob25ydW4uYyBiL1B5dGhvbi9weXRob25ydW4uYwppbmRleCA3MmI2YzliLi41YjFiNzg2IDEwMDY0NAotLS0gYS9QeXRob24vcHl0aG9ucnVuLmMKKysrIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCkBAIC00MzEsNyArNDMxLDcgQEAKIHBhcnNlX3N5bnRheF9lcnJvcihQeU9iamVjdCAqZXJyLCBQeU9iamVjdCAqKm1lc3NhZ2UsIFB5T2JqZWN0ICoqZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgaW50ICpsaW5lbm8sIGludCAqb2Zmc2V0LCBQeU9iamVjdCAqKnRleHQpCiB7Ci0gICAgbG9uZyBob2xkOworICAgIGludCBob2xkOwogICAgIFB5T2JqZWN0ICp2OwogICAgIF9QeV9JREVOVElGSUVSKG1zZyk7CiAgICAgX1B5X0lERU5USUZJRVIoZmlsZW5hbWUpOwpAQCAtNDY0LDExICs0NjQsMTEgQEAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX2xpbmVubyk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgaG9sZCA9IF9QeUxvbmdfQXNJbnQodik7CiAgICAgUHlfREVDUkVGKHYpOwogICAgIGlmIChob2xkIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgKmxpbmVubyA9IChpbnQpaG9sZDsKKyAgICAqbGluZW5vID0gaG9sZDsKIAogICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfb2Zmc2V0KTsKICAgICBpZiAoIXYpCkBAIC00NzcsMTEgKzQ3NywxMSBAQAogICAgICAgICAqb2Zmc2V0ID0gLTE7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICB9IGVsc2UgewotICAgICAgICBob2xkID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaG9sZCA9IF9QeUxvbmdfQXNJbnQodik7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgaWYgKGhvbGQgPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgICpvZmZzZXQgPSAoaW50KWhvbGQ7CisgICAgICAgICpvZmZzZXQgPSBob2xkOwogICAgIH0KIAogICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfdGV4dCk7CkBAIC02MzAsOCArNjMwLDEzIEBACiAgICAgfQogICAgIGhvb2sgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfZXhjZXB0aG9vayk7CiAgICAgaWYgKGhvb2spIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX1BhY2soMywgZXhjZXB0aW9uLCB2LCB0Yik7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdChob29rLCBhcmdzKTsKKyAgICAgICAgUHlPYmplY3QqIHN0YWNrWzNdOworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgICAgIHN0YWNrWzBdID0gZXhjZXB0aW9uOworICAgICAgICBzdGFja1sxXSA9IHY7CisgICAgICAgIHN0YWNrWzJdID0gdGI7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChob29rLCBzdGFjaywgMyk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmV4Y2VwdGlvbjIsICp2MiwgKnRiMjsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5c3RlbUV4aXQpKSB7CkBAIC02NjAsNyArNjY1LDYgQEAKICAgICAgICAgICAgIFB5X1hERUNSRUYodGIyKTsKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoInN5cy5leGNlcHRob29rIGlzIG1pc3NpbmdcbiIpOwogICAgICAgICBQeUVycl9EaXNwbGF5KGV4Y2VwdGlvbiwgdiwgdGIpOwpAQCAtNzkxLDExICs3OTUsMTEgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIgKmNhdXNlX21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY2F1c2VfbWVzc2FnZVtdID0KICAgICAiXG5UaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlICIKICAgICAib2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiI7CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjb250ZXh0X21lc3NhZ2UgPQorc3RhdGljIGNvbnN0IGNoYXIgY29udGV4dF9tZXNzYWdlW10gPQogICAgICJcbkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCAiCiAgICAgImFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOlxuXG4iOwogCkBAIC05NDYsNyArOTUwLDcgQEAKIAogICAgIGYgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3RkZXJyKTsKICAgICBpZiAoZiAhPSBOVUxMKSB7Ci0gICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTk1NCw3ICs5NTgsNyBAQAogICAgIH0KICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZG91dCk7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC0xMTQ0LDggKzExNDgsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlT2JqZWN0KEZJTEUgKmZwLCBQeU9iamVjdCAqZmlsZW5hbWUsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKQEAgLTExNzcsOCArMTE4MSw4IEBACiAKIG1vZF90eQogUHlQYXJzZXJfQVNURnJvbUZpbGUoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lX3N0ciwgY29uc3QgY2hhciogZW5jLAotICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjaGFyICpwczEsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY29uc3QgY2hhciAqcHMxLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSkKIHsKICAgICBtb2RfdHkgbW9kOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IDdmNjU4MjQuLjMwMTVhNmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTcsNiArNywxMSBAQAogI2luY2x1ZGUgPG1hY2gvbWFjaF90aW1lLmg+ICAgLyogbWFjaF9hYnNvbHV0ZV90aW1lKCksIG1hY2hfdGltZWJhc2VfaW5mbygpICovCiAjZW5kaWYKIAorI2RlZmluZSBfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhhLCBiKSBcCisgICAgKGFzc2VydChiID4gMCksIFwKKyAgICAgKF9QeVRpbWVfdCkoYSkgPCBfUHlUaW1lX01JTiAvIChfUHlUaW1lX3QpKGIpIFwKKyAgICAgfHwgX1B5VGltZV9NQVggLyAoX1B5VGltZV90KShiKSA8IChfUHlUaW1lX3QpKGEpKQorCiAvKiBUbyBtaWxsaXNlY29uZCAoMTBeLTMpICovCiAjZGVmaW5lIFNFQ19UT19NUyAxMDAwCiAKQEAgLTMzLDEyICszOCwxMiBAQAogdGltZV90CiBfUHlMb25nX0FzVGltZV90KFB5T2JqZWN0ICpvYmopCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHZhbDsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7CiAjZWxzZQogICAgIGxvbmcgdmFsOwotICAgIGFzc2VydChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodGltZV90KSA8PSBzaXplb2YobG9uZykpOwogICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmcob2JqKTsKICNlbmRpZgogICAgIGlmICh2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtNTIsNTggKzU3LDkxIEBACiBQeU9iamVjdCAqCiBfUHlMb25nX0Zyb21UaW1lX3QodGltZV90IHQpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKKyNpZiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwogI2VuZGlmCiB9CiAKKy8qIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvIG5lYXJlc3QgZXZlbiBpbnRlZ2VyCisgICAoX1B5VGltZV9ST1VORF9IQUxGX0VWRU4pICovCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZG91YmxlIHgpCit7CisgICAgZG91YmxlIHJvdW5kZWQgPSByb3VuZCh4KTsKKyAgICBpZiAoZmFicyh4LXJvdW5kZWQpID09IDAuNSkKKyAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCisgICAgICAgIHJvdW5kZWQgPSAyLjAqcm91bmQoeC8yLjApOworICAgIHJldHVybiByb3VuZGVkOworfQorCitzdGF0aWMgZG91YmxlCitfUHlUaW1lX1JvdW5kKGRvdWJsZSB4LCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgZCA9IHg7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKQorICAgICAgICBkID0gX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGQpOworICAgIGVsc2UgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKKyAgICAgICAgZCA9IGNlaWwoZCk7CisgICAgZWxzZQorICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgcmV0dXJuIGQ7Cit9CisKK3N0YXRpYyBpbnQKK19QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkb3VibGUgZCwgdGltZV90ICpzZWMsIGxvbmcgKm51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKK3sKKyAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OworCisgICAgZmxvYXRwYXJ0ID0gbW9kZihkLCAmaW50cGFydCk7CisKKyAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7CisgICAgZmxvYXRwYXJ0ID0gX1B5VGltZV9Sb3VuZChmbG9hdHBhcnQsIHJvdW5kKTsKKyAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7CisgICAgICAgIGZsb2F0cGFydCAtPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCArPSAxLjA7CisgICAgfQorICAgIGVsc2UgaWYgKGZsb2F0cGFydCA8IDApIHsKKyAgICAgICAgZmxvYXRwYXJ0ICs9IGRlbm9taW5hdG9yOworICAgICAgICBpbnRwYXJ0IC09IDEuMDsKKyAgICB9CisgICAgYXNzZXJ0KDAuMCA8PSBmbG9hdHBhcnQgJiYgZmxvYXRwYXJ0IDwgZGVub21pbmF0b3IpOworCisgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKKyAgICAqbnVtZXJhdG9yID0gKGxvbmcpZmxvYXRwYXJ0OworCisgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKKyAgICBpZiAoZXJyIDw9IC0xLjAgfHwgZXJyID49IDEuMCkgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludAogX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IExPTkdfTUFYKTsKKyAgICBhc3NlcnQoZGVub21pbmF0b3IgPD0gKGRvdWJsZSlMT05HX01BWCk7CisKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZmxvYXRwYXJ0OwotCi0gICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOwotICAgICAgICBpZiAoZmxvYXRwYXJ0IDwgMCkgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMS4wICsgZmxvYXRwYXJ0OwotICAgICAgICAgICAgaW50cGFydCAtPSAxLjA7Ci0gICAgICAgIH0KLQotICAgICAgICBmbG9hdHBhcnQgKj0gZGVub21pbmF0b3I7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IGNlaWwoZmxvYXRwYXJ0KTsKLSAgICAgICAgICAgIGlmIChmbG9hdHBhcnQgPj0gZGVub21pbmF0b3IpIHsKLSAgICAgICAgICAgICAgICBmbG9hdHBhcnQgPSAwLjA7Ci0gICAgICAgICAgICAgICAgaW50cGFydCArPSAxLjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBmbG9vcihmbG9hdHBhcnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKLSAgICAgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKLSAgICAgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKLSAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRvdWJsZSBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOworICAgICAgICByZXR1cm4gX1B5VGltZV9Eb3VibGVUb0Rlbm9taW5hdG9yKGQsIHNlYywgbnVtZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbm9taW5hdG9yLCByb3VuZCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAqc2VjID0gX1B5TG9uZ19Bc1RpbWVfdChvYmopOworICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAqbnVtZXJhdG9yID0gMDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQpAQCAtMTEyLDEzICsxNTAsMTIgQEAKIF9QeVRpbWVfT2JqZWN0VG9UaW1lX3QoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisgICAgICAgIGRvdWJsZSBpbnRwYXJ0LCBlcnI7CisgICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICAgICAgdm9sYXRpbGUgZG91YmxlIGQ7CiAKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7CisgICAgICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKICAgICAgICAgKHZvaWQpbW9kZihkLCAmaW50cGFydCk7CiAKICAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKQEAgLTE0MSwxNCArMTc4LDIwIEBACiBfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKm5zZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIG5zZWMsIDFlOSwgcm91bmQpOworICAgIGludCByZXM7CisgICAgcmVzID0gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBhc3NlcnQoMCA8PSAqbnNlYyAmJiAqbnNlYyA8IFNFQ19UT19OUyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogaW50CiBfUHlUaW1lX09iamVjdFRvVGltZXZhbChQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqdXNlYywKICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCB1c2VjLCAxZTYsIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKnVzZWMgJiYgKnVzZWMgPCBTRUNfVE9fVVMpOworICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjIsMjEgKzIwNSwyNCBAQAogX1B5VGltZV9Gcm9tU2Vjb25kcyhpbnQgc2Vjb25kcykKIHsKICAgICBfUHlUaW1lX3QgdDsKKyAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzOwogICAgIC8qIGVuc3VyZSB0aGF0IGludGVnZXIgb3ZlcmZsb3cgY2Fubm90IGhhcHBlbiwgaW50IHR5cGUgc2hvdWxkIGhhdmUgMzIKICAgICAgICBiaXRzLCB3aGVyZWFzIF9QeVRpbWVfdCB0eXBlIGhhcyBhdCBsZWFzdCA2NCBiaXRzIChTRUNfVE9fTVMgdGFrZXMgMzAKICAgICAgICBiaXRzKS4gKi8KLSAgICBhc3NlcnQoKHNlY29uZHMgPj0gMCAmJiBzZWNvbmRzIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQotICAgICAgICAgICB8fCAoc2Vjb25kcyA8IDAgJiYgc2Vjb25kcyA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOwotICAgIHQgPSAoX1B5VGltZV90KXNlY29uZHMgKiBTRUNfVE9fTlM7CisgICAgUHlfQlVJTERfQVNTRVJUKElOVF9NQVggPD0gX1B5VGltZV9NQVggLyBTRUNfVE9fTlMpOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUlOID49IF9QeVRpbWVfTUlOIC8gU0VDX1RPX05TKTsKKyAgICBhc3NlcnQoKHQgPj0gMCAmJiB0IDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKQorICAgICAgICAgICB8fCAodCA8IDAgJiYgdCA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUykpOworICAgIHQgKj0gU0VDX1RPX05TOwogICAgIHJldHVybiB0OwogfQogCiBfUHlUaW1lX3QKLV9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKFBZX0xPTkdfTE9ORyBucykKK19QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKGxvbmcgbG9uZyBucykKIHsKICAgICBfUHlUaW1lX3QgdDsKLSAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotICAgIHQgPSBQeV9TQUZFX0RPV05DQVNUKG5zLCBQWV9MT05HX0xPTkcsIF9QeVRpbWVfdCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgbG9uZyBsb25nLCBfUHlUaW1lX3QpOwogICAgIHJldHVybiB0OwogfQogCkBAIC0xODcsMTIgKzIzMywxNSBAQAogICAgIF9QeVRpbWVfdCB0OwogICAgIGludCByZXMgPSAwOwogCi0gICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYyAqIFNFQ19UT19OUzsKLSAgICBpZiAodCAvIFNFQ19UT19OUyAhPSB0cy0+dHZfc2VjKSB7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0cy0+dHZfc2VjKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdHMtPnR2X3NlYzsKKworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBTRUNfVE9fTlMpKSB7CiAgICAgICAgIGlmIChyYWlzZSkKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgcmVzID0gLTE7CiAgICAgfQorICAgIHQgPSB0ICogU0VDX1RPX05TOwogCiAgICAgdCArPSB0cy0+dHZfbnNlYzsKIApAQCAtMjA2LDEyICsyNTUsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHYtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHYtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gKF9QeVRpbWVfdCl0di0+dHZfdXNlYyAqIFVTX1RPX05TOwogCkBAIC0yMjEsNTAgKzI3Myw1MiBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKK19QeVRpbWVfRnJvbUZsb2F0T2JqZWN0KF9QeVRpbWVfdCAqdCwgZG91YmxlIHZhbHVlLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVuaXRfdG9fbnMpCit7CisgICAgZG91YmxlIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICAvKiBjb252ZXJ0IHRvIGEgbnVtYmVyIG9mIG5hbm9zZWNvbmRzICovCisgICAgZCA9IHZhbHVlOworICAgIGQgKj0gKGRvdWJsZSl1bml0X3RvX25zOworICAgIGQgPSBfUHlUaW1lX1JvdW5kKGQsIHJvdW5kKTsKKworICAgICp0ID0gKF9QeVRpbWVfdClkOworICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OworICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7CisgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAogX1B5VGltZV9Gcm9tT2JqZWN0KF9QeVRpbWVfdCAqdCwgUHlPYmplY3QgKm9iaiwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAotICAgICAgICAgICAgICAgICAgIGxvbmcgdG9fbmFub3NlY29uZHMpCisgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQogewogICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKLSAgICAgICAgLyogdm9sYXRpbGUgYXZvaWRzIHVuc2FmZSBvcHRpbWl6YXRpb24gb24gZmxvYXQgZW5hYmxlZCBieSBnY2MgLU8zICovCi0gICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkLCBlcnI7Ci0KLSAgICAgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgICAgICBkb3VibGUgZDsKICAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKLSAgICAgICAgZCAqPSB0b19uYW5vc2Vjb25kczsKLQotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKQotICAgICAgICAgICAgZCA9IGNlaWwoZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGQgPSBmbG9vcihkKTsKLQotICAgICAgICAqdCA9IChfUHlUaW1lX3QpZDsKLSAgICAgICAgZXJyID0gZCAtIChkb3VibGUpKnQ7Ci0gICAgICAgIGlmIChmYWJzKGVycikgPj0gMS4wKSB7Ci0gICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBfUHlUaW1lX0Zyb21GbG9hdE9iamVjdCh0LCBkLCByb3VuZCwgdW5pdF90b19ucyk7CiAgICAgfQogICAgIGVsc2UgewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIFBZX0xPTkdfTE9ORyBzZWM7CisgICAgICAgIGxvbmcgbG9uZyBzZWM7CisgICAgICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisKICAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZ0xvbmcob2JqKTsKLSAgICAgICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSNlbHNlCi0gICAgICAgIGxvbmcgc2VjOwotICAgICAgICBzZWMgPSBQeUxvbmdfQXNMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZW5kaWYKICAgICAgICAgaWYgKHNlYyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgKnQgPSBzZWMgKiB0b19uYW5vc2Vjb25kczsKLSAgICAgICAgaWYgKCp0IC8gdG9fbmFub3NlY29uZHMgIT0gc2VjKSB7CisKKyAgICAgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHNlYywgdW5pdF90b19ucykpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICAqdCA9IHNlYyAqIHVuaXRfdG9fbnM7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTI4NCwyNCArMzM4LDI4IEBACiBkb3VibGUKIF9QeVRpbWVfQXNTZWNvbmRzRG91YmxlKF9QeVRpbWVfdCB0KQogewotICAgIF9QeVRpbWVfdCBzZWMsIG5zOwotICAgIC8qIERpdmlkZSB1c2luZyBpbnRlZ2VycyB0byBhdm9pZCByb3VuZGluZyBpc3N1ZXMgb24gdGhlIGludGVnZXIgcGFydC4KLSAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KLSAgICBzZWMgPSB0IC8gU0VDX1RPX05TOwotICAgIG5zID0gdCAlIFNFQ19UT19OUzsKLSAgICByZXR1cm4gKGRvdWJsZSlzZWMgKyAoZG91YmxlKW5zICogMWUtOTsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGQ7CisKKyAgICBpZiAodCAlIFNFQ19UT19OUyA9PSAwKSB7CisgICAgICAgIF9QeVRpbWVfdCBzZWNzOworICAgICAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCisgICAgICAgICAgIDFlLTkgY2Fubm90IGJlIHN0b3JlZCBleGFjdGx5IGluIElFRUUgNjQtYml0LiAqLworICAgICAgICBzZWNzID0gdCAvIFNFQ19UT19OUzsKKyAgICAgICAgZCA9IChkb3VibGUpc2VjczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGQgPSAoZG91YmxlKXQ7CisgICAgICAgIGQgLz0gMWU5OworICAgIH0KKyAgICByZXR1cm4gZDsKIH0KIAogUHlPYmplY3QgKgogX1B5VGltZV9Bc05hbm9zZWNvbmRzT2JqZWN0KF9QeVRpbWVfdCB0KQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOwotI2Vsc2UKLSAgICBhc3NlcnQoc2l6ZW9mKGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOwotI2VuZGlmCisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihsb25nIGxvbmcpID49IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXQpOwogfQogCiBzdGF0aWMgX1B5VGltZV90CkBAIC0zMDksNyArMzY3LDIwIEBACiAgICAgICAgICAgICAgICBjb25zdCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgYXNzZXJ0KGsgPiAxKTsKLSAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSB7CisgICAgICAgIF9QeVRpbWVfdCB4LCByLCBhYnNfcjsKKyAgICAgICAgeCA9IHQgLyBrOworICAgICAgICByID0gdCAlIGs7CisgICAgICAgIGFic19yID0gUHlfQUJTKHIpOworICAgICAgICBpZiAoYWJzX3IgPiBrIC8gMiB8fCAoYWJzX3IgPT0gayAvIDIgJiYgKFB5X0FCUyh4KSAmIDEpKSkgeworICAgICAgICAgICAgaWYgKHQgPj0gMCkKKyAgICAgICAgICAgICAgICB4Kys7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeC0tOworICAgICAgICB9CisgICAgICAgIHJldHVybiB4OworICAgIH0KKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpIHsKICAgICAgICAgaWYgKHQgPj0gMCkKICAgICAgICAgICAgIHJldHVybiAodCArIGsgLSAxKSAvIGs7CiAgICAgICAgIGVsc2UKQEAgLTM3Myw3ICs0NDQsNyBAQAogX1B5VGltZV9Bc1RpbWV2YWxTdHJ1Y3RfaW1wbChfUHlUaW1lX3QgdCwgc3RydWN0IHRpbWV2YWwgKnR2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQsIGludCByYWlzZSkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICBfUHlUaW1lX3Qgc2Vjcywgc2VjczI7CiAgICAgaW50IHVzOwogICAgIGludCByZXM7CiAKQEAgLTM4Niw3ICs0NTcsOCBAQAogI2VuZGlmCiAgICAgdHYtPnR2X3VzZWMgPSB1czsKIAotICAgIGlmIChyZXMgPCAwIHx8IChfUHlUaW1lX3QpdHYtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgc2VjczIgPSAoX1B5VGltZV90KXR2LT50dl9zZWM7CisgICAgaWYgKHJlcyA8IDAgfHwgc2VjczIgIT0gc2VjcykgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDI0LDYgKzQ5Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSB8fCBkZWZpbmVkKEhBVkVfS1FVRVVFKQogaW50CiBfUHlUaW1lX0FzVGltZXNwZWMoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCkBAIC00MzcsMTMgKzUxMCwxMyBAQAogICAgICAgICBzZWNzIC09IDE7CiAgICAgfQogICAgIHRzLT50dl9zZWMgPSAodGltZV90KXNlY3M7Ci0gICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7Ci0gICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBhc3NlcnQoMCA8PSBuc2VjICYmIG5zZWMgPCBTRUNfVE9fTlMpOwogICAgIHRzLT50dl9uc2VjID0gbnNlYzsKIAotICAgIGFzc2VydCgwIDw9IHRzLT50dl9uc2VjICYmIHRzLT50dl9uc2VjIDw9IDk5OTk5OTk5OSk7CisgICAgaWYgKChfUHlUaW1lX3QpdHMtPnR2X3NlYyAhPSBzZWNzKSB7CisgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogI2VuZGlmCkBAIC01NTcsMTkgKzYzMCwyMCBAQAogICAgIHJldHVybiBweWdldHRpbWVvZmRheSh0LCBpbmZvLCAxKTsKIH0KIAotCiBzdGF0aWMgaW50CiBweW1vbm90b25pYyhfUHlUaW1lX3QgKnRwLCBfUHlfY2xvY2tfaW5mb190ICppbmZvLCBpbnQgcmFpc2UpCiB7CiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIFVMT05HTE9ORyByZXN1bHQ7CisgICAgVUxPTkdMT05HIHRpY2tzOworICAgIF9QeVRpbWVfdCB0OwogCiAgICAgYXNzZXJ0KGluZm8gPT0gTlVMTCB8fCByYWlzZSk7CiAKLSAgICByZXN1bHQgPSBHZXRUaWNrQ291bnQ2NCgpOworICAgIHRpY2tzID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpY2tzKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IChfUHlUaW1lX3QpdGlja3M7CiAKLSAgICAqdHAgPSByZXN1bHQgKiBNU19UT19OUzsKLSAgICBpZiAoKnRwIC8gTVNfVE9fTlMgIT0gcmVzdWx0KSB7CisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIE1TX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIF9QeVRpbWVfb3ZlcmZsb3coKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3Nyw2ICs2NTEsNyBAQAogICAgICAgICAvKiBIZWxsbywgdGltZSB0cmF2ZWxlciEgKi8KICAgICAgICAgYXNzZXJ0KDApOwogICAgIH0KKyAgICAqdHAgPSB0ICogTVNfVE9fTlM7CiAKICAgICBpZiAoaW5mbykgewogICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKQEAgLTY4OSw4ICs3NjQsNTcgQEAKICAgICBpZiAoX1B5VGltZV9HZXRNb25vdG9uaWNDbG9ja1dpdGhJbmZvKCZ0LCBOVUxMKSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIC8qIGNoZWNrIHRoYXQgX1B5VGltZV9Gcm9tU2Vjb25kcygpIGNhbm5vdCBvdmVyZmxvdyAqLwotICAgIGFzc2VydChJTlRfTUFYIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKTsKLSAgICBhc3NlcnQoSU5UX01JTiA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUyk7CiAgICAgcmV0dXJuIDA7CiB9CisKK2ludAorX1B5VGltZV9sb2NhbHRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGludCBlcnJvcjsKKworICAgIGVycm9yID0gbG9jYWx0aW1lX3ModG0sICZ0KTsKKyAgICBpZiAoZXJyb3IgIT0gMCkgeworICAgICAgICBlcnJubyA9IGVycm9yOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisjZWxzZSAvKiAhTVNfV0lORE9XUyAqLworICAgIGlmIChsb2NhbHRpbWVfcigmdCwgdG0pID09IE5VTEwpIHsKKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworfQorCitpbnQKK19QeVRpbWVfZ210aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGdtdGltZV9zKHRtLCAmdCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KKyAgICBpZiAoZ210aW1lX3IoJnQsIHRtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCAxNTRmNmY5Li40NmUzYmI1IDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0xLDYgKzEsOSBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2lmZGVmIE1TX1dJTkRPV1MKICMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKy8qIEFsbCBzYW1wbGUgTVNETiB3aW5jcnlwdCBwcm9ncmFtcyBpbmNsdWRlIHRoZSBoZWFkZXIgYmVsb3cuIEl0IGlzIGF0IGxlYXN0CisgKiByZXF1aXJlZCB3aXRoIE1pbiBHVy4gKi8KKyMgIGluY2x1ZGUgPHdpbmNyeXB0Lmg+CiAjZWxzZQogIyAgaW5jbHVkZSA8ZmNudGwuaD4KICMgIGlmZGVmIEhBVkVfU1lTX1NUQVRfSApAQCAtMzcsMTAgKzQwLDkgQEAKICAgICByZXR1cm4gMDsKIAogZXJyb3I6Ci0gICAgaWYgKHJhaXNlKQorICAgIGlmIChyYWlzZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLSAgICBlbHNlCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplIFdpbmRvd3MgcmFuZG9tIEFQSSAoQ3J5cHRvR2VuKSIpOworICAgIH0KICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTUzLDggKzU1LDkgQEAKIAogICAgIGlmIChoQ3J5cHRQcm92ID09IDApCiAgICAgewotICAgICAgICBpZiAod2luMzJfdXJhbmRvbV9pbml0KHJhaXNlKSA9PSAtMSkKKyAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHdoaWxlIChzaXplID4gMCkKQEAgLTYzLDExICs2Niw5IEBACiAgICAgICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgKERXT1JEKWNodW5rLCBidWZmZXIpKQogICAgICAgICB7CiAgICAgICAgICAgICAvKiBDcnlwdEdlblJhbmRvbSgpIGZhaWxlZCAqLwotICAgICAgICAgICAgaWYgKHJhaXNlKQorICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemVkIHRoZSByYW5kb21pemVkIGhhc2ggIgotICAgICAgICAgICAgICAgICAgICAgICAgInNlY3JldCB1c2luZyBDcnlwdG9HZW4pIik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYnVmZmVyICs9IGNodW5rOwpAQCAtODQsMjkgKzg1LDI4IEBACiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpLgogICAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuCiAKLSAgIElmIGZhdGFsIGlzIG5vbnplcm8sIGNhbGwgUHlfRmF0YWxFcnJvcigpIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24KLSAgIG9uIGVycm9yLiAqLworICAgSWYgcmFpc2UgaXMgemVybywgZG9uJ3QgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAqLwogc3RhdGljIGludAotcHlfZ2V0ZW50cm9weSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGZhdGFsKQorcHlfZ2V0ZW50cm9weShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogewogICAgIHdoaWxlIChzaXplID4gMCkgewogICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5X01JTihzaXplLCAyNTYpOwogICAgICAgICBpbnQgcmVzOwogCi0gICAgICAgIGlmICghZmF0YWwpIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwotICAgICAgICAgICAgaWYgKHJlcyA8IDApCi0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0ZW50cm9weSgpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCiAgICAgICAgIGJ1ZmZlciArPSBsZW47CkBAIC0xMjksMjUgKzEyOSwyMiBAQAogICAgICBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiBhbmQgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4KICAgICAgZXhjZXB0aW9uLCBvciBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudCBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLXB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQorcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKIHsKICAgICAvKiBJcyBnZXRyYW5kb20oKSBzdXBwb3J0ZWQgYnkgdGhlIHJ1bm5pbmcga2VybmVsPyBTZXQgdG8gMCBpZiBnZXRyYW5kb20oKQogICAgICAgIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTS4gTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcwogICAgICAgIDExLjMgb3IgbmV3ZXIgKi8KICAgICBzdGF0aWMgaW50IGdldHJhbmRvbV93b3JrcyA9IDE7Ci0KLSAgICAvKiBnZXRyYW5kb20oKSBvbiBMaW51eCB3aWxsIGJsb2NrIGlmIGNhbGxlZCBiZWZvcmUgdGhlIGtlcm5lbCBoYXMKLSAgICAgKiBpbml0aWFsaXplZCB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wuIFRoaXMgd2lsbCBjYXVzZSBQeXRob24KLSAgICAgKiB0byBoYW5nIG9uIHN0YXJ0dXAgaWYgY2FsbGVkIHZlcnkgZWFybHkgaW4gdGhlIGJvb3QgcHJvY2VzcyAtCi0gICAgICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjY4MzkuIFRvIGF2b2lkIHRoaXMsIHVzZSB0aGUKLSAgICAgKiBHUk5EX05PTkJMT0NLIGZsYWcuICovCi0gICAgY29uc3QgaW50IGZsYWdzID0gR1JORF9OT05CTE9DSzsKKyAgICBpbnQgZmxhZ3M7CisgICAgY2hhciAqZGVzdDsKICAgICBsb25nIG47CiAKICAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBmbGFncyA9IGJsb2NraW5nID8gMCA6IEdSTkRfTk9OQkxPQ0s7CisgICAgZGVzdCA9IGJ1ZmZlcjsKICAgICB3aGlsZSAoMCA8IHNpemUpIHsKICNpZmRlZiBzdW4KICAgICAgICAgLyogSXNzdWUgIzI2NzM1OiBPbiBTb2xhcmlzLCBnZXRyYW5kb20oKSBpcyBsaW1pdGVkIHRvIHJldHVybmluZyB1cApAQCAtMTYxLDIzICsxNTgsMjMgQEAKICNpZmRlZiBIQVZFX0dFVFJBTkRPTQogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oYnVmZmVyLCBuLCBmbGFncyk7CisgICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIC8qIE9uIExpbnV4LCB1c2UgdGhlIHN5c2NhbGwoKSBmdW5jdGlvbiBiZWNhdXNlIHRoZSBHTlUgbGliYyBkb2Vzbid0Ci0gICAgICAgICAqIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKLSAgICAgICAgICogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KKyAgICAgICAgICAgZXhwb3NlIHRoZSBMaW51eCBnZXRyYW5kb20oKSBzeXNjYWxsIHlldC4gU2VlOgorICAgICAgICAgICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xNzI1MiAqLwogICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwgZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTg5LDQwICsxODYsMzMgQEAKICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotICAgICAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtCi0gICAgICAgICAgICAgICAgICAgdXJhbmRvbSBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gSW4gdGhpcyBjYXNlLCBmYWxsIGJhY2sgb24KLSAgICAgICAgICAgICAgICAgICByZWFkaW5nIGZyb20gL2Rldi91cmFuZG9tLgogCi0gICAgICAgICAgICAgICAgICAgTm90ZTogSW4gdGhpcyBjYXNlIHRoZSBkYXRhIHJlYWQgd2lsbCBub3QgYmUgcmFuZG9tIHNvCi0gICAgICAgICAgICAgICAgICAgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLiBSZXRhaW5pbmcKLSAgICAgICAgICAgICAgICAgICB0aGUgZXhpc3Rpbmcgc2VtYW50aWNzIGZvciBwcmFjdGljYWwgcHVycG9zZXMuICovCi0gICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKKyAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtIHVyYW5kb20KKyAgICAgICAgICAgICAgIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBGb3IgX1B5UmFuZG9tX0luaXQoKSwgd2UgaWdub3JlIHRoZWlyCisgICAgICAgICAgICAgICBlcnJvciBhbmQgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tIHdoaWNoIG5ldmVyIGJsb2NrcywKKyAgICAgICAgICAgICAgIGV2ZW4gaWYgdGhlIHN5c3RlbSB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQuICovCisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOICYmICFyYWlzZSAmJiAhYmxvY2tpbmcpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldHJhbmRvbSgpIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIik7CisgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSAqLworICAgICAgICAgICAgICAgIC8qIHJldHJ5IGdldHJhbmRvbSgpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCAqLwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAocmFpc2UpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICBkZXN0ICs9IG47CiAgICAgICAgIHNpemUgLT0gbjsKICAgICB9CiAgICAgcmV0dXJuIDE7CkBAIC0yMzksNjQgKzIyOSwyMSBAQAogLyogUmVhZCAnc2l6ZScgcmFuZG9tIGJ5dGVzIGZyb20gcHlfZ2V0cmFuZG9tKCkuIEZhbGwgYmFjayBvbiByZWFkaW5nIGZyb20KICAgIC9kZXYvdXJhbmRvbSBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlLgogCi0gICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KLXN0YXRpYyB2b2lkCi1kZXZfdXJhbmRvbV9ub3JhaXNlKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQotewotICAgIGludCBmZDsKLSAgICBQeV9zc2l6ZV90IG47Ci0KLSAgICBhc3NlcnQgKDAgPCBzaXplKTsKLQotI2lmZGVmIFBZX0dFVFJBTkRPTQotICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgLyogZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLAotICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwotI2VuZGlmCi0KLSAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLSAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBvcGVuIC9kZXYvdXJhbmRvbSIpOwotICAgIH0KLQotICAgIHdoaWxlICgwIDwgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIG4gPSByZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLQotICAgICAgICBpZiAobiA8PSAwKSB7Ci0gICAgICAgICAgICAvKiByZWFkKCkgZmFpbGVkIG9yIHJldHVybmVkIDAgYnl0ZXMgKi8KLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZWFkIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBidWZmZXIgKz0gbjsKLSAgICAgICAgc2l6ZSAtPSBuOwotICAgIH0KLSAgICBjbG9zZShmZCk7Ci19Ci0KLS8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCi0gICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KLQotICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gKGlmIHJhaXNlIGlzIG5vbi16ZXJvKSBhbmQgcmV0dXJuIC0xCisgICBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLWRldl91cmFuZG9tX3B5dGhvbihjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK2Rldl91cmFuZG9tKGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKIHsKICAgICBpbnQgZmQ7CiAgICAgUHlfc3NpemVfdCBuOwotICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CiAjaWZkZWYgUFlfR0VUUkFORE9NCiAgICAgaW50IHJlczsKICNlbmRpZgogCi0gICAgaWYgKHNpemUgPD0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKIAogI2lmZGVmIFBZX0dFVFJBTkRPTQotICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDEpOworICAgIHJlcyA9IHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIGJsb2NraW5nLCByYWlzZSk7CiAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMwNyw2NCArMjU0LDkwIEBACiAgICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCiAjZW5kaWYKIAotICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLwotICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQotICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2Ci0gICAgICAgICAgICB8fCBzdC5zdF9pbm8gIT0gdXJhbmRvbV9jYWNoZS5zdF9pbm8pIHsKLSAgICAgICAgICAgIC8qIFNvbWV0aGluZyBjaGFuZ2VkOiBmb3JnZXQgdGhlIGNhY2hlZCBmZCAoYnV0IGRvbid0IGNsb3NlIGl0LAotICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKLSAgICAgICAgICAgICAgIHRoaXJkLXBhcnR5IGNvZGUpLiAqLwotICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOworCisgICAgaWYgKHJhaXNlKSB7CisgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisKKyAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgeworICAgICAgICAgICAgLyogRG9lcyB0aGUgZmQgcG9pbnQgdG8gdGhlIHNhbWUgdGhpbmcgYXMgYmVmb3JlPyAoaXNzdWUgIzIxMjA3KSAqLworICAgICAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKKyAgICAgICAgICAgICAgICB8fCBzdC5zdF9kZXYgIT0gdXJhbmRvbV9jYWNoZS5zdF9kZXYKKyAgICAgICAgICAgICAgICB8fCBzdC5zdF9pbm8gIT0gdXJhbmRvbV9jYWNoZS5zdF9pbm8pIHsKKyAgICAgICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKKyAgICAgICAgICAgICAgICAgICBzaW5jZSBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nIGltcG9ydGFudCBmb3Igc29tZQorICAgICAgICAgICAgICAgICAgIHRoaXJkLXBhcnR5IGNvZGUpLiAqLworICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKQorICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZkID0gX1B5X29wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKyAgICAgICAgICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOWElPIHx8CisgICAgICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvdXJhbmRvbSAob3IgZXF1aXZhbGVudCkgbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKKyAgICAgICAgICAgICAgICAvKiB1cmFuZG9tX2ZkIHdhcyBpbml0aWFsaXplZCBieSBhbm90aGVyIHRocmVhZCB3aGlsZSB3ZSB3ZXJlCisgICAgICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KKyAgICAgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeV9mc3RhdChmZCwgJnN0KSkgeworICAgICAgICAgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSBmZDsKKyAgICAgICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5zdF9kZXYgPSBzdC5zdF9kZXY7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfaW5vID0gc3Quc3RfaW5vOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOworICAgICAgICAgICAgaWYgKG4gPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgICAgICBzaXplIC09IG47CisgICAgICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKICAgICB9Ci0gICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKLSAgICAgICAgZmQgPSB1cmFuZG9tX2NhY2hlLmZkOwogICAgIGVsc2UgewotICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisgICAgICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOwogICAgICAgICBpZiAoZmQgPCAwKSB7Ci0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOWElPIHx8Ci0gICAgICAgICAgICAgICAgZXJybm8gPT0gRU5PREVWIHx8IGVycm5vID09IEVBQ0NFUykKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvdXJhbmRvbSAob3IgZXF1aXZhbGVudCkgbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAvKiBvdGhlcndpc2UsIGtlZXAgdGhlIE9TRXJyb3IgZXhjZXB0aW9uIHJhaXNlZCBieSBfUHlfb3BlbigpICovCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkgewotICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQotICAgICAgICAgICAgICAgbm90IGhvbGRpbmcgdGhlIEdJTCwga2VlcCBpdC4gKi8KLSAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKKworICAgICAgICB3aGlsZSAoMCA8IHNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOworICAgICAgICAgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOworCisgICAgICAgICAgICBpZiAobiA8PSAwKSB7CisgICAgICAgICAgICAgICAgLyogc3RvcCBvbiBlcnJvciBvciBpZiByZWFkKHNpemUpIHJldHVybmVkIDAgKi8KICAgICAgICAgICAgICAgICBjbG9zZShmZCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IGZkOwotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OwotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfaW5vID0gc3Quc3RfaW5vOwotICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgICAgIHNpemUgLT0gbjsKICAgICAgICAgfQorICAgICAgICBjbG9zZShmZCk7CiAgICAgfQotCi0gICAgZG8gewotICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLSAgICAgICAgaWYgKG4gPT0gLTEpIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAobiA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlYWQgJXppIGJ5dGVzIGZyb20gL2Rldi91cmFuZG9tIiwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBidWZmZXIgKz0gbjsKLSAgICAgICAgc2l6ZSAtPSBuOwotICAgIH0gd2hpbGUgKDAgPCBzaXplKTsKLQogICAgIHJldHVybiAwOwogfQogCkBAIC00MDAsMjkgKzM3Myw2MiBAQAogICAgIH0KIH0KIAorLyogSWYgcmFpc2UgaXMgemVybzoKKyAgIC0gRG9uJ3QgcmFpc2UgZXhjZXB0aW9ucyBvbiBlcnJvcgorICAgLSBEb24ndCBjYWxsIFB5RXJyX0NoZWNrU2lnbmFscygpIG9uIEVJTlRSIChyZXRyeSBkaXJlY3RseSB0aGUgaW50ZXJydXB0ZWQKKyAgICAgc3lzY2FsbCkKKyAgIC0gRG9uJ3QgcmVsZWFzZSB0aGUgR0lMIHRvIGNhbGwgc3lzY2FsbHMuICovCitzdGF0aWMgaW50CitweXVyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBibG9ja2luZywgaW50IHJhaXNlKQoreworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJuZWdhdGl2ZSBhcmd1bWVudCBub3QgYWxsb3dlZCIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICByZXR1cm4gd2luMzJfdXJhbmRvbSgodW5zaWduZWQgY2hhciAqKWJ1ZmZlciwgc2l6ZSwgcmFpc2UpOworI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQorICAgIHJldHVybiBweV9nZXRlbnRyb3B5KGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOworI2Vsc2UKKyAgICByZXR1cm4gZGV2X3VyYW5kb20oYnVmZmVyLCBzaXplLCBibG9ja2luZywgcmFpc2UpOworI2VuZGlmCit9CisKIC8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCiAgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCiAgICBleGNlcHQgbG9uZyBsaXZpbmcgcHJpdmF0ZSBrZXlzIGZvciBhc3ltbWV0cmljIGVuY3J5cHRpb24uCiAKLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIsIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsIGlzIHVzZWQgaW4gYmxvY2tpbmcgbW9kZToKKyAgIGJsb2NrIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgKDEyOCBiaXRzIGFyZQorICAgY29sbGVjdGVkIGJ5IHRoZSBrZXJuZWwpLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLiBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KIGludAogX1B5T1NfVVJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcHl1cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMSwgMSk7Cit9CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIDEpOwotI2VsaWYgZGVmaW5lZChQWV9HRVRFTlRST1BZKQotICAgIHJldHVybiBweV9nZXRlbnRyb3B5KGJ1ZmZlciwgc2l6ZSwgMCk7Ci0jZWxzZQotICAgIHJldHVybiBkZXZfdXJhbmRvbV9weXRob24oKGNoYXIqKWJ1ZmZlciwgc2l6ZSk7Ci0jZW5kaWYKKy8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGZyb20gdGhlIG9wZXJhdGluZyBzeXN0ZW0gcmFuZG9tCisgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBub3Qgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZS4KKworICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIgKHdoZW4gZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkKSwgaWYgdGhlIHN5c3RlbQorICAgdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LCB0aGUgZnVuY3Rpb24gcmV0dXJucyAid2VhayIgZW50cm9weSByZWFkCisgICBmcm9tIC9kZXYvdXJhbmRvbS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitpbnQKK19QeU9TX1VSYW5kb21Ob25ibG9jayh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gcHl1cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCwgMSk7CiB9CiAKIHZvaWQKQEAgLTQzMSw3ICs0MzcsNyBAQAogICAgIGNoYXIgKmVudjsKICAgICB1bnNpZ25lZCBjaGFyICpzZWNyZXQgPSAodW5zaWduZWQgY2hhciAqKSZfUHlfSGFzaFNlY3JldC51YzsKICAgICBQeV9zc2l6ZV90IHNlY3JldF9zaXplID0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0X3QpOwotICAgIGFzc2VydChzZWNyZXRfc2l6ZSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKF9QeV9IYXNoU2VjcmV0X3QpID09IHNpemVvZihfUHlfSGFzaFNlY3JldC51YykpOwogCiAgICAgaWYgKF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKQogICAgICAgICByZXR1cm47CkBAIC00NjMsMTMgKzQ2OSwxNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgKHZvaWQpd2luMzJfdXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICAgICAgKHZvaWQpcHlfZ2V0ZW50cm9weShzZWNyZXQsIHNlY3JldF9zaXplLCAxKTsKLSNlbHNlCi0gICAgICAgIGRldl91cmFuZG9tX25vcmFpc2Uoc2VjcmV0LCBzZWNyZXRfc2l6ZSk7Ci0jZW5kaWYKKyAgICAgICAgaW50IHJlczsKKworICAgICAgICAvKiBfUHlSYW5kb21fSW5pdCgpIGlzIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBQeXRob24gaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAgYW5kIHNvIGV4Y2VwdGlvbnMgY2Fubm90IGJlIHVzZWQgKHVzZSByYWlzZT0wKS4KKworICAgICAgICAgICBfUHlSYW5kb21fSW5pdCgpIG11c3Qgbm90IGJsb2NrIFB5dGhvbiBpbml0aWFsaXphdGlvbjogY2FsbAorICAgICAgICAgICBweXVyYW5kb20oKSBpcyBub24tYmxvY2tpbmcgbW9kZSAoYmxvY2tpbmc9MCk6IHNlZSB0aGUgUEVQIDUyNC4gKi8KKyAgICAgICAgcmVzID0gcHl1cmFuZG9tKHNlY3JldCwgc2VjcmV0X3NpemUsIDAsIDApOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZmFpbGVkIHRvIGdldCByYW5kb20gbnVtYmVycyB0byBpbml0aWFsaXplIFB5dGhvbiIpOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9QeXRob24vc3RydWN0bWVtYmVyLmMgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKaW5kZXggYWYwMjk2ZC4uODZkNGM2NiAxMDA2NDQKLS0tIGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jCisrKyBiL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYwpAQCAtNzQsMTQgKzc0LDEyIEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIGwtPm5hbWUpOwogICAgICAgICBQeV9YSU5DUkVGKHYpOwogICAgICAgICBicmVhazsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgVF9MT05HTE9ORzoKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKihQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKihsb25nIGxvbmcgKilhZGRyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUX1VMT05HTE9ORzoKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFkZHIpOworICAgICAgICB2ID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCoodW5zaWduZWQgbG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAgICAgY2FzZSBUX05PTkU6CiAgICAgICAgIHYgPSBQeV9Ob25lOwogICAgICAgICBQeV9JTkNSRUYodik7CkBAIC0yNjYsMjcgKzI2NCwyNSBAQAogICAgIGNhc2UgVF9TVFJJTkdfSU5QTEFDRToKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlYWRvbmx5IGF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm4gLTE7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6ewotICAgICAgICBQWV9MT05HX0xPTkcgdmFsdWU7Ci0gICAgICAgICooUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZyh2KTsKKyAgICAgICAgbG9uZyBsb25nIHZhbHVlOworICAgICAgICAqKGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgICAgIGlmICgodmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgY2FzZSBUX1VMT05HTE9ORzp7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbHVlOwogICAgICAgICAvKiA/Pz8gUHlMb25nX0FzTG9uZ0xvbmcgYWNjZXB0cyBhbiBpbnQsIGJ1dCBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCiAgICAgICAgICAgICBkb2Vzbid0ID8/PyAqLwogICAgICAgICBpZiAoUHlMb25nX0NoZWNrKHYpKQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKih1bnNpZ25lZCBQWV9MT05HX0xPTkcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmcodik7Ci0gICAgICAgIGlmICgodmFsdWUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICoodW5zaWduZWQgbG9uZyBsb25nKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOworICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jZW5kaWYgLyogSEFWRV9MT05HX0xPTkcgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiYmFkIG1lbWJlcmRlc2NyIHR5cGUgZm9yICVzIiwgbC0+bmFtZSk7CmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IGFkY2EyZGEuLjYxNjVjZmUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC02LDE2ICs2LDIyIEBACiAKIC8qIGVycm9yIHN0cmluZ3MgdXNlZCBmb3Igd2FybmluZ3MgKi8KICNkZWZpbmUgR0xPQkFMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgZ2xvYmFsIGRlY2xhcmF0aW9uIgogCiAjZGVmaW5lIE5PTkxPQ0FMX0FGVEVSX0FTU0lHTiBcCi0ibmFtZSAnJS40MDBzJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIGFzc2lnbmVkIHRvIGJlZm9yZSBub25sb2NhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBHTE9CQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gZ2xvYmFsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9VU0UgXAotIm5hbWUgJyUuNDAwcycgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBub25sb2NhbCBkZWNsYXJhdGlvbiIKKworI2RlZmluZSBHTE9CQUxfQU5OT1QgXAorImFubm90YXRlZCBuYW1lICclVScgY2FuJ3QgYmUgZ2xvYmFsIgorCisjZGVmaW5lIE5PTkxPQ0FMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIG5vbmxvY2FsIgogCiAjZGVmaW5lIElNUE9SVF9TVEFSX1dBUk5JTkcgImltcG9ydCAqIG9ubHkgYWxsb3dlZCBhdCBtb2R1bGUgbGV2ZWwiCiAKQEAgLTYzLDYgKzY5LDcgQEAKICAgICAgICAgc3RlLT5zdGVfbmVzdGVkID0gMTsKICAgICBzdGUtPnN0ZV9jaGlsZF9mcmVlID0gMDsKICAgICBzdGUtPnN0ZV9nZW5lcmF0b3IgPSAwOworICAgIHN0ZS0+c3RlX2Nvcm91dGluZSA9IDA7CiAgICAgc3RlLT5zdGVfcmV0dXJuc192YWx1ZSA9IDA7CiAgICAgc3RlLT5zdGVfbmVlZHNfY2xhc3NfY2xvc3VyZSA9IDA7CiAKQEAgLTE2MCw3ICsxNjcsNiBAQAogfTsKIAogc3RhdGljIGludCBzeW10YWJsZV9hbmFseXplKHN0cnVjdCBzeW10YWJsZSAqc3QpOwotc3RhdGljIGludCBzeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0cnVjdCBzeW10YWJsZSAqc3QsIGlkZW50aWZpZXIgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2Jsb2NrX3R5IGJsb2NrLCB2b2lkICphc3QsIGludCBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0KTsKQEAgLTM3OCw3ICszODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRhdGEsIDIpKSk7CiAKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9ICAgCisgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIkJVRzogaW50ZXJuYWwgZGlyZWN0aXZlIGJvb2trZWVwaW5nIGJyb2tlbiIpOwpAQCAtNjUyLDcgKzY1OCw3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAvKiBIYW5kbGUgZ2xvYmFsIHN5bWJvbCAqLwotICAgICAgICBpZiAoIVB5U2V0X0NvbnRhaW5zKGJvdW5kLCBuYW1lKSkgeworICAgICAgICBpZiAoYm91bmQgJiYgIVB5U2V0X0NvbnRhaW5zKGJvdW5kLCBuYW1lKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICAgICAgY29udGludWU7ICAgICAgIC8qIGl0J3MgYSBnbG9iYWwgKi8KICAgICAgICAgfQpAQCAtOTA2LDI3ICs5MTIsNiBAQAogICAgIHJldHVybiByOwogfQogCi0KLXN0YXRpYyBpbnQKLXN5bXRhYmxlX3dhcm4oc3RydWN0IHN5bXRhYmxlICpzdCwgY2hhciAqbXNnLCBpbnQgbGluZW5vKQotewotICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobXNnKTsKLSAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5RXhjX1N5bnRheFdhcm5pbmcsIG1lc3NhZ2UsIHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgTlVMTCwgTlVMTCkgPCAwKSAgICAgewotICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N5bnRheFdhcm5pbmcpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsIG1zZyk7Ci0gICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsIHN0LT5zdF9jdXItPnN0ZV9saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29sX29mZnNldCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKLSAgICByZXR1cm4gMTsKLX0KLQogLyogc3ltdGFibGVfZW50ZXJfYmxvY2soKSBnZXRzIGEgcmVmZXJlbmNlIHZpYSBzdGVfbmV3LgogICAgVGhpcyByZWZlcmVuY2UgaXMgcmVsZWFzZWQgd2hlbiB0aGUgYmxvY2sgaXMgZXhpdGVkLCB2aWEgdGhlIERFQ1JFRgogICAgaW4gc3ltdGFibGVfZXhpdF9ibG9jaygpLgpAQCAtMTIwMSw2ICsxMTg2LDQzIEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgcy0+di5Bc3NpZ24udGFyZ2V0cyk7CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFzc2lnbi52YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi50YXJnZXQtPmtpbmQgPT0gTmFtZV9raW5kKSB7CisgICAgICAgICAgICBleHByX3R5IGVfbmFtZSA9IHMtPnYuQW5uQXNzaWduLnRhcmdldDsKKyAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBlX25hbWUtPnYuTmFtZS5pZCk7CisgICAgICAgICAgICBpZiAoY3VyIDwgMCkgeworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChjdXIgJiAoREVGX0dMT0JBTCB8IERFRl9OT05MT0NBTCkpCisgICAgICAgICAgICAgICAgJiYgcy0+di5Bbm5Bc3NpZ24uc2ltcGxlKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXIgJiBERUZfR0xPQkFMID8gR0xPQkFMX0FOTk9UIDogTk9OTE9DQUxfQU5OT1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVfbmFtZS0+di5OYW1lLmlkKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJgorICAgICAgICAgICAgICAgICFzeW10YWJsZV9hZGRfZGVmKHN0LCBlX25hbWUtPnYuTmFtZS5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUZfQU5OT1QgfCBERUZfTE9DQUwpKSB7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24udmFsdWUKKyAgICAgICAgICAgICAgICAgICAgJiYgIXN5bXRhYmxlX2FkZF9kZWYoc3QsIGVfbmFtZS0+di5OYW1lLmlkLCBERUZfTE9DQUwpKSB7CisgICAgICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFubkFzc2lnbi50YXJnZXQpOworICAgICAgICB9CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlKSB7CisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVnQXNzaWduX2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LkF1Z0Fzc2lnbi50YXJnZXQpOwogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5BdWdBc3NpZ24udmFsdWUpOwpAQCAtMTI1OCwyMSArMTI4MCwyMSBAQAogICAgICAgICAgICAgbG9uZyBjdXIgPSBzeW10YWJsZV9sb29rdXAoc3QsIG5hbWUpOwogICAgICAgICAgICAgaWYgKGN1ciA8IDApCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7Ci0gICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgICAgIGNoYXIgKmNfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfQUZURVJfQVNTSUdOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX1VTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwotICAgICAgICAgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgYnVmLCBzLT5saW5lbm8pKQotICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIGlmIChjdXIgJiAoREVGX0xPQ0FMIHwgVVNFIHwgREVGX0FOTk9UKSkgeworICAgICAgICAgICAgICAgIGNoYXIqIG1zZzsKKyAgICAgICAgICAgICAgICBpZiAoY3VyICYgVVNFKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BRlRFUl9VU0U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXIgJiBERUZfQU5OT1QpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gR0xPQkFMX0FOTk9UOworICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvKiBERUZfTE9DQUwgKi8KKyAgICAgICAgICAgICAgICAgICAgbXNnID0gR0xPQkFMX0FGVEVSX0FTU0lHTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5bnRheEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2csIG5hbWUpOworICAgICAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uT2JqZWN0KHN0LT5zdF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCk7CisgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX2FkZF9kZWYoc3QsIG5hbWUsIERFRl9HTE9CQUwpKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwpAQCAtMTI4OSwyMSArMTMxMSwyMCBAQAogICAgICAgICAgICAgbG9uZyBjdXIgPSBzeW10YWJsZV9sb29rdXAoc3QsIG5hbWUpOwogICAgICAgICAgICAgaWYgKGN1ciA8IDApCiAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7Ci0gICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSkpIHsKLSAgICAgICAgICAgICAgICBjaGFyIGJ1ZlsyNTZdOwotICAgICAgICAgICAgICAgIGNoYXIgKmNfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFjX25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChjdXIgJiBERUZfTE9DQUwpCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05MT0NBTF9BRlRFUl9BU1NJR04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOT05MT0NBTF9BRlRFUl9VU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3dhcm4oc3QsIGJ1Ziwgcy0+bGluZW5vKSkKLSAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSB8IERFRl9BTk5PVCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyKiBtc2c7CisgICAgICAgICAgICAgICAgaWYgKGN1ciAmIFVTRSkgeworICAgICAgICAgICAgICAgICAgICBtc2cgPSBOT05MT0NBTF9BRlRFUl9VU0U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXIgJiBERUZfQU5OT1QpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQU5OT1Q7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgIC8qIERFRl9MT0NBTCAqLworICAgICAgICAgICAgICAgICAgICBtc2cgPSBOT05MT0NBTF9BRlRFUl9BU1NJR047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwgbXNnLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfTk9OTE9DQUwpKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwpAQCAtMTM0MSw2ICsxMzYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKXMsIHMtPmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KSkKICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKICAgICAgICAgVklTSVQoc3QsIGFyZ3VtZW50cywgcy0+di5Bc3luY0Z1bmN0aW9uRGVmLmFyZ3MpOwogICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5ib2R5KTsKICAgICAgICAgaWYgKCFzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCBzKSkKQEAgLTE0MzYsNyArMTQ1OCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXdhaXRfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQXdhaXQudmFsdWUpOwotICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Db21wYXJlLmxlZnQpOwpAQCAtMTQ0Nyw2ICsxNDY5LDE1IEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5DYWxsLmFyZ3MpOwogICAgICAgICBWSVNJVF9TRVFfV0lUSF9OVUxMKHN0LCBrZXl3b3JkLCBlLT52LkNhbGwua2V5d29yZHMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKyAgICAgICAgaWYgKGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpCisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5Kb2luZWRTdHIudmFsdWVzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgY2FzZSBTdHJfa2luZDoKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CkBAIC0xNjQ3LDYgKzE2NzgsOSBAQAogICAgIFZJU0lUKHN0LCBleHByLCBsYy0+dGFyZ2V0KTsKICAgICBWSVNJVChzdCwgZXhwciwgbGMtPml0ZXIpOwogICAgIFZJU0lUX1NFUShzdCwgZXhwciwgbGMtPmlmcyk7CisgICAgaWYgKGxjLT5pc19hc3luYykgeworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKKyAgICB9CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE2OTksNiArMTczMyw5IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gaXNfZ2VuZXJhdG9yOworICAgIGlmIChvdXRlcm1vc3QtPmlzX2FzeW5jKSB7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOworICAgIH0KICAgICAvKiBPdXRlcm1vc3QgaXRlciBpcyByZWNlaXZlZCBhcyBhbiBhcmd1bWVudCAqLwogICAgIGlmICghc3ltdGFibGVfaW1wbGljaXRfYXJnKHN0LCAwKSkgewogICAgICAgICBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5c21vZHVsZS5jIGIvUHl0aG9uL3N5c21vZHVsZS5jCmluZGV4IDFkYzdkN2MuLmUzNDhiMzggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeXNtb2R1bGUuYworKysgYi9QeXRob24vc3lzbW9kdWxlLmMKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJweXRocmVhZC5oIgogCiAjaW5jbHVkZSAib3NkZWZzLmgiCisjaW5jbHVkZSA8bG9jYWxlLmg+CiAKICNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KQEAgLTMzLDcgKzM0LDYgQEAKICNlbmRpZgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICi0jaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KICNlbmRpZgogCkBAIC0zMTEsNiArMzExLDIzIEBACiApOwogCiBzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoUHlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJmaWxlc3lzdGVtIGVuY29kaW5nIGlzIG5vdCBpbml0aWFsaXplZCIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9yc19kb2MsCisgICAgImdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKSAtPiBzdHJpbmdcblwKK1xuXAorUmV0dXJuIHRoZSBlcnJvciBtb2RlIHVzZWQgdG8gY29udmVydCBVbmljb2RlIGZpbGVuYW1lcyBpblxuXAorb3BlcmF0aW5nIHN5c3RlbSBmaWxlbmFtZXMuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIHN5c19pbnRlcm4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpzOwpAQCAtMzQ2LDggKzM2MywxMCBAQAogc3RhdGljIGludAogdHJhY2VfaW5pdCh2b2lkKQogewotICAgIHN0YXRpYyBjaGFyICp3aGF0bmFtZXNbN10gPSB7ImNhbGwiLCAiZXhjZXB0aW9uIiwgImxpbmUiLCAicmV0dXJuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjX2NhbGwiLCAiY19leGNlcHRpb24iLCAiY19yZXR1cm4ifTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHdoYXRuYW1lc1s3XSA9IHsKKyAgICAgICAgImNhbGwiLCAiZXhjZXB0aW9uIiwgImxpbmUiLCAicmV0dXJuIiwKKyAgICAgICAgImNfY2FsbCIsICJjX2V4Y2VwdGlvbiIsICJjX3JldHVybiIKKyAgICB9OwogICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCA3OyArK2kpIHsKQEAgLTM2NiwzNCArMzg1LDI1IEBACiBjYWxsX3RyYW1wb2xpbmUoUHlPYmplY3QqIGNhbGxiYWNrLAogICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKmZyYW1lLCBpbnQgd2hhdCwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeU9iamVjdCAqYXJnczsKLSAgICBQeU9iamVjdCAqd2hhdHN0cjsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzdGFja1szXTsKIAotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIGlmIChQeUZyYW1lX0Zhc3RUb0xvY2Fsc1dpdGhFcnJvcihmcmFtZSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeUZyYW1lX0Zhc3RUb0xvY2Fsc1dpdGhFcnJvcihmcmFtZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBQeV9JTkNSRUYoZnJhbWUpOwotICAgIHdoYXRzdHIgPSB3aGF0c3RyaW5nc1t3aGF0XTsKLSAgICBQeV9JTkNSRUYod2hhdHN0cik7Ci0gICAgaWYgKGFyZyA9PSBOVUxMKQotICAgICAgICBhcmcgPSBQeV9Ob25lOwotICAgIFB5X0lOQ1JFRihhcmcpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgKFB5T2JqZWN0ICopZnJhbWUpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgd2hhdHN0cik7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAyLCBhcmcpOworICAgIHN0YWNrWzBdID0gKFB5T2JqZWN0ICopZnJhbWU7CisgICAgc3RhY2tbMV0gPSB3aGF0c3RyaW5nc1t3aGF0XTsKKyAgICBzdGFja1syXSA9IChhcmcgIT0gTlVMTCkgPyBhcmcgOiBQeV9Ob25lOwogCiAgICAgLyogY2FsbCB0aGUgUHl0aG9uLWxldmVsIGZ1bmN0aW9uICovCi0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QoY2FsbGJhY2ssIGFyZ3MpOwotICAgIFB5RnJhbWVfTG9jYWxzVG9GYXN0KGZyYW1lLCAxKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIFB5VHJhY2VCYWNrX0hlcmUoZnJhbWUpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYmFjaywgc3RhY2ssIDMpOwogCi0gICAgLyogY2xlYW51cCAqLwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmcmFtZSwgMSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5VHJhY2VCYWNrX0hlcmUoZnJhbWUpOworICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzNCwxMCArNDQ0LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAocmVzdWx0ICE9IFB5X05vbmUpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBmcmFtZS0+Zl90cmFjZTsKLSAgICAgICAgZnJhbWUtPmZfdHJhY2UgPSBOVUxMOwotICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICBmcmFtZS0+Zl90cmFjZSA9IHJlc3VsdDsKKyAgICAgICAgUHlfWFNFVFJFRihmcmFtZS0+Zl90cmFjZSwgcmVzdWx0KTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtNjAyLDMzICs2MDksNiBAQAogCiAjZW5kaWYgLyogV0lUSF9USFJFQUQgKi8KIAotI2lmZGVmIFdJVEhfVFNDCi1zdGF0aWMgUHlPYmplY3QgKgotc3lzX3NldHRzY2R1bXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGludCBib29sOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6c2V0dHNjZHVtcCIsICZib29sKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGJvb2wpCi0gICAgICAgIHRzdGF0ZS0+aW50ZXJwLT50c2NkdW1wID0gMTsKLSAgICBlbHNlCi0gICAgICAgIHRzdGF0ZS0+aW50ZXJwLT50c2NkdW1wID0gMDsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0KLX0KLQotUHlEb2NfU1RSVkFSKHNldHRzY2R1bXBfZG9jLAotInNldHRzY2R1bXAoYm9vbClcblwKLVxuXAotSWYgdHJ1ZSwgdGVsbCB0aGUgUHl0aG9uIGludGVycHJldGVyIHRvIGR1bXAgVk0gbWVhc3VyZW1lbnRzIHRvXG5cCi1zdGRlcnIuICBJZiBmYWxzZSwgdHVybiBvZmYgZHVtcC4gIFRoZSBtZWFzdXJlbWVudHMgYXJlIGJhc2VkIG9uIHRoZVxuXAotcHJvY2Vzc29yJ3MgdGltZS1zdGFtcCBjb3VudGVyLiIKLSk7Ci0jZW5kaWYgLyogVFNDICovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBzeXNfc2V0cmVjdXJzaW9ubGltaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtNzEwLDYgKzY5MCwxMTMgQEAKICk7CiAKIAorc3RhdGljIFB5VHlwZU9iamVjdCBBc3luY0dlbkhvb2tzVHlwZTsKKworUHlEb2NfU1RSVkFSKGFzeW5jZ2VuX2hvb2tzX2RvYywKKyJhc3luY2dlbl9ob29rc1xuXAorXG5cCitBIHN0cnVjdCBzZXF1ZW5jZSBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgYXN5bmhyb25vdXNcblwKK2dlbmVyYXRvcnMgaG9va3MuICBUaGUgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBhc3luY2dlbl9ob29rc19maWVsZHNbXSA9IHsKKyAgICB7ImZpcnN0aXRlciIsICJIb29rIHRvIGludGVyY2VwdCBmaXJzdCBpdGVyYXRpb24ifSwKKyAgICB7ImZpbmFsaXplciIsICJIb29rIHRvIGludGVyY2VwdCBmaW5hbGl6YXRpb24ifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2MgYXN5bmNnZW5faG9va3NfZGVzYyA9IHsKKyAgICAiYXN5bmNnZW5faG9va3MiLCAgICAgICAgICAvKiBuYW1lICovCisgICAgYXN5bmNnZW5faG9va3NfZG9jLCAgICAgICAgLyogZG9jICovCisgICAgYXN5bmNnZW5faG9va3NfZmllbGRzICwgICAgLyogZmllbGRzICovCisgICAgMgorfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX3NldF9hc3luY2dlbl9ob29rcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZmlyc3RpdGVyIiwgImZpbmFsaXplciIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpmaXJzdGl0ZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCisgICAgICAgICAgICBhcmdzLCBrdywgInxPTyIsIGtleXdvcmRzLAorICAgICAgICAgICAgJmZpcnN0aXRlciwgJmZpbmFsaXplcikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZpbmFsaXplciAmJiBmaW5hbGl6ZXIgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZmluYWxpemVyKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUgZmluYWxpemVyIGV4cGVjdGVkLCBnb3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZmluYWxpemVyKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKGZpbmFsaXplcik7CisgICAgfQorICAgIGVsc2UgaWYgKGZpbmFsaXplciA9PSBQeV9Ob25lKSB7CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoTlVMTCk7CisgICAgfQorCisgICAgaWYgKGZpcnN0aXRlciAmJiBmaXJzdGl0ZXIgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZmlyc3RpdGVyKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUgZmlyc3RpdGVyIGV4cGVjdGVkLCBnb3QgJS41MHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZmlyc3RpdGVyKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKGZpcnN0aXRlcik7CisgICAgfQorICAgIGVsc2UgaWYgKGZpcnN0aXRlciA9PSBQeV9Ob25lKSB7CisgICAgICAgIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoTlVMTCk7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRfYXN5bmNnZW5faG9va3NfZG9jLAorInNldF9hc3luY2dlbl9ob29rcygqLCBmaXJzdGl0ZXI9Tm9uZSwgZmluYWxpemVyPU5vbmUpXG5cCitcblwKK1NldCBhIGZpbmFsaXplciBmb3IgYXN5bmMgZ2VuZXJhdG9ycyBvYmplY3RzLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZ2V0X2FzeW5jZ2VuX2hvb2tzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpmaXJzdGl0ZXIgPSBfUHlFdmFsX0dldEFzeW5jR2VuRmlyc3RpdGVyKCk7CisgICAgUHlPYmplY3QgKmZpbmFsaXplciA9IF9QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIoKTsKKworICAgIHJlcyA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZBc3luY0dlbkhvb2tzVHlwZSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmaXJzdGl0ZXIgPT0gTlVMTCkgeworICAgICAgICBmaXJzdGl0ZXIgPSBQeV9Ob25lOworICAgIH0KKworICAgIGlmIChmaW5hbGl6ZXIgPT0gTlVMTCkgeworICAgICAgICBmaW5hbGl6ZXIgPSBQeV9Ob25lOworICAgIH0KKworICAgIFB5X0lOQ1JFRihmaXJzdGl0ZXIpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBmaXJzdGl0ZXIpOworCisgICAgUHlfSU5DUkVGKGZpbmFsaXplcik7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDEsIGZpbmFsaXplcik7CisKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIoZ2V0X2FzeW5jZ2VuX2hvb2tzX2RvYywKKyJnZXRfYXN5bmNnZW5faG9va3MoKVxuXAorXG5cCitSZXR1cm4gYSBuYW1lZHR1cGxlIG9mIGluc3RhbGxlZCBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycyBob29rcyBcCisoZmlyc3RpdGVyLCBmaW5hbGl6ZXIpLiIKKyk7CisKKwogc3RhdGljIFB5VHlwZU9iamVjdCBIYXNoX0luZm9UeXBlOwogCiBQeURvY19TVFJWQVIoaGFzaF9pbmZvX2RvYywKQEAgLTgwNywxMCArODk0LDExIEBACiBUaGUgbWVtYmVycyBhcmUgbmFtZWQ6IG1ham9yLCBtaW5vciwgYnVpbGQsIHBsYXRmb3JtLCBzZXJ2aWNlX3BhY2ssXG5cCiBzZXJ2aWNlX3BhY2tfbWFqb3IsIHNlcnZpY2VfcGFja19taW5vciwgc3VpdGVfbWFzaywgYW5kIHByb2R1Y3RfdHlwZS4gRm9yXG5cCiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBvbmx5IHRoZSBmaXJzdCA1IGl0ZW1zIGFyZSBhdmFpbGFibGUgYnkgaW5kZXhpbmcuXG5cCi1BbGwgZWxlbWVudHMgYXJlIG51bWJlcnMsIGV4Y2VwdCBzZXJ2aWNlX3BhY2sgd2hpY2ggaXMgYSBzdHJpbmcuIFBsYXRmb3JtXG5cCi1tYXkgYmUgMCBmb3Igd2luMzJzLCAxIGZvciBXaW5kb3dzIDl4L01FLCAyIGZvciBXaW5kb3dzIE5ULzIwMDAvWFAvVmlzdGEvNyxcblwKLTMgZm9yIFdpbmRvd3MgQ0UuIFByb2R1Y3RfdHlwZSBtYXkgYmUgMSBmb3IgYSB3b3Jrc3RhdGlvbiwgMiBmb3IgYSBkb21haW5cblwKLWNvbnRyb2xsZXIsIDMgZm9yIGEgc2VydmVyLiIKK0FsbCBlbGVtZW50cyBhcmUgbnVtYmVycywgZXhjZXB0IHNlcnZpY2VfcGFjayBhbmQgcGxhdGZvcm1fdHlwZSB3aGljaCBhcmVcblwKK3N0cmluZ3MsIGFuZCBwbGF0Zm9ybV92ZXJzaW9uIHdoaWNoIGlzIGEgMy10dXBsZS4gUGxhdGZvcm0gaXMgYWx3YXlzIDIuXG5cCitQcm9kdWN0X3R5cGUgbWF5IGJlIDEgZm9yIGEgd29ya3N0YXRpb24sIDIgZm9yIGEgZG9tYWluIGNvbnRyb2xsZXIsIDMgZm9yIGFcblwKK3NlcnZlci4gUGxhdGZvcm1fdmVyc2lvbiBpcyBhIDMtdHVwbGUgY29udGFpbmluZyBhIHZlcnNpb24gbnVtYmVyIHRoYXQgaXNcblwKK2ludGVuZGVkIGZvciBpZGVudGlmeWluZyB0aGUgT1MgcmF0aGVyIHRoYW4gZmVhdHVyZSBkZXRlY3Rpb24uIgogKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBXaW5kb3dzVmVyc2lvblR5cGUgPSB7MCwgMCwgMCwgMCwgMCwgMH07CkBAIC04MjUsNyArOTEzLDcgQEAKICAgICB7InNlcnZpY2VfcGFja19taW5vciIsICJTZXJ2aWNlIFBhY2sgbWlub3IgdmVyc2lvbiBudW1iZXIifSwKICAgICB7InN1aXRlX21hc2siLCAiQml0IG1hc2sgaWRlbnRpZnlpbmcgYXZhaWxhYmxlIHByb2R1Y3Qgc3VpdGVzIn0sCiAgICAgeyJwcm9kdWN0X3R5cGUiLCAiU3lzdGVtIHByb2R1Y3QgdHlwZSJ9LAotICAgIHsiX3BsYXRmb3JtX3ZlcnNpb24iLCAiRGlhZ25vc3RpYyB2ZXJzaW9uIG51bWJlciJ9LAorICAgIHsicGxhdGZvcm1fdmVyc2lvbiIsICJEaWFnbm9zdGljIHZlcnNpb24gbnVtYmVyIn0sCiAgICAgezB9CiB9OwogCkBAIC05MTMsNiArMTAwMSwyNCBAQAogCiAjcHJhZ21hIHdhcm5pbmcocG9wKQogCitQeURvY19TVFJWQVIoZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdfZG9jLAorIl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpXG5cCitcblwKK0NoYW5nZXMgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBtYmNzOnJlcGxhY2UgZm9yIGNvbnNpc3RlbmN5XG5cCit3aXRoIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uLiBTZWUgUEVQIDUyOSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblwKK1xuXAorVGhpcyBpcyBlcXVpdmFsZW50IHRvIGRlZmluaW5nIHRoZSBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElORyBcblwKK2Vudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBsYXVuY2hpbmcgUHl0aG9uLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzeXNfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoUHlPYmplY3QgKnNlbGYpCit7CisgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKKyAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJyZXBsYWNlIjsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogI2lmZGVmIEhBVkVfRExPUEVOCkBAIC0xMTg5LDggKzEyOTUsMTAgQEAKIHN5c19kZWJ1Z21hbGxvY3N0YXRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICNpZmRlZiBXSVRIX1BZTUFMTE9DCi0gICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIGlmIChfUHlNZW1fUHltYWxsb2NFbmFibGVkKCkpIHsKKyAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyAgICAgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICB9CiAjZW5kaWYKICAgICBfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoc3RkZXJyKTsKIApAQCAtMTI3MCw2ICsxMzc4LDggQEAKICNlbmRpZgogICAgIHsiZ2V0ZmlsZXN5c3RlbWVuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKXN5c19nZXRmaWxlc3lzdGVtZW5jb2RpbmcsCiAgICAgIE1FVEhfTk9BUkdTLCBnZXRmaWxlc3lzdGVtZW5jb2RpbmdfZG9jfSwKKyAgICB7ICJnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzIiwgKFB5Q0Z1bmN0aW9uKXN5c19nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzLAorICAgICBNRVRIX05PQVJHUywgZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9yc19kb2MgfSwKICNpZmRlZiBQeV9UUkFDRV9SRUZTCiAgICAgeyJnZXRvYmplY3RzIiwgICAgICBfUHlfR2V0T2JqZWN0cywgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgpAQCAtMTI4NSw2ICsxMzk1LDggQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgeyJnZXR3aW5kb3dzdmVyc2lvbiIsIChQeUNGdW5jdGlvbilzeXNfZ2V0d2luZG93c3ZlcnNpb24sIE1FVEhfTk9BUkdTLAogICAgICBnZXR3aW5kb3dzdmVyc2lvbl9kb2N9LAorICAgIHsiX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nIiwgKFB5Q0Z1bmN0aW9uKXN5c19lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZywKKyAgICAgTUVUSF9OT0FSR1MsIGVuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nX2RvYyB9LAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICB7ImludGVybiIsICAgICAgICAgIHN5c19pbnRlcm4sICAgICBNRVRIX1ZBUkFSR1MsIGludGVybl9kb2N9LAogICAgIHsiaXNfZmluYWxpemluZyIsICAgc3lzX2lzX2ZpbmFsaXppbmcsIE1FVEhfTk9BUkdTLCBpc19maW5hbGl6aW5nX2RvY30sCkBAIC0xMzA5LDkgKzE0MjEsNiBAQAogICAgIHsiZ2V0cHJvZmlsZSIsICAgICAgc3lzX2dldHByb2ZpbGUsIE1FVEhfTk9BUkdTLCBnZXRwcm9maWxlX2RvY30sCiAgICAgeyJzZXRyZWN1cnNpb25saW1pdCIsIHN5c19zZXRyZWN1cnNpb25saW1pdCwgTUVUSF9WQVJBUkdTLAogICAgICBzZXRyZWN1cnNpb25saW1pdF9kb2N9LAotI2lmZGVmIFdJVEhfVFNDCi0gICAgeyJzZXR0c2NkdW1wIiwgc3lzX3NldHRzY2R1bXAsIE1FVEhfVkFSQVJHUywgc2V0dHNjZHVtcF9kb2N9LAotI2VuZGlmCiAgICAgeyJzZXR0cmFjZSIsICAgICAgICBzeXNfc2V0dHJhY2UsIE1FVEhfTywgc2V0dHJhY2VfZG9jfSwKICAgICB7ImdldHRyYWNlIiwgICAgICAgIHN5c19nZXR0cmFjZSwgTUVUSF9OT0FSR1MsIGdldHRyYWNlX2RvY30sCiAgICAgeyJjYWxsX3RyYWNpbmciLCBzeXNfY2FsbF90cmFjaW5nLCBNRVRIX1ZBUkFSR1MsIGNhbGxfdHJhY2luZ19kb2N9LApAQCAtMTMyMSw2ICsxNDMwLDEwIEBACiAgICAgIHNldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAogICAgIHsiZ2V0X2Nvcm91dGluZV93cmFwcGVyIiwgc3lzX2dldF9jb3JvdXRpbmVfd3JhcHBlciwgTUVUSF9OT0FSR1MsCiAgICAgIGdldF9jb3JvdXRpbmVfd3JhcHBlcl9kb2N9LAorICAgIHsic2V0X2FzeW5jZ2VuX2hvb2tzIiwgKFB5Q0Z1bmN0aW9uKXN5c19zZXRfYXN5bmNnZW5faG9va3MsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNldF9hc3luY2dlbl9ob29rc19kb2N9LAorICAgIHsiZ2V0X2FzeW5jZ2VuX2hvb2tzIiwgc3lzX2dldF9hc3luY2dlbl9ob29rcywgTUVUSF9OT0FSR1MsCisgICAgIGdldF9hc3luY2dlbl9ob29rc19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNTAxLDE0ICsxNjE0LDIxIEBACiB2ZXJzaW9uX2luZm8gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBhcyBhIG5hbWVkIHR1cGxlXG5cCiAiCiApCi0jaWZkZWYgTVNfV0lORE9XUworI2lmZGVmIE1TX0NPUkVETEwKIC8qIGNvbmNhdGVuYXRpbmcgc3RyaW5nIGhlcmUgKi8KIFB5RG9jX1NUUigKICJkbGxoYW5kbGUgLS0gW1dpbmRvd3Mgb25seV0gaW50ZWdlciBoYW5kbGUgb2YgdGhlIFB5dGhvbiBETExcblwKIHdpbnZlciAtLSBbV2luZG93cyBvbmx5XSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgUHl0aG9uIERMTFxuXAogIgogKQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KKyNlbmRpZiAvKiBNU19DT1JFRExMICovCisjaWZkZWYgTVNfV0lORE9XUworLyogY29uY2F0ZW5hdGluZyBzdHJpbmcgaGVyZSAqLworUHlEb2NfU1RSKAorIl9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyAtLSBbV2luZG93cyBvbmx5XSBcblwKKyIKKykKKyNlbmRpZgogUHlEb2NfU1RSKAogIl9fc3RkaW5fXyAtLSB0aGUgb3JpZ2luYWwgc3RkaW47IGRvbid0IHRvdWNoIVxuXAogX19zdGRvdXRfXyAtLSB0aGUgb3JpZ2luYWwgc3Rkb3V0OyBkb24ndCB0b3VjaCFcblwKQEAgLTE2ODAsMTUgKzE4MDAsMTEgQEAKIC8qIHN5cy5pbXBsZW1lbnRhdGlvbiB2YWx1ZXMgKi8KICNkZWZpbmUgTkFNRSAiY3B5dGhvbiIKIGNvbnN0IGNoYXIgKl9QeVN5c19JbXBsTmFtZSA9IE5BTUU7Ci0jZGVmaW5lIFFVT1RFKGFyZykgI2FyZwotI2RlZmluZSBTVFJJRlkobmFtZSkgUVVPVEUobmFtZSkKLSNkZWZpbmUgTUFKT1IgU1RSSUZZKFBZX01BSk9SX1ZFUlNJT04pCi0jZGVmaW5lIE1JTk9SIFNUUklGWShQWV9NSU5PUl9WRVJTSU9OKQorI2RlZmluZSBNQUpPUiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikKKyNkZWZpbmUgTUlOT1IgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pCiAjZGVmaW5lIFRBRyBOQU1FICItIiBNQUpPUiBNSU5PUgogY29uc3QgY2hhciAqX1B5U3lzX0ltcGxDYWNoZVRhZyA9IFRBRzsKICN1bmRlZiBOQU1FCi0jdW5kZWYgUVVPVEUKLSN1bmRlZiBTVFJJRlkKICN1bmRlZiBNQUpPUgogI3VuZGVmIE1JTk9SCiAjdW5kZWYgVEFHCkBAIC0xNzMzLDYgKzE4NDksMTYgQEAKICAgICBpZiAocmVzIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKIAorI2lmZGVmIE1VTFRJQVJDSAorICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoTVVMVElBUkNIKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJfbXVsdGlhcmNoIiwgdmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisjZW5kaWYKKwogICAgIC8qIGRpY3QgcmVhZHkgKi8KIAogICAgIG5zID0gX1B5TmFtZXNwYWNlX05ldyhpbXBsX2luZm8pOwpAQCAtMTk0Myw2ICsyMDY5LDE0IEBACiAgICAgU0VUX1NZU19GUk9NX1NUUklORygidGhyZWFkX2luZm8iLCBQeVRocmVhZF9HZXRJbmZvKCkpOwogI2VuZGlmCiAKKyAgICAvKiBpbml0aWFsaXplIGFzeW5jZ2VuX2hvb2tzICovCisgICAgaWYgKEFzeW5jR2VuSG9va3NUeXBlLnRwX25hbWUgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoCisgICAgICAgICAgICAgICAgJkFzeW5jR2VuSG9va3NUeXBlLCAmYXN5bmNnZW5faG9va3NfZGVzYykgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKwogI3VuZGVmIFNFVF9TWVNfRlJPTV9TVFJJTkcKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HX0JPUlJPVwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQpAQCAtMjAzOSw3ICsyMTczLDcgQEAKICNlbmRpZgogI2lmIGRlZmluZWQoSEFWRV9SRUFMUEFUSCkKICAgICB3Y2hhcl90IGZ1bGxwYXRoW01BWFBBVEhMRU5dOwotI2VsaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChNU19XSU5DRSkKKyNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKICAgICB3Y2hhcl90IGZ1bGxwYXRoW01BWF9QQVRIXTsKICNlbmRpZgogCkBAIC0yMDc4LDEwICsyMjEyLDggQEAKICNpZiBTRVAgPT0gJ1xcJyAvKiBTcGVjaWFsIGNhc2UgZm9yIE1TIGZpbGVuYW1lIHN5bnRheCAqLwogICAgIGlmIChfSEFWRV9TQ1JJUFRfQVJHVU1FTlQoYXJnYywgYXJndikpIHsKICAgICAgICAgd2NoYXJfdCAqcTsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKE1TX1dJTkNFKQotICAgICAgICAvKiBUaGlzIGNvZGUgaGVyZSByZXBsYWNlcyB0aGUgZmlyc3QgZWxlbWVudCBpbiBhcmd2IHdpdGggdGhlIGZ1bGwKLSAgICAgICAgcGF0aCB0aGF0IGl0IHJlcHJlc2VudHMuIFVuZGVyIENFLCB0aGVyZSBhcmUgbm8gcmVsYXRpdmUgcGF0aHMgc28KLSAgICAgICAgdGhlIGFyZ3VtZW50IG11c3QgYmUgdGhlIGZ1bGwgcGF0aCBhbnl3YXkuICovCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICAvKiBSZXBsYWNlIHRoZSBmaXJzdCBlbGVtZW50IGluIGFyZ3Ygd2l0aCB0aGUgZnVsbCBwYXRoLiAqLwogICAgICAgICB3Y2hhcl90ICpwdGVtcDsKICAgICAgICAgaWYgKEdldEZ1bGxQYXRoTmFtZVcoYXJndjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgoZnVsbHBhdGgpLApAQCAtMjE1MSw3ICsyMjgzLDcgQEAKIHN0YXRpYyBpbnQKIHN5c19weWZpbGVfd3JpdGVfdW5pY29kZShQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKmZpbGUpCiB7Ci0gICAgUHlPYmplY3QgKndyaXRlciA9IE5VTEwsICphcmdzID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKndyaXRlciA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOwogICAgIGludCBlcnI7CiAKICAgICBpZiAoZmlsZSA9PSBOVUxMKQpAQCAtMjE2MSwxMSArMjI5Myw3IEBACiAgICAgaWYgKHdyaXRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB1bmljb2RlKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3Qod3JpdGVyLCBhcmdzKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEod3JpdGVyLCB1bmljb2RlKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9IGVsc2UgewpAQCAtMjE3Nyw3ICsyMzA1LDYgQEAKICAgICBlcnIgPSAtMTsKIGZpbmFsbHk6CiAgICAgUHlfWERFQ1JFRih3cml0ZXIpOwotICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwogICAgIHJldHVybiBlcnI7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX250LmggYi9QeXRob24vdGhyZWFkX250LmgKaW5kZXggYjI5YjFiNi4uNzRhNmVlOCAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9udC5oCisrKyBiL1B5dGhvbi90aHJlYWRfbnQuaApAQCAtNzcsNyArNzcsNyBAQAogICAgICAgICAvKiB3YWl0IGF0IGxlYXN0IHVudGlsIHRoZSB0YXJnZXQgKi8KICAgICAgICAgRFdPUkQgbm93LCB0YXJnZXQgPSBHZXRUaWNrQ291bnQoKSArIG1pbGxpc2Vjb25kczsKICAgICAgICAgd2hpbGUgKG11dGV4LT5sb2NrZWQpIHsKLSAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIChQWV9MT05HX0xPTkcpbWlsbGlzZWNvbmRzKjEwMDApIDwgMCkgeworICAgICAgICAgICAgaWYgKFB5Q09ORF9USU1FRFdBSVQoJm11dGV4LT5jdiwgJm11dGV4LT5jcywgKGxvbmcgbG9uZyltaWxsaXNlY29uZHMqMTAwMCkgPCAwKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gV0FJVF9GQUlMRUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0xNjEsMTEgKzE2MSw3IEBACiAKIC8qIHRodW5rZXIgdG8gY2FsbCBhZGFwdCBiZXR3ZWVuIHRoZSBmdW5jdGlvbiB0eXBlIHVzZWQgYnkgdGhlIHN5c3RlbSdzCiB0aHJlYWQgc3RhcnQgZnVuY3Rpb24gYW5kIHRoZSBpbnRlcm5hbGx5IHVzZWQgb25lLiAqLwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi1zdGF0aWMgRFdPUkQgV0lOQVBJCi0jZWxzZQogc3RhdGljIHVuc2lnbmVkIF9fc3RkY2FsbAotI2VuZGlmCiBib290c3RyYXAodm9pZCAqY2FsbCkKIHsKICAgICBjYWxsb2JqICpvYmogPSAoY2FsbG9iaiopY2FsbDsKQEAgLTE5MywzMiArMTg5LDE4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBvYmotPmZ1bmMgPSBmdW5jOwogICAgIG9iai0+YXJnID0gYXJnOwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0gICAgaFRocmVhZCA9IENyZWF0ZVRocmVhZChOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChfcHl0aHJlYWRfc3RhY2tzaXplLCBQeV9zc2l6ZV90LCBTSVpFX1QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwLCBvYmosIDAsICZ0aHJlYWRJRCk7Ci0jZWxzZQogICAgIGhUaHJlYWQgPSAoSEFORExFKV9iZWdpbnRocmVhZGV4KDAsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfU0FGRV9ET1dOQ0FTVChfcHl0aHJlYWRfc3RhY2tzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCwgdW5zaWduZWQgaW50KSwKICAgICAgICAgICAgICAgICAgICAgICBib290c3RyYXAsIG9iaiwKICAgICAgICAgICAgICAgICAgICAgICAwLCAmdGhyZWFkSUQpOwotI2VuZGlmCiAgICAgaWYgKGhUaHJlYWQgPT0gMCkgewotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0gICAgICAgIC8qIFNhdmUgZXJyb3IgaW4gdmFyaWFibGUsIHRvIHByZXZlbnQgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudAotICAgICAgICAgICBmcm9tIGNsb2JiZXJpbmcgaXQuICovCi0gICAgICAgIHVuc2lnbmVkIGUgPSBHZXRMYXN0RXJyb3IoKTsKLSAgICAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBmYWlsZWQsIHdpbjMyIGVycm9yIGNvZGUgJXVcbiIsCi0gICAgICAgICAgICAgICAgIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSwgZSkpOwotI2Vsc2UKICAgICAgICAgLyogSSd2ZSBzZWVuIGVycm5vID09IEVBR0FJTiBoZXJlLCB3aGljaCBtZWFucyAidGhlcmUgYXJlCiAgICAgICAgICAqIHRvbyBtYW55IHRocmVhZHMiLgogICAgICAgICAgKi8KICAgICAgICAgaW50IGUgPSBlcnJubzsKICAgICAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBmYWlsZWQsIGVycm5vICVkXG4iLAogICAgICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGUpKTsKLSNlbmRpZgogICAgICAgICB0aHJlYWRJRCA9ICh1bnNpZ25lZCktMTsKICAgICAgICAgSGVhcEZyZWUoR2V0UHJvY2Vzc0hlYXAoKSwgMCwgb2JqKTsKICAgICB9CkBAIC0yNDksMTEgKzIzMSw3IEBACiAgICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBleGl0KDApOwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0gICAgRXhpdFRocmVhZCgwKTsKLSNlbHNlCiAgICAgX2VuZHRocmVhZGV4KDApOwotI2VuZGlmCiB9CiAKIC8qCmRpZmYgLS1naXQgYS9QeXRob24vdHJhY2ViYWNrLmMgYi9QeXRob24vdHJhY2ViYWNrLmMKaW5kZXggOWU3ZmUzYi4uOWY4YzU2OCAxMDA2NDQKLS0tIGEvUHl0aG9uL3RyYWNlYmFjay5jCisrKyBiL1B5dGhvbi90cmFjZWJhY2suYwpAQCAtMzIwLDcgKzMyMCw3IEBACiAgICAgaWYgKGZvYiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChiaW5hcnksICZQeUlkX2Nsb3NlLCAiIik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYmluYXJ5LCAmUHlJZF9jbG9zZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihiaW5hcnkpOwogICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0zNDAsNyArMzQwLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm9iLCAmUHlJZF9jbG9zZSwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm9iLCAmUHlJZF9jbG9zZSwgTlVMTCk7CiAgICAgaWYgKHJlcykKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgZWxzZQpAQCAtNDE4LDYgKzQxOCwxMSBAQAogewogICAgIGludCBlcnIgPSAwOwogICAgIGxvbmcgZGVwdGggPSAwOworICAgIFB5T2JqZWN0ICpsYXN0X2ZpbGUgPSBOVUxMOworICAgIGludCBsYXN0X2xpbmUgPSAtMTsKKyAgICBQeU9iamVjdCAqbGFzdF9uYW1lID0gTlVMTDsKKyAgICBsb25nIGNudCA9IDA7CisgICAgUHlPYmplY3QgKmxpbmU7CiAgICAgUHlUcmFjZWJhY2tPYmplY3QgKnRiMSA9IHRiOwogICAgIHdoaWxlICh0YjEgIT0gTlVMTCkgewogICAgICAgICBkZXB0aCsrOwpAQCAtNDI1LDE2ICs0MzAsNDEgQEAKICAgICB9CiAgICAgd2hpbGUgKHRiICE9IE5VTEwgJiYgZXJyID09IDApIHsKICAgICAgICAgaWYgKGRlcHRoIDw9IGxpbWl0KSB7Ci0gICAgICAgICAgICBlcnIgPSB0Yl9kaXNwbGF5bGluZShmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2xpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICAgICAgICAgIGlmIChsYXN0X2ZpbGUgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSA9PSBsYXN0X2ZpbGUgJiYKKyAgICAgICAgICAgICAgICBsYXN0X2xpbmUgIT0gLTEgJiYgdGItPnRiX2xpbmVubyA9PSBsYXN0X2xpbmUgJiYKKyAgICAgICAgICAgICAgICBsYXN0X25hbWUgIT0gTlVMTCAmJgorICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lID09IGxhc3RfbmFtZSkgeworICAgICAgICAgICAgICAgICAgICBjbnQrKzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoY250ID4gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgIiAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgJWQgbW9yZSB0aW1lc11cbiIsIGNudC0zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChsaW5lLCBmLCBQeV9QUklOVF9SQVcpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGxhc3RfZmlsZSA9IHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9saW5lID0gdGItPnRiX2xpbmVubzsKKyAgICAgICAgICAgICAgICAgICAgbGFzdF9uYW1lID0gdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWU7CisgICAgICAgICAgICAgICAgICAgIGNudCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNudCA8IDMpCisgICAgICAgICAgICAgICAgZXJyID0gdGJfZGlzcGxheWxpbmUoZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2xpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgZGVwdGgtLTsKICAgICAgICAgdGIgPSB0Yi0+dGJfbmV4dDsKICAgICAgICAgaWYgKGVyciA9PSAwKQogICAgICAgICAgICAgZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7CiAgICAgfQorICAgIGlmIChjbnQgPiAzKSB7CisgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIiAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgJWQgbW9yZSB0aW1lc11cbiIsIGNudC0zKTsKKyAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlT2JqZWN0KGxpbmUsIGYsIFB5X1BSSU5UX1JBVyk7CisgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICB9CiAgICAgcmV0dXJuIGVycjsKIH0KIApAQCAtNDg1LDQwICs1MTUsMjYgQEAKIAogICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KIAotc3RhdGljIHZvaWQKLXJldmVyc2Vfc3RyaW5nKGNoYXIgKnRleHQsIGNvbnN0IHNpemVfdCBsZW4pCit2b2lkCitfUHlfRHVtcERlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlKQogewotICAgIGNoYXIgdG1wOwotICAgIHNpemVfdCBpLCBqOwotICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuOwotICAgIGZvciAoaT0wLCBqPWxlbi0xOyBpIDwgajsgaSsrLCBqLS0pIHsKLSAgICAgICAgdG1wID0gdGV4dFtpXTsKLSAgICAgICAgdGV4dFtpXSA9IHRleHRbal07Ci0gICAgICAgIHRleHRbal0gPSB0bXA7Ci0gICAgfQotfQorICAgIC8qIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVxdWlyZWQgZm9yIG91dHB1dCBvZiAlbGxkIG9yICVwLgorICAgICAgIFdlIG5lZWQgYXQgbW9zdCBjZWlsKGxvZzEwKDI1NikqU0laRU9GX0xPTkdfTE9ORykgZGlnaXRzLAorICAgICAgIHBsdXMgMSBmb3IgdGhlIG51bGwgYnl0ZS4gIDUzLzIyIGlzIGFuIHVwcGVyIGJvdW5kIGZvciBsb2cxMCgyNTYpLiAqLworICAgIGNoYXIgYnVmZmVyWzEgKyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjUzLTEpIC8gMjIgKyAxXTsKKyAgICBjaGFyICpwdHIsICplbmQ7CiAKLS8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyA5OTk5OTldIHRvIGRlY2ltYWwsCi0gICBhbmQgd3JpdGUgaXQgaW50byB0aGUgZmlsZSBmZC4KLQotICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KLQotc3RhdGljIHZvaWQKLWR1bXBfZGVjaW1hbChpbnQgZmQsIGludCB2YWx1ZSkKLXsKLSAgICBjaGFyIGJ1ZmZlcls3XTsKLSAgICBpbnQgbGVuOwotICAgIGlmICh2YWx1ZSA8IDAgfHwgOTk5OTk5IDwgdmFsdWUpCi0gICAgICAgIHJldHVybjsKLSAgICBsZW4gPSAwOworICAgIGVuZCA9ICZidWZmZXJbUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikgLSAxXTsKKyAgICBwdHIgPSBlbmQ7CisgICAgKnB0ciA9ICdcMCc7CiAgICAgZG8gewotICAgICAgICBidWZmZXJbbGVuXSA9ICcwJyArICh2YWx1ZSAlIDEwKTsKKyAgICAgICAgLS1wdHI7CisgICAgICAgIGFzc2VydChwdHIgPj0gYnVmZmVyKTsKKyAgICAgICAgKnB0ciA9ICcwJyArICh2YWx1ZSAlIDEwKTsKICAgICAgICAgdmFsdWUgLz0gMTA7Ci0gICAgICAgIGxlbisrOwogICAgIH0gd2hpbGUgKHZhbHVlKTsKLSAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7Ci0gICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIGJ1ZmZlciwgbGVuKTsKKworICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBwdHIsIGVuZCAtIHB0cik7CiB9CiAKIC8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAweGZmZmZmZmZmXSB0byBoZXhhZGVjaW1hbCBvZiAnd2lkdGgnIGRpZ2l0cywKQEAgLTUyNiwyNyArNTQyLDMxIEBACiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKLXN0YXRpYyB2b2lkCi1kdW1wX2hleGFkZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgaW50IHdpZHRoKQordm9pZAorX1B5X0R1bXBIZXhhZGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIFB5X3NzaXplX3Qgd2lkdGgpCiB7Ci0gICAgaW50IGxlbjsKLSAgICBjaGFyIGJ1ZmZlcltzaXplb2YodW5zaWduZWQgbG9uZykgKiAyICsgMV07Ci0gICAgbGVuID0gMDsKKyAgICBjaGFyIGJ1ZmZlcltzaXplb2YodW5zaWduZWQgbG9uZykgKiAyICsgMV0sICpwdHIsICplbmQ7CisgICAgY29uc3QgUHlfc3NpemVfdCBzaXplID0gUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikgLSAxOworCisgICAgaWYgKHdpZHRoID4gc2l6ZSkKKyAgICAgICAgd2lkdGggPSBzaXplOworICAgIC8qIGl0J3Mgb2sgaWYgd2lkdGggaXMgbmVnYXRpdmUgKi8KKworICAgIGVuZCA9ICZidWZmZXJbc2l6ZV07CisgICAgcHRyID0gZW5kOworICAgICpwdHIgPSAnXDAnOwogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyW2xlbl0gPSBQeV9oZXhkaWdpdHNbdmFsdWUgJiAxNV07CisgICAgICAgIC0tcHRyOworICAgICAgICBhc3NlcnQocHRyID49IGJ1ZmZlcik7CisgICAgICAgICpwdHIgPSBQeV9oZXhkaWdpdHNbdmFsdWUgJiAxNV07CiAgICAgICAgIHZhbHVlID4+PSA0OwotICAgICAgICBsZW4rKzsKLSAgICB9IHdoaWxlIChsZW4gPCB3aWR0aCB8fCB2YWx1ZSk7Ci0gICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CisgICAgfSB3aGlsZSAoKGVuZCAtIHB0cikgPCB3aWR0aCB8fCB2YWx1ZSk7CisKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgcHRyLCBlbmQgLSBwdHIpOwogfQogCi0vKiBXcml0ZSBhbiB1bmljb2RlIG9iamVjdCBpbnRvIHRoZSBmaWxlIGZkIHVzaW5nIGFzY2lpK2JhY2tzbGFzaHJlcGxhY2UuCi0KLSAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCi0KLXN0YXRpYyB2b2lkCi1kdW1wX2FzY2lpKGludCBmZCwgUHlPYmplY3QgKnRleHQpCit2b2lkCitfUHlfRHVtcEFTQ0lJKGludCBmZCwgUHlPYmplY3QgKnRleHQpCiB7CiAgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKXRleHQ7CiAgICAgUHlfc3NpemVfdCBpLCBzaXplOwpAQCAtNTU2LDMyICs1NzYsMzYgQEAKICAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKICAgICBQeV9VQ1M0IGNoOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodGV4dCkpCisgICAgICAgIHJldHVybjsKKwogICAgIHNpemUgPSBhc2NpaS0+bGVuZ3RoOwogICAgIGtpbmQgPSBhc2NpaS0+c3RhdGUua2luZDsKLSAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpIHsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICB3c3RyID0gKChQeUFTQ0lJT2JqZWN0ICopdGV4dCktPndzdHI7CisgICAgICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNpemUgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKil0ZXh0KS0+d3N0cl9sZW5ndGg7CisgICAgfQorICAgIGVsc2UgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CiAgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpCiAgICAgICAgICAgICBkYXRhID0gKChQeUFTQ0lJT2JqZWN0Kil0ZXh0KSArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGRhdGEgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKXRleHQpICsgMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgIGVsc2UgewogICAgICAgICBkYXRhID0gKChQeVVuaWNvZGVPYmplY3QgKil0ZXh0KS0+ZGF0YS5hbnk7CiAgICAgICAgIGlmIChkYXRhID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICB3c3RyID0gKChQeUFTQ0lJT2JqZWN0ICopdGV4dCktPndzdHI7Ci0gICAgICAgIGlmICh3c3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNpemUgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKil0ZXh0KS0+d3N0cl9sZW5ndGg7Ci0gICAgfQogCiAgICAgaWYgKE1BWF9TVFJJTkdfTEVOR1RIIDwgc2l6ZSkgewogICAgICAgICBzaXplID0gTUFYX1NUUklOR19MRU5HVEg7CiAgICAgICAgIHRydW5jYXRlZCA9IDE7CiAgICAgfQotICAgIGVsc2UKKyAgICBlbHNlIHsKICAgICAgICAgdHJ1bmNhdGVkID0gMDsKKyAgICB9CiAKICAgICBmb3IgKGk9MDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKQEAgLTU5NSwxOSArNjE5LDIwIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZikgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxceCIpOwotICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDIpOworICAgICAgICAgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwgY2gsIDIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmZmZikgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxcdSIpOwotICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDQpOworICAgICAgICAgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwgY2gsIDQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUFVUUyhmZCwgIlxcVSIpOwotICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgY2gsIDgpOworICAgICAgICAgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwgY2gsIDgpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmICh0cnVuY2F0ZWQpCisgICAgaWYgKHRydW5jYXRlZCkgewogICAgICAgICBQVVRTKGZkLCAiLi4uIik7CisgICAgfQogfQogCiAvKiBXcml0ZSBhIGZyYW1lIGludG8gdGhlIGZpbGUgZmQ6ICJGaWxlICJ4eHgiLCBsaW5lIHh4eCBpbiB4eHgiLgpAQCAtNjI2LDcgKzY1MSw3IEBACiAgICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19maWxlbmFtZSkpCiAgICAgewogICAgICAgICBQVVRTKGZkLCAiXCIiKTsKLSAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICBfUHlfRHVtcEFTQ0lJKGZkLCBjb2RlLT5jb19maWxlbmFtZSk7CiAgICAgICAgIFBVVFMoZmQsICJcIiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKQEAgLTYzNSwxNCArNjYwLDIxIEBACiAgICAgLyogUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgd2FzIGludHJvZHVjZWQgaW4gUHl0aG9uIDIuNy4wIGFuZCAzLjIuMCAqLwogICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoY29kZSwgZnJhbWUtPmZfbGFzdGkpOwogICAgIFBVVFMoZmQsICIsIGxpbmUgIik7Ci0gICAgZHVtcF9kZWNpbWFsKGZkLCBsaW5lbm8pOworICAgIGlmIChsaW5lbm8gPj0gMCkgeworICAgICAgICBfUHlfRHVtcERlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKWxpbmVubyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CisgICAgfQogICAgIFBVVFMoZmQsICIgaW4gIik7CiAKICAgICBpZiAoY29kZSAhPSBOVUxMICYmIGNvZGUtPmNvX25hbWUgIT0gTlVMTAotICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fbmFtZSkpCi0gICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX25hbWUpOwotICAgIGVsc2UKKyAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fbmFtZSkpIHsKKyAgICAgICAgX1B5X0R1bXBBU0NJSShmZCwgY29kZS0+Y29fbmFtZSk7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CisgICAgfQogCiAgICAgUFVUUyhmZCwgIlxuIik7CiB9CkBAIC02OTgsNyArNzMwLDkgQEAKICAgICAgICAgUFVUUyhmZCwgIkN1cnJlbnQgdGhyZWFkIDB4Iik7CiAgICAgZWxzZQogICAgICAgICBQVVRTKGZkLCAiVGhyZWFkIDB4Iik7Ci0gICAgZHVtcF9oZXhhZGVjaW1hbChmZCwgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsIHNpemVvZih1bnNpZ25lZCBsb25nKSoyKTsKKyAgICBfUHlfRHVtcEhleGFkZWNpbWFsKGZkLAorICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodW5zaWduZWQgbG9uZykgKiAyKTsKICAgICBQVVRTKGZkLCAiIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbiIpOwogfQogCkBAIC03MTAsMTEgKzc0NCw1NiBAQAogICAgaGFuZGxlcnMgaWYgc2lnbmFscyB3ZXJlIHJlY2VpdmVkLiAqLwogY29uc3QgY2hhcioKIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKQorICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdHN0YXRlKQogewogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICB1bnNpZ25lZCBpbnQgbnRocmVhZHM7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygpIGlzIGNhbGxlZCBmcm9tIHNpZ25hbCBoYW5kbGVycyBieQorICAgICAgICAgICBmYXVsdGhhbmRsZXIuCisKKyAgICAgICAgICAgU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBhcmUgc3luY2hyb25vdXMgc2lnbmFscworICAgICAgICAgICBhbmQgYXJlIHRodXMgZGVsaXZlcmVkIHRvIHRoZSB0aHJlYWQgdGhhdCBjYXVzZWQgdGhlIGZhdWx0LiBHZXQgdGhlCisgICAgICAgICAgIFB5dGhvbiB0aHJlYWQgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLgorCisgICAgICAgICAgIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkCisgICAgICAgICAgIHRoZSBmYXVsdCBpZiB0aGUgdGhyZWFkIHJlbGVhc2VkIHRoZSBHSUwsIGFuZCBzbyB0aGlzIGZ1bmN0aW9uCisgICAgICAgICAgIGNhbm5vdCBiZSB1c2VkLiBSZWFkIHRoZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBpbnN0ZWFkOiBjYWxsCisgICAgICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCisgICAgICAgIGN1cnJlbnRfdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKKyAgICB9CisKKyAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGludGVycCA9IF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUoKTsKKyAgICAgICAgICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIFdlIG5lZWQgdGhlIGludGVycHJldGVyIHN0YXRlIHRvIGdldCBQeXRob24gdGhyZWFkcyAqLworICAgICAgICAgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50ZXJwID0gY3VycmVudF90c3RhdGUtPmludGVycDsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyogQ2FsbCBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKSBpbnN0ZWFkIG9mIFB5VGhyZWFkU3RhdGVfR2V0KCkKKyAgICAgICAgICAgdG8gbm90IGZhaWwgd2l0aCBhIGZhdGFsIGVycm9yIGlmIHRoZSB0aHJlYWQgc3RhdGUgaXMgTlVMTC4gKi8KKyAgICAgICAgY3VycmVudF90c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKKyAgICB9CisKKyAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRfdHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFdlIG5lZWQgdGhlIGludGVycHJldGVyIHN0YXRlIHRvIGdldCBQeXRob24gdGhyZWFkcyAqLworICAgICAgICAgICAgcmV0dXJuICJ1bmFibGUgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZSI7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJwID0gY3VycmVudF90c3RhdGUtPmludGVycDsKKyAgICB9CisjZW5kaWYKKyAgICBhc3NlcnQoaW50ZXJwICE9IE5VTEwpOworCiAgICAgLyogR2V0IHRoZSBjdXJyZW50IGludGVycHJldGVyIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkICovCiAgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKICAgICBpZiAodHN0YXRlID09IE5VTEwpCkBAIC03MzIsNyArODExLDcgQEAKICAgICAgICAgICAgIFBVVFMoZmQsICIuLi5cbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgd3JpdGVfdGhyZWFkX2lkKGZkLCB0c3RhdGUsIHRzdGF0ZSA9PSBjdXJyZW50X3RocmVhZCk7CisgICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90c3RhdGUpOwogICAgICAgICBkdW1wX3RyYWNlYmFjayhmZCwgdHN0YXRlLCAwKTsKICAgICAgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXh0KHRzdGF0ZSk7CiAgICAgICAgIG50aHJlYWRzKys7CmRpZmYgLS1naXQgYS9QeXRob24vd29yZGNvZGVfaGVscGVycy5oIGIvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGUzYTkxCi0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaApAQCAtMCwwICsxLDQxIEBACisvKiBUaGlzIGZpbGUgY29udGFpbnMgY29kZSBzaGFyZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCB0aGUgcGVlcGhvbGUKKyAgIG9wdGltaXplci4KKyAqLworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisjICBkZWZpbmUgUEFDS09QQVJHKG9wY29kZSwgb3BhcmcpICgoX1B5X0NPREVVTklUKSgoKG9wY29kZSkgPDwgOCkgfCAob3BhcmcpKSkKKyNlbHNlCisjICBkZWZpbmUgUEFDS09QQVJHKG9wY29kZSwgb3BhcmcpICgoX1B5X0NPREVVTklUKSgoKG9wYXJnKSA8PCA4KSB8IChvcGNvZGUpKSkKKyNlbmRpZgorCisvKiBNaW5pbXVtIG51bWJlciBvZiBjb2RlIHVuaXRzIG5lY2Vzc2FyeSB0byBlbmNvZGUgaW5zdHJ1Y3Rpb24gd2l0aAorICAgRVhURU5ERURfQVJHcyAqLworc3RhdGljIGludAoraW5zdHJzaXplKHVuc2lnbmVkIGludCBvcGFyZykKK3sKKyAgICByZXR1cm4gb3BhcmcgPD0gMHhmZiA/IDEgOgorICAgICAgICBvcGFyZyA8PSAweGZmZmYgPyAyIDoKKyAgICAgICAgb3BhcmcgPD0gMHhmZmZmZmYgPyAzIDoKKyAgICAgICAgNDsKK30KKworLyogU3BpdHMgb3V0IG9wL29wYXJnIHBhaXIgdXNpbmcgaWxlbiBieXRlcy4gY29kZXN0ciBzaG91bGQgYmUgcG9pbnRlZCBhdCB0aGUKKyAgIGRlc2lyZWQgbG9jYXRpb24gb2YgdGhlIGZpcnN0IEVYVEVOREVEX0FSRyAqLworc3RhdGljIHZvaWQKK3dyaXRlX29wX2FyZyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgIHVuc2lnbmVkIGludCBvcGFyZywgaW50IGlsZW4pCit7CisgICAgc3dpdGNoIChpbGVuKSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcoRVhURU5ERURfQVJHLCAob3BhcmcgPj4gMjQpICYgMHhmZik7CisgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcoRVhURU5ERURfQVJHLCAob3BhcmcgPj4gMTYpICYgMHhmZik7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcoRVhURU5ERURfQVJHLCAob3BhcmcgPj4gOCkgJiAweGZmKTsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgKmNvZGVzdHIrKyA9IFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnICYgMHhmZik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggNDE0YjY1OC4uZTE5YThhZSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw1ICsxLDUgQEAKLVRoaXMgaXMgUHl0aG9uIHZlcnNpb24gMy41LjMgcmVsZWFzZSBjYW5kaWRhdGUgMQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNi4wIGJldGEgMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLAogMjAxMiwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yOCw5ICsyOCw5IEBACiBlbHNld2hlcmUgaXQncyBqdXN0IHB5dGhvbi4KIAogT24gTWFjIE9TIFgsIGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgUHl0aG9uIHdpdGggLS1lbmFibGUtZnJhbWV3b3JrLCB5b3Ugc2hvdWxkCi11c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzCi10aGUgUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkKLXdhbnQgdG8gc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KK3VzZSAibWFrZSBmcmFtZXdvcmtpbnN0YWxsIiB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLiAgTm90ZSB0aGF0IHRoaXMgaW5zdGFsbHMgdGhlCitQeXRob24gZXhlY3V0YWJsZSBpbiBhIHBsYWNlIHRoYXQgaXMgbm90IG5vcm1hbGx5IG9uIHlvdXIgUEFUSCwgeW91IG1heSB3YW50IHRvCitzZXQgdXAgYSBzeW1saW5rIGluIC91c3IvbG9jYWwvYmluLgogCiBPbiBXaW5kb3dzLCBzZWUgUENidWlsZC9yZWFkbWUudHh0LgogCkBAIC04OSw5ICs4OSw5IEBACiAtLS0tLS0tLS0tCiAKIFdlIGhhdmUgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3IG9mIHRoZSBjaGFuZ2VzIGluIHRoZSAiV2hhdCdzIE5ldyBpbgotUHl0aG9uIDMuNSIgZG9jdW1lbnQsIGZvdW5kIGF0CitQeXRob24gMy42IiBkb2N1bWVudCwgZm91bmQgYXQKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L3doYXRzbmV3LzMuNS5odG1sCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L3doYXRzbmV3LzMuNi5odG1sCiAKIEZvciBhIG1vcmUgZGV0YWlsZWQgY2hhbmdlIGxvZywgcmVhZCBNaXNjL05FV1MgKHRob3VnaCB0aGlzIGZpbGUsIHRvbywKIGlzIGluY29tcGxldGUsIGFuZCBhbHNvIGRvZXNuJ3QgbGlzdCBhbnl0aGluZyBtZXJnZWQgaW4gZnJvbSB0aGUgMi43CkBAIC0xMDQsOSArMTA0LDkgQEAKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNSBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CitEb2N1bWVudGF0aW9uIGZvciBQeXRob24gMy42IGlzIG9ubGluZSwgdXBkYXRlZCBkYWlseToKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41LworICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC0xMTYsNyArMTE2LDcgQEAKIElmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIGRldmVsb3BtZW50IG9mIFB5dGhvbiwgcmVsZXZhbnQKIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIGF0OgogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8KIAogRm9yIGluZm9ybWF0aW9uIGFib3V0IGJ1aWxkaW5nIFB5dGhvbidzIGRvY3VtZW50YXRpb24sIHJlZmVyIHRvIERvYy9SRUFETUUudHh0LgogCkBAIC0xMzEsNyArMTMxLDcgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjUvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKIAogVGVzdGluZwpAQCAtMTYxLDE2ICsxNjEsMTYgQEAKIAogT24gVW5peCBhbmQgTWFjIHN5c3RlbXMgaWYgeW91IGludGVuZCB0byBpbnN0YWxsIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbgogdXNpbmcgdGhlIHNhbWUgaW5zdGFsbGF0aW9uIHByZWZpeCAoLS1wcmVmaXggYXJndW1lbnQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQpCi15b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5Ci10aGUgaW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZAotdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKLXNpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzCi10byAke3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZwotdGhlIHNhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiCi12ZXJzaW9uLiAgSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlcgotdmVyc2lvbnMgdXNpbmcgIm1ha2UgYWx0aW5zdGFsbCIuCit5b3UgbXVzdCB0YWtlIGNhcmUgdGhhdCB5b3VyIHByaW1hcnkgcHl0aG9uIGV4ZWN1dGFibGUgaXMgbm90IG92ZXJ3cml0dGVuIGJ5IHRoZQoraW5zdGFsbGF0aW9uIG9mIGEgZGlmZmVyZW50IHZlcnNpb24uICBBbGwgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluc3RhbGxlZCB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIgY29udGFpbiB0aGUgbWFqb3IgYW5kIG1pbm9yIHZlcnNpb24gYW5kIGNhbiB0aHVzIGxpdmUKK3NpZGUtYnktc2lkZS4gICJtYWtlIGluc3RhbGwiIGFsc28gY3JlYXRlcyAke3ByZWZpeH0vYmluL3B5dGhvbjMgd2hpY2ggcmVmZXJzIHRvCiske3ByZWZpeH0vYmluL3B5dGhvblguWS4gIElmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyB1c2luZyB0aGUKK3NhbWUgcHJlZml4IHlvdSBtdXN0IGRlY2lkZSB3aGljaCB2ZXJzaW9uIChpZiBhbnkpIGlzIHlvdXIgInByaW1hcnkiIHZlcnNpb24uCitJbnN0YWxsIHRoYXQgdmVyc2lvbiB1c2luZyAibWFrZSBpbnN0YWxsIi4gIEluc3RhbGwgYWxsIG90aGVyIHZlcnNpb25zIHVzaW5nCisibWFrZSBhbHRpbnN0YWxsIi4KIAotRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjUgd2l0aCAyLjcgYmVpbmcgdGhlCitGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnQgdG8gaW5zdGFsbCBQeXRob24gMi42LCAyLjcgYW5kIDMuNiB3aXRoIDIuNyBiZWluZyB0aGUKIHByaW1hcnkgdmVyc2lvbiwgeW91IHdvdWxkIGV4ZWN1dGUgIm1ha2UgaW5zdGFsbCIgaW4geW91ciAyLjcgYnVpbGQgZGlyZWN0b3J5CiBhbmQgIm1ha2UgYWx0aW5zdGFsbCIgaW4gdGhlIG90aGVycy4KIApAQCAtMTgxLDcgKzE4MSw3IEBACiBXZSdyZSBzb2xpY2l0aW5nIGJ1ZyByZXBvcnRzIGFib3V0IGFsbCBhc3BlY3RzIG9mIHRoZSBsYW5ndWFnZS4gIEZpeGVzIGFyZSBhbHNvCiB3ZWxjb21lLCBwcmVmZXJhYmx5IGluIHVuaWZpZWQgZGlmZiBmb3JtYXQuICBQbGVhc2UgdXNlIHRoZSBpc3N1ZSB0cmFja2VyOgogCi0gICAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8KKyAgICBodHRwczovL2J1Z3MucHl0aG9uLm9yZy8KIAogSWYgeW91J3JlIG5vdCBzdXJlIHdoZXRoZXIgeW91J3JlIGRlYWxpbmcgd2l0aCBhIGJ1ZyBvciBhIGZlYXR1cmUsIHVzZSB0aGUKIG1haWxpbmcgbGlzdDoKQEAgLTE5MCwyMyArMTkwLDIzIEBACiAKIFRvIHN1YnNjcmliZSB0byB0aGUgbGlzdCwgdXNlIHRoZSBtYWlsbWFuIGZvcm06CiAKLSAgICBodHRwOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWRldi8KKyAgICBodHRwczovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCiAKIAogUHJvcG9zYWxzIGZvciBlbmhhbmNlbWVudAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBJZiB5b3UgaGF2ZSBhIHByb3Bvc2FsIHRvIGNoYW5nZSBQeXRob24sIHlvdSBtYXkgd2FudCB0byBzZW5kIGFuIGVtYWlsIHRvIHRoZQotY29tcC5sYW5nLnB5dGhvbiBvciBweXRob24taWRlYXMgbWFpbGluZyBsaXN0cyBmb3IgaW5pdGFsIGZlZWRiYWNrLiAgQSBQeXRob24KK2NvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRpYWwgZmVlZGJhY2suICBBIFB5dGhvbgogRW5oYW5jZW1lbnQgUHJvcG9zYWwgKFBFUCkgbWF5IGJlIHN1Ym1pdHRlZCBpZiB5b3VyIGlkZWEgZ2FpbnMgZ3JvdW5kLiAgQWxsCiBjdXJyZW50IFBFUHMsIGFzIHdlbGwgYXMgZ3VpZGVsaW5lcyBmb3Igc3VibWl0dGluZyBhIG5ldyBQRVAsIGFyZSBsaXN0ZWQgYXQKLWh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCitodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzLy4KIAogCiBSZWxlYXNlIFNjaGVkdWxlCiAtLS0tLS0tLS0tLS0tLS0tCiAKLVNlZSBQRVAgNDc4IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3OC8KK1NlZSBQRVAgNDk0IGZvciByZWxlYXNlIGRldGFpbHM6IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0OTQvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCkBAIC0yMzAsMyArMjMwLDQgQEAKIGNvZGUgYnV0IHRoZXNlIGFyZSBlbnRpcmVseSBvcHRpb25hbC4KIAogQWxsIHRyYWRlbWFya3MgcmVmZXJlbmNlZCBoZXJlaW4gYXJlIHByb3BlcnR5IG9mIHRoZWlyIHJlc3BlY3RpdmUgaG9sZGVycy4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzc0MDdiLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxidWlsZC5iYXQgLWQgLWUgLWsgLXAgeDY0DQotY2FsbCAiJX5kcDBidWlsZC5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUzYzdjMS4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNsZWFuIiBzdGVwLg0KLUBlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLg0KLUBlY2hvIFRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhpcyBzY3JpcHQsIHVzZSBgY2xlYW4uYmF0YCBmcm9tIHRoaXMNCi1AZWNobyBkaXJlY3RvcnkgYW5kIHBhc3MgYC1wIHg2NGAgYXMgdHdvIGFyZ3VtZW50cy4NCi1jYWxsICIlfmRwMGNsZWFuLmJhdCIgLXAgeDY0ICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CmluZGV4IDBmYzY4ZmQuLjEzZTY2NzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKQEAgLTE0LDMgKzE0LDQgQEAKIA0KIGVjaG8gRGVsZXRpbmcgdGVzdCBsZWZ0b3ZlcnMgLi4uDQogcm1kaXIgL3MgL3EgIiVyb290JVxidWlsZCINCitkZWwgL3MgIiVwY2J1aWxkJVxweXRob24qLnppcCINCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWVmMDUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBQbGVhc2UgdXNlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgaW5zdGVhZC4NCi1AIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYWVmMDUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBQbGVhc2UgdXNlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgaW5zdGVhZC4NCi1AIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDgzMjljLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QtYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJ0ZXN0IiBzdGVwLg0KLUBlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLg0KLUBlY2hvIFRvIGdldCB0aGUgc2FtZSBlZmZlY3QgYXMgdGhpcyBzY3JpcHQsIHVzZQ0KLUBlY2hvICAgICBQQ2J1aWxkXHJ0LmJhdCAtcSAtZCAteDY0IC11YWxsIC1yd1cNCi1AZWNobyBvciB1c2UgYHRlc3QuYmF0YCBpbiB0aGlzIGRpcmVjdG9yeSBhbmQgcGFzcyBgLXg2NGAgYXMgYW4gYXJndW1lbnQuDQotY2FsbCAiJX5kcDB0ZXN0LmJhdCIgLXg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKaW5kZXggZmY3ZDE2Ny4uYTMyZDM4YiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQKQEAgLTQsNyArNCw3IEBACiANCiBzZXQgaGVyZT0lfmRwMA0KIHNldCBydF9vcHRzPS1xIC1kDQotc2V0IHJlZ3J0ZXN0X2FyZ3M9DQorc2V0IHJlZ3J0ZXN0X2FyZ3M9LWoxDQogDQogOkNoZWNrT3B0cw0KIGlmICIlMSI9PSIteDY0IiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCkBAIC0xNiw0ICsxNiw0IEBACiBpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdF9hcmdzPSVyZWdydGVzdF9hcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQogDQogZWNobyBvbg0KLWNhbGwgIiVoZXJlJS4uXC4uXFBDYnVpbGRccnQuYmF0IiAlcnRfb3B0cyUgLXVhbGwgLXJ3VyAtLXRpbWVvdXQ9MzYwMCAlcmVncnRlc3RfYXJncyUNCitjYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS1zbG93ZXN0IC0tdGltZW91dD0xMjAwICVyZWdydGVzdF9hcmdzJQ0KZGlmZiAtLWdpdCBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgYi9Ub29scy9jbGluaWMvY2xpbmljLnB5CmluZGV4IGY2MTVlZDkuLjc1YWM2NzMgMTAwNzU1Ci0tLSBhL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKKysrIGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQpAQCAtNjQ0LDcgKzY0NCw3IEBACiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCiAKLSAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtZXRlcnMgYW5kIChwYXJhbWV0ZXJzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtZXRlcnMgYW5kIHBhcmFtZXRlcnNbLTFdLmlzX3Bvc2l0aW9uYWxfb25seSgpCiAgICAgICAgIGFsbF9ib3Jpbmdfb2JqZWN0cyA9IEZhbHNlICMgeWVzLCB0aGlzIHdpbGwgYmUgZmFsc2UgaWYgdGhlcmUgYXJlIDAgcGFyYW1ldGVycywgaXQncyBmaW5lCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHBhcmFtZXRlcnMpCiAgICAgICAgIGZvciBpLCBwIGluIGVudW1lcmF0ZShwYXJhbWV0ZXJzKToKQEAgLTY2MSw3ICs2NjEsNyBAQAogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAKICAgICAgICAgbWV0aF9vID0gKGxlbihwYXJhbWV0ZXJzKSA9PSAxIGFuZAotICAgICAgICAgICAgICBwYXJhbWV0ZXJzWzBdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGFuZAorICAgICAgICAgICAgICBwYXJhbWV0ZXJzWzBdLmlzX3Bvc2l0aW9uYWxfb25seSgpIGFuZAogICAgICAgICAgICAgICBub3QgY29udmVydGVyc1swXS5pc19vcHRpb25hbCgpIGFuZAogICAgICAgICAgICAgICBub3QgbmV3X29yX2luaXQpCiAKQEAgLTcwNSw2ICs3MDUsMTEgQEAKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKICAgICAgICAgICAgICIiIikKIAorICAgICAgICBwYXJzZXJfcHJvdG90eXBlX2Zhc3RjYWxsID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgorICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCisgICAgICAgICAgICAiIiIpCisKICAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV92YXJhcmdzID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKgogICAgICAgICAgICAge2NfYmFzZW5hbWV9KHtzZWxmX3R5cGV9e3NlbGZfbmFtZX0sIFB5T2JqZWN0ICphcmdzKQpAQCAtNzQzLDcgKzc0OCwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIG91dHB1dCgpCiAKICAgICAgICAgZGVmIGluc2VydF9rZXl3b3JkcyhzKToKLSAgICAgICAgICAgIHJldHVybiBsaW5lYXJfZm9ybWF0KHMsIGRlY2xhcmF0aW9ucz0ic3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG57ZGVjbGFyYXRpb25zfSIpCisgICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9CisgICAgICAgICAgICAgICAgJ3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7e3trZXl3b3Jkc30sIE5VTEx9fTtcbicKKyAgICAgICAgICAgICAgICAnc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHt7Intmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywgMH19O1xuJworICAgICAgICAgICAgICAgICd7ZGVjbGFyYXRpb25zfScpCiAKICAgICAgICAgaWYgbm90IHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAjIG5vIHBhcmFtZXRlcnMsIE1FVEhfTk9BUkdTCkBAIC03OTcsOCArODA1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgIiIiICUgYXJnbmFtZSkKIAogICAgICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2UoJXMsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUsIGluZGVudD00KSkKIAogICAgICAgICBlbGlmIGhhc19vcHRpb25fZ3JvdXBzOgpAQCAtODIyLDggKzgzMSw5IEBACiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIntuYW1lfSIsCiAgICAgICAgICAgICAgICAgICAgIHt1bnBhY2tfbWlufSwge3VucGFja19tYXh9LAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBwb3NpdGlvbmFsOgpAQCAtODM1LDEwICs4NDUsMjQgQEAKIAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKIAorICAgICAgICBlbGlmIG5vdCBuZXdfb3JfaW5pdDoKKyAgICAgICAgICAgIGZsYWdzID0gIk1FVEhfRkFTVENBTEwiCisKKyAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX2Zhc3RjYWxsCisKKyAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7eworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfX0KKyAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KQorICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBib2R5KQorICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBpbnNlcnRfa2V5d29yZHMocGFyc2VyX2RlZmluaXRpb24pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIHBvc2l0aW9uYWwtb3Ita2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgICAgIGZsYWdzID0gIk1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTIgpAQCAtODQ2LDE1ICs4NzAsMTIgQEAKICAgICAgICAgICAgIHBhcnNlcl9wcm90b3R5cGUgPSBwYXJzZXJfcHJvdG90eXBlX2tleXdvcmQKIAogICAgICAgICAgICAgYm9keSA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIF9rZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICAiIiIsIGluZGVudD00KQotICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQorICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogCiAKQEAgLTg3OCwxMyArODk5LDE1IEBACiAKICAgICAgICAgICAgIGlmIG5vdCBwYXJzZXNfa2V5d29yZHM6CiAgICAgICAgICAgICAgICAgZmllbGRzLmluc2VydCgwLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKQorICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vS2V5d29yZHMoIntuYW1lfSIsIGt3YXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBwYXJzZXNfcG9zaXRpb25hbDoKICAgICAgICAgICAgICAgICAgICAgZmllbGRzLmluc2VydCgwLCBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJ7bmFtZX0iLCBhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJ7bmFtZX0iLCBhcmdzKSkge3sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgKmZpZWxkcykKQEAgLTEwMzIsOCArMTA1NSw5IEBACiAKICAgICAgICAgICAgIHMgPSAiIiIKICAgICBjYXNlIHtjb3VudH06Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfX0KICAgICAgICAge2dyb3VwX2Jvb2xlYW5zfQogICAgICAgICBicmVhazsKICIiIlsxOl0KQEAgLTEwNjcsNyArMTA5MSw3IEBACiAKICAgICAgICAgbGFzdF9ncm91cCA9IDAKICAgICAgICAgZmlyc3Rfb3B0aW9uYWwgPSBsZW4oc2VsZmxlc3MpCi0gICAgICAgIHBvc2l0aW9uYWwgPSBzZWxmbGVzcyBhbmQgc2VsZmxlc3NbLTFdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZCisgICAgICAgIHBvc2l0aW9uYWwgPSBzZWxmbGVzcyBhbmQgc2VsZmxlc3NbLTFdLmlzX3Bvc2l0aW9uYWxfb25seSgpCiAgICAgICAgIG5ld19vcl9pbml0ID0gZi5raW5kIGluIChNRVRIT0RfTkVXLCBNRVRIT0RfSU5JVCkKICAgICAgICAgZGVmYXVsdF9yZXR1cm5fY29udmVydGVyID0gKG5vdCBmLnJldHVybl9jb252ZXJ0ZXIgb3IKICAgICAgICAgICAgIGYucmV0dXJuX2NvbnZlcnRlci50eXBlID09ICdQeU9iamVjdCAqJykKQEAgLTEyMTYsNyArMTI0MCw3IEBACiAKIGRlZiBjcmVhdGVfcmVnZXgoYmVmb3JlLCBhZnRlciwgd29yZD1UcnVlLCB3aG9sZV9saW5lPVRydWUpOgogICAgICIiIkNyZWF0ZSBhbiByZSBvYmplY3QgZm9yIG1hdGNoaW5nIG1hcmtlciBsaW5lcy4iIiIKLSAgICBncm91cF9yZSA9ICJcdysiIGlmIHdvcmQgZWxzZSAiLisiCisgICAgZ3JvdXBfcmUgPSByIlx3KyIgaWYgd29yZCBlbHNlICIuKyIKICAgICBwYXR0ZXJuID0gcid7fSh7fSl7fScKICAgICBpZiB3aG9sZV9saW5lOgogICAgICAgICBwYXR0ZXJuID0gJ14nICsgcGF0dGVybiArICckJwpAQCAtMjM1OSw3ICsyMzgzLDEwIEBACiAgICAgICAgICAgICBkYXRhLm1vZGlmaWNhdGlvbnMuYXBwZW5kKCcvKiBtb2RpZmljYXRpb25zIGZvciAnICsgbmFtZSArICcgKi9cbicgKyBtb2RpZmljYXRpb25zLnJzdHJpcCgpKQogCiAgICAgICAgICMga2V5d29yZHMKLSAgICAgICAgZGF0YS5rZXl3b3Jkcy5hcHBlbmQocGFyYW1ldGVyLm5hbWUpCisgICAgICAgIGlmIHBhcmFtZXRlci5pc19wb3NpdGlvbmFsX29ubHkoKToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKCcnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YS5rZXl3b3Jkcy5hcHBlbmQocGFyYW1ldGVyLm5hbWUpCiAKICAgICAgICAgIyBmb3JtYXRfdW5pdHMKICAgICAgICAgaWYgc2VsZi5pc19vcHRpb25hbCgpIGFuZCAnfCcgbm90IGluIGRhdGEuZm9ybWF0X3VuaXRzOgpAQCAtMjU3MiwyMSArMjU5OSwyMSBAQAogICAgICAgICBpZiBub3QgYml0d2lzZToKICAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIGxvbmdzIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAotY2xhc3MgUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ1BZX0xPTkdfTE9ORycKK2NsYXNzIGxvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnTCcKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCi1jbGFzcyB1bnNpZ25lZF9QWV9MT05HX0xPTkdfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAndW5zaWduZWQgUFlfTE9OR19MT05HJworY2xhc3MgdW5zaWduZWRfbG9uZ19sb25nX2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ3Vuc2lnbmVkIGxvbmcgbG9uZycKICAgICBkZWZhdWx0X3R5cGUgPSBpbnQKICAgICBmb3JtYXRfdW5pdCA9ICdLJwogICAgIGNfaWdub3JlZF9kZWZhdWx0ID0gIjAiCiAKICAgICBkZWYgY29udmVydGVyX2luaXQoc2VsZiwgKiwgYml0d2lzZT1GYWxzZSk6CiAgICAgICAgIGlmIG5vdCBiaXR3aXNlOgotICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgUFlfTE9OR19MT05HcyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCisgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25nIGxvbmcgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQogCiBjbGFzcyBQeV9zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKICAgICB0eXBlID0gJ1B5X3NzaXplX3QnCkBAIC0yNjc2LDcgKzI3MDMsNyBAQAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmVuY29kaW5nOgogICAgICAgICAgICAgbmFtZSA9IGVuc3VyZV9sZWdhbF9jX2lkZW50aWZpZXIoc2VsZi5uYW1lKQotICAgICAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIilcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpIHtcbiAgIFB5TWVtX0ZSRUUoIiwgbmFtZSwgIik7XG59XG4iXSkKIAogIwogIyBUaGlzIGlzIHRoZSBmb3VydGggb3IgZmlmdGggcmV3cml0ZSBvZiByZWdpc3RlcmluZyBhbGwgdGhlCkBAIC0yNzg2LDcgKzI4MTMsNyBAQAogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopXG4gICBQeUJ1ZmZlcl9SZWxlYXNlKCYiLCBuYW1lLCAiKTtcbiJdKQorICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiLm9iaikge1xuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG59XG4iXSkKIAogCiBkZWYgY29ycmVjdF9uYW1lX2Zvcl9zZWxmKGYpOgpAQCAtMjk1OSwxMCArMjk4NiwxMCBAQAogICAgICAgICBkYXRhLnJldHVybl92YWx1ZSA9IG5hbWUKIAogICAgIGRlZiBlcnJfb2NjdXJyZWRfaWYoc2VsZiwgZXhwciwgZGF0YSk6Ci0gICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoKHt9KSAmJiBQeUVycl9PY2N1cnJlZCgpKVxuICAgIGdvdG8gZXhpdDtcbicuZm9ybWF0KGV4cHIpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkge3tcbiAgICBnb3RvIGV4aXQ7XG59fVxuJy5mb3JtYXQoZXhwcikpCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmX251bGxfcG9pbnRlcihzZWxmLCB2YXJpYWJsZSwgZGF0YSk6Ci0gICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoe30gPT0gTlVMTClcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdCh2YXJpYWJsZSkpCisgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCdpZiAoe30gPT0gTlVMTCkge3tcbiAgICBnb3RvIGV4aXQ7XG59fVxuJy5mb3JtYXQodmFyaWFibGUpKQogCiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgICIiIgpAQCAtMjk3Nyw4ICszMDA0LDkgQEAKICAgICBkZWYgcmVuZGVyKHNlbGYsIGZ1bmN0aW9uLCBkYXRhKToKICAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKCcnJwotaWYgKF9yZXR1cm5fdmFsdWUgIT0gUHlfTm9uZSkKK2lmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpIHsKICAgICBnb3RvIGV4aXQ7Cit9CiByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOwogUHlfSU5DUkVGKFB5X05vbmUpOwogJycnLnN0cmlwKCkpCkBAIC0zMTgzLDYgKzMyMTEsNyBAQAogICAgICAgICBzZWxmLnN0YXRlID0gc2VsZi5zdGF0ZV9kc2xfc3RhcnQKICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfaW5kZW50ID0gTm9uZQogICAgICAgICBzZWxmLmtleXdvcmRfb25seSA9IEZhbHNlCisgICAgICAgIHNlbGYucG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKICAgICAgICAgc2VsZi5ncm91cCA9IDAKICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3N0YXJ0CiAgICAgICAgIHNlbGYuc2Vlbl9wb3NpdGlvbmFsX3dpdGhfZGVmYXVsdCA9IEZhbHNlCkBAIC0zNTYxLDggKzM1OTAsOCBAQAogICAgICMgInBhcmFtZXRlcl9zdGF0ZSIuICAoUHJldmlvdXNseSB0aGUgY29kZSB3YXMgYSBtaWFzbWEgb2YgaWZzIGFuZAogICAgICMgc2VwYXJhdGUgYm9vbGVhbiBzdGF0ZSB2YXJpYWJsZXMuKSAgVGhlIHN0YXRlcyBhcmU6CiAgICAgIwotICAgICMgIFsgWyBhLCBiLCBdIGMsIF0gZCwgZSwgZj0zLCBbIGcsIGgsIFsgaSBdIF0gLyAgIDwtIGxpbmUKLSAgICAjIDAxICAgMiAgICAgICAgICAzICAgICAgIDQgICAgNSAgICAgICAgICAgNiAgIDcgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucworICAgICMgIFsgWyBhLCBiLCBdIGMsIF0gZCwgZSwgZj0zLCBbIGcsIGgsIFsgaSBdIF0gICA8LSBsaW5lCisgICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICAgIDwtIHN0YXRlIHRyYW5zaXRpb25zCiAgICAgIwogICAgICMgMDogcHNfc3RhcnQuICBiZWZvcmUgd2UndmUgc2VlbiBhbnl0aGluZy4gIGxlZ2FsIHRyYW5zaXRpb25zIGFyZSB0byAxIG9yIDMuCiAgICAgIyAxOiBwc19sZWZ0X3NxdWFyZV9iZWZvcmUuICBsZWZ0IHNxdWFyZSBicmFja2V0cyBiZWZvcmUgcmVxdWlyZWQgcGFyYW1ldGVycy4KQEAgLTM1NzMsOSArMzYwMiw4IEBACiAgICAgIyAgICBub3cgbXVzdCBoYXZlIGRlZmF1bHQgdmFsdWVzLgogICAgICMgNTogcHNfZ3JvdXBfYWZ0ZXIuICBpbiBhIGdyb3VwLCBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgogICAgICMgNjogcHNfcmlnaHRfc3F1YXJlX2FmdGVyLiAgcmlnaHQgc3F1YXJlIGJyYWNrZXRzIGFmdGVyIHJlcXVpcmVkIHBhcmFtZXRlcnMuCi0gICAgIyA3OiBwc19zZWVuX3NsYXNoLiAgc2VlbiBzbGFzaC4KICAgICBwc19zdGFydCwgcHNfbGVmdF9zcXVhcmVfYmVmb3JlLCBwc19ncm91cF9iZWZvcmUsIHBzX3JlcXVpcmVkLCBcCi0gICAgcHNfb3B0aW9uYWwsIHBzX2dyb3VwX2FmdGVyLCBwc19yaWdodF9zcXVhcmVfYWZ0ZXIsIHBzX3NlZW5fc2xhc2ggPSByYW5nZSg4KQorICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyID0gcmFuZ2UoNykKIAogICAgIGRlZiBzdGF0ZV9wYXJhbWV0ZXJzX3N0YXJ0KHNlbGYsIGxpbmUpOgogICAgICAgICBpZiBzZWxmLmlnbm9yZV9saW5lKGxpbmUpOgpAQCAtMzg1NCw5ICszODgyLDYgQEAKICAgICAgICAgcmV0dXJuIG5hbWUsIEZhbHNlLCBrd2FyZ3MKIAogICAgIGRlZiBwYXJzZV9zcGVjaWFsX3N5bWJvbChzZWxmLCBzeW1ib2wpOgotICAgICAgICBpZiBzZWxmLnBhcmFtZXRlcl9zdGF0ZSA9PSBzZWxmLnBzX3NlZW5fc2xhc2g6Ci0gICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBzcGVjaWZpZXMgIiArIHN5bWJvbCArICIgYWZ0ZXIgLywgd2hpY2ggaXMgdW5zdXBwb3J0ZWQuIikKLQogICAgICAgICBpZiBzeW1ib2wgPT0gJyonOgogICAgICAgICAgICAgaWYgc2VsZi5rZXl3b3JkX29ubHk6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgdXNlcyAnKicgbW9yZSB0aGFuIG9uY2UuIikKQEAgLTM4ODMsMTMgKzM5MDgsMTUgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5jKSIpCiAgICAgICAgIGVsaWYgc3ltYm9sID09ICcvJzoKKyAgICAgICAgICAgIGlmIHNlbGYucG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJy8nIG1vcmUgdGhhbiBvbmNlLiIpCisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IFRydWUKICAgICAgICAgICAgICMgcHNfcmVxdWlyZWQgYW5kIHBzX29wdGlvbmFsIGFyZSBhbGxvd2VkIGhlcmUsIHRoYXQgYWxsb3dzIHBvc2l0aW9uYWwtb25seSB3aXRob3V0IG9wdGlvbiBncm91cHMKICAgICAgICAgICAgICMgdG8gd29yayAoYW5kIGhhdmUgZGVmYXVsdCB2YWx1ZXMhKQogICAgICAgICAgICAgaWYgKHNlbGYucGFyYW1ldGVyX3N0YXRlIG5vdCBpbiAoc2VsZi5wc19yZXF1aXJlZCwgc2VsZi5wc19vcHRpb25hbCwgc2VsZi5wc19yaWdodF9zcXVhcmVfYWZ0ZXIsIHNlbGYucHNfZ3JvdXBfYmVmb3JlKSkgb3Igc2VsZi5ncm91cDoKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBoYXMgYW4gdW5zdXBwb3J0ZWQgZ3JvdXAgY29uZmlndXJhdGlvbi4gKFVuZXhwZWN0ZWQgc3RhdGUgIiArIHN0cihzZWxmLnBhcmFtZXRlcl9zdGF0ZSkgKyAiLmQpIikKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIG1peGVzIGtleXdvcmQtb25seSBhbmQgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMsIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0gICAgICAgICAgICBzZWxmLnBhcmFtZXRlcl9zdGF0ZSA9IHNlbGYucHNfc2Vlbl9zbGFzaAogICAgICAgICAgICAgIyBmaXh1cCBwcmVjZWRpbmcgcGFyYW1ldGVycwogICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5mdW5jdGlvbi5wYXJhbWV0ZXJzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGlmIChwLmtpbmQgIT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEIGFuZCBub3QgaXNpbnN0YW5jZShwLmNvbnZlcnRlciwgc2VsZl9jb252ZXJ0ZXIpKToKQEAgLTM5NzcsMjMgKzQwMDQsMjAgQEAKICAgICAgICAgIyBwb3B1bGF0ZSAicmlnaHRfYnJhY2tldF9jb3VudCIgZmllbGQgZm9yIGV2ZXJ5IHBhcmFtZXRlcgogICAgICAgICBhc3NlcnQgcGFyYW1ldGVycywgIldlIHNob3VsZCBhbHdheXMgaGF2ZSBhIHNlbGYgcGFyYW1ldGVyLiAiICsgcmVwcihmKQogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShwYXJhbWV0ZXJzWzBdLmNvbnZlcnRlciwgc2VsZl9jb252ZXJ0ZXIpCisgICAgICAgICMgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgorICAgICAgICBhc3NlcnQgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBwYXJhbWV0ZXJzWzBdLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCi0gICAgICAgIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZiA9IHBhcmFtZXRlcnNbMTpdCi0gICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZjoKLSAgICAgICAgICAgICMgZm9yIG5vdywgdGhlIG9ubHkgd2F5IENsaW5pYyBzdXBwb3J0cyBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycwotICAgICAgICAgICAgIyBpcyBpZiBhbGwgb2YgdGhlbSBhcmUgcG9zaXRpb25hbC1vbmx5Li4uCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIC4uLiBleGNlcHQgZm9yIHNlbGYhICBzZWxmIGlzIGFsd2F5cyBwb3NpdGlvbmFsLW9ubHkuCi0KLSAgICAgICAgICAgIHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzID0gW3Aua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkgZm9yIHAgaW4gcGFyYW1ldGVyc19hZnRlcl9zZWxmXQotICAgICAgICAgICAgaWYgcGFyYW1ldGVyc19hZnRlcl9zZWxmWzBdLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZOgotICAgICAgICAgICAgICAgIGFzc2VydCBhbGwocG9zaXRpb25hbF9vbmx5X3BhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyczoKLSAgICAgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gYWJzKHAuZ3JvdXApCisgICAgICAgIHBvc2l0aW9uYWxfb25seSA9IFRydWUKKyAgICAgICAgZm9yIHAgaW4gcGFyYW1ldGVyc1sxOl06CisgICAgICAgICAgICBpZiBub3QgcC5pc19wb3NpdGlvbmFsX29ubHkoKToKKyAgICAgICAgICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgcG9zaXRpb25hbF9vbmx5CisgICAgICAgICAgICBpZiBwb3NpdGlvbmFsX29ubHk6CisgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gYWJzKHAuZ3JvdXApCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgZG9uJ3QgcHV0IGFueSByaWdodCBicmFja2V0cyBhcm91bmQgbm9uLXBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCBldmVyLgotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZjoKLSAgICAgICAgICAgICAgICAgICAgcC5yaWdodF9icmFja2V0X2NvdW50ID0gMAorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIAogICAgICAgICByaWdodF9icmFja2V0X2NvdW50ID0gMAogCmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL3NzMS5weSBiL1Rvb2xzL2RlbW8vc3MxLnB5CmluZGV4IGM1MWYwNDEuLmJmODg4MjAgMTAwNzU1Ci0tLSBhL1Rvb2xzL2RlbW8vc3MxLnB5CisrKyBiL1Rvb2xzL2RlbW8vc3MxLnB5CkBAIC00MTMsNyArNDEzLDcgQEAKIAogICAgIGRlZiByZW51bWJlcihzZWxmLCB4MSwgeTEsIHgyLCB5MiwgZHgsIGR5KToKICAgICAgICAgb3V0ID0gW10KLSAgICAgICAgZm9yIHBhcnQgaW4gcmUuc3BsaXQoJyhcdyspJywgc2VsZi5mb3JtdWxhKToKKyAgICAgICAgZm9yIHBhcnQgaW4gcmUuc3BsaXQocicoXHcrKScsIHNlbGYuZm9ybXVsYSk6CiAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ14oW0EtWl0rKShbMS05XVswLTldKikkJywgcGFydCkKICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3gsIHN5ID0gbS5ncm91cHMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weSBiL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKaW5kZXggNDRlZGQ1Ny4uZDYwMmY1OCAxMDA3NTUKLS0tIGEvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQorKysgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CkBAIC0xMjQsOSArMTI0LDcgQEAKIAogICAgICMgZGVmYXVsdCB0aGUgZXhjbHVkZSBsaXN0IGZvciBlYWNoIHBsYXRmb3JtCiAgICAgaWYgd2luOiBleGNsdWRlID0gZXhjbHVkZSArIFsKLSAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywKLSAgICAgICAgJ2NlJywKLSAgICAgICAgXQorICAgICAgICAnZG9zJywgJ2Rvc3BhdGgnLCAnbWFjJywgJ21hY3BhdGgnLCAnbWFjZnMnLCAnTUFDRlMnLCAncG9zaXgnLCBdCiAKICAgICBmYWlsX2ltcG9ydCA9IGV4Y2x1ZGVbOl0KIApAQCAtMjE4LDcgKzIxNiw3IEBACiAgICAgaXNob21lID0gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHByZWZpeCwgJ1B5dGhvbicsICdjZXZhbC5jJykpCiAKICAgICAjIGxvY2F0aW9ucyBkZXJpdmVkIGZyb20gb3B0aW9ucwotICAgIHZlcnNpb24gPSBzeXMudmVyc2lvbls6M10KKyAgICB2ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgZmxhZ2dlZF92ZXJzaW9uID0gdmVyc2lvbiArIHN5cy5hYmlmbGFncwogICAgIGlmIHdpbjoKICAgICAgICAgZXh0ZW5zaW9uc19jID0gJ2Zyb3plbl9leHRlbnNpb25zLmMnCmRpZmYgLS1naXQgYS9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5IGIvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQppbmRleCAzOTBkOGFjLi45YmIzZTZlIDEwMDY0NAotLS0gYS9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CisrKyBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKQEAgLTk1LDcgKzk1LDcgQEAKICAgICBwcmludCgpCiAKICAgICBwcmludCgnJCh0ZW1wX2Rpcik6JykKLSAgICBwcmludCgnICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCisgICAgcHJpbnQocicgIGlmIG5vdCBleGlzdCAkKHRlbXBfZGlyKVwuIG1rZGlyICQodGVtcF9kaXIpJykKICAgICBwcmludCgpCiAKICAgICBvYmplY3RzID0gW10KQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZSkKICAgICAgICAgICAgIGJhc2UsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZSkKICAgICAgICAgICAgIG9iamVjdHMuYXBwZW5kKGJhc2UgKyAiLm9iaiIpCi0gICAgICAgICAgICBwcmludCgnJCh0ZW1wX2RpcilcJXMub2JqOiAiJXMiJyAlIChiYXNlLCBmaWxlKSkKKyAgICAgICAgICAgIHByaW50KHInJCh0ZW1wX2RpcilcJXMub2JqOiAiJXMiJyAlIChiYXNlLCBmaWxlKSkKICAgICAgICAgICAgIHByaW50KCJcdEAkKENDKSAtYyAtbm9sb2dvIC9GbyQqICQoY2RsKSAkKGNfZGVidWcpIC9EIEJVSUxEX0ZSRUVaRSIsIGVuZD0nICcpCiAgICAgICAgICAgICBwcmludCgnIi1JJChweXRob25ob21lKS9JbmNsdWRlIiAgIi1JJChweXRob25ob21lKS9QQyIgXFwnKQogICAgICAgICAgICAgcHJpbnQoIlx0XHQkKGNmbGFncykgJChjZGVidWcpICQoY2luY2x1ZGUpIFxcIikKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiT0JKUz0iLCBlbmQ9JyAnKQotICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQoJyIkKHRlbXBfZGlyKVwlcyInICUgKG9iaiksIGVuZD0nICcpCisgICAgZm9yIG9iaiBpbiBvYmplY3RzOiBwcmludChyJyIkKHRlbXBfZGlyKVwlcyInICUgKG9iaiksIGVuZD0nICcpCiAgICAgcHJpbnQoKSA7IHByaW50KCkKIAogICAgIHByaW50KCJMSUJTPSIsIGVuZD0nICcpCmRpZmYgLS1naXQgYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5IGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQppbmRleCA3NWYxY2NiLi4zZTk1YjQ0IDEwMDc1NQotLS0gYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5CisrKyBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICMgTk9URTogc29tZSBnZGJzIGFyZSBsaW5rZWQgd2l0aCBQeXRob24gMywgc28gdGhpcyBmaWxlIHNob3VsZCBiZSBkdWFsLXN5bnRheAogIyBjb21wYXRpYmxlICgyLjYrIGFuZCAzLjArKS4gIFNlZSAjMTkzMDguCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24sIHdpdGhfc3RhdGVtZW50Citmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCiBpbXBvcnQgZ2RiCiBpbXBvcnQgb3MKIGltcG9ydCBsb2NhbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL2hnL2hndG91Y2gucHkgYi9Ub29scy9oZy9oZ3RvdWNoLnB5CmluZGV4IDExOWQ4MTIuLmZiY2E0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2hnL2hndG91Y2gucHkKKysrIGIvVG9vbHMvaGcvaGd0b3VjaC5weQpAQCAtNyw3ICs3LDYgQEAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGRlcGVuZGVuY3kgc3ludGF4LCAjLWNvbW1lbnRzIGFyZSBzdXBwb3J0ZWQuCiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGltcG9ydCBlcnJubwogaW1wb3J0IG9zCiBpbXBvcnQgdGltZQpkaWZmIC0tZ2l0IGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQppbmRleCBkYTQyNDM4Li44ZWY1ZmY4IDEwMDc1NQotLS0gYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQorKysgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQpAQCAtMTU2LDcgKzE1Niw4IEBACiAiIiIpCiAKIGltcG9ydCBvcwotaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IGdsb2IKIGltcG9ydCB0aW1lCkBAIC0yNjMsOCArMjY0LDcgQEAKICAgICAjIGdldCBleHRlbnNpb24gZm9yIHB5dGhvbiBzb3VyY2UgZmlsZXMKICAgICBpZiAnX3B5X2V4dCcgbm90IGluIGdsb2JhbHMoKToKICAgICAgICAgZ2xvYmFsIF9weV9leHQKLSAgICAgICAgX3B5X2V4dCA9IFt0cmlwbGVbMF0gZm9yIHRyaXBsZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCkKLSAgICAgICAgICAgICAgICAgICBpZiB0cmlwbGVbMl0gPT0gaW1wLlBZX1NPVVJDRV1bMF0KKyAgICAgICAgX3B5X2V4dCA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzBdCiAKICAgICAjIGRvbid0IHJlY3Vyc2UgaW50byBDVlMgZGlyZWN0b3JpZXMKICAgICBpZiAnQ1ZTJyBpbiBuYW1lczoKQEAgLTI3Nyw0NSArMjc3LDYgQEAKICAgICAgICAgKQogCiAKLWRlZiBfZ2V0X21vZHBrZ19wYXRoKGRvdHRlZF9uYW1lLCBwYXRobGlzdD1Ob25lKToKLSAgICAiIiJHZXQgdGhlIGZpbGVzeXN0ZW0gcGF0aCBmb3IgYSBtb2R1bGUgb3IgYSBwYWNrYWdlLgotCi0gICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHRvIGEgZmlsZSBmb3IgYSBtb2R1bGUsIGFuZCB0byBhIGRpcmVjdG9yeSBmb3IKLSAgICBhIHBhY2thZ2UuIFJldHVybiBOb25lIGlmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCwgb3IgaXMgYSBidWlsdGluIG9yCi0gICAgZXh0ZW5zaW9uIG1vZHVsZS4KLSAgICAiIiIKLSAgICAjIHNwbGl0IG9mZiB0b3AtbW9zdCBuYW1lCi0gICAgcGFydHMgPSBkb3R0ZWRfbmFtZS5zcGxpdCgnLicsIDEpCi0KLSAgICBpZiBsZW4ocGFydHMpID4gMToKLSAgICAgICAgIyB3ZSBoYXZlIGEgZG90dGVkIHBhdGgsIGltcG9ydCB0b3AtbGV2ZWwgcGFja2FnZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24gPSBpbXAuZmluZF9tb2R1bGUocGFydHNbMF0sIHBhdGhsaXN0KQotICAgICAgICAgICAgaWYgZmlsZTogZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBjaGVjayBpZiBpdCdzIGluZGVlZCBhIHBhY2thZ2UKLSAgICAgICAgaWYgZGVzY3JpcHRpb25bMl0gPT0gaW1wLlBLR19ESVJFQ1RPUlk6Ci0gICAgICAgICAgICAjIHJlY3Vyc2l2ZWx5IGhhbmRsZSB0aGUgcmVtYWluaW5nIG5hbWUgcGFydHMKLSAgICAgICAgICAgIHBhdGhuYW1lID0gX2dldF9tb2Rwa2dfcGF0aChwYXJ0c1sxXSwgW3BhdGhuYW1lXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhdGhuYW1lID0gTm9uZQotICAgIGVsc2U6Ci0gICAgICAgICMgcGxhaW4gbmFtZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24gPSBpbXAuZmluZF9tb2R1bGUoCi0gICAgICAgICAgICAgICAgZG90dGVkX25hbWUsIHBhdGhsaXN0KQotICAgICAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdIG5vdCBpbiBbaW1wLlBZX1NPVVJDRSwgaW1wLlBLR19ESVJFQ1RPUlldOgotICAgICAgICAgICAgICAgIHBhdGhuYW1lID0gTm9uZQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLQotICAgIHJldHVybiBwYXRobmFtZQotCi0KIGRlZiBnZXRGaWxlc0Zvck5hbWUobmFtZSk6CiAgICAgIiIiR2V0IGEgbGlzdCBvZiBtb2R1bGUgZmlsZXMgZm9yIGEgZmlsZW5hbWUsIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwKICAgICBvciBhIGRpcmVjdG9yeS4KQEAgLTMzMCw3ICsyOTEsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBsaXN0CiAKICAgICAgICAgIyB0cnkgdG8gZmluZCBtb2R1bGUgb3IgcGFja2FnZQotICAgICAgICBuYW1lID0gX2dldF9tb2Rwa2dfcGF0aChuYW1lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgICAgICAgICAgICBuYW1lID0gc3BlYy5vcmlnaW4KKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICByZXR1cm4gW10KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdAppbmRleCAxZmEyZGNiLi40N2U0NzE1IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdAorKysgYi9Ub29scy9tc2kvYnVpbGRyZWxlYXNlLmJhdApAQCAtMzUsNyArMzUsNyBAQAogc2V0IEJVSUxEWDY0PQ0KIHNldCBUQVJHRVQ9UmVidWlsZA0KIHNldCBURVNUVEFSR0VURElSPQ0KLXNldCBQR089DQorc2V0IFBHTz0tbSB0ZXN0IC1xIC0tcGdvDQogc2V0IEJVSUxETlVHRVQ9MQ0KIHNldCBCVUlMRFpJUD0xDQogDQpAQCAtNTcsNiArNTcsNyBAQAogaWYgIiUxIiBFUVUgIi14ODYiIChzZXQgQlVJTERYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiIEVRVSAiLXg2NCIgKHNldCBCVUlMRFg2ND0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIGlmICIlMSIgRVFVICItLXBnbyIgKHNldCBQR089JX4yKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KK2lmICIlMSIgRVFVICItLXNraXAtcGdvIiAoc2V0IFBHTz0pICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi0tc2tpcC1udWdldCIgKHNldCBCVUlMRE5VR0VUPSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiIEVRVSAiLS1za2lwLXppcCIgKHNldCBCVUlMRFpJUD0pICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogDQpAQCAtMTA4LDIxICsxMDksMTQgQEAKIEBlY2hvIG9mZg0KIA0KIGlmICIlMSIgRVFVICJ4ODYiICgNCi0gICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgeDg2DQorICAgIHNldCBQR089DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCV3aW4zMlwNCiAgICAgc2V0IEJVSUxEX1BMQVQ9V2luMzINCiAgICAgc2V0IE9VVERJUl9QTEFUPXdpbjMyDQogICAgIHNldCBPQkpESVJfUExBVD14ODYNCi0pIGVsc2UgaWYgIiV+MiIgTkVRICIiICgNCi0gICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgYW1kNjQNCi0gICAgc2V0IFBHTz0lfjINCi0gICAgc2V0IEJVSUxEPSVQQ0JVSUxEJWFtZDY0LXBnb1wNCi0gICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQotICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KLSAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQogKSBlbHNlICgNCi0gICAgY2FsbCAiJVBDQlVJTEQlZW52LmJhdCIgYW1kNjQNCiAgICAgc2V0IEJVSUxEPSVQQ0JVSUxEJWFtZDY0XA0KKyAgICBzZXQgUEdPPSV+Mg0KICAgICBzZXQgQlVJTERfUExBVD14NjQNCiAgICAgc2V0IE9VVERJUl9QTEFUPWFtZDY0DQogICAgIHNldCBPQkpESVJfUExBVD14NjQNCkBAIC0xNDUsNDUgKzEzOSwzMiBAQAogKSBlbHNlICgNCiAgICAgc2V0IENFUlRPUFRTPQ0KICkNCi0NCitpZiBub3QgIiVQR08lIiBFUVUgIiIgKA0KKyAgICBzZXQgUEdPT1BUUz0tLXBnby1qb2IgIiVQR08lIg0KKykgZWxzZSAoDQorICAgIHNldCBQR09PUFRTPQ0KKykNCiBpZiBub3QgIiVTS0lQQlVJTEQlIiBFUVUgIjEiICgNCi0gICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1kIC10ICVUQVJHRVQlICVDRVJUT1BUUyUNCisgICAgQGVjaG8gY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJSAlUEdPT1BUUyUNCisgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC10ICVUQVJHRVQlICVDRVJUT1BUUyUgJVBHT09QVFMlDQogICAgIEBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KICAgICBAcmVtIGJ1aWxkLmJhdCB0dXJucyBlY2hvIGJhY2sgb24sIHNvIHdlIGRpc2FibGUgaXQgYWdhaW4NCiAgICAgQGVjaG8gb2ZmDQotICAgIA0KLSAgICBpZiAiJVBHTyUiIEVRVSAiIiAoDQotICAgICAgICBAY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZSAtcCAlQlVJTERfUExBVCUgLXQgJVRBUkdFVCUgJUNFUlRPUFRTJQ0KLSAgICApIGVsc2UgKA0KLSAgICAgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1jIFBHSW5zdHJ1bWVudCAtdCAlVEFSR0VUJSAlQ0VSVE9QVFMlDQotICAgICAgICBAaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCi0gICAgICAgIA0KLSAgICAgICAgQGRlbCAiJUJVSUxEJSoucGdjIg0KLSAgICAgICAgaWYgIiVQR08lIiBFUVUgImRlZmF1bHQiICgNCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXEgLS1wZ28NCi0gICAgICAgICkgZWxzZSBpZiAiJVBHTyUiIEVRVSAiZGVmYXVsdDIiICgNCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXIgLXEgLS1wZ28NCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiIC1tIHRlc3QgLXIgLXEgLS1wZ28NCi0gICAgICAgICkgZWxzZSBpZiAiJVBHTyUiIEVRVSAiZGVmYXVsdDEwIiAoDQotICAgICAgICAgICAgZm9yIC9MICUlaSBpbiAoMCwgMSwgOSkgZG8gIiVCVUlMRCVweXRob24uZXhlIiAtbSB0ZXN0IC1xIC1yIC0tcGdvDQotICAgICAgICApIGVsc2UgaWYgIiVQR08lIiBFUVUgInB5YmVuY2giICgNCi0gICAgICAgICAgICAiJUJVSUxEJXB5dGhvbi5leGUiICIlUENCVUlMRCUuLlxUb29sc1xweWJlbmNoXHB5YmVuY2gucHkiDQotICAgICAgICApIGVsc2UgKA0KLSAgICAgICAgICAgICIlQlVJTEQlcHl0aG9uLmV4ZSIgJVBHTyUNCi0gICAgICAgICkNCi0gICAgICAgIA0KLSAgICAgICAgQGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUgLXAgJUJVSUxEX1BMQVQlIC1jIFBHVXBkYXRlIC10IEJ1aWxkICVDRVJUT1BUUyUNCi0gICAgKQ0KLSAgICBAaWYgZXJyb3JsZXZlbCAxIGV4aXQgL0INCi0gICAgQGVjaG8gb2ZmDQogKQ0KIA0KLXNldCBCVUlMRE9QVFM9L3A6QnVpbGRGb3JSZWxlYXNlPXRydWUgL3A6RG93bmxvYWRVcmw9JURPV05MT0FEX1VSTCUgL3A6RG93bmxvYWRVcmxCYXNlPSVET1dOTE9BRF9VUkxfQkFTRSUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQotaWYgIiVQR08lIiBORVEgIiIgc2V0IEJVSUxET1BUUz0lQlVJTERPUFRTJSAvcDpQR09CdWlsZFBhdGg9JUJVSUxEJQ0KLW1zYnVpbGQgIiVEJWxhdW5jaGVyXGxhdW5jaGVyLndpeHByb2oiIC9wOlBsYXRmb3JtPXg4NiAlQ0VSVE9QVFMlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KLW1zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAvcDpQbGF0Zm9ybT0lMSAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KK2NhbGwgIiVQQ0JVSUxEJWVudi5iYXQiDQoraWYgIiVPVVRESVJfUExBVCUiIEVRVSAid2luMzIiICgNCisgICAgbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKSBlbHNlIGlmIG5vdCBleGlzdCAiJVBDQlVJTEQld2luMzJcZW4tdXNcbGF1bmNoZXIubXNpIiAoDQorICAgIG1zYnVpbGQgIiVEJWxhdW5jaGVyXGxhdW5jaGVyLndpeHByb2oiIC9wOlBsYXRmb3JtPXg4NiAlQ0VSVE9QVFMlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitzZXQgQlVJTERPUFRTPS9wOlBsYXRmb3JtPSUxIC9wOkJ1aWxkRm9yUmVsZWFzZT10cnVlIC9wOkRvd25sb2FkVXJsPSVET1dOTE9BRF9VUkwlIC9wOkRvd25sb2FkVXJsQmFzZT0lRE9XTkxPQURfVVJMX0JBU0UlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQotbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAvcDpQbGF0Zm9ybT0lMSAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZXdlYi53aXhwcm9qIiAvdDpSZWJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD1mYWxzZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQogDQogaWYgZGVmaW5lZCBCVUlMRFpJUCAoDQpAQCAtMjA5LDcgKzE5MCw3IEBACiANCiA6SGVscA0KIGVjaG8gYnVpbGRyZWxlYXNlLmJhdCBbLS1vdXQgRElSXSBbLXg4Nl0gWy14NjRdIFstLWNlcnRpZmljYXRlIENFUlROQU1FXSBbLS1idWlsZF0gWy0tcGdvIENPTU1BTkRdDQotZWNobyAgICAgICAgICAgICAgICAgIFstLXNraXAtYnVpbGRdIFstLXNraXAtZG9jXSBbLS1za2lwLW51Z2V0XSBbLS1za2lwLXppcF0NCitlY2hvICAgICAgICAgICAgICAgICAgWy0tc2tpcC1idWlsZF0gWy0tc2tpcC1kb2NdIFstLXNraXAtbnVnZXRdIFstLXNraXAtemlwXSBbLS1za2lwLXBnb10NCiBlY2hvICAgICAgICAgICAgICAgICAgWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0NCiBlY2hvICAgICAgICAgICAgICAgICAgWy1oXQ0KIGVjaG8uDQpAQCAtMjE5LDkgKzIwMCwxMCBAQAogZWNobyAgICAtLWJ1aWxkICgtYikgICAgICAgIEluY3JlbWVudGFsbHkgYnVpbGQgUHl0aG9uIHJhdGhlciB0aGFuIHJlYnVpbGRpbmcNCiBlY2hvICAgIC0tc2tpcC1idWlsZCAoLUIpICAgRG8gbm90IGJ1aWxkIFB5dGhvbiAoanVzdCBkbyB0aGUgaW5zdGFsbGVycykNCiBlY2hvICAgIC0tc2tpcC1kb2MgKC1EKSAgICAgRG8gbm90IGJ1aWxkIGRvY3VtZW50YXRpb24NCitlY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgU3BlY2lmeSBQR08gY29tbWFuZCBmb3IgeDY0IGluc3RhbGxlcnMNCitlY2hvICAgIC0tc2tpcC1wZ28gICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgd2l0aG91dCB1c2luZyBQR08NCiBlY2hvICAgIC0tc2tpcC1udWdldCAgICAgICAgRG8gbm90IGJ1aWxkIE51Z2V0IHBhY2thZ2VzDQogZWNobyAgICAtLXNraXAtemlwICAgICAgICAgIERvIG5vdCBidWlsZCBlbWJlZGRhYmxlIHBhY2thZ2UNCi1lY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgdXNpbmcgUEdPDQogZWNobyAgICAtLWRvd25sb2FkICAgICAgICAgIFNwZWNpZnkgdGhlIGZ1bGwgZG93bmxvYWQgVVJMIGZvciBNU0lzDQogZWNobyAgICAtLXRlc3QgICAgICAgICAgICAgIFNwZWNpZnkgdGhlIHRlc3QgZGlyZWN0b3J5IHRvIHJ1biB0aGUgaW5zdGFsbGVyIHRlc3RzDQogZWNobyAgICAtaCAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGluZm9ybWF0aW9uDQpAQCAtMjI5LDEzICsyMTEsOCBAQAogZWNobyBJZiBubyBhcmNoaXRlY3R1cmUgaXMgc3BlY2lmaWVkLCBhbGwgYXJjaGl0ZWN0dXJlcyB3aWxsIGJlIGJ1aWx0Lg0KIGVjaG8gSWYgLS10ZXN0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBpbnN0YWxsZXIgdGVzdHMgYXJlIG5vdCBydW4uDQogZWNoby4NCi1lY2hvIEZvciB0aGUgLS1wZ28gb3B0aW9uLCBhbnkgUHl0aG9uIGNvbW1hbmQgbGluZSBjYW4gYmUgdXNlZCBhcyB3ZWxsIGFzIHRoZQ0KLWVjaG8gZm9sbG93aW5nIHNob3J0Y3V0czoNCi1lY2hvICAgICBTaG9ydGN1dCAgICAgICAgRGVzY3JpcHRpb24NCi1lY2hvICAgICBkZWZhdWx0ICAgICAgICAgVGVzdCBzdWl0ZSB3aXRoIC0tcGdvDQotZWNobyAgICAgZGVmYXVsdDIgICAgICAgIDJ4IHRlc3Qgc3VpdGUgd2l0aCAtLXBnbyBhbmQgcmFuZG9taXplZCB0ZXN0IG9yZGVyDQotZWNobyAgICAgZGVmYXVsdDEwICAgICAgIDEweCB0ZXN0IHN1aXRlIHdpdGggLS1wZ28gYW5kIHJhbmRvbWl6ZWQgdGVzdCBvcmRlcg0KLWVjaG8gICAgIHB5YmVuY2ggICAgICAgICBweWJlbmNoIHNjcmlwdA0KK2VjaG8gRm9yIHRoZSAtLXBnbyBvcHRpb24sIGFueSBQeXRob24gY29tbWFuZCBsaW5lIGNhbiBiZSB1c2VkLCBvciAnZGVmYXVsdCcgdG8NCitlY2hvIHVzZSB0aGUgZGVmYXVsdCB0YXNrICgtbSB0ZXN0IC0tcGdvKS4NCiBlY2hvLg0KIGVjaG8gVGhlIGZvbGxvd2luZyBzdWJzdGl0dXRpb25zIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgZG93bmxvYWQgVVJMOg0KIGVjaG8gICAgIFZhcmlhYmxlICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgIEV4YW1wbGUNCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQppbmRleCA0ZDljOTdhLi4xYzBiZDA4IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KQEAgLTExNiwxMCArMTE2LDExIEBACiAgICAgICAgIDxUZXh0IFg9IjE4NSIgWT0iMTEiIFdpZHRoPSItMTEiIEhlaWdodD0iMzYiIEZvbnRJZD0iMSIgRGlzYWJsZVByZWZpeD0ieWVzIj4jKGxvYy5TdWNjZXNzSGVhZGVyKTwvVGV4dD4KICAgICAgICAgPEltYWdlIFg9IjAiIFk9IjAiIFdpZHRoPSIxNzgiIEhlaWdodD0iMzgyIiBJbWFnZUZpbGU9IlNpZGVCYXIucG5nIi8+CiAKLSAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJTdWNjZXNzVGV4dCIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii0zMSIgSGVpZ2h0PSIxMDAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj48L0h5cGVydGV4dD4KKyAgICAgICAgPEh5cGVydGV4dCBOYW1lPSJTdWNjZXNzVGV4dCIgWD0iMjA1IiBZPSI3MSIgV2lkdGg9Ii03MSIgSGVpZ2h0PSIxNTAiIEZvbnRJZD0iMyIgRGlzYWJsZVByZWZpeD0ieWVzIj48L0h5cGVydGV4dD4KIAotICAgICAgICA8VGV4dCBOYW1lPSJTdWNjZXNzUmVzdGFydFRleHQiIFg9IjIwNSIgWT0iLTEwMCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRUZXh0KTwvVGV4dD4KLSAgICAgICAgPEJ1dHRvbiBOYW1lPSJMYXVuY2hCdXR0b24iIFg9IjE4NSIgWT0iLTUwIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjU5IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMyIgSGV4U3R5bGU9IjB4RiIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzTGF1bmNoQnV0dG9uKTwvQnV0dG9uPgorICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIiBYPSIxODUiIFk9Ii03MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI4MSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEUiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc01heFBhdGhCdXR0b24pPC9CdXR0b24+CisKKyAgICAgICAgPFRleHQgTmFtZT0iU3VjY2Vzc1Jlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii00MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSIzNCIgRm9udElkPSIzIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc1Jlc3RhcnRUZXh0KTwvVGV4dD4KICAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgWD0iLTEwMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uKTwvQnV0dG9uPgogICAgICAgICA8QnV0dG9uIE5hbWU9IlN1Y2Nlc3NDYW5jZWxCdXR0b24iIFg9Ii0xMSIgWT0iLTExIiBXaWR0aD0iODUiIEhlaWdodD0iMjciIFRhYlN0b3A9InllcyIgRm9udElkPSIwIj4jKGxvYy5DbG9zZUJ1dHRvbik8L0J1dHRvbj4KICAgICA8L1BhZ2U+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsIGIvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bAppbmRleCBlZDc5MjQ2Li40MzUwNmQ2IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCisrKyBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKQEAgLTE0Miw0ICsxNDIsNyBAQAogICA8U3RyaW5nIElkPSJGYWlsdXJlV1MySzNPckVhcmxpZXIiPldpbmRvd3MgU2VydmVyIDIwMDggU1AyIG9yIGxhdGVyIGlzIHJlcXVpcmVkIHRvIGluc3RhbGwgYW5kIHVzZSBbV2l4QnVuZGxlTmFtZV0uCiAKIFZpc2l0ICZsdDthIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvIiZndDtweXRob24ub3JnJmx0Oy9hJmd0OyB0byBkb3dubG9hZCBQeXRob24gMy40LjwvU3RyaW5nPgorCisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uIj5EaXNhYmxlIHBhdGggbGVuZ3RoIGxpbWl0PC9TdHJpbmc+CisgIDxTdHJpbmcgSWQ9IlN1Y2Nlc3NNYXhQYXRoQnV0dG9uTm90ZSI+Q2hhbmdlcyB5b3VyIG1hY2hpbmUgY29uZmlndXJhdGlvbiB0byBhbGxvdyBwcm9ncmFtcywgaW5jbHVkaW5nIFB5dGhvbiwgdG8gYnlwYXNzIHRoZSAyNjAgY2hhcmFjdGVyICJNQVhfUEFUSCIgbGltaXRhdGlvbi48L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCmluZGV4IDZhNjdlZTIuLmU4ODk4MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcAorKysgYi9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKQEAgLTExLDEwICsxMSw2IEBACiAjaW5jbHVkZSAicGNoLmgiCiAKIHN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfV0lORE9XX0NMQVNTID0gTCJQeXRob25CQSI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCA9IEwiTGF1bmNoVGFyZ2V0IjsKLXN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCA9IEwiTGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMgPSBMIkxhdW5jaEFyZ3VtZW50cyI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9ISURERU4gPSBMIkxhdW5jaEhpZGRlbiI7CiBzdGF0aWMgY29uc3QgRFdPUkQgUFlCQV9BQ1FVSVJFX1BFUkNFTlRBR0UgPSAzMDsKIHN0YXRpYyBjb25zdCBMUENXU1RSIFBZQkFfVkFSSUFCTEVfQlVORExFX0ZJTEVfVkVSU0lPTiA9IEwiV2l4QnVuZGxlRmlsZVZlcnNpb24iOwogCkBAIC0xMjksMTEgKzEyNSwxMSBAQAogICAgIElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sCiAKICAgICAvLyBTdWNjZXNzIHBhZ2UKLSAgICBJRF9MQVVOQ0hfQlVUVE9OLAogICAgIElEX1NVQ0NFU1NfVEVYVCwKICAgICBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwKICAgICBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLAogICAgIElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwKKyAgICBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwKIAogICAgIC8vIEZhaWx1cmUgcGFnZQogICAgIElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LLApAQCAtMTg4LDExICsxODQsMTEgQEAKICAgICB7IElEX09WRVJBTExfUFJPR1JFU1NfVEVYVCwgTCJPdmVyYWxsUHJvZ3Jlc3NUZXh0IiB9LAogICAgIHsgSURfUFJPR1JFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJQcm9ncmVzc0NhbmNlbEJ1dHRvbiIgfSwKIAotICAgIHsgSURfTEFVTkNIX0JVVFRPTiwgTCJMYXVuY2hCdXR0b24iIH0sCiAgICAgeyBJRF9TVUNDRVNTX1RFWFQsIEwiU3VjY2Vzc1RleHQiIH0sCiAgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfVEVYVCwgTCJTdWNjZXNzUmVzdGFydFRleHQiIH0sCiAgICAgeyBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OLCBMIlN1Y2Nlc3NSZXN0YXJ0QnV0dG9uIiB9LAogICAgIHsgSURfU1VDQ0VTU19DQU5DRUxfQlVUVE9OLCBMIlN1Y2Nlc3NDYW5jZWxCdXR0b24iIH0sCisgICAgeyBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgTCJTdWNjZXNzTWF4UGF0aEJ1dHRvbiIgfSwKIAogICAgIHsgSURfRkFJTFVSRV9MT0dGSUxFX0xJTkssIEwiRmFpbHVyZUxvZ0ZpbGVMaW5rIiB9LAogICAgIHsgSURfRkFJTFVSRV9NRVNTQUdFX1RFWFQsIEwiRmFpbHVyZU1lc3NhZ2VUZXh0IiB9LApAQCAtNDM2LDYgKzQzMiwxMSBAQAogICAgICAgICBjYXNlIElEX1VOSU5TVEFMTF9CVVRUT046CiAgICAgICAgICAgICBPblBsYW4oQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwpOwogICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTjoKKyAgICAgICAgICAgIEVuYWJsZU1heFBhdGhTdXBwb3J0KCk7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgIExFeGl0OgpAQCAtNTMzLDkgKzUzNCw4IEBACiAgICAgfQogCiAgICAgdm9pZCBTdWNjZXNzUGFnZV9TaG93KCkgewotICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IG9yIGxhdW5jaCBidXR0b24gc2hvdWxkIGJlIGVuYWJsZWQuCisgICAgICAgIC8vIG9uIHRoZSAiU3VjY2VzcyIgcGFnZSwgY2hlY2sgaWYgdGhlIHJlc3RhcnQgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgogICAgICAgICBCT09MIHNob3dSZXN0YXJ0QnV0dG9uID0gRkFMU0U7Ci0gICAgICAgIEJPT0wgbGF1bmNoVGFyZ2V0RXhpc3RzID0gRkFMU0U7CiAgICAgICAgIExPQ19TVFJJTkcgKnN1Y2Nlc3NUZXh0ID0gbnVsbHB0cjsKICAgICAgICAgSFJFU1VMVCBociA9IFNfT0s7CiAgICAgICAgIApAQCAtNTQzLDggKzU0Myw2IEBACiAgICAgICAgICAgICBpZiAoQk9PVFNUUkFQUEVSX1JFU1RBUlRfUFJPTVBUID09IF9jb21tYW5kLnJlc3RhcnQpIHsKICAgICAgICAgICAgICAgICBzaG93UmVzdGFydEJ1dHRvbiA9IFRSVUU7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoVGhlbWVDb250cm9sRXhpc3RzKF90aGVtZSwgSURfTEFVTkNIX0JVVFRPTikpIHsKLSAgICAgICAgICAgIGxhdW5jaFRhcmdldEV4aXN0cyA9IEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRIKTsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoX3BsYW5uZWRBY3Rpb24pIHsKQEAgLTU3MSw5ICs1NjksNDEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX0xBVU5DSF9CVVRUT04sIGxhdW5jaFRhcmdldEV4aXN0cyAmJiBCT09UU1RSQVBQRVJfQUNUSU9OX1VOSU5TVEFMTCA8IF9wbGFubmVkQWN0aW9uKTsKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIHNob3dSZXN0YXJ0QnV0dG9uKTsKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgc2hvd1Jlc3RhcnRCdXR0b24pOworCisgICAgICAgIGlmIChfY29tbWFuZC5hY3Rpb24gIT0gQk9PVFNUUkFQUEVSX0FDVElPTl9JTlNUQUxMIHx8CisgICAgICAgICAgICAhSXNXaW5kb3dzVmVyc2lvbk9yR3JlYXRlcigxMCwgMCwgMCkpIHsKKyAgICAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfTUFYX1BBVEhfQlVUVE9OLCBGQUxTRSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBEV09SRCBkYXRhVHlwZSA9IDAsIGJ1ZmZlciA9IDAsIGJ1ZmZlckxlbiA9IHNpemVvZihidWZmZXIpOworICAgICAgICAgICAgSEtFWSBoS2V5OworICAgICAgICAgICAgTFJFU1VMVCByZXMgPSBSZWdPcGVuS2V5RXhXKAorICAgICAgICAgICAgICAgIEhLRVlfTE9DQUxfTUFDSElORSwKKyAgICAgICAgICAgICAgICBMIlNZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW0iLAorICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgS0VZX1JFQUQsCisgICAgICAgICAgICAgICAgJmhLZXkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICByZXMgPSBSZWdRdWVyeVZhbHVlRXhXKGhLZXksIEwiTG9uZ1BhdGhzRW5hYmxlZCIsIG51bGxwdHIsICZkYXRhVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgKExQQllURSkmYnVmZmVyLCAmYnVmZmVyTGVuKTsKKyAgICAgICAgICAgICAgICBSZWdDbG9zZUtleShoS2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmFpbGVkIHRvIG9wZW4gU1lTVEVNXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcRmlsZVN5c3RlbTogZXJyb3IgY29kZSAlZCIsIHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MgJiYgZGF0YVR5cGUgPT0gUkVHX0RXT1JEICYmIGJ1ZmZlciA9PSAwKSB7CisgICAgICAgICAgICAgICAgVGhlbWVDb250cm9sRWxldmF0ZXMoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgVFJVRSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IEVSUk9SX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRmFpbGVkIHRvIHJlYWQgTG9uZ1BhdGhzRW5hYmxlZCB2YWx1ZTogZXJyb3IgY29kZSAlZCIsIHJlcyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkhpZGluZyBNQVhfUEFUSCBidXR0b24gYmVjYXVzZSBpdCBpcyBhbHJlYWR5IGVuYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBGYWlsdXJlUGFnZV9TaG93KCkgewpAQCAtNjI2LDYgKzY1NiwzNCBAQAogICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OLCBzaG93UmVzdGFydEJ1dHRvbik7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgRW5hYmxlTWF4UGF0aFN1cHBvcnQoKSB7CisgICAgICAgIExQV1NUUiB0YXJnZXREaXIgPSBudWxscHRyLCBkZWZhdWx0RGlyID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKEwiVGFyZ2V0RGlyIiwgJnRhcmdldERpcik7CisgICAgICAgIGlmIChGQUlMRUQoaHIpIHx8ICF0YXJnZXREaXIgfHwgIXRhcmdldERpclswXSkgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJGYWlsZWQgdG8gZ2V0IFRhcmdldERpciIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTFBXU1RSIHB5dGhvbncgPSBudWxscHRyOworICAgICAgICBTdHJBbGxvY0Zvcm1hdHRlZCgmcHl0aG9udywgTCIlbHNcXHB5dGhvbncuZXhlIiwgdGFyZ2V0RGlyKTsKKyAgICAgICAgaWYgKCFweXRob253IHx8ICFweXRob253WzBdKSB7CisgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9FUlJPUiwgIkZhaWxlZCB0byBjb25zdHJ1Y3QgcHl0aG9udy5leGUgcGF0aCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTFBDV1NUUiBhcmd1bWVudHMgPSBMIi1jIFwiaW1wb3J0IHdpbnJlZzsgIgorICAgICAgICAgICAgIndpbnJlZy5TZXRWYWx1ZUV4KCIKKyAgICAgICAgICAgICAgICAid2lucmVnLkNyZWF0ZUtleSh3aW5yZWcuSEtFWV9MT0NBTF9NQUNISU5FLCAiCisgICAgICAgICAgICAgICAgICAgICJyJ1NZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW0nKSwgIgorICAgICAgICAgICAgICAgICInTG9uZ1BhdGhzRW5hYmxlZCcsICIKKyAgICAgICAgICAgICAgICAiTm9uZSwgIgorICAgICAgICAgICAgICAgICJ3aW5yZWcuUkVHX0RXT1JELCAiCisgICAgICAgICAgICAgICAgIjEiCisgICAgICAgICAgICAiKVwiIjsKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJFeGVjdXRpbmcgJWxzICVscyIsIHB5dGhvbncsIGFyZ3VtZW50cyk7CisgICAgICAgIEhJTlNUQU5DRSByZXMgPSBTaGVsbEV4ZWN1dGVXKDAsIEwicnVuYXMiLCBweXRob253LCBhcmd1bWVudHMsIE5VTEwsIFNXX0hJREUpOworICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgInJldHVybiBjb2RlIDB4JTA4eCIsIHJlcyk7CisgICAgfQogCiBwdWJsaWM6IC8vIElCb290c3RyYXBwZXJBcHBsaWNhdGlvbgogICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QIE9uU3RhcnR1cCgpIHsKQEAgLTEyMTYsMTIgKzEyNzQsNiBAQAogICAgIH0KIAogICAgIHZpcnR1YWwgU1RETUVUSE9ESU1QXyh2b2lkKSBPbkxhdW5jaEFwcHJvdmVkRXhlQ29tcGxldGUoX19pbiBIUkVTVUxUIGhyU3RhdHVzLCBfX2luIERXT1JEIC8qcHJvY2Vzc0lkKi8pIHsKLSAgICAgICAgaWYgKEhSRVNVTFRfRlJPTV9XSU4zMihFUlJPUl9BQ0NFU1NfREVOSUVEKSA9PSBoclN0YXR1cykgewotICAgICAgICAgICAgLy90cnkgd2l0aCBTaGVsRXhlYyBuZXh0IHRpbWUKLSAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIDo6UG9zdE1lc3NhZ2VXKF9oV25kLCBXTV9DTE9TRSwgMCwgMCk7Ci0gICAgICAgIH0KICAgICB9CiAKIApAQCAtMTg2NywxMCArMTkxOSw2IEBACiAgICAgICAgICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAgICAgICAvLyBDdXN0b21pemUgY29tbWFuZHMKICAgICAgICAgICAgIC8vIFN1Y2Nlc3MvZmFpbHVyZSBjb21tYW5kcwotICAgICAgICAgICAgY2FzZSBJRF9MQVVOQ0hfQlVUVE9OOgotICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotCiAgICAgICAgICAgICBjYXNlIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT046IF9fZmFsbHRocm91Z2g7CiAgICAgICAgICAgICBjYXNlIElEX0ZBSUxVUkVfUkVTVEFSVF9CVVRUT046CiAgICAgICAgICAgICAgICAgcEJBLT5PbkNsaWNrUmVzdGFydEJ1dHRvbigpOwpAQCAtMjM3Miw2OSArMjQyMCw2IEBACiAgICAgfQogCiAKLSAgICAvLwotICAgIC8vIE9uQ2xpY2tMYXVuY2hCdXR0b24gLSBsYXVuY2ggdGhlIGFwcCBmcm9tIHRoZSBzdWNjZXNzIHBhZ2UuCi0gICAgLy8KLSAgICB2b2lkIE9uQ2xpY2tMYXVuY2hCdXR0b24oKSB7Ci0gICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOwotICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6TGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMgPSBudWxscHRyOwotICAgICAgICBMUFdTVFIgc2N6QXJndW1lbnRzID0gbnVsbHB0cjsKLSAgICAgICAgaW50IG5DbWRTaG93ID0gU1dfU0hPV05PUk1BTDsKLQotICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9QQVRILCAmc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZSAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCk7Ci0KLSAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQsICZzY3pMYXVuY2hUYXJnZXQpOwotICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIHRhcmdldCB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQpKSB7Ci0gICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCwgJnNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgZWxldmF0ZWQgaWQgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpKSB7Ci0gICAgICAgICAgICBociA9IEJhbEdldFN0cmluZ1ZhcmlhYmxlKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUywgJnNjelVuZm9ybWF0dGVkQXJndW1lbnRzKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggYXJndW1lbnRzICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX0FSR1VNRU5UUyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfSElEREVOKSkgewotICAgICAgICAgICAgbkNtZFNob3cgPSBTV19ISURFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQgJiYgIV90cmllZFRvTGF1bmNoRWxldmF0ZWQpIHsKLSAgICAgICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBUUlVFOwotICAgICAgICAgICAgaHIgPSBfZW5naW5lLT5MYXVuY2hBcHByb3ZlZEV4ZShfaFduZCwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsIDApOwotICAgICAgICAgICAgaWYgKEZBSUxFRChocikpIHsKLSAgICAgICAgICAgICAgICBCYWxMb2dFcnJvcihociwgIkZhaWxlZCB0byBsYXVuY2ggZWxldmF0ZWQgdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLQotICAgICAgICAgICAgICAgIC8vdHJ5IHdpdGggU2hlbEV4ZWMgbmV4dCB0aW1lCi0gICAgICAgICAgICAgICAgT25DbGlja0xhdW5jaEJ1dHRvbigpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzKSB7Ci0gICAgICAgICAgICAgICAgaHIgPSBCYWxGb3JtYXRTdHJpbmcoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMsICZzY3pBcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGZvcm1hdCBsYXVuY2ggYXJndW1lbnRzIHZhcmlhYmxlOiAlbHMiLCBzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGhyID0gU2hlbEV4ZWMoc2N6TGF1bmNoVGFyZ2V0LCBzY3pBcmd1bWVudHMsIEwib3BlbiIsIG51bGxwdHIsIG5DbWRTaG93LCBfaFduZCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0OiAlbHMiLCBzY3pMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOwotICAgICAgICB9Ci0KLSAgICBMRXhpdDoKLSAgICAgICAgU3RyU2VjdXJlWmVyb0ZyZWVTdHJpbmcoc2N6QXJndW1lbnRzKTsKLSAgICAgICAgUmVsZWFzZVN0cihzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0gICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekxhdW5jaFRhcmdldCk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRMYXVuY2hUYXJnZXQpOwotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KIAogICAgIC8vCiAgICAgLy8gT25DbGlja1Jlc3RhcnRCdXR0b24gLSBhbGxvd3MgdGhlIHJlc3RhcnQgYW5kIGNsb3NlcyB0aGUgYXBwLgpAQCAtMzE1Nyw3ICszMTQyLDYgQEAKICAgICAgICAgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZSA9IFVJTlRfTUFYOwogICAgICAgICBfdGFza2JhckJ1dHRvbk9LID0gRkFMU0U7CiAgICAgICAgIF9zaG93aW5nSW50ZXJuYWxVSVRoaXNQYWNrYWdlID0gRkFMU0U7Ci0gICAgICAgIF90cmllZFRvTGF1bmNoRWxldmF0ZWQgPSBGQUxTRTsKIAogICAgICAgICBfc3VwcHJlc3NQYWludCA9IEZBTFNFOwogCkBAIC0zMjQyLDcgKzMyMjYsNiBAQAogICAgIFVJTlQgX3Rhc2tiYXJCdXR0b25DcmVhdGVkTWVzc2FnZTsKICAgICBCT09MIF90YXNrYmFyQnV0dG9uT0s7CiAgICAgQk9PTCBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZTsKLSAgICBCT09MIF90cmllZFRvTGF1bmNoRWxldmF0ZWQ7CiAKICAgICBCT09MIF9zdXBwcmVzc1BhaW50OwogCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28gYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjYyOWUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCmluZGV4IDM4MzA3ZTAuLmM4OWU2ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cworKysgYi9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKQEAgLTQsNyArNCw3IEBACiAgIDxCdW5kbGUgTmFtZT0iIShsb2MuRnVsbFByb2R1Y3ROYW1lKSIKICAgICAgICAgICBVcGdyYWRlQ29kZT0iJCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSIKICAgICAgICAgICBWZXJzaW9uPSIkKHZhci5WZXJzaW9uKSIKLSAgICAgICAgICBJY29uU291cmNlRmlsZT0iYnVuZGxlLmljbyIKKyAgICAgICAgICBJY29uU291cmNlRmlsZT0iLi5cLi5cLi5cUENcaWNvbnNcc2V0dXAuaWNvIgogICAgICAgICAgIE1hbnVmYWN0dXJlcj0iIShsb2MuTWFudWZhY3R1cmVyKSIKICAgICAgICAgICBBYm91dFVybD0iaHR0cDovL3d3dy5weXRob24ub3JnLyIKICAgICAgICAgICBEaXNhYmxlTW9kaWZ5PSJidXR0b24iCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvY29tbW9uLnd4cyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCmluZGV4IDRlZmFkNjUuLjM5OGQ5NGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9jb21tb24ud3hzCisrKyBiL1Rvb2xzL21zaS9jb21tb24ud3hzCkBAIC0xLDYgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiA8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KICAgICA8RnJhZ21lbnQ+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iUk9PVFJFR0lTVFJZS0VZIiBWYWx1ZT0iU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmUiIC8+CisgICAgPC9GcmFnbWVudD4KKyAgICAKKyAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iUkVHSVNUUllLRVkiIFZhbHVlPSJTb2Z0d2FyZVxQeXRob25cUHl0aG9uQ29yZVwkKHZhci5TaG9ydFZlcnNpb24pJCh2YXIuUHlBcmNoRXh0KSQodmFyLlB5VGVzdEV4dCkiIC8+CiAgICAgPC9GcmFnbWVudD4KICAgICAKQEAgLTE2LDEwICsyMCwxMiBAQAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPFByb3BlcnR5IElkPSJVcGdyYWRlVGFibGUiIFZhbHVlPSIxIiAvPgogICAgICAgICAKKyAgICAgICAgPD9pZm5kZWYgU3VwcHJlc3NVcGdyYWRlVGFibGUgPz4KICAgICAgICAgPFVwZ3JhZGUgSWQ9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CiAgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IkRPV05HUkFERSIgTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJubyIgT25seURldGVjdD0ieWVzIiAvPgogICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJVUEdSQURFIiBNaW5pbXVtPSIkKHZhci5VcGdyYWRlTWluaW11bVZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ieWVzIiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1heGltdW09Im5vIiAvPgogICAgICAgICA8L1VwZ3JhZGU+CisgICAgICAgIDw/ZW5kaWYgPz4KICAgICAgICAgCiAgICAgICAgIDw/aWZkZWYgQ29yZVVwZ3JhZGVDb2RlID8+CiAgICAgICAgIDw/aWYgJCh2YXIuVXBncmFkZUNvZGUpIT0kKHZhci5Db3JlVXBncmFkZUNvZGUpID8+CkBAIC00MCw3ICs0Niw3IEBACiAgICAgCiAgICAgPEZyYWdtZW50PgogICAgICAgICA8IS0tIEluY2x1ZGUgYW4gaWNvbiBmb3IgdGhlIFByb2dyYW1zIGFuZCBGZWF0dXJlcyBkaWFsb2cgLS0+Ci0gICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xweWNvbi5pY28iIC8+CisgICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweXRob24uaWNvIiAvPgogICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUFBST0RVQ1RJQ09OIiBWYWx1ZT0iQVJQSWNvbiIgLz4KICAgICAgICAgPFByb3BlcnR5IElkPSJBUlBOT01PRElGWSIgVmFsdWU9IjEiIC8+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iRElTQUJMRUFEVlRTSE9SVENVVFMiIFZhbHVlPSIxIiAvPgpAQCAtNTcsNyArNjMsOSBAQAogICAgIDwhLS0gVG9wLWxldmVsIGRpcmVjdG9yaWVzIC0tPgogICAgIDxGcmFnbWVudD4KICAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iSW5zdGFsbERpcmVjdG9yeSI+Ci0gICAgICAgICAgICA8RGlyZWN0b3J5IElkPSJETExzIiBOYW1lPSJETExzIiAvPgorICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iRExMcyIgTmFtZT0iRExMcyI+CisgICAgICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iQ2F0YWxvZ3MiIC8+CisgICAgICAgICAgICA8L0RpcmVjdG9yeT4KICAgICAgICAgPC9EaXJlY3RvcnlSZWY+CiAgICAgPC9GcmFnbWVudD4KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUgYi9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZQppbmRleCA4ZDAzNTI2Li5jOTVjMjcxIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZQorKysgYi9Ub29scy9tc2kvY29tbW9uX2VuLVVTLnd4bF90ZW1wbGF0ZQpAQCAtMTQsNCArMTQsNSBAQAogICAgIDxTdHJpbmcgSWQ9Ik5vRG93bmdyYWRlIj5BIG5ld2VyIHZlcnNpb24gb2YgIShsb2MuUHJvZHVjdE5hbWUpIGlzIGFscmVhZHkgaW5zdGFsbGVkLjwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IkluY29ycmVjdENvcmUiPkFuIGluY29ycmVjdCB2ZXJzaW9uIG9mIGEgcHJlcmVxdWlzaXRlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiBQbGVhc2UgdW5pbnN0YWxsIGFueSBvdGhlciB2ZXJzaW9ucyBvZiAhKGxvYy5Qcm9kdWN0TmFtZSkgYW5kIHRyeSBpbnN0YWxsaW5nIHRoaXMgYWdhaW4uPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iTm9UYXJnZXREaXIiPlRoZSBUQVJHRVRESVIgdmFyaWFibGUgbXVzdCBiZSBwcm92aWRlZCB3aGVuIGludm9raW5nIHRoaXMgaW5zdGFsbGVyLjwvU3RyaW5nPgorICAgIDxTdHJpbmcgSWQ9Ik1hbnVmYWN0dXJlclN1cHBvcnRVcmwiPmh0dHA6Ly93d3cucHl0aG9uLm9yZy88L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2oKaW5kZXggZDI2YTYwMy4uMjRkZjBmNSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagorKysgYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCkBAIC0xNCw2ICsxNCw3IEBACiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlLnd4cyIgLz4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3JlZy53eHMiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZS53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZS53eHMKaW5kZXggMTU0Y2VlNS4uMDNkNDNjNiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGUud3hzCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlLnd4cwpAQCAtOSw2ICs5LDcgQEAKICAgICAgICAgCiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3B5dGhvbiIgUHJpbWFyeT0ieWVzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfcmVnIiBQcmltYXJ5PSJ5ZXMiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV90eHQiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9pY29ucyIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KQEAgLTI0LDcgKzI1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgV29ya2luZ0RpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgLz4KICAgICAgICAgICAgICAgICA8UmVtb3ZlRm9sZGVyIElkPSJSZW1vdmVfTWVudURpciIgRGlyZWN0b3J5PSJNZW51RGlyIiBPbj0idW5pbnN0YWxsIiAvPgogICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgotICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxQYXRoXEluc3RhbGxHcm91cCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuUHJvZHVjdE5hbWUpIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbGVkRmVhdHVyZXMiIE5hbWU9IlNob3J0Y3V0cyIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuVmVyc2lvbikiIC8+CiAgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCmluZGV4IDI3NTQ1Y2EuLmNmMDg1YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKQEAgLTEwLDYgKzEwLDcgQEAKICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZC53eHMiIC8+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9yZWcud3hzIiAvPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCmluZGV4IDU3N2ZiZTUuLjFmOWUyOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQorKysgYi9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTQsNCArNCw1IEBACiAgICAgPFN0cmluZyBJZD0iU2hvcnREZXNjcmlwdG9yIj5leGVjdXRhYmxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iU2hvcnRjdXROYW1lIj5QeXRob24ge3tTaG9ydFZlcnNpb259fSAoe3tCaXRuZXNzfX0pPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iU2hvcnRjdXREZXNjcmlwdGlvbiI+TGF1bmNoZXMgdGhlICEobG9jLlByb2R1Y3ROYW1lKSBpbnRlcnByZXRlci48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJTdXBwb3J0VXJsIj5odHRwOi8vd3d3LnB5dGhvbi5vcmcvPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cwppbmRleCA5ZTQ3YjVkLi4wMTM4NTg3IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCkBAIC0yOCw2ICsyOCw5IEBACiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5dGhvbncuZXhlIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLlB5dGhvbndFeGVDb21wb25lbnRHdWlkKSI+CiAgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9udy5leGUiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsUGF0aCIgTmFtZT0iV2luZG93ZWRFeGVjdXRhYmxlUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iWyNweXRob253LmV4ZV0iIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InZjcnVudGltZTE0MC5kbGwiIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iKiI+CiAgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0idmNydW50aW1lMTQwLmRsbCIgU291cmNlPSIhKGJpbmRwYXRoLnJlZGlzdCl2Y3J1bnRpbWUxNDAuZGxsIiBLZXlQYXRoPSJ5ZXMiIC8+CkBAIC02NiwxMCArNjksMTMgQEAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX2ljb25zIj4KICAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9InB5LmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweS5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENccHkuaWNvIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHkuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5LmljbyIgS2V5UGF0aD0ieWVzIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweWMuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5Yy5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENccHljLmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5Yy5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHljLmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweWQuaWNvIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5ZC5pY28iIFNvdXJjZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHlkLmljbyIgS2V5UGF0aD0ieWVzIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKaW5kZXggNGY0Yzg2OS4uYmYxMjEzZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfcGRiLndpeHByb2oKQEAgLTEwLDYgKzEwLDcgQEAKICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcGRiLnd4cyIgLz4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2ZpbGVzLnd4cyIgLz4KKyAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3JlZy53eHMiIC8+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPEVtYmVkZGVkUmVzb3VyY2UgSW5jbHVkZT0iKi53eGwiIC8+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9yZWcud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGVfcmVnLnd4cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDQzYzIxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfcmVnLnd4cwpAQCAtMCwwICsxLDI1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHlSZWYgSWQ9IlJPT1RSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJSRUdJU1RSWUtFWSIgLz4KKyAgICAgICAgCisgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0iZXhlX3JlZyI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJDb21tb25QeXRob25SZWdpc3RyYXRpb24iIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuQ29tbW9uUHl0aG9uUmVnQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltST09UUkVHSVNUUllLRVldIj4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iRGlzcGxheU5hbWUiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLk1hbnVmYWN0dXJlcikiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3VwcG9ydFVybCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuTWFudWZhY3R1cmVyU3VwcG9ydFVybCkiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IlB5dGhvblJlZ2lzdHJhdGlvbiIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5QeXRob25SZWdDb21wb25lbnRHdWlkKSI+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5TaG9ydGN1dE5hbWUpIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN1cHBvcnRVcmwiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLlN1cHBvcnRVcmwpIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iVmVyc2lvbiIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuTG9uZ1ZlcnNpb24pIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgTmFtZT0iU3lzVmVyc2lvbiIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuU2hvcnRWZXJzaW9uKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN5c0FyY2hpdGVjdHVyZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iJCh2YXIuUGxhdGZvcm1BcmNoaXRlY3R1cmUpIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CisgICAgPC9GcmFnbWVudD4KKzwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2ogYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagppbmRleCAwMWE5ZGNiLi44OTM1Y2U4IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud2l4cHJvagpAQCAtNSw3ICs1LDcgQEAKICAgICAgICAgPFNjaGVtYVZlcnNpb24+Mi4wPC9TY2hlbWFWZXJzaW9uPgogICAgICAgICA8T3V0cHV0TmFtZT5sYXVuY2hlcjwvT3V0cHV0TmFtZT4KICAgICAgICAgPE91dHB1dFR5cGU+UGFja2FnZTwvT3V0cHV0VHlwZT4KLSAgICAgICAgPERlZmluZUNvbnN0YW50cz5VcGdyYWRlQ29kZT0xQjY4QTBFQy00REQzLTUxMzQtODQwRS03Mzg1NEIwODYzRjE7JChEZWZpbmVDb25zdGFudHMpPC9EZWZpbmVDb25zdGFudHM+CisgICAgICAgIDxEZWZpbmVDb25zdGFudHM+VXBncmFkZUNvZGU9MUI2OEEwRUMtNEREMy01MTM0LTg0MEUtNzM4NTRCMDg2M0YxO1N1cHByZXNzVXBncmFkZVRhYmxlPTE7JChEZWZpbmVDb25zdGFudHMpPC9EZWZpbmVDb25zdGFudHM+CiAgICAgICAgIDxJZ25vcmVDb21tb25XeGxUZW1wbGF0ZXM+dHJ1ZTwvSWdub3JlQ29tbW9uV3hsVGVtcGxhdGVzPgogICAgICAgICA8U3VwcHJlc3NJQ0VzPklDRTgwPC9TdXBwcmVzc0lDRXM+CiAgICAgPC9Qcm9wZXJ0eUdyb3VwPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cyBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKaW5kZXggZWJkODc1Yy4uN2RlMTMxYSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cworKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCkBAIC01LDcgKzUsMTAgQEAKICAgICAgICAgPE1lZGlhVGVtcGxhdGUgRW1iZWRDYWI9InllcyIgQ29tcHJlc3Npb25MZXZlbD0iaGlnaCIgLz4KICAgICAgICAgCiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iU3VwcHJlc3NfVEFSR0VURElSX0NoZWNrIiBWYWx1ZT0iMSIgLz4KLSAgICAgICAgPFByb3BlcnR5UmVmIElkPSJBUlBQUk9EVUNUSUNPTiIgLz4KKyAgICAgICAgPEljb24gSWQ9IkFSUEljb24iIFNvdXJjZUZpbGU9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXGxhdW5jaGVyLmljbyIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJBUlBQUk9EVUNUSUNPTiIgVmFsdWU9IkFSUEljb24iIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQTk9NT0RJRlkiIFZhbHVlPSIxIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkRJU0FCTEVBRFZUU0hPUlRDVVRTIiBWYWx1ZT0iMSIgLz4KIAogICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxhdW5jaGVyX2V4ZSIgUHJpbWFyeT0ieWVzIiAvPgpAQCAtMjYsMTggKzI5LDIxIEBACiAgICAgICAgICAgICA8Q3VzdG9tIEJlZm9yZT0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5TE0iIEFjdGlvbj0iU2V0TGF1bmNoZXJJbnN0YWxsRGlyZWN0b3J5Q1UiPk5PVCBJbnN0YWxsZWQgQU5EIE5PVCBBTExVU0VSUz0xPC9DdXN0b20+CiAgICAgICAgICAgICA8Q3VzdG9tIEJlZm9yZT0iQ29zdEZpbmFsaXplIiBBY3Rpb249IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIj5OT1QgSW5zdGFsbGVkIEFORCBBTExVU0VSUz0xPC9DdXN0b20+CiAKLSAgICAgICAgICAgIDxSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIEFmdGVyPSJJbnN0YWxsVmFsaWRhdGUiPlVQR1JBREUgb3IgUkVNT1ZFXzM1MF9MQVVOQ0hFUjwvUmVtb3ZlRXhpc3RpbmdQcm9kdWN0cz4KKyAgICAgICAgICAgIDxSZW1vdmVFeGlzdGluZ1Byb2R1Y3RzIEFmdGVyPSJJbnN0YWxsVmFsaWRhdGUiPlVQR1JBREUgb3IgUkVNT1ZFXzM1MF9MQVVOQ0hFUiBvciBSRU1PVkVfMzYwQTFfTEFVTkNIRVI8L1JlbW92ZUV4aXN0aW5nUHJvZHVjdHM+CiAgICAgICAgIDwvSW5zdGFsbEV4ZWN1dGVTZXF1ZW5jZT4KIAorICAgICAgICA8IS0tIFVwZ3JhZGUgYWxsIHZlcnNpb25zIG9mIHRoZSBsYXVuY2hlciAtLT4KKyAgICAgICAgPFVwZ3JhZGUgSWQ9IiQodmFyLlVwZ3JhZGVDb2RlKSI+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gUHJvcGVydHk9IkRPV05HUkFERSIgTWluaW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNaW5pbXVtPSJubyIgT25seURldGVjdD0ieWVzIiAvPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJVUEdSQURFIiBNaW5pbXVtPSIwLjAuMC4wIiBJbmNsdWRlTWluaW11bT0ieWVzIiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgSW5jbHVkZU1heGltdW09Im5vIiAvPgorICAgICAgICA8L1VwZ3JhZGU+CiAgICAgICAgIDwhLS0gUHl0aG9uIDMuNS4wIHNoaXBwZWQgd2l0aCBhIGRpZmZlcmVudCBVcGdyYWRlQ29kZSAtLT4KICAgICAgICAgPFVwZ3JhZGUgSWQ9IkE3MTUzMEI5LUU4OUQtNTNEQi05QzJELUM2RDc1NTE4NzZEOCI+CiAgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWluaW11bT0iMC4wLjAuMCIgUHJvcGVydHk9IlJFTU9WRV8zNTBfTEFVTkNIRVIiIC8+CiAgICAgICAgIDwvVXBncmFkZT4KICAgICAgICAgPCEtLSBQeXRob24gMy42LjBhMSBzaGlwcGVkIHdpdGggYSBkaWZmZXJlbnQgVXBncmFkZUNvZGUgLS0+CiAgICAgICAgIDxVcGdyYWRlIElkPSIzOTQ3NTBDMC03ODgwLTVBOEYtOTk5Ri05MzM5NjVGQkNGQjQiPgotICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1heGltdW09IiQodmFyLlZlcnNpb24pIiBQcm9wZXJ0eT0iUkVNT1ZFXzM2MEExX0xBVU5DSEVSIiAvPgotICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBQcm9wZXJ0eT0iQkxPQ0tfMzYwQTFfTEFVTkNIRVIiIC8+CisgICAgICAgICAgICA8VXBncmFkZVZlcnNpb24gTWluaW11bT0iMC4wLjAuMCIgUHJvcGVydHk9IlJFTU9WRV8zNjBBMV9MQVVOQ0hFUiIgLz4KICAgICAgICAgPC9VcGdyYWRlPgotICAgICAgICA8Q29uZGl0aW9uIE1lc3NhZ2U9IiEobG9jLk5vRG93bmdyYWRlKSI+SW5zdGFsbGVkIE9SIE5PVCBCTE9DS18zNjBBMV9MQVVOQ0hFUjwvQ29uZGl0aW9uPgogICAgIDwvUHJvZHVjdD4KIDwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bCBiL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKaW5kZXggZTRjMWFhYS4uYTdlMzgyNyAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bAorKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgPFN0cmluZyBJZD0iUHl0aG9uRmlsZURlc2NyaXB0aW9uIj5QeXRob24gRmlsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbk5vQ29uRmlsZURlc2NyaXB0aW9uIj5QeXRob24gRmlsZSAobm8gY29uc29sZSk8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25Db21waWxlZEZpbGVEZXNjcmlwdGlvbiI+Q29tcGlsZWQgUHl0aG9uIEZpbGU8L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJQeXRob25FeHRlbnNpb25EZXNjcmlwdGlvbiI+UHl0aG9uIEV4dGVuc2lvbiBNb2R1bGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uIj5QeXRob24gWmlwIEFwcGxpY2F0aW9uIEZpbGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24iPlB5dGhvbiBaaXAgQXBwbGljYXRpb24gRmlsZSAobm8gY29uc29sZSk8L1N0cmluZz4KIDwvV2l4TG9jYWxpemF0aW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cwppbmRleCA5ODE5NjFhLi5kYWNlOTdlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cworKysgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfcmVnLnd4cwpAQCAtMjcsMTQgKzI3LDE4IEBACiAgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CiAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSJQeXRob24uQ29tcGlsZWRGaWxlXHNoZWxsZXhcRHJvcEhhbmRsZXIiIFZhbHVlPSJ7QkVBMjE4RDItNjk1MC00OTdCLTk0MzQtNjE2ODNFQzA2NUZFfSIgVHlwZT0ic3RyaW5nIiAvPgogCi0gICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkFyY2hpdmVGaWxlIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uRXh0ZW5zaW9uIiBEZXNjcmlwdGlvbj0iIShsb2MuUHl0aG9uRXh0ZW5zaW9uRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMyI+CisgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9InB5ZCIgLz4KKyAgICAgICAgICAgICAgICA8L1Byb2dJZD4KKworICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iNSI+CiAgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9InB5eiIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5LmV4ZSIgQXJndW1lbnQ9IiZxdW90OyVMJnF1b3Q7ICUqIiAvPgogICAgICAgICAgICAgICAgICAgICA8L0V4dGVuc2lvbj4KICAgICAgICAgICAgICAgICA8L1Byb2dJZD4KICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBSb290PSJIS0NSIiBLZXk9IlB5dGhvbi5BcmNoaXZlRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0ie0JFQTIxOEQyLTY5NTAtNDk3Qi05NDM0LTYxNjgzRUMwNjVGRX0iIFR5cGU9InN0cmluZyIgLz4KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uTm9Db25BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSIxIj4KKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uTm9Db25BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbk5vQ29uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbikiIEFkdmVydGlzZT0ibm8iIEljb249InB5LmV4ZSIgSWNvbkluZGV4PSI1Ij4KICAgICAgICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBJZD0icHl6dyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtemlwLWNvbXByZXNzZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgPFZlcmIgSWQ9Im9wZW4iIFRhcmdldEZpbGU9InB5dy5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KICAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qIGIvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvagppbmRleCA2NGU1ODc4Li4yNjMxMWVhIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKQEAgLTI3LDYgKzI3LDcgQEAKICAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKUxpYjwvVGFyZ2V0QmFzZT4KICAgICAgICAgICAgIDxUYXJnZXRfPkxpYlw8L1RhcmdldF8+CiAgICAgICAgICAgICA8R3JvdXA+bGliX3B5PC9Hcm91cD4KKyAgICAgICAgICAgIDxJbmNsdWRlSW5DYXQ+dHJ1ZTwvSW5jbHVkZUluQ2F0PgogICAgICAgICA8L0luc3RhbGxGaWxlcz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliLnd4cwppbmRleCAyYjA0YmNiLi4yYTNiOWVjIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYi53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWIud3hzCkBAIC0xMSw2ICsxMSw3IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9weSIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2ZpbGVzIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfZXh0ZW5zaW9ucyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2NhdCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KICAgICAgICAgPC9GZWF0dXJlPgogICAgIDwvUHJvZHVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwppbmRleCBhOTkyNzg0Li5hODNmNTQ0IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCkBAIC0xLDYgKzEsNiBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgotICAgIDw/ZGVmaW5lIGV4dHM9cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQ7X2J6MjtfZWxlbWVudHRyZWU7X3NvY2tldDtfc3NsO19tc2k7X2N0eXBlcztfaGFzaGxpYjtfbXVsdGlwcm9jZXNzaW5nO19sem1hO19kZWNpbWFsO19vdmVybGFwcGVkO19zcWxpdGUzID8+CisgICAgPD9kZWZpbmUgZXh0cz1weWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZDtfYnoyO19lbGVtZW50dHJlZTtfc29ja2V0O19zc2w7X21zaTtfY3R5cGVzO19oYXNobGliO19tdWx0aXByb2Nlc3Npbmc7X2x6bWE7X2RlY2ltYWw7X292ZXJsYXBwZWQ7X3NxbGl0ZTM7X2FzeW5jaW8gPz4KICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0ibGliX2V4dGVuc2lvbnMiPgogICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CkBAIC02MywxNiArNjMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJQeXRob25QYXRoIiBUeXBlPSJzdHJpbmciIFZhbHVlPSJbTGliXTtbRExMc10iIC8+CiAgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBEaXJlY3Rvcnk9IkxpYl9zaXRlX3BhY2thZ2VzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iTGliX3NpdGVfcGFja2FnZXNfUkVBRE1FIiBOYW1lPSJSRUFETUUudHh0IiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKUxpYlxzaXRlLXBhY2thZ2VzXFJFQURNRSIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmUiIERpcmVjdG9yeT0iTGliX2xpYjJ0bzMiIEd1aWQ9IiQodmFyLlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkKSI+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZpbGUgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9maWxlcyIgTmFtZT0iKi5waWNrbGUiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlX2ZvbGRlciIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgotICAgICAgICA8RGlyZWN0b3J5UmVmIElkPSJMaWIiPgotICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iTGliX3NpdGVfcGFja2FnZXMiIE5hbWU9InNpdGUtcGFja2FnZXMiIC8+Ci0gICAgICAgIDwvRGlyZWN0b3J5UmVmPgorICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9jYXQiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0ibGliX2NhdCIgRGlyZWN0b3J5PSJDYXRhbG9ncyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHl0aG9uX2xpYi5jYXQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qIGIvVG9vbHMvbXNpL21ha2VfemlwLnByb2oKaW5kZXggMTNmNzViYS4uZDJlMDMxZiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21ha2VfemlwLnByb2oKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnByb2oKQEAgLTE2LDcgKzE2LDcgQEAKICAgICAgICAgPFRhcmdldFBhdGg+JChPdXRwdXRQYXRoKVxlbi11c1wkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9UYXJnZXRQYXRoPgogICAgICAgICA8Q2xlYW5Db21tYW5kPnJtZGlyIC9xL3MgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcemlwXyQoQXJjaE5hbWUpIjwvQ2xlYW5Db21tYW5kPgogICAgICAgICA8QXJndW1lbnRzPiIkKFB5dGhvbkV4ZSkiICIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlcbWFrZV96aXAucHkiPC9Bcmd1bWVudHM+Ci0gICAgICAgIDxBcmd1bWVudHM+JChBcmd1bWVudHMpIC1lIC1vICIkKFRhcmdldFBhdGgpIiAtdCAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVx6aXBfJChBcmNoTmFtZSkiIC1iICIkKE91dERpci5UcmltRW5kKCdcJykpIjwvQXJndW1lbnRzPgorICAgICAgICA8QXJndW1lbnRzPiQoQXJndW1lbnRzKSAtZSAtbyAiJChUYXJnZXRQYXRoKSIgLXQgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcemlwXyQoQXJjaE5hbWUpIiAtYSAkKEFyY2hOYW1lKTwvQXJndW1lbnRzPgogICAgICAgICA8RW52aXJvbm1lbnQ+c2V0IERPQ19GSUxFTkFNRT1weXRob24kKFB5dGhvblZlcnNpb24pLmNobQogc2V0IFZDUkVESVNUX1BBVEg9JChWUzE0MENPTU5UT09MUylcLi5cLi5cVkNccmVkaXN0XCQoUGxhdGZvcm0pXE1pY3Jvc29mdC5WQzE0MC5DUlQ8L0Vudmlyb25tZW50PgogICAgIDwvUHJvcGVydHlHcm91cD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tYWtlX3ppcC5weSBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQppbmRleCAwZThhNGE2Li5mMDcwY2I5IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbWFrZV96aXAucHkKKysrIGIvVG9vbHMvbXNpL21ha2VfemlwLnB5CkBAIC0xOSw2ICsxOSw3IEBACiAgICAgJ19jdHlwZXNfdGVzdCcsCiAgICAgJ190ZXN0YnVmZmVyJywKICAgICAnX3Rlc3RjYXBpJywKKyAgICAnX3Rlc3Rjb25zb2xlJywKICAgICAnX3Rlc3RpbXBvcnRtdWx0aXBsZScsCiAgICAgJ190ZXN0bXVsdGlwaGFzZScsCiAgICAgJ3h4bGltaXRlZCcsCkBAIC00Niw2ICs0NywxMCBAQAogICAgICdweXRob24zc3R1YicsCiB9CiAKK0VYQ0xVREVEX0ZJTEVTID0geworICAgICdweXNoZWxsZXh0JywKK30KKwogZGVmIGlzX25vdF9kZWJ1ZyhwKToKICAgICBpZiBERUJVR19SRS5zZWFyY2gocC5uYW1lKToKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC01Myw3ICs1OCw3IEBACiAgICAgaWYgVEtUQ0xfUkUuc2VhcmNoKHAubmFtZSk6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgcmV0dXJuIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBERUJVR19GSUxFUworICAgIHJldHVybiBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gREVCVUdfRklMRVMgYW5kIHAuc3RlbS5sb3dlcigpIG5vdCBpbiBFWENMVURFRF9GSUxFUwogCiBkZWYgaXNfbm90X2RlYnVnX29yX3B5dGhvbihwKToKICAgICByZXR1cm4gaXNfbm90X2RlYnVnKHApIGFuZCBub3QgUFlUSE9OX0RMTF9SRS5zZWFyY2gocC5uYW1lKQpAQCAtNjMsOCArNjgsNiBAQAogICAgIGlmIHAuaXNfZGlyKCk6CiAgICAgICAgIGlmIG5hbWUgaW4gRVhDTFVERV9GUk9NX0xJQlJBUlk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdwbGF0LScpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgPT0gJ3Rlc3QnIGFuZCBwLnBhcnRzWy0yXS5sb3dlcigpID09ICdsaWInOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5hbWUgaW4geyd0ZXN0JywgJ3Rlc3RzJ30gYW5kIHAucGFydHNbLTNdLmxvd2VyKCkgPT0gJ2xpYic6CkBAIC04OSwyNSArOTIsMjcgQEAKIAogICAgIHJldHVybiBwLnN1ZmZpeC5sb3dlcigpIGluIHsnLnB5JywgJy5weXcnLCAnLnR4dCd9CiAKK0JBU0VfTkFNRSA9ICdweXRob257MC5tYWpvcn17MC5taW5vcn0nLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKQorCiBGVUxMX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9udy5leGUnLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnLycsICckYnVpbGQnLCAncHl0aG9uezAubWFqb3J9ezAubWlub3J9LmRsbCcuZm9ybWF0KHN5cy52ZXJzaW9uX2luZm8pLCBpc19ub3RfZGVidWcpLAotICAgICgnRExMcy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ0RMTHMvJywgJyRidWlsZCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1Z19vcl9weXRob24pLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbi5leGUnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbncuZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob257fS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvLm1ham9yKSwgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICd7fS5kbGwnLmZvcm1hdChCQVNFX05BTUUpLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCdETExzLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnX29yX3B5dGhvbiksCiAgICAgKCdpbmNsdWRlLycsICdpbmNsdWRlJywgJyouaCcsIE5vbmUpLAogICAgICgnaW5jbHVkZS8nLCAnUEMnLCAncHljb25maWcuaCcsIE5vbmUpLAogICAgICgnTGliLycsICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKLSAgICAoJ2xpYnMvJywgJyRidWlsZCcsICcqLmxpYicsIGluY2x1ZGVfaW5fbGlicyksCisgICAgKCdsaWJzLycsICdQQ0J1aWxkLyRhcmNoJywgJyoubGliJywgaW5jbHVkZV9pbl9saWJzKSwKICAgICAoJ1Rvb2xzLycsICdUb29scycsICcqKi8qJywgaW5jbHVkZV9pbl90b29scyksCiBdCiAKIEVNQkVEX0xBWU9VVCA9IFsKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyoucHlkJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfS56aXAnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJ3B5dGhvbiouZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5kbGwnLCBpc19ub3RfZGVidWcpLAorICAgICgne30uemlwJy5mb3JtYXQoQkFTRV9OQU1FKSwgJ0xpYicsICcqKi8qJywgaW5jbHVkZV9pbl9saWIpLAogXQogCiBpZiBvcy5nZXRlbnYoJ0RPQ19GSUxFTkFNRScpOgpAQCAtMTY4LDE4ICsxNzMsMTggQEAKIGRlZiBtYWluKCk6CiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1zJywgJy0tc291cmNlJywgbWV0YXZhcj0nZGlyJywgaGVscD0nVGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSByZXBvc2l0b3J5IHJvb3QnLCB0eXBlPVBhdGgpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBhcmNoaXZlJywgdHlwZT1QYXRoLCBkZWZhdWx0PU5vbmUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1vdXQnLCBtZXRhdmFyPSdmaWxlJywgaGVscD0nVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBzZWxmLWV4dHJhY3RpbmcgYXJjaGl2ZScsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy10JywgJy0tdGVtcCcsIG1ldGF2YXI9J2RpcicsIGhlbHA9J0EgZGlyZWN0b3J5IHRvIHRlbXBvcmFyaWx5IGV4dHJhY3QgZmlsZXMgaW50bycsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1lJywgJy0tZW1iZWQnLCBoZWxwPSdDcmVhdGUgYW4gZW1iZWRkaW5nIGxheW91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsZCcsIGhlbHA9J1NwZWNpZnkgdGhlIGJ1aWxkIGRpcmVjdG9yeScsIHR5cGU9UGF0aCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYScsICctLWFyY2gnLCBoZWxwPSdTcGVjaWZ5IHRoZSBhcmNoaXRlY3R1cmUgdG8gdXNlICh3aW4zMi9hbWQ2NCknLCB0eXBlPXN0ciwgZGVmYXVsdD0id2luMzIiKQogICAgIG5zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCiAgICAgc291cmNlID0gbnMuc291cmNlIG9yIChQYXRoKF9fZmlsZV9fKS5yZXNvbHZlKCkucGFyZW50LnBhcmVudC5wYXJlbnQpCiAgICAgb3V0ID0gbnMub3V0Ci0gICAgYnVpbGQgPSBucy5idWlsZAorICAgIGFyY2ggPSBucy5hcmNoCiAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlLCBQYXRoKQogICAgIGFzc2VydCBub3Qgb3V0IG9yIGlzaW5zdGFuY2Uob3V0LCBQYXRoKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGJ1aWxkLCBQYXRoKQorICAgIGFzc2VydCBpc2luc3RhbmNlKGFyY2gsIHN0cikKIAogICAgIGlmIG5zLnRlbXA6CiAgICAgICAgIHRlbXAgPSBucy50ZW1wCkBAIC0yMDIsMTUgKzIwNywxNyBAQAogCiAgICAgdHJ5OgogICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6Ci0gICAgICAgICAgICBpZiBzID09ICckYnVpbGQnOgotICAgICAgICAgICAgICAgIHMgPSBidWlsZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzID0gc291cmNlIC8gcworICAgICAgICAgICAgcyA9IHNvdXJjZSAvIHMucmVwbGFjZSgiJGFyY2giLCBhcmNoKQogICAgICAgICAgICAgY29waWVkID0gY29weV90b19sYXlvdXQodGVtcCAvIHQucnN0cmlwKCcvJyksIHJnbG9iKHMsIHAsIGMpKQogICAgICAgICAgICAgcHJpbnQoJ0NvcGllZCB7fSBmaWxlcycuZm9ybWF0KGNvcGllZCkpCiAKLSAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gJ3B5dmVudi5jZmcnKSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgcHJpbnQoJ2FwcGxvY2FsID0gdHJ1ZScsIGZpbGU9ZikKKyAgICAgICAgaWYgbnMuZW1iZWQ6CisgICAgICAgICAgICB3aXRoIG9wZW4oc3RyKHRlbXAgLyAoQkFTRV9OQU1FICsgJy5fcHRoJykpLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgcHJpbnQoQkFTRV9OQU1FICsgJy56aXAnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJy4nLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJycsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICBwcmludCgnIyBVbmNvbW1lbnQgdG8gcnVuIHNpdGUubWFpbigpIGF1dG9tYXRpY2FsbHknLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyNpbXBvcnQgc2l0ZScsIGZpbGU9ZikKIAogICAgICAgICBpZiBvdXQ6CiAgICAgICAgICAgICB0b3RhbCA9IGNvcHlfdG9fbGF5b3V0KG91dCwgcmdsb2IodGVtcCwgJyoqLyonLCBOb25lKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHJvcHMgYi9Ub29scy9tc2kvbXNpLnByb3BzCmluZGV4IDBjZjdjNzcuLjYwYWJiYTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHJvcHMKKysrIGIvVG9vbHMvbXNpL21zaS5wcm9wcwpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICA8Q29uZmlndXJhdGlvbiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnJyI+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KICAgICAgICAgPFBsYXRmb3JtIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnJyI+eDg2PC9QbGF0Zm9ybT4KICAgICAgICAgPEluc3RhbGxTY29wZSBDb25kaXRpb249IickKEluc3RhbGxTY29wZSknICE9ICdwZXJNYWNoaW5lJyI+cGVyVXNlcjwvSW5zdGFsbFNjb3BlPgorICAgICAgICA8X01ha2VDYXRDb21tYW5kIENvbmRpdGlvbj0iJyQoX01ha2VDYXRDb21tYW5kKScgPT0gJyciPm1ha2VjYXQ8L19NYWtlQ2F0Q29tbWFuZD4KICAgICA8L1Byb3BlcnR5R3JvdXA+CiAKICAgICA8SW1wb3J0IFByb2plY3Q9IndpeC5wcm9wcyIgLz4KQEAgLTY5LDYgKzcwLDggQEAKICAgICA8UHJvcGVydHlHcm91cD4KICAgICAgICAgPEJpdG5lc3M+MzItYml0PC9CaXRuZXNzPgogICAgICAgICA8Qml0bmVzcyBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj42NC1iaXQ8L0JpdG5lc3M+CisgICAgICAgIDxQbGF0Zm9ybUFyY2hpdGVjdHVyZT4zMmJpdDwvUGxhdGZvcm1BcmNoaXRlY3R1cmU+CisgICAgICAgIDxQbGF0Zm9ybUFyY2hpdGVjdHVyZSBDb25kaXRpb249IiQoUGxhdGZvcm0pID09ICd4NjQnIj42NGJpdDwvUGxhdGZvcm1BcmNoaXRlY3R1cmU+CiAgICAgICAgIDxEZWZpbmVDb25zdGFudHM+CiAgICAgICAgICAgICAkKERlZmluZUNvbnN0YW50cyk7CiAgICAgICAgICAgICBWZXJzaW9uPSQoSW5zdGFsbGVyVmVyc2lvbik7CkBAIC03OSw2ICs4Miw3IEBACiAgICAgICAgICAgICBVcGdyYWRlTWluaW11bVZlcnNpb249JChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKS4wLjA7CiAgICAgICAgICAgICBOZXh0TWFqb3JWZXJzaW9uTnVtYmVyPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKFttc2J1aWxkXTo6QWRkKCQoTWlub3JWZXJzaW9uTnVtYmVyKSwgMSkpLjAuMDsKICAgICAgICAgICAgIEJpdG5lc3M9JChCaXRuZXNzKTsKKyAgICAgICAgICAgIFBsYXRmb3JtQXJjaGl0ZWN0dXJlPSQoUGxhdGZvcm1BcmNoaXRlY3R1cmUpOwogICAgICAgICAgICAgUHlEZWJ1Z0V4dD0kKFB5RGVidWdFeHQpOwogICAgICAgICAgICAgUHlBcmNoRXh0PSQoUHlBcmNoRXh0KTsKICAgICAgICAgICAgIFB5VGVzdEV4dD0kKFB5VGVzdEV4dCk7CkBAIC0xMDAsNiArMTA0LDcgQEAKICAgICAgICAgICAgIDxHcm91cD5nZW5lcmF0ZWRfZmlsZWxpc3Q8L0dyb3VwPgogICAgICAgICAgICAgPENvbmRpdGlvbj48L0NvbmRpdGlvbj4KICAgICAgICAgICAgIDxEaXNrSWQ+PC9EaXNrSWQ+CisgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PmZhbHNlPC9JbmNsdWRlSW5DYXQ+CiAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgogICAgICAgICA8TGlua2VyQmluZElucHV0UGF0aHM+CiAgICAgICAgICAgICA8VmlzaWJsZT5mYWxzZTwvVmlzaWJsZT4KQEAgLTE1NSw2ICsxNjAsMTIgQEAKICAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlJlbW92ZUxpYjJ0bzNQaWNrbGVDb21wb25lbnRHdWlkIj4KICAgICAgICAgICAgIDxVcmk+bGliMnRvMy9waWNrbGVzPC9Vcmk+CiAgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJDb21tb25QeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnk8L1VyaT4KKyAgICAgICAgPC9fVXVpZD4KKyAgICAgICAgPF9VdWlkIEluY2x1ZGU9IlB5dGhvblJlZ0NvbXBvbmVudEd1aWQiPgorICAgICAgICAgICAgPFVyaT5yZWdpc3RyeS8kKE91dHB1dE5hbWUpPC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgPFRhcmdldCBOYW1lPSJfR2VuZXJhdGVHdWlkcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIENvbmRpdGlvbj0iJChUYXJnZXROYW1lKSAhPSAnbGF1bmNoZXInIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnRhcmdldHMgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKaW5kZXggODZiZTM1Yi4uOTI4M2ExZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21zaS50YXJnZXRzCisrKyBiL1Rvb2xzL21zaS9tc2kudGFyZ2V0cwpAQCAtMTIsOCArMTIsMTAgQEAKICAgICAgICAgICAgICAgICA8X1NvdXJjZT4lKFNvdXJjZSkkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoU291cmNlQmFzZSksICUoRnVsbFBhdGgpKSk8L19Tb3VyY2U+CiAgICAgICAgICAgICAgICAgPF9UYXJnZXQ+JShUYXJnZXRfKSQoW21zYnVpbGRdOjpNYWtlUmVsYXRpdmUoJShUYXJnZXRCYXNlKSwgJShGdWxsUGF0aCkpKTwvX1RhcmdldD4KICAgICAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8X0NhdGFsb2dGaWxlcyBJbmNsdWRlPSJAKEluc3RhbGxGaWxlcykiIENvbmRpdGlvbj0iJShJbnN0YWxsRmlsZXMuSW5jbHVkZUluQ2F0KSBhbmQgJychPSQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShJbnN0YWxsRmlsZXMuRnVsbFBhdGgpKSkiIC8+CiAgICAgICAgIDwvSXRlbUdyb3VwPgotICAgICAgICAKKwogICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9GaWxlTGlzdFRhcmdldCkiIExpbmVzPSJAKEluc3RhbGxGaWxlcy0+JyZxdW90OyUoX1NvdXJjZSkmcXVvdDssJnF1b3Q7JShfVGFyZ2V0KSZxdW90OywmcXVvdDslKEdyb3VwKSZxdW90OywmcXVvdDslKERpc2tJZCkmcXVvdDssJnF1b3Q7JShDb25kaXRpb24pJnF1b3Q7JykiIE92ZXJ3cml0ZT0idHJ1ZSIgLz4KICAgICAgICAgPEV4ZWMgQ29tbWFuZD0nIiQoUHl0aG9uRXhlKSIgY3N2X3RvX3d4cy5weSAiJChfRmlsZUxpc3RUYXJnZXQpIiAiJChfSW5zdGFsbEZpbGVzVGFyZ2V0KSInCiAgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9IiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KSIgLz4KQEAgLTI0LDYgKzI2LDM1IEBACiAgICAgICAgIDwvSXRlbUdyb3VwPgogICAgIDwvVGFyZ2V0PgogCisgICAgPFRhcmdldCBOYW1lPSJHZW5lcmF0ZUNhdGFsb2ciIEFmdGVyVGFyZ2V0cz0iUHJvY2Vzc0luc3RhbGxGaWxlcyIgQ29uZGl0aW9uPSInQChfQ2F0YWxvZ0ZpbGVzKScgIT0gJyciPgorICAgICAgICA8UHJvcGVydHlHcm91cD4KKyAgICAgICAgICAgIDxfQ2F0RmlsZVNvdXJjZVRhcmdldD4kKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJChNU0J1aWxkUHJvamVjdE5hbWUpLmNkZjwvX0NhdEZpbGVTb3VyY2VUYXJnZXQ+CisgICAgICAgICAgICA8X0NhdEZpbGVUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKXB5dGhvbl8kKE1TQnVpbGRQcm9qZWN0TmFtZSkuY2F0PC9fQ2F0RmlsZVRhcmdldD4KKyAgICAgICAgICAgIDxfQ2F0RmlsZT5bQ2F0YWxvZ0hlYWRlcl0KK05hbWU9JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGaWxlTmFtZSgkKF9DYXRGaWxlVGFyZ2V0KSkpCitSZXN1bHREaXI9JChbU3lzdGVtLklPLlBhdGhdOjpHZXREaXJlY3RvcnlOYW1lKCQoX0NhdEZpbGVUYXJnZXQpKSkKK1B1YmxpY1ZlcnNpb249MQorQ2F0YWxvZ1ZlcnNpb249MgorSGFzaEFsZ29yaXRobXM9U0hBMjU2CitQYWdlSGFzaGVzPWZhbHNlCitFbmNvZGluZ1R5cGU9CisKK1tDYXRhbG9nRmlsZXNdCitAKF9DYXRhbG9nRmlsZXMtPicmbHQ7SEFTSCZndDslKEZpbGVuYW1lKSUoRXh0ZW5zaW9uKT0lKEZ1bGxQYXRoKScsJworJykKKzwvX0NhdEZpbGU+CisgICAgICAgIDwvUHJvcGVydHlHcm91cD4KKworICAgICAgICA8V3JpdGVMaW5lc1RvRmlsZSBGaWxlPSIkKF9DYXRGaWxlU291cmNlVGFyZ2V0KSIgTGluZXM9IiQoX0NhdEZpbGUpIiBPdmVyd3JpdGU9InRydWUiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyQoX01ha2VDYXRDb21tYW5kKSAiJChfQ2F0RmlsZVNvdXJjZVRhcmdldCkiJyBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiIC8+CisgICAgICAgIDxFeGVjIENvbW1hbmQ9JyQoX1NpZ25Db21tYW5kKSAiJChfQ2F0RmlsZVRhcmdldCkiJyBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiCisgICAgICAgICAgICAgIENvbmRpdGlvbj0iRXhpc3RzKCQoX0NhdEZpbGVUYXJnZXQpKSBhbmQgJyQoX1NpZ25Db21tYW5kKScgIT0gJyciIC8+CisKKyAgICAgICAgPEl0ZW1Hcm91cD4KKyAgICAgICAgICAgIDxGaWxlV3JpdGVzIEluY2x1ZGU9IiQoX0NhdEZpbGVTb3VyY2VUYXJnZXQpOyQoX0NhdEZpbGVUYXJnZXQpIiAvPgorICAgICAgICA8L0l0ZW1Hcm91cD4KKyAgICA8L1RhcmdldD4KKwogICAgIDxUYXJnZXQgTmFtZT0iX1RyYW5zZm9ybVd4bFRlbXBsYXRlcyIgQWZ0ZXJUYXJnZXRzPSJQcmVwYXJlRm9yQnVpbGQiIElucHV0cz0iQChXeGxUZW1wbGF0ZSk7JChQeVNvdXJjZVBhdGgpaW5jbHVkZVxwYXRjaGxldmVsLmgiIE91dHB1dHM9IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCklKEZpbGVuYW1lKS53eGwiPgogICAgICAgICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IidAKFd4bFRlbXBsYXRlKScgIT0gJyciPgogICAgICAgICAgICAgPF9Db250ZW50PiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJShXeGxUZW1wbGF0ZS5GdWxsUGF0aCkpLlJlcGxhY2UoYHt7U2hvcnRWZXJzaW9ufX1gLCBgJChNYWpvclZlcnNpb25OdW1iZXIpLiQoTWlub3JWZXJzaW9uTnVtYmVyKSQoUHlUZXN0RXh0KWApLlJlcGxhY2UoYHt7TG9uZ1ZlcnNpb259fWAsIGAkKFB5dGhvblZlcnNpb24pJChQeVRlc3RFeHQpYCkuUmVwbGFjZShge3tCaXRuZXNzfX1gLCBgJChCaXRuZXNzKWApKTwvX0NvbnRlbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCmluZGV4IGU4MDNhYTAuLjgyYTkxMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS90ZXN0L3Rlc3RfZmlsZXMud3hzCkBAIC0xLDc3ICsxLDQyIEBACiDvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CisgICAgPD9kZWZpbmUgZXh0cz1fdGVzdGNhcGk7X2N0eXBlc190ZXN0O190ZXN0YnVmZmVyO190ZXN0aW1wb3J0bXVsdGlwbGU7X3Rlc3RtdWx0aXBoYXNlO190ZXN0Y29uc29sZSA/PgogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0ZXN0X2V4dGVuc2lvbnMiPgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RjYXBpLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpLnB5ZCIgTmFtZT0iX3Rlc3RjYXBpLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KS5weWQiIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0LnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0LnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlci5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0YnVmZmVyLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXIucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCiAgICAgPEZyYWdtZW50PgogICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19zeW1ib2xzIj4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5wZGIiIE5hbWU9Il90ZXN0Y2FwaS5wZGIiIC8+CisgICAgICAgICAgICA8P2ZvcmVhY2ggZXh0IGluICQodmFyLmV4dHMpPz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0iJCh2YXIuZXh0KS5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5wZGIiIE5hbWU9Il9jdHlwZXNfdGVzdC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXIucGRiIiBOYW1lPSJfdGVzdGJ1ZmZlci5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgTmFtZT0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KICAgICAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zX2QiPgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RjYXBpX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNhcGlfZC5weWQiIE5hbWU9Il90ZXN0Y2FwaV9kLnB5ZCIgLz4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dClfZC5weWQiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucHlkIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5weWQiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSIkKHZhci5leHQpX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dClfZC5wZGIiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgTmFtZT0iX3Rlc3RidWZmZXJfZC5weWQiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5weWQiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucGRiIiBOYW1lPSJfdGVzdGNhcGlfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX2N0eXBlc190ZXN0X2QucGRiIiBOYW1lPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0YnVmZmVyX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgTmFtZT0iX3Rlc3RidWZmZXJfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGVfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPD9lbmRmb3JlYWNoID8+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KIDwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2ogYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagppbmRleCBmNDNjZjMzLi5iN2ZjNDFlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagpAQCAtMzYsNiArMzYsNyBAQAogICAgICAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KICAgICAgICAgICAgICAgICA8VGFyZ2V0Xz48L1RhcmdldF8+CiAgICAgICAgICAgICAgICAgPEdyb3VwPnRvb2xzX3B5PC9Hcm91cD4KKyAgICAgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PnRydWU8L0luY2x1ZGVJbkNhdD4KICAgICAgICAgPC9JbnN0YWxsRmlsZXM+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwppbmRleCA4Zjg0MThhLi43YTgwNWQwIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCisrKyBiL1Rvb2xzL21zaS90b29scy90b29scy53eHMKQEAgLTksNiArOSw3IEBACiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idG9vbHNfcHkiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX3NjcmlwdHMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX2NhdCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KICAgICAgICAgPC9GZWF0dXJlPgogICAgIDwvUHJvZHVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCmluZGV4IDNhZTBkYjIuLjljNzZiMWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cwpAQCAtMTMsNCArMTMsMTEgQEAKICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRvb2xzX2NhdCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ0b29sc19jYXQiIERpcmVjdG9yeT0iQ2F0YWxvZ3MiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl90b29scy5jYXQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2ogYi9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCmluZGV4IDk2ZjU0ZGMuLmMzY2Q0M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKKysrIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagpAQCAtMTQsNiArMTQsNyBAQAogICAgIDxQcm9wZXJ0eUdyb3VwPgogICAgICAgICA8TnVnZXQgQ29uZGl0aW9uPSIkKE51Z2V0KSA9PSAnJyI+JChFeHRlcm5hbHNEaXIpXHdpbmRvd3MtaW5zdGFsbGVyXG51Z2V0XG51Z2V0LmV4ZTwvTnVnZXQ+CiAgICAgICAgIDxOdXNwZWNWZXJzaW9uPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpPC9OdXNwZWNWZXJzaW9uPgorICAgICAgICA8TnVzcGVjVmVyc2lvbiBDb25kaXRpb249IiQoUmVsZWFzZUxldmVsTmFtZSkgIT0gJyciPiQoTnVzcGVjVmVyc2lvbiktJChSZWxlYXNlTGV2ZWxOYW1lKTwvTnVzcGVjVmVyc2lvbj4KICAgICAgICAgPFNpZ25PdXRwdXQ+ZmFsc2U8L1NpZ25PdXRwdXQ+CiAgICAgICAgIDxUYXJnZXROYW1lPiQoT3V0cHV0TmFtZSkuJChOdXNwZWNWZXJzaW9uKTwvVGFyZ2V0TmFtZT4KICAgICAgICAgPFRhcmdldEV4dD4ubnVwa2c8L1RhcmdldEV4dD4KQEAgLTIzLDcgKzI0LDcgQEAKICAgICAgICAgPENsZWFuQ29tbWFuZD5ybWRpciAvcS9zICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpIjwvQ2xlYW5Db21tYW5kPgogICAgICAgICAKICAgICAgICAgPFB5dGhvbkFyZ3VtZW50cz4iJChQeXRob25FeGUpIiAiJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXC4uXG1zaVxtYWtlX3ppcC5weSI8L1B5dGhvbkFyZ3VtZW50cz4KLSAgICAgICAgPFB5dGhvbkFyZ3VtZW50cz4kKFB5dGhvbkFyZ3VtZW50cykgLXQgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkiIC1iICIkKE91dERpci5UcmltRW5kKCdcJykpXC4uIjwvUHl0aG9uQXJndW1lbnRzPgorICAgICAgICA8UHl0aG9uQXJndW1lbnRzPiQoUHl0aG9uQXJndW1lbnRzKSAtdCAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSIgLWEgJChBcmNoTmFtZSk8L1B5dGhvbkFyZ3VtZW50cz4KICAgICAgICAgCiAgICAgICAgIDxQaXBBcmd1bWVudHM+IiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClccHl0aG9uLmV4ZSIgLUIgLWMgImltcG9ydCBzeXM7IHN5cy5wYXRoLmFwcGVuZChyJyQoUHlTb3VyY2VQYXRoKVxMaWInKTsgaW1wb3J0IGVuc3VyZXBpcDsgZW5zdXJlcGlwLl9tYWluKCkiPC9QaXBBcmd1bWVudHM+CiAgICAgICAgIDxQYWNrYWdlQXJndW1lbnRzIENvbmRpdGlvbj0iJChQYWNrYWdlcykgIT0gJyciPiIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHB5dGhvbi5leGUiIC1CIC1tIHBpcCBpbnN0YWxsIC1VICQoUGFja2FnZXMpPC9QYWNrYWdlQXJndW1lbnRzPgpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCAyODUwMzBlLi43ZTFjYzRlIDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMTA0LDYgKzEwNCwxOSBAQAogICAgICAgICBzZWxmLndyaXRlKCIgIitzZWxmLmJpbm9wW3Qub3AuX19jbGFzc19fLl9fbmFtZV9fXSsiPSAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCiAKKyAgICBkZWYgX0FubkFzc2lnbihzZWxmLCB0KToKKyAgICAgICAgc2VsZi5maWxsKCkKKyAgICAgICAgaWYgbm90IHQuc2ltcGxlIGFuZCBpc2luc3RhbmNlKHQudGFyZ2V0LCBhc3QuTmFtZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCcoJykKKyAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnRhcmdldCkKKyAgICAgICAgaWYgbm90IHQuc2ltcGxlIGFuZCBpc2luc3RhbmNlKHQudGFyZ2V0LCBhc3QuTmFtZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCcpJykKKyAgICAgICAgc2VsZi53cml0ZSgiOiAiKQorICAgICAgICBzZWxmLmRpc3BhdGNoKHQuYW5ub3RhdGlvbikKKyAgICAgICAgaWYgdC52YWx1ZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiA9ICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCisKICAgICBkZWYgX1JldHVybihzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJyZXR1cm4iKQogICAgICAgICBpZiB0LnZhbHVlOgpAQCAtMzIyLDkgKzMzNSw3MiBAQAogICAgIGRlZiBfU3RyKHNlbGYsIHRyZWUpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodHJlZS5zKSkKIAorICAgIGRlZiBfSm9pbmVkU3RyKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCJmIikKKyAgICAgICAgc3RyaW5nID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLl9mc3RyaW5nX0pvaW5lZFN0cih0LCBzdHJpbmcud3JpdGUpCisgICAgICAgIHNlbGYud3JpdGUocmVwcihzdHJpbmcuZ2V0dmFsdWUoKSkpCisKKyAgICBkZWYgX0Zvcm1hdHRlZFZhbHVlKHNlbGYsIHQpOgorICAgICAgICBzZWxmLndyaXRlKCJmIikKKyAgICAgICAgc3RyaW5nID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLl9mc3RyaW5nX0Zvcm1hdHRlZFZhbHVlKHQsIHN0cmluZy53cml0ZSkKKyAgICAgICAgc2VsZi53cml0ZShyZXByKHN0cmluZy5nZXR2YWx1ZSgpKSkKKworICAgIGRlZiBfZnN0cmluZ19Kb2luZWRTdHIoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICBmb3IgdmFsdWUgaW4gdC52YWx1ZXM6CisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCAiX2ZzdHJpbmdfIiArIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgbWV0aCh2YWx1ZSwgd3JpdGUpCisKKyAgICBkZWYgX2ZzdHJpbmdfU3RyKHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgdmFsdWUgPSB0LnMucmVwbGFjZSgieyIsICJ7eyIpLnJlcGxhY2UoIn0iLCAifX0iKQorICAgICAgICB3cml0ZSh2YWx1ZSkKKworICAgIGRlZiBfZnN0cmluZ19Db25zdGFudChzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHQudmFsdWUsIHN0cikKKyAgICAgICAgdmFsdWUgPSB0LnZhbHVlLnJlcGxhY2UoInsiLCAie3siKS5yZXBsYWNlKCJ9IiwgIn19IikKKyAgICAgICAgd3JpdGUodmFsdWUpCisKKyAgICBkZWYgX2ZzdHJpbmdfRm9ybWF0dGVkVmFsdWUoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICB3cml0ZSgieyIpCisgICAgICAgIGV4cHIgPSBpby5TdHJpbmdJTygpCisgICAgICAgIFVucGFyc2VyKHQudmFsdWUsIGV4cHIpCisgICAgICAgIGV4cHIgPSBleHByLmdldHZhbHVlKCkucnN0cmlwKCJcbiIpCisgICAgICAgIGlmIGV4cHIuc3RhcnRzd2l0aCgieyIpOgorICAgICAgICAgICAgd3JpdGUoIiAiKSAgIyBTZXBhcmF0ZSBwYWlyIG9mIG9wZW5pbmcgYnJhY2tldHMgYXMgInsgeyIKKyAgICAgICAgd3JpdGUoZXhwcikKKyAgICAgICAgaWYgdC5jb252ZXJzaW9uICE9IC0xOgorICAgICAgICAgICAgY29udmVyc2lvbiA9IGNocih0LmNvbnZlcnNpb24pCisgICAgICAgICAgICBhc3NlcnQgY29udmVyc2lvbiBpbiAic3JhIgorICAgICAgICAgICAgd3JpdGUoZiIhe2NvbnZlcnNpb259IikKKyAgICAgICAgaWYgdC5mb3JtYXRfc3BlYzoKKyAgICAgICAgICAgIHdyaXRlKCI6IikKKyAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKHNlbGYsICJfZnN0cmluZ18iICsgdHlwZSh0LmZvcm1hdF9zcGVjKS5fX25hbWVfXykKKyAgICAgICAgICAgIG1ldGgodC5mb3JtYXRfc3BlYywgd3JpdGUpCisgICAgICAgIHdyaXRlKCJ9IikKKwogICAgIGRlZiBfTmFtZShzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZSh0LmlkKQogCisgICAgZGVmIF93cml0ZV9jb25zdGFudChzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChmbG9hdCwgY29tcGxleCkpOgorICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKHZhbHVlKS5yZXBsYWNlKCJpbmYiLCBJTkZTVFIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKHZhbHVlKSkKKworICAgIGRlZiBfQ29uc3RhbnQoc2VsZiwgdCk6CisgICAgICAgIHZhbHVlID0gdC52YWx1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIoIikKKyAgICAgICAgICAgIGlmIGxlbih2YWx1ZSkgPT0gMToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25zdGFudCh2YWx1ZVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCIsIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW50ZXJsZWF2ZShsYW1iZGE6IHNlbGYud3JpdGUoIiwgIiksIHNlbGYuX3dyaXRlX2NvbnN0YW50LCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIikiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uc3RhbnQodC52YWx1ZSkKKwogICAgIGRlZiBfTmFtZUNvbnN0YW50KHNlbGYsIHQpOgogICAgICAgICBzZWxmLndyaXRlKHJlcHIodC52YWx1ZSkpCiAKQEAgLTM2OCw3ICs0NDQsMTAgQEAKICAgICAgICAgc2VsZi53cml0ZSgifSIpCiAKICAgICBkZWYgX2NvbXByZWhlbnNpb24oc2VsZiwgdCk6Ci0gICAgICAgIHNlbGYud3JpdGUoIiBmb3IgIikKKyAgICAgICAgaWYgdC5pc19hc3luYzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhc3luYyBmb3IgIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoIiBmb3IgIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnRhcmdldCkKICAgICAgICAgc2VsZi53cml0ZSgiIGluICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5pdGVyKQpAQCAtNDEzLDcgKzQ5Miw3IEBACiAgICAgZGVmIF9UdXBsZShzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZSgiKCIpCiAgICAgICAgIGlmIGxlbih0LmVsdHMpID09IDE6Ci0gICAgICAgICAgICAoZWx0LCkgPSB0LmVsdHMKKyAgICAgICAgICAgIGVsdCA9IHQuZWx0c1swXQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaChlbHQpCiAgICAgICAgICAgICBzZWxmLndyaXRlKCIsIikKICAgICAgICAgZWxzZToKQEAgLTQ2MCw3ICs1MzksOCBAQAogICAgICAgICAjIFNwZWNpYWwgY2FzZTogMy5fX2Fic19fKCkgaXMgYSBzeW50YXggZXJyb3IsIHNvIGlmIHQudmFsdWUKICAgICAgICAgIyBpcyBhbiBpbnRlZ2VyIGxpdGVyYWwgdGhlbiB3ZSBuZWVkIHRvIGVpdGhlciBwYXJlbnRoZXNpemUKICAgICAgICAgIyBpdCBvciBhZGQgYW4gZXh0cmEgc3BhY2UgdG8gZ2V0IDMgLl9fYWJzX18oKS4KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuTnVtKSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLm4sIGludCk6CisgICAgICAgIGlmICgoaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuTnVtKSBhbmQgaXNpbnN0YW5jZSh0LnZhbHVlLm4sIGludCkpCisgICAgICAgICAgIG9yIChpc2luc3RhbmNlKHQudmFsdWUsIGFzdC5Db25zdGFudCkgYW5kIGlzaW5zdGFuY2UodC52YWx1ZS52YWx1ZSwgaW50KSkpOgogICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCiAgICAgICAgIHNlbGYud3JpdGUoIi4iKQogICAgICAgICBzZWxmLndyaXRlKHQuYXR0cikKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkgYi9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CmluZGV4IDA3M2NjYTAuLjU0YThiYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKKysrIGIvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQpAQCAtOTksOCArOTksOCBAQAogIyBBbGlhcwogZ2V0cGFzc3dkID0gaW52aXNpYmxlX2lucHV0CiAKLV9pbnRlZ2VyUkUgPSByZS5jb21waWxlKCdccyooLT9cZCspXHMqJCcpCi1faW50ZWdlclJhbmdlUkUgPSByZS5jb21waWxlKCdccyooLT9cZCspXHMqLVxzKigtP1xkKylccyokJykKK19pbnRlZ2VyUkUgPSByZS5jb21waWxlKHInXHMqKC0/XGQrKVxzKiQnKQorX2ludGVnZXJSYW5nZVJFID0gcmUuY29tcGlsZShyJ1xzKigtP1xkKylccyotXHMqKC0/XGQrKVxzKiQnKQogCiBkZWYgc3JhbmdlKHMsCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5YmVuY2gvV2l0aC5weSBiL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQppbmRleCA1ZjU5ZThjLi4zMGNkM2MyIDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL1dpdGgucHkKKysrIGIvVG9vbHMvcHliZW5jaC9XaXRoLnB5CkBAIC0xLDQgKzEsMyBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAogZnJvbSBweWJlbmNoIGltcG9ydCBUZXN0CiAKIGNsYXNzIFdpdGhGaW5hbGx5KFRlc3QpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvcHluY2hlL0NvbG9yREIucHkgYi9Ub29scy9weW5jaGUvQ29sb3JEQi5weQppbmRleCA1Y2VkMGU3Li4wMzQ4MTQ4IDEwMDY0NAotLS0gYS9Ub29scy9weW5jaGUvQ29sb3JEQi5weQorKysgYi9Ub29scy9weW5jaGUvQ29sb3JEQi5weQpAQCAtMTM0LDE3ICsxMzQsMTcgQEAKIAwKIGNsYXNzIFJHQkNvbG9yREIoQ29sb3JEQik6CiAgICAgX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgJ1xzKig/UDxyZWQ+XGQrKVxzKyg/UDxncmVlbj5cZCspXHMrKD9QPGJsdWU+XGQrKVxzKyg/UDxuYW1lPi4qKScpCisgICAgICAgIHInXHMqKD9QPHJlZD5cZCspXHMrKD9QPGdyZWVuPlxkKylccysoP1A8Ymx1ZT5cZCspXHMrKD9QPG5hbWU+LiopJykKIAogCiBjbGFzcyBIVE1MNDBEQihDb2xvckRCKToKLSAgICBfcmUgPSByZS5jb21waWxlKCcoP1A8bmFtZT5cUyspXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKKyAgICBfcmUgPSByZS5jb21waWxlKHInKD9QPG5hbWU+XFMrKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCiAKICAgICBkZWYgX2V4dHJhY3RyZ2Ioc2VsZiwgbW8pOgogICAgICAgICByZXR1cm4gcnJnZ2JiX3RvX3RyaXBsZXQobW8uZ3JvdXAoJ2hleHJnYicpKQogCiBjbGFzcyBMaWdodGxpbmtEQihIVE1MNDBEQik6Ci0gICAgX3JlID0gcmUuY29tcGlsZSgnKD9QPG5hbWU+KC4rKSlccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQorICAgIF9yZSA9IHJlLmNvbXBpbGUocicoP1A8bmFtZT4oLispKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCiAKICAgICBkZWYgX2V4dHJhY3RuYW1lKHNlbGYsIG1vKToKICAgICAgICAgcmV0dXJuIG1vLmdyb3VwKCduYW1lJykuc3RyaXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weSBiL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKaW5kZXggZTEwZTQ5YS4uN2NhOTUyNiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQorKysgYi9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CkBAIC02LDcgKzYsNyBAQAogQSBoZWxwZXIgZm9yIGFuYWx5emluZyBQWVRIT05EVU1QUkVGUyBvdXRwdXQuCiAKIFdoZW4gdGhlIFBZVEhPTkRVTVBSRUZTIGVudmFyIGlzIHNldCBpbiBhIGRlYnVnIGJ1aWxkLCBhdCBQeXRob24gc2h1dGRvd24KLXRpbWUgUHlfRmluYWxpemUoKSBwcmludHMgdGhlIGxpc3Qgb2YgYWxsIGxpdmUgb2JqZWN0cyB0d2ljZTogIGZpcnN0IGl0Cit0aW1lIFB5X0ZpbmFsaXplRXgoKSBwcmludHMgdGhlIGxpc3Qgb2YgYWxsIGxpdmUgb2JqZWN0cyB0d2ljZTogIGZpcnN0IGl0CiBwcmludHMgdGhlIHJlcHIoKSBvZiBlYWNoIG9iamVjdCB3aGlsZSB0aGUgaW50ZXJwcmV0ZXIgaXMgc3RpbGwgZnVsbHkgaW50YWN0LgogQWZ0ZXIgY2xlYW5pbmcgdXAgZXZlcnl0aGluZyBpdCBjYW4sIGl0IHByaW50cyBhbGwgcmVtYWluaW5nIGxpdmUgb2JqZWN0cwogYWdhaW4sIGJ1dCB0aGUgc2Vjb25kIHRpbWUganVzdCBwcmludHMgdGhlaXIgYWRkcmVzc2VzLCByZWZjb3VudHMsIGFuZCB0eXBlCkBAIC00MSw3ICs0MSw3IEBACiBvYmplY3RzIHNob3duIGluIHRoZSByZXByOiAgdGhlIHJlcHIgd2FzIGNhcHR1cmVkIGZyb20gdGhlIGZpcnN0IG91dHB1dCBibG9jaywKIGFuZCBzb21lIG9mIHRoZSBjb250YWluZWVzIG1heSBoYXZlIGJlZW4gcmVsZWFzZWQgc2luY2UgdGhlbi4gIEZvciBleGFtcGxlLAogaXQncyBjb21tb24gZm9yIHRoZSBsaW5lIHNob3dpbmcgdGhlIGRpY3Qgb2YgaW50ZXJuZWQgc3RyaW5ncyB0byBkaXNwbGF5Ci1zdHJpbmdzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGF0IHRoZSBlbmQgb2YgUHlfRmluYWxpemU7IHRoaXMgY2FuIGJlIHJlY29nbml6ZWQKK3N0cmluZ3MgdGhhdCBubyBsb25nZXIgZXhpc3QgYXQgdGhlIGVuZCBvZiBQeV9GaW5hbGl6ZUV4OyB0aGlzIGNhbiBiZSByZWNvZ25pemVkCiAoYWxiZWl0IHBhaW5mdWxseSkgYmVjYXVzZSBzdWNoIGNvbnRhaW5lZXMgZG9uJ3QgaGF2ZSBhIGxpbmUgb2YgdGhlaXIgb3duLgogCiBUaGUgb2JqZWN0cyBhcmUgbGlzdGVkIGluIGFsbG9jYXRpb24gb3JkZXIsIHdpdGggbW9zdC1yZWNlbnRseSBhbGxvY2F0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weSBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQppbmRleCA5NzIwYTQzLi45NjE5OWI4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2RpZmYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CkBAIC04LDcgKzgsNyBAQAogCiAiIiIKIAotaW1wb3J0IHN5cywgb3MsIHRpbWUsIGRpZmZsaWIsIGFyZ3BhcnNlCitpbXBvcnQgc3lzLCBvcywgZGlmZmxpYiwgYXJncGFyc2UKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lem9uZQogCiBkZWYgZmlsZV9tdGltZShwYXRoKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5IGIvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKaW5kZXggMjBmMzM4Ni4uMTIxM2E0ZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9maXhkaXYucHkKQEAgLTE3NCw4ICsxNzQsOCBAQAogICAgIHN5cy5zdGRlcnIud3JpdGUoIlVzYWdlOiAlcyBbLW1dIHdhcm5pbmdzXG4iICUgc3lzLmFyZ3ZbMF0pCiAgICAgc3lzLnN0ZGVyci53cml0ZSgiVHJ5IGAlcyAtaCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iICUgc3lzLmFyZ3ZbMF0pCiAKLVBBVFRFUk4gPSAoIl4oLis/KTooXGQrKTogRGVwcmVjYXRpb25XYXJuaW5nOiAiCi0gICAgICAgICAgICJjbGFzc2ljIChpbnR8bG9uZ3xmbG9hdHxjb21wbGV4KSBkaXZpc2lvbiQiKQorUEFUVEVSTiA9IChyIl4oLis/KTooXGQrKTogRGVwcmVjYXRpb25XYXJuaW5nOiAiCisgICAgICAgICAgIHIiY2xhc3NpYyAoaW50fGxvbmd8ZmxvYXR8Y29tcGxleCkgZGl2aXNpb24kIikKIAogZGVmIHJlYWR3YXJuaW5ncyh3YXJuaW5nc2ZpbGUpOgogICAgIHByb2cgPSByZS5jb21waWxlKFBBVFRFUk4pCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5IGIvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQppbmRleCBjNjJmOWE1Li45NDhiNTZmIDEwMDY0NAotLS0gYS9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKQEAgLTEsNyArMSw1IEBACiAjIFRoaXMgc2NyaXB0IGdlbmVyYXRlcyB0aGUgb3Bjb2RlLmggaGVhZGVyIGZpbGUuCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IHN5cwogaGVhZGVyID0gIiIiLyogQXV0by1nZW5lcmF0ZWQgYnkgVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSAqLwogI2lmbmRlZiBQeV9PUENPREVfSApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9oMnB5LnB5IGIvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CmluZGV4IDA5NjdmYzIuLjQzNjNjMGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaDJweS5weQorKysgYi9Ub29scy9zY3JpcHRzL2gycHkucHkKQEAgLTIzLDEzICsyMywxMyBAQAogCiBpbXBvcnQgc3lzLCByZSwgZ2V0b3B0LCBvcwogCi1wX2RlZmluZSA9IHJlLmNvbXBpbGUoJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rKFthLXpBLVowLTlfXSspW1x0IF0rJykKK3BfZGVmaW5lID0gcmUuY29tcGlsZShyJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rKFthLXpBLVowLTlfXSspW1x0IF0rJykKIAogcF9tYWNybyA9IHJlLmNvbXBpbGUoCi0gICdeW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKycKLSAgJyhbYS16QS1aMC05X10rKVwoKFtfYS16QS1aXVtfYS16QS1aMC05XSopXClbXHQgXSsnKQorICByJ15bXHQgXSojW1x0IF0qZGVmaW5lW1x0IF0rJworICByJyhbYS16QS1aMC05X10rKVwoKFtfYS16QS1aXVtfYS16QS1aMC05XSopXClbXHQgXSsnKQogCi1wX2luY2x1ZGUgPSByZS5jb21waWxlKCdeW1x0IF0qI1tcdCBdKmluY2x1ZGVbXHQgXSs8KFtePlxuXSspPicpCitwX2luY2x1ZGUgPSByZS5jb21waWxlKHInXltcdCBdKiNbXHQgXSppbmNsdWRlW1x0IF0rPChbXj5cbl0rKT4nKQogCiBwX2NvbW1lbnQgPSByZS5jb21waWxlKHInL1wqKFteKl0rfFwqK1teL10pKihcKisvKT8nKQogcF9jcHBfY29tbWVudCA9IHJlLmNvbXBpbGUoJy8vLionKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQppbmRleCA2NmFkODY4Li45MjcyZmVlIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQorKysgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQpAQCAtMTQ3LDE0ICsxNDcsMTQgQEAKICMjIyMgTGFUZVggT3V0cHV0ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBkZWZhdWx0X2xhdGV4X2NvbW1hbmRzID0gewotICAgICdjb21tZW50JzogJ3tcY29sb3J7cmVkfSMxfScsCi0gICAgJ3N0cmluZyc6ICd7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfScsCi0gICAgJ2RvY3N0cmluZyc6ICd7XGVtcGh7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfX0nLAotICAgICdrZXl3b3JkJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCi0gICAgJ2J1aWx0aW4nOiAne1xjb2xvcntwdXJwbGV9IzF9JywKLSAgICAnZGVmaW5pdGlvbic6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAotICAgICdkZWZuYW1lJzogJ3tcY29sb3J7Ymx1ZX0jMX0nLAotICAgICdvcGVyYXRvcic6ICd7XGNvbG9ye2Jyb3dufSMxfScsCisgICAgJ2NvbW1lbnQnOiByJ3tcY29sb3J7cmVkfSMxfScsCisgICAgJ3N0cmluZyc6IHIne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAorICAgICdkb2NzdHJpbmcnOiByJ3tcZW1waHtcY29sb3J7Rm9yZXN0R3JlZW59IzF9fScsCisgICAgJ2tleXdvcmQnOiByJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2J1aWx0aW4nOiByJ3tcY29sb3J7cHVycGxlfSMxfScsCisgICAgJ2RlZmluaXRpb24nOiByJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2RlZm5hbWUnOiByJ3tcY29sb3J7Ymx1ZX0jMX0nLAorICAgICdvcGVyYXRvcic6IHIne1xjb2xvcnticm93bn0jMX0nLAogfQogCiBkZWZhdWx0X2xhdGV4X2RvY3VtZW50ID0gcicnJwpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9pZGxlMyBiL1Rvb2xzL3NjcmlwdHMvaWRsZTMKaW5kZXggOGVlOTJjMi4uZDczMzJiYyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9pZGxlMworKysgYi9Ub29scy9zY3JpcHRzL2lkbGUzCkBAIC0xLDUgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkgYi9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQppbmRleCBhZWI0NTFlLi42MzVlNTQ4IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQorKysgYi9Ub29scy9zY3JpcHRzL21haWxlcmRhZW1vbi5weQpAQCAtODgsNyArODgsNyBAQAogIyBubyBtb3JlIGV4cHJlc3Npb25zIGFyZSBzZWFyY2hlZCBmb3IuICBTbywgb3JkZXIgaXMgaW1wb3J0YW50LgogZW1wYXJzZV9saXN0X3JlYXNvbiA9IFsKICAgICByJ141XGR7Mn0gPD5cLlwuXC4gKD9QPHJlYXNvbj4uKiknLAotICAgICc8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCisgICAgcic8PlwuXC5cLiAoP1A8cmVhc29uPi4qKScsCiAgICAgcmUuY29tcGlsZShyJ148PDwgNVxkezJ9ICg/UDxyZWFzb24+LiopJywgcmUuTVVMVElMSU5FKSwKICAgICByZS5jb21waWxlKCc9PT09PSBzdGRlcnIgd2FzID09PT09XG5ybWFpbDogKD9QPHJlYXNvbj4uKiknKSwKICAgICByZS5jb21waWxlKCdeRGlhZ25vc3RpYy1Db2RlOiAoP1A8cmVhc29uPi4qKScsIHJlLk1VTFRJTElORSksCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL25tMmRlZi5weSBiL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CmluZGV4IDhmMDc1NTkuLjgzYmJjZDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvbm0yZGVmLnB5CkBAIC0zNiw4ICszNiw4IEBACiAiIiIKIGltcG9ydCBvcywgc3lzCiAKLVBZVEhPTkxJQiA9ICdsaWJweXRob24nK3N5cy52ZXJzaW9uWzozXSsnLmEnCi1QQ19QWVRIT05MSUIgPSAnUHl0aG9uJytzeXMudmVyc2lvblswXStzeXMudmVyc2lvblsyXSsnLmRsbCcKK1BZVEhPTkxJQiA9ICdsaWJweXRob24lZC4lZC5hJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCitQQ19QWVRIT05MSUIgPSAnUHl0aG9uJWQlZC5kbGwnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIE5NID0gJ25tIC1wIC1nICVzJyAgICAgICAgICAgICAgICAgICAgICAjIEZvciBMaW51eCwgdXNlICJubSAtZyAlcyIKIAogZGVmIHN5bWJvbHMobGliPVBZVEhPTkxJQix0eXBlcz0oJ1QnLCdDJywnRCcpKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weSBiL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQppbmRleCBhMDQyZDFjLi5jNjg2YjAyIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CkBAIC0xNCw3ICsxNCw3IEBACiAiIiIKIGltcG9ydCByZSxzeXMKIAotZW50aXR5UkUgPSByZS5jb21waWxlKCc8IUVOVElUWSArKFx3KykgK0NEQVRBICsiKFteIl0rKSIgKy0tICsoKD86LnxcbikrPykgKi0tPicpCitlbnRpdHlSRSA9IHJlLmNvbXBpbGUocic8IUVOVElUWSArKFx3KykgK0NEQVRBICsiKFteIl0rKSIgKy0tICsoKD86LnxcbikrPykgKi0tPicpCiAKIGRlZiBwYXJzZSh0ZXh0LHBvcz0wLGVuZHBvcz1Ob25lKToKIApAQCAtMzksNyArMzksNyBAQAogICAgICAgICBpZiBjaGFyY29kZVs6Ml0gPT0gJyYjJzoKICAgICAgICAgICAgIGNvZGUgPSBpbnQoY2hhcmNvZGVbMjotMV0pCiAgICAgICAgICAgICBpZiBjb2RlIDwgMjU2OgotICAgICAgICAgICAgICAgIGNoYXJjb2RlID0gIidcJW8nIiAlIGNvZGUKKyAgICAgICAgICAgICAgICBjaGFyY29kZSA9IHIiJ1wlbyciICUgY29kZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjaGFyY29kZSA9IHJlcHIoY2hhcmNvZGUpCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkgYi9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKaW5kZXggMjI0MzJkMS4uNTYyYmJjNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQpAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICAgICAgaWYgZml4KGFyZyk6IGJhZCA9IDEKICAgICBzeXMuZXhpdChiYWQpCiAKLWlzcHl0aG9ucHJvZyA9IHJlLmNvbXBpbGUoJ15bYS16QS1aMC05X10rXC5weSQnKQoraXNweXRob25wcm9nID0gcmUuY29tcGlsZShyJ15bYS16QS1aMC05X10rXC5weSQnKQogZGVmIGlzcHl0aG9uKG5hbWUpOgogICAgIHJldHVybiBib29sKGlzcHl0aG9ucHJvZy5tYXRjaChuYW1lKSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wdGFncy5weSBiL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKaW5kZXggY2E2NDNiMy4uMzk2Y2JkMCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wdGFncy5weQorKysgYi9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgICAgIGZvciBzIGluIHRhZ3M6IGZwLndyaXRlKHMpCiAKIAotZXhwciA9ICdeWyBcdF0qKGRlZnxjbGFzcylbIFx0XSsoW2EtekEtWjAtOV9dKylbIFx0XSpbOlwoXScKK2V4cHIgPSByJ15bIFx0XSooZGVmfGNsYXNzKVsgXHRdKyhbYS16QS1aMC05X10rKVsgXHRdKls6XChdJwogbWF0Y2hlciA9IHJlLmNvbXBpbGUoZXhwcikKIAogZGVmIHRyZWF0X2ZpbGUoZmlsZW5hbWUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9weXZlbnYgYi9Ub29scy9zY3JpcHRzL3B5dmVudgppbmRleCA5NzhkNjkxLi4xZmI0MmM2IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3B5dmVudgorKysgYi9Ub29scy9zY3JpcHRzL3B5dmVudgpAQCAtMSw2ICsxLDEyIEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCBzeXMKKyAgICBpbXBvcnQgcGF0aGxpYgorCisgICAgZXhlY3V0YWJsZSA9IHBhdGhsaWIuUGF0aChzeXMuZXhlY3V0YWJsZSBvciAncHl0aG9uMycpLm5hbWUKKyAgICBwcmludCgnV0FSTklORzogdGhlIHB5ZW52IHNjcmlwdCBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiAnCisgICAgICAgICAgZidge2V4ZWN1dGFibGV9IC1tIHZlbnZgJywgZmlsZT1zeXMuc3RkZXJyKQorCiAgICAgcmMgPSAxCiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgdmVudgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkgYi9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQppbmRleCA4YWJkZDAxLi42YzcwZGE5IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQorKysgYi9Ub29scy9zY3JpcHRzL3N2bmVvbC5weQpAQCAtMSw2ICsxLDYgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKLSIiIgorciIiIgogU1ZOIGhlbHBlciBzY3JpcHQuCiAKIFRyeSB0byBzZXQgdGhlIHN2bjplb2wtc3R5bGUgcHJvcGVydHkgdG8gIm5hdGl2ZSIgb24gZXZlcnkgLnB5LCAudHh0LCAuYyBhbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5IGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKaW5kZXggOTk4MzUyOC4uOWMxZTlmZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKKysrIGIvVG9vbHMvc2NyaXB0cy90ZXhpMmh0bWwucHkKQEAgLTc4LDExICs3OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJ1bm5pbmcgdGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWVudSBpdGVtIChZdWNrISkKLW1pcHJvZyA9IHJlLmNvbXBpbGUoJ15cKiAoW146XSopOig6fFsgXHRdKihbXlx0LFxuLl0rKShbXiBcdFxuXSopKVsgXHRcbl0qJykKLSMgICAgICAgICAgICAgICAgICAgMCAgICAxICAgICAxIDIgICAgICAgIDMgICAgICAgICAgMzQgICAgICAgICA0MiAgICAgICAgMAotIyAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLSAgICAgICAgICAgIC0tLS0tLS0tLS0gIC0tLS0tLS0tLQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittaXByb2cgPSByZS5jb21waWxlKHInXlwqIChbXjpdKik6KDp8WyBcdF0qKFteXHQsXG4uXSspKFteIFx0XG5dKikpWyBcdFxuXSonKQorIyAgICAgICAgICAgICAgICAgICAgMCAgICAxICAgICAxIDIgICAgICAgIDMgICAgICAgICAgMzQgICAgICAgICA0MiAgICAgICAgMAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gICAgICAgICAgICAtLS0tLS0tLS0tICAtLS0tLS0tLS0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAogCmRpZmYgLS1naXQgYS9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weSBiL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CmluZGV4IGRkNTdkY2YuLjMwZDVmY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CisrKyBiL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5CkBAIC0xMDUsMTEgKzEwNSwxMSBAQAogCiAgICAgZGVmIF9zdWJwcm9jZXNzX2NhbGwoc2VsZiwgY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5ERVZOVUxMLCBlbnY9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6Ci0gICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAne30nIi5mb3JtYXQoIiAiLmpvaW4oY21kKSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAnJXMnIiwgIiAiLmpvaW4oY21kKSkKICAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQsIHN0ZG91dD1zdGRvdXQsIGVudj1lbnYsICoqa3dhcmdzKQogCiAgICAgZGVmIF9zdWJwcm9jZXNzX291dHB1dChzZWxmLCBjbWQsIGVudj1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAne30nIi5mb3JtYXQoIiAiLmpvaW4oY21kKSkpCisgICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAnJXMnIiwgIiAiLmpvaW4oY21kKSkKICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBlbnY9ZW52KQogICAgICAgICByZXR1cm4gb3V0LnN0cmlwKCkuZGVjb2RlKCJ1dGYtOCIpCiAKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuaGFzX3NyYzoKICAgICAgICAgICAgICAgICBzZWxmLl9kb3dubG9hZF9vcGVuc3NsKCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJBbHJlYWR5IGhhcyBzcmMge30iLmZvcm1hdChzZWxmLnNyY19maWxlKSkKKyAgICAgICAgICAgICAgICBsb2cuZGVidWcoIkFscmVhZHkgaGFzIHNyYyAlcyIsIHNlbGYuc3JjX2ZpbGUpCiAgICAgICAgICAgICBzZWxmLl91bnBhY2tfb3BlbnNzbCgpCiAgICAgICAgICAgICBzZWxmLl9idWlsZF9vcGVuc3NsKCkKICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfb3BlbnNzbCgpCmRpZmYgLS1naXQgYS9Ub29scy90ei96ZHVtcC5weSBiL1Rvb2xzL3R6L3pkdW1wLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NGI0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy90ei96ZHVtcC5weQpAQCAtMCwwICsxLDgxIEBACitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCBzdHJ1Y3QKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRlbHRhCisKK3R0aW5mbyA9IG5hbWVkdHVwbGUoJ3R0aW5mbycsIFsndHRfZ210b2ZmJywgJ3R0X2lzZHN0JywgJ3R0X2FiYnJpbmQnXSkKKworY2xhc3MgVFpJbmZvOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFuc2l0aW9ucywgdHlwZV9pbmRpY2VzLCB0dGlzLCBhYmJycyk6CisgICAgICAgIHNlbGYudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucworICAgICAgICBzZWxmLnR5cGVfaW5kaWNlcyA9IHR5cGVfaW5kaWNlcworICAgICAgICBzZWxmLnR0aXMgPSB0dGlzCisgICAgICAgIHNlbGYuYWJicnMgPSBhYmJycworCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21maWxlKGNscywgZmlsZW9iaik6CisgICAgICAgIGlmIGZpbGVvYmoucmVhZCg0KS5kZWNvZGUoKSAhPSAiVFppZiI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSB6b25laW5mbyBmaWxlIikKKyAgICAgICAgZmlsZW9iai5zZWVrKDIwKQorICAgICAgICBoZWFkZXIgPSBmaWxlb2JqLnJlYWQoMjQpCisgICAgICAgIHR6aCA9ICh0emhfdHRpc2dtdGNudCwgdHpoX3R0aXNzdGRjbnQsIHR6aF9sZWFwY250LAorICAgICAgICAgICAgICAgdHpoX3RpbWVjbnQsIHR6aF90eXBlY250LCB0emhfY2hhcmNudCkgPSBzdHJ1Y3QudW5wYWNrKCI+NmwiLCBoZWFkZXIpCisgICAgICAgIHRyYW5zaXRpb25zID0gYXJyYXkoJ2knKQorICAgICAgICB0cmFuc2l0aW9ucy5mcm9tZmlsZShmaWxlb2JqLCB0emhfdGltZWNudCkKKyAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciAhPSAnYmlnJzoKKyAgICAgICAgICAgIHRyYW5zaXRpb25zLmJ5dGVzd2FwKCkKKworICAgICAgICB0eXBlX2luZGljZXMgPSBhcnJheSgnQicpCisgICAgICAgIHR5cGVfaW5kaWNlcy5mcm9tZmlsZShmaWxlb2JqLCB0emhfdGltZWNudCkKKworICAgICAgICB0dGlzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UodHpoX3R5cGVjbnQpOgorICAgICAgICAgICAgdHRpcy5hcHBlbmQodHRpbmZvLl9tYWtlKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmaWxlb2JqLnJlYWQoNikpKSkKKworICAgICAgICBhYmJycyA9IGZpbGVvYmoucmVhZCh0emhfY2hhcmNudCkKKworICAgICAgICBzZWxmID0gY2xzKHRyYW5zaXRpb25zLCB0eXBlX2luZGljZXMsIHR0aXMsIGFiYnJzKQorICAgICAgICBzZWxmLnR6aCA9IHR6aAorCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgZHVtcChzZWxmLCBzdHJlYW0sIHN0YXJ0PU5vbmUsIGVuZD1Ob25lKToKKyAgICAgICAgZm9yIGosICh0cmFucywgaSkgaW4gZW51bWVyYXRlKHppcChzZWxmLnRyYW5zaXRpb25zLCBzZWxmLnR5cGVfaW5kaWNlcykpOgorICAgICAgICAgICAgdXRjID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0cmFucykKKyAgICAgICAgICAgIHR0aSA9IHNlbGYudHRpc1tpXQorICAgICAgICAgICAgbG10ID0gZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0cmFucyArIHR0aS50dF9nbXRvZmYpCisgICAgICAgICAgICBhYmJyaW5kID0gdHRpLnR0X2FiYnJpbmQKKyAgICAgICAgICAgIGFiYnIgPSBzZWxmLmFiYnJzW2FiYnJpbmQ6c2VsZi5hYmJycy5maW5kKDAsIGFiYnJpbmQpXS5kZWNvZGUoKQorICAgICAgICAgICAgaWYgaiA+IDA6CisgICAgICAgICAgICAgICAgcHJldl90dGkgPSBzZWxmLnR0aXNbc2VsZi50eXBlX2luZGljZXNbaiAtIDFdXQorICAgICAgICAgICAgICAgIHNoaWZ0ID0gIiAlK2ciICUgKCh0dGkudHRfZ210b2ZmIC0gcHJldl90dGkudHRfZ210b2ZmKSAvIDM2MDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNoaWZ0ID0gJycKKyAgICAgICAgICAgIHByaW50KCIlcyBVVEMgPSAlcyAlLTVzIGlzZHN0PSVkIiAlICh1dGMsIGxtdCwgYWJiciwgdHRpWzFdKSArIHNoaWZ0LCBmaWxlPXN0cmVhbSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB6b25lbGlzdChjbHMsIHpvbmVkaXI9Jy91c3Ivc2hhcmUvem9uZWluZm8nKToKKyAgICAgICAgem9uZXMgPSBbXQorICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2Fsayh6b25lZGlyKToKKyAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocCwgJ3JiJykgYXMgbzoKKyAgICAgICAgICAgICAgICAgICAgbWFnaWMgPSAgby5yZWFkKDQpCisgICAgICAgICAgICAgICAgaWYgbWFnaWMgPT0gYidUWmlmJzoKKyAgICAgICAgICAgICAgICAgICAgem9uZXMuYXBwZW5kKHBbbGVuKHpvbmVkaXIpICsgMTpdKQorICAgICAgICByZXR1cm4gem9uZXMKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpZiBsZW4oc3lzLmFyZ3YpIDwgMjoKKyAgICAgICAgem9uZXMgPSBUWkluZm8uem9uZWxpc3QoKQorICAgICAgICBmb3IgeiBpbiB6b25lczoKKyAgICAgICAgICAgIHByaW50KHopCisgICAgICAgIHN5cy5leGl0KCkKKyAgICBmaWxlcGF0aCA9IHN5cy5hcmd2WzFdCisgICAgaWYgbm90IGZpbGVwYXRoLnN0YXJ0c3dpdGgoJy8nKToKKyAgICAgICAgZmlsZXBhdGggPSBvcy5wYXRoLmpvaW4oJy91c3Ivc2hhcmUvem9uZWluZm8nLCBmaWxlcGF0aCkKKyAgICB3aXRoIG9wZW4oZmlsZXBhdGgsICdyYicpIGFzIGZpbGVvYmo6CisgICAgICAgIHR6aSA9IFRaSW5mby5mcm9tZmlsZShmaWxlb2JqKQorICAgIHR6aS5kdW1wKHN5cy5zdGRvdXQpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5IGIvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQppbmRleCA0YzIxNDY5Li4zMWYwMTEyIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKQEAgLTM3LDExICszNywxMSBAQAogIyBQbGFjZWhvbGRlciBmb3IgYSBtaXNzaW5nIGNvZGUgcG9pbnQKIE1JU1NJTkdfQ09ERSA9IC0xCiAKLW1hcFJFID0gcmUuY29tcGlsZSgnKCg/OjB4WzAtOWEtZkEtRl0rXCs/KSspJwotICAgICAgICAgICAgICAgICAgICdccysnCi0gICAgICAgICAgICAgICAgICAgJygoPzooPzoweFswLTlhLWZBLVpdK3w8W0EtWmEtel0rPilcKz8pKiknCi0gICAgICAgICAgICAgICAgICAgJ1xzKicKLSAgICAgICAgICAgICAgICAgICAnKCMuKyk/JykKK21hcFJFID0gcmUuY29tcGlsZShyJygoPzoweFswLTlhLWZBLUZdK1wrPykrKScKKyAgICAgICAgICAgICAgICAgICByJ1xzKycKKyAgICAgICAgICAgICAgICAgICByJygoPzooPzoweFswLTlhLWZBLVpdK3w8W0EtWmEtel0rPilcKz8pKiknCisgICAgICAgICAgICAgICAgICAgcidccyonCisgICAgICAgICAgICAgICAgICAgcicoIy4rKT8nKQogCiBkZWYgcGFyc2Vjb2Rlcyhjb2RlcywgbGVuPWxlbiwgcmFuZ2U9cmFuZ2UpOgogCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weSBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CmluZGV4IDcxM2UxNzUuLjVkODAxNGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CisrKyBiL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5CkBAIC00Miw3ICs0Miw3IEBACiAjICAgKiBEb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QsIGFuZAogIyAgICogRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CiAjICAgKiBEb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0ICh0d28gb2NjdXJyZW5jZXMpCi1VTklEQVRBX1ZFUlNJT04gPSAiOC4wLjAiCitVTklEQVRBX1ZFUlNJT04gPSAiOS4wLjAiCiBVTklDT0RFX0RBVEEgPSAiVW5pY29kZURhdGElcy50eHQiCiBDT01QT1NJVElPTl9FWENMVVNJT05TID0gIkNvbXBvc2l0aW9uRXhjbHVzaW9ucyVzLnR4dCIKIEVBU1RBU0lBTl9XSURUSCA9ICJFYXN0QXNpYW5XaWR0aCVzLnR4dCIKQEAgLTc5Niw2ICs3OTYsNyBAQAogICAgIGNhdGVnb3J5X2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICBkZWNpbWFsX2NoYW5nZXMgPSBbMHhGRl0qMHgxMTAwMDAKICAgICBtaXJyb3JlZF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCisgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCiAgICAgIyBJbiBudW1lcmljIGRhdGEsIDAgbWVhbnMgIm5vIGNoYW5nZSIsCiAgICAgIyAtMSBtZWFucyAiZGlkIG5vdCBoYXZlIGEgbnVtZXJpYyB2YWx1ZQogICAgIG51bWVyaWNfY2hhbmdlcyA9IFswXSAqIDB4MTEwMDAwCkBAIC04NjIsNiArODYzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE0OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UgdG8gc2ltcGxlIHRpdGxlY2FzZSBtYXBwaW5nOyBpZ25vcmUKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDE1OgorICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGFuZ2UgdG8gZWFzdCBhc2lhbiB3aWR0aAorICAgICAgICAgICAgICAgICAgICAgICAgZWFzdF9hc2lhbl93aWR0aF9jaGFuZ2VzW2ldID0gRUFTVEFTSUFOV0lEVEhfTkFNRVMuaW5kZXgodmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAxNjoKICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVyaXZlZCBwcm9wZXJ0eSBjaGFuZ2VzOyBub3QgeWV0CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCkBAIC04NzMsOCArODc3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzIERpZmZlcmVuY2UoRXhjZXB0aW9uKTpwYXNzCiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBEaWZmZXJlbmNlKGhleChpKSwgaywgb2xkLnRhYmxlW2ldLCBuZXcudGFibGVbaV0pCiAgICAgbmV3LmNoYW5nZWQuYXBwZW5kKCh2ZXJzaW9uLCBsaXN0KHppcChiaWRpcl9jaGFuZ2VzLCBjYXRlZ29yeV9jaGFuZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfY2hhbmdlcywgbWlycm9yZWRfY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX2NoYW5nZXMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2ltYWxfY2hhbmdlcywgbWlycm9yZWRfY2hhbmdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWVyaWNfY2hhbmdlcykpLAogICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXphdGlvbl9jaGFuZ2VzKSkKIAogZGVmIG9wZW5fZGF0YSh0ZW1wbGF0ZSwgdmVyc2lvbik6CmRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRleCAyYTc0NWU1Li45YTljYzU1IDEwMDY0NAotLS0gYS9hY2xvY2FsLm00CisrKyBiL2FjbG9jYWwubTQKQEAgLTEzLDcgKzEzLDcgQEAKIAogbTRfaWZuZGVmKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFttNF9kZWZ1bihbX0FNX0NPTkZJR19NQUNST19ESVJTXSwgW10pbTRfZGVmdW4oW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW19BTV9DT05GSUdfTUFDUk9fRElSUygkQCldKV0pCiBkbmwgcGtnLm00IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgIC0qLSBBdXRvY29uZiAtKi0KLWRubCBzZXJpYWwgMTEgKHBrZy1jb25maWctMC4yOS4xKQorZG5sIHNlcmlhbCAxMSAocGtnLWNvbmZpZy0wLjI5KQogZG5sCiBkbmwgQ29weXJpZ2h0IMKpIDIwMDQgU2NvdHQgSmFtZXMgUmVtbmFudCA8c2NvdHRAbmV0c3BsaXQuY29tPi4KIGRubCBDb3B5cmlnaHQgwqkgMjAxMi0yMDE1IERhbiBOaWNob2xzb24gPGRibi5saXN0c0BnbWFpbC5jb20+CkBAIC01NSw3ICs1NSw3IEBACiBkbmwgU2VlIHRoZSAiU2luY2UiIGNvbW1lbnQgZm9yIGVhY2ggbWFjcm8geW91IHVzZSB0byBzZWUgd2hhdCB2ZXJzaW9uCiBkbmwgb2YgdGhlIG1hY3JvcyB5b3UgcmVxdWlyZS4KIG00X2RlZnVuKFtQS0dfUFJFUkVRXSwKLVttNF9kZWZpbmUoW1BLR19NQUNST1NfVkVSU0lPTl0sIFswLjI5LjFdKQorW200X2RlZmluZShbUEtHX01BQ1JPU19WRVJTSU9OXSwgWzAuMjldKQogbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKFBLR19NQUNST1NfVkVSU0lPTiwgWyQxXSksIC0xLAogICAgIFttNF9mYXRhbChbcGtnLm00IHZlcnNpb24gJDEgb3IgaGlnaGVyIGlzIHJlcXVpcmVkIGJ1dCBdUEtHX01BQ1JPU19WRVJTSU9OWyBmb3VuZF0pXSkKIF0pZG5sIFBLR19QUkVSRVEKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCAxOWZjYmQxLi42NGI3NWM5IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC0xLDYgKzEsNiBAQAogIyEgL2Jpbi9zaAogIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgotIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjUuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OSBmb3IgcHl0aG9uIDMuNi4KICMKICMgUmVwb3J0IGJ1Z3MgdG8gPGh0dHBzOi8vYnVncy5weXRob24ub3JnLz4uCiAjCkBAIC01ODAsOCArNTgwLDggQEAKICMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgogUEFDS0FHRV9OQU1FPSdweXRob24nCiBQQUNLQUdFX1RBUk5BTUU9J3B5dGhvbicKLVBBQ0tBR0VfVkVSU0lPTj0nMy41JwotUEFDS0FHRV9TVFJJTkc9J3B5dGhvbiAzLjUnCitQQUNLQUdFX1ZFUlNJT049JzMuNicKK1BBQ0tBR0VfU1RSSU5HPSdweXRob24gMy42JwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHBzOi8vYnVncy5weXRob24ub3JnLycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY0MiwxMSArNjQyLDEzIEBACiBNQUNIREVQX09CSlMKIERZTkxPQURGSUxFCiBETElOQ0xESVIKK0RUUkFDRV9PQkpTCitEVFJBQ0VfSEVBREVSUworREZMQUdTCitEVFJBQ0UKIFRIUkVBRE9CSgogTERMQVNUCiBVU0VfVEhSRUFEX01PRFVMRQotU0lHTkFMX09CSlMKLVVTRV9TSUdOQUxfTU9EVUxFCiBUQ0xUS19MSUJTCiBUQ0xUS19JTkNMVURFUwogTElCRkZJX0lOQ0xVREVESVIKQEAgLTcwOCwxMiArNzEwLDEzIEBACiBCVUlMREVYRUVYVAogRUdSRVAKIE5PX0FTX05FRURFRAorTVVMVElBUkNIX0NQUEZMQUdTCiBQTEFURk9STV9UUklQTEVUCi1QTEFURElSCiBNVUxUSUFSQ0gKIGFjX2N0X0NYWAogTUFJTkNDCiBDWFgKK1NFRAogR1JFUAogQ1BQCiBPQkpFWFQKQEAgLTc4MSw3ICs3ODQsNiBAQAogZG9jZGlyCiBvbGRpbmNsdWRlZGlyCiBpbmNsdWRlZGlyCi1ydW5zdGF0ZWRpcgogbG9jYWxzdGF0ZWRpcgogc2hhcmVkc3RhdGVkaXIKIHN5c2NvbmZkaXIKQEAgLTgyNywxNCArODI5LDEzIEBACiB3aXRoX3RjbHRrX2luY2x1ZGVzCiB3aXRoX3RjbHRrX2xpYnMKIHdpdGhfZGJtbGlib3JkZXIKLXdpdGhfc2lnbmFsX21vZHVsZQogd2l0aF90aHJlYWRzCiB3aXRoX3RocmVhZAogZW5hYmxlX2lwdjYKIHdpdGhfZG9jX3N0cmluZ3MKLXdpdGhfdHNjCiB3aXRoX3B5bWFsbG9jCiB3aXRoX3ZhbGdyaW5kCit3aXRoX2R0cmFjZQogd2l0aF9mcGVjdGwKIHdpdGhfbGlibQogd2l0aF9saWJjCkBAIC04OTMsNyArODk0LDYgQEAKIHN5c2NvbmZkaXI9JyR7cHJlZml4fS9ldGMnCiBzaGFyZWRzdGF0ZWRpcj0nJHtwcmVmaXh9L2NvbScKIGxvY2Fsc3RhdGVkaXI9JyR7cHJlZml4fS92YXInCi1ydW5zdGF0ZWRpcj0nJHtsb2NhbHN0YXRlZGlyfS9ydW4nCiBpbmNsdWRlZGlyPScke3ByZWZpeH0vaW5jbHVkZScKIG9sZGluY2x1ZGVkaXI9Jy91c3IvaW5jbHVkZScKIGRvY2Rpcj0nJHtkYXRhcm9vdGRpcn0vZG9jLyR7UEFDS0FHRV9UQVJOQU1FfScKQEAgLTExNDYsMTUgKzExNDYsNiBAQAogICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKICAgICBzaWxlbnQ9eWVzIDs7CiAKLSAgLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpciB8IC0tcnVuc3RhdGVkaSB8IC0tcnVuc3RhdGVkIFwKLSAgfCAtLXJ1bnN0YXRlIHwgLS1ydW5zdGF0IHwgLS1ydW5zdGEgfCAtLXJ1bnN0IHwgLS1ydW5zIFwKLSAgfCAtLXJ1biB8IC0tcnUgfCAtLXIpCi0gICAgYWNfcHJldj1ydW5zdGF0ZWRpciA7OwotICAtcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaT0qIHwgLS1ydW5zdGF0ZWQ9KiBcCi0gIHwgLS1ydW5zdGF0ZT0qIHwgLS1ydW5zdGF0PSogfCAtLXJ1bnN0YT0qIHwgLS1ydW5zdD0qIHwgLS1ydW5zPSogXAotICB8IC0tcnVuPSogfCAtLXJ1PSogfCAtLXI9KikKLSAgICBydW5zdGF0ZWRpcj0kYWNfb3B0YXJnIDs7Ci0KICAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCiAgICAgYWNfcHJldj1zYmluZGlyIDs7CiAgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCkBAIC0xMjkyLDcgKzEyODMsNyBAQAogZm9yIGFjX3ZhciBpbglleGVjX3ByZWZpeCBwcmVmaXggYmluZGlyIHNiaW5kaXIgbGliZXhlY2RpciBkYXRhcm9vdGRpciBcCiAJCWRhdGFkaXIgc3lzY29uZmRpciBzaGFyZWRzdGF0ZWRpciBsb2NhbHN0YXRlZGlyIGluY2x1ZGVkaXIgXAogCQlvbGRpbmNsdWRlZGlyIGRvY2RpciBpbmZvZGlyIGh0bWxkaXIgZHZpZGlyIHBkZmRpciBwc2RpciBcCi0JCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyIHJ1bnN0YXRlZGlyCisJCWxpYmRpciBsb2NhbGVkaXIgbWFuZGlyCiBkbwogICBldmFsIGFjX3ZhbD1cJCRhY192YXIKICAgIyBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcy4KQEAgLTE0MDUsNyArMTM5Niw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy42IHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KIAogVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCiAKQEAgLTE0NDUsNyArMTQzNiw2IEBACiAgIC0tc3lzY29uZmRpcj1ESVIgICAgICAgIHJlYWQtb25seSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvZXRjXQogICAtLXNoYXJlZHN0YXRlZGlyPURJUiAgICBtb2RpZmlhYmxlIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBkYXRhIFtQUkVGSVgvY29tXQogICAtLWxvY2Fsc3RhdGVkaXI9RElSICAgICBtb2RpZmlhYmxlIHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC92YXJdCi0gIC0tcnVuc3RhdGVkaXI9RElSICAgICAgIG1vZGlmaWFibGUgcGVyLXByb2Nlc3MgZGF0YSBbTE9DQUxTVEFURURJUi9ydW5dCiAgIC0tbGliZGlyPURJUiAgICAgICAgICAgIG9iamVjdCBjb2RlIGxpYnJhcmllcyBbRVBSRUZJWC9saWJdCiAgIC0taW5jbHVkZWRpcj1ESVIgICAgICAgIEMgaGVhZGVyIGZpbGVzIFtQUkVGSVgvaW5jbHVkZV0KICAgLS1vbGRpbmNsdWRlZGlyPURJUiAgICAgQyBoZWFkZXIgZmlsZXMgZm9yIG5vbi1nY2MgWy91c3IvaW5jbHVkZV0KQEAgLTE0NzIsNyArMTQ2Miw3IEBACiAKIGlmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCiAgIGNhc2UgJGFjX2luaXRfaGVscCBpbgotICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuNToiOzsKKyAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjY6Ijs7CiAgICBlc2FjCiAgIGNhdCA8PFxfQUNFT0YKIApAQCAtMTUwOSw4ICsxNDk5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIKICAgLS13aXRoLXN1ZmZpeD0uZXhlICAgICAgc2V0IGV4ZWN1dGFibGUgc3VmZml4CiAgIC0td2l0aC1weWRlYnVnICAgICAgICAgIGJ1aWxkIHdpdGggUHlfREVCVUcgZGVmaW5lZAotICAtLXdpdGgtb3B0aW1pemF0aW9ucyAgICBFbmFibGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgKFBHTywgbWF5YmUgTFRPLAotICAgICAgICAgICAgICAgICAgICAgICAgICBldGMpLiBEaXNhYmxlZCBieSBkZWZhdWx0LgorICAtLXdpdGgtb3B0aW1pemF0aW9ucyAgICBFbmFibGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgKFBHTywgZXRjKS4gRGlzYWJsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgZGVmYXVsdC4KICAgLS13aXRoLWx0byAgICAgICAgICAgICAgRW5hYmxlIExpbmsgVGltZSBPcHRpbWl6YXRpb24gaW4gUEdPIGJ1aWxkcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQgYnkgZGVmYXVsdC4KICAgLS13aXRoLWhhc2gtYWxnb3JpdGhtPVtmbnZ8c2lwaGFzaDI0XQpAQCAtMTUzMSwxNSArMTUyMSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlciB0byBjaGVjayBkYiBiYWNrZW5kcyBmb3IgZGJtLiBWYWxpZCB2YWx1ZSBpcyBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uIHNlcGFyYXRlZCBzdHJpbmcgd2l0aCB0aGUgYmFja2VuZCBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAgICBgbmRibScsIGBnZGJtJyBhbmQgYGJkYicuCi0gIC0td2l0aC1zaWduYWwtbW9kdWxlICAgIGRpc2FibGUvZW5hYmxlIHNpZ25hbCBtb2R1bGUKICAgLS13aXRoKG91dCktdGhyZWFkc1s9RElSRUNUT1JZXQogICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlL2VuYWJsZSB0aHJlYWQgc3VwcG9ydAogICAtLXdpdGgob3V0KS10aHJlYWRbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwcmVjYXRlZDsgdXNlIC0td2l0aChvdXQpLXRocmVhZHMKICAgLS13aXRoKG91dCktZG9jLXN0cmluZ3MgZGlzYWJsZS9lbmFibGUgZG9jdW1lbnRhdGlvbiBzdHJpbmdzCi0gIC0td2l0aChvdXQpLXRzYyAgICAgICAgIGVuYWJsZS9kaXNhYmxlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGUKICAgLS13aXRoKG91dCktcHltYWxsb2MgICAgZGlzYWJsZS9lbmFibGUgc3BlY2lhbGl6ZWQgbWFsbG9jcwogICAtLXdpdGgtdmFsZ3JpbmQgICAgICAgICBFbmFibGUgVmFsZ3JpbmQgc3VwcG9ydAorICAtLXdpdGgob3V0KS1kdHJhY2UgICAgICBkaXNhYmxlL2VuYWJsZSBEVHJhY2Ugc3VwcG9ydAogICAtLXdpdGgtZnBlY3RsICAgICAgICAgICBlbmFibGUgU0lHRlBFIGNhdGNoaW5nCiAgIC0td2l0aC1saWJtPVNUUklORyAgICAgIG1hdGggbGlicmFyeQogICAtLXdpdGgtbGliYz1TVFJJTkcgICAgICBDIGxpYnJhcnkKQEAgLTE2MzEsNyArMTYyMCw3IEBACiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKIGlmICRhY19pbml0X3ZlcnNpb247IHRoZW4KICAgY2F0IDw8XF9BQ0VPRgotcHl0aG9uIGNvbmZpZ3VyZSAzLjUKK3B5dGhvbiBjb25maWd1cmUgMy42CiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTk4NCwxMzYgKzE5NzMsNiBAQAogCiB9ICMgYWNfZm5fY19jaGVja190eXBlCiAKLSMgYWNfZm5fY19maW5kX3VpbnRYX3QgTElORU5PIEJJVFMgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaW5kcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgd2l0aCB3aWR0aCBCSVRTLCBzZXR0aW5nIGNhY2hlIHZhcmlhYmxlIFZBUgotIyBhY2NvcmRpbmdseS4KLWFjX2ZuX2NfZmluZF91aW50WF90ICgpCi17Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdWludCQyX3QiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVpbnQkMl90Li4uICIgPiY2OyB9Ci1pZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgZXZhbCAiJDM9bm8iCi0gICAgICMgT3JkZXIgaXMgaW1wb3J0YW50IC0gbmV2ZXIgY2hlY2sgYSB0eXBlIHRoYXQgaXMgcG90ZW50aWFsbHkgc21hbGxlcgotICAgICAjIHRoYW4gaGFsZiBvZiB0aGUgZXhwZWN0ZWQgdGFyZ2V0IHdpZHRoLgotICAgICBmb3IgYWNfdHlwZSBpbiB1aW50JDJfdCAndW5zaWduZWQgaW50JyAndW5zaWduZWQgbG9uZyBpbnQnIFwKLQkgJ3Vuc2lnbmVkIGxvbmcgbG9uZyBpbnQnICd1bnNpZ25lZCBzaG9ydCBpbnQnICd1bnNpZ25lZCBjaGFyJzsgZG8KLSAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotaW50Ci1tYWluICgpCi17Ci1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoKCRhY190eXBlKSAtMSA+PiAoJDIgLyAyIC0gMSkpID4+ICgkMiAvIDIgLSAxKSA9PSAzKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBjYXNlICRhY190eXBlIGluICMoCi0gIHVpbnQkMl90KSA6Ci0gICAgZXZhbCAiJDM9eWVzIiA7OyAjKAotICAqKSA6Ci0gICAgZXZhbCAiJDM9XCRhY190eXBlIiA7OwotZXNhYwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkMyJcIiA9IHgibm8iOyB0aGVuIDoKLQotZWxzZQotICBicmVhawotZmkKLSAgICAgZG9uZQotZmkKLWV2YWwgYWNfcmVzPVwkJDMKLQkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfZmluZF91aW50WF90Ci0KLSMgYWNfZm5fY19maW5kX2ludFhfdCBMSU5FTk8gQklUUyBWQVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmluZHMgYSBzaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKLSMgYWNjb3JkaW5nbHkuCi1hY19mbl9jX2ZpbmRfaW50WF90ICgpCi17Ci0gIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW50JDJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgaW50JDJfdC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGV2YWwgIiQzPW5vIgotICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKLSAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KLSAgICAgZm9yIGFjX3R5cGUgaW4gaW50JDJfdCAnaW50JyAnbG9uZyBpbnQnIFwKLQkgJ2xvbmcgbG9uZyBpbnQnICdzaG9ydCBpbnQnICdzaWduZWQgY2hhcic7IGRvCi0gICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLQkgICAgIGVudW0geyBOID0gJDIgLyAyIC0gMSB9OwotaW50Ci1tYWluICgpCi17Ci1zdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgwIDwgKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkpXTsKLXRlc3RfYXJyYXkgWzBdID0gMDsKLXJldHVybiB0ZXN0X2FycmF5IFswXTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0JICAgICAgICBlbnVtIHsgTiA9ICQyIC8gMiAtIDEgfTsKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMSkKLQkJIDwgKCRhY190eXBlKSAoKCgoKCRhY190eXBlKSAxIDw8IE4pIDw8IE4pIC0gMSkgKiAyICsgMikpXTsKLXRlc3RfYXJyYXkgWzBdID0gMDsKLXJldHVybiB0ZXN0X2FycmF5IFswXTsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0KLWVsc2UKLSAgY2FzZSAkYWNfdHlwZSBpbiAjKAotICBpbnQkMl90KSA6Ci0gICAgZXZhbCAiJDM9eWVzIiA7OyAjKAotICAqKSA6Ci0gICAgZXZhbCAiJDM9XCRhY190eXBlIiA7OwotZXNhYwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgIGlmIGV2YWwgdGVzdCBcInhcJCIkMyJcIiA9IHgibm8iOyB0aGVuIDoKLQotZWxzZQotICBicmVhawotZmkKLSAgICAgZG9uZQotZmkKLWV2YWwgYWNfcmVzPVwkJDMKLQkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQotJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQotICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KLQotfSAjIGFjX2ZuX2NfZmluZF9pbnRYX3QKLQogIyBhY19mbl9jX2NvbXB1dGVfaW50IExJTkVOTyBFWFBSIFZBUiBJTkNMVURFUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBUcmllcyB0byBmaW5kIHRoZSBjb21waWxlLXRpbWUgdmFsdWUgb2YgRVhQUiBpbiBhIHByb2dyYW0gdGhhdCBpbmNsdWRlcwpAQCAtMjQ3MCw3ICsyMzI5LDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBweXRob24gJGFzX21lIDMuNiwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICAkICQwICRACkBAIC0zMDU5LDcgKzI5MTgsNyBAQAogICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgogICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCiAJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCi0JICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLDMpKSc7IHRoZW4KKwkgICAgaWYgJGludGVycCAtYyAiaW1wb3J0IHN5cztzeXMuZXhpdChub3QgJy4nLmpvaW4oc3RyKG4pIGZvciBuIGluIHN5cy52ZXJzaW9uX2luZm9bOjJdKSA9PSAnJFBBQ0tBR0VfVkVSU0lPTicpIjsgdGhlbgogCSAgICAgICAgYnJlYWsKIAkgICAgZmkKICAgICAgICAgICAgIGludGVycD0KQEAgLTMwNjksNyArMjkyOCw3IEBACiAJZmkKICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRpbnRlcnAiID4mNQogJGFzX2VjaG8gIiRpbnRlcnAiID4mNjsgfQotCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAorCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliIF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPV9zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpICckaW50ZXJwCiAgICAgZmkKICAgICAjIFVzZWQgdG8gY29tbWVudCBvdXQgc3R1ZmYgZm9yIHJlYnVpbGRpbmcgZ2VuZXJhdGVkIGZpbGVzCiAgICAgR0VORVJBVEVEX0NPTU1FTlQ9JyMnCkBAIC0zMDk3LDcgKzI5NTYsNyBAQAogbXYgY29uZmRlZnMuaC5uZXcgY29uZmRlZnMuaAogCiAKLVZFUlNJT049My41CitWRVJTSU9OPTMuNgogCiAjIFZlcnNpb24gbnVtYmVyIG9mIFB5dGhvbidzIG93biBzaGFyZWQgbGlicmFyeSBmaWxlLgogCkBAIC00NzE2LDYgKzQ1NzUsNzUgQEAKICBHUkVQPSIkYWNfY3ZfcGF0aF9HUkVQIgogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICBhY19zY3JpcHQ9cy9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIvCisgICAgIGZvciBhY19pIGluIDEgMiAzIDQgNSA2IDc7IGRvCisgICAgICAgYWNfc2NyaXB0PSIkYWNfc2NyaXB0JGFzX25sJGFjX3NjcmlwdCIKKyAgICAgZG9uZQorICAgICBlY2hvICIkYWNfc2NyaXB0IiAyPi9kZXYvbnVsbCB8IHNlZCA5OXEgPmNvbmZ0ZXN0LnNlZAorICAgICB7IGFjX3NjcmlwdD07IHVuc2V0IGFjX3NjcmlwdDt9CisgICAgIGlmIHRlc3QgLXogIiRTRUQiOyB0aGVuCisgIGFjX3BhdGhfU0VEX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfU0VEPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9TRUQiIHx8IGNvbnRpbnVlCisjIENoZWNrIGZvciBHTlUgYWNfcGF0aF9TRUQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX1NFRAorY2FzZSBgIiRhY19wYXRoX1NFRCIgLS12ZXJzaW9uIDI+JjFgIGluCisqR05VKikKKyAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIgYWNfcGF0aF9TRURfZm91bmQ9Ojs7CisqKQorICBhY19jb3VudD0wCisgICRhc19lY2hvX24gMDEyMzQ1Njc4OSA+ImNvbmZ0ZXN0LmluIgorICB3aGlsZSA6CisgIGRvCisgICAgY2F0ICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0LmluIiA+ImNvbmZ0ZXN0LnRtcCIKKyAgICBtdiAiY29uZnRlc3QudG1wIiAiY29uZnRlc3QuaW4iCisgICAgY3AgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QubmwiCisgICAgJGFzX2VjaG8gJycgPj4gImNvbmZ0ZXN0Lm5sIgorICAgICIkYWNfcGF0aF9TRUQiIC1mIGNvbmZ0ZXN0LnNlZCA8ICJjb25mdGVzdC5ubCIgPiJjb25mdGVzdC5vdXQiIDI+L2Rldi9udWxsIHx8IGJyZWFrCisgICAgZGlmZiAiY29uZnRlc3Qub3V0IiAiY29uZnRlc3QubmwiID4vZGV2L251bGwgMj4mMSB8fCBicmVhaworICAgIGFzX2ZuX2FyaXRoICRhY19jb3VudCArIDEgJiYgYWNfY291bnQ9JGFzX3ZhbAorICAgIGlmIHRlc3QgJGFjX2NvdW50IC1ndCAke2FjX3BhdGhfU0VEX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX1NFRD0iJGFjX3BhdGhfU0VEIgorICAgICAgYWNfcGF0aF9TRURfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9TRURfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX1NFRCI7IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX1NFRD0kU0VECitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX1NFRCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3BhdGhfU0VEIiA+JjY7IH0KKyBTRUQ9IiRhY19jdl9wYXRoX1NFRCIKKyAgcm0gLWYgY29uZnRlc3Quc2VkCisKIAogCiAKQEAgLTUyODksNyArNTIxNywzMSBAQAogI3VuZGVmIHBvd2VycGMKICN1bmRlZiBzcGFyYwogI3VuZGVmIHVuaXgKLSNpZiBkZWZpbmVkKF9fbGludXhfXykKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCisgICAgICAgIHg4Nl82NC1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2kzODZfXykKKyAgICAgICAgaTY4Ni1saW51eC1hbmRyb2lkCisjIGVsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX0FBUkNINjRFTF9fKQorIyAgaWYgZGVmaW5lZChfX0lMUDMyX18pCisgICAgICAgIGFhcmNoNjRfaWxwMzItbGludXgtYW5kcm9pZAorIyAgZWxzZQorICAgICAgICBhYXJjaDY0LWxpbnV4LWFuZHJvaWQKKyMgIGVuZGlmCisjIGVsaWYgZGVmaW5lZChfX0FSTV9FQUJJX18pICYmIGRlZmluZWQoX19BUk1FTF9fKQorICAgICAgICBhcm0tbGludXgtYW5kcm9pZGVhYmkKKyMgZWxpZiBkZWZpbmVkKF9fbWlwc19oYXJkX2Zsb2F0KSAmJiBkZWZpbmVkKF9NSVBTRUwpCisjICBpZiBfTUlQU19TSU0gPT0gX0FCSU8zMgorICAgICAgICBtaXBzZWwtbGludXgtYW5kcm9pZAorIyAgZWxpZiBfTUlQU19TSU0gPT0gX0FCSTY0CisgICAgICAgIG1pcHM2NGVsLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgIGVuZGlmCisjIGVsc2UKKyMgICBlcnJvciB1bmtub3duIHBsYXRmb3JtIHRyaXBsZXQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQogIyBpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19MUDY0X18pCiAgICAgICAgIHg4Nl82NC1saW51eC1nbnUKICMgZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19JTFAzMl9fKQpAQCAtNTQwNSwxMCArNTM1NywxMyBAQAogICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4JE1VTFRJQVJDSDsgdGhlbgogICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQiICIkTElORU5PIiA1CiAgIGZpCitlbGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHggJiYgdGVzdCB4JE1VTFRJQVJDSCA9IHg7IHRoZW4KKyAgTVVMVElBUkNIPSRQTEFURk9STV9UUklQTEVUCiBmaQotUExBVERJUj1wbGF0LSRNQUNIREVQCiAKLQoraWYgdGVzdCB4JE1VTFRJQVJDSCAhPSB4OyB0aGVuCisgIE1VTFRJQVJDSF9DUFBGTEFHUz0iLURNVUxUSUFSQ0g9XFxcIiRNVUxUSUFSQ0hcXFwiIgorZmkKIAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2wsLS1uby1hcy1uZWVkZWQiID4mNQpAQCAtNTcwMiw2ICs1NjU3LDMyIEBACiAKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRoZSBBbmRyb2lkIEFQSSBsZXZlbC4uLiAiID4mNjsgfQorY2F0ID4+IGNvbmZ0ZXN0LmMgPDxFT0YKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CitfX0FORFJPSURfQVBJX18KKyNlbHNlCisjZXJyb3Igbm90IEFuZHJvaWQKKyNlbmRpZgorRU9GCisKK2lmICRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LmMgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBBTkRST0lEX0FQSV9MRVZFTD1gZ3JlcCAtdiAnXiMnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgJ14gKiQnYAorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFORFJPSURfQVBJX0xFVkVMIiA+JjUKKyRhc19lY2hvICIkQU5EUk9JRF9BUElfTEVWRUwiID4mNjsgfQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEFORFJPSURfQVBJX0xFVkVMICRBTkRST0lEX0FQSV9MRVZFTAorX0FDRU9GCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBBbmRyb2lkIiA+JjUKKyRhc19lY2hvICJub3QgQW5kcm9pZCIgPiY2OyB9CitmaQorcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdC5vdXQKKwogIyBDaGVjayBmb3IgdW5zdXBwb3J0ZWQgc3lzdGVtcwogY2FzZSAkYWNfc3lzX3N5c3RlbS8kYWNfc3lzX3JlbGVhc2UgaW4KIGF0aGVvcyp8TGludXgqLzEqKQpAQCAtNjU2Nyw3ICs2NTQ4LDcgQEAKIGlmIHRlc3QgIiRQeV9PUFQiID0gJ3RydWUnIDsgdGhlbgogICAjIEludGVudGlvbmFsbHkgbm90IGZvcmNpbmcgUHlfTFRPPSd0cnVlJyBoZXJlLiAgVG9vIG1hbnkgdG9vbGNoYWlucyBkbyBub3QKICAgIyBjb21waWxlIHdvcmtpbmcgY29kZSB1c2luZyBpdCBhbmQgYm90aCB0ZXN0X2Rpc3R1dGlscyBhbmQgdGVzdF9nZGIgYXJlCi0gICMgYnJva2VuIHdoZW4geW91IGRvIG1hbmFnZWQgdG8gZ2V0IGEgdG9vbGNoYWluIHRoYXQgd29ya3Mgd2l0aCBpdC4gIFBlb3BsZQorICAjIGJyb2tlbiB3aGVuIHlvdSBkbyBtYW5hZ2UgdG8gZ2V0IGEgdG9vbGNoYWluIHRoYXQgd29ya3Mgd2l0aCBpdC4gIFBlb3BsZQogICAjIHdobyB3YW50IExUTyBuZWVkIHRvIHVzZSAtLXdpdGgtbHRvIHRoZW1zZWx2ZXMuCiAgIERFRl9NQUtFX0FMTF9SVUxFPSJwcm9maWxlLW9wdCIKICAgUkVRVUlSRV9QR089InllcyIKQEAgLTY2MDQsMTMgKzY1ODUsMjAgQEAKIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgogICBjYXNlICRDQyBpbgogICAgICpjbGFuZyopCi0gICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgRGFyd2luKikKKyAgICAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICA7OworICAgICAgZXNhYwogICAgICAgOzsKICAgICAqZ2NjKikKICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KICAgICAgICAgRGFyd2luKikKLSAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCiAgICAgICAgICAgOzsKICAgICAgICAgKikKICAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLWZ1c2UtbGlua2VyLXBsdWdpbiAtZmZhdC1sdG8tb2JqZWN0cyAtZmx0by1wYXJ0aXRpb249bm9uZSIKQEAgLTY5MTgsNiArNjkwNiw0OSBAQAogIyB0d2VhayBCQVNFQ0ZMQUdTIGJhc2VkIG9uIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybQogY2FzZSAkR0NDIGluCiB5ZXMpCisgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLXN0ZD1jOTkiCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2V4dHJhIiA+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+JjYKICAgICBlY2hvICIiID4mNgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDM4MWJhYjAuLjczOTI3YjEgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTMsNyArMyw3IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNSkKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy42KQogCiBBQ19QUkVSRVEoMi42NSkKIApAQCAtNjksNyArNjksNyBAQAogICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgogICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCiAJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCi0JICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AID49ICgzLDMpKSc7IHRoZW4KKwkgICAgaWYgJGludGVycCAtYyAiaW1wb3J0IHN5cztzeXMuZXhpdChub3QgJy4nLmpvaW4oc3RyKG4pIGZvciBuIGluIHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AKSA9PSAnJFBBQ0tBR0VfVkVSU0lPTicpIjsgdGhlbgogCSAgICAgICAgYnJlYWsKIAkgICAgZmkKICAgICAgICAgICAgIGludGVycD0KQEAgLTc4LDcgKzc4LDcgQEAKIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAJZmkKICAgICAgICAgQUNfTVNHX1JFU1VMVCgkaW50ZXJwKQotCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAorCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliIF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPV9zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpICckaW50ZXJwCiAgICAgZmkKICAgICAjIFVzZWQgdG8gY29tbWVudCBvdXQgc3R1ZmYgZm9yIHJlYnVpbGRpbmcgZ2VuZXJhdGVkIGZpbGVzCiAgICAgR0VORVJBVEVEX0NPTU1FTlQ9JyMnCkBAIC02OTQsNiArNjk0LDcgQEAKIEFDX1BST0dfQ0MKIEFDX1BST0dfQ1BQCiBBQ19QUk9HX0dSRVAKK0FDX1BST0dfU0VECiAKIEFDX1NVQlNUKENYWCkKIEFDX1NVQlNUKE1BSU5DQykKQEAgLTc2OCw3ICs3NjksMzEgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorICAgICAgICB4ODZfNjQtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGk2ODYtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NC1saW51eC1hbmRyb2lkCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWFuZHJvaWRlYWJpCisjIGVsaWYgZGVmaW5lZChfX21pcHNfaGFyZF9mbG9hdCkgJiYgZGVmaW5lZChfTUlQU0VMKQorIyAgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgbWlwc2VsLWxpbnV4LWFuZHJvaWQKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgICAgICBtaXBzNjRlbC1saW51eC1hbmRyb2lkCisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQogICAgICAgICB4ODZfNjQtbGludXgtZ251CiAjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKQEAgLTg4MiwxMSArOTA3LDE0IEBACiAgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCiAgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQogICBmaQorZWxpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggPSB4OyB0aGVuCisgIE1VTFRJQVJDSD0kUExBVEZPUk1fVFJJUExFVAogZmkKLVBMQVRESVI9cGxhdC0kTUFDSERFUAotQUNfU1VCU1QoUExBVERJUikKIEFDX1NVQlNUKFBMQVRGT1JNX1RSSVBMRVQpCi0KK2lmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgorICBNVUxUSUFSQ0hfQ1BQRkxBR1M9Ii1ETVVMVElBUkNIPVxcXCIkTVVMVElBUkNIXFxcIiIKK2ZpCitBQ19TVUJTVChNVUxUSUFSQ0hfQ1BQRkxBR1MpCiAKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtOTAzLDYgKzkzMSwyNSBAQAogIyBjaGVja3MgZm9yIFVOSVggdmFyaWFudHMgdGhhdCBzZXQgQyBwcmVwcm9jZXNzb3IgdmFyaWFibGVzCiBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKIAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsXSkKK2NhdCA+PiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorX19BTkRST0lEX0FQSV9fCisjZWxzZQorI2Vycm9yIG5vdCBBbmRyb2lkCisjZW5kaWYKK0VPRgorCitpZiAkQ1BQICRDUFBGTEFHUyBjb25mdGVzdC5jID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgQU5EUk9JRF9BUElfTEVWRUw9YGdyZXAgLXYgJ14jJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICdeICokJ2AKKyAgQUNfTVNHX1JFU1VMVChbJEFORFJPSURfQVBJX0xFVkVMXSkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKEFORFJPSURfQVBJX0xFVkVMLCAkQU5EUk9JRF9BUElfTEVWRUwsIFtUaGUgQW5kcm9pZCBBUEkgbGV2ZWwuXSkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChbbm90IEFuZHJvaWRdKQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKICMgQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIHN5c3RlbXMKIGNhc2UgJGFjX3N5c19zeXN0ZW0vJGFjX3N5c19yZWxlYXNlIGluCiBhdGhlb3MqfExpbnV4Ki8xKikKQEAgLTEyMzUsNyArMTI4Miw3IEBACiBBQ19TVUJTVChERUZfTUFLRV9SVUxFKQogUHlfT1BUPSdmYWxzZScKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLW9wdGltaXphdGlvbnMpCi1BQ19BUkdfV0lUSChvcHRpbWl6YXRpb25zLCBBU19IRUxQX1NUUklORyhbLS13aXRoLW9wdGltaXphdGlvbnNdLCBbRW5hYmxlIGV4cGVuc2l2ZSBvcHRpbWl6YXRpb25zIChQR08sIG1heWJlIExUTywgZXRjKS4gIERpc2FibGVkIGJ5IGRlZmF1bHQuXSksCitBQ19BUkdfV0lUSChvcHRpbWl6YXRpb25zLCBBU19IRUxQX1NUUklORyhbLS13aXRoLW9wdGltaXphdGlvbnNdLCBbRW5hYmxlIGV4cGVuc2l2ZSBvcHRpbWl6YXRpb25zIChQR08sIGV0YykuICBEaXNhYmxlZCBieSBkZWZhdWx0Ll0pLAogWwogaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCiB0aGVuCkBAIC0xMjQ5LDcgKzEyOTYsNyBAQAogaWYgdGVzdCAiJFB5X09QVCIgPSAndHJ1ZScgOyB0aGVuCiAgICMgSW50ZW50aW9uYWxseSBub3QgZm9yY2luZyBQeV9MVE89J3RydWUnIGhlcmUuICBUb28gbWFueSB0b29sY2hhaW5zIGRvIG5vdAogICAjIGNvbXBpbGUgd29ya2luZyBjb2RlIHVzaW5nIGl0IGFuZCBib3RoIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2dkYiBhcmUKLSAgIyBicm9rZW4gd2hlbiB5b3UgZG8gbWFuYWdlZCB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCisgICMgYnJva2VuIHdoZW4geW91IGRvIG1hbmFnZSB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCiAgICMgd2hvIHdhbnQgTFRPIG5lZWQgdG8gdXNlIC0td2l0aC1sdG8gdGhlbXNlbHZlcy4KICAgREVGX01BS0VfQUxMX1JVTEU9InByb2ZpbGUtb3B0IgogICBSRVFVSVJFX1BHTz0ieWVzIgpAQCAtMTI3NywxMyArMTMyNCwyMCBAQAogaWYgdGVzdCAiJFB5X0xUTyIgPSAndHJ1ZScgOyB0aGVuCiAgIGNhc2UgJENDIGluCiAgICAgKmNsYW5nKikKLSAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwotICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICBEYXJ3aW4qKQorICAgICAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdworICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtV2wsLWV4cG9ydF9keW5hbWljIgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIgorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgICpnY2MqKQogICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogICAgICAgICBEYXJ3aW4qKQotICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKICAgICAgICAgICA7OwogICAgICAgICAqKQogICAgICAgICAgIExUT0ZMQUdTPSItZmx0byAtZnVzZS1saW5rZXItcGx1Z2luIC1mZmF0LWx0by1vYmplY3RzIC1mbHRvLXBhcnRpdGlvbj1ub25lIgpAQCAtMTQ2MSw2ICsxNTE1LDI4IEBACiAjIHR3ZWFrIEJBU0VDRkxBR1MgYmFzZWQgb24gY29tcGlsZXIgYW5kIHBsYXRmb3JtCiBjYXNlICRHQ0MgaW4KIHllcykKKyAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtc3RkPWM5OSIKKworICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdleHRyYSkKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XZXh0cmEgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2V4dHJhX3dhcm5pbmdzLAorICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgWworICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworICAgICAgICAgXSkpCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9leHRyYV93YXJuaW5ncykKKworICAgIGlmIHRlc3QgJGFjX2N2X2V4dHJhX3dhcm5pbmdzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVdleHRyYSIKKyAgICBmaQorCiAgICAgIyBQeXRob24gZG9lc24ndCB2aW9sYXRlIEM5OSBhbGlhc2luZyBydWxlcywgYnV0IG9sZGVyIHZlcnNpb25zIG9mCiAgICAgIyBHQ0MgcHJvZHVjZSB3YXJuaW5ncyBmb3IgbGVnYWwgUHl0aG9uIGNvZGUuICBFbmFibGUKICAgICAjIC1mbm8tc3RyaWN0LWFsaWFzaW5nIG9uIHZlcnNpb25zIG9mIEdDQyB0aGF0IHN1cHBvcnQgYnV0IHByb2R1Y2UKQEAgLTE1MjUsMjggKzE2MDEsNDcgQEAKICAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZyA9IHllcwogICAgIHRoZW4KICAgICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1Xbm8tdW51c2VkLXJlc3VsdCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXJlc3VsdCIKICAgICBmaQogCi0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCkKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcpCiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZywKKyAgICAgQ0M9IiRDQyAtV3VudXNlZC1wYXJhbWV0ZXIgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nLAogICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAogICAgICAgICAgWwotCSAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQotCSBdLFsKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCi0JIF0sWwotICAgICAgICAgICBhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZz1ubwotCSBdKSkKLSAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcworICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPW5vCisgICAgICAgICBdKSkKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nKQorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKQogCi0gICAgaWYgdGVzdCAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcgPSB5ZXMKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyA9IHllcwogICAgIHRoZW4KLSAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXJyb3I9ZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcGFyYW1ldGVyIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtV2Vycm9yIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPW5vCisgICAgICAgICBdKSkKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzID0geWVzCisgICAgdGhlbgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIKICAgICBmaQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZykKQEAgLTE5NDEsNyArMjAzNiw3IEBACiBBQ19DSEVDS19IRUFERVJTKGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKIGZjbnRsLmggZ3JwLmggXAogaWVlZWZwLmggaW8uaCBsYW5naW5mby5oIGxpYmludGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKLXNjaGVkLmggc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCBcCitzY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBwb2xsLmggc3lzL2RldnBvbGwuaCBzeXMvZXBvbGwuaCBzeXMvcG9sbC5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL3hhdHRyLmggc3lzL2JzZHR0eS5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2lvY3RsLmggXApAQCAtMTk1MCwxMSArMjA0NSwxOCBAQAogc3lzL3N0YXQuaCBzeXMvc3lzY2FsbC5oIHN5cy9zeXNfZG9tYWluLmggc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAogc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3Vpby5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBcCiBsaWJ1dGlsLmggc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAotYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCitsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAogc3lzL2VuZGlhbi5oKQogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorQUNfQ0hFQ0tfSEVBREVSUyhibHVldG9vdGgvYmx1ZXRvb3RoLmgpCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKIFsjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTIwNDgsNiArMjE1MCwxMSBAQAogICB1c2VfbGZzPW5vCiBmaQogCisjIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQKK2Nhc2UgJGFjX3N5c19zeXN0ZW0gaW4gR05VKikKKyAgdXNlX2xmcz1ubworZXNhYworCiBpZiB0ZXN0ICIkdXNlX2xmcyIgPSAieWVzIjsgdGhlbgogIyBUd28gZGVmaW5lcyBuZWVkZWQgdG8gZW5hYmxlIGxhcmdlZmlsZSBzdXBwb3J0IG9uIHZhcmlvdXMgcGxhdGZvcm1zCiAjIFRoZXNlIG1heSBhZmZlY3Qgc29tZSB0eXBlZGVmcwpAQCAtMjA3OCwyOSArMjE4NSw2IEBACiBBQ19UWVBFX1NJWkVfVAogQUNfVFlQRV9VSURfVAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1BQ19DSEVDS19UWVBFKHVpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9VSU5UMzJfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90Ll0pLCwpCi1BQ19UWVBFX1VJTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUodWludDY0X3QsCi0gIEFDX0RFRklORShIQVZFX1VJTlQ2NF9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuXSksLCkKLUFDX1RZUEVfVUlOVDY0X1QKLQotQUNfQ0hFQ0tfVFlQRShpbnQzMl90LAotICBBQ19ERUZJTkUoSEFWRV9JTlQzMl9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC5dKSwsKQotQUNfVFlQRV9JTlQzMl9UCi0KLUFDX0NIRUNLX1RZUEUoaW50NjRfdCwKLSAgQUNfREVGSU5FKEhBVkVfSU5UNjRfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIGludDY0X3QuXSksLCkKLUFDX1RZUEVfSU5UNjRfVAotCiBBQ19DSEVDS19UWVBFKHNzaXplX3QsCiAgIEFDX0RFRklORShIQVZFX1NTSVpFX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBzc2l6ZV90XSksLCkKIEFDX0NIRUNLX1RZUEUoX191aW50MTI4X3QsCkBAIC0yMTEwLDYgKzIxOTQsNyBAQAogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKIEFDX0NIRUNLX1NJWkVPRihpbnQsIDQpCiBBQ19DSEVDS19TSVpFT0YobG9uZywgNCkKK0FDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcsIDgpCiBBQ19DSEVDS19TSVpFT0Yodm9pZCAqLCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNob3J0LCAyKQogQUNfQ0hFQ0tfU0laRU9GKGZsb2F0LCA0KQpAQCAtMjExNywxNyArMjIwMiw3IEBACiBBQ19DSEVDS19TSVpFT0YoZnBvc190LCA0KQogQUNfQ0hFQ0tfU0laRU9GKHNpemVfdCwgNCkKIEFDX0NIRUNLX1NJWkVPRihwaWRfdCwgNCkKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBsb25nIGxvbmcgc3VwcG9ydCkKLWhhdmVfbG9uZ19sb25nPW5vCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7XV0pXSxbCi0gIEFDX0RFRklORShIQVZFX0xPTkdfTE9ORywgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy5dKQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLV0sW10pCi1BQ19NU0dfUkVTVUxUKCRoYXZlX2xvbmdfbG9uZykKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCi1BQ19DSEVDS19TSVpFT0YobG9uZyBsb25nLCA4KQotZmkKK0FDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QpCiAKIEFDX01TR19DSEVDS0lORyhmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCkKIGhhdmVfbG9uZ19kb3VibGU9bm8KQEAgLTIxNDAsMjYgKzIyMTUsNyBAQAogQUNfQ0hFQ0tfU0laRU9GKGxvbmcgZG91YmxlLCAxNikKIGZpCiAKLQotQUNfTVNHX0NIRUNLSU5HKGZvciBfQm9vbCBzdXBwb3J0KQotaGF2ZV9jOTlfYm9vbD1ubwotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW19Cb29sIHg7IHggPSAoX0Jvb2wpMDtdXSldLFsKLSAgQUNfREVGSU5FKEhBVkVfQzk5X0JPT0wsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBfQm9vbC5dKQotICBoYXZlX2M5OV9ib29sPXllcwotXSxbXSkKLUFDX01TR19SRVNVTFQoJGhhdmVfYzk5X2Jvb2wpCi1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiBBQ19DSEVDS19TSVpFT0YoX0Jvb2wsIDEpCi1maQotCi1BQ19DSEVDS19UWVBFUyh1aW50cHRyX3QsCi0gICBbQUNfQ0hFQ0tfU0laRU9GKHVpbnRwdHJfdCwgNCldLAotICAgW10sIFsjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICAgICAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gICAgICAgICNlbmRpZgotICAgICAgICAjaWZkZWYgSEFWRV9JTlRUWVBFU19ICi0gICAgICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICAgICAgICAjZW5kaWZdKQogCiBBQ19DSEVDS19TSVpFT0Yob2ZmX3QsIFtdLCBbCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSApAQCAtMjE2OCw4ICsyMjI0LDYgQEAKIF0pCiAKIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQpCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogICBBQ19ERUZJTkUoSEFWRV9MQVJHRUZJTEVfU1VQUE9SVCwgMSwKQEAgLTIxODEsOSArMjIzNSw2IEBACiBlbHNlCiAgIEFDX01TR19SRVNVTFQobm8pCiBmaQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKIAogQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCwgW10sIFsKICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICkBAIC0yNzQyLDkgKzI3OTMsMjUgQEAKICMgQ2hlY2sgZm9yIHVzZSBvZiB0aGUgc3lzdGVtIGxpYmZmaSBsaWJyYXJ5CiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tZmZpKQogQUNfQVJHX1dJVEgoc3lzdGVtX2ZmaSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwKLSAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2ZmaT0ibm8iXSkKKyAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtLWZmaV0sIFtidWlsZCBfY3R5cGVzIG1vZHVsZSB1c2luZyBhbiBpbnN0YWxsZWQgZmZpIGxpYnJhcnldKSwsLCkKKworY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBBQ19NU0dfRVJST1IoWy0td2l0aC1zeXN0ZW0tZmZpIGFjY2VwdHMgbm8gYXJndW1lbnRzXSkKKyAgICAgICAgOzsKK2VzYWMKIAogaWYgdGVzdCAiJHdpdGhfc3lzdGVtX2ZmaSIgPSAieWVzIiAmJiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KICAgICBMSUJGRklfSU5DTFVERURJUj0iYCIkUEtHX0NPTkZJRyIgbGliZmZpIC0tY2ZsYWdzLW9ubHktSSAyPi9kZXYvbnVsbCB8IHNlZCAtZSAncy9eLUkvLztzLyAqJC8vJ2AiCkBAIC0yODE5LDI2ICsyODg2LDYgQEAKIGZpXSkKIEFDX01TR19SRVNVTFQoJHdpdGhfZGJtbGlib3JkZXIpCiAKLSMgRGV0ZXJtaW5lIGlmIHNpZ25hbG1vZHVsZSBzaG91bGQgYmUgdXNlZC4KLUFDX1NVQlNUKFVTRV9TSUdOQUxfTU9EVUxFKQotQUNfU1VCU1QoU0lHTkFMX09CSlMpCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlKQotQUNfQVJHX1dJVEgoc2lnbmFsLW1vZHVsZSwKLSAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc2lnbmFsLW1vZHVsZV0sIFtkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlXSkpCi0KLWlmIHRlc3QgLXogIiR3aXRoX3NpZ25hbF9tb2R1bGUiCi10aGVuIHdpdGhfc2lnbmFsX21vZHVsZT0ieWVzIgotZmkKLUFDX01TR19SRVNVTFQoJHdpdGhfc2lnbmFsX21vZHVsZSkKLQotaWYgdGVzdCAiJHt3aXRoX3NpZ25hbF9tb2R1bGV9IiA9ICJ5ZXMiOyB0aGVuCi0JVVNFX1NJR05BTF9NT0RVTEU9IiIKLQlTSUdOQUxfT0JKUz0iIgotZWxzZQotCVVTRV9TSUdOQUxfTU9EVUxFPSIjIgotCVNJR05BTF9PQkpTPSJQYXJzZXIvaW50cmNoZWNrLm8gUHl0aG9uL3NpZ2NoZWNrLm8iCi1maQotCiAjIFRoaXMgaXMgdXNlZCB0byBnZW5lcmF0ZSBTZXR1cC5jb25maWcKIEFDX1NVQlNUKFVTRV9USFJFQURfTU9EVUxFKQogVVNFX1RIUkVBRF9NT0RVTEU9IiIKQEAgLTMyMDgsMTYgKzMyNTUsNiBAQAogICBBQ19NU0dfUkVTVUxUKG5vKQogXSkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIpCi1BQ19DT01QSUxFX0lGRUxTRShbCi0gIEFDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxDYXJib24vQ2FyYm9uLmg+XV0sIFtbRlNJT1JlZk51bSBmUmVmID0gMF1dKQotXSxbCi0gIEFDX0RFRklORShIQVZFX09TWDEwNV9TREssIDEsIFtEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuXSkKLSAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVChubykKLV0pCi0KICMgQ2hlY2sgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncwogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtZG9jLXN0cmluZ3MpCiBBQ19BUkdfV0lUSChkb2Mtc3RyaW5ncywKQEAgLTMyMzMsMTkgKzMyNzAsNiBAQAogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfZG9jX3N0cmluZ3MpCiAKLSMgQ2hlY2sgaWYgZXZhbCBsb29wIHNob3VsZCB1c2UgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsaW5nCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC10c2MpCi1BQ19BUkdfV0lUSCh0c2MsCi0JICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgob3V0KS10c2NdLFtlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlXSksWwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuCi0gIEFDX0RFRklORShXSVRIX1RTQywgMSwKLSAgICBbRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlcl0pCi0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi1lbHNlIEFDX01TR19SRVNVTFQobm8pCi1maV0sCi1bQUNfTVNHX1JFU1VMVChubyldKQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXB5bWFsbG9jKQogQUNfQVJHX1dJVEgocHltYWxsb2MsCkBAIC0zMjc3LDYgKzMzMDEsNDcgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kdHJhY2UpCitBQ19BUkdfV0lUSChkdHJhY2UsCisgIEFDX0hFTFBfU1RSSU5HKC0td2l0aChvdXQpLWR0cmFjZSwgW2Rpc2FibGUvZW5hYmxlIERUcmFjZSBzdXBwb3J0XSksLAorICB3aXRoX2R0cmFjZT1ubykKK0FDX01TR19SRVNVTFQoJHdpdGhfZHRyYWNlKQorCitBQ19TVUJTVChEVFJBQ0UpCitBQ19TVUJTVChERkxBR1MpCitBQ19TVUJTVChEVFJBQ0VfSEVBREVSUykKK0FDX1NVQlNUKERUUkFDRV9PQkpTKQorRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgQUNfUEFUSF9QUk9HKERUUkFDRSwgW2R0cmFjZV0sIFtub3QgZm91bmRdKQorICAgIGlmIHRlc3QgIiREVFJBQ0UiID0gIm5vdCBmb3VuZCI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKFtkdHJhY2UgY29tbWFuZCBub3QgZm91bmQgb24gXCRQQVRIXSkKKyAgICBmaQorICAgIEFDX0RFRklORShXSVRIX0RUUkFDRSwgMSwgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0XSkKKyAgICBEVFJBQ0VfSEVBREVSUz0iSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaCIKKworICAgICMgT24gT1MgWCwgRFRyYWNlIHByb3ZpZGVycyBkbyBub3QgbmVlZCB0byBiZSBleHBsaWNpdGx5IGNvbXBpbGVkIGFuZAorICAgICMgbGlua2VkIGludG8gdGhlIGJpbmFyeS4gQ29ycmVzcG9uZGluZ2x5LCBkdHJhY2UoMSkgaXMgbWlzc2luZyB0aGUgRUxGCisgICAgIyBnZW5lcmF0aW9uIGZsYWcgJy1HJy4gV2UgY2hlY2sgZm9yIHByZXNlbmNlIG9mIHRoaXMgZmxhZywgcmF0aGVyIHRoYW4KKyAgICAjIGhhcmRjb2Rpbmcgc3VwcG9ydCBieSBPUywgaW4gdGhlIGludGVyZXN0IG9mIHJvYnVzdG5lc3MuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmddLAorICAgICAgICBbYWNfY3ZfZHRyYWNlX2xpbmtdLCBbZG5sCisgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz1ubworICAgICAgICAgICAgZWNobyAnQkVHSU4nID4gY29uZnRlc3QuZAorICAgICAgICAgICAgIiREVFJBQ0UiIC1HIC1zIGNvbmZ0ZXN0LmQgLW8gY29uZnRlc3QubyA+IC9kZXYvbnVsbCAyPiYxICYmIFwKKyAgICAgICAgICAgICAgICBhY19jdl9kdHJhY2VfbGluaz15ZXMKKyAgICAgIF0pCisgICAgaWYgdGVzdCAiJGFjX2N2X2R0cmFjZV9saW5rIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIERUUkFDRV9PQkpTPSJQeXRob24vcHlkdHJhY2UubyIKKyAgICBmaQorZmkKKwogIyAtSSR7RExJTkNMRElSfSBpcyBhZGRlZCB0byB0aGUgY29tcGlsZSBydWxlIGZvciBpbXBvcnRkbC5vCiBBQ19TVUJTVChETElOQ0xESVIpCiBETElOQ0xESVI9LgpAQCAtMzY2OSw2ICszNzM0LDEyIEBACiAgICAgXSkKIF0pCiAKK0FDX0NIRUNLX0ZVTkNTKGNsb2NrX3NldHRpbWUsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19zZXR0aW1lLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX1NFVFRJTUUsIDEpCisgICAgXSkKK10pCisKIEFDX01TR19DSEVDS0lORyhmb3IgbWFqb3IsIG1pbm9yLCBhbmQgbWFrZWRldikKIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKICNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQpAQCAtMzgzMCw2ICszOTAxLDEwIEBACiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9nZW5dKQogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfYmlydGh0aW1lXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2Jsb2Nrc10pCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgcGFzc3dkLnB3X2dlY29zLCBzdHJ1Y3QgcGFzc3dkLnB3X3Bhc3N3ZF0sIFtdLCBbXSwgW1sKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CitdXSkKIAogQUNfTVNHX0NIRUNLSU5HKGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUpCiBBQ19DQUNIRV9WQUwoYWNfY3ZfaGVhZGVyX3RpbWVfYWx0em9uZSxbCkBAIC0zODc4LDYgKzM5NTMsMTkgQEAKIAlBQ19ERUZJTkUoSEFWRV9TT0NLQUREUl9TVE9SQUdFLCAxLCBbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKHN5cy9zb2NrZXQuaCldKQogZmkKIAorQUNfTVNHX0NIRUNLSU5HKGZvciBzb2NrYWRkcl9hbGcpCitBQ19DQUNIRV9WQUwoYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZywKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKKyMJCWluY2x1ZGUgPHN5cy90eXBlcy5oPgorIwkJaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIwkJaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+XV0sIFtbc3RydWN0IHNvY2thZGRyX2FsZyBzXV0pXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9eWVzXSwKKyAgW2FjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGc9bm9dKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcpCitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfQUxHLCAxLCBbc3RydWN0IHNvY2thZGRyX2FsZyAobGludXgvaWZfYWxnLmgpXSkKK2ZpCisKICMgY2hlY2tzIGZvciBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MKIAogQUNfQ19DSEFSX1VOU0lHTkVECkBAIC0zOTUwLDIwICs0MDM4LDYgQEAKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQogCi12YV9saXN0X2lzX2FycmF5PW5vCi1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5KQotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCi1dXSwgW1t2YV9saXN0IGxpc3QxLCBsaXN0MjsgbGlzdDEgPSBsaXN0MjtdXSldLFtdLFsKLSBBQ19ERUZJTkUoVkFfTElTVF9JU19BUlJBWSwgMSwgW0RlZmluZSBpZiBhIHZhX2xpc3QgaXMgYW4gYXJyYXkgb2Ygc29tZSBraW5kXSkKLSB2YV9saXN0X2lzX2FycmF5PXllcwotXSkKLUFDX01TR19SRVNVTFQoJHZhX2xpc3RfaXNfYXJyYXkpCi0KICMgc2lnaCAtLSBnZXRob3N0YnluYW1lX3IgaXMgYSBtZXNzOyBpdCBjYW4gaGF2ZSAzLCA1IG9yIDYgYXJndW1lbnRzIDotKAogQUhfVEVNUExBVEUoSEFWRV9HRVRIT1NUQllOQU1FX1IsCiAgIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBzb21lIHZlcnNpb24gb2YgZ2V0aG9zdGJ5bmFtZV9yKCldKQpAQCAtNDQwNiw2ICs0NDgwLDggQEAKICAgW2RlZmluZSB0byAxIGlmIHlvdXIgc2VtX2dldHZhbHVlIGlzIGJyb2tlbi5dKQogZmkKIAorQUNfQ0hFQ0tfREVDTFMoW1JUTERfTEFaWSwgUlRMRF9OT1csIFJUTERfR0xPQkFMLCBSVExEX0xPQ0FMLCBSVExEX05PREVMRVRFLCBSVExEX05PTE9BRCwgUlRMRF9ERUVQQklORF0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8ZGxmY24uaD5dXSkKKwogIyBkZXRlcm1pbmUgd2hhdCBzaXplIGRpZ2l0IHRvIHVzZSBmb3IgUHl0aG9uJ3MgbG9uZ3MKIEFDX01TR19DSEVDS0lORyhbZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3NdKQogQUNfQVJHX0VOQUJMRShiaWctZGlnaXRzLApAQCAtNDUyNCw3ICs0NjAwLDExIEBACiAKIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgogQUNfU1VCU1QoUFlfRU5BQkxFX1NIQVJFRCkKLUxJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgoraWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059IgorZWxzZQorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfS0ke1BMQVRGT1JNX1RSSVBMRVR9IgorZmkKIEFDX1NVQlNUKExJQlBMKQogCiAjIENoZWNrIHdoZXRoZXIgcmlnaHQgc2hpZnRpbmcgYSBuZWdhdGl2ZSBpbnRlZ2VyIGV4dGVuZHMgdGhlIHNpZ24gYml0CkBAIC00OTIyLDcwICs1MDAyLDYgQEAKICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0YyBkZXZpY2UgZmlsZS5dKQogZmkKIAotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwotdGhlbgotICBBQ19NU0dfQ0hFQ0tJTkcoZm9yICVsbGQgYW5kICVsbHUgcHJpbnRmKCkgZm9ybWF0IHN1cHBvcnQpCi0gIEFDX0NBQ0hFX1ZBTChhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQsCi0gIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWwotICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSAgI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKLSAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICAjZW5kaWYKLQotICBpbnQgbWFpbigpCi0gIHsKLSAgICAgIGNoYXIgYnVmZmVyWzI1Nl07Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgaWYgKHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICItMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMykgPCAwKQotICAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYgKHN0cmNtcChidWZmZXIsICIxMjMiKSkKLSAgICAgICAgICByZXR1cm4gMTsKLQotICAgICAgcmV0dXJuIDA7Ci0gIH0KLSAgXV1dKV0sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD1ub10sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9ImNyb3NzIC0tIGFzc3VtaW5nIG5vIgotICAgaWYgdGVzdCB4JEdDQyA9IHh5ZXM7IHRoZW4KLSAgICBzYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdmb3JtYXQiCi0gICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWwotICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICAgICAgXV0sIFtbCi0gICAgICBjaGFyICpidWZmZXI7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMyk7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpOwotICAgICAgXV0pXSwKLSAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLSAgICApCi0gICAgQ0ZMQUdTPSRzYXZlX0NGTEFHUwotICAgZmldKQotICApCi0gIEFDX01TR19SRVNVTFQoJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCkKLWZpCi0KLWlmIHRlc3QgIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID0geWVzCi10aGVuCi0gIEFDX0RFRklORShQWV9GT1JNQVRfTE9OR19MT05HLCAibGwiLAotICBbRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIGxvbmcgbG9uZyB0eXBlXSkKLWZpCi0KIGlmIHRlc3QgJGFjX3N5c19zeXN0ZW0gPSBEYXJ3aW4KIHRoZW4KIAlMSUJTPSIkTElCUyAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIgpAQCAtNTM3OCw3ICs1Mzk0LDcgQEAKIGlmIHRlc3QgIiRQeV9PUFQiID0gJ2ZhbHNlJyAtYSAiJFB5X0RFQlVHIiAhPSAndHJ1ZSc7IHRoZW4KICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECi0gICAgZWNobyAiSWYgeW91IHdhbnQgYSByZWxlYXNlIGJ1aWxkIHdpdGggYWxsIG9wdGltaXphdGlvbnMgYWN0aXZlIChMVE8sIFBHTywgZXRjKSwiCisgICAgZWNobyAiSWYgeW91IHdhbnQgYSByZWxlYXNlIGJ1aWxkIHdpdGggYWxsIG9wdGltaXphdGlvbnMgYWN0aXZlIChMVE8sIFBHTywgZXRjKSwiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gInBsZWFzZSBydW4gLi9jb25maWd1cmUgLS13aXRoLW9wdGltaXphdGlvbnMiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKZGlmZiAtLWdpdCBhL3B5Y29uZmlnLmguaW4gYi9weWNvbmZpZy5oLmluCmluZGV4IGJmNGJhNWIuLmU3YTgzNmMgMTAwNjQ0Ci0tLSBhL3B5Y29uZmlnLmguaW4KKysrIGIvcHljb25maWcuaC5pbgpAQCAtMTIsNiArMTIsOSBAQAogICAgc3VwcG9ydCBmb3IgQUlYIEMrKyBzaGFyZWQgZXh0ZW5zaW9uIG1vZHVsZXMuICovCiAjdW5kZWYgQUlYX0dFTlVJTkVfQ1BMVVNQTFVTCiAKKy8qIFRoZSBBbmRyb2lkIEFQSSBsZXZlbC4gKi8KKyN1bmRlZiBBTkRST0lEX0FQSV9MRVZFTAorCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTEwNCw5ICsxMDcsNiBAQAogLyogSGFzIGJ1aWx0aW4gYXRvbWljcyAqLwogI3VuZGVmIEhBVkVfQlVJTFRJTl9BVE9NSUMKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuICovCi0jdW5kZWYgSEFWRV9DOTlfQk9PTAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgJ2NoZmxhZ3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0hGTEFHUwogCkBAIC0xMjUsNiArMTI1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfc2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19TRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2Nyw2ICsxNzAsMzQgQEAKICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX0lTTkFOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9ERUVQQklORCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX0dMT0JBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MQVpZJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9MQVpZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9MT0NBTCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PREVMRVRFJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0RFTEVURQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTk9MT0FEJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfUlRMRF9OT0xPQUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PVycsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9XCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgdHpuYW1lJywgYW5kIHRvIDAgaWYgeW91IGRvbid0LgogICAgKi8KICN1bmRlZiBIQVZFX0RFQ0xfVFpOQU1FCkBAIC00NTMsMTIgKzQ4NCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluaXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5JVEdST1VQUwogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAotCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAogCkBAIC01NjEsOSArNTg2LDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIAotLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgbG9uZyBsb25nLiAqLwotI3VuZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHN0YXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTFNUQVQKIApAQCAtNjMwLDkgKzY1Miw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG9wZW5wdHknIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfT1BFTlBUWQogCi0vKiBEZWZpbmUgaWYgY29tcGlsaW5nIHVzaW5nIE1hY09TIFggMTAuNSBTREsgb3IgbGF0ZXIuICovCi0jdW5kZWYgSEFWRV9PU1gxMDVfU0RLCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUEFUSENPTkYKIApAQCAtODYxLDYgKzg4MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNucHJpbnRmJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NOUFJJTlRGCiAKKy8qIHN0cnVjdCBzb2NrYWRkcl9hbGcgKGxpbnV4L2lmX2FsZy5oKSAqLworI3VuZGVmIEhBVkVfU09DS0FERFJfQUxHCisKIC8qIERlZmluZSBpZiBzb2NrYWRkciBoYXMgc2FfbGVuIG1lbWJlciAqLwogI3VuZGVmIEhBVkVfU09DS0FERFJfU0FfTEVOCiAKQEAgLTkxNiw2ICs5MzgsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3Ryb3B0cy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NUUk9QVFNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiBgcHdfZ2Vjb3MnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfR0VDT1MKKworLyogRGVmaW5lIHRvIDEgaWYgYHB3X3Bhc3N3ZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBwYXNzd2QnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QKKwogLyogRGVmaW5lIHRvIDEgaWYgYHN0X2JpcnRodGltZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JJUlRIVElNRQogCkBAIC0xMTAzLDE1ICsxMTMxLDYgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRjbCBhbmQgVENMX1VURl9NQVg9PTYgKi8KICN1bmRlZiBIQVZFX1VDUzRfVENMCiAKLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQzMl90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgdWludDY0X3QuICovCi0jdW5kZWYgSEFWRV9VSU5UNjRfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludHB0cl90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlRQVFJfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuYW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOQU1FCiAKQEAgLTEyMjIsOSArMTI0MSw2IEBACiAvKiBEZWZpbmUgYXMgdGhlIHByZWZlcnJlZCBzaXplIGluIGJpdHMgb2YgbG9uZyBkaWdpdHMgKi8KICN1bmRlZiBQWUxPTkdfQklUU19JTl9ESUdJVAogCi0vKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgbG9uZyBsb25nIHR5cGUgKi8KLSN1bmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0KIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCkBAIC0xMzQ1LDkgKzEzNjEsNiBAQAogI2VuZGlmCiAKIAotLyogRGVmaW5lIGlmIGEgdmFfbGlzdCBpcyBhbiBhcnJheSBvZiBzb21lIGtpbmQgKi8KLSN1bmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBTSUdGUEUgaGFuZGxlZCAoc2VlIEluY2x1ZGUvcHlmcGUuaCkuICovCiAjdW5kZWYgV0FOVF9TSUdGUEVfSEFORExFUgogCkBAIC0xMzU3LDYgKzEzNzAsOSBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IGRvY3VtZW50YXRpb24gc3RyaW5ncyBpbiBleHRlbnNpb24gbW9kdWxlcyAqLwogI3VuZGVmIFdJVEhfRE9DX1NUUklOR1MKIAorLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gRFRyYWNlIHN1cHBvcnQgKi8KKyN1bmRlZiBXSVRIX0RUUkFDRQorCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gdXNlIHRoZSBuZXctc3R5bGUgKE9wZW5zdGVwLCBSaGFwc29keSwgTWFjT1MpIGR5bmFtaWMKICAgIGxpbmtlciAoZHlsZCkgaW5zdGVhZCBvZiB0aGUgb2xkLXN0eWxlIChOZXh0U3RlcCkgZHluYW1pYyBsaW5rZXIgKHJsZCkuCiAgICBEeWxkIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IGZyYW1ld29ya3MuICovCkBAIC0xMzc1LDkgKzEzOTEsNiBAQAogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgaW4gcnVkaW1lbnRhcnkgdGhyZWFkIHN1cHBvcnQgKi8KICN1bmRlZiBXSVRIX1RIUkVBRAogCi0vKiBEZWZpbmUgdG8gcHJvZmlsZSB3aXRoIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyICovCi0jdW5kZWYgV0lUSF9UU0MKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHB5bWFsbG9jIHRvIGJlIGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciB2YWxncmluZCAqLwogI3VuZGVmIFdJVEhfVkFMR1JJTkQKIApAQCAtMTQ0MiwxNiArMTQ1NSw2IEBACiAvKiBEZWZpbmUgdG8gZm9yY2UgdXNlIG9mIHRocmVhZC1zYWZlIGVycm5vLCBoX2Vycm5vLCBhbmQgb3RoZXIgZnVuY3Rpb25zICovCiAjdW5kZWYgX1JFRU5UUkFOVAogCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQzMl90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UMzJfVAotCi0vKiBEZWZpbmUgZm9yIFNvbGFyaXMgMi41LjEgc28gdGhlIHVpbnQ2NF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAotICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCi0gICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLwotI3VuZGVmIF9VSU5UNjRfVAotCiAvKiBEZWZpbmUgdG8gdGhlIGxldmVsIG9mIFgvT3BlbiB0aGF0IHlvdXIgc3lzdGVtIHN1cHBvcnRzICovCiAjdW5kZWYgX1hPUEVOX1NPVVJDRQogCkBAIC0xNDgxLDE0ICsxNDg0LDYgQEAKICN1bmRlZiBpbmxpbmUKICNlbmRpZgogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIGludDY0X3QKLQogLyogRGVmaW5lIHRvIGBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIG1vZGVfdAogCkBAIC0xNTEwLDE0ICsxNTA1LDYgQEAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXNuJ3QgZGVmaW5lLiAqLwogI3VuZGVmIHVpZF90CiAKLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAzMiBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQzMl90Ci0KLS8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCi0gICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwotI3VuZGVmIHVpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBlbXB0eSBpZiB0aGUga2V5d29yZCBkb2VzIG5vdCB3b3JrLiAqLwogI3VuZGVmIHZvbGF0aWxlCiAKZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggNDBmOGJmMi4uYWY5YTQxNCAxMDA2NDQKLS0tIGEvc2V0dXAucHkKKysrIGIvc2V0dXAucHkKQEAgLTE4NSw3ICsxODUsNyBAQAogICAgIGlmIG5vdCBsaXN0OgogICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgaWYgbGVuKGxpc3QpID4gMToKLSAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIlbW9kdWxlKQorICAgICAgICBsb2cuaW5mbygiV0FSTklORzogbXVsdGlwbGUgY29waWVzIG9mICVzIGZvdW5kIiwgbW9kdWxlKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGlzdFswXSwgbW9kdWxlKQogCiBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CkBAIC02NTEsOSArNjUxLDEyIEBACiAgICAgICAgICMgcHJvZmlsZXIgKF9sc3Byb2YgaXMgZm9yIGNQcm9maWxlLnB5KQogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbHNwcm9mJywgWydfbHNwcm9mLmMnLCAncm90YXRpbmd0cmVlLmMnXSkgKQogICAgICAgICAjIHN0YXRpYyBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZQotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd1bmljb2RlZGF0YScsIFsndW5pY29kZWRhdGEuYyddKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3VuaWNvZGVkYXRhJywgWyd1bmljb2RlZGF0YS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ3VuaWNvZGVkYXRhX2RiLmgnLCAndW5pY29kZW5hbWVfZGIuaCddKSApCiAgICAgICAgICMgX29wY29kZSBtb2R1bGUKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX29wY29kZScsIFsnX29wY29kZS5jJ10pICkKKyAgICAgICAgIyBhc3luY2lvIHNwZWVkdXBzCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oIl9hc3luY2lvIiwgWyJfYXN5bmNpb21vZHVsZS5jIl0pICkKIAogICAgICAgICAjIE1vZHVsZXMgd2l0aCBzb21lIFVOSVggZGVwZW5kZW5jaWVzIC0tIG9uIGJ5IGRlZmF1bHQ6CiAgICAgICAgICMgKElmIHlvdSBoYXZlIGEgcmVhbGx5IGJhY2t3YXJkIFVOSVgsIHNlbGVjdCBhbmQgc29ja2V0IG1heSBub3QgYmUKQEAgLTgzNyw3ICs4NDAsNyBAQAogICAgICAgICAjIGZpbmQgb3V0IHdoaWNoIHZlcnNpb24gb2YgT3BlblNTTCB3ZSBoYXZlCiAgICAgICAgIG9wZW5zc2xfdmVyID0gMAogICAgICAgICBvcGVuc3NsX3Zlcl9yZSA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAnXlxzKiNccypkZWZpbmVccytPUEVOU1NMX1ZFUlNJT05fTlVNQkVSXHMrKDB4WzAtOWEtZkEtRl0rKScgKQorICAgICAgICAgICAgcideXHMqI1xzKmRlZmluZVxzK09QRU5TU0xfVkVSU0lPTl9OVU1CRVJccysoMHhbMC05YS1mQS1GXSspJyApCiAKICAgICAgICAgIyBsb29rIGZvciB0aGUgb3BlbnNzbCB2ZXJzaW9uIGhlYWRlciBvbiB0aGUgY29tcGlsZXIgc2VhcmNoIHBhdGguCiAgICAgICAgIG9wZW5zc2x2X2ggPSBmaW5kX2ZpbGUoJ29wZW5zc2wvb3BlbnNzbHYuaCcsIFtdLApAQCAtODg4LDYgKzg5MSwyOSBAQAogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMScsIFsnc2hhMW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCiAKKyAgICAgICAgYmxha2UyX2RlcHMgPSBnbG9iKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNb2R1bGVzL19ibGFrZTIvaW1wbC8qJykpCisgICAgICAgIGJsYWtlMl9kZXBzLmFwcGVuZCgnaGFzaGxpYi5oJykKKworICAgICAgICBibGFrZTJfbWFjcm9zID0gW10KKyAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZyBhbmQgb3MudW5hbWUoKS5tYWNoaW5lID09ICJ4ODZfNjQiOgorICAgICAgICAgICAgIyBFdmVyeSB4ODZfNjQgbWFjaGluZSBoYXMgYXQgbGVhc3QgU1NFMi4KKyAgICAgICAgICAgIGJsYWtlMl9tYWNyb3MuYXBwZW5kKCgnQkxBS0UyX1VTRV9TU0UnLCAnMScpKQorCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19ibGFrZTInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnX2JsYWtlMi9ibGFrZTJtb2R1bGUuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfYmxha2UyL2JsYWtlMmJfaW1wbC5jJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19ibGFrZTIvYmxha2Uyc19pbXBsLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWJsYWtlMl9tYWNyb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1ibGFrZTJfZGVwcykgKQorCisgICAgICAgIHNoYTNfZGVwcyA9IGdsb2Iob3MucGF0aC5qb2luKG9zLmdldGN3ZCgpLCBzcmNkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNb2R1bGVzL19zaGEzL2tjcC8qJykpCisgICAgICAgIHNoYTNfZGVwcy5hcHBlbmQoJ2hhc2hsaWIuaCcpCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGEzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19zaGEzL3NoYTNtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9c2hhM19kZXBzKSkKKwogICAgICAgICAjIE1vZHVsZXMgdGhhdCBwcm92aWRlIHBlcnNpc3RlbnQgZGljdGlvbmFyeS1saWtlIHNlbWFudGljcy4gIFlvdSB3aWxsCiAgICAgICAgICMgcHJvYmFibHkgd2FudCB0byBhcnJhbmdlIGZvciBhdCBsZWFzdCBvbmUgb2YgdGhlbSB0byBiZSBhdmFpbGFibGUgb24KICAgICAgICAgIyB5b3VyIG1hY2hpbmUsIHRob3VnaCBub25lIGFyZSBkZWZpbmVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBsaWJyYXJ5CkBAIC0xNzAwLDcgKzE3MjYsNyBAQAogICAgICAgICAjIEFsbCBleGlzdGluZyBmcmFtZXdvcmsgYnVpbGRzIG9mIFRjbC9UayBkb24ndCBzdXBwb3J0IDY0LWJpdAogICAgICAgICAjIGFyY2hpdGVjdHVyZXMuCiAgICAgICAgIGNmbGFncyA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoJ0NGTEFHUycpWzBdCi0gICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXHcrKScsIGNmbGFncykKKyAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKHInLWFyY2hccysoXHcrKScsIGNmbGFncykKIAogICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ3RrLmFyY2gnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKQEAgLTE4ODcsNiArMTkxMyw5IEBACiAgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZ3VyZV9jdHlwZXNfZGFyd2luKGV4dCkKIAorICAgICAgICAgICAgcHJpbnQoJ3dhcm5pbmc6IGJ1aWxkaW5nIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgaXMnCisgICAgICAgICAgICAgICAgICAnIGRlcHJlY2F0ZWQgb24gdGhpcyBwbGF0Zm9ybS4gIEl0IHdpbGwgbm90IGJlJworICAgICAgICAgICAgICAgICAgJyBkaXN0cmlidXRlZCB3aXRoIFB5dGhvbiAzLjcnKQogICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQogICAgICAgICAgICAgZmZpX2J1aWxkZGlyID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ2xpYmZmaScpCiAgICAgICAgICAgICBmZmlfc3JjZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihzcmNkaXIsICdNb2R1bGVzJywKQEAgLTE5ODMsMTMgKzIwMTIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1tYXRoX2xpYnMpCiAgICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5leHRlbmQoW2V4dCwgZXh0X3Rlc3RdKQogCi0gICAgICAgIGlmIG5vdCAnLS13aXRoLXN5c3RlbS1mZmknIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiAnLS13aXRoLXN5c3RlbS1mZmknIG5vdCBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIE9TIFggMTAuNSBjb21lcyB3aXRoIGxpYmZmaS5keWxpYjsgdGhlIGluY2x1ZGUgZmlsZXMgYXJlCiAgICAgICAgICAgICAjIGluIC91c3IvaW5jbHVkZS9mZmkKICAgICAgICAgICAgIGluY19kaXJzLmFwcGVuZCgnL3Vzci9pbmNsdWRlL2ZmaScpCisgICAgICAgIGVsaWYgJy0td2l0aG91dC1zeXN0ZW0tZmZpJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CisgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBmZmlfaW5jID0gW3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiTElCRkZJX0lOQ0xVREVESVIiKV0KICAgICAgICAgaWYgbm90IGZmaV9pbmMgb3IgZmZpX2luY1swXSA9PSAnJzoKQEAgLTIwMDgsNyArMjAzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICdmZmlfd3JhcHBlcl9oJy5mb3JtYXQoZmZpX2gpKQogICAgICAgICBmZmlfbGliID0gTm9uZQogICAgICAgICBpZiBmZmlfaW5jIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZm9yIGxpYl9uYW1lIGluICgnZmZpX2NvbnZlbmllbmNlJywgJ2ZmaV9waWMnLCAnZmZpJyk6CisgICAgICAgICAgICBmb3IgbGliX25hbWUgaW4gKCdmZmknLCAnZmZpX3BpYycpOgogICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCBsaWJfbmFtZSkpOgogICAgICAgICAgICAgICAgICAgICBmZmlfbGliID0gbGliX25hbWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTIwNjEsNyArMjA5MSw3IEBACiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mbnQuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2lvLmgnLAotICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbXBhbGxvYy5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5oJywKICAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuaCcsCkBAIC0yMTI3LDE1ICsyMTU3LDYgQEAKICAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9USFJFQUQnKToKICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgnV0lUSE9VVF9USFJFQURTJywgMSkpCiAKLSAgICAgICAgIyBJbmNyZWFzZSB3YXJuaW5nIGxldmVsIGZvciBnY2M6Ci0gICAgICAgIGlmICdnY2MnIGluIGNjOgotICAgICAgICAgICAgY21kID0gKCJlY2hvICcnIHwgJXMgLVdleHRyYSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1FIC0gIgotICAgICAgICAgICAgICAgICAgICI+IC9kZXYvbnVsbCAyPiYxIiAlIGNjKQotICAgICAgICAgICAgcmV0ID0gb3Muc3lzdGVtKGNtZCkKLSAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6Ci0gICAgICAgICAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzLmV4dGVuZChbJy1XZXh0cmEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzJ10pCi0KICAgICAgICAgIyBVbmNvbW1lbnQgZm9yIGV4dHJhIGZ1bmN0aW9uYWxpdHk6CiAgICAgICAgICNkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ0VYVFJBX0ZVTkNUSU9OQUxJVFknLCAxKSkKICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uICgKQEAgLTIyMTQsNyArMjIzNSw3IEBACiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIGZ1bGx2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBtaW5vcm9ubHkKLSAgICAgICAgICAgIGxvZy5pbmZvKCdyZW5hbWluZyB7fSB0byB7fScuZm9ybWF0KGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkpCisgICAgICAgICAgICBsb2cuaW5mbygncmVuYW1pbmcgJXMgdG8gJXMnLCBmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpCiAgICAgICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgbmV3b3V0ZmlsZXMuYXBwZW5kKG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgaWYgZmlsZW5hbWUgaW4gdXBkYXRlZF9maWxlczoKQEAgLTIyNTYsNyArMjI3Nyw3IEBACiAgICAgc2V0dXAoIyBQeVBJIE1ldGFkYXRhIChQRVAgMzAxKQogICAgICAgICAgIG5hbWUgPSAiUHl0aG9uIiwKICAgICAgICAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXSwKLSAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVzIiAlIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICB1cmwgPSAiaHR0cDovL3d3dy5weXRob24ub3JnLyVkLiVkIiAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgIG1haW50YWluZXIgPSAiR3VpZG8gdmFuIFJvc3N1bSBhbmQgdGhlIFB5dGhvbiBjb21tdW5pdHkiLAogICAgICAgICAgIG1haW50YWluZXJfZW1haWwgPSAicHl0aG9uLWRldkBweXRob24ub3JnIiwKICAgICAgICAgICBkZXNjcmlwdGlvbiA9ICJBIGhpZ2gtbGV2ZWwgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIiwK